././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.5574079 PythonQwt-0.10.2/0000777000000000000000000000000000000000000010442 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1617896342.0 PythonQwt-0.10.2/.gitignore0000666000000000000000000000171600000000000012437 0ustar00.env .spyderproject .spyproject qwt-6.* qwt/tests/demo.png PythonQwt.chm PythonQwt.chm.zip doc.zip doctmp/ settings.json # Created by https://www.gitignore.io/api/python ### Python ### # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ *.egg-info/ .installed.cfg *.egg # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *,cover # Translations *.mo *.pot # Django stuff: *.log # Sphinx documentation docs/_build/ # PyBuilder target/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/.hgignore0000666000000000000000000000054700000000000012253 0ustar00\.pyc$ \.so$ \.settings$ \.ropeproject$ \.spyderproject$ \.orig$ \.chm$ \.pyd$ \.rar$ \.gui$ \.pickle$ ^build/ ^qwt-6.1.0/ ^qwt-6.1.2/ ^dist/ ^tests/build ^tests/dist Thumbs.db$ MANIFEST$ loadsavecanvas.gui$ loadsavecanvas.h5$ \.pot$ mandelbrot.c$ histogram2d.c$ ~$ syntax: glob tests/test*.tif tests/test*.png tests/contrast.png ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/.hgtags0000666000000000000000000000107500000000000011723 0ustar0062c1865dfdafe71311bb0cac30af71409e466a7a v6.1.2alpha1 7e90ab6db012fa323e31421926f1c19cb1ebe02b v6.1.2alpha2 446030e474b9b9a14b789d70696968e16acc9e5e v6.1.2alpha3 7064b469eea1696ab85fc471f7568e6f5cfecb6e v6.1.2a3 1050efc1f915a3bf04dc925f44beb23e20c8ead5 v6.1.2a4 1050efc1f915a3bf04dc925f44beb23e20c8ead5 v6.1.2a4 e5cb19d0721cda2c5a97533be64f1834dd92233e v6.1.2a4 e5cb19d0721cda2c5a97533be64f1834dd92233e v6.1.2a4 aa2d7302a28b22592acca32ac6aa6166b79ccaab v6.1.2a4 8e044d5aa6eb6aaaf9a7a506f05d1fa8a3663a8d v6.1.2a5 be644cd20052d4a1219bd6948c2ce973396f8385 v6.1.2a7 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.2187312 PythonQwt-0.10.2/.vscode/0000777000000000000000000000000000000000000012003 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/.vscode/launch.json0000666000000000000000000000137200000000000014153 0ustar00{ // Utilisez IntelliSense pour en savoir plus sur les attributs possibles. // Pointez pour afficher la description des attributs existants. // Pour plus d'informations, visitez : https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python : Test launcher", "type": "python", "request": "launch", "program": "${workspaceFolder}/qwt/tests/__init__.py", "console": "integratedTerminal" }, { "name": "Python : Current file", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal" } ] }././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655397573.0 PythonQwt-0.10.2/CHANGELOG.md0000666000000000000000000001665300000000000012266 0ustar00# PythonQwt Releases ## Version 0.10.2 - Fixed type mismatch issues on Linux ## Version 0.10.1 - Added support for PyQt6. ## Version 0.10.0 - Added support for QtPy 2 and PySide6. - Dropped support for Python 2. ## Version 0.9.2 - Curve plotting: added support for `numpy.float32` data type. ## Version 0.9.1 - Added load test showing a large number of plots (eventually highlights performance issues). - Fixed event management in `QwtPlot` and removed unnecessary `QEvent.LayoutRequest` emission in `QwtScaleWidget` (caused high CPU usage with `guiqwt.ImageWidget`). - `QwtScaleDiv`: fixed ticks initialization when passing all arguments to constructor. - tests/image.py: fixed overriden `updateLegend` signature. ## Version 0.9.0 - `QwtPlot`: set the `autoReplot` option at False by default, to avoid time consuming implicit plot updates. - Added `QwtPlotItem.setIcon` and `QwtPlotItem.icon` method for setting and getting the icon associated to the plot item (as of today, this feature is not strictly needed in PythonQwt: this has been implemented for several use cases in higher level libraries (see PR #61). - Removed unused `QwtPlotItem.defaultIcon` method. - Added various minor optimizations for axes/ticks drawing features. - Fixed `QwtPlot.canvasMap` when `axisScaleDiv` returns None. - Fixed alias `np.float` which is deprecated in NumPy 1.20. ## Version 0.8.3 - Fixed simple plot examples (setup.py & plot.py's doc page) following the introduction of the new QtPy dependency (Qt compatibility layer) since V0.8.0. ## Version 0.8.2 - Added new GUI-based test script `PythonQwt-py3` to run the test launcher. - Added command-line options to the `PythonQwt-tests-py3` script to run all the tests simultenously in unattended mode (`--mode unattended`) or to update all the screenshots (`--mode screenshots`). - Added internal scripts for automated test in virtual environments with both PyQt5 and PySide2. ## Version 0.8.1 - PySide2 support was significatively improved betwen PythonQwt V0.8.0 and V0.8.1 thanks to the new `qwt.qwt_curve.array2d_to_qpolygonf` function. ## Version 0.8.0 - Added PySide2 support: PythonQwt is now compatible with Python 2.7, Python 3.4+, PyQt4, PyQt5 and PySide2! ## Version 0.7.1 - Changed QwtPlotItem.detachItems signature: removed unnecessary "autoDelete" argument, initialiazing "rtti" argument to None (remove all items) - Improved Qt universal support (PyQt5, ...) ## Version 0.7.0 - Added convenience functions for creating usual objects (curve, grid, marker, ...): - `QwtPlotCurve.make` - `QwtPlotMarker.make` - `QwtPlotGrid.make` - `QwtSymbol.make` - `QwtText.make` - Added new test launcher with screenshots (automatically generated) - Removed `guidata` dependency thanks to the new specific GUI-based test launcher - Updated documentation (added more examples, using automatically generated screenshots) - QwtPlot: added "flatStyle" option, a PythonQwt-exclusive feature improving default plot style (without margin, more compact and flat look) -- option is enabled by default - QwtAbstractScaleDraw: added option to set the tick color lighter factor for each tick type (minor, medium, major) -- this feature is used with the new flatStyle option - Fixed obvious errors (+ poor implementations) in untested code parts - Major code cleaning and formatting ## Version 0.6.2 - Fixed Python crash occuring at exit when deleting objects (Python 3 only) - Moved documentation to - Added unattended tests with multiple versions of WinPython: - WinPython-32bit-2.7.6.4 - WinPython-64bit-2.7.6.4 - WinPython-64bit-3.4.4.3 - WinPython-64bit-3.4.4.3Qt5 - WPy64-3680 - WPy64-3771 - WPy64-3830 - Added PyQt4/PyQt5/PySide automatic switch depending on installed libraries ## Version 0.6.1 - Fixed rounding issue with PythonQwt scale engine (0...1000 is now divided in 200-size steps, as in both Qwt and PyQwt) - Removed unnecessary mask on scaleWidget (this closes #35) - CurveBenchmark.py: fixed TypeError with numpy.linspace (NumPy=1.18) ## Version 0.6.0 - Ported changes from Qwt 6.1.2 to Qwt 6.1.5 - `QwtPlotCanvas.setPaintAttribute`: fixed PyQt4 compatibility issue for BackingStore paint attribute - Fixed DataDemo.py test script (was crashing ; this closes #41) - `QwtPainterClass.drawBackground`: fixed obvious bug in untested code (this closes #51) - `qwtFillBackground`: fixed obvious bug in untested code (this closes #50) - `QwtPainterClass.fillPixmap`: fixed obvious bug in untested code (this closes #49) - `QwtStyleSheetRecorder`: fixed obvious bug in untested code (this closes #47, closes #48 and closes #52) - Added "plot without margins" test for Issue #35 ## Version 0.5.5 - `QwtScaleMap.invTransform_scalar`: avoid divide by 0 - Avoid error when computing ticks: when the axis was so small that no tick could be drawn, an exception used to be raised ## Version 0.5.4 Fixed an annoying bug which caused scale widget (axis ticks in particular) to be misaligned with canvas grid: the user was forced to resize the plot widget as a workaround ## Version 0.5.3 - Better handling of infinity and `NaN` values in scales (removed `NumPy` warnings) - Now handling infinity and `NaN` values in series data: removing points that can't be drawn - Fixed logarithmic scale engine: presence of values <= 0 was slowing down series data plotting ## Version 0.5.2 - Added CHM documentation to wheel package - Fixed `QwtPlotRenderer.setDiscardFlag`/`setLayoutFlag` args - Fixed `QwtPlotItem.setItemInterest` args - Fixed `QwtPlot.setAxisAutoScale`/`setAutoReplot` args ## Version 0.5.1 - Fixed Issue #22: fixed scale issues in [CurveDemo2.py](qwt/tests/CurveDemo2.py) and [ImagePlotDemo.py](qwt/tests/ImagePlotDemo.py) - `QwtPlotCurve`: sticks were not drawn correctly depending on orientation - `QwtInterval`: avoid overflows with `NumPy` scalars - Fixed Issue #28: curve shading was broken since v0.5.0 - setup.py: using setuptools "entry_points" instead of distutils "scripts" - Showing curves/plots number in benchmarks to avoid any misinterpretation (see Issue #26) - Added Python2/Python3 scripts for running tests ## Version 0.5.0 - Various optimizations - Major API simplification, taking into account the feature that won't be implemented (fitting, rounding, weeding out points, clipping, etc.) - Added `QwtScaleDraw.setLabelAutoSize`/`labelAutoSize` methods to set the new auto size option (see [documentation](http://pythonhosted.org/PythonQwt/)) ## Version 0.4.0 - Color bar: fixed axis ticks shaking when color bar is enabled - Fixed `QwtPainter.drawColorBar` for horizontal color bars (typo) - Restored compatibility with original Qwt signals (`QwtPlot`, ...) ## Version 0.3.0 Renamed the project (python-qwt --> PythonQwt), for various reasons. ## Version 0.2.1 Fixed Issue #23: "argument numPoints is not implemented" error was showing up when calling `QwtSymbol.drawSymbol(symbol, QPoint(x, y))`. ## Version 0.2.0 Added docstrings in all Python modules and a complete documentation based on Sphinx. See the Overview section for API limitations when comparing to Qwt. ## Version 0.1.1 Fixed Issue #21 (blocking issue *only* on non-Windows platforms when building the package): typo in "PythonQwt-tests" script name (in [setup script](setup.py)) ## Version 0.1.0 First alpha public release. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/LICENSE0000666000000000000000000010126100000000000011450 0ustar00PythonQwt License Agreement --------------------------- [1] Software licensed under the terms of Qwt License The essential part of the code was translated to Python from Qwt C++ library and is thus licensed under the terms of the LGPL License from which the Qwt License 1.0 is derived from (see [***] for more details). [2] Software licensed under the terms of the MIT license Independent Python modules purely based on new code (no contamination from the LGPL license inherited from the Qwt Project) are distributed under the terms of the MIT License (see [*] and [**]). [3] Software licensed under the terms of PyQwt License Some files under the "tests" subfolder of the main Python package directory were derived from PyQwt PyQt4 examples and are thus distributed under the terms of the GPL License from which the PyQwt License 1.0 is derived from (see [****] for more details). [*] PythonQwt License Agreement for new and exclusive Python material (MIT) Copyright (c) 2015 Pierre Raybaut 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. [**] Spyder License Agreement Spyder License Agreement (MIT License) -------------------------------------- Copyright (c) 2009-2013 Pierre Raybaut Copyright (c) 2013-2015 The Spyder Development Team 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. [***] PythonQwt License Agreement for code translated from C++ (Qwt License) Copyright (c) 2002 Uwe Rathmann, for the original C++ code Copyright (c) 2015 Pierre Raybaut, for the Python translation and optimization Qwt License Version 1.0, January 1, 2003 The Qwt library and included programs are provided under the terms of the GNU LESSER GENERAL PUBLIC LICENSE (LGPL) with the following exceptions: 1. Widgets that are subclassed from Qwt widgets do not constitute a derivative work. 2. Static linking of applications and widgets to the Qwt library does not constitute a derivative work and does not require the author to provide source code for the application or widget, use the shared Qwt libraries, or link their applications or widgets against a user-supplied version of Qwt. If you link the application or widget to a modified version of Qwt, then the changes to Qwt must be provided under the terms of the LGPL in sections 1, 2, and 4. 3. You do not have to provide a copy of the Qwt license with programs that are linked to the Qwt library, nor do you have to identify the Qwt license in your program or documentation as required by section 6 of the LGPL. However, programs must still identify their use of Qwt. The following example statement can be included in user documentation to satisfy this requirement: [program/widget] is based in part on the work of the Qwt project (http://qwt.sf.net). ---------------------------------------------------------------------- GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! [****] PyQwt License Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt code Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further developments (e.g. ported to PythonQwt API) PyQwt LICENSE Version 3, March 2006 PyQwt is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. PyQwt is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with PyQwt; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. In addition, as a special exception, Gerard Vermeulen gives permission to link PyQwt dynamically with non-free versions of Qt and PyQt, and to distribute PyQwt in this form, provided that equally powerful versions of Qt and PyQt have been released under the terms of the GNU General Public License. If PyQwt is dynamically linked with non-free versions of Qt and PyQt, PyQwt becomes a free plug-in for a non-free program. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/MANIFEST.in0000666000000000000000000000022400000000000012176 0ustar00recursive-include doc *.py *.rst *.png include MANIFEST.in include LICENSE include README.md include CHANGELOG.md include doc/PythonQwt.chm.zip././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.5564318 PythonQwt-0.10.2/PKG-INFO0000666000000000000000000000574200000000000011547 0ustar00Metadata-Version: 2.1 Name: PythonQwt Version: 0.10.2 Summary: Qt plotting widgets for Python Home-page: https://github.com/PierreRaybaut/PythonQwt Author: Pierre Raybaut Author-email: pierre.raybaut@gmail.com License: UNKNOWN Platform: Any Classifier: Development Status :: 5 - Production/Stable Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2) Classifier: License :: OSI Approved :: MIT License Classifier: Topic :: Scientific/Engineering :: Visualization Classifier: Topic :: Software Development :: Widget Sets Classifier: Operating System :: MacOS Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: OS Independent Classifier: Operating System :: POSIX Classifier: Operating System :: Unix Classifier: Programming Language :: Python :: 3 Provides-Extra: Doc License-File: LICENSE PythonQwt: Qt plotting widgets for Python ========================================= .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/qwt/tests/data/testlauncher.png The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical user interfaces for the Python programming language. It is compatible with ``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``. The ``PythonQwt`` project was initiated to solve -at least temporarily- the obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is no longer maintained. The idea was to translate the original Qwt C++ code to Python and then to optimize some parts of the code by writing new modules based on NumPy and other libraries. The ``PythonQwt`` package consists of a single Python package named `qwt` which is a pure Python implementation of Qwt C++ library with some limitations: efforts were concentrated on basic plotting features, leaving higher level features to the `guiqwt` library. See `README`_ and documentation (`online`_ or `PDF`_) for more details on the library and `changelog`_ for recent history of changes. The following example is a good starting point to see how to set up a simple plot widget:: from qtpy import QtWidgets as QW import qwt import numpy as np app = QW.QApplication([]) x = np.linspace(-10, 10, 500) plot = qwt.QwtPlot("Trigonometric functions") plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend) qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True) qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True) plot.resize(600, 300) plot.show() app.exec_() .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/doc/images/QwtPlot_example.png .. _README: https://github.com/PierreRaybaut/PythonQwt/blob/master/README.md .. _online: https://pythonqwt.readthedocs.io/en/latest/ .. _PDF: https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/ .. _changelog: https://github.com/PierreRaybaut/PythonQwt/blob/master/CHANGELOG.md ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1655399648.244108 PythonQwt-0.10.2/PythonQwt.egg-info/0000777000000000000000000000000000000000000014111 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655399646.0 PythonQwt-0.10.2/PythonQwt.egg-info/PKG-INFO0000666000000000000000000000574200000000000015216 0ustar00Metadata-Version: 2.1 Name: PythonQwt Version: 0.10.2 Summary: Qt plotting widgets for Python Home-page: https://github.com/PierreRaybaut/PythonQwt Author: Pierre Raybaut Author-email: pierre.raybaut@gmail.com License: UNKNOWN Platform: Any Classifier: Development Status :: 5 - Production/Stable Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2) Classifier: License :: OSI Approved :: MIT License Classifier: Topic :: Scientific/Engineering :: Visualization Classifier: Topic :: Software Development :: Widget Sets Classifier: Operating System :: MacOS Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: OS Independent Classifier: Operating System :: POSIX Classifier: Operating System :: Unix Classifier: Programming Language :: Python :: 3 Provides-Extra: Doc License-File: LICENSE PythonQwt: Qt plotting widgets for Python ========================================= .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/qwt/tests/data/testlauncher.png The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical user interfaces for the Python programming language. It is compatible with ``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``. The ``PythonQwt`` project was initiated to solve -at least temporarily- the obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is no longer maintained. The idea was to translate the original Qwt C++ code to Python and then to optimize some parts of the code by writing new modules based on NumPy and other libraries. The ``PythonQwt`` package consists of a single Python package named `qwt` which is a pure Python implementation of Qwt C++ library with some limitations: efforts were concentrated on basic plotting features, leaving higher level features to the `guiqwt` library. See `README`_ and documentation (`online`_ or `PDF`_) for more details on the library and `changelog`_ for recent history of changes. The following example is a good starting point to see how to set up a simple plot widget:: from qtpy import QtWidgets as QW import qwt import numpy as np app = QW.QApplication([]) x = np.linspace(-10, 10, 500) plot = qwt.QwtPlot("Trigonometric functions") plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend) qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True) qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True) plot.resize(600, 300) plot.show() app.exec_() .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/doc/images/QwtPlot_example.png .. _README: https://github.com/PierreRaybaut/PythonQwt/blob/master/README.md .. _online: https://pythonqwt.readthedocs.io/en/latest/ .. _PDF: https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/ .. _changelog: https://github.com/PierreRaybaut/PythonQwt/blob/master/CHANGELOG.md ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655399647.0 PythonQwt-0.10.2/PythonQwt.egg-info/SOURCES.txt0000666000000000000000000000575200000000000016006 0ustar00.gitignore .hgignore .hgtags CHANGELOG.md LICENSE MANIFEST.in README.md setup.py .vscode/launch.json PythonQwt.egg-info/PKG-INFO PythonQwt.egg-info/SOURCES.txt PythonQwt.egg-info/dependency_links.txt PythonQwt.egg-info/entry_points.txt PythonQwt.egg-info/requires.txt PythonQwt.egg-info/top_level.txt doc/conf.py doc/index.rst doc/installation.rst doc/overview.rst doc/plot_example.py doc/requirements.txt doc/symbol_path_example.py doc/examples/bodedemo.rst doc/examples/cartesian.rst doc/examples/cpudemo.rst doc/examples/curvebenchmark1.rst doc/examples/curvebenchmark2.rst doc/examples/curvedemo1.rst doc/examples/curvedemo2.rst doc/examples/data.rst doc/examples/errorbar.rst doc/examples/eventfilter.rst doc/examples/image.rst doc/examples/index.rst doc/examples/logcurve.rst doc/examples/mapdemo.rst doc/examples/multidemo.rst doc/examples/simple.rst doc/examples/vertical.rst doc/images/QwtPlot_example.png doc/images/panorama.png doc/images/symbol_path_example.png doc/reference/graphic.rst doc/reference/index.rst doc/reference/interval.rst doc/reference/plot.rst doc/reference/plot_directpainter.rst doc/reference/plot_layout.rst doc/reference/plot_series.rst doc/reference/scale.rst doc/reference/symbol.rst doc/reference/text.rst doc/reference/toqimage.rst doc/reference/transform.rst qwt/__init__.py qwt/_math.py qwt/color_map.py qwt/column_symbol.py qwt/dyngrid_layout.py qwt/graphic.py qwt/interval.py qwt/legend.py qwt/null_paintdevice.py qwt/painter.py qwt/painter_command.py qwt/plot.py qwt/plot_canvas.py qwt/plot_curve.py qwt/plot_directpainter.py qwt/plot_grid.py qwt/plot_layout.py qwt/plot_marker.py qwt/plot_renderer.py qwt/plot_series.py qwt/qthelpers.py qwt/scale_div.py qwt/scale_draw.py qwt/scale_engine.py qwt/scale_map.py qwt/scale_widget.py qwt/symbol.py qwt/text.py qwt/toqimage.py qwt/transform.py qwt/tests/__init__.py qwt/tests/bodedemo.py qwt/tests/cartesian.py qwt/tests/comparative_benchmarks.py qwt/tests/cpudemo.py qwt/tests/curvebenchmark1.py qwt/tests/curvebenchmark2.py qwt/tests/curvedemo1.py qwt/tests/curvedemo2.py qwt/tests/data.py qwt/tests/errorbar.py qwt/tests/eventfilter.py qwt/tests/image.py qwt/tests/loadtest.py qwt/tests/logcurve.py qwt/tests/mapdemo.py qwt/tests/multidemo.py qwt/tests/simple.py qwt/tests/vertical.py qwt/tests/data/bodedemo.png qwt/tests/data/cartesian.png qwt/tests/data/cpudemo.png qwt/tests/data/curvebenchmark1.png qwt/tests/data/curvebenchmark2.png qwt/tests/data/curvedemo1.png qwt/tests/data/curvedemo2.png qwt/tests/data/data.png qwt/tests/data/errorbar.png qwt/tests/data/eventfilter.png qwt/tests/data/image.png qwt/tests/data/loadtest.png qwt/tests/data/logcurve.png qwt/tests/data/mapdemo.png qwt/tests/data/multidemo.png qwt/tests/data/simple.png qwt/tests/data/testlauncher.png qwt/tests/data/vertical.png scripts/build_and_upload.bat scripts/build_dist.bat scripts/build_doc.bat scripts/clean_up.bat scripts/preview_doc.bat scripts/run_test_launcher.bat scripts/run_test_venv.bat scripts/run_unattended_tests.bat scripts/take_screenshots.bat scripts/utils.bat././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655399646.0 PythonQwt-0.10.2/PythonQwt.egg-info/dependency_links.txt0000666000000000000000000000000100000000000020157 0ustar00 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655399646.0 PythonQwt-0.10.2/PythonQwt.egg-info/entry_points.txt0000666000000000000000000000015400000000000017407 0ustar00[console_scripts] PythonQwt-tests = qwt.tests:run [tests] [gui_scripts] PythonQwt = qwt.tests:run [tests] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655399646.0 PythonQwt-0.10.2/PythonQwt.egg-info/requires.txt0000666000000000000000000000005000000000000016504 0ustar00NumPy>=1.5 QtPy>=1.3 [Doc] Sphinx>=1.1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655399646.0 PythonQwt-0.10.2/PythonQwt.egg-info/top_level.txt0000666000000000000000000000000400000000000016635 0ustar00qwt ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/README.md0000666000000000000000000001034700000000000011726 0ustar00# PythonQwt: Qt plotting widgets for Python [![license](https://img.shields.io/pypi/l/PythonQwt.svg)](./LICENSE) [![pypi version](https://img.shields.io/pypi/v/PythonQwt.svg)](https://pypi.org/project/PythonQwt/) [![PyPI status](https://img.shields.io/pypi/status/PythonQwt.svg)](https://github.com/PierreRaybaut/PythonQwt) [![PyPI pyversions](https://img.shields.io/pypi/pyversions/PythonQwt.svg)](https://pypi.python.org/pypi/PythonQwt/) [![download count](https://img.shields.io/conda/dn/conda-forge/PythonQwt.svg)](https://www.anaconda.com/download/) [![Documentation Status](https://readthedocs.org/projects/pythonqwt/badge/?version=latest)](https://pythonqwt.readthedocs.io/en/latest/?badge=latest) ![PythonQwt Test Launcher](qwt/tests/data/testlauncher.png) The `PythonQwt` project was initiated to solve -at least temporarily- the obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is no longer maintained. The idea was to translate the original Qwt C++ code to Python and then to optimize some parts of the code by writing new modules based on NumPy and other libraries. The `PythonQwt` package consists of a single Python package named `qwt` and of a few other files (examples, doc, ...). See documentation [online](https://pythonqwt.readthedocs.io/en/latest/) or [PDF](https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/) for more details on the library and [changelog](CHANGELOG.md) for recent history of changes. ## Sample ```python import qwt import numpy as np app = qwt.qt.QtGui.QApplication([]) # Create plot widget plot = qwt.QwtPlot("Trigonometric functions") plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend) # Create two curves and attach them to plot x = np.linspace(-10, 10, 500) qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True) qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True) # Resize and show plot plot.resize(600, 300) plot.show() app.exec_() ``` ![Simple plot example](doc/images/QwtPlot_example.png) ## Examples (tests) The GUI-based test launcher may be executed from Python: ```python from qwt import tests tests.run() ``` or from the command line: ```bash PythonQwt ``` Tests may also be executed in unattended mode: ```bash PythonQwt-tests --mode unattended ``` ## Overview The `qwt` package is a pure Python implementation of `Qwt` C++ library with the following limitations. The following `Qwt` classes won't be reimplemented in `qwt` because more powerful features already exist in `guiqwt`: `QwtPlotZoomer`, `QwtCounter`, `QwtEventPattern`, `QwtPicker`, `QwtPlotPicker`. Only the following plot items are currently implemented in `qwt` (the only plot items needed by `guiqwt`): `QwtPlotItem` (base class), `QwtPlotItem`, `QwtPlotMarker`, `QwtPlotSeriesItem` and `QwtPlotCurve`. See "Overview" section in [documentation](https://pythonqwt.readthedocs.io/en/latest/) for more details on API limitations when comparing to Qwt. ## Dependencies ### Requirements - Python >=3.4 - PyQt4, PyQt5, PyQt6 or PySide6 - QtPy >= 1.3 - NumPy >= 1.5 ## Installation From the source package: ```bash python setup.py install ``` ## Copyrights ### Main code base - Copyright © 2002 Uwe Rathmann, for the original Qwt C++ code - Copyright © 2015 Pierre Raybaut, for the Qwt C++ to Python translation and optimization - Copyright © 2015 Pierre Raybaut, for the PythonQwt specific and exclusive Python material ### PyQt, PySide and Python2/Python3 compatibility modules - Copyright © 2009-2013 Pierre Raybaut - Copyright © 2013-2015 The Spyder Development Team ### Some examples - Copyright © 2003-2009 Gerard Vermeulen, for the original PyQwt code - Copyright © 2015 Pierre Raybaut, for the PyQt5/PySide port and further developments (e.g. ported to PythonQwt API) ## License The `qwt` Python package was partly (>95%) translated from Qwt C++ library: the associated code is distributed under the terms of the LGPL license. The rest of the code was either wrote from scratch or strongly inspired from MIT licensed third-party software. See included [LICENSE](LICENSE) file for more details about licensing terms. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.2851005 PythonQwt-0.10.2/doc/0000777000000000000000000000000000000000000011207 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091904.0 PythonQwt-0.10.2/doc/conf.py0000666000000000000000000001564300000000000012517 0ustar00# -*- coding: utf-8 -*- # # 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. from __future__ import print_function, unicode_literals import sys # 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('.')) # -- 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. extensions = ["sphinx.ext.autodoc"] try: import sphinx.ext.viewcode extensions.append("sphinx.ext.viewcode") except ImportError: print("WARNING: the Sphinx viewcode extension was not found", file=sys.stderr) # 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 = "PythonQwt" import time this_year = time.strftime("%Y", time.localtime()) copyright = "2002 Uwe Rathmann (for the original C++ code/doc), 2015 Pierre Raybaut (for the Python translation/optimization/doc adaptation)" # 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. import qwt version = ".".join(qwt.__version__.split(".")[:2]) # The full version, including alpha/beta/rc tags. release = qwt.__version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: # today = '' # Else, today_fmt is used as the format for a strftime call. # today_fmt = '%B %d, %Y' # List of 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 = [] # The reST default role (used for this markup: `text`) to use for all documents. # default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. # add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). # add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. # show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = "sphinx" # A list of ignored prefixes for module index sorting. modindex_common_prefix = ["qwt."] autodoc_member_order = "bysource" # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = "default" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. ## html_theme_options = {'sidebarbgcolor': '#227A2B', ## 'sidebarlinkcolor': '#98ff99'} # 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 = "%s %s Manual" % (project, version) # A shorter title for the navigation bar. Default is the same as html_title. # html_short_title = '%s Manual' % project # The name of an image file (relative to this directory) to place at the top # of the sidebar. # html_logo = 'images/qwt.png' # 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 = 'favicon.ico' # 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 = {} # Additional templates that should be rendered to pages, maps page names to # template names. # html_additional_pages = {} # If false, no module index is generated. html_use_modindex = True # If false, no index is generated. # html_use_index = True # If true, the index is split into individual pages for each letter. # html_split_index = False # If true, links to the reST sources are added to the pages. # html_show_sourcelink = True # If true, 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 = "PythonQwt" # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). # latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). # latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ("index", "qwt.tex", "PythonQwt Manual", "Pierre Raybaut", "manual"), ] # The name of an image file (relative to this directory) to place at the top of # the title page. # latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. # latex_use_parts = False # Additional stuff for the LaTeX preamble. # latex_preamble = '' # Documents to append as an appendix to all manuals. # latex_appendices = [] # If false, no module index is generated. # latex_use_modindex = True ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.3280468 PythonQwt-0.10.2/doc/examples/0000777000000000000000000000000000000000000013025 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/bodedemo.rst0000666000000000000000000000021400000000000015332 0ustar00Bode demo ~~~~~~~~~ .. image:: /../qwt/tests/data/bodedemo.png .. literalinclude:: /../qwt/tests/bodedemo.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/cartesian.rst0000666000000000000000000000023000000000000015523 0ustar00Cartesian demo ~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/cartesian.png .. literalinclude:: /../qwt/tests/cartesian.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/cpudemo.rst0000666000000000000000000000022200000000000015207 0ustar00CPU plot demo ~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/cpudemo.png .. literalinclude:: /../qwt/tests/cpudemo.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/curvebenchmark1.rst0000666000000000000000000000026400000000000016641 0ustar00Curve benchmark demo 1 ~~~~~~~~~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/curvebenchmark1.png .. literalinclude:: /../qwt/tests/curvebenchmark1.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/curvebenchmark2.rst0000666000000000000000000000026400000000000016642 0ustar00Curve benchmark demo 2 ~~~~~~~~~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/curvebenchmark2.png .. literalinclude:: /../qwt/tests/curvebenchmark2.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/curvedemo1.rst0000666000000000000000000000022600000000000015631 0ustar00Curve demo 1 ~~~~~~~~~~~~ .. image:: /../qwt/tests/data/curvedemo1.png .. literalinclude:: /../qwt/tests/curvedemo1.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/curvedemo2.rst0000666000000000000000000000022600000000000015632 0ustar00Curve demo 2 ~~~~~~~~~~~~ .. image:: /../qwt/tests/data/curvedemo2.png .. literalinclude:: /../qwt/tests/curvedemo2.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/data.rst0000666000000000000000000000020400000000000014464 0ustar00Data demo ~~~~~~~~~ .. image:: /../qwt/tests/data/data.png .. literalinclude:: /../qwt/tests/data.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/errorbar.rst0000666000000000000000000000022600000000000015375 0ustar00Error bar demo ~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/errorbar.png .. literalinclude:: /../qwt/tests/errorbar.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/eventfilter.rst0000666000000000000000000000024200000000000016104 0ustar00Event filter demo ~~~~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/eventfilter.png .. literalinclude:: /../qwt/tests/eventfilter.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/image.rst0000666000000000000000000000022200000000000014635 0ustar00Image plot demo ~~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/image.png .. literalinclude:: /../qwt/tests/image.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/doc/examples/index.rst0000666000000000000000000000161600000000000014672 0ustar00.. _examples: Examples ======== The test launcher ----------------- A lot of examples are available in the ``qwt.test`` module :: from qwt import tests tests.run() The two lines above execute the ``PythonQwt`` test launcher: .. image:: /../qwt/tests/data/testlauncher.png GUI-based test launcher can be executed from the command line thanks to the ``PythonQwt`` test script. Unit tests may be executed from the commande line thanks to the console-based script ``PythonQwt-tests``: ``PythonQwt-tests --mode unattended``. Tests ----- Here are some examples from the `qwt.test` module: .. toctree:: :maxdepth: 2 bodedemo cartesian cpudemo curvebenchmark1 curvebenchmark2 curvedemo1 curvedemo2 data errorbar eventfilter image logcurve mapdemo multidemo simple vertical ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/logcurve.rst0000666000000000000000000000024000000000000015401 0ustar00Log curve plot demo ~~~~~~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/logcurve.png .. literalinclude:: /../qwt/tests/logcurve.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/mapdemo.rst0000666000000000000000000000021000000000000015172 0ustar00Map demo ~~~~~~~~ .. image:: /../qwt/tests/data/mapdemo.png .. literalinclude:: /../qwt/tests/mapdemo.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/multidemo.rst0000666000000000000000000000022000000000000015550 0ustar00Multi demo ~~~~~~~~~~ .. image:: /../qwt/tests/data/multidemo.png .. literalinclude:: /../qwt/tests/multidemo.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/simple.rst0000666000000000000000000000023200000000000015045 0ustar00Really simple demo ~~~~~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/simple.png .. literalinclude:: /../qwt/tests/simple.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/examples/vertical.rst0000666000000000000000000000023600000000000015371 0ustar00Vertical plot demo ~~~~~~~~~~~~~~~~~~ .. image:: /../qwt/tests/data/vertical.png .. literalinclude:: /../qwt/tests/vertical.py :start-after: SHOW ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.3387825 PythonQwt-0.10.2/doc/images/0000777000000000000000000000000000000000000012454 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/doc/images/QwtPlot_example.png0000666000000000000000000001356100000000000016315 0ustar00‰PNG  IHDRX,_ZÁ pHYsÄÄ•+#IDATxœíÝ?oëNvÆñsØt[‹<}š}ãE M€mˆi¤pÇlö ¤Óo!U€`« } ©·Ü4[)‚ÀMº HAR¢dJÖ½¾²IÍ÷Ó\›úwD_ë1Ï 9_^^^€RýôÙð™B@Ñ~öÙoȱŽùÌm®é·tï×7l’å”’=´çßËw¿_Kñ)e×´Ó÷•zöuæoá¾~:¸k•cˆSVý`–žŽžùF)xË·ü0bí\ÓuÃW×Oî]†÷½_õmëo‚ Jûé`#¾0k›q„–BH&ê—c2qÍßIü§£ûäø³‰ˆºæñaŽ£ÔrJi:dQç½÷cpÿb­îÆ£'Uïý¾‡xö±‡º¼¥˜MDl¼LÝHuÍã¾9šá~*¯®éšêŠ÷{Ôò<<Ý‘±¾‰úÖÛÉ~9ÚÕW슥]x »úGíÿÃöü®Ck›g)>Öÿôè¦ÃþÃÒr 'ƒ';Ëié.û{˜¥ø4½ÔÛµ§·œžBØ?“åýó?åãŒúÖ÷kéð"×>ÝÕÎíŠïÑïßÿóìøšg’·„¸êۮ뺶õG-SKiøptMÛu]{rÌãðÙ9ÜÚ3R¦­‡ç<ÂXýc]ÓvÝØ{4³ãoûC…cýÃmÃ6×tÓQ“kºî¸|öý11Ýìu¾Ž>V¡þPÑÛwÅù½ø®Þ‡‹/šwù°¦¦ù( Aˆís~üX×ãOôÞ†~ãØnSççÁ±ÿ0›mêšñu7û$vû?|ûcœŠ¨V2»óô­ˆˆåá¨ÆR¨ëº®Ç©£'ùö÷»¿yŒ×5AsyW|÷‹¾gÿWºïA‡˜í¡m»otàAˆÍ›GË’J/}@.Ü:~¶¿íòc§º.¿þ·{ëýnËwíõÓ«YN)†P×ôFñݘ5Š»×›Éù³än­TEúï{æJUä?‘?zîæª|çþW×´ˆYîó.ålf9%sÅîG¼G„¸_ûÚ0ÝÂŽ‡ŸÆ^Ûtëáæ£&ܲ÷Û£Ï!™Íží0zwI¥*Ùääí\ù®xÑé-<Ìùýûpi·íÿ¬¾G„¸gók‡©kZ”%êÛ¶9œ 'ê|sájfGÞóØ×NO£nÞ%u~~á³këÔ·ó‹¥]]”ú¶ñºßQþ›ÞÉ¥½øÞ±]Óµ³Gžì8àÛpB=î×þÄqç‡S'r 1׺0GâŽÙâ©ÝEÏMð ­QÜ1õmëÝ|~¾:ß<’‚f8"#B@Ñ>îô‰øë?þåŸÿç¿ÿì/~ûÛÿý³?æŸ~÷»´¿×ÿùÿú«¿ýå/å׿þ°B8ø¸Öèÿýë¿ýóÿÍo~#?ÿ¹ˆˆüáòûßÿËŸø_üB~õ«)€SSZ ÁüaNù´”ØÑ»ÅlØO""9_ÉRˆÒt]×µ.O—²]ÜÀ¶ý”c]ÇÞ­ÔÖ›—ûSçt\eq#Ûö“kº®;¾ò”Y¿_èEµEYÜÀÆ->±˜qà->±¸Žè‹‹>??Ÿ»éëׯßTc)U+Ûõ"*"f½T*"‹œK»  ÀçZ¼²L¥:.³i9OSd7°m‹W–Qß6V‡: § ºóض[]Yæ¤Ê!`nu­Ñyò1FX-VŸ  íVc„Œ 6É2€¢Ñ 1B@Ñ#Ö( h! hgZ£–BH&"âš®™VšÈ±ŽY†Õ'ü›ëô°~‹A˜cHUÓµN,…RÛzK!JÓuÃÆ¨‡|\¸ `–‚ЬWÿèDDÔ{—R6¯ÚÛ´¯:§i—Å]HB&Ë6áê1B³^µ¾V­¤7»UM|˜¥ T­,¥,"2ý+à.-Žº¦õ!ÔµˆúÆk©ôÍÙ1´@›sfÖ¨ú¶ó""’cªTD´²]/¢"bÖ˰ñÈ|\pŽ€¬ÖâaŽõxò„¥”Ç)2•jNÉDÄržæÍ°mgZ£Í®u’á”Á!òÔ· [ض3­Q×tݵ[Ø.VŸÕ'Eã¢Û€¢„€¢1F(c„€¢Ñ  É2€¢1YP4Z£€¢„€¢iZ ㊄®éšiÉ¥ë˜eX†É_^°žv(`¾¼¼¼¼Ú˜c´m½Š¥²Ûi¾kÜì«ë‚pηFó.«;L‰©ôÍÙ1´@›s6OrPT+Ûõ"*"f½T¯‚q>.8G@Vë\kÔ¬WçæYW©æ”LD,çiÞ Ûv7“ãC>õmcu¨Óp!9¸ç‚Ð5Ýë¨sM×ݶ>«OŠÆê€¢qÑm@ÑB@Ñ#1B@ÑhŠFŠFŠÆd@ј,(­Q@ÑB@ÑεF-…L†%—¦õys¬c>ÙvíPÀ&,aŽÁ|×9‘ë§äZ¯b)DiºÎ‰¥¢vÍ¥% #lÂbk4ïò´½kºñ௷iYzuNó.XÜÌRšõª뺮ëzhŽ«áª•ôfW%7rf²Œ%{躮ëZ—Ÿ’‰|€»tf²Œz?´FU+KÙ¼VzyvŒ0Ø ¥ T­äÕáŸje»^DEĬ—êáU0Î'ÈÌ€ÕZlº‡*¥a2ŒY¯Î©ˆTª9%Ëyš7À¶-·F]Óì꺾ìQß6V‡: ç’ƒ€{ðååååÏ{Ò=×5àsqÑm@ѸÖ( h! h! h¬P(“eE£5 (A(c„€¢1F(­Q@ÑB@Ñ–[£–BHû% ]Ó5ND$Ç:fVŸðo®Ó Àú-ao¶O¿‰¥¥é:'–Bˆzró Æ›°„f½ju²±·i5^uNÓ.‹»„L–lÂböf–CDd߇£j%ÙLíQÀÆ-¡Y´BªZß› ¹¸7KA¨¾íüþ­l׋Túf ÒlÎÕ'ÔO¨22V¯‚q>.8G@Vké<ÂëÃÉfý0G¦RÍ)™ˆXÎÓ¼¶méˆÐ5­…i®Œú¶uãÕ¡N³mlÜ————[¿Æóóó¹®)Ÿ‹Õ'Ecõ @Ѹè6 h! hŒŠÆ! h´FE#E#Ec²  hL–Ö( h! h—[£–B0ß5ãšK9Ö1˰ “¿¼`=íPÀ&\ BKOÉÄí¿ Qš®sb)„¨ûx\Ä!`ηF-=åÊŽûz›–¥Wç4ïòí‹àÖΡ¥§ìgýO³^µ¾V­¤7»}uÜØr¾ŠA!øwiiŒpˆÁVEfÙWéåÙ1ÂX `ƒ‚Ðr6³P§ñûXß¶^+Ûõ"*"f½T¯‚q>AfŽ€¬ÖBªo;?|ytú„jNÉœWËÙœ¿4g€¸þkêÛÆêP§áDiºÎ ÆÜ5n¾ÕRQù¸„qAÀ&,¡ú¶›¾tNÓ.‹sÒ›¹w²ñ,&Ë6á1BËyŒ?³^µ¶ªVқݼ8níüé–BH&ê‡Åè{3aXpoΡú¶ó"9Ö!µ­¯ôͤ Øœ7O¨w.îz§•íz³^ª‡WÁ8œ# «µ4F˜cÒ4˜wy¬TsJ&óC6néˆÐ5­…P'™3¨¾m¬u¶‘ƒ€{ðååååÖ¯ñüü|®k Àçbõ @ÑX}P4.º (A(c„€¢1F(­Q@ÑB@ÑB@ј,(“eE£5 (A(Ú™Ö¨¥0-Ièš®×\ʱŽYfK3G;° ‹Ë0åX'²ÎRÙµ­WK!˜ï'‡¯®Ã2L€ÕZ\¡~—øÔ{gÖ‹HoÓ²ôêœæ]þÀ*¸‘¥ œ5CEò.«V"f½j5lS­¤7û ¸Ë“e,…ØûG¯BðîÒ…ós¬c¿ŸSéåÙ1ÂÀ]š5Z5]»o‘ªV¶ëETDÌz©^ã¹1$`µ–Z£S O ­TsJ&"–ó4o€m[8"´œMÄb]O[\Ó5N}ÛXê4œGHîÁây„?ÀI;”óëÄE·EãZ£€¢„€¢„€¢±B= hL–Ö( h! hŒŠÆ! h´FE#E»„–Bóáû뺮ë:$V«܇óc„9Ö1‹ì—[²¢4]çÄRQO–+<Á¸ `–ƒ0Ç:fõÏqì×Û´¯:§i—Å]HB&Ë6a9]Óu"béÐ5ëU«ákÕJ²™8ý€ ¸¡«'ËôƸ àþ\}a¥oþÑlÎÕA¨ZÙ®Q1ë¥zxŒóqÁ9°ZןGX©æ”LD,çiÞ Ûvý%ÖÔ·Õ¡N"êÛ–܃‹A¨¾íæß“I¸¬>(«OŠÆE·E#EcŒP4ÆE£5 (A(A(“eEc²  h´FE#Eû¦ÖhŽuÌ2,Ãä//XO;° ס¥¥é:'–BˆÚ5—–$dŒ° ×·F{›–¥Wç4ïòÍjàÃ\„f½j5|­ZIov«šø0W!Á¸GWVzyvŒœ üúõ+Ä€Ï2Ÿ¶òÚÕA¨ZÙ®Q1ë¥zxŒ—_éò­ÏÏÏÜáš;¬¤Œû¸ÃJʸ;¬¤Œû¸ÃJʸ;È6¯Ÿ,S©æ”LD,çiÞ ÛvýéêÛÆêP§á宬ÎC9]ëû8Ö³²"g,=Í~ê««³7sÃÞìºnü•^]‘"’c0?ÔXM{t]uªo»ùŽTïÝꊑù¯ùá·|uuæRÕ¬¸È«>Ï— ¾iö6-פÎiÞ}úOr.ÇºŽ½o欯à¼ËÎ%ª÷ά—ÕÕ©¾þ›Õ³²"÷,=åÊ~êk«Ó¬W­N6®­HþkŽ‹±¹¦ÿ²^aƒcï×Z¤Y¯nø?yø-_[fýø—ÄPdÎ&ë)òêÏóå‚o„óßhÕJz³ËøP®éº®õóOœ<ï@HÞeÕj•uNkU®´HKOÙ=Î~[VWgof)Ôƒé¯Øµ9–dq(sú;|…uŠˆˆ¥tøƒr…EªVc®ˆ¥4ü–¯±Î×VS䵟çg ¾e®òwɪ ¶¦¿i×Y§¥P×!ÉøGã*‹|ƒë«Ó¬?´ôZM!ÙúŠX²‡nì1 ­ÑuÖ)9íÿ[Ê:‹tMç-Ôu]‡ìÆ«µÕ©ZYJYdHëaãÚŠœ[¬íLÁ· ÂJ?t÷›¬·àg¿ +­süôö6Œ§¯°È…\_êÛn?¬¯Z™õë+r05Ê4ë¬3ïòÔxYe‘–BtøëÇ[««Ó5­ïc]×õ“L‡×«+rf±¶3ß2§ßb‘áïÜ5ï3YkÁ–B¥9|:®´Î‘{†8ÖW¤å<5C²id}}u.Xa‘¯Ç1e•u¾ÊÁ5Ù›íKtn8lYaS«¢õbV©®²È½ÅÚÎ|ÓÉ2•jNÃ4ÇýÐѪ­¯`K!¤j>P(²º:&kM™k+òhaëu?ÃceuíL³~(heEŠˆ¸‡jjæz¬°ÎÙD”ÑúЬT§1BÉ»<~:¯­ÎÃMKiš)µ¶"çk[.øÖË0­é“Eë>p+'BÍê\é)eǶráÊwæþìѵžU&"’cô´”µ9?wÅ?ô}‘o–÷i¾÷¹&ÞºþÞ7–c=_qUµ7Æ%Ö€÷9¹0º¥Ô¿Û†ù·X?ð>?ûì€M³ôt¼<ˆúϾðð·ëÍËvo°~à}hïpaí™Y»t\W`¶)f™­k“cRŠÇ½Õù‚Lû¯OžáqÎÒÓQ't5µ·Ç!ð>‹KÔJŽ!UM׺¡ñRÛú>M›^³d¾ëɱŽ)ûf¹7™/<Ã{¸¦kSu:ZQiµ7Ç!ð>û¯O7NGŠê½3ë‡5Aã™)(:ŽËí(_téÞI}Ûu­ïãëã¹O¯ ¸-‚xuNóîÊN ú¶ëåéû›‡ï†·žÿÑ_ÿ~N{ÛÚ€›!÷Pï]žEYJyè—Nb)åÃ8â°,öù«½Ju:Ø<ަ«Ÿáj9Mr–³-÷z?«6àö#Þg_«‡oÕ·­ˆ¸¦õÓFõmëD䘮éTd¡¥:£Þ»:Öµˆ87Æèé3ü¨· VOõ»¦ókª ¸=Î#Ö( h! h! h! hÿ0²5F&äéIEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/images/panorama.png0000666000000000000000000052007200000000000014766 0ustar00‰PNG  IHDRÄÉi0„gAMA± üa pHYsÂÂ(J€tEXtSoftwarepaint.net 4.0.6üŒcßÿŽIDATx^ì\gúÇGMbÚ%¹Ü%—úO¹K¹”»$—\rILbÃ.6ªŠ"ö‚¨ ‚ ˆQlØPA@zï½.})»,Û` Ûwéõý?S@Ä šù}ž¼óÎÛffç}¿ó¾ï¼ƒ½–hÑ¢56Ô×××ÛÛÛÓÓÓÕÕÕÑÑÑÚÚÚÜܬP(òªOÛÖ`6´ÑöxÚ“»k.¤Ö …B™L¦V«µZmKKK{{{gggww7Üp_ÀÝAÝ'´h=$aÇ.GPNZ´h=lA«Í4ÐT´µµA³GSSSv%—f&Úcf:—TÅår% <$6ét:xf€'x~ ™‰ÖvúôiÊI‹­‡­fèd‚ÆZ‘¬rÍL´=ÆÌt:¾¢®®®±±Q&“©Tª®&š™h e&r\àfÑ?VZ´FAƒæ Á€Gmh<7ÐÕÏ mmmäðÍL´Æ‚†2SL\bl|ÒuKH ‹ ‰(b”пWZ´FTp‹AÃÍ0<^“sÐx444¤³3ÓÄÝÕŒ2A£xÀ„’*V}“5Õ5} m´Ý½=»—e—(l3¼…CÂܽßU3Ë[0nµùÚöä³¼½70ÓɘҪª*>Ÿ/‹É®&xf`&úÑ©âUWWGí¸/AôßüÆ~7µ¡ÌTRVɬWÔ5VrUj­F£Ukt5¼&FIÙ@º²ÆzRB™Žô¹¥ÚZàçÞÒÒÕ îŽf—[/”¨{É}¿¯2ysåq{u¶kÔ­¿l@m:¥®³¿ ]m")”ªW£ÐÀC}û-îÉ>BÂ…ƒm”õÜâ†í’K½¿w#÷v´ðàøy‚–ülÜAíj —Ço!Š×ÛÕ.äCÎ !Y°¾6l(Z~'Z¨˜  `&xÈÖh4r¹ž¼S5C˜©°˜¹ï|ÒþKñnWã„"¡PÀæ6^Š)ÔsÏ$Ã<åÀÞ—«MmèÈ®ÑZ_æÄ%í£¼7ìHwíê$é,?ñ作“¶ÞdÈÚUŒÖ‹¡‚ðƒíÅ éâÖ+eÍ~™âìj‡ì½½ñv&‰7gË^êV®ê­Ò]Žo|jÿÿçýͮ擳җêTÄ â ñùƒ™©³½µ]ÈàÊÛ:‡6ÞMÜ2¶’ø… ÔÈ­6ò¸Úæ+5»¬¹¥U#h wþ®šÒ šµÒôøÂÖß#•¨¢T ¡6îB¢ÚÂZ%ÉX팼¤Ìø’.ÔUž[Á­­–ôÞ u=5Ù©µòVa OÕJùáàÅ-®•Àíš›;`·VogqZŠ@׬UËS2‹º†n-JÊ¥(¨W›ŸV*WÖç—óð;޶¶ÖÖVMAn~œü¾ÎÒô¦֦ܴ›¡õ8h03Áã5e_÷ÅqÞÿ9±Ÿ¶gƒãÜ%ºíçëŸÄ»j†‰~:ßðç°°%!G èð” ?¥Dç&xÚ¡î_Çy9³Çïf½åÊù'$âÈf:–ܾ¦0?ÉÁö°?ƒ0‡êž²e¿yî×YŸã}ì‚cÊ‹8Â{AêÍÂŒbÅÏ *^¿ÕŸ­U¾hËv¬ÑN=Ìyhfwíßqí+š-½ê?ó’Ú]@±_s¨ÅvÕ~èÁ…_¶«™äP÷¶ký¿Žsÿ¼·vz„bž{Ýx€';Žc¶üMÎÄÝ5¯ºr^ÜSó¬CÝw>2ß Éûq¼û2P1íhÝk祮þœütµé7¼„5NJ^ã=Hp!êÖ¼ø0“E¨d°Ïƒ0Ø“»kíâ%`aÊ/þõ3Ù†0J‹ EEU¬z©´‘‹"nrH‚²¥µ<-‰§SgFe´u÷µBM*—·võÈ…e©ùÕ-êê §´æVm‹.;:³µ»»<5…§nmë‚Z´î*fnJ‰P©UÔ0ùJ¹¼(üÕà”·wе5ëðg•ÖÎÞ&6ƒ-Ó@ÔÛÓÊÈÊÕé´Ý½¨£µbôtµ*%UÉiź6¼únæ3jEºv'›}½Ñ• ˜| I½ªúô iw«"­”¨Ûi=€ÒÓÓ)¡ÄÄDÊu_‚ZW TTTäçç+˜@C™)'¿ØâTà‚£'qg³qfj”ˆÂ*3H.(­·ti)ññ¹Åœ­(-1>§¢"ýÚÕø -ÑëÓÑÞÚÑÑÞÞÕ^œ”&éïêëUT”sûP{en©®½©(=#%9µJÒ?ÀòRf[‡*311%­´µOš‘TÔ®mJÉ«éîíåUæÇÇ¥6´¶°ò ró23 :zú:ÛÙÉñ…•òÆŠÜFr\L­¤MÓTW^U–WWÏOˆ+`+  *ɂعP’šœ¼ôŒÂêÚ‚…®"'G¬jGH›—XÖ…úZ´-í­­·à3`¦4^ R6–3ؼ²!x5զĄ‡×Š2"2““ÒJùp;JØ È´-ïCš²ŒìÄÄ„l¦¸OQY!&’ê•&–W×É{Ú4ü*¾²¯]–››èãŸXÌ…Ý]*Azµu·§”áqõÊ«KëÕ¸£]›Ê`ƒ£®<·­sðS­ÇD·d&™Lvkf*ª˜wääüS‡–ùº3 Q“ˆÁ/¾3Õí,ј4î“ÎS,õ~áVo[ÞlëÛ°ûzH̆íÂÖnNשýáŠlù%©k˜`Òú9>bÿå{„Y’æÙÅAåŠ\Hfªù?O±{oqšjOPÃÆDÅW'%ù\µ^ ¬˜¥Öó%°Uïìâ«ÔL¿Øè]®úÈap^5lY/:°&Rc7õ^lÕ{‡¸A•ÊÏÎIN^ã¾èÊ;#vªjÞ}‰û¹—,©˜zM˜ÚøÑié™ÄÆÉþ²SÉ¢ï.Ëãr¥Ó£Ôž©ê¿Q)[¦©Ū?;ı/iÙæU·0Zµôš"0§‰à¶š)Ñšÿº±0‘_$Ÿ íboO“=CœŠ7.+ì.Õa¸1iøŽ}Û›$¨nlãû‡ÃîÕ†™À><ÄÊ[&KŸø½R3yD2J‹ò23“/‡s¥W¯DruIÁq…2=!EÙ‰3“F'LË* jR3J„õÅÉ9Ú¶z{ðÛ§‡j­tYQéj.=)C.ã¦U6u·isŠ™åÙIEÜ&¼*<*KÈ.ŽÏfé”ìô‚Z1¯"=·Z!.‹J-×ä%Ô³‹ÓÔ-Tú5E©¼ò¬FekunCÐÒX•UÇ.ML)$Ȫ3¸ò¤mL(m$Ã#ÔY™7UàjWåÕëP‡6>¿†Ü÷‡—Ë¿Qp¨}÷®áe&PWWWTttVvö`ȹ†2Sn~±ñ™S Ϲ^v ˜I(“55i$·`¦Fe~LDRV^RrJCMN~µüÅì¢jÅ碷3/)w ¨·Gœ•YÙ‡Zr¢ÓU­Âä´²¾NeFFu[‡¼¢`/=6-'39†+ãÇ_‹-+).(©nmáGGåe¦Ä×3bcê‚r@ymAB²”è¨U‰ÊR‹x=­¼äô ™°$½TØÝ̉N,ìíT'Ggµôô X@QQL¹¶0&¶Q×#ª-LÈJ¯—’F$3Ý Þ¶&F^³NLôæ3%&dæÁ]§jk-Ìd´ ö²\†ZU—W ÷†&éZ‚¶½%;:EÖÖ”_ÐÝÓU™/j‘'D¤wuêÒ¢Òd‚Ò¬9‘0jæä–ÕÖ¥ De)‘éL)§”Ù¤„SÑLô3u*xYµJÔÝ‘–_F‡V´«¬ XGìíiÓ¦—pÀQ_‘ßJ3Óã¨{e¦ÅçÜ }÷Y\sàãýL•R©V©nÁL'¸á¢–}1MÛƒÞ;Ù°+Y±Ê«Þ4S­ïr=a83ýÓ™ç”%wÉ’tTä.ø.Dv]3.»üÌ„úš*Óóje¨§S×Ñ)ËÊ,ëëÖ¤D¥ªZ²ójÁ¿±:»4+½Q×Í/Ï®V´ 6e¦”ôö¶å'ÄÉ•Cåø+}ÅqÉ’v$©+ªnÒäŧʈ‘ãþ±9<ŠLPV.jîëgeT™åF§)ÅU9i]IµB[›,ë@¢ÚܘÔŽ˜¹[0Ï:\¢Ÿ©™Úî—§¥ç3„-­Š™ˆ±¹Î’ø$±VšœPÔÝÛ],i“g&öôµƤ(t²ôÔü޾¾žî–¢ô,egWEflF^¯(/¥ ´­¯y€™P«41·®³C•]\Ûª‘k;ûºÛÔŒÚ<ß•Z«MI/éDe9ÙÝTáh=N‚ߨÝ3Sqiex^fDAZLqšH$jj’ªTÊ&YÓ-û™¶êöÆHL|ïž®Œl:vM8'Auôšð©›ú™þéPc˜¦µ>W÷Æaœ™V§¨¶†HCêpfŠçiMCerDohaªL¥‡²d¯ØÕNU_Êšø5üãØMÌäÈq.Õ® •žÎ—þõzF7eµùÃYp±âå=µú©ê#!Â/Ï_g¦NŠ/eIM£{‚ùßú^g¦WóÏ*WŠÝ*Zöûpžrâ†qZ~;Ä2Íl9p©îÏ®Bß|Å¿Ýð±Â×÷À‡ä€‡“¤Kýî„¡Æ!¤(2À761öÊ¥ëÌDŒÍuÀMA2“¶Eœž^À®.Ë-æ¶è„©™…rÝ&|àcsS ”ÂÊøÄì–n$®)Ì®â«e5̤UsÓ²ÊØLFaEƒRr™Úuʬôì6›‘•”S§ìíhN‹ ¯StòŠâr8šîNYzJ–TCU§Z[TZR˜+ji.ˆIUu"qm¯Z¨ÎÒ„d±VŸž[Q‘_+ºÓ$`Zw£ÈÈHö ÅÇÇS;îKJ¥’tóx¼êêjÒ}; e¦üBWÀçò¹»O|"qhvú×hõ\YÏ;°žÜUó”~øp˜/îc“eÃSp`ÿ ’²©yÖ5Þ¦ÎÉ“D¾P`ˆòô^ÖËà¿#\®Á!ã'p=»—캻O{ޏ.¤MºãëàX$£¬´-.—'‘Š¥M2­V£QkÚÛIfêîìè„{¤»«|ð!¯¾¾ÎŽöî[½›Ó¯¾®Î®ÝÍM\† ïiïèìííéî¦éëÂ_T‚l/>å©§¯§—ðG½Ýø í:iZ|r½ª½«³vöötõàað€‹HO¡£*ç¾n"S<bGwW„Å‹—Ÿð¢õÂ/Ç =È0hptøuýnjC™I$óøÒø`Ê-‰3ÓSТµ«ù…eÜû=}Í¥Zw}"9-Zƒu÷Ì„ÛN&¶³òfͼ!Ø0Ù3ö‚ƒI¿3¼2,ö¥¯Ô7WöRŸm#™©¢¢‚Ãá444H¥Rxú'—µìè ™éÖÐHêR3 Z(Œ¡Eë>5”™hÝA½Ým\›G£Ek¸uoÌDm‘43Ñ¢5,¢™‰­±"š™hûÃÍL´ ÑÌD‹ÖXÍL´ýaf&Z„hf¢Ek¬ˆf&Úþ°F3­GB43Ñ¢5Vtgf²Ž•ú—ii£í±´£ÙJ÷ky………L&³®®ŽÇã5669Éår•JðÔÜÜ üÔJ‹ÖCvìØ1ÍFpïAóÓ46ÕH$¢JF‹–F„?Q…Bíü< ÍðØ]UU™^ÈRáhÑzìTÆW¸eçææ–––VWW³ÙlÀ¦††±X µ%ÜJ¥n*4-ZI83Á/’?Šª¯¯§\Cp×Qõ[½½½÷T —Ë¥\cOP{R®1,àꮺ_Ý 3µ··Ó¨MëñÍL´ QÌ?GÊcäõk|hÆ3©Æê¦1[%òOôþ4:ÌždxZ´ÑÌDë‘ÍL×Õ×K,ìÚ‡O(!ÖxE=à"V™…]àê½Ã D|"Êà½dbwÍLw/š™÷3iñÕ‘iÑz¬D3­GB·a&•<Ò瘃ƒÃ¹èÊçF1ók›¨UW’\V'¸(T2²yr¥D˜ØÁáRxŽZ# :zh¿ãyµÿbdÄså× _UXÝpÛiw`&MUâ2Óõ]=ÙÛ6­Û¾Ü樺!wÍŠíú†‰\Õw‹­ë·øeP¡oR—¬89Ÿüþ !qìFÛð;G÷vÌ$—å×A|ñàCGƒ5šÒ´ ýîùB‰RQqÂÁáì•T…FíuÜÁÁ³öö•ÈkÄ-K-f7P·Ò˜©ª$»¾IÑ$.òppðÉRiÄ×NÀ%: ¥d—Æ:9Œ-eC^Žû=N…K4ªü(ß}GŠ%ø— o)!3=ŸÉ£64977)§šÚ¸•îÀL|Na%Nû̾}'ÎÇ6ié^G+äJ/ÇÝaßåè|µ¦1à°ëƒ¹MuAä—”þ (·‘Rœ$¡6€hIQñ·¯´G‡™hÑz,E3­GB·d&eÜþe6—’e2Yâe¿äªŸ_|f·ø$ØÏϯR(?³}é¾³~vlG$äðÙ%™ ¡°«Œ'÷ßgºÓý\YaŽ¿¿_LF…ŠJóºnÇLütŸï¾Ÿ‘/j8µnIJ­Ì~ëꌘ‹û¯•TîÜq&4Ö1Âñ”òÔšœ¿€ÌrNuq^ee!U0üÜN‡Ó¾•…é°ŸS5ä»3õõtuÜ[ß%Ü5ÛVÚÛujýE?÷h©FUsùÏÉ+=;Û6;Ë!¨Š1ãdž‹çͰð¬-¹¢7méÂykË‹.899ÎüÅÈpѬvaWv}øÉÿö¸žZ°TÚôõƒ`êºnÉL²úró…?ï÷ÏÊ p?’*H<±Ö;>c¥5·8nö¦S>Û ‚ÊdGmÌR’‚wO¬‹u_q0ŽQ&(KˆÀÏaBZ_×+1§²®² ’Y˜™þ%\YðÁ–=‹ óüýý£ÒÊnÛ1“ ;à‡¦g ^–ÄUÉœ¬VeÄ_¶Ìg…Ú®÷ˆp\½¢ªªtî ûø³v'³Å¡n«‚’“mìÜy¡ó¬.ã¹HY±ÑWüýÒË4Òš?¿¨Ä"!§¸¼¢ %.~$ÙÕâÂ+ÖKVïÍ,,¿à#'3¤Û1“„™9wÚäË9̨ƒë½ š|÷›E¥Äîp½ÄËö[´ÛïØš%™µRëÍë2£¼DT–\Þf)Þ~íVEî,s—0ç ç Š£Yj9NoÕ¥9±¡þ!a|©¦2/Áß/¤JÔ‘’WPP˜ã-l¨³˜§:2¹<#ÂïÊUKH–a@#ÍLÒ9ЊТõX*£œK3­±/ÌÇÇghƒÔĶ˜±¶„„w—þÜÀ´ª]ëÍ®]µéD|U°­ÙÁˆ«‡·\IKuX¸Ò#(ÈaëšÓ'ך9UEZ²;(æìö3áñvKŒO$fù;#&’¬;ô3ùºÙˆªvL³dj4Án{]}ú–²Ò¨;¼¡8…Wwm=Zwl¦éö•z‹3òVm?ëfsÊcÕ†£±U!{—öØê—˜´uÆ’³©¹þ§ÎéB¸3¡¾Þ ê»Ö³ìšP·ïî½G/»Ç4i´â—Ón;Wžêê•îšgÛ!•E+Ö^hïÕ:Í[´l§-³¹»*l¿Ë)ëýûVmõíji0_áª$ú™X^‹íHÌ)ÕYܨÛõ3Õ¥y¸ûg…y8DŠšXÅ}­ÖŸR©«·è­_?kc¾F“àítèªë‰øB2c³é NŠëŠ]çªR}§Íß´f̪íëÌýNî:ë¹ÞxÏ媘ãú;®$^´>ç´bÙÑøLÿ£§©Ü®ëýL»rU6Ó·”i4aÇÜü/äWi”ñ–ëv¬Ÿ·_¤nØ;wƒ­í®x¹²<ý´k ëžýjUÅÆYv|ˆ\8[ߺ,'Zï·UV+ç®rßfrõ¢çÉÓÛT¦ÍXu¢2åÐVG¿ËN›b«!s¤Û1(çêþ«9¥ÇWY¦ªÕy‘‡‚\ÏÅiTÅæoZ;ͪF£öÛ·Ç墓W* Ýí`»i‰k“šk=s½Õêm%?ÊãBüÜ4Þ{–{&—&[·ã¢Û²¥Û âüçmt53²Ù±fö‘èÊg ¿Ì¢+7¤—Ä/ýyEdFNpjY€43ùå7Âc -Z¥Šê$43ÑûÂòóó‡6H*ÞÎyËÒy¸RX¶ÜÈ«Ö\´YkwrgTY½¦êÒ¦½!Qg÷Ä—[è›] ‹ˆˆˆ¾âp9­RÃ5ßv9ýʾ ¼ªŠÜÔS.Væ[<­gl©Tk¼l¼ü\/³åU—v8^ƒ{¥0ÔÉ7¥B£ÊZ>YOßÄC,Yë›Y¹Úœ:eQ\§©öÝ`ãeWœžxlßæu6îž™z»ÚN9ìfj•綘”ðä[·î(OñuOûl;[älµµ¡&¾åyü[s83WÊù« ·qÝà•«ŠóXp˜iÍÎî¶ÆµfnJI‚™…gUq4‹S¹ßÀ4UIfrƒîÌLGÂ…Rfò‘£ÁÇ·¯?©—¬0ؽ}î†\•&ì¤íùk‡ÅªëÃ×lº׉“îqèr¦F]böý´Y‹Ôš3–{Ž[Ÿ=ks>®DÉ6Ût);Äñrz9³ ýÌ¡fëÞ;3Uïž¹©T­ñsÛu>ÐÍ+·J;²Éæà¦ùö"w£ÁŽC{wÇ6) #\N…ß³ß_Õ˜¿Üä0~õk×X¨Ôu›š1mÑŽj•&úÈû“Vžž6Û#Ô ÆË=ê NÙçVç_>·©þ®š›Jñ{ÌTvrõÖd¥:ÍÿÙð£ûÏÆ¨…ffö›gXV«T§÷Úœóq¾\É—žßsøÐ楥MµK­÷­±LV¨Ó¯ì.dA:ÞmymÑ™Vf[BTÂÂE?.›̴æR©Ê r HgØm°®R‰R#‚v˜»…f“ÐH3=6Gë196—““Ì?x`&.—+ ¡’„{î¸/È œ­Ñõí×­˜I£a§øšm³²Úhíî³o¹©¹•±ùލó¶Ì”xÄÐjû»•K–[YívõÝ;ÀL%±ç–®5·0ÛheµaƒÍñM-Ý혩¡0bî¯ßop<uqÛšÕVÆ6¼š ‹e›WÏ™ïÏh* ÚµÐÈÜjÙŠÉÇ6-^m±ÙÀæ(`Ö`fÊ >j¸eýJÃuVVë·Ú_’Ý84xfR3œœœŽ_ –42Ž:9‡çÔö!mÈQww`Büòx'FÑa¤,šþ£Á~§C),jk8åâ|Â+N£¨ÌÊÊŒK­éíÖÅEçµ!ñà…ðèÃfH‘ÃPÝ’™ä‚»53~›g±ÜØÒlaJMÃI;³+Vn½œVë`¶ÂÊdÙ&6«x‹ù†µú‹§á2œT×™sM­V­Þwq·É +£5»ÃNïÌLåI—–š›­³Ø´mÛÆuÛOŠd†×u;f•Ä-˜úýZûC1¾;WÃ/aÕvnmκ›-æÌ;•Í8¼rÃêõÆ}¸E~ËŒ·-_dšÇªwÙn¾qÙrë<<~màOÿ¿mÝúõÇãÎlYhjej´69Èq03qkS ̳ڽ}ëæMËW;°nbƒÛ1S»hÍ’É‹V[ÆEž\fbµléª2víÆµŒMbJS|·¬µØf´~/¿:ÕÜt‹ù}÷ÒÁW­Yu<”í¹ÌR)ÄÑÚ{ï²U[¶n61(ËÜn²dÊ•–ÞÁ«3SF¹ÏNóUŽÖ&s-¶l±8z5‡,Àhf¢Eë¾ÌtÀ?-555//¯¸¸¸¢¢‚ìm"dx‚Û*L¨¦hÑ5ÁoúöëÖÌRH¥†ŠÿÃl€ Z§<Á‹ØÝ¿KC„'üIß!º3AìþHTŽàGx‘ùj C\J*…m<"0ÏzhÁú"¢ Ò˜éÔ\öbÞáô`ºM?ÓÀ)¥Ž÷"– µ1Xׯ2‘™;éƒïH¼~D‰ÂQiÕZìð—ãÑñ=D¼p‘Š5 yH7_¶;ô3 ”­?eÜïzîC Lœòdâ~×£€¼Z6JaßA¥ÿqá>¸úF¦pƒhf¢Eë¾Eϧ5°N¹úu[f9Ý–™~OJ™¤Iñ@å„ î:ŠY¶n76wR)¤pj¨ûÕm™é¥’5ŠnûÝ]j~¢Mq?åݧhf¢Eë¾E3­1¨[0SFFü4ÉUŒGGåzÒjµ³›6õ—ï'¯±^¾`ÍKE…eŒ(¯Øb<š¨ÈÄÀß$Ýcbnç¶-©NÌ/õZ³×ÏÇÕ¦°®ÐÔ`—¹ÉF†DêºÁÙÓòÐÕ\ +Òx½Ó²ï¦ŽH)¯aCÐtQYÒ¢õÒÑÌDk Šf&Z´Æ®î•™(W¿(f’Ä.Þ#SâßË Í­.]±xkfˆ£[X.H^¾lšiW¼nùš‡mrNÂA«ã1>ö›Ø¦F{¶,Z©¹`kzÁk×¹˜bM}ì sgÿøòÿ#¼è&‹Öp‰f&Zc_43Ñ¢5võ€ÌT•š_‹ßáWÝW­\iétéê±}+W®<ŸT'å³öZ®ŽbàË¿³²|׬4?žpp¹¾É²õ[ŽÖk4õ…ñ›¬,Ž„Kù[V®´;\ÈL)®ÓˆJÎù†{lݰÊbmbéð,A‹ˆf&Zc_43Ñ¢5võ€Ìt¯Jºz¶\4äóB´h’hf¢5öE3Óc/íÅÝÛQ[uK²·˜ía÷ôR۴ưF™™hÑzˆº33±ªKË*kqf5TW±šî™¤|ViY¹à—ÕU65ź/­Ç@43=öRYi°éLµ…Po›4/ƒ¡¥/ñ£ š™hýqtgfªˆwµr3qK–î­»OfâØ/28`kîê—Eyh4êú„sW²†$ÄÌH-¯§6ú?”NmÜA*™ß™‹\Q…û±HüÍUZhfzì5”™ºMYUÙ#Ý¿dþ ëýÆ gÏZ°ôZ‰°§«=îÌþyS¦ÌÑ_Ë!¤ô¶Û>uêÔ™ó–‡ ©È´FW43Ñúãèff2?“á·sçŽ}Ξ9Ñ®F&[œ rqf–=xðÄùò£ïŒÌ¤à‹®îÇN±Eêü8?gg÷4f}TXªTR’)äV18ø§U«ÓÏ}ùÑ”íÖkݯd%]9Á’˜ü"¿?ë­Œ,Ä¿tÄÏwvvöÍ»°S¹¥]Hà•l¶šW“uõÒ^`¦â¤+.¥’*gUö5WçÃIuÙIQÞ'œxžçðk—Oûmï©ÓWÃòYéGœ/GäÖ§†ùz@²Ä—åi=Ú¢™é±×˜ÉÈú²D£¼`½ÀÌò|CyÀÜ©¦ÑWŽíXbb×(Ï7™2çT4#1àØÞca-TlZ£*š™hýqt33½ô«stzÌ ÷C;—Ï:î±mé†#)~¿Î\·ÐÀÚÖlù^oo‡Í¦W YØ{ÏÒã)ü‚‹Û6œ½öâ—™ v9o 8jºû`JÜé˜Ü¦â¥®8Zœà~øJ37Îç¸ã«OJËÎoÜ(Wª5rî¦ßô/æ”Ǧ8ø$—È‹/­´v1÷;à~áÐÒ©«¼Ïš1ÇŽiÉ Œõ,ª+s vد7 fŠÓ<7Ú_K³Û°½”j¼ÜÞbÖ‚dfÓþMË/z¬Úå[Ø”âº|_(=ýêQÍL½îÄL{*À'éäF³-çŠC÷O™>wÅ*\ë-­9ª®Ü`×UËÍŒ–™n>ÖÞCƦ5ªº3 ‚”¢jš™h=Nº™™Þ™|`«ÅÂ}¾‘çö­<èºÉÊ9ˆ_7ç—ó—ìØ´zõµ¼Òòrfƒ _ŠÌû  C"¯Œs;yÆvź#åÕ5\ÆÅ‹Ì] ¹èvt;£^…'*È2YåY™zäðÑ}†¦{Ù‘ó–: ™Þ›öá4£–—1|m5\ë‘~u¿Oz¥F#;¸EÏbñ>FЇûQ[c3—ÒòŠªêz¼oKjjæ!±–MY¹ÞƦR©*Žsµ»˜ì°~{9?ËØh·ÑRk–\sv‡…ãIëè²zMÕ¥Mö!43=ꢙé±ÎL=S Ñ%ÔÕ)¼53Õù̹('ÏO<ï䢿ìÞå–Í–d…š£gVªÂoZ£¬žž¦®®®ŽŽŽ––­V«R©šššø|~raÍL´'ÝÌLïMqvuXÿ¿_~™>{¦«Û¦¯?ûvÊÔù§#£Wš:dÆžüã¬YúËÓjð1µKn¶ÅR93áðÙÈ$§5 gÍšmn{YÈ ^fqXVž4ÏÂUH áiÙ+Öœa¦?ê¾fÖwóÌúmSƒ¤vù”¯ŽÆ°4*ý2ÃÙ³§m?Wumæ¼Y1ʼngw9ű9éÇ=bm\)/Ûy^‚§%ö²1œñÛ¬ gB­Ÿ÷Û¬Y‹ô7 ÅÎf˜,]y,öœåÔßf/Yã{É!¶œ«©öݶŸîgzäE3Óc/œ™¦ôKoѲ’‚ð[2“¦³åÊÑ s§L™=Õµ\~o¯îÊ‘S§L™6c¦ƒWt ´Þ´F]À4ÐɤP($ —ËM,`Ž3EFF¿I~~~ÔnZ´†I73ÓXXkà°¥i•䆺 •Zqˆèg¢6i=Ö¢™éñÞY1Hpqñ¿„o/~¡ûð½Ä0P´Ð]]ÝD@pw¶ê ú¨h¶€–H`jii›S¥RÉd2‘HT__ŸWq÷ÌT]’ßx¿uúöíÛ݆hãÆÔî;JÌ)©äàËfj iéeä£þ}ˆ™éã{µZ@<Þßµ„,Fí=F¡õ56™I¥úýŸ-ܘtÒD43Ñ¢D0Óõñ 6˜ ÚlZE­­­@K:îLh!˜$ Ü´,+6»ìw™Iï»ß¦NÕÛrôêy›ÂA«Ë$ù:§±®ßùbV™oR®ïÕ0h€øU)ÛÖz ®€™¨Ÿ!@pðàÁ5kÖ{Ã=ÖLž2uút½Ý^ø÷z‡¨<Æål4w5/÷¸Ï~0E®ù¼-WOÙfWS>M]æé3aÔF¿â.Ì$PÎÕýÙUÔÆ$«ß¶Þ…'Èv÷Œ§û ¢Æ&3Ñ¢5X£ÄLIIIÐúBíOklª¹¹f-!¨†à± ª$¹\4TORBÐZÓeAó€?ªÕ$0Á&´Ðr@Yü»Ìd¼ú¼T)Þk´ÑÚÅ&¿Ž±ÅhÑô)ù2ÁŽéŸü8Ï8¿Î-J˜óÛ7ß~ÿý¿¾þO`‘Š“2gþZv¿€™à昆Y$mÚ´‰Ïçô3]=b_Q+¥¬Ø-«­æÌš¶ûrq}¢§žžžé†Ùaކóç̘:?8'Ãxù‘šÿEzz+·‘(Õ¥ô”˱kõ.__Ãã{ìX¥7C?0—±ÏÞGXumÿÑðòô˜^°ḇõo¼ùéÏzKýS ÷o\¬7}¾/£ÞkÔO¿úßÅ4¾F­J<¶iºÞÌ—"¶NùøçFîVk£ËUÙa'Üv¤±[«7cÁåB²¦S^;j©7}±Q±‹ÝÞUKõ–˜[•Ç}óþßõ7®Û82/ÔyÎôÙö—âã.Ÿ°Û4gÎü…é5÷Ý;FëÞD3­±¯Qb¦+W®ÀC3•­±'’“ ‚šÚf $¨˜ „ ~"šI¨°h²¸\.\ òŠÀå€kžÐxTTT„§ü.3ýúí|‹uë,v8åbsîÂΣQÌÆTW3Û«Qçl«¯sQîûœ÷Àl"5IÕ cÇ!ÌäççY*ÕÖÖÂ}™\-6ÛÚ8èš}BÙA9¯xá¡0ÇfãÆ9S§øœÝ±ïr†„qeÎüu‹ö,ÿñWãgÿ2-Š+Ò(Å»–Ä²Ô žVg|öü6M£ùâßÙ\¹Þßy‡éã‘W—Öß³« _¹Õ7ãêþ«Yåag7.›ÿãÚ U)‡=sð½r¦á—S¼s™Œ‚‚ðÓ{RXBIÉ9[³˜‹ög}öþúóÜ «—þ ƒl|b=,~úqò:÷Pb 9Ÿ©»»naòv 0S‚×ÎéÓg̘1k»ÃÁãq*i­½wÜùÝàg²q÷µ«gN™6}Áº’:†ƒ_mÞÅùÓfÌз(5i”Ò“.'êÕš‚賩een[W@*[E°*‚/¦©+b7»…Ro+ñÓG3¼¢2ó¶NÕ72°Ú(äU­Y2Å›ã:-ÖÓ›q>ÅΉ\d²¢ˆ%ºd»ñjµ¢4Á+®°ô„¹ÞŒœBˆoY(‚l™1mÑåüü53~þuÆ ‹í§E*e¼Ç†EÖ:ŠÈ vš=m6Aìå“åb¯Àÿr\ QZ#®›™É90O€MðÌO¬±±Q"‘@eÏxPkÑ¢5j‚ÇWêÚ¯g¦‹­­6íí¤›ÖXÐ@'ü È1 >ŸG]ìuÀííí7ߤõë×S»Çž”2É>Ǧ;w@Èù;Ö ?e1¦tgfª©©fâñx ê(¨©€™ Ê‚Š‹­Ñõí׈3Ó™ÖV«þ~¦­6œx‰šÖCÔà9xzkhh€‡¹˜˜êâÑzx ÌD‹Öèèff¢Çæh}83hkÛÜÏL:Ý/Ýݤ›ÖÃÒ`f‚új.‡C3ÓXÍL´þ8¢™‰Ö£¨af&ø•s¹Ü‹/0Óá¶¶uýÌT©Ó}ÙÓCºi=,‘Ì$'&3‰D"@PWWM]BBpùˆ—߇J&“S!h€hf¢õÇÍL´E 33Aý¿oŸ–~frik[ÝÙIº+tº÷{{I7­‡%¨w&€“ÌÕÓfªe×0Ê ‹¯[naI\rVxtBkk+ˆÖp‹f&ZÑÌDëQÔHÍiú™É±¹}ecé.ÓéþF3ÓÃÖfâóù,+**Šºx„øay0,µ"<£œÁäýR9¼¤¬"H £V’o{¥fæ¨[{HÏ[Iǯ Yü¶v™@JŽ')ªS’“3sJ Ÿ%m»ùçÚ+â å2‰ªçÅó™xôܲ¶[ìl¯-©éÄ—o¼“º[i)É©é Šë¯’ÝRÍ̔ԴFu¸{;Z ²Óˆ3”#ï&òÖ6¤¤¤T‹Zp÷­D3­?Žhf¢õ(j¤˜IÑÿ®œ½¨cE95WªÓ½Ü×GºA:ýí‚Ñ×Ý0/ˆÍ®Zçºú¬¿Obz“TÜØØšU‘– )Ppi2cr:nÁÊÌø‚nêg%/-bUd—ju¼rŽ„ôº'50óÙš9'¿”+ç•æp´ƒókÎŽÎhéî©)®pÙ]Ý”÷ ñËð(Rvn…PEy!ÔÕÎÏ)¬žËŠÎ¼K RwKAr𼫧·§+?+K‹ãÐ`µåG§Œ!5i•=ª¼üŠAwT{i^Qwoêíbd5£ö’ôÌÖ®[ßq÷ÊL‰DJ‹Ö£©±ÏL™A®Ó©ÏãZcãM® v÷*I>µx©YéàÐ~Gµ[gΠò›={‡ëy®ìŽ ~ ©ªBö»_T=©ÊâPŸ}§"4¢Ò•³—UÐï›Þ ‘b&i?3í©é2-¦˜©X§{¾¯oàÍìêâiµÔ­ÑÒÝ0S=—’Θã~|Á©CgbHfÊâä'¦A T \Z`¦Ö6unZJbL2O«ÉIŠKJI)/-¸rùj>KF„ÀQ `¦†ê¼ôü¼ÄØÈÒâÂĘˆŒÊ¦®6]nzbx\Fkw7¿<3!1)!"NÐÚÍ+ËNŒOÊg‹Hf҈ˋXR‚™º˜Ùñq E°ïªï•äR>žÇm~Ç$3©Jl^^AU¦&ÇG\ c Ó¯E¥¥$‡%u¢nNqzB||b6³½GþI‰ñá©rvJ…z*v^fQe·¹]U›Îàö¶H3³C|ýcòÙ°·K#JgJQ_Oƒ¥!£´72ËñÞ©Þ®¶, UyêÖ¡äEꞘ {iÑztEýŽ MfZ²Ò²V· .¹B)“r²ÓrJ‹ò Ìâ̬²2FfZ¾H¦‘ *3ÓÓÒ² b¹F£¨ÈÍ)-ed¥åfÄx.^²,.=?--«‚'‚Ò«UÒâÜÌ´´´’ª:•FÅ©(ÊÏ/ÌMÏæ‰Åf:x Ùñk²7/½ýD"@“\ÈÍNKËÌ.i’«4rAvZ&³¦,##ƒÉ ÙÅiY\9VŠÆÂœ´´ôÌJ6Σ\fvn~ey1dÇäàë )D¼ìŒ H©¶¡I!ãÛµr醽y%,¹L˜—þil¾LRwd³‘ÉŽÃE%åI©,âË•x.­ L*Wj4Ò¢ô´RV}NVFVãú‡-ÿ)fjìg¦Õ]+s)f*Ôé^ìî#O1\á©ÝÝ543º Þ¹f ÎÊ_xÖÅÐwß…´p)ÁLºfMy%R á™I.,  ‹ŽÌcÖ§%¥56©ºz÷3Qj'˜IÈÌ­jjoVTgU4 ^ez\~{‹*3-ñZà5®J™ž^ÑÕÛ]™žÌW+"ü¯ÆÄƆ¥— ™Y×"c“ tÝ=83)U)ѹ­}¨©&¯J¦#ú™¨,(µKSãⲋêÈþ#~ðOlRJQsOO}I±¨MÃÈ«im£ú™2#Óš»:ËS’…yr<£³¯¯¡8*³ô謎¸d±˜“R*"RB:^q §1#»ªž‘™˜V¯¯d«´ýLÝqZ¥¤Ÿ™ˆ}ÝåÌ.¢_ g¦"œ™à h†‰™hÑzl46™iѲ y%P\±‚S´hꌥÆËÏ\ݽhþÜE&kœj˜™f&‹ LL ­¶q)y.Ë—ÎÖ_b²Ú66öäìéz†ÆË Î1³ªJSÎí^¼ÈÀÔÐ`ŽáF/ÈÙRoö“•[³kɯMãÌäÁ&Üš4_;3»Z>×a±ñ2cƒ%;ŽÇ*¹ÉK¦L[dºÜ`Éü¹+Ì7™­X4oæºÃJ•äâ   ¦†‹ MËyyQGfêÍ2]¾ÒpÑœ¹+m„M¼[ÌçA™ —šn±¯¬Êݰd֌٠ìù;Y,Yjl²tñÜÛKŠVêëéÍ]tàЉåx?S('`ñb}ãe¦K–,Üy"P®©Úrl®›™š"hV§F§µvt”¦¦K:5™±¹½%ñIâ–öì„UGWW§:59«µ»—•ÏU°ŠóJ;zZócR”D:TÉÉ¥­]²Ü<¦J\'ÔtõtiJ*ð.¨¿^¢ÊOÍU÷¶¥d· ÁÉ~ÑÌDë«1:67uêô~ŽªfZ¥¿Ð4­R*iÈ2›®w2¥¾2/3.)úˆ³ÍôiúWJ˜ÀL‹6ìÈŽìf*Œ;n´bwy²×Œ)s6m³Ùla4gþŠÂR`¦Ùg28Ué§gMYQ&Ž?¶aÉr7n锥¡ÕB…œ}pñÆCWs#,0XÏ’‰³.Lb”ÖÈrZi°xÅÎ3~áÁIB™4òЖå{N)Õ2FZJLb„“íæ)S …|»•.AÔØ\YåÙ]«-ìÎKÔʲìsúÓ&×áÌdçS$—5Þ¶t£ƒ?ÙEöÑH1§}ÕÝF93e¨›?!ÁLZíô®®¬æfr­QÓÝ0‹Ías8µ°ƒÅ†¿œz.«ŽSSËJÏ̆¨@¸Úyµüîžn^uyAA›/.-.*b°ÚTª ªÍuw¨$ F*”·÷v¶Ë…M:„Úx,A{›ªŒQXYQ­ììk³ ‹ Ò£S;Q‹œW‰VñÉ(d"*1_ÑÑ×®Ôð±? »¸˜}§iRdj¡¢Œ¸ŽîÞ¾žîÚ²‚ú&%¯†×ÕÛ+­ç¨»NÆ-,(äHµÄq zúzD¬:]7êiÓäçgfçÖrÅÍrA£ºuªXu®œ[‡J&ÞÖÄ),,R¶¡fecS œHªÆýuR‘ª µ4Á5Rüw ÑÌDë«1:6·ÊŠK|_‘0ÓR½e9øÀ0Ób÷(üK;±ž–+6ž$¾/]½uîØ—åF{ý2`»$ùÔR£ L¼ ©nç‚iG"+ÎØ®]h´Ö}¿ÍÌYKÂÊ«™,ìÎ)®Ö Ì”rÞÚp•cú•ýSf:yÒÓÓóŒ×…ÚJ`¦ù!•Rnî…¹SVäJ4©§·3Õ•Ìš²"O¡Òh¤>»ÌwŸfZ¼l=ÞUŒ3“DÖÄɹxÌ}Ë3=ýe©U|Š™Äì}ëLŒÌ-=¶MÕ3ÍnÜÀLÅen–¦ÛݯAº‚Úxã™Óƒ ‹™Ücê5J™çîå43=BBB‚ƒƒáÒÖ´RÌ´¦¦Û(‹b¦$MË'\Ä!˜‰¯ÕÎïêJ¤™iÔu7ÌÍ¶Šø&ÝÍ‚]T áW¯R$¨¯c'¤äu »úúºÄueEÕ’ûþ¹ãDscçÙðŠf&ZXMfZ`h~-*Tf^«âÌT™zqÖ|ÃSÁá¾§¬g/\W,­ÌL³¦Ì²w÷ ¿à6}–iZ9cÉü-‡=ý.8Θµ$ª¢ö–ÌdåÙ…x/ž9ïDL…´6ÙtÎTŸãNŒ7àcsÌ´®TC1S½¢|ûÒ¹NÞáaçŒÏ;ÁȺ‘™ê™6«79]Œ »¸xæ¢@'þ˜åÜV‰aW,˜çpñ²×ÑmSg-Ïol v4Ÿ¿fovzÔ |l®&åŒýÔű‘‡íÍ®8X§Æû™hfN]¹r¥RG1Ózf—Q&µÖ@œºåßLTKŒÇÕkµú]]ô§TF]wÃLI}m­---]w~“í¾ÕÛÖÚz›a±1¡?83ÉżвrŽ`è b»¼¬ŒÉ¬“)áç«`1™<ñ]¿À¤’UU0ñ‰«·¢IX )³ñ÷šÔ YU%žäÖao–‚]YQFª²’×(Ùö\©ðøwbµZ«—È5A]u-ï‘{%y 2SaÜy óëÚåì]SgµvW1ÞoÄ?niéV…‡SÉS‚NoXcn¾Õ6©°V­iôÚ½óxdìaælÝl鿏ÇÜ|óÙ˜x-õÞdn¾ÏóœÓ†­þ¹Uqç\Ž b&ŽóZHˆÐæÍc²e*µF­*N;oin¾ÉÒµœ%Ös¶™oН• Нm4ß%È tÙ¶Û @®¾,ËÁjµùš žW“áf)I½´m—c=ÜOÌxsóùRŸ•³kÛHÛãr¤T¥–ÕÄíÚl¾Ïùjü¹#ëV[x\öÝ»zslµ¤¡$dûFsg׳»ÖYÅÕò5 i˜—ój(À^R6<Ûi…wºüÊÑ]<#GîÕ¾1¨‘b¦25µŽårv‹Q6UÁE«Z¾/B•3ÕiµKª{B543¶Æ03ýÑõg¦Œó;fL›¶ÎÙpË(©É]·bÑìY³çÎZäv1Y%eY¯Xq6¾¿+5/ŸiZã6oT-ÃoÁ”)3LìjMCU®Ñü©S¦,I¹uØ›Ug=öt½Y³Asç®Þ‘Ï!ÆgFDª‚`ÏM{ãÔx5²ó¬ÍM“«5i~ûÖl;=rE!Af¢Eëf31”Tß’)Gc˜OÝ¿ÊÖ_³P©g&–FkœÕ¤l%wÁSÑÝ>ÝÑz0ÑÌ4fõ‡f&yýޕƇ¼Ä`+“W·Ãh®¥µ½õ3ãmgÅ‚£iÓæ-ß´móŠ©óç¯_»}½é¼E–g¥šÆ“ÛLôWn±µÝ¦?Oï|Biqò©YÓôVn´Ù¹Ñtš¾y… ÎcãòÅ+ÖÛîØ¼ÀxMAu¹ãº¥³™?¸ÅÒ©úËw:žÉÏ 5Ð7Ùmk¿lÑ<ëS1Á;çèÍØl}ÒïâžN$Õ»V-2X»}·ÍÆù‹Ç”rÒN›>gƒÕËU §.µâ+ÇÖð0Ó±HFEE‡ÃT’J¥ÀIàÖwttuuõôô¬^Ýgb‚ÀžxàSSêÞ"¸w¨1 ÐÐP(?µñ°•˜˜5 µñTP€_Ä!¶aµ÷!ÊÝÝr‚ ™ü}h¤˜)[J1“OmÀ jÀ aËò°¶‚&œ™ªºÕ1½—¥'mìè8ÛJñ­Õí˜ niZW@KÐ6@ ÀÔÜÜ W š ‰DÜIÌÇ›™R}l—šìJ-È?l½r½ý%ùõ§2ÝÉj³á⹋×9«˜Ét‹[ƒ˜ç¸Îxó¡@E]Þ¹‹} +€™Œ¶ËÕüÚ(ÃiÓB³ÀL×JJv¯Ys§˜çÊ”jÏÕ|é:(`¦Å«¶×‹ÕÒŒ³S¨¬Ænf&¨¦´Z-ÉLpkÀ 2ÐTaj¹í'ˆpAxHÚjllövö¾gP€ÚxHêêBMM¸;†þû_Ê­ÓQ{¢ 5¤\„F™ÒÅ3-ª Ê© õ­q-Yb|S•\·.º÷’„b&ƒ®.OºŸiTt;f¢vÓzx‚K£R©€“àê@½õ¬@ €&¤ªª*2½èqf&uÃÁ•³gͯš7GÏx _BÍ+Mõsµw»"R)ëóýçOYSY1ÀL+,‹%|§õ¦v^±jNþ3oÆ™IÈŠ6š6=,g¦ ¢"+³yÛÝ| òRSRKØõÌ´:?óÚl=½Y†k ŠÃ€™’ù¦ õ­]Ï¥ú:N™»–‰÷3-´:“˜’3Ó†blm03©Uʤ3Û—¬8Pw|êœå‘Ù¹¹9)©‚:`¦y—‹Äe ¦˜åÉÕù—lfŠfJÄ™Irg¦#ÀLÔG6˜q83q¹ÌÜĤ“'ìfÍÖ¿”Y ÌddéL0“‘ÝåtÈ4ËÇnÞB‹ËWCœ¶X çàÌ47©J=˜™ò(f2X{$˜i©ÅNT£È¹ðG`&xØ 6Æ€àˆÆ3Á™yèÌ4 ooôóÏ”{,¨¦¦†rqfЉ‰9}útŠˆš¾P¬ZZEM ðc·šÆ¨3qfbÊt›#zÏ÷÷3-èê:J3Ó¨ˆf¦1«?,3I+ãçÏ6Œ¯&`¤!ÇxÚß" Lj2®Ì™¿`×Ag»f³ ·²ªnf&ï„ÁÌ4eÊk{WÛ FóÌ]„ä|¦*vØá-óŒ–;°›«o[J=Å‘ÌTÔȲš7ÕtÃᚺ`¦øÌäY³çlut´Ú°tŠÞªb9167m龃îMælv‹êÿXÎL&›÷º»»;;î7káÅT¦FR³uÉ”õ»÷[oY¶xã‰F|ln€™Ì‹Ôý̤Ùh°h­³³í¢ù3NGW|˜Œd¦ºÚ£VË V[»»ØëÏ^|µ€•ë»_OßäÔ%_SŠ™b<ÖÎ60;phÿ’ùS6âÖä.[0ÃÒöèùSøØ_\±cÙ“-{·Ï×_Áàý¡˜ b¥§§Sc@Ð2Bù©‡­ŒŒŒ®®[Š`ô5Ö˜ è…rqf‚¤@W®\‰o¤ÖŸ/U/aSÌä[Óº*Z–*Ä™©B®ÛÚ|¶Ÿ™fvu¹ÓÌ4*¢™iÌêËL5¹Ñî§|Ä2ª¾pð| 5æ*Îðsqqr:z4·L¤‘ |Ž+eåÅøžò‰’ÉÅ¡ç=ƒRJ45GM¯åcs{¯^:ízÈ«ŠÓ¤ibŸr=–Ç©ÕÂh_'§C)µTº€qÌýKªI8v1®LÚXtÜé(dRêëâì“›~Æépg¦­§#.ž:rìt(þÁ/J þînN¤ÜÝcò*ÉÉáüÚÔÎN‡ŽøÔ äIÕñƒîé,©Œ“uØé,K­®Iõw?zU˜(`ûxº89»&2 V]Y¼Ç±Ó±FÃe8:àô…Ø&ˆÁÆ£8¹‰Ï¯ð™¡ÇÎù‰åeUГөšAíÇ‚†—™@Ç‚þP… ѸqCmÁjï5frrFol.VHÐ4…t _©äÍl]%JâáÌT&×Ù†r<ûç€OéèvÕQ˜EkDE3Ó˜Õ–™†Orœ™¶:5 çŠ1<`¦mçð% iœ†—™t:]tt4µ10vú™àÌÀ)¥6F@½½H­Æ-$½ÿ>å¾ÝõkÌäèèH¹3E (úU#þY„pt®¢yK?‹¯5P*×í¿VuLAû©¹ÇEL-ƒIkDE3Ó˜ÕCd&hc iE¼ºj6W£¥¶‡Cªúj&[ØDmÑ&Q?>BÃÅLÿþ7úâ‹lÚ4j×CȰ·³÷­æææÑ)L\úûß)÷í4Ö˜ ê^ÊEhô˜)œO-VùS‹è>ú:]®ÞÍŠåâî…Ö5´ôˆšb¦ÿ¶ö8óhf ÑÌ4fõ™‰ºuiÑ-Q?>BÃÅL¾¾ÈÇyzâa.]ÂÝÁÁÔ®‡¨²²2h}©‡­šššÑéôz™)%%…r=fºÆÃP“Ì$O%{ÊO–*vFTE×ããè ¥öh8ÃM‹á© ˜ºç‡b& ñeÒMkØuÌÄ­Ì<îq„TjÅÐO[h”Òøèô;µç²úè8F;¯€y·K,ÿ15bÌÔï{Ì'õú ¡›Eݺš._FçÏSîGT ÈqIELÄX¸53‘R(ð0c†RPQQÑØa¦ÊÊJ8ŸÔÆHêQd¦ØØXÊEhô˜)ˆ‹3ÀÐd]ãÿd)M-‘Ù„—FÔã“( •º3Q9[ð9Lrfš¸Ç±ŠzÕ.¯¹Ù¡žÛ4RºfR)åâú"ã¥vÕ"‘\*LˆŠI)4%1¡‘ñì:Æ¢i†þ©ø"½*Ynr\hh¢@Þ˜ž’šTPÝP:UosDFF»U’S+敤'†Æ$g5IÅÉq¡@]ckNêCÐ1¯²(63 `3Á/$Ȉºu);Ð$÷NÓ¸¿:DùÜY<:ëØdþInLdóêúòrÊ$ÔÜŒ7Û7K­F«?Ë[ðlBUò9¢˜ñlVÀ“&lìÃ'–ðùT˜?ˆî‰™¶lé^³g¦öööY³faس?üð¿ÖÖVHçèQ´t)™äu5fzèkHÖ¨½4w;fJL„B¹­¬?û,A׿4\¸¬,Òùp?0ÊEhÄ™ ~å __ß+\’ÍošÆŸä)b‚™Kw‡„rpf*Pé.Ä¥8¶álMÁìúžý%3%57uRnZî»d&ðöK"‘h$U+ŒùMü9Ç—ýϹl:yÑÝ`¡expXte¶éüµ)L60OUŽçª=¾Éçl-›9yyRfú =ãäÊØy‹bƒ 8µ|áú´0Ÿ[ÝWNŸ|:šqt»Ù¥‹œÎ?“§Â Feù‡œvW__Ïf³kjj˜LfYYY~~~`lƃŒÍÕ3c1´I ©êêêììlê~¤4ëíÄnìÉ:ì''ÊçδâaïV`Ÿý íÇìVÏÝa€B øžŒ;"nÿO†õ{AJ%å3 hбC{îöö‰O& ±·þޱ\0ëï°<@º;K«E6+$c©ñ} ÝÌL{/2bb*RS9ÙÙ ùùRC©ÑPÌ´n]÷Š=IÓûí†Õbا6ù‡`/\Öyó¨44Ö˜Éßßì̇ÚN)µ1’º3=ñ¾‚%œmÛ¶½€a`Øßß}÷ܹs°+>}ø!êáÈÁÁrqf‚útáÂ…Ë3É5š© Ñ/²´‚™\Ûð¬àzüÜ<µÎ%ÕÛ£ ›¢Zݽ¯€šÛÞÒ²¨‹Z“Ö°ë.™ šUÊEªŸ™|¬sõò¾|ùJNUq„ïió+¢™¥kLöà_´Òh Cø¦VhØa‹g._lvBªi:ºÂ /ÃÄüty’ûÑ£6lƒTÅK~0™GD ÷ÜÃȼâ}ÈxîÆ{ùyô5bcsC™i°à7ðÈ14>‹ !ÓWbNîmª­¥üUY«-Ôï[¤ß'áQ>sCíØÓåØçqØ ;lÿ¶ÿÜ®á02BŸÛ¸õ¿ùÔv‚ƒkJp/_ÖW_Om–ÕÏE­Ø¤6왫_\2Zý^ÊÂq×JŠÑ/41°¯Ž`–мGa³W¯¦ÂÜNÖÿNa³1RÛ¸nf¦§?fŒWŽa Ž'7N¡TâßNG`¦åË{ÒÒÒÞê·¿cXhh˜›ÎLd+6ЖÉå}3Q›CöÞ¼¥ç7ï&ÌÍ» 3dón ټ›0C6ï&ÌÍ» C:˜iH’™˜Ì1ŒA\Ê@ ì`¦!Qîfón ټÙsÀAþ½±¹KÄÄ™F£×(˜^ÃÓàÌäÄÙF¤Ôã³›r5:»|ýÄú­AI§CÞÿòkmO3ӈ险8Ú}Éê}]ÜÓ³¼Ö,ße½ckHÓÅx±õÅp`^å5“m»ÍLLÿqɾýûVXº%ÕæÓgÙ»m?tÕÒp©åÖ5'üIÌfºäh³Ã~ƒÅ–l>ÍL#ÅLb~i>“xùâ&=rÌä-áp1稱?yjsA±Ý/&Y=ãiŽyúc‹ FþþCÖçá}–Ø‘¹XÄë˜Øe‚õ÷–wê„Xðlĺ8Î,#ß”ËÑ®\ƒèÿþ²÷Èúçø*£Yo”à7 àöÂþÃOî„`°WA"»÷6] <ÐGá­?`“¶û¿ŸhÁ'/Ýîy‹qç ô…-KK)ŸGZ·›óòò?žeié& CCC333¡š:}ú40†õ`ز}ýÀÌ„aaàf‚ˆ‰‰‰%%%:ÎÅå<ø_¹P__¿ph’ Gooo¸³***€½ ÷sçÎA”„„„ÒÒRˆrž˜€G[o Üåååéééd”®®®øøøÁQ $—Ë… âD)++ËÈȈbiiY\\¬Õj‡D $£@ iÂñB`ˆccc!‘ÁQx<œ–«W¯Âæ…  ìà(111PT8™d2JPPªˆ’••EFéééˆ{É(Ð"@µ `@F’C1%::Î!TVd???ˆ (_}uÍV3 ˆÑ ÌØí D©«Sÿë_x`&ss†½~²ÿRª1ìcüj~nfÖ ÌQ"##+++祂ùvíäe.,,ÌÉÉ‹ψˆˆ&£\¾|ŽÎ3ü¢äæævttQ˜L&DK@FÙ»w/D2Êè1Óh]5©Z;›Í5HªWâÌäÀhØïG0SŽF·³ÂiŸg¦•Ö¤ Ã>“j2ÏjÛæho¸h £î“™4jõEwµ b65)UJÜ!ÿ ¦RÊerr¢¿Z!o™J˜c´ÜCÐÔ¤ >ª”C@¹R¥V) _™ÿ’š’ˆ¨TéôGÿCkä˜éz„˜‰‡!B|„€vêúß÷ymØ3©Ø/CÆæ ö–êÃÆaþØÜHlÎW&¢ïæ÷@ÕŽÍ ÃæÅ TØ¡rGhÝ䈵ý?Ðæážç+Q6 ¢ûaÆìí)¯å.FhùøKàsKf•t gnìάDGÇá]Jÿý[19ÿJ&CÛß hÇžþ'Vy诇|.õ}ÿ]Ï•'MÇ‘Ÿýö\7ÇE÷8¼æXQ?ÌÕõôñÔOÐÀ|¦ 8……Cç33™šö$&¦ÿÈV¶ Ãþ†aãÇ?ej9oÞPþkcsPÇ{;{ß&¹Â_D¸ ç¹ç^7îéI“&A >ååèé§»ÁüøH û \½fjð_0lΜSß}÷Çæª(¡Ñc¦³3ITÚùUõ 2‚Ùr|M¦=Eüá>\¼uÌÖ6ï¨ß·O3“P©5ËmÝ›!Çãh4ÇÚg—-(­áÒý2Ó=J%çòDôŽ£{ÍL·SÑ·ä‚TUAìðÔŠ~×ðVó¿?17mê«­Å!ƒ©D_4£™/Ĥc?ÿãH‹9=ÍGX¿©—‰}zÛô—šÂÛoÁL5™#OýJ„ÚÚÐ|TØŠN!ô.<}v¡5¦Ò™ŸòŽ»VŽ}¾è_%3úöBó{Ÿòjùó¿ïˆˆéÈ×ÅDj~µ…K©D{ßò†2˜}W½’ðÉÍE OÍÑb/Ø`Î? ÑäwÙÓ°„&ì/bìõ]k”‹{þû¿t¡ç×w8à‰ÐŠ#â>ºWfš?¿âý÷ßûí·›ÞÁ°÷Ÿ{nêÔ©Ðü¿öÚ§“&½ûÎ;?üq5™r[[[v6Ø ÔË Û¶¡={HçÃàØa&N7r…!™ š—‰ig| «Ç°^x¡´´ôóÏ¿?þÝO?ýtܸO‹‹ËJJJ L%\' ûïd .<Ÿ)1½óÎP»t‰Ú;B‚f‘r=f:ÍÇ;–ÄJíâRîÒ¤ÐZ)ÎL6E¼ƒaW/Ì”¥kÞ"¶Ýׄ¯/À—ëVgimÓ©—Ø]93 hf)3Ѻw23Av—P(ËÌÃÅ™ $‚V¡<„–#”@íD[ódØ«ðœúÎëa—|‹åÏù8ò_ñ(äÉ…ñØô­Ÿ%‚Ðx„ÞC(¾™Ç£Ýñh6 G×™©šX„æö À6$#Þ˜Í\„žCè„>F(â"D¾—€ÏQU«‰ „Rúé_;{wÏ®öõ+ÛÓS¨Çw`¦0„†Lgèy>kÉL /¾D_>SŠ-FX.ú♲,ì{°›~+íè@sT‘à?`ÙjìOà°XÝ—ŒÐÿQQyÝ=3µ··¯^}ä‰'ž ‘ÉdñññŸÍ Óñð@?ÿœøæ›o=ñÄ„éÓ§Cø3f<…aÏ`Ø»o¼±}ûv³|9Z»– þp8væ€ÇÄÄŒÜ{|ÀLßþö7“õý}H}¶ '¢'0Ìï¹ç’ 9Ÿ Ê—râÄIãÇ?óÖ[oéééÁß  í3A¸ÝÀ ñõH·@@í!8pÃóÔ°1SI‚ŸÏ•ÒÆ›^ !Ìt’`&‘BkPÄ3‰‹¨ãKlgð\C|Ïñð!žÌææ 2»}Ägéx2ݺœ¦ÝéBpƒk:§õ‘nZÃ.𙯬F™™ e¨³àÒefì¸H8®!dá&µ¡uåhæc9aþP;ŸÇV}ƒÎ-F§Ÿ^«Å^ø|Aù7ͦ‚£C]E(]g&ðyë<Ò+@/"kÌÅá…ÃöeCh7Bß~Wgé ÷ÙXÔûK9rìÏW±%P­ƒ€™¢ˆ“£C. {{| íKbìo€™êžnQ(›I¶2Ÿ f„¼OµCÊ`+ Û,°³àˆŒDÀLˆÄÝ=3>|š\rV ÎÒ·+*Ðĉ¾?ýô„|Äĩ,Ű¼óŽD"yèÌôÇ0Óºuèóϯ3˜+†}ôÑ|ðžEÚ·ïúå¼>±ŠÄûööCW騳çËIŒŽ†‰™ºšÎ¹zi;{zo˜é˜ïXjkMóù+ã¢*ðMË"îá«gÏðñ .éºæ õÛx83Õ7i7¦H­ÒÉW¯4ö•]¿ÓÌ4R¢™iÌj”™‰ÔØ›ƒ§±ËýL2„ ½Ë Ü 2x3ëɧГA¨¥ÌDOÿÚ^}¶s ÂñTõ1È¡q}ϯíNíÅ£èSIÞÀL#ô·7”Uã>ÙôÄÉ_¾ÍèÄ&6`oz_Â{³@3‰¿w£înܶO+×aÏ÷aã¶nÅ=…yÌ©1(cÜÏÝØ“6¿äoéDÿND¿p‰˜3ý—`¦ÿö¡—ÞU`ÿñÇŒžø®çl Óß}HÖþ¯—¬@è qî†™à—¿oß¾§Ÿ~:22²çŽkZ3çøñ½ö¤hPký'Ø~²lüø‡ÌL×®];ýL #ÚÏ×âøñãã1, ÃtÄ;qànkk+/§˜i°3Ê”)SÞ|óM¨ú(/B£ÉL‡n\ím˜˜I^µËÎÞÖÞ)·–ùƒŠ8i@'Ož<"Ä!I(Ó¬Ìá¯I.à™m.c :ê)Àg¹¤h[6&,u`ãÌÄ‘j¶$7X¦SßßSÖ²8‹tjZ­½VÓ°Šf¦1+š™H#dƒT.„¼ÚFàÉèÔÅX{ÍsÔ{­øŸOUaÑó˜î½—ÕŸÖ O¤hB¯¸(¾zñ÷·‘†2ÓQ„¾FÈšÈeú_ ¡YebŸ~ýkߺ¤lÿ1¿Š„Ö Ô?wWêè@«æÉ>þZ²SKõ-ÍGxwÑ:|òÜr!ö–ÓU_sö„ ^Ä_°A+jJ0“+BïM©ÏþsǬ‚±EØ\ÎøNØJßCˆœ’º !| ÊŒÐ2Âñ¨ë–ÌíÑ“O†¥ÂïŸÉd¾ôÒK_|¡/ !ðï2Ó¤I8RðÁÓod¦ää²Å‹23‰Åâ{ngGL2™ P€Ún‘ÌÄår1 ûø½÷^Ű¿ÿýï‰ÿw™ ÔÑÑ1mÚ´W^y Êkt™©®®Žr&fêínmiïÔˆßzÁNÀ&÷|0NФ^Â_”QJô-mdÔ STm™ÈݘÉ7ȺLýSméfiµŸ÷ônZÃ"𙯬hf’#4‡èRÇV„Ž#Ä"üµÙ!ô ½9©áŸX¥{e7æÔ‹/Ç>öU„e¢WkШ¯‰©N+ÇyCc™úÔtr˜Œd&ha݈ùI{‰¾z¡s¾º9/e³ÆÐh®7Ãà€ŠÓG‡<ÝûêîTMŒëíƒ:’`¦övôñdõf3]Vz·ËöF(Àì—³ l¥Ø—ž'©(‹€TkFXzÓNÅÛ°gþÏÆ¢œ76úö¡ˆ`›ˆ‰\PSÏBh áó¨ëff:ñÆo¼€a™4) Ü“&Íüúk5´£wÃLÏ>‹;Þ~é¥\ SaØOöÕ_´´´<ô±9¸‘Ç3Á-?rÌ”›‹tºÞ%K–,X° &FþÖ[™P¡‘»à’åäÎëÂL ¶¶¶3f¼ùæ›P’>£ÉL@ꔋÐ01S³äØ¡ƒgΞK.S>7 ˜Éµ±Ȉߤ2‰.}~;šK,5SZ/št±5ûv=;£Å¡oˆ!­ñÄÔìÁïÍ <ŠAú?Ï`oCãì1ÎR†½zøéÝÐ*ߥ›€™> ˜) ›¬À^Y£Ïfé÷¡¿õ¢Þ>|ìO,Æ;·áMØÌí ¬Ñ3*Ç>?‰mø/–{[3îp_&BO pŒ#¦@om&|iÝÌL“>þ­‚X¼ì1lÞ¼yææš»d&Ðà®™¬Ãz322Ÿzꩲ²2ˆwï­Üpê>Ù‘Óˆ*®·ÞzË××Ü÷ÍL€—ãÆõýôÓ”·ß~[(ÎëûÝw¾_‚{òÉëï®»†ôÀ 3ÝYÀL$í@õ¥Yxƒ¡{u.¯îW×{xï9$Ƨ:EIZÝ}¶;ã VKTÖqÅëÒòHfZÃ’ÏeדŸ¨+ÕèþÉë«ÖáQh ‹î™Ä Ið¬”-d¯Ùâ#0)¥´¤„5¸#PÊ©irX¸[©p¸"›’«+´_×%)(( ˜I)ÎN!2IHå]Ï _2Þ¶5ŽÂY}øJz%á¼g5†Nž:å¿¿X+ˆR++K™Ôâ`RJศ•éARÖF ×ëQn/•”SÅòÙU"j Ð{Ð(3“É„ªíâÅ‹‘™/,:°BÌøÎ"^õ—AMŠÐ÷Ð4®C€/ÀŸ-âaÍh=æÙ…MøËžƒEÂß<ì;öþeÌ„½ó‚µöù^ô<1ù æ$B1hÊÆ~{}K;` ùŠïS7¾77 ÈbAŽ¿4#cÌb½=Kð‚•Öãon?}œÙ=UŒýÛ|?†|<çr›M¸n# À·JªE¶;;×j¦tã Jgާ/¡/œYþ§p¿‰f_cEbìõRìË—lUÏüЖ1î§W O*];Z^”SÄä'Hù*±<Õ Ÿ}ugfšao½eõÁ÷ÀLƒ5°¦ettô{ï½uµã!) `ìô3Á9SJm ·Þ|óÍ©S§’é?3ÁåÓé:!©Ÿþ|Å ì//½äãã{ÇAfÚ¿?å"4zÌ´OÚÄ‘(ÌâêM޲39xù¢¤þÐÙÝ.|ªSDCËÉÓûí ñU¤™¥uLþò¬’™LëÅÓkÊ„3ku_W š™†O÷ÇLY¥nCÒ½÷­³;`d~Z"±Y,~ƒDÁÏ[¼xo…@B ªOíÞwùè¡Ë•ü¦ú² r¸tCÒ`f8زeKRRÅLÂ\ýÖ °‘žÃ4 xlvG®Ô4òëX,¶¨±n­‰ua«ž×Pæä“\&rÁ_,'ÀFÕÄçòÙl–@¢7Dàp… ™X*SHdj•¤AD„SøÚšOŒ56p¨oÁs¸eo½Ñ¦.þn‚Z¥äÕ³YuÜ&nö¢Å•‚Ɔøé*j –í㩚8DêËx*y=^F¡R)åÕ×CjB©’Ÿé±ÙÁ¯´¤H(“ ê!x½\¥àó„uu,nu–n§?T?S+Ñ«K@Àlb¦s'±ðãIÝ ú°}׋ –kgaÑ}Uƒ ÑŸ¶«ß™$ }ZÿÅW5aØ| öÚç¯5Å<5çO'Õ¯í”`}øD%0êÕ}°Nô"a ôB/b $Ó¡‰Ä„'‚™p„¶ ôBSˆþ§ˆ’¼Æ@Ù ÖŽ÷î44 b52þ¼âï^Ú×Äè5„þ…Ð7¼Þ“Ùwþ•Bþ&…Lï@k^?ÃÀ¾Ú` (BèPÿþßö¢_m4¯½#iÀÞlÅ&-Ã|Ža›yØ»Ø^´Õ<çÞ eÆZÑ_–)¿øJòŠ ½Û‰7áœwŽXó ˜˜é‰Ÿè j}=˜©¹¹ùÛo¿=vìµã! ŠA¹Æ€Z[[G¨« žÁþóŸÿ´õ¿Iñ€Ì$À®_Oƒ‹°+öÒK¯À7n™ j`ÊEhô˜É^Ö Í 4hæQ³3õ©ux¼¬”ëæ¹ã`S ¸Cù-æF§öæK!X…D¹+:Ã4‹úxÊh³¨^3S‘N÷¿’¾<ŽY´†E÷ÉLYUÁyµ‚ì&Ë6š:²qÑÎ}ÇW¬ÙÆ)úé‡Eg¢ É`ù®sWí0]¾ê|`À 7ó˜ËÌdmm}íÚ5ò‡¸mÛ¶òòòÚÚÚfšüåÏÆË–-ÛäzÂÁdÝ^÷kçŸN¬N»æuüÀ£ƒ—-fα=||墅þ—ìÎGÚoÛ}Ìu旅áx+è§ÿ-öpÚ­·Áóªë~ûãÇívX^ w?r5ãøÚY§‹jV¹ïnòí gítÚ)UWe?~|÷ÆÕùeK~ÕsóTªÔœ¬Ë«¬ll7í‰* ýñ‡%g"7mÝ­¬ÏZd´m©]À »cǬ·¤Uãk‰å‡:m>¼c™Alô‘©ÓVsÜ®·òx¢Ï¶™K6ÛØX…¦x¬Øs`íò}~~¿};ÛÅÕe–ñn¢ ·ÕŠ™ö#MðL‡ŠÐ„Þûµ½ ûÂ;k"C‘¡SØ:¨+w¿îôòËÊ:샟ø=ƒ0 ¼pëìAoÅãK3£Ò ó%^»û7BNMhüªÞEŸcÝø*o¯Î‚¼€ðá<à'FNUM'_B€8†Ø3½üƒ’¬Ä?þQu‡ö¦·!Ì‚ÍþoØ· ú·]ÀV‚? ÒÒW±¯Ð±\²]؆.ÆþýÄ©À¦LìGðoÚ»Þ Î}’ÕYø°#œ¢íÄK EÄßGW73ÓSÿ†õkÓ¦MPM a¦?ý ÿòî`{â *µ!üí¨Ê AÂû¡©¸¸xÈ ÏCÔ'p>©{ÐŒ¹ùP;xÚ;nܸàà`jãŽÌÄåRqú ½þ:åöë_~d&ÂÞNêwÉ0ì}ìi K­‘c¦„„sq3Ù*º€jÅ2‹…· ‰7Æe<·ãVŽòVp‡Ôë–-öß“ÛÁÊ%Ê=‘IF¹©$3Í‹ç•ç±xßR޶Y/«']„c­aÑ}2SJ¶Þ¼%Ë7ðÓMŒl–š85xY­‰â䙘"â41ç´Û~ÃÛMÍVGæá«mÝÌLðìèáááååµuëÖ¢"xüÆ¿Ä4ÀLÆfÇ%P>µæ²›MAcSmòa‹¶kM–é;m³‰Énü³¾®›í<·ŸöÜþã÷zË—/ß¾÷¾~<+ÈbÇ•¸bÙR›•ú3—ÀŽåÃr³í½¼Nܵcýîõ©xMð±ÝYÕ 3£½~,Y>{ú”à¼bË•6äBº„Í+6¸»T+(0^vX¤Q…Øépú¸{L¶™ÍÆesã)oˆªÂ¿wëílÃÈ™‘v9oغ/T­©Yÿ³a^æÙÝGbBŽï>sÖæJ&Sà Y2{ù’•'¥Š+s*—ÛéÀLbbàl5,kˆ Š^™FÌdúǯ:¨9Øû ÷ê6êñÇ~^˜ù$¬Õ ÛþžØz¬Gœ/ $ê$Æ¿¶›+z¡¿ô'pó2fñ×ö„¦û¤ðÔüØfúpÁÀô‰¸PoC…XG¬¢ ÒººÑ9/dýmjXrqAŽŸ8èýT z¶ÿXàNxjWó²›’íAs3:G\Þ÷Ú¢Áû„€™à,‡Ì´ÿU·ó ×h1Â!GÌÖ³þ;Æboÿ„Å]y|tò5Ç<ì»q?÷)°WÀsvêéùƒÞ›ÛML tuKfZ¹rå„ œ‚j}¦ÔT­ƒÃufÂgÑ3“Û-5ä{sð öóÏ?ß7(<¸?fÒ×G&Pn`¦öööÉ“'›™™QáÝ 3½óNéÂLè­·®3S!†½òÊ+pÅG´Ÿ)ž|Û¶_#ÎLW¯^ ÅL3ä’Ee9UÄçVR4ÍÉê!ŽY´†E÷ÉLD?îâg˜˜;Û›Îó¸¹nÍqsõ “ ü|—Z™Ÿâxþr‚T®T55†Ú´zç‘êA)¹ººÂízáÂ…W:3ÓüÙ[‚#AñN6"‚™N¹[XØ_ôøiÖãE澑‘6›×DûìõŠ8¿ÂhkxDdJn>è6ÀLÆö'm v‹ŒŒIä5Öí3Ò;_ïk¹ôdÏb€™ wÛmßz><ÂÎ|nP~™“ñ²“©y*µ†ÎóÌç–Qee«f˜„Öªê~ùqQ=—ifl{îÀÊm‘Ñ õb|¾UÚå]ëƒm2ºâf°b_„§¡õy~EÈ ‹]®ûv^=jºå˜ïþÛOz¯ô¤™ ”BL^†ŠÚ~-BiA:¡_ âùFÑ÷Ù¯ºgÚ¦õ¡Y]hËÜÚ_±”'cº¿3ëýðWõ¡ö½}ø´žÿ ó_bN7°ÎD‚H.g¢O2qfAúS$ý«¼÷ ¶+ûuž.Òç)bX0Œ°*‚Ÿ sˆòÿ:¬'ËŸšú&úub]è›É…‘¾ók×&„6"ÏpÆ@ÑÐðŽGT73Ó¤O§2Œ[~oŽd¦»oª†0´èÿøÇ?òòò¨íQ9¿gŒhX´,+CÏíү¤¤$8ãr¤îfl4$h€™ ™xÿå—SˆÎ¥^x|ÌÑùLC 3zýL;5=@Õ"©q"oZ¤$ºo±WÜ\·Ù«pf ¨V¬^gÉ`%åÞˆð%3MWJ—1²ÊDøx\œªeuœ(’O3Ó°éþ˜I*•‹šð#4Ji K ׿çW²ðîC~MqI 5=ZÞX/•%øôgµ¢©”QŸŸÏÔÖïÝ»2,h°)fR5•Aª FM§I¥VHxüƦڲüB£’YWSQû*YÂ&·A"ãÖ–ÃfiŽÝE#‹Ó¨QÉkk¸*Ev–ˆårnU•H¡i¨¯•(¨ùÜ|ŽT!ƒ`" B•TV‹d )¯¦¨¬Z­Ö(dˆ[T^n^uqI­@žïk°ÓW¡R@¥BD¤\Ü(£NEIA£¤FÆô6Ûx,/Ÿ!”+{ªJ¡TlÈ¥º¬8?¿Lg¬Vþu,í¶zŒ™‰EŒ A3oE,bÄCèS„wÒ|‹P$BŸŸÂ–šÛ‹>´W½ú‰ìGý¦ÿÎU*±—¡î|q²&ŽÀ,sb,ˆg7IB­ã¡§Ûñ~—g}Zržü>û‰^¿B¥F²Q&Bgªì„gkÜ&öáˆx´†ö6Âg)A0@%81Ä«joOh±Ø+_lèF_ÛëŒÙð°w%2'"–H€è߭Úõò™^l<û4,þú÷æÈµ+¶€´~í¤†#½¡„õèßX1${~Ò*¬ëC˜ /6œ«Ùý‡àÔŠže!{92ä¡Ä^TFL WL«ˆtQÝÌL{ÎÇÞî½ÈL ??¿çŸžÇƒŸÞC¿¿?”ŸÚxØ‚ÚþÁn03•——?÷Üs—/_&7ÅbôÉ'¸½óš8‘ro俆L»Á…{÷]`;Ü][[ûâ‹ï>ûì»Eii)øüßÿ!-æcïÌ¢mwt$bSÓ°É&wáCsC€Y‰XM. À þ9£| ž€FRŽý;I…ÙIüý¡Ÿ‰ñ,HôBŸ!4˜M¤EZ@ƒ0P†wúÓ{îBsöHó©¹'`o @x&íx·D$m &¦‡oƒ”k‘Ñ„ ½7cÿ'¹á½[rÍ@ë«]fÀýá“Õ£°l|ä!Ïô‡¯àÇ~ÇŸzI,Þ; ;Õ¾ˆJN®5p÷xƒº™™n÷½¹{b&##d`€,À™iéRܽ~=µëÙgŸ]¹rà[´Hƒ™iáÂ…nnnÔ>Ç¿Y†XÖ­À¾+‘ë3ýõ¯]×ut5zÌdÙ‚3Se£Ä,™µ E^…¿$>·ºa—ÓÎÝ:œ™.Uˆ694lO­‚`¥båþ«—gdâÌ6Y!ؘO,ÄkÝ^€ÏÑ(§º»S›éùइËL´î Qf&¸îáááÁÁÁ#ÇL9ÀF,do%ùàyé‰J|í b€É ¡Åü…€˜¯ˆ%¿ÿLókûŠ…ýÝsÞaÆûì*úÎ=“†*°Ï  ÄÖã˜õ ñZˆ;bxþöT2vaNèÅüoVð`W.‘Å ’9*AÁǃ¤†Àìˆð`¶T©ñÙÖ¦@$^èÖM…ð"Ã{!BÌÿ±¬¹€Ï¾RÔ¢' H˜†U‡7! `¦eã} À"ìo.àyÅ"ôÞGõàs Û (öò»Êrìóÿ`Xž EʯùÙk«°O äÇ¿éà\Hf~Š!¢Fˆ™6oF7Þ`¶ý×µ¦¦æÃ?¬«ãàz£}¿ª‘TllìØégÊÈÈxð5-˜ š{ ™éÀ;{ö,åºHf*,,ê-//§|GFgΜ¡\„F™öJñ±¹Š‰EJµiïg&½ÚÆ­N{lZpfò*L>)³J.‡`…R•íUß)øØ€ÑT©pGh@V=>ŽPÓbžq‘è†kµ³ºº"Zèùà$𙯬§~¦âúÿDèÿvŠdØ«Bì-lúµŸýþõ¸ñq¨ôï_ŠŸ¬Å7E¨ ]òêúÏÌÎné îÅ_j FhRºð<þ¢0Ó3½I çAø'Ò{ÿbûÂ+Ú6ìŸ'–aR4®=I¼Úö4„)CÇ&nÎ}â¿WZôÈoeˆAC€°Oƒ’sÀ»‰õ¢ÀÔ=E€¤?‘˜MØüF¾mG†Á³&͹L´[øttNÎL–_&Ç`3/?er!OyêÌôÉ»UàvÀì±Hô^6õ:0Èe¼MœÙ¹óxb'zŽ˜çg¦—øð ü#¥b&RP³QƒdllüôÓO·µáóÌŠŠðOԑnÄf³‡½½oÁ™¹?€ûç?Q4Ü*Ä•'OzbØ3æææp>¡±ËÑ3ÏÜvJþÅ`0(×mD2àË·ß~»v„t'§L hô˜iCgPyƒdc*sC'¨g¦©uâ v´w€ût ÷ïÁÚmIøÚßMê=~ÉJ7€ÒÌF‘mXP*Ÿf{©Rks–`&V»XÜí«¤ç6=hf³z<˜IA,àH̶@èy|+û«A˜ Ÿ'TÈè]ÿ ì'_Ìtǟܦu¡–TVÒ;óýš¿6à\”üÁú$ùM4ž‰ÅüÕPúF/÷ â-9p¼)A“~kU`¯ƶaMTÊP«»YìDìµìÙ?äAaȽ=/#´´sˆý¡÷ ó&º¾jQ´ "‚vxñ a8e_ÝK`¯EFÜFt A:¶ÈøC¿>l\öõß²ðoáýE‡>á _>^ø Ä ƒÿWØõãGœOvÊÿÓ‡ÞÊê|ÿï{̃½ÿ¯OKÞh£^ýû„a‡A=ú{/ò!G€M83 Ñ«>ÝÌL¶837dgKóóá ú>™ CšÔÆ uuuMŸ>ÝÊÊ ’ª¬Ä™it÷õØa&83÷W˜>@¸ã­·ÞšJ¬>Š$Ãd¸ðîºû;DÉíVÙê×À·S˜L&dUá="R˜Ñc¦uݨ¬A²5µ|gam ÁL¿Ö‹×:9o'˜é£î©Í»¢ ÔjM~“z÷•s?gg@™Z3£V²Ç3$™…¿BîU.·O¹z’˜ÛÄUjW¥õx5áSÈiÝ·hf³zÔ™ ê‚!Æ ô/p­½…0°(›sð•]ãøx€Õ'‘{bìôÄî×:ÑOeȳ†ªw²aàHÑ•JË@ÅãþÝ…MørNÅ7=x·Ðÿ„pC8üÍCŸÔŒ‹èÃ:p²ëSâýp¼·‘ÿÃòO¦â]A°ù$ñZÜŸ 7$r­ß¢z‰èp" ‚AÒþJLǞ݂?ô9ú7׳»–v•÷â+qïX¼ííB¯uáI $Lj±Ð¬§£ü(SâIAˆn6pC8Æÿã’PZpfY·#Û'áHó±o'¤âÐI–œóþ6ƒßë3ŒP _DL0u33Mú”ñä“83M˜Ð0a‚tÂ¥JuŸÌ¤Óébbn=nYXXí.$;šÌtõêÕûëÚ ÅÆÆÞß«sÀL¡¡(00ø‡ñãÛûÇ5w`؆ ›cî›™œ)×m4ÀLPìÙ³g/[¶Œð999Q.B#ÎLY„Ξ=kÑ‹3S©P²=¹Ä!¿Ê¿Ÿþ_jîzl{ ÎLž¹UsJ´[Š X^“f—ßÙÿäeƒ»I¥^"·pdáK‡ŸbHc/y4àó¾ÙrÝÖˆ^w5>´Gë¾E3Ó˜Õ°1“ˆíës)¹Œº‚ŠFN€ß%Ÿ¨\rsˆœ™ÂÃñZj»ñ©ÙдÐçD3ïH͸þ†[‹% ›ü§Jô°B²[ÊÚ†6ï÷ßx´ ¡Ue(ûªÞ' {È(óˆVƒûš» åS¿Y™ ôË@²ÄtrPˆ9R'ž8¤¶‘ð §-$­_‹Ïì&Ðö#ñºß@"`ï}Tà€X†„ƒœ„~ÝRÐGãkvaßzFˆPžäÜ/°‹}LD‹û‡†¦5G¼vèpf:œ[¹¬Vµ)!‚åÊ4V>ç>Í+Tj4…vVjíá¤k,¼Æ÷(jp>â&Æç}WËuû‚$ˆéP´î[wÏL´FYB¡ ®—Ë­«««­­Z*///((ŒË¼{fJ>“PQå±Ûƒ¯ù ÉòÎeׇ»ïJºÕòPÈL|>òoÒ‰MœòŸ4¬g—E]Aèï§5 '^ûû ևωƛü3hÚ¿N½jÇàËQ ¼Ñ‹ô;ÑÂNü£³× éCíº—êw¶w"7Ÿ†°kèbê ²'û§ñÀ&5#ªß¾&þBH¨y~#Rc>Q4UKˆñ8ˆþ61뢓Iû ì;ø Y€½IŒß‘ܶ¡æäø‘ßOXÆ5Lßgâ2,ß5›˜·Žé_'ucOr°÷w„àgÀŽ$9Ù¨!V Hü×þôÈ·¡T‡ Ìñø à?b™ØÜs ×»Þ‘!·‹B%ˆjÐ;õŒF”™t:ÝÅ A x«‚¤žyæ™ &bØDccc¸¿Àó‡ÐÈ}a%$$2¥6¶àÌÜw?Óµk(88ô¿ãÇ·õ3Ó6 Û²eëƒô3:D~„z¨"#ñ¥ Àžx_“‰t{z¢¯¿þú×_á6 ù"êèÍ­éAP] ¥v~…§]+.Uàë3}Û(7· ڡ™É5¿t;_¶!ÿ.oŽ\»åÒ¹rÊdZ­X®^§Úv<=¨s.ä¹_=àD|n¥R®u /sh¦™ét—ÌDkô5\ýL×|˜©¡r¤Š‘óŸlʰ/>Z)z¯Eô¡7Ä8I|óF)T¢5ØGãÝzɆ,ª%ÉðéÒ³ˆoõË©4ð9C`u|CìýG Šœ8§{có<ÁìbVµýÙIþÞÜzr nˆ‘S É[GÌ­N")ê b$î¯A²ÿGx Ï„=KÌU‡ðÏKàcpb#16!"$òBû´(º7–/í¿Ïa6£YïGýKÑ»mx:¯`÷± ƒè“3ÄK ¹"¾åçù„ˆéC^`ãêÑ eè×¶7&4xbv™ðoAR»¾x£ ⓱Ȃýy¿|~Hï„Ä_#NÝ#§e&7µÑ¯f²··Ÿ>n\#†¹`ØôiÓ üˆ2“D"övö¾gP€Ú¸ÁÙ#ç3?þ5 {ƒ°Í›7Cj2Ÿ )×jkCC­¹Ê1iÒ$¨©pê!…=fZß…ä C(Ýç—ïãVê]‰/~øµH±vCÂÎLΙe‡Y²õ±83e+´/ÿ<«F¬Ö6ÊTKrÕ»=³¯TãQöp<ý÷8K‡—É5)™ š™H43Y 3ÅøŸ©•Š‚ÜˉÚÄz»T74±cŽ_JÅ?h3D÷ÑÏ´~]ß±¿¹xl›Õ‡=ÃD³RÑë½è!z~²ný;ž¯êЛ—›y>õÂÙ}(•˜04ƒ ‰ç‰éÛ `ð¨M¾Ž0²+(ᓬAEE(ã‰ÉP ŸÃVÏúI÷³3A,ìïIØ”ñå×!ì6ŽÈNèì9EL$šÞ¿€ø$b9ò£©À4P<°×‰ò@©>'fb…ëŒC”‰á°þu2a¯112öÑw)ÇB J”ÚŠO‡|†èÍ‚ ˆ(@s À‚(VÄ›€à ç ªÝ™D ¥†(X/zqª&ûÅþ/X$Â2ñ`¸e#oÌ NÅÓ+Ú±>œö~@h3v |ž5ø"A8¥Àdä™+ó5¢ÌÔÕÕ‰PýfzæôË/½†1ú»IÀžÄ°~¾øâ2Ç;Ìgæþ˜é‹/9IÌßßÃÞŸ4 ðâÔ矿Of‚‹N¹îZûÛßfÎ$ïžaÖµ F™6¶#©J[$lÚãçYt¾ï4úJ¤Újž³SŒCczéµêµ±¹*&S¡[wñâ—Y\¡B+lRÎÏU¯¼”ï[…G±Í¯;zÒz± f‰Bk›h/Ä‘‹Ö}‹f¦1«áb¦ºìk{œ]FK4œôäâ’x—£ŽÝJêú;šé^™I @¯»BKs[…iñFœô0kY†Oy˜¨ß¹!g„ò‰(û‰W½¾½iÝj|¢BˈäX›!1݇´NµÚ`Î+± àgoU3…có›^:¨ÂI¢ßÞÉ_Ntè›À.ÿìw©|J“>±9‘À‡Ay ®Kˆò€‘Q`/{e¿'µìá&gGc $ªëklz­ÿ+.‰Xë߀E® -5Rrdôw8Ø l1&¦ÂàfØWà?ã?qX'åùÆèÆžÜùW¬ß„#}a <‘Y˜kDúcS#ÊL­­­999ÔF¿€™^y<ˆ3SÇÌ´gôwF™’““ïSFB¹¹¹¸>ÓĉW¬ðü픑åºkedd<ÿüóÅÅÅÔöðéÒ¥K”‹Ðè1Ó–Ö>±B[ØÐä”åw1ÿ³Øè?Íîµ;…-jÆ!µ$ÍR¾†`¦ ¥nï7Ùb~“–'•ÏÏS. )ð&˜ig>ë óÎÄ´ñ"¥vkáûª6ˆ*Ôéªuø7éhÝ“hf³.f‚” 5~Ÿ4%D'ª‰Mð ÷ Ñ=1S@zñ+ôÒ{ª+˜¡ fýë)Ÿô íô8„&W¡˜ì2>ÜmG`iÀƒ)ñi”ñÄ·ý¯ÀáF¼óEÖ>à0ˆò É7=èçqé]Ø„KÏ.Dzиø¾ñν€ ÿÄä¬#ÒuøTž 1÷!Áa꟱DN ’˜ÒdDt#=‡ÐeÂ2%gb¥EZØ_žMDiÁ~"æ˜Cx0`5H 0ˆ,À_òí?dr‚6xÃAàõSÂy€D̈tÚž– ì úY€#RGá‚}<áH×ÏÄ&”/v ÿrïXá¸+¿~žBr*v=1¡ãîþ£ÛCô«e0J– 8•,yh`#ø¢ö½hD™ tsà±¹C‡}ƒa1Öa 1ìí·ß†ŒèØÜØ&жøP½û©Êáb¦û89p_|ñÅH¬Õ4¤0£ÇL–Í}2uAƒÌñZ†`Ι*‘R£™ÅhvÙ̵æé òÞ›R’oÝ´:g¦t•Îü|ÀäG¬ª—4-É“¯*8W…+Xæ³ìÛ½Xž _¥³*ôtËÆ× mïè8Þ6ÌëÀc8¾úøc-𙯬†™©óÀo¯»a¦#^ ëñ®õØ{f˜· {u+æÑŽ=ýÑç5/³¡íz±ÙËP™ Á“°B2.¤A;M®* ¡!ƒ(?[ùƒlá/EHEÄr…¿2´äWy £€æ¯DÄë+FÞh¯¹A€W €$ ±j‰?%@KA€—n‹" 0r'ËF¦ðdÁÈ¥~:úçQN°w‰7ÿÉ ˆ¸¾1±àÂD½øûgà YÈ%—XC|B3ßÈ€ÓhòB$p› q!$Ö‚£Õ‹Åc›rôq>šÙ€0cü­Ãdì7¬aæÈó‚¸o'_Ùûí«ù¯Ôô’S¸,­¿l5ý‡6‹˜4Fî…2G6ú_üQf‚ˆP§Qý`¦¶¶6Øû¯Ï>û3þÎçˆ2´‰P~jãa ŽN)µq‚K°~ýú;v ùFïƒÈÑÑ‘r݋ȵšn7ê¾µoß>ÊEhÄ™©•ŸŸßvmŸPªÊo;†§ùEfžª+TšŸØ-Ǭ¥;8øïž”’b7ñ*¢Ÿ)MÝlîymæ«A^'–.Ë•XÇ圮Æ×ØPPg¿ÿ€ñª]®Fgac—ÛD2Óbe·ãpÌm²mooìÿ†Ý¶ŽŽ¢þo³È5|UÍÇN43 »ÔüÌë¶§Õÿü®ú™‰y`íZ ssóU«¶óO©,ÍÙºÙ꾘é÷ugfj%æå|ÆBã¾íÛùºë.ì`,¦—ˆMZ:­ÕÃbŸ÷ÖAü"ÂYä/ÄÄ—û[h0@ `‘_‰–{31g yn"<§ѳˆ/¾½ÖÏ"3ˆ…‹€3 >)ÀLf„ã=b!€riÇf‚’@.׈a/ ‡½'’‚¿àžD¼ÚÇøÜFp Y`È"†(P†Ü Áà`/»›HUô3Çi"(9Ù"…U-At =84¼$]è%#Õ«ßÊþâŒæ½‘Þ‰MœûBYB`&À,#„>HAÑf%=9»‚ô>ŒÍǾ7¹«G{Ÿß÷ïߊ±f„ÍC¬ØSo¿&8ú§-Ãξló•IˆL‰U^!Ò„¬É.((ytp~ X1¨Jݢߋ Iௌ=²ÌMÝÍ_Ë×hñWJ••­ãÆ¥Oš4 n:Ød2Ñï­­xÿ‚f‘rÁ™¹ïFžè€TD¢Î´4ôÜsø# ؾøW™rÝ‹:;;gΜ¹bÅŠaü)¡g¦¢¢¢ÂÂB///ku/W,Ëk”ˆ»’zæDD®ÔüÊj»¸_³%è±I.-öo0#˜)UÓ¼úxÄÂàÖJ¸V$^Óà””Q |…õfN'ppfÊÒ5»†XíÎ&¾c¯ÑLUu;”vÎûÐÒ×==ì~fš¡íÑQßfñomuî~¬± š™†]꺘ESDÖâ_ûyõ3Sñš)¿m9xþÒ¥‹‡ö­ýyú’ДäeK†™jkk‚‚nÉLÐ|¬'Ñ/úçjá×X´Í§°uÏý_3æ‰&ÿ/-û|>}‡ Ð!wp½yFbÍ| AbiDx0 Ø„¿7KJD$ÇÂÀ1ðfD$'BŠ x‚½KŒ¸AbÎ#{ž>&º—Nܘ4€0²$`œþ’“·Á€6È]x/ÑD›L¼ 7w°Êˆ¶ÄxpÛÚþU”À\›…бÃy3üäŠ^4š…EcÓq(nAHŒ½®Â^ÂŽ Óñ¾ø«×¸Ž\ë¸hv¾û|ö?£0>šÿ)þѽ™ÿŠÁZ¨èP08ä¼+?âëxûÉdo4@Ïò×:4€'2yYÁnxî>(3µ··CRÔÆmD®Ïdgg·t`ñŸ4‹C}¢àÌÀù¤6îQsçÎŰiÖ;h>úª‰Pll,åºG%''ÀÁ/„ÚE“_‡é×èÍíRö²Åy §hßÀŒÝÇkšd Õômô±ômL´ ;SÊŠ²øËcó€™’µÍkNį÷k-á jE›Ây§œÒ²ðùª+йËûïhìNJÕ6ﺴoGZ-¸¡uš!ítH%âÞ$ÔjÓú;“*Ôº_KûªTÔ¼(½¢¾³uTßÕaUû–e²1(š™†]3•Vl^¢¿açæ%s§šnsô÷Ø1gæôMžWáçZq\öŒ©S§ZöQ¨Ôõq›–ÌŸ³ÈÜaÇ2ƒ•n<•*éâ!ýiSgÏ[u5¹’d&XNccCUÉUýŸ;”0Ì‚Ã@?ÓåËÈÛ·j„¶ú ?éð±hûß^.8‡­vÄl]ß?kvG ³KøË\`o¼Óø3`/X0`ÐîÂßóD§Ë€á/ˆCTdÒVFƒã‚v@û Q¼ûãBÄf¢ß?5Ø^%z¹þKÄ5&’}Ð^ð„¿ÿê_• è þÛAÊP -ø F†t4kŠ, ŒILÜ"Ë?ƒ°¡?X=±ë?U JyÙ¿âçmœEßßlD"ìo}ظq[¨Œ(+BïÎ圸K@ØJtâ©_˜ò$ ýRࢫØh©¶½u;…°³hÖ‡%^gj ÑOFûy¢$p˜ˆ×?'8ŸU=É``ËûOõU¢ç €Á… ÷Šé?ºt²®Ý’™BBBØl6´ ™™™ååå …ÚTœ‘‘!‹¡îDOII¢‚ꫲ²p*11”••q¹Ü¶¶6hùª««³²²Hö‚¤Ga2™åȑĉ»KKKŸ|òI–”„/ª5dNÇãñÈ( ü…(d.dH¢@9‡D©ªªˆâíí]__Q ™'£@õ QÈ[ŒiŽRRR‰´¶¶Žõ6<›››! &Z÷ââb8º›£ÓáÉ(P ˆ犌Â`0GsK|EvË(pu¾üòKkkßÜÜ’”” ìžžÑÔ„GÉÍÍ%£ÄøÖÔÔ¹` ð’K^^ì½e Ì!QÈ6k ”¹®®îûï¿ÿç?§“×€ùúâQÒÓÓÉ(ùùùQà×ÏŠ]]] „)(( …pŒp È(p5ÁŸŒ2zÌd+ï© rEŠQ©‡Ž²dR¹rv<ßßu[jj«”òJ¶‰)ÁLIºæõÇ3ÖGëòë8L¡h[x·[òa6þÔ¾1ƒ³âTÜNn34éðÜ–—Wʬa–dŒ43)•èÓgyÑØ,Ol}öæilí¤[Ç+:’6xtŒ²óhvJ‹½°æíXrïGD MMܹÑw`ØûDÛ Ž[$x{ƒ6þ–Q¨yÓ¿gÀIdî`ÞZŠP$A?ä¬ð(bYKÒ¢E‘Q wØ$÷þÐð˵?ðKÉ d±šX²2ƒxA®¨ !!.¼ƒ(ó›Ñ7å(º§ ÈëI¢/Ø…LÓ®ßYCf¸Cj€€˜aѨûFŽýy?fÇÃÞýëd)Ö€Àƒér¼¥ŸA1 Í bHŠHxlAD@Û~°ÏúЃ˜òQ∑; C2ʲþà€3@ÚÀÌghë{{q#N‚–‰ú ö9à‘‘p…o!(4®7Zä¿þõ/È… 1z æ€÷¼ûî»À(Ôöðiÿþý”ë^§“ü!½óÎ;S§NÕ×GÛ¶;ð‰ê×ݽW988P.B£ÇLÒ®vM¶Xu "âJâU÷:eC“tIµHæ±9¯V¥VoI­,çí3ŒËŠÓ5ï9u =9µ²²\ ÚSyõBìAb ãùU¢V•Û+¤ÀLaÕÌsåâqÌâ6©­ãë Šs<›Û¬#l9Þ·,ÖØ¦Ä‡ò[ÁÍ–é0WpðyT «,Þš¬æ%ÎIþŠÖ±],Åã°´ÍLî[1“a<_L2SNeêÜyú§“r #§Ì_óL—9\Kù§-—˜¹UæûÌÑ[W-d¤_qvõ­¿>6×ÿÞÜÈ3SZúbB•)æ»óôÅLÿãžõjö£nh\]DÊ`[uÿÈ.Â0Cì é3À¤AË=˜4`‚Áо4ÐöpíÛ›|Û+ÄÂ`ƒÿ»An`ÍwˆY_Oä1àOÚ_ØèMSô)î>7hy§/§—Ú¾‹ñJ±/7cÇ¡&a­zXì{À‘oÁ9·!‚"£€Y rßÒ> ŠJ.dõ»0GXí  mØÀ› H2ÀŽŸsîÒÁÌË«oD™é^õ׿þ•ó¢u;ÅÆÆ¾þúëpi¨í‡-(¿0üuÈ„çŸþí·M?ùÄ´‹Xw èvÝï”­4zÌä(î̯ff‰UŽaÑþ qnµ@"2ªnP”xl̪fÚ”Æ,åÌ£jqñ 9”“’PZ^ÎíÊ 8»_€ÊÌ©§5{CQªES#Dq9¥VªÜžT¸¨0ö.™©^«#݇¥íîѹÕÄKq—¤º½ Þ¾¤¦´A³>)}®ˆb¦Y¥›2ù\¢£é´®õPxY¥œJÁ§µ•ì.)5šœþ)VP”Ø–¼@##š™†]wf¦"aõ ãiS§¯Ü´^Ê’¾Œ™piùüÙzs í·®fâ©—\×Ì™:Eo–Á±àüAó™F™üþŸ½óªhßþM/"ˆ(Šˆ €QA,4ééMzï½÷Þ{/¡&”ôB$¤÷Ò{ïPDÏwŸ™Íº„bÀ$ð½ïë¹63ggΙ™ÝœùíÌœgJ ±ÆÏÆèrx¿ÙòÁŽ )êjâç[Ù &¨ëodù¶W{ý‘yá§šÖå’´yǵ«³_Èê"‘îôÄ»…h,ž¶eäâsì31â¥6Í{Ò-¿íSZ½q‹ŸÈ) ÁÇÞêRÞ8U¿V}à"ú6ƒ{.*¬Ä’CþÒMö/Ä£úzËPÔµVŽyÑ«ÊwþDI'|Gc`Tjj2sÙðw@5räÈêÕù •Œ_Ÿq¦7ncÆ M¤Pµoß>MèE¤e¦™3gV&+ðžùo˜iÏž=šPñ1ÓšØû·¼½ìãÒן33_–3Ì/&#øèDФî·=ú›;Œ’²ö_2Ùébmìæé¿ØÊTÿê¼¥±êókíCR.m ™îÌ,‡½‚§ZfŒ4·e¿„Ô¹†Ö=nK¶ ÿø?׿å֬ܩ9dx›KÎ|Û3ž©*íM¿³ýܲ®ª/(‡ðäu§Î ÷‰‘ÖÇÓv–¹GP¢z…­‰w—ØñÌ•õEâŸ>ÿÚfBV–wÞI‚³²>ÌýS>ª›™Õ/Ç÷.ܽ{éŽ&\(ú™ _ilÌ´ŒŒä¤¤”´ôÌŒtFÓUW’©IIÉü¥§ª­š–Æiqû¦ë8báeK«-3û^~Žß^‘2)119--=55%.&&6>áofòó»dåP¤Ì¤”(‘ŒÃ{w_y¿W‡;³T¯ŒÏ·7ÄÀÉ÷bÙÐ ™\|ï vÁ´*yÇ‹e@Úd¥¥µx¤K71M:Ú–ë1ý7Šr)ov‰Yh,-MwT¡[…¼«È–É÷n>“3qù>f•†¿eãÍ)Øi4l,A)ýG£qxÖïa‡ÖÇ0¢OC}äªï~¥“ò1¥È@;EuõµËm^ºŠíbÞm»_¼ò­j" çXY—|Ë’ËÏBkr²R×4 ¾ƒ7V–Y‚ʛdzKµ8Š‘fètÃÃYÖeûú{E:ÎôðáCþïh"ïuëÖ}¡,/$VªèÉ^T¬æ‹\ttôûï¿Ï{…&^¨òððЄ^D’™ÌÍ•òåßðfHØy Q£æW¯¾<3åó-^äÌDZÒÓÓÛµk׺˜{×=z ˜ÜQÛ-CâÁQÂß"$ñ¸X¨Ä–'uñÝËŠr@àÃòˆPL,éù¡È=ûüÿPLB4ßÀÂsPiMÕMþ•kæ¢B*ª¬iŽz¾¥¾ØºUýÄ‹”™˜˜ÿMšHÁÔ·oßÅ‹k"…-þS¿>ÌÄ–yÑÂ,[¶ì×_ÕD [/‡b’™>þØäë’¥îä1ÓU lÙ&õë¿<3ñ®« ß8Ó†è\ 7·‰™“/žl1oudöíÈÈž~ÞSsžLNÊÈg{{GÈá¾×\È"cŒÝÌ÷ø¹_töt‹N\fvCÿêÑyIªo¤Ö±©†s§Xz1Ëæ›nFGÒ~3¿É,î i³Î^ùÖ84$^ʼnu¾¹?û>Ï—Ò4ûÐþ·ï$Šuß³lfZiŸ­BÏ®èÜyKvÎq førHüŒýÆÝ<2ãSÔgè¾uvY®wÖ+Ne¦ޱ ι–©f±ˆÊœaî¡ô2Ì䓟=cãîM½–ºPü2ƘE_‹P™)(+k®Ë¥YijuâÓ³¦Ýº;Ç3W&3ʾ3)óä§—V>fò‹Šò þ™^33IiÆ™—î-Á?e©ØKd¶¿Q=þ;‘&i‚ÿ¬Š’+®K["|é‹É,¹á®ìÈI?|í(fß‹&© y;¨Èì´¯óÖ õ5’Æݬ#ÍEœ\¦d »2m2ë.SÒˆ}211‚öžˆJ«™wð9ƒIïrhªŸÁ9'O—è¤e¦vW¯,ŽSÇ™Z%¥ÞvÚ>ÉÜ=-#cÍ5'sónb:Ï9)cƹK,2<"ÔŸé3ýâ†8F¦?s ¦·§ã «ˆHáB|¢•[ÿM–Éê„׺°Ìû¬Æ»ª Îφ&M=s­Kzdb aåsûðYg;©83Yù ™mq%B=¿~Tú:ƒS[Åtµ#ížcVø‰ð5&üáb±w«0.4k‚·…œ[ä—°JßôŒ¿ºJÊ!!gÞyc2T6ŠHɘoé·Ü* M€Ò‚ðÜéIZoÓÚÀ ‰sXzzb3- H˜æõ3½zM˜iËeÑ熙™*Ilî¶g —…+]‡àÏ™I+3ቛҮ7¿"^‰a› ycHõEÉiß‹±œ1b8Dª‹˜¢bÝ«ÏuÔÚf‘—¯d/tw]öxÊ9y¢É™ÁfвPDå>„<¦‘‰óñÓ‚çx\÷àÓ-^9ŒÑì4{§ä¯931õxüë¾+/W0[A[e%–ü†³®hÎã%~ÿëçÊÖ À9¦¯7><Õ ,©Ù m¼ºÄMuùÑ>Õ»&K~A¸‡à[? ‡œ²vªë!¡½â­ÎzJ ÞÎA¥Ïûz3Znºâ‹&¼¯þe‚аÇUµ­dÞ]š¬ÊÞ½ÊÂÏ.ó Æ>§H™é%t÷îݯ¾újøðášøÊÓ Aƒ¾üòK¹¼úõ‘îð·-ÂÖ¯Ï[èÿ—kÀ·Fä:8Û$e­¸bpÆüÒò˜;~aá½½|–æ.oêFfezþ¶ag»[¤‡“Î^ÃbŽô;{ÆÑË9&yªé¥¥¦K¦eÞOÏÈü))=üöå‰&.d¦¥–.n:‹¡)‡”¬YG/M;•ep›Õè7ÅDß6‚ï5s”[J_ë}Q‚ófxÅm=½bm˜Z$ƒ€Äé NÍöÈfõo§dÌ11œbi’¡^«Wæ¡>z b:2<3«[Æ/Ñ‹¦ddt»o¯®¹a9úšO;÷CccÍÛÿéÕéu`&77e/&ü‰’ ?CtŸúyîyò™Î./£¦ì¥4ÁÐ5EñÕU7HߊyŽÌAH’Ìô› €·Åð£,³«ð¾=VÌ@µðÔO˜vÎ%Q BØ“bFZ®X&ÅyQæ•6D§xu6‘s^ôT4&n)‘ËÄ?ŠÄ†bV‘…'5²$å$²ˆ܈wLPJ,zW×'gº2¹î®«è¾²ÆDç¤ý¥”Yö°\÷û¸'¢jWqåŽcx_\Ü‚™|¤ŒÿÞ›§mËŸ}åσ£_²N©éÉp¼:/W{NLJ‰·'–ØóÅaõ¸lI¶˜î¢(&cânbÖ27”Se‡ðÌs?7ë÷—ÒÊR©…8F;ÃÄ- * ë㬎䱎 èdÚ·5œùÕÚIE>ÎdföÔÏöy:xðàÏ?ÿ\ppñâÅ×gœ‰-Sðq¦ÜÜܶmÛîß¿_/mÜHDa¥¦*ÝùõXùÞ{ÝÆÝÅ¡û÷Õ·^®½ó z3mϾ|Ëézröª«—ÎZ\Zw×7$l°GðåÃñ&.d¦áan~œì;ܦe-Ÿç}픓·SLÊ\ã-6k&åÜOIKû%1aIâø‰FNd¦…–nNá׺Ür#Ù¦eÏ=zq·‰Ç%w_òDû ôY»¯œR·¨Óê\Ê]áx)$!½•Eä¬ófžD•ÌÌî7¶nÎ8èæÇð</“=®]‚TXÙ—}bßùÙ¦~>Q±n¡a Ó'í3´ÉPÏ0ÒÜõøúÔ-öî oÉɾnË ïh†Ã’3ºÛöLˆÃ@O‹z2ån¬ Ð2ãós-½S32ÓR§™ôÙÛ)\}~¯Sjæª gÆ©×ÚåØåBâô!©é~éYã.œnx%9#31-s†mÚ¸ƒzŽ‘êÓ¥àì WâL" „k)™™f9Òñ”w|Æ´+›ícÉL‘±q?:X 1°>}©™ÉÝÝÝÛÂwCÒfÖY°¨ÎŠu¶?Ë6ÕÙ¦k›ëlÕÚ–:[¤m­³YkÛêlÒµul«³qûÓlG ϱ|‰uM{òéu¦¬«³ŠíÕµEÒ-g¾*ÐòÕQ×´-³°ÎŠéuæåE·¯§ÕÞº®ö–5µ7­zÊ÷×-«µza­eã?Y[<Ì”’¢LÆ._4Þ)&RÌÑ<ËÎä-9*¸-ô#m‘XH®>ǬŶnZñ"cɧŸ#TÖ± uÔqȤ8±nœ,“o¤+,-k‰¥Ó†$užÑ33{ØÙ#ãÍŒ™601uÖ¥ëóÏÄ^ô $u‰Ì;÷âˆuÚn½ïÕ ¡SM\’ÓÓ=2³ûž4ëtåf|ffdRÊx›àþú‘z>aL¶Ô;nËé}+ÃÕëò¢{Srâ™=U–©Ù³o¹Üë±L¢Sן=0È5€ÿÆ®Á‘ÝN{ >b³ëŒ¾LYpEØë/X¸à€¡ûSyÑÉÉÉÕÐ{¶J›ŽÍ3UÛB›…Í´ÙØD›ƒs±6ëçcݬ]ˆ5´EX½«–`åR¬X†å´åX¶KWbÉ*,^Ek°¶ ÖaþzÌ[ƒÙ0w#ælÂlÚfÌ¢ñw¶´­˜ñTÓ&ée^ž„§¢ñ´<9mµzþ¼( ±$,KÅâ±,* ,KÎ*°"¬MVu”•e­e д-3[Ø8Ú°ˆnšŽ S±n ÖLÁªIX> V]Qlssª G¸…,vŸ:ÖR óèyªµ^{æY1ÚÁ€ì¼›‹µ8_‹aŒ¯ò0‚²Å]1+×J<vNDiÚ…ÛÙyG¤iofÚë²lr “öÒ´øÇs=µçIÖ9 Ñð¬X5ϼÄ5y’MbéÕrFDñXìÅ¢TCü•¦ëŒ@Zõ¼GÕøÖû¢âÄŠ+r«OÜÁ]•fZ¼íxÇaíßÕÄž÷Udì¢(Û)­î*å©Þ,¿M7QŒZÄ+¿Õ¼þÛ{6—c4Û÷2AÅU×:3ñ>nfffhhøäðâ»Xí2£ç‹ý½V·ÅüÅ~šÝy%±~è”ðåÍèî¼eC„‹êoÄÔQã7¥UÉã€eyG¤-}–Ï“ùòr2;m¾8‰ö­í¢Tùt^ìv,Å«H½*xe˜ð.¯^:ïœm-Ùow4K ö+p×$ ’:‰‰?í‘ÏÄ`Uù½÷øoÒƒ<ÔRºÂ† Ö(ƒœ†¯šì“a·™`ÙÛ,6Élp¼‚¥ n©5%ÿÝ%!ɱ.âÉ6UkÅÁOO>²ÆÏ ð5ÜÖŽQýe–ê£ðÿté›W¸© Îxr6¬l‡A!Êòj˘˜ÿ§Ï™*Rfº{÷.oAšÈ‹ÈËË«aÆññdã”MÁ‡vŠZÎÎΜd±«T©ÂE/4¡­«W¯6iÒDy)>­ëÊ÷Åçæ=¸î笷yþ¯¿vû­_¿ÅÇ=ÔeUi¾Ûe$ø·ÐŒaÞ»wÏOGGŽÙœvþ–£UjÎækfæVó’ïy‡LvŠ̤ t‹ö FfZntÍ%)ó¸kà—@ûøô•†·G§f……õ IMÊH™xÕŽY¦^÷÷ Ÿ”éæïg·/åÚ9{ç>±ž‘q­nîõß49‚ì“v)2ùœwè¶ðýzëÇ[zûGÅ ˆ[rëÔ<Ï“V™a!=¼¯DÞ˜g©N´M¹jëêÞ1.!:.vIz¶e´ñ2#kÇØÔ ^ÁÛœ=§í¹©îqÑÍËS?Äd´ƒ:À3ÅØqsæò~>·ÃÃÄeo±Ü°èêY‡˜”ðøØ¦¶ Nyù[G»GEeEŽò‰º¼×LC[Ökç}a[¦ù™¹‡„¹§eM1>»ÔmûJ¿¤Ûѱ£®{ÌY<Ôþvrjê  äõþ›'_2MLÏÜe}kqÂÁ9QgÎÞrôOL›¥o°Úyã´Èìø¤ä^·“Î:,kœš¶ÕÉoš¡Ùtãë™þÑ6ቮ¾>«Ý£§·7‰ IÈJ˜háxùà‘I×¼Xþ•î·Ø¯êìæìïÎ/r‘ÁÖ'7-00á[WRtðêÕKÖ®X±á ~J$ž?þ\ž8`ahÓ[[à÷!8ÕÝzbs',i‡9Cq¸9úÄ¡Ÿ0®'ŽÀÖ–èKžh‹ðd$uÀ’ÇOè: ‹‡cì` _ŒÅÐn%þ†“1l&wG[2Mü¸C—cp[4Ù±ýñÝv Y€.³Ññ†ý†fÇ0t"Z¯Ä¯ûÐo0šÂ‘øf zlF±hyCáë=°æ Ã ï‡obôhü¼}6bTo´"‡µCó¹6£à×u˜÷+~YˆY#1b(†ÏÇòŸÑiÖuÁÀ!˜>«@OBR Œ•°òGŒü¿Q£»:aAÌŒÃÍðÛPœü:cUlù ]ÙDß`xOléŽ ß«U>Ò ýúaK;Lÿ“úaÍ'U{:3ÉåS±±±¯Š™Ú‰Ù´‚è™ÉNÌÓ•}¼ä íÜœ©8¢;7g ä[!Êh>cw?ý‰ƒº6FìÁB‚ÑÚ ã[$!¢ _¥‘Àäö·4Ö}±x¼NFˈ¥â,Uo‘…ÖÐ’¢¼ýNJp‰#KU‡‘Ä&Ršž¢.Üž£TÝÞ D0IåO”|ç‡Ta«î^½i¹ÊÆÜ6=ûÊ-Ç¥AѦ±~ËÍn¥f¦Œ°pÝê¾t {àZ/Ϲ¶ž1©Q+,ì÷Dœî`ìàhž¶â†Ñ;£Å™¾á‘“n„g…6sOIKëçŸèè7ÌÉ))3}‰µYBÌ1ßУ·ú ÷%ôÊg<È·˜€É˜øœÁ@æ%WÀ°£y£bÌ>ŒßŽq;0y;¦mƬ ˜+fë-Dz¥X!G˜æ`ãLl™†í“±‹U‡ýcppްjÃp‚<Äþƒõ€s¬>¡ô{À&Zæbœ—­Ô[=Nc[íS½q¼÷Áþ^ØÞ©êÎb››+6‘fj‚ÿ _±¬[ŠÌô¶Ü.Å%3é®gø}qrŠÌd.ðB—™ä²ñgvæybÇ2S|ñ®š œ‘Þ }%ëk.¬†@·Úb°ÊXÌ͹(ÊOâ ¾ƒb˶ 1äC²iUMõîϱK]UGQæ‰ÊVÍ;­ÚÆô`4ˆÄ‹°zSõÙA¶ÎÎUz|iéŠæã?²8¤(î¿Û<¡f‹ÄsÔ\Mj©>3ùíýú‘Òâcׇ(“…ʳ°¹uó¬³>*§²C¼ãUf2vòÈôiÛ/e¿ÇquOT²:ct10rÍé[cM¼Ãâ““³fœ[i·}c@RPdÔ@WŸÍ¹ÃFÝðOMKæ±(xõPÓ›)™ûn9ÏŽ_36ô¸ž½‹G|ÚtÃ+‹o,™š”›”šÒ+<þrØ¢qž)iéKn¸_¾=søõ‰6ŸäôÙ§N÷?垬.³–Kšn¥fO2u6ŒTLÎY³õD·ä¨„dàè-6'–]8j•œ•’žö³OП5Ë,ÕѬIFÎA‹º¨OçíÊÊ=xyý›ëŽ¡Q×ýƒ—ß2]röø•LÕ?BÏ›>FôWX«˜µ78}Æú‹ì}NNÏ<è—â+—z«b;LÈXrÒàB ºúj¾{ìò#ì#’SN:{­=ãØ_Ï0 2êVÀí›wË,Uzš“ááùóçï7°K•~\d&[ÃŽ0§u‚Y+ìý Ç;ä+ŒºÁ°®ˆä'-<‘œ~Ç!ÇD왂›H$ì$3­Å‚˜#i&’fHK„"Î|Gâ!úÈC—Ñó*º¡«1º˜âWš:™££Ö¥ñ¸ :3™!º]Aæ"E¡ÈO„'Ø1Œ 9ÍA·Í½S¶a:±I,ŸZ¸Kù3šHG°c7#i<öIZŽãD%-'zârw\eõ»À˜íð+LÙ,´¶8Ù»óŠù–Qg\ùq® ôºâXìû¹ê¾ÿ=fJž ríh1û&•+@“"@T¯ìÚß˃øZS<$/‡¦6 BÚø*˜Iê¼ÎÜÜ EÑ®fØ"žü@ø“´Ìô‹ ¡O Rõµ¼4«uU»šK{‰™¸›p½M@ |¤¤§+é¹Ê»«SBQ?²Ä‡Ug)Uo«+Àª‰Äв:CyÇN¹¬Î¾ñêÌÎwy•¹¤Igeì>[fÆvÿK©<Û­ô·«°˜ö®–ëke¥–“Ÿ³Ð¦²TŠ%Ú³Ö/¿—œ¬ØÙ)ÙÚõO(€×~®Š”™˜² XðTñ¢ 48v¬€c ’Ü'ÿ5[æÉ–œ2EÑÓS,-•Ö­iY­[¯f#T©ò#£òà=þF)åü›5ÛO(  råÊ÷^¶¸ù ó¢ÌôL%øÙ^5µÌxF©ÈL‡ÏØ»î̲Ó Žè—éï<óV° @FŽ¡™¡ýü#â¢gܽoêweás÷Ät='ïžAÛS¬·YÙ±d¿:º¸úû÷ŠJgS×y÷¦ôuõ ŒŒÜš²ÖrÏ,}ç¤ÌÛÑÑ#\B\tº¤.ñÙà“2ãÂ6o±)ŠÔ­¬ì'Žýl㦺ÁL]ré¢ÁµS;½c¢â{Ç„›ï瓞ž>Ù>Ô*øô(CÛÔŒÌËa‘'oXìv¿aêîá—¼ÐÄÒèú¶EY䓲LwMwJKOßãä³ùd꣛̚”>çšûLKu=»®³ù.e•²æÄ®^‘Œ9„FM¿;÷‚Ù­8nÚ:îØzÄCuª¹ØÂÕf»y?w•™Ž&gmÙy~¼UŒ_TŒod̳ŒùGÏ^þ¥Æ[y Üáv"XÍ~%!k˹ƒ¼þ^üžOY¢ï¨Ä”™yÆ/aΡ½ÓÂ¥¹Å¦t;d2éÜ¥ ðH'¿À[÷‹$…&2“aXÜ”Ö7~„Íϰþ×ÚÃ’| ù‰ðDžè‹‹¿á,!ƒ¨1‡‰M“°›B™‹ ’™x+_‡ù›0{;¦íÆ$9¼D¦9…!¤%‚Žz“{@Ä ò:X¡5~¾ŽŸn íM´ÉgOìši‚ªúhþjÖƒ€ÈL;0ñ­bUd¦½b8'ßssÅÉL·uÖ9é2Ó1çÕHQ.ŠhyE‰«”–‰eÝce´(ä ñÊ(_ U,ütaÔxÒáôDrü¯ß™"PÁ6ek+'!õóƒÌ(íK1‚%å¬(#ÄhÜ|q6Ùœ9£lÛ¦  n½L[ôëc›HP ÿï¡üŠn®/ÞiäW‘2åß<þ¶gÏž:h"…!GGǂψµ¼¼¼ØžšHž~úIÙ°A TÞxc1ðn? ¨ÚsçÆó  n|[Dºzµ ÷€?»•+ùcäet劜ùרИéù"3ó;sËmqê)³ÈÈ„äÄNiŽÎ!·gÛÝmŽY7:‡DEÆÆÎʹÖéÄ‚+ ég¼æzßœ˜±f­:èÒõ¦ËŽ Óm#Ò32&]ó89igHhtôžÔ³Öç¹%¦'¥e~o3h£§ÜÉä`öÝyדcÒþf&Ÿ¤Œ¥—ôF_³&Í€èÛïÝrÌ3$)5½sPî¶bïdddζ ðrÛ8ñ²5Ç6){övï&Qn¡á~±‰s /¿ºNŒÓtK3ÏjR¸šÅ$4­Ã:÷¹–ª³ÍÔÌÌI¡ÖDÜ€ôyÇgŒ¶ œ%–`‡'e´3 ™}ÞÑ;F~¶®ý÷˜^N6½âFŸ žx+ˆá«a)sŸïc—“œž–ÕÆ&xö9C‡Xuðl•KÄŠ“KíUÇQiÙƒîzd©áTpfÖïA{"3y3 JNbvl†¡GHD¤‡àø}zšD…$2“µaDs¸~ZSœÿ F-áÐ ·~€-qÜ@x"Iœºã*ɉ1z›È“±‹,B"Yˆ5¼S¯Æ¢õ˜·3waò>Œ?ŒÑ&2 ÉF}¦¡™º•H?ä$Â-~¸…VhéˆÎøÖ߸¢¹ÖåA'|Çwíñ½Z¡ÈOÄ,©ë*ºˆb²åøu†ÀX²‰Ü¶ VbÉb¬Ò2MÄž188ÇH~ä?R`/\’´DT")²¾¤"Vÿ{Ø·€ãwpúÎl™ÏaÒçòÊù[õ-&¸Ù×ZÁ¼5ŒÚÀ  N·¬zâ˜)1ÂØÈÐ)0^ÆÒ"ÍM nª«ÙžÔ«e¦ÀsÉÍ_U=Äüå%h`µX-¤»ü'SÔ³˜‰qSsà™*f¢ºjþ¾3ç­—nX ¾ÊaüDÁ† „ú´^{3~õªÏ$®ÇiGAŽ0ÄÄ46ËP±ê¼²˜ïc²0»ÄÒUáœ×¥nÜPŽ–{àöùûvÊø±JQ¤ÌÄ,ìê_V±±±ä‚Ž&þ¯åííýú0SPPГ…’™ÂÃÃ?zóÍà/uaz;v¨ÎY‹”™!šP!iíÚµ½{÷~9°±¶¶Ö„„Š‘™üb8ÚMŠÝ}=‘|’Þ*þºaè­9¶d¦‰FŽ'2wwŠˆŒMˆŸ›yÛ-s®šz&¤wôân|üŒc.êêì>ÖîsCVLtR™išoš÷áÁ¾qQñqƒÎÙl^l|Ñ#Ahiîæ9ðøA' ‰™Y6Ù=;’œ±ÐÂ…E)'(>iœE`7³ø+~¡D¨Ö YSçsGݸwéMŸ §ÝJÍÈpÈÊ|ȸÃÙä°„ôÛq‰“Í‚6œðØéÃd#übç¬]>Fìõëš‘=çêœynéâz ™YÑÏ~ÔŸIú=¼§‚ÃíƒnŒt¸MxbtºµçÌCk® Oâ;r'-Ø·Ü1€aˈĥÇõ~ ‘cW]<æ™8øŠ\ö&Ü]uíšk²ærñ™êXAÄÌë3ïñŒ¼E%¦¬º8Ö75<2Ò?èö¸óæšD…$2“•aTcø5oSø4†}S8}fp'ˆdˆŸaM¤ 9/ĦÁ8Mò BÈ"³±iÖJfÚˆ9üU½bŒa"0‘lÈ7‡ñ£… ¥›h#Q‰H䆯=ð•¾ðAS_4¡ù¡1M†yП{âKw4#E‘Ÿ˜‹¤EÞ"9¿ŒÐõz›ö£÷Q !¥‘ÕvbÊfÌZ‡ù’™æbÃLl!ÞÃþQ82'%0õÀ•.0îsÒ±5ìÈ‹„$²áKx~o6 ç3¸~ ‡¼†òþ\}ËýK8…[_ãÆ7°üF-p¾yÕ3g&»K®:»m^´Ký¢gfÞºrÈÁ?ÈâäNGÕk~½ZfŠSi6jVdˆ©%Ê[`Á¢T3/ÈLŽç31ë—¶¾f)¦óÈLëÅÃkäVŠMDdd–OÅt›”½¢¼íóèhõÙ‡væ²Ï±ÕV•..DHê&ŒõåLcØt|kŸ¸táMŠ—.+Î|JQª…*Ÿ.KÔ7—·WÛ¿P‘2S¾ôì ÅžràÀãÆÓÄÿµ^«¹9¶Ì“-IfªXQ©TI¯ù(Ïl€’%ëV«V´Ì”ýœ)Þ—+X§NMüE”¯0ÅÉL1kœ†Ü^o—ª®ïie¹%üø¼›þ’™¦¦ï£Ž?-H¿7÷Ú¼©†W=ãSõ<çúYŸ :{ÞW}¤¿¯•»k ÷‡ÐŒŒŒ9nÁ·M6÷ LŽKN>îsú¤óƒ›ÞqêØO—› ŽîòyÆÜTbFÖÿûË|UŠLJe3h­·}¨šz˜{Ââµs—F©ž“6ÙûLsJf¦zwÎÈuúÄ×Ö®‰™‰)ÃlãžôQçþ–:oÝ3†Ø Î?-k™­Þ¬õQÿ‚È++[úï¦&:†qË›²d.³YavÄ>E}ë|\ÎÖ£Ó¸«]£KtÚL ‹^aê<5ÒÓw„sR¤Hf’qg„çýp±wÞKˆíÉ›QBJÊ‚ÈÌõ±ÉrÞùúfš·ÿµLLLNœ8±gÏKØBk€àáñ ¼>Eး@n =œ?†`!±©7 È$9Ô4;fa³d¦5XHfÚ©{1áFÄÐ3x} L¦øU­É:vhíˆ.ø†DT"ùã³@4ºO‚Ñ ‡¢>¡a>eòቌEÒ²Ç÷¯køÅ%6EÏDJ;€±»0y+f¬Ç<2Ó"¬–s“°›7ÇâŒ&9¼D"$JZ",•$ù7B`C‰f ù~õà•×P·?Qßòû^áÖ_àÆW°ø—¿¬z¡àÌtéÄžØä“Ý \#Ôè¹ÍW-Z2wë™ä¼ÅúÆÆÆüŒ¤ä½šÝW¡îbP¤ š¨ù«N«#æ1“´p±Z™¢€.3Å‹åM D”bxÐkÃLO0ËF¯.ÆÒÝ&Ö9 “h¬ îGEâ Ó„u-”ŠT¹¶–]‡»°ž"YÑ&d/¶Ò¯Š2Ex mÈ&MS½½:zó÷ÏBUV?|}çä[Sú÷.’ÅËEÊLÌørkÀÉ6rñ7oŒ5jÔàÝ’—ï¨JJR}L¿„Ø'>9´óªôÔ5àd¦©S•-[.}S²äÃûìKw÷¢e¦Â].µdÉ’h"/¢¹ü%ÅïÇ ßè1n{G¸oµÏTG€ZÛˆš´à†¯`&§ÁÉ]~KJNMYœzoŸéÁÙ†^ñ©—]<¶ûyè»Z\ Ué`éêl8ãV0¿µóýcMXt ÉIJM×ó‹Ü»ÕwþEß8}Û8,38å-\J>UãïÝß#÷»MËì;Ìðt@¢Jý‚6o=_LŠís iw6}¦µ?™É=5kæÉ#í®™³‰KÉì>yƒË•@Õë÷Z÷¨­wo W¼‡¤eÍ7JÞý¼Ÿ¥Å~¹¿ÅªƒUÔ– »KLÝ<óOÊžk«w!ZŸà”ìQ6‘ó<Õñ-jå­¬ŸÈ./>+Ë,ç±á´’d¦””” ääÛqq’™ö¿˜¯”“““¹al]DÑ>@äû¸Võú n“ˆ_Àëk¸}'bS[Üh+rFO\î‡ r¨iöOÁΙØ2ë–b™ifïÄ”ýw#Ocðyô'И ³%Ú/Àg¶˜È=¤2aˆHD6 ÃGø=AêjQZ8ê¡HTä*?4öÆç„-"±éÚZ¡iŒL¶?Aßã.Л¸ ª¯&-3MǶ‰ØCÈ#ê À¹^¸ÔFa®¦oàBF$)’–$*±ê!œÍÂÆy.ïÁ*¯¡"ê!ì#•¥ˆ˜àú™:>gýŒšV5(83Þš”xiËrùõ9±~V@lª÷ŵ.ª±|zµãL”™XUSé2aâÁãÌ´X<ÌÏÀ±Ìy¢z¾&3ÝKžKi²ªÐÐîµa&ÏS™‰LC”œ!æ× ó*8Føþ®'ÒK}¥ã!ýIf¢˜åI±ë>,l‚X5E[+,1Qi…[¡Äuü´ÂOùö€â€–ì-;7*’'§Š”™^ZÇ+Z—–C‡m×®]ß¾}ÝÜÜä‘>PÌÍeðMrnŽZ¹rew`´°²€¯¯/)3…ÜÝÝ?þøc~4ñ—U‘3 J:tè¤OäT·soœsÌV™éWŸ%á»Úf2v޽Õ5>+5-}irîeãË l¼ãRLÜÜ÷ºÝ&=#Ó+9cžþÉa&†LŸœžÙëvÚÔ#ço…©“bG¼SçÚYÃÒ^ËQçÔ^T†wî\¸£²u4ý™ÁbW;ËøìEf¶b¿^ï»ð{[¼U~¢vgäÎHÕ`Ö¿”–™ä~s’™øËCóv!‰ÌdfW‰ï"á=Ä×B\mÄ >D‰è@€ F›ähÓO¸NÎ mô†Á@œŽãcppvÏÀV-3mƬ]˜|cˆ/ÚA&st´ÆÏ¶øA“¾ ýHKD"‚Q jÇ¡V<ÞKÀ»´DÔä+£<‹÷£Q‡DE®"9³[øÊßÞB+üH3F—ËèI>;‰¡G0j/&™6`®d¦ÙØ4 Û'`ï(!êøz¨¼™ ‚ßÃ^ñS–$*ÕAôûˆe›°qh5Å«l¥÷]uú!êë\Á¶1Ì>­z¥àÌäwýìúý‡Vm¸›åæànyæÌÙó‡÷luWGKóë•3ÓCÙþj‘ %)ÞÞó1Ó·:Ì$œÌc¦Î:ËÆ ÎL¼-.„ñ/UpfÚ"Š­ËLÇóvÐ#âŒ}‚™üÅ´£”ûÓVhËçŸ%VPÚ8AWM¾I<…!cq ãOšOcñ÷×ùï¶zZ²Œ®Š”™rrr^n•Œd¦ØX¥D‰ŸÛ€%@= D‰Ý»¿<3ñûúŒ3±ežÜoN2“žñ( `ÕÇË%-‰ƒEÈL{öìÑ„ U¥K—>q‚ÿs/¦]»´;J«*rfâ'Áï÷iÊ'⸋Ç*S'ÉL®>NÁ^K®{“™&™¸„uJÌNKÏ\‘p×ÀøäcŸ¸dK¯-.76^4³NP9fˆ™‹§ßüù7ýY{wáXÕÝmÃ{˜E¶ NP™iÙµÛó­Âäƒaÿ¤~‰™C}=%^ÍñŒ^uéÔ®†Œ#ï¬Ü¶r®y"Ó/)}¡‰Ñ8kK^‹)Ûg&±?â¯ÖâjÔqQ—Ã4œÄËËS½¨˜K›Ñ,çN׬?Ä0S¦WZvûGî굨 \ÊРë›õ’“qùTlÌdj˜PéÕV©Uqóm¸“ È $§F€ØÔ®ßÁéØþ‚kr¨©?ÎÅÉßqh"öLǶyX¿ Ë×bÁÌÜI‡ð;ñE;Èd…v7Ñf.ê» 9ÉŸ‘~È@¤%"Ù( ï¤àíTTOCµtT¥1@ãÁdÔ ?žHNr̉°å‹&Ä&'|g‡Ö¤13tZV'ÐCƒŽb¤p×4MËL³°y*vŒÃþ8FÔ#ðû:ÀâGØH`’óqdD’"y‘àH6"JÖ@2›…S>•q#¯¡Rj ±&âÞSÇŸBê¿T¬­kÔx‡Ÿ»Öx¯EW|ooþ¾Ž?Þ¼ysM¤ÀòòòÒ„„ŠonNÏ;옛Ӣ˦΂™::z9…^_bí¥2“©Ëm¯c¿¤¨ûö¯Ž»£o²{¾éu2“Ï{«…G,o&«P2ÔÔÙÙ,rñMÕóÐÒÔ{“§¶÷ükÁÑ£‡¹.öìXá>Ï4[÷Y¹çhZȽ©æÙ’WÖ{Ç/1·<ªžÄ&=gºõ¨Åêâ¤àÄô•WoM²qTG“23û¤¤ö2‹K‘3rÚ8>º•ö2cKÏa(@4•’™9úþ-™çäD'éªØ˜ÉØ0±rÞDvedUAbU$½”wDh¨ƒèzÿ·ÃTAl"aÈ¡¦n0ì‹‹ƒqzŽLÀÞ|Ì´`Ôi ¾ˆ¾WЃ@s?ÝB+K4#èø¡1‰ô…º$¡DÔ$2Q% •³ñf*Ic˜3ðYŠäD´ŠAmbV>&6yãsW4w@Ëhk‰öúèx½Î`àq ?€±;0u#æHfš‰-S°“?Í‡ãøœ#ðý S°›Á½)|!À$&(cIlâÑ[Ȩ‚L6N%¤UB2¢¡2ßBZ5$¿øwñ‚kÃ÷C¸Ô‡ÍÇUM_€™þVZbâßþºžª×™ö ÿ×ÿ(2vÿL2SOÁLÒq©èg±ŸÃ#Å ÍçO0“äÉLï÷ÿ¨b`&ù»¯(¤.3±jÕ„«ÿZ[¬d7‹Ä¥X¶öš *uK÷'ÄV* þøCñ÷Wââ4Ñ¢V‘23»&ò""3•/¯Ô©£>7'‰ö—ÊLøðÃ{¥K¿$3%''¿>ÌÄ–y’™´jÖ¬™¾¾Öƒlq(Zn@XØâ—§víÚ/º™]¾Â3õ=æqcžþeñD[G;O§ˆ‹Ënº’™&›»Úoi›®²ËÚØ“•óM¯ùÆ&Ùú/º4}·“Cšše„•Ë®¸7¼^šso̦½ƒ½Õ»¿CXÂàmnï%F'©T³öö½¾ášqšÔ¶„{#ÂÿÌtÈ'cÑÙ`#uéT¦kvö¤¨å32Ô-rC“3暇κî/™iz`úpç`¹((+ë»%Çhõý[a¨Ø˜ÉÈ0©<îU@nEÜ­ˆˆ7KJ¨ŽTbS-Ä›>By‚Tñ<¾ƒSÜlË®0êýAЉ£ã±o¶k™i+f™Žb¤é£!ºY ±†psJL«wBQ_ Lä!RñèÞ¸‹Š¹¨påi Ðx„ðDr"Ti±‰¼Œd/9Ôd‹øËû~<îç0à†‘™vbŠd¦…X#™i ÅÉþ8ßW;ÁŒð× ·¾Ëðú þ ,G˜j"‘ÀTélÒ$›…S‰å™×Pw*!«2ÒßBR5ļƒ°÷PîâæGUÍ_Š™þY¯3QéðÄs¤E«@áòºž!€ˆAréÏS™‰if‹Œ’™˜¬ D‹™XêIfJÏÍ ¾Ifb–Vb:-3Q½4U=•™ö+ÊËŒ·½Š”™²³³ÍÌÌ4‘QÞÜ\.ÐöP3mQ‘©óºu^znîâÅ‹¯ÏÜœ¹¹ù“ssRvvvåÊ•svvÖÄ‹E7nÔ„ [5kÖìÑ£‡&R0m«ºòT|ÌtÞ;ø¨‡ÅÌsú®b xG[7—ÐÃk­ÜÈLS,Ü,µIWÉc}t¶¾áìyfV~±I.!!SÍrßãè­äL4´·ž—´F8•Yš{oÒú•]¢U¢ðŒLŸpØzˆ{¼xî>sOrn§\ ý£næälÈÕ¬Ú¾q··E®m¼:ùå•™½þÖ¹ÙwTfŠJÉšl“±Ø6VžsQà½>Nš©4’Ùμìÿÿª¨™éÆW®\9v옑ar<¤•Ãýr­ˆ‚q¡ÒˆMï#–$Ažh ?²Å·pn »v°êã^¸4gFàØ“Ì´ŽaÄ ¼„^Fèj‰öÄg|{P€q'Æâý¼›‚·%0‘ÈIPö!ÊhÑû(Gr"6e¡2±) ï›È[r†ÎŸ»à›[hu]]þÃyt•KšbŒ.3ÍÀÖÉØõ; Á©¾¸Ø †`Ñ7ZÂA25DÑ€øâk ™Àô&²ßÀ›¥,”Abi„å5ɉ|™õ&RßB|uD¼ƒÛµàU·>¨jYèÌÁËÒÒòu`&ö÷éÚu‡£ÊŠA—kbï"ÍQ¬þa´©pØHf²c3ºÌä“—¸Ø˜ÉUƒ* 3¹(ÊiÁLä¡aÂKS¼2Óê g•Zí‹®¤2„ßó|²Ëž^C)3½´$3efª~±úé'1À„_ýuʃþ—×€KéééµhÑBùÿ_®®®ÕªUÓD^JÅÇL½oq½0MOÃLÝ,Ý]üV®¹®z€œvÍÓçò¬SÔ㛢².ž?<ÏÄÁ?6Ñ32j¸ñýáû¬œ37uÒŸ“¶ÑNl+{çÞüóûñÙ#Ì.ŒsLLÔuæÎÝù÷î1P}äèe“™óYè_¢xþiY.ù¬J×¥g ó»»ÂQã r{ü½¾^´L¦ üÿ«bg24L.‰?KáQiüQ÷Ë‹'¹¡:"«át]DÕGè§«šZáÖϰþ¦=qù7œŽãã°*vÌÅ-3íÃx2ÓYüv=Ñå~±CkáŠéó|Jܹ:'Uª‘Žª„¡;xƒÀDHú¥¡ÔŸ(Ic€QÔbS&ª±Q3µI]Ah胦nøÚßÛàG3´¿ŠîÐï†Âï»0yf?ÉL} ßFľ6¸ùpFEü·‰†ÄšH$,VF–˜IlœRø£¤jjC•ÁbSyÜy•‘øBªàÐÛ0¨ ûºU­ ™øMHMMŽŽ~˜é’¢|£ >O„$íC\Ïb¦2‚3eŠ˜Eh(¥ÃL üª™ÉL|*3=ƒa$*âÑPEé ª3!¯Žù˜‰Å{>3ý)œ ¼†*êq&SS¹åà‹éÚ5e®ôý%J˜››ëççW®\9ydäHŽ +ïžÐ… ^Ÿq&33³g3•/_>66V).­_¯]•WÈ"ñ´lÙò…Ö˜¯]»V*>f2 39œ˜rJßM¬hîjåáæYÙ•(É"opjöôKwǩ앒™Ù;þ%‘$çÜ‘« ÿo¨™)¥þ¢ 2p/ƒò¸Gb¨Œ¸Òø®4TÆÄ*]| 7¹¤©ÌÈLpîYÌtÃÏa™É­ñó-´rEó¨€Fú¨ýJ¿‰cP> o†ˆDP–„DTú %´Æ¨Ä&¹J;Ô‡Zd¦`4ðEw4“Kš¶ ùüúfÃqšÌÔÆd¦`û-œ¿„§œ˜û‘µ§d"8²$0•J ¢ÜòJ…Ër¸SQ¼‹*V%Q£ÞxçêV½ö¿=7wGì"÷æ5‚5AuÖé]ÁL‘ªÂée“¼§Ì®Š}Tä¼™‰Yxp¾xFŒÌô†x¯ø™éŠðâ­‹÷TfbÈLÔ ÁLül¤»ÎNbC=2'Š‹Gœ’wpâ»û'ªŒR”ûÈu¨H™‰‰ÓÓÓ5‘'þ¨xóÍ7ÿ¥!Þo‹a¬€bË<µ0d—*UªV»\ü¸5¡"ЀªW¯^ðÆÏW˜"g&~S)==½+>A‡o™zò¢d¦.×<œ,Í6Ú¨Ì4ËÖÏjïíq*¬lK?³Ïr¶±O`lBHlJ—ów†Öwc?SÌ]†ùeìvVý[nJ½»aû‚Q~êÞ# YYíâ®ý’›ö/9&$+«ù£G2ž™5ÈÿÑ…D̓ý}î<\rG3vE&sÍ[£ý¿¡âd&@! ˆA”‡eÕ¡&•™J¡ei4z1@©j˜YpfÚ†éZfº‚ºÌä!3} ›PÕ ÕKѨLf’³rZfÒ.ꔣMr¨é.*JfJF 2S$>KšÈLŽhAf2G;Ct{3MÂnÉL½að$3}Œ2“œ˜{ d&9ÈT™Ø8y»ȆzTʪ뜲*À¸Þª » \Íêü¯3õ¡˜Hz¾,ÄJ&©Ë‚$ÈLT1ªô¶Ž’âá²ubzŽ’ÌTJQ6 Âx…ÌDé.9’ÌTZ¸3Ð2ËÙO‡™ fúFÔ”)YµÄ[SÅ+EB"†¦¤f=™"ÕAåë¦"e¦DD°Þ…#ö»S§j›üeüú0[†©‰èhÖ¬YÆ ÓDŠQ®®ü)*ñ[TªT©‡µÿ"ÿ MH¨È™‰g³¶¶Þ¿¿‘Ïí½æaSŽº§«ÀÑÍÊÍV?iË •™f;n úUxÛÛšvbëõéFþAq ñémM2Fœ8ë*0kš…ÛÏNÙÜÕÍkw$ælÝ¿x‚š‡¨Ô>Æ¥×S7Ó1DÞU\VVׇoæ9[š~ÿþþÿÿ×-=KÅ?Î$˜)¸,b$3ªÂ­&+cÞ蘙äÜÜ?2S¾q¦í¨w õ>BwÔJÀ»ðf;”~rœI“g*3Éq¦hy_nœI2“î8“îÄœhŸD X6T)üAf*§2SfŒ-‡ÑÕZ çJ Ì{UþÏ3“—2ùG‘-¤t™‰¨Á°d¦‘Šò–X Ä#Ô“Ì4HŒi½&ÌtQd&jùãÌÄ*h}ZP”úÂaw€3Q+u˜ÉTŒ±åSºðæðº©H™)77·{b^À¿ÙŒÅÖÖ–½¯&òªÅ–a{j"ybS³ŽOe©¢Ö… r«Ã¢ywøðášÈ?éüyÝG,ŠqnÎÔ/h»qâäãW=„€–®æ§S·Ûº«ÌärzE`×Hzv‡¤Þ|cª™p|BtRÖ7މ£ôN¹ ÌšiåÙìrÚqoÕ ßž¸¬'×L÷Šb˜ê6RõË]˜rÌÉÑ>äÏ’ý/MÆåS12Sr0=*ø²H¸°­ ~y)ï"¡Ž:-U¶n4…d&íz¦çÌÍÃ-3]Ã/d&|sŸ¬B­(:ñxïÞú ¥P‰ºd=“d&ÝõLò¡¹÷ûŽú(œºžIÎ͕ŃÒbS d–@‚&ͯrê‚'ßxãM˜¼wáSßV«:ûYÌ”œ`»kó±k6Α Oqóýz­˜éMMðyÒ2» ÚyÌtJQ¾W”ŽbKîÑ&ÍãiÌ$ݼþÌÄî‹uÑ2Óø¼oê;Ä ”;œš ª§¤²Å¬"e&ª…×ýüóÏ{õ’“½/£WÂ"ÏÒS[ÆÜܼI“&¯ìž¸ÂÕ‘#GJ•*UÀ9Ç|…)>f²ð¿½árò”—%3õ²t¾t4m÷-•™æºG˜Ø#L}~opòžÕ¶“MCBâãÒ²š9DŒÕ;å.²Ì¾î3jsôY_u>î`LÆÖsÛçzj˜©Ÿkâ¤Ât’ôJEÍLÚýæÈLyð°œ:¾¢>/V3ËcT $×B܈,ƒ?ÄÉÏáý \ZÃŽÌÔ&½pé7œ}ÎssgñÛ%ô2F+´“ÏÍÙ¢i”º.vD‘Ž* „‡pÈD*’ØDH"*IZb”À$3eãÍtT•þ-¥» 4”.šìñýuütí.£»|nî9ÌԻ¨=,Ûâ†tÎ$½YÖC¸ÖÑÀ[È^´ØT ÷Já´²*0岡Êa_)|Y ¡ï ø=x×ÀÎRUë<‹™2Ò’\ŒÎÍ7~ÔГoºáäS@ßB¯3=Þ†´+už%á_@ªN3´ÑÖˆ=z+‰¥?Ä‹ :ÌtBþ?b&ŠÌŸ·k'q03QºÌ4‰÷}MðoÍ{ý<<•™lllBBBìííãã㣢Ô{>L‘››ËƒÌN–⻼± c÷FÒâý‰½¼¼ ™2''çÉ,Ò[’Ì’ ³ð]¦aJRZ¾,L°mÛ¶¶mÛ²$Ú,>|V–0¯ÂÄò*[¶lIMMÍ—åîÝ»ÒГYX¼§^åÉ,¼“k³°Ñþ1 ÑáØ±c÷îÝÓfaƒM›7o¾aÃm¹¬G›%ßU˜E{ö Lÿü,¼É<™…’YFŽÉ·d¯”/ OõÔ,<˜/ ÆÆª´ðdÿàƒÜÝÝe~ÏÉ2oÞ<™E^…)™@WEÅLÖÁ«Î¥N=ià)¨¥“ÞŽÌýŽžd¦ùÞ1›§ôÎ$÷ßN\o`7Ó<$,>113ëS‡ ‰zÇ%fͽ8vNà¥ÕÃ÷±¨ôuG—zh—FYÿ±Ê¯p6ù?(þS)3I9 ÿLÂË€ºŒ©<\*"°2Ôáßêˆ~ ÄÂD-쪀†_Âó[8ÿÛvÂ×€Ü>å©þ™ÈLG1ò  ·ô5pmÑb&ê”A 7±_ŠjZ†JÝQ&K¬j"6HNº&G˜LÒ³%1KNÌ…àã|ê…/ˆbÒøf|«‡.Ò?S>_3±…Ì$ý3õÃ…n0ìóaÓÍáJüTÝ%´.¢Èˆr¨©Špe©}z®,BÊÀY6”p4S ™å±¥ ~¨ðwXž5±«TպϜ›ËH óvØ»qÑÈßú >iÂÐß6žq*È@©ŸŸßÉ“'y}M˜‰"+¬ÓŸ©Ûz¤ÈL-E@ë |·`&¾›ä1S®¢´Éú¿ fòÐY§õ,fz_Qš‰ƒO2SZž&¹ßÇ…PÝ_ÍõEl,«ê”NXWS4_=•™,,,ÈLVVVì˜É= ó~åææÆÄþþþì‰É@ÌîëëKLá}Œ@ÀŽÍÛÛûÑ£G¼›ñ¶Æ.Q¾q˜=_r‰n¢˜Ìâãï†Â,, ³0 ›…]uÙ²eÉaÌøÔ,ä¹'³È«ð5((è©Yx\f!Ä0nvØ<‰6 «PÀ,„š«0 »0™…ùmaXfá&..;-MÍrüøñ–-[òsÑfñôôÎÊzJ–œWáqyÖšQ]3ÝY|2cÚé‹^ÂdKÇ+²9{ó¼Ð7qå$ŸþÁ*  JXdiÿû­è°„$2TCGï©zÇÌ”-àæùÓdˆ¥š ú˜=ÙˆÊÇLWEød3Qrï”WÂLT7Íß§3Ó ±¾û3q03ý¦ÃL_ˆuT_ñ*Å“hÝw?‹™x•‚®ƒ-=•™ØKÖz&÷—ó ðl=zÙ²ešÈ Šÿbì}5‘W-¶ ÛSš6mÚäÉ“5‘b—&TتY“-¯ˆD*T1bÄÜèÅÇLv!a3gM;­ï%\üfé¸aÁcn~™kÝ’çnu¤Î ŒŸbâ4Â!>"QÝe·©³Ël½ã^ÂöûÈ¡£Ï™F¨spÂÓ–ZnóÔôCï<8tçvvQ«Ø˜ÉÄ0œD>û„8Tƒw9ôy#j#†ÀT?ÏË@¼Ó{åăØÑ†àÔh~ê~s‡1ú†\@¿ËèiŠ_¯á[üÐ ïö@5é \bÓIÔx%½ð¶Ü>…䔉*Zc”åÆ) x7ï˜ÂQÀäÏ<ñ¥Ö¡¥:lF«“è~aÄ~Œ{ê~sÃqü7œí…KÚ%M¤À¯á¦u.±©Ô}‹kˆÍæHžÞ„½l¨ªb˹·‘@fª ÚüÞÁ¹¬«Wóì5àüH_~ÞkÅL÷:üãÒíæqüu©ËLr 8r‹¯¼+v zŠçð_OfÚ!Êc$æó1±ï%Ò´¯4êYÌÄ»yMð1íãm¯Š”™˜EŽa¢ k×®¯‰¿ˆäˆ…&òªÅ–acj"™BµjÕHšx±ëæÍ'w—.i™i„ µo׎_§g1Ó74!¡âc&‡ðÈ Gsæœ¸à—¤ÞÍ[8Î;–sÒ3ˆ÷ö%·3§èÙ P;€ãqc¯8 qLŠLRA©•“ý¼s'Ä)™+œf-Üf«ú龞¾ôò­ÃâÌÌñ÷ïÞÑl^ûŸ^T…ÈLÁv÷šÝÖD™ÉÔP}Àžö’ÞQ×2‡U@Ï71œôð1B$0}Êhþæ¶Åö°$p;àÜ0œø‡&a÷ luK±b nƬ]˜|HìÑ{ôÑÇ]É4WЪJ^Ç×øÊMˆMÁh„zuPúªÇã=RQÞ!iÑDÔ”´:d,áS&/|ᆯÐR2ËNá×3è{ƒ`Ô¾'öè†íã±o$Ž‚^èwƒ¡j’[Λ>‡7±éÜþa„E"#Éé]$žØ2o#º:BeCñÈ»êžc)T¯ ·á[nŸàÖ§°hTÕðÙÌô¯ôZ15_làÿ|é2Ó)EÙ–ÇL„¤ bqOmE©˜‡CŠI?à¯33™ïSd¦Ÿ…K)2S+±ûÊh‘F>*H£øsX]>#ÄîN›…Ò^NW¦‘šàk¡"e&vu¹¹…Œˆ<¨S§ŽùK9¿{÷]ŸØ2º-i``ФI“‡~¿ÐÅOY*l‘™PFЍ1yŽf6o¿Ýgûö§3¿ŠšP‘3ÓÙ³g L»wïvŠŠaš3ý¼àœ¡æc]³ô|B PKBs~?l5Ü_}Æçd@Ìð‹NƒœR¢Õ©¹Ììíæ]8í£9e®tKÙrjد×$"cÞUߣþ ªrÉÎ.¬Mþÿª°˜)=%dïÂI› Õ‰y©ÙÚÚšFÕR³”àTþÑñ- ÿA áÜ>_À¾9n}£¥Qñ\kƒ®¸ÔçúáÈí“°s6ÌÆÊ¥X¾37aÖfŒßƒÑG1ü0ú^@¿³èbˆNçð€[êzífnøÊUYû4 ?@™¨ n‡R'µQ‹„„÷"Õ‡ãUÇ–|TÏùâcO4ôEã[h⊯¯ãk´²ÂOøÅÝö£ã ô;Š!»1|&®SmîR,˜‡e³±qÖMÀžaØ3Gûálè‘ü~•¶°ú7¾ÁubSÜj¬î£âU¾©Ë›|Oï#è}uE×íšpy±µÔ¥Káuò&FVBzpl׆¸I`j ãFUõþ0S´AyþOò@EÙ%d¦Oĺo2S•<ž üª(ó¢b ”d¦#Šbõ"Ì” îßëYÌD '˜©r3ÅŠyºZŠâ)Ò\P”ÖŠb¯(5D™ÏäyU Ì+Šºl5OÚ¡)Ц®ßyBC 0†Wl*RfbFÞÓ4‘Âñâ‹/¾ÐD^Dìu‡v^­Ø2lRMDQ>ûì3këôŒV„ú—þBŸ#2SÕªJ… S‡çm?{ ´¯RåéÌ´bÅc~9ŠoœÉ-:®¯söôK—|RTfá8üfÆyÿFGܺÛh”¯º*^/0zài§Îé±É꺧ínÎÓ?ë+˜iµgæBý v*3YFfM¿uæ¶Æçäú7*fJO¾zxŸ¹™þ6£¿™ÉÎÎŽ¨$uáÂSCàR gê«ã(‹êà<¿ªõq¥ ,ôz¨H™©ˆäççWºticc6äÿˆÌÍÍK–,)ûß“œ››:Õ®!JÜ}œ™LLžÎLùT|Ì䓸«}ætýË€Fš;t3M¾ÃÈ’ØûC¶èõVtŸ ŒžtÀþ7ç̸uÑê/v6 ._ôKVëýs¦šŒrÊR™É.:g²~Ò¥ˆÿ˜©T(Ì”žwzÿæ•ó§]º/6é) Žœœ¬ £>ƒ?­1üšÀ·ÌùUý _Ãí;8µ„ðý ×[C¯Þmƒ]½p©?΂Þpÿ‡&bÏ4lŸM °v–¯Æ¢ ˜»Óö`â!ü~ #NaÈyô¿„^Ÿ ê$|f…v×ñ“-~°Ç÷NøÎU…§ÏJ¡„7>÷E?4öÇgZc”惦^øÂ_¹ákg|눷ÐêÚ^Ã/æèhŒ.WÐã"úžÁo'0ì0FïÃø˜²3×aþJ,YŒUs±A.‡ý#qtN À¹>Ð'6u†IXü ë6¸Ù ·XåoàÒ î_Âósx7…›…&›H¶Rcø6†ëhY ¿Twù½ÙVßÂø;\øºêÙBg¦¨¨({{{›×™@g4Á§ëO±ú›¯r=ÓB1C'™I®g@šDד™,Å€™ÉJQ&?›™¾S_E9,ê¥e¦vuÇ–ÜE»*$DQj‚‰ÍŶ}MT¤Ì”““SDc';v\¾|¹&R`]½zõõgbË<ÈÛoníÚµ½{ËÇ$^™v풣ƅ/ÉLüÖ´iÓæàˆ°F Þ»wïYë™vìàO˜¿U|Ìä—òÓŒúWü36wüQ?Î0(AgJ¼ßo㉠ުã€+~K·\蚟ª&ëlo³Àè’¿`¦5Á÷ÆÛwû–8Æçô±¼k–øß¦BP!®gJð³=k«:}Rd&kÃâ‘´Æ8û)™ˆJbİù×:œlQM›`h?\ 0 ÉÑ8L™Œ]Ó±m6.Ä-3mÅŒ]˜¼ãŽ`Ôq ×à bSTû•Ñ™ #Éé&ÚØ¡õ9|Ef" ¹à"ÁH×x„ÇIWhIT"l‘–¬ñ³%Ú›âWCt#]@¿3¸vcÈŒ%®Ú6aöZ,Ì4ëå’¦ Ø;GàØ`œ–ØÔWºÂ¨ÌÚÃ’äÔ7ZÃî{Ø·€£ä§æpeË4…ñ§Ð“­Ô._ÁŠ­ô-n¶Àõ–°h“Ö¸ôN·¨z²Ð™)==߈ˆˆ×™®‰ ©çkƒ¢ð®Ï^¨“¢n0b!¶§m’ç–‰Èu^Q‰°d¦lf2T”^f"*If¢Ê?›™ª Ô2SQ£Å"-­{OÊ]Qtw"íªù›_ºY^­Š”™>|XDc'¼s–/_žåÑÄ &Þf_ù ™VÒql%Ö…=‚<þª$Ÿó/ õêÅ“«2¢ƒƒCÛ¶mß}÷ÝqãÆñH\œòãê[ùÄo &$T|ÌŸÑêZê }C9h4ÖÜñû“‘¦Â¿ÀâÔûCÖœ,TEÏÜv½ŸGV‚x¼®¯‹ÍBã1n±6êÞøØµ^‚™ˆ S±c&¶ÌÅÉL«°x=æmƬ˜ºb ±é†Ào¡Úh|~=ŒÐ•¸c$'ÒÏ´¨€Rf‰ìñ=x$a$WIT"f]Ã/¤%9¼tÝ%0Åo§TZrP 2×¶aúFÌ!3­ÀR2Ó|¬›Md»IØMÎ…#Ãq\bS_\ì‰ËÝ`H(”äÄZ“É‹?À–üDveûnä5Ô­0&3ý >ygÞÆ?âòÏ8ÿ3Ž·ªzìÿÎÜE¦yìÖõ„ö‰+Š1U¬:ª-Ö6‘'WÅîuÛDt«`&Ò™)Køs"¬p¿9ê•3Óifª$€’•Z!|TZëxËÌM¡ÕP±íñ“bí™_­Š”™˜85õ©.þ­îÝ»W¹råY³fiâ«óú0“têÈ@||<ëò WKñg›&TôâW«zõêÏY’Ÿ¯0ÅÇL! YßX$Í00ö4ÞÌéÛCÂ÷÷âÌû‹Wo™æ¡2Ó•Û1S6_ëí(üX¹e½ÐØ2P`Öæ˜{“#Öz‹ýz2³¿öQœ2ÿc¦BP±1Ó ÃПaM#+ü€ åñöçXÐæD¥.0&L)zà.ü€ÙUñáP—À4ûä qdÖ/ÂjÉLë0f“ZÈ.$˜KlZŠÎ•Qn:q Ðû2z’xO&èl†N-ñN|@„"‘¢´Æ(Ò$'‘´ˆJÌEð"-]Dßs ‡A'1ôF¬Ç€]ø}7&×¶`æÌ]ƒ…d¦%X¹kåô o"öŒÅÑ8Ll‚SDÀþ8ßú½p©;®’%<ÉOí`Åf¡µÁÕÖ*Ɇ²j }u²]õ'~µô;â\'œêˆƒ?V=øŠ™Ö)Š“&øLõ¯…5b®«¢´mõÌÄφ`D(”Õá[2ÐE,ôf.­tOžðŒé«GôAÿôIDAT9fá^)3åääXZZj"…­eË–õï/¿}Õ¥K—^Ÿ¹9¶Œœ›ëÚµë‚ äÁW¨­[ù»¦øÄìêÕ«5‘'´yófMH¨ø˜)<)ç+óئrÐh‚¹S=®V‘ê%çÜ_µ|Í7uNÇ88füfÓî~YÉé*3 ²¿±ìªMp’ŠVëÓîÍ Øä#˜)<+«~¬â¥†ÿÓ¿T±1“a0AFS²×ê$]xã'<ý$¦ç$3UÊvz˜)] zQ/ÇLï _Òøs˜©£Ø³OêYÌDɵç¯\EÊLE­Ò¥K'$°ÿ?V```É’%¯\¹¢‰ÿŸÑþýûÛ·o¯‰ü“Šœ™øu§Ž;‘’ûièL³@-œ§l±±ŽV¡gñÝ{«–-ŸãÁ°ypì¸m—»g¤d¨Ì4ô–íÇ`Y²s9ðÇã33ë§ý*Âÿé_ª¨™ÉÌÌìôéÓûöí³7 $+Œh=qðM¼÷ ’ˆä¤a81ÇF⨘ÙIfݤ%’Çtl“ÀD!”,ƪåXFf"©W6bÎfÌچ鄒ÓohóêìÅhòÍŒ"èwNb(Jƒ¾FínøôH#I“Qâ1‹ÉILÏ\Ç1ü(Fò<‡ð;l/&ìÆ¤í˜´ ÓÈj¦õ˜· Wa1‹´+Ès °V‹MD=Vä4ûÈžXGÉO¬5ë>gh)Ù2ýq¶Ÿ€*=[ ›aÈœ€£pxöÀ®~ØÜ¥ê¶‚3SŒ‡ù´9sÖµÕ84ãÐmÇžþ¿žÌô§Xæ¬î’õlMkzzä­ÿV@C7ñÐ\šxެ´`‹%ÂÁ“ÌÄw“Ä‘ç«p™iª˜”Òe¦ç<7§e&–¿‚¢¬•ê,Âá/Q,ê’â=}œx}Rÿ˜);;ÛÄD—' YÍš5{¡óŸ?þõg255}ðàžžÞ·ßòŸæÕkݺÜ0©0ÅïRåÊ•ÙëiâkÍš5šP‘3¿å©©©'OžŒJ»ßÉàöó@ÁL“-]F­5±‰Sq/¾woíÊÅóÅ8“UHüìãºF§‹åL™#ìæ›z„ˆ¹¹ws÷YYû‹ñ'ž¢ÖŸ†üç“©0TlãLކþĹáWÌ©„êÄ#b<1û °wvOÂÎÆhù~"v–Ès±a>Ö˜%K°r–¯ÀR’ y…Ø´s‰/$§­˜Q f¢?´Ý‰Dœ}OÖ9€±1†ÜÓŸ¶Á'‡1ŠDÒ£ÒHZLÆÄ4æ’œ´‰J;1e;¦Î&©&󢦵X@t#ÀIf"Ïi±‰7 ›%9‘ü¦`'«F~bYYVy ²îlÛDâT?lêŽey u¸&|‡þ#Õ§ðöŽÀÎáØ6›‡`MϪ ÎLfgøÄÅè­]ã«n¦™™‘{zÝ²é» Å›ªbccù¹KñçækÈL»ö½šàÓuY@•.3µ£S}„WL2Ù¢ŠptÙ@‡™È%’™øî?îL.3Ù‰ÅÚRºÌd¤ÃLu„&-3å |$3ðÄbk̤ @{“ó fŠk¼^¹Š”™˜˜7:M¤DjÒ¤IÁÝf².¯Ï [&''§nݺ¼ík½R½œkõ£ ´iÓFy\ì5!¡â››‹Í¸ßÎÀoÎ%« 3¹ ZuÑ6I]´ô+,Ìdš°Äàlפ45QfæHG·¹þaâQ»­wrw9f¢¾|ô(ì?f* 3¹úNÆ.i=1åMT#FÐȤ Útl“DÔø?}НˆJ„Ò)„,B"!0MÈLr¨‰ØDd!¸œH0ä˜7Pq oÂÌ-˜I„"âth;0U@ÏdÛ0a&?Õ˜†ÆÄ4IH4žŠ@F,Ûˆ9•æ®´Db“ÀD€cyX*Æ¢ïXlžU <ûX)Vd5e}%HIÓ¶Œ® ÅR¶ÒP,ž„­±y6ŽÇúqX=KûW]]pfÒ?¾;!9Íbß\ç05êe}þ’µÝšÃ†êÿ•¿¿¿{žìíí —™øsºP~Q' ÇÏÑá›Ìä¯(3¥½x ŽYFŠ)0ÉLkÅx’d&¾>KË_OfbÁfˆðQ6ݕڭ¥ž¢ì×ñNk.f$ ˆÚÛ7kÇÖP÷ y<þ$VDõ_¹Š”™ëö:g«²r7ìZ¸J0“Sxʬ+zí³„³ðÌÌñvÞ3­"#3íO»»âRÐmñ<%¢þÓ¿W±1“§¡‡–3Úá—¦øL¥IÒZoôø.k«¥ î<¨ZHµR÷Ki­ÌÝ2¿õømiIuRLZoô}ï/Áòñ˜ =H“#8f9ï Åzí4Ý3èÚ ÌZ„% HzÓš$'­iKþ,Ó­¾ÖaÞ\Ì’áq]å—cÑ2,Z‚|kæÎS½ŸOUu~Á™)#ÂsåŠe§mB22OºÂ$iñ‘gM4o?®Âe¦þ½þÒ ÐúËØ+b(ÈMó΋ÉÌL¹rEù5B,ÑjÓÄðþå®\>ý÷CôºÌD€¸-`‚¤ÕXQüòØ‚ÌÔP¬ ßôÿ3±´Zåc&½¼ª1oÔãÌtôñMåæM4ÁÇÄKüãc‰E­"e&¦dzM¤häêêZ©R¥Žfuaž/ÉLÔ—_~ù5pp*•(±lÙ2|åÌôJœ >¼,kþ„ò¦ø˜)5÷^ ã[³®Ú fšiíÓwËgáÔ{mFîÞÓ ×Š5஑i“δËÖ¬Uhë7Í:>JħÞw%;$õ¿gå YEÍLQQQ¼ëYYYyºnSf´ò(;Ã7«Æ©s^ÒäÌ—\'D+‰‹0m Ϋ5õ×™íÊe—ýÈúÙu§Í¨;6½îŒ)õ¦¿ã[³JT•-ÆÉQœP uæcÝT,““bÒfc“œ›MQy4æÏÄ–' ¤Éô4™]NÒäÈÐl¬X F´c`’Ÿ$'‘uä ×j,báµó†4Y;V“&«,[@šl™Mꎿª Út &3mÄŒ ˜¾NmŠ©«0e&-ÄøqUgœ™tíèà­ >C/ÍLééJïFþƒ›énj™ÿW—&Q4oßGƒÄSlK…oIÂÍ!áÏZµ`ÕÑœî²ädÕW/ÅŸâ gd(#«^ŽBÝ¡ÕNŽÒ¹9MÄÒX»O‚5çȽ-Þš Ü2 ’àA¾ M ”Ós¤ -3‘?^CfúQ‡™š>¾çnoQ;8Yx³Îü|ÇLÕ×%5ãfД)Ñ)êØÒñ¤ÜiWÿ û™ [EÍL<o|ÆÆÆ~†Îû0^™i ìÅí k¹–H»Šh+f™–câ’š“ªÄ¼ùéÕ“š$…EÈ%¤b a…àÒfQûŠÉo4¸úé¬2ë:a@mÔŸ­¿ ßÔ¼C“±K»øšÖ½êáËñØ÷¤É4&f¹¨H»âJ»Öj &Nà "”œF”Ø$™‰À¤E%B’d#ÉCre•\VÅʲʬ8M6M¶ÌZ Yˆ¾2üê@«Ý· ã¶cìVŒÙ„1ë0zFN©:奘éŸõÒÌtø°’…ÊwQqbsÛ»ŠB“ bÏœxسýݸXÍ]ÅRlÎÏŽÜMÁ&/å@¥±–h_ì’s-Zª¬hpªK»{ÌÕýçœ Nž8¡D•¨Ë3){ðý¿Ô‘¤žÂÆ–=Àƒ?4 ½"NKÛ/xˆo5 AÎè,Ü]2l ˆ¹÷œ.3½!Üð`±1ºÎóŒºÌtý®3}¦ÃL_?î•€÷Y–––-¦ääR-Y©«‚™tÖ™Ð<&æ+Ÿª=ŠR$> ¬¢gbM¤°õð¡rÿ¾R¯žR±¢5Ðø«bE†U£îÞUÑ?Ÿ^­ßH2SéÒ,ÞK–ü#™Õ º²,3c¯–™øùjBÅ«AƒMž-½b²FÞ2ï¢yl.sþȉv™±b Óéä»ãÍþŒÈ››ûO…¥b››ó7t<†Ò* Ì*ôÌ÷¨Ú~Œ#(hŠÌ4»Î *q•>3¬¿sˆ ¹æZ2a…ÔBv™TsI•°ju­?.Q²Ä¬!åHH"Ãþ18HÓ>›Öýê¢Ù{Òä3}4ù@sÉú$E‘ŸOr¡:ÉiŽð}ÀÛ$3æˆtZ`"-•D%ÉI¬+¨ûŸtˆ ŸÝÓ6ŽÖª Â|üz#bÄ> ßá;0l †­ÅàU'¼nÌäá¡,)·aé[;Vú)]œœTª§( *l"Þ†»|ùØmøŽèÚù n¨â‹&LÀw¤(C?9Éèœãk\áë5ÜÌ_ŸÊJWuBJ;ŒÅ¨z0M=Õac…&ê¬UZ*vg“<1QLÒ1@èákñô™–™(ÂV±15÷ßÇ™‰"᜙ȅd ¹ßœ4†™%3ñ„º0D |ªô屄Š]EÊL¹¹¹...šHakÙ2Eº´LOOWÁ‹gÏ^¢±¨TI ”Á¿uóæÍW¾ž‰jܸq¯åîÈFfþÇL…¬bc¦ Cû èGÛ…Î5Pq/ºI—HZHÒo$‚0AªŸK¶(ñ…Aým%UgH1gæ“HÈ%d&bÊÂ<’3±eÒªÔD)ŒÀF‚NŒ…ÃÄ a8!=I‚žtƒô½oúáB>ëóÒ+Ó0¥ôżÅ;rROK#<õŬñXOrâ¥çb™€ô&™‰HG`Ú€¹›u\FíÅr!‰„D6:Žá'1”UfÅ¥×M­§(6Î~tÝŒö²¡ÞR3ýtýO£ÿqô;‚þÑúmEß¹UG:3EGG³_±³³+ 3yyñî¦þÂÖŠ¿ä=R•£%G»–hþu)·\Tè uZ­ú”4B ­˜K¢… høã/eî¬GõûÿQòПÅ9H)‹lŠïa÷šÃ•á’Ûÿ$*Éì$ƒ¦yg i·¡½,ü3é*_(ƒe ˜ƒ«,V/Ižø@ì"Ã‹é­ â 1…§e^â Î™5{–>¡Ùb0ìßëß3ÓïÂoç8Þ&^%3ñ´ƒ5 U*3ñ¦¯{‰âW‘2³k"…--3]½z•nàgàí·ßçÁ§2“ŸŸßëÀLaaa,pia]ºtqwW¿Œ¯œ™ þøaáŠ_§/¿ü²gÏÇþElmuŸ¾ø×ÌäyeÇ¢E‹ŒCbSî<ÈŒßyñéU=sæ 1¿«ŸÑls÷0ÁL o†o>;'@ÀжĜ Öí÷Œc80!g ‡}Ÿd 3-±Mé~'^Œ-™¤Üø(ú¿gå [ÅÆLÁ†¶&èlŒ.SñùÇxK¥ßíKèe€ÞÒé6‚0!I¾±«ÜeÞÞ]f,±c»ð!)±IËL„•9ØH`š†í“°û÷JÛJ d· ˆJ}°U×ã¶Ü±DºÛþ3ÞFÓθÜÆaBc@šôQÎdOz'—ð4 Gƨ;ïn™ Hlš/\“/ÅŠ•XB¤“#L¦˜²G¸&'•H„Ò59 ‰<¤>¬8«ÏFNÉÙ2´KètdCUE¹õøþ2º ëytÓC·è~Ý÷ ÛâªÃ ™RSSùã˜]TA˜);[YÿÆŠDÔìÙ&𤫠Uˆ˜¢$¹¶jÕt$ix¥­‚Oú|—¢Ô RG8®‰ƒ¿*Ê(˜¤¼Û\i>Ei5!}M¢2=QõâØBAs±mœ<´rŠR3ÏÞ2UÜK5‹,ñáÖ9ñ®)U3u+u BÕÄ\uågÁX, E²$¤’“¯j’ÆN°kž1¥kžm¥ý÷úGf"í±™©‘ði®•vnŽÌÄn™â•MÄ’“ù heú8 ñÌOwÞ'Fé²5ÁW "e&vuÏÙSì_ŠÌÔ®rö¬W…2eˆ1›@o`É’%®®ê ݓ̔“óo#ý7Z³FYµJÝá¿FHu\ ‰´·ß~T³¦²v­Ò²¥’Tï®E&vIšP±‹¬Ò¶m[¹“ŒT¾ÂÒ8Óƒœ£ç.[½Þ%4]säqIfêîe8ÛÂ;\0Óºkáˮ̗›ŸlOÊ^{eËa¯†o'e÷÷p˜¨é –Ú¥ õ¹— ü}[ääô|ø0ö?f*l3…Þ¸ŽŸh³Ð¨Þ4ÆOVhgfèDD 44›»•è?dF3œF}¼CàØ—·îfÌ"‘¬Æ"2Ób q'c»çÖ\ªMé2©:~·¢ vôÅÉI$!¹³[G˜ËÝJ¢Ì÷8÷®kM»ßí í.xd,òá‰ì5PìL Œí¿‹OSu¶ –Ì$™ˆw¦½y;“ÿ‚r¢Òeô$$‰Lñ«9:Z¢½vÿ;6ŽÚ¢5ø±:ÊíÄ×øÅí ÑÞíÏ£Ãit<„+ªþVüssééJ·Vi™â’•¥l(¿”ͼL·WÕåAiƒ”nÕnµ®æÿs·oÙ>-¦£ï_Õóºù7òõÉ ŒöUÿnïG†b¼„ÄÐN¸½&ÜÌ*¿”³N<üÅÆ¼û‡²üöŸó Tãob±š¯ê9MŸ’MãJÔª=-–Ê[­2Þú5÷”w‘®àE™²TÞjf¬¢(߈«”Ã3² ù,L,'§±]Ö‹USÝtŒ€¢›¸€k1þ‘™LçQd&•¨A®ÊÒ2ÓGâµ¢¢Øˆ9J–PwÝ ©•µð_õTy(Ê Mð¨H™);;›÷4M¤°Ef*[V©\ÙµjÞ<-NÀHµjJ‰Oa¦³gϲüšÈ+Rf¦R¯^¿åË—/X`lm}Ÿÿô´ÈHÍ»¯PÏÙý­T¾|y_Õûù¤3ý“$3uó4œeé!6BYj·äêb¹yÜ®øìU¦GŽ{'1’šÕÛÇqHŒæ¹¹e·²>Lóqv99½>Lø™ [EÍL7nܸzõê±cÇ ¯;¢m>zå®â;´¾‰66ø‘¸@n @$HN#f6å]gد_ÖÄ››ÐäAþ …lUŸ S7Ä•Ì4ë‰,S°söŽÁÁÏÑùC´ülMÏrÉ•¿Ã,⡇¨DN" ý›6¸Ùv­p«Ê4ÕpÔµ–pà[´`Û7$B‘ŸO¤.IN¿áì`œîŠð{ö›Hlä¶XKfZ¥³mðnL’{ŸÀ0= :þè}=ˆ†D%r!‰`tmmñÃ-´²Ç÷hÉÆ1Æ×çð«Ñ *Ùá{[|­,ÐÚm®¢íüx?®­Ú·˜™)1QÙPo/;ƒO?~8mšêÜÅÎNéTÂ"o'¢æ/”vŽ ¦)ÕV(ÍÄÀÌ4eö°¤ÝýŒ•EÙ.|H²_ï ¼UR”Vò"Oؤ®/Ó&‰Œìþ‰Lÿ–èìÕ·Ü•)[Õe:.(¼ô¼>!lX~[.^TA÷WÒ Ó«YŽ(ê³tŠÒ¬³{.*°lØ-Îð¸ñÌSE€×"'u}üÝ'­QÞùY<i”¬`žÉÙ1­µüÝǼ»è¨àÌ,ÆÉt™‰"AòZZfÒ/Gf"\ê.Nj¢³í ÏÚ™"Y¬0+N±‡^”çO³H™©H%çæ\]]Ë7ò˜i90Pq}úÜÜë ààà iâÿIhüøñ7ÖDžPñ2“»ÑL« éli™}⢫Ë}3í‰ËZqíü)•“"2³zx»ŠÔ0ÓrÇ{ýÂþÑydgw~øP³8ü?žŠš™x~ÊÑÑ1Òðš¾ -CæxÓÍ\ÑÜßH DÂÉéBµ_êT6ï3}ô©ŒrËÐù(F’?H!d‰d¦EX=f`+Áe,ŒÄÑ&èúZõÅÅjN jÿ™´ÔV?á:Q‰$D*úÎÍáÚ îd¦Ï`þ¼hŸÃ[¾„'ßúnßÀå;8}{–„'’Sg˜ÂzÃ@LÕŽã¿ãYm*vÌÂæùX·+ÉLÚA¦}£ Lg0ðú]B/Ct“´D@$*‘ IÎø–à†¯=ð•'¾”íã…Ïùº|†ŠnøÊ_9àë›øÆßš£ÅU´<‹ï7UíQlÌÄ;þÖ™1½J^! ²}¶cZ>¬;=zDɬESøÔï:ÜFiP2øÞG½gÕ¾|óÜX²Ô}”+±@È9¡(ÇÅšåábg4öî%þR|ƒM4ldŒìïÌëøKˆN 4tY  -q’íScYJ‹Ÿ¡¿'>hÊn©ÄDÕÓ0Eùà/¥©›zrÚgÂö÷?:š óùrýqMsÎç[oqÅz¼Y ”‘¶XœœÆ2Æp)\Có<Ç´y¥1;/D“uä« hêgb™‹-VVç$4  ï‰ð‡‚ê>$:SÔe‚˜­c›K#–†´Ñ/tÂùì«'Ž¡…+몬ÍD•µÃÕn»H™)''ÇÊÊJ)li×3-Y²¤pX T¬XñæMu¹ÝS™éÊ•+¯|œ‰¥ýà~k”k×®éÎF½ríØÁ/ï+“‡‡GÆ y”ÑmÛ¤WŠ™™Œ§[‡D fZá˜2çúV¹áîþج–WÏúªãOÑYY=}'„jÐh•ëÃ^±$@dg~ð@ÿSaª¨™IÊÉÉ)ÚÐò6> BÊ(yu®¡/šxãs²¡ô@rº‰6u+6r®r¥|Ç«è^eW¢#»UòÇ^LØ©›1k-HfšƒÓ°à2‡‡âX=´ú ý{àÊÏuŽ—‹¯Öò“¤%¢ˆ¨ô<ˆGMàûüÉLõaÓAŸà¶4†!o5†!€ü$ቤErú6į_a*±é'¬ (möOÆ®™Ø¢ËL[1C2ÈÓ|ý LFèj†N×ð ûû[hEL$,’ÉFl?4À§hÄÆ±ÁG—ñj;j5Fy?|êƒÏ<ÐØMoá‹ëøÊ _ ùìo~.6fÚ¹SayzáÒ9 àgAàKC5Ò¤ü=ýö7)øCí¿»60b]LÊu†•-cõðbù¾6%~Ä aH«*h@†ß¸¯ Mù葺®¨³ïaW"Öb·V…Éæ+l^è»2N³ÞÛLJÛ…ÉüDøYŒÿp_ÕûJµ«JÙªµ+oWÃç/9cE»ü@ÙæôGi§?dTÚ':ágËV-ÏÈ%vy¦uÅ©§¨ä4\O±THš­Nâç(=/ïx±4û{ñ4Ÿ¬ì`±`«•ð@\[*ø|Ó“Ëè\‹VW”– y?‹<йxžKâT<´ в+ïºòÒ·u¢º)Ü.ä;Xæ¡(³¬”eÚò“å¿0ûœ"e¦‡Ý.fGŽ?Ô˳qãF õgŸ}^«V-ñ¦Ò¾ýS&¼¢¢¢ ½Ÿ}!±=ßxã ¹K [†( ¿ Є^‘ˆ’ZTò÷l*»X™©»»é´ëÑ’™\ÒfzžÌt(&s±Ù•óþê˜S\VVߨéÁÒ xæŸ#Bþ ‰Tÿm–R*6fŠ54Ä4þsÅA¨Œ¤|惦$'W4ßõógåï–Üõ}3K´7F—÷QiÚ<Žbä~ŒÛ‰)[0sæ¯ÀÒ…êv"›¦bÁ…ø2‡ô„~w€EíuÝʤVþ¶’µ––ÈC’ê#´¿Ž ’VQ|ýõþÂ>FÓ|ŠÒÕðj÷oáÜ ·t±©'Î Ìjš„Ý3°uÖ“™VcÑFÌÙ†é{0ñ~'^2 ÐÛÝ$0‘É…¤CÒa‘¨DNb#„àã0|ŽzlœPÔ F]ö FS” ÁGl(|ì…†.ht ­ÑÔ ìçµõ?.Š5àü„„„HfJcÏ&Ä.áP‰1èð®Ç¡V™>ë÷-e÷¨Y-wZi×<.IUÞ<–]Þäž&JóSJ{¨Î$K‹Þý]íñgéá¤x„­‹˜BâÏð`EqSŽoMïRËý­‹w­ÀNy÷„¦¥|xi5¯ žBNe×{ô­eóŸS×ò­!#5ö‘(„æ3V“æ$æÚ˜@)P› _M¸a°´ssÙ‚œÚ‰#Ûņğ nãyxuâ£öT´y~8õÅl ?(Êûb8ŠÙ;Š(ÒN‹!(m©ÈX¬ˆ6ª5vAbjO÷Bùìßô üé—®8‹k±‚,ØÕ wøÉî_•Ìw‹”™˜>9Y½JщlÔ¬™jü)Q¿~N™2M›5»¢yï S^-3>|ø›o¾‘ÏÕ³e^+f*Ò ¢«W¯V¨PA†ùõ“©be¦^צވ‰£F+ݲ¦¹ŸôÊ\hj¢x‡áĬ¬nþ±såvs™kB´ÏùCPÿ©hô¢ÌfbráüùóVŽÑIê*´‚ˆÌgh–€wãñ™é&ÞñC­(Ô%(HN/|Ñ¢òâõíÄ"hstÜ„ÖUPî Çðƒ³“Ø;j™i6OÆ®±8@|é‹£d¦n¸Ü f?ÃúKìÅ_%Þ_<ÜÓ~ØÁD"âQDWÇá2øô=Ä¿‹´Zˆ«"ù‰\EÀ"95…‘Kb‰4F&ký}…‚Q8ŸÈÓ±m.6HfÚ„ÙÛ1m/&Á(¢Þô»‚&èL`º¶&|ã¯Èˆøô6>!*Ø1¨Ma㡦j°¡~P€¿÷#P'uýQÏõñÉM|º®Õ‡¥\ë:3ñ£····±±!3¥lú`—··Â5k–¢>@Ù®]•#*Ët`â©Æ^yúãGªé<êÏþR>Ok$zz–VR,âëþâ7)¹CHëìXŒÃoŒ†£‚ëʾÒã×b?öT¿2ÇÇNõ¤ yâmV–4ÐzˆÂëšö-‚c¾·$éf©#ÀŽKbï”NŠÚÔÔ{â l#yF$j%öSŠ H!]Q$*FuÅ jÅ3ŸÓÓYqf^ôÎ…òÙï:¥}–Óœï1íÚþˆÿ“>Ø}ôéO ùÜܵk…ò¼ã3uæŒúëBk[¶ÈÀO{åW;7׺uk¶¶¶~­æævîÜ© ½"¥§§ñÅ£F]åÝO×îÜ)zf266fï»wï^•™&Û%ÊåÝ«<ïLs> ™):s¾©õå•™R339Ä.ôWÓPëbîw¸óØ?Ò*tœ™"ÜÖÏ=düø%B‹/úý÷í IIÏHM8²uõ† «Wí8›ç)â1‘™ MÓP-ÕÉLö¨„D²‰ý1bú‚wÞ/{ý­¯ÑÂ?X¡ÝV´$3À“z¿ïÁD2Óz̤̓ºeÂîßqˆøÒ[]E€Î0l«¶¸Ñûµ:\Þ÷ã†ÕäØi‰HD6ª‰ÄÊ8Q «#µÒ¤1ü6RÞAê}Ä’«ê!üc„¶ˆMÍàþœ~€-iŒLö ô‚Þ`œ‰£ã±o¶k™i3fíÀÔýw #ˆzèm„®è §äœñ-ÉMш¤%*‘’ðN Þfã„¡ª/ÞbC•üP-ïÄ¢f$Þ Áû~¨ëzgÔ-RbÉ7ßéÜÜÉC­ñóìû %~ž¢P” •Òÿb@רAJ  í3DÚ¨´R"™\Ôáñ·ž´]¼ÊåÊž-âï>¯‰XªFåsÞøŸtÕ±cGþÿý÷?+VTºwW=ZÑŠƒ™¤ä8S‡‰ö)Ò©÷*ß»Óô…ã%½¨Ì¹&ö†*3Qmƒ“–ù©ótÔ†Ì{=rÊð*"œ™R’ƒyóJNMeŠ0ž’’‘žÁ³$§x“ÎïÚ™¨&___Þò¤LLLnÇ ² *‘™ ñf ªù¡ºjDã}S¼T¦^Ùû%ú¯¨æ„/õЄ„qßmC 2Óvt<…!ËÐkÆ®Àؘ° KFaÊ lŒåƒ±m ŽÕÂW0°5öµ…aK˜7Å©¯àQêf¥w‡®ü޵áø>¢Þ†U $U…K%œ"3U­ÊȪ§Êˆ©ŒèÊp!5DÝ |è†Zî¨w®£*!É•ÃP9•o¢R*“™Ä‘ªö¨ƒwLð¶j]ÃûƒVVùâB…Õ¿+RfZôé¥M˜­G*V|t¨ÝµÃ–3íM1…¤5v“—uì”ÒÞÉj=qüùVI,~Êw°Ìå‡o¶Ë.9ðO†Çààllƒ›&èL&.ùÛŸÈQšµrÿp|„º¦ÊE] ¤›÷õ7²Û¶¬Xôý†šb˜G$ô”a­É,2™ ËÅõÚ·^•é’efñT9Ê𿹠û,å›/ÝcÕ^LàÏøsˆáÔÔ"d¦ììlÞ‚4‘bË6tèÐ.]ºH0Óù¨ÌÅÆ~&1yÌJ¢’á͹¹¿=ü™ŠVg&¡4«›65ŠJLMˆ¶70sѦғ®_:fâ©K ×ѵk×" ÒQaJ÷Dé (ï‰JQx+ÕPÓ5‡ì«T9£¤c™OÜÑÔMÑÂ-ŒðK}T¡RԠͰ ãÖaÂrL]Ž¥“0o¶ŒÄ†¡ØóNÖDãO1¬-δùw°©…џëöwÛJEÔ¬]É©üÞE|5xUEÚ›­€3%Ѥ‚+âny„U@ZE¤TDª2üª#ñm„¾‹€:ˆªûOÔåá7¿€Ýwªé·ƒÕ—˜÷+ŽôÉ~Ø)Ù[1 ëçbábu«Ý™+Õ­NÆìB¿ãèm€n'…'…+ªc…æŽøü&ÞÆ'ö¨Ú·Q3ÕSTv¬œ…7ÃQ1 }QáÊÞEE1ÎT1o¢r"ª:£jjšUÉ8ñqíU‹–™22”€å–ÍÃÎõÔÿâûb¦LZk±d›ÖFQ¼„ËvGüA­MÏš‰ÄMòf‘h¥D˜&GDžjåuœ9éÚ’¼@ÕMéûKŒ+ƒ‡õê„ïÊyPïÛp?4^ˆ5¾hr¹BÏMïOWÖ(ÊnÑs´'ÑÚ‡y{ªH«,êBc¥òÕBOU'¯ð†"¥¬í¢XÅ“äi’x^ÎåÒ=Ëj‹K°Ø¼ &G¤žc¬¯,³È€®å)|û‰Ï1ÉÄÌ¢{†Ç,UÁ_ î)ºŽÇ¾hÔá§vcÕéì7禧!311ój"Å¥øøxö»ùÄHñg¡÷³”··7K¥{u¶Ì«*ÌSÅÏZzubƒLœ8qúô鯒™z:ŒqÉ”N½Wß›sS?HŒGèGfÎ7 1OÔ0ÓO¾9ëüîÉð¶ÜÜ‘ÿ=+WÄzQfººse¯!}‡ÏXlds鸾æpz’áþ}†®~ÏZ|æää”dhôeG©(•‹ wðF6ÞÌÀ[)xÛ«VZѥ̚¾Ož`oç‰/ñ­œžkˆ*cÐì ÅÈ}ÏÛëzÌ[Že Ô¡­°w$ŽÄ™wФ†·‡eÜüN_Á£ |?Áí²> Ë:}E`ªäªH'½;åZõʽ,H+‡ûåqõ&²ßBFu¤¾ƒ¤Zˆû‘ì?EÀðú.­pKNÏõÀ•þ8? 'Æàà윃K°r nÁÌ]˜Lf:‰¡ÐÏÝÌÑÑ?: ¥¾öÆçhŠúQ¨‡Zɨ‘†jY¨Ìv $ÝCùû(Ç&’FfŠ@¹;¨˜‰J)¨‡·"ðvßݾ3(w£tÝãU[)3iþuÿI‘:›|$|gÓžŸù‚HL¶‰Ë( ðòHþþU<<≃ùm‰Â/ÆêÞÊ7-]šÁxÍÏëJ…àãqý¿ÝóW+ÁCw+è¯üãÞHÁ5òJHÓøª(Qš  I,ù©¼dŸç5Å:¼”~ÞqÚóˆ6C'<[¸kÒ=ò¤uWi Î.Ø´¸9µ¹Îui¿ˆô½ò Æ,2 µ¹Â%&SNQ”Ã"0ïñÏÒéÓêÃöã³Ô,óÅUŽë\WÚq\O„›ü¡ §ÂψÌd‰öëF‡º¸<}=ÓöíÛy;Z°`ATTÔÉ“'-,,Ö¬YÃÄ{öìñ÷÷çýj÷nr¬²yóf¾åââbhhÈw×­[G´200°··çÙV®\²wïÞ€€€ˆˆæÕfqvvæíîáÇ2‹¾¾¾ƒƒ³lذi˜%00P›eÓ¦MìÑy7366–Yx°’œ¬¶§ŸŸß‡~X¾|ÿnÝFò8ß9rØ1ÅÈLÃÜœF¹gÇ‹5LkÂï/µ1½-\ \ŽÌšcr-%G™<ÿÚp_†ùIN¼¯ ÿ§"Ò‹3Ó>û˜0½]‹ºÿÚuc3¥&Æž>°•ÚuøLœp[šOü×M64ä]r JŒDI?” Gyb‰!U—Íy£Óåò‘ø€ýœ?>#[¸¢ù-´º†_ÈLcñÕYüv #ö«Ûûçg¦8Ö *£Î·XÝV­aG¸ù>ƒÿÇy¿ŽTýñR5¤‰™¸œ È%$•@íR°(…G´Òøƒ&ÉI‹Mo#å]$ÔFL=„7DPSø| ·ïaÿ#lZ`Ogœ#3 ÅÉßqh2vÍÆ&ÉL[1ƒÌt¿ŸÂ‹èk„®ìn¢#ZÈ•L„ÂpÔ‹AíDÔLEõLTa# IKQ†} Jù¡”=J5D‰”ÉE¹THG¥DTvy—å‚7Þ³GU[¼Ìô¤ÒD+íÞ§òì9[E0dzv·º£‡–ÂÖ „úQ$+§sfJ0°Ýøé°ÁÑEnî[ê“GÄ#6;ÃíÙ/““¢‚,£ot¼ÃŒ£ÅhN‚öxÚçŒxÕÕ™%$Q-5rÖÿo…æUdq^­CòŽ~äšv ÏÄ[Š€öZÒ~}â¸#Ï w¶›7 EÉÕÄVÄÚôϲâ$mòÎÖø‰OµáOÙ*³ë=¸†vü‡]w4—ÕÑýꘛ+66ʦɑCß9Ù#\qsSF«+ ©6Ë4eÊug©§2Sa3±SôÊ·ÅO±ˆS¦L"”&ž'B9@)F‘Ã*V¬ÈRiâBÞÞÞlOMä5{MèU¨|yÕ7¤S§N €)@- wïÞü²ÙÙ)ï¾[ŒÌ4ÒÕy¸ON¢d¦˜ûÛ®9 f2ŠÌ™d~#CÃLíÜþڬ᤽wïÎü™ŠXg¦ô´„¨ˆˆ°ÐÐpþì ó··¼îì§yïŸ$™é/” 3B‰D”NEY²B*…¼S¹^H)Óo«G£N(ꨉšºák{ÕÿõO§ðc)”<‹Ç1œÌ´S7`®–™Æcßpï„õ¥Q¡3L~ÁµV¸EfjýF¨Ð:%¢*œéYÖ¸ý[¥R CD"‚ ¨]V%ð­$þ”äDl*{oàéJ5½Øñ n7/{å–ph‹mq¶ úáœz3Æ`}ôan…v¶øÁßzâK?4fO4ŒC­$¼CXÔŽ0˜”¢dJ$¡ÄR”臠Ô}”¹ƒr™ê´Ý›Í¬K­YÉï: öÉ"˜›‹õôôä'õo˜IW÷%W˜üè+¬CÞcù´|b"ÓŸ}U t. oÚ²“þJ)!z}MÏý§Rî÷ûå»ß+}öƒ’½ßC<9›`T§TtÙe6c?‚²›¨SBÑÊLlÑ0Ó¥„á_Ÿ÷€«:Eò J+Š(ênquš˜¡§äüûû2y™ž…‘F5’f=ʫȆ¼ZŸ¡˜ˆkò ÏÏ,߈½Ydú1>D ú>ï*ýD.IlD+–Š 5ò¢¥ÄH Fê‰ëˆõd Üdï(2’GYfYZ»¼b´¨D2Ó¾E–÷.g>œwÚê'“®G?a¶^Å9wùo‹÷ßš’¥mZ5ý\ëRí K÷¼ùß»¬Ññ2¿ß(Õ¶õ姯=.RfbÊW…?þøã‰'4‘<½ªÂìØ±£kWÝg(U½ªÂ0=ztq3Ó8'!w“„O¦µ‰÷¶X:‡f2¼;Ú2æV¦†™:¸þµ+R37g•“sõŽfÎî?‘ ÎLáþF3ÆR£:F L&3Åã½dÔÈÀ[d&9ÈôJ“™Øµ<ÿ¨Ë2Ó#”|€ÒwQ6¬šUx/°¤w¥j¾¨éˆ÷OUý¶Ð™‰ß¨¨¨   Âb¦§*<Ïfæ-Šj$|ÉÕBºK?¢Äöº³1H×Jrê‚XEô“8þØàòñÛ!?¦Âð®%ÚWØž‹põ-uÉÑJ­p¥Þ§áu"þB°ÂïR&ª”íñ€ï;ˆ) °Ä5#N€=‰,ª¾p•D«©{¹§™v¯84¯R4R‘< †U&0ñ æºð˰*¯)ˆ#ÛDF–¤H3Uä"Hñä,Ó™ª‰˜"ÊÃ(ë–öµ–ã»LÉ´¯kSîo´p•Ìduwȵ$g± ÕÉã¯}ñ¹2üŸŠA/:Îa¿iéáP5+v\~¾ÌÌÌNŸ>½oß>2S"ñ x¡T(Ê™²J½ñÆî½õ̤gê€5ePI—™jcq#Hfz öŒ,mÖîß3S 8’™šcÛ¯8ûï™IŽ3åc¦(ÀóiÌô£Q©õ#+„¡ºj:¨ÌT´kÀ5ÿÀÅ"Û¼Ž–èÀ>¾—0Þ5y§y‹ ÒF±æº¼è¼/‰ð&%ñ†‘.+ѨÖìSZÿ.*ú–hòÖî ÕGù}5M>F§òGˆr¡d?6{…¾÷I]ºàµNœ¼Ž(COÁ ²´?@°œßˆ4å„ñ´Ú¼ºF¼“ã1„$& ü0ɪ%‰™J$í®>yp·¸D B#Ä,£_ (7(Š£8ÕVÑ\–yÍEfâÕßÙåEk‹ÓJçL•E½Èp¤¶[‰¥%¥14¾%/͂ɺ0MiQeÚ÷â$²ân¢)ø)0—Ý¥ç¨;oý)Ë 5~|WN2ò$?V±á¿¿ó»ú5OPêÝPL\•µ£Cg´q{ÖîEÊLLYüŒ¢UÓ¦MÏœ!ÿ­¢.Lt´Ò¹s~ûòËã-[¶Ô¤ÐÑ+l™§êáǚЫ™éØ1åÒ%»b„‰_ã‡b†®cÇQ7ï8Ól»÷äæqëÒî­·t“[¤\‹ºÓ÷FšG–†™:ûýy(í?f*>½àz&Ê{×ê³â£{ɹ¹” ýRQ昛Û2¹l{“2)x;ïʹ92“vnÎ?_B‡ú¨2mžÃLQí{¬Ò›û^ŸÊ¹9D¿‡øªß™—ôoT©Z”vn®fcåÜœd¦œ›“ãL?¦,ºÁðùss§0äɹ92S0DàC97—†jÚ¹9¶†œ›£‘œòææJ˹9û&å+¤Áô‹7CUE57'UüÌôT cçM~"NÈF\ÞC5<È®ú±¢œ]A¿eNåKÊ®T·uY¢`¿‚»J§ïÌøa ÎøÛ£¦Æô,V>}¤4T”úùÞ¶HQæäXŒê‚ExEš®§Âؼr’odFRòÙð¼ì t²,TÔðàrqd’Zc]†þ ]wHrGÞ_óΰ]\ú ¢x €£øJRa6 _‹dä­Vâòr<"Kò–ˆ²…e2š8 áL¦”¦ë‚|&³\!„ßÛÞe[qb-æû³Øw¬Rz®Ræ _…Å´æFêBþ‚¨H™éîÝ»rŸW¢°°0Þ÷4!ö³Eºž)9YY¼Xµ>}ØÍkÂ%J”Ê·{š[æÕbJ>ñ7¶&ô*$çæØ ?üðC`ðо}{~ÙŠ{nnÎÍð¾±÷d_»>3w­‘_˜ð;p#æNW‡?}ó˜©{ä£3™_ÿ©Tpf öÕÿ}0Õ£C×nÕÀ°]&·4ïý“$3Å¡ïPÆeBÄÄ\©G˜¿¤B2j#¢P÷É5à&èÜ ´ÅÇÏYNfj…•]`,×€ çºX&×€€ÈZˆ#ý”¹öC…áûäP“À&w R¾5àºÎÉ5àD®¦»ü'\ÿÛ:ã ™i(NŽÁÁ\~mÑÂÍžº<•´KšI‘(åŠR¦ (ņÊE¹lT·µLóë¥#KT F ±¼ök»¼ÐÅŸÀ¼ÓRÅ¢(öÍ¿ˆQ‚ËYñhý{b(…=úVòÇU¥ÉÅ¿{ú·[§H ý¸LHŸ2úu§E}•÷­kgð•x¡=N;#Æox!^ñ[1œSB<¿Æ+2\Eƒ6âÒÒØÊrî¹h?§ÖäÀ­”ð¸Í"+Š… %é;1ƒF\c²ò‚œÎ‹16fÜ”w‰d‘˜Œò 0^½³ðäÄ4&¿x’,ñ ‰I™ Q”£bĈ­Çì$*V„•"²<=Eʵâ„ÕZñ-Ž× UZ”u·@‡%úí¬êˆ‹¹Úæ Ô±Ë}ß¿ò›Üú—¬‘›‡êÇW@)3=xð€çÑDŠ],gŸ>}f̘qù²¢¯ÿ˜õ„!/ñ¿aŠ2oÞ¼ºuëfgg‹Ã‰-óZ 5988hB¯B’™(¶IÿþýË—ïÓ¥Ë0 ¸ÅÍLsm"{%Þ—s9rrW] Ìd—p§ý_Úq¦‡ü·†©UpfJN ÷óþ–„"â’R’cc3þy{2S’¡Q Ê™î¡\2*¤â1{ÊTO.[¾ºœ˜#L<ékÀ]:áCÉLOõ50»ßÀÛ?bcWI_-àØ¦Ò×@=„K÷ßo}oRòvý7«Ääa“ ™‰œ$Ń˜ª ³:Rk"‘°UQ/­¯Ùϰþ»Ã`ÎÄ×€t¤À§ú 6iG›î£\ÊÊVºƒr¹øì\I€ÿvÞyÞyçusßu÷W‚­(b'6&*(Šˆ X”twwwwó¾¼]J)¢ûý7@D0îñnŸßœ7;»³Å¼;ÏÎÎÎo€‘E¯pÞSãJàålx-Þº8öÆççGémÛjæ’Fß±äÆºîÞ±m£¡u=Ýê{7ýÍ™îå:Õó+¬È‡Qo½aø€ FYƒ¾­ðÞø]²Ó7jDÐ ,3v°l"Dè¸äG©€Õ<=ˆùê1Ö3íét@c@¡y‘jkAuÀmP-^h§E CiÀô¨6°iÔëu¸<šMÛ¿ÑæEå°•Zmç Ñ71œ¡ôh&õ5:<"¼tã¿_RmQ¸î<.£Ü¾þ:Êrpëç¨cAÁÂe¾£òâV¨‡žßD4Ô,Ü&ô¼YT'*Üa\ø‹öÞë¾¥ñ PÅÐÑÆèÝÛ >©&þ“ %ÂÏÆ—ZÌ©¶(T=ú$ôο—fÁWV/k@Çz$zÕ™°ÎÃŒÌÄ“w~Ô¨Q_~y æ‹/È._~IÚÌoø÷èMhgÂs¥££³»ãÅ»Á3óØ+ýž+&ö$¨¯ÇÓÅÄ‘Îã3ݸAðx}èL»#83%×é×Ð56ð¬§)IÒðg"QÒîLÓZ[C˜þà,}ÀÃ;SM±÷N½õ{ö¶wtŒŒ»`wþ€þ®zû„~RG9S@ £l`$FåŽý¢p€îñBx‰nd¢Ì¡XdÂ×Éðc,ü*þ0Ý&=#΢3°¶³3mèLA÷9xkxÌ¿IúDÿIŸ‚ççû!¿è=¯hpÎ'£4lÛGHAgBO¢ÚÒ(h¤…‰îÉ„šE4@wfú ²èϧ`í;œfûBpFgZç»8Ó)Ø@;“+,ð…™Á0% þL€_Òà»ÎçÐùð²ÆÉ`,­M0 ÍIÃ+`8ž¥«0²‹aôšCR=ø… x©^É„7cáû±¿<¼3…:ŸÏ¨«¹hx´ÊQUZ ’HÒŒ=ÓxÔ|²÷·¨,ýÜ™:@ 8A=ÉŠâ¨?Q<ðcá€ñJºµ#n“f3$ºõàÐýèßh½9ðÅÂÎsÚÝùAJŒÆRîE'bÀÞ fa…×JM©¦£"à$.é^ Ò¿¡ÒS“˜¸–Š£Ü`ÀôíT«†\ê)ÿö·;† J5,Ñq:Œ¢ò¢¬H¨÷àèÄ(*û×TvtÜy\ÃEJéR¦…[÷ 4èjŸÑÕèÀ€ÂÔ€ò$¬µqm‡¨îM¸Å)”‡9Pƒc­£¾-ó¥êÍq\³|éVõ( §&YâÂÏŠÚ›™ä@MÑÑ(@Ì&ž^u¦k×®àùx’ >|çÎii!©ož†ÑÎÄãñpë== Ä3ƒ§”™è>|˜‰õžä˜–»"ªŠët‹„Isó^¶jÊ™R¯6ü–L”¶÷ŸÛÚšÀ:SòHý™8œ2Ogg SSÃCGÌÍí]]}kUs£3 ü¾†A3aˆžÍ‚gÂßzÀx¦:xƒþä\>|Š7©¨tpÔ7˜?À’r¦“ ×Ù™ÖÁieX‡Î4ÜfýÞ_!^ Ž} Yè:@)ýi^Ô¦q$ÂÍA¨DÏ|4$€Q(IТ0 -ýÕ9¦7 îm¨¦?9‡úõ-¤ÿ ‰¿CŒ „MË™à¨NKàÂj8·,hg¢¿7‡ÎtV]„Å. î ³A•îÒ„HkY¡vh“^”À ´9]…g+`t"ŒDg’³rÃñÜ—©ƒ.©Ž©†ñ¥ðj¼‘oGÁû¶c{xgò¸hÅICÏîH­¤¼ÚTëÓ^fJ‘ššÑNppðÓâL42êý/ô¬ã÷ï'†%D’c…c¥þ&Öåáä8–sÞõ Èw¾:êømTó V¤è+(ô§èt©¶™Ï(1ÓþP à jyŒ|LÉÊíéè¸iúQÚAjy´LG×ÁD\l•Ø1¼ê ¦ãæÜáà‘œ©ÌÅÄ^õP˜¼¼¼ø~A_Áà0J ã„ðâGyƒ­4Ç¢7ÔÀ[´0ÂÇ9ð ÝÈ„ªhÔWX€Ît tNúÎδLuÁê3Pù&«ƒËðšè4h6?QoÏ}9¨Mÿƒ’÷ èÕ—3q^utý‹ z²Ác Šþ@/&¢-Ñßè}jé¦.ßè¨e3ÀW Ü5ÁñŸ£e•‘þF/-Oxž cÑ™ð‚Æ]˜ýìg©Cª¼R¯Sßè}7 Þ‡ÿûçÃ;S¸Ë¹”ª*›&EÔøڼèS§ª»{0‡ôÿgs÷2‹’‰‰ñå[¹m0h÷ãŸÚÈîGïÓ5úmâ¥[äó/¦‚ç3^ó{ckZΆvšO5·`$‰ê™ÔFuý9A­]j#ÕÍüÛX2É®?(˜w.•ˆ^5 ¥„jîDœ…2„³^¡„ Uæ/jͨD˜ˆ.ò<µ<ºý^êÚ†õ4OYËÿ¨NBÌÞRæ7¢Ó$½ x¼èg'©DŒ¸·7üàÎc·²Ú™w‡T¡Ž«¼šQN+´I)Ü:<Ó¾6{J±"¿r…Ðìø—Çu<¶¨•·‰OŸÍ¿ZÛàø Ú#¿ôG‡_¨•©¦µî[0…^u¦†††°0<ÁOÜÛáÇ_¸p¡·iôh¢’áüüüM›® pd̘1ô¹zé%"=œÕ™ððð';$Rºí¨ÞÇ=Jhiu }ñ^,ëÈÅ‹IgŠn˜ÒÈ|<ÎRA:S-åLhH?äß.ow¦­×¯—_eâ,}€üo9Óëåóùqqqõ~Á_ƒ–àõë‹oT.öf¼ƒö€QŸ 0¥Ã·IðS<ü†Àd?˜áóP>´à»ÏámKXo›Aÿ ìß ‡Ñ™Öƒå ¤F~¦× =f&ø¢Ó Ù(ÁæŸ ‰Ö¦O!Õè]¨c²j¤ÃÜ×Ô½ õÃà×g`×+ÀÀ“¨J¯‡¶%t,4­ èsÈEaúR…ø?!j„¢–M€ÃsÀ~\^¶kጜìp¦ã°Í6µv° «7˜ï³è¦¦ø=~¦µ)>+‚Pé§ZxÝ‘ ¯á™I‡—N˜W`^)õÊgéC,Œ+ƒ· álx/>ˆ…‚à“3c•Þ™$å©»ví´ *”)Š®ØxZlÛºc‡þ®=‘¹Ì³¹Î<Î$£ú;ãU•J¹ Æ.~ã"´‘]޵×îC¨gX/Rñ?_‰B¯’Ãs`@ì(#SÐ]~¤žOaü›Ä%Õ»Õ+ n’ 0¨M3k™O‚Zü†Î°±âù·^ –ßI½µ‡*öµ ÊÇ'T ª ®ç{ªé×9Žú½g¡oaÞ_©7àh rjkWøµ0JÏ;Ô˜% Ýëç{z\u ô£CÜ[4³dj«ÿe‰iä³ÅE°Šö6óóPr?q'Q×ÐÌöP›;H탘 JâALQp—2ùT¹ÀK‘'!ÞT'žùñ4ÛÂã2£w@[Â\«êïUgÂåñ*ÄL<9ßyç>_Þ«Î4béL(LŒù#†1lß¾O׸qDZ³Xxfzzl÷D()ÁbÕ_è2†{¯;—‚v¦=17§_e~ge̓Úê¨1Á ¯]û#ïvE»3in®e©yDg’¦†û%ÔÖ󅘑I{RRR¸~¡ŸÃ°ÃðzÒgC?ÌVJ%ð?úE¹lø2 ¾CaŠƒ (L¡0)¦yÁWX€ò± ~V‚×NÁ†°¥Ã™ðÆw-ƒÀ mp ›š¦ƒÿdù4›XÔ¦ï í+ÈBõù HsT4°aä[/¦£€_žƒíoC5hUBµ¢mé3ÈCßú2~€”_ áˆV0Uœ>sÀy!8.†‹+ÁZ¬6ƒÙN8J;“ l? z§a ¬¸ ‹œa!:š_0L‰€‰¨M ðK ü _£ æÃ§´9áy@yÂÓ‚þToýÃõȯ˽í0ñå1’%ð~(eÇ©ðQ|ŸûÁ—–c'?¼3u¢..&‰öÀÓèLmT‡e¬ƒššÍ™e£ëÉF£×(“À:ž–!” 4Œ¼i­Èô%^ùJÓþç>¿@úÊF4{òS¾8wÌb…Æ‹aÜ[˯M§ôíç8A|ô}ÕuÖ#-º>…Ú(—zŒ…a-õ¾ºÅ/TG%t&ô!´"ºyiVûG…Ñ®p™ç©ÒcT¢Ea ÷×ðõ¤W2žÒ¸ÁT³ 3á¿t–*àª0Üi<»;¼IQô§É¹¦—ŽI¾)ÕÝ­QD …kø¸Ø!$"®‘;ïJ=­û“Ú„'A,¾F¼ñR^žðkòûäá?lT¼t“<¥¸E\F•:-˜÷±Õ½íL¸fâÉ×ÌW^yÅË+¸·)-í¦Š²òÜ Ò„Ïo{þùnœ ÏL¿r¦²²2&ÖÀÚ‰Qôº3ÑÐÏæöÄßœÕþåjt¦5Q·8”3•_½úI[[ëIOˆGt&yQLÐŽ•: —ê7 KÏe’:S_Øg0ü ¼\ ޾:Ðç“÷PЖ²à«tøM"~Ž…ßÐ-Â@%T}`–;¨9Æ%ÐY ¿ŽQa¹)l=»€Á0Ú&¿Âôqðúb8­—4Áq>¸Íïið=˜N„ˆß u¥ÍékÈDB¿cË3ÞÑŸFÂOã`3œDOú ?…|¬/!m s¡uÑ-L´0Íßyà1 ,4Àn)د†sëÁr œÐct&CØ{ vÐà œ‡U` Ú:šŸ?LGm åhø#~M†QisÊƒÏ àG<-h© ô ÛãproðJÃsáãLø4>K€/¢àë`øÖ¾;9vÚßr¦ó4:rŒjgBÜ Ò~VP=ŠÞi †ì¦ÓùÙÖú`A „[‡`_L•Âó¨¼S!èÊMrîp‡üa53ó79µ>â,õlNWALþ2˃ÊuR_ÖP½­»À£Æ`D- I=ÃI”*\ó4*eè-ªA¨c0üAÍBõs¢u ÃXê(0‚)fíoêý@Ÿ4Æ…é@=죗¿+¸õðj3Œøb^Ü&ß+ÜL-³ÜbÂ6ÉYXcø©KV+Ùõ%%@¸žííÙ¿?G¼×B z…À%Qß?][‚kø‚} 7èUgÂ\ÑÑô(TOkkÂýýûøñÉ“UÖœ;gMÍ!Y»–|îó¸@g(Ú.L”3‘à C7΄g¦_=›;sæ ëÐßfî OioJë< ó«°•6/KjãRßQá\½úþ­[•¬3=!Ñ™H*ó’].˜Í›®º`šÆÊ#µân>ÊÛt¦l¿wa˜-¼o°ü·£†GSOâRá{ˆø…n^B[B·€i´09ÃÂ˰È–¢‚Œ€¡;`‘ l? »igÚÇ~…iï«àü2°Cm¢ŸÐ¡6ý&S EuÍ ½k»ï!5HiÊ©m?y#äøáØ€"…†„á+ÈB¯úÒq±!ùgHÄ\@4º×$¥…i.5ÄÀL8¹¬W€ÍZ8³,¶‚i‡3…t—&¬ila9Úž#hºÁ|Ô&?˜" “"á¯øMå)¾ABw̆/ãáÓ÷aøx9ð^¯æ¥ôI*|߯ÂwðC0üè ?;Ã/&cg³ÎÔ™`ªû3Ò@9òR*¡1ÀÉa€öÒ¥·é‘é0™ ”ʘ‡h,lX£Ì,N´3&ˆ=Wn/_v[¯‘üÞp†W ›ÛXÌB‚ÛÞ”“¹ä8“FR]§í¨Ðù½,¼†bÀ›wz±e”ëØR=‡4¨”OÚßø#;ªS  3¡cÑ;‰‚òÕ·ãïPc Ðé¸.C÷d·¡\ðj: ݆a AŒÚr{ÀúÛôdG°)!FØo¿ZG} 6L›F ~Þ¾]üw(õ´]í%j?አÿþVÁNªßÕc®:Ñ«ÎôÄQS#6¢zSu,òûo¿ý6Ýú5p ñ߯Ggª¨ ¦M›¶·Ý™<(cÂsÖí³¹þF¿ú³vÙ™¾u¦ÌVu1ӟ颸yQaz'V(Þºu«Šu¦'Ä#:“4ÐÆx•îF““—ʪê„BA¢Ÿ[šÿ†ÉÏÏïy’? oèýò·q”'ÅÂox[O·-Ѷä 3Ñ0Ð3:„ÉVžµèLZ z vÐδ ·Ã‘Á0ø;˜„—R}ŒP›¨wèœg‚Ï4 Í ½åéwˆ™qhB£³”F'}ú*,xfýIhHhT(I¿@ÎEÇBUú "•!|2„L… à‡†6¶œµàÊ"°[6t#“œÜ&»àÈ~8ˆÎd úÇaÛIг]ô<;XFk“ ¨c%"ˆæSÑœÂA‘–'¬–ÐQ¡ðä$ÂߘðÆ ƒ×UíÇÇ“mo¿D¯¡0!~óßÝàÏKðçá±jÝ™ .\¸ð4:òõ¦X‡3E¥¨ãXa¨.½ÑÉœÑ'noîlþGËÀÖ1(†üÑjhsÓiÿ°¤>¾v“’¡Ž¦‰òr´qm§‡lZ2ú¢ÁóôÀwW ‚C5}H=M›Hõà^Ð>¦@ç–F‚PPA‡z`‡ê¶–z6÷.µW˜òe§Ä0ª½[:ºý‘c¨§c¯”MìÊ!®èapáŽa~¿¼“øë«ñPG¶$¡~}Cµ~-yIcðÞ çgç4xÑ3¨OT–©CÀ%?¦Çšúìîíf÷ÓþP´õÚ£$†^u¦'>ÖíLÁÁÁÏ MyL+€2'ªã±;Se%? ` À;þxñ"ÎêÖ™ûU;S¿kÀÐЉQô©3í+¾¡%bœéJC“zK+¿Ý“”nݪaé ñ¨ÏæjËÓ<]#%Šz7kϱT&KîÛ¯ —.]ÂK:ÓXºdÿ;ÃYŒþö üŠž“Ñ!P•P&P)P›ÎÁjXòG›º 3,D/ÄãEAÄÃÇ“€ …gÏ †ÓðÛ`øÓW>Hë1BÕ¦{à O˜á3aæ%˜i 3­`æž±:¬3u¥dÙÝ®2bªúÿ‰jA¡a(§ºZÓq2Ô E€ùà©Ã™sÔàj“Áëâ•+„—Ig˜óì<òe·eÔx’I¢žaáv·0 $¸o˜ˆaCûXtø‹™ÓŽYŠl$û¾ó¾õxþ:°¦Eφ"&q!ÝÕJÌþÂû haiÜ?òà×EÄö_pò—«–ãÜrâ÷ob€KvT‚t&ãàc7qMošÿ!#_¦ÃÚÿüºÔ¨˜}I¯:fy²oc¡3MžLlÝz—3iìÛgˆ…jÀ€;Τ­Ýõ÷¨íË;Vp'ü…%©Ë–-:ÅûηSîž<™ÌD? &&†‰õºtƒë[gâ^ßZÁ8“gcãìÖÖŽb~¼y“Ë:ÓâI|îäÅØ”⢢HŸÓö¾ÉLòƒ  Æ“?p÷ó,`òy˜Žêà hU«6*ݶdËÐ3Ð6P˜,a= Ó Ø‚"ò2¼¸fu8“|ø#üւNÑÚ„Zó¬ZöhNè:Zp¥Õý MÃ{gU |Æ?ÜP§ÐhIBÁÂepIZ•P¼p ‹á"ÚÒ °Yç×ÀÙù°s Óƒ“[ÁtÛGö‚¡8ûÑ™:ššN‚j ßYXƒò×aNh„x°´<á±ã  ÅÃIPcáBMMÍE–ñL²BqöøyçKÇNwÛdH;Ó³¾£P 0lƒÅ{amEL`;4 ÚhI¢= ýÃö ˆ`@#ù> c—Á²¡0t!h¢¬ ²` å %Ú̘»Žb]ŠÖ)Ú¨:ÂÆáG@ ~ƒ1ÐKÒ¹è5`@'ÃÕÒž´Vo…}¸EÚ–öÃÁýp`ì7€ý©@›î6-Oèá- }¼ô±Ó'¤#à™4hÐŽÿ-Ãøq2l1-GaóÐ3‚‡`Ã~X¿Ö¬»õ±;–„Ëå>½Î”G½û†hSÿÒl žs¡ˆ Ô¾5ÚÈ'tè³ Œ¿¼¿Þ‰ "î#®Ã°øß 3iggBª °X¿¶ídâí=1/ù¶Ê¬¶Ì/’™”ZÍ£:¤ãBXoµZm¤Æí3 P¾ma¹­©Ä†jN=z[O>XRÙÕ©Ï¡´P¾EóvümçáK® Ñ_R¤¼ âcï–w6Ô|CÉ)h#Ío°žj*&æ òzyø „[Þ<5Äïļµ¾f@6ùfÜ[±=ÈÊ%»@¡þF5=qzÕ™Ç^¯ým:;åµÉ̬ó³_’¿çL ,˜1cž‡˜5‹ ßOŒÃÄïÙCÿ934è%L¬ÐegúÔ™·´·;StCƒzkë# #ÍÒk<¢3É¢/Ú†VÜó§sŽ™ÚóÂ˦G8íýÔ°,E¶ãììŒÎô|7&v&w Êt˜tWPQªŒ„QÇ  “:…Ét˜ØM˜Ò%ü1Tþ‚ñðJ—ôNá®5t¬œ ÌUÈ 2Õ àuxÞ%ÜÏŽ}î8*ÜuŒ]Î~Á@:N-ö†Ið§ ü¡ L„ßÿ„ß~‡_~;ó±;SYYþݽ¼¼ž^gBP5’ïv¦tª?S@qaE4êƒF0!æ|ê…q5pù$¡ÔJL6!Î ^þÝzK´ž»ùdTµ^¼4`ñÁhbî0_Ì8{ä½-M]As2Ä3ˆíƒÍôÇÛV`@Ü„Áxý½-ÜíáBñÔKv}Ài°®¤é&µõ!n¸EŒ3²ëZæM¥Õ0þÕëkÈl…!&/ÿ°Œ€ÉÚùêÒhð´™Qš&SCbî ˆRjµ©w 3Û|òôª3555õŸRÝå{sxa0`€ Zôþ†3™ššâUˆŽ …Ìge;''zfW;Ú¥ú.\`bý{{{&FѧÎt¼¹ùds3½¬rÙsý„Gt&©ŸÝ®)³fij#‹­˜dç°ÙE±BâxòP]»3áj;HJJJ÷ËÙJ~X÷0†Å°q%ì ãÛÀ¨#l'G ÃN8´ê“áÀ.2ì&Ãþ=°o/öî#Þý°ƒ92¸>†ƒdØyv΂ɇ`»!l7"Ã6 ‡É°µs8[ÿ€ÞzíõCÃôºÌÂ…é\p%TØqˆ ;qýËA[6ãF1àÖ'Â_ÏÂ3¸?ãáe-ÐÆÄ€;Œwg ñ1t/}:š—õGŽ5–´Ÿ(£-`´ 7áMp`#ìß{ua×ئ1v/ûl®[vS&ñ5VSh¿ˆ Ó7Nž‡U(ð‰>ã¿d7¦ÄŸC£®“CØÜäÂkRxþƒÁ•LFš_Ge7Àè”?àõs°Ôf1cdèü……Òsü$ÑÃq[Ê!„ƒ3á5`®ýs[òs™›×žœÉj@újCz3æÖ—19ÚÈWí°r‹¦FxŸê9¾‹ ~:ILƒ€6d˹õaÕ¹ #`"*Ú·¿§ÿpƒü.ï<Ê–ÎQon¤úWõ£z²—鯕ôwkû÷~£7<<|ذaÇ¿~TgŠ{Ô¨Qo¬s<3x2™‰~@JJ ë$'ã-ØúÔ™¬š›-Û‰¥ÿðˆÎ¤Ö×áUŒ¢’+èx'ò9qÔ32èè1÷N]œî€?ƒT¿|ºŸ†Õ`ºNÒ†:÷°N` Ÿ‘u<ëÜsh?¤;\wî<Ôñä˶›ÂÖý°šî?Ô¹ ,a=Ý—ÃdøÂöïæÓªè@/†Y:w®:[¨‡eäcİél§Ÿî­Ã`˜h5˜ÿ¼‰†×¹—BÇcA<®Í`†Çˆ‹‡Ü¹»Tg¬†·`è¶Ÿ(K]òe@‹u`¾N¬ãkàè*8¼ æ=Ì:S·4P˜,¨o«uàOõ•CŒY=ŠÂ-üC €Ûp‘e¬ ¹=øøáè,]r×5Ã!–Ná½êÒŒñº:bþÄú¾-§ "‡²¢ûãà@l}Ë#hø¬áÌÞù[±©€ Ââ Ê™>¥gj¡ŽSþ§ ì¤d:ÊßÇT8@µm¡ºO}…Y>#^ÿŒ3êH£̹ ÏÎßï!õ,Ƀϔ6Šuo1T–mÔÚ°FzR½ïC¯:VuOv|¦ÎÜëLHXXØèÑ£™/Ó<’3á™yë­·þö+ú ½Òÿ'`eÄÄúOr|¦óMMf¬3õ?Õ™ri~Œ¿›gHFv‰¬ó3:^E\\\·û^jèLÉ~…KàýVš&X.‚³玲kúõ´5p–î‚M‹z-O´9¡ŽÐ®;^RCU¢ûѯ÷£å ñìMºo5ýžš5¬ìxU­ãm5 Óást¦·ÓÇÙ $_ßëxƒÆ,]ÞãCB‹ÂM„UGa3n7­ÓÆÃK{a':ÊÜPº6à~¢-ÑžD¿Í‡Ç‚J„ÇEw?ïüBž ôk}/¦½Î4 ¶vœ¨¥`·l–Àù%pf1X.s0Նóǚ°ÎÔ-ô;nw;ªÉ ºÛ»_9Œzô&Ô.†‹¿@‚\1‚=²nós¦ê¨ðÙ·Ýb‰ _KNÕ+ _Óî Ò9*‚3 BÕæÆhåÆå¼Û¼CÇ«nRïî˜õÞœ 5Ìæ»Þþln*A6&ˆWc‰?ä­ø6}¨ùJJÒ2J Ó©1™Ž5߸>ĵu¸~Ë(ÇÆØA¿5Â(,<™ðõð„n8‘r›|RiK=ÑÛMÐ?éUgzâã€Ó¨ªÊÊäXJèC'’ñ9s˜YHppð矎G‡ñžœ©©‰èhŠŒl?¾OÅÇüã?ŠÅgf=ì8à÷áÉŒž••z"4ôpXXK?0x5AIòõõõòòrssstt`øãDLÄ€sq\’Zó¢Z¡H¡EÑþ„*¦šÇ`nEícx6LA{£é+øv,¼@·-¡-Ѫ„HKmHXŸu8 Ï=v”òÏŸÍcȘQ¿Ánú,©ƒór–£:8,€ ê`«ç€Õ|8¡:ö$ëL=f0ëngB¦}^GÖBsÁÿô䛟Վ¢FÀJ@§› Hë~äk¼, –Й¼›,˜}Û+Ç×’¯Èý ²Ûg€æŽZ 'õ©wè*¨É!n^‘ÁX33rˆ&\²ŒêÒŽ‘"\ì#Y!|ŒÅÏf¿XE: ‰]ƒŽì{Õ¦´–Y ÿ=Ôiü…þI¯:S?ÁØëà»Âñ»;”-_¾ü«¯¾ÂìÉ™^}•ˆ¥±ÈÉÉ1bL›6íÛo¿Å,L¸¸P ±ô}äLné477ãÅš™¸/qqq­­­ÌÄ}quueb÷¥ªªŠÏç3÷ÅÉɉ‰Ý,Á±±±ÌÄ}¡ûß1÷ÅÅÅ…‰Ý—šš¬ö˜‰ûB ^zpp‡›ššð’„&ÌΔˆ®HƒÏšûf%œÜv&6ÂÞÞçÆ´Œ÷+£ÇÚ¦‚ïLð™ Þ°£“ìF•å©ÃœP;6ùê+%ú`ŒÎd°Æ:»ŽµiI €Ô1èöj¬#TZè#½`Nçq·é¡·€O<ž_²ýcœÄtzhrO˜‹ËÓ_q¡ÇÛ¤åÉ–š|5Ê*šl È7Úö„ýûà,Ϭ†½(L:±‰ª„FH{Jú2VÛsÀ«ctò7.ý9Æïý¡ðìp°ýDùÎ gyÍ÷™à2 ®Ì‚‹³Àf&XªŒµb©'ÐxQïÊu¦¦†À‚tô}›¿çàŸõ{HEÇE‡jbT<ãLî!¡"=½·@¹Ð™ü¯>qÅõlÞ,u»MŽàLIOh(ÙBÐ-ÍÍÄ—ƒóœxžO>ŒLµ*M$_ªkMõø w êÞFõ;™¸8|µÝÐe_-F^”¢¥#ˆaÄé1ë°vEÇ"ºqÈ)¢Mc°‹Þ÷‰gH!»B] ä”ðõszÕ™ð¾™èàÝ)î?3ÑÎ÷ß66·¾ûî»/¾øâÔ)K€ÁªªªôbÓ§ä2´3egg¿7xð^ €:À_ý…×ð¿íLaaaýªéĉL¬pün«Å“) íô–3= øgËÍÍe&î –Üufâ¾`ÝÏÄî ÇÃ$3q_Ð3˜Ø}ÁŸtVÖCÝ×áEáÞO·`Éfb÷åï!ŸÓÏÎñÏMkSKK ^Yd2®!22’)÷ ©JܹvÕÂùºë¥”K™ÔžéøÞ\¬_¹2„Óßtû Îý—§@ðTšèôKÐ$ÔÁ­Í %c9ØÒÚ„þ²­ýC%èL†íÄEq9ÎÀZ´t4Ð^ ß¹Pª„ž„„>Ó‚`j0L ÉŸxÀÎtü“oÆq†¹¾ô¦ã¸X ¨¢N¡BÑþ„òä isB!ÛÓÍ`)j“ |7 F„͇a7íL;Àð9xa,Ùºd·­sh~èhKôX䨆ôW\P’PŒT!Où!¼!@ÀGã· „aßÁ)ú,©@¨ ù¼ÀIà?¼§€ûTpž —¦Âù?ÇžìÎTPP€){{û§Ý™%ê#$Ñø½^ãOØ!—É5ÄÀoÅÀ聆uÌ8…ï°YJãë¡/+ËÛGâî–5ÔhXý64qý9à¤õ²Þ×\KüÓªg]Ò¢Kôkþì%A#Œjáï( ÿ¤Ú´®¢¥]iPŸöî1.3—jyj¡œ‰O}5oµØh‚˜/"JyÄÇ«ëFŒ'\RÉCÛI€þ4}AÛGÏ ðаØkUªª×Q¡°ä;Õ“ÃyŸeöú) W —vþ$Û“ïLîÝùo¾!lm‰ÚÚÚñ#FLØÌ˜6 WU•Ø·\æÕW›ÎŸOÓÒÒÒ¦ZIé0 :úê»ïþMgÂ3óõißPVVÆÄú]v¦9ÓSÁC:ÓSÁßs&±_]Q’‘žY^^+?Ø™hRRR¢ýª~ ¿Bü¯5¢‡˜?!ê/ˆ¤¿Œ‹ò„>1¯ý›¸:piØÑÚ„B75í†Ã´3…XçY´ ×–¡ÓÐmKW`6êªÚJRLŒ‚?±šŒ…ßâ`B<üš¿`üáûO’ŸY³ãLÇ¢áHø u Šþ~0ÊmNN qÙ€Ž5¬8 k~‡Ï¾ƒOL¨þàèL{ÁPŒ_†×'ƒæz°DaBçCóCÿC[BD)DUBGDO¢¿Œ‡ÿuÞ<¬=ÎeâGGÀ[?CLû‰Š›1 ê7ÿ‚ÿ¿?Áë/pù .ü:ÖžmgºX²»8Ó‚_ë¯Ã0ËáÛššÝYVüÇøç¸ °hM¸Iv*BÖ7â*Mw„ë=cZVQ]þ‡X6|9Û„l) ü¨°7ž65>Ç"¼‹3a©4èo:ž™~åLÅÅÅL¬Ð1¢: ëLÌÞ™¤¾6çÏŸ?gÎåISMü;Æ´|èL‘~Õ_C&†o ãsü €”!å`Ä¡7L„4 ÚœP/惛8ÑÚ„þ¢'·ƒ íLF°çì0ƒÍ–°þ¬¶…åa1 “+,@¿9 ?£-¡ô *¡¡'ae“?¥Àið]:|›ßdÂ×ЙÂásƒ¥oáµ'uÀ·©ð}2ü˜?ÓþDËS0Lñ'¿•;oß±f:3Ï‘Ÿ1Yú¼°æ‡mÆ ˆüËrÐPòV€ “\Q—¹à9 |h[BADUÂãEwü ’ð$|=.txùëL°yNqŸB`û‰JÿR¿ƒäï!þˆú Â~À_Á{8þ0ö2ëL÷¡”z¿š™"AÙó]hT^‘ Ûç¶¢'¡æ¢ˆ¿½ºz˜£y\küFò‡¾ðÀÉÉ¿‘oÉuË›B¦ƒÿlðFmBç@ó@ÿX§±nÛ ¦»àíL&°ý$è†u6°…é h¡0yÁô3ø ]m)~¥U =) ¾Ê/òà3¬¥0ÂÇEð:Óqx=í™ß)zñ×÷ráólø] Õ å M } Í õ+¦ùÀ,Ô¦S0Ã4-@ /U°álép¦plìBgBÉ[ öÚà€Â4q¹qƒ0;Iàÿv Í‡—Eð"Z8VE±ð{N³|gêêˆCãÌ[`øÁy¹].¥¥„íóÛ±È]¸ÐµG‡C¬ZÑÍÍ<¦üúU#–±_&i7ñ•„ë€X,7 0­š°'ˆ¯([¨øxÀ?Üm”ïô{^~Û8àî3–ê€~ôyÓG£[gòôô,++sqqár¹ñññ¨PhN(¸0Nâ• ¯WÁìÑÑÑè µµµxA‹ˆˆÀerss«««ñʆ4¼ÐaÁ¦Ý‹Î‚•ݵk×0Kaaa—,ÍÍ͘—éÈBÿ(è,555Yðßœœœ.Y„B!fI¤†—èÈRTTÔ‘%++ SºdyûmÉÒ¥‰QQÑ_ ¢ |¨`ÀùóÖS§’Ïæ0ËsÏ5Ç¢¤¤4bذT#“n…v¦ââbz+XÚè­455Ñ[Á£‰Db±8‰z³à¿ªª w œÎ’™™‰'äÞ,ô0E˜í³àVîÍ‚s{ÊRYYYRRBgÁÏÈÈÀ,˜NgAiÃå1V8‰Ëà,tåÎYÒÓÓëêêîÍ’ššŠsqoq˜E"‘ày¼¼¼´´”΂ˤ¥¥a<-·‚Y0ÎÂ:Ë#·3:_A¡6ÑùàL&ùAà!ÔóT½ •ïAÅ{P¢Åÿƒ”ƒO!½í«”‰ß!ł֦¹à‰Îæ± ìÖÀÙ pŠv¦ýpð0ì>ÛðŽü¬¶ƒeXá9ÃBO˜ë3B`r ü¿%ÂÏ©ð=Ö7¨A¨J(IÅða)|PïW»ªàc÷ ÃøžÍ/ü8ªpð¸ Ö=(OèXhZhNX FÁŸ´6yÃlg˜{4,a!:“%èâÝÿQr Mòk*ÛÁd%Œ€ÑêpD.i€“Ù}Ûw*¡ ¢¢þÉhK_AÖç‹bôÁs©Cj_¿ØOËË`=Þ{ÊÚOTùûPªEÿƒ¼ ëHù â¾€ð¯À狱î¬3ÝggB/‰aœ•“Ò4•;ÈNÙ„ú@7,NøÇÚ‡ð¯,>{¯i毲m«¯uÛÏÐ×—‚©·`àþ·.Þ»@MÕ-_÷GèN[XH8YƒµãyXÕÐ@î˜æ¬”6,ÌŸŒ):žXv€ˆð‡ËèåXËŸ>Þä3`Öÿžå•Ü3žæÇï^G³÷©}÷|OXo1E‚v&¬öèŠÅK&V`xšFÁ«^»°RÄ옎õ}£'ñʆñ7n`:Ç À%1c—,¸@·Yp³ úw8Ó)Ø€• Þ|;†Ì÷YXŸ…ƒ²(¡0¥Áwè=´-•Àÿ*à=”¤x«ÞàÀë\x­^= c¿‚¡ÇÄ·!öÝ×ÑŸÊ@‰6§ø•+~ˆƒ X'¡ùÃt#˜`sw¦À§aÝIÐ;FN:Ó68®'ß…/>ɨz Àu6xOƒCaúÈ'qTÛÕØVü>”¿¬riç•ןËÇÓ‚Âôœ|BÚOTÝPóT¾ ¥ïA¾dþR>†˜Ï ð“±ÞÛ™$Õ9{wwŒë¶3ڿÙ||ˆüŸüôþŸa !2}×#W<ëbfF¼ÿjÓüóîÄ®+ ìÝ2ûœÎCSþÒ[§½šu`YÝ ¥¦F(`ŒÆo ¼mXe@de’”•E¶fÝ î3κ»ëÅSÖLL¤x¼Ï氪ÌÌD?…‰ubÊ¢£ëGxx@‚{Ž“ÚÚ„‰ =ç]¾ò·Á3Ó¯*}üC3±~@—aéÑH÷9}ü¸YHVçnO%õ%-Ä­ÖhOÛsÎÍ7Þ™d©ŽGwÆ2Ot?uÊÉÉILLÄ[™ ?Þ8¿¢—@8¯µà ¨{ªÑœP P›¾‚,ú9Ý¶1¼ÔÁe\^6º`…δŽÀ#°Ë¶â¹5¬¼:t# M(LІ?haʆ/óáS´t ´¥Zx݈¯`…$„—Dð¢Ƈg¾†ÁÇDMÛ?Æ Cyª†·Q°Já”­\øµ)~Œ…ßÐÆÐÉ|a&úÙ0N~: kÌaSggÚæï—èL¨zóÀcøM†?É>ïq?B2 ݼ¤eïBå[P3ÂWåÙõ‡_>ž–0ìyȳÔ~¢ã÷ Ô½UoBÉ[ÿd~‰Bè‡cýþ¶3¥Ù‡ç•]14Nã3)ùw8‚ÕÏÃt>Sg—3ÑÏæ˜‰~ý˜¬ŸÐåÕûî S±,²tå†ÈÚð´„l¶džNn‰«3Œw\mÆÙ8%dú^Œª¿zãÆ¦¦&¼ûÁ ÇÂÂôZêŠ4ÒùèúÝÆç¬Îìß±fïQ kë‹ù"13³g’““|yc@>dÏt ¤<yè/“æT÷©Måÿƒ¢Ï ÷kHÿR~ø¿ b Ío5pÕ‚ËËÀf-Xé‘Îd¼&i³%Ù™iùe²'“šÌ„©ðWüzÞO‡¯sáÓ"R˜Þ«‚·káõzÒ–P•ÆIày<'‡1laä70'%06èçg‡¶@Äç/pàÕjx³Þ) àã,ø"¾‹‡_"á˜d¿ZÁäñ0Z~< «ÍaãQØ~öîÃ-p|˜¯„30.ÏOUP†°ß æ'HüÒ¾€ì¡@ JßÊ7 æ¥¢•¿ýÂËσd,HÑ™FAØhH ˜ò<éO‚—€ó2T¾ÅoB‘Jcþ¶3Eºœ*«&]ܘߞ‰RKãïïïááÁLtÇ… \]]™‰{pqq±··g&ºÃÎÎÎÍÍ™¸''§‹/2Ýakk{ŸìŽŽŽ—.]b&ºÃÒÒ’‰uÇ•+W˜‰î°²²bbÝqùòeÜfâð¬ž={–™è333&ÖxÔçÏŸg&ºãäÉ“L¬;ðOfccÃLt‡¹¹9ëŽ'N0±°°°`bÝñÀìîîîLYlçñ:Þæçw7¸û"##£ÿ8SAAA¿r¦&ÖfbÝ8^=±,â Œ³0H+=b`pÐ'±”Iy:i½~=7Ê=Q¤P¤9¸%Ôp3ƒ/%‹ñš‚#,b±˜Ë内…áª;D§-<Òò*++’£/Ú{%0É"11Ñ×»~$\ WGÁÕÑPý,Ô¥„`<ùªö-²ûNéGPð9d} i?@Âo¥ÁÓÁg.¸j€ÃR°YM n¶Œ÷9Ѐž%¬±¥䃹¹Þ0#&EÂïñð“+|’ŸÀG¥d×¥·jÈ'q/óaœž—’ªôŒF_…‘×`¤= ý^…Q˜"ƒg‰tjÑh¼TGjÓeðn| Ÿ¤ÃW‰ðC4L…‰ð—L Ãl@û,¬4‡õGa:Ó.8´Žë‚ù Ê™æÂå™à5ÿ„ðŸ!ö;Hþ2>Ü ø(ª_ÎH³CB~$Ï‚|4\6ÒF@ÝHh ˜ò Èqîó uã¡âU(| 2Þ…˜÷ÆÿmgJ´‹)ªp3>’ÌeRº€µ;ë¼Üc a&î¡®®.55•™èŽ””>¿».Šêêꬬ,f¢;° …Ý~ÒëW¬™‰îðòòbbÝQZZZ\\ÌLܪ¿ŸŸ3Ñ………åååÌÄ=H$¬ ˜‰î@]cbÝG7´ÌDw ®1±î ›™‰îpvvfbÝ&ÊÄzŒ‰udz÷¶3á’­ýéÕ0¼Geb=ЗÎԯΠÒÜÜã+«}O—A)b h;gK$þËr-‘¼¹Af}ÅóÆ &í)%7Ò-^ S”8äE{øIèF&™L&‰ð ŠòÔ-ÜTïu‹—®X¾bõšIe<&õAàõÚÛ«~(4ƒ†ápmðGà>¢qÀœ× úm(S"_ËþÒ¿ƒÄ_!j"«‚ïlpS'‡¸´]E~‡îÄ68²öÁŽã°É’ø{±¨»ÁlorÔJåHr쥂àÓlòÍ8¥2x» ^¯ƒWxð¢ÆJàYiK#®ÁðFŠC_…I0å0*ü»‘¯W ¬ý<Æ×«ðf1¼—fÀIðm4ü ºÁÄ#ð+:“=éLËO‚®1l={ôÁp˜¬óepfŒž VÓÁKƒð!îHþŒì”ÿ.”¼•¯Bí¸ó Fÿ/ÏÃ(PŒ€kèLC g(ˆ‡BË0hMh™£ÉÆ9ñX¨U/CñëýĽ=6ôo;“¸"}÷®‡í":>°Ü…û;–,'ÌÄ=ÐEˆ™èœ‹òÁLÜà Õá>Ù±ZÅÂÆLtÇcbÝqgBw€™¸ÜíûÈ"rgÂìè ÌDwÜGdü»ÜÇ5‘û;^˜X “1±îx`öÞv&̈¾ËLôPpqÿ™‰îèKgò÷÷ÇSÊLô:ÄÄú`bÝ8SXXXKK žA#,wPÏï48xÈ7©´™IzZÉw‰­7*j,íÞmp´Rz­¡¡/ÊxÑÇËzMMMpp0^a{¢¾®¢¸¨¤¾žÏL?qqqžœÁÐ0†Âµ¡2òG“í+±À{ê^!»ì”¾ùAÖgö $ü ‘BÐdrÈl×pY¬WÂ)]ò÷F{`Ÿ!l7 §È/é.º \`–9~÷_ðK|· ÞÈ‚ È>IoV«µðR=øÉ4ÏÀ23X{6ï‡];ààF8¶N.…3_ƒúËð*x*CÀûb¿„äO ãÈ}Š^‡òñP=ÌzÁà€ßGŒépP ÷ðí`È©ƒ¡e´ %µ©q$Ù,'üç¡æ%(}rÞ€„·Æ†ýmgz ÷w¦^åÎÔ«<Йz•û;SosgêmzÛ™ž:úÒ™Xžnœ)44´©,Ö¦,ÿb®]»†x¼ Åt&¼<áE* o»§$Ýlÿ¶ûÍ/Z_È*&¿m÷0DEE¹¹V„káê ÒdÃ@2„£€?¸/@Íx¨x|h•û?òVÊWû#9øuÀ$ðœNóà‚œ[kÁd3Ú»ÀÖ£ {–Ÿ­‹0Ï fx/µý?ÅÀ×IðYü/Þ)†×ËáåjÇçx0Z#%0LC¤$ º1 3…à 9 –ÂPŒÈzm4@-<_/•«ðV6¼Ÿ ÇÁ—ð}Lð‰c`è>øÝZÂSXm›öÂŽm`°ŒWéb°ú æ£3M÷?Áïù¢?‡„ í=²•¨àU(}á•dÜÊðygG‚p8Ù°$Æ@u 4 „ ƒà:š¥M #A†rùÔƒò—!ïuH|slxï9Óý®õ*<¯²²’™ès°ð×ÕÕ1}ÎýŸõ6IIILìIpo‘{¼Î„¹úÿ˜–éKgÂÚVvLËxð˜–ø·ÄJ‹&NÈår¬JYþÝÐ3D"-Lx£_RRâããSÓ=U¾V†¾¾G6Z„ºšXºF1É=ƒwÖÖÖfffNNå@6¤A2â†@Öpàî³Pó΄zãïObìX&þOÆåÂ3sëcÒÓÓ™X? --‰QtãLX4% ] …B,¬,ÿbP•êëë¹\.ú Þâã¯SåÝS`m¨Øxëâ†[WYºG—1é ((èòå"ÁàÞ (•àv$T=ec¡øEȲ߄Ô÷!áCˆù¾ÿ_ÀóOpšB~Ìÿ¼:Xè€É 0Ò…½[aûnØxV™€Ž,8³.ÂG˜è¿úÁ÷¡ð…|@6½•¯æÁKEð|<[ £j`†ÔÃ` äÃõ!Lt&Xƒ¸0¸†VÈU{‡Ž.9â…x9ÞH‚wcàáðy|ã ?_„_ž‡aûàw+P3­Ã°l?¬Û›7Á®Õp`ѳ™`:FNË àöø|ÁŸBÄ÷$¿/H­4rªÕh¨5C3xáÀ!  µi ´ &©¡;gŠd‰å_Ìãu&¬ê0/3ÑËå=í|Q9ÒiXéLÁPQÁÌ¢¹vøøã®aéRfîßÏÌßÉ>ÿÖL¬Ðegºq¦³gÏFµÉòß <<<,,,$$ÍÆßßßÛÛûÌ™3hÏÝããrdÿÎ+VíÝoæêͤ=[[Û“'}•”"•”">PŠøŸ’Û‡JÞ)…|¢ô™RÀ—J~ß(y¯äñ“’ë%Çß•&*]˜¬d3]éÌl% 5¥JGu”Œ–)¬VÚ£«´COió6¥ »”Ö(-3RZtTIã„’š¹ÒœÓJÓÏ+M±SR>¨ôó¥ .J?¹+}ï¥ôÒWþJŸ*}¬ôqˆÒ‡aJÿ Wú w… •”t””01TéÃ¥‚”> Pú gl]õ©‡Ò·®J?:)ýrYéw{¥‰6J“Ï*©nPúã¥/L”Ô+iTZ²WiåN¥u[”6mPÚ¶Fi× ¥½K”j)ù@éÃéJ†3”¬¦*SQ²ýSéÂoJ?+9ÿ äöÕTÓ<¾ùBÉýc¥`<ÿS û@i—’Ò¼÷ß÷1"}ȵAT÷¯a  ÒÑ xjÇAÙËÛ»Ïædd»£¬ÇnÖ½ƒœ|4ܱQ9µi=Í+r¼Cì²-™ìa?>ýé²urR,yˆ±br)n[Òñ§–á$þúúoÈ¥÷ü­Ñ™Nú¤eggã]ÞÎá}ÞÀwhS 5Zw+õºÒ¿ŒÁƒ»†O?ef±§¼œ÷ìèèP?$C@6d#@2 „Ïw,T½%¯@öëÿæ?xo"Î=jbpÖ=«kNi†³å“#fIYË<ìNœ=kyàÈéÚû½éõxàU$74²ªèpAÉ‘F|Q_§0êàQSCÛjj²¾8ÞÜüä‘#‡“Jû@›¸WŽ˜5Φ6.®»tÂäÔ™gœ"úVšdÙÑ—qíb©èLëŽ;â=üÉ“'íì윜œèq¹ðŽÎ××oíñ+,£#=Ë_¸p™è\¹‹‹ 3Ѹ€——3Ѹ9f¢ð²cç{âÔ©SL¬gÌÍÍ™X8::âéb&zàâÅ‹x2™‰À»h&Ö3L¬g¸ÃÈìÇÊÊŠ‰õÀc9{H—eÐÝ™ÚëL,,O’òrù˜ÑIC |(p†`ˆ¨Aꟃš ü%²ÿxúýÖ?Ÿé~ðË Mœr®­¹•¸oZyI½™©-Wοhr”C  #Ç2ùYÏ«½ßÀ…¨ ¡e)nçüŠÈ–ËľöçŒN˜ö3eÙ&VÇØ™—’“ —÷_ñ ŽN’öAcOMŠ‘UHmYêyïxrRTyἃ —k`B_:“XP—ìeiÜ3sKHJJòññIOO/++«®®æp8<O(ÒÃ:ÈÛG¸ÿ°[ˆ@ ˆ‰‰a&z ²²27÷ÏËËÃÝ`&z 997ÇLô@HHUÈïj"ë™|uÿÑÔhbccñ|2=ðÀ3Œ<Ì‹ŸÜaäòåËL¬gP^™Xܸ2š‡Ù™.Ã: Ë“¤¼¼ö¹Ñ¦Ã!wÄŒ„’QP:Òžƒê1ù"䎇èW!ø-}}¬m¯8·x…—L!½`i*ê³ÇS"Ž‘ù%©BædnÀ4,IÑ~—|“+ú òÎ:“SãwÖ5“¬ÃêÒÝNÚxž61ȯêGŸw“ês:£”“êdìMUÖþf#2Óƒ“ï7’Óã¡,v¿]\}ež¥[4Nɪ2œò,.M?eíÒóX½D¶UÏ΄µ~aaáý SèHO<Œ3Ñ/Ä0=€ <Ðupß:v¬'Æ™(^È—y˜ygzàFË#ãLógb=ó0Ë<²3µÞ¼yãF뽡_u³gaù×PQ.}a´ÅHH Þ£!óYÈ/@Éóàõ2¤¾¯ƒÇ;àÿúXó^q&Yݹ}ÇÒó"›¹õ™2)äB'ã£ÑyiG]à‘/ HÃ/ŸuOÌàòø}ÐÚR‘íeëàj~2Y( Åüª¬§ÍïÉ*ë}kQ( “\.‡¦ØOËDBqž¿eHJi^„Ó¥„û žùx™î;ét)2‹ì>V‘¶ÛÌ£º¶ÊôÔ¹~åLÙÙÙEEE÷w¦‚µã©/ygê3Æ™ú’‡q¦>ã‘)0$,$<²Sˆòô tõòOKÏìW=íYXþT”×mÿ,D´±ó<ä½yã!çÈx ’ß„Øw ô=ð~¬k/õ%à5+§†™ì#ª³p£iåRNy†OBF”7N]¾âêUÍë}sóƒ}\½#Óä ¾ë ;z¼êìÔx‰´OÄAÄõõpö‹ËS(x.æëqg¼œý£ú¦viJ“›W­@žâáž*•eG¸]vpÌ(yÀ£œ^ 6)&§‹A<^gÂåq ÌD? ¸¸øáw¾·Á3ÓÉÌÌdbý€ŒŒ &Ö])+'?¯´>§„“SV‡gÿÈrŵÂ*AFVN‡3 j™÷Ék :¥[šMM ­ä·[®IpùêziO_)¼ÕÖPM­S xÀwyîæºLrU.’u·Úr}«-LB'n4ËeÔ«ATG®£NÈL÷Ä­›ÜÚª*®ˆžº.瓹ðüp$ôŽ)„u5œÖ6V:û#¾¾¾Ì»£)))̼G§­­->>ž225µµyyyô¬n©(ç¿2Úz,¼Q/BâKò ¤¼ ‰¯Cì›ù„¼>€“ÒX‡^r¦'‹@PY]}¿¯pô&¢ÔÔ&ú¦¥1Ñ>§°°PÖoªpšÇëL,,½DWgJMËÖ· Ñ=ë¹ÞÞ+ýººZ—gšÜÙ™Zo´Ô—§gÕH¯·v}`'¨Ì.•2Òí*ªãVW]m¸..ŽJÌknn¹&­kìá+77š«ãSJZZdqA¡¢†‡ÿŽ8;½4/!»;Ï’ÇÄ+äâ°°¤Æ;JÕV–’P×DÈxyÙµ÷>¤QP™{­¥EX™RÀíâ;ÍW+3Šyt¼ATZT+¨ÌJ.—“‚x«­µ¥¥EZ[”R)#g·òR“Kµù9Ú"Ë /ÐÌ%:ÉÿdÀ8, ±qqׯ_Ç‹> Óýh9uÂyÓN¨M³Õœå¨3×}‰š×R5¯ejžËÔÜ—ÍsY>×qÙì‹Kfœ›7çü¿Ò™XXhXgby*èêL‰)™+Ï8Í6·T;gZVF:S=¿Þ· ´³3!âÚì<^ã yUxppbzYƒ‚œ—íéâ£h"o²o\o¹qãúõÖ–Œðé$·o‰3“R¢C‚“‹…7[9ù5Ñ”“¥h¨N̨JÙÍ«uAÁñ©%×®ÕfçdFä•s#Â#3«o·¸Å©!ÁA©%¢[·o65¶474uW)Éã‚’n´]O‰(,Ê)·Ý¾ÑŸçãtÅ+2MÄÉMÌHô/ªo¼uC‘X-½)ã•d¤'UŠš+r“¯Ý ÷ûVz|TE^JÓ›©õM·ÅõIA>Îî>%õ×p6¯ ޝ¸qKRSÈ45áVe7Ý$e­¥6#½ºáv“84£Kû´ƒFÒ|7ÌŒGç±;‚?-__¦[·zjZe¸zõjBBî€@ À8õ…À–&ê#ÊXIˆD¢ºººÈôbÖ™XþÅ;(,,dæ=:mmmû0544Ü¿8ëLO)œ¬@­©ÓöÛGô‡ÛõÝ:–|t&üiˆÅâGp&™8;Éë‚klß ŸÑ3raͱýÆî—O¼#yÒO „uå;÷˜”óx.§ køOxgq†ç‘KÑÅÁ'ÜÓ™¤'†,ˆr¦ì€³ ù5îæ9çL°®Žs'p˜Ÿ/èìL›[m¼ø¸ü>v‡¶ÖëUEÙ‚ö&±GæV«\*»Î¾õÆÒ °ÎôT"˜mUßo~yÅ"¯Ä'üXáß:ÓQ×xü-dee”””TVV’½’¸\>Ÿ¿Z›dANˆÝiÿü’2®@Â$=9¤Qqa^¢×™ÃNÉ’‡Úý^Dʯ=qί6ŽgŒkøOzod2q–ïÁ³¾Ù‰áÆQLÒCxî|ŠXRšáuÎ=ÂÎøDºˆ9?xîLWgêmnßn ;z7õMra-OÌ*K?D¦¸÷gª.+´ºàÂ:S?¢¾4 ·0)ÄÏ×Ï?"IÚ wöðóó½âÅ©ÈqLH+b‰å_ :“‘ctTTTrrrVVV~~>ÝÔTUU…ÚD·6¡9ñù|”'–>FHÊÎ: Ë“D"S„Åù;¦•–ø¹GH›šj³¢²9¢p÷`¾T–èç›]”wÅ?9"u&–3èL‡"ÃÃÃÒÒÒ²³³im¢[›ª««ÑœêêêPžXXú.­ì(O¬3±°6.·œÛÒ¢(Î.’_»V‘›SÉ—ÔV–Ú¹ú±ÎÄò/ÉàbX```TTT||ŸKb.¬fМ°¾aay°˜'%%åææ¢-u zDAóÄÀ’L{ƒ÷XÂQ˜ðGeK>–Z˜ØF&–΃Áw¯ÌŒ¿fï(ZÁâGÇ{âΔ›é~z“îþ3‘‰"A=Þ×rb¹DD¾tÇás’-7p¬‘¥\.âmoW ñ9µä°P"<»Ã1:5>.](—Ôb–Úz™LÄ­ãà\žH&’+äðDôÆXXþƒ`µ𙙉wüÇšƒ¨¿}¨~Œ` Ö(tózV~XÕa…‡·é˜……å!ñóó³s HOO/,,Ä /Õ´ÃåÔÖ‘ÂBÂIŠJÍJH.ø¼ÚÄ`oggçÈä|ff'PØ»Š»®4=&­™¸^}×Gg'×äâZn]~t|Že›DÀŠ%¼úââŠò¼œ¢kíÂÔÑ“éF37Â? (0´Bv©¸Hn߼ъu¿<ŸÓx‹IëÛ·n¦D„„„DgU¡}1©íÜj»ÙÖžx«A’Ï¥§¹ùñ˜+8Ð?µL¹ÝÚ˜ž”{ódéEPýéòCƒ×OfÆß";'¯®Aa*))ÁŸÞ] /ÓxÛ*XeŒ¹ÉåX…¢ê¤îæÃƆK6š¹Ú·ÎØXoåžÀ‹›•g­ Êä(|Ç=Zk¶›,[¦d³iц]&ç.=ê{jÃŒµ»öÌš½ÝÏëðµÆµ4CL•'-:¶{ýì­öG–êl71ÙcpZŒù©»g–=ø#g~lÝ:þ éïAb„¾—Âtüacv\¦£… 剅å!‰ŽŽÎÎÎ.++Ã"„—\¡éêY\O6^tPBZTl©D˜æUÊÃ$Tª{>QÊvó*®g&‘ ?($EÄ+÷ñ¯áäGft¬V&“$‡gÖJõùù%Åi)¹MT;+-Lt#Óõ¦ê„Ô²›Íˆ°ôëwd¥99 JÞJÔä&•_½¯ÂÜn«HM,¨—¡ôˆjr jÄLz;‚ŠŒBQ ¯*È߸^‘ͽz“N!ˆ¶šÔ¤šrRÁÉ­\•”eæò˜åYúž˜˜&FÆÄþXÀ223¹õõ(LÈ›3»:^šéÖÑgª‰ùõÓ ZZšš{\¼-×lØmw%´6Ûf‡‰?ùÈNPº\Ë J¡p9 »÷ôv÷ä…"zɬAöûýÒ2×/Ö72ÒÏJr<î>¶~ûQ?9'UkñásÛôö¹¥Þµ=–5X]11Šû;Bk¦#è[hN´NË%õ¡^‘òk²DŸÌR’äâéíãë[TZUYS'âçG%—Hª <}½]œ|¸²ÊÐà”†a„GH½¸Ôí¢£wP™X&—GÆå&FK ?:5¯,3&ß@·-‘ï>ܸqóFSNbtPPœ”r¦ÍÕÞÎ!ÁÑõ-7®7r²Š95¥yW[ÛÛ™Ke­×ÄÅi%¼‚øx~Ûí… ¥„W’]yí–¬>/»R›A ÖŽ-ŠøìòмÌZnmfAfY]eFv)¿S;SQfâ›·¯U¦–ñ锫¼|ލ‰Žó âxŠ·$å1…":…åa  ïæŸôN{¼Î„{B :;;oD™ÔžèèhæâMq¯3IøU•µ|Œðª âããSòª+±dÆg—Õ+äò¼´ø¢²C’LP™Ÿ•_ë¸×ô²w||摸©)‰iY%)/5!>9­P,ª)­à*d‚Âòâ¬4\OI-ÛAœå?Ä ‰v&¹\NY©MæDËSGË ËC’‘žxÚÔ2%#«¬¢ŠÏãVä$EäV¦ø”®2õCKEjHln¹ººšŠŒ˜ÂÚÚX_¿*¹ Â7¶¡ùZj@`©àj]QBdVµT&kl¸&ñSbB9õ1iåy QUüÚ0Ÿ`þÕšÈðŒ–iŒw˜@V“K€u&–ÞàÁδx¹mBa·ƒ‘ÕN¸À•óæÍœ8óTR®ÕÊ?~økšg ÙîëÈ[7ýóŸŸðÕOSmb¸rQÝöU;»8SQQFP˜ 6n܈[Ù¼y3=7þŠþöÃæ—.] q›üëü…ógüµüDevèBõùj3æG†Zþõë´Ù“'¯·t]¢µ/6Ä~¾šÚ)ä኱îòej³'ý꜔k¾c³·XzlÒÜ™•ë±@ûpFªÏ¥Èt\,#àØûï|=cþ|#»¨+F+ÔfÌXy.,ÊjÒ'¿X–(d"oƒU*jjË·ž0Y:á'•™Çv­ßí^‘ê{øà½Ã¶^VÛVàš×›R>T~Ç™ªs—™9ŸÝ³LKkÞ,•?]““çÿñ¼Ús™œ×›2Emþ²½!vêhÏS›øõ~·¶d¡a‰¥`‰…¥7x°3Íý}ö_“'o5õº°ÏÚv—©S‚¬ [gr¶1 ILëÑ™d"/G¯:~чèn^Æaaaygz,DDDìºfv¿ÄÃÎŒÿ€+‡<ÈÅ¡‚jîbayHXgbéîu¦ŒìŒ®Û4-·)?ÉÿüY»Ä’Ê”¸Hë‹Nž5µÅ:Sfœtv Ë®/O¾`mí•]–›æsÁÚÆ&¯V‘âhm{9§Š¼YeaùoÒGÎÄÂÂBÓÅ™jJ 'Nüãó/¦Ç•”v8Seq>Or÷ rI^váW2å«C Æ×%ÜìÜJ~]I%ç®”åßͽΗe²Mû¬WpiYE}m”ÖÔ¥©ñÓtöîY¶Ð1£Âï芣Aq[—nJÉ ÔZzpÝŒÙiU»Ö-»|béûÄR¯}k ÏùsexBr@N.® ‹1 Ë¿žšºkÒXgbaéSðwÈÄ(ò² V6_¯³"º ?';»°°„/ÙÚ]D¾N¡PÔ×V”•W xe+lH®®åÖÖÊär^M¥ñNý<±¨º¢¼¼¼JLÿdåÒÚªŠ²²*‰LRSUS^^VÍŠKƒ,>‘W˜Y\]ÏçÔ”•U¥N-·º²¬²ºŽmÌú·r¯3Åde›ïY~),ž|6Wà½h¥S°èÅË6ëÊäéAG÷_ŽÔ_µ£°&V[k×BURŹ-«ö[î )¬!|9|%&Ôgã5«¨lf,,ÿvº\®Ö™XXú”.?œœÂË×̘º(<5Æü„É]óáYOÝci_×*jãWª/9¸ÇÐ1)xö„)&Žž'·.)*)\²Hoû}¿à »MLM÷éžó'G+K¿¼pÙ¾C+489Lüi®É1£IÓôbâ/üü»ÎÑãÛÏù9¯]¸ØXë«+ÚÊ“÷3_££SÏŽ&öïä^gJLϾl²]e¡NdjQ}}‘ñª9ês®0w2\1gþâÅK®K®ªsعdÁæó—š9Y6wþõUû|Ïïaœé€á‰ ´t´¯D‘/,³°ü`‰…å Óµ)¯ÔØöÊö•«]ÜÌæÌÑPŸ1aû™+¦úIµÔÛм=:+ÌϧW­[¤_ªP¤úž1¸xAÿ¬ï‰]úæG—ÌT×ÔÑYj刋Æ9ôH)Q;-œ½dáʳBïÈœÙ):kmÓüž>­¿ÃÄ_ÎI™÷‹ö,-ƒ*…Âåä®Df+,ÿ6îu¦Ž÷æ*Úû€‹Åb©˜o¸Y¿@*ëhq”·÷¤ëˆt@¦°-“,ÿ%XgbayÂôäL¦Ç·³½tvׂmgB¼M·ö â‰dŠjŸ}/ž9¶Ï&"Ý`¾ÖÙ˜T)7GmÂá¹uèLnž‡Vpô÷̦>jTfñÖ3— V럱ž5s‹—»“æÊ}•uiZÓ–Ûžß{ÎÛnÙÂu.gL´ Ï/céßÎ}œéî÷æ¤"¼æ3‹°°°ÜŃ H¸ K/ÁáÜõÉÄššZŸ€À¨ðˆ¼¼¬è¨ÈäôŒÒJŽ€S•–‘%$?d''§f䈥r~UaZN‘¤4~î²cu2yuE…X*ÌIKMNN)£ÕG&.ÈJONÎÔÄÌ›o—œZZG¦—ç¥dÕò„Õ%¹ÉÉubaIq¥T¡àVWÙ·>ÿ¥<´3±€…¥GðŠÍÄÚéêL,,,}É£Ž5 ¨.N,|ÐËÞ¢êˆè\¶2ü/Ã: Ë?‡u&–þÅ£: ËÃÀ: Ë?‡u&–þëL,½ëL,,ÿÖ™XXú¬3±ô¬3±°üsXgbaé_°ÎÄÒüCgÂx/¬`±ü×`‰…¥Á:KoðiñâŧîaË–-Ìl–ÿ¬3±°ô/ð7éíí•ViÅÅÅÕÕÕ555˜Ž ÅÂò·‹ïä=669,öŽ3ñªÊrÊ+Ó‹j©™ü´„‚Î8\¿~=щëׯmÛ¶œ'—eÅ]!qN,¾kà š{ƒÐBê+]U¡Ë7^|À‡Î{@&*Þ¬1ã·Ÿ§ÄUó˜$…¢¦$£‚+d&ÚÉÏHãQ_¢ñ´Úß)KH¸x2Dõ鹕L Ë=°ÎÄÂÒ¿Àºmgbé|M/;efç 3Uç^9wÂÂÚÞð¢cPqiϬ ê':·Juv¦†††1Î$ÖÛ™_PXXTU]V“™PÊ‘òÊs1’YPd»çr@hbb·4d‰®}=§4)!1§¤šÊ+.Ì/ÉLKHË.”IŹé) ©!¿°¸FÄ­(¯ãóª«ydÉ—æùV[atbߖزªŒÔ$\¬N,õ:¡kîÌvW]˜ž˜\ÉåY¿Ì39½87G ‘×–ÙØWY›Ÿ™Je!·‰’Wš—‘Æ•óròR“ÒsKe13gnÉLÉ̯æTä'&$WÔ ÊKÊò2RÒ³Ew ›å? ëL,,ý Ö™Xú†Ë—½œ¶IÏ"©<7åè¶e¦†ë¬ì<+yX3$j-µììL«V­:{ö¬L&knnFaò÷÷¿}ûögZ>ý/UUÕÙÚ.»¦jêûÚÍÚîZžåää´aãf¯“k6›]´Ý±`ëÑ£‹uÔÙd}åòÝ=e2¹‚_´ð‰æ¾;V-ñ ²Þ꜓ÕÎ]fg×-8l¦µèd¸›•Y†…E’ê´GK×øà¶M1%¥Þ®NGÖo¼äd´ÔÐÚ¹²^¢¨ÏX6}™Ý%GûˆpƒvÁ^Æ+ý“K vlµ:¦ïd½×ÔÊéÌÞm¦Á2ü‰•{k/ÝçtÒ`åqÛÙæÚ¹ûlX°0$'xò¤5î®F»OœY7[ý²Í¹¹;,ö-šºßÆÇTOÓ/‡2<–ÿ<¬3±°ô/Xgbé®\ tŽ!ŸÍU”»94Gåwí¿®2õ#çÝãLëׯÇ2¹eË–ƒÒÂDÄgÚ¢_@=«Ž·0¾­¨ÓÖ9bºcåÆûçÎT·´Ò)¨–äÚ.ÑY®³X_å×9úû‘SEX¤ùEKµ¡8ßuöÔº%º[q†gü…ƒ‹ö­Ø»e“¡ñyK‰”\3?ýÜ^‹`7‹Ý¾g—®Ùº‹†Æ6ÇïŒ2r5v†vnÛå‘RpÚ@?G,-ÏôÝyÚJ9f9gµ^{•®ÙÚ5©,Êì„S¼¢&zî‹æhã(ä.‡×ÙÆ%i뜨Ì<¿{·þÒ—$‚âÅ¿jkoÐÇŒq<à•VJm…å¿ëLý™úØÀÀœ*æéIFLtb¯6?$0îÞQŸ%µÕ9¥\f‚åi†u&–¾Áó²ó*ã“©™d;§È÷ÐIïcFõò‚“æmòëKüÒï4®ÐÏæP°BBBhaºË™t—·±µ³»èãjÈ8Ó"Ãõ:«,íì4g͵4_¿ûø)“ÍËN;Ú,Ñ=qhñì#ævvWüɇnœÉ+ÔRsí1;;»°ä’¸Ë›ŸŒ)w<´ÔøÝ7©Ã™.9šî:rüÌeó·9&»™®79U\+VÔ'nÔ59evÀÔ%Îå Þ>'¯j‹ê/¶ñ÷S»=ÂÎj®4Ä5'áÊê+io=µoëÆ3—çM^rÚÎVOw{)·híT5+û}»Í¬7ÏW;yôè‚ýçö³ÎÄr7¬3õgrÖª¨œŽdLÈíØªå[Ï—dzê­5.¦“îÀ?§§µûû‡û7À:Kß™‘æ”Cõ¯«®­çsê™/²óꪰøÕñït×^½zuÁ=lݺ•š)çsjpùòò ËJr ‡+p«1©º–+às*p^G&së…Q=N–WÖ’[’˸>–l!Ÿ'•Ik«*q‡'’ˆx|±L!æsø"j ¹TÀˆEžX"Æ¥*««¹õ"™T\UU)"¿Ã(­­¨¨¨¬KåR¿²ºV\§¾d_¥LY$2i]5uDõt‡q9oyy•ˆ›¥©nC¦“mjNUUm¹~]Ey%n‰WÏÃıßad¡`©?Ó3eymÑ=Z¬e»mÚ°aý†½‘ùÕ¥é~Z3'ÏZ¸Â.0U\›mf°qÝú'¯ãå£$Ãk×–ý¦ûwîÞ¸§‘W$—I…§÷ëº$R¯±°ô?zt&aÕ)ƒëÖæwꎚd·~Ý:3Ï ¬4¸Y!ëuuõœ®¹ëí¨nȵÝ{àB7/8õˆ¼"?Êð Þ:]Ý}¶Žõ‚7 ð¢¬ski!ö¸cºÛöÙ $åÉ.Û7›—3 Þ³D;X紗ǺŠ}&ãº-FÆ1…U½©Šòò¨ ÷¤û IE™‡“§DPe¶gsb>“ú¯à‘ÆÀ™tùùý÷„ 9å—u­Þº"fg—²Ý»YÖ™ú3¤3­ÚyôŦ¥sÑ™ lfªèæsVL®ÒîÜ!ÝÙ+•¥nÓœ¾lשøœãjê[L.]¶\¤®jâ›g3cÊŒ=¶žj³tâ+ëų§/O«go›ú)=9Sm~Ô¢¹js樞 «`U(¢ORVÖX{Š£Ç;›¨(+Ï_²§¼ëË×]©Ê‹óõOxÐRw¨+ˆY:{𮡅³³ÓÎUóm3㉻/?eé>šê)Šhç#³Õ—Ú;`ëÕ:3t8å„Zα½ˆYðe¾šê “Û©ºÈkÊ$£3ΈéþUÓç­Œ/½kT¡Ç çö”ãwÎç=HÃÎìÒÚj"ñÂ}|RKÿUwäL,,,ëLýÒ™–m>p˜BWgÎgRÔœÒÓQ®µÙÐÊ=:M.çY¬£1EQ6GE#‚‹uŒØÛt›úÆÃéÑ6 æ/Ï$‡\XèÎÞíxBO×øJ§áKXú=9S•}ê›,íoXwО|AΤ¹p¹šÎŠŒráé]Ú:zzZèLiF¨ö•©3v³®HÎnŸ»Ç>Q&ºo\m`ïj¤µôX…8a™ŠÊ#Õ)“ÕWnM¯àI¸•–ÛV©N™~hÿ­˜öÇ"A6»µ×qèÖ¥ªø“ç»$&­Ñžs%º´*Ío¦êÌÓ‘Š’ ÙªóשOVVVVQYwÁùˆúÊ5Xåü+'6i­7L bœ©4Ñ}•ÆT•ÉSVì8ZÈ©2Y6ƒÎ’M­žt¦I“ýóȸ„[ºuɼ=Ö‚ÚRËí«¦ªLÒ\q «B˜ék2{ÆÂMëªLW;sÙq“ÎŒIó‡•rÂ:·s»fªª¨ÌT·t”È8§tu46ê¯Òš=uæ\ëÐt¼â]8°cÒ¤Iª³t\âŠR½OMFÍT™u&Üa‰ÊÌ «µ—n8—ï¾\m†ŠŠÊê½fÅ¥‰+fáÞ)¯Xo¨«©i‰kàUÚ[?u²Êdµ¥âäŠÊ½óg-Ýe¤­6cú\ Ô§©× ëL,, ëLý™nžÍ1Î$â&Æ'¤'¥ÚŸß;eò‚Ð .:ÓV›x'^Se¾sn¥TƱ5X»d§yFŒ†º^5¢[𷙆ú†¥K4/G—P«détïLâ*£¥s{fÕÄÚ«ªo¬j.iÉÆ=»/¾²qÎ 3t¦‚ÒpÉ3Žù¥—G®Ò˜{Ø%&ÉÛ\kíÁòÊâÍ:3¬ “Ü 5—EgZª¬¼ýTxinزùÓ_‰Jò>1cþʰÜÒØó{••5;œÉùÈÊ Ç¼Ûû¶ÔhL1 .´×_µ×&(ÎÍxêÔ©+z%:Q]¼==Úyá‚…1yüHç#“'Mž9 ™9Sm…Ofa8åL’œuÓ¦ï¼UY“¹ÃÂMGrÜ.PÎãÓuuggR(êÏê-ßbîqaïBÍÝþA7,Ú`t%ÅÇdú u§¤âóÆ«gk®ÏÊÐ[[Âã¦mÔRÛw1«ø‹»´çÍ›½ét æêÉ™âÜg-ÔM®¬Ïv2îÜΔd3c®¶kB¶Õ¾µ›Ö©LÓ/­ÕÄ/›«:mŽVxzꊅӧL™bÃ)K÷QŸ¯W$BgbžÍµÃ8“(cŤF>éBqÙÑm‹Öì·-J÷]8Al!³­ÎΔí¥9w–mh¾¿Õ&µ{+ëy®—-/zƧùÞq¦UÛlÆ™’ýOÌY°>¶’WYà9oÒ·¼’®ÎTgdd›Wâjåëà–¤l]‰›W™«¡žSŸÑƒ3ÉëËï\£Š»©:{ÿ)G‘”{O;S½õAÝI**“¦LÝ|ô2_¡p?¶d²Ê4g{Ú™Â:«½ë§*+/XºB}ÊÜ )%åQÖs§)/^¹sõÒ™µ¹;uu&ORž4sÉ¥¹¼òéu¦ŒŒ ,iÉÉÉyyyeeeÕÕÕµµµX%pYXXzï.˜ßO;¬3ýK‘Ë„P$nï=ÌÒOéΙÄO$aä2)þ!éÑšdR1ù7•ËE¸˜çH„BòO,—ËDø÷`â\¸*ºï?™‹\L&ȵRÙÅYV˜í¬9 ­Üüü­Mž¯["lïÂD¯^£H˜áà•Jš·D,­cD* ¨.ˆi÷Y(u.lrî•"ÇepM¸-Lzßär)¹ \ƒ¬}T*©„Ì#¢:rQûO® E"ÜIr bjmÔ sJÉÕÉ%äRé£ÎŒ Ϲj!µ¹*ê,I„!5Ü´BNÆñhÈ \†:“"n9™2üsP;G훜<•ÔŸO‚Ü™§¶‰…åŸóÏœI.â’/m)ļšÒÒ2ò’+••–Öð4b EwÎÔGcZJEÕWmY¢¬q Êëý ²·ïXdÈåóîñ!/GÛw¶¢»¾UUUïLXg´¶¶¶´´à/+’[·n13XX¨­íÝ'ÉO¹3‰b?AÄD“ÀÒ;¼ý6ÌÄ O3 ëª.Ÿ4ÒÔÔ\´t«oŠð~»&Ë÷w³h¿5ï ^Áö¥ë| ´X'JÒbönX¯¡¡µj‹qlNÝßìã'äß³î°MpªŸù†-gº¾­~n•iõ&i·HœËfÛ´446m6Ï®èôzj÷ÈëÒ­/.6»¼û÷ÛÆ™°ªhniIÍÈpñò²qq9u劅…ßÙ³‘ÞQQÉ ì3 –ÇëL÷¥…©}_P›ÜéT–Þà¿îL"ŽÙŽ•FEG_4;0cêœK‘˜,•ˆqWÅbòBr¹T,KÄH‘Žª¡{ù:¤\†K PŠ —IqyL _””ò"cJyX3É1uÈÌë–¸¼„Z3ýB%¬8Zsö¼ƒ¶îQa{V-š½X¿‚z “ÙæÅO×F&H©³‡[$÷H,–JÛw†[¹wúŽ“ÞµeY±ñ9b™(‘Ê:¯¤óq'»k¨k&–PozJ¨·CÛ_›¥§¹˜®¶Ì-0`¦úŠ#Ž2¹ÿô~ãjðäÔvÉ]¨\èrpÕ²ö䛪rúÀÅ2ò0ɸ„v[ŸM9SqŒ‹µ•w„ŸóÜsÉÏ:M[°:6“é´[YeY*ÝÖ"]8´v“‘ó]ƒnI«-^¨cäP'­w¶Ú¤¾x_qUä"•™'Ãò¸u©z‹ÕöØ%úž˜¾`yl)_—¼Leú¿ŒºªŒµêª]œi¯MR]iÜŠÓ®D${Ÿ0sˆŽ ]£9wË1÷ÂO uÍä2™·…žÖ’ýÞ^î›ÏßfîÑÑ`#——ܶnæäɪZ‹.„e(…ç©Ù'•q£ÎÏÐÞVÉ+Ù±PmƒñÅÈ@Ï]‡-Šy\×C«—¼(­É\2k®áÉ+.§f«¨ùçå£3©ï±++=uê>ëÈâ seå%ÉLÓ×]ΤPd­V™ížš³Y{Á¶ç>AÑ^—F¹n;x<)=GÀçXZÙqKâÙøßj™_ãy&,#óÒÁc®‘‘—NŸðñ¶´tÑç„ÖJƒjüµçyMUÖˆäŠbÎñÍ:]œ‰‚¿tÃ’ù¤3E_ÑÖÔ^±béœS¶™z§yk,ÔL­TœÝ¹`ú\MêhVíµtko“W–äWÔ–Ÿ;´zÊÔ5™¹¯éêEû.جÝiá+SÈJ㶬Y¡µHKsí΢ºz7Ã5Ë]ªÏ‹š5]UkÉrj}«\cóvh/Ø{)JÁÍЙ:çbJ¥$É^Yyq÷ÎT>_e®Klâ"µé ´—Ðk° AgZ¼ÞøŠŒW¨«¦f꟡ÈóGg +ÎÞ´Xý¨k,æ+Is_0oALÁ¿VšúÈ™ð'ZXXˆÛº×™ZZZÎ{xèúùu±%:ôäLÖ­»ab’ÜØØÈ¬ˆ…åѹÓÎ$^­®îT±%‹Å 1/ÄÇ6(³4ÕõÔ±³—Â+8ùiÉN§[:„'Ø%[<’˜œœœžu)0¥Ðù¼u97÷È1ú²ñ´;“³3ñõ×Lœ¥×ðWU­ÖÖÆ?ú‚ØMJ®ÌÌ¿ÅÓåL¢º¢-‹go0¾Ìár}/jÍSwˆÈq6ÔY¨g”Y¿q‰êî3¡y¤3­Ï%¿fQo¼DuëùhN–Ǽ©3œ“ âÎnÙyº²"i«Þ^¯„„€S3TÔ#òIgrJÉØ»zîºc¶™I®óæÎ½—ß½3)ä¥avÓgj:Ääpj«/n]°L¿BXi¼\S}uY}…½é͇Kkc—N™qØ+µ¼4fö¼Ã}Oh¯:H:“$}Õ”)ú—ãÊRWªM½3]9¸Hs‹qf~¬®ÎÔ½çÃKÒ}ÔÕ„eT»ŸÔÓÚ°·¨´ÐäðnŸ$¦I.ñ0Û¶`­~Vme¸ó¾)“W¥‹•éA gÍž1K3°P à–îÙ}Þ;%7ÙSmòì+éFkl5甦¬˜;ëˆkXifàF½Yu…œi¡OiͽδpݾŠÚzN]Íå#Ûg/ÝYYS¸MGmÛi§Ê‚ø-[öÅ••tr¦…¶ yŒ3Õ”žÚ°Dm›EI}¥£Õ†ùZ{K˜Æª!OþÙœK`à:_ß.ªÔîãLÖ­»yþ|4V0̺XX‘<›“Ë‚œÎZ˜›Ÿ8~"«Š¯æÜc"V>ljaqÌÆ5¶ Æë ……ÿ%³}†g.Ć^ø÷9ÓÂ…„•Q•8K/Réåµ ðòø#AøÙÚbŠŒ Ìèy§¬¸BQ™¿o£ŽŠ²òdÕ…»MªDŠœ@ûS&O]°xóÊÅë .d'v8“"äìú©“TMœ’}mvÌVQV¾È> o}<ÏL¡:4é›;òégs™…AçÏTVž¿RwÅìyG½’zp&’(ëÅó&++Oš¹pÍEÿ4™\ÁÉߺ‚ìS5wÙæܶ\ëyN“êÏ´a¿YY½"©Ã™ŠxçSó&Mš±`±†ÚÌû8S–¿ÝüÉ“TÕ—è-_¤{è¯2{Ë’éÊÊË"SSô×Ì™¤©ÔLf6“ñNüNŒ‰·G:ÿŸ‚œè“z'ýNœ‰´'ÿü·ò$ ÒÆNN]$©KØàáqgÒÕmÔ×KºhxX"2+eayìL‰…Ô«ÇÆÓïL…BC" §ªpö椷PU%ðongWÚÜü—«|õêÏ¡B¥ÌìGçit&–‡‚_thó¦íÇÎUýËßëïŸ.ÌøÏ¥Km?üÐöçŸmS§¶ ôü¾£¦¦†‰=i™XÏdf¶ýòKÛĉ俹¹LâcÕ™‰Ýþ½œÛ¾ÿ¾í¯¿Ú&Onãr™ôÞ@,ã’™x¢ðx<º¸vSèŸOOÌ™ð·zÞѱ‹!ݺu&½µ&ÛÎflܾmÛ)=;»c¶¶MMMôšYX¬9z›§ö{s<‚8@´µý ‘ݳ‡NÔ¡ÿÇòØQU­'³ðÚ¨A3gÆQÉ÷8“XL¤§3ñû‚e)dyÓ§g}÷]uU•¨¡¡+*,i}ó}…òrbÜ8¼?!ª«‰/¾ 6ndÒÿƒ8;;3±¸z•|åbÅ B V¯&¾ÿžË™Y}þ™^~™8uЍ«#w`ùr&ý?þ@˜ßO;}äL¨´X1„††¢3ÑI=·óÊ••>>÷ë\]7l(^¹ò&6¬çmq¶Ù±Óe×®íff«ììèÅô‹Š‹é5³°<ËcEUµ èÀQ‰vZZî ‚°£R:ññÇ„ëC½O×¥xçååEDd½ùfõ™3}äLR©‹qk+1g¡­M>yDrrˆçž#Š‹©%ú >ŸÏÄž4t¦+Wˆ?$D"2.“|@Ø`)èðÊÃÄîææMB]˜?Ÿù{cÆ©©Ô¼^àêÕ«ýäÃh‰äÞ«îÿÙ;¸(®½a›û¾ß}onrsÕM,±$±÷Þ5ÆŠ½Dcï½aWн" ‚ØEPT°ƒ" ô*HGz‡Déü¿ÿ™9,ËÖÙeaW³ÏoÄ3}væÌœgÎ9sŽÊœ ož¬¬¬¨¨(t&L¿€€5×®-±·—>¬²±Y»öÍ’%W®HݵíÖÉÝzúGެ31Yjk+¸ØŠ›7Ÿ=ÎnYƒîЪ:ÔØ™1Ífœ Ã>|xm`PŠ) Àlv¶å2q"¦\™A{ΜLPè~$Òvÿ>eÁ]c¤»wŽ*‡;:¢R²²²DŸºjäL]]WqÈgâ8,·µ½uï»e ¸£¯¯Ï½­ÅPÄ™®\©ÊÍ¥w­ ^{¶Ú™|€FÏž­Gy·_v’Úó  ÀY|28ôÂôPC:_r¦Jž?×°‚4OÈÚO§"us¦wïÞ9;g5kö¾°°!ꀿ| ¿þ ¢µ‰´µaéRå{€ú#=Ÿ©R'D@4i ÓáÅë×ðË/lŸÜµÐÓ#í´ÕsdQGÔÈ™¼||ÖX[ ©ÂÊ›7?{ÆnYƒî|bÎô¿ÿ â Ýëgz‰ü­[¡´œ´_45ÏÞ5¦’ïÓÒ¦1Çlž‘AÞ¤¦² ©BÎTVæï’e/<ÁÿG:õùspt¬£3¥¦fýúë{'§zw¦ììì;ªæÍ££‚<|H*î4Øax—Ѫ‘âLÉÉðõ×ä»9!0ÆöêJoNŸ{4$À¡C$£K4R¸º’oòòè¨Ñä3ICЙÂ#"6*Ï™Ö\¿ŽÆnYƒîÈr&^jR2iÆ’—›¢Xó²œ)ÑÓó¹°35k&Þ™5R3­F±±!ŸºLb'©+&ã\zØØDÅÇ£058 `кuUbb S½Iír¦ÊÊÈü|‹k× ÷¾€3¹¸€³s)33kõê÷Ë–•–•Õ¯3•––·kGôH”´4ò5{d$­oð¤!U#Å™LMaèPRp)¦ã›6)¿¶h}&ÜQÏžâ#ÚmÓ¦õòµ#>î4õ™Älccciiž…Éû„„cW®©Âƒ®¹yTT“jÐ 2œ‰—sãÂ¥˜<^~VüÉ£Vɼ¼\Gi ÇËÃþG—‡,gŠ÷ôœ™‘1¹°prIÉüòò’Šÿýß*±MÛã;à‘#4Ü 8>ËõoÜ(ÉÉ )?P#.üQUu¿¬lÀ• Vù¦¦vòòº ãè8ëãÇåL[j‡3½_v÷®^|üŒÒ´À3£S•áLø>}íÚû>}J ê×™‚ƒ‹QŒÄFdL%{÷kk:ZßHúF¬á‘äL0s&q#±þpïÉ–SîÇø†FCÕ$%‘f $õ©1b˜UGC%‚ê¦&Î$öãJÕç3½|™Ã&WÖ¶¶ËÄ}'ï°ÔÎÎäêUv›4Èß™’’  ùµ Ag:lálezäÜ9£Ó–®]>sîܩӗŸ:œ9fdúâM³´x8”Í ˆŽ^—‘‘Âä3¥——V,^\…z$ >SgÍ¢áAÀ™aa{?~æÇÿD0Ÿô«œ4]]<$_|xJfxíÛçŠÉôÿý$Úû8Ó{<¹¤c-öY©FÎô༶6žïôCw4nØ‚´ÌYgbcZPP:“™Yܯ¿~ÈÈøÀö+‚wAyy9&`¦ødƉiii………q.Ž&%%áÃ_…©×G’=þ*¸q\ÅÛ;ý›oª"#kVÁ —ᯒŸ_–€œ¿ Ûbà^ØUpãB{IMM]§®’““Ã~“…£ø‹ØUJJJ„VaSJÑUø{\ÃÒW‰ö~`ló8ÜÝú­ç¥p<óèI|ŒE÷‚?vÑ¢’Ù³I"»<í¨¶ü½dgg?|XÖ¥KUPPÍ*B&ºŠè^p1VqŒ‚«à%ý÷¿QŒòù«à£ WÁ³Ä®“ôë¯àà@>‡dWÁ³ŠaüxMÅ®‚1¯îEpÜ#» ©pIÑU ¤¬Âß ¸¯òáÃÑUðZðWÁÈ#´ þÅé8Qå8Ó›ç·Î¿èž”Ÿm~鼓wÉ »÷Pž²9¼ÑùEFm:<‘¿ý&­ìL^xµ[ÇZ¼Ö­“Qöwé©$®\Š‹‹¥G’톨gÊN{lQWçðcÿèûÖ¦IéÙ.v{FÓ™VÕ˜››£3%‡‹àãë{ÈÂb±¥å\kk™ÃÂ+Wt-,Ü==ÃÂÂèú4(FÑòz ì½ ¹iíZ‰_"Õ5΄/ax0µœÉ¦z7Œy‡?¶ti"qõ ¦³633¾3;GªU;“€}ÿþ1wï–›IÁ˃ÔIF23e¼n×Ä™0áª!ÂÛAÕ‘ZÎÙ± ð†…DI•äL¨òóç—oß^/¿¥O°´”±q__òq{Ôf©hØ3•å%¥åâ÷(Ö™¡];Ùîæúõ¤Ž¶²ÀG ]€¾}ñzÑQI„†’ŠêÊ­¶¯&™LˆØHR/Δáyàª{Nv²ñ9‹'¶C“SnòW/–Íg:~<é8ìîÞÝef¶àÊ•¿¬¬æ\»&4̵²šåŠöùóWoÝòõó£«iÐP˜zªDЙò<N—W"ø#fÌ€ÜÜ\éùLxQÐnutèhýÁ~¨ˆu¦ß'‘N&YY¤=‚§OéhÁ·504äT±¬²’|õ¡Üjà3Õ¤xŽý쎎TSoÎÄ Ö™ôõSiz¥AƒªQ‡|&wwO7·èŒ ãÂBÆ™H}¦…µœéôiµp¦/AåÎòò—ýºÌÞ;ÁøCøÙ””GjåL––¿V;SE9—%%»&ûyÆH•mQQFN˜4ÚK–¨­3y6gZèÙt²ÿ“¬ÃÃ;—•†ìxðoºÖÌ̹îΔP‰I rK®?&- qÜ&F(<µQšzGÔ™ll`È—Ç!Î…ômee‚ƒûá e.‡x¸8Óû÷•¿üË÷áÐ!Ú‚¨ØwQz÷®õ±`} XßYµˆ:“ž,\HÃ2)( EcJ9]l!È™3¤8Ǽ«ÊJ1ð•IYð˜^èˆJQÓþæÐ™Ö­ËÔ8“5ïL999i°Y^ܾ”œÁËM¹qö莭úÏbß9Ù±tõÆÛNOuöìÒÑ=줰3¥$&z¾°ñõmãâ2º°Ð7=½Äа¼¢‚Wõ±3¼ûìÆTœ©S¥9S͇õÊGœ3!a˜ÄƒÝx¿´þøë/ÎÎÔ¸1¼OÃõF-gjÖŒ ÅEäíÜë.ÄýÙ–::9/aÂçu´çVسü^µæ…êâL˜:íØ醰j ¬ì`eûß¹EEã Þ*ýÌé NÍšu ž.,.ÎTRR9i’Àg†R©âÖÈ;þ¶ÒnŸ™ tî#Gh¸ž[UE%ˆ:ú¥‘ ËoÆ©Skyµ¤_/þ9™3‡h.GP*V­"5÷•y?äèkõŒØèªδjU–Æ™4¨ |gÂð-óŸXgJ‹¸ovÝ-'ÞG÷à(»[Ï‚óÓ#öïÛ¾qµý= Å).ÐóqÓõëOšQXx1==˜q¦+UîrÿÕÂÅe9Þ¶íÁ³üÉä'Ir¦úyîHp&†gëàChi ;“”#ùâ ²z¦–3á1BQÛ•3ÀgwlÎx{¯G$Ó%ÀÅ™***·mƒùó%^´(y OuAwÌ™ÓÃâ“p2‚%¥ÇxìßO[GÄ`¦Éã&ÛõJaa! ©QgêÒ…”ŽqgçNÒ¤*@¥Pê.z Ç^¯E°èœ€€Jò©¿?™¶m¹Vg9qB™ŸÎ©Oß)b?®T gZº4+$„M°4hP1\ê3QgŠr>{åYvÌkcö1~·¬ú=´4t‹ÏypÎÎá’âΔèéy5::úÜ9t&·ôôçŒ3-®Š[r¹§Þ²exÛ6‚{ÀŽÅt¬!É™®]ãZT¤9“¹9)*u¦£G%ÖÎP™31‰9†oÝ"Ïì{øp+€@ŒƒÃAË/–oô6| àW³ Ÿs¦éÓ‰3±gœïL“'“¶.Bu/-µÓê·´F9;ÇKËfâäL˜$XY‘ú4BµzQ‰"!r'ìlÍÛA;L}7ÀmÐ^«ÆÀ˜¦Ð´t3“\Žr7ú‰ÔÄCÐT¸$‡7nOèëõ˶Üz¸5CÈ™ðRù%‡'°·' KŠž®hˆÞ{~‚ŸÚBÛ©0u=¬ÇëµVƒqßÃ÷¡£eC6]š)9Å¿YY$óW®æ«ìì`ð`Œ]t´Ž¨O½b;%T gZ¸0[ãLÔ.ÎøòATzv~^ÖCkS=Ý“~iYÙé‰çOê޸㴟žáE wwç»O‚t¦ @O«‘ÑÑ22‚ M«ó™¶yz™ *+û5$älÖÐiï[v{¦>¸º9ÓÁþ^^³g?xà)ÙBBH«ÏjáLÊçÏÇ©žnwÊ‹ÿ×Ãq(Œdê3­\I^äQgªX¾jöìÇ!i ÀeüJq¦ÐPR÷]0½È€Œ­°Úé0Ý ¼J¡”ŸK.Uá£ Ø ‚A- …9˜CÍgoOŸ’‹Ìncþ‡Ék©×f(Ô!'#***22Ò‚Ž3„‡Å”«~b"4iR«ˆMh7ìþ¾› “=ÀCôzá²û!0 ø<œÿdì9qs#_퉳‰øûï¿ ÜbuCM2™±G¢2gÊÈȈ‹‹Ã;iîÜìÀÀ` Ô.ÎT¯¤z^½í–‘±½°0ºº>SAnîì—¦púë7¡ƒn™ÎûO;xÒŠÜÄêåL`ïð¿&æoØ€)ô­òr¦[Iδf YE-œé+œÀ¼fûŒÑ×Oض-!ëáïð ãLxœBý¾ñ‰ßmšRŸõ..L«†R V­š6 ˜|&Ò¸²œ ¯Õ×_Ó8…Iìkxýü6†B`°×^<˜ôÚݯðë˜ L΀©)ŒG£ îˆKŠ˜@(ª×ZÚêÐß{¬­­é8›i$)[V,xF›5#Ýå²øƒgè<û‚¯ô녦뎡ãïð{$aLÀ‰çÏ“ àôçÞ8(mÊjYŸÀŸap—(r¼Wc” ñôôDgš2%õùó—n4¨¹¹¹4ŽªÆ™HÙ¾WfgW;S…»{U@›>`ø¿íÚ%y¸­rúÜ™~¹¤8S=|±-Ë™îB‚sÈîoßâø&£IŠ3aÒ¥«KGë ‰Î4kI ˆ3¸AÀS÷z놲UKð€ŸW 21¸-øŒ¼“gš7Ø´I¹…IôªÊr¦6mÀÑHÉ΄K@ \*¡Ò¬€Á¡÷¤'’!y*LíÝÃ!GW¯®é[ƒcF–ÿþ·~?_WŸÌ ¡²9¼¿ðö•×ÆŽ…Ë—Éõ²ûæÐ|/ì-®9Eh·s`N'è!•UU‘×®¥³8‚çò‡ (ˆŽÖõ¹4bD1gÊñ´»¨'‰Ó)t®°esZZégÒ &¨—3ÏKçéõ(/¯8¶6!- 7,[æïþ9=âAG°Ÿ °œþ’èLC˜šÂJE–3o3¼Aÿ@lˆ"Î$ö[dt&|*MJGë ‰Î´};üßÿ1Îô à9À~æïkRkIO€¥ ÕW`ò™z H0ë3ð©GZ(‚I ÚŒòàèLÇŽÉòñQº3á Ø°¹â4œþ¾Cm­/,ðq#lü~öÏþýI÷û,¸SŽ)b·np÷. ×lÝu@ЙðÜãå]·ŽŽr‡ôé»´òœû¾½—$ÕÇ—D ”l‡í-*[¸T¼øýw¸z•NçÎðáäy£0*²‘Påðx<Ñ誘3eÙ;~—óöötyxýÚ5;‡ÇÞÞ®‡´Ï%иÂ:Óøñé®®gÒ ¨›3•¤§oldXVV1¹©;´jËþ÷mhûÁ)‘- Ñ ªî‚{íÇ•*©âÀ÷ÛààäÉå§àè_¤ƒV@mÙ0`'yJ#êåL îøÁr<”p×¶i9׎^S>e:iLß™þ÷!#ƒTâLiÒäý[·5ðšïL¶Øá³,PîÎtå*ü{p`ËŠ6.R;°“BT„ƒß•þôåWUüìN͟O:2«?Ôó»¹âbR.†Y^nÜ€ þ©¤í#xD'É jñžü=Ë~øï÷¥[=oëV®#êóÝœ`||s¦¼w1±™$qmßÖƒ†[¶î~›“ž’!oM֙ƌÉÐ8“5Aíœ)+ýdoíòrßÉM_ÀOÍ x.€ÖK£QÑ{û¤$¼‹`s;€ê.=CBHF9¢2gJ pØPEj1C)mÄ8ÓÜŠŠRÔ¤ Èò*q&tŽ¥KI@¬3©„½Ë ~4¼tÑj‰bdrþü𢱣VÓe¾3}ÿ=x{“€ œi+l_Ù³'¼}÷ãü’’üŠŠ$Ÿ Òñä’UjÃÑ™ª ê¸ûë¯:'<Ï•7ÇBr(ßáoû?-ÓKH!½žÊ±cL”©7ð—Òªt&¼{ºv…Gòk‘ç¿:$<Í’ØâJÊKöG_ÿ¢iÞëRy·sî±=¥ &™LˆØèª˜3徸yf¿Å›ä$û‡·lÛ¹}Û¡äEjβÎôÇ™..gÒ ¨™3)É^wa̲òò¦aæ]à†50 ¼h2=àN_¸k¿iS @?ØÎô€ù­¤IP±3Èeœ)Ž~É$€ã óV¯Æ—ÈR¦ùAg}¥{ùRY]BÔr¦µkijÌ:S³fððamgbЦ–L€œß½ŸŽèÛ¹ÀûRâÄG°>»Š œi#lY¹c|xŽ_1YwCw층w/Æs€³xþ™-ÕÀÅ™**+îÃýoßõù¶uQt4]QaÌÎW}5¯Sy·d u®qG³ɧsõ—zªCpAgÊÎ&½oËn V”›§ðô»ÌÎ_7û#ÏŠ¢$$$\³†o†ÿRÑ!˜¯78óà±=¥ô˜÷YÖG‚<.64q™ÉU] é IDATd:)@µ3e<~ìA“, TŠš9Ó%ùwnëLõòª(*ÚŽ >ëL˜”NÁZ/^Œ¸Í|•Žì(kPgÂÄÛÆ†a¨åLÈIGGm€ã¤>ÓŒ_˜œ§FC«ªt¨:¿25‡š¯Òê†4gBBCÅ9éoN«e0Ž‘êLµ?›«/gŠŠ¢%}ËæìºhCî2ºÅHª}Ÿ>ñ;¢<éˆéìž‹3…U†µ€§ËÌ~ü©ªŽ=¨àµ]¾æ/-ý³jÎhÍ#…³\yý~ù¥>¾ûT;)&†ä{Òû‹ÑÝZŸ¨:ùsÛʧOéD…Y¿,®XRµt8 mjK >>СƒÒ>Sgs&^\ðÓC»÷X„¾:}H÷À)«w¹ò5Fƒ7ª———‹‹ [6çääI“, TŠÚ9SÉÒRÃÅ‹+Þ¿¿@ZZö¹qÑ™P“ª*·l1(:¤*5ßÌЙ*jœ S}L\• ¾÷8Pµ„Îtò$,ZÄŒ0;SÕ¾}•ÉÉUÄ™JP:ª¦M« ¸YUõ’™ûé;Sp0)“à;.|ó ÿk±grt$mæ ¢Î´j%^ˆeꀣ3}¬¬Ü^Y¹ )A¦3¥•§õ¨ì± 6U1媧NÑããG9ŒIsA}¡ïZX›™#æÅ],‘‘Ä™Ð!ë‰45è8„ÁïšjîÝ#ãr'rðÄ®„•x½ðÒ×§Ó#..yÔ(8~Ý–7-‡åÒ›*$.Ú·WΧŽ3Õ¤xNl÷ˆŠ9SŽÓiãë®Ïm¯šºF$äórÓãâsyò9¦L˜$DDD°Îäèøš&Y4¨õr¦Ÿ~(¹Ô¸¼ühEÅùªªTwX֌ܸŒ3-]Š)u1À —É™™èLæ :*‹™M\•Ji)èèÐ0g"ÏPLû™¶f¼yC ÁÌÌÞUVdç*ß™<ÛªâÎô‡pó¦DgÒÓ#½º+Ñ™Z¶$爡ƙ¿˜L#1δŠügÛÀ˜°­º¤dûÑ£ňHw¦ÂÒÂÙå³GUŽb[8Ä‹6m»ž‚ää@»v¤ˆ‰„ÈÖÐútùiŽe²²ˆ3½zEG•ž Rx ˆ@Ní‘#rœsš%°d c›05…Ñ£Ù9 ’˜ø ï!$bÛC{cÀW2N’{âõk:ZÐÝÕ¤x‰¸ÖCÌgJŠ u¸q㮓gVM5¦¼ô”t…ë€ÛÙyÑ$Kƒ•"Ÿ3åe§¥e¤¥e)Öä·Xj9Ó?”4iR^_QѵªJ àqMÙÓE/J zL›6õFÑ™ðu•M\1­ÅÛ^®F…|É“°Š¼ÎSþôiÝÛš‡…­}õ*þìÙÓ¤’1‹3á.ÂלÉјZñB(ìL¯Nû:]ÍY³æÃÛW¿——/Hc†ªúr&4$Z̪€3!ùxùKJòñ¸Ä‚)4d BÎt¹ôr»òv‘•ô£)øùgòû#—_Ò3ªtî4­hœòŽÊÊHÓÒ‘ë‰b¥T½Q‚esóç“^˜9b ¶m¡mмtS4ÔºtxýöíÇo¿%­Š#x½œÁù[ø6HV«Lð>îÜnߦ£u¡¬¬LMœ í†PÌ™²ìŽé¸(„¡öz#ÅÚ@gºqÇ&Y4¨ÎÄËó¸wõØ1“Àô,2úî…á©K‡ ³™™J¡Æ™?.ܲ…q&Ò¦%}ŽÔv¦3gH½ËÁƒa÷n2™ èLžž$íÈüçDz:\ºDõ‘×™ÒÓ„„\†àpâè™±V;wVí!Bδ~=¼yýú1óÔ™’ƒ¯^ų¨óä«ÉQQ1_\8§Jgúí7rfp§xdl…£g" $3δ`iK)Îú>´Yi3»r;~±ÈÛ·äWâÅTgg’WÄ“ᵕkGÃ肵é%3z4ù¹õDºÚT½á;žøH3Ü\H†äŸà'¨É£Šˆ ¥cu)Í´·ÏlÖŒKThƒöÂñzaT=|˜†ëÆL5)›ËÉÉQVÙ\î«»ÖÇE0¹x/.À~p++_šdiРRdç3%zœ4y”›—éñÄùö5£#Œ3¥$†Ü½}û©G<á‹'%%ÅsÀâL/ÚÙqq¦³g-Ÿ>] €Ã3U:Ó L¤™ìêLb‰Ÿ= 7iõ$¥fÎtlF;ÓǤ*)Ë?ÿ)·3¡ëÔƒ3¡Ü=ùjzT”€ž™õ°ªQ-gBOÑÕ%%IüÖ=¼œ˜ì0 SJt¦üƒTÆ._NÎRÛ™0²Ü½»Ÿ©Ï„sQ:ªûÔìLéYé“ÞOZPº ¸¼˜Ÿ\ed@ÇŽðü9;¦èñsçÒ0Käý¿œN%t›7“Žþ>{øÎ„¯]»rÊZ+ƒ²Ù0ÁúF)P§]lN‹€·©Paþ{xߺ#\5Å»A´€ýóC1g’MRD€‡ç«Ø¤ÌüìÔׯxZ—.ei×.œ:ùÉWS¢¢&„lÚt¦¤¤ ZAæ©gbWAØÖDãâER²Gº«ƒ31èef’O™˜vDk*r‹u¦¸wqG³Ž¶yß&³4cß™ÊÊH–”bà¡ F*€ ’ý¼êyKhÀoNL2U†¥a¥ƒw ©¾3adGéa®š4P7/Ãe<‡™I'1à 8|“ 0£F;FÃ|^Á«ЗôÃ([[ÒsÝáñxŸg[Rॽ56²ñ |qÙæß£«V]Oè÷þÍÏg:>&Y4¨¾3eçå¥dgóv"q¦`7ëGþ1y1OO¢3¹|@ÏØ+$,,,"CÎ!D©åLwï–4o^Ë™RSÉÇçÓ§K¤SêÜ\—¸…“bbÀÔÈsß2L!¾l[DœéÇkW|*si/©Q#²ÊÆtJ5œœ aÓxÒdÔ­ªªã™&?\7—‘‚Z³W[¸ÐH%‰4x3 øÄ ×É™¢¢H{܈bÎ wî2f ©EnbÂw&<p`NöãÖEEÝ*+ÔÖ~§«{¯|à—ðä ꨚ‰Z›Z/ÎäKsìäs¦Ò›7õmm3{÷.@?½L'Kp¦çïžÿ”õÓÕ÷WKJK Áë©@?,xÂ;vŽn$&CÅX3 † öß'Ò8«Hš¥Êäú ¿.T–egdddf•”‹ÿ%|g 'e†ÆA\[h{ ÄôT¢­Mž Šññ#)H­þ¡†J¨ÜÛÀ™²ìÖý¼ª‰0!]iH€zq¦„€gL.:pÈ5ð݃ëfqé™Lu½âè\''§Õ\½ziÔ¨”cǼœ5hPrr¤fñò^Ü4X°x·G¨»Ž®îáC»’²9;7{ã]»÷í;fŸ#OrqÔr¦˜˜-­Z΄¬^Îtå I[1¥Æ¿ïÖô¨¨˜óæMWÒΡÿ0Z6L>¾éKL\%Àw&‘oxˆ3uv ¥k² ¹Dr›Ùmñø˜2È>'.ÄdáêÉå5¶UUæ0­äg2öí£aéÔÑ™¶|iÖ îßv¦5lÙÎöкwÏ#±QkxòošÏ~{Ÿ:Ó¥KLîBˆ:Óƒp*‚΄gIÈ™ŠŠ„ú­¸s'lëVÃ'OVcNbu&¿@¿1ïÆLΚœÿ>ŸmŸIЙ,,`Ð ­%¾}{ ££,>|Àhœ)í¡ý¸@§J 6þýoËꃂ®]ØÖ•¬36®Ìo=ßB(ß™¼½á§Ÿd|°3æiV)¾fˆ€G®¦ Áh‹×+X\…ï Èø~1:.èhhÞ\ìý'Ÿeß)”8o'›o¼t¾ióH°Gœï£}]2³ÒÌ̭ЙbÒ3šèyÅÓ¹‚°ùL#G&êè¼vРA áLõGgÊζ 49sÆ8SçºLÛ‡˜¸úOVíL˜ã3ŒŸ¸bº.—3}ó yù€8S£êF-99Sé¾íI#X¼5¤¦àNà?`;ÔÕå:“%ΙæÌ-¦ØN&ææä#+DÔ™P=¸;“­-Y^À™Àsõ3“?àÅP˜>iâD<%UBCwçY5 õ™ž<¨íLîîH.Èý GgºvMØ™?ÿ¤Â=_ß n¸pÁH:ǃ¨3 <óã»E?zÿþ}FF.À.ƒ ãðö-|ý5ž:":8Šq&i!sñHšÜ²²²’’VApLQ0¥A7rw¯üùgRG‡ÇãñW),,dW±(±h-² Kp °{aWIL,oÑ‚t$e/‚«à\Œ]%//Ë*xZ¸ì…í½NÊ*Ù±/Í︳«àöàÂ… ì*¶¶•]ºŒ ѽ`Oîťʥ%´ ¯ »—ÈÈòÿû?r_ ®Â^;I†Ç§GsÛ¶­HN&¿…]ÿâ*x´¸Ê¥ÜKÍ YÔ‡(ÁU„öšÓ¾}ÕË—¥ì*b÷Â_·Ìß ®.¸ >q¹VÁ%Ñø…VÁê¸  NÁg/ü‹[`;SÒÙ={ž¹:Z?ô¾jpøMvÍë5/)üÔ…ë.ÏžXÚ=q½qöºÝ‘WÅ~RÇ:Óï¿'îØáM“, T Þ4vªagÒÓÛYØ™JÛÇÇÇ:8|,/7¾¿ø]ç6ÊËañb7€cvèƒã ®¶~âŠ/¡ íLeïA¿=¤[CñZòž pêÔÏ‘‡ u±QiéVÈù?(<óF*îL¨33g’€3ùù±]ï)èLÙFæ°¸ÑUX³JI²ÊJ’¡ãì\‘ô?­Àe$Xÿ5on䟆XqÎÄñàù¬azˆ««3EÜ?xvˆŸžÂô¨ÄÎÀF2¿P¿Ö­½;”™™‰I&KlLÃTÆ¿¸C´–À@²v"FB6òGÅNDðþþ;ŽÕš‹v™ÒªÒ0c),-«$qIpþ(î½[7¸{—ŒJZFʨôeØ0"8Wh)£BÙ€¤U>äÇXµIû@rgÙ¹˜Tó¹~ý:;ßyØëÌŽ²Á¿EUE= Çq8^EÞiv6inÀÍMÆÁ ²¯^­ìßgщBËWÏÁ²jNy±:±ËäåUöêvvâçŠ(vÿ²£‚™EdЍð*øWh.¦÷O5Ü)õ¢Î–ËŒŽ¿¤³qwdí"‰Ìäø¨èèôì¼üܬ˜è¨„4ñßb³Î4ztÂæÍ~4ÉÒ A¥¨31oœµ©5nðø1ŽœqrBg°ÓËmÛ"Þ¼YØ«] XèÔTm×™PÐWÐ2P_øÎÄÔ™UÄ™p={H…!²|ôìܶ-†ÇsáÅÞ„ëž<Ùuñ:¼1‡y”ïL ƒ¹v­Æ™ÒÒHCæɯ+ø9’U„œiÓ&’z qUÁs»d þ¯ 3%?x€ VUáµxÉìw|ô 9“u¨u÷ÀîoÞ½ì;…MX>~$õ¸%|C)ƒ¹sÅ”¬âŽøÑø ¼ù¾ ªö9QŠ‹aøpz^•Nƒõ7W™spïqÿˆøÔ’% ¿lÏÊ®$ГLÀ¤'ôÌ'­p‰¯×ˆL³ü`_±Bü²ÄA^¯×¤hñ`Ì­õ¯yŸksHjœÿÅGuuOÞ^^^Ñâ{ká;SïÞÒîNðZA+;°£ãâÀß´lY­xÁž=ÁÞ^ÆjûaÿQbjù°à-[÷ëÕ`—F&b¤NùL®YYVsí†S\¦Ü û±Î4fÌ»•+ƒi’¥AƒJù4œiz7¦J>¦­ÿú0ÎDÀ´•|½RwgB¾ø¢Æ™Îžeõ…:“óàr&Ô–èLä³²àà}EEGà}KðàÌ8“³âùLhÑÑõâL/_‚»3„N†Gk0ýt&«“z³ éúuÈpp&„=f•9žì…Ôu¿’ñTº˜3¹†ºúúKq&w8v,SÓ]22Huà˜:Êw*˜%AR há Ît\¼>óæ)b2ÁŸLCª†u&| ùáR˜,– ¨Ø›FÂH ÐI¸pd5É{½Þ¿‡ÆáÕ+Ú?´$2 ½Íªosöí#1±Ž× £¢P$Tyyy¢ÚTgJ<²eán“F.[»êØ‘íÝ’WšXg;6~ñâ74ÉÒ A¥|Îô?ÿÃ(Ž’' q¦9»Øþðe8&¨B ŠE¦3±î äL‚­@It¦B€#ö¤M„L7¸tà™ÇQ¿æÍ¥Î„ÆÀöŸª€3µiCô…OÝÉÙ®2esµœé·©SÓ`Öø›7ݸQ¥–ÎÄèî®L>EÈ™ømZJq&OOò9•¼³½zEzÒÀs/ UsÎv‚N’Ê›._&P5…L­mu€u&Œò-[JlÅ;B€ÜÔ"—NX±Uqý¤I#044'û[BK°ü ~ËR'Zü)ìɺP¬6ßÍ}÷c]œ)Þdqx|rjR’ý¯„€“;.$ÒY²Á{ÕÊÊÊÜÜiüøøùóÃi’¥AƒJùœ©Q#Áo²ðõ4õM\e8&çüÄU 8¾µ£gð‘èL¦ŽÈ‚ÌL¶Ÿˆ=ýŠßÄÔ|7÷àm ™£3¡ák5{HøëWQª3ù_úê+\è"@úŠßã GOгµ-W_gµj'ž 8¦_~I.¯\XY‘ª-l® ¢õT0õí=NÃi:^wwòA¤¼¹&\À_JCª†u¦òKé-R›r(Ÿ “—Á2.§ã nÜXîö.0âŒ)rÁD@»í = À€Ž×ÝëÇë긢‘DUˆ=’º8Sî3“m˯\½lùÊ]ç¼\/ëžwU¬^t¦¿þ ¿s‡&Z4¨OÍ™ ýüC¸›¸š™‘”Z9΄ ?yBéôiV$:SFF­£E 5(6–Na©v¦/àKÑ2™Î„/ã¢]K°LD2WW"=Ês¦˜Qÿø.„jÈ{ÓZëÉ¿q•™™óß ‡Øpž³3¡JÔôÈ´BÍ´ÜÃÑ™ÒÓɸ8“ÐÙSÈ™îÝÉe‘ mmñµ ²³³E³lÁö'ø‰íœ_¼à_MbÒÁ»Œ†T ëL[ñ<ÓXZ›Wðª5´æNäÀðáüþ¹¢¯OîŒn Þ‡ûßÁw¤a0†þ󟤽°ºð9×ÏÏÏIŽŽ Ï £rÃw¦¹sßÞ¹ãHS- TǧæLCfÍŠ„lmˆ#‰«Iå‰3ýþ;Iu‚‡IŠw‡iÛQî΄©5>ÈYgÚ¸‘õ$Å JÂÉ9‘Ô ’éL+ÄË‹ÖÐ*/'§÷Å_“"ÜEÝ 7ˆîøäIž÷Ê'v©|s4ˬ}Ô±ß\\F8Ljæž÷8;pß¾4Œxxjìß™ɇx‰¥ ÷#èx\2DŽdû#| Cõ@O4¯êþC‹j??\\\ž={fÆDiŒýû‹É™«„ʱ0v lá’ÉIJy3iOC.0ÖÝXRøFÁ¨m°Mô>| Ír²ÏŒÏ•:9S€Û³g‘cûN¿V¨ùc¾3Í™qû¶Æ™4¨žOÊ™0¥¬$¹ùáF¼©ï?r=ŒmJ+¦žøu€U¤²‚‰(›¸²ýáK‚u&D¬3uq$݃"Rœ Ó]~¿+Š8Ó]pú J]„WÁ[·®FsçhÃÉõçL¸Y$M76𭃾þ'÷šhÐÂðàA=ܱDg /††µúQu&dÓ¦º:ÓíÛ¢%=Š9Ó… 0j9[))!™C‰‰tT¼¹D_Ü‘Gðè'ø) „‹q§]ºë tÒÔ@ÄðT 7˜Hb`@»Â\ZCëtH§ã¸r…d5á­À¼ ßOntîí/x€ÇðCŸC¼ôýú‰É – Œ™¢‘P%ˆÍ­‹3ÅZ±z˲ù Ïl;p,%GÞr9ß™fÍŠ°·×8“zqð ûß°ÀT-œiÖ¬hÎD qH«ÅáPj‹at¦>üóî¹5Ò†Êe^nzPˆNPQãL?ÿ,-!’îL¨alEr)΄lØ@Ü FÄß÷pFJïÃÖì²<0Ü£`_ƒ9Ó“¯’]¢ðPI¶,­QÛ¶yDGÿ ðjRûW`éÕ΄?ÜÛŽ'a¾Á°¥o,óæÕœa‰íðB¹ÎdoOº&¬bÎäæFÄ%—4IÍ üõ­[ÓË"jS •Z µ¶ õŸÇ2a© ®tðTЪaËæÖ¬“™‡gc ŒÑ}î™Lžÿß~# ‰q$2¾ýO^2©ý¶€Ç3æ®5B× ïÂiÓÈKA](++5•€Ï^ .Δlª³ëιçž\ØÔ_ pîðiæÌ({û»4ÕÒ ܼyoò䘿aæŸZ8“‹Kô–-œ SbL}'AüHxMËæœiaHÈê±c‹îÝ+„ÂiÛ¨3ݺoÞ€¤WQU9Ó»ã°c$¶Dgúpì(sxµWa “þ©Ø¶¤«ˆ΄i?3D¬3¡ÄDEQgzñIJ5Y“fµ}FlØà{°¥TLô¹:üõ ¾ s-ÞAzü‹YáLóæ¤réI£„œé§ŸH@)Î4n½¬Ês¦”R±—{óœgÏ’’aÑb&D’3!ÏáùÏðs"ÔÊžÂß·j•Ü%ƒ\P7g;–ôî'„38·€y@ºìàF“ÆIß’a{Ĉ»3!^à…Çö#¼wÖ®U¼_g–ÏØ™òã|ž»ºê¬Y´á¸e®`‡sœá;Ó´iÑvvgR#Nz>n\¼Æ™yœ©4&qÝ`g6;/|ãL‡ÓÓÛ$$¬}ûö0S67:Ó™3¤‰e|²îÝKÖ „cÇH€3á3Õݽ!œÉ´ÉUàÁ»;ÇŽíf’WUÞ½#¹Jîš…ÿxVÀ™ØZY,biÊHN¦Îôö dÌÃý‘*¹p´ºÞ{á`#=(¿þàŠ„­a¾›óè¼£pDÄ™úõ£9Oûö‘CÅÎÏ-S®3µmK 7å9NÀ­>}JG¥ƒ ã™Ã„Slª'¶Á–r(£v“æìkqð`ÍS"cÕÖ™~ù…Üd‚AÑ0¶öÈ•ÉÄÒ½;­Á(¼Ë–‘K†T‘#<ªI0i¹#j×kútú"£¢‘P%ˆ-J®‹3åXïÛtÓåæ¼¿æ­Ù¸/VÎ|¦7oÞØÛÛÛØØøùŽ1vlØ¥K5-djP9 ¾92ÒÜü*ÿÛ-wÓ¬Ê%66VoÏžccÆ/Ztîøñ‹/^¾|ÙÜÜÜ‚b£F–ff4Ìrø°¥¶¶¥å´uë.µùBÏdÓ¿ç6kinni¹ÛÒRoøp ‹_XZž³ìÞÝ7òÅ–.µðï”)–é|öîµÔÓ£á;È–û÷'á¾}ñÏ¥K–“&Y’Usç,ÿüÓrð`66¶\¼˜øŒM¸Ž– î9}ÚrÑ"üçN˃› ,W­²\ÐȲ[·ÍŽZnúbÖ¬‰—.m°ìÑŠ]– «KdéRK¢A ¿ÿN—/“Ó‚ûâïeÐ ò÷ÌË –-«^ƒ=Ú>}jþ²ôêEþ®Yc¹y³å¦M–óç[jÙ³§¥¡!Ù,²u«åÑ#––ì%ØhÙ½Åù.½¦5šlyy•¥åfËž_“k¹œÌ2Ülù®2’,È?˜~ýHOøÔ©dT_ßrÏf†% 4nL#™UXþøâäö²VŸp˹sI12"Ƹ}–ᄈܲ…Ö­#Ë€i³b΄`šºs' KçÃ8´‡ îàÞZD“ÜÓÌÍ%æZ}àuA‹þòKaÅu§ïà»LȤãò°e Éå^¯!Cèˈ¼xƒw+h%ôA[›J\ÍgB]œ)îÌ®“fºK¶žwrþ^ع±±¸Ùsçx‰‰ÌÄ9sÈßÉ“Éß)SÈ_--òׂgkË»y“wò$ÏÌŒ7x0ïí[²YÄÁççGȼ7Î<ÏïxA?óx{““ýWµÁ“š—7ÿáà ?6bWYJ–dæèQ^F lÙ»pð ?zDš7'—ã³f Hˆ^ÖÛdtÖ,ò7!wä ‘‘ôÀX¦O'ñBŒͳ³#a++²Œøú®°3ÙØž=¸¼ügeA“&Û[©–O)”þl¦ó™j< »ÊW­;)êÔÖ@b"©QÄÏ;°Û #Wá²9âL¿ÿþöÂ…k4ÕÒ jLMmFŒˆ<8å‰NúÛ rgR´lOê[éu¥pÅðæž<™Ì$e8+W‘‡ÙÛ·d\_ŸüdÞ¼šÃW¯jzp`ËææÌ!aggˆ‹«U67…t„B’ÓìlòV+TIXfÙ®ÂÖS}ñbqç«Úºxtºè÷‡…Ïžþ§QazZiu Å_k½iÉø«¬¬è("Z6·`ù«pÙû¾Ì/›{ò¤¦‘æ{÷HE¨iÓ@O÷‹g˽çÈÈH­ÜÜî>>û¶ò\…ù‰-›36&…¡‚à:üOÙ²¹e´K8ŠÌ²¹´4r`ü(Á_á5BÅPvÙHŠç¸|V…±¬uk‰v%3-ÄkÜ Ö’Á]·oO~ºrÁ_JCª £À¯¿Öò 'pjíD?LãHH9i\ª4á-Õ¸1¹{2ùsó!ð;ø. Âè8S££³ ÿÉ‹š"6’(æLy©Ñoü >žž¾‘‘!xËÑ9rÂw¦‘##ÏŸ×8“ºpüøí!C¢Ñ™Î³¦“þ6|²ÎÄ$®`ï¦çy`ê3Ip&Qj>£t¦ôt¢\œI°R3‹Lg⯒ñâÔ¢mL}&ÓÔ?ùùeܹ»›3½T¢3‰¢Rgºßhò™3¤+2ÒvÓÂ3оv}¦Oß™0"`¢Îå›ÿ;hìKQQ‘”|&¤ŠÇÂØM°‰_‰è÷ß“ìåR@>7U1wï’*¼&&&7o’MþkKTô…¾Ç©§SÐqÝÜ訪©tÇ£7‰”@‰h­…µüë…O&Žc©ôHÒ`àMAC(æL9/lÎnßV͆KÏQ¼8q¦#"ÍÌþvɳڲ~½ëСèL1††·è¤¿ Ÿ¸3ø3ßÍ ÖŽŠXS\¼à*N[µ*’§Až>@íÆ¸YøÎtìi™ïL*ˆ ÃÌTg‚l'>3ûÃvؘÐ(#ÃoÃ386MØ™Dw!ĉbœ OÔ¡C––UõçL p ¹ëLîîТQ ]áâLxñ˜ÕÛ™pÚ Aäƒ8锕‘fGñäI÷"39t÷à‡l Õ¡ ýu­ö%”‚~POܼyóäIø™Oái;h'W›L¢ŒMÚ|’^ÖaÃjâT.÷ö$ðßoá[Á,±fÍÈ«0>| ±*æLù<^^ ¹9÷/œñʪS}¦áã4Τ&XX\™0!täÈHt¦Ã‡èÔ¿ Ÿ3U½¼_VvŠé—¬`@XIÉ$p9o’NQEá;Ó¢EÄQêÏ™ðåžÿµ]Å ^ÞJ~ÔòÙ#g¸ßÈÒx©»û®ÿ~]–ãŽñ'Þ§OiƒLg²³#‰6ëLûö‘Ú­,ë×[Zps&”t#9 wìæ6#6vÆ©S¡¸Éؘ*ëFŒ®!èLøc·Öª CøÔœ 9tˆžZ)¤¤ì(þ/…KþATM);a'?ë¢sgrú•‹š¤ÊÈ7ñ^AáfÁ_­@›L¢ ÄAÃ’ÈÈ ×‹Ÿ¥Ø9©„ʹ0w¬ã·Õ4dmœ_1Ô$“ {$Š9/-9!–OTÔYcƒ9¿›Ã{ÕÊÊêòåˬ3 }îœ Mµ4¨¼#FDâE4(VW׉NýÛð8¸ß0bûr@Oú¯Þoc½®”¾wÇÔ•]ª%%¤§6TŸ;0]­•)"Ö™V¬ ® ˜3áÁWT]°€9¼¸ O.ÁýSfÇÖ¦¦Ì)--7Ž™sˆ3ݽ ß}Gþ¾yÃN•›°ïÝKöÂÂÝ™æÏ__®Î„GyàT¡ „ áö –âÎ32ÊïœCk`>wÂ³Š¯ª[¶0« €¿÷Âò‰8zõþ#œ_&„—´hQ] *Ü—ñ<ÌhÁ3$%ïJ1¸·y]ßX[ßœ=›|¢Ïâ ®?¹ H– Åþû_-‘bdoÓ†D%Œ 4$'îàÞZò³šð&;|˜ *BÞçX<ËÎp×T>þyÆÆ]¡¢¹š|¦¡C£MM5Τœ8a—/Ê!1[¶<¥S?),,,Ïœ¹adt ЩÜP#gZ»¶0+Kg*zäzïž®µuyn.¦¤O´“ëvéî.}ûv"±¸¸&bDÓK±Îtû6IëâL˜ºúø0³àÅhxà7¬«LÿQYD ³˜jKøsçg5  ®U$̙Ǝe:[|]Ç_ƒXY->¼27WÏÕÕàé˜+6–ä~‰æ3!l]3O#†ùù ,êçLxú¥·=Jت;ePÖúœ†Óì(:çæÍlð3äÊ•›ÑØÖJ¡tL̳Q¼^¿ýVóT˹s¤lŽƒÄÊ *†ÃðCpˆÕׇ%KØàgˆbΤ4øÎ4dH´‰ÉušjiP)»v=><ŠÍü[±ÂNý¤04´íß?nРX ˆ32²¥38 FÎ4sfaa¡BùLîÚÚ˜tn'mCO21äRbÌÆœœvÁäcò sí/[>~$mj‹>>ëÝ™’^@Ütx;ÑÔSÜÆ6ððöëëWz“Ì ¤KáŸ,‰cLjÐ(Ë™òóÉ®&~£µœ)ˆ/ž‡…m+.þWJJ ®Ê08Ó_°#Â:žLÖÌø9¦BEEªu&¼ŒãƉùæ’Kß¾2ú9áñx\ò™Gpü~a{ Ã«¡$3S‘vêsó›:ÐÍ@lMâ€s›ë’)/'%Ãl³µ’=º&B!uéƒïô$EÂ&O\¬êãL1gÏjœI-øë/ï#ˆ39w®7úI¡¯ðàü 8 +W­¬ÏÆ™X=` ‰ áɺŒ„Óñ~˜¬• ÇpøiÔ(Z´T΄ÏÇž=áúÖ˜˜Ùîî³ìÈçSp'%eîÇ¢YPÂô·Îý+èRwäEøÎ„^ÈfùHq¦èhÒ]ߙŋÉ_„ÿ}Q-gBÐ󦡛^½Z•—7©ªJÙ2¶©Î´{7éf;g²³#’„‡ÍÁw&ÄÀ€¤²üªÊB$%AË–$&J€†dQ…Ý ›«Û­›’›µÄßKCªæÂ…›ß|C®g”iÖF¨îܺΘ™‘ΠùQFˆœRè-ø)m]¾%,†âÐÃŒ1Œoh…›hÂ'G±®oÄv&£FÎdl|“¦ZT‡…Ŷ`ަM ¤38cjj£ò–07lpÅÅþü9zz÷é |ò΄ IÀÛ·³³uI®9! Ñ¥ÝTæùHWLñp„I\¥Ó¹3ùš ‘×™ø=ÁÉt&d\W(:cj «'à‘y1u°Ö:8T1uN&cb‚6Ä.+)΄©:["Å™Aƒät&$à N.(x`­«{ˆÉÞ›±á˜$ÒEDA•äL§N9Ý.v&ö„³¨Â™Ð7&×P,h6Ý»KœË‚Û§!\‡ë-¡%ʓӋ±BuID¶ˆê ##‡¯¾"÷D ¶‚VÁ$'X9`Á-Kê¬÷ñcÒødž@ÃWu<'Žàøü”9ÞÞäz)œ‘§&•™±Ñµ.Δ`¶w÷öíL›ÛçÕçE>¿þ2,=ï]ð~}]óÇabë; :“Áßî³v5äô雃Ų¶ÃäÉAææWèºsÛÎÎîêÕ«ºûFÖv¦ôwA‡¶®¼ë“üÒáÒ‹ˆ˜‹z'ÃÄ5{)XŸéøñÛ4ÕÒ :tuó™´´BäÊ4:sæFÿþñþéKÇ9ƒZ³|¹©–'†òˆ‘›7ËQ“]-œÉÓ3zݺŒ©Sq¦›½g‘êJ3Èþ£Õ–͈ßoo ¼>@ 3*!gÒš®gâ׿aÁÞëÀw”á’x`x7 N ¢šØ3ˉìEt¦¯¿¦aÖ™FL©OgbÁQú`èÂö±«àÙ–¿²dɧåLzz€Â-š¢áEnÞ<=騲0ã^Ð+!¥Ó`¼°Ÿ%ëÖ…Ž QUÑÍ¡y©§40v8@n5Ñì¼ÈíÛÃÇtTY\‚K SFnY‹ÊáçS¤.ΔáãþÒáÜ‘ã¯ÛgÊM»sÙä‰ÕQt¦ûÖ&Éé9®—vyDÓ™ÎÎÎ(×,VVVèLC†„ôï¾{·õi ªféRç!CBñаÃÈ‘§N™ÒyX±ÂiР7ƒ‡ž8aF'q`ûö†ýþ»?¯xÀ#Fñ A¡‹=¢ó8€é©*B¶3õí+ìLÉÉ`jJÃS~8Vð ¨Iy¹ÖD²…èèÊY³ð!ÊíM®áœ mŠ`ø¼:¢‚„„DìÚåQR‚ pè'“Öê¶ ( çL,ÙŒ3eüFJèÈÚÅäB‰ð©9Óë×$ AôFL}ûM8VŠ"¶£x)”@IhsãÃÝÖ­¥5û¤rõá_¯Ì›²t)ì­Ò™ËH†¥2 $Ì‹^/77RùL¨ÊQÞ uã|@gºRi…;uw§åc¦šä3‰Í­‹3ÅmÙ´Ža÷É[™yt*’ã¿kÛ¶M+þÚlhçjwÑ/!áÆÑ£Ait® l>&lèL˜pÒTKƒê˜3LJ/8œ¸:U*xHÇŽ§#"?~^ð' ÃÍžýœÎãÀ'àL/ŠI¦O§-4†8&K‡ZA”äÌ¢\;Wº3á£:6Vœ3]§ál>|è_XøëÇZ••ÝH›Ã2Agrq¡a–†v&$?!aRy9±7&%zÉ "Ôřڴ¡a¤¡œ©¼œ“±1‚&p‹‘þeê8c†Ã`ø/]‹ñ)‘bé-M5 cƯۗݚúr‰Þr‚³W/¸t‰Ž²àõÂHƒÐ¥ÆèACŠRU§áô@Ø{ÈGKK:Q^ÊÊÊäëúClt­‹3åçf%…x¸¹¸ø¤gˆIfÂÎ:û§¤½y¡½cû1Ë—b <I[ûMµ4¨ŽiÓÜ…„ãøq®9F»w_Cïa×Z¸SÖΑ#† f÷Õ§O$ŽÒÕž¥!6o¾5sæ :"ÂÁƒ— c·ÉLèĉ¯é<|úÎ$±µf¾3aòõ¶iÖ,Rë99™|ÑÇÉ™æ9Ošä °`ÔÎOI¯´N2øî,Ô¨âúõ[~u.ñ»‚δnù‹ÈáLdm¦"ÓD¼hÌw‡ø+ª;„ïL_}E§°pq&ssFøÎ„Ë;:’pý8‚ñ§ÿZ[â~š4áÔ]FfâL&d~ ßvsì¢êîJoŽ¡Ý…#`D)È-”\¸|Y8c:=¤Šæ‰ýLL^xÀkÍú/Ž  …Àx¨&Î$6ºÖÅ™²®ï[©­½ïÈÞ½«6ïOÌÈhâ ß™úõ{»q£=Mµ4¨Žqã¼ åãèQa‹±ñ™©S©oá_Ô&™™F¦cÇúð÷Õ»wäž=×è¼jÐD`ÍÇ‘#N2¡ãµÑÕ½2`@8³x0#GÒyøœ)4Ṫ×õíL¸‚gŠˆ ]Žpq¦  øæu¦aÃHè°ÍoÞfšå|P½‡µämV.Ö¯_Öÿ Œ¯ 3ñ‘Ǚ悠Ölyù¥ Ï€¸/ÊøÎdaA§°(ìLx™Ø˜PoΔ­Z‘.mXpñ Hq(—dNlƒ72Ù ;¿Ù~qùr:ªÔ¤}&Ôû.=Ê¿tüëÔ¡·©`,hÑ‚f>"xú·o'Ý›ˆ^纴Ï$ÈA8øÕ¡ãl³n €=™‘°aÈÍÍ®uq¦¤Ë‡.$çÎ眬/‡ÉÙw ‹ 3­Yã@S- ªC°&(‡_¤ó¤‚fƒžÄ_±OŸH«t“Ÿ¤­mklLGYÖ­»3`@M†Pÿþo×®­кú÷߿ߜŽW³xñC\ñСKt¼6lí(þfqÀ_Açqàp&±Èv¦´gÏÖa*}振"΄Lœ(Æ™ ¹œièPÒò¤ âÙT*%-FâÆ+bb²ãâ0Œþ$gMct¦¥Uäh9:Ó¨QÄ”ãL˜DUŽ_‰W™&ÂÿüùSN¡¶ÕØ™}ûÈÇäìGì¯_“>YŸ?gfÔñÍÅíÇË-[êÀÇܰ“ú‡tNÆä‹) ÄKÔê·â®^++8Ö/TRÛŒý‚ÓÏÔpâ+o} ±ßÜ\Õ«×'y½dRgŠÙ½xêô%KWÌ™£5sÆò+¶êœM¤³¸"X6·l™Mµ4¨ÁöºìßoAçIeÅŠû‚$X`”ÃQlÁ ÎÂØ˜›[9bDÙÀ`eÍ›WéêV}ü(qÜ)«b8Š7WQQFfœ"e/‚«àhч¢?ŸŸÿþ§ÒÅ$FqYÿJßKrr²ØUÊÊÊcc«¼¼0²%qy¶z »Œè*Æ)l!ŽŠ®òú޵7ïCú›»n¤¹Oœˆsñ„³SgºPˆéé­[PPpÆÙ™³3Ašˆd;¶töü†u&>7\òòBP,„;~‘ÎÞ½Âδ`©Ì\¿ÎôÁß·¿tÖ¬bccÉ΄Ò!Å™:WïQgb»¨« >ôi$cxñâÅ¡C‡Œ™ìß .\ºtÉŠáÊ•+ׯ_·°°°±±a§à¨©©é¤ëÆk×®átCÃk#GFýüsÙìÙ¯ÌÍmØUpœuõêUvÜ‚à*8Š³ð¯µµ5NáïÿòW¹|ù2WÁ-à_}Û~S¤ÝÝ‹à*ì2B«œ;wNÊ^p—Ý˵kÖë×{þôSU³fЮ]ѱcNußËá]ÛNX\¹tîàNýì^p®a5söû×7ïÏXšKÙ ^•²\ÆÌÌ ÀƒaGñ/®ŽSp1v™“'-ÿýmëÖe3gú˜šÖìEp<ù‚«ˆîåâÅ‹ì*¸®Ø½à(‹ô n}Ù­v¦0LêØDKƒª8q¬OagÚ²EXYDÑ×·8°Výú½=~ÜìСKüÆ |³xñC\þèÑ ýû /_³Xp×ýúE,_~ŸŽWÃÖšÂ8#¶Ü72hÝ#; 3‰ðIâ3u¦HcÖ™6m’Ç™i×®ÔÁYEÎp"+‹äË0Î$_·éË–1ݺñéñcÒœ398€+SM[9δ÷Ì™²ôôW×jëLü²¹ôôôà+5Æ4|Û¦Kד’ ¦+4$ŒÉtDxT!âbŠ‹¯jÚòæ(Ó*¨’¹ÄÞ^Æ·ŽlMùÚ„…‘l˜3gÈ5Y¾œt"ô9vŒÂKáÞ½{±Žã‹£].¸†¦Ó©ÕCq×;š·ÑÉHTTOúqFØïÓnÞ¼IC’‘y‰1¶°97’À(„—qï*h_¸6ä<;]™{ ’ùU£««+FÔèhRUëÄ ÒšùÚµ¤ƒ~« ¹¹¹oû…‡Ìs‚/‚·C9”÷óÐnÛK8kˆ‹3å8Ÿ=âœJÇòóoœ>\·úL˜š å1hhx¼Ì~øÆÐlÖ¬q¤³%³uëM¼‚‚+â€Î´zõÝñã½ Eg×.ë ³Þ#2„ ¢-_î„ËOŸ^+be3à ۲Eø[KT.Ñì+t&î­}¦Î„àä/—?^½ZúÐÚšN•ƒÞ½KýB‰3;~þÝw¤k[!”ìLH\qñªððÎ+q[8µÉÉÀÉ™ð‡±mÿ)Á™Ülž>eëµÏRgÊÌÌÄ€tgòìëF2—‘éLx„ÿéˆЮCiS·éÙÍåHüýýiH¢ÎTVcÆÀÒ¥t4-­¤C‡bÁöäE‘¹—`ò1a¾ƒéÙ‹–EÛ®zOþyf{×®¤µ{)ddd°eCR+š‚øŠÞ¡"È´™ÄÄDŒ!tD87&†Ü•x·ï\òÕ³©É üëd^>.ÎQ^^…1}î\ZŸÏ'8tˆ™M>Ÿ-Â7:"™çDÈ™ÜÀíŸWV¤H}¦l‡S†nI5­8››úf ´iɾ3a:7y²Mµ4¨+‘²¹0.e¦‹?u&ºwÊò<8dèÐà¾}k™@cüm #ƈµ¾zã‹Κ6í%ZÍÉ“ç𘷉CŸ>‘Ü¿Êü| ™qð`ù¦Mpœ81À….0]ÌÊ~w‡½{ш3!¸—†v&|é/½wo@“@$põ>âL6þHÈ™ð‰?ëéÓ Ù΄ µØËڰ΄q^®:à #Ó™$QX½ûT}{cÃØS%âu¦W¯àçŸIñ)wïÂ?Ên¨S1*¡òø£íç#Ô¥s.Y‰Á[¿g¯ªolÖn‚Mò^/.΄øù‘ï7?·Å·”¦M%ö¯§‚΄¿b:Loµ÷Ú¢E ÕO÷±_¼vë•«Ž÷ÍîÚrèœ`›–Üp¦Ð ¼hª¥AElÛv³wï(AÛà˜ÿ7nœ·±ƒh–ƒ‡JÈd A—Ò×·¤=}zØ0²ð€ᆆ5"µc‡ _ìpyƒZÍ”:t©_¿·ü ²ó…3]BŸ¯31ý¸ÁþýøÇÂ×w0¾DoÀD™‹ u… HC9ÎÔ¾½pæ ‘ÙäæVܼ©/¦ö‘œÎäæF”¢œ y[T4=.n¢ŽŽ­4g’ÄgêL~~~Š9^™#àwCçöÐ>ú•U”'OžÐP5I–.­Uo¾¨ˆ´lt^Lù’ðÏТ÷¸ì3^ÐIªæFl%ϪQ£@ëÔ‹–Ð2—|Ã!áááÒKY´µaΜZÝøàõ4¨VW“uÄËË‹;@À÷ðý¨?³Vô»¹ˆ÷+WΞ61¹åø0:UÁd†ïL˜4ŽãKS- *bÍG¡ 4¡ñãe¸¬‘i@p-…ÜûæÍ´¸íÔ)S¶rn\°­Ë•+ïñ­—ߺõ&Á £c%ôp<øÍܹÏè²PgrvΘ1CÙùL쬇Û'NŒgZYÔ0>~!À)f®4”ãLŠÂÔgò˜ãኰ Î…lgrq!_ÊåLøV+Í™#Fd$'{ã®NÉ>µµùL©.Ì ›·•uƒî—È J&/¾ý–ÄPAð†;|þøCLkhu¤*—À’¥°¬mûÊåËÉ›ÌçÇòå°qSå`lt’òÀG >u¼¼è(Ò’‰Ò¯WT¬€Á_=ûàk›âm (¾3á WÃêƒE‹‰l ‰räÈEQMQlÀ½ó›Ð×·dó“p㺺5Í Ìšõ\0ûJ¨_mm[¡æØ_æè²PgŠŽÎ˜9SÙΔ°U`Âþýñ: "츥¥•ŠÉ²ø†ªk#‡3!ø’nm­DgzÿžÔW°° -kË•/Û™ðµQ#ùœéÃYÎd{àöm ÓÙ³åÌ\‘éLB|"ΤX›–,ººD›¬«lºA7Qü:‘Á¶VTÍíÛ¤Ñb¸wï qcÚ²‘‰ƒ¸&Ð$ 0ºeKÀ·>:UÕ(·¾ãÇIîííªÛ¡³\YM2#áÝ»äGôzef’gLR]ûÍ£ðÛ´L€„ïà;¿òÀ~9SRRRPP‡‡:ÓàÁÁ8 ```xJƒê˜9óÙ AäZC†g*.† ÀÛ›ÔtFêìLÈÚµ${Ÿ˜rõš.Ÿ38@þÖÕ™qC±±$10ž=[ÎÂ9ÅœiÎ’7¢ÆÎ„@Còƒ‘hèPÈ«Ìoíìˆâ× ü½4Ää'-^ŒîBG…5Šä™*‘r(_ çÁ<·—ñ-[–éè(ð9F½€ORŽŽÐ£|¨úø+üz ˜ûŽøÄ“þ¬Ãº|¹Äþ §M#¹ƒJ®•P¹V΂Y™U-Z@D„Šœ ïÒÄÄD¼i}}û÷÷ÇaÐ ŸŽÒ "<%“FùG[Óc{÷î´xYYEbuóæHg qî©J¥Äâžhˆþ~ô·?|Ÿ½}—IüGˆ§ bìÒݱW'ð¸~",ŒdÑal²«ŽÐ1Ÿs›j±¯ï»ì*å|£É´k/$T³° n-w B!*+R_ÙiïÜù04/b[Ckp 'U1U]6Çw¦}1E¤ —†MeìXW¾dðTº8¦O§r£”aÀ?T4ô›ñ㟱Spã3gÞe÷¥§wã aðð¦Nufç"¸–؃2Ä‹£‘«‘3edÔ›3JJ@O´Ø4`@ÓE 2êí[èh Ô3Õ¹‹:9S«Vt\YÎtä" ¼*“fΞ"PÝé—L>SgJ ÷¶´½uÌà¾)Zf&üóŸÄ]Ò íøå6éˆPQ*ËBßä]9z® ŒD ´1ŒÛbñ÷')¥¸dlã*¡òὈÎ+ ¬n=ÇP¥ç§V¿¾{í‰Ò>âËÊ‚/¿$ \eA^/[¨îN@*ù‘ng,®5z$¥¿b|Øüðy|‰] oô:3ç¦ZÜz›šZQY¥:#`D”yxÎij³ÕÈ™üöí;F. ÎþýG~ÿý%_2øC¯^Á»wÒ…Ä1b„‡©OŸ “hÏC‡¾f§àÆÑ„Ø}¡½õéC# @âÇœ!C¼Å ª˜Æ™„` ÓÖôt-t€gS[§¤ 4íc—B¼3­[×ÀΔž~˜{Ë–bœÉÛ›ô𯇋3>M¿lf‰+ÄcfÏfÃÓØÿdóúµÓ‚[Ÿ3•f9Úß¼ëh¤·ÕÚòÜÚG£räþ‚µiSÒC0‚ÉØ0¦@£¥yÉv¶7ž‘FƒÒÞ<³~U°qcM3?¢|üHNêPa ¡´z$“ä–íÛÞ½«.Ÿ¿rý¶—Ü¿Dù||yÝ<0IiùLùùк5ªŽÃñ^ÐKfŸzeÒêìµ±4Y»åTbD¯Þ¹“ÄtIÊ bÀ"ŸEÊGÖ»ÇZš?âàú´xFž¤´±_?Œ‡jãLlM¸448ûöÕhŠàлw°`á—îÙ3Th•º ¨h;wcLÀ;hð`ovw»v÷êÂ_˜ð·o?ÃLâ¦wï Ž¹˜gÂWvÔ†9s //&+Ëà”™Ù»œœ¿òòº’B|q¸»m„YЙ^¿nHgZ¾üÀ‘©SËð0UÚe#Æ™< @>èL]ºÔJ6E)&î0Ÿ8ÉçL·}|ngg[’–9ãô¯Y :þ–ýûÕ+Ÿ©ªª‚ÄáÊÌŒŒ²ü¸“†÷>HÌâ(.&oùlSí9ÓZ>àžoǧªŠ¹›Ê_=»e}ãey%)­0€ÀIañbòe»R8 ‡GÀˆR¦üäÉŒ±SÀÜÂêÖs’µ«JÊ ]­=B”¨n ûö%­ë#ÙÝÚÝ™µÝI<ÉN 9nô°D¡ ÂgÏÒQ±lÚD*<Õ…Üdk—à¬Ô7³lG!lAðùóä#J¼AèýSÊœ “F]Ý4áÒÐà ¦{±ÉæÍft!vî<ݽû¡Uê2àîÖ¬1GKT1 ³µ‘6l¸Èw)þЧOдiN8WW÷¤¤ƒéÙ3„c.æ§êL[¶Ûî-ggB$él@¾F/èôüùÁÇ+ýüD:B©†/fŠ8:‡fW¤R~ôhо}ûñ%¶úW®cÿ“'gª8ª4gBRž>MINΤcÜÏ™rsIž!ëLüüCT^6‡»€éVÖ/ˆ}ÆŽ…Ë—I¸ ªöÂÞ?à2âÍrSYRxvߦ{t^ ‰¬øö[ˆˆ ³Ä‚1¥C%TiBuø¾wwvtÍøc°û¡£Ç’Ki³J‰|H ÐÞ¬­½u›¡½7TgðRãMjhHÂx½öÃ~”.׫¬ ÞêÆ+IËá׺5)0•£GðÛo$cRaª*KÜ®ŸÝ°{ë7¾} Ù‰;w’w65r&¦ÞÌIšpihpPXÅ–j¡‘¬_‰.$ŠW{ôP²3Ík¿lÙ5AgêÞ=ŒK–؈æ3áÀfRnÝj‚K ÍbÜÚž=ÒJù|ªÎ„Iݱcä­YgÊŠšâë;%88ñÉ“µ©“3)í/NžÔX«¥…ÉÌGô<<ŒX:_ªv&ÈÉqËÍÅãD§áj Ä™ú2„Èt&_®ÕÞ™02ÓüTTü¶Ù $Ò›BÓy²îá÷FâìLŠr¤ÿh4ª6mj59­&`2ñk¯£š›sê ®a(»@yà)]²„”{²ð€× š½Ùeœ¥<ë^¼ ö%U>c‰Ž&UÐÞ¼¡£ sºüt_èË¿^³gT™3½}ûÖÙÙùöíÛ|gÂÄrï^iu5Ô+::x ø’ÁЙV¯¶  ‰0mšsß¾J«Ì„ªó˜1Ï'Mz„ûåODÒÖ6ÅÝMêÜ»wÍtþ€7o6Ãã”$p={†°[ɧêL,˜Rru¦L€cl>ÀOW¯®Æ÷(€8Lš$±Ÿ&ñΔšJ³¸DQ¦3¡¦ãL®û¦Û·—ð?[«Î‘€ªÉà6sYÊ™Šbœ¤„8Ó;þlœ‰ÇãqŠÆؽæÍ«©È²vL…©Še5áOfkÖÀªUlP"ä‹OÁø¢¥Pú üb5cºîî®FÎ$³ƒ6yÙ»—x?Bí‡ýãa|‰¬×|èI‰„»v‰Úµ(.&ù‚ìͪ0ÅPÜ º™CM˱}ûÂýûªs&¼y¸¸8Ag’^×XC½²g!Š_2øJÌÒ¥Öt¡Ú8pýFhùºú Õ¬BZ¶ìîqäHñõÍñ §O¿?ož i ={†®]kζtþ6Îôàƒ”•¡ˆ<›2ßÿ*˜Æµa’Ä¢9 Î$e:S 0Ï/æqú‚ieÊ_(™zÛ‘(2d ¨Ú™ð ëèíaœI ¦y-® 6+:û_÷I‹Š,Ÿ‹3ÕSS’7Ã/#c?Ú p ´”È-‡/º0æcj­0UPeF½ ßðp×ÿúWÕÓ§oÍÍÚsÿ¼¸t Fެ¹^‰Ø šù‚„‹'™=Aµ»L‹…ùfJa² ë7øÍ‚4?AÁôÔôÑÆÆ†NR5 ìG‰ÊãÉòeÿz!»`×X+=k0//wt¤6))¤TRKZ‚ØÛ“*M ǵÈé ]fäGW¾úŠô±£^ÎÄ~ý¤A%¬_I’3ñ›G‚)Ο¯S—¡K—·Ýº… Mœ0á©®î ¡‰‚CÏž¡bËÙ­kÆŒ{ô¸¥òi;&®˜ªp%’éc®&.3™¼šqr&|ný÷¿4,…ˆÒ¨Ž’‰ÇIIøº{ÎÇg3ÉG— q¦ÂBÒ¢3Kƒ×gb^€Ïû_˜3¿Àà2ÀLU33ÙG<-gü,IRZÈ??Ò˜aÀçðáÞZ¿‚Wtœ3쑸»gÂäP&xñ¿ü’D"Å8g:A§bˆúú5)?Âߢ>esxõiHIDF’ºG‚=œDCôÏð³)­–ˆ”øê1!¼SdG:P¸U-´ÛöÐ>¿¢¦ÎòÎ…¿E½œiÛ6špihp–/·’äLZZéB‡íØq†_™zóæsbW©ãЭ[˜hUîÑ£Ýví2–bEýúüúk¬ÐDþзoM#OÒù;9+’M² µw&ãL¤e(.EÄ™~©¥¨3••‘¯Ag¢Í*TS'gº¯ñ÷ï›:;ãI¶e>÷c“ o€.19hÔˆM]ª©_BMKzýô ÷R—|&ôÆ&MÈ7‚|* bÌû˜¦äLj’±1×lÙ¼<øåÚÒ¼°™LÖP«HéömèߟäÁ¨3å žYe€¿ï~˜7ï–$g5Ê]æÀ#C†x à»aÃE]¸Ð¶>œIì€ûݼÙLŠ3ÉFŽ|Éþ é|Ú΄oâøP©ÕÎt`9“ºÇ±ãˆú8š‡›ÛòW¯tfÌýr,Û™DñôþX¹NÎDb„ÇwïVTœ˜ °oË|þ.a ÇTeù²eÅÅF(ì ¬ÿÔ ³Ù§àLEEEuq&<´¯¾ªÉ}c‰˜&ÐěاàÏÇ¿xROb'È ´”ÔÍ;(½Sf \€ Ý¡»Pç!gÏÂøñ¤6žú8Sž Ý(‰Ÿ~"94‚ÄC|3hæ.t\Œ¥’"áüù ¯OÃÒÁ‹wï^:*×àZè’ ¹xSÐIL:£G“w«zq¦ÌØ sv/“Þ»þê¾¹£w ñ^ãÈ\:W!g’Ò†úFÒ'iýú èË.³u« [Ó—œ3çöÈ‘îhT‚ ×ßзoÀêÕ’ªxsø=ÙIçÓv&d÷nPÆ™6áû3†¯L€ 6Îäà»`—&'/¬0!EœI”:9Ð  £§g¡»»@7“­UU­½¼2ض’¯\Yúþ}ÍÇÞŸ¥3Õ}ã]»ÂÓ§4ÌRkaí$˜$³™iAðHPƒ¾ûN8{Q xc͘A¼M.ò ¯´p„Z‘ oå]»`©=¨FÎTÇ’S±àœ]íþ”+¡rl c%]/I:<ó­Z‡´b½Z8@eò^¯÷ð¾´»N>Ȩ]ñzÍK.\½8/1Úíª­«“iBzÖÓó{_ÅÐVÕ˜››£3õîíC÷îþ«VïÑ "Fzܳ§/{-„†nÝØe´´îôèáÇNÄ…;u á/SßC·n³g[I:B.Cÿþ;wê±?D Ÿ¼3ÕÆ™Hs’B!¦ã^ŠÚ8Ó €P”¤°ðzI‰7S=œ­–R°ƒtSQýP¦ÎÄÏ @g²±!å‚ïL«VÕ| $‘¿Lôõ]ÂTß©«{Õ×7âÍ<øÃ-[¦Öüv&”¼-hX,Ÿ‚3áŽêÑMMi˜O*¤6…¦þ µ¡ÃÚ$''GF’4˜{Çd¨ÊhlxvåÂLÀL‰é8žãùóI¢Ž¨3aL !å±p¡˜^³!»94g;ERð¤$â¸Ìǧœps#µßä½SÍÁ¼7ô. }l¦ltÅÃAÁݾ,P_ÎàtÎâ^Rvþ“›"ÓÒîï÷M¤³aó™zõò¡{w¿åËviP¸±BtèÜ9xÇŽ=[·êá5šÕ`C×®þ¿ÿîÜ£‡¯ÐtîCïÞ¯ñ'Ð_+4;U„z8¦è ¾ùæcxxÓûEmœ)ƒ)êb™Ð@›i®©œ™Î63³©ÕN ÎÄméWt9á;Suïq `ja±70°×ãÇ:K–TEEÙmØ` []Ÿ‰"ìLþþ¤.0iš:•ð¿?íM¥6*w¦º£­MäP”]°k2Lfû$ሓôî-GµîÌLø÷¿å«þ>¶†ÖB™LHy9ù ý`N}œ©>@{_¼˜†ùTA•>èƒq2ÛjäÉèÞ]Žó_TDªíggÓQ.”AYGèx®ÐñjJKaÜ8ÚÁN½8SFŒ÷†eÛ­nÝrtñ‰ð°?zîâÁc¶b+4Õv&ߥKOÓ„KCòsçž~ý<øz!4tî´e˾… Mñ Íj°¡kצ=|„¦sp]üôKFãLéé¤aäòå­¹¹zÌ4Š:ÕgÊcêZu}ôhR4é­ë"Àk&KL«º>7&EjèLÈ-€%“'³­ ,9{–¤ˆ gBΟ§I°‹ i[¥B¨Ü™òòòêMMIê%Ê;x× šy×çÞ\'NÉ”ëpÚ·'õÜ8‚fp€¢&‡i0F@só7¾¾¾—Ø›M HåžçÆ 1‚ä« ‘ ©’š/(( aÂòFÀ¼²èÄÎÎtT&x½ Á°;tç7…““ÃF×ÈMÊfL׋3ñòò2²²spÙ¹<:¯6Bδh‘ M¸44,Û¶éôíëÉ× ¡¡S§  ö¤gOo¡Y 6tïî÷óϱu9Œ`7¤?X2gâ;S›6ààð_pÒŒƒ«ÛßCg9’†¥PÎIJÎÏoÓ´iY/naš> °æýû¦8@Ù΄çSL©gJ¯.âY2e ­g%Û™¸ƒÎ$¸­jTîLÅÅ2Z…ÉÝ»$![@¶ö …¡I:²)**š1ƒkp>óçáC4,“dHn -ï‰kmõãG’e•‘Q^VVvý:©:£` !åñàùWì†OÁ©~Я„;lÁ'žè³',\ȵ8 ®²jìØAGe‚×Ú°5™Xð~aðý÷lE…z+›ãˆ3ÍŸž&\mm}¾[ˆ:…à¥éÒ…^)• hKíÚE M”kèÖÍýúÃôK௿.¦¥åÐØ©"TîLÙÙ·nEߺÑÑRSÑÎ’&K iýú#²:“›³¸TêÝ™P•ðy<+-Í//¯]UÕ[€y))[¢£'è ×g⣘3!))¤£Î:é ‚Œòh€»v¥Õ—3‰«Ç¡rgÂíÓ¢xxfsrè¨ è(í 0=éËìÏ?ƒ刱1¹X\ÎP%T®5ãa¼ØšÎ˜ú6iBJèõ)›ÃsBCÊÃ×:vߢRd´…¶·È+D-Ä>ëðœwïNŠçäâÜ9’+É%ÒáõÚÛ‡Á0Áö6ÑhÙ@ZyŒ±§Gœ©Gß¹s/Ñ´KCòyó~)ån:ìZ—r1uºuó[½ú$û{wìØ³m›æ³l™ñï¿;edüÍ뀿åñæ?}êhnnVXøìС³••[++{Ü>t(nút|l0‰ÔÅ™â™ò¸oöœ8Æ<Ô´¦N%ß æá+Í™ð8:‚wÝû~ç©ãkdTõÇ•l2ü?ÿS«µÆÏÒ™²³³ëß¾%í$Ij°úœø ~l:Raa™_-_å$„Í5á²VD´„–’ª9?zDª“³QT}œ)Q‘¯Aeðî´n-ñzƒsí¡}!Ô:¡<wt¤šHå$yrq!¦%x[I"¢[A«gÕ­ð³à}ÁFW4u4l6檗3ÍžmA“/ ˆ ‡¥ÔïîÒ%ð×_Ã…&~rþÀŋϲ¿wêT›=¼7mª)ªC…êÝûµ–Ö­¿}ÙÜäê²¹Ù›ŒŒÌtuaãÆ³ 'NŒ»zõ6>ðÉRêâL,YGOœÀÁ€NW®ìÝë]/Τdž‡…ºqc–V{„5ÕÅ>Sgª;YYäc7I]ÖçBngèlÄf…JÅÙ™¤¦òf¬DE‘´SfµŸJ¨œCÊqç`€NªÍéÓ¤q&öLÞuÀ‹ŠàÛo!<œŽ ‘y= ‡ÀW&’pw'®,.RK#9™tPÃ¥ëá•°r L‘Ô©‹¹9©•¥bg ¾qãÆÕ«WËæf̰¢)Øß˜­[õ&L¸ýçŸæt\×fÌ0X¹’Ž(Êš5Ç¥8S>ݺù Müä†nÝüæÌ¹Œ?våÊSîÙÓ%‰Õ¦;öŒõ'Nš¤q¦ÉUUþþÌÖVUEVVþØ `’»ûì?ÿ¬.̈‹“˜p ‚ÇÆkƒ¶h„Á;‚ LšDšï`Q/gš4É–¦á¶lÙ‡ 6;Ìšu•MÈño×®›6  ‰°sçîÙ³¯ ð²g7ïKß/³ë5e÷ÎtWvoß¾—™ª<Ÿ½3¡‰Ží4nœƒ`Å,<Ûƒ»véÈžv31LxHú?%e^CžnÜHÊ2xQjêôFÈ$¥9S\})®ÊI)©òòå¤"¾¼Áû{ø^4Û€OAé;ÌÞžŽÊšÖ‚š†ñÅ` –¿Â¯yäú2d…^rôunsãi;¡¨ ¨Ñ>õq&Œ4¤T¶n…µkiX,ÁÜš„‘†ò …žu……з/\½JGå…Izûù7áfkh bÚqÂûÿ–”žùíx¨—3‡¦á6l8Ô§'&Øì€žÄž ºuóŸ?ߌ.'¢E&¸<.Ö¿§ÇÝo'Ù·ž¶g«|δr婾}=wìØÃŽ.X`†JÁßûg9 áI“®†gbÀGç>æ»3}F›àSq¦?ÿŒ´¶>ÐÀ“IØ’Ù9…I8 p(55]ÉÎ$QgzýúuLLÌÛ·o1½Äˆ÷í«£Æ:Œ¦8Šsrrp#!3™O¡P¶0…Cb»*㯂[Z¥¬¬ WÁâ_¹Váï§°«ìÝË›4©¢  @Ê*3sgŽ+WPRÀß .É_%$$£IÈ»‡÷šÐ*ü½Ü½[Õ©¤¦’UpE\]pLzÛWµ7zoTQY!x`™Ñ®—o“¶ˆp•´´²6m>?øœáܹs’~ ’ؽà’x&…VÁS*×*ÙÙÙB«$''ãÕÇÅW)** $¸ ž%Á½È\åâEÒ,‰ôU´«´ÇÀ˜øŒx\%ÜKJJUóæ•/^ÐUð/þ.±†Á½à‰}ø\¯¢"ñ«¤—¦w‚NF`”‘™±ÀUø{Á#Á)YY]»’ »qö€QeðÑ£ï³I¸ óæ]˜0á¶¶¶>ÿ\ؼy¯^¯ù©µÐ€ <þjº¨C‡>e›ÐÅѹéx‡¦Sw¯ÛMçqã?îuëæ·~ývtöl‹ÏÞ™pèØ1DhŠÐ q¦j*™6µinùž=¤ãÉÐê<9¶¶¶ ×0 òô´-(8Ï|Ò¯ÎÎDHM% ïL‚ùLlLÃ$iBñMh¢ôQé˲H_† 89‘*2ÕÓÄ/“P•ð3ül ¶‚ù¼~]õí··À"vÿ‘–-ŬRVU¶VކÑl1SŠ÷í£GºG¾Ï‹¼jj›ULWIH U²Þ¾­ÂSܸqƒY›Àß‹ØQ±£JY…? #ì(¢Ð(‹¤U\]IKoeeÒVIƒ´6ÐæZÕ5Á‰ü-Ã×_›G)v ¢«°£È›7$¶ÄÕô3^³ ^¦°q *áÒ@Áíàõj׎|ôÂŽâ%£÷O5 íL~¾£»=ÄäªGŸ#±I8T¥îÝ}{öôéÙÓkÕ*:õÓG[[¯o_¶ü±Ta"Óúö!ºN5Û·ï>üQõº¯Oÿ´îöwÓî6ÕÚÓaÿ¶m{éB;wîØ±kÓ¦Û·×L`—–Ö-<Ûxb‡ {ÂN;Ö¡{÷O»ù%Á¡oOÏinÍîhƒÃôN¶½{¾Z@Ò ¥e«q&QЙîÝ+KHرg'yÔfÁÕÅrsÙ¢I·kwî@v6¦R¤=;5w¦ôôü¦MQïr.tÇcòÉügêLJÙxt4ùà_f%þða4Œ^ËEëö2Àk¥ÊÜ)/'j ä QxÀë]ÃaZõ»šŠoÃè$Úç£GÄ!ø¨3 ™Š²ˆ%–)ó+ÛðqL˜óË+…Û \¸TŠR |jöé#¦.Tõ‚^: #å[6ºzxg⟕9SLLÌ‹/KgÂø\÷hœžNš–~)¦§2a" âøá!ù ¡†I{’.Ð\X°@L~ö>5U¿%clLgâ£>Δ#¶yõ:“M®×óçtT Ñý#üxõÃUÁHˆ’Š×«.'iýzÒ¸ƒl×r9 í'0™™µr¹TæL,ñññ>~׿ٽ«[—.=z¼`Óudýú#FØŠ&ä]º¼š>ý ]H¬=Ü—ìØÑKÔ9øÌ›wdР{¬1±nݦ ŽgÙ³çó?þ°ž7ï0ŠW7p;¿ÿn×™ÃÀ÷ñ<Е† »Í_}p§vM¦¢3áp½É¬écϱË,[¶—¿´L£1c¬P•عø»:uòb碖͘a„{ötÅóÏ_ë“úv~fóí,ö´à`×dʾ;…–‘4hœI,èLgª>5t&nEuX €Ù¤IÀ§ÞQõv¦)©©`n¾“øgÏ&›šâ¯˜ pzÖ,åø­rg***ª{4.*"_½ÙÒªJÒ¨‚*0鿊JJ" š>{–OÇåçÂ<˜†Y¼Á»)4õ:.•åËk)—ú8[_^锕q•¼^áb[h›5ÍP¦¥‘l*/®/‹wÝ£ ³A^/ð ãÀ›ÿâÅZ¹’@P½3øú=üïèþcšÝ¥‹'›®#K–èò“v¡=`Ö,CºÃêÕÛ0ÕïÚU8ÕGéA¢ U³ví– Ì;uz{ìÝÛEH›fÏ>Õ­Ê„ãxHFMÚ#‚[ž=Û`ÅŠ]t\h?è+ü<Žƒ`VÙÒ¥:¨ŒüYc;Ø96™ÈšC“‰£~»‹N†Ã€„öÂüÒgxJÑ,»w¯1Kœ>r¤-nY(?ï“þlùN-¾3áp¯ñ¸^]ž -&vÐ8“XЙ´´Ê˜^Òð)s@ñô¦¡Ø P±nÛÍÅúeËTvê8°¶²ò}IÉ1<½eeÃÝ»³Î|–Τ”ã}0bÈn;šPåZ õüURÝÀi@)ÚKOW¼*$¾úª¦ ñ\Èí½öÃ~)¥<‚ HÚ•æóÙ—Í!'’F)¹Psaît˜Îï'(ˆ8š®Â„‡“Þýx<:Š×«?ôß;d^/6ºŽGÚmç£ÎäÜxÌÒ¶g0ÅêÐÁwáÂý8,Xp oß'Œµ§jՃǟž¬^xÿÀ÷Å.ܱ£÷œ9'Xá`AÅA¥àgÕ [ àŒ…³P¼†·gf‰ÙNŸ9SP›6N™r kîÜct£M¸‹•+w`€NbX³fë¤Içå&<þÅ‹õØ- r{Ep ‹Û™8TËZ´Ÿ­ñH¦N5»}ÐÒdìtÁ‚ƒì¦PÅøâ…qã® xÍšujР{]»zâv º?s¦ŠÎâÅú£FÝìÑã9yîC§N^ãÇ[²{?Þ\èðý´•Ÿ¡r§É¤­­ê =ǨcGᬻß~ó›3縤,½On˜ò«µCuÞ›àp²ùún]_ -,:hœI,ááKÏž=ÉdÞ|BÄ¡-9sC––ÇØÁ?YâŸe}&e?v,ÉpâÈ-¸õ#üè¤çŸíÛIéX]((€^½à:‰Yp.4ƒfüöe‚¾…éw@ ß¿ÿÞ½{¦¦¦ÌœÏ™+WHîwîÂ]¼^¯à†‚Ù³ÙÉ òþ}M“˜Ö`ÝšA3G6¹¹Ð²%ùôZ8&iÖßÎîÕÅU(c‡?Û_>öã¦íÌúu~"4‹Ë€ÁVŽ^³F{À'±ÙQ8ÕAlö’ÐЭÛË%Kô,8$$jèCŒ½ù NÄep 2ULÊл·ËÒ¥º8 å¡\ÿv&?C½Óü»ù¿ü ¸ —=¯cG)Þ){˜úë5ãf«V´1ÒÉYhÇaP§§›¯Z÷ó‰áïu™Ë}À¨"”ÉÄx~¸ÏiœIsªfÎÄÀ[gvÒ§¾¾gNžLBË–¡…TgÍ«=¬-}–Δ››«”hìêJrk¸o©*¶ÃöNÐ)Ò "Ix:—Ž[%PQAš–Þ¹<À… x:ƒ¡¡¤6Õ»wtQŸ|&|òвñóƒÆ¹^¯‚‚‚òÊrÐií!qÂi]¯p÷;m¹^¾à÷ü`vt†,rrr""ªÚ·¯Õ¼“Êœ)99ïØW¯^±Ît·É„Á%`8ôéòìN-L›L¼ßxœn‹=+¦ð‡Î=Ñ Ö®Ý2tè.V$s@7ª‹É; r1™@ÂG>¨ÓC‘Z;ãejå¤_¯‹ž@Üþ¯¿Š‘­ž]^M;Løíæí&“ñÝi2É©ñXÃækgýb1°ÓC¡Å¤ èG~Ü‚«Û7™ìÔxŒÙKw´Ú·£%´[œö«UßÎO…V;Œîxç~㱂ç„?àÉù³½9ÉomuÝÅæÖ‡ñd²Ó5Î$B€ þÇtõi9Ós€ÉÉpñ"œ:eÄ}|ÆÎT¬¤ÍRSIóªLÏ\ùçÂÜaEãÿû}Yp0©Ng(ľ}0djv‹ÊV`À±Ë‹СC­Æ¥ÔÇ™0вÁëõõײ›hbÁxˆÏ:¼^ aá òa¿/Cåª#'NÀЉ?W¶=¸_/Œ®îîй3Ê‚¨Ì™0=ˆ b }Z~’ÆÖý|¾É~ʇÉêÉ7ô”S›Ð z÷~*µv”:âMånã ü3ƒú *‘Ðb‚Ã¨ŽŽŽ'ˆÖìiß>ˆŸA…çvdGÇmŒ/~¿èL³U½»¸ð; ïx_(_¯Êœ]Ó)Ç~Ü4î·[\JÄð·¨áº(aì€åÀHóÞ–{ïèð{: awïZë3ɾŸøi®Ëߎà€[8Ûl{0ø£.}¿ðv“Iü½\ø~ÑÀNp–Æ™D(cŠäð= 7FD>!\JK'&$LÔÑù$ê`±”§¤è É6:E'+•;S™2úèEòóISÚ¡¡t”#ù?0|é·móc“JðÇÒ© aû(ÿ#V•­/ù¶ccC:/¼•ÕÇ™ðQCCÊ&7—”HzÈøL‚‘}Ö½‡÷£Þ-ýÏO…±Éu=°î…ÿh“´¸bÿS.`t½}z÷®U›JeÎÄÂ/›ÃTöè›ùé;ôéüL4 ÄDT¯ån¡%¥hK Ô%Róa~»ó˜ê žÊÕmN -&8è·Ø…~p³ét¡bÐÎ=Ùó3¢ã½ó?,F}ql2Ï<Ú®"Ezúu~zíÛÙ‚Ç 8àááF¶·Ú/$7¢ƒQó5’\‡? 9ယȸ¼q³Õ³ÚÏÔéáî–zW¾›+”ñ&: ìüÎñ7 íʤÙò]^hœIvÌðˆŽ}:dgƒ©©º·iY&í+W‚fÍrÂG½rϹÊ);;[)ÑøÃRCåÎ:Ê»G…ÿÛóͪ‚íïRŠÇä$råLúÇ¿Jr?È–ëèÀb4aÔÇ™iHÙ‘úLW®ÐQéðx<|ܱá»Ï þ·ÛۥᷪË`—/§DI„Ä0`LÕØŸÛVú:åò1mšpŒêãLõGy9Ûö:åÎ¥KÐñ÷”NåÝÀ‚Ò֚ܤBê06¬ôÝJ?ã ®¾> ³¨‘3Ým<þ÷l:ŠÃÈŽwE“pþ€iùÖVGut›‡j2á·›‹ÛšŒé`/¨VÃ:Þ_ÔîÜÆÖGÙ·`ßt2¦»˜^â€i*¦¾˜¢Ÿÿa N¼ÍÔÑl¾… ¼¨« îôàfÓ$¬Ån±&7°ó£ ?,Æ ùi‹`u"àÓÚ,„……P8cÑéÜißžT`äïÏ„hküy(tT ‚ùLëÖÁ¶m)è=C`È;/w0‚~ƒßæÂÜÜŠü¹saÿ~:#x_ôêUåà@GYêß™r3ß¾ KÉ¢£µt&‡&ùµt1I>Ýl¦aì,±ƒ}“)è—¾_8¿Ù¨êš.hQ«Ûœºñí œ…i$þEóXØîÜŒ_®œi¶ M “Lœ^=LM­Ñ$©.Œ[ØÒú0:{œì¡^üa»<à½-u„´‰Õ º@“É»[ê°NƒÓ1õošhÝl:åÉæÛ™ü½ã*è+Û¡*á¯Àß‚³P>¬¿…¿‘Í4p\ÌúÛÙ¸ "_žPõî5®ÉËÁ“°¿Å Êâô¡Ó”ÄgSŸ a›(îšL:€‹ d–fÎ9˜ >…§\ê$¡$…³Í¡ù~ØÏ–8˜ ËuSÁÿKúÉäïPŸ 17'-‘r¹^ ùϺh l>ä/†Åí¡ýCxÈåz½‡÷—à^¯Ý°›m:ëàA@Í•+v—””ýç?¤CAêÝ™BŸß8{Ýîð« tB- uD¿Å.L›wµÔ³úîO¡$VÒ€I/ÊSÙÿN¼Ód† “If®Ç ÊÐc®;ãØ›Æt°ïÛù)©‹S«–ºÖš6Ý»ºÑ¡‹Û™f+õcÃÏÇ~ïè`ñý<~F0ûDÝ7ˆ³{\ÅHl;°[Ùþ°lnûKý;?>ÿýb¡-£Þ¡bžh¾·/8]ìÀJ•aóµ“~µéÕåùÞ{•r2É©]]åÙ¾ó5ÎôgLýú&Ÿé ã"kTîLx4Tg?†nÝpƒt” ðï“*nHQQ&¥§àÔ÷ðýl˜ ±’>§ª€ ð#ZBËûpŸ¿˜­-é†L®£¢ ukÈ̤£vvv¶¶¶gÑþÔ|ÚÐP=ðêÉcãbeøÄcŸu¤½õäêÆGQUMÀä;øn&ÌŒ‚()×˼GÂH&{°ç/vû6©}/W„‰‰)þî»ZÍ!õîLnœNKw>³ÏûâááñD€¸˜ƒá‹p85|ÁÅ3Î ™}vèvŠ:FÃæ2Ë`Ðb£aó…f:ï@¿uûû­ÇáØ€†" œ6çôàyà MWú€§ÒdàܳC„O)¶ÉÀ9†ÃM—2à12óÔ E§‡ý%4ë³öM]®rgJNN~þüyXX˜»»{vvvAA¦g>|(..Ƨ‰QQQ4$|âéˆd0ù¤!É„„„Ðd¸l¥‘¾MaúJG$NC‰ }pûvÉŽ,)I`§ ‘———™™IG$€ ðx<:"<ϘÓÉà•¥!ÉÔÓeÅÓN#CÃ;Ffe©ÿ»w€é™\©¼‡iéó%"¿?Ú@œsš@“°àÜÀĘý´ª ƒ È ÌÆÂØ¦ÐtlKƒ4v–À@Ò§‡\ÝÚ>{FzÊ:fõÉgÂHNCõ@~>|ù%©_(ŒŠl$ %_G Yi(„΃y¡ñ\˜k6‘É^¯"( †à‹pq"LĹ›as Ôjn*"‚lM®.õž>-éÔIøzÕ»3=¸n—žùÈT÷u‚O(!lª100 !._¾liiIG8uê `ddDC\¹råâÅ‹tD±»;wµ5©æÚµk&&&tDƒ“'iHÜ—Õ•+×­­É@§Ä›Ø_aaaannNG{ÀøšBC\½zÕÌÌŒŽpRÜŸ? ÀØØ˜†û“ë~põzºFb2î OÀÍÍFSÕi!¾KàAbdø|ÏÍÍÅ4›.!À½{÷hH©©©žžžtD2xöhH2VVV4$¼.4$|¤˪4æââ‚?™ŽHßÑiH2\~Wl,ªU(‘ú"º‘Àëׯ¹7¦‘4$™†¹¬ ïLJÌ+ÅÃüúkár.éœ>MŠóØâAÁ#©„ÊhˆÞûA¿æÐü_ð¯ÿÿï+øª5´ÃŽÂÑ\Èeûñ“ÿÆkµv(ss=Z¸|J}œ©¾s²[¶„à`æÂÅ‹0|¸˜â<¼^q·¶ö‡þ?Âìõú7ü»´ C÷Ãþ,Ƚ^¸ÿþ—˜w,,`äÈšŽYêÝ™ž\³t~r\ÿbœ˜¾0bïð7oÞÄÅU —7nÜ !hH|(࣎ vwìË=©§<{öŒŽ 6ÁÔ“::"€½½= pýúuß2ß¾}KGÀD†xüø1z'©©¯^½¢#ˆ=`///±Ïú»wïÒr]#±ÉÃ;whH¼FAAAtD±»{ùò%j©Ÿûu¿Fê€\ÎäêêJC@;ÁMÑÉÈL¤.Îtÿþ}’Lpp0þ(:"ôÑX-gâò»"##éˆ"""’’’èˆ8:ÓƒhH2ʺ¬êæL¸#%&Ìýûƒ£# ËÖ²e䃼³h¨Le?À‡lÈN…ÔDHL‡tT%éÍùôî v\Û”&ìÞ «VÑ0õq¦úëoŽeÌÚ‰tðÆgª"ÀŠd_Øë•9x½ ! ÒðzIo’à÷ßkõŽ,Üïž=¤ÞºÐÔ»3åg§ùx½~Çé[$±é.>^E%‰§!ðªÓ’œIìîRRRD'œ"6‰Å7T@RzŒ‡ACˆ=|² tD± ‹u&LbQ›èˆb8--Mlú$ödŠ} ËuÄžÔ±éØÝÕýa’#3CUà¯àîL gjH¸8SCÂÑ™us&ån\ô;p)|üÆ‘œ¥ ئM4Ì…iÓÀÄ„†ù¨3ñ¿V«'6l€-[hX ¬Uãõ9’d *t ¡Æ±¤€'cÎ1íYÔ¿3©’œ©žäLõ„Xgª?¤?…•NïNÐ8G4Î$us&%ÖgBNž$ý¾q$?š7‡7oè(ÞP4T¬­¡_?’¸r¤cGpw§a>êãLøÞKCõúâ¸q$ÃO:EEE sr M®M‡sÄÞžd rü:°¬ úôû÷é(Ÿ¿…3¥¦¦FGGÓ‘ú‡ý≎Ô?þþþ ™š>þœ†„Þ:Àw&ŒHjåL*?!ÔíxÔé§¨á “C%:“ƒi œ­Ó-“ÐPR…ï7ho4T¼¼à·ß€co¿ÅÅðÿ<‘®¢ÕÇ™0¶ÐPýàìL,Df5ð?b$‰Š"uÆëÖ+ 0þþäzqì‰øãGøæHiÀëoáL4|Bð)&&F­œIÃgƧ^6çç'‡²œ9Cª³ð…M)åP˜ú¶mK> ã‚·7ih@°B1ÞÝÈU.u|„ú.› #YG2¯I,-‰+—ìlhÑ‚ëõ£ýö[q5Ð5ΤAƒZ‘˜˜èàààåãñömø»ä4•;/7;=;/Ÿ——š’”œ¦ââ'<˜¤ÄÄä4Rá/+=%)%Uµ2ÉËËMINLL!U6s2S“’r®¨\,9¤ranV ^·ü¼œ¤¤Ä´Lá |ŸzðŒ øñGá&%1kìÜIÃÊ ÕLP;t Ù]\03#: jIjjjJJŠú8S}×g¿4Œ‰¡£’`ë€/^,_]1.`ÔëÙ®_§£Ò±²‚îÝ?ˆj¤Æ™êìT‡«gOž4¸ó\̇` ‘óꮵ“W,núù˃Ė3æ¾r¸z×CÆ'Ó5d½»zÖØÐø’“£í­§Ar':Yñ§ Î^‰•ñý“¹‰‹‹;rDGïøEO'ËýFgõ÷_Sµ3yÝ6:u/"5Öã¸ÑùSGOGäªRRüß´¸isôÐñˆ”h³CGÏŸFç©‚X¿‡®\5¡nW—ï9›ðîÍùÓ×’%¤s¡n·OÛÉn^¥š,Û#›OÚæçg\Þ¶ììc?:™%뉑qrzºçm ÷:Q&ioÖ.\þ:,þîé]{Î=QàÅ89Ü{ùµb>ÎÓP'ð øÑÛC‡n]<éu×P×=F•Δíf¼o¯¡SDä‹+}¢ýïš;¾Qå'‡×MõïÝvxà–ÿö¾‘µg´ßã«/®¶¢(ñAOlnܺvùJP¸ß3R“Þœ¿þÎkpÒ“"_‡Ü»ˆÎ”¼ßø^zFôÅ+ön^ˆLK»o¼ß·ö‡° ïL•˜Ï„̘GÒ° ]; £H:Ç"=Y`ºŽ©»LŠ‹IÉà‰tTõq¦Ž5}êÀ²eäã5é`ÌLH¨üõWRš©tîÞ%å¹2ãxy9¹^Û·çˆFW3)Ÿ7/­fL›kq×->-3ÊËaö©„ŒtÃË|£ìÙ¸aõŠ[O^\7kæâÏíöÖÞºíði«äôw†ÛWë?»iÕŠ§M÷îÞ°NÿZM%…œÉ×í–Á’-{víܺý”£×C‹IZÓݰ>¦mpëåsëƒ+uNëïܰvŸÁ>½Í+ÖMÎŒ{í¬»q÷ÎmÛï{…Q=bœÉ+ì:Ó¢u¶oY§{Ù37ÿݾu›Â“"t×®ÐõÒ3­+Õ+~·O?öð²?m}ÿ¹î—ŒäèsÖ²©ª?r³_gJØ{îqVfâËÎ6çÞ¥g=1Óy]»Ù†w¦e÷hvêLœHÃRxýš”â V(þÀ±ê¸,"" I“šîP$‘“C’êÇé¨ êãLEÊ­q-ŽK—H3•ҵ㡷wÕÏ?Ëׯ:Gðzµhñ²zQÊÍ…®]áÖ-1­=iœIùäeg8_;ô×ôsVê½^·xÅ oç¥ó¶?ŸýçÌ}7<Þ&<¼¸kû%÷gƒ?µMÞFDœÝºÔÚ3䨯%çïyÝ7Z¾Óü]²ßêé+üh2)ìL®6‡7¹‘‘±uÅüǯ=æÍÛšj{`í‘ëÏŸ]ÑÙpêAR´Óܙ۳Þ^2ïv`ÐÁ ÞòruXºZ7Š­Ž"àL;Nß ¸·dáþØüܘˆÈìô¨íK—8zD¹XÚpØ66âÙâé[ÞäçÅFD¤¼ ߸dúƒsÂ4ÎTOÄÆ¿»h}ÓÕÍã‰íY §§'v…eªÎ™òr£#¼¯²yêlvãéÍ3§}²TYaç¾YXD´ó僾Q~FGÌŸÚžø6‘ÎS¦Ž¯n›X>ó:«cèùÌÆÂI•PêLyñ¦:¯Ün·uóy`yóÅ+ÓèÚ×­áI‰}ô²<NªËìôíÄ aµR–½¡-uèOžÐQI¼{GZ-›·¥>ÎT,Wçy áîN:œ‘þ}FÂó竆 “¡VŠ‘MÊœè¨$Pªš7‡°01kœ©žÈ{÷ÖwçâÉ6>YŒ¶ëÐÞdp‹—ŸáöäŽî–¥söY±Îl»oúºCN þáÑèLæÃ|žY­k“œ´¶¶3´òÀ-ðIûÔýœ´ØkæÝwsr¦M¦.)ïÎûsO|~ʱ%óìýö®žµÏÄ÷òð©k ÛX¦€3í9÷$:ÈyÉ|=Z‘µ}ùÒ‡>q/nÝrò^|”ÛâL,9AÞÏNÜ2mÝÁÈà×gªâãã -n8F‡:Þ±w ŒUyðœäè€èôüܬW/ž¸z«ì8rRâ>pzDšKð{ñä¹g–J['ÍÉHvyääôÜÉo^=xô$Q¥µäyy‰!!1HyëåüàQ|z~~f⣇Î^á)ì|Þ™0&+·l."‚ºÉ¬þÇ`hHÃ,©©©4T7JKIÍîãÇé¨$="=‡ˆE}œ)IôÃzeƒWª}{§£bÁ˜9cFÅþýtT¹TTB·cÇè¨$<<àûïÑq³5es AÀ]³eÚǯ]¿¸YûhT/.äÁœÉ“®¹¾ÍŠóߦ½ãüý}üœ./ßeêà¶sýN³+V»6ìô’ìLù1¯í6mÜxýÚ¥-[øE§¢3Í_£m~ÑpËîsïòßé,]yËá…µ¾xgºåqýìæ=§.œ=zÈȶÈ.Þ™âw/]ý&1\œ3%í[±Ü+2üè.í³ç ·í7‰ ÕÔgª’5m hh>õ:àHNŽìlžÂBR0W•cXví‚?ÿ”–)RR5wÂóIs訫:àïßg’~½PCñz)·5KA"M¡JW÷£GAK‹†…Ð8S=ÀãegaJ—™K²ÂÃ_.™³à5Ó‰H3#7Ç#]©ga 7'›,™ƒoÊ<œ‹Sòòr²³syù¸‘,D’—“EÖe–ÌGgÚrÒ1 SSf¸bVVNn6ÎÌË#ÿ‘ϳ²²qu\ [f×ÎÊË«Þ$u¦$<\ˆYwši3n—ÌÃy9¸6V.Ç0î(ù­¦l®^P7gJ ~QÍKÿˆ”¸0ß ¡Biðx)ÁAJ9ô¼Ü4Áoä"ý’ùQZƒœ 3ùúúÆÅÅ¡6¡3a+a`ëúàLØ)ø¶]ÈtÊÊÊp:Îe—©¨¨À)WÉÎÎÆ‰ì*?~dWÁ%Å®‚‹ íEt•ÊʪÁƒ+Œ¥­¿þ ‰‰UÅÅÅü½¤¤¤IÙ .ƒK ®‚Å®ââRöóÏUååâW)ÈJv¼eݾcÁîttS¼µùXXXà*8Qú^DLáUØeDW‰Ç)¸˜”UЪq °«°{‘k•ñãI6è*üHåæ–Õ²eyBB¥à^pÁUðw ®"öÀØUpa¡U^¾|ÿÝwŸÿAhœÅ_eôè*ƒªÄÄD&ŽÕìÿâ(½ªÑ8“RI ÓÛ½íè5oå–¼r4=|éY¶™©·~Íö='Ã9õ(Bfô©½;Ö¬×{£Ê¯¼?OÔÍ™²S""t–.ºïŸðÀ|ŸÑ1 Ї÷öÁém'o*El2SÖL[é/pœÏï5ºÿF#MŠÎäïï)ejj*¦ ¦˜`*ˆi†1ñÀQ„Å¿l*‹ÓÙQü‹I"´Šà2‚«à,yW‘¹]ݪ™3¥­bcCzóÅ•÷‚à,\€ã^ØeÄ®‚Ø´)ivHh•W˽{÷^¶²^¶jßÿ›5y©Ú .ƒsñvæsíÚ5™{Á0.€‹q?0Ž« üUPWÁ¿2WÚ‹è*øWhÒY¯”U®_/íÛ·ª¨Hâo]ÿ íEÊ*YY¥-[‚——ÄßRP@*ɽxAZ$Ú þÅUèýSÆ™4hP%êæL )‡W-{—ŠôÆí¶éÕ§Q~ŽÍ¬Í ;wí‚ñýgƒx¼ô[ÃSúû¾xSýñnêùÝ+Ï:Ɔ»ïß§gtù!þ†èNûõôN_¹“ÎËçeD^6Ò×ÛwØÿM"/=þÆ}ýÃ=âòóãÍ·¹`¨«oèÇãeDŸ9¸ï¤é…ÅÄ™Òo]6ÔÛwÈïMb¸«ÍÊ]¦i*­ÏôéÒðesl¶‡rÁ´­Y3iE-Ë—Ãöí4Ì/ ÕL—QΟ§£¢„„À÷ßÛ½ÿ˜ú”Í)¥?™øúÂþ#­Ó·­[aåJ®Ð|&NßîKx8)@ŒŽÿq¥Æ™4hP/ÔÜ™^Û­×µ zvvæâãI >K&þåzQwÅ {÷'{·uM õZµ`K0S:/5vûÊÙ·}3n쟿ñ”åYó‹oÂ<ýµ102åöÁ-'lÝŸXêì»ôÄâÞ«wí4x˜úÆsÃü®1›&Íu ‹±Ú»öÄ—Ï­õ·ž~œpgþÄ•/ŸÌZ°ä’Õ¥kÏ‚2CŸÎY¹5>M•ßñ}º4¼3)·^–Œ ÒÇEDM‹b*Çà ECužig\Ò™³·‡víJß&åÓñÚ¨3a4 ¡ú$-T‡÷ñ¡£¢tîLz¦«Wöí#Uš$usÿ>9ô%¼Gè$4ΤAƒzñ©8Óì–ùù!릭LM¶Ñ]ÎdµoÁ¼ÕÛõõõutöz09MÙÉÑ[–LsÍä¸m˪éK6Þw¸:aêŸ{uõôtuÎÜr»¶oÁù´|×BwÞ9—äüôw{Öεq½iú2Ÿ„ÄÛ‡7¸òôæ¡ÅN1´l./á⩽KÎÝxþa~¤ÛÌ¥›cRrØ-h‹†w&¥ RTC†žIÄJœ)/ŽòQî‘<} :S³H K—Jk+\}œ©>®Ž(?ÂС`dDG…ˆ'ý«ˆseâéI: dª'‰/Öòå$ ö„hœIƒõâÓu&o'ÓõzW<ÜìÕ>ŬÆK×Yû—{£KÎ;8ïݰú¡ïÿoï¼ÚÊÒ>þìJ«Ñjµ?ìêÕHû®VÚÙÕfV“ÌÎj2émRH&L !…CÕ6±MSM'¦cƒiÐ\°q\i¦¸w+³¼‘²ƒüžc;Ä’!3¦„ÜøáœË=—ýçÞû½Ïyžç°Q×î6örʰ±UÏD#´ÜûèŠÁº´èüöaJv؃µúnPü¸Iâ©™øO nÅ·O f*بG¸62á6–¬âµ_ AÍmñ x*›¯™Àòú‹ïÖ-Ç¥Kk›y23a¢§#Ê€;Ë]ò?üàøõ¯ …»êÉÿ xéïwWW³}4 îÒD‰ŸßÚ׋HtìÚµøâÅBÀË—0•Àš‹õ‚áäok+,ƒgïêáúÞšÉjµj5ýú­áV‹ÉbÒ¤:CÇVbV´å×Ðßëm`™h#V»šØŒ¶N›‹øs:»Í\E,TÀ(0÷ö×Ìtg÷ÁÍfUºèÍ•6ƒm©™,bWm‚~C¥L06¥[³áº‡z>‹§³˜§ÇxR¥Ún1ЏL:ƒ)S¾ §´걡„ºa½v–ÅdpE³ó Ńy•,:—Á`+5&Ð\,a0†'g v»A0ÌÕšÍJ±`|rÁnÑóXÌÁ8‡ÅÓÚ-RІ $œ^ÔUŠ&{Æ—"¬ŸagP©p2eµ‹ Ð+§O;’’ÜUO¼þož<éÀ`ÜeO¤R¨™Þ¡Ð¶fÚÐKï‰+©ÓÕþ ÀGdäf¼`’ˆÕÝä”kïØ™è}ìË!aq×±mÜu>©µIL~ô ÔšǦђ¸¶÷zè™GI‘©­°‰~âšüŒkë:Ƚ>«³Ú­Flªm cÒ¹ú÷Ȫo?l€rШ ˆÝÊU¬>V¶¥fúù¨Fâ×lPB€ö‚äZÁV&ÿ ÙþL€~püêWðm·»Ýñ›ß8d2wÕpO¹K^¢¼ÜñÅkè¶ÊJÇž=ïÊT¾}4xÔ¸K 8KŸ|â‹ÝÕel6Çïïèí…aÿîM8ë»v­1=WW£,]Îßàñ‚‰N—4qzÙ“à‹7÷ÿËçÆ]BO]¦¯Ÿß…+¡ÌAªÏ·G6Ròøž;züžs(]êÅÝ{Oœ:pðÒµ ¿“'¾²¢¯_ö;} Ó(êÄ©™žEßð=w.SÇïH?pÐïÐþo*ûº…|çwút"©éì —¯øõ¹>Êo9uÔ×çøžNÍ´ }úÅÿþõrBá–ÏécgïUt;û¨©N¸ãëãã*"&ݼä{æðÞ¾Ú®ê J¯J¾zò乿á“™Km¯:å{êÐÁk¬ñþË—Îû?Ýõ´èëÝÇÏ?Lx3Ô_sþ¼ßùóß Êáw³NÊ ¸à{äx³3+‘vv8äìE??¿ïïÆ ô&I7HŒ9²ï\T|ÖMŸ ‰Î”ó”C¹|é‚ß™s œYgß~‚¦™ìvÛë¬`Þfý°ùšiqqqƒlgÏ:Ðhwy™²2¸€îš®¾^›˜püákè3Ÿµ ]‰D"‹I$’»¾Õ€!á.m0`øû;¢¢ÜÕe`ÀÚâ"ÌäÞ´aÌÏÃÌ™«3’_½êˆˆp—] ™Vðþš©whÏW{ž •ö\ ÌÒçïûúëÇ÷í=YØ™{úà÷䮎–T¿€˜Ö.†Ë@ï¶3ß3Ù{Ë⊠ï}þ/ÚïZ wi¦èØ]ÿó·C‡~óÍë¡aBƒ 4)*ŒØõÙn°Ûù€ˆ³”V{qr‘Ý*R®´3M·Þ!™4’Kûoƒ Œ/?ýÛÁǾúW`LJä°Ê4FÃÐxÜšdLóP€ªÊ íL¨Úö¬3ßÞjèPÏ>¶wÏ?0Y1!(²EÅ÷ùêò™Tbø™¯:°ïHþÀ(<ðh»ÏÑãû¾ü{lÙ¨‘“ëÙP–aQ|IÜ…ÏËC݉¯®Š«ïgáÓˆ¸+_î;phÿþøÊg`O„ŸdÇi&„mÊæk¦ßªô‹q™s+Œ.|zHzx¯Q¦hÁ^&ä¡ÂS( cÚ‰‘¨»—r[¥=žÁÙёЄuámÍd3ê´à8j­îÍØ úUŽ@6«V£µ8m7zvMLï.®ÂfÕ¨ÕàOÁÑn³è ¯ç¾ùý‰Þ³ &”w•›ÕŽσùÍÞ»òÝ¿‰Å¤×àf5tÎÂJlfÃÛïÄ5;fuDF£Zy×iÙIì p ðmçiæ‘J¿ýí@.Àˆr—¼GCƒã„…Ëde9vï^ÃÝ“í37777ç.m<&Œ[V'¹:~ñx«ÕºqÚÚ FÏy&()q|öÙkG+ðìõÂÜÜô´Z<ëŒ 6L·¶sN¡Â\—QÈ“ ‚BvM!èJÇáJh<¸xøÎMå¥×<ÕØí“ÂÙÜ|7¹´¨¢qÁ3ϺÀïeJ%Œf8F M?ÃÃãq·.oãÊûËÀnå=-T†xÆÎ°šñBqUûðpŸPÜ—ÃåÖö.ÈFÒ ¸‚êZ°Ñõ¿Hçç;[ûtzEKË™šÍ®Vð3ÓpùUOè|§§“YUW”vb Ò øÂšú‘‘¾§Cø+‹Žö„gãŒÊ²ì >½ÇÕá§Osoj&‹¾›B"“ 2â›XQ ¦… ,i¥+vìNPX+wÒ®¸&Yíðg·óy+Ä×k4¨0tuMîqùŒiŽ1,[5t ‰?ïN9ß×X2êü^ZIË£ÄLr11­rÁ£Ñ,¯¾¡oÌ]y£‰™@T™¬Ý5©I¹]kh;ý›?ù¶ó8ÐT"R½ƒgÕ—ÅcØzûHGÙð¤óp±ùšiCñós‡ˆ» „à›‰ÁàøÓŸ ÅËOÿü§ƒ@pW߯öÑL›LPãâEhŸsSƒnŠXrãZ¬°¬Ì]× Ü·&—yoÍ´ÑH{ÊüýÃãÊ^Þx«EP]ѳӾv"Þ×LéÅ0dÕ4žX!t`0˜dL†BÁ½÷ýõÇå­õ¹˜¤D4yî¬KŽÏ{œÝÔV‘‰É*÷ÇǦćÅt 2ѹZ£:7¥°¨´¤©> ‡G£QwšØ2rFBJRüȸh¾FˆM£š,Ú‚„l©šÿ8³ùi.>sç^BS³IôF¶œˆºþ(=F³.Ë«AJ-m†O$ñ¹“+i(IÇ<Š+ì—vÄÞ¾ÓÑ;„KÅ¢%òg žbPIµ5é=LFqN".J+Á$Ä£1¥”á&M¡Ÿm©«-ÌÎ.‰MHE'D¤5Êy”(|Mµran„WšÉ*¢¢ÁiÂfdô°ï‚Ò ˆq!(Lºd|»í6_3a¼q®*<ô v­ÅËbAo>ßù‹µÐjµî’WÉÌ„kÛY­pê‡H„©¡Þ–´i™í£™6ÂööD"x½˜LX a2w6–ÁÈÜ4á^\ [:,——È9O?x“Éä;†ò³5ÓbiéË£G—ì®ý—5“u67&ŸÃjD=@ݾÆžC;“EÛVF@EE\¹›Ev ‹oî!ÅDæP;ÉÅTjñ tÞ6Ùͤ¶s„#µ=Ã¤â¦ÆÂ¥N?ÞRF*ÀævX 38l•K3…~ZÚͳ©ù©˜¢xtµÖjm*…M8J­^ÜRÚÂy›É£ï/ þϵqY3ÉØMT:”ž‚м–Ú<å´3-ˆûâ¢bïß½ÕÈ”}€fbGî]íÄJRRëôCI^0ÃÅ–twçŠÅÝYYÅhB‹É¤ÊÀ•’ˆR£UN¯éôÔLVc96ú> õàQ¯TžO(žµ#v¦Ðñ{÷à«·¤Äñ»ß9bc_Û06ÅEljÐ\‘‘_ÀMMîíïࣵ35ϸ^@¸„‡oª‘ɸ^gÎ8>ÿÜ‘“gr×s)Í„€°½ð¾‰@*•¼¡'yuLbjÖÈ”²6;axB‘‹çȱ¸ù8'2–ÔL-zìJ×M.îî+Ëk£s)|t˜•9,UAÍÔT,˜×é%”òúZ|bÁ„\’\±lgÒ«É<#•P™ñÇ•OW‰  6¡–µpkó;¤“ëtš)¿ªG©+Ĥr-Eä9›õh¦¦‚Æ^j9qP:õ¬ÓÀ„“õ@3ñfU3ŠÓ<ŸS““È•b ù›õYÑä †Uùh&lF›Ù¬ÎÄ7ÕäRSìNR‡K35‰å@CP Ð ÌåìœÉ¨qi&^©™;f²ü¬K°]š ³™™0Æž?þâÅ‹—/_ºdÓÊóçK-}úéRròÒâ¢{ã&c0,,ýå/KdòÒ«5m߸µÝ¥ÿüg)) ^¯‡ayK0›—‚‚–þüç¥ÊÊ¥WKý¾‹üÑ}ÿ¼ÑL[‰—5“Í"b>£P(Ý}“Õ¾ frÏ{Þ`ž¥·Œðû©­4Zß ú.™Õœ¹Ë hJ2ª5jéÝíJÔCíð Àh·ÉFE2™He´X4Š1ùü¯R[~3¥δ™U®47L úè 6oB-gSZšãK¤¯›èç':º{5†5ÜVcÑÈ@(šDe¶šMCÝZW‹#7›ô]6OÔJ¥t2N'ËYÅè‚ËÅÛ8ËL©'y­”VŽZÙT ‘\­=ãóEÞ„ÕjâqFÚéV*•DˆëÂ}fÄ,*…ÒÖÎÐg:ÁßlëšÖh…\‘O­ìêêšÕ®k>ñCA$Ñéô±±1 ›4Ñh#Íj]×uA@@ph&„­ÄËšiƒé¬ àñÙŒ)$±µÇ7ôð·§}f~lô>ŸÔîöNÿÈ@4Â/ÑL[‰§fR«ÕÛ\3!|¸ š á—ƒh&„­Ä¥™„B¡§fo2D3!x ™ Æøø¸§fB†Â{h&„­h¦ÞÞ^ð>›žžöüúG^fÞŒ1‹%‹•J¥V«5™Lˆ9áý°ÛÿÆLlcsIEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/doc/images/symbol_path_example.png0000666000000000000000000001211500000000000017216 0ustar00‰PNG  IHDRX,_ZÁ pHYsÄÄ•+ÿIDATxœíÝÛu"=Ö`ù_ßý‹8†Ÿ8;q4ˆ˜<Õàj ˜C¤Òó\ÌÂ6ŸM3BïÞªƒÞ‡CèØÇÇÇ¿ÿýï®ÿ @F&“Ééqó07üßÐ/ tÍP¤‚ o“É¿êŸ_ß™ˆÃ¡B€¾ÿ==þ‡C„Ã;‹Ã!_Jy!@N‹¢i !úÓ\ýîí¯g:•´'‚ Rp(ÿ ýŠ0™üëZ;(‡¥#èÃÅ|»”‚·#Ò:AŠú™ÛÇi¥Q€ÝX­ÖB&:á-Æ%ð¢)x8šGë¢_ÓŽ5Ò~tÕ~||tô›{6™L»ZwÏÄb´ovŸ¸Áíá§ý¸(z忪špúã὎¡øYìç†8PŽç¦ˆ‹hÂé”c„?ûüë«?§:Ÿ¥E| kR°S‚ð.7nÿ=E#Î$AxÕ÷¡|{·”S"j¡p5p¦”Ž«® åû7Ó,-²@ÚAøŒGo ¨Y„BøhçH^pc(7o xv1ìC4‹0Jý4m¦‹v¹|â‚k÷Æm<¡µK|.6‹@€LíÒÞ¥ÏMR4‹#ŸÓ| ÂsßGss-4ôxRG!#ƒtiæ„VÂsGóÙáÀ¡nÆ-&k¤­„?û~{øÁý¸|jß èÂ4wvŸøòý,•±—È®7εIäÂè¥Ð–9ÉîvŸxFú·‡·oÀ\>ñŒ¼¢%ý؆iÂFÃ1Â?F¹ÊÿÝà€G%˜‚£œÇz ÿHpL·¥¹”,„ñ<Ö)AX­!´Hã52‚° 1-¡é7^åLk­„Œéõy¯8`(EMk¯sÖh)D ¼Î™¢£TzGXÈB+[GÙ¥`!SÜ‹Jï³Özûù)Àh~ŠkEéá¸í›Å(‚«©€F¾k.îcœýš…B5›U»ß»¿ž㾪¦}¾¶'¸^$_4™ük2™ ý*ZÖÂfÒUÕ4ìcl>scÜ,çµõß!™ýÊà†z‚L&cŠÃÆÒè>ÆP]}bŒû¯#‡q³\n¦çGÝSt”Œ’Ñ.ÔYx8†~!¯já´ºƒ!T‹÷íâôE5¿÷á,7›7Únê- uà"3Cw&“IîYØX­ªiŒûúqŒû‚1EÆz+¬Ž?ú áóø8÷•ÒæÉ2ÓªÚm61„w»ãy3G»õüëâ‰÷g?f<ÔŒ‰Â®SãˆÃæåÕâ}çËù¦¾ŽpB}40.¶«Ùlõ—ËùæøÌ÷Ôrк(ði¡u¾…òé”:ƒ¼(ÝúqvD0ë„!ë 4â3J·|½ÓlœiSØÕY£=ÜhÛˆï‡sGÛ‡ÿ†pÈ÷îÛî,ŒŠ§åº4j]h’‚ƒËwZÎ5 úžå;Ä·LJR¾Ór®AHÏòâŒ^¾»ÿˆü‚Pk|'Séüœ_jM†’é§(²pX™ÎÏù!CÉtˆ3b§âlû¤3”Ì‚PSœœgâ09ÎÒ™¡¦dp9ŽrŠÒ¼´,ì_޳tfAÈàråŒÒšLòl‚P#4]«ÉÎ6LÏô¦_YËnºÎf‡zH:ÜËŠd5#pÈ×Q¶ìæ‡l:BÒ‘Ý(gd.6oRgå±û„8ù>¼]|ƒÊhÞ¶ûÏÈhˆ3bg'ÂÔ³YýMM!÷Ëæ!I‘‚ åb&öxEêdz;ûèÔY ~?/´Ù2¬\&ðÔƒP瑲\F9cu»”…ƒËe·4ÊóråŒÆ§­”ò¤;B ФöÊNÓxÒAhЧ/‹Q %‹i<é $}YŒrÆAÕEG B#8£êÊWâSz¢AhÄg$ñ! .ñ)=Ñ $#‰qF@±E§R BƒhRl@Ê{ŠAhÐç(åQ .å‰=Ý'H_Ê£œ¬¹Ã;]ë*›ÛMÜŠFŸ/7ñÙ¿g¸K \3l4Ü„q³\‡Õv»Ý¾ÏvËõ®ÃÅ©¸F‘İîÂ}Œ³_³B¨f³j÷ûÑ$4Ö‹I„A3âî Œq_UÓúqUMÃ>>¸ÆÙ¯Y!T³Yµû½ûë™1î«jÚçk"ÉÔ ¤Ž°™tU5 »ÃìkytcÜ-盂…Q’§}j?NŽpãõç…÷¡Z¼o·Ûívû^m‡ !=R°]ÎeÄþ™Ïç!„0[mUuã‰Õâ}»8}QMãï}ÿn® c¥° k·—ˆþÙn·§/¾Ò-Æ}˜þºŒ4wœh Å)~ªäš'ËL«j·ÙÄBÜíŽçÍíÖó¯ÕÐ÷g?†IÁ×Yeôš—OT‹÷Uœ/ç›ú:ÂYõŃq±]Íf«÷¸<ž+sú10rŠ ÆáÆúÐÛápèúÏ||\[5…X np‹5ÆO >ͺ(c2™L.~_W©!™Édò=!¥Ðܵ³,„”Bsó(¥#Öl ÿ¹ýT XJFé3„Â[áØê)ˆ¨}1BТŹ“ŠBÔY(s*Êñ))v8yëîd7Ú&YÚÛ܈‡B¼t„Í{ª EȈ¤oÇ–F)”R(ÓÛß)!ÅÒ÷\¤> ‡Ãá´ç„ ¾¨(ÁÙ¶K‚¢i€ (ÍF0QR4 P“²€q»¶ÿ® þPP Ãá )6(\ß°J )6¨vqÃR( ¾ÈB $!„RH/þ«µ†”FB¥.žý«›;´‰CÊ!¡8g`x§üüö#7»OÀ—B6^øñßXga}?Æ: ¯]€#`÷ ø2î|4æ?÷&žL&²±ê*Ô<”‚ÍÛó‹@ÆÍ1B87²3HŸøçHAŠ¢#„s#[ ÕÂm:B§GÁﻕB!!\0‚ÕѧûÚS#èÚ !á‚|WG_‰ðÓVmE)Š „Qy.ÂÏv+ Ç,ÔRAWe´@úb#Øâ+ìB¸*£Ò.^ª€¤‚2ÖuÏ* ) „¤¼@šQÏ É„ðƒÃ&ål†ìØ}ò“`6C¾ì>?Kd{¦D^ŒŒ¥QøY"ñ“ÈË€‘„:G¡S‚î5T i¡S‚îÕs i¡‚¥„~BxLךFz&á1]7jAè™ „$ha(‚žÑznia(‚žÑVniap‚†¤„Á BxÒ+ÍœFÒa÷ xÒ+ÍœFÒa÷ èí# A–Fá%-rJAH „—Ü“mŽBÊ!tN#)„Ђ‹=ŸF² ¡{> dAB;&“ÉñFrÒÕåP : ‡ÃÐ/xÀ[?Z—‚æeîµþ:ÂïûíþB¿Óïô;ýN¿³„ßùý›ŽP4A@Ñú;FØz‡[,of»¼Ÿíò~¶ËûÙ®‹ï§Ž€¢ BŠ&(ZOÇ M:BŠ&(š  h‚€¢ BŠ&(Z×A¸[Ïçóù|¾ÜÄŽÿRâf9ÿc½úÅŒGÜ,½Ÿ¯;NŸö6|}ØÍ—Äσ©Ó Œ›å:¬¶Ûíö}¶[úóU»õr7{ßn·Ûíûb¿6Ý´#nþã|Ýn½Œ‹ív»Ý®¦ÞÑ—}}Ø}Ö_µ[ÿ]›]¦Nƒpãì×,„ªÙ¬Úý–„/ÙýÞÍ‹*„BµXÌbÜüŠÆ nþ³›Îª¡_Föv¿w>ìa¶Ú¾/¼£/‰q_Íêaé³þŠÝz>_ï«æ€¼L]aŒûªšÖ«jöQUóŠÙj»š¿ØýÞÞ\ž7ÿÙÍþ߬ý²÷UiKUMãnC!n6>ëO›­¶Ûíû¢ùö] ¦.ƒPðu%n–ëýÂüý*1ئ¸‰¿¶Ö›,¾j¶Ú.âr>ŸÏ—»Ù»»E—‚©Ë œVþÏëÀní£Ñ 1Ø®j±¨,Ý OŠ›å|SÕ',¢s¹Út)˜º Âªšž–¶cÜ Æ×ÅÍr¾Á´!îvñωyËMüv@‡X»k×>Æã1Â0û5³¼Ö¢KÁÔéÉ2ÓªÚm61Ô“ÎñP:OŠ›år3m(äÕ¢®··Ûíû¢r†Ç‹f¿¦›Mݶ4NôàIÓª:uÕ»ß;]D›.Ó?]þ½jñ¾Šóå|Bµx7¿¤þ\Äõ|~üÎL(’ŒÙjõ{^ÎÙj»2o¿¤1wš=Ûv!˜ìG@ÑÜb €¢ BŠ&(Úÿ‰ÈÓŸ]t}IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/doc/index.rst0000666000000000000000000000137500000000000013056 0ustar00.. automodule:: qwt .. only:: html and not htmlhelp .. note:: Windows users may download the :download:`CHM Manual <_downloads/PythonQwt.chm.zip>`. After downloading this file, you may see blank pages in the documentation. That's because Windows is blocking CHM files for security reasons. Fixing this problem is easy: * Right-click the CHM file, select properties, then click “Unblockâ€. * Or compress the CHM file into a zip archive and decompress it in another directory. * Do not open the CHM file on a network drive. Contents: .. toctree:: :maxdepth: 2 overview installation examples/index reference/index Indices and tables: * :ref:`genindex` * :ref:`search` ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641633624.0 PythonQwt-0.10.2/doc/installation.rst0000666000000000000000000000101000000000000014432 0ustar00Installation ============ Dependencies ------------ Requirements: * Python 3.x (x>=6) * PyQt4 4.x (x>=4), PyQt5 5.x (x>=5), PyQt6 or PySide6 * QtPy >= 1.3 * NumPy 1.x (x>=5) * Sphinx 1.x (x>=1) for documentation generation Installation ------------ From the source package: `python setup.py install` Help and support ---------------- External resources: * Bug reports and feature requests: `GitHub`_ .. _GitHub: https://github.com/PierreRaybaut/PythonQwt ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/overview.rst0000666000000000000000000000751400000000000013616 0ustar00Purpose and Motivation ====================== The ``PythonQwt`` project was initiated to solve -at least temporarily- the obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is no longer maintained. The idea was to translate the original Qwt C++ code to Python and then to optimize some parts of the code by writing new modules based on NumPy and other libraries. Overview ======== The ``PythonQwt`` package consists of a single Python package named `qwt` and of a few other files (examples, doc, ...): - The subpackage `qwt.qt` handles compatibility features between PyQt4, PyQt5 and PySide (source code strongly inspired from the Spyder project). - The subpackage `qwt.tests` contains the PythonQwt unit tests: - 75% were directly adapted from Qwt/C++ demos (Bode demo, cartesian demo, etc.). - 25% were written specifically for PythonQwt. - The test launcher is an exclusive PythonQwt feature. The `qwt` package is a pure Python implementation of `Qwt` C++ library with the following limitations. The following `Qwt` classes won't be reimplemented in `qwt` because more powerful features already exist in `guiqwt` (and in the forthcoming `plotpy` library, resulting of the merge of `guidata` and `guiqwt`): `QwtPlotZoomer`, `QwtCounter`, `QwtEventPattern`, `QwtPicker`, `QwtPlotPicker`. Only the following plot items are currently implemented in `qwt` (the only plot items needed by `guiqwt` and `plotpy`): `QwtPlotItem` (base class), `QwtPlotItem`, `QwtPlotMarker`, `QwtPlotSeriesItem` and `QwtPlotCurve`. The `HistogramItem` object implemented in PyQwt's HistogramDemo.py is not available here (a similar item is already implemented in `guiqwt`/`plotpy`). As a consequence, the following classes are not implemented: `QwtPlotHistogram`, `QwtIntervalSeriesData`, `QwtIntervalSample`. The following data structure objects are not implemented as they seemed irrelevant with Python and NumPy: `QwtCPointerData` (as a consequence, method `QwtPlot.setRawSamples` is not implemented), `QwtSyntheticPointData`. The following sample data type objects are not implemented as they seemed quite specific: `QwtSetSample`, `QwtOHLCSample`. For similar reasons, the `QwtPointPolar` class and the following sample iterator objects are not implemented: `QwtSetSeriesData`, `QwtTradingChartData` and `QwtPoint3DSeriesData`. The following classes are not implemented because they seem inappropriate in the Python/NumPy context: `QwtArraySeriesData`, `QwtPointSeriesData`, `QwtAbstractSeriesStore`. Threads: - Multiple threads for graphic rendering is implemented in Qwt C++ code thanks to the `QtConcurrent` and `QFuture` Qt features which are currently not supported by PyQt. - As a consequence the following API is not supported in `PythonQwt`: - `QwtPlotItem.renderThreadCount` - `QwtPlotItem.setRenderThreadCount` - option `numThreads` in `QwtPointMapper.toImage` The `QwtClipper` class is not implemented yet (and it will probably be very difficult or even impossible to implement it in pure Python without performance issues). As a consequence, when zooming in a plot curve, the entire curve is still painted (in other words, when working with large amount of data, there is no performance gain when zooming in). The curve fitter feature is not implemented because powerful curve fitting features are already implemented in `guiqwt`/`plotpy`. Other API compatibility issues with `Qwt`: - `QwtPlotCurve.MinimizeMemory` option was removed as this option has no sense in PythonQwt (the polyline plotting is not taking more memory than the array data that is already there). - `QwtPlotCurve.Fitted` option was removed as this option is not supported at the moment. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/doc/plot_example.py0000666000000000000000000000112300000000000014247 0ustar00from qtpy import QtWidgets as QW import qwt import numpy as np app = QW.QApplication([]) x = np.linspace(-10, 10, 500) plot = qwt.QwtPlot("Trigonometric functions") plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend) qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True) qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True) plot.resize(600, 300) plot.show() import os.path as osp plot.grab().save( osp.join(osp.abspath(osp.dirname(__file__)), "images", "QwtPlot_example.png") ) app.exec_() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.3651352 PythonQwt-0.10.2/doc/reference/0000777000000000000000000000000000000000000013145 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/graphic.rst0000666000000000000000000000003500000000000015312 0ustar00.. automodule:: qwt.graphic ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/doc/reference/index.rst0000666000000000000000000000044200000000000015006 0ustar00Reference ========= Public API: .. toctree:: :maxdepth: 2 plot scale symbol text toqimage Private API: .. toctree:: :maxdepth: 2 graphic interval plot_directpainter plot_layout plot_series transform ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/interval.rst0000666000000000000000000000003600000000000015522 0ustar00.. automodule:: qwt.interval ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/plot.rst0000666000000000000000000000061500000000000014657 0ustar00Plot widget fundamentals ------------------------ .. automodule:: qwt.plot .. automodule:: qwt.plot_canvas Plot items ---------- .. automodule:: qwt.plot_grid .. automodule:: qwt.plot_curve .. automodule:: qwt.plot_marker Additional plot features ------------------------ .. automodule:: qwt.legend .. automodule:: qwt.color_map .. automodule:: qwt.plot_renderer ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/plot_directpainter.rst0000666000000000000000000000005000000000000017565 0ustar00.. automodule:: qwt.plot_directpainter ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/plot_layout.rst0000666000000000000000000000004100000000000016245 0ustar00.. automodule:: qwt.plot_layout ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/plot_series.rst0000666000000000000000000000004100000000000016222 0ustar00.. automodule:: qwt.plot_series ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/scale.rst0000666000000000000000000000023300000000000014764 0ustar00Scales ------ .. automodule:: qwt.scale_widget .. automodule:: qwt.scale_div .. automodule:: qwt.scale_engine .. automodule:: qwt.scale_draw ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/symbol.rst0000666000000000000000000000003400000000000015201 0ustar00.. automodule:: qwt.symbol ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/text.rst0000666000000000000000000000003200000000000014656 0ustar00.. automodule:: qwt.text ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/toqimage.rst0000666000000000000000000000003600000000000015504 0ustar00.. automodule:: qwt.toqimage ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/doc/reference/transform.rst0000666000000000000000000000003700000000000015712 0ustar00.. automodule:: qwt.transform ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598426693.0 PythonQwt-0.10.2/doc/requirements.txt0000666000000000000000000000007400000000000014474 0ustar00numpy==1.19.1 PyQt5==5.15.0 PyQt5-sip==12.8.0 QtPy==1.9.0././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/doc/symbol_path_example.py0000666000000000000000000000216700000000000015623 0ustar00from qtpy import QtWidgets as QW from qtpy import QtGui as QG from qtpy import QtCore as QC import qwt import numpy as np import os.path as osp app = QW.QApplication([]) # --- Construct custom symbol --- path = QG.QPainterPath() path.moveTo(0, 8) path.lineTo(0, 5) path.lineTo(-3, 5) path.lineTo(0, 0) path.lineTo(3, 5) path.lineTo(0, 5) transform = QG.QTransform() transform.rotate(-30.0) path = transform.map(path) pen = QG.QPen(QC.Qt.black, 2) pen.setJoinStyle(QC.Qt.MiterJoin) symbol = qwt.QwtSymbol() symbol.setPen(pen) symbol.setBrush(QC.Qt.red) symbol.setPath(path) symbol.setPinPoint(QC.QPointF(0.0, 0.0)) symbol.setSize(10, 14) # --- Test it within a simple plot --- curve = qwt.QwtPlotCurve() curve_pen = QG.QPen(QC.Qt.blue) curve_pen.setStyle(QC.Qt.DotLine) curve.setPen(curve_pen) curve.setSymbol(symbol) x = np.linspace(0, 10, 10) curve.setData(x, np.sin(x)) plot = qwt.QwtPlot() curve.attach(plot) plot.resize(600, 300) plot.replot() plot.show() plot.grab().save( osp.join(osp.abspath(osp.dirname(__file__)), "images", "symbol_path_example.png") ) app.exec_() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.4305284 PythonQwt-0.10.2/qwt/0000777000000000000000000000000000000000000011255 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655397583.0 PythonQwt-0.10.2/qwt/__init__.py0000666000000000000000000001325000000000000013367 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ PythonQwt ========= The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical user interfaces for the Python programming language. It is compatible with ``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``. It consists of a single Python package named `qwt` which is a pure Python implementation of Qwt C++ library with some limitations. .. image:: /../qwt/tests/data/testlauncher.png External resources: * Python Package Index: `PyPI`_ * Project page on GitHub: `GitHubPage`_ * Bug reports and feature requests: `GitHub`_ .. _PyPI: https://pypi.python.org/pypi/PythonQwt .. _GitHubPage: http://pierreraybaut.github.io/PythonQwt .. _GitHub: https://github.com/PierreRaybaut/PythonQwt """ __version__ = "0.10.2" QWT_VERSION_STR = "6.1.5" import warnings from qwt.plot import QwtPlot from qwt.symbol import QwtSymbol as QSbl # see deprecated section from qwt.scale_engine import QwtLinearScaleEngine, QwtLogScaleEngine from qwt.text import QwtText from qwt.plot_canvas import QwtPlotCanvas from qwt.plot_curve import QwtPlotCurve as QPC # see deprecated section from qwt.plot_curve import QwtPlotItem from qwt.scale_map import QwtScaleMap from qwt.interval import QwtInterval from qwt.legend import QwtLegend, QwtLegendData, QwtLegendLabel from qwt.plot_marker import QwtPlotMarker from qwt.plot_grid import QwtPlotGrid as QPG # see deprecated section from qwt.color_map import QwtLinearColorMap from qwt.toqimage import array_to_qimage as toQImage from qwt.scale_div import QwtScaleDiv from qwt.scale_draw import QwtScaleDraw from qwt.scale_draw import QwtAbstractScaleDraw from qwt.painter import QwtPainter from qwt.plot_series import ( QwtSeriesData, QwtPointArrayData, QwtSeriesStore, QwtPlotSeriesItem, ) from qwt.plot_renderer import QwtPlotRenderer from qwt.plot_directpainter import QwtPlotDirectPainter ## ============================================================================ ## Deprecated classes and attributes (to be removed in next major release) ## ============================================================================ # Remove deprecated QwtPlotItem.setAxis (replaced by setAxes) # Remove deprecated QwtPlotCanvas.invalidatePaintCache (replaced by replot) ## ============================================================================ class QwtDoubleInterval(QwtInterval): def __init__(self, minValue=0.0, maxValue=-1.0, borderFlags=None): warnings.warn( "`QwtDoubleInterval` has been removed in Qwt6: " "please use `QwtInterval` instead", RuntimeWarning, ) super(QwtDoubleInterval, self).__init__(minValue, maxValue, borderFlags) ## ============================================================================ class QwtLog10ScaleEngine(QwtLogScaleEngine): def __init__(self): warnings.warn( "`QwtLog10ScaleEngine` has been removed in Qwt6: " "please use `QwtLogScaleEngine` instead", RuntimeWarning, ) super(QwtLog10ScaleEngine, self).__init__(10) ## ============================================================================ class QwtPlotPrintFilter(object): def __init__(self): raise NotImplementedError( "`QwtPlotPrintFilter` has been removed in Qwt6: " "please rely on `QwtPlotRenderer` instead" ) ## ============================================================================ class QwtPlotCurve(QPC): @property def Yfx(self): raise NotImplementedError( "`Yfx` attribute has been removed " "(curve types are no longer implemented in Qwt6)" ) @property def Xfy(self): raise NotImplementedError( "`Yfx` attribute has been removed " "(curve types are no longer implemented in Qwt6)" ) ## ============================================================================ class QwtSymbol(QSbl): def draw(self, painter, *args): warnings.warn( "`draw` has been removed in Qwt6: " "please rely on `drawSymbol` and `drawSymbols` instead", RuntimeWarning, ) from qtpy.QtCore import QPointF if len(args) == 2: self.drawSymbols(painter, [QPointF(*args)]) else: self.drawSymbol(painter, *args) ## ============================================================================ class QwtPlotGrid(QPG): def majPen(self): warnings.warn( "`majPen` has been removed in Qwt6: " "please use `majorPen` instead", RuntimeWarning, ) return self.majorPen() def minPen(self): warnings.warn( "`minPen` has been removed in Qwt6: " "please use `minorPen` instead", RuntimeWarning, ) return self.minorPen() def setMajPen(self, *args): warnings.warn( "`setMajPen` has been removed in Qwt6: " "please use `setMajorPen` instead", RuntimeWarning, ) return self.setMajorPen(*args) def setMinPen(self, *args): warnings.warn( "`setMinPen` has been removed in Qwt6: " "please use `setMinorPen` instead", RuntimeWarning, ) return self.setMinorPen(*args) ## ============================================================================ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091904.0 PythonQwt-0.10.2/qwt/_math.py0000666000000000000000000000312300000000000012716 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) from __future__ import division from qtpy.QtCore import qFuzzyCompare import math def qwtFuzzyCompare(value1, value2, intervalSize): eps = abs(1.0e-6 * intervalSize) if value2 - value1 > eps: return -1 elif value1 - value2 > eps: return 1 else: return 0 def qwtFuzzyGreaterOrEqual(d1, d2): return (d1 >= d2) or qFuzzyCompare(d1, d2) def qwtFuzzyLessOrEqual(d1, d2): return (d1 <= d2) or qFuzzyCompare(d1, d2) def qwtSign(x): if x > 0.0: return 1 elif x < 0.0: return -1 else: return 0 def qwtSqr(x): return x ** 2 def qwtFastAtan(x): if x < -1.0: return -0.5 * math.pi - x / (x ** 2 + 0.28) elif x > 1.0: return 0.5 * math.pi - x / (x ** 2 + 0.28) else: return x / (1.0 + x ** 2 * 0.28) def qwtFastAtan2(y, x): if x > 0: return qwtFastAtan(y / x) elif x < 0: d = qwtFastAtan(y / x) if y >= 0: return d + math.pi else: return d - math.pi elif y < 0.0: return -0.5 * math.pi elif y > 0.0: return 0.5 * math.pi else: return 0.0 def qwtRadians(degrees): return degrees * math.pi / 180.0 def qwtDegrees(radians): return radians * 180.0 / math.pi ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091904.0 PythonQwt-0.10.2/qwt/color_map.py0000666000000000000000000002706000000000000013607 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ Color maps ---------- QwtColorMap ~~~~~~~~~~~ .. autoclass:: QwtColorMap :members: QwtLinearColorMap ~~~~~~~~~~~~~~~~~ .. autoclass:: QwtLinearColorMap :members: QwtAlphaColorMap ~~~~~~~~~~~~~~~~ .. autoclass:: QwtAlphaColorMap :members: """ from qtpy.QtGui import QColor, qRed, qGreen, qBlue, qRgb, qRgba, qAlpha from qtpy.QtCore import Qt, qIsNaN class ColorStop(object): def __init__(self, pos=0.0, color=None): self.pos = pos if color is None: self.rgb = 0 else: self.rgb = color.rgba() self.r = qRed(self.rgb) self.g = qGreen(self.rgb) self.b = qBlue(self.rgb) self.a = qAlpha(self.rgb) # when mapping a value to rgb we will have to calcualate: # - const int v = int( ( s1.v0 + ratio * s1.vStep ) + 0.5 ); # Thus adding 0.5 ( for rounding ) can be done in advance self.r0 = self.r + 0.5 self.g0 = self.g + 0.5 self.b0 = self.b + 0.5 self.a0 = self.a + 0.5 self.rStep = self.gStep = self.bStep = self.aStep = 0.0 self.posStep = 0.0 def updateSteps(self, nextStop): self.rStep = nextStop.r - self.r self.gStep = nextStop.g - self.g self.bStep = nextStop.b - self.b self.aStep = nextStop.a - self.a self.posStep = nextStop.pos - self.pos class ColorStops(object): def __init__(self): self.__doAlpha = False self.__stops = [] def insert(self, pos, color): if pos < 0.0 or pos > 1.0: return if len(self.__stops) == 0: index = 0 self.__stops = [None] else: index = self.findUpper(pos) if ( index == len(self.__stops) or abs(self.__stops[index].pos - pos) >= 0.001 ): self.__stops.append(None) for i in range(len(self.__stops) - 1, index, -1): self.__stops[i] = self.__stops[i - 1] self.__stops[index] = ColorStop(pos, color) self.__doAlpha = color.alpha() != 255 if index > 0: self.__stops[index - 1].updateSteps(self.__stops[index]) if index < len(self.__stops) - 1: self.__stops[index].updateSteps(self.__stops[index + 1]) def stops(self): if self.__stops: return [stop.pos for stop in self.__stops] else: return [] def findUpper(self, pos): index = 0 n = len(self.__stops) while n > 0: half = n >> 1 middle = index + half if self.__stops[middle].pos <= pos: index = middle + 1 n -= half + 1 else: n = half return index def rgb(self, mode, pos): if pos <= 0.0: return self.__stops[0].rgb if pos >= 1.0: return self.__stops[-1].rgb index = self.findUpper(pos) if mode == QwtLinearColorMap.FixedColors: return self.__stops[index - 1].rgb else: s1 = self.__stops[index - 1] ratio = (pos - s1.pos) / s1.posStep r = int(s1.r0 + ratio * s1.rStep) g = int(s1.g0 + ratio * s1.gStep) b = int(s1.b0 + ratio * s1.bStep) if self.__doAlpha: if s1.aStep: a = int(s1.a0 + ratio * s1.aStep) return qRgba(r, g, b, a) else: return qRgba(r, g, b, s1.a) else: return qRgb(r, g, b) class QwtColorMap(object): """ QwtColorMap is used to map values into colors. For displaying 3D data on a 2D plane the 3rd dimension is often displayed using colors, like f.e in a spectrogram. Each color map is optimized to return colors for only one of the following image formats: * `QImage.Format_Indexed8` * `QImage.Format_ARGB32` .. py:class:: QwtColorMap(format_) :param int format_: Preferred format of the color map (:py:data:`QwtColorMap.RGB` or :py:data:`QwtColorMap.Indexed`) .. seealso :: :py:data:`qwt.QwtScaleWidget` """ # enum Format RGB, Indexed = list(range(2)) def __init__(self, format_=None): if format_ is None: format_ = self.RGB self.__format = format_ def color(self, interval, value): """ Map a value into a color :param qwt.interval.QwtInterval interval: valid interval for value :param float value: value :return: the color corresponding to value .. warning :: This method is slow for Indexed color maps. If it is necessary to map many values, its better to get the color table once and find the color using `colorIndex()`. """ if self.__format == self.RGB: return QColor.fromRgba(self.rgb(interval, value)) else: index = self.colorIndex(interval, value) return self.colorTable(interval)[index] def format(self): return self.__format def colorTable(self, interval): """ Build and return a color map of 256 colors :param qwt.interval.QwtInterval interval: range for the values :return: a color table, that can be used for a `QImage` The color table is needed for rendering indexed images in combination with using `colorIndex()`. """ table = [0] * 256 if interval.isValid(): step = interval.width() / (len(table) - 1) for i in range(len(table)): table[i] = self.rgb(interval, interval.minValue() + step * i) return table def rgb(self, interval, value): # To be reimplemented return QColor().rgb() def colorIndex(self, interval, value): # To be reimplemented return 0 class QwtLinearColorMap_PrivateData(object): def __init__(self): self.colorStops = ColorStops() self.mode = None class QwtLinearColorMap(QwtColorMap): """ Build a linear color map with two stops. .. py:class:: QwtLinearColorMap(format_) Build a color map with two stops at 0.0 and 1.0. The color at 0.0 is `Qt.blue`, at 1.0 it is `Qt.yellow`. :param int format_: Preferred format of the color map (:py:data:`QwtColorMap.RGB` or :py:data:`QwtColorMap.Indexed`) .. py:class:: QwtLinearColorMap(color1, color2, [format_=QwtColorMap.RGB]): :noindex: Build a color map with two stops at 0.0 and 1.0. :param QColor color1: color at 0. :param QColor color2: color at 1. :param int format_: Preferred format of the color map (:py:data:`QwtColorMap.RGB` or :py:data:`QwtColorMap.Indexed`) """ # enum Mode FixedColors, ScaledColors = list(range(2)) def __init__(self, *args): color1, color2 = QColor(Qt.blue), QColor(Qt.yellow) format_ = QwtColorMap.RGB if len(args) == 1: (format_,) = args elif len(args) == 2: color1, color2 = args elif len(args) == 3: color1, color2, format_ = args elif len(args) != 0: raise TypeError( "%s() takes 0, 1, 2 or 3 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) super(QwtLinearColorMap, self).__init__(format_) self.__data = QwtLinearColorMap_PrivateData() self.__data.mode = self.ScaledColors self.setColorInterval(color1, color2) def setMode(self, mode): """ Set the mode of the color map :param int mode: :py:data:`QwtLinearColorMap.FixedColors` or :py:data:`QwtLinearColorMap.ScaledColors` `FixedColors` means the color is calculated from the next lower color stop. `ScaledColors` means the color is calculated by interpolating the colors of the adjacent stops. """ self.__data.mode = mode def mode(self): """ :return: the mode of the color map .. seealso :: :py:meth:`QwtLinearColorMap.setMode` """ return self.__data.mode def setColorInterval(self, color1, color2): self.__data.colorStops = ColorStops() self.__data.colorStops.insert(0.0, QColor(color1)) self.__data.colorStops.insert(1.0, QColor(color2)) def addColorStop(self, value, color): if value >= 0.0 and value <= 1.0: self.__data.colorStops.insert(value, QColor(color)) def colorStops(self): return self.__data.colorStops.stops() def color1(self): return QColor(self.__data.colorStops.rgb(self.__data.mode, 0.0)) def color2(self): return QColor(self.__data.colorStops.rgb(self.__data.mode, 1.0)) def rgb(self, interval, value): if qIsNaN(value): return 0 width = interval.width() if width <= 0.0: return 0 ratio = (value - interval.minValue()) / width return self.__data.colorStops.rgb(self.__data.mode, ratio) def colorIndex(self, interval, value): width = interval.width() if qIsNaN(value) or width <= 0.0 or value <= interval.minValue(): return 0 if value >= interval.maxValue(): return 255 ratio = (value - interval.minValue()) / width if self.__data.mode == self.FixedColors: return int(ratio * 255) else: return int(ratio * 255 + 0.5) class QwtAlphaColorMap_PrivateData(object): def __init__(self): self.color = QColor() self.rgb = QColor().rgb() self.rgbMax = QColor().rgb() class QwtAlphaColorMap(QwtColorMap): """ QwtAlphaColorMap varies the alpha value of a color .. py:class:: QwtAlphaColorMap(color) Build a color map varying the alpha value of a color. :param QColor color: color of the map """ def __init__(self, color): super(QwtAlphaColorMap, self).__init__(QwtColorMap.RGB) self.__data = QwtAlphaColorMap_PrivateData() self.setColor(color) def setColor(self, color): """ Set the color of the map :param QColor color: color of the map """ self.__data.color = color self.__data.rgb = color.rgb() & qRgba(255, 255, 255, 0) self.__data.rgbMax = self.__data.rgb | (255 << 24) def color(self): """ :return: the color of the map .. seealso :: :py:meth:`QwtAlphaColorMap.setColor` """ return self.__data.color def rgb(self, interval, value): if qIsNaN(value): return 0 width = interval.width() if width <= 0.0: return 0 if value <= interval.minValue(): return self.__data.rgb if value >= interval.maxValue(): return self.__data.rgbMax ratio = (value - interval.minValue()) / width return self.__data.rgb | (int(round(255 * ratio)) << 24) def colorIndex(self, interval, value): return 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641728630.0 PythonQwt-0.10.2/qwt/column_symbol.py0000666000000000000000000001313000000000000014507 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) from qwt.interval import QwtInterval from qtpy.QtGui import QPolygonF, QPalette from qtpy.QtCore import QRectF, Qt, QLineF def qwtDrawBox(p, rect, pal, lw): if lw > 0.0: if rect.width() == 0.0: p.setPen(pal.dark().color()) p.drawLine(QLineF(rect.topLeft(), rect.bottomLeft())) return if rect.height() == 0.0: p.setPen(pal.dark().color()) p.drawLine(QLineF(rect.topLeft(), rect.topRight())) return lw = min([lw, rect.height() / 2.0 - 1.0]) lw = min([lw, rect.width() / 2.0 - 1.0]) outerRect = rect.adjusted(0, 0, 1, 1) polygon = QPolygonF(outerRect) if outerRect.width() > 2 * lw and outerRect.height() > 2 * lw: innerRect = outerRect.adjusted(lw, lw, -lw, -lw) polygon = polygon.subtracted(innerRect) p.setPen(Qt.NoPen) p.setBrush(pal.dark()) p.drawPolygon(polygon) windowRect = rect.adjusted(lw, lw, -lw + 1, -lw + 1) if windowRect.isValid(): p.fillRect(windowRect, pal.window()) def qwtDrawPanel(painter, rect, pal, lw): if lw > 0.0: if rect.width() == 0.0: painter.setPen(pal.window().color()) painter.drawLine(QLineF(rect.topLeft(), rect.bottomLeft())) return if rect.height() == 0.0: painter.setPen(pal.window().color()) painter.drawLine(QLineF(rect.topLeft(), rect.topRight())) return lw = min([lw, rect.height() / 2.0 - 1.0]) lw = min([lw, rect.width() / 2.0 - 1.0]) outerRect = rect.adjusted(0, 0, 1, 1) innerRect = outerRect.adjusted(lw, lw, -lw, -lw) lines = [QPolygonF(), QPolygonF()] lines[0] += outerRect.bottomLeft() lines[0] += outerRect.topLeft() lines[0] += outerRect.topRight() lines[0] += innerRect.topRight() lines[0] += innerRect.topLeft() lines[0] += innerRect.bottomLeft() lines[1] += outerRect.topRight() lines[1] += outerRect.bottomRight() lines[1] += outerRect.bottomLeft() lines[1] += innerRect.bottomLeft() lines[1] += innerRect.bottomRight() lines[1] += innerRect.topRight() painter.setPen(Qt.NoPen) painter.setBrush(pal.light()) painter.drawPolygon(lines[0]) painter.setBrush(pal.dark()) painter.drawPolygon(lines[1]) painter.fillRect(rect.adjusted(lw, lw, -lw + 1, -lw + 1), pal.window()) class QwtColumnSymbol_PrivateData(object): def __init__(self): self.style = QwtColumnSymbol.Box self.frameStyle = QwtColumnSymbol.Raised self.lineWidth = 2 self.palette = QPalette(Qt.gray) class QwtColumnSymbol(object): # enum Style NoStyle = -1 Box = 0 UserStyle = 1000 # enum FrameStyle NoFrame, Plain, Raised = list(range(3)) def __init__(self, style): self.__data = QwtColumnSymbol_PrivateData() self.__data.style = style def setStyle(self, style): self.__data.style = style def style(self): return self.__data.style def setPalette(self, palette): self.__data.palette = palette def palette(self): return self.__data.palette def setFrameStyle(self, frameStyle): self.__data.frameStyle = frameStyle def frameStyle(self): return self.__data.frameStyle def setLineWidth(self, width): self.__data.lineWidth = width def lineWidth(self): return self.__data.lineWidth def draw(self, painter, rect): painter.save() if self.__data.style == QwtColumnSymbol.Box: self.drawBox(painter, rect) painter.restore() def drawBox(self, painter, rect): r = rect.toRect() if self.__data.frameStyle == QwtColumnSymbol.Raised: qwtDrawPanel(painter, r, self.__data.palette, self.__data.lineWidth) elif self.__data.frameStyle == QwtColumnSymbol.Plain: qwtDrawBox(painter, r, self.__data.palette, self.__data.lineWidth) else: painter.fillRect(r.adjusted(0, 0, 1, 1), self.__data.palette.window()) class QwtColumnRect(object): # enum Direction LeftToRight, RightToLeft, BottomToTop, TopToBottom = list(range(4)) def __init__(self): self.hInterval = QwtInterval() self.vInterval = QwtInterval() self.direction = 0 def toRect(self): r = QRectF( self.hInterval.minValue(), self.vInterval.minValue(), self.hInterval.maxValue() - self.hInterval.minValue(), self.vInterval.maxValue() - self.vInterval.minValue(), ) r = r.normalized() if self.hInterval.borderFlags() & QwtInterval.ExcludeMinimum: r.adjust(1, 0, 0, 0) if self.hInterval.borderFlags() & QwtInterval.ExcludeMaximum: r.adjust(0, 0, -1, 0) if self.vInterval.borderFlags() & QwtInterval.ExcludeMinimum: r.adjust(0, 1, 0, 0) if self.vInterval.borderFlags() & QwtInterval.ExcludeMaximum: r.adjust(0, 0, 0, -1) return r def orientation(self): if self.direction in (self.LeftToRight, self.RightToLeft): return Qt.Horizontal return Qt.Vertical ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641655562.0 PythonQwt-0.10.2/qwt/dyngrid_layout.py0000666000000000000000000003206700000000000014674 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ qwt.dyngrid_layout ------------------ The `dyngrid_layout` module provides the `QwtDynGridLayout` class. .. autoclass:: QwtDynGridLayout :members: """ from qtpy.QtWidgets import QLayout from qtpy.QtCore import Qt, QRect, QSize class QwtDynGridLayout_PrivateData(object): def __init__(self): self.isDirty = True self.maxColumns = 0 self.numRows = 0 self.numColumns = 0 self.expanding = Qt.Horizontal self.itemSizeHints = [] self.itemList = [] def updateLayoutCache(self): self.itemSizeHints = [it.sizeHint() for it in self.itemList] self.isDirty = False class QwtDynGridLayout(QLayout): """ The `QwtDynGridLayout` class lays out widgets in a grid, adjusting the number of columns and rows to the current size. `QwtDynGridLayout` takes the space it gets, divides it up into rows and columns, and puts each of the widgets it manages into the correct cell(s). It lays out as many number of columns as possible (limited by :py:meth:`maxColumns()`). .. py:class:: QwtDynGridLayout(parent, margin, [spacing=-1]) :param QWidget parent: parent widget :param int margin: margin :param int spacing: spacing .. py:class:: QwtDynGridLayout(spacing) :noindex: :param int spacing: spacing .. py:class:: QwtDynGridLayout() :noindex: Initialize the layout with default values. :param int spacing: spacing """ def __init__(self, *args): self.__data = None parent = None margin = 0 spacing = -1 if len(args) in (2, 3): parent, margin = args[:2] if len(args) == 3: spacing = args[-1] elif len(args) == 1: if isinstance(args[0], int): (spacing,) = args else: (parent,) = args elif len(args) != 0: raise TypeError( "%s() takes 0, 1, 2 or 3 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) QLayout.__init__(self, parent) self.__data = QwtDynGridLayout_PrivateData() self.setSpacing(spacing) self.setContentsMargins(margin, margin, margin, margin) def invalidate(self): """Invalidate all internal caches""" self.__data.isDirty = True QLayout.invalidate(self) def setMaxColumns(self, maxColumns): """Limit the number of columns""" self.__data.maxColumns = maxColumns def maxColumns(self): """Return the upper limit for the number of columns""" return self.__data.maxColumns def addItem(self, item): """Add an item to the next free position""" self.__data.itemList.append(item) self.invalidate() def isEmpty(self): """Return true if this layout is empty""" return self.count() == 0 def itemCount(self): """Return number of layout items""" return self.count() def itemAt(self, index): """Find the item at a specific index""" if index < 0 or index >= len(self.__data.itemList): return return self.__data.itemList[index] def takeAt(self, index): """Find the item at a specific index and remove it from the layout""" if index < 0 or index >= len(self.__data.itemList): return self.__data.isDirty = True return self.__data.itemList.pop(index) def count(self): """Return Number of items in the layout""" return len(self.__data.itemList) def setExpandingDirections(self, expanding): """ Set whether this layout can make use of more space than sizeHint(). A value of Qt.Vertical or Qt.Horizontal means that it wants to grow in only one dimension, while Qt.Vertical | Qt.Horizontal means that it wants to grow in both dimensions. The default value is 0. """ self.__data.expanding = expanding def expandingDirections(self): """ Returns whether this layout can make use of more space than sizeHint(). A value of Qt.Vertical or Qt.Horizontal means that it wants to grow in only one dimension, while Qt.Vertical | Qt.Horizontal means that it wants to grow in both dimensions. """ return self.__data.expanding def setGeometry(self, rect): """ Reorganizes columns and rows and resizes managed items within a rectangle. """ QLayout.setGeometry(self, rect) if self.isEmpty(): return self.__data.numColumns = self.columnsForWidth(rect.width()) self.__data.numRows = self.itemCount() / self.__data.numColumns if self.itemCount() % self.__data.numColumns: self.__data.numRows += 1 itemGeometries = self.layoutItems(rect, self.__data.numColumns) for it, geo in zip(self.__data.itemList, itemGeometries): it.setGeometry(geo) def columnsForWidth(self, width): """ Calculate the number of columns for a given width. The calculation tries to use as many columns as possible ( limited by maxColumns() ) """ if self.isEmpty(): return 0 maxColumns = self.itemCount() if self.__data.maxColumns > 0: maxColumns = min([self.__data.maxColumns, maxColumns]) if self.maxRowWidth(maxColumns) <= width: return maxColumns for numColumns in range(2, maxColumns + 1): rowWidth = self.maxRowWidth(numColumns) if rowWidth > width: return numColumns - 1 return 1 def maxRowWidth(self, numColumns): """Calculate the width of a layout for a given number of columns.""" colWidth = [0] * numColumns if self.__data.isDirty: self.__data.updateLayoutCache() for index, hint in enumerate(self.__data.itemSizeHints): col = index % numColumns colWidth[col] = max([colWidth[col], hint.width()]) margins = self.contentsMargins() margin_w = margins.left() + margins.right() return margin_w + (numColumns - 1) * self.spacing() + sum(colWidth) def maxItemWidth(self): """Return the maximum width of all layout items""" if self.isEmpty(): return 0 if self.__data.isDirty: self.__data.updateLayoutCache() return max([hint.width() for hint in self.__data.itemSizeHints]) def layoutItems(self, rect, numColumns): """ Calculate the geometries of the layout items for a layout with numColumns columns and a given rectangle. """ itemGeometries = [] if numColumns == 0 or self.isEmpty(): return itemGeometries numRows = int(self.itemCount() / numColumns) if numColumns % self.itemCount(): numRows += 1 if numRows == 0: return itemGeometries rowHeight = [0] * numRows colWidth = [0] * numColumns self.layoutGrid(numColumns, rowHeight, colWidth) expandH = self.expandingDirections() == Qt.Horizontal expandV = self.expandingDirections() == Qt.Vertical if expandH or expandV: self.stretchGrid(rect, numColumns, rowHeight, colWidth) maxColumns = self.__data.maxColumns self.__data.maxColumns = numColumns alignedRect = self.alignmentRect(rect) self.__data.maxColumns = maxColumns xOffset = 0 if expandH else alignedRect.x() yOffset = 0 if expandV else alignedRect.y() colX = [0] * numColumns rowY = [0] * numRows xySpace = self.spacing() margins = self.contentsMargins() rowY[0] = yOffset + margins.bottom() for r in range(1, numRows): rowY[r] = rowY[r - 1] + rowHeight[r - 1] + xySpace colX[0] = xOffset + margins.left() for c in range(1, numColumns): colX[c] = colX[c - 1] + colWidth[c - 1] + xySpace itemCount = len(self.__data.itemList) for i in range(itemCount): row = int(i / numColumns) col = i % numColumns itemGeometry = QRect(colX[col], rowY[row], colWidth[col], rowHeight[row]) itemGeometries.append(itemGeometry) return itemGeometries def layoutGrid(self, numColumns, rowHeight, colWidth): """ Calculate the dimensions for the columns and rows for a grid of numColumns columns. """ if numColumns <= 0: return if self.__data.isDirty: self.__data.updateLayoutCache() for index in range(len(self.__data.itemSizeHints)): row = int(index / numColumns) col = index % numColumns size = self.__data.itemSizeHints[index] if col == 0: rowHeight[row] = size.height() else: rowHeight[row] = max([rowHeight[row], size.height()]) if row == 0: colWidth[col] = size.width() else: colWidth[col] = max([colWidth[col], size.width()]) def hasHeightForWidth(self): """Return true: QwtDynGridLayout implements heightForWidth().""" return True def heightForWidth(self, width): """Return The preferred height for this layout, given a width.""" if self.isEmpty(): return 0 numColumns = self.columnsForWidth(width) numRows = int(self.itemCount() / numColumns) if self.itemCount() % numColumns: numRows += 1 rowHeight = [0] * numRows colWidth = [0] * numColumns self.layoutGrid(numColumns, rowHeight, colWidth) margins = self.contentsMargins() margin_h = margins.top() + margins.bottom() return margin_h + (numRows - 1) * self.spacing() + sum(rowHeight) def stretchGrid(self, rect, numColumns, rowHeight, colWidth): """ Stretch columns in case of expanding() & QSizePolicy::Horizontal and rows in case of expanding() & QSizePolicy::Vertical to fill the entire rect. Rows and columns are stretched with the same factor. """ if numColumns == 0 or self.isEmpty(): return expandH = self.expandingDirections() & Qt.Horizontal expandV = self.expandingDirections() & Qt.Vertical mleft, mtop, mright, mbottom = self.getContentsMargins() if expandH: xDelta = rect.width() - (mleft + mright) - (numColumns - 1) * self.spacing() for col in range(numColumns): xDelta -= colWidth[col] if xDelta > 0: for col in range(numColumns): space = xDelta // (numColumns - col) colWidth[col] += space xDelta -= space if expandV: numRows = self.itemCount() / numColumns if self.itemCount() % numColumns: numRows += 1 yDelta = rect.height() - (mtop + mbottom) - (numRows - 1) * self.spacing() for row in range(numRows): yDelta -= rowHeight[row] if yDelta > 0: for row in range(numRows): space = yDelta // (numRows - row) rowHeight[row] += space yDelta -= space def sizeHint(self): """ Return the size hint. If maxColumns() > 0 it is the size for a grid with maxColumns() columns, otherwise it is the size for a grid with only one row. """ if self.isEmpty(): return QSize() numColumns = self.itemCount() if self.__data.maxColumns > 0: numColumns = min([self.__data.maxColumns, numColumns]) numRows = int(self.itemCount() / numColumns) if self.itemCount() % numColumns: numRows += 1 rowHeight = [0] * numRows colWidth = [0] * numColumns self.layoutGrid(numColumns, rowHeight, colWidth) margins = self.contentsMargins() margin_h = margins.top() + margins.bottom() margin_w = margins.left() + margins.right() h = margin_h + (numRows - 1) * self.spacing() + sum(rowHeight) w = margin_w + (numColumns - 1) * self.spacing() + sum(colWidth) return QSize(w, h) def numRows(self): """Return Number of rows of the current layout.""" return self.__data.numRows def numColumns(self): """Return Number of columns of the current layout.""" return self.__data.numColumns ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641633818.0 PythonQwt-0.10.2/qwt/graphic.py0000666000000000000000000006743600000000000013264 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtGraphic ---------- .. autoclass:: QwtGraphic :members: """ import math from qwt.null_paintdevice import QwtNullPaintDevice from qwt.painter_command import QwtPainterCommand from qtpy.QtGui import ( QPainter, QPainterPathStroker, QPaintEngine, QPixmap, QTransform, QImage, ) from qtpy.QtCore import Qt, QRectF, QSizeF, QSize, QPointF, QRect def qwtHasScalablePen(painter): pen = painter.pen() scalablePen = False if pen.style() != Qt.NoPen and pen.brush().style() != Qt.NoBrush: scalablePen = not pen.isCosmetic() if not scalablePen and pen.widthF() == 0.0: hints = painter.renderHints() if hints & QPainter.NonCosmeticDefaultPen: scalablePen = True return scalablePen def qwtStrokedPathRect(painter, path): stroker = QPainterPathStroker() stroker.setWidth(painter.pen().widthF()) stroker.setCapStyle(painter.pen().capStyle()) stroker.setJoinStyle(painter.pen().joinStyle()) stroker.setMiterLimit(painter.pen().miterLimit()) rect = QRectF() if qwtHasScalablePen(painter): stroke = stroker.createStroke(path) rect = painter.transform().map(stroke).boundingRect() else: mappedPath = painter.transform().map(path) mappedPath = stroker.createStroke(mappedPath) rect = mappedPath.boundingRect() return rect def qwtExecCommand(painter, cmd, renderHints, transform, initialTransform): if cmd.type() == QwtPainterCommand.Path: doMap = False if ( bool(renderHints & QwtGraphic.RenderPensUnscaled) and painter.transform().isScaling() ): isCosmetic = painter.pen().isCosmetic() if isCosmetic and painter.pen().widthF() == 0.0: hints = painter.renderHints() if hints & QPainter.NonCosmeticDefaultPen: isCosmetic = False doMap = not isCosmetic if doMap: tr = painter.transform() painter.resetTransform() path = tr.map(cmd.path()) if initialTransform: painter.setTransform(initialTransform) invt, _ok = initialTransform.inverted() path = invt.map(path) painter.drawPath(path) painter.setTransform(tr) else: painter.drawPath(cmd.path()) elif cmd.type() == QwtPainterCommand.Pixmap: data = cmd.pixmapData() painter.drawPixmap(data.rect, data.pixmap, data.subRect) elif cmd.type() == QwtPainterCommand.Image: data = cmd.imageData() painter.drawImage(data.rect, data.image, data.subRect, data.flags) elif cmd.type() == QwtPainterCommand.State: data = cmd.stateData() if data.flags & QPaintEngine.DirtyPen: painter.setPen(data.pen) if data.flags & QPaintEngine.DirtyBrush: painter.setBrush(data.brush) if data.flags & QPaintEngine.DirtyBrushOrigin: painter.setBrushOrigin(data.brushOrigin) if data.flags & QPaintEngine.DirtyFont: painter.setFont(data.font) if data.flags & QPaintEngine.DirtyBackground: painter.setBackgroundMode(data.backgroundMode) painter.setBackground(data.backgroundBrush) if data.flags & QPaintEngine.DirtyTransform: painter.setTransform(data.transform) if data.flags & QPaintEngine.DirtyClipEnabled: painter.setClipping(data.isClipEnabled) if data.flags & QPaintEngine.DirtyClipRegion: painter.setClipRegion(data.clipRegion, data.clipOperation) if data.flags & QPaintEngine.DirtyClipPath: painter.setClipPath(data.clipPath, data.clipOperation) if data.flags & QPaintEngine.DirtyHints: for hint in ( QPainter.Antialiasing, QPainter.TextAntialiasing, QPainter.SmoothPixmapTransform, ): painter.setRenderHint(hint, bool(data.renderHints & hint)) if data.flags & QPaintEngine.DirtyCompositionMode: painter.setCompositionMode(data.compositionMode) if data.flags & QPaintEngine.DirtyOpacity: painter.setOpacity(data.opacity) class PathInfo(object): def __init__(self, *args): if len(args) == 0: self.__scalablePen = False elif len(args) == 3: pointRect, boundingRect, scalablePen = args self.__pointRect = pointRect self.__boundingRect = boundingRect self.__scalablePen = scalablePen else: raise TypeError( "%s() takes 0 or 3 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def scaledBoundingRect(self, sx, sy, scalePens): if sx == 1.0 and sy == 1.0: return self.__boundingRect transform = QTransform() transform.scale(sx, sy) if scalePens and self.__scalablePen: rect = transform.mapRect(self.__boundingRect) else: rect = transform.mapRect(self.__pointRect) l = abs(self.__pointRect.left() - self.__boundingRect.left()) r = abs(self.__pointRect.right() - self.__boundingRect.right()) t = abs(self.__pointRect.top() - self.__boundingRect.top()) b = abs(self.__pointRect.bottom() - self.__boundingRect.bottom()) rect.adjust(-l, -t, r, b) return rect def scaleFactorX(self, pathRect, targetRect, scalePens): if pathRect.width() <= 0.0: return 0.0 p0 = self.__pointRect.center() l = abs(pathRect.left() - p0.x()) r = abs(pathRect.right() - p0.x()) w = 2.0 * min([l, r]) * targetRect.width() / pathRect.width() if scalePens and self.__scalablePen: sx = w / self.__boundingRect.width() else: pw = max( [ abs(self.__boundingRect.left() - self.__pointRect.left()), abs(self.__boundingRect.right() - self.__pointRect.right()), ] ) sx = (w - 2 * pw) / self.__pointRect.width() return sx def scaleFactorY(self, pathRect, targetRect, scalePens): if pathRect.height() <= 0.0: return 0.0 p0 = self.__pointRect.center() t = abs(pathRect.top() - p0.y()) b = abs(pathRect.bottom() - p0.y()) h = 2.0 * min([t, b]) * targetRect.height() / pathRect.height() if scalePens and self.__scalablePen: sy = h / self.__boundingRect.height() else: pw = max( [ abs(self.__boundingRect.top() - self.__pointRect.top()), abs(self.__boundingRect.bottom() - self.__pointRect.bottom()), ] ) sy = (h - 2 * pw) / self.__pointRect.height() return sy class QwtGraphic_PrivateData(object): def __init__(self): self.boundingRect = QRectF(0.0, 0.0, -1.0, -1.0) self.pointRect = QRectF(0.0, 0.0, -1.0, -1.0) self.initialTransform = None self.defaultSize = QSizeF() self.commands = [] self.pathInfos = [] self.renderHints = 0 class QwtGraphic(QwtNullPaintDevice): """ A paint device for scalable graphics `QwtGraphic` is the representation of a graphic that is tailored for scalability. Like `QPicture` it will be initialized by `QPainter` operations and can be replayed later to any target paint device. While the usual image representations `QImage` and `QPixmap` are not scalable `Qt` offers two paint devices, that might be candidates for representing a vector graphic: - `QPicture`: Unfortunately `QPicture` had been forgotten, when Qt4 introduced floating point based render engines. Its API is still on integers, what make it unusable for proper scaling. - `QSvgRenderer`, `QSvgGenerator`: Unfortunately `QSvgRenderer` hides to much information about its nodes in internal APIs, that are necessary for proper layout calculations. Also it is derived from `QObject` and can't be copied like `QImage`/`QPixmap`. `QwtGraphic` maps all scalable drawing primitives to a `QPainterPath` and stores them together with the painter state changes ( pen, brush, transformation ... ) in a list of `QwtPaintCommands`. For being a complete `QPaintDevice` it also stores pixmaps or images, what is somehow against the idea of the class, because these objects can't be scaled without a loss in quality. The main issue about scaling a `QwtGraphic` object are the pens used for drawing the outlines of the painter paths. While non cosmetic pens ( `QPen.isCosmetic()` ) are scaled with the same ratio as the path, cosmetic pens have a fixed width. A graphic might have paths with different pens - cosmetic and non-cosmetic. `QwtGraphic` caches 2 different rectangles: - control point rectangle: The control point rectangle is the bounding rectangle of all control point rectangles of the painter paths, or the target rectangle of the pixmaps/images. - bounding rectangle: The bounding rectangle extends the control point rectangle by what is needed for rendering the outline with an unscaled pen. Because the offset for drawing the outline depends on the shape of the painter path ( the peak of a triangle is different than the flat side ) scaling with a fixed aspect ratio always needs to be calculated from the control point rectangle. .. py:class:: QwtGraphic() Initializes a null graphic .. py:class:: QwtGraphic(other) :noindex: Copy constructor :param qwt.graphic.QwtGraphic other: Source """ # enum RenderHint RenderPensUnscaled = 0x1 def __init__(self, *args): QwtNullPaintDevice.__init__(self) if len(args) == 0: self.setMode(QwtNullPaintDevice.PathMode) self.__data = QwtGraphic_PrivateData() elif len(args) == 1: (other,) = args self.setMode(other.mode()) self.__data = other.__data else: raise TypeError( "%s() takes 0 or 1 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def reset(self): """Clear all stored commands""" self.__data.commands = [] self.__data.pathInfos = [] self.__data.boundingRect = QRectF(0.0, 0.0, -1.0, -1.0) self.__data.pointRect = QRectF(0.0, 0.0, -1.0, -1.0) self.__data.defaultSize = QSizeF() def isNull(self): """Return True, when no painter commands have been stored""" return len(self.__data.commands) == 0 def isEmpty(self): """Return True, when the bounding rectangle is empty""" return self.__data.boundingRect.isEmpty() def setRenderHint(self, hint, on=True): """Toggle an render hint""" if on: self.__data.renderHints |= hint else: self.__data.renderHints &= ~hint def testRenderHint(self, hint): """Test a render hint""" return bool(self.__data.renderHints & hint) def boundingRect(self): """ The bounding rectangle is the :py:meth:`controlPointRect` extended by the areas needed for rendering the outlines with unscaled pens. :return: Bounding rectangle of the graphic .. seealso:: :py:meth:`controlPointRect`, :py:meth:`scaledBoundingRect` """ if self.__data.boundingRect.width() < 0: return QRectF() return self.__data.boundingRect def controlPointRect(self): """ The control point rectangle is the bounding rectangle of all control points of the paths and the target rectangles of the images/pixmaps. :return: Control point rectangle .. seealso:: :py:meth:`boundingRect()`, :py:meth:`scaledBoundingRect()` """ if self.__data.pointRect.width() < 0: return QRectF() return self.__data.pointRect def scaledBoundingRect(self, sx, sy): """ Calculate the target rectangle for scaling the graphic :param float sx: Horizontal scaling factor :param float sy: Vertical scaling factor :return: Scaled bounding rectangle .. note:: In case of paths that are painted with a cosmetic pen (see :py:meth:`QPen.isCosmetic()`) the target rectangle is different to multiplying the bounding rectangle. .. seealso:: :py:meth:`boundingRect()`, :py:meth:`controlPointRect()` """ if sx == 1.0 and sy == 1.0: return self.__data.boundingRect transform = QTransform() transform.scale(sx, sy) rect = transform.mapRect(self.__data.pointRect) for pathInfo in self.__data.pathInfos: rect |= pathInfo.scaledBoundingRect( sx, sy, not bool(self.__data.renderHints & self.RenderPensUnscaled) ) return rect def sizeMetrics(self): """Return Ceiled :py:meth:`defaultSize()`""" sz = self.defaultSize() return QSize(math.ceil(sz.width()), math.ceil(sz.height())) def setDefaultSize(self, size): """ The default size is used in all methods rendering the graphic, where no size is explicitly specified. Assigning an empty size means, that the default size will be calculated from the bounding rectangle. :param QSizeF size: Default size .. seealso:: :py:meth:`defaultSize()`, :py:meth:`boundingRect()` """ w = max([0.0, size.width()]) h = max([0.0, size.height()]) self.__data.defaultSize = QSizeF(w, h) def defaultSize(self): """ When a non empty size has been assigned by setDefaultSize() this size will be returned. Otherwise the default size is the size of the bounding rectangle. The default size is used in all methods rendering the graphic, where no size is explicitly specified. :return: Default size .. seealso:: :py:meth:`setDefaultSize()`, :py:meth:`boundingRect()` """ if not self.__data.defaultSize.isEmpty(): return self.__data.defaultSize return self.boundingRect().size() def render(self, *args): """ .. py:method:: render(painter) :noindex: Replay all recorded painter commands :param QPainter painter: Qt painter .. py:method:: render(painter, size, aspectRatioMode) :noindex: Replay all recorded painter commands The graphic is scaled to fit into the rectangle of the given size starting at ( 0, 0 ). :param QPainter painter: Qt painter :param QSizeF size: Size for the scaled graphic :param Qt.AspectRatioMode aspectRatioMode: Mode how to scale .. py:method:: render(painter, rect, aspectRatioMode) :noindex: Replay all recorded painter commands The graphic is scaled to fit into the given rectangle :param QPainter painter: Qt painter :param QRectF rect: Rectangle for the scaled graphic :param Qt.AspectRatioMode aspectRatioMode: Mode how to scale .. py:method:: render(painter, pos, aspectRatioMode) :noindex: Replay all recorded painter commands The graphic is scaled to the :py:meth:`defaultSize()` and aligned to a position. :param QPainter painter: Qt painter :param QPointF pos: Reference point, where to render :param Qt.AspectRatioMode aspectRatioMode: Mode how to scale """ if len(args) == 1: (painter,) = args if self.isNull(): return transform = painter.transform() painter.save() for command in self.__data.commands: qwtExecCommand( painter, command, self.__data.renderHints, transform, self.__data.initialTransform, ) painter.restore() elif len(args) in (2, 3) and isinstance(args[1], QSizeF): painter, size = args[:2] aspectRatioMode = Qt.IgnoreAspectRatio if len(args) == 3: aspectRatioMode = args[-1] r = QRectF(0.0, 0.0, size.width(), size.height()) self.render(painter, r, aspectRatioMode) elif len(args) in (2, 3) and isinstance(args[1], QRectF): painter, rect = args[:2] aspectRatioMode = Qt.IgnoreAspectRatio if len(args) == 3: aspectRatioMode = args[-1] if self.isEmpty() or rect.isEmpty(): return sx = 1.0 sy = 1.0 if self.__data.pointRect.width() > 0.0: sx = rect.width() / self.__data.pointRect.width() if self.__data.pointRect.height() > 0.0: sy = rect.height() / self.__data.pointRect.height() scalePens = not bool(self.__data.renderHints & self.RenderPensUnscaled) for info in self.__data.pathInfos: ssx = info.scaleFactorX(self.__data.pointRect, rect, scalePens) if ssx > 0.0: sx = min([sx, ssx]) ssy = info.scaleFactorY(self.__data.pointRect, rect, scalePens) if ssy > 0.0: sy = min([sy, ssy]) if aspectRatioMode == Qt.KeepAspectRatio: s = min([sx, sy]) sx = s sy = s elif aspectRatioMode == Qt.KeepAspectRatioByExpanding: s = max([sx, sy]) sx = s sy = s tr = QTransform() tr.translate( rect.center().x() - 0.5 * sx * self.__data.pointRect.width(), rect.center().y() - 0.5 * sy * self.__data.pointRect.height(), ) tr.scale(sx, sy) tr.translate(-self.__data.pointRect.x(), -self.__data.pointRect.y()) transform = painter.transform() if not scalePens and transform.isScaling(): # we don't want to scale pens according to sx/sy, # but we want to apply the scaling from the # painter transformation later self.__data.initialTransform = QTransform() self.__data.initialTransform.scale(transform.m11(), transform.m22()) painter.setTransform(tr, True) self.render(painter) painter.setTransform(transform) self.__data.initialTransform = None elif len(args) in (2, 3) and isinstance(args[1], QPointF): painter, pos = args[:2] alignment = Qt.AlignTop | Qt.AlignLeft if len(args) == 3: alignment = args[-1] r = QRectF(pos, self.defaultSize()) if alignment & Qt.AlignLeft: r.moveLeft(pos.x()) elif alignment & Qt.AlignHCenter: r.moveCenter(QPointF(pos.x(), r.center().y())) elif alignment & Qt.AlignRight: r.moveRight(pos.x()) if alignment & Qt.AlignTop: r.moveTop(pos.y()) elif alignment & Qt.AlignVCenter: r.moveCenter(QPointF(r.center().x(), pos.y())) elif alignment & Qt.AlignBottom: r.moveBottom(pos.y()) self.render(painter, r) else: raise TypeError( "%s().render() takes 1, 2 or 3 argument(s) (%s " "given)" % (self.__class__.__name__, len(args)) ) def toPixmap(self, *args): """ Convert the graphic to a `QPixmap` All pixels of the pixmap get initialized by `Qt.transparent` before the graphic is scaled and rendered on it. The size of the pixmap is the default size ( ceiled to integers ) of the graphic. :return: The graphic as pixmap in default size .. seealso:: :py:meth:`defaultSize()`, :py:meth:`toImage()`, :py:meth:`render()` """ if len(args) == 0: if self.isNull(): return QPixmap() sz = self.defaultSize() w = math.ceil(sz.width()) h = math.ceil(sz.height()) pixmap = QPixmap(w, h) pixmap.fill(Qt.transparent) r = QRectF(0.0, 0.0, sz.width(), sz.height()) painter = QPainter(pixmap) self.render(painter, r, Qt.KeepAspectRatio) painter.end() return pixmap elif len(args) in (1, 2): size = args[0] aspectRatioMode = Qt.IgnoreAspectRatio if len(args) == 2: aspectRatioMode = args[-1] pixmap = QPixmap(size) pixmap.fill(Qt.transparent) r = QRect(0, 0, size.width(), size.height()) painter = QPainter(pixmap) self.render(painter, r, aspectRatioMode) painter.end() return pixmap def toImage(self, *args): """ .. py:method:: toImage() :noindex: Convert the graphic to a `QImage` All pixels of the image get initialized by 0 ( transparent ) before the graphic is scaled and rendered on it. The format of the image is `QImage.Format_ARGB32_Premultiplied`. The size of the image is the default size ( ceiled to integers ) of the graphic. :return: The graphic as image in default size .. py:method:: toImage(size, [aspectRatioMode=Qt.IgnoreAspectRatio]) :noindex: Convert the graphic to a `QImage` All pixels of the image get initialized by 0 ( transparent ) before the graphic is scaled and rendered on it. The format of the image is `QImage.Format_ARGB32_Premultiplied`. :param QSize size: Size of the image :param `Qt.AspectRatioMode` aspectRatioMode: Aspect ratio how to scale the graphic :return: The graphic as image .. seealso:: :py:meth:`toPixmap()`, :py:meth:`render()` """ if len(args) == 0: if self.isNull(): return QImage() sz = self.defaultSize() w = math.ceil(sz.width()) h = math.ceil(sz.height()) image = QImage(w, h, QImage.Format_ARGB32) image.fill(0) r = QRect(0, 0, sz.width(), sz.height()) painter = QPainter(image) self.render(painter, r, Qt.KeepAspectRatio) painter.end() return image elif len(args) in (1, 2): size = args[0] aspectRatioMode = Qt.IgnoreAspectRatio if len(args) == 2: aspectRatioMode = args[-1] image = QImage(size, QImage.Format_ARGB32_Premultiplied) image.fill(0) r = QRect(0, 0, size.width(), size.height()) painter = QPainter(image) self.render(painter, r, aspectRatioMode) return image def drawPath(self, path): """ Store a path command in the command list :param QPainterPath path: Painter path .. seealso:: :py:meth:`QPaintEngine.drawPath()` """ painter = self.paintEngine().painter() if painter is None: return self.__data.commands += [QwtPainterCommand(path)] if not path.isEmpty(): scaledPath = painter.transform().map(path) pointRect = scaledPath.boundingRect() boundingRect = QRectF(pointRect) if ( painter.pen().style() != Qt.NoPen and painter.pen().brush().style() != Qt.NoBrush ): boundingRect = qwtStrokedPathRect(painter, path) self.updateControlPointRect(pointRect) self.updateBoundingRect(boundingRect) self.__data.pathInfos += [ PathInfo(pointRect, boundingRect, qwtHasScalablePen(painter)) ] def drawPixmap(self, rect, pixmap, subRect): """ Store a pixmap command in the command list :param QRectF rect: target rectangle :param QPixmap pixmap: Pixmap to be painted :param QRectF subRect: Reactangle of the pixmap to be painted .. seealso:: :py:meth:`QPaintEngine.drawPixmap()` """ painter = self.paintEngine().painter() if painter is None: return self.__data.commands += [QwtPainterCommand(rect, pixmap, subRect)] r = painter.transform().mapRect(rect) self.updateControlPointRect(r) self.updateBoundingRect(r) def drawImage(self, rect, image, subRect, flags): """ Store a image command in the command list :param QRectF rect: target rectangle :param QImage image: Pixmap to be painted :param QRectF subRect: Reactangle of the pixmap to be painted :param Qt.ImageConversionFlags flags: Pixmap to be painted .. seealso:: :py:meth:`QPaintEngine.drawImage()` """ painter = self.paintEngine().painter() if painter is None: return self.__data.commands += [QwtPainterCommand(rect, image, subRect, flags)] r = painter.transform().mapRect(rect) self.updateControlPointRect(r) self.updateBoundingRect(r) def updateState(self, state): """ Store a state command in the command list :param QPaintEngineState state: State to be stored .. seealso:: :py:meth:`QPaintEngine.updateState()` """ # XXX: shall we call the parent's implementation of updateState? self.__data.commands += [QwtPainterCommand(state)] def updateBoundingRect(self, rect): br = QRectF(rect) painter = self.paintEngine().painter() if painter and painter.hasClipping(): cr = painter.clipRegion().boundingRect() cr = painter.transform().mapRect(cr) br &= cr if self.__data.boundingRect.width() < 0: self.__data.boundingRect = br else: self.__data.boundingRect |= br def updateControlPointRect(self, rect): if self.__data.pointRect.width() < 0.0: self.__data.pointRect = rect else: self.__data.pointRect |= rect def commands(self): return self.__data.commands def setCommands(self, commands): self.reset() painter = QPainter(self) for cmd in commands: qwtExecCommand(painter, cmd, 0, QTransform(), None) painter.end() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091904.0 PythonQwt-0.10.2/qwt/interval.py0000666000000000000000000002777700000000000013477 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtInterval ----------- .. autoclass:: QwtInterval :members: """ class QwtInterval(object): """ A class representing an interval The interval is represented by 2 doubles, the lower and the upper limit. .. py:class:: QwtInterval(minValue=0., maxValue=-1., borderFlags=None) Build an interval with from min/max values :param float minValue: Minimum value :param float maxValue: Maximum value :param int borderFlags: Include/Exclude borders """ # enum BorderFlag IncludeBorders = 0x00 ExcludeMinimum = 0x01 ExcludeMaximum = 0x02 ExcludeBorders = ExcludeMinimum | ExcludeMaximum def __init__(self, minValue=0.0, maxValue=-1.0, borderFlags=None): assert not isinstance(minValue, QwtInterval) assert not isinstance(maxValue, QwtInterval) self.__minValue = None self.__maxValue = None self.__borderFlags = None self.setInterval(minValue, maxValue, borderFlags) def setInterval(self, minValue, maxValue, borderFlags=None): """ Assign the limits of the interval :param float minValue: Minimum value :param float maxValue: Maximum value :param int borderFlags: Include/Exclude borders """ self.__minValue = float(minValue) # avoid overflows with NumPy scalars self.__maxValue = float(maxValue) # avoid overflows with NumPy scalars if borderFlags is None: self.__borderFlags = self.IncludeBorders else: self.__borderFlags = borderFlags def setBorderFlags(self, borderFlags): """ Change the border flags :param int borderFlags: Include/Exclude borders .. seealso:: :py:meth:`borderFlags()` """ self.__borderFlags = borderFlags def borderFlags(self): """ :return: Border flags .. seealso:: :py:meth:`setBorderFlags()` """ return self.__borderFlags def setMinValue(self, minValue): """ Assign the lower limit of the interval :param float minValue: Minimum value """ self.__minValue = float(minValue) # avoid overflows with NumPy scalars def setMaxValue(self, maxValue): """ Assign the upper limit of the interval :param float maxValue: Maximum value """ self.__maxValue = float(maxValue) # avoid overflows with NumPy scalars def minValue(self): """ :return: Lower limit of the interval """ return self.__minValue def maxValue(self): """ :return: Upper limit of the interval """ return self.__maxValue def isValid(self): """ A interval is valid when minValue() <= maxValue(). In case of `QwtInterval.ExcludeBorders` it is true when minValue() < maxValue() :return: True, when the interval is valid """ if (self.__borderFlags & self.ExcludeBorders) == 0: return self.__minValue <= self.__maxValue else: return self.__minValue < self.__maxValue def width(self): """ The width of invalid intervals is 0.0, otherwise the result is maxValue() - minValue(). :return: the width of an interval """ if self.isValid(): return self.__maxValue - self.__minValue else: return 0.0 def __and__(self, other): return self.intersect(other) def __iand__(self, other): self = self & other return self def __or__(self, other): if isinstance(other, QwtInterval): return self.unite(other) else: return self.extend(other) def __ior__(self, other): self = self | other return self def __eq__(self, other): return ( self.__minValue == other.__minValue and self.__maxValue == other.__maxValue and self.__borderFlags == other.__borderFlags ) def __ne__(self, other): return not self.__eq__(other) def isNull(self): """ :return: true, if isValid() && (minValue() >= maxValue()) """ return self.isValid() and self.__minValue >= self.__maxValue def invalidate(self): """ The limits are set to interval [0.0, -1.0] .. seealso:: :py:meth:`isValid()` """ self.__minValue = 0.0 self.__maxValue = -1.0 def normalized(self): """ Normalize the limits of the interval If maxValue() < minValue() the limits will be inverted. :return: Normalized interval .. seealso:: :py:meth:`isValid()`, :py:meth:`inverted()` """ if self.__minValue > self.__maxValue: return self.inverted() elif ( self.__minValue == self.__maxValue and self.__borderFlags == self.ExcludeMinimum ): return self.inverted() else: return self def inverted(self): """ Invert the limits of the interval :return: Inverted interval .. seealso:: :py:meth:`normalized()` """ borderFlags = self.IncludeBorders if self.__borderFlags & self.ExcludeMinimum: borderFlags |= self.ExcludeMaximum if self.__borderFlags & self.ExcludeMaximum: borderFlags |= self.ExcludeMinimum return QwtInterval(self.__maxValue, self.__minValue, borderFlags) def contains(self, value): """ Test if a value is inside an interval :param float value: Value :return: true, if value >= minValue() && value <= maxValue() """ if not self.isValid(): return False elif value < self.__minValue or value > self.__maxValue: return False elif value == self.__minValue and self.__borderFlags & self.ExcludeMinimum: return False elif value == self.__maxValue and self.__borderFlags & self.ExcludeMaximum: return False else: return True def unite(self, other): """ Unite two intervals :param qwt.interval.QwtInterval other: other interval to united with :return: united interval """ if not self.isValid(): if not other.isValid(): return QwtInterval() else: return other elif not other.isValid(): return self united = QwtInterval() flags = self.IncludeBorders # minimum if self.__minValue < other.minValue(): united.setMinValue(self.__minValue) flags &= self.__borderFlags & self.ExcludeMinimum elif other.minValue() < self.__minValue: united.setMinValue(other.minValue()) flags &= other.borderFlags() & self.ExcludeMinimum else: united.setMinValue(self.__minValue) flags &= (self.__borderFlags & other.borderFlags()) & self.ExcludeMinimum # maximum if self.__maxValue > other.maxValue(): united.setMaxValue(self.__maxValue) flags &= self.__borderFlags & self.ExcludeMaximum elif other.maxValue() > self.__maxValue: united.setMaxValue(other.maxValue()) flags &= other.borderFlags() & self.ExcludeMaximum else: united.setMaxValue(self.__maxValue) flags &= self.__borderFlags & other.borderFlags() & self.ExcludeMaximum united.setBorderFlags(flags) return united def intersect(self, other): """ Intersect two intervals :param qwt.interval.QwtInterval other: other interval to intersect with :return: intersected interval """ if not other.isValid() or not self.isValid(): return QwtInterval() i1 = self i2 = other if i1.minValue() > i2.minValue(): i1, i2 = i2, i1 elif i1.minValue() == i2.minValue(): if i1.borderFlags() & self.ExcludeMinimum: i1, i2 = i2, i1 if i1.maxValue() < i2.maxValue(): return QwtInterval() if i1.maxValue() == i2.minValue(): if ( i1.borderFlags() & self.ExcludeMaximum or i2.borderFlags() & self.ExcludeMinimum ): return QwtInterval() intersected = QwtInterval() flags = self.IncludeBorders intersected.setMinValue(i2.minValue()) flags |= i2.borderFlags() & self.ExcludeMinimum if i1.maxValue() < i2.maxValue(): intersected.setMaxValue(i1.maxValue()) flags |= i1.borderFlags() & self.ExcludeMaximum elif i2.maxValue() < i1.maxValue(): intersected.setMaxValue(i2.maxValue()) flags |= i2.borderFlags() & self.ExcludeMaximum else: # i1.maxValue() == i2.maxValue() intersected.setMaxValue(i1.maxValue()) flags |= i1.borderFlags() & i2.borderFlags() & self.ExcludeMaximum intersected.setBorderFlags(flags) return intersected def intersects(self, other): """ Test if two intervals overlap :param qwt.interval.QwtInterval other: other interval :return: True, when the intervals are intersecting """ if not other.isValid() or not self.isValid(): return False i1 = self i2 = other if i1.minValue() > i2.minValue(): i1, i2 = i2, i1 elif i1.minValue() == i2.minValue() and i1.borderFlags() & self.ExcludeMinimum: i1, i2 = i2, i1 if i1.maxValue() > i2.minValue(): return True elif i1.maxValue() == i2.minValue(): return ( i1.borderFlags() & self.ExcludeMaximum and i2.borderFlags() & self.ExcludeMinimum ) return False def symmetrize(self, value): """ Adjust the limit that is closer to value, so that value becomes the center of the interval. :param float value: Center :return: Interval with value as center """ if not self.isValid(): return self delta = max([abs(value - self.__maxValue), abs(value - self.__minValue)]) return QwtInterval(value - delta, value + delta) def limited(self, lowerBound, upperBound): """ Limit the interval, keeping the border modes :param float lowerBound: Lower limit :param float upperBound: Upper limit :return: Limited interval """ if not self.isValid() or lowerBound > upperBound: return QwtInterval() minValue = max([self.__minValue, lowerBound]) minValue = min([minValue, upperBound]) maxValue = max([self.__maxValue, lowerBound]) maxValue = min([maxValue, upperBound]) return QwtInterval(minValue, maxValue, self.__borderFlags) def extend(self, value): """ Extend the interval If value is below minValue(), value becomes the lower limit. If value is above maxValue(), value becomes the upper limit. extend() has no effect for invalid intervals :param float value: Value :return: extended interval """ if not self.isValid(): return self return QwtInterval(min([value, self.__minValue]), max([value, self.__maxValue])) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641654972.0 PythonQwt-0.10.2/qwt/legend.py0000666000000000000000000007455200000000000013102 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtLegend --------- .. autoclass:: QwtLegendData :members: .. autoclass:: QwtLegendLabel :members: .. autoclass:: QwtLegend :members: """ import math from qtpy.QtWidgets import ( QFrame, QScrollArea, QWidget, QVBoxLayout, QApplication, QStyleOption, QStyle, # qDrawWinButton, ) from qtpy.QtGui import QPalette, QPixmap, QPainter from qtpy.QtCore import Signal, QEvent, QSize, Qt, QRect, QRectF, QPoint from qwt.text import QwtText, QwtTextLabel from qwt.dyngrid_layout import QwtDynGridLayout from qwt.painter import QwtPainter class QwtLegendData(object): """ Attributes of an entry on a legend `QwtLegendData` is an abstract container ( like `QAbstractModel` ) to exchange attributes, that are only known between to the plot item and the legend. By overloading `QwtPlotItem.legendData()` any other set of attributes could be used, that can be handled by a modified ( or completely different ) implementation of a legend. .. seealso:: :py:class:`qwt.legend.QwtLegend` .. note:: The stockchart example implements a legend as a tree with checkable items """ # enum Mode ReadOnly, Clickable, Checkable = list(range(3)) # enum Role ModeRole, TitleRole, IconRole = list(range(3)) UserRole = 32 def __init__(self): self.__map = {} def setValues(self, map_): """ Set the legend attributes :param dict map_: Values .. seealso:: :py:meth:`values()` """ self.__map = map_ def values(self): """ :return: Legend attributes .. seealso:: :py:meth:`setValues()` """ return self.__map def hasRole(self, role): """ :param int role: Attribute role :return: True, when the internal map has an entry for role """ return role in self.__map def setValue(self, role, data): """ Set an attribute value :param int role: Attribute role :param QVariant data: Attribute value .. seealso:: :py:meth:`value()` """ self.__map[role] = data def value(self, role): """ :param int role: Attribute role :return: Attribute value for a specific role .. seealso:: :py:meth:`setValue()` """ return self.__map.get(role) def isValid(self): """ :return: True, when the internal map is empty """ return len(self.__map) != 0 def title(self): """ :return: Value of the TitleRole attribute """ titleValue = self.value(QwtLegendData.TitleRole) if isinstance(titleValue, QwtText): text = titleValue else: text = QwtText(titleValue) return text def icon(self): """ :return: Value of the IconRole attribute """ return self.value(QwtLegendData.IconRole) def mode(self): """ :return: Value of the ModeRole attribute """ modeValue = self.value(QwtLegendData.ModeRole) if isinstance(modeValue, int): return modeValue return QwtLegendData.ReadOnly BUTTONFRAME = 2 MARGIN = 2 def buttonShift(w): option = QStyleOption() option.initFrom(w) ph = w.style().pixelMetric(QStyle.PM_ButtonShiftHorizontal, option, w) pv = w.style().pixelMetric(QStyle.PM_ButtonShiftVertical, option, w) return QSize(ph, pv) class QwtLegendLabel_PrivateData(object): def __init__(self): self.itemMode = QwtLegendData.ReadOnly self.isDown = False self.spacing = MARGIN self.legendData = QwtLegendData() self.icon = QPixmap() class QwtLegendLabel(QwtTextLabel): """A widget representing something on a QwtLegend.""" clicked = Signal() pressed = Signal() released = Signal() checked = Signal(bool) def __init__(self, parent=None): QwtTextLabel.__init__(self, parent) self.__data = QwtLegendLabel_PrivateData() self.setMargin(MARGIN) self.setIndent(MARGIN) def setData(self, legendData): """ Set the attributes of the legend label :param QwtLegendData legendData: Attributes of the label .. seealso:: :py:meth:`data()` """ self.__data.legendData = legendData doUpdate = self.updatesEnabled() self.setUpdatesEnabled(False) self.setText(legendData.title()) icon = legendData.icon() if icon is not None: self.setIcon(icon.toPixmap()) if legendData.hasRole(QwtLegendData.ModeRole): self.setItemMode(legendData.mode()) if doUpdate: self.setUpdatesEnabled(True) self.update() def data(self): """ :return: Attributes of the label .. seealso:: :py:meth:`setData()`, :py:meth:`qwt.plot.QwtPlotItem.legendData()` """ return self.__data.legendData def setText(self, text): """ Set the text to the legend item :param qwt.text.QwtText text: Text label .. seealso:: :py:meth:`text()` """ flags = Qt.AlignLeft | Qt.AlignVCenter | Qt.TextExpandTabs | Qt.TextWordWrap text.setRenderFlags(flags) QwtTextLabel.setText(self, text) def setItemMode(self, mode): """ Set the item mode. The default is `QwtLegendData.ReadOnly`. :param int mode: Item mode .. seealso:: :py:meth:`itemMode()` """ if mode != self.__data.itemMode: self.__data.itemMode = mode self.__data.isDown = False self.setFocusPolicy( Qt.TabFocus if mode != QwtLegendData.ReadOnly else Qt.NoFocus ) self.setMargin(BUTTONFRAME + MARGIN) self.updateGeometry() def itemMode(self): """ :return: Item mode .. seealso:: :py:meth:`setItemMode()` """ return self.__data.itemMode def setIcon(self, icon): """ Assign the icon :param QPixmap icon: Pixmap representing a plot item .. seealso:: :py:meth:`icon()`, :py:meth:`qwt.plot.QwtPlotItem.legendIcon()` """ self.__data.icon = icon indent = self.margin() + self.__data.spacing if icon.width() > 0: indent += icon.width() + self.__data.spacing self.setIndent(indent) def icon(self): """ :return: Pixmap representing a plot item .. seealso:: :py:meth:`setIcon()` """ return self.__data.icon def setSpacing(self, spacing): """ Change the spacing between icon and text :param int spacing: Spacing .. seealso:: :py:meth:`spacing()`, :py:meth:`qwt.text.QwtTextLabel.margin()` """ spacing = max([spacing, 0]) if spacing != self.__data.spacing: self.__data.spacing = spacing margin = max(self.getContentsMargins()) indent = margin + self.__data.spacing if self.__data.icon.width() > 0: indent += self.__data.icon.width() + self.__data.spacing self.setIndent(indent) def spacing(self): """ :return: Spacing between icon and text .. seealso:: :py:meth:`setSpacing()` """ return self.__data.spacing def setChecked(self, on): """ Check/Uncheck a the item :param bool on: check/uncheck .. seealso:: :py:meth:`isChecked()`, :py:meth:`setItemMode()` """ if self.__data.itemMode == QwtLegendData.Checkable: isBlocked = self.signalsBlocked() self.blockSignals(True) self.setDown(on) self.blockSignals(isBlocked) def isChecked(self): """ :return: true, if the item is checked .. seealso:: :py:meth:`setChecked()` """ return self.__data.itemMode == QwtLegendData.Checkable and self.isDown() def setDown(self, down): """ Set the item being down :param bool on: true, if the item is down .. seealso:: :py:meth:`isDown()` """ if down == self.__data.isDown: return self.__data.isDown = down self.update() if self.__data.itemMode == QwtLegendData.Clickable: if self.__data.isDown: self.pressed.emit() else: self.released.emit() self.clicked.emit() if self.__data.itemMode == QwtLegendData.Checkable: self.checked.emit(self.__data.isDown) def isDown(self): """ :return: true, if the item is down .. seealso:: :py:meth:`setDown()` """ return self.__data.isDown def sizeHint(self): """ :return: a size hint """ sz = QwtTextLabel.sizeHint(self) sz.setHeight(max([sz.height(), self.__data.icon.height() + 4])) if self.__data.itemMode != QwtLegendData.ReadOnly: sz += buttonShift(self) return sz def paintEvent(self, e): cr = self.contentsRect() painter = QPainter(self) painter.setClipRegion(e.region()) # if self.__data.isDown: # qDrawWinButton( # painter, 0, 0, self.width(), self.height(), self.palette(), True # ) painter.save() if self.__data.isDown: shiftSize = buttonShift(self) painter.translate(shiftSize.width(), shiftSize.height()) painter.setClipRect(cr) self.drawContents(painter) if not self.__data.icon.isNull(): iconRect = QRect(cr) iconRect.setX(iconRect.x() + self.margin()) if self.__data.itemMode != QwtLegendData.ReadOnly: iconRect.setX(iconRect.x() + BUTTONFRAME) iconRect.setSize(self.__data.icon.size()) iconRect.moveCenter(QPoint(iconRect.center().x(), cr.center().y())) painter.drawPixmap(iconRect, self.__data.icon) painter.restore() def mousePressEvent(self, e): if e.button() == Qt.LeftButton: if self.__data.itemMode == QwtLegendData.Clickable: self.setDown(True) return elif self.__data.itemMode == QwtLegendData.Checkable: self.setDown(not self.isDown()) return QwtTextLabel.mousePressEvent(self, e) def mouseReleaseEvent(self, e): if e.button() == Qt.LeftButton: if self.__data.itemMode == QwtLegendData.Clickable: self.setDown(False) return elif self.__data.itemMode == QwtLegendData.Checkable: return QwtTextLabel.mouseReleaseEvent(self, e) def keyPressEvent(self, e): if e.key() == Qt.Key_Space: if self.__data.itemMode == QwtLegendData.Clickable: if not e.isAutoRepeat(): self.setDown(True) return elif self.__data.itemMode == QwtLegendData.Checkable: if not e.isAutoRepeat(): self.setDown(not self.isDown()) return QwtTextLabel.keyPressEvent(self, e) def keyReleaseEvent(self, e): if e.key() == Qt.Key_Space: if self.__data.itemMode == QwtLegendData.Clickable: if not e.isAutoRepeat(): self.setDown(False) return elif self.__data.itemMode == QwtLegendData.Checkable: return QwtTextLabel.keyReleaseEvent(self, e) class QwtAbstractLegend(QFrame): def __init__(self, parent): QFrame.__init__(self, parent) def renderLegend(self, painter, rect, fillBackground): raise NotImplementedError def isEmpty(self): return 0 def scrollExtent(self, orientation): return 0 def updateLegend(self, itemInfo, data): raise NotImplementedError class Entry(object): def __init__(self): self.itemInfo = None self.widgets = [] class QwtLegendMap(object): def __init__(self): self.__entries = [] def isEmpty(self): return len(self.__entries) == 0 def insert(self, itemInfo, widgets): for entry in self.__entries: if entry.itemInfo == itemInfo: entry.widgets = widgets return newEntry = Entry() newEntry.itemInfo = itemInfo newEntry.widgets = widgets self.__entries += [newEntry] def remove(self, itemInfo): for entry in self.__entries[:]: if entry.itemInfo == itemInfo: self.__entries.remove(entry) return def removeWidget(self, widget): for entry in self.__entries: while widget in entry.widgets: entry.widgets.remove(widget) def itemInfo(self, widget): if widget is not None: for entry in self.__entries: if widget in entry.widgets: return entry.itemInfo def legendWidgets(self, itemInfo): if itemInfo is not None: for entry in self.__entries: if entry.itemInfo == itemInfo: return entry.widgets return [] class LegendView(QScrollArea): def __init__(self, parent): QScrollArea.__init__(self, parent) self.contentsWidget = QWidget(self) self.contentsWidget.setObjectName("QwtLegendViewContents") self.setWidget(self.contentsWidget) self.setWidgetResizable(False) self.viewport().setObjectName("QwtLegendViewport") self.contentsWidget.setAutoFillBackground(False) self.viewport().setAutoFillBackground(False) def event(self, event): if event.type() == QEvent.PolishRequest: self.setFocusPolicy(Qt.NoFocus) if event.type() == QEvent.Resize: cr = self.contentsRect() w = cr.width() h = self.contentsWidget.heightForWidth(cr.width()) if h > w: w -= self.verticalScrollBar().sizeHint().width() h = self.contentsWidget.heightForWidth(w) self.contentsWidget.resize(w, h) return QScrollArea.event(self, event) def viewportEvent(self, event): ok = QScrollArea.viewportEvent(self, event) if event.type() == QEvent.Resize: self.layoutContents() return ok def viewportSize(self, w, h): sbHeight = self.horizontalScrollBar().sizeHint().height() sbWidth = self.verticalScrollBar().sizeHint().width() cw = self.contentsRect().width() ch = self.contentsRect().height() vw = cw vh = ch if w > vw: vh -= sbHeight if h > vh: vw -= sbWidth if w > vw and vh == ch: vh -= sbHeight return QSize(vw, vh) def layoutContents(self): layout = self.contentsWidget.layout() if layout is None: return visibleSize = self.viewport().contentsRect().size() margins = layout.contentsMargins() margin_w = margins.left() + margins.right() minW = int(layout.maxItemWidth() + margin_w) w = max([visibleSize.width(), minW]) h = max([layout.heightForWidth(w), visibleSize.height()]) vpWidth = self.viewportSize(w, h).width() if w > vpWidth: w = max([vpWidth, minW]) h = max([layout.heightForWidth(w), visibleSize.height()]) self.contentsWidget.resize(w, h) class QwtLegend_PrivateData(object): def __init__(self): self.itemMode = QwtLegendData.ReadOnly self.view = QwtDynGridLayout() self.itemMap = QwtLegendMap() class QwtLegend(QwtAbstractLegend): """ The legend widget The QwtLegend widget is a tabular arrangement of legend items. Legend items might be any type of widget, but in general they will be a QwtLegendLabel. .. seealso :: :py:class`qwt.legend.QwtLegendLabel`, :py:class`qwt.plot.QwtPlotItem`, :py:class`qwt.plot.QwtPlot` .. py:class:: QwtLegend([parent=None]) Constructor :param QWidget parent: Parent widget .. py:data:: clicked A signal which is emitted when the user has clicked on a legend label, which is in `QwtLegendData.Clickable` mode. :param itemInfo: Info for the item item of the selected legend item :param index: Index of the legend label in the list of widgets that are associated with the plot item .. note:: Clicks are disabled as default .. py:data:: checked A signal which is emitted when the user has clicked on a legend label, which is in `QwtLegendData.Checkable` mode :param itemInfo: Info for the item of the selected legend label :param index: Index of the legend label in the list of widgets that are associated with the plot item :param on: True when the legend label is checked .. note:: Clicks are disabled as default """ clicked = Signal(object, int) checked = Signal(object, bool, int) def __init__(self, parent=None): QwtAbstractLegend.__init__(self, parent) self.setFrameStyle(QFrame.NoFrame) self.__data = QwtLegend_PrivateData() self.__data.view = LegendView(self) self.__data.view.setObjectName("QwtLegendView") self.__data.view.setFrameStyle(QFrame.NoFrame) gridLayout = QwtDynGridLayout(self.__data.view.contentsWidget) gridLayout.setAlignment(Qt.AlignHCenter | Qt.AlignTop) self.__data.view.gridLayout = gridLayout self.__data.view.contentsWidget.installEventFilter(self) layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.__data.view) def setMaxColumns(self, numColumns): """ Set the maximum number of entries in a row F.e when the maximum is set to 1 all items are aligned vertically. 0 means unlimited :param int numColumns: Maximum number of entries in a row .. seealso:: :py:meth:`maxColumns()`, :py:meth:`QwtDynGridLayout.setMaxColumns()` """ tl = self.__data.view.gridLayout if tl is not None: tl.setMaxColumns(numColumns) self.updateGeometry() def maxColumns(self): """ :return: Maximum number of entries in a row .. seealso:: :py:meth:`setMaxColumns()`, :py:meth:`QwtDynGridLayout.maxColumns()` """ tl = self.__data.view.gridLayout if tl is not None: return tl.maxColumns() return 0 def setDefaultItemMode(self, mode): """ Set the default mode for legend labels Legend labels will be constructed according to the attributes in a `QwtLegendData` object. When it doesn't contain a value for the `QwtLegendData.ModeRole` the label will be initialized with the default mode of the legend. :param int mode: Default item mode .. seealso:: :py:meth:`itemMode()`, :py:meth:`QwtLegendData.value()`, :py:meth:`QwtPlotItem::legendData()` ... note:: Changing the mode doesn't have any effect on existing labels. """ self.__data.itemMode = mode def defaultItemMode(self): """ :return: Default item mode .. seealso:: :py:meth:`setDefaultItemMode()` """ return self.__data.itemMode def contentsWidget(self): """ The contents widget is the only child of the viewport of the internal `QScrollArea` and the parent widget of all legend items. :return: Container widget of the legend items """ return self.__data.view.contentsWidget def horizontalScrollBar(self): """ :return: Horizontal scrollbar .. seealso:: :py:meth:`verticalScrollBar()` """ return self.__data.view.horizontalScrollBar() def verticalScrollBar(self): """ :return: Vertical scrollbar .. seealso:: :py:meth:`horizontalScrollBar()` """ return self.__data.view.verticalScrollBar() def updateLegend(self, itemInfo, data): """ Update the entries for an item :param QVariant itemInfo: Info for an item :param list data: Default item mode """ widgetList = self.legendWidgets(itemInfo) if len(widgetList) != len(data): contentsLayout = self.__data.view.gridLayout while len(widgetList) > len(data): w = widgetList.pop(-1) contentsLayout.removeWidget(w) w.hide() w.deleteLater() for i in range(len(widgetList), len(data)): widget = self.createWidget(data[i]) if contentsLayout is not None: contentsLayout.addWidget(widget) if self.isVisible(): widget.setVisible(True) widgetList.append(widget) if not widgetList: self.__data.itemMap.remove(itemInfo) else: self.__data.itemMap.insert(itemInfo, widgetList) self.updateTabOrder() for i in range(len(data)): self.updateWidget(widgetList[i], data[i]) def createWidget(self, data): """ Create a widget to be inserted into the legend The default implementation returns a `QwtLegendLabel`. :param QwtLegendData data: Attributes of the legend entry :return: Widget representing data on the legend ... note:: updateWidget() will called soon after createWidget() with the same attributes. """ label = QwtLegendLabel() label.setItemMode(self.defaultItemMode()) label.clicked.connect(lambda: self.itemClicked(label)) label.checked.connect(lambda state: self.itemChecked(state, label)) return label def updateWidget(self, widget, data): """ Update the widget :param QWidget widget: Usually a QwtLegendLabel :param QwtLegendData data: Attributes to be displayed .. seealso:: :py:meth:`createWidget()` ... note:: When widget is no QwtLegendLabel updateWidget() does nothing. """ label = widget # TODO: cast to QwtLegendLabel! if label is not None: label.setData(data) if data.value(QwtLegendData.ModeRole) is None: label.setItemMode(self.defaultItemMode()) def updateTabOrder(self): contentsLayout = self.__data.view.gridLayout if contentsLayout is not None: w = None for i in range(contentsLayout.count()): item = contentsLayout.itemAt(i) if w is not None and item.widget(): QWidget.setTabOrder(w, item.widget()) w = item.widget() def sizeHint(self): """Return a size hint""" hint = self.__data.view.contentsWidget.sizeHint() hint += QSize(2 * self.frameWidth(), 2 * self.frameWidth()) return hint def heightForWidth(self, width): """ :param int width: Width :return: The preferred height, for a width. """ width -= 2 * self.frameWidth() h = self.__data.view.contentsWidget.heightForWidth(width) if h >= 0: h += 2 * self.frameWidth() return h def eventFilter(self, object_, event): """ Handle QEvent.ChildRemoved andQEvent.LayoutRequest events for the contentsWidget(). :param QObject object: Object to be filtered :param QEvent event: Event :return: Forwarded to QwtAbstractLegend.eventFilter() """ if object_ is self.__data.view.contentsWidget: if event.type() == QEvent.ChildRemoved: ce = event # TODO: cast to QChildEvent if ce.child().isWidgetType(): w = ce.child() # TODO: cast to QWidget self.__data.itemMap.removeWidget(w) elif event.type() == QEvent.LayoutRequest: self.__data.view.layoutContents() if self.parentWidget() and self.parentWidget().layout() is None: QApplication.postEvent( self.parentWidget(), QEvent(QEvent.LayoutRequest) ) return QwtAbstractLegend.eventFilter(self, object_, event) def itemClicked(self, widget): # w = self.sender() #TODO: cast to QWidget w = widget if w is not None: itemInfo = self.__data.itemMap.itemInfo(w) if itemInfo is not None: widgetList = self.__data.itemMap.legendWidgets(itemInfo) if w in widgetList: index = widgetList.index(w) self.clicked.emit(itemInfo, index) def itemChecked(self, on, widget): # w = self.sender() #TODO: cast to QWidget w = widget if w is not None: itemInfo = self.__data.itemMap.itemInfo(w) if itemInfo is not None: widgetList = self.__data.itemMap.legendWidgets(itemInfo) if w in widgetList: index = widgetList.index(w) self.checked.emit(itemInfo, on, index) def renderLegend(self, painter, rect, fillBackground): """ Render the legend into a given rectangle. :param QPainter painter: Painter :param QRectF rect: Bounding rectangle :param bool fillBackground: When true, fill rect with the widget background """ if self.__data.itemMap.isEmpty(): return if fillBackground: if self.autoFillBackground() or self.testAttribute(Qt.WA_StyledBackground): QwtPainter.drawBackground(painter, rect, self) legendLayout = self.__data.view.contentsWidget.layout() if legendLayout is None: return left, right, top, bottom = self.layout().getContentsMargins() layoutRect = QRect() layoutRect.setLeft(math.ceil(rect.left()) + left) layoutRect.setTop(math.ceil(rect.top()) + top) layoutRect.setRight(math.ceil(rect.right()) - right) layoutRect.setBottom(math.ceil(rect.bottom()) - bottom) numCols = legendLayout.columnsForWidth(layoutRect.width()) itemRects = legendLayout.layoutItems(layoutRect, numCols) index = 0 for i in range(legendLayout.count()): item = legendLayout.itemAt(i) w = item.widget() if w is not None: painter.save() painter.setClipRect(itemRects[index], Qt.IntersectClip) self.renderItem(painter, w, itemRects[index], fillBackground) index += 1 painter.restore() def renderItem(self, painter, widget, rect, fillBackground): """ Render a legend entry into a given rectangle. :param QPainter painter: Painter :param QWidget widget: Widget representing a legend entry :param QRectF rect: Bounding rectangle :param bool fillBackground: When true, fill rect with the widget background """ if fillBackground: if widget.autoFillBackground() or widget.testAttribute( Qt.WA_StyledBackground ): QwtPainter.drawBackground(painter, rect, widget) label = widget # TODO: cast to QwtLegendLabel if label is not None: icon = label.data().icon() sz = icon.defaultSize() margin = max(label.getContentsMargins()) iconRect = QRectF( rect.x() + margin, rect.center().y() - 0.5 * sz.height(), sz.width(), sz.height(), ) icon.render(painter, iconRect, Qt.KeepAspectRatio) titleRect = QRectF(rect) titleRect.setX(iconRect.right() + 2 * label.spacing()) painter.setFont(label.font()) painter.setPen(label.palette().color(QPalette.Text)) label.drawText(painter, titleRect) # TODO: cast label to QwtLegendLabel def legendWidgets(self, itemInfo): """ List of widgets associated to a item :param QVariant itemInfo: Info about an item """ return self.__data.itemMap.legendWidgets(itemInfo) def legendWidget(self, itemInfo): """ First widget in the list of widgets associated to an item :param QVariant itemInfo: Info about an item """ list_ = self.__data.itemMap.legendWidgets(itemInfo) if list_: return list_[0] def itemInfo(self, widget): """ Find the item that is associated to a widget :param QWidget widget: Widget on the legend :return: Associated item info """ return self.__data.itemMap.itemInfo(widget) def isEmpty(self): return self.__data.itemMap.isEmpty() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/qwt/null_paintdevice.py0000666000000000000000000002166000000000000015161 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtNullPaintDevice ------------------ .. autoclass:: QwtNullPaintDevice :members: """ import os from qtpy.QtGui import QPaintEngine, QPainterPath, QPaintDevice QT_API = os.environ["QT_API"] class QwtNullPaintDevice_PrivateData(object): def __init__(self): self.mode = QwtNullPaintDevice.NormalMode class QwtNullPaintDevice_PaintEngine(QPaintEngine): def __init__(self, paintdevice): super(QwtNullPaintDevice_PaintEngine, self).__init__(QPaintEngine.AllFeatures) self.__paintdevice = paintdevice def begin(self, paintdevice): self.setActive(True) return True def end(self): self.setActive(False) return True def type(self): return QPaintEngine.User def drawRects(self, rects, rectCount=None): if rectCount is None: rectCount = len(rects) device = self.nullDevice() if device is None: return if device.mode() != QwtNullPaintDevice.NormalMode: try: QPaintEngine.drawRects(self, rects, rectCount) except TypeError: # PyQt <=4.9 QPaintEngine.drawRects(self, rects) return device.drawRects(rects, rectCount) def drawLines(self, lines, lineCount=None): if lineCount is None: lineCount = len(lines) device = self.nullDevice() if device is None: return if device.mode() != QwtNullPaintDevice.NormalMode and QT_API.startswith("pyqt"): try: QPaintEngine.drawLines(lines, lineCount) except TypeError: # PyQt <=4.9 QPaintEngine.drawLines(self, lines) return device.drawLines(lines, lineCount) def drawEllipse(self, rect): device = self.nullDevice() if device is None: return if device.mode() != QwtNullPaintDevice.NormalMode: QPaintEngine.drawEllipse(rect) return device.drawEllipse(rect) def drawPath(self, path): device = self.nullDevice() if device is None: return device.drawPath(path) def drawPoints(self, points, pointCount=None): if pointCount is None: pointCount = len(points) device = self.nullDevice() if device is None: return if device.mode() != QwtNullPaintDevice.NormalMode: try: QPaintEngine.drawPoints(points, pointCount) except TypeError: # PyQt <=4.9 QPaintEngine.drawPoints(self, points) return device.drawPoints(points, pointCount) def drawPolygon(self, *args): if len(args) == 3: points, pointCount, mode = args elif len(args) == 2: points, mode = args pointCount = len(points) else: raise TypeError("Unexpected arguments") device = self.nullDevice() if device is None: return if device.mode() == QwtNullPaintDevice.PathMode: path = QPainterPath() if pointCount > 0: path.moveTo(points[0]) for i in range(1, pointCount): path.lineTo(points[i]) if mode != QPaintEngine.PolylineMode: path.closeSubpath() device.drawPath(path) return device.drawPolygon(points, pointCount, mode) def drawPixmap(self, rect, pm, subRect): device = self.nullDevice() if device is None: return device.drawPixmap(rect, pm, subRect) def drawTextItem(self, pos, textItem): device = self.nullDevice() if device is None: return if device.mode() != QwtNullPaintDevice.NormalMode: QPaintEngine.drawTextItem(pos, textItem) return device.drawTextItem(pos, textItem) def drawTiledPixmap(self, rect, pixmap, subRect): device = self.nullDevice() if device is None: return if device.mode() != QwtNullPaintDevice.NormalMode: QPaintEngine.drawTiledPixmap(rect, pixmap, subRect) return device.drawTiledPixmap(rect, pixmap, subRect) def drawImage(self, rect, image, subRect, flags): device = self.nullDevice() if device is None: return device.drawImage(rect, image, subRect, flags) def updateState(self, state): device = self.nullDevice() if device is None: return device.updateState(state) def nullDevice(self): if not self.isActive(): return return self.__paintdevice class QwtNullPaintDevice(QPaintDevice): """ A null paint device doing nothing Sometimes important layout/rendering geometries are not available or changeable from the public Qt class interface. ( f.e hidden in the style implementation ). `QwtNullPaintDevice` can be used to manipulate or filter out this information by analyzing the stream of paint primitives. F.e. `QwtNullPaintDevice` is used by `QwtPlotCanvas` to identify styled backgrounds with rounded corners. Modes: * `NormalMode`: All vector graphic primitives are painted by the corresponding draw methods * `PolygonPathMode`: Vector graphic primitives ( beside polygons ) are mapped to a `QPainterPath` and are painted by `drawPath`. In `PolygonPathMode` mode only a few draw methods are called: - `drawPath()` - `drawPixmap()` - `drawImage()` - `drawPolygon()` * `PathMode`: Vector graphic primitives are mapped to a `QPainterPath` and are painted by `drawPath`. In `PathMode` mode only a few draw methods are called: - `drawPath()` - `drawPixmap()` - `drawImage()` """ # enum Mode NormalMode, PolygonPathMode, PathMode = list(range(3)) def __init__(self): super(QwtNullPaintDevice, self).__init__() self.__engine = None self.__data = QwtNullPaintDevice_PrivateData() def setMode(self, mode): """ Set the render mode :param int mode: New mode .. seealso:: :py:meth:`mode()` """ self.__data.mode = mode def mode(self): """ :return: Render mode .. seealso:: :py:meth:`setMode()` """ return self.__data.mode def paintEngine(self): if self.__engine is None: self.__engine = QwtNullPaintDevice_PaintEngine(self) return self.__engine def metric(self, deviceMetric): if deviceMetric == QPaintDevice.PdmWidth: value = self.sizeMetrics().width() elif deviceMetric == QPaintDevice.PdmHeight: value = self.sizeMetrics().height() elif deviceMetric == QPaintDevice.PdmNumColors: value = 0xFFFFFFFF elif deviceMetric == QPaintDevice.PdmDepth: value = 32 elif deviceMetric in ( QPaintDevice.PdmPhysicalDpiX, QPaintDevice.PdmPhysicalDpiY, QPaintDevice.PdmDpiY, QPaintDevice.PdmDpiX, ): value = 72 elif deviceMetric == QPaintDevice.PdmWidthMM: value = round( self.metric(QPaintDevice.PdmWidth) * 25.4 / self.metric(QPaintDevice.PdmDpiX) ) elif deviceMetric == QPaintDevice.PdmHeightMM: value = round( self.metric(QPaintDevice.PdmHeight) * 25.4 / self.metric(QPaintDevice.PdmDpiY) ) else: value = 0 return value def drawRects(self, rects, rectCount): pass def drawLines(self, lines, lineCount): pass def drawEllipse(self, rect): pass def drawPath(self, path): pass def drawPoints(self, points, pointCount): pass def drawPolygon(self, points, pointCount, mode): pass def drawPixmap(self, rect, pm, subRect): pass def drawTextItem(self, pos, textItem): pass def drawTiledPixmap(self, rect, pm, subRect): pass def drawImage(self, rect, image, subRect, flags): pass def updateState(self, state): pass ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641729145.0 PythonQwt-0.10.2/qwt/painter.py0000666000000000000000000004561700000000000013306 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPainterClass --------------- .. autoclass:: QwtPainterClass :members: """ from qwt.color_map import QwtColorMap from qwt.scale_map import QwtScaleMap from qtpy.QtGui import ( QPaintEngine, QPixmap, QPainter, QPalette, QPen, QBrush, QRegion, QLinearGradient, QPainterPath, QColor, ) from qtpy.QtWidgets import QFrame, QStyle, QStyleOptionFocusRect, QStyleOption from qtpy.QtCore import Qt, QRect, QPoint, QRectF, QLineF from qtpy import QtCore as QC QT_MAJOR_VERSION = int(QC.__version__.split(".")[0]) QWIDGETSIZE_MAX = (1 << 24) - 1 def isX11GraphicsSystem(): pm = QPixmap(1, 1) painter = QPainter(pm) isX11 = painter.paintEngine().type() == QPaintEngine.X11 del painter return isX11 def qwtFillRect(widget, painter, rect, brush): if brush.style() == Qt.TexturePattern: painter.save() painter.setClipRect(rect) painter.drawTiledPixmap(rect, brush.texture(), rect.topLeft()) painter.restore() elif brush.gradient(): painter.save() painter.setClipRect(rect) painter.fillRect(0, 0, widget.width(), widget.height(), brush) painter.restore() else: painter.fillRect(rect, brush) class QwtPainterClass(object): """A collection of `QPainter` workarounds""" def drawImage(self, painter, rect, image): alignedRect = rect.toAlignedRect() if alignedRect != rect: clipRect = rect.adjusted(0.0, 0.0, -1.0, -1.0) painter.save() painter.setClipRect(clipRect, Qt.IntersectClip) painter.drawImage(alignedRect, image) painter.restore() else: painter.drawImage(alignedRect, image) def drawPixmap(self, painter, rect, pixmap): alignedRect = rect.toAlignedRect() if alignedRect != rect: clipRect = rect.adjusted(0.0, 0.0, -1.0, -1.0) painter.save() painter.setClipRect(clipRect, Qt.IntersectClip) painter.drawPixmap(alignedRect, pixmap) painter.restore() else: painter.drawPixmap(alignedRect, pixmap) def drawFocusRect(self, *args): if len(args) == 2: painter, widget = args self.drawFocusRect(painter, widget, widget.rect()) elif len(args) == 3: painter, widget, rect = args opt = QStyleOptionFocusRect() opt.initFrom(widget) opt.rect = rect opt.state |= QStyle.State_HasFocus palette = widget.palette() opt.backgroundColor = palette.color(widget.backgroundRole()) widget.style().drawPrimitive(QStyle.PE_FrameFocusRect, opt, painter, widget) else: raise TypeError( "QwtPainter.drawFocusRect() takes 2 or 3 argument" "(s) (%s given)" % len(args) ) def drawRoundFrame(self, painter, rect, palette, lineWidth, frameStyle): """ Draw a round frame :param QPainter painter: Painter :param QRectF rect: Target rectangle :param QPalette palette: `QPalette.WindowText` is used for plain borders, `QPalette.Dark` and `QPalette.Light` for raised or sunken borders :param int lineWidth: Line width :param int frameStyle: bitwise OR´ed value of `QFrame.Shape` and `QFrame.Shadow` """ Plain, Sunken, Raised = list(range(3)) style = Plain if (frameStyle & QFrame.Sunken) == QFrame.Sunken: style = Sunken elif (frameStyle & QFrame.Raised) == QFrame.Raised: style = Raised lw2 = 0.5 * lineWidth r = rect.adjusted(lw2, lw2, -lw2, -lw2) if style != Plain: c1 = palette.color(QPalette.Light) c2 = palette.color(QPalette.Dark) if style == Sunken: c1, c2 = c2, c1 gradient = QLinearGradient(r.topLeft(), r.bottomRight()) gradient.setColorAt(0.0, c1) gradient.setColorAt(1.0, c2) brush = QBrush(gradient) else: brush = palette.brush(QPalette.WindowText) painter.save() painter.setPen(QPen(brush, lineWidth)) painter.drawEllipse(r) painter.restore() def drawFrame( self, painter, rect, palette, foregroundRole, frameWidth, midLineWidth, frameStyle, ): """ Draw a rectangular frame :param QPainter painter: Painter :param QRectF rect: Frame rectangle :param QPalette palette: Palette :param QPalette.ColorRole foregroundRole: Palette :param int frameWidth: Frame width :param int midLineWidth: Used for `QFrame.Box` :param int frameStyle: bitwise OR´ed value of `QFrame.Shape` and `QFrame.Shadow` """ if frameWidth <= 0 or rect.isEmpty(): return shadow = frameStyle & QFrame.Shadow_Mask painter.save() if shadow == QFrame.Plain: outerRect = rect.adjusted(0.0, 0.0, -1.0, -1.0) innerRect = outerRect.adjusted( frameWidth, frameWidth, -frameWidth, -frameWidth ) path = QPainterPath() path.addRect(outerRect) path.addRect(innerRect) painter.setPen(Qt.NoPen) painter.setBrush(palette.color(foregroundRole)) painter.drawPath(path) else: shape = frameStyle & QFrame.Shape_Mask if shape == QFrame.Box: outerRect = rect.adjusted(0.0, 0.0, -1.0, -1.0) midRect1 = outerRect.adjusted( frameWidth, frameWidth, -frameWidth, -frameWidth ) midRect2 = midRect1.adjusted( midLineWidth, midLineWidth, -midLineWidth, -midLineWidth ) innerRect = midRect2.adjusted( frameWidth, frameWidth, -frameWidth, -frameWidth ) path1 = QPainterPath() path1.moveTo(outerRect.bottomLeft()) path1.lineTo(outerRect.topLeft()) path1.lineTo(outerRect.topRight()) path1.lineTo(midRect1.topRight()) path1.lineTo(midRect1.topLeft()) path1.lineTo(midRect1.bottomLeft()) path2 = QPainterPath() path2.moveTo(outerRect.bottomLeft()) path2.lineTo(outerRect.bottomRight()) path2.lineTo(outerRect.topRight()) path2.lineTo(midRect1.topRight()) path2.lineTo(midRect1.bottomRight()) path2.lineTo(midRect1.bottomLeft()) path3 = QPainterPath() path3.moveTo(midRect2.bottomLeft()) path3.lineTo(midRect2.topLeft()) path3.lineTo(midRect2.topRight()) path3.lineTo(innerRect.topRight()) path3.lineTo(innerRect.topLeft()) path3.lineTo(innerRect.bottomLeft()) path4 = QPainterPath() path4.moveTo(midRect2.bottomLeft()) path4.lineTo(midRect2.bottomRight()) path4.lineTo(midRect2.topRight()) path4.lineTo(innerRect.topRight()) path4.lineTo(innerRect.bottomRight()) path4.lineTo(innerRect.bottomLeft()) path5 = QPainterPath() path5.addRect(midRect1) path5.addRect(midRect2) painter.setPen(Qt.NoPen) brush1 = palette.dark().color() brush2 = palette.light().color() if shadow == QFrame.Raised: brush1, brush2 = brush2, brush1 painter.setBrush(brush1) painter.drawPath(path1) painter.drawPath(path4) painter.setBrush(brush2) painter.drawPath(path2) painter.drawPath(path3) painter.setBrush(palette.mid()) painter.drawPath(path5) else: outerRect = rect.adjusted(0.0, 0.0, -1.0, -1.0) innerRect = outerRect.adjusted( frameWidth - 1.0, frameWidth - 1.0, -(frameWidth - 1.0), -(frameWidth - 1.0), ) path1 = QPainterPath() path1.moveTo(outerRect.bottomLeft()) path1.lineTo(outerRect.topLeft()) path1.lineTo(outerRect.topRight()) path1.lineTo(innerRect.topRight()) path1.lineTo(innerRect.topLeft()) path1.lineTo(innerRect.bottomLeft()) path2 = QPainterPath() path2.moveTo(outerRect.bottomLeft()) path2.lineTo(outerRect.bottomRight()) path2.lineTo(outerRect.topRight()) path2.lineTo(innerRect.topRight()) path2.lineTo(innerRect.bottomRight()) path2.lineTo(innerRect.bottomLeft()) painter.setPen(Qt.NoPen) brush1 = palette.dark().color() brush2 = palette.light().color() if shadow == QFrame.Raised: brush1, brush2 = brush2, brush1 painter.setBrush(brush1) painter.drawPath(path1) painter.setBrush(brush2) painter.drawPath(path2) painter.restore() def drawRoundedFrame( self, painter, rect, xRadius, yRadius, palette, lineWidth, frameStyle ): """ Draw a rectangular frame with rounded borders :param QPainter painter: Painter :param QRectF rect: Frame rectangle :param float xRadius: x-radius of the ellipses defining the corners :param float yRadius: y-radius of the ellipses defining the corners :param QPalette palette: `QPalette.WindowText` is used for plain borders, `QPalette.Dark` and `QPalette.Light` for raised or sunken borders :param int lineWidth: Line width :param int frameStyle: bitwise OR´ed value of `QFrame.Shape` and `QFrame.Shadow` """ painter.save() painter.setRenderHint(QPainter.Antialiasing, True) painter.setBrush(Qt.NoBrush) lw2 = lineWidth * 0.5 r = rect.adjusted(lw2, lw2, -lw2, -lw2) path = QPainterPath() path.addRoundedRect(r, xRadius, yRadius) Plain, Sunken, Raised = list(range(3)) style = Plain if (frameStyle & QFrame.Sunken) == QFrame.Sunken: style = Sunken if (frameStyle & QFrame.Raised) == QFrame.Raised: style = Raised if style != Plain and path.elementCount() == 17: pathList = [QPainterPath() for _i in range(8)] for i in range(4): j = i * 4 + 1 pathList[2 * i].moveTo(path.elementAt(j - 1).x, path.elementAt(j - 1).y) pathList[2 * i].cubicTo( path.elementAt(j + 0).x, path.elementAt(j + 0).y, path.elementAt(j + 1).x, path.elementAt(j + 1).y, path.elementAt(j + 2).x, path.elementAt(j + 2).y, ) pathList[2 * i + 1].moveTo( path.elementAt(j + 2).x, path.elementAt(j + 2).y ) pathList[2 * i + 1].lineTo( path.elementAt(j + 3).x, path.elementAt(j + 3).y ) c1 = QColor(palette.color(QPalette.Dark)) c2 = QColor(palette.color(QPalette.Light)) if style == Raised: c1, c2 = c2, c1 for i in range(5): r = pathList[2 * i].controlPointRect() arcPen = QPen() arcPen.setCapStyle(Qt.FlatCap) arcPen.setWidth(lineWidth) linePen = QPen() linePen.setCapStyle(Qt.FlatCap) linePen.setWidth(lineWidth) if i == 0: arcPen.setColor(c1) linePen.setColor(c1) elif i == 1: gradient = QLinearGradient() gradient.setStart(r.topLeft()) gradient.setFinalStop(r.bottomRight()) gradient.setColorAt(0.0, c1) gradient.setColorAt(1.0, c2) arcPen.setBrush(gradient) linePen.setColor(c2) elif i == 2: arcPen.setColor(c2) linePen.setColor(c2) elif i == 3: gradient = QLinearGradient() gradient.setStart(r.bottomRight()) gradient.setFinalStop(r.topLeft()) gradient.setColorAt(0.0, c2) gradient.setColorAt(1.0, c1) arcPen.setBrush(gradient) linePen.setColor(c1) painter.setPen(arcPen) painter.drawPath(pathList[2 * i]) painter.setPen(linePen) painter.drawPath(pathList[2 * i + 1]) else: pen = QPen(palette.color(QPalette.WindowText), lineWidth) painter.setPen(pen) painter.drawPath(path) painter.restore() def drawColorBar(self, painter, colorMap, interval, scaleMap, orientation, rect): """ Draw a color bar into a rectangle :param QPainter painter: Painter :param qwt.color_map.QwtColorMap colorMap: Color map :param qwt.interval.QwtInterval interval: Value range :param qwt.scalemap.QwtScaleMap scaleMap: Scale map :param Qt.Orientation orientation: Orientation :param QRectF rect: Target rectangle """ colorTable = [] if colorMap.format() == QwtColorMap.Indexed: colorTable = colorMap.colorTable(interval) c = QColor() devRect = rect.toAlignedRect() pixmap = QPixmap(devRect.size()) pixmap.fill(Qt.transparent) pmPainter = QPainter(pixmap) pmPainter.translate(-devRect.x(), -devRect.y()) if orientation == Qt.Horizontal: sMap = QwtScaleMap(scaleMap) sMap.setPaintInterval(rect.left(), rect.right()) for x in range(devRect.left(), devRect.right() + 1): value = sMap.invTransform(x) if colorMap.format() == QwtColorMap.RGB: c.setRgba(colorMap.rgb(interval, value)) else: c = colorTable[colorMap.colorIndex(interval, value)] pmPainter.setPen(c) pmPainter.drawLine(QLineF(x, devRect.top(), x, devRect.bottom())) else: sMap = QwtScaleMap(scaleMap) sMap.setPaintInterval(rect.bottom(), rect.top()) for y in range(devRect.top(), devRect.bottom() + 1): value = sMap.invTransform(y) if colorMap.format() == QwtColorMap.RGB: c.setRgba(colorMap.rgb(interval, value)) else: c = colorTable[colorMap.colorIndex(interval, value)] pmPainter.setPen(c) pmPainter.drawLine(QLineF(devRect.left(), y, devRect.right(), y)) pmPainter.end() self.drawPixmap(painter, rect, pixmap) def fillPixmap(self, widget, pixmap, offset=None): """ Fill a pixmap with the content of a widget In Qt >= 5.0 `QPixmap.fill()` is a nop, in Qt 4.x it is buggy for backgrounds with gradients. Thus `fillPixmap()` offers an alternative implementation. :param QWidget widget: Widget :param QPixmap pixmap: Pixmap to be filled :param QPoint offset: Offset .. seealso:: :py:meth:`QPixmap.fill()` """ if offset is None: offset = QPoint() rect = QRect(offset, pixmap.size()) painter = QPainter(pixmap) painter.translate(-offset) autoFillBrush = widget.palette().brush(widget.backgroundRole()) if not (widget.autoFillBackground() and autoFillBrush.isOpaque()): bg = widget.palette().brush(QPalette.Window) qwtFillRect(widget, painter, rect, bg) if widget.autoFillBackground(): qwtFillRect(widget, painter, rect, autoFillBrush) if widget.testAttribute(Qt.WA_StyledBackground): painter.setClipRegion(QRegion(rect)) opt = QStyleOption() opt.initFrom(widget) widget.style().drawPrimitive(QStyle.PE_Widget, opt, painter, widget) def drawBackground(self, painter, rect, widget): """ Fill rect with the background of a widget :param QPainter painter: Painter :param QRectF rect: Rectangle to be filled :param QWidget widget: Widget .. seealso:: :py:data:`QStyle.PE_Widget`, :py:meth:`QWidget.backgroundRole()` """ if widget.testAttribute(Qt.WA_StyledBackground): opt = QStyleOption() opt.initFrom(widget) opt.rect = QRectF(rect).toAlignedRect() widget.style().drawPrimitive(QStyle.PE_Widget, opt, painter, widget) else: brush = widget.palette().brush(widget.backgroundRole()) painter.fillRect(rect, brush) def backingStore(self, widget, size): """ :param QWidget widget: Widget, for which the backinstore is intended :param QSize size: Size of the pixmap :return: A pixmap that can be used as backing store """ if QT_MAJOR_VERSION >= 5: pixelRatio = 1.0 if widget and widget.windowHandle(): pixelRatio = widget.windowHandle().devicePixelRatio() else: from qtpy.QtGui import qApp if qApp is not None: try: pixelRatio = qApp.devicePixelRatio() except RuntimeError: pass pm = QPixmap(size * pixelRatio) pm.setDevicePixelRatio(pixelRatio) else: pm = QPixmap(size) if QT_MAJOR_VERSION < 5 and widget and isX11GraphicsSystem(): if pm.x11Info().screen() != widget.x11Info().screen(): pm.x11SetScreen(widget.x11Info().screen()) return pm QwtPainter = QwtPainterClass() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091905.0 PythonQwt-0.10.2/qwt/painter_command.py0000666000000000000000000001545300000000000014777 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPainterCommand ----------------- .. autoclass:: QwtPainterCommand :members: """ from qtpy.QtGui import QPainterPath, QPaintEngine import copy class PixmapData(object): def __init__(self): self.rect = None self.pixmap = None self.subRect = None class ImageData(object): def __init__(self): self.rect = None self.image = None self.subRect = None self.flags = None class StateData(object): def __init__(self): self.flags = None self.pen = None self.brush = None self.brushOrigin = None self.backgroundBrush = None self.backgroundMode = None self.font = None self.matrix = None self.transform = None self.clipOperation = None self.clipRegion = None self.clipPath = None self.isClipEnabled = None self.renderHints = None self.compositionMode = None self.opacity = None class QwtPainterCommand(object): """ `QwtPainterCommand` represents the attributes of a paint operation how it is used between `QPainter` and `QPaintDevice` It is used by :py:class:`qwt.graphic.QwtGraphic` to record and replay paint operations .. seealso:: :py:meth:`qwt.graphic.QwtGraphic.commands()` .. py:class:: QwtPainterCommand() Construct an invalid command .. py:class:: QwtPainterCommand(path) :noindex: Copy constructor :param QPainterPath path: Source .. py:class:: QwtPainterCommand(rect, pixmap, subRect) :noindex: Constructor for Pixmap paint operation :param QRectF rect: Target rectangle :param QPixmap pixmap: Pixmap :param QRectF subRect: Rectangle inside the pixmap .. py:class:: QwtPainterCommand(rect, image, subRect, flags) :noindex: Constructor for Image paint operation :param QRectF rect: Target rectangle :param QImage image: Image :param QRectF subRect: Rectangle inside the image :param Qt.ImageConversionFlags flags: Conversion flags .. py:class:: QwtPainterCommand(state) :noindex: Constructor for State paint operation :param QPaintEngineState state: Paint engine state """ # enum Type Invalid = -1 Path, Pixmap, Image, State = list(range(4)) def __init__(self, *args): if len(args) == 0: self.__type = self.Invalid elif len(args) == 1: (arg,) = args if isinstance(arg, QPainterPath): path = arg self.__type = self.Path self.__path = QPainterPath(path) elif isinstance(arg, QwtPainterCommand): other = arg self.copy(other) else: state = arg self.__type = self.State self.__stateData = StateData() self.__stateData.flags = state.state() if self.__stateData.flags & QPaintEngine.DirtyPen: self.__stateData.pen = state.pen() if self.__stateData.flags & QPaintEngine.DirtyBrush: self.__stateData.brush = state.brush() if self.__stateData.flags & QPaintEngine.DirtyBrushOrigin: self.__stateData.brushOrigin = state.brushOrigin() if self.__stateData.flags & QPaintEngine.DirtyFont: self.__stateData.font = state.font() if self.__stateData.flags & QPaintEngine.DirtyBackground: self.__stateData.backgroundMode = state.backgroundMode() self.__stateData.backgroundBrush = state.backgroundBrush() if self.__stateData.flags & QPaintEngine.DirtyTransform: self.__stateData.transform = state.transform() if self.__stateData.flags & QPaintEngine.DirtyClipEnabled: self.__stateData.isClipEnabled = state.isClipEnabled() if self.__stateData.flags & QPaintEngine.DirtyClipRegion: self.__stateData.clipRegion = state.clipRegion() self.__stateData.clipOperation = state.clipOperation() if self.__stateData.flags & QPaintEngine.DirtyClipPath: self.__stateData.clipPath = state.clipPath() self.__stateData.clipOperation = state.clipOperation() if self.__stateData.flags & QPaintEngine.DirtyHints: self.__stateData.renderHints = state.renderHints() if self.__stateData.flags & QPaintEngine.DirtyCompositionMode: self.__stateData.compositionMode = state.compositionMode() if self.__stateData.flags & QPaintEngine.DirtyOpacity: self.__stateData.opacity = state.opacity() elif len(args) == 3: rect, pixmap, subRect = args self.__type = self.Pixmap self.__pixmapData = PixmapData() self.__pixmapData.rect = rect self.__pixmapData.pixmap = pixmap self.__pixmapData.subRect = subRect elif len(args) == 4: rect, image, subRect, flags = args self.__type = self.Image self.__imageData = ImageData() self.__imageData.rect = rect self.__imageData.image = image self.__imageData.subRect = subRect self.__imageData.flags = flags else: raise TypeError( "%s() takes 0, 1, 3 or 4 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def copy(self, other): self.__type = other.__type if other.__type == self.Path: self.__path = QPainterPath(other.__path) elif other.__type == self.Pixmap: self.__pixmapData = copy.deepcopy(other.__pixmapData) elif other.__type == self.Image: self.__imageData = copy.deepcopy(other.__imageData) elif other.__type == self.State: self.__stateData == copy.deepcopy(other.__stateData) def reset(self): self.__type = self.Invalid def type(self): return self.__type def path(self): return self.__path def pixmapData(self): return self.__pixmapData def imageData(self): return self.__imageData def stateData(self): return self.__stateData ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641633856.0 PythonQwt-0.10.2/qwt/plot.py0000666000000000000000000022557500000000000012625 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlot ------- .. autoclass:: QwtPlot :members: QwtPlotItem ----------- .. autoclass:: QwtPlotItem :members: """ import math from qtpy.QtWidgets import ( QWidget, QSizePolicy, QFrame, QApplication, ) from qtpy.QtGui import QFont, QPainter, QPalette, QColor, QBrush from qtpy.QtCore import Qt, Signal, QEvent, QSize, QRectF from qwt.text import QwtText, QwtTextLabel from qwt.scale_widget import QwtScaleWidget from qwt.scale_draw import QwtScaleDraw from qwt.scale_engine import QwtLinearScaleEngine from qwt.plot_canvas import QwtPlotCanvas from qwt.scale_div import QwtScaleDiv from qwt.scale_map import QwtScaleMap from qwt.graphic import QwtGraphic from qwt.legend import QwtLegendData from qwt.interval import QwtInterval import numpy as np def qwtEnableLegendItems(plot, on): if on: plot.legendDataChanged.connect(plot.updateLegendItems) else: plot.legendDataChanged.disconnect(plot.updateLegendItems) def qwtSetTabOrder(first, second, with_children): tab_chain = [first, second] if with_children: children = second.findChildren(QWidget) w = second.nextInFocusChain() while w in children: while w in children: children.remove(w) tab_chain += [w] w = w.nextInFocusChain() for idx in range(len(tab_chain) - 1): w_from = tab_chain[idx] w_to = tab_chain[idx + 1] policy1, policy2 = w_from.focusPolicy(), w_to.focusPolicy() proxy1, proxy2 = w_from.focusProxy(), w_to.focusProxy() for w in (w_from, w_to): w.setFocusPolicy(Qt.TabFocus) w.setFocusProxy(None) QWidget.setTabOrder(w_from, w_to) for w, pl, px in ((w_from, policy1, proxy1), (w_to, policy2, proxy2)): w.setFocusPolicy(pl) w.setFocusProxy(px) class ItemList(list): def sortItems(self): self.sort(key=lambda item: item.z()) def insertItem(self, obj): self.append(obj) self.sortItems() def removeItem(self, obj): self.remove(obj) self.sortItems() class QwtPlotDict_PrivateData(object): def __init__(self): self.itemList = ItemList() self.autoDelete = True class QwtPlotDict(object): """ A dictionary for plot items `QwtPlotDict` organizes plot items in increasing z-order. If `autoDelete()` is enabled, all attached items will be deleted in the destructor of the dictionary. `QwtPlotDict` can be used to get access to all `QwtPlotItem` items - or all items of a specific type - that are currently on the plot. .. seealso:: :py:meth:`QwtPlotItem.attach()`, :py:meth:`QwtPlotItem.detach()`, :py:meth:`QwtPlotItem.z()` """ def __init__(self): self.__data = QwtPlotDict_PrivateData() def setAutoDelete(self, autoDelete): """ En/Disable Auto deletion If Auto deletion is on all attached plot items will be deleted in the destructor of `QwtPlotDict`. The default value is on. :param bool autoDelete: enable/disable .. seealso:: :py:meth:`autoDelete()`, :py:meth:`insertItem()` """ self.__data.autoDelete = autoDelete def autoDelete(self): """ :return: true if auto deletion is enabled .. seealso:: :py:meth:`setAutoDelete()`, :py:meth:`insertItem()` """ return self.__data.autoDelete def insertItem(self, item): """ Insert a plot item :param qwt.plot.QwtPlotItem item: PlotItem .. seealso:: :py:meth:`removeItem()` """ self.__data.itemList.insertItem(item) def removeItem(self, item): """ Remove a plot item :param qwt.plot.QwtPlotItem item: PlotItem .. seealso:: :py:meth:`insertItem()` """ self.__data.itemList.removeItem(item) def detachItems(self, rtti=None): """ Detach items from the dictionary :param rtti: In case of `QwtPlotItem.Rtti_PlotItem` or None (default) detach all items otherwise only those items of the type rtti. :type rtti: int or None """ for item in self.__data.itemList[:]: if rtti in (None, QwtPlotItem.Rtti_PlotItem) or item.rtti() == rtti: item.attach(None) def itemList(self, rtti=None): """ A list of attached plot items. Use caution when iterating these lists, as removing/detaching an item will invalidate the iterator. Instead you can place pointers to objects to be removed in a removal list, and traverse that list later. :param int rtti: In case of `QwtPlotItem.Rtti_PlotItem` detach all items otherwise only those items of the type rtti. :return: List of all attached plot items of a specific type. If rtti is None, return a list of all attached plot items. """ if rtti is None or rtti == QwtPlotItem.Rtti_PlotItem: return self.__data.itemList return [item for item in self.__data.itemList if item.rtti() == rtti] class QwtPlot_PrivateData(QwtPlotDict_PrivateData): def __init__(self): super(QwtPlot_PrivateData, self).__init__() self.titleLabel = None self.footerLabel = None self.canvas = None self.legend = None self.layout = None self.autoReplot = None self.flatStyle = None class AxisData(object): def __init__(self): self.isEnabled = None self.doAutoScale = None self.minValue = None self.maxValue = None self.stepSize = None self.maxMajor = None self.maxMinor = None self.isValid = None self.scaleDiv = None # QwtScaleDiv self.scaleEngine = None # QwtScaleEngine self.scaleWidget = None # QwtScaleWidget class QwtPlot(QFrame, QwtPlotDict): """ A 2-D plotting widget QwtPlot is a widget for plotting two-dimensional graphs. An unlimited number of plot items can be displayed on its canvas. Plot items might be curves (:py:class:`qwt.plot_curve.QwtPlotCurve`), markers (:py:class:`qwt.plot_marker.QwtPlotMarker`), the grid (:py:class:`qwt.plot_grid.QwtPlotGrid`), or anything else derived from :py:class:`QwtPlotItem`. A plot can have up to four axes, with each plot item attached to an x- and a y axis. The scales at the axes can be explicitly set (`QwtScaleDiv`), or are calculated from the plot items, using algorithms (`QwtScaleEngine`) which can be configured separately for each axis. The following example is a good starting point to see how to set up a plot widget:: from qtpy import QtWidgets as QW import qwt import numpy as np app = QW.QApplication([]) x = np.linspace(-10, 10, 500) plot = qwt.QwtPlot("Trigonometric functions") plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend) qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True) qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True) plot.resize(600, 300) plot.show() .. image:: /images/QwtPlot_example.png .. py:class:: QwtPlot([title=""], [parent=None]) :param str title: Title text :param QWidget parent: Parent widget .. py:data:: itemAttached A signal indicating, that an item has been attached/detached :param plotItem: Plot item :param on: Attached/Detached .. py:data:: legendDataChanged A signal with the attributes how to update the legend entries for a plot item. :param itemInfo: Info about a plot item, build from itemToInfo() :param data: Attributes of the entries (usually <= 1) for the plot item. """ itemAttached = Signal(object, bool) legendDataChanged = Signal(object, object) # enum Axis AXES = yLeft, yRight, xBottom, xTop = list(range(4)) axisCnt = len(AXES) # Not necessary but ensure compatibility with PyQwt # enum LegendPosition LeftLegend, RightLegend, BottomLegend, TopLegend = list(range(4)) def __init__(self, *args): if len(args) == 0: title, parent = "", None elif len(args) == 1: if isinstance(args[0], QWidget) or args[0] is None: title = "" (parent,) = args else: (title,) = args parent = None elif len(args) == 2: title, parent = args else: raise TypeError( "%s() takes 0, 1 or 2 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) QwtPlotDict.__init__(self) QFrame.__init__(self, parent) self.__layout_state = None self.__data = QwtPlot_PrivateData() from qwt.plot_layout import QwtPlotLayout self.__data.layout = QwtPlotLayout() self.__data.autoReplot = False self.setAutoReplot(False) self.setPlotLayout(self.__data.layout) # title self.__data.titleLabel = QwtTextLabel(self) self.__data.titleLabel.setObjectName("QwtPlotTitle") text = QwtText(title) text.setRenderFlags(Qt.AlignCenter | Qt.TextWordWrap) self.__data.titleLabel.setText(text) # footer self.__data.footerLabel = QwtTextLabel(self) self.__data.footerLabel.setObjectName("QwtPlotFooter") footer = QwtText() footer.setRenderFlags(Qt.AlignCenter | Qt.TextWordWrap) self.__data.footerLabel.setText(footer) # legend self.__data.legend = None # axis self.__axisData = [] self.initAxesData() # canvas self.__data.canvas = QwtPlotCanvas(self) self.__data.canvas.setObjectName("QwtPlotCanvas") self.__data.canvas.installEventFilter(self) # plot style self.setFlatStyle(True) self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) focusChain = [ self, self.__data.titleLabel, self.axisWidget(self.xTop), self.axisWidget(self.yLeft), self.__data.canvas, self.axisWidget(self.yRight), self.axisWidget(self.xBottom), self.__data.footerLabel, ] for idx in range(len(focusChain) - 1): qwtSetTabOrder(focusChain[idx], focusChain[idx + 1], False) qwtEnableLegendItems(self, True) def __del__(self): self.setAutoReplot(False) # XXX Is is really necessary in Python? (pure transcription of C++) # The following line have been commented to avoid crashing Python # when exiting interpreter (Python 3 only) # self.detachItems(QwtPlotItem.Rtti_PlotItem, self.autoDelete()) # self.__data.layout = None # self.deleteAxesData() # self.__data = None def setFlatStyle(self, state): """ Set or reset the flatStyle option If the flatStyle option is set, the plot will be rendered without any margin (scales, canvas, layout). Enabling this option makes the plot look flat and compact. The flatStyle option is set to True by default. :param bool state: True or False. .. seealso:: :py:meth:`flatStyle()` """ def make_font(family=None, size=None, delta_size=None, weight=None): finfo = self.fontInfo() family = finfo.family() if family is None else family weight = -1 if weight is None else weight size = size if delta_size is None else finfo.pointSize() + delta_size return QFont(family, size, weight) if state: # New PythonQwt-exclusive flat style plot_title_font = make_font( family="Helvetica", delta_size=4, weight=QFont.Bold ) axis_title_font = make_font( family="Helvetica", delta_size=2, weight=QFont.Bold ) axis_label_font = make_font(family="Helvetica", delta_size=0) tick_lighter_factors = (150, 125, 100) scale_margin = scale_spacing = 0 canvas_frame_style = QFrame.NoFrame plot_layout_canvas_margin = plot_layout_spacing = 0 ticks_color = Qt.darkGray labels_color = "#444444" else: # Old PyQwt / Qwt style plot_title_font = make_font(size=14, weight=QFont.Bold) axis_title_font = make_font(size=12, weight=QFont.Bold) axis_label_font = make_font(size=10) tick_lighter_factors = (100, 100, 100) scale_margin = scale_spacing = 2 canvas_frame_style = QFrame.Panel | QFrame.Sunken plot_layout_canvas_margin = 4 plot_layout_spacing = 5 ticks_color = labels_color = Qt.black self.canvas().setFrameStyle(canvas_frame_style) self.plotLayout().setCanvasMargin(plot_layout_canvas_margin) self.plotLayout().setSpacing(plot_layout_spacing) palette = self.palette() palette.setColor(QPalette.WindowText, QColor(ticks_color)) palette.setColor(QPalette.Text, QColor(labels_color)) self.setPalette(palette) for axis_id in self.AXES: scale_widget = self.axisWidget(axis_id) scale_draw = self.axisScaleDraw(axis_id) scale_widget.setFont(axis_label_font) scale_widget.setMargin(scale_margin) scale_widget.setSpacing(scale_spacing) scale_title = scale_widget.title() scale_title.setFont(axis_title_font) scale_widget.setTitle(scale_title) for tick_type, factor in enumerate(tick_lighter_factors): scale_draw.setTickLighterFactor(tick_type, factor) plot_title = self.title() plot_title.setFont(plot_title_font) self.setTitle(plot_title) self.__data.flatStyle = state def flatStyle(self): """ :return: True if the flatStyle option is set. .. seealso:: :py:meth:`setFlatStyle()` """ return self.__data.flatStyle def initAxesData(self): """Initialize axes""" self.__axisData = [AxisData() for axisId in self.AXES] self.__axisData[self.yLeft].scaleWidget = QwtScaleWidget( QwtScaleDraw.LeftScale, self ) self.__axisData[self.yRight].scaleWidget = QwtScaleWidget( QwtScaleDraw.RightScale, self ) self.__axisData[self.xTop].scaleWidget = QwtScaleWidget( QwtScaleDraw.TopScale, self ) self.__axisData[self.xBottom].scaleWidget = QwtScaleWidget( QwtScaleDraw.BottomScale, self ) self.__axisData[self.yLeft].scaleWidget.setObjectName("QwtPlotAxisYLeft") self.__axisData[self.yRight].scaleWidget.setObjectName("QwtPlotAxisYRight") self.__axisData[self.xTop].scaleWidget.setObjectName("QwtPlotAxisXTop") self.__axisData[self.xBottom].scaleWidget.setObjectName("QwtPlotAxisXBottom") for axisId in self.AXES: d = self.__axisData[axisId] d.scaleEngine = QwtLinearScaleEngine() d.scaleWidget.setTransformation(d.scaleEngine.transformation()) d.scaleWidget.setMargin(2) text = d.scaleWidget.title() d.scaleWidget.setTitle(text) d.doAutoScale = True d.minValue = 0.0 d.maxValue = 1000.0 d.stepSize = 0.0 d.maxMinor = 5 d.maxMajor = 8 d.isValid = False self.__axisData[self.yLeft].isEnabled = True self.__axisData[self.yRight].isEnabled = False self.__axisData[self.xBottom].isEnabled = True self.__axisData[self.xTop].isEnabled = False def deleteAxesData(self): # XXX Is is really necessary in Python? (pure transcription of C++) for axisId in self.AXES: self.__axisData[axisId].scaleEngine = None self.__axisData[axisId] = None def axisWidget(self, axisId): """ :param int axisId: Axis index :return: Scale widget of the specified axis, or None if axisId is invalid. """ if self.axisValid(axisId): return self.__axisData[axisId].scaleWidget def setAxisScaleEngine(self, axisId, scaleEngine): """ Change the scale engine for an axis :param int axisId: Axis index :param qwt.scale_engine.QwtScaleEngine scaleEngine: Scale engine .. seealso:: :py:meth:`axisScaleEngine()` """ if self.axisValid(axisId) and scaleEngine is not None: d = self.__axisData[axisId] d.scaleEngine = scaleEngine self.__axisData[axisId].scaleWidget.setTransformation( scaleEngine.transformation() ) d.isValid = False self.autoRefresh() def axisScaleEngine(self, axisId): """ :param int axisId: Axis index :return: Scale engine for a specific axis .. seealso:: :py:meth:`setAxisScaleEngine()` """ if self.axisValid(axisId): return self.__axisData[axisId].scaleEngine def axisAutoScale(self, axisId): """ :param int axisId: Axis index :return: True, if autoscaling is enabled """ if self.axisValid(axisId): return self.__axisData[axisId].doAutoScale def axisEnabled(self, axisId): """ :param int axisId: Axis index :return: True, if a specified axis is enabled """ if self.axisValid(axisId): return self.__axisData[axisId].isEnabled def axisFont(self, axisId): """ :param int axisId: Axis index :return: The font of the scale labels for a specified axis """ if self.axisValid(axisId): return self.axisWidget(axisId).font() else: return QFont() def axisMaxMajor(self, axisId): """ :param int axisId: Axis index :return: The maximum number of major ticks for a specified axis .. seealso:: :py:meth:`setAxisMaxMajor()`, :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()` """ if self.axisValid(axisId): return self.axisWidget(axisId).maxMajor else: return 0 def axisMaxMinor(self, axisId): """ :param int axisId: Axis index :return: The maximum number of minor ticks for a specified axis .. seealso:: :py:meth:`setAxisMaxMinor()`, :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()` """ if self.axisValid(axisId): return self.axisWidget(axisId).maxMinor else: return 0 def axisScaleDiv(self, axisId): """ :param int axisId: Axis index :return: The scale division of a specified axis axisScaleDiv(axisId).lowerBound(), axisScaleDiv(axisId).upperBound() are the current limits of the axis scale. .. seealso:: :py:class:`qwt.scale_div.QwtScaleDiv`, :py:meth:`setAxisScaleDiv()`, :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()` """ return self.__axisData[axisId].scaleDiv def axisScaleDraw(self, axisId): """ :param int axisId: Axis index :return: Specified scaleDraw for axis, or NULL if axis is invalid. """ if self.axisValid(axisId): return self.axisWidget(axisId).scaleDraw() def axisStepSize(self, axisId): """ :param int axisId: Axis index :return: step size parameter value This doesn't need to be the step size of the current scale. .. seealso:: :py:meth:`setAxisScale()`, :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()` """ if self.axisValid(axisId): return self.axisWidget(axisId).stepSize else: return 0 def axisInterval(self, axisId): """ :param int axisId: Axis index :return: The current interval of the specified axis This is only a convenience function for axisScaleDiv(axisId).interval() .. seealso:: :py:class:`qwt.scale_div.QwtScaleDiv`, :py:meth:`axisScaleDiv()` """ if self.axisValid(axisId): return self.axisWidget(axisId).scaleDiv.interval() else: return QwtInterval() def axisTitle(self, axisId): """ :param int axisId: Axis index :return: Title of a specified axis """ if self.axisValid(axisId): return self.axisWidget(axisId).title() else: return QwtText() def enableAxis(self, axisId, tf=True): """ Enable or disable a specified axis When an axis is disabled, this only means that it is not visible on the screen. Curves, markers and can be attached to disabled axes, and transformation of screen coordinates into values works as normal. Only xBottom and yLeft are enabled by default. :param int axisId: Axis index :param bool tf: True (enabled) or False (disabled) """ if self.axisValid(axisId) and tf != self.__axisData[axisId].isEnabled: self.__axisData[axisId].isEnabled = tf self.updateLayout() def invTransform(self, axisId, pos): """ Transform the x or y coordinate of a position in the drawing region into a value. :param int axisId: Axis index :param int pos: position .. warning:: The position can be an x or a y coordinate, depending on the specified axis. """ if self.axisValid(axisId): return self.canvasMap(axisId).invTransform(pos) else: return 0.0 def transform(self, axisId, value): """ Transform a value into a coordinate in the plotting region :param int axisId: Axis index :param fload value: Value :return: X or Y coordinate in the plotting region corresponding to the value. """ if self.axisValid(axisId): return self.canvasMap(axisId).transform(value) else: return 0.0 def setAxisFont(self, axisId, font): """ Change the font of an axis :param int axisId: Axis index :param QFont font: Font .. warning:: This function changes the font of the tick labels, not of the axis title. """ if self.axisValid(axisId): return self.axisWidget(axisId).setFont(font) def setAxisAutoScale(self, axisId, on=True): """ Enable autoscaling for a specified axis This member function is used to switch back to autoscaling mode after a fixed scale has been set. Autoscaling is enabled by default. :param int axisId: Axis index :param bool on: On/Off .. seealso:: :py:meth:`setAxisScale()`, :py:meth:`setAxisScaleDiv()`, :py:meth:`updateAxes()` .. note:: The autoscaling flag has no effect until updateAxes() is executed ( called by replot() ). """ if self.axisValid(axisId) and self.__axisData[axisId].doAutoScale != on: self.__axisData[axisId].doAutoScale = on self.autoRefresh() def setAxisScale(self, axisId, min_, max_, stepSize=0): """ Disable autoscaling and specify a fixed scale for a selected axis. In updateAxes() the scale engine calculates a scale division from the specified parameters, that will be assigned to the scale widget. So updates of the scale widget usually happen delayed with the next replot. :param int axisId: Axis index :param float min_: Minimum of the scale :param float max_: Maximum of the scale :param float stepSize: Major step size. If step == 0, the step size is calculated automatically using the maxMajor setting. .. seealso:: :py:meth:`setAxisMaxMajor()`, :py:meth:`setAxisAutoScale()`, :py:meth:`axisStepSize()`, :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()` """ if self.axisValid(axisId): d = self.__axisData[axisId] d.doAutoScale = False d.isValid = False d.minValue = min_ d.maxValue = max_ d.stepSize = stepSize self.autoRefresh() def setAxisScaleDiv(self, axisId, scaleDiv): """ Disable autoscaling and specify a fixed scale for a selected axis. The scale division will be stored locally only until the next call of updateAxes(). So updates of the scale widget usually happen delayed with the next replot. :param int axisId: Axis index :param qwt.scale_div.QwtScaleDiv scaleDiv: Scale division .. seealso:: :py:meth:`setAxisScale()`, :py:meth:`setAxisAutoScale()` """ if self.axisValid(axisId): d = self.__axisData[axisId] d.doAutoScale = False d.scaleDiv = scaleDiv d.isValid = True self.autoRefresh() def setAxisScaleDraw(self, axisId, scaleDraw): """ Set a scale draw :param int axisId: Axis index :param qwt.scale_draw.QwtScaleDraw scaleDraw: Object responsible for drawing scales. By passing scaleDraw it is possible to extend QwtScaleDraw functionality and let it take place in QwtPlot. Please note that scaleDraw has to be created with new and will be deleted by the corresponding QwtScale member ( like a child object ). .. seealso:: :py:class:`qwt.scale_draw.QwtScaleDraw`, :py:class:`qwt.scale_widget.QwtScaleWigdet` .. warning:: The attributes of scaleDraw will be overwritten by those of the previous QwtScaleDraw. """ if self.axisValid(axisId): self.axisWidget(axisId).setScaleDraw(scaleDraw) self.autoRefresh() def setAxisLabelAlignment(self, axisId, alignment): """ Change the alignment of the tick labels :param int axisId: Axis index :param Qt.Alignment alignment: Or'd Qt.AlignmentFlags .. seealso:: :py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelAlignment()` """ if self.axisValid(axisId): self.axisWidget(axisId).setLabelAlignment(alignment) def setAxisLabelRotation(self, axisId, rotation): """ Rotate all tick labels :param int axisId: Axis index :param float rotation: Angle in degrees. When changing the label rotation, the label alignment might be adjusted too. .. seealso:: :py:meth:`setLabelRotation()`, :py:meth:`setAxisLabelAlignment()` """ if self.axisValid(axisId): self.axisWidget(axisId).setLabelRotation(rotation) def setAxisLabelAutoSize(self, axisId, state): """ Set tick labels automatic size option (default: on) :param int axisId: Axis index :param bool state: On/off .. seealso:: :py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelAutoSize()` """ if self.axisValid(axisId): self.axisWidget(axisId).setLabelAutoSize(state) def setAxisMaxMinor(self, axisId, maxMinor): """ Set the maximum number of minor scale intervals for a specified axis :param int axisId: Axis index :param int maxMinor: Maximum number of minor steps .. seealso:: :py:meth:`axisMaxMinor()` """ if self.axisValid(axisId): maxMinor = max([0, min([maxMinor, 100])]) d = self.__axisData[axisId] if maxMinor != d.maxMinor: d.maxMinor = maxMinor d.isValid = False self.autoRefresh() def setAxisMaxMajor(self, axisId, maxMajor): """ Set the maximum number of major scale intervals for a specified axis :param int axisId: Axis index :param int maxMajor: Maximum number of major steps .. seealso:: :py:meth:`axisMaxMajor()` """ if self.axisValid(axisId): maxMajor = max([1, min([maxMajor, 10000])]) d = self.__axisData[axisId] if maxMajor != d.maxMajor: d.maxMajor = maxMajor d.isValid = False self.autoRefresh() def setAxisTitle(self, axisId, title): """ Change the title of a specified axis :param int axisId: Axis index :param title: axis title :type title: qwt.text.QwtText or str """ if self.axisValid(axisId): self.axisWidget(axisId).setTitle(title) self.updateLayout() def updateAxes(self): """ Rebuild the axes scales In case of autoscaling the boundaries of a scale are calculated from the bounding rectangles of all plot items, having the `QwtPlotItem.AutoScale` flag enabled (`QwtScaleEngine.autoScale()`). Then a scale division is calculated (`QwtScaleEngine.didvideScale()`) and assigned to scale widget. When the scale boundaries have been assigned with `setAxisScale()` a scale division is calculated (`QwtScaleEngine.didvideScale()`) for this interval and assigned to the scale widget. When the scale has been set explicitly by `setAxisScaleDiv()` the locally stored scale division gets assigned to the scale widget. The scale widget indicates modifications by emitting a `QwtScaleWidget.scaleDivChanged()` signal. `updateAxes()` is usually called by `replot()`. .. seealso:: :py:meth:`setAxisAutoScale()`, :py:meth:`setAxisScale()`, :py:meth:`setAxisScaleDiv()`, :py:meth:`replot()`, :py:meth:`QwtPlotItem.boundingRect()` """ intv = [QwtInterval() for _i in self.AXES] itmList = self.itemList() for item in itmList: if not item.testItemAttribute(QwtPlotItem.AutoScale): continue if not item.isVisible(): continue if self.axisAutoScale(item.xAxis()) or self.axisAutoScale(item.yAxis()): rect = item.boundingRect() if rect.width() >= 0.0: intv[item.xAxis()] |= QwtInterval(rect.left(), rect.right()) if rect.height() >= 0.0: intv[item.yAxis()] |= QwtInterval(rect.top(), rect.bottom()) for axisId in self.AXES: d = self.__axisData[axisId] minValue = d.minValue maxValue = d.maxValue stepSize = d.stepSize if d.doAutoScale and intv[axisId].isValid(): d.isValid = False minValue = intv[axisId].minValue() maxValue = intv[axisId].maxValue() d.scaleEngine.autoScale(d.maxMajor, minValue, maxValue, stepSize) if not d.isValid: d.scaleDiv = d.scaleEngine.divideScale( minValue, maxValue, d.maxMajor, d.maxMinor, stepSize ) d.isValid = True scaleWidget = self.axisWidget(axisId) scaleWidget.setScaleDiv(d.scaleDiv) # It is *really* necessary to update border dist! # Otherwise, when tick labels are large enough, the ticks # may not be aligned with canvas grid. # See the following issues for more details: # https://github.com/PierreRaybaut/guiqwt/issues/57 # https://github.com/PierreRaybaut/PythonQwt/issues/30 startDist, endDist = scaleWidget.getBorderDistHint() scaleWidget.setBorderDist(startDist, endDist) for item in itmList: if item.testItemInterest(QwtPlotItem.ScaleInterest): item.updateScaleDiv( self.axisScaleDiv(item.xAxis()), self.axisScaleDiv(item.yAxis()) ) def setCanvas(self, canvas): """ Set the drawing canvas of the plot widget. The default canvas is a `QwtPlotCanvas`. :param QWidget canvas: Canvas Widget .. seealso:: :py:meth:`canvas()` """ if canvas == self.__data.canvas: return self.__data.canvas = canvas if canvas is not None: canvas.setParent(self) canvas.installEventFilter(self) if self.isVisible(): canvas.show() def event(self, event): if event.type() == QEvent.LayoutRequest: self.updateLayout() elif event.type() == QEvent.PolishRequest: self.replot() return QFrame.event(self, event) def eventFilter(self, obj, event): if obj is self.__data.canvas: if event.type() == QEvent.Resize: self.updateCanvasMargins() elif event.type() == 178: # QEvent.ContentsRectChange: self.updateLayout() return QFrame.eventFilter(self, obj, event) def autoRefresh(self): """Replots the plot if :py:meth:`autoReplot()` is True.""" if self.__data.autoReplot: self.replot() def setAutoReplot(self, tf=True): """ Set or reset the autoReplot option If the autoReplot option is set, the plot will be updated implicitly by manipulating member functions. Since this may be time-consuming, it is recommended to leave this option switched off and call :py:meth:`replot()` explicitly if necessary. The autoReplot option is set to false by default, which means that the user has to call :py:meth:`replot()` in order to make changes visible. :param bool tf: True or False. Defaults to True. .. seealso:: :py:meth:`autoReplot()` """ self.__data.autoReplot = tf def autoReplot(self): """ :return: True if the autoReplot option is set. .. seealso:: :py:meth:`setAutoReplot()` """ return self.__data.autoReplot def setTitle(self, title): """ Change the plot's title :param title: New title :type title: str or qwt.text.QwtText .. seealso:: :py:meth:`title()` """ current_title = self.__data.titleLabel.text() if isinstance(title, QwtText) and current_title == title: return elif not isinstance(title, QwtText) and current_title.text() == title: return self.__data.titleLabel.setText(title) self.updateLayout() def title(self): """ :return: Title of the plot .. seealso:: :py:meth:`setTitle()` """ return self.__data.titleLabel.text() def titleLabel(self): """ :return: Title label widget. """ return self.__data.titleLabel def setFooter(self, text): """ Change the text the footer :param text: New text of the footer :type text: str or qwt.text.QwtText .. seealso:: :py:meth:`footer()` """ current_footer = self.__data.footerLabel.text() if isinstance(text, QwtText) and current_footer == text: return elif not isinstance(text, QwtText) and current_footer.text() == text: return self.__data.footerLabel.setText(text) self.updateLayout() def footer(self): """ :return: Text of the footer .. seealso:: :py:meth:`setFooter()` """ return self.__data.footerLabel.text() def footerLabel(self): """ :return: Footer label widget. """ return self.__data.footerLabel def setPlotLayout(self, layout): """ Assign a new plot layout :param layout: Layout :type layout: qwt.plot_layout.QwtPlotLayout .. seealso:: :py:meth:`plotLayout()` """ if layout != self.__data.layout: self.__data.layout = layout self.updateLayout() def plotLayout(self): """ :return: the plot's layout .. seealso:: :py:meth:`setPlotLayout()` """ return self.__data.layout def legend(self): """ :return: the plot's legend .. seealso:: :py:meth:`insertLegend()` """ return self.__data.legend def canvas(self): """ :return: the plot's canvas """ return self.__data.canvas def sizeHint(self): """ :return: Size hint for the plot widget .. seealso:: :py:meth:`minimumSizeHint()` """ dw = dh = 0 for axisId in self.AXES: if self.axisEnabled(axisId): niceDist = 40 scaleWidget = self.axisWidget(axisId) scaleDiv = scaleWidget.scaleDraw().scaleDiv() majCnt = len(scaleDiv.ticks(QwtScaleDiv.MajorTick)) if axisId in (self.yLeft, self.yRight): hDiff = ( majCnt - 1 ) * niceDist - scaleWidget.minimumSizeHint().height() if hDiff > dh: dh = hDiff else: wDiff = ( majCnt - 1 ) * niceDist - scaleWidget.minimumSizeHint().width() if wDiff > dw: dw = wDiff return self.minimumSizeHint() + QSize(dw, dh) def minimumSizeHint(self): """ :return: Return a minimum size hint """ hint = self.__data.layout.minimumSizeHint(self) hint += QSize(2 * self.frameWidth(), 2 * self.frameWidth()) return hint def resizeEvent(self, e): QFrame.resizeEvent(self, e) self.updateLayout() def replot(self): """ Redraw the plot If the `autoReplot` option is not set (which is the default) or if any curves are attached to raw data, the plot has to be refreshed explicitly in order to make changes visible. .. seealso:: :py:meth:`updateAxes()`, :py:meth:`setAutoReplot()` """ doAutoReplot = self.autoReplot() self.setAutoReplot(False) self.updateAxes() # Maybe the layout needs to be updated, because of changed # axes labels. We need to process them here before painting # to avoid that scales and canvas get out of sync. QApplication.sendPostedEvents(self, QEvent.LayoutRequest) if self.__data.canvas: try: self.__data.canvas.replot() except (AttributeError, TypeError): self.__data.canvas.update(self.__data.canvas.contentsRect()) self.setAutoReplot(doAutoReplot) def get_layout_state(self): return ( self.contentsRect(), self.__data.titleLabel.text(), self.__data.footerLabel.text(), [ (self.axisEnabled(axisId), self.axisTitle(axisId).text()) for axisId in self.AXES ], self.__data.legend, ) def updateLayout(self): """ Adjust plot content to its current size. .. seealso:: :py:meth:`resizeEvent()` """ # state = self.get_layout_state() # if self.__layout_state is not None and\ # state == self.__layout_state: # return # self.__layout_state = state self.__data.layout.activate(self, self.contentsRect()) titleRect = self.__data.layout.titleRect().toRect() footerRect = self.__data.layout.footerRect().toRect() scaleRect = [ self.__data.layout.scaleRect(axisId).toRect() for axisId in self.AXES ] legendRect = self.__data.layout.legendRect().toRect() canvasRect = self.__data.layout.canvasRect().toRect() if self.__data.titleLabel.text(): self.__data.titleLabel.setGeometry(titleRect) if not self.__data.titleLabel.isVisibleTo(self): self.__data.titleLabel.show() else: self.__data.titleLabel.hide() if self.__data.footerLabel.text(): self.__data.footerLabel.setGeometry(footerRect) if not self.__data.footerLabel.isVisibleTo(self): self.__data.footerLabel.show() else: self.__data.footerLabel.hide() for axisId in self.AXES: scaleWidget = self.axisWidget(axisId) if self.axisEnabled(axisId): if scaleRect[axisId] != scaleWidget.geometry(): scaleWidget.setGeometry(scaleRect[axisId]) startDist, endDist = scaleWidget.getBorderDistHint() scaleWidget.setBorderDist(startDist, endDist) # ------------------------------------------------------------- # XXX: The following was commented to fix issue #35 # Note: the same code part in Qwt's original source code is # annotated with the mention "do we need this code any # longer ???"... I guess not :) # if axisId in (self.xBottom, self.xTop): # r = QRegion(scaleRect[axisId]) # if self.axisEnabled(self.yLeft): # r = r.subtracted(QRegion(scaleRect[self.yLeft])) # if self.axisEnabled(self.yRight): # r = r.subtracted(QRegion(scaleRect[self.yRight])) # r.translate(-scaleRect[axisId].x(), -scaleRect[axisId].y()) # scaleWidget.setMask(r) # ------------------------------------------------------------- if not scaleWidget.isVisibleTo(self): scaleWidget.show() else: scaleWidget.hide() if self.__data.legend: if self.__data.legend.isEmpty(): self.__data.legend.hide() else: self.__data.legend.setGeometry(legendRect) self.__data.legend.show() self.__data.canvas.setGeometry(canvasRect) def getCanvasMarginsHint(self, maps, canvasRect): """ Calculate the canvas margins :param list maps: `QwtPlot.axisCnt` maps, mapping between plot and paint device coordinates :param QRectF canvasRect: Bounding rectangle where to paint Plot items might indicate, that they need some extra space at the borders of the canvas by the `QwtPlotItem.Margins` flag. .. seealso:: :py:meth:`updateCanvasMargins()`, :py:meth:`getCanvasMarginHint()` """ left = top = right = bottom = -1.0 for item in self.itemList(): if item.testItemAttribute(QwtPlotItem.Margins): m = item.getCanvasMarginHint( maps[item.xAxis()], maps[item.yAxis()], canvasRect ) left = max([left, m[self.yLeft]]) top = max([top, m[self.xTop]]) right = max([right, m[self.yRight]]) bottom = max([bottom, m[self.xBottom]]) return left, top, right, bottom def updateCanvasMargins(self): """ Update the canvas margins Plot items might indicate, that they need some extra space at the borders of the canvas by the `QwtPlotItem.Margins` flag. .. seealso:: :py:meth:`getCanvasMarginsHint()`, :py:meth:`QwtPlotItem.getCanvasMarginHint()` """ maps = [self.canvasMap(axisId) for axisId in self.AXES] margins = self.getCanvasMarginsHint(maps, self.canvas().contentsRect()) doUpdate = False for axisId in self.AXES: if margins[axisId] >= 0.0: m = math.ceil(margins[axisId]) self.plotLayout().setCanvasMargin(m, axisId) doUpdate = True if doUpdate: self.updateLayout() def drawCanvas(self, painter): """ Redraw the canvas. :param QPainter painter: Painter used for drawing .. warning:: drawCanvas calls drawItems what is also used for printing. Applications that like to add individual plot items better overload drawItems() .. seealso:: :py:meth:`getCanvasMarginsHint()`, :py:meth:`QwtPlotItem.getCanvasMarginHint()` """ maps = [self.canvasMap(axisId) for axisId in self.AXES] self.drawItems(painter, self.__data.canvas.contentsRect(), maps) def drawItems(self, painter, canvasRect, maps): """ Redraw the canvas. :param QPainter painter: Painter used for drawing :param QRectF canvasRect: Bounding rectangle where to paint :param list maps: `QwtPlot.axisCnt` maps, mapping between plot and paint device coordinates .. note:: Usually canvasRect is `contentsRect()` of the plot canvas. Due to a bug in Qt this rectangle might be wrong for certain frame styles ( f.e `QFrame.Box` ) and it might be necessary to fix the margins manually using `QWidget.setContentsMargins()` """ for item in self.itemList(): if item and item.isVisible(): painter.save() painter.setRenderHint( QPainter.Antialiasing, item.testRenderHint(QwtPlotItem.RenderAntialiased), ) item.draw(painter, maps[item.xAxis()], maps[item.yAxis()], canvasRect) painter.restore() def canvasMap(self, axisId): """ :param int axisId: Axis :return: Map for the axis on the canvas. With this map pixel coordinates can translated to plot coordinates and vice versa. .. seealso:: :py:class:`qwt.scale_map.QwtScaleMap`, :py:meth:`transform()`, :py:meth:`invTransform()` """ map_ = QwtScaleMap() if not self.__data.canvas: return map_ map_.setTransformation(self.axisScaleEngine(axisId).transformation()) sd = self.axisScaleDiv(axisId) if sd is None: return map_ map_.setScaleInterval(sd.lowerBound(), sd.upperBound()) if self.axisEnabled(axisId): s = self.axisWidget(axisId) if axisId in (self.yLeft, self.yRight): y = s.y() + s.startBorderDist() - self.__data.canvas.y() h = s.height() - s.startBorderDist() - s.endBorderDist() map_.setPaintInterval(y + h, y) else: x = s.x() + s.startBorderDist() - self.__data.canvas.x() w = s.width() - s.startBorderDist() - s.endBorderDist() map_.setPaintInterval(x, x + w) else: canvasRect = self.__data.canvas.contentsRect() if axisId in (self.yLeft, self.yRight): top = 0 if not self.plotLayout().alignCanvasToScale(self.xTop): top = self.plotLayout().canvasMargin(self.xTop) bottom = 0 if not self.plotLayout().alignCanvasToScale(self.xBottom): bottom = self.plotLayout().canvasMargin(self.xBottom) map_.setPaintInterval( canvasRect.bottom() - bottom, canvasRect.top() + top ) else: left = 0 if not self.plotLayout().alignCanvasToScale(self.yLeft): left = self.plotLayout().canvasMargin(self.yLeft) right = 0 if not self.plotLayout().alignCanvasToScale(self.yRight): right = self.plotLayout().canvasMargin(self.yRight) map_.setPaintInterval( canvasRect.left() + left, canvasRect.right() - right ) return map_ def setCanvasBackground(self, brush): """ Change the background of the plotting area Sets brush to `QPalette.Window` of all color groups of the palette of the canvas. Using `canvas().setPalette()` is a more powerful way to set these colors. :param QBrush brush: New background brush .. seealso:: :py:meth:`canvasBackground()` """ pal = self.__data.canvas.palette() pal.setBrush(QPalette.Window, QBrush(brush)) self.canvas().setPalette(pal) def canvasBackground(self): """ :return: Background brush of the plotting area. .. seealso:: :py:meth:`setCanvasBackground()` """ return self.canvas().palette().brush(QPalette.Active, QPalette.Window) def axisValid(self, axis_id): """ :param int axis_id: Axis :return: True if the specified axis exists, otherwise False """ return axis_id in QwtPlot.AXES def insertLegend(self, legend, pos=None, ratio=-1): """ Insert a legend If the position legend is `QwtPlot.LeftLegend` or `QwtPlot.RightLegend` the legend will be organized in one column from top to down. Otherwise the legend items will be placed in a table with a best fit number of columns from left to right. insertLegend() will set the plot widget as parent for the legend. The legend will be deleted in the destructor of the plot or when another legend is inserted. Legends, that are not inserted into the layout of the plot widget need to connect to the legendDataChanged() signal. Calling updateLegend() initiates this signal for an initial update. When the application code wants to implement its own layout this also needs to be done for rendering plots to a document ( see QwtPlotRenderer ). :param qwt.legend.QwtAbstractLegend legend: Legend :param QwtPlot.LegendPosition pos: The legend's position. :param float ratio: Ratio between legend and the bounding rectangle of title, canvas and axes .. note:: For top/left position the number of columns will be limited to 1, otherwise it will be set to unlimited. .. note:: The legend will be shrunk if it would need more space than the given ratio. The ratio is limited to ]0.0 .. 1.0]. In case of <= 0.0 it will be reset to the default ratio. The default vertical/horizontal ratio is 0.33/0.5. .. seealso:: :py:meth:`legend()`, :py:meth:`qwt.plot_layout.QwtPlotLayout.legendPosition()`, :py:meth:`qwt.plot_layout.QwtPlotLayout.setLegendPosition()` """ if pos is None: pos = self.RightLegend self.__data.layout.setLegendPosition(pos, ratio) if legend != self.__data.legend: if self.__data.legend and self.__data.legend.parent() is self: del self.__data.legend self.__data.legend = legend if self.__data.legend: self.legendDataChanged.connect(self.__data.legend.updateLegend) if self.__data.legend.parent() is not self: self.__data.legend.setParent(self) qwtEnableLegendItems(self, False) self.updateLegend() qwtEnableLegendItems(self, True) lpos = self.__data.layout.legendPosition() if legend is not None: if lpos in (self.LeftLegend, self.RightLegend): if legend.maxColumns() == 0: legend.setMaxColumns(1) elif lpos in (self.TopLegend, self.BottomLegend): legend.setMaxColumns(0) previousInChain = None if lpos == self.LeftLegend: previousInChain = self.axisWidget(QwtPlot.xTop) elif lpos == self.TopLegend: previousInChain = self elif lpos == self.RightLegend: previousInChain = self.axisWidget(QwtPlot.yRight) elif lpos == self.BottomLegend: previousInChain = self.footerLabel() if previousInChain is not None: qwtSetTabOrder(previousInChain, legend, True) self.updateLayout() def updateLegend(self, plotItem=None): """ If plotItem is None, emit QwtPlot.legendDataChanged for all plot item. Otherwise, emit the signal for passed plot item. :param qwt.plot.QwtPlotItem plotItem: Plot item .. seealso:: :py:meth:`QwtPlotItem.legendData()`, :py:data:`QwtPlot.legendDataChanged` """ if plotItem is None: items = list(self.itemList()) else: items = [plotItem] for plotItem in items: if plotItem is None: continue legendData = [] if plotItem.testItemAttribute(QwtPlotItem.Legend): legendData = plotItem.legendData() self.legendDataChanged.emit(plotItem, legendData) def updateLegendItems(self, plotItem, legendData): """ Update all plot items interested in legend attributes Call `QwtPlotItem.updateLegend()`, when the `QwtPlotItem.LegendInterest` flag is set. :param qwt.plot.QwtPlotItem plotItem: Plot item :param list legendData: Entries to be displayed for the plot item ( usually 1 ) .. seealso:: :py:meth:`QwtPlotItem.LegendInterest()`, :py:meth:`QwtPlotItem.updateLegend` """ if plotItem is not None: for item in self.itemList(): if item.testItemInterest(QwtPlotItem.LegendInterest): item.updateLegend(plotItem, legendData) def attachItem(self, plotItem, on): """ Attach/Detach a plot item :param qwt.plot.QwtPlotItem plotItem: Plot item :param bool on: When true attach the item, otherwise detach it """ if plotItem.testItemInterest(QwtPlotItem.LegendInterest): for item in self.itemList(): legendData = [] if on and item.testItemAttribute(QwtPlotItem.Legend): legendData = item.legendData() plotItem.updateLegend(item, legendData) if on: self.insertItem(plotItem) else: self.removeItem(plotItem) self.itemAttached.emit(plotItem, on) if plotItem.testItemAttribute(QwtPlotItem.Legend): if on: self.updateLegend(plotItem) else: self.legendDataChanged.emit(plotItem, []) self.autoRefresh() def print_(self, printer): """ Print plot to printer :param printer: Printer :type printer: QPaintDevice or QPrinter or QSvgGenerator """ from qwt.plot_renderer import QwtPlotRenderer renderer = QwtPlotRenderer(self) renderer.renderTo(self, printer) def exportTo( self, filename, size=(800, 600), size_mm=None, resolution=72.0, format_=None ): """ Export plot to PDF or image file (SVG, PNG, ...) :param str filename: Filename :param tuple size: (width, height) size in pixels :param tuple size_mm: (width, height) size in millimeters :param float resolution: Image resolution :param str format_: File format (PDF, SVG, PNG, ...) """ if size_mm is None: size_mm = tuple(25.4 * np.array(size) / resolution) from qwt.plot_renderer import QwtPlotRenderer renderer = QwtPlotRenderer(self) renderer.renderDocument(self, filename, size_mm, resolution, format_) class QwtPlotItem_PrivateData(object): def __init__(self): self.plot = None self.isVisible = True self.attributes = 0 self.interests = 0 self.renderHints = 0 self.z = 0.0 self.xAxis = QwtPlot.xBottom self.yAxis = QwtPlot.yLeft self.legendIconSize = QSize(8, 8) self.title = None # QwtText self.icon = None class QwtPlotItem(object): """ Base class for items on the plot canvas A plot item is "something", that can be painted on the plot canvas, or only affects the scales of the plot widget. They can be categorized as: - Representator A "Representator" is an item that represents some sort of data on the plot canvas. The different representator classes are organized according to the characteristics of the data: - :py:class:`qwt.plot_marker.QwtPlotMarker`: Represents a point or a horizontal/vertical coordinate - :py:class:`qwt.plot_curve.QwtPlotCurve`: Represents a series of points - Decorators A "Decorator" is an item, that displays additional information, that is not related to any data: - :py:class:`qwt.plot_grid.QwtPlotGrid` Depending on the `QwtPlotItem.ItemAttribute` flags, an item is included into autoscaling or has an entry on the legend. Before misusing the existing item classes it might be better to implement a new type of plot item ( don't implement a watermark as spectrogram ). Deriving a new type of `QwtPlotItem` primarily means to implement the `YourPlotItem.draw()` method. .. seealso:: The cpuplot example shows the implementation of additional plot items. .. py:class:: QwtPlotItem([title=None]) Constructor :param title: Title of the item :type title: qwt.text.QwtText or str """ # enum RttiValues ( Rtti_PlotItem, Rtti_PlotGrid, Rtti_PlotScale, Rtti_PlotLegend, Rtti_PlotMarker, Rtti_PlotCurve, Rtti_PlotSpectroCurve, Rtti_PlotIntervalCurve, Rtti_PlotHistogram, Rtti_PlotSpectrogram, Rtti_PlotSVG, Rtti_PlotTradingCurve, Rtti_PlotBarChart, Rtti_PlotMultiBarChart, Rtti_PlotShape, Rtti_PlotTextLabel, Rtti_PlotZone, ) = list(range(17)) Rtti_PlotUserItem = 1000 # enum ItemAttribute Legend = 0x01 AutoScale = 0x02 Margins = 0x04 # enum ItemInterest ScaleInterest = 0x01 LegendInterest = 0x02 # enum RenderHint RenderAntialiased = 0x1 def __init__(self, title=None, icon=None): """title: QwtText""" if title is None: title = QwtText("") if hasattr(title, "capitalize"): # avoids dealing with Py3K compat. title = QwtText(title) assert isinstance(title, QwtText) self.__data = QwtPlotItem_PrivateData() self.__data.title = title self.__data.icon = icon def attach(self, plot): """ Attach the item to a plot. This method will attach a `QwtPlotItem` to the `QwtPlot` argument. It will first detach the `QwtPlotItem` from any plot from a previous call to attach (if necessary). If a None argument is passed, it will detach from any `QwtPlot` it was attached to. :param qwt.plot.QwtPlot plot: Plot widget .. seealso:: :py:meth:`detach()` """ if plot is self.__data.plot: return if self.__data.plot: self.__data.plot.attachItem(self, False) self.__data.plot = plot if self.__data.plot: self.__data.plot.attachItem(self, True) def detach(self): """ Detach the item from a plot. This method detaches a `QwtPlotItem` from any `QwtPlot` it has been associated with. .. seealso:: :py:meth:`attach()` """ self.attach(None) def rtti(self): """ Return rtti for the specific class represented. `QwtPlotItem` is simply a virtual interface class, and base classes will implement this method with specific rtti values so a user can differentiate them. :return: rtti value """ return self.Rtti_PlotItem def plot(self): """ :return: attached plot """ return self.__data.plot def z(self): """ Plot items are painted in increasing z-order. :return: item z order .. seealso:: :py:meth:`setZ()`, :py:meth:`QwtPlotDict.itemList()` """ return self.__data.z def setZ(self, z): """ Set the z value Plot items are painted in increasing z-order. :param float z: Z-value .. seealso:: :py:meth:`z()`, :py:meth:`QwtPlotDict.itemList()` """ if self.__data.z != z: if self.__data.plot: self.__data.plot.attachItem(self, False) self.__data.z = z if self.__data.plot: self.__data.plot.attachItem(self, True) self.itemChanged() def setTitle(self, title): """ Set a new title :param title: Title :type title: qwt.text.QwtText or str .. seealso:: :py:meth:`title()` """ if not isinstance(title, QwtText): title = QwtText(title) if self.__data.title != title: self.__data.title = title self.legendChanged() def title(self): """ :return: Title of the item .. seealso:: :py:meth:`setTitle()` """ return self.__data.title def setIcon(self, icon): """ Set item icon :param icon: Icon :type icon: QIcon .. seealso:: :py:meth:`icon()` """ self.__data.icon = icon def icon(self): """ :return: Icon of the item .. seealso:: :py:meth:`setIcon()` """ return self.__data.icon def setItemAttribute(self, attribute, on=True): """ Toggle an item attribute :param int attribute: Attribute type :param bool on: True/False .. seealso:: :py:meth:`testItemAttribute()` """ if bool(self.__data.attributes & attribute) != on: if on: self.__data.attributes |= attribute else: self.__data.attributes &= ~attribute if attribute == QwtPlotItem.Legend: self.legendChanged() self.itemChanged() def testItemAttribute(self, attribute): """ Test an item attribute :param int attribute: Attribute type :return: True/False .. seealso:: :py:meth:`setItemAttribute()` """ return bool(self.__data.attributes & attribute) def setItemInterest(self, interest, on=True): """ Toggle an item interest :param int attribute: Interest type :param bool on: True/False .. seealso:: :py:meth:`testItemInterest()` """ if bool(self.__data.interests & interest) != on: if on: self.__data.interests |= interest else: self.__data.interests &= ~interest self.itemChanged() def testItemInterest(self, interest): """ Test an item interest :param int attribute: Interest type :return: True/False .. seealso:: :py:meth:`setItemInterest()` """ return bool(self.__data.interests & interest) def setRenderHint(self, hint, on=True): """ Toggle a render hint :param int hint: Render hint :param bool on: True/False .. seealso:: :py:meth:`testRenderHint()` """ if bool(self.__data.renderHints & hint) != on: if on: self.__data.renderHints |= hint else: self.__data.renderHints &= ~hint self.itemChanged() def testRenderHint(self, hint): """ Test a render hint :param int attribute: Render hint :return: True/False .. seealso:: :py:meth:`setRenderHint()` """ return bool(self.__data.renderHints & hint) def setLegendIconSize(self, size): """ Set the size of the legend icon The default setting is 8x8 pixels :param QSize size: Size .. seealso:: :py:meth:`legendIconSize()`, :py:meth:`legendIcon()` """ if self.__data.legendIconSize != size: self.__data.legendIconSize = size self.legendChanged() def legendIconSize(self): """ :return: Legend icon size .. seealso:: :py:meth:`setLegendIconSize()`, :py:meth:`legendIcon()` """ return self.__data.legendIconSize def legendIcon(self, index, size): """ :param int index: Index of the legend entry (usually there is only one) :param QSizeF size: Icon size :return: Icon representing the item on the legend The default implementation returns an invalid icon .. seealso:: :py:meth:`setLegendIconSize()`, :py:meth:`legendData()` """ return QwtGraphic() def show(self): """Show the item""" self.setVisible(True) def hide(self): """Hide the item""" self.setVisible(False) def setVisible(self, on): """ Show/Hide the item :param bool on: Show if True, otherwise hide .. seealso:: :py:meth:`isVisible()`, :py:meth:`show()`, :py:meth:`hide()` """ if on != self.__data.isVisible: self.__data.isVisible = on self.itemChanged() def isVisible(self): """ :return: True if visible .. seealso:: :py:meth:`setVisible()`, :py:meth:`show()`, :py:meth:`hide()` """ return self.__data.isVisible def itemChanged(self): """ Update the legend and call `QwtPlot.autoRefresh()` for the parent plot. .. seealso:: :py:meth:`QwtPlot.legendChanged()`, :py:meth:`QwtPlot.autoRefresh()` """ if self.__data.plot: self.__data.plot.autoRefresh() def legendChanged(self): """ Update the legend of the parent plot. .. seealso:: :py:meth:`QwtPlot.updateLegend()`, :py:meth:`itemChanged()` """ if self.testItemAttribute(QwtPlotItem.Legend) and self.__data.plot: self.__data.plot.updateLegend(self) def setAxes(self, xAxis, yAxis): """ Set X and Y axis The item will painted according to the coordinates of its Axes. :param int xAxis: X Axis (`QwtPlot.xBottom` or `QwtPlot.xTop`) :param int yAxis: Y Axis (`QwtPlot.yLeft` or `QwtPlot.yRight`) .. seealso:: :py:meth:`setXAxis()`, :py:meth:`setYAxis()`, :py:meth:`xAxis()`, :py:meth:`yAxis()` """ if xAxis == QwtPlot.xBottom or xAxis == QwtPlot.xTop: self.__data.xAxis = xAxis if yAxis == QwtPlot.yLeft or yAxis == QwtPlot.yRight: self.__data.yAxis = yAxis self.itemChanged() def setAxis(self, xAxis, yAxis): """ Set X and Y axis .. warning:: `setAxis` has been removed in Qwt6: please use :py:meth:`setAxes()` instead """ import warnings warnings.warn( "`setAxis` has been removed in Qwt6: " "please use `setAxes` instead", RuntimeWarning, ) self.setAxes(xAxis, yAxis) def setXAxis(self, axis): """ Set the X axis The item will painted according to the coordinates its Axes. :param int axis: X Axis (`QwtPlot.xBottom` or `QwtPlot.xTop`) .. seealso:: :py:meth:`setAxes()`, :py:meth:`setYAxis()`, :py:meth:`xAxis()`, :py:meth:`yAxis()` """ if axis in (QwtPlot.xBottom, QwtPlot.xTop): self.__data.xAxis = axis self.itemChanged() def setYAxis(self, axis): """ Set the Y axis The item will painted according to the coordinates its Axes. :param int axis: Y Axis (`QwtPlot.yLeft` or `QwtPlot.yRight`) .. seealso:: :py:meth:`setAxes()`, :py:meth:`setXAxis()`, :py:meth:`xAxis()`, :py:meth:`yAxis()` """ if axis in (QwtPlot.yLeft, QwtPlot.yRight): self.__data.yAxis = axis self.itemChanged() def xAxis(self): """ :return: xAxis """ return self.__data.xAxis def yAxis(self): """ :return: yAxis """ return self.__data.yAxis def boundingRect(self): """ :return: An invalid bounding rect: QRectF(1.0, 1.0, -2.0, -2.0) .. note:: A width or height < 0.0 is ignored by the autoscaler """ return QRectF(1.0, 1.0, -2.0, -2.0) def getCanvasMarginHint(self, xMap, yMap, canvasRect): """ Calculate a hint for the canvas margin When the QwtPlotItem::Margins flag is enabled the plot item indicates, that it needs some margins at the borders of the canvas. This is f.e. used by bar charts to reserve space for displaying the bars. The margins are in target device coordinates ( pixels on screen ) :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas in painter coordinates .. seealso:: :py:meth:`QwtPlot.getCanvasMarginsHint()`, :py:meth:`QwtPlot.updateCanvasMargins()`, """ left = top = right = bottom = 0.0 return left, top, right, bottom def legendData(self): """ Return all information, that is needed to represent the item on the legend `QwtLegendData` is basically a list of QVariants that makes it possible to overload and reimplement legendData() to return almost any type of information, that is understood by the receiver that acts as the legend. The default implementation returns one entry with the title() of the item and the legendIcon(). :return: Data, that is needed to represent the item on the legend .. seealso:: :py:meth:`title()`, :py:meth:`legendIcon()`, :py:class:`qwt.legend.QwtLegend` """ data = QwtLegendData() label = self.title() label.setRenderFlags(label.renderFlags() & Qt.AlignLeft) data.setValue(QwtLegendData.TitleRole, label) graphic = self.legendIcon(0, self.legendIconSize()) if not graphic.isNull(): data.setValue(QwtLegendData.IconRole, graphic) return [data] def updateLegend(self, item, data): """ Update the item to changes of the legend info Plot items that want to display a legend ( not those, that want to be displayed on a legend ! ) will have to implement updateLegend(). updateLegend() is only called when the LegendInterest interest is enabled. The default implementation does nothing. :param qwt.plot.QwtPlotItem item: Plot item to be displayed on a legend :param list data: Attributes how to display item on the legend .. note:: Plot items, that want to be displayed on a legend need to enable the `QwtPlotItem.Legend` flag and to implement legendData() and legendIcon() """ pass def scaleRect(self, xMap, yMap): """ Calculate the bounding scale rectangle of 2 maps :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :return: Bounding scale rect of the scale maps, not normalized """ return QRectF(xMap.s1(), yMap.s1(), xMap.sDist(), yMap.sDist()) def paintRect(self, xMap, yMap): """ Calculate the bounding paint rectangle of 2 maps :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :return: Bounding paint rectangle of the scale maps, not normalized """ return QRectF(xMap.p1(), yMap.p1(), xMap.pDist(), yMap.pDist()) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641729018.0 PythonQwt-0.10.2/qwt/plot_canvas.py0000666000000000000000000007345200000000000014153 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlotCanvas ------------- .. autoclass:: QwtPlotCanvas :members: """ import os from qwt.null_paintdevice import QwtNullPaintDevice from qwt.painter import QwtPainter from qtpy.QtGui import ( QPaintEngine, QPen, QBrush, QRegion, QImage, QPainterPath, QPixmap, QGradient, QPainter, qAlpha, QPolygonF, ) from qtpy.QtWidgets import QFrame, QStyleOption, QStyle from qtpy.QtCore import Qt, QSizeF, QEvent, QPointF, QRectF from qtpy import QtCore as QC QT_MAJOR_VERSION = int(QC.__version__.split(".")[0]) QT_API = os.environ["QT_API"] if QT_API in ("pyqt", "pyqt4"): from PyQt4.QtGui import QStyleOptionFrameV3 as QStyleOptionFrame elif QT_API == "pyside2": from PySide2.QtWidgets import QStyleOptionFrame else: from qtpy.QtWidgets import QStyleOptionFrame class Border(object): def __init__(self): self.pathlist = [] self.rectList = [] self.clipRegion = QRegion() class Background(object): def __init__(self): self.path = QPainterPath() self.brush = QBrush() self.origin = QPointF() class QwtStyleSheetRecorder(QwtNullPaintDevice): def __init__(self, size): super(QwtStyleSheetRecorder, self).__init__() self.__size = size self.__pen = QPen() self.__brush = QBrush() self.__origin = QPointF() self.clipRects = [] self.border = Border() self.background = Background() def updateState(self, state): if state.state() & QPaintEngine.DirtyPen: self.__pen = state.pen() if state.state() & QPaintEngine.DirtyBrush: self.__brush = state.brush() if state.state() & QPaintEngine.DirtyBrushOrigin: self.__origin = state.brushOrigin() def drawRects(self, rects, count): for i in range(count): self.border.rectList += [rects[i]] def drawPath(self, path): rect = QRectF(QPointF(0.0, 0.0), self.__size) if path.controlPointRect().contains(rect.center()): self.setCornerRects(path) self.alignCornerRects(rect) self.background.path = path self.background.brush = self.__brush self.background.origin = self.__origin else: self.border.pathlist += [path] def setCornerRects(self, path): pos = QPointF(0.0, 0.0) for i in range(path.elementCount()): el = path.elementAt(i) if el.type in (QPainterPath.MoveToElement, QPainterPath.LineToElement): pos.setX(el.x) pos.setY(el.y) elif el.type == QPainterPath.CurveToElement: r = QRectF(pos, QPointF(el.x, el.y)) self.clipRects += [r.normalized()] pos.setX(el.x) pos.setY(el.y) elif el.type == QPainterPath.CurveToDataElement: if self.clipRects: r = self.clipRects[-1] r.setCoords( min([r.left(), el.x]), min([r.top(), el.y]), max([r.right(), el.x]), max([r.bottom(), el.y]), ) self.clipRects[-1] = r.normalized() def sizeMetrics(self): return self.__size def alignCornerRects(self, rect): for r in self.clipRects: if r.center().x() < rect.center().x(): r.setLeft(rect.left()) else: r.setRight(rect.right()) if r.center().y() < rect.center().y(): r.setTop(rect.top()) else: r.setBottom(rect.bottom()) def qwtDrawBackground(painter, canvas): painter.save() borderClip = canvas.borderPath(canvas.rect()) if not borderClip.isEmpty(): painter.setClipPath(borderClip, Qt.IntersectClip) brush = canvas.palette().brush(canvas.backgroundRole()) if brush.style() == Qt.TexturePattern: pm = QPixmap(canvas.size()) QwtPainter.fillPixmap(canvas, pm) painter.drawPixmap(0, 0, pm) elif brush.gradient(): rects = [] if brush.gradient().coordinateMode() == QGradient.ObjectBoundingMode: rects += [canvas.rect()] else: rects += [painter.clipRegion().boundingRect()] useRaster = False if painter.paintEngine().type() == QPaintEngine.X11: useRaster = True if useRaster: format_ = QImage.Format_RGB32 stops = brush.gradient().stops() for stop in stops: if stop.second.alpha() != 255: format_ = QImage.Format_ARGB32 break image = QImage(canvas.size(), format_) pntr = QPainter(image) pntr.setPen(Qt.NoPen) pntr.setBrush(brush) for rect in rects: pntr.drawRect(rect) pntr.end() painter.drawImage(0, 0, image) else: painter.setPen(Qt.NoPen) painter.setBrush(brush) for rect in rects: painter.drawRect(rect) else: painter.setPen(Qt.NoPen) painter.setBrush(brush) painter.drawRect(painter.clipRegion().boundingRect()) painter.restore() def qwtRevertPath(path): if path.elementCount() == 4: el0 = path.elementAt(0) el3 = path.elementAt(3) path.setElementPositionAt(0, el3.x, el3.y) path.setElementPositionAt(3, el0.x, el0.y) def qwtCombinePathList(rect, pathList): if not pathList: return QPainterPath() ordered = [None] * 8 for subPath in pathList: index = -1 br = subPath.controlPointRect() if br.center().x() < rect.center().x(): if br.center().y() < rect.center().y(): if abs(br.top() - rect.top()) < abs(br.left() - rect.left()): index = 1 else: index = 0 else: if abs(br.bottom() - rect.bottom) < abs(br.left() - rect.left()): index = 6 else: index = 7 if subPath.currentPosition().y() > br.center().y(): qwtRevertPath(subPath) else: if br.center().y() < rect.center().y(): if abs(br.top() - rect.top()) < abs(br.right() - rect.right()): index = 2 else: index = 3 else: if abs(br.bottom() - rect.bottom()) < abs(br.right() - rect.right()): index = 5 else: index = 4 if subPath.currentPosition().y() < br.center().y(): qwtRevertPath(subPath) ordered[index] = subPath for i in range(4): if ordered[2 * i].isEmpty() != ordered[2 * i + 1].isEmpty(): return QPainterPath() corners = QPolygonF(rect) path = QPainterPath() for i in range(4): if ordered[2 * i].isEmpty(): path.lineTo(corners[i]) else: path.connectPath(ordered[2 * i]) path.connectPath(ordered[2 * i + 1]) path.closeSubpath() return path def qwtDrawStyledBackground(w, painter): opt = QStyleOption() opt.initFrom(w) w.style().drawPrimitive(QStyle.PE_Widget, opt, painter, w) def qwtBackgroundWidget(w): if w.parentWidget() is None: return w if w.autoFillBackground(): brush = w.palette().brush(w.backgroundRole()) if brush.color().alpha() > 0: return w if w.testAttribute(Qt.WA_StyledBackground): image = QImage(1, 1, QImage.Format_ARGB32) image.fill(Qt.transparent) painter = QPainter(image) painter.translate(-w.rect().center()) qwtDrawStyledBackground(w, painter) painter.end() if qAlpha(image.pixel(0, 0)) != 0: return w return qwtBackgroundWidget(w.parentWidget()) def qwtFillBackground(*args): if len(args) == 2: painter, canvas = args rects = [] if canvas.testAttribute(Qt.WA_StyledBackground): recorder = QwtStyleSheetRecorder(canvas.size()) p = QPainter(recorder) qwtDrawStyledBackground(canvas, p) p.end() if recorder.background.brush.isOpaque(): rects = recorder.clipRects else: rects += [canvas.rect()] else: r = canvas.rect() radius = canvas.borderRadius() if radius > 0.0: sz = QSizeF(radius, radius) rects += [ QRectF(r.topLeft(), sz), QRectF(r.topRight() - QPointF(radius, 0), sz), QRectF(r.bottomRight() - QPointF(radius, radius), sz), QRectF(r.bottomLeft() - QPointF(0, radius), sz), ] qwtFillBackground(painter, canvas, rects) elif len(args) == 3: painter, widget, fillRects = args if not fillRects: return if painter.hasClipping(): clipRegion = painter.transform().map(painter.clipRegion()) else: clipRegion = widget.contentsRect() bgWidget = qwtBackgroundWidget(widget.parentWidget()) for fillRect in fillRects: rect = QRectF(fillRect).toAlignedRect() if clipRegion.intersects(rect): pm = QPixmap(rect.size()) QwtPainter.fillPixmap( bgWidget, pm, widget.mapTo(bgWidget, rect.topLeft()) ) painter.drawPixmap(rect, pm) else: raise TypeError( "%s() takes 2 or 3 argument(s) (%s given)" % ("qwtFillBackground", len(args)) ) class StyleSheetBackground(object): def __init__(self): self.brush = QBrush() self.origin = QPointF() class StyleSheet(object): def __init__(self): self.hasBorder = False self.borderPath = QPainterPath() self.cornerRects = [] self.background = StyleSheetBackground() class QwtPlotCanvas_PrivateData(object): def __init__(self): self.focusIndicator = QwtPlotCanvas.NoFocusIndicator self.borderRadius = 0 self.paintAttributes = 0 self.backingStore = None self.styleSheet = StyleSheet() self.styleSheet.hasBorder = False class QwtPlotCanvas(QFrame): """ Canvas of a QwtPlot. Canvas is the widget where all plot items are displayed .. seealso:: :py:meth:`qwt.plot.QwtPlot.setCanvas()` Paint attributes: * `QwtPlotCanvas.BackingStore`: Paint double buffered reusing the content of the pixmap buffer when possible. Using a backing store might improve the performance significantly, when working with widget overlays (like rubber bands). Disabling the cache might improve the performance for incremental paints (using :py:class:`qwt.plot_directpainter.QwtPlotDirectPainter`). * `QwtPlotCanvas.Opaque`: Try to fill the complete contents rectangle of the plot canvas When using styled backgrounds Qt assumes, that the canvas doesn't fill its area completely (f.e because of rounded borders) and fills the area below the canvas. When this is done with gradients it might result in a serious performance bottleneck - depending on the size. When the Opaque attribute is enabled the canvas tries to identify the gaps with some heuristics and to fill those only. .. warning:: Will not work for semitransparent backgrounds * `QwtPlotCanvas.HackStyledBackground`: Try to improve painting of styled backgrounds `QwtPlotCanvas` supports the box model attributes for customizing the layout with style sheets. Unfortunately the design of Qt style sheets has no concept how to handle backgrounds with rounded corners - beside of padding. When HackStyledBackground is enabled the plot canvas tries to separate the background from the background border by reverse engineering to paint the background before and the border after the plot items. In this order the border gets perfectly antialiased and you can avoid some pixel artifacts in the corners. * `QwtPlotCanvas.ImmediatePaint`: When ImmediatePaint is set replot() calls repaint() instead of update(). .. seealso:: :py:meth:`replot()`, :py:meth:`QWidget.repaint()`, :py:meth:`QWidget.update()` Focus indicators: * `QwtPlotCanvas.NoFocusIndicator`: Don't paint a focus indicator * `QwtPlotCanvas.CanvasFocusIndicator`: The focus is related to the complete canvas. Paint the focus indicator using paintFocus() * `QwtPlotCanvas.ItemFocusIndicator`: The focus is related to an item (curve, point, ...) on the canvas. It is up to the application to display a focus indication using f.e. highlighting. .. py:class:: QwtPlotCanvas([plot=None]) Constructor :param qwt.plot.QwtPlot plot: Parent plot widget .. seealso:: :py:meth:`qwt.plot.QwtPlot.setCanvas()` """ # enum PaintAttribute BackingStore = 1 Opaque = 2 HackStyledBackground = 4 ImmediatePaint = 8 # enum FocusIndicator NoFocusIndicator, CanvasFocusIndicator, ItemFocusIndicator = list(range(3)) def __init__(self, plot=None): super(QwtPlotCanvas, self).__init__(plot) self.__plot = plot self.setFrameStyle(QFrame.Panel | QFrame.Sunken) self.setLineWidth(2) self.__data = QwtPlotCanvas_PrivateData() self.setCursor(Qt.CrossCursor) self.setAutoFillBackground(True) self.setPaintAttribute(QwtPlotCanvas.BackingStore, False) self.setPaintAttribute(QwtPlotCanvas.Opaque, True) self.setPaintAttribute(QwtPlotCanvas.HackStyledBackground, True) def plot(self): """ :return: Parent plot widget """ return self.__plot def setPaintAttribute(self, attribute, on=True): """ Changing the paint attributes Paint attributes: * `QwtPlotCanvas.BackingStore` * `QwtPlotCanvas.Opaque` * `QwtPlotCanvas.HackStyledBackground` * `QwtPlotCanvas.ImmediatePaint` :param int attribute: Paint attribute :param bool on: On/Off .. seealso:: :py:meth:`testPaintAttribute()`, :py:meth:`backingStore()` """ if bool(self.__data.paintAttributes & attribute) == on: return if on: self.__data.paintAttributes |= attribute else: self.__data.paintAttributes &= ~attribute if attribute == self.BackingStore: if on: if self.__data.backingStore is None: self.__data.backingStore = QPixmap() if self.isVisible(): if QT_MAJOR_VERSION >= 5: self.__data.backingStore = self.grab(self.rect()) else: self.__data.backingStore = QPixmap.grabWidget(self, self.rect()) else: self.__data.backingStore = None elif attribute == self.Opaque: if on: self.setAttribute(Qt.WA_OpaquePaintEvent, True) elif attribute in (self.HackStyledBackground, self.ImmediatePaint): pass def testPaintAttribute(self, attribute): """ Test whether a paint attribute is enabled :param int attribute: Paint attribute :return: True, when attribute is enabled .. seealso:: :py:meth:`setPaintAttribute()` """ return self.__data.paintAttributes & attribute def backingStore(self): """ :return: Backing store, might be None """ return self.__data.backingStore def invalidateBackingStore(self): """Invalidate the internal backing store""" if self.__data.backingStore: self.__data.backingStore = QPixmap() def setFocusIndicator(self, focusIndicator): """ Set the focus indicator Focus indicators: * `QwtPlotCanvas.NoFocusIndicator` * `QwtPlotCanvas.CanvasFocusIndicator` * `QwtPlotCanvas.ItemFocusIndicator` :param int focusIndicator: Focus indicator .. seealso:: :py:meth:`focusIndicator()` """ self.__data.focusIndicator = focusIndicator def focusIndicator(self): """ :return: Focus indicator .. seealso:: :py:meth:`setFocusIndicator()` """ return self.__data.focusIndicator def setBorderRadius(self, radius): """ Set the radius for the corners of the border frame :param float radius: Radius of a rounded corner .. seealso:: :py:meth:`borderRadius()` """ self.__data.borderRadius = max([0.0, radius]) def borderRadius(self): """ :return: Radius for the corners of the border frame .. seealso:: :py:meth:`setBorderRadius()` """ return self.__data.borderRadius def event(self, event): if event.type() == QEvent.PolishRequest: if self.testPaintAttribute(self.Opaque): self.setAttribute(Qt.WA_OpaquePaintEvent, True) if event.type() in (QEvent.PolishRequest, QEvent.StyleChange): self.updateStyleSheetInfo() return QFrame.event(self, event) def paintEvent(self, event): painter = QPainter(self) painter.setClipRegion(event.region()) if ( self.testPaintAttribute(self.BackingStore) and self.__data.backingStore is not None ): bs = self.__data.backingStore if QT_MAJOR_VERSION >= 5: pixelRatio = bs.devicePixelRatio() else: pixelRatio = 1.0 if bs.size() != self.size() * pixelRatio: bs = QwtPainter.backingStore(self, self.size()) if self.testAttribute(Qt.WA_StyledBackground): p = QPainter(bs) qwtFillBackground(p, self) self.drawCanvas(p, True) else: p = QPainter() if self.__data.borderRadius <= 0.0: # print('**DEBUG: QwtPlotCanvas.paintEvent') QwtPainter.fillPixmap(self, bs) p.begin(bs) self.drawCanvas(p, False) else: p.begin(bs) qwtFillBackground(p, self) self.drawCanvas(p, True) if self.frameWidth() > 0: self.drawBorder(p) p.end() painter.drawPixmap(0, 0, self.__data.backingStore) else: if self.testAttribute(Qt.WA_StyledBackground): if self.testAttribute(Qt.WA_OpaquePaintEvent): qwtFillBackground(painter, self) self.drawCanvas(painter, True) else: self.drawCanvas(painter, False) else: if self.testAttribute(Qt.WA_OpaquePaintEvent): if self.autoFillBackground(): qwtFillBackground(painter, self) qwtDrawBackground(painter, self) else: if self.borderRadius() > 0.0: clipPath = QPainterPath() clipPath.addRect(self.rect()) clipPath = clipPath.subtracted(self.borderPath(self.rect())) painter.save() painter.setClipPath(clipPath, Qt.IntersectClip) qwtFillBackground(painter, self) qwtDrawBackground(painter, self) painter.restore() self.drawCanvas(painter, False) if self.frameWidth() > 0: self.drawBorder(painter) if self.hasFocus() and self.focusIndicator() == self.CanvasFocusIndicator: self.drawFocusIndicator(painter) def drawCanvas(self, painter, withBackground): hackStyledBackground = False if ( withBackground and self.testAttribute(Qt.WA_StyledBackground) and self.testPaintAttribute(self.HackStyledBackground) ): # Antialiasing rounded borders is done by # inserting pixels with colors between the # border color and the color on the canvas, # When the border is painted before the plot items # these colors are interpolated for the canvas # and the plot items need to be clipped excluding # the anialiased pixels. In situations, where # the plot items fill the area at the rounded # borders this is noticeable. # The only way to avoid these annoying "artefacts" # is to paint the border on top of the plot items. if ( self.__data.styleSheet.hasBorder and not self.__data.styleSheet.borderPath.isEmpty() ): # We have a border with at least one rounded corner hackStyledBackground = True if withBackground: painter.save() if self.testAttribute(Qt.WA_StyledBackground): if hackStyledBackground: # paint background without border painter.setPen(Qt.NoPen) painter.setBrush(self.__data.styleSheet.background.brush) painter.setBrushOrigin(self.__data.styleSheet.background.origin) painter.setClipPath(self.__data.styleSheet.borderPath) painter.drawRect(self.contentsRect()) else: qwtDrawStyledBackground(self, painter) elif self.autoFillBackground(): painter.setPen(Qt.NoPen) painter.setBrush(self.palette().brush(self.backgroundRole())) if self.__data.borderRadius > 0.0 and self.rect() == self.frameRect(): if self.frameWidth() > 0: painter.setClipPath(self.borderPath(self.rect())) painter.drawRect(self.rect()) else: painter.setRenderHint(QPainter.Antialiasing, True) painter.drawPath(self.borderPath(self.rect())) else: painter.drawRect(self.rect()) painter.restore() painter.save() if not self.__data.styleSheet.borderPath.isEmpty(): painter.setClipPath(self.__data.styleSheet.borderPath, Qt.IntersectClip) else: if self.__data.borderRadius > 0.0: painter.setClipPath(self.borderPath(self.frameRect()), Qt.IntersectClip) else: # print('**DEBUG: QwtPlotCanvas.drawCanvas') painter.setClipRect(self.contentsRect(), Qt.IntersectClip) self.plot().drawCanvas(painter) painter.restore() if withBackground and hackStyledBackground: # Now paint the border on top opt = QStyleOptionFrame() opt.initFrom(self) self.style().drawPrimitive(QStyle.PE_Frame, opt, painter, self) def drawBorder(self, painter): """ Draw the border of the plot canvas :param QPainter painter: Painter .. seealso:: :py:meth:`setBorderRadius()` """ if self.__data.borderRadius > 0: if self.frameWidth() > 0: QwtPainter.drawRoundedFrame( painter, QRectF(self.frameRect()), self.__data.borderRadius, self.__data.borderRadius, self.palette(), self.frameWidth(), self.frameStyle(), ) else: opt = QStyleOptionFrame() opt.initFrom(self) try: shape_mask = QFrame.Shape_Mask.value shadow_mask = QFrame.Shadow_Mask.value except AttributeError: shape_mask = QFrame.Shape_Mask shadow_mask = QFrame.Shadow_Mask frameShape = self.frameStyle() & shape_mask frameShadow = self.frameStyle() & shadow_mask opt.frameShape = QFrame.Shape(int(opt.frameShape) | frameShape) if frameShape in ( QFrame.Box, QFrame.HLine, QFrame.VLine, QFrame.StyledPanel, QFrame.Panel, ): opt.lineWidth = self.lineWidth() opt.midLineWidth = self.midLineWidth() else: opt.lineWidth = self.frameWidth() if frameShadow == self.Sunken: opt.state |= QStyle.State_Sunken elif frameShadow == self.Raised: opt.state |= QStyle.State_Raised self.style().drawControl(QStyle.CE_ShapedFrame, opt, painter, self) def resizeEvent(self, event): QFrame.resizeEvent(self, event) self.updateStyleSheetInfo() def drawFocusIndicator(self, painter): """ Draw the focus indication :param QPainter painter: Painter """ margin = 1 focusRect = self.contentsRect() focusRect.setRect( focusRect.x() + margin, focusRect.y() + margin, focusRect.width() - 2 * margin, focusRect.height() - 2 * margin, ) QwtPainter.drawFocusRect(painter, self, focusRect) def replot(self): """ Invalidate the paint cache and repaint the canvas """ self.invalidateBackingStore() if self.testPaintAttribute(self.ImmediatePaint): self.repaint(self.contentsRect()) else: self.update(self.contentsRect()) def invalidatePaintCache(self): import warnings warnings.warn( "`invalidatePaintCache` has been removed: " "please use `replot` instead", RuntimeWarning, ) self.replot() def updateStyleSheetInfo(self): """ Update the cached information about the current style sheet """ if not self.testAttribute(Qt.WA_StyledBackground): return recorder = QwtStyleSheetRecorder(self.size()) painter = QPainter(recorder) opt = QStyleOption() opt.initFrom(self) self.style().drawPrimitive(QStyle.PE_Widget, opt, painter, self) painter.end() self.__data.styleSheet.hasBorder = len(recorder.border.rectList) > 0 self.__data.styleSheet.cornerRects = recorder.clipRects if recorder.background.path.isEmpty(): if self.__data.styleSheet.hasBorder: self.__data.styleSheet.borderPath = qwtCombinePathList( self.rect(), recorder.border.pathlist ) else: self.__data.styleSheet.borderPath = recorder.background.path self.__data.styleSheet.background.brush = recorder.background.brush self.__data.styleSheet.background.origin = recorder.background.origin def borderPath(self, rect): """ Calculate the painter path for a styled or rounded border When the canvas has no styled background or rounded borders the painter path is empty. :param QRect rect: Bounding rectangle of the canvas :return: Painter path, that can be used for clipping """ if self.testAttribute(Qt.WA_StyledBackground): recorder = QwtStyleSheetRecorder(rect.size()) painter = QPainter(recorder) opt = QStyleOption() opt.initFrom(self) opt.rect = rect self.style().drawPrimitive(QStyle.PE_Widget, opt, painter, self) painter.end() if not recorder.background.path.isEmpty(): return recorder.background.path if len(recorder.border.rectList) > 0: return qwtCombinePathList(rect, recorder.border.pathlist) elif self.__data.borderRadius > 0.0: fw2 = self.frameWidth() * 0.5 r = QRectF(rect).adjusted(fw2, fw2, -fw2, -fw2) path = QPainterPath() path.addRoundedRect(r, self.__data.borderRadius, self.__data.borderRadius) return path return QPainterPath() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1642239959.0 PythonQwt-0.10.2/qwt/plot_curve.py0000666000000000000000000011062600000000000014017 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlotCurve ------------ .. autoclass:: QwtPlotCurve :members: """ import os import math from qwt.text import QwtText from qwt.plot import QwtPlot, QwtPlotItem, QwtPlotItem_PrivateData from qwt._math import qwtSqr from qwt.graphic import QwtGraphic from qwt.plot_series import ( QwtPlotSeriesItem, QwtSeriesStore, QwtSeriesData, QwtPointArrayData, ) from qwt.symbol import QwtSymbol from qwt.plot_directpainter import QwtPlotDirectPainter from qwt.qthelpers import qcolor_from_str from qtpy.QtGui import QPen, QBrush, QPainter, QPolygonF, QColor from qtpy.QtCore import QSize, Qt, QRectF, QPointF, QLineF QT_API = os.environ["QT_API"] if QT_API == "pyside2": import shiboken2 as shiboken import ctypes elif QT_API == "pyside6": import shiboken6 as shiboken import ctypes import numpy as np def qwtUpdateLegendIconSize(curve): if curve.symbol() and curve.testLegendAttribute(QwtPlotCurve.LegendShowSymbol): sz = curve.symbol().boundingRect().size() sz += QSize(2, 2) if curve.testLegendAttribute(QwtPlotCurve.LegendShowLine): w = math.ceil(1.5 * sz.width()) if w % 2: w += 1 sz.setWidth(max([8, w])) curve.setLegendIconSize(sz) def qwtVerifyRange(size, i1, i2): if size < 1: return 0 i1 = max([0, min([i1, size - 1])]) i2 = max([0, min([i2, size - 1])]) if i1 > i2: i1, i2 = i2, i1 return i2 - i1 + 1 def array2d_to_qpolygonf(xdata, ydata): """ Utility function to convert two 1D-NumPy arrays representing curve data (X-axis, Y-axis data) into a single polyline (QtGui.PolygonF object). This feature is compatible with PyQt4, PyQt5 and PySide2 (requires QtPy). License/copyright: MIT License © Pierre Raybaut 2020-2021. :param numpy.ndarray xdata: 1D-NumPy array :param numpy.ndarray ydata: 1D-NumPy array :return: Polyline :rtype: QtGui.QPolygonF """ if not (xdata.size == ydata.size == xdata.shape[0] == ydata.shape[0]): raise ValueError("Arguments must be 1D NumPy arrays with same size") size = xdata.size if QT_API.startswith("pyside"): # PySide (obviously...) if QT_API == "pyside2": polyline = QPolygonF(size) else: polyline = QPolygonF() polyline.resize(size) address = shiboken.getCppPointer(polyline.data())[0] buffer = (ctypes.c_double * 2 * size).from_address(address) else: # PyQt4, PyQt5 if QT_API == "pyqt6": polyline = QPolygonF([QPointF(0, 0)] * size) else: polyline = QPolygonF(size) buffer = polyline.data() buffer.setsize(16 * size) # 16 bytes per point: 8 bytes per X,Y value (float64) memory = np.frombuffer(buffer, np.float64) memory[: (size - 1) * 2 + 1 : 2] = np.array(xdata, dtype=np.float64, copy=False) memory[1 : (size - 1) * 2 + 2 : 2] = np.array(ydata, dtype=np.float64, copy=False) return polyline def series_to_polyline(xMap, yMap, series, from_, to): """ Convert series data to QPolygon(F) polyline """ xdata = xMap.transform(series.xData()[from_ : to + 1]) ydata = yMap.transform(series.yData()[from_ : to + 1]) return array2d_to_qpolygonf(xdata, ydata) class QwtPlotCurve_PrivateData(QwtPlotItem_PrivateData): def __init__(self): QwtPlotItem_PrivateData.__init__(self) self.style = QwtPlotCurve.Lines self.baseline = 0.0 self.symbol = None self.attributes = 0 self.legendAttributes = QwtPlotCurve.LegendShowLine self.pen = QPen(Qt.black) self.brush = QBrush() class QwtPlotCurve(QwtPlotSeriesItem, QwtSeriesStore): """ A plot item, that represents a series of points A curve is the representation of a series of points in the x-y plane. It supports different display styles and symbols. .. seealso:: :py:class:`qwt.symbol.QwtSymbol()`, :py:class:`qwt.scale_map.QwtScaleMap()` Curve styles: * `QwtPlotCurve.NoCurve`: Don't draw a curve. Note: This doesn't affect the symbols. * `QwtPlotCurve.Lines`: Connect the points with straight lines. * `QwtPlotCurve.Sticks`: Draw vertical or horizontal sticks ( depending on the orientation() ) from a baseline which is defined by setBaseline(). * `QwtPlotCurve.Steps`: Connect the points with a step function. The step function is drawn from the left to the right or vice versa, depending on the QwtPlotCurve::Inverted attribute. * `QwtPlotCurve.Dots`: Draw dots at the locations of the data points. Note: This is different from a dotted line (see setPen()), and faster as a curve in QwtPlotCurve::NoStyle style and a symbol painting a point. * `QwtPlotCurve.UserCurve`: Styles >= QwtPlotCurve.UserCurve are reserved for derived classes of QwtPlotCurve that overload drawCurve() with additional application specific curve types. Curve attributes: * `QwtPlotCurve.Inverted`: For `QwtPlotCurve.Steps` only. Draws a step function from the right to the left. Legend attributes: * `QwtPlotCurve.LegendNoAttribute`: `QwtPlotCurve` tries to find a color representing the curve and paints a rectangle with it. * `QwtPlotCurve.LegendShowLine`: If the style() is not `QwtPlotCurve.NoCurve` a line is painted with the curve pen(). * `QwtPlotCurve.LegendShowSymbol`: If the curve has a valid symbol it is painted. * `QwtPlotCurve.LegendShowBrush`: If the curve has a brush a rectangle filled with the curve brush() is painted. .. py:class:: QwtPlotCurve([title=None]) Constructor :param title: Curve title :type title: qwt.text.QwtText or str or None """ # enum CurveStyle NoCurve = -1 Lines, Sticks, Steps, Dots = list(range(4)) UserCurve = 100 # enum CurveAttribute Inverted = 0x01 # enum LegendAttribute LegendNoAttribute = 0x00 LegendShowLine = 0x01 LegendShowSymbol = 0x02 LegendShowBrush = 0x04 def __init__(self, title=None): if title is None: title = QwtText("") if not isinstance(title, QwtText): title = QwtText(title) self.__data = None QwtPlotSeriesItem.__init__(self, title) QwtSeriesStore.__init__(self) self.init() @classmethod def make( cls, xdata=None, ydata=None, title=None, plot=None, z=None, x_axis=None, y_axis=None, style=None, symbol=None, linecolor=None, linewidth=None, linestyle=None, antialiased=False, size=None, finite=None, ): """ Create and setup a new `QwtPlotCurve` object (convenience function). :param xdata: List/array of x values :param ydata: List/array of y values :param title: Curve title :type title: qwt.text.QwtText or str or None :param plot: Plot to attach the curve to :type plot: qwt.plot.QwtPlot or None :param z: Z-value :type z: float or None :param x_axis: curve X-axis (default: QwtPlot.yLeft) :type x_axis: int or None :param y_axis: curve Y-axis (default: QwtPlot.xBottom) :type y_axis: int or None :param style: curve style (`QwtPlotCurve.NoCurve`, `QwtPlotCurve.Lines`, `QwtPlotCurve.Sticks`, `QwtPlotCurve.Steps`, `QwtPlotCurve.Dots`, `QwtPlotCurve.UserCurve`) :type style: int or None :param symbol: curve symbol :type symbol: qwt.symbol.QwtSymbol or None :param linecolor: curve line color :type linecolor: QColor or str or None :param linewidth: curve line width :type linewidth: float or None :param linestyle: curve pen style :type linestyle: Qt.PenStyle or None :param bool antialiased: if True, enable antialiasing rendering :param size: size of xData and yData :type size: int or None :param bool finite: if True, keep only finite array elements (remove all infinity and not a number values), otherwise do not filter array elements .. seealso:: :py:meth:`setData()`, :py:meth:`setPen()`, :py:meth:`attach()` """ item = cls(title) if z is not None: item.setZ(z) if xdata is not None or ydata is not None: if xdata is None: raise ValueError("Missing xdata parameter") if ydata is None: raise ValueError("Missing ydata parameter") item.setData(xdata, ydata, size=size, finite=finite) x_axis = QwtPlot.xBottom if x_axis is None else x_axis y_axis = QwtPlot.yLeft if y_axis is None else y_axis item.setAxes(x_axis, y_axis) if style is not None: item.setStyle(style) if symbol is not None: item.setSymbol(symbol) linecolor = qcolor_from_str(linecolor, Qt.black) linewidth = 1.0 if linewidth is None else linewidth linestyle = Qt.SolidLine if linestyle is None else linestyle item.setPen(QPen(linecolor, linewidth, linestyle)) item.setRenderHint(cls.RenderAntialiased, antialiased) if plot is not None: item.attach(plot) return item def init(self): """Initialize internal members""" self.__data = QwtPlotCurve_PrivateData() self.setItemAttribute(QwtPlotItem.Legend) self.setItemAttribute(QwtPlotItem.AutoScale) self.setData(QwtPointArrayData()) self.setZ(20.0) def rtti(self): """:return: `QwtPlotItem.Rtti_PlotCurve`""" return QwtPlotItem.Rtti_PlotCurve def setLegendAttribute(self, attribute, on=True): """ Specify an attribute how to draw the legend icon Legend attributes: * `QwtPlotCurve.LegendNoAttribute` * `QwtPlotCurve.LegendShowLine` * `QwtPlotCurve.LegendShowSymbol` * `QwtPlotCurve.LegendShowBrush` :param int attribute: Legend attribute :param bool on: On/Off .. seealso:: :py:meth:`testLegendAttribute()`, :py:meth:`legendIcon()` """ if on != self.testLegendAttribute(attribute): if on: self.__data.legendAttributes |= attribute else: self.__data.legendAttributes &= ~attribute qwtUpdateLegendIconSize(self) self.legendChanged() def testLegendAttribute(self, attribute): """ :param int attribute: Legend attribute :return: True, when attribute is enabled .. seealso:: :py:meth:`setLegendAttribute()` """ return self.__data.legendAttributes & attribute def setStyle(self, style): """ Set the curve's drawing style Valid curve styles: * `QwtPlotCurve.NoCurve` * `QwtPlotCurve.Lines` * `QwtPlotCurve.Sticks` * `QwtPlotCurve.Steps` * `QwtPlotCurve.Dots` * `QwtPlotCurve.UserCurve` :param int style: Curve style .. seealso:: :py:meth:`style()` """ if style != self.__data.style: self.__data.style = style self.legendChanged() self.itemChanged() def style(self): """ :return: Style of the curve .. seealso:: :py:meth:`setStyle()` """ return self.__data.style def setSymbol(self, symbol): """ Assign a symbol The curve will take the ownership of the symbol, hence the previously set symbol will be delete by setting a new one. If symbol is None no symbol will be drawn. :param qwt.symbol.QwtSymbol symbol: Symbol .. seealso:: :py:meth:`symbol()` """ if symbol != self.__data.symbol: self.__data.symbol = symbol qwtUpdateLegendIconSize(self) self.legendChanged() self.itemChanged() def symbol(self): """ :return: Current symbol or None, when no symbol has been assigned .. seealso:: :py:meth:`setSymbol()` """ return self.__data.symbol def setPen(self, *args): """ Build and/or assign a pen, depending on the arguments. .. py:method:: setPen(color, width, style) :noindex: Build and assign a pen In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic (see `QPen.isCosmetic()`). This method signature has been introduced to hide this incompatibility. :param QColor color: Pen color :param float width: Pen width :param Qt.PenStyle style: Pen style .. py:method:: setPen(pen) :noindex: Assign a pen :param QPen pen: New pen .. seealso:: :py:meth:`pen()`, :py:meth:`brush()` """ if len(args) == 3: color, width, style = args pen = QPen(color, width, style) elif len(args) == 1: (pen,) = args else: raise TypeError( "%s().setPen() takes 1 or 3 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) if pen != self.__data.pen: if isinstance(pen, QColor): pen = QPen(pen) else: assert isinstance(pen, QPen) self.__data.pen = pen self.legendChanged() self.itemChanged() def pen(self): """ :return: Pen used to draw the lines .. seealso:: :py:meth:`setPen()`, :py:meth:`brush()` """ return self.__data.pen def setBrush(self, brush): """ Assign a brush. In case of `brush.style() != QBrush.NoBrush` and `style() != QwtPlotCurve.Sticks` the area between the curve and the baseline will be filled. In case `not brush.color().isValid()` the area will be filled by `pen.color()`. The fill algorithm simply connects the first and the last curve point to the baseline. So the curve data has to be sorted (ascending or descending). :param brush: New brush :type brush: QBrush or QColor .. seealso:: :py:meth:`brush()`, :py:meth:`setBaseline()`, :py:meth:`baseline()` """ if isinstance(brush, QColor): brush = QBrush(brush) else: assert isinstance(brush, QBrush) if brush != self.__data.brush: self.__data.brush = brush self.legendChanged() self.itemChanged() def brush(self): """ :return: Brush used to fill the area between lines and the baseline .. seealso:: :py:meth:`setBrush()`, :py:meth:`setBaseline()`, :py:meth:`baseline()` """ return self.__data.brush def directPaint(self, from_, to): """ When observing a measurement while it is running, new points have to be added to an existing seriesItem. This method can be used to display them avoiding a complete redraw of the canvas. Setting `plot().canvas().setAttribute(Qt.WA_PaintOutsidePaintEvent, True)` will result in faster painting, if the paint engine of the canvas widget supports this feature. :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted .. seealso:: :py:meth:`drawSeries()` """ directPainter = QwtPlotDirectPainter(self.plot()) directPainter.drawSeries(self, from_, to) def drawSeries(self, painter, xMap, yMap, canvasRect, from_, to): """ Draw an interval of the curve :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: :py:meth:`drawCurve()`, :py:meth:`drawSymbols()` """ numSamples = self.dataSize() if not painter or numSamples <= 0: return if to < 0: to = numSamples - 1 if qwtVerifyRange(numSamples, from_, to) > 0: painter.save() painter.setPen(self.__data.pen) self.drawCurve( painter, self.__data.style, xMap, yMap, canvasRect, from_, to ) painter.restore() if self.__data.symbol and self.__data.symbol.style() != QwtSymbol.NoSymbol: painter.save() self.drawSymbols( painter, self.__data.symbol, xMap, yMap, canvasRect, from_, to ) painter.restore() def drawCurve(self, painter, style, xMap, yMap, canvasRect, from_, to): """ Draw the line part (without symbols) of a curve interval. :param QPainter painter: Painter :param int style: curve style, see `QwtPlotCurve.CurveStyle` :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: :py:meth:`draw()`, :py:meth:`drawDots()`, :py:meth:`drawLines()`, :py:meth:`drawSteps()`, :py:meth:`drawSticks()` """ if style == self.Lines: self.drawLines(painter, xMap, yMap, canvasRect, from_, to) elif style == self.Sticks: self.drawSticks(painter, xMap, yMap, canvasRect, from_, to) elif style == self.Steps: self.drawSteps(painter, xMap, yMap, canvasRect, from_, to) elif style == self.Dots: self.drawDots(painter, xMap, yMap, canvasRect, from_, to) def drawLines(self, painter, xMap, yMap, canvasRect, from_, to): """ Draw lines :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: :py:meth:`draw()`, :py:meth:`drawDots()`, :py:meth:`drawSteps()`, :py:meth:`drawSticks()` """ if from_ > to: return doFill = ( self.__data.brush.style() != Qt.NoBrush and self.__data.brush.color().alpha() > 0 ) polyline = series_to_polyline(xMap, yMap, self.data(), from_, to) painter.drawPolyline(polyline) if doFill: self.fillCurve(painter, xMap, yMap, canvasRect, polyline) def drawSticks(self, painter, xMap, yMap, canvasRect, from_, to): """ Draw sticks :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: :py:meth:`draw()`, :py:meth:`drawDots()`, :py:meth:`drawSteps()`, :py:meth:`drawLines()` """ painter.save() painter.setRenderHint(QPainter.Antialiasing, False) x0 = xMap.transform(self.__data.baseline) y0 = yMap.transform(self.__data.baseline) o = self.orientation() series = self.data() for i in range(from_, to + 1): sample = series.sample(i) xi = xMap.transform(sample.x()) yi = yMap.transform(sample.y()) if o == Qt.Horizontal: painter.drawLine(QLineF(xi, y0, xi, yi)) else: painter.drawLine(QLineF(x0, yi, xi, yi)) painter.restore() def drawDots(self, painter, xMap, yMap, canvasRect, from_, to): """ Draw dots :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: :py:meth:`draw()`, :py:meth:`drawSticks()`, :py:meth:`drawSteps()`, :py:meth:`drawLines()` """ doFill = ( self.__data.brush.style() != Qt.NoBrush and self.__data.brush.color().alpha() > 0 ) polyline = series_to_polyline(xMap, yMap, self.data(), from_, to) painter.drawPoints(polyline) if doFill: self.fillCurve(painter, xMap, yMap, canvasRect, polyline) def drawSteps(self, painter, xMap, yMap, canvasRect, from_, to): """ Draw steps :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: :py:meth:`draw()`, :py:meth:`drawSticks()`, :py:meth:`drawDots()`, :py:meth:`drawLines()` """ size = 2 * (to - from_) + 1 if QT_API == "pyside6": polygon = QPolygonF() polygon.resize(size) elif QT_API == "pyqt6": polygon = QPolygonF([QPointF(0, 0)] * size) else: polygon = QPolygonF(size) inverted = self.orientation() == Qt.Vertical if self.__data.attributes & self.Inverted: inverted = not inverted series = self.data() ip = 0 for i in range(from_, to + 1): sample = series.sample(i) xi = xMap.transform(sample.x()) yi = yMap.transform(sample.y()) if ip > 0: p0 = polygon[ip - 2] if inverted: polygon[ip - 1] = QPointF(p0.x(), yi) else: polygon[ip - 1] = QPointF(xi, p0.y()) polygon[ip] = QPointF(xi, yi) ip += 2 painter.drawPolyline(polygon) if self.__data.brush.style() != Qt.NoBrush: self.fillCurve(painter, xMap, yMap, canvasRect, polygon) def setCurveAttribute(self, attribute, on=True): """ Specify an attribute for drawing the curve Supported curve attributes: * `QwtPlotCurve.Inverted` :param int attribute: Curve attribute :param bool on: On/Off .. seealso:: :py:meth:`testCurveAttribute()` """ if (self.__data.attributes & attribute) == on: return if on: self.__data.attributes |= attribute else: self.__data.attributes &= ~attribute self.itemChanged() def testCurveAttribute(self, attribute): """ :return: True, if attribute is enabled .. seealso:: :py:meth:`setCurveAttribute()` """ return self.__data.attributes & attribute def fillCurve(self, painter, xMap, yMap, canvasRect, polygon): """ Fill the area between the curve and the baseline with the curve brush :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param QPolygonF polygon: Polygon - will be modified ! .. seealso:: :py:meth:`setBrush()`, :py:meth:`setBaseline()`, :py:meth:`setStyle()` """ if self.__data.brush.style() == Qt.NoBrush: return self.closePolyline(painter, xMap, yMap, polygon) if polygon.count() <= 2: return brush = self.__data.brush if not brush.color().isValid(): brush.setColor(self.__data.pen.color()) painter.save() painter.setPen(Qt.NoPen) painter.setBrush(brush) painter.drawPolygon(polygon) painter.restore() def closePolyline(self, painter, xMap, yMap, polygon): """ Complete a polygon to be a closed polygon including the area between the original polygon and the baseline. :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QPolygonF polygon: Polygon to be completed """ if polygon.size() < 2: return baseline = self.__data.baseline if self.orientation() == Qt.Horizontal: if yMap.transformation(): baseline = yMap.transformation().bounded(baseline) refY = yMap.transform(baseline) polygon.append(QPointF(polygon.last().x(), refY)) polygon.append(QPointF(polygon.first().x(), refY)) else: if xMap.transformation(): baseline = xMap.transformation().bounded(baseline) refX = xMap.transform(baseline) polygon.append(QPointF(refX, polygon.last().y())) polygon.append(QPointF(refX, polygon.first().y())) def drawSymbols(self, painter, symbol, xMap, yMap, canvasRect, from_, to): """ Draw symbols :param QPainter painter: Painter :param qwt.symbol.QwtSymbol symbol: Curve symbol :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: :py:meth:`setSymbol()`, :py:meth:`drawSeries()`, :py:meth:`drawCurve()` """ chunkSize = 500 for i in range(from_, to + 1, chunkSize): n = min([chunkSize, to - i + 1]) points = series_to_polyline(xMap, yMap, self.data(), i, i + n - 1) if points.size() > 0: symbol.drawSymbols(painter, points) def setBaseline(self, value): """ Set the value of the baseline The baseline is needed for filling the curve with a brush or the Sticks drawing style. The interpretation of the baseline depends on the `orientation()`. With `Qt.Horizontal`, the baseline is interpreted as a horizontal line at y = baseline(), with `Qt.Vertical`, it is interpreted as a vertical line at x = baseline(). The default value is 0.0. :param float value: Value of the baseline .. seealso:: :py:meth:`baseline()`, :py:meth:`setBrush()`, :py:meth:`setStyle()` """ if self.__data.baseline != value: self.__data.baseline = value self.itemChanged() def baseline(self): """ :return: Value of the baseline .. seealso:: :py:meth:`setBaseline()` """ return self.__data.baseline def closestPoint(self, pos): """ Find the closest curve point for a specific position :param QPoint pos: Position, where to look for the closest curve point :return: tuple `(index, dist)` `dist` is the distance between the position and the closest curve point. `index` is the index of the closest curve point, or -1 if none can be found ( f.e when the curve has no points ). .. note:: `closestPoint()` implements a dumb algorithm, that iterates over all points """ numSamples = self.dataSize() if self.plot() is None or numSamples <= 0: return -1 series = self.data() xMap = self.plot().canvasMap(self.xAxis()) yMap = self.plot().canvasMap(self.yAxis()) index = -1 dmin = 1.0e10 for i in range(numSamples): sample = series.sample(i) cx = xMap.transform(sample.x()) - pos.x() cy = yMap.transform(sample.y()) - pos.y() f = qwtSqr(cx) + qwtSqr(cy) if f < dmin: index = i dmin = f dist = math.sqrt(dmin) return index, dist def legendIcon(self, index, size): """ :param int index: Index of the legend entry (ignored as there is only one) :param QSizeF size: Icon size :return: Icon representing the curve on the legend .. seealso:: :py:meth:`qwt.plot.QwtPlotItem.setLegendIconSize()`, :py:meth:`qwt.plot.QwtPlotItem.legendData()` """ if size.isEmpty(): return QwtGraphic() graphic = QwtGraphic() graphic.setDefaultSize(size) graphic.setRenderHint(QwtGraphic.RenderPensUnscaled, True) painter = QPainter(graphic) painter.setRenderHint( QPainter.Antialiasing, self.testRenderHint(QwtPlotItem.RenderAntialiased) ) if self.__data.legendAttributes == 0 or ( self.__data.legendAttributes & QwtPlotCurve.LegendShowBrush ): brush = self.__data.brush if brush.style() == Qt.NoBrush and self.__data.legendAttributes == 0: if self.style() != QwtPlotCurve.NoCurve: brush = QBrush(self.pen().color()) elif ( self.__data.symbol and self.__data.symbol.style() != QwtSymbol.NoSymbol ): brush = QBrush(self.__data.symbol.pen().color()) if brush.style() != Qt.NoBrush: r = QRectF(0, 0, size.width(), size.height()) painter.fillRect(r, brush) if self.__data.legendAttributes & QwtPlotCurve.LegendShowLine: if self.pen() != Qt.NoPen: painter.setPen(self.pen()) y = size.height() // 2 painter.drawLine(QLineF(0, y, size.width(), y)) if self.__data.legendAttributes & QwtPlotCurve.LegendShowSymbol: if self.__data.symbol: r = QRectF(0, 0, size.width(), size.height()) self.__data.symbol.drawSymbol(painter, r) return graphic def setData(self, *args, **kwargs): """ Initialize data with a series data object or an array of points. .. py:method:: setData(data): :param data: Series data (e.g. `QwtPointArrayData` instance) :type data: .plot_series.QwtSeriesData .. py:method:: setData(xData, yData, [size=None], [finite=True]): Initialize data with `x` and `y` arrays. This signature was removed in Qwt6 and is temporarily maintained here to ensure compatibility with Qwt5. Same as `setSamples(x, y, [size=None], [finite=True])` :param x: List/array of x values :param y: List/array of y values :param size: size of xData and yData :type size: int or None :param bool finite: if True, keep only finite array elements (remove all infinity and not a number values), otherwise do not filter array elements .. seealso:: :py:meth:`setSamples()` """ if len(args) == 1 and not kwargs: super(QwtPlotCurve, self).setData(*args) elif len(args) in (2, 3, 4): self.setSamples(*args, **kwargs) else: raise TypeError( "%s().setData() takes 1, 2, 3 or 4 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def setSamples(self, *args, **kwargs): """ Initialize data with an array of points. .. py:method:: setSamples(data): :param data: Series data (e.g. `QwtPointArrayData` instance) :type data: .plot_series.QwtSeriesData .. py:method:: setSamples(samples): Same as `setData(QwtPointArrayData(samples))` :param samples: List/array of points .. py:method:: setSamples(xData, yData, [size=None], [finite=True]): Same as `setData(QwtPointArrayData(xData, yData, [size=None]))` :param xData: List/array of x values :param yData: List/array of y values :param size: size of xData and yData :type size: int or None :param bool finite: if True, keep only finite array elements (remove all infinity and not a number values), otherwise do not filter array elements .. seealso:: :py:class:`.plot_series.QwtPointArrayData` """ if len(args) == 1 and not kwargs: (samples,) = args if isinstance(samples, QwtSeriesData): self.setData(samples) else: self.setData(QwtPointArrayData(samples)) elif len(args) >= 2: xData, yData = args[:2] try: size = kwargs.pop("size") except KeyError: size = None try: finite = kwargs.pop("finite") except KeyError: finite = None if kwargs: raise TypeError( "%s().setSamples(): unknown %s keyword " "argument(s)" % (self.__class__.__name__, ", ".join(list(kwargs.keys()))) ) for arg in args[2:]: if isinstance(arg, bool): finite = arg elif isinstance(arg, int): size = arg self.setData(QwtPointArrayData(xData, yData, size=size, finite=finite)) else: raise TypeError( "%s().setSamples() takes 1, 2 or 3 argument(s) " "(%s given)" % (self.__class__.__name__, len(args)) ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091905.0 PythonQwt-0.10.2/qwt/plot_directpainter.py0000666000000000000000000002445100000000000015530 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlotDirectPainter -------------------- .. autoclass:: QwtPlotDirectPainter :members: """ from qtpy.QtGui import QPainter, QRegion from qtpy.QtCore import QObject, Qt, QEvent from qtpy import QtCore as QC QT_MAJOR_VERSION = int(QC.__version__.split(".")[0]) from qwt.plot import QwtPlotItem from qwt.plot_canvas import QwtPlotCanvas def qwtRenderItem(painter, canvasRect, seriesItem, from_, to): # TODO: A minor performance improvement is possible with caching the maps plot = seriesItem.plot() xMap = plot.canvasMap(seriesItem.xAxis()) yMap = plot.canvasMap(seriesItem.yAxis()) painter.setRenderHint( QPainter.Antialiasing, seriesItem.testRenderHint(QwtPlotItem.RenderAntialiased) ) seriesItem.drawSeries(painter, xMap, yMap, canvasRect, from_, to) def qwtHasBackingStore(canvas): return ( canvas.testPaintAttribute(QwtPlotCanvas.BackingStore) and canvas.backingStore() ) class QwtPlotDirectPainter_PrivateData(object): def __init__(self): self.attributes = 0 self.hasClipping = False self.seriesItem = None # QwtPlotSeriesItem self.clipRegion = QRegion() self.painter = QPainter() self.from_ = None self.to = None class QwtPlotDirectPainter(QObject): """ Painter object trying to paint incrementally Often applications want to display samples while they are collected. When there are too many samples complete replots will be expensive to be processed in a collection cycle. `QwtPlotDirectPainter` offers an API to paint subsets (f.e all additions points) without erasing/repainting the plot canvas. On certain environments it might be important to calculate a proper clip region before painting. F.e. for Qt Embedded only the clipped part of the backing store will be copied to a (maybe unaccelerated) frame buffer. .. warning:: Incremental painting will only help when no replot is triggered by another operation (like changing scales) and nothing needs to be erased. Paint attributes: * `QwtPlotDirectPainter.AtomicPainter`: Initializing a `QPainter` is an expensive operation. When `AtomicPainter` is set each call of `drawSeries()` opens/closes a temporary `QPainter`. Otherwise `QwtPlotDirectPainter` tries to use the same `QPainter` as long as possible. * `QwtPlotDirectPainter.FullRepaint`: When `FullRepaint` is set the plot canvas is explicitly repainted after the samples have been rendered. * `QwtPlotDirectPainter.CopyBackingStore`: When `QwtPlotCanvas.BackingStore` is enabled the painter has to paint to the backing store and the widget. In certain situations/environments it might be faster to paint to the backing store only and then copy the backing store to the canvas. This flag can also be useful for settings, where Qt fills the the clip region with the widget background. """ # enum Attribute AtomicPainter = 0x01 FullRepaint = 0x02 CopyBackingStore = 0x04 def __init__(self, parent=None): QObject.__init__(self, parent) self.__data = QwtPlotDirectPainter_PrivateData() def setAttribute(self, attribute, on=True): """ Change an attribute :param int attribute: Attribute to change :param bool on: On/Off .. seealso:: :py:meth:`testAttribute()` """ if self.testAttribute(attribute) != on: self.__data.attributes |= attribute else: self.__data.attributes &= ~attribute if attribute == self.AtomicPainter and on: self.reset() def testAttribute(self, attribute): """ :param int attribute: Attribute to be tested :return: True, when attribute is enabled .. seealso:: :py:meth:`setAttribute()` """ return self.__data.attributes & attribute def setClipping(self, enable): """ En/Disables clipping :param bool enable: Enables clipping is true, disable it otherwise .. seealso:: :py:meth:`hasClipping()`, :py:meth:`clipRegion()`, :py:meth:`setClipRegion()` """ self.__data.hasClipping = enable def hasClipping(self): """ :return: Return true, when clipping is enabled .. seealso:: :py:meth:`setClipping()`, :py:meth:`clipRegion()`, :py:meth:`setClipRegion()` """ return self.__data.hasClipping def setClipRegion(self, region): """ Assign a clip region and enable clipping Depending on the environment setting a proper clip region might improve the performance heavily. F.e. on Qt embedded only the clipped part of the backing store will be copied to a (maybe unaccelerated) frame buffer device. :param QRegion region: Clip region .. seealso:: :py:meth:`hasClipping()`, :py:meth:`setClipping()`, :py:meth:`clipRegion()` """ self.__data.clipRegion = region self.__data.hasClipping = True def clipRegion(self): """ :return: Return Currently set clip region. .. seealso:: :py:meth:`hasClipping()`, :py:meth:`setClipping()`, :py:meth:`setClipRegion()` """ return self.__data.clipRegion def drawSeries(self, seriesItem, from_, to): """ Draw a set of points of a seriesItem. When observing a measurement while it is running, new points have to be added to an existing seriesItem. drawSeries() can be used to display them avoiding a complete redraw of the canvas. Setting `plot().canvas().setAttribute(Qt.WA_PaintOutsidePaintEvent, True)` will result in faster painting, if the paint engine of the canvas widget supports this feature. :param qwt.plot_series.QwtPlotSeriesItem seriesItem: Item to be painted :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the series will be painted to its last point. """ if seriesItem is None or seriesItem.plot() is None: return canvas = seriesItem.plot().canvas() canvasRect = canvas.contentsRect() plotCanvas = canvas # XXX: cast to QwtPlotCanvas if plotCanvas and qwtHasBackingStore(plotCanvas): painter = QPainter( plotCanvas.backingStore() ) # XXX: cast plotCanvas.backingStore() to QPixmap if self.__data.hasClipping: painter.setClipRegion(self.__data.clipRegion) qwtRenderItem(painter, canvasRect, seriesItem, from_, to) painter.end() if self.testAttribute(self.FullRepaint): plotCanvas.repaint() return immediatePaint = True if not canvas.testAttribute(Qt.WA_WState_InPaintEvent): if QT_MAJOR_VERSION >= 5 or not canvas.testAttribute( Qt.WA_PaintOutsidePaintEvent ): immediatePaint = False if immediatePaint: if not self.__data.painter.isActive(): self.reset() self.__data.painter.begin(canvas) canvas.installEventFilter(self) if self.__data.hasClipping: self.__data.painter.setClipRegion( QRegion(canvasRect) & self.__data.clipRegion ) elif not self.__data.painter.hasClipping(): self.__data.painter.setClipRect(canvasRect) qwtRenderItem(self.__data.painter, canvasRect, seriesItem, from_, to) if self.__data.attributes & self.AtomicPainter: self.reset() elif self.__data.hasClipping: self.__data.painter.setClipping(False) else: self.reset() self.__data.seriesItem = seriesItem self.__data.from_ = from_ self.__data.to = to clipRegion = QRegion(canvasRect) if self.__data.hasClipping: clipRegion &= self.__data.clipRegion canvas.installEventFilter(self) canvas.repaint(clipRegion) canvas.removeEventFilter(self) self.__data.seriesItem = None def reset(self): """Close the internal QPainter""" if self.__data.painter.isActive(): w = self.__data.painter.device() # XXX: cast to QWidget if w: w.removeEventFilter(self) self.__data.painter.end() def eventFilter(self, obj_, event): if event.type() == QEvent.Paint: self.reset() if self.__data.seriesItem: pe = event # XXX: cast to QPaintEvent canvas = self.__data.seriesItem.plot().canvas() painter = QPainter(canvas) painter.setClipRegion(pe.region()) doCopyCache = self.testAttribute(self.CopyBackingStore) if doCopyCache: plotCanvas = canvas # XXX: cast to QwtPlotCanvas if plotCanvas: doCopyCache = qwtHasBackingStore(plotCanvas) if doCopyCache: painter.drawPixmap( plotCanvas.rect().topLeft(), plotCanvas.backingStore() ) if not doCopyCache: qwtRenderItem( painter, canvas.contentsRect(), self.__data.seriesItem, self.__data.from_, self.__data.to, ) return True return False ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641721667.0 PythonQwt-0.10.2/qwt/plot_grid.py0000666000000000000000000004026300000000000013617 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlotGrid ----------- .. autoclass:: QwtPlotGrid :members: """ from qwt.scale_div import QwtScaleDiv from qwt.plot import QwtPlotItem from qwt._math import qwtFuzzyGreaterOrEqual, qwtFuzzyLessOrEqual from qwt.qthelpers import qcolor_from_str from qtpy.QtGui import QPen from qtpy.QtCore import Qt, QLineF class QwtPlotGrid_PrivateData(object): def __init__(self): self.xEnabled = True self.yEnabled = True self.xMinEnabled = False self.yMinEnabled = False self.xScaleDiv = QwtScaleDiv() self.yScaleDiv = QwtScaleDiv() self.majorPen = QPen() self.minorPen = QPen() class QwtPlotGrid(QwtPlotItem): """ A class which draws a coordinate grid The `QwtPlotGrid` class can be used to draw a coordinate grid. A coordinate grid consists of major and minor vertical and horizontal grid lines. The locations of the grid lines are determined by the X and Y scale divisions which can be assigned with `setXDiv()` and `setYDiv()`. The `draw()` member draws the grid within a bounding rectangle. """ def __init__(self, title="Grid"): QwtPlotItem.__init__(self, title) self.__data = QwtPlotGrid_PrivateData() self.setItemInterest(QwtPlotItem.ScaleInterest, True) self.setZ(10.0) @classmethod def make( cls, plot=None, z=None, enablemajor=None, enableminor=None, color=None, width=None, style=None, mincolor=None, minwidth=None, minstyle=None, ): """ Create and setup a new `QwtPlotGrid` object (convenience function). :param plot: Plot to attach the curve to :type plot: qwt.plot.QwtPlot or None :param z: Z-value :type z: float or None :param enablemajor: Tuple of two boolean values (x, y) for enabling major grid lines :type enablemajor: bool or None :param enableminor: Tuple of two boolean values (x, y) for enabling minor grid lines :type enableminor: bool or None :param color: Pen color for both major and minor grid lines (default: Qt.gray) :type color: QColor or str or None :param width: Pen width for both major and minor grid lines (default: 1.0) :type width: float or None :param style: Pen style for both major and minor grid lines (default: Qt.DotLine) :type style: Qt.PenStyle or None :param mincolor: Pen color for minor grid lines only (default: Qt.gray) :type mincolor: QColor or str or None :param minwidth: Pen width for minor grid lines only (default: 1.0) :type minwidth: float or None :param minstyle: Pen style for minor grid lines only (default: Qt.DotLine) :type minstyle: Qt.PenStyle or None .. seealso:: :py:meth:`setMinorPen()`, :py:meth:`setMajorPen()` """ item = cls() if z is not None: item.setZ(z) color = qcolor_from_str(color, Qt.gray) width = 1.0 if width is None else float(width) style = Qt.DotLine if style is None else style item.setPen(QPen(color, width, style)) if mincolor is not None or minwidth is not None or minstyle is not None: mincolor = qcolor_from_str(mincolor, Qt.gray) minwidth = 1.0 if width is None else minwidth minstyle = Qt.DotLine if style is None else minstyle item.setMinorPen(QPen(mincolor, minwidth, minstyle)) if enablemajor is not None: if isinstance(enablemajor, tuple) and len(enablemajor) == 2: item.enableX(enablemajor[0]) item.enableY(enablemajor[1]) else: raise TypeError( "Invalid enablemajor %r (expecting tuple of two booleans)" % enablemajor ) if enableminor is not None: if isinstance(enableminor, tuple) and len(enableminor) == 2: item.enableXMin(enableminor[0]) item.enableYMin(enableminor[1]) else: raise TypeError( "Invalid enableminor %r (expecting tuple of two booleans)" % enableminor ) if plot is not None: item.attach(plot) return item def rtti(self): """ :return: Return `QwtPlotItem.Rtti_PlotGrid` """ return QwtPlotItem.Rtti_PlotGrid def enableX(self, on): """ Enable or disable vertical grid lines :param bool on: Enable (true) or disable .. seealso:: :py:meth:`enableXMin()` """ if self.__data.xEnabled != on: self.__data.xEnabled = on self.legendChanged() self.itemChanged() def enableY(self, on): """ Enable or disable horizontal grid lines :param bool on: Enable (true) or disable .. seealso:: :py:meth:`enableYMin()` """ if self.__data.yEnabled != on: self.__data.yEnabled = on self.legendChanged() self.itemChanged() def enableXMin(self, on): """ Enable or disable minor vertical grid lines. :param bool on: Enable (true) or disable .. seealso:: :py:meth:`enableX()` """ if self.__data.xMinEnabled != on: self.__data.xMinEnabled = on self.legendChanged() self.itemChanged() def enableYMin(self, on): """ Enable or disable minor horizontal grid lines. :param bool on: Enable (true) or disable .. seealso:: :py:meth:`enableY()` """ if self.__data.yMinEnabled != on: self.__data.yMinEnabled = on self.legendChanged() self.itemChanged() def setXDiv(self, scaleDiv): """ Assign an x axis scale division :param qwt.scale_div.QwtScaleDiv scaleDiv: Scale division """ if self.__data.xScaleDiv != scaleDiv: self.__data.xScaleDiv = scaleDiv self.itemChanged() def setYDiv(self, scaleDiv): """ Assign an y axis scale division :param qwt.scale_div.QwtScaleDiv scaleDiv: Scale division """ if self.__data.yScaleDiv != scaleDiv: self.__data.yScaleDiv = scaleDiv self.itemChanged() def setPen(self, *args): """ Build and/or assign a pen for both major and minor grid lines .. py:method:: setPen(color, width, style) :noindex: Build and assign a pen for both major and minor grid lines In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic (see `QPen.isCosmetic()`). This method signature has been introduced to hide this incompatibility. :param QColor color: Pen color :param float width: Pen width :param Qt.PenStyle style: Pen style .. py:method:: setPen(pen) :noindex: Assign a pen for both major and minor grid lines :param QPen pen: New pen .. seealso:: :py:meth:`pen()`, :py:meth:`brush()` """ if len(args) == 3: color, width, style = args self.setPen(QPen(color, width, style)) elif len(args) == 1: (pen,) = args if self.__data.majorPen != pen or self.__data.minorPen != pen: self.__data.majorPen = pen self.__data.minorPen = pen self.legendChanged() self.itemChanged() else: raise TypeError( "%s().setPen() takes 1 or 3 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def setMajorPen(self, *args): """ Build and/or assign a pen for both major grid lines .. py:method:: setMajorPen(color, width, style) :noindex: Build and assign a pen for both major grid lines In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic (see `QPen.isCosmetic()`). This method signature has been introduced to hide this incompatibility. :param QColor color: Pen color :param float width: Pen width :param Qt.PenStyle style: Pen style .. py:method:: setMajorPen(pen) :noindex: Assign a pen for the major grid lines :param QPen pen: New pen .. seealso:: :py:meth:`majorPen()`, :py:meth:`setMinorPen()`, :py:meth:`setPen()`, :py:meth:`pen()`, :py:meth:`brush()` """ if len(args) == 3: color, width, style = args self.setMajorPen(QPen(color, width, style)) elif len(args) == 1: (pen,) = args if self.__data.majorPen != pen: self.__data.majorPen = pen self.legendChanged() self.itemChanged() else: raise TypeError( "%s().setMajorPen() takes 1 or 3 argument(s) (%s " "given)" % (self.__class__.__name__, len(args)) ) def setMinorPen(self, *args): """ Build and/or assign a pen for both minor grid lines .. py:method:: setMinorPen(color, width, style) :noindex: Build and assign a pen for both minor grid lines In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic (see `QPen.isCosmetic()`). This method signature has been introduced to hide this incompatibility. :param QColor color: Pen color :param float width: Pen width :param Qt.PenStyle style: Pen style .. py:method:: setMinorPen(pen) :noindex: Assign a pen for the minor grid lines :param QPen pen: New pen .. seealso:: :py:meth:`minorPen()`, :py:meth:`setMajorPen()`, :py:meth:`setPen()`, :py:meth:`pen()`, :py:meth:`brush()` """ if len(args) == 3: color, width, style = args self.setMinorPen(QPen(color, width, style)) elif len(args) == 1: (pen,) = args if self.__data.minorPen != pen: self.__data.minorPen = pen self.legendChanged() self.itemChanged() else: raise TypeError( "%s().setMinorPen() takes 1 or 3 argument(s) (%s " "given)" % (self.__class__.__name__, len(args)) ) def draw(self, painter, xMap, yMap, canvasRect): """ Draw the grid The grid is drawn into the bounding rectangle such that grid lines begin and end at the rectangle's borders. The X and Y maps are used to map the scale divisions into the drawing region screen. :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: X axis map :param qwt.scale_map.QwtScaleMap yMap: Y axis :param QRectF canvasRect: Contents rectangle of the plot canvas """ minorPen = QPen(self.__data.minorPen) minorPen.setCapStyle(Qt.FlatCap) painter.setPen(minorPen) if self.__data.xEnabled and self.__data.xMinEnabled: self.drawLines( painter, canvasRect, Qt.Vertical, xMap, self.__data.xScaleDiv.ticks(QwtScaleDiv.MinorTick), ) self.drawLines( painter, canvasRect, Qt.Vertical, xMap, self.__data.xScaleDiv.ticks(QwtScaleDiv.MediumTick), ) if self.__data.yEnabled and self.__data.yMinEnabled: self.drawLines( painter, canvasRect, Qt.Horizontal, yMap, self.__data.yScaleDiv.ticks(QwtScaleDiv.MinorTick), ) self.drawLines( painter, canvasRect, Qt.Horizontal, yMap, self.__data.yScaleDiv.ticks(QwtScaleDiv.MediumTick), ) majorPen = QPen(self.__data.majorPen) majorPen.setCapStyle(Qt.FlatCap) painter.setPen(majorPen) if self.__data.xEnabled: self.drawLines( painter, canvasRect, Qt.Vertical, xMap, self.__data.xScaleDiv.ticks(QwtScaleDiv.MajorTick), ) if self.__data.yEnabled: self.drawLines( painter, canvasRect, Qt.Horizontal, yMap, self.__data.yScaleDiv.ticks(QwtScaleDiv.MajorTick), ) def drawLines(self, painter, canvasRect, orientation, scaleMap, values): x1 = canvasRect.left() x2 = canvasRect.right() - 1.0 y1 = canvasRect.top() y2 = canvasRect.bottom() - 1.0 for val in values: value = scaleMap.transform(val) if orientation == Qt.Horizontal: if qwtFuzzyGreaterOrEqual(value, y1) and qwtFuzzyLessOrEqual(value, y2): painter.drawLine(QLineF(x1, value, x2, value)) else: if qwtFuzzyGreaterOrEqual(value, x1) and qwtFuzzyLessOrEqual(value, x2): painter.drawLine(QLineF(value, y1, value, y2)) def majorPen(self): """ :return: the pen for the major grid lines .. seealso:: :py:meth:`setMajorPen()`, :py:meth:`setMinorPen()`, :py:meth:`setPen()` """ return self.__data.majorPen def minorPen(self): """ :return: the pen for the minor grid lines .. seealso:: :py:meth:`setMinorPen()`, :py:meth:`setMajorPen()`, :py:meth:`setPen()` """ return self.__data.minorPen def xEnabled(self): """ :return: True if vertical grid lines are enabled .. seealso:: :py:meth:`enableX()` """ return self.__data.xEnabled def yEnabled(self): """ :return: True if horizontal grid lines are enabled .. seealso:: :py:meth:`enableY()` """ return self.__data.yEnabled def xMinEnabled(self): """ :return: True if minor vertical grid lines are enabled .. seealso:: :py:meth:`enableXMin()` """ return self.__data.xMinEnabled def yMinEnabled(self): """ :return: True if minor horizontal grid lines are enabled .. seealso:: :py:meth:`enableYMin()` """ return self.__data.yMinEnabled def xScaleDiv(self): """ :return: the scale division of the x axis """ return self.__data.xScaleDiv def yScaleDiv(self): """ :return: the scale division of the y axis """ return self.__data.yScaleDiv def updateScaleDiv(self, xScaleDiv, yScaleDiv): """ Update the grid to changes of the axes scale division :param qwt.scale_map.QwtScaleMap xMap: Scale division of the x-axis :param qwt.scale_map.QwtScaleMap yMap: Scale division of the y-axis .. seealso:: :py:meth:`updateAxes()` """ self.setXDiv(xScaleDiv) self.setYDiv(yScaleDiv) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641654881.0 PythonQwt-0.10.2/qwt/plot_layout.py0000666000000000000000000013140500000000000014206 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlotLayout ------------- .. autoclass:: QwtPlotLayout :members: """ import math from qwt.text import QwtText from qwt.scale_widget import QwtScaleWidget from qwt.plot import QwtPlot from qwt.scale_draw import QwtAbstractScaleDraw from qtpy.QtGui import QFont, QRegion from qtpy.QtCore import QSize, Qt, QRectF QWIDGETSIZE_MAX = (1 << 24) - 1 class LegendData(object): def __init__(self): self.frameWidth = None self.hScrollExtent = None self.vScrollExtent = None self.hint = QSize() class TitleData(object): def __init__(self): self.text = QwtText() self.frameWidth = None class FooterData(object): def __init__(self): self.text = QwtText() self.frameWidth = None class ScaleData(object): def __init__(self): self.isEnabled = None self.scaleWidget = QwtScaleWidget() self.scaleFont = QFont() self.start = None self.end = None self.baseLineOffset = None self.tickOffset = None self.dimWithoutTitle = None class CanvasData(object): def __init__(self): self.contentsMargins = [0 for _i in QwtPlot.AXES] class QwtPlotLayout_LayoutData(object): def __init__(self): self.legend = LegendData() self.title = TitleData() self.footer = FooterData() self.scale = [ScaleData() for _i in QwtPlot.AXES] self.canvas = CanvasData() def init(self, plot, rect): """Extract all layout relevant data from the plot components""" # legend legend = plot.legend() if legend: self.legend.frameWidth = legend.frameWidth() self.legend.hScrollExtent = legend.scrollExtent(Qt.Horizontal) self.legend.vScrollExtent = legend.scrollExtent(Qt.Vertical) hint = legend.sizeHint() w = min([hint.width(), math.floor(rect.width())]) h = legend.heightForWidth(w) if h <= 0: h = hint.height() self.legend.hint = QSize(w, h) # title self.title.frameWidth = 0 self.title.text = QwtText() if plot.titleLabel(): label = plot.titleLabel() self.title.text = label.text() if not self.title.text.testPaintAttribute(QwtText.PaintUsingTextFont): self.title.text.setFont(label.font()) self.title.frameWidth = plot.titleLabel().frameWidth() # footer self.footer.frameWidth = 0 self.footer.text = QwtText() if plot.footerLabel(): label = plot.footerLabel() self.footer.text = label.text() if not self.footer.text.testPaintAttribute(QwtText.PaintUsingTextFont): self.footer.text.setFont(label.font()) self.footer.frameWidth = plot.footerLabel().frameWidth() # scales for axis in QwtPlot.AXES: if plot.axisEnabled(axis): scaleWidget = plot.axisWidget(axis) self.scale[axis].isEnabled = True self.scale[axis].scaleWidget = scaleWidget self.scale[axis].scaleFont = scaleWidget.font() self.scale[axis].start = scaleWidget.startBorderDist() self.scale[axis].end = scaleWidget.endBorderDist() self.scale[axis].baseLineOffset = scaleWidget.margin() self.scale[axis].tickOffset = scaleWidget.margin() if scaleWidget.scaleDraw().hasComponent(QwtAbstractScaleDraw.Ticks): self.scale[ axis ].tickOffset += scaleWidget.scaleDraw().maxTickLength() self.scale[axis].dimWithoutTitle = scaleWidget.dimForLength( QWIDGETSIZE_MAX, self.scale[axis].scaleFont ) if not scaleWidget.title().isEmpty(): self.scale[axis].dimWithoutTitle -= scaleWidget.titleHeightForWidth( QWIDGETSIZE_MAX ) else: self.scale[axis].isEnabled = False self.scale[axis].start = 0 self.scale[axis].end = 0 self.scale[axis].baseLineOffset = 0 self.scale[axis].tickOffset = 0.0 self.scale[axis].dimWithoutTitle = 0 layout = plot.canvas().layout() if layout is not None: self.canvas.contentsMargins = layout.getContentsMargins() class QwtPlotLayout_PrivateData(object): def __init__(self): self.spacing = 5 self.titleRect = QRectF() self.footerRect = QRectF() self.legendRect = QRectF() self.scaleRect = [QRectF() for _i in QwtPlot.AXES] self.canvasRect = QRectF() self.layoutData = QwtPlotLayout_LayoutData() self.legendPos = None self.legendRatio = None self.canvasMargin = [0] * len(QwtPlot.AXES) self.alignCanvasToScales = [False] * len(QwtPlot.AXES) class QwtPlotLayout(object): """ Layout engine for QwtPlot. It is used by the `QwtPlot` widget to organize its internal widgets or by `QwtPlot.print()` to render its content to a QPaintDevice like a QPrinter, QPixmap/QImage or QSvgRenderer. .. seealso:: :py:meth:`qwt.plot.QwtPlot.setPlotLayout()` Valid options: * `QwtPlotLayout.AlignScales`: Unused * `QwtPlotLayout.IgnoreScrollbars`: Ignore the dimension of the scrollbars. There are no scrollbars, when the plot is not rendered to widgets. * `QwtPlotLayout.IgnoreFrames`: Ignore all frames. * `QwtPlotLayout.IgnoreLegend`: Ignore the legend. * `QwtPlotLayout.IgnoreTitle`: Ignore the title. * `QwtPlotLayout.IgnoreFooter`: Ignore the footer. """ # enum Option AlignScales = 0x01 IgnoreScrollbars = 0x02 IgnoreFrames = 0x04 IgnoreLegend = 0x08 IgnoreTitle = 0x10 IgnoreFooter = 0x20 def __init__(self): self.__data = QwtPlotLayout_PrivateData() self.setLegendPosition(QwtPlot.BottomLegend) self.setCanvasMargin(4) self.setAlignCanvasToScales(False) self.invalidate() def setCanvasMargin(self, margin, axis=-1): """ Change a margin of the canvas. The margin is the space above/below the scale ticks. A negative margin will be set to -1, excluding the borders of the scales. :param int margin: New margin :param int axisId: Axis index .. seealso:: :py:meth:`canvasMargin()` .. warning:: The margin will have no effect when `alignCanvasToScale()` is True """ if margin < 1: margin = -1 if axis == -1: for axis in QwtPlot.AXES: self.__data.canvasMargin[axis] = margin elif axis in QwtPlot.AXES: self.__data.canvasMargin[axis] = margin def canvasMargin(self, axisId): """ :param int axisId: Axis index :return: Margin around the scale tick borders .. seealso:: :py:meth:`setCanvasMargin()` """ if axisId not in QwtPlot.AXES: return 0 return self.__data.canvasMargin[axisId] def setAlignCanvasToScales(self, *args): """ Change the align-canvas-to-axis-scales setting. .. py:method:: setAlignCanvasToScales(on): Set the align-canvas-to-axis-scales flag for all axes :param bool on: True/False .. py:method:: setAlignCanvasToScales(axisId, on): Change the align-canvas-to-axis-scales setting. The canvas may: - extend beyond the axis scale ends to maximize its size, - align with the axis scale ends to control its size. The axisId parameter is somehow confusing as it identifies a border of the plot and not the axes, that are aligned. F.e when `QwtPlot.yLeft` is set, the left end of the the x-axes (`QwtPlot.xTop`, `QwtPlot.xBottom`) is aligned. :param int axisId: Axis index :param bool on: True/False .. seealso:: :py:meth:`setAlignCanvasToScale()`, :py:meth:`alignCanvasToScale()` """ if len(args) == 1: (on,) = args for axis in QwtPlot.AXES: self.__data.alignCanvasToScales[axis] = on elif len(args) == 2: axisId, on = args if axisId in QwtPlot.AXES: self.__data.alignCanvasToScales[axisId] = on else: raise TypeError( "%s().setAlignCanvasToScales() takes 1 or 2 " "argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def alignCanvasToScale(self, axisId): """ Return the align-canvas-to-axis-scales setting. The canvas may: - extend beyond the axis scale ends to maximize its size - align with the axis scale ends to control its size. :param int axisId: Axis index :return: align-canvas-to-axis-scales setting .. seealso:: :py:meth:`setAlignCanvasToScale()`, :py:meth:`setCanvasMargin()` """ if axisId not in QwtPlot.AXES: return False return self.__data.alignCanvasToScales[axisId] def setSpacing(self, spacing): """ Change the spacing of the plot. The spacing is the distance between the plot components. :param int spacing: New spacing .. seealso:: :py:meth:`setCanvasMargin()`, :py:meth:`spacing()` """ self.__data.spacing = max([0, spacing]) def spacing(self): """ :return: Spacing .. seealso:: :py:meth:`margin()`, :py:meth:`setSpacing()` """ return self.__data.spacing def setLegendPosition(self, *args): """ Specify the position of the legend .. py:method:: setLegendPosition(pos, [ratio=0.]): Specify the position of the legend :param QwtPlot.LegendPosition pos: Legend position :param float ratio: Ratio between legend and the bounding rectangle of title, footer, canvas and axes The legend will be shrunk if it would need more space than the given ratio. The ratio is limited to ]0.0 .. 1.0]. In case of <= 0.0 it will be reset to the default ratio. The default vertical/horizontal ratio is 0.33/0.5. Valid position values: * `QwtPlot.LeftLegend`, * `QwtPlot.RightLegend`, * `QwtPlot.TopLegend`, * `QwtPlot.BottomLegend` .. seealso:: :py:meth:`setLegendPosition()` """ if len(args) == 2: pos, ratio = args if ratio > 1.0: ratio = 1.0 if pos in (QwtPlot.TopLegend, QwtPlot.BottomLegend): if ratio <= 0.0: ratio = 0.33 self.__data.legendRatio = ratio self.__data.legendPos = pos elif pos in (QwtPlot.LeftLegend, QwtPlot.RightLegend): if ratio <= 0.0: ratio = 0.5 self.__data.legendRatio = ratio self.__data.legendPos = pos elif len(args) == 1: (pos,) = args self.setLegendPosition(pos, 0.0) else: raise TypeError( "%s().setLegendPosition() takes 1 or 2 argument(s)" "(%s given)" % (self.__class__.__name__, len(args)) ) def legendPosition(self): """ :return: Position of the legend .. seealso:: :py:meth:`legendPosition()` """ return self.__data.legendPos def setLegendRatio(self, ratio): """ Specify the relative size of the legend in the plot :param float ratio: Ratio between legend and the bounding rectangle of title, footer, canvas and axes The legend will be shrunk if it would need more space than the given ratio. The ratio is limited to ]0.0 .. 1.0]. In case of <= 0.0 it will be reset to the default ratio. The default vertical/horizontal ratio is 0.33/0.5. .. seealso:: :py:meth:`legendRatio()` """ self.setLegendPosition(self.legendPosition(), ratio) def legendRatio(self): """ :return: The relative size of the legend in the plot. .. seealso:: :py:meth:`setLegendRatio()` """ return self.__data.legendRatio def setTitleRect(self, rect): """ Set the geometry for the title This method is intended to be used from derived layouts overloading `activate()` :param QRectF rect: Rectangle .. seealso:: :py:meth:`titleRect()`, :py:meth:`activate()` """ self.__data.titleRect = rect def titleRect(self): """ :return: Geometry for the title .. seealso:: :py:meth:`invalidate()`, :py:meth:`activate()` """ return self.__data.titleRect def setFooterRect(self, rect): """ Set the geometry for the footer This method is intended to be used from derived layouts overloading `activate()` :param QRectF rect: Rectangle .. seealso:: :py:meth:`footerRect()`, :py:meth:`activate()` """ self.__data.footerRect = rect def footerRect(self): """ :return: Geometry for the footer .. seealso:: :py:meth:`invalidate()`, :py:meth:`activate()` """ return self.__data.footerRect def setLegendRect(self, rect): """ Set the geometry for the legend This method is intended to be used from derived layouts overloading `activate()` :param QRectF rect: Rectangle for the legend .. seealso:: :py:meth:`footerRect()`, :py:meth:`activate()` """ self.__data.legendRect = rect def legendRect(self): """ :return: Geometry for the legend .. seealso:: :py:meth:`invalidate()`, :py:meth:`activate()` """ return self.__data.legendRect def setScaleRect(self, axis, rect): """ Set the geometry for an axis This method is intended to be used from derived layouts overloading `activate()` :param int axisId: Axis index :param QRectF rect: Rectangle for the scale .. seealso:: :py:meth:`scaleRect()`, :py:meth:`activate()` """ if axis in QwtPlot.AXES: self.__data.scaleRect[axis] = rect def scaleRect(self, axis): """ :param int axisId: Axis index :return: Geometry for the scale .. seealso:: :py:meth:`invalidate()`, :py:meth:`activate()` """ if axis not in QwtPlot.AXES: return QRectF() return self.__data.scaleRect[axis] def setCanvasRect(self, rect): """ Set the geometry for the canvas This method is intended to be used from derived layouts overloading `activate()` :param QRectF rect: Rectangle .. seealso:: :py:meth:`canvasRect()`, :py:meth:`activate()` """ self.__data.canvasRect = rect def canvasRect(self): """ :return: Geometry for the canvas .. seealso:: :py:meth:`invalidate()`, :py:meth:`activate()` """ return self.__data.canvasRect def invalidate(self): """ Invalidate the geometry of all components. .. seealso:: :py:meth:`activate()` """ self.__data.titleRect = QRectF() self.__data.footerRect = QRectF() self.__data.legendRect = QRectF() self.__data.canvasRect = QRectF() for axis in QwtPlot.AXES: self.__data.scaleRect[axis] = QRectF() def minimumSizeHint(self, plot): """ :param qwt.plot.QwtPlot plot: Plot widget :return: Minimum size hint .. seealso:: :py:meth:`qwt.plot.QwtPlot.minimumSizeHint()` """ class _ScaleData(object): def __init__(self): self.w = 0 self.h = 0 self.minLeft = 0 self.minRight = 0 self.tickOffset = 0 scaleData = [_ScaleData() for _i in QwtPlot.AXES] canvasBorder = [0 for _i in QwtPlot.AXES] layout = plot.canvas().layout() if layout is None: left, top, right, bottom = 0, 0, 0, 0 else: left, top, right, bottom = layout.getContentsMargins() for axis in QwtPlot.AXES: if plot.axisEnabled(axis): scl = plot.axisWidget(axis) sd = scaleData[axis] hint = scl.minimumSizeHint() sd.w = hint.width() sd.h = hint.height() sd.minLeft, sd.minLeft = scl.getBorderDistHint() sd.tickOffset = scl.margin() if scl.scaleDraw().hasComponent(QwtAbstractScaleDraw.Ticks): sd.tickOffset += math.ceil(scl.scaleDraw().maxTickLength()) canvasBorder[axis] = left + self.__data.canvasMargin[axis] + 1 for axis in QwtPlot.AXES: sd = scaleData[axis] if sd.w and axis in (QwtPlot.xBottom, QwtPlot.xTop): if ( sd.minLeft > canvasBorder[QwtPlot.yLeft] and scaleData[QwtPlot.yLeft].w ): shiftLeft = sd.minLeft - canvasBorder[QwtPlot.yLeft] if shiftLeft > scaleData[QwtPlot.yLeft].w: shiftLeft = scaleData[QwtPlot.yLeft].w sd.w -= shiftLeft if ( sd.minRight > canvasBorder[QwtPlot.yRight] and scaleData[QwtPlot.yRight].w ): shiftRight = sd.minRight - canvasBorder[QwtPlot.yRight] if shiftRight > scaleData[QwtPlot.yRight].w: shiftRight = scaleData[QwtPlot.yRight].w sd.w -= shiftRight if sd.h and axis in (QwtPlot.yLeft, QwtPlot.yRight): if ( sd.minLeft > canvasBorder[QwtPlot.xBottom] and scaleData[QwtPlot.xBottom].h ): shiftBottom = sd.minLeft - canvasBorder[QwtPlot.xBottom] if shiftBottom > scaleData[QwtPlot.xBottom].tickOffset: shiftBottom = scaleData[QwtPlot.xBottom].tickOffset sd.h -= shiftBottom if ( sd.minLeft > canvasBorder[QwtPlot.xTop] and scaleData[QwtPlot.xTop].h ): shiftTop = sd.minRight - canvasBorder[QwtPlot.xTop] if shiftTop > scaleData[QwtPlot.xTop].tickOffset: shiftTop = scaleData[QwtPlot.xTop].tickOffset sd.h -= shiftTop canvas = plot.canvas() minCanvasSize = canvas.minimumSize() w = scaleData[QwtPlot.yLeft].w + scaleData[QwtPlot.yRight].w cw = ( max([scaleData[QwtPlot.xBottom].w, scaleData[QwtPlot.xTop].w]) + left + 1 + right + 1 ) w += max([cw, minCanvasSize.width()]) h = scaleData[QwtPlot.xBottom].h + scaleData[QwtPlot.xTop].h ch = ( max([scaleData[QwtPlot.yLeft].h, scaleData[QwtPlot.yRight].h]) + top + 1 + bottom + 1 ) h += max([ch, minCanvasSize.height()]) for label in [plot.titleLabel(), plot.footerLabel()]: if label and not label.text().isEmpty(): centerOnCanvas = not plot.axisEnabled( QwtPlot.yLeft ) and plot.axisEnabled(QwtPlot.yRight) labelW = w if centerOnCanvas: labelW -= scaleData[QwtPlot.yLeft].w + scaleData[QwtPlot.yRight].w labelH = label.heightForWidth(labelW) if labelH > labelW: w = labelW = labelH if centerOnCanvas: w += scaleData[QwtPlot.yLeft].w + scaleData[QwtPlot.yRight].w labelH = label.heightForWidth(labelW) h += labelH + self.__data.spacing legend = plot.legend() if legend and not legend.isEmpty(): if self.__data.legendPos in (QwtPlot.LeftLegend, QwtPlot.RightLegend): legendW = legend.sizeHint().width() legendH = legend.heightForWidth(legendW) if legend.frameWidth() > 0: w += self.__data.spacing if legendH > h: legendW += legend.scrollExtent(Qt.Horizontal) if self.__data.legendRatio < 1.0: legendW = min([legendW, int(w / (1.0 - self.__data.legendRatio))]) w += legendW + self.__data.spacing else: legendW = min([legend.sizeHint().width(), w]) legendH = legend.heightForWidth(legendW) if legend.frameWidth() > 0: h += self.__data.spacing if self.__data.legendRatio < 1.0: legendH = min([legendH, int(h / (1.0 - self.__data.legendRatio))]) h += legendH + self.__data.spacing return QSize(w, h) def layoutLegend(self, options, rect): """ Find the geometry for the legend :param options: Options how to layout the legend :param QRectF rect: Rectangle where to place the legend :return: Geometry for the legend """ hint = self.__data.layoutData.legend.hint if self.__data.legendPos in (QwtPlot.LeftLegend, QwtPlot.RightLegend): dim = min([hint.width(), int(rect.width() * self.__data.legendRatio)]) if not (options & self.IgnoreScrollbars): if hint.height() > rect.height(): dim += self.__data.layoutData.legend.hScrollExtent else: dim = min([hint.height(), int(rect.height() * self.__data.legendRatio)]) dim = max([dim, self.__data.layoutData.legend.vScrollExtent]) legendRect = QRectF(rect) if self.__data.legendPos == QwtPlot.LeftLegend: legendRect.setWidth(dim) elif self.__data.legendPos == QwtPlot.RightLegend: legendRect.setX(rect.right() - dim) legendRect.setWidth(dim) elif self.__data.legendPos == QwtPlot.TopLegend: legendRect.setHeight(dim) elif self.__data.legendPos == QwtPlot.BottomLegend: legendRect.setY(rect.bottom() - dim) legendRect.setHeight(dim) return legendRect def alignLegend(self, canvasRect, legendRect): """ Align the legend to the canvas :param QRectF canvasRect: Geometry of the canvas :param QRectF legendRect: Maximum geometry for the legend :return: Geometry for the aligned legend """ alignedRect = legendRect if self.__data.legendPos in (QwtPlot.BottomLegend, QwtPlot.TopLegend): if self.__data.layoutData.legend.hint.width() < canvasRect.width(): alignedRect.setX(canvasRect.x()) alignedRect.setWidth(canvasRect.width()) else: if self.__data.layoutData.legend.hint.height() < canvasRect.height(): alignedRect.setY(canvasRect.y()) alignedRect.setHeight(canvasRect.height()) return alignedRect def expandLineBreaks(self, options, rect): """ Expand all line breaks in text labels, and calculate the height of their widgets in orientation of the text. :param options: Options how to layout the legend :param QRectF rect: Bounding rectangle for title, footer, axes and canvas. :return: tuple `(dimTitle, dimFooter, dimAxes)` Returns: * `dimTitle`: Expanded height of the title widget * `dimFooter`: Expanded height of the footer widget * `dimAxes`: Expanded heights of the axis in axis orientation. """ dimTitle = dimFooter = 0 dimAxes = [0 for axis in QwtPlot.AXES] backboneOffset = [0 for _i in QwtPlot.AXES] for axis in QwtPlot.AXES: if not (options & self.IgnoreFrames): backboneOffset[axis] += self.__data.layoutData.canvas.contentsMargins[ axis ] if not self.__data.alignCanvasToScales[axis]: backboneOffset[axis] += self.__data.canvasMargin[axis] done = False while not done: done = True # the size for the 4 axis depend on each other. Expanding # the height of a horizontal axis will shrink the height # for the vertical axis, shrinking the height of a vertical # axis will result in a line break what will expand the # width and results in shrinking the width of a horizontal # axis what might result in a line break of a horizontal # axis ... . So we loop as long until no size changes. if not ( (options & self.IgnoreTitle) or self.__data.layoutData.title.text.isEmpty() ): w = rect.width() if ( self.__data.layoutData.scale[QwtPlot.yLeft].isEnabled != self.__data.layoutData.scale[QwtPlot.yRight].isEnabled ): w -= dimAxes[QwtPlot.yLeft] + dimAxes[QwtPlot.yRight] d = math.ceil(self.__data.layoutData.title.text.heightForWidth(w)) if not (options & self.IgnoreFrames): d += 2 * self.__data.layoutData.title.frameWidth if d > dimTitle: dimTitle = d done = False if not ( (options & self.IgnoreFooter) or self.__data.layoutData.footer.text.isEmpty() ): w = rect.width() if ( self.__data.layoutData.scale[QwtPlot.yLeft].isEnabled != self.__data.layoutData.scale[QwtPlot.yRight].isEnabled ): w -= dimAxes[QwtPlot.yLeft] + dimAxes[QwtPlot.yRight] d = math.ceil(self.__data.layoutData.footer.text.heightForWidth(w)) if not (options & self.IgnoreFrames): d += 2 * self.__data.layoutData.footer.frameWidth if d > dimFooter: dimFooter = d done = False for axis in QwtPlot.AXES: scaleData = self.__data.layoutData.scale[axis] if scaleData.isEnabled: if axis in (QwtPlot.xTop, QwtPlot.xBottom): length = ( rect.width() - dimAxes[QwtPlot.yLeft] - dimAxes[QwtPlot.yRight] ) length -= scaleData.start + scaleData.end if dimAxes[QwtPlot.yRight] > 0: length -= 1 length += min( [ dimAxes[QwtPlot.yLeft], scaleData.start - backboneOffset[QwtPlot.yLeft], ] ) length += min( [ dimAxes[QwtPlot.yRight], scaleData.end - backboneOffset[QwtPlot.yRight], ] ) else: length = ( rect.height() - dimAxes[QwtPlot.xTop] - dimAxes[QwtPlot.xBottom] ) length -= scaleData.start + scaleData.end length -= 1 if dimAxes[QwtPlot.xBottom] <= 0: length -= 1 if dimAxes[QwtPlot.xTop] <= 0: length -= 1 if dimAxes[QwtPlot.xBottom] > 0: length += min( [ self.__data.layoutData.scale[ QwtPlot.xBottom ].tickOffset, float( scaleData.start - backboneOffset[QwtPlot.xBottom] ), ] ) if dimAxes[QwtPlot.xTop] > 0: length += min( [ self.__data.layoutData.scale[ QwtPlot.xTop ].tickOffset, float(scaleData.end - backboneOffset[QwtPlot.xTop]), ] ) if dimTitle > 0: length -= dimTitle + self.__data.spacing d = scaleData.dimWithoutTitle if not scaleData.scaleWidget.title().isEmpty(): d += scaleData.scaleWidget.titleHeightForWidth( math.floor(length) ) if d > dimAxes[axis]: dimAxes[axis] = d done = False return dimTitle, dimFooter, dimAxes def alignScales(self, options, canvasRect, scaleRect): """ Align the ticks of the axis to the canvas borders using the empty corners. :param options: Options how to layout the legend :param QRectF canvasRect: Geometry of the canvas ( IN/OUT ) :param QRectF scaleRect: Geometry of the scales ( IN/OUT ) """ backboneOffset = [0 for _i in QwtPlot.AXES] for axis in QwtPlot.AXES: backboneOffset[axis] = 0 if not self.__data.alignCanvasToScales[axis]: backboneOffset[axis] += self.__data.canvasMargin[axis] if not options & self.IgnoreFrames: backboneOffset[axis] += self.__data.layoutData.canvas.contentsMargins[ axis ] for axis in QwtPlot.AXES: if not scaleRect[axis].isValid(): continue startDist = self.__data.layoutData.scale[axis].start endDist = self.__data.layoutData.scale[axis].end axisRect = scaleRect[axis] if axis in (QwtPlot.xTop, QwtPlot.xBottom): leftScaleRect = scaleRect[QwtPlot.yLeft] leftOffset = backboneOffset[QwtPlot.yLeft] - startDist if leftScaleRect.isValid(): dx = leftOffset + leftScaleRect.width() if self.__data.alignCanvasToScales[QwtPlot.yLeft] and dx < 0.0: cLeft = canvasRect.left() canvasRect.setLeft(max([cLeft, axisRect.left() - dx])) else: minLeft = leftScaleRect.left() left = axisRect.left() + leftOffset axisRect.setLeft(max([left, minLeft])) else: if ( self.__data.alignCanvasToScales[QwtPlot.yLeft] and leftOffset < 0 ): canvasRect.setLeft( max([canvasRect.left(), axisRect.left() - leftOffset]) ) else: if leftOffset > 0: axisRect.setLeft(axisRect.left() + leftOffset) rightScaleRect = scaleRect[QwtPlot.yRight] rightOffset = backboneOffset[QwtPlot.yRight] - endDist + 1 if rightScaleRect.isValid(): dx = rightOffset + rightScaleRect.width() if self.__data.alignCanvasToScales[QwtPlot.yRight] and dx < 0: cRight = canvasRect.right() canvasRect.setRight(min([cRight, axisRect.right() + dx])) maxRight = rightScaleRect.right() right = axisRect.right() - rightOffset axisRect.setRight(min([right, maxRight])) else: if ( self.__data.alignCanvasToScales[QwtPlot.yRight] and rightOffset < 0 ): canvasRect.setRight( min([canvasRect.right(), axisRect.right() + rightOffset]) ) else: if rightOffset > 0: axisRect.setRight(axisRect.right() - rightOffset) else: bottomScaleRect = scaleRect[QwtPlot.xBottom] bottomOffset = backboneOffset[QwtPlot.xBottom] - endDist + 1 if bottomScaleRect.isValid(): dy = bottomOffset + bottomScaleRect.height() if self.__data.alignCanvasToScales[QwtPlot.xBottom] and dy < 0: cBottom = canvasRect.bottom() canvasRect.setBottom(min([cBottom, axisRect.bottom() + dy])) else: maxBottom = ( bottomScaleRect.top() + self.__data.layoutData.scale[QwtPlot.xBottom].tickOffset ) bottom = axisRect.bottom() - bottomOffset axisRect.setBottom(min([bottom, maxBottom])) else: if ( self.__data.alignCanvasToScales[QwtPlot.xBottom] and bottomOffset < 0 ): canvasRect.setBottom( min([canvasRect.bottom(), axisRect.bottom() + bottomOffset]) ) else: if bottomOffset > 0: axisRect.setBottom(axisRect.bottom() - bottomOffset) topScaleRect = scaleRect[QwtPlot.xTop] topOffset = backboneOffset[QwtPlot.xTop] - startDist if topScaleRect.isValid(): dy = topOffset + topScaleRect.height() if self.__data.alignCanvasToScales[QwtPlot.xTop] and dy < 0: cTop = canvasRect.top() canvasRect.setTop(max([cTop, axisRect.top() - dy])) else: minTop = ( topScaleRect.bottom() - self.__data.layoutData.scale[QwtPlot.xTop].tickOffset ) top = axisRect.top() + topOffset axisRect.setTop(max([top, minTop])) else: if self.__data.alignCanvasToScales[QwtPlot.xTop] and topOffset < 0: canvasRect.setTop( max([canvasRect.top(), axisRect.top() - topOffset]) ) else: if topOffset > 0: axisRect.setTop(axisRect.top() + topOffset) for axis in QwtPlot.AXES: sRect = scaleRect[axis] if not sRect.isValid(): continue if axis in (QwtPlot.xBottom, QwtPlot.xTop): if self.__data.alignCanvasToScales[QwtPlot.yLeft]: y = canvasRect.left() - self.__data.layoutData.scale[axis].start if not options & self.IgnoreFrames: y += self.__data.layoutData.canvas.contentsMargins[ QwtPlot.yLeft ] sRect.setLeft(y) if self.__data.alignCanvasToScales[QwtPlot.yRight]: y = canvasRect.right() - 1 + self.__data.layoutData.scale[axis].end if not options & self.IgnoreFrames: y -= self.__data.layoutData.canvas.contentsMargins[ QwtPlot.yRight ] sRect.setRight(y) if self.__data.alignCanvasToScales[axis]: if axis == QwtPlot.xTop: sRect.setBottom(canvasRect.top()) else: sRect.setTop(canvasRect.bottom()) else: if self.__data.alignCanvasToScales[QwtPlot.xTop]: x = canvasRect.top() - self.__data.layoutData.scale[axis].start if not options & self.IgnoreFrames: x += self.__data.layoutData.canvas.contentsMargins[QwtPlot.xTop] sRect.setTop(x) if self.__data.alignCanvasToScales[QwtPlot.xBottom]: x = canvasRect.bottom() - 1 + self.__data.layoutData.scale[axis].end if not options & self.IgnoreFrames: x -= self.__data.layoutData.canvas.contentsMargins[ QwtPlot.xBottom ] sRect.setBottom(x) if self.__data.alignCanvasToScales[axis]: if axis == QwtPlot.yLeft: sRect.setRight(canvasRect.left()) else: sRect.setLeft(canvasRect.right()) def activate(self, plot, plotRect, options=0x00): """ Recalculate the geometry of all components. :param qwt.plot.QwtPlot plot: Plot to be layout :param QRectF plotRect: Rectangle where to place the components :param options: Layout options """ self.invalidate() rect = QRectF(plotRect) self.__data.layoutData.init(plot, rect) if ( not (options & self.IgnoreLegend) and plot.legend() and not plot.legend().isEmpty() ): self.__data.legendRect = self.layoutLegend(options, rect) region = QRegion(rect.toRect()) rect = QRectF( region.subtracted( QRegion(self.__data.legendRect.toRect()) ).boundingRect() ) if self.__data.legendPos == QwtPlot.LeftLegend: rect.setLeft(rect.left() + self.__data.spacing) elif self.__data.legendPos == QwtPlot.RightLegend: rect.setRight(rect.right() - self.__data.spacing) elif self.__data.legendPos == QwtPlot.TopLegend: rect.setTop(rect.top() + self.__data.spacing) elif self.__data.legendPos == QwtPlot.BottomLegend: rect.setBottom(rect.bottom() - self.__data.spacing) # +---+-----------+---+ # | Title | # +---+-----------+---+ # | | Axis | | # +---+-----------+---+ # | A | | A | # | x | Canvas | x | # | i | | i | # | s | | s | # +---+-----------+---+ # | | Axis | | # +---+-----------+---+ # | Footer | # +---+-----------+---+ # title, footer and axes include text labels. The height of each # label depends on its line breaks, that depend on the width # for the label. A line break in a horizontal text will reduce # the available width for vertical texts and vice versa. # expandLineBreaks finds the height/width for title, footer and axes # including all line breaks. dimTitle, dimFooter, dimAxes = self.expandLineBreaks(options, rect) if dimTitle > 0: self.__data.titleRect.setRect( rect.left(), rect.top(), rect.width(), dimTitle ) rect.setTop(self.__data.titleRect.bottom() + self.__data.spacing) if ( self.__data.layoutData.scale[QwtPlot.yLeft].isEnabled != self.__data.layoutData.scale[QwtPlot.yRight].isEnabled ): self.__data.titleRect.setX(rect.left() + dimAxes[QwtPlot.yLeft]) self.__data.titleRect.setWidth( rect.width() - dimAxes[QwtPlot.yLeft] - dimAxes[QwtPlot.yRight] ) if dimFooter > 0: self.__data.footerRect.setRect( rect.left(), rect.bottom() - dimFooter, rect.width(), dimFooter ) rect.setBottom(self.__data.footerRect.top() - self.__data.spacing) if ( self.__data.layoutData.scale[QwtPlot.yLeft].isEnabled != self.__data.layoutData.scale[QwtPlot.yRight].isEnabled ): self.__data.footerRect.setX(rect.left() + dimAxes[QwtPlot.yLeft]) self.__data.footerRect.setWidth( rect.width() - dimAxes[QwtPlot.yLeft] - dimAxes[QwtPlot.yRight] ) self.__data.canvasRect.setRect( rect.x() + dimAxes[QwtPlot.yLeft], rect.y() + dimAxes[QwtPlot.xTop], rect.width() - dimAxes[QwtPlot.yRight] - dimAxes[QwtPlot.yLeft], rect.height() - dimAxes[QwtPlot.xBottom] - dimAxes[QwtPlot.xTop], ) for axis in QwtPlot.AXES: if dimAxes[axis]: dim = dimAxes[axis] scaleRect = self.__data.scaleRect[axis] scaleRect.setRect(*self.__data.canvasRect.getRect()) if axis == QwtPlot.yLeft: scaleRect.setX(self.__data.canvasRect.left() - dim) scaleRect.setWidth(dim) elif axis == QwtPlot.yRight: scaleRect.setX(self.__data.canvasRect.right()) scaleRect.setWidth(dim) elif axis == QwtPlot.xBottom: scaleRect.setY(self.__data.canvasRect.bottom()) scaleRect.setHeight(dim) elif axis == QwtPlot.xTop: scaleRect.setY(self.__data.canvasRect.top() - dim) scaleRect.setHeight(dim) scaleRect = scaleRect.normalized() # +---+-----------+---+ # | <- Axis -> | # +-^-+-----------+-^-+ # | | | | | | # | | | | # | A | | A | # | x | Canvas | x | # | i | | i | # | s | | s | # | | | | # | | | | | | # +-V-+-----------+-V-+ # | <- Axis -> | # +---+-----------+---+ # The ticks of the axes - not the labels above - should # be aligned to the canvas. So we try to use the empty # corners to extend the axes, so that the label texts # left/right of the min/max ticks are moved into them. self.alignScales(options, self.__data.canvasRect, self.__data.scaleRect) if not self.__data.legendRect.isEmpty(): self.__data.legendRect = self.alignLegend( self.__data.canvasRect, self.__data.legendRect ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655398576.0 PythonQwt-0.10.2/qwt/plot_marker.py0000666000000000000000000005142000000000000014150 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlotMarker ------------- .. autoclass:: QwtPlotMarker :members: """ from qwt.plot import QwtPlot, QwtPlotItem from qwt.text import QwtText from qwt.graphic import QwtGraphic from qwt.symbol import QwtSymbol from qwt.qthelpers import qcolor_from_str from qtpy.QtGui import QPen, QPainter from qtpy.QtCore import Qt, QPointF, QRectF, QSizeF, QRect, QLineF class QwtPlotMarker_PrivateData(object): def __init__(self): self.labelAlignment = Qt.AlignCenter self.labelOrientation = Qt.Horizontal self.spacing = 2 self.symbol = None self.style = QwtPlotMarker.NoLine self.xValue = 0.0 self.yValue = 0.0 self.label = QwtText() self.pen = QPen() class QwtPlotMarker(QwtPlotItem): """ A class for drawing markers A marker can be a horizontal line, a vertical line, a symbol, a label or any combination of them, which can be drawn around a center point inside a bounding rectangle. The `setSymbol()` member assigns a symbol to the marker. The symbol is drawn at the specified point. With `setLabel()`, a label can be assigned to the marker. The `setLabelAlignment()` member specifies where the label is drawn. All the Align*-constants in `Qt.AlignmentFlags` (see Qt documentation) are valid. The interpretation of the alignment depends on the marker's line style. The alignment refers to the center point of the marker, which means, for example, that the label would be printed left above the center point if the alignment was set to `Qt.AlignLeft | Qt.AlignTop`. Line styles: * `QwtPlotMarker.NoLine`: No line * `QwtPlotMarker.HLine`: A horizontal line * `QwtPlotMarker.VLine`: A vertical line * `QwtPlotMarker.Cross`: A crosshair """ # enum LineStyle NoLine, HLine, VLine, Cross = list(range(4)) def __init__(self, title=None): if title is None: title = "" if not isinstance(title, QwtText): title = QwtText(title) QwtPlotItem.__init__(self, title) self.__data = QwtPlotMarker_PrivateData() self.setZ(30.0) @classmethod def make( cls, xvalue=None, yvalue=None, title=None, label=None, symbol=None, plot=None, z=None, x_axis=None, y_axis=None, align=None, orientation=None, spacing=None, linestyle=None, color=None, width=None, style=None, antialiased=False, ): """ Create and setup a new `QwtPlotMarker` object (convenience function). :param xvalue: x position (optional, default: None) :type xvalue: float or None :param yvalue: y position (optional, default: None) :type yvalue: float or None :param title: Marker title :type title: qwt.text.QwtText or str or None :param label: Label text :type label: qwt.text.QwtText or str or None :param symbol: New symbol :type symbol: qwt.symbol.QwtSymbol or None :param plot: Plot to attach the curve to :type plot: qwt.plot.QwtPlot or None :param z: Z-value :type z: float or None :param int x_axis: curve X-axis (default: QwtPlot.yLeft) :param int y_axis: curve Y-axis (default: QwtPlot.xBottom) :param align: Alignment of the label :type align: Qt.Alignment or None :param orientation: Orientation of the label :type orientation: Qt.Orientation or None :param spacing: Spacing (distance between the position and the label) :type spacing: int or None :param int linestyle: Line style :param color: Pen color :type color: QColor or str or None :param float width: Pen width :param Qt.PenStyle style: Pen style :param bool antialiased: if True, enable antialiasing rendering .. seealso:: :py:meth:`setData()`, :py:meth:`setPen()`, :py:meth:`attach()` """ item = cls(title) if z is not None: item.setZ(z) if symbol is not None: item.setSymbol(symbol) if xvalue is not None: item.setXValue(xvalue) if yvalue is not None: item.setYValue(yvalue) if label is not None: item.setLabel(label) x_axis = QwtPlot.xBottom if x_axis is None else x_axis y_axis = QwtPlot.yLeft if y_axis is None else y_axis item.setAxes(x_axis, y_axis) if align is not None: item.setLabelAlignment(align) if orientation is not None: item.setLabelOrientation(orientation) if spacing is not None: item.setSpacing(spacing) color = qcolor_from_str(color, Qt.black) width = 1.0 if width is None else width style = Qt.SolidLine if style is None else style item.setLinePen(QPen(color, width, style)) item.setRenderHint(cls.RenderAntialiased, antialiased) if linestyle is not None: item.setLineStyle(linestyle) if plot is not None: item.attach(plot) return item def rtti(self): """:return: `QwtPlotItem.Rtti_PlotMarker`""" return QwtPlotItem.Rtti_PlotMarker def value(self): """:return: Value""" return QPointF(self.__data.xValue, self.__data.yValue) def xValue(self): """:return: x Value""" return self.__data.xValue def yValue(self): """:return: y Value""" return self.__data.yValue def setValue(self, *args): """ Set Value .. py:method:: setValue(pos): :param QPointF pos: Position .. py:method:: setValue(x, y): :param float x: x position :param float y: y position """ if len(args) == 1: (pos,) = args self.setValue(pos.x(), pos.y()) elif len(args) == 2: x, y = args if x != self.__data.xValue or y != self.__data.yValue: self.__data.xValue = x self.__data.yValue = y self.itemChanged() else: raise TypeError( "%s() takes 1 or 2 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def setXValue(self, x): """ Set X Value :param float x: x position """ self.setValue(x, self.__data.yValue) def setYValue(self, y): """ Set Y Value :param float y: y position """ self.setValue(self.__data.xValue, y) def draw(self, painter, xMap, yMap, canvasRect): """ Draw the marker :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: x Scale Map :param qwt.scale_map.QwtScaleMap yMap: y Scale Map :param QRectF canvasRect: Contents rectangle of the canvas in painter coordinates """ pos = QPointF( xMap.transform(self.__data.xValue), yMap.transform(self.__data.yValue) ) self.drawLines(painter, canvasRect, pos) if self.__data.symbol and self.__data.symbol.style() != QwtSymbol.NoSymbol: sz = self.__data.symbol.size() width, height = int(sz.width()), int(sz.height()) clipRect = QRectF( canvasRect.adjusted(-width, -height, width, height) ) if clipRect.contains(pos): self.__data.symbol.drawSymbols(painter, [pos]) self.drawLabel(painter, canvasRect, pos) def drawLines(self, painter, canvasRect, pos): """ Draw the lines marker :param QPainter painter: Painter :param QRectF canvasRect: Contents rectangle of the canvas in painter coordinates :param QPointF pos: Position of the marker, translated into widget coordinates .. seealso:: :py:meth:`drawLabel()`, :py:meth:`qwt.symbol.QwtSymbol.drawSymbol()` """ if self.__data.style == self.NoLine: return painter.setPen(self.__data.pen) if self.__data.style in (QwtPlotMarker.HLine, QwtPlotMarker.Cross): y = pos.y() painter.drawLine(QLineF(canvasRect.left(), y, canvasRect.right() - 1.0, y)) if self.__data.style in (QwtPlotMarker.VLine, QwtPlotMarker.Cross): x = pos.x() painter.drawLine(QLineF(x, canvasRect.top(), x, canvasRect.bottom() - 1.0)) def drawLabel(self, painter, canvasRect, pos): """ Align and draw the text label of the marker :param QPainter painter: Painter :param QRectF canvasRect: Contents rectangle of the canvas in painter coordinates :param QPointF pos: Position of the marker, translated into widget coordinates .. seealso:: :py:meth:`drawLabel()`, :py:meth:`qwt.symbol.QwtSymbol.drawSymbol()` """ if self.__data.label.isEmpty(): return align = self.__data.labelAlignment alignPos = QPointF(pos) symbolOff = QSizeF(0, 0) if self.__data.style == QwtPlotMarker.VLine: # In VLine-style the y-position is pointless and # the alignment flags are relative to the canvas if bool(self.__data.labelAlignment & Qt.AlignTop): alignPos.setY(canvasRect.top()) align &= ~Qt.AlignTop align |= Qt.AlignBottom elif bool(self.__data.labelAlignment & Qt.AlignBottom): # In HLine-style the x-position is pointless and # the alignment flags are relative to the canvas alignPos.setY(canvasRect.bottom() - 1) align &= ~Qt.AlignBottom align |= Qt.AlignTop else: alignPos.setY(canvasRect.center().y()) elif self.__data.style == QwtPlotMarker.HLine: if bool(self.__data.labelAlignment & Qt.AlignLeft): alignPos.setX(canvasRect.left()) align &= ~Qt.AlignLeft align |= Qt.AlignRight elif bool(self.__data.labelAlignment & Qt.AlignRight): alignPos.setX(canvasRect.right() - 1) align &= ~Qt.AlignRight align |= Qt.AlignLeft else: alignPos.setX(canvasRect.center().x()) else: if self.__data.symbol and self.__data.symbol.style() != QwtSymbol.NoSymbol: symbolOff = self.__data.symbol.size() + QSizeF(1, 1) symbolOff /= 2 pw2 = self.__data.pen.widthF() / 2.0 if pw2 == 0.0: pw2 = 0.5 spacing = self.__data.spacing xOff = max([pw2, symbolOff.width()]) yOff = max([pw2, symbolOff.height()]) textSize = self.__data.label.textSize(painter.font()) if align & Qt.AlignLeft: alignPos.setX(alignPos.x() - (xOff + spacing)) if self.__data.labelOrientation == Qt.Vertical: alignPos.setX(alignPos.x() - textSize.height()) else: alignPos.setX(alignPos.x() - textSize.width()) elif align & Qt.AlignRight: alignPos.setX(alignPos.x() + xOff + spacing) else: if self.__data.labelOrientation == Qt.Vertical: alignPos.setX(alignPos.x() - textSize.height() / 2) else: alignPos.setX(alignPos.x() - textSize.width() / 2) if align & Qt.AlignTop: alignPos.setY(alignPos.y() - (yOff + spacing)) if self.__data.labelOrientation != Qt.Vertical: alignPos.setY(alignPos.y() - textSize.height()) elif align & Qt.AlignBottom: alignPos.setY(alignPos.y() + yOff + spacing) if self.__data.labelOrientation == Qt.Vertical: alignPos.setY(alignPos.y() + textSize.width()) else: if self.__data.labelOrientation == Qt.Vertical: alignPos.setY(alignPos.y() + textSize.width() / 2) else: alignPos.setY(alignPos.y() - textSize.height() / 2) painter.translate(alignPos.x(), alignPos.y()) if self.__data.labelOrientation == Qt.Vertical: painter.rotate(-90.0) textRect = QRectF(0, 0, textSize.width(), textSize.height()) self.__data.label.draw(painter, textRect) def setLineStyle(self, style): """ Set the line style :param int style: Line style Line styles: * `QwtPlotMarker.NoLine`: No line * `QwtPlotMarker.HLine`: A horizontal line * `QwtPlotMarker.VLine`: A vertical line * `QwtPlotMarker.Cross`: A crosshair .. seealso:: :py:meth:`lineStyle()` """ if style != self.__data.style: self.__data.style = style self.legendChanged() self.itemChanged() def lineStyle(self): """ :return: the line style .. seealso:: :py:meth:`setLineStyle()` """ return self.__data.style def setSymbol(self, symbol): """ Assign a symbol :param qwt.symbol.QwtSymbol symbol: New symbol .. seealso:: :py:meth:`symbol()` """ if symbol != self.__data.symbol: self.__data.symbol = symbol if symbol is not None: self.setLegendIconSize(symbol.boundingRect().size()) self.legendChanged() self.itemChanged() def symbol(self): """ :return: the symbol .. seealso:: :py:meth:`setSymbol()` """ return self.__data.symbol def setLabel(self, label): """ Set the label :param label: Label text :type label: qwt.text.QwtText or str .. seealso:: :py:meth:`label()` """ if not isinstance(label, QwtText): label = QwtText(label) if label != self.__data.label: self.__data.label = label self.itemChanged() def label(self): """ :return: the label .. seealso:: :py:meth:`setLabel()` """ return self.__data.label def setLabelAlignment(self, align): """ Set the alignment of the label In case of `QwtPlotMarker.HLine` the alignment is relative to the y position of the marker, but the horizontal flags correspond to the canvas rectangle. In case of `QwtPlotMarker.VLine` the alignment is relative to the x position of the marker, but the vertical flags correspond to the canvas rectangle. In all other styles the alignment is relative to the marker's position. :param Qt.Alignment align: Alignment .. seealso:: :py:meth:`labelAlignment()`, :py:meth:`labelOrientation()` """ if align != self.__data.labelAlignment: self.__data.labelAlignment = align self.itemChanged() def labelAlignment(self): """ :return: the label alignment .. seealso:: :py:meth:`setLabelAlignment()`, :py:meth:`setLabelOrientation()` """ return self.__data.labelAlignment def setLabelOrientation(self, orientation): """ Set the orientation of the label When orientation is `Qt.Vertical` the label is rotated by 90.0 degrees (from bottom to top). :param Qt.Orientation orientation: Orientation of the label .. seealso:: :py:meth:`labelOrientation()`, :py:meth:`setLabelAlignment()` """ if orientation != self.__data.labelOrientation: self.__data.labelOrientation = orientation self.itemChanged() def labelOrientation(self): """ :return: the label orientation .. seealso:: :py:meth:`setLabelOrientation()`, :py:meth:`labelAlignment()` """ return self.__data.labelOrientation def setSpacing(self, spacing): """ Set the spacing When the label is not centered on the marker position, the spacing is the distance between the position and the label. :param int spacing: Spacing .. seealso:: :py:meth:`spacing()`, :py:meth:`setLabelAlignment()` """ if spacing < 0: spacing = 0 if spacing != self.__data.spacing: self.__data.spacing = spacing self.itemChanged() def spacing(self): """ :return: the spacing .. seealso:: :py:meth:`setSpacing()` """ return self.__data.spacing def setLinePen(self, *args): """ Build and/or assigna a line pen, depending on the arguments. .. py:method:: setLinePen(color, width, style) :noindex: Build and assign a line pen In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic (see `QPen.isCosmetic()`). This method signature has been introduced to hide this incompatibility. :param QColor color: Pen color :param float width: Pen width :param Qt.PenStyle style: Pen style .. py:method:: setLinePen(pen) :noindex: Specify a pen for the line. :param QPen pen: New pen .. seealso:: :py:meth:`pen()`, :py:meth:`brush()` """ if len(args) == 1 and isinstance(args[0], QPen): (pen,) = args elif len(args) in (1, 2, 3): color = args[0] width = 0.0 style = Qt.SolidLine if len(args) > 1: width = args[1] if len(args) > 2: style = args[2] pen = QPen(color, width, style) self.setLinePen(pen) else: raise TypeError( "%s().setLinePen() takes 1, 2 or 3 argument(s) " "(%s given)" % (self.__class__.__name__, len(args)) ) if pen != self.__data.pen: self.__data.pen = pen self.legendChanged() self.itemChanged() def linePen(self): """ :return: the line pen .. seealso:: :py:meth:`setLinePen()` """ return self.__data.pen def boundingRect(self): if self.__data.style == QwtPlotMarker.HLine: return QRectF(self.__data.xValue, self.__data.yValue, -1.0, 0.0) elif self.__data.style == QwtPlotMarker.VLine: return QRectF(self.__data.xValue, self.__data.yValue, 0.0, -1.0) else: return QRectF(self.__data.xValue, self.__data.yValue, 0.0, 0.0) def legendIcon(self, index, size): """ :param int index: Index of the legend entry (ignored as there is only one) :param QSizeF size: Icon size :return: Icon representing the marker on the legend .. seealso:: :py:meth:`qwt.plot.QwtPlotItem.setLegendIconSize()`, :py:meth:`qwt.plot.QwtPlotItem.legendData()` """ if size.isEmpty(): return QwtGraphic() icon = QwtGraphic() icon.setDefaultSize(size) icon.setRenderHint(QwtGraphic.RenderPensUnscaled, True) painter = QPainter(icon) painter.setRenderHint( QPainter.Antialiasing, self.testRenderHint(QwtPlotItem.RenderAntialiased) ) if self.__data.style != QwtPlotMarker.NoLine: painter.setPen(self.__data.pen) if self.__data.style in (QwtPlotMarker.HLine, QwtPlotMarker.Cross): y = 0.5 * size.height() painter.drawLine(QLineF(0.0, y, size.width(), y)) if self.__data.style in (QwtPlotMarker.VLine, QwtPlotMarker.Cross): x = 0.5 * size.width() painter.drawLine(QLineF(x, 0.0, x, size.height())) if self.__data.symbol: r = QRect(0, 0, size.width(), size.height()) self.__data.symbol.drawSymbol(painter, r) return icon ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641654850.0 PythonQwt-0.10.2/qwt/plot_renderer.py0000666000000000000000000006412300000000000014501 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtPlotRenderer --------------- .. autoclass:: QwtPlotRenderer :members: """ from __future__ import division from qwt.painter import QwtPainter from qwt.plot import QwtPlot from qwt.plot_layout import QwtPlotLayout from qwt.scale_draw import QwtScaleDraw from qwt.scale_map import QwtScaleMap from qtpy.QtGui import ( QPainter, QImageWriter, QImage, QColor, QPaintDevice, QTransform, QPalette, QPainterPath, QPen, ) from qtpy.QtWidgets import QFileDialog from qtpy.QtPrintSupport import QPrinter from qtpy.QtCore import Qt, QRect, QRectF, QObject, QSizeF from qtpy.QtSvg import QSvgGenerator from qtpy.compat import getsavefilename import math import os.path as osp def qwtCanvasClip(canvas, canvasRect): """ The clip region is calculated in integers To avoid too much rounding errors better calculate it in target device resolution """ x1 = math.ceil(canvasRect.left()) x2 = math.floor(canvasRect.right()) y1 = math.ceil(canvasRect.top()) y2 = math.floor(canvasRect.bottom()) r = QRect(x1, y1, x2 - x1 - 1, y2 - y1 - 1) return canvas.borderPath(r) class QwtPlotRenderer_PrivateData(object): def __init__(self): self.discardFlags = QwtPlotRenderer.DiscardNone self.layoutFlags = QwtPlotRenderer.DefaultLayout class QwtPlotRenderer(QObject): """ Renderer for exporting a plot to a document, a printer or anything else, that is supported by QPainter/QPaintDevice Discard flags: * `QwtPlotRenderer.DiscardNone`: Render all components of the plot * `QwtPlotRenderer.DiscardBackground`: Don't render the background of the plot * `QwtPlotRenderer.DiscardTitle`: Don't render the title of the plot * `QwtPlotRenderer.DiscardLegend`: Don't render the legend of the plot * `QwtPlotRenderer.DiscardCanvasBackground`: Don't render the background of the canvas * `QwtPlotRenderer.DiscardFooter`: Don't render the footer of the plot * `QwtPlotRenderer.DiscardCanvasFrame`: Don't render the frame of the canvas .. note:: The `QwtPlotRenderer.DiscardCanvasFrame` flag has no effect when using style sheets, where the frame is part of the background Layout flags: * `QwtPlotRenderer.DefaultLayout`: Use the default layout as on screen * `QwtPlotRenderer.FrameWithScales`: Instead of the scales a box is painted around the plot canvas, where the scale ticks are aligned to. """ # enum DiscardFlag DiscardNone = 0x00 DiscardBackground = 0x01 DiscardTitle = 0x02 DiscardLegend = 0x04 DiscardCanvasBackground = 0x08 DiscardFooter = 0x10 DiscardCanvasFrame = 0x20 # enum LayoutFlag DefaultLayout = 0x00 FrameWithScales = 0x01 def __init__(self, parent=None): QObject.__init__(self, parent) self.__data = QwtPlotRenderer_PrivateData() def setDiscardFlag(self, flag, on=True): """ Change a flag, indicating what to discard from rendering :param int flag: Flag to change :param bool on: On/Off .. seealso:: :py:meth:`testDiscardFlag()`, :py:meth:`setDiscardFlags()`, :py:meth:`discardFlags()` """ if on: self.__data.discardFlags |= flag else: self.__data.discardFlags &= ~flag def testDiscardFlag(self, flag): """ :param int flag: Flag to be tested :return: True, if flag is enabled. .. seealso:: :py:meth:`setDiscardFlag()`, :py:meth:`setDiscardFlags()`, :py:meth:`discardFlags()` """ return self.__data.discardFlags & flag def setDiscardFlags(self, flags): """ Set the flags, indicating what to discard from rendering :param int flags: Flags .. seealso:: :py:meth:`testDiscardFlag()`, :py:meth:`setDiscardFlag()`, :py:meth:`discardFlags()` """ self.__data.discardFlags = flags def discardFlags(self): """ :return: Flags, indicating what to discard from rendering .. seealso:: :py:meth:`setDiscardFlag()`, :py:meth:`setDiscardFlags()`, :py:meth:`testDiscardFlag()` """ return self.__data.discardFlags def setLayoutFlag(self, flag, on=True): """ Change a layout flag :param int flag: Flag to change .. seealso:: :py:meth:`testLayoutFlag()`, :py:meth:`setLayoutFlags()`, :py:meth:`layoutFlags()` """ if on: self.__data.layoutFlags |= flag else: self.__data.layoutFlags &= ~flag def testLayoutFlag(self, flag): """ :param int flag: Flag to be tested :return: True, if flag is enabled. .. seealso:: :py:meth:`setLayoutFlag()`, :py:meth:`setLayoutFlags()`, :py:meth:`layoutFlags()` """ return self.__data.layoutFlags & flag def setLayoutFlags(self, flags): """ Set the layout flags :param int flags: Flags .. seealso:: :py:meth:`setLayoutFlag()`, :py:meth:`testLayoutFlag()`, :py:meth:`layoutFlags()` """ self.__data.layoutFlags = flags def layoutFlags(self): """ :return: Layout flags .. seealso:: :py:meth:`setLayoutFlags()`, :py:meth:`setLayoutFlag()`, :py:meth:`testLayoutFlag()` """ return self.__data.layoutFlags def renderDocument( self, plot, filename, sizeMM=(300, 200), resolution=85, format_=None ): """ Render a plot to a file The format of the document will be auto-detected from the suffix of the file name. :param qwt.plot.QwtPlot plot: Plot widget :param str fileName: Path of the file, where the document will be stored :param QSizeF sizeMM: Size for the document in millimeters :param int resolution: Resolution in dots per Inch (dpi) """ if isinstance(sizeMM, tuple): sizeMM = QSizeF(*sizeMM) if format_ is None: ext = osp.splitext(filename)[1] if not ext: raise TypeError("Unable to determine target format from filename") format_ = ext[1:] if plot is None or sizeMM.isEmpty() or resolution <= 0: return title = plot.title().text() if not title: title = "Plot Document" mmToInch = 1.0 / 25.4 size = sizeMM * mmToInch * resolution documentRect = QRectF(0.0, 0.0, size.width(), size.height()) fmt = format_.lower() if fmt in ("pdf", "ps"): printer = QPrinter() if fmt == "pdf": printer.setOutputFormat(QPrinter.PdfFormat) else: printer.setOutputFormat(QPrinter.PostScriptFormat) printer.setColorMode(QPrinter.Color) printer.setFullPage(True) printer.setPaperSize(sizeMM, QPrinter.Millimeter) printer.setDocName(title) printer.setOutputFileName(filename) printer.setResolution(resolution) painter = QPainter(printer) self.render(plot, painter, documentRect) painter.end() elif fmt == "svg": generator = QSvgGenerator() generator.setTitle(title) generator.setFileName(filename) generator.setResolution(resolution) generator.setViewBox(documentRect) painter = QPainter(generator) self.render(plot, painter, documentRect) painter.end() elif fmt in QImageWriter.supportedImageFormats(): imageRect = documentRect.toRect() dotsPerMeter = int(round(resolution * mmToInch * 1000.0)) image = QImage(imageRect.size(), QImage.Format_ARGB32) image.setDotsPerMeterX(dotsPerMeter) image.setDotsPerMeterY(dotsPerMeter) image.fill(QColor(Qt.white).rgb()) painter = QPainter(image) self.render(plot, painter, imageRect) painter.end() image.save(filename, fmt) else: raise TypeError("Unsupported file format '%s'" % fmt) def renderTo(self, plot, dest): """ Render a plot to a file Supported formats are: - pdf: Portable Document Format PDF - ps: Postcript - svg: Scalable Vector Graphics SVG - all image formats supported by Qt, see QImageWriter.supportedImageFormats() Scalable vector graphic formats like PDF or SVG are superior to raster graphics formats. :param qwt.plot.QwtPlot plot: Plot widget :param dest: QPaintDevice, QPrinter or QSvgGenerator instance .. seealso:: :py:meth:`render()`, :py:meth:`qwt.painter.QwtPainter.setRoundingAlignment()` """ if isinstance(dest, QPaintDevice): w = dest.width() h = dest.height() rect = QRectF(0, 0, w, h) elif isinstance(dest, QPrinter): w = dest.width() h = dest.height() rect = QRectF(0, 0, w, h) aspect = rect.width() / rect.height() if aspect < 1.0: rect.setHeight(aspect * rect.width()) elif isinstance(dest, QSvgGenerator): rect = dest.viewBoxF() if rect.isEmpty(): rect.setRect(0, 0, dest.width(), dest.height()) if rect.isEmpty(): rect.setRect(0, 0, 800, 600) else: raise TypeError("Unsupported destination type %s" % type(dest)) p = QPainter(dest) self.render(plot, p, rect) def render(self, plot, painter, plotRect): """ Paint the contents of a QwtPlot instance into a given rectangle. :param qwt.plot.QwtPlot plot: Plot to be rendered :param QPainter painter: Painter :param str format: Format for the document :param QRectF plotRect: Bounding rectangle .. seealso:: :py:meth:`renderDocument()`, :py:meth:`renderTo()`, :py:meth:`qwt.painter.QwtPainter.setRoundingAlignment()` """ if ( painter == 0 or not painter.isActive() or not plotRect.isValid() or plot.size().isNull() ): return if not self.__data.discardFlags & self.DiscardBackground: QwtPainter.drawBackground(painter, plotRect, plot) # The layout engine uses the same methods as they are used # by the Qt layout system. Therefore we need to calculate the # layout in screen coordinates and paint with a scaled painter. transform = QTransform() transform.scale( float(painter.device().logicalDpiX()) / plot.logicalDpiX(), float(painter.device().logicalDpiY()) / plot.logicalDpiY(), ) invtrans, _ok = transform.inverted() layoutRect = invtrans.mapRect(plotRect) if not (self.__data.discardFlags & self.DiscardBackground): left, top, right, bottom = plot.layout().getContentsMargins() layoutRect.adjust(left, top, -right, -bottom) layout = plot.plotLayout() baseLineDists = canvasMargins = [None] * len(QwtPlot.AXES) for axisId in QwtPlot.AXES: canvasMargins[axisId] = layout.canvasMargin(axisId) if self.__data.layoutFlags & self.FrameWithScales: scaleWidget = plot.axisWidget(axisId) if scaleWidget: baseLineDists[axisId] = max(scaleWidget.getContentsMargins()) scaleWidget.setMargin(0) if not plot.axisEnabled(axisId): # When we have a scale the frame is painted on # the position of the backbone - otherwise we # need to introduce a margin around the canvas if axisId == QwtPlot.yLeft: layoutRect.adjust(1, 0, 0, 0) elif axisId == QwtPlot.yRight: layoutRect.adjust(0, 0, -1, 0) elif axisId == QwtPlot.xTop: layoutRect.adjust(0, 1, 0, 0) elif axisId == QwtPlot.xBottom: layoutRect.adjust(0, 0, 0, -1) # Calculate the layout for the document. layoutOptions = QwtPlotLayout.IgnoreScrollbars if ( self.__data.layoutFlags & self.FrameWithScales or self.__data.discardFlags & self.DiscardCanvasFrame ): layoutOptions |= QwtPlotLayout.IgnoreFrames if self.__data.discardFlags & self.DiscardLegend: layoutOptions |= QwtPlotLayout.IgnoreLegend if self.__data.discardFlags & self.DiscardTitle: layoutOptions |= QwtPlotLayout.IgnoreTitle if self.__data.discardFlags & self.DiscardFooter: layoutOptions |= QwtPlotLayout.IgnoreFooter layout.activate(plot, layoutRect, layoutOptions) maps = self.buildCanvasMaps(plot, layout.canvasRect()) if self.updateCanvasMargins(plot, layout.canvasRect(), maps): # recalculate maps and layout, when the margins # have been changed layout.activate(plot, layoutRect, layoutOptions) maps = self.buildCanvasMaps(plot, layout.canvasRect()) painter.save() painter.setWorldTransform(transform, True) self.renderCanvas(plot, painter, layout.canvasRect(), maps) if ( not self.__data.discardFlags & self.DiscardTitle ) and plot.titleLabel().text(): self.renderTitle(plot, painter, layout.titleRect()) if ( not self.__data.discardFlags & self.DiscardFooter ) and plot.titleLabel().text(): self.renderFooter(plot, painter, layout.footerRect()) if ( not self.__data.discardFlags & self.DiscardLegend ) and plot.titleLabel().text(): self.renderLegend(plot, painter, layout.legendRect()) for axisId in QwtPlot.AXES: scaleWidget = plot.axisWidget(axisId) if scaleWidget: baseDist = max(scaleWidget.getContentsMargins()) startDist, endDist = scaleWidget.getBorderDistHint() self.renderScale( plot, painter, axisId, startDist, endDist, baseDist, layout.scaleRect(axisId), ) painter.restore() for axisId in QwtPlot.AXES: if self.__data.layoutFlags & self.FrameWithScales: scaleWidget = plot.axisWidget(axisId) if scaleWidget: scaleWidget.setMargin(baseLineDists[axisId]) layout.setCanvasMargin(canvasMargins[axisId]) layout.invalidate() def renderTitle(self, plot, painter, rect): """ Render the title into a given rectangle. :param qwt.plot.QwtPlot plot: Plot widget :param QPainter painter: Painter :param QRectF rect: Bounding rectangle """ painter.setFont(plot.titleLabel().font()) color = plot.titleLabel().palette().color(QPalette.Active, QPalette.Text) painter.setPen(color) plot.titleLabel().text().draw(painter, rect) def renderFooter(self, plot, painter, rect): """ Render the footer into a given rectangle. :param qwt.plot.QwtPlot plot: Plot widget :param QPainter painter: Painter :param QRectF rect: Bounding rectangle """ painter.setFont(plot.footerLabel().font()) color = plot.footerLabel().palette().color(QPalette.Active, QPalette.Text) painter.setPen(color) plot.footerLabel().text().draw(painter, rect) def renderLegend(self, plot, painter, rect): """ Render the legend into a given rectangle. :param qwt.plot.QwtPlot plot: Plot widget :param QPainter painter: Painter :param QRectF rect: Bounding rectangle """ if plot.legend(): fillBackground = not self.__data.discardFlags & self.DiscardBackground plot.legend().renderLegend(painter, rect, fillBackground) def renderScale(self, plot, painter, axisId, startDist, endDist, baseDist, rect): """ Paint a scale into a given rectangle. Paint the scale into a given rectangle. :param qwt.plot.QwtPlot plot: Plot widget :param QPainter painter: Painter :param int axisId: Axis :param int startDist: Start border distance :param int endDist: End border distance :param int baseDist: Base distance :param QRectF rect: Bounding rectangle """ if not plot.axisEnabled(axisId): return scaleWidget = plot.axisWidget(axisId) if scaleWidget.isColorBarEnabled() and scaleWidget.colorBarWidth() > 0: scaleWidget.drawColorBar(painter, scaleWidget.colorBarRect(rect)) baseDist += scaleWidget.colorBarWidth() + scaleWidget.spacing() painter.save() if axisId == QwtPlot.yLeft: x = rect.right() - 1.0 - baseDist y = rect.y() + startDist w = rect.height() - startDist - endDist align = QwtScaleDraw.LeftScale elif axisId == QwtPlot.yRight: x = rect.left() + baseDist y = rect.y() + startDist w = rect.height() - startDist - endDist align = QwtScaleDraw.RightScale elif axisId == QwtPlot.xTop: x = rect.left() + startDist y = rect.bottom() - 1.0 - baseDist w = rect.width() - startDist - endDist align = QwtScaleDraw.TopScale else: # QwtPlot.xBottom x = rect.left() + startDist y = rect.top() + baseDist w = rect.width() - startDist - endDist align = QwtScaleDraw.BottomScale scaleWidget.drawTitle(painter, align, rect) painter.setFont(scaleWidget.font()) sd = scaleWidget.scaleDraw() sdPos = sd.pos() sdLength = sd.length() sd.move(x, y) sd.setLength(w) palette = scaleWidget.palette() palette.setCurrentColorGroup(QPalette.Active) sd.draw(painter, palette) sd.move(sdPos) sd.setLength(sdLength) painter.restore() def renderCanvas(self, plot, painter, canvasRect, maps): """ Render the canvas into a given rectangle. :param qwt.plot.QwtPlot plot: Plot widget :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap maps: mapping between plot and paint device coordinates :param QRectF rect: Bounding rectangle """ canvas = plot.canvas() r = canvasRect.adjusted(0.0, 0.0, -1.0, 1.0) if self.__data.layoutFlags & self.FrameWithScales: painter.save() r.adjust(-1.0, -1.0, 1.0, 1.0) painter.setPen(QPen(Qt.black)) if not (self.__data.discardFlags & self.DiscardCanvasBackground): bgBrush = canvas.palette().brush(plot.backgroundRole()) painter.setBrush(bgBrush) painter.drawRect(r) painter.restore() painter.save() painter.setClipRect(canvasRect) plot.drawItems(painter, canvasRect, maps) painter.restore() elif canvas.testAttribute(Qt.WA_StyledBackground): clipPath = QPainterPath() painter.save() if not self.__data.discardFlags & self.DiscardCanvasBackground: QwtPainter.drawBackground(painter, r, canvas) clipPath = qwtCanvasClip(canvas, canvasRect) painter.restore() painter.save() if clipPath.isEmpty(): painter.setClipRect(canvasRect) else: painter.setClipPath(clipPath) plot.drawItems(painter, canvasRect, maps) painter.restore() else: clipPath = QPainterPath() frameWidth = 0 if not self.__data.discardFlags & self.DiscardCanvasFrame: frameWidth = canvas.frameWidth() clipPath = qwtCanvasClip(canvas, canvasRect) innerRect = canvasRect.adjusted( frameWidth, frameWidth, -frameWidth, -frameWidth ) painter.save() if clipPath.isEmpty(): painter.setClipRect(innerRect) else: painter.setClipPath(clipPath) if not self.__data.discardFlags & self.DiscardCanvasBackground: QwtPainter.drawBackground(painter, innerRect, canvas) plot.drawItems(painter, innerRect, maps) painter.restore() if frameWidth > 0: painter.save() frameStyle = canvas.frameShadow() | canvas.frameShape() radius = canvas.borderRadius() if radius > 0.0: QwtPainter.drawRoundedFrame( painter, canvasRect, radius, radius, canvas.palette(), frameWidth, frameStyle, ) else: midLineWidth = canvas.midLineWidth() QwtPainter.drawFrame( painter, canvasRect, canvas.palette(), canvas.foregroundRole(), frameWidth, midLineWidth, frameStyle, ) painter.restore() def buildCanvasMaps(self, plot, canvasRect): """ Calculated the scale maps for rendering the canvas :param qwt.plot.QwtPlot plot: Plot widget :param QRectF canvasRect: Target rectangle :return: Calculated scale maps """ maps = [] for axisId in QwtPlot.AXES: map_ = QwtScaleMap() map_.setTransformation(plot.axisScaleEngine(axisId).transformation()) sd = plot.axisScaleDiv(axisId) map_.setScaleInterval(sd.lowerBound(), sd.upperBound()) if plot.axisEnabled(axisId): s = plot.axisWidget(axisId) scaleRect = plot.plotLayout().scaleRect(axisId) if axisId in (QwtPlot.xTop, QwtPlot.xBottom): from_ = scaleRect.left() + s.startBorderDist() to = scaleRect.right() - s.endBorderDist() else: from_ = scaleRect.bottom() - s.endBorderDist() to = scaleRect.top() + s.startBorderDist() else: margin = 0 if not plot.plotLayout().alignCanvasToScale(axisId): margin = plot.plotLayout().canvasMargin(axisId) if axisId in (QwtPlot.yLeft, QwtPlot.yRight): from_ = canvasRect.bottom() - margin to = canvasRect.top() + margin else: from_ = canvasRect.left() + margin to = canvasRect.right() - margin map_.setPaintInterval(from_, to) maps.append(map_) return maps def updateCanvasMargins(self, plot, canvasRect, maps): margins = plot.getCanvasMarginsHint(maps, canvasRect) marginsChanged = False for axisId in QwtPlot.AXES: if margins[axisId] >= 0.0: m = math.ceil(margins[axisId]) plot.plotLayout().setCanvasMargin(m, axisId) marginsChanged = True return marginsChanged def exportTo(self, plot, documentname, sizeMM=None, resolution=85): """ Execute a file dialog and render the plot to the selected file :param qwt.plot.QwtPlot plot: Plot widget :param str documentName: Default document name :param QSizeF sizeMM: Size for the document in millimeters :param int resolution: Resolution in dots per Inch (dpi) :return: True, when exporting was successful .. seealso:: :py:meth:`renderDocument()` """ if plot is None: return if sizeMM is None: sizeMM = QSizeF(300, 200) filename = documentname imageFormats = QImageWriter.supportedImageFormats() filter_ = [ "PDF documents (*.pdf)", "SVG documents (*.svg)", "Postscript documents (*.ps)", ] if imageFormats: imageFilter = "Images" imageFilter += " (" for idx, fmt in enumerate(imageFormats): if idx > 0: imageFilter += " " imageFilter += "*." + str(fmt) imageFilter += ")" filter_ += [imageFilter] filename, _s = getsavefilename( plot, "Export File Name", filename, ";;".join(filter_), options=QFileDialog.DontConfirmOverwrite, ) if not filename: return False self.renderDocument(plot, filename, sizeMM, resolution) return True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091906.0 PythonQwt-0.10.2/qwt/plot_series.py0000666000000000000000000002544300000000000014167 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ Plotting series item -------------------- QwtPlotSeriesItem ~~~~~~~~~~~~~~~~~ .. autoclass:: QwtPlotSeriesItem :members: QwtSeriesData ~~~~~~~~~~~~~ .. autoclass:: QwtSeriesData :members: QwtPointArrayData ~~~~~~~~~~~~~~~~~ .. autoclass:: QwtPointArrayData :members: QwtSeriesStore ~~~~~~~~~~~~~~ .. autoclass:: QwtSeriesStore :members: """ import numpy as np from qwt.plot import QwtPlotItem, QwtPlotItem_PrivateData from qwt.text import QwtText from qtpy.QtCore import Qt, QRectF, QPointF class QwtPlotSeriesItem_PrivateData(QwtPlotItem_PrivateData): def __init__(self): QwtPlotItem_PrivateData.__init__(self) self.orientation = Qt.Horizontal class QwtPlotSeriesItem(QwtPlotItem): """ Base class for plot items representing a series of samples """ def __init__(self, title): if not isinstance(title, QwtText): title = QwtText(title) QwtPlotItem.__init__(self, title) self.__data = QwtPlotSeriesItem_PrivateData() self.setItemInterest(QwtPlotItem.ScaleInterest, True) def setOrientation(self, orientation): """ Set the orientation of the item. Default is `Qt.Horizontal`. The `orientation()` might be used in specific way by a plot item. F.e. a QwtPlotCurve uses it to identify how to display the curve int `QwtPlotCurve.Steps` or `QwtPlotCurve.Sticks` style. .. seealso:: :py:meth`orientation()` """ if self.__data.orientation != orientation: self.__data.orientation = orientation self.legendChanged() self.itemChanged() def orientation(self): """ :return: Orientation of the plot item .. seealso:: :py:meth`setOrientation()` """ return self.__data.orientation def draw(self, painter, xMap, yMap, canvasRect): """ Draw the complete series :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas """ self.drawSeries(painter, xMap, yMap, canvasRect, 0, -1) def drawSeries(self, painter, xMap, yMap, canvasRect, from_, to): """ Draw a subset of the samples :param QPainter painter: Painter :param qwt.scale_map.QwtScaleMap xMap: Maps x-values into pixel coordinates. :param qwt.scale_map.QwtScaleMap yMap: Maps y-values into pixel coordinates. :param QRectF canvasRect: Contents rectangle of the canvas :param int from_: Index of the first point to be painted :param int to: Index of the last point to be painted. If to < 0 the curve will be painted to its last point. .. seealso:: This method is implemented in `qwt.plot_curve.QwtPlotCurve` """ raise NotImplementedError def boundingRect(self): return self.dataRect() # dataRect method is implemented in QwtSeriesStore def updateScaleDiv(self, xScaleDiv, yScaleDiv): rect = QRectF( xScaleDiv.lowerBound(), yScaleDiv.lowerBound(), xScaleDiv.range(), yScaleDiv.range(), ) self.setRectOfInterest( rect ) # setRectOfInterest method is implemented in QwtSeriesData def dataChanged(self): self.itemChanged() class QwtSeriesData(object): """ Abstract interface for iterating over samples `PythonQwt` offers several implementations of the QwtSeriesData API, but in situations, where data of an application specific format needs to be displayed, without having to copy it, it is recommended to implement an individual data access. A subclass of `QwtSeriesData` must implement: - size(): Should return number of data points. - sample() Should return values x and y values of the sample at specific position as QPointF object. - boundingRect() Should return the bounding rectangle of the data series. It is used for autoscaling and might help certain algorithms for displaying the data. The member `_boundingRect` is intended for caching the calculated rectangle. """ def __init__(self): self._boundingRect = QRectF(0.0, 0.0, -1.0, -1.0) def setRectOfInterest(self, rect): """ Set a the "rect of interest" QwtPlotSeriesItem defines the current area of the plot canvas as "rectangle of interest" ( QwtPlotSeriesItem::updateScaleDiv() ). It can be used to implement different levels of details. The default implementation does nothing. :param QRectF rect: Rectangle of interest """ pass def size(self): """ :return: Number of samples """ pass def sample(self, i): """ Return a sample :param int i: Index :return: Sample at position i """ pass def boundingRect(self): """ Calculate the bounding rect of all samples The bounding rect is necessary for autoscaling and can be used for a couple of painting optimizations. :return: Bounding rectangle """ pass class QwtPointArrayData(QwtSeriesData): """ Interface for iterating over two array objects .. py:class:: QwtCQwtPointArrayDataolorMap(x, y, [size=None]) :param x: Array of x values :type x: list or tuple or numpy.array :param y: Array of y values :type y: list or tuple or numpy.array :param int size: Size of the x and y arrays :param bool finite: if True, keep only finite array elements (remove all infinity and not a number values), otherwise do not filter array elements """ def __init__(self, x=None, y=None, size=None, finite=None): QwtSeriesData.__init__(self) if x is None and y is not None: x = np.arange(len(y)) elif y is None and x is not None: y = x x = np.arange(len(y)) elif x is None and y is None: x = np.array([]) y = np.array([]) if isinstance(x, (tuple, list)): x = np.array(x) if isinstance(y, (tuple, list)): y = np.array(y) if size is not None: x = np.resize(x, (size,)) y = np.resize(y, (size,)) if len(x) != len(y): minlen = min(len(x), len(y)) x = np.resize(x, (minlen,)) y = np.resize(y, (minlen,)) if finite if finite is not None else True: indexes = np.logical_and(np.isfinite(x), np.isfinite(y)) self.__x = x[indexes] self.__y = y[indexes] else: self.__x = x self.__y = y def boundingRect(self): """ Calculate the bounding rectangle The bounding rectangle is calculated once by iterating over all points and is stored for all following requests. :return: Bounding rectangle """ xmin = self.__x.min() xmax = self.__x.max() ymin = self.__y.min() ymax = self.__y.max() return QRectF(xmin, ymin, xmax - xmin, ymax - ymin) def size(self): """ :return: Size of the data set """ return min([self.__x.size, self.__y.size]) def sample(self, index): """ :param int index: Index :return: Sample at position `index` """ return QPointF(self.__x[index], self.__y[index]) def xData(self): """ :return: Array of the x-values """ return self.__x def yData(self): """ :return: Array of the y-values """ return self.__y class QwtSeriesStore(object): """ Class storing a `QwtSeriesData` object `QwtSeriesStore` and `QwtPlotSeriesItem` are intended as base classes for all plot items iterating over a series of samples. """ def __init__(self): self.__series = None def setData(self, series): """ Assign a series of samples :param qwt.plot_series.QwtSeriesData series: Data .. warning:: The item takes ownership of the data object, deleting it when its not used anymore. """ if self.__series != series: self.__series = series self.dataChanged() def dataChanged(self): raise NotImplementedError def data(self): """ :return: the series data """ return self.__series def sample(self, index): """ :param int index: Index :return: Sample at position index """ if self.__series: return self.__series.sample(index) else: return def dataSize(self): """ :return: Number of samples of the series .. seealso:: :py:meth:`setData()`, :py:meth:`qwt.plot_series.QwtSeriesData.size()` """ if self.__series is None: return 0 return self.__series.size() def dataRect(self): """ :return: Bounding rectangle of the series or an invalid rectangle, when no series is stored .. seealso:: :py:meth:`qwt.plot_series.QwtSeriesData.boundingRect()` """ if self.__series is None or self.dataSize() == 0: return QRectF(1.0, 1.0, -2.0, -2.0) return self.__series.boundingRect() def setRectOfInterest(self, rect): """ Set a the "rect of interest" for the series :param QRectF rect: Rectangle of interest .. seealso:: :py:meth:`qwt.plot_series.QwtSeriesData.setRectOfInterest()` """ if self.__series: self.__series.setRectOfInterest(rect) def swapData(self, series): """ Replace a series without deleting the previous one :param qwt.plot_series.QwtSeriesData series: New series :return: Previously assigned series """ swappedSeries = self.__series self.__series = series return swappedSeries ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/qwt/qthelpers.py0000666000000000000000000000200500000000000013633 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015 Pierre Raybaut # (see LICENSE file for more details) """Qt helpers""" from qtpy import QtGui as QG from qtpy.QtCore import Qt def qcolor_from_str(color, default): """Return QColor object from str :param color: Input color :type color: QColor or str or None :param QColor default: Default color (returned if color is None) If color is already a QColor instance, simply return color. If color is None, return default color. If color is neither an str nor a QColor instance nor None, raise TypeError. """ if color is None: return default elif isinstance(color, str): try: return getattr(Qt, color) except AttributeError: raise ValueError("Unknown Qt color %r" % color) else: try: return QG.QColor(color) except TypeError: raise TypeError("Invalid color %r" % color) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091906.0 PythonQwt-0.10.2/qwt/scale_div.py0000666000000000000000000002207400000000000013565 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtScaleDiv ----------- .. autoclass:: QwtScaleDiv :members: """ from qwt.interval import QwtInterval import copy class QwtScaleDiv(object): """ A class representing a scale division A Qwt scale is defined by its boundaries and 3 list for the positions of the major, medium and minor ticks. The `upperLimit()` might be smaller than the `lowerLimit()` to indicate inverted scales. Scale divisions can be calculated from a `QwtScaleEngine`. .. seealso:: :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()`, :py:meth:`qwt.plot.QwtPlot.setAxisScaleDiv()` Scale tick types: * `QwtScaleDiv.NoTick`: No ticks * `QwtScaleDiv.MinorTick`: Minor ticks * `QwtScaleDiv.MediumTick`: Medium ticks * `QwtScaleDiv.MajorTick`: Major ticks * `QwtScaleDiv.NTickTypes`: Number of valid tick types .. py:class:: QwtScaleDiv() Basic constructor. Lower bound = Upper bound = 0. .. py:class:: QwtScaleDiv(interval, ticks) :noindex: :param qwt.interval.QwtInterval interval: Interval :param list ticks: list of major, medium and minor ticks .. py:class:: QwtScaleDiv(lowerBound, upperBound) :noindex: :param float lowerBound: First boundary :param float upperBound: Second boundary .. py:class:: QwtScaleDiv(lowerBound, upperBound, ticks) :noindex: :param float lowerBound: First boundary :param float upperBound: Second boundary :param list ticks: list of major, medium and minor ticks .. py:class:: QwtScaleDiv(lowerBound, upperBound, minorTicks, mediumTicks, majorTicks) :noindex: :param float lowerBound: First boundary :param float upperBound: Second boundary :param list minorTicks: list of minor ticks :param list mediumTicks: list of medium ticks :param list majorTicks: list of major ticks .. note:: lowerBound might be greater than upperBound for inverted scales """ # enum TickType NoTick = -1 MinorTick, MediumTick, MajorTick, NTickTypes = list(range(4)) def __init__(self, *args): self.__ticks = None if len(args) == 2 and isinstance(args[1], (tuple, list)): interval, ticks = args self.__lowerBound = interval.minValue() self.__upperBound = interval.maxValue() self.__ticks = ticks[:] elif len(args) == 2: self.__lowerBound, self.__upperBound = args elif len(args) == 3: self.__lowerBound, self.__upperBound, ticks = args self.__ticks = ticks[:] elif len(args) == 5: ( self.__lowerBound, self.__upperBound, minorTicks, mediumTicks, majorTicks, ) = args self.__ticks = [0] * self.NTickTypes self.__ticks[self.MinorTick] = minorTicks self.__ticks[self.MediumTick] = mediumTicks self.__ticks[self.MajorTick] = majorTicks elif len(args) == 0: self.__lowerBound, self.__upperBound = 0.0, 0.0 else: raise TypeError( "%s() takes 0, 2, 3 or 5 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def setInterval(self, *args): """ Change the interval .. py:method:: setInterval(lowerBound, upperBound) :noindex: :param float lowerBound: First boundary :param float upperBound: Second boundary .. py:method:: setInterval(interval) :noindex: :param qwt.interval.QwtInterval interval: Interval .. note:: lowerBound might be greater than upperBound for inverted scales """ if len(args) == 2: self.__lowerBound, self.__upperBound = args elif len(args) == 1: (interval,) = args self.__lowerBound = interval.minValue() self.__upperBound = interval.maxValue() else: raise TypeError( "%s().setInterval() takes 1 or 2 argument(s) (%s " "given)" % (self.__class__.__name__, len(args)) ) def interval(self): """ :return: Interval """ return QwtInterval(self.__lowerBound, self.__upperBound) def setLowerBound(self, lowerBound): """ Set the first boundary :param float lowerBound: First boundary .. seealso:: :py:meth:`lowerBound()`, :py:meth:`setUpperBound()` """ self.__lowerBound = lowerBound def lowerBound(self): """ :return: the first boundary .. seealso:: :py:meth:`upperBound()` """ return self.__lowerBound def setUpperBound(self, upperBound): """ Set the second boundary :param float lowerBound: Second boundary .. seealso:: :py:meth:`upperBound()`, :py:meth:`setLowerBound()` """ self.__upperBound = upperBound def upperBound(self): """ :return: the second boundary .. seealso:: :py:meth:`lowerBound()` """ return self.__upperBound def range(self): """ :return: upperBound() - lowerBound() """ return self.__upperBound - self.__lowerBound def __eq__(self, other): if self.__ticks is None: return False if ( self.__lowerBound != other.__lowerBound or self.__upperBound != other.__upperBound ): return False return self.__ticks == other.__ticks def __ne__(self, other): return not self.__eq__(other) def isEmpty(self): """ Check if the scale division is empty( lowerBound() == upperBound() ) """ return self.__lowerBound == self.__upperBound def isIncreasing(self): """ Check if the scale division is increasing( lowerBound() <= upperBound() ) """ return self.__lowerBound <= self.__upperBound def contains(self, value): """ Return if a value is between lowerBound() and upperBound() :param float value: Value :return: True/False """ min_ = min([self.__lowerBound, self.__upperBound]) max_ = max([self.__lowerBound, self.__upperBound]) return value >= min_ and value <= max_ def invert(self): """ Invert the scale division .. seealso:: :py:meth:`inverted()` """ (self.__lowerBound, self.__upperBound) = self.__upperBound, self.__lowerBound for index in range(self.NTickTypes): self.__ticks[index].reverse() def inverted(self): """ :return: A scale division with inverted boundaries and ticks .. seealso:: :py:meth:`invert()` """ other = copy.deepcopy(self) other.invert() return other def bounded(self, lowerBound, upperBound): """ Return a scale division with an interval [lowerBound, upperBound] where all ticks outside this interval are removed :param float lowerBound: First boundary :param float lowerBound: Second boundary :return: Scale division with all ticks inside of the given interval .. note:: lowerBound might be greater than upperBound for inverted scales """ min_ = min([self.__lowerBound, self.__upperBound]) max_ = max([self.__lowerBound, self.__upperBound]) sd = QwtScaleDiv() sd.setInterval(lowerBound, upperBound) for tickType in range(self.NTickTypes): sd.setTicks( tickType, [ tick for tick in self.__ticks[tickType] if tick >= min_ and tick <= max_ ], ) return sd def setTicks(self, tickType, ticks): """ Assign ticks :param int type: MinorTick, MediumTick or MajorTick :param list ticks: Values of the tick positions """ if tickType in range(self.NTickTypes): self.__ticks[tickType] = ticks def ticks(self, tickType): """ Return a list of ticks :param int type: MinorTick, MediumTick or MajorTick :return: Tick list """ if self.__ticks is not None and tickType in range(self.NTickTypes): return self.__ticks[tickType] else: return [] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641720673.0 PythonQwt-0.10.2/qwt/scale_draw.py0000666000000000000000000011153000000000000013734 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtAbstractScaleDraw -------------------- .. autoclass:: QwtAbstractScaleDraw :members: QwtScaleDraw ------------ .. autoclass:: QwtScaleDraw :members: """ import math from qwt.scale_div import QwtScaleDiv from qwt.scale_map import QwtScaleMap from qwt.text import QwtText from qwt._math import qwtRadians from qtpy.QtGui import QPalette, QFontMetrics, QTransform from qtpy.QtCore import Qt, qFuzzyCompare, QLineF, QRectF, QPointF, QRect, QPoint class QwtAbstractScaleDraw_PrivateData(object): def __init__(self): self.spacing = 4 self.penWidth = 0 self.minExtent = 0.0 self.components = ( QwtAbstractScaleDraw.Backbone | QwtAbstractScaleDraw.Ticks | QwtAbstractScaleDraw.Labels ) self.tick_length = { QwtScaleDiv.MinorTick: 4.0, QwtScaleDiv.MediumTick: 6.0, QwtScaleDiv.MajorTick: 8.0, } self.tick_lighter_factor = { QwtScaleDiv.MinorTick: 100, QwtScaleDiv.MediumTick: 100, QwtScaleDiv.MajorTick: 100, } self.map = QwtScaleMap() self.scaleDiv = QwtScaleDiv() self.labelCache = {} class QwtAbstractScaleDraw(object): """ A abstract base class for drawing scales `QwtAbstractScaleDraw` can be used to draw linear or logarithmic scales. After a scale division has been specified as a `QwtScaleDiv` object using `setScaleDiv()`, the scale can be drawn with the `draw()` member. Scale components: * `QwtAbstractScaleDraw.Backbone`: Backbone = the line where the ticks are located * `QwtAbstractScaleDraw.Ticks`: Ticks * `QwtAbstractScaleDraw.Labels`: Labels .. py:class:: QwtAbstractScaleDraw() The range of the scale is initialized to [0, 100], The spacing (distance between ticks and labels) is set to 4, the tick lengths are set to 4,6 and 8 pixels """ # enum ScaleComponent Backbone = 0x01 Ticks = 0x02 Labels = 0x04 def __init__(self): self.__data = QwtAbstractScaleDraw_PrivateData() def extent(self, font): """ Calculate the extent The extent is the distance from the baseline to the outermost pixel of the scale draw in opposite to its orientation. It is at least minimumExtent() pixels. :param QFont font: Font used for drawing the tick labels :return: Number of pixels .. seealso:: :py:meth:`setMinimumExtent()`, :py:meth:`minimumExtent()` """ return 0.0 def drawTick(self, painter, value, len_): """ Draw a tick :param QPainter painter: Painter :param float value: Value of the tick :param float len: Length of the tick .. seealso:: :py:meth:`drawBackbone()`, :py:meth:`drawLabel()` """ pass def drawBackbone(self, painter): """ Draws the baseline of the scale :param QPainter painter: Painter .. seealso:: :py:meth:`drawTick()`, :py:meth:`drawLabel()` """ pass def drawLabel(self, painter, value): """ Draws the label for a major scale tick :param QPainter painter: Painter :param float value: Value .. seealso:: :py:meth:`drawTick()`, :py:meth:`drawBackbone()` """ pass def enableComponent(self, component, enable): """ En/Disable a component of the scale :param int component: Scale component :param bool enable: On/Off .. seealso:: :py:meth:`hasComponent()` """ if enable: self.__data.components |= component else: self.__data.components &= ~component def hasComponent(self, component): """ Check if a component is enabled :param int component: Component type :return: True, when component is enabled .. seealso:: :py:meth:`enableComponent()` """ return self.__data.components & component def setScaleDiv(self, scaleDiv): """ Change the scale division :param qwt.scale_div.QwtScaleDiv scaleDiv: New scale division """ self.__data.scaleDiv = scaleDiv self.__data.map.setScaleInterval(scaleDiv.lowerBound(), scaleDiv.upperBound()) self.__data.labelCache.clear() def setTransformation(self, transformation): """ Change the transformation of the scale :param qwt.transform.QwtTransform transformation: New scale transformation """ self.__data.map.setTransformation(transformation) def scaleMap(self): """ :return: Map how to translate between scale and pixel values """ return self.__data.map def scaleDiv(self): """ :return: scale division """ return self.__data.scaleDiv def setPenWidth(self, width): """ Specify the width of the scale pen :param int width: Pen width .. seealso:: :py:meth:`penWidth()` """ if width < 0: width = 0 if width != self.__data.penWidth: self.__data.penWidth = width def penWidth(self): """ :return: Scale pen width .. seealso:: :py:meth:`setPenWidth()` """ return self.__data.penWidth def draw(self, painter, palette): """ Draw the scale :param QPainter painter: The painter :param QPalette palette: Palette, text color is used for the labels, foreground color for ticks and backbone """ painter.save() pen = painter.pen() pen.setWidth(self.__data.penWidth) pen.setCosmetic(False) painter.setPen(pen) if self.hasComponent(QwtAbstractScaleDraw.Labels): painter.save() painter.setPen(palette.color(QPalette.Text)) majorTicks = self.__data.scaleDiv.ticks(QwtScaleDiv.MajorTick) for v in majorTicks: if self.__data.scaleDiv.contains(v): self.drawLabel(painter, v) painter.restore() if self.hasComponent(QwtAbstractScaleDraw.Ticks): painter.save() pen = painter.pen() pen.setCapStyle(Qt.FlatCap) default_color = palette.color(QPalette.WindowText) for tickType in range(QwtScaleDiv.NTickTypes): tickLen = self.__data.tick_length[tickType] if tickLen <= 0.0: continue factor = self.__data.tick_lighter_factor[tickType] pen.setColor(default_color.lighter(factor)) painter.setPen(pen) ticks = self.__data.scaleDiv.ticks(tickType) for v in ticks: if self.__data.scaleDiv.contains(v): self.drawTick(painter, v, tickLen) painter.restore() if self.hasComponent(QwtAbstractScaleDraw.Backbone): painter.save() pen = painter.pen() pen.setColor(palette.color(QPalette.WindowText)) pen.setCapStyle(Qt.FlatCap) painter.setPen(pen) self.drawBackbone(painter) painter.restore() painter.restore() def setSpacing(self, spacing): """ Set the spacing between tick and labels The spacing is the distance between ticks and labels. The default spacing is 4 pixels. :param float spacing: Spacing .. seealso:: :py:meth:`spacing()` """ if spacing < 0: spacing = 0 self.__data.spacing = spacing def spacing(self): """ Get the spacing The spacing is the distance between ticks and labels. The default spacing is 4 pixels. :return: Spacing .. seealso:: :py:meth:`setSpacing()` """ return self.__data.spacing def setMinimumExtent(self, minExtent): """ Set a minimum for the extent The extent is calculated from the components of the scale draw. In situations, where the labels are changing and the layout depends on the extent (f.e scrolling a scale), setting an upper limit as minimum extent will avoid jumps of the layout. :param float minExtent: Minimum extent .. seealso:: :py:meth:`extent()`, :py:meth:`minimumExtent()` """ if minExtent < 0.0: minExtent = 0.0 self.__data.minExtent = minExtent def minimumExtent(self): """ Get the minimum extent :return: Minimum extent .. seealso:: :py:meth:`extent()`, :py:meth:`setMinimumExtent()` """ return self.__data.minExtent def setTickLength(self, tick_type, length): """ Set the length of the ticks :param int tick_type: Tick type :param float length: New length .. warning:: the length is limited to [0..1000] """ if tick_type not in self.__data.tick_length: raise ValueError("Invalid tick type: %r" % tick_type) self.__data.tick_length[tick_type] = min([1000.0, max([0.0, length])]) def tickLength(self, tick_type): """ :param int tick_type: Tick type :return: Length of the ticks .. seealso:: :py:meth:`setTickLength()`, :py:meth:`maxTickLength()` """ if tick_type not in self.__data.tick_length: raise ValueError("Invalid tick type: %r" % tick_type) return self.__data.tick_length[tick_type] def maxTickLength(self): """ :return: Length of the longest tick Useful for layout calculations .. seealso:: :py:meth:`tickLength()`, :py:meth:`setTickLength()` """ return max([0.0] + list(self.__data.tick_length.values())) def setTickLighterFactor(self, tick_type, factor): """ Set the color lighter factor of the ticks :param int tick_type: Tick type :param int factor: New factor """ if tick_type not in self.__data.tick_length: raise ValueError("Invalid tick type: %r" % tick_type) self.__data.tick_lighter_factor[tick_type] = min([0, factor]) def tickLighterFactor(self, tick_type): """ :param int tick_type: Tick type :return: Color lighter factor of the ticks .. seealso:: :py:meth:`setTickLighterFactor()` """ if tick_type not in self.__data.tick_length: raise ValueError("Invalid tick type: %r" % tick_type) return self.__data.tick_lighter_factor[tick_type] def label(self, value): """ Convert a value into its representing label The value is converted to a plain text using `QLocale().toString(value)`. This method is often overloaded by applications to have individual labels. :param float value: Value :return: Label string """ return "%g" % value def tickLabel(self, font, value): """ Convert a value into its representing label and cache it. The conversion between value and label is called very often in the layout and painting code. Unfortunately the calculation of the label sizes might be slow (really slow for rich text in Qt4), so it's necessary to cache the labels. :param QFont font: Font :param float value: Value :return: Tick label """ lbl = self.__data.labelCache.get(value) if lbl is None: lbl = QwtText(self.label(value)) lbl.setRenderFlags(0) lbl.setLayoutAttribute(QwtText.MinimumLayout) lbl.textSize(font) self.__data.labelCache[value] = lbl return lbl def invalidateCache(self): """ Invalidate the cache used by `tickLabel()` The cache is invalidated, when a new `QwtScaleDiv` is set. If the labels need to be changed. while the same `QwtScaleDiv` is set, `invalidateCache()` needs to be called manually. """ self.__data.labelCache.clear() class QwtScaleDraw_PrivateData(object): def __init__(self): self.len = 0 self.alignment = QwtScaleDraw.BottomScale self.labelAlignment = 0 self.labelRotation = 0.0 self.labelAutoSize = True self.pos = QPointF() class QwtScaleDraw(QwtAbstractScaleDraw): """ A class for drawing scales QwtScaleDraw can be used to draw linear or logarithmic scales. A scale has a position, an alignment and a length, which can be specified . The labels can be rotated and aligned to the ticks using `setLabelRotation()` and `setLabelAlignment()`. After a scale division has been specified as a QwtScaleDiv object using `QwtAbstractScaleDraw.setScaleDiv(scaleDiv)`, the scale can be drawn with the `QwtAbstractScaleDraw.draw()` member. Alignment of the scale draw: * `QwtScaleDraw.BottomScale`: The scale is below * `QwtScaleDraw.TopScale`: The scale is above * `QwtScaleDraw.LeftScale`: The scale is left * `QwtScaleDraw.RightScale`: The scale is right .. py:class:: QwtScaleDraw() The range of the scale is initialized to [0, 100], The position is at (0, 0) with a length of 100. The orientation is `QwtAbstractScaleDraw.Bottom`. """ # enum Alignment BottomScale, TopScale, LeftScale, RightScale = list(range(4)) Flags = ( Qt.AlignHCenter | Qt.AlignBottom, # BottomScale Qt.AlignHCenter | Qt.AlignTop, # TopScale Qt.AlignLeft | Qt.AlignVCenter, # LeftScale Qt.AlignRight | Qt.AlignVCenter, # RightScale ) def __init__(self): QwtAbstractScaleDraw.__init__(self) self.__data = QwtScaleDraw_PrivateData() self.setLength(100) self._max_label_sizes = {} def alignment(self): """ :return: Alignment of the scale .. seealso:: :py:meth:`setAlignment()` """ return self.__data.alignment def setAlignment(self, align): """ Set the alignment of the scale :param int align: Alignment of the scale Alignment of the scale draw: * `QwtScaleDraw.BottomScale`: The scale is below * `QwtScaleDraw.TopScale`: The scale is above * `QwtScaleDraw.LeftScale`: The scale is left * `QwtScaleDraw.RightScale`: The scale is right The default alignment is `QwtScaleDraw.BottomScale` .. seealso:: :py:meth:`alignment()` """ self.__data.alignment = align def orientation(self): """ Return the orientation TopScale, BottomScale are horizontal (`Qt.Horizontal`) scales, LeftScale, RightScale are vertical (`Qt.Vertical`) scales. :return: Orientation of the scale .. seealso:: :py:meth:`alignment()` """ if self.__data.alignment in (self.TopScale, self.BottomScale): return Qt.Horizontal elif self.__data.alignment in (self.LeftScale, self.RightScale): return Qt.Vertical def getBorderDistHint(self, font): """ Determine the minimum border distance This member function returns the minimum space needed to draw the mark labels at the scale's endpoints. :param QFont font: Font :return: tuple `(start, end)` Returned tuple: * start: Start border distance * end: End border distance """ start, end = 0, 1.0 if not self.hasComponent(QwtAbstractScaleDraw.Labels): return start, end ticks = self.scaleDiv().ticks(QwtScaleDiv.MajorTick) if len(ticks) == 0: return start, end minTick = ticks[0] minPos = self.scaleMap().transform(minTick) maxTick = minTick maxPos = minPos for tick in ticks: tickPos = self.scaleMap().transform(tick) if tickPos < minPos: minTick = tick minPos = tickPos if tickPos > self.scaleMap().transform(maxTick): maxTick = tick maxPos = tickPos s = 0.0 e = 0.0 if self.orientation() == Qt.Vertical: s = -self.labelRect(font, minTick).top() s -= abs(minPos - round(self.scaleMap().p2())) e = self.labelRect(font, maxTick).bottom() e -= abs(maxPos - self.scaleMap().p1()) else: s = -self.labelRect(font, minTick).left() s -= abs(minPos - self.scaleMap().p1()) e = self.labelRect(font, maxTick).right() e -= abs(maxPos - self.scaleMap().p2()) return max(math.ceil(s), 0), max(math.ceil(e), 0) def minLabelDist(self, font): """ Determine the minimum distance between two labels, that is necessary that the texts don't overlap. :param QFont font: Font :return: The maximum width of a label .. seealso:: :py:meth:`getBorderDistHint()` """ if not self.hasComponent(QwtAbstractScaleDraw.Labels): return 0 ticks = self.scaleDiv().ticks(QwtScaleDiv.MajorTick) if not ticks: return 0 fm = QFontMetrics(font) vertical = self.orientation() == Qt.Vertical bRect1 = QRectF() bRect2 = self.labelRect(font, ticks[0]) if vertical: bRect2.setRect(-bRect2.bottom(), 0.0, bRect2.height(), bRect2.width()) maxDist = 0.0 for tick in ticks: bRect1 = bRect2 bRect2 = self.labelRect(font, tick) if vertical: bRect2.setRect(-bRect2.bottom(), 0.0, bRect2.height(), bRect2.width()) dist = fm.leading() if bRect1.right() > 0: dist += bRect1.right() if bRect2.left() < 0: dist += -bRect2.left() if dist > maxDist: maxDist = dist angle = qwtRadians(self.labelRotation()) if vertical: angle += math.pi / 2 sinA = math.sin(angle) if qFuzzyCompare(sinA + 1.0, 1.0): return math.ceil(maxDist) fmHeight = fm.ascent() - 2 labelDist = fmHeight / math.sin(angle) * math.cos(angle) if labelDist < 0: labelDist = -labelDist if labelDist > maxDist: labelDist = maxDist if labelDist < fmHeight: labelDist = fmHeight return math.ceil(labelDist) def extent(self, font): """ Calculate the width/height that is needed for a vertical/horizontal scale. The extent is calculated from the pen width of the backbone, the major tick length, the spacing and the maximum width/height of the labels. :param QFont font: Font used for painting the labels :return: Extent .. seealso:: :py:meth:`minLength()` """ d = 0.0 if self.hasComponent(QwtAbstractScaleDraw.Labels): if self.orientation() == Qt.Vertical: d = self.maxLabelWidth(font) else: d = self.maxLabelHeight(font) if d > 0: d += self.spacing() if self.hasComponent(QwtAbstractScaleDraw.Ticks): d += self.maxTickLength() if self.hasComponent(QwtAbstractScaleDraw.Backbone): pw = max([1, self.penWidth()]) d += pw return max([d, self.minimumExtent()]) def minLength(self, font): """ Calculate the minimum length that is needed to draw the scale :param QFont font: Font used for painting the labels :return: Minimum length that is needed to draw the scale .. seealso:: :py:meth:`extent()` """ startDist, endDist = self.getBorderDistHint(font) sd = self.scaleDiv() minorCount = len(sd.ticks(QwtScaleDiv.MinorTick)) + len( sd.ticks(QwtScaleDiv.MediumTick) ) majorCount = len(sd.ticks(QwtScaleDiv.MajorTick)) lengthForLabels = 0 if self.hasComponent(QwtAbstractScaleDraw.Labels): lengthForLabels = self.minLabelDist(font) * majorCount lengthForTicks = 0 if self.hasComponent(QwtAbstractScaleDraw.Ticks): pw = max([1, self.penWidth()]) lengthForTicks = math.ceil((majorCount + minorCount) * (pw + 1.0)) return startDist + endDist + max([lengthForLabels, lengthForTicks]) def labelPosition(self, value): """ Find the position, where to paint a label The position has a distance that depends on the length of the ticks in direction of the `alignment()`. :param float value: Value :return: Position, where to paint a label """ tval = self.scaleMap().transform(value) dist = self.spacing() if self.hasComponent(QwtAbstractScaleDraw.Backbone): dist += max([1, self.penWidth()]) if self.hasComponent(QwtAbstractScaleDraw.Ticks): dist += self.tickLength(QwtScaleDiv.MajorTick) px = 0 py = 0 if self.alignment() == self.RightScale: px = self.__data.pos.x() + dist py = tval elif self.alignment() == self.LeftScale: px = self.__data.pos.x() - dist py = tval elif self.alignment() == self.BottomScale: px = tval py = self.__data.pos.y() + dist elif self.alignment() == self.TopScale: px = tval py = self.__data.pos.y() - dist return QPointF(px, py) def drawTick(self, painter, value, len_): """ Draw a tick :param QPainter painter: Painter :param float value: Value of the tick :param float len: Length of the tick .. seealso:: :py:meth:`drawBackbone()`, :py:meth:`drawLabel()` """ if len_ <= 0: return pos = self.__data.pos tval = self.scaleMap().transform(value) pw = self.penWidth() a = 0 if self.alignment() == self.LeftScale: x1 = pos.x() + a x2 = pos.x() + a - pw - len_ painter.drawLine(QLineF(x1, tval, x2, tval)) elif self.alignment() == self.RightScale: x1 = pos.x() x2 = pos.x() + pw + len_ painter.drawLine(QLineF(x1, tval, x2, tval)) elif self.alignment() == self.BottomScale: y1 = pos.y() y2 = pos.y() + pw + len_ painter.drawLine(QLineF(tval, y1, tval, y2)) elif self.alignment() == self.TopScale: y1 = pos.y() + a y2 = pos.y() - pw - len_ + a painter.drawLine(QLineF(tval, y1, tval, y2)) def drawBackbone(self, painter): """ Draws the baseline of the scale :param QPainter painter: Painter .. seealso:: :py:meth:`drawTick()`, :py:meth:`drawLabel()` """ pos = self.__data.pos len_ = self.__data.len off = 0.5 * self.penWidth() if self.alignment() == self.LeftScale: x = pos.x() - off painter.drawLine(QLineF(x, pos.y(), x, pos.y() + len_)) elif self.alignment() == self.RightScale: x = pos.x() + off painter.drawLine(QLineF(x, pos.y(), x, pos.y() + len_)) elif self.alignment() == self.TopScale: y = pos.y() - off painter.drawLine(QLineF(pos.x(), y, pos.x() + len_, y)) elif self.alignment() == self.BottomScale: y = pos.y() + off painter.drawLine(QLineF(pos.x(), y, pos.x() + len_, y)) def move(self, *args): """ Move the position of the scale The meaning of the parameter pos depends on the alignment: * `QwtScaleDraw.LeftScale`: The origin is the topmost point of the backbone. The backbone is a vertical line. Scale marks and labels are drawn at the left of the backbone. * `QwtScaleDraw.RightScale`: The origin is the topmost point of the backbone. The backbone is a vertical line. Scale marks and labels are drawn at the right of the backbone. * `QwtScaleDraw.TopScale`: The origin is the leftmost point of the backbone. The backbone is a horizontal line. Scale marks and labels are drawn above the backbone. * `QwtScaleDraw.BottomScale`: The origin is the leftmost point of the backbone. The backbone is a horizontal line Scale marks and labels are drawn below the backbone. .. py:method:: move(x, y) :noindex: :param float x: X coordinate :param float y: Y coordinate .. py:method:: move(pos) :noindex: :param QPointF pos: position .. seealso:: :py:meth:`pos()`, :py:meth:`setLength()` """ if len(args) == 2: x, y = args self.move(QPointF(x, y)) elif len(args) == 1: (pos,) = args self.__data.pos = pos self.updateMap() else: raise TypeError( "%s().move() takes 1 or 2 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def pos(self): """ :return: Origin of the scale .. seealso:: :py:meth:`pos()`, :py:meth:`setLength()` """ return self.__data.pos def setLength(self, length): """ Set the length of the backbone. The length doesn't include the space needed for overlapping labels. :param float length: Length of the backbone .. seealso:: :py:meth:`move()`, :py:meth:`minLabelDist()` """ if length >= 0 and length < 10: length = 10 if length < 0 and length > -10: length = -10 self.__data.len = length self.updateMap() def length(self): """ :return: the length of the backbone .. seealso:: :py:meth:`setLength()`, :py:meth:`pos()` """ return self.__data.len def drawLabel(self, painter, value): """ Draws the label for a major scale tick :param QPainter painter: Painter :param float value: Value .. seealso:: :py:meth:`drawTick()`, :py:meth:`drawBackbone()`, :py:meth:`boundingLabelRect()` """ lbl = self.tickLabel(painter.font(), value) if lbl is None or lbl.isEmpty(): return pos = self.labelPosition(value) labelSize = lbl.textSize(painter.font()) transform = self.labelTransformation(pos, labelSize) painter.save() painter.setWorldTransform(transform, True) lbl.draw(painter, QRect(QPoint(0, 0), labelSize.toSize())) painter.restore() def boundingLabelRect(self, font, value): """ Find the bounding rectangle for the label. The coordinates of the rectangle are absolute (calculated from `pos()`) in direction of the tick. :param QFont font: Font used for painting :param float value: Value :return: Bounding rectangle .. seealso:: :py:meth:`labelRect()` """ lbl = self.tickLabel(font, value) if lbl.isEmpty(): return QRect() pos = self.labelPosition(value) labelSize = lbl.textSize(font) transform = self.labelTransformation(pos, labelSize) return transform.mapRect(QRect(QPoint(0, 0), labelSize.toSize())) def labelTransformation(self, pos, size): """ Calculate the transformation that is needed to paint a label depending on its alignment and rotation. :param QPointF pos: Position where to paint the label :param QSizeF size: Size of the label :return: Transformation matrix .. seealso:: :py:meth:`setLabelAlignment()`, :py:meth:`setLabelRotation()` """ transform = QTransform() transform.translate(pos.x(), pos.y()) transform.rotate(self.labelRotation()) flags = self.labelAlignment() if flags == 0: flags = self.Flags[self.alignment()] if flags & Qt.AlignLeft: x = -size.width() elif flags & Qt.AlignRight: x = 0.0 else: x = -(0.5 * size.width()) if flags & Qt.AlignTop: y = -size.height() elif flags & Qt.AlignBottom: y = 0 else: y = -(0.5 * size.height()) transform.translate(x, y) return transform def labelRect(self, font, value): """ Find the bounding rectangle for the label. The coordinates of the rectangle are relative to spacing + tick length from the backbone in direction of the tick. :param QFont font: Font used for painting :param float value: Value :return: Bounding rectangle that is needed to draw a label """ lbl = self.tickLabel(font, value) if not lbl or lbl.isEmpty(): return QRectF(0.0, 0.0, 0.0, 0.0) pos = self.labelPosition(value) labelSize = lbl.textSize(font) transform = self.labelTransformation(pos, labelSize) br = transform.mapRect(QRectF(QPointF(0, 0), labelSize)) br.translate(-pos.x(), -pos.y()) return br def labelSize(self, font, value): """ Calculate the size that is needed to draw a label :param QFont font: Label font :param float value: Value :return: Size that is needed to draw a label """ return self.labelRect(font, value).size() def setLabelRotation(self, rotation): """ Rotate all labels. When changing the rotation, it might be necessary to adjust the label flags too. Finding a useful combination is often the result of try and error. :param float rotation: Angle in degrees. When changing the label rotation, the label flags often needs to be adjusted too. .. seealso:: :py:meth:`setLabelAlignment()`, :py:meth:`labelRotation()`, :py:meth:`labelAlignment()` """ self.__data.labelRotation = rotation def labelRotation(self): """ :return: the label rotation .. seealso:: :py:meth:`setLabelRotation()`, :py:meth:`labelAlignment()` """ return self.__data.labelRotation def setLabelAlignment(self, alignment): """ Change the label flags Labels are aligned to the point tick length + spacing away from the backbone. The alignment is relative to the orientation of the label text. In case of an flags of 0 the label will be aligned depending on the orientation of the scale: * `QwtScaleDraw.TopScale`: `Qt.AlignHCenter | Qt.AlignTop` * `QwtScaleDraw.BottomScale`: `Qt.AlignHCenter | Qt.AlignBottom` * `QwtScaleDraw.LeftScale`: `Qt.AlignLeft | Qt.AlignVCenter` * `QwtScaleDraw.RightScale`: `Qt.AlignRight | Qt.AlignVCenter` Changing the alignment is often necessary for rotated labels. :param Qt.Alignment alignment Or'd `Qt.AlignmentFlags` .. seealso:: :py:meth:`setLabelRotation()`, :py:meth:`labelRotation()`, :py:meth:`labelAlignment()` .. warning:: The various alignments might be confusing. The alignment of the label is not the alignment of the scale and is not the alignment of the flags (`QwtText.flags()`) returned from `QwtAbstractScaleDraw.label()`. """ self.__data.labelAlignment = alignment def labelAlignment(self): """ :return: the label flags .. seealso:: :py:meth:`setLabelAlignment()`, :py:meth:`labelRotation()` """ return self.__data.labelAlignment def setLabelAutoSize(self, state): """ Set label automatic size option state When drawing text labels, if automatic size mode is enabled (default behavior), the axes are drawn in order to optimize layout space and depends on text label individual sizes. Otherwise, width and height won't change when axis range is changing. This option is not implemented in Qwt C++ library: this may be used either as an optimization (updating plot layout is faster when this option is enabled) or as an appearance preference (with Qwt default behavior, the size of axes may change when zooming and/or panning plot canvas which in some cases may not be desired). :param bool state: On/off .. seealso:: :py:meth:`labelAutoSize()` """ self.__data.labelAutoSize = state def labelAutoSize(self): """ :return: True if automatic size option is enabled for labels .. seealso:: :py:meth:`setLabelAutoSize()` """ return self.__data.labelAutoSize def _get_max_label_size(self, font): key = (font.toString(), self.labelRotation()) size = self._max_label_sizes.get(key) if size is None: size = self.labelSize(font, -999999) # -999999 is the biggest label size.setWidth(math.ceil(size.width())) size.setHeight(math.ceil(size.height())) return self._max_label_sizes.setdefault(key, size) else: return size def maxLabelWidth(self, font): """ :param QFont font: Font :return: the maximum width of a label """ ticks = self.scaleDiv().ticks(QwtScaleDiv.MajorTick) if not ticks: return 0 if self.labelAutoSize(): vmax = sorted( [v for v in ticks if self.scaleDiv().contains(v)], key=lambda obj: len("%g" % obj), )[-1] return math.ceil(self.labelSize(font, vmax).width()) ## Original implementation (closer to Qwt's C++ code, but slower): # return math.ceil(max([self.labelSize(font, v).width() # for v in ticks if self.scaleDiv().contains(v)])) else: return self._get_max_label_size(font).width() def maxLabelHeight(self, font): """ :param QFont font: Font :return: the maximum height of a label """ ticks = self.scaleDiv().ticks(QwtScaleDiv.MajorTick) if not ticks: return 0 if self.labelAutoSize(): vmax = sorted( [v for v in ticks if self.scaleDiv().contains(v)], key=lambda obj: len("%g" % obj), )[-1] return math.ceil(self.labelSize(font, vmax).height()) ## Original implementation (closer to Qwt's C++ code, but slower): # return math.ceil(max([self.labelSize(font, v).height() # for v in ticks if self.scaleDiv().contains(v)])) else: return self._get_max_label_size(font).height() def updateMap(self): pos = self.__data.pos len_ = self.__data.len sm = self.scaleMap() if self.orientation() == Qt.Vertical: sm.setPaintInterval(pos.y() + len_, pos.y()) else: sm.setPaintInterval(pos.x(), pos.x() + len_) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091907.0 PythonQwt-0.10.2/qwt/scale_engine.py0000666000000000000000000007066000000000000014254 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtScaleEngine -------------- .. autoclass:: QwtScaleEngine :members: QwtLinearScaleEngine -------------------- .. autoclass:: QwtLinearScaleEngine :members: QwtLogScaleEngine ----------------- .. autoclass:: QwtLogScaleEngine :members: """ from __future__ import division from qwt.interval import QwtInterval from qwt.scale_div import QwtScaleDiv from qwt.transform import QwtLogTransform from qwt._math import qwtFuzzyCompare from qwt.transform import QwtTransform from qtpy.QtCore import qFuzzyCompare import sys import math import numpy as np DBL_MAX = sys.float_info.max LOG_MIN = 1.0e-100 LOG_MAX = 1.0e100 def qwtLogInterval(base, interval): return QwtInterval( math.log(interval.minValue(), base), math.log(interval.maxValue(), base) ) def qwtPowInterval(base, interval): return QwtInterval( math.pow(base, interval.minValue()), math.pow(base, interval.maxValue()) ) def qwtStepSize(intervalSize, maxSteps, base): """this version often doesn't find the best ticks: f.e for 15: 5, 10""" minStep = divideInterval(intervalSize, maxSteps, base) if minStep != 0.0: # # ticks per interval numTicks = math.ceil(abs(intervalSize / minStep)) - 1 # Do the minor steps fit into the interval? if ( qwtFuzzyCompare( (numTicks + 1) * abs(minStep), abs(intervalSize), intervalSize ) > 0 ): # The minor steps doesn't fit into the interval return 0.5 * intervalSize return minStep EPS = 1.0e-6 def ceilEps(value, intervalSize): """ Ceil a value, relative to an interval :param float value: Value to be ceiled :param float intervalSize: Interval size :return: Rounded value .. seealso:: :py:func:`qwt.scale_engine.floorEps()` """ eps = EPS * intervalSize value = (value - eps) / intervalSize return math.ceil(value) * intervalSize def floorEps(value, intervalSize): """ Floor a value, relative to an interval :param float value: Value to be floored :param float intervalSize: Interval size :return: Rounded value .. seealso:: :py:func:`qwt.scale_engine.ceilEps()` """ eps = EPS * intervalSize value = (value + eps) / intervalSize return math.floor(value) * intervalSize def divideEps(intervalSize, numSteps): """ Divide an interval into steps `stepSize = (intervalSize - intervalSize * 10**-6) / numSteps` :param float intervalSize: Interval size :param float numSteps: Number of steps :return: Step size """ if numSteps == 0.0 or intervalSize == 0.0: return 0.0 return (intervalSize - (EPS * intervalSize)) / numSteps def divideInterval(intervalSize, numSteps, base): """ Calculate a step size for a given interval :param float intervalSize: Interval size :param float numSteps: Number of steps :param int base: Base for the division (usually 10) :return: Calculated step size """ if numSteps <= 0: return 0.0 v = divideEps(intervalSize, numSteps) if v == 0.0: return 0.0 lx = math.log(abs(v), base) p = math.floor(lx) fraction = math.pow(base, lx - p) n = base while n > 1 and fraction <= n // 2: n //= 2 stepSize = n * math.pow(base, p) if v < 0: stepSize = -stepSize return stepSize class QwtScaleEngine_PrivateData(object): def __init__(self): self.attributes = QwtScaleEngine.NoAttribute self.lowerMargin = 0.0 self.upperMargin = 0.0 self.referenceValue = 0.0 self.base = 10 self.transform = None # QwtTransform class QwtScaleEngine(object): """ Base class for scale engines. A scale engine tries to find "reasonable" ranges and step sizes for scales. The layout of the scale can be varied with `setAttribute()`. `PythonQwt` offers implementations for logarithmic and linear scales. Layout attributes: * `QwtScaleEngine.NoAttribute`: No attributes * `QwtScaleEngine.IncludeReference`: Build a scale which includes the `reference()` value * `QwtScaleEngine.Symmetric`: Build a scale which is symmetric to the `reference()` value * `QwtScaleEngine.Floating`: The endpoints of the scale are supposed to be equal the outmost included values plus the specified margins (see `setMargins()`). If this attribute is *not* set, the endpoints of the scale will be integer multiples of the step size. * `QwtScaleEngine.Inverted`: Turn the scale upside down """ # enum Attribute NoAttribute = 0x00 IncludeReference = 0x01 Symmetric = 0x02 Floating = 0x04 Inverted = 0x08 def __init__(self, base=10): self.__data = QwtScaleEngine_PrivateData() self.setBase(base) def autoScale(self, maxNumSteps, x1, x2, stepSize): """ Align and divide an interval :param int maxNumSteps: Max. number of steps :param float x1: First limit of the interval (In/Out) :param float x2: Second limit of the interval (In/Out) :param float stepSize: Step size :return: tuple (x1, x2, stepSize) """ pass def divideScale(self, x1, x2, maxMajorSteps, maxMinorSteps, stepSize=0.0): """ Calculate a scale division :param float x1: First interval limit :param float x2: Second interval limit :param int maxMajorSteps: Maximum for the number of major steps :param int maxMinorSteps: Maximum number of minor steps :param float stepSize: Step size. If stepSize == 0.0, the scaleEngine calculates one :return: Calculated scale division """ pass def setTransformation(self, transform): """ Assign a transformation :param qwt.transform.QwtTransform transform: Transformation The transformation object is used as factory for clones that are returned by `transformation()` The scale engine takes ownership of the transformation. .. seealso:: :py:meth:`QwtTransform.copy()`, :py:meth:`transformation()` """ assert transform is None or isinstance(transform, QwtTransform) if transform != self.__data.transform: self.__data.transform = transform def transformation(self): """ Create and return a clone of the transformation of the engine. When the engine has no special transformation None is returned, indicating no transformation. :return: A clone of the transfomation .. seealso:: :py:meth:`setTransformation()` """ if self.__data.transform: return self.__data.transform.copy() def lowerMargin(self): """ :return: the margin at the lower end of the scale The default margin is 0. .. seealso:: :py:meth:`setMargins()` """ return self.__data.lowerMargin def upperMargin(self): """ :return: the margin at the upper end of the scale The default margin is 0. .. seealso:: :py:meth:`setMargins()` """ return self.__data.upperMargin def setMargins(self, lower, upper): """ Specify margins at the scale's endpoints :param float lower: minimum distance between the scale's lower boundary and the smallest enclosed value :param float upper: minimum distance between the scale's upper boundary and the greatest enclosed value :return: A clone of the transfomation Margins can be used to leave a minimum amount of space between the enclosed intervals and the boundaries of the scale. .. warning:: `QwtLogScaleEngine` measures the margins in decades. .. seealso:: :py:meth:`upperMargin()`, :py:meth:`lowerMargin()` """ self.__data.lowerMargin = max([lower, 0.0]) self.__data.upperMargin = max([upper, 0.0]) def divideInterval(self, intervalSize, numSteps): """ Calculate a step size for a given interval :param float intervalSize: Interval size :param float numSteps: Number of steps :return: Step size """ return divideInterval(intervalSize, numSteps, self.__data.base) def contains(self, interval, value): """ Check if an interval "contains" a value :param float intervalSize: Interval size :param float value: Value :return: True, when the value is inside the interval """ if not interval.isValid(): return False eps = abs(1.0e-6 * interval.width()) if interval.minValue() - value > eps or value - interval.maxValue() > eps: return False else: return True def strip(self, ticks, interval): """ Remove ticks from a list, that are not inside an interval :param list ticks: Tick list :param qwt.interval.QwtInterval interval: Interval :return: Stripped tick list """ if not interval.isValid() or not ticks: return [] if self.contains(interval, ticks[0]) and self.contains(interval, ticks[-1]): return ticks return [tick for tick in ticks if self.contains(interval, tick)] def buildInterval(self, value): """ Build an interval around a value In case of v == 0.0 the interval is [-0.5, 0.5], otherwide it is [0.5 * v, 1.5 * v] :param float value: Initial value :return: Calculated interval """ if value == 0.0: delta = 0.5 else: delta = abs(0.5 * value) if DBL_MAX - delta < value: return QwtInterval(DBL_MAX - delta, DBL_MAX) if -DBL_MAX + delta > value: return QwtInterval(-DBL_MAX, -DBL_MAX + delta) return QwtInterval(value - delta, value + delta) def setAttribute(self, attribute, on=True): """ Change a scale attribute :param int attribute: Attribute to change :param bool on: On/Off :return: Calculated interval .. seealso:: :py:meth:`testAttribute()` """ if on: self.__data.attributes |= attribute else: self.__data.attributes &= ~attribute def testAttribute(self, attribute): """ :param int attribute: Attribute to be tested :return: True, if attribute is enabled .. seealso:: :py:meth:`setAttribute()` """ return self.__data.attributes & attribute def setAttributes(self, attributes): """ Change the scale attribute :param attributes: Set scale attributes .. seealso:: :py:meth:`attributes()` """ self.__data.attributes = attributes def attributes(self): """ :return: Scale attributes .. seealso:: :py:meth:`setAttributes()`, :py:meth:`testAttribute()` """ return self.__data.attributes def setReference(self, r): """ Specify a reference point :param float r: new reference value The reference point is needed if options `IncludeReference` or `Symmetric` are active. Its default value is 0.0. """ self.__data.referenceValue = r def reference(self): """ :return: the reference value .. seealso:: :py:meth:`setReference()`, :py:meth:`setAttribute()` """ return self.__data.referenceValue def setBase(self, base): """ Set the base of the scale engine While a base of 10 is what 99.9% of all applications need certain scales might need a different base: f.e 2 The default setting is 10 :param int base: Base of the engine .. seealso:: :py:meth:`base()` """ self.__data.base = max([base, 2]) def base(self): """ :return: Base of the scale engine .. seealso:: :py:meth:`setBase()` """ return self.__data.base class QwtLinearScaleEngine(QwtScaleEngine): """ A scale engine for linear scales The step size will fit into the pattern \f$\left\{ 1,2,5\right\} \cdot 10^{n}\f$, where n is an integer. """ def __init__(self, base=10): super(QwtLinearScaleEngine, self).__init__(base) def autoScale(self, maxNumSteps, x1, x2, stepSize): """ Align and divide an interval :param int maxNumSteps: Max. number of steps :param float x1: First limit of the interval (In/Out) :param float x2: Second limit of the interval (In/Out) :param float stepSize: Step size :return: tuple (x1, x2, stepSize) .. seealso:: :py:meth:`setAttribute()` """ interval = QwtInterval(x1, x2) interval = interval.normalized() interval.setMinValue(interval.minValue() - self.lowerMargin()) interval.setMaxValue(interval.maxValue() + self.upperMargin()) if self.testAttribute(QwtScaleEngine.Symmetric): interval = interval.symmetrize(self.reference()) if self.testAttribute(QwtScaleEngine.IncludeReference): interval = interval.extend(self.reference()) if interval.width() == 0.0: interval = self.buildInterval(interval.minValue()) stepSize = divideInterval(interval.width(), max([maxNumSteps, 1]), self.base()) if not self.testAttribute(QwtScaleEngine.Floating): interval = self.align(interval, stepSize) x1 = interval.minValue() x2 = interval.maxValue() if self.testAttribute(QwtScaleEngine.Inverted): x1, x2 = x2, x1 stepSize = -stepSize return x1, x2, stepSize def divideScale(self, x1, x2, maxMajorSteps, maxMinorSteps, stepSize=0.0): """ Calculate a scale division for an interval :param float x1: First interval limit :param float x2: Second interval limit :param int maxMajorSteps: Maximum for the number of major steps :param int maxMinorSteps: Maximum number of minor steps :param float stepSize: Step size. If stepSize == 0.0, the scaleEngine calculates one :return: Calculated scale division """ interval = QwtInterval(x1, x2).normalized() if interval.width() <= 0: return QwtScaleDiv() stepSize = abs(stepSize) if stepSize == 0.0: if maxMajorSteps < 1: maxMajorSteps = 1 stepSize = divideInterval(interval.width(), maxMajorSteps, self.base()) scaleDiv = QwtScaleDiv() if stepSize != 0.0: ticks = self.buildTicks(interval, stepSize, maxMinorSteps) scaleDiv = QwtScaleDiv(interval, ticks) if x1 > x2: scaleDiv.invert() return scaleDiv def buildTicks(self, interval, stepSize, maxMinorSteps): """ Calculate ticks for an interval :param qwt.interval.QwtInterval interval: Interval :param float stepSize: Step size :param int maxMinorSteps: Maximum number of minor steps :return: Calculated ticks """ ticks = [[] for _i in range(QwtScaleDiv.NTickTypes)] boundingInterval = self.align(interval, stepSize) ticks[QwtScaleDiv.MajorTick] = self.buildMajorTicks(boundingInterval, stepSize) if maxMinorSteps > 0: self.buildMinorTicks(ticks, maxMinorSteps, stepSize) for i in range(QwtScaleDiv.NTickTypes): ticks[i] = self.strip(ticks[i], interval) for j in range(len(ticks[i])): if qwtFuzzyCompare(ticks[i][j], 0.0, stepSize) == 0: ticks[i][j] = 0.0 return ticks def buildMajorTicks(self, interval, stepSize): """ Calculate major ticks for an interval :param qwt.interval.QwtInterval interval: Interval :param float stepSize: Step size :return: Calculated ticks """ numTicks = min([round(interval.width() / stepSize) + 1, 10000]) if np.isnan(numTicks): numTicks = 0 ticks = [interval.minValue()] for i in range(1, int(numTicks - 1)): ticks += [interval.minValue() + i * stepSize] ticks += [interval.maxValue()] return ticks def buildMinorTicks(self, ticks, maxMinorSteps, stepSize): """ Calculate minor ticks for an interval :param list ticks: Major ticks (returned) :param int maxMinorSteps: Maximum number of minor steps :param float stepSize: Step size """ minStep = qwtStepSize(stepSize, maxMinorSteps, self.base()) if minStep == 0.0: return numTicks = int(math.ceil(abs(stepSize / minStep)) - 1) medIndex = -1 if numTicks % 2: medIndex = numTicks / 2 for val in ticks[QwtScaleDiv.MajorTick]: for k in range(numTicks): val += minStep alignedValue = val if qwtFuzzyCompare(val, 0.0, stepSize) == 0: alignedValue = 0.0 if k == medIndex: ticks[QwtScaleDiv.MediumTick] += [alignedValue] else: ticks[QwtScaleDiv.MinorTick] += [alignedValue] def align(self, interval, stepSize): """ Align an interval to a step size The limits of an interval are aligned that both are integer multiples of the step size. :param qwt.interval.QwtInterval interval: Interval :param float stepSize: Step size :return: Aligned interval """ x1 = interval.minValue() x2 = interval.maxValue() eps = 0.000000000001 if -DBL_MAX + stepSize <= x1: x = floorEps(x1, stepSize) if abs(x) <= eps or not qFuzzyCompare(x1, x): x1 = x if DBL_MAX - stepSize >= x2: x = ceilEps(x2, stepSize) if abs(x) <= eps or not qFuzzyCompare(x2, x): x2 = x return QwtInterval(x1, x2) class QwtLogScaleEngine(QwtScaleEngine): """ A scale engine for logarithmic scales The step size is measured in *decades* and the major step size will be adjusted to fit the pattern {1,2,3,5}.10**n, where n is a natural number including zero. .. warning:: The step size as well as the margins are measured in *decades*. """ def __init__(self, base=10): super(QwtLogScaleEngine, self).__init__(base) self.setTransformation(QwtLogTransform()) def autoScale(self, maxNumSteps, x1, x2, stepSize): """ Align and divide an interval :param int maxNumSteps: Max. number of steps :param float x1: First limit of the interval (In/Out) :param float x2: Second limit of the interval (In/Out) :param float stepSize: Step size :return: tuple (x1, x2, stepSize) .. seealso:: :py:meth:`setAttribute()` """ if x1 > x2: x1, x2 = x2, x1 logBase = self.base() interval = QwtInterval( x1 / math.pow(logBase, self.lowerMargin()), x2 * math.pow(logBase, self.upperMargin()), ) interval = interval.limited(LOG_MIN, LOG_MAX) if interval.maxValue() / interval.minValue() < logBase: linearScaler = QwtLinearScaleEngine() linearScaler.setAttributes(self.attributes()) linearScaler.setReference(self.reference()) linearScaler.setMargins(self.lowerMargin(), self.upperMargin()) x1, x2, stepSize = linearScaler.autoScale(maxNumSteps, x1, x2, stepSize) linearInterval = QwtInterval(x1, x2).normalized() linearInterval = linearInterval.limited(LOG_MIN, LOG_MAX) if linearInterval.maxValue() / linearInterval.minValue() < logBase: if stepSize < 0.0: stepSize = -math.log(abs(stepSize), logBase) else: stepSize = math.log(stepSize, logBase) return x1, x2, stepSize logRef = 1.0 if self.reference() > LOG_MIN / 2: logRef = min([self.reference(), LOG_MAX / 2]) if self.testAttribute(QwtScaleEngine.Symmetric): delta = max([interval.maxValue() / logRef, logRef / interval.minValue()]) interval.setInterval(logRef / delta, logRef * delta) if self.testAttribute(QwtScaleEngine.IncludeReference): interval = interval.extend(logRef) interval = interval.limited(LOG_MIN, LOG_MAX) if interval.width() == 0.0: interval = self.buildInterval(interval.minValue()) stepSize = self.divideInterval( qwtLogInterval(logBase, interval).width(), max([maxNumSteps, 1]) ) if stepSize < 1.0: stepSize = 1.0 if not self.testAttribute(QwtScaleEngine.Floating): interval = self.align(interval, stepSize) x1 = interval.minValue() x2 = interval.maxValue() if self.testAttribute(QwtScaleEngine.Inverted): x1, x2 = x2, x1 stepSize = -stepSize return x1, x2, stepSize def divideScale(self, x1, x2, maxMajorSteps, maxMinorSteps, stepSize=0.0): """ Calculate a scale division for an interval :param float x1: First interval limit :param float x2: Second interval limit :param int maxMajorSteps: Maximum for the number of major steps :param int maxMinorSteps: Maximum number of minor steps :param float stepSize: Step size. If stepSize == 0.0, the scaleEngine calculates one :return: Calculated scale division """ interval = QwtInterval(x1, x2).normalized() interval = interval.limited(LOG_MIN, LOG_MAX) if interval.width() <= 0: return QwtScaleDiv() logBase = self.base() if interval.maxValue() / interval.minValue() < logBase: linearScaler = QwtLinearScaleEngine() linearScaler.setAttributes(self.attributes()) linearScaler.setReference(self.reference()) linearScaler.setMargins(self.lowerMargin(), self.upperMargin()) return linearScaler.divideScale( x1, x2, maxMajorSteps, maxMinorSteps, stepSize ) stepSize = abs(stepSize) if stepSize == 0.0: if maxMajorSteps < 1: maxMajorSteps = 1 stepSize = self.divideInterval( qwtLogInterval(logBase, interval).width(), maxMajorSteps ) if stepSize < 1.0: stepSize = 1.0 scaleDiv = QwtScaleDiv() if stepSize != 0.0: ticks = self.buildTicks(interval, stepSize, maxMinorSteps) scaleDiv = QwtScaleDiv(interval, ticks) if x1 > x2: scaleDiv.invert() return scaleDiv def buildTicks(self, interval, stepSize, maxMinorSteps): """ Calculate ticks for an interval :param qwt.interval.QwtInterval interval: Interval :param float stepSize: Step size :param int maxMinorSteps: Maximum number of minor steps :return: Calculated ticks """ ticks = [[] for _i in range(QwtScaleDiv.NTickTypes)] boundingInterval = self.align(interval, stepSize) ticks[QwtScaleDiv.MajorTick] = self.buildMajorTicks(boundingInterval, stepSize) if maxMinorSteps > 0: self.buildMinorTicks(ticks, maxMinorSteps, stepSize) for i in range(QwtScaleDiv.NTickTypes): ticks[i] = self.strip(ticks[i], interval) return ticks def buildMajorTicks(self, interval, stepSize): """ Calculate major ticks for an interval :param qwt.interval.QwtInterval interval: Interval :param float stepSize: Step size :return: Calculated ticks """ width = qwtLogInterval(self.base(), interval).width() numTicks = min([int(round(width / stepSize)) + 1, 10000]) lxmin = math.log(interval.minValue()) lxmax = math.log(interval.maxValue()) lstep = (lxmax - lxmin) / float(numTicks - 1) ticks = [interval.minValue()] for i in range(1, numTicks - 1): ticks += [math.exp(lxmin + float(i) * lstep)] ticks += [interval.maxValue()] return ticks def buildMinorTicks(self, ticks, maxMinorSteps, stepSize): """ Calculate minor ticks for an interval :param list ticks: Major ticks (returned) :param int maxMinorSteps: Maximum number of minor steps :param float stepSize: Step size """ logBase = self.base() if stepSize < 1.1: minStep = self.divideInterval(stepSize, maxMinorSteps + 1) if minStep == 0.0: return numSteps = int(round(stepSize / minStep)) mediumTickIndex = -1 if numSteps > 2 and numSteps % 2 == 0: mediumTickIndex = numSteps / 2 for v in ticks[QwtScaleDiv.MajorTick]: s = logBase / numSteps if s >= 1.0: if not qFuzzyCompare(s, 1.0): ticks[QwtScaleDiv.MinorTick] += [v * s] for j in range(2, numSteps): ticks[QwtScaleDiv.MinorTick] += [v * j * s] else: for j in range(1, numSteps): tick = v + j * v * (logBase - 1) / numSteps if j == mediumTickIndex: ticks[QwtScaleDiv.MediumTick] += [tick] else: ticks[QwtScaleDiv.MinorTick] += [tick] else: minStep = self.divideInterval(stepSize, maxMinorSteps) if minStep == 0.0: return if minStep < 1.0: minStep = 1.0 numTicks = int(round(stepSize / minStep)) - 1 if qwtFuzzyCompare((numTicks + 1) * minStep, stepSize, stepSize) > 0: numTicks = 0 if numTicks < 1: return mediumTickIndex = -1 if numTicks > 2 and numTicks % 2: mediumTickIndex = numTicks / 2 minFactor = max([math.pow(logBase, minStep), float(logBase)]) for tick in ticks[QwtScaleDiv.MajorTick]: for j in range(numTicks): tick *= minFactor if j == mediumTickIndex: ticks[QwtScaleDiv.MediumTick] += [tick] else: ticks[QwtScaleDiv.MinorTick] += [tick] def align(self, interval, stepSize): """ Align an interval to a step size The limits of an interval are aligned that both are integer multiples of the step size. :param qwt.interval.QwtInterval interval: Interval :param float stepSize: Step size :return: Aligned interval """ intv = qwtLogInterval(self.base(), interval) x1 = floorEps(intv.minValue(), stepSize) if qwtFuzzyCompare(interval.minValue(), x1, stepSize) == 0: x1 = interval.minValue() x2 = ceilEps(intv.maxValue(), stepSize) if qwtFuzzyCompare(interval.maxValue(), x2, stepSize) == 0: x2 = interval.maxValue() return qwtPowInterval(self.base(), QwtInterval(x1, x2)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091906.0 PythonQwt-0.10.2/qwt/scale_map.py0000666000000000000000000002255000000000000013557 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtScaleMap ----------- .. autoclass:: QwtScaleMap :members: """ from qwt._math import qwtFuzzyCompare from qtpy.QtCore import QRectF, QPointF class QwtScaleMap(object): """ A scale map `QwtScaleMap` offers transformations from the coordinate system of a scale into the linear coordinate system of a paint device and vice versa. The scale and paint device intervals are both set to [0,1]. .. py:class:: QwtScaleMap([other=None]) Constructor (eventually, copy constructor) :param qwt.scale_map.QwtScaleMap other: Other scale map .. py:class:: QwtScaleMap(p1, p2, s1, s2) :noindex: Constructor (was provided by `PyQwt` but not by `Qwt`) :param int p1: First border of the paint interval :param int p2: Second border of the paint interval :param float s1: First border of the scale interval :param float s2: Second border of the scale interval """ def __init__(self, *args): self.__transform = None # QwtTransform self.__s1 = 0.0 self.__s2 = 1.0 self.__p1 = 0.0 self.__p2 = 1.0 other = None if len(args) == 1: (other,) = args elif len(args) == 4: p1, p2, s1, s2 = args self.__s1 = s1 self.__s2 = s2 self.__p1 = p1 self.__p2 = p2 elif len(args) != 0: raise TypeError( "%s() takes 0, 1, or 4 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) if other is None: self.__cnv = 1.0 self.__ts1 = 0.0 else: self.__s1 = other.__s1 self.__s2 = other.__s2 self.__p1 = other.__p1 self.__p2 = other.__p2 self.__cnv = other.__cnv self.__ts1 = other.__ts1 if other.__transform: self.__transform = other.__transform.copy() def __eq__(self, other): return ( self.__s1 == other.__s1 and self.__s2 == other.__s2 and self.__p1 == other.__p1 and self.__p2 == other.__p2 and self.__cnv == other.__cnv and self.__ts1 == other.__ts1 ) def s1(self): """ :return: First border of the scale interval """ return self.__s1 def s2(self): """ :return: Second border of the scale interval """ return self.__s2 def p1(self): """ :return: First border of the paint interval """ return self.__p1 def p2(self): """ :return: Second border of the paint interval """ return self.__p2 def pDist(self): """ :return: `abs(p2() - p1())` """ return abs(self.__p2 - self.__p1) def sDist(self): """ :return: `abs(s2() - s1())` """ return abs(self.__s2 - self.__s1) def transform_scalar(self, s): """ Transform a point related to the scale interval into an point related to the interval of the paint device :param float s: Value relative to the coordinates of the scale :return: Transformed value .. seealso:: :py:meth:`invTransform_scalar()` """ if self.__transform: s = self.__transform.transform(s) return self.__p1 + (s - self.__ts1) * self.__cnv def invTransform_scalar(self, p): """ Transform an paint device value into a value in the interval of the scale. :param float p: Value relative to the coordinates of the paint device :return: Transformed value .. seealso:: :py:meth:`transform_scalar()` """ if self.__cnv == 0: s = self.__ts1 # avoid divide by zero else: s = self.__ts1 + (p - self.__p1) / self.__cnv if self.__transform: s = self.__transform.invTransform(s) return s def isInverting(self): """ :return: True, when ( p1() < p2() ) != ( s1() < s2() ) """ return (self.__p1 < self.__p2) != (self.__s1 < self.__s2) def setTransformation(self, transform): """ Initialize the map with a transformation :param qwt.transform.QwtTransform transform: Transformation """ if self.__transform != transform: self.__transform = transform self.setScaleInterval(self.__s1, self.__s2) def transformation(self): """ :return: the transformation """ return self.__transform def setScaleInterval(self, s1, s2): """ Specify the borders of the scale interval :param float s1: first border :param float s2: second border .. warning:: Scales might be aligned to transformation depending boundaries """ self.__s1 = s1 self.__s2 = s2 if self.__transform: self.__s1 = self.__transform.bounded(self.__s1) self.__s2 = self.__transform.bounded(self.__s2) self.updateFactor() def setPaintInterval(self, p1, p2): """ Specify the borders of the paint device interval :param float p1: first border :param float p2: second border """ self.__p1 = p1 self.__p2 = p2 self.updateFactor() def updateFactor(self): self.__ts1 = self.__s1 ts2 = self.__s2 if self.__transform: self.__ts1 = self.__transform.transform(self.__ts1) ts2 = self.__transform.transform(ts2) self.__cnv = 1.0 if self.__ts1 != ts2: self.__cnv = (self.__p2 - self.__p1) / (ts2 - self.__ts1) def transform(self, *args): """ Transform a rectangle from scale to paint coordinates .. py:method:: transform(scalar) :param float scalar: Scalar .. py:method:: transform(xMap, yMap, rect) Transform a rectangle from scale to paint coordinates :param qwt.scale_map.QwtScaleMap xMap: X map :param qwt.scale_map.QwtScaleMap yMap: Y map :param QRectF rect: Rectangle in paint coordinates .. py:method:: transform(xMap, yMap, pos) Transform a point from scale to paint coordinates :param qwt.scale_map.QwtScaleMap xMap: X map :param qwt.scale_map.QwtScaleMap yMap: Y map :param QPointF pos: Position in scale coordinates Scalar: scalemap.transform(scalar) Point (QPointF): scalemap.transform(xMap, yMap, pos) Rectangle (QRectF): scalemap.transform(xMap, yMap, rect) .. seealso:: :py:meth:`invTransform()` """ if len(args) == 1: # Scalar transform return self.transform_scalar(args[0]) elif len(args) == 3 and isinstance(args[2], QPointF): xMap, yMap, pos = args return QPointF(xMap.transform(pos.x()), yMap.transform(pos.y())) elif len(args) == 3 and isinstance(args[2], QRectF): xMap, yMap, rect = args x1 = xMap.transform(rect.left()) x2 = xMap.transform(rect.right()) y1 = yMap.transform(rect.top()) y2 = yMap.transform(rect.bottom()) if x2 < x1: x1, x2 = x2, x1 if y2 < y1: y1, y2 = y2, y1 if qwtFuzzyCompare(x1, 0.0, x2 - x1) == 0: x1 = 0.0 if qwtFuzzyCompare(x2, 0.0, x2 - x1) == 0: x2 = 0.0 if qwtFuzzyCompare(y1, 0.0, y2 - y1) == 0: y1 = 0.0 if qwtFuzzyCompare(y2, 0.0, y2 - y1) == 0: y2 = 0.0 return QRectF(x1, y1, x2 - x1 + 1, y2 - y1 + 1) else: raise TypeError( "%s().transform() takes 1 or 3 argument(s) (%s " "given)" % (self.__class__.__name__, len(args)) ) def invTransform(self, *args): """Transform from paint to scale coordinates Scalar: scalemap.invTransform(scalar) Point (QPointF): scalemap.invTransform(xMap, yMap, pos) Rectangle (QRectF): scalemap.invTransform(xMap, yMap, rect) """ if len(args) == 1: # Scalar transform return self.invTransform_scalar(args[0]) elif isinstance(args[2], QPointF): xMap, yMap, pos = args return QPointF(xMap.invTransform(pos.x()), yMap.invTransform(pos.y())) elif isinstance(args[2], QRectF): xMap, yMap, rect = args x1 = xMap.invTransform(rect.left()) x2 = xMap.invTransform(rect.right() - 1) y1 = yMap.invTransform(rect.top()) y2 = yMap.invTransform(rect.bottom() - 1) r = QRectF(x1, y1, x2 - x1, y2 - y1) return r.normalized() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1655395145.0 PythonQwt-0.10.2/qwt/scale_widget.py0000666000000000000000000006454200000000000014274 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtScaleWidget -------------- .. autoclass:: QwtScaleWidget :members: """ import math from qwt.scale_draw import QwtScaleDraw from qwt.scale_engine import QwtLinearScaleEngine from qwt.color_map import QwtLinearColorMap from qwt.text import QwtText from qwt.painter import QwtPainter from qwt.interval import QwtInterval from qwt.color_map import QwtColorMap from qtpy.QtGui import QPainter, QPalette from qtpy.QtWidgets import QWidget, QSizePolicy, QStyleOption, QStyle, QApplication from qtpy.QtCore import Qt, QRectF, QSize, Signal, QEvent class ColorBar(object): def __init__(self): self.isEnabled = None self.width = None self.interval = QwtInterval() self.colorMap = QwtColorMap() class QwtScaleWidget_PrivateData(object): def __init__(self): self.scaleDraw = None self.borderDist = [None] * 2 self.minBorderDist = [None] * 2 self.scaleLength = None self.margin = None self.titleOffset = None self.spacing = None self.title = QwtText() self.layoutFlags = None self.colorBar = ColorBar() class QwtScaleWidget(QWidget): """ A Widget which contains a scale This Widget can be used to decorate composite widgets with a scale. Layout flags: * `QwtScaleWidget.TitleInverted`: The title of vertical scales is painted from top to bottom. Otherwise it is painted from bottom to top. .. py:class:: QwtScaleWidget([parent=None]) Alignment default is `QwtScaleDraw.LeftScale`. :param parent: Parent widget :type parent: QWidget or None .. py:class:: QwtScaleWidget(align, parent) :noindex: :param int align: Alignment :param QWidget parent: Parent widget """ scaleDivChanged = Signal() # enum LayoutFlag TitleInverted = 1 def __init__(self, *args): self.__data = None align = QwtScaleDraw.LeftScale if len(args) == 0: parent = None elif len(args) == 1: (parent,) = args elif len(args) == 2: align, parent = args else: raise TypeError( "%s() takes 0, 1 or 2 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) super(QwtScaleWidget, self).__init__(parent) self.initScale(align) def initScale(self, align): """ Initialize the scale :param int align: Alignment """ self.__data = QwtScaleWidget_PrivateData() self.__data.layoutFlags = 0 if align == QwtScaleDraw.RightScale: self.__data.layoutFlags |= self.TitleInverted self.__data.borderDist = [0, 0] self.__data.minBorderDist = [0, 0] self.__data.margin = 4 self.__data.titleOffset = 0 self.__data.spacing = 2 self.__data.scaleDraw = QwtScaleDraw() self.__data.scaleDraw.setAlignment(align) self.__data.scaleDraw.setLength(10) self.__data.scaleDraw.setScaleDiv( QwtLinearScaleEngine().divideScale(0.0, 100.0, 10, 5) ) self.__data.colorBar.colorMap = QwtLinearColorMap() self.__data.colorBar.isEnabled = False self.__data.colorBar.width = 10 flags = Qt.AlignmentFlag(Qt.AlignHCenter | Qt.TextExpandTabs | Qt.TextWordWrap) self.__data.title.setRenderFlags(flags) self.__data.title.setFont(self.font()) policy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed) if self.__data.scaleDraw.orientation() == Qt.Vertical: policy.transpose() self.setSizePolicy(policy) self.setAttribute(Qt.WA_WState_OwnSizePolicy, False) def setLayoutFlag(self, flag, on=True): """ Toggle an layout flag :param int flag: Layout flag :param bool on: True/False .. seealso:: :py:meth:`testLayoutFlag()` """ if (self.__data.layoutFlags & flag != 0) != on: if on: self.__data.layoutFlags |= flag else: self.__data.layoutFlags &= ~flag self.update() def testLayoutFlag(self, flag): """ Test a layout flag :param int flag: Layout flag :return: True/False .. seealso:: :py:meth:`setLayoutFlag()` """ return self.__data.layoutFlags & flag def setTitle(self, title): """ Give title new text contents :param title: New title :type title: qwt.text.QwtText or str .. seealso:: :py:meth:`title()` """ if isinstance(title, QwtText): flags = title.renderFlags() & (~int(Qt.AlignTop | Qt.AlignBottom)) title.setRenderFlags(flags) if title != self.__data.title: self.__data.title = title self.layoutScale() else: if self.__data.title.text() != title: self.__data.title.setText(title) self.layoutScale() def setAlignment(self, alignment): """ Change the alignment :param int alignment: New alignment Valid alignment values: see :py:class:`qwt.scale_draw.QwtScaleDraw` .. seealso:: :py:meth:`alignment()` """ if self.__data.scaleDraw: self.__data.scaleDraw.setAlignment(alignment) if not self.testAttribute(Qt.WA_WState_OwnSizePolicy): policy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed) if self.__data.scaleDraw.orientation() == Qt.Vertical: policy.transpose() self.setSizePolicy(policy) self.setAttribute(Qt.WA_WState_OwnSizePolicy, False) self.layoutScale() def alignment(self): """ :return: position .. seealso:: :py:meth:`setAlignment()` """ if not self.scaleDraw(): return QwtScaleDraw.LeftScale return self.scaleDraw().alignment() def setBorderDist(self, dist1, dist2): """ Specify distances of the scale's endpoints from the widget's borders. The actual borders will never be less than minimum border distance. :param int dist1: Left or top Distance :param int dist2: Right or bottom distance .. seealso:: :py:meth:`borderDist()` """ if dist1 != self.__data.borderDist[0] or dist2 != self.__data.borderDist[1]: self.__data.borderDist = [dist1, dist2] self.layoutScale() def setMargin(self, margin): """ Specify the margin to the colorBar/base line. :param int margin: Margin .. seealso:: :py:meth:`margin()` """ margin = max([0, margin]) if margin != self.__data.margin: self.__data.margin = margin self.layoutScale() def setSpacing(self, spacing): """ Specify the distance between color bar, scale and title :param int spacing: Spacing .. seealso:: :py:meth:`spacing()` """ spacing = max([0, spacing]) if spacing != self.__data.spacing: self.__data.spacing = spacing self.layoutScale() def setLabelAlignment(self, alignment): """ Change the alignment for the labels. :param int spacing: Spacing .. seealso:: :py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelAlignment()`, :py:meth:`setLabelRotation()` """ self.__data.scaleDraw.setLabelAlignment(alignment) self.layoutScale() def setLabelRotation(self, rotation): """ Change the rotation for the labels. :param float rotation: Rotation .. seealso:: :py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelRotation()`, :py:meth:`setLabelFlags()` """ self.__data.scaleDraw.setLabelRotation(rotation) self.layoutScale() def setLabelAutoSize(self, state): """ Set the automatic size option for labels (default: on). :param bool state: On/off .. seealso:: :py:meth:`qwt.scale_draw.QwtScaleDraw.setLabelAutoSize()` """ self.__data.scaleDraw.setLabelAutoSize(state) self.layoutScale() def setScaleDraw(self, scaleDraw): """ Set a scale draw scaleDraw has to be created with new and will be deleted in class destructor or the next call of `setScaleDraw()`. scaleDraw will be initialized with the attributes of the previous scaleDraw object. :param qwt.scale_draw.QwtScaleDraw scaleDraw: ScaleDraw object .. seealso:: :py:meth:`scaleDraw()` """ if scaleDraw is None or scaleDraw == self.__data.scaleDraw: return sd = self.__data.scaleDraw if sd is not None: scaleDraw.setAlignment(sd.alignment()) scaleDraw.setScaleDiv(sd.scaleDiv()) transform = None if sd.scaleMap().transformation(): transform = sd.scaleMap().transformation().copy() scaleDraw.setTransformation(transform) self.__data.scaleDraw = scaleDraw self.layoutScale() def scaleDraw(self): """ :return: scaleDraw of this scale .. seealso:: :py:meth:`qwt.scale_draw.QwtScaleDraw.setScaleDraw()` """ return self.__data.scaleDraw def title(self): """ :return: title .. seealso:: :py:meth:`setTitle` """ return self.__data.title def startBorderDist(self): """ :return: start border distance .. seealso:: :py:meth:`setBorderDist` """ return self.__data.borderDist[0] def endBorderDist(self): """ :return: end border distance .. seealso:: :py:meth:`setBorderDist` """ return self.__data.borderDist[1] def margin(self): """ :return: margin .. seealso:: :py:meth:`setMargin` """ return self.__data.margin def spacing(self): """ :return: distance between scale and title .. seealso:: :py:meth:`setSpacing` """ return self.__data.spacing def paintEvent(self, event): painter = QPainter(self) painter.setClipRegion(event.region()) opt = QStyleOption() opt.initFrom(self) self.style().drawPrimitive(QStyle.PE_Widget, opt, painter, self) self.draw(painter) def draw(self, painter): """ Draw the scale :param QPainter painter: Painter """ self.__data.scaleDraw.draw(painter, self.palette()) if ( self.__data.colorBar.isEnabled and self.__data.colorBar.width > 0 and self.__data.colorBar.interval.isValid() ): self.drawColorBar(painter, self.colorBarRect(self.contentsRect())) r = QRectF(self.contentsRect()) if self.__data.scaleDraw.orientation() == Qt.Horizontal: r.setLeft(r.left() + self.__data.borderDist[0]) r.setWidth(r.width() - self.__data.borderDist[1]) else: r.setTop(r.top() + self.__data.borderDist[0]) r.setHeight(r.height() - self.__data.borderDist[1]) if not self.__data.title.isEmpty(): self.drawTitle(painter, self.__data.scaleDraw.alignment(), r) def colorBarRect(self, rect): """ Calculate the the rectangle for the color bar :param QRectF rect: Bounding rectangle for all components of the scale :return: Rectangle for the color bar """ cr = QRectF(rect) if self.__data.scaleDraw.orientation() == Qt.Horizontal: cr.setLeft(cr.left() + self.__data.borderDist[0]) cr.setWidth(cr.width() - self.__data.borderDist[1] + 1) else: cr.setTop(cr.top() + self.__data.borderDist[0]) cr.setHeight(cr.height() - self.__data.borderDist[1] + 1) sda = self.__data.scaleDraw.alignment() if sda == QwtScaleDraw.LeftScale: cr.setLeft(cr.right() - self.__data.margin - self.__data.colorBar.width) cr.setWidth(self.__data.colorBar.width) elif sda == QwtScaleDraw.RightScale: cr.setLeft(cr.left() + self.__data.margin) cr.setWidth(self.__data.colorBar.width) elif sda == QwtScaleDraw.BottomScale: cr.setTop(cr.top() + self.__data.margin) cr.setHeight(self.__data.colorBar.width) elif sda == QwtScaleDraw.TopScale: cr.setTop(cr.bottom() - self.__data.margin - self.__data.colorBar.width) cr.setHeight(self.__data.colorBar.width) return cr def resizeEvent(self, event): self.layoutScale(False) def layoutScale(self, update_geometry=True): """ Recalculate the scale's geometry and layout based on the current geometry and fonts. :param bool update_geometry: Notify the layout system and call update to redraw the scale """ bd0, bd1 = self.getBorderDistHint() if self.__data.borderDist[0] > bd0: bd0 = self.__data.borderDist[0] if self.__data.borderDist[1] > bd1: bd1 = self.__data.borderDist[1] colorBarWidth = 0 if self.__data.colorBar.isEnabled and self.__data.colorBar.interval.isValid(): colorBarWidth = self.__data.colorBar.width + self.__data.spacing r = self.contentsRect() if self.__data.scaleDraw.orientation() == Qt.Vertical: y = r.top() + bd0 length = r.height() - (bd0 + bd1) if self.__data.scaleDraw.alignment() == QwtScaleDraw.LeftScale: x = r.right() - 1.0 - self.__data.margin - colorBarWidth else: x = r.left() + self.__data.margin + colorBarWidth else: x = r.left() + bd0 length = r.width() - (bd0 + bd1) if self.__data.scaleDraw.alignment() == QwtScaleDraw.BottomScale: y = r.top() + self.__data.margin + colorBarWidth else: y = r.bottom() - 1.0 - self.__data.margin - colorBarWidth self.__data.scaleDraw.move(x, y) self.__data.scaleDraw.setLength(length) extent = math.ceil(self.__data.scaleDraw.extent(self.font())) self.__data.titleOffset = ( self.__data.margin + self.__data.spacing + colorBarWidth + extent ) if update_geometry: self.updateGeometry() # The following was removed because it caused a high CPU usage # in guiqwt.ImageWidget. The origin of these lines was an # attempt to transpose PythonQwt from Qwt 6.1.2 to Qwt 6.1.5. # --> Begin of removed lines <-------------------------------------- # # for some reason updateGeometry does not send a LayoutRequest # # event when the parent is not visible and has no layout # widget = self.parentWidget() # if widget and not widget.isVisible() and widget.layout() is None: # if widget.testAttribute(Qt.WA_WState_Polished): # QApplication.postEvent( # self.parentWidget(), QEvent(QEvent.LayoutRequest) # ) # --> End of removed lines <---------------------------------------- self.update() def drawColorBar(self, painter, rect): """ Draw the color bar of the scale widget :param QPainter painter: Painter :param QRectF rect: Bounding rectangle for the color bar .. seealso:: :py:meth:`setColorBarEnabled()` """ if not self.__data.colorBar.interval.isValid(): return sd = self.__data.scaleDraw QwtPainter.drawColorBar( painter, self.__data.colorBar.colorMap, self.__data.colorBar.interval.normalized(), sd.scaleMap(), sd.orientation(), rect, ) def drawTitle(self, painter, align, rect): """ Rotate and paint a title according to its position into a given rectangle. :param QPainter painter: Painter :param int align: Alignment :param QRectF rect: Bounding rectangle """ r = rect flags = self.__data.title.renderFlags() & ( ~int(Qt.AlignTop | Qt.AlignBottom | Qt.AlignVCenter) ) if align == QwtScaleDraw.LeftScale: angle = -90.0 flags |= Qt.AlignTop r.setRect( r.left(), r.bottom(), r.height(), r.width() - self.__data.titleOffset ) elif align == QwtScaleDraw.RightScale: angle = -90.0 flags |= Qt.AlignTop r.setRect( r.left() + self.__data.titleOffset, r.bottom(), r.height(), r.width() - self.__data.titleOffset, ) elif align == QwtScaleDraw.BottomScale: angle = 0.0 flags |= Qt.AlignBottom r.setTop(r.top() + self.__data.titleOffset) else: angle = 0.0 flags |= Qt.AlignTop r.setBottom(r.bottom() - self.__data.titleOffset) if self.__data.layoutFlags & self.TitleInverted: if align in (QwtScaleDraw.LeftScale, QwtScaleDraw.RightScale): angle = -angle r.setRect(r.x() + r.height(), r.y() - r.width(), r.width(), r.height()) painter.save() painter.setFont(self.font()) painter.setPen(self.palette().color(QPalette.Text)) painter.translate(r.x(), r.y()) if angle != 0.0: painter.rotate(angle) title = self.__data.title title.setRenderFlags(flags) title.draw(painter, QRectF(0.0, 0.0, r.width(), r.height())) painter.restore() def scaleChange(self): """ Notify a change of the scale This method can be overloaded by derived classes. The default implementation updates the geometry and repaints the widget. """ self.layoutScale() def sizeHint(self): return self.minimumSizeHint() def minimumSizeHint(self): o = self.__data.scaleDraw.orientation() length = 0 mbd1, mbd2 = self.getBorderDistHint() length += max([0, self.__data.borderDist[0] - mbd1]) length += max([0, self.__data.borderDist[1] - mbd2]) length += self.__data.scaleDraw.minLength(self.font()) dim = self.dimForLength(length, self.font()) if length < dim: length = dim dim = self.dimForLength(length, self.font()) size = QSize(length + 2, dim) if o == Qt.Vertical: size.transpose() if self.layout() is None: left, top, right, bottom = 0, 0, 0, 0 else: left, top, right, bottom = self.layout().getContentsMargins() return size + QSize(left + right, top + bottom) def titleHeightForWidth(self, width): """ Find the height of the title for a given width. :param int width: Width :return: Height """ return math.ceil(self.__data.title.heightForWidth(width, self.font())) def dimForLength(self, length, scaleFont): """ Find the minimum dimension for a given length. dim is the height, length the width seen in direction of the title. :param int length: width for horizontal, height for vertical scales :param QFont scaleFont: Font of the scale :return: height for horizontal, width for vertical scales """ extent = math.ceil(self.__data.scaleDraw.extent(scaleFont)) dim = self.__data.margin + extent + 1 if not self.__data.title.isEmpty(): dim += self.titleHeightForWidth(length) + self.__data.spacing if self.__data.colorBar.isEnabled and self.__data.colorBar.interval.isValid(): dim += self.__data.colorBar.width + self.__data.spacing return dim def getBorderDistHint(self): """ Calculate a hint for the border distances. This member function calculates the distance of the scale's endpoints from the widget borders which is required for the mark labels to fit into the widget. The maximum of this distance an the minimum border distance is returned. :param int start: Return parameter for the border width at the beginning of the scale :param int end: Return parameter for the border width at the end of the scale .. warning:: The minimum border distance depends on the font. .. seealso:: :py:meth:`setMinBorderDist()`, :py:meth:`getMinBorderDist()`, :py:meth:`setBorderDist()` """ start, end = self.__data.scaleDraw.getBorderDistHint(self.font()) if start < self.__data.minBorderDist[0]: start = self.__data.minBorderDist[0] if end < self.__data.minBorderDist[1]: end = self.__data.minBorderDist[1] return start, end def setMinBorderDist(self, start, end): """ Set a minimum value for the distances of the scale's endpoints from the widget borders. This is useful to avoid that the scales are "jumping", when the tick labels or their positions change often. :param int start: Minimum for the start border :param int end: Minimum for the end border .. seealso:: :py:meth:`getMinBorderDist()`, :py:meth:`getBorderDistHint()` """ self.__data.minBorderDist = [start, end] def getMinBorderDist(self): """ Get the minimum value for the distances of the scale's endpoints from the widget borders. :param int start: Return parameter for the border width at the beginning of the scale :param int end: Return parameter for the border width at the end of the scale .. seealso:: :py:meth:`setMinBorderDist()`, :py:meth:`getBorderDistHint()` """ return self.__data.minBorderDist def setScaleDiv(self, scaleDiv): """ Assign a scale division The scale division determines where to set the tick marks. :param qwt.scale_div.QwtScaleDiv scaleDiv: Scale Division .. seealso:: For more information about scale divisions, see :py:class:`qwt.scale_div.QwtScaleDiv`. """ sd = self.__data.scaleDraw if sd.scaleDiv() != scaleDiv: sd.setScaleDiv(scaleDiv) self.layoutScale() self.scaleDivChanged.emit() def setTransformation(self, transformation): """ Set the transformation :param qwt.transform.Transform transformation: Transformation .. seealso:: :py:meth:`qwt.scale_draw.QwtAbstractScaleDraw.scaleDraw()`, :py:class:`qwt.scale_map.QwtScaleMap` """ self.__data.scaleDraw.setTransformation(transformation) self.layoutScale() def setColorBarEnabled(self, on): """ En/disable a color bar associated to the scale :param bool on: On/Off .. seealso:: :py:meth:`isColorBarEnabled()`, :py:meth:`setColorBarWidth()` """ if on != self.__data.colorBar.isEnabled: self.__data.colorBar.isEnabled = on self.layoutScale() def isColorBarEnabled(self): """ :return: True, when the color bar is enabled .. seealso:: :py:meth:`setColorBarEnabled()`, :py:meth:`setColorBarWidth()` """ return self.__data.colorBar.isEnabled def setColorBarWidth(self, width): """ Set the width of the color bar :param int width: Width .. seealso:: :py:meth:`colorBarWidth()`, :py:meth:`setColorBarEnabled()` """ if width != self.__data.colorBar.width: self.__data.colorBar.width = width if self.isColorBarEnabled(): self.layoutScale() def colorBarWidth(self): """ :return: Width of the color bar .. seealso:: :py:meth:`setColorBarWidth()`, :py:meth:`setColorBarEnabled()` """ return self.__data.colorBar.width def colorBarInterval(self): """ :return: Value interval for the color bar .. seealso:: :py:meth:`setColorMap()`, :py:meth:`colorMap()` """ return self.__data.colorBar.interval def setColorMap(self, interval, colorMap): """ Set the color map and value interval, that are used for displaying the color bar. :param qwt.interval.QwtInterval interval: Value interval :param qwt.color_map.QwtColorMap colorMap: Color map .. seealso:: :py:meth:`colorMap()`, :py:meth:`colorBarInterval()` """ self.__data.colorBar.interval = interval if colorMap != self.__data.colorBar.colorMap: self.__data.colorBar.colorMap = colorMap if self.isColorBarEnabled(): self.layoutScale() def colorMap(self): """ :return: Color map .. seealso:: :py:meth:`setColorMap()`, :py:meth:`colorBarInterval()` """ return self.__data.colorBar.colorMap ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641729245.0 PythonQwt-0.10.2/qwt/symbol.py0000666000000000000000000012070100000000000013135 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ QwtSymbol --------- .. autoclass:: QwtSymbol :members: """ import math from qwt.graphic import QwtGraphic from qwt.painter import QwtPainter from qtpy.QtGui import ( QPainter, QTransform, QPixmap, QPen, QPolygonF, QPainterPath, QBrush, ) from qtpy.QtCore import QSize, QRect, QPointF, QRectF, QSizeF, Qt, QPoint, QLineF from qtpy.QtSvg import QSvgRenderer class QwtTriangle(object): # enum Type Left, Right, Up, Down = list(range(4)) def qwtPathGraphic(path, pen, brush): graphic = QwtGraphic() graphic.setRenderHint(QwtGraphic.RenderPensUnscaled) painter = QPainter(graphic) painter.setPen(pen) painter.setBrush(brush) painter.drawPath(path) painter.end() return graphic def qwtScaleBoundingRect(graphic, size): scaledSize = QSize(size) if scaledSize.isEmpty(): scaledSize = graphic.defaultSize() sz = graphic.controlPointRect().size() sx = 1.0 if sz.width() > 0.0: sx = scaledSize.width() / sz.width() sy = 1.0 if sz.height() > 0.0: sy = scaledSize.height() / sz.height() return graphic.scaledBoundingRect(sx, sy) def qwtDrawPixmapSymbols(painter, points, numPoints, symbol): size = symbol.size() if size.isEmpty(): size = symbol.pixmap().size() transform = QTransform(painter.transform()) if transform.isScaling(): r = QRect(0, 0, size.width(), size.height()) size = transform.mapRect(r).size() pm = QPixmap(symbol.pixmap()) if pm.size() != size: pm = pm.scaled(size) pinPoint = QPointF(0.5 * size.width(), 0.5 * size.height()) if symbol.isPinPointEnabled(): pinPoint = symbol.pinPoint() painter.resetTransform() for pos in points: pos = QPointF(transform.map(pos)) - pinPoint QwtPainter.drawPixmap(painter, QRect(pos.toPoint(), pm.size()), pm) def qwtDrawSvgSymbols(painter, points, numPoints, renderer, symbol): if renderer is None or not renderer.isValid(): return viewBox = QRectF(renderer.viewBoxF()) if viewBox.isEmpty(): return sz = QSizeF(symbol.size()) if not sz.isValid(): sz = viewBox.size() sx = sz.width() / viewBox.width() sy = sz.height() / viewBox.height() pinPoint = QPointF(viewBox.center()) if symbol.isPinPointEnabled(): pinPoint = symbol.pinPoint() dx = sx * (pinPoint.x() - viewBox.left()) dy = sy * (pinPoint.y() - viewBox.top()) for pos in points: x = pos.x() - dx y = pos.y() - dy renderer.render(painter, QRectF(x, y, sz.width(), sz.height())) def qwtDrawGraphicSymbols(painter, points, numPoint, graphic, symbol): pointRect = QRectF(graphic.controlPointRect()) if pointRect.isEmpty(): return sx = 1.0 sy = 1.0 sz = symbol.size() if sz.isValid(): sx = sz.width() / pointRect.width() sy = sz.height() / pointRect.height() pinPoint = QPointF(pointRect.center()) if symbol.isPinPointEnabled(): pinPoint = symbol.pinPoint() transform = QTransform(painter.transform()) for pos in points: tr = QTransform(transform) tr.translate(pos.x(), pos.y()) tr.scale(sx, sy) tr.translate(-pinPoint.x(), -pinPoint.y()) painter.setTransform(tr) graphic.render(painter) painter.setTransform(transform) def qwtDrawEllipseSymbols(painter, points, numPoints, symbol): painter.setBrush(symbol.brush()) painter.setPen(symbol.pen()) size = symbol.size() sw = size.width() sh = size.height() sw2 = 0.5 * size.width() sh2 = 0.5 * size.height() for pos in points: x = pos.x() y = pos.y() r = QRectF(x - sw2, y - sh2, sw, sh) painter.drawEllipse(r) def qwtDrawRectSymbols(painter, points, numPoints, symbol): size = symbol.size() pen = QPen(symbol.pen()) pen.setJoinStyle(Qt.MiterJoin) painter.setPen(pen) painter.setBrush(symbol.brush()) painter.setRenderHint(QPainter.Antialiasing, False) sw = size.width() sh = size.height() sw2 = 0.5 * size.width() sh2 = 0.5 * size.height() for pos in points: x = pos.x() y = pos.y() r = QRectF(x - sw2, y - sh2, sw, sh) painter.drawRect(r) def qwtDrawDiamondSymbols(painter, points, numPoints, symbol): size = symbol.size() pen = QPen(symbol.pen()) pen.setJoinStyle(Qt.MiterJoin) painter.setPen(pen) painter.setBrush(symbol.brush()) for pos in points: x1 = pos.x() - 0.5 * size.width() y1 = pos.y() - 0.5 * size.height() x2 = x1 + size.width() y2 = y1 + size.height() polygon = QPolygonF() polygon.append(QPointF(pos.x(), y1)) polygon.append(QPointF(x1, pos.y())) polygon.append(QPointF(pos.x(), y2)) polygon.append(QPointF(x2, pos.y())) painter.drawPolygon(polygon) def qwtDrawTriangleSymbols(painter, type, points, numPoint, symbol): size = symbol.size() pen = QPen(symbol.pen()) pen.setJoinStyle(Qt.MiterJoin) painter.setPen(pen) painter.setBrush(symbol.brush()) sw2 = 0.5 * size.width() sh2 = 0.5 * size.height() for pos in points: x = pos.x() y = pos.y() x1 = x - sw2 x2 = x1 + size.width() y1 = y - sh2 y2 = y1 + size.height() if type == QwtTriangle.Left: triangle = [QPointF(x2, y1), QPointF(x1, y), QPointF(x2, y2)] elif type == QwtTriangle.Right: triangle = [QPointF(x1, y1), QPointF(x2, y), QPointF(x1, y2)] elif type == QwtTriangle.Up: triangle = [QPointF(x1, y2), QPointF(x, y1), QPointF(x2, y2)] elif type == QwtTriangle.Down: triangle = [QPointF(x1, y1), QPointF(x, y2), QPointF(x2, y1)] else: raise TypeError("Unknown triangle type %s" % type) painter.drawPolygon(QPolygonF(triangle)) def qwtDrawLineSymbols(painter, orientations, points, numPoints, symbol): size = symbol.size() pen = QPen(symbol.pen()) if pen.width() > 1: pen.setCapStyle(Qt.FlatCap) painter.setPen(pen) painter.setRenderHint(QPainter.Antialiasing, False) sw = size.width() sh = size.height() sw2 = 0.5 * size.width() sh2 = 0.5 * size.height() for pos in points: if orientations & Qt.Horizontal: x = round(pos.x()) - sw2 y = round(pos.y()) painter.drawLine(QLineF(x, y, x + sw, y)) if orientations & Qt.Vertical: x = round(pos.x()) y = round(pos.y()) - sh2 painter.drawLine(QLineF(x, y, x, y + sh)) def qwtDrawXCrossSymbols(painter, points, numPoints, symbol): size = symbol.size() pen = QPen(symbol.pen()) if pen.width() > 1: pen.setCapStyle(Qt.FlatCap) painter.setPen(pen) sw = size.width() sh = size.height() sw2 = 0.5 * size.width() sh2 = 0.5 * size.height() for pos in points: x1 = pos.x() - sw2 x2 = x1 + sw y1 = pos.y() - sh2 y2 = y1 + sh painter.drawLine(QLineF(x1, y1, x2, y2)) painter.drawLine(QLineF(x2, y1, x1, y2)) def qwtDrawStar1Symbols(painter, points, numPoints, symbol): size = symbol.size() painter.setPen(symbol.pen()) sqrt1_2 = math.sqrt(0.5) r = QRectF(0, 0, size.width(), size.height()) for pos in points: r.moveCenter(pos.toPoint()) c = QPointF(r.center()) d1 = r.width() / 2.0 * (1.0 - sqrt1_2) painter.drawLine( QLineF(r.left() + d1, r.top() + d1, r.right() - d1, r.bottom() - d1) ) painter.drawLine( QLineF(r.left() + d1, r.bottom() - d1, r.right() - d1, r.top() + d1) ) painter.drawLine(QLineF(c.x(), r.top(), c.x(), r.bottom())) painter.drawLine(QLineF(r.left(), c.y(), r.right(), c.y())) def qwtDrawStar2Symbols(painter, points, numPoints, symbol): pen = QPen(symbol.pen()) if pen.width() > 1: pen.setCapStyle(Qt.FlatCap) pen.setJoinStyle(Qt.MiterJoin) painter.setPen(pen) painter.setBrush(symbol.brush()) cos30 = math.cos(30 * math.pi / 180.0) dy = 0.25 * symbol.size().height() dx = 0.5 * symbol.size().width() * cos30 / 3.0 for pos in points: x = pos.x() y = pos.y() x1 = x - 3 * dx y1 = y - 2 * dy x2 = x1 + 1 * dx x3 = x1 + 2 * dx x4 = x1 + 3 * dx x5 = x1 + 4 * dx x6 = x1 + 5 * dx x7 = x1 + 6 * dx y2 = y1 + 1 * dy y3 = y1 + 2 * dy y4 = y1 + 3 * dy y5 = y1 + 4 * dy star = [ QPointF(x4, y1), QPointF(x5, y2), QPointF(x7, y2), QPointF(x6, y3), QPointF(x7, y4), QPointF(x5, y4), QPointF(x4, y5), QPointF(x3, y4), QPointF(x1, y4), QPointF(x2, y3), QPointF(x1, y2), QPointF(x3, y2), ] painter.drawPolygon(QPolygonF(star)) def qwtDrawHexagonSymbols(painter, points, numPoints, symbol): painter.setBrush(symbol.brush()) painter.setPen(symbol.pen()) cos30 = math.cos(30 * math.pi / 180.0) dx = 0.5 * (symbol.size().width() - cos30) dy = 0.25 * symbol.size().height() for pos in points: x = pos.x() y = pos.y() x1 = x - dx y1 = y - 2 * dy x2 = x1 + 1 * dx x3 = x1 + 2 * dx y2 = y1 + 1 * dy y3 = y1 + 3 * dy y4 = y1 + 4 * dy hexa = [ QPointF(x2, y1), QPointF(x3, y2), QPointF(x3, y3), QPointF(x2, y4), QPointF(x1, y3), QPointF(x1, y2), ] painter.drawPolygon(QPolygonF(hexa)) class QwtSymbol_PrivateData(object): def __init__(self, st, br, pn, sz): self.style = st self.size = sz self.brush = br self.pen = pn self.isPinPointEnabled = False self.pinPoint = QPointF() class Path(object): def __init__(self): self.path = QPainterPath() self.graphic = QwtGraphic() self.path = Path() class Pixmap(object): def __init__(self): self.pixmap = QPixmap() self.pixmap = None # Pixmap() class Graphic(object): def __init__(self): self.graphic = QwtGraphic() self.graphic = Graphic() class SVG(object): def __init__(self): self.renderer = QSvgRenderer() self.svg = SVG() class PaintCache(object): def __init__(self): self.policy = 0 self.pixmap = None # QPixmap() self.cache = PaintCache() class QwtSymbol(object): """ A class for drawing symbols Symbol styles: * `QwtSymbol.NoSymbol`: No Style. The symbol cannot be drawn. * `QwtSymbol.Ellipse`: Ellipse or circle * `QwtSymbol.Rect`: Rectangle * `QwtSymbol.Diamond`: Diamond * `QwtSymbol.Triangle`: Triangle pointing upwards * `QwtSymbol.DTriangle`: Triangle pointing downwards * `QwtSymbol.UTriangle`: Triangle pointing upwards * `QwtSymbol.LTriangle`: Triangle pointing left * `QwtSymbol.RTriangle`: Triangle pointing right * `QwtSymbol.Cross`: Cross (+) * `QwtSymbol.XCross`: Diagonal cross (X) * `QwtSymbol.HLine`: Horizontal line * `QwtSymbol.VLine`: Vertical line * `QwtSymbol.Star1`: X combined with + * `QwtSymbol.Star2`: Six-pointed star * `QwtSymbol.Hexagon`: Hexagon * `QwtSymbol.Path`: The symbol is represented by a painter path, where the origin (0, 0) of the path coordinate system is mapped to the position of the symbol ..seealso:: :py:meth:`setPath()`, :py:meth:`path()` * `QwtSymbol.Pixmap`: The symbol is represented by a pixmap. The pixmap is centered or aligned to its pin point. ..seealso:: :py:meth:`setPinPoint()` * `QwtSymbol.Graphic`: The symbol is represented by a graphic. The graphic is centered or aligned to its pin point. ..seealso:: :py:meth:`setPinPoint()` * `QwtSymbol.SvgDocument`: The symbol is represented by a SVG graphic. The graphic is centered or aligned to its pin point. ..seealso:: :py:meth:`setPinPoint()` * `QwtSymbol.UserStyle`: Styles >= `QwtSymbol.UserStyle` are reserved for derived classes of `QwtSymbol` that overload `drawSymbols()` with additional application specific symbol types. Cache policies: Depending on the render engine and the complexity of the symbol shape it might be faster to render the symbol to a pixmap and to paint this pixmap. F.e. the raster paint engine is a pure software renderer where in cache mode a draw operation usually ends in raster operation with the the backing store, that are usually faster, than the algorithms for rendering polygons. But the opposite can be expected for graphic pipelines that can make use of hardware acceleration. The default setting is AutoCache ..seealso:: :py:meth:`setCachePolicy()`, :py:meth:`cachePolicy()` .. note:: The policy has no effect, when the symbol is painted to a vector graphics format (PDF, SVG). .. warning:: Since Qt 4.8 raster is the default backend on X11 Valid cache policies: * `QwtSymbol.NoCache`: Don't use a pixmap cache * `QwtSymbol.Cache`: Always use a pixmap cache * `QwtSymbol.AutoCache`: Use a cache when the symbol is rendered with the software renderer (`QPaintEngine.Raster`) .. py:class:: QwtSymbol([style=QwtSymbol.NoSymbol]) The symbol is constructed with gray interior, black outline with zero width, no size and style 'NoSymbol'. :param int style: Symbol Style .. py:class:: QwtSymbol(style, brush, pen, size) :noindex: :param int style: Symbol Style :param QBrush brush: Brush to fill the interior :param QPen pen: Outline pen :param QSize size: Size .. py:class:: QwtSymbol(path, brush, pen) :noindex: :param QPainterPath path: Painter path :param QBrush brush: Brush to fill the interior :param QPen pen: Outline pen .. seealso:: :py:meth:`setPath()`, :py:meth:`setBrush()`, :py:meth:`setPen()`, :py:meth:`setSize()` """ # enum Style Style = int NoSymbol = -1 ( Ellipse, Rect, Diamond, Triangle, DTriangle, UTriangle, LTriangle, RTriangle, Cross, XCross, HLine, VLine, Star1, Star2, Hexagon, Path, Pixmap, Graphic, SvgDocument, ) = list(range(19)) UserStyle = 1000 # enum CachePolicy NoCache, Cache, AutoCache = list(range(3)) def __init__(self, *args): if len(args) in (0, 1): if args: (style,) = args else: style = QwtSymbol.NoSymbol self.__data = QwtSymbol_PrivateData( style, QBrush(Qt.gray), QPen(Qt.black, 0), QSize() ) elif len(args) == 4: style, brush, pen, size = args self.__data = QwtSymbol_PrivateData(style, brush, pen, size) elif len(args) == 3: path, brush, pen = args self.__data = QwtSymbol_PrivateData(QwtSymbol.Path, brush, pen, QSize()) self.setPath(path) else: raise TypeError( "%s() takes 1, 3, or 4 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) @classmethod def make( cls, style=None, brush=None, pen=None, size=None, path=None, pixmap=None, graphic=None, svgdocument=None, pinpoint=None, ): """ Create and setup a new `QwtSymbol` object (convenience function). :param style: Symbol Style :type style: int or None :param brush: Brush to fill the interior :type brush: QBrush or None :param pen: Outline pen :type pen: QPen or None :param size: Size :type size: QSize or None :param path: Painter path :type path: QPainterPath or None :param path: Painter path :type path: QPainterPath or None :param pixmap: Pixmap as symbol :type pixmap: QPixmap or None :param graphic: Graphic :type graphic: qwt.graphic.QwtGraphic or None :param svgdocument: SVG icon as symbol .. seealso:: :py:meth:`setPixmap()`, :py:meth:`setGraphic()`, :py:meth:`setPath()` """ style = QwtSymbol.NoSymbol if style is None else style brush = QBrush(Qt.gray) if brush is None else QBrush(brush) pen = QPen(Qt.black, 0) if pen is None else QPen(pen) size = QSize() if size is None else size if not isinstance(size, QSize): if isinstance(size, tuple) and len(size) == 2: size = QSize(size[0], size[1]) else: raise TypeError("Invalid size %r" % size) item = cls(style, brush, pen, size) if path is not None: item.setPath(path) elif pixmap is not None: item.setPixmap(pixmap) elif graphic is not None: item.setGraphic(graphic) elif svgdocument is not None: item.setSvgDocument(svgdocument) if pinpoint is not None: item.setPinPoint(pinpoint) return item def setCachePolicy(self, policy): """ Change the cache policy The default policy is AutoCache :param int policy: Cache policy .. seealso:: :py:meth:`cachePolicy()` """ if self.__data.cache.policy != policy: self.__data.cache.policy = policy self.invalidateCache() def cachePolicy(self): """ :return: Cache policy .. seealso:: :py:meth:`setCachePolicy()` """ return self.__data.cache.policy def setPath(self, path): """ Set a painter path as symbol The symbol is represented by a painter path, where the origin (0, 0) of the path coordinate system is mapped to the position of the symbol. When the symbol has valid size the painter path gets scaled to fit into the size. Otherwise the symbol size depends on the bounding rectangle of the path. The following code defines a symbol drawing an arrow:: from qtpy.QtGui import QApplication, QPen, QPainterPath, QTransform from qtpy.QtCore import Qt, QPointF from qwt import QwtPlot, QwtPlotCurve, QwtSymbol import numpy as np app = QApplication([]) # --- Construct custom symbol --- path = QPainterPath() path.moveTo(0, 8) path.lineTo(0, 5) path.lineTo(-3, 5) path.lineTo(0, 0) path.lineTo(3, 5) path.lineTo(0, 5) transform = QTransform() transform.rotate(-30.0) path = transform.map(path) pen = QPen(Qt.black, 2 ); pen.setJoinStyle(Qt.MiterJoin) symbol = QwtSymbol() symbol.setPen(pen) symbol.setBrush(Qt.red) symbol.setPath(path) symbol.setPinPoint(QPointF(0., 0.)) symbol.setSize(10, 14) # --- Test it within a simple plot --- curve = QwtPlotCurve() curve_pen = QPen(Qt.blue) curve_pen.setStyle(Qt.DotLine) curve.setPen(curve_pen) curve.setSymbol(symbol) x = np.linspace(0, 10, 10) curve.setData(x, np.sin(x)) plot = QwtPlot() curve.attach(plot) plot.resize(600, 300) plot.replot() plot.show() app.exec_() .. image:: /images/symbol_path_example.png :param QPainterPath path: Painter path .. seealso:: :py:meth:`path()`, :py:meth:`setSize()` """ self.__data.style = QwtSymbol.Path self.__data.path.path = path self.__data.path.graphic.reset() def path(self): """ :return: Painter path for displaying the symbol .. seealso:: :py:meth:`setPath()` """ return self.__data.path.path def setPixmap(self, pixmap): """ Set a pixmap as symbol :param QPixmap pixmap: Pixmap .. seealso:: :py:meth:`pixmap()`, :py:meth:`setGraphic()` .. note:: The `style()` is set to `QwtSymbol.Pixmap` .. note:: `brush()` and `pen()` have no effect """ self.__data.style = QwtSymbol.Pixmap self.__data.pixmap.pixmap = pixmap def pixmap(self): """ :return: Assigned pixmap .. seealso:: :py:meth:`setPixmap()` """ return self.__data.pixmap.pixmap def setGraphic(self, graphic): """ Set a graphic as symbol :param qwt.graphic.QwtGraphic graphic: Graphic .. seealso:: :py:meth:`graphic()`, :py:meth:`setPixmap()` .. note:: The `style()` is set to `QwtSymbol.Graphic` .. note:: `brush()` and `pen()` have no effect """ self.__data.style = QwtSymbol.Graphic self.__data.graphic.graphic = graphic def graphic(self): """ :return: Assigned graphic .. seealso:: :py:meth:`setGraphic()` """ return self.__data.graphic.graphic def setSvgDocument(self, svgDocument): """ Set a SVG icon as symbol :param svgDocument: SVG icon .. seealso:: :py:meth:`setGraphic()`, :py:meth:`setPixmap()` .. note:: The `style()` is set to `QwtSymbol.SvgDocument` .. note:: `brush()` and `pen()` have no effect """ self.__data.style = QwtSymbol.SvgDocument if self.__data.svg.renderer is None: self.__data.svg.renderer = QSvgRenderer() self.__data.svg.renderer.load(svgDocument) def setSize(self, *args): """ Specify the symbol's size .. py:method:: setSize(width, [height=-1]) :noindex: :param int width: Width :param int height: Height .. py:method:: setSize(size) :noindex: :param QSize size: Size .. seealso:: :py:meth:`size()` """ if len(args) == 2: width, height = args if width >= 0 and height < 0: height = width self.setSize(QSize(width, height)) elif len(args) == 1: if isinstance(args[0], QSize): (size,) = args if size.isValid() and size != self.__data.size: self.__data.size = size self.invalidateCache() else: (width,) = args self.setSize(width, -1) else: raise TypeError( "%s().setSize() takes 1 or 2 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def size(self): """ :return: Size .. seealso:: :py:meth:`setSize()` """ return self.__data.size def setBrush(self, brush): """ Assign a brush The brush is used to draw the interior of the symbol. :param QBrush brush: Brush .. seealso:: :py:meth:`brush()` """ if brush != self.__data.brush: self.__data.brush = brush self.invalidateCache() if self.__data.style == QwtSymbol.Path: self.__data.path.graphic.reset() def brush(self): """ :return: Brush .. seealso:: :py:meth:`setBrush()` """ return self.__data.brush def setPen(self, *args): """ Build and/or assign a pen, depending on the arguments. .. py:method:: setPen(color, width, style) :noindex: Build and assign a pen In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic (see `QPen.isCosmetic()`). This method signature has been introduced to hide this incompatibility. :param QColor color: Pen color :param float width: Pen width :param Qt.PenStyle style: Pen style .. py:method:: setPen(pen) :noindex: Assign a pen :param QPen pen: New pen .. seealso:: :py:meth:`pen()`, :py:meth:`brush()` """ if len(args) == 3: color, width, style = args self.setPen(QPen(color, width, style)) elif len(args) == 1: (pen,) = args if pen != self.__data.pen: self.__data.pen = pen self.invalidateCache() if self.__data.style == QwtSymbol.Path: self.__data.path.graphic.reset() else: raise TypeError( "%s().setPen() takes 1 or 3 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) def pen(self): """ :return: Pen .. seealso:: :py:meth:`setPen()`, :py:meth:`brush()` """ return self.__data.pen def setColor(self, color): """ Set the color of the symbol Change the color of the brush for symbol types with a filled area. For all other symbol types the color will be assigned to the pen. :param QColor color: Color .. seealso:: :py:meth:`setPen()`, :py:meth:`setBrush()`, :py:meth:`brush()`, :py:meth:`pen()` """ if self.__data.style in ( QwtSymbol.Ellipse, QwtSymbol.Rect, QwtSymbol.Diamond, QwtSymbol.Triangle, QwtSymbol.UTriangle, QwtSymbol.DTriangle, QwtSymbol.RTriangle, QwtSymbol.LTriangle, QwtSymbol.Star2, QwtSymbol.Hexagon, ): if self.__data.brush.color() != color: self.__data.brush.setColor(color) self.invalidateCache() elif self.__data.style in ( QwtSymbol.Cross, QwtSymbol.XCross, QwtSymbol.HLine, QwtSymbol.VLine, QwtSymbol.Star1, ): if self.__data.pen.color() != color: self.__data.pen.setColor(color) self.invalidateCache() else: if self.__data.brush.color() != color or self.__data.pen.color() != color: self.invalidateCache() self.__data.brush.setColor(color) self.__data.pen.setColor(color) def setPinPoint(self, pos, enable=True): """ Set and enable a pin point The position of a complex symbol is not always aligned to its center ( f.e an arrow, where the peak points to a position ). The pin point defines the position inside of a Pixmap, Graphic, SvgDocument or PainterPath symbol where the represented point has to be aligned to. :param QPointF pos: Position :enable bool enable: En/Disable the pin point alignment .. seealso:: :py:meth:`pinPoint()`, :py:meth:`setPinPointEnabled()` """ if self.__data.pinPoint != pos: self.__data.pinPoint = pos if self.__data.isPinPointEnabled: self.invalidateCache() self.setPinPointEnabled(enable) def pinPoint(self): """ :return: Pin point .. seealso:: :py:meth:`setPinPoint()`, :py:meth:`setPinPointEnabled()` """ return self.__data.pinPoint def setPinPointEnabled(self, on): """ En/Disable the pin point alignment :param bool on: Enabled, when on is true .. seealso:: :py:meth:`setPinPoint()`, :py:meth:`isPinPointEnabled()` """ if self.__data.isPinPointEnabled != on: self.__data.isPinPointEnabled = on self.invalidateCache() def isPinPointEnabled(self): """ :return: True, when the pin point translation is enabled .. seealso:: :py:meth:`setPinPoint()`, :py:meth:`setPinPointEnabled()` """ return self.__data.isPinPointEnabled def drawSymbols(self, painter, points, numPoints=None): """ Render an array of symbols Painting several symbols is more effective than drawing symbols one by one, as a couple of layout calculations and setting of pen/brush can be done once for the complete array. :param QPainter painter: Painter :param QPolygonF points: Positions of the symbols in screen coordinates """ # TODO: remove argument numPoints (not necessary in `PythonQwt`) if numPoints is not None and numPoints <= 0: return painter.save() self.renderSymbols(painter, points, numPoints) painter.restore() def drawSymbol(self, painter, point_or_rect): """ Draw the symbol into a rectangle The symbol is painted centered and scaled into the target rectangle. It is always painted uncached and the pin point is ignored. This method is primarily intended for drawing a symbol to the legend. :param QPainter painter: Painter :param point_or_rect: Position or target rectangle of the symbol in screen coordinates :type point_or_rect: QPointF or QPoint or QRectF """ if isinstance(point_or_rect, (QPointF, QPoint)): # drawSymbol( QPainter *, const QPointF & ) self.drawSymbols(painter, [point_or_rect]) return # drawSymbol( QPainter *, const QRectF & ) rect = point_or_rect assert isinstance(rect, QRectF) if self.__data.style == QwtSymbol.NoSymbol: return if self.__data.style == QwtSymbol.Graphic: self.__data.graphic.graphic.render(painter, rect, Qt.KeepAspectRatio) elif self.__data.style == QwtSymbol.Path: if self.__data.path.graphic.isNull(): self.__data.path.graphic = qwtPathGraphic( self.__data.path.path, self.__data.pen, self.__data.brush ) self.__data.path.graphic.render(painter, rect, Qt.KeepAspectRatio) return elif self.__data.style == QwtSymbol.SvgDocument: if self.__data.svg.renderer is not None: scaledRect = QRectF() sz = QSizeF(self.__data.svg.renderer.viewBoxF().size()) if not sz.isEmpty(): sz.scale(rect.size(), Qt.KeepAspectRatio) scaledRect.setSize(sz) scaledRect.moveCenter(rect.center()) else: scaledRect = rect self.__data.svg.renderer.render(painter, scaledRect) else: br = QRect(self.boundingRect()) ratio = min([rect.width() / br.width(), rect.height() / br.height()]) painter.save() painter.translate(rect.center()) painter.scale(ratio, ratio) isPinPointEnabled = self.__data.isPinPointEnabled self.__data.isPinPointEnabled = False pos = QPointF() self.renderSymbols(painter, pos, 1) self.__data.isPinPointEnabled = isPinPointEnabled painter.restore() def renderSymbols(self, painter, points, numPoints=None): """ Render the symbol to series of points :param QPainter painter: Painter :param point_or_rect: Positions of the symbols """ # TODO: remove argument numPoints (not necessary in `PythonQwt`) try: assert numPoints is None except AssertionError: raise RuntimeError( "argument numPoints is not implemented " "in `PythonQwt`" ) if self.__data.style == QwtSymbol.Ellipse: qwtDrawEllipseSymbols(painter, points, numPoints, self) elif self.__data.style == QwtSymbol.Rect: qwtDrawRectSymbols(painter, points, numPoints, self) elif self.__data.style == QwtSymbol.Diamond: qwtDrawDiamondSymbols(painter, points, numPoints, self) elif self.__data.style == QwtSymbol.Cross: qwtDrawLineSymbols( painter, Qt.Horizontal | Qt.Vertical, points, numPoints, self ) elif self.__data.style == QwtSymbol.XCross: qwtDrawXCrossSymbols(painter, points, numPoints, self) elif self.__data.style in (QwtSymbol.Triangle, QwtSymbol.UTriangle): qwtDrawTriangleSymbols(painter, QwtTriangle.Up, points, numPoints, self) elif self.__data.style == QwtSymbol.DTriangle: qwtDrawTriangleSymbols(painter, QwtTriangle.Down, points, numPoints, self) elif self.__data.style == QwtSymbol.RTriangle: qwtDrawTriangleSymbols(painter, QwtTriangle.Right, points, numPoints, self) elif self.__data.style == QwtSymbol.LTriangle: qwtDrawTriangleSymbols(painter, QwtTriangle.Left, points, numPoints, self) elif self.__data.style == QwtSymbol.HLine: qwtDrawLineSymbols(painter, Qt.Horizontal, points, numPoints, self) elif self.__data.style == QwtSymbol.VLine: qwtDrawLineSymbols(painter, Qt.Vertical, points, numPoints, self) elif self.__data.style == QwtSymbol.Star1: qwtDrawStar1Symbols(painter, points, numPoints, self) elif self.__data.style == QwtSymbol.Star2: qwtDrawStar2Symbols(painter, points, numPoints, self) elif self.__data.style == QwtSymbol.Hexagon: qwtDrawHexagonSymbols(painter, points, numPoints, self) elif self.__data.style == QwtSymbol.Path: if self.__data.path.graphic.isNull(): self.__data.path.graphic = qwtPathGraphic( self.__data.path.path, self.__data.pen, self.__data.brush ) qwtDrawGraphicSymbols( painter, points, numPoints, self.__data.path.graphic, self ) elif self.__data.style == QwtSymbol.Pixmap: qwtDrawPixmapSymbols(painter, points, numPoints, self) elif self.__data.style == QwtSymbol.Graphic: qwtDrawGraphicSymbols( painter, points, numPoints, self.__data.graphic.graphic, self ) elif self.__data.style == QwtSymbol.SvgDocument: qwtDrawSvgSymbols( painter, points, numPoints, self.__data.svg.renderer, self ) def boundingRect(self): """ Calculate the bounding rectangle for a symbol at position (0,0). :return: Bounding rectangle """ rect = QRectF() pinPointTranslation = False if self.__data.style in (QwtSymbol.Ellipse, QwtSymbol.Rect, QwtSymbol.Hexagon): pw = 0.0 if self.__data.pen.style() != Qt.NoPen: pw = max([self.__data.pen.widthF(), 1.0]) rect.setSize(QSizeF(self.__data.size) + QSizeF(pw, pw)) rect.moveCenter(QPointF(0.0, 0.0)) elif self.__data.style in ( QwtSymbol.XCross, QwtSymbol.Diamond, QwtSymbol.Triangle, QwtSymbol.UTriangle, QwtSymbol.DTriangle, QwtSymbol.RTriangle, QwtSymbol.LTriangle, QwtSymbol.Star1, QwtSymbol.Star2, ): pw = 0.0 if self.__data.pen.style() != Qt.NoPen: pw = max([self.__data.pen.widthF(), 1.0]) rect.setSize(QSizeF(self.__data.size) + QSizeF(2 * pw, 2 * pw)) rect.moveCenter(QPointF(0.0, 0.0)) elif self.__data.style == QwtSymbol.Path: if self.__data.path.graphic.isNull(): self.__data.path.graphic = qwtPathGraphic( self.__data.path.path, self.__data.pen, self.__data.brush ) rect = qwtScaleBoundingRect(self.__data.path.graphic, self.__data.size) pinPointTranslation = True elif self.__data.style == QwtSymbol.Pixmap: if self.__data.size.isEmpty(): rect.setSize(self.__data.pixmap.pixmap.size()) else: rect.setSize(self.__data.size) pinPointTranslation = True elif self.__data.style == QwtSymbol.Graphic: rect = qwtScaleBoundingRect(self.__data.graphic.graphic, self.__data.size) pinPointTranslation = True elif self.__data.style == QwtSymbol.SvgDocument: if self.__data.svg.renderer is not None: rect = self.__data.svg.renderer.viewBoxF() if self.__data.size.isValid() and not rect.isEmpty(): sz = QSizeF(rect.size()) sx = self.__data.size.width() / sz.width() sy = self.__data.size.height() / sz.height() transform = QTransform() transform.scale(sx, sy) rect = transform.mapRect(rect) pinPointTranslation = True else: rect.setSize(self.__data.size) rect.moveCenter(QPointF(0.0, 0.0)) if pinPointTranslation: pinPoint = QPointF(0.0, 0.0) if self.__data.isPinPointEnabled: pinPoint = rect.center() - self.__data.pinPoint rect.moveCenter(pinPoint) r = QRect() r.setLeft(math.floor(rect.left())) r.setTop(math.floor(rect.top())) r.setRight(math.floor(rect.right())) r.setBottom(math.floor(rect.bottom())) if self.__data.style != QwtSymbol.Pixmap: r.adjust(-1, -1, 1, 1) return r def invalidateCache(self): """ Invalidate the cached symbol pixmap The symbol invalidates its cache, whenever an attribute is changed that has an effect ob how to display a symbol. In case of derived classes with individual styles (>= `QwtSymbol.UserStyle`) it might be necessary to call invalidateCache() for attributes that are relevant for this style. .. seealso:: :py:meth:`setCachePolicy()`, :py:meth:`drawSymbols()` """ if self.__data.cache.pixmap is not None: self.__data.cache.pixmap = QPixmap() def setStyle(self, style): """ Specify the symbol style :param int style: Style .. seealso:: :py:meth:`style()` """ if self.__data.style != style: self.__data.style = style self.invalidateCache() def style(self): """ :return: Current symbol style .. seealso:: :py:meth:`setStyle()` """ return self.__data.style ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.4900634 PythonQwt-0.10.2/qwt/tests/0000777000000000000000000000000000000000000012417 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641738053.0 PythonQwt-0.10.2/qwt/tests/__init__.py0000666000000000000000000002613700000000000014541 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015 Pierre Raybaut # (see LICENSE file for more details) """ PythonQwt test package ====================== """ from __future__ import print_function import os import os.path as osp import sys import subprocess import platform import argparse import inspect from qtpy import QtWidgets as QW from qtpy import QtGui as QG from qtpy import QtCore as QC from qwt import QwtPlot QT_API = os.environ["QT_API"] if QT_API.startswith("pyside"): from qtpy import PYSIDE_VERSION PYTHON_QT_API = "PySide v" + PYSIDE_VERSION else: from qtpy import PYQT_VERSION PYTHON_QT_API = "PyQt v" + PYQT_VERSION TEST_PATH = osp.abspath(osp.dirname(__file__)) def get_tests(package): """Return list of test filenames""" test_package_name = "%s.tests" % package.__name__ _temp = __import__(test_package_name) test_package = sys.modules[test_package_name] tests = [] test_path = osp.dirname(osp.realpath(test_package.__file__)) for fname in sorted( [ name for name in os.listdir(test_path) if name.endswith((".py", ".pyw")) and not name.startswith("_") ] ): module_name = osp.splitext(fname)[0] _temp = __import__(test_package.__name__, fromlist=[module_name]) module = getattr(_temp, module_name) if hasattr(module, "SHOW") and module.SHOW: tests.append(osp.abspath(osp.join(test_path, fname))) return tests def run_test(fname, wait=True): """Run test""" os.environ["PYTHONPATH"] = os.pathsep.join(sys.path) args = " ".join([sys.executable, '"' + fname + '"']) if TestEnvironment().unattended: print(" " + args) (subprocess.call if wait else subprocess.Popen)(args, shell=True) def run_all_tests(wait=True): """Run all PythonQwt tests""" import qwt for fname in get_tests(qwt): run_test(fname, wait=wait) def get_lib_versions(): """Return string containing Python-Qt versions""" from qtpy.QtCore import __version__ as qt_version return "Python %s, Qt %s, %s on %s" % ( platform.python_version(), qt_version, PYTHON_QT_API, platform.system(), ) class TestLauncher(QW.QMainWindow): """PythonQwt Test Launcher main window""" COLUMNS = 5 def __init__(self, parent=None): super(TestLauncher, self).__init__(parent) from qwt import __version__ self.setObjectName("TestLauncher") self.setWindowIcon(self.get_std_icon("FileDialogListView")) self.setWindowTitle("PythonQwt %s - Test Launcher" % __version__) self.setCentralWidget(QW.QWidget()) self.grid_layout = QW.QGridLayout() self.centralWidget().setLayout(self.grid_layout) self.test_nb = None self.fill_layout() self.statusBar().show() self.setStatusTip("Click on any button to run a test") def get_std_icon(self, name): """Return Qt standard icon""" return self.style().standardIcon(getattr(QW.QStyle, "SP_" + name)) def fill_layout(self): """Fill grid layout""" import qwt for fname in get_tests(qwt): self.add_test(fname) toolbar = QW.QToolBar(self) all_act = QW.QAction(self.get_std_icon("DialogYesButton"), "", self) all_act.setIconText("Run all tests") all_act.triggered.connect(lambda checked: run_all_tests(wait=False)) folder_act = QW.QAction(self.get_std_icon("DirOpenIcon"), "", self) folder_act.setIconText("Open tests folder") open_test_folder = lambda checked: os.startfile(TEST_PATH) folder_act.triggered.connect(open_test_folder) about_act = QW.QAction(self.get_std_icon("FileDialogInfoView"), "", self) about_act.setIconText("About") about_act.triggered.connect(self.about) for action in (all_act, folder_act, None, about_act): if action is None: toolbar.addSeparator() else: toolbar.addAction(action) toolbar.setToolButtonStyle(QC.Qt.ToolButtonTextBesideIcon) self.addToolBar(toolbar) def add_test(self, fname): """Add new test""" if self.test_nb is None: self.test_nb = 0 self.test_nb += 1 column = (self.test_nb - 1) % self.COLUMNS row = (self.test_nb - 1) // self.COLUMNS bname = osp.basename(fname) button = QW.QToolButton(self) button.setToolButtonStyle(QC.Qt.ToolButtonTextUnderIcon) shot = osp.join(TEST_PATH, "data", bname.replace(".py", ".png")) if osp.isfile(shot): button.setIcon(QG.QIcon(shot)) else: button.setIcon(self.get_std_icon("DialogYesButton")) button.setText(bname) button.setToolTip(fname) button.setIconSize(QC.QSize(130, 80)) button.clicked.connect(lambda checked=None, fname=fname: run_test(fname)) self.grid_layout.addWidget(button, row, column) def about(self): """About test launcher""" QW.QMessageBox.about( self, "About " + self.windowTitle(), """%s

Developped by Pierre Raybaut
Copyright © 2020 Pierre Raybaut

%s""" % (self.windowTitle(), get_lib_versions()), ) class TestOptions(QW.QGroupBox): """Test options groupbox""" def __init__(self, parent=None): super(TestOptions, self).__init__("Test options", parent) self.setLayout(QW.QFormLayout()) self.hide() def add_checkbox(self, title, label, slot): """Add new checkbox to option panel""" widget = QW.QCheckBox(label, self) widget.stateChanged.connect(slot) self.layout().addRow(title, widget) self.show() return widget class TestCentralWidget(QW.QWidget): """Test central widget""" def __init__(self, widget_name, parent=None): super(TestCentralWidget, self).__init__(parent) self.widget_name = widget_name self.plots = None self.widget_of_interest = self.parent() self.setLayout(QW.QVBoxLayout()) self.options = TestOptions(self) self.add_widget(self.options) def add_widget(self, widget): """Add new sub-widget""" self.layout().addWidget(widget) if isinstance(widget, QwtPlot): self.plots = [widget] else: self.plots = widget.findChildren(QwtPlot) for index, plot in enumerate(self.plots): plot_name = plot.objectName() if not plot_name: plot_name = "Plot #%d" % (index + 1) widget = self.options.add_checkbox( plot_name, "Enable new flat style option", plot.setFlatStyle ) widget.setChecked(plot.flatStyle()) if len(self.plots) == 1: self.widget_of_interest = self.plots[0] def take_screenshot(widget): """Take screenshot and save it to the data folder""" if QT_API in ("pyqt4", "pyside2"): pixmap = QG.QPixmap.grabWidget(widget) else: pixmap = widget.grab() bname = (widget.objectName().lower() + ".png").replace("window", "") bname = bname.replace("plot", "").replace("widget", "") pixmap.save(osp.join(TEST_PATH, "data", bname)) QC.QTimer.singleShot(0, QW.QApplication.instance().quit) def test_widget(widget_class, size=None, title=None, options=True): """Test widget""" widget_name = widget_class.__name__ app = QW.QApplication([]) test_env = TestEnvironment() if inspect.signature(widget_class).parameters.get("unattended") is None: widget = widget_class() else: widget = widget_class(unattended=test_env.unattended) window = widget if options: if isinstance(widget, QW.QMainWindow): widget = window.centralWidget() widget.setParent(None) else: window = QW.QMainWindow() central_widget = TestCentralWidget(widget_name, parent=window) central_widget.add_widget(widget) window.setCentralWidget(central_widget) widget_of_interest = central_widget.widget_of_interest else: widget_of_interest = window widget_of_interest.setObjectName(widget_name) if title is None: from qwt import __version__ title = 'Test "%s" - PythonQwt %s' % (widget_name, __version__) window.setWindowTitle(title) if size is not None: width, height = size window.resize(width, height) window.show() if test_env.screenshots: QC.QTimer.singleShot(1000, lambda: take_screenshot(widget_of_interest)) elif test_env.unattended: QC.QTimer.singleShot(0, QW.QApplication.instance().quit) if QT_API == "pyside6": app.exec() else: app.exec_() return app class TestEnvironment(object): UNATTENDED_ARG = "unattended" SCREENSHOTS_ARG = "screenshots" UNATTENDED_ENV = "PYTHONQWT_UNATTENDED_TESTS" SCREENSHOTS_ENV = "PYTHONQWT_TAKE_SCREENSHOTS" def __init__(self): self.parse_args() @property def unattended(self): return os.environ.get(self.UNATTENDED_ENV) is not None @property def screenshots(self): return os.environ.get(self.SCREENSHOTS_ENV) is not None def parse_args(self): """Parse command line arguments""" parser = argparse.ArgumentParser(description="Run PythonQwt tests") parser.add_argument( "--mode", choices=[self.UNATTENDED_ARG, self.SCREENSHOTS_ARG], required=False, ) args = parser.parse_args() if args.mode is not None: self.set_env_from_args(args) def set_env_from_args(self, args): """Set appropriate environment variables""" for name in (self.UNATTENDED_ENV, self.SCREENSHOTS_ENV): if name in os.environ: os.environ.pop(name) if args.mode == self.UNATTENDED_ARG: os.environ[self.UNATTENDED_ENV] = "1" if args.mode == self.SCREENSHOTS_ARG: os.environ[self.SCREENSHOTS_ENV] = os.environ[self.UNATTENDED_ENV] = "1" def run(wait=True): """Run PythonQwt tests or test launcher""" app = QW.QApplication([]) launcher = TestLauncher() launcher.show() test_env = TestEnvironment() if test_env.screenshots: print("Running PythonQwt tests and taking screenshots automatically:") QC.QTimer.singleShot(100, lambda: take_screenshot(launcher)) elif test_env.unattended: print("Running PythonQwt tests in unattended mode:") QC.QTimer.singleShot(0, QW.QApplication.instance().quit) if QT_API == "pyside6": app.exec() else: app.exec_() launcher.close() if test_env.unattended: run_all_tests(wait=wait) if __name__ == "__main__": run() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/qwt/tests/bodedemo.py0000666000000000000000000002211700000000000014552 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) from __future__ import unicode_literals SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtWidgets import ( QFrame, QWidget, QMainWindow, QToolButton, QToolBar, QHBoxLayout, QLabel, ) from qtpy.QtGui import QPen, QFont, QIcon, QPixmap from qtpy.QtPrintSupport import QPrinter, QPrintDialog from qtpy.QtCore import Qt from qwt import ( QwtPlot, QwtPlotMarker, QwtSymbol, QwtLegend, QwtPlotGrid, QwtPlotCurve, QwtPlotItem, QwtLogScaleEngine, QwtText, QwtPlotRenderer, ) print_xpm = [ "32 32 12 1", "a c #ffffff", "h c #ffff00", "c c #ffffff", "f c #dcdcdc", "b c #c0c0c0", "j c #a0a0a4", "e c #808080", "g c #808000", "d c #585858", "i c #00ff00", "# c #000000", ". c None", "................................", "................................", "...........###..................", "..........#abb###...............", ".........#aabbbbb###............", ".........#ddaaabbbbb###.........", "........#ddddddaaabbbbb###......", ".......#deffddddddaaabbbbb###...", "......#deaaabbbddddddaaabbbbb###", ".....#deaaaaaaabbbddddddaaabbbb#", "....#deaaabbbaaaa#ddedddfggaaad#", "...#deaaaaaaaaaa#ddeeeeafgggfdd#", "..#deaaabbbaaaa#ddeeeeabbbbgfdd#", ".#deeefaaaaaaa#ddeeeeabbhhbbadd#", "#aabbbeeefaaa#ddeeeeabbbbbbaddd#", "#bbaaabbbeee#ddeeeeabbiibbadddd#", "#bbbbbaaabbbeeeeeeabbbbbbaddddd#", "#bjbbbbbbaaabbbbeabbbbbbadddddd#", "#bjjjjbbbbbbaaaeabbbbbbaddddddd#", "#bjaaajjjbbbbbbaaabbbbadddddddd#", "#bbbbbaaajjjbbbbbbaaaaddddddddd#", "#bjbbbbbbaaajjjbbbbbbddddddddd#.", "#bjjjjbbbbbbaaajjjbbbdddddddd#..", "#bjaaajjjbbbbbbjaajjbddddddd#...", "#bbbbbaaajjjbbbjbbaabdddddd#....", "###bbbbbbaaajjjjbbbbbddddd#.....", "...###bbbbbbaaajbbbbbdddd#......", "......###bbbbbbjbbbbbddd#.......", ".........###bbbbbbbbbdd#........", "............###bbbbbbd#.........", "...............###bbb#..........", "..................###...........", ] class BodePlot(QwtPlot): def __init__(self, *args): QwtPlot.__init__(self, *args) self.setTitle("Frequency Response of a 2nd-order System") self.setCanvasBackground(Qt.darkBlue) # legend legend = QwtLegend() legend.setFrameStyle(QFrame.Box | QFrame.Sunken) self.insertLegend(legend, QwtPlot.BottomLegend) # grid QwtPlotGrid.make(plot=self, enableminor=(True, False), color=Qt.darkGray) # axes self.enableAxis(QwtPlot.yRight) self.setAxisTitle(QwtPlot.xBottom, "\u03c9/\u03c90") self.setAxisTitle(QwtPlot.yLeft, "Amplitude [dB]") self.setAxisTitle(QwtPlot.yRight, "Phase [\u00b0]") self.setAxisMaxMajor(QwtPlot.xBottom, 6) self.setAxisMaxMinor(QwtPlot.xBottom, 10) self.setAxisScaleEngine(QwtPlot.xBottom, QwtLogScaleEngine()) # curves self.curve1 = QwtPlotCurve.make( title="Amplitude", linecolor=Qt.yellow, plot=self, antialiased=True ) self.curve2 = QwtPlotCurve.make( title="Phase", linecolor=Qt.cyan, plot=self, antialiased=True ) self.dB3Marker = QwtPlotMarker.make( label=QwtText.make(color=Qt.white, brush=Qt.red, weight=QFont.Light), linestyle=QwtPlotMarker.VLine, align=Qt.AlignRight | Qt.AlignBottom, color=Qt.green, width=2, style=Qt.DashDotLine, plot=self, ) self.peakMarker = QwtPlotMarker.make( label=QwtText.make( color=Qt.red, brush=self.canvasBackground(), weight=QFont.Bold ), symbol=QwtSymbol.make(QwtSymbol.Diamond, Qt.yellow, Qt.green, (7, 7)), linestyle=QwtPlotMarker.HLine, align=Qt.AlignRight | Qt.AlignBottom, color=Qt.red, width=2, style=Qt.DashDotLine, plot=self, ) QwtPlotMarker.make( xvalue=0.1, yvalue=-20.0, align=Qt.AlignRight | Qt.AlignBottom, label=QwtText.make( "[1-(\u03c9/\u03c90)2+2j\u03c9/Q]" "-1", color=Qt.white, borderradius=2, borderpen=QPen(Qt.lightGray, 5), brush=Qt.lightGray, weight=QFont.Bold, ), plot=self, ) self.setDamp(0.01) def showData(self, frequency, amplitude, phase): self.curve1.setData(frequency, amplitude) self.curve2.setData(frequency, phase) def showPeak(self, frequency, amplitude): self.peakMarker.setValue(frequency, amplitude) label = self.peakMarker.label() label.setText("Peak: %4g dB" % amplitude) self.peakMarker.setLabel(label) def show3dB(self, frequency): self.dB3Marker.setValue(frequency, 0.0) label = self.dB3Marker.label() label.setText("-3dB at f = %4g" % frequency) self.dB3Marker.setLabel(label) def setDamp(self, d): self.damping = d # Numerical Python: f, g, a and p are NumPy arrays! f = np.exp(np.log(10.0) * np.arange(-2, 2.02, 0.04)) g = 1.0 / (1.0 - f * f + 2j * self.damping * f) a = 20.0 * np.log10(abs(g)) p = 180 * np.arctan2(g.imag, g.real) / np.pi # for show3dB i3 = np.argmax(np.where(np.less(a, -3.0), a, -100.0)) f3 = f[i3] - (a[i3] + 3.0) * (f[i3] - f[i3 - 1]) / (a[i3] - a[i3 - 1]) # for showPeak imax = np.argmax(a) self.showPeak(f[imax], a[imax]) self.show3dB(f3) self.showData(f, a, p) self.replot() class BodeDemo(QMainWindow): def __init__(self, *args): QMainWindow.__init__(self, *args) self.plot = BodePlot(self) self.plot.setContentsMargins(5, 5, 5, 0) self.setContextMenuPolicy(Qt.NoContextMenu) self.setCentralWidget(self.plot) toolBar = QToolBar(self) self.addToolBar(toolBar) btnPrint = QToolButton(toolBar) btnPrint.setText("Print") btnPrint.setIcon(QIcon(QPixmap(print_xpm))) btnPrint.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) toolBar.addWidget(btnPrint) btnPrint.clicked.connect(self.print_) btnExport = QToolButton(toolBar) btnExport.setText("Export") btnExport.setIcon(QIcon(QPixmap(print_xpm))) btnExport.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) toolBar.addWidget(btnExport) btnExport.clicked.connect(self.exportDocument) toolBar.addSeparator() dampBox = QWidget(toolBar) dampLayout = QHBoxLayout(dampBox) dampLayout.setSpacing(0) dampLayout.addWidget(QWidget(dampBox), 10) # spacer dampLayout.addWidget(QLabel("Damping Factor", dampBox), 0) dampLayout.addSpacing(10) toolBar.addWidget(dampBox) self.statusBar() self.showInfo() def print_(self): printer = QPrinter(QPrinter.HighResolution) printer.setCreator("Bode example") printer.setOrientation(QPrinter.Landscape) printer.setColorMode(QPrinter.Color) docName = str(self.plot.title().text()) if not docName: docName.replace("\n", " -- ") printer.setDocName(docName) dialog = QPrintDialog(printer) if dialog.exec_(): renderer = QwtPlotRenderer() if QPrinter.GrayScale == printer.colorMode(): renderer.setDiscardFlag(QwtPlotRenderer.DiscardBackground) renderer.setDiscardFlag(QwtPlotRenderer.DiscardCanvasBackground) renderer.setDiscardFlag(QwtPlotRenderer.DiscardCanvasFrame) renderer.setLayoutFlag(QwtPlotRenderer.FrameWithScales) renderer.renderTo(self.plot, printer) def exportDocument(self): renderer = QwtPlotRenderer(self.plot) renderer.exportTo(self.plot, "bode") def showInfo(self, text=""): self.statusBar().showMessage(text) def moved(self, point): info = "Freq=%g, Ampl=%g, Phase=%g" % ( self.plot.invTransform(QwtPlot.xBottom, point.x()), self.plot.invTransform(QwtPlot.yLeft, point.y()), self.plot.invTransform(QwtPlot.yRight, point.y()), ) self.showInfo(info) def selected(self, _): self.showInfo() if __name__ == "__main__": from qwt import tests tests.test_widget(BodeDemo, (640, 480)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091907.0 PythonQwt-0.10.2/qwt/tests/cartesian.py0000666000000000000000000000745400000000000014754 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtCore import Qt from qwt import QwtPlot, QwtScaleDraw, QwtPlotGrid, QwtPlotCurve, QwtPlotItem class CartesianAxis(QwtPlotItem): """Supports a coordinate system similar to http://en.wikipedia.org/wiki/Image:Cartesian-coordinate-system.svg""" def __init__(self, masterAxis, slaveAxis): """Valid input values for masterAxis and slaveAxis are QwtPlot.yLeft, QwtPlot.yRight, QwtPlot.xBottom, and QwtPlot.xTop. When masterAxis is an x-axis, slaveAxis must be an y-axis; and vice versa.""" QwtPlotItem.__init__(self) self.__axis = masterAxis if masterAxis in (QwtPlot.yLeft, QwtPlot.yRight): self.setAxes(slaveAxis, masterAxis) else: self.setAxes(masterAxis, slaveAxis) self.scaleDraw = QwtScaleDraw() self.scaleDraw.setAlignment( ( QwtScaleDraw.LeftScale, QwtScaleDraw.RightScale, QwtScaleDraw.BottomScale, QwtScaleDraw.TopScale, )[masterAxis] ) def draw(self, painter, xMap, yMap, rect): """Draw an axis on the plot canvas""" xtr = xMap.transform ytr = yMap.transform if self.__axis in (QwtPlot.yLeft, QwtPlot.yRight): self.scaleDraw.move(round(xtr(0.0)), yMap.p2()) self.scaleDraw.setLength(yMap.p1() - yMap.p2()) elif self.__axis in (QwtPlot.xBottom, QwtPlot.xTop): self.scaleDraw.move(xMap.p1(), round(ytr(0.0))) self.scaleDraw.setLength(xMap.p2() - xMap.p1()) self.scaleDraw.setScaleDiv(self.plot().axisScaleDiv(self.__axis)) self.scaleDraw.draw(painter, self.plot().palette()) class CartesianPlot(QwtPlot): """Creates a coordinate system similar system http://en.wikipedia.org/wiki/Image:Cartesian-coordinate-system.svg""" def __init__(self, *args): QwtPlot.__init__(self, *args) self.setTitle("Cartesian Coordinate System Demo") # create a plot with a white canvas self.setCanvasBackground(Qt.white) # set plot layout self.plotLayout().setCanvasMargin(0) self.plotLayout().setAlignCanvasToScales(True) # attach a grid QwtPlotGrid.make(self, color=Qt.lightGray, width=0, style=Qt.DotLine, z=-1) # attach a x-axis xaxis = CartesianAxis(QwtPlot.xBottom, QwtPlot.yLeft) xaxis.attach(self) self.enableAxis(QwtPlot.xBottom, False) # attach a y-axis yaxis = CartesianAxis(QwtPlot.yLeft, QwtPlot.xBottom) yaxis.attach(self) self.enableAxis(QwtPlot.yLeft, False) # calculate 3 NumPy arrays x = np.arange(-2 * np.pi, 2 * np.pi, 0.01) # attach a curve QwtPlotCurve.make( x, np.pi * np.sin(x), title="y = pi*sin(x)", linecolor=Qt.green, linewidth=2, plot=self, antialiased=True, ) # attach another curve QwtPlotCurve.make( x, 4 * np.pi * np.cos(x) * np.cos(x) * np.sin(x), title="y = 4*pi*sin(x)*cos(x)**2", linecolor=Qt.blue, linewidth=2, plot=self, antialiased=True, ) self.replot() if __name__ == "__main__": from qwt import tests tests.test_widget(CartesianPlot, (800, 480)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641740148.0 PythonQwt-0.10.2/qwt/tests/comparative_benchmarks.py0000666000000000000000000000353300000000000017504 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015 Pierre Raybaut # (see LICENSE file for more details) """ PyQwt5 vs. PythonQwt ==================== """ import os import os.path as osp import sys import subprocess import time def get_winpython_exe(rootpath, pymajor=None, pyminor=None): """Return WinPython exe list from rootpath""" exelist = [] for name1 in os.listdir(rootpath): winroot = osp.join(rootpath, name1) if osp.isdir(winroot): for name2 in os.listdir(winroot): pypath = osp.join(winroot, name2, "python.exe") if osp.isfile(pypath): pymaj, pymin = name2[len("python-") :].split(".")[:2] if pymajor is None or pymajor == int(pymaj): if pyminor is None or int(pymin) >= pyminor: exelist.append(pypath) return exelist def run_script(filename, args=None, wait=True, executable=None): """Run Python script""" os.environ["PYTHONPATH"] = os.pathsep.join(sys.path) if executable is None: executable = sys.executable command = [executable, '"' + filename + '"'] if args is not None: command.append(args) print(" ".join(command)) proc = subprocess.Popen(" ".join(command), shell=True) if wait: proc.wait() def main(): for name in ( "curvebenchmark1.py", "curvebenchmark2.py", ): for executable in get_winpython_exe(r"C:\Apps", pymajor=3, pyminor=6): filename = osp.join(osp.dirname(osp.abspath(__file__)), name) run_script(filename, wait=False, executable=executable) time.sleep(4) if __name__ == "__main__": # print(get_winpython_exe(r"C:\Apps", pymajor=3)) main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/qwt/tests/cpudemo.py0000666000000000000000000003151700000000000014434 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import os import numpy as np from qtpy.QtWidgets import QWidget, QVBoxLayout, QLabel from qtpy.QtGui import QColor, QBrush from qtpy.QtCore import QRect, QTime, Qt from qwt import ( QwtPlot, QwtPlotMarker, QwtScaleDraw, QwtLegend, QwtPlotCurve, QwtPlotItem, QwtLegendData, QwtText, ) class CpuStat: User = 0 Nice = 1 System = 2 Idle = 3 counter = 0 dummyValues = ( (103726, 0, 23484, 819556), (103783, 0, 23489, 819604), (103798, 0, 23490, 819688), (103820, 0, 23490, 819766), (103840, 0, 23493, 819843), (103875, 0, 23499, 819902), (103917, 0, 23504, 819955), (103950, 0, 23508, 820018), (103987, 0, 23510, 820079), (104020, 0, 23513, 820143), (104058, 0, 23514, 820204), (104099, 0, 23520, 820257), (104121, 0, 23525, 820330), (104159, 0, 23530, 820387), (104176, 0, 23534, 820466), (104215, 0, 23538, 820523), (104245, 0, 23541, 820590), (104267, 0, 23545, 820664), (104311, 0, 23555, 820710), (104355, 0, 23565, 820756), (104367, 0, 23567, 820842), (104383, 0, 23572, 820921), (104396, 0, 23577, 821003), (104413, 0, 23579, 821084), (104446, 0, 23588, 821142), (104521, 0, 23594, 821161), (104611, 0, 23604, 821161), (104708, 0, 23607, 821161), (104804, 0, 23611, 821161), (104895, 0, 23620, 821161), (104993, 0, 23622, 821161), (105089, 0, 23626, 821161), (105185, 0, 23630, 821161), (105281, 0, 23634, 821161), (105379, 0, 23636, 821161), (105472, 0, 23643, 821161), (105569, 0, 23646, 821161), (105666, 0, 23649, 821161), (105763, 0, 23652, 821161), (105828, 0, 23661, 821187), (105904, 0, 23666, 821206), (105999, 0, 23671, 821206), (106094, 0, 23676, 821206), (106184, 0, 23686, 821206), (106273, 0, 23692, 821211), (106306, 0, 23700, 821270), (106341, 0, 23703, 821332), (106392, 0, 23709, 821375), (106423, 0, 23715, 821438), (106472, 0, 23721, 821483), (106531, 0, 23727, 821517), (106562, 0, 23732, 821582), (106597, 0, 23736, 821643), (106633, 0, 23737, 821706), (106666, 0, 23742, 821768), (106697, 0, 23744, 821835), (106730, 0, 23748, 821898), (106765, 0, 23751, 821960), (106799, 0, 23754, 822023), (106831, 0, 23758, 822087), (106862, 0, 23761, 822153), (106899, 0, 23763, 822214), (106932, 0, 23766, 822278), (106965, 0, 23768, 822343), (107009, 0, 23771, 822396), (107040, 0, 23775, 822461), (107092, 0, 23780, 822504), (107143, 0, 23787, 822546), (107200, 0, 23795, 822581), (107250, 0, 23803, 822623), (107277, 0, 23810, 822689), (107286, 0, 23810, 822780), (107313, 0, 23817, 822846), (107325, 0, 23818, 822933), (107332, 0, 23818, 823026), (107344, 0, 23821, 823111), (107357, 0, 23821, 823198), (107368, 0, 23823, 823284), (107375, 0, 23824, 823377), (107386, 0, 23825, 823465), (107396, 0, 23826, 823554), (107422, 0, 23830, 823624), (107434, 0, 23831, 823711), (107456, 0, 23835, 823785), (107468, 0, 23838, 823870), (107487, 0, 23840, 823949), (107515, 0, 23843, 824018), (107528, 0, 23846, 824102), (107535, 0, 23851, 824190), (107548, 0, 23853, 824275), (107562, 0, 23857, 824357), (107656, 0, 23863, 824357), (107751, 0, 23868, 824357), (107849, 0, 23870, 824357), (107944, 0, 23875, 824357), (108043, 0, 23876, 824357), (108137, 0, 23882, 824357), (108230, 0, 23889, 824357), (108317, 0, 23902, 824357), (108412, 0, 23907, 824357), (108511, 0, 23908, 824357), (108608, 0, 23911, 824357), (108704, 0, 23915, 824357), (108801, 0, 23918, 824357), (108891, 0, 23928, 824357), (108987, 0, 23932, 824357), (109072, 0, 23943, 824361), (109079, 0, 23943, 824454), (109086, 0, 23944, 824546), (109098, 0, 23950, 824628), (109108, 0, 23955, 824713), (109115, 0, 23957, 824804), (109122, 0, 23958, 824896), (109132, 0, 23959, 824985), (109142, 0, 23961, 825073), (109146, 0, 23962, 825168), (109153, 0, 23964, 825259), (109162, 0, 23966, 825348), (109168, 0, 23969, 825439), (109176, 0, 23971, 825529), (109185, 0, 23974, 825617), (109193, 0, 23977, 825706), (109198, 0, 23978, 825800), (109206, 0, 23978, 825892), (109212, 0, 23981, 825983), (109219, 0, 23981, 826076), (109225, 0, 23981, 826170), (109232, 0, 23984, 826260), (109242, 0, 23984, 826350), (109255, 0, 23986, 826435), (109268, 0, 23987, 826521), (109283, 0, 23990, 826603), (109288, 0, 23991, 826697), (109295, 0, 23993, 826788), (109308, 0, 23994, 826874), (109322, 0, 24009, 826945), (109328, 0, 24011, 827037), (109338, 0, 24012, 827126), (109347, 0, 24012, 827217), (109354, 0, 24017, 827305), (109367, 0, 24017, 827392), (109371, 0, 24019, 827486), ) def __init__(self): self.procValues = self.__lookup() def statistic(self): values = self.__lookup() userDelta = 0.0 for i in [CpuStat.User, CpuStat.Nice]: userDelta += values[i] - self.procValues[i] systemDelta = values[CpuStat.System] - self.procValues[CpuStat.System] totalDelta = 0.0 for i in range(len(self.procValues)): totalDelta += values[i] - self.procValues[i] self.procValues = values return 100.0 * userDelta / totalDelta, 100.0 * systemDelta / totalDelta def upTime(self): result = QTime() for item in self.procValues: result = result.addSecs(int(0.01 * item)) return result def __lookup(self): if os.path.exists("/proc/stat"): for line in open("/proc/stat"): words = line.split() if words[0] == "cpu" and len(words) >= 5: return [float(w) for w in words[1:]] else: result = CpuStat.dummyValues[CpuStat.counter] CpuStat.counter += 1 CpuStat.counter %= len(CpuStat.dummyValues) return result class CpuPieMarker(QwtPlotMarker): def __init__(self, *args): QwtPlotMarker.__init__(self, *args) self.setZ(1000.0) self.setRenderHint(QwtPlotItem.RenderAntialiased, True) def rtti(self): return QwtPlotItem.Rtti_PlotUserItem def draw(self, painter, xMap, yMap, rect): margin = 5 pieRect = QRect() pieRect.setX(rect.x() + margin) pieRect.setY(rect.y() + margin) pieRect.setHeight(int(yMap.transform(80.0))) pieRect.setWidth(pieRect.height()) angle = 3 * 5760 / 4 for key in ["User", "System", "Idle"]: curve = self.plot().cpuPlotCurve(key) if curve.dataSize(): value = int(5760 * curve.sample(0).y() / 100.0) painter.save() painter.setBrush(QBrush(curve.pen().color(), Qt.SolidPattern)) painter.drawPie(pieRect, int(-angle), int(-value)) painter.restore() angle += value class TimeScaleDraw(QwtScaleDraw): def __init__(self, baseTime, *args): QwtScaleDraw.__init__(self, *args) self.baseTime = baseTime def label(self, value): upTime = self.baseTime.addSecs(int(value)) return QwtText(upTime.toString()) class Background(QwtPlotItem): def __init__(self): QwtPlotItem.__init__(self) self.setZ(0.0) def rtti(self): return QwtPlotItem.Rtti_PlotUserItem def draw(self, painter, xMap, yMap, rect): c = QColor(Qt.white) r = QRect(rect) for i in range(100, 0, -10): r.setBottom(int(yMap.transform(i - 10))) r.setTop(int(yMap.transform(i))) painter.fillRect(r, c) c = c.darker(110) class CpuCurve(QwtPlotCurve): def __init__(self, *args): QwtPlotCurve.__init__(self, *args) self.setRenderHint(QwtPlotItem.RenderAntialiased) def setColor(self, color): c = QColor(color) c.setAlpha(150) self.setPen(c) self.setBrush(c) class CpuPlot(QwtPlot): HISTORY = 60 def __init__(self, unattended=False): QwtPlot.__init__(self) self.curves = {} self.data = {} self.timeData = 1.0 * np.arange(self.HISTORY - 1, -1, -1) self.cpuStat = CpuStat() self.setAutoReplot(False) self.plotLayout().setAlignCanvasToScales(True) legend = QwtLegend() legend.setDefaultItemMode(QwtLegendData.Checkable) self.insertLegend(legend, QwtPlot.RightLegend) self.setAxisTitle(QwtPlot.xBottom, "System Uptime [h:m:s]") self.setAxisScaleDraw(QwtPlot.xBottom, TimeScaleDraw(self.cpuStat.upTime())) self.setAxisScale(QwtPlot.xBottom, 0, self.HISTORY) self.setAxisLabelRotation(QwtPlot.xBottom, -50.0) self.setAxisLabelAlignment(QwtPlot.xBottom, Qt.AlignLeft | Qt.AlignBottom) self.setAxisTitle(QwtPlot.yLeft, "Cpu Usage [%]") self.setAxisScale(QwtPlot.yLeft, 0, 100) background = Background() background.attach(self) pie = CpuPieMarker() pie.attach(self) curve = CpuCurve("System") curve.setColor(Qt.red) curve.attach(self) self.curves["System"] = curve self.data["System"] = np.zeros(self.HISTORY, float) curve = CpuCurve("User") curve.setColor(Qt.blue) curve.setZ(curve.z() - 1.0) curve.attach(self) self.curves["User"] = curve self.data["User"] = np.zeros(self.HISTORY, float) curve = CpuCurve("Total") curve.setColor(Qt.black) curve.setZ(curve.z() - 2.0) curve.attach(self) self.curves["Total"] = curve self.data["Total"] = np.zeros(self.HISTORY, float) curve = CpuCurve("Idle") curve.setColor(Qt.darkCyan) curve.setZ(curve.z() - 3.0) curve.attach(self) self.curves["Idle"] = curve self.data["Idle"] = np.zeros(self.HISTORY, float) self.showCurve(self.curves["System"], True) self.showCurve(self.curves["User"], True) self.showCurve(self.curves["Total"], False or unattended) self.showCurve(self.curves["Idle"], False or unattended) self.startTimer(20 if unattended else 1000) legend.checked.connect(self.showCurve) self.replot() def timerEvent(self, e): for data in self.data.values(): data[1:] = data[0:-1] self.data["User"][0], self.data["System"][0] = self.cpuStat.statistic() self.data["Total"][0] = self.data["User"][0] + self.data["System"][0] self.data["Idle"][0] = 100.0 - self.data["Total"][0] self.timeData += 1.0 self.setAxisScale(QwtPlot.xBottom, self.timeData[-1], self.timeData[0]) for key in self.curves.keys(): self.curves[key].setData(self.timeData, self.data[key]) self.replot() def showCurve(self, item, on, index=None): item.setVisible(on) self.legend().legendWidget(item).setChecked(on) self.replot() def cpuPlotCurve(self, key): return self.curves[key] class CpuDemo(QWidget): def __init__(self, parent=None, unattended=False): super(CpuDemo, self).__init__(parent) layout = QVBoxLayout() self.setLayout(layout) plot = CpuPlot(unattended=unattended) plot.setTitle("History") layout.addWidget(plot) label = QLabel("Press the legend to en/disable a curve") layout.addWidget(label) if __name__ == "__main__": from qwt import tests app = tests.test_widget(CpuDemo, (600, 400)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641738098.0 PythonQwt-0.10.2/qwt/tests/curvebenchmark1.py0000666000000000000000000001357600000000000016065 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015 Pierre Raybaut # (see LICENSE file for more details) """Curve benchmark example""" SHOW = True # Show test in GUI-based test launcher import time import numpy as np from qtpy.QtWidgets import ( QApplication, QMainWindow, QGridLayout, QTabWidget, QWidget, QTextEdit, QLineEdit, ) from qtpy.QtCore import Qt from qwt import tests import os if os.environ.get("USE_PYQWT5", False): USE_PYQWT5 = True from PyQt4.Qwt5 import QwtPlot, QwtPlotCurve else: USE_PYQWT5 = False from qwt import QwtPlot, QwtPlotCurve # analysis:ignore COLOR_INDEX = None def get_curve_color(): global COLOR_INDEX colors = (Qt.blue, Qt.red, Qt.green, Qt.yellow, Qt.magenta, Qt.cyan) if COLOR_INDEX is None: COLOR_INDEX = 0 else: COLOR_INDEX = (COLOR_INDEX + 1) % len(colors) return colors[COLOR_INDEX] PLOT_ID = 0 class BMPlot(QwtPlot): def __init__(self, title, xdata, ydata, style, symbol=None, *args): super(BMPlot, self).__init__(*args) global PLOT_ID self.setMinimumSize(200, 150) PLOT_ID += 1 self.setTitle("%s (#%d)" % (title, PLOT_ID)) self.setAxisTitle(QwtPlot.xBottom, "x") self.setAxisTitle(QwtPlot.yLeft, "y") self.curve_nb = 0 for idx in range(1, 11): self.curve_nb += 1 QwtPlotCurve.make( xdata, ydata * idx, style=style, symbol=symbol, linecolor=get_curve_color(), antialiased=True, plot=self, ) self.replot() class BMWidget(QWidget): def __init__(self, nbcol, points, *args, **kwargs): super(BMWidget, self).__init__() self.plot_nb = 0 self.curve_nb = 0 self.setup(nbcol, points, *args, **kwargs) def params(self, *args, **kwargs): if kwargs.get("only_lines", False): return (("Lines", None),) else: return ( ("Lines", None), ("Dots", None), ) def setup(self, nbcol, points, *args, **kwargs): x = np.linspace(0.001, 20.0, int(points)) y = (np.sin(x) / x) * np.cos(20 * x) layout = QGridLayout() col, row = 0, 0 for style, symbol in self.params(*args, **kwargs): plot = BMPlot(style, x, y, getattr(QwtPlotCurve, style), symbol=symbol) layout.addWidget(plot, row, col) self.plot_nb += 1 self.curve_nb += plot.curve_nb col += 1 if col >= nbcol: row += 1 col = 0 self.text = QLineEdit() self.text.setReadOnly(True) self.text.setAlignment(Qt.AlignCenter) self.text.setText("Rendering plot...") layout.addWidget(self.text, row + 1, 0, 1, nbcol) self.setLayout(layout) class BMText(QTextEdit): def __init__(self, parent=None, title=None): super(BMText, self).__init__(parent) self.setReadOnly(True) library = "PyQwt5" if USE_PYQWT5 else "PythonQwt" wintitle = self.parent().windowTitle() if not wintitle: wintitle = "Benchmark" if title is None: title = "%s example" % wintitle self.parent().setWindowTitle("%s [%s]" % (wintitle, library)) self.setText( """\ %s:
(base plotting library: %s)

Click on each tab to test if plotting performance is acceptable in terms of GUI response time (switch between tabs, resize main windows, ...).


Benchmarks results: """ % (title, library) ) class CurveBenchmark1(QMainWindow): TITLE = "Curve benchmark" SIZE = (1000, 500) def __init__(self, max_n=1000000, parent=None, unattended=False, **kwargs): super(CurveBenchmark1, self).__init__(parent=parent) title = self.TITLE if kwargs.get("only_lines", False): title = "%s (%s)" % (title, "only lines") self.setWindowTitle(title) self.tabs = QTabWidget() self.setCentralWidget(self.tabs) self.text = BMText(self) self.tabs.addTab(self.text, "Contents") self.resize(*self.SIZE) # Force window to show up and refresh (for test purpose only) self.show() QApplication.processEvents() t0g = time.time() self.run_benchmark(max_n, **kwargs) dt = time.time() - t0g self.text.append("

Total elapsed time: %d ms" % (dt * 1e3)) self.tabs.setCurrentIndex(0 if unattended else 1) def process_iteration(self, title, description, widget, t0): self.tabs.addTab(widget, title) self.tabs.setCurrentWidget(widget) # Force widget to refresh (for test purpose only) QApplication.processEvents() time_str = "Elapsed time: %d ms" % ((time.time() - t0) * 1000) widget.text.setText(time_str) self.text.append("
%s:
%s" % (description, time_str)) print("[%s] %s" % (tests.get_lib_versions(), time_str)) def run_benchmark(self, max_n, **kwargs): for idx in range(4, -1, -1): points = int(max_n / 10 ** idx) t0 = time.time() widget = BMWidget(2, points, **kwargs) title = "%d points" % points description = "%d plots with %d curves of %d points" % ( widget.plot_nb, widget.curve_nb, points, ) self.process_iteration(title, description, widget, t0) if __name__ == "__main__": from qwt.tests import test_widget app = test_widget(CurveBenchmark1, options=False) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626357171.0 PythonQwt-0.10.2/qwt/tests/curvebenchmark2.py0000666000000000000000000000533400000000000016057 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015 Pierre Raybaut # (see LICENSE file for more details) """Curve styles""" SHOW = True # Show test in GUI-based test launcher import time from qtpy.QtCore import Qt from qwt.tests import curvebenchmark1 as cb if cb.USE_PYQWT5: from PyQt4.Qwt5 import QwtSymbol else: from qwt import QwtSymbol # analysis:ignore class CSWidget(cb.BMWidget): def params(self, *args, **kwargs): (symbols,) = args symb1 = QwtSymbol.make( QwtSymbol.Ellipse, brush=Qt.yellow, pen=Qt.blue, size=(5, 5) ) symb2 = QwtSymbol.make(QwtSymbol.XCross, pen=Qt.darkMagenta, size=(5, 5)) if symbols: if kwargs.get("only_lines", False): return ( ("Lines", symb1), ("Lines", symb1), ("Lines", symb2), ("Lines", symb2), ) else: return ( ("Sticks", symb1), ("Lines", symb1), ("Steps", symb2), ("Dots", symb2), ) else: if kwargs.get("only_lines", False): return ( ("Lines", None), ("Lines", None), ("Lines", None), ("Lines", None), ) else: return ( ("Sticks", None), ("Lines", None), ("Steps", None), ("Dots", None), ) class CurveBenchmark2(cb.CurveBenchmark1): TITLE = "Curve styles" SIZE = (1000, 800) def __init__(self, max_n=1000, parent=None, unattended=False, **kwargs): super(CurveBenchmark2, self).__init__( max_n=max_n, parent=parent, unattended=unattended, **kwargs ) def run_benchmark(self, max_n, **kwargs): for points, symbols in zip( (max_n / 10, max_n / 10, max_n, max_n), (True, False) * 2 ): t0 = time.time() symtext = "with%s symbols" % ("" if symbols else "out") widget = CSWidget(2, points, symbols, **kwargs) title = "%d points" % points description = "%d plots with %d curves of %d points, %s" % ( widget.plot_nb, widget.curve_nb, points, symtext, ) self.process_iteration(title, description, widget, t0) if __name__ == "__main__": from qwt import tests tests.test_widget(CurveBenchmark2, options=False) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/qwt/tests/curvedemo1.py0000666000000000000000000001021200000000000015037 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtWidgets import QFrame from qtpy.QtGui import QPen, QBrush, QFont, QPainter from qtpy.QtCore import QSize, Qt from qwt import QwtSymbol, QwtPlotCurve, QwtPlotItem, QwtScaleMap class CurveDemo1(QFrame): def __init__(self, *args): QFrame.__init__(self, *args) self.xMap = QwtScaleMap() self.xMap.setScaleInterval(-0.5, 10.5) self.yMap = QwtScaleMap() self.yMap.setScaleInterval(-1.1, 1.1) # frame style self.setFrameStyle(QFrame.Box | QFrame.Raised) self.setLineWidth(2) self.setMidLineWidth(3) # calculate values self.x = np.arange(0, 10.0, 10.0 / 27) self.y = np.sin(self.x) * np.cos(2 * self.x) # make curves with different styles self.curves = [] self.titles = [] # curve 1 self.titles.append("Style: Sticks, Symbol: Ellipse") curve = QwtPlotCurve() curve.setPen(QPen(Qt.red)) curve.setStyle(QwtPlotCurve.Sticks) curve.setSymbol( QwtSymbol(QwtSymbol.Ellipse, QBrush(Qt.yellow), QPen(Qt.blue), QSize(5, 5)) ) self.curves.append(curve) # curve 2 self.titles.append("Style: Lines, Symbol: None") curve = QwtPlotCurve() curve.setPen(QPen(Qt.darkBlue)) curve.setStyle(QwtPlotCurve.Lines) self.curves.append(curve) # curve 3 self.titles.append("Style: Lines, Symbol: None, Antialiased") curve = QwtPlotCurve() curve.setPen(QPen(Qt.darkBlue)) curve.setStyle(QwtPlotCurve.Lines) curve.setRenderHint(QwtPlotItem.RenderAntialiased) self.curves.append(curve) # curve 4 self.titles.append("Style: Steps, Symbol: None") curve = QwtPlotCurve() curve.setPen(QPen(Qt.darkCyan)) curve.setStyle(QwtPlotCurve.Steps) self.curves.append(curve) # curve 5 self.titles.append("Style: NoCurve, Symbol: XCross") curve = QwtPlotCurve() curve.setStyle(QwtPlotCurve.NoCurve) curve.setSymbol( QwtSymbol(QwtSymbol.XCross, QBrush(), QPen(Qt.darkMagenta), QSize(5, 5)) ) self.curves.append(curve) # attach data, using Numeric for curve in self.curves: curve.setData(self.x, self.y) def shiftDown(self, rect, offset): rect.translate(0, offset) def paintEvent(self, event): QFrame.paintEvent(self, event) painter = QPainter(self) painter.setClipRect(self.contentsRect()) self.drawContents(painter) def drawContents(self, painter): # draw curves r = self.contentsRect() dy = int(r.height() / len(self.curves)) r.setHeight(dy) for curve in self.curves: self.xMap.setPaintInterval(r.left(), r.right()) self.yMap.setPaintInterval(r.top(), r.bottom()) painter.setRenderHint( QPainter.Antialiasing, curve.testRenderHint(QwtPlotItem.RenderAntialiased), ) curve.draw(painter, self.xMap, self.yMap, r) self.shiftDown(r, dy) # draw titles r = self.contentsRect() r.setHeight(dy) painter.setFont(QFont("Helvetica", 8)) painter.setPen(Qt.black) for title in self.titles: painter.drawText( 0, r.top(), r.width(), painter.fontMetrics().height(), Qt.AlignTop | Qt.AlignHCenter, title, ) self.shiftDown(r, dy) if __name__ == "__main__": from qwt import tests tests.test_widget(CurveDemo1, size=(300, 600), options=False) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/qwt/tests/curvedemo2.py0000666000000000000000000001007400000000000015046 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtWidgets import QFrame from qtpy.QtGui import QPen, QBrush, QColor, QPainter, QPalette from qtpy.QtCore import QSize from qtpy.QtCore import Qt from qwt import QwtScaleMap, QwtSymbol, QwtPlotCurve Size = 15 USize = 13 class CurveDemo2(QFrame): def __init__(self, *args): QFrame.__init__(self, *args) self.setFrameStyle(QFrame.Box | QFrame.Raised) self.setLineWidth(2) self.setMidLineWidth(3) p = QPalette() p.setColor(self.backgroundRole(), QColor(30, 30, 50)) self.setPalette(p) # make curves and maps self.tuples = [] # curve 1 curve = QwtPlotCurve() curve.setPen(QPen(QColor(150, 150, 200), 2)) curve.setStyle(QwtPlotCurve.Lines) curve.setSymbol( QwtSymbol(QwtSymbol.XCross, QBrush(), QPen(Qt.yellow, 2), QSize(7, 7)) ) self.tuples.append( (curve, QwtScaleMap(0, 100, -1.5, 1.5), QwtScaleMap(0, 100, 0.0, 2 * np.pi)) ) # curve 2 curve = QwtPlotCurve() curve.setPen(QPen(QColor(200, 150, 50), 1, Qt.DashDotDotLine)) curve.setStyle(QwtPlotCurve.Sticks) curve.setSymbol( QwtSymbol(QwtSymbol.Ellipse, QBrush(Qt.blue), QPen(Qt.yellow), QSize(5, 5)) ) self.tuples.append( (curve, QwtScaleMap(0, 100, 0.0, 2 * np.pi), QwtScaleMap(0, 100, -3.0, 1.1)) ) # curve 3 curve = QwtPlotCurve() curve.setPen(QPen(QColor(100, 200, 150))) curve.setStyle(QwtPlotCurve.Lines) self.tuples.append( (curve, QwtScaleMap(0, 100, -1.1, 3.0), QwtScaleMap(0, 100, -1.1, 3.0)) ) # curve 4 curve = QwtPlotCurve() curve.setPen(QPen(Qt.red)) curve.setStyle(QwtPlotCurve.Lines) self.tuples.append( (curve, QwtScaleMap(0, 100, -5.0, 1.1), QwtScaleMap(0, 100, -1.1, 5.0)) ) # data self.phase = 0.0 self.base = np.arange(0.0, 2.01 * np.pi, 2 * np.pi / (USize - 1)) self.uval = np.cos(self.base) self.vval = np.sin(self.base) self.uval[1::2] *= 0.5 self.vval[1::2] *= 0.5 self.newValues() # start timer self.tid = self.startTimer(250) def paintEvent(self, event): QFrame.paintEvent(self, event) painter = QPainter(self) painter.setClipRect(self.contentsRect()) self.drawContents(painter) def drawContents(self, painter): r = self.contentsRect() for curve, xMap, yMap in self.tuples: xMap.setPaintInterval(r.left(), r.right()) yMap.setPaintInterval(r.top(), r.bottom()) curve.draw(painter, xMap, yMap, r) def timerEvent(self, event): self.newValues() self.repaint() def newValues(self): phase = self.phase self.xval = np.arange(0, 2.01 * np.pi, 2 * np.pi / (Size - 1)) self.yval = np.sin(self.xval - phase) self.zval = np.cos(3 * (self.xval + phase)) s = 0.25 * np.sin(phase) c = np.sqrt(1.0 - s * s) u = self.uval self.uval = c * self.uval - s * self.vval self.vval = c * self.vval + s * u self.tuples[0][0].setData(self.yval, self.xval) self.tuples[1][0].setData(self.xval, self.zval) self.tuples[2][0].setData(self.yval, self.zval) self.tuples[3][0].setData(self.uval, self.vval) self.phase += 2 * np.pi / 100 if self.phase > 2 * np.pi: self.phase = 0.0 if __name__ == "__main__": from qwt import tests tests.test_widget(CurveDemo2, options=False) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.5339832 PythonQwt-0.10.2/qwt/tests/data/0000777000000000000000000000000000000000000013330 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/bodedemo.png0000666000000000000000000005576600000000000015637 0ustar00‰PNG  IHDRnOô°B pHYsÄÄ•+ IDATxœì{œu¹ÿßÛv·—¥¥-Ý 4Ö*B·(*: RnÊáx‘ì ‡£-‚rñFš£âNÁK…lðl‹‚:D@P¡\ ²#R¤õ×. -® mi»…nÛÍïI²I6ÙÌd3™Iò¼_¯¼šý>ó½LžìÓçó½4lݺ5 ‚ ‚à{Æx=AAÁ¸ ‚ ‚ T ¸ ‚ ‚ T ¸ ‚ ‚ T ¸ ‚ TF„`0HÄðz ‚ T ÜAAª„q^@ALPHU%70LPÔ0Ѱš4GèÒ LTÕã± ‚ภe ŒPX¹QТQ4¥‚Cª Š|®Š‚ª-!¬Ê[6LƒHWô~Ì žFÝt:øj{IX%Ó{&í,‰†Ñô!]G7U´x„n hQb‘ÐÏš‹‚P Ǹ?šF„®HÆç¤hhK4\ù57M ½‹žö(er³ ¸ŠH¥‚P͘&F$$sʈ¡m(ò´ ÊÚÀ PB9ÎS”JòßôufPÑ4PPÛk7Â0õ¡HÎçdêDB#ýǰäÞлBD².þF2nBÙQÃ1ùŸ« ÿ\MôPÝC×1U É»•E‹-[ŠØ ÇÈn7´ɬZ™zªnLŒd•ÎFšF2h3ÐuUÒöB#›PaRÒŸ‚¦0t•p4ŒªäJII0ç‹:ëE%¬BDÏ”o†äŬ`§€Ì3rŸ™mEQzºÐÓX4–„³ƒ¥aOúšcÂÊÄDŒRMSÑó¤ÛŠ~ަA¤KÇ0Ó#E gJ®ãÕÂ`¤²P Ц±DË–÷0õd{éGÓ4´|íû‹ŽÍæ=æcÄqÂÖ¥!‚z!‰ßĈteejòý> ]nW3•5EmGÅÀÀÄŒ#$öUEÑõdàFÍÜ“m¿Øx“ÏZþnìCJ:`(~OÉ †™5Ò‚’k¶thbê9òž!Ò³åEÓ@ä— Fþí͉ßJçHyêäþ>d¡hD£1b™óÂL“¸e,®Æ*V°Œ"ì¢ÇNnÕÑýí>kö}1¼<7šþ,L=D(ù» †cÄb1bal?KÎ~ÏK¾§HÆglDºB„B9e2—A(#¸ eLj ³_yÿ ªa¢±Ñ%Š©cýMP G“_ÒQ+{aêzrn‹%•dÖÅF±àÁVŸ(ZòºŒIÌFϰ±)Z4«-ÌÔ Ád–*]'ã½¢x=üsMe ¬Ì›í{Ê´ä5©LŸ¡ë óTæ}§>lCOöñG)Ã'©ëŒˆÃÏÑÎØœú »ã´úLÉòc¾ß¯T€0Ô4õùgúvDLô®äý¨šÕ‡¢YÏCªC5œÕ¿¢eŒ;lýŽž’P‚_2ŸG»ÏšS_dõ‘5œ‘ 7 "¡ÁP('»iãY*ú»”Mµ‚Ã0j©÷”r†i•¥Ÿ»¿‚P‘JÏPÛ“_¾ `˜É€Á  æ\iý¡T_Äi©®°\X”¸>3þ0ªZjU[rr¸‘ÑgúÄP6ÀúCœ9sIEUtLs¨íTÆ@ÕJ™Ÿ¦ jZÆga÷ž€™”Š UEm_B4¦äCÖ}kª’÷ºïpxÈ'C×9ücsè7 Ë?vÇY•p,†5K'¢éyYöÈ”è¬ñ”î7ëy,PسæôÊì£ *áXCׇ2tÉE8¡”ªØx–ìü.åÃÎ=¥3¤ßE…äv-©2Å ” Ü„²coqB¶¯œgÍ™/lHÂתZU#k{S×1´0ª­gÉÉïùeý^ÀMðŠF4Zh‚wêMœ¬¿±¶‚¦û´‹ÍàÑšdnb=–|¢¶;úã­¨a¢š5߯4"téyþ»'E#Õ¬LFÜ §ÇÊ™zºš)‰%3kCé.²¦ ¼ï¡ëŠ8øcXdljÆu¶ýf{œ60ôdЖÌxª”¸n-|Ifyò““i+694ŒÖ/éú6ŸµrÖhï7]?ûYsõ‚ŒÀ+ã9ÂÄ0Rï3‚¢bÏ’Ãßó¸™Zå\æ{„2#7Á(šª1¬?pÁ,“–ü2ϘccD6ýd¨ÆÐÔ’‘®³Õ§]¬¹m†ž\u©·¥Êœ×ecQBÁ£-Ñ0Bº5‡§KGjÖóÅîIÕÐÝ4ÐCA²†šw<Ãçú }>Ö¨`ŸdN4·…­±•â·òSIýr™‘`NCɹaÃwIMx+ó–}oåßûp´÷;ôû\¹g(»ßáÏÑð6G|–lý. }WdmÿRÖ{„ò"7Á7¨akÕÛÐw¯‚š;E Íü_³¢Γ±RÃÑŒ½ª@Q´‚×íÓ&Š%ÎÍiÃ÷pÊsÒÿ»/EËXɦӕL»¿§Ô§ìž5¿4”ýYðI8ç8"EE —r„½±•ä·r3ßï`ÚÇ9RrÓp>sÔŒò~­y`öžµr=Cé~Ãj¶Ü¨hsÄgÉæï’–ùY{Ç•ûž¡œ4lݺ5áõ aTTèüIJ‘¹y§oÏo-¼a° ø†ªx–¡¼ˆT*•"wõ_jÿ.Aœ!Ï’PLjT*^ ¸´— Ôò, u†H¥‚ ‚ U‚dÜAAª„šžãvÝu×qÉ%—°ïÔ©E¯m €DòßbåÒŽÅ•tvú§¬v–v޾|åÒŽ…ŸüÞ€|²Ahp6¿}Î~kÇO~O•Ëó^Ÿ~غõ[íÔ5-•¦·©S¯óz(‚ ¸I¢3+xkhè,{¸Ñ® %Q¯›H¥‚ T=-3¿F*¹æJÐ&B1´åQ~sê´Œ cå. ›ØÌêW¼íRêÚ­S캑ìNmn~¾£AüîÌîÄvÜq/òÔÓsiN8q±¡U ñ»3{­<)´a‰ÄÑ¢ÖrñHêZ§åîPSRéu× —DE*„ÚçÚkïå•Wö¡¥e'[¶L`Ù²ãÊ߉H¥‚à+J“JMôŽm§'ØC{¾MÛMP,‰j(˜èÖh8,wioÁqî4ë —\’íÄ|œ µÇqǽÈW¿úoÌšµsÎù‡×áûŸX(hÑ0`ÐS¨bÜÄ ´'øÁ—ì ®BˆßÙ+û¼o@§“İW7KGÓlÞ>b^ µçÑÍúŒquØ´ÔÎúŒ±Ìã†<÷߉^¤^6ÝÉzlÞÕë,Ísé~¸ä’K ¾j•šÊ¸U òEîÌ.›»mW»ß=öE}ô dÙfÍÚÆK/M±3D׿;³{ó¼ŸÀᜠ;6 ÓM'}ÀÅ\YŽæKæ!~ËæÑA ÓNKr¬#Ùréf=ØÀÅ4K¹õ¼öb†vÍy¥Ü@'óè.Z/³ŽÝ€­4¤CÔ —Žäx*D@A‰›˜¨(˜˜q%à´Ü$ã&BUsÜq/ò—¿”þùo›Å1Çø+ë&Tó¸’™Àë%eÈÊË Ng2˜iI†G}´µe3>`&ÝÌfc&ÐKpØu1:îd d¯Þj›»²9%<æ¿'WQ¦a¦aP”Ê]B7ÿ;³KÆÍݶ«ÝïÇkòè£JºÌ5¹´¡³¤… âwgv>ïXš!)— Ê‘ú K|YRdJ2´#£ö%¯iË“}Ém¼žs7- L7°”×ÒYÆâõRÙ¶™6rneH®½6îwCRFm#VôÚr£ÐCA‚!@8µ€Ái¹;ÔÔªÒ\d^A¨}¶mû.³f-aûöñœpÂF–.}ˆ}¶-ˆàG,9®#TÚÁ<4:èθFㄬŸ­:©Ÿ;8œy?çÚO@£×ÙÀÅžÌêYÒä $ÎÜq¦Æd×–¢›DRò<èàtÈGî5ùÊòÕë&A´ÑÁCIÙ6_H–û™Xì¼aŸq.3é&ˆ–O6… Ô6’q¡jyßû^cãÆ©é  \”JC[‚5ÆC9“üçÑ™‚zé6¤³Y))5%ÎC£“à ݬO ¹ßCè¼tdF3¹’NF Ú†úÐØ€Î 9Ù¼‘l)¬ n AŒŽ{=gžù4ŸúTînTï¼s5ûî{)»v«ðÈA¨õ*•ÖÔ7šœU*õCîÆ»¹¤²n?ÜZžeŽ› øŽÌ¿óõĉTê"8³ûO:) ñ»3{1[îü¶Üëý2ÏMüîÌ^+Ï»PêálÒ\jJ*ÍEV• Bm2iÒnúú¾Osóe¯ {9ûìõtt[cgɸ ‚¯¨W©T2n‚ TÅdRpñè+A‘ÀÍD:qf¯éDüîÌ>’í«_}“U«æŒx½iîKcã^ößÇȃpñ»3»<ïî¶]+~¯gD*¡ª8öØY¶lÇ÷¹¢×þþ÷¿aùòùÜqÇa£ïX¤RAðõ*•ÖÔªRAj›}÷}‡»ï¾•©S/µuý}÷ÍáÝïÞìò¨A*‡H¥ )tgv‘NÜm»šü¾~ý ~øÅ¶ý~ýõÇpá…OpÈ!oŽ<¿;³ËóînÛµâ÷zF¤RAª‚?þñWüàâOz£zúPœhôO¨êù£€H¥‚à+êU*•Œ› ¾çškîåþûç8Úþú×O>y]ô¸ #A¨,¸y€¤ÐÙE:q·m¿ûý†þÀ–-¹öÚöëÔÖÅŒk®¹ææ‘4rV©<ï¿;³‹TjŸš’Jå¬RA¨Ž8âUn¹åwÜrËûøîw?<êö>ùɧ8çœpÖYg—at‚ xM½J¥5¸å"sÜ¡:¹æš{ùÈGžçœs>Ɇ 3ËÖ‘9n‚à+r3qõĉTê’BwféÄݶýä÷³Îêåå—#¼öÚ>üþ÷ ÚJõûg?{&7ß|{ñ ˈøÝ™]žwwÛ®¿§³Jk ɸ ‚ÿ9à€í\|ñã\|ñãÜ~û\®¸âD^ye²ký-^¼–ƒz‹o}k¡³Š’q_Q¯R©dÜA¨8{9í´g¹ýößðÄ?c×®qrÈW8ÿüÓ] ÚV¬˜Ï[oçºëþäj?‚ n ›H Ý™]¤wÛ®”ß=ô B!ƒûî»™þþïÐѱ]»æsàa®¾úx6ožh»Ñúý?ø¦9…k¯½×~%YU*Ï»ÄïÎ첪Ô>"• ‚PvöÙg€cŽy)ýÚo¿¼ë]ýÜsÏ!ÜsÏ!È÷Šo|ã/L›ö—^zŠ×CÁ!õ*•Žóz‚ T/ÍÍÌûsçö1wî´µõÑØ¸—ãßÄßþ6‹¿ým¿üåûùÛßfñÒKS¼î0–-;ŽË.{˜«¯~€Ë/?iä‹eŽ› >ÀŸR©!  ‰^¦üH Ý™]¤wÛ.TwҤݼûÝ›9î¸Ñ´ œþßéêú3·Ýö[^~ù§¼ùæ2þô§_ñ“Ÿü|äy¶oobùòù\rÉiLžü?œ|ò"ví:…ÛoŸ[0hóƒß¿ýíãyì±Yèzwi ¡Úü^Ž:ò¼‹ßÚE*µ¥RƒHPG‰FÑÐ …L´Xµ„–D*ê ö0yò.öÙg€É“˜8q3fô3mÚ;L›ö6S§¾ÃÞ½c8ì°7Øo¿Ì˜a½ž~íí&¯¼2™W^Ù‡—_žÌúõ3Ù±£‰M›¦²q£õÊ—VÍ|ö³ëøêWÿÊ?øyöìÉóZɸ ‚¯©Ô/˜&qEESTTÅÀ4AU¼˜P44$hh°þ7n1cŒ“`ìXëßqã;v±cŒ;HCC‚¦¦ì2€ñã÷2nÜ`ú•HX­ÆÆA-Ûž=cØwß]46Éz½ýv#--ýL˜°‡ñã÷2~ü¶l™ÈÁoaâÄ=L˜°‡‰w³iÓ¾uÔ«L𴛿æ&MÚÍš5ÒÞn²}ûxvìhbûö&žxâfÎÜÉ–-زe"[·Nà•WöÁ4çðæ›“xã ëÕ××ÌöíMú•åæ›`ýú™¼ýöÕœxâbþò—ƒ¼’ Â0ü¸ÅMÌ@;Vœ¦ Lzâ@žÀ-ßWù8bàìÞm½ol„Á]»Ù;¦‘ÆFÒåûŽ}›m{'ÐÔ˜`ÏîÞÙÁàäf’Ç65Aãַ蟴/MM¤Ë÷OlæÕ†éék`ò[o°«eFVÝ ¯¿Î¶©3³ê´çU^·VÝ©}¯°sÖìHÐ@‚¦F˜ôÒËl›y@Ö˜[^fSÓéûÚ½Û*{¹ùÀ¬ûh¾Ì¶ý¤©1‘n³u÷+¼Ø8ÔïîÝ  ¼Ê«ÍûgÕÿÒkì˜ù®ôgB"Á¬=}¼™=»­ë·v²wÒš­²Ý»aʘ·Ù18ž††¡û8v{ÆŒeïëºqã {÷$h—`ï^ëçÆqƒ$öÂØÆŽ…Äà cLH °{Ì8 ÁØ1V ý»³õh4`• n aJ L„I»wñöØFƒÐ4.ÁÀ®{úØçÀFÞ~»Ä`‚IaëÆÝŒ›ÞÈäæÛßJ0¸fŽàÕ·›HìM0c:¼þìymç6ò’ ƒ{A™Ï­ÙÍ¿öiâ=CïzØ»»ùØÍëšØ³µG6ððCc8aÁ~­‰»ïîcùïo‚½Ñ1œó©An¹9{9÷œ½,ÿ°g/|nŸýn/~~/ùetö þÊ^"ßÝ ûrÙ×öòíN«¼³sH²°û>³¬œuó]7š¾RïO?ýÿ—Gù;wÆ©§¶]Cimºù¾Ðý»]·ØûBýøÕïÕö¾Þý^ïøO*5"{Ú‰…ÕäAzÚc„KÐJSRé1ÿ$ÛH@CCvÑÞAÆ%å+ÅÂàÞ c³¯c/06§£½ ȹ.±'Aøâeì„qÙ²Ìàîc’ã°Æ3¸;Á˜¦ìë{ihÊÌàÀàðëv Ò0~ 4@«ÍÄn ±D¢!ý‘¤ûÍêc†¦1éÏ$$v'¬²ÌëvÒÐ8†„Û%ËÖ½¥îHì„Æqék¬1'hh̹n¯U7J%Ë 1v Ð0ÔÇ^` Ù×¥Þ7dÿœ„ÄëžÓe{ 1nLVÙàî4޵úHi÷ ŒO~Ö©²½0±Ñz?&Ùß;{ ¹1ûº»aŸ&ëšÔu;`ßñÙeÛÞi‡~Ó[Þ†–fë÷+uí;á€ÉÖûTù«;@Ù7»ÌÜïžcÇXecÇÀ [à°–_R¯gÞ„ùûCcòçÆ±ð×àChk•yѺn`¯õÚµÖ¿nõûönë>wî†MoÁ¤Fؾ˺ÏíðF?ìÜoî„7ßNþ»¶âÐw—¹öÚ{y×»vpÑEÿÁŽM"• ‚Ïèì©Ô”¸‰‰Š‚‰WP£kòŸ·î*ÏØ¡^iÀ ê&Œ³‚¹¦±0~Œk€æ&+€”|m€éaòx+`Ýw j¸4™dU© T5ÇÌ‚ã[áÈýáàiVзÍÃìyR*=ÿóçÆön‚ "•ú 5L,æõ A𔿽d½Ô˜!øÂ]ðÛ žëàƒ·òôÓ?æ‹_üwî¿ß'@‚P?øO*­$…îÌ.Ò‰»mW…ß8ìû=8s.,?ÿ'Ï*½ì²“9ãŒOñÍoþ…ßýî·pÀö«‰ßÙåyw·íZñ{=ãO©´LˆT*5Èâùð¿ ¡ízk¯‡œyæS\ý=üèGÇðÝï~ØÓ±B½Q¯R©dÜA¨.V¬…;ž¦äɯ¥’èÚ$Éí·ÏåÀÃìØÑÄàà•|ýëVvL‚ Ô¸y€¤ÐÙE:q·íjôû)‡ï°¶)aLnð£}±cÿ—ýöÛÉ›o.ãüóÿ^‘qÕ›ßåy}Ûµâ÷zF¤RAª‹ÀûÞß]¹>mnÀ;}úÛ,[vв_ÿúpV®œïúС©T¡ZØ>`mêëC6ožÈç?:^ø1Néõ°A¨j*p»îºë²^~ERèÎì"¸Ûv5úýSÛUy©4¹ªÔ.7NcñâOpûí‹ùð‡_Ä4»ø¯ÿúGY‡To~—ç}ôm׊ßGƒ©‡ƒÖ+¹g,`í!›,Ï,.Xî"• ‚P}œt0\öa8ùf¯Gb›@`]ô8^¸†eËŽãûß?Öë! BUS’Tjꄺ`ITCÁD…0µaÕ ÔQ¢Q4tB!-F¥P¹wÔTÆM„:aûðŒ›ëäYUê„x| —]v2‡òöÛo'ƒƒWòïÜÏ”)r–² xGòÇ­Zü¾yóD¾ñ0vìÿ²}{·Ýö[n¼ñNæÎíuÛn×õÚïò¼¾íZñ{ŠÜ)RE§K)Ñ%Ð  vÁ’(šÄMÌ€‚u4º‚01ã#”{ˆH¥‚ TN†Ç?³º*×§ÍU¥¥pÞy'6xá…©D"í<ðÀÁeïCj’¤R#BPWˆæJ¥Dö´KîiD‚ô´Pî¡V*7Aª/¤R¹é¦£hkû"×_ —]ö0·Þz‹¯õzX‚Ps˜fEUÓ4MS1z ((qK51ãI µP¹‡Hàæ’BwféÄݶ«Òïáê•JGâž{áä“ñÝïÇÂ…yë­ïò­o=ÈŒ;GÝv9êzî÷<¶Zð{%Û®¿—Š¢0 ƒÔ45£Ç@Q (LÃLà  (.÷‘JA¨N¶ˆÀŽÊôç¢TZˆ)SvñÕ¯þ•¯|å1–/?’Ûo? Ãðø¯† ø„R7à5"Ûz¨á´ ŠIo¢†3äÐBå1ÎÛîAJ$µ o¥7ضmE$r/MM{ùñaÅ 9‘AJA Ljå7Ëg(Tî"•z€¤ÐÙE:q·íªõû¶]0e|v™)׸n¿}.ííçqÁÿÁÂ…Ù±ã;Ü{¶n­Ø¸|áw‡}y…<ïÎì•Ü€·Ú©T„êäñÏÃEwÚ—+ÓŸRéH47ð™Ï¬ãÒKeÆ~ò“ð‡?¼×ëa BÅ(U*­v$ã&BuâãóJ+Aÿ÷`öìK¸þúc¸à‚5˜f_ü8Ó§¿íõðAp‰ššãæçóI3éìt/õ;š¶K©k·N±ëF²;µe–yäT‚A…¶¶)45yûÿ” àwü×v)uíÖ)vÝHö”m``ÞÞmÄb&O>iɂЙ³%ˆ›ÏPr¦­Ïû=÷Â=÷B °O}j=Ï>ûCî¿?ýéÑÜÿœ²ËïÏ»ŸïygöRmõˆH¥BÍòéOľ0‡†¯G"”ƒD~ö³çùõ¯_´ ~õIøã³pËÿóv`>¥£c\ð³goåûßoç7¿yÛ¶ÕÎÞw‚ R© ÔG= . ­–hh€ .˜ÃÑGO³ r'¸Î(Ï*­4ÝÝó8å”Ïrê©ÿÅôéï`š]üæ71N:鯇&Â(ÀÍdµ‘3{)«ÌÎ9§µè˜„êä?ÿó Ëïy¤R?âõóþ¯Mç{ß;Ž}÷ý&·ß~—]ö0Ï>ûCîºk S§:ÓÈýú¼û¯ý^κ~ô{Š¢g“Ö "• 5ÉŸÿ|<ãÇËÿKj‘]»9õÔ‡áòãaüX¸âÁÊtì³U¥£á=ïÙÌYgõré¥aÕª9üüçGsï½ïözX‚à‘J¡†¨‹ ­¹• ²páZ[¼Œ;4·´±pa™·—ömWZIž{n:Ë–Ç´i—òÛßN8ÜæMQ¾üåÇ8à€í^O„¨ƒ¿nþCRèÎ죒NÒÁM2Ài2µ´- §…¶… iE`ÔÒ¶… Zi.~éˆ4·.ÈoKëlظ†5av‹6ÓÒ¶`èóXЖñy4ÓºÀÎç12¹÷ÚÜÒJÛ‚ÔçŸì³¥9uC}“¼AZ[ ?O?–Tš½ˆë’YCgIÙ6¿?ï±X§žú>üáÏÑØ¸—'žø÷Üs gÕ[r"•úßïnÔ‘ x+ƒH¥BMòÐC'Xoš[Y°`6Í}½¬îíK–µÐÚÚÊì–f ÞÕ½ôh§¹u fÃÆ5kØ”/‚(J3­ ÐÒ·†5¥59XƒÉj«¥m!­ýÅÛonicA[ }×л©Ÿ–¶…´µô'ïÍçìæ‘?"̾ז6¶µÐ¿±—§6õÑO3-­si›ÝL_ïjRîÈG¾{nfSΘN8á!¶ÁÙó £»¤Ñ …9í´g9ï¼'9å”ç¹æšv~÷»¹<õT¦u…ªE¤RA¨ Zh[ÐÆì™œlš™ÑÒ ý}¼QrÌ5‰æfعs”A@ÿôõCsËŒ¡ì]Km-}l²ö÷õ²zõjz“×öõõÍ4OègÓšÕ¬.9hƒì{m¡­­ú7&ƒ6«¾MO±±ZÚògö¬¬¢Í e¥¥Ò*[U:þøÇC5Z[/¡¯¯™ÛnÓé鹉óÎû»×C„ºG7º3{Ù¥“þ>z×Éùyý}ô>e›VÐÓ̤IÖ<±Õ™ãm]À‚Ù™Áµ° ?s^\2S@ߦüs÷Fy¯£]ˆ‘¦kV°ÕùY¥^rë­ïãÖ[ßÇ¡‡¾Áyç=É3Ïü˜Ûn›ËÝw¿—;ï<Ôëá BMSS·K.¹$ëåWäbÎìÕô?ðìl’óùm™õÓ«Fû&Ñ:£x(”–W¯ac?X /V³zõêì mÁìd`ÕGooé3ÚFº×‘²j#eãì"·Ñ·]Žçý™gfðõ¯„3¾ÎwÆyçý7ß\Æ£ÞK[[áß­ZyÞG¢–ý^êu’q+5•q«ävf/å‹ü¡‡Š(ÉUôodCé1”´´ÒB¥ÄF;w¤ØÙד ÙJk•> ši› ÚúÙ¸f4 †È{¯}}ôÑBKË š7õÓßÜÊ‚¹Íô=µ kâ`!‰Ö@cö‘W~ýr¯—ç=uÐýôéoó¹Ï=Iw·Î3ÏìÇŸÿü–/?’±¶Ú‘ÀÍݶkå{¾ž)¸™˜Fœ¸£&TeƒOèëeu¦,×ÒLJ–„~èÛÄÆþf§ƒ‘äâ&a]ÒLkk $'è7·N‚þ>Òñ‰Ãú“òœÚe/[e­Ý”[ÜÒJJIíë-²½Éhï5™Í[Ø6›¹­;yjÓlÚ9›¶©Àx4+u“ì„Á„uz®½£lL(›7OäÚkÛ¹öÚv,x‰óÏ’þð;Äbm,_~$«VÍñzˆ‚PÕ‘Jãè‘G/Ýa WÈÿÄœÙ=ûøÎ~k¾–5á ègÓS½ô1ÛZQ¹ …{éݸ“–Ö Ì٩Ťæ|e®ªtRßZAš’S $&5—ž­Ê\Ej­µ^ ò®„í½}½¬éÝÈΖ6,\`-†èï§?yÑ(Ö& ù8C.õëÿÊëùy_³f^øŒwßý^¾ñ¿ðè£7±zõÌ™³Åq’q}Ûµò=ŸBÎ*†A$¨£„5›4=b¢Å¨eàh xë—U«2n\Cþ xm“œÏFÖٞšs'¸9žrlÀk¿¯–¶¹´ö?Åša¯½gO‚SNI¦FŸÿ*œ¼^Øêꈚ:«ÔKfÍÚÆ¹ç®åÜsŸ$ŸÂòåG²bÅ|¯‡%T!õ¹¯9nUµˆõPxoA¨O?½ÃŸ2ÊV’+'g7SŽfλßÄšÕ™‚§µ cîÞhå`’5÷-½u‰›ôÓ×»¦äàð©§¶ ý ç•V/½4…«¯>ž«¯>žãßĹç>ÉUW=ÀªUsX¾üH~8ÏAÒ‘JU±0ªi`¦ VV-D(d½"†9üz\ H Ý™½éäŽ;^Ê.li+¼™ìôoÚ”œdﬞ+$7¸µsJ‚Òg 6÷Ó·©‚™Åä&¾N· »ãŽ—‡ü¾mh‚ë’YžUêF»Ïû÷r@Q–°zõl®ºê6oþ—_þ08ü°{‘JGß¶ü^N[=Rô¬RSÒSÁ™‚ª‚adgÕ-JTóßr‘Jë›%KÞËé§èõ0„2rç/ÓÕõÏ¡‚{Î=|λA eeΜ-œ{qÆ3¼öZ3+VÌç–[Þïõ°R¯Ri‘Œ›‰a˜(ªF8FS’?kQb±±XŒ¨¦b†¤‚ïˆFÿÉ5×<ÿþµÃë¡£ä_ÿÚÁ÷¿ÿ Ñè?³ •”Jëè¬R/yþùi\qÅI¼ÿý±lÙqœvÚsìÞý-~þó;G¯‡%”@½J¥Å3nŠ‚’~¥ ­Ÿ‡~A¨<•”J…š`ãÆ©tvž@kkˆ«®:žãŽÛD"ÑÉŠ¿çÄ_ðzx‚P”âg•F£D“/-  †£ÄbɲXŒhXE ´û.Ûæg$…îÌ.R©»mWµßE*­h]ßøÝA_#ñàƒsñÅÿACC'>8›+®x˜_ŒòÍo>»߽¹ô†G9.7Û®¿×3EÏ*¢ÐF»²¯ ±ÿ>ðäp@Äý¾D*­ å-4m]´†W_݇+æ³råìÞ=Öë¡ 9Ô«Tê`ÞŠb EдvK5Mz CÑÐJè܈‰¤'ÐeÌ“3"“5#ì·ˆPPɳJ…ºÀ4÷%i'içØc_dñâµÜpÃÝüüçGqç‡òç?¿Çë! uŽƒU¥ š¦¢˜z$B$!¢ë¦‚ªi%Ls31ã Z4–<°>ãX­HÜ*jÄ#þÙà·\H Ý™]¤RwÛ®j¿÷ã`Lƒø½u}ãw}†G=ˆÏþtšš®à&ú+¯¾z-ßûÞ*æÎí±®øÝ™]¤Rû8JS˜˜Fœ8ªRÚÚS'2Ñr%VS'ÔK¢ &ºõZ ˆT*uÀÖK¡5 oír·‘Jà]ïÚÁâÅkY´hO=5ƒ8˜+æÓß/‹d*M½J¥E2nù¶QPTUUQ‡mv·â&¦G ƒii”¸‰Hµ« LÌxþ&2÷oÉ÷J‘­Ë{y/ïkìýö],Y:Þþõò^Þâýk¯íÃĉÇÑÖöE¾ýíãY´è ^{íZb1[o}Æ7ã¬å÷õ޽}Ü»Y5Ót°§›ib&Û6õº%L„`O;±äÄ6#¤§½´yn~͸uvº÷K8š¶K©k·N±ëF²;µ¹ùùŽñ»3»m[ïá¬ßÒyöâw—ëúÊïÇä6gÕË¢Eë˜:õÖ¬9‰ࢋöw¥/ñûPy=fÜÊ´o&ù·¬…j8˜¥0õ],!ª"• ‚`ŸÇ·/ÿþö’×#¦M{‡Å‹ŸdÑ¢u¬\y+VÌgË–‰¬ö(5p3õ!Ý´~ÈŒG -Œ,Ë‚Éòh0®xå9«T ÇÈjÉÈά”8SÇ05 3PRÐ&BP©MxeŽ›`ƒ-[&ªD£*Gñ*‹­#ÓÙ¹³‘+æsÛmm^±¾1uº •h,šL…ˆ1ÂêÐÂH P(‚ £R¨¼²ÔKÓ,PVïÎ*UÖ,šœãÖÅ’d«ÐCA‚!@ØûÃ7Óú£i»”ºvë»®Xz݉ͲI>ÄïÎì¶mÛvÁ”ñâ÷ Ôõ•ßmöå°nÝþ,Yr*'Ÿ¼ˆŸþtŸþôzvìø×_7Gõò¨Ú®d]?ú½TLÃUMÏ£×¢É šiWTTPTT%nQ…Ê“} A4FÍ[VœV•V"• B°òpÿ pó:wû‘Œ›Pš›X´híí&Gýrrƒßù¼úê>^­ê(Ðå“QHE#®ë˜0$•æ×—qÞ}ÎHò^`ï@ƒ"R© ‚Ï‘óJ…*¢¿¿‰nø7Üð;ì /^Ë“OþëÖíÏOz4·ß>×ë!V¥Ìq3 ˆÆb(¤æßÇ—h6ˆÓc%-L3¹ÕÚÈx'•Ö1"8³×’tâǶ«ÞïÉÓ\÷{CgIÙ6ñ»3{==ïO?=ƒK/=…øo¢Ñqì±&WñóŸßÉqǽ8ª¶ËY×~ ™‡…¸iB@A‰›V.y@€ pùèGA»jbD‚C"¡ÁŽ©(k^¤RAª›ÿù047Âex=A5{Y´h‹­åÀ·óƒ|ˆßÿþ0^|q_¯‡æ;JZUZHU "A%M.BHP¨¼XLj©9sŠJxIØšO7Î¥RÓ@×{0QÐÂ*qÔb½‚ ¸Å¶]p@æÉ7¡ìÞ=–o<Šo<Š9s¶púéÏðÈ#¿àùç§¥çà £@ 5Cƒ-J4½0²‡`(ˆŽµ†œ*/Ë`Gc€‰‰ýS¨œI¥F„`(‚n†Iœ8=‘ŒýP[ˆtâÌ^OÒ‰mW½ß+%•–ˆøÝ™]ž÷!ž~×]÷!Z[C\yå œxâF‰Nyd'ôBÅÆåG¿E‹&ÏHÍÜoL §Ë³*/߈ê@*µö;1Ô0KTÐCÖʇ€"d¨D£¥4_^2¹J!R© Ô8Ÿœ ç¼ÎÒÝíG2n‚Oèèèå çÐCßäæ›`åÊ#xæ™^«âT×É Û€7“8¦©¢EU”Œ®MCÕ{ˆƒç[®ór‚ ÔÉŒ› Ô ÝÝmtw·1kÖ6>ûÙuÜqÇoxì±Y<öX€+æ³sg£×Cò1ìøÐÔ†» ŠƒÊT@Q ôˆŽ‘œIgšzÈ:Ë´,‹,ê‘NœÙE:q·íª÷{r;ñ»ûu}åw›}yE%üþÒKSøîw?Ìa‡}‰üàƒÌ›÷:}}ß§»[çcûgÙÆåG¿W¹›íF‰FcĢТ²ÄÁ&¼ÎV•š:¡PrÓº4 j8ê’î;:dU© Ôm-ÐÝónp·‘J…*!ìeñâµ44$xúé¬\9Ÿüã]^«ìT—TZ{›îfâlU©¢©ºAi¢(í¨ªê(Å'‚PVD*„,b±6b±6¦O›Å‹×òË_þŽÁÁV®œÏòåóyë­ ^±1ˆ„ôœ vSç•jhZ*a^UÓ‡Ãhšm¥ Ò‰3»H'î¶]õ~©´bu}åw›}y…ü¾yóDººTŽ8â"Î=÷´¶nå‰'º¹óÎ_sÖY½eïO¤Ò"˜&fÖ PT´%Îw‘JË·  D*„:`lìºÆ}ËÝ~D*j„ü-ZÇi§=ËÊ•ó¹é¦#y≽–crºê—MíQ\*ÍZ‘³ÂL!Y7A¼boöÂÄqðö¯G#¾ç®»å®»eÒ¤Ý,Z´–K.ù+øÀˬ\y+WÎçå—'{=DÛTW°f&§šA»¦=!¡E¤ÒìUZÀZˆ‹%Ëb1¢a%Ðî»l›ŸñC ½\uý˜B÷kZ]üîÌîȶmÿý-—ç¹ÉY¥þó»¾¼¢ü¾sg#?ùÉøÌg>Ég|ŠÉ“xüñŸqß}7 öæ­3šqÕ»TjDBDtÃЉ„Bè¦A$$R\ÖÌÂÁªÒB+œ¯ˆ¨"• Bðì—á´[à¹Í^DªžSNyžSO}Ž%K V®œÏÊ•G°zõl¯‡5ŒêZUjM=C‹¢©qô®q5ŠF‡‡8ÞÇ-’>òÊÀÐuë€TÙÇM/I.Pp•DçÐ<7A¨aV­šÃ×¾öQÿ—G9ˆ+¯|ˆ^¸Žp¸‡ƒÞâõ𪔊¢Ò®)(ŠJXS1Í8ª¦¡šfÎjÓ‘q¸)Ö*RÓ@DˆD"VÊÏ´V™Ê47ûTC ½ÜuD:¿;µ;²mߏ_ñç– âwgvyÞÝmÛIÝÁÁ–/?’‡Z̉'.&‘hàþûoæá‡—ó¹Ï=ÉØ±ƒŽÚ®o©TAUãDB!+~ꉃ¡‰è6€fãl^LL#žŒTg‡£º‰œU*uÊþ~ò8Üý¬{}ȪRAàÃÞÄâÅkY´h?úÑ1ÜsÏ!Üwß»+>Žj”Jóij˜˜ƒS œmÀ €‚â£`-9«TêÙ„W*Æ#´òÈ#­œwÞhÚ¾öµV®ü=7ß|7ß|½½-^Ñ—(ªF{{Nô :Ü×Tj­~æ}ÙÙëMHQ )t§uD:¿;µ;]UúñsdU©Ûu}çw}yE½ø]×çñÑ~†£þG=în;îø5_úÒߘüêcg˜†‰¢¶À Ç0±Vš*˜†é ¥QI¥’Kå¬RA<äóGÁfÁîr¯ɸ BYxÿû_cÑ¢µœzê¿Ø¸q*7ß|º>Ïq;¹¿eӌà ŒÁˆ‘\MŠãC œ­*MMš…‚ö_Ð&B±mL‘U¥‚P üãï">•p>ö±òÙÏ®cåÊÛ¹ùæ#X¾üHþúWû[úû;XË%Ži˜˜=ÖÞ¸ŒH†¢¢9hÅTªŽÅˆ {EÑN’|‚¤ÐÙE:q·íšðûö9J¤R·ëúÎï6úò ñ»=ûÝw¿—³Ïî ¹”'ž8¥KâÙgÈå—?Œ¢¼å¨£Ò®šè‘º(*ª§Ç0QTÕÑ9«T„êçÃÁ·O†ã—»×‡H¥‚PÞóžÍ,ZdmðûÜsÓY¾üH~ùË÷»®úV•š?_Á]½{˜˜Â{•÷r°úq>àpY© ©ÔĈt¡Ç-™Ô…²#CÓÄD¥ÝY¿‚ å£g• ‚Pž{n:W\qW\q'žøÿùŸë¹ùæß¥¼ðÁƒ½bi:úŸ×YSÎLXk ?€Žâàà;R©‚ª©¤'·™&fæ ë¬R¿eÛüŒ¤ÐÙE:q·íšðûö]Loõç7ñ»3»<ïî¶]m~ðÁƒyé¥ÓÐÐɃÎæŠ+æÅ£\uÕöåLtÝÀT4ÂQ -FSÁÐu7W•öÐîÃvSÈY¥‚P§´L‚ _„™×¸×‡H¥‚à å--ZǸqÇW‘Tš9­¬Ð{{Œ~^!g• B"R© Ô ¦¹/W_}¼o³­ù  (ºn¢¦–š&†¡—{U©A$"Š`¤ßç{ÉY¥Nº3»H'î¶]~gcšÆÀ¸Ñï)^9«Ô~·Ñ—WˆßÙkÞäf»ºžŒ—¬˜*¢›¨šVÎU¥‘`•p¬ž‚‡É˼‚ xÌæoÀ»[Þñz$‚ T€ê[U ¦a€Àˆè˜(´kjyW•Z{·¥Êx/‚à+R畺¸É7AF‰¢Z).%.¹ u¡’BwféÄݶkÅï3'øóôñ»3»<ïî¶]+~¯gŠK¥yÎ'N͇«ME*„:¢ç<ÿŒâßX%!7Að¹]µÉ¦¥R|UiÞóIs±®˜ ‚+¤¤RAê†z Ö2)"•:Ÿ4÷å¿l›Ÿ‘º3»H'î¶]+~oS\ÞDV•úÒïò¼»_×~¯glÀ›ÂÄ4âIù4€êt9D©TêˆågÀêM°b­×#¡TãªÒrà`^ÀˆŠ9Ò©‚¢ù7~¡Øæòâ™ã&‚#R[ª9¡øöjV•¦ÎÙRÑ´0áp˜°¦¡*&z—³s¶Üâºë®ËzùI¡;³‹tânÛµâ÷“ïwwÞ¿;³ËóînÛµâ÷ªBQPl½ì5çì¬Ò¼çi9?g«RˆT*uÄ7Ž…iáÒUî´/7Aðþ—JÆGö®w •ª´«:=¨-šFqµÝwA› uÆö8h_¯G!‚D%³™†AœáXñyè =q#$˜:£4´æ¼Åu9·Ô’BwféÄݶkÅïgžâÏí@ÄïÎìò¼»Ûv­ø½–0"ABz=zˆ`¤xåP*µ”ùçÜR‘J¡Ž8ãP8÷HøÄoÜi_¤RAðþ—Jí)º •†årÊIDAT¬RAüÊv—÷q¡¦0õ],!šÚȤ3^j8F8=*/ Å@蘊ŠV¤†ÿ–`Õ’BwféÄݶkÅïŸÿ”H¥n×õ£ßåyw¿®ý>jL.=s? ƒH$Ž‹jÄ#)…±Py¹Hm©fb*ѨF±Å¥7à5“QažŽÃÅ;«4"• BqØ ¸ýl˜{½;í‹T*¾¢t©ÔDua ®$3n¦N¨ –D5”¤%Q4 ”Û x<_Uj¢‡Bè6lkßn‚ ÔrV© Ô#íÙZ(¨3õ. u Kè¢+U71íÉ8FA ˜ôÄ ”Ûx☆Ý™<•jdH¥qLSA G‰Fs_v¢É<‹ŒÁ``0HÖBŠBå5‚¤ÐÙE:q·íZñû7¿$g•º]×~—çÝýº~ô{ŠK.¹¤à+/¦N—¡²¤bÇ=™è‘[/{‡8J¦3Im™+N "A%šLE†L´ôªŠ|åΩTêˆ`ïRs¥×#¡”"•šzˆPŽt¨hQ¢ªá‚Tšy¶»]TeÄ„ž©TAÓCA U%k+8ÇÍDYš-ÁžŒb“¸¢&o^EU LT ”‹+ÂH$€þا v ¸Ð~§õ¯Ìq„ªEѢĒË6³W•Æ ˜:†©¡``˜d¢(·ÕJ‘ ¬ŸU Ö¿FÖk$]VAË'¥ÆMÌ€’¥›ñÊó{6i¡³J3Ó¬µþ¾³Ó›ºÅÞgöQκùÆ<š¾ªõ½ø=ùóöÂMî¯Õ÷âwyÞ+Y·ØûJùÝTÂáz(H0¤§â–BåÞáp^%¼5k³s8jÎj #B°§XrC#¤§=F˜å%|R"• BñÌ—à㿆¾Yþ¶%ã&¾¢³³6àuÎ8û—P”@Ñ´ŸÉXP †ÓØð攸‰‰Š‚‰WP…ÊAŠ ›ð ‚Pã8Û€7' ¸B LjŒ¯‘ÒdŠBÀ40LÀ´tcE¡¼†p3å;š¶K©k·N±ëF²;µ¹ŸR/ ñ»3{I~wsKYUê_¿ûñ»3{©¶z¤Lg•Ú9Ÿ4ÏÆr./!R© Ôw~~þÜõO¯G"‚ˈTZ•p4Z`;«&T±œL “÷øÓBå‚ #±mLq)ã&sÜAðΤREAÉzq½«ÜgwÕ6’BwféÄݶkÊï><=AüîÌ.Ï»»m׊ßë‡g•˜ºA¡[óÐ{Riå©TêŒïúúášžâ×:E2n‚à+D*‘|Á€‚ªi´«ªï‚6AêfÜApÌ=[ë%ˆ+"•šÖ¦sÁ=´)ªu^i,ŒJ€vM•S ")tgv‘NÜm»¦üîÃí@ÄïÎìò¼»Ûv­ø=EѳIk"RéÐJRE ³DS3!äY%ê3D*„:ã¼#­óñο³üm‹T*¾B¤Ò( &˜z„Š¢¢jš_£5AêfÜAÊI©TE‹ÆˆÅ¢„5EÓ4Ð#!‚Áqzt£À!•§ÐY¥~CRèÎì"¸ÛvMùÝÍí@JDüîÌ.Ï»»m׊ßë™W•êè†)«JAðÇ*°ì#pÜ/Êß¶H¥‚à+D*µ‚ª…Q5À41 ]6qÁˆT*BãlÞ\+ˆ‹Fý—mó3’BwféÄݶkÊïrV©«u}ëw"~wf©Ô>%H¥ÕƒH¥‚Pg̘O}Z®ñz$‚ ¸L½J¥£Ë¸ ‚ ø 73n‰Î¡yn‚ !›H Ý™]¤wÛ®)¿ïÚ c Ñ?_mâwgvyÞÝm»Vü^ψT*BmñÆ×áÐÁ›o—·]YU*¾¢^¥ÒV• ‚ ø˜”\ZîÀMß!g• ARèÎì"¸ÛvÍùÝ­-AdU©¿ýî3ÄïÎì¥Úä¬ÒC¤RA¨Cý|í>èñË™.‚ ¸H¥5€Ÿ¹¡B¸•q“9n‚ ø€š’J3S¦~ŽÂ%…îÌ.Ò‰»mלßÝܤÄïÎìò¼»Ûv­ø½ž©T„ÚâgÀ#›`ùÚò¶+7Aðõ*•ÖTÆMm»`Š2n‚ åD7º3»H'î¶]s~©Ôµº¾ö»Ï¿;³‹Tj‘JA¨-¾~,ì7¾±ª¼íŠT*¾B¤RA„ZÀg7A„r"›H Ý™]¤wÛ®9¿»µH‰ˆßÙåyw·íZñ{=#R© µÅ‡Â¹GÂ'~SÞvE*_Q¯RiMmÀ+‚ «J¡~³J…Š )tgv‘NÜm»æü.g•ºV××~÷âwgöRmÕ°é~¹©T„ÚâÐýàŽOÃa?öz$‚ ¸ˆH¥5€œU*‚œU*B-SSR©œU*)t;}y…øÝ™]6àu·íšó»Ï¿;³ËªRûˆT*Bí‘X W–¹ÍNë_ɸ ‚/¨W©´¦2n‚ ì€}ü³—› B¹ÀÍ$…îÌ.Ò‰»mפßÝØDV•úßï>BüîÌ.R©}D*¡öxúKpƯá™7½‰ .!R© B­àÆ…DçÐ<7AÀÍ$…îÌ.Ò‰»mפß}t^©øÝ™]žwwÛ®¿—މ  &_cÈdDÒå™ÅË=B¤RAj;>7= w>S¾6eU© øŠR¤RS25ba+ˆ aj1ªA$¨£D£hè„B&Z,ŒJ¡r µ‡2n‚ øE‹&ƒ6UUˆ›&˜&qEEUEEUâ˜&…Ë=D7º3»H'î¶]“~÷Ñ&¼âwgvyÞÝm»Vüžâºë®+ø*Ž®Ð4â&f@A@A ˜˜q —{ˆH¥‚ ÔËN7߆ï?Z¾6E*_1ºU¥¨‚5­§=3"AzÚc„)Pî¡V:λ®ËœU* R© …1uB!5´”¸‰‰Š‚‰WP…ʽ£¦¤R9«TRèvúò ñ»3»H¥î¶]“~÷âwgöŠ­*5S 2‚6E!`&`fE¡ÜCD*¡öøÜ‘p¬çÝY¾6E*_QŠTjD†oé¡hQ¢šbÉ¥I£ÎC •{DMI¥‚ €¯2n‚ ø5#VØH,Ÿ±P¹GÔ”TZ-H Ý™]¤wÛ®I¿»1ÇMÎ*õ¿ß}„øÝ™½rðV?"• ‚P{«À²Àq¿ðz$‚ ¸ÄèV•V/’q¡öض ¦ÈY¥‚ Ô¸y€¤ÐÙE:q·íšô»¶¿;³ËóînÛµâ÷z¦‚R©A$ØC{Æ_Ù«;TÂ)[™VpˆT*uÊ~á™/ÌMYU*¾¢^¥Ò ­*5ˆ#¨´§Ë¬ì´hÎ^*D"q´h,y kÃã]A¨2|”qA('JMôPv¦Í*.°‘t-7’BwféÄݶkÒï{­›ÆŽ<'ȪRÿûÝGˆßÙKµ9;›´6¨@ঠEódÌâ&¦G ƒiiÔÉ®#.›éÄL§ûá}&ån¿³³²u3éúÌ>œ¶3RÝ|c.Ö—ø}ôu3ñ­ß·ðõ«š²®ñâ}&â÷âíÈó.~Ͻ&wÌ™TÃiIåÆÓ9n˜&¦bi¦BW¢e=ÐUæ¸ BóüWáä•ðÂÖò´'sÜÁWtvÖç·²gÜŒH2ƒ–™E+„’ʬYÄM3ã WÀ'º–›BÿsðºíRêÚ­S캑ìNmn~¾£AüîÌ>j¿ûäôñ»3»<ïî¶]+~¯g¼Ë¸Ù™µtÆM5ˆu”h4¹8ÁD+qq‚dÜ¡ŽùËçà÷Á£eš$+7AðõšqçYÏj˜pO`ÐúQÑ¢DU•p¸‡`(ˆŽµˆ¬(Á1>ɸ ‚ ”“ nÀ›±O[ª$#³^ÑÌ=AÔpº¼Ô=ÜüŒ¤ÐÙE:q·íšõ»O¶¿;³ËóînÛµâ÷zFÎ*¡6¹étK&ýÅ“åiO¤RAðõ*•Ê‘W‚ Ô&>ɸ ‚ ” Ü<@RèÎì"¸ÛvÍú݃æK@üîÌ.Ï»»m׊ßë‘JA¨M¾Ö-ÍðõûÊÓžH¥‚à+D*A¨%D*¡‘ÀÍ$…îÌ.Ò‰»m׬ß˽ˆœUZ~÷ âwgöRmõxViMI¥ù'R© Ô)§ ç güÆë‘‚àõ*•z·¯ ä:°ž"pAr(wÆMæ¸ ‚àD*õI¡;³‹tânÛ5ëwŸÌq¿;³ËóînÛµâ÷z¦¦¤Ò\dU© Ô1ïÝîú4úãò´—“qKÐYžv…ŠÓ ¾« êU*•Œ› µ‰œU*B "›H Ý™]¤wÛ®Y¿—[*-qU©PŸÈóîÌ.R©}D*¡vI,…†+Ýi:ŸÜÖ¡ƒÞ‘üa~8lÈW»ÃÛá‡Ka}ž¶F¬?Jôt:áð2}>ó–ÂúyР¹¦sèçÌþËbËøÌ²|‘Açá4\™§\¨:D*A¨5Ê™uKtÍsËǼ¥ ·Áá ÐÐZ/¬×m6ÞmÕÉ|9ªŸ3ŽÄHõ: cƒ5Îrmt>sh›ÝÚÐ=fö_’-Ù¯–,ïdè3˼¾¡´n ®t#„Ê!›H Ý™]¤RwÛ®i¿WržÛ†+¡!#CÖÝ ´Á¼ÛmýBÌkzË—É[ºÞ »»‹_ÛÑzËg›×tCªë+¯$ÿgÖaeß´²eFžwgv‘Jí#R© µËÓ_‚3~ ϼ9ú¶œ®*]º:º‡²C™Ò]w7t´eH¥y$Æݪ¯ˆr¥Àn 42²my¤Ö\ÉQk zòµ™Iîµé:Öý•JçÁúßÂÙùäßÑØÖÕɱuè°tÃðLbŽ/dUim R© B­±mL©ðÊÒÿßÞÝýÆq•qÿ:ï}´„" {/•â\€&¢ !¤ö.ÆS.Òþ ãQ¥J\ع¤Éþ m$n:^‰ô ®j‹©ŽTÁíÙŠVmZ§/‰]Ç6g×;»Þuv×/»3óûH+;sffÏÌ™]?yžy™]€ím_¶{*WÒËæ:%½• = Íùeò¯l Tïú¢%˜[€Ù%¸¸ˆ/½ö tV®äÚûb½åÅükPBm˜L°“ {©½oä2cã¶µ‚Ó…V[¿ Y˜›meãDŠOÛ(…>Z»J¥‡»îRû$n ²re÷9jssþ„ú®’^^ŸsÜ..ÂâKJ¥=×ÐÁÓͶ‚Õ§ÚÛx¥³ÆmcÎrK[ûcn÷ù}³¡hxéó>Z»žU:¼R•Jõ¬Rérý—ðÂëðò›û_Wo©t!„ÅVTµõ)iæ® {ʦ»®*íWbl!ƒJ”½eÏvöiàúòË h§T:ÌzûÊíƒ]%Ð!ÛvmkŸåÞ€Ù+]ã£Ri9TµTªg•ŠHyfÆíÊE¶úvcPÉó^V ß¢³ ðÆœ¿2tv–ýZŠ`fÿ«™*³³{”œEŠG¥Ò P }´v•JwÝ¥÷£|^é\Ö]¦›½+K>°ZZ‚ÙEï4€…!‚¬……Îò½.ÌÒuehÖ{ûC¸u¿öÚ?ã¶­4`eZ»°@÷³³p¸qô·Ñç}´v]U:¼R•J{éªR‘ŠûÝÏàæøýßö¿®a®*]x£S>e©»l˜/m..ÂâÜ=nÀ»´GÙ±u5eû­#à\™¥\[¿òæÈ%Í!õ[o¶ +;÷NÛkÿŒÛ6è¼À ’«J¥åPÕR©7)¯§¿?9ϼ¼ÿué!ó¥¡À­ª¸©T:J¡Ö®Réá®»Ôãþâ?a}Ó_m¸_zV©Œ@Ÿ÷ÑÚU*ž2n"R~áxñðä൷d•ʸ—2nåPÕŒ[©®*é«qþôoøó¯à•·à×}=¥Rýñ‘IP©t”B­]¥ÒÃ]weÆý³ xüÿóýgáÕgà7?…'¾÷Þÿa5ëó~¸ë.˸W™J¥"R=Çg 0ðãó×ëÿóÈzëüwÕ¿Þº·Öàæmx÷Y¿¬Îs™ c—JmJ˜Z‚¤Al¿›J¥"R=›Ûþ\·×ކ߾ê§=v¾õ0œ? ß|~þœ>á§Ÿ»hn¯< ßçï÷É:|ú¹ðî? kwáÎܹ냽ÇüÅkwaý®Ÿf>ß„-ÿóÎl›pwËO_ß„­-ÿïökcË?skÛ÷«õ‘XÒ´ITo‘Ç)¶‘P¤ØM›ˆÀ›7ýk EÿÀú‡þè~á”*çàä1xè œ9÷ô¥×³gà+Àéã~úé>˜;ÿœ:î—9uÜgö.<'û@ïä1¸ñ>üàkþßí×ßß}ŽÍøŒá±¾ÞãçasËs›[>ýá×»¼¼ßÔÿÞþþõÌ>Ò 7·ýû~÷\gž­møÏ‡ðí‡}p¹½í¾µ æl÷|ï|>Ø™à½ÏàË÷wæÛ>øÌ¾ùù>^÷û1?í³ ¿óÓ>ßôû"?-ÿ{Þæk Ôî÷ ?ùi·7v—Ê?ý8Õ=ß­5?îy«k~œóó}tÇ yÞ/Ý×½oÞöÓònÞs¦å—ýàöàùú½ï½¦}´Ÿé~Õ58Û³½¯ïÞýnrýéjÛaîßýи֮q?ÜukÜ—Æ}´ö²ŒûQÐU¥"""R 5ƒi:×4˜Ú„û4"n"""R ÆPsëg±®†)ÐùmP‘sܪšN­*y5iÜ«Iã^MûwÝDDDD¤ ‚„FcÒŸJ¥""""¡ÀMDDD¤ JŽ›ˆˆˆHY(ã&"""R ÜDDDD B›ˆˆˆHA(p)n""""QÜÀͦ„aH†´n€<â<–4L´¨À0Ç€ŸQc]zãêè3ÖCH±Œ0Ö: ¸YÒ´IToШG4Ó~_Ø{Í£/ùâæhͧ±.9quôëa¿ ¤XFëjÅ Üœ£i˜€À4qnØyY¼Ì¥FBÁO&yÃë ÐWÇ€±ê»@Šeı®Ø1PÌÀ­ép5ƒÀ`j×vCT×—|á s h¬+@c\Æz¨ï)–ǺbÇ@17‘ *fàV3˜¦ÃgB®i0µ1æ‘âÒøŠè» JuÅŽbnÆPsëg±®†1cÌ#Å¥ñÐwA• ëŠ'&Ýñ$É2a’AÒhÕÂ-iØ>¡qÐæò""E¢ÀMD¦‡]ÆÇ]íóÕY†)>GfCû¼6pXë:󼼈H±(p‘B1­§G7cœóÛº–o—NãÔ?çPDdÊ)p‘Bª³ëü¶Q—·YQzÐ$Sä&" ÀMD¦GpÖú{²9ÛÊ„ùÌ8²ÌB+Xë>¿mÔå}¹´­sªŠHœ˜tDD: Ñ|‚»š‡`¢„ˆe²8$0I=!À‘Y‡ æs÷omyåØD¤hô¬R©,›†d¦Î·IDÊI›HEÌÌŒ¹`«L:os‰ Í|¹Àøg³Œ1ßÛËî´ã3Rd¸wÇ =œ£i"æƒ>Ó±¤a˜›ЄნqwŽËˆÃÌÿžË”a"¢v?k¹ý±+chpÆP## S’FB$à2²ýn“ˆ”’7‘ŠX[”QÛ›³ç\'@šÖu“i?×l Ï­­þûºŒ8¶õuC.c4Ð ÔR’ºÙ÷6‰H9éªRÙƒÃZG4h4Z¯$ðÁܨ«²ËX|uÐ[9š}~ßy/c¨¹ÎùrÝÓ3²"\Ò™Ë@îôße¤™Ãpu"ÓÄQ m‘#¥Œ›ˆ æ,–žòdÐ*—¾;DÊ-_J$ i´J‰½LD„¤aˆ‰êÌG–¸U&4AÐÊ:$É2a’õN¯GÄqH˜[ßÔe«LDT wöÇNÿ8¦Sq­S7аM"räfVWW·'݉Ãvýúu._¾¬‡Ì‹¥üÕ “”FÕÿ¦«T*"""R*•ŠÈá(à vED¦Œ2n""""Q™ŒÛµk×&Ý‘}©ÄÅ gÏžtDDDäUõâ„ÿþ˜ñ !é&IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/cartesian.png0000666000000000000000000014335700000000000016024 0ustar00‰PNG  IHDR–ÑèÔJ pHYsÄÄ•+ IDATxœìw|TUöÀ¿’Ы  ½ˆ"EŠ ĵ¬ùÉFVEwU,èê†XÐU!XQìZWl€eàêZW,à*AéUE`hÒ; )ï÷ÇÍÍLBÊ”×&ï|ùä3C2sï™wæÝ{Ï=åúöîÝk ‚ ‚ ‚P IN ‚ ‚ ‚ûÃAAA„*IvZAœ'˜“Mvv9Á`ñoüøÒÒÒøÍê$HNöDæ˜DFÀ¤6‚Ù¤§g$@ÆŒ ÌlºÒní¸fñ’“ÅЬÐׯêke²Žƒ9YLÌÊ¡ä ûÓHeÑõµêû9d Í"§¼?ùýi¤¥pË×Jï"Að89Yé¤ge‡-€‚s²ÉJO';Xá[£ HöÄt²rLiÌqì¹f‰†¹:f§“f4ƒÙd¥W°Àޝ7÷~?ƒAr²³Š >Agƒ x™œ¬âÅ’Ÿ@Æ(2Š·rƒ9ÙLÌÊ&Hì‰Ù&¥¹w·ÓŸÆ¤iöõ—È×Ìîk3ArŠñþ@£2øƒ9ÅFCÙÙAi®»º¦ȘQÊãQâu f31;À¤jú¹AH ÄpÏ$;[íÝúÓB ` Qi9L ªÐØ{r²&–Ú™õÒ•¡_£C.ü¤¥µ"';‡ =Ð|)s·©×çd ehX¨L0;‹‰ÙzgÙO má‹£`Y³K……/ØËUŠTNdLÂ?w"Ù% Õð×™qÍ”Œê3”¼˜´´4ÒÊÆÜTùºò®o€ŒIüe®¥?plÈÍ1×*šëPÙ5 ’æi‰ZÇ•áo¥dð€œ7›Âd/½ØÎÉJVøÓ&©…v¥ß¡8d/¹ž~Ò2³‹uç1*ƒaúôë)²Ov3•–NzvPµŸjÃRÙ"ýÎ ‚à)$TI¼J0§xQà'PÎbÀŸ6‰I¥ãÉs²Ž çæd“žU6xD-°UóÍiR¾9YCIÏG ’“­IůP»ÌeB‚”´ÈåT¯Í{mE¯+þcÔ׌œ,†¦‡-ÀŠÛÉ.+c¤¯S»¾~Zù‹C{¯e0‡¬ìȃzªºÑ\ÓÒíV¥ãòðãoUüêìtÒ‹¿Œ̘1ƒ @Zñ"9gn¸ 9¨ÿjÅöŠNö ÙYaº æ51ôô2¿«ªÃ ðt~Ã&‚aŽe²Eõ]ÁKˆá ž§þˆ6õ‚,@Æ$µ€›”V¼G™3÷ظó@“fÌ`Ò¨Ü4iz#T-þT¢nv™öf‡÷³³U{Á ›ð“VÒgñb1»¢˜ï(åô§¿.,)¶¼×•"òkV² +¾3fL*ÙÎÉ*þœ¿.Œ’뛆¿8|§ìû£Šj©ô:TuMý¤Åªã d„í¬sÈJOghzzGñ‚:\_ú¹?  ¸*¿C&É®õ¡/^0ún¼ÊïUøý´ ÿ¿¥²Åð]Á3H¨’  cÆ Tüy6YÙ9%qèå¾z@ñ¢®¢Åë¦`ñÂ?‡¬ô¡eþ¨ª€Z0‹ÃIrF1i†¿’ü(å,©‚ä' caÌ¢dÑ #CïûUŸÙ*^nZEøº°X’R×·‚~ÒÒdG¸Ë]ùuˆîš–‘Ž+”ˆŒ“ÈÉÎyW‚ÊS®Cüþl‚ÁP[ÚûÐábþX¾CÊ^²š÷‡ªµòã'‡ ~úw~%iX)[¤ßYÛ+O ‚àÄpϣª]>6ƽbB¡&¶ÜA;2&¥•ħsTå¢lÂâ×ã’3V"¼f% ¼²(EN6ƒ¨em¯+Y¬•¹¾õS²PŒ—Ø®id:® ?´ i‡Ød‘$,Ö_…#eƒÊ`PâPr­bù™!»‰”,æõ-”-Òï¬ä:‚'ÃA¼JÉn­ª`“V6ö&'‹ôlŠëæû!';TM(-´@+ü›²Õ9eC)¢’#I•U ò§‘1)Mí6oÊaî\µÛÌžHv`ÇÔ²JNˆþšU¸pŪ·ŠæuT°`,yƒ¦ÂE`”Ä{M«Òñ1ý•9Š“zÓŠ~CŸÓàÏÌ™KN*Œ&0 t¢oUߡʫLöJ/n¤álP¢Çâ6µ3È Ù"þ. ‚àE$ÇAT}Hʆ£‡€#}]E¨ C9ÙÁrß/‘]Óu\Åç f+/N)yʼ·TN†þ^”ü1‚全LJ*[þ4Fi׈?ÍBÙâý. ‚Pƒ xœ@F9%Dñ㤑Vm†@“ÂwjKÕ~…1TØOZxª6 CUk ; @©¸s½€+½Ô÷* шSÎHˆøšiyʾÖ -cRés"}]¨xý2Ÿ;ͤ%^„×46Wòy2¥Cjü¼7,4)Tº4Ô_$ß!3e7¿Êó(û}·T¶8¿‹‚ T_|{÷î5œBAb&ü°³²†› ‚`ª$‚ $&%C141A,DB•A„ÄǯbóAëP%AAAªÄgF܆Ü9s8p`\m|ôüñpðà±4f΄ÆãêB0‰hômðä“ðÀåÿýöÛáï‡5LP03îq!q˜3g³gÏf̘1ŽÊapï½0aBùàxôQðùì•«:b÷=¾?¤¥Áÿ{ìßj׆iÓ l/Á \úïï½W^©ž¿ñ\s½ò ±sãðê«Ð¤‰:~£sçÐß C‰“'C½z°x1tì蜬‚ ”ÆÜ9sbzŸaÀˆÊh4^zéX£ uk5°¤¦Bv6LŸn‚ÀB\D¢ïmÛÔä*T©¬ÑðûßÃ+¯¨çééj'Qp'±ÞãBbâ´¾û n½U=Ÿ0áX£àÿþO…9Üv›ÚdbÇ.¿÷ž2’’`Ö¬ÒF¨5ÀĉpñÅ*Êàφ¢"[DóNßソ˜©oG=zǨvmX·š7¯øµ¯¼¢v¤;Ö¬Q;‚{¹æxë-8çøê«Ê½Dƒ+—ô•WÂŒ¶‰(B%8éq¸þzãþ»ß©ÅeEã‡aÀå—«¹K/…?´WN!:€.]`ëVåQ¸ë®Š_»ktꤢ ÊóX ‚à Ž•c-(€ûïWÏŸzªr£à†Tþî]™i½|BìÌ›§Œ†ädµ³TUhÙóÏ«×Μ©Þ+‚wY¶L ÉÉjl¨lüðùT.\:Êx˜5Ë>9…èyâ e4ôí ùKå¯=î¸P~Ëßþ¹¹ÖË'BÕ8ªôæ›ÊsЮ]È%]>ŸJ¤xá kq’ªô­ ÂQ£”~«¢eKª0vl|² Ö nmo᤾ÇS·ÜrlKy´lsî¿_ -ÄŠÕ:ß¶M%Aƒ 1KŠ`õñ§?ÁI'Á¦M¡°VÁdL÷ ªTT§œ«WGê*•ëpë­Ê€ÜÅ7ßÀÀP¿¾Š9nÔ(²÷íÞ ­Z©j @ïÞÖÊ)Bå8ª´fZ(&%©Í¡–-#{ßáÃЦ ìÜ Ÿ|*º ¸‡{îQ„hCÊfÎTeYÛ¶…µk•'Jçp$Té³Ï”ÑТ…:»!ô<öÚkª¬§à.ÆWéé‘  rVn¾Y=Ÿ<Ù|¹Ap?“'+Áu×En4€ UÒ%žõ$¸‡½{UHÀÃG÷Þ!C }{X¿^U×ÁY UÒÈí·CJJt}|²Ú±ÈËSñ¯‚ýT¤ïŸ~R»}©©pÇÑ·{çêñÝwÕΡàÄ­í-œÐ÷¾}*·T˜c´Œ©ÊwΙ š+›°RçS¦¨ Iƒ©ü†hHJ }t¸²?2¦{ 3õmûpÁ |ü±r7Ž[zyñE8z4¶6„Ø©HßÏ<£‡‡Nˆ¾Ýöíá •Q8uj ¦#‡y 'ôý¯Á¡C0`tëýû4PyÏ>k®l^À*†6ùb1AÍ)5kÂìÙðóϦ‰æidL÷fêÛöP¥iÓTŽÃàÁ±-.A•ø<é$UëûƒLOˆ‘C‡B»…Ús :Q~êTIr/ñúëêQ/þcAÿú—*ã)8Ï矫0£Ö­cÏ=iÐ@ ªRŸ Îak¨’a„pûóŸcïÏçSniJ NPž¾gÌP5ºO?ºw½íK.ÆaùrXº4!S·¶·°[ßkתRÌõê©DØXéØQ…ÃäæªÊ}BäX¥s=Gßr Ô¨{;7Ü ßxC„3Ó½EÂVUZ¼N;My6oŽ>¿!œÝ»¡Y35€lÜ]"`>ƒ)7ò”)ê ¾x9RU̺ûnxúiSÄ¡ 2Ë9 Ç®ªJãÆ©Â×\£†ñðÖ[ªÞ½U…6Á9vìPssQ‘ S>ñÄØÛ**R••‚AU½ï¬³LS„(°5T);[=ŸÑª ÏàÁj0‘%gY¿^ µj…ÜÉñ0l˜z|÷] W»3fL©;yçõxíµñ·5dˆ*½p¡ªÞ'8Gv6äçÃyçÅg4€J’ÖUõ÷Eû±-TÉ0T8 ˜³¸•0ðöÛæ´'DFY}ëë?x°ŠE—3ÏT'‰oØ ÕQÜ‚¸µ½…ú^½V­R‹ýsÏ¿½ÚµÕy? ›JÑ`…Îõõ欦ÊÐalÿþ·„+Å‹ŒéÞ"!«*­\©ª!wœy.Æ‹.‚† aÉÕ¾`eõ­ ‡k®1§ý¤$¸â õ\êv»©Àá-ìÔ÷¿ÿ­‡ Q¥œÍ@ï¼#^ËH1[ç6@NŽ:ccð`sÚìÓü~ز~øÁœ6½ŠŒéÞ"!«*éêGƒÇ— Nj*\y¥z®½‚½üô“JdnØ.¸À¼vµ^Åp„êÍþ£‡ 1¯ÍAƒ iS•t½h‘yí ‘£Ã‰.¾êÖ5§MŸ/´©¤¿7‚ Ø‹m¡J}¤/¿ÜŒCüáêQçOÖ®om°]~¹ª³mªÐ…•+U…à,âÖövé{ûvøþ{5v˜¹ñP£F(¬eæLóڭΘ­s=7èœ5³Ðkˆ?4·]¯!cº·H¸P¥;Ô䚪’¤Ìäw¿Så;W­R»K‚õ„ë[‡˜•·¢IIQ‡Á:0Ppqk{ »ôýÙg*”èœsTH‹™„®T5fê<„ùóUÁŒXÏn¨ˆ³ÏVŒ+TEE!6dL÷ ª4k–¸õ o&))ªö?À{ï™Û¶P9:y¹vmó BM8Ÿ}f~Û‚ 8Ï'Ÿ¨ÇK/5¿í³ÎR›JkÖ¨JÁ>thòE™o¦¦†¼SŸ~jnÛ‚ T-¡JzáwñÅfôv,⺴­o}½/ºHí,™6¾ú òòÌo_ˆqk{ ;ô]X¨6•~ÿ{óÛONÍ9’+U5fê\瘚¬Ñß—ÿþךö½€ŒéÞ"¡€3 hѶmSñê'Ÿl~ÀñÇ«zÑÛ¶©¤8Áz.¼>ÿ¦N5¯Ü^YºwWÉ×_­ÂA°‡ÌÌLKÏs˜?úõƒöíá—_¬écæL²4`|÷5}¥Ù¿_ÍÇ……j>>áóûظÚ´QE9vîTF¢ ö`y¨ÒÊ•jðhÙºvµ¦úõU û8xPú–”d' By_|a]‚ ؾ§Ï?ߺ>.¸@-*çÍS¹v‚õ|þ¹ÚÄ;ýtkŒ€Ö­¡KØ·O ‚ ؇å¡Jzr8÷\UJÍ*tŒ¬®Þ$XÇœ9søòK8zú÷W»KV¡„ÃÁYÄ­í-ìÐ÷—_ªG+ò£4zS©¨H-h…Š1K纘…UaJšAƒÔã×_[ÛOuEÆto‘PU•ôMmu˜‰Ž‡Ÿ5 ¬íËë 8°$©ÑJo¨S¤““aÁåœA*px «õ— ²knÐc–P>fèÜ0¬ÏiÔèM%m€ Ñ!cº·H˜ªJ…… œßýÎÊž CèØöìQ¥_ë Ó¡DVQ¿>ôí«¾KÿûŸµ} ‚`ß¹¹*‡ÉJ%„ƨÏ?WžÁ:–.U¡É͛é§ZÛ—ö8ääHñ A°KC•–-S1ˆmÚ¨« Ÿ ë˜>}>6ÀqÇÁi§Yߟž ¾ùÆú¾„ò·¶·°Zß³g«G; tíªbâwî„Å‹­ï/Q1CçzCéüó­ MepvëGŽHžC,Șî-&TI/ô´KÑjÄp°‡}ûúêz'ÙpˆþzÉ8çâÖöVë[Ï v|­|¾PÝ]þU83t®sѬSÒœ}¶zÔ†¨92¦{‹„ UÒ“ƒ¾¹­fÐ ÿðw¯=}zÃje5”p €5TžÃ¡Cöô)‚5äç«ðP‡´Ù®û/†ƒu9¢ÂI}>kÞÃÑ«o¿µ§?A, U2ŒÐÍ|æ™fôR5õêA  âXeÂòóáë¯ û ‡zõ gO•çðÃöô)”FÜÚ‰Ç7œÏù#¦³>†÷Z©ïE‹àðaBdU¹Î²œ{®òŽ~û­ê[8–xuþí·*× GëóV4gœ¡çÎUóƒ92¦{‹„Uúùgؾ]ÆÖ¡ƒ½D†^Ì~õ•}}z‰ àÈ‘tíªÎæ° =AH‚´3ˆ[;±øæ‘ó™ÎÙ´ñýVê[WS²kC  qc•uô¨Wñê\Ϲ:,ÌZ´€¶mÕ!°Ë–Ù×ou@Æto‘¡Jzpîßßú$©pt"­”h³}]­®’Um8èAÊgýôLo;…)ÃÛ:-J¹è¹!°·_™¬Eú:ÛE¸×AëI w_Äú|Μ9Çü^/ðZ´XwûÑ<ï×êÔU«TY8»úõÊs=9èØR»ú0@ý?'G…¢9}¼ö¼¼{\ž»ïùŒG®æ1þÆ”ám™³`}¥¯ÏÌ̬ôÇ 9 #dükÃÁ®ëSöÀ07èËMÏã¹Ç÷íSÞèädåI²SþNX (ƒÔék(Ïå¹[Ÿ‡ßç±¶£ñ†aó[èÞ–/WqzGÀ..¼PUVzûm6ÌÞ¾«3¹¹Ð¨‘Šcݱþ8Vß›6©ïU·nöö-îg=ÓGŒ`Úú2¿n{S¦ §m”­eff2fÌsD+fÃZÒ¤‰*j§7úàA²TT»wCÆöõ]Ýùè#¸ì2e Ú½ó¿d ôêíÛÃ/¿ØÛ· xKB•öï‡+T%;êü—Eï†ËQôæòý÷ö'¿…Ó¿HAÊÒ–áSf1kVñÏ”ëh£Ñ`ÚÛ`w+¨" ýú)ÃAr¥ÌE#±«ôz8§ž uëºu*¯Rk±¤ªÒ‚ªªÒi§AíÚfôr`˜5èÉ¡S§ÍŽô¯Ã•æÍs¤{OSž»R¨¾X¥omôŸ~º%ÍW‰žäë|,ñè\Ï vç7€Ú ì×O=—¸È‘1Ý[˜©oKª*é…Þ!¶›Þ½ÕÄêÕ¡<!~ô÷îškl,§†xœC*px «ô­ï]»£5Ú-åº%VïÛ§NäNIqN¯Ú•¤#GÆtoáúªJúæÕ»v“’Ê«¯ƒ9äåÙhSYzõRÉw+WÊAp‚P%m‡»*LéèQu†@ß¾ÎȨ1dñbUÂSˆŸï¾Sá_º0‰hÃA6•Áz, UÒ‡t959@è´j‰e5‡ Trt·n°b…3.ÎZµTÿEE¡ˆ`âÖöVè{Å µѱ£*²àuëªÚÂB)ßY–Xu®7çôœëz“rþ|5?U#cº·pu¨Ò–-ê§~}èÔÉŒÖcC.$sÐØYg9ëâìÝ[=Ê Òö"nmoa…¾µ'Ú©üždS©4±ê\ϱNy¢A׬™ ›’ÊJ‘!cº·pu¨Ò‚ê±W/H²ìx¹ªé×O%M-_{ö8'GuAO²v—Ö-‹ÞYÒß3Am8hãß)ôW ‡ø9rDÅ>_¨x…Sôé£%ÏA¬ÅôP%½ s*¿AS»¶’!üÀ!!6 C§½žu–³.N=9ˆá`/âÖöVè{áBõè´á 7?tyiA‹ÎøòóUIT§ÏÅСÑ27D†ŒéÞÂÕ¡JzrÐ <'‘%sX¹R¹€ý~hÝÚYg·n*ùýçŸaï^ÇÄðâÖöfë;7Wå8ø|Êí$'œ]º(£AÏWBl:×J:üËIôšCt2¦{ ׆*Fè¦uâà·²è%=¸ ±ñí·êÑ “Cjª:•Ô‰¡‚ ¸ŸeË  @-Øë×wZšP"¯Ì ñᦹA¯9/–iA°SC•¶n…ß~S.ËŽÍh9>tÌåüùª zrÕ†˜Ó.NÙY²§u.Ø‹ÙúÖUМSÒȦұD«ó¢¢Pe*§sßN}TÈÒ²epèÓÒ8O4:ÿþ{õا:WÇ-ø|27DŠŒéÞ•¡Jú&uÓõøÃÎÊ‘h,[¦*RuêMš„~ï§œå`/nй`fêÛ­sCݺʘ),” mεᠽ6nBÏdn¨Ó½…™ú6Í7 '½ s:ÌF<Ñ¡'·…)AhrX¶L•StCù_AHd233-i×ísÃâÅjnЇ UãfÃAÏ´§Ks±$TÉmè0›… å ¸h¯¨Ž\œÍš©rŠû÷Æ NKSýqƒÎk3fLÉÏ9çœcJ›;v¨’Îõë«øs·¡Ç6½ö2‘ÞãEE!ï}Ù¹Á èM% UªÓ½…ëB•Î:k`I¹=·¹£A…Ùté¢Ând"r´áPvWÉ-.NÙY²·è\°³ô­ç…nÝT¾™ÛÐc›¹Î׬½{¡eKuø›Û8åå^½ZUóÊGÆtoẪJ¿þª’ËZ´P§5»=AÈÎRdìÚ?ÿ¬ªf¸1ÄÄp·£ïM·Ž!:©±Û¶A0è´4‰AEJn¡n]èØQ²zµÓÒBõÃÃáí·WÊÒw+b8D‡vE÷ésl•,·¸8õbDïj Öá ö`–¾õ½yꩦ4g:>ŸÌ šHuîæ0%þ¾ÉÜP12¦{ ×…*†²ÜVn/=9He¥ÈГhxV[\œ29؇[t.؃Yúv»ÇÄpÐDªóÊæ· ›JU#cº·p]¨Rx«[éÞ]N÷ÓO°gÓÒ¸7WÍÐtíªâ¦×¬‘XVApEE°R9£]=7ˆá9GŽ„ŒÁÞ½•¥2ô÷MÂXÁ|L1¾ÿþ0à^w4¨CjN;M=Ÿ?ßYYÜŽa„<3ånqqÖ®­bY áÇ–¦zã ö`†¾×­S Í–-U[éÛW=.Z¤ââ½J$:_¼X]£îÝ¡^=„ŠíqІ«p,2¦{ W…*åæÂæÍuµìf´kU•*gÝ:ؽ[•<õûÕì/ IDATý»›\œÚX• ÂZܤsÁzÌÐ÷ŠêÑÍÞP=Ú¶…ÇaÕ*§¥qŽHt^Ù†’›hßjÕR ïûö9-;‘1Ý[¸*Té§ŸÔŽo—.êFu3}ú¨Gñ8T޾>}ûºÿ`5½(Ñ‹AÜA¢ò:H¸RåhÃA_/·R£œ|²z.›J‚`.qú¦tsE%MøäàõšÝ•^Q©<ÜäâÃÁܤsÁzÌÐw"Ú½`³r8I$:ßTr;Úp¹¡|dL÷® UJ¤É¡S'hÐ~û ¶lqZ÷RÕäà&§6Xer°7é\°3ô‰Ñ=ÖyÙp¨Jç»w«³}jÖLŒBý½CùȘî-\ª¤oJmÝ»™¤¤Ð.º—'ˆÊ(,TI‚»J;ªÄ÷õëÕ!„‚ 8O~¾ c÷羪””¤ªð9â´4îDo(õì©Æ\·#¡J‚` q:™, p>AÚÀ`;XÈB>åSÞå]Þà Þæm>äC¾ã;Ö³žœ)ï±zµJlÓN8¡ü׸ÉÅ™’¢ö1§øßüÀr–³ªË<¤BºÐ›ÞœÁœË¹t ƒåòêäÀÊ&·¹8O>Y°+WVœ—!ćÛt.XËÀ™={vÌïO´ %PcÞÊ•°p!Ö÷· |ÁÌe. YÈüÈQŽVù¾4 ÝèG?Îâ,Îå\Ñ(nyªºÇÍphÛVlÙ¶MÝäæ’ÀN cº·0Sßq?ý¤’ŒÛ·Wq‰@x¨’aXS5h{x—wÉ&›9Ì9Æ{P‡:´£Çs*·Xqˆå,góø†oøœÏYÞ(þןþŒd$Wq©¤šö.T•MsæÌqÕn…^œˆá`nÓ¹`-ñºµÕãæùä3“™<˳|Çw%¿¯K]2ó8~ô£;Ý©Oý*ÛÛÎv²¹Ìe6³ù–o™]üï¯ü•! á.î"@ Êy&œÊîñmÛTA‘úõUéõDá”SÄp¨Ó½…©ú6âࡇ  ãþûãiÅ~.¹DÉ[EF‘1˘e 4„ýd 2^6^6v»âïÄ0Œ|#ߘeÌ2n4n4êuKúii´4&ÃÆá¸ûÈË3Œš5յٻסmbéR%s§NNK"Õ‡±cÇÆüÞ=Ô=9w®‰YLn®a¤¤FR’a8`B{F®ñ¬ñ¬ÑÚh]2^×1êÃáÆ§Æ§Fž‘'†aì1öÓŒiÆïŒß•šƒúý"£(î>>úHéóœsLØF{LÉ‘á´$‚P}ˆ+9zõjõ˜H»J`ÞAp XÀïøçs>s˜C}ê“N:¿ò+_ñ7r#Mh¿À@2ÉœÇy¼ÌËlg;/ñ'q›ÙÌ(FÑ‘Ž¼Â+Rs+WB^žÚQjØÐ±m¡sg•góË/J~Aœ£¨(±**ijÖT'Ñ…*ËÅBELg:éÌÜÁF6Ò<Çsle+Ó˜Æïù½ižâF4b8Ãù‚/ØÈFF3šzÔcó¸„K8“3É!'®>´'ºwo¶ñF ‚ùÄe8è8Ö#Gâe ÞéìàFn¤/}ùš¯i@åQ6±‰‰L¤-mM“µ<êP‡Œ`%+yŸ÷éA¶°…›¸‰>ôa.scjW_ªŒÝV¡V-r¾`ÌÅm:¬%}oع¹pâ‰Ð(þœ][ÑcŸ^(GËПþ\Çuld#]éÊ»¼ËÖ0’‘4 y–ƒ?Oð[ÙÊ“Í,ylAO‹©Åf¤¼Át¥+¯ò*É$“AëYÏßø›å“BY’Hb0ƒYÄ"Þâ-ZÒ’%,á Î`$#9À¨ÚÓ“CU»JnŒ‹Ô„ö‚ æâF æ’™™YòOE%½HK$oƒF}Ñæ9â£E?ú1Ÿù4¥)¯ð ËYÎP†’åó¨¨G=îã>~åWF3šTRy“79‰“x™—Ë-éZÙ=ž¨†C‡œ¬Îù‘ó9J#cº·pÅp¿þªŒ‡Ö­£Nw8ÍšA‹°¿: 3¶³! a8ÃÙÅ.1ˆ¬`hŒ³uÞ’Hâü‘5¬áà^ ݘCäV¦ÞeKÄ’¦b8B|Œ3¦ÔO¬èÄè“N2I0цC4ÞèyÌ£'=™Ä$îâ.~ægnàjPÃ)#§ x‚'XÅ*.äBö³ŸŒàb.f ["jcËغU•3m×ÎbMFŸócⳈÙpÐ ´®]ÓåÍ1‹Yt§;ðu¨Ã+¼Â—|IÜU^¢uxŒÇXÊRzÒ“ldƒxˆ‡ª|\Ã5¬bçs>»ØÅe\ÆhFS@A…:4„Õ­hÏ—Ì ¥‘1Ý[¸"T)‘w• jÃa?û¹‚+È$€±Œe6³iMk›$ŒRxœÇùНhNsæ0‡Þôf>å»X9L BµÅú)º¼AÌEÏ ‰ªUç9,e)½éÍù/hÄ'|BYÔ$1NAmA >ã3žà Æ3ž‹¹˜Ýì.÷õá‡DD¤Á\â6N:)1]^zr(/AzëàC>¤ ø”OÃÇãUcaƒXÈBØÂÎælÞác^Í®’õݨ4o‡æMNKSýp£ÎëˆUß»vÁÎÊkÙ¢…ÉBÙDe›JðÀ6ЛÞ,cq‘½š@IŒf4_ó5Çqœ Ç=ÒŸ(`‰[ŠU£ X1J#cº·p1áÉo>_⺼ÂcYg0ƒK¹”Ãf8Ãù/ÿ¥! t|røð‘AÙdSƒ<Ã3\Çu,^VHAZx׫Wu;nÕwçÎêQ<æãV Ö«¾õÜȆCjj(Azáâ"nåVÆ3žÔàu^ç!ruqŒX¨O}îú殯ô•\É4¦%|˜’Fen!cº·ppP¢Øi×RR”7úàA§¥„Ä&jÃAï*µjuÕx’P.¯ùÌç ® Ÿ|îâ.îî=ð®á '‡3z×â#>*)Û:–±¾ÇÍúÃÁܬsÁ|bÑw¢WTzš§™ÈDRHá=ÞãœÞõïÌ eu®?÷ÈÞ§óPH!WqÿãHáÞèŸvV· cº·p4TIï*…'¿%ŠËë~áb.懸–k™ÈDúôV9 ‹©ƒí¼Fx¹½s8‡l²Kä^à…rßãf}ëïeø¡~Bü¸Yç‚ùÄ¢o}Ï%¢á0éÜÇ}Lc¿ç÷%‡azÅp(«s½©Ô»7<Ê£ÜÌÍä‘Çe\ÆJV: a|ÈÜPÓ½…£¡J‰:9ìd'¿ç÷ìd'p¯ò*I$qâ‰Ð¼¹:ègÝ:§¥´=)êIr0ƒù'ÿàîàc>vH²ØÉAœ¡¼M¥Dàk¾æT<ÿD&2Œaž3Âùí7Ö£OŒöáã9žã ®`û¸˜‹ÙÊV§ÅŒ ™ÁLñ8¸Ýå•GCÂÏüLz0“™¥Îiðꑟ˖©ç={†~?‚<ȃQÄU\ÅJùºYßᓃ=HVáf 拾1Ça5«Â (à.î"ô’¿z*Ô¨¡Ê;{!.>\çz.ìÕ+tbt2ɼÅ[ô§?ÙÈe\Æ!§|„±–FÆto!¡JQ``p ·ð-ßÒ’–|Â'Ô£ôñÈ^5V®„¼)½'v£NÛ·W‰¨n'Ÿ|þÀø…_8Óx“7Ë=øÓ«›Jz.,k84¥)ó1 iÈLf’I¦½Âňž$9Zâ#*ÃáÈÕÄЦMè÷nuy}ÆgŒf4oð=éYîëÂ'/…·„'F—G-jñoþ?ßó=·q†kõ­Ñ;Kºl°?n×¹?™™™¥~¢!ÑòÒIçk¾¦)Mù€¨KÝr_§ÇF/…*•GWºò6o—Ò˜ÉL$ŒæÍ¡^=ص öìqZç‘1Ý[˜©ï¨ö†ôBL×DÖ¸Ñåõ ¿ðGþHEd’ɆTøÚÖ­áøãUhËúõêóyðª¡'Ö à5^£}9p¤=ƈ^¼ˆKÚ<Üx æ2f̘RÿÆxÐ÷Z"ä7¼Æk<Çs¤’Êû¼O+ZUøZ/úß±CmÖ­[y”‹¸ˆ§y𻹛?ñ'ºÒ•“9Ù&i£ÇçSßÏÅ‹Õ÷µ_?§%rÓ½…c¡JÚÅçöÉᇸ‚+ØË^.çräÁJ_ïóy/\©  ·[ž;:œ^ôâ^à.îâ;¾³XºøÐßOqI ‚=$Êܰ…ÜÆm<Ïó¨üTè= ) ~üQåqxm$õì©’Ã+c£Æ0r+¸‚ýì·^À8<AˆŸ˜ ‡²îh7¹¼ nåVV°‚Îtf:ÓË]-‹—v–V­‚Ü\•ÈØ¤IÕ¯¿š«Å( (`ðÑÁüÆo–Ë+29˜›îqÁz¢Õw"xv³›¡ %9x)gÅJÜt Ö­¾Ýîq(¢ˆë¹žõ¬§}˜Ìäˆß«ÇÈÅ‹-Î%hW•ûV–:Ôáßü›4à=Þ‹êÚÚl*…1Ý[8ªäö]¥%,á.îàŸü“nt‹ø½á“ƒ›Ñì*iRHáÞ¡)MùНÇ8k„‹“&MÔÏþý*^Wë8x¶mSåK[Uœ.à(YdñшFÌ`µ¨ñ{½Æ˦R':1•©Ü˽Ìcž’Å‚?1…*uìXú÷npyä i¤‘G#Áµ\ÕûÛ´ÆÕBsóf‹„tz÷,šÉ -¸oÙ}<Â#|É—&Kf2A˜‹îqÁ>¢Ñ·.šÑ¡ƒÊp9äð0i´¡Mï(#«»á0gÎví‚  vm8é¤èÞWN:0ŒaìÁ}¥‹ôÚEæÓ½†#¡JºkjªªBŽ\^·qkYK7ºñwþõû}>ï„+Â’âà£5FuÅÃ<ŒÁp†³÷mëËa.n¸ÇûˆFßnöDïe/äP@\ÆeQ·Ñ³§2ˆô™Õ•–l(õèÛyãO_ú² ÜÄM®Ëw8áhÐ@•cݽÛiiœEÆtoáH¨Òºuê±mÛª+-ØÍÅÿjS›l²©Mí˜ÚñÊÎÒÚµªBˆ.C ñgq[ÙêÊ„8]RWÎrk©Èí47s3Ø@ozó8ÇÔNݺj÷=?–/7YH—K˜R8)¤ð/þU’ï0…)æ g>ŸòŒl* B¬Dl8„Ÿ Z']^ëXÇHÔ¹çït¥kÌmyÅãmò[YæÌ™C2ɼɛ4¤!ó1Ïñœyš€xÌEÜÚÞ"}»Õãð:¯ó.ïRz¼Ã;¤’s[^˜æÌ™·áОö¼ÄKü•¿²šÕ&Hgznðze%Ó½…#¡J•í*9åò* €k¹–àÿø?n⦸ÚóÂäñZß~ü¼ÌËÜÃ=¬b•♂”Ý3qk{‹hô­ï17œù ¿p'wðþA:ÄÕž¼ÑŒ{nÐ\ÅU\Ïõá×p G9¿€&!…ŒéÞ‘P%7º£Ç3žrhA ¦0¾¸Úk×5RB¶l1IHbÖä0”¡ÜÀ ä’˵\ëš "|WÉ U²Á)ôÜÐ!¾µ¹iè ¥ƒä*®âOü)î6{õRÕySiß>¥ËZµÔÙñò ÏÐŽv,bcƒ&¡ç c„؈ØpÐÖyy†ƒ.¯Å,.Œ^çušÁ)fU~‚tu ŠŠB•¢)ÅNY}Of2íhÇb“IfœšÃ '@ýúj2ܹÓiiqk{‹Hõ}èÚdIN>¶h†S<ÍÓÌcÍiÎó<÷†¨iP9Gݱ7b:¯½¦N¸‹51º,õ©_rëxÆóßÅߨ H¨’BÆtoáùP¥\rÎp (à.îâ|Î7­íên8¬] ¨zëM›ÆÖFY}ë ‡'yÒ5¼}>ÙY2qk{‹Hõ­‹f´kgÎb3^–²”1Œ`*SMÙPU‰§S'e4T×é‚‚€9žhÍœÁ½ÜKE\Çuä yLj Ó½…í¡JyyªkR’ªªä4ó0+YIºðO˜Úvu7b9ø-Îà îáž’ZsØÜb@&A°–ð3œæ(G¹ŽëÈ'Ÿ‘Œä.0µýêžgÕÜI&ÝéÎ:Öq÷™Ûx œx¢:§bçNå‘!:"2Ö¯W!.­[CÍšÇþÝN—×<æ‘EI$ñ:¯Ç\zµ"ªûä°`zŒgr¨Hß™dÒ•®¬a ò`옄^̈Ç!~Ä­í-"Õ·6ÊÝPQéQeËhO{žâ)ÓÛ¯îs÷ßÌ7RIeÓH!…çyž¯øÊÜ¢$))TÒË›J2¦{ ÛC•ªJ~³Ëå•K.×s=Eq/÷ÒŸþ¦÷ѱ£Šßºµz&H›‘]‘¾kQ‹éL§5˜ÌdÇcZ¥$«yˆ[Û[Dªo·$F/a ó8>|¼ÎëÔ¥®é}TgÃaß>Ø´©6©©pÊ)æ·ßƒ<ÌÃÜÈŽ‡,I«Œé^ÃöP%·¸£Ç2–5¬¡+]-«Ò”T}Õ£͌c §7½¹‡{00¸8Âk:Šñ8žcýtFœ>çÿŒ˜¾ÞÒîô½ådµ½£åOü‰B ¹ƒ;8‹³,éGÏ Ë–U¿¤u™ÙîÝ!5öã.*å>î£=XÏzÇC–dn„؉ÊãPÑä`‡Ëk! yš§x•W©I91S&Q]w–tbô‰'ªŸX©JßcËÉœÌÖ8ZeIv•ÌCÜÚ ÂÆõ´~h³fÍbÖ¬‡h=í1b±"Õ·6•Æ3ž¥,¥=íMÏy §aCèÜY ½b…eÝ8‚aµjC Ô©ÒS™J2É<Ïó|Ã7ÖuV’ÿ&cº×°=T©ªÉÁj—W>ùÜÀ QD–„(…Ó§zÔƒiuAž¾}ãk§*}פ&¯ò*>|L`‹pæÔ¤-TNÎŽÊ`bGÜÚ ÂÙñÐÙú?­c.f‰¾… T3§[Å*á^æeKB”ÂÑ ëê67˜y¶Oeô ð#A.¹ÖvXz-ãeÃAÆtoaj¨R¸RÑóåËU…œ*~•Ï'0e,£íÇ8Ëû-,üP“ÃìÙö^«ž¿ÿþ&@MV÷•;'—;¹“B ¹êàUP`ûçýßÿæ”$Áeg/Œê½ò\ž'üóÓù†³9«mù¯ÉÌ̬ô§ªöß}÷ŠŠÀï‡yóìÿŒE‘¶?|òù3&iNRLíDó\o*}üñVÛ?¯•ϵ!äóY?N>À%E4Æ1Αϫ ‡Õ«ó¢~¯<—ç^}^‚Q†‘šj`”ÿšÙ³gWÕL̬1Ö5šÆçÆç–õNa¡a4h >óæÍ¶ti 眣>ÓGÅ×N¤ú>`0Úm Œ§Œ§âë4F.½T}æwßu¤ûjƒ•÷¸`sŒqçÝdLû5¶wÏž=Û;vl¥¯ùôSuo [ñòœñœÑÌhfì6vÛÒçœ9ê3÷îmKw¶°gúL))…F^ž=}~g|gø ŸQèa,5–ÚÓiGF†áóFn®íݻӽ…™ú®2TiËå’nÖ êÕ+ÿ5V¹¼ náòÈãz®7õ ·ÊHJ ¹l9ec:EE!w´Þ5‹•Hõ]zü“0†1üʯñuzgéWû»®Vˆ[;‘ø†GΟNÛ)SÞ6¶"Ñ·“ù ›ÙÌhFð<ÏӘƶôÛ«— ͪN'H/Y¢{öL²,1º,ÀHFRH!7s3EÙÓq1))Ц †*7ïEdL÷¶VUÒ'ƒ:19Lc_ó5Çq˜`kßÕ-ÏA'FûýÊ´‹ ¹a ãG¸Û10ìëœÐ÷V¡Z³~:#â4"ÅIÃáNî且KÂÛú­_N:I Õ%AڬܷhyŒÇ8‘ùžïy‘íí™!V"6t¬xy”'»ØÅ=ܨ‡ã9Þô>*£ºfV͈Vß“™Lcó)Ÿò.ïÆ/@Èä`VÜã‚ù¬ÿß7¬g=ÓFÄW’5}k/žÝ†Ã'|Â{¼G]êòÏáÃgkÿzn˜?ßÖn-CÏ õëÿdk¿ iÈ3<À<À6¶ÙÚ¿×K²Ê˜î-ÌÔ·)+\^÷s?;ØÁ@r=×›Þ~UèÝ— ”;3ÑÑ“œ»JÑê»ÍÏxþÊ_9€}%޼>9˜…¸µƒ¶Ã§—b ýL‰Áõ‰Xàe IDAT¾#ÙT2í¹Ç8ZÓھ΋©n†ƒþW_ÝÅö¾ÿÿã.aûÈ ÃÖ¾õ÷Ö«›J2¦{‹jª4yLa )¤ð/ؾ£ж-4i¿ý›6ÙÞ½é8åŽÖÜÈô¥/[ÙZr‚¨´m«b’7l€ÂBÛº„ja837<Îã¬g=ÝèÆÜi_ÇaT§s~vïVz¬]N>Ùþþ}øx†g¨E-Þâ-¾äKÛúöºá ±âºP¥ ¸Û¸›»éJWÓÚŽŸ¯úì,„’¼UH"‰)L!‰$þÁ?XÂ’ø‰€š5¡eKu ‚A[º¬–ˆ[Û[T¥ï;áàAµ¹Ò¨‘=2­a Oñ/ñÉ$ÛÓqzöT4–/‡#GÁ4ô†Òi§Áwß9s·£ñ#IöË­×4^õF˘î-l UÒ7Ue†ƒ™.x%,¡-myMk7ªËa?«V© ®];5ÑÇK¬úîAþÂ_(¢ˆ‘Œ´­’†ì,Ÿµ½EUú¶;LÉÀàvnç(G¹‰›°§ãr¨[ºvUÌ%öìX†ÞëÓÇÙ{ünî¦ ]XÃ&2Ñ–>õ¡…ëÖUpäh‘1Ý[تtà€:u·V-hÞÜ´>+ä7~+1&1‰:Ô±¾ÓJ¨.møÄ[†Õ 2ɤÍÈ!‡iL³¥O=AxugIÌÆnÃa3ø‚/hLcžà {:­„ê27„N’J*Ïò,ò(ÙhyŸAãÆpø° I!2*5tÕŒvíTèNE˜å¹ûØÏ~.æb3Ø”6ã!¼²R"ïHèÉÁŒ0%ˆOß iÈÓ< À½ÜË^öš#T%xÝ%mâÖöUé[ßKÚ(·’Cb£•ã`w…½òйbÕÉppú?óÊPs¸DßVãåª{Në[°ÛB•ôäЦMå˜á™Ë\¦2•TRù;w$!º,~?4m {÷ÂÏ?;-Mìüðƒz4+1:^}_˵œÅYì`‡-‰ÒÚpCàbGÜÚÞÂM¡Jó8›ØDoz3‚Öwz,ýþ{g切-[ÔO½zй³;îñIL¢.u™ÉLf1Ëòþ¼Æê} öa[¨’¾™:u2­¿r)¤¿ðîá:ÒÑÚ#Äçƒ~ýÔóD rsaÙ2õYÌò8Ä‹_‰[úyžg9Ë-íÏË“ƒ X¾—¬ö8üÌÏ%‡>Ã3Ô †µFH÷îêôáµkaß>§¥‰poCR•ÙŽöЊVÜÏý€:ä/Ÿ|Kû“¹A¢'"áª]¥x] ¯ñ‹XDKZ2šÑqµe6zg)QKï-]ª* ué šÓ¦.¯îtç6n£BþÊ_-=QZ&‡ø·¶·¨Jßv£ÅQŽr-×:š]–Zµ Gõ\W¬K4ôf˜žãÜrgA:°šÕ<Ïó–öåå0V·è[°ÛB•"5âqìeoÉÃÓãC>¤õJʰº =¦&jžCÙCAÝr×¢“™ Àưƒ–õååM%·è[°ÛC•¬Œc}”GÙÉNÎâ,†1̺Žb$üé‚ge‰mð˜i8˜ÅqÇ£< ¨]¦\r-éÇç+]zO„ØÙ°A‹hÝZ…ëXA>ù%' ?ÄCœÈ‰Öt‰œ m!/úé§;+Ky\Ê¥\ÄEìc_ÉV ùo‚=……°~½z^•;:VÈZÖòþŸk¢ËrÜqªòBn.¬\é´4Ñ££Í4Ìty`ÝèÆ¯üZ²Ëd2A渵½Eeú¶cCéE^d«èHGþÊ_­ë(ô‚[±‰Ä/¿Àž=Êë÷«ß¹íÏ"‹Ô` SXÊRKúðû¡F ؼYÍñ^Âmú¬Å–P¥-[àèQUU¨nÝʉՒAùäógþL/zÅÔ†$j‚ô¾}°z5¤¦†âqÍÀL—W2ÉLbñÛØfZÛáxÙ%mâÖö•é[ßCV…)íf7cÀ&Jª5ÅI—.РlÜÛ¬¶,#|CI—ZwÛ=Þ•®ÜÎíQD:é–äÁ%'‡¾Çz£Ô+¸Mß‚µØª¤wf­ÚUú‚/ø©O}çqk:1 ½³”h†ÃüùÊ%Ý«—2ÜÊyœÇ`sƒü¿YÒ‡‚`zn°ªÚÞXƲ‡= b—s¹5˜@RRâ–eÕòº1L)œ1Œ¡ Møš¯-˃“¹A¢£BÃ!wt´. H'€¿ñ7šÑ,ª÷Ûö8$šKZOfç7XáâœÀRHá5^c1‹MoßËÕ3Ì@ÜÚÞ"’P%+**éJ:I$¹6|5œDõF—g8¸ñoB2ÉT©ö<òLïëa¬nÔ·`fê;¹¢?D39Dëy•WYÁ ZÓÚµñ«áôꥒW®„ ~}§%Š =9ôïon»V¸8;Ò‘Û¹ÉLf£øŠ¯L]4èï±×ÜÑf!níêOfffD¯³2Çánî¦BnäFNåTó;0½ðž7ÏY9¢!//V!Jᇂºõ¿…[x–gù‰ŸxŽçL?UÚ«…3ܪoÁ:Ti?ûKª$Œg<5©in kvFâTÐ0ŒÄqGkæašÐ„ÙÌæC>4µípá°ÐÔ¦¡Z0f̘R?åaÖy¾äK>æcêQÇxÌÜÆ-B­óç'θ²d‰Ê_ìÚÕ¼³}¬$…”’Cáv±ËÔö%TI¢£ÊP¥H&‡h\ ãÏv¶3€\ÅU¿Ïiô®}¢ì,­_Û·ÃñÇ›oüYåâlLcÆ2€{¹×ÔSCëÔQDòóUâ¿âÖöé{ÏØ¿êÕSc‹YQTR~õ~îw}øª¦ys•\{ð üø£ÓÒDFEJn¾Ç/áÎã<ö²—qŒ3µm½Æ‘P%¡:cKU¥h<‘º@6±‰‰LT©5·Ç¯†“h†ƒ–³ÿPÕ ³°ÒÅy+·Ò™ÎüÄOLaŠ©mËÎRìˆ[Û[T¤ïð %3Ç•©Le)KiMë’ü·DAÏ sç:+G¤è¹¡¬áàæ{܇ LÀ‡x_0/Y-|^0Ì/ÜäZܬoÁ|,U:r¶nU¥ÊZµ2­/äArÉåüþ˜xo1á†C" .á†C"‘B O𠪫ìg¿im{5–UÌBo(™¦t˜Ã%á«ñµ©m^ã6hç9ää¨Ç@ÀY9¢¥=¸ŽëÈ'ŸÑŒ6­Ý&MTÞâ°{·iÍ Bµ¥\ÃA'¶n­G©ŠH\ KXÂ4¦•Z&íÛ+×üމ‘`[Ñ®’XíâÂÎà v°ƒ'yÒ´v½ê’6qk{‹ŠômEîÛd&³™Íô¢Wsµy ÛD"•ëþí75Õ«§œRúo‰p?Ê£Ô¦63˜Á\Ìqñø|ÞœAß‚yXªmÕŒH\ ÷q#I:D, [ðù§‚Fnn¨j†Ù¥XÁz§Yd0‰I šÒ®WËµ½E$¡Jf¾90 $U=ëZN;-Tuo¿yRKÐsW¿~Çn &Â=ÞŠV%¹0÷pi‡ÂyÑúÌÃòP%³ÝÑŸÿkD£—t"’(y‹©$à“OV'›&"§s:i¤‘K®iß/î* ‚™˜=7Œc8ÀÅ\̹œkN£6S«–*Ù^Éέ$jk8÷r/MiÊ\æòoþmJ›²©$‘S©á©Ç¡2HEÜ˽€ª–qÇE'¡‹0@=º= ÎêV»\œñ5¨Á4¦±Œeq·'†Cìˆ[Û[Tªd†á°–µ¼È‹$‘ÄS<ƒ’hsCy†C¢Üãõ©_²™4šÑ¦TßóâÜ(úÌÁòP¥h'‡Ê\ oñKYJKZòþµ€n¢_?HJRa@‡9-MÅèÉKOffc—‹³#¹…[00¸Ÿûãn¯U+•ð¿e‹ ç"GÜÚÞ¢<}Á† 깆Ãßøp-×r §Tý£7iôÂÜä燸˛鿙›éHGÖ²–Wy5îöÚ¶U‰¿h‰¤o!~&T)<Ìdã®ZFYêÕSÁº÷ 8ðÞp°“1Œ¡õø„Oø†oâj+9ü~õ|ãF„±e‹:8¬iS¨[7¾¶°€wy—šÔäQ5G@ÑcmNŽ{‚[²DULìÜŽK\Ç?©¤ò8ªúÞ!âÛÉ ? T„Ê©´ªR¤†CE.y‘õ¬§ݸžëc‘Ïuè â»ïœ•£"Ö­ƒmÛÔÄй³5}ØéâlJÓ’P7`zgÉK.i3·¶·(Oßfm(ÜÇ}ÜÅ]øñÇ×  hÕJU!Ü¿V¬pZšòÑsVE!¬‰ve(}éË6¶ñwþW[mÚ¨Ç £Üº$š¾…ø°4Tiï^õS§Nä'ƒ–çÙÏ~ã1žà jA]×àŒ3Ôãÿþ笡'‡Ì?øMc·‹s£hNsæ1÷y?®¶¼è’6qk{‹òô­ï}ÅÊ|ÁW|Ec›ZßiôÜàÖM%-×™g–ÿ÷D»Ç}øÏxÆ3žìŒ¹­úõÕf[n®Úxó‰¦o!>, UÒ1¬mÛÆ·ðÌ"‹ìäLÎä.‰½!—¡'‡yóÜé’Ö“ƒ–³:P—º<ȃ@(.:VÄ%-±­'º<Š(*1F3šÆ4Ž_0— än4 ¾ýV=¯Nsà q°ŸýqŸ%›J‚DZì*•ulg{Iþ'xm};@ëÖ*N~ß>U·ÛmhOÈYgYׇ.ÎŒ =íù‘™Æ´˜Û‘P¥Ø·¶·(Oßfxf0ƒE,¢-¸ƒ;boÈ…è¹^ » ÂÚ¤ téRþkõ×ç€<Çsl$öä5¯UVJT} ±ai¨’¾itÌ_$”u<Ê£â—r)gR_4Ñ‹r·…+íÜ ?þ5kBïÞÖõã„‹3•Tá@%Lç[Y$ÙUŠ qk{ +B•òÉ/ñŽa u¨[C.¥[7hØP^šsf¥iè¹êÌ3UeÀòHÔ{¼½Æ0òÈc,ccnÇk†C¢ê[ˆ KC•âuGÿʯ¼È‹øð•T=¨nhÃÁm.i-Ïé§+㡺1Œaô ›ØÄs<S^›Á,bÙT çU^e-kéD'nàós 5j¸7ÏA{A¬ôD;É#Î>[=~ß‘3¦²};¬Y£*%žvZůKô{ü!¢µ˜ÉL²0ê÷{­pF¢ë[ˆËB• #¾P¥1ŒáÿÙ;ïð(Š÷.z‰Š@PÁ^EŨ€ˆ ‚@ ŠØ~T¾ˆÅ‚4EQ¤( ¢!t„$ûûcØ»KrIvïvoïvçó<<»ävgÞÜ›ÙÙ™·)(ô¡çqžâ…&ž "TíÇÃêÕÂ\n‡Âo%áí§fîÒ‹Óv–$’@ ¤†Ã1޹ÓfŽg<¾ËÙ‚6m .NÔrÈö?;¨¡¨Ö†v턵ծԣž;à~#t߯n(ee…fÆD‰$T(ô?xŽ9«èÈ’—žžÎ*Vñ9ŸGœ»Z´Qo¡²pX¾\<ìZ·ú3«MœéÈõ\Ï1Žñ/è¾_.ôcµÎ%æ3f̘Bÿ¼ $0ú^!›l:Ðë¹>`9C™˜OµP±:¨–è²6í0Ƈ1Œ T`! É@Ÿbc…E-/vì0IÀÂú–hÇ4W%ï]%=5’““Ý+ü'x‚:Ô1LÀP¥S'qTÊVóãâ ëc(˜8Õâ‚oð;Ù©ë^™YI?¡ s‰¹Œ=ºÐ?oüµ8d“íNÍ= ¶JÍ]¡67h]8ØaŒW£Oó4 ¬ ú‚47ØAßí˜æªä¯›Ò2–±…T Ïò¬A¢…6_,¬2™™¡ñQ'‡«®²TŒ ÑŠVt£§8Å8ÆéºWZ$}ø;7LbÇ8ÆÜhËÔܾPçgu3ÇJöïnSqqж­ÕÒ‡A ¢Õø‰ŸXÀ]÷ʹA")Ÿ=æh…þGúðOQjFÉÒxÇ9X=A;+WNh&¡bâÃ\¸x÷ØÂÍ÷9-ÎBEç’àPTßþÌ »ØÅd&¸3*9¶m…ÛËúõâÅÝJÔ ¥+¯,;E·]ÆxE*º70G2R—ÕÁIsƒ]ô-ÑFP\•´²€¬«´ŽªTe0ƒ ,¸újq\²ÄZ9~þYÄ7\z)T¬h~¡bâlJSîã>òÈÓõb"«Gë'Tt. EõíÅa<ã9Å)îàÚÐÆ8áBœØXOœƒÕîJêܤºO•†ÆøP‡:¬f5_ð…æûœ47ØIß’²1ÝUIë®’‚Âh„/ìP†R‰J† ¨ ‡´¶žÃ?–ÇI¤’JQÌd&›Ø¤éžš5…éþÐ!8rÄd%’0'7W‹FD@ƒÚîÉ$“©LÅ…‹±Œ5WÀ¤sgq´zá Zï¹ÆZ9‚M<ñî*婤R@¦ûœdqHü% ‡où–•¬¤jnUw4'Ñ´)Ô¨!rœÿû¯ur¨»JÁŠo%çyœÇÃô1L pãºëÄqñbkúWݔڷî7N¤ èKßB®se!-‰6ôFe,ùäóЈF¦ÉÊDG{â ¬š.G§¹)yÓ‹^œÇyüÃ?Ìdf™×GG Ëš¢8£–ƒDâî…ƒž]¥|òÝ/h)¤ð[úofȨ¾¬ßgοÕ~íµÁë3MœÃN,±|Á¬bU™×;É$m¡¨s‰yxë[ÏÜð73“™DåˆB ¥Ñ¥‹8Zá®TPàY°¨›[eaÇ1M´û]e,c9CÙ“´Sæ;ê[R2¦¸*éqSšÍl6²‘$’x˜‡mòjØ5‚ãÇaÅŠàö­(ž]%u BQßu¨C?ú0ŠQe^/]•ôŠ:—˜‡/W%-5õát}°êfÎâÅ"ë]0Y»V¤‚­_.¼PÛ=vã=èAš°•­|Àe^Á®ú–øÆW%­©XóÈsû­Žb1Ä&L¸rýõâ¸@_­™€Y¿^f׬ -Z·ïPd(CI ïøŽ”¾Š“®J‰6´º*­cŸò)å(çö-w2‹ïìÐ!øý÷àö­n(]wHád"‰t[Æ1ŽÓœ.õz97H$¥£ÛUi&3ÙÌfÎã<îç~@š¼Ô…ƒú°j×^+º‚E¨ê»&5ÝÙ½Ê Êô6G[™J7\UKÌÁW¥ÑŒFA¡/}©O}ó„ \.ëæu놴ßcç1~wÑŒfì`ïó~©×JW%‰1ÕU©´]¥<òÏx@d²‰B¤jpºÉ«S'QôgÕ*س'xýΟ/Žz&#e}?ÍÓ”§< YÈ/üRâuÕªAùòpô(>DÔPÖ¹ÄxT}Ÿ>-ÒzFFŠ Ñ’øƒ?ø’/)G9†24HR†>ê³yÞ¼àõyä,_.t¦'0ÚÎc<‚÷fÒ&pŠS%^«¾mÛf¾\Vbg}KŠcŠ«’–…Ãt¦³™ÍœÏùô¤§aB„;ññž´¬ê˼Ù9ééÂÒ îjI :Õy’'Òcd-‰¤lÔT¢ ”žÒS}){”G©G)+ ‡qÍ5"UöÊ•°wopú\¸òòDzîÊ•ƒÓg8Е®´ ;ÙÉ»¼[âujœ§œ$ßD€pÕPW×%Gç’KiŒaŒÛÚÒäpÓMâøÍ7ÁéoáBpwÅPµjpúT u}f0©È÷|O%^§þ­Û}gÉB]çcQõ­eCi«˜Ë\âˆc8ÃM—-œHH›JŠß}œ>Õ9H“´b÷1A„»HèD&’CŽÏëê×r»vY“)1XØ]ß’Âw/œ:%^@+Tð}á‡|H&™4¡ Ýé^è3iò‚[nÇ Äwi6_-Ž·Ýf~_E u}W¥*ƒ ”nu 턺Î%Æ¢ê[ËÂAµ6ô§?µ¨eª\áÈÍ7‹c06•òò3¯‚OûjzpÊ÷¶:¼À >­N˜œ¢o‰ÀH}GAé®JðYdÑŒf>­ Í› ñæÍ°t©9Õœóóá‹/Äy7©ŽR©D%†0„RH%µØâÁ “ƒD¢•1cÆûYisÃXÆÂÚPƒfŠötí #FˆØ´Ó§E¦%£ùí7Q´~}¸ì2ãÛ·7r#miËoüÆÛ¼ÍÓ<]ès97H$%SÈâP´ÀÏiN3 €0Iû²6€4y©¸\p×]â|ölsúX¶L³'%A«VæôQá¤ï ¤*UI'%>©Qââ„Oð‘# &„“Î%þ1zôh÷¿N:‘ŸÁÎ"ÃLý"õÜ~ã7æ1ò”—± ¸ðB±±tô(,ZdNêœsçþuÒ/Ëêà„…ƒ“ô-1ÑU©¨9ú>`;Û¹˜‹¹“;KlDš¼<Ü{¯8~ñäæß¾:9tï®ß‡Õ(ÂIß©èÞMJ%O™hïZ2ΡtÂIç’ÀINNæèÑJ(Š(ü]øs5“Ò¿ð YH ÒÚà< Ž3f׿ñãž„jûþàÄ1^Z¬ƒÝ­ÑNÔ·“1ÔUÉ×ÂAµ6\ÄEeZ$ÅiЮ½V˜8š vî„ù󅯱jÑh§"Ý/:êDöŸ$ñµpPÇÎÿ\dÌhÒ®¾:pÙœÌÈÍ…£G+¸k8¬d%ó˜G îÅ·Ä?.» Z·Ï5¨Ù_^yE{÷Ï1‰xgXR­rSI"ñM¡…ƒjmhF3îàÍH“—o\Týö[ذÁ¿6&MçO>i]íoÂYß©ÈS<«ƒ¬å pÖ¹D?sæüŠ¢¸¨WOd˜Q­ ýé/­ ârÁà³k¯_„ü|ÿÚÙºU¤çŽŠ‚—ËécünàR.u[ì¾ppº¾†‘úvÅÇ+JNì9tšK+7b;Ûù„O¸›» ëÄÉôëo¿- ¶ùSMúÛoá–[ vm1QÄÆ/£Ó8ÌaÎás˜ù‘nìÄüùðÕWÂÅL"q:K–À5×@‡ðrÆJÚÒ–xâÙÊVjbq• È˃FÄKéÇûW´­woûvÿý0}ºá":’ïøŽ›¸‰Ô`SîVªÅ&àrÁ©SÅ‹ J$N%B­á0·ò‡lg;MiJ7ºY-—m:T

ùÖ¯×woA .ΟyF.Œ¢2•ÝV‡±ŒµýÎ’D¢oK´·µA.Œ!* ž{Nœ§¤ˆ…„þýW¸9¹\ž9B8ÞV‡cÞ¥n]{×rHü! 1IaÂFk&%o¤É«d=Ù.Ö—aiútX·êÖ  h;è{ ©Le~äG”$‘6C.JÆ:—h'=]øí•KÚÍ<æO½ØAß•©Ì@„cðO‰ÿä¡4ì s‰v%€UIsèG?im0˜èhOüÚsÏÁÞ½Úî[°@Ì#ññ0nœqòÈ1.¸‘iE+ö°‡ÜÄ{Î RßÎÂЬJÿ%Š|¡Ã.3)™@­Z0~¼8ïÓöï/ýzEG‹‡+¯>¬ãy’'©HEÖ'Î칫$‘øƒú¢´&éKb‰•Ö“èÚºtcÇàá‡Ë¶H>,®áâT¿¾ù2: o«Ã?I‹{.$‰8š¸ŽÆ4æüˆÐBš¼´Ð¯tì(·ß.j3”Ä›oÂgŸ‰ôz|!¶–³‹¾«R•'yÅŠAN%cÛŸ Òºt¡K—.té’F†Ÿ­lÚtZœ$nãq§µ “PâÁå‚wß… à»ï<L¾ÈÏI6vï†6m`ˆÁ5øä÷p ·Ð‚Oéí87H}; C³*¢0çNft½ƒžô4¬aIqvìù»÷탛nõŠ|óØ]š7š6y¸srD‡;ïô,F–‹†`P•ª Œ ³é®$ g2HÏèHòÙuBR‡Ž$em#Sg+;vˆL2ÔÝÅ£1ÉEC¸ë.xáqþÄ"-ôªU¢²ôwßÁˆEC|¼H- æs·qa’ØÙûkÛ ‹¥‘HB‡€a‰÷ET!S†žóôôt¿ïuÚyÛ¶ðòË«HLuºw‡„¸è"ð)ªvê:2Ûýü)ž"2i;‹2ÿ±\žP<7sŒ+ |ù%´ly˜„±Û}ñÅG˜=[ø|[ý»‡Óù~<TéÛNÐ03“¬®3fŒÏO½ñ®†Y ehHü^N8oÛ6)SDÁ½o¾îHññÂ:½u+Ô©/¾¸†ŽÍ‘ÁÌ1Žç.\¤&>ÀÁñœÈ;2²9å<'úöÝJ³fb\Tª”G÷î°fõ²…Û¹÷8÷·E,b';q¹âO()C_ Bq! §OǰbŬ[wV#6ö$ç÷:üDÍšû¬ÏqLù½5{¾½™£ÆÒ?BGÎ\I@äæFóå—w°qcŸŸ7nü/]»~Alì© KŽdó÷OÙToáÙÚÎEÿ¯w#óØ•’Fõk3 ÝrsD•”ÈÕX¶¬›7ŸONN~\QÚµSÄ÷Ž¢Œ£({÷*Êž=Š2i’¢¸\âçuëîRŽ1¼{M„×wž®Œí£FAÍš"}ñ³ÏŠÂX5jÀ®]uèÑã¬ß½¤:’Ü1ƒô³©”2—eÙ0‘$-¤‘ÛD ‡šñ9†K(‘„-“ª°o[Ó˜f±4ögï^ážwð ÈD¹mtëæqéþðCøäqí+¯ÀÛo[*®#8Îq^äE¸äŽuúFmH’’Ä1bÛ9Ìg>¿ñ›¥òØ)SD°gL ,]*åÜsaÅ ˆŽ>üyðòËA3ì蘒i"kŸé IÑ‘QiøŒÏpmK råÃæ)‘„ç$õ…ÉLb8Íik²1нz‰ ­ZÁÂ…"æ­(wß ï½'Î ‚?þ®œNã-Þ"ûh.üy1›~© ¡`‘„vÔ÷ŽÂô_󘂂r“r“Õ"…Fê<3SQâãÅ÷ýñÇe_?w®¸6&FQþùÇ01$Eè®tWPP*$e+ (¼aµH’ bÇ纼ý¶xþT~äsåå«E2„PÔ÷‡ŠïºbEEÙ¶­ìëyD\ß²¥¢œ9c¾|ጿú>¦Sª+Õþl®€¢4j¤(Òâ ‘ 2–DGCξòÄŸ¬Æ<汚ÕV‹eK† Ù2î¸îÑú¶Ûà¾ûD}'ž0_>'²‘|ʧDçÇrrG5*U:b±T‰õ¨Öèú™í˜ÈDrɵN ›rø0<}¶@ýäÉаaÙ÷¼öÔ­+²,½û®¹ò9•·x‹l²¹`Ûµ€rá ‘ ªs' ×nîÙ6€±ŒµP"{òÓO0gDE‰BWZyùeQÿdáBX´È<ùœÊ8Æ¡ pÏ®ÁäåAùò'ˆŽÎ³Z,‰ÄrÔ…ÃÉÌZ4¡ ™d2é–ÊdG&M‚ìlh×zj¬Eœ¯¿.ÎG†£G͓ωœä$¯ð WgŠ"crá ‘x¡N3{K,_ñkXc©LvcäHq|æ¨WOû}µjÁðáâ|Äá +1†¿ù›ÙÌ&šhnÍ@åʇ,–J" Ô ¥¬,žŸÀxÆK«ƒìÙ#¬ 6‰ô¤XíÚ®¼R,:^yÅùœÊ;¼Ã^öÒ–¶$lˆ†-:uêdD3’0Á®úVG2«ð8È Kg1BçË–Azº°<û¬þûŸ|ªUƒß‡ Gr–qŒ£€äANfÖ qã‹¥’»>×%.Nd{;s:î¹› ¸ÀV‡PÒ÷Ë/‹*é7ß —_®ï^— Æ篽ÇŽ/ŸЫd“ÉH¶m?OL4h᜜lD3’0Á®úVw–¶n…gyVZ¼0Bç“Ä3ˆ¡reý÷ÇÅy|`Õ¶$ñ7ó1EÃNf¦øyÛ¶5-•K|ìú\7uSi{f$£À&p†3Ö  ¡¢ï#GàwÄyJŠmtê$\œ†©S ÍVèÕ÷;¼ÃöÐ’–ÜÌÍî¹áœs¤«’DâF¶mƒÚÔv[Æ1Î:¡lÂÆ0oDFŠ…ƒ¿ôëåË ËŹž ˜ñŒ§€â!’HrOêXH$žñ™ ÝéÎ\ÀV¶ò?þg¥X¶àý÷…• ChÛÖÿvT+ök¯Až Ï okC*©¸pš Y8¤§§ÑŒ$L°«¾½'ðX¾à þäO«Ä Õù”)âxÿýÂìï/+ÂÃ"FKWpµ¤8›ÙÌ,f¹­ àùÛ?ztu‚I,Á®Ïu#ðž"ñXÆ1Ž<Âó-5ô]Po¾)ÎUk²¿Ür‹¨ý“•ß|¸lvC¾ßå]ö°‡V´ânáÄ Ø¿_Ô]ª][º*IüÀ®ú.ºp¨Mmã1@Æ:¢óœQíà©§—¥qœ=[˜¦%þ¡Æ6¨ÖÀíÇzë­Í­Lb v}®:7lÝ*ŽÝéNcóÿ1“™–É¡ ïÅ‹aËá&|ÓMµ '÷F•ăV}û²6Šoˆ®J‰µ–ÃÞ½"P „Õ¡åø‚/XËZk SæÌiò.½.¾8ðö7†«®:š5+ðöœÈ¿üËLf²6äç‹Ý:ЖC]"q Þn¬ ¬#„·ÕÁjÔÚ <"ÜX塇ĮøâÅ]Iô1•©ìf7­iÍÍÜ x6SÕ8Pc\•¦ ¤K—.téÒ…>32hR¨&¯Œ´.té3ƒLkÅ1ŒÈHÏ “:PêP‡¾ô\×!s=ÎŽoÆø{ï‰cŸ>Ɖ¤¶¥Z2$úH#|òéE/·µa÷î_9sbbrë­¢H‡Ìô `l;…¢Öh€ôà|Îç?þc3¬+ ¦ ´vþÎÎ.E÷Ó@©V ºuéº?úȘ6ÞŒ4Íãû$'yžçÅ(\ˆ¼¸ÞÑ`ÄÂ!#qsj²x1‹/fêýI7) m’““ÉHë :ž}å°Ew–†1ŒXbù’/iuÈʤIŠß‹§Ðpúx´¾_dfBFÄÆÂÝw'Òí·‹ é•+aýzãÚuÿðÿãDåÞ5ø*u6­ZUeê'­OL²2ièçØvêNë¶mÂ/ Š(Ri€ÂÍê‘Ö…U5¬¿gÏ)n;wÖWÓ§,x@gÌõ~ÈH£KšßÏßå]v³ÛÛ R4iFÀ ‡Œô,˜šBÇ@’„ ™3ú0#iª-‰¾v–êR—Gy;µŽ£c )îÞPWÆ™gÝo» *U2N¤¸8¸çq.Ý•ô¡Æ6ô¢çpv ‰ ~\Ñ /II„Â3-‘P4ÛN">ÞSËa÷nÏÏ{ЃF4b [Â&ÃR¨ÌßêÜЫ—±ívî,x7o†+Œm;ÜÐó~îmmH!Åmmägd2½ÇÔ™–X‹’Ð&sF†g^gùCÇ,|-†2ÔÑ–Ü2—‘AG:$•}¢x^êÕ] #éÙS?þXî,iå_þõim8tJ¬ìÎ9Ò· +èJ¬"ýóšÇ¶) …­i¤…¼Õ!sFÆ3‚©÷'‘þ{¦erü÷üú+$$ˆM%#‰Œ„=ÄùìÙÆ¶^è{?W3)µ¤%·QX)/2gôñò—Útt›AO}€¬´4äÚÁ>Ö÷r–ed²?ãñ³>ÓÉÌœNÅ9”´p¨CÇdX*¬óL@ÍÈAZŸ :ޏ_“‰{ÃQ¿¡bEèÒÅx9Û·í™™ÂeIR6i¤¹«D{¬ ‚Ã'EU¾¤$HNnjtëÈ ã,ÍcÛ‰x»+ys/÷†I†¥L–ed’9]<ßǽ“aÙüýé§âxË-bñ`4ª5ú“ODÒç¢íýÜW&%oŠG£Dº2¶óX%Ýýÿ­ÊôÞ½•é[kU&l®ôî=]Ùjµ²l™¢€¢´iSü³ÝÊn%N‰SPPÖ(k‚/œ¥¤+c;ëÛ£F‰ïòá‡MJ0@ô1x°y}Ø…MÊ&%B‰P¢”(ek±Q›®œsÎ¥gÏJjjª’ššj«±-) ýcÛ‰<ý´xÖŒ_ü³™ÊLå\å\%WÉ ¾pþ`áüݲ¥ø.¿üÒœö %)Iô‘‘aN¡ö÷óW•W”ÖJk¥@)(ôÙñãâ{Œ‰Q”ü|ñ³]•:’Ü1ƒ)iŸŸ]–,##³!‰Iµ* mB¡pŒY¨+êíÛ‹æ]M:•Ôà e5™3èÑe IS§¢ÇCmÎqìÖÍ©èÞÝÓ—tW*±Œ¥€æaw&%9}8€‘#{Ò,b€Ü}¶;™3èÓeIS§Òp›}ŸëFà+q†Ê=ÜCc³…-a“aÉ*W¥-[`Í7rÝuæôárÁ]w‰óÏ?7§ÐG¼ŸÏ8ë5þù Ÿïç9ä0‘‰€ð¦(jm(Zà Žî˜2•²Tו :Ê@iÛ …cÌ¢n]ˆŠµN*þùÓH¤  Ü®Ü\Áˆ^ßaæ÷Õ§è+%Åü¾Â•žJO¥ÒÇççYYâ;¬UËó³ÔÔÔ I'‘„>ëÖ‰1rÁ¾?ÏSò” ” ”÷•÷ƒ+\Ñ¡ƒøgÏ6·Ÿ‚E©SGôõûïæö®œPN(µ”Z Ê7Ê7>¯yóMñöñš:Œ)gc×Iqì®ïÒv–@Ôuˆ'ž¹Ìe«‚&—•èÕùW_‰£Ñ3|që­âøÍ7æ÷Žld#ÿãDÍHFú¼F5G«»Jvã’âH—Žwp´¯ìH"Íh@¸æ’Déôc…¾³³áçŸ!:n¸Áܾ\.97xãKßoó6{ÙË¥\ÊMÜäó>_Cvv]‘Çîú.)³’J-jÑ~€¨®èôè<;–/._fù°zÓ¹³ð—]»²dþÐbŒa ½éMCú¼ÆÛì?Æ%Å‘:/ DeâS§„+«/îænšÒ”mlcÓ‚+ N¬Ð÷w߉z:‰l{f£n\}ýµù}…:Eõ}œãîLJ¾bTŠeT …ƒDb'J ‚Sy–gI ïøŽ_ù5(r… ó狹NŒ-úV±±píµâü»ïÌï/œXÇ:>ábˆñÛ âkrH$…)kS)’HwâŒqŒã4§ƒ!VØ0ož8Þ|spú»ê*±©´f ìÚœ>Ã…ÉLf?û¹œË¹žëK¼®¨5 Z8H§³°»¾}ú)J jðOΰ:èѹúò~“o˧)¨}©“D ¾Ä<Ê£Ô§~‰×µ8Ø}ŒKŠ#u^6e-îäN.â"v°ƒ÷x/bùE°õ}æ ,\(΃57ÄÆzj9}nðÖ÷QŽò"/­®$k˜hq&Ngaw}Ÿs¶.Vi“À†Pžò,b¿ð‹érY‰Vçç{&‡`í*Üx6Ä?Âi¹ÉÀZÖò_PŽr cX©×ªëêß¾ÝǸ¤8Rçe£eS)‚w¬ÃD&r éùB€`ëû—_àȸðB8ï¼àõ«ÆR¨ó’SñÖ÷ë¼ÎAÒžöt¦s‰÷œ< ûö‰˜”:u‹¹Û­:W'‡`EEs˜??ø}‡«XÅ\æGÏñ\©×ȬJ©s-hÝTŠ ‚±ŒD]‡rL•Ë‚­ouÇ¿sÉܦ”ñc°bEpû%T}¿Ê«âéÈ5”^d©¨%ZEº*Itcw}GFŠ6” P•ª f0#‚=+ÍhÕùâÅâhÅÂAíS•ÁɨiWûÓŸÚÔ.õÚÝ»ÅN\Íš"ì?Æ%Å‘:/-®J*·r+mhÃöð&oš*—?SßûöÁêÕP®Xñg¦n*9Ù])99™à%^ ´R­ PBñ7¤«’Dâ­&i€A ¢*Uù‰ŸXŒsßZ…_ ¯«¯~ÿíÛ‹J¤ü{ö¿ÿPág~f (Oy†2´Ì륛’D¢ ïZ¥_ëÂå¶:LbÇ8f²t¡Ë’%âØ¾=$$¿Õ=êûïƒßw(ñ/qœãt¦3‹Õ.NIsƒtU’èÆ úÖ³³T‰J<˳€ð´£ÕA‹ÎüQG_~yprt%6:vôÈâTÔ,_ƒDuª—y½/s´Ƹ¤0RçeS¾<Ô¨¹¹ÂRW×s=íhÇ0™Éæ ¨ƒ`ê[µ«Ž‚Mr²ð]¹¶F«™»|.¯ó: RkAº*I à úVŠ–…ÀP“š¬`ßa¿bZtþÃâhÕäÿYU§±”¥,a •©Ì†hºÇ×®’Ƹ¤0RçÚÐçÂê ¾¤½È‹&tÞZƒ¥oEñ<ƒß ’W\!¬Dö E,•ŸÚýD9ÜÂ-\ÆešîQ熢õ}¤«’Dâ=“@ î”—ÃNeرmˆj޶jr¸æšÂ²8 ÅÛ0„!T¦²¦ûJòc•H$ÅÑãÆ pW‘L2‡8äÎfã$¶n®]ÕªAË–ÖÉ¡ºÏ:Ñ]i»Üq6i¤i¾ÏT‹ƒ4q: 'è[ïÂà1£.uù“?ùœÏÍË2ÊÒùž=°aƒpºôÒ åƒK.*UÄd¥ÕZdæ3ŸŸù™ªTu§ Ö‚tU’€Ô¹Vô¸±ª¨V‡ÿãÿØÏ~ã…òƒ`é[ÝÄéÔ ",ܪ¾ê*qtâ¦Ò8ÆqŠSt¥+—p‰¦{އýû!&¦p ®J?p‚¾õº*ÄçÞñÅ(òÉ7A2k(KçêÔ¾½xÐXED„'k‡“â (pÿí cÑd"]•$ u®½€ö´çz®ç8Ç™Ä$SäÒK°ô­>‡­þóºì2‘F:uW鵯‚B§Nâè”ÇÛHFR@ð÷¶½W×½¦[$;âïÎR$‘î¥4ÒÈ!Ç`ÉB 5½]»v"W¶ÕDDxê9Ø}g)—ÜB®ô˜xF=ºÐ?‰DRœØXa¡ËË;=4¡ ðyä‘Jª)ò…êÜ*kÒ6m„ËÒ_Ù?Îa«˜Ãb‰%…Ý÷—”Q ¤«’Äœ¢o·s;­iÍnv‡\á(Mç¡ä¦¤¢NTvÏÙ=•©d’IšÐ“žºï/©2¨SƸăԹvü VÅ(¢ˆb&3YÇ:CåÒC0ô­v* ‡˜OœÃO?Y+‹Ù g8 jLÕ£žn}—47€tU’øSôÈäà]øg“8Âã³€Òt®¾œw,»‚}Ðhß^í¼pÈ!§e+’HÝm”dŽvÊ—x:׎¿Òçp}é‹‚âŽM²³õ½m›H¼P¥JhÄ7¨tè Žv^'§“Î"Q îúRzõ-]•$?dr¸ŽëH&™ƒäE^4L®PâÐ!X¿^˜­¬ßP”‹/† `Ëë`G^çuö°‡6´¡+]ýj£´ÉA"‘ø&M%¾çñÄ3—¹¬`…ar…Ë–‰cûöÖÖo(Šº©¤Êg7·µa0ƒ©F5Ým>,þÅÇCÅ?—®JÝ8EßN.\Ld" ÿìa1‚Y@I:ÿùg‘¹èÒKÅâ!TˆŠ‚+®ç?ÿl­,fpˆCî|𙈠ÿ"KÀ% J IDATZ88eŒK5N@ ˜©ïåËÅ1Ô\XUìh>Íiwjî4Ò(Gá/ÞW%SÒÄé,œ¤ï@¤UÆ0†b˜Å,Ö°&`¹‚/¯^ ¹¹Ð´)T­jPe­Z “ô ›Änd#Ó˜F$‘L`B@m•VÔIc\":×N¹rP·®8ß¾Ýÿvâˆs¿ì`¹ä 6ÌÔ·ºp57%U®_Õ_Ä/Ty‹·È"‹æ4§=Š}.]•$’ aÔ¡! y‚'áÛjT3o¨Nà‘MÈÂá §€zÓ›F4 ¨­Ò‰¤t©óã̓KÃu‚8ÞáF3šŠT ¸ÍœØ»W¤a­W¯øçNãÔ¹>Œ\8´£]éJ9Aɾg–¾U·ÐP_84k&j:lÝ*ž…áÈzÖó!E”»ØlIhÕ÷–-â¨z[øBº*Itã$}»\ÆO=éÉÅ\LYî|ü¡NQÿú«8^ø‡é„ûÂa*Sù—iD#úÒ×6½w•"}ÄÑ9iŒKRçúPçõEËžçy¢ˆâ>`æF횥oõ9êsCd¤HÙ á;7<Ã3PÀã<^f² ­úÖb‰–®JIçI$/ñ™ÈÓpQ´—]f­ZP'0u±Nå(©¤â¥"c*µ©/;ÒMI"ñºu!&F¸lž8aL›hÄã<Ž‚ÂP†ÓhÙ³G–,_š4±Zš²Qç†pLž±…,`©h¨…*h iâtNÓ·Ñ€.táZ®å(GËXã6 oŸ:%à@ø uZ¶ü_‰X‡pb“ØÏ~®äJîàÃÚ-krpÚ—Hë%2ÒãnäÜB ¨À|æó?×pÌзº9s饾-™¡†çn ‡|òÝî«#Auª—ytU’XŠÓô­ #MÒ/ñ.\¼Å[üÃ?Æ6n0Þ:_³FTK½è"ÿê”+'Š¿ýfµ4ÚÉ"‹Wx“%eËðõE§¤ÉÁic\"uîF[£jPÃ}oCÈÇœtpfè[]8„ƒ%àCÚ4Rß«W‹¬JÍ›—‘'DQ¡h>Æ1÷ba“(Oy¿ÚÑ¢ï .¤‰ÓY8Qßê@úï?sûyžç)Oy¾å[¾ã;s;ÓArr2›7ÃáÃP«Ô¯oµDú©^]¼,Ÿ<z9»3Èàc>&–X¿üWõ ÅíÄ1ît¤Îý# ‡x‘Qßå‡nÓH}«VÜpÜPÜ¡hN#Ýìæ2.ã>îó»²ô}ü¸p·‹‰É`JCº*I$ÆäP›Ú¤À`“K®¹ê@}¨¶iSrPm¨£î,…Ò‘O>ˆÅ$’LíOº*I$Æa¶«Ê=ÜC:M6c­:+ª%Zµê†^ "kâîÝVKãa›Ü™µÞà "L|eWÿ~“’ ¢Œn¤«’D7NÔwíÚ"-ëæg^Ä Ó˜MlâU^5·3¤§§‡u|ƒŠº³J¾¬S˜Â:Öц c˜©}åæÂöíbá—˜XòuNãNGêÜ?‚µppár¿p@üîåʉ‡pEB%³ÒW|Å|æS‰J<Ïó·W–¾µfTéª$‘h&X €ë¹ž;¸ƒœ`0ƒÍï° òò`ÍqÎ ‡V­„vÃë`5CÊaÓ….t¥«éýI7%‰ÄX4;Ö;v‹žÙŒe,5¨Á2–1‹YæwX¿ÿ.Ž-[Bt´µ²‚:¯©¿•œà„;ýjiÔ¤¦é}Ꙥ«’D7NÕ·ºÆÎÀÿñÄÇg|ÆüœNK`ÆŒß9yÒS9\)_š4 ¡?ÿ´V–¬`Óˆ!†ÉLÆ…ù#ꢷ¬]%§Žq'#uîÑÑа¡°äee™ß_ª¸Ó6?ÍÓáˆ_í¥oõE;œ7” ðÂÁŒb~z˜Àw=ŸÇyÜ6µº*má MœÎ©ú¦I ‘Dw túsšÓÁéØ.—p ×à7oBag)<÷„ð ÏИÆAéW«9Ú©cÜÉHûO°²î©ô¢Wr%{Øãž#ôb”¾í²pHJ‚jÕDf¡íÛ­“c›Ü™õÞâ-¢ˆ2¤Ý²ô­uS ¤«’D¢™`/@T‰¼€ ØÄ&w:>+°ËäžÅ• ‡ÉLf-kI$‘á Z¿ÒUI"1ž`/"ˆàMÞ$’HÞäMÖ°&8û@ ÷M%—Ëú¹AA¡ýÈ#Þôæ ®J¿ž…Ciõ}T¤«’D7NÕw°'Òoó6ãϱs/–,©¤Â}rë¤w²Ó½K8™É¦D{£uáàÔ1îd¤ÎýÇŠM¥K¸„'x‚ xŒÇÈ'_×ýFè[Ý/_.¸ àæ,Çê¹a³XªQ‰L4´íÒô½k—ˆÏ©][¤¥- éª$ÑSõ”$Ž[·Š*™Áâ*®â>îã§èG¿€2iøÃ™3°eKE |ÓíysñÅÂ/yãFQô&Ø<É“ç8]éÊÍÜ´~E{Ê=§Žq'#uî?ê.m07•@J×£¿ñS˜¢ë^#ô­ZZ·.;÷8`¥Åá‡Ü‰P^äEªSÝÐöKÓ·žŒJ ]•$ÍÄÇC:âEzG3¤¾ÌËT¦2‹XÄÇ|Ô¾7l€Ó§¡qc¨T)¨]›Bl¬HXPk×·ï¯ùš9Ì¡<åÝ)w %s}ºt¡ËÙ}fdº?RkTªUªßµDâTÔ®`/*PÁýyŽçØÉΠö¯¾`ÛÁ …Á~–gÙÇ>:Ðy0¨}« -nJ ]•$~àd}[µ³T‹ZA â ƒÖ·:9ØÁÚ bÅÎÒqŽ»+D§‘F}êßIV& S³xñb/N¡áôñ¨kï¬eUþvòw*Rçþãq/Ø/œªåòÇÜ)<µ`„¾íûP¯Ôª‡×ílËx÷ˆ&šwxÇ” {¥é[Oñ7®J?p²¾Ï?_ƒ½px„Gè@ö³Ÿ§y:hýÚqáЪ•8sá0‚lg;­iÍ|ØÔ®‚ÊɓХ(.—¢=jn_§”SJ3¥™‚‚2LfhÛ[§÷V:wî¬tîÜYé=}«×'éÊØÎ½ïõê%ô8eJÙí.]ºTIMM5TVIhãäçºtï.Æ×GYÓž’§\®\®  ôQú”y} úþúkñûvêP3!ÇW_ï÷Z«¬U"•H%CÉ0µ¯Òô]µªøwîÔÖ–tU’èÆÉúVwVÔº e(Íiζ0‚¦öµ~½oÔÈÑ*j€´¢ÀêÕæö5žñl`hÄ(FÚvÒýSÏÆ3,fêýIgšAZ—$MŠûGè3G;yŒ;©óÀ°*@Z%’HÞç}bˆa*SùJ½>P}«®ùô£è`^g”¬ïÇáàAˆ‹É_´ ³*I$:ðž¬*KpUŠ$’×xå,7­/»÷ñ…:A˜é˺†5L`.\¼ÏûÄg^gp6«RñEx^hÔ8‰DbVÆ¿©4¥©{sâaæ'LëËn•TêÖÒGš«ËxÕ¬¦! yžçÍë¨ ¼7”ÊJš¡"³*Itãd}W¯+±cm­iͳ<‹‚ÂÃ<ÌINšÒ:9T®lálhf/rÉuï(õ§¿é;J™Ë2È$“é} §d=qvïõ+4(»'q§"u¡`‘Ö³-È"‹a +ñº@õí]ÃÁN£‚ô6J*ïñ¨`NG^”¤oõïUφ’tU’èÆÉúv¹<Ìê b4£iF36±‰á 7¥urèÞ]cº…0ÂìÉaãXËZÎåÜ í(y».y»0yç鎌,»'q§"u¡²pˆ&šùh¢™Ìd–°Äçuè{×.سGl¢ÙÑ‚©.†Ö¬1¾í3œáà gèMoºÐÅøN|P’¾õfTéª$‘èÆj_V•r”ãC>$’H^åU~â'CÛ?}Ö­ç-[ÚtHм¹Øÿ÷_aA2’ßùÝí¢ô!’@‚±èÄŸ]%‰D¢:u„ŸøÂoÜJ.á’B.KG9jhûÞiXíP1º(ÞqF3‘‰n¥—yÙøtòÏ?âô…ƒ4q: §ë[}ùú÷_kåhCw€ôýÜoè¡F7n kÖØOçåÊÁE‰X•?þ(ûz­œä$=éI>ù<ÅSAqQ* uá urpúw"Rç:›J j´¡ ÛØÆ û<}ÛÕMIEµF¯^ml,ãÖFÓ˜FE*×x”¤oÕݨ‘ö¶¤«’D7N×w(Áy3’‘´¢™dòOÖ®ºÛÒºµ}u®NFÆ9 c›ØDš0ŽqÆ5z-vÕ·¤d¤Î'TÜX¢ˆâ#>¢å˜Æ4¾äËBŸ¢oï¹ÁŽÔ­ µkáC™iL›'9É}ÜGy<É“\ÍÕÆ4¬‘’ômYŒƒDâ$BiráÓ:ƒ”£ðæÊ¡e¡úwÚurãMÒ‹YÌë¼NQÌd¦ùY”4¢×â ‘HôjsCSšºã«úÒ—=ì1¤]»/Àø ÒÃÆF6Ò„&Ld¢1ˆÞ¤*ÒUI¢§ë;Ô&(DÐô/üâW;êä ><í¬ó@ݕֲ–Á à]Þ¥! ’Ìü©mg}K|#u8 ˆlm;wBNŽÕÒævn§ý8úÓù?Í÷«§,ê×_„mÛükãE^d ¨F5¦3ÝÒ %_ã[¯ «ŠtU’èFê;tw–näFžâ)òÉçnîæt·Q4øÍÎ:dápŒct§;yäÑ—¾ÜÅ]Æ gþ¤Û³³¾%¾‘:œˆ8÷\q*Y÷¼y‰—hNs6³™™ígºãôPtSÉ®¸\žúEþÌ +XÁHFð!RzJ§ŸÒ\•,±8H$N#T-*Ïó7\È…¼Ã;€H¨± í;&ê ô%—Ø;0ZÅŸé|ò¹ûØÉN®àŠI½Zt|«I3¢¢Dü›¤«’D7Rß¡½«¤’D3˜ÀF°„%šîÛ¸NžxªU?³³Îãã¡I ýçŸÚîù…_ÜÅöÞã=.à% üXí¬o‰o¤Î!Ô÷qó8¹äÒnšÝYÕhÕJkw¼Z¤G3š…,¤:Õù”O‰&Ú<uPt|ÿ÷ŸøÎ=W,ôà€5£DbAŒa ×s=ÙdswCéþ8¾&»ë\«Iú4§éF7v±‹NtÒåf[¶KJR’¾T¬v×·¤8RçÆ. ‡é+øœÏ©A ±ˆa +ó§dTRq¹´Ï ó7÷s?˜À5\c²tú(:¾ÿùGýY8è4PøFš8…Ô·àüóaýz1CùAI$³˜Å¥\ÊÖð0‹Y¸pù¼Þ×ä`wk ‚SPèG?~áЀOø„(c¡¦¡'¾a̘1æ # iì>ƃEÆb‘¾{7;&*,‡"ª¾?ã3®á^â%.â"zÑËçõ ëel¬pít ­ZÁ÷ß‹yñŽ;|_s˜ÃÜÌÍãwswHU):¾ýMÅ -$'¢f•õ%€*Ták¾æ ®`6³¹ Íèb×åçÃÚµâÜI®J-ZˆÝ¥ DÐXllñk^æe>àâˆc.s©IÍà ªuWIËÂaôèÂr!!‘è'2RX£7n/g¡L2“™ÌãåSšÑŒÅ,æî €Ž‘¾ÿ))Щ“ÆzLißEô|G IDATc ÀS<«ÐÅõ6)¬¡N(iª’bÕ[ˆ‹‹Q‰$2éô¦7{ÙËP†²¿èÇ yœ¥óXcAóÌLÑtíZ8pö(ÃÆV¶’I&³˜E26ú™ú3«Ê?± ·RÕÜ9Н8øu5º"½[Ò’¹Ì¥.uyŸ÷ÏxVçÊÿD—.2krÈa£(¤Gy”ÇxÌ[イ¸Þá®Dkª’¢„¹ðLMÔ Ÿð 餳‰M Üv7ÇŽA‹²škÔ®-zž= ׬ˆ5¬¡=í™ÃêPÇkólcœCÿnj­(%f5úÈ‘èZ6dÁlfSê¼Ê«LY5ˆ½4%ƒ™H[¶ò×r-§8ÅXÆòOEÕ*´!\ß ©JŠmTïæÂ‹ÆÀ¤MkY¤‘ÆÆ•5èÜ­ ÌïÅŠæ]ºÉî©ëV&Ó’–|Îç4!:£(ó7Šsˆ½•ª¹sÄÅù¿]wUz÷£³˜EI,\y€nÝ}º|â2íÚAZEìß“ÄÑ}ÕÍh^åUâ£hî]S•OQ½øÝ9CSš2yÔY9€µÝ_'Ÿü¿ šŸà+»M ÆÊ~Ìcž¯»dTE8C,è­”D5w¿§±£÷p†óïÀJYjXÚí9,b/xØ¿s™Ëè¶ò^¦3Ý÷›–ÆèmYáùÐT%E ¿;‡`iMk:­À÷Ý?ä®)ÓŽïbæ8ǹŽëØÖm&©+oæ2BØÇGhG%EñŽ‹Å7 Éÿq›;@òY^¿â×LdbL¹ä2€œë–Àˆ•ÿI )[:?ü ;š×«Wr¯&;hª’bÕ;€y(ÛºUv]ŽV, 6®ª@Ënøš¯éG?~@W_ÌšÿÈ `_ò%M3󨲶:çÎylXŸUêØÑþû/f½•òQÍÅïi¬Áê½zµÜOÒ:Ÿ 1¹ˆgx†ñŒ§(vxA²„% d ?ò#]ºK ïÚ•ÑYnô.¾Úby†¦*)¶Q½Ô¬)ÅÄgÏÂÎ^[:[·J[Ù&M`é¥ïѬg=}éËV¶^´šïd'}éË*VÑšÖ,©ÿ1©©pæ ¬_ïµu¡³oŸÌ*Õ¯—\bÿý«ÞJŨæÎâ÷À!X½W¬ã5ÝêóPj¼ÌËÜÄMœâ”‹zËlf3˜Áå(?ãg¼Ñý—@ɽ¢ £w¸õ  ©JŠ6fFׯ"ÌͰ{whA ¾äKºÓml£½XÆ2o t•¬¤7½ù–oI'¥,%•Ô2=»£'f•E â«ÑeûMD æ>˜™ #Á\æR‡:|À c9è­.ð"/2ŠQœå,ws73˜AF‡djÖ„ï¿—‰™h%œ•hƒ¦*)¶Q½Kbf–6mòÖŽp(84¢Ùds-×rƒô·úóþáó>ïÓ~ä‘Ç@ò%_ÒŒf\y¥üN4á¶ÛÓk<öPÍ¥F ÙxñìYرÃkkÊ¬Þæ>hî‹&­³9ÍYÌbzЃltÉÊÈR@ó0˜€…ÅïøÓ˜F"‰$$HðÑéŒÞÆ7x8ègl¡z—Ä\€SàP‹ZÌf6ãϹ¸sŒa ¿á7½Óg…2‰IÜÀ zqÏe.õ¨wáwÌg`–è£ó·xù塽_¯ñØC5w?O*£÷±c2C”ïw¦39äI&ÛÙÎU\Ň|袵îs€ g8Ïò,I$ñ:¯3•©%öi0ÁS4ú†Ò©JžŠ˘ pc”Nº‡«®*ù³$’xxŽçH §xŠA b/{#oh˜ìg?×qOðñÄó$Oòo”éa6ûÉÍ•ÙÂhÄü-†ãE ?Á°zµÓÓ!¥T#¡æ4çK¾äfnæ'Íh&2‘sD_W‰¯øŠ®teóhD#æ3ŸqŒ+ó{Æ7¬ZYûœâÌؾâã!--ôq4UI±ê]’h¯qغUf–š6…fÍÊþ<Ž8Ò¦3Ÿù4¥)‹YL':ñEÞØ™Ë\ºÒ•,²hHCæ0‡‰L,w×Ïúõå¦zî\ôH›•P½ÆcÕÜyü¼ŒÞffÝÌ´—¦&5y‡wx’'‰'ž§yš~ôc+[´Ô= )ä žàj®f/{éIOV±Š¾ô-÷÷ÍçÃÂ… ÙºU& ÓÒÊ‚vÐT%Å6ªwIš7—îJû÷áC^[cãЧ)•fÀ€ô§?¹ä2„!å(£Å]ÜÅŽDÆÐÈ'ŸñŒç:®#<úÓŸÕ¬fÃ*}_4;ˆS§$§:1RSCC¯ñØC5w?¯8£wUÈÄÒD&’M6-iI9t¡ /ðE9d­ólb}éË$&aañ(²ˆE´ E…ïißjÕ‚Ý»ÅßG pl%ZS•%Lââ"Ó•ÌÃqé4¥òhB>ã3žæiRHá Þ #™Á ßm ô>ïӑ޼ÄK$‘Äñ_Ìg>-iYå{£¹@zófé»Þ®ä&+Šâ ¦Æè›o䚌6Ê«}«ˆ~ô#—\nåVNr’y¾ôe-kÝ5Ò&§9Íd&“N:ËXF3šñ9Ÿó ÏLr¥ïMHˆît¥pkß šª¤ØFõ.K4×9”îšQÅ5'žÇxŒÕ¬¦7½ÙÇ>nåV®árÉuÙÚªYÇ:†3œ¸½ì¥ÝXÁ &1‰‚#š‡Pg•¦L™RâŸ[è}Ýy.½êÖ•=rü6C]•ÞG–-œ\²0º2ЀéLg&3iB“ µò 8à€Õ¡cañ.ïÒ‘ŽLe*…rw±Žu ehÐãDkôÂ… «}³E ›'ž°,°¬GõÚ{ZV:b{^žý÷XÖKÖKV«Åù¯›­›­uÖ:ç­‚o­o­;­;/ØQתk=k=k³ÎÙëèQùLRR,ëÌŒu‘ÿüO±ýßÿ=¼q~ÿûß;c¢Ä0={Êõ¸`×–ØcÁ±ûª«B{ÿaë°5Áš`Å[ñVM«¦5Éšd²9jgUYEÖ§Ö§V¦•yÁ7t²:Yó­ù!÷öÛò¹Œå°¡ kW±}Ù²ðÆÑT%Eq€h]q0…Ñ-ZHq´]Hà>îc [x„GH&™™Ì$ƒ F2’ÏùÜÕ& ‹…,d£è@þÉ?I$‘ L` [xˆ‡H$Ñö¸uêHúÙ™3’fM˜‚ní¨¤(ÞcÒB¢Í7ØIS*zÔãyž'—\†3œœàüf4ã!b [œ3¶NqŠ7xƒ®tåz®g5«iLcžçyÖ°†A i\³âðõ×ŠŠœiÅ šª¤„€ê]ã6lðÖ»˜›_eiJPµæ hÀŸø[ØÂ<@ )|ÌÇ\˵¤’Êd&³çZmf3S™J{Ú3|ÄG$“Ì=ÜÃf6ó<ÏÓˆFa#Z—¤Mkzzècè5{¨æîà×I¥ªô6¾!˜Ú·ÊÈ ƒ9Ìa‹ÂNsš¿òWÚÓž¾ôå%^r,©€²Éf<ãiJSîâ.Ö²–Æ4æü‘ílgBšL2¤¥ÉÄÒÞ½—çˆÙaÆŒN’Ήuë†7–vURl£z—%-MºØìÜ 'NxmMðÓ5‚×¼­xØÉN¦2•´`;˜ÊTÒI§ m¸Ÿûy“7ÙĦ 6“+¤MlâmÞæ>î#4:ÐÉLf+[iJS&1‰ì`ÓhKÛ l­ŠhœY:wΙAõ=TswèÔIŽ~ ªÒ;Xß,ýèGY¬bwqթΖ0žñ4¦1=èÁ¿ño|ÄGìaOP+Õ'8Á2–ñÏq37Ó˜Æ b/ñÇ8Fwºó*¯²“ü†ßP“šaÿÄÇ ¤£iR©víž@ø…Ñ@a—¢(HJ‚Ë.ç°iSèË»‘&Ø»4¡ ¿ãwü–ß2yLg:³™ÍNvòòù/V~­iM ZPzT§: $p‚8ÿµmeƯG=F2’Û¸a k©"¢qémÛ$xhÕJZ+Šâ-~ *ãÐ!¹—T¯°ß)2Éä5^ãÏü™÷xÌ` øúü—¡ÕhK[.åRjQ‹jTÃÂ"Ÿ|rÝìæ~(3~iÜÈÜÁt¡‹³ÆŸ§{wÈÎÿ9r¤+§p“ á›ÀaáÂ…:[C¨ÞåÓ©“8‡£#p((´”«ÊÞP5O$‘kÏRÈ V°€äÃ*V±‹]ì8ÿU-hAWºÒ“ž b=èAîöÍ̔٥uëdo„êÕ]=#˜ú†pƒ¦­Äz_w‡6m Z5سGêÉêÔñÚ"¡2½ÍdIf¦¬¤»A]êò‹ó_ùä“M6‹XÄ V°†5æ0ÏUD"‰´§=ÝèFú0„!´£]¹{:‰Iߊ¦Õèùó÷M ù“ЛMl¡z—O§NðÞ{Ñ3³´aƒ<·n —\Rùï:¡y ô<ÿe8ÉIv²“}ìã 9Ê(¢Õ¨O}.åRZÑŠZÔ ûüv©U ®¸B‡Ü\èÝ;â&ØÆüí…ë @vvvØö(уÞ×Ý!!AÒssåžÛ«—× •éíÖJtEÔ¦6#Ïr]ìbûÈ'Ÿ3œ!jR“úÔ§ÍhE+×'Ê£xà`Y²—“ß9x° à£EQä!³¾~Ç8/Y jpùù/?rå•8,_ƒYŽ6‹Š¢xÏWHà°~½‡ÊˆtàP Ïù‘¶m¡aC8x¾ûRS½¶¨r,+àœXqЮJŠmTïò‰ÖÀ!竚G[´SC¬ê˨æîáGßP™ÞË—Ë1‚/ˆ‹ ¬:DÃ&¡»wKÓ–F qãðÇÓ®JŠmTïòiß^òA·m“ ¿cœC0õ±ª¹qÑP ]XhÅêDª’[¨æîáÇÀ¡"½÷ì‘6£uëJ·@¥|¢É78½­À)ŠC$'KðP|YЯœ>-)8qqÑQÈí;‹®ß~+…~fÛ6Ù°®U+ÿ`*Šx`‹†Í$Í„R·nÒB)Ÿ=ä¸l™·vƒ X}8ègl¡zWŒÙtËO3Kå±ftUºüòà2cUó”èÚU^û}fÉ<”„³ñ›!VõŽeTs÷hÛjÔMÃòÚ¡"½MZ¦y0VÊǬ8¬^-«½~fÝ:9:á@S•”P½+Æ\˜æBõ+vweÍ53q~ÅüÍ91«ËzÇ*ª¹{ÄÇû/]©"½5pŽ&M¤#a~¾¬Hû''•@S•ÅQÌ…é÷%éœ9öìYùï)j>3¿b‡Œ oíP¥,Ñ0©TTXYÕÀ¡jÌgôÕWÞÚQ……Ôi_ºÄ[¨ÞcÚüìÀ~àËšGÛŠƒC,뫨æîâ7ßPžÞ[·Â‘#Ь´háQQ†ñ ~}»4kiÔè õê93¦¦*)¶Q½+Æä²îÙãŸ\ÖÒ:[¶Èn¦Á>dƲæ—]õêI~ò÷ß{mMùœ:%N?!Á™ ~bYïXE5w¿åé­+Ñö0Ÿ“ŸW£×®•ã•W¦86¦¦*)Šƒ$$rYýâ JS¼ kRä7ÝŒ:âãýŸ®´aƒ¤´o/ÝŠ¢ø 8¬Y#÷üˆI¹ÑÀ!8ºwŸ¿nì“àGÌsHçÎΩ©JŠmTïÊ1¨‰ôýF(³J±®¹Ùɯƒù[sÊ9ĺޱˆjî.MšÈæ[Çî]^[S¾Þºñ›=jÔ{na¡7‚3¾!1q£ccjª’bÕ»rü8˜¾Óv‡X×Ü|V~íÙ½f»tqf¼X×;QÍÝǬ:øÁ7”ÖûäI¹ÄÇëÞ>v0A–ß}Ãm·9ÃzžDÇFR<¼ù1U©¨(0kÞ»··¶D&pX±Îó_Š—+S¦LqÆEQÊ%#æÍß0r¤×Ö”dÕ*ÙÛ§sg¨UËkk¢‡=àÅý¹}ì˜G''C‡Ϋ©JŠmTïÊ1oëÖɃºŸØ²¶ß5#Ö5oØÚµ“"d¿„–åÌŠÃäÉ“/ü8p #¶)ÑC¬_ã‘À\Ÿ¹¹ÞÚeõ6õ š¦d?H_Õ©,]êÜõ­©JŠmTïÊ©_Zµ’¥ßmÛ¼¶¦$f9µW/ˆ‹ þ}ª¹ëÌn´ @óæÎŒ©zǪ¹û˜]èý˜ªd|ƒ®DÛ£C¨[W:)ú­ëž™PêÜÙÙë[»*)Š ˜Usáú…âƒb3³´t©·v”Æ<„tíj/T%²\~9$&ÂæÍþêÂcYºâ*Å»îù­ÎÁø†ÌLgÇÕT%Å6ªwÕ˜%éÕ«½µ£4æ¡×®sPÍ¡o_9úÍ9˜´§ £AõŽETs÷II‘àÁ²¼Oy,®÷îÝ—'«åíÛ{hT”Ò§ý¶ƒ´™¸ìÚÕÙë[S•Û¨ÞUãÇÀ!?¾ùF {ívÍPÍ!=jÖ”ÖðÚšæo̤A8ê{¨æ‘Á/¾¡¸ÞÅ;íÅkŠmLz—ŸV£ +]ºhª’¢ø³4è‡"8ÃòåR¬™)ý§{$&ÂUWÉk?Í,¹8(ŠâݺÉÑëÀ¡8æ÷꫽µ#ZéÙSÒDW®„Ó§½¶FؼYê,[·–•$'ÑT%Å6ªwÕ¤¦BíÚ²ü›—çµ5Â’%r %‡U5ÌÌ’ù,½æØ1YIJ‚ŽWõŽ=TóÈ`&•¼Þ0¬¸Þ&p0)7Š=êÕƒ+®VÝ+Vxm`Só÷¦©JЧ¨ÞUïa0»¡8Õ\03r~ ŒsèÜYzu;…ê{¨æ‘Á¬ ~ó œ=ëFï'ÄGÅÇVTûßðå—ÞÚaXµJŽ&5NS•% 0KÒæö’ÂÂ@z.G‡ŽYqÈÉñÇ’´ JÍßš¢(þ¦^=HK“ aýz¯­ ¤°vé"«äJh¿ê—:7}ƒ¦*)¶Q½ƒÃ ûaÅaÝ:)ŽnÝÚÞÆoÕ\hÐ@–¤ ü±$í–sP½cÕ†j^óY.ZäM@˜—»wKßõŠÒÏ=>”¡÷¾ÅŽÆW½cÕ<²˜ÀÁ'GšÆpà€Ô6¤¥ycÃňñ ÆïF³_Sé•hMUR”(!.zõ’×^8ˆ;¥Æ¡n]Ù]Xq†ví¤ÍݰqcäÏof){ô"üÒ,z|(oÑŸ6µJQ”`éÚUšlÚGŽDþüóçËqà@ñSŠ3x8ß`ž;Ü@S•Û¨Þö0°™ ˆ$&•fÀ€ò0ƒE5/I\\ÀAÌ›ùó›¿¥ž=ËþlÇ[÷òV›iLÓ&äñUïØC5,ÉÉîJ^L*Íœù# õ NÓ¥‹LÔmß.w‘Æø†Þ½K~ßÑT¥âƒ…úzÀ€!¿W_GßëâøÁ¿¿6ðgŸ¸ &p4(¼qô/ûÚ|¦ff)’6Ì™s€>}J~ÿÝÇïàLbÚ˜6,\±£Òq¦L™Rá¿ìbÓe^Îú:2¯õüëÒ“J‘:oQäæÖ`ð`ï?‡‹éuB¤§dU'’6Ìž½„e%+?ÿË¿cR•ÂßgY^•l*Jlpâ„Ì@X–lÚU«VdÎkYRc±{7äæÊLˆâÛ·Knpýúðã‘ëXuö,Ô©gÎÀªá7³¤Ÿc›±Sè¿h2ßQê mÆ2mÚÚØ<Ï”)S˜}äøÕWÒF3R˜ú†!C4hpƒÁƒå8o^d›g˜`Áü]ÇÉë[»*)¶Q½ísõÕrts 4_|!ÇÁƒÃŸ WÍËp泎K–ÈÑÍM›TïØC5{Ìä³îð»Æ»Í™3MAÝö šª¤ØFõ¶qK—¹s  0«äDà š— -‚Ó§Ý?_QQ ø¬rš͘Ҕ@õŽETso0×ñ¢E‘9ßÒ¥Rw—–v‚¦M#sÎXÄø†¹s#s¾+Äuê –ý¹¦*)ž¢zÛ§qcÉI?q"°¼›,_.…Ø—]&yøá¢š—OãÆÒýôéÀ,ž›lØ › ¶h!5n¡zǪ¹7˜}áÂÈäÛÙÑ£kº²ÆÙÙ²Êã6&ð¬è2ÖT%E‰BLßÓ"ÕMæÌ‘£¦)¹ÏðárŒÄÌRñ}9´¨QQ¢Ÿ´4Ù½ùÀX¿Þýó}ö™‡ sÿ\±L«Vб£Lšº471´Ís†›hª’bÕ;4LßÓÑÂMŒsøÉOœO5¯˜k¯•c$ó·äªw졚{C\\`–Øí݆óò¤kõê*ªˆa̤’ÛuÅëVú÷/ÿw4UIñÕ;4ÌLÀâÅî.]îß/ER))Îí ªšWLŸ>²7ǦMîîZTx°0ÝœÜBõŽ=Tsï0¾ÁíÀÁLn  ƹؖMàúëåøé§îžgÙ2)޾â *¬[ÑT%E‰Bš4‘6m§Nv u“¦4hÔ¨áÞy!99°ìÿÉ'îgÍÙ3¢MwëE‰,¦»Ñ_¸»ŸÃÇËñºëÜ;‡ ÙÇiÍص˽óDº½®¦*)¶Q½CÇL¹Ù÷öl9Žáܘªyå˜ÏÚ|ön`ÒÏ"Q·¢zǪ¹w¤¦Ê¿£GaåJwÎqæL môÈ‘ªw$HI ܯMÐææyÂ<_”‡¦*)ž¢z‡ŽÉ‡7Nsút`9ú§?un\Õ¼rFŒ\å/¾€cÇÜ9‡Ñ5ƒê{¨æÞb®k³bì4 ÈFsééR¸«zG†‘#åøÁîŒäˆd0$&V^­©JŠ¥ôï/³_-]4œfþ|éâе«8%24i½zÉþnIççKgŽøøÊg•E‰NÜîÎöþûr¼áwÆWÊgäH¹ogg»3©”•%m|ûôÚµ¿<4UI±ê:5j –ÝXu0³£G;;®j^5æ3Ÿ5Ëù±³²$(éÕ ê×w~üÒ¨Þ±‡jî-ƒˬqN:äìØEEß`V¢UïÈШ‘<ÔŸ;çN œIª*5YS•OQ½Ãí|ø‚‚ÀC«Ó³JªyÕÜt“?ýÔù]¤MW§ÚëV…ê{¨æÞR§ŽL*Y–ó«_}%ÝöÚ´nÝä{ªwä¸ñF9¾û®³ã& M§ŠÐT%E‰bÌÃßܹζe]°@vnß^òX•È’š*N9?ßÙ<åÂBøè#y©ÀAQ”ÈcVœÎ‡Ÿ>]Ž7Ü Gz æÌ‘:§X¾öí“.{W\áܸU¡©JŠmTïðHM•ûcÇœÝ Î8‡[nqÞ9¨æÁqË-rœ1ù1¿úJêaÌßM$P½cÕÜ{Là0gŽs«–……0s¦¼¾ýöÀ÷UïÈѲ¥¤+:˜r“a0rdÕ>_S•OQ½ÃǤ95³töl ø­¸sp Õ<8LàðÁÎÍ,™åíÑ£#7[¨zǪ¹÷´i™™rïpªnáB™•NM…îÝßW½#Ëm·ÉñÿþÏ™ñ,+à‚IMÖT%E‰rÌÒåÌ™R4.,›ƒefB§Ná§„F۶з¯Ì:Q$mYqÌߌ¢(/æ!Щ& o¾)ÇŸÿ\Ó”¼ä–[ !AêÕöï¼5kà»ïà’KÄçDMURl£z‡OFtè Ý3œØ îµ×ä8fLøc•‡jN^žäPÆÅÁ÷ßË JñŽ£G¡iSYuضMRBåÞ{á•W`âDxòIçl †)S¦0yòäÈžTQ®¼Rv~ç@úc(¼òŠÜC®¾Z&!oyï=é¾×©|óMè+@……²OÓÞ½¢ëÕW;kgUhª’¢x„™z÷]yØ •W^‘ÉÈ‘4øºu­Y_~9ôqN ä°šU EQ.~Ìõþê«áóÒKr¼ûîðÆQœaäHÙ×aÃXº4ôqæÍ“ ¡m[)ºŽ4šª¤ØFõv†ÔTÙ"þôé@G$»œ;û›¼¾ï>ÇL+ƒjnãË/‡ÞåÝwáÈ™}Œt{]Õ;öPÍýÃwBr2|þ9ìÜÚ+VÈ¿zõéOÅQ½#Or2Üu—¼~ñÅÐÇ1á/~üª…vURaìXÙ æôi:Tn&Å),”"èÅ‹¥ úµ×4hˆ^|QÒÊÖ­“‡€³gKþüÐ!è×O‚†!Cû@(Š¢¼ð‚lcÆ”íÒöý÷2¡tò$\=ŒïŠ=ê×— C€ÿþïÀžLÅY²DŠÜþøGïƒÐT%%Towˆ‹ƒ¿ÿ] ÛvÚþSœÁâŲ´ùÎ;’š4k\ziälSÍÃã’KàáV-øøc)~ÎÊmß{O´þî;h×NÚ(zÝZWõŽ=TsÿÒ¸±Ü'ªU“ÙçîÝeåòøqÙd²cG)žÎÈŸÌýCõö×^Hg}à™ܼ~ü¦L¾}¥öíç?‡‡ ý<šª¤(1yy²ò°reÙŸ5l(D÷î‰Nrr`ôhøá‡²?KO—Ô³–-#oWyhª’¢ø‹ùóáÆ¥Ekizõ’ɉÆ#o—>Ï>+u åÕ:Œ' QÊKQó Ňœ9#]x^y¶n•eêo”Û¦M½¶N ‡dYzæL ÓÒ¤ûÒ#D¦Ð]Q”èeÏiËùá‡pð äÈßsÌVÓîYñ/«VIQû¼ypêôè!ÁĨQþJKþé4ÏIrÿû‹IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/cpudemo.png0000666000000000000000000007332400000000000015503 0ustar00‰PNG  IHDR4!hx:¶ pHYsÄÄ•+ IDATxœìÝyp£÷™Øùïû¾Iðhö¥«ÅW‡IÖØÖØ²,¿½OœÄQ&ÉÎ(ë™L¦RÉÖd7WŒFª¶\•Tj«R•ÚÊ¢1ÉŒ;×zwSÉ&„›+±•ÌŽlOÌWcˇn©›Ýjõ‹f7›â|Ïýd @â$ŸOYån/~<šxøû=‡’Éd„B!F˜:è!„B–4B!„yÐqä™$æç™ŸŸ'a6º;Áüü<óó L+E¬þïí²,ÌD¬ñk!DI@#„è‹ÔÅ ÓôB„ÇThÐ B =Jr!:èU!DG$ Bìf¥ˆÅRXÄâ–Iâb ÓªíÀèñ Ä °HÅb¤ªw™‰yæw=7U}ní©Ñh”¨¡Wo0IÌ'0щFç0S&Oð—¹ ñâÆÝ噉ÊÑ™M’Œê!È‘“b_&‰X¢.˜h3_ÆL0« f,“T¢Ññ”E*ebè?ÍŸ¯+æbý‹˜TþªcÌ!î’!Ž‘ÊîI‡,‹4:Ñd’¨V*F,ea¦RXF”h2 Õ]š»;*&‰ZÄcÄIÆ t,ÌÔE) 3‘¬íâÔT‡: §,,s£ò8s±’¨¬H<#„¨';4BˆÖt9 v´K¤0õ $XHFiWìBñ¸Q}œŽVƒ˜ÚnË]ÆùÊãtº åîãj»5F´Åë !Ž%Ù¡âÙ›TŽ…ZžÄ“ÑË´°Ì)öÉcI[4®yšC×Á´ mYÜÝ¢ÑÑçêW9VJYV%1¨6ç÷~ BˆcOvh„ûӣē ,$“ÄãÑü+uq'øsz“]”4µtœ9½õ>‹nTwvÌEÌÚq“q‰g„{I@#„h­®ñ^ ÈM|Òµhe稪’KS¹µ’wS=8Ú§EÝ•£J8#„¸—9 !Z3¢Du“”e’ŠÍ“ª¿o'Ï¥z\dU†çS•âxܨg™ b{²‘x¼­ã¼¦¹çõ„b7Ù¡Bì£ZÝ´'’Ð(ɺ¤`#­ 6æ*·q’ñèî D7ˆÆ“÷æò4SwÄ´s%„{(™L&ô"„¢©FwËÆ…b/9rB §@¦ÊˆJ0#„hJŽœ„ÃO¯ô²BˆfäÈI!„#Ovh„B1ò$ B!ÄÈëR@c’˜O°«yúN3®ùÝy›Ý.„Bq@]h3˜$i¢ÉÊðºt¢v³Û…B!îE*¶Èù…=?-‹t­£§n`èÕÙ-ÍnB!„8„Cö¡Ñ‰&ã€ÉbýÍi kî|µ£§Ž>g±˜hr{ƒÞ¿þ뿾ï«õ«_evvöp‚BqKKKüê¯þ*‘H¤écE!·º@UU|ß?ðýÉd²­÷Ò£àÒ¥KÃÛXï«_ýjËûËI!ÄpZ^^æÄ‰œ;wnÐKiè‰'žàùçŸðJzëÅ_zÕ)xNGO[XèXXéêà:šÝ.„BŒ–÷ßÐKh[íMÿ(ëMÙ¶®3g™˜`™˜ÖºÞâv!„bÄ\¾|™©©©A/CTõèÈÉ _d>6O 0â Õ¤áf··L&³óŸmÛhšÆÌÌ 333LOO3333è% !„è³k×®1===×ö}•+W>Ë“O¾2×F] h â {B#ÎÂB£‡6¹}H¸®Ëo¼É_!»a«\椢pÒ÷™ ÞPÊög…. m£ª9&'OpîÜžyæ)žzê)Eô‡!„¢‡²Ù,…BS§N äõ/_þW¯~šk×>ͧ>õ-|ðÚ@Ö1L†6)¸ß®_¿Î·¿ý –uÏû8aoƒŸYOó…ºÇ57Μ!“ùs»ž«(.7o¾ÍåËoÿž}ìY¾ð…gyðÁûûA!„è‹ååeTuÿ¬lö,'N¬uõµ=/ĵkÏ03³(üä'’“'Wxæ™ÿH$×Õ×%Ç> Y__ç·û?sû¶Çêês”Ë_àäI‡›ÚmðÜ}¯!ŠÅOR,~€ÍÍk\¹òÛ<úèY~áþ”I !ÄsëÖ-<Ïkù˜+WžãÝw?Çøx‘sç.óàƒ×8{ö&p¸™Ð|ð TµV®09™%—;Íw¾óË|øÃ?à£ýᡮߒ•"KQk!§G“$£&ÃZ)báB2Ú¨kËë€æ›ßü6?úÑ›¬­ý)Êå'vÝW,>ƒ5ó#ÈdîÞÐÆq’mˆ›7ÿ:orýú¿à¹çžå…~¶ÛËB1 KKK„BÍßB]7ÌÒÒg˜]%TnÞ|Štúcø¾Æƒ^ãܹ˜=k 9¿öåËωlíºml¬ÈØX‘k×>Í|’Oú¥Ž¯»?“DÌÄH.Ô«O4i&7Ç2 ñ}Ÿßøÿ[·>G6ûk S.{&̦ïsªmÅFŠÅS,~œ—_~+W¾Á¯ýÚ_;̲…B ‰Ë—/399Ùôþë×?¢TvQÅ'ÉîÜ·¶ö0++ ?û³ÿ7““ÙÆi þà£(wy"‘m|?Ä÷¿ÿßòÞlÔÔW'ÄãP™Ê.7 2)…žLb˜1b©ê~Ž%™40/¦°,ˆÍ§*;<†Y·ë£M&‰’"vÑbŽJe´O¢§b¤¬JAQ¼AEѱ h²Ù¿þëIÖÖþ\÷¡–U‚Þõoa0 ¹ûšÏ°´t†¿ÿ÷ÿóoþOœ:uòP×B1Xׯ_çôéÓMï¿råy¦¦2 È*ø‡_æ…þyÛ¯ûÞ{Ï31QhùUu™œÜâᇛ?&ôRë÷…ÜjpÞH˜Ÿ¯øìD:ѨÁü¢ †æ"¦%NŠXjŽøB0 ÒD‰^ˆbî9™$æ-¢ Õªg+Eìb ã`¥Ñ“ ÄÓ æÑ“ ,¤̧RXƽÇU#Ðt£3ð;k|ã¿ËíÛ·­ÇçÜpe"áÚhŠR9v:ÛžãÖ­8—.]âoý­ÿ‘éé‰]G!Ä`mllà8š¦5¼ÿƧ«»3­ß/ÅGQ|Þzëgø©ŸúÃ}_weå1gœp¸ÔÖ:{Q—bÄX0ÌÏ'î6ÆyŒÄ"&,šçã Ã)ó â qŒÊvÎn–E³$Ý}ÒèÕ™:º®ßýs“µL@³wB§N&³Å¿øÿš›7[T¨W,~š›3¯ÂæFG¯ÕLŒqóæWùGÿè×ùã¯ÈNBŒ ååå–í9._þíUMLä°¬§™›»ÌììJËÇ^¾ü9ÆÆŠ­µ™Æ;00â,,˜$æ+AŒQݽY4M0 ÎÇ¡ÒÒeªK£Øì½–%¹7AØJ‘êpI½éðu'& üð‡÷=]½ú鎎°Å\41¢Ým–׉#ÐüÞï½ÌÊÊÏê®û 7=¯’Ñ~À*§f66¾ÄïüÎéê5…BôÆêê*À=c²ÙûØÚºŸ±±ƒïækšM©4͵kŸÚ¹­X<ÁÊÊã;¥ÞìY˜~9²Íòò2·ogqœ…ømò‚³¼×…55R,~‚ë×ï°²Ò:»]!Äà5«pZZzUÝTÎ~"‘,ï½÷<Åbedεk?½Ó O´vdšoûÖÖ>וkå째:Ý»yLkk_â;ßéáì !„]qóæÍ{*œ …ܹóh×vQÆÆJüèG/à8ãܸñ4‘ÈáÒ^|ñÅ®¬kØɤà|>ÏÍ›yJ¥Otåz…Âs¬œù¯°ZèJ•Ó^åò‡yç ü™®_[!D÷\¾|™ñññ]·u{%.±½}šþðçê†PÌ¥K—º´ªáw$š÷Þ»Ìööl×®çû'Q}…ë]îGSOQžâÝwßå©§žêÙk!„8œ+W®ìJ¶í ,ëé¦cjrr›õõ9¦§×u­­Î+®FÕ‘[³RÄb)¬ýn‘©rj6ê ‘'Ÿ|Œk×.“ËýTWÔ]§N]æÉ'?:èe!DßmÙ6¡¿ã/<öØ —sÛ·o£iÚÎß76AÓä¸iØŒL@Óî,'€ÇMû/½^RWiÚU{ìKƒ^†BôÝf©Äý‘©Ë—‡6 ©OÎd懥gØ^V*F,Uݫѣ$“Qô];8:Ñd’()bÁ˜K‘2 â qŒ.¼þÈ4P…Ç{šÛ·? TztÐËÙ×ääuüƒ^†B ÄV©Äx(D¡Xä{ËËü7çÎ zI»X–…R{S.OaÛLMv@óÒK­ßþ_x¡Ã–²,Òz”h7¶eêÉ€³gÏrîÜIVVÞ&ŸzÐËijzú-~ø4§O÷f\ƒƒRþëò2¿òôÓœš˜ôrÄr<²ï£) š¦q+Ÿçµµ5ž9{vÐKÛQ_á”Í>8àÕtGÇ;0û2ˆ/,@5€I`Oêwžêj¥HuùÕáïÐ|ñ‹Ÿã^ô2Zºï¾—ùã¼ËaªC`˶‰¨*ÿæÝw½1Ä ž·ëèÄØØPíÒ‹E¶··Žù„m]gÎ21ëJš,ÓÄšÓÑ­‰”E%°IÕÓXèÌY)Rf–wdwh Ò“æé§Ÿfcã 2™áËQ9uêu>ñ‰Kïq$eËeä·o“Î嘛žô’ÄÊÛ6ªz7¤™ ‡¹™Ëqes“žül»Û·oïZ_&sŽÉÉÍ®h âI‹Xlþî‹%™¬þR‹1ŸªÝœ$©ëŒ‹Í3_ÿø ½YÝ‘h>ÿùg¹qã·(OS.?<èåì·xä‘×9þç½!z"ç8œœ˜  ñ¯Þz‹¯ñ‰¿â`ò® Áî™HMã?\¹ÂÿüÙ϶uûî»üÔÙ³|ìÔ)ÂuåÕݰ²²²Sá”ÏŸAQüãC£GI.DÜQ;rjïñÉd÷—v¤œj~é—^äá‡S(Êpô PÕ2ssÿ_üE fÄÑTp]ÔêOýÙñq.onòÎúú€W%†QζÙ!ÌŽóÎÆ7sûÏåû;ßûxó&_}•¿úÒKüo¯¾Š¹¼LÖîÎÏû7nììЌڄíã¦g•ŠU²šçç™OÔ ™‰Û}:Wøò—£<þø7ú÷‚-<öØ7øÅ_lá q4äl{×—™±1þÏ7ߨzÄðÊ;~pïÔê°ªò»W¯¶|îßzùe²å2'ÆÆxpjЇgfXÊdø§¯½Æ¯ýþïó÷ù/ׯã¢ñÒÒÒNBðææÃ2ò`ˆõ& ±R\4 ’ ,,$‰¦ÕàÅ$‘HM.°Œ’NTÊ»úáĉ~ù—ÿ"úÐ?ØNª–ùЇ¾Î¯üÊ—™ž–!”âè*¸î®ßº'Ãaî ¼º²2ÀU‰a”³í†Í™H„Å[·Ø,ÝÛïÅñ}þÚK/¡©*“áð®ûNŽóÐô4çffX/ùço¼Áÿqˆ`zss“‰j•ÞÆÆ#2a{ˆõéÈIGŸ,‹´n`è€n`èi¬>€˜œãË_þyüëLLÜìß SÉ™yüñÊ/ýÒÇÄÄ‘O]Ç\ζïÉ‹8‰ð7ÞЊİÚ(•5IJ ) ÿñÚµ]·mÙ6õ[ßât$˜Úú-lzlŒ‡¦¦¸²yð$Þ••Âá0ž7F±8K(äøZƒòâ‹/z }Ñ›wV=JòBŠØüg±˜†ÝêíÎnZ]]íxyþÏÿ<ßüæK|ðÁ3¬­õ¾GÍ}÷½Í£¾ÎŸþÓŽb±@±Xèùk 1H7×Ö(9Åâîßf·J%þß7ßäó<0 •‰asss¯Á÷ ÀŒ¢ð»—/óÇNŸf\Ó¸],ò~ücî‹D°ìÜ4ÜØÞ>Ð{E¹\¦\.S*•ÈfÏâû.®Ûíþ-½³ººÊ¥K—½Œ¾éM@c&˜Oé$бHÅæIDè¤ÃñÞÙM{u2¬²‘Ÿû¹Ÿå'?yk×L–—?O&óä¡®×ÈÉ“ïñÐCßå#ùÏ<ó…®__ˆaUpÝ]³ojÎNLðo—–$ ;2¥á;-š¢ðíåe>2;Ëo¾õ÷uØæBQ*;;³Õ^2íÊçó; ÁÛÛŒdBðÖÖÖ —Ð7= h,+nDwvb¢QƒùE¢:zÚÂÂ@ÇÂJW¢ä§úIž|ò^}õ-VV^%þ¹\ƒí¢MO[èúwyàž{îOâ¸Ø²í*§z •dÏÿdYüýðÿÖÄn¶ïV”¹C£`Ûu µhÎF"üÖ …8sÀŽÓ °Y.( ©}.3™GoC½Ñ“]Ÿ«t¬þÝ\4Ñõ¹Ý]-ÓšcÐ?Ó"‘?ó3ŸáK_ú4Ÿýì[|ìc¿Á‡?ü{œ<ù.ªÚÞÖ¢¦9œ<ùþðïò±ýŸýì[|éKÏòùÏF‚q,m9NÓ¼ˆ³ü'Ë¢8B[÷£âW^~™[ Žn†YmŽS3 pj|œÓ‡øYêå΃‘B¡@PÍËfuB¡ÑHyÔõæÈɈ_œ'VkhÄYˆê€N<¾È|µË _èÊÈðn˜åüùOŸdyy™ëׯ°¾þl{ϛ¶§qœ)ŠÅ3D"ë„ÃyÆÆrhZžññNŸžâñÇÏñÐCÏúCbà¶Êå–oRaUåÿ¹~_þÈGú¸ª£-ë8¨ŠÂ–ms®Zf<ì‚ ïyœØgçd2t¸·*¸s€@¯ДJ'ð¼0ccû÷Ńӳr#¾@ƒž•à¦áÃãܹsœ«Ž¯/—Ë‹EJ¥ÅbÏË¢iD"§˜˜˜ ‰È.Œ{l9N˼ˆ3ãã¼±¹ÉßùÁ8ÿÀ|üôi‘ч²Q.£kí&Ë‚ë¢õáxl\Ó¸Yè¼#ŸÏãû>…Âý=X•è6©ÞÇøø¸,Bt(×âÈ©f&¢ìy|+æ[é4aUå3gÏò©³gybv¶aŽhn½T"¤i¤Ûè®;, ®K?¾ÊãªÊr>ßñó2™ š¦‘ÍžëÁªD·I@#„èºmÇáL¿Œk÷W«V¼ àû««˜wîàø>éÃæó=Ô륷 ÆT•åÊ¡)x^_^g\ÓX=@ÍÖÖ¡PˆÍÍÇ…FçóZïk_ûÚ —З.]’€FÑ]Žïãú~Ç;,š¢ìT±xAÀ¿{ÿ} h:.˜ ‡¹}€£•A)¸îNÒm/©Š‚ïûl;3{: ·’Éd…Âlo?ÄÔÔZWØ[ÏñÁ°µÆÐ!ºª~0åAÕò*2¶ÍÉKm«[ù<“¡[¶MÑu‰2‘¶öŽÈè%UQØ(—; h¶¶¶°í‡Û®xfÇ¡[𱘶-„èŸ|µÚ¦R™r\Ý)•˜Ð´7îQPp݆sœzÁ§2f¡ÛÛÛØöüUŽù* !ºªØ¥¼ˆ¸5BÇ'ƒ´Q.ï$aAÀúˆT:m9NÿÞ„‚€µ½\.Çöö‡Ð´Ñß¡9†O²ê°£„ý‘wœ®äEŒ«*W³Y~Vòhöµ^*ít´õðÆ=(™}úuÓ¸¦auPV.— ‚€BáìÈ&7#Ðìí$Žéèû]9Fˆ„B|0B%ȃ´aÛxÕÙYãšFú%ʃ)—[ö+ê¦qMë(aº6Ç©P8ÃøøvW&°RÄ.Â…d´Ñ¬ê¶L@#„ 9ÛîÊu&4[…®ï÷í·øQu3ŸG«~ŽÆ5›=hV‹E¦ÂáCwí­·í8}i¬•ï§;Ååóy „ç…Q”{­?©XŒ”uï=z4I2Ú$éR°Ò h„]µé8] @4EáN©42­üåf>Ï„¦•7î•.'SÀWù;Ÿú?}ºk×ÍÚ6cÕu÷šª(xA@Îq˜n£Ò©P(àºÌìЉ&ˆB_ƒ”NH@#„èªýæ8uÂVŠE höq«. Ùyãv]¦»´›òÝ[·«*™.í¾Õä\—ûûX^^«ë, éOÖȳRÄb©êPjƒøB‹ÔÅ–±ùz4É.ÛÙæÑ‰&“• © $ BtU¶±íR+—ãSgÎtåzÃî¿Þ¾Í×ÖøÊÇ?ÞösÜ `˶yhjjç6•J¢ðt—æcýÎ0;>Îjw~ÊžG;ÉÌýàû>›¶Í#m<6ŸÏãºGwìÍK/½Ôòþ^x¡ƒ«™$b)æâ $ °R1b “…¸AôBs×nN’…Zc&˜O™D»ÑH@#„説mwm‡f2âÚöñIȼS,òúÆFGÏY/•îù|ûŠÂz©Ä£]h~¸ºŠD4;]¬ž*x^ßçuŠÒvP–Éd‚©ý(À²HëQ.•¿ê†žZÄÄÀ¸ç±õ;9€®Ó -ç@$ BtUÎq˜êÒ1B$âÆ1ªtZ)•ð í<¨ô  öAÐQl+¿kYÌ„BøÀZwh ŽÓ×ݨ´hwêöÖÖ0ud›êu¶Ó%VŠXÌÄH.ÔÙÉÅé–£ù•B D@¥ûk7“‚Ï#ë8]¹Þ°»™ËíTwµk­TÚ)Ù®éVéö;››l–ËŒkcªÊz—whúm\Ó¸Õæç%“É3½]ÐQ¡ëÌY)Rf寖ibçïîÎXéÇzÝ㺸 Ù¡BtM¡‹cjUe¥PàÄìlW¯;ll߯tÎUÒù<móã½Y²]oBÓXîB@ó{–µS¦­) e×Åöý{^ï ºÕ€±ã”nommáyOH•S[ âÉ(±Ø<óµ¿/ÔΟ¢DyóóèÑ$ѹ±ùTå.Ãèj•”4Bˆ®)xÝ>Dð|ŸÛÅbÛoð£j­TBÆ4Ë[[|ñܹ¶ž·œÏ3¾§ô¹Ó&r|Ë‘Î繯:@Ó4¶Êeî‹Dum¨Îq:ôU:£) Nw¦ö9ÒÛÞÞÆófQ”þï$ ==J2Ùà¶…ÆÙ½F|…¿Õÿù®{®wrä$„MÜ8 IDATèš‚ëv=/bBÓŽEbðZ©ŠRI„ÎfÛ~Þ­B‰=9K • ±ÍC}Ó²î݉ ‚®ÿm;N׃ßv(AÀfåç¹\×=ªJ@3*Ff‡¦Ù¨ƒõõõ>¯DÑÌ­\Žr¹L7G#ª¾Ï{««¬w±¡Û0ZZ]¥TM Þ,—ù`eeß>2%Ï#[,2îûìŸè:×VVxlªóJµr™×VV83>N©îˆ¦dÛ¤××9Ù… &½±ï8”úœ\¶m®¯®iqôT.—+ßÇ¥A`ã ß§ŽÛûãÈ42ËIˆáWp»?•x\UY)—ñƒ ïe¾ý”.¯0*°R.ïÐdZìrøÕˆƒ4ß][k:’ Ývl»îθ†~ ‚€rfš'ü TUÅq"(ŠLÚuÿZ,,3}7¹-sÌúPµ>B N¯ò"BŠÂj¹ÌuùGÍ­R‰ñê|@%Ù÷Ãû#›¶M³´ÚZPÔ©œëòà ΎßÛT.¬ª¬v©ÝiгØÕ–8BˆQ—µí®ÍqªÑ4®² y˜ímX§) e*s±N´(/¾]wLµ×˜ª²R*u”{ôÊÆF˯ߘª²Ú…æz®ïãÁ@Êl5E¡ìy”|Ÿ‰&Ÿ»Ú`J1Z꾚µé˜õ,R¤Ò•Ìšt:EââÞišBQ‘ó¼ž#D4­í–õ£hݶñ÷4™S‚`ߣ‘Õr¹i@ ©jGI¼ÿùömN¶ ”êùC&}  Þª¢´œ^ÙÕ˜ùã¦ã¦î_‚I*µ· qË2ˆ^HÇI^ˆbÔ·0Bˆ:ÛŽC¸GNµßªó#Z>»+Ÿ¿çè(n¶ÈÉ{Þ~»/A@¦ÍàãµLEQö4‚€Ü!¿E×Hšz­½l6 Lƒ^¥èDÝ¿ 90Äæc$vƒóFšTlžùùyæc)Òõó„¢N¡G;4Š¢t­ÂfØÜ*•îéö …¸Ú¢¡àF¹¼oðá×J”Ûðý¶ªŽE!{ÈÄà¢ïCŸÇÔó¡e.Pm‡†‡]¢u94:Ñä†e’º˜ –ÒÑ(âI, + ÌéèRÒ$„hÀö}ü èÙ[€¬°¯Ê°[)—ïIÄh7ZpÇÙ·D>¤ªÜn# )ù>ïçr»Æ4ãÛ‡/¹\Ž 8u$ªœ¾öµ¯ z }qéÒ¥½…™2Y´,tý<ÑäqË$q1E,–@7¢D몜„¢¦èy]ŸãT/¢iÜ8‚‰Áë¶ÝtWKVJ¥†Ír±xÏ1Õ^í–nÿxk«erq½1UeíMÁóšöÏé‡ñ}ªµòù<ŽsU=]‚ŸþùA/¡§jwu NÅb¤¬Ê±RÚL2£$“QâI£Z¾"³RÝ$£„n½>F˜Ð4n—JAÐÓÀ©ßÖmÏo² (¤ žlЦ¥EÉvMHUÙ(—±}¿i¿Û÷¹¼½Í}MzÏì5¦ª¬2—iËqzRÞß.MQ(ù>eß¿çsX.— ‚×9Rƒ)C·à]‚-«¾Û$1¿H*ötƒhÜ j ¦÷ŒÌrb¸•|Ÿ ÇǰfÛm¿ùöB@wSE—‹Å¦•aUåZ>ÏŸhpßZ¹Ìýmä¼hŠÂf‹.ËK¹\GOXQÝ\/»§‘à ÔJ·÷~^jsœl{Jæ8˜º€Æà¼‘ 1?_wSœøÞgH"¢‚ëöȀ懛›L‡B<Õb¸a'Ò…MŽŽš³elµÍ#¢ È8NÓ€æG››Mwo ©*¹jßœƒæLe§g¥ÛÖäóR?ÇIQŽÎÍq°+‡Æˆ/4ÍjŸ™9 I–B´)ׇÞ"Š¢p«TâcðÝÕU¾³ºŠüÂCñìéÓ‡¾ær¹i3;UQð Ûætݘ€VS¶÷ª=¿/x+›m:ê MUÉ:'8º ïº=r‚柗b±X=ršd|<Óÿ…‰ÛÕX/1Ÿ m†ÑF0Sy|gÃ,…GU¶ÃÇUµ­GûÙoÚr#ß¼}›—ïÜa:âT8Ìï,/óݵµC­#ë8ûït+{rV6«ÏkG¸6re{û@_3å¥Û¹çÐ@¥j®Q¥Se0eßפSp§¬±X «öÿ}~ù=UN&‰X¬íá”ç{°(!ÄèÉöáM*¢ªÜC)ëiŠ‚íû=H]te{ûÀhXQ¸sÀ²^7`lWHU)4(iÏf³(Ê ´SÎÙ{¼¤G[ܯM&‰ö(:ØO!„Ø#ïyL·¹kp•.¹LNvüܬãp«XäL]ìl(¡ÿβX\_':7Çɱ1þá»ïâA[;ASÕià_¿r…¿ùѶ½ž›Åâ¾Ií­­\æìø8^°eÛm•lרÕÒíHÝñÚk[[@ÃªÊÆAwh<Ç©žJ%Áº>)º¶CsÔǼtíZËû_øÐ‡Ú¸ŠI"–b.¾@Ò ¼\Ü{¿Eta¡r4e¥ˆ]Laôhw§g•ŠKUc6#ÎB¼zÒf&˜O˜Õ›ˆÓœâ@ü  äy•à ÇBªÊBg0áJ‹„âÓccÜ)•ø‡—/3 ( ‘Þð'C!¶\—¶´Ä¯~ä#mU!Ý.—Û ƒ àN5 Ù´íŽ‘ ØtÎÕ4?ÞÜÜØu"¬(M+§öS²‰éÛÞÐTæ8Ýäš®œ©Yi=Ê…fïã–Esw;Œ»ýíº¬7?}¬MƒäB½Ú8a.7L‰4ÑäQ*ãÌ!K*Bt®èûô~o¦b¢:Óé ^ÝØhÚó`*b *dð?¢i¼_,òGëë|îÌ™–Í».¶ç¡µªÀB§Oœ ã870TÖëòE®åó(¼Aà˜¦±Ùæï½ ®;4‡9¦nçr9åG}Òö ?ÞŸÒ+ú‘oÓ“oË4Á0ª@eŠwÜ Í•YPº¡§Pãa!Dõó·îˆ¦µ5pq¯¼ër£Ph™SÓn~J#§Âa¾³ººïã6§íÀ‘Pˆk¹\åyårÇ ÇeWuØë™Ì¡òXTÀJøº\wß)áýR”{J·+sœfÔØƒžÑuæ,³ú>n™æî¢"]gÎJ‘êS—žìФ-‹9Ý$6«|pµ#§´…5w~'ÐÑç,›ì=µ;Ú`cc£këBÌ­rÇq8Øïìó\—«wîpªƒ#®7··ql›rò76‡×–—Ñ[ä¹¼ŸËQ²í¶>g*p­P`ccƒ«ø®K¹“ßçƒÍM6¦¦xee…¡Pg×ØÃ³m¬µ5Î4i ØÌ­­-¼>~¯´äy\ßÚb£zgÛ6¶mS*EoÈŽÇ:Õõ÷Ǻߨ|e®c<¾È|lž ïldÔÄ“Qb±yvz¸cÓú§e’J-b¡¤MÚîlš\X@ÌÄ|åÈ©ƒ…íÝ´—Ìrbx”š Wì¡uÛî( y#Ÿ?ÔÎK'BŠÂ«ÙlË€fÕqÚÞ%Q¨$ö®;w§ãc¬ú\«T"¨^ï0E!çº49Ïø§šqEa½.¨X,¢ª*Ž3#sœÑ£$öT1qH'“-žÓ#ÍÿU˜ æc R¦‰iZ¤I³˜¨Kô݇½Íé:iË‚9=]ësca¥uô¹Ã~BˆA+z^ÏSîUÙ”<ë¥S}¨Â‚Jšwóy -~Ã_î ôªÕ]¶Íšã0Öa@ * •`â½jþÌaùA@þìöt ® ©*Ïí~ïÞã4%sœFP“M©”‰“LÖ’v ¢QýÞ3²ŒóæâÝC³Ê”¾û¼Í21­9™u)ÄPòý¾&zžã÷76vÞˆös½\î{Чª(¼Ù¢ªêŽãt”x¬”J=ï@ƒ`Ëuy=ŸïJy½dÐ-8C³C•¯ÓVõã(•JA€ãL¢ª²C3jšü«HcYѨ±+àУQ ˪¯lÁˆ“ÔSÌÏÏ3??OJOV˳ âñ9R±yæc)æâRá$ÄQ°=€fi!UåÛ››m=öõl¶ã]ÚÑ4›¬¯äû]·£À$¢i, ®ä€«…ŽïweÒõA{ÑäûÐQº •ï_¸ÐÈÍhjr=‡®›¤)jÚ,Ëĺ˜ÀÔ£´s¦G“4<6krÞ&„]Û˜ž|2âÕl–çOœh8– Æ –J%Îv˜ëqX!U%ëy|P*ñèž\šŒëv˜DT•ë¥3Ü]Q…·»0س&¬( h ¾Ïé>ýµÃ rÕ€¦X,ây!@=Rƒ)_|ñÅA/¡/šüЉ^ˆbÆRT{àaÆL@Ljßü!Ä` *Ñ3¤(üÁæ&¿pß}Ms­XØì 1Eá•­­{šMÇ9Ð]­!ÎÆ…wóyž8@‡åFÂuG5í²}Ÿ ÚÈÙ/•Rr¨Œ=€)šÂòûtéÒ —Ð7Í­Ñ£$ ̔ɢe¡ëç1 Cr^„÷T@s"âBó¶Í}cc óf.Gx@o Ó¡׊Er{ÆB¬Ùö:µž ‡¼6®ª<06Ö•ã&¨95zÙLÉ÷‡b0e½ªîf¹\˜æ(ÍqªŒr8ö©yÔ1¢ºä¹!î‘Ïç)‹œ={–‚çõ=G¥f\QøÏü¥¼ç¾x'Ÿoìôƒ¼žËq¾nðe§N5‡-1¦ªœéòçAQòž×võذ=Ð`çÈ©6˜r˜vDûšüë0IÌ'hÞÜOG7 .Èñ“ÇÖ+¯¼ÂÛo¿ÍW¾ò žGd@AÔ¦a•JX¥Ò=}_®‹O@ ‡YÜÜÜЬØöF+ …J0Ðn@S ‚¡LYRrÕòó|>Oœ¶%Š65ÿA¿û]×ëþª£ë–™"–èS?c!ÄÐQ…R©D¹úf0È·ç)Mã›kk÷ÜþÖööÀK„5EÁU®VçO9Õ$ÔpŸšüõZ®ƒ]—¢çug(biÕP heúè¦<¢šìМŸÓ!zx]g`ËLpqñ<ɸQm¼ˆ‰!GRBSår¹’1à7©qUeöy7Ÿç©j{€7óùŽ;Ùö¸¢ðGÙ,žœ¬T8 Ù›úAùA@Îq nŠw+å À²íPõØ j;4ÓõÁ”GUÓ#§EsŽóñÝJºqž¹D5ˆÑuæöm±×=2ê@ˆáâº.ŽãPòý¡øñ"â›kk;ÍûÅ" E>Ä”¦q£TbËu\á4Œ4Ea£ƒJ§Üsš¢Pö}ÊÕgÛ>!=hFTË>4‰X‚¨q¾RÙdY,š©jšjŽM›=iºaïl' p„¬ú€¦¯cš©*Û¾Ïr9>==Í;ù<Êë(ÀOr9š°¢°^ h‚ Ào1 AUU¶]wàG€¨Àf>ªª¸îŒt QÍûÐD Ì„IÊ2wÝ^éCS¹íÞÉšBˆã¢X,¢i[ùüÐäEœ …øæê*Ÿžžæ|žÙ!jà6óJ&Ç#‘#‘ •ãšLµ¹Þ7¾ñ VVV>Îó< à ÷Ì3 ÏWä.EQÈäó(Š‚mOË͈j^hÄI.XXfº:ê`Ž9£–l—v¿Bkµ€&[,âÁ TvABŠÂo­®‡Ÿ(ÝM*•™+Åâ»ý›pµ‡K¡P`uu•ûš48,—˼ÿþû„Ÿ~zàUg ) ÙB¡:ö`ZvhFÔ¾}htC—]!Ä=ÊåòÝßlÇǽœ§ª;!Ýî¹Ò Mãj¡À™ééA/¥+BŠBÉ÷Élo£¶8ÞÓ4|>ÏØ ¦ÜuÍ$ªÚùH1x-Ë2Iï™Di-Zèñ¨T6 qÌ•J%TU%S( íéÿ2hêR{ÿn‹¨*?"ÁLª(ÜÙÚj™G¥i…BÇu9qˆæ€½âÛÅ"¾ï㺓Œo zIâš~g™‰y·™1ˆ÷n=BˆQ*•Pª[õ¡Ó§½1 °žÍ¶ hEAQʶ:eô{@fk E‰Gk0åqÒ¢l»’ô‹i‚a0¤Ó&²;#„€ííû)—O2V*™$WÑ9?XÍdö-÷U• \†º>AÃ"¤ªld³(Ê4ŠrtS7-öþ ¢ñ8$æY<'n˜$b&VTòj„8Î\×%›ýÛÛÏÊþ&% 9¾…Õµ5Bû%ùA€_.÷iQÑ€íl– e†£STü4Éâªô¡I¥Læt3•À´,¬Ô"¦e‘nü$!Ä1aÛ6Šò¹ÜpV®ˆ¾) k„÷9Jòƒ ²C3„BŠB.Ÿ'†o÷H´¯I@SéCc¥Iºe’ˆÅˆ¥L0ÎË‘“ÇœmÛ@ß`çóCU-ú+¬(d2™}×÷q‡4 Ñ…B¡€¢È؃QÖ²ÍBÒÂÒu’ÉïïÿÙÏóKq g„8îlÛ&4ü`¯:tQOšïS,•ö=rr}Ÿ :^`Ø„…r¡@09%ƒ)GXÓï@+#–š#¾żø/ykXÿ]þ×Ä, ¨i6ê “Éôy%Bˆõõul{’€;çRÒß¼EïÙ¹Nìû=àx^6;”ß+¾ãàù>Åâ¾àu0A|˜·÷Ç&…iZèF”9Ë$eF”äy¸˜Ì„m™å$Äð°mß¿EññŠÃ×WDôW,VþZŽ5ðUHwóÜj“HÛAQ¤Kð¨j’C“Ʋ ¢qƒt*…ç£è†Î\_—'„F•€f—Àà‘ßhEçœjâ´L àkÚÐ4^¹ ŠBÙ9ªÊ÷ò¨j]å”H2 Îf"…©KP#Äqç8žü`ºò† Ž%·Pßg¿} _UñK¥¾¬©S^¹ A€ãLÉÍkZåd:–ibºqƒ4‹¦%¶…Õ€f‚| hŽ3{k 4 wŸ¥¾ªâW§†gÛ•€Æ•IÛ£¬éá·M²µ°,]°ˆ&“躄3BwÅbߟ$Ð h޹R6‹¢i”÷ h¼!ΡñJ¥IÛ!m8+±Äþê ËL7hš—&†¹¹9 f„äóªªà).{ÏÞô’Ä€8ÛÛháðþ  x¾ë¢Ù€J;ŸUÅó&QBÃt‰ýÕ}W¥I%4œGY£D/ĉJ\#ı–Ïû@@ xÎI¼òÚ —´Ëëßøþ‰?Áìc z)»”67y7•â§ÿú_ôRºÆÞÞ&4=Ý")Ø ‚J»:UÅ³í¡ hÜBE™Ä @zDŽ®ºïª9¢ñ8ç›=ÒZ$eVÆ!D¥¹žÇZ>ïWF¨ wˆ’=×ßz ßóؼreèšõ·ß&ð}ì\ޱééA/çÐ<Û&TUÅn±C³“•¢(x¥áÉɾ¬¯]N¡€¦Lã"ƒ)GY]@££-†N†‘"L!Äð(•êteüYœ\nÐK nþÑ1yö,Ù7<EkÕ¥|Ïcý½÷E"ØÛÛG" q PTÀ^o’ôP/PMÀ2•ã4¾ ¦iMªœš’m!P*U_qüÙ^$ƒvçG?Ú9ÎP…í›7¼¢»2KK• Ð÷±³ÙA/§+œºfBU›þQUÆ‚`(ÈÝb…i gF\G™–¹ˆ©ëD{µš¤3°ã\ÖPP ˆàäää–JÜyýuÆggPÃa2KKœx䑯¬âÎ믚œÄ+•(®­Á“OzI‡æ °O2p½À÷‡r‡Æ)•P´)L9Òê“D,ՠʩʲ*=i¢Ñô¡‘ÑB RI!¨mðªvaðÇ:+¯¾º+Ù4<5EæÚ5ùâžéYX]ÅÉç?q‚À÷)®¯t=Ýbçó4(Ê®]aà;Nõ“2˜rÄíÞ¡©- é:†q¸”8 q¬ù¾ëŽJå÷YÜ4å­-6—–;qb×튦±}ó&3sƒ=,_ûí\-¦´¹9Ðõt‹½µ…R "}wßmúXmlUUqóù~-¯-µ9N;øtš‹!†E]@c_XÜJ„#Áq|Š –q (x¥1‚ ¨& ÷ßò÷¿¿óÆZOÑ42×® 4 ñl›ÌÕ«ŒŸN¡0tÕ>*omUwÅ2×þ6øã çcŒŸx‰“—p†, ©Íqò¼ ºÔn* D…© ¦œñ Áç9VWÉß¼Ù08OM±¹´4€UÝ•YZº÷ RQ°·G¿¡Ë¡†BxöiðÇQÇÖþ§…×q‹s(š6tGNµ9N¾s¢’6艓€Fёʧê¤m€@j`Éž7ÑÆï (J¥+wëVŸWu××_'<5µûFß?P@“yÿ} ««Z‡S(°öæ›znCA€“Ï£†BøÎ)Z¥Ÿ(ŠCàΠjî°4Õ9N{éD3Ê$ Bt¤²C3MPk—¦xøÞ©ìÐl§Ó”77›4P9âÉ\½ÚÇUÝ•¿}·Tº§3®¢ª”œþÎwØzÿý­ÅÎfùàþ kMbq'/ÈwNAÐ"J * ·ÊôP5a„»sœüú ]Œ$ h„ÙÉ¡Q<@QÜJ@3€šô÷¾GhŸ<”A;­½õjƒÆ~êØ…µÎÇEعÜG;—E!—nZËÚ‘Jï–êŸË¡(në'(?ƒï8-Æ$ô›Ï£¨*¾;U h:©ÚCE!DG*GNªo`Š‹ïžìûÍæ•+xÅbù@«o~r法å©*ù••¾®Ï-•ÈÞ¸qïq«t*e2hcc®*mncýòå=/§PØÙÍðJÚú미Ó(Š2T½hìímÔPˆÀ›DU¼»cÄÈiÒXÏ$1ßlP¥A|!Þöè+ã"HÖʽÍó‰Ê•ø2JˆÑR9rŠ„*o`Šâ⻳}hn~ï{„Œ(g?…ª–)nŒŸü~u [×®1õÀ}[_æÊ•†·þŠV·mÜR‰ÐÄD[×+mn¢„B”2™­§´¾NxzšÂíÛx¶66v ëÔÔ7ÕóìP÷ hÔÊ±Žªâ•ËmܽVÞØ@QkAg€/4#«ù®£×ýw÷ö®n¥¸˜ªïlc’H¤‰&XHFIï7Ý[1tvvhjGNjÿÇl^¹ªZÙ}Ù£pççPÇÖðËá9gOO³Ñ$Àè•;¯½vϼ&§ð8Ùô_©üEU;J .¬¬ ª*ë(¥”É †Ã] aooƒ¢øc;ù'- ¾70TãJÙ,Šz”J$3<‡a¢SMvh âÉ['VŠXJoswÆ"uÑdÎÐïv¶,ÒºAe³ÆÀÐM, éÕ'ÄÈ(*?òý @­¨ ü³}í/’¿}»áíNîÉJ5ÍØ:>`g?IäÌË•Þ/žGau•ÉûîëùúrËËx޳+¿ÇÉ=ÅöÍ¿L„ðÝið3ØÛÛm¯'û6Úø8n©„“Ïw´ÃxN¡ÀÄÉ“hccl^¾ÌÉÇïøãªWÞÚBÕ´JBp;5ŠoŸBžyNn©TÙe ¦Pªƒdƒftu4Ë ]gÎloÚ¶•ºˆi\à¹X»1maͯnòèès‹iîú´;Ú {D†¼ 1¿é¢ IDAT*VWs€Ü|£(ÅŒ‹Ý§ÜˆíÛ·QB!ƒS:XäVW™l§é__]eüäI|ß§°¹‰63ÓözjÃ0=ÏCg˲( óÚUÊd@Uqʳ•²çý’i§| %äQÊç‚<šÒæ&Aà:ã•J ¾÷ûjT·÷Çæ94 æ:Y–œßïªVŠ‹¦Á…¤©ƒ-lï즽d–“ƒQi#²§›ªàæûTcØ™ cÕλ5nñQ¼òƒ¨c•rhEuðìY¼ÒÚDšÐä$™¥%îöÙž.ÏÉçÉ//ïŒa(mþ1Jk_B gªË×ðí³hãc•!•m(g2;%Òål–öÃpr¹]W…ü­[Ìèß·s9´‰ üÂiö}QéEsŠ`ˆ&n;ùJð‹¡6Ê×NÁ#«yxÞp®“Žß?!Ø2M,Ë"6_‹fbÄH’4tô´……Ž…•ÖÑ;bEÑ¡bQÊÿîRÀéÓ<§r6 rgJë_jPiãcg?Cd"]Ù1Éç)ml0qútË×°³Ù{æBµkóÝwwF@Wÿ,å-5¼µs¿¢º¸eðt˜r›K¥Lª¥Îj8Lic££59ùü®Ri5bkiéÀïºøÕ#5¯ôŠâìÿ$ÅÁsN¢jÚÐŒ?°s¹J@ãE* "«¹Û#¨yÍ!æ:éÑ$ ÑÊŸwW9¥™³R˜VÓšCf] 1Z …FG népU3í²l£{ö¸…îìÎÔháMJ™óDîÿ­Ê ŠÂöMšâÚéï|%xä…ëàX*•D[ï¿Oxf†üíÿ'÷qÔÐîõ*j ¯¨£hn.‡ï8;ɺÍîÜÙÙ¡QÃíB;ëÚØ ðaóòßåÔ›Ðä$Ù7|¿abõ~Übq'¨ôÊçPö©p‚ÊŽ™_>¢ªCÓ-¸´¾^ét\¾›¼]Ë£‘€fôìóla™&¦ibšMçpwÀ Ÿ#›g>–b®Ý!Äp)•TPöþèмI|§ßÔ©Ü`w¢¼ñÇWÙ(•·&§ðáH¤a9uàûÜZ\䃗^ªTn…Ã\ûíßony™ë/½„“»ù×pr?…º·ŠIQ‹¸ö¹êŸÛ«t*¬¬ì”Y«¡Pà®•Òæ&໳¸…ì¼v~y¹£ëÔÔ7ÕóœöíA³CñCД«•_^uìP©Üì²Ä5?r2Äæžc'h2ÙÑ®ŠM’¬¿Áˆ#C½…]¶­ Þ3•8ðNàÙö¾» ‡UX]ÝÕCÅwO`g?:ÖxÆ‘¢Ú”3áÉË(¡N6K9“Ù™~½uõ*7¿÷=´pxW_›ðÌ ×¿õ-æ¾øE¦Ïk¹¦­k׸õÊ+„§¦(®üÜâã÷ìÌÜ]P€¨øî,Yœ\®åXàû”77?y’òÆC›X^Å- E"-×Ucg2<‡‚KyëyB“K¨¡™kט>À$r·X$o’À£†ÚK¢U˜Å-t>ö¡ìl–ÐÔ¾;‹¢Vš€JévPE75Ù¡±H¥L,Ý ljG£ºEêbªAn⸰í î fÅ!ðÏö¥lqm µ. )oþlË(jh gû‚àn µmYØÙ,ïÿÇÿÈ­W^a|v¶á…ðô4é—_fëÚµ¦×ßxçnÿÑžšÂÞzžÒÖó̓™ª€ß>[IðݧQ^}BpaõÏâäžBQœ6{ØøŽƒkÛø¶ŽÞÄÎ> V9v:à\¨ZS½JÉvûû•GÎÅ<'¯\®¹)J¥ƒq­óuÈ͈j²C“ƲötþÿÛ{óèÈÎó>óùî­*ì@³›Ýìf£¸S·ˆ’µ‰‘µR %S‘cKÞÅ™H <¶Ç³$3q2>ƒs’™‰cœ=V²Kq$Q¶D-]M5wŠ‹D²»@6 4P@-wý¾ùãª±Ô T¨ÆûœÃsˆºÛ[·ªë{ï»ýR)RãI¦ÆNP£ÓZ„}€ëö`Ô†Ÿ|+À„ÐngŸ¼C׊QË‘ £ã¸çß…Õ3Wÿ@âço&1ô(ñþ~æŸx‚s?ŽÝÓ³yÚ°‰ate;€!>8È™ïŸÐu9xà ëv;y’Åçž#Öß û(œî)Z ‹Ð?‚hÜéä® ¡ÃaŒÖx…ÍÄgü|˲ðÜc(ËŘ8^þfCWÒN "Pñr9”m£ƒƒ´TmbFa‚ÝoÙö …ŠSnÂ!°.8Å£BwP#B“â¶Ô,'6ŒñÍfN0›ºMê^aŸ SAyJð*Jh¸ã/—«t¸Kw€jœî°¬"îâí¨X +'14Tuüþ•O³ôÂÿI詼àÜc1÷裕×Îd2,>ÿ|%²S8óQVsµ!Êò KW`ÇãUk‚ÖR<{6š¹ã‹ ŠÝËA)Ü\®îq«ø…¼#`¹XV w©|/l{KêÝnYÿH{‡hMЄQ÷Ønë9ù…BEºA‡ƒPŽÐ(¥dZp—Rs͉Ù,™©1Æ’É(³ÚÆœebbµ{”ñi)ì„ýªCc6¦x”Ö:¾H¹ËËëÚKóÄŽ7Ž ©XÀ¹ Œ`ÅrØ==U÷+ÍßMPº »7ËòK¿É%¯¿¿²-ÖßÏâ³Ï¢}?Ÿ§tî\%R䯼‘ t V¼¹vêÈ1EÅb¸¹& /Ì™ÙÀjApPº T@è‰:š,XöVV0Á¥4Äò¥kÐáñ~CîŹüöÛ›:×*~>ŠÅÜãMu8UPÚ?ˆÝé9mWOj;øù|Å¡1aÿºnqhº“Ú®õj¡L6KvíLšÕ¿³Y²RL#û ß÷1fÃæ áPÇ»WJóó•…ß˽hÀ_³åïÕÜêçoÁ]¼³23ÆŠ-±rê××íëï'÷â‹”æç±W¥ŒMþÌÏ7íÌ(»Dà‹þ_)¼ ƒï*‡!^.‡”®AY> Ai:BMÃ=Rî0*_õ^(JQ¬!%Q ¿PÀ²mB÷J5ïÐDâŒAïr„fUìÓè¾uß!‘?è^:2‡F„‹“(B3ˆ±6<Ã*ƒQ1¼|ÂmRš›«<Õç?„knQ°bË8‹wÒsÉw6mÓþ!ò¯þCìÄ…ze;„þ…×~–£_¬¼¾±³(æ4jZ‡Òhÿ°Œ¿²BOIgMApPºe—0Á ˜#ø+Ù(ÂРÖ#Ji½µfpœŠ­à.ÞNÏïEJä§NÑôhSfW¦ü*ÕÅš¯›R*ˆ¦³û)'wq+Ç„½lŒÉ\ÂûMM6“TªJÑo†tz”ñ]š„'R‚°ûA@`bÁ¦RP¥ þrgŸmrû²Ÿ¿to~⬲\Bï0¡{ »ç̺m¹—~ ;¾¹8׊­à¯ÜŠÛ{šž™MÛýÂëñó7a'Z›Ü»Jè˜qs¹ªíÓnYk#t/Ãî9 fíÛÆËçÿs——Á[uP–ƒö.%ô.#6`ÈýøÇ{ûÛ›²y5 §ƒáò˜Ÿ>så‘ã¶Ûòîò2±Þ^´¿¹»M"4ÝÉú”SfЉ©›4œVɦ'˜HïNžésŸûܺÿAØy¢Mߦ”ÉtPÏÉ[^®D+üÂle–«Bã-¿yÝk+§?‹eçk.ÌV|‘â¹:WlÚ–å—°[H5m83Ú¿ ;¯Ùé´:!8t®ü¸QWR# Ðu1aHèU«u1xËoŠÚ–¡8× S¬LP,FšG-¶lC”r2AÔ¥µ›šÐó0¾_Va_¯Z® ±Ð¦°'YóëÍžIŽ×(òM1>žŒtšvÈ8Aö‘CÓ[µ³H)EPܺzs#ÖNÇ Š×¡ìbËçPñ¥J‡@iî^Bï0Ê®Ÿ2²ã ,Ÿú,F_(b-žý–-v÷*å”®ˆ |kt:_{ »§‡Ð;Êê¨7ËrÝã õ&ÑÉøùN*›­ÁáâÆq¢¡pÕî-üRçgq1z¦{ýK[ë®)£Tˆ1q‚Òµ¸ËoÃͽ¥á¼U¬ø"Ë/ÿ&Õ³xË?ÕR Ï&[l‡ÐšååJÇÍ*Ú÷ñòy¬XŒ xÍHË);(Vá|«â‹¡wd³Cc… {JWGJä?ùISv¯F…´w³¥(Y ÜEùƒ`MdËl¦) îV:á¢#z¨ÖëfÁ\ÀFû}ëÚªÛIin.ÒÝq///Š[C©gá½”ÎÞ‹¯ï¬;Îò0:AþÕO‘åÓ¨m83Ñù\Bï2@EšN¢-n.WŽ Š×T"RÊ 1ºe5TÝö–—1á%Ôœ¬¢B¼Ü[Q–…‚†Cþ šdÙ6Óœ(åF Ìð®*nûù|E½\‡Clr_DÏ©+YãÐŒ’LfHש‘ɦÓd’IZWþáb PИZå*À胫p° Bç8fJ;V|o妖ڬ+ÇÆV.ˆ;61Я!* ô.Ø$Ré..‚Ö¨‘ £‘FSœÅEàµâ V|7÷ŽÈ¥ÈÏ6Ž¿»++¨xíEY[‘0°0fw*W[¶!šAµÃ_`UÏIè.Öć“Œ§HOM0–I1žºäjö)›åD&M& ©Éi‘=„}J±Xû¹U)D»óÐÛ[s¿­zãÁ/¾n‹ éb}[¯l6EÕ íÆèð——aAáµ×°b±¨~Fm\^-Œ>Là=[w(_Ô%õFL½`¼ ðó7|†ù'žàÐÍ7cÅj§ƒ|+'ô/º®ZÅ(àá.ê9¹‹‹•÷èÞ°¹íÞŒHt뿵©I¦'§x`*C:»±E1Ijò~&e,° ì[J%uÅTÙ¦T¤çz¯¶ýºÞòr¥ˆ3šÇ²{銶bÚ=‚Õ§8?Ï%k6•ææ°{zð ÇØ\ ½ÃX±(UUm† Dé!£/§^Eˆ²\Ü¥Ûˆ>ƒ²,Ÿ{ŽC7ÝTÝ\­ ‡Xÿ±¦$'ª^OùèàÁ.¶m»ËËÑ´hczG±›3Ñsê>6¹áÉÔ$Ó3Íf¨DGGI%%.#û×µÊ5U~ì­Œt$åäårug£mŽ’ìÊvð+é\ßéz~±Hbx8ràÔú{ª,‡ÀI’ŒêAª94A± ¿kPëbÅVð oÀ„}Ä s'OÖth‚R , í_–«L¬HþÀôhtÔuíûhÏ#Ö×µÃW©Ç=§î¤æ7)™L!>Œ kq+J_T{rU&îÈÀ´Òü<ʲÝcm?÷n¢¬r§S"±®cÉ]Zª^ûk ‚/ç¢Ý£0`j¶nWZ¶½c‹w•Á/ÜBbøa”R,½ð®¿~ÓnA©TžAs°~«Þ¥” .‰œÏÛq‡fmËväÐTˆCÓ}H—“ MEh¬ªK@ÔÝKèøU¶nÒ¹sX‰A骶Ÿ{7Q–‡ö‚‰R•Îwq£5F÷¢ƒKPÖÆMÔ!¥l»f§SÔ²]ަXõ£f–Ç]¼ˆôªÖªŠ¯%(•ʲGÙò’¯j£Õà—’Ø=g7ΠëjŒQîALRZZ"qè…3gPñ8~þ2Œ±ªâ7­SZ|²êý.ž;‡1‡Óä(ÿgåz<„•Hpö‘GèÝ XYZ\Œ"4ΔålC" $ôp‹Eâmü®4Ca~cY„¡V'ªŸ4 »ü‹¶ßÖÇ®qh6ê7‰X¥ ì,a¢õƪ¢ãTF)ð [ŸSUɃÐ=M·½èPhïVO g~žÁÑѨE}x˜ tÔŒ„ؘð0†€Ðó**ä«D59oØ4·V,‡»ðþÈ¡‰ÇñVV(ÍÍÑwäHeoyËêÅ„Ã(»9í§êL8€Þ…»´„‹¡½êÁB÷")'Aš"´UÛ¡‹ Ø^‡ÆÍå¢ñýîåM/Î]…U"p®Š$ñr¹JApXºzóŒ”UTMMVjÝ( J  è Ù|{µ AÇ ŠoˆÌJ$˜üñu»…†#Uæâ´Ž1#»2\Ï_^.§óªµÃ¯§»ã3û‹ð×A„N94˜zOµÊ&pâm½®37‡GzÕî)4w ËvãØñ8îÒRyžÁè~t0\³ 7ê:Æl’ð …rWXkµ.ÊvqïÀîéÁ™Ÿ_×}ÕŸÞ¤;Õ*«òá Tê Šf)Ë",] ª~ºKšîBAšÂ÷}´¨ûį”!tÛz]çüù艺tý–¶÷<ÊÇÃӃњÂ+¯T ‚ë`[.¡w›t .H^ÖÒTee¯¯Cû—”ÿ¶Yxê©è\¾Ctx³Íj…Âp þGh‚B¡ý JW7ü>‰CÓ]ˆC#BSø¾ûêk©l[m„öý(-¡FêF+º¥ÑþaP8s;‘@{—cê¥ØTºe ã-,¬Û hˆº‰ª´%7²Å[~;µpNŸÆ/¢4J•Ó\Û,äU>&8²ã)§UGÏèÚ?Ô0z%Mw! MÚôׯÉP~$ЦÎoyyÍ@½‹yy‰4tFŽƒm¯m"]¤ËÖ¥…`UØòÒ-ÕºX±EÜÅw_°Ì¶YüÑÊŽ¥"ô¶Þ²}á¤>&¼tÇõœ‚bc Ú;ÖÔ½‘ázÝ…84‚ 4…ë*ª7k_@)­/A·i`š·²ZºWpqÿ\™²DUš J×41sÇsd³R÷Ò‘ÊöPŒÂ/Ü@l`€ÜóÏGíóÆ Ý#Ûvh”åcƒ;>XÏ]ZŠdïXSæ³ }1r1ÿB‚ÐFJ%…ið̪¬·m`š»°–…_|ýÅY?SFÙ{%‰‘úÆ„ƒåtQ£H—Aû—ENßšh‡›Ë9R?eUמîù».¼`Yä^xöbtoëi¬çW:Aû>Fï\Ä[\ÄŠÇ Š×BéKqhº qhAh Çi¡‰jhÛVCSšŸÇJ$ÊíˉÂv”UB»Ç+‡^ý‚à –Gè$#Ù„ra° CÂR í'«ŽõoÊ»@è\‰ö$÷ã£ÚÔ² 0ºˆíè,wy+#,]ƒ²;È’rê.Ä¡¡)§öô™õüb{~ZÜÅE—ƒQÍ-ðÝŠ 0a_y‘§é™;Êr½c˜5­Û~>¿¦e{5*JãæÞQùs`tìcÑgÑ:jÝÞ!‡Æ„aÅRƒèà@Ãs…84݆84‚ 4E©¤j ¯Gü6L\÷ 0†Ð;Nsîv º¬é¯…&œ‘¨uû0(«2QyÕ± ý˶UëbÅÏã.þý Çb˜ðí[64ZïX„æÂlžËhÖU¹ˆ]è‹’®‘>©AØ]J¥ò@´F(ðV¶ï€øå:(]Óž4ÇžÇ"ôc÷ž&pš)ŽPV€â(nYu;ÈçÑA/èĶ3Úß Ðøù[‰>@è\ÞTíIs(L0°cš 2›çršqÊ$BÓ}tC#ZN‚°»8ŽX ]…Â/lÿ)Þ[^ÆCP¼e_¼õ3 ÝQLßó˜°eçRÆpn%à²æ%ê ìîùw_ph¼ËQª]I&Ü1‡Æ/·l¥këèc ÝŒ¤œAh ×µ0ª &e¶AÏ©47‡ëG{G·W Ò%(»DXº"j)n!"eŒ úH%¢å..GÚ¢{¥ì"¡{,*R´w¤Ÿ…Á„íkño„·¸X–<¸«‰‚àU$íÔ=ˆC#BSx^Fé&’NŠ ˜h¸W#Jçσ¹jÛ-ÂÝBTà{¼\ܼC¨”OèGÙ6~¡€—ËaôQÚVw¤ ^.… ‡"'©]ÅÙ*ÀèË6éPu 7—CY#è`¬æ?ŠCÓ=ˆC#BS¸noS‘e„Î𶮥ƒ€`e\ÑÒâÞÕ¨£ã…¡–ÂvµÃVE*oi h´mµ.V|wñhÿ`[;Í”åcô!Â’?ˆ½dËõXâÐt]SC#Âîây½ÍÕeX!¡?‚ —*So›!ôPgš?H… ã`†¢{h Ú?‚›o›]*¶‚»tÇö5œÖžSùèðÀŽè9ùÅ"J)üÂu-¿étêÄ¡¡!‘ÒöØMDhT€Ñ#Ñ|‘:Í¿x)~áIb}Oa%ć†Öm×ÁF÷¶ÔíÓí(ÛaKQe€Ë(Í¿Œ‡£°B[ÓCÆØíU;W!†^ÂÒö»±±Ú²”®nº~‰ÐtâЂÐHi{ÕDÊI)ŽÔmÇ?iXɾ+v#&x†¾£_Ö§´{ùvÍî:¬ø<Ä·p Q`Žàž?Ilà*:± ÇúNµýœJiüÒö Èá è²>–²›Oç84ÝD‡š,é‰ ÒÙòŸ©If&SÑÿg¦›Ê”_žaõeAö.A u?¨&ÒÊ6a©öRðêw¯ÂJ¸Xv‰ tË?ùzü=#ß­ìºW´mÌþ~Àèãø…öÀetÕde=„ö<¬DmÇÆËåHŒŒlù^.‡ G·4 QRNÝCGºœ²éHN233ÃÌÌ4ã³SD>L†©©YƧg˜™gvjŠL' ¡­D𾆵…5‡ëÍ=²ŒöG±ì("£b+X‰9œsaåÔo–E/v…í¶b¹Î(^÷:”é¦È–˜úÑ<Œáå¯|…ìƒnù*îÒ&l½cN¦wqh’ãÓ"2$I¥’Ìf³Í2›L‘JÉ©ä,Ùl½3 ‚°ˆê6[ ¾WuhŒáµW ªŒä·âç1º‡|ös”æÆJWí“ ÁÛGYÚ=J8Ç»¨3Ì‚êìKÏ?²m¼•^þÊW¶toyí½¾)}¬HÊ©{Øš éô(ã3IȤɎÞF€$ÉÑ,'f¡üÂ:š•6Èç÷OÁ  ìçÏ;bŒiúÞYÒøþúfçž%ôîÀî]ÄT;‘*¡b%ÜÜ[Su'aÊ%ôŽ¢C"ñEåtŽ3&$ .Á-æ±6…¯2wò$±þþÈYs]^ø³?ãª}¬…kü|žÀ¹eZ¾/Ð]p/«±ßÖÇ;4¦ÆÒ$§§iµTf£vÓFDËIv×µ0ÍISF(‹`C„&t]滫‰_+¾Ð²û¢ƒCQËv¢…¶ï]DY>:8L诺=êT䀨è›gÅã˜0äÅtš«î½+ÖøË s Æô¡Të |wº2û“ÎM Φ™(;3㫘Ñ$ÉÙ,Q–)Kv6Ir´c‚Ð&<Ïnñ‡Ý&(­o×™?ùÂÒí¨Øb;MÖ:W]$¡|Lp°fÊéüOëí]ˆmâå/}‰ ÁP>oi‰¥gŸÅ„ÇÙªk¢¶|¤°Ót&B“M31‘e|fCd&™d4›&“'I†Lvô‚³#žÅq,Œj¾wF© 8Dµ2þÊ ‹Ï\²eièÆ"t’]Õà„òÑáAÂâæâïâ™3ŽC|p°ê¡ñáaNùËŒ¾ï}$ʃœsç(ÌÎ’?u íûcPê¶óü®}"ÀÑÕtġɤÓd©±±ÊkÉñi¦ÇSLNž`lbŒ4QÛ¶tm ÂÞ§TƒÕüZi…„Î `áä+ÿ»¯µ Bó(å8×¶Ee{§P–á%U#-‹O>‰]§• >4ÄìƒrôŽ;È¿ü2ùÓ§QVôþíþ~b==_½nËRÐJawiÍ~¢#Mjr†™Ú™©¹Q„½ˆçÅhå WYÚr¸ ,¿x#*& BG±BçJT –»Ç/¬ïzsæçqs¹šÑ™µÄ9ó­oEÓ¦‡«‹¢†Îö:æB¶6ïPØYºÇ•a×p«•’à¨6¢,0ò$~þãXñê…ŸB{P–ƒö޵UoiGP† °Þ]X|úé¦ ~WI8uBUA0&Ñ ¥ 汚8ö:âЂÐÇíAYÍGXTYÏ)ŸÍRxõ  ldDY§Ñ¨ØRsÓœ÷JAP¼àÐx¹¥¹9ì ÅÀ[E{GÙNY¯ ×ëÄ¡¡!Ž××”ŽSbL¼kVbIDAT =IP¸Ë^îœqB…XßóQ]JWa:=•¿–~ô#”Ýž\ŒP<óËÛ`N§n@Aây½­ëàhoé= íTi.2lL0€ C‚R‰üéÓÄ6¨´‡ÎÕQÚ¨Eò§ «Mc´ê¦ö±ý‰84‚ 4Ä÷[Ñqа1´ÿ³"_ ÔG…})¡ç‘{î¹J—Ò*¡s-…W>Cáôo´tÚÂ+¿*ØríÌF$í´÷‡F„†øAX­- & tvY×°Ó(å£ÃÃÅ"¹çŸ'60PÙf ¯ü“Hç ‹•—fí8 E»ÇÛæLKapw°ZNíA¤awÃcQ-þ¤«X®û:n„Gù˜ðR–_øjCZ'Ÿý ¬ØR´›òÀYþñ4CWÿvM%ö ÿ&ü\û'R‹C³÷é‡f£¶“88‚°3A€6ý˜»gV"A¨‹òÑþrÏ?OïáÕ—‹g~%¸¶ÈY…X‰×Xyùw¼âÿÀНÔ¨½#Ï~+>ß^‘”S7 )'Aêâû>Z÷·Öå$M¢,ެkÓvÏ¿Ÿ°tMÍ”‘Ÿ#ú7 +×½ž?ýÛmwfV‘N§½84‚ ÔÅq¢çSéñ:ƒÆŠõˆ¢3AáfÜ¥w£b¹ºGYñy ¯üAá Ù_oxÌv—~oÓ5)'Av×µ0­Í „јp£û)¾ö©¦£,Vü<¥³ŸÂî}DuxÞ‘V DÓiÏ" uq]”üˆ DL8Dñ•Ï´,‘¡bK‘†U¬³ÎŒÔÑì}$å$B]$B#tcQzíÁrhÝm0wfV‘”ÓÞFAêâºqg„¢4ÆP³{/ ³hö>’r¡.%/&ÝBGÙØ~½—143ÚOØ $B#B]JŽB~*!"M§=‹üJ ‚P—¢cƒ’Ÿ A) ÞËHÊI„º8NªU¥maßqXç8ªkO‡~Ñ>JAõì EíGêhö6]ãÐÔ’:(DÉW:I±t0RD–ùB š<¿ŸÿClS}¹rÊ>Âç~q‡-k? uäà¿%|û‹Á?jM |§Øoëc×84¢å$»ƒçõÈuø%ç„Xœ³†kîs¹^à†p–Ù£;hYcb„ØMï¯Ë54Wé³ü÷¥/*‹Ÿöãoâ·vÊD¡I$1.B]¿$å$Ôàšð,oõÌy5Xw?ŸòÙ!«šç§üŸðQïá¦÷W€¥4ÿºøŸ™S#,¨aîs¿ÝÛ~Íù2qIr584‚ Ô%úD˜R¨É/;6U³ †x‡ÿ<æ´V5Gœß*ý9Ÿp¾Ë¼G›>îw ÿ©âÀùØô·ϵնO¸ñ~ïQÞå?ÙÖó^̈C#B]‚°,qh„Íܼĵák¬¨¾¦ö×(îòŸê°UÍs·÷C|lÎYÃü¼óM~Öý^Ãc>[ú2#¦H‰Dåµ%k ­Qš+ô9>è?‹öQ>á>Ô¶ó^ìˆC#BM´ÖhÝ/¡*¿ê|œêozÿóÖ÷º™ZÔŸtbÎ:À¼5ÌG¼‡ùçÁšûÈû!o÷_`Q ¬{½D‚#&ÇMáé¶Ø5Yúsrj›|ÞÞæèÏÅŠ84‚ Ô$ CŒé“¶mawúOsPçqT¢ñÎeÃÕúì–m:¢—øï{Ì« Ýb%\j–¹%|yËçÝ/ˆC#BMGaö¨’“Ú£ví>âý–1„[XBÕ o~ÂA“ï€eÍñ¶à†ŒƒWcrINõs\Ÿç÷ó_àßæÿpsKz —8÷NlÙ®‰Ò_²R%…—oSôçbGAjâº6¨½ç8ÜfùÇÎ×xSð±.kkýÇÎ×xÿ8—êåÝ6eKÄù´ó·ÌY#[>‡Añ÷w±{ç“ηÖþäU/Æá‹Ë¿‡Fá•S@«TûWq^ òfÿ'©31¹ïóå˜Y¤À掱ú¸ZŸåêðµ–Ï»ŸèšÁz‚ ì绸j{KÇ9k˜»ßçK‰T›¬jžÃ,—ëóœ±.i¸oQõà©8A•gÿZªÛ²øˆ÷¾Ðûþ¦m1~Áý¯ªƒ5÷qˆó3þ ~Ͼ·éóî7Ä¡¡&%?VýQt—ø€÷(?ï|³Ò™²º¢¼>|…[ƒ—P^´òÄ­yw‚O¸ß¡‡sÔ^´|b•.šF$ø€w’z?ÄFó½ø |7~Å®^׆¼‘ Sg{=FõwÏpV5gc#–Ô7‡§9¬sœ«Qs‡ÿ#~ÍùkΩ‘†ÓˆÁýæğõÜVsŸŸñ2ømrÈ¢N'UµpNðqÿ3=·×-œî1>Ÿ)ý×uQ»zÌ«aÞå?ÉŸö¼“å&R«Ã"N)‚á¸1ªU ¼)x‰{°¬úøwù?àŸþjÇl¸¿ô_¸5x¹¡VP5\â•§qÍÁ³Üå?Ͳêãzïâ[ñ›Ûmî&Žëîu¿¿í4ÍZ¼5Î~*ø ïðŸÃU ŒSó¸E5À“±+ù^üž´¯ÄQõ#p†¿¼ÌÛƒç¹ËŠ¥ å¶‹FñÓþ“üiÏ›¶ÝíýOºq®‰ÈÀ¼âï ›"_è}Ϧí‡uŽ”ÿ\[?‡zø&Æ{ýÇøjüÍë^WnOñÿî žf¾Åâê@YÜíýÚó®šûŒ˜ÿÈùoPÜ{5pDAjâ:‰M”qBþ—bšÙòSå qø×…?æ·>Ùöëÿo…ÿ+õ¹¶,¤!çÔpÅ?ûLé«|Ø{„ú>ÚÑZ›ÿ±øç,u°PÙé$­¾¯Sl×¢ˆZ–o÷ŸÅBó¤}%ßJܱ++ã q¸%8Å»‚§x»ÿ>1´RÌ«!t›£ZsÖ÷zßßäÐ|Âýva¡Žzw5Ϋ!îòŸbØ™îûèºm÷x·=*W«0¢Âçû܇øjüÍ ‡›ÂÓÜ<Ã[ýçðU ƒbA µÜú>§p÷}¾Ôs~•ð{sŸ÷mŠôð­ÃõSpâЂP×Ý,Lù?þŒå5ÅŽyÕËq½ÀÿPüKþMÿÇÚvíUøcŽéŦBë[á¬u€ƒ:Ïïç¿À_%ÞÊõÞÕð˜Q½À›‚9mæñØU ÷ÿ˜û0‡ôrÍ”ÊNcˆÒ««ð5ú,7—¢qýYë0yÕÃaP”T‚¬uiGíÑXXFó¶àŽ]Àgœ¯r›ÿì–†öATOõ¦à%þEáOù÷Ñ`¼Ùí žCb¡QüÛâàP¸ ̶áž*Æ{ý“üuü­•×® _å³Î_1dJœQû³hXAjâz½°Æ¡ù w’×éW6¥rªŸ[ÂSüªó ÐûÞm_÷Wþ=Z)òªwÛçªG^õ’W½ÜíŸäCþù7}燺eÞ¾Â[üsWð#¦ N~¿Ž×{wÍÚŽKõ2ŸtÚ±ÇVXR•è×°)pÀäÛ¾è7"¯úø˜ûŽ]Ïoÿ‚›Â,‹[H/®eI p¥>Ç…ÿÄýŸæCÞ#ªýé—F € jˆAã´=xNpŸûmþ:þVb„ü’óunž!§¢(ä>EAjø½§cz‘O;S³CdI ðNÿi–T?éžÛ·t½ÿïÊç9¯6 2ë$çÔ06šß,~‰'bWñ¥žïñçÎà™Ê\ÁóÖ`ôä[~$¿%8Å­|žÿØ÷^þÛ†: €ß(ý%+vÈÚIa—l]V}¼>|•Ïç¿ÀSlÛ¡Õǰ)òóÿ‡õ2§ÛmjÔé´Jžöß×…Âð)÷AÞï?J‰DÛŠµ»qhA¨I°&Bó¿ÿ„E«þ“óy5È=ÞÃ,©¾ž¸µ¥k4yþpåßóªu°n§N§±xͺ„×…¯ò;…?ÆSqæÔt•÷½×ój_p¾É‡ÝG˜ê»‡íËxŸÿW„ç¶5Mw?1g s©YÙRáw=Šô0dJ,´ù¼«Ôëtê4sêðNv<-ØMˆô 5 ƒ^”¥ùçAú‡ÛDÔdA ñ)çoy{ðBÓ×¹BÏóVþof­C»â̬eI ðŠuˆsj¸)[æÔ ð»…ÿÌ?r¾Æ°)ñ«¥¯‹3Ó>±¶;3«¬¨¾]‹>ugf;¡ÉL16• 59ÃäÎO¾¡ItØÇ›yš÷x7=#`ÞæÓ¥op·ýø)ž²¯¬YkrS˜å-~qOך4¢¤”T‚wúÏp·w’³M¶ ÝO½Â`agÙa‡&ÃÔÔ,ãÓ3Œ“fbbŠÌÌ$âÓÂÞÄcüs÷O*-Ú­à©8׆¯ñëÅÿ‚…æY{”¿MÜÂãöU•i¿ïžãsů´ä,íeÔPSÃÿ„‹qhö;ëÐd³Ì&SŒ'R¤’²YHmcr·÷Úª¦Æ¶P¡®¹]ÛVÝí +¬ž5–BéÚyS³°‚Úçã6¶_[%¸Þùµeaé:v7¸v£÷•›Õ¸v£s7Ú^Çvm)¬:÷4ŒYØõη°üÚÛëÝÓÆŸ§Ôþ¼ÝÓºŸg£ïa£ï’ma×8^«¨-¶¦]uþ„¡Íï¹ÿ+±æôhªq~Í|”ãú<Ÿ)}ˆDL¼‘ûœïHjFèZ jÔYµãüõªsm_²e°^ç˜Í’½ÈI’Írb¨âÐ4’6Ø(…°%~ë|]Ô€5<õ¶jȼÍ\ªN‘[C»ë_»ÞÖFV«{4¾¥õ>Ï? ŠþÚ¾¢ÁFßµ:ÛUg&:wíƒm;ä‘dèê£õϱ† îZxŽo^ñ–¶Ÿ[v’s±«v9j½_‹²CÔ¡íÂÚa#{¶Ë©Y‡åòû®ë°%‚ ´K/åÜ•W"%B·³—¿Ãmyðï"vÖ¡M’œÍ’%E’,ÙÙ$ÉÑí²ÞöùÏ~[èvŽ—kïì±rm¹v7+×–kïäµ÷;Û¶L2šÍÉÙ ™ì(ÉmÔÏ‚ ‚ ÀާœRLNž`lbŒ4QÛ¶t8 ‚ ‚°]ÔÒÒÒÎ8:Š„)[GîÙÖûÖ:rÏZGî™Ð 2)XA„®GAAºqhAAèz¤†FA„®G"4‚ ‚ t=âЂ ‚ÐõˆC#‚ B×# ‚ ]84‚°U²¦&Æ+ÿ71Ézt ¦ÆÆ›Ê¬y-KzbŒ±±)25«Çvoõri&VïÿØélù=M¤Ùµb“M»eˆ ì/Ä¡„-‘%ýÀRLÎÌ03=I*›aêí-¤ÙLš©ôޏmcOØœšdffšñ½  —gzf†IÑu„e‡µœába–l–Hp 96Û"›æ©4ÙÔdìÛ!6Ùœd|z†ñ]5J„ýˆ84‚°²i˜JrÿdŠ Á,é‰ ÒÙ“3“‘kfб© ©É&SYÒS.ç§’©I¦'GI¯Fw2SŒ•ÍfH?&]Ýwœû'Ç£keÓLL¤É¦Æ'S>_’Ôä8¤WÓ_IR“ÓÛˆd˜›"“L‘%S¹Ætô>6ÙW*?>ž„lf}ñqê¶òö é¯ñTm1ªQ÷Í–Ï™d|<dÉζp|³66ûžÚ»z¯GI&l–ÈÜ(%9.[°¯Æñ ?KA:ޤœa$S“LÏD€t:C6›&g2•"•L“Íœ “M2Ë'‡ñqR™)2Ù(Ò‘I¦¿rSÝI¶ì1dÓŒ¥7l›…håÝ=f³Ù¶ÛÐð=ï…¢ß5$k}–{ÌNA؈C#Û&Ij|’Q&˜¨ôèF‘ŒôÔ,'Ò³dI–Ÿør:%›ÍDŽP&C:a|ƒG“LŽQ*dºÚ Ù®vàÙ,YR-û £É(­ÖN¾ç=GÏRÂ4‚°ãHÊI¶Bf*š32µZ7“-̦¸mu-KÝÕod²ëÒMÙôccdH1>9Éäè…tk‡lf5ÝÒî/e[³éJQk%µS¾v…Ê>YÒéÌ…c7Ú¼m“:ýžËçÛòœšõÇ×ü,AØq$B#[!5Éôø¤§˜+¿–L1>½¶06Zô3™5é& 9~?ãÙHOŒ‘¦ÜÅ3Õ§Ü–J’Yíšždrz’©¦˜šHW®19]§ø¶å·1ÍäÔLMMpámTéÔI¦Hžx€±©¨ èÂûLm°y» Û©Ž¿çvRû³a§QKKKf·„‹•ÌÔSÊíÚ»mÍVXmÛ^mSÞcTÚ®'™Ùc78ú쓌Oï‘‚p‘#)'Aè«mÛkÒP‚ BG‡F:Afª\÷‘$5¹7Ó%™©½£›TÖr’y4‚°³üÿ°ÚÀ]º¯IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/curvebenchmark1.png0000666000000000000000000011736300000000000017131 0ustar00‰PNG  IHDRèô!Jz pHYsÄÄ•+ IDATxœìÝy|\Wy?þ眻Ì"É#¯ònÙ!ްMv‡E¡_ª@Xpøv±q­ ”Ò_Ý‚ë7à–¦”-ÅPŒ ¤Ø@L!`(D!‰œÍñ"DZ#ɶöeF£Yï=ç|ÿìH£;w®µÍéóþ#/{æH:÷Žsõ™gžs.‹F£Tú:::Š=…)RUUUì)@èÅžÀ„Y½zu±§0é^zé¥bOŠc(¸ÏœŠu©Ã+ùà9€éíÕŠ{I_ñgNœ-é—É»ŽŽŽr¤ùà Œ†sânæ\f,^ì @aî%Á ÌØà~à®uõÇ/ý™ ºë@ÞG<;^¿îÕïìù)WžƒûÁ-•—l9èõ«w­_¿«Ñût.wü˜¯_7<‘¸ë.Ú¯”RÇî9q×]¹ kw;¶cíOùrÜòêi¼ôÊ]zÙ¼<â™ËK6%¯&MÄñâ àœÌ̳¥ÄSpoܵ¾r í‰ÙC/ûW”Ÿ¬ÝqL»çb¶>pàÀƉˆÖ¾oãÚ'Ž;rj¶>¼­fBá²LÈñâ àœÌÀ³%ÇKpo´eWcã®õ••ëw5¿~Wcáñ9çÂÚ5kŽ?áþÈñk¿¯”RjÿÆwÝu€ܵîž5Žåùã÷ßxqd}ýqZ»ãû÷¬]{Ï1¥Ž½ïïú"µÍÈï?n5ÛG_MܰaQ͆ 5ž¹¨q×úõ[¶¬YQtzÝ‹÷jNÄñâ àœÌij%ÇCpo~ÃÁ-Cß>º§¦ÑG¿®Ön|ß`­~ãÆtâÄOœX{ÏŽKåù^Mî§5ks;gÖ®YCîbw Ú¸ÿÆ©™yM͈`áñ‘ÆÆ‹/ƃ[¶t|݇FúìÕÛñâ àœà,€_yëqÛk¶m»Tj:xð ]|Äyü¥fÐõ»ùŒ¯©©¡ƒ[*·¼TàŸÇOœX»vû#cã~¥”Úx`lë_§R͆ ƒ¯Í† ¨±ña§×}h¤Ï^͉‚30Ή8K0Ñ<÷šššÆƒÇ_ê©Ùv8zIÁß@öD£Ñ膃c[õu6nÜ8T'?þƒÇ׬Yëðˆ“¬Ýø¾;׬9~Oý¥ÁC½ñù 6Þ¯¿«þ8ÑÆýêØ=#šè'Sccî'^™Söj3¶ãÅÀ9ÁY¿òRqß°míZ?b¥×ÁšššÆ]»dlêót2T\u|ƒãwmÙÕH´aOôð¶ÜO Çëxý:¶nhè]hãþýtcŒ­»gÍ`ßÊèG†}ñ=C«Jï¢ýÇv¬¥ûÝs"ßàkwìØxà.ÆÖý ‚†¾Íº¿?™{Ðlذa¨²w±ãÉË#NS‡¢À¤«®ÝþéÍÕDÔ´wß«]4Ã.Óu[wEÒÐ…~gẠ%Á °†[÷^¼‚75ìÝz±¯²agÝ«OPSÃÞKŸÐ6ìܺ³¡éâ3ÔÔ°së¨fL˜`Õolpoin"¢ÜË455ìÝ™/‘㺠%ÁÀƒêÍÛw:tè⦆Gˆ¨iß¾"ªÝ¾ûСC‡íÞ\}©ÌÓÔÜ2øe»/=C û<¶]ÀXU¯Xþê_vFï¡ëôîíƒWãû¨zÓîÁk3Õn?tèÐöZ\·¡ Ç °Ú¡M ªko­¥†‹˜–ÁÊLÃέuÃÆ6<Ú@µµ+–5QÓÞ­[jkkoýôîCÕÕS;g€™n(‹×nß>X†¯®Ý´©vïΆ¡ õÈÁÕ¸nC @Å`Œ†~#8«Ý¾{sm5 îq°wçÖ­uu^÷9€1~inyµñå¢åƒaüb'Íp¸nC @Å`|ª7ïvܼ zÓöÝ›¨©©¡å±GmhÀ>S`(¬/_QMDÕÕ”ÓÏ>üé‘Ï®ÛPPq£¡%PM{÷(hº´ ½ºÍ>ª®­Ý´ÝûÝ@`¬šö ®'­Þ¼©–.õ»7ìZŽÚÔ0¸4‰joÖ'3T}ÇuJ*î0s5쬫ùHõæÝ»ßìùë«/6KkrúmQ»isuÃÞ¦†½[ëö¾:¾öÍÕã3 7úJNÕ›?=T$¯Ý¾½¶.ç2=ø(Ñð®öº½Õ›w×mð?TÜÆ®vûîí›/­^ª®}µk¦zÓî¡fÉÑÏÀ¤¨®®Ý¼}ÄŶvûîíÃ.ÆÕµ›·ï¾tæÚM—žZ¾×m(ìÔ©S«W¯.ö4ÀÁK/½TUUE¨¸”w€€àPü¸«L}}ýŽ;b±X±'PJ"‘H±§€ 8ÀXx¼€£âPÜJ‚;@ @p(î%Á  ¸”w€€àPÜJ‚;@ @p(î%Á  ¸”w€€àPÜJ‚;@ Ћ=!õõõÅžŒ.àSÃ/Á}ÇŽ—þŒß%p€©V€€àPÜJ‚;@ @p(î%Á ”tpï×õ_{S¡„ƒ»a4”•ýq±gc©¬,öJL w"Uì ÀÅ¢ÑbO Ä”tpÅžÀ)éà0S”tp—ÅžÀ)éàŽV˜)J8¸3¦°>f?÷‚0Áf?÷‚0èq€™¢„ƒ»R¨¸ÀLáßàÎXàΘDp€B/ö†Ô××z¬`« *îÅçt€‰ç—à¾cÇŽK¾ø;À.ôEmîEçt€‰çßV™‚÷‹½4(ºÀôWÂÁÈ"⸠Ìþ î§^ î;jJžƒ»‡V‹ˆ1†6w˜þüÜ ”ÒûX§E­20ø9¸H佬Ã&àPŠ*+#Åž@‰ñop÷p&[¡Ç E£±bO Äø7¸îq'[x0 ”vp—DXœ 3Ÿƒ{˜‹w´ÊÀôççà^ âΙÄÐ*3ƒ{áÅ©d Rî0ø7¸K²Ü Uf?÷¬û€ÁàŽÅ©0ø8¸3w´ÊÀôçãà^¨U†3a¡UfÿwA÷Œl{p ÀtçßàîqqjÁaÓ€ƒ;+¼8Õ&¬@a`Ћ=!õõõ9¨BÍëœ AL2Ë¿o>f€Ñp˜ ~ î;vì¸ôçÁß+ †V€â}€Éàßjuá]eHض{˜J9¸‹¬-”@p(A•‘H±§PbüÜU¡0i$„R[áÀ‡¢±X±§Pb|Ü /N•B¾Á*À4àçà^¨âΔ­Ðã3‚ƒ{Áw”… óÓ€ƒ{ÁD®¡Uf ?÷=0:S¶,ÜQ0 ø7¸“rOä’ˆ¤DÅfÿw¥Ü+î–­˜B;Ì ~în¥tÆ,‹˜”ØUfÿw*\q'TÜ`†ðopw¯¸Y ,N€Á¿ÁH¸<ǘm)IJ¢U¦?÷‚w5˜íQq€éÏ¿ÁÝK«Œ’ w˜ üÜÉuÕ)cv–ˆDÁ|0”jp'²,†à3…^ì ©¯¯Ïy„¹.N%²²¤HðBù&×è 8L¿÷;v\úóÅß*îY"‘)¸Ý;L.§ xa‘ÊH,›œLO~n•)°d–) w€R„Ôp¹J5¸YYFd3Rî0ýù7¸»÷¸ JÛŠ¤w˜J6¸³´L ¦Ü`ðopW®ÁÝf)!‰lV¨£`:ðopg$]ž”’IÁÑã3Ÿƒ»[)]²Œ$mÎ*î0ýù7¸“kÅ]RF R6G« Ìþ îŒh•‘‚¤@p€ÁÇÁ”˳’e¤`ÒÒÜ`&ðqpw­¸KÊH¡¤ÐÜ;j¦‡’ î,£l’¶F w˜þ|Ü][eˆ,i“´u÷|0=ø7¸óBw²•²5÷íÞ¦w׊»¢,Y$„Žw˜ |Ü™k«ŒÊ*›¤­»æ¦}R¿{Ãκ ƒ¬Ý~h{íå|-s îJe”Å„Š;À¤Ï&ä÷¦æ–êÍ»woªËk*îi)˜%4ÆTU¬pÙÆu÷"©ŒÅ¢“õݦ£Él•iz¬¡iùŠê1~µ{«ŒRY•åÒ68*în|p/Ú.×dVÜ[ššª[öÕÕí$çZëëë]¾Ú=¸3ÊJ›ËÁŠ;L¬ñ]À`2Lfp¯Ý~hySSuu5QÓ¾­;js®ü;vìpüºÁß> P–Ìr! /û¸Ïšµ"™ÜoÛ7{œ8ÀL7¾ øÄŠTVÆ¢(ÏLö®2ÕÕÕÿØÒÜtY_Z°â®²š-Œ­ðƒƒÙ¡ಌã>±ÚMfp¶%]n³¤ÆÜžed‹¬&…á­UF(º¬Ÿ0£ï“ar[e¶?ZWWGDT½y÷îËÜKLcÊÎÿ,#Kf5) ÷û4cýD‘uy?`&ß&Ãäîã^»ýС±~­ûgŒ„Ìê¶Ò ܧ‰ˆ±(‘Θ˻È5ž 8LÿÞ9Õ½y‘-3ºm›^‚»R‚;”0w×g2­Kir×Vx"b,Fd UJšƒ»k"çLØ]á­Uw(mþ îòÒœp"eÚ*Pp;HÆbJ™èq€’æßà.¹”É9“"k (xŒE‰h•€’æãàNärWTNRw÷&ÖÞÊZ&z‚0*+#Åž€/ø:¸ýÇ gÒÎleº·ÂcÑ–L0Üx $E£±bOÀüÜíKÿq¢1igJÝ7Ÿ!"Æ¢)RA6¹;ÖL*ÿw÷Š»Æ”È+¼»ÍºSÄe'vzSÉ¿Á½PÅ] +(R¡‚…tÉzRÄCpð‘ÊHe±§PbüÛ@2¸8U婧뤬lˆXÐË ˜Ò¤ITÜü$ÃÒ#€ËSÂwËK,xœÅR¤IÊLä䦖ƒ;#—w‘e™îùžˆ –H“†w(iþ î‚HåOä:SYQ®É€Tä’ï‰ÒŠ”P†b¸”0wEùÓ…$²(È…é~Ÿ&Æb)P¤ãΩPÒü²8µ¾¾>çA$X6Ïü,[‘`!Mh•a,š “',b6Wfô&ƒ_‚ûŽ;.ýyðw€P$óìáȘmËòp…"ž¿U†±h?i¼;Já(&|ÖàpŸX•‘H4†›§ø¸UF*y[e,›Hð WA÷û41‹ñ´"cR& “ ©`ƒ»P$òîáhYŠkpß|†±h¯z†)ô¸@)óop—Šdž´Í˜eJò¦6cn÷.eéiFÌmËHŸówpÏ»‡£eIV¦qCPÞ|ODŒE;XÖÈpì*%ÍÇÁ]ºlie s®»扈±X;Ïš)Îòì<3kÖ"Æ:&b¾0Õ"••ÅžÀÔñqpW$eÚù9–Í‘Ô4Í&,_+î’DžànQÒV¤Œ€Æu×ÍgÈf]"c2¥SÞ>xÅXßDÌ`ùe÷Ѥb$³Äœžb[馦 ÷VÅúÔ€Á$1&H~Þ"⌡â~çãà.Iª´cp·()$1ÍÔIÊ­U†±(iŒ8sÚ2’1›ˆsÞ5Ó˜ ¾n•‘Ê9‘ –¶%cš©ëZe47»ù…óA)[e,¥4,Nð³He¤ØSð?w&¥s",-$idšf»T¤òïÑnRÂl“ÙtPãÒéy‹È@« ÀÔó¾!L,Š;§ù;¸“ÊWq§´”¤3Ó4-¡\v¤K[,+Ìs“&Ë"Ű« À”Æ0—ËÏÁ©|wJ ©t©òn>ÃX4Iyç“«Œ3‡¥©ŒÙ½,a±ó9o˜*•袀™ÄÏÁTžRºd)H—Á ‘–2ïvïŒEãJŸÝËl+È™s«L†HãÝ7k˜:QtÑÀLâãà.òVÜ¥L A!.ƒZJ*¦¤sG c±~ÅÊe›šSp—”N™ØÇ|Ï¿Á]I&¤óíR¦¤`a’A##%©ü÷>¥‚É9ÊhÜ¡UÆf)‹XF Þƒ)ºÛ4¿u¹‡~à}!,€Ÿù7¸KÉD¾Š»HJÁʸë©H(çaŒÅz•àóI{ÜK[D1 ÜRןԴ§/÷À°¦_w%÷yT2%•ivÀÈéÒ*íä¶Œ.$Òœ‚»EIA¼GéîÁÄË»w ÀdóËSëëës‘‚IÊÓ*£ÒÒæåÜ é%I婸‹vr»,º„«¤cp”¶‰u0ª.¼•;#Ê{V€™lô&ƒ_‚ûŽ;.ýyðw€\jÎÁ]©Œ°Y¹ž ™™„d2OpϰöLÖ8Ÿ™ßʺ{ÜK K^Ð,wÅ‚;€ƒÑð‰‰TÆbèuðs«Œ`Jåi•Qiió -42JR¾Íg,Þe§µ–Ô‚¸^¦çéq—¶lVI7OUDÎK``R¹¤öÊöq€ÄÇÁ]rIy‚;e¤ÅÊ”Á¥Lˆ<7XeÝb€ŸíŸo!9ý––65ñ,Zœ*É&–¼Ì#€Éaw˜A|Ü)oÅ=+,­LOší²k$±>ÕÇ2³çÙ*ìØ$ì!ÉÊ”eù9÷É´ñ íüÌeÍ|7X€éÁÇÁ]0ÊSq—2+lbqCR’̳ù c1Þ¥Róæ vl•‘2%©XHñ6÷Éè¤Ì<+eÀçpƒU˜üܹ"áø”R–´µ 7¸”‚åÛÇÝ`Æ;¹xžMåºc«ŒL*ÁôNCg=î“щÌùíÀðopBSy{ܳÒÒÂzÔ0””\åi•1)jµKg“"""™û}dJJn¢ +PŒ1I…Pq€âñopWù+î¤laiA£ÏЙ”Læi…²”ÙY®ªÈÐC6ÑèÆ©RR°…g²2sÛkÌ$ÅI²;‰ƒ»”œXžàN–°µ€Ïè )˜Ryš±´T¤G#ÙEL7B¶"6ª×EÊ”•å‹ûû”é¾#¤Ij€4ÆúÇx00 "Xu 3‰ƒ»ÈÜ™-,Ý4O†~#%w¬¸3+MÍI,b3l9ÔËUFجª]ëVÜõL‚HÅ%!¸L” Ùé%†U§0“ø8¸K-_pgLض®›©´™V’9¶Â3*R}ócUT~¾Ìb4ºUF¨ŒmñÈÀ¢6e»TÜËfŤDp˜(S¹Ó îÓÓƒƒ»­3–»œtc¶M=L2Bð>î"o«ŒÎˆìQ…®Ê…ÔF·Â3í—<Û³peÑÊ3SA¶È½“Æ¥ÈV÷¨þEK³}<ËÎ9þ8)"ÃÓ=U&“Eì2×Y–°yÂùfRþ—ÓäíÒó=-›jfZ÷?xçßத¦9-N•”±ˆŒ œ}n Ì+H8l>#Ò½IΓb«Ž¶«Ùá¨\9UÜI™tõñ«ŽÓ€ye+)›ý9·­lp®fZ f‹â´Ê0Ö—Ìî0µ‚«cY{ÿiöq€R•ÓäíÒó]B[žG‹õr¥Z昼@)=ÀbÙ#ÀsWâLoÓ²m`8ÿwE\#‡w[¥lE¬<>»W…Ë«¤th…VŠY²ºGÊŠÅGô#¹DÚ‘CÅÝ ¦=u…)Ž_³|~¿-xËèŸhhÒΔ]A"Ó.Ö’¼uÀféö…!-÷(r”k©øÉpà[ckò.¡¶wÞ›j`¦ñop'Æ[el»ßV¤Êz+ õòÙÄZe,;#„¶D±úˆv¤J®Bg£ZetF&q“\×±xÒûYËa—tK‘)_Díéh9§*“$É.$²ÔÚ³²\®e·ÓG«ÊµÜ½íJÅ„7yû¡ñ¼%%šj Ÿ1÷†};÷54MøLr1F΋SÅ€­ˆ…¢|ÞBUY©¤ÆF„YakKͶó4ëqM@Í•¶ÎxnäÕ‰ZÀ¶_Ï®=ñš€¢Îrf;ìãnhRf+í龈Q¨Se’¤y{6©Ú­FŠ(o cÝ’™//#×a0SMѼ(\6ŸñC1>†-)`ÜÆRqojØ»sk]]ÝÖ­;÷545Mô”†0FšÓ㶈ےi¡˜Z¸PUV’â‹S•e }IEã ”½QÜ’ó¤­ñÜŠ»e…M]ˆ›éêG¯é§hºB’SpçJØå‹Ê^Ž÷Ïh¹{JŽ_8¼%Þä>Ʋ.d<\%ri×á¼»ƒˆ.¬u3ÖÔ\ÀÇil½"źá¨Êù0CŒ!¸×nß½{ûæÚjjjjØ»sëÖºººÉøÀò´Êd2 !‰ô¸\¸PE"¤´ÑkX·l[/{îQÞy£}cPÍÂÈ©¸ÞÈ©7Üþœ i×ýhÝs,š˜Ë•CAÝ䊬Y æ<KV…t·Þq]ÿ]0ø¹Ë=Rλ¸SoýpÂnËÄôÜ•}Ì-‘§ys§¢qû°’ ë ³f­(ö,¦™)º€“÷^—*û”™ðr¾÷¦?Ãû€É0¦÷êêÚMÛw:tèÐîíµÕ4TÂÙZW·ugÄÍLc¶cÅ=k%mI\Å+îŠ:j·…e²UÏ>ÄOÝ(nœ¥"ÒÖùÈà.(m±òÔCú3jîÀêf™±*89Ôœ¸]FË[ËË\{Ç5í)Óüêe(u³æd¡à®dw¦/ æÌ Jð ù†Åù™$ZU3 (ÁKûLŒ%K0æðŒÝ”\À§Ìð*ûøï[4©Y³Ò{û´hªñC{Àô£íËšö=öhÃÞ‹’Õյ˗·´445ìÛ×T»©úò¿a}}}Î#\9wËJè’q;&«ªT$ÂÏk£w•a̦LÈ®=¬ç yEbçÇÛÞ˜Üm–dŠXyúaýáÏŠ›¯4;’•4*™›Lé²L-£dje˜«~RDNŸ °þK¥‰‚Þ]±îr–v¿¯’R±T_8hÌOd(É/„ò Kó–LL½nm2KIÞšoXIhÕžKÌàB¼¾Øs˜V¦à>N‘HåððZ‰xY®:þ%­cËš••/]:ÑiǽóxZಌ!¸7쬪ËTW×ÖnÚ´©¶zØS¶UçùJ;vì¸ôçÁߦJ ""A#{ݳvŠIF™‹=îlt« ×lÛ6;V¤n7j'OÎùÕ¹þÎGDr›’DdD2]¬«WܹpéÑT`¶©9÷#Ê^^Ö¦ÛËú1Ö¯”s]çŒöx†dDkâZïǾ€eÎ)}6EÊ•ùÆh| Ù7o‰gÒ,e:ÜÞuè ²gÒ½FÅ’P:ÅÒù‡•„ kn&k•vŒ ÷²²w¥Rÿ,åš©™@)›¢ ø8唜ǟÈ=†È±eMÄSGÞOK¤²åyÆTq¯®Ý¼iÓ›k««sŸX¾i{E–Þ™2éÜERŒ%ãjéBUYɤÝ*Ù¶yÒ´o´×ë?þq¤|©´ md—‹eõ3EzYòvûö_²ä^ó¨hŸkj’roÓdK¢ IOÏ;¶VÄÍfñ|Á½ŒÅ›ˆ®æÇÉspg¬½[ÒIf¿‰Ÿq èŸsM‚Ò nS‹óº]"’m©ŽðkÓ<â–:çþòƃD–e½×ãT§˜²›.hÚ\ýÉYÙ?u©ëkÚ)wO¦ä^‘ÊH¾æx!rlÜã—ó +gTy©À»±-NݾÉá¢ODÕÕÎ…I–MÄXîŽY™‚±Þè³íK~ÿ}K4rîš&„0žd±ÅÆO~R¾l†6²â.D\H ”§Þn½}¯ö"¿îç¼~PÝu“IÃêEJ‡g• `y[ÌÍdKK’úôǽ&ç­Í\u ð>ý)—aAÈ/\gv¦ã†-Úó ÓXÏÀùÙ7¥Uz@w6ô=ƒÛ ãAïSb\´¶u ÉÆ[Ä»ô'§fV%nŠ.à^Løm†Æ¿ýùغä'|×y©Ýç«?½ŸL?¬0(þ½“¦e‘µZÔ–i!˜Ù“8rfî3Ï›LªÑ=îÊ2Æ›n:3¥RÁ•ë”ÔrZe²™¸­H ÉÛìÛ~©ÿÒ®)›Ý¼(ÈGÝˉ2D<oàmófSÒ¢$oË7簙꺠„ö¢÷ÃŒj/v§XªY¥´£.ÃÊt;_¶,ÒêZvw¾a-Ñß¾èÚó*ÓÈZ=.ßPÓã,Ù¬ô>Õ)fj±x³^AMîÃ8o¹@Ââ—qÎ'c=œ7w¥Å%g{_Ç9Üø7c[÷ødÂs6sº¹¸x?™è5ðοÁÝ”Y›È¹w*"-¥f;¦UT(®úA4M*ÛìQ æ?ðëŽ;Ô‚JšÚÈPžÎ&lÉ­¯e½Ýzû)5W™sƒ£ÎG–õgÙó¢J\¹*ҜʲLº)ßœgéÖÀ³eåê¬÷ÃŒk'}*s²œÛ'\†•ë2½bñ’gS±°Ry¯qF¦«{Õ-‰g“ñ°$·ša|ÿ{”4˜Ãb}¢LKõ7Ì óc)—aÝÚïZl§§lbŽB¡¿.+ÛXÜ9Lckÿf,cûÀc¥ÂB|žw½ŸÌño4~>ÿøàÿwÍÎHErtp—Y!xØžû Úòå’+5zqª¦I%ÌëÅë îBË î™ô€-)xìóÛ߾ݾýÖ_Qf2"¢;µg힬¤@¤o•¸þÊy§S)ž±Î噲æ2þÀ•³µ$ê”ÏÇJK´úž¾b–Ö•”m2b‰+#Õí‰x„i‰|ãf뢻ÿuój&㜸ü\aî}â\ÅåßÍg›¶öë«O*â¼ÑeؽЭæê}S61G}ÚјßM8ÃØ ~¶Ø³˜àÌ7þf› á1Dú!ïºð~2'¼×h fZŸ=Þ¨”.ÿw‘$AdY¹wDR*#lUÏ?¯­Y#¹rX¨©si‹À=¯aâúëåüùJj9=îI;)$Ó¾ò•·[oÿšvtÁ’¶c#Þ*XV%)é¹&½¦,òJ:©§RÎùŒóÎv"ý™º“Š4í”ÇÃdê\såù£o˜£§sÞ3¼:†EûˆfkUbY(›cÎhÆúSD2»N¾ñTª¶–géúgHþÞ?Fu&ÝëÙ“!¬…>ì>†±›TSgÝ™4‹êO¸ŒTÖ‰äY3A’57Wðæ0sßÒsZaÆÃºñ½bϦ-ï©bxæ[ƒÍøMøý’<†Èbå]¯Ž÷Ó2á«Æ`¦õÙÏ´7*Ó‰ƒ{¦ßвÙÜX))#„F©ÅkÖˆ•+%Y7XÕ5EJ¿å‘>ëŽ;ˆH-X ¤®<Ö´HÚ’tëÖ-þÉS¹")E)6¢5<™ìÍ fôœ¾ùó?OÎ=™03yZÌãüt— ß,¹ãl¡¬9œ©õF›—´o=MÄùÇ1IÞÚ/iÞ|ñ÷W~#[4Ëù;ßAT.ÖÈ[’©þAÃáfRC#Í=û2©EmjaÄØTïÙ¦?™ÔŸ6ŒŸ¹ŒQ¬­ÑáÕw$šUœvi°V빪“DB?>Ñ3õŠóÆóBõ*Åó¯ÄX¬¬ìÝS3«IÕ¤?Îy;Þ<`"Œ-U¸4Øx,N-‚{lÑ™ðhX¬¼ëñÕñÞ¹ä‹:¼­˜6…ê™öFe:ñopè E™Ln« QF>[~Í5bÅ )³ltÅ]ãRHí¦ÿzƾóN"’óç3ÉsZe²Ù„,$çfî¾;ðå/ßnÝΪ¢iIiÑ9|X*³$™m7*Îë¿iS¨öõÂfpãßàÞÞ5K¥íQ<+m­­uյ׊+¤ÖGwCSLµ3gìõë‰èáÿ-§QÁݲRB°2¶XÜ|3)õÎç–vU½”ÍŒ(šd£–͵ŽÎ²˜Ý´¸?/gºsïx*u,ÓëˆEÍa¶×@³À´;:ß|Ehy¬ƒÅ„s>~9‘a Ÿ ñZ•XR¡;—9É£ñ¿¡ê䳕\T¦çî¤9È0~ú+AW}ï'îY±þìS½,ååï./—ãSsdï_ü û„šÿy¾/H¿à¿×jrí,íf¡iŸê{kS “)ÚŽýü‘þ㪷z\? ¢`à+GÈÎ\ξCS¬¼¼Ö4¿í>†ó ý$û©ËxÄ}$cØ_¦Èø«¡ck¶™ð=×=FüIÍ»n'Ó[æó~2Ç¿ªxü<~|áÿBµÇÿ <¾Q™6Ÿ0L'þ î=}s¥¢´•Éyœ1KíXKõ`Å=7*bƒ}2?l|üãa&¹>2¸ÛvÚ,¨&¢ÌÝwßðùŸ¶WžÍÖ“Ù¸e3ÓÒíÛnÓ»+Òñˆ®;’éW⽡?>&ÛŽ¼®Â5k^Ây{;Qyrý{³ÑÞÓ•"OÜõ7§RÚÀÂ#×Ú·EUÅ¨Íæ‡&:=3Ö,z&"nÐ3 *tça½æ¿9©ÿwú3·¼_ôwÓé‰ï0áü•^þ\“Ó¢RÆRA.“/híç½ =m?qüÉTcÔØÒ”Ì Ëæ³µ«ìÛn»ú{gìÄì`Àym¨ˆÆº«äGÔµwžTy³æp±'zãü­«Gn}²¥ù ÂÎM8Õ•Æyßú‡»Ù¢Š’NwoZw¼'rðu‡ï¾æ«æâh”H°Ü{0eÌoîϲß=û¹Eèõ/öv,5M‡Ï¾.{ïØ–r~Ai‡^ûáy½Œ8Ïmæî¶ºâì…]úõŸøä_¼iK:ÄBýM”ÞÝß=W½çìêðí½¬]9·dô4ôõêï^üTkû†y¦í}NæžCBéò.cÒú£¿ìôŠÍmͯ-æÝ•Ò0~øŃŸþDçKË”zeô€vã‡dwÙ¬å0ï±:Ï÷Ÿ¿@?JSµè.ígºŽV={üýÕ¡¼;“Qv©~öÔ¦´ tÔL¶@à^Ãøqž'=ý^zÙüï”ù?œOõJîátýɤ¹W‹8^8ÃØjö¾ ŒÇˆï’wÇSܪ·7 ÞO椆*¦<ý?îñ]Ë›Ÿ§=roTü°Sç„ðÉ«3!ÿÔýÜçÍ_ YVnÕ–s[Øú²æ þU×Êm"Û t¦ 3øØcú+¯ðÍ›³ëÖI™Ñµ‘7X,-ëd‹o¹¥"cÙ­[ï{1›Õ²™ÿš¥ŒÛ–öâs×þèóêŠ[E¶²Ìtî/¦]+î[|á¶^Öfÿ´à1Fã/Æz‚áUì¼ù‘lÛ”ëy6gd±T¼lþ/úÅ»î¬Xú€M)‡Jg Ð?ÐS•MW²²ŠàŠ—â‚Dn8Á¿Òó£ò'?÷Ž>Ýn|tc´umeØ¡.>[vüm,l—½³à!8T诿Õ̾ûÌÒÔÎrŒÆú÷t~ñNú$ûø›¿þá·¾6l>8:p‡‚ñx×â?Yò‹ÍËîz¥| ñ¨ãÏŠ'õ¶—¿áu.2Þ|ZPR{Öeb²ì=ªlÃeK‚¾~ò9ߌ1–wSüvûþÖfíõšž¦·. ;CD±À§[÷_øè½çÎß0»ÌáRøiòyyG4`V¬sŸ•i~MÎÖ“VæPû‘ªÞ‘ ûºË°ÙÁŽ3Ç×SøŸ”É¿RÂüþ¡ uíöÅAç’¦†aüì|à?Θÿéøl6p_0xoÁoR%O~§Göÿn¢gwZŒû~9 :µ/⦌÷âôð 5þ-úOxßóøû=¦U7ùàð'\æàý´xŒøc =ÛØãö¦ÅÉÐëç!ߨøa§Nš¼ëWgþÇôsp_¸t¡Ìµ8•kB íÚk‡Òs08W*ʦG||¬3 ûó?ãI"zíkE&iê#ÿïU”6_tý‚—^ê_½zU½õc™¬n‰ÿèOØ–öÀÏ_ÿ‘„*ny'©òpžµ¡•!Kô¯|@Î}oÍ·:›+¢ñß<Æ 5÷uV>|Ó¯_W¯[YqVPŸS7°nÆÓkžª°>ðPôH"Ë{znZJ¥û–®ýZ<ó©OÍJ=°Y_4g˜œ«µýòöï~Khß\—XÇú^7?˜»ù cqCS7½þÝò§LsoÁ£ùµeüPÿ¦wE^×Õmôôʧ{Zç¬üÆGï¿MÝü‡ô5Ÿ•4 rÈÎ §3½Õ ûÖÊ×ßßúòJ–g£L2.ôœ_ô¥Úûï¼ú‰¶>Þ™|(ÿÄzHûMœ7pÞìùX’KçN|îãO$¨Ë¸?ß0a?~þw+>¶ä; ìõ’+Æ®þºþÛÓ¼£ñ¾ò÷J¾¼aYÐᓟ}ùÙ×}ä†Ù5 ÊoÉ?«~úûTž£qšºÐøü[žùögF'çùÒ¶½$du½´åÝ‹å¹6½5ýÝ|ß­Çús¿­xlþÎ š$~ræ+ ã—÷TƒÂá?Ü÷ÃtÄv~SWøüýü+Ú¬+u=ïç*œ·ÙºÝûG7/Ò*b§Êþ›£_\zUÀíËÓÆ„×ù<æ±Eÿ©¼ƒéðã’w=¦U.Ùá×¥9á»èŒ±hêí\xŒ†.ßËû9ŸÔO<~âu¶ãÿ—4\ò®Ç“é㘘iø7¸/¸*"eDîgñ\ÒÖ¯¹f(¸—Ï],ˆR#·{7%ú‚ûX¦ªêâ‹ms‚;ãi!´Õ7Uô»ßů¾ºbEåõVFW#k™Š%mK·V¾æïþ.ó…ãïÖ+ϳèsž!9-øö?½îÛw·YÉŒo\wãÿ´÷êíÝŽ ¦Ò‘+ç¾ï뇯 ½ÜžHóŽ„Ccz$h‹äâÛ_Xj½ë]åÍ-‰ hÉHÒ©¸&Ûïø«[>wÃírÍr¹|^ùçÞsªSüª9Cw}îþþ¯Ï>ÉFõÛ¸h ~è£òË›<þ7§»/Tögr·O †;{Ï­|öÆóü¹ÊÞdÓMFGŒµÆ~ž3lN@PzÉW>˜ýô›uœ®]0Ëù@¤<=_Óy¸awçùY=ýy«¿çŸzè´úù~ÁøÇc¹ø·_õ¨£ïý|óïæôäms_2«û¥çïlÿ“ÿ¾ú¦ç3Ôa;¬ ¸Àÿò…ENßûg­øÏ«—U¶)Ji¹AvQÅÀ+]o{ÿ®¯,ºbûÎóçDÙ;œg¥}ó±¨<¢=jÚÑår1›°“§?Ñÿ–74³fvã°>ã7',ºþ5‹Þsý¿œ?±0‘λóé²²S‡üãŠ/_Ð_É|ubgKDÒøçÎàÖ¤pk •¿åŸŸ0Ÿýǃ,c¹L ý±SR,xcÍ'›}Îü@ªü÷ˆ>3i²wŸèe÷Ýò«ï7S[è“.?.£ÿ‚"UšV`s¡1Èèžeö#Ïýøçý¬Óœø“9=¸Ôé'µK~*ï`:<¼ºåÝq—Šìð¨ä¥½Ÿ¯L¹Ýã‰ðø®Àí¼z>çRvÍûͽ óø)ÇdÇÝñÇn¯'sBß¿ÝD$wÿ÷Åë"B1[Œj•фڥà¾pñ›(™1Ì`”ŽÏùÈG^ý¬±YúÈ%l>X¹_¾\~ó›É÷ïzC6c6¢€ÇôŒmé׿{ÁÇ>–ùƯ®Œdûg9vÅâ’ѬE½+Ÿïë}¹ª÷ì- #…¯D³+ÉîUîËÜòò‚ß^ó`W묮Ä3£‡…BY;5ë Gßÿýf¨é©”‘H9ÜègŽ)‰—‰·âÚk+ô󵉴h…oínèN±Æ®×ô|ð©ï»bù›~ÓnSwæñáÃεý´½ÇÌþcë½ôT‡Œ™ IDATäžï”Eƒo(x ƒ‹-Öý‹OÿKãáã'¾¯ç\u œ;ÏyÉTçk?)»—¨È3_ø›¿^øá®ŽòŽxîç óu¥—™ Í•ïøÒkfÅj—…cÃ}UYVÅ^û±º#¿^ÜÖÙT̓Mùæ¶Â8øë]~øóÿ¶È<ìX-›øÆñ‡Ö>4°÷ÅßÞ± ÂyËÁÏI].L¾ï¾`¶ëæ=½fK[ná–ó—d°åÁþèþ㛲Þÿùî…8?ßõÀð1ŒÅƬi[Ó—z?üWmoÜ÷«îúÍûFÿÄhì[/?¹ô±?©eÁ?òr—ô¾~F?д£ŒÅG8—ùÖñ8Ûøæ³fÿý³ßÿýwxID-¾{¡Ý\]ûϽóGç^¬q.ÌGõŸŸ•2dß³áOÿü•g«²îûÏd´^Öáp~ª'ð…‡\ÖÅvå“|ù‰ÌÑÿýÛÿ½î½o{1Æ›Ó_ËÐÜû¥3/‡þà£Ï¾ò—<ÿÖ»éX_ðÍ£¿Ooÿ_yqá‘­}fër=ïg/DÔ-ïþæaRá˾ÇVŒå¾wÍjâŽ?ùÛêê“TÇ_¾Üï?CŒ¿N?¶î¹³Åë7w©òþe„ñ§·¨4üç7á=ýjL‡åµUÆÛ›—|Ÿós\"à¤V=~sŸrLv¡zü±{ø3nÍcç3É-5r:'9¸7쬫««««ÛyùÛß­\)•tèq×4)l=:¹ËWÏ•Š’éerƒÈàˆ?R^¶ §âι-¿Ôróú׋;?2ßʸ1â'jZƲŒ·½Í&¢ù—”춈22wÍekïÝ6]ÿÙ§W~§þÞyº¼êŠs+üp󶲜Yõ¥Ï.û¯7ÿM¬ûÜò`™C)=°eªüTøÚŸü$ñÅo}0™H>z»ÉlÑbu~ùÝÿ÷ðáøþLJS)#+G„ª¦®#=ýæ-Uÿ?›«ï¸çé“_~pÞ³v'´SçF¼wCë‹_øF´ûɶ޶ð…ˆNgïøÑ“[n¸íûßxÇŽ™‰Îšù•¹qqHp¾ø±Š#On\þÝçèª;¿Þ}~!ŒèÅOÈ—{­Ôû”ñ¥÷4½¥êöOg©+3º Æž§«PDë½é¿¶~„â^· ÒùÊÛ$>õh'¿vÑß|躛xºâtæ=…±ôê9½Í}ù¯ÿjÛÊÌêÛâ+JO¶}éT·¾øÿÖï_ûJÕWŸïnĬÜžëÝÚðÀª/^×þŽOm³ðh÷íå-}#Þ,íýΙ$«üÀ¿>ùØMÿÛü·ýÁÛšrUWêßFÿÄêùçO?ög½«õ½'C-ì÷ È žÐ‡Žöíz$õŸ¿n=º5Z™Ôs+åÍÝ?j:3çð;?ó{ù2kýw;˜N9­ g.œY|RýäF ÷­W•;/~¥ã=?÷ÿÛøá–½Ðöì†ó:‡ÑíáYU?ìx0Xêñpˆ(¨ýÖÿÿ†_ÿú‘e‘NÇwbŒõ†Ì8øÞûþáÊe[7ß|æxUkÿr™OŸ>r]⹯ôMWýì~qðc ºù’ÅsW†,˜ÛrîÙºß뚥÷üòE|ÄqJ‚Ÿ4Ê;ùï¿ÿ„ÑÂßâýXzU'iS›áVË_Rùâ³ý…ú§µÇ~öÅëçMÕ ¼Æq§±uÖŽ¿wR—ây¯ú»­€–S\f;þ¼å–`Ôˆqãçñ´íGyŒb.o†ÇA—|ŸsÎÝ"þå¿<9‘Ô5¡zŒÂžFy²c\àñUu«¸³a£Æ»‡éØb»÷c÷«LÃÎ-›w:´{sËÎ˾ò3FR±L6·Ç]Ó¤¯VÏ—® Eñd÷¥G¤Ê*¢U¯¹røW-ªZ–Sqgš%…n¯>²aƒe§M}änܰ„¥_}µ ¢·½Í>}â킚Ïç® =Ùü»¾”và«1¾\zä¡uÆ×_¶¨¥ûÕªj›ýÅúsóâ"]ÍêOíïùýl–}ñhC²kÕü9‹ËMiÅ˾þõT(¤ÞõùR‰µLKçáA/ÿ6rôh<¤ßÿÇ›SÉ€Ò»‡É¨ÆhOùc˪Úûw«ÏüüÝŸºö×_ýj__°·DÖœUÙÚÛº¢ü¢›ß÷…=×½õ‡ßì{ôÄ‘ó´¸O¹MëšU~¬ék?9ð‰[Ö¿éü'?t½™ / x÷’´Ïd‰VÚO¿å–ÄÒŸÝüÉkŸ_øÿØ;ï8+ª³?§ÌÌíe{g ½w¤#*D,¨Ø[ì5*Fc‰Aƨ±·ÄÄ^b{5*±€±Ò»´¥í²½Ü½eÚ9ïؽ;÷rݽ‹<ß°;Ï=efvîï<óœçéÖ\U’žÖf:ë¶|W§¡%ÿ6h™öôƒ¾w7ì®S–oŽN¦±­úÓ]Tùï¦i'oX*©înNëb±6å¥o^>oéý_¹|òò_’¹ì  sï¸âë]J¯k®¿wòh>îüU;íßo½½½Y>¿|c^ÞcÆï\ôã܆Ê|§7:áOFúÚ–ª™ví‹eÎ²ç¦Øž¾µvwŽälãÂßXùÉîJgÎß~RÏ«ž™ûÙšÇ\¶Õ÷öN DmV®Óçµë3¶zÄu+þo«ª,¯“¬ýâ­©’_Ø©½ñÚ[Þ¼fõK'~öמ|éõ’JíŒ(3_úæŠuƒ'\w‹KØïÇ/^šµl×5í[ËÊØS_Þ¿àÞëÁ+zÝ·>‚6W[lÊÍY·m᩵Ï9gvf_M–XE­ÚóG‡Ç·tÏÜ+ÎüíÂ'¶¼þvæ&­Gû¦Ú³!<úÃïGeýõò‹¯ú|£ë‡ŠsÛÛlfÿöĤ¿M„Wžìõê{M•kÆåf•GÙôÍlŽìžzÞïnùüñ¬kŽ0Âû?nvý°ý†¶Vj©Kw(=ÆYýÇÒÏÎNwY;ÝWÖŸ>~ÉåWÍZößݼ¢Jz%‘¹ìäùo¾êzá·ÿ]Ù𪖖6•êëuŒ÷Ÿ6eа+ÿúEµ´²òºDïz€w’ŽE¶t>æ—Z0$N[ÿbÌ~[+˜ÄUEËØ¦µÎŽ#•’ò†¡ ¨c1î‰Y%ö†!޾róÄœÄ Õx¢ËªØ$ºFý§¼ #™âÍ·Õ]çœ'èÚïÀš*ñÆ!I}zp“S¾}Gñ„óŠ`ü„âÛËŠ^&C†rJãæ¹–ƃÍMâ°šêl>6±ÍW`ÿ¡$h&¦i´©Ý$Ë «Š7½­óžê!ݱÿÇKï;©Å@[w.éY4±µY}piZ‹ôû7Î/-ÕN9EÿÃÕßež›»uó›ŠyÚŽMzeÃ='ÌzTv#µeßGÖ•]Üšw_ñÔSaXybþg: hÅà¦ÜÝ].]¤½·ÊéñGëûU[¾\€'^ra¡—]¦}´ÉN•6mÙ={šêüg\wÌdýÝ¿KJ؆ Ó¶Õy±£/9'=øãîÂ{7Ücø§ z¿1ê/9[¿ø´Bžsöe§¯Úš¶á­?ôv÷ “Ãön!عïþj›æÈïÞ™$õ:ÑqÿµC/2”y—¾cÀ?ªÖæùûímyÁ²·úÅ+VþköluÓ¦ñÏmž¸Ùöȱ•—äx´Ö9ß·W~ã.£Óo»cèPýŒ3šn¼ñÛcv•!%zëòMöÍVµ|rÿý‘M›ð㿸þé]»¿í‘?v¿M]ú|ñ`zrÞnɸß@Rú¿µ"‹«Ãz•{TsÇž*ca…ZQh£ÊŽ>…ééÜáàö¬O9fÛÌÓî¹ä²Ýç-“Ÿ¿¶× é’Ÿ¿û§%SÞlþÏwª²<âÇm™c×´6¨i•­’{êì£fŒbnÖW¼ÞP›<96ßÚêù‹}KW/h.øp±?¼(râã w8v¯™yÚØ+–o×þÙ••¶ýÆ£Ó!ÿ¾²¹ýâ/xóÅ¿©æçâ ùÜ(Æ)ùùJ†SkŠÔV?tüÅ}îöoŽš0Âî ;5ŸC÷ûkFù6-úlݨ‘ÊšöÌ}µ¥øãÒ¿ý-Œ‹J_Úñø×/}míÒ§‰[-ðK½ÚÜM…åÇ^8£¯ùàí?Üv\IՎ׺gµÉéùíÒïO4»­^{玺Óf‘•~2dܳ[—ÿéô±ûv²nÚ„WUÚgô‚+/ÿsYßgžñÈZ¥IËÅk7¾¶Ã5@ûâ™ì^#Õ5MámºmÙ®î0=ižfDçi¸ðƒž7¦Uüayó™gÜØpã²翱néÛ×€p­[‡+Ø_)]¨¿úÎ?=®»ìÒÈñ¼\ß±y½ûž›ûÂàcPèSÍñÇÇülÇÆâõkúFòÆŽ=áˆä÷ï3{wÁýÆÓµÌû|xeÏSé/üqKÝ´øôõ%o7wV÷ùx0ˆÖÌÛ2þÂÝ+̬º©´èÆ‚ù>}ãmW}ø\š‹•5Û‰²aO£[O_áѺ©†Ô^™îõ¡w{œ÷—ÞÞÛs\ÞyW¯~}Aí€YiãÒç=ñPo×dÏÐ’œ–‘Á#X³çžÐ¦n '¤ßsþciG=a¼ƒúz§¦æñÌÌ®|«ÛéøáHéïõùb…²4ó€8ß/¹âôËšbý–A¬í©^Ÿ÷@×±ÛNʆ£ûÄ™H¢chÕDœÖ¢!Äc¹ç[_Äáµ¾ý8G±v'8ß61^¿qnƒ¨¿𳳩Æ:Ñǹô­ÅB‚§‡Žü9':÷ÝÂÑt¥pßQ^^4± ¸[Qù×;¢ŸûwÝuWüÆ£}¨„0àmD¸ÉQëûoõòE–ÙæeBaiš°}ó®nÝ÷½ŽÇÄ`ftÑUS·Kr›"D2™.ïÿ±¨ˆmÓðΊ蚠ØVhr -e•Å_x}²%Cñ¯}íõÅųÇÍzôÍWÎ;mÖ+Ï={ݪµÿ¼àmôhã›E/»Êȵ÷ußÛ Aæ Awzô©¿Ý_Ôë'´/aÑ;' 3Ïýíþ¾Œ°Ç–ß&ðÀ4¡¦~USŽ{àti!§;ý@Nú5kˆ¯¤¥¶¼ïoØïÛ»7[ûcfV·òmÛpI c þtÅç÷½Áfž2çŠYàøªªi[·’ÒàšÝÓ?{j²}À§Þtë7ÞxJÖœ/æmâ¯Nvàž|ÎýÎÂî}[”œ]7çN3¸ÁØÛÅ Ûƒä“O:iâ‹yylÏTø&«Q¹ã €1ñÀÂç1¯ôÒ­7½w˃§î9ÚÚÔ¬ŒºÏ[ÿÐCá7öê9äÛ«ú/·M3nœ1~¼aš “µuuÎÛþd@ì‰÷ÿ©IúzÉ“o<ÌڵػáÇ^•Ÿ›×Ì?ö¦E‹æ‘÷шV®<ç§ÿ}Ö—½ñÌ5È6rÉÛè«þxÞàúÍäýߟê¾âërÔžrõ½‘Jã‹@ìóñ ,˜üФÙÛº=Ó¼r‡·~{ZsyÆéëÿ¼¡÷{öÒ7ö-;l¾Kò\sï¹`ûŸêöÃäÙg•±§œ9Î#Mõß>UûO ,Y=+ÏûÙϬ¸ç…¼ÆFtëõpà U§Ý@‰Œ­©Á ¿?»ïÑŸ=Òç¶å#<Ø ?üü)åVÎ?õ¦ES§nÚô@ýæus?Y~ì¥7Ú)(‚tÓv翹úöן,Ìšrþý/¿øÛáXñ¹6…``jf³ÝX¸þÓzé‚…Ù¯=aö˜1FX½ê›ÑÙç>œž¾7kÊ ÌlÖþ½hÕ¥ó.…¡kù¨'êUU7]yÜpó}{7qýý¿%Ý3»m¼ývûO«4ïî Ùuëýò²¢×ç±ÍiC¯ÿôÓn&€ —OþÏŠÒ´’ï¯9­©Vu[òÏÜ7š:­æ‹WgŒH/ô7e´ñG.±áKŽþÍmݯ1~Áãë5þ{ê Möœn}/9§÷9—­~íá»=™W;[){Ša uu[ÞüŸÍúqþ»§Ÿ®ýëàéýûÆ­é7½y“$¦As3jjB••xPšë©¯ý쫇N¿ÄñÖ ú´msî“å3‚œ_¸dÉÅ«?¾`êÌÿ¼õÔŠLå·;) ó'Àˆe=æl»,¿ØõÏásÍoiزñíφåž|ÉÜG¯îyì{}Gn?%ÓXRá(ËyyÅneÃâÒïœ?ëž»¿zoª·r Ÿî+½i`pcÍê³>ØV>õêß?uãã'æ\üÑ›Íä)öÑ[Îy³âó=yÁÎóìö0è’ÏÞ;wR~Σ·^æô=rÖÜ I¦Óð# ¼1 ß¹%AÁ×ú;1JŠÄQl­-㨺6)8  *Å8ŸjÝWTk­u^Ô¡d,«È­O Ä•hq&âóy÷Ëý¶‡Ú´çnlÓš×ëÅ]£è7îz&j†~Žê·íÕi£Ècé騛6ÎmÖöP̳5‘Xëð¨Ï·žHÔGZ∷½cÞêIYäw¥p?sæÌ±üýþï“£öµî á”Ö¿aB¡;Jwn/×¹ÅÄ €5«Ö·*ÑFÌ%Ëæ† ¸wï}¡’d0ÓÖÚ$¤ÉYŸ™é=ùd}ï¿YÓùy4…ZÚ¼Žä¡¡Ù%ó¶ãõþ‰=›êN=gúK+>tö_{Ù²ûæ,÷z&žSY׬9Ûô¿3HHñæÏ®¸ýö£®¾Z½ürí«/_w*ØdÏ~̳ŽußË®¹ ¿ÿ¾ôþûÒÇKO~Ph±¿ÕTt¿ÝQùüóòEiŸ}F¿}ì >V³=ã¢flGƒÒüëž>éµi÷7c†óÞ‡>3ð:÷íÈÎæÙÙŒî Ю•ÝÿXÆ]7››öÅ1ÿºluÉW_ßóês/œlª…ëhT Ûê‡3oçå“v]ú·n¯Þ°îœ÷+ëÓÀ5Ø¡#óó/˜;7øøãÊôÙ -Ínhu:‡•åÉø"ï¥ ~wyÉ?7ßñ‡?Lž•÷ùè« YÙª»Z¯'¿|Æ_NªÈ^øì#Nÿ1êæGoî“þÍc?Ü?°AƒÌAƒÎ\ºãèó1r½õè…‘…›¸B[äÚ›÷ü ÷_zÊüO¿‘Ç|»3í¸¬ëŽŸ<´FÃt=mYïåç6”&ÆÀ}eæŽ0éÓӵ߬oé$…@þÀÇûÛgjwë×—æ‡ûàÝ;Ë&÷isZF 8ÅI/,õÐÈ‘ÏVW£'þ<¹Økä¿j¿Í……lfáë.¯ïË+úÝõa¦Y7ë“»KF¥ëýŽ|>>b„ #z¼Þм†ÈvΜ=‘£Ávü“OßþÞ.üñýÓ¦ÞrYKÃ9çŸú´^“ŠðzéuÆÇλ¶p½~Õ¶ó7n®rI?àÁ0ÁX¼}lá˜/OÈÿ8å/7{6m?%xÍæm JŸV çÞ¹gº n:tȸÆMŸ_éeÇ…fü098l£Yqe·nâ‘ä_&Üpôe§ãù«wÏG¡ûTÕëgÍh]æÉ€1i·ÜR2¶pYów\®¨s7×ÙÝþ”ÙÜBZæ’æ…ÙžUÛ·8ý¢½ïÓL˜r"þnÛØ^>5-oÖêg}êñ÷/.Ÿ8ãâßÀþ˜¨ôt¾fgAFï•ç|Ô}Ù¿ß›qéÑ¥ý"Á]§ï –“eÈÈ༬Œ-Úí%Ã6Îh,"¾tÎ9W”ôl l¿ro#ÁÈ‘æHx~Õæî}fžøÚå ~7®©å¶[6¾ò×i£N¤ÍÛx™#F˜0¢;Àç‹k§ß÷ÐCËwç ú åžÁN{8¸ÁüëØÑ Oú§ªÝ^2ýüÓŸXp;êŸÿ̺àì«3⢬¹—~·`HD#3fž»÷M4BpÜi¶…•6dg^ðOƒ_ˆƒ>ÀS–Ädk•àæÅ8R))CêíÆsÀ;5Ú. ñOÐ'ÙîTXqÔ:+ekE§£8*9;- *¹¨ñr@Mÿû±õ£>Gú·&JDZl}(ÁåòoÝrT¿q2ØÄZfÄ-.–¨,NðϪu¿Ñö­ÎEô,ÚJôO,V¿?‹®Œq/*.Þ±½`ï;×âŸ_’1¨â)/Ç„0ŒÛ(i“ƒÖ*¾%T­[½@68Tí9ÛRƒ™Qá3 á4Y6þïû"LæÏ§„šˆÛ[ÛD"q„¯¹iÚ4ýÝw¥#ܷ޼Ùí ðH›í°ƒË¦dªžþÃ{eæõ°¿84¾lÈêÝsº¿³«äçoiU¦èh¹ê·#}ÛQ#Ï]pÓ;[·’^½[Ÿz†ÝÛjñ´6“!×îÐ>½ýË·ß–þþweè¬yv6¸Ï¤¨{ŽIwS/ð£¤3§€«vW@†x`¬¿ûÁσ¡cgüøéü­šñÀ ›#7Z. ¹ÞÜ]˜~ì²e䪋NJË®5BeíÍ*›â­üéô·Üb¿µäN—¿Ie¶6è‘{fO™ùüOÇ®Y53ïæŠ^ÆL?--³I‚¾­ÍÔ–™W,[»æKÿ‹Õ3–=Û8îìûwÕӾǡ¾ãF†Gõ¬*Gf}rÈjYöø³ï” .8ie¦íâ¨l«(ÊôqÁÎëŽüüç7ÛVwÙ·;ª2£ÌvEpÀŽžqþþ½~íÂÓº÷ª)MŽ&€íÜl'? ºpë¨q››'.Ú»½Ù{Ò]}ÿ¾þÍ’§?y“9?[Qoˆ~Mä§ým¬Lâ¹À=tTÎüpsãßÌÿh`Ú5e6ëÔyöóý¯ýÒóâªðòÇ^Éï»6ØØ/Êfdþ§¬ºmîðO¾tÓ®·_ŸŸ^¼®¶&¿µM¿‚ËûÙyíΛr_Îþ›vÆŸÖÜðßßö›ƒ îimV–ya…o]zY¯¿§­¾rÃñ§/ëé~Ûr`Cw’Nw6”I;‡ä<À]yγ‡å>9ëXðvk(oëïLt¸Iˆãou2ãEçGŸŠ§&ö)‹è{HQ$8ßÍâ\ß(9ØæÇÄn‹¸Vm&Dz]¼HñDFÝ^k⥡L0Þ=á?–O{œ¿‚8{gãJ´ñ„ÿú¢èJá^Ü­¨|Á7ååß,(/êVü³` !Ü&TfÅ B0§¤ÏÖäÀZe_6x‹auÛÁȾБµk !Œ™ÑZÓF3e™­ý`ÑÞ¿ý Y’L ®Ö6‘ˆM¶·4eð ÿÜïÕküøc <ûe¯7âvtom–ë˜Þ]æ¿=¥)Ï\¹÷7ýòoëS¤®}õ‰“v*_ÏúÉ—UgD¢Óh„Z Ò Ë—ÝÓàøêÙGz=µîÇ*]1z›Ë”™Vâ°™£Ž¹¦¦é…™sϹ*÷½ó½._“Îjmæ²9lÆõ·>ýÁÒÜÁ·n ŸšÁ+ˆê±(ûØl…oñŸÿTÅiÿúÝ6Oþ†Ú†hýaA°î–{w^*;Žê_2À•«ÞaiåÀý2së7]“õà“öœZš‘Êó ioÖДæÉÛòò9Ë¿¸â•-žG<¾ „Š£lv„äÏäÍ^?kÖk´oÃñS2ÒÔ²¬±­m ½c³s¯|uòEÇ~Ó¯à™â/¦ô+@Ýmo¶ï‘s_¾±©>á­VeŒ•ª†sNuŒôà"9z+j®ï¼^Cv-xpñ_WÏKï~Ë3_m(ºÍãœeVÝä°¥ýôöiëÎß™þÍ[§ q³b÷µí°§ÑiÏX÷÷ËÖÞûŒŠÓÜÞdko>û%ƒ&¯Ùôù׿vwïq ´ð(K³öä³§ô@½_¿3ŽMM`ÔÈSÿ5úîEƒ?¾·¸¸¹,×"¿ä&í²3î¹µgÓ>ðè åãóKª|4j xs6Øð“¶É|áŽS§Ÿ²5l±ÇtmƒSéùÚw³wþÍ(Ê—áñÆï~‚óœ& À¹{KCvŸãÏT7ø„{ßâ†õZ¥OÆÒÌÕ¯]O®mÞ©¼Û¦ˆg´7ëíùë¸lãÉ÷‡Ÿ|ÒžZ÷A‰s‹p”<óoÔç.øþ¹YK 'œ¸³—óÕö6¬/+Hí5h‹Tüå½…³6ç ØÜ?㑨åöû'g™ï¯®ìÂÜe~€§.m¿âå^ŒýÍóHÛoŸ8·>Çñ– 4ì Ã>áû'ÁöãŽö@gñ´Wô··µ¸‰#›â¥‰¨?ÿú¶%ÑÓÞ!…ÖùŒ+Nâ„úŠ“›%¡!%˜$¾}ë‰Xý /u¢E¦b‰û® ±9ƹ‘:úôîÒ¬2èåK;îÒ—‹î¸cÂÏÿmM®o]š>Ai˜xãñV;mRówÞãÞl;Á ôð™éÒÜíqÿw°ß.Îã>áŽùóçÏŸ?¿cO}ÆÆFsóSÿÅUs™ºÛš }ŽùÅ‹ ±«:³ò¸s@d_DÍÚ5BLàÑ1î^WºByéÀ¥/½$¯_OŠò–H”É´Í]bŪ6GŽé;sã/Õœ<.´ejšÂ3ým Q (8³6j¾²¥hИ÷¾üè «/Jó9™ÑÔìì“ œæ}k.þ÷Î~Ú¾»»ƒÚC‘6 ¯«ÞŒãY ߿㺌۟Ý0ÐíÖ²]m\þÙÝoè6ÀqÕUsé=kCÖN¾*•h¶Íw_¹1cñÕ™yÁLÿXK³ö !õÆ cä)Ó ì|õ£ž3wó²ì">fáqÏN™êµìÚ;nÖê'ûì,/{d”Müà˜qù­Ìþþ%ú妊/€ÄÛ¼²°™½rVò¹o]r]ËÒ·0ŒD«GµiÇmùë÷9Ç]÷Ï™Á¯ÖÿµV¦ú%ðÜ(#;ê™™_û‡//^ðåŸ{Žú.¨ZÀ€G˜UX7ý›²¿½8§¬Ê­DÇBü¼±¥ð˜é÷¥+w0¬ѧ¥30ÖÓ¡º&ô¹4}àã;CŠå°úhÙëûžñâ|ßg½(xÌèSêPÆöÛõöâÒ+zð8I lãÜݾlïÅÝz‡FÞ}±õ4“-s½Ú¹£|Òt3CõÁ’Þ#?¿Ü=µÛ°jŸÏ"‰ä>ä3z¼æœ’ô¢ÁÕ^O¼¬ÿ¦9Kå–¯ãØtÎ]j`èÖU{»™¯žXxiWô{€Î=À-9”™c%>âh¯8_ü±ÔCÔ—qœÆ[꘰kMÇ‚eYßy!ÛfcßÏ•ùÙÄ Æˆ*`õ³¯o»³êJ½›”БÖGâ-Šíª#$Z¼6á?–ÏL‡CV:ÙxJ†ÊtÆ0"æ¶mûyï½¶3g¬#í„»Éá}aà‹D™¥ÇÝäHvh6`¨\ZE­T2ܹ6ʹ#\Y‰_]8|©D¹¢´ AÜçp„áÏ×oW¯œâœòâù¬y}v6»iíÀkÃqvÁ˜ê?»Ó¿þzb¦gØ¢·Š¦cªdhlú÷¨—‡Õ“µOÝ‘¡8Ãj›î2Ïö!hÙ‘ñÝ cgÛg/2‡­xã^Ÿe¤·.[O†úðp´u«‘³Ñ³©)Ôn[(Ô‡{Öº«QøãåGåzY¶ÝÂ)n çiãØ8wç†vò/óÜ sq½ŽÁ*B Ëñ›,›¿tü<åȲ£2$H£ÑBÖ4¦›éC/Ÿ=ýJÎF×àŒï*"Qõ;#ò¹Þ»ç­~ñ*c´¦þ>Á‰$ˆLN³_ÞòÌiõ§B¥Œåµ·ÉðOÈÈRÿ»hÖÆ/`‹×1˲©ôôiY™ú»k¦¿°ú¤Ü=Ãsj¬N]ôÊ‚ã놜ö‘è÷3G‡s‹.ù©×…ÍjL¿2×Ï9r ÿuÅ(þüÖP»ýÜ9ösò Ìo¿n~Vi6oµTíà×O¡ð±S 3bÊÒIýºý Æâe‚wºN/Zkûò•!”§Y¼aØK¡~íÈ\ôÛ_Ó7òè7 QpÞ-Ö[ÎÃy–bX—ÙbfãÝB*s(3'Æ"jß[IWÁÄáhûeœ`6Œ.vqH<¤!A!› ¾:Ü…Dç8ÓOp/r‚f]:©Ÿ±e#ö¡D½¿]»Iò4ì``O§ïp¿).ÜƬ¼Àž=è•Wä‰Go¢˜Ë¶èPLÍêjK–P ¦aéqg€síZëªa¸]°„ËkÃÐè)¼üÌêwÞ‘ü¥(áNG!âÂé6§ö{¦ÒêeÃÿZ ½ÚˆvL”HŠž\íœ!>T²à¥ÕêÎk”â*cÊà’~úß_âiÛžRÜšb‹Z8˜ö;ûïª×â%óC>¿>ÚÆ»/ó,/‚ÈΜ§—_}Õw'ùr*LÕ"¢BaŸ?·üìyãwk‹»c°™-Í:FEXN/ùtàËGù»}Wc%ûÀn(Ű½iýã‘á»nàiíÍæï}N¿ükþNÒ —7X­CzÆêÛ÷<éÑ øQg±äO'óÂÍåšvY,›,:9ÇÅ¿ÙeÏXýê0dêÖŠ<Ë×MŸ¶×í }ÓS†4#¦KÓ«]4ÍÁÓ&„Üô ²diןéÃmŽã˜9ÂOM<–œðUs$ú 8Œ }PÖµì|#h±%´J d£2ÓŒÝÞa"‘?E"÷Ä·É×ÏìëGº[7γb™1VD ·÷¯Ï; ç…’à0ÅëíH‰Ç(:‡8 #Á`ŒÄã:F¢IuÈy–º4náçlÆMè&I´¸Uê»Ü;NŸt¥'~*c¥º?ÜIqáŽÙ'Üg϶?üp8ÙJ0ØG[3„ˆ¹};†½wb˜VÂÝ䀈¹v-Y³† è¹™†Ûm³K¹vMRŸ ,ê×IJ³L¸»­Ç=Ý—#ÛáÆ.~×éœö®z#õ­«×r¹1Vh3•ÞƒŸ!ÝæWéÖ'¿Ùì]4uù#Cäó¼›çØÝ-ÌŒva ÄHÃwÁwíö[Ñå÷¾×{}ÊóÛZ•ƒ2Ÿ—Ÿ×¶Lðg7ʴزGÌr}95»þ{~fþU*M®û°9ìËë¶fù¢ÙY›B 9RF¼sG|Vdº×ÖÅ83D½âÊž5{îç8«p»¦Y/›}Ü'¨ÁÏ“7ƒpž ýÓr«â~(ëUŠ Ê÷y¿þÏé†[mγ¡´ÿäyßÒ Âyì—õܶ‹õ˜bC>-ùîUÆr"¼hpê§Ç13ŒÉ½QŸô±œÊ–AD„µ¼‰<  ú ¾ÑÑÁ&ÆŠ=Œø.ÜÒÄ«û­×&¶ßCp˜ÑV¾tLòúSÿqos(¶¢JЇ °î0 *Ô„“fÆn­+µaâ˪„7§&Ô`êëö„Es^žD¯NÂN…À¼® Å…;BØ(/Ç_|A#4mš†FŠÁik›U†Á^áþÓO¸ÚnD Ý´˜—Á`¾v-Y±‚”ußB#8Úã.sŸA¤)ÓýÓŠwÞ †%IÂÜíhsí嬙ÜèñÀ†×¦¡È«+ì»ÿéÊú©9bíKnO Ë9}Už¼¢>ÆG\ädÿ mûŠÍÚcwÊŸØ]!ÚÎýÜ¢¦T»\¿Ñ^ò—{ ×‚›j5&ÒQ]þé«]S½ªËaíJwÚzû²C¯x'—.­$ùFǸ$½¬ê¥²â´nµ”ÄŒ&ª‹¸Š —lYx=cm£3áF•>½á®Æñ7¿í+jTd‹ ˆõR#øºiFg6<„ J•–ÑóNYÝÈű« ÛK ¾,ø}­z4>ùú¥NÖ#Ö “xõËJ›fßøfrø±AÎÅ'YeÌ:”? ØÄ,Þ2RjÍžJÀÏ-rt¶&K»dœ‚2íÐŒJtO8Ø1É'Ït‚·>”ŒtIx‡ä†ÄÍ´Ñ¥^ÝDIðú&¸~ëÚ9%Þxâùg:gÖ¥$e¡rX“ÒÂ3Œ0+/Ç7Þhè¡0è{Ê%Ä]rÛÍ©!lnߎ—,¡“{”#b˜¦e¨ b®YƒW¬ ™¹å”pLÚ»N @ ØÈЏ¢"”V¨`p:Ûäê.1íôÁÔíOÝ~ R®Yô²/s·ªZÇõ¶'͘Ⴚ¬ ©ký„Á8æ»·^žÖøí%—f£Ñ®åF÷žHóÍÊm…we’éi¯ ‹)Aƒ½ê)sâ²jŸ×ýrt.Ƚ8\#<~ã='Ïè»ÛLvYsÙ6ÊW|ß_^X± ‹ef°¼ÌžÛ¿Oñf–Uë|/àTo˜é#gœz“/Ks8-6žšæÓLtsmѨzzôøÁ;˜ûøô8f!3+»Ï¦Ì¡» 8ˆhVÕKEIc+´ CA‹,:Q˜æ€p𿲽+ã°ÃÇEÄiD‘›æP¯Ù=V¤“ Ãt,ùIˆL²#’7)ñ6û‰ãVï|ðIRHP¡&x2ãÄ0¤‚4„„¯o‚ʰKW#IÉ*s8‘Œ…ÊaMJ wÆ1ÆlåJ2mš^RÂPuu#ŠÀfk£’9G€øöíxñb2*'"ºiåqg 8âF òãĽ“.S æÀU¶§jÞ¼9@»Éd©p7ÍGcl?ëEÏcüÙ7Œ-ï—y2ë!ao¨büæhŒè Z‹pa`¬g.Â9ãßzz ¯˜w¶Ýa¸Q10ÑÅSM/¿èÎ…zÿ‡ZêŽYÚB, uJ]UÝ7›M‘ ¹|,ºrÍ^ÒÍÁéÐ7nö‡dÛQ N$AÒùè´tTöÙ×~?øQÌ4äDè)m~3ù2« =æÓ4g¢¬/ï ¤»!£kB¥;Á l£*’SŸÇ ‘þ¾Þõ®ÃADz±µ‡s‡a$´Ô1Í!œ[¯6#üúÉÔΘõ__kZZ¾7ÍxïL Kks&H‚ BbÞ¼8B¶õ¡8ê< Á'É At‚'ó0ˆaHìú&EýKm<”Ã8d$þŠìY¨´#¥…;g6°¨þÞ{# Í›,íA(m…»É"fy9^¼˜ôóìÀÔZ¸ !bŽïY±jAžJB¸$Y÷C"Û¼udÍ-’%#P´Xi0Ç×_ =ÿï¿!+‹Á•”¥Dw°1–GÛÛͤJ¯X65¼»ïÄÕÛ ¯$â°3›-:ÂD×ívo=ÙHî)’~óÙ‹‘p†•ö k²ÝS…¾îÉ`I>Ë,( ±’€aëßKË@é¦esÇq²%†7½SD¸›ÅÜöêÆ£¼Ù¼"¼ÓÕDH¼Ê;6õwGõÑ‹’ÌägYI Dì*ÓýHŠâ"£Ýù¬È˲ŒÉ‡llÓ ~òKBðK’ù’`zœsJ$#dJh²×©ÃŒ‚S‚.!ñWdGÆB¥=)-Ü#¼¸kïôÓOƒ¾"Š€’¨<î+/Ç;v`ÙFˆn0‹í•Œ!„Ížªìl¦£ Á1<î&â¸yËø²h‘ðؤvéí<Úy#rÌ+G?Qüvw¥éŠ’PŒï^"æ˜7rИ*V2&âÑôØ—¾x÷âˆSæv¥þ3Ývw`Î'ƈ‡Í£&?~²$)ºEÌ®¡ÛìžúŠ¥çy¿¯ÕIÌtÜ+qÔ­ä£ìÉv12–—ú2cÑ•b÷“nŽÊ·ónß®peFdÉâíÁ~4í·çà  !n•y&ðòá=¼¸‘$9O†1&ßÅbì ¡2ÁáKê+›ŽùªMö»ñÖ‡:¯0’ºÓáö ýO/ñé|Á)Aq¤ÊñÄIiá¾×ãŽþw‘¤O?5Q.E@£*§2„0kÞÑÒ°~]‹Ë .ú3´—_?­;P쬋>ãøn6Œ½[¾¡ÞEÁÝ.!F>‡'ô—Åx|Ý¢skŠ16M‹ðqf:íîæUêðìÂõÍz¼\(õš G¯ËFÐÉïjtGúÉÛªõxûw+í¨@ÿÌé5m¶ƒl-Õõ“m,žWþ—ÅgïØ«$>cÝ{j{¬®Á@ê+›úªs‘Çi<Á~;5ž’Û~W'¯ì<É­œ*$‘îÿO¸Ó¯¾2ÆŒ©o J´MÉÂF¡»¡W/ÖÞ…©Î¬<1Æ÷¬œsS³Û ævÙÕÞL51RšzÕÆnA:€ÕÚÖbÝq­ró¹ÓߨæW¸×Œ÷ÒÃïSá1ýʦ9jÏÑss>ßåÚ%œ–¥L»[ûãÏ¥ÏEN ÆñÖ q¯Ãü¢yË*TÏ?4=écjt‹Òy‚f¶¿o¤Åˆ—;…s{˜Ñ¾ <ð,&ù“šìâJI„±/0bLŠoƹ€†¸uü’@pDÒyÅ–t~Ç|Õ]~q?)5ž`û ïéLõàã䜒Hj wN02÷ ÷O?5¦N L x›t{=îSGÖwœ^oTª›¦E-$ÆÆª®F••ª?‹bPd '´fª4‡²{ü0 -F(žM;ó¨4cdú?ê6®ÍÀ1ÂÇcÌ+;XÃbûŒ9·7ó¬Úª{nYêEÐ>É·,åÙ]Fí£Héöü ÉAuëªì2M³¹Õ…9Ü]ÜÌQQœ!<'=Ï A<›ÃiŸœLÐñA*Ë6i®1[2 8Y¼P`¬»¦]”¼&ÎmÁà\ÓìPK;Ë-0£kÄ G0×»IwáwÌ—œhžØB6¹Á-]ýf#јþج™\Z¤þ«Á‘Gª wD˜Ñ\Ò¼yëOꥴ¸)@TÒ½5w^_5y²Ñˆk‰¤3f‘ÜdQ=¨ÀUU†= •f/šA©=Àl5›¿~ÃMµªå†qÂÉýç\}p·Oý~nŽmÆrãŸ|neN‚žîù«Èr‘Ín¯øöUiãp£®ÿƲIʶ¹õmªjËÖ©/ I=r}£.Iî0Ø€¢>ñÍt\†¶äâ<»+†qA†1&‘:Všv…Öe•‚ÑäúŒ»:†!Ѽ×qò&5SxWÏ7ÁöSKC‚$x}SÿÕàÈ#µ…;£˜°P¨oÙËKMÑÛ™íÝuŠqees7¡:g–wŒ±Ñª@••*I“0Pj!Ü S’ì¬Þ…wqÒ˜õØË£ãÄcºTkv¾ñÙî™`û©¿¥!¹¤þ«Á‘GJ wàcŠÔIóæéS¦¬$+¹.íbWÇ›¨±íÚÕRæ ’Á¹…Ç™½9R…÷ìÑ4Š€R‹¤Ô¦)˶àÀšâŸðFN‚z ;íÔ V^´»Å°unžƈ XÞ=hWÄjââ…. 6guñ ýäXÈJ7»÷ZûS†yãFnxÍþ… Øbï—í Œ•d‚¤Ä]9€Ïžï&#fÙT@ H:]ª5ã4žä7 ]ìê1!AŠ|WqǸ뮻Úÿ’sЉTëèW›Õë¯_I)4‹Ú{Ü9ü¹ïÞ)•ˆ¤"+án2Œ‰Ñ¬×¡={´2?EÀ‰Ú9Ô¹©ÈŽpYu÷Š6ú¥žZlán'Ì_x䜢 ]°üa¬{ðº!XS-®‘²½ŸûªÕõ;S,Ï®@7üu±‰9®âÔ™—ÚÁhfÝ“0ôv0V̹ÂÖ85{wÇ( ùíá®…@ è*,à–x}¾TsRú¼Þ_d‹a’ß0t±«;á:P¿ÌÉ~=¤ŠpŸ3gÎþÿïÿ@@1æ¡Hýî‡àþ³’\8gðèØaÎ0Â,ªqUm$"šÉAnßcS£‰7à={x(_`–iø˜]±5dÖg†ñFD t«ZN{1Íéw•ÉwdÎ#bÍì½L3³!}ˆs¯Ðæcª)+6xÌM®.–ï¤àÈXKX3‹'ÜM³À0Žû¹‘ú‰Óܼã 6Œ•_ËíÑ9tAjcù·$ÕT;tqI!› Æõz}‰DÃwõŠ(Áö…jºš”•áœbÂÔÀ}Ê”xGw› <ÚÎ8ÆÄ GêЮ]D²ÉÄVÂsB¨pª¨²’ìE§•Ü ‡l× ¨Ž(-q„;€>ýXë©i3Žî…"²HÑȹۅøLäæú‰qZ@ÜïçàóS£©,í°;|£sãí,œ{d®”,^ âÙD£ÆS#OK‚틈 «Iiᎀ"Ì#¬Ö˜:u%YùVj7Ú·0Œ±RëqEA¥&nW2 ˜I11‚ÅÎ@Ó*²Ò÷;%EW[2ÔBä Áâ"]?~<÷”c:1˘˜æÈAÜθE >4> Ø· ŸÔÙáñ0ÅàwƘ¯@ tBk&‘C–Þ^ øÕ’ÚÂI3U éS§®$+ÇðL&YxÜ÷f éx÷nE—5)²Ø-Ê9ÁÔÚõj¦R €s‹H!‰z$»ˆd¤1F•aÆKêgGc\ ¯¶Q‡1ŒyH`L°<êfù9€Ì¸ÛI9·QÜ=¢áxq2©ƒ®O2Í¿ô(Á¯ˆ.ÕšqV .Ž˜‹ )¤´p ˜°¦ûoáYY+ÉÊ\a7ÛyÜ#›!£ íÚePJKáN15ÕlÚè1 ·Ï¿¯Kê•sO°è¬ú ’¶¬åÔš`ðÃѱé ç^„B1ŽrÃ}Ð&Zv`Ä “;²."~&•++ ‚ŸKTþï³’'¡ß„õn‚¥”:FœUA‚ †Ã+Áb—žL@).Ü1¦sݦÀJ²²©ií=îÀ ÆfÈlf5•Jă)'Ä*?#§˜šêó&7´ì—VÊÐПÊÓ*ck ãdÆR´Ã„Ã÷†uq%Ó¡i³Þ‚Žý>nëšt1@Ÿ¨Hî³’'¡ß„õnWïéìºÆSÜ|,a¤JVK0’1æ: ìÁ{0Ç´‹£4£]~FÎ "ZˆjúçºÃ9”0J¬ÒÅ%ÔÔÞI9ÓÚçƒßg$eÊ„ï §á@DR"ܪë!C×ÏŒu(z!‘TìÌ’›<¡~FòF%‚Dˆ#dÌÓ", ‚Ö¤¸Ç]˜›,¸¯Ì“Æ$‡M+ᎉ©ÊÁÚ^ŽH¡\¢N‹æ¸Dˆ‰)©Ï¤Š)Ü%)S’yfGM•U`X#BÔY„ÇÍ)‚CL‚Îi¡ÚAkRZ¸ sPµ•dåH³7ìÈ”IØlŸæ…cŒYÄ µ%ª¦ÂeÙ2Ï£„)ÙyU·_HÓۇ܀Ì}2…–°n¨$ëÀsáR6pÎ ~éAˆ š‚_©-ܱŒ1M[IVŽá|ûÝ©¶÷¸P„™šFêòm,죘SbáqG bJ£Õ›HåqW¸_!QC ‡*:Xís=Œ <ÝŒ±¼_z @ÞNoNh@ðk&¥…;ÅÆœhæJ²²?(|{#Ì"±:%„é>\—‰µŸ Ä¢hA2!L CÕ˜1<î óÛ0ÐÜRŸ#ɶÊ,yÑÏÜâZ üJH°œ`?"ͼ@ hMJë9Še‚9SÕФCìè¨j%Ü ÂLwó:? ‡=”pB-Šø0eJi¸p¤}!§}‚Ç`ðº–æ¢[îs=ŒàË@ ¤>¢¤‘@ hMJ w ˃¡‡›ƒ ÙÊvæcIk/ÜLxø´ãªÇ÷m‰¸ ‚-=î !ܶi¨‘ˆnrÀ¹ÝÀ .Ê—$“‹pùà “óÃû¥@ ø5 ‚×à ¤´p'D!˜32a¼¹2”©ÈçÑ¥LH„0†Ì:ÒŠØ(JÜ­aæVÓ5T¤p¬P§ ®68žÊ c«5‡ª:'üà—…@ Ä­šÜàõ#&ú3@RZ¸S¢`H£ƒÌAo©bNjX wŠGš@µ¡°,! ÜÂMN°nWý5c¢Zd§Îm6˜×ÕkˆÈÌÒyÁX;Lʦ ‚#žCŒdâÔuIDATVôˆ©tÄLD $…”î„Hsd(ÃX˜¶= ¦DˆîQLÑLÕDB”"ÀJ¸S™®h^ A,E¬²Óì#‘C®®7•8&áò@ Á!&¥…»DmAžVÔ 4V>¦¢/'Ø@–Âs¤&nP#$–ÇÁœèŠÂ˜FbyÜ Â[ª«€RN…p@ ¤)-Ü µa ƒÃ£ ÙÂʇVtç„èÑh30æ’ÆjÐTˆ)Ü©Ž5wVØM¤˜é @eØ©ÔW) QN¨?ɳ‚_ "›¡@ $‘”îÛ âáÁx lï»3L‰.eJŘsÔẠ`Qî”;Æ\W]Y!7¡Ùiö£›Äælj¢:¥@ÁbŸ«@ !*›¡H#!¥…;Á6Œ!¤aŒ7ÃŽÒí¸å€eF±Œ'Ïâ6‡eím!;! EœéA‘4Æ¢Cnö£sª8›ÃáV)¡&·ÚÀº„ÜÄ©ÓH³ „Ç] @¤´p' MC|{ïŠ^<­²Ö´![» sBls¬;\-6B[bUV"`£´Q5™H&г1»‰Í¤z“À¹Å>W@ à“ÒÂ}¯ÇÝÐì(¬,OmS¸ŸÈã.Ž@R]¸sŽùö:RGk$¬R q„;BQS&!ƒ£ƒõk08·U ©Ic£Èã.Ž@áNŒ\¹9 Ìý±ÌL4¢ª q<î–˜L‚‰w„Láq@ ¤‡pÇÔÈ"uD1K‹efr„‰J ÌÅËó(aÉ”HįOTE‚ø¤z¨ ÁÔ Ê~Dbæåea¢:ˆÇdD9‘Uv°‰sž©ªWvlÄ@ ø¹$Wµ{}¢ð“@ 89„;1JЋPü<î„h…$q„;Â6L9•4v0;€#ùK‡,‚_”¦ÆÿoïþuÛȲ<ŽŸso)¹Ý-õôt » ¸+X‘ØI6MÄ7Ê‘œ,”ì Ÿ@(‚ð+l¢ÌŠ,v´*2û H˜€V8‹ž¥’î±%ÖÝ€’¬¿U4Y«®¾ŸHMS—·ª‹×?žº¤xÀCù¿ÿ˳¯Ä¥µÊ ŒüŠKn•±ÖÙòY,v:³¦"ïÁ]Õ–çÿ÷ÏóÏ%é›S3Æœ[ý5PI¸£TÍœ±Î”?:Gp€©[X|°ÅqÌèðtå=¸[cççý¥ò¼|Ll•1Ap–~9KÜ.Fͼ±ÌQq€ÇpÚ?Íx@n`ð„å=¸; Ä þþm0¯IÁ݉s”9O îFJj%(ŸQq@±ä=¸«¢î—oe ¡<\&wÎ;Ê¿÷p4®l¬šÒ¹ËÍ>˜À(òÜE5ñÙoâ3÷,áIÎ ìܯÉwu%cÅ”Ï߬€BÉ}p×P4|u»/žåÄ{”ÿ‘üÍJVÊj$TÜP,yî*X‰¿8Khpcļ|%ª•9kEKƒ„g€Ê{p Õ83÷A]Ò`ÎYkσç‰Gd¤l˜RL« Š%ïÁ]5ãløÁºß$>Ѫó‰ÛÅXW6FLiðíª@å=¸‹–ÔÊsû:ñyÆØØÌŒ“ƒ»Ì*:Q‚;Š$ïÁ]%ˆ÷+§õ¸[µqê7+YW6Æi«Îe;O`ªò¾¹ŠjÉ…ò¤wk‚‹c—tDÖÍ*&1å¬g LQî+ßj)¥â®ÖXgÊgÉw^´ÊN”à9²°´@¦]qï´j­ÎðÇÕ­ý­ÕÏAËÏã/¿#²øD«66å” ÚUÂЉ†Î­2dò\Dú§§£<óô´?Ö+À2ÕàÞ{½ÚÙYÆB%T,:Mi•ÑÀ- \âv1Ρˆ+‰²« $É`‘SûèNû E1ÍV™ÞOދÆP¨Ä_‰K½9ÕX§åKÙ.&EM êîð°,ði µxʦYq?éõ¢“ÝZ­%÷ÐÚl6SÇ0R2?×AZpÔÆ¦§÷0tb¡U’d±€²5Íྺµÿ¢×‹¢H¤·»Ñê¬ÞZùƽ¿wýï#¡jüÌ¥w8 ã´oV K"ˆnN€‡e±€²•qpÿt3Ó°BEÑå¼ï‰D÷ÿÚÆ÷yùø1e;È@§q¬&©”îœ DŒZeà–Ìp@¶2î«[ûûWÿÑiÕÞýñêÖ1›%5âÊú)ÛAjb)©¤”ÒÃap·´ÊÀMÙ/à€LM·Ufë]­V‰^í쌵—˜•R(.– mª¡±ÎY—´»HˆCp€DY,à€lMw÷õ›±)•Å Üóä§©)©ub5í®Ó0T Œ˜=îdò­¼sªqa˜¾¤ˆÆ: E[eœ qƈuTÜP$ù8u)_…­Z2Æ™@Ô%—Ò«È|†“¦-ïÁ]%EŒû:ùiFCµ¢aê>êDBCÅ…’÷à^rÏ~ë¾Lo•Ñ’g‚ôD>pªPq€G°¸¸0ë)€?¦{sêäžÉ—ÏÜ×çiÁ]µdŒ˜@¬KIäçNJ"i›Ï2ÐïŸÎz à¼WÜE¬ÈyjÅ]µ¤ÖFÒv•‘Ó²ˆÁE’ÿਞ¥w[2*Æ:“rsª DK¢wKþƒûHwãB±Xȳägž› ¤wÈ—…Ѻáhšðtå=¸;gE")+µJhŒFlÚ]§±šPĹ¼7÷À“r:Z7|ÿ”¦yOWÞƒ»ˆ¤WÜ%4F¬º íæÔ3¡w‹'Á]] *%Iý&È0¸—²šðòÜÕQ*î%cµì45‘Di•@áä?¸[‘x”V½Ø 25¸›@­2(–¼w笈©Ç]¥ä4µ”‹ Dî(–¼÷+îêBc\Id´Š;­2(˜¼ä×f³ùÀŸ ÛZR äVJªR%¸[Ze ;/à€,å%¸7«Ÿ¯ÿàÜ7§§ÿ›úëFB«Jz«ÌÀ©ªˆØqg ¸á¡\DOûýGŸø)ÿ­2#1®dUFi•‰E¢1'xòHí!O‚»•’Qeƒv§fð3²äIpW‘’8çRš×cGÅÅãIp·R¶*Jê]§±wŽ'ÁÝHhEu©­2ËñïæÝ3+@¶f=˜O‚»ˆ œ„šÞ*3ç¾°iáOýþ鬧3ãIpwÎÃmÓ÷y4Þ5xcqR:¤ð&ÂÚ@ä|¤Ã!¸@îôO)¥@ o"ìgwçøö%Œ7Á=D#|ªsâÑQà©ð&ÂZ+2p釣j„}ÜP4žwç̈wõæ¨ðtxa­µÇ]©¸ p¼ îA ÔãNp@ñxÜ­µUFî(‚»-¸«Rq@ñxܳV\삞éî(O‚û°Uf”w ˆÒKÔ1j{ÿûùyé&d(/Á½ÙlN6€Êh÷þc²Ü0ñþOûýG{9È•¼÷F£qõóxÄ"£ô¸²5ù>:R;€§Ì›w‰EG‡\çOÒU1‹îÛYϘ ‚»u¥oÝ?Íz€q,..Ìz wþwuŽí  úýÓYOòΧàn„}Üà)Ÿ‚»æg“ [w < î´ÊÀO^wnN€¯| îBžò)¸Ó*oùÜÅ»Ã.x–t©¸ÀO>wnN€·| î"¢³ž0žw*îð“OÁÝùu8À'ž%]Zeà'=::Z^^žõ4nk6›³žä]£Ñ˜õîÁ©>k?>>^ZZ9::rÞÙÞÞfF`Fðx„¬É¡<œ^F`F`„é0Æ GGGý~¿ßï{Ö*ø‰à—­2òõ“ôÇÇ™Ì g2CœL¿ñÿ7+œÉ¬p&3D« à3‚;Pw rº;¹¶;w î@Ü€ ¸@p €àî§N«v©Õ™õd «Óº~ö.Ï)'ôóÝ8“\œãêínÜ9s\–>â=’𬰀g"³œàî¥Þû“èÕÎþþþþþþÖê¬gSL7}é´Z'¯vö÷w^´X­>Ë­3ÉÅ9¦Þîë7/¶ö÷÷¯]…\–^â=29𬰀g#Üàî£ÞOÞ‹ï£YO£Àz»ïþx}Uê½?‰Vÿ‰DXNÞ÷f6³¢¹{&¹8Ç­ï\žÈË«ËÒK¼G&ÅžðÌd¸€Ü}tÒëE'»|–5¾h}çf-á¤w¹XEß¿èõNf2«"ºïLrqNª³ûæÅúzÄeé'Þ#“bÏ ø4Lº€S›fgukÿE¯E‘How£ÕYå-äç¤:­Ún´³Ãióïäç¤2XÀ©¸{*Š¢Ëù\0/¢Ë²zïO¢èÅŒ§Sl\œcëínÔv£õHD¸,ýÅ{$[¼S2ÄÅ9¶Œp‚»nÞLB?Z¢ï_ô:?õèð›çØz»½õýËE_¸,=Å{$s¼S²ÂÅ9¶ìpZe|´ºµõ®V«‰ˆD¯øL=«[[ïjµ7"«[ûœÑñqqŽ«³û¦'Òž»áÙ[ç²ôï‘ìñNÉç¸2\Àõèèhyyy:ó0‘ãã㥥%¡U(‚;Pw î@Ü€ ¸@pÖÛݨÕj_8ÑiÕjµÚÆnoÆ“¤c‡ì?üðÍ7ßÌz@.-þþßô§ÿùË_:ï#í´þû½¬nµøý¬gHÅüüóÏÏŸ?*î@²h}óU$Òi½éˆ¬nmñEqP,àðÁH­¯¯F""Ñ«uV}(pø†à$ë´ZžˆHïÍÆ°WP,àð ÁHÒiµ:"ѫᮬüP,àðÁxØp_ÝÚY®z%Yù XÀá#=::Z^^žõ4ÜãøøxiiI¨¸…@p €àÁ(‚;Pw î@Ü€RŸ±¹¹ùóž¦×¯_ò´ôà>úX>ËèUrZe€ ¸@p €àÁ2ÒmV«ÍnQ† ÁÆÒmVõºjó¯øÒÃ(ŸU¦¿v,ãÝ}DÚkWǺ֞ü5Ÿ‹àãªl¸+}ü 4•ÉÇ9ì®ì boeûe³{ß#í¶\Lç¸aëksšâ~Ôë#ž*¯Ñ2°ÊŸ²EívåUåìp¾Zìã| ¾*;ÎÞ¿Ÿzöôð(^YC!!ûg__²:'„R¢5_9;Äc¼‡GàìýûK÷' œ½µö;]ßq`tOèëï^£Ý†"’Ôˆ²+†mPÕò»T^Sòâ…g{¬p¸NIIDD–ÿ–]Sî¸3nªí7V2k_OèÕ9«W¯Ž÷(ó1…TZSîÅ–_:…¬Î™H´º*Ÿ²E|v7qv8_;:_°ÉÉÉ!¢´´4??¿únÌÍKKKk×®]­¿Mrdççh}ýMÓ~òäÉZü˜R¢{ާÕõ1`ýüóÃùÖ>{€¥J=îP¬Lß9@]Bá×ÎÞ¿¿¾ÛP—p¾`Wª6$Ô+æÄ‰õ݆šQcÜëÛÉ“'ë» P×,÷Œñtg”¼·|Rwš’®[ •°(Üì w;€ÂÀ p°(Üì w;€ÂÀ p°(Üì w;€ÂÀ p‡;QjbTXp±°°µ‰©e·¥&F…E%Z~^\¼d]bTp•ö€[c3o«Úö …;ÜqR׆…E•Öê©©±%…:QêÚÅe74|}7 Ž¥þ–˜JDþAáóƒü‹»××®M õ¯¸¯hLBh·n Bnw(ÜáNåßÒŸˆüƒ ¢ÄDJM=ODkÃÂbS‰,×b)(<ÆmXl*…'„QjbÔâëòþAcç…W.ö‰£‚£‰üÇÆÄ„ú[^³61õú‹Âç…i¼nUª%Å-¡]œÅAá1þ{ÇwÙ”ËíÔµQÅ*lAnCC…¡2p§ñoÕ’ˆ(56,,,*155(OMŒ .­ÆýCcbÆú[ö©\Ë'®M%"ÿ±1 –SK-³Ë¹â.{ÿ±1×ßãÜyªø¢Äµ•Ê}¨%þcÃc®ÇrâžD"J]»¶¸%¡$Sc×&r4 •;PPxBLâÚµk-}-–ú½x\‹uÅQjÙMk$ebl,‘ÿØy%‡òoÕ’(•Rc‚™“àoóm &…†ùSéÈH‹ó–õĨ°à2û&îI¤  ä64\èq‡;“Pèõ.¢’ŽΗ^7½rÇ äOD©©‰±±QaaÁÁ•Ç×@]*îŠÑ†Ü†† …;Üa*Lì>Ï2:æü¹T›/lY…ÿ±–a8‰QeÆCú‡†Ç$$ÄÄ„‡ ²|Ä.ÆW@ý+Sªx8 r*îp‡ z$ˆˆ(qmñc—R-ÓCRËVþ¥{iTñÅ7µ^áõg8•í† -7òúß kÉ?((4<Ô?ÿ‡‹ëñ’D/íÓAnC†1îp§ 럛š[ºÖlhQÙ1éÁ±þc#ƒnôBË÷²—\ýCçM ‹M]›Tü¢ÄذàÒù=ì_;'pgHŒ .¿ÆlLÌÃU~½hhPlTb¹AîÅ_ÈmhÀÐãwÿИ˜ð Ò/þþAeîL {½w¥e+Í–, ÑšEÒ?4´t¼ŒhLÌØ2ý5åÞ êIPxLøØ’¯‚²ÙŒÜ††‹9qâD»víê» áäÉ“~~~„w»€ÂÀ p° qV™ÈÈȈˆˆ˜nsüøã‘D4`À¯sç^quÅì c6[Ûd ð}{z) ûÜp€ª³Ëˆ¾ÿÞS’&ÑСw¿ô’O}7ʰÞãNDßïYÕ¾Ðèüô“màUg¯…»ƒƒúÆ®D4l˜¾¾ÛåIVoN%"µec’aÐÝP öZ¸@Ãe³ÇˆXY43Ü w€²P¸@ ³1ÆÝ‚•DYEáP=(Ü †)â *rFÍÄ£p¨îPÃ̦•‘‰¿aÇ<”…Âj˜r£Â‘$ =îÕÔp ÷÷Þ˪ï&ÀÍØüCŽí,=î(ܪ¥áî'Nzï=C}·ª-íÒÛÎH¢D‚ÙhkÖH¨€¯ï‹ŒŒ¬°fåÊ—‡ ;8u*étÚ/Ù¼™ ¥¤$¶sg<. ÞTðQÃ×…n~ÉF€‹ù¢LÂÙ“Jëk½y·†R¸GDD”ülùØ·¯—‹ c-ô'OÎ**J ¥ 2-âû÷w­›v@•ü̉6¶<²¨Pb ŠJá^Ù¢Eï~ò‰›æ¦Í›©¨(ùÇÑñãmuÛ:°*aûSoÆÛ pOç¬ É{Õû/ùŒÊD€TQÃãÛ¤MíMJcƬ¶üÌóò„ ›wîê¬a`Ûˆ!N¶œ•‰T‰A€T]Ã-Ü›4Q­m>\?wîRYæ‰hÛ¶»w?Ü·/îph(œõV§‹±8++2Ã9ØPu ·p·¡sg%*Šut4Ñ´ik~þÙ.ÏàveãÉ©–— ¼QqXÿõ8@Õ5Ü1î¶õïïnyà®±4,ªdk‚öþýÝyA4‘þ™ª§Wg­°wèê€f£ÇÝB0›D^¯ˆæºiÀí…;Ô4›=îD$(¢ÈêlwÌ@(Ü †)¶+rYVNâx³ =îÕ€Âj˜ls¨ #I"£“Y=îÕ‚Âj˜"ÛìJE‰ÑÉáðP w¨a7*#Š¢¥p—0T P¸@ ³=†E£—9ÞŒ¡2ÕÂj˜z£¡2"¡Ç Úná>{v–¢XÝšœ,õè!ÑÈ‘ù¢¨Ö]³àFþ;Sd#ÀO7Ìó¿'àU×p wYÞõÎ;…š›.^dG–ãト(8ø½gž1ÔmÓÀÖœc#Àç½V$1‚™çšøþ‹¨:¾¾P,22²Âš÷Þ›6xð1I"A¨¸óêÕâܹ Sˆhúôå{ö„üùç}=zà’+@=¨à-šž_ù§d-À_¿J|Gg¸»Zýç#ŸF€TQC)Ü#""J~¶|lßþ„·7S9ô‰¨U+îÏ?{……ÅXýõ?뤙PQåÏÏvõîl5ÀS~îÐH½f8Ebݨª†;Tæ­·ÞŠòÐÜÊœ:ÕoΜ·‰¨_¿Ä… ¯89a”$@C‘îm#ÀÓÎßcTdž?r¨+ êná¾m›gÓ¦VÓ<.Î]¯GDãÆu óªÃvÀ 4o¬Úðù¯ "éDUߨW¨º†2T¦2gg[}0z=MŸîDDO?­u-ê§Úš •%‰Õ±¬àé„¡íÕÐp{ÜÀ^ɶ wÙ ‰¬Náx2ãLÕ€Âjk¶Õ•.D‰Ó),Oxr*@u p€ÆÈ’­æ"I´î6ë{¨…;Ô0Öæ¥Èdâô*ËÛQ p€f»p7I¯SYžAáP(Ü †Ý ÇÝ(šx¡p¨&îPÃnT¸K¢ SžÁw€ê°ãÂ=.ŽˆèàA;>€Û§Øº9U1Š&AÇ0¼Ùˆw€j°×ªwâÄì;~!¢iÓ®nÙ’WßÍ€R¬b«+ýÏß M:1œ±@D€T]í>951*8*ÑòcPxBxP ö‡ˆãþþöÛáDtìX;†QsrrkèØ@tkÎ)V»Òøô”! ÍYŽñpÎy,´ ŠjµÇ=õÜyÿ±1 Õ¯Ú_|1ËÚmKGŽÈC‡~W²8qâ¦Ý»­þòùçÆ‘#sçÏÏËÏgªÙ€;Ö-8I’oæ{QtÄq¬YA€T]mî©¿%¦¶l哯nÚtÓ¢Eùš›FŒÐÍ›·Ä`p"¢øø½{{÷é£ýñÖ[™þ¹÷³Ïz·n½üÙgÑ©P5·à¼*ÙðÔ3wɼŽ8ŽDPuµ9Tæ|jªÿùµÁÁQ¤}¡522ÒÆ«££ß0 D–‰¯ÔÆŽ•wÞa}}³ õóçúóÏœæÒÒ˜ØX+W†ÑôéËOžl÷ÕWÏM˜`¯Ãúêέ¸ÀHGÊÖ\n.ýÁéU³ƒ"²p€ª«ÍÂ=(<¡ejª¿¿?QêÚ°¨Ä  É¡ù:Ë÷Á·ßŽlÒ„­úýú¹^¾\DD{÷ê­½ÿÕ«l@À…’ÅV­Îee)ö{?.@ݹµç³wu0«:ש޼ÙÃC;“à•Õrúûû_ÿñü¹Ôj½tÉ’·£¢ÜoåÍï½×ìååED»v=úå—SÄ[9 ÀäœS̶\’̼NÐ+6îaE€TV›…{™) ˆ¨ºƒ%÷îuòö¾Õ&|ñ…Ç… cûõÛ¹fÃG77õVp'¸µçI¶àŒ$*œŽåÖzáN–OÓ¯íŽÈ9Ÿ!À¨¶‡Ê„ï &"òSS“AV‡ ЊîŠ2”eÿ«‡·°S·à¼*Ûx#šÌ¼žå‰Smî‚@+ç䮣„UkÌwùV¯·£ÚÇ=(<Çh´:ùW\œ‡ÏH"zé¥vãÆyYÛM’hæÌ<"2$ïÜ9tºÔYåM…Vg•TQ§c &^&~Üh7k»Iér32e·Ý¿"À¨!î½{¹pa®µ­GS¦8ÑÀÚƒ#-^x!Ç×÷k"zãç‡-*(À4ÀµN&~åòlímªÊ«²ƒN&Ÿ4‰ë“ÏLŸpÞÀ9:zvj·@D|}7 Xddd…5ááQ}ûNPUbn6«“’¸«Wóøa'Œ÷ÑgŸMŸ1£¡œ2Àí¡r€KŒpî´¨à¢(2:gÁÈðE6FÔ$%q¦KŒ.¤#?Ï´qÁp€S¸GDD”ülùxÿýimÚp7]µ‘zî\“’ÅË—›¶iÓp¯0Ø©Ê.3|‹&ªf€3’$‘ÎY0°zƒL:ñÝw¿óNÆ-¾”^ÇZ™ÃQM¤sŠ8½QVm=`ud°˜Å59™Ö® ¯)€ÎP™ÚóÒKNDíNTúgÀÕ«ì’%®—/ßED!!ñ]º0€»÷^«s @ÕÉ,o6iWäŒ$‰ªÎYWd –éÞ­õÐ0™™L£¢..~ÕÝЀ{ÜkÕ¯¿ò/¼°ºdñùç?NLÄ|5CbÅJáN¢(’ÎQŸO¼IfxÙhµÇÉ̼X䣸ŒT®ów¬Û¿p?vŒ%¢-[ÊÅú˜1âÛo¿záB "ÊÏw??zìXôÖÔ =îdMª^''ÊÄ›MV³W¼”™ãàcdc^¹0!ÀàŽeÇ…û×_+D´oŸ­Ž–­[ó'MÊ ¢¸¸ß¦N-7ò÷ß3»uKž5kiÓ¦×6nÌ*{n…Ìò²¨]LK…¢ÈèT®Ð(K¶{ܯ¿vUçÍèeSA¡v€]Ú´IîöZ¸“óçŸÛˆhîÜ‹7æXÛmôèæ))­‰hÓ¦§rrNmÛVº©];‡S§”‡þíâEÓý÷»Ö~“îf–—¬î’Èê6ÓçÈ ¿ó«~íx¾Òš\%× O*zèë½×ÞŠA€ÀÃ. ÷ï¿'—¿Ö¬CD‡wš4©¥ªÕÛ’ Lžü}Éâ˜1«ÿú«t dr²Éß_÷ôÓ›üüœÿ½°ö[ p§Y^µ»ÒEVÇ9fëœre†_öŽ·µoåt!³±7ë p²¹r€ßÝN}Šù¿÷f¤#ÀàÎa—…û±cRHÈÆ’Åqã¶îÙ£1=Np°ôÓO}‚‰H’„¹s—Œ¡/ÙúÈ#Þ'O¶"¢Ü\—1cܲ²po@ÍA¶2Æýüi£Äêd]>#d–ïßoŸµw.Ê¿ì×”×ˬ¬Tð¿ÿìÄ;J³G¿€;‡]î#GêçÌY–“ãADß}7⯿zôé£ý ‘@/¿ü-9;½û®¨XÖ¯[§ Ï×7ˆôzÓ¢Es×®ål¼ãÖ­ÂÑ£¶v€f–—­ô¸÷¼O5q:QÈg…"™áÏœÐp³Ù• Î7juõJ CŽSå÷vÍ$=qWÌp¸sØeᨬ\IwÝu‰ˆÞ}wù/¿XÞLJ;x'¢ôô‚Çó(Y,}ôѤ’ÅÏ>›Ò·¯ö½MyyôðÃÆŸ~Ú>mÚùW^ÉT”; €Û•™åÍ’öw_7£‰Ó ù©çšÊ ?gŽvö2™™ÞjÆ+Ç×C5\$r ºˆ€;ˆ]îDôÐC.©©íÚåèâRí³ðóSçÎ͹çž"êÕëààÁÜÝwkǼürÞôésbc‡>܉ç?ùÄp‹-¸íÉ,o¶Òã.%‘׉^Ùif–çíjšÍÌÌâ}]=Tožçå}=Å IDAT”ró¸[|pÿ튋á¤îöZ¸ßºqã¼>ø )-XÐvÖ,_Í}.]bY6k„¯,‹û÷‹š{@ =îb‘$q:£^t•3d–—¬=`533|¹¨ÄèxsÅà7Îkö si­Xží½æàpûi¸…{ÿþùyy·z¿QAúØcEDÀ8P®¯¥°ùä“l"ú䓜Œ í—7k¦zoßþ„eqÅŠi÷ÜcuXX(,o*Ô®È%£(q:/’Y’«³F2™™W;|–jV9V+xü†l£âpAm–›|Yóp¸ý4ÜÂ}ôèw#"¬Îï[Eýú™g̘ADÇ·ž0;{¶ô/¡Có|põúÀ&kGøðC×I“¾yíµ%O>ùˉ!¯¼âr‹M¸íɬòO‘æ&É$KœNâEÕl–YA%ÍݘÌÌKFŸŽú,w¯\cªàÚ®7s\¶³ëÂI©ÖšQàÓ—>9`n ¥û!22²Âš)S>ìÛw†ªs³Ýî»vñ½zý6rä·Däë›þÖ[³Ö­[¾`OD BÓ¦ÿ¼òÊDôÜsë÷ìéûÍ7£FÒèøiܘ&O6øùŒ‹›ôþû¢Nw“¸]Up3Ë‹³f€ËE¢ÄëDÖHŠYfy³•÷3û³2ŸŽ…FÞI©r€ì·íÔWm3uÞ}Ûnýæ›'m8•ÄÿÑþënp°w ¥pˆˆ(ùÙòÑ©wÓU;=ø _//åüùf%{^ºÔ<(Hû +Wæ''ï›??¦W¯}ÿûßç<ßöá‡1­@©Ê®pœ›£Y3À“Ibõ2‰¬Y53¼,i¨iÄf¤;thÚ¹ÈÉ(¨Rå— ¼™ãNµmz媧§vÃ,¾®et‘·ã O!ÀÀÞ5Ü¡2Œ]°ÀíVŽ ×Óûï_~à#D4aš‚‚îÏûÌùóÏ'QçÎIsç†ñÑpf–oÑX{“b’dNg–Mœ$˜Y^6j÷¸+ײò}½'{A‘*øº/ǘ9îßü²íçÈìBp¸ 4ÜÂýÛo=nõ #Gz̟ߊˆî»oà×_—ë“YµÊÇÓs0‹õÒ|¹ ª²YYÅ[ÓÒün½I·=•ã³vWºb”Ì¼Ž "'ëÍ,¯Z*Cé9~¾¾…Rff#A+¸³Ð>Û䙿ܬWsíéJ\&*@€Àí áî5å‘G";V¨°žã¨eK"jÙRo#Í££ '~MDqqÃ>ûìµ3né"ÀÀÌòdewÕ(š9ËUUƒ£™åÍFíݸì̴ƾ-òîëö¯@o`å8ru#£›Cºsö²ö¬2t=À%ƒ`¸ê„€Û€½îuè@DôÔS…EEÚÏ̳íÍ7³¶ný“ˆüõå—³¬íöÔSNƒw$¢eË–¾õV«vín²Áw•åUY{ºÕ(šyÁ|YÎNgÍ,'iÌK-|ëÓœeA­x¨7ßÌúïôE‰R[ú²—/Yk†%Àó3ÝÔl·»,ÜOŸf&L`ìHDãÇ/xüq[ÏÔØ°A"¢wß-4KWž8ÁnßNññOQlìè+W.ÿö›öKÉÉò'ŸäÑ#|7kVvvö­N-pÛS8Žd+ON-”^çR` huVaùÃj×÷ކÌÂfÞçóæ"I$)¿4ç-þx¿ŸdW{0ªªîûYû‘¨–×)&ÅøúÌ 8Ø;»,Ü¿þZZ¼øµ¦M/ÑóÏѩӑßמgÕª¬µöÎ. ÷À@>!a@ÉâÆýzôÐèÚÉÎfÞ{ÏgÛ¶`"ŠŠ صn]ñ šgŸ•6n|vëÖ'‰èï¿»¾õÖœ^Ð8Bf&ãäTЭÛ!ËâOl?þf†åÜQTŽc¬ô¸;0’ÂñFÒ)—›á\9À™ÌÌ,ÎÇM¢f=÷{ºgˆ¤k翳B€_>×Tx}sÓi1à¹Þç+¿Qq€ßsHe˜,Öëñn¿ ÀÀÞÙeáþÜstõjïÉ“?!¢^½}ðÁ¡â­§DD'Or>x´d±k×C/–N_°w¯yñâO‰h„­jwÃx{«­[ëßxãËâôé« À¬7 pc¥ÇÝ‘7¥»åfø),ïßÂP9À™ÌÌtòi¥˜©ÅÇ\QÕuít¸B€Ÿ=ÙÑ 8ËEŽéŽÍÙKÃÜ-ñzd9fªÞF½Š{g—…;ÅÅy}Ä ²­A’(=] "oïÜ´4ÜØpc*Ç0fí Ú9Y$確ççú)G’VÇ|zÆUÙ·c{Æä¹}÷ƒ"£[¹L­à'Š*§sÜ©¦¹7+:uEó½$‰ò¯ÉEŒcïe¸˜WgPŸì¸p¯ ½žV¯v'¢={Ûµ+½ÿÉhdFn”›ëLDW®ø,Zäpîœö¯bêÔüààUDtù²ÏÿýòK£ænucçNí{pže­<€‰“EF`”"ErUXíÉg Ïeå8ù4ùÜÞHŒÐ¬QiÕn ðNm“Aè—‘“êÑÂpB»Ç}êÔü>=¾*Rsœ= N!ÀÀÞÝæ…»5ß}'„‡/+Yœ??bãF_ÅÕ«l^^îìÙÑ–ÅwÞ™¹{·©ŽšXÞÏ?çùø¸üôÓ/÷ß/ge)õÒ€*R9ÖÚ“S9³H+z’ê¦Z™5R¼œ•éâݘ²ÏÊùd‹¬N6”NYà&Fáù€£Î>æs³ÊX|ô³_±ŽÙ®žAw!ÀÀÞÝ)…{zz¹Q.#FHQQ3K-Š2D#L7Vrs=ÿøãAËâúõÏÔÃo,)‰?ß\Täðé§Ï¾ÿþØþý‘ûаñ «hî‚ÙDzFÌóbUw…c5 wùJfºg£¦Â¥$Æ`4q"«“ ¥»Yœ1©f^hß8Ó¾­¯I£ÇÝàGþèbà2ݽ/þÓö®áî={edÜx7ÛNŸ–š6u$¢TccKêà ~óÍ5w÷"jÒ$cþ|c«VÚaºj•Ø1?ѤI_lÚ4¹^ž˜½aƒéí·gñ¼LDn{ôÑD\r€†LåÖ¬=« ošŸã#ðnÖîaUÓ3Óù4rLùñr†Q,!á—Ò;‘,žyÅ[föì , t#Ua *gÕ*‡–M+âÓ½}‹.¹#ÀÀÞ5ÜÂ}îÜ×ÃÃoõaO>©ÿ矎DtíšÇçŸ*=ß¾}]3Ñîݺáõç¥!¢€î•WX"úë¯'££]´&@¨mÝ» ëÖ·ü,Ëü—_îÛW»+‹ˆÒÒ˜eË„?ÿÔ~,@]à‰$+=îŠHJnf#ÞÕIáXƬñèk&;3Çׇõ9v¶Å…ö펋¬nÏ®¢ îíjR9¾ï”-=èªÐ\sb™€îñ‡Å"Þ1×ÍÛß3ö®¡î‘eXÖ wõªbe>±*Ù¶5js›6g®¿ÅÜM›J8ffš‡-$¢¡C çÏk÷ Ñúõ;vüMDË–…FD¤þóO=äþàÁôßíŸ~zÓÆCÚµ;9uêik{þñ‡¡woµyó œzóÍ[¾`P•œxâY3ÀyEdõæ+ù^‚»£ÊqŒ¬1ùŒ—iôðæ[ÿ׈ˆu0J¬îÉ'6Wp©À$8ª¹MvߥªçÕæìeaîëל9‘j7w%#£>|0j@C¹`Qò³%úßxã.]xþ8p ú(žµ«r€GœjÖ pAYsŽêáëå¤f2ŒÖPxç òðIu, yÆÁ(sÂo{ðf¹ßÀžiÙ[ËÞ=kjñ€VûüùîñÏm;È8{z3 —Ô[€»lÚ?©çÛžéñ(n^Céq¯,3ó©yól%ìêÕíÙc+×~ü1³E‹+DÔ½ûÑ=|ûô)^ÿý÷¨Qëü"ºûîc DÅÄh|è*1Œj›HD‚ ©j=ÄèéÓò£î2dã’%¯Ý{ïÑÁƒ÷<¨q!uûvá…✜ –ÅW_]º{·Æ5h€ZÇ«xP%¢wß½kÞ¼F%ûÜ{¯ù§Ÿ+YLHй³ÖÓû Ï™8q-ýöÛÃË—Ï{å—[=±ê æÏ'5ÕŸˆ>þxò™3{÷Ö¸¸üÄÒ7ß :}:À²¸`ÁâÁƒñ˜@¨Œ òŠöD½j"G1ŸãÚwÝYyV™Œ zczfHÓx>Åx¡yÎ;w]+Šo"±ºûï.ín·8'ËœŽˆUüÒòÓ|››ÎT,Ü-~pï¢àè"¸8ɆW§:Öø™Þ%Àóκ‘+}ÿéP8ÜŠ†[¸Û°aùøüó<ýõW—É“[”$n.šÞ¹ó;o¾9諯NþðCŽ··JDݺ•›4¦m[eð`yРŸˆhÔ¨õ­Zùj&)…†º=òÈ}D4uêwááwÝw_ýüÆôzÓ#ì!¢/¾xž±þüVGGÓ½÷7o±OÇ)‚€Ë¬PNåíPT‘Ó™ZÝs®}×Ä1ªd®à÷-sÛCúÑ×?úÀákOê’Íœ –Ö÷–g%…˜õëŸk®^ºÐ²¹zAcŒ{h¨[#Ipr72Ùœ×}þ·:áÁÍÑëM?­p&«ÍîïûÜ8Àÿ·ØÇÚì²pÿ÷_¹ÿ­%‹Ï=—°o_ñ•Ç•+ O=õÕÔ©«î½÷èÖ­ÁS§6±vùó}ž}¶õîÝçƒ|­í–šª._.Q—.»"# EEÖC·ÖÄÆJáá ÎkEDvoÝ:yï^Í+­|Hȯ……Î;OI \°`ÁÆVoº¨E¼™³2»N9]¡ÞÏäàe$Ž’4ü§Ÿƒ¿ž´¬ÓöTA×XâsQ¹4›?ßG§Š&FwÈÝãžÇþkÛBHÓãžšªf_eÁ¡³ïÙLÕK¼šSã'zC–ïîð²©é›¯,¸A€ÿéÜñ«ã)pÐf—…ûèÑÂܹˮ^mLD_}5áèÑû~¸¸k'3Si×î¤åg''C«Vi³fˆhüøÜ SÈ2:e"¢S§Dåø”)†¯¿~†ˆÖ¬óØc_¼÷^~­œ’MmÛò»võ+Yܼ9¨{wÍ+­òÇEÝèÑ_ûød|ôÑÔ‡j(7À…W8ÕjáÎë ÕÕ#ŸxbÍfkÞØÿ\þ‘‚½›YÁ[®Š•eÌ"¹¶ôØBö™Z4sÉÑ(ܧL1øûý' úöÿe)^ë?ÖØ§¶YœÏ‘³už†óN¶\>Çnôµ Úì²pPW¯6wér‚ˆbb%$èJ6=þ¸sd䤤ÎD4yòÇùNN‰h̘C†¥yùå¬ÂˆÈÓóóÑ£³IËÕ«¬«kÖÃÿfY7n͉·0?åÍ9’ì=uê*"êÑãÏÉ“ÏjÎH@D;^lÕê=òÈžK—šuèP×Ö¬]¸›Í*1—³î»qQ‡§ TZÅVpŸt©òä2'œ[¾d;ÀßýNù|óÁ(8h²Ëˆºus>qB%¢íÛKÓmçNÃðáëGŽü¶k׿9ΜšÚ4*j ²qðàuŸ^ü qàwî\ÞŠ¯QDD¤›[ÒÖ­Ü‘#ÜÑ£å®`6n¬89¹/_>ݲ8gÎ’  z¸[hóf ø·mÛSD4oÞâU«4wKLä:t8¹o_/"Šˆˆœ5ëÝ5kp¥êo´nNe$I$“×=š;=ª“Ê[fDMq€?óm×6sœùò¿žƒ²ÜÌf^ðqK«à:ÕÄ8Iýœ O5JkŸ£þÄøç×ru¹%ÀÅl¢×û¹œÉrðîàWX«'­Éàæœ5°S³dÛþÒ O^ìàyšìµp·ÆÁœœ ǎݽgÏ#+V¼š›ëææ–gÙ$Šº’™Úóò?¿´’Wùø\ûä“Ì3.L›váù糤2iùÑGî?ü0“ˆüý¯4jtߤIõ0)ÁÁƒRhèW¯¾º‚ˆÞ¹µ{§}on`YG3'H…ú ®SEΥȰ£_Ì»¯?ôèwïzèHçÊî ‘#wúžò\< ¯iЬUÇë—Í™ÉzZ:™¯q¶ü¿ßïºæÔ¨àœ 4Ýn…ûŽ… .üùçþD4dÈÆ&M ‰ž"¢íÛ£6nt-;1üÆ®þ9ˆÖ¯»iS%*j¾eý[oÍýçÙ|½hÚ´|w÷ÍDd6s?þxaýúš"Æÿ±©©¶>ˆ&MT½^tt,"¢_ü´}û<ÍÝNb/]r˜3çm"jßþÄðáß}ö™ötlµŠaeÍÂ]*”EFg6ˆé¾Lg…8µlán ðCtû¿„§† Ùè¥Ïû9mê”ÿÅšy¾‘»T!ÀUÌ3:ñZú™ÖQ‹¬¸^10Ì÷ü“ïìv²æÇ¸W%À±×ÒßtׯºlÑv€·Îÿ©ôp5ç#À@ÓíV¸p‡ß·vm( ´åðá¶K–8ÑÇ{4jTnOggõ…¼ˆèŽ8ŽÖ­cY;–eUŽ#"ÊÉa’“eËPx†QßÊÖ­E¶‘Q>³™¦MË2$ÿ™gògÎÌRíÝbb¤‰?‘$ˆ.\h‘——wì˜Æ%TÊÏw~ê©ÿ#¢W^ù  ÀE§«¼—Ý8r„[¹RÈËCŸ€ýQ­Üœ*ˆ"«3å)¢/µpU‰UÊN÷n ðîwônš9hЖ¿OÝo6{ú¶¹KåyÆ\®ÓÄÙYÕ«&O6-þŸD:Nt®éeÑÉÛœqƒÂ½–|hŸo39µ™ŸzÍv€{e^x¶…§’M7Q¸'®Z›˜Zã-©MšññÏ̘ñõí»³E‹ k{ÆÆf½òÊe"ŠŒþù/V¬xµ°Pg%éᡚLŽGÞkyÉÎ}›5³C{÷»v5™9ujU§Œ\¼¸ÐÉiû™3ÍΞm& o¿] ¹›{æL›’ÅãÇ[7k¦ñÑ¢…Ò¾}ö„ _ÑW_MØ´éÙ’+ËvgñâÌéÓÏ»¹ÍïÔI8|ø,@•ÕU€³fž4 ÷Bƒ$2ºÜ<}+oÕ—WUN-[ß[<éPçlƒgß¾;[6¹rô(Û4ÐEá8F.7¼$66K§Š:]ö^÷‡ä,—¥KgMzþóç'j¸N61.f•Ud'wOÙê<îµà™'¼3|)ÛF€wn›æ  º»xH9pÐt3=±QaÁÁÁaaQkSSkºIÅnî/õ={ŒkÖŒmÑâ­Y3®C‡ÔŸ~â‰(1±\¦¥1‹{üóO íßß­¨H]¹ò½zíëÝ{ï{ïÍ`U¸~ïÐpcÇÆQDDä·ß¾2s¦›æû:¤ÎŸŸõë¯÷ÿõWk_߸©Soü˜I¢Ã‡Å%KfY—-›~à€$iÍ"0i»cÇSK—Î"¢Aƒ¶ ~ÅËKã‰zYYÌ¡CMÛ´9CD¿ýöðC%~ýµ]>xoçNæÀ«‡wzå•åçÎ5{öYíß9Ü„º p…QU#ÎŒIduEF§æªâ­ªÄ©eGÔX\áÙó†–kÖŒkp®cGó_)nŠÀ1Ri{Zóöb7†T§ôÞá¿ uåÊÿõâ÷õ>©àzÙÈ:Kg’:³®.Þfí÷Ú𴛥»ø´¦Ü"rrÊZ€_=¨^b›]»ÜÚ@NÁ=~F€@e7Q¸…ÇÄ„ ò§ÔÔÄØ¨°°àààÚø<8ëâÅj¿ªW/aùòÓ§/'"ãt˜1Ã@DË–›7/½d·„áå—?/YtqÉŸ?‘³sáĉ_FDD*Jéß ]ºaaÞDôË/–,ñõñÑ~ßuë ÎnÝú,½÷ÞŒädó¥K7øÝ ª[¶ ²,nÚô´ÁPú}SÖ¯¿2]JKó#¢Çûõë¯[jðÌöþû“çÏ_DD_~9±{÷W®Ôìó·nçNiæÌ·-?{zfÿóÏZ¿""úæqüøü·ß.4qMà†ê(ÀͤjŽq/*0‰Œ¾ÐäÞBQ¼EeËÝœj p/¿,‡F㾿ï;sÆè×v“±fciQœ L ûÔDzg.“ú“‹(ÍŸ¿¨ëÉÇ¿TpŨ:ІM-=yW“öÍ©µྎi9.>ùçÝ2ÈgÇzí©ÉΜam·ï¢Ò|—•A>¶Û‹€ÊnjŒ»¿PhxLBBBBLx?wᄇE%ÖXËæÍ{-<\û&ŠŠÔ š÷é³›ˆºu;TXÈþ÷_s"Ú½ûÁ'.&$GØ1bTÔ Ë³Wóó]sr<æÏ_´iÓÓDEDòõÀüùgã?œ$¢—_ž7gÎù³gµß×hdJFÔä绦¤4Õ¼Z–,“ pQQá³f-9sÙÛoÏNÖ êÝ»ÅY³¢—,yˆ^}uÅøñ›4sðþûÍ™™M££gÑ÷/YòÆóÏ[#™”¤NšTVpüxƒëÔñô,Ÿ=Ûú›ožêß_{>ã÷ßÏÞ¶íptôcŽŽŸ Z3°?uàf^Ñ*#åÉ"«35j¡(™'X•U…2õ½%À¯o”môìÖíQæwï~xг[H`8Y,àïE¿$’ΙÏÌoåÊ™˜ùómÚñô¥Í*¸£bptÌ{áØ/®Þ’»¨Ýã^ÛÞÖ÷D¡³÷Èa+3Yï‘o±àüUó%çæÝ'3Yï ?‡€ÊnòæÔÔĵk£,AŸJDþþAAAþþ”š¸vmêM0² ËšÇÿ%;[­Lâ²a›6 K“ëèQiÙ²™‘‘Dd4:Ü{ï?Çw´lšüpŠ“Séô¯¿®ûòË‘DºvÒ¤¥Ë–iTõÿþï©¥Kgýùg'žØþÐCG’“oð»åy’$ó̙˚4¹Ò¬Ù¥W_]!Ë2¯õˆëAƒtoY~NI ܸq€µ¬Ìž:dȬgžyí7RmXsäæŠ=ô{³f—""";v<>`ÀnÍi³²˜>ðÚ²e@ûö'"""Û·ß±vm}~‡i~g4@uà"Ërd®à¦|Iât¹’ß{¯Òžÿ(,•ãn po®PÝFËSç¼½3UžT±l€oÙxMdt—Îúúød:ºÓ'Ÿ¼ôØ3àKwA IDAT¿zp9•ÜQ-âsÚ fw¿l%Ÿ´î!-àªàß\iöé¥i¯¼o#ÀçM.Þ}eè}þÙ`-ÀÍ ½š¥üÐ*SïÝÑÏμñ¥ˆ×";v@€Ô0­˜¹Ä¨àâ~ÿ  ÐÐÐ ÿ2›öœ'ò·òJ"""J~¶Dÿ«¯®êÕ‹×¼­þäIöÅ™””»ˆèÿ{ãñÇ—íÝ[¼ßc9Íœ¹lïÞÞD´f͸””öŠRœ¿óç¿ûé§:¢âh ÔŸ=+ÑÅ‹EÆ1nëÐáßôtßAƒ¶|÷]gY&ž'“‰FiÜøªå%­Z+ûGBYz=sï½GÓÒü–/Ÿ>qâ—o¼ñn§N7è°QÒé¸%K^ Jüä“—î¾û˜»;¯(ÄVú¾¸÷^RUÎ×7==Ý·k׿GŒ8OäWù€ ÂäÉßôÑ"úë¯Ö¯nÿþ{Ÿ|R#1## ‘‘3ûöÝID¾¾é ®þñGÛ­­K..úï¾øÇîÜÙ÷‡ž;6öƒ42õ̶C‡c%‹wß}ôĉÁ7õOúVýõ—yÑ"£$©ãÇsÏ=W訲: pËÊÄëX¹Âÿ’b‘au×ä&ëßÒÙ=iõ+“ÊŽ¨±ølu…‡‹¼f͸óç[) ëå•¥ ,'›‡ ) ðfIdtÎµìØ‘UÇ·-xýÍ5ã*¸£Zäè˜ÞÖ7NÉd¼õYYj¥!žÙoùGÓ_þéŒ/–W1ÀßwÚ¡´nW<›Ìxç=ÞÏj€—²Í.n‡.ød:)]ZiMHºßuôÛýãgE&¼êý@§?÷k¿¾hÏ_ãû{|ׇ7þ†¨A77T&hlxLLBBLLx™Ð'¢–¡á¡Ú㯫ÏÃãÁ×_×£o¾ß~{¦O…†®íÖí@bbñÿí'N˜Z´¸àá‘CDË–ÍÌÉñîß9;gÍbï¹§´ìþ÷_SëÖ<µháh0¨§NµMO÷%¢ÿí@D–޽žÆ7Lšô:Õ62ò­ñã4›$Ëê‰íÓÓ}¿ûnDddDïÞÇŽ¹Á„,K¢hž1ã½®]ÿ&¢)S>”e¹rèѧŸÊ?¾%)©39îÜé~ñ¢Æ~ÁÁÒÖ­}‚‰H’„Ù³—Œ¡¯¼›$ѵkŠåV" 8}õªYóžªúb4ŠC‡~pz„¯¦O_~ÿýÿüý·Æù2YY^%Cƒ–-›Yvlk9tHY¼øldäèØØ>[¶]¿^{f‰Û‰(ÒªUò›oŠW®`Xªª“—HH`*ucÊ“Ä b#¯{Üÿñ¡ ™gxU®àR>—[äµlÙÌìl¯¾ö¼õA¸Ê“ Håü¸ÁÄè E\r2e9Ÿ:ÕvòúÝ„¼ >itV9ºpW ||Yä%¥i ɰø¨ÿ¾y×ëõ󟶬z€‡Š:Cmöæ÷žØýKî-§ë½tq~i¹Î>¹—‹¬¸>ÓPèÖÜ÷™s¼üÞÕ®|ÏG4S.øº=¼¡A€Û»›»95<4Èß_c“¿¿öú›±p¡cåUçÎü–-!%‹ëÖ=ñÐCÅ_—/+cƬ;w®%%unßþò®]*9c2Ä«ìA~Ø;99€ˆ®^õ½z•½t©ÙÝw#¢kש*•äà´in½‰(8xßÔ©þ}úh÷0 ëë›þ裻ˆhÕª©vérƒË—ªJ‚À­Z5õ÷ß"¢˜˜0ŽãUë— ýüÒlˆ …—_þˆˆœ 5º–­}8Nž6íýœìlÏiÓÞ×ëëîá¦M¦^½¤ÿïÿŒÖöÑéøuëÆX¾€§N]uìXû€Þ¯ž=åÓ§[9ÒåÉ'·N™òa×®ëtõð\‚¥K‹¦M[ܧÏӟ}6!<ÜÕöþ99ö•ÙÙÌSOådg¯nÓfá³Ï椤à³}©£g8A&^+þó F™Õeøø7§‹Nd8†Så îÌ8¹“’:· ¼ÌüåœóàâË=§‰ˆ^›®‡GîÙ³þù…ü¥KÍÞ[9ËI6TðÉã…"rÌO£‰Ë¿d˜Y‚W^ªFán p·œ¼õçž{ÒokÕ|×çž¡6'Ú]ú©™÷³©î~*pòöU­Î%ßT¼¢xú.ÿfT¡£—Ÿa×Þ½ÑÁýlÏntèþ[—'»n2 ^Gà·»|ÓС”ŸÿÀ„ kˆ¨[·c11çKú9ú÷wž=ûìlO"š9s™ƒµh¡‘£c¹\·N¾Ü2ÆÍ-ÏÇ'óé§7}ûíH"8pËRÉä´f3µnòÍ7FkÃàEÑéÄ>z™ˆ† ‹»ûî3II7øÝ2 I’yâÄ/û÷ÿ™ˆÆŒY§(²æß*/¾ÈÇÇøî»DÓ§O^óæ9¸m›0vìæS§Ú‘(êæÎÚ¶MãA Ibš5»t×]ÿµis¦yó‹’ÄhN†Pã6ÿ?{çÅÕ=ü3m Û`é½QD±;bÁ’Xbb&ÖÄ{ïŒ cï±·h챬RD^wa{›ö~‚DMýçyž7ç“#wgîÜ™û›sO»ç-G>;uªó‰]̼xÑzEÑC†ëÕë \¾#—« +ƒùóÏDtô­ü|Ÿ;LJ…¥«T¶õÄz––þê¢ ee@E2t¨fìØÒqãÔzý+ýcc5C‡n\·næ—_nÛ·ï“I“Ìÿtþ•ÿD¡8i|Kq7Hœg‰GöýõëÑ$‚á@½p‚"Ev†3Ö³6ÈhWK×(œ~mU>|˜÷ñ‡WH”ÇÃpb>ßüá‡çf÷»$fto¼ü•Ɉõ &…Ž0éòkre‰Å¸\_ýÌ¥‰8[÷Ûåsó¥,0¹qD8?í—SJž»ÆÍÌ7‰mÝpeCw§Š¤.¼[~y&±­·¨èo¡|âëùÊßó?àüJóM$ÊÁ p³-ÀC²²¾AæžP}ò/Àÿoä_€ÿÈ¥â‡Ûµh+V¸h[÷ÿññ†>}.p–o¥Òþñc«ªvt4¹mÛçÜ¿i«¨p^¶lÉž=c`Õª ¿îW'j6l·nµww¿ôÝwúz„zmÞ<¶ný*#çI“÷„HAàÇŽ ùñÇà‡¢¨uú¦¦‚Ž+zccc¸~ÝÉj³˜rÿþþÕյޅU«–ÄÄXI I iâÖ­®£F¨®–߾݅¢ˆ¿ÖÓZ\ŒÌ˜¡7N›ðzXÖ®¥×®Þ¸qF“&ÏÖ®¾v-mÕ@…¢ÈÙ³ý·oŸM›>¥(œ ¬´óó£Z rÌã¸M›„’w–ýGö+A6nœ~çN眜€ñãwzx”VW[gzt45vì”k×}ðÁ†~wŤÿ))A׬aüñ]ߤ¤$šÛÚ¶}d0èkjlŸ˜ˆ­^eeý·ræ_ùÃÂ02 Á-–7U1Òd¢0Â!Xy¯ÿ™IGY «ãÎ#ɽ\©´OOða°ÐÀâ@0¯Uªèh2ñAk Ê ¦1ƒÁfÙ²%ÏSC@¿]9«>ÀW,«1¢B“ûhÔYªB¥Ø«Š­V„D+óø`~Ø¥ZY˜nÿ®~!Ë÷õÉiè¥,làO›0–æ¹ìËÈ$bƒu‹{L éJ–:ùj{t½EKŨ‚yÀgÝûvâðíåf—ÿX€{@±íjU"´ Ñ=À[Kß.îâ©,úà^þøÿ'ò_ü!K`àKW×2È ÿJê _|QÒ²åÊÑ£Ç.YòêÞ½Z*‚€Jŵ©?F£°¦†µj BQ$*êflìÐh¤ …\l-ÙA >ß´~ý ˜8q{ëÖ±¿û:‡Ý¾ý®ó¢(ƒãÔ²eKF: ˜¥­™Äúô9þÑG?ÀÔ©q¶¶™·nýiXïŒ SçÎT@À¬ n f½Ü5˜LÀ퓳g¯ *À¼qcõìÙùáá㇭9uªÁþ+ÿ“‚“r p³éÍÉÀš,FØ;‰¾P‹ãºHãկɜǚynŠFQf|ö`õ¥/cðz¡2ÎÎlÔ5”_Qж}‚XÂìÜ9ÞÛ=Sâ¸USë܆¯4b6’סÃ]*ÛY'´3©ßî-Ë2]n‚—}€!‰mÙ^øø7ÜŸÉSÛ4cäÃHLÖ£oŸªP€ƒƒèñEŸYˆ.§VŽ–——!®¾Ë¶L`íøv–ê†>\à06Ü"â©ÛVž‰ÿïßî¬ìs.G$;¶ð¬,xÀ© óOÜ1,¶dT§"žþ_€×É¿ÿ•ÿbÅݪ´kg³sçΆݿÿÙÐÐìþý×ÀåË  ¥¥¯ïwäHùæÍn°xq \ ®äÒ}–,Y†ãµ×Ý!I9§1Àš5 Z¶´nS¡iìÖ­®·€ž=R(D^^ï/J€ãèµkÝwï wîtÆqÌZ¥2ˆŠÂ×­›Çý»¦ÆîûïûõèaÅpíÞ­Û}“I—.õ^¸pùñã yZÁݽdÅŠEàáQL’¿Ú7äÕ+dÁK\i4þoà’%š ÖN˜°£gÏŸöí>yríIh0ŒZ°`Õ½{íïÞí°páJ £¬"Òb¡ïÞíÀ­gôz‘Ÿ_Qa¡•ž¤§£¯ºu»»wMMmÖêFÿaÉÍ%ù66Ë7oN?^ÙpCF.¯NIi~çNg­V¢ÓÙXÝñÙ3´¤Ä½î°¤Ä-?ÿõÛX]Ìœ©é×O½u«á/¼…ß%L$&63fÏéÓoíÙc=†EYšÆÄb]»vSRšS.X¹ß§O±“'-ÉÉaC‡ÍÍõž1ÃጠµúšývÉ˃I“´#GjïÝû'ëîÝ»‡Î›G^»öváwˆÊ‰D“öÍ)ɘÌFø€jGÑ4€ ¾Å8A[P‰¹ÿ³!Í_ôï¿æô¦Ž c©p_†D‰ •_t^ÊÚ# ®lÚ<^‹J6¯žRน0bBkÓ¾ý½ÂûŒ62ºÒŠÁ›¦±œÛEBÏ¥éO“Ü[z”çþF€»ªË ±W£lËS´i 1Ç*À[ûi„ƒ &Õ%’DI[sµU€ßÇ) zqäȈV­¬˜H†¸s§óøñ;àçŸ;Ñ4¯î~ÓÓ©O?U6o>Ï`ØÛ»·R©ü}s•e!+‹nÜ8ƒ;ô÷Ï5îûAÓÀãÑ oÖ¬o,Xe±ðx<*>]¸MKûÕm …DË–O¸šž=OO µò=lßž~ô¨•—W!Ü»×ÞÖVÕ«š“G°„„ßaÒ8MMm:sæ··nuHÀuZ=‰ñj:H²6+I€Y³¾ÝpzðC}€÷êD›0á³g>|¾âU'‹XŒÖX=a›ù¥–J<÷¤…äùE„"Ï#À},yA¦è6uÓ¼° pGÛ%ß¡²œÚ“<†pRÉIëJ¤‹ ¸Däa4¤|µq+ᨱ%k¬¹v3|ŸOm2qüöû>7ןe‘ºo|l,󵑪 v89U?þÉ÷ßÛUTX¾, ëÖé»wW§Vü¥Ê›PÈæçû:4‚;œ3'V«µò#Ð4ZScçéYÔ¨Ñs–EH’¬œP«E.\Éý[­–mÚ4¢þúÝU¬&½Õ—ãÇ G>ݵ«×”)fÎ|õìÙ¯ú°r¥¾[7UºçÏ´ÄÌž­™4ií¨Qºt¹½ÿˆI“þ0Ü’ô»ïD‰‰-zöüéÖ­Î?ÿlHNþG¢‡8ì(·Þš5f’ÁñàÇ(gq'tR ^>pcñ°Ë¯p–`p†ªð¬§:ãúÉÞáÃg"jòÀQKvŽ×á’W£êœ5j͘à‰ktFdXUÓÒVÀÓX±¸³,0‚j[•‡F`>!--I¿àly9ëbŸ~¼Ô­Ôµ‰ùÒ*ÀŸ\­V Š5½ð¤¯ý+{ZaàÕÏ+wãöLö]™œRZø¹9I›[M;²ÍèèXUdçï/Èÿë>»A€Ëõåò˜¢2ÏxIÇ ’Þ±«3­«D+¤^ ·}Ù*LãN§Ü³² ÊÈÀ†Ÿy¾³œU.ÍCMYÿÀÛZÅ·í˜n*Í|À¿¨Ø[ð£÷È®…ÿÕw/*Ieš=§5Ó¤þ ðÿùËþ¿¦¸ûúòOúxñâåЭۀ€Ò¨¨xøúë%%‘Ÿ|R;®_'ÜÜžN™² :mc£ëØ1Þή¢¢n°u®™U«´ ÅmHOܳ§àêUëd!¶C‡»\Xv@@΋>®®ïYVã8X,lpp6÷+ÿ\Šb¬n¼§P0þþ9-Z<™LšWRbåÁ%&bb±òèÑ¡0lØ‘‰·îÝûè›6UÏŸŸ÷é§£¶lyÊ0Fg犥K—€›[)M×a¨ªBXÖ‘Ìý¤gÏŸ’“ÿˆïÒ`° Oóð(ÎÉ `Y„30à8 YVæ F£Aè„„ÖƒÎÊ Z¼Ø®Î8$ÞÞ<žFÞýzÇέíN²ÅÅÓ¦m€)S6?|Ø®n³­7dêTmdä¡ÄÄIImÚ™>ýýyE|>ûâEÐåË1Üá¢E+Ô |Q”F6;;¤R ‚@ß„¦1a/^ìƒ lý®ÞºEq‹(Nœœ*n߯­ždêÔª¢¢ë7n4íÙsiLŒú/´ÜÀ²È‚«F: •j š¶òíaY`YÌÆÆ ˜@.¯Æqʪ²‚ã,gÁ0zÁ‚U®®evv5HCå]ÿhµ0hfȂ޽5•• 6›;WtèЈ&Mžõésqúôµ³g¿~ô *ËÊn?|Øxõê‘cÇV¼e c(( ëjf{zQÓËØb%KôÑÑÚ¸8ã;êºþÙ»—7lØáºÃÑ£÷mßþ¯¸Û i7ßÊæ')Ç} t3šuaEz8û‹ÆÆœÏ˜”éÖíF€_iTÇøÇ[“Âc-õnƒ«H”häø|РÓbT×±c|+"!p-¨ðœçÕ&Â&ø«ççg÷¾Ó½È@d°RU† Xo¦È wúdÌžÖM e¤ÊMØ`ÑFNplÕ%¹BEÄ ü£Q_]¦U€cÕU9YÞèÛog‰,ÙZ”gYÙ[÷¼T#sRÜìxúô >ö g©ïw½½:€ïw®7*ŽÙ¾téRµÔßSÿ×|@ö™ð°4»âÜÿ7î©+ÊdCKKݤKÃ>nkà^L©ÆÎeÚòÅg“ð–ádÒÛW!I–WdÉ–„˜Ì¯ìíBµÿÀéR±EWíô2¸±¿îUCºqÕ»²„!‘Õ÷{]úÏø¢¹+F 8 i„Zã;Þ˜ÉHpmó°Q»6tÂ{ŽÒ ¾^åêü/Àÿ”üåÿ_SÜoÝ2ìÞ=– HظqzãÆ¥]º4{ûONž´«k&—3……µñjF“$®TÚsi7åå.‚p–u£9wŽ·{÷çàêZ¶fÍ×GZ`£iäáÃv½{_€;w:GF¦=þž±%IàóÑ¢"ϯ¾Ú ee®Z-0v,þÝw3¸rï‹­Hlì¬/ýý™¤¤PN¿4ètzzSW×Ú>”–¢[·ŠSRš÷és1>¾˲׮uŸ:5îÞí@Q8W‹aÀdâÏ™ËýjêÔ8’ü}sAA€¢p¹¼:''€aP–#Â0$Iøøä@^žß¤I[êÝãÚÝFT*R¥²}ñ"bcç påÚ5+ßÃ-˜²2ç‡ÛÀÊ• Û¶}Äç[s†'O,Ü*–/_üø1ù[ˆÉ²Èðá‡'OþÎÓ³H¡p`Y+'gY`]\ÊoÞŒŠÂu:;;+“žeYàpϲŠ2u}0™°Ý»ÇþôSO–EfÌXo0Ø\¼¨ëØQÕ­›æåË×-*B¯^•80J&S½¿W¯³‹ÿº>üÚÑù6•8ë‘L¦2ä‚p6+c„ ÜB…ÑëE é%Ug%†±$I89U6iòÌÅ¥\(| wìàåæþuíª8põãÇa3gNéÐÁºvRZŠ066µsV"ÑVTÔN9tÈþðááb±®k×[“'oš>ù%éžï¸“¾Ìâ,›6òà‰&7ÓÝZ<8˜ñöµZ´`<ØòûFa#÷ -t&ËßnögþÙï'ÿÎ˹ðo¦|tÓ.Ês¿ƒ˜¤Ínà17æ~íµïdNá7÷Ò¾àÎúŠ à‹ +DôŸÒÇ'îxÀ›iŸf6kM{:£(xÙÀŸ'¡-3â§ÐÍÿGþÅÿÀÿ×÷V­x{÷~±hÑ pq)ü¸ÑäÉ“&ÙÔ·…´hAûúЧLù-ZÁ0üääˆvíÀ³gM(ªV Y†Áòòü¸_={ÖÄά A°-[&q?}öÙ÷))Á½9mÞ`:A€ÉÄ:8(¸ˆ|™Lm±°VËñ––"8NΛ·ÒÒ³³­ï!—³­Z•p‹‡eË–üüs—aÃjŸïÒ¥üQ£Ôµ;v·Á`#“©Àß?—Ï'YK#éÊ•^íÚ=äñ,\eɲ2tΜߴ ôêÕ|­A–¢p©T#˜H’@Q–û¨Ð40 ªÕõ¦ IDATJ¸¤L&ÁܹߘÍ|(*òŒ‹›ªÕ"¿ÜAX.ëtݺ™—/wíÞÝÊľ{ïÔéžN'€nÝn”•¹Z-Ëc2ÃWëvîϲì{XM&Ç)7·ÒN~6¢¨n!0 ’“0`ÀHJji0ØÔˆ›6|}Á×—ÍÉÑPβp÷:ûˆÑsæÄvî|çÚµî"‘^(üùÁƒˆeË&ŒYQRRÛîäI‚{dœˆÅº7~S5‰sçtööâ””£îîDr²ùôi¦];m÷îÚœœ×mŒF`”Ï7÷èqÕÕµŒaІì+Aq“B 0¡(«ÓYiIÓˆ@`rv®2ä˜\^ÍãY²×(Œ›//ïÐG©¾ü²aÛK=9z”’L0òE¬êœÏ,„ £W<´&ƒAFZQÜ ‚u1–°žæ ¾Îz‘—éÚR—šúF›·îeÎW:x-6]?;ÎÅcW.âO¦¿|ûäXÂ"µ9?ª}Ô½ŒÌvJžCi–•ï¶LSƺ ·°®ÙÙÁùù¾Õ„}³Fµóým€kËœe25âgô6¾zà?]îÙ®ÑCÏÒâå“6ÆG¿à+«æM·Y*Õ¼D •oÜ[[Yjâì\a´ðÞp'C)ë—.ôÙoªòn옛üöåîÞÅ›áé*7¯VQ7Ó;íJ•6'^=}»ÙŸx™Öõæ¨õÕ3Zix *!#°kØôõ­Û%;U¬yàþ¾ô3½úáÙTjÉ|à±_Ήl~ÿÚµî¸B$¼ý¼•>1 ¾èÞ'FsYÈZ#–ºÇR$\šÀÞµïØÔü´!€bN)·q±¡ ÞhÁ?ð/Fíý-WTª¸±ZÐ%âvPЋà;Ùÿ À»´¾=õ˸ ïàÿéôÿ’‘Ñ„+SÚ¦MA4è(ܶÍ^"ézýg..èèÑû7nœÆÁ0¦nênØ@Ž} ¶oŸxàÀô3dVÏÆ0ljj3Îf¿fͼöíŸÖß1ûða:,LÛ¼¹vÊ”×®O‹1…þ4ju÷‡“'-ß|3ãîÝpþ|¿èè;7oZ±@¡ÏŸË?þøw¶=.ïÚUû9ÔhM›¦qÊVMÝüù«åŠ\]K)ªU8ΚÍ|­V²ÿèààìêj¹®C³D²ÙÁA”œÜ ,33)wwB«ÝŒ :ŠÂ¹P “I€ ŒÅÂi«@Ó˜Z-ãàEÓ˜‹K¹Tª™={mXXºŸ_^ÃN©4;:VíÝû ~¸ÿ+V«§…„Ð ­¸ú\~~yJ¥=ËZiƲÀ0hlìœáÃvdýú ƒ¾×Æãq®bРӾ¾ùƒMC-Yµ±189U@PÐ ¹¼¦ŽƒK—>|úôi“´´¦8þ”e‘:‹{ý>`‹ã”V+¹|9&7×?/ÏïäÉÁryuLÌ剷}öYëY‹…7ujIgÏö?th„Éô~²TV"S¦ˆFáž=c^¾ 4ß»7kïÞO&Mšÿùç©©µ]5¡.€ÇÖVEQ¸Õ4;@F"Ѧ¥…Eá4q!°oI¢B¡‘3–ðx§Ø_úùóDh¨X£A:w6^¼Ø{çÎñ……^••±±ïwîŸf_CoYö$Î<ÕÅ¥SÒãJwý#VfÿhøèÚíîØQQŠ›à³â¿":::::zEüß{:IL´lÛ6qâÄíPTä٬ً†–M8³g‹`Ñ"©V+X¶lÉÅ‹}`åÊ…jµ Î Ö±£páB_HNž·{·‡§§õáFQÔÓ³¨yóX·nfbbp³fô‘#DM ²u+{ð`ÎÑ£CîÞí P¤ŽU›“ÂãÅ¢(sõj iÌlfyxÉ0µžVÎJAdHHVU•#à(ÊTU9~ûí¬ììàþý›7ãöö’À@!7…««‘k×èÕ ø°í¶m_êõ"³™P«e\¸…Á`ƒ l]ˆ$Eá|¾Y(4Š2f3ßÓ³¨]»‡2™º>‹íìx/_r9».ô½x1ªGêàA+ž8±X»zõ|X°`UDD2Š2PÏ0¦T"sç ++Q†Ay<˹söî}‰Ï7Ó4– ,äêy}õÏÝww'²²0(*B7mâsO$?ߌF!gá°U?»€{¾ÜE¹Ja¶¶*‚ ¸MõhNŸ¦6ožâáQìéYôÝw“¥(¥i¬. —»q“I é9¥¹î$I(•ô/7…ðx–3gtï~mΜXË"îî"{{q|< ]ºärIóæµÖµM›xqq¼þýùß|3— su-#òèÑ¡|ð`ĈC_½aÜ8ךFP”åÖ'|¾™ea7nÄ»u”—#¿¼EÀ²€ ¬Á`ÃÅÑ–”¸|±ê?šû÷ñp–e¹ ÷ðz¡‚ÖÙɺv-üæ›üY³fòCCŸq;¦ÀŠ‹NœÐî܉ÇĪªˆŠâÛÛ‹==…`±@ûöäw\«—¤ššcPaÍò€`}Ö÷Óf3!”Ph¬¸ö¨d6¬­p{[̉® ÙÒÒR·Þ›.9ûžs2—ßm~à~ú—|¯wÅéku.^U©` àBʘPÒæÜ…Ï_èw´thñÅoøPó‰ëmƋź§mûô«¹`ॷr4¬Ä%øÛê|Ÿô­såÂyV÷ÝÔ;iá…—j2eMƒxÅõî@*–-Á<ß ðŠSÎ"îΙûCù@Gªò/x"ñŽ]”ƒ¡“hµ=zTî± ðp"#Ý¥õ5>Ø7Ž´RÝ· ð€‚ŸÙ´m]õ’/4ævé¦ÿkN¨È‰ãßð»wžíö["ó Ib†r}{ó €óX†v;ºtéR’&ÞðŽØƒ³®ýËÊ\Ï›4Ö¸{ÿFÝ{ž”Ðò¯ø0äø6߯qS‡’Çÿ$ÀÿÖâW¬(¹ûú84vìŠøë‹:þã¤gOÁ‚k¯]ë×®u/( OåN‚`×­›ÊEKoÜ8}áÂCõÍíÚa°n€U«‘µkÕ99Í3æu26ËÒ…;6düøŸ|r"**%8ØAÌ+W2aÙºuEûö÷`ÿþÑAA/t:äèQ¢OR,F ‚lßþ^Y™«H¤ØÆ)©Ti±ˆ/_ÆœkŸNß¾põjHß¾W.\èÕ¨Qî±c¥¯D ²i“®¸˜:ý %%î¹¹þ……šâ/^ìÓ­ÛËà`çë×ù( "$—bôÂh>}jîÓ‡B¶eKÝ¡CvVs"ÿ´ü)€³Î,bfÝ[Š;E±øk¼:øPF×(jCGj]>s®>À]y¬¥¾Å!iÇé…×'ù|iâIØ:€cf’"ˆ]Ç%¬˜Ro?¡w5²büÇ¥ôr¨p™¥¨˜çy+þ‹nCn-[¾dö¸/Å”fóÒâ•+¥ï¸1O+4ÄÄ\fY$tp¦¡@,»Ÿ¢>ÀÝmª=X¶"OÑ» ñŽŒÒ'~Á×Ò££o|³yyØ*~‰–µÙ¸4ayÿ¡§Þ ð;ß=Ý@R¶Y/ssÅ/xA!Tj@@ç7^#»åáÑùц°Óƒ7Ψr{î§Î~7À%ü½ÏÏõ± p> ß)~¸ÒjqM!ÕHD:*´I}úøüa€ÿ›ü‚BŸŽ||:tô),Èÿ/U'}ûâ‘‘ž•0sæ®ãÇŒp¨/ â«W¯ˆŒ¼kÖ,_¸Ðz5Y–…>Ò>yRR]]~âDQl¬"9=Û¼k#¬®v^¶l ìÙ3&7×Ei†ŠÂ€$kOÈE9ðªªötìÈ8;3:4%¥9TVº””M“ CšLdLŒF£AÖ¯GF`ˇ¡CÛÀ‘#¶ÝºIËË‘ØXôâEL¯G>þ¸æÙ³g*UƲeå11<€þpàÀÆ~sež( ÄâÚujïÞ—XaYÄÛ»€+öäêZæîŽOž¬߬VË@«•à8E’Ìôé†+Œ={òoÝêß._ŽIMõ¨íB‚¹o_Mlì³W¯ŽŒÅø°%W èÚµî‰áÕ«¢ÔT{ΰwoå† Ú:·šH¤'IB*ÕpÏÂÆÆ€¢ŒƒƒEŽ={¶ÿòå‹OŸôé§Ç‹‹k§d2µD¢€,³™O’´]9Ë<À†WbMQM£ cÉÍõçâîÞí@H` MyùžÎQ‚ gÍúöâÅ>.ô;÷ÏÂ…èÑ4FQøÑ£5[¶¤ÆÄI’DQæÙ³&`±ð0ŒNJj9|øá)S6síø55šììj@V 0Ñ4f6ó}|òu:qZZøÇŸJK ×éÄk×ÎfôÅ‹ ½^ÀãYx<‹›[)McmÛ>:}zPxxš³sÅçŸï3…/_.X°ŠaÐÄDÑXñða†1J¥=h4R•ÊV(4êtâðð4 £—.­¸t©Âd*{òD«Õb‰'§J‘H—²¬º²ÒÒ¿¿º¦¦v,•V™Í|.MB©´7l^¼Ð»¹åˆÅ冹s¿ášÙÙÕDEÝlÚôé7ßÌmßþ^zz˜H¤ç^KÏ’•TUå8oÞš‚o‹…gk«â¥žžEFc}þ|? £Q”‹+M&žÉÄËÈp[wq2tèÑš;¨¨pÆ0š$±¤¤ .óêÕràêÞpÓ“aÐO?=Þ¥ËíøøŽ8N¥¥•+••©©%¬]MU•#מe‘Îdf†Ž·K£gd`4R&‘ÔÐ4f4 wíG’„ÙÌ7™#GlÖ,Õd¸º–Ý¿9fÌžÂB¯œ½^´dɲ–-“pœ:sfÀ¤I[NŸÔ¡Ã] £wîêÔÇ••N¥¥nçÏËeÀqŽSœÿ§´ÔÍbáñùÕ ƒÐ4šÍŒ§û ûýò§N#8ezÓ7ˆÓ$CÔûîø3$B(µÅ"úöÅ#Û8štËäújéʃ_­’¢ùÜÕœ<³¥>À1ÒB+f€Åáb¾°·wæ=~àîDz¹ÈcÁÖ5R©fïž/NÜ“*mÑÁåÙ;> ºšô!¿]JJó´´pÇr¥Ò Vg¼ p9©”Ú8ÞîÑ£-ÇwHMb1O­}àNÈÏ¥„{om4@ÿnݲ.l_hIÔ¸¼BdoªðÍ»¦TÙ»» ëÜ_•AùIþ<À3*07²Ä%ëÞ90-›ÉJè`4 ëN{º7ÖfÖ¸0¡Tè±ýö|7·Ò+—{¿l‘ãÔ4Òá׿wìç—6!*Ïæû÷¾v­û:BN)óžoÜ™©ˆ®º˜î,•jd2ušÂ±Œp‰ “ß ð±‚#·Ú ŠÏh¬ÑHe2õ“&]û3ßx„â~ycßDi‡èÔég›ÈK™ón€£(£õ’z+rê<ŒLÎ÷hlcc¨x—.··O™ØX—õ>Äþ§?æfšÆŠÓlÒ›…ý€Gio¶kûð½oQ~_ˆ2 ªÑHS¾]µÏiÔYMÿ·Þ´*IãFK$Z‚ ÿ¼<Á¡}sìÖ'€ìYyNíW]#Ç0ú‡]Q%‘!úËVÞ5êVÓ¦O׬™×¾ý=2‰hƒ&Àû.ô1k|Ãh•ÊV'“~n8øn€WT8— ›vV\­p¬Ú™®Èæ×xë&©›x}€·–e–á®×Ÿ;±,ÂÃè3šNÞC ¬|Qå ؾ|h$…³Cv Fö½÷†‚;';×Ü5Xød—mÇ}>?sÏM&SßÉó¸1d¼lןøß©¸æç{yûøx{åç¾ù÷e ÈÍd2[«ÿn¨Ù´i7n - •J­ÜàÛ'騑˜6-xÉ’#ðõ×ÁíÛV›mÛÆj4&•ÊöñãÖ4ž>ÍLœ¨Ü¹Ó¹¨èØŽºîÝ]<3gneÒÒÂQ”aô›oæÞ¸Ñ-++dôèýîî%‘‘÷×®øüÁLÖ.$$rr¢hCQ&++„óN¶iC._.KN>£Ö둘€&3Ó «WKøávïÞjNGÓØÕ«=0Ì2w.²|¹´usC?¦ûõÓÛÛÛFD¨êrê„¥iÌ`p\²d$$ôxõ ïÑcéíÛþíäóiNÁ­©±C¶¦Æ.,,}óæ)nn¥9\!e6nœÎåž–—»8;W„†fzxïÛ÷y»v  £¹Ä‘HO’ü=Ö\ºÔd̘é:Šã P8€ƒC g€šÆpœzþüÕ¾}nöö›W®,Ÿ6­¶øÌˆg€e‘¸¸©Ü«°‰o³}û¸æÍŸ„†<8JK½5­Ö&44óÕ+ßW¯|„åóÍÍ›§pNFn­EEž ƒ†‡§íÚ5ÎÉ©Òѱªsç;ÜÈŒ· åª%0 ÊuU*Õh42±Xg2 òòüh㲑^¼Âq ÃèâbObÎÏÏwéÜùVlì”&MRhS*í'Lر{÷Øêj9M£b( Çq6<üê¥KíÃÃäòW$Ipø9k IW®ô¢(E™Lm±ðž?od±œ³‚1e6mšÆúùåÍ›·†Ï¯Í¦Ÿ;÷ £GŽ<8|øa.D»°Ð+)©¥N'¦i,1±U³f©íÚ=T«e$Iäæú'%µÔéD,ËrgP(eYD¡pxðàƒ1cö¨Õ²òrçÄÄV¹¹þ<žÁbr£QÄ™çŸ>mj2 ¦Ö'Ëm¤`±ð*+ ¢ÂÙÆÆ ‘h’“#ª«å&“€K€‚ï+Wz9:V …ÆÜ\.ÈêÞ½ö/_6nœññǧäòÚª|®®esæÄ~ôÑÉŒ*/wáT 𯏝)ŽSz½ˆ ÈùóWs‘K mvíÇA 0Éã‘Üd‘ÉTÂrãÉ0(A\Mú;w:sn ÀôäI‹ª*G–‹…ǹhsrlmUk×Îæóͳg¯mÞÀ}šI@+ò_çtb]§¸×ÜÂçñÍFൗ³˜iAíá¶m¬^eTñììª:€ÇÄŒ+*:å*¥ÔùÓ?zðÂB§A­Ï¾ø…šCBrƒ‚òrr£NÜ,§•KÀ%’•2.:Њ¾êK—!!ŒE*´Ñi½½gÕ¸U]nã¶öœeùréÉ“öÚšÄ6|¾_?}ß¾ºˆË ¾ÆÆÍ±>À-Z¡r°·SVöè±tñâ1í$œØP]ú¹çÔx\ÜT7·Ò@ÿ—oÃhgçŠ~g¼= ÞxiYh¦°Iï–W{ôX3|øª1c¦7¤äÙ©Ô¶J¥}À+=BÍÏl%åÏ3_ÅÄL±·ßlÊ/¯”¸·ôIJNŽ1â XàºiM¯>ÀKJ\‚°œ"¹ßÕ#}‡ 9VZê]}£é3Qø„^‡œ*ëîî^âJ”­q_ö¬)Eá…—ä.v\‚´`9€;9V¾ p>ßYrc͇J¥½“S¥Tª¹ÈôìœÅd…Æ:€ã8Õ^yëtQ´"ß‘‹‚{Éxjžwèüó«W.ÀåeÕëÇ͘8q{À„ÍÃ݃kž5jq›$ áá ry¾_éóJw{…¡àJ¥½'^:ÔxJ$Ñ[,<™Lm6óÚæÝHkÒEàã¦s=÷óË›?oµU€ÛP†,¸ Ð{úôu÷óËëÖöFpÉ à©càÏ"Z·ùÜx‹…§P8 ¯pŸr…K}€óùæ0·§6ŒþRZ McZ­„!ñW¾Êžóx–úïhŽ?&zòÆäÊJ'†A «¼ÒƒÚ´ª~PXèÕÀ7nœž›ëÿØÔö¥ °àŸ||Â*Àw[Zìl2 ýYßÁG—Û¯Õ].L×*À]\Êó\_ ýG·9IӘœÊÔŸØ_þÙ³‡Yð*½ãáÒá^Þ¹I 0UU9vFn?ñí€ÔÔØq];ç €c=Y~àšoˆ¹oú#M莃¬\(0ÖÜ·ã+êpî܇3f¬W(>ˆ~ð6À1ŒŽÉI ããæ¦á³eË$'årÆ`wèp/?ß7&Å0š[ pÞ?¿£QèâRÎѹoß \³9sb¹’PpäȰÐÐLî·{1IŽ´µU<9¸îä'N|Âiç6|MÓàUUέ[' –­Ý`ѢܟþÅý}ò^€Sèëí•3gpš„_—m¥Ü ~mMÏVaFø½{¿yKà=¿÷ºFFQ4þ:‰8a˘ Xâ/ÿoiaµHç®æÛf¬àµõo•#©Vk䉉зowàñá©Í‚\¬YìVU6zôþ¡QG¥YÚ•]`àKŠÂezC©Ì‡xFÅ<]ÐÔN]Tp/¯B7—<!vìy½€Q£‰¡†• õNh™j‰pÎSÊÈD"½fɲáv~t?Yƒ{hò P—ú§¨ ´W KMáÌyëNž|ôØÐ¡mk1)!3Öøòå‹)iÍp”Åq AX‹aË˯ùÀ û|û@‡rÝŒ™ë32tZRª©pô**jTTZp£Yø’ԧͽ¹K—ܺÕUm”Ù(õ*™£J¥îÚµðã†O‘Ñl}€+²rE…ƒûúõ¢—/7̘FÑL®S¨C¾®¦Æ®àééa}æ]<ÇôåÎÅæ eÆ‹Wû¼ ðE VØbª¬•+¶u|ÄE±¢"ßì*¯*¾sçb³™_p/—žî?éH!ðœœBï>¶Œ*2ð&‚°ÉLÚŸw£ ö€c/pqNUtw£K<±¬öíïµl™ÔÜí‡fš¤sÏ£œªêŽ ìeS®Š«ƒ>»àç—Çç›û}þS7å•ý/¢(ó6À·lT÷†ìÙ=¦à‹¾]‘ÉéÇÜh¸CÉÌ’o‡L™fo¯äóÍ^*c¢s{¹œ²Xä \ 05áU¥È[sÏË‹”É|.WG7+y¨ÑHë¼¼±Ëz‡¯9€“¤ÜÉIwFÕ³uþmßWryµkè3c®»sI}€Sβ€ó,‹V­¨øÉSƒ_<ß À9çÏÉ­îÝâóÍ|¾ÙítíüðÆiõn4 …BãcÏNÎÏ,…Ð4&g…¿øWó }|¼ÞÓüÝ’œLNœX"ѶO>©¬²R÷o’ £9[cE…3I_~¹ ®_~ü¸Õ‹”\ÎvëF1 ˜L‚/¿ÜöÓO=Ož¬ÕJ '­VRSc'È=<Š+*œ ªÊ±I“g H¥¬DR›±aôêÕó9M‹‹™3'6)©å‹µÜOIÁZµÊàR¹ØJa-–×^ë‚¥6m2L›¶ŠÓqwîïºq£84T¾fͦM.2;göl>Ÿ?þØ— |߸qú“'a‡ñÇŽ Z¹ÒûÌéÞ½î|>b±<<о}‹Û´I8yrðøñ;ÏŸïGddä}…ÙÌGV êtb‚@vïöš5Kž‘AîÙã¸j•ÍùóÑÇŽ €³gû_ºÔ«U+iF<{ƒ‰-’oÞìÜ·¯íÖ­."‘‰ 4"òäÉÁEEDG“ RÙ^¼ØgýúÿÇÞYD‘·ü™Ú^–îF$Å‚S±ã,lT¬3ÎS±;ÎÂŽ3ÎŽ;ã5ÎÆöìDºs©í˜™ßíè{‡ïáýöó ÃÌîÌìg¾óÌó}žé©©nÙ8®g’}U*>'sq!çÎ¥ƒƒ)š‘HÎ^ (ÔÅ%)›3qâöàà;b1=c=c¸¹QÆ}˜nß½ûÅ+æwï~ÑÍ-õîݶNN™·o‡DDìOMuKJª×¯=jTƒK—ø‚¨T|&Ø©T 4îèÑ{oÜèpàÀH™L @ïÜ)9tHÒ¨êàPq|‹Š,}}㬸\àñèùóM§MãÞ¼)˜?¿þå˸8Ç7oÀýû­1Œ¤iîñãß~˜‘¡[¸ÐvölŽDÂiÚ¸\œ €].M#óçKš53_¾œ»gÍæÍS¦NÝ´uëäï¾û¹~ýgçŒÃ‡Ã½½ß¡(eηßþAè† Ðà`,&ÆaØ0.Ž#<„M#Ì0šy¾±|9oÞ<Ü\¹XŒ]»Ö‘YC~¾Í»wÞÌvv¹(Jq¹ÈÕ«‚Ë—…8§fžKdg;à¸~ذ_îÝksûvÈ AÇp\¯7ÎÿÞ=@š‘uq±9‚Ð%%Z-gãÆiVVÒsçêÊáñ''àrÑØX?f»r¹ˆÇS[[¬Z5×Ý=Çõ‹-{ù²QAuDÄ~oïü+ˆzõxsæ LìœÃÑ>ˆ¢“‰~òd†Ñ¿þZÿÅ þèÑ–óçÛxxp€¹µc.Qsæ˜uê$X²»tÉ":Ú¡Q#J"Á;uëõ8ò‰ä8®wt$V®týî;ŸÜ\uV–ÓªUs`÷î±7o¶33+™:uA蘙!Ó§SĪUdq±9Ó ~û­ŽëE"ù¤IÛ¾ûîç¤$ÏèèþÌŸfÏŽjÐ@hcÀiÓæµOüÅ‹ÝÃÂNÆÇûÊŽ¯•—›0×ì£Gy½zù;&a²ö§NÝÄåj8-‚|è7T›üm“(Žè+¦2 †“:™¯,p=‚«•îe%¥„¥žƒáäfý‘ó-CPROU ,E|"óhÅô>Îq¡Ó` =2—q̰"Ü p_߸«‡:™–”™8TxØÄ“7^w8qbÀbáÒ늎2™ØU›6²ìàœçåÙº¸¤óóföU~ Ñ—£߸їŠJ1ËÊW M%êâßkYYàÂBE©Ø* ¼5«J_y521)Ÿ~`U[l£›:Y- ¨"pÜ-ÐE‘2±×÷É#†äfˆÞ›ú}Rà÷Ï´¶§rZ·¾?oÞÊb­ù@·ã¬—¹xK2 '÷ØZV&™Ûc•u^†ÚÙÿc§š{óÒ‰3Ö…„Ü./2—˜Ø@%Ÿ¿ØsýÎ? ÜÕéµ]aZR¯²À“ø¾VÙI:ñùïÖý7ƒÀoß ±t*bžœæQEàÌ{ÅÒëqƒÀ½h±üð‚*Oøpå–®®iEE–ËWul™võ†¦‹ÀþbµyAõÝ»m]ÜÌK‹ÝÑn üˆÝ(ñ¯$ŠReeÛê‚u¿Ï8‚ÒŸx–°žT`˹;ÈÑ1‹¦ç¸7w¹ßÔ,pŠB-²âÍUx288ëÒMÅe•~çQpï¡g+ <•tÑ •ZT\lîêæÐ_©|Rà\žæƒÀ‰jMuëžÿ3´„ t-K¸©R‚þXà…]›$Ýt÷HÓj9ÁÁDÇ²Ë 'õüX௼†µ|r.Ô;‘ tãÛä5Q>ɲjÁ*ð—×YI §NÝôÃ[Úyܤý'&Õÿk_s¬¹;^ë9é|qtopŒìùÛ”)›ÿšÀ¿ääTWç´ÃwÓÂ]áî4çp׿µ²)S¨_~ þhfV²nݬ¨(“OþWíBÓÀåj˜ÂÌXyþüvòâÅîáÉ,†a`È oÙò÷éÓ×oÞ<ûõk®R©¿~]°føÉGxö¬‰……”ÃA +g66ùLõf¶ÐéÓ}—,YRXØ„Y¬qcòáÃz§O÷€ÄDOW×4C?&ÆÉã}¨{óàA«ÁƒªT|¦BKÇŽHÇŽUxq1 x<<üpJŠ{xøáo¿=—’ÒkðàŠ‰ý>>ðêO­ÖóxBáÑ£øÔ©›ML8¥¾±{÷XèØñZ«V¶lá¶o¯çñ*.™&&´¯/yè§wïskÖÌêÕëÜŽÚµ»™“Ó©òÖƒ‚¨  €”É8›6-¦ã;ñc33ªQ£—†IëK—.<ø(“ô"•ZäåÙº¸*ç 2™Ø×7¸\!e4îðáÔ÷ߣ®ñòZ=pàq›ügÏšìß‘›«õóë2höüyÓ e¿~§{÷í[±+x<µR)4è˜R)pvÎ`vi»v7¿ÿþ§;§`\.Èåâ{÷<àÞ½6ŽŽYþþľ}ªDäëK‘$˜˜”‡†^€”÷ÀÀçiiΞž”§gÅðeøpÎðáÀ "y<“ÜL:•Šïë ƒ3‘|úÔ¬qãZ-yéáînÍ?~Wd$ܺ•?cÆ:&¹ÁÉ =~œÉÀ¬Y¼ÈHÀqNçΤTJ0UqLMK ­pœnÓF11â–-Ãt:"$äöôéëíís˜¤&Ù*ßÎ.wß¾QÙZ-Çðuñ⥿ü2 Ç¡sgSÉ¡¬L¢V󘸆‘iiHb¢ÞÓ“ óçsæ†ñKJ;‡‹Dò¶mï~ÿýOcÇFFbŽŽ+V­ÒŒ£Y¼Ø¬[·ß„®__sé’9ôí …mܨ”&&åcÇîfæf½Odd¨\]+Æ“&ÑôÁƒ4M#†÷OQ¨›^‘GakKŸ<É£i8wޏ| IüLb«¡EHLŒUçΣ‰ Žë£¢f÷és|}ãfÎ\7jwÂÀ¾ùÆ<8xÃÅ‹Ýãâ|I’wë–]a!8>'GVZ*hÜx×™3}.^ìÞºuúáÃÐëÇynk×b£GïurâëtÒQ£ö1 ¾3räss˜sý¢Å˽÷ÖÎ^Å Co¸ÆÉåï|µR/É탉# —¥YxUx©ÞÙTS¼ÓcôN§ñd6Î~7äŽã–U>²LàâN¦˜{´ç ”OWº˜–äÚ5<¸ât­NàjDÑ)ôò®Ýã F?v ôy³-_ò´}ÑÛ˜"·«H‚Õ¤Ê[g~ý‰¯0µ¸+rôö툕Z•eÇÙWÌd®Nàö“êJXží3½’ÀŸ+Ýûí·nRPZbö×>aòæ_>ø=n+Q²……ôýûú5<ÕÔ MBPêÎóoûC‘Ès‰¾•?2#ðD‰?öžº–ۑĵ:Ê$Ö¬q0›Àößú6"ªÅ;YNÓ”³§xýFÕžÀ5sðnÕÅzq›ü˜Mv›³ |näªÐv¥©å¥Åæ¾¹¶YWAƒÀŸð›™eRà×±½òΞ6ïÛÿÔÚ9fQi©µ)ðÞîgE¹U*KøSÍï_° ¼‘—î=]ø Šæ•]ç\5ë^ÀÛ:ÝÍ.&Üp2Y“œ}Ó¬SuWs9×NûB—"•RUà+×Ìû;ÿ¢©2Á :Û±ãØCÎ ÿVI™²2„ Ô Vtg ¹›[+ï­¢¢°}»²réRšF˜ªCÌdgfà¾{÷Øôt™¬â̘7Om¸é€wï¼»vå€@*’•åÀ$'PZXh¥ÕÒ†•cï3zôÞìl‡ìlf¸Ö Á¡Pa(ìøô)þÍ7qL(‚ËÕ0 ÜÇ¡(e¨ÉÚ°!çÉ“f̃*’Äš6-bý°¶¶ÈÍ›íæÍ[ Û¶MŠŽî׬YÕ»?õdð`}|<ÿÑ#ŒÏ§ÇŒÙÃüÒÓ3ÑÛû“]ùž! €¼¿%ó|ÀÑ1+9ÙÃÁ¥‹CYbjª^¶l„.:º¿¡¢Vß¾úW¯ÅÇû0/×­›Áç«23 6ÖO©þ˜~Œ ©2‰‰žŽŽYåå&óç¯Ðëñ "cc-^\¡TúÈ‘2/¯÷œèÖíÒ½{ ˆ•-\¨Y·Žgh:øèQ‹ë×;û!HQè¤IÛ¦MÛèå•`èÉéé.¡¡cAÒÒ\˜çh&&åYYŽz=Kýм<ÔÂBÆ$Þ xrìòñçÍËCßñ½,3R[EüÒnÚvËä÷¯D/©¸{Ϻū޼£ìÚ5¢c- ü¡U§†º×åɤyV®åñ-Y>Þúq«(ŸæÐ-•¿¿Åü«¼£òZð¸;ii®bDVƒÀ9 :ŽT” õbü¸dÔªÀ[õðìu“/;ȨAà×Í:’Å÷”ò~é:'¤:jüì NG4}så6¿Õ¿Oà_8Ç=xáµk×®]û»• %: e-Y²dòä=zð>ù_™áÃK(êHL¼6}zåñ.­Ñpy<µZÍ35-¥idíÚ™0}úz+«B“ŠCgeE‡…öêu.9Ùcõê9÷î…FEUµt:¢Y³'ðÍ7·RSÝp¼â”òð fÍZcØÒ?laRÇòóm=‰?ê04mª¿sÇ‹¹G”ÉÄLyAfÊ#“"Ïù#kæÕ+õÖ­“¼à矿ËÈà2åi«‘žž‰·o‡À#»t¹zïÞ§»BüðƒxæÌµÌÏ¿ü2¬´Ô©A–‡=±±˜½}s£Ò¨ÑK½/(`ù6J$tI Ÿ¹¡(´ÿhÃ,L¸zkÐàíòå ‚‚%%ùº¸¤3ïÖ×7ŽÏW§¦&Ý‚H$OMu2䇣Õj9ññÃüüoÝš|ãÆŸÂTíÚñÓÓéo¿íþþ=ÇÃãCÐ.8˜Šˆàðùªqãvwî|-&æÃ· È!CŽÌ˜±®E‹G7o¶31)ï×ïTV–ãÆÓnÝê¼~}ÅŽU*×7jô‚ƒïä䨳ÞI[ZR99VÌÅL.Édâê;xS:áêš±Ÿ$1¦­Õ'Á08ÞæÂ“ß~Ÿ=kW]+%š¦„ÎÎvX·nFv¶ƒ^Wî’ãðóÏœøõê¡LêÈêÕsrsíP”2tâ IHIqg@*¿¤ÄlݺYýûG÷ëwjûöé'NTìvarFãâ|ïßomfVRÝ[ssúüy“'OLFf/î$øs¥(pœdâg°rå<¥Y;Ï3·L­zŽ IŒu·3„BEA5“ ÿ±U9àp 8˜kèú>yòÖví¸Ο[¶Lݱ#{öâ‚jKËšzptíÊ7aíÚ™kkŠÙtp0ïÏÛåUÙn­ñ÷N¢JÑè;Ô ð¹cW”öMRÃÊ×£üñ¨ÁQR¯EY>!HL½Ã + Çõ:„_õ 1u4’òÂÂgÚvvîkõÞ+•§&`µ IDATW Í ãZ£áÒ(bEN’˜Ü±™•‰:;2 Õ ð¢F=½¹ÐGo"ÑÁ]•ü,­I o^ÿñ‘#C(ç™Uø•gM,é"û@µL&fÔ­Ó޲ÌR¨²Àߥó,H)Á‹»{g>¡S±3·wKFd ]©dáwßýlçÔܯäu©ÈïãŪð™[êl‚”ë²:EFnп,ÅÍrÊXš°ö¬ïSúVÐìþùÖEvANÚLÐÂðWƒÀÛ´¸—‘êºÅÿííÛ!olÞs½?¸„(“ˆÊ¬©‚%¹K¾œÀÅ&²êþFUÏMG¤»t§-ZÄ_’úvüøóZZRO‹x½êÇÑ Ñ˜7È}’ÞÕìiê¤y˜£U–ž»B0¿Öþ‹É°Péu[$ïѱ:óG j¯¾a•Ph«É; 1ŒEàËV¨TüœbûõkgV'p› üw™Þwo{ÄgÈ?%ð»t뎯(Û+ÿÜ-î7Õ ü?üo# ÷——›tU^zÄmñïøWÓ9uÄþ³gÍ€¦‘²2ëöí?ÝÔê¯ñÛo—·zõlØ·oÄÓ§ú·o+²z=®Ó]»^âr58®ÿá‡-°hÑ2…BXZúá¯]kÜ|ðà›‰‰“®]û 0.—öñ‰gê!Ò4âïÿ–$+Ω•+uóç¯d~f:}¼“ònâ:±±¨¿63oÖì Ÿ¯BZ¥âçåÙRŠãzCïU++dÆŒu#F€ÀÀç417|Upt¥RÀÜ‚»º¦={Ö¸U«Oç[ ‚Û›š–õëwfÁ‚ W¯²7”uq¡8í¾}£`éÒÅîî),‹UޏÓ4ÝŸ©ÂÆàìLäåÉÊËç-Yâ+˜X·lù;8:f‰Å²²²ŠÈ< Ñh¸Ož4k×î¦^oÙbúø±ÙáÃf•ƒzô`qÃøñæ))Úf͆¦§SNN¼ãà€0‡Äb†Qõë·îÕëÁ‹‘•/G{y%0ó a£F/Y'p¹€ad½zI°cÇ?¿ØÊ7*•AQE©^½Î…‡fù¬í©Yqs£Xƒ( áp´þþo9­FíJ¯ò˜™ûIYƯ BP±˜…e¨ +VÌ ²ìÚµK>451¡ÿø¼´\.Þ»w4‡£usK]±b>k¯¾¿A€‹ úË/Ø—‡ wwG?Ê¡ø€L&¾r¥3ó 5³P§«he0tè¯ÌЪrÀ¦27Šp<ÈÔ´L")çñ‚Ö¯ýýc`Ù2>Š6wvÎlßþæñã߯”#±q£Ç[1Ûår[­_/¬ÅíÖ"$Š#$…%`ÑXøìIóv®79”¦LaQYà$‚#4…f¢@Ü$=h1öˆ;€{Œ2µNêðî<%÷P¿˜µÍÁ!ÛEœÈ%Uj]Exø5‹Žûí"*þý•’¯È (Ä­‹Ë>åê®èؽwéÙ˦í‹ÀŠÌüKj¸WYBpë;x¹F%U¸ŸN j—Ú¬ÙªdN ºRžie œÌ,h)no¶wïhïÞÛù9…jçzïGGȸb™²) –+w§Sz|òÐ|¾À¾ŠGf§®vҾ䧈)ðå+üS¿'nÓ•¾ä.KÉâ8ÐÖÕ ¼€k=Åi³ Z>ÀîDíüïx]¸¿yƒ@ZúÃúcÇÂ`éÒÅ[ׯ/ûÔ¿þEòóOÏ÷†—ÞÞ‰¹¹†,FfÏŽºr¥s‹p\¿yóØ´i*†‘¦¦ ®ŽË»vÍdÃqeéðù ×ã¯_7€·oý¥áut¤Ö®U ª¹s£p\ïïŸÈŒï³³¢£ûã´,ñó£ââì˜ ™Ã‡Ã•J>S¤oßÓÌ$Y±¤ áàóòe#3fû½~Q]P`ݡà °µÍ³²*zýúÓw˜9ÓòÅ 4¨ã«W€]F/_6Ú²åæÝÆÄ´gmU-‘Ðee\&⎢TXØIÿÓ7’ `þ|mË–$†IbÌW£áŠÅ2‚¨X#‡C1€õë§„®ú0vMô€U»Æ,Z$š?“!¹¡Q#dÎÞÍ›&[·ŠÅbºÒÿ‚JÅò¤<Èáh ‚eÏ"&& ¦ìæðá‡22œ %ç«€ãtß¾§-ZÖ¾}Ì•+ ¬k1)ÃÀÂBúüyà?lÉÈp.)1c]9Š‚Tj‘•å8aÂŽ§O›š›£hÅGž2E»eËÃ’«WÏ>]ß¿¿¾oß?ݯXZÒ(ŠdeUD4““=\]kÓ<»w›­\¹bÔ¨}û×®]úóÏUŸ,Àq½L&>{¶·áfõc˜kR®]ë¸uëd½¯îDBØ´ÉêÅ xõŠ^·Îª6>ÊŸV¾m›å¹s’ÈÈf7nH*§1 lÚdÁlwýz¶‘TÝ€B1„¤WÿФ¥¡“—ë òÀ¡´þþ¯* œDp (4ETˆ* Eu c¸ëPBê±'~Ý‚"H-ƯúÜÕÔV$¦d®œ‚; ²­€T*‘ŠÂ¾Ìÿaé–«/;1߸uŠØªˆL2Éå:|ŽÀ13ñAiþC\‘žÊucøâÙËp\nþŠû«c®¿ à•ËŠë*/Æ-$JäðápÍCQJ«áŒrÛW†KàÏ/F-h­Ýé}ñ~9Åé—wKQ„ºH 3£,ωÅâø jWàoˆžã`RŽgåÄ¢~Õ üÏ·à™Ù…{mÈWÎ9\GV7ŸÒÄÈ|þꕳWzýØø žcxé,BåYµ"ïÞ(—%ZXˆ ´”0Kæ•Jž$ð½µ4{ÈôO¿Vû7·(~øÃÔ-™5 <¾Ä'3×iÂÄO_|Ý—sEVPhî_Ü×ütÍ÷{ýaèª#sÿ•¯Ó÷íÛ¥&ä@J¥á޹}û˜œœZ»á«BD„þèцη©©™©ñ@TxøáÞ½Ïr8Z¦ƒýäÉ[`Ô¨}²rĽ:ôzÈ˳eÚܼ{ç]^nR9"ûí·&IIZ‡ï³²d:]Å<ËöícÂÃët§^NÊçSLMTÔl¦PèíÛ!´jÝú>†‘†¦Äoßj–-[øóÏßÀ!G¢uJ Ò³çæž~Á‚å½z—JY+-EÌÍUK–,’ÄNœ`¸zUE)¦Ò›X9;Wì™À@Œ9jðèQ >Ÿ+‘ÔÚIÒ¤ eþÍ7O4HÎÏï¿w¯9ëbZ-’íÀ„ÏKJÌŠŠ,u:–÷€a€¢“©og—«×ãÅ~­utD[µzÀüln^ìæ–Qù2ó7±³£ ËÍÌJzö¼ÀšØÃá@¿~§˜¾H¹ÁÖ¶bŸK$ôÖ­R{û¼½{G׫—2aY¿>»#·mÓ…‡¹s'xÿþˆ;§­][mC†¿€…<}* ìß´i¿GDæì§"UF§#v옰{÷Øê„NÓ`iYÄœmÛÞ.¯ë%>{-j`øßῸžØñë„ÆÿxݸÇÅa‡ÓoÞÔ€ÌL[©”Ãdú¯X1òäݺý•÷/¨°09œ=[SªÙè† ?À³Îœùðô$8ef¶1(Âóç{ÀéÓ}¥R‹*VT*D*µ`æCtíz)%Žʙ'Òáá:¡ÐÞ½Ûvì˜pàÀHCÀÆÞž*/'˜JOÝ»_Ôj9Ë—/`Jõ­_? ’zõˆÐÐëL[ÖÆ_Èd¦66¬Óõóç?”ƒ|ù²QÍgùE@uýz‡¡C€N®>ÞØÖ–å.ÙÔ”..æ3ß4 #ÃÂNÖ:"(³²ïÜ Ž‹ó•ÉÄ⊉g°b…dÿþisæ¬ÞµkÜÈ‘Gwï®åY­[óß¼ÁΜ±Ü¾½ÚrFJ%(•‚àà;ЩÓÕ´4WÖ‡tæætA9sÿvñbw¦‰ë §NΚµž©¾¥’˜Vœ®U®TïÞ ðKH‹òx6Ÿ)ðšý°SÖEJ;«À‡,rh„½9Dš.áh¯ï)QJßzTx)×—«ºw¿hŠÐ5¼”0§ŠxŠÞùÜÌÞªdÏ.,%9Qù-¶›»,YF89ç¼~Vܤv“ÑÎ7ÿíÜÜ~^EñÏ‹«ø;ÒÛ&/öéŽ d~y©™iu¿oÝÙŸóV¦ÄDäï%-ë¦À‹l,ò3{açNÈÔ ð÷úúþoß6yû,ÓÄÉ(ð¿QàŸOݸ_º„FFF^öéséÁƒ6 T JJìBCY¾Õ¬Oñ ¼~M/Y’9Ž{ú´¢º%mm!:Úöí3UÊzš2½r%ìÀ‘%%f#F¬_?=<ü0´oãêšVRòé€ ‚€O<‡£8q;Ó‰†õÙIBI‰éÀÇ`ÆÈ#i²³í§MÛéé.^^ ÏžUTŠ,+“äçÛ;9UœúZ-5fÌž;ÇÀ¡CÃ5ös×PÂÃûíù””Z;+^¼À6|Ãh ÃHsóâìl–ƒTZŠ˜™© ÷“'ØbùCQˆH$¿s'xÛ¶Iõê%ñùêÌÌŠwkaA_ºd!ŒŠ]máëûEJÖÍÂqÚÏ/V£áΜ¹ÃHoïw¬!µ‹L¦>—«áóU†–uU BV¬$´h—”4dÿ~öTÔ¿FP=l˜Èήpîܵ¾¾ï.]ÒT·ä¥Kšúõ“fÏÞ`m-=šß´éŸ>•³35c†ÞÛû¤ìÈñÖ­’/!ýÏ!,Œ8xp$ó³^Ÿ?ß³}{–וּ5=n\qŸ>gÓÓ]Ö¬™õìY×±cë®'ë,—.¡4† $]VЧϥûÚ´i{Ck‹Ë¬* œDp„¢‚a1xRSÑ«fஃAæm=ש´PJPZž€%7TŠ( · Št´Êø´JhV±­? |øÁÖ>Š!=.¼¸õii¶Â’ó™ø*ɰqNò¬WÀót°yvƒ>8fúÐ_ÍÔEA¯ª\#æ« ©ôt—n-Õ p_RÚjìîä”ÖNI99}¼­âb {îA'¿ + È}%n£¨]£ iò­¨C²·þ]™¤:çŠ]ýrÞzÚ LJ³“)çÕhöу5Tæ)©›wð)·1‰ú¡>,…§àÓ ?mlò0ÏÙÖ(ðÿF¨»ŸgÐ rÑ¢Š¹> ÷ĉ^LJÀŠó«ä¸kµt»v0779y²¤º®_¯˜ €S§ú™˜”ÛÚ²,fjJ—”ð–/_\®fÀ€ÕlH-/7Q«yÇ7n—X,—J?|(ž2…³lÏÑñŸI! $±·oý[·¾ç+É ež+#•"e……Vë×OïÜùŠTja8¾,zÿžÞ½ÛqïÞÚo\0fŒåÍ›\'§IùùJj'|{zr nnãïÝÃ#"ênRuÍôê"‘ï·ßž?uªŸOâ‘#9Õ-9{¶eHH‹‰oçäL:{¶6 ÿÿaÐ ’‘‚#ðÇÃ|ßphm¿~‡ÿ”ãŽbˆžþÉþ>‘†ü–¦Cu´ž-â®Gq„·àT?¿X šÅ¡´“ª©2 À„¤B$œ_~ip>ÎE ÄÄyƒÀÃz<0¿Q~cŒó–¿{&Ú–efË?_àÛ='öß}OЦ:›h×ñÁÕÛüo'…Ÿ±Ô]¹ß¹ŠÀ³tU±L&=ÕïÐÙáÕ \% ¥š˜È ™Ix*×½:_¾ÛE‰ rWÛÀ«í÷Æ×®ÀSänMRëQ­ÔZpªø+ÒÏ_÷f‹®‰uY†yýâ‹ú©µ¼ã׎_G~T;¸í¢»k¼gÕ,ðw\ï8‰ïs$𙾉QàÿŒ7PwîÔ¦MJ>_b±ÂÙYÖ¸ñ æO;^ËÊúðÅ S޳( ݽ»ôÖ-öG’¦7;ðxjºº) ½{Ë[·^––ûGúÓ€µ5üô“it´Y»v’Ö­ß3˽¼7~þ9…ÌL§Û·CÚ·¹p¡‡R)@ª™«¢Õr™ÔðøxŸˆˆýQáAº¨ÈüرAЬٓ.].ó¸°ðû-[ŽÍšåҥˇs´AþÔ©›BBnÀ‚Ëù|‚5Øð×ÊA~&ÅÅhJŠ;Ó.xÓ¦©11í5šj#îÌ̓B!‰ƒE8J’?Ÿ%+\d¿«$\ZÓ¾kLe“(ŽP°åê ŠB_g  £I¶¢zŒ@ôH8”É JKYRe¸X/4Ãn><€ò„(PPimŒÀOœ·›¯Ùê¶3¶©$ä@Vˆ³<Ã2°ð¿ø½öíc.\¬Vàx·vé«Û›+7]kIõy¡ŠÀm²8Šâf¦¥/ÆgqzÁAoVgkp™lㄺ¼Â [ ÏÂû’§•ˆ E—'µ.ð­d]ÛäÉü¨¨¥Lôw̘³gËXk‘ž8ùùÝeFäË–-*++~ø°ªƒ0 Éû÷ë3Ê͵{ø0H"©¾Ý(•È€§ /‡ 9Êå²|Ÿ5àrõL/ ‚ÐíÙ3F«­xïߣMš$¶isò¤™B¡_´H´k—84ôO£´4MdäfbÀþýïß³?¤ûkå ?“ÒRèÚõÒ„ ;`ܸ]ƒU*ÙS$KK¹LÄ](T|\UÆ@h(çØ±ÁÌÏii®ii>~~_Jˆ…5ê€áåwßýÌá°XEA(TüúëÐ… üå—a=z\`òöŒüèÕ –-Ãýý;ü‹ƒàBR¨U—ÂB¹ÀŸ?nÜ®sïÂ8 1oSe“(†ÀdÔpMÕ¨ŽÔãlUe0¢Gd´z˜d¡ÌàPZ›r•„’ã¶š¼¬,Gø*„Ï*pÑ÷ƒ?úU¼8ß¿Ý3':óNjp- \eëBшêQžå€û–P´íø¤*¿ò$ÔL]pø~ë%ù{—OÓ° \èRÎW”º”˜‰‹“R€¥ˆ;ü!ð"‰¥CJv–¹ã—øï²–œN¼ÒÔ,ð 3gñN™“&³y¿Çÿ_¾èÇ_Žþ?Å(p¨ãwàý‘ 9v,?&&¤R‹ü|ç.]*þа!õà_NNEŸ¶“'4hÀþijE lÖ,·)SN@hhãáÃÙoטîz†—4 ¬1ñ/°–-W¬˜B¡"4ôzy9ûô”Ê ¬Ý³gìóç™é´`ÁŠQ£XÇ劒LAä# …Ñ úõ©øxÇÇ›@TÔl'§Lss–ë Mƒ\R©…O<œ=Û€R³ÍÈ-*¢óóm:t¸qóf»ÿªäçàåE]¼Ø}Ù²Eÿá‡-·n}ciɲ7‹‹KKÓX¡ž<V¹Ž{eÆŽå¾{×cäÈCŽ yxøðgEþg ¦Ý¸qZv¶( V…‡³ßÜ\Ô㈙à #F”H¾HëK#FþAhCIÊÞ‡€œÉf11¡’ú*tÙî•N"PP– +£:ŠbëGBa8B©Û#G.>o¹J#0eYLEˆAº$"#Ù҉ÔŸUàφFö„XßÜÖΚ*hÜíEí üžà›/¼Š £¢ð‘‡«|Äøƒæ¥Åí×]ãmWÐÕ Xu×Ñ —ƒRÀ5Q­tÎ175‡v®AàVA…nn©ZΗ¸~ ¾¨dYf§šþJЦøž ’~ f¤QàFŒ|9êúÀÝÀäÉ:&Ç=*jvDÄO•S$ùEÙºõS5ê@||·1cªÞº5qõªÂëMp #Z3,XnaaÖ¢ËW·qcò÷ß='MÚZ-çÂ…&&ŸØÀ£Gåƒ]?þL«V¯nÝ*æóYnèËÊ‘HË´G½x±û±cƒÔêŠ#õâøºuûËÕ²\oy'O†9Óž>mêï_ÎcÛ1†r'N øoËA~’çϱ֭ïß¹üã “’êyx$gf²,fnNñW­š IÙÀÇ1Œý~E!:Ú4(¨ç›7ëÏã°<+ÿg¹{WÚ¨QBdäkk鉥¦¦ìOZ-,Ì7nœÆ¼œ;wMçÎ_ª¡˜#ÿÌÀ=O†<Æ0ÝØòãÇì ´À©"pÃ=ýŸû߆Í9eó¦ÕêiË×Aˆ|ƒˆÉë…V„”Ck"¶Œ¾QP"AZl¬©(Q«Àý:X¾Åü:”ÝÒäˆT`QënÙòé-¿ÄØbÔüc/\ÿ£µ¶`]·}Μ¹çÞÿã50Kó5UI» |ëQ”ŒÔ³ªAà=~¿pÂiÀØÌÝ_Dàšà/.L²ú„À»ex'k0nïÁg7bäËñu Ü¥RD 7iòŒyٵ륌Œ_§&MÇ  iÓž§O³÷ ø¯8}Züøñl(+¾g{MÑW¯Ð¦M“ B¡bРc2Ù§6àèÈyò„Ó£GÇ·oQoovmI$´Fƒ03_§LÙܡà ¯Âƒ“Ö;}º/$&z¦¦ºÙذ„hž?W¯\9ÏÎ.öîýê•©–-º¢È… ==jÁÔ¬Ýr‘ÎGŽ ©_ÿýöíQ”rp`YŒ Ø0©AR©Å±cƒª+Ì0x0²p!îêZs×¼½¹IIúfÍúç䨃‚ªíĶ}»äÔ©é½{ßððȲ¶3¦Î]ÀŒù»`8B‘…rôŒcÉ—7iòL]j¢E8UNb8BR¯s#l[w¬_\‚éõÀ6p§0‚ÖÑÙ%h˜`r­X®êù"T©3sHܾn¥j0ö8ΫWè³!cð=o.6x¯®_ë¿Å é‚^¦òQˆû±À—n[lNÏš¶fwW\³Á¯x¯¡çÌUÒÓú*é~žOMÞbÇÙ Ž~R¿þûí;>!ð}Gu¶¹¢0nÄÈå‹T\ú ,]º´†¿ZXÐîî܉·oß>qÆȫW»ûíŸtìåEÀСµóˆP"¡7o–ÀòåÕÎ~ ž=sŸ4ikJŠ{a¡UPÐÃÏ Ø0TW“Ÿ!7uq)Ÿ8qûÛ·þ“'ousK5(ûH—_  IDATéS¼]»¸E‹–ݽۖËÕ¬X1ÿõk_€ªcwöï8{¶wi©é°a¿ lÏŸ¡¸V¬Xàà -Z<=ú`Jʈ¦Mk'K2#mÓæ©áe‹åòf/fnNK¥¼Í›§Î˜±ÎÚº`À€wîLª•7ðOÑ­Û'&ºñxôÅ‹¢;wZ8;S®®µÙiÙˆ‘ÿ=ìç©O<>X„õpãNœ¸ÝÖÓ"¦NÝVYà†!ݤ=aϧ ·c:Âc‘8ê©‚$EðtZ B£‘BL¥2÷Ió./#U„cQPÃòǦª–û w~–1ñàöÚ¸«öMfƒ`¸SH[%$xUøŠóŇ®›2ã… ñ¢Ù ÖÀüê³NƒµG÷Yp—Q)„{x¿e§Ö̘eíd¸#_–ºq_\ Ã/ïÜ‘YXˆÀÕ•Ó¥ qùrwÈÎvÈÎvïÞ½–»3T&/úô‘Àðáer9û2qq¨¯oöãÇÍÇŒÙãé™8zô^¹ü³6Ÿƒ•-œ=;êÙ³&—.u‹e\nÅs„¦Mõ·o{õés¦´ÔT&>nmÍÞl¹~}Nq±Ei©)øùÅzyÉXkÖŒŽŽþò9uª›6µ6·©W/ݽ{¡L œÛ·CvíšÄš*•"––ª¹sWùøÄK¥'N ¨.Eò_Fp°ÞÕõÿõ$#ÿX®£1”¢êÇ^§ÌÕ­šsû­»®Õ!œ*§1ÑÓù ,Eò2z´X£á@|¼{d$râD?X¿~úÈ‘?­__þå6‚Ì›=z,ïÙ“½F¯/oïíý.&¦ý“'Íví'þ›šÉÎF]]Ë££ûÏžåé™ha!Õj+ì‹úûg'$xuìx­Y³'&ìJÙç÷¼|©Ù´iÊ•+`åÊy …®¤„%‹((ˆlÐÀ´W¯ßbbÚ·mûpÒ¤2{ûÚ4ѵkÄÞ½Qýû?œ?ÿ—û÷Ùߪ…]T$8xpÄèÑ{£¢fr¤º¢FŒù*ÈÏG¤eJ‘£zìIŠw_¾œŠŽîg.‘jnS†RtIEQB›ƒëuŸ­¿N :Ê1«,¥ å h.‹rS!W£àºå\ލ@…°ÔzƒÀ»½‹yÖþÉ«/"ðE¥Ëf+¢<«FàÎ×w>'¾×Õ ðÅ[–X€”L¥´nĈ†º;pÿõWüÇç0}P”²·ÏmÚ´â™]ÒÒ¾ÔmîÞ½øÈ‘»CC¯Àر»½½_¾Ì’P””„:9•0Ueìís¢¢f+•Ÿ.ü™88P©©’ÀÀçׯ‡J¥±±~Qq¤üü¨¸8;‚Ð=yÒìðáðŸ~úžµª 89¡C‡þÊL qqIW*…ffì9…QQVaaAÇŽý:}zýI“¬jëS0˜š"ÑÑ’yó|/^ÛÙ±‡a¤RÄÞ^QyŠ'é1òó미‰y9J’*)E) ‹â¦MŸj\JT8á@RE2$E:Ÿ µ(ÛÀ"DOZç–åæ $GÀ-°åŽd—‹y¹Ú™Re­¢µ÷xÛçן†JK«xz³ÃWÂן^ƒÀ‡D!kžúøa^QàFŒa¨»÷¨;¦0?[[H¥–“'o€-[~˜6mk§Ne÷¹s //¢¢Êª[ÆÞžŽ÷5¼|ûÖÇɉE—õêQoÞx–—W$Á?xÐÊÙ¹ÖvfAbm­Z¼¸"mtãÆ©ZmÅ{ÈÉAù|ê§Ÿ¾€† _/\øcy9ûõF @[·¾ùrظqšX\Óe©W/tíZ~»v_ê|ðð¨éF‹™ÃÀLN€iÓ~2T‹3bÄÈ×H‡TI¹%FéÕRžµuAi©éäÉ[c_ûiNÓ†’T‰IEQ„“‡ë5¸íëOp0½^ÿs1¿ƒœ¢…4 ÀÖ‰ƒo!he˜™¹45¥Bø_µÀ<¡·þs» £À1ÂPwîdÏžDPÐ3ðñIŽˆÐŸ?ß’“=22<{õú¯'q_¼¨?p ååËú}gõjö±{×®¤Vë3{öˆˆ8ؼ9êçÇþÔoïÞ¢víîß¼ÙnÑ¢ewïš8±Öæ•[[Ó …äÑ£ÌË3gúº»W){{*)ÉQ«­5%$xYZ²¯äý{ÝØ±»—.] ¼ KóòêîáÞ¼Ù$=}@PP—« u2ÄX]ˈ‘¯˜€RhÂÁ)ýÛÇþõë§*æçÿÓ‹@5:”SUà8Ž’Ti9-*s‡‚Ôâl³N5$%õ[\>¼+œ&y„]¾ëÜ.ªÖé8‚¯ZàŨ¹“:Óù› £À1ÂPWªÊ°2c†e›6Ö°w¯Õ”)ò'zÀæÍSÖ­Ë\¿~ÊÒ¥âÏ_MÃÑ£ªÕ«#mmó`÷îÑ¥O™‚°Vá=xÐlóæ!³¼¼:ŽÏž" ;Š B¸oßaääI—[›Å­¶n冇Ÿúþû5ïß×ò¤gt´ @ÅúwìÈêÜ9fË– 7o¶»reØñã"ß*ãíÍí×ïtÿþ' OŸ3vv"[Ûº;EáçŸÍ-]\ŽÅ?ývŒ1òwqp⣱¤4'pôh›;KŽ{²w¤ÃGŽÜVYà4Ž#:’’ªìr&v…’ ÄUî4 2-éÕ”V[XhEëyZ„£V±\l&jå"Ò21W…ht<³j[v|ÿM¯æêÇÞ®önĈ¨Ëw†  ¬¬h±¸¼yóÇÌ/{õ:—šú'…]¾LÀòå ™Œ=µAÀÔbcý˜—ÉÉ4±ŽÚ€Ë…Y³D0a‚ æªðß|ƒþô“hæLau«úËx{c.ˆsrº¹ ¾|Ybbòaýýú™…‡×_°à»wÓ¶‹Ù7]ZªŸ8qÛ’%KH;xpDQÑWñô$YKž1bä«å¥ww/KLD­ÌKš7¬S£zŒ¨*pGIÊú§<íªr®e‡ÔpLXêÛR8‘:V_XhEjù:„Ãj]®¥P¬“”]¶½)¦ÕPüšâèu_àÍ“Erù¬Ÿ×nĈ†º>pg°¶¦íì‘‘`ûö‰3fl ý`±‹Ë7mJ3³m©Tìcí™3Mö왹sçx;ö—uëª5uZš®ystè ,.þÇfÇÛØÐsçcÆ`gröëÇ9tH²j•Ä¢úÐFn.ek›×µë¥Ž¯%'{`˜F.7N2bÄÈÿŒÀ1J¯Õ•¾|‰;Š´‘‘òÌÔ¯ŠÀ5z!ÉAþGRWqކCj¸l©26<”Ô˔蛇 H-¿ºTµPDÊ ¹ÃÍ z˜NCrÿ±dëÚø›K…×J¼Œ7bÄÃ×1p€É“…ÑÑàí[ÿ¤$¿>}>ÄQƳ¾~=æÍ[Ù¾ý‘mÛØ 8º¸Ð?ÿìøôé|X´ÈµMvï«ÕH‹’sçÚÀÊ•#›5û â¬4lÈ_½zî”)›·n¼gÏ[[R$ª‹êŒ1ò¯åq0J¯Ñ–¿}‹-htÿäÉ0ŽyžÇ«¼¸Œ‹R¤¥ ¨E‹GB!Å!5|¶;WÌÅõ: W¥¼hFj8:´šêb±˜’*ÛQ§­êurµ¹Žuœ ¯Û¼õšQàFŒùÀW3pŸ2EÃÔqß¾}âÈ‘Û e€SSц Ó„Bó²I“g99Õ&::Òë׋ E‹jÛCìÙƒ-[¶ÈË+:uº:tè±Ó§k­¾ïÿ’¸8ÍìÙ«»t¹ìç»oߨ—/y‡FŒùßs9E–Éä-[ê'^h{òd˜½e.ÔW8F (Iêʈü|.ãR¾€eàÎÜp„%¾öJZGèPöœŒÃgLDˆ\^æ(àèÕ¦ö%F1bäßD¸gdP:( [7•PXôù}ß¾§’“+Fçnn”‹ oæÌµ’â¾dɪ#þVˆ% €¾t©§áå¹s]›4ù*{I$x<5MÕÝ©MFŒù·¡Ôá8­³°‰ËÏ—ŠùÅAAiBâX#¥HµMJª‡â.¥á‰X†Ú8Ÿƒ“ZS©¶ ŒÒàÕ Ü½šD /—[S.¡S¥å9nĈ‘uwàNQЪÇŽo`êÔÒÓ…s欀]»ÆMŸ¾¹cÇÖÞ¹Ó4#c „†>^½Ú$ ào%¶mK:9Ù|:uŠ:TáâòUúrÒ$~TÔ’Ç›ge9Ž·oÆ 9[Õc#FŒ©}( åà”~ÈðýK—N¶-Μ3guÑK…BXEàöÎ\Œ"Ÿ¿hxïÒ7$לKiK‚"& pR'´*¦KËAƒèPö$ÆÖô%åft‘%O¯rñD7bÄÈ¿‰ºk‚Ý»±3Ö6köÂÂN6múúСðôiÓ¤$ÿ¾}ÿVßµË^¼À[¶¬¶ø×ç³u«Epð70|xƒ™3­ÿþ ÿZ¶ÄfÎô˜4éì·ß> nñ_TÏ4bĈ‘¿ÃîÝXP›ß1Z¯¡ Ìçd_ÁžC‡Ã “Ö"UŽrp”Ò;¹¨¹”‘\s.­á|TpŽS:ž™ “•ÑTU[¾D‰Šd2B\jÁÓ)[…|­&F1b„•º;p÷ð@>lmxùûïNê »v ß¹~½ì‹n}ÈôìùU&GhÓ¿~]påŠ0"âk¡eĈ‘¯$%Ó§ôZx ¨§¢û{:':¸gW8B¥Gr²°”Â$\ZCˆØîB‚ µ¹„_ZDU+g.VÊÀ!¹O¯â‹¿âžF1bäcêîÀ=4TÏ绿 zô¸dk[Ú²åïÌŸÂÂN&'×Ôÿ¹ >Hóè‘ÂÞž^^HR’æ¯m¨î@|ÝwFŒùú ÕãkœÖ—ËEûÚÈZ¶üÖ À©*p”C`IÒrº¸TGšsA\–4Ž€CPZB ™ÐZš¬!⎠Õ2ʻȆ¯W•*«­Cðµ`¸#F*Swî°oŸ¹›[OèÚµ±››dñ⥰oߨٳ׵k÷Wâ(+WJÛ¶%`èÐRŽ}©4H\P`÷ï›þå÷oĈ#ÿo™0I‚ÓºŒ,ÿöœ4ÔV³xñÒÌd§¼bÛ*G¹ŒÔéAæ,’jµæ\¤š;#(ŠÓV ˆ–Òáì9îR)RB‰i­²žs±@¯œ¿ÂòK}<#FŒù'Àÿé7PÁÒ¥K?þ%‚Àøñ|6Œ×´)·wïñK—.¾{78>¾Ñ–-|Ö6Ñ5°g:%åu^^hÚôÀÔ©Û¶I>^ìÐ!lÅŠÙL}IäÈÈíG~7x°ö¯|*#FŒù«À9<¥õ..´SI¼é¼è]=—hVškZEà(Çhå–:‰Š5jS.­Ñ±µß|øSZ±‰¶UèSwºªHö@ô¡CX7J«Õ •%ŸLè=ôÒÑ£M7bÄÈ¿†º2p_¼x±ágÖkÀ´iÊèè°ÿÈ+æoØ0aáBѵ‰[·4?ý4•ùyÉ’%: ,*2µ´¬:ú¦gÍún„mÌËŸùàA5Áy#FŒ1RÀ9h=赈Z?mLô©~­¯Þ ^c + ãa4¥Çø2~q‰ÊcÉoy—€´ ´ðdz©Eˆ¢"„UàÅ›ÍQ\.·åSªãçúšo¸#Fþ=ÔéTùù¨‰IIëÖ÷™—ƒMLü¯sÜÝݱèèþÌÏwï¶ÕhÄKš4!Û·„„<€€€¸… ‹­¬ŒýêŒ1b促ËÅqZOëtYž!“â֭SUà8Ç)=_"3"ržaϱ±ã”¾œT§× ¼êN‹Å˜Z&-râ#ªqS4F1bäßD]‰¸×Œ %›¬\9ËÕØÚæ;×7$„%Ç].Gjh =s¦¸OŸ©‰‰õwîü."âøÉ“ì—˜?ßòÖ-+ظѱI“¯²°#FŒü³`\¡õ$"!&d¦låÊyÜG[Ǽssÿ$pŒÑ´ž+R‚|JÉÕ¢\Öƒ†›èÎkIž$»ØÑë…fÕ ÜÒÙ„£‘KË<|@Ùw˜½qØnĈ‘u:â^^ŽÌ˜QK–ȦMoÚ©T .\è8dß°˜R Íš‘àãCìÛWRÝÚÄbúúu±Ïˆù?öî<<ªòløs–Ù²o0F —b@¬£bЖUK©E ¸`¬Kq©¥_c)š*(îÕ(V₈JTˆ¶: *Åu‰l!{2ÛY¾?N2LfËd93÷ïâòšåÌäM ÷<¼ç=ÏûŸØÑ£u˜8Qù/ªv€Þ°‰ìüDû«Åì9,yaÕ£i»(v³óR—9ž—„”á‡7Û4?3î ©¼FvŠ|’Ë3N5øí*ÃÅÇì-ßW3• ‡¨QXîsæ4ŸqÆ#D¤Õ¾víµ-ë×_^XXòÚkWÏ™ó¯Giq;¬­°ðN"jnŽyóÍ£ªíë®cˆ(11Ð,ÌÆM&pD”––ðé§­ýò½D•[Yy&÷mÓÙÛvä/]ÿæå÷ß¿ìÕ×®ñð—_8Y8u´ÅtñVÉÊÛýl‰ª‰Õheiâ¹d++:Iç·p?Þ¢Ñ[Ûš1Ùúéž^6Oá[¸¿õg4î¼óÎUDtûí%$Ôå䘕§®½ö¥}ûDåöîÝ܈æÏ/Wî––þõwÚûòu««Ù{ïÕ76Æ‘(²Ó§gôåÝ¢Ð[oq™ÆÝ¼,H¢~ìùÛSšüxRr=/ išE’쌃ñ]‘kbµZÙ!3qöçtÞ÷aÕÕìŽ/âÛ[™¸vásgŒˆï T·p·Ù(>¾cV&#£ÖjyôÑ»”»÷ÞûPNNGjgg‹Û·ÿ²ºz¤r·¼üÚìì>íW±n»té×Ý’’¼ü²ß©ðf³QLB;O‚èˆ=’Q«Ó9üø÷ßädA’µÍ29팓ó³x]ÃkÈ)JñB‚̉NFï;ç×­c'_¼3ÁÚÜ$‘5 À „oá~Í5âÎ3^|ñz"Z¶ìþŒ ý›oþuöìG®2äìo<¹rñ•WçžûÍûFuõ´nð{ÑR0.»Lzè¡“…ûÜyÅè&Ð×\#îÜ5ƒ'ÁaÛvdØŠûJŸ{añ¬ßlsê!ÿó"âeÁf¯sj%»,ð~6×ÓjµŒÃéLp¦p¼èð·Æý²Ë¤ªfÄÙ[[EÉÆéàa·p'¢c¶lYJD‡-|ùå¤Í›c.<÷í·–-Ku?lÂýÖ­Z"š1#wíÚä>~Ññã¥?ýI7ÎBDÆxñÅ#ÚôÌoÇó$ü\=îDrËZvì¡WU¾±á±F;NÏK1±öD§è?[¢’V«%‡Óž %p¼ààüîãÇKçM7Ä9Z­¢Ð&Ç"À „uážœLÏ>›HD+V$êõDD99‚ÑèãÚÓ‘#%"ºüòîßóÃ5“Q,\˜úÊ+)DôñÇš™3“z6h JÂó$ÄÇkNÑÆ2‡“h˜Kå÷Fãq˜FËñ² Ñ²¶L½ìÞwE.ó¼Fv:quÜhgý¬q'¢ßÎ+¶ ‚CÔàaºpï_]sMÃsÏ}FD':ëêMÈ"CDô–@¼`cÏ“N¡ŸÏ¨)Q¨—“=OŠr:ž—‰ÕÚ‡ieA4¾gÜÏ‘(8 ”bàE‡(û½–‰MˆcZm½  ÒDQáþè£m§ŸþæûïÿšˆV¬øÓŸÿÜìïÈçž«¿þúcD4}ºíÝwoˆD`xÑÆM”SäÚ_H Vm±ž:¼žçeAbtŽ4ŽNÉOáþè£mFËXõÉ ѱ­ÊïÌËëïŠñÔ¢åêê8D˜(*Ü÷ìîºëåöå—¿ÅóGŽøøö¿ûŽ[½Zþî»1DT[›žŸ?´­ÍçF~ˆ@¼dåÆË1ôó(m]ƒÍà㤎wÞ ¤²$8%­ïÂ}ÏA`4R»Nc5hE»ÌJþüå 1 l³ÁÚŸÞŒ€î…ûË/ Dôï‹}«É“µÿûýÊí_¼že“† ó±\þÝwÙ¿þõA×Ý‚‚Çßz‹ïûWˆ6ó?0ìK¨o‘þs½3ÞgáÎñ$H\Œ/³N§ägg¥É“µF+Ù4«A#:d&Î_€ßpdzñr‹¦Ñ)ê98D˜°.Üo½µá“O>$¢×^û_ii]ßmÑ"C}ýt“i7­ZõÀ“O&ú<쪫Äûï@¹-Iìý÷/ž?ÝÄzæÖ[F3ÌÐÌ=vàDJúÑ:1)Åû0^Ïñ² s1RœÄ Yç{Æ}Ñ"ƒ“Ñ8­¶%Q+:æÌ÷yØUW‰KüGŒÔ®muÈz&| w³™;|¸æ•W®"¢÷Þ›öúëz‹¥O£å8zöÙ”åËÇ‘ÙlHHð}Xf¦´b…5.ÎJD¹®žR|µëÕh4ä(†Ó+ØÉÏŒ;Ç‘Àje'«bµ¢#.Å÷a™™Ò?V8¤mnÛ½7&\Î!{<òÕWÌÌ™›]w÷»÷¿øâjŸ½ ‰èÍ77Ü@÷ÜÓò׿Ƨ¦ú<¤ÃäÉݯº¹ä’ÄýûDÔÐÐLÛíñÑÌ_€‹•œ`牨=I›Ôp‚;ËÇŒ;ñãùæ›Måå57Ü@ãÇ?sfùSOµõñK/[vâé§¿$¢{î©~ñÅ}|7€h£¸@š–Æ„ú¯Ïj=SŽooПâc©ÌŸïÁ“ úD§†ÕGüî‘çdµ’Sæœ ZÉÁÇø­ï—-;Ñ$†³‡¿úNB€@„ ߈ŒFí§ŸjˆèÃcRR|Ÿ¨­e³²jµZ‡r7+k_]ïå4AúüsnÛ¶Ö?Ì!¢]»~ùàƒÉÇŽ¡›@ÏZ‘å9–ÛÎ<”DC5'(Õ³p¯­eG;Ê“ 8bbÛc4‚Ý&øŸqç´’Cf ZÙáoÆ] ðøa-qrëes6"À „uጌ éÜs¥?ÿùI"úê« ÿøÇÒoìÓ¢ÆÊJöÚkË\wóóËÿóŸ@çdÀ'‘å%Q¢ŸQ«¥!ü ïmS32¤sL G¢è0¤´ÅjûØñ1þÞMb5¢Sf„Xl×Äù®ï•—bYƒ`åã8DÕîD´bEŠÕú{"š7oëÊ•ÉãÇû_iog}ÔID‹ßc,î»ïÁ¦¦D"Ú»wüªU7Ïë€QD8‘å%§LµÆ#2¥±õÞ…;­X‘"ïl7Ä4$k{Úpÿ§rZÙ) 'ÒµŒƒ´¾ w%À=o­Ž$8D˜H(܉è‘Gâ‰hÛ6ý¤IzÇÔÕ1øC½ÃQFDóç×}ýµàó°”yýú–Q£Ñ´i;¶oÇŽÙ½!2¼(Êôó)'¬Lš|BNñÕUFÙ§Éɧ‰ Z§]kð]‘×Õ1­N^vв¤×’cï¾?¼”ß±çhvÍ"8D˜p/Ü÷ìረÜ?Ü‘ß.0<9xrÄë;ë»Úž1CߨžD‚ÐæŒÑ’côø˜~ÂqxÄC•»"À „oáþÞ{ì_þRêºû·¿=¾aCŸ¶‹Z°@›“ó ½ÞADÇŽýaåÊŸ‡}ôW__ýÒKóˆèwf3žw IDAT¾õ–æG?‹)À'%ÀE–“:{J]m‹Æ÷w"^vr’3N'Úým‰º`–5Ahuêµ²ãúÞ"[ ð¼ëÖieǃ«#À „o¢]u•XT´\¹-Š\QÑßæÍó½sjðn¾9¥ººˆž|2…õó­ó ó›ßlqÝýío?üòK¿‚€7%À%Ž%Žf5~jç‡ú-܆—¬ Äê$¿…;ŦèYÑa³k†g9ß“÷Oä 2 À Ò„oáž™)=ü°-&ÆFDZ­³¢âp¿¼­®»Eùù²eEß|smÞ|éúõ—ÿá}ý@TQ¼¹=Ñnåw°CF:}4qw^vp1F+ùmÐND¤Õ°¢à°³NÆï1J€jANúï΋àa·p'¢K/MøñG;Õ×7OžÜý¶Juuý°CžVK;v4_y刨¤ä¹;p}*@]ziBLÇJŒ!GJj©ç†$ù;RdyÙÎ9Ål×ÄùŸ\Ñj8Ñá°³NÖoá®øòÇþá´jW>½&¬ w"2|_~䮥Ež0A&¢óΓžy¦®ï_ÔhÔ|ò‰Žˆ¶l‰MNÆiV€Þx ';Žœ"Ç7×û[*ÓÒ";eN˜&[‚ޱË~vV""Òj9ÑîtP€w"25+ŸKáIzõí8D˜p/܃1gNûÊ•ùDtìXòûïyÿ}±oh³Ñòå­¿ûÝ;?Þ.Iý1D€è#s<#ŠG)I¨× õ½TfΜv‰cIjqÆê»y§ß&¬†ç$§à\ %6-{ã”YÃÞ~l5‹€Ó§>-ý¨¸¸¸w/üßÿ¸1cöåå­Wî>ðÀßž}vÝÌ™q}̼y&ÓËÏ?ÿÄ}÷-¿ë®‹{Ìwû ÿ.ó‰ÂÏ"3\_/%â}€àÒ׬$P‹3VOö¶ÉS®õýU­–‚ þ—ÊPG€o|~"P¸îEEE®Û=*â'N?ùä¬=zôDôÜsšfü 1Úf;ßÔ §øÎð¬,-§ÓÈ‚d•õzò{qêÊ•-cOûV#8Htp1¢Sø—”pœHDÆ)(xìÕWý®kLK“‰hæL¿"É2ÙítÊ)?+w‡ 9β’Ãáûà?dü™K.Ùóßÿ.~ûí>-—ˆBJ€3¼LNŠ?Ñ2\wxceº¿ƒ%Ž“¹MÖje»Ï½6”OháE§,:%-ƒ€è¾…û¯-ýóŸ‹\wŸ|ò¦™3{?qÂ0tà 1ÅÅîÝ;žˆòó_¸á«¿¶cÆѺu O<1ê…’âû=¤8£‘I ýq[œ£í‚ßù^CDËË¢ätHþú<*¾ãÓ 5¢ƒDG“5 Ñ)| ÷ìlqÆ ÝùçNDgœñ}II]JJ÷=ݸè"î¶ÛFÏž½ˆÎ:ËtÛm OKC#1€ÞPüÛýgH6öèî¡Ér}Òh¿0IO¢ìDë·ÏãEq“LC´‚ƒ².Ñ)\ºÊøtÏ=iS§¦Ñ?ÿ9t„~HáiÓôÓ¦Ýzk7¡}qÏ=iTÆÕ·2¿p4Ùc}_™ª8^%§àtpº“I¿8]ß°ÅÉJŽ˜¤@}Ü"XøÎ¸+Î?_"¢~©Ú`0%¦pYL«¯î2Ç“$‰N§3àÎJ¬^£Œè5ú¸D°p/Ü@¥­†ñu'üµ”QHÏ¢,Ù.PEδZÑÁ ÒøíãÙP¸À€`xŽC}“ÚÝŒ»(J’Mà͸sz^#9yÁNZ,•€(!…ûš5v"ºýöæÃ‡™Pˆˆ8 ÏÙCKŸ¨pos°² ‰¢ÃéÿâT"âc´ZÉÁ V‡¥2¥Âºp¯©ssÛ‰èŠ+Zššü¶fMãæÍ{ˆhêÔ¥×_´¡µ;@ˆÕÔˆo‘ ÇÛSå:G¼ß¥2kÖ4¶Ú$–F´5Ú4œÑh$ït0Z,•€(¾…»,ÓùçžxâD´páßì~wÇ#ß{/—ˆn¸aõ¬Y/>ùd›¿#·nµŸsŽ@D?Þ:C¢Î¿ð¢-Ã’ŽdjþµÑo#¯;î94ó+ œhe b€ÿbi$'ï´ü™˜Q„»-ÜÍ%¹JÌ=|ísÏqùËŠsÏÝIDW_ýÚÔ©¼óŽæ•'N0£Fg˜ŽïÇnmõÝîý?ÿ‘žyæÇM›Î'¢o¿ýäñÇ›{8"€(Ò÷6âˆì`Œñ–´¬cœ42# ¬`—´l€kÓQ­ìÐ ö¦Ö&8D§-Ü-« Ê****** szøâ1c˜ªªó]w++ÏÍÊòÑ25Už=»íÆ_ ¢O>9ÿ‰'þ鍊b½“eZ½ºméÒÿ7n?••Ýð¯ÅøÛ1 êõC€³Z‰ÂÿÂ’ ÀkŽd²¢È9œõ­©<ÿÖ'5ŒSãpž;¥ Ñi wË6³eä(c/_=mš`0œzóÍÏQ^ÞÛÓ§‹ãÆùîæ¾tiJLÌt"ºûîu?>dÌÇ0  T[›¡Ü=zt(ãoÇl€h×þ^Å%²“¡zfÌ9ñ\æ“XI`ìÎÔá1üHý0-ãÐ9ívY‡€è4;§V[,ÆêòÜÜ"Ê)ôž²)..ü«W§>ûìeDtñÅçÍ›§pdII<½ÿ~\€c/Ž¿ûçÎ]{ÓMk|ÐNÌ÷uú#À7Ì=M°ý<,¶åì;Ný™9Jwà° ìú¿]e/Ž_yÛ­Ð"ÓþÁ¶®@€@4ÈÂ=§°b¤Åb4‰,åù%æä/**òù:×çÃÐÍ7ÇQàª=HãÆÑŠ£~øá¹s×Þv[Öo~3ß;€ªõG€Ÿ{áÀGb:ß 'jIž“œ¼ÓÎèüîãÆQA¡Q3Û©q:yሳg j€hÔÏKeN^̤\Ëd4;Ÿª>héß¯Õ YYôüóñD„ªÀC¿8«Óp’3ÆV¸pg4<+ ‡ Ø }ôxŽqèÇèñØ€ ¢T?ׯ9…®;æ’ܧºN°ö~±$ ¼~pV˱’ ³6Ù’’Æsœ$èmv ¼³’V«•ZÑÁÇ`y;D©]*Søqnn.‘qAYYO»@¨ôG€³Z^/[ñ×ɱž•lz»ÑœJ×h4äÔ‰vր¢ÔÀ®é2Ós­­Ì²eMÏ>K%%-ñl–0Xúàë7ئñM L"ë¤ÎjxNô’5*ÜeFÓ1㎈Rá»s*Í™Ó4nÜcDD´î–[N„x4´9sšŒc7L<ýÖ)p€+Ket;£ï~©ŒFÆRˆ^á[¸¿õ?rä§wß½’ˆV¬¸ûСÖÏ?ïf›ëƒ»ÿvl6¦Æ~(~Õ_gÒ¨‰8¯å9QÐ9í\w¹ÀðzÉÖía‘*| w›MŽoqÝ‹köWs××KcÆðDôûß·<üp]€÷|òÉÆSOÕÑŸþÔ$è* }Ðà"Qj7þò«Nx‡}çî@¹üä“Y«“í«žv À :…oá~Í5âÎÓ_|ñz"Z¶ì~ŽË˜2Eðyäœ9¶W_½œˆ~ú)ãÓO«ßyÇ÷a/½äعó»övùúÝw7ØØ¢šàßEÚùý¹ü·—nâE!Fn¯>Ú8Àež10ÖÔáf8D§ð-܉hãÆØ-[ŠˆèСÖ¬IñyÌ_pgžùíôé[•»ÅÅK¶nµù_^þeàíV-ªÿø‹ÏoÜXöÒ{µœÕòœ$軬ífg%‘Ójd'uw@¤ —ŽÅÅÅlÛÆUWþè£+‰hË–_Ÿzjí•W²£FI¡øÕM€oýMàçt/ :¦ûwÕò$Ø5š~6€ê„Ká^TT亭||ù%sÉ%︜5ë½]»®Fánúà¬N£‘A͸³<wˆbá»TæÆÅûï_¦4hߺuúË/Ͻürgßß¶ªŠëû›@= pNÇñ² £îgÜ­‚F›ù&€Á¾ ¨×Ë;w6Ìšµí¼óvýõŸnëãhn¾¹ñðá3fÐùçÛß}W—”Ô_ƒ€“zàœŽçeA+šqWü.¡]âX8D­ðq'"£Q÷é§Úk¯=ïÃcSRUíÏûlCUÕgDtå•ÍÏ?zì˜ïþøÂqï½Wn/X°F–VÁ· ^ÁøWßîåIÐ3ÖÛþÒÔM€sD<¢—êƒOéÞ{GnØð;"ºòÊusæ”=õT»Ï#'LàW®ü«rû­·.„¤áÃq©+@È(þèwh§VvÌš³¦›çˆx8D/Õî6“˜x2èccÛœNß»¢Þygì¾}—OŸþýõ¯Ï>ùd  |ëpžxX’ ñÖÀn®¼¨¥-QKõ…{l¬|Ë-ÇæÍ{ˆ¶n¾zõí·ÜëóH­–^~9ùÖ[Ï&¢ÿýO“–Æ ê@ +%Àïþ¿G5ät0Ún|Ì/Ò8m,¢–ê w"Z¼8uĈ ‰èᇟê©ô#|ñÅÝ,¸€A³xqêÐ / vÒwàC†‘>.>¶z'B°  ŽˆÖ¯OÈÊB›v5¹eQ¢†qÊZ]·ΰ,±ò±Ð H@%™ã4$ˆ|7»/±,1X$Ñ …;„Ïó$\÷…»L„wˆfH@)žçƒœqgîÍífyd™^xZZ–.XÀ¤¦ún:ƒŠç9»q—eú§eÚ ë¯®=€(ESMMLnnËO?½’˜Ø4sfëh/z2Çñ$ˆ¼6À1J€ïŸhMZ\€¨E3î+V´\}õ£ùË#DtÎ9ŸÝ~ûÚwß õ ¢ϳ²x© €Â§p/..îû›|û-wúé~§a~üQ¼ë®·•ÛS¦Têt­uuñii8ß Ð'} pžçH´J w8…Oá^TTäºÝÓÏ€#GÄììx«•òóO›Æ§ù<ì׿Ö-^üèúõ³‰héÒ¥§œb@èô]ß¼aŽ5ŠÏÕ!Àˆ„5îW^éüïsˆèë¯ÇýðÃþ·ßvú[üì³ _}5A¹ûÐC÷L¨5AZšT7ù¼ä©¥é¡@X‹„wTíj¤Ñ1iÃ#a" `@ETáªÄ02Ç…zá…;„Ãw€n p€PcÂŒ;@wP¸@ÀŒ;@wP¸@ÀŒ;@w"§pw8Ðý@•ŒNf#çó`€DHP®Xa1cËÕW7ÿ½ê±@¬Xa÷zÞ–ËàEBáþè£ ß_ùÆsn½õÖ[n9öóÏL¨GAéð]WÜ\\ŒLõÙíTZša³JD—]¶éÀ±O=õ·åËcB=.è G˜}ûö7.ÔÃðT\\ê!„»¢¢¢PÁ8@·zàû÷ï:t(Ѿ}û䈳téR¼Þï€wˆàwè¯7 CáðãÅ;àðx‡{‡^¼É¾}û#a;@ÄCá ¹T‘z&}ðá'Ù_ð“ìGøaF6üÿí/øIöü$û–ÊD2î*€Â@´;[w̸¨ w@á (ÜT…;€  pLæ’ÜN%æPFµÌ%î?½ÎŸ)~ =×å'‰_ÎÞ²”ç{ýäðk‰ðw¤? Àû ¼_ô[€£pH–ƒÕÆe…9¡:u }2—”T/(«¨([P]‚´êŸ$~9{ÉR¾|ÍÈÂŠŠ ·ßBüZF$üé;xA€÷~ pî‘ȲÍl9Êêa¨˜¥<ÿã©î©d9Xm̹ÐHd¼0ÇX}в‘©÷O¿œ½dœ_Öùƒìü-įeDÂß‘¾B€÷x¿éÇGቪ-cu9Îeõžq~Y×¹„jKgXG´XªC2*5òõ“Ä/g_™Ë׌œ?߈_ËÈ„¿#}…ï/ðÐ×çld:9…#-£ÑHd)Ï/1çà„„ ürö•¹$·ÜXV†[ÄÂß[øåì«~p̸G(£ÑØyçûÁHcç‰,ËÁj£qdˆ‡£nøåì5Ky~n¹±¬l¾‘ˆðk¹ðw¤áoJ?Â/g¯õS€£pD]/&Áz´~`5ÒbÞfÁ ¿>Ã/g¯YÊóó-ó+:CŸðk¡ðw¤ßáoJÁ/g¯õ_€c©L$Ê),ü877—ˆÈ¸çÔûENaáǹù¹kˆr +ðí=ürö–¹|…¨DùÙ)?½ùøµŒDø;Òÿð7¥Ÿà—³·ú1À™}ûö7n`Æ }²ÿþ¡C‡–ʨ w@á (ÜT…;€  pPîþYÊósss;6œ0—äææææ—[B<(è"·hÑ¢ÔÔÔP ,%5ÙöΗ_šsÉÆƒ”SøÆ¢³B=*è"ȉ'âââ3îç/Y`$2—¬1åb£8•@€CäAá˜qþü#‘qÁ|¤>€Š À!Ò pÌ\Rb¶YÖä+k%@àiP¸b.)1”•)'\‘ü*‡ÈƒÂÀ?%çs Ëæ]k%‘ü*€‡HÄìÛ·oܸq¡ø°ÿþ¡C‡fÜT…;€  pPî*€Â@P¸¨ w@á (ÜT…;€  pP>Ô ‹¹dy‰ÙBDDFã‚ùKæç]ÏYÌåË?žZV˜¢Á@7Ì%¹%fnjƜœùóÝâ¼H{P̸C4²”ççwVíDd±¬)Éw}XÊ—»? *a±˜×”äç—[‚;iªƒÂ¢e›ÙBDÆœÂ²ŠŠŠŽ©syQa#§°Â¥¬0ÇHD–5Ë‘ç¡P¸C3Ž4‘1gj‘ÅR­Ìů±™Krs;ÏÃZÊKòsù%'?Ì%¹¹¹¹¹%åæÎ§óóËÝfo,æ’üÎ×åb^``s —,0‘eMùÉU4n ž›_ÒÒ¾Ò¡ a…;D!㨑DD–5ùùù%f‹¥cÂÆÏ"GsInþW~[Ìk7o.éX!ß±^ù®–3dÌÉ™_ü† Ð+s¹r=©qÁür­~9Òf÷”îÔ1ûŽÐ5`öíÛ7nܸP`PlæÆ5«î¶ŸqAYÙ¨rÏÝù:ôµoßÉg}}‘@3÷<ß LÔ5i}Õy¾Õ#í—Ðr„6„©ýû÷:”0ãÑÉ8¿¬¬0çäzt£1Ç-œsæ»®Z9Š(§°¬pëØ.Gvß¹.²ë³Æùe®Çý¼ú‘ј³ °KÒæº5" 2æ,(,sõþíšömP̸ôšÇby€þ‡w5Aá h Ðk9…¡D‹p,Ü‹‹‹‹ŠŠî±Û‰ÈNôœV[ÛÜêA„»ÄÄÄP¡#À›ššB=5 2ÀÃw©ÌEK?*°Ùî²Û¹Pz¤ª´*ÔCˆ@á[¸QíöÚPzÐï·p7˜dYõ( Çà!| w"Êœ’ê!@o Àú]Xî @á (ÜT…;€  pPî*€Â@P¸¨êøU»½V–å„ G„z Ð3J€c&€þ¾3؅ÐP#8À@ßÂ}ÖÚY¡ô` „ËR™ââbG 3‘Ã@ôp(ÁñpáR¸¹n+Ÿë¶­»âú+$™a¬LèÆÝððs7bÒ ß…ïR™!¿b®7;ÿè õ@ gÒ³Ó«J«B= €H¾…»©À”<6¹ÑÒØí‘µÛka<$%À4t{$ xá[¸QV^V’1ÉãA”¯*­’eyÝËÊËJ›ìñ  /ºp÷I–e×X嚎¨ /ÂåâÔàeNɬ©¬qE¿©ÀÚñ@à}¡¾ÂˆL¦õ—­'¢œÍs~b:zΈ†IRHÇÝpxÞ¦¼P@eTY¸W•VeNÉla˜ûWîÚY4Uy0V–Ÿ·ZÇ‹bhÇ(ND»WÍξsC¨‡ &ê[ã®\Ûd*0¸÷|è™%ÿkiù_KKš,aÐñ |¹ÜT`àÊ IDAT²Ù Ð2 GÔW¸Ë²ìZùõý9„nb*áàÊ 8@ðÔW¸{´ 0˜ÐM @à}¡¾Âݺ‰¨ x‘P¸D¼ðí*S»½V–åÄì‘¡ôŒà˜Mè_á;ã¾ë‰]}5B€ „ð-Üg­ê!@o ÀB¸,•)..öx$&f!9…T¢gC1"Šw€À@—½¨¨Èu[ù xý÷¿º|}š(r¤é¦YXíöÚŒ 2v|à‡w€oœ»1ÈIw8@ðÂw©Ì³ÎÚV’!Ó=÷Ø­£ª´ m€ÂJzvºÏ]Qà}¾…»©À”<6¹ÉÒìñ¸,Ë®Ïk•Ð Ì(Þp Áãq÷Wn À‚.Ke|ÊÊËjmk÷x0sJfMeMUiÕÁ¡qtõY®Ý³ |dåey?è på. GÂwÆ=S©¦²æèçGc)6faŒò‡=À2v&ÔC€@”¯©¬AÕÐSa=ãîOUiUæ”LIßÞÐ£Xgšx¶ž¥3B;4D p"š½jö†;7„z8j¢¾wåÚ&S)ûŠl"Úöý6çNçNuþ ЏÜT`*°ø¼€üQ_á.˲ëk C^m <¹¸r<õî-L&tP8@_¨¯p÷†nb*…^$î…;€  pPðí¡X»½V–変)¡ôŒàX¿пÂwÆ}×»‚ }t+p€¾…û¬µ³|>î‘òU¥Uè&Và!\–Ê{<2;v6%‰)DëÝ—e¹ª´JÙ¹CdB71€òpÜ\Ù6¼p)Ü‹ŠŠ\·•Ï€Y³f~ct»`ýo×1fNɬ©¬©*­:®M§«ÏrmÂ!áàçnô9éî på. GÂw©Ìég®ÿ»~’8Éû)S©¦²æÄw'Xžá¸½Ê"ið ÞÒ³Ó]Õ¹%Àk*kPµôTøî¦SòØä–ƒ­ÞOU•VeNÉL;=Fƒá:åô2ìÑÁ'xP¼á@ƒ÷SJ€gNÉÜ4{ð já²TƧ¬¼¬#ížµ¸rm“©ÀtàÐQ"úà¾UÓ6 C­DIƒ=Jð’•—åý +À‰¨Š \ëÝ á;ãî,Ë® g9™ÐM @%Ü\¹žú w¦º‰¨ /ÔW¸{C71•B€/ w€ˆ‡Â@P¸¨ w@á ‘P¸£ 0€J!À‚¾…{íöښʟ»ß­*­B`€°‚á[¸ïzb—Ïþ¾²,W•V¹?‚6Àa%˜Wn À‚¾…û¬µ³|>®¤|UiÕO?Qç¦Ù>º p¥jG€ôêt(..öx$î ‰È02•^ýÇS¦ÓúËÖKgÅÊ$ÿ1æÊƒ"½,0 ÜyxJ€QÞ¦¼@d —½¨¨Èu[ù x5þOøÇYööcÞW•VeNÉ<2´ˆ®q^£õTÇ•k›L¦´éiD”Z’z©óÒK—†`ˆàKzvºÇÅH W€› L6ŸÇ€?á[¸› LÉc“›kÛ<—eÙcY$º‰„%À4x<îàÊ 8@ð·p'¢¬¼¬„ŒX=Z˜ Lè&n²ò²’Ç&{<ˆè‹°.܃„nb*…^$î…;€  pPî* …;º‰¨ xê+Ü=R¾ª´ ÝÄTÐê+ÜeYöØlÝÄTÁ=À•p€à©¯pWR¾ª´ªö“Ÿ©sï½ áœ,@¹\©Úà=2°…»¹$·S‰¹‡¯­Ý^[SYãó)S©¦²¦åP q»w+|¾ƒû]œ“Þ€xMeMàªàÈ7·¬6.(+›oìÍ‹w=±kÖÚYGýèýTUiUæ”L)ý0î¼SyyþC¶¥Åý0圬òÙ€s²=Ñîó)%À‰höªÝîÌö÷po9ãnÙf¶Œeìå«ý…¾2 c*0eü2‘ˆ>˜YÚúÑG­}DDäp¸Ù—s²Qm€ÜT`*°Ù<.Xr‡ð63îÕ‹±º<7·„ˆr + s<ž/..ðêÓO'"ãèÚÜåqY–=¼v{mÆ>ßÄT`ZÙz‘së5ßu>x•ÓƒS®ô-ÀýqpS©ª´ªÛ'¢¼My½øZ‘g ÷œÂŠ‘‹Ñh$²”ç—˜s<’¿¨¨Èçë”σ¥ã^™òôìÚÃvÀö8[ª,—ô7åœìj­6íÁÖû¦Ñ,û-Ç=lµöê[ˆ} ðs7úœtïE€ÑîU³³ïÜÐão â pW£ÑØy³ú ¥G/iJ¯^óIjŠÔí‘þ>ºÎÉî.šz \UôßG­Ö<§ÓÖ£qD§>xzvz€e0îº pSÉf+òÝ"Û@îæ÷V=],i*0%Mn;ÒÚë¯ï~Nö÷œGè&¤þð† ½þú‹j0ÐKe ?ÎÍÍ%"2.(+ó\!Ù½¬¼¬ú©×_¿Gçdà¤þð¾|}8€·mI9…úzˆa˜P@àáF};§ûw¨À[$îÊþÊí/˾$ìß îŽ ˜‘P¸û»bɵ‡õ„•°@øé6À±€‹ú ÷?U®gš„)eS““ ‹ ÜÜÀ<õ"Àk*kPµ(ÔW¸»Ÿ?U8ªìß¡‘5Ûçlojljjlr\ã`Žá '€èÑ%À3§dÎ^5{ÆÞÔW¸»ÎŸß}Œž?uíßÃÅP燄Jð `Ü7`*ÀLD¤ÆÂ:ÏŸ¶n#¢¹sc•?2‘(v9Ì}ÿŽì9Ù„ý;B-È0Ø€ À›* wåü)ŸKD×]gWþQ{{—ü÷ï8¾çø <¹ÀìNÚà08€·ð-Ük·×úÜ'Ïuþ4!k(%í®œ9S˜9Sðw¤KUiUÚ™i3X8©Û7˜l¶ `àÞ·pßõÄ.Ÿ-¹Ÿ?Uø;ê~ÔÞ7öÚ Š`<ðôqð¾…û¬µ³|>î}þÔ_71×UP’(Ú –~ pôqpáC=€ÅÅÅ KL$¢q±1ݾ6À4Œ©À´þ²õt½|Ö¼íÃsDÄs×Mö>²v{mÆ=4ø ðàuàDy›ò¿ ¢D¸îEEE®ÛÊgÀ3¿-ÿíÚYß¶[ÿЇ·U®‚"Fþ浤1‹Ç‘ƒaOÔnopOùŽÃ ç¼|ãÜþ&݃çJæÝI³³7¸÷(Óà=Âw©ÌðìôÝ¥UÚ>¼ƒë*(–“Eq¤yÙ‡ã&IFÄ`õ$ÀÀIÏNïcçõ®—±vé㎀¨¾…»©À”<6¹ýpk¯ßÁý*¨Ó®<…Ü®‚ÂêI€£xÆ^¿C€ËXàµÂ·p'¢¬¼¬˜áq½~yà6ÀÊ& –ÊšÔ{Ïÿže•?½+¸ÉÊËJ›Üë—àÝîâa"¡Tõ×M,p`eYdåŧ>¸r×5±±×ÄÆÎŠ‹û·F3°c7} ðÌ)™»WÍØñ„õîÞi˜û:Èßÿ‰Ü¦p\«'ß.¾ø:»ý‰%Ÿµ´\k·Çq8t€èÖ»÷XÈÞeù»­ ‹éTD}…»{š+ü]–äZ©Üu?£ê¾zòì{Î#¢Ýÿ ´ù6ô]ðוXÈî½üQB}…»+ÍOì«§î.KRÖA’,Ç\jØËíÝËíµ2íDÄ0ŒÇ‘þf} ¿ôèºR ÙàµÔW¸SgšÛNX‰èsŽSþø;©Ë„º÷´=¢„* w%Íù4 Ê"²Q—i×:H"š$L\uߪªÖª )C"É5ë#9%êI71×Q@0‚¼®Ô}!{AÍ}…d¯ÛA"À@íÔW¸»Òhmý µ•ˆÄ®…»û:ÈôߦS×ÔVf}$§ôë7?)>~R¼îisÌGéïà:*èVðוèãNÁMÛ#À ò¨¯pwOs…¿Iï6Àî©­Ìú°2ûÑÔÚÖ·µ­oljÜþ.Kn°?@? \Ž» &À3§dÎö?m€ÈÇz~Õn¯•e™¼bÖ;Ík*k‚|O×%M®YŽá¤Dé“uŸŒ¸péÇy­šÊŸ}iÀ%À½ åþ p"*(-¨*­qሌ 2¼¿"LøÎ¸ïzbW³#þ pžôøžã®?wѹ5•5î{ò¹S>W¾Ø^û‡¦g$$d$$œ’ ,©Ÿ-À•ˆàØ`"Føî³ÖÎêã;¸Ÿ'­ÙVCnŸig¦¹žúü‰Ï3§dºïÉçN9!{xꨢÂ÷·´|´uߦ¶¶°O€ýà ]Ü\‰èÀ€Ú…oáδ3L;ÃØ=ûõ/ÀL'Ÿ’;žò9ë£lêa*0(¼#zïÒ7 ‚Óë@p´Žñ~*p€+®¿l=.Nµ —5îÅÅÅl±y®n®>[OïõþmM¦õ—­§|óÓG±3'"æö;(#óäSD,~×`XKD,w—$v¹{ÊÉ–üñAï?¢œw€oœ»±ï“î®”ÎÛ”üS.Þe:Ô.\ ÷¢¢"×må3 eqÊVÚÿûá}y[å<)ýwƯ–^ND²ÕJ’äþÔÎGN¹èÞt""²³l-QŠëåo™¨LêÏ;s8QÞ¦¼à¯£ˆÞžž^UZÕǕ宔ž½j÷†;³}>µ;ivvãŸ/w¸r |—ʘ LÉc“ÛŽµõúÜ;ȱq•‘`2‘FÓå)FÄ3ÌË&üôßKIŽ÷9ŒšÊšöÃíã[ÆþføÅÆ_èVè+¦müR¼á@C¯ß¡ËL¶.0ui_PPUZåoñºÇÅ©h j¾…;eåeŦÇv{˜¿Èvo<âìT÷#Ý›œsû„M ”y8!îû¾ÇŠõl½'³‡ÃúçrYyYÉc“»=,˜÷èø|Wvï¸8ÔN}hð›áy7 v…»{S‚/žÙí¯)ëÚ¦¡)Cå4ùÕ¯ž¸ì„0]\áÐcýàºÊ¸_œZ€‹S "¨¯pw料 °+ܽÎø|÷”O¤DµM}ün¦Áxà®2¸8"ú wWd7þØH7Ãsÿ„8¼ëuý„píØ×úçæ-ü–-ü+cõx‡‰·LT¾–­ÁFDy›ò0aÐkš{7œ àÝvP õîî‘­ð—ÅîÓê™ÒMãþ³zu»^/“ìã%ŸkÝ›Ž¥ŸÅh:Ý ÐäÑCײ»Ë´z/6äßfQÞ¦¼~_µÙ-×'M[z,SÛf<Úzš(‘Þë3)sJfMeM·WÜô/ïß8wc“îÝ8QÞ¦<÷ÇÝ<@»W€+wCàDtàƒy™Sü‰€`„ËŒ{‘å‘Ô_ΩXRæ°ßãqdÎ'VÜZ¡LZœóåá¯ZZ¾jiÑ‘¯ÉxsÊtŽ,É1dÕ­X1¦j-·cg¯¾Å^’eYù¼9úÅÑýÅÓØÙ}wïã?ä™fSGÊh«+kÆÝs^=Ã|óÙ‘z†‘s¸}¼<=;ÝçæJ½p×\µKðíb<.Nü9lW€×TÖ(ÿüð¹W”Âc´XãÞÂ¥p÷f*0%Mn;jõxÜý|¢Â•ÅòÞv÷Ç+n«©£0Cô݃;Ý>!\]e^ù¼Ø¼¼X§ƒñþQ¦s’­-c³µ~œmméŸï08 Ã(c6v˜õuâgãÍñº§uì~–ý¾Ëÿ¾ÚíµÊ‘»/>õÖG¾Èæ —æŒÍŽ_­Õ怔o8Ðàñx·+×]\n*0Ù¼öX ²]ŒÇ5¬ƒ_ »<@WW€+ÿm€»þ¡âo Á ÑL}%k®%>SOD¶µmnkÛLD2u4Þ’sF®-ÚþõéC>3ÇÝ´¶AûéO䶘RiJ Üþö•oü5% ·¥ðœ^{è+ÙÚ2¨s6®nbi§ë$A>¸}öÈÜkíö›¦Æç‘Yónò»;ìºc¨ð­QßÿeˆH]'Ë»¬\÷èœ(˲« ŒÇjx÷ÐU†ÂãâÔ“ßTÒlêüçDà#•ÕðþŽ€h¦¾’N–e¬®“¤†F›rãØØ]¸çÝ}7­üäÚ¢ÿþí¹zN”Ü_¸«ŒÏ¥ðÍõÎK.‰½ä’Ø÷ÞÔš®s»ºDÕíŸ,Óa‘ç¿\GêI/ò¢-Þvè§Cr æl \¸¸ÇÊuΉ #Zª[|®†ÜU¦§KáT—ojʼ œ÷Áùé­ŸÎ#ænbVbU~•­ÞJtž/nøâ7êß$´íœm›Ȧô^©qÄEà‚3¦®>¶ÄatœŒ9)މ‹È7fƒ€ê¦}2¢©ÝØÅm|çŠ*–¦*¿ªdgõÜ?èé¬&¤ŽÔëÿÒ9s*xT]9ÍsÏ=ž{îéœáW``–§í‹Ž¿B{ûYKrIáRn–ªü*¯‚s©x—‚wÒy×àòžìe¹,ç!—,À)¥ àUùU‰Y‰”RfMG§8îð3¥§LM‘?\3u Ù0/ååÛ?|塇²³³‰ àÆOnìaJyü«z‹>·µ›Häƒg>øÃ¢?¬Y¸fíÄd½5,`«T6¥×ÛÌáø#<(t“M¸ò`è};qk.:â[âº`ŒªŠüªwf zý®ôg†õ~@«}]­öt]lB+íÉãMÞòÂê‚¥?U¾ëp¬U*2g·×Û¸ÝؽøÕ¤g¢Êe[+Æ+wëKˆÍ±ƒGÍ%ŽK¹Yœ*þ?z×s“ÆMª×OÐëOqºëå=ÙËrYÎ].]€{d˜¬íåähfí˜e¯·ã?Sú¿òþ%ÈŸˆùÎdëàgÕ5²’ÓwvÑñϼ‡á ;ÕéÒUæ×ptÛ,¸ ðËrYÎWÎËÇ=%eüœïoÙ²eËû ƧÀgÂy(;û¡W¶_°’ò……|a% ´%tƒ-Ò$2µÕ£÷`ë”Ï&ÞÚÛ»ñXˆ[Joä¸ZŽ«(:F•!cøÖ˜Vq„ØâVŠ"9Ð*Øör\>@å³Yþ]ݘ-£ª>RËqlLqãˆýÕ×{½kUªr®Ë–­)cúÄ–êûüÅ}ímÉ#´œ³¼ähbª€™oOy:'aÈ=Üã³ûSÏiŒ;tÃ3ÑëS}hÀï^⸔›¥5Á òÞ赇ß+«ßkïå •³³ìR8ËuIY¿.Ëe "à]I7/|§P¶©ÏŸïÊ‘;â©A=Ôý£ÊÜq£ÕleŸ§æ¯IÌJ”]nd€3Dœà8­kö„$þi:»èøgp TWŠlgÛ|Ð-‹_ ÀÑm³à2À/Ëe9_9ÏéåÛW¯~…¾@JÊøñãSRP¾}õêòóÊð%?aŸ|r×'óBæå*? Hé-&~t£lU£#”Ðø#[¥§žŸ~réqå ã÷èt“uºÉ":ÞÞÕ;Òdh¯i¼ü÷VíQSÿâÊ›+„ß²§²G ÇñªÕª¾e}IM`£üÊ·ÚšahQŽ¿§æ/Oô½w„Z[KˆãìHÕ85%Ó{U¥Wm½v«ó#':Þï$GÓ¦ÆX2òƒÝu‘f³€§£=_6툛ÒÔD6¼T$xîÒÄegá=|Á£cÅÒ—hÈÜîÇUthyVìªüªSùU?dÄçjÕ¦kûýW©t]Äi¬³ri6æ/'—ç¹_£\€¯¿k}ДõNà”úž˜•˜£Ñ(^[,ŸU ÈDxLz 8×üùUùUÝN ª Ëprë좵Eçz*”¹èøç#‹8ȓ݆ƒì¡mþ×ptò\ àlΪʯºø‡q/ü2À ¥²ý•lŸ]&%eüø9sæŒOñ{´Í ¤tñÍnäÅ_”ÿfè¿yèÍ7?³òfõæŽ)™¤)Çds ãþ© ÷ilJÑÀò›{Muö¸Ïo¾õ*ëܾ-Ï ÉœŸI±& *YÍÖðþámµŠÃ}›êùÍõƒë©À^øyÔH^‘ßË;êÜÄ@½ÐÐÇpjÓ)C’AíRœ9xÒÁM&zÇPâ %‚¤àU¶”ZØF¢w…—öÎþ(eRµ6ÀÿdQC¢\m.SŽ©9¼ƒ‘˜•X½³:alBç eÓ€Ÿ¾iüïº;¹ÚQ­4¬C2—JÙRÒ’zm¿¥r˜(ö—ÏÝþ¢ÒUE˜è$€–kLÆiÅñ³ãqìÒFà—¦_Dß•—øm©3R»ùbH¸À¶–S›Úà5Hé^nv•¤jêRÔ6ËÌ—úáK´¾}á…’˜•è[½}]žZ¡Ð(âÔêQ¢8I8ãóôk´s5§±øÙ ýç:Ï]âõýÿF.*Àƒ~~Æ n,\×–!î¼¾ÐXØo~?­"3(À‰J àòçrŸ<§Ã©LRóל̚ÝÃé ¤8}ÑiP½S8€ÂÅ7»\ó»²åw¶Í¾S˜ñpF@2àNn Tý¢09o€ãt³t%þÍÕóŽ +þO›™ ñpcçÆ¼ ðË¿¤ä×w“|,I§€¿"SÈÌ2ø<=T¼ãÇÛßÞ·ì [n@2Ù :(ÀÄ…y¯Å¨æs‘oúðã°^Ó^¿vî¨d!%n+õE×zµ¥7EÕ ÝqìéÿxÞÿ¼áÏCº·ÊøÛ6Κ•Kå$ ©MÛV£­)áK$Hõ\ƒ¹ÙC8µSY9y}èµÏñ ßÎÒUž?Gº¹Ï@Å€ÈÖ-fï)AÕ®&ÜÝZݯ³u¶sü%ü9ÒCsš<Ï­-n»âD‚ag£«çk;ž¾ì9zYºÿs¥óç»ü,ùóùd°@æ^•_uõÓWŸ‰E£Ñ°8’ìŸ=?œÊHbH2¬Â\œK8H&kòS;—–I;úÖÙL[ ša¯j’`ÍÔ5²Õÿ‚È8N7KWâßìs¦ cÕ.¸tpMNWõúŸ8ë‡A“]ø%.¿>ÅÝÿX“3û§ØN«à|Uf{·ÍûªFc!¤SØ,ÙêSœ;VÓ$iá¸ÃŽþkÖG.+ºæíuÉ,™¬ žÄĬøÎEj+mcŽzÎ0'¯²W _úñ…Ÿ¾ÀgW‘±%†x!Šò?í÷ìÑ×ÞL¾1›A­›³å›> ÿ¡lÓ³ß ×tJfìkl<ÜhH2Ä´^¯;ü*³zàv¾_.Ü\ÔUùƒÊYW´¶èèÚ¢ÜGF~þ»ïMèó’F³ƒçƒfåu¸þ;ÅËToýQC‘vŒk™_͚㤖$õ·_÷Ë–YA”¸ƒfxNÒCrYJ-¬1cÊ]sŸ(_òhø+×ó 'î«íùœ÷² ÛÙIžç{é7UÙÿžÝÿט§ ¹C«uuLv‰Ïsç-—Èù%RŒó€8À¸ÊœÚpÊÐxbVbáô×ågo=Y•_“#ғé2Àde V³µ‡wYïL™XŽ.ôlàg |6€Ë×Eu•‘Îô]¹äAå—¸ì¨sVažK]–í4ÀYY‡}çTÚî2?G€’ «òR¬fkW®#ÿcǯ|¡rÞr‰ógã×§¸7s~¦ŒKIÅû4×%€–ß r×´«(]òZ³¸úÿwýÃAJ$ÄjöºÚˆ!ZŒ‹°µîAê²^ >㽬ßSQ ‹ ‹Qp{Š$ã†=àhñ¤cÛåš58K—æy¶à©(†ûn<þâ k}Üe3Œ»Õ `ꢩ½_èmH0€˜Rþ›úU³óïF¶š­Ê°v]¸úëƒêûUå7ñ%ÓŸß:»ÀYÍV·Å]tEtĵÉuÆäcHwWˆ.hQyÑ@Ph$½ÆÄ€R®¥Å?A¯±½˜µ‰pêvé*IDï‚Ë… p2µ‡ä¢ ê0µÕlÕ[µ5sRkF~Yµb"98D < Áæ¼]Óú¯7zIvê3!!/k4eÚüÄW'~~ùÏCz23Éó\ã´!Q%®UW)NÐhø2/zɹævñå\qy‰Xž.‘b\éàþÌ ß=4ºáo“- þŒ¿ÙÞ;e* €ÔüTt4"ú…bì—Æ_üõÅ5SS I†ž˜~;¨ûB—ê~íèØpØ:g¸Õl²²¬f«|LöâÜmq§N]¿xù]uÍÔî,î2À¬ÉO}-îç p«Ùš^šŽŽ×÷HÐEKç6ÿU\^¨üœÜ.¾\8“_ŸâÞYdšs§c¢ˆJÀ}ª§ÔŽ{iÛMßµ£cø‚ÆÃò?cÓÃÝ·×îà™¢Ö\)õúÎp-ÐQ¿ÈwÏn(ÚxH”†vU<¾7ܲ!íé×®þ¼BW‰åÙ‚R€Ò͵é9¯)xPL6èC5~|ìǨ²([‰ @çÀ‘r8ÈÒ‡,%ªûU]YŸE·(*…P½gP£òñ•ÙÝ9Á`w~$e€;86iß”¾?\ý…Ry„ç°Éµ9kH|Aà Ëwÿåƒê§WÕ)$h?VH€¯Û'¿ZyÏ]ûÿL€˜7þ>¦i'[nø´øE_‡—[ÈÙbãteñ žËØ×hH2¸-n¥ÆJŒÇÓ¤ý0øU!  ¤cÓ³9ÏîÌN1³ |øvÝë¸=µÊÏ6û·yÏ­YøŒEk‹Ž|\Ô˜`hL0ÔCÊ8. û´×´³yÎЦ«¾'õäÈOŽ>Nt§Cñ6;ëNª5ZÛ¤W×r\ÃÅqNsjÐ^q¡FÄÏ”K¤¿ÈÐ\ Ib v“?ÀS²Sd€3Y¡ô×ï]óç›rLg2,€zOL¿þiRó»T÷ýíè7wmGÇ9Þœ*ºEœöE‘ã\X€wþœÀ'ëÁï}u¥ˆtSl‡3ÁÝÚæä—¸Ûân^oH2Tçï!‹YN|uâ’x÷Î*n‹Û?8Ò¹æöKËe€w%ÿ Š»,’à‹ƒË &¾+Ù?d𻃩Âõéo?¾Kw×]º»$H8}Dƒ}ËZeU‡©•:eœK\ýàè-q‡‚GÇéð螤<Çþëppmm@›å욊BnœXùdŽøæÊ@k± Gx¢J¤:JuÁ÷deW™jÔèîÖy_ðRè8Œ}uûëGD"íßjvòXŸ/ ´•¶ùÃîü¼'àÌѺZNLÿ)¿wÄÒ7§ÿùÖŒ ÝK|‡£Õº^:n‹[b%†£C,é»@J(ˆ³sn»÷Ç~Ñ9ïÜòèÌ«¦¨B¯U…îéÂ3êgJPjw3§vîAIzÞ#âÂNÉd`^úÒYsNÆà ‡À¤Níp“?À™Ù»PÎrà2¨°CБÛñZ¥³„GôWñýoN pæ¢cH2È¿{ÞYCm+mcV¨j<ÜÈâÖw£ˆ°ÆìJ5ì謟j5[ƒ6àϸ<ꃖP¸:L½ s­f+C\çdò¢¥³¡ú’xçç/2ÀÙBE¦Œ:w.¹]@¹ ðs’ÿ)Ũ8>ψ͎=¡;QŸ]ß¼â·ý¿N™ëž;×=—A”i·¬Ox,BÚÌ4u˜Zãî+jÍÜb~¼ éÑ/:NÐÕÔ²à8¦+ZãkÿÆèYx+"l™ðÊøç5qå[9ª¾r\ÓøMBY‰òç—¶çsyÀœ*K[i›¯ ©þlD­-Ú1$vßmi?Œîý±JUØqùÑyJ.\Ñ#£`Ï…ãЧÅÇtêš+¢ËÃŽü2K ÿC鬹–o-÷ýÓØ¡=e€›rLÎ'8—«ÃLþg>3g ~wò\L¿²t£ÜôðZ%SñåO‚Üj¶2ÍXî®ç§t£¡Úkì`S—#Ùk÷šó̲"ÒàNf´š­†>Á½ð;:ë—wå¬ÿ3ÎTÏ®ZC¸!É€‰p[ÜAÕnÒÑ¿¡š¥gÐyãå"Á–²È° sýW}ç‘ÛyËÿ À»©ÅEøyÌùŸRÜ©äã5!€½Å{]W¸RßKmŸ°?^Š7þÕ8M˜FNWY>uZ~eÅöÝÛ‹'“ì2ìKLÚŸÔû½5ÏjÐQ¿g_é>X•Èsz5;úl™ìõ°ö@å¥ܽ¥ö­ïꕺ¶È·r¨ À ›PéNðü^¤c ˜®2Ã,žÖO©ó¯,ÒN{M»<ZJZ$A¢ àˆ¤¢šrƒyÒ“>S²Ûâ¶×Û¦FU$Å|ÿüM¿úí£B OW"“(Ψ,¿-­0¢põ­¯ä.~  …À)èÕg¿ €8ÏXÜåÜÔJ²kþøcƒ6mûëÇvO‘¢jxkå9•0¨tžË]Í]l(XQðÓ{…y]•÷ÐUÿÕ{™Z}ŠãXÍVÖ+šŽ6ù—Ù¿ÍqzD”…kRˆkøèZà]»Õ³$“žé…+ ý§ä‚ŽæíÖCé¦î¬;§¦–ö‹[÷÷[VÜ•9SÐ}®¼« KGüÝ‹go]º¡T£ ~§N“¦$U¹o5~ú®¿~§Uðnü‚ÊÉ®Mé2Àe?û®|Ü»q• pœ6iûMY?±×Û‡ßüæÚ†ê¯ÓœÑq@%j­²2EÄŸEÂÛOí2¼=õ…nšŸp«òRºÒÈe€[ÍÖôÒu˜ºÑ)ÈÃDø5Kïµ{=ížá÷¯o>Úìÿ•‹p{q²øo›`"V}²ô0·ž”0¨œ+ÀÙ¢( `çðîGÄEøyÌùŸRÜq:ޝäô¿~ýȇ^7Ú)—øÐPt\WɧNC‹B5’&‚FXzUûuYfYÅ‚ ×¾n$ë÷'= }àíœ9àGå®/*8c×ëg-y K €HÌʽ>0à#(@H\Q\쇱ª¥w9š˜>Qà»§nOºö-§ó­Îu÷w•i,V§LŽV„Ž‘Ÿº-î‚ûß?X×?²þЍ–añÍz(,c"ŽÞœp¨À^k\ié=Yƒ *=õ=Ÿÿsõêuæf࣬ºm{p¶8íŸh WéÄJɾ"̾È@Ô¸}:®$JQN/”vh­BØ}mÿøó¹K\ÿwè-îÐ#‰áÌñÑ-Àˆ-qžž’ªã†õ9s%¬ÆI⢠S6›¹Ns"£|©¦ôhÓËU|µâsþ1#Ycx°ûÕÁ%•!MYt¿mï>óÀ‰Y+©§ƒDv‘”(! âíQ ³í“òE{_íp®Çæ*"Ëõƒ7%Íxñ*N„â`c{M;á £àÆ~ûéØ%/, ™SÛ^x÷µûjÝÖ3|g/qÏo¾oضy™_ß–¶X­nïzqÀ‘åñËk÷ÕÊÿÌ‘+sŸ½8¼Æ«Rªš°ã³ð#M^±ãâP¶ºñ%¥TäI]n5³y):l0œÉ z·|M ¾[ñþÄEÅ&Ô”ÐT®H^á_®ÄÕìòŸË—t÷½¦ÝQïðÚ½GÇ÷‰>.$FD¹ÒNnPÌqjåëö×™4íš}åÁ´˜Oî»êy¥æ?w|åßæòˆ°ŽÖÒöØ—Ï}ì}pUó G¨óŒÛ”£ÙQ°¢€MÉ+ —@pö{ÀÛé¦îr16/ºîšo~Z~ßò·WÞ÷eM™)pqø«J)8SÄ)èàYƒÙ£€ø3ð;uúïgÏô¨Î×'uuÙ“¿t0oÝ‘A¬éÚâÞñZ¥ÙU]\«„€³¹Æ›öØØ/XQ y%*QeˆÒd(Ÿ¸Êßh*÷I:k«çpy˜(¸g󙹬ãF´8)¥‚KY™ö÷\?ÙímVþg*~P¥Yx©†•ᬵÎ\p ó€.œ:ú¸7$âl{f›JÀL샽ÖÎÎ)¸Uy)n›»|k9{”;#7(À VôPk?€#Ø‹;SZ¿m¦‘µú÷07\,€³E‘Ûâ–»™ ðÚ}µ^‡×_k ð #B–‹ðî‹ÑsùŸRÜ9 ñ…n$ÀÕYâp,µÙ¶ßG½4Â?|ÿ©S£dìE{Ån‹uåõ»nUïQ’G½¢V¿ÆRÊú=‘ÈõÞë¯÷^¯¥*É6ŽÍiÍôÔ¹È  þ­jʲ¸eÁvú€úI…ÞŽz_, x&G³×;$f%vµöõ7lHuMÁä¸Ì9òhÝ¢ÇæÙóÕcúmýìþoþ5sojÚÄ{&¼_ûÆcÊ?>K€‚Š”R© iŒÔm+î¶zù ŸR",Zj­è`‘'°€ùÀmuK’$êJ½»½.µö§ßì{ûM! n‹›RhŽ6Sž"qTH;þõê‡ÿZöÉó'V=;fo³Óík^€ªáî·í¶íÍ@àa\9Mƒ0êûÈékúòÁx(ºEIš¯LzàÎuÇ__òÄ×?ýñûÍ*:Ñ|EÒ ö‡³Å©Ð(¨Hy`”ÔÚcBø|»À!u\=È.’§Ñèê“7ÜAÔî­]™¾’%+ÿ¡œ2¥Ju}7¦Üüç!9ÄZ§bÝ2¼Ÿ£ð±Ñ¥µää ÍŸ^HŽyw›µÖ& ’Ê ò¯ˆÇæÙ{û´šš•Ü”¾/Oý\ô‰UÃV¨ÝW»"y«ãŠä^§×mó5PîŒÜê]Õ‚ëL›²¿)Gµa.uY¯ˆ­ã Å>¸t¶º‰¼ î1ʦçT·s<ϦúrVy@ =Ÿ°)kàS÷s"ÄÝFDŲéeEò ·Å­‰<Â4àí¼Ûï]öõ´{jL5'N´}ûæ[–Þºþ¥ëžôh7?·£Cæ?TnRZwÛU¥e“?8oÌøû#ÿ«oJôŠGoW.D[C-*öܽeg¯Èm~zDDG)Koº¾Ìu»½èº«ò@¨›kÇéÙ€.aÿâýûþ¹¯|hìOs3Lw ^ÏQÚ‰ IDAT­R}ÙÉß ~}Œ½ö¨sÝáÿNOƒokÛ¤>~Oö[õ)']$Јð«–a ;«.'gÖŽY*xg€gÎÏœ2Å@V÷ø‡ƒ”õûgñ7¯™ºÆdsV]Ü·`ê‡Ó9dOή.òß`cßcódÍßJ8"zD«Ù*Y Õ§û €ô¼Hø­IÎà€OC•+åï=Ô9”RÉ+­ÊKA‡X ®UBÇ×Pß3áóóRÐQ•÷pI”F?õ]À£³\$¦z]?øû¸—O\e5[{íÅ•m. p€-dWxg³SÎÙ˜—AEj©°0•´v_mP€{lVÿ­ƒ p ðÅ!À IV“ >ýÝäÐà?à5¦öCÑC£Ñi±$@@7Ãi€K‚4îÙï%Aª;P¤ÍýF{q; ÎÊ€â ð®Šq®ò?¥¸St„§¶æQfÅÖƒ´^ÌÉô%œñ‡ _Ähÿ5ûÁ1 Ÿv¹æ Þ;U ¯$üÆû=ôìŸr§ŒIñ…7‘ ñ¦Õêô[tâxlÎeqËXçX·Lp ‘C"Ù·üÆ0â€F³L©ü˜}$wùÆlÝà‰WŸøæwWë¯@I]‰R:úÙÑlæ†:M¼iñÞŬæ„Ñ#RJ¿[|ýØÏMo>ÿ‡ïÌÙ±çî=Ê/ÂÆZêïØ%Ì)àlqžBø‡–S†ïNš2û†Œw X¼M¤Ä gf‘eqËø&0k…uIÄ_›˜ªAŽJ¢Rjʈ:ø»ÁŸ}qU\(33H„s9(GA(ˆ„†2~SuÝ£î÷|ßjñÆU0šk4 )Ó>Ö&Þf€@„ߨößõã’<'m¡¹ÿRb¯F~;MGš·€Þz¥(¸—Û8ÿÙ{=ú8¡X·<ïÏyr¥–„/‘¨¯I5ÕCxB9ÊE Çìc>³äÔ´§³®$¿ 궸%¯žÈÀ|ËìtOüŽ@ °VZW¦¯\™¾Òëðà”œG¡ Kââ§*ú? ž$£*TEE*è­:¥JiS+ ý¾8㚟^¹~ß+7š^œþZ[Hµ›'„ˆn‘Rz豬лãoxÔhÕÇR]ÃÒˆ¥òë¨ÞY½$b 3h"5n‹ûó?gXàuxÙ¤R½«šJ´ß ýäÞH%ʘek%n»}\]D4(L9¦oü–%c;Ë­'ZEB2v—ôÆ«°¥R‚Hä–a}ÛÓîa{_ÕzÿpÓ„œ—§ -%œÜÔcò´{(¥+’W°ž ží3²¾Ýëí-mao{fÛ’ð%¢×·jj<ÒH%* Òþ†Z}äöªÈkw©šIEÍÊô•¬ r³ƒ":†oÑëè§±4ï9|\-.I”@ÑxßøðšÆÒÝú}‘»‹Šÿ4ùà“>;õ]‡æ{§’|ÿ†uhxAâðÇoŸ©q[ÜÛžÝæ{;r݆˜³ÅI)%„€P]½.jW¯©w^¯´ò÷™ÅÃÿ€TﬖÍ‚Àx¶ø-Ÿß"{khrrüoYêæ²'¸Õl½u¶ÿN‡{p¤æ¯ ¸„²3Àe»{Whà²7¼\Bà”ÒUy)„Eˆ§—r2À´¨ÃÝ7S6—F-=W€3Cµ.V'«Jþîѩ߃€éîL‘%&=ÆÿZ%ÿÆdàYB–Õl•Uü P¸0ÃÑàH½Ñw€¸'ç&B¡Qø÷¥Î7$òN—_NÖà01O¦>£AR0€K‚Ô6ѪwUW殺‰Sprie€³—@~tÞùŸÕlm)MïP¿–‘Þ9·õw¯¿€gj·.VÇš¢è“¢ …1/Õ"… 3ØëìÛ\8€Â” O»Çß´ßà¢[÷ì÷„ùÆâI+.$À”Œ€†óø/¬¸o%;;;;;û•í¿ìïøKbV"á`¥jåîÌÒgõ–zÇÒØ€4òß­Ev×198¼þ¯o|³bò–¯¸¸ì‰~$õ€Åvx—@8 àȆëÌîÛ G—Pø¯B}^Íßñí¾üIÌJdï@©0u¿ë·Ç½7‚-¦;n ’ ¼Ž°Æ¾fÑÈEkìk°;9eU~Õ¾îcUk…¶míh§l1qº“ð„k‘„ƒßjÿ»¢ö‹µe[^‰W?cŸòM„„'UÝ@% É¡«ZNÂ‘Š­,“¥QKE·9Ø7‰¢H%º4jéÒ¨¥T¢„#„#§$ £Žróß%G®'D‘ªÃÔ’ À‘G¨D@ˆàŒàJ8Þz¡òO›ˆ—Õ‘63Ímqs*Àž÷²KœËöÛòPÑ»2}eÕNŸMÎÓî‘›ˆ§¤ÿ ʆC„Uõû§¾ßñ‚Ïøj1[ØTÄ÷no¦Ú—¬Ïx“Üû‚[`îq–„/¡”þ¾ò÷ìŸå›Ëå¡å5ºbÃínQ(£9ÿNû·¼¥kìkôm#RPdîmxà!~G€¨Ì8V³µ­Ú¶{ͬ}«fîù×Ý»Ÿ¹CoCZƒpÇÖ–w^+`ˆ—ð@MF² TH¬²]±odXLR)ê ¿k•š7³"i•*·GïüGFû·;«yApQJ=6_käÎÈ¥tç º8I”\V÷öoîýOÅ3+Oýyû\ÒÁg®«zúÚšg®û¨QSéàÛNµ±é€ªZ^Åýö;D8`Ï{d}D·ÅÍv×Ços¥ ¿pä߇ä£ýƾF*RHp€¡µÜÛðå?À“¢7å˜ò_È—= OÜwcXÈß þf}î†yã{©õ ¾oô:½–rŸY¢ðýBJékoz»—5øžg'éŽjÚð—šëz÷¡»õSŒV³uçË;W¦¯´š­ àÕ<ªâúÑV1i[ÉÒ#-p49!”R^#¨'‰u:êáµmîkŸø*!m˜ÔYý­ç‚“OEJ!„ò‘Êñ²Ó—¬û#€Ooß`«´©#Ô³%A€P¥K‰>‹Oš¦M¾^—j+WDIÕ;«y-/÷±Ø+},b÷ÄQJï›È{÷Öy×]yM›ê±ü=y…ÿ«/¬?=0Ñ’Ú¹aJ¶—S]™¾²áp‡…/¤\\€3 Ïç­ž£A×±ü^½³šÔ}€÷×g8€Ôü5å[Êeì̾½)Çàn‹{ýýë#DÈ)·=³­3ÀY7èàž¤@P€3MFŸ —¯+î ÀŸÚÍ…:Bà”¶M4*4 ùÅɧ”"ÿÍ#DÈm®‰Ð0€s .£ÜŠâ‹Ù£½W8°*/… T^ä{ìž³œ½žçw¾´“= b2ÀY1…Üœçð_TqßþÊ+æ{Þß²åý{̯\ ò`r5ð¸ûñÕöÕ%Ö’uöua4øN~é7½ßè1£ÐZªÙ£Aî ¡,±¯»•n(=ó»„­-J™šÂ« º²þÛûò¦ioà„[ W/›RÿÝ]/—´¾\Òº±¼žRZ•_¥‹Õ±|O¬=±J³êå …g^dõÎêªüª´™iª8€Š‡+HHHrgä²"™rL¬Hl¢ÒQý´…Óž¿úyæpBAeK ÕºhäþÙ¥×—Üiþb›æ®íMb`¯µsJN¡Q€Dá Q¾Áaþ}ÖÚ ³·==&A©ÓȹõJ)›ÀV¦¯„^ÉK‚Ô’¾¼ù/Ëæ/«ûó¿ošÞ¿¹B‘™¯{ù/‘5‘rÓ±¨mZ Ž¥¤ 4J¢å¤ŒÝœ‰ÃAˆ—ã«ò«¢‡Fó:@«Ðºmö¶™º™œVÁVecÍbÊ1¶¿ ÕA?Ëo|rØ&€¥ÌÒx¤‘‘ÅQç@Øÿʪx"Å&c¦?ýöé’ð%l@ÊxZ‘¼BôŠ*íéí6žè­Ö©Ç7†¹Myðï]´WòJ `sSIíâÀǽS¤ß;€5xÄԨMǯ[³½ÍÓÚšå-tõ+²Ì\SóÁ=$¥Çs½@¿c5 A 8êÃvмL­#úz«m^g³“p¾—¨ÖI^QSë$PUÈòÃà@A—D,Y±„µsHdˆ)ÇT¹­’M®T£àw–-Ýùꣷý#¹¢=®•Fœ¬¡Y¶ÿxÊ}¯Uj+k“ߎ甫¹½"ö…ŠÐVÑ¡¤ 1Ã|V¨âµÅn‹[¢`õ-³H{wI_ökP½µ´ÆTÃzÓ&*RŽãx½<Ü뾯\Ÿ t€@íOµ¦“ ækyJR+D%W=9u^ÚÛß¾ýä§ëg/Êý¬¨WdÀÛ°ùÑÍ+ÓWÚ*m”R€PJ Þ#©_':Ô‚Ê ÀëðZÍVwßèȳ­£SÛǰhC¼zW4M…Áj€ÇæaI9Jm-„"zEÃîÃÑoþ!^LŽ“U8 §(¥œ‚*€ò’”±¾à›> ÷RJï/¼ÀΗ}¼VD;wÍï=MžÝ~ûQŽÛ(¥Îz'«…6N[½³šÙÌ,e¾YÍÝ/2îÓ#7·ç7w­ýã¶U»T:„¨ü‡˜è9žc¸²Y£›ì¿-ªæJáhpôäšÏó’‹pBàg G×îÑþÂÒô›Þ¯³ºïp¦ÐRþ]ð´™i«0×ViÛxÿFö¨½º§Ϋù[¿¸ÕÿwÀ³÷oµ­-båÏ‘à¬R[Ýâ_¤ —÷ά@üžpJÎÙä y}U~•Üd€+4ŠÂ”BÂf×T‡©ãGÅ‹nqYܲeqËØ®}g€K‚¤Ð(ô‰z¥N© Uåùn—E©SªÃÔqÕe{E9rÁòîÂCN õ¤E8žÄ÷ÅHô$Ö‹‹²˜Š'΀‚–o-gû)ûí3$Ï\Ür@˜3Ìk÷>Õç©wßÔN ¡”¶^Øz°½_¼ÍðÀõÃßYñ‰Õlþèð=}~ú“Ó…tnãÛÐ|Üw8ýèGG™ ›ö±ßÝòû-Ù˳ˆj5[ÙÖjU~M™šÂ¾¥Ôó¨?ÓJ­%­¼Šç­ÚA‰8Õþëaï}Ñ'µ,5s_¦4 ß”Ry?Ô«T¨  á¶ÑOz½°òÝa“ßÛyð†áÞX­R—Nùit(Ô< UYzÝ€‡³Þ4ï' tçý%Qû6)÷x€†âF}¦ö)# a.Iª…Û ñhV´ªøˆ/¼+îÆ¶*‰Ï\kÛ ‘N‹ó‘>¬ÿ\»€èÙ°¤ Ž›Û´Z,9ÌÆ€¾:–¤·x€íïfaŽõ7¬<ÑøxaéÔXê¨kbë¿)Ù¤xë1k(H ‚pj€ºxÂSP£äör‰üö;¢l œÇû¬>ª‘á ±ØÚV´Òø°áû®<<½ÈSë@Ô„zèî%&œHåù>"(-˜Q8 ¸Ös•gçÞúiÍýÓŒEý^¢$HÃ?ü;@ˆT[^#Þ/m×õÑ9<ŽÍolVBYmª`ìklåÀV¦ƒ„¦©¡Ø©P‘]{ôÔ¦S¬ …õ 3NÐФýæŸ#yøI¾·Åí Uš;ròîæÄy£wÿeRß*wÿÏÿùÃ31¢²—êÞ˜-;Cz‡$ÏJ.~½€þ6íËv[µï¢ÜˆÌжvµžPè]¤ÞR^x)¨OYQñǦõûᦫpÓU´noèCAr þ/‰L="§à˜9GôBÊð<ñ¸5âÉ$ûÚ\:~ —[R…ªG8€8“[Uåa…£_Ë£”*BÈ¿‡/ó% „P­ZAx…¢@Çåï(_>”‚ΰfcØ ù‹»ÅaZ¨<ÚH Ô­Us¯Š/ZÖ7@‹çJCÿ#%ÕkOþßà €ù0¡ëa—iÙà cSÁÛµ^»— ðöšvfØ0îÙï«ÜQÉ~«xm1xÆÃ%_”XÍŽ¼ùyê05[!89?só£›e€—o-ï à½Çõ®ÜQ)·’?ÀËÃË#k#ÕzubVâ;9®Yh<ܘ06Á”còxFy[ g¹~껌yëÞŠ}‹í*Ž(Ô VAGƒƒ? pYó·Xy#3XÖç„Øcìå[|­ÄT·>Sûè“ôßç¥[©Uªô*”7C‡Ê<_´¨âµÅXc·éðJx¬>Z²ÅFP€žSÙ7¬±xmqU~ üp^Íój¾EÙ¢kÒµœhÙó·= PTT<²Ø¸@ôàè¦â¦É+xlpg®Ëo³«qòë“MEMV³5(ÀÜ:`UNÄć|Yï§S>•ãÔmZ8-TS7bÞŸäDdØÛäf©Û_Ǯҫ2ÊÛªÔQ€o/ÂEãÜU¶¯nû*vDlU~•?ÀëÃëåF¶XâÕüãõûlÌ€"D!ºD¦ø2W&[s¦î|c¹èñÙÎ f8à äŽ-À9y8+~¨¨ø¡‚‚ûE·¯Íe€§d§|’1¤¶‰Š”9©‹±3ÀÜ: >'Ä£wÔ¨c9­-b0qaÞ†9ýe[õO«‡ñ{Þ` ô½õi3Óä€N¦7L¶J{kÔ2K„¡º…ŠÜž7÷œüædãáFp_̫ڟê³lîòvï©ÿ©žE õ¸ÍeS¸r›{ÌÖcÿ=ƾe«±1€³·Ó’”d5[}Å T¡ñàœ’‹3ÖÙœ‘¢[dê¥t^Û<ÖÇæµÍ°Ø¸X~$³ekÎTº™SqA‡˜?À9³ÍEhñÇÅ¥›J œÀIÅÝ\^ž4!R’“Ê·™¹ÿÒK/õ0§Êwö}ô‰¢åå€0g•ÍP´¶È5[ …´´´µ¼óæ;¡‰1$äÖ×ÅéÚÊÚXçðîå©“WJ!F迲‡Ü¹O9ó*ýàV^Þ\Ý"¯ï©E ¹¨YT(¸vohÝÒÜ;© œtOæüLY¿æík6?ºÙ”cÂm#9I4$ÿç0¯æi2ŒÂaþ°Yiîôeë×!B"CØÝ¡Å)W{|Ÿ×_—ôU›…ZTUN·¡ ×´•µ¥ÍL3Ò^Pp*N¢ðX<¥O\É«‰`cw•ïz>Û™‘@à¹Û·lô7=ÓmσjH2D§GF£‰72®<¿¼ÕÙ*ÖG…=÷>®·HµQílv²ÆlÛ­¨:®8V_ð½%‡{icµéϦ£ JŽJ Õ_UÓëÂx{{¹2Np !gÔŒyQ›K?! ÿ•ˆpJIAë~wÇÆÕhß§6AoO4øÓ$‰ÃôGÖØXpõ8•æÁ-À-J§^•¢Zåö€ à`­´€((¯’ø[¶’ @{J«ªSõ}¹/žG{© €&\#jþŠ­%#ŽÿÞ¤[j­Í‹ÃI\ûµ+¯…Äñú^×·"¦€š8!at‚—¸ëw5Býqbz^x¡ƒ÷Q/Ox(G<”Bs¼É´föÅÖi™÷®V¸ÅÏ·>4ìo?‚‰ÃðU$×:çEhíÞgGÍÙ@ÓÏŸN¨Ôµ|úÑΤ8íííˆý/îÇÑ‘Úq!ä#BEêÞ]‹Ñ½êFo P¶Uq49Vië®®“¸xzè· ì¢—€zìÝC)ñÁž„H`¦ZxqÕ’« &AqÔÆ ïI‹tRéî»V’1™/lå\!œSïñ¶iÃHcÑ­ýG !–A± ?{ÀÜIp?7¡_k) r  %ˆ§ºÑC)wZ©DA L&íåµcß´ßÔWíR*Dí·¡NâjßœFÓ"0xhÕ=¢ è¯®Ô]¡ö·Q´òUµy¸÷ywQÀÃõãÀQý‡447xlžÄÍŽR&ö²¥´p úû6y­Êè¹EÊ *O8-‘¬’þhmØK‰›{oU „j¾ÞÜ{ç+S17Üô!瓼c ¡â,‘ë§Ž¸z?ÇI@â¶Ò¯ß`¿*€GÁÍùèCçUˆiŠ\´˜§p†ˆÄ‰ÖB%¡*~ž²X.:À>ì!ÀÏIÝgJ!¯«Õçõ®ÕÊÏœŸYòE‰ pŽp•ˆ‚p<·}ád(·÷Õ‹}«ápƒ ðÈ‘V³µ¹¨J’95±d†$8k3ØSpC’Áß!ú-ÉXbà[sŽ@í ž9?ÓfÞb1£áPK#@~Ž[AÝœŠS†(·½É‰èÏWŽ$ŒNP›_A%¾rGesI3k¥N™ñ» _EN¾ç@Þ‹ØêÌš¢Þá«;Àñ¾Üêò˽PȽ·µ’‹û໕z¥!ÉànwGô_Üž7÷0¿Ç6‡MíÓXÔÈz>ëqWÅeÎÏLG>l=bÝþ:Öàµ{½v/[)M^4™ ÉËH‚Äb2*4 ÿïöW¿ §UJ4Oº_~;9šœ{ßÈV&y óf}7K«cu{NЏ]-®S Çq à6-œfЛc®Œaeؘ£ˆVXšŠ›ìvÖŠkÌ9û1$"$òŠÈ¦ü“T q69Y}! ¯Ã+/T²’W«‹y%Y’-‘õ‘¾žI iRRüÈø¼œBÚ«6¨Yhš‰È[~ÚK~ñÍóÖ±ÈWÔðxxµ\w·KÁŸ¾[#pˆ9¼J­’Õw[N¡†¸=íO»‡-<Î࿤â~6yñŃ~Þy> ”šrL¬S²Ñ"[ »—³Fí`ÔápFW³'RvÊëVàêÞŽ«®ØSߨ:E¦E‹16ÞÆBŽ ½oèöç¶SP*©¡Ý«Rýðý×*ö9€/p_òÔø=NiËí-¯zýÛjz¨Q$*QÎí…Ò¡KÕ KÚu¯JÙ^¶à¿›Þ"³"½ð¨ÞY}ÍÛ×äÎÈÅm#yNª?Ü@E*¹$4µ‘òµu)pgˆ^ *¿Š^ ½'öö¶{Yöʈ´š-á4|¤8²0½Ðb¶4n””@iy©0V¨XXÝý%*žŒy|ÆÃìì…(J¼š¨±Œ{úkªQ(¯4دO>R @É¡ “Å)cAqƒ‚¾‡š‡“fåÏ´ìYçju±ö¬ «çù骟àœB¢‡F§d§d<œˆ‘Wñ¶6\JQÊ•6(œp˜¼hòç7|NAÛlÞð‡ > IDATcM ‰»Ë2q º>Ñü‡§~\ÿxï¦VÕ¸àœD Ð0¯³ÓR‘€P!®ÅyÓþMÇ@ú_ QåsŒs‹¦ç&M¿w…¥Ÿqà×G}¦÷ÿú°z3_è¥?|Ë#ñG¬À¢‰X^ D ¥Ó ‰hÄ㥠NÝù‰ûñkĽŒ}m¥mEk‹ðü5Þ0Ô*¬übåÛxQ+„û¶÷­¯/À#Ø|xs©¦hm®íOòŒòu®Ý8 §àÂâÂØ|³jøª¶Ò6ê"Ô%µõ¿³¤ïËÅŸ–?§öH^ ­ÃsKÖ2>#L8lSG¨^éÁÔ79£õVkï°¦•¿Én}x×CkÈh„'îû3€·ßö´{,•J±1¶§Ì<ž¢<¾(x…(€¢¶íèÓ÷×Ú¦±!з¥!äÔ"¸}û—ìÇ0¡ñ¡ }*Šº)8®*.q×wc¢¢š1ý#6R‘‚Â]«R#ol¬™®ûï¸ÑÖ̜µv€v|Ĭ•|­µxþ”äb+çܪRÕD)ž‹~SÕ줠”çêÞÜ}ê‰4^Å+4Š—÷ïчFÔ¡(ˆ—€þCŒ×ÇüýÙIcsv (i¿sÅÖZWU]EEêuSDg Ï®!/¡ð>ÑÁ«ùäÑÉ3ÖÌÈ‘[³»N N @év©´㨚v.@[i›·Ý ‚¨úvdz=²Ù~SÆÉa‰#F˜•§<ÛS„WŸÀ^´‰H¨úÐÚöø¸ &R`ömŸ=ó*JiãØ”Ý}úœõ ‘#w¯3„Š„WsÑ•mcÿô Õ(Téa s†GÆkÛ î~û€IK o®t¡2\±þ`܈¸®Â þÒòsÞéI²ªû,~Ó9Žä·'Äzõ z–ÒÒà´º/"D<Ùô$€·bßÝbãáF¦0íAö/g Zì\¨vè}COm8à¶onó_¨œ8:#u÷ë»Ù©¸#ùíC²ÎÄ‘Ãb²úœéY²èôhp«Ùš˜•ØVÖÖ+³K¶ïŸû$¡À©H™¢rw^᪠V_§ÝÉS^¦~¤âË–{íÞ²>š•?+s~fÝþ:àìü.«ï ;üæ¤à0Ú`çU|ÐÆ” ‰“Tj[!lÊ9Ö¨RÞaï^»¯Vp ¨·„$ÄzééðôÆ”¶ÐÄ!¬R6³­èc [ä/Ì ‰[Î ¢>Ó¯*Ô1êÏ×Êãbà­¾’ 9Ì- £Îcñ°ü½¼7eD KÉêë8 …F1cõŒÄ¬Ä÷¼çht”m.›ð· ™ó3­f«à§à¢‡Fûo×\ôˆŽG»KÕëÿ±wæñQUçÿÿÜ{gË$™LV² !싲 0,ZA«¨±F¥.ÕÒjK­5Úm´E ¶6­Vik­ÕoÕªUmjQѪ¸°%*` d¬“d&3sïÜÌ–I˜À$<ï×ü‘Ìœ¹ëÜÏ}î9Ïù<†´)i]Ã5ÿ<Ð| ‚(ˆZ÷¬ýSÊ…Š¢°_ÔÚ•k·¬ëÊ\ÿô–‚EïaKcUŠIX¹g%ºÜÕì’eùPÙÉÔÚI×Nbß¹p$ïö.Ćƒ»V4ndÿ¶6+i¹6ÓÔj·Vlªà®ñº¼Ð±9Ç^½wnñ\>LTñvE—€îf€·ÍXüûÅëÍë;Ñ™>-má?þ“ÏpÀúXöcü¡z 6o9ÖÊâãµÀŽ}õ3oŸÉ>ªØTQóI ŧø¼^·,ùý’õÉë;[áëðñG»ª²–ÌiÉ–øÁÜÿüþ¶ú¶œy9\À=¶®¦fÑœ¤~PÙÇÀâ ¾*&‰ýPeAN²$]õŸ«ØÆïZ¿‹O9h¾Å¬<Ãcزîü"·vÇ\Üsv¶Wɲô3&§ÞÜõ>±óÄÑ÷޲<¡Nog®5w>˜9î¹yy•G+6æš—;ð%Öшʆ_ƒwu‹×ܺÓy‡Žûåcsž¿[øôèfíæ§uO{áÐòU‹¢(„ÉÚ,LiJÚùË¿›?â¤$I¢Vìléd7ñNí uoú¬ƒ‡]BcÜÜ’Í5†¤ßÉ“î8døNEÖžuË_Ò¾t_Ü}ÕÂqŠ¢p³v .·Ë—GèH®OΪ±hÇ‚;ÿö}ž&M× L€;>Þ}óî} €Iß™2åú)̈*mj» ) €0OÐݤ3)&º¯æþt.Û÷UGW ¢ (ʵwÜy솆6ñ&ÍëÇ´~.ÈŠæ–¿Ÿ?áæ9ÇÆ˜ý­‰ú$=÷›U<‹w$è?‹3-4‘ǰ‹6±{€Õn͘–ájì©¿°K³kƒfC“Ð àð«‡Ùe6þé2§t~óÏÿùñÝüÉOÿX0mÕÌ8<“oh‘'ð6êk0êSY½½ZíEÓéìœ|ýdöѲǖ 8€7Kf[³¹ó}ÞÒ¼ ~GíŸ>×(½F)NbQ;€Û«o%à;^8Î÷7mjZ(÷;˜\ÀT.ãió°éž¹¹²»ÙÍ{œ'œLÀEh0×t4t‚ T”×ï­gç‘å±H:IŸ¤_‹µ^·÷š×¯aKùx¾So6]¢v:¹ï$pEVœf¯Çéáç×™™¦>ì\ÀÝÍî6·4«xÛßÛ¾¸-¨€»›ÝØè;A\öÊ™¨Q| S!®fðm¿ýš¢(’NZ¹gåÊ=+·þæBEQQÐ'é‹óÖ;;Ù¾m, *à>·ÏŒ&/2þ÷Ýÿ1·Ø,X‹ÚݵÞ¯Ïíó¹}&ô’ µ€;Ùc£UÖqêJ¥j—E¯>IϪX8(à¦\ÓÚµk=6µÃj·²}ŒK‰+n,Þ¼n‰Çéq7¸ù6te» µ²Æ a=ÐÅÅA@*_O^ÙŒÛg„ðd4¢ÛDÒj·r/n,.¦Ì J²/™ï¬Õnå^ÜT¼û™AX ~qS1ðâ¦âÍk—t¶t²Š6qr‰é$.z)cSøzS¼)ðÁ ÜóFåVlÝVTlÛZ‘;*ï´ÆT¬²¬ÒýK÷͖ׯw xE€Ó!°ò- ¯3€ÏíÓ¸:|5-í/+“/Þ0öG÷-˦-û°àwaPµ½J£×’õAÅþ»óùnÏçŸx¶i¿•dN]tÿ"Q×uÌ #oæ×ýý2@g§²Sákö*PÜOÿxÖgϺ{μgw­YþÞò'ÛŸœ$ODïâ‚’K¯õj0Æ{ãOjR*‘ñ®8ëÉ+(†®Û»_(£yq×£¢·Ú­ìÚ8¹ï$+?á<é0/ý³›$Çjí­hµ[¹°fÍÍ»¼Ëy*{N6EQÄçñÛ/¸~Ì/¿9êžoæÝãÅŒäi«Ž®â¾c'÷LŸÌ~šl_Îömû†æ%>ŒÍï¯éùélZ$ãk»Ç<à½zŒ’Î&KùA¥ýÙ]±äõ+–¼¾ü‚×Ý™OfÔØ\Ü'ÿømí ˆ‚äŒó´èÛEQP32÷ƒU³7¾ùÙÑãÇç¢ qÂßÖ™tW½|Õ¾úþ¤Í‡—~÷¿·]ñìæ$ï멊gËW¢F„€ÄÌøé÷¿ù¯ÿòêËV_sÕZÏMÂI7èQºÝOvËöôÇ7þÃ]?½Ëè~Тûîïr¿*ç §Þ¤‡Ð县mšþ7‹Ýº¦èü¢Ý²ÀröŠ6M“˜ñþþïÈx¿Î£´kÍ[§é½¤³ƒŸ.v:!îd‹ÈÂö”¸ï=ù8;SEÿcn½«éHS×Äh¯ØÖ¹ÞuâNMY5˜ôwû1ƒá…¿Z¸rÏJK§;ë­ýqeG®á››ªÄgÅ[íVæ&VÜX¬@a6^`!‘Aj*‘ñÞç†9¿¶xæ’Éײ–Ì4€í¯¤—DIÔ{ܾŠKÛ˜œ¿vê5¤$-¿"Xæ[Q`•ì5~9=õ÷צºu€¸Ì¸¢×ŠX36B q_Õ9¿yå²Äg–Æ=5OyX¡5kY7 ºµž»‰3ÚDmÐF̱øÅ~—˜¦²©ãÖ%7MüñcïºqÜ] аףÑkAˆûªÎ·lN{]û`ÙA‚€óBH‘bìaœÁ—&3¸ù)›Í«žâÉ\„Š ÎãN~„Õ^€r^ÜTxInœÌLƒÜSÇ‘-œo†ZÀ3R;yß¶1A<ð`2—ôRÅ’gŸÒVÛænv‹••¦\?,ý…ef@ñ*räXX°­]á‘ó¸“ øª£«>xäbܲ~o=p5v¶vòú8]ÇDs“YöÉ¢V z~Õ>Ÿ«‹×p}’Þ ÇþöóãTÀEˆ<¸›ÝÎ]¿ŠÔóRûp¶ŠOáûTÀe¯\“çR7õ¹}\À½s£¢(Š·Ë{ѯ%?,âñDIdgJ}X¸€0š:=mîJÀ?yê Ç»«vD"à‚(´ÅEῊ  "^——_,3VÍ*àìJ‡Ê4=¨€ ‚P€ j!¢€³KÌÝìæ ¯Û[ǹyÁ}7‰¢ MÐNn—3SLP”ËŸ¿œOþ­–sÐ(&væbI ÔžüNÉ£÷)î‚Ðõ“ÑÆkg¬š¡IYv*DAY›^f»Òd©>fò~n@tµk㵞6OgURƒ¹5ÑÓbÛnÒ¾6ýž¿qñßNýö “ÅtË5·¼6?›oÛª£«þ:ê¯üþª×&d'°QȧòŸš:²Üd1ÝR~ LØ’—T®(‚(¸v¬Ù¦'ÞoúÙRÍ„c»f¬Èzùź éqiq—^7kÄ÷·Wó}q·‰Õ¥øÆ‘¸®K¹u3NŸ–’Ï7aÏ%Ú+G wìì^?9w³[öÊÚx­èŒotº“O6.ݱ­èËýÖ/ îÍR·¼óÔÿúú¿ØßÙó³/þò÷ú~à>à£r§:|nŸ¤“4mqŠW´ìªJÛÛ:aË‹»_½8q Šží’­¢EÍýkgk§¤‘zFîªIßÛª¹8G`L5ŠQöÊ>ø:—T³ê£ÄS7|ûÿNsMŸrÝ;×éÒ”·F'±¹zõõÞÌÝG› 7++ò˜.n°êHWoß„«'ðC´rÏʧòŸâÉ”lî?ßßâÆâ§ ºj£Ä¥Æéuž6Oò›Ÿg˜÷]4˜Ùâ2ÿEõEŽ ²"hlÀñO}ÇMBü͈dôî¦e¿%GM¾íwÿ§)½–&‚Æ Q Œg>¼ÍqË-ó5z13þûÍ·¼M½Òâ¦â'&=ÁþóQðK,UßöÆ®Ùöï’ 1j/jñŠ.@ÎüœŽT“çù®dk Ñp…ær»ÝaªL Ÿ“#é%vZ3Í.gmïíÖ”•ym66Å*€‹ –ˆÜÁ°Z%à›g`âîúôî‘:&à +6”Å]$jDž:RUVurßI.¹QpyyNƒ“Ÿ¬9?Ûù ¸_K.àÚ‚¶yKóâÝ­?,IÝ  æ¤xE]?(Z ¦)sbÒ‰êíÕÜF=PÀäõ¾Xü;Tživu4&ñ–A+žÝh3Õ=´çöGÝËQõÒL· Ñ´¯8¡å‹ÅG?™¤ýGñÍ%&ùÿÙ•®øuS÷æ>∳³ÏñS”ÌY™ì2O\^:{ñc™33‹Þ( ²Ê¹ïó#¿Klî“»ø%öo¯¯·tyiMdÞY$ÚàÆ²Òª²ÁÊ–áÎþõ[ ;­*—' zxm6¨²Õ{ 8$}½ºø%¿À *ÌèNÄd[³à"ˆ‰ Æ #€š’—,öµCÁ&G-àÏÎù„F6ýt pboOXœ>-½vwm×Ùñb„I7ñê‰ì#¶ûQpEQ ½¶ù¾—7€óÛsXzSs§¶T¶¨cMõ¾3à4k’­€—ê€@Áß¡pyôË™æØ’ 8€ÔöS¬ó³¬v«£Ä®ßÍ—À@MSfFnCÐÃrš â®gòŸº"èñéEï‹%õ•>üyIZÀK—¨ #¤§'à½.±~­7gsrjäÔí©KŸ–î(q¤jSµ µ_ȪѧÕn-]^Ú>Ö à9ÝsÝo_g”Hz©¥]˜ñØûWßúãAJìl9>få®ëÊï?~Çqü²çg«ŸwK——Æ%DZÙo”]ðrmbsuºå—ð”=uüV!./ÍÏú6^›:)õíû/8–ž6þ>MnÚè/oü ³ .¸­¯o†[EQ¼­#•8ù«|úµv`­~T6iýRðÐ$ÚZk¼n7¾é©ÊÛt¤‰‰2ËM~kîaËÍÆ¬3°BÞRÏKå “HVæ-êíÕÜx¡rq|å{_xiSDWÐÆs¿R’«’“6'‰#ë|¿€_í©S›6ët­²Ð±G[½_Sþg)k·¬ÏÐ32}Rì¬5i‹ôw\¤3é“î40m,b3âáw‚0¢ŸO‘9+Ó+ 3K6¼¹8³mѼ}³°BöÜôò•¯†8¿JM|Ûñ”ñ·´ †Øû:ãª'²OÊüðDã¥#kÑ‹ÍR·§ÎyÜ©ÝS·hôú{¾¥A*è̾‘!aè}T“6-­~½ÏíslÄÄŒåo½ª‹×3”?Gc‚¶œü§Í)é틟{E¯Ûö¥¦QI 0Í´éÈ_üzõ‚Ñ™ Ë½ wþêù&½ÿc$ÃW›Ô®¸ŽžçÜqÛgÞ‹[Ñ)©w¥zf ©—:d·¾£¥råñ#kšöjµÐ«[»bœßeÞ“å|Ú„¹Äu½ƒptß¼ƒÚAF&àø`wݧ* ÄwP¦)[a]Á;M#p WŸŠ©c}ÙW#¡ç© ª¬jÞ=óØ¿jWRSåf73Å«ÈÈFð#mjŸË´Á\l±¯º³\ÀÑ]|4’ ``nóÚê÷Ö[Þ‡F™¦Ìæí‰Ýƒ ¸)×Ô´¹I=# xYà*o0å«+zFKÀà"hÖk²feñ%Gx~Õ¨ÃV¦ ÈrPÓ”9Îæ ïöIxàr%däêÔ½à¶ä`ë…»½—ö=h 8ºcë0O jú+àóðÖ'@Ѓ©Æïbñ§÷•Ž$øU‡e iäÊ©§zr‰)×´ì±eUeUñ[âÆ¯>nû¥¯õè6Ah;å‡ ý™@ʘI±Œ1³Mm‹FÑ®•çþu}ñcÿéã‹“o©ýÇÌ¿üÅ19CAÀónÑÆ¢ìùÙìoó3KI0ÕT±IêµdósýÞzS®I kÖ~Y;ú‹—ÍõåÁ¥P¯5¶¹¶ßfÝtÏÞw~±wÓ½{]Fœf Ú8rÌc̬cIpºÜñµñ‹öž»gä´eo¢Ïœ´åˆ*çIöQÌž¿o^%'%+PL¹¦)×O¹äk#ï|pÛ=¶'þ¶úíý­y½V»•wAqi¾àŠ1ýêuMùŽŒöƒËfwþÝxZ—0C§@͸j|b}[JKçE‰ëÝõÈpÙ€ IDATU¾µUžñØóŸx èÄŸGû$ˆiJ¯§ øìxv¥<º=·mÌÏ/Y·ú¾Q{爾tu³ÀË<жŒa.±A]oáÎê†2g9îV»U¿ŒðÎË”røiP€rI'’»º0VXW¨ÓÐ#pw³;¥2Å”kb¡göüìà”iÊÐ;^çÔjÁ|ÊT@]^ ÏB>  F‘h4e¦\S$]ZpgÕ¾ôié¡¢CŽ:jGo©l‘se¨®J6™’e?³¶ª¼dFTœå|ëMzuÌÉùõƒ 8{1åš‚†† m¼V¯­Xû <‚\–E)ÄS®)ÔSA˜–\À§\?¥8¯ èyP *à3VÍXÛýÅhíˆZÀ].»zÔô Ó{_,þ-{_éú$}Ðíð˜îqç)+#Ždrìѽ¥û­û#åTî¢áÔüÈ¡‘0S=«Ýºÿà7¬¹=zÞ†S>§ùa)’²Õ>×þ琢¬R ã¿tŽ©~ðï óŽÍÎ]zêdà2¡:UÌ’Œ=¼ÖÊŠ¾Ó3Ê©híâ^¡RÁmåOtßuDå-kªÓ–œ£mð_Nc‹(C”±'§-üèÃÍc†¿Ö¸ÛS,6wUY¦0Ú1zÒu“Dˆj(šžKŽÿ EÈ,ÿ¨l›iÍù™¯úòȨ» õ`-;h5çµ½r“ù¼¿6ˆ!w deÏØ”f‹y´à«ËžŸ]ûi­Ïíó5µøÚʯwx~–þš¸ &'íÌ'ÕXüjcnRÒ褙·ÏÌRÃi+Œi´iñï»YØ#²Ÿ²=¿MnŸ®£=3³@ß«³¶ùH3i¼¢AtÇóœÉ+thR·b©_3¶p7ptý{«8Ã4Ê”4*é2_çH—ÿSÜh©lÉœ•éÖŠçýñmËáe¢$ aŒGÛéëöUëÕòØø´_e}¸ýž…¢F„NüS{‡yŒÙbà)ÅUeUÆöΤîH]÷‘I3]‰cÿ Ÿm»¸°W¿þ€wÅ8¾"¶ WC!ó3«"Õ5kËÒÿüQ÷¦ÖlÀŸå=ЩnÉ~´–]UOýþ’×q’AªŸš8i„7üÝjPmÃô]-;È>á±;påæB—ÝÞß÷þ 8;ê Kü´x殊Âg œ'œS¿5@ã%À¦¯:è¾yò´¤MICÀ)P ¸_ «&WŸÛ*uy¶ Ü›ÛÓR ÏþºyêˆÄëµµT¶Œ½ll¨Õ…!7åN`ÝG—FSæ ±Ë\À}n_mrÜÔié\HÍcÌ'÷Ÿd>¯ †€ ¸úüúÁ€Éfj©l rëK޶“e¸x'ÜSA¨–½ÜnÊ­Rö î(±û#ìq„þ 8.–À–ê+ýÆwlþ–†€Çnà®NY©Ø[q¬ìزחév~zÁŠyÜÌ»‹|ÿÛô‹A»ÂÌ:õkæ—Yþx9{îlëô`ʲêG¯~š¥½)]‰S7ëI•‘ņÓÎQ¤YqWfû-M-—úGÁ·7Œ½d,¿&ÍGšY/ýòRÛ¤?³aZ¥ËK¿þü§¼eÕÔ4µæ:JsßM„Ò<0"¯ÚÃÔ\ä]?œ^P¬Óµ:“N•4Ù‡€_Ê”ë§d BÒ?wœ˜‘•1=c¡EwÇ­m>P§¬”?^^UVÕ•IRv#º½e‚ª¨j$Nðظ€3xhX°,ÐŒ$;¼çÌ››ÜIîPÑR·€‡ dEñˆÆÅÊ:²ƒ4cÕ vô¼äxiýÆõå—–œeN“ÍÝ ½'§j¼6oŸËµ³è=£©Â ‹Wý`épG‰¨Šbçô@<ìùU‚eM~ÀDIÞÌ/Þís¼"rÔ^ºa\ôL‚Žîp<üb{£:Ð#ÄnàÎúTêãN°Ï±[:,¯<üÊå˜8j¡>N•ãyM>6i‰$ uÛT¥žž5 Uh˜üø.ó³÷Õƒ_­¿ª¡Ã¸©ÌRQ6zù§¶‘§Ðùà›Òš{~Í#3ëüL#+IÁ·ðÈš¦Ò‰CÊ%"&÷ú´µC0¶À;r¤fbƒ®üà”c†Ìó3ó¦ååÈrãcŸtõÓ(ð÷Û^™ò£ó¿Höß»žŸà’S/åíowªå†%/B#á´QÏmÒT_s8®¢S¼ü—JBBÐö Èʞʔæ6ó¸äzôv²`ó¢ôIz¯ÓžÙ?Î-_8µÃpÊp/¤äÜܹW÷ Óßø0„zDîu~“Ú,ÓOýá<ïÃ_èüί¡~o}ú´t_»¾é¸¦Îš«ê³R“Ñ»cPå2°*ÔM%LË5w`1L˜Þ\¦æwß±±1;1wqî¤k'}Ê(YökƯts‰£jãçãà+˜7bð6xXÂ¥¸Ð\þèÆ4W“+hŽ{œý;‡hxÐ<ÆÜg—¶êèÜ\ ÷´‡ „ dey Бy~fæ¬LapÊ/ç=î+¬+J——Ýå^=â6"{üˆœLNeñ}и€XÒ¼¹¡2?#?ƒ}AFk‚Ò§€#ìùåÀ¼¹ ¹àÉ6jHÀFŸîw±]‚ú!0ÊÛÄnŽ;«Ý:öâ1|ûÁïzñêw¯6¼;ãëN_°dAËk-BKWå ~‘Ë®‹Ù Kã‰Öë׳—_õÒü ×'BÝ—“mÍæ–šà²ÛÝOÿö«üé¾ð#Hã®ÇRèüvKrõ©Ÿýªõ–W”#3e ‚$Ê/)ÁgNò/ôÍ.mâ©Ì)Ba†É+œ¿ù«ÅŸ×_éñÌòùEae¥EI”Íù™«»>>€V¥ì\åY„‚Úq3미¶©d$I1ö1A$Ôs›]¼iä´7ç2 *P$tHWä~²ö¢Í—Í<æ÷){n6åš²ZÛÝ>ï%ÿþ«aÖ‹šóžS4bÊ×G©[ª ŒÏ$½Îo5ÿøwý]9:]Q2ÔÍØ\Ÿ–Ê–“ííÙŸZ~ñžç¯zåÛ‚ÿøc \F1 /°*Ô xä-ÕŠ˜Q‡©¹Õn0+3çHãèú¶É>_`Ôž65M}¥Ÿ•M°£m·»Xj{Ðwµä†/ªêç”À¥ñ_¯ßiU xMIÅf‰$ä帻ÙR¹‡…áÑ”…ìˆú$}ÞEy<»W½#LÀ-6Kã%„ðRos™FªÙ€é=9Õ[¿·¾ÏÎËPQ;TnÊ5m^S®‰ÿ µîì xøóËœU’ÀŸ@Ô€G.à~‹ç‚€Çnà®VçÖÊÖM·o²Ø,yBî+âv~wgÆÖ ñxÑxŸ=1èîËa²Ö$4±£ÒóTÍ—vøJ¿¥ÉSzugägp·©ÄíÚ‡Îûõ¥Ïö…ß)¦ªú$}nYåkÆRv[sŽh| ‚'u(€Ñ)Y¥×è_É×ú§á¤h•¹uö¥Žœ„æÊÛæ¨ \G$øà’üô£ìlmEïAÞ¡g6xöòw¿}Õƒ9^å| ˆBàÞ3·I´é7Vx*4•Ä í%¯ä“‘R¹ÇüÎqïÞÀLIM­ŽßÙÆ~Þ>±¢ó¼:9.GNLð¿éž•ËU}~«ÆøB7ª2sbýw~¯›¿=X^Þmj7fócÇ/Þë}æÙ>GÀu§"Ï´‹Ù¤ê0D®æ1C uÔG› ¸Åf)\_è(qðCÊ%·Ï¢ª¡fª ³4¿Óªp¯Í[UV4öòƒ_à|eŸ¿0¬4M2åšxýÑ ÀëµYºksnpS® ›h÷¸«'§î+sF29•=?„‚‡Â+¬Á}r8gWÀßßÀø>ÂÉÖ$à†\MìîjÒóÓëöÔYíÖÅ£Ïû*ùó#yGRw¤úÎï vùÀM§Á½0aá„….øHõLZà’µ—¬u­]ëZ¸.¶´†Ï›èõ%ìt«º*_Ê‚+)óè¬Âc?yÐ7o>Âvx°Ë{ÊõSF,¹7«ÝþÃ8ûq»¦ãÚÎΠí%¯äƒ¤w6èŽÚÚ ÒA”ýÒöW:žMljDï(³®*«R|²aëËÍe'¼ø¢¿¯u›˜OòÂ÷ÍM³ÿùeñ©¶â•8£ÜÙ·_ð‘\|3—}UßzoFCª ½s¾{…ÖŽÄݶéÛâ›þ%_ØÞYl–‰ røó«_Ýßkžêèx¡½=3 ßô¬ÀϯyÑÈ-ùžL¼þø7Wúz¥GóÛCÚÑ“/É:–¥99-±v‚èµÄº¯ßÐåtÔ|XöÙœI¸€[íÖß¹‘õ%óO#éJçκðäRD²4w¸c±f$±¿À§\?e-I‚_ «þÕíL·Ø,Ü@&¨€³¹¡2zÙAÚ¼ÚAFpV9LNµyC>¨p·Ø,CI ^Vžß<¿§ ¸šØÍqW“65mìec%ý§µ¹’¼S³Ô3PyZ¤Á¥¬ã1›Qá·„ÀY§¡Œ„ÙÒê´m€_<»CP„¯Ðºyñëµók§ eNø}éîa.ß{uÜòqAgv! ­íñ{gªÿEf§ItUh«*«‚"tÎ0¼ðÑ·²/Ín›a`ÛÊ Üø˜¾@‹.õ³†±Æ­n‚^ß²¹ü|‚ {Veœ©\¯÷ód%'¸vàÝ?2äS»òãÍ­Æk²e×EH‚Ìæñ¶éáBùøòÆÜÆídà*õ§L.ù5s­Ó2Þl‰Ò Ôh¡>¿WÜPôüòÛƒ$Šovœ¼ò±qºDtâ4ýñ 2üÔîêlø MÁÅ0pÖixPn.,hÚÉæ…‰5ñKŸU— ³pdô8°ÂšYUV¥ö pÌ,vK(;H&à4ee&›­Ïô~X9µÏq‰²2-Ä Co·#&ãÝHÎ/p°|벪‘ ûQXƒˆ ç²€wv-U•U}UÛ¨ÿÎ4Í/8¾jn€Þþ_„¶ß´MóM‚ìÀǵ CŠ|ic/`óÚ%.—=|B•¯S“[3rÙ'Ë~þÙÏ—y—®ZM„Ã=\μmzÁ%”>RúrÝË»5»¡Ê}D4•‰oŸÿöïÎû]¹ø© ôzÈàý>h,_î}àîãýküŸFº¡,,Ùîþï5Yÿ}Î÷³×Ñ” ! ¶2ùl$wQIv&]÷?ûÈ o–>H“ó‚wË’"¹®ø²àW•×Þá¹Ô/çÛïæh'tž>ýγڭ7ÿlβçÁo¼øÿþ¸ýóÖÖÕ®¨M]"ˆØ x`Ž{„]éýp«Ýê²Û#œãX: Ýþ 8[¸º[]¼þRI Bˆ˜úM–lÓ·‹Í º¦þ\ÀYVz$3BEíŽÎó­O¿.ADÎÐÜ«·W³É£‹óþøaãSîü×ä‡ ½µ@Òkº0‡‘ÛA†_ŽìÅŒ/&M¿`ÒÍš­¡:惮4Ôp¯á'wJ#ÇiŠ¿÷{¾üî÷;¿)@è‰ÈÝÚ %ýªíW=øÉƒ…žB©÷zùH«×QPÜÿxÙ÷«‡âî¾Äž“Î×®ñx}¢oʸ)r¼¬˜yŒì›…žìú½õ¬[bdÙуÏÍøÁ/·<üaõn»G¶Ü›ÑÖÙŠ´ñåɹÿÒjßñ;˜Þ¼Ï"žßsaö Ap¸€[l–òÞ9îÁ\´œýѧ€#l¬~¥} 8€öLuu'u¨ÊÖTÄSe‚††½ž4e›%º¡0pt—©êsùš²²P‘€DTˆ•T™uëÖ…ùtçÃ;ÛêÚ–þeé‹{\çÿèåô]ÑÝ3_ßìÝm£¢ðnbAq*Mãk«Ü #3=I‹ 3­‘¯1Ôí‡õÊh Ú/?l.œýFö´š6]>ð¼0‡|‰(dïcz}Ôܪϵ×)ø)Ðsûá#­ñ<cþhÑ囚@Q9´ ‚À–&yåÃ?œ}å÷|z“^—¨m¾áŠBÖxÚÔ4¶#$éèÞúƒES¾ÔJFàV·;h{—Ò™½S®?yùø‘óžlLëÃ’2ö3”·úßÁv×"ˆÁ&BPºüF 'ý¬ 8º“@¶Æð ¦ä%Øzª;EXYI*S\¸aE¡ãŽîéžÑ …¹€0J,6{Ÿ©AìHF˜CN V÷5kÖð¿Ù=@]/É8˜9;ÓQâH®õꦧ[²ÃôÊXl¼¶g`›X§©Ïù×nÑ=ê)ýØy•‹¶ì7(·lͽàRÞŒöT9íèö«5IcãGÌQŒRF~Æ¿ý€Sio84Í“>®r—¦sÁ|èŒ@Oa>2«mÓ!GÛÒ³î°vhSy&C%þàøÈ¤Œééùéz ?¹ã<©‘å|_ù⧛Œí?G6mjÚ¡‡Lzûóv§ëòúËuOèÚòuÊ¢Øê§S½ã^›­ª¬*è£Eफ“­£ÛãÞ_Çàtü¡&v÷n[ÆV Ÿ\¼û‘›Ç\øÚQqdùO+_±óù7GìÝÓÒž~*ï(q„R¶ÞS_ž÷ƒ8ö lÆ¥ÊòiÍ‹ÿwÉ~1ú–›SK ´ib÷«f°¡·Io¬S;óøÌ/pnrÊ™r¯†ìúä«’+WTºV¹üø:O%j¼š»×Þ}ï?îe–;ôtxöl¡“y¿ÑX›Å·¥òñË'—œ—õ˜^ÿÝ.™AÄ8êH½z{5wa/7—«sÜ#¤¿Þ§ä Æš\~¼äx©hc_xàCÐ'^K(©)ÚXôQ'ÖœùýÄ劮˜x£9n‚,óûMÖžÚW½hõ,w_›ü—©£ØkóXÅlžÁìýâ²3ÇL›æ›à·¢3?[(èaçýF×ýlη;;×?æxaû‘÷œÎÛB¤Âã¨"õÂú½õ¼¯ýíŸ{$D^`µ§NÓúÂð Ä Åš\À¬°®à•ˆø 8€öÌÒå¥AubMÀ©ãŸ 5±’ã«ÝúÙ£êöxsŒÝñÀñé‡NuŒÌµØ<ÕÛ«‘ü[¡†P«Êª%äw-9Ìw­v뾊 [+·vµÜíßÒÏS|ÜÁzKšÞ2¾âÂo*YÀø‡ÊœéÆÌó3GÌa‘åæî’¬ç>­)ÈLÑ É©úe½-Àùì¨ãñÇëÛG/~iÊ×(ˆÚ\ŠâŸb®æ¬äêš4S‡ A uºäö–=u›%Â÷ õ¸jÉA¿Ë?µ—Øý&,© ÌÞŽb¬˜zÎw*¬ô0Ó[ÃCNÞØíqW ®)×4ráȪ²ªÌS_%Ž7/XžÐüöÇbc#ú?„Ê>4¿Ã^ 2 ÜrPÇ(ùMeÝš&ËyµÎq-®É>_¢¢ð¾f·Nóù–~\}屯ë;;Ózï5O©l‚Š¡Óó³­¾ÝÜ\ ÐFk;£EìÛ„Ñ/ÔòÈ<”;ç4s`"·ƒ<3Øa紺Α×f³Ø,±ìNNg’Ø ÜÕŒ\8ò³~f±YF Çæ½ôëßøÓˆWŸ–vì@ï!To»} ¡2Ýôx.e/ŠÒËÑï[¡hP¥*ÌM%Âû ·n¨k°¤ZN½~JD¯Ù®9íZ¨gš¤OÃ.à›¥p}¯÷äÀ”›CæÀ ?ç>îÑÚ¶3 8A C#p¯ß[ßRÙbµ[ǾÚ?çÈ„e©»ÿÛyó· ²`-ûB•ÛîÏñx®öx®ök˜ ‰›#ŠRæ¦áý†Û'Ÿ—¬ùû™M™ÓvLÓ? ‡~þ3Aƒ p«Ýzã;½rÜ#ô‰°$jàcÀPp‹ÍR\Xl±Y¢èVIÄfhîiSÓL¹&G‰£®Õ¬KÑûÍÄçå4ñ>­öU­öUu)"F`Lx7±#ÿùaÝÄÎ0an*af ÈÚB6Ëž<Þ2oÛëmŠN [Ú• "Êpç½æÞߘӴƒ<à XÀؼ¶ðK âœbhîUeUS®ŸRUVåìÔ;/j3ÿÂ\~¨ü$N±Oùœ}o›¢Õ–jµ¥€¿ yä£ì.Ò´ÿ$€ÂøxöÂP9RÝ(ŠÂX=[+÷=vé¿þU{½^{v‚ ˆˆáÔÇ=’˜þ xŸv1p–*ƒ*AœƒÄn8ª m­le£«Çl•ÆðЃýmêßþ§ýzÛú÷îûA{û³å8£"|&eÆäTÅn7{!Æýw`›eÆ‚œ‹×m1]0ªY#6 ÂßÛÛãiÚAƒŒ:e… ¸Åf)ìíãaL }§Â‡µƒŒq¸€³¡éžApb7p‡ª‚iz~:ëAÙwëÎü Ó/yï’WÏõ§îŸÔC¨’Q‹Óë™àw‘ WO`øuÙ¯w‰×?ñ&öá;2ßnïõ^²vóÒ´k]®Ë†à¾1á)+\À­vë½}Ü#̉^®~<Ä;B©2A0b7pWW0Íy-gtýè­çý;ß5Î¥N‘Œ®9@äv1Nto‡AýB²’65u!渞€‡·ƒŒqHÀ ‚Eìîê ¦Ù·e[ïµV Â|`DÜÊ£óïMmúr¯ Ôýb„=Au0r7±‡Œu ‚8‹¨+˜Zluï—ãî 8HÀ ‚Mìî¬vëø+Çxã­7¶Ø–S˜cYT±¨ÜùñJ2§=ªÕ=ùöGXæãtì ci%âLÂbt»Ë¾é›Ô3PÕ9î2ï¯dŒCN#vwuÊJ[mÛá×[íÖ)?ß^þÆäÃï~=õü®Ž‡#·6 ŒÈƒê w;ôŸˆ%71‚ ˆ!„:Óƒ ¸Õn=d»Qã!ÖiŠY;H‚ ˆh+^)ëÖ­ ó鬻fía¿£ÄQíš§/h´dZª·WÃ’ùò-6KUY•£Ä!çË+èV»µty©/Ó `ΜDöfÁã§D²?'‚F„Žîغz{u΂œÈ—ÏœýÛ§€`.ŠAÃŒX Ü׬YÃÿ¼°1ÖÒå¥-ž‘–âÖù“æïya~éhatbÑ¡èôi#$vGäøЦ×+Òíˆ;àùçÛØ›h‡NÛï"‚8ˆPÀÑO—?^Þ¯ÀGäÜ€¥Ü\^ÐTЯUAÄ>±¸‡§z{õþö[lgYvÒw¬ë?Î5ä¶•ë•炤9†š}ÏýsÉ ­;" óÿ®Õn­­; áå]];CÒ™€ âìÃ@áúB»Ë&U&Tg<È ×n(Þê»èîwÀá(qP¶ AÃŒØÍqW³óáu{ê¬v«5sÂgi;Ÿw8õ@jûËíršá¤%.è¢F°ãåòYž û56vA1B€Û­7¾Ó+ǽ¿Îf»†2h6vA¡ˆÝÀ]-ÍÆƱ—u”8>Ùß`ÎÔ6ÀêIKžv7BLZ ŒÈ‡·›AÄYD=—” x {„³N#ô5''bØ»;G‰ãÈ>°ì±eÌøx}Gâ¥æQ÷ίÕkêAQÙ°¯„ÐwÛAAœI¸» pîãÎå7B˜ø0³ƒ$‚`Änà΄¾qÿIëõúõíªZ<êÄ‚‘O:'_Ãã¾·Üëå-è;õ‰3g&¢©ïI«áÝÄö¾øÈMŒ b@¨#u¨ê1•¯/Doùõk!dIĹIìîLèGLNà,«rM«¸sîœ/<ý‹MZ[?om]írA5iÉmp·•¶µ•¶)©‰˜á¯¡IDATew‘ºý L99ìEN×çw ‚ ôŽÔÕꮀ uuÕÓ_ïÀ‚ † ±¸°Ú­®ž`ÎÓ»í?™µÖå€k³¡JpTÛ@ÄŽíÇÈúÜÛÏdŒÐúÅì¤ ÑØ'‚ ˆs©öÏÏBe¨G8ë4ðn±Y ×Ó´T‚ †!±¸«ûKL¹&µL«Õ“–´‰z„ôþzL½y*€þ¼·ª¼I‰úaOqŽ£ŽÔ#ð0³Nd>ãr”8BÅ÷AC”Ø ÜÕNEâ Žžu4E²~o½ú¡ª¬ª~oý€7› ‚ˆ®€‡1ŸQ 8Ë™!'b˜14w„éÈ[ö˜Ï¸}=i)mjš:¾·Ø,iSÓú½­A„Šh xøY§jg93$àA 3†Là~ú#ž]æ3>€»ûå¿=xò ûJä÷‚ "(Ñðð³Nã{p‚ †C#p•ÑØß…XlAä&%±Mï%w °~\ Eha/€ªxA „( 87” ¹Ê1¼‰ÝÀ=’”ôÈá“–4:À+÷¼UÛÜ\ÛÜ @°^‹Í’93ÀÔÄ©ì僜¨ÄŸÎAœ;D’’9á %ýÖÛå*c&W‚ †!±¸p”8ýçúYG#蘬ڻ@ÝŒßfÞ:À¿îýWeKeeKe¼§û»ýAç,+„Ô§€÷i>Óå*cwEn.I1TˆÝÀx6¨°e‹†½›Eh¹wß=¦üqê¶!‚覬 ž€³?HÀ ‚f …Ï ëÖ­ó{‡x¶Nxøa={sÄZÿ¦Ì&Œi´ïT;h±YðÖþ>×tèVüýÚO?5“ bxJÀ”›Ë š B}Q-àýJª!'âÜ$V÷5kÖð¿ù=Àj·ÖÖpϼw™²¯bïA‹ÍRUVå(q h6ú9&ˆú.Âæ£ÎX5ãtH1ì %àpôˆj=®úÊ€ | 'b˜Ó©2êø‰uù<î4ã‹:Ý‹:]‡0ÀýânbŸüe_à6A‘IJ:o-˜íÞ ‚ †.±¸« •ÑÈàc²Ê©ö­’´U’|,3Ô„ÝEŽT’t½y€›Nqn‰€÷éóèGx';H‚ †+C#pGèÄGn# AÁÍkÞÿkGGºìgG8 Ýw‘¬ÙÙPw { ‚WQ2£°Aç} xxŸÇþ ¸Åf)7÷ã1€ b¨0d÷Pý+jcª!TK–ûÈÿCˆIäí³á_®w:N§C–s;AÄ@ˆDÀÃ$Õ¨<ÌÖ^öpvïAC”¡¸‡é_‰Ð&Œç>¢ÓƒÐ¹½ì €ÜÄ‚ N( xøäu²ƒ$bØ»û€+§†jÉrŸ¬@صKb/¿6ä&Fqú ¸rjxŸ¼NNİ'Vì ƒâ(q8ãšP\•iF,÷±R×!@±ÛãºÞÝ ­¶GÙÕnb^Å r#‚Ñ2yäKëÓžì ‚öÄn;ë_©Ûw €ÐÐÀ^^Ï}Ô%h!à×½óÎ;ÎwÞqTÝî|@vç_v‚ÜÄ‚ DtÝ]z'¯»B%¯“$AÃžØ ÜYÿJFA€ÄY³Ø Š¢ôXš:÷‘ §†w«ÞY­4šw»^p t7‚ Î=¸»Káú(d™G8‡dIÄp'vwV»uê·ó¼}Û -GŽ´9ºîNB÷ý&{~¶WôêÓ³$øÎ‹Äž ‚º;Èí®ä‘Ó_·Ø,…ýq…'‚*ÄnàyåT?"lÞMlögCƒwg¿ÛöŸ¶¶ÿ´yz‘áú ‚ Îu"¯œêGTÜj·ÚC»ÂA ]b7pW¦%ò‘ •ôÈMŒ âô8+NvA K†FàŽÐaê§œaZF¹‰ADH¼¿Æ‘€1ì2{(z*+è@Ÿõùæ­Ûr#‚4ìaUp‚ †±âã¾nݺ𠪷Wç,È ú‘Õn-]^Š¢ÙÕ-¦)S\{·ˆ1á¾Î-ý°Ø,UeUއ[ Ó‘/ADŸDAÀ¢E~½OçKîsË ‚ †±¸¯Y³†ÿx%Ó~ŸŽJiyç6ï!ïí=dª.Ì!+@Øú|¥ËK½@ÙÖ•O»ºl +DÑæ#W‚ ˆ DEÀûUY)¼€#ìcAÄÐ%vSeü BÉ4·IBå³;²³eu1Tõ×%W›‚°=1ì.2Êf¹oõ»{$‰½Î÷ù¾áñœæAœ#D˜¹õÊJܲœì ‚ŽÄJ{P%ŽŽ87ŠÇ‡‘iµ@BV¾ W˜£ty©wêŠîé§»Þ½õNu~ ”8¦¯yŸ[ ‚ @$)+~>0ŽG¨¤š3jøê%vÞIO1lˆÝwVïÔÇ'ä'æ³—¾8ÔÍú[˜C¯“!H{ö°%.Ž·‰¼>AŠ+˜¨²RH‡Gp‚ †=±¸3™Îš™ `cÛFö2*q‰r•Âæ0$ ˆï¸®ã‘G:yTb‘ßE‚ ˆPôÄÙæþ9©GPY©Œ 8AÃØ ÜXíÖé·Npüã¹rn®œ+ tƒÕ=1¢$àôêóAá銳Cg®G΀»ÒIÀ ‚fÄnàî7Àzš#žÔCqƈnÊ 8A#vw5ƒ!ÓÔCq '‚ˆC#pGdšf#AÄ$àAQaÈî¡ÔÜï}G‰ƒ†P ‚ b p‚ ˆ¨04÷0jÎ*걿O¸q×õëAœ"ðð¥šü 'âÜ$v÷#­æ¼¢»-„ò ¦~‚ ˆ3F„áx„%QIÀ ‚ ±¸p”8>ùË>„-¼‡îJR4-º'ŸÔ=ù¤xê”_u¿ÜhnAÄ`Òg8Έ¤TÓ€;æ ‚ †šA]úÖû—Þ¿•ý¹hõ¦Õ‹úó]VàÚkˆƒcÜÍìMAø3 ÷kÉ*}BS³Fúâ È(ðkc±YªÊª%ßT=Fôq#!‚ N_Àm, ß²[ÀQ¸¾|C±¿t3¸€ó…÷g[‚ †ƒ¸W­ÌûÖ“OÞ”7/35w (‚Çó ö¦¬$ËŠèàÍxE=–}iiï§^mµ[}vªë¡2ØDÉëËõÝww×»žÿc{Ø âlPn.,hÚªY€ö‡£Ä*(üI€ b3˜1kŶ­¹£ò¾«Ý:óö™¶Ý?Âã¹Ò㹊ѯº¢žyl2BOZb7’„Äx­[;Õ7•½Ä)þ]øAç:Ñp«Ýê²ÛÃTN¼$*p‹ÍRh.ø6A q³Ç½²¢"¯ò¹¥KïGðÖuëÖ…ùvO¿‹ÕÛ«sä6 ¬¨ÇòÝýàý:»OH^qʯ¦°åß7¸¹BAC“( ¸Õnu”8¢%àì×1O1¼̸uÑêM¹yyy@Ås·Þ¿u‘Ÿò¯Y³&è÷ï¡Ô<(›Nø½©îבô„~ ‚ Φ€à×1æI€ bxåT™­÷/í‚ÍiÊËËëþ¨òhÅé,ù4=ûuÈMŒ B 8ADŒå÷E«7mâÿl½é–Å|€õ´’%¡ƒœÜÄ‚ Ô€AÄ8ƒ›*³zËÒ¥K ï[O>Ù//±Þpƒ‚ âL@N{ îÜÌ^ý7ý„O?ò*^Pÿ AÄ™%*Nõ’‚ ¢HL[˜;J;ÿ²ý,·ÊMl`Í‚ ˆaåT?HÀ ‚ »;3"¨ÞY­4úõzöZüË*ùÉ·£ÄtÒR„Í‚ ˆÓ‡ xUYUø¨œ ¢_ÄnàÎÒ"³mÙ^WhØKΑ}s|êfŠ¢ðê»ÛÚM¬§Ù)1T3‚ âôé©—´¾0L3µ2‡Iª‰°Aİ'¦ëYíÖA€ˆÍ†Í¬ÛƇ^q;,6KUY•£Ä!\=¡Çdy³º¬äöoè– ‚è/]õ’Jìaê%qeVeÀÍ‚ †=±Û㮪—$!lF#“d|4ë£Q¦Q£L£Ê4e‚âŸTÚµÕ ÆÔö„„¥ìŠ" Þ^Aœƒ¨ë%!ï3©&ÂfAÃ›Ø ÜÕ„/·ÁÆdAX²ë‚=­{ö´î¹Ò[(ìkŸ‘Ü~2¥£ãösÛ ‚ Îi"p‹ÍRh.³Þ¬Ü.÷† bx34w„Îhd9V»U âßHR’tŠ‚6K›–¦@ÚþŸÏ7Ûç›}¶œ â§O·Ú­v»‹'Äiæ²ÛC5#‚ö ™À=ÔH«¢(|ä4czF¨–êfq)qaHAD—H ¬A ob¥Ç}ݺuûbõöêœ9ü_V„/hKöQ¢ ìûuÙ-÷-bo^åñ(W’ â48c |}aAñ†­Ž b¨+ûš5køßýº°ÜGÖóÙæÏ ‹ÍrhŸ3^Ÿ@R‰ãæ_¾CÝ6AQ!*&y]-àŽ;ÿ AĹÆO•a*ï(q4¹š:÷‘*fAÄ\ÀYÔNNž!¸£;÷±Cé8ËùIiIIiI†ßS¯ª˜MƒD’¼NNÁ;Ë}Ôgêw]³«¹¦¹¹¦¹í¥6yŒþ[ä&FqÖan±Y ×Fþ-p‚ ÎM†|àÎs“ò’ Àñ@:Û›EAôp«ÝjwÙ¹á#A”!¸«s'¯˜ Ê}$‚"Pò:AD¿ò;å>A QHÀ ‚ úÅÜ¡ÜG‚ ˆ! 8AD†aàNAAÃ Ü ‚ ‚ b@;AAA †aàN¦ACp‚ ˆ0 ùÀÝOå%2% ‚€Aô‹!¸+ŠÂkvÔ<°dJ@1DP 8ûƒœ " š³½§‹Åf©*«r”8òt:t—ð ‚ b.àì_p‚ ˆð ùÀ€Õn-]^j’¤Ío__!˾E÷ÙÞªÿßÞÝë4’¥a>ÖNØÁJ# ]ÁŠÀeí\Á°‘ï ËD‘̨¯!WÉ"Ü+@Ú ‰°'Xínæh‹s]£³E½ÅÜ-foß²¬#÷HùÜ)%±8×UboL§Ó/3NàEf³ÙÖÖVpT*Ap€ Ü w¨Á*@p€ ÜáaÅÙa»Ý¾úƒ£^»ÝnžOÓÀ©£¿¼ÿþÛo¿Ýô0àUúë÷oüúßß~}Œ£Þ>†ÝãÁûï7=*ž¤S#üñÇ›7o‚wx\´t…0ê}…°{|ìÅT„Nýîð¸h7 !„è`_ר œºÜáq£^oT„BñápqV€JÐÀ©Á3êõF!D§§‹7\u~€ŠÐÀ©Á¶èó»Ç§ûÑõYI 4pê¨1Nwvv6= à³Ùlkk+Øq€JÜ w¨Á*@p€ Ü w¨Á*à›'¯8::ú ã€?§“““ç\ötp~-à³<—ÜQ¨Á*@p€ Ü w€’äY«•åU) @ÕîkɳVã¦VöûW|êE”/-Ó:7_H¾úëçºï¾Á`]q:ž_wÿöõлq9µ’þõ YVtYHâBȳ½A²xµýfº'ºl€àP²{ñ­,_ì‹w:ËÇ:ƒÕkÚϾ~¤•æ·Êï¥yž¶ÖO?µZY~£~gpõc‹gy ì³¶Ìó¬•Å÷ý^ÐŒã[×=ðìöèÊ%¸¬+O?–¹‘Mãîr#¾ßL³E†Äç‹G’A§3ȳ½´Ù¿º$Ÿ„A§•w¯ö»“Á^–‡A§µ¼bœ®fç¸{žÆq:žÏÇ?~·É$>_ß ‹/²E‘[equZæú÷ˆ½p~#µÇÝq7_¼ÚÖ 9_ó÷>ûí×ÀK=ë/§p8]ّγë/Z×Ûäqœ‡âäÝâº$IB6 I3¤F§?ï'ý~ȳ, :ƲP2ÉÃ$NÏ“çdQ?Žãøê‹B>™Ü*BwÇóîŸOúóy!„A§±—½;ƒ<Ï[ôêÛ­Vøg3 ýù<ɳV+ÍÝþÁÝûìqså5ðbvÜJ•g­Öò8øíÍòk‹åÉàú\ÉÊqùþóû>»ìâ̧÷ æã4ŽÓñyø×$í&‹oÓIöŒ³/w^#/#¸”m¹¿žÿ<¸oƒAœ¼ Y'ËCHúóqO&¡Ù̯ÎÔ,+4›ùàçü"!„ü‡Oâ;eÃgÜ噸Ÿy³y÷·›¥ºæöW_£Cî/æ¨ ÀºòôÓi’§ÿNB!îv›Åãq’Ä·¯Lúón¡uõ@œŽÇqÆi«µ<Ô§ãq·ß,ª|*r-îv“F§Ñˆü1„þ²÷çífù<¡1Nwvv¹âèèèäää«  nî|Ò®=¶g³ÙÖÖVpT*ÁQ€/,îŽÇ›ÕgÇ*àY;îGGG_zÀ#žî>™ ç¨ T€à ¸@îP‚;T€à ¸@îP‚;T€àðMa6›mzÀc———›ð„ÿ‡AƒLåqÍIEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/curvedemo1.png0000666000000000000000000003210100000000000016105 0ustar00‰PNG  IHDR,XWDLh pHYsÄÄ•+ IDATxœíÝyÜÅ7ðz@#Šú´xà-ˆÆò‹Õ6FƒÆÈ¡Æz“†Ð* ñØ—šÚ¸‰ºov·³É>n<> Ò˜x¼è&%‰\š×[ŒXE#Š˜€¶(ŠŠ>ï=3ô3Ó3ÓÓÓÝÕÕýû~ò‰sTWOõ¯«ª™ž¾¾>ê P]€R›={öfµ¿ÔV ´Ð(†(†(†djÒ¤Iulú:ÆXú•(ÞÞÞÆÑ(†(¦Y #¤7oOXF•%ª™¶ }±´ÍfOuTr³r:*¿Õ‚"‹²Äf¯ ,×0L[V_üÿ«…aôÆlk …Ï óÉ0zûúzzzú<ï½Þ&mÓ"Žç1ÿoÓ´]—™À¦ÓºdÊ]·ûe4_M¨ð¶˜ã9cÁ.Áu¬ò³×××C鸭õ¤MOè'Ò××Óñ>’ÒÊK¹ë¹œJÛªìůµŒM»raõëej@åÁº§Û”¼©—¶Ö‡IÛ4,|ºU§R¿ "k.mÓ´,Ó/JØf°ÌêRªU¨-µÿBÃÖ±…MkZYnõÝa+Uÿy6å7tyèÂZã œS“¨5>å§”».¿ˆsbÛ‚B¤m‹M‡…¥mÚÔõ<ÏóbY‚4ômJ®vTÂ2s=Ïó\.­Ú …eÇs¶M9´R“(«@XhÍ¥¤Žç¹œØ6ñÿBB¤ ÏrÒ#„¤šCÿqç Ìñ<—KÛî?­áL!… õÛmuãk¹ù5/¹9ÊÚ‹)wý+ÂH-¸ æ5W.t¥¢}žI4´f´ !!ÄóÞë#=7Œ°Û¶BÖ¦WŒ1a[‚òà–A)vmJž¶%ûåHDH‚Ó8ʹ?¬”N¹ëykÒE4[PhÍ›| BÞK©ß‰"„©uÇduÔ+$¥4d¥¢|žU1Z[:‰9.7MÃðÿE¹ë2B¥Ò2M⺜ƹmÊþW Qî:Ò0 ›ÂB„e1¶.Ù©½Hš~9„9§Ò®<îò™ë:–Q)ƒrס‘DHhÍCQFlðjëÂjÌñ8­ólX´ÿ˜Q«ˆç„&–Ri†¬•߸RŸ'TôøwÖ×ÝO˜ÛËÖz ã=ÏKºTÿ @†ýÛ–Eœ¦óÀ|Ô<…Z¤ÓÐêù—­ÕÅ­P=¡aôƬZ‚0ÇËM ‘’2ÞöUy¬9ÄQÖÎðv<›gNþv¸Qæxyªy §ì[ðÛºH3FÌ4ãŸEŒ*ôQkë"µrB%¼f£H9D+œ°îzš"Í Èoèâ]YZ„B<ï½¢Ô† à·0{[ GA3Å»ž!P !P !P !P !P !e sÉK— ržôÿ‚û"ÊWƒ»F´MQÕ]Šæ(„Á¶éækô’Ó9a‘®‘h-G=a†(† îëä(„]~¹(hÜå(„m¥”Ó9!@y „Š!„Š!„Š!„Š!„Š!„Š!„Š!„@!†Ñ‹‹uUÉ×3½Ú­}—ì*‚ž0-õ-ÅûNk½”%„GBÓÒ®ÂÅPüúñË2úþxP†£)ímSmÄRÌ SnÕFë ·H¿îPÛý%¸7 ~Iç#*~O˜’ZïÚØ×7k-ú–büºCp’¬ÚïϦQ8)I³¿WØÏ¡ ,¤”f)[üᨃôÆÍô‘ܬJJ»¿”Š-~}‰G¢öƒ•èîr"¥ÉmsæR GSâ7. Ôè¼el)MnÓž3#„]é#zœæÖô¼eI „ŧïyË’@‹Â2Ì1ŠA»ó–eóèh—&@zj9ŒÑXŸ0(Ïâô„˜cè(Þñ½E|{§o)¡´æ„½†ÑâÙ¼µM‹Ú¶^‘4–ØúÙØoŒ!Ê…`-–è¿=Wm}CGg8Z;Oã½m²õ)õÏÆ~c7b×'{>µ7kënê“ýÇžjkÆœvsAë¶ü¨µr§•ÞµÔ…ÿ²µØŒØK„ìÕ®¼í¨¹»+•P¦×Ž¢m4c‡[¤ÛÓ–õÜh›òЮ} £WIÜE¡QÛF/!}ÄЩ΃ßЪŽS”åV¦‚3XC*°ºóÞÙ·5®$oç» HB5zHÖ߸¹Uöáhµ ŸøÕŽå&;DñÇ?âf¬Ù ?x°¨8f‘V{ô9žÑlâ—Ò—Ó´½”D/=¤Ï#¬Bë¾ÚVH>„ý¶A”‹R­¿î9¬uéDõv¬µT愺œŽ¯‡d¯ $ú4wn¥{`F‹ƒŠ~3ËCí+IµN`-:·Ò=0“ÿí,Þµ‘‰,´H´hèÜ^ª•|ó¼¶ÍèRÏ\Ñ®¡s[ÉTzÂÜ®-$ œ¬P !P !P !P !P !P !P !,Ãèí!}¸|L;e¿Ÿ°0ðeúBOXøBW­!„E üž,èBXµb,ª„°8ü"ÚA  ÔB B B B B B B B B B˜;¸-°lp?a¾à¶ÀBO˜#¸-°œBÅ©ýjÁX´L0'Ì%?Õj¡'Ì#$°TBÅBàb!aN¨ œB,*ô„ZêëëAX¡–Ð †£Ú~Ã/X$¡N½BÂp@1„@1„@1„@1„@1„@1„@±ò…PXF•%ª™¶ }±´ÍfOµ}eô÷FRóÈ¢T¦Ùk¤mµ'_+([¥mZÄñ<Ïó<—K?|R¦²QQ&UZhͳ#m»ÓÜCT% !!„ÒJ0(w=—Si[¶”¶iÚ×Z›vøDXýº›Z/Ty°îé0~Ÿ!mÓ²¬ºþ«¾4i›•Ze«¾æD4VXÚ¦iY¦_”°Í`™Õ¥T«Q[jÿ…†­åœØuU«{¤5…š…Ð0¦wõ~Ê9õ·ÚFA¹Ã)å®Ë/âœTvøÒ¶c¬òi›6u=Ïó<‡X– „0ÇsXè" Â<Ïó&„-MØ6õ;9‡6ëqBjNXh…¥¤Žç¹œØ6ñÿBB¤ ¼ÒZ‚i[•¥:Ô¶ _5Æ™V-ôím×4²nZ+š…tÝ<¬2¤c¢qÿL£BB¤„óÚ–(¥ ô"^+=¥TJV¥Ôï1,Ò"Û!5­0eŒöÿ£Zc•G¥”DJYI-c,Â:Õu†¡oo»¦(Ouº€Û0¦{Þ´à]`ŽçIÛ´lÉ6mõ”sf!© Ì¡u/ÜóEZx¿Ò¸ëq$im¨9o^á0ÎL[tö)ÄúÜmh è×BÊ"´iÆB[ÂßM&ÚBþ©€Ï-Ä$,‹8QFry©pRš5t1rØÛÛKâ¦GOج ž9øç™ã©ß ¥¤¬YWºIŽ*œŒ ]˜6Ò#„­%ÖBÌñ¼$*”€(s¼\U8uΡ–f•d_rEme BqÿWÔ*( ]ÈVÖ „AÅËaÞCXÔiÔ)sCç=„…W¨o Rvƒkè\‡°ÌC(\‡Ê»Úü†0^Ûl Í©¡óB€’Èi1D) 44Ém»Q¤ ”ACºè²,ÌÞ6!ÄJ%!„2À®¶&w!L¤m 3PÖŠÑй !@Ù „Šå+„ Ί1P)*LƒòB€N`o‹(Vä`YH‹ÖÉQÑ6î{Û… œBÈÆ;ò”ÚF÷ D¤uCç%„¥…(–‹¦:OÐz R0˜†ÊEº§ïÞ!Bª?· J”"„úî#³áÓþˆ0mF}‹×6†1½ö?Õui¯öù`W¥é*á—zó Øöµ}Jþ7ˆâíuT–¦ôc˵˜é¸)7~ éý$µîiOµþЇ£º· !Äó¦5[…<Žš}òy®siÔ?í­TýœP_úîAô­y!•(„Jöñ9ìXÚ&0‡uîH²õÏ`‡¥2„Zï5­|Äjk·k­D=!Ñß%„¡SÙ|bå aR:j›œ$¿T?I­WåKÂî›ýIGôý¸2«¹²êÛ61èµc®Ñ´Ú>*_ºž°Kšî;bW[£M9YY6tW!Ô´yJ»aeOí>K—†VÓ–­?!úlô­yloŸ]…PßæÑ·æJàãJU·=ayš§û½£ªÏJÕO>æa¼£EµŽvºžyhHZ9º¬ç„ùi›Žöù©¶BšŽzòßÐÉ„0âzbSÎ~;Nö3GC§!±ž°móä°a°I¥AßKUÍ3ŽêÛ0‰ÓtPWÓºþùlè(Ÿ¹Âš'ùõé}9‚Zu…/Õ_øh,YÓÖ÷ZaÍþŽ™ÐæÉsÛ4«0Ñ9{Ðn‡›ç†Ný‹ž4jªÌº>í¶à(ôZ£œÄÏ—|ƒ[˜ S›0俪¹¢oC“œµu*=¡v›µ.õìHÁ@C'"Å££ù\áœÐýiºKi… Shèîá¦ÞbÒb’>„P™"H¡!€baa,ª„P%ŒH „Ê!„Eƒ±¨vBÅBÅ0-„@1„°P0!ÔB¨F¤%‡(†Æ¢šBs#Ò2C Ý ¾BÅBżèfZˆ±¨ÖBÅBí¡ÔB˜#8QQN!€b¡Þ0-„0_0"-!„Pcè‹!P !ÌŒHË!Ì©<ÿÆ:$ !Ì#Ï›†þ°<Âüj‘CtƒE‚æúÃ2@óÎÏ!¢X`¡ꦈ‹ B¨ M‹ !Ô‰ŸCtƒƒj ,„@1„@1„@1„@1„@1„@1„@1„@1„@±‡PXF•%ª™¶ }±´ÍfOµ}eô÷FRóÈ¢T¦Ùk¤mµ'_+B–Ñ®Ðjµ¨¤iËdj'm³óO8òBi›q<Ïó<ÏåÒoX)“Þ¨!„P&UZhͳ#m;µ­RÚ6áL´\@­ZªÉ~æšËk !”V‰r×s9•¶UÙƒ^Ü «ß롅 U¬{:LmßlYV]ÿU_š´ÍÊ­²U_óþˆ_#i›¦e™~QÂ6ƒeV—R­Fm©ý¶j”sb×U­þí‘Ö4„°mÊ8cRÔ^R_Ô¦6ªõu›>²`ÉMŸ û„ê&û^ºËk)çÔÿ¤kMGÙOÿ÷[ŒŸû»‹/âœTvøÒ¶c¬òi›6u=Ïó<‡X– „0ÇsXè" Â<Ïó&„-MØ6õ;9‡6ëqBjNXh…¥¤Žç¹œØ6ñÿBB¤ ¼ÒV7l©µ­Àv¾j¬®¯ }{Û5 ût„`Œʘ Ƽ_Q”;œ{9i[‚¹Áe5>+l›: .Û}÷ï ²ÿ9¼nµ5rh:C£¬å5„„°ÊމêmÏ|c‡vŸ|âK?9ŽQ!!RÂymK”Rz‘ŽG¯•ŒR*¥ +Rêï•-Ò"Û5'”…T˜2FûÿQ-€±Ê£RJ"¥¬¤–1aê:Ãз·]ÓÒ¶¥_qÊypTWTCe\‡XÍ n|–R*¬1cxc×ý<û»ëo]ÖX·M! 4½Î6S]¶˜ãyÒ6'þôÙwŸ^·ÃÐ}wòÔãn½ò”“l!$„9´îå‘{¾H ïWw=î$ £í¢*5·lÉ8圡NãÌ´EgŸB›•¶-%1 »ú€´%‹0©–aÇóÖ¦77–r!/ýåsŒ'þùÖ'È/ß¶åáï×ÕM6£»¼ö„ ç¤ràë&s¨ÿï‡:û×Oï3Jü«%(n ”RaWÍu}ܬ¡´Ê(w=ÏaMzÚ†šWº Ƙ°ë+®2F¬¼—RZÈ !jÓÍÖ5t†QÞÞösBTû÷ʧÊÐ9¿n‹†=+m“žúßß½ä2ÿÞæø½ç<¿íîâÿëF«Ží›ª™¼ö„Ìq¹i†ÿ/ÊÝ53œì'÷™jšÄuùï~÷ïg3÷©‡öÛ{Sî:Òð÷×Ìñ!DX†`u;yioÚ¥3ÇãMêRšëXF¥R”» )¿¡ænå9ƹmJÖ¾ƒ¢ŒØ†aÕÊjÌñ8%¤²õ‡­Z­œS ¥ÍÞÞzMƒ…KÛ&ŽËú½Süñ££”JË4‰ëøõ`̲ Û?à Ö²þYÊÝÍÿÓ¸â ûŠ+*Ÿ0%³NûÒ‰v¿ºÕÖˆRJ pˆµ§¯¯2{öìà£,¦’%!– ñ’ãœxLÚ¦ußH{ôž_ø—ù’²š",‹8QFÀþ¹ mÌG^¯$ÍšõüÒ¥ûÕ¯¾Z÷øI'ýߟýì¸#Ü%Ûê$¯··—4Ä-¯ÃÑþfÌxnòäC6ý[X†aÚ”ßwãèAƒ6›6íOêª&%°ÇªVX—F]¯¤ÝpÃ3\pXãã‹ñýïÿéÏ^“y² AO(åZ˚纛½Àqž¿ï¾×~ûÛS³¬$îþû_¿æš§~ÿûo4{ÁG8sæ°#Œ,k•,]{Â3–Nž<²Å ,ëà3Ï<àÌ3çfV%HC³n°fÉë”Sî|ë­õ™U)Z„°ÿX4Ì)§ŒØo¿!Ó§?•M• q+VxË—¿;fÌðÖ/{ñÅ)G}‹ç}œM­²‘÷FI ï¬³¸ýöei×Rrà Ï^pÁ¡Q^9cƸ .Xv}²Tœî·ßO>ùìÕWßK»J¸Ï?ï›1㹩S#…ðć-\øj__Ú•ÊN®Cøè£on¿ý–”‰øú±c÷^°`EªU‚4Dï}kè\‡ð¦›ž2¥ƒ¶?~ļy¯¤WHÉõ×?ýÝïýõãÆí=>B˜¾µk?zøá7Û7ú[Ž=v÷%KVøáÆôj‰›7oÅÁï¸ÇÛD˘1Ã.|5½*e,¿!¼é¦ç¦L‰4 7nÄüùè uÒi7H:tð®»nýÌ3o§T¥Œå7„ÑÉl RxË–­]»ö£cݽÓ7©3Ìiï¾{ù1Çì¾Ã[vúF„P/1ºA_‘:§!Œ7%„ ¼ùa‡ }ä‘7¯$îÃ7þÏÿüeâÄc¼÷Cvzûíõ«Wáê™<†PʵkÖ|ôå/w™ ¡¯•BJ6„Dÿc¤9 aâmƒÛšrè¯]÷ÑG»?¤ûÔ#/!|≷öÙg»!C%Xæ{l³Í6_X¶lm‚eB—ßÕ„0)i´ ÁÅÜù“FC÷ô“NÒøðL^B˜à1ë Ý÷‘óÉ'Ÿ=úè›Ç¿gâ%k}Œ4!|ýõuë׺ÿþÛ'^ò¨Q;¿öÚ{kÖ|”xÉC²Àƒ´žÿç"„‰ Â1ÒüHiÒAÙe—Á;î¸ÕÒ¥O£ð´å"„éí ‰æûÈ‚I/„D穇únذÑuWü<Á§ûI¤ÂxòÉ·FŒHøxB_ªÝ !dÀ€ž¯}m˜¾³ö Ìœ¹tÔ('í/æI»¡?|èÊ•ïÿý醴ˆ”ä!„)Q|Ùï#/^õ¯ÿúè† Ÿe¹Ðxn¾yé /¬¹÷Þ3'Nücª Jð™f4õ¨aJ''‚ÆŽÝû©§V§ºBÈûïr×]™:uÁ^{]ÿÓŸ>²zõú /\˜öB»të­Ë–,Y}õÕ'l·Ý Ë/?ú‡?¼?¥½ñÆûëÖ}rÀÉÒtþ¯8„?¾ê€» ¾™]vÚøßÿ½ä²ËŽJ°Ì:*C¸b…·qãç_üb’Ô·lgøÒKï,YòöäÉ­¾/l¿ý†Æ Å‹SàÅöÐC+ýë§çÌ9-ôÙ‹.:üñÇß|úé$k%›nÐwôÑ»®[÷É /¬IªÀ+¯|äÊ+¿œTi¡T†0³nЗl¯ºêÑ+®8¦íË&M:höìH/^õoÿöøÜ¹ßlñš™3ÇŸwÞ¼šÍ„°fêÔCo¼ñÙDŠzë­õsç.?ÿün¿þ¯5•!ÌlBèÛu×­GŽÜ)‘sO=µúí·×Ÿ|rûÊŸuÖsæÈ?ï~¡Ý{öÙ¿ýèG,\8¡õˆï=ûìö³Ç’Zn–=!!dÒ¤ƒn»mÙ§Ÿ&ð™gÐ …!üðÃK–¬Žñ›XÝ8眃gÍJ`’ÖQÛääð̲ek¿÷½ûxà¬(/þá¼çžW^|1[1—,Y½çžÛî¸ãVÝÝ”)‡ÜtÓs]"å;Ï=÷ögìŸH•ZPÂT/Únf̘áÏ?ÿ÷U«>è¦?ýé¯[l10úïÕädD:mÚ}?ÿùñÑ_ŸÔ‘ÒŒ»A_"#ÒlºA¢0„\(ªû™áUW=rÅ´Í!‡ìDQûݘk×~ôÊ+Þ‘Gîý-”9õÔ}ñ‹Å].:ã ¡oذÞ}öÙî¾û^‹]‚ë®ò¼ Ùl¢ÊB¨¤mH×!üýï_1b»‘#wìè]ÊG¤ñ>íË/?úöÛ_\±Â‹½Ü·ÞZ¿f͇ÜÙÇ•ˆ.G¤™uƒ¤›Þÿë±¾?òȇ6tðàÍc/=¶!C{ì±ÏçÆkå#ÒØƒÿ›oî¹ñ”f|ì-h̘á/¾¸öõ××ÅxïÂ…¯öönzî7 ñCxüñ{žþÂ×^{/Æ{Uuƒ¾Ø¡ã<üñ{íµ×¶¾q³ÍL˜@o»mYŒ…&"ö~è¡;zê¾³fÅ܃(™ÖÄî ³ìI—ÃÑßþöÔoû1Þ¨jBèûÊWöX¹òý£¬ˆçC)‘.X°b̘½c_uõƒüÃu×-Y¾üÝNߨ×G-Ò/„sæÈƒÞ1/[i¦«tЧœ²m»½ë¥—Þ8pÀˆF7‹îÒyçœ9³³Îðšk–LœxàvÛż'Õ4w}÷Ý ù‹‚Ÿ.í~ÜqçìôÓE§ïš3GN›öÝ,·Kƒmvúéûýæ7/tô®Œ»AÒýÎ͹s—wôÝž3g.½ôÒ#»\n—bŒH»oUa÷!6¬÷ »ì²¢¿å‰'Þš9󹨇¤L™rèM7up®â¦›ž;ùä»îºuzUj”ÀÑÑ[oýúÙgÏøâ«®ztçŸ~:í~¹ÝØrËÍN;mß;îx1âëö³Ç~ü㣠èêBz%×s/Y²z=¶Ýi§nÏ•OzèŠ^ăþüÙ©§ÞµhÑ].´{#Gî¸å–›G?‚xÅ_uÕ±©V©Q!>¼÷œsFþô§·}åÍ7/}ソ÷=•C”šèWϬ_ÿéõ×?óÃvÛ{o½õæ'4üw¿{©Ër:’àºÑ¥_ùÊm>éÒœ DŸþâ‹/ºèˆ­¶Ú,í*ÕIæ<á?ýÓ®»ê‰'Þjñš{ï}mþüW_}B"KìÞQGíúþûGH'8IÈ~Dšà•I==äŽ;N;㌻q®CYçIDAT[¿ìüó~ï{£(ÍîÀFkÿøûÝwßkž×æg›7nüüç?_|ùåGgS« ÄNÖÿæ7§´ø’)×þä'ßy'Kjq‰ˆ23\µêƒ{îyeÊ”CYâèÑ{®XáÅ;yÃÊ•ï¯[÷ñîTcÆ ß}÷mZÓºþúg† ”Áõ–‰rÛ¥—ÞŸññ˜šÄB8tèàË.;ê?øO}øáÆN¸Ýu'&µ¬¤´ áC­¼øâ{ýë¯%¸Ð,Oܧqîý× Ó§?¹råûO=öØ›øÃËÿñ_Iv‰Ý›<ù3šŽH—/wÊ”ùÏ?¿æâ‹ϲV5I^¶vÞy#_yÅ{àúßå<ðÀ/¼09Á%eÀ€ž‰lŒÄš5]}õ“‡:ë—¿|â?8ò„öJp¡YŽHSº("tr¸~ý§§Ÿ.æÍ;=ñÅuo§¶:úèÝ/“zá…5“&ÝsÖYs¿öµá÷ݧì0RÂ׎6ž¾?î¸[ï¾û›±O¯¥í¼ó™9sÓ>rÁ‚W¿õ­¹¦yË|"Ä7æÎýæ1Çì–ìwÜq«Q£vÎà›ù7løÌußLã[•)Ýþì³øÉOúŠ;î¸[zèìÄ—•”ºéÓO¿ý­oÍ:uÁ7¾ñÅ'Ÿœ4a‚ÊÃõ ÚzëÍùË.¸`á 7Œ!„œ}ö~ô#³Ó˳4r䎛o>pÁ‚O>¹ú–[þ|ÄC'M:øöÛ¿žêB'M:Øq–¦}á^ª7‹]rɧœr×#¼áßÒuÞyóüã£Õ^€ÑÚ1Çì¶víGR¾ãy~ñ‹Åï¾»áÒKRxídPòGcÏû÷NØ«ûo7„Œ!„ê%ul榛ž9öØ=º/2†ª·ÕV›µËC­ì¦O?ý|ÎyöÙ)Þ )As¡ûÎpÖ¬¥çœ32©ú@–Â\è~Z8kÖóçœspRõ,!„¹°×^ÛnµÕæ/¾ØÁïê-^¼jÛm·Èò×¼ Aa^t3"E7¨5„0/bH7lØ(Äò3ÏÌ×7ÏCta^Œµó믯ûÛß>ìôŽógË:(*A6‰×⸨î‰ÂÇ_5dÈ ýö’R• aŽŒ»÷Â…+úú:x ºÁ@ó¥£ÎðÃ7þñ/«ý1èB˜/¨@7X a¾tÔâô`1 „ù²ýö[Ža<ñÄ[m_ùÈ#oì¼óà}öÙ.ƒZAªÂܹøâ#fÌhõ#Þ>tƒ…æÎ׿¾¥C&Nüc‹×¼ÿþ'‹½šÿŸ„(Â<úþ÷ÿaÂzÐA3׬ù(ôè‹!Ì©SOÝgÁ‚ ¦y˽÷¾Öø,Ž‹ B˜_»ï¾ÍË/ŸãÏþç.>þàƒ+÷ÜsÛáÃñ£KæÝw²?ÿÖ·æÖA7X0¡~ü㣿óƒ(½iõêõž÷ñ¼Îؾª+‰Iå7ë!qãÆí}ØaCG¾í”Sö9÷\tƒ…‚žP;ï½Å³Þ´i­ÞL9§†iØ„0Çs˜ÿÃ…E—SI~cÚ‚;ŒHÛŒ;„Ø„"mÓ¦®çÑʶé9Œ9ë¤ä†(!RR×ó¨´MÓžCl›:žË–áW#Jý ãÜn¬¶_8±MÓ&þ–Œ)ˆãy¬ºPj[•¥ ˰læòÊ’V°²,fÙ‚;Õ/ü–ao„yžC„eA ùôZ5QMë†&mÛZ+š…4ÿôÛ6!„9žGˆ¿s¶›2!„Pƨ)aTÂFH¥óR Ó°+¯¢’¯oUrc Ô_\e©–”„Q*,Ãð r:¨hµýƒT `,°P"¥ÿaŒY"|Í(çÄ´eµz2ì핾šR*ý%DùôBµˆY”¶ÖHɆ£Ìñ<—Ëþ£+Ê9BH!ˆ~/÷ªs±ÖÛPhÉJ ÜõŸV„[p)ͫƙètfØÁ§WRe ¡°›·BÖfXŒ1a[‚òà¶B)~¦¤m6‰Gë’CKBÈM/®½Åœ°ëɺ ýAS´åË"N”YU;C­[3‰¶V£··—4Ä­L=akþayæxyÙ”¥¤Œ·}Uîª C«ªG³@¹ëFxQ”®-ËjC:Êt` — Õvu*@‘â„°uÆ vzZ4¨v{Ûâ„Ê£`Ó`N B B B B B B B B B .[5t¼¾,%¹ !Ú¦<´»Ò:%¹ !AÛ@É`N B B B B B B B B B B B B X쵽ƒ ·¶¤!L‹v›uÁ~àA#% aö?œ†Í¢(KñÃi[e aJÞJcÈcLŸžÞô!ìVÞ¦v%§ã§(CCܰ,ò9‚– Ž!冣Š!„Š!„ŠÅŸjw2t£Es£¡»?„:^šñàJôTáè(¤BMÑ6åÁj[ÊzB´ €GGCCÃÑÑ6p ©$64BØŽ!•„ª†Æp@1„@1 G+²Ÿdÿ=¨@r9ÉG Q±ÅãÊ[%ò¹kK1„Ø’J Ý¥´B˜Ï]$ Ý=˜P !P !P !P !P !P !P !P !P !P !P wQ ®¥ÖBX4¸¢Z;Ž(†(†(†(†(†(†(†(†(†(†(†(†(†(†[™rªÅ¸Y©`Âaê×”ˆÆÜ´ ô…mªZ«{uõëþIBsjÛ‚HÛ&ŽÃZ®xe5EHù›zÎÐGÚ4tiÂV(çÔoÇÚvC¹Ã)å®Ë/âœTú2iÛ‚1Vy‰´M›Ööá– „0÷^‡q&‚¡´-›:žçyÕ¾AJYË!”²Mÿ¨#%u<Ïs.bŒQK0c4¬>QÖ”°ÐôärbÛÄÿÃ_œ„WºQ?"õëR-5ì£`ŽC,Ô¼úT³¯®&k,_Ø•RΙ¢ÚãԽܫΰšu^„4v†u(¥­6àð磶-„mÓZç¹>ý×´ù &KÚ–`Üá•^”´]ñ0”»þê «²éÿȳN”†.=BX7=¨Ÿ-Õ"…‘!„0Æ„mUzœ*J©ðÓ*m³Ý‘½`gH)­ôBJ)!”1RÌ kÓ\QJÒ,ƒ~ß Dµ§ˆTŸfkº‚áüªWßÛ¸.MIÛÌá”PîTcØlÅkʯ¬å®ç9¬Úý÷¤öî’L qS/s\nš†áÿ‹r×õG9Ò2M⺜ƹmÊZS}# Ó° !Ìñ!DX†`aÓBBãœú›åNuqÌñ8­+‹PÂ93,Ãhn*’QË"޽>ákê×®aCQFlðj‹hX—Jê]9 êVÇÒ7MÓv]²âýG!õås×±ŒÊPî:”’úGÚ®DÁôôõõBfÏž|”EhM­ø‡öÛ ñòGXVõ@dkº®`Ùôöö’†¸é1m­Í^”e¤–;RÒ»CW)FÛœáõvDéNr‡æ6§ñ v¦¨×Ó!„¤í©|(„¢^OSˆ3Pµ&¤0=aëSùyV„F>•Ú+äÞ¶!ls*Š¢¨{Û"„J¢¨{[„@1„@1„@1„@1„@1„²VÔK@cËQÑ6%QÔK@cËQÑ6å îƒòuw!/Ïh-G=!”G!/-_!DÛ”AQ/-G!DÛ”DQ/-G!DÛ@9å(„å„(†(†(†(†(†(†(†–nË„°ÔpûX „ÉÓ«{Á­}Ê?„ÙGÝ t¤ø!T º—ÂÜ>–ÆÞ6›=xñCHRˆ„^ΊtûX{Ûlöàùúz ]ømã7IhÛ´~6? vûX_’ÁW®”¢'LcÄÕ¢w-R÷(~³DÁº¤±·Í`Î\ü¦‰ÂÏ(Œ4ö¶ÙìÁ‹Â4è5à,Ìa¤ÖÒØÛf3¨AãÐkÀ‰ó–9‡££¥€oUÎ3ô„ŠÅ aIæE‚ÃHy'„˜cè%öa$ìm³s8ªÑµ‘û0Rì½-ÒÛ‘Lç„híÄÛÛb¬Ô‘˜!Œ7Ç@Û”ÆJÑÅ<0ûT5ÚF/8¢“˜fZü £›½-Ò]Öç Ñ6‰½·Õë²>å²>0ƒ¶)½ÆJÊfB´ äòã…¸l­)åm™Q{¼p·‚ëž!è ³†Qn©=^Xê¶ÍCz_N,?©’¡™Ö ­üxaò!ÔhOß:éµM1®X(LC+?^ØÓ××G™={vðQÆX7…êò…>%³¾bL5ÑÐêíí% qKåÀ Žg´¦×¶Û:¥ž3rå3rÊó¥Z©„0Ï+¤$Êg BC'"ù9aÝK÷4ƒ†Ž!tN˜ÊÂ²Ï ”CCCCCC‹@£k©¡BX¸=Jk¸³¾ p-µ¾Ð(†„.×RC#„°r~—´†A‘n*!„@1„@1„@1„@1„@1„@1„@1„@1„@1„@1„0Gpon9!„9‚{sË 7õæ îÍ-!ô„Š!„ù‚{sK!ÌÜ›[NaŽàÞÜrBµE…j'0Š §(t‚…„ž@1„P'8QH¡6p£¨BmàFQ!„Š!„Š!„Š!„Š!„Š…_1ÓÛÛ›q=J+¤'œ4iRöõ(­žpöìÙÙ× ´0'P !P !PlÁ$@©ÿí¼×8!AgIEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598429956.0 PythonQwt-0.10.2/qwt/tests/data/curvedemo2.png0000666000000000000000000002121500000000000016112 0ustar00‰PNG  IHDR€àº³K³ pHYsÄÄ•+ IDATxœíÝ=vãH–Ð`ŸZGqrZ+˜%”[cŒÃ\¬²e·‘tÆI·–0+P¥=°7Â1"‰Áñ"pïÑ©C±Õ™¡dßC °9 XÖ?JVçÛ·o¿tÊVE `(@@f÷û￞ùeôçþøã_óB;>ûßî÷)¥÷÷/…†TìpøëôI0ŒèÒw»}Év»×”ÒÛÛ×üUld@+0œ•Ó·Ëà~ù+‰'· aåºÐ|Ûep½ùÖ4p/ ȉ;ˆá$‰› `xܹ‚8Ibà ÄÀ½0LI7² fñþþe¸VM}*`˜‘‚8GÃ$10 €aQ’È0”!‰¹Ñá?ŸÛ__®ÿµ™`Öýù?Ïÿ!°Z–kqÕá?Ÿ×ˆÚ¨€!1l}ɬn‰†X$1£rôjG·dšþ¯?ÿçÿ~ûßIþ( “Ĝʥ° nÃü¿ý¯ÓÀ´'ÏêŸ,Ý‚‰>íèfhAÈ®©ª»ãLdÚÑmÀ0*tOiM“iG×NÃßOß>IŒvtÕ0|7zÒ7/qÉ’¸aWk\íèzMÀñRpAØr­ÕÒŽ®Ñ4·#làÈÅš]Nß×ùv×Ê[kÙ]«m9ƒí™U-hÖ®Úw”ÖôÚhG§ª~}̪5œ¾}’xUÖÙŽ®±ôÀ¬Ô]ûlT±ë’x%Vµ:zð›V”ÄSpG(ÖÀ\ìé‘,×jNóíè.hû¿`]¿¯ ˜Õ‘¾» âÃás»}¹ü Ñ4ÙŽn¦¸Ÿ,€k\)Ê =œ¾Ít¡G]MâÃá3ý=qOŸ!¦fÚÑ£%oÕTÀ¬Å$7Wh8ƒ³sI¼ß§Ýî5ýHÜœ¾)%é[…ªÛÑ·çnu¿ f ÎѦNóœ&ñ~ÿÑep~FúÖ¥ºvt…ûðJŽMÔåöi9HÜÓÿ× Ï³ô—kuœ¤oªhG?Öj®ë³E¦¦q—Ó÷jâ’õÏg‡Ãç~ÿ‘,œ®MävtüÓÀ´l¾§õ뽉›—b­³ÓÓï<çÇ»Ýë~ÿáú¥…jG··ºêFS°…ÐÄÑMÅþœ\ajN.wžûë°2zT§x;zÂÜóaâ.*`š¢¥<ŸÁIßߺÿÒŒæÎ•RíèµµšÏÀÔí4qçîëôŒ¬šVWd±vôj[ÍçLÀë<=Æ2®žÄ]lú™çç 6¹”ÄU˜»=÷^i¢«€ íö–ò$ûlÜH|Õ¹ =ÄpXs´£•¼— `byì$®z4,q]&iGËÝMÀ*îòüuA©\úJýÛ)ˆ+òL;zùÕUõöŸ“ ˜‚& °R)è³æcÄU¸·­ä}Ì,¬2`fZ¥ÄU¸ÚŽ.ž»U—¿IL)Ofç’K®.£øª¦ î\;Ú…¼“ÀÔ'HìéBOEAY¿]¼ämŒ¦€g4Hú2qX¡öŽÎ¢çÓ°²€ùHß5PÇT{Ú¤fi‡hÀô]`çË5³½%m›+€•˜P%W”¢5Í@ýç¤fa|2‹ÿa.þÛ 5Mc0¡ÅÏ6‹–§ ¦ ˜åÜ›¦ñÓ—‚š/ˆÛè²Î¡™™YXMÀ“ª;éë³BA b*5cìDßí󡺙ãgÍÄdÍ”¿I šhªK_¢QS ÌnŒÕªÓ·êÁ·GAL|˜(ª0]è°Ä-i©ÿœ0 ¸š¬Õ-¹:§êÏm;W'IL93°]ú¸…IÂ’´¦‰c®Ö‘#»œ¯Ò—R¶¦»›ý1ª±þsÒ‚¦ ÆÒ7èlì—jÞíñáð¹Ý¾\~æ^ƒÄm,]¸J3£siÔÌI_šq¹ >>Óß÷ô™[H\ú0KS#Ö¹‚x»ýÒOÜü8¥t5}%îTÚë?'Ì|Fƒ¶íôÕ…nÆiA¼ß§Ýî5ý¨}Ó™ô•¸ÜnÞ¶š>“º âýþ#gpꥯÄ]@“åoZà2¤ùþ|";ÍÚõ¤¯ÏíéŸ N›”R:¤up‹ÁÀ2´ ™Ýª–\ùÜÙžŸ5î&¥”¶¿þ<¼ß$ó(ÌV’¾´a´«œC7wžûë°ìã1·VûÏI3‡~vÍX]èºÜrw°ä*ûööý[1Ìf`G" š©VN.––ÁshµV31å¯ÓÀͺV¹ÃJáÉ}?ðŸÏÔÜ’·%.Cšõ¯€˜ô~âXæØ-†gÕd «€™’ò—€–v[Ÿµ˜1¬Í4„1ë1w'SGz1e›Ò˜IÜÙ «Usoû †S*†00·ÄMš{?K1¼˜åcxÑËœk† YÏ)ZŸµ˜þë8÷éaqð,a|U7ÿ½š7_ [Ÿµ¤eö³Ô‚æn.›¯™©#½°YûÒKï„¥hŒ0†s–©†u¤0ÓKi+Jî#qŸä3èÚˆáfLþR `'Œo'wWnÖî‹áLøR`G¢zI\xÆL1|n}Öá0ü[NŸá1“¼”¶¢äAÂøaÞ +·@ ¿½}ÍYÛOÜÓg¸WwyRþÊ/åÚUÐÜJâ>ÉFôuËkgZ&½ßìv¯)¥Ãás»}érw»- Š >$Mûb• `G¢Úyù`¹žiÿ¬”~fð÷¿Nú^3k⨀¡ŸAÉæHßÎûû—.ƒ“ô=cÉÄÀܤŸ’ãar—…ué›~ô¢ &ˆ‚‰; €¡ aÌÜúçnÖ 38Nâ,Àý#Ž£OE”¿0‡YûÏœ¸Ýš¬5›¸*`€6õ‹Ý|>8¥ôöÖàöѵ$î€æ åï´ô(åýýK3ûdUš¸%·¢´°ZËôŸú7SªËèÝWéÑ=HÌ%Ê_hÒÛÛ×àè6jÜË0,Mš‚Â6¢×¸… ™òfR¤ÿÜ Ûˆn «|—¥Xâ€7¥ÌàUq?`Æ)g%t׬lù›E;áßdy`Â6¢×£|+Rþ.Ì»€‚dp)å`=BõZ»F´ .B3¤ä]†ª—¢ ^•|zÜq$ K/Æ»€²ÁËSó7æªÿÜш.Es–0žÛ êUSŠFteX:&‰ «åª¤å©€'ŒaZ1ûϧdðb0ßIÜ"t¡‰C#zaÅØ&2a Ó Xþî>”iD/)P,’ ’¸°ý{Úfp&ƒP2€%nLÂxaºÐ, Ÿ»ÝýþrbX#z1*`J‘¸0«²ýçÓÜíËOŽf°"xn±Øgÿâ„qÞѪ^¹ •ÀWhæp*¬»œa~r |…yÌ©‚³Bîr•£V-0Ôa½rj'€¯ÐÌáÔ’³BÉ˽µj!€!"¹ ÍÀÈí¹›÷£NñVe7ÀPÞ½õnG̘ûW à+œJáÔ„³B«™É9jÕBCrÀWXOÈ©‡gÅT¹›wĬåvL,ÌQ«ø ó˜S÷Ί9êÝœÁÒ—SŽZµÀðˆÃás~§ÏÌÝg–¾Pµ”@t¾•ñäYÑ]Ô=îžy{ûzºqÕägyMNF™µØǔҷoßúÏþñÇ¿ êп ·{¼ß ~ÌÒ* ¥t8ü•N¢V ÑåîhúÊ]à*-è+4s8•gE?qóãÜg^,}MNF™µPÃ#ÞÞ¾îv¯Ý·»Ý«%QÀ]0ܪ·®êK—¾ý^´ n'€áºÓ вœ¸ýuX7ÀW¸¤}Í.]Èûþ·b·Híkr2ÊĨ…†§Wñ– Ð*|…]UW寽«‚ÌŠ à £ø óx%î*yƒÌŠ Ã £˜Us[@ |…fN«ž9ËdVјµÀW˜Ç™duUYdDcbÔB³ ZÍ@4ø ÍœÚÍqAQYdDcbÔBÓ&%/œ¦5öЪ7€óæºv·çFJ^ .8GïfsL)›²ìTJ|Ë—¼AfEa‰Q‹ˆœ~¤/\ äª4€;›Í±ll=a@ÅÏò™A†A4&F-‚ðñ¸Ñ‚f NÉdVјµˆÀ9qÇM²‹”R€’`r8û÷þ%Âç8Íœ‚ÂænYdDcbÔ"n™@A†±*qZÍç™A†A4&F-â0+¶ä˜\ÜÒE 2Œ¶Å/y‚ÌŠ à £q˜5Pò«%€) º’`r˜E)y²¸äFaÔ®±’7Ȭ2 ¢11j7€ îpøl“rúLRòœñÒ8ëÏ·Ò#H)…F4ùŽUù¿£Ï¼½}Í_ݼ¿i&}ƒÌŠ Ã £›ãñ˜Rúöí[ÿÙ?þøW¡ñP.k·Û—îñ~ÿ1ø±fBàa‡Ã_é$jµ yP—»£é+waµúŸÎËŽ$8-è+‚ #¦þ»«Kß–ZÍç™A†A4e'Æáð¹ÙóWÿ,§´ yÜàÝåÓ.¸û¶ø-eƒmAÇ­€‰ìííëi—ɧ] Oú^7€ƒ´×‚ #ŽÁÚæüîZÛ{,Ȭ2 ¢);1¶Û—ãq“¿Övd¸—EXÜá4zÏ} ¬Övû↷ÀÜdpEoÁ‘´As…蘃UМ%z&a#n%zæfôA†±$é{UYdDabDC|ZÐü$zæ ÍY¢`aZÐWÆ|úk¬açI™A†A4&F„1ħ½^ª^€eØ šŸ¤/@Yq8H#È0&¤çü¼ ³"È0ˆ&ÂĈ0†ø,ÂZU/@xD/@4¸q¢ &« [&}"°ÇŠˆ^€à¬‚¾"È0ng‘ó‚ÌŠ à š#ÂâÓ‚n‡ª &-èf‰^€êhA_dHßå™A†A4&F„1ħ]1Ñ P-èvˆ^€ÚiA_d‹œ#2+‚ ƒh"LŒcˆO\~Õ›¾•À!ŸÛíË…gôœ#€Ë;>Óß·ÿŒè…Zœ~’† ¬‚!'nJi»}éï÷݈^ˆ,¿m7›ãñ¸I)‰a¬‚Ž«ËÝÓô½P…Íæ˜z WY}ÅbÃèd–¾Á­mrR—#ÂâÓ‚Ž¢«}3-,¨Èáð™+à”Òñ¸ñþe`´·^•ÓÎó ȶۗãq“¿¤/7ŠÀA:K#§¯wo|+œœ\µÝ¾ü{ÿáýabDC|ZÐQäËœôht\Ò`mâpÆÃì1I|뙜Ü%È+aÆ_Ü^å/ÀªàÂ4ŸÖi<€u–qcó9ÈËaŒŠðŠD™ç†·þí½ôRJ‹ Cù[õLNîä‰0Œcˆ/n7Oó`ÍpV>¬œ8ÊPþ¬‡8¢¾X½´šÏA^Ã`T„W$Â(ÈÄ87 -èEué{{ùÛ¿-R„}Þ¸×h ú—BƒYµ{›Ïî3 Ð-èå-è…È]®Ò‚žEÎàÆÎ™A†A'Â+a dbÜ·Çoï3…J™A†A'Â+a dbœ†ô\š,‚˜Š4· 2+‚ ƒN„W$Â(ÈİtŠ`ÎÀKÁúçÎVÛ@ ð¼\’4¡ÃáópøÜlŽùAéá<Å*è…4PG˜›Í±û/AD˜Æ@@A&†UÐÅ(‚'‘kßÒ£˜ŒUÐË©½.;+¶Û—ãqSrœápa db؈£¤6Šàâ³"gpþÊ7`&‚â#È(ÈÄЂ.Ì%I“Øn_òWéJa€†Y]œ6+ËädT‰a#ŽºEèH›„er2*ÈÄЂ®^œR€çiAW¦` ›„er2*ÈÄp;Âuéëra€ÈÜŽ°5:ÒõÒ‚®Û’i³‚°LNF™ö‚nÙ †Ë€[àvèHTD7Å¥Jµ° ºYýôµL  « ×%ÂæYœct˦íH›„er2*ÈİÇÚéH”rG úpø\bD,HG`y‡Ãç¹HàÍæ(ƒÛódG:H3N™œŒ*>1‡ÏÍæ¸ÙGÿ×ñôÿ÷ï)¥ãq³Ý¾,0D–§# 0«œ¾ùññ˜’UÐd:Òe àãq³ä8XÞ½éâÍ8ÇädTÙ‰±Ý¾\NÒ_FŸÕ|^œÁ9}óu¤&ÑËà‘ÓÀã°ô]i€9l·/ç"Õ9`¾íHŸ.†·<`˜¿éÇpÎÚ.q{>Aüö^z„|b`Fä Þï?ò·ƒÜu†ày˜q¹îgð¿÷/Iú’UÐŒ >10—¼¿é÷Ÿ»Ï.!”àFJùç.ôù²ñË Ó?ã»Û½¦ô=ƒ]­D–7¢Š|U­ ˜Kúç}s z·¦º?¶3IDAT{ÍÏ<C˜JðN#Ëë¶Œ|kÌuùóc×å\4,‰)N š¾þ&Ì‘iAsÉ uÓ}Û¿b¸ÿ@_(.ï??ƒUÀÜj´Ë׿n8)ˆ)D šœÁù+ì9`0PÑ„ÍÝŽfJý[;ôHb€ÌôÄWmŽÇcJéÛ·oýgÿøã_…ÆCƒNO Kb`U‡¿ÒIÔª€™‚à”UÐÜêù…¦–L3« ©‘4Å ¢WA ´j´­¦˜Ñ‚¸àx–ä0·úóm– ÿgˆ]¹Äfšœ0+Ì­æ>À^C,†¹*oµØ¥TÃÞ ÐÀÄ¢ æ.ým÷ÇMÙÁÀ]œæV /4u†˜{E¾ñœRš‚h•æ&Ýi¶RçØœ!fT¾éMÿÛ‚ƒ»`®œf+xŒSsJèR)瀹OÓlεSsŸPw·v÷C ^˜ëú§Ùâ¤oÇÍ€ `n0wO)ˆŠ`Z£ ª €i–‚ˆLÓ81“f-Ä@(˜u¹± >>ëÎNŸx†f¥.Äß÷Ýì%îé3OÀ¬ÚhA¼ß§Ýî5ýHÜnç/é LÈV”ÒÉÞ–ûýG~ }™¨€á§~A¼ßä:8I_`Ftg‚3gÉðáð×Âã€à‡Ò#Ú2rø÷ß_~°*#ð·oß–¬ŠUÐP€€0ðä¤/,îÿ‹%m,ãQIEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/data.png0000666000000000000000000003050700000000000014754 0ustar00‰PNG  IHDRâ:Ê„Qá pHYsÄÄ•+ IDATxœíÝͱ»:˜&ðÇS=ëÿ]öŠ`¦jÖr3¸ÁÐ>,: 7•˜¬:yÑËÛx€ ñe ž_Õ©sŽ?0Ì‹>xuúçŸ^ ""¢Uü·µW€ˆˆèȈ‰ˆˆVô/k¯EÊjÜn ‘ÜÈà‹ Òk Sü'T†L gQ7Ü´-Ÿ…Ê28Oϸ®}ë97 £5´1°ïÍꉜa­…Ñ¿x\2$h–s€ ?‰„>+“Öç6u¬‡RA©b=öª·Œ>\ÞjÇ4}kÄ4‰5öýŸÁÃöð^àimðµñ²Ð·Ría ?¡¦7\ß1,ÿ÷†Ô ]Š…5)néˆ5Ëç6ßnatê\ÄíчeôõåÑÖ°FLXcH ca¯Ë­Å(jDã‚ø$B!»«/HIoÈ+ù2©jÀÖ¤øM ¬ÕøÕ²Ö20'™ÜšX^›JµŒ†¶K•F}=–ÛþÝ[ᘦïa ¦ñ¬A‡%”žÆÂš dOY¸óà+%óÈ›0¥„4¦Ýœi5Ò_we@H(¥ ŠÀfÒ+RÓlîÎk£ÚàÜlÆ«šNe’A<~¡‹È›oU­ÙÔê¿:¯Å ™àçò(j–¡fÁêâB&õ¦I!dIŠkj`µ†Q àÙ†ª¹ÞùŒwsä¿âüëâ?þï2¸B"¹_Â室Na`aŸÎ—v–wU®õÏÞ4*d‚•o[¹ýå{ÝrÎ×ùI¹OßÛ. ™¿·8“ŸÎz ‰$k¬SÏq„1Ç„5Ųªî”êb+TF<®) ”:Ãh“Y),Lú[«ñVŸX^& }MÓsn'-†MÓ4Ú»iù, „DþV³"es´µÏâqÏ×ߤ¸Þœ“JþáÐiÕL'/²¾NÅkò§%.=¤·÷‰(«®5ßæ±Zö æÝòâ"ôùòRœ8Ÿ°Ö· e‹P+×§ÍŸÿ â¿w¯B]ÞW/F@„‚ð€òžƒeÿðóÝloÒk­œóuvÇTëÔYGkþÞp»5s÷ÑÈíê>& Ò[êáb]Ó†µú[èr;…ÀY xo}=šÇá ³n'-‰˜Fª‚D@dY;‰‹ ”·‰»ˆ“©LÝï¸ß³w ɤE`)ƒÚ;ø:íð:…$+–]¾øH tÊuÈ’áÉ„T<Ïȯ;ŠÚé{ò&{7@ÕEË»|Ïÿÿ×Ð&“;îZ©I¯¸^ËŸ[Þ, RÖHy×Òù>wf¹X ïÌb_ÜqÏòš™}_@8ŠõËÊfmõX¹rÎ>tÕÖ¯ã˜xï#U¬kù™F5ö¾2*×õGA¼/´ªmÏ”t>sh™Ï¼´(bÇSÛ|×p}‰‹ d Œ-N˜ÜÏ)OxI9Ò·lbç–¯GÔ› ݤRE^´_ïžtËQ¾BB©Ñ¡§o-Šm(¶©,G!ò`d ¬ÛÜ=`»Z„€TI¼š—÷”5}¤·ââá=˜«ù¹Õ¾gá¬gñX³º?a»:‰÷EDÞd|K5Œø).Ò†5ëÊK¹®ÅzÝï¸ßðÔHÓ¼f´¹·“Å>b¥j>5H¯×ƳNßoP^ûÕÖÂêG­Vûp_ö>97åAÛØ¢¦(‹“ˆ1ùºI n–îõ^‡Æ…ÂY@ÀÖÏQ”V[0šÅÏÅF™‡AÙS.¤‚D k-žïííj’ê5¸¼G,3ä4ÊŸÁ—~löí’H2õî#¶ÆÂ ömy~Í®vÿð$Kî?škÄ4‚Ûwé7¤yº¬µcjÿ×¼k;MU;—ѱlnµæÝÿ&Þ5¼×¡8ƒ'½Â»IÜ©…XÛ-﫳ê¤ünUxjègþœ”²x¾Ú®AÍíSŒ)ïO….p„*šTë?ýž•÷S_Ø®²I7Ë$êÝ­bõ/Z]Ú}Œ.‚pÑb‘e¸—ìÚðXrÿÑìˆi¸w³tÕ?öþIÜ~­µ`âë†sÊû¾Þƒ˜Þ}†nͰ\FWŸón3d‹`ß­Z·÷@!¡Îùÿï1ïnÎßÖæ'Îâÿ÷@.nnŸå>ìQå=ýsÝAåÅÒû"Äê÷à!kÒ¢;” d  ÛÕÉY/<9IÒ‘œ¤¯ŒÞ­⌋’гÁåͽ´(6MÓ`ïfi7€”äy³jótÕ\®Íä}]×Ô&Å­Ñ .“ú€!%„¶áõ›DB)£mmòÞÝ'X™dP·t™ÀÃ÷åö)VMöªλ\óõq/>Ä9_ «o¸j•}r_éÐòö}n8Z~»‡Pø)ß$”ÔÈ?º^VŸ·lŒ;Žú§ „¶úv…vŸ{wÃ÷x¿ÐÓÕóîÚð,ïß›k=óvÒ¢X#¦ªféêö—S ìmžvj¬]M­2A–¨zP*ñ¤ t‚¯ý¦Éûýªå ™ SC 󕵜êájÛŸú­&îzW5_çB¥QVÕ`›âuÃ7Ëo`yô¹å ±ÆÀ&™ä#|k&ƒú\sõ*.<WzBªÚ6 .#™Ôޝú=ÐU³ò åͺ´¤§A$ qr&Ë|Äq~KMq«P­€2˜ÕH  x’$::b¢eæ.Ÿa£d‰ˆº±iš¨Cž¢²9"uÆfS":<Öˆ‰ˆˆVý¨é?þ¬½ Dô±€P ë9¢ø±išˆVvj?Ò~ˆh·V ÄΈT":(·¶ËèKÇ´R f&"7WÁ¸^f³ôv?4Õ ØB߸L™>ˆvÂ`óÿ_¯^¯Sà5´ å¾qŒ§Za°–€Ê¦>ÛNÃßÿݹ”û·›u­ˆh§ðzÇÛü„~:½œÇh[x4·ÍŽšf %"ŠIY+f‹£¦‰h¡¦Ì¼6Lq`þ<6[#&¢½Ëƒq½ š'r:b"ZÑë]«bŸðÖøZ,š³Ü[ϸ§Š>Å%3kÅ«¨åØb`Þ‚2°†~»¯„?Ã>b""rø‚n3¯<½À ü9b"ZA~Ÿpu¿p]YK¦¥…j¾ôM ÄCñ¬@4“*DY£Ê2mÍéTýÐ÷0Ñ‚ªšV=‘m÷Ñ÷1Ñêòš1«]ëó÷ç-þˆÌÚò碹}©™òr•Ì[¼„'¢Ý«‚p½Ë >BÚñNŸáíKCñž ¢„š¦Ûóºw}]û‚ûi>ÑÔˆ‰hÜÚVõ('yØ#޼Š˜ˆöb-*Ó÷‘Û„Í`<kÑf„Oþìˆ\Óð¾`wžb€óÃ@LqãH‘+~¼œ¿i›Bµ_ã> ÄD´ 7£V·ökšЖñy¸cbD+jfÔrïSu¿žUÍ·Êe쟻¸þC[ÁSí8Ç ÄD´ßmK}µÛª™³ðÃí‹dMyº.˜8`« GMÁ›æˆ¾ªžÁ)ÿÛ_»êê‹ä÷s=ù>¨Ÿ"¹?ú0õ¶4^h-¨;x6ç(nâuñ½˜ÿh¤hñl).çúæò ŸÐ>óÍJO«È{¸ÍÎÍäÜ?±¨ÙJÑçX).?¹Lkæsc Þ†¡û´ëuÍ@Ìýú%USs(µ%P>×7|`Þ±1OÁ:ÑDcÒ[v½ˆs/kL!÷%öàkâíKDDðYàdCÔ0 ÄSñ[ËœxH,oZ™sG…0õz±-ŒhvyÚ˼o±}ÂæuïZúûv›û¦5ÍÍŽÞåûˆ‰heõÄþQÓ´wpœ;ஹún5ó|'Öˆ¿ƒ—îDMŸ±‡µ–TÝ×}:•¹Âg{¿«üàíÊî[÷ÝW…‹Ø­ µ_ÚUÜeßáÏ5í+h_*ÒöÅ•?uÜããã5MsÔÑF½œŠI9*º~Ïð¸ýxäÓòñ1M໥¬9{/¤¦ˆ¦˜ˆˆÖÖ ÆcfÔêZÞ±ûˆˆ‰ˆh„ö@«Ï³¢}ÌãÇ@LëâH¢HÍUku›¶y:`1êíD> (D[QPzR~ýˆ‰( n³g•»xè™ý¸É"–pÄZ윎ˆÙJ9_Nã×€š±{;͘àMÓk ÕŽˆi?ؾuX¡ùŠÃ|AÁxe9ºeÉ ·µb¿Ýób!p¶Æ"Ü쌪.ÙaLD³qSX›ŸÚû®}žã7¢Hë÷ƒçR¾)êBi¿éHçŸ}É{û’Az}àRŒ vo_*CöÁðéI³/ùþûþ®Ç€aËþÖkcP–Ý”ý Ÿ}©k¿2û›¼'ùN±ÞÓ#ÖÿÎÿ¯¼<‡]hv¦úsGô½C¼¾üå„Ë~ûe±iMšÉü÷ 3GŠø¾ˆëÜ©áÌWŒw¨~Õm3@;@Õ7ñú…«º•)¬÷·oʬeaÅ…I;è3 ~ÔR?)—MœUs´{¼ø§Q¬&…(ß·¿ý6•@nÆ´jÿTûbMÑM‹Õˆ¿%ÚñØ!kÄþ÷¬Q#ÞÛ¾Xм×RÍfeÍpeUµß±‡ÒÑ|÷º7Ô%Мå¶n¼ZïÝ æšþ&TÝ?îãÍiœîM[ÖnÝØokq Ø$KÔ)¸@ý$½ß÷>äû§kT{Ùl]]dís_2—X»!Ú‰WàoßýÆ´¼jà\Õ?\ݸWû·|f­‰š)/¿’y‹5Oš§/«úëšý‰îëi]Õ¾i¨«÷ã k¹ÿÃýô=Öw3Xiê­>[Õ7`ªï}¡ß}Ÿ5ä³çÜ{Ù_3Zêö¥¾Ïç`­~ßÛWÍAZ¾îÍ`¼ïàMxÍ8üFE`ø÷”cì¶£:½6›¦ÛÕ“´ìqSóò¸ü{ÏGÑÁðëƒãì$Ö"¢ÃãµöR|µß}7;Á1È©pÖá%}d¬Ç„\Dh§T|½NüJ­ÂMkI ıâÙã3l‹<6Òv#oí¤»µõ!"¢Õ#ïkÅD£ñ8>ݽr§ÆO|8X ` •ˆ(J}™ÕâM ^$Å%í”;RwètzÙ»mñÜc¤¸ìKe8åù¾÷ M»8&¥bsù@œ5ù-¤¸³OûÖ£ïuô¶"©d÷«TO»xœ‹>ÛØW•öúøÒe¶Ÿ‹ûˆcÔDh¸/6¬ï¶ßIÜ—ˆ‚h ÄDcl­š@³Êgâþ[|û0š>b"¢ù53m5žåu׆U­±gKc Þ 6…TfÚrOäüÅ¥ÝÏ#6M¹˜Fô ºš/óýÏà {hµ`˜Ž…–:•;&ëÈÏö´Y Ä1ŠýòhCü_§WôÍ6M­ˆ86¼<§Hm«//t_ð©˜&‘¶¯ìBˆ7Çt‰˜ˆªê®~êA˜C ¶j_sKGÓGÌ\Ó;5$Ud¬†n;#W4¥Ì›g{î·e…G¼çµcŸß*æšžú|ßû¾•kºk9@'óPþç¡ïû$×tù0î=c×{h>ê!ë³±\ou^û˜ígˆ­í/_ðöcÍßq`ÓôÖmíÛ@tXqÜÇíß+7xw ¶6ÿ:M‘jSüODD´œªæÛº@Š'±Õ7\oOXèÛ Úâ–š%רm#hö¸M;Æ]µ´|0]UãuGL—ÿÇÛZÄÆXyÁÙ @*d‰‚0DŠÙ´KD±2ȺÍÎîßÕoÿõìöoo â'¬•P‰ÄSkXò¢ ¤ÀyÑÕ;Ö„âÀ ºCqwwý>Õæw5îšØ>„ï ¯‚ö¶›©·/!„NSäÕ_‰‹´0©†jÉ5$"ZMÞZ5íæ¡fþ®¡:¾)›ïÛîhê@X@JkòÁYB^ ñÄÃX)!]EŒµë¸qÿmL~Ò®ï–ò¶·y”–jjö5YÇ¡ç>b k„(ÿ„ØVî½xè=¸kÝGÜ÷Y}M¢cî©ÝŠOï#.ÿ–»xècÍçÆÞ'Ãþ›(–M«ßýª€;h(†í™j;û˭ź-¡äõZoÿ}àëëɬUáæßDDûåaZ[½·=+¼¯bi`êÄÖ@ë,D>pËR®7™â²YãÙÎ%ätî‘û¶M”׺ºR)Æs’߇zÿnwcThßm÷â*ˆMŠ«sÏð4…V2µ|0ÞDàÕØàʳ \Uë¢mDóÓWŒë§»ma ã>b­ „Je $@B©jmÈšøØ>Xª|³\šËæEÐÊNÅ,>¾Äͤ´œfóô°÷œNî MÛÕ}±’µ~a¡¤µx.³n4‡ú ‘<Éåµ®z¾b8mÿ„¾CÎ_Õ…S,-=÷kà’?b­ýMa„:Æ}ÄkŒ@Ž)HN-Öºi“úòó˜]ŸÛJá{¼|îU»1"†wáÛ—¬Æí¦ÍÐ2ÉÈ%Vm˜¯Ý¾ä>>eJÃ)·/ùn«rû’ûž¾[ƒæšžqÎ@¼õÛ—ÆÜ¾Ö|nJ9îôbeÛ›Õ}Ë‹›Ô#¦;?ßöÕsî~ê ÆëêÞûˆ6xX !.Rnî¦Î@üiЉ=O½÷uèçÆˆÇlÛ\xŽû“#¶íÍê‘[Õ²†ß²ïÖÚ6»Ñ¶½¿|ü¸ù\ýõ@½ÿy î ÄÛÇ@<2‡Ssö}îP ÄŸ¯_¤¶¿Y¡šÑ˜@Ü<¡Ç·¿¿šÆÔz»÷õÒ}Äé5 ̲$‘ÜË‘Ô9·FÉäþaS÷)üÔ«ãy÷¹ÐëÊǧ,gè{ZŸx.¤ùž1Û5d†~îPC>{È{ÝÏSÖC>ohY ùܾýñIyD¦~RßâÞ­5Ÿº7 ¯s’?޲Üã+ãà|ÄÂù©ÿô# Òô •ÝqÏži(àõ üþ`“Î…Ÿ¼7°c¼?wÆr˜dÎÏÿ`sì‡)Ë85~}?Ô~‡Þ¼áö”cmã³'×tƒ8› äô`ü´°çKQ±g‹Ç­šv3¥eS™i+?ØÝ«÷wùgÇóÁç†þóy¡×õ<×» ¡×ŒXŸ!ŸÓ¹^C>gÎýÐøüAÛÙW.c^;eú–5åsç<¦?yï°eø¿¯ñ(ƒë©µêͪÿëµfßk·«½±ñ퇾ç–Ýè×ëÕÑG|Ó­ÄÖZ²¼µø«†¦´|½:jåŸÞ«öÖ’üËè¼òo¼7øy#>¿¹ŒÅ¶¡g­õXùóßÿOX1ïíݧlØeŒZ/î‡Ù—ßHÜú\ÅùcáVŠæßÛß`-Ÿ|§µç”·ëlp¸Fl­'•¥€L>¨uO  ûçO8æÀü˜+ ÷µ=ï}7™vùäó‡F?¾m»®OÞ;q¯æ?lëùüˆã±õ^ß2Vس|§âUÏÜôB}Û›A ž ¼/Í2¯_(m¡ !ÜG|¿ç…ÀÙj« ``ìŸÍ!Ñ>ðß¿kW@#ßüí*k*Ïk}~ æ2jíUÎÀmRë1p¡õp·êçYFkY¶¡·lK¾‹1ûÁ]Æ÷~a?,² qÖ†fÐÍ•A¶ž4¢^ŽíiûhÕq¶õ,ëÜG<ãíKþüÕxdŽZÑV–1Á,çº!M¸—1i[f,õ¶aŽý0ç¾\­µÀ÷ù=vÊ·¡ ¸@¹Mí¯?Wlb]ïJý‹ÓÌ–¶¥±ˆýýÂmg¨ìÃæém6¡Çåú>¶ ÷y÷=sæß e0øä3¦&°ð•0|N]DZÉBšÏu•Ù”í¦ÔOÚ/g4{5Üõ½›·(Öõ®kî;ÿãÀ–š¦½ýÂMuè.gGmX~Š©ižz¶ÄפÔÎkßoŠË1i Y#/›5âukÄ´2_óf¨ÏÀm¾Fã=‹¬ì¬b]o?7Ò¶›«×ÞÖq÷Óömá¨"ÚzÀ­jÀ剽y‚?9_½x¿ƒû;…´/¶¤3[kðltÛ‡…HÔfúˆ‰ˆ–׬ŸPöå ÿ£Qvt Á@lÒ+Roh‰ä{ëCcm¡ƒã¨†´>pÿì€[n>Þ÷?ƒñV|ÞXèoÞžC0³ÖÃBJÀ@Jœ<ŸëÔ†›)/‡fÞŠGÕv;êvÓ ºŽ5Ûý øšCGÓ´„J ½âqIŠ{} Ò›UâóI˜F:DàbÉ`ÄÚQ/^Ƨ»¶ì ºó¶v¦Aâ-œ¬»îß]û>â)e=f§öÑw­ÛVn\¤/hgØz?ÙîŽm}‡ò5›÷—û±=HÏ?‹Ó ëUKqyM‘×{„”PJB¶¢ò¶DˆCÛÏùßS)ç žw @쎚b9M4çíM¡åÇ·®1­?ÍÈwr/Oúô}yùŸjÅýª=Þ Æõ¯êw¾·±€T©°µÒQçš>BMqŽm<ñdDDßP¿Ø©jÂõsVõxõ¾%NßÁQÓ±Øü¨éR×=Ë[5ݧk]Ç>Ö5š¸¯,¦ŽÆîZÖ\£¦‡¼‡v­Úå¡QºõçÖ¶ÏC´,__íÇ›MÑC* ã .kšf³¿£y87¸~ó=±9ò1Aíü;°Šf_±û\xÀV{P× ù¼Ó¯Ú몟ñûŽø›xÂ=–½_@Ð B'j·¶vêxmÇ|-·/-&ö¶0a,4¨ybÜ¥éú/pü½RcöÃøý˜'Àm;BS3Ñhnóf׉›5ãù½?þ–Šj?…÷秸øñ§b¯‰íA³ü¼içšã›Ïñð_CÕ5÷ «ÕVûl|+ñÄ~!0ÇÅLìe@D;PŒå»¯¸^3n^1MëJØ_1k¸DöÇÁÍÎUí«ú}Éí{‘ûì/EÉ7ˆ«|œ¶¤™æ²J—éË!ÞÅ@LD´UúE6ìÅ£ž¿º|´ºï¸/Gˆ£Nqyt±d #"ÂØñ¢'Ô'/þ—ýÕN+9ô„ßwé9&ÅåÔ4˜]¯‰!x ½|»M¾t¡[Nqé–C û7ô+¾…1a jfn„? fy«Sñ®ZJÓÔˆ£¶æŒÓß6f½ùí&ÉWËâwèûª Ú˜öª½vÌ鎘¶œ¢W„•¡KsRíIDATÿÝwLûo0þ¾þ gͺ•/ W;Guï#&"ú*߉؟©©ÿš“™¶¾k|†³¼æì&q_[þߘȇµpšEÕGX%‰¨jX¡>ÍþFZÇðS€€Ëé”kšˆhç˜òryӮÇՀ›ˆ‰æÂÙTãïW¬ 5yVµeRK OþðÍAr ÄDD_Ñ>©¿^í=¡&̲ »>è‡i0¿Ïmb^¦Ì9jš¨ilÍ–ýÉä«a…GC×'Èç‡Wó=á{\iË–+kÄ´Mlæ¥Ýps·k·Uuç(®ûU­94:—bM˜).#ÇÀJ‡ªa•Y™Ú¯÷ׂC·A±f3¦¸ºSSv=ï~ÞÐŒcÓ&î©ÉsìöL)³O>oÊ{›ÇÈòRDê³õ4S'ÖÜùñÞN=ßÐwzS†lšÞ*~ˆv®]537ƒp{ÀVñlí_6QÇŽ˜ˆhqU?ož¼¨Öuû…ûîMeÓôéc &"ZQhRyƒk¾{Í`-"¢=ªOÑh›MØî{)V ÄDDåô >GqbÓ4-‡g¢Â·X5›¸é›æS;ؤ¸¦ “;é{ÉÅKH$÷ž—­oho;G8Ñh¾`n¢ößoì{-ï-^œ©fÄiú„ÊîPиÝR˜Vµ°O•ePbÞOß &¿ :ˆP°ì¢Õý«Õ4‹í Î4˜±˜·iÚZ<…„„„OXÛ|±gaÚ#¶ŒÐBºƒðËó-­ ß½æ­?-ìù‚<Æ ˆ³Åã @4^#žÐ×+R îžöëfJË&oŠK6Ñaœ\npfSõwô^o¦/ ïƒåGMË÷³…€Õ7¤F¶ú’™Kš¢Å‹AZXYá¡·”<¨¶S’¾<—ÂDâÚ +™à®ÄÓÂBB}Áâìyc„KOk‘·gÑ8¯V ÌkÁßÑW®ãËý£@,“;îÇÎVÃX¼/¸5 ˤ¸>.µæè3;Œ)d­îV-hcÊ`[Í/RÍÐäËÎeMK<ÿÐì³/yo_2H¯\ŠÔnMZ¨ Ùçk³/M™Ý6kÒ'Ëp—3fVŸ£‹ÆÌd4÷ìKCq?Ñ"ºšB}µa÷µãkh<¬»ôÍ‚ÕUÞþç›Ѥ)Ì¿0ñŽ1Á=y‡ú$Û‡a=oõèOäaÝaÈt”¾×„ôB™µ,¬¸l3iÑ'x¶¢¯šÚÏûr¦W¤yùZ!šûÉIëäy¾ñî¥jÄß²zxìkX#ç“òbÒ.ô×Àæ>üùÕâ³V'} "ŠƒæZæ+tNú@D´iþ¦Ð2yÅ5b"¢Íkcá=‰&7S^¾3oéw%"ŠÏq{ÿ`­?Æ„*-9Xkèç]æÞq°QPß)eêW€_e±xß8bù- ":b""¢1Ó¶±e€ˆvŽ˜ˆ(RþY—(6ÑŒšîTÔ"":„ü|WͺpTu¼X#&"ŠÒËùš…‰b°1O_b,ëID5u"Ú*ÖˆiŸx#$N»Vœ7[ŸZÓ¶0Eª=ñ«ö5"›®·Œ˜ˆhw|Í× Æ[Mq0×4Ñ¡„jx« ÌTüqØG®é©æÊ5=æóøøŽfÙ²¬é°êµáúWaØ@/~}–Ŧi""¢1í û‚cM1 Uãz3Û›·ˆ˜ˆh—ò ëïïmÖ˜ ×Ä@LDt(¾[ÌÖµ&ö÷áÐA"Ú Ü-b &""Z1ÑqæØí8v f³ó>1E$šÁZLqIDô)÷ãvJLZDZS\¬=í…»¹O‰jü`›9üzú®c7M<Úˆèª)im ÄDD„¼‰š#¸ÖÀ@LûPÎ÷FD”ýÄÌS½b"¢ª®]›ƒµ^Nÿ1-˜ˆè ò€ë¬Åšñ’ˆ‰ˆ#ïöÕxÙ³³bÚžMˆòÚo5Zšß•­ˆ&¡Q/ÞŠFäåo‚.ƒqû¹P“5}1ѡ幞ðãÅëÚEˆ™â’ˆè[^ï^àå1Å%ÑîUMÍõô•õÇê¶&äåp°Ñ!”#¦«ÿó[´6b"¢]sGK—ÿs0Ö–0íV;kðö0íÒðZ/û„×Å@LDt ´ÛÅ@LD´KÌž‹±AzMaÖ["¢óãªÉš³‡nÃJ˜A˜ˆhn*KŽ–Þ¢±…¾=p¹'Ë8ѽÀÓÛµBŠK•% ¯j¦´lbŠK"¢y±©z›Í5Í@KDDGðõ@lÒ+Ò²3X&¸'l&""*}=ËäŽû·?„ˆˆ&85î/®FSÓrx1Ñ!¹9¨Ëv¯Ó NxZÄÓéÅñÂX#&"¢Â ¯kÅKc &":0í·LþAK` &""”Á—}ÆËc &":œPmVŒ—°Ù„DDôMÍ ËZk‰zÔôßÿ={®#/ó[Ëe™ßZn,ËüÖr¼Ìo-7–e~k¹±,sèrÙ4MDD´"b""¢1­ˆ}ÄTÃ2Ët~,Óù±L¿ƒ}ÄDDDÇ@LDD´"b""¢EÝGLDD;Öˆ‰ˆˆVÄ@LDD´"b""¢1­(Î@lR\¯W\¯W¤f핉•…¾]ßåxu ’åû1«o¸i[=À2ÌêÓ™±Lçf^SÔŠ,T–žÇ# Äiú„Êî¸g Ï´±ñ4ˆÕ¿Ðç÷û÷{õL‹ƒ‚åû1«ñëa–étVã×HdF–éjß™T7Y¦¤×Æ ­PYz3íD|MÓDDD;Â@LDD´"b""¢ýËÚ+@´'¾Apo2Á=9CßnÐV"ifãùÞZ!½¦@4ƒoì 2Êq,G¢ï` &š‘Lî¸x(dYu,°|Î@«5 ÔÎî RBh ­-$“¨PÄØ4M´¨<_ò}±Zœ…1¶Èk»È.§Ø&÷žX¢±FL´¨F³«Õ¸Ý4¬TP0ÐÆ‰tšßø™dU³²5пºÈÈ/¤ÂOâÖºÝ+’È2¿­…N‹Ï„L• î[®ÕHu±Nž÷j]-W(¨Uÿbv!¡ÎOgÝm*Ê¡øÜzå=´ÎE¶"c`¬bò ŠkÄD[`lž™+S°0©T–ל……q§Q»¥ÐH²;îY‚³©‚XK‘NO¹ ­ÎšLòì_Ö8Sàu.× ½i˜s‚ì~G–HX“‰6Š÷šóû½é­15œ}VÛ £ë˶Bå˾X< ¯sžò2O8Ûž Z1ÑÈK15šÈkƒBBIà\¯éš òþÑr*5¥DUóm°E„:7ª‹FߠŲ{1€«o¹Åóò’ç(2y§ò|¿W)ç½ù¬^ÎJ½›Ç‹tÖâÙØ&Ry›Ñ[ëŒêãÉùú(blš&ŠHX­¾áªÏ=ûtE(iRkaÒ[Þ\ü“@ö,×vT9CÁ~¨¾÷‡Ö™ã³h/ˆ‰"’×m=çò(yÓ³µFkhc µºô-7¾kžÖbʈ°þ÷Ö9Ž{±ˆz±iš(&ò‰|¤pÞm¡oW\¯þØB³éÖê®× òæcQ¾¦o¹Åóï~]“âZL÷ø~¯ÖïYe´6ŠæíÛ”/[C×úˆëŒÏkãD[À1QT$’,Aú›"½mÈ"Ì[?< ˜"` õe¡oWh#£• z–+‘d éo>‡uþtR{¯Öéíš?'’L ¼E+_öíVÌ-¤¨ú¼Ãë\^`pÞ\Šg_"ÚµPb‘=Øó¶Ñ‘°išhפÕå]yÂZg´5Q¤ˆ‰vN( ƒG(v¬Ì£è7f¦¸±išˆˆhE¬­ˆ˜ˆˆhE ÄDDD+b &:Û1AmW‘@åz½¾'¼ ý` ¦8Y[qbu‚ˆÊÏi,ܤW\§´9akÛoU&ªO–¿d>úþµ ƒ4}óXß‘œy1µ7 įbÚ¼ûýŽ{¦ðL¿T[ò©kÁN?Å´{WÅLÉ'jÛ.aÊ)çZþ޼ÿưÏrÆ*Ú%¦¸¤} YÜ~5¬T€¾s倀Ê2(a¡5¬EžJQeøÁ¯çu­…ã"ó í•0Zã,žeШÕp$’{i5n7 u/SD¤×.™€þ~~€ß_@ž5t±™Óû5kL}'!p._m5n¿ÀO¦ |ËùÉÿ4é·Úç¶ËfÚ¤yÿ•jï+·¥˜«@z½âãÿàÿ­·Ÿè+ˆi?„ÀÙ>ð U†»*7)®Ål=êGÁ” à]ÓY)œ¯F è§Â~ PNjNîÈd>AÁ-5¸' J^ñ0€,çû•$°xÏ2h5¬ºãž”Ÿ­a¥€v–WÖNæ#TýÁÚzÕ–ãý\å)›…uÿ¡\ u¿çßjÜ~5d–çì¾¹Ûlÿà?ÖÜO4;bZÝŸ¿þê|þ¿þùgüB[µ O*Ä¡¯ƒÄE¦Ho2¹C”§ckñ ?åDõRBè<㓼H¤Å™Ü<žPJ¢6• PPeÌ8M¥åun_9q°¯ÆÕµßç~௿þt>ÿÏ?ÿ5~¡{ß­í°xÂäµ^gL1M;À@L«›h}¬ÅSœ­Æíf ³;2p­dèë R)cqiœ;Þ¥5 €ÇSæM¦}ï{ZØ!§Þ2øM¨­öÐåÌ`R õ9Òþ󉩟fÅÁZ´E£*NdB¾ç˜Ïs[r'@èz]“PÈîé‹ÀQöZc`‹ùuó žx¤<‡NL /¶š°—PÈ mÎG.¸{ ­²‡åN°FL´1¦v?m½†¶Ærh–;Å1ÑŠ8X‹ˆˆhEÿNë/G f}IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/errorbar.png0000666000000000000000000003060400000000000015657 0ustar00‰PNG  IHDRn–Áú pHYsÄÄ•+ IDATxœíÝK²¢N®ýÇ/Þþ2‡Ýeð»§ ecÂÒqŽc1@ÍÀ¯¡(" $§¼“ëaËò€Ü>frXýû÷ïfðÞÿ7÷   7ÿ›{ô‘Úqs´´ñ1±.‹'š£—׼Ň‹&™†åEÇ[Ûnc‹¦˜•¹d™¥É_ûý9u[æåçe‰í÷‰e³­?ªÐã`²ÌÒäø(FB•YòwoÇ´ë't}€©Ñãbº^- åå‘¥Gû{L-Ëû›ÄvÚÝïÖ_´µÓe;÷\(¡p#FŒl»][š¤÷a°Óýî«î?X™Y–ØñobÏΘ(¶ívkÛ8úúºOYjÇäøxÈ¢íÖþ¼ Yf–ÿ¾õøDñÖþ¶ÇÔ½Çc[ˆâƒýÙîmŸd–%‰¥Û×ð_–ío’>zâ"‹·ìvÏ!Ãȶ‡øþÜì¾[aùDy*¾qëågNýþµäñà÷eðXŽK³ç‹Y|øc‡{P–ì÷–<þ+=nlóælZ¾5Ï;E–T •ùytÆP)°8™%y‘E¶ŽîO¶Ù¾¤Í̲ԒcÕ°ZÝ뚥Ϣíþ¸,9ÚþøÚ-­x½,MÞóí=Úˆâ¼X¼ZV(TöÏ¢íþir/ð>ÞûXXYjÇ¿{ÛïK÷ç¹Óò»/‡¤pÿû2Hí¸?Š¶Ç¼÷ö±˜*^·ÝòýbÐÏÀ…ˆô¸±ÍæóöY€˜Y|°Óåb§?¥Þ·û EÈãþËåôì‰JÉçAu¯mípz¾¥É£—'µßÔÌ,~<æb§í£'ýmÿmD‘­‹g‰%¥÷¾œî¯›% Ÿ/ƒÍ²×}ÏϕϳÃò+.§¼‹+½,³ëýA¶}.§Çk%ÁÓÉòÙˆ»\]¾uÏ+øópÂP)°@ñÏ£ç)j¸ÿY(Äv8ä=U‘ÅÛ­ÅÉÑÒGAÇ-^w»} iŸŸYvµûðâåbf™¥ibÇ$µ´a'ùº÷prÍ=m©÷›Ò>>ß³Ò‹^G¤®#‹,µÌ"‹óû¢µYñ°—åW\N?±YZ(qEgöÚLãØâŸ?vºD_E·å[kèÏÀ …ˆö'D÷ãÛýÏ¢¦lmQd–ff×,³W×LË×-<ÿîsÿ«îóÞÒ³øÈÿ¼Ö>´·ÎËï›Ø§ís·,Í,KKÌ,Úž¶è²| þy¸ pPíÙ«TöÚ?lEfö­øÉ{Ö>Ÿoffiò(*î½7ÛxmÑ5±Í1ýÚìëY|Ü‹ç˜]´µÓ©fèµ±Þy¼Nå µü ¢­NÛû©M®©ýþÞ{ϲä¯%ñk¸óÍPËwŒÏ 3öqPíù¥~ß·éþÝœYúÜ÷+¶Ÿ–½+éñupBVzþ³×+ZÛÏ6¶(2K~‡R+îm·[á`…,yîDŸ¥ÇÇþßNlüÅ€Ëïþ2¯ùJì~2áCÃÉ„¯jªëò½f5•êП€zÜ€@ÜOãPå}çóöîû2mŽ©Yz´ò.`ñ¡ËÙô+ö!‹îÏÏ÷ ËR;nJy mºìÎV»<¢­ýÉF´µmœØý#îߟwî†\~fom¥–d©%û%Åÿ‹âç¾dÏÅ™ìm“D¶ý¿m–oÅóþ_yîþ<œÐã ^|°Óaû~®´(¶í¡Ûå”âmñ|k‘EÛƒ]òˆv*ö½ ­4¬ÚGY¼=| ‰Æ‡û‘‘¯û"‹÷ë` å—Ï×öt*œ/-¹÷aÞ×ffk‹þO»åûñ¼Ñ?«ÿþÝæž |G€ 7n"f=ªô|>Ûn·³ÿþû¯õsV«•Ýnì–çbµêöø±3ê#C}d¨Å—öÃrÙåNBCã®jÑåÁ”‹• õ‘¡>2æç²Ên,/?¼1?¹}ÜV]û‹á2ÔG†úȘŸËv(W¸Ñ½¯ õ‘¡>2æç²ÊnK%W¸Ñ½¯ õ‘¡>2æÇP)$¡>2ÔG†Àü*˜\áF÷¾>2ÔG†úȘŸËv(w7º÷õ‘¡>2ÔG†î¸Š†ÂP)@Àä 7º÷õ‘¡>2ÔG†în·Ï[›ÿÊ8ªÈPê#C`~Þ_«ô|>OùvA™´pÛívo»r«ÕŠ_Š"Ø7\l‡úȘŸËvÈP)€ÎØõ‘!0?ï‡J±,UëcÞ ÇwÝÉõ¸q$0?¶C}dÌ£JL‚íPó㼓+ÜèÞæÇv¨ ù1T `l‡úȘC¥“+ÜèÞæÇv¨ ù1T 3»Ÿ+­Íºp_aî·6+OÛ×EøØõ‘!0?NÀ‹Öª µü>t˜^—”¿·áߟÀÉÏÃÑ£Ç-µãæhépóÒ Ýûý= ´Ò h‹íPjZ­>GHªîƒ† ‡Jç)ÚÌÂê ʇÛÞ†yÏWÑVv+=¨Òv¸Td¨§Ü6—tÓvë™è¨ÒÌ’ý¯ý\w2DЀŸÊÅÛ²8ìãÙöt0³Ô~¿<ò|>·zÅÕjõ¬:¿M—÷Ãêò\ߦo·Ïû ý^ίÿZ®­ÿ››ÝWhz~ŸÏ>Ôë0Í4Óý¦CjK}™.ry¼ýoÌëãìy¹É¦í oÚläƒv»]ãÿç…]q†¾M—WÂ.ÏU˜^­ÜŸ;„6µÞPóæË2gšé%N‡Þ–Î1]Ô§ý7«›nçÛs}XVL»M›qTiЪړn À{•ßµñ Æ/rçq[Q= ¢j)VÞ·âh%|bÐG†þºÿ^^n/íFE>oð“Ëv(×ãV×-ïÊ+HÝê’/ãâã_Ó,°†€ ¿{íºÒêÑÏç´Y¶å×~oo?J­ÿ’_.yõ(Üb;\8®TEqƒ¯*ÌŠ÷7?nÕºa€ÐUSå?ž]» JÕsóâ­©¦î€„C®Ç•²»ª¢-Ÿn󋲩Ž,–‰íPö÷Ö¶ï/üÿû~Âõ%W—ö¸êuŠ÷‘m×¢çMߤ=nçó¹÷kð‹áÎÇ¢­ïEíû>Óa;ÔG†ý”Û`ßO•Á9Þüäý xw»ÝÛß.…+›ŸE[âPBÝÁ ùã ƒ¼ô‘áwm‘ërœcñS¼ù‡¡ÒP*ÚÊò³¸•§Õ>€eS¾bLÛKpÁ_r…›âŠ6Ä ‹GŽæGlNq"Ç!”7YÆŠÛ!Þ‘¡›–Å›?8¯¸ò•Þï¿Sýüå«,ÐphS]ñB†ý¨/?Ú`?p^Qm¯*àkCÑ}¶^ÅÛ·ÃÓ `”‡H«°Ï›&¹·Ð~”¯,P¼…ºAqrHMä¥ » uyÑó6/†J…U}ª0?i= ¡n‡KB†nB\noóa¨ÔsŸÛCû $äm©Í)Ì%´!Ò* ›êëq ñ žÍã%Ä|CDNúȰ%-'zÞ¦ÇP©çn·÷[®Mlåç /†Jʹ.yé#ÃnB]^åÓJ U¼©œ®jnœ€WL¨ +Tà“% ‘V)o¯óˆ¾NWE;=¹Â-Ô•¥êS-ùÊ¡æ òÑG†Í–¾|Ú|ï,} ¡RAo¿lJ·òÿ/ÁÒ>¯*rÒG†í°œ>OUU\"oý0T˜¥74æ@Ûóݲ¿æ5éé@Îçsï×PzÝüBúBʰ©Ç§ëÇTZ.cÏës—•ç!tU*„Þ¶vX>ÆFïc½¦6˜öyr…ØòpEÿ…>2ü¤VˆL•áív{,›÷³¸±õÇP©zÛ ŽuWÞ¹´Ç¾á9D†./Ñæ”M¬^í0TŠ`Ñë`h´'ý± §'×㦾“:½mý©¯! }døÒu9ø²ØæÌ¥Ã%C¹7šå"{…¾¥gÂh_æÎ'àõ\ EcìÂôE¡1 zÝæ!W¸ñ…&CAÍØõ‘¡þh2ÔçýµJ‡ º’.­·ÍlÜ#©èu›Ë]ßR3 ©-öá3Ð÷ÃP)§ÜX yuaaX!;8Aqà éÞ†Èe9/Åíï–œa(í‡/rº&wÞŸ€÷|>÷~ µ ŽùÓÐÒE?=–·¾¥eâè>ËRy?TºÛíÞþ¢SÁ6<Žh–¥ínÅv¡MÁîý±¯Ût*‘Ò¼NiÈåBý×7cf¸Ôƒç¦æ’¡\›JC£2ŸssٰܧÁrÖZ†Ï^žŠÿ­Ë¾RÈÎŒfÞŸ€7t¬ Óp9 çヽ6ÕµÄ …Ž/ú.*ö;\›ÂŠ@ãÐlì ëÏ›·’X°õ…˜aóQüáµË*ªÌç\–\áæëÆÇŠÙÞû·=ß«p«ú¸ñu;D{ágxßòo·[°ŸÕ÷Ïåûüù€£J=ÀŠêº“pšQ¼оÓÒõBò¡+ÓG´¹Ã‘+Ü| ßÇyòÙ'à­kƒi›‡Á:¯ õ)dHgF3ïOÀ{>Ÿ{¿†Ï+Ïóæ“¡–Sß6K Íó뺾Ð2tímS¦öY•OA3ï*ÝívoQÈÍMásáÓa1T:~E´7T†Õ×t­?—S›ç£_·C´R†!}–.?·â<Éû¡Ò!ŒY u_~¬€.¦*r«®H˜'F¡ÝËO_ˆ†ø™š(}^zݪqTéL”6ž%(æ±*ÝÊÿ€¹ÂmÌŠ½ièìó~~9¸šâWÅÙ¸øå¬/” —xPBN-C.>ÿ‰¡Òø6? ¦Zf¯F"¿‡Æb(¬÷úÈPêc¨t"üZ˜×˜p ƒ¶X½nýÉn>…ͯ7seHƒ1–¡¾2\j[R†KŵJ'°äý)†Â²ÓG†úÈPŸj†üˆ~a¨ø‚?¢±Tr…Ûœ_¸4àhÒG†úBÊpµú¼µù?uÊò#ún˜£JÓ£mŽ©™™Å‡‹âÏ'¥Ç=bf±.«xØ((šôù’!×ÍsÇrÓ§œ!?¢ï–þùC0ÀµJS;¯¶=]lk‰í÷GK?Š²Ì²kdÛÓɶQŸÙG^ܶ_V÷óï·i(º¿6æÀ¼°ÐæjÊÛb~Dwó>Tševb‹#3‹b‹£«eYéYji¶¶h¦¢mª/Ü|ezü5É{.E“>2Ô§š¡ê|e¡¯ÿPé5³lýc÷š,²hÙïÕÌ¢Òc¢«%›ÍÌâƒ]ªÆSÍì|>·žñâxwÓt^¡·}|yúÛû–âÍÞ˶âã\^Ÿéy¦«r)ÿÒcz¸íˆiÿ§û¶¥s¯{ªóÏtu¦Åvyîùñ¹-5s¹rB|°Ë:³,Š,2³,ÙÛ1+÷…Ûív/•vÅ{º¨é1·Šéb×çõ™ž~ºˆ¼˜fZwºÈ‡ùaºßôíöê0¹ÿs{üÛ<íËüO=mV*]G]3»ŽÞ÷e‹ÖöéQ´å®ã©ãY­ÆëÎ_»º‰xÝ?æ<,oËÏ·ùQÀ2Ó§˜á³®)ä–F1Ãf¡}žï\2|/Ü¢ÈÖYjifõû²Ž:Í­'Üám¨ vÕóñ¾Ï_²1ݦ\>ï§ñwŧ>2ÔJ†ï½K¯[Õ}åÿSç’ai¨4¶Ãá×6û%v?È}4µãæ×~.‹ãƒ~7¶ÙÜŸmOvšê\ €E ¯w UêöÿÂËç>nñÁ.—;í'þ-<äb™ÈP¡V½D—v¡ïó—lÌ ³ûËr8º –—>Õ çy,ªV)îë¶$.¶¼rBfYô3ÙIv›Œ¹’æ¯]·ê¬Jƒ–Ÿ>2ÔG†úBÍpIÜC¥u"Û*žm×A^õ/gµA.¤_¯@H8(a–ÚëÖ×*­Ðtè9 G¾m˜dÚo¢;2Ô§˜aÛƒùº~6ÕƒûU*`Š/Ù÷_w÷_îÃaYê#C}*ÒÛV/Äeòþ™Vf¶zî‡"— å ·¾Æ<”8´Ã”—ä¹c (hjƒiŸïä 7‚ÓG†úÈPŸB† ó8§—Ï­tË…ö™*Ýòãó}Ù†Ö0ŒÁ÷ ñR†Jó:¥Ð–KÓÕ‹Âú¤/#U „#š`.MíÍ{½­Vn)÷\Û×*ŸXÎúÈPŸï2úñïâ;— åzܦ؈i(Æåóò}žÇsº5bÙè#C}ʺ\}¨é$øª5¬÷C¥çóyÊ·¢' ¨7iá¶ÛíÞþv)äÆê ¡[~:*½Y*ó9–>… }Ÿ¿¹)dØEùÊEù'[•— *-©û¡Wu`ëÏd|ßð8Há;ß3Äwd¨/Ä ‹ío¹õóv%wpÂø’?0ú./ÙL®p³Èº¯,Öú7 …2WRhÆrÑG†ú3ìöýù~úݦϫú½Ì x! õ‘¡>3¤·­›¥,§?'C¥h(ðâ¯Z@˜ä 7¾Dõ©dH1_O%CÔó-CßæGÁ’–Y¨»¯0T d¨ õùš¡¯óå#–•>†J;b˜ß„ú+T-½=–+Ü–XÈPêó)C~D»ñ)þV«Ï[ùÿB¼°|Ëp ¡­' •¶ÄþóR\î¤ðN1C¼#C}d¨Ïû¡Òóù<åÛ<Æh¸Èw_Yêp餅Ûn·{ûÛ¥ë=&óSߨÔç,}d¨ õ¹d¸È¡Ò!_Ý©.{ÕùËBßÜÒÛÖËN¿3†ð€à-¹h•+ÜúT×üÂóƒò/$R¸[úçÁœ²þ ƒå¨£J! õ‘¡>2ôa”-}ù…ðCÚû£J°c0P­í÷hþ86# =¹7×ÊšaR(ÿ:2c2ÓÏÃdX¾¦dËg=þ­ßŽÜ^wyØõ¹d(×ãÆ—¦>2ÔG†úÆÌ°øÒu_L¬Bý±êŸÓ£Jkð«C aß `lMÛÛàF®pë³±+Vã!¢ÁÖG†úÆÎ°øú·Ò Ã`;|§¸<8ªBÉpɽn¡d¸dSeXõ.ù}KÜv†Ävx§¼8ª´%À¸>ë¯G»ëô\MäzÜø…¦ õ‘¡>2ÔG†/ª# UZ¢àR„Ôû©~D“«%}ÖP ™aù¥ò¦weß{ݪfƒ¦»¶C}Þ•žÏç)ß¦“ÿ 0¼I ·Ýn÷ö·K!·´ž…–á{Ý–ôYC5U†å^·b9Ç:ÔÛá;ŶØe^åöqkû9(Á_d¢ õañõW…ÛTï¿,C}œ€àº/% Œ-ä¡z¹ƒ”º@QM1ú‹a¿Ú†›™­JÅçg¬{¾ØâÌï†È°îé¯Í z{(§–_‡U«¶ÃOjûW2TúÀ0©ß–“Kyp(ËÉ0\ÓfÈú2¶C}ÞU „&ßæž? ÿ·*LÑÀbI^ÛÅûßÀRèB®Çí[¨RéR…–QUÑ–ÿê¥}Bû®Uêð8Llô‘¡>2ÔG†ú*FÆ5À!—Êõ¸5u+Ò5¯!¬îýÇõñfž‹©…•á2™!mñ4Øõq­RHPΰÏuCº&£r†¸#C}d؎Ͻn‹>/¿<0·ª50¿Ï×Fm1|j»+W¸}kB *$!5ì÷R}iŸUéq}ì 2\ª±3¤-Û¡>Ž*…„03lúLá}Þ03\2ÔG†ßåËÈ×"w±G•²#,æò¾Ê½¯¯õrºùæD[ ŒoÒÂí|>÷~ Ÿw2D;Šö™Ý¦Ï+¶ž3Ä;2ÔG†Ýø¸¼\æiÒÂm·Û½ýíRÈù¶ÐÑÝR2T»ØqKÉ0dd¨ Ûñ¹-^äQ¥tÍÀüh‹iÈn¾VÍhoIú¾c¬«Ð>Ï‘¡>2lÏ×¶xqG•úÚá¹>2Ô7d†´Åó`;Ô·È¡R3V^ðm10>¹Â_vú––¡¯]ô}„ôY–Š õ‘a7>¶Å‹*eGX]d¦ õ •¡O_‚KÃv¨o±C¥€ ¾ä*Š(Qn‹½(ܺ,¿ÕjÕz‡v}ÈP(o0®BûR[b†¡!C}dØom±K†2—¼ªúp¾€vÈMê"CvY™Ë]_C¥M=lüÚ€wŒ€¥Qo‹Ý ·ôh›ÍÆ6›Óç¨Æ­tË©.ø%#3}d¨ õ‘¡¾‰Ž*Míx¼Úöt±Ëik×ãÑÆªÝžÝðÿG±.º÷õ‘¡¾¾2L:?–½¾i†J³Ì®QlqdfQlqtµ,ëü*ò Š·oò{Níþ|`jê]ô嶸ûÁ ×̲õEffY´Îì÷jö¸ãÍù|î9{ÃX­Vo!1=ï´Ù}£ñe~æ˜.òa~˜^Þt¹ÇÌå¹¹¹?ËR§óü|™µé"æ§í\,îþ"­Ýn¯ý)ª>‡2{­×uû[øNqžñŽ õ‘as·Å.ïé¶[|°ËÅé™NòV¬LYaÀÒxqå„¶5XÝNµM¯K}çº÷õ‘¡>— &õ Ûáw«§Ë{ÞÚ.×.¯Ýôž]yQ¸uAƒ¡ ïªz’U¡>2ÔG†ãéRÀõá’¡\ᘞâ à›òz].£|\ïå 7"º!ÃOjËDm~ñÉ5CzyüÁvè®<Ìy³WÑVœÎ;Þ|0T dø¢º,Tç/d¨ ûª¿úûýãUnÓU X J€ºþ 3Cëq£kX¾S2Ô÷-CJðÙŒoì☡R@œï]ô°>År…_húÈPê#C}d¨¡RH C}d¨¯)C†I5ϸ¦a¨Ã¥€:r…_fúÈPê«Ëlu•>†J! Ûóµa&C}ß2$cÿ‘ÑøÆa¨ 2 Š\áækÚ#C}d¨¯*CJÐÂv81{Ý*…2lÇçƒÈPê#C} •ìS¾Ùù|îý«ÕŠ_âÈPê+gÈ0©¶ÃéÜn7[­Vƒ/s—×›´pÛívo»r¬¤úȰ½±‹¾|š¸!C}d¨¡R@g>îG øjîíE®p›{¡?2tãÓrói^à¦*Czp´°NkŒíÃ%ÃI‡J‡@⠻ɇK}B†ZªWŸÛÇýùßÄ«íPC¥€Žòê"øÆ‡Ó4Én¾õ< ;2ì·Ƣȗù@;·Ûç­é1ÐÀv¨ðBê#Cÿ¬VuC¢~¿6ܱÎkˆÂÙ%C¹}Üî8(ègîýŽåzÜèÖG†n|.õaÐ]]nù¹¡…Ìô1T d¨ õ<¯ŒP]XS@*IDATqƒ&¶Ãù õCš£J…à—6º(mUn¥Çð—Ü>n¾]úÝ‘a7ËOßÐæ;v¬ÅL†þê[{Q»é`;ôCŸ\ž+×ãÆJª õ‘!0?¶Ãy ±ü9ªÜ}ÏhZ=Žn*þ–®j=èÒ‹Ö÷ùÆ%×ãÆ>úÈPjyîH]óÿ«Òã íp~}RðþZ¥çó¹÷kаè#C}d¨«x+¾öµ±êó~¨t·Û½ý=D!,Q~Èû¯5o|W>ih¹h£ú™ê`†J192üÎ÷Ë‘a8n·E›(¶C?ôÙ~¼* Œ>2ÚûéA¦X¾dèŸ.‘júµ1¶C}œ€Xˆ¦_iü G•çIxù²7å% å 7¾”ô‘a?ÅåWwù¢±—1j)ÆU*Ïÿ.Þ íP×*…2ÆœK‘ Õð"¶C?u)Ƽ?ª@7.?¨óÓr{,r=nt ë#C}d¨ õ‘¡>Ž*…2lÏåòCß΂?D[O†:êJ C}dèŸâ96ÛäÃQ¥À‚ð[–G®p£kXöSü…¶²WWœû—8jh:ê#C}U dØ_y®þoŠ÷‡2ÔG†~êrN7†Jy]ªèöüÛŒ_á¸c=Â$W¸Ñé#Ãïn·®—jÿàî¯ý‰ uÔ¤B†êÈÐ_mH{Téù|îýt ë#Ãñµ=¢Éúm¬!ø… õyÞÝn÷ö÷…€—©N |±áa¨“#ÃiŒ¹œÉPê#C¿µ.õ~¨tü‚ÔG†îš¶ñ×ÿå½ú«é Ed¨ õqT)€g†ì•ëq{§kŒ ݵ_lÝ.»Òú©Ë—ê#Cÿ÷;îZ»ÕE+×ãÆJª õ‘¡ßƺF"üB†Ë$×ã ®;†6vTüôêuûl‹óͶK-×ãF㤠õ‘¡¿Úéd¨ —I®p£ç@Ng¬Ë`‘¡>2ÔG†z†h‹å 7À»¶§0!·M¹Â®a}d8!—;ê#C}d¸LŸ'¤GÛS33‹;ÄŸOJ{<ÄÌb;\Vñ°Qð‹RNkŒË`‘¡?\{ÛÈPjꀱRá–Úñxµíéb[Kl¿?ZúQ”e–]#ÛžN¶œßÀ 8´½•f™]£ØâÈÌ¢ØâèjYVzF–Zš­-š©h£kXNoèb ýÐ'2ÔG†ºúd÷ÞãvÍ,[ÿؽ&‹,Zgö{5³¨ô˜èjÉfcG3³ø`—ªñT3;ŸÏ­f¢Ø ðm:ïjlûx¦™fºº—͇×az˜L]žK[Ê4ÓÓOçÛ]•¶Û{÷ðÆ»¬3Ë¢È"3Ë’½Ó¸r_¸Ýn×øRyaWÕ1Í4ÓÃNç F±ñeÞ˜vŸ.òa~˜fšéæé:mŸû¿ÍfsŸŠvÙF]3Ë,¶è±/[´®xõGÑ–»f™ÝÇWÇW÷«:ÈPÎ/ÿÕîšê#Cÿ¬Z\ ¡ø#ºpoë×þßåryûu–Xšm-²û¾l ¤GÛüþ¼ ®'Üá•TΧØ`ôÉ õ‘¡>2ÔT5TÚå‡Xi¨4¶Ãá×6û%v?ȽX©ÎÌbû‰ ¹ØÇC&B×°>2œ×½nd¨ õ‘¡®rj7k_¼µ¼rBfYô3ÙIv›°’ê#C}d8Ÿº#Òº"C}d¨åÙS^óÿmÓlyTid[ζ ‡_ìºÈ ðWßßWMÏçZ¥˜ίï—>ê#C}d¸LÝÏã63~eê#C¿¸ôº‘á<†<( õ‘¡¿ª£yì_l߇E«žÿ<H¿Y *?HÓêºÈùnÂSU¼åM÷‚œ¡RLŽ õ‘áô†>ê#C=ÅíwUºµ%×ãF×°>2ô‡ë©AÈÐ]ÓÈ”‹• õ‘¡¦ºÑ޶yÊn°4ô¬aÉ‹4—m •brdè—WÒ>2œÇ=,d¨ ýs»×sž¿¶\áF×°>2ÔG†úÈP.Ó¤C¥çóyÊ·ÐRݾn9?®K  hÒÂm·Û½ýíRÈq¦w}dÌíP.“ÜÁ ¬¤úÈÐoÅ/_Ž€\ª1{ÛØõ‘á2Éíã`| €ÿä 7Ž¢ÑG†þ#£ùë#Ãe’+ÜèÐG†þ"ÿŒ• Yë#Ãe’+Ü tô¤¨#W¸Ñ é#C¿¹œã³G…|õ‘¡–ÕêóÖæÿÊä 7º†õ‘!0?¶C}d¸Lr§0>׋ϣ?N¸ „i¨MZ®Ç®a}dˆ%ø6Ü1÷k³ê#C}.Ênü ÕG†Ø×m÷å{¿MÙÛÆv¨ õ¹d(W¸@(êŠbŠeuä 74}d¨‡Ì†÷ì]+ÝÊÿ?öûCêc¨ÈPY£X´•MµÄÉVêsÉpÒ£JÏçó”o`@aêÆ¥Säf½ÞV+›®” `ÒÂm·Û½ýíRÈñå¡ µä§AXØõ‘¡>— åÎãÆJª ±$U«{—:¸ïóë_—íPêã¨RN¾¬Ï©AÆ<ŸY¨òÅÅ3€2¹Â!}d¨îuÎ1²tó,„íU¤å¦Z¢d§ õqT)$aXøòèoeŸEÜØÛ Û¡>2ÔçýQ¥45¾"?ú‘/‘öšŠ]–#€&r=nüº×G†ZšŠ¶ªÇáîvû~QéÛíö(Ôî·¶E[›×þ†¼ô‘¡>— åzÜø5ª ýÕçœc®Ï_š)¯GÚdî÷Gd¨£JÀcôèK®Ç}iô‘¡¿|=çØ˜ºÎŸëª[,Ú|XÿÙõ‘¡>— åzÜXIõ‘¡–â©+ªpαn|YN¾ÌÜ‘¡>Ž*0ªò•3ÇèL›ª¬éùù< õ½èË~môÉõ¸±ˆ>2ÔS,8ªÎ9†z¾®ï¾ÎÚ#C}U d¨©ê²WÅû†Úßfа©ø¶_[‘oóƒîÈPŸ÷C¥çóyÊ·ÐR·¶ãVûœªâï¾` gÒÂm·Û½ýíRÈq>2 Ïív{ö.‘ïïÃXä¤ õqT)$a˜Þöƒó¼h›ÏC¤9_ç í‘¡>NÀ `Voïøb04¹Â/}d¶¥+*§þ`;ÔG†ú\2”+Ü|o ñ†¯êÔ%Pú¼l‡úÈPC¥¼£TÌô¡°_}r…ÛR¾BF†Ë°Ôýݾm«Õç­Íÿ mI™„Š õ1T d¸K)ÞTök+RšWT#C}ÞŸ€Àò„~Ž·®i`ÀÄäzÜBþÕ¾d¸<¡k9åýÚØõ‘¡>†J! —)ä#M×iÅyÆ;2ÔÇQ¥$„P¼)î×@Ÿ\áBƒ¿td¸\¡¬ <ï¹>ÃÒ‘¡>†J! —-”âÍL{]VžwÜ‘¡>†JHP.Þ"0§IOr>Ÿ{¿Fˆ§X2ÔÑTSUý_—X‹§ Q¡6¿MØõ‘¡>— '-Üv»ÝÛß.…+©>2D./Þ¾€”OýQ%„ϰtd¨ðÔ”ß Å›_–æ%·[HCKE†ú†ÌpªýÝú\û³i¿¶±¯):¶C}d¨Ï%C¹7~íê#C}CgèËe±ÊhÈß‹l‡úÈPG•5÷‘¦ßÞ“/I>+ÜèÖG†úúfX7¼8Dqä2tùvàAéVõ˜„öy–ˆ õ1T d¨oÌ ‹Gš–åwõþU¯z3³¿Ùõ‘¡>Ž*°}öƒëÓIA€¹1TŠÉ‘¡¾©2,[ºö/Üç·é¶†JH©.zçLð}îûÍåÓUó!Z}XœC¥©7GK‡›—Vh`õ‘¡>2¬L½ßn·×íë«<S8-þZï†?ÂêsÉбp›§h3 ¯ñ\"2Ô7T†·Ûç-צ9kz~÷y)œG®ôþ!®³!~¦¥!C}€7³dÿk?—ƒÅÝŸ ¾5dcö1”{èÚöØÀTöq‹l{:˜Yj¿_y>Ÿ[½bñÐþoÓåkvy.Ó~Lçùù2?Lϱ4?&÷¦,LW©;=Èûý]æóVû:¡LÓ–êOçùù2?L?m6òÁ »Ý®ñÿó®8CߦËs—ç2Í4Ó~L¯*N¤[59•‹¶¦v îþ®ÓC½Ž¯Ó´¥L3­7mÖ¢pK;æ;³Å» 0÷îf5u,Æ×Â->\ì2Åœ´T7$d¨¯o†ÝŸÚþ ¬Zí°ê#C}.Ê]9•Tê#C}d¨ õ¹dØc·Ø†M¦"×ã–ï¬ ]d¨ õ‘¡>2Ôç’¡\áF×°>2ÔG†úÈPêsÉP®pX*¹Â®a}d¨ õ‘¡>2ÔÇP)$¡>2ÔG†úÈPC¥“+ÜèÖG†úÈPê#C} •Bê#C}d¨ õ1T °WNèî|>÷~ ®Í¦ õ‘¡>2ÔG†ú\2œ´pÛívo»r¬¤úÈPê#C}d¨¡R€€ÉnE£ õ‘¡>2ÔG†ú8ªÈPê#C}d¨¡R€€Ént ë#C}d¨ õ‘¡>†J! õ‘¡>2ÔG†ú\2œôt à›¦¼UÿÇw%€9Éõ¸Ñ5¬ õ‘¡>2ÔG†ú\2”ëq£kXê )À>J'!e¸Td¨¡Ròº€z«ÿþÍÞìý÷ßsÏOt9 p°$^nC\| d»Ýέ‹óùüq±zÞOë=y?ý÷ ýýæxOÞOÿ=y?ý÷Tx?¹£J–ŠÂ @C¥˜ê#C}d¨ õ1T 0 7n"äöqX*zÜDP¸ˆ pAá ‚ @„Ná–m³ÙØf³±c:÷Ì »Ì’ýæ™á†¥eÉÞöI6÷lÀA–ìÙÅ‘¡²ÔŽ›£½¥Ö±¾)ÜR;¯¶=]ìrÚÚõXúÐð^–üµd}°Ëåb—Ëɶ×#¸ª,±¿mš²Äþ¦±Øu‘¡°Š¢Í¡¾Ñ(̮ܲQlqdfQlqtµŒï )Ñöd—CœÿeqÙ•e–üMmGsÏdijÇvO/²íébÏÍ¢"‹ÖsϾË,ÙÿÚÏå`o›œC}£Q¸]3ËÖѳ±‰Ö™e×™ç =¤–$kÛnùòW“%-ÿÑiºf™­-µ=Ãlº¢­þ˜ýÝll³ùköçÄö(!²í©T´™9Õ7…’Úq“XTµÃo!š?|KHKS³?—‹].;ÃlrÒ£mþæþ1ûË~ßK£Q¸­#‹®™Ý{3Ë®t KÊÛo‹NüBT”¥©eYbûÍÆöIÆ ¢âíÖòÍo±Ë‚š,»ZTîÞÆ–þR¹Ér¨o4 ·(²u–Zš™Y–Zš­-â‹_K–Ø~ŸÙöBѦ*Úž—\ì´,ÚžìD˜RâŸ÷/ùk–ÙšÆTJ­ï?¢§¿©Eôdèr¨oþ7ÉŒõÛáðk›ýÆ3‹†ÙĤIb™™7›ç}|ñ‹vÊö¶ÙÍì± Ò˜j‰vøÝØ~“<ÿ¾ÐŽ ë^߬þýûw›bÖÐÏÿ޾ƒ í8L§IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963036.0 PythonQwt-0.10.2/qwt/tests/data/eventfilter.png0000666000000000000000000002034400000000000016370 0ustar00‰PNG  IHDR $NŽ pHYsÄÄ•+ IDATxœíÝÍqêL·öñ˧Î|?ÐÈq¨4ñSeB0›Á;D ãpÕñD¥8¬@šv¼>Œ±ä Z,éÿ«ò}Ëò64–»[­›ÿþ­Ðମ…hõ¿Ö %–šLJEe‹…²ð“ߪËG½Þ.4M.ÖŸ;n×þ1&šVS]®©µŠ´PÝø³ dú;MôË6]kî@GèQ\ˆ*'*êhÝ#×Û®XšÍeÄOnç:ÐzœWÈ´¨²Nï2™VíozŠ2Ju©2&ê¶5@¿P(¦ÞºÏ“éBáõQåö¯×M×y¦ ¨r2Q¹ý£¶.R¥]è±,ôXÖÚþ–’쯦û1ÝíeÙHuYoºßS%!ª.ßýµüvŸob]è±ØÝþ7Úµ*ºùU¤*j)d -öízûÝÃùÏËw%Y¦¤,T+*®$Zþi,U<–ªßœ²,S–„wmlÊ †€+Q“}‘ I±.¿ì:¯‹T“òíC|ó×ôD“ò¸«<ªÜý»4 ›û;îR?¾ÏXN4)oûo&¥¾ÛŸÜ&Ûß;¸Xo?œmüƒÇò•¨º,·s‚B[‘PJ'E¶]eC.ÀQ(×"dš.*UÕÁ¤¹úuÓp0ñ1™Vªª©’Xª¬%)Ùþ^¥j±é ˆûÊÉT‹ªÒâo¦ Z¯G¿»È’ƒû”¤ZåöC:d‹w·¿ù oiׇû½ÝìÛEÃþg?|,Gê"Ušî¾&›aIJ²– £µŠ]A´Í¥ªûÞ‹º(Ûsÿ¢-@ß0ô\‰$Ë”I ›¿Âë/>Wqû×w­b’ýpS$ŸjÉíö € I‰¦U%)ª®Ke­úø¯èµÚü¦²Ý§åIó6½uU×QYÐþ¾v½ ?},_ AI’)ËZ~éà±MwgF¼²8á>ž¢PœŠqõƒ}Üÿq~ÂûïßÛ>±®}vøÙci¸ýw“¿¡õ±¦}«E÷@¡ø2-ï' ~©.·EÂæ¯è,)¬J¥E½™Ã I£  ú<ÅB’) µÊX«,¥()dÙÇÏáSË)ZÛJ1îþÉfB#0tÌQœYÅÝYo‹ í&Aƺ؎ӷ-D´±ÿ >Œt›% A*_~cW0¨~›7Ciš~˜d¸kW³ d{&A½+P’·rà7å$­ØOÖ<œùÖÛ±óùãú‹À…íÐAÜœ‰–Û‰vI©¢ÞœÁp8²ßø×úáÏ÷7V«HælÇïÃvnB]FŲФ<üGoó>´ëÿ5ßsH…rÛå%‡Ý!;ù±œf37!ÝܡާE$ÓݤŖÜ/Þå\z'Þ&;JÒHA›µ¦Y8èªJÞ­WÐvcS-²äí÷ÂvmI‡Ýï![h1MÞ „$;ø·ÍíjtPì{Þ5éÄÇrªdªÅ4;*XeÓ÷K5ûñ=uÃe¦@z@+ ЊB´¢P­(@«m¡ðv©Û½ýb'›KÄ~¹ôÎÿ4 ªU+e‹ÍÜVE±¿š\ó~ÐGÿSN^u{|éÔµÚ-Ž%a»KÛ~ÐKÿ›-¦’j½î]EÅÑíþÒ«aõº’¤–ý K•===}yçúóçnæsIÒz6c›m¶Ùf›m¶;ØÞù÷ð ÏlWf¬U¤= u¡ôõVÕvÓºHõz[iª–ý',Äþôô¤‡‡ý縌¯ …æ³FAa½ö¨¸Ú^¥m?è¥æB!b­:Jеê8RŸìÿ…õlö»À¯¿-ò·Eþ¶È߇–ËL'šN_•NR•’’iµìضÿtÇc%èùÛ"[äo‹ü}Ø ‰¦ÕÑG~2UU5üFÛ~Ð;æ+3Òõd‹üm‘¿-ò·Eþ>lÏzèg=`﫳Zæ(W.oøK$g¼ñ>z ÜpüãBÌ …¦ÅЗùç3-—/vÇ3wÅ‚Ëü{Äkþë|¦ç£×Àzô2\;ù‘y¡üHKo‚¤Í~go”ÀO´ À%uV(<==½ûÚaÖ«-ò·Eþ¶ÈßùûÐÙ…‡£Y•»b®'[äo‹üm‘¿-ò÷¡ø’Ï5ß5þh<¾s7™ø‰›|®û–ã¸óB®'[^ó?.¼ ^óï ùã‚á~|çò¬\?\‚_‡½Açpx–ƒ·"׃—Ð_ù|S,ð‰£@À¥1ô0päo‹üm‘¿-ò÷Á¼P`Ö«-ò·Eþ¶Èßùû`^(€ëe^(Ðõd‹üm‘¿-ò·Eþ>˜ t=Ù"[äo‹üm‘¿æ…¸^\ëaàÈßùÛ"[äï×z8ò·Eþ¶ÈßùûÀÐhe^(Ðõd‹üm‘¿-ò·Eþ>˜ t=Ù"[äo‹üm‘¿æ…¸^æ…]O¶ÈßùÛ"[äïƒy¡@ד-ò·Eþ¶Èßùû`^('Ëgïÿ Èz{ܯ9þqaæ…]O¶ÜæŸÏ´\¾ì¿¼ nóï ¯ù¯ó™ž—/û¯u>sY0xÍhnþýû·¶¸ã§§'=<<è?«4ß²-ŽÇwRNW&úmW$4¹ßé†×~èßÑ‚ˆÇÌ{€i)$¹îY€kŵŽüm‘¿-oùÖ›à‘·ü‡Šk= ùÛ"[äo‹ü}`蜸ÉçºßY7c^(ÐõdË]þù|3i±ÇÉŒîòïù· '2z̈8ë>5MZtö& üÆñéÞŠ\¯ÎzèlŽpV»7Å|F€AºÉçZç3 \CGþ¶ÈßùÛ"Ì f½Ú"[äo‹üm‘¿æ…¸^­…B,'JÓtóUÔo?¨‹ýþÃݧ¢ëÉùÛ"[äo‹ü}h.b©Ç:Ñ¢ªTU e«b[Ô*Š•²E¥j‘iUúm­@ד-ò·Eþ¶ÈßùûðÍ¡‡ 0’£V!Q$…DIX)ÆK6Xj.B¦Å_é1M•¦Òß…² iGAaóFQqÕ|ÃÇ×vøÎµØfû§Û‡®¡=l³Íñ϶—íïj^p©.”–A‹E¦ ¨r2QÌ*MU(}½U5M¶ÿ,Õëm¥í·?‚K8 ÖQÀ€±ŽÎá¤ËLǸRH’}ÏA–%ª_kiVQ›Ñ†¨¸ÚI€^j,B)ÖµvÓê×Z!Œ¤4еê()ÖªãH!ü®§tƒà|ÈßùÛ"[äïCóÎÉTÓ×T“´Ü_eARÐtúªt’ª””L+0êð³^m‘¿-ò·Eþ¶È߇Ök=$ÓJUóT5þôùÊŒt=Ù"[äo‹üm‘¿æ…]O¶ÈßùÛ"[äïƒy¡®—y¡@ד-·ùç³Í×ñ¶3nóï Ïù¯·Çü:Ÿí·½ñœÿ4/¸Ô\ÂÉò™–Ë—»Çã;_Bï튂ç£×ÀýøŽÅ—p’“\®VK‘ Éq‘°Ûçµg×ͼP ëÉVŸò_._Ü Aô)¼å¿ÎgE‚WÞòªÖuÎí©eˆY¯¶ÈßùÛ"[äïCg…ÂÃÑH[á®Cç.ÿ|¾™´ØÀãdFwù÷Œ·üoò¹î[޼å?TœõŸ¶s–Ë—·ÂÁY‘œªmÒ"g=à_õÐÙÐpVÛ7ÄñxF€ÁÙë|Fq€‹cèaàÈßùÛ"[äïƒy¡À¬W[äo‹üm‘¿-ò÷Á¼P×Ë|ŽÂz6»HUyÜ¥å­ríªý]å/ñ´ÝÇ%ŸÛCäß|äߌüm]SûÍ …K|ÏÏ/öy9PÚÚ/?¯®òßí÷ðì²îâºd‘æõ5à=©¿ïAäßkkï†Ú>¤žŸ_\Lœù¬ý´µßïÁók@òÝþ>¿ÑþË»Æö› ž¸kq‰¥Ëü=¼P?+t<äï½Pëºýäÿž÷üqƒºÖƒ‡ªï¸ö«Nïo¶ÿOgÈßù˜IkŽÿw¾*t®ýø¿ÆBsP×z¸¿¿»ú1ªÏbïíß9ëcÈÏ»àRçí?3Úo«ëö_bÁ¥¯z®9©ÿí·ÀÐÃÀ;ÿ›ù\÷÷ÍkÑ{(tºn?ù¿÷Yû/¡Ëüñïÿ>ôòZdz¦w/Ük“ÜišõíáM~§ÓöŸ¹Ga縪÷”¿ÔüðÞ~‰×ð‡û¹ÐμÙêúøÿêZ½,v.uJaW«m¡“ö_¨Püç/õç5à½ýÒ…N…½ðµ¼¿úÒþK·ýê …?þ¸|ûÂÓ¹Å.X(tÁ}þÎyÏßûE¡¼çß_ æs8Hl‘¿-ò·Eþ¶ÈßóB\/óBY¯¶\çŸÏÞÿß!×ù÷€çü×Ûã~ÏöÛÞxÎHÌç(\r2#zjû¦¸\¾Íhï\ÏU~bÏô¼|®ýýøÎõ|عú9 À)–Go’Ëå‹ëž໚ŠIz^¾¸íYÀu3/èz²å.ÿ|ö¡HØñX,¸Ë¿g¼åßV$xå-ÿ¡ÔµðùÛ"[äo‹ü}ÔµÀÏ0ô0p}Êßã„Æ>åï‘·üoò¹îÇý¹–„·ü‡Š³àg=`à8ëçôÕY =g³}3göCp“ϵÏ>ì.¡‡sÿîÑñ¤ëü{Àsþ»Âà&Ÿ»-<ç?$æ…³^m‘¿-ò·Eþ¶ÈßóB\/óB®'[äo‹üm‘¿-ò÷¡u2c,'š”qóM2U5M6Ûu¡´¨·»+ívŸŠ®'[äo‹üm‘¿-ò÷¡¹G!–z¬-ªJUµP¶*´© jÅJÙ¢RµÈ´* Õ6t©±Pˆu-%‰‚$)([l{bÔ*$J‚¤( +Åø»Ðõd‹üm‘¿-ò·Eþ>4 «5R­Iš*MÓýPƒVQqöDEÅUó ?==}úÕäð a»›íC×ÐÚÏ6ùÓ~¶»Ùþ®Æ•ë"U±Ê´Xd Ûï_o+MU(}½ÝÏWØï?až+3â,ò™ëu€ßXç3·k(àz|µ2cëYI–m{¤QZÅ(‚Â*j3ÚWAaô»žRÝà|ÈßùÛ"[äïCc¡Ü&ª_ߦ)®bÔ()b­:Jеê8RM·ð}ÌzµEþ¶ÈßùÛ"šOL¦ZĉҴ$…l¡E"I‰¦ÓW¥“T¥6§GþòìHpÅZ‡B¶PUUªªJ‹ì Û ™î÷ÿv ‰®'käo‹üm‘¿-ò÷Á|eFºžl‘¿-ò·Eþ¶ÈßóB\/óB®'[äo‹ümõ!ÿuî÷1ô!ÿ!h\G¡ ¬£€_Ù¾9.—/ï¶ûèÆÄ0슃çå‹$é~û`Mœâ«uZ/ \­|¦åö RÒ~{߇ÛÞxÍhÌ ºžl‘¿-ò·Eþ¶ÈßóB\/óB®'[äo‹üm‘¿-ò÷Á¼P ëÉùÛ"[äo‹ü}0/Àõ2/èz²Eþ¶ÈßùÛ"Ì ºžl‘¿-ò·Eþ¶Èßó‹B€ëÕYÂÃÃû¯ºžl‘¿-ò·Eþ¶È߆Žüm‘¿-ò·Eþ>˜ àz™ t=Ù"[äo‹üm‘¿æ…]O¶ÈßùÛ"[äïƒy¡®—y¡@ד-ò·Eþ¶Èßùûpóïß¿µÅ?==éááAÿa}œ"oxƒÉéÆÄp¬^7ÿ8Ñ¿ƒ% št¶àp6ùLËåˇÝãñŒbƒ°Îgz>z ¬Ç3Š\CGþ¶Èß–Çü›ŠIz^¾|èe¸vó"óBY¯¶ÜåßÒ› i³ßÙ¥»ü{Æ[þmE‚WÞò*®õZq­‡#[äo‹üm‘¿ = œ»üó¹Æã»ÆÇwî&3ºË¿g¼å“Ïußrü{ä-ÿ¡2/€S ‹à»bá¸`¸ßqÖ.ÂüôÈõlFUiÈeþÛ7ÃñxöaŸ7.óï¯ùï ‚õÁkÀc‘à5ÿ¡aÁ%ø–³v†k³v~ï«—z­Ì f½Ú"[äo‹üm‘¿æ…ãS¶ÈßùÛ"[äï×…B,'š”ñmG](MS¥iª¢¾dÓ€µÏ …Xêñ°HP­¢X)[Tª™VE¡ßÖ t=Ù"[äo‹üm‘¿Ÿ Qåc­QvE­B¢$H ‰’°RŒ­7ð-t=Ù"[äo‹üm‘¿­…B,U'•Ô ZEÅQÐfWPEÅUóï?==}úµsXQ²ÍöO·]C{Øf›ãŸm/ÛßÕ¼ŽB,5y”þ.2©œèQµÈÂf~Âë­ªi"Iª‹T¯·•¶ßþÈn…?þPUZÏœ/xâ|÷ù;ç=ïë(xÏ¿/¾ZG¡qeÆX׊1j’–Û=M´Ð" «¨¨DAQqF¿k ‰-ò·Eþ¶ÈßùûÐX(„l¡*ÛlÇí4Š¥ê˜)¨VGï‡&@¯üp…DÓéHå$U:)5šNu¨Ã;§Œ—à|ÈßùÛ"[äï×… ÙB‹ÃÉTUu¾Ðõd‹üm‘¿-ò·Eþ>˜¯Ì®—y¡@ד-ò·Eþ¶ÈßùûÀe¦áW~ð&ãø1àëƒãßó)’°wÒé‘ÀÕËgZ._öߎǾ×S~bÏô|pü¯Ç›¢‚—ÀÐÃÀ¹Ìÿ¨H´ù>÷÷X\æß#ó?.$éyù¢çåË»^<æ?Dæ…³^m¹Ë¿¡HØñX,¸Ë¿gÈßùûÐÙÐÃsàWšz€Kë¬GááááÝ×]O¶ÈßùÛ"[äïCGþ¶Èß–·üoò¹îÇwÖÍ8où•y¡üH>׸år<¾ãÌô^[±p?¾ã¬\„ùé‘\fÔ–ËüóùætȆý޸̿G¼æ“Ï÷§DîóÆkþCÂKð-gý ×:Ÿ¹,p]¾Zp‰¡ÐʼP`Ö«-ò·Eþ¶Èßùû`^(\z|j=Ë/zû—véö“ÿçÈßÖz–_ô1t‘¿çç€üm]KûÍ'3^Ê.ÜççÿÓzö_IÒÍ<·kÐÑ~[´ßÖaû7ßÿ—öw¨©ý’ŸcÈ{û¥Íc¸–ö›OfüóçÏÙ«ÊÀÝßûx±vÙþKÌ:î4ÿ Lf$[äÿƒûºÀdƾæ/ñhsõ“»ôöZè¹|öq›±Z Èz{ÜïþÏ\\Šy¡Ðå‚KøÈeþùLËåˇÝ㱿‰.óïùï ƒç£×Àzìob£Çü‡ˆ¡‡s—K‘à•»ü{ÆkþÇEÂnß:÷5æï5ÿ¡1/€sY._ÞI=³ÎgEpI OOOï¾v˜õj‹üm‘¿-ò·Eþ>˜_Š®'[äo‹üm‘¿-ò÷¡ø’Ï5ß5þh<¾s7™ø‰›|®û–ã¸Îz8—ùçóÍÚÌKØ‹—ù÷ˆÇüoò¹Öãæ.{ÎzÀ%p­øÆµ0`\ëçÀµÀÉÌ f½Ú"[äo‹üm‘¿æ…ãS¶ÈßùÛ"[äïƒy¡®WK¡UNR¥éö«¨ß~Tûý‡»OEד-ò·Eþ¶ÈßùûÐX(ÄòQåhªªªTU e«b[Ô*Š•²E¥j‘iUúm­@ד-ò·Eþ¶ÈßùûиŽBȪ޾S’Õ1J£¨UH”IJ”„Z1JI訵 Sߘ£P«,Gʲ ­¢â(hS…QT\5ÿÖñµ¾s­¶Ùþéö¡khÛlsü³íeû»¾Xp©V‘– ‹Å¦¡.”¾Þªš&›Ÿ©^o+m¿ý\ÂY°àŒ—p§/¸KM‹I…UTÜüÅUP«©àÚ4 ±Ôd•UE‚$… Q¬UGI±VG ¿œŸpJ7·üm‘¿-ò·Eþ>4Nf¬ËRQR‘¦û}![h‘%šN_•NR•’’i¥FÞaÖ«-ò·Eþ¶ÈßùûÐX($Óêଇ?TÕúCÐ'æ+3Òõd‹üm‘¿-ò·Eþ>˜ t=Ù"[äo‹üm‘¿æ…p²|öþÿÀ€¬·Çý:Ÿí·K0/èz²å2ÿ|&å3-—/û/¯Å‚Ëü{Äkþë|¦çåË»/Å‚×ü‡Æ¼P ëÉ–×ü—Ë—ß;|£ôš_xÌW$óX,xÌˆÌ àG¶= M¼ Àwµ À%uV(|çZèùÛ"[äo‹ü}h\GáŽÖ’Þ t=Ù"[äo‹üm‘¿ = 7Æã;.…^»ÉçºßY7c^(ÐõdË]þù\ãñݦ(8àµHp—ÏxÌ¿­X¸ß¹»’¤Çü‡è‹ËL_—™Æ¯N\tö üÖñÞŠ\Ó/3 \»Ý#o ]ap“Ï)pQæ…]O¶ÈßùÛ"[äïƒy¡À¬W[äo‹üm‘¿-ò÷Á¼P×˼P ëÉùÛ"[äo‹ü}0/èz²Eþ¶ÈßùÛ"Ì p½¸ÖÃÀ‘¿-ò·Eþ¶Èß®õ0päo‹üm‘¿-ò÷¡ÐʼP ëÉùÛ"[äo‹ü}0/èz²Eþ¶ÈßùÛ"Ì p½Ì ºžl‘¿-ò·Eþ¶ÈßóB®'[äo‹üm‘¿-ò÷Á¼PœnóW9.˼P ëÉ–Ûüó™”Ï´\¾ì·=r›OxÍÏ´Îgz^¾èyù²ÿÞ¯ùÍÍ¿ÿÖwüôô¤‡‡ýç`•Fà[v‘ñøNÊéÊD¿í „c÷ã;ÝpüãÿŽD5MÚrö& œªiÒ¢·"×㫳:›£œoŠ0Št‰¡‡#[äo‹üm‘¿ =0`,¸Nf^(Ðõd‹üm‘¿-ò·Eþ>ü|è¡.”µ$)™Vš&§Ý1CØ;óÐC­¢X)[Tª™VE¡ú×íg…BŒZ…DI%a¥/Ó0`ïgë(¬¢âèVA’FQ¯+i»ã§/†ޝý®ÏÅ\ún!_ªàSßù¬þY¡0 «¨¨DAQqF§6ïÍ%{v“&¹}nŸÛçö¹}nŸÛûßñ³9 !hkÕQR¬UÇ‘Bðè‡=$šN_•NR•ÚœyâÙ‘À³%œw.ݵ‚Ï‘¿-ò·Eþ¶ÈßÖwó7_™\/ ЊB´2Ÿ£®=  …hE¡ZQ(€V  •]¡PJÓTišª¨ÍZ1 Qå$Ýgž†ÎsÑ©XN4)ãÛòïD,'ÿ†ÈßJ­"-ô.Ú¶Ì[ö µŠb¥lQ©ZdZGgËG•£©ªªRU-”­ŠíÀsÑ©Xêñ°H ÿnÄRu¢Ç¿ ò7ÒP$´fÞþ\Ø 1j%ARH”„•büò·ð ![¨šî.á”$A«y.:U>Ö%—\%ÿNĺ–’D›äƒ²E¥i"ò7F"ÿ‹Š*'¯º­¦ï/ÞØ–ù'Ï…M¡°ŠŠ£°цQT\™´d j•åHYx.:ËGÕÉ_e‡—f'ÿN¬bÔHµ&Ç]ßäßiñWzLS¥é£ôw±yÿe‹éÇ+<·eþÉsÁdÆÁ©U¤¥BÓ„ËÙv½þ}W% Ku-ý­*UU¥© ÆÃ»TJwùÿ•™à‰M¡0 «¨M¯FT\m»¡pY±Ô$-‹·¿jy.:ëZ1–š¤©&e|›ÐHþI²Lo‡ývèü;ãJápè'KT¿Öäo¡-óOž ›B!b­:Jеê8Rà­ËŠ¥&“ –ŠIDAT¨¬Z¼ïúæ¹èDÈÛ‰¤•YPÈZdü;’Ün?˜¶V1jÈ¿+!Œ6ÅòöûúµV#ò·Ð–ù'Ï…ÝE¡êb?N˜L·‹p1uñ±«oÿaÅsÑ©XNô¨¿›ì%òïÈái©ûc_"ÿ޼{J¦o“«ÉÿÂjéѤƶÌ[ösõHÐêÿðŒY¯-%º®IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/qwt/tests/data/image.png0000666000000000000000000016735700000000000015143 0ustar00‰PNG  IHDRFF5Pñ pHYsÄÄ•+ IDATxœìy¼$Uy÷¿}ïÌ_MÄ —Ü”à±&Æh4ApÚV\ܦ§Õˆ`L•žÅ\â M‹hp‰¯ÆdZ1ÆFx#ZWE1:šÄè̽·ß?ºŸºO?ýœSÕ÷Þ;3õû|êSÛ©SÏyêWçùsj©íܹs@… *T¨P¡Bfnn*T¨P¡B… Ö *aT¡B… *T¨0†›Û€ V¬K³Ù%#¡ÑéÐHnnƒÊ¢O»Þ¦ïîKHÒ[[) ¨2¦´z-ÒiN“eô»Ûر¹Ckª+T¨PaÿCÕcT¡ÂºDFÖoÓlû²iš|ºÛš´ûÙšXU¡B… û:ª£ ÖÒVOõæ {xÚÝ ú]ºYJãæ4®B… ö#T¨¾=´ÖJɺ]ú¤´¶¶HéÒÞ¦¶uôÐTF¿½m¬‡e8¤Õ ;E›mÝ>Ã,ZlݼcÔ»3>Ô¥ÓABÚØJ«p¬/!m4H»múddóÀ\¸¬yY†ÆÒh4h¤ Ñm6éŽöõÛuê+Š«P¡B…ýÕPZ…}ݶ YŸö¶&ͦ٦†«úíÉa§¬ßÒʺMš¹Ø!8äÕo×ÇÒ {‚š4»EÃZýnwôìQBEý6u]–QyºN*T¨P¡B9T¨¾´E§×£#ãTY¶¼Mznú;F"¤ÏŽ>@J«Ó£×ëÑi¤iº"lFùô:­É¾³.]“W¯3ìuÊrѳŒ~»N½.Ss8Œ6“+A'vô:yoT¿Ý¥oFO[=zUoQ… *DQ ¥U؇‘ÐhŒÞêšKH蓑ʶdÐ=+)­^Èè÷»´»}ú¶ç%˘·y')FJW÷Íg£œû´›uc×P€¥1…’$¤iƒF#(·#¥%o® Á•8G… *T˜@%Œ*TÈ1ù|ÑrÁ3G¢{rrá5Ê)›ŸêÌã_—@n‡ÅЮ~óYFÕ=T¡B… Ó¡Fö3A£ÑïŽDѰ祑ΑÌw©·û$ÃçŸs4?•“¼BB%iÐéŒ?¸½6ÅbËÚ5L2|»B… *”GõŒQ… #ä½<É›)IÝæi HdtåÁê¬O·;ž.I—?ÌØõ@eýöè¢ÐG§@nÇðY£ÑÔCÛ)›MoÑ|V‰¤ *T(BÕcT¡Â‰[TžûSÚ’‡¬“üQª¬Û¤ÞÝÛ¾^¡B… 7-ª£ i‹Ž

îVþlQ… *TØ+Q ¥U¨0%ÒV‡Vš´ÆÃd*T¨PáfA5”V¡B… *T¨0BÕcT¡B… *T¨0B%Œ*T¨P¡B… F¨„Q… *T¸ ¡Þì¬Pa¢F*T¨Pá&B%Š*¬T¨B… *ÜÈè6w°¹×ªþm\a]cÝ~ÇhûöílÙ²…s–Ç«9ƒ¿å¯§:×Z¥™&ÝJŽ?“Wq:¯)Ìcµ×çæà­½n«±k%Ç¿Š3y §æ±’ëû×¼†3xÕTÇîM¼} Í«8#šÇkJÔ7¿Ø¹“íÛ·GÓlÙ²ÅÙšÐè´€>; ÏR¡Â͇u+Œ»ØÜ÷r^Ç®‚JØV²^¥J;6´gs*°0•íe÷•AQ%ìí·Ûôº^>“Ó°T˜n5çˆåS´ÚVfß—Å(ÛØöwV·2釢diŶ»hÀ¦ÞæÚɺÜoÓpeÞ®äØµäí_q»"ûcÇzðÅO… {?Ö\å¿FH[ôZ«ë4 #(®tˈ»­Ì|@ƒ±åÐy¼ãWrþ²Ë!_L‹•Š’Ø¶²sYÿ†ìXí¼h›WæÐ¶iQ$ Ê^ÿ2óiDÐZÍË”¡ÌºE‘0Z-oWÊ_áªÇ[»Ëg;bËe}Qv_… û ÖVe]¶õS:½ Ýf“v¿Çj´QL½•óbÞ<¶m¥Â'¶\&ÀåW&O»¯Å6¶Ñ\±pòÖ§A¨’6px•ýËyçðWitp Ùà‘¥Ñãr¡óŶۼŠÊZ¼•ó"Þâî”éqY-oõrHŒ—õzýTÎáþÊÝWdG¨|±eÓ £²|m²m4£Üðx!qÊ£ W§jö¼oá$^Ì›ƒ¼õ|W¡Âþˆ5FY¿éÖѯÞªóŒ £çòα*r-Þ>3êñö—©ÈCÇ•=ß›x °P:yö¬•0š¦BUòz:—Ý}ÓØ2ͤq1²=tn»¬q"çöL+„ì6›zûJ¹»'j x=/£Æb©{$d{ÑܳKcaº†Îã$j(-ÆŸÇ<;ì¹§á¬ý6¯œÞ\êËoC6W¨°¿aMßJ›Ï2æèӬש×ëÔÛá—2·oßð\~Ãìbð\v±ibù|žÇn6²‹M¼“糋Mìf#oç…ìf#»ÙÈÛxQ¾üNb ,°ó8™EfY`Ûi²À™e-™e‰ÞÀËYb†5ÎáÔ¼B:‹Óóå3xunó«9#¯¶Nç,j ˜a‰S9‡–˜a‰—ó†|¹Å6fYd–EšlY¶ÀÉœÇØÈnNâ-ùò‹xÛ¨$»yïÈ—ŸÏ;ÙÄ.6²›çqþÈ;»x.L,Àox.p¿qÓld7›ØÅó8?_Öù¿·çç{6°Û)öϲÈh²=/ãKi3Ëâ„Nåœ1¿Á0@¾zô€½ö³õÿ9œ:Êex½äÚÉu\d6¿¾ làMœ’/¿…“\ž¼ƒäËšWçó¼|Ùrò7Ào8 Ê[áêjx+öK¹¤Œm^Ê3,2›óv‰—·@”·3£g‰<Þêëâ­æƒå­ðGóJø&³œ<€ß¬Š·ú~Ñöhޞ›ØÀB^.)c‹mîýky+¢îÕêÅ3xõ„ÿåºhÞʵÞ.°7²%¿Öçq2 lãƒåÉÛyaÎ7á•ðÍ«?eù7PZ¬­)­êÍ´ ëkú¯´~»N{¾A§Ó ­ïؼ²¡4y+íù^14ÔiA^È œÀ‡Æö‡Z¬±–³™BëvÛ7mÚYïà|N,Ý÷Zç!ßém¡–mhî-K«VϵÅvûÉœG‡-cÛ¦‡¶mÛ=›õ¤Ã 3ŸeÌm^û½gŒ¼Š³(¸Ä*n+ˆBÁEò^b&ß.ieÙ³Ç;¯/¸ÌŽžáðމU!?X_Åà|[Éz­Ó¢³õ«}¾G|ªÏ£}YäôùdÒÛ=¡M± cí°~ Áã«Þn¹êIô8!¥Öù‰M:½Íó³>ˆ§z{™^&]†2Üõ|¥á=c+1ÎÀd/øI8£…‘墻Ï<ÞÄîËÕ¢Þ&]†gí²g›·^a‘4ètFËi‹^oØËÓ'¡ÓëùbEDŸn‚n§´A£Û¤Ûo¬AÕ¾‹µí1J[t²&õz€¤Ñ¡è:A #[é|ŠGs4—í³Ÿ iy‚D "HôdÅ‘‡Øyµø‘elžÁø'ƒŽW¾iƒŒFÙàb»öËTò6 ¼€wðV^˜gƒvÌV[É{¢È $OémR®"äßúïÓÅŸó© .x×B_§w½k¬¹ª·¬Ûü…³²ã¬Ì=ÞÄ[x+/Ìϯ¹ë­ÇD]ˆ³E¼µÂÈ»Eœõ®÷“éò!N˜óÂ/ïw=A¤mˆq×ò³L¯’.“7]Î1Íec¶„ü·ÿa(P²†<úѧ]ï’¬tØ)ëÒÜ6|æ¶Ÿ½¦GkÎë1JImõ:4:leÛò'o’­°mlÍÓ¹.ݾÊ3ú;è'éÈÖáoWæ¥÷)ëÒlöI;IBš&ôW9’³¯c͇ҒF‡^cíòó†Ò¤òy$Ÿeã" ¬ Òû¥2×y‡‘®m Òöy0Ô[äM5\Dƒ QÛ½òZ»u¹ŠE:ÈØíE‚HÖ%Ï᳋®°Š½:ÿ3ùùBsÏÖ2=HúÜž¿ÁçÜÁ{-bÂÈ»¶ZL‹o5w§á¬,{âà «ÂË·ñfFCi1wOÚò{~Òð†Òb¼…eÎêe;¿˜:ƒÑPšš”üŠÄ‡=Æ»çbœ-â®ÇÕiÒ£ø »îz~Ü›qà­Œîßù‹ÎÖ„F#¥.#ýôÓ­ íú×›ó@y6OÒé óè·©·Ûô;*ôE¯Çè£^c$bæhõ:¤@¿Ýf^÷#e]²F^k”g·K–6†çJex,¥ÕiÐlvé7dÛDJšÌ‘혇j0-ˆ½êËמذˡÖvhè!T ëütp±=Ez $/Àè|uë;lìºÍW—?$ŒBÉ ^å_$ˆlP±‚Ƈd»l›a)¯ÜCvÇlñ†Ò¼`cƒL¨U.ö–GvÙ–Á–'ÄY+d.³‚(ÄY{ý…Ã1C|µö”å¬H6[~ëÏwºÇÈú~%ܵbc‘YfXã®ÇY+ˆìdýã¬ÇÇgË${.ÏGž÷[¤›IÛ;è“ÂŽ>éæ–—ˆV¯ägh’t¹S&ÝLJ—ìGŒ¤-ò3% sti×ÛC¡ÕjAÖ¥›ïoÐõ5—„¥MÒ`k£I³ÞŽÜè„s É|FFZI£Ö½0Ò=F¶’ü));ÜJ)ÔÚÖë"rŒ?K¤ÓÛtpxôì±âÆn“ #¶Ï%|ŒÇ‡ÚlÀÑåžVéò]éz=E6¨èà"Áý/x?ïâÙûÅFIç½juÛàZ‰©@²~ñüv%Gò`¾ä…ǘ ²Â¨ˆ³Z@‰ÐÔ¢Hû¶,‡%ïçóNÞųÇ8«’b+Fž@²ÜÕ6ÁdQ(èñWóq@Çpãñî5­1˜HE–·1›Š8ìq6Öë)ÜÝÁ‘²#È[»¼·Âï*ƒ”Íi›ý>ôS\]4MÑ m ¯>íz6)­ÎÊäK’ÌÙäŽùŒlns%Š"Ø«…уø »™¬Àa²ÇHX–˜aV½ëE²½F6@†ìôDŒmU{Aåïy,3£¡4¯î™P%½ÂÈk…Ú YûZ }î%fxÏ`qt­ÄŸr=¼ XX´¡àbƒLhÈ¢Lë;ŒîÏ¿N öX±a¹DEœ•ü4‡ÅW‹‘Ç[™´(Ò“Ça¯`Å’Ø; oW"ŒBb^÷n^ÆÑ FoÚÞBÉIòЂSÒyþ³v–álŒ—ECÄ1Îþ!W²ÛáëJ…‘þÞܾòê~ÚhÐm¶¡Ñ ˆœ)zŒ4ä ;áˆ*…¬K»ŸÒj¤´zºÍm~/“A’Ì‘uûd éEêÓnC«×bG}Ýty(-ËæG¢©B{¥0ò‚LHYa$=EXlP±Á]òÔ­/hB…îXQ™`S$ŒlëÛö*„„QHx€ÿM"Y_‰Õ:/í[ÖžÓ "/@†lÖçö‚Z Ùm^pÑCz»øÄòÆúQsÁ›‡„A¨wS÷rj[Á„ÖcÁ56•E1 @àócol¾§§X€´Þ€¶Œ .úDo ¡(ØxÛÊ͵ðÖ÷¸ÛªŽ·¶YžNÃ[í#ÏÓðàé|°·B\ ò0…'}‡æã‹¶‡&í“Õ ,Wc¼-Ë©ë8¤Tºµªû*TØ[±nzŒBˆõ%|Ÿ–_£¯1ù;}3Ë­-i¤¢]"üCÆ2•…]i–AÞôEŠ÷1½Pë;$NÊTæ¶‚¶þо°_–OóÚþø ‹Š»^}V £ öra¤'/Èx-rOÙ  .ž€°Ðc‘8Ò•íJ‚Ì´ÃÖ>í]®˜ Ší÷„‘.z ~eŒìË™2¢)ôѼi†%¼ëoy }g…ëžóe¸kmñu%<Ö\fXÏË#O´‹d9ÆY9Ÿ¾´8 ñ4´lÅGw=ATÄÛP:¯~ ñ¶F*ìeo¥ÙçCvr›Â·’Jdš R&ÈØJ´lùCþe*Á$BIOz›,‡Žóæ±4e&O¬Õð8>á–Yû¬ ʈ¢Õ™—¼g>dù¿ùí±m2•ɯì仇­¿ÊòÕröIô¦C+å°Ç9`"­ÇO{”™îÏ×£¼ ݧ!Ÿy\õêŽ2Ó4¼ qégÜÎå¤ý°iq]¡Â¾Œ½¦ÇÈ«€nűÄò„TœºÂ^"þϨPp©1ùœ’„C°¥Ýªvt%ü¯Üï­4ŒÊVâÖÛZ”²{û4Äçâ[˜|¦I|nmù$ǰ+\B¢(äóiL躗 >±ãðë¼OÃú[ûÇÎC×*Ä[áµæªgSŒ¯Óp¸Æ€p5‡[c¼q6Ä]ôy÷fQÙ¬_ô5¹Šû²TR yõ‘·îÁÚ; OCâÅÍz}‘Y~›_²DüÊ*TØ_°n„QèË׺â‡pE$•M#•›ìÓóP@¿²XIÅáUî!¡¢ƒJ¬R^Mp±s[VíoŸ,[A$Çhu¹¬@òÊ^E~Q4MÏLL…|åùÛÛ®ý)ùË6Ë]Í÷2‚(æŸ2ðø«·{ü,ÃÛ• #Í¥P9õvIïù¶˜-áû'tO—EèzÅøâ­Mëíóò“óÆü¾øÙ ` £Ð—¯õÍ*Anñ_qKnÁ¯ÜÊÊV€^«»ÌdmX ¼J66Á7¸ŠûŽ4lñŠ×“ãÙ¥Ëi‰·Ï+„BAE¦Çpãñö„Ž !èË\Û2C^p±HŸ`lýèTs·ÆrŒÿèÕöÅx;­ òüBÌÿ5Ï%ùu+3YÎZž†„Lö>Z¥lR/h~Ê~í?¹V–·ržûòoùýV4Y_­Þõ›fòz‹4W–˜á¸·àWœµ\)‹J UØW±n„Q¶÷B/À¯¨uIoºÌËLÞ1‚Pú• ¨‚­1à›Üi†-ì6/o;×å•í:H{Ç„l/ zÛå<š]Æk`tÙ¦ 2zn·ë ëqe†EäïP™$ˆ‡„ÒJ¦PyË"d«>Ë% ,F-±Çcü-*†p[ê)£æ¬õ­œG÷Ùõ«¹÷„÷­ìòJ«C¼ké³’éüªg*TØß±î…‘ܬ^ETnàÎÌ‘¹B,ZböÅ«ä½õ¢JxŽðcŠ£P~Þy=›bó}1ìy˘•¡¢Š?t¼cbB$Ä!Ϧ™\2…¹v#åë¿Ë|á9<›÷b×,&hîJÀ¹s!O‹„QîZ[C÷C‘ý¿cÇĪ+Šê¡2\\é:W… û3Öý[iïæÝÅÑ`õŸÜ>?~žÄ †ÞúZV± Ø®ÛJüp®Ûw®ç`¾ŸwG~ ,öÖØžÐöùŒ¹V^¯G¯×b®»ÍíZ÷Â(v‹îâ€`ë(t¬ÞgçEic6†P¦r ;”fPã§Ü€[óËÒ•ÚJö…öÛm^™¼`w4WìñJ6ÖâŽ]wo_,­S~Qù¸Õ˜Íö|w½Õu-‡º\qw­q,—–ºÎ‚ë¸Gö¸Õò7–>4×Ó½ùöÄ>︘í1LSx<µó¢É¦û ¿U‚»å|ºïa8Œ³<ìÒ§¶™&×n“nÒý6õú6HSÒ¶Õë4Ï¿€f³M»¹Ü›Ñîãô™ãºY·™SovÉä˜Ñ¼Û6yôwÐORÒDʪzO².ͼì iš0ŸeaÛ»YžÇ„íù¶6rê {÷„=¡íi‹å©9’€¦[7ß1 ý$Ü~‹ÿ¥¦¾’[,¼ý6­wîX~« BE•ý78œûòM¾Ã! XÈ÷é/O‡ò ÓÚ\0ô9§ d¡ zG³›p@õì+ {mõ\ï»]4Ôæg1ËÎúð&ÀmøÞ=½²y6†|°³É=îê´ö¸'nÃN~1êå-ân(}ûUçÐo]<._ͽÇ>]éÙ´ZqP¦ ÕyeÖõ¤9[cÀ-ø˜:£ÆòßöásàF÷ïܹÓÙšÐh¤Ôwô!M‡:mКœ}Ú*È/#¥Õk¡û;²n“mlŠ¢L‘¶èõ>ÿBƒN¯1 þŸú7’NoxÎ~›z»M¿“ל£Õëýv›yÝW”uÉ=z­QžÝ.YÚ€lž$•^¥”V§A³Ù¥ßhmë“v:ˆ–K’9²ó@âÛ@F·Ù†V^î€>íz—¹VN:ôE³Ý§×ÈØÖµö²Æö„¶ë Ô§OÊVG­aú%ˆþ ^QE ‡ÑfFUœýªî!|‡k9”«9ŒûñÍÒ•ÎZÁ‡Øz(ÀØ/$ë4Þ×~Œÿ*!TùM#vb¦Ì$ç+sþ2(,bAÄ~ÙúS Q»_r q¥L@ ýîÅÞ¡éæ–—ˆV¯W"³Œ~?#ËšÔ»Ë[›MÆ†ÆÆÎ÷˜Œl¡KvƒµõqIÂ]ÚõöP˜µZuÉO™4ÈG§æ’ððZÒ`k£I³Þ$itÐzŒ¹„d>#3ù YŸ> ¶Ž©ÂŒùdy[’¦$Ýô[›'í…Éç¡VcOÈWcèÓn—ç“u#ŒBÐAÆ+_qKnÅM¢ŸRê¼bÿ+ :eá[ÉÚt6À蟉Úÿ•ý˜ƒ¸#?á6ìäç8!šjLþÞ£ŒE­m¡WÚ¼ár.å ÁàCL\xAa5ÁÆþ¢ÃLözþ†ß{ÐÕ³A®£ÇG·OÐǦ"ÊBŽ:Žæ×Mo—I‹–oqK,ŒqWÿ|Xòð~?ãýZçem“}Ö=ñö0®æä¬'мtÓ $dbÜÔâÆã­÷[~ÆäVüט­š¦ ëõ'²~P¤lNÛìè÷¡Ÿâê¢Ò=F N¼Ÿ"ëÒÜ[ Ÿý™Þæ¡P?µIiuVv†$™Ã‘(0Ÿ‘Ím^#»{{­ÑÇí6C‘bHβù‘H e–’ꢇ'`.[Þ–õûdéfRÏÞlí‰!ëÒ,E°—õÅ*Î (]AÔpßâ߸/_çþ<ˆ¯¬*À„KYA 0: ØsZ›¤—²zé¬Íº¢÷l•<™e‚QH…*ÜPp) î!^ ¨M/½l×~¼mÎ5üg3¬ÝÖç!.iÏͪa`Í[g(0Æ8[Fy×`º»c¹üVÌX_ü;s~ÄíùOný¾GûÕ³_òÒvz6ZÞ w5oC.ËW{në?±{24Y[ÿˆåÖš»zŸå®M³_#II“>ËcZ7!FA{ˆ”V¯A’u£‡$Ð\®K:wê;=ZéfÒv—~Ö I†½`´z¤@ÚÚA½Ù&éµHGC‚sÑ7Ï[4›uê’}«7zNH¶¥´ä$ko$kiOCñ•‘5ëùpcÒèL¼YWÛ¹sçž{…eؾ};[¶lá®N>ð*·þϹ-·ã§ÔðÓÑ+Àwæ‡ÔäÁED’_Åáü!W²‘Ý̰äÎgYÌ×7±+ŸK>²,imo»ÎÛ;Ì7èýuþ€–ØÀÂXtù’Ñ÷näDzRQꀩ}èÁVø!q£’´Øe¾À†‰ù"³ùún6²È,å“|„ãXd6ßfç»ØÄ3ìb“»=”FÖõù¬zYo³sOjñ*sX~É­ù~䭬ϰ”óöNühŒ³úÚn`®æ0ÀWÙÀ³,æœð8k¹«·Û4ÂÑÐvÉã)\ÄG8nâ|bÇÃø"_åcœ•2hþjÞÞÀÇ„kHÐÝš_æk[¿kÎZd9; Æòù3ÎUü 㪞k~…8«9: gCyëóëeËY)‹å®¾woä nÇOÇ8kEÝ—xH°~Üeg?¯Ÿ÷9ôÛÔ»I‰×Ý×{l¨-vÊ&ͬþnܤþXOö¬û¡4©Ä½éü$¯dVÙÞ#/½×â.Ûaš·×rèm6x˲àŽü$÷ìÛSSQQ¨e> Æ¥<¡°U®}¨a[Ý2]?¯×ÐrÂÐE“M'ë·ág¥ÒͲ8ÆóÐùeý¾À¿ò@·E=GÓrÖrw‰.¢1v­`ô8kùª×e9W&mŒ÷±ûè_x ËÛiz¼Þ£²œõzBרNºž³Ü‘é ~åå,‹+*Û¾„þŽ>iã&E7’ÆVóíø—¦Ûó4¶Þ4þXOö챡´±WWI—½,ßÀ'ZÞ²/ÖŸa‰‡Œ†©úlŽŠ¢P üoäxˆUª!!Эߢ Á"ãCG²_o³S(mÙž#k_¬×h@-ÿP`™^#Úç6xë±¶×S#Ë!>i>ÚùO¹ƒË[{üù]îÆw'ò µþÖþ²¼] gõô.rGÞzüÕœÕÜÓ¼ÔÛ(oCS,Øõ`¾²bq¯}&Ë!ΆđÇS·–^Ïæ“L?äw'¸hëÕxScúÆK… {#ö@QFw[Ÿ¹4YÅ_ž–!¢Ç „s=µQoŠN „±Ö÷JƒL,ÀÄ* "5–_KÖ=F‚EfÇZ„^ËOö Ø0f³ö™ö¡¶Ó›‡ZÊÒÂÖË^+\{Ô®÷8žÝ £Ëb+b¯L¡à"i¼ž#YßÙsKÏœøy‰ñ× u«ÜÚ<ü¿Ù8oC×–9ãnΆøEÖÏÿzú Oe‰åOhîþŸÍÓ½›^Ï…ÌÿC¹'ßáî\Ïp÷±ëj€ˆ  Ù)öXçqVsóŸÙÌ¢ÃÕ"Qä ¤¼káñw@-ÈYÍí—we>ü‚úÂwC×¾B…ýkÞc”u·ÑO·F_…ƒáÃÕ±IðæòÖÌ–KóŠ÷Ñ|ÊmI?„/çËGð¼|®É— làî\Ÿ·æûùrÂ|¾<ÇƶKËZ§ÿ=¾›/ʵù¹ãê|ù¾1aç3<œ/äÛáò¼ŒÇñÑ<¸<åòóyg¾¼…7æ><³ò²ÍiÀ0l§™_‹ xnP?ÈÓók÷1ž˜/ŠGçã <<Wrdίsÿ|ùî“/_Ç!ùòwù½ Z~ñvƒôXËÿjË[ñÚž/©N~m¿”k†%.áø|ùƒ<=´ïäù¹¯´ßÄŸ¯äµù²ø@yWÎU¹^ú:.1ÃQ|zìþ–ë~$WŽñV8&ü‘^ á­æÛ]É&x LðÖã¹ä³È,‡rm~ÞûpM¾|¾îÞ_àó¹`z4ŸÊË(÷é€Oçƒù²Ü×M–ë®Ó8;_>‡Sóå7²e¬>Þ~˜§æËºþù4GåËÿÈŸŒÕc²ü Žãpì:É—¯çî9¯B¼5æ*áTaÁÚ¾•¦ž¬g•ÏÉ[:ðÆ±íº•ôîɽ¸†osoã[ùí«[ß²n[áŸçÅ̰üæŒ~“f†å7~ìºÝ'•ŽÞ:VÖõ²žÍ|ŽGŒõ(èÞ/[Îù*÷Ó5ÜËm™ÆàõɼLëÛk…Û7dÞàb>ÀÓÆ¶é7n$xéív¿—ÖËËÚc{±¬í¡™kßxã:á÷¹6ÈÛåÞ’{ñÖöô„®ûx8ΧrÎHÍ!ÍÇw‹8¬·?“¿ã<Íåìcù$ŸáQc6Ç8[cÀŒ~{s5÷žÃÚw‡p×òû.w½#ÝÃWÄÙ‡ñE>Ç#¢œ)óÖel{ˆÏ1.k^zC“–»ºlú¾†ûp/®㮞ôò®Ã¸ÛÎ/ì»o¥U¨À¥eý>Y–©o14i2ù€i [Ö¶¢”ñ–·Nñ‚ŒÌžhÒyÄÚO!„ŽÐ•À Çñ >ÅŸ³ÈòN#9Êò K|#¸?_È[×± ãÙ\d» 2VHÄD†ž>Ä JÎŒåií°×ß–Ë»FzBü$×Ú󇆘aÉF’66q/®‡·Ún ý*{Hé¹À{ÖÄò>æ§,$×÷ò—,±ük™Û^N—æ¬ i{ÂY¹v!Þê^&Ü‹¸kEƒž>Ë#YtSÑTÄ[‹X}"¹ÊõÕ÷¸^Ö>ÑÜÕ¾¶å¿/Wéò®y… û;ÖT%ò¯¶µz+m#»ÇÖc= Òzµ•ŒJ2=šË¹‚£¹ŒÇðx>6!ˆBÓ4"©H Áxp‘JQÖ¥¢“€bK(Èìf£XÊ #Ïö0ÒÁ&Ôs 2áþ@^( ÀäÛg³ ß4ÓIûÅn×s¯¼!;‹Šõÿ78~“¨F!þ 샸ž¨_ oceÕ‚Æß&had¹«¯EŒ³!Q$鬽ú|zÙ6:¬ qÖãôZó6ÄYOÌ/±üL)“Ç]-Œl¹Cœ­ÄP… ãX÷ß1ÚÈî±i ùüëÜL8Év&ôv̶ë¿(¨¡(¨ØŠV¿K"8†Ëóm±7ÊØ{H ·É²ÞæMeöMÚÆÐÛ?KÌäÏh” 61xÁÆ›Boì„Þ౓åVlºŠÃ Ót~±ó‡8«§=Å[ã³x¯ëác¹€Ky‚ËÙwû£ >-ðÚß!ÞÚ{Árºˆ³Gñé _‹Èž–·1î½iæq¸ˆ¯Xàk<À­Gµ7‹Dq%¢*ìØcß1JÖâ³ ¶Ç–[);¨™ c[]¡á‰XëÛJ›¦Õ­+Ûr•V³nJO‘n%|”'²è)Ò•i¨õ-¾ µ¼=x­o¯Õ­ËU¦n§÷ò—,09TåUÀ¶2]Ý#a[Óbÿ,‹¹?­ßcÃÖ.ñ‰×ê>’/A¤§SCžãÉ Yc9û1žÈ“èFaŒ·Þµ—í!t>'²Ä ÷‰-»\wËY™[ÎJ¹ l˜ð•µÕöÙëPÄ]Ë7™œÇ¹Ci¡¡·µä­-ƒ½ºnМ ûÚ3mæŸA‰ÏÆi„Ïzý‰l… «Å^û¯4™ÿ ÀÃø5õüHH8X‘£Ïã&Hô¼Lp±óÐ6Jº¼ZPy>°•¦¶g‘٠ݼ ݯÆ'Ÿµñ„Q™Š:äÏ&º,Ö2— !¾ÕeÐBʳC˜üØ£öQÌfk§^Ÿ-ÁY;"åRŽÍó+#ÚC¼ñà‰ÃØõ²å‹¿BöXÎB˜·zYßöÜEÜq3ÆÙ¢á³˜ØÐåõü›ô5ö8º&r>- =Y?Ýs•ª°¯bÝ £MìšØ&†¼UË=K^‘]¯Qü « HE-o[ÁëÊIÖ±ÊÍ 3€§ñ!.äÉÇE\L}â9Ï9þ³<’Gñù6EAÐ"øVdBÏk<›÷ðž—§õ†%<{ôÙÅÇVØ ¨å>³"FæºÇ(V¹f^Ðõìƒá«ôÂç'|ë]‹ìÎ×CÂÜ»îyp;ö-$›ŸgKÑõ¾¾€wðž7ö<œ.ûÆzŠäœr¼-”[ Ï…ü°‹M¾–·Þõ>–K¹˜z»Ó ¡…FÈËá2œŸê2زéés<’Gð¹¨Ó£ öU¬{azø†¯+š£òt:h„‘L@NàC|˜§òažÊ_òÞ‰ ÎÐv„D‡®(µ x=‚6ðažÂ¢!A 2Ö¾˜@ ûX(Ûê¶Aæ<—Å-ó¨]T­m¶Œ ïêòËóEú!ÎZîjH½Îv¿µÛ+Ã4¼}ÏfIÑ¡{ƒŠz9=Îjê²xÉ "ëç2">ÄÛ's!2”Vä¿ ög¬adßp¡d‡ÒtùžÀ3xµ@±•°WA ´0’´¡õ¸¿gÁ 2²,•ßI¼€·ð"ŠþZdÏíå½a¤×ËÝ2 $IçïØ¼€©}¡ÿ–CÖ[ÎX)k³@‹y]†²ÜÈ‹’Æ “‡BˆqX«Ë,ÏMË[O…D‘ì·¶zëE¼-J–»ž**1®jd‡Í4gcü •Íú(ÆÛ‡+TØ_°n„Q1adÓØÊ4Vëõ—ð&ÎãdÞÂIœÂöèPF,oð`ÕÐo’ȱúXþrðɜǛy±k³g‡õ÷½—•#½¼Á`+Î¥5xÊ$ë/d$pètE$$€V\Þóyïž°Û"ÔcºÎ!ÎYaš ¤PyµØy9oȯ›øV =FE6Ç8 “¼VÅÊ"ËÞõ}oãͼ8ÈÙ˜h²Üõ*·÷ö´œ ݺÌïâDž£~xëù¯F*ìeÂ(ÔCiÊ }Œ¼þ¬÷é ,”…­àBÉž–ÿÕaKÞs*Wæ·òB^ÄÛxïæm¼`,ïi„‘ÝeÄ…^=/cQ^›Æ«ì­Ø©±üì….¡<=›bÛBe-òÕóy;Ó ¥ÙýEɦqÖã™Ç·P9<—³Èä½Ë=FE6 #ïájFïò¢ëæ]ûíœÂÅœ)Kž]š³!ATtŽÐ¾2s€òVÎs÷)a”ui6»d¤´z-Ò›Ù¤ {Ö½0:€ß¦Ñ¯< B¢!´M ¿o LÞ¹ô¶Xe ‚¢¯ÿ•Ià 2Ó"VqN[A—%¡~YµÕiVDÊŠ iñ&NàdÞH­@<•å€ål‘(‰qF—Ë{QÀæõ ^ …îBÄæØ=WFiü†¢ûm9ìú4¢IæEûŠ8“½zÛ4"½ŒÍE>a £~›z»@ÚêÑrTK¿]g”„©ÅMÒ Óæ6ØÚi°º?uVØ_±î…‘÷º¾—&$ b•°wŒ'ŒBËe[Þ²,•`Q2”v*çðZ^1UP±XkaÛ>Mð9³9“Ó‚ûCçŒíß²ùNHÊŽsy/å Ñ4±žÐ²ë¯àµœÃ©¼—s*gG9Z†¿!êô§sgrÚıÒËÊ{Þq¶,§§åí+x¯ånº".Å Löi_kñË£¬pñ¶ /÷¬0êÓnÏÓèôhÐ¥ÙlÓŸ=Ù|B£Óa•ÿe×¥¹-cŽ>ý ÒV‡¤Û¤›- ³¬Û¤ÙÍF¨sõ>1] ’±íkhk…uƒ}F Š„BQš ,”NËGWn¶âóŽýk^“/Ky §Y³’²­…0¬¶Å©÷Á«ò•§ ¡£¢c§Ý¾Òt¯ä,ìPšE™gç,¦å­wÌ4bÞÛ¦¯›†þùñ4çÓéÎ╜ÆÙ¼Œs9‹WÓNËé²¼µ÷[ìø•pi­y[´Ïî/ÃË=*Œ²Œù$‰ˆ”4é“ejQ‘õégsk+4²y’NÖ|›z{I§Go¾M½Û%K$½Æ(m¿M½Û§Ñ‚v³Ë\«G'e$°ú´›^o(è².Ím]ÒªwjŸÂ>'ŒV ý÷òþfð·¥Ò½ºö7SU6¯æo!neXKats£(°ìMXKÎÂÍÏÛ…5®Jb¼ÝÛ8½7ñvškúÄ þ£6Ÿ‘Ím ˆ„d.cÇ<Œ)ŠùŒ,™§[¯ÓH[ô¼ñ¶i¤#ñ•$Éò²ìŸèJÈ2˜Olµ§Î2æéÓ®×ÕÆ[Œ {7Ö½0ÒÏ·~^ ÀÙœJ¬T¶v&§q:gñ7ü-¯áô`º¿¼†i𷃿Wû[7?».É8‹Ó93WÕb,ó`ÚÊzšž4»íL^Å«8#š¦Èž• ×L¤VêÕ°~ £•\o+Œöo_Ã_ó*ΘÈ?$ŒVÚKã­}Æh­x{6§qg¦]Í0áJŽŸ–Ÿ¡í¯äµ£ú2œ~a´G~"›¶èÍedÉP¸dÝ&í~ê>‹´&Ⱥ4›}ÒNŽ Ÿmc(ÐBRG†ÔöIn~¬{aTÔ²öö¯æÙX2v¬ÿôÁYcùžQ{U𹙟1xõØü´Ú™ÑsK€Pã¯8'K¦¨\Þ:,˜i*¼Õž²Ïg½’³ò·›bÇ–9G™gk¦}x5Á©ÍV¦JƒÕ=ÿ¤…‘æ‹ÇY›Æ›‡x{gæož=zFì¼6?{ìù›²ë0ämˆ³¡£˜ )s­_ÎëX(à£Ç'û–Ø]–·eŸ[ͽp.-(xì`¥Í%$ó)ÉèY¢dÎI—$¦ÉŽ·­1ò%Èú}2RH7“á~íŠ IDAT¶»ô³‰>u’0—µéö{N¬U¸Ù±n„Q™/_—Ù_T1{ ddß©ƒsÆöŸY;mtÌä³C6ïÓkÖú™ƒa@:kp:§ÖΞ_ÿ—)do™òÉ·™Ú¼”“8iQV4„*ð2AÀ.ë³£L^EiÊÌc˱me yã7÷ŽÙ > *û5oϬɃîã½:[Þ gÁç­@÷rNc{L ­DÁtBaZŽzÛ¼eY·‚)tL(Í´÷VѶ˜_{T% sÙHlx–¨ß¦¾cóØðÙ\2…(RÃbÍzF«SplÒ 1W§YïWÓt$ÊRZ­Ô›uº*-¤´: šÍ:uµ½êAÚ·°n„QÙ/_[Èþ˜Pˆ‰¡˜0Zb†—–ßâxmíy÷à7Wµ³yí`ø@©Ì_V{ýÄùدo§Éɼ±ÐþXùaeÏd”BEAÅ[¯1à\^ÆËxýÄöµ±ïEÅZß:ÿØo4¼íE¶zóÏ缃ç¹ÛÞÎóÁFeæv[‡-4Ù>öáE€— ÎÍóòvÉ zž8‘镵³Pçm ^ÆëÇŽÓb¾Ì=VF<­µ0 qX/ŸÇÉ£Ï(øÜÑËŸ,w=ÛÊr¶Ìù½òyMæ/à#îÝLÂȈ´5z€™>íú6÷Z¤i‹ÖŽ:òOÒè ~.‹¤A'’ztÖŽÚç,'­=×Ü=ÙÑoSß1êÉrÎQaߺF!=Tö’åPp‰ #ùðšE¯«½+ˆÊT"ú<¯¨½–%fxýà¯xÃàå´jçÒæ¥l¡“Ÿ†½>KŽ­Ee´Ë¡7†b(#†d¹L›Ä·-Îð§7`òUæmÖ®2SȾP9Bþðl¸€ç@„·Þ°—^ŽqÕÛ.È};Ø–o[)ouº¿ªÃë¯ jãç¶¿y)c{¨¼Ý eãsÑuŠ]ï“8%&Ňþšz 1î®–³1aT$”d~>'"¼¼y„ãbcy#›Ó*I@¨ÜĘüžR5v¶¿`Ý £i{ŒŠPQÃÀuÊàMùú¹µõ•Z9VÃV(¡ó/1ÃKkoàÜÁËh^Šj[Þ±É+«ç˜¾Ç(\BA¥lE/vÕðÿA'âIÒèã§è¿vv*j¥‡ÊòKQ°ôã¬q6ÄÛvmëhÿòÏs-t÷òÕÓËj¯ç ƒ—pîàel©uò|ÊòVŸÃ+'À_ò^þŽgrÏå¼Ïõ_™£2s-|ô6;yÿ ý,×Úa·åQîî/ÇÙC6îqaä"#K6³Þú`Ö‹@«pÓcŸF¡J7´šäW§°,ж×NaÉ]¡ØŠ$”·ýÙä–Z‡íƒæØ±`$í;y>'rþXÞ9´6XÂðßSÓTxÓ•"¯Z¡"Áø(µ]¡)db)ÖËdÏçùÅ._±ÄÞJ++æcœõ„À[j/b0úz»Î§ˆ§öüg—˜áäÚyÓà”\½€·±hÒxÇÆîÉoí6½]£Œ(*âì_ò^GÄošºžÐsm¿õñj¹ªÏ?h²åîq<¨ß'­aT¡ÂúÂ^'Œô»Q‰"/¸Ä*yoÛ³ïÍ+ü·×žÏ‹¶®,eÙ«LBç¶ä…µ·ò6^Lö±Ç;ŸF™ŸnBùàbƒL¬²·‚Hæ^pÑÁÈú2$FŠ‚Œüâ%dBÃ"v>8²ñVæe&̓˜Ÿeq‚bèßgž­Þùdýŵ7óNàíƒrbíü gõ\ò £o‹„Qˆ·2÷8+ó2_Ù«=^èòxþõ>ŸL‡mZ]†"Ζåm%Œ*T€ÉÖ6±‹Mìb#»ÙÈî1¡ôxþ>ߦÓxÓØÀÂØú,‹c“Æ,‹cU(ˆÂd@ôžzÒ’¾kpâ˜Eïç/FV')]ßÍFv±ibýÑ\À'xÜÈC›Æö‡¶éül=y6…&]®%fx;/Ì—CÐ –âoÐì$gÓ˳,F­Ô܈qIsÑòo»x,ŸŒò¶ˆ«!îzÓ³ï!§_¼¼e¹kdKÌðf^2ñðóƒç^Ë•Piµè±¼–}ex[4i›dùƒ<Ýå«ðT/ë)ÄYÍÝPÃrÖã«­§d»åFŒ£ÙÍøx·²^F W¨°¯cÝ÷IëZ oÌàOÑCiE­l½¾È,2l³Ä ' .;neÛãmç!$ެ@:_^ëeówƒgrBíC ¨Ñà"G¶z­ði*°2Ï…Z•±³uÿ{?åPã9\À’zCF÷¾iß…Z¶ºÕnƒŒw~;×ËežñМ(jÿ_ÞÚžÎ"îz×}‘Yž2¸hâJQ(?ñ±lÕvÙe»/àmyO†æ¨'v½Þ®"Þ†zŒv³qâüÞ=Yt‡Øë}<=U ¹«¹hîE¶œµ6zç/Ë]›Æ®C¸©Æ€ÏòHd(-t_y¾­PaÃ^'Œ¼}¡ ¸´KÌðäAw"oûJµ¤•!4X®è¤2´xH éà!xFí}¼ð|xðTžTëæÁ&&Œ¦ 2E(`¤ò‚µTæ&¿íbóÐùеõ¼(ÈY[™o×ï¢ÈÛ2úÍïÍ=xoÅÖ˼edíÐvʺ”I—o‘Y>ÄÓ\±W`BB®H(yoü”}[-ôÖšåœì¿ßšx;H`½uf9;Ë">ø WÔŽë=~; žÊ‡£¼õ|7 oß˳Ƹ©¯«àòÁ1.O=¾†¸â-äm,O¯öí³Ïðç.;t=¹]–·^Q$îc¼-âîÏ׃\–),ÿ‹E_… û öÚ£ ,ðïÊ`Ô·”}–H·¶u~Ÿ­=2ouÛóèÖ&„Ÿ½èeÝKb{dú O½ 3^ñþyíS|zpŸü\ûÇ`ëÛ^ÓþØ#Yöì—¹mm{=(ÒËfŸËÐ-qiuË:@ƒ‹˜ŠX®“®€µÍE%\¼V¸^ž¶ç(Æ €ë¸µoe»½V¶§H8+ó‡ ¾˜ç£ýn¹k{ŠÄï1‘¤¹ª—-oŸÁûx?‘Û­9ytí2.øCj1ÎÚó¼žÎP‘.—×cby©ŸÇša‰?áó,ª#VÒè:Äóö¥¶ÍÚim.ÓËi…RÙž#ñÇ·¹'°àöyvW¨°¿bÝ #=ô`·ëÊÈV®R™‰@ÒÝáéàKy>: Ë~ü¼àª\¼ £ŸÀV…D_<Œ´¶c"ØxÉVÖwç?ø.¿ÇuÂÁ\?a£µß™{A‚®¾Ñyx‚H§ñ‚LHiX¿{Á¯H …‚ŠOv˜Ãóg“çg('Œ,g™Ë÷kÌ‚Dš»b³¦exkmž†·ÂÍ?­ýŸ<’ÏÁÕþ)ÈYÍݲÂHæÒÊâ½M¦AsVÒësXQ¯Ë¬}áù(Æ_OMË[O…„YQoí«PaÇ^1”¦'½ýüG´;9ô4ÁkÍ+™fXâc<€'Ó V.±–7ă‹®XaRåHÕ«þÐä€7d (;$V4üa‡ö¦ùž”ÿbn@ ‰J‹XÑ×Ë }m€ñ†*І0¼õƒù~”·O‹ÎûÁ—ØQKƒåX¾®…(’Iz9%ËÛþyðÐ gC|qV†ë¦åqì<Ú®⣼µމ¢²|õRYÞÆ8ãyæ÷ùž[ˆ–+V¾ ö%{Œ²~Ÿ~¶ƒ,S“ÍlNçH“›î‡ZÈhl`p£›Y·òd.ú·âÁƒ¯ð¥Ú‘,9­nÝš”m±Vw 6Ї*˜P€ù#þ‰æ¡\98’#j_kKï‚ímGö…PÔ¢¿ê4b¿ø*ÔC¤[ØKÌp,—0`wPÅŒgCÙ S¦õ]4¤V$6nàŽ x{'~ À¸òj½ðÌŠeËYë=t¶Äò7Ÿ4gÅV¹±žÇ^ ÅFÁ±L¾–/ÓCk_äŸ ,sNóÔÛf9 ‘dy\Ä íë òQ÷Þ ¨q$_b‰å";×uŠÌC÷s‘€ˆñ5ÆÛ"ŽÆ†3樆C"¹>*Xa”õév»tû™Ÿºß§?úb’6h4¤c)£ÛlÒ•ÃÓ½VºJý¡4“ÉFöÆ?|pU~¼?’N* A™@X$’ŠZ^60êá‰׾̕ƒ#Éç6BC6  ¼ ã•ÃZjýªÓèüô~±K| 2ž€ôì ÙšŠ†%biZaâ‚.ƒäo´œµ¾½ß`øÂÁWk`É!O­ÄÎB\òí‚<ÃkߘHFúx-æe®{”B<ÐÜZbùY,I/"^o‹‰zÉÓ ¸Ø}mQtŸ•GE\ #}}~m_%Œ*TF}ÚÍ6} ISÒÍ›Içæ&˜Ÿï³cGŸ~¿K»ŸÑêµé“u·ÑkÑ뤈Hj÷{¬Fé#dnÏòî0\$.úد×þ€Gé CP6Àx"!6yAÆN_"åA|…#j_ãëƒûsÕàpî]»zLYA¤ƒ € 2Öºœ¡ò†„‘דT&¸Ôp)Çr<½``)SAÇŒ+ 61aâL·a'?çÀ {µ˜Ÿ„8+óC׿Ç{b^÷r^Σ9š+8–K¹˜zT yç*Ã]'fôôÀÚ¿ðÕÁƒò´º—Óó¶ÍëöÜÈO¹7r·ágcöé£oů¶á£ý=ÃR~Þ¯ñÄWƸ*çõYήFY¯VÔkÞ߉óîà #Ë ög(a4G£Ó¡U0L–$ iÚ ËÆ{–’F‡ÞòišÐÏ2L·ÒT°"E0Ã?åvÀÒD…´Ääשï=øöX>E“M[dÛ4P£Ç“x—æŸ\“}2ý!Wæ¡MkLQ+Vªø¬øÑÁ_ü  Öî"±3 Æãù¨·Òì~m—…Ç ;—åi&¯u]vÒçÞÉ­Áá†æ¤øY'û-w¾U;Ì}Ä–3ä—²˜&0Æ®ó€Z.è¿5¸÷¬}{"­æ¬pYoÏãÙ¨ýèqW‹Xæ²î¹ŸßŸe@ø›Z!®Oë·²œµiV2iNßÈí©nÛóOSŽ öU¨‡¯’)ŸJ’„ð}ºÝ9 ?ÅöíÛ£“à@~‘?Px ¿È·ß–Ÿç­¤;ðÓ¼u~”o¿ß›x0õßj÷áøfžþH®Ì+?åÿºæ)\”oïΗ_›ó4§qv~ÌÙœ–/¿™—à ç=<Û­ä/ã1yýy‘‰¯ðàå€1:äÛƒ{s‡äÛ¿ÏÁùò¸KþøåO¹CÞR,2Ë/80Oã-/1ÃϹm¾ýFÊóÿ!¿›çù=î–§¹–CóíßäòôWrd¾ü9™/’ÇæËÓÈ}ònž“ûæ‚ÏçAâ!|9çÀá\•/ß“ïäËóýœ?«Y9ˆóí·åçyKÝrÕ>ì?÷ãgyzÉg–EîÂòíwã{̰Ä!ƒëÆŽ=‚oä¶iûu¹4oµNä]9¯OáMù²øàNÍ—Åÿj¼—gMðV®£ðö <ܽî:ýµšsæ{ÜmŒ·²|#åi<ÞAÿœÛºùÈ}aï—ïpÏ|ù*Ï—¿ÌCòåÏóˆ¼ìrŸ¨Ñåɹ?Þós[ßÈò× u=p*çä> oΗu}Òàâ|ù1\–óöá|!¿¾R_Ͱ4Vʵù²ðg–EîÌ ùv©'gYÌëOËÕ2r«B…}µ;w:MÊ>íz›ù‰çˆú´ë;ج†Ï|ôi×»$]TˆíÛ·³eË6xg`( nɯø/nÀoóßü‚ßk}Úç™å®ƒåž­kj÷b‰ØW~»Ù81_d–£þz¡Ë“Xd6ß¾‹My¥k·ÉÜÛ¾ÄL¾~Oàq|<ß'ÇÈÛ2Wr$GðµÜÖ«‡p·Úwó2{oÐØÖøñ;üþ'÷ƒ®àB­SÛƒ"szyÃèû(v¾‘ÝóY¹œc8–K˜a‰MìÊç³,æid=´ÝÛ›k;ô²¶¹Æ _/Józonɯø·˜àísË\,èkân2˜à;µC‚œ®ÈúŸñY.áØ jþqÕÛ¾›tþúã1|bŒ³ö[ØÀ5ƒûp÷Ú䜕rjΊð‘uËÛ5þ—ÿÃ-Fþ õ´„8+ëvøI®÷ÕÆ|Í室Õ\q6ÄáXÚÐ\Þ8 q¶ìÚmØÉ/ø`Q½‘ãw¾#¯Ÿ+TØýŽQÖïÒî÷I[[i•˺4›}ÒUˆ" Ý HËæ¿¹%Òõ Å9_W»ò·2ÝЂкÞfáµ®bÛô$á¾6&x~¿v-× áúÁÝIjߟD!a$ÐAÙÂV”¶{=ô\‚ ûHÞz^#üÏ1|’»Æl,j‘Æ|^æzê iEޤ±}E¨ƀ_s0þk X~(Ú–ÙãÁ]?;Næ–¿¯ã•»Ìõ´~ Á^EOä£ì2\õ8l{¾;ø=îZûÞGCœñVçiË ø¡í:¿ûrKćҬ}ÖÖ"k{ìzŒ¯![ÞzÛeþK~;”f}Qd»FõÙ û*"Â(!I!ëgôÛMêIJkëæxnY—f3£Ñëô(•ÇŒ`ä†ÖÁ–Ÿ-Ò•óÜà\_;yW úpb¢§H yU¦¡ý±I„lpWî\ûáDPñ‚Ìoñ¿üš[ðknÁ&~3Qù‰½@*ûäÜ"„ô²øÏ¶PÀ+ .Eˆ]§iLL±£¯¯@s³H ¾W»ëسEž Ò¶ŽåR>Âq…þ)ƒPð÷øi¯÷3Ü£vÿoðûÀä˜1ÞV+Œ4Oåþ××Êv»›¬?¦goþÆxâ¨ÇWë')sYTb¨Â¾ŠÈçh´:tZ£¡´lù­µúÝ.}Úõ:õÑÔì^ý/ †Foò[ò«ÂÀgó)3Iz{ìZÀ 2z»ž¾ÁAäàÚõyÙ–· 2:ÄÒØ€VÔU&È…¦Ë9ÆõE(øÄàúØu6…Zå¡à³IýÁ<ÄA›žî4~÷h¾ö»SñµÆ€+8*è›2.ãÍÙØuóò˜$Qy=M:=Ÿ——Çoo¿åí¿qßÂ2x6¬¦åho½å[ñ?…|žæZV¨°¯¢ð— IÚ •¦ôÛÛh÷ã"'mõÔ[ikƒXѯ9€~ë°Æ€; ~ ÀkwŽ¾Ñ£óÔÛ,BAiZ\Ìð­¾Çò÷,F* ûñM–"ñ ƒ;sûÚn  KØ Þ–wÀrÏ™ ´-Þ¶XEªÓ>šË]ùy˜¦2¶×eµÁfšIÎ³È 2”6;šïfà¿•f{4lY¦=¿-{Y„üì]Ÿ˜pð¦¤ö}²Á]ÇÒ‰iA¨ÇHÊ7 6VOH:í—2<½7W30ù„Ž[ bõHѵ\ ŸÅ-¢œÑ÷|… û3=FéØ÷‰ !muèuZ4҄ɯí9Ä*2"”ÞÛn·}’á1ë|$dì¹,b¾—Ö.{•ó]j?ˆæ;çôÕi¹¼½sxë±tk‰PÅ¿fšÉÚS4Ýn0üfÏkEó å}SÀã©,{¼µøÉàŽéÊr¶è˜µàm,ç Ïf±käñEo¿©¦²~«Pa_†ê1ÊÈúóÌl^«§‡¦ƒ­4Ô8€]ÿŸ½3³¤¨Òþ/«ºuTvTì«"ㆊ.·—Ñq´½¢€ ЍÈR”ì«ì E±‹( ŠE«€(èè7ãˆ}UÄÑQq¹ "ê(Ý]7¿?n¬“瞈Œ[KÓÐù>O>‘™y"âÍ8oFdFr?‹ÜýÚÁt ¿ðº†·=_9”±5[q‹ë(wç›°avOß±Þ¹í±^œÎ³¶IÊ\ŸS7¤:>äõú lÇ\[]8 ˆ ƒðâªS,^"/zúô>[Ž¡ó j[è8kÿ\ò9$ˆô>ëP7ÏnçwùãûöÙóHÜ0«™d]†ÉèÿC—£åªgK‡Ê3ØŠ[Ük„l•ËLãD(MŒzy8ÿà~õñß+¯5Öe(a´‚‰±ø;D=ôz“ÖÔßÒbÃJöíÕŸwŽ4W¨jdªö÷¾’ññ˜ìÜ‘?¶8OÌÁT]7Ô0V5˜©¨'Ö^Ë ÈPÚl3=ÇLÄŠ]—Áï:Úq[ǾAÞ›§ë®lã ˜Ÿi¾f‹OóV ÷EšÌÌáUܸ;ß„ ²?õ§ÏeáÛš1Ñbë@ãiü¦¾xa¶û«â]ŠòÒ z_Kú¢Èr²Fu噯GG™þî¬ÃÄX›æhˈ Åkt(M ·«¼"ràëç÷pw¶‘ú¯ùƒ) Õ½ù†<*»/9½w5Õ;ö@#%ŸóYžpŸkè_ƒ\9õ>ÛÚ‚Çf¿çùôÜdsÙry¾êf®95‘œrL-ŒjÔ( £fy&ëåtzÿM[†è91bÐOƒ‹XÅý,šÕÜ|6³m ̳ûºö56ÍîäùfŵìpAÌ®˜°\øÛÎÙPšÅl뻪g¡ ^Qøú9Êÿ ÀŸ² Ô\ÙÕÇ®i\ÍÎÑz¤¼f+CË3ÅÏxzô~›‰]‚Aò™ÂßA{ps2ÆýÅ«:~¶£Fu•_¥­)Ø91D(MߨåÆ&'s‡ÒÄÁÜ“mXzÏþï Ï:ä4¯_ÏÕLvY ¥ÅÞ/ÑûBÎ=6Dn´ë¡s„ì’p®†Òl½††dªœFìxÏiØa0.š­þû.U׫J—й8‡†J‹½«ë¡Ao¾!ëg÷ùâ ùæÎuìºå°z¶=[‘>iïœÞ5ç¡v*Ä;”hŽ ¥…ŠæŠ#5j<Ø™Çh퀽Y=Gè5üU¡Ê! ®eZ\µ1„”.ì˜c -‚³Þ”÷åëƒÞ‹¬=[‡*ϺVª}v,Ïó‰˜à­âFˆO¡sT‰™W™Oÿª%t½”ëÆŽ›kT‰"½ã”=GH¼Ä¸ÚWÅÇP:ïú±|y6z¨ª—XÝyíUèø*Û—²Ô¨ñP‡ê1j362¡¾JëÐÚ##}ïµÆ«þ•6w ˜œÞWiçaŶv03½ÙmÃá];f_¡F3Ö ÿˆ­y&?®´Þ»†=Ÿ7[pÈFo Íœ³)æ¬n`;v䚨#©²7†ª†?%—Þ›9ÝbV]Ýé IDAT“¬V?A ]ÃÎð|O¶¡{Í»C¶Ì.cw–rËØ™¹s7e‘^£?çðèìÏÅ,ÔÞySÖwïýËOyFq¿éó{œÖÝÛbí™â‚—NŸß Áß‹ö¦Û³¯Fuå¡´NO ÅãÖì«×^C"Nþÿx89ý‚åžlÃèĉƒ.žM¡}©H[óbn’ 7ÉþÈ]ù¦Ü—¯_¼„-ç‡cg`¶¶xv„fwT$yyÝŽ/«Ü|‡œ`RœÄLýÛ}-(;—œÞ°Å* §zéV²Ð¨3ÇóƒÌ"Ê—`®ä2vM*?¯ìmùïÌg™dv¢(TǺŒ-g=á”z}oF|/ÝVÜ‚÷/±X^g‚Pûâî í”æ¥žì6#ço<‚œ¼O oõñ5j¬ËP¨Éè²¹ž·zöèšÑ¾³w‹$MÕôÿƒ42sÓ 5ÀÒ€K£å5öÞlÉÖ¹ØÿÉIϾ˜]Ö¡„þÛTå|Bר*/!10ˆƒ±¿”ò±ŽE϶ʇ.G =s³½¶ 'æ«·’òß9€Ï±;sueYy¨ª“Ù,ºlu¯‘~×HÒ†xí‰üÿªÂª%”者u|ˆ·Pþi³÷ïB±M $o™I›WÿD¶ÆCJu´™› ÝIü·Yg*ýüØU äôr2þ‰ÿëÛw¶QÐiÈñÞ¹cSÈ–THãt){ÐâJ7mŒ¿Ïó’޼kôç|ƒhCn¯UåªFì|:NðE^LW…X=„¸bë3T÷Þºw½XºõXµC–Gçé³;fKèÚÞ9ª0|–7ù$ë:.Æïvy8ÿÀýŠ¿9;È"8ðÀ‹¥F‡ÊCi+&™ Ñh²x14–,™zǨÃòåX±bZ<5ZŒÎ³±£ûx]²bÞ"Ùû1e臩±†`‚7Ñâ*ÞÆ'ù8{¥†'¼}Þ"O|ÏçfºÎ0€}2„rú¿œÝom Ù–òSUï˜ØßÀ_Çu ~¶ª¯C¨Ì=§bÍ‹Œ¼Ä(?u{e!e§ãr²¾<ü/•p訂ބŽý?ó ñØËÇa¯lBeæÁÖGFÎYV ¥…†¨B|°u˜“±YvwæáÞ|C6ÈþT”§g—œc¶=FÞzFγù!C‰ƒð^ù„âBån9a÷…ø+ë0Ý>z½œÖÞ{YŸ®á¬Î‹®›5Öe”†ÒZãËhvÚLœ9A»Ó¦Óv»¿O¨ÑhÒ:¨E³1ÿó_wâ‘L¿‡1ÉpqóZÑôÇl“b¿„Uâ(ä„bNF#µ!±&&ЬsÑA?¹¶¾¾8™?å±avOÉÉètÃjv_k—¶/e8"´¤8Ë“ 9—*ç^íÎÊNÆŽðÊAÛ#ejó*K9¯å¬Î‹ìל £Ôaa[nUBHCìÿ({—â<¾jGkßióDºÍ»@x)y²ixj¢){k—^OF–ǃð¶J y°åàq7$Ü3¦‡½0#g’a׿Pýi[myר±®¢o£F£ÉèxN§×CÔûRm1‹7XZ¨„IõuOï‰gºÙˆ?q—Ò¦:•Ù8™*±A^œXà9—›Ù†ð’“‘ÆKIY·×ÕNÆÚh{Œ¼ÒÚè ¡*q䥕s^Ǽaêç¼)â¢JÅz…1a$ç–²²e£ëËÚ¿>÷ñg]\G‹yI-ÿò»3ÛÔåah{QoË*U yu±;Ÿ`9ËxS_½‰5rŒÞ #ïwç›°IöÇ¢|­r®a5f g=Aä-?à¹ÅýVuŽ˜À°¶é|Ûõ°äò9â¬D¶¼¤<7ãÜÅÆ®í:]ë:¢<6 h4ÖØÑ[ÁíyïkWÍm]W²O‡)õ2ˆQT%êS‹ÎÎVÌKhÏ+qà1SKµ0ªQ#†µfæëÐ/A¬0²O¾vŸ6såd^£¦COdÀôÄÛ¸´hœfê\¤±³N!'cqÖaEÞ“²"V$›qwòþÄFlÊÅy3FvñöyiCªÜSHì bOÝ^}êr¯r†zÛ £Çæwp{¶¹+æ-wg2,¬Ež.¯Xâ®Ç Ë‹‡µ˜×ÂÔrMpGþX—ý®t_LM ç²emm;,ç侨õ!qâp ¬h ñVÊJ—øœÕ£F)÷[-ŒjÔX‹„Qè— «•‰².·õâüv~›5ŠOc=Fâlf"’>Áî¼OòN.æÞSØ öÄà9íHtc ÓOÄm–°„ovh‡ EmüÃæùP#Ök$ëV˜YadŒHÞºw5;ÓâÊ ƒ©r6V¬V9•ØÓwŠsÑNZ—…'&Çø=-®cy«ãµí!a”"ò­ ²×²q)œõx{%»õæ !ÝërÌú|’þIÙ¯øu¾Pæ­†pvú5´-ÿg«„QFÎM¼ˆ%|#(üíybœõ¸›*ŠlF^Û2ÑûžÈoù-¢Œ<{kaT£ÆZ$ŒB #›F7ÚAxÂHo"޶ Á{š´5ø=D/çktU.Ç˵åÜ:Ÿ9OÎ~Émù–¬È<1ûµk§v.Ú6k·ç\¼^ ¤—7² J‹=}ÛmëÜSœŠ'ÀD!çÒe¨d§œ×sŠó¸©7ó:,fRÙúÄü·ü*{R!/­Ý!Q?ho‘Ϋ-+o9 ù¸€}xEúßʧ/%µ˜·=DºçM/¶ü†èöÝ_ XíÚ*œµÜõêÁã®]·h ßH(åj‘ä‰"[^¤ˆy}ŸÑe’áâzZðHÝSw[0ànˆ5j¬‹£6c­Íò#ÂÂhËü¶R¼ç­@²ÂHÒÙ}žÃ±Î$EÙu½-OÜ1ä "-Œ¤aÔO…1'£1ˆ0²NÆöIhŸÂgë\RLh±NE—·uN6”²Õõ“â={cb>&èïí+»t^lï^÷BÍEý¤&²´Ü}jö3þ7¿Î·`Ëì}6ÎVyœµÜMálŒ ¡2´e­ù¦{Ùt‘„ú9§õºM°‚ȶ1U¼­…Q‘£N{‚‰öРÑlÒj5×ÈçùU=F·fOgµqˆ!çâ…iχӕ\ß.Ö.˜n„Îeÿ"nAô^ëøjq.I£Q+ˆ$|FönÍ·â—ù?óÔìg}¶yÎņUNF;‹ÐðDÈÙ\E‹]¹Ìu4ÚžH "í\tï„vÈúœâÌʼnëúÒOÚ!ç’‘ó~QØ'à©ùÏûâ­Í7­@Òë!Q$ËÅìÅ;øX©¬B°u¯ã¥~.cwvå²$A¤¶œÇ–¥æ¬AÖÖ_³E±Ï³YÛF¡;ü뼜WñÕ>.§ $¯ìtþ=®¦"}¾Ø°¯.wOÔoÅ­ÜÊÓû¸«ÏQ £5‚¨Éèø8íöm:ící©‰›­5*’V±°X×NÆÆÅž¾c=G1§¢l}Ýý8³8 ÒÉØòÝ|ˆÕ”‡  _I£öï|‰|ê½ ÛpÉS{¨·AÛ¶Unœg³CÎ/õé;&ÞÂå ±ºÏÑÄœL• ’²Óq!$elŸ¶õ>-tþ«žºÂ3ØŠ[iþjÛœ=Óó²Ø BÂ(&ð=ÞzbÞã€å­{p úKɘ ’}¶×ΊTmï³³ò£|k~–?­²[x?áV¶*ì qWÛã¬ó:|5_™j ú‡ƒ«R•8ÒðÚ+~‘æ’«9ë "9óyvÑ,vêPŸ»FuáwŒ šQš-€í±3kwè´'¦DRƒæè8£Íù5P÷‰“yNþC¾—=—U¦‘ ¤XQìÅlít>Ä»yá^# ûT¦Xv.Ú¹K¾bii[j{ŠäXÏÉØò±å¦¡…½Ž³uªËgužc= Ueç!Ä[óVi±)i5gµò@µq#³¶ÇÓr34´æ3W¼è¼HùØ6ABÎönj{uØ2 Õyë2¢/_wÚ´—·™hOÿ?­÷«¬hwhOLÐi¶æuž£­ù7óüB žÇ÷ù/pϹxÂ'öþ‘>F7ÐUOV^ã#WÕ½Ð??‘¼—ñyväu\WrÒ¶gÄ{ê–å…Ù·¹)ï•}ʶ۞#´âÁsZèèí*'s»óv>6cG£ë!äd¤¼´s‘cBÎÇBU=E¶ì^Àw‹méÑÜ&¿€›²m {¶‡B³š»±Å–UÚš3§~ö³ç0©ÄãÇÙ«¨7]fºLå!Îêu»‚äÏåÙwúìÔÜ ÓPo§W¯ÂÕ/±-¯ãº‡Ò抷Véw±4=ÎZQïÙô¾Å·xQQ&–·bW*êŸÈÖx¨"øòõØÒ±â±F“f«E«ô&v›±¥ËYkdHyÊnæß`yÖ$'c5á™õvhx¢Ê¹X%°×ØFñLõ79ýgE–mØs2vâsä¬. =h»B‚ȳëæ|^’MÿÞ%Eéu½¤8™ªž¢=ù8CFTÙuÏ6¯ìuÝH9i§¢‹WÞ9i/[k‡Fßäż„o°’E%Û…Ç¡|Ä’嬿nLøŸÏ{Ù— 8€sã —!.HyJþßÉGȧêÓórŒ-ÍS)ëw—dß`yþR—§6.$Œ<ÎJ|ˆ³;p-zx׊{×1Aã­ÞA£…‘>:ÎæQÒé^#©ï!ºÜÈKÝ¡4½>ˆ0ªÅP‡*"CiMZ­ÍfhæëÅ´F[óeWfâ`bNÆ ½„þY¥QÎ䃼?h¯m$à,ä“gq ’ÊO’'ið¤ÔRÒXÑ&¡ØûòìküOþ  çP^Æÿðu^ηx ÿÂ×ûoÏá‡K7Ü»âõyÂÉD!G#ùŠÕ¹”—u¶¬µªzÚ¶½öü:´XÅB^ž€¯e/gUBBÜÕÂ($ä=¤yë9g¯þõ¶óö^°N5Æ]OYÎês/beŸ §¦yð섳–‡UÜ õ"écC\°÷¶„RFö8+極`ŠÝeÎÞÉ ü˜ÿ`SŽc+þÕ¹·´m5j¬Ëˆ¼|½˜öX›…0j36Ò¡5.Cg sø~QhækÁ*òêüÿ•¶ÿ¯òe^ÌldÙWõ…šÞwp g»×´°Od⌭c ¢ Þ<õ †²Íö<1a¤aÌ"VFíMq21¤‡u2óNöáB7­'Šôºv!Qä "j!¤ øOÛ:¬F¯¦ÌS½)1ÎZ1䉥ØPšwM ]f§sh_¼pîBÞÃ>\Xâ¬å®Ø¥{Š¼Þ¡gs2þ-ûO¾’¿†ÿÉ_Á«²¯–l­â­¶{Î~†¥¥IG-g=~[¡åq׫oÉ·î=Óœõ¸+=s1a¤í„g¿ÎéòïÀ—ùgoîá_ØÌ-¿ZÕ¨é1j0Önª  3ÁÈXƒeóðÆuhækî1úb¶+/°}Ñ©î5:Æ’ÓÎÄ:ݘëkZXÇ ÓC:”ÆNÎ%¡4l»r9«]Q'icÎE¶·Ë¾Èõùö|5ÿ7¶Í®/lòž¼Å~†~¯AöBû.Ò>\u,Ö]6¶¼¬ òl”sÉ9´Mz¨ÈHö<ºL¬VÌk»íºænL YnzBÉö. æ NåÐ(wïçƒtÉKœ}/ç“3ýΑ®íÜ%LDž˜×¶Y!”ÂÛw!ÌÙ·p9ÙÔPZLU‰"¯,u™Ä¹{7_àJ~ÇÞ¼ȸóù‹Ù‘IDåóýޝñ8þ……ÊöÀÏy"ÿàç,âI¦ m›U£ÆºŠà;FËÛ Zã£LK &£ã-FF–Ó¦É<ŒÖûä ~×þ És.¡a7ïé[‡§r8‡p“Êáêã­ˆÒ ¨4¬¡§n›?¯,¬}úýŒAž¼õº'R’7ŒR³°]—ƒ8p+Xä+ŒôzÈÉyù·åã•ÀµìÀŽ|€k²Yiê"…³jA1W%<ƒQÞÏX_Æ¡”IÎô„Ž"€tyhgñúÞIó;f×pmþznÈ·C›©ykËÜ«Ÿg%Œ‰ O…ø\Å]{¯K9L· Û±%ïå×L²¿á&žÏ»§fvš¾î¯8¯O½É¦±˜ƒx KŠü÷þ 0ÉBV°˜Ûù ÙÜ)ÃZÕ¨z”ìÃbú¦*j4X<¯æ„±cÞs0ŸÍvžšid˜¸¦ôâ´ÄëmƆb‹Ms:p§¯Á5ÖžP¢Ë'Ø£/Þ~å¥C½Ø}‚Ïç;ëö˜Ð¢Ï³%¶Ø¼~ˆ÷Ÿ¶­cñœŒ $ŠuÝ¥.š?¶lšØ"°ë¡sÇ8›òÕY*Ÿ½²‹Áãë¹ìïÖiÈÍw=þÊâ!ÄÍT‡lø$o æ%ÞBÌ_{Ë?ó|nã;d|‡Û؆';|Þ‚}ÙO²—±+—ó.ç-\ÁKyQ‰SrÜ0;s5Óÿ”ôK©:—µpªñÐG Çh1F›±‘1Z­%½wŠ:–·'h7Z¬¹W®û¡‡#®àͬÄï ÝС'XOÅBAJ£aŸVu:ý)¡¤é}´ÚÍ‹—ÏP9¼9»‚+ó]JvÙ#±Õ®{‚%õ)<ô4½çDŸ¾«ž¼íº×SdËU?­Ëõ<[Cy …v]°s~5Wf­ÒK×Ún[z}&œ qX_ûpNå$Žè³7#çDŽžJs2]UFrüŒ#Ciºlä:v;•³Öƾ{)§è5š ÞB?gßÁGA ¥yÜMI^Þt¯› sžÊsù7óÏÀ–¼@ýØgÚæ_r!ÿÅM}W{"ûñ2^\ØÒë1ZÍB>Í.¬äÇü– yÃT)Z{káS£FP5hÔ¢=2ÁÄX»?>¿óÅðÉl·¾á¨v2:.E,ÙÅ‹Aš“8 è9˜œò—hÚI[Ç­íc¬žS •ƒ-# ÏÁè<„œM•P²Î§Ê‘¤ "//!a$å©{F^JgcHÙu[6Þ¶†¼—Â[ CÂÁ㬄–³:¾Ë§r(‡qZéœ!„òâ¬Ç]m_•0òB€Ý²OrY¾{ɶ*a¤·SD’ÇY cœÕi<…8k¯¤\·æ%\Ï—€]yÎÔdeÛžÂ;y {ò°ªÈã–lôy%Ï~Ç V°5›±¨HãÙV£ÆºŒÈçú-Æ—µè´ÛSÿ _Lóú£ìÔýkÌ;¹˜òŽRÜ ÎÆîK]NâŽädŽâ$ŽŸzÊö Gh‡rr"„$<—ýyçVÚ §‹0c¯ìb>–¿£ˆ«F¡õTg#y²ñ½ ßÏKiª’uº,lOœíéÐÇÆl«ÊgUY\œíU*eOÔyv†êØrfPÞ†®pÇ”òdÑ]>È!S/eûœµb>UU•‹Æ ÂH¯‡x+Û°/ïã\w¿'š$ŒqVû'½üõÎý4žÃÏMK}Æöý®Ø=(x.¯æ[|‚=Ø‚wó··È³±FuÑ™¯ÍæÖCda…Ѽ§h"çÂá ºÂñ[¬ëUôÑã]ç@ÆA5‹¡üÄòÚ†4ad·C"!ÕùÈúÁœN¦œŠMëSçEÄ‘NÚ4P~ÁUÎ)óÄ "ˆ¼íP”¿¦ôê Š«Ua*g¥\NäHŽâ$ŽæD> „ÆQœä®Ø9”SÉ™ž³'voÄx[§·ß}ˆ ó÷q)ÂÈÆ¥¥8‹lê/vv GcâÈòú[SNóMnài¼_õ…¸ãkoýiìÅSÙKÙS £5 £ö#t:vG“Ñe£á¯ÒÚc,~kŽ.›³©íïŠ aÒ@§6òÇs4ÇpÇpÇ)1$8šãòdŽÞú aj^-r2öÏÎæâ_¥Å⫎^¤!‰)/v;öô S÷…¶«âCÃhUù±ñUqƒˆ(à¸`^„«3½vJ^¼íP|ª0 åŮϔ+1¾y×öÄ‘ÄÙsÿ˜ŸñleSrVh[U¾cñó.ŒæÉ?Ô¨1—|•Öa¢E  ½ÄN×fll­ñe,o±blú·"³Åý¬W,+YÄJq gë+YÄ*–ÖeÑÛ«YP„v™d¸íWDÞˬº9ŽýF–Ð;zYÀê"\ÀjÎà`°ZådzYÄÊÒº,v[/R‚ҞêTïg¯ãÙ³U%[méêü ÑåTwËdÈéEÒðzDdñ¾0“E×ohñrâ—]4?§g÷qÖ[¼ëØ¥Š·_½¯Õº =EÇr|Ÿ#<–ãúx+á0“œÂź„–·²h„8œÊÛƒ³Ó ×+•v5wC\¶¼•ûMs¶ê+·ØWkU¼}¹G°K„·!®ZÞêmÛ^ZÞÞÏzî}e—™cþüCs‰@Ñ :&­ñQZƒŒ£u:¬h4§ŽiÒl´ét`¶¯&˜éúœˆ¯‘r#ò4oããØBI=# Äö¥^»7¤±:¸¿êø„†ÓRz MIs4Ç“>ǶÇh±yǺOÜ^9Äì›í©°¿±óÍ[A?g˽ºGà>LÎèÚƒ¦ a6œ…p½ÊýVUï)½/–³Ðßk&émYÌocíåQùIœ˜9¿=FóäjÔ˜k ²¤9Aß(ZVtè,^2ýËÅ–þ2[õ £8iPKpè†q­ƒjûäë¹ ´#_Ûñ`ãíZÍY…š³ó€¬'ŽŽËú_ !Ö†»?˜À?Ô¨ñ@"<óõŠí‘¥L4ìOd›±g†ª?3ËMw§ÓœÊáîþAŸ¸ªÆãSß±$mŠGqRß|3ƒ¾ãÂᜠÀ)6Ðqƒö„Þ#9š9£‚û¡7ÔÓOÜâ`Žå¸èq3ÙÅÅâ=Èlç1Þ†0hÝΆ§±ý±óà œ`„IÊû,³íiÎ’Ã)ÙÜóöHNæ$ŽˆÇv[8 åÞäÞ¾ãúŽ7•£©÷d¨½<5?¼÷°” Æõª6¼F+Â/_KwQ§czŽ"s_/nÐXÑ¡C“:+4f9U¶~gÃ6 1Ö×5<a2èK—vx!vÝ™¾Ø p‡àuíÏä%ËÐþÃóS93f'zR_´•ðdG& Ôû¤|ᄾëõÜLo9†Ïòð ¶ÇÊ@ãÌ|´è‹ñÖb¶âz.§ò8ö„zÿŸä±ÑÛÅé}g2ÂAŒCÖ{ϪëdÞÊý–Ê·‚p 9eq4(_gÊÕo½öÒb^‡ÒæÁ?Ô¨1¥.[6øÙ w&hwZ4hÓî,ì%Þ{ƒôú„îPã­÷yñ©¢(õœUë)y‰å?´­¡ßÙôi9¥Q­Çö ÄÁx6ydžÎ?"*T&Î[?¨Ø‰q5”VŸWó9vŽÇâªò–Z>‚ƒòqÎËö-¶çR¸Âe-ŠŽæÄ>»s²BÐϱ­^x”Ã!›¼0¶®q^¾_°ÌæóàjÔ˜TÎc4šŒŽ.géÈR&è}Ž9Û!·˜ƒ¹ˆ}x.Å…PŠ0‘íФ„:Í )vžXÜœÍÙìuL^žC¶„ð¾ü|.Êö.¶CB¨J1AŸ"„lÝîÇyœÍþ•üðø¦Ô"ö?H9ÇL¹ >Ì»‹öÒ+³PÜÜaîýCó¸0ê´™˜XN‡­Ñ&+ÚTÏ~Ýe&M!Ąў|¼o¢²˜óÐë±F]‡”Ùm%}•ƒIùÍ€]Îç½È¿›ì9½|é0¶î!ädRÞPcîýºàLFèªÉ.Åiëk÷Ì4<çg—ØOTC¶Å —WoýÒ|Ï’m)¨J(Äê;$Þ«ffÖv‡DHìœg0:Uriÿ Å¥„žïÊ?Â%ÙÀàbÞ«ï x¹J‹ û¿D-8m9Cï+Ì8†9š#8É=WwC¶„¸jãÞÎÇŠK–Êd*؃Kȧþs0o˜cÿP£Æ| 2ÁãôD\Kh°|lŒ‰Ö8ãk°ÿ³jHbçj¼CÎC ÏQØ4:ÝÖÇVÅUýÜÔ:E/¿¡ò aÏüR.ÏÞÒç@BaHDØFÞΞ¬Ë×–µþmж9$HNæHã”âXO…¶­­: 9N¯,BHJKB1xÜÕ¡œÇþ"E¯‡øZõ3Uïú©?æ å7VNDЇ8 ©ÜÕ<Ô?ËÕç;dê÷6½—·§íöxb¹èý×ÎN6­S„’-ŸËó]Kv­dQ%¯kÔX™à±M£5ÊxñZ“V«A§Ýü3þY 61Þåìœ0ÏNŒ7“‰ò¼ òb‹†—"6¹£7Ùã>\œ4/6až7Yž[ÆÅбIöbä…&uŒM–wç¸ÓÛJo"¿S8,èTï¤-A IDATrÄ&ɳ<ê:ÖåÙ0´èÉõ$zâ`Þ˜M? §LâšÌ1´XîzùŠñW–*Äx{ã.‡íDžÞâªæSÕdoÍ?íò<4jlrÒwñ—³m©ze§á‰5+~bMHZÅYͳO±[©4-D ÒÎÕ¨ñPDÅMjnÒF«Esb9krê }ÛÆæõ\] ¥…žBcO¶¡§l/ôzi Üc¤ ϹXGc÷ 3YÚ¾”·ÁT#ì=ÁÛüYû¼'ð”§o¯ç$ö”í= {åyï¡Ëdé‰WÃÖgU€v.úº“ »ö„žÌcΠêI\sÕ:žX]TÕ©®Io9âª>¿—kg“¾Ö9ìÇÃÉX¨óàåÏæ?…·×f;°cþy 'è5l㬄9Ÿ`wò©¼YÎèžF!;uú#9‘“8ŠS9œC8-™«gC½M!ÎædìÄ犡´kòØ1»†ky=P÷Õ¨!£Å4m&Æ&`I/¦ÓiÓ9sŒv£EkÍÙÇ$ÃÅzÈ©ØP/¶ñ× t¬1Öï»xNkLÂÏ]¾hŠíO}?)V>và Ùö¼.ÿ"¯Ï¯åºìuAçïuÛ[Ñr ú8¯lBegËÖnC匾kxŽÂöü "ŒBéº|‡Â–ϳc±.¼µyó„ˆå£.W½O¶CœÛô¤WG¡ukc ׄ—UiÞzœµÛÃjÖtYñÍã¬. ϵÒØ{?#ïM!œÎÁ…UUÜõìòøjyM)ܵvèöU„Yë:¨Aë í‘ ä5£öHhÐmÍKoQhÕU,ì‹“Fé˼–×rƒÛ°êFˆ6ØÒ°kG$g°Ýä²O§ 5à1'b‰Þ–ž£ÝøŸf—½¶¶Éƒ~â–uϹxï5TõIckÐÞ|”ñî®.CŒr¦[†9‡qJ1™bÌaè§pOyä)/ÁZòšìËü'ÿ^lÇx6WB‰'ƸâC•zçó!Þ]êÝŒq9ÖÛãn²Š/g¯áßóÿä?ò/ð¥ìßKùóê«Jx´¸ŠO³K_O‘”³íÝ´‚CçÁÚ퉤*Îz=H¡cRÒ lÇk¹/åÛvèžÍU,ì³³Fuá—¯-Æ—5iO´YÞéÐh,¡ÙlVüDvæ°³¨ŠP ¥e伊¯.ÝvËW "ëdº ½½–¾¦íIÒ¡MEv]®kà ÞD6õUZLÔÍÖÉ,b%ÿ•½’Íÿ›×æ_æÿeÿZä+$Œt\• ç¢ÿ(ï`Ò<… >Èû‘ÿ¹ë}±uÏqÄ–xJHúš-„^Á—Þ†ñœeHÄzujyÒe¨/.TǺü½^Ð#qöBö)J7ÆÝ@òîM³¡¼ìûF‹XéÖMLÌÛpo$guIÉb{áä8¯ÌBÐ|9ƒƒ9ñ =1ÎÎT éöà•Ù•¶ë¡´5z¨˜Ç¨A³Õx@çš°OÞ!'{/à µ“ñœ‹}wC7‚ÚÉÈþ“±ÎÍ{²öœKJÏRÌ™zNFÛ¥±°Ô<–{¬“±m¨Q—2™d˜!ºL2\²ÉöÜx½^=[›$.d‡~úÖÛV…œ—o¹æ×ó—ðÒìÆÒgЩ½Ew½:µ\ "{¼ìÓ\Õ|•|xvyüò¸XÅYûޜ͗µ[—‡'ޝäk|CÆùÍÿ›³—ºœõê0&Œ-ge±÷À¾\Pªc]OžÈ8”S9mê7—ï©™ö^‘'¤¾¥œ„—ÃL–œ·:Z…xk‘ÂÛ‹ÙËåjLY1*îÆx+xqþmnΞïž)$æuïæõlK×¼È-×Öu¯C[v^9jXÎZ»BIÒ­fËÙØ×—²½ 7ñz¼ô=žLsvaT‹¡U„ÿ•6îô u&™X³CkZ…œ T¡‰Ó'““¹ ³v.ÖÁ{Î%äd´Í!'ê)Jq6UÎ4ä\¼ÆÚ¾p °ÀÌr2Rfº‡HCÈñRîê:³½E1'vÚr÷‹F±§p›o qTUCi!Ά„ƒæ®æ§-oÝófú|ð6ÄaËeËY›?¯lYÅxû£ìY<;ÿ1Ðã­Î·'b½›b‹FÞº´ ^y…ÊÕ–ùyìÇ{¸ RÙ£g-ïm¾¿Ÿ?€gg?ìAÂÙA„QUTÏö¦Ñh°¸½<0Ä6?MÔ¸Š…üçTNÚ¨'‹M©¨ ÛÈÄAè 2Å©ˆÑÎd˜I¶ã†>K«&Ñ M¬§CY<‹[Џ[³§ðœü‡}é½IS&s´Boˆ.»ry)ÿ¡rÓˆ9s¯n¬“ÑõìMüh'MÔéi~‰ƒ~JÁ-<«ïo=´?ÆÝá­-7‹oßÎ%•¼­â¬ÇË/=ñ¢5<.{\OY†™äßùÏ>ÎÚ<êå\œÄ[[ÎN}ÞŸÂ[+¼‰KcÜÕ‹@óÍÆUµwµpª±. üŽÑÈDß_szÃiMõÊãüCß¼öéñ)üïT¿F¹סí©È™~7CÖõTö«i bâHlõzrªDRFÎWyUÑzOßzˆ"Öczòþ%OfKn¦‡Î4˜Òµ½0ÒCa‡ôµ¤\å8)û+i±šò;2º¼b=!a.Ñ~'cŽ~ ÷^Æõ®ù”ìYíðàÉürªßb:O6´\ +¥Ì4w½^‹ÎZîÚu ¯·Æ.Ÿd· g½mË]ÍÙÔ!µ4gžý3OÉÁVù­ü,{ªËY+<2¦{ƒ‡èòß¼‚|ª¬¥Üm®+Á‡yWiàÙÚk#Ryk=¤f9ëõÝšoU\SŽÕ¶x½œ5j¬«¿cÔé8¿þhÐ]s/^C\…zet£«…g„uà’Þ:iL­(²]•sÑŽ E yÂ(ä\FzèìWÙ“Ø"ÿ5OËÿ—_d[–œ¬”8pŽÐNÆ #-ˆ¼Þ!/.f« 'ã}œËyìÇEìÃ^\ì:Û[$iBïÅÞÛøyþÔâúžƒ‘x‹Îê²’òµ\Ô\…éIùª¸[%êSlMáml88ÄY=Ì6oeØÌÖôž0ò¾”Ôé­ ÒüÔÂU——g«µÙ+wÓXO‘é¡41î žœý’Õ†0ÍÙ'jÔX—~Çh-ùrL­ ÁøMŸsÑa¨§HÒȺô~@ùi[;ü˜“±5œZÀØu»¼’¯q#/íë) 9Y >GŒÛ;¤ã¥üt9éWB+ˆÄ/|#Ÿå Þ Àž\ ÀEìͤã\<›CNÆöjyÛÚ©xOÝÚùX'#xBö›ÂÁ@‹›s;¿åñlÎí}\°õâ„vкlµ µ)•«)¢(&ÞvãS\Á›£¼MF)¢>Æ-æu~¶ÌoãWÙ“Š{^×aˆ³]†x7r#/ rWÒ‹¡2ó ¯ë #¯G+ÄÙXê1h1_ £5|TÌc´æšùZnX¯!ڜۧ\Gù“zûTMöéÚ†¶Á 9–*'c·µ³ñÄ‘8‘o°ù/UUQì…Vk‹×x3ý5ŽÎÏ“òßð›ì }e§Å˜§ŸºµÃ–ºù,;áòñ`ëÀs2zI–ðž¶CNF ‰u0›qG1”fË\çÍã¥î±óKZ±¯JÄ{áL¹kùúiv)JÕãmÕZŠ0ò¸«CF¿ËÇæùïKû´¨¯óßäÅÈPšå¬K-tYïËyœÏûøïb.q¹ão¬·ÓŠúßäO`qÖaRñXÛc…cë2f0‘ÆÜÍišùz’þ¥YÇ¢×Sœ‹v,î!²N%Eyxè)Ü>W=}Ûí™>}{°=Fwd›ñ˜üÎÒ>=l£E”·.÷ÐS·u|º SmÕåzúžÍFü <.û“J0kh¾jxy³bS‹yË]½OÊ\‡ZØÐã¬ç•wˆ¯U‹ÇY96ô•¥æ…-+mÛ]lÌ&ÜÍc¸“?²Iù nÏ6/•«ó^=téöžj»Þʧø8{b¿÷«‚µ5&è«øœ"ê"æ5/ì¾ZÕ¨û*­1½ÒÐs5¦¶yû=ˆFìK²;x¬o[ìëï -Ô@U‰#‹˜ªCCtiòM×ÙT}4È"°_é}ÏW:ÆöØÐ.6Ÿ9;qëHf"ŠÞ55Ò¥ìt2)‚)6L¡W’zßÝl2ã ³A–¸ ¯îˆ¹ WÄçOB|²‹ýÊQ¸*°ûÿ˜mÒÇiïÞ}õB¾“Ì_[V3宬*ˆB¼µZ‘÷éͲ;ø‹òV÷Í”;5j<|ÇhÉâ´b´9­~:í1Î\¾„ñÑ5÷úu¨Ç(#gCîaÒi˜lã£3û¤íÅu ÷yOÜ)°¶ÇD“¬ßÄ6Ñ&Ñk°Sž¾= %9Ý3qw¶ç÷çÑe*·î)òž¶mždûZv`9ofÂ-#]VBõs2ƒ8û4þ‡üql’ý=¡y=¾>Šû”ëžÎ›íUÐ=wí¾g-W=q¤Ïm×­^}ÈÒûŸÿUä ‹Ç]†x …‘å¥M—Q~ïJÊF—­û=ž‹¼A—S6“´Ö–TQäqÔnÏVÔët²-è2ÄÆÜUâî½lXì—v¶>5jD†Ò–·³d´Ü%Ôh.añØrÚ4ר—irÃzOizÑDB-ˆª„Q̹@Ø©x)öDH3q2:mÊPZ¬ñ–Æ_çÉsFzŸ”‘.ëLbÎEŸÿ“ìVzç(ä`4¼F|.œŒí}±\ñćÀ¥…Ä^È¡êz^ÆÄ¼Îå°'=¾Z¤rÖã°åsl¦ÿÃйuÙžN¯Œœ{³õÙ ÿ3›æwñÇl“â8[Gå:ž˜×üµeŠ×•}ˆ«ƒŠúœò‡"æ·7HðOü•n"7jÔXJ[L£ÑfldŒ‰‰6ív›v{‚±‘1Ú‹× ú È6÷±¾ûä4¨ã³ QÕÕH¬¡¬¾B¯!~ß±ÓÑÎ'¶-ðö ÑåÏÙ£Ø$¿»R¤Å¥;p]_ùxå¦s*v»ÊÉ "îÌSœßÉʺæëÿñO}û=^¦ ïVñÖ~3᫳ob™[ÏV¨[Ì„£…«š·ÞRµß³ù9üp ¡âkˆ¿–£ïà£|ŠÝ*[„*ÞzJ°av]†¸— ]Îj¦¶5j<”è1jÐj5iµ™è´Ëñã­5ú»4}ÛFúü®j˜$¾Kù‹(ÿ3*#wœT14Hã0¨@Òñ÷x.òUš×`‡¶­C²×Ò¸ŸE¬ÇJÁßùëEÂ!¦_3í2=Á£ç´t~rú{оÀö¬ªp0ªêÀ««TGc÷I(X?»7ÈA—!q¿rÍñyäË]]¶Þõ,ÇDƒpY×Ígx2”[ªxNº\4—th…Wß÷eâÑù_Ø8¿‡{² ûÊDÊV—ÿy&]úżÍÛN\ô&)]iÊ(…úBu’Â[ó÷HþRÊÞ²)†ú'²5ª®ße|Y‡N{ÅÔ Ø‹i6×ðdI¿Qu£g«8^Z/~6¨H6­ mÃÛNI²Ñƒv2wgõ× /¡<Î:—oãR>Á\E‹7ð™ÊôzÛî—u€?曹Ç{"Dg!ådí …v±âÇKŠ åPXþ¦Æ¥ðTïóÖ«®YekOcç ݧÖÎÙ T'±ºMáãÙŸ‚ý^ÞõáF-†j}Œ>NÇyOóÙx¬„²¾5?â¶êktCBÃk˜Sy'eJ»q~we÷¥ól Ù·78¥23Äê)$$¼¸*á‘’®)õ~ÍÝc0”Ö˯—¯¹àòÎ\͵ì¬sÙÖ¡—Î «„‹>—IkËܦ Å?ƒŸ÷[(ýö\ïLàzƒ"¥} q¦ß‰Ó ÈòÎ"îr¦>5jôF+ètš´Æ›4ÔA­͉嬀9F¡_‚ÀôkËBV‚iˆ¬Ò¡=Ÿ¬¯)ñ3èþñ,²¾©û‰“T§à×+y ;ÕþPºŒœx-Ûò¥¤ãcðì´>½ôâ`zÃ~ºðµËSïÓNŸË|ͽ¡´^‰¤!^V!$²­ s£üOÅÇ^Ùü”§CiUø,;ïLïÚƒÔEªp´ë½zP}5ÖuDç1š› Ýî u:m&€yŒ<¤8¨u³}bMÅ&ùÝkä:ƒà-\ÀÕìL“•¹äSÍÕ0ÖWe8í¡Gwä`£¬ÿÞ´Âi²ø9w×M[jÔx¨# Œ´jA{‚±± ÚôDÑD§A³µfç1x½#«XTÚg×cq)ûf‹Ù6"ÏæÇÉçðž*gúTÛ/>¦œ'–Nz‹z=k)õ-_õx&íüÕC9^Ül{g›>;sup_ªã´<œí}â =†Î+¿¸ñðt~6'Ž?4Ì—Š”öj&\XÉz•ç«…Q±¯Ò-Æ—5iO´YÞéÐh,¡Ùl®‘ÇjĺÏíPZÌ yï,T52ó-š¼nqÿ#žtÝÆÈk¬ìùìbhX¦ ‘3L—ÕêŸIUÎf³üü>{¬k›M‹Ÿ bï¢È~ÚõªsHœÖ ]«—®÷ƒ… )×$o1TcPè¡´X=ÏD$é!E±½ÿ:®=´.¿ Ñײ¸•§ÓuŽõò¸&j§<~ü>߀M³;‹o-ge(-ÖÞÕ§FÈ¿ÒÆ–NЧÕj¬±ÿ¢yðœQèY¦jŸ>O•Cò®Ÿb£…'0Rƒ'zô¢±Pœ«½þ'F{YôÏeCO”¤C¤ eÛóÞ@ñfÙL'íñÂæ/ætR›>v/s%€ªZÏU9¶Çjëøiþö £A¯ñ˜üN~Ÿ=¶’·¡û´êš!„êe>ͼ…k؉¦¦°¨:6VÏÖ"+l¹†òX£ÆºŠÈ;FkÖbMÞJÖKv8UJ_O‡U6¤:!¯Á©j·æG¥¸ª%6A[ÕämÖ¦ªc›ç¿ŸA öÒèLëá«K›j5 Þ䎒®Ëpòñ3å­]×y¶ës…œŒ¹:ÈÙ¹Z<¾éß³¤pÖ;Væß ó ~ZÊ—M÷¾Àµì0ã2ŒÕm,×i›?€Í³Û£%ñ^ð1t­AîÝ5ª•F‡öÈR&h‘´˜Öøh ©ÃÄÈÅTGÍQ–ή¿I7 ÊúÃù?dÄØLÌsáæ^îãeù>Ï!g2Ú@é‰í¹d¿ä!Çÿj§—vzxD&Ç Í"Þeˆ;²ÍxL~§kwÈqê¸P™Ì¦!ÖyºŽØž/ñ)‹v02!e;d†4=g6}­U@?o¡ÿ_r–³Þ,Ð3åì NqˆŸegr‡o)ÇWñDÿ'Noëó3u?hhÑ$Üõ8«Û<ÿ=¿ÉžP²å¶Jú}†>ÿ\#ÔÞy|Ñ÷³¤•ìYîü%ŸÚ/°mÇ|ä©FÂïu¦W:¥9Ãߤu&Îdbñ(ËÆ›ˆHk/c6ÚÈ>ÝH¨ЃñNÕ_³CŽeãÁs)KèéYÊF¶m£²_ÓPh»bãì>€'ä~™=Ùµ;ÔSeËe&ðêæMLp­¾4¡òrûyþÔÒ1¶luy{¢@ÿÌÔ:+VqÕ[Oå­½N¬¬ÅLøâ­ÇY±KoÛ<É~˜þòz¬äï<,é¾ùCö›ßÌC¬gU—ƒW&3…WOz=ÆÛÛò-xBö›¾yÒmY ¼£ªvÁCýÙU(aÔ¡=Ö†ÑMšŒ.[6ðÉ­q¦jÐl6hw:0‹ßˆÄ„Ñßx$â¾$'r*¡ƒ…œÌ Î%&ªœÈóø>ßç9%"e"ëÚ¹„Ê)ä`´MOɺý×׊ìñ,Îo/޳ÿþ -ú‹´I§,b•¿oëY¯¾[d·±Z‰"O éuFÿàá<Œ¿÷Õ…gS(¬CƒŠûÔr´°õòF>ËçØÉåkF^ RhÅf¨®ªxk÷!qžÀñÂN¶˜F¾‚'å¿áÙ–EI?‹[¦ziãÃÇ©q1ÄÊ?Tß9Y‰Ç?ÍŸQ£ùgí‘}fÅ}AÞê0µªñP…jaV°¼-]CmÆ–Ž©©g‚6‹iµ|QtÖYgEÁ?x8ÃL2Ì$çÅúßx$ës/ÃLrëNä.6-ÖÏæÅúmlY¬ßÊVÅúwyAád¾ÎË‹æäKl[¬KDFÎ%¼½°í|ÞW4l'sd§Òû8è58{NMÿŸ“ñ>W ²þr¾^j`¥ÞŠ[‹üIü¦Xßœßë›pw±¾>÷ëäotb’aÁß§Jp˜‡ó&.9^Î#i6å®"þñüŽ.Cü*{OÉANÆ3ùIáX^Àw‹õWð?E^9KùL‘ß½øx¿çéŽâ¤¢üOáˆ"þ\ö/êèRö,Ò2r¾Ìk‹47ò²¢Þof›b];˜_ñä"þ<®X¿›MŠõ?³A±.Ðüü'þZðvˆ.çEú¿ñH÷<úü¿ãñź¶ç'<³Ï~É—äñz¶/Ö?ÃÒ¢<>Î^Åú¹ì_Ø­ËópN-Ö÷ã¼¢®öà}‚0'c;n(ê÷eÜXÔ¯Ô{Nï½I³¿îãæí$Ã.o» ¼ ÞÊ6À$Ã<’¿\Ý€?»÷…Ü/šïrý€­é2Ä6Ü\ØlïGÉÿ›XVÄË} pçñGpJ‡œ<Ÿ÷ñ—ðv2rváÓ\ÃNEû#õû þ¥GÒ^iî=%û_~Ín»w—Ò3É_yä/}íj\ž¦ ¿5ÌÈî½÷Þ)ObÞ ¢Éè²Ð;FõUÛ ;‹Î:ë,<ð@¤õ„اîá©(‰s’p«K¡¬3Ù.œz¡v+Ýp˜I±²H+Û’&oÏ!× …b«ÎƒäUç3Ôû ËL—£ 'c}îà^Öï+]ÛS¤{…&fËü6~’=ƒÕ, ËP®ba_(¿ù o`’aV±Ð WNý¥~%‹úâÅÚ}«Xȼ€¹¦¯íÐ6~?OÍzóجfA‘7›W[6b#Íô§à¶ÌCÜÕ½C–³–»zÝãLwå|Gá¬w¯è{Èã®ÇY»P~KÂGóî›rì½rÿ‹Ë[¯§H×c—¡‚··d[¹œ]Í&.Bééü,;9k9j¹ìí“ðÓ¼€ÿàóî½#¶tâæ|›¢ ž–ý´È“æ¬Î³î»‡ÞKèësoIìlÏÝöXãÃ÷n[´Ï5j<¡†Ò´ZMÚ+(Þ+jÄÿ‰Ö[ʘt+É‹Ö FFÚ4g!Š4†ÕÄûÖ¹ÜÍ&lÊ•ÂÈ6¾Þâî{6¤ÂëâÖxF^Úx!ßá&¶)¶åz“ 3ÄôK“žÓ­ø IDAT±× # ø3w±qÔɈ@†øgÙSyZþ¿l•ßÊ÷³ç¸%¬×¶ÙžÚuÍ‹]l:ýĬŸ´‡èòÝüÅö0“t*Âÿ÷2ºŽô±²ÿ^6dþT²ÃÚ*×q6ÄÕÞzebËÆƒWö:lqËx£+:$Þ•£'~$½®µ_÷ <Ñjżæ¬Î§l?ïsÛô ©.C…(ºš×›ßÖ¦M[àñ2Ä[¹·CZã™ÙéR~ÚòMâîà±lÊűÒC”bëÊ/_7Go´YÎ’à×g’|¥7‘:ŒŒth-Ÿ³¹lC ‘͸ƒ”×@SGUc•*,4¼FÇHv[–oòbä  .å÷]ôq"¬ ü%OF^Ú¶ŽGãn6bcÊsigIV$<7ÿ7gÏwó£Ë"´>›Zòùf®àJvávâu\Wì‹Õï³³ö $ Ñí+wÏqCÙ™mÄÝàðVÒÉv/å­Î§¾æl¹«—+iá}•²J—Ÿ]÷ø ôí³ånE©Ž«â©¶í'Ù3Ø*¿•­óñ½ì¹|‡KZ—‹ç…ƒÀÖK¬žoÊ_TJgy*ë¶-x  §¿M“ò©í5j<Ôø*­ÉèøàÒ¦=1A[º´ˆk´ÆŸE×Q¬ÇH7ø©=F±§qÏ yNÉÚ m 5’1Ç¡Ÿ®u(O²ºñÓçóœ­v"!»=èqõ-¬#‰=}ÿ Ûšçä?,ìöºôu^åšöÖéÄúx]×9Ó/¢…ƒy~v3Ý)Yº\­£†r‘g§>—¶Ë é1ÒÇÆxL: qV¯k±âõiÎêòLéåÔûbö†zŒ |yIsVsñyù÷ùVö¢b¿åº Ä×TQ<ËUÛË)x~v3“¦—Ó»†ÇWð9[ £5bŸëÏ}=HsqÝHÞÎbü¶Ï1jr2©Î§ÊÉh›,ÂM`¿ƒÉèÿ’ç¥,ç,)c¯±“ô’‰—sƆټÆú‡%<ç"ëž“yQ~7f/uKt‡©±ÛŠ#[v!Ø|ÄœŒ¤ñ†"t=´ çñz-Äiux›s;¹ð¿gsËõÄœ'Œô;Fz{¦|õÄFž(ÊÉx WpoŠù¸—óÄ8+vÛ:°¶Ú¡0çÝg!ÎN2Ì÷²çò¼üû¼˜o÷[LÌÇ[v©œµ\Õœ]ž¿´gköMºSœ qkˆn‘×!ºü†'Ñà·Å¹°º°Wç¯Fus*ŒærózÊ“øÙÔþª§oû"«IÞ¾*Qä5Úbµì÷z޾ÆË‹áiääzb—Øa‹„ö)R—¡¶O#Öc¤‹u2ßÎ^È‹ò›Šccæ*–N½Bv0ºìlÝëuÏ!´èÑåôµü•,ɾÁ¤ßÖ)kç¢Óè¼,`uÉ).¦†·g¼ÞI+ê­0’t1>ës…ÊËã-o]ïÂ¥OñVd’@ͯ*A$¡WZtÚrñÊPø©y!/ÌK\¨ÇÈrV×#9Lf~O§@ ,+èC‚Hëé!z+Ÿârvås¼ùlwÿ_þêâáìÝ>û¼^ÙZÕ¨á#𯴵 YÅBV±€Õ,`uiý<¥´-Ÿ ËçÂ6®jIq4¡üá ë`¬ÐWÑÖtâUüWÐZÉ^¯ZV±°´.‹Ä lÚªEÒ¬ßÿxuþÿúò%hqU°LRE‘^·NFàõ ^•}µ/vÚ†Ø"°ñ¿f‹>Þ²h›¼õTΆR*W­°è2Äî\VÉ[ËS·)\õ8Dy›ÊU½=É0ÿ“½ €Wæ_ëËÇë§~ìzKûîÝADQUãí—òm‹},gí¾¬æç<•…¬*ñÖ¶­q káTcÝÀƒ¦ÇúŸ¾ŸÅÈ2öéÛ CiRM¨ÂïhØ'oèÿ¤YžºoàµLÒ-¥Ñ½CvÝkdSlzX"ôÔí ;Y¾’½šË¿ZäÅ{ò¾œ· ³ò„^»{ê¶O×»ñI.cw–ñ&–rUQ·×å½€n›]ï¡U=u{v‰C‘}Ïà'àm• Ká®îñLG3éíÔëz¹„=è2=Óº-+ï:¶ÔrV‡ºíý.¡C)¼q6§Híµù—ùB¶}gm©ÎT<Ø:÷z†tüòÿ˜¶-»yŸ-ÔS$=n6ÿ[ó~ÈV<““+ŽÖ‚§Fi¬õÂH?á@µ“ñÛ³ÑûfÓ[”âh¬ Ò ®4j¡÷2DÉqÖnëT<Ûlê©?Æ[[CÂHœ‹¿˜mÇöùõüGþ®Î^_Ê›œ«ÊÑxH© ]0ýRõçò7”âtyig"ah¸ÄÚç½ÄêÙ­í×ë¶î<^ZΦ¼˜ZV<ÞV‰yá°Äi#¶üÕa*o…Ÿ«XXÔ嬗Ëݲײmþ¥"?V0…¾´LDƒÖ…®[ÁÙµLÿ@Àóž}VÌëz¯Qc]ÇZ#Œôo@4bÂè&^Ä‹øVÐ1V #IkŸ¾C=Gs!ˆä‰Y7¸:Oº±Ú‘Ïóyþ;á ¶%ôÔ=atÛðB¾Ãóø>ßæ…Áæ;&Œ¼Þ¡òk˜ÈÞD‹«ø$»±—ñ1Þî>ɧ$›G]_R~©ÓžìsÈ=’ÎözxN%¥Çàf¶á|§ÏVÆD]Hyœ quУP]‹˜é2Ä;¹˜ñö¨˜—óëòÇQw1aˇ]×a—!¶ã>Ÿý;ä×±cþy–eo샞 ªÎ^}CQNÆDþæ"Î~^o{ŠByÛ¿ÅKŠsÍ…0ª"[㡊µFÙKnº˜0ZÂ7ÈXUjD½ÆÖF:~¦Cib‡n¸m£HrŒvÄb¿Ä÷~²Úÿ‚uHé㵓ñBÚnyú®Z¬sÑBé³Ùμ!ÿPž{¦ËgϾ>Žc±µ¤òü‹·Ç 3ɧóÞï–fW‘+á !-^=ÇgÏ/•¸—Іoul…Ä®æ¥^}Ú_%æS’lKÙ^ÄÞtéÿ"R'å§9kë*& æC…8«ÃkØù©1ÀÒü3\‘M “.Ós …ÄV oõºæí]ÞÁG¹˜wò)vCgûMÙùÔk)½›^Ù¿ðun¤÷.Õ\£Z Õx¨b­F!ha¤ÈP#oŒ' ¬Óˆ½Ë‘2,á!Ô KC¨m×Ãö±Ç‚°N%ä½Ð³Wà #ð‡'bOª]†¸"{3»äWò–ü ä^ïRÌ‘iØ:·uì5ö—å»ë2¬¦{;bÎ%dÏñ*^Á“+ŽzŽÅòVÛ/ugØ@Jál ‡=>xb(Ä[I«Å¨g9+džòºŸ½²ÓÂH—·FÐÏY½nCáÃDö&Zy¯ws—üÊo½”^N+¥Ül{Ǿ%»œ\ ¡Åz7½{Ô³©J«Q#Œµ^-be_œ4,_á5¼†/»ªçdô¶–°qž³ImÈ5¼†I;qÐb—>¦Ë»rùÔ/ú_V•ëVÙT%ˆBXÉ¢’=b»«„‘n¨5dHæBöés4¡Æ\¯['£{x¬@ÒØ=ûÝ©O”õSwª 9kßWù7^ÍWú®©¶§¤J y‚'…³¶·SCò¦γ”×¾\À…ìS²Û "]?UvÄÄZˆ»ÂM ýŽ‘wßI¼­_Ù^Êg¸’“ ó©ì­ìš_^ˆ¢Þð¡ß‡l¯•"޼úöŽÛ#»„.«]!¤9lóâ-_æµÅyíð¯æAë:Özaë1Úž/M §AœŒÞ9;lH¶‘ÔbÈ.¶1ÕÎå2ve5ý‚(¥+$ŠbI7Šƒ8‰ ‰ŒK²=Ø3¿´8÷$Ã\È>}=G¶a·6YA¤ó£QqLNϱeðv>F®œ¶~êNyÚÙd‡zs2¶åzˆðV¯{už¸°Â(•³3åîyìË$å/ù¬¨Š]â½›)¼µ=F_d;¶çz^ÃWøÛ—lò8½/%§ã/Éö`Oz¼µxœ wí°£&º^õõ-ß«Ä|NÆë¸Ž/ÐûÂm+];kaT£Æƒ@ÅzŒq2!g“âLª„HŠØÐ tÈ)T9—RKôPšØs2¡Z¶?’½“½ù(ûäq~öÞdÇbŒj'á5î TO‘µ-Å©„Î+ü¬r(^=xaˆ³’Ç™p6&ŠxœµChçæû½TïÊ>ŒóºŒSD|èþ¿§ÂïoÕ¨±.áA-Œ®¢E‹+KqUN&Åñ "<» ,ˆ<­S‘p/>ÎÅìU²O‡UÎÅ S±’E}yHq2!¡´IÁ°o~ggû—Ò¤Šûî‹8™sóýKÇÈ»EÚÉè!8©#V9(?y dî$!dëpîzÜLÕ:6ßR&#œÅÙì_JB©œõ8l×1ad{:½¼„–·s ³WïÉ/äœl¿gCâZ#ÔNèòÉÉ8;/¿Ìl9+6ÙûKÛFô^$àð¶ªlkÔXWð FÐkTvå2˜ú*Mâ$ 5º¡ÚH3u2¶AÒ¡Hž ’4²ÏT?Gøz¡u]v=Þ“·—·T‘$8'Ûýós8 ?‡3³‘$çbr.g棽óggq6=g£_ºN‘±¼jØ¡4€·ò)ˆðÖ˃ S9k9šºãCˆ«g2B×pVlÔÜMál,ÿ¶¬4í1²¡ÎŸŽ»ˆ½KÓÅzïÇퟟËxv`r/£ Tï²~F~p±ÿz¼ýïe_Î+q6Æ_—Pþ!ÞËYußÕ¨±.àA+Œ`0'£×cq)‹uTâ0dÝ:ûb°çØcŽÐËS,´ëUø8{òv.a7>ÅÇx{É®‘J‚I†93á |€ƒòqNÏ.¥µKCRI9kñpZ~X‘î l ÔÜE2LèÉ:”‡Xq~z°u1(oíöL{ WæZ Éq–³¦rv6¼Dy6¦rVŸc<;‘¼7…ÈH~ÌÞ-á,gs²’(ÍΠËô|F ¦^¼öìƒ2ŸCy²ðz9mYÕ¨±.ãA-Œ.böáB úW_Õ`ë†ËÆÛ4özqÜ^­÷ë4â€ì°E•ý±ü‡ìKÁ NƆž“(&Ì(†ÕÉ?È)ÙaÁsé|H¹É~¹ÊÉù‘EºC²ÓП7Ãô;FZ˜*ˆdýü»Øöøyûð.>Ü/yÅ¥„¡¸AÄSȳzÀ¡œÎéÜW6öý£˜KE!!MY»CÖëûs.g³?BOq“dœ‘òþ| €ƒó3 Þ¦pWâ¥<º qj~x‘¦ÇÛn)ß2?Õ \ݯP £5ª°Ö£ÐÌ×zÆb‹÷r>ºW`Æ7ÕÙØíXƒorì6>vü2l‘"‚æCéIcφ¡F¦ŸpOãò,ã°ü4ÏOà¤ìˆèõ¼<”U¬–B®Êä`N烙Œ2ÊI¨J ÞËùä?ßÃàmLéõAù›ºгðʼ˧r(]u©ÏðDħòVó²j_•0Òá8Ò¥Ÿ·ºWæ´ìÍOz¼=9;Wüå±*ü£³8€9›}¹€qÊmI¨Së]8«;);¢àªð÷„ì¨èy2rŽÏ-Åõ8›A€·ÒÓYewj^`mê1j36¶‚Öø2ZL022F»Oôtè¬hЧÕXƒ¦ÕX§±Ö£b_¥Î¡Âiîqƒˆ&»=Sqeá5P)çõ#8…“9|NÄÏLÄQhÈÂk<«DÀIQürá(NâDŽ$'ㄬ×ãst~b‘ö˜ü„d;ÎŽŸºf¹çÍB;™Aì9‹ÐK¬äVbPc&õ«ÿ¹â0„ó©ÑќȉL[ÎĶª¸ªý/µí3åíáœÊÉÞ—Æ #Y!$\Õü8.;–ãò¸¶€ð¶Ûw^ +æCéæ‚·±cæ+Í)ÁÓ¤ÙhÓé@S  N›vgq-Šj¬Q¬õÂh=îî;Š}ýBŠ@˜ ‘E)Ýì‚ã9zê¿íƒ]{®0è§»Uªþáè8¦o°éÙ1ädQg¢qlvÜÔÚô?¹bˆ ËÂàN!Ô›Ùãe˜·ƒ"µÎcéáí…мõêm.î©Ap?ëE÷Ï”·ÞýeÞzñ6ÄãÞÃ8žc9™#9šã“ìáDz½«Umæ ÷@èõHüÚŠÅKèižÅ–¯&McK—2Ðe™7ÞV£Æb­Fƒ~õc1Û' A¥Ÿ'´ù|«r0ƒ:»Õ†n¡ã§GÕõâ½v6nëö¨Êßl¹CÍÛ0ªx9¼=žé!¯™òöùq›·Vñ¶Š³ƒÔËù‰ls”e‹;t @gb„±vÓ}©F¹ÂƒZÆiœÊ¡Åö û ÃAƒ¼{2è1¡}'s$GpÒÀŽi¶NëPNå4ãŽáPz/EÚáÅÉDFΉ=õôš>;Ê¥ü^a&¶{ûBÜ´¼¬Â ï{Ì„KUûRŽÉÉJõ6“óÏoFƒpèŽàN*Åɉ¥²AÞ™ò~êPã\óV0—ÂhP”^¢n޲¬Õ ±¢C‡&©w‰‹§D‘`Eßx[s‹µ0:“Œ—Ïô…Ë”P-ØíØùR¯!ë‡p«f(Îæª[É¢ÊF9öR°†F‡s2]“6Ô°Ç„SÊË¿§p‡s*Gq§r¨{½A߃075/«P%悯¦ò6vŽ#8©ør+庩ë±8‹Ta4(oætV™øÕ,ˆò;ÄE;D–zÏNé1ªºÏRxû@ £æè2–™¸Å Ú ïµÇXº|Iiølq£E5æk½0ÒïÍæ :†âbñÖ©Øõع¼íT›BùŠ­W•„Rý酪4ôgÒ›…úý|Õô;o;fW(}è\ž“IuL^÷ã<Îc_<ñc¯7H=Äê4•¿)<Óç¶bIïKåìlĬBå¥ß1òx[%æ©÷I†ûŽ qP‹¡˜8ªâjHÙë Â[AìO’‡5‡&££ËY:²” z©'ÚŒ-]Î’e£4›£Œ._ÊÒ¥½#­qÆëa´óŒµ^ÙY߸ïâ#\ÄÞ3r$UÎÄ.Ð?£¾fìé»ê¼¡ø³9ý8gÖŽ'T~!'c÷{a,ʽE9c¼¿ør+ö­mÕ%›—Î-ÐOßUŽ)æpb_KîÍGùï,í«ª‹¹>g% q×nÇ–Ó9”ƒ9=éß\ƒðuÞÚ#Ëóy_1Áfª ÊÈ9ýØsJÇHQˆWCêê*Îêk ÂY=”UUùÄx kZÑR³ÝH4YÒ\®’ô÷4Õ¨1ŸxP £K؃\ý«ªJ@x#E¼hg’Ó?{rŠ(äî²¼—óKÿnJq–¶Œ<»B #ë\¼mÛ¨ÛtÖÁŒpæÔ4sÓi¬C9¯´bÿ¹Ó°Â¨J yÎzÿHóœ.À¥¼ Û›«‡*®¦ˆ Ð"é…³ÞÌßžš÷š»£œ1å¦_ô¹Cù®*+ £=¸„KÙ³”&$‚ôºl¿›ÿ&H‘]ä¾hÞÛ}¡ë†8+ËÙìÏœÃgq.ï –¬——TÞÚ4±öaÍ¡C§±„ÖmFuk0 }úFƒ8—!äý¹Z9}^-”ô>}~»mÏ)¡ØrD©Žf¦NFÃ6˜PFžsIýmŠç`Ä!X츬±çÐñ¡þ †ݺ½–µc+£Æ"&B$ŒÕiŒ³àÿu=ÄYkoŒ¯Þ}»WR8ëý oÞVõI¯¡úÕËGxЛÁ|Òì³bFΣíÖÛGB÷ÇaÁ‚¾G¤4îìÎe|Š·BocíÚCƒV=qQk0J™ùÚÞ´Kù W±´Ò¹T-Ò¨ËÓ´DVÄXG-aÌÁXA¤‰·à£ìÍÛùXÐùÙëxÛ¶ÜB _È©Ë;F¡FW; =A"ÂHöŸÏÿoïÌãd«ª{ÿ­м8co!'pÀˆu1b"ApѦ@% $x¡o¿ø3˜O&Í'öíË{&BŠêv@À¨£P P!Q±.Îâ5ÆÛÓû£j^µjí}vU÷½·»zÿ>Ÿó9ó9k¯ý;kýÎÞgx#oæÜ`r‰Ùªmö’‰7>39‹ó9›ó¸€ß &;olË˼ô’Ì«¹œáUŲP’÷Æý1®zcûÓQ‹²smc’7snÑ5ãµ7/ûØsÅübý–òÖYŒ·w+,ñ>^Ïi¼§8†´rjN‹¯õ¹õñúD)܈ µˆ†8«íxd;=ö­=a”‘±w±f„Q¡Ï×/QáJŽEºÒR“KìîW'™Ð_«%ðèDyÁ0tN/‘„’Ë)¼ù@²‰•ÕÚ­ÇÚ>ÄåJ®â8¶Sç•\”·…‚:´“Œ~£}7Þ}×-çðlµÜ&;›Tl"‰%™²dã%-Ø­ÿ®æå¤¼-éÕY*w­ òÆ^ËŒ^¯¹«m‹]oäÿ²àpU>‚F)-¶ÖVÏà?\mëA¶ñD‘ÇY€“¹˜yzżõ—'˜¥Œevy׊L{H‹‘åsˆ»g?Äq ºÒ¼ë> £ŒŒu ŒÆÕ3D/é—%—Pw•3T`9°èíGX,¶·ÁÎCÌ+ˆÊ潤³IÆÂ šöî»LÉøƒ¼€Sx ,[Ç–N.ž½e% $—dl¢ò†Wðaþ•—Réð2”dB|Cœ…ÞV"L4gýp×Úâ¤Bv~PîÆü$ÐoJ†Ê!ÛÄļ¶k× #¯‹× m³'ˆ¼ýBœÕÂHóX‹({ O äù¢”úÏÈØÈXóÂ(Ô•¶D…#ùw®åÈb>&ˆì¼rIz™>—²½zZLéíÊŒœKŸ×Ž/ᵜ@#˜d þ<’.G(ÉbÁÒ #tSºtYŇò»œÉyn’ˆ%=­÷ñÎoÁ( Á}bI`Œµë7ù$Ÿà7ºø`§=Ž” "+Œ´¨×ÇöDZ wSDÑ?ðÎ伞kÆŽSºŽcœõø*Ó¡®4=ó!At9¯æÅ1t+§í&Ká¬w­yûÆ8û>NáTÞÏ©¼ŸòwÛ˜@Ò>yáZŽ ò6dsFÆFÚF¶ÅH_¸×ñBtWZjrÑ %$ˆBÏóȾö<&l2³­A¡äòjfYˆ$›~“ŒõŸ…0¡÷îÛ ¾±®+-ŒÄ†Ó¹Eõ ´$l Övk;CIFßuËX [ŒúH-Œ<ŸÝÀ ÀÛTaT6û4w-çåØâ[ÍW«!»ôyóY¤Wà— $+ŽS¹kë^óÑòà…\ÇõÁµÅ‹ød7dÛP=Ïålï<Vç²®VNÍIÛ¦ëÃÛ^ÛDz™æ¬ôö:+ëÖ6ü?Ž€’V£,Œ22Ö¡0?ˆë¤ c/©,0Z3›@ô~,lëŒì á;sm[JÒó’Lï½co×ZH,…„QJÐó½Fž©°TøFlFºåB'=Ž%{v¤tKÔÙÎåß#žì>öØ‚qæºmˆ !^BœÕukë]ü“Òº)c+àC‰Sïëñ+Ô•VÆ]+Œô1½r÷+ŒBõ0Ǹ+æC\Ñç™gŒÑÎ;ibƒæåmÙuf…ˆg‹ì¯@´0 q׎àz>ÅáèîßoûFúMâ=òß´ŒŒ=„5/ŒtB³ç0>ËMV$P=ö¶·ÁW4{×§“ ,{ŽPrñl.M:Ñ,QáCÏ+¸*(òÊ„QJ’ÑKûõ_d´$ÑiñËoòi›ÿ™ßæt.ì±Mo§}ºÃõìð†ipu¶6–µ…ZŒ¼îi{åf>Ç!=Ðu/ÛZ>‰¿l=yœµÜMRáÙ¼D… 8ƒÓ¹°‡«v~¥œñVÞˆêi=oor°~.CCÊÝ&ŒZI¶²…™~b<ðG€[x.Kö…‚®ëd¤¯IßÊ6±D“"|RºÒ^Ƈ™wÖÛ»x™Öö÷+Œ¼s07s ‡Ðd3‡òYW0è»í í;ØEF¸†£8ޱ@w·Ø‹œÌÅ,vº´BwÝ6éX{m‰Ý}Ë »o»^ÊK2ãæÍë»/r8¼ÕåÒÓ±VN]ÇâgÙ^ö×¶X¡c6 IDAT¥[âÊDR™¬Zd¤óùˆÞnai)²-F–»e¢Éóõ£÷›/ÉK‹Qˆ+º¾áh>ÊÇ8X_ºî­¯e}Š`ÒHåmY‹‘ÇÝgǘçfó=$ë³~„QFưb÷£Vƒ­«ñéÒqó:¾žoXN2¶É_1t·lØä¢Ïã ¢²$£aE‘'’BÉ$ÔMá #Ï¡ ­ç=Qd—˃¨eÂh‰å×™¡ûÃŽö˜:ikÿêä!–¾C‚(ô¼†N@±î‰C¸€/ð*‘äbí.E¶ÎôØvûÊ~:QÛú•$¯»v'o=®†8[vÓâ¬ë«5'ì2ýµuËY-&„³º®Désk®ê–e[·â’³Û&ûÚ‡8ŽWr%ÇqåèRÎê² ÆM7šç/û2262vƒ0jÑØÚdS­ÊŽU8šþ"tª¸ƒÛ8?Ÿ!»$Ý-dïurÑó’db‰ÅKˆ^Ò+DzþcËù¸›läX^+’õ‡õ[Ú¶|!ad»•ì9´ßµ¿/å5œÌÅ…=?Y[=Ÿ— #{g-°Â($¨ä˜I0–ºüOã.îä©=|м:ÒueÇ–»º?g°ÈH—JålŒ·ÚF·qZ§µ/MÌÏ3–ÄY{.ë+Í…y¶,o_ä×x·ºœŸé›žë9€£¸†º¿@×™øÙóp )¼µxbÞŠ){]B;Ž>“Û¸»¸a9…QFôþ'`…h5¶Ò¬m¡¬mÛ¶mÑAð4îbŒyƘçiÜÅ8sŒ1ÏÜÁ]<…qæx·ÛÄ­EÒ;„[cžQØL³Xþ"®+¦âÚ"ÇUE ©³½2¯ç}EÐ9[½b>ɶ"¨ü ]Lÿ5²\N&‹ðw>g àbN)BßvêÅôÕÛ±¬}Ç*Ó×s Œ2ÏŸáùÒŽñy.¦oå búvžQLßÁÌ3ÆãÜÅÓº¦çgž±b¹l/ËóŒñ%žSls ‡Ó7Qcž1å:^ÔµŸØÇelp"u.c‘ÞÏ©…Îãìbz†-@;PÿZïù›Âÿ[˜)¦Ïâü¢¾NåýE}Àl‘8Žåêâ8/áß ÁõŒ²ÀóÔ¸©àÌÁ|¾à•@Œ,?€;cžqæ ®~'vqUsX¶·Ç9ˆ[‹éC¸¥Ë·bÿ‹ËÕÅô‰4ºü ÜþŸ¼»à§øMü)øþ¸HŒ3l)êâ9³GtK=Êô‡yEQ××rTÁÕxa±\xbùãñvŽq—·@W5‡eû§pWoõñõõ¢íQðo¼¤°ùjŽu¯Ó÷ñúBÈÉu½D…­L¼•8Pa‰·òöbZâF…%Îæ¼¢¾Náâ‚·u¶u-ßÏ8Šk»ø \}>Ÿ)8#ü±ob]ñÓòÖ{Ñ%#c#¢²sçÎô'2ËÐj0¹¶ÌÔa…ÏmÛ¶sÎ9‡ûö, ü0¨¾ûöî>cw²²LÛñãżz=ÖÛè±ÞÆ[¯é׎C݃Þ}[z­0оþ¿ ÀS¸««ÅÞ™ê;×&›‹ãÙžcÌweZ‚ù‹ÅÛ^ãÌËGYèZ®ÇÞºÐ1õù‹p=¿ÞÕb{æèéÜ Àtü¡»ª´½–C;޵é.§P7•žö8#ü ñSö/ã¨å²æcg¥¥H·yå q6ÔÚÙb?ª|3È[YöužÀS¹Óm1ò¸{5~ƒOD9ëq16Ö\NÙÇrxŒyŽæ ýÊ}…¥b]왣ù*wñ”¢ü–³Ö‡¯P7!\·sÿ">gd #VÔ•Öœž`ºÙ™©M1SmÒjµ˜œ¤M2ÉÌŠÀcÞMèKT¨²ƒ{Ø%zÿs{Yº ¤kÂ&99– :°†º%4bBÎ&Û%!Iä:^Äá|*(Œì¾ö¸RVmƒgŸMêbå"#z™ÇƒÇó-¾Åc»|Fâ~_¶‘iðš”SooíŒñ6TKTø'õfykÅ›½ qÖ~ãÈrÖÖ¿<;dùàÕ…ýß™wmkÂòç%d¹®ÿE–ŸS”õžÏ,ìµeï¦Ãã싸ŽOqxPÜ…¾ô>Â"ûs÷°_WÙí8dFÆFŠ„Qmj–Ùî%Ìv¸^­·Òb¯ëßËã “xm’ñ¶€Pr‰ !›˜=„’K™8’a3ŸfðóeÂ(”äB°w”:¸Âr’±Ï`…Ž-vÉ´$€ã¹y+­;m”%O$ d¾L=™ÿà›T©tº$4?¬]ßåQ xkë_æµXÔÁúTóZüç‰y=.HÚŸB|=‰KX(á­'¬Šq·ŒÞëú^=ȶZTÚãjÎìM…ŒÅm§HÖwÖïeâHŸà7øM>YÔ±<î dÝOìÅë猌Š5ÿ#¯ÅHæ%èë JØvþˆ_,ÙÈ£M.à?x:·ž ™2¡T6HÒð¯B´¶ ö®X \×¾”£ëd/ÇÑwÿ6¡ø²&]ÄÅDRL l÷ƒ}³Ç{]:l±/6B|°¼ ‰ÌEz°Ö¾ÖÜ qÕ³/…»Ö^+’R¸j[’F–ý´ÝÃþTùf—Ÿm Y`”/ð\žÇgXìˆ_+æõ5Q&äBˆq¶L$ ¼×öS„QˆÞ5‘±‘±ê_ ªõ•u¡ tÿ¼ 2ÿh¾×µ<4ØÀ‘ò’ P±D‚— ûI27QëI2z°‰ÇN¯Ö (;§B@ÀÃíáJ^Ù“\¬ÏB𒢌CIFŸî<õ<>×Å 6Á¤ ûr_ß^Öç¶ç÷¦mâ,ãj?¼qö2Nry›"’BœIõ’<|­Ÿ{ â»]¼õΩÇgu™BBÈãlЏˆ ú¨”qC¦-oËwJ½\Ξ,œ2†k¾ÅH.V¾8ïãáÐYïÝuK ÓËô¢ÌË´ F±ÄK2Ö^m·'ˆBIæ>M2:pò «”C`Ë&>Xêõ2þÏà`nf‘åoèè;í%*¼‚«Xb®ÔÆP N½ë¶õJ2Þ`[Œb‚YÛt?¦âðV|(óÚŸrY&ÇÒ-Eúxº,R²Ÿ^Eƒrw‚í]%OG^÷¯ål¬µSC·\jßéi½Ws¶Â ,'J Å½­+9n¬¥ÈóŸõwŠxµy•íe~?Z@»[·ÒJ?äTènõÔ¶Y¿edlT¬ya¤‚ Ô:ÑÚõzO4ÙDi“‹¬Óóz?AL Y»µí1¡Ôïxh_Ûózð„†”ýüûØ—ïðXÍw‚AUÃb³¶þ¼: Á«—A“Œ]¯— ¼®4-ª=?è²XÎjëä,þ“ý$y"æ­M©| Õ‰åj?¼õÖ‰ ò8«9¤ÇÚW¡ú·¾?jŸÊv·óŒ®mCb>4X?i[5B±£Œ·2ÜÄa<ŸÏp0ŸçË<3È[}š;Ö¦,Œ22Ö¹0z?ã~Ü8mÀÒIE‚>n(©¬Dy2”dBâèóÌA|±Téýt’‘ò¦ [fdµÿÊ„‘.—\þ•—óJ®pë«L¼…ì¶eˆ%Á³ù2_åéAï>–ïðöeD #áM2¿ÄósèúC—O‹»­MâÚ÷11âlŠ òì°õò/LðJ®ˆòV/‹‰¢˜˜qŠH³¡íí¶öX^yBöl“e1ô+4í>VÅ„ÑÃø1÷ó`—»©¶käŸÈf +Öµ0úÿƒ%•@t‘` —éÖ‚”`¤·³û¤ÂR½Ì®·AYDQh½M@±c "Œd™FH°ÈÝêkÏewÛ/å_ u¥ÅàÕ‘]çmg‡Ïók<—/¶‡ZŽz}™0úû€Ú|a¤—[žKÝÙsy"(•¿)>ô m~ÿÂB„»eÝÝÂHæGXä!ü˜ûy(?ä‘<’ï1@Û¤ýþ ¾Â"ñŸ…lê‡Ã1»Sêz»€¥Ìš/²,û *jBÖÉyu9R‘ÅPưbÍ#}÷¡F¡`%ÁO'q¹;Ôó)I»Ûö²wÁ&›éJ³þ°"(’̈“@p;K· S†˜ŸÊuY}yg Ý}ëu^"JåŠWícd[íKÍ]ÛRdy²©Ì1Ä|¿¾¦rÚÎkÿÉØ¶iÞŠ¯l]ˆ?õz}ã+_È/©-C¨î¼á‹ÄsøòUîä©=¼a‘Çt<¿‡£#E oWZ–ŒŒaÀšFöîC„’M`úÂ} ¿(º,ì.AÂÄÔAŽaI?I&†²»D…[9ˆgð•`â°ËCëí¹BöèòH’†vRy?á§<¸Ë^}®“Uìü‚òRŽåJwû• V^"ÐËíð(¾ß³M0^‹Ñ ÌÓý­¯lZi›á¨Wæ~9êùÞÖ˼Šc¹²‡O1KCâ=Äݲ#;­“ºÔ‡-‹å« ßà‰@ûËî·óÔ®ë-t}®”§±’ÂËÐzOðk¾þ2ÿÅÏyવed +vÛëú«…ØÎ/Øg J*²LCÛÙícˆ%}/€Ë²gqk4H—-/KV)ÝtžíÞº{Ø¿§L1ÛŽæ£É f`«{Y.? ~ ÿM@?æ!=I&ÆËF¢ëËöOárÙ8…—ýb‰Jñ|‘ÌÛñjñ3ÄS£ËÄOøpíÐe{:_ Ú¬·³>ñ¶ !C¼x›Öó7¼õ?祜LñiFưcÍ #èïÙ/P ŒôòûBRo›P@NM8¡m½åÖ»­wlÁ}ìÛ³àÉÜHW;Àö#,GRŽãP÷BëCÇ /tL½} ×WW¼ue| mï34ŸÂÿØ>ö\Þ|™=±ýeuPÆIôviåü+å¡]§Ë22†k^…DJ…%öéãoбd˜ŒVeâà+ïîäÞØãmаò¸»9è:Óã}ùcÌãÕ†w¼X¹Ë®k‹”8Ú&¯îa¿Î϶»ÖÉ ~A¯ÏÂ'#cµyÃØÕ5_ö ž²éX‚)Kfƒ , ™gw-dð>HØÏ¾ƒ~o'”tdøÇô”7æ§~ª[»>ÆN…†Qç{0©Çä|º\žV –ººÒ¼z -„o÷9nê o¥i¾…Î=(Rë1¶M o=Nýÿ½*œËÈv¬™£Ð/AB?y\¢ÂñKEèô~^i/þÐo4BAIϯ&lp üö¿Ò|aâ}Õºs åÖçY"Ü‚¤áÙ³š"é>BE=óP¶}úMz¹øÏ~É[EYûXïk-³D…]]?²éµÏ;,Y…øš’¼úáoJ½Ïå…ìKÙ'嘡±¶K|¼=ÞÕDzÂÊûXˆËrúGÁ!;í9W ¶n½eG<ÞZÎ.2ÂOùeYþ£æ®=o òOd3†kF…~  d¹=1!ä—X’é'Áxð‚llˆ‰Ðß´:Q„®¶ÍŽCI$ô³Õ•$ÅALŠˆÝÎ6¹xck»N>Ö÷ž¿õÿ¿b¿ÊH±7ÅË! Âå~ù+IWæ=Ÿx×™·ÎŠ;Ö|—qŒÇeóeœ¶>„ÃÚeœÕâ½ÂR×r·^œÐþ•cY?öË,†2†k¾+m‘íiñiÿ¿ëgîòП»SZ•BÁÚ \e( ¤eÃùµ"ÀíÉa”…èz/ÙxÛĆð²`¢!äû”äbë8Ôª¨§SÍѰ+ÊÛA†ADQWSxlt9¯ŽžÉÑ!‘2È$q4e°vÈ[ –ÛeCìz/ãqYŒ)ã°ÇÛÌOûâY?\ÊÈ&¬™£ÔÏ8màØÉC±]i)ãA>¯¶'(lp´"@/Óz‰å&™E“`ùOáÚ;TX*Ê&ûh†lŽ%»2T&¢ôðr®¦Â\4ÁXx¶÷“\4d±T×Ë"#Aìr©]§?å—Ypì¶|*ãhH¨…’aŒ³ý&5ËW™ž`; ‰<ÑþÑ|~‡ìèzÒËG•w½kI£®±ÒÃA|1(†BË=Nh»,b1Äã«\Ƕžõu=Ò‰¡óʲûx8‹Îu¦÷ÉÂ'#c# ›XdYìN©l}(áxIÇÚ ó¡$—^éÉe”…ž¤aí»%°Š Önk«¶SŸW'™~’'ŽÊîÄ=?zðê ”\ìØ&}¾F íqåÈžo­íž}!Îjî-0šÄUïe‚#E Å8a¹jÅ|ˆ³Z Cײõ¯µWêFÛèqWGÕ³Cý¶(¥\·ÖoÞ|Š ònÚÄ7ÚO!îZÎzu¨ylíÌÂ(#ct¥-0öå>w¹$hì²2A+I0VPxË>Çó¢;ì™òAöÇ®³ûh;R“”ñjŽMJ0ž8 %•ÐÐ8ÖƒæåNˆs ŒòPîz¾ìx¡ó—ÙZÆaË×wËDÑvê®@J–3!žÅ ‰«ýpY†/ðܨ8ÒËBœµâÞówwC|õ¸â•]¶À(ä‡Qïöÿ22†k¾ÅhÞ˜¨/Îoóðï¾å®;4Ž%ïÎÜ f2¯Ç¡@Y6Øà PãFlWšwgXv·JŽžxÓçõF¨©ìîû•\ÁˆéJ‹Ý}{%9k…î–"í+=-œðî¶å˜â ±Ë&H½îû<’ù€­º®´M)íWÅ-£WÿGOäÒ‚“Ú/eci%’sh?ÈØã¬ÇÛ1ã][öz²ãWå³Qo§\Çe(Ež8Ò¶<–s–µr.Qá[<Û ªaýœ‘±Q±æ…Qì#8Ë„Q¨5 $’Ê’Œµ'†X¢ò¤¢žØ¡“½/$Œ´ÏBöÚÄ¢Ï«í £ò¿ëî7Ѥ$[¿ÂÍ-ñ•Ìk_Š?äÚnYo“µYûºŒ³w…«zÞãq™¨ )u#gŠ $á‡ö¥>¾FÚ/¡ë¬ì#9HÉ E}*oCBIÛ‚ç{ÍÕ˜˜·¾±¾Ócëo=Öu㉣,Œ22Ö0Ò-F6ìG‹oð7¹Ä’L?ÉEi/ÙÄJ&’H$X…’ʧy/à†âÜ:ÉÈ1äNѶzÈñûIˆ^’‰%I*:¹¤v«]Á«8‘K»Œ>·µIs $öÄO6©è±øÉ "-tæsëIÆ^òÒvoâ^vðx×nOЕ‰zOä—u ‡‘å€åƒç=\ÊkŠz“õrvñ, "íg+(-gÅnË]k§n1²‰]sVÎ㬆çón(I±Áó¡Eì11¯ãEH y±EÆOâë|ƒ'ܵ¾óø‘±±®…Ñò$æKKHÅZŒl’‰%šP l¬ |—ý">É¢º³ÕǛě\úµ7d«—dôƒ¬!aT&”N ÁH§ö¬ðÒ6h»4R†LC¯@‚nA$c zlí‹%D€oð„`WZY2ôøØOךÇ[ˉ2xáuü3Þ›’â+"õ9m×S't-Ê„‘ǕеæqVë©D8ëµ"…8`aËâpÐË´øÎžÛr×ÖÃÝ<™ùoSx‘‘±°f„QÊ—¯SƒKlÚ¾LLx£Q¤Ç2 úŽNî%iÈycwÕ«-ŒbI&”$¼ù°ð|“¯L±º´ HûV|î-KñM™Ý+ål?‚Ýãmˆ'1”•YsVû+äG¯Sö·¶‡l–sy6z¶¦r6´,…·)×{ˆ ¶œ!ŽhX߆Æ)qÇ®/ãDFÆFÀšF¡/_ÇZŒžÎÜÎ¥IÆ»ûöÞZ‹Ý{ÉHl‰%šX"„å(^ÌÇ»Î!DZMéeÐ^ÏN}üív¬[‘¤…H¯ =ƒÔàDNæâÒÄãÁó¿nyÐâGÅ_âgýL‘œÏ¶I2Ÿ—‰¢ K<•»¹‹§ôøÚ³ÛÚ*Ü q×òz5Ÿ1*ãÀ‹¼ŸS‹zó¸k[7e嬮¯T[eœÒ•–"‚lkçõÁ‹ùxrwpªÐÅ [öPK‘îþõüa[Š„»¶ÜÏä6nç€ oC¼ÈÈØhX3Â(„9Æ»æuP¸•gÿɶÉÅŽ½ç5lrIH)bà ”Þ G‡Þ‡¬_ÂÇXêÇMôv™ØdãÝ…{ëBÉ¥Ÿ;ﲨ“#ï.îjŽåå\]l§“µ—Lmùe?ÏV=¯ƒ£M0v÷º ·]l2þg~›ÓxOô¼ßd#u$­º<Òm&û‰Ÿô]¶Œ½äbíщÆúðPnæfîñ³—Øì8$,c¯ô{ûÊ[½|„E.äw9÷ÇЉY–i?{œ µv†‘µWZŒb¼µâÌI–³ã^ÎÕJ]ʵ,q8¯âá'¼ë …»!A$Û‹?¬ìú2îÚò׸‰›8¬§nµÓ„Q{Ÿ,†2†k^íbŸžerñ~ŠÃ™s@(¹xBIOÛ$H^úèàE’¼ÅnI.:ø°Èñ\ÎRçîØK!A”š`É£ù'~µÓ’´\77ð%þšï`q8‡ð6uq¶Å½Ðùxå —0ý<ŽJ‡?£Fð{BÄ㉭{OŸk9{–(t]ŠMGs ×pT·Öß«.ŒZI&­öLmŠÙ©ÚŠŽëJû0/cŽ´$HÞ²Pr  /iZAd÷— ¨ƒçÉ\ÌóîùËʪ×[¿…G+H^B9“ó„ø~"MIDAT1Ëì´µIûFÆ6Éx<‘íd+ˆl7D,¹xõjíüÇôtöxõÐ/g½e¡gŠú嬮w³2~ïbIñØ–ÃÖOªˆ‰"ko»+í$žËÙÜÀ<ˆwóB%Š–ÇÏçP® œiù?}íz?Œ—ñƘg„CyWp?–hwùú]ioʸë•Ïã®dJ¦ûD2\ÍË™‹ðÖóuFÆFÄê £Vƒ­Í3³3Tiјœdº9ËJ´QLééÔ$“’lBÉ%è-t“yX~eYl•€hŸÞ× "{÷mËòK*bÉß+ˆl²ˆÝÙÚéԣǶ;"T›¬S’Š—\bþIAˆ¯z:ÆYÙ.¥‹¸L˜h;B~?„ö !¯µ+ÆYÏ!ûä£G° ¸‡ s]Ï-Ûÿi>Ë4;zŽð|6sO(ê‘ 0Z¼Ûž)–/wb†ºc‚>T÷ÂC½ŸBv¾Bºˆq׫_ÏÆŒŒŒUF­fj[¨P¥>3»âczo¥Aû>‘—Q/M2~HO‡‚y,Éh{¬V@xIÑD²í?ñ{œÎ…É-MžôØúOÛií¶Ó6è‡ÄRªPzoâÍœëyO…lׂÁK&v¬“QʳD^y½±FílgÂõ½—ôûá¬.s WË’Wï¡ñ‹lc’7sn×>ÖÇbk̳^ySx í·Ò*ÜH“EjLÒâ︛iì±ùP^À%n9P-F•g¯âÔÎõöY¾Ásy‹|1Â($ˆBœ qÀ $ÏçboÙõ⬞?‰Ë¸ŒzO}ÛºÌÈØè)ß$;Z-6Ñdrb‚‰‰ &¦›Ám·mÛ'0Ëãìbêlgû°‹}8‘s2»Ø‡“¸Œ]ìÃã¼–K˜cœ9Æ9™Ó§ò~ægž1Nã"æcž1~— ™gŒF9›ó:Ÿwåü}1=ɶâ>ñxgrþˆwÓoã/ ›ÿ’?+‚Ò;ø£búüAq·y.çÐ~va¿çŒ²ÀóœÏYÅ4бrž‹81ægŽ‹9¥Sª9>ÈëŠéKx-ã»çË8‰}ØÅ8sl§ÞñÚ®®éYNp—78±˜ÖÇ‘ã3Ç8¹˜Öö¼—Ó ›/àŒbú<Î.^Ýoâ÷ÙÆ( …FXìòÏÛykáÏ¿àmÅôŸñ—…ÏßÊÛ‹i©—EFºêK×ãYœ_LŸÁÌ3ÆãœÆEONáâbúu|°˜~ —<¾YNÖÙÎã|€×r³î6'Ò(¦5o_åŴðvž1NáâÂÎÓyo±ü .`¡ÓÆ¡Ëõ&ÞU”]ü°D…·ðw=~jÞ ÞÎ[‹º˜æÓ -( ¼‹7Óçs–[ïqãÌ1Æ|O4.å5=¼µœÜN½xM–ø 3ŒðšÌpã6¦»¶×ǹ„×Ö×˲=‹ìäC¼‡ßánæ(Žá‘,ñ#>\”Q®Sˆš·r¿·ÓÚŸÊ_õÄ ‰'R_çpnWü‘¸$õ«ã•Žc–·:îiÞ.5?ã· ½b:#cQÙ¹s窽{Ùœž`zG™™:ÕÎü›ëJÛ¶mçœsW<¬ý­Œ²V;]v7ºs ±Ö¦²mä^beõüò×ê¡—ÇîfËîT½&ý²!Öꤗ{Û¤!Ûl9ËÊó›õ³†WG1nÚé”çÌúåîjq6tmyåñÆ1¿½—Óy=ï úß.K«ÓÓ`‰£x)ûÈݲ–}¬”VŸ2î¦Ì{ãßdù™œï®ÓøÞΟñ9#c±¢®´æôE£PmŠ) V¯wºÒ`SµÊŽV jÕÀÊñ \wçónÎêZVtc '4_öL„‡ Ýo;Isy?Éc“ü>Û‚‰%V>»~„‚i,ø†–Ùùwò¼…¿íÙ&ÜÅŸ¶üÚϱ„a—륕•ËúÀ›œÅùœÇ™1׺u¨§Ëøê-+ã–]g¡9«—iîþ-È[øÛ X]ýŠ¡oÀ/‚ëÄæØtï¸ýÛKy¿Ï¶RîÚu1îêòèëzŸ1J?Þ´]æ•ólÎãÝœä­Ø™‘±Ñ±"aT›š¥ë)¢fé›Pk7íhµØ´ypQþÃׂÿÛØE\ôC$¶Ì.?aÊsB68ÆŽ=Å;¡ów£2ÛSçûA™ð’@ªhúß¼ƒJI‹wNM.²,–TRÆeËbþ´y‡W/©b¡Œ£Þº2{e®êWÇÿ·ƒj±Kµ%µŒ!»4¼<†Ê›_Éë /õ»‘T.ëe1Îèëß.+ãê üµÓçòfv9vY÷<šLOÜÈæÙ)VösFÆê`ußJ«M1Óšdbb€j}†™2=&Œ ­«¢l~„Tv~äAFÙ9S—õƒP- ©"c1*çJFj"-[Ö/Rê,U@ô#FBÇ”¤í‰£A9ˆZ©0»Ë–¥ýÐò~„ ø¢È®+;Gê´7ŸºnÏ £&ÓÓ4©±yŸ9##„UÿŽQµ>Ãl½|»T *ŒúÙn%B#tÜX Zé±W£Ì)è'ù*¢ú]q_¥&ˆAG?Û”!¥~voûózÙZáí Â(u›•p¹ÑaEé çK9o?ÛîYaÔ¢1Ùn)bâÆ=xÞŒŒ8Öì—¯åÁ¾Ø3F뻫µa#bw´ŠeøX«¼} Âh-a5»·w7îÛù“ämõÛÃifW©ÏLM²,ÊXKX³ÂHPùó½mAFFFÆð£Ÿ·ÌòiÃŒ5/Œbà ¯Œó~ëÁÆ=½ßz°qOï·lÜÓû­÷Æ~«ûóJ•‘±»°æ…QFFFFÆúGÏ[Ìk«úå댌ŒŒŒŒŒŒõŒUýòõžÆÞnÞÝæòå²­Oä²­_ {ù22V ¹Å(#######£ƒ,Œ22222222:ÈÂ(#######£ƒuýŒQFFFFFFFÆj"·edddddddt…QFFFFFFFFYedddddddt…QFFFFFFFFYedddddddt°®ÿ•ÖjL2Ùhµg†ø§„­Æ$[ÙÂL½º·MY%´hLN"U74uלf¢ó—ÌÚÔ,ÃP¤6†´¾ †ï:kc£ÄÉŒŒÕÂúm1j5ØÚ¬13;Ëìì õÓËn&´l-2Òp ÕØJcÓ³CUwM¦§wPŸ™ev¦ÎŽéiÖ}‘:Îú2Âë Ø8q2#c±n[ŒZÍ&Զо·«RŸÆÿ6·hlm²©VeÇÞ6eQ­Ï¨¿lW©Õª4[-¨­ã;õV‹ÕíÆ†µj“õ^$ÁPÖW†ó:ƒ'32Vë¶ÅhG«Å&šLNL011Qta Z­4k[²–}ƒ&Æ&êë½;Z´6U‹TÝÔ¢5lYšúRæël#ÄÉŒŒÕƺFÍ&l™evv–)†¬‰¸Ó¾e£u&Ó ª3Sä§Ö†°¾6Àu6Ôq2#c7`Ýt¥5§'–/èÚS@­^GÂÙ¦j•ë¸yß–o¦Ú¤Õj19Ñè,œd’™uù`¨-ÛìT Z &'›Ôff†ãN}S•êŽ-jTiÑÚQ¥ºioµŠ¶úê Õžë,„aŠ“{ëFÕ¦féêoÖ˜¾± µö½ëŽV‹M›×ïÅÞS>jÌÖÛSëým™ž²µLN¶¨ÏÎ OËCµÊ¦Vƒf«N•&ÍÖ¦áÃX_Të3Csy¨m®8™‘±'°n„QjSÌ´&™˜˜ÚnfØ¢ö¢ÙhЦ'&ŠeÕúz¿K¯15u#“4h‹Áa¡ãpÖ×AŽ“}£²sçÎ¥½mDFFFFFFFÆZÀº~ø:#######c5‘…QFFFFFFFFYedddddddt…QFÐþØ{òWM¦'&¢ß•i5&÷°MYelX´š ¦{Or´ šÄ¿wT­Õ¨Ò¤1ŒÿñÊÈÈÈXƒÈÂ(cc¢Õ`ëtƒf¡7Úÿ‘šÝS_unÑl¶ Z‹k¯³¾Õl’¥QFFFÆîÇúýŽQFÆÀhÑØÚþ6Íi&&jLÍÖiMNÒhÕ˜š¢Öj09Ù U«S§I£ÙªÔ¦êИîª*µ©¦DIµš4¶6h´Ú¦Z«³ejù«ÃÝ&4ÛǨÉÿÕZ4¦·vÎÕÚ3S5¥f³ýñÈüé ŒŒŒŒÝŠÜb”±Q¥¾¥#XjSñV¢f«ýuä™:UZ4§PŸiïSmÑœ–çšLONÓ ÆÔÌ,³3SljvÄ•wÜ-Z@µÓÖj´EQmj–™z•VsùŸV›ªU`XJ›‘‘‘±¶…QFF µÍí®®j•MÕõZØÔÝÔ¼‘&íg‚ÚÛ×Ú —–!ƒVGål2M@ÍÆ$êffg‹–(O;Z¹3-###cw#w¥ed¬Dè´“ÿ#•u;ÀïO[Fµ^§Öœ¦ÙjÑœž¤Y­Qß25<ÿ[ËÈÈÈX'ÈÂ(#cÐnÕi­àbí.¸V«I³Ñ ÑlÒh4©Oå[edddìIä®´Œ é[-Ô6S£ýöX»ë,þ]$Û=Öþ^Ñ$MjÔë5ªj›P·[FFFFÆê# £Œ Š›kÕÎ[iÓîs@ýojfŠ ¦''˜˜˜ì<ˆx°{Sûm4=Õúê5Úbj²µ:[:-OmñÿÞQFFFFÆê ²sçÎ¥½mDFÆÆC‹Æä$ êÌÌ^éïk»ŒŒŒŒŒÕ@n1ÊÈØ+¨R«U¡Õ"þþZ-ùvFFFFÆîFF{ ÕzMnŒý•¤ycç¹£,‹2222öþ?)'ÓÄyÞà¢IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626426502.0 PythonQwt-0.10.2/qwt/tests/data/loadtest.png0000666000000000000000000040531400000000000015664 0ustar00‰PNG  IHDR@M@È%‰ pHYsÄÄ•+ IDATxœìÝg|U×ð33ÛÓ{c!!¡E:ˆD* ˆ¢""RlðØâ#*ÔðňX,€’ÐBï!@’MÛôºÙ¾Sß[³BÊ&œÿÉÍÌì½îæìmCh4hÿ***Úº ­$""¢­«€B!„B!ÔªDm]fÓ½{÷¶®B‹ËÎÎnë* „B!„Bµ6[ÖÍ3ƒ©½Ãw !„B!„+3B7ç ¬vý/àÍӭӮߦRQQÑ!Ûe…­k¿°uí¶®ýÂÖµ_غö [×Ý<_BÈlë „B!„B!t5Ø…B!„B!„¼v`!„B!„B!¯vÓv`íš7lu®ãgÂjÞ®,¹f¹«‡9¯|ÍB!„B!„Bÿàš;°Ò:,J»Ö³òÖŽ½6ïÚ«s½Ç7Iîêa1î û¯»æƒ‚ 9«2ÇÍÛÕhÉuHXxøð„f®òõJ[äüßèxço›gÉ5»ÊÔ*ï`ë°uÀÖµ8l¶Î¶®Åaë°u°u-®c·!„Ú·kêÀÊ[;:plÕØl…×ýO¶7IXxXÈY•dûm×ö/æN 0þ¤ÌìÜFJìrW6oÞ°†³³rW7(°N³Ê]=lØêÕóþá±E‹º„õï¶¿5÷œ¬¼µ£§m´ÿš¶ÈöÎ~/kÚ¢´FK®C×»w/èÚ¬¾.Ø:l]ã°u- [‡­k¶®%aë°uÃÖµ¤ŽÝ:„ꮥ+ï¯mðÞéU)ößSV­JÛ¿ñÎ!ˆ¼µ£G¯]»¨aÑü%Ç/8zmžËñ£×æýûñn‡·†„î½3²r®^’‘™øµ ‚°sîãæí‚]óº-êÝèt­ŒEY“íG¾³:~½*)iUŽ ¿ã1ÛIÂÎÞ ¯ú.Ø­9ýÞÛoi;6ΟÐuÌ”!Y¹y”Øå­=zÑ¢Ñ Ç•{—óÚî½ÃÖaë°uØ:l¶[‡­ÃÖaë°u!tº†¬¼¿¶OLp/H[4pI¢ÛÄñ%WÆ[çhÍÚøáÚ<èº`Ý{C†¼wZ£Ù½@µhà•—¬3¸NOÙ6mÞÕó×|Ûå5[¯¨š¿áM•ôÀxëúÀ±“çBföžì̤U/9¦k}±ÝÙƒe/‡n‰InIèÞ¾GÌÛ0výú±­Só® ‰ÇþŸô,9žÕcý™¶(­ÑwÙv¤—½wØ:l¶[‡­ÃÖaë°uØ:l¶!„:®kÛkHx·’¼Ü¬!ï=ç‚ظ# ì%ßcˆçñ°qšutlÛ;ëŸY$殞·:`ìz!gUƒM¶ZR^n–[G¤gIóhµ÷ζ®y`ëš¶®y`ëš¶®y`ëš¶®y`ëš[ÇnBµ×2+å¹÷`É@ç¿¡i‹¥uMH<¾dM€u‰¡m=xc¬“­\ŽÿÖãóÖ.Z›²Jsú½KÌ›AîêaD7Û~êóvÁØõ;aAD·E½w® ÐH‰SÆ¢nÖÍ×ÇÁÎà `ìúœU™ÿt°›„…¯ÏýbA Ûá ¶ËtÛòÀ×-ùÌ”ñ³l#>ö• ž%IÛ±qÈ”1#®ù]¶jù÷®!l]c°už°uÍ [×l'l]sÂÖ5[ç [ל:vëB¨]]ËA]ì> £Ú~ŸµU))§ß³ÍÚªI¼Ææu]ðÒ¬Ài‡¼wz·óx€!ï^×ø+Ùÿ4qÉÀÀ%¶cw7ë;ºŒ]/ëáê%vI«r7ìqr»\ÂÂǬÿu-ipÝ…O4~ý–·vôÀ%Ç``à’Y[5«VmÝèò6¤x”8·ÿO‡Y[5 º¬º–wÙªUÞ;l¶[‡­ÃÖaë°uØ:l¶[‡B7!B£Ñ@EEEDDD[W¦é***ºwïÞâ/“»zØcðõá–œ2uUÙÙÙ-ø6å­=ÖµÅó}[ã㇭kغ…­kغ…­kغ…­kغÕ­kï_ßB¨ ®i²q™K…B!„B!„ZÎÀjOZvVÛiï¿«ÃÖµ_غö [×~aëÚ/l]û…­k:j»Bè*®ew„B!„B!„Ú qåÊ•¶®Có¸If`µuB!„B!„ZuΩnŽ®ŸŽß)„B!„BÝ<Syp !B!„B!„òjØ…B!„B!„¼v`!„B!„B!¯†X!„B!„BÈ«aB!„B!„òjØ…B!„B!„¼v`!„B!„B!¯†X!„B!„BÈ«aB!„B!„òjØ…B!„B!„¼v`!„B!„B!¯†X!„B!„BÈ«aVëËX‘’’’’²"£±?ª7Ïÿç?¶õæù))ó7«Voþfµ½.nU±ÖÞy‚Çù]¿öêÍ+æ§ØÌ_‘¡þ‡ój’vêŒóç{„Æj&í4.à8ã5ƒv¶š¹X‘ÑØù5I;‹ß.ðËE£°ë&—ñýÄLRÚ Ôê|ˆS*Ô*€øX¥óhuÆŠ¥é / Lª ß·Zü#Ô®5(2V¤ÌÞ®²¥J_:ÛzóÁ @еÇÅì¥é*{\8ÃãuD×—D€{…q:šk uª± `P èšãB½y¾Ë· UúÒåÖN+Œ Øåe”Ó×¥¥¥¥-Nj•WSoÞ” ¢É%†\ À:¨>Û½û ”Ê8Hß„]¨…xiPdLˆŸ“š–––º,À¨åym\äÇ@ò²Ô´´4[X´õ`a\ ç¥qaç9 ˆqZš×…õ7kec­$jy^êÍË7¨_.æ$€jŸuÆ…“¨­+€Rož?{ƒ ’—¥-N‚Œ)KÓ’—¥Æ\níŒOžóÚâéÎÞÛÍ+lpû‹:cÅòMöQðøäe¯-NRz¾XÆ>Ø;­/l¥Ú0;eƒõÇô¥ócS×%eXÿ*ÇØºUÒðdHOWíËPOŸîùÝ(ï Š× ?@•.lÓAmÛkþ ×ùVvØÕÄÏYæ²JɶÃ6’g]¨‘––:'ì+cíߥ­³rSçÄC£3m‡YÇ>¬3)—%Ûϳž•¼,-mÝt%(§¯[·xz#]Êö)¯ÆxB­¦íƒ¢ÁiÖ¿ö! ÔF¼+.TùÎ/%¨MxC\Ø»¯^óŒŒ ÔúÚ>(l‡‚ÊÑ_°ÔÑ+€AÚF›Ç…µ§K•nï.S¥o˜íÜÝã—¶É3­]GöUJV¶‘‹ô¥³]g¤§ÌXœ”¤ŒPjÃìùû’GŽþZjZ#tévY„›Q H~+ƒm‹§jÞŽÉÀÉËÜ—ÒcP VåEq¡œ¾.mºu+Ò ³AÙ`› Œ Ôª¼ .lƒÉ3§+áŸvàŸ@­Ç‚¢â`βצ')Õ+f/MÕ†ï3¦»Ü-0(P«ò‚¸°×dYêâ$¥í †õ¥œĸÀ¬vË>rѨ¤Å©s`ù†t•J•®R¥oØ?'µ±Ñqçõœ+rÓ—¦Ø"4}iJú¿ži›Ñ¨ºÚµ‚¶ Ç1ñ. ¥ƒy6¼Y(§ÏLÞ°4Ý:Z¨Œ ä=Z5.flP56Æaƒq¼B+ß,\6LeÒŒ9ñéTŽ»ò­¯Y?øÉíi˜DýìÀjçþ)J”Ó¯›¾X­ÎPg<¸/=]¥Ú°|sR£ 3ùÆâÉMï})1B^ ƒ!Oy¸@È Bž0.š.!D!„B!„BÞȱ„ПB¸lÙ²¥K—Ö××·uE² hë*`\ ï‚A'Œ „>£Á€ÐÆõ@È›,ÛÖU@È»0x«@¨!L¢ò„IBn0‰Bí‚·ìõo«p€@ÖJBÈ \=.–ï2èærõ À[º9a…'L¢rƒIê¼¥ëê[Êq„N‚ AÀ€B7‘«Ç­1 4 IëÖ ¡6sõ 0q)C2üZ‚n&˜D!ä “(„Ü`…:€ö±„PK”³ÀXÚº"y‘ê"3'PM·uEò&-A²x«@¨L¢ò„IBn0‰BíBûèÀâI=çÜÄ!ÀL<€¹Bvfž¤8Û&!+L¢ò„IBn0‰BíBûèÀb ž A×ÖAÈ›Màà!BNF(,¹À$ ¡F`…PC˜D¡vÁ[öÀºú–r QÏ0„Á[ª‹P«¸z\p:c ©V«BmíêAabІ!¼ææ†PkÀ$ !O˜D!ä“(ÔxËÇó_öµT±2`½¼uk…PÛºz\ÔéÌÑ ¦u4ƺy\=(,œEÌÊh†Œ t3Á$ !O˜D!ä“(Ô´%„¼ e` c[W!/ÂéŒ,!b 8Ó!/ˆXaqû„œ0‰BÈ&Q¹Á$ µ í¤‹Ó0,£iëŠ äEx£™1kÀ}y²1òœ˜ ‹A&QyÂ$ !7˜D¡vÁ›;°œÁ#:F–Ó¶amò Œ3.xƒ‰!Ä&#¢›škže #0,×fµAÈ[`…L¢j“(ÔîxËXž«p ‚±õgŽ7°p¬p£Et3i$.hZÛâBЛhBb1á8 º‰xMbA°þ¬x +0 x·@7L¢ò„IBn0‰B€·t`5¶¥ àc-Í'à ÑÍ¥‘¸ ið±Å©7Z© ·o@7Ï pÞ* „ ¡yšÚ¢jµL¢ò„IBn0‰B@Ëv`e¬HYšný1yYÚâ¤ë9—# A¶_3ÃÃèAÖÌ5D¨õÝP\-¤=,H‹™&%4¢öïF‚ÂÂ9Wà BÊðf޼[ ö“(„ÇZx´¡f‡IBž0‰BÈ &Qè&Ó²K—LIIˆŸ“ºîºé `¡uŽ¡AÅÓJB:ï1QÇ‚`$ôÍUY„ZÉÅ­uÊy£Y¬ðu<$ ë‰@ºÞÜØ©y« O;&’˜¤”œ5Ó@8þZG ‚‘ø‡³òV˜D!ä “(„Ü`…n2-Ù´8-mñ5é¹½œÅ¢sü,%6‰Á×™{‘dQ-€‚¦¡öæ†âBçüÌËy#-Q€KEEÕD‘˜{¡væF‚ÂÈ9畘%¤”7@î()"ÉZ0)ðfÚL¢ò„IBn0‰B7•–íÀºv®ÛËÙöuyÞ³œh“„ðw›0Tv¥ H«+À¿5«‰P«òŒ ×ÇåÈ“EªKµ£D{^]M†Vј{¡Ë3(L¼s·Q£œr†:Á¹¤ˆ¡Â*‹´ðn:.L¢ò„IBn0‰B€÷®h¥9ƒýGŽ$€1ÊH™{iȳu‚ØÖèJ$ýünkõ:"ÔÚXƒí! „Ùl9!¡€qfc†Ì¢JI¸Ìþ ÙоÉÉmPK„Z‘™±Ý8Ž$D` O_(Ò‘u!±þºQ"¹Íϯ‘« Ô±`…'L¢rƒIjw¼¸‹· „ÉÀšeåÜdŽ&/iõÀ ާ$P$™×êuD¨µ±&ûÀ Ñh… ¡HÆ9õ×¢**÷‰klÇGæä´~%jM´=÷2„¤`¤Iç­­ˆ&£µúzÊv³ òHï½ñ!Ô\0‰BÈ&Q¹Á$ µ;Þût<ï™­€e$é̽HV¥«¡ÙØê€X’,ix =€u ‚Ù–i™kÍFB"’dœƒêTiQE@´Èbxha+ixNN‰œ¹WˆØ¤É Q@\¬î ¤x_;Úq ¬†,ð„Ú«FâÂb‹ ÆÂSrAâ’{q\¨¹Ì%.°m}RÆ›üˆhêh–Ìž{&“@LQ9…¹jŸ<ƒÂlø3YXÃ,ÃÎÁÂq •m¦nµZˆ‚Èê®—Hñèçlà@§!ï¨ÝÂ$ !O˜D!ä“(ÔxïB lw ]ná`¥"ÒÖ×KU:Ì¥±ÊVÂJø:#Xˆã® /!Ï·f•ji¼ýyÏ:ÉD)©@±¶²¨¨ˆ ò¤¬m€Q¡7ùtѾä8]ÐÔ[Ií¹ÒV®6B-Ç1xh²Ðr ,ÇP¶Ü«Š ütã“mÛFkô‚$¦Î˜e!\¯ÀPWâÅwC„š“(„<`…L¢P»ã½Ÿ6Òž{™MÕ4 +ÙY*'„z}©}K9ƒÙ\WK)„lÇéa DúË­\m„Za±åU¦*³I¤Ä‚˜³gcç‹ò©¸¹EÂÚVŽˆëŒ…Aq\V–ãt]±ÎŠÚ+˜{¡ŽÃñ¸k’3,0-²eZE,—F¢È,qdcæNºÚ‹ çv ‚ÐP*Ò·rµjQ˜D!ä “(„Ü`…Ú/îÀ¢lw½±†fI`%"Ò-ÕÔÉTÉz9r/JlÖ¨}b$Î-D¥€‚òV®6B-а?ïÙ\k2‹ä‚ˆq¶ÁÃÚ3êü Xßj)gϽXCIX·ðÒ‹ŽÓë* zÒט¹ê8»Ö3FÍp¼à^_)VÑR{6Fˆi¨Î´±TÇ%€J¤b-ðÐ4bñï"Ñ^“é“&žÐ óŒ Ò>ûÝR§#D ‚$öÁÚluEpE§*gÛâAÌ 4„c@TU%„…@m™Ž§‚DÅnšºÒ+À××òôÓM¾B7Â3(¹—Þb’³4Ï-¢8(2š•ÆJNåc–ÚFkÌÅú•ôɲb©DŽ­¾H.†¦Þ-~‹÷ŠDŸ˜LMlB7 “(„²‰Eèz4öÍ­Ë€âE¼-÷"TEÚб¤â¤œ·Ý¤Œ)Ü—¹@öI! Å:^R£nr•ê6ýÅø¸ä^duµôí·MkÖ4ùš];Ï  IÛÌ@[d¾5™Q}J÷Ù¶ 5UÔUÉ#" ÅM®€±ÆPWÞ .´‡.J6mjòQÇÕJAáxÞ³ÞÂKY Å-¶ 'Ò.„9!ô³ýna‰)¥§!ï’Þ8Õ´.Toª7ñV`ª²è©šš6‰%…µÔ?‚nb˜Da…=áL¿.[DuPZ×ÄÑHÔ±aÕÔ6¡Ž “¨¦]u`˜D5µM¨ƒkÂG-iqjê²9Éñ R¥oX:{vJJJKÄ•ãq9©§-Šå%öÊrÆ$J8Öÿ€Y ©‰ˆ—ÒbUΈ:{ªdd«Œ&I• jØ#M«@€Â\ÊC=yÎQRÎüQÁ‚Vwî*g¡›UkÅ…}³Âhd$V"’ ¶1™ÉHæ†8r/9gâi-Äuª¯°‹põN¡PJZÕ¤-HÍfÎC7H³L§/WP%§qOS䦕‚Â1xhJ™%ÀÑö©&FPó䉗âåfÁb!À,ë ‘¯y/¥±¥Jõ&³mTV›Êjš8|X P–òEõÎûé•r&¦‚͵è®rºYa…Iò„I&QÈ &Q˜D¡Æ5©¯T©Lš¾x]ZZZZê²äx°ÇÕüÍV3gî%2±‰ bÂÖ×+§øNW*6 `2”€Tă”4ëïèg»qBÙ(­Óˆ«kº\ó€Xüm£/Gù áÄ¿¹–DÉØ2=Q«ßë(Ñé–iI–lÁÙœRéÇbñ/-w}Ô‚Z%.ÄöÁCÒdá$bV.’Ø·oPðzF–gu3ƒŒ7š@ÁƒŒ|çN¹·Ô³Ciµ¬¤X®ÌwI•Ä?ÿ,þóOÏ×âY^–Ћ¯­w”hÏ« ¨XÈ—U: ƒ /æÉãÕ§š¾§é¿ò™6­å.ŽZP«mϽ, qf¹„§Å¶¼Ê(£´tXJ}¨Ü,-0IDAª3MûùY©£AÁè#uš]­ãšD¢oÅâF_î.Êo7×àOE²®åúÒZçL“ }|…VÝÄúkò±TúË?Ôy;L¢Z &Qí&Q-“¨ö “¨ƒIT»ÖÄMÜÕ›3îÛ®²þŸ—ŸŸ®Jß´yFÒtåõ_Ðó™"—§;3õ>"V*!l7S‚Ä¯îŽ 'ͯC­®"P2‘P/"GqR0 !D“AÎñ<#ºâ¸æEáåDE.0¸½AÄdö%úƒîÄ$k G”ë ¨)—¹Ó±rÛaRya^¾÷Îu ê):H’ù4=óú݈rÑ †—…3S%Ñ©|6èÎ4ËõQ‹j¸°gZ”ÅÂú‹‰Tb<ôá –\ÿ#ãM›äõu– …LÎKôa~½Ï1¶ù꣞‰—ûvŸ,ëñ íšªÅ©~l}PÁ=n¯¥Ùu’©áÊ?ßÙ凬%9ÇKXŸX-@+é69ÜZ˜ ½x¤Ëܰ‹…®çJRS¹[nán»íúíNs$‹H?V³qWȬ±ŽBÓc/QŠ÷_¾ñë£Õ Aá<´b«É‹ýna”QfiTÜÄÏä–ëMµþ1&‰È·Fr®ön‹˜¤Yè@,cta<_@Q¡ÖKýqQØ’¨x·×2Ä%1yà=º»-½«æ=£/»L°ÉÐÉZxI"T’{ªs¬ë¹E¢|’œiÖ ú¹\äÇðSÃ5¼b=)•ÿ 8bÙ`å¬'&QÈ“(L¢&Q˜D!‡&t`e¬HYjÝä3>>yäÌÓ“ìá³8cEÊA5@ÂÉó™"Êöܱ˜f-!yª01Ö›Œ‚€ò@ݘÓÝi¾¼FSÓ5¤¤ào¨±›jy`Ù+~¢>b™Þ\dÐútu’ˆ,Ee ÎG´ß‡½ËõÕKØo fˆ”_Û¾P®ÿ‹•5¡áùŽÃbüõ;Oß™tËA[=X¹Ï¤Ë&Y \kîÅGmS:­üeÓ ç¢ßpŠ&)š6›Af-QÕ¯ŒWäÓ¢}~ìÈk| 7z¿þõìí1¦µM;½ (ùS¬ùRiµmk­Žç=‹3'¥|ªý% 20z%š¹¶Ü ŒšÎ‘QY™|½Žç$åf¯ k¢ürœÛšøiKƒ™¨¯\_ýâO§ ßÛ|Iwä^Õ' h¥ÁìO.ê6y˜³K,lŒŠ$K.9N¥§—¾ð¿ì &]îEh4üÆÍÄ¢yÎjü‘$ímùâ×܋ݙ¦“59÷Òþò·ïsO‘Å™M;½i„Uë {1.¹5_´MµRP0"ûn£”DÄ™ U´ýnaP=ªä¦È,|m"bL2R.·(ï ­åkY6ÒOd ät•4jŸîŽ+çÈ,‘eŠ3>¢> ¦ÄŸ*aÍ»¢eËí·â }VbTJ¢‡]‰˜tþÐo}À¶k°“å>C/›fÆ\sS9°ß+àc­üy“ë§…áORfÚ,lýû‹êË;+ÎÒ¢þ~MœÆÞ/¥ž}!¦e-À(ùRÖhßžé&€I&Qÿ“(L¢0‰ò„I&Q˜D¹»“(€&.!ŒOž³,55-mݺÅÎXPÎX6£A,e¬HIIIIIiÂDG±}ðP,aX‹Œ`b¤ö?É zHýM퇖ÐêÊ@NBˆ/¯Ì¬gˆÂ²s •™i“¯¾Jéï眻Û9Ð|ò¢¯ªúu·×*¬ü1÷r #fMÔkINÙ¡j¸¾¬³Ÿ¿}«EBë#LÙDJOô¬÷YõsP¹ó“j]­©*é;UÜ ëÏ5Ävƒ°÷ 'ˆkI=œ¨äáï *×ôªãüû\•HUÙ ¿œ†Æ»Ÿ ÂDQGÁ¥Ã›¦ÎpDY÷«ëaµÂã‚3+ªv^¥ÎÿªZú5ò®%uâzñWÌÿixØÇ•²%7òBQwõLD+þ“á©UâBÂÛþÅ—Ð^JùS¡Öí µ&ø\œÐÿ‰ÑfR^SY Gg컇¹·†©)¬¹EÏ(Ch ¨Ô6Y0Béªí÷{ßýc =yìh¿ ƒ þr”°ùyšÐðš hÝ•\kÉ©mÙ—ü{3ÑTãœý.öàŠQ+}Žœp”µÎyÅžÎß¹ˆþݶÌäüýïœYþ—jìBÇ_‡ÎgÄÝ3äÒ6G WR!bèPC)Q]í~­ÆP—/®%Eo®¯3Jª÷œwÖ°ºš K¸´|»ó 3ç¡©ôµŒñ®˜†#OÔ²å¹O­v-1œÈ®™ü\“_¥h•  í¹—E$¥XšŠ`-ö»…QNt˜ñQ§Z9ÃVj´`”‘Áæ—ýÏk™’º"0ˆebÚ(1T–+œß=²¢Çgen+vÿ€ª.\~‘´HòM¶½XUÐIS'7”–Êl§ë€Ð*ÄùÙÅ2ljWˆ¿ÞøÓÑrGI¦ñjH?«¤¯ÔÙ>@'kˆ_B/Á§Æ¾ÅiA=DVò÷®Ø™ëüGïo î̬ú½¤²Á…þa¨ÒDG)Êõz™¦Ê8â0«u=lE­ ø8~½PsCÒÎjéò¹kÉÉ:ñŸzñ·yfת¥k+epêâê¦9 eae‡I`å€I”ãDL¢0‰²Â$Ê“(À$ÊE“6q_·xz’²±N_¥²AyÆŠ¥ùsRÓÒRçä/½î€r<.G"fYZšØ§'Àñ&ƒ¹D°»ìÑ"E?š#´æRpâ\¿ØoŸÑš©âòLËhÖèÃjCCì:!—'…³ÛŸî™åöZþÁWJ2Ëñ;Y`KÌlVm•¿EêoûdŸ-LÍ3 I[hWyÜ3§òªË2ó³ÌDAíWPËý¡£&œ×m´EÅ–·ª¹Ãmw²Ì¢•g/½ÿÒ ‘È5p&ç«‚jÉù}CŒÂO޳Ãëü22"¼Á(G~Þ¨ ð¶çK\¤®•­$7;J2kgîÚÓ?Äù‡"Ë‚Óúíy¾@ó90áþûø^ª[ì8ÆL^¾lÜh+,nÑl¤ß¨~(ÿÏQ’[ñÊþ þáþ;\ŽâbeÿMz `’•î%`í-©m°qìåº§Š¨,aÛùòŠæ]5(/kžpPÌ,äÑFÑA׳²‹7ƒÇüU+ÞåÑHVziØ¥úá| Z).Äœ­9ÖÄ‹)e|”h¨*ª5>omê?¬^0‘òZu™¦Âl$÷:¨û° 5¢Ðü3EàËhy…ˆÔ•[¯sôÛÌ Š~ÅCŠúÕíµzUœôUpNÞÿü·¶,Ê¿²Äî£ ”ÛÞˆêC'ÕáÝé .ÒþTéÃÃ^zñžm üÞ§ö¸µäôœÏ ÃN/ÿ s±ï£yÕ¢ƒïí¶þyþïcO¾ü[m÷÷¿c- +ÊbúJû ?ùÙßÖ’ýΑ5>íÝŽë……Ç{=&4vkð:4wä3Ž_™¼ÒÎ%çÓã&Ÿül¿£Ð'¡Ç»CWi¿µå^gïyµbÔ“çΗêì°¦²Æ¿pu îX§_ú:3‡Èñ”³dÝ£¾I¡Zµé’sÿ—’_Ô¾÷Ýa×sM¥ç©D]Ýù5é®%›3j#Uì>kýµîØu—ä£O¬ç-¶:—m?¦ íS¾qGƒ³ŽM£/!Ü¿½h¢»´Ñƒ¯A+…Kî%!Ys¯.½)XŽ×™Í¾zHTšG)d4[§7€QNœé|Aõì—ÁzS¶º R…ˆ1RZcy ¿õ:UF x2<㎨H·×:# ®>}WΕ߲s¬%¹:Ó—S]iP µäTž*1ß 3̖Р1qð]wë¹¼3ïÉ|ª´.ÔróõäKÙ¿ÛK,Ôp[ƒƒ­¿þU¨®Êü¿?ÿ33´,Gò/$–T÷)ßñ3ëÜ"âHBD’zczP¸ë¥ž«ÊÞw¡‘—XuŸ V~´Ò™¬Í­š}b÷þÞ¡Ž’uÅý}|˵€ñáþa>þ?©ªÇ›ÉgrdNî· €5ËÑj~W¹s׉ïJK§Ÿ8÷MˆŸ£„x&Vöj‚´á©PýéÊ “(§¦ÊµdS~Ý´bª‚µeWÛ jÇ— _æ9ÿWo+fnùcƒ ž+ÉoüV`âݵéâ¼úF¾˜Da…I”'L¢0‰rÂ$ 0‰Â$ “¨ÒÄ=°®‰Z?r†’FÆïS_çLG1%Xoš ÇÓò!£Xjꪫ4yÝÂ`À¨ISg˜.³¤Ù\År&`òÔQÛÒ{M3.ÖÑ—@!e£¿1?&\Æ[ßÿýÇÿ×u°¨i»„s_äè{ÿ6(òg¨ñ@YBÞ jØØÖWW•UE°Å‘rκ¶ fGˆÂ·`ýÒò±{®œù}äàgØRzabÈ-ÁªÂ]妨àÇO¾f1G›¹jº³²ª2¨üü]ñŠÑ‘!#ªªs,]ž®ŠÍ>ÿÖ¹˜·ûåg­ž8/"úòá#‡\^}>³pö¤¿ZÈÃ%Eádq¯;"df’11üɼ¯;÷&”< gÕªãœq¨© ²´Ëݵ´Ð_üÉ?WÄÀHU]‘@1 ÁCE!—ºÚ›š:mêôE¥¥3ÍfƒîÎ;Ô¿¿trðÊü“oÞ3øí´¬ÿHý=½ý¸aäý¾Šµ±OÿzbfdÙKÏ|ù§sEm7h˜èÁ·çæû’"Žly†£4$HÂ$Ñ*ø$)å@Ÿ@¦‚&ýöbß^o”Tmê’dÙúúoðàŸ? Šêv{XkuêÊ´ñŸœ?ýq\ðK¬ÆPÝ»ðh¯ÐNL}Ò Ð#¹§åDügÂPU©‰,ÎQä¼U«å5Ô x åß{Ëmwd)ãàà/©Q±÷gm§û.‘…Vžý;V™0b€ožZUÖóŽÖ~›8tü¶ô¼‹]ḿ¿ Ž^ýéŠ ^øû7o„Jî é}ºàÝ‘|ê'›·æë¤u£Œòs”ÈLi{ŠÄ¼rôG‘áÚòŠÕûãý¾½8h`&²ÏÀÌôýónð…O‹Mż±¸p J !õ¿£3°4—Ÿ•ãOú ƲɬùKye©¦('WF(†~D¥¬”ž†äº4xêF+ó 0 †½mUHþ® ß°^ù}õ/lßwù$·ç‡¤U¦G?™«.®æÙ*ÍôsÝßu¿÷}äVˆÐŸ ½““!—l§û©Ty½n$t¢Õ<Ð0îâÿe<ûÛ¡¯¦*væô×-ä-ÿ›½ºß—?§oÞ]Ú¹«ßoÐý="¹=ç2cÞ\¶¥Ï3qÓ“>Ü¥™•¬®2ÿû>oæŒzø˜ŽH²G}æŸ1“/ôÖùÿ~"!„ ìÞ%=™I¿´]DõÃt-qðRÍÄÇ™¹*X9ºnãŽÒêÃU'Õá·õÐspþôdz’?||÷¯/ìŸòŸQfüùØÿêûÏÔÇùõØ›ðYJþÐÑW~ò%¶?ø @˜ˆ~ǾßüÁòÒ9ª×ýwìˆæ¶Nz‡7„ ìÕ÷‹'V€H^ð锤*Þß{iÎðÕ©cž¾÷¿ïÈ"…ž¿ñã³ H=ýýœ÷¿<[-ÔöCî­#r«(æ~9õû·ÍføeùQvqÒ½·½±š3\]NnXùÛCik8ž,RV½p¿L&¯.*cµ´(DÆæ×/úf1¥²9¯è¡EsŽÙï¿—x.ãûñïMyâµÈ3; -¡;ñó‘«úJ?:ð‰ÁÛ¾•F ¥Ï¯<=áÅaK>Ûª4aÊœÞÅi»¶$¿õ*ÅéÖNYæw¬FUKhIש„òý|o§ª¼ÊàNŇ&{`@‚쯙/ÔvŸ9èÜÞ_ÚõÐ[ão ZDY¿b™Å ˜¡wJ-PU_SQUç–¨¼cªiƆ5XÌ Ç Lì{ïO²ÝFC…޽LFòf.¨¤$LfÍv:œyûÀ¨P…þÔª:«Êóé9çîN1|Ì™ø°‘‡´¸Œ}ïµpWIƒ"ë H¿ª¢9€ŽæWÇûû0ITm;¨>1qÈÐ-Œ,=:möšÒ¼]æòAÑÁß]QbMÁf~–%6²¾¼kÕùCƒ:òuÕÿ»Ó©0!äij;}¾ÇpúînOøw¾3ÿ× {ŸíQ½¡$÷ùa·ÓKºp*ÅeÓŽ‡£ÕºÌ>æ¨êR´ï ‘¥sµŸ<§^%2š‰‚u‡cBõæcÅgvmX”UD€0`DD¥1d[Ȩ'ÿZùvÒܯÉR3˜9Âðí;^}ñÀðXÍf͑郓¾Ï¼o ÔmÞ6ø¡?Ë|nW®Ë8´æý£…?É‚»…ña¿ÞÒuîº5A]ºm¯;Ö?!‚%4ˆ\\½¿Ê7îmA3ïŽÈªºÓû÷wçðÎ寏Ú+cÊ*«juõ ‚”•݉#‹£ã¨ØÑ¥¼@õSIò,‘|ׇçþ6Þ¹ôýû«¾{ýÑ}úâ̡Ͼð_ñéê¿5¦ÊïÉ«Rwzqsïóõ⢚ôW§vþ >}xŠüÖoÊsRâû]5r÷´Ãê=ÿ÷e¬:¢v½}OŸÑ?Ëý¾Û¶þ¡Á“·+$@þ2·gíÙKW"MÂÚOI^ÿŠÎ%¾/?žGûüÝsÈñw§eÿ¶<óð]a‘Ÿþ]þý‰‹÷×ÿžÓe¨Ô˜Ò¥ço§r;—>ŸfE s£DÆÒœ8æÛsæj¥âû$‘PÇyu¢˜ 6ýÇqñ—æêéß2.L©<ñÂ-÷Ï.ºË/̾ø³4dËGíž¾${ï”ùEúàY·=þö—£¾¼}oæ¾=é¯ÿÂW߬y˿ϮRU°qçø½Q•#¦}ìÃ×JûD­Ý1x`„þ·•˶³rR\ÿæ²·¾ø<²Óè·ý¨´ø¬ÙòÐÀ‘·~¹=LùÉm÷H¢Âß8þ÷^eÏU[6•‡¿ÿÀmuç×:óX¸nÀ’¾Ï¿OZB¿|½ä˜ôi·ÄÝ·ãõ×6ÍžpÿKŸ|¶àe*æá?'0w,˜1©úÄÞÈ{|µrwìänæzbÄ‚ ÿqß/ÿ&ñ3½tâÓY_}»¼ø©±ÿ/¯¼ùÁeÿS{zФ‚lÌÌø{Nùü=ïÿV¸Ã O=ÉɼdVeÎy+oxä;gV­\Z¼ÖÇ?aÕÁžÕçÕ~q£kvì œðDý¾5“ÿ{ô¶¡,ë7hõ¡¯ÿ»†–I‡Ëb&xù«‡~¹ñ£õ·ûW^É_YüÓéeΨªF¿Ÿ”ú×I-ñÄ‚__ýèѯÆ'§„þ‘úÑÊÕ>§¥J÷ÿ9á!ªVœ&ºïåWüX-CŠkÅ!¡tÕñ°á½»ÌRóÆÇ³?t<ä=ºStú‹·w š(ÚõÑš·ÖûcbÆ(z=Ñ‹öGÚwϯ¬IôD_X?eÞŸ}Ëûn<[ûçÓëgŽzùãg>ãyÞø^Úˆm{ÔâÎ…Š®·jœópò–Q¥O*ÉßÉø-ûŒ?ìûôÎ1ªïziÏ%!Ï|ùÒòpý«/µØcŒn,(,bÒD˜ä‚Ü,ËH"š•pÂåÂÌâêjEdÿ©’ e3ÏÊÚ¯è7e|ä óÈgÌezR :™4LîÿðØW>[Òž?1ñ¼‚ù ®º?莧·É{ÿ6u|ß\ï[ePë?faòœ;ωÿÞ' ÝþÉÊ£ ¿ªðßÛ£êü3“ÿó¾ˆX{ô#ý¨/Ë}w‡k‹^0n>YWŸ]QýŽþþS=v?¬üyÁ¯wœ‹¾ý]Ÿi…Áß VïY0þHÙ÷9'Fr¿ïñ40 ç–áwÍÞR§ªÝyžš8N.½[¾ÏwGÑ©»¦l RTN…Õ1½óks"ƒøë·®”\¢·þ”Q}ñ„tØ£ûföxW§I;J÷ÛG_\2åÊ–.k Ë/œÙ5ïrÔ‘ÀmƒËÒünK‘“öAòCÂÇ©Â-Ê»‚²;ÃéÀÓGï7½"Ð7¾¼æhè)'Îçw‹»óÃÑ¿³„D²ðÅwæ?ùCýŒcë÷ \jzãƒïߺ39jYj§;#û÷žÐ÷¹`aÇž?CoÙ¿hkÿአÆÌüLo]Ôí à ›k¹SÚYõØ®UZ[Ëèÿ£†>èJmyA&}þò¸ï?“……-9ùÎ÷–›önJÕv±&·ïØ£«"' YûQVïäY–!Q•C/¤§ß6ê—~DøÀ =ÆÂŒµ+Ó'ÍÊÉÔÜ’•úá“Ë_ZŸJš/¥]²`H|ª5Ÿëæ×/GwçåCÝ~gê‘t¨ë¸£EÔàÃÛNyüuÃV¿SšÆßË|÷Ó3Æxg\`…I&Qž0‰Â$ “(7˜DaÕî’¨–ìÀú7®Ûȹ²†™˜åå‘ãŸã}ý¢€ ° ÐL”˜YºL–a(Bl¾|ù\’Ö©r&½Ì¯~á”ìe»…¸˜¡Pa!"úË/?~Wd,_W8bèPŽýêï¤ë/ŠÌŸß9ùõŒô!¹eþƒ»óÝ»Ëöä‡*Âüˆ­cÂü™Äø‰Pj!‰Î‡äTP IDATdª_¢i´@m¿OXyÔÔeò¡å˜Jý âˆûŽN»*f>öŽk[Ζ¾=iÖúšŠÁ·Gü < çÕ™²>•Þž‘Y/ž0‚ Ý"Uäß-kÚ¾¸Käà§"ü™ÑçÆÑsÖÿ·nÔ-aZõ´Aƒ¸³ÅÓƒný¢ëíãu§ é¿oÈÓ ÷RYé¯TÐôP€¼ºÇÕݦO|&BñÝý÷>P{ß²^ÑYt‰šé«ªzFÒé…K1CKÁc÷m‚ûàn“èí²1y·‡[úݳî(­K¸mÎë|V[&,°.²åÀBEø€¡^åË|Ö[òIïlM»X]ßý¡—îæëà áVž‘›üì8ºVZW2fܽ°Ï? PüìøxB@çÍ'ÎUm6óÅêÂIw%n¼+Ñz¥Ç+õ{íî¤/˜€çÙQQ¢QóàÉóÕþ÷-D_´lVŠm‰û¡ìϺŽÝ6©·Ö¤Í>4õLÄ£CJu¤T³xÚ[Öý)gWî{ø‰/ymÅc³¥ ³µõTA´:ƒ9îVÜ ³à`þÜÑ÷ýÆ\šýbä”?.ö;@‹å^ÿæ_â‚§EDd)çL¡Ñ~`!¤9gÊM½I¤°iÉ8#]WQo$A SŠtæmoUOçëûÞÞ[î'“ úÐ’©ªß_[u9è©éÌXf@·ÿž{lExÖñ½oŒKËæe’ʽù(~ê“s¾þøî …Ÿöú_£Þ¯W¿îò7ŸœÂüšœÿe¢93î­{ XªT—\ðÏ5ævêwÏf@×§OØ¥žër÷̹F€'m©±&qå·æ-ß¼:2ÁZå=ËFøgVGåçén»Íw*=à’ÂÏ•TQÄeÿÞýâø[çûü½õÐÜa¡·<È×ÝõêìÁד6ßöBö .<Þ7ÿã‹!½îítwD@åYuÔ«Ÿ :±yÉL¹ÜküRîëÇ^úäÁ§ Ø¿Gùæ±;µáÃái8úå]á§Jdf}åÝ“fÌ6tX¦ 뻿òî]Sߟÿ)À‹0 @ @­ÚÇ-úæiGÞ™;&0ø÷ ÉÚÙsûM0¿=a ÷ÆÈW£"— û¿ô¨I·ßÇö€ ÌÔ¾]ÞVLÖ>~úëÝKî`>|`ᘯ¿ÑED :ÿý ëužcÝ,FoôQ†X&FŒ€¼¾;=ónåØI“¾°.ý°.\Ôû›_úkNÊÿ>ºW0ÀxgB@`à¦Ü'²î[8ê^ó(X ÏÞg¿NIÝdʽ4'4`.X6X$ `zé[€ùû^úiÂÖ¯"Îl2Z 0ó4Çtûõ2¼tësõ `DäÑ<2Ï,~.@îRZ(¨-ÔÕó>Ûäp)K³uY}EÑÝv·ðµè̲€%ä½|w×.ÑЩÒr¦`ÔkOÌziVçƼ¡ÜÐÞ·Á‹WjËèú#¤ùýÜyå÷~…¥Ýºw·tO;©*ô?¸pë‚EÃ$qХ̖gäç3%K« L_c”…úo«¼×ò@È»À@Þ ý4QDÏ÷§–ϕ̉zÒµ-;s‹R=w»®ôÃQ0p,ÀXqdá¾ÿ¨“çËë'užÜ„úQD?‘ÈSÏ^z#ôÝȤ8Æ?4B´I;Y—úXá³³Ç ¹ƒ¸AeÅßø “>:¢;qìƒ>ƒæB?`YöBMé2B`mEõ˜ªÂi3îþî˜pbvø#ýfIÄš-1bzfdBÕËB§„Š=2ÎüÌ}S¦@Xe¿º5mAÄ÷Ɖïê ¥šÏF?t¸¿¯ŠÕÊ…û`ó­6Ô§û[Vô”@OÛŠªø‹Õ?=:fÛÈ`M}@ÒØy°ëlÖ·3Ÿ5 5-êq̽ãFCÀ$îÙÿ%{ýßðwà·KYOgÈ]п êg½”ªVÅhñ€™xjh': òJxxÅR6Ĥ 0fîÙK=S¾NîWiÔô‡0™¦&†ÌŠ/×-”hîòykä‹«OiM^”Ãk¥OÞ ÐÖ-âÎÃ`ô0ë«}îÊæ~meƒ#_òüò¼ÎqÍño"L¢0‰L¢Ü`…I&Qn0‰Â$Êz©“Dµd–26>ß:Q­Îq}gKøj¥!QY, !>±Àð 3UKCtfû²LšQ3Õfްæ^¬9DT4¹ÿ})!¾s¨¬ ¸ÂšþûãOæOÆÅЦ€B\€N²§‹ùwû?i.Qó‡Þ·¼îÝü˜bÃâ&UZ©Ô§úìëæ+¨èÄÇ€‹.&0¬È{¬ <4, Ü÷nŽ ¢îX±$r`ƒ'@ÿè7yâ²³sv\_å« ¿²oÝ]VÞ-.@,„•èÄÕü®@üýG@{_Ÿ#=Ø7(Ù; @ÿNï—ÛEÔóýç:.%¦dƒ¦[ý•£©ë'®Më"^J‘ûÎÔ‘]ík`“º..ç„eQþ_[K²K×t Ö[œ‹ØúüžÏíÚyžë¥Â}G}^-I:?“}Vò¦%dD˜£$)j·Â?òlñ¨nöÕ¾®{iõˆHß“ÁÎí'îìò³ëõ ¢Á眂;Û ûèæóU·xhA7RÁbøJ’Û[æŒ!]"€&$5e5@3&Ê–{Ñ"As¬Ùl¢lï£ÙÏ_¢³œN8<8¹Ÿ .þ?{÷ÇYŸ‹ÿûÎugW»º_li}Sâ$vBnå)…­!…@SJ1--®h9?D ôpN©Oëšrî¡ Mi¬’P‘@ $ñ%r,[ÖúnÝ÷2÷™ß;{—Y«ÕÎJÏç/i43ûjg¿šGï¼óÎMÝuoùw=pÝ#¬®w‰ê¯è¸ë‰¯Ñk¾þ^§yÃañšä‡¼ypÇ_ñjë•+ëØ i]‘QR\ð5ë~ÔeÞu*p´I ѹº.yÂé:>,ÜwOz«k¸“{ïw"³ãÁíÅúþ(QÁ¼›Ê›ïÙðÐ÷¯þµô 7ÏÂm½ú›Ûþ«þ·ÏF¯Iÿݽë¿þ¿—uÝú÷“|vÕéó\ñõ?iúÐNõÜÉ+$)»«û>°9ýEÛ Ñ¶G²Ë¯þõç¾ú}û}{nyŸøs¯¸{ý£O³:¥ûM7¤—ô|òÞä[Þ·Ú:ÍÿôO²C½g¿ù·~âZö|þ½F~¬ø±VwýÛæ?þ£Fïßâ)>9¾½ë6çë»ÒK®{棟ù‡™/=û)»ãOïy²)rÛŽ‚ëj,˜©Ñû¥Þ|k°ëK/»ùŠì’Ûûßà|íÁ#ën¿úšÜ·'?ý÷üõNåo¾”]òÚÿõú_ï)Ø—« !(åÿäî¿|;ýåÛ³ßÞôÕ÷ÝTÚ”ET^Qèûºô嵨* ­ !"’,'‘H’Ó¨èÙéNL‡“õ8)ºíe/G”šÞþ‹;þßõ|÷š DtÕäTtÝÓ}Þèhÿ8“ˆ¨N¤]×6Ñ+»æç¹®{ntN5Ñ[›ÞøîØûO¬þÊ5ÆÕDîꩳQNüßm‡>üõÛR/'rÚ­™éЪPgâúÓ§©¹™ˆ6´ÔÍ8Œ»¦ç5#c´©)ÿ·xÃk^ã°·!»¤wÃÚw#¯8ÙsÛÔIZÓEDõ¢»álü†;^øNÃ}ëõ4[Ïê¡ oûÚ›Ú¿Ê+Dî}»þá,{/ãïmÏMÁ#ÂíéÄèC›Öd—_×èî:纔e!ýGðå­ÇIztæ#ŸlÊœ-î>~òÙ«>ù¦_Ÿ¢ué%¯Z-ü»Mw½8­¬óNÇ™GýPKˆ½ãº«òµ7®yî£ÏLQælqï ›Ä³ÎXó×Ú½Sæ޾°¡ésO§ûäµásÇíÛ¯+øsÜÝÎþ±æYnþ…÷oh}S;ÜÜ3Œþðe]]ÁÈ'¤µÞÙ"*Ù¿}vüÑöЫsçéß¿¹;7×1W8q©ÈçGï¹þª÷eðÁõ!Z¿‘*! ! !ªBBBT„(„¨¢ôÂyŠF×<6#Š =6²~Î9è.AbôÊ—ýâ÷Ú ðncÓ*"2æp ^Q5Ã{?,Sà%]«º9ünW]Xëæ#ŒBWѺÈ_ûà·|qâjÉí¾­èUZ…¿E“síj¯·‹ûä5A^lÝ¢ÚÄÜÍÌ6;Æ®½bí9½=ìtQxMckbíµGNnžÑ'ënºålkÝ{¨Wroç³ãõ7^;³¾-7wæäÔu/ãÇfr3®­Vÿê•­› 3@®WŸî íÆh~:ÄwÉÖùKN¥7JÒ*'·‡¦ð^ÞiÔ×=˜¿Z—»o{hž¯Òå<¾ûqÁë:Û;íg²Ÿ«ŽÐÍyÁ‹ˆlûŠ5T¼.ãZó¿uÝ€?reøÛù ×Ißo2NQ­(¯.dWæ³ÿmÓŠ“j_ÕID:“U}–ÓmUò>i†àL›Ù¦–¹œè45(ñ¤4qz†óþèDÞý›ãÿôKå¿vž“V¹Jñ9þäöOߪ=yË;½KY=ÿþ÷ ÿÏ™gn;SçýÕ>©¬mý6åìŠþ_Lå….±×¿lÇÙ6UæW·6‘d:¶Æ&lö2lAÍP0s9±M´g‘“m˜‰°ÆºÝßR¾øáßðüÕÒ¦Ž`Ñ«|ºIxìæ¦»7¬Jûú.î××ﺿ>¤Ù s‰hujÚŠ´¾òc¯|ÅY½%ìQw½x¾®íDÃÍ·æ}Bo\û}áz*(y ò݇.ì»òe½m¹Hq÷ìÔ/ÛÞ±ùDn6Í­V¿²µÁ43™à_;Ü{Û/òàœ7wˆ7ÊOŒ~Å©ÔðF鵫rŠ»·>òèõ]o …óWûbÔ~p]AR¹„¯t9ŸÛPðqìíp¾¹ÊÉ.º£%ô›Ízþ WØöíkhþ:Ü‚ý\÷ÿÄÚ‚6ÿñéñÆ‹M3ê?QD„…U!j.QQQQù+,ïUÑ[{vôïïÛÚ·›¨·_Ïen,2º÷ú<J¼ž£ö†UDdº,X§q’®›|º£Ò2DAÒ™ld/'6„ÖÕ… U¸Âr‰H$"ÅüíâWîûò»GRBKÉ«Èæ˜ûƒzùåÙçnL¹[{>ðwçT±“ˆˆ8+ÚÖùë×¼Ú\•J7tôõßZÜzõC”yvÉmz¹üTBûÄ|~5NèÛ$~g†Ûš]²¦åwŒ­¥Ü|Šh—ÿ(Ô‹‹ºÿÁ4ÞÎ[²†ÿ°l?"»¹è6 â8ÅœXìý·½ôJ¾VV]H®ñhï1zôœâ¨õ«êˆÈä$#¨Éš£‹^„2E™×¦»ºà-‘WµóGO4&[fùúô£¿Ûþüýoy¸ç+Ou¶^×Tò*k>ûíõ×d3ÛÔ4zã=W>õï3MkÓK.Ô¯ýõQúâ‘ÏÙOŒzët­ 9ÙȦùëÖe÷3¼Æá…Õ—~˜«‰Ì[Ï7]‘¥àÐÆÞ—~ÜySîQân}½>qêbÏvº\ ·^ÅgOøÕ¯Î_(~xëú+6\d Ÿr›Jam)«( ‘Ýw`ó‹OGSïàY;I¦#Ûuª,*†A¤‘d/Ûœ½œ¸ª±nš…:œ`»éº¼^1ÿéJ‘üÉæã)*yGï’͇™{U½L™³Å‡&Ý…?½ RÑZΜ–®üìuoØÓ‘J_u»º)úFñfñƒõ*eÎ=IþÏ_)÷&æ~èL‘{lñ“׋·ÏäRE_{ˇ[wŸQÞÙâ[‘yímž>uy¦QÞÙâÞUüÿ‘íûäEž€¶Ãq^z¥2´Uxÿ•‡57„¨òö…µ8¢|!jnQåðsˆªðX=;öíÛñÒ«Í5½œLtþ¹Ïÿ~×o²gY¤“ˆ,›H0yY5 !=~Ù²dQ2HÒu“Kw“¯nºŠ)Ž=J8,Û]Û¢~ïw6o:¬v•f/"² /²­Ò®ªÿ»'’Átöj¼lUÇÏö›çêô mÁ×Z7â’n¿2»ÕÏÚÆÿ#š×EŒ+ùšv=Q®ÛµÞ¼/dS­w_äiÅ‹ Ûþ,Ž3ùŸµruaY)«.ôçϽúéŸÝ× "ƒI®mrºmHÙì%q†-è®.z¡§nÍ*I`ÖÕq!ÒœÙUÃÿýòÜ÷þ#¯›ãŠ7ɲugÁð¯úÊö®WmºÉ»¬­[ûþ¡¯r»ÿ*û÷9tíÚUO<úBÇ­›ó¶Zû‡ouçy£éow664ä_Åèxû«£Ÿû§™Wm¾è6e’e뵯-ZÆ>÷Gó½ ‹¨Œ¢Ðe:{îÀ¡§Þ–ú]a"mÇqyG–îe/Ç´yÉDÅ´Ò£ºÂ퓮 gëãNö/÷—[Ô[îßüÆÃjiö"¢;¬‚‹lÛWiMWÕ¿í‰d:{m 5ýU}Dz}u政º-x Ä#î&=d^qcàݶ1Ïëݯ»’W5-ÿy[½9nžj½Ø³íËwuIdá8ú73Y3×¢—„¨¹ D­tQsAˆZѢ悵\Us÷|ùÓËeKëPïM›OXÊfr©™ˆL›¹‚%Ê)3ó¹u­€ Ïð¢fX|ºx›nr%7áè ‹ekÇuÛyíK›IšßG•©Æ7¢m­Ž¼³™ýk*•λ«#DG¡Î¼m,ëv˺}ž¿¬ãDuýÁ¢…ºúµ+íÛüÛÕ Õ0g]ÜtàÌúŽAJY…ˆ NâUGPmKñ’–-˼a1Ý12Ù«ùšfA›`º””rcAíÛnkúÔ»_ñò› Î'a_}CÏ•¯yƒw3Âm¯j«Ódãí¹;ü×ÝØY¯;~ËÖü­ôœæÍ|ó›‹–tn}­Z÷ÅùïV‚9‹âìáÞ§6ŸH)Ñ€KD$Y¶Ã˜-ÊËKþ’k™‚ì BÀ0ˆDÔišp%¥~:’´²Ù«ÝuûyMÚ<¯`È~W5¤²-"Ú¸:r¦™ ¤RÙÚxw2B=/&(7zn·¬Û­ùÔQÔqÔõ¢…ÿ[Wo»Ò&œ- BB”BˆBˆ‚"QQË€_:°J.Z¹‘½ÒãØ-‡#ÞÕ2½3ŠkÅÀ8/©†!¤‹'â¬ç8„IƒËïü5Œ÷Îÿ¥Mõ«Ù¯û¦ÔìÑ¢$XÊË(¹ßëb ㋹;X¦ ’Øéxjý¬N21FD&'q–Ã놭d&kȼañºcÊ^¥D×7èæ7%§äHþÞôO}jþ/­=òƒì×ÒŽ;>”ÿÓèmóoYÌy*݆ãó²V,Ét§Îεv¥Ç±‹–í0ÁÅö²W€¬)>ì’l™éìÕq&8.ÔÄ…Uƒs{{¯1߉ˆè˦šýz£b§f‹V¨OÐFS¡E=[¼órZ+B@)„(€"QPsü;šÍ $SGÌUZæŽQËfL°ä€j™™™áÜ(Y‚¤š–è-pC’KÁ–cª!V®m!óžnýC/½ÀbÓ™,kçÕÕÍ).ó¸^MWÔ yKÜ@@0 N³,Ù_ßÝÔbÛ ¦)á¹÷[6§£C¼r­rÏm/½*À¢’uºL\;6¬dÎ’e»oÁ ãÅ…sL^vó.'†\×”\NZÖŠ¯Î-¢[Cæ]ÝÜ?ÀÅ D”Bˆ(‚5ÇÇ#°êL5´m53ƒesgŠÝu¼!¸«%K ¨–™»vÊfõ«Îh†T¹_.•z¸R»¸$É«fÕñµSÒO‚±8‘ÙL44¾.3?I0(œ‹ †édžŒãÖׇ)N3šŠÌ½ßÅÿùÏ+·s€‹‘MgjM²Þ:ÔœôÕCѶ\ž3„`óÆˆ‡¦s²-vn\{ó´•ÖÔ:Q¥þW8o0<ÀRBˆ(…P! jŽ_:°J§”³\ÆÍH67¢g³—Åó‚!+§y@$1,I–Pm+÷„ŽYCˆ´Î˜æK?³ÀçJëÂä$=`‰§×«|0½L^"‹d#%DêÒëÁ gê‚n°pî)¶|Kxæ‚ÛÚ@µ¬´(DÓ5=²1®ä²—í ¼Á+u¢7ì<$ñIPÜÜÔ ÍqcV\¶1˜jB@)„(€"Q° ø¥«tJ9Ã!C¥ˆ;l™^#m›c¼!É&gx@¾^IÖ\;w÷mR—ê5Ûšói9µ¤´.t&ÇyÙh1e/WY¼H I¾±>½D ‡\S3 eŸ–CÓRS}ò»òÊ%l>Àâ+- ÙtÕ»dÅñ. ŠŽår‚&(!ÑËUAIÖÉäƒÊe¯FUŸ–šÂî|gð-„(€RQE¢`ðïX¦Ãâм8¦z— -KàES’mE𦠉QtÄ€‘~ÆgšnëÂ&ïTp”/@µœDRèäTäXóËÒK,AâLW1SrSúj"‰uAÉÒ%SãëBÙ g•–&u\l­¯B£*I2&30¯¼þ¤7¨h[./jB N–ÓK‚ÅàƒWB\îÁ3M¦9ˆDx<ò–!„(€RQE¢ æø·˲™P[6œh3qNÔ²£¼ ƒŠÒ, ®0yªËnè8õuWäçØ)@39‰×$ñ©Æ:愈ÅKÌ"ÅJ†:¼ÿ@Äúli’¡ õ¹ºHÕµ4“Õusì –I¶­pfҽƌx³0ˆŽírBJ”xï6¨°¨h¢hð…Ïõšmg*hàü{X0„(€RQE¢ æø÷3g:œÁ'"¦Z›^b[/š²è„oþÑ Ò$ñ$I–Ìå "p-!ÉUä¶*4 Â ^L„#Óc\´3½ÄEN§ •Œ4yÿ¥š²¥,UnÌMß`447XÓá6\T‡åF2m§ÁŒÛë»2×EDz9)%‰õ¢÷I ¨¯ ˜»q¾¸é ÔÌËKßf€JCˆ(…P! jŽ_æÀšcžE›1.^×®‹Í¤9ŽÈ‰¦,º²´*½Ž$µ-¹1½‚ÐâÉ‘W/UÛ*eŽºà%~:Ü>9\ÿêué%¶(1Ó ÙÉP£wDi–ÉV-Kšófá]Õ>—[qñj[iQH–m×óçÄŽN1@¤‘è:¶ ¦$Q‘½g«$Ic¼ÆË!!÷^˜ ñõ²Ô<„(€RQE¢`ðKVé”r¶Ã…­ ¡f¶7§—»Ž$Šª,,®&›ˆHÛO’ä(¦ìæR ;ÈÈ×’C5­´.,^Š[Í“cáÍ·§—;¢ÄL7ä$•o²†ºú€e«6㥦\öÚšBNR\&€ZVZ¢cs!ù„Ô|KØN/—Ȳ9)) Š,ÙDD•ñš G„Ül£ R du†L8[@Cˆ(…P! –ßBhó6Ñ&» öué%®+ ‚¡p¤7}ƒäÔI¢ääÖ+Œ®« ¨0‹—â6ßeÄê¯õF¿“$‘e‡œ¤Òâ ô ‡eÅQ;nÈÍËÛºªA!µ®£ßa¹‘l‹“B'[åÕ ™ìÅ\›—’ ÊT€,9j€i¢rÿ4¹”Â"Šσ †P !  BÔ¿ŒÀ*eÙ<ß4¹ÎeŽ“IQ®,Šf‘ä4ºDD$SƒÃ( º¢•›¬¡Þé–‰êœÎ9v Pã,AJ¦Ü5\ÌéÌf/™Íš!JZ!ïâ¡Ò¨0Gu‰Õ5äN3|{³DF*‚ìËdÛRªclÛåx×e榘” 2ErÈ%"RdR–’DEÌ]{c{·—4Çwo ùìhæCQ,Š¢\>; ùP †º(—Ïh>ÔÅ‚¡.Êâ³£™E±`(Šrùì€æC],ØâÕÅðð° ó5öí~ðÛcÕnÅžøBoooïžÈ}ûÁo¹îØ·?˜[XEEÍó×Û˜÷&e¿ôÛègþ:šyP ‡¢(›¿hÔÅ¡.Êæ¯šu±p¨‹òøëhæAQ,Š¢lþ: yP W~] OOOOOOcÖåˆ =6²>­v3ŠÅönßç¾þÞÜ‚Øñî»{¢DÑž»»ÇbUlÍÕ<½Ñ-»öíèIé½_þzýÍgG3EQE¹|v@3PeA]”Ëg4uQÔEY|v43PeAQ”Ëg4uQ–E¬ t`]ŽØèH÷ñ‡ü3ÏݲËû8xb£™k4º~d´Êå4Wóüø6ÑÐû×?°%ê³7Ðß|z4Q‹E± >= ¨‹Å‚ºXŸPÔÅbA]\>ŸMÅbAQ,ˆO(êb±”[Båš¶ õìØÅ¢Ñ(Qlïö¡žÂ ÌO߯¡¾‡ÖíÙå‹¶ÔŸÍZãÓ·E±P>= µÆ§o#êb¡|z@kOßFÔÅ‚øôhÖŸ¾(Š…òé­5>}¡.0ë2Esñª>Rð¢¢ë2£ðb±ãÝë|3t0Çooclïö¾‡ÖíÙµ%Ý,ÿ¿¾â·£9'ÿS¿½(Š2ùí€ÎÉÿ‡Õoo#ê¢L~; sòÿaõÛÛˆº(‡ßŽæœüLýö6¢(Êä·:'ÿV¿½‹TèÀº…ðÑM¥E¢Ñõ# Å|wï«Çooclïö­£ìËÔùþ ô¿Í‹ñù1õÛÛˆ¢(“ßèÅøü°úímD]”Éoôb|~Xýö6¢.Êá·£y1>?¦~{QeòÛ½ŸV¿½‹W¸…ðrôìèßß××GDÔ½ÍÏCB{vôïïÛÚ·›¨·Ÿïšé³·qèáÝ#D;ûÓßvoÛ³k‹¿ß@_ñÙѼ8SŸ½(Šrùì€^œ¿«ÏÞFÔE¹|v@/Î߇Õgo#ê¢,>;šçïcê³·EQ.ŸЋó÷aõÙÛ¸ˆuÁ†‡‡7nÜX¡†,Ì‘#GÚÛÛ ·€Ï¡ | XàkèÀ_Cø:°À×е\Äönïëëë""èëëëÛ¾7VíVTê Š ê ê ŠÂø|°¹¹¹ÚÍ€²Õ_{½<ôý_ýòñ3WÈOìüÎ1êíÿç^[íVTê Š ê ê Š¢z&&&êêꈈ oܸ±ÚíEÛ»}ëî""êíß·£§ÊÍðÔ@@)Ô@)Ô@Eu9r¤½½p áòÝò@o7Q÷¶ûQKi¨ €"( €R¨ €R¨ €"(Š*CÖr24°sp„ˆhd÷Öô­¹€º(‚¢(…º(…º(‚¢¨2t`-C;‰º·íÙ³­›hp' uPEP uP uPEQuèÀZ.ÒÅÔÛ¿kK4ºå3(("Ô@ @)Ô@)Ô@…`wð#LâµXàkèÀ_Cø:°À×о†,ð5t`€¯¡ | XàkèÀ_CÖÒèëëëëšë‡±½Û/þÃJˆíÝÞ×·}o¬°yÛ÷Æ2mÊ6¹ØÀÐÛ\¾, "¢ØÐÞí^5lÈn€¢€ÅQ³u1WY .`¡j´ò\üÉ/(’!œ;`–a]̱E—aE,÷FÞÙbÅ×:°V¸¡‡wP÷Ý=ÑÌ‚Xì8­F‰b£#DÝ뢗؜(Úsw7ì~xÉþTØ|‹"¶÷ó;wŽx+ îÞêKP° ͳ.b{·oÝ9WY .`Y¸¼ÔØ9Xº‚"Ù¹Õû75µj1êbÎå( ¨U‹PC}[sÿhä-V|] Ëg¢[víÛ·oߎž%yµØÞ‡© ¸òJ*¯ÎzvìËÓßKDDÝÛîï!¢ht= >´‚»¡²üYé3Q÷¶=ûöíÛ³­›({.AQ@åù³. Ë¢[7ÑÈîÏ{=»¨ X|þ,¢ô(«­sü›žÞGÁ¹#S¨X$5XYŽ¢€ER{E1´(—¨z‰²¥°ÒëX>S0¾1;27~0ÿ† *XXø“ØÐÀö9†½ØÐc#”é N¿pßÎA"Ù½µ¯oëî"ÜY4BÑë!îíßµ%]w=wöÑÈcs¿@¹|]Þ¹)ÚswwÞ^PPq¾¬‹ŸÇŽå•Å–z‰hd4½SÔ,>_B,;±»»»{Î}ž;P#°¸j¬..^/( X,5VD±Øñn"ê}`Kúdqg/Qöl±ÂëX5`pgnüàÈàîÌXó¢…ù·j¤‡§Ï1ä°Plt„^ú&ÁÂM2WïÏu`G×åÇ/€%àƒ¢ð>÷ésGæ_’Ìv( ¨ÔÅœŽÇ¼»Q°üQݽÛú÷ìúÌÝsÿ4sí=}5•çﺸx½ ( b|]Ñ-»vå ‹yW½}®ìº@V-èÞÖŸ7x÷Q¶+©·Ͼ}™aèÞL™ø¶=ûJ¨çñVK§¨ôÀÊþÞÌvé­zû÷íËŒ´"ÊÞâu{ŠâÀ¨~QD·|¦¿·;}-¥oëîêÎ KDQ@uT».nIðGJwì¦_9›°P°4ª]QŠnÙµkÇ–ž9þyIÿ_S 5•çߺ¸x½Š*É¿EQ¼Ç½Ÿ/ü|e×…PíÀKë}`KOvðà`æY/ îÜšÓìàþ¡==ÑõD#4²{ëöÇzï¾ûÎÏìÙ½hŠÊïΟÉdt„¨÷΂…ç~•32#Zàõy€Ëã‹¢ˆí?žÿÈÈñýCÔSP( XRÕ¯‹žû·uîÙ½sëî‹6u•UýB(j_׊_Elïöô]‡½ýÅSx­ÐºÀ¬ZåõíέgÇžm½ÝD422¸{÷έ[_úY›±½Ûs÷äfnÔÜÙ—·eáÄ yÒ£ªli‹bh`çàHæÍžþ^¢‘ÁÙqÄ( ð‹¥­‹è–]{ú{½OwozçE÷ÖTARÓœæ.ÔT‡_êâRP°¤|VÙÞ«îm{ò»¯Vt]`VëÞ¶'ÿ¿¬è–»¶ìˆÅ†bCû÷?6882²ûó{{æZuþ]·^wrIÿÕEÄTÇÒ…÷lÞ; ®Ý¤¯ÏŠ|géNÑž»öíH=4ÐGùÚA]@•-ejº”ã±ô^ î4!ÔT‡_êbN( ¨_EÞØ«=; ÿ_ÑuXµ*óäšÝ{sHg§@¹G+ì¥hOÏ–÷ß=wmA×mtË®Ü=¹y7êææÀòþa_?×PI¢2æ÷XKZÞšƒû½×òžu[X( ¨¾%­ ï±=ÞUÅÌ<E#åQPKŸš.ÝŽ¹âAÀñK]¼4,ÿÅÐ@ÞØ«¹W]¡uXU3¸³o°pI÷¶=»æClt˽»wÜ¡ëÍNåÍB2¸{ë`n’9îüKßÇ›¹ ˜îÊí^—¹"X´AÑÃJrÑž-€yª¥¢ˆöÜݽ{d¤ðùìÜŠ( X<µUëhwú9Ñ» _Šue©¥B˜G;ò‹$÷dÔ\¦åR‡¢€Ë´LŠ"óœÂLE½ýûvô¬ôºÀ¬Ö³cOÿ¶îLowon¨ctË.ïÝÒŸå)|g^IÅFG.Vs,-óë‹g ‹Â›ë'ûZݽý¹›ÓQà'K\¹v÷öçïuUU•Ôt‘vIn^Ô,9¿ÔÅÅ (`Éù¡(¼ñ¹ýñŠ® 6<<¼qãÆj7ª#}gíÅnò]ÊøŠ ê€*ÿF@-ªèçEµ'‹J8räH{{;aÖ —¾Ë×›‰aÒĹñï5 EP u@‹S—€šTɺ@Q@MÂÉ¢¢Ðµ²E·<Ð[^yytçüï,ð5@)Ô-F!\jjTåêE5 '‹JÂ-„àGÙ[ýøÂþþþ;wÎÌÌT»!žúúúj7uþ‚¢(…º(…º(‚¢(5ϺÀ-„àkèÀ_Cø:°À×ü2‰{µ›à;¨ €"( €R¨ €R¨ €"( XüÒµsçÎì×(-€4Ô@@)Ô@)Ô@,µr a<¾­Úmðîüùº;î¨v+|$Nt[8\íVø B@1„(€"QPj£‹±ǽPíVø ›šâ¬v+|$ÁØ \mœ×– B@)„(€"QPjã3ʘIDDn•Ûà'®eU» þb2F8UBˆ(…P! j‚_æÀz©»pSDŒH' ,Qƒ|àÒuÁ,‹\œe`e¹tQàT+B@)„(€"Q° ø¥ëÒSÊÙ,îcÌt]¬ —® cZu#à IZÚvTÍ¥‹Bµç’ÉXÿ–ÀJ‚P !  B,µq á,;k‘C¤W»!>2>¦Ù.Ï £Ú ð u–qN¢J!DAˆ‚šPX—°s“8‘“TâÙ Cs8Þö&q€4„(€RQE¢ &ÔF–I36‘Añj7ÀORªM¸x“2‰·IGMäAˆ˜B@!„(¨ ~™ëÒSÊ™lÆ&2YÒ/ÍX—® ;®ÚÄ›Iƒ_²TÛ¥‹B5o“i2ߜܖB@)„(€"Q° øåãùó꬙,¡,m«ªëÒu1×V“hÄ Ô¬—. ÝÖE+`˜ŒP°’ D”Bˆ(‚Ë@mÜB踳–KKU»!>bÇSÌ$FúxTÇ,×´0}@B@)„(€"QPj¤Ëž6‰,sºÚ ð'¥™$ZIÌË àI9¶h’n¡(r¢J!DAˆ‚šàç¬\ñ¸nÜtɲg«Ø_0suá$U“‰j aEËÏYšëJ¦kZvÕZàQ%¢ !DAÍñËX¥wá2f¸®˜þÚv’–K¶'L´+Éua®èÕ…›P &é*®“À RZc¢ë¦¿N¸Žd¹¦mΰ’ D”Bˆ(‚Ë€_:°æšRÎ ¥—¸®j8d»x4¬,sÔ…aPÈ« .‘Ò™¬búXIJ‹"wª J2W2Ãv«Ñ4€ªAˆ(…P! –Êv` ôíLÙÛ¿oGÏålkSŠ£F蓮™f‚‹ÜB€¥WV]¤t.Sœ®œdàâ!Ô¾rŠB·swç“MG³MÂÙjB@)„(€"Q°¢T´+;Þ½mÏ®-Ñ…llpñ@æ\ÆtÓf¦™\ÄÆTIyu7³§AOi\ÀLè‹×6€ª(«(Lƒ£ÌÙBe,`Ú*Ã?$° D”Bˆ(‚+K%'q =6²>º Z""“rI‹ç Ãa¦'@Cí+³.òƺ‹zJçVÒZœ†TKyEaä-•çdËÖlÌ? µ!  B@„(Xa*9+6:Ò}ü¡¾¾4÷xÆÒiäòYnîq9oš¹Žš¿‚ <}ýâµ òÊ« =i„3_KfjRh²Ó7>êD£Î5×,b“*«¼¢0¬Üd *Ç5–&;ù+<.®{=Ô„(€RQE¢`…©dVÏŽ}ÑX,Åönê)*¨üiäò¥ËÌ4§²@yÛÐ+Ì^Šò1˺KU¿Z‰¶TJyu‘ÊKZ²™Ò¤NVøèàG>b¼ë]Úg?»ø-¨òŠÂ0ÍìãrT‘o·4C(ˆYS”»,뫪:Ç.| !  B@„(Xa*y !EsãÇb—µ©eÍd¿–xÛ08›´üKæ=6 v”Qj*7ÒW¶UMP­ .(•rëêÊl ÀR+£(L+wˆ* ŠeèNÁt’ŒáT5 !  B@„(XI*Ù54Ð70”ýîrï͵¬Üèw‰wLw¨`žE‹M<Å=Wf–Zyu¡çMß°U]T\­àâ!K$ž|Ù jJ™E‘—½R/ÛºáŒ~ŸµXè© _­XtQ¥¢Š DÁ SÙ[û÷÷õõuoÛ³ë²éI¤ñì¥Áï:/q¹s cS¹)–X¬Æ,‘òê˜Í]óŠ“2¤ åU766N<‡ì5¦œ¢HÙ¹q%šÄÉŽš$%»dŒãš'I âdµ!  B@„(XQ*Û5ùÓËyóæ=ïYa®¡J,’»lbòGλ®<~Ž"KÙL€%UZùËQ\U—ƒ¤g—Ì>çZ.È^°l•…êäfM)L¶“Snî1“o=ïêò8álËB@)„(€"Q° ø÷ŽVÃNf¾´9Ff*À±\öšæ~=¥3&y÷èJÒ7Âá[—¼KÍJzaš¦’Â$žÌ\K;/µ2 ÔõöV¡•KH3½SƒMdsL ¤‘}úÑØ4×1¥«LJû Iº5žc/Ë B@)„(€"QPs|ÜåxSSD–àùÜ$swx6A–›}JÏqÇ–¼KÍR3S©]‰çÌÜÐ_}dìlh•8í­ãÚ6÷â‹KßH€¥dd²—ÊX0Eœ›2¸Ü©mÌàVÏ&fxïdÁãü{âX,Q¥¢Š DAÍñïG0û¼g‹fSD–ä¸\ö⬑øŸMc?á’"‹ãNî#AäÀ2âj^ÒÒ&µ ’Àqfî¢:zì\ýjA÷.EœÙ$=":'€eDÏ<.'eQ0E®«™,ïâ!g­R'TÎ[Âÿ„—Rtª0~áTËB@)„(€"QPsü2Vé”ryç›42M…çs÷è†ø ñ“ŠÔæuÂÄ'·•;è8Ùuêë7¤R_7Í7V¸í•2G]¨Ùì•R¹ ‰·r£ß'FÇ7­N=›þ6ÈÔsÔ9tȾé¦ì:õÑhüùçË|È.€O”…áxÇÑ4.h:Ì4L>wj ñ÷Z' ¡-ým*L­çé`+×™÷”è õõ_O¥Þ˜÷o @mAˆ(…P! –¿t`•N)çf.êÖyÃ&ÇVx!—½šEuúèzá–9DDlôàøâÄÇê­{²ëØdMs£!¨UsÔ…îÕÅô´îðŠ+åe/ÛnÑΤšW‰£ÞÔ'g5ÌVóO d²SU—qæØYÙ jSiQh™ ªnM›Y¦Éå.Ž6‹ üEú¡ÎF;Æ7æÄ{ês£QȦø4G8[@ÍBˆ(…P! –ÿÞBHÌ;£èÆYÝfdÉçõ W· IDATõ2v!î’vzÄ{K,É™J‘Î~ž¿ŽœSÜsKÙd€Js2Ï{ŽO«*te—·¼+ÜØØ ¶®1ìÊ–w1˜PÇBkgŸ8œÝÜžÑ]iòÙÓKÜl€ÊÉ^>,B@ „(€"QPsüûiã2ÙKSÇ ‹\K2-þÅãäÎ$®’3SÊ%5mj’ºG²›3–4ˆ„Ä KÜl€Šbº—«Ô š*]ÑíL{nì8¿¾YÑ%Ë»sDœJh\o:”Ý<~2ž¢àä0²,ÙÇå$-U1-2]Cð’֘ů?N)6¦IÙ4¦uÅ'sÓ5$“ :-$–¸Ù…P !  BÔw`ñÞ%‘š0,Ž,Ià¼j矞ˆÓ…À5ÙìÅ‹Út,Ô)å&VÔÙù$Og—¸ÙÅ2Ï{Ö&UMP\Álïâáä3±ãëBuã²É^VòTë•m§f7Ÿ:—Lpu©ãÈ^°|dg1Sô7{ñ06ί›ˆëcŽšÉ^¦Ë¯2b:¥ìæ³: %)æ—ûéB@)„(€"QPsüòq+RŽñÞ%eNIç’(òÙDD)íç3çÅ »ZΤ1&t®é€;»Ž?dÛ›ˆ(I§˜C²8K-Œ(þ@~¬ª_Yàöe+­ .3ú]ŸŠ3!ÈxWÊ\<œ8;×´6Øu!`{S<ˆf’Zšm“„ ÜÖV"š<wøFádÑ£¦.ƒ<0@uuú‡?¼à=”£´(²Ù+¡«Še86OdÑXJ‹¦ÎÛ#!Mö®Öh.o…O]wÀ=´ŽßdÛD4›¤zæŒ)"-ôlñQü± |EUø+” !  B@„(XüÒU:¥\öéΪ=COŒx7½,óÈ̉ú¨#¥O;¢`N›£ñŠ4Øbo""5uÔ’©CÑ)¹À&¿Õ!¦ëŸvœŽîàrÌQ™ÉÌÙ$Ä;‚ãe/626Ûr/|Zq¼s€lªmuæóÜu›ž:¬Ü×JDÉ“qGjnžˆ-¸ISý§ª¯ÏË^Üø¸ü¹Ï©_ýê‚÷ 0¥EapÞ‰,ièÇ`63y.½F]³Û˜Žª™³…ÊKŽ9}íhü°"mj±‰(¡¦š,ùÔªQjaMúÙ)ñß;„¯PAöú˜¢|Z×;œ…þ÷p9¢J!DAˆ‚e`·íØ;´ð?Ýó%^ö²¬YÃ\‡‰™ÆÆíÉ3ÇÖ]çNÈ™)ädÁÔ즩ãRBL/™Ÿ˜U¹FÁ!²Šw=?ô<+*EM”þq’za;„em‰ê‚ÏŒ~7“ ] X“loB‡xœ¨³UЧe×»x([j¨nâÀªëN?æMAªž›º ´·'O.¸©‰äÔÙ‚º˜ýéA顇¼CX¾–¨(²Ï{NèŽlé¼I†è]N4’v³ùÜó-›µÌÙBD~Z¿:yìpÂ+œq#Þ’PÇÄž*ˆÔ z‚/˜ÐT#zH”NLòÛV0„(„((…P! ! æ¶9°FwïÜÚ××·}ûÀÞ¡X¥ ‹ç½ÙFJºàÚ”¾¡SNSWG®9cD$‰¶¨FÎýj çzS-ΤÎè)þ¤K&wla PôIFÄXnR:]øå¹S©Ÿ.ôw‚ål‰ê"sñÐI$M)` Lt¼%WÆŸ]Ýy¦)n+®w#`¥Ñó§V]›ø•—½¬‰é©ºöë<ÙvéÎç£ÁëãùKÆŽSØ]xžƒåjiŠÂb^öJÙL²4Áv Á;µ^%%¸u­,o¤‰*Š”¤fþéçEï„2¡&‚f*zÒ=e.pRÈÓ!Ýe”`¹øõ‚.4LÑé©^„å !j¡¿,gQ Û!,cQ ý`™[ÀG­gÇž=ýÛz»iddp÷έ[ûúú*QWÙÇå0.aèo9R¦±L1Uኧnø‰æ’ÎM‘$8²!޼øª©LTJYRªtA¥ ëg k@}P;íÐ ÷lvÉYó‡ç,š?{‰­`¥ZªºÈLÖÀR)S’,I]ïH@Mñ GOžhÎf/ÅVc–ÖwÍœó®‹Ø3Óv0cQcdASjZÈNv1KýÕ çøöS¿Âœ¦Pd‰Š"{ñ0E¼dkÙFf¨IŠ‚©cʦÃÝŠæê:GDš$&˜P§ý˜Ÿö¢ÒŒª…ŒTt\=3±Àˇ'êƒÑÓÎØLî|:|Öì=ŸÌîó'‚ðMQœóå^͇µ ~4ÖØp6qz27Òäy=Ñ}n6¶À+ôóò%YþîEZ~‡U1Q5 !ªb¢jBTÅ DÕ´NâÚ;´ÿ±Ýƒ#éo»»{ׯ?~|pdð¡½÷÷l‰^þKŸ‰ ä=ÝÙœ –,1ïñ ïJá©;v?­ý MÆÏ5(Ü{U£-q®J‘Ä„i5©ØŽc ÃÙ}t?µ)x”Ìw½cI‘;rØøâFöé%6;›`4qVIÙ¿Z§x«ÉʉcÇ#×L´SØÏqÇ ãËÿ¥çpV0@›ùÖì]xFV¶Rü™EÙ?TÔRÔE&iñºnE&ÉRæâaÈIêG#?»©[}H™™ÒƒÅIJ´†¯}¦ÑôÆ«K©„Ù!ž­ëŸ>sÕ;¼}ŽìضfG__ôZÓÿñ´9aŸý›GÖþé;ÓK^üù)+´nÖ¨çž:uå[ÚÒ ¯˜=ø³µh=x"[iÏ{ófûÖ[/ÿ—.6ý³Clð©‰oüGó{ïÍ.Tßóîªöà>Uþþ¡¢– (²uN ZÓ‚â꙳E*ÀkòªõoúߊþÉu²=Ò©JBÝ„ôìäku‘3,’ˆâ$Ìx«ãŒòAà½çˆ¢aéÍÇFZEFé“LÑÙ†øë~µÑpÎNLOlh#™s#)—¿÷¡I‡,k8,\'ÚDcr6T¿!w‘DÐÇÎíðxÈzuþ«Ÿ²¾™Ô¨Cy¼yélâ?-‰Mœkio;ž]­3’xäWwõlÞ﵃ˆÈRB¿ñ‚è¤ùf/›lž¼Iéf•OEÔ¢ÜM¿m¼Áñ†¡i®H/™ùrwð¸!<¶îžçKI„o˜±^Ù©þíÂ6_—\^ù=Kû Îm^²­¶%ª‹ìóžES³e>4‘\ƒˆÈu¤²›ê¯Ù¤2eö¬ÚØYtSÓk:V:PïÌć8NÑâN›¬_~17­Ixöt“9A33n}}þ«üίXÝ­ußÌf¯ñ§GH4©EØcW¾åF"ÒŽœÒ©)µªƒ;u8»¡08xú¾vä¾wô\~öbÓÓÎ7ö²}0׌j”¯Õÿî‡ùÙËzd_\j\pöšýî×}ô÷¸“¶ù¸½‹6^ÁÞл”/ZUKT¦™m”—[m12g‹d]uAézëh@w&§¦©½S pŠ¢ÞÖ2éLZVGXHòJ»qA¤éXhcvÏ/ôŽ3ÁgB¡‚!ñ¿Ð9ï_զ̹‚¾4«|"¢æÏqz¢w8^3´€ëõS<>6svMð׆pCxÃø_Ÿ÷ÍXй„²véã¼²ÓÒ2Ó3­QQ/! ! !ªBBBT±•¢ˆx awï¶þ={öíÛµkG®–ˆˆ¢÷÷ß_PKC}}}}}} è(f.Š’iéfvÊ™)ŒnûiìŸ&ÿR·Ølü,)5'³ç̘ìÄ™g‰Hh†Z—¸„scw×4hO¬ÿ“¢×:qþÛG_h0EKåŸO/yñÌOǧř3k‘ÌT‹l6$ºê‘wuȹ'zž¯ûëi¼JÉ}RSÂ¥~Õù/.Ø÷§¿ž`ßKº»Pcé%3ô‹óý÷9þ¨úÇÙM\½ Œœ/è/7hîîgÆTž’ò:¼ þ›jñïç¯6éþ®Ê¥¢ ÷‘K´ù%Ë?¡|(É”øHBüÖ°öñÂÕ¾t>ðGå¼cS—^AeKø'£Ô’Ô…äxñ%Cwd>·¤§oHNªI ¼ï†÷ýdµÆ)çÏ“mód§^¶î¿Ì7O°æ‰SD¤è 3È’- Âio°:K&[Œ ßkûS_(þÈO?õäõ÷Ý<úŸÙ%ÖñcÓ-m«ãÃGÓK~ù¯GG®5WSãDnô»ü[ïxÍ—C?ûEv ›Ì+.õÜ]3~àÝfòÜÛÿâ™ÏÿçȽ¿Ÿýiê§Ï ­ý-‡ÿ5»Ä>uN0–äi6>^¼¯¹ð/¼ÀFGó—Œ}öÿL¥¤ñÿz.×Âñq»õŠÃŸÿ^n¥gž£…JLš©Wÿ¶Yxå‰ïÿüÑßûŸùK’¿82ñ–.øUjÀ’…‘É^º ó–Á·[zæl‘RØ•7 ýUפbZç§g‰(àšêµOEžkš5OMQR ˆFJJž?ÌýïqhuÃø×“Å°ŸŽŸyùÙƒœ.W½=xa´kzJIž>ð6› ŠçŽ9ÙÈnø;çÄüÆwž¼JÉ.9ºÔ¤‘?=å}€žž`ßO¹×¸¡‰Ì§£3ÔqÞyóç9šû£÷ßÄî:pá§Îìè"—*UÆžäùüOè ÆfOX³ù« LºW¸¡ì·ÏO”•—??¡ä/yzJüQBüæ1-á·Æå¿= 2L1vé˜ú+TBTB!De!De7DˆBˆJCˆÊ@ˆ"„¨< šÄ}׎-=ѹ:}£Ñ‚åC;oÛ³oßžmÇw^vAe—#‰–eÈ›®»Ú&²5©J=zæÝcÁë ›Íj§‰Haô‹g¯_÷ÍÌjüɳˆH V*dͶ4g&tHÑQ‡sý½¯í8TôZ‘¦áSn~öÅðÓ£^8ЬC“"úôê–ˆ÷Éþõ‰=Ç’Ü=ÿl©ö(³?òËcãg?¤±ÑɯѤýÃ8ßs³·ÍùÔÿlÜþR[ƒw&;0öå_nüÂÞ<Â6Yl‚ˆžyñë£ãÒsÝ’r¿“ÝjSÛÌϾ{w{[ÁUŽãÇ^ó<}®ô%¿3©Ü{žÛ›]r`òÿøqç ͹ç8ŒéúUâ{ÇtgtúoˆˆÈl‹üN(ÒpxjGv{áõåsþDzQ5§Œ?w¿uVüZvÉÑsŸ~üùH[äßóÖ²×þü ¹ä&w¾x ©ÂOMLûÂÔïñWYÌ›ùrxúÄ(úÂôû²+œ4û]euJØŸ¿Õ‘“{©düjš“÷h¤´„ÜzxæÎ9Wž‡%ª Ñö~ÉR‘v¯’È ÿŸ½û Œ¢ZûþLß¾›M/›B ôÞC $4ÅAEˆp»bGl¯X°_Ñ‹QQQÔ{ÅŠ—‘Hï-@†޶M{?ì&»Ù W$‰™Àóû”Lf''3ûÏ<{æÌ€²Ó• ¤ö™UFÕÈvR]i=[]ê°škßœ4jzR°÷4èøZIC»BcU‰{;Û>;tPÓ¿hÄ æ›ïü~WÏÒ]ú §ö«øÌSEα‡iëCM\‘ç@”ÿ¾Ë–ä #Ÿ*½uÔÃMù¶ëõ?ô­Üá^²gÞ» ]Gíyá{hÉá~7ç—Ó[þo½ûÛˆ¿m¿ã‘ï+“v^û¼{Ièé#|?n«~Ì®w~s/ÙôÚÖœÐqY‘Wd=µ¾i;da᎞·È-t#FœL¹»é[>¿8öÌì„«v½³©i¡¶k÷G¼Qû™§öÚ7åñÒ wì4| ¨}£Ú϶ü@¬jvÆÚóð'‡N‡ÆýûdÅæmºäZ«ý¨wþ—37”‚(Õ9ºzÈ\œOiT.¡ªÞ65±7ö`Þ¢ÍõöãÖhà44o£jm%&ƒ{;e6 $2¬àãŸ"#ü~×^Uˆ¹|Ïø¹ß?á^r²BëK¨êºâ “{Éîü¼^ ª† ÖÕv>χîÏßûÊŽG»‹+à`¥¸ ž|øxËbíçâ×f³ûÛÿæÉ;ô¯_îŸ[µìu¦¼oÉOÿ¼SDüÑ5<ÙúqvP˜ï¦î);¾ñ` ¿â\ÛÂJõ¶sÞནe;×oêÒ´dE‘³~o}÷çÖjà®3„j ßä•5­Sä ï>Ù¬rjâªxËéÜV.­+ñÎ:ñyqqúÎýŸë›–ˆwÇ«ïÊ5)”Ÿ§\Ùi§OT”ù.YUPu]U*xª«oOU^qVþ0ß»«¿-â{ƒz¯­Ù÷Ÿ)hùT`—ü µ ÜâüšW¾XDa…ET ,¢°ˆòÂ" °ˆÂ" ‹¨ó¹È9°.ˆÕZ˜2ÇÉ)‰­q¤#CÉî“&ËŠ’K=lÂ@'@EUyYu~·P8aæÕsìÇÒá(D;pÕÕ¾Íîymqëh8·lÑa*É}ü7íøg—!t_ûZÈûs>8u¢ÞÔçûÁ¿EGK=Bl›ÏvÍßIšºÙýÛ5AgÏŠÂ#Ô¢ûfØS?kt§Þ_R2uCîÞR†,âá«âƒ3‚{›ó uçVÅ›oÛUø„ÓåË]±–²sA%Æ'j&E++?ጻ«,þøgöG?Û¿àÈûczÝulëÏ)c† ))?p¨0cæÀïœäÖ3§ÃÈ¢ž£#þ8tˆŒŽ–våÛ‡°H‚Q-Xóvˆ¶öSçŠã&VºäÌë_þ»4RòªNËßÕ<‚>š4á×ÌÌë®N¿¯¸x®ÃÐP7v´5燇w Y^°ëé)CžÍ:r?gønÏÚ )×ê4ïÅ›îúnç܈îª/–,žûÒ ?î918rmC55däÉþÇWw‹T5 l(;Ȥ‰Êƒ×“Ó6÷5ñ¥.â÷ïê×ó©3e«â’_?ùå³/ßðË7ƒ#» •†ÆY3—?X›øú=¯%˜ªÎEõ)ÜÖ3$¦”¯IòÇÉ=¿Ÿ¿úˆ¼b;Yt2Zsâ™ÊZ©šÚ)ƒÄò‘†>_ }Ä’[þ“MÑ‘µ®~©BÎíû-ÞÒuÜ@]¾5ïlÑ/¿÷Y¯W|›¸ ì0d&êÍ·—-\øøŒ>}*„ÝgÏ©S®[¯ºó­O®çª&ØÔû)ÚAÕö É2éÕˆ°Ú’RcÞæk S"£F ªªŽè;èPö¦;Gü@«m·¡˜­ËEÓÅCŽw*zÀèX\bÁ‘R;â:AHªÏWŸ>qREhF¼J¥-çvrÁù»¹z ¯Ui¹!¼ÞsWHÁº]hÏ‚~õ®Ýxl—¸á‹/¸2ûͯϷ•š%¡¬:}7Y·â‡~7 €ðÚ¢ý!#E5|Ôór}^^~ÏÞŒ±kŒË*€ ¦þWÎõ'¿ÿý£YäæÒŸOôÖ-øÇ¯þ™ñfÿÿ½f}ql9-±ÿàk»GˆöŠ~zéW}ïN”üÊ:(>tÎ$Ô+XÝ÷énÜ^'=$Ù½æÐ/ÑWì?*ö_ß7Œ“Cdá×Ígº÷âlÿ¬uDù®JbËÑŠ· Þ;÷ ³eRÕÇ?—o-Ûe Þg`!é·I}uÈŽõß=¸iÖývøå–Ö ˜[Ÿ ïþkÀ=d1¹mÌìm~£#ÖŽÙò_a'úo_½æåŠ¿©ž×Æþô“1JüzæóRCè žý>¸}p@J²¶ghTPr^Ѧþ¯~Ò³ú€Q*Ïœ|וÏ=¯Š{üðÁ—‹n˜¹gõ¼¯}$ƒ‹’kÞùâäÐq'ËjæxõêgøÏ _FBèá™WêMròk ¹rù÷³³Þ%²$ÈRöàµ*•ºüôY¡ÖE«„‚šû>]Li†­É?=û¾y;NÇ_ú¿^ûsV_ñ³n"bïÏD-¡™:ãÝ”7úýž½mÐíC¾ýŒ‹’‹X¾gúC£{gÓî⮳æõ‰e²Ö}•úÌã”X÷Þ¬¥†‰ñÕy•dƒ‹íbäXJ÷î¯1eùçÌ1E3FôuýÀ®ªÿÎ}°2iîàý¿~ùðºÙÏL“• M¹?b9–~PÈXÎ e5¥eUÚ„Ð^–ÑWÛçÌâ…§ƒE™€ý®üFµÞdk(­s@½JEJ1èÌ™P•»ZX·{k¯ˆ‘ƒ"C46ø¥ö÷²}yùÚó&ÆDKÑ{CS~¯s6÷»Ò}»Œ Ѝ:EêËN‡«ê`[Ay¢AË?ÿ´%ïÛ-Ö3†øJ†”âm×e «(Î_ç(eþ<7o‚`7;¤[ñ5%]Ê dŒ1IUåÿÌŽ)ì¼sQlÌ»öLì6h§!vlÁw+]^¾òÌÉF ß_ÏÆ‰yšcöŸnŒ²ÖŠ–¢·åÒ ¦±åzõ‰š<&Èæ N­ØRïx-žÙ»nÍ DÓé#§ Ž ?g þ6xÂÿ]þlòüOÈb8D¢á³a£hó˜øê5Õ¤I^}è`ÍT·æÛ!³Çý[¥i1­ÈÙ:IÓçÊCó¿î÷Éñ_vÞ6-¦ª¯’†ÜpúäL2vÖÁ/]ArTPpbê—­|vŸ©;{E—ºüý—ñÓ””ÕSÉS?{zö[/m+üFeî*…~×»ËüoÅu[[µ}@×p¨~ugÄâòMeº„gåê;GG”UíÙ´ÑüùØ1±%¶„ÊÜÉÆ³çÊ*ëjxeŽ‚WÛQXDa‹(,¢°ˆòƒEQ—YÕ®X§òÆX,–„¼À[u§‘óÅ`·jµÌ2C£âi^†Ãw­8Ó¸z.žÄÚ-›6LœÃ&& ›èø­TE°å á$“.fÞãOÓÄò7îÿGáÁûG-ß\T:n×¾ý½L}–Ì›j?^G­û.ÝñKÄM‹ˆÔñ¯ìÿÍ6<8bÉK×–}þäÍë‹Xôàs4ñö›¯|fËT Ù_fyhMŸ5ÌéŠìǯŽ}9Ûµgë,õÐOKN¤%öß÷FÊúë¶Z7üë”­ì ×e䆾“þ­Öþíû³‡\µVÃùŸù=*÷ͰËï½~ûäG®“Äê’ù.ío=†íxñºãW|VrhëøÐˆ·+Y½óðµ5?œˆÁÙòƒãz|¿ûdlIá{—uŸ>?’¶ÿ|ýÎíºsß´hV'ÓrOäWÑÑABö—Óίw}ŸspÖ¹ö¾6ãôÑàxéÞã‡ÿÍõê«ëÓ;þë—Ó-§ëÍ·¿íÙ'|6dí¯‡6Žënr~rÓ~ôé[Ïú®+Î3Û~¾â×Èsã®{Û¬Š*¹¾‘ïm:l^ÿýò¥k5ÉÔ<½ô™Þˆ™ôìï¿õ²8µo}5{PÊŒ¯?\jy}ø62ì©¿ýjéñÆWkF¨Ã^º~xÕ·5„”Î}ê½/þùa¯«/ŒûìƒÙªñ3^6Oº#5”?RÅ„hÛN˜þýÚ+úèí)³nÿæ)ÕÌgoݲn¤þ×)âéc§Ìóå{ºOû9÷÷Dút¿‚Ì!½nûrÓ³%Ê5z Ý¥b̧/wM¹ãÑsÕ¯­þúö¥‹ßþèGKËÌ3zr˜ù«BQí ºë…ÜzjÇö¤ÝŸ=5öý>ÓVITföOÉWÞxvÝ‹îË=45cMÖ»AWÍ}I™¹àd'a'dµ¬lŒQeîA¸€ÍÝqæÔáò®”V˜,€“R5”Ùl/²U7Éöž­&Ë\sª†¨% bM¿”„`côgÏ?ó–aa™`,8]n‰}³ç¢_"vÛæ>4£lkXù.0Ž] IDATJ¨Óx–ìmúôÂ.ßÈCúÿë…9/_$øûéq³‡í-ŠZg­^¬YEϨ<ÞÐ}ÊŒ§Ò„åôÚåœÍ;6Y3ôêÈu þûëàS+×­ûãÀÝ®saIWm›_|œˆß}$ümÇ»7ÝÞÿúg_ýxæÃÁÁñº/ãäµË[£?YÖ-lôƒ×­ÈµQ›L3¶ßþÊ’p#Hßá§'ŸX5Çhž~í￳ð*úÆ_¦ó£ΙY¾ó׈)?Z¾>þªnŽbÜÂCð´Õ/|ÚëznÆ]G>úì…¢te ÿyôé—voèAs²jòÜÄ)»õ§~»ó_² 6 ’¨;„a‡Ž:òÍ{&LÄó{ßX¾¤è=­¡ë”°ê&Uü´Î4ýöšo]õܶá#A?øÍß?yî-—Š£Šž1ð‘f7÷ãWßi8—[°¼è›=KWîÍ+›ôRræwÕ·/üîñWoþèŠÔ´3_]þ¦v7½xÓ/ÓgS}k™,úšGÕ µ<ÉT2Á!®²¡c^}q©³"ú©×2Þ¼#øÿ´®˜¨ì‡FÆÍ ×½úÖ3ïë mÑÑ“5}Fìì)ú1ëó–Wô2ÜT_X3ëÎ_ú•ôûx_å/w½?wÂ#¯ÝýîSHzrÐÿeûvƒ•‰-ÔtZûÇ~íÀ]½'ßa! ¿ÚhûbãÛc'ß·uÝÃ~<|÷‡¿VÿøÃíö£Ö…ÂÉv®–Õ†Q‘D”ÏŠò±ÂCEå嚈W³s€x‡$ý~d“¦ÿ¬Áê”ÁŽ”»gëIêT\¨ÚpãÔG_¡‰¯²Ø9〆9¡¼PºbðèÍ{¾U÷ùþê+ú¬Ó}ùµ * “ïM7v?óÛF.díëË·ÝûQ©á×îeî¾êþ—hâ½m¯ÖOø°D·>¬öôƒ¶5»ªjŽ—–?_íîîëo´ì=¦ñ㱃ßÔ¦l‹ßzSá»jA?lÿŽ3±crºNɪ6Lûí•#–›*–+ûmâ‚Øwd³“:"=òû ÷3ºs–ß=õÝèýQ#_Ô^WhþtˆuSðcÆ+þ8»úÄÎñ‡ úÁƒŒ'zÏ ¿íøWUy•? fL«ã&ª7ê~:½{ü¬¯ƒ4çfÒ¡U|Ÿ‚ÊA×ÿ÷û.75u}ýMNùáܨ›oÔêþb]uÖÝtXÂ÷¯~8è±Y¹_ŽWXrpïªÈ;¿ 'üaúvÈÙ,ýð^ãNd½œ:[~-Sîmt<ö˜ölû¡z©I—XR±­{Ô¬ ºEMýù•I?ËÞûÐó îø¢fÎÀ©5-±?õòêgƦF.ÍŒ1 Ïô~÷˜åŸ6üÒ{Ó}_£98jØÓ;õŽûº=ÕðàšŠ›Ær±y·¬{£¶N¨é=é_Ԙ͓ÃçV–iTô¤Ǧ­~Gº$媱ÿ÷Øöë^L+[ËTŸì7uÛ3‡½÷ê‘>©·:7Gžq0;{ø„ÿ|ñ=Maƒ¦wŸ sÞ[ž=óÖ‡ª{É|åŽ~?“tÍšúئAÁ‰§]!µŽýÝôýOÔ=ö{Ò¶ÏíÝ“ï2mÛijÈÖo÷ »íɆ¯õ»«_¾âJþóonŸ3Y™¹À" ‹(,¢a…EQ~°ˆÂ"ªÓQíÙõg|§‘óåŽCÊ›7Óùùä÷H:}$¸d([ü”_u›µ´[úŒÇaTŸ_{åõ•×l k4±ôQj®.¯ìn6æÁ£ÑÃxç©[®Y×ÀD;ýìÙÉù#Üý§|SŠ«ºŸ÷ä@,Ôž•ºo²ÁI…k¡¡&OǿӇ}½Ïƒž?ípyMÒì‡'š¥š°B cròãSMsUrUg&O»6Œ&fщmtå/xÞûËÖŽšûPyáÌñ½>ß˽¥ÛÎÕÿÊ×K"u`I&DÒî€;”®yá¦úÓKoMóÜâþûñwºLývfŸZ{í è à¢î¿yXqÉU/¾î÷ü”å ×Üxû‡Rmé-ÈrFm D€«bÁ‘0TC ¶ÌŸtÍ¡üÑŒ‡ÂàDÉmªQ?´[íõgþ$’‹ÞL“'Hµh‰Ò€“àNì-±W×Ûi{M­m®ªÒ© €:‰®s|ûLyºTÓodµ^ÅÉõ!g®¾ÁúÒ{eÇ‚þ‘ÎOåv{nÿ-ËÂŽìøõ¶²ŽK*ö\÷>R¤tõs©'>ymbнoöü§T¡Ó¿gÿ$õÓwÌâ¿K-ø°—ãPÂ3S ˆ³XÏ4œ´Œé?åz‡P×·oèÑS’Àl›8w¾ àŽ¦¿¥rÎ[½–æøêÓÇSºº›¼aé8áòÈ‚üºáÃuW»üøErØþ3eqÌЧ‚4tö·¯¯99*¤÷Ý&©jü㣄-O¦× ðø½7¼­_8ÜöãÃz^31ÜxnŸ5òñwï\3˜äfðuâqtÃãÛ~ý†»„ßLt[ÇmZK­|eÌ lûp|Øî3*Gý¹‰3çdغ,­ í·éÜÄuW¿´à~à!˜ P @½±Q¼ïÓ»šþ°»çO6™ºª6c~ÿéŽg§OŸJy<2â±QÿÊŽœ9ò¡;Êì÷¬æªÚÛö|²þ±+‡8¶n¾wò'ŸÖ…‡>°z°{;ÿ[Õ­|½Mk v_˜0òûý<øîÏM9ó÷­έ…÷õùô?ªw©¶þ0©§`:FΪW¯ï1çœ{OMxâö[¾5v -„8¢Ïpx(·ò¬«æÒñÒÀëÇæþп°8ɘ”äLÊÚ•W¨gn¸÷ë…÷G± wÖ)ˆRçL³§reZ_aS…¾šj¹Òy}ð‹ÀCþàúëèð/]]2Ÿy‡ïßòóÉÓ™ƒïYWüÊÀH4`*Qø–4`®ýCÔ53c§ƒ8½fÑŸ6ÿcÑѧB^ŒHNà !áôªÚ«ê2o)\”q…|r°8ø¬±èSí(îæqIÄö—û˜ýA„ƒÅÉ †÷JË'—^7g"H£ÃˆŒ°›Lýoe™ê¯¢­knDײG䘮¥T¢ãîkfÌ‚ð†¶}44kaøjÛ €ã»A×âêw&ÍÞ:@—'Ôªåk`!NÕ•7ÔdœËz°ÐÃsGUâáòonžümйº& yê°nß‘Ïæ.²Ë3œÖiü•Ó&AÁ8S\ôϮį^ö<|´ôÈ?®˜Öprá€þ0¸¿{Sy•u‘|­&‘pˆ²Dˆ·€1¿ø‹—- ÆÍœ“çï;zªGÚ'©ýÏÙjÀ@¸ÊE;5±¤î^¶z¼ö™”‡ÞÜ]û]ê}'¤ZîŽk`¡,µ5„ Àà¬å£‰“F¹û'ûs×ôŸ½6D0G<4)Ô%ù± mñ¿HXDaXDùÁ" ‹(,¢ü`…E”{S—LÕžX–øÄ÷0F«µ 1~Î_{5KÀGËzYŠ8ZÖÆ/A½œ ®s4Þ–éâiŠuðPî wí%8‚5A§¯𜎒c»À¹*c®`îËo¯O‹§¯‚@Œê®"éÅ~cv9ŠF Ò´`Ä5/T½Xýr|hÂL¡¬–ã´åûžt,\FEõº$pÖE›BO;â·Ÿ* ÓM "rôû‡ÏD jöõ´D:÷{µø24NŸzôLÔ¸ÛßÙ^Ú·±uQô]’´öDud<Ñ4Eœç¾h-‘˜Üåuß?-ŽYB‘÷V‘]ïMD2ÊÁK# Ÿ¸—/~«‹¹ÞìôÞÄ>HûC¸aDì¾› ÓM€Æqµ$é}Oö3.—ì‘á¡MK’#×k ûŠ&tk¼Û—“ŠËÇEèv™Þé'ÆÆýÛwûÑì}NA³™íÆ$|M è¦ý¨["´£Öå‚“ ±'ûÈfÑ.‚­8[.ÞNyj/­"\¢àpØ)Ïqtè lsO×­s@TëUpØ4(QwÕ7Ííûó!anÀØ5bìÖ×`ÂG·JÁ]Ž2=zæÁ-:^øDÝíºüB6> €6¨m¤fBü/1üØ3ª“fV¥º®BŠ)È¥§Or¿ªÏÜ1ä­ßjË5 ü/:¥­¾ Ù¼›ê+'uYõ]Ÿê}ì"Ï< #îŸbŸ5oƒñúKO÷ÿݱþ¯_ÌðUÞ¹?rŒûÁ<]?zÒ¼p‰½´¨+Ë6mjúüÞî/ÂXÂ~^Ö´¼Ç¾ÕgÞúN¼=s°ÖóŽ/š’°~¡S'Îà^’üÐÔ†«nŠ©ßŸlê]ûÙ'Ãx,$³ÙûßÓÈûükuxÅ÷½,Èó1(5[WY¾ f„ôÑ ÷’¾{?>õć5Ë?jz—~jÒ6³aÄâfÖÑ©!¨ÙLž?êÊᚘ×ú îÚ´dÔÒiÒ?Õ£§÷ŠÛ¶G?œôÆõ»¯5-™øö-ðö-ͶE{sAkXߟ¤¼r-¼rmÓ·ƒÞº}P`SÚPëBád‰Øå;K‡š´À R}}HAjgÓt'¼DrÎ:P;EOí%Ù+Yóµ;GÝŸJŒíÝ+«,ñ»ÒÖUE„ßO° c`E3ŒŒQñg¥1“JgLpuyuÒÍÖ—F½ÞÓÕ@Žªªáƒ¸úÏç¹ë£¶!R¸PS­ÔF×÷/.†à`被‘²gò„¼ÓÐËìûWLë;A"Td—¦%©]âfk C‹’GTAl ¹KIÝ€ÑǾ1MO ,ìwjË®ùçÖ^áoQjyzṘ%Ä­55Ü;MÓÃÝÄ`a¯Ø¦å}ƒä%udŒz G»ÿ ‰-v}Íݰ"4ž-R Šöwhƾ3¤s/Eÿ$ÂØÕêxÏé¸ñQ?¢%nèÛÝ÷O»"ŽÉ¦È{öVAãÙbê€^L‰ôüÏpÏ)ó‡üâ².æO‚¼O§{¨¾´@Õ·Ù¿ãD³¾éŸ5Exç_¸£Kè Â!{Ÿaôp¿˜á¡#Eç9[XXñú’òõáÚñAÞóô½ƒ½sÍ'.e(ßïà–þÝohjÀ ZHH‚öƒEQXDÂ" ‹(,¢ü`…EÔeVD]ÔS/Å’·1Ç `ÍÙ˜—ÐâtÿKÀÈ~;ÿ¶HEÉAæHà%B"ë)µÝáòì§)ÖÉéíN±ñðË1:½ãt"e À¤í ñ†—'.úbщЬ¡¹Æï·„Òÿj–úDy:qcȇzj(&4Ý.!k ¦6HqºO׸Rg¸^JÓ3(´>®ÏI•ägôD¥nа’PÝ-€ ¸·s¹q`Ÿš„0ïÜ™•U}‡\±5¿Æ;ãZ”ýÕ‘¡½\¼ dO>£åcá®ùpa"˜›8a´ï’3¶ $–”¼[0ëç‰vu‹|W‹‘³â‰Uø[b¤M]È_›ý^iA´¸·é}¡ìSx€(v…f…×ÿF’¡¾ßʲÊ^w¼›þKß…ñìwf×è,Z— NvîÆ/½¦Z-ÙÂ#£ÀIpvg-éí¬çæ¢U$/"ïh¼œ(™M꺶¢¸†ôüÓ1Ü<«üÓÝê KJÙHYíŽ/ZðèpǶa³=—²’ÿuÇí¹oÖìqVçù¯]¤Ž :>z÷T5Ó®w/©Žf‹åå;†ß6н¤ë´¾}]&Wý<ìÞ?xù¨ûǦVü¢#LC<çž1=B¡"öÔÕðÁM«^ÿäá§¨éž êÇö;ü`Ù¶Ø’è{®”µÞ<[4nråÏ/z#4ºG˜|®ÀÔK6™šÆL~ø—æÿ„Ï+ö†Ñ¡ù[šû$i.Þ2ÙS½ÈjuÜò»}.›Lߘâ[ ýo:ŸÂËÊÝÙó÷¾Kz>zºäP»þƒoK­ …“%¦”÷[\f稨P°¼$:‰à4®¦ÚË%Ò,Ãk5—ñVe(ÚØ¥Æ@é´0'Ú£~ù®ûìÁöŠÐøý–GÍôÆÁæ”.‘îo§ÄûzjÆÎ1j¢š ÊV-BGÞ7rh‰3D/@¢‘9§ +4 îótª";aÔt½¨ž‚œr¤,«[¿Ô0oI‘R[µ;ì†Þ…ÞÙ4FÙŽ 5ñ® ÆšàÛyjøyœ`p3köÄè¡gl¹IìÄHï£â¦ ëûÇ\­Õû®ö²E\߬Rù^‘žíÒìí˜!})5-¢ìô]¡«(ŽŠ… !7Û¾J–ØëˆkÖæÇcÙMAç›fTy°ˆ,¢°ˆòƒETK°ˆÂ" ‹(,¢|W¸´‹¨v½…0yñÒ-ii+R—f%ÿÅ3LíÿÃVmýÂM‘ÀË„Fç Y§“§Ü•‚‹¡Y'Á¹š.'š´ñ:­ËNwd`@Í_ŸÄ¼>}ùÍy6:$à·pü4BþÁÈ izîF•œ‘<ÿƒR; ¤` ‹Þ7a<iËq¿»D$»Œ_Ò!²Ñ¾Ÿ]À“½†pÛë\ÈŸFÒi½˜ojÈŒ¦%±!D«n*²Æ÷>ýQ¨çg‘×JôYKÝʼn?sòÝç}ÍE‘$ÿGN´õöÃþ|%EkU.XÙµ>5Ö—ª%»1R<ɺ4Î!9O Å3å”§ì¤=K¸ÈpêdaPCH-et?ú;ì¹;®ZüúöÄS¡}Í¿%öé[Sz6Õ4²Ù|jà¤nÛª1ǹ—”ãö„—?+n=åY'&V¼(ˆ¨¦úÆ7m'OÓS¢è(ÕŸ?ÌU6j5¡çÌ]}¯IJrt“4Ãû(qÙhtVœ9ß³þ*ÓðîÔ7™úñã}2we$tíržW(”l<†K«Bábˆé‡zŸØe±Ý@áÀò'êì£v¹ÔÀŠ.âD’nºœ¤«&ô'%’e÷]¦¨ùO»1döæÞ6Ø£c9~5!w7rÐx¶XX)ÿ¢¿ßRf‡€8’¯f»=ÝwZf„Í}Õ­‡Ùò¡Ë”ÌÜi´CãÙ"¹zn$—ZßòCgüL™‡ú3£j¼UEZxÈ]!ª”sVð9[|a¸ ­] g-2E8Àçl15’zŸ§sm<m„$ýùJ­ÖÎÛoXDµ ‹¨Öm‹(,¢ÚQŠET˰ˆj %Qí<Vò⬬žZKÓËqç:xoÌ,b?aˆA yг»\´{ü² p ëÖéäIw7y”¹;¡–ÄZm½D4u׆Ø×ÞØ»×Q{L`íBó‹l‘ŽeÝlmиk¯PC¿Èˆ*q†$õp¯¦™(¨dƒ NqdÓ«ªž]_\ÐEŒnÔ‡£?€·ÛÕÈO×kˆªÐ”ó<­¸ 4µ¿ 4ßðßÎruá’Òª\8––ôصC#ÛȸVyÒ)ºØ¦Ú‹%]"플§èÑÅF²ö BèQG‚7eú|ùƒÓï8>¹…+ÞÀq˜fÃîþú‚˜qé9ƒ<—‚ñqwä¼E®|µéÿ³¶O\äÖõÇ"†÷öyUÜÃWËAAxÃüÞ’ “É÷*Fĵã-Ï~Z3®÷y_ÓJ'Lœè·Œxö± ½ ‚ÚP+Báä ¤ôБíרn# „Q’dJ¢9•àôÔ^/R¬D3j^pnˆÑ‡WÊj’.1ÖIMÿ¹—‡Ø‡Íé}ÅQ{`í£…fÙD:ÌÝ×lmp×^IZó«Æˆ1œØ£ñ”¦)Tu¹—Ó[È ¨ºYt]àõîÉÝ(»Ãáû†aäOé5½«BÏ÷lûÖëP²$|Ï7tškÑ—,¢Z‚EÔ勨–`uYÃ"ª%XD]ª:rw_¾ÓË5EëHê Þ…‚º7È ¼HÈ´Àp6¾ñ}+ *𫡇K Üá 2’Y¹^rÖ DSvd9œr¼ÖØ {«v×Ü4# Q†ÙÁÄ·6›w@8%GŽ×k£}^#£aÔþ±’dq:ù-tÚÿÙM¡Ü®NÔZÌÅ Cg"iÀ&Ôà"YÊ.ÑvQP{*-‘ã(—@8%WcíÜ3˜vTN¶õŽGŒ0?róÐ!ƒšOÎCìßß”ÜmÂ4ÏÍ#Æ…éœëZïþñ£Îü‚a¾¯rÞ?\0þÊ+ý–DgL´ë^¾ð- ËA‹¡(9šº½w¡MmQɬ J!2œJðTþ¬,ð4'Ó´ÊåP@¨Á\!³jcµ¡Ahª½Âey)å`{_PaCÜfw±hHŠ2œ &–ÙlM+„Qr¥’OÔƒwô:Œ„QÂ…dÀ"I‹œN¿…ï8í#º‰€g ä‹(,¢P ,¢°ˆB~°ˆÂ"ê ”¬@.Š5BÒî$b¸Ç±  ”Ȩíï9£È¢†Q•S¬Ýå¢Ýá1H $ 4]Øà"};]®[/üWóö·š¾V‹ƒlµ'ýV¨ZP÷ƒ†‹ù»ÎÇåšÝ–›C—(°Dq-¡Ö ð$K åt‰êÆÉTå(§Äsž¤XLN¾‚¬âlœÁwkÎG¹ð_íøù‡¦¯ÙÅ ]‹úþÔ2"š…rꪶœ§R6™\ó/tÊtÙby¹ªTUV,àÇ΢DЭV‹žÚKB¥—h–xwíd*HRk&õvy·v«ëB'>€å¼½éë$µ˜k«õ[ÁXI¼Úôl1û¯´]¶°ˆB(QùÁ" u:ÊÍæP5ØŽó‘ŽÆ;F‘ hSÙ¾qf8Y˰ÍÚyñ,µ¬ š|»‹i¿¶iùI‰Î…¾BmÍIpœãœ=*ØF6>.‡â^f.Ðz–È*ír‘Aà<ãá‰æ±\¬'j}ËÛm5)"‚é§ž4âÏWE¨MqN(ÓÔ÷9«n<[°‚(Ó”‹Öh$O™¢&%žâdŸË‰ZYæY™d£ôÿ«smh¸–›ØŽÛGè|°ˆB(QùÁ" u: %A´ÍtXí1"I’<£rÊ’g.IèV`Tv÷Þ [%ÆÈ³Û~œÍ¶º½6Ðÿä$¸(S­½<ÎA¨ÝO‚H† Æå tó“h4tiíâ¥Æ'ãÈF£ê ÆÁk -o·-ÔíØÑ~Gè|8^ªŠm0 …‡ä¾zȈ‚L‘.Z£#-¡Î$0N‚«£8¹"„çÝœ.NÏSR;ŽòE¨£¸HXmQ•!?¸Ÿ{‰@³$/«ygv_MF§a'Ë;(¶é…µê³½œ 5v@£jO,/™ùß­‘g6PFdŠqÐ*ǹ—hTjE»(µ–ô>xÆÌó•*ƒÂG~£KQÂ" !?XD¡NG¹X‚H8Tö.…f¦ñ± M2N'©Už ƒju0KË¬Š§@×ôBI2êT2Cµ°Q„:9žd)Ë” Òy®ŠK ´žO ŒQË $UXp IDATÖe§Þ\Øt!&W¥*J×ÂFêÌXQT“|ƒÜ“7xfa`$Q&iÙ(ÏmPzFí`¥RSÞ³^°(UiU&R¹çA„.QÂ" !?XD¡NG¹ï9^"]T½¡K•qî%¢@S Ï1’Ví™T£6³°¬À‘ÞÇ‚Ðdˆ–•Õ\X4¡væ¢8U…ÞP}š´D»—ˆ C:A#4ÌžO)*³Šì*ÁÎy§op™‚MBµ> /ª£K Ë‹’‰¯b¯ 2’ ’¬eŒŒç‰ŽVÛYÊI«´Œ÷Æù0 «5l0ÅýýmF¨½a…P ,¢òƒEêt”2V ó,ŠAÖéÂŒª7Ø$‰!žcdŽt¯Ã²a@É '².ï˜^šŽÑR qQWÛj/-ä‚b©j}xe®q|¼{‰È°/iÅmç:‰:˜Ñ.4ì3 od°þPŠQç VE#UÊDD3*;0²$ÒŒeÔœçÙj*–u”ƒâ´´÷:!]«¥ŒÖ^¨ÓÃ" ¡@XD!ä‹(t PJVà”r¢Dê…2m0¡{»—ËË0vŽމ€e XVR«ÌM/gU‰\\H€P§˜ bëUïÊÓúÞ£ÜË%†%xY+5¨C<“5èŒ*A´‹Åš½µfÖJ L”êÌCÁH"©å ÙàazѽœA$ÙŽVs €*–±”ƒæ ´w¶Q«jÐ:x¶@QÂ" !?XD¡K€‚o!)QÆÉ&±¯{‰,34íR“ Ïô ¬dTÀ2’Jå}Pˆ†LP &c: Ñµ3bëD*Æe5öñŒ~–AÔJ êÏ@_½žSKvµhÓ›¼óò†FšÔ`×Eãèwt©aEdµE¡\”©±ö"d‘bÔ¤¶1+ÙU„ƒaô´÷I°†´© ƒZ¹çA„.QÂ" !?XD¡NG)#° "E™+ãeB’«(™c^C+ÉÀI"@ÅÈŒà¬Á(%r:)º…"ÔÉ 4Û`“cI«ÝT{qD-¯…Aë¹x¨R’]Bgòžf¨ð`\6Ö^èRÊ"k‹8/ÇHžk€!Û¶AC¨Y d5v‰°±Œšñ^<4%'z^9D— ,¢ „EB~°ˆBŽr;M ‘"ƒëŒȲg¶QXŠãu²ì9ÇȲJ ÀÒÀrM/d¤H(Z6·°Q„:9‘RK 6­Ü {.˜,Gò‚l²Ús¡„3qjÉ®m*³wþјþ&Y‡Ó7 K CØBªD¨ìþT, "¨êu m\¢’e»l,­b½“5˜Ià@OËÐh„ÚQÂ" !?XD¡NG)#°§”ZQS)¨›‚BjšY'4]áXŽΧҒå`Q–ñ" êôs!R\PíÙ }Œ·†â8•«¦žð. tj5Ø YV™UÞ³ŠJø¤[Ôù†‚–„2ÂR)@ãÙ‚#žà\,¨œK\,ØT”šóf"X–EƒŒµêô°ˆB(QùÁ" ]”ÒÕÂü£­1ó69¬©ö¢A¬h—ß:dРjV{©ëêN¨¡N®…\М¹®´!Ø[{‘*Žål”¶))²J¥; ’¤ñ^<{÷®;qâoj7Bí¦…ùGe¡‚1ÇØä¦Ú‹¥)­ÒÚ› kW;ä5©öù<¢–å“uuxª@—,¢ „EB~°ˆB—€öíÀÊY–¶$ÛýeêÒ¬ÅÉåµZ íTË×´„!Õ$'Û%‚ñYÍ!J¦dƒo÷¯$…´¢Õµ¯ÖäB4³¡'Α ÞÙIµJÍÛì>µ0 ’lujïü£@Rp0 ¤H­ …YÖ”iÔ1‚÷Ú¸Š¦í4§qH¾§8•S²i(5%ƒÏÙ"D¹ra…P ,¢òƒEº¬´k–ÕZ8/sEºå¢^í"´f‚–šД†d$‡Ø¬örJ`¢ÀšÀ ¤H­Êϲ!örºË ¦%”šc»Ö˜|V³jxîŽ:‰V…‚W¹ÖÜŸöVQI9FãÁgºµSª0RW«‹Ðß‹(„a…,¢Ðå¥=ÿ5[s6æ%X.®ðž40²FêÑ´€¡µ,-;DÊw-§D¨d0¢N¢u¹à9.˜¯ÔöˆjZBk•`w2ZßÕœ¤ÊA¨^"µ.ð&Fã­½T$í`h­Sð]Må’*Pád ¨³À" ¡@XD!ä‹(t™iÏXÖSy‰«ÒÒ–@Ëã§‘ó%Äu # µb¦ô0Œ(à…fm$‰QBHëra!é ¹JÓ=º)”–U‰v§¦yíEpAã'Ô9´.´WFFiEhL…šdì ¥š×^¼¤Â³êD°ˆB(QùÁ" ]fÚ³+yq–ÅjµX,Ö5 –å$ûÊw9_î˜ÙÁ Ë1MË9Ö S2ï`|lj€µêTZ— »È™ FŠöNßÀê•èpqá¾+»H– k/Ô9´.œ¨1AŒÏUA5Í:eÊ 8|G«ÀÚ u&XD!‹(„ü`….3m| aβ4e9ïxÆ«õ/mÊ¢@’¼µEéY‰õ]M”€—‰€W#¤ m™ ‘ÓCì3P˜ÕqœìUÍ.ºHÖEr¯FH)Ú0œ j ã3“(CQ–T‹ÍæeD‰å±öBІEB°ˆBÈQèrÖÆ#°’ge-nü&gYÚ–1Mãÿê½¹S…É ½Í&{§£i#E€ÜüŠˆbû>L¡ÖiË\Lr2Û›Ö[iq*š•\’¶Ù¼"Áˆø‘)X†Â5U†ÖÙ¼uKÓ.ŠÐ:šÕ^¬,ßÞÞE¨U°ˆB(QùÁ" ]ÎÚ÷Â¥[ÒÒÒçe®øKô ˆzYnv:¡(#KI5›UQRkûƒQçÑÊ\44Èšf¹Pi9Nvʆf)‚‹/ÔI´.õ¡i>«(KQN–0IÍ&«&%5+à#¥PçEB°ˆBÈQè2Ó¾ý¨Íº‡ÿ§–¦—«hVfÑ„Ž!äfç‘ Às êLZ•‹º:h^{©5 +»ÿ‹‡4˜ Ôi´&þ§ š&\ ¡f#´u"XD!‹(„ü`….+Jè;½œ;ZÇ#.×"ßuXÐ3 5«½$§o@—¨r±x±ëž{|×aµ +»(}³ÚK"(™Àë$èŠGŽE.—ï: <h6ú”€q¤ º4a…P ,¢òƒEº(¥«%zIÒû~ÏÈZšŠ4ù.Œ’bTDùßÛ0„:Ž^/é›çBËÒ 0ÍG¿‡FPX{¡Ë‚@/5Ÿj”‘yšÐøE J"TøA]>°ˆB(Q5‡Eêt”Üå‘u4©»wa¨N’R}ǵ ¡ŽÅèXx½¾Ùøßà`Y²¡£Ú„P‡bY ACê¡ùÙ‚$IÀ³º\a…P ,¢òƒER¸Îuy¥Àç‘:@Dgû+jK¬Ž¥@dƒš~‚ÀéÐe‹)Ð6Ÿ¾ ð†t™Ã" !XD!ä‹(¤pë­ÈQDóÚK–YÕù^€Ð¥c)ÉæÓ7È*̺Lq"¢ùSud#.oXD!‹(„šÃ" )œRn!lé:þd™¡(Ùà»Ðf[ÕnB¨ƒ]H.€e)ic³Ú«á»ïÚ«Mu¨ #Ë"ªYíµÊfk·F!ÔÁ°ˆB(QùÁ" ]”ÒøL„–0€EêŽñD—‰ Ʌ̲!Ǫſ«Uu    ²H€g tyÀ" ¡@XD!ä‹(t è\·!ËLG·!%aYeÐéþ|M„.#ãóžòƒEBÍa…P,¢’u¾,¶£Û€Â„Ìàg„¼ðTPK0À" ¡æðT”¬Óu`žc €µBÍa$j &¡XD!ÔF)‘›››””ÔÑÍðwAÓ."Ôn|oWÌê@ „a. „¹@Ȇ¡@)ÇÈÍÍ•;›gžy¦5+´òå¸ýË|ûŠÕ±ûMᇛ׮ÛW,…ï7Üþ¥½}ÅRø~Ãí_ÚÛW,,Úïåí½}…7ïBVP&…ï7Üþ¥½ý@¹¹¹ÕÕÕÕÕÕñB„B!„B!tÁ,„B!„B!¤lñÂ§ð Ø¼VR~ Há; ›×JÊo¡2)|¿aóZIù-T&…ï7l^+)¿… ¤ð†Ík%å·P™¾ß°y­„·"„B!„B¡Kv`!„B!„B!EÃ,„B!„B!¤hDnnnRRRG7!„B!„B¡fŽ?8 !„B!„B)v`!„B!„B!EÃ,„B!„B!¤hØ…B!„B!„ ;°B!„B!„¢aÖ_“³,­Ñ²œŽnLs9Ë|›ÔØPÅ´²Yó¶­k4Gq;P¹v4}a(.†¢µv@}a..梵v@}a..æ¢Uv4}a(.†¢µv@}a..ZÛå"77WFêô—wÞùåéŽnE ¶¾”šššúÒVï·w~yZ–Oy§waòkž²v£ÏNjúRi;PÉ”u4}`(.†¢Õ”u@}`..æ¢Õ”u@}`..æ¢u”u4}`(.†¢Õ”u@}`..^ës‘››[]]]]]#°þ kÎÆ¼‹¥£›áϺfÁ–1YKS½ ¬‰)ÉKrJbÕÚmƒ–š§¬ÝhI_‘µ8Ùý¥g)k*›ÂŽf# E«`(ZKa´æ¢U0­¥°ÚsÑ*˜‹VQØÑl„¡h Ek)ì€6Â\´Jæ;°þ 멼ĂUʈçaI_áy;xXO5¾]-–„¼S§–š§ÄÝ9«W&ÌM·(l*›B&†¢­`(.ŠB(梭`..ŠB(梭`.þ:…M E[ÁP\…PÌE[im.èökÚ%(yq–ÅjµX,Ö5 –å$7›  £Ðݘ³,mU|æ E´¥QèÑìlº1K¡´³QènÄ\\,…ÐÎF¡»sqQz4;…îF ÅÅRèílºÛ 8ë/²xâuøHÁó²Ä7ŽÂ³Z ã3tÐKi»ÑºfAÚªøÌéîf)*ŠÒŽf‹”L•¶1­¤´Ú"åV¥íFÌE+)퀶Hù‡Ui»sÑJ;š-Rþ1UÚnÄP´’Òh‹”X•¶Û(ØõW4쀂n*õc±$äm̱*îÞW¥íFëš§æf5f ¿EiGó|~L•¶1­¤´z> ?¬JÛ˜‹VRÚ=…V¥íFÌEk(íhžÂ©Òv#†¢•”v@ÏGá‡Ui»±ír·þÉ‹—nIKKHœ§ä!¡É‹—nIËH[ º4KqÍTØnÌY½2`IZ¶ûÛÄy™+Ò•½EaGóü”}L¶1­¥°z~Ê>¬ Û˜‹ÖRØ=?eV…íFÌE«(ìhžŸ²©Âv#†¢µv@ÏOÙ‡Ua»± sAäææ&%%µSCB!„B!„º8Ǽ…!„B!„B)v`!„B!„B!EÃ,„B!„B!¤hØ…B!„B!„ ;°B!„B!„¢aB!„B!„R4ìÀºTX×,HKKK[–³,---mÁkG· ¡Ž…¹@Ȇ¡@˜ „a.òƒ¡PjÑ¢EÁÁÁÝ ÔjÆ>ý¹œïöìÞt¶+·uÉ7ùºô«;ûtt«êX˜ „ü`( „¹@(æ!?ŠŽSQQ¡Óé€ÈÍÍMJJêèö 6a]³ ce¤.ÍZœÜÁÍAH0ùÁP sP ÌB~0ãøñãáá့^Z,ésSçÍÁ,!䆹@Ȇ¡@˜ „a.òƒ¡è`Øu)ÉY¶$; oe†ûÖ\„æ!? „a. „¹@Ȇ¢ƒaÖ¥#gÙ’l€Äy™™ó²—` Â\ CP ÌB0ùÁPt8ìÀºT¸Ã”ºtEºÅ’þ !ÌB0Â\ s …à$î!„B!„BH‰pw„B!„B!Ô9`B!„B!„R4ìÀB!„B!„BІX!„B!„BHѰ !„B!„B)v`!„B!„B!EÃ,„B!„B!¤hØ…B!„B!„ ;°B!„B!„¢aB!„B!„R4ìÀB!„B!„BІXƒœeiiiiiËrZú¡uÍ‚óÿ°=X×,HK[°ÆÚ¼y ÖXÛâ×wë}_`ÍY¶`AšÛ‚e9Öóm¡ó»ôrqžb.Ð…ºôBái´e9-m¡ó»ôr`]³,°ŠÂ\ ¿àÒÊ…ç¯ñ·,s.Ü¥ kŽï¹b ~âöÀ¬ËMÎê•y˜’li\`µ@‚Å`=•oñ®mÍY¶$;`Ë2–dçåy¾ËË^’áI %9%òV®þÛþ5 ÔFÚ Þmùýs:¥6 …õT^àB ê¼Ú"Ö5 2VfûTQ/¸?‡`.PgÕ–E”?Ìê”Ú Ö5/,ñ=W¬ÌX€' À¬ŽgI_‘•••µ8ùoùmÖ5«²¡Yš|2ä,÷0«ŒÎ09[  uifVVÖÒT€ì-ž,Kd¯ºŒ»„QÛè|¹hÔÂsÚBg …{ÅÄy™YMÜíÇP 6Òùra]óÂʼÆXdÎK€¼îAX˜ ÔF:].’gùp¸€Äys’sÚF§ …» Ì{²Hhê´ºÜCAwt.{Ö5 2VæAêÒ¬Åɳ,mI6@êÒÌø-/¸»\Sç=±8ÝÛ{»f™ç~?±æ,{aU㸨ÄÔ¥O,ö‰LÓ«s6æAcç¯û»å­ÌH[éþ2{É‚øÌÉ9îŸ&&&B^Óh+H^¼"yqãý~Aò˜TÈÎÎÛ˜cMOüõ]¨Î—‹Æ†¬jác<æµN ß­øÁP ¶Ñùrá–˜:7Ý–ôÅYé‹›~†¹@m£óå‡çB`êÒžv`.P謡ðt‚Y’SWz~™‡G`)Qöïàò¼ì•wèAβ´ŒGúÝÕç{[_3ÙÅóKL·4sÅ)çû¹uÍ‚´Œ%Ù˜:/³©;ÛŸy§.ÓaÔž”Ÿ ÷…õÄyóRý~€¹@íCá¡ðÜ@X°*`ÆD jGŠÎ…gX"X=›øLk˜ ÔŽ Ÿ­¹/zF_¹a.PûPv(<ï{÷]O—XÓ&/ïP`–"%Î[𙕕•éCë¾CÏó/Ý}ëžg(¡g$¡»j¼OÃ=Ȱ…a…žÕÜWÃÝ#)—¦6¾ÎýªÔ¥YY+Ò-`I_±bqz ]Êò Ny?”¸‡4BõòÌjW ÏEc÷Õ×B0¨(:ž­@^Su¸¤©ÄP v¤ä\¸?×äe7~8ÊË^™áËsÚ’sÑÄs×”gˆ¢æµE‡Â’þÄÒÔDÈ[™‘–––±2½Ã/óPà-„J”:7Ý3ZpL*d7Þ‘ä¹–½$Ã÷¥ì-9‹““- y·2cÁÆÔ””1OdfµpËF ÝÁ>7áæœÊHsáw[ÒWd¥»§"]™–f7ç²\†#Q{Rv.<Óš¤ÎM·Àù&UÄ\ 6¦ðPœ‚D˜·ô‰ôd‹5gYÆ’lÈ[¹:'Ýçl¡@mOÙ¹hläÒÌÅÉϽ%îVxˆ¹@m¯3䢥áW^˜ ÔÆ” ë–ß› ó ¶ä@r³^¦¡ÀXFãµì%/Μ—šyyÙ+W.ÉÈøó‡kZ×,pwçd/IKK[’ÝøÕ_y,§%}n*€O°{D#B¥äÂ}Í0uéy&‡Ä\ ¿RBÉ‹W¬ÈÊZÑXΙ—à=[`(ÐßJ)¹ð¼ñSǸsEêPJÉ…çÕž»¤RüÇ£`.ÐßG1¡ÈY¶$;¯q$XæÒT€¼ì%Þñº—s(pVg“8/sEK³µYÒ¯H_lµæXs¶lÙ˜ýÿìÝg`SeÛð댜Ìî½[J¥ì](»¢€ pOT\¸Å…ˆ¼úÈ£>nEEœˆ8•2D½)´:Ó=ÒÌ“œý~Hš¦IU[ \¿/¤wOιSråüsÆ}o(.^öüªìö=ÃcµÛ—Ì]YZ\œ¶¨ýyþdÒt„:ÔÙ®‹í[7lX˜Ûz¶¦xÙ­¹Ë܃Eb] Îw¶‹Œ«æ>¿9pgÑ2¤;:Îz]ü ¬ t6t‘ºð\·pü ëu¾³^ž¯-g;<‰y¯×½ ‹¯À:g$eo™?Ó=–Û’ÜÜÜ\÷À -WARvöìù׎oÿ˜l›cµI³—¶Þ„ësg®ûŽÜ¿èG*{oøm™tÍo–©Sµ¡3ÕUêâ”`] ÎÐUŠ"))ÍwgÑ2t*î,ÐÙÐeêÂÝo]lÅ…΢®RàýÂÞÞĵ€u:GW) ÏJ6lÝÀ€W`u¦6g€ûØî?sêÆIËnhsK®ç.ñìkç¤oXV¼aÙ­–µ®=ð \÷»¥FÏacY±ço4–¶{Ê£Ýn<5gó­ËŠ}æõ¹Y½Í¨uý½ó£.²ççåµÎ„îž×çÜ Öú'΢ðn¬ÍÎÂ;2/ú‡Î—ºðôCúWœ/u­ãc~#Ǻ@ÿÄyRIÙãÓ—·‹ CàXç–ìùËÍIo9¦›>©õûqÒ쥞[rç£í”›>5d,+>õh»±ôI‹|6õ¦ EèßÐEêâ¯`] ÎÕEŠÂg1gùRïÝ„X¨Óu‘º€ìùy­[k»)¬ ÔéºJ]´hç X¨su¢Hš½tù¢I­ÝHŸ´h9†( Ž?Þ£G³Ý ÔIÜóÝüÙ]½]ýu¬ „ü`Q ë¡@XùÁ¢èEEE111€W`]hÜ·õoÞ~êó þîéC¼W7"tnÀº@ÈB°. „u,Š…°.0î›;¨ž<Õ”sêw#Ô%`] ä‹¡@Xº@ÈEGÂ[B!„B!„PWä½…°+ÎB¸hÑ¢… Z,–³Ý„8£ºàxïcÊåä5Çò±Sê€H˜JˆÚ3ì#BíÌêÂå3]ŽZrq´Vvµ© Åæ(© >Ã>"ԩά(xŸérœ ¥‘8^n“½l"a(!ž‡P׆! ¡@¢òƒ! ]`:öÂE[sssÒç,_ú¦ô$«÷±šRxž¢Ûd/Ž¡˜,û7zŠPç9³ºðïY+±.•N瓽ˆ†NaÊŠå„§¯uŠ3+ ^j¬ÁÅP‘ã”Ö¤Åp$¨ŠIÀ½:·`ˆB(†(„ü`ˆB˜Ž<€=?/oþi>—ìÞÇjRœ4h[÷:$YaÐFçž3© Þæ“½d–ctÀ·f/²¢¢Âô$Þ¦ŽÎ1gRN±õ–VMªe'¯´^í^A’á&pêΰƒ¢ „! !?¢Ð¥c`ºÀùx¾u-©pN†ÐµI–׃¢«© Nê!B/°.D[kh§ Ö*|ë\éÜqc#DÔÉ tž , ViýBâÔj‰µCë&å$Uœ®poÎ_¢ „! !?¢Ðy «Àò¡eN„Öì¥!€cÕDTë^§™:` åi¡éßi:ÏåZÜYýE¨3´SÞ y^JR© ¾Ñ»Œõ°±‰¢Z& Q­]Kæçs?Þy=F¨ƒçsõ»SC¨e;‘Þc3cÊýãï4GÓ‹]mFíEè\‡! ¡@¢òƒ! :xÂ3 ȬûA¸œ²KC’­ƒÌ±Ô1‹dÊ3ÈI1̇g¡—u.‰õì3§“Á„ÐzæÄu¼¢N«¶{–¡öîU/[vz‰P'rIž/á.‚Ð:§@PÞßY*Öâ°“ž–"’üÁétÐùCB0D!äC:çtÝX¢â9¢€ƒ9-E¶žÀ•u^‡ê-Ù‹mr9)¢’é–Á¥âŠR%5JÏ3’磦ÉY’ê:Xà}¶³Öæ­¥ ª“{PÇáÏŽŒ\Z^Q(Ϲ™r‚H-»¾Ø©ò´ÔÎD³õ-{ŸîþîR8o::¿`ˆB(†(„ÚÂ…Î9]÷AzN‰8ØF^ @`T-I«™>PÃtO†ò\ôHÒNs­:’®óy¾…Pñ¥Ûk„:áÍ^ N'­ShE%y*¥i_eyPjˆÆªn¾â]•‘醲ÖaMlµ6¡7Wwr·ê8\ËŽÌ"°Z^E™§='+›é”Žk´»ªea:ÞY{4²õêc+:ªT< tÁ…P QùÁ…Î9]÷Ù2]ŽƒkædšnIZVqÅDðTº¦¥û ÍsU!NB&ˆZw‹¬¶+@SͧÝ‚0“dÉß/‡P'"O]ðGk€Rè–ìÕpÔhŒH•£4-'U‚­9:=Ñ\²ç{KcÍJ˧Ÿ½Èêj²®îï—C¨³xç{¶ñN­(È x¯~7ZÅT[W¬r©={ —¤h˜JÆIÔ¶Ì¡c·“Av¥\}úãš ¢„ìº;StaÂ…P QùÁ…Î9]e ¬À!åHʳa³V ‚¦)d^8d1êâˆP†TÜqŒ¦y—%é¨Tߛޥf€“/•5¤aOû’F•z £úÆn;~šÏGèŒÖ…w¾gÑlWTZ‚’U²§R\'¦Ð~A1jÙ“½Á*!ú¦;&ee€¥Úªp}]åiwIsý JHˆóÛoN{ ‰À¢ðN—ãàœj™WD(@€ ^ˆ*åŠXCº«vQŒ¤ªÍ:*ô¦cµØœ|˜¬©6hàt÷/©ÔkU¡ÝvÚ/ ¡3„! ¡@¢òƒ! NãÖöUKŒI×ÎÎNú7û8¤I‰îyÉJñ´BP*ÒsòP‘¦òètž×à¾Ì—¡‹ÝTM‘aØ¥‚šHÖ‰Üéf¯½ôÖ¾dѶ1$$ÒnÏ“¤§¹RtÞꬺðž<´Ùd•V¦€‘Ýbý©ÖIعâ3uè<Ô)uA‹žìE8ÃHšQ<ÙK'9øÈ¢G2€(€Vbu¼#¹›#©ñˆçù6«¤ÕUIOaRYV­Z-×Û€RSפDI6p¹¼šc•ª¤òÃ8) Ð)E!ÞÉq(•äbHYPyN²*•P2üX¢Ö¥¸\"¸T´@“ÛÁC©Z÷2f—¬ç ÍöË)¿°–¦Ûžf¬ Ó§Vs•õ¢·å¸ÕšRç<)â¬Ò¨=¢ „! !?¢jÏi^›gܾjûÖÍË6xRHzú¤´´ÒÒ ÅV®º6{öiÜ«8¤M{gwv Vµè–ÃÁ ¡ –t57“œ v{>¤»š’íŒB fd»ûÄ av:4Í&‘ç½%ͺ;ƒ¨Ý´í@`ý'¸\¯·4a´r Ö;¶ÅF]ïnâ¥ü†z&LSÿÏ_ß©â‚2%Á`Ïó¶KQDqTÇmý[:¡.¼ó=“.^–u*•7{É¢ÑfŽNs‚Öevi" Z™uÕë4YG‚íž“*»•‹ªÖ%©ÔFŒïãn´çÞ@1¤ö§~Û"ªªè¹óØØTÕØáî–²]U.Mj˜Ð¬=\2¬»»1©!Gp¶z_G<”ëƒ{÷rìÚ©dt÷6’ ×ËÉÉ´Qôoé„¢hÏŽÌE¨ ’E§¾åêw‡†ªÕ'\”Ò¬åÂm¼=\âTÓŒ©:Ö­é5Ø]`–)­`q4ž „\Hp?ñ¹fÝoAÔ&º4v£_p‚»7ÁóõCh £Ç©/a‡ÇF¹)Rƺªp柿¾S5† J”O vo K(j”(þųP!ªƒ`ˆ:§aˆê¢Îi¢:†¨sÚé â¾$wáHOŸ4þFŸÁåæo_’»Õpå8¤Ey†NP©8ž×7V©Üg1´¤R•f¼ü?û\_õ¶º˜ÐP 3šÉûl"Ñ R¢h•ÍfÖñM‡µ^¾^eÞ0$ª‰#XEÑùnÝE²+²èø(Oö2š$0Õ šïbáÁ¶&¤ª¥õ¹ýdÁFÛO饂hR”ßQ®Uµ\ÀïV«|”®Úa5*Šá464½NQâpÌÔÖIuáÍ^4çJeÓ«eÏ ½â0ŸHÛ}UçZK#§‰4èÖ¢‹ÓHÛ"¤F÷ŽBítÈZ²18^s¸Â»æÆcÕI®²À­þò@Õ£îÍC[²WÅÎ*Ñlç‚aWõPwör¹b¸šª½RJJ}ŸK&g–ܾ(uÁUÿüEû+Y[‰5ÿý)óƒû½ÍSnw„DÇ<Íy|“Iõõ×üwœy÷П뤢ðÎ÷ÌÓ mçLú®eoÁjÉKX«çk¹¯¬ö aÕTK½%îº XD"D¥°$˜4’³Rî]sMùh\Ë:EñÝúIeW~W÷BË$Óf"µIŠrU•ÒjïbEÁAW•ì9œ<Î÷¹78ô¤ƒXm‡®‰ "ÚöÄ,Ém£Ý¶ZåÚt}™Ãjh»ä©[GÓqŠ‚c¦v0 Q¢P Q¢ Qã|Ÿ‹! yÖ-„铿,Z¾#Æ|"¶¢«NQþü•ÔcO¶6{Aañ«®-ûN{ËÔsBéŒG:ný]Q§ßrò£Jâ,ÑM|ËÞ®'²È&}ĵ 54YÀ©! aUW›úGXÄK38h-#Øõlu ä]g~”nÒ.ëº2ÿÉÝÆ†±Gëò2[SÚ‰fcR“=ØQY ­_é S AM«"ôÞ–oŒrD9¤?ÕX£H&O±[ âª&ÍŽÖlÇDS0SGì­g¡~35÷-òÊøSÜD [Tº•ÇÚ\±_#OÊ|Çí+\ $2Áì§ÏU¢Z`ˆj†( Q¢`ˆòù†¨¿!êüvZƒ¸/?;;©½ƒ¾IImÚ·/YX:gy^Þò9¥ ÿqA©ZO "¯‰íN(8e€ÁÕÚ OßÅI„­ ‚œ6e^¹…#Kjò@£áVïlN vx×™¡w¯Ërˆ_ømË*o­ÈOÝi%+Ø—Ü-ÕÖMGcrXˆÕÝb·×ÊÔ/šVܳö„+\óð²+—¨U2O¸/ýåËå!úÖwi£)Ýh÷ã#õO–XØ­ò‚2çÃî–“+N°Äáýá…µOyŸQràP˜™ÿÒw=e ÐÔ¢KöÇ´”h›…ˆ5Tú.¦5ôW¢¾% ÏÑ'ù±ÄÍÖç¿Uh¯ ÷m9n½ïˆS.oy]nudF#ýNˆ„ßu§R5ߺBN©UÈ63µ»Ö~™ßJdÿ•ü•õ‹Vzýß/×¾Nª ¦åT¡Jàd†Œ ‹R+˜j\BßmPÿY‡»HmSM-ïàx`.jìñéå·5R‘åùÍ çìbáŒÒëê=cˆÖï/¯#c¶ôšqèåµ~ÛŠ?¹Ç4¶_œ­Bið¼Uè*£#*ÌÅ—”¹[Nþx´8¬·%DZ<ßRL+~-=ÐT?óÒ”Šî®°¢hòöЍü|!ªç±G>tÿXþÂÊçz=ÃõÅW{¾5©Ž.Ïf«J=›8ñÃÁÃLÿB¦Wé·m¢ÒѪö?ÐŽO}(ÿÞw}[Ò¾û`³aÂŽ·Z¿äÏYrèí?ö¼äy8v+ëwYÕæ’~뮢?{~š×#º»~Üæm!êë uÆämß¶éðc+Ôá± žêŽGn¶úµ”=·äÖy¾¸G|k-·”_ößÕВݧ¬éŬë÷žúòmuRQðtËÉCŠ¡D><.T¤Aà% eˆW×/ái /5ØY`µ„N^Ë á6®´¦Œ–æ”Õ\Ü: N~º~Bõšoÿó¬jÝ;q—õ÷ ÏPAEµMqÖF•µ¾:(ÌÝRaãkå£ûÕDÓžY{âžpÍ,®§ƒQ5òðs*å¿HIý9í•çÆ­õEõ饖Ûä/+>; ){|zé?3¡¥š€a$É¥é?¢ààÌõFV—Öß³ê7=/’vW5è(+zõ–»“n°­VXXC¢ôžžÂê/Np„Tzûˆh €v—çHRl]SÉðcûÓÊ-ž;ØIíÉæ†Ùmðüî:öy…‰14ü¯J‚’ºM°£nè«kƾ<£° IõGáK°Ãx‡I)ÕG¨z9ðUAìûod…ém2a+¬/>Ðó³9G5!•[Þ€¢šÕ†ÒmW$Ç{ÎF*„=Å |·x`\ëD aJNUÄ'n¢Y;þpkurëŸQóÉo+¯Q©$«ä9ÓÒÄD=ûÌ¥{+´[N>õÜ÷úÐC…–ËäxojlËô¶†µë?›0<®Às¤¼‚{¥QitÒ¶:q»…“ØÝ‹6—NÜs%ç¹Çû#«”4©b,ê ,yVÈjéÐFpŠg|²é¶“ÔöÃæÞ¾ëù}ߤmMÙëWvÓÉ©¾Ÿ;&z#Ð/ª˜«ÛíÏ¿éÌêBÕ2ŽZp)jºGß$÷ÉÃê²R©ŸÿV|ú ¬‹Ò6몛YB7®0ó»û4«"J€ Á ´Ž "lž›,v±«0´¯0èsÈsv®á¤gÒô¶½rèáͱ“]èI$áÍ5|4íŒÒ5x>ñ¹ƒGêãS,Ñš§ç•T-|Ïøß¾DÈûéÎîaJ÷]¹øX]‘8®bGë%÷nö]GG_ÿÖ´ÿ9ØänÚøûÀ‡ó–ÌYÍïnI©/SíR¦ç=ñƒ»åز‡’Gîë1¡àÍÖ3Š;®|6|Ȉ‚6ûmâè»×eú¤·åòöëë;Êögœ”‚Ç?=²­®àú™Éû~u·TÌž¿V3Æ–•[ô•'Ÿ™÷œ¬›yOÞÅþc@ñÆâ¼)‹ó®{½±Ä“>öþ[ŸÑÝt­w™_î]ócÚìA£þø¿–ÁY$iøû-O½wÃÕ­WþdÿºéKìUíLoôóÅ‹·Ü·åPÏY•nüã²%î÷^ºÐ<å6.²ÇÉŸ<‘t÷£Ÿœ8ì8Ùsºï³Ö<ðñ¶a÷C IZ7û5ÙÖºlÞœï|ùc꺛ÚYøßufEá½úS©I™”4„áÁÉ9›šëõ¬òö€VÙÓ‚ÝΫ%ªz÷º%ÔÁ–ÖÛÀ¡ÖR¢CÍ9ªÃ=±ceEæI®tõçA±î\ÜìôÖ#Ñ ªÚ’AÕ;¿«÷”I¥¢ ·×¨le¤'Uü^x guÓ­ã*“«¤“uUðÌ¡š§¾}çÙ'‡œhÜtô |u¤ÔiRuÁN´¹mÄmB­²è÷%!»LÀf›Ü½iGÊñÁoi‚ÿ¨¶ÀeÆŒúÊà²M¿F{Æ›`¢(1ˆ>üù†ÌÖ]ƒ‰ zŤÌ,igÔÙí ‚šçš½-ï©ÕÙEorSmõ|noV½±îîIGÊ¿?t ë¹ýª°Æ"ËÅFÉm^,¶$“AkÛ™*èõÝ‹ö•|àó}`y¯ÄÇ~Ê»£ u¶øÕ*ÝŒcï~=(Þ{Rõ· NÝ (úp]Ë—NZ[prñkŠœ/hýÖÈ*ÙͪomêÕÅž­ÜVíšÝÔ—Õ6ñž/9oW64¤n)4ù®ç¿w=±¯±™\ ñâžã¾Á#&úÐÞÄtàØ¢ÚÂ…! CT¢0D`ˆò‡!ê¼QgtôëoËŠÓr’’’ÒŠoÕ FΗŠôü™•’~ô”T^šÚ“5õ…!©ðe^Où¨HrBsƒ¹Š ‡ž½è¾§‰"ÃËå e$‚•gÅ©V~¼Z•™)2}’aкVFl¹E“¿}fHÂÉ^u¿<>¿û؇®ºZ²¸‚²(ãïÿâ‹Õ™S“‚S›õŠgÆ3ŸVUR|Ì5Uá±ÃöÕ;BöYÓX>¹Û˜Êc¿ùè5]÷Ìx†Y¿cE÷É+Ø6äëç\üøƒªàÿ[_qhýÔDE[ZßíŽEO¼ö•SSêö×jò·Þ’ôC ×M1:wï‘DšzÃU;WUPW–Ì¿¢ºW^úîÝ¡ # œÈmM9a£þX}£D«‹M¸îÞE¯¿øßÈî_Ù™ì'Í IDAT‡'îÚ06eÐ>Y¤ ~¾ºç¸ôAÇÿñø?ýïÉW$Ý M´kâ »…=|i±àeóŠÐ/’jâû÷4žÜ7 sØ– h!å)¹,±ñÀ“•aïÎMØôÜcšŒÝ—ß±eþ¼7ï{å®uGž ‰°Ù̆úŠ„úüqÓïyÍ®DPÀŤäo¬ØUøþìð‹6vë¯Ó§ý÷¶á"Û¾‘ÊÈÿç¢×gü<~OmÉø†ß‡E‡p“îÿtÇ7¨âŽg·öµÚ:-{ã/’ xw:Ñ?ô½•¹Á±UQñ j-gm6ŒX³gZ·^WíÈe÷ ´…™'Ìúvíҫ¨©×¯XóÔm¶áOޏØòμŸÔÝ–>zæ{‹¯U™GÞû?ãÊ×o7úÙA§ýþö£i‘Çc/ù©šˆâÊöZ㥱‘ñ¦¦ Ñ¥¾zlq3›¬ ‰ùnÜ‘Ÿ®K1Ô¿û“uïßٛΩÙýyάTgXÞÁ4¢“Ôªúç†ñÀX-E‡1¤>æ »à¢4Mµö‚ƒ'BH]òk²‚Ü›a<\ A¢%"!ÊevÅ9«Tß©¤»«ífyÂ_¼ÿø;ݾ?ÂkuÎûÞU}™¥Éº]óâ§Y/uß´Yúò&U¶o¯ £"$ c­$+H*ŸŠ­-©3~ÚË¥-%ï–eX¾¸éµ«?·×0áèCßÌ̹9»jýk‹¦•<6þêÇôŽ¿ôÕ8+ÔQ•Zu¢ßo¿Õ¼™y‹}tÓ&vêëkhú~·ëãЪO™ÞôÒáI—Èr9·¢|øúqëÖ®ZþðÌ>.ïþÑc‘ÚqŸ}øù²—Nnêvò·ØÂúfä>ýÜ'û%úcYeïžÄpóÜgÞxõ‘+~yX5jaåôg,G.]ýþÎqåÈþ+>¡×ÑK¶7ßöáË[^J:¼ÿÙ«¸çö¾Sk—tÙÖÂ/n‹ù¾×õ“ïºÉï÷ ι;|þã‡&_IZ¿ü„šc]j%,Ò20"jgÕØÂµ•=g…TÔ’#.zææ×FeŽ^¶fõ”Û—=œ‘qË¦ËæN>.}Û7k/¿¦Áœ0àão055l¹~uÍè§«Å_õÖÓ«?{ÔT÷hÚÒÆtëñª¾Wh²†,9OÐi£ËÊtœÝ® ·Ö5듪Ómƒ,ž½Dd>ûÚºM£¯UÙþÐü7¾\¾¸üо[¶·ùͱ¥å=pý•Ï]ÿñø1Þðæ+÷=Xvd›zÕÖ{.aÙ„ŒM;:I''_¶¿×˜¨º*sP¤+H?oÇsÕƒ2I_öº­rZºKL¾áÝßÜ<+b¿S7≴—þ7 §Ã¦ƒ9³¢ðÎ÷ìR©h‡2ÓÔ¼RUUWU_§×u[¦ËÔ‚`—¸ú&“– ¹§û‚;lO<æ´7‹2Ø5j5%E¡+cU«ùÕ™rf^~mϸˆÿ.¶}Ö’’-ÎःI½–·ö{¤ûÕÓ¤“A;ÙïŽûB½ SœÚ¨KÉ0ïCVÄ1ÍÎêƒÔÁBWD’TQ=}@ ûo‡Ì—Vm‹Ë¹b¿aÁý÷yg¥M¢vl”{÷5n·ý³ï-¹I|ÕÖ£½Nþ¨ˆ)’ùÀG·>ÿòm´ß>6®æÝêÍ£§„ïM™ÐçøºžÉ÷™ ü@Ñ‘‰µeê˜Øæ“Ñ3?á¤G?ûí êâšêg'_lxò@V¾í­ÒÏ»Gó7f¼wïM·¼¹ØÐ'åFç¸á?UÅ #%1©øÇʴɃµaKþ¸ï®»rö?é°éÊ*bå!×L9˜]TúqS~·K·í]Ýtº²üÄ­é‰;·¤ŒJ¡7l8ž8F9éú¦rúñJáâû•Å•Æ_¾}á×ϻ⣜ߘôQ!NS´¥DW•¿nâCƒœŠLÛB»ço;qyôŠ]%ã/‰,—3Ö$í×®˜|ÈÚM(H|q.±ëêߊ^4 ÚYr²Ï“®˜õëJ26øåÔ‘·8ß8ñ3¬šþL™>¢y[ 1ø‘5ﱆ„C’“Ñ…:›~8tNÉ–‚¨¾‹×nœp´¢Ú<àæû¿ØäH~÷â›Tª§Œßä{LŸþáM=ÒÓ_¾ð½‹©8óÊaÿ{hÁ|Žþ¦ýÔÈ?^W÷°/|`t£¨ó·¶¤5Õ'@¤½A%ºÞ™2qžÕž¬ ¹%owjáwÚ„^K‡Í¾âçe¶´^1Á7Þ×O3«cªC†( QíÁ…! C” Q¢.°Õ‘°þŽï0r¾<ã,’’j•¬×„¯À¡½fçÑÌ1„û6YA e‚Íûé—ÙwAP0(l¥–Ñ›÷ï§³åøÄ¬É3G7ËÐD_a¼Ù¹úd}uâƒ;§nÌ¿iÒ”÷ó ªªb“®_Qyòp¾•žÿ†Vâ [ÏÅu÷ÔvßîlR˜rÛD“ß~vY¼)s‘©¦hÄäñân³VbNØýà¨IÊõÓ?b®„_÷I©½>ؾë¦[&;z0NMh,Œ]ùK¡÷Ëuw~vШ^܃}íÃÛïÿ\lwÝæ¢‹SîÝ÷Óƒƒs•»oz¶{-µÏs›Ÿ8ö?V¾êö«v>¹¥ðkmFa÷Ô§LÝ÷T§ßýCκc½b‡ýºµxòu7=ÿíûó¯™9—­¼úÛßo¹aÖúÇeyè©ÿ›´Ôá±W½wP•olÍs宂ÝW,XþÁûf§õû}où—súVsVGöÕÓº&MH·Õæ{r.­j,xè„Y.ë¬:KwÝøµ½‡lÝ2qîí7–áŒZšbe^Ýg`þà‘ù;ÖMéoX eT܈LJî1aÅÞ§&Ïx¸pÛñ!cÇ~¾/-|ÒK; £ïZöâùÉÃF?µlKŸ¡7~}pOÖŒÉo€6&ô× ÃO=½ê畇†F `2>_ú]æÄ—R1žÈ U.MmõòÆ$ß'ðƒ&õ^i³_yɉ¢?½jÔ¸ˆdm“°ª.ëåIÓ¶ÖížwËÜ—yèúÝ£S.ûÅeßú㡤©³_6xlÿ÷sŸ{áÉõUz¨묅ÕGÉùqÝÕ•¥‰.]D|¥K"¿YöqfÜà5ìµÇðà“¯i¢u›1ù-k5kÈH\“÷n¼×)EÐŽ¿® Ï|Ï.ÐHNm´4ÀÌ¡ÍU¦R KyN}¸(-o指ëû“:€œ,[µ¡b#[µž‰“­93DLJ¿sçØ­{ú…æL¯.­”óèCÖuÛ®œýþÒµ£nìulÏ®ßßÔÖÛŽÇõO}Ê5»ò]ßA®ý'Îz/¿æñiUÇkãV¿|÷.fçžÆ Ö‚°9/vÏ © ’W<õSa6ä³åÉöï?É o^¤ëýàKY¹sBæ÷Gv3;+žybþ Ã^Î>ñKÓëOÏ0èª+ä½?|ñ[Þ›!Ç­©C>–þŠõöTnùíå†]W3=§ÏOéÖ)«ƒà¾W×èŸ0mëÿêêƒmÅ˲õ½˜­ÍÑP“ôŲÜá÷$sÂÃÑ”|rØ¡[ób×W®¾jÞ#w=¤\Oú‡=4evÌŽBã=¯ß¥„(öžyëk‰M›^sהǕ›•M›'–¬ÿšâ%.mÚâû_#¬ÄÚûÇO{÷ÿ¶rä(E¼í…»*šÈõ/½M[XI«Ž*.òÕ–ÂäG?\3)=ÙÅëÿ›œýÃ×µö}Óóæ×_ ”úzÁ¢ÈŠ¢¶öäxëVÂAˆI/ýÄç§ü¶+ÚY5å7äxù·5›M_¿sÉÖͼ­vЦ§F¬/þòwaeuU‰éCœÆb+î7lÂýsƒå#¯:´ç«¬|eåíc.‰¸ríR©ùë—2*J6¿÷Ê wòNøæ„=ççOÕ‡˜œ§æÏµÖP¯¿ÿ?­¸4Hïè¾z¥#6¾ýAìžc¦äx!XZQÃpâ§|wIŸñßb[sðÎW_Ü2âH!÷?þk%MÙ#W¯þl@ΕUþþº(š $§JDk€”Cu{Ykœ{PµÈ ±áøÏºÐ»‚¨`âÊ]´a?µß¦ÍN Kœ‘6òÉf™ýPÅι¹)èËDKŃö+—»lXq~wSùï¶Ù†½'†Œ¶>œ¼®„mDÕ»=_vOMèö‰6õÝn^`’¾ùáót'?M|6Ëtt¼8þks³¢>üÁ¾ò;'Ýwó.ã™_Dõ-{µhó¼ä%½4.mÆhSѨo×WCÔŠK{¬â½©×.ùdiÒܙˡoo9V6Dÿö/æ[sï¾æ ö½lpã¶ÇO&ü'W)Ÿ´óøž£ÅDZÑÓóâ'd6¿ÛñC}õ!£fxêñ}Û¦>öÐæ÷g<<‹%+?ØðÚ´r ŽŠðÒÍ‹3Ë›^Í8’2rVÁú]yâÌ~Íë7ô¾üjÓŽá#–ïܺóHÔ@é ÓG/ ØËò1£’$¾g¦:¤çŽý~óÀWå‚´wºëžæC5#óãFÏ=±qÒ¼ù½Ë~ÙÄk’¸F•,JáÈ—{ô‡)¹a2©/–¬ç¦“ï–w]t{Ÿ)®?bÆõ:¸áxÝe—„›2ô ¿3¡ï®÷¤OÈ=rxÎ` wñ¯Ò w¿üîŽO{kz2ñkßÛš@éž]©¹½»áŽ”Á÷‚c“f÷Šxâ±þ÷^ÒHÔ?£2—Úéc}É[×õºf8€ ñÁÂá’^`‡x²Ð0$.ÊØ_¦¤ôÏØgiº5wÀ¸xèËŠ¡oEŸ¶–g ì©PÂK,Œ5r'%“™©W(M'CÙ¤é¡'Xfè5JJê€)¾ÿ)}¦úþT6øÆ˜2'=vÀÃ0`|O€Úù #ë Im{FeÝ]hysÁ³_•TMšõ‘ûŽƒÊæxü5Åf¾x¦g-½G͘ Õ²â^ž ¶tô˜ñB}ü÷ÉÅê|ð¢ë^Òêœ!ÏÈÀ¤ÃnV¡fL´õ¤¢(=²£zd¯qXÀPñTÿÌç ÇøÀ÷v>½! `&ØAm_46y!€©•Å£™Óïçl‚:HuÊïÖâÌê‚‘¹Ò":öAFrÆÄ‡LEqƒàd´gøCŽÖ(œÈZNÊÓâЇ¨lÜëw?ªXÈôh™$­dpÎÈÿF¾þvOs~â `Ê7È5×^Ý´n¿þæ'Ê"zc†@Pbè–ÄK’£RuÞw’Z}„®Gv· ©:sËÉ£Ê#åÆÐœT¨Ö&Q&shQcC¯þîÆ [ý áèQ6pRPE*ï–:~z*Xà‘~×½=`ý× ƒ Æ~c˜ºÕæ‹so`@=ur·/¿)Ô+‰ìþ£Á3ûÊR]zJ„N¸$û…å¦>‡ly €Wr¦†ÀÔ÷` ÀbuÍìø8W޾µfÁ3÷˜uà%D€ýIcÉÃa·=ëh¬Uh¨K§¦¯ú6Ôe"ÿïa%DQB”)ÏŒ<¼!ýê5¯’_,Çɉqò­+Zoýy±ãþ ãË» ²®ÍÙ»AÙ´Tiò5Ÿ.Ø3þ1ó»–#ÃfPôÊñy/¼òʸ-Cn¸í3Y-Àð/ç÷Ÿt±ê“Ýsr‹Szˇüç‹0øä*]¿ë›ªª®Ñ¢0æ“ûÙ1—‡V*¿X™¸ò£«Otÿ¼÷Æ©Ïß§K󞻞»B÷ʆ‘O¢æ¼{K{ï/1!3®Ì¸;èåoÇ<2SE)Åü¶Ï3+ŽP©;fœÈ3+ Ž!Ê¥­w†<Ê©ö… ÀŠ©ÙĹ繂Z- ©j¨oÖµì-ô¼Ý©þ¹é>«þÌnqÐè´8Ì«~(¨èc¹N.€›ûmá»Ê` "ƒš·^Êj0Br"\YrRúøÊÝ·«Ç„€Ä‡UŒèQñDÊ þŽD9š†(­³fPQ3“ÆÀ´‘ÙSÁSŸÌ¨´F'j@NДÞÓFÀCÀ¯ˆ¥›­˜qû¶¡«û™©2êC‡Ÿ¨†Ì`˜Ü{ðJ÷ë7\~ŽaRÒHåÙ¡i½Ä>Kœ×¾°òyº®Éê?›Òþ8äuœ55ãäøî· »ˆÊ€Å`oŒ¦"¥!ðüˆ^Ó+ä=ïfM—÷×Ï­z6§ÌÙ[–Ö«'€ ú”›Ãú™%Z– €ýQ3«o »ïIýïíQáœ5ºkÆÿ}Þˆ©#–06˜’ÜoU±yþŒ74Vß10Ã=EÝbSóÂÉ/–)6áI7SGµ¼5b[ÖÝD¶kÙ»úMú-V„؉î¿Þ<àÞr›¨ã¯ˆ2$<Ÿ ýœZ;Ã즭ZEé®dwŸ}·Ã²6ªlZJ?Ôð°g—âóJ@·€ÇÀþ­Ú<³o*()E~!® Ä6µÒfLŠ †( Q¢aˆÂ…!ʆ( QXˆêÈ1°’’ÒŠ7o7·o.Nkw º¿Àðß¿rçWjZ N^!\B3­uºDO·¢ŽÐÙ8©eä0>Fì˜6ë;Éñ½ÀÎõ×}öûÿ5§†‰ƒ2nw/¢ŒEÑ™Y¢™än÷Ùäieo½ww, ‘A# É¬×UÏØž#òtÏ„+@溅F›b3÷46¥z6ªêœÔà˾kjìøB²ÂÚœ† !”Dfåì#ØÖaׇu¿äY3O’J°»Eí:°ðå{k””ÐÛ DídŸU;‚TÃÿì/f {y§‘…ñrMï0Ï}ÝŒœdsQ3rê…µÞîn6 •[TÓЦÏvû¦8ù·?ÛD[jÖþ]”ü©o“ÖeÔÚsãèëÝ?v×ÿưM½Â>ò.È<£s¶¹iö/(Jh¦¦ÈÖwi²öÉH:N­,ñ]LWXø[%Ò·±%x’̈ÖS¤;6fUG/8ÓºP+\ñBùëÿp:‰LNŽP[MfRœ*OÒâ) )ˆŠÈ9)Ïø…|h°Æê¬JÉg $ p°ûEÍy 5÷F'IÆ´Q©îÅȸhˆ˜2ˆŽ4Œ¬ûmÈMƒÜí©·MîóÝ÷ T©ñ|¾–«Rå¾AäïOìLö¤ó†àxÆDô¨:˜xù(wKÎC™v/Ý0xÞE/$ç³{|Ìš;iPÙ–Ëo9Œp·Œ›Ÿ3®iCpI£##ËÝqcnúE½º¯Zcì=ÆÝ2ð×—?5dË+öç¢ãã¼S®§j<1xûëºhÏ¥fÆØ){–o͹Zf`÷ԸܦŸ8ô¿e”÷‰ýx.êÓ‚'´sCÉøŸè¹ù-Ãâôºy[†nþoÖøØ±«ç¹Ì|öj¶¹ahÞ „Úsû·¶ošÞ¸?Ô¼þ^ïßëZÇJÔd¥93Ιï»LÒ×ÿS_:)jr›êýð¤SÜ |d¦÷1•ûþ#¼àL‹‚S‘oÚ_XY}§SM'D€áeÖɃ¢ÑqžáN‘—)†t0Þ3P@(ÁÙÕ¡ý|«Å@ÅG¦@Ž•‹íóÊG“†¥yþ;º‡( S”ÛŽ›×õ3Jçù_»~`âGý®¸4bPu,™ñ³üŸîZ…ï—‰”³Yk‹ì×ßVç~–”¤zgAÜMííŒwpSF›±”PhñhÌäªuÈØ±Çk©Ì+"-¼¾å±õŒkÁ¨/õÒ M€ž!Ê ,›Ï8SÿüC,ÒÐú¾]•BmˆQ.Oó žÅÈv×û£Ç?Ø»uTé\»éçnÓ¦×7ú®d“Ýþ^´ §@ ð k_Ñfá=j×}pœ§'¯¦ TÎ;º…y¸<9¢m3–ê_U”/Òu¾‘frª"é§Úþ Þ•Ä{,|dÛ²§¥ô;Å­ÀÌÞØQ¤rïØÔŽ:z¢<0DaˆjC”û·¢0Dyaˆ QRˆêÐ[³ç/Úš{kî2€I‹òÚò/1=¶Kÿñgšû”ÈÐhd ÕNRíäy T¢¨"^¥sr-§ÕªD½aO>1@&b 7ýsŸë’+n¤SBîî·•tê{ {„EÜ2€,§ºl±æ^SÅ“îätDÇ–_ûŸ™Œæ `µgèG†o5„±áâ ÞõÔ6EH®¡Ø§2S¦±1e@\)è緌ΠZò¢¾Ã¾26gj<-²œÌðoUS«½ïÄh˜wê=EÑúµˆª1Ù¦RZß7}BŸ ÒNaƒ^ò]L’úViœß”hc¨¯¼?ÒJÌ©¯í…²ÇüZ Â4¦ýëê0gXüñ[—Û¥Ëe626 ’áe‡Ö%»Z¦ÛT É+/¹hO ¡+¬n°ØÈ`w@¹ü®˜1w¼G¼]¨ß°•¤÷žV]{#™íS6åé±/ÌÿßþÜúàd÷Â5ú$~×èœïÿoàŠÛÜ衄 T 7ľ[™ÝßýÁƤÅI”œ&•QýýG[â¥Uü‘b}Ïd­§ÏJppEpFãvþ–Ö‰“â>^~Ù­ö+Æz~¦ifúÄSÿëùp÷Eê÷ŸV–¯ò¶(z½%(¶1¡·ï¹%4T˜2%ðéí"£Â•{ï𫋸å‹þ:¶œáxÐIýoÖÐ è®ùø|ý8ÛΨ(x)}LK~ꌾ/2"QA¥¨-Ï0 ’‰R“Š^Ûr:1VGf‚ö—klA — x¤7Ý'ëºO5yïê•8ðO¥S«€Î±Çº'PK•å^œMŠ|+¥š‡ €xÉfklÜ3†Òh€ô¨ðß¹H3y}HëŽa`SÓ¦>)Ÿ,œÂÞb\MÓÏYq‚Þ;–ód’þ!~TïZt÷TJ²,/føŸk)h™ÿgJô?øëiÿ÷f¶ jtȱªÖö‹»‡½¤]¶ ƒZfm?£ ÚV…†€gb(ïáô¿Ÿì eýZF„Q üëê0¢Ú‡!êL`ˆÂ…!ʆ( Q¢uåÕÁc`eÏÏË›ÿ÷‹µ7¼C€ptû™KnŒA&tŽb8Nðd/‰gT *‘k9cè¦Ö‰À%Y[þ%È"ÌþÞ›•vmà!iE1€µÚwÆËX굡ã¯6™™`@£¤Gô\?1œlËÜ $Ä o„РµÞá}ÓELŠ%>wŠcNåÅÆ„ßBü'µž‹è®yR4¬*´vó]LÍ_§†ëNe…§"Öñ­_‹ŠÆÛw“Dú¿µ tªÎ .Ô ·ÓR5hc£Vq†Äj€#Ô¢Ž#]2Ïx³—šä%ÊEq-ÙKKí?䊷R!îì%eeM’ýÓÒº”¾ÙK3Œmæ6_×EŸÙÜÛ“¢š#RÃvlèÙK¡¦yÎG©º¥%nÙQ§MŒ2¼Ï"✺¶Óƒÿ9kbï „6%Ð4râÀ_—ÊÓzù6ª¿[®>µþ-&&T©ñŸÔ9h÷ZƒVÛa§ÉП8ƒ¢à¢¹®¤î—§Ø…d8 jARKV«ÖžìÅȼD1EjyO≋ˆh–ôµÒ²·R”GÍÂçÒYUvHðß®AQŽƒ|öwÄP‹{LHn6C )j²²–Ï /<Ïw¯ M!ô+Z+´ì-²Ô߯ýœ§ð5`Txø×!DךrÆt×<#î*j3ø 5?ãߪ €—c~-½TäVÞžNí.:†¨ö`ˆºÐaˆj†¨ †¨ö`ˆ:_ÍAÜ}ù/çgÀä’m¡´†B ˆ!‘’ZÃò¼Ê=¤œ$ªi††ãD(€˜¨>’Ff9Ú.Þ1¸]¼¬‚êþï¨vPÂÅéZ]Yp,ØrCƒ7»Ô»@9œ¦ÁÊSŠÒz„6UxžÛ›Tµ=Ü<Žks&P–S4JPBøeÐa3T´‡’åŒÎÜú§Ú« Þe©éS²K§°D¸æÿÙ»óÀ8Îún࿹wvu–ly}DŽ;÷ "!8•€”› ¦o æê åp /§¤E-W)‡i]i q $œHär¢\ŽƒoËöZ²Ö·ní1÷<ï{ïÊŽ,i¥YéûùKš™}¼³_ϯUú: IDATOÏ<ó Y¼Ì– ;éÚË–Átxƒ©Ë‰ËD}ȵ䨔éþ¯Ùþµ÷WWïmçiå…þùÃ+~¸ùÙËîHüZÖ\ÿØwØžJ_a©¹aqõ¯ž¸üUõY[U=ößL–'XǨ{ÿ˜wÉûò÷߬>ñ]mÉ¢‰í`z¸ ¾òJ0{ CaÊÔVÛ-Ó|œSˆ˜ä¸.GŽ$ûì䣊eײDÅEŸe%N|‹õÃŽ/ œ®ˆ:éŠêezó+ÞÔ'Ðί¬ ÍêͽDQ"º´ºé[Ë+¾F™ V‹kù^Q¬‹˜ ².Ð}`™õcB…ÝYkÜi䜖º®ècÁ…54ƒg èRwBÝa¶ ˆB…PD¡ˆ‚<(¢PDÍ^éÀ*dl»éÕ;û¯ùƒÃ*ˆÈv9IÑ,3ÙMê:ª¤DI3-!Q{U¨W1‘ w$fqÙ—ÍHw#9<ˆñû/åb‰r ¹ÛeãÿêVæÉŒù£3Vmö%Æ*Xjæ…É1Ç•¯¼Ìw6‰7u,¾!$=jé>…ˆL^â Æ¶íK–.Ž, ¦Í›Ì’“wS,¸¼šŒ>¦Ää¬ñ«7ÖÓ³t‚µ‘¢ßý÷k.»,qãÆ^Åß±É\’™rð’k–Ya÷u9³ZºM—`.†ú¶5ÚÛNLe0ˆ6õiÛÙѸÿRÕaD$ÙŽÃñ®¨úœd¢0[&JéÚ«ºB`¢Z-׬ìK‚»ÍˆÓ˜˜.ù•}OŒÇ.åã©—-äÞ'wê™ÁÕ~ÆxÆ®;mQÖÙ¢‚±Š‚çåˆ9F8[À+APE@QPr¼Ûe2ŠD"zo£E”˜T̲9N°%Ÿf[©I¿Tf‹²fY"ùˆˆ·)À‘ìÅÍœce4a¶}{úg×½D׿”·#tÛDfj˜^§Ä£cÑË8KuçÁ"I7Ý@rþQæó ºÅŽ-'ÿJYxIe Ш÷åü…Àª«iÂÌ»2Ï5±ßøÆ¼W«®^\ÆòqÓL Åd‘Ø£’•œR¶—lQUd%äãœ1^aÉˉ*Õ(î@€ó—••keM-Pv1…Ñívæ4p‰ë~I×óVP-©‘&2SÀôBPE@QPr¼Ûe1ªð‡©ZO¹³]žmÙ§»NUj­€$Y¢¢YVzú>Qs©¬á¸fŠ4µ)ý.€×þ½Ú¹ca晜\+öÛµ â\òI/‹6“ «OæÂõ«ÒXÔ4lÇ—ü+E]\]Á(3ýÅz`+/7ïýG>`ºÈ;»`ôŠp詳…ä8LMQõ³dÑãç™)(ލ(v²‰üºkËKË “hú&?ÈõU^»¡Ú)˜Ì èPDBE”ïv`™Œêµš½×—8Ø6/¦¬ä&‡* |™$;’·­LrFm¾ª±ß0•âÕ^–õÅÚ5Àœ² NsŽ-Õùdíe 2Ù$›ºTž¬«xU­AÑ4™š¹œÈ8NsE5ËqÆG?Z¬œŸb²ÈÂX£qÊg°D%96SðW ÉJË/r¦ 8¢ês3£ÓkG­1iq¹i¯öú ËkyE@!QyPDAÉñJVá3,—3‡$¿{вøDíå8'˜ŠÏäµä^E,“$Gò鮓INÄËj£¶UE%nœ\pò È•,7Ò³ Ù¤˜šP‘¼ÅCòûË “j37} ‹µåcýlÉ”&˜u…¡l—™«âªmf×^ºè/“šQÉd’-¨*Ë D¯Ž™cò‚2fÎTÛŠE@!QyPDÁà•¬Âg"X.7Ä2ùÁ„Ä5ÇáyÑ’}¶ '/€ÄJQv%ŸÉÜÌ%nøÊ«4WÏž~ $æÂàMöENÔBò -Jds>+ÆW'S –[7ME4¦7Qj«ãý|uácÐJIa(ËõÇuÙ×è7(1“¨è:LuÑ´Äše>ŸaÊ– ú¹LíU£CJU9ÓfôP(¢ ¡ˆȃ" æ~¶p^¦KcŠPU{T³’U”m‹‚h*²ã“““&ªrµ,º²bräOohY²€#2\<„9ÈäeQ,b‘ªd]e 2o3Ÿ÷Õ%S •û[S,M(ÏüUk«õAyA±¦o˜-²åÖºÞ½´QK5—]›ñ¢&)å©gHdŸ.I¦èS³NzÕ¶=ì+«¹Â}”:Q…PDäA%Ç»X¶ËÇ}±êæÓŒjK\Gä%S‘Ý€¯.±ÄﯕE&+–@™Q¾ŒU&‹5³Ðh€"³xYŽ*êpØm¨O,qD‰·ÈoÇ ’§¥* ØºbiRe&ñòº*kX]xO’( ’íÈ’w.mt’KD×a¼¤Ir¥˜ E¹è×%Ñ|~!sÖ«sÙˆ_©æ½2`¡ˆ(„" Š((9ÞíÀ²Î¢åKLj»$±ÄqEA6™ùԆğ¯V˜¬Ø Ÿý.‰ Ê$¦úÌB£ŠÌß@EõpXZÒ”Xâˆ2o0¿«¬I^<ôÕø|¶¦Xš\­¦7´kk+íÑ*\<„9G¶·Æq—6¥ä,»Ž#JqI.—’ˆ>] Á¤ô† $Ž–Iµ‚o Pd(¢ ¡ˆȃ" JŽW:M §”s^¤QµÞQä+I'"bŽ$ˆ–"2EYDŒˆH’ðI²£˜™±î’¸ØÏ“--ž¹ÖGa.l^b‘ŠE/W]z}b‰+ÉœÅNÌŸª´Ô…ÍæD±.S{ñ ÕenTiÄü£PÚÆ™ÔqXZ\°Z‘‰t"’˜ãðR\ýŠBĈH‘dtQ)3O´©‘ĈŸ/·%(q(¢ ¡ˆȃ" æ¯t`7ÿ(_i÷WTQ…uEb¹ëJ¢÷ äãÈ!"ò u6O²ìª¾ÌXwÅ·ÒÏ“á[F6”´qr!(Q[^5v¢òŠ7'–3I"Û ¸1µ>9YCy¥Ïr5ÇäªÌUµ±ÖÏâV#F¿CigþQÇ!¿¯ÏWÕZ‘¬«$r]AŽùÕÇ9D¤úÍæuQ®3¡¨V|1?_nøg (q(¢ ¡ˆȃ" æ¯t`²! 6 Tf¬NÞ“ËdIQyò±ä„Š[Éó$ËL±kÓØR‘ŸÎB£ŠÌäˆ)ݰºr‘KDD®¬p¶`1±ZeDDTV.kŽî¨Ìœfª«TÒ„†r6+í(Ù±®2¼HX\f$þ,W8×ä˜Êû}Éﻬ¸:Ïk¢³ž`šÊýãî ´¡ˆ(„" Š((9ÞíÀrž¯¹nò6uŽSÙòs$°ªDžD*‰‘ÉrCzà ÷™¨,µÀ\b‹r,΂v'ïïàd™âv€bº?5}CµJ®Æˆ Tgj/ßâZ™,³£ßa®™#ÇëÃK¨ÉMü=B Ï¢¤Äüœ_`‰[¥T‘4‘4YTe9½aM…kÊT^æÎJ³Š E@!QyPDAÉñî$îd‹b}D$ޱäÙ‚c>A±DŒ%Ï1ŒùT"Y$IÊÌ6ʳz™xO€†¹ÈU)2B<ÏÊRãØŸ`™"Ù¤(ÉUŠÊ4¿÷Õd¦oX°²œç\¦ª…û(i21Ëhpª`©K…<Ùä‹ÈŸZâcLS).‹¾¬ùGkxfËTÁá‚:ÌE(¢  ˆȃ" JŽWF`N)gÙ¢AdÄ ¤G&ò¤ˆŠÃ¥{%žÈÇ“e¦opÝ:ÆÆ*‹Ýf€b+Ì…ËÉU‘³C‹ÓßoN‘}æ`œ¤×áüªJǘ\¥¦Ï*¬¢‚áÊ!”¾ÂPðÌá,q(u¶yÎä|.Ÿuª ryŠûxÕ—©´ê\Wa¬’¡ö‚’‡"  Š(€<(¢`ðJVá”r‰þj[cuéÚKâ|œìh.—½¡ÎHÍ­½ˆÄ±±ÓEo1@ñæÂñ)ucgõúLíÅ+ŠbÆâ| =Òù|*i<¹¶?scº»bÅØñã3Ôn€¢) …ÊhP©^¬±Lí%ˆº¨´œaíªáÆü9µ—Htzll& Pd(¢ ¡ˆȃ" æ€âv`uµ·mêLüغ¹ccËÅl«*¢?@.¿4½Dâý¼ìj§d­f¸\@`+C÷/”Щ䮒ëΜåWgf'áTŸjkqÁŸ™ªA\âýÅXw(S ESúÕ@“›¹#Þ'º(ûu'sõȧ³¸ŸT.9¡€÷¡ˆ(„" Š(˜WŠÚ÷4¯ß¶empR[¬¬žInsz(ú‰éŸW{Õ Lc8Ç@©˜R.LY®×åæËÒKU‘í¸.²WÓ8ÕñÌøJ€W2¥PÈd ”Õß,e.*¼¨IR ·öRM÷l j¨¼ T ˆ(„" Š(˜_Š9‰{¸ëñÐòàä /"â|"•9«Ò $1 ‹Ìp„ìµÌäF!€’0µ\pŠRk •­Z”^"dÕÑ 9§ö²xYã|[xÒÔB¡7X!.*sÒKT^ÔeÑo99«™Ž-âT¥E@!QyPDÁœ- „ ˆ(„" Š(˜gŠÙÕ²±#ƒA¢ðö í]-yÊžF.["f1²«ˆ\7s›º$•Ï,GÊ7f»œ‰4A ™Z.âŽRE£nSV.Ê$Ÿ£ëJö¼d ŠÍpO”ˆ©…B‰Ñh5¹Y£ßÉø*ÛÉe,Û®‚³”Q…PDäAóÌ4ßBØÕÞ–ÔÞEDÌŒgì ‡/jWŒÉåDŒ-N/„ ‰'Ç‘³WsYŒ+ØÀC¦3²\NcÙµ—R¦(L·Õœ‹‡&'›¼\°5€WLc(dÆÆÊiqÖƒœ%AÐeÞïäŒ~—¦X¨½ÀÓPDBEÌgÓ<«ecGÇÆÔ/]ím;nMc¼Ø{sown¤'ËÜ‚.Š"GQʹ)ÝáE‹\i*(²éÌÅ-šð”D¾L UT\ƒüÙ«9œÄq8Í€wMc(´ÛA|Yµ—,Š¦È•ÅsV^¶ˆp¶CPE@Q0Ÿ÷ÂÍ;ÚÚÚˆˆš×oÛrQô$â¸8c9×CD±Jâ‰çsÎ1¶â·y—JÅs3N|Ef&•ç,ä98\T‡1µPÄ9.ÀrþÒDÑø –3ÄX°É.æsK¦Š(€B(¢ò ˆ‚y¦¸ÏˆÍé¾ ñ¦—‹3V–ý»He±œsŒËñá¥dJ¹ˆÇYYN.TU’™É—åæ‚‡Ó ”Œ©„"NT–_{‘%‘Ÿrºœè@ APE@Q0¯·kâ²§—KDK×ïÑõ{²×‘( q¹W]"Ó7À5N.î¹G¿'7~QbV~íE¼Ëy%ÝÓ¨0÷èú=ºž½Ž,‘%‘?÷Î%ÑÁ-!07¡ˆ(„" Š(˜Jég‰•‰ñ|uöÂeî%wn¶š0ë¤2E"K©Èù›daG.Â<%KÌ9?Ÿn™ËKøCæ/Q…PDäAWZX‘ˆ/[DZfa«æÈˆÎ^«f—D²Ë*r÷\YELæb³Õ&€Y%IÌÉÏ—QîÙ‚çˆp¶€ù E@!QyPDÇ•ÖåE$¢ÜÑïDaú˜ÇärY G¬ÌýÎ8ŽøÒJ7À´Qˆl1úœ*`ÞCE@Qàq¥4‹Hæ‰xVž½Èu+y^;ßsŸ¤ô^û½Ì[G3 B1yÅ”yë€fA.&¹˜2oÐ,ÈÅä!Sã­£™¡˜<„bʼu@³ “7õ\twwŒŒŒŒŒ`ÖÅw=Z Îv3ò…·oØqkÇæÖÌ‚pOóš– Q°eMsO8<‹m£ñšç­1¸vKÇÆ–ÄÉÏË[ ·yìh¦ S‚PL•Çh r1%ÈÅTy쀦 S‚\L‰ÇŽf B1%ÅTy쀦 S2¹@ÖÅ÷†š{îóÎ@¼¤àÚ-ɯCR¸7õu —‡zg9Nã5Ï‹#uýdëò»×=öz›G&B1]ŠIñèE.¦ r1)= ÈÅtA..žG&B1]ŠIñèE.¦ËTs!¯isPËÆŽ`8 ‰ÂÛ7´wµä~M`b<ú1vµ·Ý·lÛO´¥„xôh–~ŒÅdyô€–~ŒÈÅdyô€–~ŒÈŤxôh–~ŒÅdyô€–~ŒÓ ŒÀºHÁÌ@¼Y)x^Áe©QxápOó2Ï ÌðÚÇÞ¾¡í¾eÛ¶¬M4Ëû §xíhŽËûÇÔk#B1E^; ãòþaõÚLj\L‘×踼X½ö1"Sáµ£9.ïS¯}ŒÅy퀎Ëû‡Õkã4åX#÷±º©4O0¸<ôxWØs÷¾&yíc oß°®÷îŽT–Èó §xíhžÇ©×>F„bмv@ÏÇã‡Õk#r1E^; çãñÃêµ¹˜ ¯Íóñø1õÚLjPL‘×èùxü°zícœ¾\à‹Ѳq󎶶6"¢æõ^Ú²qó޶um[‰Z7wx®™û»~²5D´©­3ñkóúm[ÖzûôÍóóö1õØÇˆPL•Çèùyû°zìcD.¦Êcôü¼}X=ö1"Sâ±£y~Þ>¦ûŠ©òØ=?oV}ŒÓ˜ ®»»{åÊ•Ej(Àä>|¸¡¡p !x:°ÀÓО†,ð4t`€§¡ < XsExû†¶¶¶¶ö."¢®ö¶¶¶¶ ÛóÝ*€Ù…\äA( !… €<…ŸøÄ'jkkg»0e•W^£týr×KOœ^¡<³égǨuóƒ¾r¶[0» €<@!ä r¡˜=ƒƒƒeeeDÄuww¯\¹r¶ÛÓ"¼}ú­!""jÝܱ±e–›à È@„ rP¹ÈƒP̎Ç744n!œ[‚kïnm&"j^²€\äA( !… €<Å,CÖ\ÒÕ¾©3DDÚº.qk. y €BÈ@!ä B1ËÐ5wtµoê$j^¿mÛúf¢ÎMrP¡(„\B.ò ³XsE"L­›·¬ ×~ B. … €BÈ@„Â0‰;x&q€Ò€,ð4t`€§¡ < XàièÀOCx:°ÀÓО†,ð4t`€§¡ktµ·µµµµµw÷bxû†ó¿X áíÚÚ6lç6oÃöpª-yMI´>{¢pWû†¶„ í™W v p~¥š‹ðöô·¿mC{×yƒ‘~¹€‰šƒ¡ÈÚ2k_\„9˜‹ñ_B.à"̽\„»Ú7 ˆ‚)˜{¡ÈÝ6½·y t`Í7]?Ù¢æ5-ÁÔ‚p¸‡ˆ–ƒDáÞQó²`fípWû¦Î¼=„·oX·©3”ü-Ô¹u]*AÁ–5ÍÚú“û¯`šL4]ím붦¿ýêÜ´.}þéjÏ FúäJÒt„"±]áy¡€R5 ¹8ïKÈ”ªiÉźM!Q0WL[EDùeÔ¼:°f[pí–ŽŽŽŽ-3ònáí÷uRNš²2”,¢Ä•uÝW‰<5¯ßÖÑѱmóúf¢ÐÖ{]XÁàr"ê¼ow Ãôðh.ºvte¾ý­Déï{b©—Ö7g^A.`Z”^(è¼ç„¦Kéåâ/!0MJ1=ÍDÔºy[GGGò•É,ä¦Aé…"eœÑ$ó=èÀšm9ÓC3c ³oÑ£œA†¹¯d¼=ßðC w=¢TçoâÛ6uQh뺶¶u[CDÔ¹iÃöpz˜Ussssî.Â=DéD[ÖÞÝJD¡ÞÄûµÜÚJD¡ÇÇ{€‰òf.ÂáD}u÷ÚÄ·ÿÖV¢ä·?¹t0Ö4rÓªäBqþó!0]J.Š rÓ¤ärA-·léèèØØ$Êä¦Aé…"Õû ¯Î÷Pˆ³ÝGç¦uéŸC[×Q0Ñ_ÜÕÞ–Õêܺ®‡¶mYL¼¥¬—6­£Í…ÌáÞåÝ$x~Í­ëï¾km°kúÐ+¯Ü‰‚Ëš‰B¡ÞÄoÓhös\»eËڬ풽¹Y¦0ƒË‰BÈ™çCqþóBEãé\\82ȧs‘Y¸}ú­!¢æÖõ_H¿rÅáýP„·ß»5DÍë×/ߺ5÷.Ây ŒÀò¤æõ›³&Ñ&{`£k“7)%oM}Ý×oë(¸})KrµÄߨ‰‘”›[SÛ%¶jÝÜѱem‚k·lÙ¸¶¥0‰1‹z¼«+뾩tWqòåžðü솢šý\äl¶ýÞ­!J]5Iœªò!Pd^ÅùÏ#D“§sqÁ— (ž’ÉQ¨§73¶¹€"ñx(RÝW_( ÉüF`yQëÝk[Ò ;Sý­É¿;7­ËîíÜѵ±¥%1Ü#´u݆Ç[׬¹õ Û:‚㜠»ƒ³nÂíê µÞúŠw·Üµ¾¹sk(´uÓº­ç]i¾vC1y)©K„Ôºù"î¦G.`š!…J$x ¹€éW¹®ÝÒ±6¼}ú­Yãa’ ˜fÞE²?«õîµA:ßtíó4U2’¹ãkÙ¸m}k3…B[·nZ·î•®Þ¾!snêÎÜÎMm¯¸epí–m›[“3š4·&Þ7Ñಂ¹NŠg6r‘>Ç4¯ß–*­Æÿâ#0 ¼ŠW€PÀŒòX.Î÷r3Êc¹H &&ØÍŒ.A.`æx%‰Ç¦÷šà¼F`•šæõÛòQpíÆ-k7†Ã]á®;ïì …¶Þ»½e¼U§¡¯6زqKÇÆÄÏ]ím”ýìÂqï¤(®™ËEÖ’m nŽJMz•3x˜ ˜^ Åy·B(`x"z ¹€Y0ë¹èjßp_O(´|œÙ„ˆ ˜³Šäã ;7µeÍÆµu]ÛÖÖDJæu(0«d¤žk¶õ'‰É§ÒÏO Ì³¶S°¥eíÆ»ÖŒß'›ÓW\»%snÖ¹…wäæJ>•!ÙiœºM8o ä牘ªÎEW{Ö’ì/yª'›ñxþàaçw€bðJ(&¡€â\L 2È̯ä"¸ŒB¡ôlB© v—çÞ…\ÀLðJ(&dž†#°fNN*%úv'>UHpíÝ­[7uæÜ’Û¼þ®JÏKÕ¹u]gf^ªæ5ù1È{2Z¢ï¶yYj¼Háã6£emMöç¶‚¨pà À+(¥\de›ýý§ÖÍÓú IDAT[’íÈ~!33)rc®„â‚D(à"Í‘\/ä.ÒÉEËÚ/¬|ÝÖÐø] p1æH(6v¤îv¢Ôs³F…ÍïP`V)iÙ¸móúæTŸnskæ[\»%yKnákY©'£ee(Üšprß«¹usö;Mø±¡ÓeÆr‘Wu¡vä#óAPE@Q0x¥k¼)åL¢@b cšé’Ãðh˜_ÆÉ…iR ™ >78EÃô 0Ÿ†"sª ŠqL6]Óa³Ñ4€Yƒ"  Š(€<(¢`(nVW{Û¦ÎÄ­›;6¶\̶ÅyªNþÂé–K–%ß4·`æM)qƒOÅ‚7t“—M\<„Ò7•PNænø8Ç)–«;ál¥E@!QyPDÁ¼RÔ¬p¸§yý¶-kƒ“ÙØä#¾Ô¸gXgY±ilÀ,™Z."Vú”"q÷YQcúÚ0+¦ Ëä)u¶Ð8Îg9‡?H`@PE@Q0¿s÷p×ã¡åÁIe‰ˆ,ÊTZoš.g9x4”¾)æ"k¬»dÄ ÞgÇìéiÀl™Z(̬BKxÅvtóBéCPE@Q0ÏsV¸7ÔÜs_[Û&ÊU™£úx›xÕÔB¡¹fz ‰¦ª­›Ä¥_æ8Á&çγ5€W¡ˆ(„" Š(˜gŠÙEÔ²±£cã„Ö,œ^Î0"韞LM¢²LíÅó}CD~Ó$€R3¥\D2ßyÕ›²Ÿ²RÀ÷õ PµÀ£ö‚3•PÄ̸]æW‹‘š^ÒÇóµC¤ùq²€Òƒ"  Š(€<(¢`^)nÖÄeO/—œ4ëyÏ*ÇLMæ*2—M,áð9Æ”³T1“͘Q…¹È~\ŽÊ4Cñ“1^2¶'<À×õ›¨½`Î* …æff«œâĆYæ>K¨?Ç e€p¶€¹ E@!QyPDÁàÝ;ZM'–úÑá9²â>žËÔ^#üŸ† Ž““÷èÊòÊËošñ6Ì4;–|§ë©œ,•©ÆbûúÎÉ |©…øÚÛËZ[g¡•3H·’§‡Èá9‘bfúékD}#|ã°¡qrâ×ÉòMååãì`nAPE@QPr<Üå&/rœ'²uŸ d&™3ùƒcQ²Yú) Ï›ñ6Ì4[K]ŒÇãäg²À[™¡¿F¨ïL`¡4’\‡9äÈÌ7`&™©ÚKã8œx7ùÌ©­ÏäEG…äÉB :Æ{÷Ä0]PDBE”ï~ÓÏ{¶i,Nd[~žÏÔ^¼Š éjìIáÉ8Ù<2wQ"FsÓ“•–>¤Ç9?‰½Ne0ٻ׽ȇìxDa(L7ùp]çý–ËY¦%dNm½áû„).Hü/§ús´¿žoÊzJô%••?ŒÇßœõg @iAPE@Q0x¥«pJ9–ºxhØçL‡\GÄLíU+i#G—‹¯“KDÄõxéñJû éu²GøÞ”ªqra$s12b¸‚Êä¬ÚËqêôÓñÚ…Rorê“Ó®VÎ-ž;àKÕ^œ¦1Ž·úΨ½ 4†BO]øÓ Ûo9œmY|æâao­T%Ö…W%.\oãÀ%yé •™Ñ(äPd„'œ- d¡ˆ(„" Š(˜¼{ !qÉ3Šaž1ŽlEä“}½×a¤ŸZ& É%¶ìÇÉà^ÈÞOîI~ÏL6 ØÜÔóž##š&ø™Â;yŃïë;Î-«.gмÀèj}¥cÏLoÎFF &í>5ÃÍ(žôÅCÍ0UÃ!Û±„díÕÏqåfëRòjM”ÉMÃñ—½‹§á“>LŠ(€(¢ò ˆ‚’ãÝoŸª½tmÀ´‰Ù²˜ºxh GzˆF/SRSÊÅt}xHð³ÃéÍ9.f‰ÑC3Ül€¢âŒd]¥õëšèg“œT5¶§¯GX^«²¼sDޝ^î8Þ±Ž06fäj°'«T’~þsé÷¿/|/×v}+V¹C£é%c{½²Våž>—^Xs|ÿ1µ9üÒäç4}Ew¿»x;‡"š‘P˜©ÚË QttUvM)YWÅ}˜Yß6Z§ê,nĈH“EŽãÃû´×”'Ö6ÉoE##½‘¡ô>ŸÅû%iÜ·{½Pþ¨“óR_ƒï’3ÑSC™‘&{hóÙ±ð$¯ÐOÈ×åçi!xЍ¢AUÂPD ЍR…"ªhPD•´INâîÚÞµãñ­¡Ä¯ÍÍ­Ë—÷ôt†:ïÛ~WËÚàÅï°ð™bÖÓ­Ñ€h+2—|¼*0¹|ø–­;õÿGC‘³U*ùD6*ò·U;2Ï42‰dNÑbªãº–ØÞç~ö¹Õþ£d} ï½8.&ñ‡šÿ²’{[b‰Ã‰r4xF;»–©ÉÕõø±žŠ•K†sÚ)îàùÓ¼ûâÿÑã8#¶[®oõ®ôC|YQ×QäåiÙ?ÕLä"Ui †aWˆœ¬È©‹‡7f­xöúfí>utبöûT7~2Z_~åËÕVr¼ºZÒ™²ÅÒÎÓ—½7¹ÏÐÆmåöhuï›òÞkä‘Ö s滿[úÅ÷%–yá¤X6fVòÏŸ¼ô  WŒívé‡ê÷ÏÞV޶͹â 禛.þoäÙ\çóƒ?z¤öÿÜ‘^¨ýÕ§ÙÂÿW?7õýCQÍ@(Ò ^òÛ#¢ÊŒÔÙ"îteáò·~G5>3ª 5T4i²X6(ïú3CâM›d¢I>+Rﺽ‚@T—ØÕoö³Wû?@VÞ{Å8î Ä?yÐ|ÃÊdy7àp(×=}ˆ³[iqbáAÙwÃÉ£/-Y–½íQìáù»SÏÀš¢ŸŸË-÷] 2-ì6Ä¿QÔ§W,KЍL;QDA Ѝ4Q€"* E¤M¢««½mSb’ÏææÖ5wßµ¶%Ÿ]ím;ÂD“ˆSá3D!ùÜI2m£öX¨^â(q’ñst¦*òÆ]+M÷ÌàÈà% HáYEœ wÜ7ä’mw—‹WI¾¨>X T^’¹H"}§ýN@|"`¿>ûÝOÚ÷ÇtjTQrÞF:ýƒ-sƒgëô¤Wkªˆþn×ëZ®Ø‘l‘­ÞvHó5ÑDk/‡’“Ò©Ÿ«ÐÚ‰27ý.L^0M]gÌ—XýF³¿Ç/·×Lð-òD˯µ_Ó¤}r›O#&¨µõ¯ð¬vÆÞt¶ÍP.ÒÏ{–,ÝQ„À@…ÌL""Æ|¤÷r×W®Z­qêØ­º©ÒÏâ#KØWéŽF\—x^Õ#®Ÿª\X~$3­IùØ©kFGYeeö»ïÿÙ.®ì¦²_t¦k¯½fE0¦WpÏô]úŽëˆH?|Ò šøÂFþäÁô†bgç©Oïð[ÞÛrñµ72âþh;÷Égšñ›ÕÊ•Æü&»ö²×‘«']{ý⩲¿ý(bßä6Ÿö­-´r÷ç­3ù¦³j†Ba‰©ÙFYtôÞª™:[ÄüÜeýêâwõú whx„š4¯ª†¿ê/ê†Ü!Ûn,c‚Ú`öK4¬LïùˆÏh<í9 ^ÈÿÒIû†¸þÈ"ß½©ÓÀ‰³Ñ¥¶\—¥Wën¨|Ûž§Uu%g ›èjàæCÚÝMþ§:”:WÐ×ÇÔ¿«Ð²ç8=¾@pyA7uKöS<Ñ7zf‰ÿO¦xmù$‡ñ¿)ZÞ6jºieÍèS‚ºÉÖ«RÓ3Í(¢PD½Q(¢PDB…" ET¾ùXDMòÂæÖõ›·mëèØ²ec&KDDÁ»6ß•“¥®ö¶¶¶¶¶¶I t”R%Ù² g5)©—TŽn~:üßCÿjØÜXä ©<ÕÆÜ3çöZÜñÓ»‰Hñé¦VíV”gÆî.©Òwî/ ü¿¼÷:~ª,ÉÖ„½‰%GN?=0"ž^R^‘šj‘ HL;üF%óDϳÒUßúyõejæ›/ôO )_éwîJü<È=c[ÝÀŽL,¥ϹôÔYá¨öùô&Œjw¿:—Ó_nÒøÝϧ Âs”Õám /;\¯ùeöjCì¯Y S ²ß] Í¯h@ùÏAõ#ÙK†¥ßE¥ŸvëŸÊ]íëç|ÿ0•7â¸á ¯ q3ø_F¡É…ì&ÿÇ—MÃU„ ¡.1}ClH‹Q`ÿ[®ýà“‹t^°ï¡ù_°§Nßxf?oÈ=ZòM÷÷÷.Vc§Nù’›GˆóKg{Ÿhð¥7|ÿYéÇ?úÙs—©é%û⺀ôóò÷ÃÉ/ÐÎAî—q¶ŠSSœöŽRã9÷íÏœýÝÑÌzO÷º}ý¿>y.gGç¹T©qÜs‚ý =d §î{,{µö!¶‚Ò¿îœR…ô»åÞA5{ÉÎaé÷QéþczöŸ(ß?ç£)æ¸ ¯Ài¯°Bq¡ˆJAE(¢ÒPD¥7D…"*ET Š(B•eR“¸oÙ¸¶%8^§o0˜³¼«}SÏúmÛÖ÷lºè@¥—#K¶m*«¯ºÜ!r\-¦ŸŒ=zú/ûüט7¦Ÿ""•£w_³ìþé‰3ûˆHõ™v<`ÕÕ¦&tˆÓQ—gzøcKä½WEM÷É}7ì>R¾³7Yèö¡þ cdQ]Eò›ý§ãÛŽÅø-šDšÓKDÇœ¿tlàô¾ž:×;ôC"r~Þ²gìæqÿE'Œ/8__P•<“íëûÆŸVõ³7„¸Õ67HD/ùaçñWÇÙÏÒ[­^0úì/Ö4,ȹÊÑsìö½tOá[ì7ß?¤ÞqŽßž^²oèîGkº¶6ó‡>ã#»¢3Üޑ âýŠªƒÃÓëèü¡CÚãþ+ˆŒ¼4ÇÍ/°Ÿž‘¾—^rôìß?±·bAÅo³Ör–ùþq…Rp“?—¿„ˆˆ4ñ±“C9ÇþhŸp™Í%g¾ìù§0|0½Â k3SÅÅÙ[>± Ư&¸YFJˆ*õGowå ˜¡\HNòŸ#Ûš+ Áæ…2™DÔß7ã_¾ïÚ׎2W‡Â§GÎêqÎç¿ß°òµoëz^î#¢2kÌõ‹fT9|&±Ÿçîß·×͉›¯—~ö˼÷Zuvgùí½»Õk÷ÜŸ¬¢*ÎÔ¢õUʉäxzgxÁJ³ÚiL=Uú™×~ö3ozhÅ{~}ÕÐ ‰%»Ö7¶âµ»îýgÿÕyl@ÜñÏ&~mÜóÔóó¹_ ­|ñί$–Ô÷°®Vž)¿uçwžJ,yâëÏtÕßÖ±ðÍ_|4½þøñVýïÔPvóÍG×|<ý«uìÔ’“{:—¿cçwžH/ ¬¸ìŸnþÖØýÉÚëOoúüÙÛÿf÷õë)«€úÓk?¢ÿg8猵ë³?Þw„ÛwÛG3K¶<ù\YKÝXX;˜™ÿåä{?3öÌÞcÿóLö¶Ú©ñëTnxxÏ·;³—ônïj¼áì£Jü:ü|wxiësük$Û|úáç#uWùÑos¶z®÷-X,ÿ¯—‘…×½pǦqWž€ EVí%ó¶¾jé•‚C¶ãFt½,J7œ:&ø}¦=Õ‰(®r//ÙúÄÕDµÃá3DSü¢Æâgª*ûéçò z~ôÛ…yïõ²¯®f`×ëtÿêð‘Ä’£ªžF"§ª«K^:ZÝóÅÖÉ&hýÏ1çU»½ü¯/\{PéÔír6DùÏÿ@<|ÒøÍ ó¿55‰_ÿpÙ3þ©‚Hsó µëbÊÆc£ã®<(¢PD¡ˆ*„" ETŠ("B…" EÔùLr¬ ‡{š×Ü$¢–5͇/r¤£$°ÄIS–×T_}ûuÑàð@ÿȱKëéºÛßö®»´C6¯ëý¶£qDïx×íu®zw|cÄ7qüŸxá{—Ü(^¥='¶»ë?zD«®üÕ O55¹—×ÅŸ<½âØ‹Âkïx2ñîþêÓçúì ª“¸¶wð·µþ²Þl:sÇ»_þõš?aу§ö¾µöŠšÐñÊȹû–ÕüõÎã_0ôEº3`. öŸ«>³çõÍþ74ÖÞÖ?pÄXú±þe‡÷|ywÓ=×ôøÁ­«?ܰèÐ3¿[së7žØ³ïøº·]÷KƒædßþĪ[ŸÝ·ojrwûñ’+¹ kWªv8ô‚¿Yë=wjéŸ ™ìZé›üül­ ÷1ÁZQs³X{påímÛöîw­ýä©Swë:Q,òº[Â]¿þìοѳóKoºñžŽŸR*~¹ëábkî,óYÕÇ~ùâÝ—ù~ºiãÝ_½÷7»ŽÜ°ðáØˆµèÆ×í)ã7<ûàÇa„'¹^¾¾Ê¿(Dßli{òª*ë¬É=ý«Ï\½ê‹'ûï[Úbüïÿ{àžyïïvÃÂK_S_ï¾jixÛ7>=ÖüÍ=»¾¾¼æ³öHìÜ¢+?·ªnñYk´å†ºgîzúHçÞrsè”ÆŸ8Úä?òå¡1wDx‘‘+[ +®|ð¦[—ÓŽ_l[¸ì/Nxؼú|uçþôÔ²àŠÛ®+;¾ü–ùþý«o~óCÇö_B/TT0iÑ¿ý{ûG>òù·þú¿¿X'¿¾®éÊ]½ÿ´æ=ÿ^îûð·üeøö¸º[uaìrQrƒoøZケ3g+COÞÙ\ñ¦…‹^s¢úúá‘Æ«®ß×ùć_sÝEŠ9µ\¤/*–ÁùÄkoYBD¶éô8RÁn~·m·Úú©çNô9êãü7Mhû†ò¢R{쥃7¾ëº k̨ÔY¬!š¼+¤ç‘®²úU=WG?ýðã‡v:üéO•~í/¿ù¡ð‰³5®Ý?²v÷¥¬l˯¯þÀ«ˆ¨aìÄîº×8*_{0¹yy(tlÕRåŠÅfØ%"“þ|ÿv½ç诞þá;ù'ÏþîÈU~iíoüÞº»æ¿~Þ¹ýÑSK.amÍ×ÜpçeÎwïkúÒæ¯úøòë;[þõ":µï\•9×ó“«¾täö÷?q?O<Ùè¾ß7½cï5¯]òŸ?ãÞ{«cöcOž¼lµU)_Óñ7ð~sˆÛqpð­uÃËw«&ø†áýöÔÀ3ý;à nºòºËoìYû×Z¿vã þòÓO¼óS·ëýþ¯¾7zíÝÑåå—=ÖAô·ü)þ¹[ß÷Üßÿ¬Œ{øÖ0‰8»æùŸlÿ—{O=à«î\òÛßV.rþ÷m_qcõׯºú?>ØN ñ. ¬ª_TÝ:ñÄ5_ûñª‘=•îÀ¶7~ìíÿø_#»ü×ÿñÀ'>pݶ]?Yÿ£;?·NYÄF¿óÓ£¯ºíèÀuþý×»~r®Ó/î}`!ÕïÛÛoúâ¿ño¼5|†ßú_½¯ãÛŽËŸ©öúNŸOè;m™b­Ïîýäoü¯Þ~¬ï}Ÿ\ÿB/wø«ÿ¼zw×OÞüÏïüà_þ7Æùïxëw×|ëê§;Ÿ»þƒ7>t¿²ˆú»oìzËg^ûßyâ¥S+Þ¹þÊ%RÇ#¶~ùó‚ùþ;7WüÙ²‘Ð3åK*Y(ûîc‹û«Y|â­7¯~í{®[áûÃÝŸZy÷ »{à³¼ïËμ Sbé’,u}ÝëƒúGÏö–ׯÞò.í®wZvÌÐ-Ça½õê·ÿÌ÷hUy²Þ—¨yé™Õ¯¹~a?N¿{ºÿO¡cË×ÿÙâ&·éåæú5O-vºž¼úí‰ ÜýJuãp/_Þß× Eˆè¹žæŠ€õ•/Cí¿øÖWßü £5§ž{÷ºWž:öˆ~æ†E5ÿÓºÝÖjt÷ÿËGÏ\ҿ纛«+W¹ÃßënZ||E틟X²ø»Œíú³K¯±bÉëz~¹õ±O,mØzòèß½ö¦ÝQy©òÒ~ûþEáȾ&·é¹ÐÁEe7ˆÆ’rõÈhHªŽë\ï–gšê¢ú×—I/?²ýú檾}±ënk8¯}¨öö¿ùÃ7îiùÐùS:é»ÿÕ·|þ3OÞºldûȳkolùɾ½=ñªÈö‡n|ßm?÷^¬ÚÒõÌüW¾}߇þ÷êþý‹ýç‹c4ò÷Æ÷ö}¿ä{0]ŽãÙ¢êÚæ+…ß?cu^yÇ‹««›ÎšŸ~ú÷¯Kó3ýQ¡åŽû¿ô¾oõ¹ã?óÕ\ZïÖÿòŠK>´åÛÕK/}xøùkW4ØÜÈ×^lÜ8ðÄÿgïΣ(ï>€ÿæÞ;÷Iá’ûPÀ (˜€ x+Q±Jm½R¯ÆØê+hí!m+¶TÔ·ÕÚª¯‰¢RRïáZî+÷s¾ìfÏ À&d6ù~þJfwgŸÌì7óÛgžy怣ø~£ñúÓò4|úÎÚÌ¿NÒw¯·øpÝÌ´=ûniRÈ0$Žê]CÞ6mgaÉßö½\×oï¶ú—v•(Lþ¬¶šûö }l¼«Î¨¿¹ø´ÿ½âu÷…ß¼ûÝÓD—ázT*¼éßw\5ã±Åo¯>ãŽOïóÆk›Ÿ7ÿ[§åW«žÎâý-2XÎÎú NZŸ?Í“UÐ÷Ðî±»ÖMœ’fÍ+üíºô ‡>pOXõÑ/œ0Ìurµ“¡ˆB…"*Š(Q(¢â ˆBÕËŠ¨.íÀÚV_<ÅMDäv×'^ª›8\4%Ÿ±Z QÐ&­°?¯ôõWï9ô]Ñ(æ‚ùÉ «jÍëÞyëÌói™ÅÎô¿·Ïˆ‰È&é鎢Ewý‚g–=ñ³oÿêg“—½»sgVÎéþŰô•‹fù6¶p¯¿2ÏÿFþåK˜²3ùâ=ïĬüʇ.:ð×{®XÛºsä%·þ’g~óëGþâ]i9ù­-ïe›Hì߯zøóoëò}ÆSÿT¼çy3³zï‡[dû{C'|øàÅÏþËÞ ëÏÈÉÿÍ{{WôõEM¯nê7IònÉê7ôŸŸlî»wû-[?[:dÎu¼w÷k—|ôcè‚_»m«Ky£Aa¶4ð}2Ôšçg—|{]«üÏÚ¯ÎßÿÑ­Ã/Z¸ãÛ¬þúÍ¿þ_)ë…G}sÞß~~Ž{ëŽÖÌ«&^}ÿÓÓÿròËooX{útyû³—Ÿ}ë3Ï=yŸkäë»ë3½¯ývÁþÓ/þM¦]ÝyXYðÔ;_gŽËký粪—U++4ý¢ê¾?þ.¿hÆýÿyo˜;`ò…KÇM›ûâÓ/縟x–X{ï‡ï½íúÄ k&Ysºdb×O.iËÞ·àÞ§þöû§‡]ðóþÛûýå—‰ cûÏ}8sƵe9Ê7 B¶]µpôþ¦ôÿ}ìgŸ¦ÍK÷Zιÿªu¯Ÿê|û,mǤ©g]÷ë‡2dökuÿ)áwŒÚºòäaW?ÿο.Õ9ù´³ø‡¦<÷ðÀi×þ|ãc«_¼¦ªâ7Ï<ñó}2Ï¹íž ™/l—™F?7ĩֵr~0ø“¿Ü]8õ#f¯Ò¹•5ÿ.=÷²=¯?øóÏë6ÌZ¸¦úwç-xÈœ¹Œãc «aQ½Bš%s(#“X÷á®m_ÈÙÕ™*8KÛß7ìt³6Ë Ýû”·©:³i[Ó̸´¦QÓŠ³³ÒúüåW÷=éºá€š¶uÇAwß_Ÿ´äüO¼ n›{`}†vø‘œ@Úvxæ)¿¸aÀKÆÉ£ÿôÀüÓd”"ߎÓ/=eçg; _÷4VØVòsolrÖÜ{ËÕeüËËþ»§þ»™¶S.(xýÎñêÿ½=~ÛŠ×_ÿï—7ÉûsŸ÷þuÛ³62ý?ù&ï‰÷7¦}òÎ5£/¹ÿÑ?Ÿs{VVÿéC–JÆËËî\ãÜ|`Pîi·^¼¼Î˽“>÷ƒkþhq_Fú]W,ø ·eì£nyˆ d?}Ï®¤K.^|Fñ¿ï¹{Õü´Ì9Ýþøoo¸ƒësÙs”Ón˜ÎÁÞÎ?kì3ËÞìÞ sú µ®¬Ù«xnØo[¥¹7~óÌ_Øùã‚ëï?ÿÅÃß¹>yk(/–™ JÎúĹí½ëÿd¨Æi®q:w­:a÷þú ‹îÛ2%ÿWŸ=±¬rçSv×À'Ö =ø¥ÇY<ãп_OŸsMÓÚ'Ïûåû'©ªsü¯ÿóì/Ÿ”-ÒKŸ¹cïxæÒWüùÑ?œêÚ_·uÙΗ>­ZñYý•®ü¿›™knxå®G¯xæì²òì­|tÙ¯íŸJsv¿óÆœK¹‘ÍB5á?wªÍ +²²åæLyôÁªÀ¡>÷>¶ð7ã?Ìú»\TXsÛ©ý2æò¯?úä}pl÷öé3Ó6bÒG'é“ÿUý×[–溼u{Óù׿1jï¨?~øÿ°`úÝô»{oÑì¸ÿ©>ýoy„¾ÛmNiþïö±Ÿ¾ûZ7û*[òÂZïßÖþfêÌÕ¯ýö·þµ+릧o ·õ®Û»ì6FÉ…" °>Æg5¬~A°°L¡Þ_ÔŒï¶oØyð -Ìâ|"’TůëÿùæÛèóÇ[§÷O»É¿§•ˆ¨Å"åX]—Íúù#<óBõ-ÍýÒ¦<\|p»~öøÓÞýôÖÿ¼àìQ›[Ï¿h¡Ã®™7—-šú…ðÞZ)ûåÇ—½ó3û\o9ðåMçýì!žyêýG[§?½×ñfnóŽ[½k>nhÚ¸ïà¯Z/údÈ›—¹?ûÎ>!ÿ_ßmÊÿkû´÷û¯¿|ûשׁsÂîê;¥vàYÕ®Ùï=òû ¿E”¼wf%Ã|þÍ»îýŽÿŒûÃÂ!’û²ßm{å´/ O}Ð~ñöÌçNö¼“ugÚÙÿݳzÓGÓ´WßrŽ—¶iøüÜ3ÞßøBCýá×¾äæÎn͕δ®uü{Ç'gœÿb†mÿ9|Nƒ2bëáMù—üß?\¾'í[ùÅ—j~ý‘4ùŠË†<ØÒXýå'|nñ?}zÜç×½Ðï©í{¿úlUÁõc§ÿ7ý'ï©vNvú¦ê‡Ë.5[i wŸ‘±±/}šþéû¯Žž·/ÝQ²÷ÐûC ÏÿèË­ƒ g½öÈŒWUFo¾íW‹¯ý[Óü±³šÞWé»÷áÕ÷M-+¨ZY45̈9£~’iüû­7²‡¿óÓÇL±}5yÂüôß¶ú³:èÞ¶[׺|ªÔ·þÊןhnQ›†Ïø7åÝ™¹ãëïͰ·Yø_~7{õo-99•ÓΛú?w~pñƒå^7šõþùçLxêÑoF”]x7«`ÿ¤¯jj&NÿûßþÉ3Lî¸9CfÑü§–ÕœsÕ¦ ÿYùȵÜþ‡•¬ÿÛêYw¾3.«d‡œÝìÿbsô¦–©ßýgðûõ )ýÏ€ÙïïàN^ÿO'\}OÛ‹ÎO>û\å¯/]3¦9s" EЍD(¢PD¡ˆŠƒ" ETÊQ]ÙõC¢§‘‹Œ™Àï¾ËoÙžýÝá, "Ù íÛ¶û™]~• ^&«(#ø¿ûî‹Rƒ‚Cå|­v‹³éæó7V½i÷™DDûLÞëwWŸ‘ß_oØ~ú¤IšBï|Õ4Unúš÷ÿnêy÷ÔÖLؼÇuò`}ð`Ë[[³m9NæÅ™9.eXÉ\"Ú`™¾ÿ±Ôÿ½PÖ¨ù2":Üà²çì-¸àÝ=öÒæ)û[oò.|ÿ⯳EcÁ•¿Šþ[>ß}ÿ9Wýáо“OÍ{…® º‚¾ôl°Œ|t÷©µš„9s8š3HaVò®Aß\¼¶8+òó\Ê!þwÞ‹þðˆéÃsš=¯}¾s^Æ)pêÙ-ŸŒ0f턉ˆíö=»_á2æemi¸Ú³oм¹wÑ\j`þzѹ—¾ð-¶ÉÖ—ÿ–[à¨?p“Xtë·}&(mW^¸Š.$¢3}üý{fn9570ú¬è,"¢Ý '.ºg¬ÃP›÷7/²Õ(ÀåÙ©­©Þ¡üv„øøˆ[CÚ×›_zû™™zSîv:…ˆ¦Ôné_¶d¶|XjØ5sö¹D´Ö•–.,9»„áÓä-‹•ND_xyò‚Ûn?çŒa>cXpMWïo}[iž0˜ut]^ÀO¿žˆ®ýò ëÂ.oÝQuUyè÷ÿlüí€Yÿ8gD³¯y$"’¹›ò®˜°»…•+.¾/8?åƒm^vÍÓzó¾+JDd ››¸ b2ˆäfêKþâS,t -$¢u[¯›qá«9Ê· oË#¢M{¯¶L~•¨Ëj¯ò¹Ðeþ]žÝÄZ5_v¡“ˆŒ´é³½¾ÆVo >ÓÏ[4¯Ü°¯ÉËÚ2ˆˆ¨Å–ηøÿqßÁyzÓ¨SGXÉhÍÞuÁ<=u໌ÏSf)cýò‹+—æ~óáÛWÿ¹¸z£n÷¡èü²lÓ³™qóo¶Ÿô{ýmÊè“F¶þâÚó•Wʶ>=Ì¿¡ø¾³ˆh§äöìúʵٻ¹hôY—øU¢–‘#s¾Ý¦«ÂýÎ\p—èÚðßrxþ“ÖýÅÿÂswMlò[U§»6,غ¥eâDÇòx¢ý­4÷‹]8æ;׈ÑÅú)‹íï½xIöæÉÙÃoJ×θë4"uÝ=eik&Þºñæ¯ÞýêêQyDDtõ¿þ8á¤s‹ÎÌKÛÿ¹§à®ßŽÿhÍxV!:ÿ»1/–Tj§µÝõÁíÿèFÆ õ½ô鎭ëOçenÅ#SæÊDôþÓgä~²ËâoÝæ9óz‰U5çŒzgÿ™¯_ðÐâŸID·ÑuDD}ˆš‰¸'Öj?}îÆðvÓu3Ó3_Í8¯yáu£çøïŸ3S»wÚ]ùwNþSMÁ9§^¨¡Œ +Gõ»ßv^óÕŸ>ûæçN ò¯÷æ™Ï>×’—7þËÕãƒëù1y®RZ½vwVðÄÄéD§Ñ–Q¯¿éÁý³Î9çÁK?ë·ÿtÄsÓø±eý«3NÊ$šC¿š“–ž¾jó5ß\xóôsýÓ©‚n¡·–<[¾r•oó·‹²3ˆˆ®£6UÍäùL"•hˆWn‰ˆ­½ý¥9/>“÷ÙË×JD >Õ”A¯|G·'ñ±NÎ÷‡BáÙwùw·°[üÂOÒ¬."’dcÛáí-Mº=.©²ÊpßyêlƒCG G ÅoI»“=¿Õúæ€~…DT´?ðÙ¶éw_sÕíWõëÝ2I›4b"ÝVwxÜô_ÖÿÐØK¦Ö½:zûîÁiƒW\¿Ý)üèæoøiÚd±˜ˆúí h_Zk·ní+“QNë!¯%ÛõÂ,÷¹K²$…¶Œo½˜ÏúÐ{¯\ý·¼¶yÇÊñ?9µe÷#c hÜ,¢YBþö'õ1Ó?þâdkÓ9}ç6§i:3šweýxÉ·÷f?˜_Z¬¸²óøUÍ絬¼rû’…g›Çkã÷¤í|Î>YºâôÁÌ<™è:Mªª~uh÷X6ƒ²è©}gØ~ñü3I?³O.³0÷òôÑW‰Bã }»¼ à;Œ¢ûÞ²hþ›.<Ÿè|COøxï3§Tß·Ú;—hîƒhàîÆßθtýG½Úl5."¢ˆ8 PŽã`[S+°t¨HCCWT•|}ð¥+fþcZfcSQé¬ëéõÏ¿ùË‚%>ãÐÜ€g¶rîì”áJ;G[òûÌÛ.Å‘û+"úç·û¾ùñÙ³Û6ß0f4\Uýá–¥ÙVÂù5Cç&Ѥ«ˆ(mËî¿]¶´RÝzú9sˆˆhæuŸ»mhù³e£÷{›‰ÆÐX:Oææf]U²·åf±ñ û}Ón#"úõ'ͯ”ýt“Þ,]{Ý`Ls“N”NhVúÐw2͘|÷g¿¨[3úÒ—³ÕÌüÛf”uëÞ-}‹;ã~œPD¡ˆ""QqPD¡ˆBEЍàªzLÕ•Xîþ%[ƒÃ=ž­%ýçÛ«E†žYÖ6̽Sâ,{"Rtjñ”²Züí—eÊ Ï‰~…ú5&X{©þ,[ÆŽóÆüÒÁ%}‡Ñþ†´:Õ÷Ëç_ò?>»?1 ”5.ík"*²Ü¸SpÔ”ý;'SQAúâI>ÐðàÖ>÷Ï)>‡ :Ð,IöƒŸßã¿a)W8ìJÒ)ÐÒ'=g‡¿ÿÛöfçdå:ÎÔ¦à´?|½+\ÌHhLá/tæV¶odtÜ(÷]6çÃOysÏÞAÅùDD‚‘³«E8¨¿žÎ’Ëu:e©ö³ÿ÷Ò[ÒGågù4¦è¡]ÌË^ža”ímy²ÈÚ_âN#ƒˆ¨$g!‰·”-ø§U{˜Ú§OývWáé×üöƒÝ9#Û[WÈߨë/oj,èÏ„§ˆ ]mgJJ<ý§õ*9víg ì€ök`KTìÕÓŒ¬ª׳Á%w?9 ³53¹ˆ}œýÕ­Ú[“ú^½ª\ÇtjW˲‘Ï䨴eºïN6/'¼¤´àM›+ÿóÓµ_í+jƒw<=ßñqfZdú‰©ýþ7zý ó9ç(ff»)Å$¢pÙŸTB](¹\HF íqó#SófõË#"™í9D²âãBµ—Ì[YSý~Ú~§Kl |:pý|Ò¬N }>®ÄqÞe—/ùÚuÁhƒ(m`þÔõÑôg®Ò³|+œÔvCh܃§œ¡>ktñ–íbÿ\"Þeõ²¶éýß(R¦î²lÎ-D´ÏQ$Ò‹¶Öñsf_5bÁöª—\Ím‹ãO:•¯þ Q̼›Ösg XõʈÆÏÅ%¡y&ýì,ßù‹ÞJ»d¯û¤àÿÝ©oýϨ¢‰:|ýS‚7æøÌ=™7Túöí(ŠáU͹nxð‡Ü1îÜ×–†—ý|õ®'_Ñ®Y9ÞúÄï;eZñ›3kÉÜ1Á%¥·Íj;ïšBu7÷Ÿ{ÂC½›ÿòìÄ[îÌ^óù5ò§ñ·µúzù?‡ßugFèkqV±åðÁÅE“ôg–—ŒüìÏÛî~ºiÙ3áOÙi÷Îx?Ó5©"æÆ:¶ +eÄÌÔú£Îh+zlÔøá%“«fë¿_²±ÿä¡'Eθ½ÿó§gª¨Èæºí›Ô/t´p‹Ú%{¾™g?##rœ¾y|Id®c"6vâR‹þ®=äJ¢p®/¶Sñ`ê:(¢PD¡ˆJ„" EЍ8(¢PDõ²"ê¸îBx”Üîâúµµ"OíÚúâç û"C§ŽúèǹK,œ‘‘Y@DŠÎèl+gõùåÐöPž’ÓÐÚw¿Qäpúw”p.†Ò퉨¿ëá3—ümɦCCE#ßvaÜ»äð:%SQêÄ-bo;ÉÆ 9ó|1†ˆšš3lù;F ì·/çÔKˆÈ!œ”‘ÓÚoÄf‹™gtÓaǸ {sWR6áÚÎ/¦ÑTœ™;ópÃÈ“Ï^¿¥)2ãZ¡ïÑSs†ÉŠ…ŒP>ûßåÉ×ÑÑÉ.—ÔÓ¢—ìòf Å=²†Lçu'÷‘ÓK¢ŸVdT÷gVå»éï `ߎy_}qí³ðç*ß¾ +ªð""MØ—b ¯ïDz9Ñ¿†Åײqóùè…ýÅW2å]”*’Ë…d>› T]ØhÕ½y}ˆ(ÀH¾@3Ð|bè“&óVÑMñ·ŸNÔ3Ó­-mâ¡ÝMl蟎ëŠó>÷‰õ­Ê}¹(ž IDATba?Æï\üó‰þ÷'\:•Uú§k¯©ûuÓg“ö8BÿµwZûel<í“¿[šf_\Ò˜ÕGÜmŒ=øáīǗ œ=r¤üå̆×&ÜüÃ7/Ÿü³©e‡Þp0mé'‡Ž=ÙS†æÐ¡¾Û¾´L~ZÆ×oÞóõ½ÜœÐ SGöûúï$Ь±#}~r®aäqÂ’Óg~-ÿÁH2Nškìßš>ÌHO/,š96ïë7bÿ Qß–³e]L±Ï²™»?Ìžª^ «µß²›¢7ÒÓ'Þ}Vt%ôýQ…WW÷ÑIÿY½ä¤Ÿ_hÝ»¡KÿÁw¦äB™³ŽªØ›ë“¸Âœt"]ó3:#Ùäpí%k¼((v[ûéÄ\Ak¶¸v®Ðäb2v"šßÇUk}øÆŸùj¨8,ß÷.?Ïä׎Ϝ6  øëYEìç'Ù¦ÎO³û5+cQ¡·QuåœúÓSOÙÈvêDT’&ìwänO?1ê:nÛ¡šâÉsœi”À’päiߨ4ª,7RRLknø$÷G÷GfÓ¼¡Ð÷í©9銜Ñ^ü#ߘ•w„ç$Ÿ/Œ•bî}Ê.oÝ`ñ̂ȭâf¥¹Þ]tÝý´‡ÝÚ’þ1•Ê÷x¼H¿@ÌDZ,_ÿK^tZ¶ýü¬@ôjÚä¾tôò˜õ[ ã_Ë-ýbÚ|W_ñŒ#M3j>(¢ˆEЍ8(¢:‚" EŠ(QÑOèÙET—^BXZQµ®|aù ¢²ªêÒc|±ÀЬѯ®··žÅR^z)csøY1P¸`G¥* ¼`$9|:1ÝÞßa—}ü@Õ "ˆ¬Ê%ƒ…Çç,»¢ÞËg'¼‹¤ÌfŒWÓ¤“Ã÷Ýh0–^÷Ç}>¡±ª;·ÏçÓÏP ¼µÁOâ€üR9íy>ÛHóÝ@í÷.PØa'K´úo9š?åˇ /5± ÃKúfßÒÇrùNO?ŠüÃ'—ÿØo…zdnãuÆÏiQKúr7JÚk’qÓ_s\t=þ–½þÜ~’©%• Ñß,ÛBoî³ê¾´)¬(Ûü’_¡J$. 3#À‡–HyÜæímÙÍ\ZðÖß¹¿¼ö¼Õ¥P²-gdf»ôýÅ•þ³N ×4Ffæ¶±3}ðï¦Ì~Á%Òú}¾™Þx¿¶~[è9E}wf0ÜÈþáõÔÛNÒ9¾ÐòÃ7s5\®f[ÎþÌÑg ¾\vò·ïès#·7ÒÒ‡véÞNÇ*}âÎ3Έ^(ܸ°xà€#¼Â¤ŒÌÄ}˜Z’ …,0s6 ßô±Ûû#6ƒÉ#"QÑ%Íá“«,Y‰HÔd•“4–ŸN,Èp42ÎÍ:ËkFð†.gY•ç lͻ÷z)a‹N•”ÕŒ1$M¢ö£Å ‡7œ?sðQ>Q?Viýbäì•ùÞàY·¡™î§åô-YÂõi>j?Z”¶q¿D¤jD¼ÂI>Yæƒã—UUD™Ä@@aƒÝä…™C«®5Û[u&Ü]›í{ù²áþõ%Ö^D¤Æžd+ð/’öÇõm¶`í•ãUÿ¡E›«ëCƒOȵ©Z —AíÔð«ÆZ~¡É/ÕIŒA\¥ß?š(Ò횦ÌqÚ˜†œiG¸[q'·?Œ%^iû¿T9»Ð£$•‹ÀWûöýøC›áe³-D$3¢¡)l@“Åpí%²²ÆŒ€*z} Dß!FÚ»²ÚW•þ×e·Î¹vãÌÎx“$©Sbn†=äñÅE§Ï«:ìïßïÚÚ'Ù†ÿ?ÛGô+Xÿæwù‡G½ªßíGy#ó©ÊŒôôè³ùá¾ÿ¹¦Ó‡ñ5I’$õÌ3ã–1÷ßy´'D %Š€D{÷møæƒ ½W3.ÆED‚¦ë§ó’E „j/]Ñ8Qç«¢G79óV–ߛ֢‡ÿs/ËöM˜?üìo}‰µ¦Æœd[\àÏ’váú¶`í5ØžùhZþIÚ~È/̵mW--.cX RÈœ2Ör…&åù8Ÿßýœ”¦lsÚ†7äéÞöÉšP²°,ýSiK™sÑ= ЍޠˆêíPDuET¯†"ª#(¢zªîœÄ=Zôôráh}S6nøvÕ:œ Ê""Ec ^$¯Òþ¹5T /5q‚_V¹`x22ǢѪZU&œÃÈãü 'ñè>ªŒO^0†4•ˆ¨Ðuió¯72 œ3 ]D[í}¢^£ª“UuòQþ±ºî–Ä- ø~?H›dÞ®Nèæb܆=ÅùläU]V"’Y‘óé¼OS­¡JK“$NV™€.·×^Y'eñþCL@l#cAµI“2ï¸â”“ÇÅOŽ@=:½tÐôÙ¡‹&žëðKòE‘+üûí“زuÂÂèW~ö3:jʹçÆ-é³ðLŸãá£_ô†bï·e ß-‘¨j:Ãh‚dQC•¿h¨ /U Q Í&Xr¢O–ù`x\z1ËÏoo“ÙèÎ_Y¾êèßZñ=þÙªó6oŽ{B+ñªuµÏßu$²|ig®z(™Dfw‹·¸9@1 )¬Èª:5kûd ‰“U. +R()îâô€rˆm¼’+zm;î8ú·ö¿öjøg±â¹â†èGÝ“úˆt;¯3ç©4ÒÓåëŽvÊèµDÅhØgÙ—»Û`(8Ž]P5áUÞjÕBµ—…ÔΩó¢¤*ÁÚ+Ã¥bY{&ëôÉ”YÛUòÑN|@DË_øçÁV­ÎÛ÷„´V¬X©S—K ¡×BE@QrÌ;šM&²´y7*þö+FUaxU²øT¥}f8Ã.ˆ*/úU-0ì¢A¶ì->Y躶ٕ%~øy-ÀH’¿¯0Ë˶ß.‡“Åü2ÙCK ‹…—eÖ¯ªRh<|ZIf¶vPkeüVgÇëMšžŸ/ êg1釟 Щ¤°µŽØQgm?ZˆªfðœÌÛlz¨L±²ºÂIFÔéD»a(¢ÁŠ…NüÙ¹N4Ñ®L-éÂõ Š(€D(¢â ˆ‚”câX:õñ¦­i¾ö‰TeYE° =4—e‚¨ ŸªD.†mИ´‚=~Yìº?Îë]ÝU«ø^F*Loöìçg¬Á;Á¨¬ÀhŒ û9Gûü$6¿¯…—½ýÎ8FZš“Z¨É¯Ø]¯·3´|øa×­àH$EoèÛ–¦n·ùõàÙCAS Ž•y›ƒ ·óL€•4ÞbÑ"ãÚ³ÕV±¯CuÕwõÕQƒáN$Q‰PDÄA)Ç,X‰SÊ©Ã6‰[×^*Çñ²d•Yèˆ(8EQå->MÜ¡£Yæ]9MŠòÃ÷ì0¹Ä\(¬°¨Âîbg Ö^ '’J’ìå]Žàsx›U|@fœ‘»Øâ²MŒœtHe‰¡CÖ®Á-ÖHí¥<'sV‡vn9™D•³XÈÔ Y-r³PàÔ0˜RŠ(€D(¢â ˆ‚À,X‰SÊÉ:É>ruªj¤¦± '‹’ÂÊ¡ V.MtQòZäêÛ¶€èÈðkj‡wËH%‰¹0R '‡²)TW©œ@*c‘Û¸Œ´àÁi7¿,ûY{øn9Ô(f¦µ` :Íè|‰¡÷©B‘dÕC']5XÞÏ[íB¨®²‰’_Îf¡Hí•á 4Š™Nãhg0-Q‰PDÄA=€yçÀRt¦…çì®M;|¡S…ªÊs‚"Jš•M-j\‚  9xÏ €ls8NïÂQ¾ÝEfEí;\[²F—¨¼È*†UñJ™Á³‰$8l¢?ç°‡_ØlÍÎôrÒº¡Ñ]ITôL¥Í¢ ½34¨ ©'øy‹C’‚Kl«Ìñ2gµ³‘Ïd*Êa‹ËÅá–ßСˆH„" Š(H9æíÀR5ÆoñeØž)´ßDçY!`‘t«%tbÐjÍyC´(9Â/Ôõ4‡ÅØŒV âVäü¢p`W†#tVDåDF%«ÚfÏ}Òì’êeŸɅב.¶::X)@*5ÍÊ*mÆIŠ+4 ƒ kË{) ]å¬~A9‹•‹õ²4½ÁnIgÍ{8n(¢¡ˆˆƒ" RŽy?sŠÎÊ\«k@ƒNý‚K4•çEt»54ÿ¨Íš)r$ŠªÄFn ³ÙvѰJ¹ÝÐh€.&s’åÓÕ¸ƒu÷ .Ñ Mmse†¾¥X2-’골>)#2}ƒœž•®6:sqRzQÑôt¥E+.j?/(èªÆŠ^QHB_H¼Õ'rÞb"ÎçÛh³8éÄ· «¡ˆH„" Š(H9f™«ƒy5†a[yÁ2œ|DDº.°‚" †$Ÿ#йÄ‚¤‰rdL/ÏÙ9Ò¥ÂÕv€®ÒA.8‘ktæ®K;£p‰&ˆŒ¢Ûµ6{Fè<‰5K"ͧª<Ÿ5 oA–sC‹”ƒ“‡ÚC!ªš–Æíòû" †®ñ‚W¬RèÞjQô3œŸ“ì|ä:ÙßlçÒtÔ^òPD$BEôféÀJœRNÓY§zÀžÅ8µáÁå†. ‚OâI I#"…\†#QÔ­–ÌðËEK‰!YêG:¤´Ä\¨œØ¢Z†Þá>9¸\DF1ìz›5;4Yƒ#Í¢j>áÄÌHíÅçfÚõ6¡ÐI©,1‚®±vi»˜5Á©—‹¤j¬Ø&ñVI ÒˆÈ" >†óó’‹Ì6š.ZÚlŒC–G Hq(¢¡ˆˆƒ" z_B¨q.æP®d¤k#ƒK CàyÙÊ’•BÓ7ˆzš…!QÐ-–ÈBll±•!+[Ô èb*'¶h\‘ìIýN¢Hªf×Û¬Ù¡¾N§dÕ}VÍëLÌË›Sn%Ÿ£F¿CO#j*+ÚwæH…éíµchœØfeíí DÝgaü‚àä#_H²l¬×ʸ¬æ=7Q‰PDÄA)Ç,#°©Çeîo0ºÞ^E’ (6†D=à ""‰Òu†,‚!¨‘ÉÒô‰È¡÷é`¥)NåÅ6¯Ñ—õè}µ—Ä4+vjSí¡“‡Ö +£û bé‘à ——%’ìu¡ö‚žFÔ4Ñ›¿£¿Q¤‡ÎJŒáeÄ6cu2ˆˆ¬ùtÆ+ V!rò03MHätàÌ!ô@(¢¡ˆˆƒ" RŽy;Mc³ZÒ2ŒÐl£,‰œ¤8ˆ #tŒ1 ‹•HäI”òÃ/ô‰8ÞÈì`¥)Nã¬z›×n´Y¡æŒ(±Šj#¯a (‘Ò%«î³i^KfdþÑ¢Ñé<©†Ó7@O#°DÞìÆ4&Ç~+'‘%,­²·/±†ÏJ^‘·ˆ‘É2]•ÈÉÝÐh€.†" Š(€8(¢ å˜eVâ”rªÊÛó›«ÖpPXÆÊKšH ð)I$’8’¢*-ÃÈ"Ò 'I å%æB㤌æ=‡œE‘J’,rS+YÀ9¬Vò1†aÉ´DŽ* áN·úCÁëj›ï>¬RûÑBb…‘d‘,ö%D²H^ g•"™È2 Èe ö‚”‡" Š(€8(¢ 0KVóª¼-Sñ¹áÚ‹' ‰šOg¢_è7ÈÆ’%¦ö²¶´l&²@Šë ¼”Ù²¯-+R{±ITÚ¼œ=œÃb±‘%]·ENjÇ·lÚt‚Ú Ðe:˜ÔP ™E^#\{‰<çç-v_̰v«ßh³²Ö¨ï#VÃØÜÒ‚Cô(¢¡ˆˆƒ" z€®íÀª]Z^Yü±¬ªº¢ôX^k·ñ«¡²ýÂKÖÊJ†Og„¨§ùuÆÆœáŠîþÕõì$Z е’É…–)ælÚÏGf'a¬«âõEÕ^$,é6ò¶X#óÃèYY`JÉ„"Ó°°Y‹Ôȹq ÏûxÉæ×£q–€îµqVΠ¨£E¶Ž¹À¼PD$BEô*]Úåñl-Y´rù<÷q½Zfì™ ¯‡ðœt¿S{tJçH&[â L)©\(¢˜í;È^ÂY%Aõùx[zÔÓ|ŒU ÃÝ!E$ ‘äƒöÌÑ|¤Š’XÎ/6¿FQÓ•Xú¡4Î&'ÝX€E@"QqPDAïÒ•ÿš=µkë‹ÝÇWx‘ºæ /x»È~‹~V@g,D†Œ"’Ë…"IYÊaûÐÂðÞ&XT_@°G?-ÀZüŒ5áÕ¦”\($R¹„"[¤ö²°¼_àí5úiY÷[È‚É U ˆH„" Š(èeºr–g[}ÉÖUåå•ÔñxÆÄi䢩ýå²ÛíÚÐpzÁN)jL›U JB’Ë…›å3ŒÛ>á\pvÑ¢ù¶ØÚ‹‘T†Ç7H É…‚Wû5ä²…vÚSaeŸÀÙÕØÚKÑ-8Z@ AE@QÐËteViEµÛãq»ÝDž5‹—Ö–Æ*z¹hÁ˜y5È0ŠÂË%Ñep†â¢Çi„Ú RJr¹ðiR:5é}"Ó7ˆNÁ¢ùe)/úÉ2+²¤£ö‚Ô\($/Ó”NEQg­¼08—êelQ µ¤Q‰PDÄA½L'_BX»´‡Ú z'‘SjT0ž±ÅE Pg,ø¢½Š(€(¢b¡ˆ‚”cæ¬x‚áà‰XgòEæèy,«·v_«º—àRœÎ˜ñ¿YYdˆl[wµ  [‰‚¡òdc{´`Y–p´€Þ E@"QqPDÉ¥Öé‘#¢¨[êÃ0©öWt&Ñ!r¤‰1£ß‰a0}ôZ"‘Æ‘=vú†Á!ÐË¡ˆˆ‡" Š(0¹Ôú(J[{†Hd9Ò z>IäHcc§o0$‰,ÈôR‘Æ‘‰½«Ža л¡ˆH€" Š(09³\BØÑ tâ†Àq†+z¡×»ªËÐÍŽ&$Ši|ZLíÕöÊ+]Õ&€nu4¡ CãÈÆÅÔ^«¼Þ.k@7CE@QИ¥+ñž"·>7ñ„^âhraˆ"ÇèY}­Ú‰j@7:šPDC·N8Z@ï€" Š(€8(¢ H­K‰ˆ1 ¡»Û`&¢H†AÇ? ×`ˆ÷{ˆƒ" Š(€(¢ÀÌR¯‹Hìî6˜ þ“DàPÐ$ Š(€X8T€™¥\áµ@,D #H@Q± 0-¦®®nðàÁÝÝŒxG5í"@—‰¾DÜ< èF@"ä r¡HtL¹Ø¸qc^^Q]]‘jî»ï¾džä˱þ^¾~ÓêÞífòÝŠæuéúMËäÛ ëïÙë7-“o7¬¿g¯ß´PtÝË»zý&oÞÑ<ÁœL¾Ý°þž½þDuuu©x !ô"èÀsKÅK»É‚¢yI2 MÈä ÍK’ù[hN&ßnh^’ÌßBs2ùvCó’dþšÉ7š—$ó·ÐœL¾Ýм$áBè™Ð¦†,05¦®®nðàÁÝÝ €7nÌËË#ŒÀ“C˜:°ÀÔЦ†,05t`›Ú¥åí–ÖvwcbÕ.nR{CMÓʘæ™l3zÖ,NhŽé6 y™loFC(ŽB‘,“íÐhÈÅqC.’e² ¹8nÈERL¶7£!Ç ¡H–Évh4äâ¸u^.êêê 8Z;ž¿þúçwtw+:°þ¡²²²²‡ÖG~½þù†±ãùë# »Q\ó̵£6RøG³m@33×ÞŒ‚P?„"iæÚ¡Q‹ã‡\$Í\;4 rqü‹ä˜koFA(ŽB‘4síÐ(ÈÅñK>uuuu,<µkë‹ÝîînF<ÏšÅë¦TW•Ex¶–L+u¹K§•lõxº±mÔQó̵Ýó–WW” m/sm@s3ÙÞl‡P$¡H–Évh;ä")ÈE²L¶CÛ!IA.’b²½Ù¡H B‘,“íÐvÈER:1èÀ:žmõ%[W™g ^ˆ{ÞòÐÇ!ij­ýãêv×oëæ8uÔ<3nF"ª]½¢xÁ<·É6 ¹™to"¡8.&Ý¡ÈEgA.Ž‹Iw(rÑY‹cgÒ½‰Pt„⸘t‡"%Ù\ð]×´¨´¢Úíñ¸Ýn"ÏšÅKkKc?&ptLºk—–¯ê¿r¹)Ú’BLº7SI7#Bq¼LºCSI7#rq¼LºCSI7#rq\Lº7SI7#Bq¼LºCSI7c'ä#°Ž‘;2¯ÛG ‘»û(5ÙfD(’e²zdæÞ­&ÛŒÈE²L¶CÌÜ»Õd›¹HŠÉöæ‘™{Ÿšl3"É2Ù=2sïV“mÆNÌSWW7xðà.j(ÀñÙ¸qc^^áB09t`€©¡ L X`jèÀSC˜:°z ÏšÅååååKk‰ˆj—–———/^ãéîVt/ä B¹H„\ÄA(L€[²dIVVVw7’–6b´TûʧŸ¼³g ´¾ò¥-TVõÂõ#º»UÝ ¹ˆƒP$B.!qŠîsèÐ!‡ÃADL]]ÝàÁƒ»»=Ð) +kꣾ=DÕPÁÇêõ¡@VwsÏ[^]]]]QzBÞͳfU Ť)*CQÁ¢Úu5DD%‹VVWW¯¬*#"ªY:–Ÿ|,$Ø~·»8úyÇ+õráYóÀŠúðC‹Êˆ¨~mð\ r!åBQZQ%ø•,š_Jtš”ËEð[Mä`QBþ‚\@'I¹\ÄÆ¢jQ QýŠöÓ€ÈtÓ†bk •U­ WJ5ëj£Ös°hAo:°º[Ì€ÆðÐÇÈÛèQ´w‰Òš¸·G¼°)ò¤µõÔÞùº °²†ˆêW,,/_¸¢žˆj*¯ñx<Á4-˜ç&"wé”2"¢úmžøµÄ >±ý{;ÀñJ½\‡%¶?4¯¢ºººzù¼`F 詊(µK+kˆ¨¬ ¡€Î•ª¹}¯q—N+‰zä:Gªå"ø…>‹y Ê(’ä:9CA¥Ë—WWWW”º‰<­#ö`PßÝ €ÔT. ÿ\_³b!¹ƒýŵKƒþÈ#[iåòyîÐCŠz¨r!U%v2¿c‡†,~÷¼åËçE½.t` ¾0táÖUåå•DTRVuwE{³» Q}ý6Ѿ À11u.BÃɳtqyM=QIÙ¢»+浯¹€®aêPD-m?‹8?ò>tsç"ôÑ_[ë™7ÏÝþ ¥?Š(èj¦ÎEÇß·z‚I@. kt("¯X³xáŠöïÑ«k0âvÕ#D„X&U²¨*jtmh(aè+@pŒah(ahØyû1 xQ_ì Ã(¡§“IYUÖþºà«Êª"ÃFÂ/ ^Õ~Ê$´j¿\·¾¦2|¡zhHc0]Ë̹ªêkÚçv¨¯Y±02S$r]ÄÌ¡ ]»¡€®cê\¸çÝ]UV<_¾pE=•DF&"Ð…Lœ‹Ð¿~mm­'Ò¨ðh予¹BADT¿u[hTUÇ3N#DeNe 敆G×Ö´÷ó†>Ç5• £z~©f]mEii°S¶~ÅÂÅk˦M›r÷Êê®ïë ;8ê"ÜÚmõDeSºCÂTVêöl£"ZTu÷¼R·'Ø]¿buí¼¨þâÞÚ! ]ÉܹhodÕÊŠRwèá`+""ÐÉR! ¿Š@( ó™=žu[£¿—Ôo]WK¥1/D. ó™:¥ó•Ô¬¨¯_Q¹pÅÿä:™‰Báž·¼z^ðvP‘‘`?¬—†#°RFûÀ§•V¬\TVBDõõ5+VT.\øÃ7×ô¬Y¹·ýÊÜšÊòèW†0%‹V†ƒ¼Xwy{âç/*!Šô»û—À c–\„>øeS‚¹Nß91‚\À‰c–P„‰™Ä! B'”irQ»´²¦¾ýäþʪ2¢úšÊÈx]äN$ÓäÂ=oùʪ²Ð§¿¤,ø¾±×֜݊˜¯ê "ŒÀJ=%‹Vv4àÜó*–Ï«ðxj=µëÖ­­©©¯_ñÀšÒÇ&e_mÔé‘•‘¯ž5‹X[__wÁoûºwèZÝž‹zr'šIB:™Ð…P@·èö\„îÃÖ~¶#tÞ?<^¹€îÐí¹ "r—V,¯®þ\»´œ¢n…\À wbBQ»tñª­‰_«£´OzsY"õòP`VÊh¿ûÀŠÕÁëÃÃ÷O È½Ö»´t^Åüi÷ÉÆôÕºç-\„uenèŠÜÚ¥Q§G¢Ãçv×ׇ/øõ´ßø6všºc™µ ¦ÉE°á\¿¢Äݪ¹€Á,¡ ¢ð·õŽîZKDœ0fÉEh%5ëj£(¢ {˜%¡[¾…F¤´ÏAw•r' …»?E­ÍþVìvGÚ±6ÔŒµ|áî­¡À¬§¦²¼&vIÉ¢•Ëî W¢à°Â•51—ä†f ]:^³baMäÒñ®Øˆ½A°ï6r µ¨´(x»Ïð:˪ª+JÃשG( OÎß= ðzJ.BíˆÉExÒäŽEO 鮄D³ž’‹Òi%+êëc§WAÇ«Çä¢?­ˆ]5q"rÇ"•Bážw÷¢µ ã¾V‡>ú|³ˆÜ §w‡#°RIiÅʪE%í}º%e‘±îyËC—ä&>%Ø!Ü~ÿ‚¨ y¶ÕGg ÔË{±oVR¶håòÈÔ¤Ç|ÛP€$™$TZQy·Ø·B.àÄ2K(ÚuPa!p™#¡¹~ÂÍ()«Z‰" ºyrýÝ¢*ú 8±NX(ÖûÑ/­ˆÌ G1ÇŠ^ ¦®®nðàÁÝÝ 8A‚—žéª^ó¯ + q €DÈ@"ä BÑ6nܘ——GÕÛ/§ ]MÛù‚'W"ÃRr¡H„\$B.â ] X½Lðþœ]”§Pš¦ýUƦ€\ÄA(!‰ €8EWÂ%„`FáKÍxªªªÊÊʦ¦¦în@HZZZw7¹sA(!‰ €8@¢£Ì.!SC˜:°ÀÔЦf–IÜ«ªªº» ¦ƒ\ÄA(!‰ €8ôféÀª¬¬ ÿŒh!q €DÈ@"ä B=@ª\BØâtNêî6˜ »¿ã´Óº»&ÒB4ÉéìîV˜ Š(€x(¢â ˆ‚”X Óʲßuw+Ì…ihà¾þº»[`"­ ó›Ç5€E@"QqPDAJHÏ(Ã(DDdts;ÌÄPÕîn€¹( C8TÄBE@QÌ2Ö]…ë%bˆD–Ô øþ\0ªJŽ2л|(p¨€Þ E@"QqPDA`–¬ïŸRNcZ bF1  z‘ïÏ…Üè3†d™DñĶ  Û|(|ä0Œ_K 7AE@QФÆ%„ÍÌ^•t¢@w7ÀDîðkÇÈrw7À,|Í «âPE@"QqPDAJH,mÕ"“8‘ÞæÓ‰%Ô^íü:Ëi¡I E@"QqPDAJH,…š4"™Zº»!fâõi„“‡^…8È@Q@ E¤³ÌõýSÊ)L“F¤0mfi.À ñý¹ÐZ|qJ›Ì°t·ï…Oa8…1ÍÁ àD@E@QИåãùó¨R˜Vë‰m@÷úþ\4´ø I[däzïE@ ªEVB* 7AE@QФÆ%„ºÑ¬¤2Þîn€‰h-^•á•6Œôñ鯊Šé"PD$BE¤„éÀÒ"Uiìˆîõ+$¨m˜— Ä«k‚B¡ˆ@E@QÌÜ a´(©Zs7¶À”H.ô6ŸÂ>/NB¯]gù CT EÕº­5f" Š(€X(¢ å˜e¬Ä«pF6 !ø³¦·©ij a¢EèM:È…,B(F«OfÄ€çI I …Ì0‚an5tQ5M%- 7AE@QИ¥«£)åd"{p‰aød4w€†Þ¥ƒ\È2ÙC¹`[½FòaúèMC9Tµ1†(ë²ftGÓº Š(€D(¢â ˆ‚ k;°j—–WÖ,«ª®(=–×jäe)#ô ãWtR”V²tr N¼¤rá °í±`~™eœ<„Ô—L(Zäjx/ÃHŠî×ÂÑRŠ(€D(¢â ˆ‚^¥K;°<ž­%‹V.Ÿç>žËl‹¥ý \† (£(mØ8€n’\.Z”ð!…xý¬Ei t^ÛºER¡Pd–Ú>†±(šÁèPD$BEô.]9‰»§vm}±û¸²DD E*-Ž•eQ4ÜR_’¹ˆë.¼Ö¢¶©Ó0€î’\(ä¨BËDZ’ªù5Ì? ©E@"QqPDA/Ó•#°<ÛêK¶®*/¯¤ŽÇ3&N#M5"·Ëá9EQÉÐ}ÑOàùw #CÓFw^‹º^r¹´ÉÎöŸEÅ{˜ÏÔZc¦oàß|Sw»õ“NêÄ&t­äB!«‘É|,›.«~I~Â;<Ÿa£QAjAE@QÐËteViEµÛãq»ÝDž5‹—Ö–Æ*z¹hÁ˜)JCø§É~†‰­½¬ÖŸªêTŸïÉ®h;@WI.Þ¨JKR¼~±{hÛM7É—_îÿÅ/:¿å]$¹PÈŠ¾]ŽOàòT¿ÌÇ”Y?µZ§ªê“>_«0-Q‰PDÄA½LW^BHDîÈxÆ­Ï1½TU›Â?‹œ&ˬFþè'0L[ÔmRG¹ðy##}%Íçç­º?&äõG’ 8Ñ’…¢F.ñ ¼U•zÌ tÚ‡ HI(¢¡ˆˆƒ" z“®ìÀª]Z¾´6üÛ±^›«ª‘Ñï"§+N§˜yUæÐì—I¶àDK.¨é,š/ X ÌÉC¦µõý/P{AJI2Qµ—Wä$- ë1£ß›UÆþAŸ­èt(¢¡ˆˆƒ" z™®½„°j]yy9QÉ¢•Ëé–žD¹%|jÐÂér€ÙÈ1†aT2¼Lkg5àI.rsää¡U÷ú›#êä!»}{“.7ù;z)€Y% Ÿ.‡’ø$ΪúebÂ60 §’áeŽðj³BE@QÐËteQiEuuÅQ=3qz¹@ %ü³Ä’ìÈ©½XvÇa"›,@ªI*-‘ϼU÷Ê¢¢RÀîØq28µ¤˜dBáÕ"ãJü"+é¾6²†—ì`Ù¬Ãä³á`©E@"QqPDA¯ÒµXG/zz¹Ðü£Q÷{¶2†ìWä´‰ÂmÜoÒÁ}ä:‘Í8¡s}»«á H6  /iþÒsÍ> £ö‚+1>=2Û¨×ÊHZ[ƒ¹d‡Âåì7ÒAÂÑz.Q‰PDÄA=€y¯h•µ¶ö5–!Åka™HíÕÈ~Þ`1t®(þÙéœxÂÛp¢©m¡›€0~¿¬ŒÈ‘©ÆÚ6ìØ/æZÚobYºÔQVÖ ­8üJèРi,ÃS›¾ûÑŽF6¿!àcÄà¯ʼnNgkèYPD$BÿÏÞyFQu}üLßÙ¾›ÞB Ð{ï Å***ŠÊcõµa{ĂнQ¬( JGé5$@zïÙ¾ÓgÞ»Ù *ἿOÙ“{ïÜIæÌýïœ;ç šDâ¢ã~€¥ƒ‡Æùd^Gá$s"žãö‚¬…ª$8^pÞçˆ@œod®10è÷ûA¯Ñ.…·þ ù%U†8Êl£) ž›{þ'‰@œOÄFíÅa˜Þ¸æñðÒV"âñn¯‹.@~á.|Ä?QDKˆB šDâ¢ã½CõžepûdIãaí…Ëùžz"¤Æ¶Ûü ãxù©cx4@ .!4>¨´øÞéÄq)T'*Jª-ñ¤ nÜiVÝ>hV"ÚãâBh,—ã—AïMã%¬Ið—ã¸zZˆmí‡òSåZ*—HD!-A" hQˆ‹Ž %VË”r*×oT$– ÂïèˆZOKGWà5 EáÇT5!ÔÆbiã÷/—¤IçxîĹâ4~Á…´—ŸÃõ„Þýn«/ªËH&Ë>ê1®bÌÙÙJ¯^¡6–¤$ÏÑ£êß,²‹@\ ´t Q Çáy\/©˜$JDxi+2ä2‘Œ|ô› ªŽEá MªD·±X–ûý“š|A ..ˆB Z‚DÑ $¢—ʬ–)å´Æà¡ ×ˆ ¨ KaíAqμ4²o)¨Xѱº6€S[,òØPd'^dâbå4~!ýÂéT‚Õè&ÚKQ"ùJDUL}R©r&,žØ•­kÔ^Çi.•TH{!.NZ:ßøãY/)˜,Ix8xXAY‰“<Ñ' °¢Øº6985ÖÞ xœ8 ÕqÑ‚DÑ$¢ˆf …¸¸p_!,¸¢b• ` 3$|Ö‹aµ øŠTšZdZuøAÀö4µ?r>§Œ@œkÔÆzÏ'ÇzÑ9ñÀKJбT›Icä`€QïåJ )î9¡îšÓ%htÃáŠó™c%$M$ƒJ«D&Ò Á•ðtHñ‰ž†cúpº†Ñ"TÞó/nô"í…¸teuI~()ª –Ö©õ¡Dåµ—¤qbiVêî0ƒJ/”÷éˆ$¢ˆ– …@4‰(ÄEÇ…r¹µL)‡ÁÅ/9h×€¢?¿ÇUCéµx¦Qa”Õö,ÍJd+Jø S¡Ü Bë ¨5$¹™ã^ieâ¬iéxãîwÁáÁH=Fhtcð°þdiµ=EŸX«S‚)(É‘Šdm­ ••°‘eÍJMý ˜Å‹ÁhÕ# gCK§i/¯À±²¨* ’€%~>É_£äx&­á5B6•wÍÒ²S‰ E·,˜ZÂRÐÚÕb Em&ÉW8®•§„@œ5HD!-A" hQˆK€ åVË”r¡êΜ⑌ - ½d餫ؒ¤2: ËEJN)¶ÈSÌÒ#• àüy2±¬¾VN©œú<–Ü §j/–½[RÕØVŠ@üNãÉ$·£t@¨¤Ô^X~‰;r®ßǪÁ5€‘¸h£tïš±;‡¾2JGDÔ—¶zJŽO~‘ Kí…×Õ1O=Å-]Úê1ˆ3§¥Sˆxp!ó‰‚N1“< ½Š4)]+ªw&q«GЪäìRäÉaéŒH¼œß.3åq:ë¦ô{9õS,ù œ¢½îfÙ‡!Vmí·âï€DÑ$¢ˆf …¸hÅ+„;W-^µ³õ·î3…$ƒÚK–Ý¢Hj*F5NÖ£4T¤vÕê™Ær )ñŠÝQH{…‹ÛSìæp©È͇>3j…,kæŠGÕ)~áÞ~Œþä“Vˆ¸t9ONª÷ìTF D*N}J„tähdg¾qµàHŠp }9Þ ãÔ‰žH/Wg¥Z¹Tpµ‚—8%¡)ð E7Ôñ/‰($¢-A" hQHD!NOkr`müà‰¹cÆŒ¹í¶Å«v–ž+Ç"ˆ`¶Q¼¢@j „Ò7$0^ÑÑÑÜ©R€¦Š3WHƵ`ªE—¿RðeHxAë&À †…“Ò ä~hÿöÖžâRæ<ùEcðPõú$Z'‘¥-í<‡ã*í…Õ‚A ì÷&Õ”Çuñj/¹Þé0ÆDÊ5 (-?¬RI¨kj)ÙzÂ&µ¨õzq©r~œBÆ‚Ú˯`´Ì“Š&’Á¥-'Žöâ¥GÊÁ&E"ˆ}G©à‚RÏyõ’?©L+—Z™²Â hx±°ü:.VT8ZD\Ú ÕÚsB\Ê Õº—0HDµöœ—8­¸Ô.\¶lÑÍ£Ó!?ãOÌ;f̘sáW¡r9îšUºq²+qdÛÝ=¶ñ¸hReD*?w˜£Q*ùåZ?G×rP/ÿÞº Xô|… .üpÈR%ýX-ƒÛsøOz!þ­œ/¿hLÖ€ùýMË4ÉhÁˆŽóÖ¼²âˆöbNÝ–èªÆE—SÑëK±$1¿U)HyÞ øÄSdwàx5S~å4E4ã<9E(xè‚Vx±q«‰ôþ6#'å5AÀ€§)/FùÍ„3(•\oýIu\e}+ÇÅ}R…Zâ ¯§'ª¤„j9OðüI/Ä¿$¢ˆB´‰($¢Í@" ‰(ÄéiÕ³Ò¤¤W-|gÆ –-~uÛâÿØÌÂÚ‹äd6È@aÁg½,¡&bJ}$ÅkÀù*€!U`pÞ{Y/SpR4ïgNª®aW“1·QÔŠÓŽ0õU¨šZâtr¥kðnY<Þß*ݸŒŸÃÝœ ó2E}{îÆGœC΋_PÁCœš’Y’nLß W½’®ÀG¶ãA§úyЫ~›_MNÌë\¿;Іp»e]Æ&6‘JÔ7ßP?ÿÜòXª¬êÚvR\!‹ûHi‘êÔ¬jeMÈh/>VÀ¦—îo}NÓ¿ÄpÅçnpÄ9ä¼8…ب½ I…giU¤‚ºÊ¯#ÜbÔW$Ëk~ÁMb^šÅýÖÝhãA/yc=Î"OChÌm$¹‚¢N{¸á„i½rʯJbtmª¼ á&Gozµ»´•ú3âe†ùöfˆ¸ÐA"êœDÔE Qç $¢.Vˆ:g uQÓÊ$î¥;WíümËóÓÓG§¥nÌßøÉªÙ¯Júû¶¬‰@6©î,¹ ¤ÌÐX°¼Kh´É1øƒ}ü£Ðà©¶² #5‰³)4®q Ðéä|¬¢ªy"4æ1íÁ }H×6;†ù(üdŽøB{ljÀ¢`U^ ê«X¿r • 6cØâ‚BsûdÇ)ó$ÃñBQœó÷Oú4T‘‹%U-ÍYò ÃÎÏÁd|Ä9å|øE£Ò"A6“ÍÐÁCƒêòÌ¿÷Jç>a]Á¦×±ª¿ÜeêrÐ&÷«Ó~¯KU©}•®Ž™¿p™IvÙŠÆ7;–sÝ>©^©zsmÊc³–Ü=å²!Õ-ZðÝåí¦EŒmÝÇ~O™u¬¸i_zÙ2¥sg¥_¿¿ÒÍqþžmÜ]ÿѺˆ&„ŒÜõ÷iq1úç<ûñç”óà¡à¡€SzÙI²šÐ¸ZøuÏÄ¥Myƒîwq 1æŽ&õôá†Q…‹2Рt’'JU‹ 20ÔÇ´/3ôׂÔìX> Ë¡ðm9âØöAyW§`/–à­<ŽÉ£!1`Ì¡u™åyû“S›öý$ q|Nc ¬³ä›*Ò$©3¢Ã3§ØZâªJÖɦVnãï5qÉ÷%œÇRÖÜC°Oȼµ1=Ó¿$¢ˆú ˆB" ‰¨– …DQÍù7Š(€V¾B˜>úæEË–mØðÎ; þ4{ÑìS|içâ1cÆŒ3¦©Æà!EK² Ã¤¦ñW,ý·—~Úð¢ cnO°8DøÔªš,—„WFÇ‹œÑ[›d6…÷î&[ù}ÇŒùu6;VqÍyÇ­%sÄÑ€%·r{“rU&›Ì©1·Ò¸“ׯ2ኞÕT×W¿±u`ÃWªŸü³SÍgž©Uf~®ÇVû´TC4†Õ,.Ø[£Â¯ÕD÷H¨‹†ÿz¸–̯9åy¹§üŒaAì‚&¼Eâ ‚ñžï›6kÐnÔ aUT¯­ý“9ÿ%uÌûõìü¦µÖK}~‚¿çÔf/×è>›a˜ãÏpØy¼e´ä¼ø­ïø´(¨ a&"é| œ Ç&÷¸i[<³õ55 ((þn©›¤Ë걈úb°‚WÒc¾H+YܬŽù|‘bíê˜Ëw?ßü2`öíÞÕ}rfÑ/!‹\XàŒŒ®·Å{Nä,û¿;™cî"Ń­>¼û¹âêÅ#—~ß²` á}Å-92ônqMð5“#—?sðÙ_ò'Üú­û‘iãûæ|²(åÕ¤$Fú*°ººæcâøq¬¨¨©¥äñw~ºnÓ‘ð ëꔨ¶9Ï®7:xZ‹·Aò¿R:5òD,z6ïöךZ|{OÖOûO«rp^œBlÔ^ɲHÄÈBãjág±v½v¾”ØÀJrÓ ~n·ðšØÝR¹£|”Žý´¯¦Jþî‘o”õ]Yó l{]eïªc¸@rÁƒ«-Jt:X_E….ØÝ˜[OUž,‹Ñ…:^SM}üÑ×»:°!K–ÿÏHßä39‚оzì{¿ÖI3Ô7¦8-rAlzÙŽêµyá›Þ¯€ ͪ]S^sÊ@ªä0lA4½B‹D¥‚íÝM›-nÐÚj†ÐÇ£õg¥ÖÖ1ÏÖ³M-ûÔÏ^jEßÔøyóvΆýyŒû‹ç$¢A" ˆ DT¨#QHD@"ª$¢‰¨&´*‰û; ¯˜tº‡¾II§Øw.~¢ðæe6,»¹ð‰¿íP¡r94%Ë"“ѵ£ ¨œ/÷¬¯¼®Dß]T07_,{wO]q§›'ʪ²€Õ‰²ß »##:ø!OŵC«ïH‰Ínv,³ýDyVæá\Ó¾¢ 8àåì†Z³àŒ4¯ìCÅË |xÛ_ŠœRÊû ê*³ ³y¬¨a94(?zˆÉGÜýO{Fe“uÊËÑÖàJ–U²äPŽíù2ó± «€ƒ¹Ë‹êè#[úúµ¯C½2¢]¿;"&ú”(GaÁÈ£ðTËC¯i`'Ôà«B–¬†9ë6'ôˆ×q(æð®.Ô"ç› E›¯1˜­9Ž…¡6<~ü8×û´g 4óf¿øXöyõVÈ’WýÐÖ£æhóOMZ)©º§Û2-˜xMs päæò†SÇwÜ^Bt±`æËÎçJ!é¸ó¦Pƒ2i‘ÆÆûÉßšö:Y¶ Zì_  6)ÀËD帆œ¶ñpžü‚R‚§CËœJIéq4ˆP[Òàà O~ÒcKãp¶¡´ÒYÍû1ýå¯g¶4¹žŒ,ÓÈ¢Ãl#+‚*Ê\SÎE¼QV¦,ø¨Û¾¯4º½hSb«JïôÀýã¿k{åš® {–7¿ék;èÀ³?Àé8Öíº‚:ò·ÿ®|Œ=òëî[ü¡¡ýÞËŸ X¢J²¥nÌÓ}oü°l}yÇΨaâ&mxl}h¼¸xO§ëµÓ- ÆþýóFÜú(T$—Ù˜6mßFCÛÏõÕ½"¨½¤zä-‡{Ý MÔ¡Aó¹ÊÓP§¬Xø8+Ëv{Øòζ]Æ‘îR.'œÿ¥üêûÝ;Ž|¶£i_®âô:s8Ž,ÝØÔR´jgClfõúCŽÝ'JSFïºé]UιrõnOdת~:¥×®Ìé<í!4_óo/θž{&š¿àC»—;YZ>FOJ~Âí¯²šãÔúSñèÂ~Š‹mv¬ƒºH{Ýá¹'~8™°äy Ê[E8=6kÀ²¿ ?£Ð§óÍ¥Epr |V ô9\pðÅ==røý p´A¹Í‹?pòôÿˆÕåÂõÊWv{àã/ÅùCò³Þÿùž9…à–1ø½ðhFy]תŸ¾‘Ã)"~o3°ô£¶è¦Cý§öä–£§9Ä«'üóØ]5a ðv^íܽë·v‰ YÞ)¼½ …ßK LŠ6GÌ_ç׆ڔñøy§(§Í— €¥‚°«N]WÎ:ñYEÅU{a Y€;Su´eNí u Wördn}mSË'…Ž+ʈj9¨®¾+j˜T©}XþSW&uö ÿ”—ž~©àÔæB­§YXà:mã3‰($¢ˆj QHD…A" ˆB" ‰¨?¢•9°ÎˆÒÒÂô³“`àˆô-¥s§#EhE“¦UdûŽì)Ô;êjí¢ çÈ©3fsÇeœçke…æÍùÝÆNWøzÄã gdÉoö&DëÔÀÿëž·Úô&»r«ý Þù^Q®×Úå‡ÌØ_ÔŽ‘þm•m öƒ&l ]o«¬)‰‘ËbbY%ð2lQýOzcÑ»OTMØtâàš½HðeÅÑ)íùÅOÍ'©ö÷ÿŸÀÇóJ˜œT[c«:2<]?66bXm]®rGmêÉ#ONxª{aö»C2n‰?¾cíˆ!½{WÕÉ*ž;µç÷¾£¼$/ë48ö÷¬,)¥Ë–ÜçNåÈ—ÓìÈN_M|—â]"«%×ÀÌÈßólϹgrÿü /ËKÐç>ÙàVÄ^ TZŠ3wù²ßàì¤4øíÛeq©3˲W‹ÝÖEÖú55©í°žÆ‚ÒüÊŽƒ_x{EFÿIßm,8Öö˜ÍÿÚë‹çÏdÊšO‹¤‡G&t9Pô܈+_7én]úñ•Œc¤Ÿ=L<áîHRjÒØ—b£ÝUÕ–üm—§›ÇÇÅ(³õr8c»öÊÚ¸õÖ=ß3ÎÙV̳ó‹Pð‘LGöœ ²¨fçšqCÿ+dy´ÌÈÖT8Krót˜¾ÿKĘ%Ì^&¢`Nï=Í’[g°ðš/Æ|+¤pÝNcT§ÂnÞûVo9¾OÙôùçL-wÝ+óJ˪íª\ë¼êp;ÍøÎšn×ö€wÙáÈ ‹Gä»›òó :u¦,mÅRD˜xìýWæý°}ùt|[õÚÜ®ÛEüøå[s_ëþá7W­¯Hn£Iïžyy‡XeÓᬄÇ}Ùõδ^¾¸*²j¬²§¦pe×ÇsG^³Û£>8ÞÁ•õs´£Ý%¿ÿ5võ0-R“7o+ï!YèîÖau׈ Øo9õS®Ï<8çU{ÒXÇG?UÔí¨ÝWݯKÏŽ½ ¯º1{ôK½÷¬ÿþ¾­ÓïÉsðóõo¹zÌñ¦™:lÞð¼ß5dÖ®‡¾6b«‡üö‹€qX÷Ý+W½ðlÅ ÑéòäŸ~²Ä+_M}FõEõêÔí½›¸ª:EÅÛæ—míþÒÇœG,jݲqw\öô3ºX­ãš÷¾XpmÏeVÞüÑåÎeâ5ןçõ–W×S?ïÃ+ŸâyøöÙ/â êØÔËú=ö>nHiþÁ’fmXª¨x•-©ö¾Ëu:¶®¤Rv‹d„N.tÝýéBBßwUAɬ»oÞS„|þ¿‡w®œôßé7ý_ìÁµ˜ÓO˜òæˆW»m߸«×M½¿[ÁÄk÷.90ùþA¿±uEÛé7wI¦6¬ûrô“Šçíé‹Ì£Rù ¸O¤ÛXš0¾¹9±¶ ÆžX6¥Æ +{¶Õý2羆ös2oþâu³žœ¨]¨N!’Dà+OÑH½"‡2Ôºê«k†´¨Œ¤Á3¸ÙÓ%Ù'ð’¢hLévÙ׺õV¿¯Ú#€W§ÃU^±•—GéjaÝþ±zÅEêýð³{{í¡üCÇ›G%&¨ Ó£Flw'*;·u»,à®el±Ž"ÜT[Ãx`Wa]ºÙ =óxRþw¿•îÒ·ÿ—Œ¨ØuÅܾõëøªÌxûg'òGÊœWoRc]Umjôìo³$ZUGÝ['‹ÛFì]œøæ&ßQízí5'-üþƒÍ Rbê>(Ï»wP¿Ã^:EÉ×ç~º&¾Ô“• &ìÊω7f’Br‰ÍuåS6?½³#!ÒË¿œJ\·ªWºµ$»­ç°˜Äw#oùeÉSç}ŒWðÀ+˜oEßÁÜ¿mHªs•ó÷«z\™u´Ðoõ¬ú®÷¬aßè ’¬ïìÜ1Vß岬y_uûøäÏ{oœ˜èç4µ÷Õ%ySñäéG¿U õx[DzâçÒÆ.öfتÅû¶ÿ<|rzvU­—8aÅã³–>¿«øk½]”õ}ç6óÞYjKi·Ú±»GÛs¾´7vaÝÖZcÚSšóÖÁ±µŽ[·Ø?:$¹ÊŸÖpbœ¥²¦¶Áã’@ÓòÍÖgŒ(‹Oÿ¼zu\LJUQþ×åé;Á·ñÉêŽ/gšOhùw¥ ~î§Ö%ÍÌÞvüŽ´Y3¿ÄÄßùÓƒ7Œ}ù¶Í+‡÷!HkÂÏkó¾è5;Ǥ{æ“#HÞ#€†œÓfGìˆÒˆ¸äúŠžå¿õbacâßøÍ:C¨ßÔ÷“½¿Ïì›ah\ý‡A" ‰($¢Z‚DQHD5‰($¢þe"êœ>À*ÊO’””–ßòUÝ–iäšBáÀqËj4¥R˜%>•”48vt_eýñÄn،و.+îß¶n5úŽJë;ŠÿµZ‡Ñu gT«1ñæG'±%¯Þs{ñÑ{-ÙVV5lß¡ÃÖ.OÜ<;é!Ö}ÿsìµ °ÑÃ_<ü«¿_DìÏ_^ûÙ£×mñ–eõ_pßÓ$öúk/®ð/ÓõÞTP[šxÿª.G\TIýÆGf$¿°Q<°c:ÛçÓªÜ1éݽ:bý;J7½;á¯ý]Ï´°©ëØoXÓgß½;«÷´Õzðoçul8”s"–ÓÞ~ånúÑåb¶²jOhøµcß=Ï]qrÒŠª¬ãb_ÿµjåÞc—»Öä¦ôgü)ØŸ—\U|oáÁÅ&Ï‹#ýk¯Ü»ÛØqÎkIú•IÍ!a2Á&oübbzÎ<¯øÃΣÓköÞ×ùò¹%9©ê]'}ÃD|ùÒKë¯zøäæ/&'–xí7ô»ñ©G®è½zsÖ–a¬bñÇ×Nºoù§KŸ4w]W‘o÷¯´9®fØ¯Û rYÓ5îí­Çì½b¼?,Y´ZfqÊõø¢'ß{36qìSÛÍH K¿œÕkÄ”¯>\•ôJ¿ñt\ôc{~ÝœÔñÕ/Wõg£Ÿ¿²ŸãÈÒ¾Èê9½ýù[fÌx(µ8eÅ{×ÐŽž©S^°½et””í " ²Ž€]¹Öo^~Ñ”°{Äô›¾~L7õ©~[7À´y¼RÒèøy¯½ðŸמ؞N–t+\Ö;ãÆ/¶þ8K%ÄÁãÉ6õC>}¡íˆ[ªq¾¼ò«›-|}ù«U×Ú§Þÿh_û—Å"æä‰&ù„—س»ýþÿ?ôÝ.?Q‰exÙ5•ëž{èЉ¬ sWmxÓ6mÎó¦_0š€q˜Æj:ÙOYtöŽ˜ô‰=åEÇêÚyœ ¡óÕrٻ˒p½®êÛïÚ`w¹07fV\ÝF¤EFXV<óäRóüZÙRXR—”üZ§?Çî÷ϹJí›Òðb”`©Ä;Ûû<>¿Í×Zïîï?;û9Ës˜”È• ›Õ§ì`YüºRçBý'ñ䔆“¾ã§<6F^B®^ò{eþñqú>3âÖ=œ)ÿ²9³èƒuë~?r§XÝ~Ú®yÅ'±ÔýÙ1¯î:iÙ¿õ¦îW>õÒGSˆˆHÙa1£­^òð*S^m»èÁ÷]ñÎ ?±Õ:e÷Mïé’Ò®õ‘ëæìŽöô|¸Û½ÏãB䇖ïf®¼¢sÚð´Ÿý¿Of[ì“/à•7æ?H$\óódiðüÙSëönŽßsù’õ©ÓÚñ.lØü戉+Ÿý4ã /3åŽìå+ž-»½-eþö¡Ç_8nÞ¿©#ÉhºqsÒÇï7ýzëûš¬ 6÷R‰[ä¾Y9|~ÖÍO ‰}æà«Kž({Û`nûêo뎔šÒÆÖÿ´Î:ù&×–¥ÓžÞÕ¯¿,›2_ÛþñÓKE3D—0¥çƒËg}?磗Þ`®9Q¸¤ìë‹>8˜_;öùË~ÙçÆnšÿý#/]·|Òè1‘?.{iÉk†Ì䊭?OžEtuSÈ™>d’ÝN5P‘b힨!/=·H¨Oxì幯gî‰ø¯ALŒßxÿ€ÛrÝKKŸ|×XìOH§ïÒo'uÐ>»wI}†ùZo±kú­?w«êöÑ¡†ŸïxwÎÈ_¾óÍÇîUMx¯ÿnöݦR*¹Xߦû÷Æžû:¬¸% _ƒ§¹Åÿù–ׇ޻:Ǻ6ýXqç‡<í}äsVÆèìœB pãXå)J‡cñj*­hÇ‹³Êêêô±=f㈑%^U·goÕwŸžÉŽÈäGÜÉWzq <:&Š5_3á¡IìË ÷îrD/½VW¬NʼíÀwl—fLê–ç1~ñ•Ìãî}óÐÃÔ¯[˜ÈÕ¯,Ùu×òjóæµGîœvÏó$öö®—¼#?¬2®v—Üç_µÏá:Y]÷Œ÷òýÖ_“tð¸¡oìÇsc3_3ŒØ•ºãÚâ7YÙÔ÷ðžòä!;ÛŽßà4OüõÅì¤ëxÍÔþ:ê ;”½M ²Õ·÷zwn&éš7‹¾|8~Às†+ŠíŸö.Ýñ°eÒï•+s÷ŽPÖl2eö²ävž=|×É/ù kS&z£™QìãO%û‡Oÿʦ¯™JF9¤.… ¹±¶+ù¡Íµ•–ñ«¯wÖÛË ºîcV‡ç<Î Gö“Ñi?¼ôa¯‡§Ÿø2åí⪣?‰»õs|äïÖïzWn0õË–»á…ѳ´——i“†ÛN&Ãë]kº_Um5¦WÕïê?}ï‘ÂvñÖ¾8vŒÑô]÷?sÛ-Ÿ»f÷œàÚÔë î±V>9ttÜ¢e‰Cc{t™Üí?ví§M?GvÞz÷W=†èê;Ûú†—¼»Ýc¾ûVÕ_;”Iο~Ý«nìê<ö}bȶqÑ™'ªlŸŽ{äøÄ•o袢ž1mèÞ}ÅscjWSμnv½;µïÛ/ew}ƒ°-"®¦ÿÑûüöóH ‹î5¹Ã˜ýö’SoÈÍrvÎ^öâ-Ï>ðî2œÏÙ0áá­½"ÒKÄH7¸©{®gèñííw}Æu¸½ÍÄ]%Dïßè{㣾¯Lû/LºLúìë›f»0ý‰($¢ˆj QHD!Õ $¢ˆºèDÔ¹|€õW4M#×”€›Q¸¶mYP€Oúj4Å€¨AqQ1•ó2xMV’Œâ?Ê„}5.Ê,e¤O€ Ç’·ëò¿p_ ³!ª*nƶJŸõì©Æ{3s×Ç"imÎõÏ4=—COM½áÝúêÞb¾‡ë®ƒ#¥Yº®/U Ø™å¢&O&`r; [FšÛe_±%-Bˆí}{ŒYª'ßô½ùݧ#;G¹K¯ÈÌT•]eëó^›“<û{öí±¥ï’ò@eÅ÷„íªH€Ç¥Õí®šòLöÙå—]Ù0sîÒ'“9Äc~ítâ}9 }%¡èú™ŸÀLÅ‘OUŽ+-tÿ%Œ¨p´íwó£=šì®Ôæ^²U@ b àså¥7ºÐ¯t¹/xjÇê\íg=0Ê®º¢‹¡ ÙY:zÁD±q”›xl1[¬Ô‚Iéi n{Æ ‡kWšs]ñÔá ÏŒtcw³äîÛ7ª*Œ#GÞ ·©3Ï|öZoÉ¢Æ_qß~ò6¾›ÚÅ͹s¡+€HÜs]ß Î8^ñd ?åÜ:ßÌknúPuW_?—M›ëv6Àl¢’O룃>0~+œ7væš()gîý1[u£nЀs¦½þŠ¿ð U$·‘x.Î*\d¼ ŒÉ=XÅ9½©´äIâÕ.?®·€Go%=üwOÖ]¥ºº èštŒæ,Ÿquéóo×·Ý~•4AêÙîéÃ×/ŽÎÞ³ùÆÒ6œTutM‡.jœ:ãéѹ¿<Êv×ëÅÞRëõCºwêÞž}ü–éÒ÷£ ?Ìà³ÒžeLRiùQsž?/±ûø+yÀÓµkTN‘*S»SFÍ™ç¸%t. ³—f,YÁùé##Ú¦¼iÑ0sV]\a§_?ã 1àÇÏF.¯%°ãæ.ÝÓÔ>·~ýêÊȼA‘ï´ªŽá {t´eU¿ûNÞutÛÑ»ÅÀ?¾×·Óe‰£b,5‡Jãy#sïªL\˜~¼ÇWéO(ƒ}ì~à•«ïÀ4µŽ4î¶u5ñÁ‹C¦ˆ°ëÃáÑûËu¼·fÔÔÙsým¹£ºm­µnÆó·ÝÃÜóÜÄ«[”»?½#tbwÎgµ¯±MsÏ×}2ÿÔäqÊc#‰‹}xÐû㦘)w[Ö²n)Oé§¹o<ðñú‡/ë ÀïØv׸?õÄÄdY™çvð;n¼~CRD 01 `t[›yçs5¦N}/ðꇰ£øî.Ÿ~ÛùO·cÍØNv€ÉðÌd‹ÕúIÞMÙ3ïy?½°iÁÇc–}ÂååÜi˜>Y¶“¤@èà;ëi€Û¶<ðõ䯖Ç\}K<0ç€"µûþ8àM%ú'BÿÀRPñù5‹Ÿ ‡M ãæÊ)ê8æãÑÝkün€Ð¦‰Ä”ˆÒ«|bU÷Y«#e{ìýcÓ-¬*HNû'.ðV‚DQ€DT3ˆB" ‰¨f …DT`¨KFDËXI©é…mŒ¥¥…驳ÿ^oƒåK|Ie ©ER@RÁÃÕ1¾ñµLQ" š— ŽW°€ö’ù½­dZ§„–žÜj–2÷ô_ó¯LL%¯ "zYŽ@¢îŽ2õ¹nCöñeƒÀg½­ÿÌgÏ&¼•64¨u3Œ¡îУüüÅD|Æõ ‚àI°F•ð©»‹ª"£lÑÆQ †Å ~÷Xyl¯S*@øÇUì><9¼;®[Ò#zÓ 'û¬¯¬j— @iQåªN]gÅÁlòÌÃï³îµv‹B÷ hÐ#ñùrl5IÜÓc^h(ŠÐ%Û® üÜ7~yÈnUÛE§ IDATÓFWy–&²© 14€ô¨¹@ß;zάò4¦OÍ)vÓ»+¢º6Î.ž¼CUWç:ãR±PЏà{Ñ,}`›WšžZ õo9èÀÛ4¾;°ÍÂ*Õ¢E,Š3°œ¬XÚÆîµ á—Ø{Ö*›ú'ßÚt¨hãHhÜW‹ãák²›e‰Ê=ŒÇD…,ãÖëͱ‡ÊF¶k|Û—VÚWÔ ‹5î³[Âé'†¦|Ót| ;å:'à”ÌvCÒÞ€ÐÚ–·K‡sÈÙù£ ¾åt^Í®ø#Rb@ÄèúÊz%Žj/‘Ôa¢"ó¹ì”ë?8É»›—µ:öÎyØüK{ênKì¯.'`ézð£¢ÿûеdyè*üØØ]vsÿ…§ÖÑÛX°’©1xR—õÓ'¾Ü-³mÈ2hÑDõ­'Suìޏízèñ¯>Á¾ùrÈ2êõëáõëO‹ û©§›þfÄ‹—Ë—‡>öZzS¯–Sù9;§hl9½¤'ŸÄÑd”Õ´¬z½>Pm¬Jw"©8#x€” öR¹Ú~ùÞÁ_u'Ò“Û@‡GRê¾1ë‡êbcîÁh0RðN; HÔI•ê‘ı=Õr+̰ÙW¶¿®ôÇEÅñ¯t;hñ—dc¼ŸÝœ}ÇòþþÞjŒìrâ Þîm".Ã; ™_ö¦g1±mòHÓámB–ÑmRféÍ}Êöw”Ar"X(­M•§Çàã_['§©f! µ3ßÚ‘³”`´Éí?¬ÂnÀˆ 1á<$IöŒ |ƒùÉ!{W›öN•Od{2dà&Ø;!ªèõ®;ï¥h\-F–îpÿ”CåÐÞ° ‹'R`h®“M .Ç¥~ Ò€]ݵCÓS›”Bm$ðÿt@ãj1¡GU¥>E¼\2×TÔ¶±l W§»¿‹©ºPÔõ”ÛqºÝºYX8ÿÂ-m¢¦`\¬®aô@·ÄD½ùþì2H ®I´reUÝúÃp[x¾+3=œë?5q)E4ý×wïp=@h·¦ ­=œ;ˆB" ‰¨– …DQÍ@" ‰¨™ˆjUÂ3$))-ËÎR€Ò[òÓN›ƒîO 1ÐmïíÑ t„f³Ç€¤b*î%XŽƒY" Z`Lœ 4þûµD£‰/I'ÌX m Õü¨Ÿ/È­ïHk±ú™ÍŽE¾ßÇ®v‰>ÄMÄïï¤'¨¨«80Í.·M[Ò¥mJµcRÓÀHu²EySºäéÔpžÑÜc¯¾UQÆë¡x‹w;×Yzvq¥E‡sg68ºöž´£ÀθϽ4 *C”t ý3A;#΃3#–º–‘7µ”ûmíi:N `7Íë ZŒ š6KÔ6¤bŸœáQÕ­mðͧW½-A9º®b s"š/P”¶ÉpŠðúsp<ªéGMÓqž“íL_45¦ÒßÛÅr¸X8;¿`4á`_iÑL'«úcâ@ÀNpã‚ÂÑÁ+M$u¸¤`ŠÄ7†U»•õøèú ¼é˜¯›^÷é~vÓÕtœÆ6_ãËn{¨¿«ï¬`(kàû·Ütâ5×Áþ•Æà]»ŒM±¼ÿ[kâ•‹3"®ÐzÖíéwcÏ€¥íÄ®]Å#ãkûÞõ×ÅËÝ3ttýÏFÌgí\{"‡tŒ‚úä¢#º~™¡f¶cë=ö198 ih×”cßMŸfÄÓ‘ðŸË4CØû.6®amìsa° î­ÕZ34«5dL×3æØÏ§Þ„ÿä«GüvŠØÇq{ÅžÈqAõ¢±lÊ’;›þ^³Zûýßø¦JèÏ16^ˆ{;m§©¥ÓC3Ùª¬szƒÿ'9;§hl|]·…UÑCÄGY€–T…ÇTŒÑ‹!í%*$MI}c81šRÜ:sÙ–6.3f3`v‚y'ûÂ÷ô8ڑΈÕ7;ÊCvrK¦}D›¸ÀÇñ‰ø¡Nú¡³-^a1 âýNÙ5àî}ª„H“ éªÆ]lÍì×ä íUT¿1mÐd“Z kQyDví†vÝFG‡%Å·côÕ‹ÃÙ4çÇs9¢¬’hkÔßÅjbþ pN 2c©žÌ)£û”ûO´§GÅ…KÅM°˜×wOœa05möB’² õ¥ò'¼’¨>Õæ”Ëqt¬º"N ™G¦GM´U”AÉpæÄj§Œ¯Ó´lÎsoÊ)s~$™Þjû£4£HDQHD5‰¨ÓDQHD!Õ´Á¥-¢Îé+„.úmÌÜ1Œ^´aàßìLa0¡ûšïxb¬q i˜ÞÈã´ HDàA¥,R$-`Œ 'Z ©FƒÈ‘me (`¥+ÛS¯L^r]¾ŸŒlqFšˆik,LïPÝ ‡6wà¼÷ª9*p9):áÐÈáRœgàJl;P´|AFjn>4Ö.ðŒÞÌn/NŽÉ ¾vásC–äÈ{t×–•¦@ø†fþï—Býc’´uO(M,ÉÄŒ²–ÑîüÃ>­BU›—œø§ÇþëF4gå´&®]ë«Y•³Ä@ÂiQÏ3¼*PA %Q !¨˜  dÐÂÄÅyÅ6_¤›°JG?}Ë´•_Ù^ÕÕÞâ(É_ÏïÒ4šÝ^Ôsl»Ý?¹ì)K­%åP¼pò)eGQ°Mb²éd™ s]SCãäë;©¯ûëb®šÙìÖGÕØÛ6d·Ý;g«:%\J\³X„úò?ªíôw±öë@|½Ì4|xS#uÇÜ´¶mþ ÇŠfoù?¼¸8+§)lrVçÜ}Iþ«q´¤2Š‘c(VX Q&'CáÄ8›Ñ‰™òTœT´@A—ñ¬ôi; ߸­s¡ZüE‡2ÒJLë`a qµ˜ß ýlº'©–ƒX€\rÒíï:qY¬?uëhOúP´DP·Z8h\-úˆ§0£½§/:ÓŒ± uwj+¬*ÆÄDÞ©QS MV‹ÏÍg4ÚòT’F`<4Y-&Äï2ÊdæN@«ªÝè,ˆ>ÇãŸ{ˆ:=HDÝøHD!õÏ€DÔQ§‰¨³áBQç8ÖÀ…6,üëf§K/ÇÔÉ:zWâtì0fNY %‚áD‘ ì_–e†¢E AÂÉãí0VUܝЅ×Fr«¯éœ‘Ã%¶Ô^ Ÿd‹ãw°¼·Ã§h¯(s·¸Ø=:eŠªv 4ˆÖ’ušYAêÕS÷¸"~pFAŒvÄ<ß üØÕ"M6é1GÔˆ?¨VüšHÉ÷ËÅ]¸¤8+¿ŽVWuÜ·G¯ùñHˆ­).("Ò^4.*¤  TPô“ãh®“;zHsDãPÖÏ–Ü7ù–“ãNñ†‘‡œR »Ã+·%»jg¯`(˜OM¹eçRüƒ—B÷gC—”¸ëÇöëܤWÊ34›í £ö·Ÿ°Y­M£±—OzêS×°ÎØç,ayÔ¨f6쩇Ï4 ‚ø9 §¨ªÎÊÞ=Ó#fÆÌ@)ªª*Éèd!¨½TI!h•¤XIìnH4Å4h,NVYvJVTŒ”I–U‚ÚK²ƒ0©$ÍÈR@{ÙÌj=Ž츉ÁíñLÀ‰ ýÜžUNøÝÍX¼Ð^bá]-fý"þµ …@´‰(¢HD!.:.ÜÝl"€Îç?)ÅñoŒÊ †‘2£ãd©13œf h™¤9I¦‚Í@k ,àDêÜÍÍ Mæÿu;âŸFÀ†¯áâ#üxc¹‚¡$âE0-šNGŠ"ÎË2ÜoI·G*uŠãYÓéÇ=kÔØXª] ;¶ÿ_7E þQjõÞ.%'ØÆÕ‚–$DR¯Wƒ2…ÅU‰`´&áDƒ¦I´†Óñ&¾ytAš~ÇG þ$¢ˆ– …@4‰(ÄEǼK…¿õ˜¢p‰dÇq‰Ò šÜ‚‹cFŠ–)'Ká—a f‰«äEúܜ߿ò\ @ü)ÆÄ[Ý\] ±J02Na F‰ý¸ÿž={ÎÝàÄÁHª#Ùg‘‹õ¼ˆRЬ¸HêXp¸ÄœQHN ïkpÊ^:Ù( çê»úÊ&›áˆó QDKˆB šDâ¢ãBy€Õ2¥œ¬a¸‹Vð|!¤½d‚ E†q>¡)MˤŽSäp…·Hš£\’ô×5;ˆ œ–~!á´ “©Š4ŽÐ´—DÐ #úI³1ІÔëqI 3…«ØÖ‘&W­eâb¦¥SP’&ª‚¹½‡ k/E# ‘`TpÛ¹&D eBÇjáÔ ÑMÅ™´™qуDÑ$¢ˆf …¸¸P`µL)'ª r`ÖNÈRp’Š‚c„H3. ,a¡(•fxM ¿}ëh£WäÓVËA .&Zú…€1‚Ñê#%&¨«d‚Ó‰>Âf X(“A“xQäqC¨Z8i»ÅW‹µkw§@üó´t FRIN¦V )UÖp’'YÔUzšáUZ"ô:k/'8i»I;Ól Ä QDKˆB šDâàÂÍ%©˜‡$ æÜ.*”e’ $šQX2˜ZÔ@™)J¥tb ÆgAÔM¡žÃ]¾Äÿ §6”9ÌÝ™¤qIc%?cD2êiY %ž0BÝl¤«£¢,ÿƒI#çZRí’O'µë^ÌJ)²FP<©32LÀ¢×±"AŠkÀÃ…gì’Ô 3› Tòq ‚DÑ$¢ˆf …¸è¸p`É Æë¸È6Åvª±,ˆJâ” cTV ²lMj´N"Àꨪ£N£pÛiE .r$œ&xšª-·ƒQ™ 1XÙgˆ ~¡,Fæi‘#-a¿ð#­bƒ.ÞxšAˆ‹ZQX\òi$s0 ¥*Nú)ÆJ_ƒ2Q,OQ"¡c‰ðª¡¨ƒÎŠ_¸ë ÑjˆB Z‚DÑ $¢î5'©¸HxÍm*¤,ŠL”ÄPª æÕ³všš–<\„Ä# ´Æ2ÑÿƒI#ç‘`tõ&³³OJXŠÂÐË>³=ø-Eg×12§“9ÆNß Z#¬²Ó‚êˆK ZRT«äQÒã‚”*+8í§) üBb$YŽ&Rg Â/ÎGîÔÓsþçŒ@œkˆB Z‚DÑ $¢J¬ÓäYT0 ÷cJ×8U¥pJb(¡ãmh:bZ ïé%ÉD*¾æŽ@œ+NãM8M1 ',ÃS…¢1I5(>ƒ-'a#P8Y&Ɉ&Yxã"LY& 7-‚–ÅBTS± ”€JS’òÓËk«éhšÇž` d¸€N$Aº „EEÚ qуDÑ$¢ˆf …¸¸P`µL)§¨¸I®5D`&¥sÀ®©4Eq  MEcдÊêì¡î´.]Ȥ€ ÄEMK¿ Ú#ë:7”˜: ØUŠÆ$Í úØÈ`²£E'+œ‚´=¬½Èh»AõQñ&@ .fZ:¥*¸)¦#úš”€YÁiC²  €Ž¦8ŒàIÆL†³ZiOEÐj¸ÈA" h QD3ˆB\\À¯*„«f4«Ò5`Ñ4Š$E‚éhբÀ¦T.\(D§±°xâÿ`ÒÄ9F&hB$Š¥–.ÁÝï@Ó +ÕÇF7úšL «r¬â7YÃyy£â¬,pÆ´ûq©A+2NÊ¢˜xëÿ·w7±qœ÷Çÿ³ó¶/¤$‹vèÚÚØ*)Æpè‘BAÅ”/9I@Qa¦.ŽtitE€ „èE¼I‚!Ô>–Ѓsˆx‹0´È¥= –¤*Ç{ÚD™Ë·ÝyzXrw^–Å!µÿY~?'i<;|öyôóüùì3ÏnÖ^–iÚÞR!WÚL€ïËykÅuÎ/$CÅ\½`(è½;F$QD1QÈ-+°’MÛ>üõëÆ ‚Í*Êø®»^´Ä ^0""âË¡À’¼kÜFg³†ƒÁˆ/2¼Úå¢@Æ5o©n¾Ÿ«¯¶k/ßúëzI–¥ /¬`Ùˆ5p¨s›±‡‡<<|0Xõep€Oч(¢€$Š( †" ™£wÒÔjÚ¹¡'-1fc·Ñœx¶¿> bÌÆ=Ƙ|AÄsÄó_n¿Ð þÆÛ1‡»\ȸ¦]–ê%³d†6>0·(ñù…`¹Ø¬çwö=ò£CŽ4ÌÛ7 ß¸9‘ú‹‹­—Lë·rñrÒ”ü·RÚ<’7f¹ uÏÉ{Í»A×AÇô ÑÀ£ˆ’(¢€Š(dŽ–XÉ-å §ôò7_7 í ä¬‚ã7=‘Ui$â{"¾-~¨Ò2fH¤i ’ ó’¹hÚþ ýããÁ#Ê÷ókß|kuØ…‚,[Æäç;w•|^ø¦[d_2NÐø&÷rùë†lÞ-|ËZ·ü5Oò«›GDÖ<©çí‚ßÉÄ1M‘†Ú ™G$QD1QèZ&°ºì?ÚpЇ×ëæ{íÚË‘¼xÍåÀ ¿pÅH1'ùHíUxòdA$/@ÆuÉ…ã~ò¿KCÚ+—÷½õ¥º]j'ÅäóEYÎI;6øÃ'óóÏ©ÝÀžé²ÿ¨iR0fáÉnèQ@EC…>°·X•é‰+Ÿµþxòê½KãÏòÚRÑY-˜Fîµö7WÈùf9°ÜÐi+U´m„§ƒàÅ­öVš\4{/Íÿ_îhgw«/¬×—Cµ—¸nN‚¢ÔŸ:ûŠeCC¨”&‡MñOÅ‘Fç³ñ¼ã,;~q%ßâò«A½hl#¡»Å‹{7@/Š( ‰" ˆ¡ˆÂ¾²§XµÚ£‘s·®Ÿ)ïèÕkVé°åGÛ»˜sƒ•f¤öZ ä-kRL^P)U.Ö=ïÅå?;ûwí#vÁwËËNñPè´e«àÊ:ËÝ‘©BáÉÚŸK‡ätª(?g¯¸nq¥)¡íJ «Áãƒvq-ucç„" H¢ˆb(¢°¿ìåÿšk•ß=à)vj¯|ÎYqÒj#|Z~-XÉKžÍQ@EC…}f/W`Õ¾|8òè㉉+Ò}=cr¹°ÆkǾ—ûC©ùF;=®[[Ö‘67k•(!CÒ墜s^0)þàÕv.ì’—o.¯£µ—å7,‡ßH éBá4^ûË÷r¯”š²™ŠBÎ]víR#Z{­yîÈŠ( ‰" ˆ¡ˆÂ>³—Xã—î•kµr¹,R»}~º2 Tx¹°VÌêVãˆ1GÚÇ}ÍúŠ^7Öj/dJº\,7ýCòMðjgûoÐÍ7WÖüáðÉk9/'µ²!](üºõÍ!9úT°àx«Æ>ÐX ¯2Î7„Ú YB$QD1QØgvùÂÊôĆ銈H¹³žñQ­öL—ªKó€Htj/ÛôrÒ¼ðiÍ@Ö•x5 Ènæ¢éÊ7&´PØð}³ÒÌG><\Ëyk9?ñj@‹] …_—¿#¡D]Û^ñr…fdoQ·xëÔ^P" H¢ˆb(¢°Ÿíò ¬ñK÷î]ÚüKezâó·×1>ë³¹“tß×Mgû8Ç9h[b¢Ÿˆ4Ä^—æÞ~™"ÎnæâVÝß[õR§Òò󎬥ȼMËmò+ ÛÅP¬M6ÄuêºÊsœ5Û*­Dj/¯!Þú^õ. EDÄPDa?ÛÛG¯~>11!"2rîÖõgúJOËúÖ˜ÈíĶz–äìÈ®ŠA¡ÔÈ1ŒìH™‹¥%SŒä"_ò}³jD><´-Gr_Ȉt¡øÖ²ŠÑ]E=Û^õ¬CAd³ê\Pð|¥²ƒ" H¢ˆb(¢°ÏìíÇ“AWD‚Híˆ4Ù¾}ªK..]ZûùÏÃçx%×3kö`¤ö ,ÛX|N‚>” Å/VVÞ][ Ÿã{²îJQ"«ßs¸MVš ?QDIQ@ Eú€– ¬nƒ`0üw×”KìÜ¡ðÁW‚#yëÏÏ·a@ï ƒÑ\” e+ùݸ–H9ø_â‰}b;¹0žg[ÁÐ÷ ÍçÕ* ‡¶ WÄX’/ÂÝûEDÄPD¡dëB±Œq{Ý@Ïcd`àégû†%â¾ïˆ¡ˆ¢(¢€Š(h–½ ,¯×m”±,ãò; ÐÁ­è†d Q@· h–¹ ,á$P{QDè†d Q@‘€ZVµZëu3â¶µí"°gˆëA.ÐC„H"@¹bôL¹˜››©V«&k~ùË_¦9!å˹þ>¿¾Z½í7åÃJóöôúj)ï7®ßß×WKy¿qýþ¾¾Z”{÷ò½¾¾òæmç”÷×ïïë'U«ÕÅÅÅÅÅÅ,>B€}„ ,è–ÅG{NùBPš—’þ*¤¼Óh^Jú[¨“ò~£y)éo¡NÊû楤¿… )ï4š—’þꤼßh^JÑu¨—²Ñ #;F(ÒR6 aäbÇÈEZÊ4Œ\ì¹HEÙh†Š#i)Ð0r±c»—‹jµj°]_}25õÉW½nE÷uòäÉ“¿ºßùëÔ'_óÕ'Sƒ=kž®n uRûÚ:P3]£B(vŽP¤¦k@CÈÅΑ‹Ôt h¹Ø9r‘Ž®Ñ !;G(RÓ5 !äbçÒç¢Z­......²ëYÔ*¿{x´\îu3âj·Ïþã{WOvÔüd¼,RÿÉÈ£Z­‡m“nÍÓÕå3×ï]oýq£¿tu nÊFs¡H…P¤¥l@7‘‹TÈEZÊt¹H…\¤¢l47ŠTEZÊt¹HesÁÖ³¨}ùpäÑÇzâm(Ÿ¹¾ñÏaCíËÍ®åòч_ö8NÝš§±E¤òëþìLYYê¦t4 Ån!;¢t@ÉÅn!;¢t@ÉÅn!ÏNéhŠÝB(vD递‹Ý’6ÎÞ5­_ºW®ÕÊå²HíöùéÊxôŸ ¶Gi7V¦'>~ýÖumÉ¥£™5J»‘Pì”ÒÍ¥ÝH.vJé€fÒn$;¢t4³Fi7ŠR: Y£´w!¬ÀzFåÎB¼ž¯ÜRùõÍUxµÚ£‘×Õ,ìÐÖµÛç'>~ýÖõ3­féï@U´fWúÇT[7Š”´ hWú‡U[7’‹”´ hWú‡U[7’‹4´fWúÇT[7Š”´ hWú‡U[7îR.˜ÀzѯPôPiL¹|ôáï*5uϾnÐÖµÛçßþòg÷6³$ê;Pm£¹åcª­ EJÚt+ʇU[7’‹”´ èV”«¶n$ihÍ­(SmÝH(RÒ6 [Q>¬Úºq÷rÁ#„ÏbüÒÕÏ'&&DDFÎi^:~éêçoO|(ròê=uÍTÖ•_øPäÊÄg­¿Žœ»uýŒîTEÙhnM÷˜*ëFB‘–²ÝšîaUÖä"-eº5Ýê¬ÉE*ÊFskºÇTY7Š´” èÖt«²nÜÅ\XÕjulll ìÌÜÜÜðð°ð!”c ª1Õ˜À€jL`@5&° Xý¢vûüÄÄÄÄtED¤2=111qþv­×­z‹\1„H"@¹b…ö»ï¾;44Ôëf µƒÇäW~óßÿõŸõï_ù÷ÿ‘“WïLïu«€Þ"@ ¡’ÈD.€BÑ;?«Z­Žõº=صÛçßþ𡈈œ¼zïÒx›¨@.€B$‘ ‰\1„¢7æææ†‡‡…GûKùÌÏNŽˆˆŒœû'²´ †PIäH"@ ¡è1&°úIeúÊgED~øvëÑ\äˆ!@¹’ÈC(zŒ ¬þQ™¾ò™Èȹ[·Îˆ|v…@äH @¹’ÈC(zŽ ¬~Ñ ÓÉ«×Ï”Ëg.(@„\ „H"@¹b…lâØÄÙÀTc ª1Õ˜À€jL`@5&° XPÍyê—/_~íÀ~óÁlç´§O`mÿZÀ6mÕ@5&° XP ,¨Æè 3'NÌ,då²xL`€ Z˜9a…˜ùÃsüÑ­)­ÝšÛê¼—ÍË%ˆÈìTâÀ~ÁȦñkó¦íþ…מ{F/Ü¿a4íUfÎÞ9Ýz'w_<;³ÐåˆÈì”uJîn¼ÕÔ? k˜À}%´6ëÄÌBkÔÔÔæ±©Ùè9íµT[­:v±»üÙ‹•ÊÅc–uâ½÷Nœ˜Y]jvãe­Ÿ²Åe·^AuìÍñ-ŽÌ~úàÚüÉ®ïv‹ŸÞu@F1²©rñXè ÂöÍè…û«²î¿ø¯³""•o~Ô:òÎÍSS³ 3g/¿»qÊó2;uì‹÷Z/™?}çìÌ‚ÌNÛ};é_E˜À}daæÄ±Í ¤â‹§Ú&ocÌO?m¯gŠl§µ{Ó=Û¹ìÂÌûZ“e£îÏ_{ðþÌ$Ž„×n¾uz¼5-÷Ýï ˘Àýes½ÕÂoïTbÿiöÓ›ã§ß’™©™‘ÉfþÚøƒ9;Þ^çÔ2:v¼rç· [\DD*Ûx(o4qYé¶Vø´…ßÞ©ûûÄ‘ÑÉŸ¶žJìyÚO_ˆ¾G6ÁÇȦðXÖ‰™?ˆˆÈè…÷Žo?ûÅññØ™§äîý ££cr1¼ÅÔäùkN…·Óš¼qwã*‹´^xï›§,ëÄ¿ýé;Û—¼ìÓN;vçôüÉ.GdòÆüé;ÇÂGž"þŸúÕ¬jµ:66ög\¾|ùƒ>xn ØM 3'ÎÊGñ§Ð{Otš››V`@9§× ØK£îßïu+° Ú¶V`]¾|y¯Ûtõô ,vp@ñ!Tc ª1Õ˜À€jL`@5&° XP ,¨ÆTc ª9"277×ëfÝY‹‹‹½n°¥ÿ{I±YÙZëIEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/qwt/tests/data/logcurve.png0000666000000000000000000003646600000000000015703 0ustar00‰PNG  IHDRª¢Pœ pHYsÄÄ•+ IDATxœíÝ[Œ,Û}ß÷_UϾœsxxIR$»LS¤mÚRdÆŠ"ÕŽÉ‚qb¿4Ê—‡q'ѽû)@rƒ%îéÎKI z*tŒFüàÀ±á)9vb$J²hÉ«Iñ"’ûðœ}öÙ{OW塪¯sí®ZUkÍþ~€ÁôÜzjzz­Z¿µþ«:xòäI!¸FØõpÁÀNº>WÉ4L”IŠÇsãöÀd©Ò4SfLõ™HQ+IÅQûÇs½ÍãuA)Ž%I,ç»e&i”JÉtª¤ñ£ûç쥌Q–žêìÑ´æ19ô÷e &™¤XãùX±I5¥2«›ú=uî×dšœN”UÝG5µñ ÙúÛüýJ¦š6ߨ§°âàRÙd¤Ñ$Ý ’dd²T“ÑH©¹òGÝcŒ²tR .^e™ÒÔHQì`ð³Å(=i’½Úÿù.dé&4H’¢~gÇbUÕžLš^>qÜ!¬8¸(›T­Hñø±ÆÕ(Ód©N'©ŒŒÒÓTñ4qr6ØdN2“ê4_ÙYÁÕÀ&ŠYyÁ-E‰¦ó¤æ]Üõ™ø¨ÌD¦ æñþ[ñª#8w…I59M73|QYR”ìM-›t¢Ó4“QY:ðøÑ™FÛ%2JÓrÞ,J6¡¡¼ËD“L§¦¼ïò+W”oì—R¬¿/R’ô•¥™Œbý»_Îô¿ÿêþàÂ(­V5¶ïsûØ¥HqòXã[œ¤£x¬ÇÉH£Ô”ƒçdSÎpí}®K "%ã¸üÙòÓøñX±¶ó(ÖxºW&qËÿÉÆÖc™Œ¥l5c)J=NbE×”Ëd“&ÙU5£¬:~´÷µóòÿÝx:¾fåÂ(›œ®gú£8Ñãñ^мá÷^ö÷”¥VFÚ.KÙþ?í”`mžG«ûìýÜaÿŸCþ¾Ý¯_üžíÿãTÑÙ©Òk«çiߺLêØ6³u{e@·9îÝÇݤ# ÒýÿÍUÏ×ËÚþMå¾ÛöI·|ŒLV=O6%›Û*’?Š¥,“É2™$"˜ã΢T ¸ ²‰£t·,ÀdJ'»%å +[—ë˜lR…†ÝŸ[ VãKPQ2Õt\gCLÊ_éÏþqõk7ǵ9†XâÕŸ8Ø9vÉ(["o¶™e_Èl $owŸFédëñ5™&§#F{ŸÛ~,où?¹Ên™‡‘I'뀗Tƒšìlû—©üðòÿÛæïŽv+F:ÎÝÿ]ÿšç@¶ÿÜËÒÝçÚ-~oühÿ¹± ?›¿WÒ¬Ô·~^ÖýÿÜð÷íý²ïÙþÞôšûÚo·2™&éÍE1uÛÌÍ÷ýqßäâÿWW´ýÛ?–‡ºù1Ê4M.”l–Ç´õ©~ŒÑ¢öQî"8ÞÛ°ÆcMçsÍçÓõŒY6YÕÝVõíÛß7_³A¶¯ý‰éÆT¿ú8Q?ªf³õ n=X-U9NŠ5žÎ5ŸÏ5¯Ê¤n]WEÚ©°>ô>WǼ^þ0›Ï­ÄìlýXßîrÝñ&Õqm~NYªr‹B‚Ö¿oëöUƒçõ€fûÿzÄqnÿïnuüó­ã?ðñYÿÿWǾ }’´¨>X¨þþLïî,w<žk¾š5oìÿsùßw¶÷Üš&ñÞ÷\v_[›··îëB»ßbc{mæ&Ww¤dº™é’éåÇ|›¶ècyˆÛ^‡£òP27Ǹ~¾Ü¤ÑÿÏ%ŸbçsÍ牴H5™”+7ßWtño¸âXol·6ÚÌ!Ç}»{¸¹íøXä6Ѻ½”%T£Iª,z\M¼\ÖÖª6 ÜQÀwë“ß¾ÍÌò˜­ïÛ[I¸0K»¾cK3gÑ…‹«ì”,\Rª`š8ï•4rŸW¹íÿäJûÑþêϦ© ûm[Çyñw”~ïj?Fv–­ÃQWVc´È6ë[ÿíµÿ?7)KYƒ‘&“t«¼êWë•í¶:‚cžß&ÕhP  wÑöÜÔö},÷Üî1Š5ž®RyU¹t2Òh0Ø+ù²¸B 8„ÍÑ€ïú‘"e—œà7ÿ~m}_ùùu9ËþÀ$ŠG©Œ)gÿ’ý³a6)_àq¢¸©3eœ(‰2¥&SšªÜ¸½žýÝ>¶DÓc¯ä´œV“–×Ýçµc”k ·ýŸ\iµ²pñçV¢8V”™ìLY¦ÝÒžëT*:è8Y<>ë¿s‘*-?£8ŽUW±Yì•¶4ûû’¥›«’%‰’¸¯h‘–s÷Kæn}¬7´Û«Ôi3m¸©í7ùX^å¦Ç(J4ž&åe™ÎÎ2e™‘IO•Æ«,J”ðj`ÅðÝúäYÖm¯7‘®ë˜«Ù»í%÷Õf@“­¯ ´u‡ëÙl“ž^ºÔ˜L“Óì FvvÝý^ûGT¿sUª°»Áw]ÓoÒõfL“Mª™Ñ+^ômËöFÊÕ ¤î}^ÿçÜòrl²Ùm.û¹(Qo~Çå+—ÍP7pœG9ä÷®Ê²Œ)fÕÇë™j³_Úrµõ*‚å¿{=“õõ(‰ERzlmЭÛíÞóüŽ’jÅn½¿]×·ýãËÛõI·zŒ¶>NU¾äøÚ’lhUp+€ÊËH^T^ư¬}L²r5`ïãñ것åÕx²Ôì|_•'íýû›òJ&ÙdtÉ¬7Ç®®a®Kÿm­g–Ëv7øF‰’8Uù'îÏe+W=^Š=^íÐ<ð>sËÿÉ•—•Vu×»‡¿{\«K@–_¼áŠBÕtwæú¶Ï¦ò{ËdºY (Ÿwñ#ÅÊn1Ðß·ry»½ù l>¿›u]Û?î±¼eŸt›Çh{Ed4¨V½Ö¾9ÖK/>Ü=¬8wA<¾x‰Ô(V2žî\ï}4¢õ·Œ5M.Ÿ‹Ç—]v5R'ï rãñtçÚ÷QTÎÊdë$|Ù ”Åãòª7[¿Eñm_X*Š'ã åµîó&·üŸ\ýãÛéǵUžs󋺭4{›7kçÑø½ÛÛfeak€vC™ÒöFf©_‹w<Þig»¯ñqxIË~»Uߪ}Y}~7麶äcyÛ>éæÇ¨ õ{©<Š÷Ê›.»øpOž<)º>mؼ(R9hŠ«ËV×,w½ú•põ‹»]êڋ˾½ü_ßýWòÚEÛ«‚R%à•Q–sd™.]¾¿yÆÎX†JœÜ|]mo¨æÕmæ¬ögl^œ¸«(U^!ñxªq|ñE²œ,_ÀíDå~Û}oµ¡zë·Ô´jO‡\Ù ð¥Jnä}©Òƒ_|PÞ´ó¾x»Pðà\S T¾_Ý~M*^ROå[¨ÛÅk…”«|tN¤â¤ØÜ~P”ßOÒýêkÛ·T·ïW÷ØTHz./éÅæ½^HZJÁó@:—ôR Îéey[Eõµ¥ÖoA^}ïRÒ}IOU¶ƒ¼úZu»x­Pð~Pþî¢úžbëí¡¤¯8Ü·ªvèò·U[ ¥",vÚgñ‘BÁ‹`óùmÚí©Ð^[¼/é^uûaùýÅýbÓ>ï‹5W´ã…¼vÚêª-ËM» Î7íUç[_;¯ÞîIÁÓ­v›kÝv‹“BÁ³`·Mæ[·?"é½Ë¯øHÕ¦¥M[ÔÖû×Ê¿aÝ«·"(¤Jz¦ çÒ"Øj§÷¶Î£÷´Û.C©¸Wl>¿ºý`ëœ Øö²j£Õùsû\œWmîùV­Þ‚ó |ž õù3È«ï_O‹ª-¯ÚãÖ[ñ‘BÁ»U»•vß_s.•$½)é}íŽoWmó#…‚ƒKÏ¥êUcÙB›6z"½òûŠ× Apq|[Ýî(8dš Îôh~ü%ïf³™†Ãaù’.>èÏ¥àƒàòô5)|?¼Ðù®oL ¾ì>1ªÛÅg …¿–ù‹­ÁXu»x«P°Ê' ªÊI¤óå\½ßî©xXH¯KÅâ¼ýšT¼Q~_ñz!½Q¾/^Ûºývõõë7½YÞõ\ Þ Ê·÷éiyÒ>Ø»KÁ‚ò¤ÿÊÆþ< ”:Wï×{Ò‡Õ@ÿýª“¸W ˆ«÷º/-ÿäRáo‡»'îÕÉùãEÙÑõ6oEX¬ãÅ;…‚'[÷›ÎécÚü¯:¬ê­( ëÇ®BEÙf·ƒÆöÛª-æR˜‡;í³ø‘BÁ7ƒ‹òRÒG¥à»»mq58 ÎåQ®ð7Âõ‰a}‚¥óõ\½ßè•éCIµ¾]<,TüHQþþת¶úÚ¦ýæïä ”mòªM¾QÞ.Þ,¤TmnZJÁûUû|os;x¿ìóƒTm´jú <¯¯ aÙV?ÔîûgRñÉBá? ×aaVHËŸ^*üõpÓ{Åî`úÊ6u²õµêÄž÷sß .Lza¡àê9½Ý&·…nh—«¯­Î“Ú¼/‚¢|Ví±z ‹PÅÇ ß.œKƒb«î‡¢U»ü|®ðÿ ËAÚêóÕíüS¹z_ï•ßÃêñÛz¿ücK…ß7çЇ›öY|¦žoOß(vo¯ÚëG«sê›´Q—­Î£úaÙƒVíòý²=®në\ ß ¥g›¶< ÖçŸÝ:Ÿ¾Ø:>—–_^*ü­p}þÜ>—'…Š~¡àûÁÎDòjb9ÿ\®ð[áæü¹7¹UÜ«éáÅ·âA9!v!¬ßp.•ª¯¯&üöǺ/¥à{Á¥çR-%½¦2°¬Úèj¢bYö3áo…Æ·«Û‡ÕUCb=jàÞ>üO¯‹c[nf™ÖIõéÖÀðÃ`ýäÖó½Aå Ÿ…åíŸ(þz¸{b{¯ìd—?¾Tðƒ@ÅÛ…Š·Ê±~{«Pþ£y9€ù‘BÅ' åŸÈU|¢¸ëMí¾(øn ð{ayûÕÛÖíâÍB½¯öÊî‡U''©x³ÐòËËòÄzÙ ìõòR¼](ÿt¾êõêøÑªÚÌn¿çXÏjPóa°d;áìò³ Þ6' ­døÝPáïUíòiÕ&ŸV·_”wð¬|~-Öïõ–´ü£KÏ/”,WññbóVµÕâu4·¼”uõ~?,Oš…þnX~ýݪmV·‹“Bá1[3ùå Þ+C‚^/¿¦OJù빊· -ÃeÙV«€¹~¿Än…Ô´=Ð[½?¯Ž«âÖ@± …–çÓïIáÓpgÂF'Rø°ˆ¾_ö׫°¿üÙ¥Âo„åùóc»çÓüíª¾SµÑwh£·öB ¿*ønÕ¿½u.}(|®?Ös)øÎfÒ­x³ w•–j©àU»üH5±ZÝÎßʵüØòB\üÆf¥kDTmôêñ9ö´<ì0JGåJƒgíþê.ô6OZ©*¥hÚ²JÜOª·w·nW÷~·§ðë¡‚?¨Nªß+OªÅ…Îÿµóò$ú™BùgråŸÎU|¶ØyWï M¨à_åìáÓ@áײsûNÙ±…ß U¼UhùÅe9»ðñêdò±r€—>Wñ±ræY¯kg€È€Á«Y£× ;íS*W”¶eðÃ@z· ýÁ7ËÚûzOÁ?©Âè÷ËþÓ°œuúÑBù'sŸ*T|ªPþ©\ùçrŸ.gºòÏÞá6úAPüÂo… ~ëý·Ë÷ÁÓj9þÅú-ÿx99’>×ò'–å„Ê[UÛ¬nëmVl½± eµtUøß«ÂÅ÷«óç¶Î¥‹@'_;Qøjðûå„’r­ƒÄò§–åŒíg«óçgsåŸÉUô‹»û\ËË~£j§Õm=—z¿Ù+«ï–“¤ù;¹ŠwŠrðÿ~°9—þáB/ß~¹ùøí*È¿Y…z8¥åà)™Ž%eº)6Ìf³6È=mÒøÅ Þ-;Æð¡‚o ¿ª÷»=ÿ0Pøû¡‚oeùÕ' -¿°TþÅ\ùÉ•1×ò KïøÑ {¿ÑSøk¡z_í)ü½Páï„ M¹t—G¹Š?T(ïçZþøRË?½ÔËw^ªød5H{'g¯ ê µ¬(x(øVPV¾]…Ùo‡êýÓžzÿoõ|þVXˆÏåÊÿP®ü'r-?¿ÔòË˲Ìʽ_ë)üg¡Â¯Wíóë¡zÿ¼'½'å\Áûò-ÃÒò'—*þ­2@Ÿ.ß3[ˆºV%†’¤/Üþ炃Mx7PøÏËsø÷CÝûÆ=…ß,ÔùÏ¥“²Ä*ÿcùú}þ9?‚ð@½¯õþF¨Þ×z žêýJOá·Ã2 }¶ Hùgs-¿¸Tñ¹B/þò‹2T½S­´âNp¶Ða8^ûu‚E}«ÁLþ‡¯é¸–RøÛ¡z¿SžØ{¿ÒÓ½_¾§Þïô´ü“K¯:ÿ¹sÿܹò/vßöþqO'ÿøDáWË Ðûj¯ì ÿ¥ræñÅ£eçåG ä€6o*¾P(ÿ mô÷Ê’©ð_”e9þÇêýj¹ocù奖ÿr$\«ÇÉ?:Q/+ß¿üÊKé¡”ÿX^†÷稜Ÿ_ªømn+*¢­‰»Ÿ¿üû‚'Ay.ýÍžÂß õàξ çæ\Å'[:éÒýÿõ¾îÿ/÷ËÑÛ…–z©ÿñ -bÉ•sp·õÊwþc›6úü¯?—T–ô~µ\X…‰óŸ9ׇÿŇ­ýà{þ—uòN|+Ðòg—:ÿ™s=ÿÏŸëéÏ”z¿ÕSøµP÷~éž^ÿK¯ëåW^êüß>×˯¼lï<*éäïœèÞߺ§{ëž–?»Ô‹ä…Îÿ̹–_Z–ÔDp@•^þù—zùçË’ð›¡NþÞ‰îýŸ÷ôÚõšžþͧZþ©å wr¼Þ¯õÊÀðK÷õ⯾гÿù™–ÂÞï|³*!xùç6³˜'ÿDoü¥7tþgÏõì¿yÖÊq¼þ¾®åŸXêé/=½|xU=”–?¹Ôò'—z™”íôÞÿqO'ûDÿë‡Ê£\ÏGÏõòß±³qïoß[‡…óŸ;×Ë¿ðRþ·r58\‰à€ÆäŸÉõ⯼Ћ¿òBÿ³‡:9;±NþΉþ‡Ò‡Ò‹¿úBïþàÝÆpWÿëçz§ûÿÓ}½õö[zö‹Ïôâ?za÷—.¥óóœÐÜÂ˯¼Ô˯¼Ô3=Sïÿééõ¿özY&Ôð*áý¿y_÷ù¾žÿÏõÁ÷Ay9jàqÄ×x x §òúÀMßíÿÝÓƒÙ=û…gzÿ¼¯ÿ¾åpG½øk/ôî“wÕûzOoþÔ›:ù»ç‘ÎÅ4p„åO-UÜ/Ê×·hXï«=½¼ÐË¿ø’Ѐ[£úvœ¨,4,ünù‚CêDåÙ/>ÓÓô©ü÷ôàoXº†ðR\ 8–¥ó)Ç 8ÀK+ @€æå_Èõô{ª‡¿ð°|uцyP¾š*€Ãq>…C°¢«—Bo`­ 3›ÀñpÁv°´ x§è –~À)œOá‚ì`†ðípŽ­|Jq ‚ì°4 –Š`¥J€{ôpÁvØZZ¥£ì±Ôn™Ùj T !8À 6Gbfpí!8ÀJïXÛM»ŽÇŠBp€”*þafp›£á‚ì°µ9šŽ°‡•BÀ=z8„à;€þas4àJ•à‚¬à…¤1³ ¸‡v ‡x“5g³Yׇ€CÐÑþa¥pçS8Ä›®|8î|LpÀ;¬î±Õ.yAUƒR%ØA­4àf6÷Ð.á‚ì`Åð­ÀÏÌ&p<‚Bp€”<b€¸‡«*Á!ØÁðípí!8ÀJ•ïXY)dpÔbms4{q‚ì`s4àŸàÔÃDBp€,­þ±ø û@MœOá‚ì`†ðvK›êas4Bp€\U ð¥J€{Xq€C°ƒÀ;lŽÜS„…‚œÍÑpÁvX tt€E”*î¡T !8À[³—€=‚a¨‰R%8„à;(Uüc#ðÓfzpÁVتɤ£,bs4àJ•à‚ì T ð›£÷°9.!8À[›£—Š`›£÷Pª‡`+€Ø ¸‡R%8Ä›§Ìl6ëúpfHÿØ ÐfzlœOs1uŒ£x†ÃáÎÇ ·YÛÍ `¥J€{ôpyvPªx‡ÍÑ€{lLı_Ç"8À6Gþár¬€{h—pÁv°ÇðÍÑ„} ^˜!8ÀJ•ÿPK ¸‡8„à+Ø xˆ àÚ%Bp€”*Þ±ø û@-6.Z@ !ŽEp€¶6GóbR€=”*îaÅ!8À® ø… àÚ%Bp€=tv€_,¬8PÔÄU•à‚¬áŤÏö÷Ð.á‚ì¡T ðŠ•ÍÑ P€Z˜„ƒK°ÇFÙ›£{(‰Üà 3Â!ØÃŠàJ"÷Ð.á‚졳üÂÌ&àVႬ¡.ð ¯ã¸‡I88„à{(U¼ÂæhÀA8„à{l”=°9°‡’À96Vï)!ı¼éÎg³Yׇ€CQöø…™MÀ=´K8Ä›à0w>&Hx€R%À/¬î!8À!”*ÁšÆë¥sñŒl¢T pía{šîìèè«Ø 8ˆ8„à{îì(y,c_àžó)ŽEp€=MÏ’0ìb_àJ•à‚ì¡T 𠛣÷Pª‡`MãË«tt€]”*î¡]Â!ØC©à+›£Y)ê¡„!8Àž†gIx¥KÀ2J"ç°9.!8ÀV¿P¸‡ÍÑpÁö4ÝÙ1ì²±9š•B žPå  6‰ó)ŽDp€5/¯2CØÅŠà&Vðá‚ì¡£¼ÂæhÀQ\ÞŽ 8À6G~as4दC=›£q,‚ìaÅð ¥J€›8ŸÂ7‡L“ÁDÙÁwk”Ž ª·ÉÖ=d“õç'‡ß1|BGø…ÍÑ€›(U‚#® džɤ§JûcÍçsÍçS%‹I2M& %Ó¹æÓD‹Éq÷?½BÁ’ÍÑ€7XqÜÄDqÅ0Ì(éÑ|, Îv¿”M6+ñXóq|á§£dªùæ#Åq¤Ì©o´ˆb%‘$ÅŠ£LÆHqÔÌÇÐÑ^±²9šv ÔÇùޏ"8DJ¦cI™vbƒI5J#MçcE’²É@“l®K²Ã–LiÚW2¤,•é?RTýލot¶tIp˜ÍfÇü=p à›£Y)j[­àj¦ì/X*N(!ÄáëÎFÆd Òõ§¢èº%ƒL“Aªh:ÕµÙâÃáðÚ¯,<ÀU•¿Pª¸ÉÆD܃﯌Ãç.)O*Wö¾nRF™âé´*M’Ô-ŒŒbE22‹HQ¿Þ‡±âøÅÆæh.ûÔÇæh8â°§M?R”¥JM¬$2JG#™d®ñx¾µ§AUh0Jæ{+ Q¤¾I•™D‘2e¦¿ ¸{š„ÐÑvQª¸‰‰88â°î…#°‡ŽðípWU‚#°¦ñ–tt€u´[ÀAz8‚à{èèÿÐnça¡ ops4%„8ÁöP+ ø§é’‚P¥JpÁöÐÑþi:ðs54 >Vá‚ì¡£üC»ÜÃJ Ap€5M×d²âØÇæhÀAMzÚ%ŽDp€=ÌþaÅp›£á ‚ìas4à‚àö ÂØÃÒ*àŸ†(lŽ@ ‡#°‡R%À? P÷Ð.áoæog³Yׇ€5¾9šŽ°®ñÍÑ´[ >J•àož6Ãápçc‚„èèÿPb8‡ÍÑp¥J°‡ÍÑ€(‰ÜC»„#°‡ŽðOÓ›£ ü@}¬àÃØCGø‡R%À=LÄÁXÃæhÀ?´[ÀA8‚à{˜¹üÓäJáªB©Á¼Šš¾Ú¯¯‚c`µÒ€š ü„} ¬8ÀØCGø§ÉÀO›šÁ ªÂØC©àŸÛ-«„@C8ŸÂXÃ+Ðþits4ƒ ¬àÃØCGø‡R%À9lކ+°§éWަ£ìcs4à&DÑ;3ÜIDATâà‚ìa3àV÷à‚ìa3à6Gîiz"Žó)ŽDp€5¼-à6GbÅŽ 8ÀJ•ÿPª¸§é=ƒ¬âHØÃæhÀ?M¶[‚ЈÆ/oÎj ŽDp€=¬8þáªJ€{(U‚#¼éÒg³Yׇ€CÑÑþi0ðS4¤É‰¸U“lp¯o‚Ãp8Üù˜ á¾Æ7G3{ X×h»%ìÍ`%Ž T öPªø§ÉvËh{à‚ìá*€ Îirs4AØÃ Àþ!8î¡]ÂØC©àŸ&7G3³ 4ƒàG` ›£ÿ°9p{à‚ìár¬€xåhÀ=¬8ÀØÓp©›£pÙGÀ9M®r.EØJʺ/!€}Ìlî¡T Ž 8À.!€_Ø ¸‡s)Ap€UM^{šÎ°ÍÑ€ƒpÁvQ/ ø… àJ•à‚ìj²ì ]€} Pç°9® 8À.V¿°â¸‡Ë$ÃØÅ ð «„€{˜„ƒ#°ŠÍÑ€_ÝÍh“ppÁv1Kø… àöÁØÕà „² ÔRÎas4\áMæœÍf]ŽÁ ð «„€{X „#¼éÒ‡ÃáÎÇ O0üÂ*!àJ•àJ•`WSƒ\<[pAÀA¬8À Å`Ucƒ:: ¬î!8ÀØÕPg,=JëØ—8§É•@Χ¨ƒà»šš%a´ƒ™MÀ=´K8‚໚š½¤ähG“›£™ÙšAp€#°‹À+lŽÄU•à‚¬bs4àf6÷Ð.á‚ìbs4àf6ç°9® 8À.J•¿0³ ¸‡v G`WS³—tt@;Ø ¸‡àG`WS%@+Ø 8Šó)@p€UEX(ÈÙ xƒ™MÀM”þÂØE©à—&ƒ3›@cššˆ ò@EH !ŽCp€]\U ðK“WU"ðÍáUဂC¦É`¢¬Æ/0éH£ÔlÝåDƒÁ@ƒÁ@“:w ?°´ ø¥ÉÍÑÌlÍá| \ꇙT§Û¡A™&“…’é\ói¢Å¤æýÃ}Ì^its4íhÁ¸"8¥£3=šïikÅ`pí’Qzš©G[Ÿ2ZD±âHR+Ž2æÊ;ÀÀæhÀ3lŽÜÄDpÅS'R2KÊt¶ýi“j”FšÎÇŠ$e“&Ù\ã éB2驲ø±ëT§«O.ŒLÿ‘¢êwD}£³…¤èâÏÏf³cÿ&¸„À/ÀI«‰¸BõÊÿ(!D‡eÎ…‘1™Fƒtý©(2R¼7ò7©N³X§‘”ê(ÃáðÚ¯,<ÑÐ ›£–4¹9š™M 9M^¥ð^÷ƒWÒá]z<Ö|o‰¡\yØ|}e2ÆlŒ‘FšjGŠFF±"™E¤¨_ï€ãXqüÂæhÀM¼pØS§)ÊR¥&V¥£‘L2×x<×|çcÍ“ò–IG:ÕcM“HÒB}“*3‰"eÊL_É%eJ¸C€WxåhÀQœOá€Ã‚C”h:6ŒeR<Öü’ý W‹5Ÿ­>Ï/n¾ÆÒØ „ ¼à&6GÃ7…°‹R%À?¬î!8ÀXÅæhÀ?”Db" 8À.fHÿ4Õnsq–šÂJ @—»š!ázð@‹š öFq™d¸€à»XqüÓDà§hW;ƒ°‹ŽðOí–r aLÄÁXÅÒ*àŸF.j@ØšÅæh8€à»˜!üÓÄ…6 4‹ÍÑpÁv5Õѱ9h›£çpys¸€à»xZÀ?lŽÜC©@p€]”*þas4àΧpÁVñ ´€)‰`p4‹à`àJ•÷ð‚ªpÁv±9ð›£ç°9. 8À.6Gþár¬€{XÁ‡¼YHžÍf]ŽAGø§‰ÍѬÍj"ÐÕÓÆ8’7Áa8î|LðCcK«ÔK­as4à Já2'ì¢T ð¥J€{h—pÁv5µ9škÂíi¢Ý²J4ª‰•@JQÁv5µÇAÐJ"÷Ð.á‚ì¢T ðOí–UB a¼¾ @p€U\wðO#í– Ð,Và‚ì¢T ð›0÷à‚ìj¨T‰² ElŽœSô K6G£[صêãêöS B€ö0³ ¸‡v `à6Gîá\ `õÒ€WØ 8ˆ«*ÁXÇ ð ap+pÁöQöø… àœF^9šs)j"8À>!€_¸ªàJ•à‚ìcø…UBÀ=LÂÁØG½4à•Fö%Ñff±â`›£ϰJ¸‡8€àûèì({ZÄ*!à6GÃÞÌÍf³®Çbø…™MÀ=”*ÁÞ<}†ÃáÎÇ Pöø¥‰ÍÑË@E™M 1z8€R%ØW·³ËÅ3h›£à†c°®è –5!tt@» î¡T  8À¾šƒJ€–1@œÃæh¸€àûêÎ^2s ´‹À=´K8€àûêÎ^ÒÑíâJh€{X „°¯î, ЪFJ"(1šÅŠ@p€ulŽ<Ãp+pÁö±9ð %€sX „ °ÍÑ€_XqÜC»„°ÍÑ€_ îa% 8À>6G^©½/I”DV„’ò?O GMXW».“Žh+€›(ýEǰR%À/\½pRÝÕ@VQÁöqU%À/M¬8Pb4tì†ài2˜(;âŽM:Ò`0(ß&[÷MÖŸŸsÇðàJ•7q>EÇ® LJ™T§Y¬é|®ù|ªd1©BB¦Éd¡d:×|šh19òþáJ•¯4²9:T„¬ª{>e%5]ŒÒÑ™ÍÇŠ÷¿´µb0¸bÉÀd™ÇŠ$I‘’é\ãX’1ZD±âHR+Ž2¦©?®ª½9šŽh¥J€›Xq@Ç®èÖ#%Ó±¤LgÛŸ6©Fi¤é|¬HR6h’U¡`ËÂõ£L£ÁHF’â±æãXZ™þ£u ˆúFg ©úÄŽÙlV÷oƒ+èè¿Pª¸©îžAVQÓaóA #c2éúSQdT.!ìÊ2i:ŸïŒ~Õp8¼öë Ô\Zes4Ð2®ª8iUFXèÈs⹤‡^1‡/$¯V¶”Á`óõ±¤8IÖ ý(Ò”#ZÅŠdd‘¢~­ã‡XqüB©à&ΧèØaÝz?R”¥JM¬$2JG#™d®ñx®ùö÷e±&gå>©*]zIÑB}“*3‰"eÊL_É%eJ¸cè诰9pAÇ Q¢éØh0(•ÊÕ‡ »§ËÏOÍHƒÁ¤ú±©¦±$ÅÏÖ?ç7_ãΩ=aæh{7Õm›œOQÓ OŸXãýd5Ÿ_þÝÛ¢dªyrÙ]Þîçq‡°âø…R%ÀM lŽÎü±ÃÁ«‡Wކ}u7GSò´+¨ÞêŒ/ü@ãXÁG×°¥UÀ?´[À=¬à£cØGGx§îÌ&+…€œOÑ1‚¬ciðÀ=u¯ªÄù5`À?”*îá•£Ñ1‚죣üÃõâça¡ ¯±‚O»DMØÇÒ*àV ÷p>EÇ°àŸº+…Ë@E•B QœOÑ1‚¬ciðOí‹ÐnæQBˆŽ`K«€˜ÙÜÃJ :Fp€}lŽüCàœÃ >ºFp€}Ì\þ¡Ýî!УcØGGø‡•BÀ=ztÌ›áØl6ëúp$–VÿðŠï€ƒè˜7Ýúp8Üù˜ áVÿ0@ÜSó|ÊæhÔE©ì£äð—}œÃ >ºFp€}Ì\þ©ÛnY)šÇù#8À>J•ÿ°R¸‡ó):Fp€u,­þas4à VÐ1‚죣üC»ÜC»Dǰ«@þ©3@ÉÅÙ° îJ çSÔE×û˜!üS'ðS¦ØÁù#8À>®Îø§F»ec4` —IFǰ®ö&K:: uµÚ-m°ƒ‰8tŒàûXZüS§Ý28ìà|ŠŽ`_ÝëÁ³™ h_vËà°‚ÍÑèÁöQ“ ø§N»¥Ív°â€Ž`àŸ:›£™Õìà|ŠŽ`¯@ ø§Ö+¾38쨻‚Ïù5`3$€(UÜÃù#8À¾º›£¹&<Ð>®ª8§ÖJ 8Ÿ¢>‚ìcið+€{8Ÿ¢cÞ<}f³Yׇ€c±´ ø‡Ë±î©{>ÍÅ”1jñ&8 ‡Ã á•.ïÔ)‰àªJ€%ztŒÜ ëj_U‰Îh¥J€{ê´K&áЂìcs4àf6çÔZ ä\Š`¥J€˜ÙÜC»Dǰ¯îU ˜½ÚÇŠàÚ%:Fp€}\U ð›£Ð1‚¬«û‚5,¯`s4àJ•Ð1‚ì«YªÄ†. ÌlÎas4ºFp€}¡Ê9ƒ }u‚3›€ztŒà€v0üB©àJ•Ð1‚ÚÁ ð %€ƒXq@ÇhE­ ÒÌ’ícfpÁ#8 5!Ì^`€8§è –\&Ý!8  B¿Ðf÷Ð.Ñ1‚ÚÁæhÀ/”*îa¿ :Fp@;è쯰9p“pèÁ­¨µ9šà´°¸‡R%tŒà€vÔèìØÐt€™MÀ9lŽF×¼éÚg³Yׇ€:˜½üÂÌ&àÚ%:æMp‡;$<Ãì%àÂ>à‚:F©Úqlg—‹g)ÐZ›£)‰ìàjgèC2´âèºLfH€n0³ ¸‡v‰ŽÐŽ#;;f.Ž0³ 8‡Ë$£k´ãØYfH€n0³ ¸‡@ŽÐŽc;; @7Ø ¸‡@ŽÐŽc;;fH€N°9pÁ#8 lŽ<Ãp¥JèÁí`àJ•ç°9]#8 \U ð /Ú¸‡@ŽÐ6G~a€¸‡@ŽÐ6G^¡$pЪIÓ¼ôhÁ­8zBGtƒ™MÀMÇ®Ò.Ñ‚ÚA©àJ•7»g•@4€à€v°9ð —cœÄ >ºtCpÈ4L”qÇ&i0”o“­{È&ëÏO޹cø‰Ë±~¡T p¥JèÐ5ÁáøÐ “ê4‹5Ï5ŸO•,&UHÈ4™,”LçšO-&GÞ?üC©à•£_´Q”DV1‡]ŒÒÑ™ÍÇŠ÷¿´µb0¸õ’A¤¨/É-¢Xq$)ŠG sô±Ã#G/­2CtƒR%ÀMtèŠ!Y¤d:–”élûÓ&Õ(4IÊ&M²¹Æûé"J4}œj4È(R2*‰$eF¦ÿHQõ;¢¾ÑÙBª>±c6›ÕýÛà::À/u6Gø{Žl›ìDëÚFÆd Òõ§¢È¨\BØ’M4H#MçsE2JGM’¹Æüªápxí× ž9¶££äè+€“V+øÅ¡/æ°”tßÊ!árøœP<Ö|o‰¡\yØ|}-ÅÉze!Ib Î2)‰-ŒŒbE22‹ª„ w/ø…ฉ=ƒèÐa—cíGвT©‘´ZIȤx<×|^½cEQ_&Ë´Ú¾eŠ¢¾Eê›L™‘d2e¦¯è’2%ÜAtt€Wjmަ$°‡‰8tè°§P”h:6ŒJ¥rõáÂîéòóã³Á¦¤)kžD’"ÇgëŸÇ󋛯q'±9ð +€›Ø3ˆÝ0$‹5ÞOñXóùÍwçºôÛnùó¸cèè¿ð:€›jlŽÎ{y㇃W ¯v°9ðp¯.Ðj2ÿ÷Ð.Ñ!‚ÚAGxçØ ÒlŽ,:öb#LÄ¡´âè+´€îø÷Ð.Ñ!‚ÚA©à(€{h—èÁí8²£cs4Ð!J"çPBˆ.Ð €˜ÙÜC»D‡hà£g6Y)ìá|ŠÐ::À?ìMÜà >:Dp@+޾ªÐ?àÚ%:Dp@;Ø øçØ™M(€5”¢K´ƒÀ?”*î¡]¢C´ƒšLÀ;EX(șٜÂD:äÍl6›u}¨ƒŽð¥J€{˜ˆC‡¼y ‡Ã ~9zs4 ;”Dîa"¢T í8vs4¯t t‡À9”¢K´ƒÀ?¬8î¡T "8 tt€w˜ÙÄD:Dp@;èèÿPª¸‡ó):Dp@+޹¤£:D©àVðÑ!‚ÚqdGÇæh CÇ´ÛUs=bžÀÍ(!D—hK«€Ži·´YÀ.ΧèÁí £¼sÔÌ&å€]”*¡C´ƒŽðÏí–rÀ2&âÐ!‚ZÁæhÀC”*îa""8 ¼r4àŸcÚ-ƒÀ*6G£K´ƒëÁþ9¦ÝÒf»(UB‡hà£f6i³€]”*¡C´ƒŽðÏ1›£)/ìb""8 lŽ<ÄæhÀ=tˆà€v»9šÍ\@w€sŠ^¡`yÄæhVÑ‚ÚA©àŸcÚ-m°‹tÈ›î}6›u}¨ƒŽð›£q>E‡¼ Ãápçc‚„gèèÿðÊÑ€{¸L2:D©ZqlM&e@‡x8À=ì=B‡h›£ÿ0@œsÌDçR4…à€v[ªÄì%Ð6Gîa%"8 Ç^U‰ÙK 3lŽÄJ :Dp@;Ø øçˆvKI`+èÁ­8ú•£éì€î0@ÜÊ:Dp@;Ž,UböèÀ9ÇLÄq.ESh¥J€¸^<àVÑ!‚ÚÕ ¯UbH›ìb%"8 =tv€_Ø ¸‡s):Dp@k¸´#àJ•÷Pª„О#:»`¨è1{ t‚òBÀ9lŽF—hË«€_h³€{h—èÁíaöðJÑ+,)/œB©:Dp@{¨—ürÌæhÊ »Xq@‡h ›£Ïö÷Ð.Ñ!‚ÚÃì%àf6çµ9šs)âMÅÛl6ëúP³$€_Ø—¸‡@yÓ½‡Ã ¢³¼ÂæhÀAlŽF‡(UB{ ¹¤ zÐ>Ê ÷0 ‡Кƒg/éè€nQ^¸‡à€О;;f.Ž1@œsL !çS4…à€ö:at‹ÍÑ€{ôèÁí9´ìŽè›£Ð!‚ÚshgÇÌ%Эc6G犒À®ª„Ð6Gž¡T p+èÁíaப8‡Bt‰à€öpU%À/ÌlîáõUÐ!‚ÚÃæhÀ+GÍlRªØE G‡h¥J€_Ø ¸'”TTo·E GChWUüÂÌ&à&&âЂZÃU•ÏpÙGÀMt„à€ö°9ð +€“ˆã|ЦTÁ!Ód0QvôÝ\òóÙDƒÁ@ƒÁ@“ìŸÇÝÇ à.û8Šó):Z Ê4™,”LçšO-&«¯_õy¼¸ªà.û¸‰à€Ž„éèLæcÅû_ÙZ\¹4`téÏ£E+Ž$E±âh!c®ù<^ lŽüB©à¦C'â8Ÿ¢!'Ét,)ÓÙögMªQi:+’”Mšds/¤‹H—þüÂÈô)ª¾'ê-$éŠÏGl6›]{àÃáðÆïc¾$é[’ù·ý¹¿@³þºkƒ?.éþ €Ãü'’~ù€ï¿W½Ñ.QÓåùsadL¦Ñ ]*ŠŒÊ¥‚v ‡ÃF¿¯-³ÙŒcºŽév8¦Ûá˜nÏÅãâ˜n‡cºŽév\<&ÉÍãâ˜6®^¸ŠÇšï-1”+W}­)ZÅŠdd‘¢¾$]õy.»<8ô#EYªÔÄJ"£t4’Iæçšßæ^£H}“*3‰"eÊL_I$IW}€Ë‚'Ožå•‘ö69g“ͦèëVÊo¾öçãñÖþˆ«>—Žà/žOhÏ'4çšÄó ǨVbç{#øx¬ù­–üùƒî€ xåh7"8¸QµÇ®ÆŠ€܈ààF7"8¸ÑI×p”_}¯:£t4Rjªo|•tàvL:Ò©kšD] 5ñ|B®8dšLJ¦sͧ‰“‰²® Þ2é©ÒþXóù\óùTÉb¢ O(ÔeR®Ó(PƒIušÅšÒG¡ <ŸP“+ÆhÅ*'ñbÅQ&c¤˜I=!J¦šo>RGÊxB¡£ô4S?Ž´èúPà=“eRüXe)™Îoø à‘¢~×ÇŸø·â°02ýh݉F}#ÃÙÈ”¦}%”– “ž*‹‹§š°0F}e  ë2]à(Q¢écét0Ð`p*=žÒWá þÀŠL“Aªh:Õž8ZUð˜31”eÒãù\óù\cQZ‚²‰§«çÓcétÀó ñ/8ô#E £²zØÈ,XfCM&Õh*š2ó‚zL–ɘT£Á@£ÔìnBŽ'‰V]S?Š´0<§pcŠâxSú–ÄÊÎH¸=ÿ‚C©o2eF’É”™¾"{8–I5%sBê‹’iµÑ~®i)J¦\U µÄvv cÔ礇#EQ¿œà¨>ÎÎ2E̾âþmŽV¬ñøLƒÑ@©Ê˱RZ‚cei*#i2¬?Ç`€3ⱦf¤Á`"©êŸ8éáXñXã³Fƒtýñœó/«òïX?_'R–[ÙþÝJUêóõŸç £,¯–ãæ(õó·r{’Ó¶|=Û\ö²¿¼¶X¶§“(OOàs}>”¥TÕV¶ÛJ&]…¥5Ô—òûç$‡1þˆôùÍýw Ì„ŠÐSS¿ÃH-¿Æ£°öšË^öGõu"Ms‘ãÞrOÔç{#rkë´³k©/G%Ôæ¨‘Ë¿½ë±¶pìùñ¢bôÒH]7"RJU‰Ôu#õo-R¹Î›Û׈”ÕAþ*)›úŠj¹\©¶¥H¹•Óu;ËVL¦iä&ò¬Èø…Æ©T‡ëGÅäU±k.òïR}T¶ ‡¿SÀ€`ôÑÔòÈE•l·"·º‘¦þ•Z*¿.…òçÊJþT"u-Ò4Ï(¡wQ¼~/e{¨¤¹\^Ë>ü=H%9þS;µÝïî¤j{©i¤”r»•¿]IÍå(ÿ.må§”jûW!¢ Š0TU"Rÿ>ªaU%U]k•±Fêã¿JDYmåïaû UC¶Á¸†ÕAþn]{Íå"õöÝ äÜæÞŸÃkæïç+"ÛíV¶¯>Te[')ÿÉå¤Õ÷DDšú9¯w÷duø+‡ª‘F.û½´=—õq#©äpý#¿›£ÔRÊvû#õ¥~üR•®ÏÁ2¿S)SWÚ˜Û ,€®4 ‡WWÑO)eY=ÇuUFJ)ž¯¿ìe¿?JÝ4R®r½^åÚ9¤‘ËQ9à4µÿíe¿×;~¯D}9¾§‘FšËQö†é^Ó7²¿¨ÝaÔã„[ùÜȶûìøDÊòûpW¿»gšúb\·Ðmp®cÕª›4Êßo›{|õQ6êóÏi.†íL¾……Ǥê{ò¬2~tO6Ï÷Ògë¹´ÛY–òS†}N£n'° ‚ìÝ%Vý©äQ%yÖ7:úŒªƒRhj9î÷²ÙŒÝ¨rº^åÔ†¨¦y?ÖV6Ú ªÜÊát•ëõô®€Ô1æœæ"—G‰çùš«\O³øæré Uý‘JÚð¨v9êÁ¨ ’ï圶Õ8ÛÐ¥,åGý=t›ƒ>%$=§Q·¡>æ¯nkûÓÎïÙMùÄÞ¾oÏy]ž-epû#xkÕ«v]ÿn¥ìü<æ7Åv !¡Ún4ytƒ‰(ˆÎF½’Ãõ$µ ¨yœíwWcÊוTåOù|})UûXùc}eµm¯z+??,ÏbΧ[ó¬šÔrÜod³ÙÈæ5PÙg¼Ð”¥<ß§¶"ó|ìs­äp½Êõº¹]äxÜËþbŸyÐ6„ ÚæÀÏád*9*eúí«ËSO?¶õA^¡îÑŵ?^¤.ÿ>‚ÈɯªúÓ®ës½>«±·XcŒ€@ï+®j9n6Ú³ÊØ«RªíAª­<»a]Dúx—ñ¼»ð!ÅV¤j'GuèÒ4Ò\ÚñE*Òï璾Ƶ¸æ² ^ñö×1Ò•Å+téÞÛpkñÿà+9œ¶¯1FMÝHS_ä"ß·I0ÓßËÏÁaôí–A0‚¼»Ñl¬W§ÕGÙkù¸çQYÉáïö9¨÷Q] ;n˜*1ßëܼ/u\S¹•“gâë¥å<Þ«Zù] õåy0~T¶Õ”·Ëã=Ò»ºúnƒÍë þ|ÿÞ7`²o³syŽÏá§”RjÃËßÛðS–òõþ¸”[9œ¶jã­–ßßZ꺑æòO.Uà=¢‚>‡)¶X]i@ˆW7Ú{|Ç뿃c|ŒÈ«j"R¿¿>ÃÃÇAzõñ=pù=fæÝ¨zu 6—×Àئ>>º—l7MÔ½¶UÄ<¾H©Ò”?òg[IYŠ\ýt!Ûà¢ð-ŸÝ<£l³Í+\<Æà¼>÷¾Û ¬×E7«<8®Î뺇Tèç`ßØÛ ,„ŠàÕöºMQý‘Jj©­Ýi•l·¥Ô—çU—ÏgË×XŒ)<ÆÎx-¯ÜʶºÈ±~\5´ñy͵«ËøÚª’4†.Éû õØõUÇèžÏËß¶´2Ê6Û<ÆÜl3m>äûÍn+Û²–KSËe¿‘?£×ßå³»¬y\¹¹”²=™ï9ä÷9æ÷ÿôµy;…P1¼©7h4¡¿ÏˆmW§•Û“œÕgP(K©¼Æ†ôWNÊ}dº—WW½§]G¥JôQ=úXˆœÔJÇǽ¾»ÊB·Á¾j1^z—Ùðmv¨r:l?ÃtYÉöÐçë:žW‰iɼ¬>»ß›ED~ì]¢žŸƒ×üFÝN`Åÿþ÷¿ûÒ+` êô®‰˜rØ)¡bðD0x¢+ à)É«Òþûßÿ.½ Ct¥<ÍŒÞW—Äh¦`D(BüŠâý`fF\ö¿òçÊ]O¯¢¹Kñúpë4ÃàëR¶§ƒˆÔÚ7k;ŸÏsÛív£¬àòGw¹sÍ&¬JTW¥u…ŸàŒ¡B°¤¢öA,"ª`,æ.RïV˜XFÛÝVmEØ1/.×Çê"r—gã{§–v—âã_`N#¬ZŠÄ‰‹!0·»Ò*9\¹. qhÛYB7ÆûanŒ1ÂêP%âug¼F0ª´¡H-ÍÓðq¹ß…ÑEX cŒ°¦P$†ßëEÅ« wŸ©W»t¬ž¨!{j(j¿ú@üîB—æGÅÙâÊ3 nŒõCŒFÈ’õÊ3íŠd` zõVÿnBªEX ÁÙ1…¢êÑÝ>€é…\ðÐ$öUÌ…1FÈJg(À`„lŠ€tÜ¥x]Ê•¡ˆ ]iHž)üˆ€x©w·nCcý ‚’æ[%* ^ &we¬_ç´Â8#̇®4$Ë'Å{ 'w¸t!!Iz(*”Çô°t—âuY0áàB0BrL¡HÄP=â.×@ôèClc„d d­^`z•Ö6Ö¯k ãŒ0—¨ƒÑù|^z ß*‘{w`3úº»5± ˆ:ív»ß JëŠ^Ïk_ÿA(–u—âë«?€Ø0ÆQëŠÚÛÑØ4Ä@òøþ4Ì`„h™B‘-㸯J°µû¬«;›ÐƒDÝ•†uúº‘ö»mz)žáˆ$DáuÇÂ}wk*Aˆ ÁQ é:SŸSyv5Âæu¿|ºÒЮ3±<ǽ‹€8±gR]ÂÔFˆ‚Š ùIbxNýÚSj§íZ.€ñ©_Çô:ågB–@0ÂâôP$V%z”é¿_ц§öu>A À0m j¿Š§ Gôl#Œ1ÂbLƒ¬}/Ã×¹îY¤ß1—pLËÕmÛÏ©!#,bh•ȤàÙ5­¾\½1æk€¸ñõ ˜Á³›" að­‡%``>„,‰`„Yé¡($©9û\ŠÒØ~-»ãy]_ÅCµ±#a6z5¦w(Zàû–º‚’i`­^7vœrBÀÂ4F˜EW(r†¥¿¡Ûê\Ók£†—®Ö ÀF F˜ÔÇÝ©eœ±Dw)ž¿nɳHªJÀCѱSSíAÌF˜ŒZ%25‚}Wë£XÏ0©*aô¯çñ½Zôk>=^Œ`„I é:Óéƒ9ÛÇLó³ýnœ¯çtcbP7r¦w{·ã§úæò„)Œ0:5U%RsÚngZ¾iÝú,*t¿a 0H Á£Roš8V(êË:ôŸci°é~Cê ¹¿»Ò,_Õã:yb6–F0Â(ºÞ]á£(üïM4$Èè•%×ϱºßŠG··ˆü°‚Òuöþ‚Éâ5Žh®ûu}‡Z¬„î7ÄÌv£©ºÓè¦ÃØFdŒñDmÙ½½ )¦í°U•Dâiˆé~Cª5ˆQÔÁè|>/½ p°'ÒµÄ]­]|Ç)™¦]U%Ä@/Äø!¤ ê`´Ûí>~'(ÅcŒËðÍó}ß÷DËA<$(™¦_ U%Ì©í"/DD ÷1»RDå cŠ:!>úÙŸþxŸËðM_8ÙUñˆ¥ì 1‡uc __áÓq#S¨Ñ+K±ìïX‚¼Š^óò¸3®Ï}ŠîÊ¿K6¤t¿ßÚ}’î4ÄŽ`/¦ð3æeí}ÂŒÏ\·D`¢û ÒA0B§©CQ¶éÏÇzVêÓMèš~It¿¡KÛ=Þ^eªV„mU£1ª¼KWŠ‘‚œôäˆ ¥Å[òê2ÛA|éP§Ëyœ’iäï5vÐp!…Š ƒŒ`Ô·JôŠ"»ô¾¥‡¼+K¹ŒS‰{}1!ÃíªÙ¦æF0Â[(ê: }]ù!ÐvCGÛ ó%¥:NI„î·µó 8t…!#|èÓufÓŽ1ˆ1h¸˜ªd¦ç–”ó8%Ó4H›©Räû‡TŽWÁ/¦P4¤1UŒ–<`÷)ͧRíÈiœ’HÜë ?w‘çÊj>ÙîœoCàÁ\F‘ÏFg¬›5¶éËéú½k¹KŽ=H©Ú‘ê8%‘´Þg¸é7{¼ßíû°­{˜ÁhåÆì:ë7k¿žw¬ƒí÷˜€)U;r§$ïûŒ}Ìáëq1ÿ-š>?`c £SCÐ’—°w¦vLµû-µ€šÊû ³©BãŒ0Áh¥Æè:›ŠïÛµÞ15Ž©ÀS§$B÷[lL]ë"æ}ÓweŸFÞF+K•(DèÛö›¹Û”àt¿a½,tÿ|ØT5Šé¤ëD0Z‘CQ½ê%Úï)lgJpºßL C¶1Fc/’p…¾F+¡ŸéÆZë4ôŽÕs6N!ìÌTà¹%Ó4N­™þU1s#e.´JÔ^E2ô®Õ}³±ÂT×e¿}n°¤Tƒ’HÚã”Dâ_çÔèm‘^ÝU7CŠ}_EúFÓWc¢_Zë÷œ ak[)w¿Å\éHyœ’H:¡4%]Õ!ÞS,‰`”©±ºŽ ã&£0FyÝ7(©ÓÇ*¥JÝoëáÚOm]i6¡û;! }Œ2Ô'̨—Ö¶ßqÖu×êù§@oH»Øíkb•J¥ƒî·õ²u¥©ÏñÞanQ£óù¼ô*$ehcüºkµ¥ ÍçÐg¹CLÙpúloJÀT‚’HX÷[LëÝ¢ªôí£*dù»Æ1sˆ:ív»ß Jv£vyÌÀ7<ÄzmhSïR¥tðÎmœ’HZ+SпCMîÝÝn¯ée}ïæu0‚ŸØÆ™® 9¤TB J¦×Ä"¥ƒw5¥ Þ¨´ =Tz×Úж ¥¶ñ %lª@4Ec²DuÂuÉïTè~[Fêã”DÒªàM…n2Ä€`”¨ØªD¡|Ç+å ‡êF+• $B÷[´ zècŒZ¹¶ ˆÁ(A©‡"½ .…ƒW9w¿Å|àÎ! ¦ô~»˜.ôP]›nö¨ÿî[Õ¦; ¡F Iµìk-U¥œºßRêZCP2M³5Ü|•»{s %â댩Ћ´µ=»ó™ŸÊTYŠô­’ÃA[$­î Ç)‰,¿Þ¡ãúô¶"Ç“!Ä`”S(zÿþì£YJågŸ‘Âv¸ä”DÒêJ}œ’HZï·ÈgÛC(ÂF3Þ V»Ôµ»äü½f>›dºòL.·°Zݰ½&)¸s¨)t¿u…#ÆaJ£Hûã=_Ó¢xë K9œ™æpÐIãÀÝÊá=±û­]fû%ÒC0Š~Àîj”ÔË][®3-<´ïE¡ýœËU9´Eâ=p›ä0NId¹púj·ž T¯XSŸõ}CFñÙùÛ/{UÇ™ºÐlgZ¶ÇihÞº~¦ú^Ñý¶ŒÇ)‰ô{Ï»BM;~².ÐP»Î€©Œ"rFÔ†#×D¶§BÓggc_™ÖgÙ¦ƒ“ïØ]*3¹V•b^oÞsw7™íëBBæáš>Ö÷ñ E@ïÊñ:`ßû=…&Ûs±4.KŒCH©k'ÔZÚ¦i–²¦î·ðyv_XBØÁØF R«Díï¡;øXgAcT˜ÖÜ8¥t ‘K÷[ja6·î7õ‚‡°{½ç¢ž†0%‚ÑBô*‘H¼;ºowÒØã—R.}çÜ·–ªRLëú{®†½Ýû¸Ø¡& ±u‡÷]ØÞÄ…`4³1ªD­9º‘l ‰ï_|ª+¾BÞÇ%ºßÚåêb? ùHý Ý"(-ãëb-EÙ*MKíÇÈÁhFc†¢Ñ.Ç.¸\»ßb^ïÜÆ)µE#WøÑ·/ÖmBzF3)´Rɘ;rìåa[—¡ow\ÌÛ6¶\»àr¨p¤Vñ‹}œ’oÅç«¢d±¦vÓŒê£l޵ˆˆT‡«ªïIšË^ö—FžÉÕ4Q¦Šçÿ}|Gf_ßÑWH…iìñK)Ií€ì#‡ $B÷[z€ 4>U$×üb?‘ÄòþoØËk9o²=]åzÚÊíx”ZŸ¤¹È¿º’Óõ*×ëI¶·£¿&Ê“ë>E1Öå¬ùõ³ß•ÿDûY§Ÿ‡^õ’ª»ö_aø/%úö˜â)l_×ç×û-÷ºÛ¨ÕèÔÖñŒšFne%U)"e%Uy“¦ézQ)åÏ ¥FOÝÍ Î÷Ý\cnøc _]O•þ>ưþS2½71ÿMùÈáÀÒgN—ä:QÒO¨b¨ˆÏ°®´[#ÍÏ)Eäxù½‰<x(·rú{‘ýf#”²=d[ç&çóyÐêÄÀˆôKPÕn´®ƒ»Ë]û9Çòp×vÙ²ûtÇåÞ@æ6^)–® !RëiœR;N³é¼áãkºç϶§Šé}Dz¦|]es)åt½J)\ö9nÍc‘v»sV1'mlõ—>cŠº^bj¤ºÖcis8SCr…‹i9HíÀìÒµ-©„@Æ)u+ ã4Û™«ûµ¾ÛÚS;óûŽy ëJû)¥¼5òè=k¤¹}w“5ÍMʪzU•¶ÛJêß¼-FL%﮲ý’åäºä|Ç.‰ÄñžÍ!¥îž.kè~‹IÈûm{}¿åÆ™šªD¾ï[Nû†ŒÊR~šZêFDšZêæGÊRŸäGšº–vèQý[K™É #},Qlg¦11§¡†®³il‚i9¼W.9W"(Í«kœRËwÝíÞwÅÈTR+Bj@ á³ O»Ò*9~e³ßÈE—ë?zÈj9n~åÏõ UuÃïFö›Ëó%¹Ú%$Æ.«Ðnª®:ý÷X¶yj¾ãtÆ>#ŽM.]p9t¿uug™¦Y’«»*d@!÷î4Ó|ÚŸÕ £‡õ(´[?¥nOô7|ŒQuëõëAùSý*“\åk’D­iG°ÓiymŒúŽurû<–Â{ã#µ´ÍRãfÆ’jhµµ%Æ¿£¶:ô¼ˆåõ»e¾¶p¤¾fŒ÷$—}Ÿ&|ÝHSþ‘í43Ÿz×êû½ÿuJsß ­6­o`ʵºä[]‹};SJ"éU6\ë[hú¶=ú‰œ^)š¢J5¤âÓDÁ¨”mÝeÚ_ôãÆŒÜµÚ‡ë-òi”îÚÏ1†Q_kL9(B»ßbÜžÔ‚’J?ésU‰ôß]û”)@MªRzø®´mŸv‘ÈŸnJ!¢+<¹³ ¶ì»KT¸Ö˜r8PxW8,Ó/-¶Ï «Í ­âµ¯1uÿë•#ÓsSÊád!w# ý¾w)^á¨ÏÕ 9˜3t¹Æ7µ¿›ø®ßRaÈÇß)þ­åЗz÷[¬k[›Ó5ÖÑ5ÛTY2ý<§”+z9"øtó„Tç R1ìÇfkÈ]ïÁRÞÖV]Šõ@í‹î·yÜå=ä¡ÿib[wS€Ò^Bl½µ!i^;Ä]¹âY-òý*׼ǜ®ÅòfkÐlWÔuuÄnM)õƒEîÝos¯ï+µÃ wöU–º*ÎKVLR?QH ÁèÉ´¨—ˆŽ1à:tC‚”ëµkÜÔ†ÒtV¨V›B†ÇjH`JaûDÒï‚Ë­ûÍç½{г~_#}Ö¯FåqWW[Lb ª9!‰ÇÀ¿…þ¦ªJ-]‘R¯wÞ®uJ98ù¦”«K)‡¥Ô»ßBªSuûJ£b?¤/¿ÏX¥X¥^QɪƒQ¬gCô9Ãéj |ËÐê:ŒmÎß]†§Öß$çÀ”r7D®Ýo!¡¨ï¾oZ–+ù ½š³”ÿî—¶Ú`ËA6cwñõ˜žÓgáÚ–ÔªM>k h]ªg×9t¿¹Æø…T”îÊ8Ðh?v½G®À¯'R ¦:ºßü¬.åx 6™ºÂ²T˜r}~S•çÇ”C7]ŽÕ¥T»àrè~sïóæ _•fëªé6ó©*ùŒíŒíýÖ¥z‚0µ¬ƒ‘ºÃˆP%Z’mì[] }.•Ï=åà”[`Jµ+"µî7[÷¡=gk3ºÆ€šN˜B+o¦ew-ÓsK¿×]Rý›[–Áèã»Í¤x]ƹ†TdúÊÉ\ã}LWßà`Û`:hÄ S N9¦ϰsé~³=¬¸Ú€»a~úëB‚e;?Ós¦õIáïE—âßüPÙ#ýŽÕíݪsûàRg+w5o×xÓ´c,snC‚ÓÜÛÐ70Åò^‹¤ÙS÷›ïþ¯†Ÿµ>= t…#}Ù¶åuzS÷\jÁT·†ªRvÁÈD­Í·ÌåÍUÙ‰Mè6ëãú„‹T‚T߮ˮ׎)ôÀízÝRKÜ qé½í¦™.¤ÅÔ-ãcÉ`ºÌ«R1§T»ãRë‚óàí4u8…i(…Ú6¶¿Û¶¯OåÈ4ú»ˆ½m¾kÿŠaº˜ÿNlR«¢FŒv»ÝÇï>AI¿·ÅRw­^š«t;W£Òð…6’k¨Æ-Q•ãLÝeÎàÔõwcu)µƒGŒo}Œi;ŒÂq»#kPòéŽÔ帪D¶÷î·yEŒúZk2YªJ⻼ÐðÖµ->U2[£2f…-…ª”ˆ_WÔXËœÆz?S L)uI„¼ûÌH[¦‡!—ÐýÂç ®W‹L]x¦yù|ækJ¦i¦’e0Âzu5žúsú ë±BäÒU-ßm¦ÆR>·ï¼»„vµÜP)uÁù¾§cî+mÁGWšåÍ0ˆMm€ïg¯ž>a*DhXÊ!(‰Ì·£ŒMÝ—»¥ž¥?wÓeHZ¢›.•ñK)†%5„ˆò˜Èð¿ÝáÊ?jà 9 ²Mk;H‡œ\…TÌõi‡Tä|§áoF5V÷[Q¸{–F@†–nÐÆfCæáS–wMßgÚ˜ºãR¯dZŸ±ºßÔo;èZSX²!WX7Sê\Où[ä;Vɶ:×ߢÏ>1Ç Ö¿ÃÐî·×·a<ÇžÙÂÁh¦g´Äø%ße.1® oK¼÷CÆK}©˜Íõ^Å4†ÃÆN\aièAÕ'œ©»Ú•¾Õ 5ð„$}®qMúz5nj S‡¯BùÁ40ߎF²ÚpÕ ûveM½*ßj…nî°ä[¹h…2ÖMñ|‘z0ìSÝéÓ×õÞê)ô3ôí–ëû÷:Õ߯ao¦}iÌnº±æ5æ>ßg^SíË]ƒ£]ëªw£ˆ<Ç#Y–aj“†„#ßîÍî5ýµú!gH·cŸ°sPÒïqØ>fB0Z‰%Æk糿õ©BùL?eÕfŒåëcˆî†ÇmËê;èøsýÞcLBßïÐöÔ´¶éT}tÛæ°ºæ§Ï×$¶ ä{C‚‰1pùœí ŒeŒƒ|Ÿ×¹ÏúvÍEæAÜw%™ª+]m[h8êûšöuCð®6ŸùªB*}1;Z£ˆ}œ»!Á©«1öºø.»ëuc¶W¯ùi])zõÀÕ­gëë3>²ïɤ-Ø„бºÚ|—aZ–ëqgmljMœ¦FHÎØU*B#RÖUÑèzí”WЙ®ºRçe #>ö¾û¿ÏÕ@lï¹Ã‘¾~¦y„±»Ú\|ƒ²q0|¡þî¾ÑF+c·—HÿÆ€ÛTÝt¾a¬Ïü‡Ž«éK‰j{ùÝ ÷mÎp¤¾^4}ƒÒT]m6¾U%ý‹ ¹OŽF,ÖÀÕwp$°}ƒ“k Ÿï>g }Öa´¶§Ð–wÿãS ]§1ÂQ»\[ÅǧRc«ìÍ’\ËøvŸWN`´ø„ N®ÀäZ†éÊ4Ûë†\Åçwe˜R(îRÜ»«,¦u©Ô =±Tßîm (?gW›¯6Ñ•L„Àô眦Lí[ ñRZ—ÍÇÄ÷îã x®õS_;4©Ëé{õ›:õù¹»Ú^ËÐÍ·M‰`´2±v{È­±¦Ð+×\ƒ»móëZ§Ðåšžo§éZ'ÛöúÎÏwœÒlã‘f>`Œ%*A@¼Ô«k_º›º‚¬Ý4joº IDATFJeBÇÒÞ2t¼¢í5>•®±’o÷šÏ¼TÆ+Ǣë2û±ŒVdʰ0æs Z=Ș*¢Mã3¯öwÓÁûk°uñÇb›oWÛÒž¹BGHÅË5ï>Ýk>ómY×¹ DϦ¾Ì~,#@Ô|»ÉÔé]Ï«ákÞw¿p2Õ‰™)ºÖÇ÷D²}탨]ŸqÜVäF+´öjËÚ·ˆMßjvßñB>ËÓÊ×ôÚ¥ýz%$´ n[‡®æ!AiÌîµ.¦÷xŽ›3Ž!ê`t>Ÿ—^$ŽäÉu‚:è;´"eº‚ÍtÀŸ* JSu¯Ù´7d|ýœ@ƒu0Úív¿”†cP2€TLqÐÖƒ†±dXnŸ1Oí•iSUŽÔçmëbÛ¶©»×DÞU´× öB‘HäÁi™{6„0wï˜Ù®ëêªrÍcÊp².Î`gxrh I%µF+•Ã8›¶@œl£âù¤ÏMMóP¿µ ôV!¯q­Ë­‹pŽï%‹Á€_'bZP°UaîÚDêx›öEZÆòªJ =)ôW5Ç÷’ň`´Bkg´–íR¦ÝIõ0l …ò‹Zù¸‰¤áu]óµoÊÄkªêL‰` HQŸîô9Ç2ê—ü÷yóõz××]^úUd"ë \ÿ·ô `9STT¨ÒÈÕöíñÕ"ýÆÝðß÷4Åç¦ÐeÜßëÙ^Z¿¶P$BÅ‘YâÊ4¯”»×tK|S|1®ÓœF+µ¦0Sà ädMíPkÌÐÑ-ýKo1 ]iHZ߆u 2€‡®5¦¤íúZk·×F+G@²¹Û°ÛLѸF]Œ €¸åTÅAÚF+¶†Ã‰ ÁÑáÌ@kʸ5œ"Á4µDû3èžD^‹øŒ0 s¡½Á˜F+—Cƒâ³ ©o#`#€'‚D$¾ÊW“˜Ú =bk31‚¢6eÃCÃÄIß/ÙW1'‚&ktbį>ñkÿŒ¥½Aú¢þÙóù¼ô*fÔœ‚Žº®ÈGÔÁh·Û}üNPšÖšwòaÓXsÛ‡ot¥!  mKí¿´ÐŒ "q6cŸ½Å¶}€øŒ0©1@¬b<©Ä0#|`'ƒ>—ìóýgÁ°j„"¨Fx¡q¬Á«Àe¸@:RÛ_9©Ì Á_ÆÞɇöû‹çëû,‡ @‹ö"#@Fú†BZ#| q0·»ò¯«ý‰¹}Šy݆`„U¡áâÅþ‰Œ`ÄÙ`F˜A @ h«@0—؆+ÓäaÈ%ûK ÀŽ­íD?#dÅÕ0u5´©Ý;0>‚¬8ûÚ%L`£)4) ­Z7‚OŒ3ÂÏ¡>ÊæX‹ˆHu¸Ê¡úž¤¹ìeiä9‘\Mc66…|Ž'º‡¾û&û5úX1ªåx¼Éöt•ëi+·ãQj}’æ"ÿêJN׫\¯'ÙÞŽrüš±Šíì'¦u0.B b0,5ÜÊJªRDÊJªò&M£MR×"U%¥ˆˆ”²=™«JˆOl¡æ2ô˯i;Ó5¬+íÖHóóçzÊŸF~o"Ïž“4òSÖ²ßì¥qv¥ÏçA«ƒøÍQÞ¦„¤É7LL½lÖmø#u-rº^¥‘ú¸‘cm®ív;ç|NŠˆû&b1¬+í§”òÖ<*AÒHs+¥üùž¬Ún_E¤Ÿ²”›Þ߆¨Ñ`ÖbX0*Kùij©ij©›)ËÏIª?•Ô¿ïÑÖ®5m"D+¦PD×€K¶_1µ3°+­’ÃáW6û\äq¹þ£‡¬–ãæWþ\RU95{ÙlŽ""RnOrbð5`ü€90^q†1ªr½~=(ªß×oåö$×íà%!46B,Ñ^PñY¯‰î|ÝHSþ CùÈ­‘pmKNÛ 3ÑUi¥l·Œ#ÊEŠ¡ˆª·öñÖßø®4@Ò @Žô}qh¨à»ÏŠ`„¤pæ`.„¢u"ÁÛ˜ÄÐy =€9®ÒC0‚vnÀŒpàÄp]F€(¸ˆéqßÀ2$ØŠÖ‡`„ 1Œ3ò#Ô5;s \¥…`o±íÜ1­ €épÁæD0 Cl'†˜ÁB–B0B°ΜL¥yÊõ@¾–€C»¹#{禱0mÆF0B’¨îëCÂFHZWCÉÙ$€±Ðž¬Ã–^—óù¼ô*À¢m r­Üä¼m@JbÙÇgÃöÀ.ê`´Ûí>~'(Å!§³&) 9µ;ˆ]iX €9ÐÖÀÁOCÃá,~#ô¶ô>´ Œ.4 >}ö˹ڢ¥Û<̃`„^bj ¸2 È'.X ÁÛÉ '9˜ÁQ ª`1|½í]ÜF„‚zË%å° ÀÄ0î(—vv#$-††Àò, ÁY A‚\¼Fl¬|ʆ‚F@+†؈Áƒ¤Þ8Фgé6'õvn#@”r?q!`ʼn`„äMÕxÒ`ÀúŒ0ŠÆd€<¸Nvºž›³ â“'‚£qî^ ‚ Ÿ \îãă€K0ªår¼HÝÌ»2À”h€]þc{¢©/r©/"RJYU²ÝVR•匫†Ô´ÁƒŠ €µ ÝË%Ur8¤®/r¹ÔÒÔ니ˆ”Õ–„/cVcú44C–O% HaS)þ÷¿ÿyüm5RÿÉñ£o­”êp’C5Ùº}9ŸÏ²Ûíä¿ÿýï| …·6\ŒÑXõiô|–o›oû¸úo×¼LGß'õçÄð¸úºe 1V[AЋ‡µ+MäÑVÿÖrQQYVòós“[ÝH}¹HSmeªÚÑù|žh΀…Tœéƒ‰%ÕrÜ¥~þV–•TÛ­l«R›æWn"“£Ýn÷ñ;A)~44Ʀ·)±uÓîåÅ^1*+Ùn·RU¥%øüÈö°j½ Ø+Há*ŽÁ×]ƒ‡J)g_„u™ª‘pÍ—PÄ%…}’ÂüpƒGdƒ3-ÀP#Œné3(ÎÞ€uXúû‘'‚F•j#Cµ ˆË}r‰vhŒe¦Ú~æ†`8ÐHèB É ÁÑ¢±Ì`„I,jèÖ}S!at±Wzb_?Ÿ¦ÞgÇš?ãŒò@0B–hX}ŒÙ™»òB¥'#L†²2€©åØ>Ðî-‹`„I°cX#Ú¾ôŒ¾W«p• °^´F€A ˆ[lû(á*#LjÉqF®×ЀˆmÔrF˜ ;6€%Ñ¡‚`Aƒ  YÚF€† ˆ+lÄ´ÏŠÒG0Âä–h(Æ”I#¬Cl¡&¶õY ‚&µôwѨBügép9ŸÏK¯`!)WLÚuí–èu0Úív¿”0&WÕrƒ ¬ û*ÆFWfAã` Kqk™´ó#arKíØ”°„"ˆ€`„d¤~u€u!d¥‰`„ìq5¿œ÷YÖ¼F˜ ;7€>Úv#¥6$¥uÅ'‚fA#HÁ«f lŒ+òzbÆUeëF0BRú4pò¶†ýœ€5‚fÅÎ ˆÁ³Y2ÆÌÁ4ŒžFHÎgaœõñs?q6¨yŒ0;vns£Ý/‚fã×zt­Ó®x0 YzF€dØ‚ÆZN`ZÓ#a5¸ÿ€¥hÒA0Â"†6S524^°nÃQ}”Íf#›ÍF޵{Òæ²—ý¥¼H¤ð ÔmW“­ÓÀ`TËñx“íé*×ÓVnÇ£X³Qs‘„"@€Ðní5‚Ö´†£¦‘[YIUŠHYIUÞ¤1fŸF.ÿjù©ÊA‹úbÌ€¥ÅÒˇŸÿ zõ­‘æç<âN)åO#¿7ÑòOsù'uõWþÊ?ùç˜Ýù|´:HGÛ@2oh±-ïnynîõ,kX0òÑ\ä_]ÉßS)rqOºÛíœÏœ ²…úŒ~J)o4RI)4·RÊŸÏIšº–¦id¿iSÑ^ör’Ó–n5Àx¦èªëlìuãÄp:ÂQYÊOs‘ºÙJ)µÔÍèy§Üžäº}üÜ\öòOþŠ$! „LiàUi•?rÙod³¿ÈÏá •ˆˆÔrÜ8®PäݨÍ5‘FÀÒ€¿ácŒªƒ\¯_ÊŸê÷kÒr{’ÓàÐONÕ¦œ¶%&Ýùº‘¦üó¬Óésöe›ž39 ±îÇ´1i˜èª´R¶Œ#d€Ê̺ð]iXÔÜãŒú¢A0*Gq#hÀ€8°/~#d`„U¡òä-ö}œ ?‚’7UC{ ¬É˜û#á.#,n‰qF4ŠBLuçjć`(¨iè k „¬qŒ€4>7‚²À€TÐ^Å`„(Ì9Έî21 ʼn`x ñұƓBÖxFX- cï¯}‚ácFÌŒ/‚¢1tœÑ˜ :Ÿ5–备°5‚V‰°¤)äÀŸBH Ìć`H¡SøÏÒ+àr>Ÿ—^à…F@ÛŒQu¦M‰SÔÁh·Û}üNPÊ_ÛPŒÕðt™k9†›êûÊrjrܦ¹Ñ•†¬ÌqÆ¿”‚•£¸ŒO4\?‚VËuFɬÁÑ™ó{Ó|¥T–ð6E;2æ‰Ó'aœØ C0ÂêÑ€Xa&#d‡€/Ú èFd†À×ÁQŠqœ€øär؆œŒ°j>ƒªi°€4MyÑa&_#À‚+Ñ€8åH[q !K¡ €Ü´ú‰ú»Ò°ŒÂ°'Ý(ŸÌý½i]ÔF&–uÐ-…ý•‚Qâô3f€¹+»iQÜ G šò†ˆ4q¡+-iEñ/ícÎb²–ŠÊZ¶3f£ŒÜ¥0vƒ¥Ðþ뜾0wËÍÅ·á,@)„˜Ö16t¥eHß Bü÷û£Ûì1Ÿû#lÉ]žÿs.G]žZyÒ Û8#i! Áhmeè˜5ļì0]‹m׫(ä#éáÄ4ŸB¾»ã•¬øÇ(¾€4å2Fˆ‚ÑŒ^h„JJËôúvǺkÿêÏ̧cÞm£ÓÕø¸vì!•¬¥ÐP˜ÛØA/—à8‚ÑÌæج~†1ðë -á÷º¿ |@×8%v^s#< E0ZPÛÅdêþgþþ;ºO÷›ïxŸwWœ}*W8sUœBß'ß÷€Ê·¡ûçT¡‡@•Ÿ¨ƒÑù|^z&U(‰hªn&õ€4[û]_?¯°a芳Q¯^Ó_çZ×k:Öe,(S¢Y^ÔÁh·Û}üžzPÒK›€í[凸»ºÖBæÑ2u…ùŒ=2VŠÔPÔVÑäñþèј»!á,XVîû㌖u0ŠQQ »šÌöZSøX®eú eËx;†©å;¨Û>Ïâõoáx¥Ï)ŸçûÌ7‚‘SEcªKÏm©ï•e¦iút­¹æÕ†-Ÿ aþ½E>•!Ûûc{½úºÐ/™åL HÝSA0ê _bßþ<õ}yº*H}®,3Í{ìpd[VËØ÷ìbÔÑOô½³µº~>w»€ÙTA§oU}ªn/,ƒ`¹®€dš¶å{ þÔáÈ´zPÇø+Û<\ ÃÏCS°* ÏAaŒ3òC0`Ά$ý5-×%ø¾ót-Ë7™^«þ:°Û9OyÏs蘢®îË®®;Óñ9è§ 2Ë uxtóÈ×`àûÝïRò±ÿ û$Ûºô¹¿kþ!•#W÷›þ\¡üðÚöÞ\Û{âx|o°ôm~FÚpÔþüz\›.d°ðàuÒæß÷*5Ý•š1‘hÏÝE¾¾ƒ­½9fßu eºúÎVâ÷­DQe0'ªPÝFž|ªK¥1’m~¦ƒ~È•oCï›ä;°ºåZ×1}ݦº"ŽÐ¤ƒØùÈ>Ùî¨<Ÿî˜±‚ÒÉ´“‡\ùæŽB»Ôt¡Ý\}»´B=WX Yß¿×<ø‹­¢Ûú¬AÖÁÈÔõ2w8jùŽ9:NÉÖÝÓ‡i`¶Ïv|tɰp$Ï…l›k]»Æ‹ÙBMH°í >}?û®y„ÎÈøÊ:ÅÌ7(™ž ½"mŒqH®ªŽ®Oãc GáìîI¿k9*Ó{kø­?nzÌ4¿¡|Â’ïÛ`ºÚφä‹*”Ûê‚Q¬ã6B®¡Ai¬Ú¾;’)| ­`µËV¯ ݱMÛ` J}ÎXC}®„3qm«kž¡ã»€9ØNPrE•k« F¶®“>ƒ}§RM2=ßÕíÔ7 ™ºÖú¼Î¶¾>U£©™¶Q vs5Ä!U ×<¦|ߨ>!E)†)*<óÊ:¹º^BÆÊtMg\¶çt}æ”ôy H}ÏÔ\ãLÕ [8º‹ý€_hŽ9žL]¾^UZ²Ákw—!‹…¹, –^>Æ‘u0ñ?8ú„ »e:“)«O¾ãdº¦Æ G¾ï}û¸iüÏç´…r ¾Ÿ …Òß_Wl S òÙž¾!ªo!€p„8»ìƒÑ>Ä÷µ&c…'=(ô J¡iÈk|vHÛ¸+Wµ¨½ ñŽLÓz®«i™¾ó³Z3†)ÂRȲ\Ë YÞÐ1`}–‰8MÙUSh`œÑüF†%Ÿù™„†§Ï¶cHØéÓµæŽô†É66L}̃âÿ¾Í½®K¼7¬u!d åºÇ!Áh€¾ã”†,Ã$d ‡+ÌùT•|æí¨BÑþX¡M\÷¯pd«”øV5ôí2-»ïg<Åß˺þ¾¦^çd)¬cLÃ>UáЪq ûeLU¬ÔuÝã`4¢±2S/×ħ”B«G!Ýj¦×é¿ëƒíå>N€™ÊR/¡æì†ó]¾kÙc¯ÃÜcŸ¨b™Oˆf\ö”Ó‡Ìsìy¯.Ô{l0Áhbcw¿ ѵ,Óø¤®éMó9³é G¡gImê7½F?˜ÇxàˆéïÅŶ]÷Øëß'4MÙåR½²<9,×I˜oEا=R ó}SCáØŸÇTma”«x?u!ÍlŽî·¾\ëæª$Ù÷m€ú„#kÕ¨c9"ŸŒéyÓü—óß‹ÉÒÕ%ŸùNQe ­ÚŽ ¦|­*瀕ŠXÚ£Q~ÞJ¯B!ßC/ZQ£óù¼ô*L.æîWÒCû ŽvÍHåÈô¸kzÛs]p›9«O1ÿ½ØÄ–ºæ=u¥+¤ú¤ÿSp3O²5f¶ƒ_;iþzhr@Ǽ¿‘­bä;žj)1†k}Â’íuSY²k®KŸê“é÷!óžZh ->Óõ©Š›t-'¦*u †´É£LÄÔý¦‡Óº¨ NèXõõ¶ “mÌÓ]ŠÇ໑ß׫X ªØÂuŸuåsˆ¡kÎÇš«OC¹>ãm×hÓçýέÂ5ôD•`”©X*®î0k‰Ó0­35ÔjXz/û}õA!wç%ýúz„ž¡å8b >R K]Ë]ºÊd3eõ)dþ¹ ©`ùtöaªôÇÈö=˜cUî F+±ô[Hêï®ÑÔt•®Õiï÷ç2ž—hö_4´„S5/ÄÒ3C¥–º–[•ÉfÊe«>÷áS!I±’Òw]CÚÙPc¾í]«õ6}Ìá £[â€í H¶upu½ùV”Ú€ƒTƒ’HÚU%¿Ðë6õ©2u½nI}ºïlDzo«R UªQÃ̈3²}Qø˜ëK0ÂËœ=S@êª&™Ó£é±®î;—1ÏRMR©W•Z]Ûk÷V+Å®9úIPHÙ·•Âûлí1Í{Êâ¡lcFû^ilC0‚Õ=[@º‹¹ñëêÿ_4~PšZêa#劘*Õ®8]ê]s>Ls>'®Ç»æ·¤Ô«QcQÇŒŽ‰`„ Sôl]j®î³>£»‚R¨)Ïàôå¨R )WÄt¹„%‘t»æú†Sâóyv=îZÆSˆˆÜåã‹Â§E"# 4ö[o¼\  ¦ÔŸ¿akÓé%Û||Í}ö–rØH½"¦Ë),µRïšë O®š!Õ'Ós)}ö±V¢ôñ¢S#aTc°mµÛWïrsu—}­—!%ùv¿u=¶„ÔÃFÊAÏ$ǰÔZC×\ß홢ú4W•:]C'¦B0¤Æ8`«A¨ý]G¦ùÙ*@j(r Þ³®TäÔý&’Öú›ô K¶×Æ&Å*“OudHÅçµ!Õ'ÛóK¿SX*‰Œ°€>l5¤èµMW©¨áÉ4¶Hýšß+ºÖ;öwÊAI$¿ª’ˆÿ—Ô·•*“ÝÐêS×s}–µ´¥Á‹ 9àÙPëgKô“»Ö©}>&©«J"ë K"á•W×TjÛÊtòg:)tñ PK½ŸKV‰T#D'¤Ë¡k,-H…®Oß3²”ƒ’Hüë¬K=ìÙøV\rÙ^÷ hµrlz>w¶6iŒêSÈ4¡ïw¡ÍT­Ò/]%RŒÛÏlU£»ˆwù¸äSdº+B‚’iú¥åÖý&’Þ6¸ä<È»‹é⌮“¤Üô­ŽwMï{2é}²Y´Ë-”‡îúÓÑ|F#$I/ÛÎmcŒä>ÞÕcU”L¿ÇÒP´RJ"ùV•Z¹òv1u7©¿›L]iZªk >ëÜ¿ÿü¾³{|ïÍð`Tes¬ED¤:\åPé4rÙïåÒ<­rýžèÍLÔÇúV—tS4n]±ØƒG!#÷ª’HÞã–|OLlïëõ¦±k²½}ÃS!q†"‘ÿöòZŽÇ›lOW¹ž¶r;¥Ö¦h.ÿäòsëõ*×ëI¶·£õ‰€îb>[ô= Ää®ý§*´ÿb£¯{ÛÀƼÎ&9lCÓge¢o{*ÛZÉíúÛÃïð÷þÒ×û«-ÆP$245ÜÊJªRDÊJªò&Mó9I¹=)¢Rªª”›>0Sé¼kàªþoŸeõy}Èr|ƒRŒ v!£kRÙŽ.¹‡%׺ëïC×ßÀœïƒqˆ@„ ‘û瘢û}ºqcÖ•vk¤ùù#¥ˆˆ”Rþ4ò{y>`PËåò#Û«y‚óùŸ¾Ê×ÓÀBºÂBá¨î/•µÍ7ű&ŒSŠGNÛ"4,MšR ŸìéÝþ¶×)žóv¼0§P$2ø>F64åë k`j¦n.ý9Ó×a¡Èg]Rì bœRrÚ–P>ã•T}ß“9Þù«S}ºætê¸Ký{Î^ÓhËÌÁDW¥•²¥« ³uyu¹|Uì÷:§PÕHñ=·YkUIÄ¿:b«,åö¾„.ß®9}Üeûmû˜c jñ]iX-µAYº ŸâA›qJñXÛX%ÛØ—®°”˜¢¾BƹæÑr90¿&#d+´ôVm|¦jhS¬0N).9¿>ÔîtW׺XžËýýéb» Å6–2'#dÏu¥š.:¦²¬!R­„t¿Å¶þ©¾ç6¹?•ï ŠïoÛüƨʤ¤ Gï>þÉÁxÒ’i穟bE€qJñÈ-ø åÓd·”û{¤@îÛ+B0ŒU£•V¡h'ŠPŠÆ)Å%Å¿¡¡lb˜¸y›æk[ÖØï¡©Ý˺Ît#dmÈ8#ýµíýL-Oa˜~i)V§—ÿ†¦ä{Eœ«+.k«©FXŸ³(ccV´Ï¯‹„›‰+ŒSŠKná¯Õ·ÒÒgÜRì¡#öõ›ÁxÒ¸öÛŸ÷óHYŠ9Æ)Å%Çð7Ôƒ¼'Hú ÒIDAT—°ö@Ô" ý¬îqUÆç4…ܳm5R<È1N)>)n_}ÇñøÞ> oXúh» :qËáonL#doÈØŸw8úüµ˜ÆM-µ7ã”â³dàŽí{u}†V–Úçô·Um‘î€D•èÁ«Ñ·qüG´I¸§Ÿ)þŽb @}…„¥çÇCúÜžd­FÀ“~É«ª Gø–â›qJññ S-;æ*pç{S˜ƒm<¤ïxʵ"ÒÝ0Ú.Ó5]¶KC“Þ›qJq2mWÌfN]· x<þЍù!a†žúÞ<-ö3Ï¥¤ÖýÆ8¥x©]Hìkú8HõñU"#¬Šo°ÑŽ«› árï~‹}ÝEâ_g>¥íò C+.STlôï5kC‘^%j†]ÔÁè|>/½ X¹¶11…$Œ+µî Æ)Åɶ]k¸úÊ6–ˆP&ê`´Ûí>~'(anÆAØÚc¥i¤vàÎ}œ’išØÆêÓäDDt…‰:cê`ô³-µKM¿ù#­ÏtR;pç6NI$þuöåSíKuÛ¨ G0ÂêL9ΨàÔl6)¸S§$’^Ï—)D¤¶m¦*Qû;ÂŒ€Ö0¤ÝPíñÍÐ’R;p3Ni}®(õ©PN½N¾Ôù¬a,ÕÔFÀSHãy‘–^·â§EŠBêÝoŒSŠGŒJ[•+Õ÷8#¬Ê˜¥Mój¿`–µ8Åxpsaœ’{ÞSìg¡ót êÖŸ7-¬ï«É|P%šÁ«RV×Ç}4ÈÚ½Ch•Ò“JwP‹qJnKž”„Á¢xwÇ|£k,TŒŸwŠF€ƒs µ2‘ÚHqù~ÚRë"(Å͸}J(zLcþN3U¢yŒO¦ª‘þò“z÷[nºSß×úœ8™ªDSu%‚`„êÓ0™^cênÃ:¤TåÈiœR.'%êw›‰<Æ&ÚªE¦›SЦE0Âj…^¾«?nz-iè~›W]×êw›™B‘k,¡hZ# ƒÚðê ’µj4àj¤/çî·˜Ö»¥WTú®shÈZ¹¡J'‚ ñ©éÔëgí¦!W› o)w¿å2N)ö˦ûŠæG0Â*uu“ ›wŠ…}Ì-¥î·\Æ)Ù®êR§Ñ§›‹©J$B(ZÁ«:ÎHm¤Lƒ@¿_ïw.@÷Û¼|‚麪D„¢ùŒ€ ¹®6ºäÚýÓz·ôJ’Ï:Åç´¡û:U¢8Œ¶1E_㎔+MD|qå”LÓ/Í·¢ôñ%ÒžÕaW•Hÿó#aµúŽ'ê|-fÂ8¥ù|½×ÚÝ«}™B¡(.#¬^ßû™žOõž*Èã”Þ¯í} ½aÙc°U‰ôeÆôù¬Á0ðiX9³C rë~‹%@|Ü Q ëxBÛúR%ŠÁèÁtVù5î¨è?(˜JÊÝo® dš~Ÿ°Òî×¶±E]U"ßå`^Q£óù¼ô* s¦€Óu#¯FL¹Ñc!÷ÇxZ?D(åî7Óɉúó\ë­ïÛ¾U"Ó4X^ÔÁh·Û}üNPÂTúŽ3Ò«Dm¥èñšâõoAó‡„äÖý¦N;u`"¥/ê`ÄÌ5H“»_#')u¿µLw¸ö§ÔãþD®@¤¯Olï>Œ€ô†®”I8B®bî~ÓOXBï§$Úeø>Õ^Ÿ*‘éwĉ`„Õry®möã_nôˆõX¢û­oטkœÒ÷´ö¯õ ©™¦CœFÀ“ï8#ß«U8;Äš¥Òýö’ÎBªD¦é/‚`lÚiÕ¼ÅÜýöZþýŽ yw…ë÷'rºÎò@0²¡ç}ŒèFÌb¾ú­í ÷ E]ß}†´Œ™ Ê£ àôýbI`í|ºß&_‡€±Dístååÿ–^ &]š«±{ ºÖ®jy Þa倕¹kÿ‰¼Çù½î61BÑúP1zøºD_WÌÁTU2]žoëʺ‹x݉¾+éÏÑu–*FÀØî~÷>0µªäºOQQ¼+ºíÏ&>U"BQ¾¨OcV}ÔoÞn0=u?6¢ý«zúT‰lÓ#]#@Ó÷{Ó¾î¸Kk Œ.´:óêZÓÆþ™æ«NßµLBQ¾èJ\$Æé¸[º¸Õ›¶†„"ÛôH#`DíÀÎ/Ÿ0.kUWëân“ ]gPQ1C<}0'—éq¹+#µ»ªD„¢u¢bt}µ‡û¹°oæ0ŸÐÖ]¯A~FÀHºw˜‘Ö¥Ýnlƒº¹}èJЯB£B,¯=IyìCH(*,#TŒÍÐû©áˆÁ×À¼Ì_Écþ¾BºÎ`B0,ºÂ‘ñæq´¤@è:ƒ ]i@F iQ«¶…|V‹\]d„"ˆD^1:ŸÏK¯ !{½Ã‘ŠB®FÃ:EŒv»ÝÇï%ÌÅ{œ7sÕî«êîgOD(‚¨ƒ3}§m€'€å„~@0dÉ|E°!²ÒçîÖ@‹«Ò‹®†S½¡£~å €yÏËÌÚï%4}ÏÙkÚç¿ìªp¡b Ð~[7¡˜_È8?ºÎà‹ŠàÁu…¡ˆ¡!¨²D×ú b8Рñró#¡/‚ ¦Ó†#Ó® E胮4 KññcŠ€È´û$U"ŒŠàÐ^|÷û‚ !a,# CŠÚ 2BÆD0¤£ø<9a<ÆÆ# cŒ€ùéÝÚEq¹ˆ0>‚àÐÞÙZýÀ2ô±~쎘Áè@–e×w—‚¯ãÁ$cH_ÜŒ©P1DíÑ¥ý¾Ë50¥y*FõQ6›l69Ö³,µ:t¿ÓÅéÌŒj9o²=]åzÚÊíx² s˜>5ÜÊJªRDÊJªò&M3ùR‚M?ÆèÖHóóGJ)¥üiä÷&ò|àÃù|vÎj·ÛuNj·Û‰Hdƒ¯Û•kº!Îçó,ËaYé,‡e¥³–•ÎrXV:ËÉ}Y­é»Ò~J)o«tðY¥ƒÏ*|VéP?«yÆU¹^gY@o|%ÀÁàiž1F  bðD0x"<ŒžFOé£ú(›ÍF6›¼åìCÍe/ûK3Ïzá›ÇgÕ\öìW1à³Ê@-ÇÍQÚO&‘`TËñx“íé*×ÓVnÇ÷`IÝŸKsù'—Ÿƒ\¯W¹^O²½ ¶‹؇š‹ü#-Èã³j.ò¯®äÄ~µ0>«ô}†"‘T‚QÓÈ­¬¤*E¤¬¤*oÒÐn/Ïãs)·'¹¾¾¯”ª*寇7?ï}¨‘Ë¿Z~*¾éy1ŸUS×"U%O©”íiØwP¢§^ǦRÊŸÖ ¹ìåÏõ êî“F0º5Òü”¯F üi¤¹-¼Nèñ¹Ôr¹üÈvËAwvžŸUsù'uõWøˆäñYÝšF~¤–=Ý3ËòٯʭœþŠüÛld³ù'ò÷ÄþR¶§ÏP$’J0Bj9n.Rþ‰gÉÿ/­vêZäïõ*×ëUB÷L´ê£lþµŸÕ_‘Œ“]Áè§”òÖÈ£BÙHs£ßÏ¥¹È~s‘òÄ™Òb<>«¦®¥i.²ßldi€½ÏýªÚn¥|½„.êEøìWÍMJµÛs[IýK2ŠYÁ¨,å§©¥nD¤©¥n~¤ä»<ŸÏ¥¹È~ßÈöJ(Z”ÇgUnOÏAòW9mK)·'9ñ¡ÍÏ㳪þ|\oM#?4ŠóóٯʟÇIÇó÷ú·–’3û¨¥ó%²õñÕ^h ãçRËqóÐ&Çï²1Ü…t|Vê.Õ\öòOþò9-Åã³R+zìS òø¬jµ¬Ê)ˆÃçç•N0BRêãQäÀx¢ðY¥ƒÏ*|VéJ£+ ‰i¤)ÿÐ $Ï*|Véà³J#€'*FO#€'‚ÀÁà‰` Ï»vo^ß”]Ëq³‘Íf/ÜÀ€/®J×M«ƒlå(—šÂC0‘F.{¥BÄ]†¢+ @F_Ò©~a'„ ÈH-Çcýú¶ó˾o~F²QAèý¥ª ¾FòPß`^ä´-¥Üþ•G6: Ù€/_Æ¡ð0…€q(|ŒCá` ãPø‡ÂÀ8 _¶z|8ñ¸Êj-Wëy—l¼(ùÛ·/b-_·KÉVsY¿.­Ö7êÊ+¿ööb&«½®î¡!X´ÊŽïÈVóU–­Oš‡‡'Í“üæã|~r×~Áÿ÷CÓït©Õj^¾ë|s p­Å÷õë×Êû¿ýöÛ³û’ùc¶ÜnÉ[‚+g-ó•µÞ¾:"É|ž‰µ\/“Ób2,ž”­çÉv)’eÖëvk‰$ó‡ù<Ù® f«Çÿ½´Ô*[n·k‘dþ°ZeÖÉ«‹uõ˜žªJU¸ÑÕ½²ä‘,Ë$™?<ìn;™åX²š?Ì×Ûµ³^_\ÊZ®Ëq¬Ç$YZb9N^¥Ç‘UvÞZ«^j¹tDDIJ¬âߊW¯ûvŒÜõVN{]]kùºÝ[;⬷ÛíÖI½Ï>Ý÷Õ ZK…ϲ¬lµ*˜l5_e"Îzûº´²¢á–7àJKeI’9ŽS~4I’}민àõ¥®¼:ˆH£³º•œõëòñq××µ–¯¯–¬V‡["Ë¥ó0x°–¯»¾òRÎzëH¶’l·˜8ëíÒk·àï/òmõR'¬óW€Â‡+sn|ýúµïA±þ/‘0E×ËßÜ`œ¶ºº-áeÝ£ÅÀ8>Æ¡ð0…€q(|ŒCá` ãPø‡ÂÀ8>Æ¡ð0ÎÀ¾«[Ï÷ß_çiúÓŸºÞc4ÊÂ'"þóŸ¯?áw¿û]?[`tZemzó™¿©>ßfRL§þ¹›WœäGÔмð•f¿5©ÅÕ?°âWâ“ùñZ’y£¿I­õ?üð믿VlÃÛç@¿«d>Ï–¯ÛíëòÿþÂSêT®ª3¾clÞÑâÛÏ.´–fEJDD²$³K’Dösgd«Çf3i­?þüéÓ§ï¾ûîÚo·Ûíàå9˲bʸñ(Í* Y]]ÇqÊóùœÌö}i*ñ¢'÷¸Jò:—Ìw XË×ui_õ~úé§?Þ^àú4ä‡Ýßw¼ù—f,¯Zíé“ËM¤Ã+—k}ÞàMæÿö¿ÿw²Ž‡ÝÂU;öò<îÿ³1‘dþð¸úË­÷"gŸf{3¾wÔBáËV«äÐ4)fûÞn·¯Ël>OD¬åziYy§í¨š9ëíví8ëíöué,_óY)kúõ×_øá­u~³VÕ+÷vwŸ™SL‡™¬VY¹Q¸¶v3¹e»·#y§|÷6³eÑvt’ùé8àñjÏžlYùÔoY’XŽ$‰ˆd™”›wÎúµØiÛÿþ—¿‘Šm«Ú±Ùj^ìþíÚʲ£çüëré$I""’$‰³\þÓÍ÷rþivÈví$óyR~‰ß{y©Ó] ÜÑ; ß®Ž<&Ρƒ“eÙnnoËq¬âïìò:ò?÷“¿ú¾ûî»OŸ>}þüYk]·­Wîê¾îçoËÚ½ü¾8ΓbNËÝ—–ã&ªÜM ^ÔÐÓi3W[ñ䢑œe–³´²$‘,ËnökÏ·­â=Z–$ó‡y"â¬ÏŽ#Ž“W¾$I³r^y/•ŸæÑŒïUÛQ½ÔÙ®îç—³¼s@§øóYåÓ@><8ëúM¾?þôÓOøÃ>þ,"oèá^‘­çu»´ŠùÞ®yÓÛ?{rfI’%Yf--ÇÉVI&–³lcÛœõv›"Ìå|‡:Ž3O’DÇY‹ìkcs0LÛßܸ4Û÷yËà=]ÙÕ¾OŸ>µSõŠí/š3Y’œv•ßÎùê×ÖYñdËqdµÊÇËq$Ij4y+·ídÇÞšÇÝY.³ù<Û5¿n¼—îf|îªõ¯¬9ë×e6Ï»MVÑÙ²–K'™Ÿœç§r‹óºÙêñá±/¿>þñãÇ_~ùå—_~©{6£|9Ë_Ξ`-—VñœyvÚù}Lœ×Ci>¼ÍׯT=Ù²$“¼lX–œî‚s•Ûv¾có™Ô‹í]/­³çXŽcíËÕÍ÷RõizÜ»÷/ñ__/. ÉÀ&¯çû￯óÍ ¾²V!™?¬¬æ[f|ÇH\/_cýÊßHk&Ig¹¥lÁp£lñÀu×Ë?KÀ8>Æ¡ð0…€q(|ŒCá` ãPø‡ÂÀ8£üÊÓKxQ>azIïÀô’W1½$0EÛ^²j¾Ÿú˜^²ÉsÞ‰é%16Û^r?—Ívm­æoZ/ÓKÞ?a‘Þô’‡9rÞögÏô’UÛÅô’@…O/™%‰8—~é%™^hl°ÓK&óݤ•˜^’é%Ɔ9½äí‰!˜^ò¦—nÞô’Ùê±Þt8L/)Âô’@ƒ›^2K’ìÚ`û¦—dzI QN6Äô’Í1½$ÌÀô’8`zI@FÚâ€ë˜^ŽPø‡ÂÀ8>Æ¡ð0…€q(|ŒCá` ãÜøÊÚׯ_ûÙè͵¯¬À$ÑÕ` ãPø‡ÂÀ8>Æ¡ð0…€q(|ŒCá` ãPø‡ÂÀ8>Æ¡ð0…€q(|ŒCá` ãܘsÀÛ¥¤§w*e{_|[Ý\Zë4z~y }û°*Û}»‹MÍ_1Z,"¿HùÿoØÎ‘¡ÅôCë4Xœ×ó§EÏ‹ Õ}lÑ»Œe;«ÑâºRj5é4z"-iiÛ»Ýê»å…±wï蜅oßwÕËs”jQ¶÷ÅÏÓxÖ³(ßQô”çÛ:ŠR-¢lÿ‹oK<ïn ÿÝbž/i~\TÊó¾x¶ªê¼äw)/ Oÿ&t<ï«gÛ©ÈžŽ‚Ý¢: ž‹EéæñzÒh_v´ŽŠÀ{ž‘ôeÿÌü¿Ê>ÿIƒ£ÞÄÙvåW”š©Š{.,þ† @KtE©ˆˆR³+ûÿ.-_þ(bî!È":‚Óè;¢ž¿liíu:ëc`náåùaÇ»¡ÙR o³ýp¿¤ÖÅÍ¢)v¼žý«F‘Þ˜ý3/×½—t÷bqzvÅúó—þR:†xí À»¤»³ò’íyêÊþ?´¹m?ŽËͨ"H±³Ýv÷!ç¦AT·F]ëM¾|!%»_ÜΑ0·ðÙE‡@ÙOoýÔT¾¨š)%"¢ìü¦š]{Ï+Êäæ´ðõÉ;ï€Ø~DZ'›(‹¨"®öSþÒ•÷\^¼î =JÙÞn äíû$±Ë1+ “í'‹÷1;ªmÍ£^dZG‹Å"ˆRõ%Ü׿‘3pŒ¯Oåb8SJ£m¶Š´N_R±%}U&Fèn­ÿüž+‹×ܼË塯–öÿFŸ}ºEÌ6ZK ¨í‡^>ƧS­Ó(’‰ ›ÛâkÏL]ŒAqD‘“ùé娄Êöü0 ‹¿¡Ê†e¥«‹×Út¦ý_½"fWBù6y79 }ßË7YGÏÑX/b9 ð(“¾¤ZJCÒM¥AÑäÒÅŠvWyŸ$£)nœØ °Ìž<[)‰Þ2y{ñ€ÝÚÿ¹Š•䇱CÊÒ“˜½S1HD¢lÛó½ŠAàZÛ9IǾñw©ìmÊþ Áڇ؛‹ßÜtêÂþߟÇ™Ýþ\l?,·ÄJgPÚ ¼0,·óÊ!~Ûv̇ív{ïm˜¤_±Ü_}¯£åÝ7Àpìÿû¡«{‡ëÞïtÉÝ7Àpìÿ{£«{WªµÑ˜±n€áØÿwBW€qhñ0…€q:*|•¿@ 4CœÐ². 1E‹ˆÚ×záÓÑâåi„?SƒA"NèDë×ñ)/ôEÒ— ÿüóÏ—–üñÇ¿ùæ›¶·gØ>|ùí·{oG¯þú׿Ö~.qz âT[ß0ÿøã•÷_Iðd}øPdtÿ¼q: NoÁYÝ;!hqz# ãPøà·ßŠÑàýˆS ñÙ~̉¸Ë蘼 qºŠ8½->Æ¡ð0…o—A‹ˆÓ-÷ü!R/¶FdºBœPß= _ùêSCS‹ö'ÔGW€q(|ŒCá ¤Ñ"ât…¯_ E£EÄ©) ãPø‡ÂÀ8\ÀŒ‰ N¨ ˜‡$?Çpu#ÄéqºŒ®nH!ZDœÞÂÀ8>Æ¡ð0…€q(|ÃW,Ñ"ât…€q¸€¹/\|Ð1â„ú¸€AœP]]Æ¡ð0…€q(|ÃÃ%hqªÒôäF¸A*"¶ûöÑ#:Z,"-••ˆúÕ°Å/ŒãÐÛAZ~@GÏ©ÆqÕcã⃫ˆÓÛ§wkXø6ʶ•ˆ²mµÑúÒ³”š5Ý.˜„8¡g »ºz¦”ˆˆR3ý²Q»”~‰®«Eyaè©Ó¹À çˆzÖöÌiàF*Œc%:Z¸w:,S¾Ê´Œ£qB7vuw=­7G­‹^‹ˆò<;}aT·'ô¬aá›é4Õ":Mw½”œRÅ#"’¾¤ŒÊ4dØ%Ä©[†Å©Ž†]]ߟ¹ 7±ýØI÷å)ömÛ÷_òGDl?>•Î'ô¬éŸíÇñÑí'û¥úpñÁMÄ©>âÔ†¶¾¹¡µzâêR´„8¡[mÕUÝ´†8¡[|W€qøfLqB}ü3&‚8¡>ººCŵWhq:Fáë EÄ©%>Æ¡ð0…€q(|ŒCá`.`°üÎâÕCœn N%\ÀŒ‰ N¨®n—8À¢EÄ©=>Æ¡ð0…€q(|ŒCá6~T-"N;>Æ¡ðu†‹Ð"âÔ*¾¹‰ N¨on`"ˆ꣫ À8>Æ¡ð —  EÄID(| ÔôäF¸A*"¶ûöÑ#:Z,"-•™ƒ‹Þ„8]GœÚÖ°Å/ŒãÐÛAZ~@GÏ©ÆqÕc@5℞5,|eÛJDÙ¶Úh}¸_§©Ø¶Q^hîoBœÐ³†]]=SyÕL¿lDTqÿFë™JîBKuß„ ¬pŽ8¡gí_Àœ¦Ʊ*ÆmN³Z¾Ê´Œ£qBvuw=­7JÍŽ²=/?`ÏÔq¿MýâÔ«©Ç©Ž†…o¦ÓT‹è4ÝõRrö“¾CÐ}ü˜98÷FÄéâÔ†]]ߟ¹ 7±ýØI÷å)ömÛõÂuQ^2ˆzÖtŒÏöãøèö“ý’ÿOyaì½s«`â„~µõÍ ­ÕÇc´„8¡[mÕU»1hàýˆºÅwuG‚3qh‘ñqâ˜1Ä õñ Ìmãâƒ;!N¨®.ãPø‡ÂÀ8¾ñ0þLÚdvœ(|ŒCákçàÐ"âÔ ãp3&‚8¡>.`ÆD'ÔGWwTÌ>‡–' ãPøÚÃ98´ˆ8u‰ÂÀ8>Æ¡ð0…ol >‡ö™'.`n CÑ÷FœP0c"ˆ꣫ À8>Æ¡ð©Òè„‘q¢ðµ¡h´ˆ8u¯iáK×u]× ÒêÇu´XDºñfÁ,Ä ýjXø‚`ã…qz› *«:z&¦¨8¡g ßFÙ¶Q¶­6ú4“:zNg¶z÷¶á²i˧;›VœêhxŸž)%"¢ÔL¿lDJ±ÔÑsjù"ÏÏU rÎ'ô¬í ˜óœ†J¢êÇËW™–8Á Ew‡8¡ ŸÚh-¶­7JÍ÷ë4ÕZ/Ü<§‹…„¡G'7'ô¬aá›é4Õž’4Õ³r•ÆžˆˆŽÏò…˜¢℞5<¹áû³hẋhæû¶ˆH\¼ݘЀ4qº¿ ũަc|¶ÇG·Ÿì—òmå…aãFdZAœrÄ©/m}sCkõd·´.8¡[mÕUã/h qB·ø®î˜6.ƒn™'~ù‘â„úøfLqB}tu‡Â7r&Ë sÆÄ‰Â×#2hqê…€q(|ãgL÷}0#N¾F蘠EÄ©w>Æ¡ð0ßܘ„|\Æìîqjqâ›o7õLŒqB}tu‡Â7f\…€žL=N¾7¢c‚§;¡ðMÈÔÒèÕ¤ãDá{ ŽÏhqº ãPø¦eÒÝômºqâæÚè˜ qB}\ÀŒ‰ N¨®n=#:>O·{2ÄéÞ(|ŒCᛢ‰¥qSŒ…¯†uL0|ÄišžÜH7HEÄöcß.? £Å"Ò"U¡?ãúe!â4pãŠS [|A°ñÂ8½M¤¥ûuôÍü8Ž+©i}ÞÃDœÐ³†…o£l[‰(ÛV­÷+/Ü–ÏCÏÆ34CœF`üµ¯È§ék§aµøþøÇ?Þ{Э{<ЧÉk§a>9©Ùûù矹€÷7[¤OƒÚ]Üýþf‹4cäïñ0…€q†ur£ëþë¿ïú{6öÝÅú»C‹€q(|ŒCá`œañ@hñ0…€q(|ŒCá` ã æG ÒÀ R±ýØ·[_»Ž‹H‹töû—y–/¡§ºXsñºÞA]îŸþ§[k6‚8 £ðÍ”Úh-’÷R:iëháF*ìäø£ÓTëhẋH—ƽÛdïÚ‡]Õ­7ʶ‹¾g§/ƒŒj}Äéâ4ŒÂ§ÔL§©Î?ó¢—Ò&-Ú‹»ju+/Œ‹±n¥¼öÿì§Czݸöìw¿ˆ¤/é@Geê#NW'ÊÉ ±}ÿÅ]¸‘ˆíÇ­÷Ò(Ò"ëæ7»S·l?Ô × $ßøÖwÐa÷‹Ø~<®S8]EœøuFWzDá` ãPø‡ÂÀ8>Æ¡ð0…€q(|ŒCá` ãPø‡ÂÀ8>Æ¡ð0…€q(|ŒCá`œÿ>ŠèØŒvÐ÷IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598278228.0 PythonQwt-0.10.2/qwt/tests/data/simple.png0000666000000000000000000002774100000000000015342 0ustar00‰PNG  IHDRFF5Pñ pHYsÄÄ•+ IDATxœíÝÏqãÈÚ¦ý[³¯Q1³`:PU¤6ÕF@ÎJ ¨. ju|x!ÑÚ(èn’‹™éˆ/Tè[”HФ Df×/BÑ’š¢ »ˆä“OâÏÅÓÓÓ³ ÿzbAaÐøï¡7H—S•Ur‡þ·1²ùJkúýµ¾VQÔò²*¥ìî×ýþ¶Ã¿÷\¿gˆßç*e•“†ú[$ƒŽp.ÞËU…ªƒ• 6tŒ€Ør¡r«íàU…j/¹º–·¹zî Ïäš/òÐ[gEaœ…Qž[Õ{ÚE¾®t[;ùæq6¿Q™o–M^®ºUåüë³Ù\7e›âêuyo·XsU¦ÊI&Ÿkžïy&ïTÝÖr~ý{l¹±xp Ï(/­|]ËyIƪ¼)eU7Ï×|o¾^²ÚØÆ¼”\µzŒŒLžë&·GÿÎ÷ó{çgŒÝ)b[>wç¿÷åÉ_ÿ³yž+ï{©ÀIXJΫ®›¢hf^Þè]•©xyã]=ÎÕ…Šúõ;«å7¯MÞÕ*Z­ÉYå͹{Ü|¼ÓêK#»÷Ø©*ª¢¨Ù¶VK^uµñ†ïªÛBE±ó½=Oäêêõ1òòuuôïl“ß›­«‹íŸñNU½g[Z?w‡¿×UÊ6ÿó˜zÏ¿5€°(Œ€¸*S–m~¬–ÑÖ#I’¯µz?¶*ç - -æ«.¯ëæ îuóú˜ùúçÝãá½7Ût\6¿þÜXí­‹¼×RÍö¾üÞ¦Àªk½ûÖmKÍ Í×­ï_¿·î¸ìÛ~“7çüµ3ãjí­sZå·Ë©^?Y³=‹Å\oL}îý½EÒÆ6¬ÿ^WÚv!°”œ…‘Íså›ËBKßNU‘í<~UYkU.’¼œ«UÕNî£ceM-ï×ÏùÚ=²ùå8c4“ä›c£œµ²—7š/L‹å;óúwÎŒŒœ¼Œìú{fõÌûØ«²\ÿ[ìYælóÜ/ÛóÁ¿÷À6¼þ½¶@tŒ€ز鲼¼âµÜ©¼_¶x¦ÕòU–ªªúãE‘¤Íå²UAôÚ…º<øækUÎ×EŠ—wµêªP‘eG—©NcV5Ä‹™Ì‘*¬]~;^ ž³í‚¯ÓsŸº ïÒ³œÄ‚ŽÐ#cKÍóÕq)ÞUº­÷èlrÍç:7®nŽ9i:Nv&³¬W×Üiº:í¶ÃÊÔ^Þ=Ê9­–jìåñëõ˜\å<_]f`éôø¸êVùúVµëcç£/rVšÎÐkKM­êƒcù½ÙŒuGgõÜ/ˈ‡Š•cÏ}tÛŽü½/Û°ëõï½€Ð1zfò½žÈtûr¼Ì˱?¾VÝt‚¼«šc’Vgi½t.ÌL—¹•1RýØá“kuhÒúø–cöÙØŽZFÖæ*ß9;¬®z=øúõXžý­6ù½ý¡u1¹:Þ¯~èõÀøSž»­—mXý[4Ï.÷Îß :F@ïŒò›\®¨WÇìÜÖ²ó\ÆäÊm­Ê­Î<Û<’Åäùª›³>>Å;UÙα.ͱ*m‹{i%×¼¥:èúåÁ¹rãT{§ºÈToý9ÍÏžeµçí1=/Yìj“ß«³ô\í%WéÍáC'=w[«c‹²Õ“¿Ù[råm &tŒ€s0ùÆKµn›¶‘-Wg#½Ö(FvóºB¶Ô|³S³u=œ–KMkKg/‘ì|>sMc?°lÕ-7çN4¿=V×mÚÉtO÷¬Ës·fKÍË|»85Vy9?xM%a\<===‡Þg°yAÂùžSÔƒ9|J¥4`l^ ¢†Í#*Š n,¥cfVÇ·Úa)  1Š¥´OŸ>…Þ„ÉyxxÐ÷ïßCoÆä{]r¿øy¡çÌ;OÁë}¿~ý ½ QELjÂ@l(Œ £m1z=3  #Š¢Ô=<<„Þ„I"÷0È= rG #¯ºxÔå‚«½¦Œuÿ0È= rƒÜñ1^u‘­®2¿«”e…Þ»/v€ÂÈ(Ÿ·+ŠîîîÞý¤‹‹·ÒölcRŸï äÐG,ÛÌç|žøçûv­}»\èí þùƦh¶yäŸGo÷Úlv«zVjqè%¶Ô¢œ©¾=þ\¾vª²Ó:Gwwwº¾¾Þ{ðõz`zžÊ±E·þèŽA=ýó—¾\=ëùdzžÔúòÇÿÖÏZüÜçúsÈ¢(xP8¿ÕòÕëê•SÕb¹êè3Ö…²,[}µüºcÔü·®²—ÿÿò{Ý£ÜËͲW7á.Öák/Ûdd­ÑòÈ'Gq£cÖûázß•>Ûb£ èÏÇw‘{å?sý½îêüóSßþs¯«ÿÙ}·ûR«~ýB_?ïüÿ~êÛý_ú¢{Ý7ÓÕÕ³êÏvŒúKŸ"f”çVÙ£“¬](6Wù¦ksè¤+«rsåÈ׺­g*sYI®ª´Ü¼µ¯åó…¥VÇ Õµ¼Í%¿”±ë^[•ó\EQËå¹ü­“Ýè$3“\Jn=úÂhm=éXž´sþ!-ƒbI' rãááA¿ý¶Êýã»Ý•êÿ®oÿù©ûï?ô÷ýª(ú±Q̬v»{é÷|ÿÏÿ¨uuèéÿYè^Wú¯7ÅÑßúúïgÕŸ%ýëâ>×ý¿èõ8>½y½j ϧýëèÿÿõô´ÿØKÙêQNVzt²—復\,Þßc4S­*«VSYJ~c"`råë*jf”6«ÇÝä…Š¬Éçšo>pfd–^^vïÏ,Œ¬ÊŰç¥bÒ1ÄÆ·Š7ç0È=Œß~û~Ún÷ù‡þë·oúöóÛêx Ý"FÒóó•¤çîâ÷Ê›îÓ›’çó•²õïùr¥+ýÔßÿß™ £žÇ§½¯÷Q äq:Xø¼ËêÒVztNrV{뢶£—jµVɪœw» ¶13ißaÖK/?»bÆÊšÕͧ=‘^¾.äìòÿÕâç쥬wr^Zw§T–²²*Ë™êbÝ­òrÎkfogÒ÷J;vº~[IL8bØÈ¶Щ/ù×Óõ›NÐÕ³ê/jŽ÷Ññã†ÞÙ†¿¾éÛÛݧ­SöwNçé:ãtýƆ¶!a½œ®ï*eµÑ|ž>îçÌ|]¨ðùáëI­¶s’Ki›¢ïÆÆ²qÑô§ß—úªôâK­çí~òÐn÷õûŸz~ïp³Ï¿¿=5ÿóýùïv¿»•XÆƧàÜ£“ÍË`E‘$™üFyQ(«\äÑUʪ¥òùñíœìRÚ¦h»±±íèA±¤¹Ÿß¾Ý.dîSŸ>”{´AMƒ-_0q8Fù|qüÊ׋÷.IÇèEtލ6fCÔ÷·m8+í¼ív¡sÿðøÔwgh×@ãÓ‡sn GŠèmˆfÂûŽMP@ØíZ"(Œ\R£õMcÏ)ø„#öA§ñðÇúžÈ¶Ž x<÷^ʱä>µñ©sîÁƒBÊ&VÚ!Aö©wä·Øp®—ð¡›Èžü¼¡v¹ÔöõÔ¶7 qÜD¶?,¥@7@Œ›Z"(tDa‹Äf7/g‹0ø гÒúÕv·‹-÷Áw»@ãÓɹ3>¡ £#Û§+Š$¾±#Î*†ã\Æâ#»]Œ¹Oa|ê%wÆ'|…Ñ;اZ"($$Á¹H… ¢0 -Ñ'¶¥…© ÷0bÍ}ìó‘Þr{Pè…Q gÛ§-Ф-nŸ³‹qI'5]v»˜sóøÔkîŒOh‰Â¨¥Þ÷©³`ðAÄÆºÛõŽ 0aFè$Ö¥…±#÷0bÏ}¬ó‘ÞskPØÃ«.2e•Ûÿ¿]¥,+Tû·ÿ‹ÂèzÛ§F0;Úâfð9›˜—tbwÊn—BîcŸÎ’;ãÓ$øúVõ¬<~CÙr¦ú¶ÖnmDaôAìS-"Ñ{}Ü £àT×Rž(ŠÖl®\µê¦…ÑÐF2ðľ´0VäF*¹m>r¶ÜÇTP«%«×+§êÀU{NU–)k>*'É×*^¾Wiýë|]¼<.+šî{”3VÖ¼>W±Þ _«xÙ>#k–~{c¹‰lïO8’¢HjÙâæF޽KaI'6}¼SÊ}LãÓYsg|ê‰Qž[eN²vU”Ø\¥Ù}œSµQм²*¥^{;^uQIåB »ù³µfåBs»*†ŠÊi‘{ÝÖ3•‹¹¬$WUZJ’_ÊØ\fýüó\EQËå¹ü­“Ï•7ÛgÌLþq)éuƒ“*Œ®¯¯·¾Ž¥P€¤Q @Ò¿þuü†ìOOn6k/e«G9YéÑÉ^–û¤r±x#¼“S®›ÍU0ïµ4¯ß3ÖÊÔrå¥fªUeÕª¸*W¿÷M³ÊäºÉ Y!“Ï5ß,ÚfFféåe_J£¤ £˜|x²1²çáá®Q­s‡¤þ^z©å>–Ýîì¹%¨ž,|Þeui+=:'9«½uQëŽÑÇ~ïªØZ-—UÍsÍö<Ò˜™ö”LÒÒËÏ.µY+qŒÑ ¦¼Lý¡ÁjÊAõ,¥7çÐú|¿uî£Î}dlžkYUZæù"gUÄ,Þ|ìEÆÊîmŒfþõ{Þ9y{)ëkUµož{®Ü,å}³<æÜFäTUZMõíÖñOÞ/›¢é£!D<ð'š!-T?Œ•5NÍϧ<‘ò›\E‘)k¾cËEsœÐú{Våú¤¢PV7?¹^&3—²U-çs³êT©\ÈJ²å£²¢’Y”²òrÎk–ooóÅÓÓS²¯†»»;]__ëÓ§ãë¢çvtŸéשÅ=Ò,†”Ú’N(}¿Ôºä~ñóBÏ?¾ÞßÍ!ò}r°×{ä9œÛ¯_]—Ð6¸JYm4Ÿç:µ4ꃯ >?|#éà6³”†NxsƒÜÃH5÷ÔW±Ë=õ "àlGQ$I&¿Q¾¬Ž_ùºZ*¿y»Í,¥õà`'vâ³7hYc¼Ä¶1>µÄøtÛ,UÅÃ(Ÿ/”úß¶Ô¡“äè¡“T.x76乇Aî¨'o:±#ŸytnqÓ²>IªK:C9×n—zOƒçÎøQ¼ 0êÑËd#‘ÙØ)Njq3+댥…ÃιÛ!÷ǧ ¹3>M…:I}i!U乇Aî!©³ÒR¸7Ú³.t¡g¥1 ˆ3@Ð#^Jí0>µÄø4iIuŒ®¯¯·>ΖRDîa{䎒*Œ¢×Ì0¦°DÝK‹{ AõŒ¥…·†˜Ø"÷ǧ ¹§zEaР0êËδuì“ÞZÜcªg,-lê0äsOt| ž{*A¡WFèdK "÷0È= rGF}80me²ÑA¡Nj‰ñé459Fè$x‹{¢È= rƒÜ…ѩޙ¶Žu²Ñ{‹{¬AõŒ¥…•¡»EÉæžøø”lîH…ÇÄ^A¢WF§h9mã>u–÷ƒêK aŽ-J2÷„•dîH…:¡Å¹‡1æÜcžD•{ÌA¡WFaŸj‰ pÄš à ( 3n"ÛÕÄž‡‡‡¸fsAîaŒ=÷Xï™]î±…^]<==%û/|ww§ëëk}úôiø_Þqç`Ÿj°Gj/‹‹Ÿzþ`ƒ›Îk„Aýúõ+ô&D…¥´.F¸cD…å4`pìv-ÔèQ¡Î ƒÜÃH&÷‘MÚ’É£BaôQ'uî1…^QÂ>¼o„Mó ( 7Fm1ðl¬ÅM¹…¥…0¦–{,»]ô¹ÇzÕÿ•¯]¥¬r’$[.TÚ}ÉÔŸ+7ýþö³9ÓÀÃÕå["¨IâŸ<,v»–jtú]Jó^Kce$ceÍRÞï>ÆÉù™L*EöоÅ=R乇Aî¡ßÂhéågF«šÇÈ̼ürÏcÌRu–)˲—e·}îîîŽ~¬mî<½~q¡‡?þ8Ûóï.QŸõoéñóMƒüÞ&¨þöŸ¯—bÙžs}~q!ýñG<Ûóýû÷8÷‘¦S:Ÿs}¾)†íI};Ûl?ú¾‰¬«”=^jÑXäªL—{Ž3ò^Þ¬ (_ªÍ|ï±Hïä&²´Hé¶DP“1†êAn"Ëø„ƒâ&²ÛúíÍŒÌÒkµz¶:–ÈÌö<ά»J+Ë7ëmˆ³0¦{Œï/QæcP=‹2wŒ^¿…‘1šy'çuøX¢³ÖÖf±p4ÐÀ“âŸAÎI1¨žq–NSÎ=än—TîŒO£ÑóYiVeù¨¬ÈTkuº~³¨¦*{Ô墔µ¥ÊÇLY¶ú “Ï5ç\}þ¯cdK-o¾©Kû¸ñ…Þ<$6·©S;ãsó@àA¥TÏ‚å>Xÿi£Ë=Ö z]®|íåÍ%q«0È=Œ©çj•(¹ÜYN…þ;F{åÉ\Í1œ‰7C0q¼ö["(ସWÚ> <ï z¶È„geœ¥¹‡Ùí’Ì}ÂãÓXP¡“äZÜ#Aîa{äŽ(Œvî1Ùh‰ F…&mKœ…:I²Å=乯 =I6w&nI£0B'´¸Ãcî)4A¢È=… zEÎJëÇæcÏ"’‡³ÓZ"(`pìv-T²’ê]__o} œd[܉#÷0È= rGIFgYeûu4-îØƒêY4¹÷$²Ýî à¹§TÏ‚çŽI¢0|ÈÄæ#ÝT’(ŒÐ -î0Æ”{JM ¹§TÏÆôzG:(Œ¤hž˜'Qµ¸cªgQå>!äþÖ»Ý(rŸÐø4F £ÈÅ:Ùˆ®ÅkP=‹.÷Ž"mÒ,÷Ô‚êÙX^ïH …ÑÄž®FÑâN¹‡Aîû{>2šÜ'2q #€Æ´ £DºE1N6¢lqÇTÏ¢ÌýƒÙí¶É=Å z6†×;Ò3í¦ÅrƒÜ;ç|dT¹O`â6FC¤%‚‚™na”ØÀÛd#ÚwlAõ,ÚÜGŽÜ;×n7ºÜG>>ŽqwwzÐU‹;!乇Aî!©ÂèúúzëëÎ…RbÝ¢µõd#ÁMAE‰’– jºKi8ÉèZ܉ ÷0Èý}çX%eî,§EÂÐâƒÜÃ,wºE[x½#„éF‰r>¥éFè-î0È= rƒÜÂ4 £‘v‹BN6’jqhV–RîcÚíΚû˜‚êYJ¯wŒGR÷Jã&²nYØAE'©ŽÑõõõÖ¡ÅF*¹mœ?[îc ªg©¼Þ1.IFŒ|à µJ”\‹{$ËiÉå>äÞÍ©»¹#„ñFÄl$·± 0û-î0RÈ}ŒMÚ³ä>Æ z–Âëã3îˆçl’lq`V–dî#@îݲÛM*÷ŒOcq¼0ò^~õ‰êªRU»æk€ñ9XùºPVÔZÊ«. ÕÎÉÕ•ŠÊ ¹}hièÉF²-îÄge±ç>Ö&mï¹5¨žÅþzÇ8(Œ¼œó2öR3ïä¼$›k^æ2îQI”F }zýæØG舠%‚ê Q¾uñóBÏ?vB!("hëä î•ÿÌu/IºRý£ÖÕGþúõë„ß3>Û#ïåׇV¿\ÜqWô‡^ot-tŸKWÏzþ"ýõðMßîïõ|u¨4¦ÂȪ\,^¿Úø< <’†Y%E‹;Áå´Qäž rïÏGv»éäþ—~þç›þúíYõIºWþûW}ýŸúñ»ŒO÷ºÿûJë:èë—+}ýëoý%ék=Zïcì7Á*>乇1Ü¿êÇoWºøë^úr%ý}¯û/?Tÿ¿|çq›Ëc›Ž/•éó}ùç^‹Â¨…‘S]K6ß95ß;Õ·2‘c„Ãl† A¼ÆZ"(¼çË•®îïu¯+é¯{]}­÷<èJõîqkèÝ‘{¥U*Šju;IÞ­¾®c½‹,Ï FsáµÄ®2šÜCîýj»ÛM+÷+]}¹×ýßÍ2Øí ê^ùÏ ]¼ùØ×EÚðÏßúûóW}9ï0g¥móu¥Ûº¹À£‘¼—$#[Þ¨´q\Ëhë¬4 £7ˆ¤%‚êŒèÛ:+ Þ ’=þù©oÿù]úíOýù½YôêÔýý…î¿®ŽYúë᛾ý¿¾æ¬´m;F&/u“¯  uQ”ÏçÑE[ØÃöJ¬AuÂn×A¡­Ï™®>ÕÕ—Óººª¥ûUGéÛ_TsFZk #¯ºÈTÔ^ëÛƒ¬¾W¨Šv- CšV‹;ä¹÷¯Í|dr¹ÿýS¿ëJÙçïuž¸­ŽGzþñ¬çcfã_/å½dl©›²9Û;U·•\]Ëå'|í*e•“$Ùr¡’#¹“3³EâBîatÎnÑI¦öz¿ÿë^W¿Õœ9ØÂh¦¼œËl.›«r>—«Ý‰¿Ò©ª–Êç åªWx/N,´xâì´–êCˆ èßÕÕ3XJ3ÛEÑÆ÷mžŸVÄx¯¥±²F’±²fÙÄ”L®Å rƒÜÏã½U"ropä ž•&IÞ;-wn˜æ½LyBqä*e—Z4ëg®Êôx¹9­ÍMc¯¯¯õ¯»uÝ&ëùÇ3g¥í8xåkWeªö®šY•çÛž-×××Gÿÿºpzs£F¼ÁÒGKõ."jgïMd±¯©i0–ÒœdìêÀkc­¬µ2F2§.¥ÍŒÌr}ƒZ/¿42Ü—69´¸Ã ÷0È= rßÀrÚ`^ÇH²ÊËR¹•f—¥Ê²Ô|^jæœN:$Èͼ[]QÛ;9?“‰ðÒHcÓ÷>5µ³Eb:÷©NZ?œ;o`½ýzÇ4<+ͧºvº1F®®äf¹fîQÎK—’º×2Veù¨¬ÈTkuº>gë#œ ŽÝ®%‚ÄÁ³ÒòÜÊ×ZZ+㪢PQ;É^ž^ÈØR‹ÅB‹×0J-î0È= rƒÜÂѳÒ^x§º~”Ì¥lnOèõkë^ih…ÉFKõ‘´ÔÅÁ×Ãë«¥3ÅYiÛŽc´ÁHÞI&¢¢0[ÜA]»ÂØA‹; rƒÜà w„°QyyÇ%¨Ç®¯ÉÆèωtV*÷©/s´Î}êAõlôã ¢´Q-UW…ŠªÖÛúȪ<õ~fé|$>uV…ÑêzBÞÕªŠBU}âõŠ0j´¸Ã ÷0ZåN·¨w¼Þ›³Ò¼«U×뮑‘-o”o]™ÚDsAFÎJëŽ1¼%‚"‚¶v‚⬴nx½µÔcPœ•¶íàéúÞU*öÞ,-ܲھ›ÊRuÃàÓAA[F½á5×ROAQmÛsåk/Wתë¦(2Vv§cêÖf»7•ÝW(aÀйóµònîuŒ3a«0ò®Òmµ>¶hµŒVÚHÖÍЫS¯,?™Á*²KðO&÷Èû°^w;r?*²ñi,6 #§º)ŠŒ-uSr1G0-[x46W9_hNQ4 §œñÉÙ"a ™;ÑWGs'¨³aœA#«œ;º¢¥I--DÔ®žTî!÷á­v»ï1ìvq‹h| n Р0š¸®Ëi“kqGr¥Ù¡rgºí`:ai! rƒÜÈd>?‚ê…@ƒÂ“2w-‡IDAT&“[J“¢˜• ‘;«CoíÍ În’ã ‚£0B',-„Aîa{ß¿a>’‚ê …€4AZ"(`´öÜ+-^Üí|>z)ŒÉÞÃ(ð5C&›{`äÆ:w.ÕÓAõââéé)Ùïîît}}­OŸ>…Þ”Q`jiÄAøOëW‹ .~^èùaö…×fK‚úõë×™6&M,¥áKÔÓÆOKŒ…:™ôÙ"+ÈI繇±™;·–êdFè„ã- ÷0È= rGFØÂd£¥‘ÅêPKŒ…:ai! rƒÜÃØÍ}dó‘ó!¨“P¡ZÜa{ß¿§[¯w„@a„7˜l´4’ x¿GJF²Û!bFè„¥…0È= rƒÜO@Ù…:¡ÅFß¹Ó-jçûo¿TŒ3Â{1Ùh‰ €Á±ÛµDPP¡ZÜa;¦„×;Bà&²8èØýiqoðÆ}æÎ2ZK ã BHª0º¾¾ÞúšB ¦‰É·DPÆR:¡Å¹¬yC!÷0È!Pá¨CÇîÑâÞ1ÐAŽ}åÎòcx½‡AîÂ$Nºj‰ >„ÂÐâ£Üéµ´¯÷0È!Pá]û&´¸÷`VFîa{mr§ÒAµFaР0B+»“ ZÜœyVvjî,£µ´¯÷0È!P¡– ÷0È=Œ¶¹³JÔAµBa›h«“Fa„Ö6'´¸8ã¬ì”Üy¿ïŽ×{ÉfúBa„NXZƒÜà ÷0Èý ¨ ßEa„aŸj)² èµDPÀä%uYn‡‡fs{äÆGsç~©-ÔQOOOÉ&sww§ëëk}úô)ô¦L ûSKѦīç.~^èù¡×zKAýúõ+ðÆÄ…¥4|Xd«DñŠ$(Þ(0%‘ìvH…ÎŽ ƒÜà ÷3¢‚<ˆÂ°O…ñÑã\èµôNP_¹# #àœ¨ Á±ÛµDP{Q¡ZÜa{ä¹# #tòýûw&mõÔG–XFk©EP,é„qJîŒOèŠÂ€©böô…:Y·¸™•µÔSPm—èµÔ2(–t w„Ðÿ•¯]¥¬r’$[.TÚ}ÉÔfʲÕO˜|®9çê§Æ¶DPÀàØíÐVÿ×1²¥»m$Y]ÚLJ¼í4!-›c8乇Aîa +_{ysÉEGäÐ`ÅZ~Kƒ:”;3á–:Å›säŽúïíe”s5G@@,§¡ NŽ-Bר¥Aí˾¥‚⬴0È!P¡ZÜa{äÆ9rgâ†÷P?ÚjZ¢0B'ﵸ™•µôÁ vsçý~,é„q®ÜŸp …:ai! rƒÜà w„0ÐYiýؼq,âÇ -u Šl["(ìÁø„C’ê]__o} – ÷0È= rGIFˆGÛ7kù-µ j;3Ý–z Š%0È!P&‰‰ö¡0B'iq3ø´Ô"¨‡‡ºEmõK:a;B 0B'´¸Ã ÷0È=Œ!rgâ†]FƒOKïE·¨%‚Ð…:¡Å)áõÆP¹3qÃ& #tÂÒ¢u†n¯÷0È!Pa0ÌÊZ:«CÀù0>a°´¹¿ãLÕ#¹‡Aî!©[‚ ][Ü\†¿¥ ^?ei!–tÂ:wÆ'HtŒŒïhzTLj›ÈÆãáá®Ñ¹5A]èù%«SrGwäFˆÜŸpñôô”ì?ÿÝÝ®¯¯õéӧЛ‚bàii§0‘½¨.~^èùG<Ûƒö"{)ݯ_¿BoBTXJCœÒÎ…žõ,‚z×ÔÞÉpVŒOÓFa„N8[$ rßc€¢ˆÜà w„@a„NúX÷gVvÜËûýFP繇2wƧé¢0"ÄÊPK gF褯7³²–š XZƒÜÃ;ãÓ4%uº>âÑg‹›Óc·ÌâùYß êÕ€Y°”¹#:F@×hz(ŒÐIß-nŸ•÷š üAPÒà-ÆÐK:SEîÂÐâƒÜà ÷0bɉ۴P!S|Z7AŠã¬0¸©ïvSBa„Nhq‡Aîa{䎒ºWÚ¾›Èr¯´ñ™bC ÓßLPQã^iã”ÐK°5î•¶-©Óõ¯¯¯·¾ÞW(!}S;}¿óßJPÐ;–ÒÐ -î0È= r#ÆÜ9Öhü(ŒÐɹÏ™ÊàóÑ&È›Ü j±œ55±æ>•Ýnª(Œ-ÀÐ(ŒÐIŒ-îÔti‚ìÍ}ìdÇñz#æÜǾÛM…:ªÅ=ÖÁ§ë{ýÁÜ ê¬b]Ò»Øsën7uF #t2d‹{l³²Sš Gs'¨³‰yIgÌRÈ}l»(ŒÐÑÐ-î± >§¾×¿›;AEìK:c•JîcÙí°Ba„d¤>ø ö^OPÐ…:I¡Å=F乇‘Rî©ÏGðŠÂ„jq§:øôÕiûÔƒêY*K:c“Zî©îvØ–Ô½Ò¸7¤ônl[ \Š»ÝÓSè­ˆKR£ëëë­„ºÅÊ̬ïòùO5¨ž…~½O¹ŸWä»]0IFˆG -îTÞóûÔ)÷؃J`tŽáõ>E©æû.'%±ÛCa„¤Å<1ðÓÅØ”. #tS‹;Æè\OçÜc IJf„Žéõ>%©çën‡ã(ŒÐIª-î!œó½þ¤Üc¥)Š$^!wv»ôPaÖƒOè(úA'–Q:ú €þİۭÇGv»÷Q¡“[ÜÏÏá ¡^rYE&::ÇøzŸ‚1å²8Zïr‰ívÁ$u#Ä#æ÷Ð×òwõ–ûzƒÇTÏb~½ÙØrß,ŽØíâEÇ£4Ôì,ùA‡ €A ÙÙf·ë†Â¤Ðâ>çŠQ¨¡³ä>Æ z–Âë}ŒÆœ;»]¼XJC'©´¸7WŒ6¿îjè6ø®³å>¶ z–Êë}lÆž;»]œ(Œ0 §@“p Ü)»ÝfljݮF˜”Ýè£?7Ç‚:v€Ää‚:ìùYàcívìrúxzzJ:Ö»»»Ð›@²¸)û¶QtŒÎõzwwwÖÌ9ŸŸmóül{˜çgÛÇùül{¸çŸ2ÎJhP4FqŒíÄá‘{乇AîŽ@ƒÂ AaÐHþ#€¾Ð1hP4(ŒF #€Fº7‘u•²ÊI’l¹PioÏ$xÕE¡Ú7_ÚR ‚”¯ ÝêFó܄ޔIðu¡bý‚çõ>rGH‰vŒœªj©|¾ÐbžkYUr¡7i|}«zVj±Xh±˜+_Vª~8¾ÖíKUгóµnÕœ×û°È¥Ù1ò^Kcµš4[Yãä½d™DŸ•ÉçZ¼~%kÁÄ«¾ušY£eèM™ïœdo´zuåóÅ;?ó02³ÐÛ€)I³c´ôò3ó2`™™—çÝb`Nu=SÎ’Î |}+goDÜÃYz¯™œŠ,S–e/K÷83“k~#Ýf™²ìVº™óºÇ Ò,Œ˜S•Õ2óR¬ü YZ¸áÝapÎI7‹…‹…J±¤3W)»]ç~#ÝfäŽA¥YÍŒÌÒku´…—_ÒjŒ¯UdµÌœYÜP¼sò¾V‘e*j¿}`*ÎÊæ¹Ö/ó™1Zzr?7ï—2Ö¾.aæVî‘ÊÃI³02F3ïä¼$ïäüL†7éóóµŠÂ+_P Éäóæ€÷…湑É眕6{¹ý†¼ô^3š³3f¶š 4_»G'ÃÌJóàkY•売"S­Õéú,霟«kyIU–½|7iŒ–-5÷…²¬’Ô¼ÖhÎÏ–*3Yýòõ‚1ºxzzz½1Hs) à (ŒF #Û\µº aQëõät§*Ë”e÷Êë•W]dÊ2nï , #Ûl¹º)óƽÙ\s?B“sõmãÆYiöpª²JNFy>S]»Õ­æ¯<€1¢c`«rÕ6ZEÚ¾ ô^¾VU4÷Ë2eEõºìÖ\¹ûu©lwinw)Í«®Š—ç*¸'€PØÏæ¯Ëfë嵃œª¢–›•š/Z,JYïTß6Ç)™¼¹×›SU9ÕÍÒœ-÷_EÝ×·ª—-WWûöŽû”F¢W¾pvëÛîH’{”“=r…y«r±wN®ªt»lnéབ’Œšã“\¡ÚUª¥Å–äêBÊo4_–ð ‚Ž€=üK·Ç˜×NÏaNU‘©¨jys©››rOµº!èæÍA1y.k$y/W*6—åàŒ(Œ¼åêU!brÝÌ›3Ñ6—³Ö§ô¯Oëwr~µ4Væöõ¦ÎÆèõöŸ«âjUßxÕűSó­ÊùBóy©ÜÉ»—càœ(ŒìXw‡Œò›\f£»³>m_¶Ôb±X}lœ©¶¾½¯ëÕ㚥´ÍŸ}½ñðá.”¯ eY!'ûÒeâë†@a`ËÞk½äTï[Ó²¥Jk^:I…›­:=ZÊ{½v›l©yn^ŸûÀAÕ&¿Qnµ:S­¨%»>x΋ë4è4(Œÿ?}Õ¸\Ÿ.K$IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626768335.0 PythonQwt-0.10.2/qwt/tests/data/testlauncher.png0000666000000000000000000032465000000000000016551 0ustar00‰PNG  IHDR×ö4ô7 pHYsÄÄ•+ IDATxœì½yx×uà{n­½¯Ø÷IÜ@RÔ¾™”DY[ÅvòÉy“XJâD™$/£|oòæå½‰ò&GŸýÞHú&“Höxlk±E‹¤dm”%q{£Ñè½k¯º÷ýQF£ÑX  T¿XË­SçVuU{î¹ç"BXXXXXXXX\w˜d2¹Ö:XXXXXXX|¡ÖZ ‹/(ÓVˆÃáp8k¨Š………………ÅŠ¾P(ôé§Ÿ®•*_(˜Ü’(Š—.]ZCU,,–ÍððpmmíbJf2™ÞÞÞS§N:thppp||***êëë<ØÑÑÑÒÒâr¹VY_ ”H$ÖZ ‹ke1VÆøüùó¯¼òÊ‘#GdYÞ¾sWeeµÛç€d"í<{Úf³8pà‰'žhoo§(+jÊÂÂÂbu™ö…˜A!¢(.þ`ŒñdlârïÅ3N&’1QÊ`L—×íÝÞÖ±yC{yiMÑ+¯µ…ÅÑuýÍ7ß|þùçGFF¾ö[ß8p𑊚:Îî¢Y¢)², áÑᣇÞ|õG?8yòä3Ï<óðÃ3 ³°h ‹å2í q8¡PèÒ¥Kûöí[äÁŸž:öÞ±Ã.»±±Áíq!„1Á†FA‰Çã7wÜq÷­¬6¥Åj3¿/D×õ¿ÿû¿饗¶mßñ/ü7ymZÖ’‚"«š¢¨Æ MsëqÚ]6611òßþÝ çÎ>õ­oýÙŸý™eˆXXXX¬ËŒ I$ã‡Þ}ýrïÅ»î¸;Xî–ôŒ¬ˆ’"뺆Åy™¾zClüè³_ö^yäß( –¯Žþëjð„ @€@6AÜÔ!@˜¦é?­­’Ÿ{0Æo¾ùæK/½tðËÿÛ¿üβÚIQO Z"-eD):1NÑŒÃé²Ùl ¦d¹Kjÿæ{ÿôÿþ?ÿáÅ—^Ú¸qã£>j™Ñ«ÄrâB1ó?^{YS<üHJŽf䄬ˆš¦išŽ &@Ð]æ­=þÉI]#OþÆS~_`ô_× ÿÅSýU€ @€LÿþŒiýÑZ«ùy`_Hggç·¿ým øþÉS^¤¨ÆSB$2yõÂgUNK¤$.PÙÒ^ZRêõ8½N›ßÉ¥'†þòÛ¿“ŠG¿÷½ïmß¾ý:WÇÂÂÂâ Ârò…œ9b26qßþûRrDTRª¦èºnF¾ 6Bñö[ C?vü½UQcú@æ0A0XÙóW™L&óÊ+¯ŒŒŒ<ÿâ?yÊëã2‰K8*hIap G½ïï·ÿü÷¿Yá„¡«‘”ͨ1ÑHÊÄUVÿ7ßû§á‘‘W^y%“ɬu=,,,,>Ÿ,9_H,>ù³£ÿzû­·«Kª¨h²¦iY#$ÏÉ‘Qbí;·|øé;C#WWX÷u˜×Á–²Úôöö9räë¿õÛÁªAA%iÅHIZRÓ‚¨ë!hššÊiQMËFF%ˆ*¾òµß>räHooïZ×ÃÂÂÂâóÉ´²È¸Ãïÿ¼¥iCum… §TMÖuM×uŒ¢&èX§mx玎7Þ~uugÎëáÀúÍ¿«xš¥@`ÄŒYk—ËÑg|>ŸÏç{æèÌí³¯ÿšÞ‘S§Nɲ|ÿCI:ˆ*U,ÈZF”%ƒzçD×ú‡ïþÇ¿{þø¥!QÓ% K:u0ÿÝûàc’,Ÿ:ujά«ß›………ÅÆ _Ⱦ}ûæ #Éâ¹®Ó·ÞtGRˆ*º¤éªi‚`‚ à‚ÂdŠ´˜Ü½koÿPïd,’Ý×ÿÂ_ŽU~‹/é;±¢2¿ x¶’aVL‘•¿GŸy¼ë¹Ó‰D"ñüþkÕnU9tèÐŽUõM’FdÈ:‘TCT´dtÇGtƒüêR¨;”V UV YDz²žýW^Û´uGÇ¡C‡òDö¿p`%îe¾XXXX,5.db2,ÊbUu¥¨¤UMÑ4]× éYÀëš®*ª"«šªjDòz|áÈØt‰½æW,‘8ýØk» [ÔŸ#æ4Af;Bú_8°ëµÇ²—%ñê–gw­ÓïToliiZk5Áàà`UM­ÝåÑ0hhTƒ¨š‘¾zæ¿ãÿxú«ÿþ©ßø¿ÿø‰=-¥ª˜Ö ¬DÃDÇ aÐ0Ø]žŠªÚÁÁÁi‰ý‡_ƒ'Ÿ„ׯË;caaaqc±´¸AÌ8®¤SuEÓTŒ ŒÍoꌪ¦j™¤I‹²¤€x*âq{Q("´©e‹¹ß:Ìë^y!ëû/tþç¹ æùX÷¿ðÔ³Ç?»Ë,4}Lö™fžUvé˜×)0DŽ~÷Yxîŧ§>îûŸ?ý¼v¸¿ÿ…žyæÀÌ‹P Ü|jůÀÑgv={^~ÜWP¨ð´Ùí»ž=^xà t^Et||Üëó³¼Ý ý‡‰A€èÊ–M­M 7íݳyó¦Ò€ßÐ4à &›%áí¯ßÌòž­Äá×à±?zpËñ<3¤û»f^¦‚k2û‡]pS,,,,¾¨,-.„a]×®k†a†AÀ JÍB3Rl2)ËJ~ð%Ëpº®Ñt±<ªGßzyokó\§<þl÷ƒ¦kàÉ—ÿnÆ »éé#Ó^ƒïÎõ!kzúÅçöî}ît"qäé¾gvuÿyÎóÔ ýý/<õì–W³2ºûò ßwxæ®å@™Ç!X#ˆ>5þ¢¿·kïc÷å;šZ¶ïî€ã]­/N]„ÇŸ9 G +2ß…Zñ+°ÿùÓÙ2‰#-ßÝ•-tú¹®Ç§Í‰£ÏLmOœ~novË\:¯n¯ÉûS?Vª¶ãÁoþé?~ÿG†a‚ ºa„` fž ¤ Ö©ÿðkðØ}Mû|rÚ ™º;§ŸƒgŸz¡?¯î3¯I>ù7åFð)YXXX¬K‹ ñº}²,³À›}1xf¸)!$•ÈÄ¢I]7  zËcñ¨ÇåÞtüÙ]fsñïZOÏó&ÞûܙߨæÖ½»r-ÎÇ_†®Þ…[”ý½]f Þl ïîkjÙ/?î{æ(Àþçg~ çÙµ$æò‚IŽwÒŒMú»……䬓ý> ]½̪Ì{¡Vï ô÷vM·é¾Çö¾üÖÑYÛçóìZ,d:_H¡ «rÜW¹‹ˆ—³¥›Zf¸ùÁü–Ïá%*¬È¢¹¾W`et¾êëëC£#b&ES@Sˆ¡€¡€¡M#DQ&S m16T¬*ÄP6hÀ"4b&©¯¯7¥õ~íxÖz~üe8nņXXXX\#K‹ aö®[öpì—Îôj˜™È‰$Êãc‘H8†Y&B>Wé»ïÝ×q›Ûé)”Øôô‘WáñÜGnÊ"é?üÚñuŸjƒ.\ØÛÔ²åøÌ®›þžy¡`ÿó‰ÓÏír§˜…‹îZ*dNÄBD3|ž;iÿe]ú&GŸÙõ,Ì좣o½¼÷±ûîœU‘Y¥+'°ÿðkÇŸ|pÿôöì7:{wfŸúºpðàÁ³gN ]åhÂQ„¥‹ƒ002dKÓ4¢)„2e(4ÑÀ<" ãÃW/œ=uðàAÈUñÕ);êÕ' Fó ½&EØË³¿-,,,>G,9_ÈÍ·sŒm¨ÔÆ:YG“ã#‘á«¡ØdãBlœ=ã±Äþ;,.qÿó§ŸëzÜwàxúÅçºL§ýSÝ[po4=ýç[²}: nzúÏŸ|ùqŸïÀ Íæ™¦C$›Z +c×k½øtS^áîÂ]K‡Ìe‚ÁÙØÕ¼>­¦§œ~ìµlG•ïqxu*h ×{õ8¼zä馩K¶ØàÙU¼Óšìzv˫ӎýÏ¿š½=Swg‰:¯6ž?òÖ6xÌ¿E¤p£KkßPïp8hšnmªo¯õJý4,Ò9 s4á)òþÛoØm|GG€Ù“×…dvÊ Oß]¯=vúùýE®IS±öôM±*_\–3LW÷¹Ÿ¼ùƒ­ím—¯\Ô4 †¦Yšah–e†¡Yšei†e8– ¸*N?}ÿÝìÝyË*è¿®Ñ/=Xÿ\éSÇû?¨hºs¼ÿû¶ÿ9Ÿ”þ</ZAŒó2×<2™Læ¯þê¯^ý·><é(©‹Iz8!F¢‰‹ïüèÿö“Ûír€(ŠÉTê/þæ»M·}úСCƒƒƒápÊËËëêê|ðÁ]»vµ´´x<³ÛXXXXX¬3zdÌ”e–baaaaaaqXN\ˆ…………………ŵcõ|[XXXXXX¬ –baaaaaa±60Ÿ}öÙZë`aaaaaañEÄŠ ±°°°°°°X¬ ‹µÁ²B,,,,,,,ÖË ±°°°°°°X,+ÄÂÂÂÂÂÂbm°¬ ‹µÁ²B,,,,,,,ÖË ±°°°°°°X,+ÄÂÂÂÂÂÂbm°¬ ‹µ™÷»ï¾{}ô°X<÷Þ{oÑíÖÍZ‡X7ëb®›åûÛÐuÖÄbAÿ®²èvëÉZ‡Ìõd™,`…ÀîÝ»WN‹kåäÉ“óìµnֺºY7ó߬Óßn(w-ü¶´¸>T?×;Ï^ëÉZWÌÿdÕ#caaa± – ba±J,êÑòz½«­‡Å‚$“ÉÅ[Û›•ŠMž>×µû¦}NK…+«*Bª”‘ Úã²BBcÃýÃá[nÞK!0·Àp?ívW–” „!¡±PeU%EQ=—ÎãÞÐRëãáhEE9B„@=u\EüÞ]Ûr¢2e®7ÄÍZñHˆq•¤"!LQÕ55@*wzýôßYäÍâÔE©-BÈår†¡¨ d·Û ʦ€,Ëš¦Í%c\Tf~„ø1/(Ä„Â07¼-% çŠËt:©TÊëõšwŠeYŠ¢\.W84ŠiÎÎ1C×ÊÊÊ2™Œ$I©D,òaYkü£Ì$&Ï_ºRÓÐR[Yºø£R±ÈÅîÞòÚú¦šª%Ž`ãb×¥­[·š«b2Þ34ng ]Õúúûî:øë~º0VÅP\ª.f%¤§ë\ ¢©4èÎе” ø¼®%éðùæÜ¹ó»/ùätO¿ q’Šm[šUUV F1$Zšwߦ§#{vw¼÷Î/$U!‰Ëk&£±úÍÕoŸïåü%ã±D‡é½:ö¿þáŸD#‘xfàÓcïyAISâ¡PBÄ õebbrë­3ÉŒƒÎüã}‰g˜IA­¨,·#=PÑpç­7­õÅø\ÑwáDÆÕÒò£ª-CW{R =zùÄÖ½w  nÛº¥ólo]CO“m{Xj-í¿Õƒ¢¨¾+Ý“á”F Ñ1—¯L×27ÝrOiÀòlO×Åžþ+Þ@õäH·¤S.» 9]¿öà}š¦aŒ?úåÑÉ´Id:ön¿Ò3@pìÞwGÐë¢iº¯§»»¿'I»Ü|iE½—t :nÛ±³±¶Š¢(9~ýÐ'§+*¸x\Z½11T vttÔU•Ó4Ÿ9úÁ)I*²ñX”Àµ¥±lt"B(§šŠÜ÷ȯ٘ß`\BɨĹó]„è6ž ””mnÝÈ0Œ d0e†)Šáöªª*š¦3™äèèèÕÁQAHyÜ®ªº¦Ê² …¨Á¡~Š En_ë¯/ÖØ ¸Ü34ésÛzâ «&Ë7Ž öñn§Ç"fbQOeÍÀå+¥µ5DLØ\n—¿LS 7‰õ¤ºû‡‡‚p•ÄF·né:y¾¢¥ÉHFXo05B·+޲ÚÌØ€§zCÇæšŸy'èóŸ¹<´¡¡ê__{ë¶ûÒ¡ gOlhßMg’¼ÓMSpîÔ'½£‘ƒ¢í¡á^óƒ˜nl®Ï¶/ݾã#GZ¶îËt9uõÊ@M}EïHÂju]Mïа“çvß±¿¡Ü¿¶—tmÙ¾}Ûé3gKKJ:vxË¥‰h(™QJK|ªª*¦X:ètÍÉUxÎ]ìihlR ކ]m;ÊÊK;Ï^ll¬Û\Õ<7m |®®)îwÛ…Šr/¦2¢¾cÛ–Œ¬« ujªJAW—/¦Å5Êvû­AÍ (Æfs°éh¤¤ºi­¯Äçd"&)j45lô`$SZ^3ÚseÛí»>>üaMëÞÈP—n/Ùõ95ALš[6TV×Ùì6U‘iš5tÕît›~ˆ¶í;Ú¶ïEéàùéÖ EQ¡Ž}·ˆ¢UYjlÜ@!¤kšÝéD¡ÚúúÊÚz °‰®ë4½™ç9MS–7çœ%_~p?DZØ00]ט¶VŽcTUãx›YÆ(à/q,mèD3´(›¶n§(FQd'ÏæœŽ7.cX…8Ž­Û;¶nŸÞb^¨›Ú 9¿dccKccËl!wÝyOQásm¿QUu5Ä®½ƒ®®¡ÙÉjee¼ýñf–͈–£Â ‹Œ5Qc÷'ÂC’Jv6lºpç·êJ𿆦! €0Aèg÷:ìÜ=Œ×*ŠêrØžú½?p{ýšì:à­Ì½7·uÜ´©­=ž–<ët¹Ê«Æy—Wʤ¼7ÅÙCß~ûí¼Íqôè;ÛÚ¶Ô–ù}’t*uÕíöh†4ËÏSÙëƒùœBhšŽDÀé„€ïöî…Å7„!ï¾K<%%ðê«ð›¿¹4̳/Qñécó†òr¸ûnøþ÷aÇŽ…«ì[oÁcÃo¼_ýêõÐÜl•.ïhIRÒé”ÃÆ"Îé´qËÓaõ(«i€À¦Mæj®yØÚÚ@ˆïÀc®E|M-æBÎÄãÈé˜ÓãCc‚ËÊÊo(ç9öáûUµ;MÖÖ×yÝ_¸Þj„ÀÀ$•N')ÅÀëÁ ɤ“Éx±¼ ˆ˜f®Å Y%VÆ ê~é©W` ØrÂàtJ1È®«ap@9 £ºª!­3ÐÈÁ¸E!Æ8¼´*é´)apr y_=0ɨ-‹:¨ ïü— IÀ–1Ò¨îdûé8 ÎÃ/]q‹0hR·ñʯ “º.U¾ôwÇßýƒ=‚àäA·n»½?üÑS M‡8 @%dOF øjFÕ%M‰‹ÖƱÓn·(Ð L€“ãàäù‡‚ʺA5¹aº²[–€QÆãW…8¼Œ*cÚƒ•08) ßýÙ¿±ÙÆ}nûh$UÅÆSî@•ÓvM7è½÷àÑG!¸ùf8yöìY±““PY @Ó iÀ²×¢ÈH¥Rù«ÇŽÁW¿ Á¶mpélÙ²X9„@:mAb Ã"øÖ Yˆ_¾Ü›Š&Q°¢ÄÁ575D£QÃ0ZZŠø~×'¼ÍvÏHùùÏ.Ërѽµµµ„…¿]ô¢ªRæøÉ+ÑÁ‹¥µ-gÏž+ñÙ¿þä·|εoØ,Gúú®:üÞÈÐhcÛŽî½c­UZ2étZUuf¹14­›6› 5Õ×àeYÖápäVG|>÷òDUTVWTVçV—­Òâ=FK–|í"dY‹$þ¿€é®Ñ( x%» @ñ<(йR €y^SŠçeÃŒ1ËRƠ눔;€¨SÒPxžš’–=‹¹Àó ( Ï¥(jI‰J}ÇöÊû9i{"p"§˜Û)Š¢(M×@2%ó<( 0 …±Ä² (ÇB€y:à ‰{ ü.T]ÎxÖ; z (rôJàqƒ~ J‚Á‹àk†$ô!l€Ä ´ÃH È40ï@Ý·¯ôÖÔ”û|žP(¤‹Ž‰HTJflÁ _†–¦ºeßBÀ0€ã6l€ÿx VÈøxÖ€;¡³si:ׂÇã‰Åbæ²ù1­‡íÛá'?Y‚rõ*4O5Ø7o†înؼy…U]AlNoEeµ®¿çí~žç«ªªÆÆÆxžÏ9W2a¢¯/“Td[eS“3ôÝèÝü׈(Šï¼óMÓ„L;ɉ‰ú’’‘/}ÉvàÀ…Ð4û½-•L&³‚ïeÎ]zßÝ¥·Àþ{ï2—µ fEÒé4»¢Í‹z8u•€•Uu.4MSU²l+d5PUUÓðZk±Š¬À#d³ÙœÎ⣧¥ÈjÁ‚ùh’]À f7c/-'SQ µ56t5HÓÄ0¦^TÊf ¤¨é¶r¾šÎ*fn1_væQnH5C¦ .þ.ˆ' ´„›`à?ÃÝÇ¡ü*Ø·U“Ÿ»®rÐ~ôµ@( •Ëföìýõ_/µÙn ¶ò  …!±XeOÏÞ`p¤¹ù EáL&pùòÍ6›pË-è:¤ÓÀqàdÿâ—›Ûw %%`ˆŒOø%”!¬wûÖ9C—DÛu÷] VH&“Éop¯s®ÏèV–e† õÕÖ®—wŽãœNv¸ûJm놵ÖeUX_ˆ EwDÔæV TŒ³«„1A–$mfa|æLÙÆ“—.•Í#ã铿K0ŒiÅ †ý à>8( Àõ‚Ã:©I€@#ˆg¡1ÎËäÀ¸®:@£—ÀˆÇÉd¶ ,­®¼¦÷š®ë`ÆgŸÁŽH׳µª­…«W©ººEÙÔŠBqœ)É”IéúŒñe1ªüÞ¯NÞyQq®á IDATëM©T clžûÓO©Ý»qN` …pé¼cºs§VU ¡ì±¢L_ŠyÈzäN½˜ä ¢(ŠÙ9Eyã±#G*¨fÓ.8€4Íý«_¹"‘ñßÿýž¿^½eëŒááašf††¶¨ª}llMëCC›EqÈB€Áë䣑1IÑeMg”ԥ˩¦z(P ÿ&,¾Hhš¦(ÄåZ•Á ËCUU1£xÒâZ+²Z¬®/„eg|¹s« ,›u~˜.7Ór-Òrq šF¢p.WÞ‘['àÆ¦/Äøè#êÁ>µª‚ÍùnU–áîš ]ׯÅÇNÓôJõ’Øl63§Y__äÝwƒfšãq²!E]˜*‚®\©xï½Ñûï¯Y‘3Þp„B¡Tª$™,5-‘‘M.W"Í^ šf€aÀç3W÷Ýq·N²GϸAË6 ÃPUõÆò…䣪ê* y¸¡aYÓô2ƒ0VŽãx²öZW‰Õ­XK#·Z°`:?r.¹BÊ/-÷·½}¢««”ÐuŠ¢0Æ@ŠŸ-0ßS '· ãùz4f†‘”[-X`˜¬­c~ìæN«x­ô¿pÜŒþ¬y€úú׺¡`Ã*»Ýîž|·ÒéE‰º|¦sd©¨€ñq¨ZZ–»µD’¤D"¡ªê‡Jª4ƒ® £¤ßéËÿx;wÞ)­ˆ÷å†chhhhhÀtjW×Íííí>|o%‡²Ò4Íq 4FÈóÚ‚ã¸ìõ¹žÁçëMÓ b±de^DçÚ¢ªª&©©pf½(´Ò¬n ÆÅW r½!æê\VÈâ¥ÊÊtUUº³³DUY¸p¡lëÖ‰sç*¶¢sçÍ“S¨ØL‹o¢_¸÷ÌL´ÓÚ |°êVˆ‰(f„,¿ ==ðè£3¶lÙ7’b·Û}>_"‘¸zUÍO4Â5毆ÃôØØ¸ËuÃô¾¾áÉÉÝxæöìÂÐР$-ܹæv»4‹’ó… ¿­i_ˆe‚ÌÄ0Èz³ê±†5ýFMú¾ Ë·BtEŠ jiÀ»"Ñ©ºOG§êú"£S B`·c„°Ë¥ÖÖ ¥¹\É@<î9s¦J©š ÐÃÃÞææX_Ÿ?ç ɈPñèTŠÊ*fFªæG§®Hee…{dL24ûž‹-œþH–ÁnŸ±Åé„Lf%Õ›ŽãÌÐú‰ (+Œä‡DŒ¨Óu(èW  ]A5¯Íx2™­k¥ÉºB„H„ئæí…B{1*Œçùô"=l3¡išçi hq>ÆuFÎb¹Bò1£Sy~] Þ6á8ާ Ùö¹½IË·B†‡Fd>·#Ššè?0ã¶eÇd೓‹eïÚ¦öñSý|^ÇB`¾QS«@¢€¦1Mš&e4fYLÓ˜e‰Ý†1Æ @XE¡$ÉÓjÐuQÈpBJÇ #4 v;‚Ýရn ]ºe\;Ñ`º"XX6kñ˜ 4 fo/˂ͪ †Ng6@Ä0ÀfšUŽ]Š„@ÓÀé̆’˜Õæ*Àݞõ|p°lÖÉÅš¬†/¤»›š=¨uçN8sî½w¾‹:{®ç€Ð\XÆ… °m[áÞmÛàÜ9Ø·o> E‡QÔ|~¬uˆÙ#*+ñðpþžM"¿_´ØŒŸ# Ü[WÇk™Že2•s™ €ÅóvÄ€!É¡ ULFÜ>Ÿ¢hËTÕT›B¯mä…ˆ7t½e‚ä°Ûí„0©T\UåÚÚÆµÖJKK E'0ê﫨o¢éÏÛøüå?>¥‘´Ê²lEEE$"ÆÄg—q:!¿¯&·Z°àt‚®ƒ®g¿ýƒ¢vpÌ+ ÐNÉ”& à(a´:¿J±Î‘I=­JÀè¨}tÔVµ1b¯ŠõõÌ@\ІadWNå¬ !ËYÅŽláÜ0øü¨Ž¹ÔcY0ÏÎ0 ªY+D׳Çj+j28X$;H08í¸ÎÁ9h¶íx€~OÃâú®““PRR¸±¶Nœ€}û€é„Î.èb€ Ø Îûá~(‡õ‘†êš0{d`Ïtê”lE£ Éž= M¯Y†Êwﮫ£Víg1šÉœ™˜ØSQdÈz(„¦ÀÔu˜˜@ x 42›Ó‘Ø}õ ×Ðk†¬ <ïÅh%³b\7r=2øBt?g444¤Óià ‰D65ÔšÓÐÐ) ;Xé@ýz?¼‚,ß ±»}un€lš—âãš B°s« æhX3ËÌ~±xi€3:ÕÔ[«èScyÇ¡1òEíc‚`¿|9û½Ê?i¾s{V漃U—WÙ„t:MSMS4˳Ì5õêºAQ…7×ô( ü~Ôm_‡¯O¹¨ ©ŸÀOÚ¡_ÞY4¯†Û ™ ,«}iäçNýu£i0 Aü1üx'ì̯Bâ?„ ;¶ëµ0ÓÐñë6¿Ö/\¸èñzy§¯¼Ä—Û\Sã½çžñ£Gk ¼ dãÆ±›oö^g5óé‰Ç=<_ÔJX$]x¸£¼¼+ýpddK0x{u5MQ‡3™ÞÈ55æSíÝÖ¾‘¢·BšªÙì+0°…¦i–CD'òºË·¿r=27”‹pÕÑ4M×I0è®­­]k@UUQ¯;51é’†š—ŸÊr}²®D„Ð\£—4ªeöêµHËmD³&ùDÂ~ꔽºZܵk,“á®\  yä̯Ø2ÔË_ˆÅâ~¿ËÍ“~ÕYf×›¿"ܸaUœ:Ñÿ‰üó“è ;Ìpã{Àó øÆ18öÆÕOþöÑ"æ0™ö¢óÉ­(fîÔyü.2’~?xžäa†AáÿðÄ;Ô;ï„Nýíí³¬ª‚±1h\{'kq°*LNLDTæR|n{4M$4McŒwîD]~L¥|„PÏgvìˆÜs›É,3»ÉŠM§ßL&ëY–]V8ŸŽ1MÍ7 o$•Š+Ê?Ÿ9s!#„\ž˜¨f˜› †‡S¢hChÎêoÞ¼)¿·Ååžò8ÎìÀº–‘Õ4¢ãu”[b|nƒ¯AHR”žN„BÄåªp»×ØÎÔ KGUÊC>íºˆ¢¥7¾¿wаB†™+·îêG§—–Ÿ;•ef óÿDÂ1:êp¹”;C4 —.•e2 \÷èÔ@Àï÷û E¨©.·Sçp8Ý×ô ›ËZ@8Qqô ÿ®½¢È›ºnÿÌþyï½pˆÚZøðÃëa…ÌO’Ÿ¹?øÛÔïòž"Ÿ=èn|÷Iú» n+ØÛÔë× ¡8WUm×ãb>3ƒ;hšfŽCݶÍÑÚš …©²ÛIe%ëtÚBËα¶"¤UUÒõÿÑÓ³=ØìóÑK´EÎF£n·—+þŠÇ„ˆš„tF"¦­@ g2>†€±1{Áè˜2axf@MQxž_^†Ã0TEtò†¢+7â—|zŒŒ`…†LÁ²,E‘XŒb£iãIU] ãoµá8"%tŸ-Å^I¢Á²BòY‘Ü©æ|c¹Ü©÷Þ[¶m›®™¡!ñ&m•© îæé2þôé*†Ámm–ÕÃa×ø¸7·×´ŠæN-`y•ÍAóÎ틞%e^нcÀÿþû¿ÛöÍs'éª9<è„@-ÔRÐ× 0ÃàrÁ7y…Éd2NéýÑAÿüè/ÚÿÍ…óÔ­·?œhFM\¹—6ÃŒ¾%¿âE‚—Ö ½±u:›8ÆØ0Œü–:Ïs ëÈ÷¯c¬bŒºšN÷§RLSÓ&ßÒžÙ˜¢¸Yv.+DÃXÃòÜ ª(@™˜(>./GOOwcã¬ðæYØl¶åYr4Ms<ƒA×4íF´B¦ó…X&Hæ<23NFš¢fü8Ož.‘˜ó@34õ.¸ë‡Ô¡1Óƒz¯[\ªËåŠÅb½½P0›,òcøñ×áë®*æÄ§sn†¦~ ü~P5n˜¶ehzÈžu…¦i¢(Îõd­Ã00Ι㢸 +ÄÉ0Ížl_ &$&Ë%S=&Šaè燾"„bІa¤RŽù“4ÍTL¬h²pæÜņÆ&GÆcjÐC'Dª±¶ –7›6†ÇÂÁ€ÏÐà ]ÁpC%P•ÒÉŒv–žJg9C@‘e†ãhŠ2GêŽiƒƒ¹Ý[t]¨¬$‚ Ð´ùB©ÙVH:-ºÝ+œ³GSU h–¡9Žc(U«"W?Ž5Ý•j6Ud2 ÇѺ.*—•ÈpoéãÕƒ½VC¥Ub‚£çñ…,#`Óüçñzx»Óãv8¼þ¿Ïi·—Ûø}þ€×íôû} ÍVVVR‚Á`nWÀçñ{½ŒÝðº8†¥(D*ÌS<Õ#“¿}*š˜pÝ [½àߘ¸xµµô5øÚ«ð*¹acïxž_^6­ë†d¹‹‹šXôª'#s!®(±¼^ÌK‰ÄÅ<Y6 2ë7WPUU–ö?Ȳ|õêÕH$ÂÚœgld¨»«ójoÿ‡ÿJR®!i1B CÛl6Ž¥ C¦¸a¦ù 9l·Û§Rî² ¸y¿èš200Yë_E’ ™%)–NCg百¾ÔØX˜@÷÷O „MÃãã¡d2õÑGç9kŠ’$ªCCÑHXÓ¦Àé´Lªáðx*5ýSÉ æÏre>Xëý}ý ª*&˜Ô*•â|z0ŠÅäg¯~ú?±Ùž2&GR—ÏöaL0&¡P,ÿŸ§>}ë„ eœÉÞ®Þ•DQÌdððððl• ;ÿÉ •V‰ÅúB"£—¯Ž µÍ-õ3Îã ¹dQ@vÞÎÛ ¬¸}>CÓ%Eq¹œ€¦€õñX”çyÎîR$‘áìÀPˆ"‰ŠFü~Ÿ®ˆŠ"‘Ù¯1˜ö…̃®Ó==e² ¥¥ÒÎ!†žŸ(®Ši¹²¾]× äpL»™PÎRg¿¿¡ƒõÄ¥¯=ü0ÑußFoï'ûs{1M[”Sd9.n¬^îin¬M$ Ë:EMë)"ñ ¹ò›ð›f cΩéB!¸í6]×jì{zï<ã‚ñÓò]K˜ÅÊÎfgæ ±Ûíx½:pR’d™úAŒe2s•ËG1Œs““Û¼^BHD¹¬Ã!UÚí9! IÂù“L@T’Ìyþ$‰-úpç „Øl¶Æ©8 ºº:]1ÓZŸÐH}iÙ¬Qà‹Q•å`ΔØí:Jxhrc4=9ÞVÂÛ`ª«KÍJât{›ÝÞx<®išÃÁÔÔx 'Ƨ“LNjW®²²Ûͳ¬Cô·ßv»Çº»+EÑÓÝ“ò/ÿ2ávO ©,Ûl·M;é÷×íÚåŽF#ÝÝŒÛ]OÓÉááÈwŠU;00étƆ‡½.çpHó^EI|ò üÁ쨨p·¶nˆÇãÇf«uW¤ª¢Î [ÊÈÓŽHOØSÚ•ˆ#‡œÎ tügýT<Ü3v;Ê.™Tè­˜˜ò‘èdÎ&'")iÀpèeÛW,.Dz$·«DŠD3û¾ÂzYxh‚¶³‰ã/a¤Iä nhw¦ÓÉK¿”¾ò‡·Ö¬NOÔb­]Ó’‰„¯´ª®r Oo(·Z°`·qv!øþ+—¶·»TMDql¶G&º8žç1V4 "¼¡-JJþ,t€;“N÷ö‰É„R˜—h*.${~îÔœVJÙÏœ±Ûl¤¬,±iSÜ0¨îî²¢í°åUVÚÂ0 MÃ3æŽy^ÿ*|•™¸[] ““Ptp%!›œ«™iî„Î$$ƒ4·ƒ °H§ûR#þˆnPÊŸÍ.'€y ^û|™ú¹úý Šà)vÙÂ,›½‘[`Ë98'R¢²ENÐ4jþ,_×s6»ÐÕî‹ý#™´à+«ºë–Ýù»Ì|!ÑhtÝN96‘Nkš–ë1™Ô´H"a[( ظ,&“©TJ0ŒŒ,‡ #•J!„a(™DºžËd:‘JéšVp=#ªšH¥&'£šÆÍÚÔÔ˜?FÆív›¡FAߌßͲÇȆ!ª"ÏCõÈäHÙ’‹NeÕ¾à6H‡ãÊ•û|{vî|ã±ÉÉäOúÆ=÷Üuö¬\RÒ£ënÃ`o»M½x±º¡¡9™Œ‹"ÛÜ\’HØ/]Òjk»››k½^*:W´µ¦m„~¯9­ú~ÞëõìÞ0ÞV^>NQš®…Æ% wt”cŒN*•ª½ùæ°¢d`ª7Ùét^¾ÒS¥úwwl®¤/ô·ƒ÷ÜVÕõìlÃj”eªv–õ$ _ËöícCá¦RýŽ]%‚@ŸúÄ^QryÛžM¢`t_`‡™½û ¢‡Ãþ`©/àŽw÷p×Uµ×h†XQÙ {•ÁPúSN#Y±gK§¼Äó mw…u}`U¦²Yì WQUQUX!ÍÍ %[èÔï}·kv;gYsê{KÌÑBËW/¿Ñ•Ó ¦£SÑÕ«þ‘?Ëmm„àDÂÖÛ@E¥-¾²«MôUCµ¦[iÛ·ÃñãE¬Ùü!xè‡ðÃ'à 3'GM /Ö Y*ˆá·l*>QÍE¸Ø ­ùãrÛÛ¡³n¿½°$Æ@ÈŒ$L£¯Â«ß€o˜«eeͬ!vÏïMÄïhçZë²dDÃÈÿ€cBâªZ¹P"×IEQ #¡i]Q×5BX€Sñ8…÷„K3ƒsM B2ºžJÉ„8ç·çb|3ˆ¦iŠ š†œ%`TD²Z©SVœéèÔ\TÈ>—»ßïÅbš&ŒOØl5%¥Óâ]wµ´·×ÖÔŒ¦ÓuñmÛ6Ûí}åå¤µÕ à–¤¤×«—•UíÞ,)i0ÚêF8ÙíŒÏ·Õü¡¶´´ÁŒé½›š6m ²,Ųù¿fnØ©ßïWU5¢3Œú¤m’”ï¨õ·o*oaýLHºù–ZÜ/qM¶ÆFgccÓ±tÒp¹J\¿v[Q‘}±lÛÞ000â´;Q»¿ÜhªÔô‡e0kÆ1ض«jJ¥©I4¶x¯¥y6?‹•ëñùXDåts¬Ftê,GìÒ¤™¦ ¢S·NÀ‡ ÍißÍfg¾œYÑ©tWW¥ ŸOÞ½{Œ48èœt.»²+:c¢` ‡߄oæðù h€êìa),°mÐvÎoƒmP] Ÿ|r½ëbÀÇáøïÀïäo¬¬„O>)RxrJgŽª³­z g#l€†¸tiY!†"nÚ²‘åB0{dÖD«ER`% €°¢Ì¶B0!(ÏåUU¡$i„ ´¦9fPBI]'„˜…Åb½c4B“ªšNë ¾»>ýôŠZxXv0\vün¨Q€ÅFD†JP#`ÖÑ8¦E¡i,° Ë~á –eU•¥(Ú0À0 „¨;¶9àñÔ‚³¬¬D×YY¦î¹'ûu¿óÎvIRX–c˜)ŒgG°ÎÕOëp,àDã8ΠwCƒ¬ Èl€j¼«eí,ë”ÊO?¤“;ïÊ:SoûòNEÑŽ›ñŒ¬ J+Ëb­Þî®­*Íhl2•özÜg¬Ï:\[[›£Ñ¨$ E§V¡élvöüUMžÏFzÚlÙUšŠÊNÚÂq€F6å9ÇeƒÜÞ‚Us¢³KÅéÌ®ò<è:8@#BÛÆÄ0²n±Äg%˜ÓÇ 4=Œ9}Œ¹×nÏ–q:¢²µ³Ù¦Ù;;«yžTW'6oNˆ"=4TÀäæ‘)¨¬yº\eÍ©jLÉ+Û#“Ÿïë#øèv¸Í´*gzþ| c7ì~^Ù [) ÜnXÖ´_K#•J™·Õäxg?ì/(cfPMgg‘©gnƒÛ^†—7ÀÈœÏoý éŒ,§Ò“zòŽ}Å{dÖJ·)°B‘¼PÓ+ét£Ó ‡Ãa¡{ËËi„À G—e !„!$¦ªcR6[¶Š±Š1OÓ »Ç¡¸ªŠ‚A*˜ç¯»Ý¾}ûöì Ö®\)÷;C ©µiFØórÆÈ€Ù##ŠvNv£äd‚/«R£.¡Ïc÷¯fΩ;eˆh_l@Ó4š6Æ|ORívgÍ §Óïtú€]ù‡Øí«›YUÕŠÒ«´¡Ù}Ûü1*çÔ©v»wÎð óü4µÑ¢ãBT #ÎÁ «DøÊª“±(Ãs¹ydŠN­b³A~à|nU³ ‚ª ¢˜0b~UTÉ&ûʘ›ö%5'Ö\0ÿš¢dlI #KäúDzÝ @v :S Mg—ójˆb¶SÆ”Œ©Ù•EhFeÍ CMËæNµÓÚ{'®9…8|%%åÍõÕÐyêXwÿøæö]í›;}@8 ååWáêP˜ ëà)p°ŒÀ-·–D€î‚»Þ‡÷ï{®Ï„pçÒ¥˜9@Fu&ÀÙÅÌwDO>…`pVI@7ÃÍŸÀ'·À-,;gdîšPÕ¼ùkõ!Š`íÂ….ÇÃ9}•7BJ"iVØìä”"Æ[¡‹a\ cZ²a|¹ª DU!V3‚Ä5mDsÎ’”¦•šVÈa¹IM“RÆbÂ9d]e2.Ž+u8ÄÄè±®´¢¤/võ<üåý×þ’¦iš¡lè4N኉¥ öÓ¬òçÔXV+@„eYg§Ïç1]ãº^$CåõœN 8Ž£lþ†Í ¹(;—Iùu]g•V–Å>-Þ`y(cÞYU_ t1~íålb\¼½¾xi36ʸY˜Ì3^$f¶@sÜÙrÌíæ²éÑ)Šª2—/— ø|ÒöíaŠÂ‘ˆwhȵ`e²¹SåTÄãqÒ:¡X†™Ú·½ã–ŒøA °„oÒÀ@6=è!8t-³i\¾ “­Ì•4½ŽÁ1 4öz%€ƒ~?{.Z¦¾~º¦ Ò ­ß‡ïß7Ñë,½EÑ‘±¾±˜º{×V%> O¦uÊ/©ÃÌàžJ¥Ö6;ê<$f Š×´X"A#Ô#²ª*ªšóä\ŒÅ6²l€ec¢HÆ4§(Õ0 ?’$óq'c‰g·@lŽA7¡TJ‹¨†aÌï ÑuÝÆ0fÖìî²úŸÇëä•™¼¢ëL:0fW‰8>xŸì£ãÉïÖcÒcj 4ËB62„ÕØÙOù¬FÓ4žçeY°Ù€a€ç×~Ü“ªª¶LkÐbô€Ûu#[ÅX‚Í~µ¯+,Ø}ðî‚í«Z´Í½xi36&4pq3FóOÅ…,%:`q¹S û™3vhnNvtŒi58˜í*ž?:Õæ)½uOaªà÷þ¢{ ÔкÍè(ìÝ ¨iH—BñÜí­ðÆ3¬³oh.îƒûÞ†·‚‡¯Æ²Éd2‰ø| €`€‘ÞRÀöípøð +Da®ÈHè^¸÷]x·¨[em‰Ç&Οݾk«ÍW±±Eq»ì´Í“Ëà>99¹nÇÈdt½`¬¬ŒqW:½Åé¼’ÉÀÌ}à\2¹ÓãÑ0¦’1Îè:OQp%“a¦æ¢"„$TÕà8BˆT,_¤4MKága«©©¡óZ›‹NÒx ê !Ä@¡3WFEuƒêŽÀø+3÷Üét'cÜhÈÚÏ‹–!Ù<€¢AöO~1 ±v]Òû ààY9MS6IZé–eΩ‹A_)I »Z².&û]AûÆ&FC1Éf+R~þèÔ¢« fl‡ua†em”/^šù7» k¬gæóÓ˜-¢¦ùrrŠËN‹]P½ñqï©SU/–54$;:ÆZ['ív<»²0o¾UV¶ßt[uY`®³1½,o¡·æ1fwL\¼mmsÊ,…Ò ddYvÕ‡ö¸\.@Þ„7çr„€ÍÒ̇ñôiصkŽÒ5“ù! IDATP3h­¯ ª‚¨:äÄÉN@TCcc°´Âçv€9MÉõFµ,úúú”Y×!t"™ c¤ØLKý’4"Ëæ„à¦òœ bJ Àlù&¢a¤ÓdAtii©±´å&ì¢(ŠcxŠ‚²~ËÇtCqÆÉðeŒ1ÅiyRäôòβz0 cZ`,€  `%}öµ°›Æ÷E1AX– N§¢€47ß´ÖÇq6Æ ŽæhšFM{n^kV˜ÅZ!²ê–º »Ý5{×<¾‚O]nµ`Áô7’<’ Y¶4ÈËÍ¥+DÃ3«f œÊZ('§€ÙM8g`AQõ ƒº|¹ôÔ©ªÑQ÷–-áÝ»GËÊR“\eaÞ|!,áñð\{çBIÅj~òòÙ˜‘¿9º»aãÆùd„ƒ¿€_×i*–$$yàmsgÆ6ƒ‘óÝÃÃ0Rpà¹>1¶‹Çïõù‚UA_¡oƺí‹€X"¡sÒÈšœ4Š=Ààx*eh¦å‘_l">räÈ»ï½'ÏáÒ0N kÖ³öñ¿Ã0 MU áw•)Ì10S*¥u5 P}êD\€X,@f'8! (6=æª`ùÅÛ“±$äG§p6€4±# €.é Ê:è¬UÜ 6K~>R¯*Š200 Š¦×œè:&DḵìþÐ4µÿê€ ‡NŠNñ<­­­J«Á¼‘Q)2Gå<¾ggnµ`!oa—«•³xi9Q@L &Ú‹ Ì7_NN1˜úòÍåÁ_½L†ïì¬ßœ¾îó\ÕÖ¹öEÑŸ¦¬(ÕÕðÁÙå¾>hZÄœƒpðµ²CÁK_Y’>KÅãñ¨öq;ع…ò.´´À~»w\¸[1!ñýpÿÏ«WŸyhÓ¦•Ðu%pº=Ñè¥ÙM{3_ˆ¦iËî2XU"‘jµ,„V!‘Q:™thºNIRÑ4·D×E‘]0±=Æ«ò‘£óÞ’Ì"`êj]‰øÍ”ÚKBõšÆÑ!&”5Jª(%a\N…UcT•ÄÑ+^SÖ>8oMKý:¿2ôAKýÝb*MÄ[ªÃ:NÛ™Ö¸ôϾ¯gäýÆRÿxì4M»jJnÓpˆ£ê ¨h"õse6Þ-©½eÿ?{oÜÖuçù~Ïݱ÷U\%QÔfK”W9V(¯q中ötO+N"«ý^âzÏI?»zÏ?z®y=Jª+®‰SSIú%*½ŽãšIO+Ž%ÇRdË»dY¶d‰¦$’")î±ßý¼?.‚‚;ißO©X÷^œó»çÎïþÎoq?b°aHqXþ˜š¢ÛQ–Ïz7QgH…iÒH\íÅ-a™ŒŸWºìà8 .ð"ÀCÕ žãMð†ÔHŒssЬВ[×u]ÓÔpœñºy:t€“eE’D9:&¹|0dÀŠ)b.¯W—uNJüW‰„B<ËîH(äöz­‹º®s§Ë Àr¢²"rb² EŽ,ŽR®iš x cEÈ«ªÊ­)u^ñ›OÄyq­^^äû#2æ÷—×ÖŠŽ, 9vdÒ~?“§iš–x·N§R‘ó—6é¢BÍ4a<ƒ{ªÀTïÔT VHmšÌ9Ï4A)ùä“R “ËêÞ¼qsИÙwïOÌËÿ>µ;EBPXˆ¡!”–âí·ñðÃÓK.@èÒG£q`Ææ™ü‘eò~é‰ÿ7mK+=ÌØ¼^œ9ƒo~száÅ(f|áá º|RKÅ"¡úÚ†ÌÿòV¾Ë—//O-$¢JTgó¿g…DMS ƒ‰F™l.Ój,¦¨eÜtOÒ èÕkÈ|ôYKs#uAä.â)vã\åÆ&]e¿Ì‘Õ½c¿ ÖÇFǼÞ/]ºð–(µÒ>`4ÈÓuEQü^ÒÒ×}–Ðj¾³çŽøŠ ÂP8è{Ñëst|ö.Àˆøÿ?§«YûÃJLWÛZ-Ç®© ë-ÔF‡ã«§"Å倩å€D7?¤¿(Šå§$+ªíùòâñ‡ÀÐÀHT-/ö%ß"‰IdÁCšN§•.)¢¨n^P£h†5-bªzDq§à¦\8ª:XIé‹E\¦Ä2²ìT#1g±{,";·‰ËQ¦,‡Á°&'L— VõÇ)çV#!6̰E<eL£:‰D¿& fLW$vÖ7gä[*q()©ˆÅÓ„¢,—à ’’ n(bJ\¬x{—ŠüeLC1h¶múùÊje üçNåa°“÷c]Z¦À©r§Zµ)¹Sbç8ÙdîÔh”›rGfS댑¶—5°*«Ú´‹mmø·#µµlCCº‚išY»ß…»ž5:U5}û Ã0’ݸ’ƒã¦Y3”h°k0ظªò£³òΪ&ªRuªÄû©ã¹ ¿úSQAZZŒq­ÑÈ=ñ»°ó Ò£ªÙ­zY'ÞßÏ••,;ý²gõ¥ÓµLî k¼ÇÇ®¸œhŒèñ,ΔÒ@GGáš5™›2”ÒÐÕ«Þ´ZÉ(±XÈ0TJ]Ù\\èñ¸iNé0´°Ò–ëÖsÇ \ç§ji5ϳægþ[niê¸p‰)!Õåu…ž;»µ?Ê1¯·Èqeì£Æ’*Y7‚ÊðºªGar¡ïКêÏuÿ¼¦¨>ª*ØàsÜ€–јzAà}}C§¾º¬YчÜüM*€°*7û£ï ¼Ï-´¨æeIÔ=01¢™aU‹õ ·b&£](ÔÔÝ_iYAå86&òY y@CD JÞBw§ª†aMžŽE‚Å>‡(ÅdÙY"™ºÎp\L– œR\ÖÜ«ÈQ½Ð(qzø M5¢s$è"îRw$r{<–—Z$rz"¡ã`£F9¶Ò €EIVU/ "RœóxܺÎpœµB™ºÎ¹É=–çyJ©i*’Ä9ùfiZPUS$†ahùº™™ÆWù~´EeÕn±#kºÁs“~}æÅ;ÕòHMu‹´´‹é?‡eÑL©KOª„Ôéz.σÙMS{§v_¾x©ûš&Ç뛯[×”o5Ãÿؼ: ùýþ¢¢ Ã¥T–eGŠ};‹9ÎøV–%§3:0K5x¦u·[ÇA9Ø;Ú뀃OyNMmÚý¯%.WáÇÇyDMZ²Ó[§Z<Åâñøú>úÖú5–wˆE<Ïyòôþû–-t:cV#`Ù”þÑÓJŒ0ÕÈ“ÝOžt•–þîwño}KdzŒr¶6w9=¦\‹–†4¥¢Ò…´ÆåC²¦Æj©»w¤¶¢*Vìè!dW8 ÍGwmù—Fz$ÎÃHnƒ8EÞ]ëÕ¬\ÆuU 奅Π>O /@C@\Âz £¶b+H1ëy~"½@Ø È•øß•TA0(™q"çį4€I»ÏLbø:èxÞTë¯ÆÃWäÀLIä Bh‘ µ;ðŽÎÃVt'wOFð8€“Ü)e'­ãäÁ=ñõ‘$Aâ˜ä«LÊf³`L2E1«ªE¸ÄVQÊ_EQDQDri`'gÇbYV®ª ŠÂ0BÖö–ÌçÞ€²@¥df ”˜ðh`ht¬º|R~ÊyñNµr„äv¼˜©wjò"ËMvýr©™SýBÒä$=7s— õd)¥¦iB.]º¬FƒœÓ]à-­*/*¯ª[ÕØÜÕqN›Ib¼Šò"N§s&Û¨é¿é9ºorIg*ü-ry‡XÝ5 Š‚‡¦Mž?ÆwæCIå*Œa¬×•—9JJò-Ý<ÞÐ9íÈ“´¸„S%oguàMëƒeq×]hhð|ö¶çT-œN§Ãá"C¡@¾YæŠÊWÝ{ov«Œµ#“§œÅGV83žn¯¦”ò îëËÔBÆ®\1ÅÔ4V UÕãqÑëq'ó…(cáÞ¿1tùhÖ[ŠnšÒü¤›†ahš~­ §*3 êYs„0Ók®©jDP°tUe±`ØuëZ •cà¹;“¥¸\ì)sß “Œx,¡Õ  RÂÔBUU…‰ƒsãæ º‘Xk$‰SÂóD‡C€ @L1òYÇšÎJ¥,눔íâ4,¢¶1‚ gæ`'‹ ’ƒz­ŠÇã”ÂéœRQŽÇãS‡D£Ñ´L9eee…å2Ð4Õ4 DqÊ]fUUEQ´’ Ì®A,ÕÆÑ 3ÒB†X©´º¼øâùó,OÆÉ[Ô²º>ÈrLÁ0‰m ÃH„“‡†‘Xq-Ã’®Ãé¥0ŒÄö„Ó YÃÀéL±6G¬¬ê<Ÿ0T$·E,ùNgâÔ*Ô’¼(‚Ò‰ÝQãBLJ¦Ñu°—Ê Á4wç¸DŽ žG4š("cMÓàtBUcã¸Ä`¬Û%cÝÚº»®'”ë¡$9ÙäíÒ&«iƒ¡Ç-±/u‹º×Áˆ(/ Žtt_# µU3úP)¥cÃü³®ª|F- Cè¹â«Z]TÅî]È»£ªbS9ÀêºÖÝÕÕܲþ7°s'ÔÔàĉ)s³¦ò'üéË[粟ßÛÝÝÐÜÂç\¢JHqÈ «Œšæ«Ê±Ë]½›ÖO„,;†»ï€Õ«ñõÖ\SèºÜ^¿vóñÈÝxèÍsÀ?9}öB÷·[>üðCS Raýª Y–UUµ4ÔŸõÔûÕ{vRJ f“òš†òšüR”g ËÍògÚÐ5^r‚fï^T„Mþ¯¼RñÊCx(kEQtÃèà ±´¥¥Y Þ¦@À w@çg`ùÉ@Õ54kñç$Ö†ï}ÕûjZV4°qÒó}0ˆÂq»†×‹H$½ìp*.—«3ÞU&–…fòœN©!.0µxgWw]mDEJ©¦iº®G¦Èb¾äD"¬¦iž³á5^®FW‡úÎFÂ0º,;Š‹„ºzƒÝm†R}Ÿu»#CC†,»4 @<À:»ŠÖ504M »,û`<ÈfõÌ4#åÌ06ÛŠa0á ¯ŠUêŒáq10U18fé´©PUUQ ÞÉ%}B€)Ê40ŒàXjÓÓ²Áë›ÆÒÆ ’ka-ðæ.â\šû‡2—{š¢ÐT“#r.'÷‚‚‚Ü•¥ ‹K eŠMÒ9’¯1XA“åÊÊÊtGI>´¤>½¤¥Úä¸Ä*žv`™(L3a3Í„º&Ðjœyš”fÝ.)?`¡Ð QtÃNÔ§ LîÈ$Z­‹IÉÖiò³È:Yëbž“U”‰|!³N&!¤º¶~Ö{x‚訬®ª{m-Fz h âFÝÙår·´´è±j#[lߎ¿ü<뾟þÿ»Â`öuo×µ¬Ï‹8™ÊJÈ׊¢Þ¨ 951/ˆõuû#Ñ(Rw·oÇ[oáÞ{§[]Ûøö7ßÀ7^˜É€£a™PM×užwüÍ_5Á°,Ãø|¾ñJËJ©¬òl\LK·¥„BjðBL=¶yèÃו`”êšLÃè9^®E7b(A@|Ä0ärÔ4#}×SóTÑ:Ðc1S³¶r¨ž±ã“¸KIË®±$°,ë”<¡Áªšâ å5o¼†‚u.@ÐÐ!‚ÈÄuCà’OY‹V+êsLEU¾>|‹†§¨Ô³ VŒù!ß…Šš:Hv¯Ñy‰Ôµ­ù§¦§Oã+-_ù3þü œªÙ©S¸á†‰Ó¢"äöícúªQM(“¿¡©¼K2éÈùóŸm»n=˲I§ÂåìªëºaHÚäJ©<Âi±Õ„@7ÄG%ЦÇW÷¿ûï¦V¬ï"”rJ€£”ƆTwQJ UÕc‘¾UZ4Ê»\Z4F„Ù@eÙ¤”ª!“’iÌ]‹ NU$!êD±¦>®À±ôêÑ `ÎÁYF%ž5f|gÆf–¼qì/”åMJ ÜŽÊšúꊙY5‚ŽÏÚÇ‚cÔ4ü!ù޶/óܲ3kå«…xŠ*v¶¥»PYäðNQ\J'²®÷³¬©Ë"½êx™T–o‡µÃ’*Ár&M“™•ÙMvÅát"ƒ .üÆ|ÈîAÙÙ™^Õ%éë“•Wñê×ñõh†1eÜò|áõ"„> ZQ×%Opûí“®X¥ž§R2þbþåö‘¡!”MéF–Nß•ÏV5o• Ô^—žsm9{§ªªaRN±”ÒdÀ ÕõøHÂPJ)Ú­ËÕ„ 6ô 5\ÉVò¨ÃÔ4y´D¢†¡Çâ†æ5‘¾7 ×®Õc²ixam_Ʋü:™ªj(ë¤5„TÓ¸ª¨,7ËÃëõ€0𦲼¤h*C–Ý<¾E9l!Ë}y)ƒ92¸/C’¿ý÷á¾ßã÷{°'k3Ëá7•º:twgOÒÚîjT³`»º°y³sؑɖMø;_ÍaÑÉT8ÊÊ04„òl.¿íh_ƒ5¤³õõùޤ²®îäÛoˆ…9kø,;âqPS•Rß#-ÓbåɌÖ ÀP*‘’‰Xs҇M­Ñ48CRÆ4jº©ÉÚ5ßjS‹€Âèô¸D©™¦l¨‘ˆ©Ù>žÅ…eYŽKx„¡%œÈ3*@x®plå… "+°üö5ÖäÁ~á•Äb±k&­˜Mv|(+¯P=î ‰dÍÁ?=<ϧë ¸ ²?,M‹(9ˤ„(CU"ê,};8Ž[úHÝ©Èa IS“§i–ChÒÙsª¤ˆùKK¿˜ö»°qoÔ§ 4͉ߴT ©Ë­×În²Xi;2IDˆÅ(îC_5Òã ©&sÝuxõÕìZÈ1Û‹½ººpÛmX¨,¸à’ `¤éÁ±2}Ø·nÅÛoã+_É"êm¼ý |@_¶mõky €— Ú’¼“±vd¬H™¼d-"¡I]f4EgÆã‘b£C]—Õ’úENëraèêC½0ãKq? Ê‚ÑÁ†Poo|Ì è–Cu5H&+³J(d(õ0)%SýR!¶È¤Ä匛4Ä3µ"¯pÑòåUet ›P?¾ð2š¦QÆLVX.ÆjUU ÍHÍ‚ÿ9ca­iãÉÓ´žË‚ðÚŒÍV*§h”Îòéav|_y¯d^?3²Z[9™¼ƒwnB¢xŽ]§aíÈhË’XŒ Cã &‘G5SŸ^Ÿ6ÒPWÐÔ]¦áV‚Š,WS-º>ÐÞ­ŒI ‰ÿN†êÔU•NF G µ,KuÚÌ-XzƒÄð CUõ"¯!Г Ôœ&3ìòAUUC!4Xj˱\ÀbÂó<ãd>Œ.#/cAžQËVxy±™-d^¼S“N V¸ì¼x§N¤=L¨™S+(NUGÆJï1UYÙM+Ð’Ô'X°±ñ,Φ5hoGss–Ž„¤²&Ì38³.$ùGÉÏ–MøñàÑØŽö´Ýݘ.ÕxF;Ú[Ð’¼²Ä ¬0’Õ=(¥ñáiÂ-LÝ«+k1(c’±i¦½VNi©9M-}1J9̪žìü²¬ 8Ì'/F)Þiekð.ñ°òFVd‘´‚ åÙë Œ¦iÔˆëáeôVU•šTWWÈVßÌ™-$ÇŽLšY>yšvÀq óÇ%Žç(Íú;q jp¦|»Ü™Sm!©rX 3qœ;—áYž°i¢ 5~ñ³+]W.õ_ë „–µŸåaÑŠÖ38cLÞôR”D†º4,ÏÖT^Å«÷à²èñ……/Û±ý-¼eN~ºÎº©„ŒàsÄïÇýó>…å#—“¾ ³Ž’n@ôØ&bÊ~Q %þ£-²…êž½” FÆãŸðZÈRj!¦ÞÙÕ‰D4ºDçÖMÊJÂbhÏóB,<60…BJâÁKKþ± 2HMݶ ’gIk'-$ k I{ðÍL’LS–z0ÕnoþÒÒe†xR|×[†3¦Þ7SNêKó2¼TQ~ 0,jŒö_íèÈ~åA}=º»Çä>Üw‡S°,›Õ°aΟŸ8 C¬ U`¨Ý} 5â êêÐÕ•8& wᮣ˜”/|*{Æš5¸tiâtƒ,ØbL™ïyÖ,çE€P#.QJ£}¡á3g´p^I÷ L=ÞdË#œ›0j….§ x=6éc ¦©ŽùYR-$‹»ÝN·Û- .'ܬƒx‰]1Zˆª›Ïz<±¼øäžç0³í¼.‚ €ÀÔ?·¶…õNMóKž¦$‹è&Oç(-ýbPÇ…äÊ~®,S`ªz‘)ÇúkeŽŸŠÙM@QQaaa¡®ÄXޝijžwÌ~Æ*;Dz湻û|œˆ¦.F1Ã0Ýf·å¦C¨®gy§V­Â{ïMDð¾À¼ðMó›:tc£#CÃ#ŠR<<HÎbÞGž¤´çÎMd4©Då{ä½~Ú_dàõ2ºžå?âêÕxå²vmâÿʘ?bMÁ0 EÏ3³s‹4uåÃ>€£Àë-jXUFãñøòÌந @ªÅøø°~å7ñ¬©UeM¸ž ab‰°Ð¨šE)½ LÒæ=ÎQÓ uv44B EÑ¢«¬öæôŠÈB)*.wË ,x‰úxq„¡OVÌ£ª¯0‘ª ñ?KKøƒØzMÓÌH<¼hòy ªª©›J”JùÖ§ZaÌF ého§08–W ¿¶¡VÓ4Ó4¬]«ÀJ2)ÏOrò° ©˜&D1‘ì\¡ªń˅UH,Òi­Æ™§VÁ—äí¬SK”uJTUóR’(MGŠdË”*ÐÚ ²ŠÂ$%¨jâØ¹ $[·Ë:Ùd¬MÚd“·K›¬ª&¼S9ѹ¦©~öŸä8É`ª9FUåèÎq‰w,ÉWñÕ_1¿Ú‡},ØŽ´´èSuOnoñÛq»È$lT%åU²V¥+(--õûýs|>} &ìZ<ˆâà^ìå8îâElÚ.[zŽK$ðgüù^Ü+0›Olc#™e \jŒŽE‹xA‘B˲ ÃÄb±Êš<Âa¯•5L “`g¥D Þ€™;ĘF%5œV\n&”šJD ÷÷|òIld¤ ±1Ú3d¨›}§Sy caµ7Ã0Ť2ÓC žÐ“)ÄBUUè à´M!IEáyžõIÖMÃdØ¥Ïé`•ºeE–‡è£ë IDATeXjRdºÜÐ+Ž¿ËýýýËRjvu÷X¥ÿb±˜®kI—Žä_«J\òÔ*üfZÕæ¬ë/ÆóƒYZË&zY‹V²—uj½”<µî’<°þZ¢¬5ƒê”“˜äØø"5)09T«üž%09*ëŠ50küI±9&k¿¤N6õvi“e˜•çš æoð7/à ÚÕ5M Jуž0Âk1)æòe¬^½ Ãœ s½dÁÞ‡û^f^¦ ¨Èž¢/¥¸„K¤“\X/_FSÓl‡Ä9î¼ûÎÖ­Û6¬kbYÖív‹â2]Ød•³Þ¿h"Wé@fá“KuÈ”¶+B¨åC—.0±Á·Þ ^Ò)Mè|yØB–eA¤´ÜA€c±bl!‚ °¢ˆq‡©œî¿PøýþX, ›Œ¦\îŒ.?s¿ßFMÕ$î åin\YÌø‰3YG¦y]âJaa¡ ’.{©¦t§sRî‡ä©aLXä¬Ë?T×'ÊÑ!%߆µ´'O- à Œ´înÉ·N“UZœNTÐcÓ%ãÕïôñ‹–ò‘˜¬—kÅì°,d9! @îÉZS'«¦Ü.m²sÛ9Y2¬ ¬Ô/i)JWcõIœÔ´/åp´w:1‹qùGücšGçà n¿À"Å-g~«Q]j–~À|`7戶åyŒjÁ“ÂÉoá[i/¥•ž™–ý#yºœ½SU-¡ Ä0…%#3™'> ƒaÕÀ±ø TÝ•t€53®–†òa¨°ìvÎò#!cC€ÊÊJ¿ßOB}¤ˆ§ZSäU^Ô!©ªJ8¢#Ûñç€eäšúoŽÒâç‘Eà¸_ÈL½S-޹/í`%æ ±v—ÒhE« ¹ý9:6oО9ÿê7ñÍÌ ëÝðxÉ2dmÀ¥q n¦Ãc$WòÖúÕÚ¿täa<œu óõø´œ½SÕñJL„ÕôqQ :䑇 ¥6>ø°<ô¨1 L—ÚbÆxB9€i.–ožPUÕr¢ÒlcH <Ïó”«òò'—‡`ÉÍ‚ P“²C ølË`HóËrñNM.ó˜:wêì½S3ÀÙë62Ÿ~l–U¢i.µ“á1‰Ésà$¦P4ã#Œ ` Ëéà iÚDGG‰Hà-?`²,ª«ïù éCuÂp?£É¦z§®Ä™Š dɨ±=v×QÇ›ï0—nÃm™‹ôÆŽÕÿÏëO=*ܘÅÔ0;«þ¬)*‚ßÌÚ·Ž}õ‡¾cïÃ}nÈœÂFÞ[÷ÒÆÃpë—~Ïx©•Eš».7! †f¨ŒæBg]Ì Ë²‚ `©Ã–þ©y†‚`ÙÞxÛ’‚¦iT¦’È 13Ž_júÊÝÕ¾¥Ì£ªª*5¨P êªVB=!ÎÅ:‹VØÿ·̃bšæTnüÉ¢öi§¹‹Ý[^¥™ºHþÒ’Ž‡©‚6½oò>î¸å-0zànÆÙK¸µP1¬ û,¶lB|]¸} ~w×­A¸ í¸¾CA2tƒS'Ù¢g7YEY‘¶¦&|òI-äâEüoë¾4f¾ÿóÜ×ð5ïx'æ›x³}2ÿø{šý+m}â³®¼0SV¯Æ¥KY´sçðÝ;{ðîóxþkøZÏߌã8î‡ÿö¾ -øògíȨª*gÍ8»¤ÄenážÆjÌÑÝÊ;ØÿWºK%%ÕUÂp˜±ãÚGìDQ†6^»rb‹4MS…aTs9vf…eYIJ÷\‘eY[!&A¦zÖ_xžgºÖ£iN^aG5xŠP“šúdv·òËÅFc Âp„Ժ㟃Ìîó0z뫘õ¥4£}ò4í@Uñ«ÖéT»ùKËúê$Ê*À„E`œ‚@•U¨(Æù ÃhÜ(Ôä(.uÁãÂÕAhc(ñ¢?¨ˆF“I5Qf7Y¬L[Hq1FG³\ïê®]`°u36ÅÑb  j¼7îÀ«YæÎE<ëGÒívûý [Í΢¢§Ne¹>0€[oE5nÞŒÍGpD’œÂvl¯E-²¹Å#EEó624ÙaR…(ãѺùú»ý n©âº’‚ETETU5U“˜ Ç™†‰”¹ž7ºœå®’õe,¿\ ßÌ”yÐBDQtdþ€D˜kæiÚÔj…Â"%£Æ¬¥Y”ƒ¾0Z+R0Źòï^%ÌU*ðPµ0ÀU r®ß0|€OàëÕ.ÎÉ%ãç>¤b~,9÷ØcYœ³dY‘$1ó4í@––eX–UU Þç3߯ü¥Y¤€xŠQîBq-¾UI ,K’d9¹©†A “cX˜4‹K‚ŒÇ%QŠ©*Ë0QE•D1,+” ’(ҿŸƒ¥dY¶®O–D €¬ŒȲ$I²,[© 4MCE7¯½ÿQç;nZ¹Ñày>|^=>ú_úÒ¤‹—/ãþû+ÁÒ‘§{éúõøôSlÙ2ébo¯yË-ó”Ê}ÙÆÈh:cävõü'\m€™Ð%·i—ö(opÔ0 ¹Ê”¾Ï¯y‹k¡)ïfƒ9ô 寄Rƒ0$J¤óìªã2Át°•ÝLÙ£·ò.WMV£uæ°ƒªÈÇDhçØÚCRÛ]ÚY €2`Ò¦}|ž«Û¢_¾E¿B¶kŸžà79©R`Æ÷É…ß?êöú¸<¾Ûª"øÇŠ‹§ÏÆk¨Êð¨¿Ðçc§KéÐÐp9'L¥…LËÈÈHaa^9³"á  ¡Ð7½}WUU¿ßŸXÓЇGFE‡Û)e+ 1/Xš¦iº¡G”°J¿TUU8y2ý¢¦%eÓýÛªi—š»¬¿UUÓw\½¿ÿ}ºb&!óf]¶12ºÎ7éý)oß®ÿ‰ãþ0㥷kçRßa€zs¸^º½pŽ­]oô^c _Z¿.Ÿ%––A=4~‹þPÊŒ—†¡˜pQ¦_WÞ(5ƒ,(€Ízדñ—*ÍÀD€›¡ÿýµƺî¢ò^å/ Æ€ /Á»3MùFÐ<çñåµÞ·åU:€0ìuÉ<Á³bÍš5y¶DÉ!d³„eP\\œ²@t¸¯Û¼@<¾Pš¥Ãér8ÑßßÏ0 CYÏãÜ.Œ:F»vy`¤7tz0ʈ¬Z‰h@?1hpdàØU–¡×¼º0h°eB€è¯ýk@õ8¸‘¨ÄƒNÓãßÏðÅŽÚU%ááhz“‰8¥±kkþ\¸Äá‘(à þ ßgðZSí 6TEMÒ>òä—ë×–—ŠR¿Çã…»ÜYÙZ)ˆjTé9Ù?vyT )„#ÅëJcƒÑÁ/¤ûèeVLz\u¯òÄ´“ÿ÷›”¡jDãEAprrHv±WÒ\¢„d]6OY¢ÇŒö.ž v$3æ± Ã:XÂ2… ‘xl(Öö/w”o._ˆ7~´’’ìZRÚNäT·ä©eÖã8ŽÉ–~rFÒR/æ3<–eÓì¨Ö_K/±^²®,ÐdVܰ~q÷$æFC®\AêÄG!Ÿßº¬‰’FQ§ üžwªªpíjk'®œ=‹ÛoŸ¾#ËfÙšõ©ýüY"6ÔV†B!EQÌ~Õˆ-¯Ü©l'½-K¢òãäOg¹PìàÏËÎt·ƒ"DoÇ%oB¨Œ™=ËúÓÀ'÷ÍŠU'Kˆg«(SŽÑx=[êÛå©kñøRšçˆ*Ë,³`‹Æëõ†qéµSzIame]¬H‰\ ÷½þ® §ú¥Œ½/몶ñë›/nßýØÍ˜þ×—ÏWßSí _Šm¹»âúÕ¥€Òß¡ŸôW¶VŠÛMÓÉݰ¾Z—õ“ïvš$Âó…7ÖÕIe.gt$b´3ïôW8„Ú›j.Á#0ZD“]"—’ÓéþØÜœ( ‚‹I‘wàƒ3W¶ß´Ír†Xèjv.ÆÆ&U­#„F^·®­%4™¯ýôilܘ¸yVK^žl¼~›u`iõ«êW7¤¼ž5?|⢮ëccc㶺¦ÌY/ºÝåååÙd½iâØårMôjlLï4Ž_lLyuR¯Œ–³î51€l#™G4M+šÇ8¨…¤ûJ;å œ‚n²¢ðKãpºœ’ÐÓÓ ‚‚˧»À!® Ó…ßï_E„çy ºÆ €0ª"‰7Ü[ €0ÄssEË–R5¢Š2Y¿1±ë´þÆJdsüôæ›ÑZQA ÃÔ‚¤ Ë4}¥‰š”a™Ê¥²ëË Ù`R<î·Q³½6ëÅyí”å3¤ùe®ZHcÓjEV(ËŠ‚0/&é¦5k•¸ÌI—#‡öÌ`WÕÌ›™Á[Zµµ¤Ò4çÅw466RÓXÛÂÌ£+Ä"T³KÂ0`ÙÄNŠß¢¢‰ p¹»¯_ßþ–I×½p>XÍ0• Ãð<¿Õì’–e¬)ôõ¡ªÊ丼þãµ¶â@ssâ´§7Ü–e—Р㸩¶ s¹À>z}Áéëë š”"+Jž¦ºÒžÞþ±ˆyûö­ÿ%L,.÷õö^·õGY^Î_4M#…Ï—P)1¡Ñdõ8†cŽá]üúŒ^ ú­WU•—8"†aš:!„%–a ïॠ¥gy†Ãde®ZÃr×|jX–sºÝó"ª«««¼Ä×ÛÛ{u |ë­7 ôõ$ããg a˜/‰µªö­XjjÐÛ‹U«àwpÛmùv´¶3’¾ ã»3K°‘o%>±Öî÷ßÇw曓çu¡­)$k)¯\®u|ôæ§C·ÝxȳáÐØÐàPmmƒpT Ç”oqU¹püøU 456ð,ÓÝÓ'¹}ža˜êÒ¢‘P´nUõK¿ÿNÍí·ßÉCõ)CJ‹K4]G£zñ]_YêYÎ KE^êQäź [ÖMÞ(*IìJ7®NøŸY›V+eF‹`I°ª¬±˜7uSA–4kj’‚jOau¡©›Ÿ·äíæË;uyr©ý“Þ*:­®­ùó_ârµß¿ãÖÖ¥×ç‡nÀË/'´±±|=*,V­BOjk‰ õçeÑr§ZÜr ^<±fôCWR‚áa”•atË2œefxËVéoz÷=,ꔹ²þ¾^Nòh¦ÁBãx©ê+_Ò4Ù4åsŸv˜Ñk¢§¦ûr‡Ó[nšÚ›J¼Âã+¯ª.ÎÔ?:ýÁÖ uŸ|ò)ÓWYï$‘K£Zñ O®ªª Â<íÆÚÌUUÇ«ï-<Ï;Ù$<% 2œÊÒ—J2 ¦IX“,¯4†sg~´Ã0B¡Ð\¶Ã‚nží@ µ§4\v¹–Ù%sEÈ2 ]]¨­™1`ûv<÷¾ùM9‚{¾h¹SÇo‡P¦‰O?Ø^É“¶6üö·øú×ñÚkx0{z³•Ër×ß|»¨úÌÒë[V;œ¦n*&\žÀJŽåj^]áð®=~äͶ»vGƒcì¦Np€š¼ÀŽ…â‹x$|ãm;x„·n¿•€RJ)ÔTD?9×¾ÔSœACüÜýþ¯8Ü¢išâ挘ΰŒ“SIÑÒ+ªª2 £Ç VbÁNü¼Ùæg>º®;ÎÌ ÁK…®i,Ï[k¢¦iIc_ÑDÕÔëKH(´òŠÈ¤r÷ÝøÙÏ IØ·ofkÖàW¿By9Ò¶àÎ;+mmøùÏáp`ïÞ,UvsÀó¨©ÁÁƒ¨©(bµËM'®©,ÊSKë¤f¸ ƒ¾âr÷~õnbé$”²b1 Þq÷½É+©?n§sç—K—Û|mlR‰Çã<Ï; –cLN ÇßZ¹Äå5âñ¸Ãá ºA0< _ÓÊðΟ¯U2BȘiÖõu_ícYBX>42Êð(®it˜ñž‰wl½a KÈ5Bâ„4™æ¯ýiLã7­kŠÄePªÅåõ[¶Hù¹%Î/ó¾ÍwõêÕù8-_ûôöθcu5ª« sÈ‹¼/³kôô̸cC,_£E×mllæEQÏ„Š‡+Õ¨art‰]½4M MÓ¤ ^IWôÏŸS>Z¥nJy€ÉJ<)¯®¼r©Ëåp¸¡Ña,":¥h$Q•ÔK©›RµM .·¿ÿª_Ö9 ÃXᎅ66666s@Åòòr¿ß¯útCÕ K¸ùK…<;x^¨¬¨PU•rXœ©®ŒÈ3b~´BH$™ª²îÂC€HyeMye €"_Q¦Y4N‡€ŠÊ*^ÏÆdÌŒ‹.IÂÂY'ư±±±±™_xžßî%W‡4†'ÆòH+‚£Ø Õ0Tbd-"ºÂÉK Ég7—eÙeCÄóü2I>Xµ°—z66666Ð48ˆ0‰GÔ1Ú ªª¬À‚‚p„¬àäþS²âwdllllllæë!–xçäš—ÇF½eÚgé,«"/g–Wl­ÍRát:MÓ,a¨G×(¥š–þ7‹QJ³¾4_ (¥æäI’¨I)›½WRfso0Ǫ 9°m!666666À²¬Ï—+!C¨Ãåá§®ØÌsŒªÓBß”Y xŽ‘U³¸hÊ›ƒÁ´¢‰………9Æ‹„Å¢âõ€¢Ñ(¥4Ç´¢Ñ¨a9DBÁ¸¦/P2Ûbccccc“¢è0Í\!ìtE9X–çù\Ïÿæ ]PyAÍÕ%!±¹³g¦É,Øþ”m ±±±±±±É Qš&§ûX  .‡-Dr8r‹ÈmùÈ„„Üù7ÕXx$Ï!V’$)ç¼¼¾B kk!66666_h‚Áà|¡uº=XnI±9±¼Xœã¬‚çó5¢Tl-ÄÆÆf:ºî~ϼ¸¯~©òåʳ|ÿíèwçT|^„Ì£œå!Ä3£jœóÍÈÐà•ÎNArRÓxAÕd^py Ý==…¾"–ç×­]³„ÃÃBêU¶bcccc3w^ýþÝŸ}gej'ªª.­õ‚^ŸOV4·ÛÅ ¢n8LÝÃÕ×Õ™& ÓXr㊮/”wê2ÐBfú˜•O{ûÑm¹‘ÿ'bv66+ΟÝ~ÛÞÁM?þÎRdhš¶´†’$Y¾Ë™´Èùbh!66©Ôï{ñÅ¥Ãç“ãOÕí}°çGûÛÛÑŒçŸ? {uhHQþ’Š`×ÁÝ;ž>mõnÝë¥Ä•Öý'^܇ƒ»ŸHÈÙsèÄšŸîxú4öê>ЖÚ2qa‚®‰^ã/wܽ£ãq«Ýñ§ê~ºæÄJ×C_ý¾÷þçÿôÇŸß°¶3~Žúîoyrÿ¡G}¦å'[.|/ø³‰^/ÝüÙÎ+Ï>°åÉSpËÓgÞx.üünþ¹÷Ư4émž} !~AûÑ]éÃðú÷ø‰MÏ>ð ëðËçÞÃÃ/\Xó¯-ûßKtLhY„?úë3-‰)¾öXõCç­Á4<öFß=Ï>©ƒ\™¸Åø¨.ýòî–ŽNï¿®±¦³t /åí¿ðØ‘º6³æøSu ž:Ž®ƒ»ÇÏvìºîÞ}ðàSã/>ñôéÓOï°^›hºû`€Éºî0…ÀÄ'Ñup÷î§žÚúj×ÁÝÉfÇŸ¿×•®ƒ»÷âP·Å›Óíkžéîîîî>´çù½éo'àøS;žn¶ºœØßš¸Òñ¸%âÄ®ÃO츜C{žßû¬ƒŸìJé{b{ñéw¯ß÷øžç€ãGŸßóø WA.ýòîûñ‚ÖÔú‚ÚnËÖä½';vi}ÁŸílüî÷öþòÈk€×^znï;ñê÷·\ø^Pë j}gzù;ÏvxïüšŸk}Aíä±ÿ;ÏvfocÉÔú^xô¹}¶3sé ÆÅ¾ðèsíÃÏ'®7<ö†Õ«ï… ûòê¤[ã¿òìá×Á<ˆñ‘÷½ðès=v «ýçGŸ;üêø|ÿóÒª 6KÎ2ÑB:~±{Ò²”²ÿ€%¯$Î2³éÛ¤¬UOO¼–¸Aæ“Ø+\&¯jm¨ß÷bâäPóÓ¿8§Ÿî¸{üÅgö·¶î?ÑÝýâ¾Îô•¬ëàã‹Ý¡æŽÎñL-0¹ÔMæs¾°Í®c‡±ÿÛ©‰Ö];ëmwïA{gof—ÎöÖÉ]º:ÛñüÞäWìtGgRNÚÖäÁä¾õ;wµ&>†©ïÞ´Ým}ZÇ>¿çî6¬h®¼ò2~ü»r¶¹i¢ÁÎ]‰UùØáóOï^\ùì"~ù /_íå«·Ö•ve !é·›hÙuìðiëíO5 ¦Ý½Ú¾½¿}ïÞölºë £ñ¾ûñäÏ_K¹bÙ*€Î#/œÊÒaõž?ò½—.>x_€ÆµëÞ›Ü=…Î#/œÚûÀΜm¦FþŒ0¦0{ã׸ÿŸ]ÊÞýʳx;–vñµ—ž»ó{?¾øÐýøä|*OË„ñ=å¥2r’å¡…ÌŽ|ËìG·"sU_K+V&Ö"—¹’u|ê`Ðv ûÄþÖ”­iâ‹´°Í•ú}Ïìoß;¾«ø.púé S½¸¯>åõ':š[ íÀ¡f«ÑÄ•BrîCN´Üñtó¡Ìo^ÚÝcܹ«5©ï¯hV?úó_|ˆ¯öòÕ^þû—¿ûß~xÞÚ=ù§‹²˜€†{ºxß{l5àÞ™è^}wÂçã6/_íåoû_üɽÙÛäÆÉ¼‡ßøÝïµ$n7Õ€ìüÉËë~Ðb)"?»½zË“§Þ{ò6/ÿý4½g|äÕá×É8ÞÆûî¿é–ûïY÷˜læ‰t‡»¥gyÅÈt;|zÏãmõ8zzï/Žï;Жzå§Çºöí«·Ö¤]¨oho“ ¾¡yÚ6S‘Ò2qGXããnûIŽ}¾u׉zhûöþŸîØ‹ý'Ìë›°B¨ß÷ÌþÝ;êê{u?Þ\·£îi­{öd1]Ôï{|OÝÞºç[÷ŸxñÄDG´î?ñbž¶º¢uÿ‰k޶Úç˜Ééq)Øs¨;ua;ŒÏÃÂ6gê÷½Ø½/qÜupwëþ´0”Ô×´èîžü¿;£Q" )Ù”z&®~ß‹ÝãÇw€ã¿x‰/׊§ñ»/¿;qz×}Mzý¥£™í§î¤fos4奣ÙÚ|3½ÁD³É ?Ñú~2Å€“qÐ͆ÇÒ&˜2›~|23‰Èk?Þ‡NÚ~©‹OgGó¡îÁhOܹôÁhËC 9º µ80±Pí9ÔÝàÀ¡£Ö¢4¾&µH_ÌöMßæ™©FЖyÇì#´W¸$iËL[ú‚•p›²¢¥¯O“׺Ä2VŸ±Nœ´Ô_üÜ/lŸwŽ}~ÏãÝõK= ›EàØá_>üÏÚ²Éo–Ä>9dý<ñv5?ýôóV4zòÑôøSuGïN„™§†¯ÃŠ·xþ4&~•²„¸[2‰XöIÃp쩺‰ SFŧÔ§ ßsèÄš”)¶ï?ñâ¾¶ã?«îuKB¿ ´,`Ù.æñXf?ºÙ¤a/lÙYÚ¤,Sܽí@¦úo³Â™0œLbçO´eã2î×6~öÛŒ&§Ÿîx||mÙSwôø¶¶„Kàñˆ„ùü‰ƒ;ŸN·¯9ÑÝ]®ƒ»wU·÷‰ýÖÁO~»mßÄÚuü©º_ß÷íá]:1Å'§í9v»ž©O›ibä8þTÝÞ§îî>°ïññ /Øé2ÐBV,ö ·Œ°6›YÐuì0ö?“ûg"%î¡íî={?ÐÖvühûþo@×Áv<ÿ|ÝóãM÷tbͤx‹§;:»­Í䈿Ìad†&Ä®im]“8HL!5»àš®ÉÆé§wìÈȈãOí8¼ëÄ‹õé3MÃøigÚÆ' KéZV²wê¢Q¿ïÅlV¨¶óìïjcccc³¬iûöþö£Çqühûø‚½´qÓ†¶î?”ž~bF{+ ‡ak!66666_T2ÃýÒBÖ³th?úÔ¸’3|=¦žOˆ{ŽXúi™.œ°aß‹‡°7%Sõdd©# í›/,éá~ɳ©¢óêwîjºc|7>[ D®x‹©â$&ãGûó~>á„m­Û±'žÁáÓ8}z<Ú¢uÿ‰S=t–"ƒŒåxùõ×_ß¶mªpq›%àÔ©SwÜqGÖ—ìk¹aX+ˆ–ï‡ý}OÙ™-–Õ.ý 2ëKö7köLUÏ|nÁ19¾Y¶-ÄÆÆÆÆÆÆ&; ‡ak!666666_x–(ÒÐöNµ±±±±±±Y¦·…œ:•µ˜‘ÍrÄþ°Vö‡µ‚¨>0EÙ6›å‡ýÍZYLãjccccccc³@Ø;26666666Kƒ­…ØØØØØØØ, ¶bcccccc³4ØZˆÍÒ`k!6666666Kƒ­…ØØØØØØØ, ¶bcccccc³4L“µìõ×__œqØäOŽi‹<›i±?¬„ýa­ ìk1×jvv}ÂeEî´€ö‡µ¬°?¬„ýa­ ìk1m*[{GÆÆÆÆÆÆÆfiXI5u‡‡‡C¡Ð"ßÔ0Œµk×.òMšp8<<<¼Ô£X‘˜¦¹zõê…ìõzBl¨yµëjuC=CµË—ûk˯ô 7Õ×2ÞÀÔG‚åeÅiýT9ÒÙÛßÐÐ$°‰§=iF__ŸÃ]è‘XwQ±õR4u¹]ƒ×®úC±ªÚ:¯Ó‘ϸ EÖ/ lbš˪AŠ æcÚ“ƒsé¾xVœ=ýîp þ¥¶";ñT©«Ñþáèªê²ä•ÞÎOÚ¯\ßzc©/ÇûI†Ë+ÊL]í¿vs–/ýLgña-«(;¦vm0PUY@EuÞ)ñ$³¥4ކ£‘ÊÊŠÔë±Pàrwo¯Ìəŕ•ìxK·Ç½Hãσ\¿¶æw|çÿù»ÂRÏl¦¬$-$+.1uÆÇƢťåþ@¸²¢Œç˜âÒòxLa9Ö †n2Öœ>/Xâ¤Ò² E6DITcHWÝnŸMý¼â÷GFKu÷áa|ü1€#^oQMÍj×®uËÝ<ãñx–zóÀùÓï””½ÿþëþfÛº5µÿóo7¯®þÓÑ7¾tÓºwÏ|êïï©mÞ84ØŽ4”r<|µq}ë™3goÚÔH%߆Ï}ú‡Ï¼ßÝþ‰!U5®ª¨­¯ÿë[§6nÞÆ é Êؾ¥þå?ÿÅ]ÑÜyòxm¹§} ¶¹ÖãòIý£:s¥ãÃÓç®ÛÚR]YÚÙ~†:˹Лç4ܸí†×ß>óÍÚ–ú-\^°kjJÌà*Š}¥õU½ý=A5´vËuƒ=ƒþkWû(ë¼áËÝ\zçÍ¿º½¾îžjèåÅ¥”šÃ ¢Äup•¾â’.\ê,/t·v©¼ºA ÆØXPƒ6—׬^Ål-d¾Ñ._ ”Š×øâ"#2xñj¿,òûõ"ïµ¾îö?½[µ~[i™smsãØÐ°2:2Y1:%bGÏêïmÝ~§¿ãÓ×_}½í+_~í•·×®mZq*>ZˆGRC±(tµ¡¡©¡!q±¡¡)µMQÉdÛrqѪÚúT Ã#Wdn#Ïó =Ú冣¼ >^ƒþ`ð}ee5›7ߪ(ñžžŽX,2·¨Ó \åÅy”¹’¡×ÆôG¿ýí×^=JÛpÝ6çÐpy‰Ç-Ò7Ov×WÿÃÉ—Ÿ¿qÛæ·ÞŠ»„‚ÒBÖËqïŸð‘ONÊ–6_g$ Õ¢²a€›­æ•€«VY=›7olMŒ­©oÀe‰h4ZVVf†Ý>‡ƒù«®ÂŒn˜º2W ³¡ëz<E±!ª±x1öîŧ>…B¦’ÐÁï÷ç/å²ã¸éºëŸÖ$‚Z` uõ Ø0ñs¨4Y?9ÇêjÀæ;´´´X¾¤~¾µž,l+¤D¢àÌu8ÀV‚-ÂR·@! …ìõ%áöDŠ£¹R[´? Ö¦>Ýïî>€eù††•ÇG"ÁÞÞ6†1 š–ç¬d;+,Rã!’§2ýÏS¦¹D‹» ý0wYy tãËëËì¼õÑf³QÔEÝé8+Zº¢0ÝÀoÿû-×]gL¾] ‡®LmÖä€ññy9Ž,Ün.\‚iš†Qè¾bNjô÷ãÄ $n¾yâJU¼Þ)ÏEÐa|«ÄÉËšv¡×·å–YCUU•¢($Uà Š$µäAP¡Iädƒ Ýjºi&A`²aFrƒ$MÓ4L“&Ic²¡›¦i5 Ãf7’T 94€¾ì§ ©j™ D® Û )O2A‚AÍåššÎèhÀ;+Šm|\•åîÊÊ©œ!ÉQUXg2ºŽ‹ûª¿d05ƒ.žˆ9±Ú¥Å±ÖM±tÙšš±ã)G*J¼£ã8QtlܸñË_þÍW¿º¼³³ ¼†ó _¦«õªœòt¦F“m†¡D;#4©±BTD0!+Z4õûý6›­À]ò%ÂÀ‘#7]“þŽ¢àà… ;ªªö—EŒH °Ú½½xóMÎnÇδg&ÙašæE6†JJpò$Àg¤Ã Øí6YQµø¸a1„¡Æb±Ÿï¾7ߎFI‚à(*¦i$A°×4Š ˜ÉM’²®Ó$I„Õ BÑu†$ ‚PtÝÁ²ÂŠÂ’¤ ¨†ÁR”aššap¥O64ÃÐM3ÑàiZÑu#©Q.Š~IÒLS é¸¦™€a$UŬ“ ž¦-ÍS(Å¡HdNS`H–æISprœO’æ4…„æÉSðI’ÿóŸÏ=Êra[!É8sÂuU+€pÃý'M…wZBM8çyŽáÊB(®š¦5:Ú§·ªê¡øEï±S< @ð:´˜é×¢ŠÕU²"û^) >|ø³Ÿõˆ¢kùò¥†atwŸVU%?eÆ(&BMJ¬›á4‚à4´ MÐO³4 ^•{éË%ˆÄå©ÔhNä˜ì—¡ÐòÓ§GλùÎ;‹"ïmàUÀ14„ªª«Š"±p¸Ýn+)‘¦ z£z<èï·}ô£)CDá³9MDáv£¦¦Àg¤Ã 466ÂÐ4ЋbÑR€Íf³#Ÿ$Y«{!¡gºau]š¼bÉœÖÒ Hñ]“1IŠªªašÆ$ÑYÄ(‚H KwŒ'(YyÆõä)˜¦)©j.ÊäÒÈ ­í-ÅÕ4øý’Éq&Ç¢@Q+ë+"u8Ðä*«-«D4 ÀºˆhT višlw0§OC4‰„Âá¨%Áä8¯×^+z¬‘‹â{Ç!éùrûPílôªáx´?`ê¦ÿô…@Ûp ÅT‚Êþhš„ßÏôõõ¶µéê:µdÉÊÕ«¯òxªòÓJ&ÈvV¨Õ”&%Ö¤ÄxÃhg…vVˆ‘ßC¾lÂG8Ñ!r MÓ%•íuàæþ³¿ˆðŸ?fýú¾â Ü÷Øc[LS>wn ÉÅDî;ªŠ¾>ƒÁÎÎ=º®wu€Í§³Ðƒ ‚ Ê[‚®#Eñ(„à©YpÇ ¢(p¥¥¥Ö•x<®* W˜™h&I:³nqîOÍ5÷Ëk¡ez»r4]”´L>Û¤–†Üÿ,´üCxMæaYåÌž/¤¡á îBOÌ&Èò°Y=ªf:dw÷°fË»ª«èÝýTƒHŽŒXÊV0Õ‹\•äÈyÓSfuõ”„êj²»»+ØQÕrãå²^Èà½öPÇ(B¬uKƒAÓ0g ˆôދծäÕ¬Ð4õìÙ£ÊÊ*[Z6†ÞÙyRÓæ¼ ÷0|Êë”ij¸¶5MSSZá0À¶m]£Áhš¤ª%–(ôøO×?eçUõÃgÎèt`YÔÌ ã#}’étÛéH$¢ëºÏç£(*‹à8NÓ4]×iš&BUÕŽâ©§¸êêøƒB×mŸÄqœªª†a$î%‚ã¸xØ!ßz W\QT‰!@¯¾ZPœ$œ 6ÚíX³fø•W”Ûnóù|kkkO…äݘ$©Üà`™ª_—ÃÙK§¯©,›«=42Ò¡(¿þþSÿñøãÔCahhè+_yjË{Û+í¯”¬Ø|ë]û÷OËàÍAN}”ûD^/¿||û>{ð ×w·ÿì®»Þ÷‹_8ËÊ|ôÑŸl«ÞUQÑ 4è:^6æ’g»¹@’$9&œòds.`(ŠäÌÁ³´*Kt­0‚Z D† Ê3>f@'(›åY¹È™\.çßó·E^eß5Ðc*Å;M†$¸ÑÔ y\Ê_žÊ†‘:„h.Èq"ñgVý[îhþÑ¿<÷ÜΪ*§Ç‚ hš¿ýöÛÛÚ^ëêê²Û±f Z[!Ì%’'wrÃ0MgwcäÃ4õbüâT]/Ê–W)ƤŠ(g®X¾<ÐÚº*û ÷*rOìÎbµKª‘ìfµ!kW¨ ´AŽ( N²6“ Ú^gI²»©i Amms«$‘”jhMJ¬æâÅà»HøÆ7ðÚkX·îÂBª_}u¢!I(Úa|E à./ß/ŠÌððÖ`{÷bY¡%LJ֭#ÇÆŽx½à HrÛ¥:”±È‘É€^ÀÍ7Çμüíè4ܵ·ÞrË'füì6oÆÖ­-_êû7{yß_=hž8q™Ä3ðÁâ;ßyì_øù#)Ê <ðÀ#ëVX¾á¡»î¾{ÏžßäŸC’$ÇÛ”a"3°gÏžÛn»H“VFÄm·ýÏçž{þСW†‡»dÅ×!„Ãá˜$Ù‹ñ/ÍÑt–\IøójÏ|ÔLÃD–-Š¥éÈöç® ;îY%ü‹/Ë¿TV9ó„w¹RUåñV7œ \²â± J0Æ8‹öƒk\ñ±¨!çº$HÃ![eªÄu2|;#,Ñä&%Æ™†¢ÈG¾†×¬¹º¬ln¹–-"F“s\¶ÏóóUK/]ÕèÑQx½Åx€·´t1A,Í>0glßN×ÖJõõ?#ˆ‡Âá;€¾cÇ6—¬üuâDFN¬¾e ¾ò•«>ßtÇûþóûŸý,¬°ËgžÁ›oÎ4 W¯^ÝÝÝæyˆlšfá'2& C4 UÅØØØÉ“'WΪsú4::ÐÖÀåúó…^ýЕ>ŠwÞ)Žs…Ífãx>VŒ8 E׳¸ R•x#ÆÁÌdfÄTµ('2YƒKj„ “Y†%H%¼{¬MSeE5tÝt]Oðîq¬¹¤e&™øt]×4Õ˜•5ú^†޳ŲB°NAÌ{T ÄX§P¬xŒN†og… MmRb¬i¾ãÇ÷‹¢cåÊMvûÜ’J†i¶l†Ñ¤ÄÊôKÌÉA’ä|q·Ÿ81/b§¡¨·Û5·ûõIž¤ GQu}(ÔD’Õ@¹apÀâãÇOÅÍî™Ün·u¬i¦ؼ»víúП=¹öªÍ ¤ ù­³båxà'Ÿ|2?eLÓÌ FîB2ôîÚ…ÏgÏâ‰'žxðÁñø4j§ï¿ÏJa<ø 7ø ´¬}àäÎIQø,’AQI’E‰ç°Î3°Gô<Éœ@Æ€Ð,BrFÖ¢>{ø§|ÿÓÅLÏé¤i°àãB#ëp°½Ý‡â)Ú¤Ùæ¦†ÁÁ€D%lï¿aËÿá žçÏ÷ô•{ÜåµKµàà`ØôÚLÆUuÍæúz'ü{ ²¹B‹ºšÊÓåÓÎ b[ Å´"B’ÄA IDAT ÎØPÑ\VGû Eêdx™ {{Û47/}øásßþvéèhN‘(šâ4&lY»¡Q—²Þá´™'°zu¶;rF" ²£Åއ§ê™µ´<½g»µõ°%mEÀ¿Î·¶°cÂzmho¿,ªÜeHëˆF£¦iŠb¦tÙÁAœ9ƒßÿ×]窫«ëìì,/_jŒåÎÝoqxÌIíÙÈœŸrÇÅØØkW_}µÃáèêBy9víÂÝwO ¨­…ÓÉZλ} qíWŸ¼ðô¿†ÿŽ;rM¾-0GæÔ‘ýþ˜ê¿¸ööÛ!Ãáp4©w¹úC!Š$m –eš$yšŽ(J¢ÁPKQQEa)Š&IIU ަI‚ˆ©ª›çâq¦ @Ö4a Ó”5ÍÆ0ša(º NYVÖ4Í0ì,×4Í0'©ªn5Nçp$¢†“ã"Šb˜¦‹çC²lš¦›çñ8ANŽ Z – Ê2Iv– Érò*ív„B™§À±´C`S°Êâš–<‹™>1‘e-¯O†)$4OžBo¶©XðVˆ,ë,««j|ISË’¥ÍaIvØmZ–·XTU½õ–›5ƒnJü2§¶Ѩêp°ýýᆆy`_X Ðâ*H‚diC)ôôu ‘ós.€©+:Å£¯„œäcioïxî9oiéÒÑÑî”ãËuÕeh‰LíašÎ9¿f¾1…"e¡£Ó§±c0[ÚÖO¹V^®¿éüÌùÆ«Ž#Áø`³•nÚtöܹ,^L;¦¬[³Ù~ ÜŠ|ü`pSâñcX»6튆\êÈ<ûì³wß}÷sÏe’ãpàÓŸ–DÑà–[nùÇüÇ­[¿ü䓸Ä'p啹*3¯Õì Š–5üþ mmm÷ßÿYK–`É’ìî»ïÞÝ»û‘|¤@r„¬”9!Áår¹\.E×{ƒA+S×›{­¨IÝâÕu=‘×:»xT”œaŒ Z îÆ&ˆñÉFb šadͰijP–‘þAAYŽq\PΤðœ¹ca;FF¤òr›Ç#ƒ2”e‚$ƒa†å…4ɨ–„ÊJqhè=œÊkB‹ žB+••N-*ç’3Ò`÷ØÉb"€¤<Ó$Þ|“4 'ϧXP×ÈQD;#$R|Cä%´ÑsmgÝè?ßé ävr1<<ÑøÞ÷@Ó eI“Ã@.Ræ¤CFäÚššõòË7œ=+…ÿÅãn÷Më÷zE䉟'2éΑ‘EQ††ÝÝxüñ´rTTHV´1EQ7Þxc(ôòúõs0A0ÏÕì"üô§xâo¾ÉµvÉâÕæ2[‚ÝîÐu]Êåß2£9bý¦ÍWo½îö»nw%½ûÉbä‘=¯Ð adS¬äÄ\&E™MŸ¢|9y`a[!Ѩ*ŠEð“ ‹]Aˆ— ¦i‚,ô_uòJ0ÏÿØHX(w¨@2ܺ6žÊŒho?ÖÒ’¢¾|Œ$ƒÔe㌎ø/ŒK¾QŸ$IÑh´¯¯oll,§{{‹a4ÈòL†Ëâ ht»O¿ºâ mÏž{ÆÇMàåÂxßV¬ZõK‚håC@¾$EBºlO=õÔ}÷Ý×Ô„o} >˜“EAEEë™3gΟM×õžž\u˜ïjvÝÝè òuîœç$at¯¿ŽÝ»±eË­O=õTá:ä]×aš¶‚Ϫ°Åeþ†#âŸØ(¶z¦Vd˜¢,üY–Ýê©zÄ·>ó°¢$å…m…$Ÿ18©®^ˆ¥Ò‹]Ö(® ß¼Pá4=+MYZ˜fqiK¼†ê›ÉQ¥)MJlììц†–">«øàa"¶»œDQ¬««›ÆZ6¯‡á(¦E˜ƒav;7ØÒò׆¡¼õ56Æ…ly׳ìÛÞææç{z(Y.‚Ï&$rdRþŒŒp—cŠSBB$‚ï}?´è_ûµ/>ñ£åªLN;õœÕ˜› _ønm ý}ßçþ|k†ò¿É¼^|ùËøâ±xqI0ÌÑRÜ‚$IQIŠœ=@Ö´,d礡’Éè02­°V Eáú„²‚pE¦SβµÈ*gž°€­þþpmíÄ»rÆ‘ÊȈ48˜Â+##S?YÖ9n¤E&ˆg.£ÝBBÜ14C¨È?”uñJpîG­ Æ¢E²®b2$`7t«‚nˆ¤ÚYA o,õmݪÒôåú‡&Ø«¶m­©ô66µÔW—§3#­Ž¢ iS«Eôg ¡·X´;ãñkjj~!Ë·®_äøñuíí« ‹NÖ¯w…Ã®ŠŠñ£Gt½p²×|8‘™QqðÙgñW…/ù™fX®§#YªUØpÏõOÛ*w~pu]]®ÊXÕàrƒÉ i”–ÊÑhÔí®A«t>üá¿ôÒK…è‡]gÔÂh:‹W°1 ;} IÔt9"ÃLó²ØbEzŸgO™úCp%L÷îÌ.ÌËÓtÖ¶¬1Ì,96†Iž×é’±Œ]x°næyÍ–#2Ìì‹3`gÙ,†³á²qAϪj¤Llñûã$I(ÊÌ V8¬È²nf,¦ Ẩ——Ûº»ƒVŒjooè=¬jÂÔ 2ßD!®L„iæïô¸fh:ãÈÿL'µšÜGqšÔL„Iª"FóQÌ›=ƒ_¼#vàuÇåÊØL÷HOË‘±°w/¢Ñ)¾TŠ‚a ‡Åõ !—Íwg'–fcòPUX;È"ÔºkÙ¸ñ(ðwË—k¿üåfÃ@¾¤S„ Ng?°qÓ&VQ]Ú ¬3ŠÑøÃèì]³Æ›;×KBBI î» ó¡'Ze½û3ŸÉU‚ È‚™3Hؽ{÷Ò¥78Ÿ/Sôs: µµµ{öìÑ4-ëKá³H†ªªš¦%¯»Eý¤ucD×ÿ¦íTº»ì,ûíÆeI|­í´4iÛ99IžƒRAø»ÅKU’üjÛ©©â2v6¶$9Í-²iüÕ™S ÊÔJQä’Hå]÷÷ÍËyòXºí‘×fû»%M!ÓøÊ©©û‡#9º«ÂfûŸ5õM}ýÌÔ¼ÜÞ“ôÛ¨µÛ¿T]ç#ñ¿ÛΤ“ã„o,ZÒcèœkK÷ýTÛí_«©?®Êß:™Âÿ³B‚A™e)Ž›aŒÂã|¾˜©ÚÐàòx„„UaÁç‹Y­ë~¼´tÚΛ$a¦ª É{ J0n¯+‰"Ÿ|]¾LŒûò¦(>j4E í Ÿ2úÒQ¾ùËÿ~¬N “tàò I•Z& e»iNKI‰ÔÖæªD¤ð?±ÛÊÎ¥(ßοñŵ$Yø1Ó¢–;°5¥æëi†úz†BqÎIJº2—-‰èºîóù¢Ñ(Çq±X¬³Ó&ŠzÛ®ýýë}¯üø—¿T·m ÁqœU…ã8UU àiš UU­ÞP(dFro]]Ý[o=·nݺ ÷’$ɲ¬ÕË0L$QÅÊ×ÑËó¼¢(†adî•e9hšfåýZb<Ï˲|êÔ©¯im ôõ¥è5M“aÓ4C¡¥ÌìÞµk×þèG?_·î&‡öze‚ ÄãqÓ4Y–µ|9EɲìóùlE²+UUUU5™˜‹ Š$h“ð¦„eIQEYVœ ›°\ gƒÀ0&I†ä¸W§jöÚyØLðDBN$‹„×fK˜–À…‰‹çÃq9Ó+Šé¸RÊ!"ˬÀ'ëlc˜ä^›8bڼ܎i·p4M‘?}Ì 9e覛ð7ƒï|ç¦Ý»wç¯nñðßÿýß7ä=™I¼ðÞwË=/ßgg_x¡(zeG<WdyFNJTU3› Š2›cFälP–§™ qî¶ÅwK¡M=x<:=ÒevømLÓ2› $U;;Ñ&¢(É&ÈÒûÞ&Ç?„×$ ÉòŒpÔÙrñxÖxÞñx¼ÀWç‚´BÎ…ê49dÕ:¬It%,’?"ÒPÈ6ÇU®ÔFÒTl8}ÆÞ\ û£\Y¡´%™a·»ÆÇG cêÕ'ÉvVhc/i@A6ˆ¢XZš+éäÂaƒ8|8Ÿç1 TN'‚A  ¦rÏÍŽÀýÁîmh8þöÛQ hÔÑápyW—V^8$§¢$rd„IGTc#*+ÍH4ºfݽ,ËnÛ–«Ø„„dð<¯iZŽÑšE©f—R@ àr¹rL]I)ÁÂîÝøõÿÛÿÔ‰çŸøú$ 9ÏIB~0' Ç „fYêȨŒËžù%kZQ¶>E)ŽSD9sÅ‚´Bþˆy‚©¦i’ÌÂbX§ „òO™MRia‰Òëêäo|£}pðìü=â2ÂÇ?IB~ÎÒÒRøýp»ÓVÜÍ @†ØmíZñå—¯ôû?ëD,&Ë£’T47~ŽHäÈÄ“¾íãÇŽ®ñûÓ– L‰xš¿×­·ÞšcjIQªÙ¥TcÏž=·ß~{!,|ìcøÆñþMŸüè×>rÏ=ùHÈ<Ïs'ƒ/„¡(&sf#òÃñ¾ÿ2;Ag²Exš.Jp|V”NgàéöðWÇ ”3OXxq!s‚eµÏDý#Ò!6²U:#}9e<2޶±ážÜØ´r@t PqUCQ*ÚÌFMͯ—{òÉÚv¹߆ÇyA fm7SäÈdESöîÍ>Œ `È=!Æcá _ÈeìØÖ¬I×¹$£biép (+3»ý•@`eCÃcÀ‡€¦¥åäð|ó›Ÿ-DB2~õ«_™9ÐêÌS5;Ó4/\¸0;Ü$w \}5Nœð6_õèoûØW¿š¶"R³8öÖ+ ö ]³óVJ‘b±˜‹¹y>¢($ApÓ4’ XŠŠkEÌdƒ&IY×i’¤Âj¡è:C’A(ºnåȦɒ¤ ¨†ÁR”aššap¥›¦fHð$†£(Í0tÓäiZÑu#©QÂó²®k†!Ðt\ÓLÀÆ0VüìŒ4-ið4miž˜‚‹çƒ²œy o˜"\$GLΖæISYÖJñÕ'çbiža Í“§àË™×Â»Ü Y¼ØÕÞ> ©©äRë²0 •_±(G+„uÓ2°Ùìk††Î9ÒÌï‰O!8~øàÁcomºæCk—ÕÌèJ‘#StlØ€ü §‘ÅñÜ€]×QZúû#GªÖ¯/Üý~ /Ûºõÿ=ú¡Å‹ÐX5s@¢ŽL¢›•ñ‘‡¨ %Üêêêúúúêëë3K˜§jvû÷ï¿úê« ‘ŒÒR|îsì‹/꺮§cz-°š¢¦4 SÕÁ3 ’¦ƒñ¸ªëA膡F¢¡„6ÙP C7 }²wv#ª(T]7LÓª¯;»C‡¡C×MÓÔÍ ÌheYÑuÝ0LËp$À:ë™Ý0'–¹“<…@<®êzæ)膩êzòKT²æaYž1©óJ9Kóä)Ìïr+@SSÉ{œ}n0M˜&A¦‘åÊ8xÖÉŸº8zåeËZ?¾?ëÈKŽºÅ5 A/ªIq  ˲¦i©}!³7ǧÒð ÃíNËfFQi«ÙÍœÎáð>ß®+vð…ú+Y·{A¬]µj|÷î÷ßtÓþ‹f…¸Ýî`0ˆ¤Ò'»víÚ¹sg¢2OÙ¹sçã?þðÃg–Pôjvñ8Âa¼öÚÛýבŸ„Ù°nºiÛ믿~íµ×æ!!+Z7^i€4tç0QOŒa‚P þr Ó´ä$DÍn@7 È<Pu]7Í c2ßnÊaR¤F !Ï:!J[&™'•ŸzYq¹º¦sC8à?~òÌèðààаßç÷  ^0MýÜÙ¶Qߨ¹³g. Žôt÷ŒŽŽúÇǃã¾á‘‘sç:zº»Ï÷õŒŒ]Îþ¼÷½㶪,‰BB¹ƒ P”Ô˜ùCyyíš5WwwŸ9{öè¥Ö%'\ìïíNq E’dŠ-#Ï#A`ƶûüù‰†ßÒRüþ÷xåؽíí0 äNÕ<::“šª« 7ÞˆŽŽ\%d·û¼ÛýsIjÖ´ÂÈ›ëëWªª{l¬qtô_,U3扅óüùóu¹Ó¦’0ÇQ•5Fµ¸Õìž~á;—|¼ýÍÑÇÑÞ>g °víÚãÇÓ+8 šaY†æ'mÛp8‰F/Rtª$|Ú^·²j¦}¾\$–ª ;¬/û?#Y~EùròÀÂö…PuòdÝ]ZáZ¾dqÿà-0ì›c1©ïØ …/rØìe.¡·§ÛéñF‚¡ºúê`0òƒ‘( $Í‘W^™öxò½†Øp¨lMMt mp†Xã¶ŠÏÍG‡Š1N^-À¾Y±BEQ–7v/Hež²ð±Ž²Ò©4¥˜¡XK“ Ã0 \@4‚Ò¢¬ß€¿¬7gD?¸8ò&6ozÁ ¡¤ˆ€Ü Ì"Žö­À€ @ô¸xbB+ ¡ Ã[…ðÐ Wݯ!:„ÖV´²;Ì9@).œ¥gݺÍÑhGÿ À/¸3ßZ»v—k; pÜq—ëVàp(R/,.'2h___mî\pÓ‘™QtçÎ{öì¹õÖ[3Œ)n5»¼óξG#ÿù_g¯þ¯ÿúæý÷ÏYBf”––Æb±”é0Å­fg³Ùxž× v„È^üÅ мIÀÌd[EZ69œA‰ £ÓYöYå̶BsöíÛ®*/· K•5ŽÊš©ÓôÒu3í¾êºÅ³% „½^Ûè¨äõ^Ö‰šqjbm‚"mUÎ ãc~¸ÏCÝcΆ²¼z\®Ò¦&GyyäÇ?^Hö‡…˜¬8ÝLÿ…ÑÊ’‰³ÿ3§ŽÓ6ÏÒÅ5~¿ßf³:õ59èCü Ü ÀcßÔöbï‹€ ŽÀv!8Œ’ZÔ„Ñû;Ⱥ0´JâØ†æD7c=àmØëj^ ¯6Û±enC¸#çÁêÊp^Á AÁÞ J<8ø;T08@cæÀÅ0P P€%@0”×ïÝ»¸.ý¤w>]­i»~õ«Ý‡_’šÊˬL7Z–ÑÙ™5ïçíXìwÏ?¿*64È@hF·Ûí.niÀĉŒ:úÊ+¯ä^8f2Ÿ¾ý6jkkžùñN¼íxà¡m>V­š³¹ªqýõàùïyöÎvþ¯/~¹Ÿšå¨Ã7Þøâ‹/~ä#É[BŽ (Ц(Ç… N âhš2Ø£õ@Œ€Íä¸rp\LÓ /hgE§fÐé |¿ëÂÞÅ=Ê™',l+dp0²h‘“ UÍÓˆSUƒe©ÊJq` R_Ÿ-·wäq‰÷Úã£Ó»;ÇØ¹h€+±ñ1Ø1:Öc*IÏy'G’dCà ž· ¿øâùì7\~ÐuM–¶Úª©ÂÔ)†K„¦.ZTMÉQDJPâ–ƒ®A,[FjÑà‚͇’2Œ— –Áb§(Øì(g †P®ÐNTé`ZÔ8ÆÏÃ[ÂX˜^ ´¾Ü"œcI)Ô60W <€r n ‹atÕÀµ TPD€E@5pmÆä—--ýýO†Ã5+WÖžææÛ2°}Äbp¹°9 3êŽPè·çÎ-:¿xqkCCŠÈôÞ¢Õç›ë¸$ åšáÀåøq¼õVä}¿~Ä·ûÑgššÔVˆišE¬f×ÚŠ7ß|ëéßü¯UéLžl2£¢¢bl,u’]q«Ù0L³(5u•\ŽŠHdóâ¢ÕÔ ‘†‘MŸKUSwa[!˜´—ó3šc1•çiE¾ëèf€UJ–W&¬[µ‹âhZ`”P\¬uË~)Ø>/&Hp8Jêë›tvžŒÇ e‘¿„ˆ…ÆÎŒ°,­ª2&«`µnšAwõ;„ÖVì{6oÆ÷ÿ/þú¯qjzFî޽ر‹wàÙ¯cÅ \wÄɼ?ý:ìØ;`ß^®¹‰î½7Ztvbß>,yûöbÇ<›t¯Ú?‡4QYÙ7:ꪩ!ºº*c±{š›3«#ò6§³™¢úC¡-r¶jæEA8¶2bH’|õÕW·oßž·¨ %Ü\.\}µøý?|©»÷Âw?ˆ3gR+z5»Ã‡îsŸ+DBfÔ××wvv.UU±¸Õì‚Á`8\rÅ?¢¸XÀÑ©’¤&JãVTØ4©¹cxXJ)ªóïÝCÕíõ¥b­[¬u›º ŸŠö¢ýM*Â~"Ó£µì[ ‚ —,Y¹rå&·»ìÔ©C§NZÐ&{IEµÇ~þ|»?UUáh4:±eLTÍÍ7ßŒŠ ”—gi¡1cRISÓTPj‘L€wõêUU‡ïezö,–-ËEfS °ã8Y0ìz W4A°¶C Ã?~|MzŽ”¬ÈàD¹óNTVÿðÔw®ûø–úzÜ|sêaAQ‘P# :Ž< ‚ܽA·ÞzëÞTÄ6…ç'Ãår¹œN{aÙ¿XŠâ²FÞ$Œ,‹Šeg“¦çgT¹¤AÙôÉEÎ|`[!ÃÃREÅ„ !L<>á„Ôu££cüÜ9ÿì[úûÃSLÉΰÊJqhhbë?>¿¼‹Š\ øO_Ðe5Ú0 S—´èüZÉ02ž¯ ‚¸lY늇†ÎŸ:u¨¯/×dŠŠKà ˜#Âã£þ°¹|É’Rw ^Q§…2Ì΋I B¢Žü–-Ø0=6sÆL΄ i‘¼^47£øÊUÀ5@ßýÙá"R„ÚØxÊ0vß=rıÎLÐ4m™ˆo¿ý¶ÛíöùŠ×ONsðŠoÙ²å+é) Ã(œ;5¡ÆÞ½{wìȇM.—‰X (JJÅs•»„\ ëº¦ëábÈ”5-K:‰ÌÞÏ,ýPl5ôL+lX–‹r"Ì'Uq|¢Êóˆ/KŽLV9ó„…w"#Ë:Ç¥°CI’Ðuƒ¢È¾¾ðÒ¥nŸ/‰(vû”å;0./·©ªaÅ¢êºAQS¶!ÏÓ±ØÄ<KJÞë\«¦f0vŽd(§Á:Kµ<\My#îR£Ç¦ /Z¤Ü}7ñòË›B¡h™·a.®[=<<2í‹ ÑîtÛÉ]ûŽ”6¬¯óf QZ¿ÿöoHÉ"ÕÑ1Í¥áœ.ª¾k×¢»‡¡ªjúE£°ÙpÝuy¦ÉŽDØÁ@…Iëv:ÛÎÃ== m¶}À§ Upz»;LFô”8#‘ÈïÏ=ÿüžkþþ¦Ž›ïû^Ûý7Üà»â NÓ4]×iš&BUU‚ 8޳ˆÉ9ŽSUÕ0Œ½>Ÿ/C¯uï¢E‹^}õÕµk×&zI’dYÖêeF’$MÓ,_ÂŒ^žçE1 #so0¤iZÓ´sçÎ]ýõ–V<Ï˲lš&Ã0Vô‰Åf™ 3z}>_†^MÓ(Š¢iÚêݾ}ûï~÷»M›6±,k†Õ«ëºÏç³¥/+?'H’Ç©bœòdw`è”KÐ BA‚J»§*Š2èlr*K;tQÎâ¿É*gž°ð¬]7†‡ã픢H‚Àèh´¦fâŸ>Ù`5 3açUWÛ;:Æ+*Dšžfú•—ÛÚÛÇ=›²úGXˆEUm~ÒÈ+*˜ááÔaðÑ€Íæhl\­(ñ±±áS§¬p‚hø±‹w¬4g¸Êëî¹;íÈDšLhfÒé4ä«¡((-Ed2êÄ Üv”¤ÿ†ýklÞŒšÔÌd—/.|>Zƒee¿–9Å€¤B ÏßpÕUþS§®v8†<þí·w-[öQ»}¨.–ªõ S>§ÖVÔׯ¬<~¼Ààx<žËÒ»sçÎßþö·÷Þ{ïì.ëD¦À‚´–/¾øbÞ)Ç9NÀcáæ›qæÇÿù·ýôÏ÷ìñEþ¡‡æ&!%¤àè¹óý#}¾-·ÜȪÓ4­r0AXôç³$Aè†A‘¾€!IŠ LÀ0MŠ$-¦óD‚AIR$iÑŸÓ$©Oo`(Š4 š$-®†¢,>´ ’´hI­ÁÉ ë³&5{ m†ì2GPÉS0L3y ša0$™<Kó SHhž<iŽÉM r¹­¬LmÔ×ÕMÛ”• >ŸäñØ\¸©ªšº«±1ÅÛ– ˆææ9O@Ñ0O®Eõ«|¾#º>m?À²|}}³Íf).çXìÒ¤¡GŽd*;g­kÖ šíø¬½Û¶áèQض +V`¶¯úðalÞ|¢¸»º¶':;åOº§+ÀV’Dmíé^X~÷݃ S·oß/o¹¥µˆVH Ö²ù(#—ååå‘H$]oQÔ°hàó>™“Ï?oTôõVRÆóÏG4ÏCÂlôôöF “‰© 5‹éšæâùpÁÕìD–Åd8Ó4SW³#)(*C)8ÏÇ4M#ˆiÕìÌj€0YÖnv5;7χ²U³£H‚¡¨Ä¦ªÙ%MÁ"S)¼šÝ{ ÉëóÅ,úi‹äRk´ ÁÒÐ èóàéh;š0AH’ª¯oæyÁá Îž= ßd¸Ì}!™1q"“®{`›6apºŽÚÚìôê·--øÅ/°cÊËÓ–ž¹¸øý„ÕÃÃ! ðm l¶fŽ{GÓ® ‡ùÎÎsƒƒfuõAàÊ"é;kWp–AîjkkÏ;×ÜÜ<ãzQªÙqwäÈ‘¹r„ÌãÈë®ÃÒ¥ôø§Î<öØcÿãsžÎÎ9KH‰–Uë–*+¢Ñh)Àf³ÙBÑh ·ÖÈ´\° ’ª&–ÛÙ Ä PØLcÆc±¨¢è¦™aL¢ÕHL!89©  ã¤×%jæ°ä 4yRsj䎜#“;tÝ É?fâæ EC™³ùÀfW++•ªªE+Wnjn^;2ÒßÖv¤¿ïü<ÅH-h_ÈÌ™èìÄÒ¥à8È2ZZ9|€EÿPZŠD.Ç[oáŠ+ФlþX²ä‹}½¦¦›az‡‡@¡¡<·_כ΃GV|ö³ãŠ™×ú2…Ó…å.aÇŽ)\‹RGFÓ´ƒnÚ´© 9Ž´ˆBJJJ¶lÙròäÉoH_¦Ï[:™ÇeYŽƒ MÕõ,udâÜ'J+ï"–BË´õµœ…#ëÂ_.Ù>¾ÈýÈH–RyEÁ»Ü q8˜`Pîë ×Õ¥ û#²¥1w.ÓìEçÝwº~X娩S‡ÚÚŽHR€ æÅ^.M2ü¦avlšÃ1aÐHŠ”ª‘’… šæõ•+}O=ÕŒ©‰5sFÃÇ?þ6I6ŒTÑôg»»ïŠŸ°¬ãƒ"–‘Ë žç†™=¾(5u%Ir8…Ô£É㫸òÊ+³bŪx|¤ªj¼¤¤óÂ…Õ@Úš«¹¡ØQà±NV¸Ýnë S8]Øœ$´¶¶¾ñÆ3.ÎZöì³øêW÷¹\[ ’‡$I꺋Åò–<ϳ7ƒŸƒ$ ŽÊâq¡ƒ!S˜zÉR§ˆ¤5ÞydpèQ¹ÜÔ0Gi$1͘ø"Ð*Å?bcžžæ´˜M:bge6i^ÎÀÓíá¯:¦ý”œ\œž>¯ÙrÜ|l†Î³QÂKD63ãÝbÁã±Í¨LþG¤ƒÝ®G"3÷bÅ…8îúúf]]§z{Ï(u@šeÌ_ôÆ‚Ž ™È‘éÎz«¯×^›}AÌd¹ôpA—ëöÆÆ¡¨/;¶¯ªj9.7=S£ˆeärAkkëøÃk®¹¦À‡&pèÜn”JOxlË÷^øÙÏoŠLž_ÅûÞ÷¾—^zéÎ;ïÌ[B:H’“¤ä0 ©?²6èâÔït¤}KéUÛ(RÿçóS‹ºåPI— ŒöP…K!cö&½%I ¶ø ‹ÊΪ•—Åé'ª6Éaê丨¢êæÄ].^~¨¬2Hù~Ò—60·L?]Z3b†~:8õ.só|™0E8Va“?YRÛgŒÿì”Î^…©¯H|t²Úç+Ë/~Òæ“S.J—Õ Sƒv§%œurÊC¥uƒÔà×ß™ ùÐt,x+Ä‹ùc±z§s ó\gwÃ1nO•“5ÏvôØœN=.mÝqÝÁ7^§(nÜ7ä®®c Jà0<8âð”S$¹qýºþp8¬(-E­±¹@±icëöÓ´i¿Ésd‚¨¯o¶Û]áðødÂíR:'þè =öÊž?¬Û¶£ãèõË×{Ý¢¢(4MÃ0¦›°,Ö­€Ç‚…ÜHΤæ=K ¯7ב…âªêêÀÇ=žó¿üåm×\ó¦ùŸ¢x3pK!B·nõ·»(Š<—h4j­…`›«„ÑQñc“>ýi[‚à´jvŠ‚gžù³þIïáú§6’Ìß’ßWQWW÷Ë_þ² éÀ0 Ã06†IÔÔ% ÓCÓ<踦‡•Ô ­ƒUJ)†4à Å&’Ÿ-¦óDí·R!VBÑa‹kò”œˆ& câWI‘ɈíÑòä1 EÚ}1I›<>ÍA²MF3MÉr§:HÚ õQi*‡™¥£Ò£1GÁÍêQÃH ;’?:™°HPŠÌ §Â¦Ð„i'©ä13ÀRº“6¢……ò-x+$¬(•¢Ø1>nw¹×¶–AÑÇ®Rïx0hlª,/[¶\ÕÍåË›UeyÑ.°ež*»]T5 “ÙJ=Á`ÃÁ\"ò¸Ëï¼}|† ‚|!.WYmíRÓ4ººNŸ?vö€”Ή?úBt%ÖÓÓARLDŠ—z¼c¾‘{$IÇadd‚vÌI¢…0Íi9´ÕsOFÕõÔ9À–#‘ píµhh˜³Ø|ÀÛ0LdݺWº»#N§ªë=…ymN{< pˆ¦oNf¬ñ›†±þâ–‘ËŠßý7ÜÐøösŸ^²øÛ»v5\=hº jv‹ãsŸÃ?i}´óKÿøW_ÈBs• yë°|ùò3gδ´´·šÃ04M'ûBd~ð¨@‘FDI2æ“Ä)U§<êQ…&BRéĘO‡´¤&ÅNEì0 ˜äÔ˜€¬BL›Š½Ð .(Oƒø$ñScqͰǵ´ñ>IüähL5œÓƘœ/f$ùx .knYŸZßa‡/ɘðIâýþ¸jx$•M'çÕ^ñ­ Љ²icféó©qY7 :ñ\ðV'Ç­òz»ƒÁ —+ùºgr÷fŸE}S]=Òg©Û  ;l˜.὆”Þ‚¹úB®½6ØØ¸d߾ŒšáüÈåqÙRVÆK’‹]Fuƒ(VXÚ¼Ú醷{Ëy±„ç>s»Â].¤,ôµz5lÝš©ÄÌüÀë}«¡aƒ$Ùkjìcc®Â¬aýúa`õêÕg‹îÀ²¬ÍPxŠìœ$üæ7Pz_úÅég¾ö•†añÛ×]R[ UU†»÷cˆFɪòåÿUlß¾ý‰'žhii)n5;& MÛ¥_¦9£ŠStÆIø³ÄÂËü!P#gÛ:Ú¬ â öPáYcÔYrBò´×EmØñ±æ†á’ÿ¯bŠ9(Ï|¥Ì–3s^©‹Î™±°­þp8TXu¢3cclqàï2¤ôÌÉR[»”aB‡÷´µe¥¼|!¥N‡ª"»4eœ2À[>­J¾ËV É´%î²Â’ÝÔTUuüîw[/æ³Ò°eC0ŽœP(dÈȲìHÇÜžæ$áÃFcãÃ÷=øáiz™eq§æÍ6öÔSO=øà 3Á÷˜7òþ*8ŽEÑJ¬-ðËLF0ŒF"v– \êÏÊm‘3¤ðd©¨Ó$Æ,ŠŽì,Ó´Â Ú99.˜qô(¼Í­/É’ÀŸUÎ>¾Øåê …È$?jSI‰eÇÌz ǸÊJ€Ó¹‰$ɶ¶£ºžgZàüÅ…°¬¡(3ý|9 ¥¸ày¾ð% 7”–ªÀ;ºNþìÃ/üJt”š"Š%¢(ƒAǃ³Kz¤,pŸ@YY™'}¬q†{kkk†q¹\–ÉâžuМù¹v»½¿¿¿©©)Ayž,!Ÿ‘RHÊ^MÓ,Q9Þ›ü¥ýüçh\ºôàßlÛ#è-ù•0AÒöŠå«KË@p¹\.E×{ƒAk]ðOr£Í“1Sˆ¬ë‰(ŠÙ Äd2(9Ã#´e2Œ Äã3ã“Ä4ÃÈÏ!+Z8¦É´ ÊrŒã‚r&…çÔÈ ïDÆÅq–É&ëúêYþx¼;ä2î—ºÝ4IF¥Œçg'Å F"þø˜ä²iSü/ÿ²âüù³mmGò6AÒ=®pçDCÛܸä¢=îâ€$ÉÔtÚµµ]—‹ àM’Ô ÈÀÏ.µ>hZÞ²¢¹±º¶®¶zZñŬf77ÞxãÓO? Àòmä~cg'öîÅáÃx饗®¿þúÕH  {öàÙ¾ñ…ÁS/ï7/¾˜§ÊšEµUå555ÖG]× Ã Š¾C™YŽÌÞE,}ŸÚ=Ó ›EHΠ²¥4×EŸ¨ò<âËRA)«œyÂÂó…(áùî`Pœuò]Êóþx…uëþ_ó­o]—µ>tŽ$IŽÇ† œb¥UÆ2PÃÅù%eê°B ‘>C`˜¢„Ú&³kÇ¡²¤Wå,vaV9ó„i…¸8ΕÊОqÝÁ²–íNuFU)Š•©Þ×)/¾+á0›‘ÈN12:ý7»hQ³Å¿î´¥Ÿòbºë)G¦¼8×Çx1Ãã.fúù·Ý–b\EP'\”’1sÆ¡C7×Öž„ÀU—Z—™PUÕŠ4,¼Œ\!nºé¦G}:ù¸ÓéüÔ§²WV¶àñ ¼ûö=}ï½÷EÂ%lÚ€mm½«´›6¡··@]Àáp6[QV}9+5­+ôú/@Œ¢$ÓȨ¢üÿì½y%Õ}çû=¹çÍ»oµ×­µ÷ ºiB4ÛI–ÆcüƒÉò"ñ®ª¥ÔÙ½tO;‹UÄ…hZY’žMsÁ·ñ¼ _ŸÒqåÚåw¹TË·xë»[l éèìR 9›IX<ÖíAϯüJ–eËÀ‰­6}’e¹T*á–ïf7‹/} 9üÄŸÜÿ»ÆûoòÍo~Žǹs¨X°,>õ)”ˈÅL&?þøã§Ÿ~ú£ÖSŒ­ÓB5’$ñ‚°ôò–e°tZK_ñ?—?C!.öxÒ-k]<2ÚRu)”úÝ¢Vô-ñ¬\² bÛk!þV¿šä8òI©Nr£²Û»:« 8ŽÓÑÚ`šfuÌvCc+€;MæäK÷¤½^Á·1‹¶$«{y_ºtv׮ËäkŸ×Z06¦—}­ñí6´…}Ó¢îl{‹DAnÜwä?øÀ ôMàþÍf[mÖ.ÂW¿úÕ^xá[ßúÖBeLÓüÎw¾óo|ã¿Àø8^y?~+e¼P[{ëͳwÝÿIñÖk­K-H¹ÅŒy׺-õƱµ~<+Å(‚O£‹m›än45ï²1ÇtŒ‚!…¥ðî-” éÖ°º52Žc³¬xr¹ò¼æ5!8ÉåÖú—vÚBfQ*•²Ùl¨jóÛ–––…¾¦Óiw“ôe–_²€ªªÅb1V•°xVñññ@ P4sñ›ššªw£]´|Ô0üŠ’Îçëü¼åS©”$I+ºäu¡¢nî&p(ü/‰~ñ‹_üó?ÿóßùß™·ä~ðƒ/ùË‚ Ü}7îžò»é².-P-cšfV‡dä …‚ÏëýƒDÂSµ¤mÛ†aTwdY–eY•ìmÜ-{ªÿªÝ$uÕ ju]w·Ô©Ñ4ã¸jõTUUAªƒ]Êå²$ILUˆI©Tòx<Õ¿ˆb±8+óýÖ?bšæŠ|?Û[ )ר@XÚæØ 6U¿¼áögâW¾âÓ´y”ý ²x½Îác‡Nšm8Þñ¶Åiž™¾}Ö×j}e9Õ—lpÉbsvTX¼…Jvíõ ²Êò[XrS«ðTU]£ïl-LLàòeûüy³©IêêꚘ˜øá<êžÇ!•~ûí³Ÿú“ËÍõc‹´@ D08éØÁ=«hÁ±Œ/_µÊÙ†®#õáÏP©cûð¤dM?¼šWßø`_ïDN²‹±Ä¡ÆØŠƒõrîÚÍ »4Î œ…}ë ŽäR£ë ú$w§4Ó4Y–u? „¸žWr?3 ³øY†aÜMqWQ×=K)eYÖmäÿ¼šþ£·ÿß§ÿúXýW~8rÏ=‰±ÒÃÅ3ñ¯ükÏßþ­åf¬¨Ô­|à8β¬J/s¨ô»ÐÙY²¢ºîAALÓdÖ/“¯ZÌYÌL=zå” Ù¼æ0¶Ž7rkÍqœ±±ÑúúƵä‘(d’#e²£ ³ßw+"“cEoft¼±>¾†fìrÙÊå2ÔÒ ˼¬í§…¨IU IdNÁož[ IDATÒ¹jC IsÙëY)$)õŠMBm  Ò'qÞ†É*•;˜UÛB*‹¹?~·®®ùС{/_~ß04l¤qb^n+[ˆfù4°-„0¬âQ’9UdW™µ©ÿÚ¥k}C‰úh6Z…bëêØxÒ´3-«‘@¡XÔÊ%Ñ#fR«ÐBxQvL•²Âåž«‰]KWXŠR!gQªë–!š¦†Q.—s¹œ$InÜÏó“û¸²,!IJ,BÏó‹ŸÍår,Ë.Y×Uæ=˲¬¦inÝ'žÀ¡COý¡¿î?~ó“ÃÃ͇ë‚ $þ§7ÞXÖúõ_×Êe»º®ûâ§” ŽãlÛ&„pç&«œå8ŽRjÛ¶»Õó¼gs¹Ïó ]¼®{Ö0 JéÚw÷­p£ï&%졃ÖÒˆE1Òߣ©VÑ‘:W0:pãF¯^õÆ}«Ïvî܇’ÄŠÃõ¡5ܪÞWÓ™¢ä …¢qyµzA6u³¿7•œÈÒp,.3‰Dërjm?-Ää0 ƼA!Žé0Ãðóè¨ÁÎÉ=ºÜŠÅ‘"'q•ÈÖJ=§ ^a®–³ÃðGÑ›Y{;ccƒccƒ{öÜI©ÓÓóáζ…xK¤ýÙPâQ"/걎mi†ÙžhR—ÊŸ¸í{‡ùt2Ò´+'y÷ìê„B™â*ÕÆ††F*%h¡†Ä*ª3,ßÚš(dÆÛîžÈ®ÃzÅP¦V0ɲœËå€iš²,/V¹øYŸÏX8ƒþrZvS•»<ø ïþ;ÿUWººHü~Ygo4Si¹Òˆw¾­h–iš¦ÍZg»ÒÛ¢ëú"·bÈk±ka&{‰&ê¨ß»¦àY†å9Ék¨%¿´&‹J]]½á8…RÖ³¶AŽD…‚~ )N‚‘x&ˤRù:?ϰËÕ‰¶Ÿâköé9ó…¤{Ò‚Oà$N K2W3ÞF/¯Ìœðîpq¸¨Ô)³”jÓì,Ã1‚w'ûb\†††Ö±µË—ß÷x|G=vèõW^õLL¬u+¬er‹m!ÙìYàІô· ¢õ«w"0œpàКT(­˜{çç?ïÚ»w°ÿæ®î¶™'éG_<°±í].œ=»ëØ1ä'ÆíUê÷ž@¸+°–Ptø? °¾aš6™ùpÓ7àZ/6]ŒÍmaÞñ5´,tjùDš:"ëA\nõOQñïîö°ËŵolÐܜР¹µäßliïr?”òkº?áh0=º¢*ÛO À,àŽ›•ó#رàåœ4ÿ…Ï«µìH c=åráý÷ÏÜ}mi¹Ëï·z{/9Ά§¹Ü [ˆÏ‡ö]Óggo×W(l‰Lˆ›‚ä ° uÁŸþóëgϾkQÔEéÑTCg×§6^»ÑÿÚ©7ŽîÝ;2–lh‰Þgå& ºY¶ ýüpïð¥žæÖÉÑÑ]mkr`oA*+uמÍe‹äƒÙ ²EnEf[j! ) ³âI«½*ãçÆã‡§ƒn\cÉ,Kndƒ ”üÕ÷‚釒äÙ»÷(€kù|zãzÜ [H¡€³sT‚(‚RÇq"õqjÀV³ºíÚí)á¥ÄLä œ$³ ¥¶ã8'ù9b:'Juuñññ±­•ôteÙ«°Öœ}rí-PJiIJðÝïâÆ ?޶¶ c+´Pc[°-µUÝÝln \ㄦ•?þø]ÍÍ]mårñæÍ+Ñ]$Þ¬;¥ÒâÙ"Üÿàƒýüçœq:[²Ÿÿå—lÁ,§oŒîÌm›!ýýýº®»©Ü+èº^_9ëë¼ÖØ‚«…Tüg ô?ýS±’õ³Ÿ…®ë„ˆýý‹µY-ÆrÄ^c ®ØÕ^·…µ{vjlqv¸âFˆqÞxÕëΡû/_¹’ËMšR¯eeÏž;Y–»q㢪.±+ïŠ(–söjã jÌE×T†ãyŽs„aqÛ¡¥n¨¥¥„aPªéÇñ„0öv勚×ÃÂÌJÑaY¦i9²$‚RF ìîƒRÓ²!ìÔž¢¶mW’4ضͰ,´b6Y´šê£Ûb€ý~?€ñññ`p†#Ø0ŒêÔ³¾Î=²öLÓ, •F~'N,Qen›³ÄX²Óµ·à8ŽmÛÕ:G¥…-’‹¥Æ±Ãµ†c¨Cs½¹@ûzÆZ×Xˆ_¼×3÷ ª–._~Ÿ¦£c¯$)ù|zlì ÃX«j82RXc 5`ÛÐu0 $éì{¿`D_XarES‚ÔA[”ÿùù>ÛÒcõº:ÁÊõ–ŸYÈ7tè9÷sÅ+™ŽWâŠ#ãZÀ'×uìéjŠPUP IBÏ…s:ud%L©944Þö4í>ôú?ü=˲{»Óö„ãc×À)~¯H8ÕKí‰ zй”jRùþ‘µ-F¸•ÌÍ;ëÕ»dz«µ·ÀqܬÜ\KV™[`–· 7WÊ"-ÔØ©ìp-„WxjS®E9ͦ­­eÉ ß€jj<úâ?¿ÿÿøëg[Lt'im] ßõ¶¦\f/_¦^¯³w¯m™œhž;wÉNX©¼Õròκº£4’N% OlÇÊ•­€8‘LŘÊÇ4ÍþᡈÏjMì'dò·vå cäÐ!”Z½qå’Aø°Œ>¼Â†Û:Ú›²y'•N)¢gäêu#7Ѷ;20<âQü~Îîé¹xåúPww{°ÍϽ÷Nב»½ÂêÕë‘¡>Êú›V–}²šb6™*;mMuK]H†ÞŒŠ}»ÚWÝ‚^ʽñÆ'îºcÕ-ŒößÈšŽÀ‹‰õß÷§Æ–b;i!¶m¿ÿþ‚»¹nÉd²³srm)lÛþò—?¿¹2”JG~ï÷6W„ÕÏç7[„õÆç³ïšÜ\úS'püø=Õçc f¬Â¥Žsõâ…†ÆÐ¾ö_°?=>šÕvu´bÿtRÔÇ'w?ßç]ótš˜gšö+ãiiˆ8¼™™YVuœ5ªMé‰Ts÷*»¹”J¥5Z vmfJC×»¦eŠâÍdrµe2·ÛI Ùµk×­ïtç© º»»7[„³Ù^Îﺖ6G+M&(`źˆ¸vù%oPÚ&÷a!!;öpÔBn ›º·ttÃÖs¹Õ¯A—}!ym·Ñ{×8¬´·3±¦x±1Ç6ù{X7N=“xòeO¼Ôÿ|û‹/¼òTÛf µÑÔb6kÔ¨Q£FÍ ïÅDZoòË©gžìyötÿég{¾]98«Ì¤¦…Ô¨Q£F›M_ov··mO½r˜@*Ô´5jÔ¨Qc%ô½øxÂåñûܯϜšû5WYhï^Ù†o ÷;Ýæ,Ž>ö`àä#O §·oZÄI5iËPÓB¤ïÅÇn¼r-NïÕÝ/¹„—v?÷Ú{²F‹k´˜äù“N~íÙž×NáÔk=S¯ÿ¹e6¢ßàª![M ÙL-äÔ”ƒ,ñÌ_UͱÜùVµ»k9.·ê#'ž;‹™G¦]h“®2·ÑigÚtÉiïZÛS¯ôŸ~vu[¹ÜÖ‰­=X'ŸŸú9ΙbÜŽƒµ*æŒÈÓ ÿôbæ§Ú=_‰˜ 0ë1;Vàê_<>c¤fÝŽˆ-¸¥´µï>ûÜ_œš}ôÁÇz^{fJ ™¿Ì|¸&å”Y²Íß)N½öò”]ääמíyòÉž¬'›Åfi!}/>þ$^šÒèHÅݵ,—Û©gN<79!žTæuËõt¿àúɾ*ι麧ŸíyrÎ Î'Û¶q¹­Ûg°ú^S‘iÙn«ÁZsGmO½Ò_10ýÅ©™þé¶9ggR»çke‘¨‚çOÎø<ß/bFÉɱ8ý,\CáòÄ“¯zþäÉS¯õ<ûµçÑ÷b^~9Qñ–<ÑÛ‡ž£3ìë]ÝS®²î£G»'?¸%§ê¶=øØÑç^;õüÉ%TÅ.·o÷öá䔈xíå'y~ywa›°mëÔ3'^}ìô+m³e»kuTÝÕªƒ/>^±TíîÃɶ埭Ýó52ÿ/¢j[ù<÷ñµY%'Ç¢íÁÇŽ>wµh›=vËŒ-¨cmO½ÒÿÔ|+óÊ+U§¦>Ÿ|¾¿òFNœ:;™…Úœ%ÀÑgOÏ]î{ê/žÃc§gÝd¶I\Èê\ná–[XÄ­érÛ6g°N=“øv÷ñRÿä(UÌ–'Ï=ñRÿóÕLž}îDâ¹)Ù«]n¯b‹¹ÜÖƒ­>X}¯¿zgÏN ÉÑgO¿ò`UÛk°VÇÉÙ#ÒöÔÓ»ÝU£ÜöÔÓO$žL¼|ôÙÓOï>1ûl5µ{¾VÖð‹è›ìX‹£Ïž~å$prž‘]ˆÚ8ÖØxH6›]äôO~ò“cÇŽÝ2i¶} l2´"ŸÀj9sæÌ§?ýéyOÕkjƒuëÙÔ{¾jnÓÁZ„-<޵ÁÚF,2X.ÛiOÝ-Ω×^~bjú_c‹S¬[Oížï jãXc}©i!+§*¼¹š“Ï÷o=ÛmOm°n=µ{¾3¨c[Â6Y#S£F5jÔØq,m 9sæÌ-£ÆºP¬mDm°¶µÁÚFÔk{±Dtj5jÔ¨Q£ÆQóÈÔ¨Q£F56‡šR£F5jÔØjZH5jÔ¨Qcs¨i!5jÔ¨Q£FÍ¡¦…Ô¨Q£F56‡šR£F5jÔØjZH5jÔ¨QcsX"kÙO~ò“[#Gå³È6N·X’KR¬mDm°¶µÁÚF¬u7»Úþ„[ŠÅÓÖkKQ¬mDm°¶µÁÚF,™Ê¶æ‘©Q£F5jlËÚS7l´s)f&tF‰< œ·Îüü="ê#¾º–Ð 9›WiÇîœËå–SLñÈÉTÚ¶l ê¡m™ÃÃã^¯T*ë‘hD–Ä\.—O)^IÓ Ÿ? xd]דã)Å+뺡ø|^Å£ëzr<©x=ºax¯Ï«¸G¼>®’Çë÷UŽ(†¡ ’ð{§˜/x‚¯®Éñ ¯_1 ƒäPÀ7uÄk:ËK¡ ßЉÉ#Ë‹“G&&¼>¯a/„‚C7’¯×4 ŽB¡€¡©dRVÓ49Ž …‚†n¤RIÙã1M‹ãØP(dF:™eeYdžÃa–e7z¤°ìÁºõ¿¬›}7[;X8 „RZȤ>¸pùèÝw{%žR B¥8ó‹·8%|äÀ^BAݺS'A0<<ÜÐÐ@¡½½7ÚÛ;:ynhl „Œ ôëÛ*¿KBÈë×X^lmif¦˜ËQ‘îܹsGŽ@)ºy³!‘`J)!°ôrª`ÖÇBtO–9Xkacš:ï¾wöøñco:U×ÖÝÔeC]- &ò߸ò‘I9(^ Z–-Ëâ[?ýi¼9‘hj$„:<ÏÙ¶cÛÏ ¶mŽŒL44ÔQJoÞ¸on÷È‚mš¢,3“c»VnÁ _›ò‚Û¦lÄØmÝwöXÿåwz&l[óJ|÷ÞýŸýðà±£—ΟÄêí\2ÚžøÙ[gxÑT| ‡îè¸v}P²ŠÞö»¼kÏf ¾ÉpÏ !„†ã8†!ÑXض¬hÔË ÏóÇÊÙ¶-A !<ÏÛ¶%{dÛ¶A`¦xlÛxa˜ª2/ ã–±ÝZ/²“elÉ-à ,Kxžw¦Žp¼à–™:bs¼À² ÏóŽcK²ìØ6Ëñ\åˆ$Û¶Íq<Dz<ÏSÇeÙqlŽã9Ž™<"IŽcs7Y†:¢(9ŽÃNu÷Ëq,ËqY§'é"¸¯ê­ÉÍþÞxsÇkÿôwº¦å²Å¢#þ«ßøÂ/~ö†í0ÙlJ-©’¹¯;Á«£ùíäDŸÁ‹ ¯¡­ûÇ®šÔQóÅ?÷¥k=çß|óìDúÄg¿tåü.| jz¹ ç5uÿ¾ýF1óî²·NÁ_7â§©‰¬î°¡ẖ4RÎÿuÆøƒ§¿úóŸžîM—€a,m0]¼üUší×Ôðù˃ì!'ÖŸ¸w³oÞeìæÕ7Þz÷à‘ãcƒ½ã9ÎL©‰&VϦõöî]ayÿƒ÷%%Êó–©Ú'ýœ ¾÷ã³óßÿº{Og~|˜ñ7Ä#bad\cdOÎ Ô%º†'ƽvÉV.ÅcBªoøÐý¿rÇ޶;Ö;­«…ÈŒíÚÝfÛ8ûÞc£7ÔwŒP]óÐK×û÷Hå±/|æÜ[o^¼t½5æípZÃáÍyóQ¼Þî`pÖAYvMJ´/†‰Fc¡`0W(QêD£Qøýþx¼®ºÊ¼G¼^Ã0‚ Èçr†a´´¶H’4³V3«Å¦ŽX†®™N$¢„#Ó4sÙ Ë‹~¿ðÇb3kÍsÑX¬\.WÈz$Q¼>Qà§ËDc³jEªŽ”ËevJÑu-•JAŸÏ;÷6.D¹Td8Aà9Jd*ãØV}}ý,ÍÆ0Œå7x‹immýàì™D[Çó¯üÕßüò¯=ñÁ‡ç::;‡†“{öí¶55 \ïe¬’à‹ÜöSF–¼>žu&F†ƒAïè»÷ _l ûnÊŽ„Ï{ðÎŽ–z™ÜêŒ µut „뛡åÒ¹’Çð‹$Ô@ ÅT{õúCºaä‹¥¨ßÓž-I¢t×=Ÿ¨Oåý2Ï0l},äNE|"/:±x´±=‹Ú–^6ù¥¯ív…S"_ÿê—m›î=xتã‰]V;›7ÚÛŽ€=’À¶wv ªM}ãíMq59\·ïæÎ½±XÌ24›Ó¡Þ#\QÓ)aÍÝÝáX]2›ç©!)~¼·ƒÁÀ¹ÖÓã ÅãårÙã™4ÆSÛÈäµ`È_ bXw¶®Rß¾ïQ³×ëˆiZ©ÔÁ€"¾ôâwÝ÷ð“÷݈5«%µ¹¡ŽûÄ'dEìÿÒñOg´Í–z«sù㊆UÊe£ñxIÕdQˆF¢X¶u`dxhl|b||¢±©)3>,ãŽã´¶¶.³º¡•._H i–hoñ(Þ轟X¾üƒ7ÇF†óªEû®Ç‰Î–æ†eVϤS#Cƒ©\Ñ´œæúÈÐèDSsë‘Cû—/@ßk}ãqϽ!Û P´:HŠ4ÈȤ®M,À( u€°€v‡€„iC Ð ”Ñ w¸}úcX€í£4F¡Ì¼k6Hšô”•‹¦o`õ¨>U9²Ü?ŸuÀ±ÍÑñtÀï5M3‘H¬½Á3ÿõc_¿ÇýÜT?­¸¹ãð¼åï¹î?ù tu.Òr÷̯¦ ~TÁ­æ‘q1 ƒŒÞôÓÿ×ý¼ÄHÎÃ'8ýÆ»œÄˆNᣛÖÁÎPºh†CžäXùñùyƶ7[ê[¥Ôûm[W Q‘Ž@¤òµ©©À³ÿé¦K„ƒê›šF´ùnxÉd2ÞºþVŽªª¥ÒÏϘÁìÚ7û›ÏÏx"0 ãóMÞDZ‘‰aPeêˆÆâÑX|¿ÛÆ®ÉÇÔ¬gŠ¢(ÇH§ÓËÊ3zc»;ÚÐÑæ~ikm™[çywþá8Îøx¿,ϰoÕÕ7ÔÕO¾4vuwÎ+€Ïçc@*•âLò´^Ÿ¿{ϾÊãµ½³{nuQ]ëŽaÙL¨êò4µ¶7µ¶»Ÿ»w€V*T+¿„if•e"ÉÍ´|>Å0 §ÉYn5$C˜††)­§È!iBê4;ؠ熒$d”P¥“î'ö]Öisœvx£ƒŒæ"cµÝ¨zæ*¢Î.gùšô<ÜÂw"Ãò^EV%“ɬ±) ¼5üêë"Ø’¼üoüåÿò³sM®oº¾¹™²æ¡ƒû{®Æ[ê84Nïéîˆç‡Ç”@CÜ›ÉS0<¿soÇLLÓܸÆW¬…äÒ”W‚>€Ñ±ŸþèÐDˆ  %Sÿ1UŸ ¨M‚@€VÏR2õ/Qaˆ(ˆBgþW)¦C!a²»Vz´`° ÷k¥ð8RqD*jSÝÍì‘™ú€hÐEHmè;7J‡ß|â7ü~8ÜÊZˆ®ëtÚÇcþ)ÑâPÇ1-Û*ª¶í° «y§ºŒH¬ðEèU˜¦Ak OÆ*½lº®SJõqq×jfœº®BÆ „Vxõ« !Œ Š+®Æ€F(U(3¸a¤$Eœ=ËVbVZOi=e.3-„(­ÛÈ€´…R™ZÛgcïtðûýkoÄÎïÿ‡?ò‡ÖÞÚ’üìÏÎ…ÿë­èhÓéÚ»®èØQ÷ȯ}éó¥RIQ”»ï™.vààñÍng²b-äÊ•ž`¼Eâë2™ÌØhòÇÿ4a (AæÁšPe({@€’â ¤€d®‡bB÷€ÑaJà4X"„2lb ”…<Šb±(·‡@)Ã!P4XŠ“T@Ò‡¨ ƒG¡ `4”&Âa¡‹°-dP”‡ÍÂbá0pÚ‹ 1€±@(¸4/‚:¢Ƭ85u8r)uÇpýüØ6ìð×ß}ˆ´··-󎆞ˤ}¡G„\&íñóÙt8ݸ8I]×Ç)ƒ‚`ò¸“¬pI6¥TÕ4}"­öŒÆ>\…)V×õ²¦_69/'DV>a°-ÛrÌ‚:$ɶˆ#Àj(e‹æÙ«‘h€ Ï”YNu†aršvQ’º…•w¿Z(¥®·2*¾†¶Ÿâ±Î”·¡¿ï¿ãù[¤\ji¼šoM[ EQ–.Tcµ¬X inn%¢W’¤†††bÖJc·¢‰‡)À°`HÐl¨2$eŽe Fa‘åar°8”‚Ø`m°&x¢ðàÊÁS†$B*ÃcCÖ  8¬z å`q°"tM†ÊBõ ìA™çî…!A`ð0YØ ù]`l°8¼ ]ƒ¤‚ðËðXUÈd¢Ñ€ ¡¾ #&x»ÊÖœz‘¹xŠ;õ€õ@g.~©/shû¥ Û:n^½Óù€è®\c`[ƒa…h×dÅãþ˜C,æƒ7ƒá(Ï“Bòz¶x¶5®P¨ õl—CӀ̅¢D¨„R˜¨PM-'ÓÙºx|¤`%/^¥„†O.tC¹s7ãŠ\I—[ëêsÅŒ ˆEÕ¨6êñÑÜÒšIg,†h¥,*hZ IDAT+2årÚt²€!qÄrY6ʯåLpL”8Ä`à¡TX†¢ôùZêø\±dåÓ”(å¬Ê^чӖw˜8EUÐ,'¯RÇáC»dQKhYg½"exïnoGgg&Ñ,ÓåØjo‘+ZÖË:›² Ër, –így‹:  cR‡!qÖŽDÕr©\*ÂFb!iЬaMª–åIÙvJ„Ø,ñÛÔbP “Â0œήÎL:còŽla ¥gÊåw. -õV¡$Ö…©a9ºÁG7Á0¬ÈZ%“õð”2â®–†¦¦L&c˜ÌˆVàÙ2Õ…i;Tä’6 1ŒÄ2Çö0,µÄPžÇyä¥Çh!\çôÊ«íwó’P†îŒ+]ÝôúÐò“sé]úØF  XÓtyô¾5¤}eßn§OmX/[‡þþB©X×ÜQH¶ì}R&•Tü>M£~Ÿ|êÔ©D"111á÷ûEÆ18ïžÎ€¡ú†ðð„ÞÒ0ù£³?ó6h«÷f j0àsLµ¨3~Ù+µ4N»õ Ù¬Í0ÁõpØm/VÊóYuf÷Ô‡ùÃã݉8Ãr>ÅCO$"Ç<$$p÷ʱx}^-çÄ¥`Ðï;¢LOî—\NÃ1 Ay‘i ¶ø¹Or+·{}Þ+þÈÑe%†ðz½”Rç­ÇyI%_SûJå¸5Ü6ZÈíì‘y˜:Ó_ø±ò½‡T@30 Tâ£ã@k Õã¨õQ¸|0°QÏ[„‹×'&úÏÒó=MA;Kì}û¥WžúÍGû3Þûîl·m@(²,ë⥋ŠÇwöÌaY»pe¼»#Üן‹µ¶l ôO¤n^ºÔ°÷˜hg}ò¡÷ϼãˆC¬èˆR¨+&¤JÙ‘¢!þú•~o}ëÉíï_꥖62”oèŠ[9Ó™––öûî>ºÙ7ã±z-„eY†åòð3(ðYà*ڀ뼠 ®QD˜tÓ”¼Ðd¨4W qÀ¸€«‚˜à HEA©xj¦Ì$^ ’ Þ‚ÅÀïê:8®ÅÅÕ0p ~ÊLâEÑ5‡p°X~&x×4ÂÁa!»T«>$W)AQQ´à/Aq/jI[9!„­Øä ™›©“aY ·±«“r¹œ(Šõþ»¶cï'ÓÐËšl‹±ÅœXñBFJ|>O§% ñXŲ\.–(‡$a”sV¬‚8¶](y‰íov­Æ—Ïç<¥%lVX†Üº7<¥´X,F"‘¥‹Vs[i!;âJWä‘q€  óJ‰¼¹ã>ô+ÀÀ 4Ý€Œ=SµD ±æM:Ь<Î72ÐÜ\hú²Sèìê¸÷pã;\ÇB>[ ,wâ½²BRÇ“N§;::FGG㱸j’;¶Žõ··r‘XX”ëÆÙ y%%õ@ ¸÷þ>º2ŽdQކ$uTÜÇ'ÆöìÙ]×Ú.{¯"Ž”?œ·TÓQ::ü;7 ø\V©¥R©P,ªYø($×8DE&x œ«P‹‡ÉÃìEéN4fÅöÀ£CäaŠõ©WGq%n”†ë”±á<,ÄÆ{ààtàjÕÝêX•ÃKU-™‡Wl`×kn ºZÃ~¨±rä†vŸ¬€ýû÷»æ]»vqÜ>·À¾}ó˜Z»»÷M·¹÷X×ÞéS­ Žc9?õÜ{¤¥Ë°¿4jVÙŠ¢x½^,@ML8x °¼øÒÔÂZ¨^©ûJ:Ô ÌÏÁvãB\EĵC¸ñªœÊÚÚÊ]Œ«LýG ¬Ž×m|XD¿÷Îê”ÂÎß «B­í€ÍÂf@Y€üìTwçª>³:uÀ8 ÕÄZŽGf&Žmf³yÕ´šêëJù\*_jiª× K…ñññx,:žL;–æ Æyr•æøøx<O&©m2 Ã9–ÓÔX·xGsáy>k«|Íår•íÒ©”âó»)GÕrÙ´,Wµr{tt¼x 1õ¹ººªªº®»Å(¥ãã•EËÉä„aš’(ðx<­S™A\¡˜RàFGF+)VsÙŒ ydI`èZ6_t–BÂái§iµåRÑ´iÀïsïp2•F'ã£#–íð @Q”ʳ^×4Jˆ+uœñ‰ét/ãã¡p„e€b±h†›°„eÙDt~²™Œ${$Itï†aî)Jéððð&DÔoxVú-Ãmæ‘~ |°oþǽýG÷JŒh 0Ë€: D8h€ 0@7à.U¿^¥C¸%—CÝñ–Ø·~<|²£ è_ÿëÛf¬×Ž3„aøê t·Mꑹ¬ÉR,YØ,ˆƒúðeß%Ð+ïuTiä*ôÿ ¾—v#I«×ȸï{ ÂLåê@•ãê(®êÀÂvŸC,lŠ3^ü‰?apϬN À”4¬¯ÂûÈþXWËq»sÿeÀ8Sݹþ£ê§þ# ®-d¡U”/^À§Oî»19¥‘D h,àð÷€ûÛ‹Gf–  ËàáñÞï?Ô $€w“@¸…é!7Ƕ(v>÷û| ˲ã8‘H¤®nú™l™&˱–Mùù¢ýÔr‘åeŸyŠ:¦=m¹Y“-ÄçõÊP”ld$ð»,\àÐâ®ÅPíXÁêUðy0p œJ4¨»&ÖoN©#®*à.„q׋Ðݸ%‰…mC” ©`8]¯J¥S ŒöÌ{ôPÒÀr°tØÚôQOÀ»š{Q•NÝ-pJT–ëô!–5ïÝØ·oß¾}ûPÛdœa†°Í--^Y¼óø}cé²`ç>êM…‚‘¦]gÏœg=¾úˆo`hÐï ˜–uäà}× e¢ÀÛ0ô¢Ïë·lëÀÁÃl½pæÂu²æ ÒÄ*%€ã¸ÊoŒå8vê—À°¬ß?ÿ¦º:Ã0ÕªFe«^ß(Bª[«’W'Dq!£ñ vºñT-Jñ/0YagüÚIµRUrUY^p}Kµ,ËTÔ8–c+ !$ ¬e™Uzd¶·Æ³S<2‹Ç…ØÀÿŸÎü‹»—Aà20Ü´í@8 |L@ý@ Àj•žqh8` xm*s}8È€^U’Z笸i¨ƒõ?<ó_= 4—¼eèOß>7tí½xÛÁÖ(smœ;q¤é¯þö>v¼XÒN|ò8Ïó‡~ûí·S©Ô»oþ˜óÕû†°|îÂåæÖèX]­a™ ¦ ¼©z"œ£Gêë¿÷ÿüqãþ_êjõ]ïO?Ø>2Òß7AïØ¿Ð3ÚÖ‘h¯÷_¾1b•³Ùl‰„½ ²ÌyBõ­K‹»#X±2Ö%e+‘L&S,f¼0r:rŒðjøÀºŽŒ-‡²jÀ¹µ ¡qpxÞš/PDp ä$8Ü4‡² EC†€T–Ž4E„-Âo`Œƒæ ðI¸É!bà]M6Ò&Je”D˜lÌ›(<ߌ"Ä›XC0bð*Ò8l´»Õ€j CÀè Š¦ "Rî™À’Æv†»ãÈ!BH¼¾Þ=P) ÞW—p§ïGßåÕ50„¸Öå–¶é/ÇqB¦l `EßÝÇŽ¬t˜€^»|¹`X¶®%S©þ,ßû‰{—Ÿábdd$JKj4½ðá™LI?~ôŽê9Áâ”réÑL)—³)rÅâ‡gÏ4¶´Ý}×rCÁ µxc`\/e ‹Fb±ÞkW‹7&vw-wåÊÈÈHr|T5i4úðý÷|‘zj[Çï:¶üꎩŒ§@˜h.{éÒåH}s¢©~ùw`TU5Y–Ë¥‚ª²âõH+OŸº¸…ùBˆCvÀjÝEÜv£ÀK=ñ»W÷þÑqµK! ô{ Æ x€ ð驊p ø!À P@úwþÔ4 Þl D€Ã€°ª7! ¸Oõ£¯•qÞ3W؆ª™ï÷\5 ñtf“#eÈ´€3Ñüå¾óýG'nñí¸åv~îqÛ –u(À0_ø±ê™¿ë~†å†°ºÿówÞkQÂ0 „qŒòXfO㿈X¶#‰|×Ã#¹Ž¶FÓr¨có‚pûza5¹S;* '@@c˜ÃÛMh !-ÀHÃPPr¤pÀL%ãŠðgeå Ä*q!®¿fÊEB•¼g´J곪ܩE¦Žþ:ì‘` zPv3‚°ÁË &„¤ èyh‡ÌBH"àvj@(<²»Ê—€ºÙM¸)Ñ *Ê, 86²NÑI·€r¹\ÖzE~F†Ž¨Z±ùË’¦Í؈˜a˜Š’óRáé<<ŠwÚáRqÌjeYWuÈårY^ŒÏ\æÌÎê3«:Çq®â8N:{Éë™±00‹¨x,\QgµÀó¼« är9!“#UúüþJu¯W gUEÑÕBt]¿–+$<Óöi†aÃ3õ×M3«…EÜ:³ „´ï:ÐÜn‚ºº^yŽ]‹CgçÃÛvӾ뼤äËzS]´Xœ‰TþùzÙzý⾯ë—™r«Ü8µ±­ëIÿÐ #@HeàPU#Õ+uYà~Àµ_€3€ëâýSz†Û€( œλ!1À´ÈÈÿõ£^+~µËûM œjy‡áºª…I÷+ëþϲ“#Gæ1KsÜôï½’p•§oOµ×{ªœ?¡ø+å%O »3`m ì¶+kŠN-ó )`( ã,ìX#2D7!‡›Ì£AÌ ä€ca§‘FceMŠS•R½ ‹‡è€q“’à`ÉP-pîê_Œ†’ˆbé¤ÜŽh^ÝLí,p&D ŒOa¶‘Æ…8’à†¯DÅæ`‰ðšà]-¤Ò)ÓíÔ«Bå¡3Á³`+3]J)!„RêN~ó™$¯_Ù¸†+#™LŠ¢¨Ú&Xqœc™©\ÁÉ—UՔëÙO.™L:”ŽjNLZ‘u`’b!çNsÔ­B~WÛ´J½cÞ*-dEÕ=%§Ù%ÊFNLX–]ãâÞÛ f¯DÑ0-wOÝj]“Rœþ¹V¸WúL§‡íœôö7¦ÞR7Üb€8$€ ¼ü HWÚâÀ¾©Çº êÔÙ  `¸|8u|Ð0@vʬ"€&€}@Hý´üóû}]÷ $€‰ª–]‡ÑvŸ¾;Žã®Â­17=Á±¦èT¿WiÆà0’ dP‚›2šnžè+Õ””Ô~ªÍ´©%°™€æ10„&7µ²>ÅýP‚&Ct£P]­b涺  *J2”aä1ìv€%!ÅqLß§oèÁr`Ð×ðVÝ&"Ø•DÔ];“ÃÍA4ƒHhª4U‚ê§¢ ¹ñ­n§©Ê(Ëȇ‘v=2ããã–e…½Üôößÿ£þ䳿úYžA9Ÿ¿9Ñ›Kgý~O¾dø¼âè`òÓ=ê7!šRF‹ÅbQëµI_XüU€'`—¹å¥”áøX$|õüÕñÓom šF–½a½+ÀÈØxO&g„Ç$bP°d¹;^PJ½¾€mÛ½£ãà&ˆ8ËßÓÎ`ðjßÄÙpï'SM#¢¸ÌM^Üꚦe4õí {gPò‘È¿jkd‡2”Ðíú¾«k˜'ž\Î9æÿ:{é'€È@`€Nà¢@¸€Q€¢ÀÐ D€ à €(à hx X•>DŽO-Öí^8ÀêÝ€2³pð1°;„Oßóìß]yÿó»þxx“^§« 0òT$ì¶c¡Åq5°Á7gM¶R1ߌÁä0â*|&Ÿü·—Þohûik1¢¿ñþ"üJ\ºÜšA¸) 4€vîZ\,è.x©üëžb¦r{”¡ñàb(U:m“‹^ïùßû}ï >6¶'óÚ¾)ÿ¡÷NãÓIðƒhž€É¢©Ò©¢ ±²Øí±’MÄýW…ª@ô#o‚'`ãñ¸ßúý¾r©ÜÝÙlX”ËsþP4 –4Z™‰l©kw·ÄmÎð¡ÁA–ã½^¥\Ëd³fø5Ó™ ”÷Šw›Î5–$n87y¦ Š,"”––!’( ›˜ðú‚VÑ0˹ß;t¸£xîªÿžƒ„!ÖXÚs ÝNæ(ÃQŸ•.¯‡p¬SÒ¸€L §ìQúnôú‚›ŒÏ ìppL7e–tËâðÿÏÞ{I’žç¿/}ùêêêj?ífzfvg-ÖÀìÂ,<@á( ’G«£qâ)¡3ä)ŽÁ»#î.Ž!žt!‰G( "y $hàC Ìb³~gwüL›iSÝåÒ›ïþÈ®š·ÛÝ3;3=Ø'::ª*óËï­¬ªÌ÷{Íó„qYÕLvW5ÍOd$( áK©t!†rÙ`sÃv½b±D­,Ÿêäÿ4cUÝ`½d>'>Z㤮C¥XvT‘!¥¯ˆ‚¢h:uj < ÛlŸýæ‹CM×>·šÙ7lNÔü¥µìØ Œ’$Jôj!n»hªš3ãN æt)ãྠËK±•ÊÀJânnvˆJŠ)ãÃ9s!JrB­èJ=ŠËª*ÀC…@ !²š¶í„ÌU°W{däÍZ ßY|!ÿùŸ=ÿÊý³eeúÿø 0ý5«Ÿ‡‡`–á0 ߇}pª°mè€ lÀÈ_*{+¡ gû.ô*ÌCÖú Jf`tØèc?ËÁ]0 ü[øEèÌVªùòŒCþOx> ûàQH+´]8ÝMš ˜z#5nn,Þ IÞ*\g,$;ʲEc˜•”×ËSÕ3úéó!m½ìc˃oyaæ‹úì=§?ºá—T*šCuÜ•í¸1‘ŽžÖg¤½²&~é¹m| C8줙šÑ‚üú£Ï|â×?—èËUó•ñ¿úðÎ}ñÇã ›îÓ¦p‘:-ÉhoÒ%ÆLg1ñ2Ô H'Õ mÜ2šF¡©½Å°šyü]hhp‹ûghlßÐõ7““Q¹®ëËâà@­ð!‰+ˆª’)È ÌvC#²K EQÌLvrr_Çç¼V –¦9Pzè`y~L® q"Lƒ™)¥P¦»üîò¢&íÌÜlEË›9W-‹÷• ^‚”#`‚$ݦKÑg )J®2XŒc)‰ß(šCÅG²Ú¡„†ÂDHC¤DŠ‹ÇèŠò077EQçÜb(´¡ãÕ÷¾¥Òq„”J9ÏÁq ]¤9µþÒÝ®ýB£cãQEQd·¢ÁâÀ;ª%‰ð ¬P“X  Ò€^ÿéû‘ÅÍÐvîœêÔ´S·2–¹¿ï¼Ô­M±¯ ‚«›:™„´`J :p Að '@ä¡5øs0`tPƒñ¾&šánEÂQxlÆ´_ýì÷ÿMkõáÁ˜‡Gápà `Ã]0Úý_‚^µ{›©‚ÕŠs…7oöoâ\o]ÈtšÃ¬¤¦òß,ìûL®ºŽM`Ĩ>fîë/ü“£“¿ùweR 0b:I«È~LåîR¡™ ®JàCÊïžgdqÒÊÓTW#ʜ»¥Æjˆî¨ÆKÿ鱚³ðÒébTe©RùÎgééñßùXª>Óap‘A›Á‘ž¯‚5BK§KÓ@Ü´À6Þ+à–!z‡¼z©¦îíÁk4¦iU'†r)I¶–çââZ«w-}ÿ·¾íú…R¹²¯U¼N˜†1ÑmFMß´——{ô=•2i4›ª”ÃÃõ¼a‰ÄêÎÖ[)—ÎzÙ-ܶ;ŠªеR±bÊC‚¬ºU §÷8rÅ%–_r€$Ž›­–”êôl¥øÐ´bêŠÙ-+î~h¯a?Ðh4r¹\¹247T̈DtO\¦»—Òó*Ó_öjF&Fª7¥{öNñBÒNÝ·üôÁþ'/Ýg¹{;8q—dì|î†ó:ÝÔ­©!€“`˜p2°àn˜‡'¡&ØPž`ô<*ÿô…1]NÜ_-ÂA0 U8y8ÇáKÐÜÓÝyû¯¿vÏO=~½Ú6oâÎÂu²–å–Yœ'¬²îc}(hGʲ¦ãi˜)A{€Ví?¾ûø?øÞàïþ¼‡e“8¼ì3ÔÓº3ñsØ1ªN+iLOŒ·@;‹ÓS¤Ó ¼}dªÄ>æ·?ÙùȬýMÔ2ñ}L FõÑÅÚ \Zx`M=z¯‡å1u%bÀ£–NšÁÕqU´4’ÁM‹BR/$ãÍàÚ8CЦР¼-MÝÛ¥R)Š¢’ú8q-NvPr•Þ›uÃÌ«šhRS“Ä2ÙvÑV:\¥T,¶ÚíYM)Çñî©o—Ëå$"¯>¤É Iln¿/"5@QÕb¡ Çî™’ÕÊ.ŠÎJ¥’”ò`A­ï¨2K¹sëö±W3271rgð…lwÁKð¶¾WfàÛp78`Á‰í•J‰nGLŠôñ•$9 øð*tàex* Â+àƒ sP…ãï:4ä$ßü£÷ÿäÝ/Àa(À/“ðUxDð(ì†X~ÊgŽ•Öôýòÿã€sç®ã¤¼‰kBýþwÖÛá#o{[)gÊ$ZY]o¶:ç÷_¾c8u ÅÚ?»äòÒÊèØÈ­0x ÛòBZõå§ž{)AŒO(é‘—èÓ“cq'q¬Ò¬ s4ÕúÖÇÛÿÕÿ´ÿÏi{´öþ›6 IDATYIB€ qzÊÕ¿»9›YŸCm¾PD:‰‰“AKˆB #$Ž©p’ޝãXØ<ŽgJ¢uü'Ý/E³'äwT|A$‰#DÛd_îOž8þŸ)}›‹å2kÓ’d}ò:‘‰"2d-ÐÑ2(1bA¨áØv†vGÁ-‡¨Z¼w|x]×u]—òcGǪª¦O“$é%A/S³ëºB×´êØ˜?8˜î/¥ìÏ›ö+ÃõYJ™J×õÊÀ€å8½!q§Zw½!WŠnvVU5 :8†c‰’(ŠÒ?$Š"EQúÅíTUí‰ê¥¯ëº^©ÕÜ>.× zMÈýCúÜ;©ITÊQ¥¯ôv»òlDQ¤ªênzî¼™‘Ù!¶£©; ß»ô•,¸P…%ÐaÇjׯ 2pï¸tS cІ"¸í9=ÚÈT­§–FóÅ™bÃp¾ï€98/lÿ¿¾úÓ¿ù>~âŽd[ þø?(Æþ}ƒãÓÇŽŸZ\Z´¬ìàØØæ™S¾ž¯U§GËjeFlžýë'Ÿ;rhîô…F°±:>9ufiyb|øÀÌÄf`Ý;?ùúSm òɧžžžúôúôû?øþç¿ÿÍcç×ÔÀûÁÔìÛÜÿ·O¿xÿ=wýðèKµ±‰¿ûá§~ðTuxìèw¿=4=ý¯}ãýÚ¯ÍíÖþßplë¶Z%pâPÌÍNvZ ¡Q5›M×wb$H°¿ù¡÷ÖÒÁ<ÅšyøIHâ!2ÿîýk¿ô›ÈF HlT›(ýï 8„ÂÁ H<ü˜ÈÇKðCa«Ø•Ž‹­HlçO~aýÃdF8qƒVŒàD›,Œx‰ÌüéûVêó6øLØ,¹$è l¤¾‹t b?" ð$~ˆ+p#lÇÃÖ°‚´qwssóþHn ²Ùl®‹ RÂ|>ïtÚŠªo‰½IÂ0L[¦q~a±7\Ó´ôõB¡O!Ù{šÍf766{GÞ¨¯Ûö–ç!„è Ée3A …ôY}½ÞÛ‡A,é9^Y]ï`F:{Ïþª"\oëiÆ2vo·•åE?ÜbÙW¥7DA¦Õµ%S¯oö†´ Ãʤ›\×m6›=,ËÊçóý'0å¹®¤g³ Ã0Ý-›Íœ»¾…^š‘¹ž#܈ø¦tqçx!;•<,Aï{i‚i§oûÆšu € ?€_…+h¿þ±á‚®å4åèg~øÊ§Î=îÙΑïœ~¾}ÒÿãÿÙðcÞñï»)Þ$N¤fûÌòÂÒÂÂÙsçÆ&÷E±¹tæD³UhG‘÷gß8::XX^^X^:ùê‰Óûï>,õ¼·οªiâSŸþË}“7Ò“Š:yà-?ûúÜïÿÞ¾#Nï¯OfýÎwž~þ¡‡ï~ò»??°ºp @ÆëkëÇ^ZÛœšÉ·²º`{±©eškÀÔÜa¡ª†®W«Õpm-K4 UE]Û/ÞÿWZ 9Gö(Î Ý"ŽÅî“ä§(œþœžœŽ)Ä”Šª˜16HICgHÁ³È8EŒ,¢‚’')‘ä‰2D¡J¬Áá© î:¥oÒ‚9²aÝ"£‘ñ°3ìëPÖžò[ÊŸæ#¿ó¨$ ‚ˆlŒ 6Ä*‘Jh‘5q èYÄJ¤D’#²ˆÊ„âTGf¯dd®DµOÖõƒk+*/äó]9:UÓÎxÝᆮ4;Õ즧§z›¦¦¯A¦.”žì-\RF18t‘Ï#_(æ W§¦í7À÷=ÓÚºˆ+ª¾oßxoÓ܃— Ó'2'”Kneû.»õÏò¸®Síj÷Ÿ@!”Çÿ(êȼ ycP„f—OìX·F$Eáó7ÅŒ!ø ø$œ‡ix ï¾Ú!x°ú`P‚É¢ÑÞ°À9“Ïýx:P¿e ì›íÑGÔ‰³åìË/žxÛ£J¥é‰(ŽÛ_ÿò7JSƒº£ªØ7}à™ªV2Ý—UÃP+Ž U†Ç&J™xû¿û‰ÃçÝÖ†^ªÝ;?l¬d g•¸<\yúéç?öã§ã o4Ð|ËÃ¨ÆæÊ¹ÂðtÔ¸Ðq£bö–}TÛ:ša Eyømh tI#RMݘðùO„ïýÂÖ¥ÓD ûx…Ú,ç9dƒ$Ìü»ŸÚøåOóÛ[ÕTòŠ’¾„¯™ôí]àÿøgÿ÷Û¹”:û ¥?cóÁî&›z¾›0Í|ú¿°û>_ûÀ•ËIxÕhP¿á–aJˆïÉ6ø‹‚„aè333a¸ž/ÀÊd¶¯ëèy®¦›†•¶:[×µ8ŽûÕì¶o€ëº‰L|׬l3“‘$±ç‡ÙŒ5X­…aèºnàû™lÎ0¶ûû¹ÄÇ‘ÈNǩնÛÞÔ>5=†¡ã{qB6céwôµv[ˆ»²­o4~”4uCp í{%×½(ÝÌü_Ú ìCê¥~`&CÚšž0ò76Gtˇ¡TUíuj¼´Ã‡çÓGc£S}¯Ëñ±éb±Ði5?>ŸF§÷NogT‹`bîët~ff~;¢ïûýRš×†8|ø0 [Ù_ü…ŸUíÑ·?ÞÛö÷C¶TÏ<°?USžÞÆÁß@lëöÓX[\[ßpb¡ìï®;Ó ¼šhúS%O|Æ´Ñzú´©‡!>­yXGÕ=ÍX-'CËñZ¬¦Õ ý]¸:ªBHWŒ7¥Uí1«jD)Pb’…@(ž&J4Œî¤ (*2í…É<7ïüãOé_{OB$ˆTBýâŸÒc"¹lÒtÆMAéãøÒ™=‡¥Å…奥F«%c°`­n4'&&J¥é™émáÅg®6\tÊ•êêfkt°Ðvã÷=ñ®m?{úôÊÚÚêÊÊèÄdcm9[®…íúC¿¯œß§@äÙO?sÌo×ÛŽ?9=³¶¼(“hbúÀ½G^·K` §NœX_[Yk8㣵s§ŽO:tšƒCCêö®è+ËËëk+‹«õ(Œg§FÏ_DÏÜ}ðÀÌÌô6 ¸ RÊógÏ„R­–^9yvdd4ŸË¼Ù#óZ¸Sjo¶SŒÀ“—¾r^ÊàÃøÕÇÝ`”àm°Ø÷Š„ lt‰Ëî0œyùùÜÌá².êõº”rvvvGëU¨è ÌÏ_uÃx­3†aZiî3Ͻüèî®®†aX.—_7oÆUÖ…Ï>ËáÃ×Ò,¿&¤”aøÆÒoË >üN£èúÉäØEíPÛ¶ÛÛÆøÞÃújzd<¬´-VGó¶è$ÝF(C9ùü»¿ôûÖ?/j,«äÓŽÙ ®…g(8*2õ ÒðC€ácºd‰Ñ7‰‚ÏTù‰ÿ·èõ°|ÌCGKPI I4ü´8BË?7ëð¯ä—ÏÀÖ M| O§m é„*qJäš ¤3>¦‡¥´Á"IµföVFÆó<ÇÙÔ´‹éçÊ`µÒ%8‘R"}Ðjµzû(ŠÒˬ­®Zª*ûúé%l¶>àK‡¹\.­Ül4‘ª}‚vã£Ã£[«%yè`J/’ Õº˜ÂÐu=ÕaI’¤^_2ÍK|¾ûŽêÙ??7s¥ý@>ŸO T777µ8–}?¼±‰‰±‰-V§ƒçSìö%ÃMÓLWa®6›…¾á¥ÒÀÀÜü–Ó³®4@±½…ËÖÎ…\fqµ±ÙT ]Ót=-ÁÙæðÛ)SÊMËÈÜ)Øf]È•N×|öCÖ¡p•A7K»Ô&`&àØê… ŽÅªbYæøøøââ¢iš»é}{ê)€]‘&IE ™Ñá*P«Õ€õõõ±±kí..bšœ=˽÷¾þΗ"Š¢Û B´êk­HŒŽèݹ\.—/H²ßz¿ü¯ÿiµ‰å’qȺdFz•µ1†":* ÑD@Ûh›Aâ kÀðNL¥JÚ‘›Å1‘)YªD¤Þ€‡¥¥OÓÇ?ÄÉZ'ÊqÒ.·°\269—L‚âkœÚÇA‹0ÆIÉàͯݻòÿPý²gÑ̲ÙëÔ5ˆ2„ipê…¤Â7©Ó„è!Fƒ¤M!…¼aÄ F†I’øÉiUÞ}­}zí3ýÊ·½V—(Š‚–­Å±2rÍ„E:î2áÜôi†q/Çbßµ¿b½¹ú_LÛbã(’/>eÈûvdaÆQŸ» ïßwåÖ×0 g¿”rÉ‹çõk.ñ_ãnC#C#ÀøÄUè½ow¤U*"7)ò£‡<´¡C°Cw§àætXÎt9ÚuàÀf‘V[§e¨ÄiLÂòɵ(6(oPY§ºNu™Â—?’<úGS½IÛ²ãŒ-Ñ”ˆÎÔ([t ´K4ÓI+ }ÿB™Í!Öª¬R/Óȱž§cᥔeiôÅÃêoQÜd`ƒÊ÷PSiRJ;u÷JŒmÛq;ÁB$^ÝE"]&±í¸q£Õxî,»Ò1²m;Œã“NdïêÞ¾çûn¸Šc»+G´mÛwüÖóg¤ë¾þÞWÀqì8Ž›~p:7³RJéîÊà[µ»F~3² œ?sòüùó'Ï.¤EuÛuWynê0 6oV©®Õ½ˆŒÁoVoÎ-G&“)—Ë»éºd2ŒŽ²¼üú;oÃÃÃ×IGt{b»o©íúº¢<|‘ÿÄ4M3c=ù.ÿþ??¼Jmê&MJò!Y]"6X™d8‹S¤UÁ¤>ÄÚ¾ãVn2ÈðÒ0+=G¤L£@»@lô’/©CФ”º «ÔV~Ó¹+ÏÂäCu7hQ´ÉÕ˜|3€@yü"­6ÓIýÉÝÎ'¾?ÈF:iêˆTðRv²Þ¤FƒøK¬mû +GÉ­P|Žü&i,dOddÎg2Y åž8_ÿ\("ÎDò‚”RâË-¦æ­ËוPç._X+ íu{ùÉçßxZz¾ÿ ÇRJézR^5âÌ©ÓÅR)–œ[¯iÍö%‹XJ)I,‘½8ÊÕÐØÜpý0c™g}aý/Üäé„z O¥C%i'p²eÀÕ|¬Ó§N•J%é+'ÿÓ×’Ž;•ø”R¡Œ¢~û¯´àÂò’nXBˆ ÇûîâêI_.ÅlDˆ$¡ì;}Ý7raìs&3?á_Ø4÷ÒÔZ5iu„¡‹¬…í±!ù©ÚðH}}=W(¬Dn¨ŠU»i'„’CYcÑOʺ¬¨Új,+ª¢ ])‹Š$2K¿^5»½¤ª¥uc!rû+š] ݘ$FÒÒÖøÒŠÑ7*T!¿Ï†/¾¹ó`Æö{/A’p£ãårùºÒC©Ktû-¤·ë…lv:ƒƒ%`£Ù¦å2Æææ¦×ñËŸ»ÿYbƒDt;MºJ¹¹uö1ºÆ á…¤‹<9t,yuø¨\LSî"†!A€ù _ö\¨BQ”¡ZÍó<kãCo+ëŠéôs]ûïà¤ø v5ÐÞĉB·4DëÒ„¼YðoVqhÚ÷éѤ-ÄÜ”Ùo!¤”» ?\ýjs]ˆ¢h§ega¸EÛ22Â… {Ø ™[ï(* V°Š–eŽŽ:@çqM•¢B¢¥iì$©R]Ú‹ëW0¶:c#ñÕw¬ÏþÀ:]èuÆFhu‚&á ûTÈV˜ Ñ{]² Š=±¹9ÿ]ñõ·õGPz3ê„û·´y;I™Ú“F>ò¿öñc¿ðû4+`³Y Ú8þžxžWkÌõfL'õh/þØ‰ä¯ i,¤V«‹EH¦§' ·¥ ’bùÂr>—©Ü]4îé¦,vð“<·i»ãƒJ»mœ‚ËÅÞ^R&++kªcÕjÍÜbxØÑ/²±YWt«ZšÏfF2»Sû“8^«×u]94œ»¿Ûe·“·páÂ…b©4:88[2…رý»ÆS³KëRo ƒÇW1Þf§nŠ#ð<¼†aÆái˜­¹ 8ô¥cFá) KäzsÈbn>¢(º}zÖ<ÏÛò½ïñØcÕ*/¿|íº~l× ñ}gálû-o92Ð-¶m»Õq.0’Pè`¦GO7•£S‰Ón ¯€]¢¾¨<þ—åó?wìÈïîK™9Òv˜åYNÜË#ÖS¼pó.+À0"´ÓŸø¾ü÷ãI]ž^ÿ¤‘E”ÅϤ•§é‹ ÉüÓæÊ»^~à+µ5ÀÐPЇÕbó÷Ž0q’sUîI»}ÌÝ£|þÈÓƒŸ¼´GF™™¾ñŸÆÃèÈh††ýÖ0)¤aT)eÚ˜š>èÕZ§Î~/ %VfÈÊÔ‘qÞðƒ ŽcEQú˳û_I˜$I*“Ïç…PFF†;ÎŒãfBé_1Q:äÊÙéªÁ•¥”ž{Dz›Nä¦:5=.³'ݔ꼤ÃU®ÕZ–å©2Șø>EQO.§Hÿ‘{g`dd$Žã»3d7è{›WÎN·¯'ú:•–÷wªº}Ádoç€vÄà^ƒïPè¦`Ò{‘èK‘¼Ñï²¥ ÃéÚ0 °3>Û/=÷\ur®½vZÍT§'GLÓÜ)×þå¨TØØ ²ã ÕæêÚ¹æÜpéÅÓˤ‰Ÿ:"9ÇE»˜1×L›cuŠBœEÈÄà’éO»=,/µÔ\ت®RKC/—Mª*±‚câñ²8^Ú‹«kÏzgÿç…~…. ‰b!CA¢Œ0ùmžÉópÿ¤?|}Hc!{ˆµL×õÑ‘»zOmÛîýœZÍF6WÐ4ð}¿Çš$ÉææÅ¼ãàà`¯Ç¬xàA¤7K)e£ÑØ*#o46“D¦NE>ŸŸïÝP¥´7—ÛʰnllTº?ËN«ef³)k¶½Õ!"„¨ ö»ú ð\7‘d³ ‰£vÇ)•¶>”z½·X(‹½+ ƒDb “¤Ñl]´ys³T.§^…ëº=^UU\BÓ3 ÝjY™LJ™øA…é&)e½^æ‚T¥nQDb{!× ,w»fnz~F^‘n×®ÑÇg} Ts›N³cHËó¼z½~]¥@>O§³ /dÝFF¾Ýnµ;¶D®­®]&ü¹ÜÞB›ÛõBìNK¨ºÝî”»’i,¤Î¨À00,¼,N„–zžDôb!9ìN¿çLà>öÿYßü/ÏÿÝßô°tBÌcꈴ]E"|L‡l›‚MÎ!»þÉÏ«ôQŸo®SU‰ÓY²81ªBbDhé¤9â<~»@;uD (“÷½¬®Þ³2û|Î%’‰0OМgH LPÓöàùy—Ìê{Ïhÿì¡€zL°Wzd®ŠD^Ìn&I’È^žFĽħ”)UÎkOex·† !û'ý{^ëý³(ªEQê…$qœ\#äxÙaÃîU‰ã‹›â8–‰¼Êý©¯G(" /^9… N¤¦nÅ9®ó¼ìÆI²u=×|k»ÀËÈh·®.dOy!qè}é‹_½ÿ‘GÇ»ì;;ÊÈY°¡U>Ø%.»9˜ï À¤˜…Ópuݦ=‹ñj6‘Z¹°/›LYËvs”S§èÑ­NMñ­o±ïš¬E×Âìx~½¥ç¦!z¬e»±çöÆv½vÇ ÖF³ÝóBr¹\>_hRRè˜R@!1ñŒ5¥ÖìQ„…tò]šT(K°1ùÒH”U -ŽÒÖÜ34†(¦bö­°,¨¥¼dðkŽº8á£'”ÒÃFh@qI{j…Dâ«xÜ,NžN7u}4¢Ÿúlô¯~eóÞç¥B²Jla-P?Äý‰DTÕÃrÈÚäÚSÞƒpÍg.äTŒºw¥ ù‹,‹­v§<°å›¦a˜[.Šª_¥Úô²áŠH/(u•µ*}n~åZ·O! }‰Ï»Øî—í xšVÆ´®ÞaÒo€ët4«7J©T.6ôÕ®n¿~‰ØŒè7 T¾èY¾F6¤ß€v»Uè¾Ã0z½µBˆ‘‘‘!5»[š‘‘ÊžáIŠúî÷½×ìûî4Ο²†¼£ût «r· Ñö¯ã×gá]—–#ÏÂWá`¯Ú€êð%R8»d-ët®“© PÌpõ’‹áîYËzâ(›½Nl÷Û{`zÒ³—|B<,•ªÄHC Fê ôtdÒÔ‰N˜%N(©òñ³Ä?ñYío?ØyÇÔ´ˆµƒ3ÍdZ^<ÀÌ9N–x(Íž´?þeù•z,Ç<˜`¥Ý¼i$4-_M'µ&IZªÒ?©ElEÞÌyQŸpË j =$ôˆ²¨)…EÑÆŽIKUZ¿ø9ñ[ÿ0à3!sçbÔv»½K›Ûõz= ÏU[Z8w~i¥PÈŽnÿ­,/´ÝÈP°2ÖÑgŸ#‰‹ÅÒÜÜv“Âõzݱí(Nr¹Ü«Ç^î¸~1gMÎ0õmõ¦F¾»¼Þ”‘Ç2—pò•cª¦ LŒ^Þçò´› E33™Ì Ï=#U“$:räžmþ*7êu)“VÇ(õµÕsçÏfvr|¬<°ë¯„t7›ÍºNÇv¼L.ŸËlKRçvÁ-¬NÝS±EÕs×§Y:ß`NÀ}p* ÂÆUÕn4Aò}ä%F·R$¥r¿zÓÝÇ.YËšMJ¥×ßm‡¾ÞXˆ¢$Üf\ÛõBW^:n?úð½½)ý_„&qT2i«Kêô{!½?èÒ®)‡^Qïïû1Vd"k8÷“YG™·§0Ž®óéc¾0*Q7I:]O¡W C¢„¸7]ïo¹Lüá/è¿õß»ÿèÍzDÒ!ê©ÙU˜:Ó1j8Жgfb‡”È5utJoÀwë BÊÂÞï;Ga°^¯'II‘5´R©¨©ªëº—-¾{õ•W&f(À1Lšõƒà²ÝTUíUq^–ÝpÛv½vs3ˆ*®c+š¥kšª¸xî'ÌÃð’’Ø$iln¨D®q I‡;0 Ón…Q´QoTJ¶ãJ¦ëa)}^ÈV¯2Aô“&I\__÷Â( £8*$ I’8®“/ì2z!%KçN?W,Ø®?99™TöRFæÍêÔ›"° ­Ÿzðuv¿aÈB!ßõHîx\/ƒû Ånb!¶MÔíÐ!ŽãîkÊzÜl»:cÿŠ€•¥óŠUª”Rú?•X%Ûm…Ý"ëRtÐGø!2h=Z3…ä.ä—à1Ôý¹úŸÞùYE"LŒž?¡ :i4ÅÿèW¯=+¬ ¡ë^\kRUéò•õœ4‰”Q[-5X—™E­MRd+ê%yªÏZH…ÄûÉ?Ï|ê\ô ¤=2Ng¯T§:Žã¸‹†~1N`e²“WaàéOQ+ŠR(lÅV×.\ÈJIßû¹íÒeî\.—ú1F££éå¾…r¡X*K£iÉg7u"£ÀŽ.¦04MKƒÕI’¬¯Ïf/ÉËî›ì{Z»zнP(¤¿Õ öûûãÓ ÚÝÐ ^ÿÙ¿ùÆ!Ëó}6΀•ÃN½=Á²pþ\&›×4ÕvÎ×ÑA#–-ËÔ&rMQrª(ÆIC„x )P„Ð,£ä¹êÚz½\°7l{õÂÙ?þvù¡y÷¹ã™·FQd³mLÖ’¶#MËkqË–‰*ˆÅTQ´Ü|îÔÉ“ÕZÍ £5§ñ7v+®––Â8+䤦mH™Š¢’$IFÑ"™ˆ¬‰L„@A årA}Ý £B¡ÅÅ3ÅRÃÒÇ¢hÃÒî’RJeS£qâ¨ÂÂŒ¥§$CQ´Ož8Y®Åv§¹¾aÿÅ“Ckïüªµ\­”⦞·$ª¦f4é(Šbiq UD*Æüäò⢪Ù\v-ô×V[ai V‹dÆÔê±ÔyMq’ÄDˆÌ K@*Bätí:ddöZÌ-D²÷ôóÎœÌ µ[íÁJy¾f/ð4§¡ ¬›Å[: pÙµïö굸xòû?¨MÎ.{rdÿƒ“Ãåf³¹³C,.rYïì,ßúÖå/¾Î-Ÿ[[Ý_Ë=ýê…=ñX½¾†á^™Ú6vßá•Ëå ùì0lƒðʆ Añ1S¡8$=Sl¬RK ?ý½ÑßúØ÷>¶p pŒY!¯.¿ý›ïú¿î³™ú:#t´nåiÿ¤©ëĨ ¥`ô(ä’ ššk Eh4ýù?xäÅ·;`¤®NXÉ,7—~ó1Ÿ]£©ãi…èÉá ™˜Üç8ŽÂvêùr¶`ÝɆ"bC™Š¥¡ˆŠB&¡ ˆ2RJ"Ùí¿ÓUX™ìĸé‘\Be²’›Ô’0»¯Šq%§×/O"•\F…B×Bú¡04b1;7ç8ŽnZ³ÅŠašJ‚ªVuaIJ  ]ÐNÈ+[íÑ)ë„tEä«aàK#-rƾ¬9&k–:žHWˆQ•))…Œ$è !35`nÿœã8š”~¤fÇ*…Ãf5¯Ũ✮UËĉô|¥•aŒ¢MéÚPÄèø¸ë8ª¦­Ûí|fàp!çK‚D–LUIJ¨S¡“U„@&Mwí¿ÝºàîX$°7â’¡¦çºŠªær¹ÝUÿ¤E©ˆa?üZð,ÜsÃm½8CP‚feY¯ZEÜñ))¥Óéh™BèÙ†Qîq#mLNÞKH’¸Ñì†2%DØØ¸R_yÏc÷^HEIŒ±äÒÈQ¼RÒE!‰Ð|ÌT«Ö† §#ƒü㔳äbÔXªc_ÿòo¾üÞß2W…$ÞXøÉ§ÿŸÙ6SU¿NgˆÓÊ=]Ü~åš”;5BóÑ"”ˆLºµ7é:z ¹ÌhZµ,™|ñ/íÅ·þ‹G¥§($Í#çÖßwlèŸïK'Q;<7Ï…F“RÜ¿ø’ÒóÓ4\×Íd³·Û'Žã8Ž+C•áâ†5ºdŠ˜J¨TbëZÞe¼@¤”a ÝÜ7žxô°2X6j[¤ j)¨ù­*W¡n­ÄDÆÜ:@×€ÈóG*#ƒ…LÍ[§n¨ÛŽRVûw¿ü†ÇqB¢f¬©Ê¡ ÷* Ê$ Šr×Î|:V\ª]f€ãF““åò#³zu@¯n¹j1¿5Ÿe¢»¶èÚ¿…(Žã$)åªSÕ!=镦g»ö—ºãÒ oÔÅw±–ÝBȽÄ’âú5u'á]dÀƒÉ]WNímˆ`ÎÁ4œ†pŽÁC0gö>•û£o}ĵms~*ýEÇq†;<Á÷Ü·prjtrjĶÝù#Y@á8Întd.C¹L£ÁíÄ7±{/$Žã8 G¸â¸ýM¹½¦•ÕÇ 0’snû.ᜡXeÇÓÿ_žøî¯<¯DŠUÝÑßú»oùAðd™FÚ8³ÄÂ<…MïRýÞK&ÐrDˆÞÖtç:‰M¸Ì@Ú¸ÅWkwêÞïþÒ‹‰*½RP9>øÄÿýÎòô›)ûÈ2«ÔlrëT£ž¦n¥b7.|ûè©Ç:ø­§Ž½ÿ=Ýn `!„išÕøq±] ãÄ0ôÊÝûT%Rwü}•2Š’µÌK+íòÌMÕ3šÊ²’ì8þ”ı¢ª¥±îÒÆ·Ë&rÉôB†q` ;¢q½LA;œ÷̶͌܉ù€×ÃÀå÷À§àïÝ”ÙC(BØåIKC£ðCà¢rÏô'IrlÈ×ÑS½`¼ÌW憀™Žç®Û¶†Ý{!¦if-c’óMœù±GJàÑëMyTcÔ,啈D¨Tžã…»HI ¨ØvöÑÿý‰>†ß«°‘†=V8½Ÿ!…Ó%r½àËÚqSy^ º‚•níЬµOQÊ‘Ès¼T`V\¾ÿ_Ui2möM:½I_áÂ,£ dÒÐHª©‡ÞzÓ)r¶Œ ÈÛ.ŸÏK)}ÿ~-­­ì)·ýr)ûel)Óhy|Ì+—RÁ9)eJ²_Ñ ÿÈté:ò¹œeš³ŽÖ- ã8•»ë ¹òP=X™ P*Ì„áhœÄŠ¢ô‰¢¨ŸÕ#Ý”$IúŠB(J.›5tÝÎdèÚAä´Hÿ‘ûO pOÁq,¥è·ùʳEQ¤dÇåcobwøQÒÔ½hƒ¯Àn¼ì]¡ œìN[Ú¬}`Fª±u; X,î¬Swcƒ‰+ÂoÙ,×÷Ý»áØ½bÛ¶Ói³8@lÐN QSÊÑT6%ûJ6……ô^žú1~“Q‰cÖ%ƒ!ÒbÒ´àc3âì8–F$Y:Œeh¤¾Eš©Iwû'0¬ˆLªÄÛ›´NGaäî0#Ñ"î!´Ñ-®¯­*š^Ìç€N»µ^ßì51ær¹žtÆ¥´/¬UÊ@‡ ‹«ûöm¹ü'¿’ÉåM]t]/wS®ÝÑ 3—Í2IΜ=?3³eó¹sÃ㺪¤³´Z­Þ»®ôU"÷°º²bZV>—Ú܉¢(-’29v앹þýâz32{,GqØã^È®•Z3àÂ(ïæbZ7Ь×Ääà˜ºbSúidÁÛå¦}#°ãNÝk­HÇÆXZbìºn;f-»jnHQvÚ0øFcÇ^ˆ”IKMSs¹\1Ÿ“\X#*“éùÙ´5‚ø˜69—Ì&ž`°Ç¶ä&æ*5ƒ Á+U·P ôTÙN'ÌàΠ¯rîª&~ŽÖ+øƒ=>S+´—ŠQm+ è’I} ÔiSÏ1»Á—† ‚:ŽOMÃK»cÒÿÜ*Bae©ãk´F¸°Âp„#.ë‘ÙCËÕêE$Œ“Ôò…|úSÕôƒó^w¸ijm§ËT+DϦ¦g®>½PªÕ‹wVM¿øÅºH¹”/ó…«· ]bd²[qEÕ{.0wàêêZ™ÜÅ4‡PM»±˜èšêŸå5  Ú]!õŸ@!”ÇÿéÈÜBìq/äuñìÞa!K’`øÍ,^…ð%Ö#d‘@Ð1Y³-Ta`øè*ÙKúD!8`£;Ø$ÂCø(!ZŒâ‚G¾IÛBX(f H"‰£ãª4³¸cˆSœÄxCøk‚v„–Àžè‘y]ŒŒŒ\ÏpU3jÕ Uß@Šåë\ô_§###·éðèRØ&äÞ~§×ÊÈ|ö~aÿï|ä ä E0á;'ŽŠ …ßøòÌoøäéèø~­6‚¯À$D—fIÞPdÁj°c°¾ ó}Å"w v yåî½÷*¯g2¸îusÔìnKìÌ Y_]1 U¤¬e²Ñ¢¹„ÀòˆÊÈš‰Ù@&˜›J.A٧䌤Á‰ž¯Ï÷:Œ%(00hÒ‘%0ÙÀ,ᔑEâ<ö‚IšÂj‰ÄFP›Ä*Ê&ZHÖ'fD9¤æQH#1i8$d#dÖ£Ða:bC02”ÁTØÌeˆ0ÊØcX_âì4ågØx˜x’ÆiÜ-Þãñî㯼²¼¼d»®TŒjÑzîÅWªµ‡¸ojj»ªÓßù›¯ÕDœJµvúübè´Ç§ö¿÷=osø‹/<¿º¶¾¹±1:1¹qa¡Þ ¦F*÷½õåܶØý¼Nã›ßN‰ì¶ãï›™}é™§ü |ð­?xï]Û4à¹gŸ©¯­6ìp|´vêøËz¦Ðj¶~þAÝÞOûä‰ãõµÕÕÍVÆsÓcÏ<÷¢ú;{[4hGRž;sÊE)«[^Ÿ(ä2×›‘¹/SWH„{ø÷xYFæ~æ‹Åÿí=NYýí¬Àß@õÑápâ1ŒOÃü¿øðY›µO}kù¿{ϳ¾¢2/ ÿÞ•7’L½g «°–a¬OÖîÀÙ¯VÆgLétb£RÈì8âû7Š«Ôm57íýSã+++ÃÃÃì4Òép­¨êÔgÏ2µË«Ö Çμjm´Ú ŸÛ¶mwÚ3tj¨&Qš…‰Ð<¬´9V ӺѴX$$ç’±Éù˜!zê…mr4áH‚åcbÜ”º#íÂ5,¤Oç,íˆò q‘&_Ò)Bô” M!‰cù˜–CÖ!›º>1Ù€¼d¦CäðRž™îëªDdÊA’'2Yœ“tþ>äðLü=&Þ¬e)Â0tœŽ¦]\#MLŒu‹•|ß¿ûÞ€ .Ó‘éÉ 4›MMQè+·¼ï¡·¦’8:|÷MU.X–•&ªlÛ¾le>=3;=³ÕÊçØošfqÿ4MKiò¥”Íæ¦®÷5Ð ýo}KÏþCæ®´Èd2i‰h§ÓRöÛ?·ÿÀÜþ­€ñþýs¦iAà]ª#£ëzZÄÇq³Ý6û*gGFÇFFÇîî0»ÿà•!.+õ} !Š…ü…õ–ã‹b>gz¡P¸.™=!ØîëäŸ=·t`röî÷þ·Ë¾ '3‡,dá­° _àoá±ó¿ùžâ¿þëöûù™Ù%ÈÂ2(ðyx$LÃ8ÌC0ûo¹Y¥W¢98éÖYH6àº"¥·­Äò—–×N<™~8;U­×ë·JÍîüFâ;­ÆJüå¿>úsŸüØÚÚÚU ù¯‰×(C™˜à;ßÙ«^H?R5;ƒ @Í#zä`ýŒ iKÚ·âöÊW{^ˆÎÃ_€Î ïŒQ‚´?6m¯M;e#û=ÖVqÿ[¤AØ 6!¦Dh=FÔïI'ˆCè̦“Fh-ÁÐx¯ËwTN•y"m«é)÷8HFÑÎáÂiv¹ObØ.àû¾ž°˜¿êVUUÓ¾/EQúÀú[ú¾Ç„µZ ØA,de…ù«_üo·ÕÝ{!=äAüÿì½YŒ\Wšç÷?w‰{cß#÷ŒÈ$“™ÜE&%J%UI”ªÕ[MOA==6Ô=µO 0ÖÔáFs`@`X€{P6Ð~pŽ Ãò‚†ÜÝSÝíRW­.•(QâN‘L.¹/¹EDÆ~·ã‡›kf’ÉHžßC0âÄùÎ97nòÞï~ç[šØªà`¥e—R¨­€;"^â<¬@¶¤˜=#¿ ƒXŠÓ™”çÙ2—Èu‹Š„uüµ G¬µL‰¯Ãñÿ ùCˆv(¦¬ ±vd–——%Iʨ3‹“£-›i M]I¦°–N-¥]5µ Ð :£hv^lýn‘N% "äñqt;.]ËËËZAËÍyúºÐºñòò²ÍfOåÕE›5ô³cQJ3™ Û‘iL›©i?óu[QVŽNf€Ðüç@' SÀ%ààdààe`ìŸöt}a`!ßÙ%/‡€ ˆ@˜zóæÞV€û€ðàd@(p˜n}€¸üÅˬ褢}-¸€ `N ¤€`Ž÷@’XW32›M& àÑlþŒÂíÆ}ç11Pto7k–´æòð!¬ùm_¾þºy-ÄæörorCd~!•d2™t:­BL€÷AT‹õÞÌ|!Ö:‡‚ûjÈ”ê¶ÈøŽ Ï HñÐ)²¦¥<ˆá¿€×´Š<M€“@JvŽª“R(ªi&13«šYá ¨QñÅZEó†ð3‹,ßK6p@ø.°dŠ™?^PÌÍZ È€x¼LÝ€°KÀ,4`®l÷Ç´”(:ÆþôçÏýÙ÷_{Á¸¦§§wã'|´æ²°€ïÖv’ÛqeÝüB õuuaa]Ϩv´#cw8ÓpPpXòÍ Yó†mê%O +x‚ºÙÁÜû‘·"'#o"ã¡ó»sf.¤¬¦ß‰ ‘BÏ€˜ùÐr°šî®¥Ip0D t ySÿ0'Õ‘¡š“Z‹IænŽ©…˜“æ!‹ë+!è9XUˆ´¶ˆ‘!YXˆÚí6%½’¡9~¦ ‡åŸ%ð½Ò¡“"×i~J³ÏY²¸­èÖÔÂâ²RH$uÊÍþò†g)µvcÜûÒÂqê²ýô!})A g ¹´Õq؈À™¼à¶R"ØGì0ŒÅ¥ÅœnäùìÌJþ׆g± ÊwD¶LjFÏK’š„‚A5!J9‘ ÝføÔZ¢ Y©¢$3q]ù¹U䔘[:£Ó øœDF4c™#"O¼:MóÄJ qrœàĈa‹‹‹jj­Q—'麔^ˆËn«m8\˜Ù"TÕ Mƒn=•ƒÀóvIO+¼]¤”³ ÷BbѨÛãž×3yŒÅ‘6¨~Ü!M¨†Ÿã}"·¤é>ž'@ÔEˆP !6A°î œ!dG;mn!hg`ï©«ÌÛt ˜^Ÿcy.”û·5÷ßþ0ãÇCà,p0_f„~€qà^±±*VŒ×Tñ+pp9`¹˜€Æ\†ž Àd€ ð3`€‰¢ •f€ XY4 n‚ßüï¾ÿ´?½U£å™úX,PX¶ÏÔ‚-äË/qöl½âW¿j{-$“ɤÒ îEÀ ÙÔ²°å!—2‚˜z†„‚9ª›µè¢A̹¦®`GÆŠœ€´bÖ83õ S`º£ ÐV¡èL$¹|Ò’Â#oAΆl©F™¼$” sR+r"âVˆ(f`ÓÑÄTnxè4)h ‚¾-ÒB¹\n—ËËå4±ðuuJo Ðàh±Wõ¨~ŽãQôúü–8ˆVGß›'lÇ;Þ8…rw‡ÁâŸo¤Êß±×ï°°²êÒd·×ó]Ÿ@£ȦG½ªgµÚ¬V›aTàÝÐú2w¨¸þ5¶<æŽÆltÅb•ÇÂßz¾€¦Apº¶É@8â°9N§¢(TỼ×2Oˆ¹þR™ŒfÊZÄÌT»ùýo^§ tvj\vxs¹œÏënµ¦®«¬ž­Y´ånþéÿ¥çð}à p Pè<°Œ• ÒY4!Ý/Ëyz (=]¥@²˜ŽÝ:| ¸Ì`ð‡€QÀPàxqœÀWÀÍÿþó?ø“—~»[|B•w›l!µ2…”sð <ÀÑ£ ºÕ [ˆ®£¡w!͆Ÿ;µ…,!˜¡C2fLJ)—‡nÞï)ˆª#QÊZVn)1ûX‘`ˆ0ÊÃmxè0Óû5 Ê-%['•¡S(Ò sRÜ*&]pIyädÒ¸¸dXÍ”e¦óGrÉî’‡\€uH­AÐÁÅãËOÿŽ €…è‚U¶vùzäӿņ´r®•|.™ÉY=w¿Ív8  ñßt”±Ø’f]¡P§•7/wBKIÿâ+œ 9m]n§×bhuý†®/­¬èšÖ3tœŠ¬·¶rÑhÔáp¼þ!¿#-¯'äóùí ?;ùBÐ~Zˆ(Šù\†¥m×Ô5€·€eào;`ùo~þùŸ} ¸Øþ¢‹èð@7p°kÀƒâƒ”P¦ÈÇÊÌ$<ðrÙ\kÀà+€Ÿ#€èžÃ@Hó€Zì€ûlÜþB„Z¹÷?}owâV÷UU›ýÿxûvó¿wîl{1étº©jvMš[:;> æ–µÛ×.Ûý½¾t:ÎåÇá_ƒjƒ Xòà ÈYð:„ t š‚4ðÈÚàÈcMB¡°ªÐxXt(" 'ƒdm ,ð°+H+ГÐuˆiˆv8Á»‚²‚L6”@(€3 åÁkr hœ´€‚Œ,IÞÈàÎ¥ñ%AÎyßz0´‚«Yô è!PdóÐuÄ4,Vð¼ö8R£ëZß;2º:»TUÍ,½¢.J7eË¡”V˜õÊ[ÌäåÙ”­8vPwXr¶³/m IDATŠR_¤¼…ã8‡ÃA×ÙÙ‘J¥39«BsÅÿ9¥R/u†2÷Ë=^?¥4›y^ÏÅ2Z¾Bjëì¥ÁÍŽç;B¡¤$å8£`“i.Wuöªë1Ãt;;;u]?fMÙ ™Š‹ÐV)óÒ`.ɲ]s« !dû~!´--ÏÝ»PðÝ„?þ×ÿáû«?O ß9P`µLŸ8ô°| ¤ `Î6@+ëI€0`n$êeíz‹ïÇ€“@RÀ0À þ0—1–Í)yú;Øšl?t½)/x—«)«ÉN¸z££»=5›2-g-[˪\.ÃóA»Ý.Šòú Ðr°œð*8 à8VpT 8)ªˆR žBç@4T±A#à9À^€A ë0= jöÌAÑa1@^(xœAG!ˆà à( èëJ ¡à(  §ÜNR¤ýñÁÉC`pà @a/ÀPaSahY | bÁÒ6“ ¥Æìì|_ßNKu?>DQìîÚÈâ—ËåJ‰@²™Œl³q„Ð4MÓ4Sù ÔXKmŠƒÁ -¦-/×u]Q”ÒÇt:]J:žJ­•nƒN§ópYÚœòÊEr¹¬h‘ž ij¾°þŒHéìì¡Å™rqEQ(…$YÌ5g³ùRåɵd²dct»Ý®“ë¿€¡ëª®Kë*M§3¥dÒi›c=·P(”6Dxž?Ö½SX¾€\.k±È<Ïmý5’Éd•“ñ E-äÙ±…<Ûp@ø\ÛW¯-¿ñ=€üe7`¼¬òm? ià:(æZ=„ L¦¶M€î²ÝŸ`¶ø^8à(à¾ÜÂÀ×À_f‹…?ýÙäýÆAáÕß>º{®O”Û7®ûfWg©Å5Øß-Š¢ÜL²o¿mvŸåäIüêWõœX‹¬F§VCÝþ»ã³gN0k;4e˜QU4™VÄᨗÜìI±¬eëªÏóÝ}=ÿîl6g³Yd³9ó1.›ÍZm6ªªÄL´b6jšf†ù¼X&˜µÙl¤ø¦ØbÝÚ‚M-¦8Éò¢(ò_œ—(ŠÂqœ ´ìæ‘Íæ,¶±4onËà›[l5;÷ÿ«“yYæÖÖÖ4Ms;mÑ¥ÄZꉕ‘Ú&åUUKÙŠRD‹y×4MQTó'¢M§3·{ëå⪪*Šb~¤”f³9g±^>_°X$ž—+@ UÓlÅ™t¦$¢©*/ ]ÓsÙœ³ìEÕºVPuY–J p8Ö#rÙŒÕî´ˆ|…¸¦©œù‘4“É–­9'ÛìÏPÅ0ŒÒD5À‚B/²Ù^úŠRšJ¥vä²ýjv`€„ÙBÚ‚ÖÔp ¸ ¼"âΟ|/ö™¶ôªP‘†Ã^æüUŠà+j p¸èºDù¢ è->XV8®<`^¦ÓÙêþ½—þh92þ©Aål‰xÜB »Ý‘Ïç›ÊZ¦ªH¥ZðöðxH ‘»ÉjTS8B,’ `qq±©¬eׯãäÉfWrâ¾ú ßùN³ý;ŠÛ¶:¬ßÿ“7ççç»»» 3ßTé™ÍÉLâdvÓuÝ0 ó§ÜÚ¿ÎPuú(Š"Çq¥–D"aVd¦”*ŠÒüPuúÀëÆžîNÛ¹“_ï ã.Ó-É5Óÿ€Õj-=Çs¼ÐÛS=9G¹8Oh&W0ÿB::6ÊÑ™©uª@8w™2—ߨ$r¹7þ7ÊV«\#¤|ÙlFŠÕì8!Ú¨3×Ù]ýL’7†%—ËeKeåôê8ý”/ ™Lô/"å? !¤¯¯ooªÙ™ÖŸ)¿vfÛ5uKx€8p H®k—W^þNgíËùÖà€8 ˜ÿço÷?p€8p¿èJ’.†í˜ÉB–Íþ¬üŸvüé›?Ž}ÇñÚj¯‰t{uƒ+¨°ˆMg-»q£…?€ãÇqéž¾¾§Ú`¯;ž¶Ä“I·Ë⥵wj"žoa»‡çÑÝÝR.µÇÁ.d)ÝxÌÛvù›ò$’f7žçK¹)·ö¯3T>¥øR‹Óé4Ÿb !- U§ÏVv~y …B¡P¿O(ÚᣘÇåØÉ PUE7¨,Iº®ày>›Éð¢(Õð±­vììir‡¿@ Êe³U¿R¥ù?ŒL&c·ÛuMI®e C—m‡m»Î|¦Âvdž%  x<ú'§“ÿË/ð_½Ñ¤`E °é"aà @€9àóbN;ðÀ·€<0ôw€ç3Ô¦¢ÓC.¿{îàå¢E¤­ñúMïÞõ‡´Æ‘ºccèïG«Ñù§NáÚ5<ÿ|.œ(ù½¼i "u)ÅíÛxå•ÖV‰àæM¸\({ÊzÂ삲›§¢½+ÔÀ†¼°°Ð×Hášžxà ô¼µm ÔûöÎб㖺õÇf'y«§þ’¨¡/Dûzëå夔N<ë 9¬O¬båNÑuo=UèÞ’I§ïÜãyÎéöæ3I‹ÕEô8IÑÕS'O4–š0©&‰ÎŒß›\<{fdl,ªë™þp„ú¼[c8 ÃPUµ¤›”û© É.f­+ `e½ÑÔrêHUm) ¢(VxàÖŠ8]¡æk3ƒoG×u]×+¼zë Uš1=nxtù|^’¤ŠkwE·–2îï;ß‘ "àŽ…åì9³=Ãzy °Vfùèz;¾’À@^N‹Àâݘ85÷÷OÇCâï—eµÞO4ˆÔÏ£ö“jMdÃÃøâ œ=Û|fçz‘º™ ®]k¤S•'pó&|>ôî›ãNÿû­.EÇNtt÷Õ¹åº:73õ«¯®ÿóÖ+ÔÖæçfyAlpÕ k«‹ñœÞᨷr‹Å®Á¡-Lß\ª¯…€3SŽ@_i!’$mûxÊ ut†:žâÚ­`±XjÕµÙÊÀ¡£áƒ‡yžñÅNJ)Çqf˜ÏöÓi~¯èºÿ¨i ÉåðÍ7ÞŽ bâráìY|ù%úúÐßTú¡ê¶Jqïr9¼üòö“œ8‰ |ù%^x¡AÒÕÇÀNµ_°óôIÑê] 8^ì‹üa¨»Ž  »§wjüÇÕýy`ähÐÞ@yT5]¶68Ý‘!O¨Áž!Ü‘§üÞvÒòc±Ø^/Ñ,¦Ú²z2©¸ÁaÛ©âK }qi9Þ…üj†¦dóÊ®ÜòÓ©$áE«´ãÛÕ£±¥Á§¥.èžàTÀ Qxæv®…”Õ¥æ£ÀJ1GûÈ× YÅñ·?\"@õj“û…*¶™LNÂjm&Î¥<—_ÆÔÔzÄìà`}  Ò’ɬë##jË5ÇÀz{qé,>ü$gvÁéô4åÏßÌ%,ÚŠRX‹ÍÍÚ»»›¢De›ua¥Ò3Ú/~ö·/þætz6Múàá·•ZÈÂülÎÝŽ=ˆÆ`ZƒÁ`ï[çÏoš{òÂ[ÅEàâù0ûëa0Œ§”vÐB"ï~òÉ»‘½^£.Ï¿úÁðGSSSSŸ½?öÎù‹"ï~2eòÑðq±¼ÏÔgï@äÝŸ¼?:úþgSSŸ¼;qþÕï™ý?ûÁO|arò‹Ý?~0±©sdÓäWƆ~bö{ûãwÎ_DäÝ÷ÞþøÓ‹pñÓß~ýõlb‹¾X®0u¶‹ç‹ çÿϲÇó‘`òÂ[o]¸p>Ÿ¿X®òáâù =p³Z>;Ó F‘vÐB6.|ë/óÊWºˆÖ{æ.µ±Ëâcerblôý€Èë?5U€ÒoþÎÇ›˜,ëS}|üNÉRråÁDd`¿>8÷ᇵä`ô¯GçÞ|c“À¹7M5äâ§¿ýf=Ñg­úâVípòÂ[ïà£uòë såƒoNMM}x®Lå+þÜ+ÊJY¦52ŒuÚA )a^¼>zûãw~ óÍŸ_˜lê™›]Ÿ8“Þzõ§?ø¬ü,4bôýϦJ|xç>œšššzóÓò§öf1Õ¦„la«¾¸U;œüåOQ[_4))ª|¸øéØû?:WE¡¬”eZãc†íb?=4s.žíóÕVZˆyñ-½1Û>s³Ëâã&20|僿0MS¿üéó'+þª“¿üé•õ>?ýådY‹‰y:ÊFXgòÂù “À¹§>{tlb²¬36›«J\üôãâ¤ç~ôþØ;ïŒ5º™20ñàJãNu9÷£÷Ç>½ˆ‹ŸŽÿU*”‡`Z#cŸSR5žmc+m¥…Teë3wÕ«*»,>^Î}øÙûcï˜jÞðGžCäÝ÷†?x5‡Ã?~0=_TB¶*”`Z#ƒQ„y:n¦ýµlyæ®rUe—ÅÇFéÔÆÆØº’gn¨LMM}òá‡ë}ŠM-ŶOÞ”`~. °áŽº¹sQ›ÜP1ËôË‹ñ˜²•-úb™vXŒ]мû“ ðüÄÆ§ õq3‘×0ö1Þ+Ò …²¢7ÓkѼ÷[o¶­1h[üáj_Åg¹Úª˜çÜ:µ~ÉÉ-®Ü%Rˆß¿ÿ÷oUx+>Ûç«ýó…DÞ}o8üjø£o¿]|æþt½ Àèûæeñ­WÃábËgªè•ŠÝßþhªü²øS<ã—Ŷåâ§¿ýÞTd¯—ñy÷“OŠo¦ÞÝôÕ¹§¦>€‹çßD¶ö9W)±>TùàSß­Ùaë@¬kŸU¶>{\úljjâ|ø¿o¾ùó ?:÷îÆ/zñ|ø/.¾û£bÏpñ|øóoN½ùé« 4õÉ9`òÂ[?FÉîÌ– ¯ÿ¤ÖøQ”¼ðÖ«ç/VÚ‹+çúðÝ÷ÞzñÃsçžÝÿiUÉŸÔêy÷'ïÿôÇøÉ'ïF&/¼õJþ‹ì|µƒR¼zn\C7¿‰/¡4¼ª‚]÷ ¥¿‡Íœûpбšäâùð;›oßþh~¶§ïÚ¸G¬Ûƒ†FG‡Öߘí“Þ*=1M¢Â›íÏ'>}ÿ'[üá>\üüö†ª?9Q’¼þƒÑÌûÕÖUçšÄ¹so¾ýΧ?<‡O?~ûÍŠëï³A­3Õ$e¿ùFË3y¾ÚA i]¹ª²Ë"ãáÜV=þñÁ´ÆmPô~û$RznnŽŠç«É ¾kk2okoâ©»©µ3ÏäùÚ~![Øp(hƵ†¯Ð¹›òbe0ŒÇN…÷[9¦7Û+[bЪúÃU¥jŒóœÛu\¹ËÃ3·Æ >«çkÚB cÿPÅû­Š7[ÉnÃC®Â®¦×ByÏjöcæ9×$‘wRü!7ÎTñ«÷Þ¿þxô½÷_¹ÿâ3~¾H"‘¨óõ/~ñ‹3gÎ<±Õ0òÍ7ß¼ñÆU¿b'ëiƒ¬6¢ÍNÖä…·LWÇ=œëâùðŸUñ¨{ü´ÙÉzÂɹ˜CñSJ»¯ýéÊ`0 ãé§±-ä›o¾yë`ì ìdµìdµìdµìdµ ¼S ƒÁ`0lG†Á`0 ÆÞÀ´ƒÁ`0{ÓB ƒÁ`ì L a0 ƒ±70-„Á`0 ÆÞÀ´ƒÁ`0{ÓB ƒÁ`ì ²–ýâ¿x2ë`4O2NOx%Œ†Ô/ãÄ`0Ï8s§>ëõ Ÿ2ê§d'ë©‚åpd0Œú°ƒÁ`0{CS5uÝn÷ã^G“ÌN>œš‹…‡FzCþõ&jÌÌLƒ—ûz:KÝ ™d²@B>׆¤¡ÍÌ/öõv—¦¦¦ÂáðZ÷nL&÷z ­Qú³þîï´ßùR;™à/_%™‚úöÛà†.þ_ƒÈúéSÆ¡ƒE©¿&P«Mû­ßXœx \þé¬úG ‰@ŒÂñ7o!›Ö~÷÷©×Þv¿ƒÁ`<Ë4¥…<=\»ükkÇàÏöó‹s…ŒÔ¢"Ú’‹Óé´zúåïe×ÖNŽôýÕßüáÃcÑ•åäªS–:úÃãwtö÷$V·¿ÖCŽ=7Òû7ÿéïæ–ÇzˆÃ¿²ðH¡¼ìðôz¥ÉXòw÷weßëÝWè/½Tþ‘zƒúK/S— ¥Ÿ™ãÕöŸ‘D’º½¥nÚ÷Þ ªJ%iC°7¬9<Ô"ònã(u{¨$ÃiÜÂ`0ŒÝ¥Í´B¸L|±³/üůþ>æÕør.»·ã‹¿ÿËð/ MY^]ƹµøZw$ÌëÆíÛßZ¥ÀÂÔ#‰ÏïOœœÃÝ–µZùÕ/¾þ2¶‰èùøòU=èVs!Ç^è~`žL p…¨—,,@QH*]§~?YY!é´! dvÆü€úýÜô4u¬š-ÝÂa23cv ++Ðu8$:_.HVWéð0YYA6 —«Á² ƒñÔÐfZÈ™—_ówôLONý£?ä¬þÌj”“í6 ¯iêß­DvóDõ{¯tõôf3YÙf〾Å鯮OýæoþÕµÓÏ/y;ìÛèá g=få DòºÂPðÊÂüJ&d*Èî°Ì-Ù ¢’lr($g¥V«ÙN»º0¦zòšñvu™íúÐPyZl¯òÆã)}äæçÉÒ ‘ÏsóóL a0Œ6b›ZH>³¦Éa[·–;Û¿s+Šb±Xšì|ðÐaÞ“'Š á’ø‘cëßyå{å"ƒƒÏ¿¸1€ùÏèÙ³³ßŒÝî8Ü?ð_®ë¹\n{²mÁ }=`§  V*0O‰qnÙC=>êÛÆdrÒˆD8‹…ú|ôž0¿ƒÁh¶©…dR«iÃ-p4çój.wœRíôiC8Ã08nýU×užç7^ ÑoÞ”TÕ¤ ò‘ˆa”ÒÊžµ_ËÇ7 ƒ¢ëzé=¥´ôZgý¥nææôéiîn*ŸvQMUϾ ‚cí3w^‹¼¨©¼—6–¡iüÍ›PçM£Á >0ÐäâË¡|=ét€ÍjU5]à133­¼Ë)OÎ,ˆt-,%ŽŽ mïL=åxàñ¦.2î Ž 5+™ÏsóóF$ŽÅy1 F»²M-Äíë°¨œ,K]]] Ï=]¾ùGŽÀé,]6^3Ü»'=Š¢áDš›Ãؘ14$¦žu_+؉5À·ß*v»å•WÀÏ ‘þ8äõ§_O.XæÿÍÙßwXøo翸“ë |÷õž#ë Èå„7pê$ U1™¾ý§O·zº®s÷5}tt56#n¯´|óÞô©“îÞ»£óþ>gVtô]¹3Þ|Zb”¶Aù,²”âÊW¼ì¡n+]\&¢¯« Bj“‘S}Ð}Š3}ŸÌ ô übçêIf‰ÛI•4ƒ( æç¹>à‰$ueçÆR¾“ƒÆéè X[Ûë£d0 Ævئ"X¬ÎÍ·~žÇÙ³¸}ýýÕ¶æ“IÌÍ¡¸²NOœNrçž{n{ËPßæQŸ±1¤£cýãhßoN}õÕ°KNtˆÖc]ßpõ¯÷ÈåpïΞEqRB‚A8¸z§N¡ÅÅ##æ·7ÔáòI÷ýžˆa诽ö¦ ¡ó ±£CýKÉì¶qÏ‘!Û` Y©ÇN%ƒƒ4›AÑÑEV+Ä,¬Ñ‚KëSÎñ<º•~‡“J<)B€Áˆ7sÕy0ä°S…£˜/ƒÁ`´);µfg³Ys7ÁäØ1¿þ¦i¶a ‰ÇQô m ~æ ._Æ‹ÒõZþ³•âŸËË4åÉ12².îñ;Ü~«ÈÿNßP\¼ã;ÔÐ5HF.á ¥}T’Ϩ~òéìüX­Á|¯FIÛ¤“:´í}e ƒ±S-DÓ4M«â"(Š€RPy^l´=±aNxî9\¾Œ_¬Û½¶xs|ý5ΜiVœãàvèñ9Å{ÊÚììCCøòË&µž@™¹ˆp€¿â{I¥¥!Ÿ^î}ËÍLsÉB”®¤‰’'ÏÐ Àç£óÜØ$ì4’K¤'~aQðu*†h·Ro€ò<'‘ÆÄ?Ñoôó` £Ù©b†®ëU¿ÅÕËx©¡N±aNà8È2²YØZ0à·d 1ó¥‰b ⇵[—„ã/Õø¶Š8!°´„`°ù…ícJ~!%FŽ#G+7E‹¢ œÒEÈÂõx`%€¶²B\Nj’€‹Î)2ÕE»$HÌ/„Á`0Ú”j!‹E*«zºA&Ã9l’\Öêv„u6™ŽÇ7ßT¦©KK¶[·püx+â†|ÞÛc[]…¯Z†ñêâCC¸t‰i!&UýB”,nÝåô<Ñ$zò°a·áë˼ª’Ñç5—“¸ù(1âIW§ï€K²ÿð·ƒ:|ôȰ€€DhdŽÌhÀÊüB £=Ù©RÕ;n߯™3Ç)®^Å /ÔA×õŒ¢<‹¥±æRK¼…B¥çAñk×pêÔ°_~‰—ªÙCjŠÛlÈd`gµæ«#Êèë¥6‡Š|v²D•ƒúƒF@XሚMR4Ø_Ô("X6¹¦öОqnüàƒÁ`0vÈNµ«ÕZÅ;ÕÜ£áy¡ø¶<¿ykd÷îáÔ©&P)^›¯¾ª¢5WH¬Öê;E5Å߆Ë>c,EIÖN…Š„C¨c]Ÿ0ÿz‚è\'Ÿ!²F;6œcÖË8«d¨ë2ºR;W=Üĸ~úÌÖ ƒÁxji9Ì•–Z Ô¯]+©§OãÊ•zVº•X­ëñÍQË+e+†­:C=ñ»wK±4‡áþýVfç8º³Ã3 åÔÚC{Z‹ÔUÓ¦“ÇXa͹%êóQ‡ÛM¤Ë`0Œ=¡e[È·7¯Ù“[õö÷=ñx<•J)ŠR^ç–Ëå €Ó4³„l6 MC2³Z±çúëü­[ú¡CÍÔÔPš½NMÝÉItw£XÍw£¦.¥Ô× ]Ó´Mƒ/.rCCz¡Àó<Ïëé4_(4±øÒëáøq§NÕ9„Ý8ƒO/.ø\E­`)F4 `°–Ew']^"N*ó˜Y T‡M†¢A¿¾,î³-!'î¡fH"EœNª æ Ñ ‰$AÊQ¬¥‰f@M[Ã#õVÃ`0Œ§–µ›ÕZPµ`o„Âe¹«« À¦ª¶ÓӀłb Ùþ~Äbèé©^`Öt­ØÔ áÑ#A’ªö¯ P(4SSwy¹ºcGIœçøM㯮¢£e ;rÂÈH£Å—^% š†jßš4oÅiw’I2s—³;à÷д C!‹l†ä 4¹F–bœÛCïÞ%Á-LÄôÎå¬Nê¶RU!Ù Y\!kq yv‰5è”<ÑÌÇHžËzãž½>DƒÁ`l‡–µÁCG4Mãy¾f1Û¹¹Š~8ŒK—ÐÓS½{u× ¯µâRšßL>ªq<õÄÇÆ*ŽÂçÃØX‹³÷÷cj ápÃîcòÈ‹îÌ«¯é2iäóÄé¡J=ýÔauPÙ®¯ÆÉ÷^3ﮆ¾+ÁE«†A)'ÂiÅ*WˆÕFy.ÕòȈ¯ƒ†ºè87ðª¾ÏÍJ ƒ±OÙNwAJ*HeŒŒ¢lJÇQš†«é¦ZÝ$02Råžß¼øfÊÜTš7 TÓ±\.$7'Ro0{w7«oW©‹rkq2;Mkdv‚[Ë‚êXˆr;V¢ÚüIº¤ÖÈÇüÊ*Y˜å–WÈì09ÉÍÏs³3\,Jâkd5F–V1M¦û~–ÁÁ`0Ú”ÝÎà~åJÕ³gqéRõ=‘æƒ\ªÒ¤x-ÃMuñ7pòäÖæC‡pýú¦Âº f'¤ftÍ3IdÐ dý\”ð Àá71ãÿíˆnP}£/bJPPè^zi“—éÊÄ„h¿Ñ/<†ŠŒ ƒÁx2ì´šÝΩiNh®¾]C[ˆYÓ·5ñ|¾jÂQ„¦mŠÃhl‰©]óLÂqê Ç£¤’XÌ…@H¥Ž€ßòG%Ñ5>9h 2„Á`0Úš]­©;7‡îîZ=;:Vi¯iNe Ðв¸ˆ:QŸUÄ“É:þƒñða ³ÃfC.נϾfk÷J4 ù|“Þ’HŽsã.êê¢]­,ƒ;ƒÁ`´'»º#3=]}Ó08ˆK—ÐÙYÙ^/{©ÃTª˜²ª:õ“Ÿª*ê'V­"~çN£ñð!††šš}·‰<Ïh‡ yîž3åCýÆÊguÂà¨ÀÃ変%nM ½ƒò*ˆÃ°‚h "ôÛ;œÀ#“!±PŸÎÁôTrimÆå6†2"]œå$õ¸¨lE·àf;^ ƒÑŽìžA»†Gg9„À0PQz¥ž9ax7onª»…úÖˆo¾©£Q4¯Š(BQÌHäæÄ®™þÙ oÀð9 ÊÁ:h¤²Äç£Ä€ ÒL–ŽøSbË9 «9’ÅÐT’ÉÂåGá ÐaȹÙ¢È["4“‰ßg€ÂíÔ‰›Eð¬„<3 Æ~c÷êÈ|û-Ž­ßùðaܽ[Ù«ž9ÁbÙH4Vƒ–êÈ4ÇÀ@}3Åü‰MÏÞH9Ûßä‘7¤LgwÉ›†–þ]]‚²°|¹ßº%+ËäèQJ]]"é|Ôѱ¶„•{7ìú@b… zd¤JL.w=É"u £iÖ/Ä0Œl5ÿ†™tºþÖ ·»Ê~sB(„X¬Î÷uÄ—–Ô_ÑñX¬Ê¦Ñfd2gßÄ›ÜIž%ªÖÔ5“+|§z†ÈeI8l̘ïó@pe<7»¼fDôÈoÈë3ÂáÚÉfY¤.ƒÁ`´'Íj!ŸÿüoþÃü¿kÚ%R)l­iW ³Öl9 ÂL1>^çû:ââ`£r«›Ä5­J¥™j˜á·õgßD(„¥¥¦z>; âìý}Àà át¢¿ŸÆH¬~Ô×E¾ép¹9‘~:¡N'º»Y™ƒÁØW4¥…¬.Îk‚up {ëÖÂúŽÌ؆‡›jkàjã”u©%nº©4Ü Ù$^#MÈVž{7nÔ›½:Åß©Õ{“kõ <Ïd~ÞØQ5GæÆ¹q;µƒ<£Î¼ ƒñLÑ”G…'Ð9Éæ³Uâf×wdâq4QÌÕ*æ6v­8xlÄ¥l¦–x“™Ó7‰+JÍLï͈×FÓ’ÿAøö/ë)Þîï|EÐSVûì¶‹ÚœiîÁॶŠH]]‡ª‚˨–n&Ó™¬ÑÃwt)‘&Ž 5»éÒibwQC>‹LŽÈVêrB××VósÄã§Îd’¬®ò—¿ÒÞü­½8PƒÁ`l“¦´ŽãbS&W CÇÖ=K—¢³°¸‚>är›ŸÒãA<¯wýccsBEtìfj‰G£ME¥lˆ¯®Â{ ±@‘ÎND£š²…‚{´ç¤4¥ýáé `.ñ‚·¡T»Ómô{ ¹`¿~W‹/ñà@UpP=¢!¼+äÓkq§,ðkŸ‡»®£"ºHu…ÈxŽöõÑÔ™œ" üN*wÐ|œ3”ŽŸ0&r+«Äðj·Çêóé/œ}Æ £íh6ºD²J¢eã¿’Hd6K<OªÊ%i 3Mû=8ðù—8vlý“¢(‹â&oc¦ú7UÅu÷Ó¨%RUüöÊ º0o,c"àö5:ÔÄâ‹\RÆ1VÊæ¾”˃b Ú[Û!@rApøˆJè¢ ©øSi÷×f IKìŸ?̃(PÅÃFS@9œ5…p¤Y™"Á îÝk1õjOfgÑÛÛê\í‹™/„x;”næ Ñ'ÙTC‡ƒp¹×{ †sp0@À¹U$[)8«Æƒ³|! ƒÑž4©ksßù—ÿâÕᄌõ–»©ŽL+ð<4 h>åFâ´[ů\©Ÿó½xKX,¤†¦ýý˜iÂ]eß¡B’è 1hYN sÉ1 ãÙ )[ˆ¥vüªa”n'—Ôð0ÆÆpôhÓ¶3›;¥qÛ(S)nfmW'¶!~ä½sÏ=עؖ£ØÇ䑟Žg× ‹òbxÞM¹ù|¡3éü<§hzi¶€¥%ÒÙA9‚B}ašNa~†³;©lE:ITBE.'º#9²„t «Œ¼ßLÚ1¸×ÇÉ`0ŒÖi6wj- …B6[·n{ JÙÜkçåÞB(„ÅÅŠ¶ ñÅÅ–¢†aF3YÛk!IFµ¼öu1«é<3È3ö8Yî,(äÑC~nEÖ ²$•F|…D—‰V ¬¬”>•¬é4ZvPãFZÌúºsö@ |EÍá÷cyy'S·¤ÃèXZ¼I;v”ìŽÁ`0ûŒîȨªª´–1£«•´¶+2<ŒK—J¥êJ¶±±Ú4M¡iàyc[aÆ%J³[­È–JÄ4áCøüóò­¥ýÍ£ CÎ*¸ÛÁ-8oõ熭Ӌ•,4Ô ùö6è¤ñeâöÒø2YYæü]†×M3iDã÷xÓ}Æf£sÓ\ï á¶ÓÅ%2?8 Àˆ-“ÎjhèèÐU ƒƒTS ë¼Q„'– ««Üúk¯íõA3 £ZÖBîß½I$ozyÚß?Òáu$“ÉL&£ª*!„Rj¾r§ë:Ïóͼ¢d³œ¢4Û_×u~x·oÓ£G)¥š¦˜ž&ÝÝTÓ6ÖPñ  ¢QXYÑMqBˆaš¦µzŠ¢”zjt͸~èZN6ÒN8ið (X á~cfZ+$9»0À ÅîϦººC û&Gx8Ȥ³è顯îq™,'P Ö3I"Xà÷Ó|÷Ç9Ñ‚\†œ>­?ãd;íî¢ÜšËðùôsçöúˆ ƒÑ­i!Ë‹ éœ"jio¨3ŸI[:|>ŸOUÕ­õäL‡‰f^EQìëãb1®··i)·™LÉqQ„X¬´EÓóóèî6—m¾ŽT¸Ù6¹xŽãÌ÷ÃÃxôCCÍøörζ+š‘Sì6'åyp+¡+½> ö¡°ª"A^ÇafŽôuSƒÂë32²)"X°ºLnÊ ðù©ÛI£ÜÊ Y/.Ã`0Œ¶¥5-$ê „º”B-Ó*²n'á®'™cƒÁ`´#;ÕBvkG€(‚ÖÌ!Wpæ þø^³¹$©µzw-Âqp¹˜9d² 6¢bñÌÎLsÑ()(dôŒæváÁ].ºLlª©äØQÝn#ãŸ÷fsä¡PðœšöøVzhy¢}´¨…aÜ £=yZvdLFGñå—ÍÆÜf³ˆ~,/#hJæÖ-´–m;9RžÜ•Q…`Èp¹‰,SE!í0ºÃ…a  Â1d‰¼¢ ªdI ?ê îçËå±mVƒÁ`OU……^¦‰T‡Û¼ÂͺrÁÃÒü ‰®ƒp3ǃÁhGvj Ù­¬eå801QSäÆ œ<¹Y|dAU« ÌÎÂfƒÏ×Ìì-QG\’‰`l¬ú·”âÞ½ÌÜVP2vOXŒrS DSÈÜ¡:rYd³XY!ñ%’H’xœÌ-•%2åòy21ÁåT"dÖH:M¢ \6U!„ ½Æ¹ýZ¸Ÿ‹.I‚ÍÆ\E £-Ùû™ªæ„®.žé/MDD)ÈüˆŒ&És³UUxó ¶yy I˜™Á™3Qò®6×épæ ?FA*+`i ù JJ’… kœ}“«¨Àä$<ÀéÓ((€W¯ðò%΃Fƒ-Zie‡Z‹~¬,aIAp9é7šEŸPµêÒ+>±¸¬”ajJää`ê•æógåØ1õÓG‘û•*¿KKXZÀ¯XúŒ£GUïŒæ+½:7}ûà“Åö=xtRL_YÁò²ðù˜!"Ê.[…(ŠâŽ˜ê÷ûµZmä[v}>Ÿ^¯ßànLóÒRüéO>­VÀd‘#xòdÍæ:vf&ç·ßPP€ÅEœ9ã››ÓGt/ÙÙ – Ün÷&;Ÿ¬BYœN˜žöUUé+*ðò%´Z­qW/*R  <Í"«Á°ÑlQ„Xœ£(j`÷ìÙÀÛéVëµ3+•ƒŠÒÃj üLíJøÃ•êÐ@@[ˆÂ÷ú·EùùÊ©Ó_äkÑ–Ù‚(Dq`õõ¦XZZÒh4Úð `0òÙŒD»~¿íæßŸbó²2í©S«õýþ4?€›ïüõõ£Žî¡õòc2Gñ‰¤ˆ ¿Ny¸í~u¿GŒm®ƒDD”[…”––FîæÆ½¢%æ¾³»›š¯[† ‹Xœ;VŒí\b]|⓺DDYi ¢I·«¸¼Ò˜ŸæýUr?Ù_f*.J󵨟ÞMç*Ð%ù½žÉO6¾J¯¹ä~²ÿ¹¸P¿~Õ½JÝ‚×ðËÿäþÓ…Ù+ôyðÎïVV*¿?Ö®¬`_¾š— é…ÆrRÑç⭌ꯕ·3šéY±àCI±êWQdPSŸýMû·ƒÕoļŠýµà ºàST_Y¦¿%¥c ¢ùù9eö­1ÿHzÍ÷íÛ·™)¢}øÀ|îû]šÏé¼”¤\CIÚQÈ»Y¯F€QÈÚŠŠ•¶?,/, Ü¤¾+NTª_åAT˜•÷DI‰¢,‹ÒÒÿtzñyAè j…NÕäÀïƒö3ŠŠ0?äª'N¨Z- óÕez½ºäotÒwóiþïQfmAr¸¼¢ð@ú+c®¬(Mú‹vüã…KŠ6ýaŽoNk<˜`‘ :f>±¿dc¯°ÙÃr´() N5=t8ô ‹Š÷³ÈË…ü^TVªþoBS^¡hÞyÅì´XV³5_+\¿ka,VËJ£žƒy-^}«4ÌÍðºDDÙh ¢ƒ¥xéKræ›Z7#'/6ñ䯿þþªõÿ">úèÇ>(“ÒTÙ¡C‡ǦîKmêgô¡#q+P´E,úàK|hAhó 4˜œª^¯¾z)**Ô…EªZ-´¯ÿ.Ê©Š Jt¬1%¦ŠÔ" øølû¿m½Ì¯²å ÞÙsï½ÿûøoo¼ïŠÔÆêøûã‡ÎGºÿüvÍæK¥Té Ó#ш•ÀÉo¢Â “9˜ç(?»ðÇ7Ñ5ýð¿Ö¼>¢ÑA_ŽGDDYgF!+¹…ÿþoÿœ“_|êë“G+– ô¹šã/Ì^a² ¼¯U¨Ų~U""ÚÙ6…|øða»û±… …Ô¥…ü‚¢üˆ—ÀùòÕl6#fæÄ\¹Rž‡=÷À3Ñ®´ s!´£¬1/dãñG©RZªÆ.Ð .‰ˆ²£Ú^Iç…lŒWx?‰O%JIâø#€óBˆˆ²£Ú¡¦ÄÔ¢X,QJJÔ’L÷…ˆˆ¶£Ú.²ð~Àr”1 T¨*T 4wÕÀ¾IDATWì6bvïÄ»âC™R¦ƒÎ«ñNc:\A@ˆ˜†es¯ ïŒâõ+åô·ýÆDD”F!´]rÔœrµ¤|¥\²€ª†9Ì0À ɤšÂ»á ­ÐžSÏÅ—KB*UKs‘»ˆÅÈr|kQ1;›ÉoKDD©cBÛÅ€ý†ÐÂhò‘*7ø ŸQ=àÞð€K PóHB»ÁYá-V‹mr%á ÊÉM-GDD_^ú/p!ÚŒçšg“÷3Í˸#Ëš§ñõ_h&žk^¾|†ˆh÷ع£ínÞé0gº#{ÍÚËÌ)X ±Õ¾Ã©øÂ“ø.Y}""ÊRY˜ ñ8ÚÚžL÷‚ˆˆˆ6) s!æŽ;w2Ý"""Ú´ìÈ…xm¦€6‡' ñ8ÚÚl¶6“Éd²9ƒÇmÎ@¦$X,Iü)q'ˆmåq´…›;mñMˆˆˆhs²! ñ8®õT÷I’$I}ÕO_„ËÇ\U7%©¯½ßz Ÿžp¹8ŽCœ¶†§W%I’$i¤å "¶•¹ãj{ÿœCýíW9¯$Ã8GD´ëdCb>^~«ÉæíöÆpy]Ëy3p¼ª.¼Y ±¹®¯ž.ô[¹Ž†ž±±ˆh&a+ÐØCœCýíÍ ­Ž*^íUY1/¤Ñ.Iv8m&“í}#Ui~L]÷HjOÊ46·[‡œÍèoo¶§yNZ'úíUÙ ñ8lÐh—FºëB¹põ×µœ? 0¯ëùÅ]!rîGL+34þÐí²Z]Ý?0²Ž¨+é´­N­‰˜ˆãq´µ9¶ÀÄãZÏØXOƒÉÔöÇ?†r!N›iujÎjëd“r8›‡ˆ(ËeCb>Žž†ÀPÊÝ–›G׫?¬m²¢o5ùÑhévY“ß×¶2Ÿo© ÕPr³hB#X‰&âŒõ|xáÂ…„‡öÜ+Ù{ 6ÓÏU)>•½-Öøc˜ ¡ÝÇ9ÔßJÈÑNÆ(„²V’åÎíg„e…]7;•ˆˆˆ²Äú¹‡~~Жà‹ˆˆ²È:³S‰ˆˆˆ¶ Gdˆˆˆ(3…Qf0 !""¢Ì`BDDD™Á(„ˆˆˆ2ƒQe£"""Ê F!DDD”ŒBˆˆˆ(3…Qf0 !""¢Ì`BDDD™Á(„ˆˆˆ2ƒQe£"""ÊŒ5¢wo³1¨¹× Ã]-wos¨(N¨ÎN±ÓúCDDDAI¢wo³±Öu]ºûÃG-CòP§å‹tðˉŒW6»ì„Ð'¥>ì„Ñž““¨ÐÝ{ÅV3 ßj X:w]ÌADDD–(â¾?8j½Ô”àHHäOçÕ›®á˜:±E‘ƒ<¡#Ã]ÆæÞÞ®¨‘ŸØO‰l_ßÝÛqž„¿êŸÏ:Ÿöî2^îè­ÖhìúïˆíáÔ»=¼æQW²««ÙhìNœŒIõú¬Û‡øý¸ÊDDD_D’™úêjîîm®lŒÛ¬æNàîm¾Œ¨"`¸«ÖV3 ˲,Û'.‡o©£6×%Y–åë¨í§˜Û`Ó­ÀgXûn$©oé¼ní»ŠîõY¯Ç$nFm7p[–åq;lW’Œ;4Ý’¬¨·Ëò­ÿŠØnJ½ÛMk¾Ú½‰êÛ1W*¦BŠ×'aB¥Üèucø§PŸä[M1•‰ˆˆ¶Ë£G=zÞM…ŒºžoäÃÜ÷GãnúÀà•ÚÁÖñØ;šûÙB)Kçukøõö› é’ÏbnÒÁû—ûV‹âê7] …!Ã÷&‚Yÿv§%ö¤–^·×o¾Ú½Ö‹kw¥z}öaÔV¬8êzŽÕõ} """¢/)Qb¹ØZN.¤a¨OýnŸH(¥"Ëãöú5ê5ýhŸ¸Ñëv÷Þ˜Xë–î~6±ÚA6z}XBSå[M°tÉòm\I4HDDD´]Ξ={öìÙðnÂ\ˆ¥óºµïrÄýÉÝÛ›ð^e¹ØZ5¨o½=4€¸ŸÚ–Ê„‚wï¾µ§žž»FcCîûƒ£kU´\lÅàO? "Q2:xß DÎw9Q“†ïõ­Ý‡4ºfóTz°Áëc©¬AüŸ –Ρq{}ò4ÑÖÄllD¦é– ƒ´Ügg7! Έ ÎØvƒ¼L8tz–®À¾«’æBæÊï8uÿvfØ Ø…!6aˆWäC™£|¬ýÜn øîcØ=3¾N–2öZð‡ÆBg.çœÐ+O!‚£wÐj÷<òc)Kk¬\‘}ãa…[6o» æ<ëeCÕ™Ûmi=ãÇ!gX+ðyÛÝÈà¶=^^¦óhˆpÐ _5­`kÂa.d"£…AuÒf÷Lò³çA6bË {¤OfnwÌlutZã@ó·{O”Š{ö·­ö`w#Cm1/Óy4`x• kÏÅ7¤Ææ44±…€`éºÅwéMÛf÷¼óÓnßLìf[í¥óÈÊš=†Ý¯Ê=zLbà ÍÛîF†–õxyù2é{4ƒÁ3l0n€ƒÁ09Fh Ãä¡1 “s¡Y—žì<ÆîÛbì¾=·²Ýx4ƒarŒÐ †É1Bc0&gvB3tÌ8ä÷SŽGÝãü~ª´Ý÷evBc0žLhüµÊêwÛ‡»vá®]øs g0fBCD?å§ñ†Üj8E£È@Á_jðmˆpË¡—õãƒásÓ6´=ôçW±R` ¬KRbiè=ßÛûÐiPŠ‹™Ë¸Ô¤}Û´çd‹Iû”MJ;å6nI7²ÐŸi؆˜ü4ô'_ùVPUe¡¡ iè 4ÔBã®»3^”ƒÁ05]¢Ô,DiØP@U=­a«„þ´s¡¹ÖÐps^DúÑ£’ç­« †¹±vÝBD.ój†Ñ,4-4R1ÒÐ &·åáÈÆŽá‘(‹Ì¨œ ßÛüx{O KAY,eèŠù™g'Ü„7añ”Î`˜#ùÓ É<˜3¡?[†N òUÁ]¹ØkˆYm29SŒ‡c˜+“ LA{èÏÉCyºk÷ÓÞpFp sàœÈÜF€& Nn0ŽážäO”n!$]¡¹Fp ·æVžJ_ŒÐÜ#8†[07‘ŒÐÜ#8†©˜£ÈFhîŠÃXÌi>¦ #43ÀŽáæêÅ”1B3#Œà†ò"¡™%Fp }x‘ŒÐÌ#8†&æ>Ó„šÀŽ!瑼˜2Fh#8Ÿ›GÀÍCbçóñÈ"¡yhê‚SþÎð<<ºÈFhž‚²¸/çyxÄIß6ŒÐ<fXõ<ƒSÆÍ“bçqy6‘u§Jµ„ë®áºkxš,m×]Ãõèq¯pSÂMþó¸W 3ªxž¯‹©×¯»†çß·,„·‚È X».6Áîéêç1…†½" 7øåŒ…·lÞ/K[²=x°ADÙ¶3ó¢Õþ:j AŸ•âÿòœ¾A|Æ]Ù+¾ñ-Âpƒ0Ü‚ãü‘;¬¡õéäÉPôtõ3;¡Þ®»‚Kx…W±,¿„¿:öXžs¬tíÀs×Ú†_êÕü!•ªø^~î ¾(ín“¥ïºÇ^J‹UáuÙ—ÿ6·Gù5Ïm ýBØ`,.þΩûÿò7Pÿú/.ì5-¨’ý®çÀ/õÊçÊ'ÏŸçWë77?Ïo‘ç²’—ß¹òo*_¯(û:{0þèÒ­ íRúMÏ™ü_P??©?8.1þ-Îy5V–~OA»3³lÀÉ‚Ò{È`“ö:Aøý Tx/@ÑcmÈTîŠR„ Ü€S ™O=˜F²p¹)zD¦—džDƒøá4x3Ýé o?ÿŽöÔ²Õ*±WH¶€_”qê]z'ó>(?“ÿ‚öú9Nú^V?)5G3Ó÷hö`ìá¯ÓáÅ2ïQlø•Â]ÁCf½véd`ÖØˆÞÀkO?À÷ÖÈÒ^Óãj 7ot*;žŸ#PÉVð¼uš6{g{øþ "(»Ï©Wãú€ «=n—}Ä"Ÿå‹bHÃ+x8Îß´Ú_!ÑJáT¤õšâ3îþ €ƒ¿þ{Žïâ0¹…ö_àºÇ›™ó-8€óåÃÔ*›Ø^×HäåmWòÄàlOG+ÃÌ>åÔ \?·/†Ìç¹Ô2»þ ®zKŸ*ò¸·‚ë¥3¹ü¸î²ÈQ)cPgþÑZ?¿æj OGW=†ÃWÅÕ e¤Ow6 n^þ»œÖ—ðF¬ŸQí™ÙÉ¢ðÖÚJs·>’œ7Å#Z߆/Í {?ª9ú­Ò÷¡>‡cöïÇÙ›yÄú™3³ôh ƒñrÎ3÷åfK\ÃC`ÖTµ3w‘¹%Fh £`§Š™*Fh £bLjLFh “ð£ÿ=S ª±1Bc˜”ÏýÏx1ç™Ýãí&Êñ:RìÚêÝæ7OµràyǶCž2k±ÌÎ]ó¦Ó~ ª´zý’x)wµ¿XÁžÒ,ëÇg[?-ö·ÿ~[™‰ëïã Í_hJñ:r„çW?;z9Y†¯ÅB óU¾Câʨ%|D‚tup@ΰ0tٯŠâbõ1'{X¼”;Û ˆëÓ´N(Ü„þôÞÿóßBÿÛ/³«Ÿ.ûËÇ|AþquÔÔõ÷€ñjf/4õx*Àƒíq!í^ßv túê~ûZ‘v”Z€UVçî¡UÛÚ—átÙŸ†HˆOOìɽíï$«ŸðOþáÏú®?2uþúÒ6\ºEýuÇ«™3šöx*Ú¯âê[”Ú‚ÆâèÞ{ËëC0艊ªÉ~@öv´»†cíí¯¬ª•­~ðówÈ?\pªvŒœ¿sö°Ô_œi_×߃ū™·Ðœ§‚´‘ûÖÉ‚I­Ðê4Ûn¹V3TÿûSòP¢[08̳Œ@›ý¥ Si`¨=D9Ê^KýƒââLH‡ýkï¿?s%ùp)ܤ?s˜Ñ9`„Æðéhš“1»7L‹:>]¿å¥ †ñ0Bcø4 yº4‹\O„:>—<Â6éñ0Bcxz®}OÆÎõ¡1<5c¾ŒgçrŒÐž–©Þø5‚33lxJn±¬À<¡êÃÓqëµKæ U7fèdx*îµ@Ò §Îc<ÃÓ0‡UØf8ÕŒÃS0‘)c†SUÌÐÉððÌMdrÌpêˆñhžá­ªÛÑhž7ýÆ'à"smùšá”šÇG-!(ªîXH8}ƒ¨ïµúDo‰ßÝ“±|?ópê“ å¯Ò½™Ý5\Ï_îµ”ßËŽ¹+ø¥}–µHÏóü%¼âüãþÉÊ_ézÂ:î]§+ýÜ>Q²ÏóWðòskaƒìËœî߬ť^}´Ï[B‰å1? KÇÝ5<¿~šýž“•î7í-³ó—P*+ÇRžM_;ðÜ5„¶ñ+$ÅoÊ{çuà JÔÒÏÎwÝc}çuê6”ñååÛ¼·ögõn>¥Ð(ÿŠí†›ô#¨´ö.³cáL/‹†L<ÝfUk€éo$- ²›É ¾/~öŠPÆ öŠ0ˆ:Ó-^ (BÙ'Ù¡¥AÛÐ:>îK^† mC] 4Âs@|›•M­ìc~Þ|yÞÃpƒ€ |§tþ ŸnÈ”ç@#† Þ@z’ðý´%- ²28›>Eø[|§2<þ¦¼5,“„2†/:† Ò¿I§ç2ñ]ᥤÿŽ!óú™¸|ÏçÝ|ÂÉ`JǬ´]*Åa©×Ò_!üUшˆ€ú^ꌿ‚e_2v¨Œá‰ï@žÍÓë…X€Éþé@ÞžÈDz~ Ýè§¶¥Ä ZB·ÿ í@!F—íÁy|¼¡´¥lw}r=€i'ÉJ†b0ZAé<û›Sf‹ÁÐÔ/ýš—¼î¬ß•öÞŽÅÀ"0Ïâ¯` (!8)‹kÊw™‡ïk¡é§½pzЂV<ß9zD÷„ zC0•-gÒoâwÎOX`àÁýö!/¥žUp>áÐ)£oðóù:›ðÒ^Œ`”‰€r ”Õ’V;Ä#@8©7ÃËÞLwúÂ[ÁÏ¿£=@Ñ¡á"pfXµµz3Ís  öÑCÓDe)#ÞɼRé|íÔžÒ¤^$ëåY5§*2‹Ô› Åž»6Å"0å@ˆÔ›iMR¾-<ûÜͧôh˜ÜBû/pÝãÍÌùœ@ÉVð¼Ôu'öÎöðýD°S«lRt _n ±„ëÛlxØV\uÎVðt„°öÄâ\úé¼ÁP/pýܾRžNHæî»R8GÐ è|ˆÒH{Ã(ŒÕÙµk“¡Lîÿ®»,Ê(‚”éð„»t28K¢7ð Á†ï}ƒàú„ €ZÂ[H¤“¸¾Ü@ÖÓDZ¥áãøÞ:õ)† ^³c6üâæ¶áŠÜæê Ã6ofšò=dzz7_Â0L¦¼ÀgÞµ„«b„5!RþŠÕo® /!V(ÏwÜŽIß“QKx::Ÿ¯”o·¸wnõ²ãèC§|&ý3ͨßö ~2Tq ô[æ¡]†(=^:†|"‘)^AðíìÉÔ™OT¾}¸ÕPjíºÅg*ŒGc˜%s]Vp¦¼‡Ö£1®ÅˆL•gxçÆaV‘iæÑŸJ¡1Ì#2Ý<ªØ¡1Ì#2ýyD±1Bc¸;Fd†óhbc„¦'ñHÊ«›ÝUå-ã2Z9ð¼ãÊíñâÃt]¿´j¹quõÄ×/VHçŸÚÛ±µã_ðÞëíÙÞ ¼þéÛ»=ò7ƒx?$6FhºhˆG"<ç¸:9ØÔKeõ5¾/ô2_¥DƒÖ6ž£ëúZ¼@ .Vs²[ÅpŠëHW­««_O_ñÏŽ'øÒ|üZz^¿éxgþfïçQÄæS.A‚6­|ǃíñÚƒ1TEj'}É­qÙÀõt]Ÿøöt%ò ¯ß—¹™úäñ7ßfãu —’‹ÍœßW3ÍYÎÄ#ÉÑ|WßÕ4ÕàQSùÙM×XÅÛ½¢ë5û)®_ øušK-ñ%\5Eùt\¿óxN[þ®ŒG36s÷lŒÐœãl<¤Ð·²ƒ¥¯õZ}ƒfÛbؤÕcú–ë§ìÓàQÁ Î1:Þ-®_ Ú•ÏÚWV€¯½üþÌñ«é¸~çñ®üH\ZÅ ò90g±1Bs!Z,á‰xÐ2¿@o%/b?zï×yýÂŽ4pÔ¸£äÞײÞ?mjÃ¥ÒñIèJ¿áø ü͈¹Ššs4Æ#Iãá d!!‘®*OßãÛ1¦LS<–Üu÷‡öäÝׯij%¾A×ãÙL|ýr<%(:"Óv|ûÚ¯ßïxwþRºâÑÜ9Š™ >KC<ýJYÐX±N€Éòy{pù ß_Áõ‘Å“y­¸ßJÙéïøÀ ã×çr!Žñlˆ½"¨‡9˜òúA5ž ±7üúƒÂ“i:>š}=Ò?{¼Wý¢G<šû2· b³z»‹–x$×aAx+(¶½KŒ—[_øÓ¥{—O7·ˆG3]÷ŸY½=šâ‘\‹þ ¥cð{ÝD7¼þE ùÞåÓÅâÑŒÁ\†QÆ£1LÆ\ß“ùlœ»Gc0Fa^Ã$of^Ü[lŒÐFLjŒ¡Žè‘™/÷ôjŒÐFÈŒ¡ #4†Q0"óÜË«iíxÇý™–3¼a˜-Fd>–ðŽûA®Ï8¡Yh,ßf6!ÂM¾ðqÁ’ƒÁ0C®öj´À‹b؆!6a€7í£Ëé9t"4í1o0oÆök¾šUî9‚€·v¡AàÛmoƒßûE Ãý0"óœÛ ·±~‰c+V® „· @t‘ÐØ>\‡lB4ÄÊ……hZWص¼ÀÑsbDæ±É‡O ZÄäÊÇZ¶aˆ=4ÏÅ’‡x=³ö«q褳,¬G Ê6†#2ŸKkìC:È!DœÁVçõ¡Qhè@ж*>)[ºa†OÞ–RÈC«ÙJa߬uõ¶ZºÇ'M±DxÎ/:ƒY½ý\¡yܵ‹äËC'¶ïŸ41‰MG`&ÂÐ#2ÏÅ5B3óf°¡Fd ×`„ÆÐ‰õ¡1œÅˆŒa ŒÐ †É1BchÅx3†±0BchĈŒaLŒÐô@x«êv+ÚçM°—öX”6°¼çvvî$Ç4üûæõ¤üaAù«ÉìÞºH;ý¬à—Ëñšòš’m®»†;“vúi…FxKôZT¡–Uw$¤œ¾AÌuU{En.Ú|míÿ=|â[„áa¸M·÷ù†º¦ü•ÿAQfß’YðÜžéõ¸~ºßv ™¥†;~9ŠÝåÛçúW‘Ù&Ù<Ø "Ìáþûrà{åÞ¢ìF;ð²ïóŠÕbU¨sJº?rÑ«xNQiùoóX<ʯõaCýí„á¦çE¯§9LÄÔè¯þª¸I‰PuïXæ9Pü ”Å" ô&­ eb0ZAéhÜM×õ"¯Æƒ1ˆ–i/7ðšÄ#·„—m"OCʼ‘ØP:†d%·œbȰܫw”ß9´¥lw];ðWøm"oïZä›ÜïÁäîx#´žC`}ìïmëiùkÝÑ7R¦—Ј¡¼5Þ黃ê)õ8R²2èsþ-Úç¹û£}ʾ$pÜʧ¹™G£Å*ëumøž]šØT%`Î!,„À|÷a¾ˆ2÷‚-$|¿êö¶;J}Êï tÑÛÑÛ7HðaøÇ(wªyú<@‹’ëßp~úy­œ?Õ$±¸:ŒËPj¢,p- ´ 7H²¡ÄWh: ìÊÇvXOÎðû£¸ÿ²úCr[æöC'½€¦XÖ(´r TÃD#‹À”!Rµ.1E`Ú©=J{QVjIZ[Eú^cÀãE1æÖb Ï]žÞYãl¾ilh½?ãN[ÙütÒOx+øyžiÐÑõb0ªN¾êlLí+ô/¿Vb0²áõœ×!ö ÉðKù;Îï°¿àÂò§NåúJ¬àëÀØJU‡~½¯ =Ûg÷õÛÛ€öû£“ê?ÿO ?ýÑûŒQÃ0™òƒéÿ‘$L¦ßü#’Hb»DòøHxP;_¾'À{"OÒýžpVJƒvÕß?Fé1Ð{"ù{ú;þ½øM ßBé7õkgNG»+Ÿ`—í’ 5ï?†¤Ñ~Nï +Ùzýjþ@ —%ÛÏ–_~Ýú§lÇ÷DÖÒ'ö#Í‹|/}¿;ÚCÕ¿[Ïïaÿõå_«V«‡`—PQßÖжÎ]ŸS¹Üêçö+ß³í³WþÛÛÏÙû£\µO^ŽH~QÔ_LzÿçŸy‡‰PKx:ºê1âÕ¨%\W'”‘>ÉPlÀ$Þ yˆ—òÚÊ_ÔÞm)æ’æ4Ä™˜ ïò=y«60K¡Q~ÙÍÞƒÛq'y"¼ K6hžÈ™¼£p !2'åÿɹæþ¨ßŸZh ÓòH"c¦{ñVmáÓ¾l0n‡šO†ñf>'÷Y¡ùD‘1Ü‹Ñß 6ÆÍ#2Ÿ—.o¦¼SåTmdt¡©gÈÁp?ú ™ÌdpONã•do[zé*×Kb†\{þÙ´µ •¥ß”öi<”áqOÊöÿC÷ŽÜ˜ìÚêñfÛ´r2†ÇE™²ü+ óOííÛ®ã'ñp®žGGþFŠwtïy™2/4MñbÔ>"AºN% gÐêæ«Ïï€(㯕PUª+{¿°X²?ÁWü^þ£Ú/<ç¸:9ØÔËIúZ,!ô2_e>䣉Ë@·¥iV×ñtõýquº»}Í=ÞÑ<¼Ð4Å‹QjVY=¼‡Vý{kÏ¿–4ðRٞàE¥SÛσÒ"CÚŸ†ÑЄŽ!yÜ;´B™{—/¨ZùÚº>ôÉßuñŽæåÍ/4gâÅÔé /0õù_×¢xÀ¢¹#• à©ì×|u\И~gAcq^yË‹âöT¯3²ýå—Mö9N<Ä*úzËLT¯\úPÏßñŽæ&2À£ ÍÙx1Ïn\yÜÍ7ïO™´ß·ÀkÃ"­Ðê4ÛÃ&­æ»@|ê˜kQ^Þu\/¾El¯àd]/¤'Ä ²DõK™£È.4­4TPCT¶éÎ Júyl%–ÊÂÿ)kmdûµX‡“aÞñzo¥¹¥ýÀÞùÆåOÐ9©v\ »2$$Ô PÓäo®"<ºÐ´Ä‹IcÜ–bÆŠ&¯ =ÞG¯ós×ú‚'½Ñ_Ï ›Úíÿ ¿™Ðþ4®@Rå f)Äwi@óüækŒÇr¿òÞªÏÆ*Ýè]ljªs2Z/¼ê+ó×ï¨ÊœE¸W(ÏÑHÃi*…j¯O8–pÝ´±ß"8¹š¦ IDAT[Ïõ`Ýç+e#t6|XS]}k§!3é a-æk:lÚ¶¤Òl>/Ã…3ýú+”² ‘‡úLa²ü£=¸|…ï¯àúHCyÊ×ÚÍx¿òçÁð_àºË4}ö† †¢ë8ñÈë[ÙñW²>Gs]þÒgýÂÎ]d€gX½Ý¯dZ,oŶ÷•S£ÿÛ¿ó´¿?n7}ã]{™ÕÛ}a¯àõЉS£¿¦Á®µ‘ûçv ô[õI^àÉä<¾Gc`Ö2}&òe=cÜW·j7>GcŒÈ|&µã~ü¡“ÁðIxT‘ŒÐ<<Æ›ù<²ÈfèôБy~Æœ¹'Fh#2ÏÏ£{1eŒÐ 3ãY¼˜2FhãͳÀä˜-qgŽñf›G&™-q?9Fd—GòbL<ƒáÁx$¹%FhfŠñfG&Ý #43ĈÌca¼˜nŒÐ b¦?Fhf†ñfæ˜áÜlõ¶ë® tº«a¾yº'ªÛˆ*ÿô»Sìt@Ï™ÎØ„·ªmïbAù¥|ùãî3-¼õqÃyw ×]Á/—SiCúîò»1%ÛܬÞ.-›r»nuw̳hÞ×Íq×n1cDf7š0Ü‚Sº+_nÁ(†¬íËÃä¦Ç†`1dزßóïtëÒFÔ‚¢Ê‚Ê ¨Ø^2 ^ÃV¨]×ÿ]‹7“îoCÏï@úå(vìaاìÎ_ˆ½½Él“llQÃö±=Є> (Ê`[Ù\í¬ýÓ7ˆ+28w™¬þFâ†ñh²½ˆ};»ìþØàºzdmÃ÷Îõd¥ãÞJ,«iUίyÚç®!tæ)eŸ¶ÞR¬¼O²vÒ}¨K[³{EÀÂ*¼‘r¾”ìÝË×ÿ’Îë§ìÁ§Å·’î—]äßsŽr`þOÈÎÏ=V äµöõ:ÏÕ²òò¾Ak;»V)ížö3þ-†{5©ók°Ÿ'—µ/íåŸ{çËìü%”Z¦y, Ç•í7oož° DCú7àvs4ú+4íÁôZº´izÚëe›ÅŸœhÃ÷m0¹$ ¦¼ÀÇñÆž“zJlè´R‰·KÂ6…-6|ß”@‚0‚ð–  ËS²¡u\Ýç[[}œü’èh€Ë7(q¨xLn ý4‚0¿q‡¿þqOOÍ‚RÉ΄÷È-Âü÷Ú†ï9   Ê!<}ôòˆïÀUš~/ûÎÕÒò µÏ‚zš}í§H;P:꽟5ÎÃo\Ú¾p¾üeðϳAÁZÂól±*ö”¿¶ý2¹A¨–pýA¯ Ø:ªë¹™Ðhm,)JoÎF” Í"°¢qìÁx òó„(ÄXv#Sºñ»Ò¥ãʆp×µ„c(`Ø¥Ð@Åõ׺Ã)¤L/¡Cyk¼!>Ò-]³„Ö®‹7zðz&¡´ÇJÙƒÉ]&¼]6;P!(ÿ–b0Zõ¾é:a˜ç@ñ¬¡+ŠEúœ;fýœ%Ñ2½¹Îäùd¢÷ÚöÕUþÙßœ2»Xœz«Ô3ý%@|Wêð∰r3¡Ê±W0æÀW‹1[Ðy袷Ӟp¬äY ˆt(XF©(kœD (mCã ’l(‘zt„ÒS&¯ëJÓÌMÜž°À8 ÀƒóóEZ¬ h ɦ­Ÿ¾\ü$iâö5yú7âfs4ù#RX ê9qÉâÔ *Ü< JØÇ1*E`°£Ú‚v)Œlx•ïšX®¤Kxîòt<Ÿ‰Cå{ŠÀáTÒWb_ÇÅ&팠… Í>ÀØJÙ©@ ½þ%P¦êS2mCé¸ä%ö¹~6ÇÖ6ÉÍ"0å@ˆÔ›é/ˆ}ë§‹.ûmh½Õºñ㓤ï`_’Óü]Û¾z—#¶ß{†a2å ÒÿÓ.ûîGÂð‘ð ,ý$8ù¼'2O'ø‘0Ê¿ÿH˜ÌÎ)§™§÷Dò÷„ø÷’ßÉ>ŽiÓGBìG”ì ä{B(¥4ç‡S’0Yÿþ{ÂKéÛUÒƒ]BEž¿ùO€^×çT.—rÙõ,¿º}´+ë›ÿü:ï'çù~z\¾7Ø–~Žåx¾~ªùÏ>ìÇ0ûƒ]Bt¬dÿõËßµí«­üKuÇ~eEü{ðR]Ó~›ÛG^öå68åçK†É”BvõJ¬ °»êqo{âK¸*F(«‰µw[òyÖnÃÓ½œ§–ðt4M¹_‰ò×PlõO¯ÙnÒöucnÕŸFh„·.ÜSboòÂ÷5z]kÈíU©Ï$2Ê/?N݃וÍèhî?ÀßüùÅmñ–íë–¡yržIhæŒY.pž[µC³Öé‘™#0óÂÍ1"3-F`æ‰ÃS`fÞ¡¹!Æ›#0ÃCb汸áêíçå4>Möv¦—®jö„5ª7£µ®ÂõšW»ŸÆ¯;NMm5}=íbEwþo¥°»váþÝ_€¾$À—¤9ýŽëw–ÏHñk GŒÐ\KC|¨%|D‚4nJ@~5â%‰b0þZ MQ¥»æº85MÏIW3‡„Á¤^NÃJdqhÒÏõk´*A§¶¼;ý³Ç;Êg„ø5†*fèt%BØ`¼ºêZ©X©ñ®ýÿ Í~h†qáAÝžCç"ÇaéoÐ> e0ZêU¦"õ)Æß |š=Ç‹y÷ft&ïyòÏsÓŸ¦ÆÚu± 8ÐNb*´Eñt«¾µ_”CxzËÒ¢Ø~t†ÍìJ¿ïõÛʇ m¶ûY»nñ™ ³Så54ħ™ZÙ ¶íþáE‰;ð} -ñk —a<š«HÝë<¶kEø—âwø‚pÓ‚ZkVÊF™nøquµ´ W 7„µ(lç†M__…R4Véu3˜<þ›;Àë.¤«ƒÒ°Å]»À¿KÒëÿó¿výéw/²rnX©ÐÏkúcVo_KK|šóïÍXÞ ŠmïÓä>×?‘¾ß9ÿÝäñkäd³èóàVo«›¡Óµ°WðZ¨ÆÎÊÓ_Óàä÷ºÉn|ý“'H÷ÎÚÐo§OÒ c<š 0kšb0ZAéhÜMØõ"¯Æƒ1ˆ–i/7ðšÄ#·„'²¿)†”Q6ÉûØ_ÿÏùûÒ 1dXîÕ¿Bø«öò;›'JÙîú$? @ÞÞµXÁ°“»ãÐy¾ ¥cHVjÄuû{ÛzZþZwìÚL˜^B#†òÖxC|¤[ÔãHÉÊ Ïù·hŸçîÜŒ¶ú› 7Û{›JŠ_i”€=8„°X³Ø—y¼'M1dî[èÿZÁÿg‘yŒÎ eløžÝQ~g ˆÞŽÞFñyE¹-æéò-J®Ïó§š<&W‡J-@”½ÉA (mCã ’l(ñšûƒ²Ç±VÆ“Ó}´ÖßL¸™Ð°¬Qhå@¨†q"‹À”!Rµ.1E`Ú©=J{QVjIZ[Eú^ãkÌ‹bÌ­Åž»<½9²ÆÙ|ÓØÐzƶ²1øé¤ŸðVð••Îyýò?Cð÷èü‹ìh FÕÉ;͉ø i/O‡îòk%#^Ïyb¯l¿(îó;ì/¸°ü)‡S¹¾+ø:Ï chaC³0v€Rµ¡Cßë_BÏöÙ}ýöö ýþ¨›sR3! ÃdʤÿG’IBl—Hþ‘ j¿—ï ðžÈ“t¾'œ}Ó ]õ7Á„Qz ôžHþžþŽ/~È÷„PúMýÚÙ‡S’0& P=ì¢]´æõGÂ4Ú_ü¯ ~ú›ÂþÓëWóúH¸,ÙÎ?Δ_~Ýú§lÇ÷DÖÒ'ö#Í‹|/}¿;ÚCÕ¿[Ïïaÿ%å¶þY­‚]BEy|OXCÛ:w}Når«ŸÛ¯|϶Ï^ùoo?gïÎú;oÿI;Ÿèó%éÈÓöB-áéhÔI«Á¨%\#QP6) ÅLâÁ¼hwYù‡µÇœJÔÞm)æ"æ4Ä™˜ î[½ˆ: ¡Q~ÙÍÞƒÛq'y"¼¾é¯ø“¼´Ïdõ÷¹á­yß60'¦¼?>•ÐÌk ÿókø¼ÜJhLà«‘0^ŒÁÐŽšCÞŒÁК 1c0ôÇM‰>ÞŒƒa8FhzbÆ`¸œ›½<„Óx$vmõríÍØb…kþi~»R+žw\ÙÛ÷ÍPwí"øÓwÐϸîjô˜$ZÛPb Ïk^]{/eø*\¥?…ýõsO¦þÖj×ùÝLš¿®öÕÙþºòßÄsùÓ¼íùÌOhâ‘Ï9®Ž v õrºz9[¡Ú´H+Jèd¾ ºöNLÓ°©ˆ óÛwøˆé:˜€œA«§» ŠÁøk%B•êÊßÁ/l©å¤öwÕOºzý¸º[֮߫~Ï1qþt¶¯sÇ»òßIWþ(§o7‹—t ³š¦x0<(-r£}5Œ@´¡cH÷Zú_<¥Ô¬²:y­n·–$ ÌtD©Ã E§SÛß«~¨jo¾6­÷ùg¸wýôâLþ»è“¿ëâ%MÏÌæhâ‘ÔÑ|CµïÕEŒeŠ!åëqQ›¶ ‘ßRúôxîÍ š‡é _0Ú¢õìOg"ûê‡xx¹Ëga2Z„²­~Û1rþε¯Žãƒòß—zþèÒÎø¡SFb^ÍÙx0H¡o×—”‚J¥—ö¥Õ¾Z/ Õ7h¶-†MZUÕÿQöFÒ+“gB[ýèÀ·‚ ‚àœ¬æbmçß›ŽöÕy¼oþ¯"‘5 *àm™—МA‹%€_üðo•y1ùÀú\c ×Mñ-‚ÚÝ®”^§õÉQ;ÕÕ¹všOzCX‹ ››¶-©ÜÉþõC|ò_àúéÍBìA>GÑãü”ûÕOWûê:~6ÿ#å/ 64|éí}õvÓ†qƒæ=Z⑌A}˜4ÞÊU Â[A±í}cé\Ì£Ûßųçï²xIÀé.•S­äže˜ˆ)â‘4Ù1šÐhžg7½_ñ<ºý]|†üùýã%•1ñhF¼>pêUÝs‹[ƒa.˜x4#po‘3 )O)4f¤Á0/žNhúx1fØd0Ü–y½Gs%f¨d0Ì“§ðhÌPÉ`˜7/4C½3l2nÏCÌPÉ`x Vh.ãÍ ÷áá†Nf>Æ`x<JhÌPÉ`xLfèt­È˜a“Áp?BhŒ'c0<6³#2Ãã3k¡Kd̰É`¸/³ãÉ ÏÃ,…ƈŒÁð\ÌNhÆ3l2îϬ„Æx2Ãs2¡1"c0Àƒ4*» Φß#ÿLnÊZ¼H½ÿü3£ M¸ +Ÿ‚ÒÍyvXÙÐ,+nª=Þv ƒ³¬ÑQmãvíàW6þ¨äѸÞJYÃ]I½€*ÛŒjÝQdiÙ\‹ç@ÂÒq)O}(÷H/Ð¥û¼ÍTm¨ŠÁè²›ªUÅ_9P,ª o^Nj{o!ëªßÜùZ”'c§ÂßM "k€—ØÓ>í@)ûèmÕÛ_Ÿú¡œ²Ž…¥í¦èdºÒñ€t¿íü37|5ùS&:àñü>üï¦IžÅ€X¨öÆJ-@Yã#Z@iodC‰Ô£¶/òesS·aÎOX`àAµ<ò^«%|á@±¹æedè¢7MÞÝ#¤?7›£!ê9éÇbrJ½¯%ìã”"0ØÇ‰QmA»”@ŒŸð¼ÊwM,ŠÞL‹%Ú•ŽõÍ~÷“s‹|?=.ßKå¾;ÚCùß}ìo¯ß€óÅdõzùozå/Ø%DµzëÿvûòüžomõS*ö£ÈñïE¾Ó¶xMû®–z¿L«a&_Â0L¦²òPiªa“+ìðýøo«%\#”UD‰Ú»-؃É$»ü‘óá–ðttÕcö^—)Õïhiúk(6`ü\ZØw+nõöüÍ„fl‘Þºp?‰½AÊ„i Nx+@nûMÆ~”_~\ºÆ/›¶úíÀó\žæ¤öÝ#4`Ö6 øÕ=s÷µNƒáù¹™Ð˜…“Ãçåi<3l2æËÓÁ`˜/Fh Ãä<…ÐŒ=l:?S[M^_õZ^I|æmZ­xŪßñâ¡hmC‰%<¯yEîi|›±Wîv”ÏIüžê[­]ö_MWýtï,?ߦ“§šQiˆ?#<ç¸Ú6ØÔËiX…lErú9]×£ÅB óUéW¼ÃQ‡(㯕ÐUª+yÇ~±¬«|´x¢Ýq%19•ãÝö@Gýœ?ÞQ~Ÿ ¾ÍµÜ|QåÜÂ㯕ïx°=þA{0ˆ!‰jBÇrÂé <¨æG©ÃÉ"ÈëÒïQ>µµnZ[¨/L+}Êñ7ßfùâÞÔ¦BCü™:Ú¯Ž ( Ê!,½e5$ƒ¶ ±¨Kº—Ÿ­(Ч[IÝP>Ä#@¬Ò¡‘·LE÷֯럫Ÿ>ÇsÚÊïŠø6Ÿ‡šQçgâÏT;ð} ¼>ìÉ‚ ®·ÜWVôj½€Vß Ù¶6iuŸ1½n\I>Vâ-å£ß"6‚Wp²n{CvÔOçñíåwa|›OÂà ͭÐb O²x¾ÐTEo¥±ýþN½Ÿ¥ç=¶ 9W>JØ•p D€Rw ªÞT?½ŽOW~ÏŽš2Mñg²ø®YK¤ÑãÊ“™Â[ÕâÓ8P¥ˆ‚Äwi€nuŒ){$wÝûÆm¹ýµ}Øtñõ»Ë‡(Ÿ“ÉÌЋáóW”OWýt/8W~ñm>7=<þÛÀ1ˆ–P Ç^K…R4VpK3œLÿ̓à¿Àu—ÒÕ¼Aeâw._áû+¸>Š!åkåfSÊNwÁ“—êjj;µ“ÞÖ¢°¥nÿ¶~úu×ïQ>Äw ÿ®ŸŠ ±W²ÿ·‡ý×”OWýt×_–Õ3å½€ÎBpN¹i<š±™dÙAKü™i± ¼ë·•Èó]¿‹¹Û7n|›[bVoß ö ^µ85ú+”ŽÁïuÝûú]ÌÞ>B¿>‰4S›mø^Ú~iPþ Ax^ֹЄHnk^ßGÿ~…yˆ}¸Ñ³–› MyÏ*B9P,BÚIoÒÊP&£Uå¦g¯#:× hÍ:ƒh™ör…†xòŽâB—nrJǬä–S –{õ¯þªw 0A;Pʆ8é­b( høZ¬à ؃ÉÝQÄ:Ïïao[OË_ë'›"0½„F å­!ð† øH·ÌTOå=+ƒ>ç÷lŸWA‚àÏ[ÃÅ<Øž¤Ëd©ãÑ6|!·à¸}Ð9tÒŽÏ{¦iÎ!,„ÀEû*çó6îrn“)1d¡ƒ-$;C·—¨ ß³Ks(›êMÝ@ôVœ{üT{×<ý@ EɵîyþTsÄâê0.C©ˆÒr Z@iodC‰¯ÐtØ”çh¶ÃÊøhmCc"@ëŽù3ŠÁÙ¡ßxXÂêÇFõç…Æð¿Md=‹À”!Ro¦hÄi§ö(íEY©%å…üvúÕOÐßÊcX¯Åž»<½9²ÆÙœCZ§ÝŒ•ÁO'Õ„·‚¯²ÆA{€Êc茪“¯:›ñÒ^ž`ÙM¥•¡†LÔÆ`dÃë9¯Cì’-àûùï»Îï°¿àÂò§NåúJ¬àëôfÆІf`ì¥ìT *ô¸þ%ôlŸÝ×oo?Z¬à @[AˆÕù§_ÚÎ:íËì»-ðÒCda&ÍŸ á”°wJh´ü¦ûƒéÿñ‘ð v\¾'À{"OÎûžpö‘I$ Ñ®ú›àGÂ(=zO$Oÿý›_¿ ä{B(ý¦~íìÃ)I˜l8ì¢]´æíGÂ4ÚÏé=a%ûO¯_Íè#áòûÑv^Ê;Û%’”Ê/¿nýS¶ã{"kéû‘æE¾—¾ßí¡êß­ç÷°ÿúò¯Õ?«ÕC°K¨(ï kh[ç®Ï©\nõsû•ïÙöÙ+ÿÍí§\÷LVë‹ø÷jý•>Ä¿·—ßûàÂ{;HvDÉ;£äƒwë×TÄÊñàCB‡‰ jîÚû…GSÆx7ÃíùtB¤bc‚j ·c–B#¼þ¼ò][Í\{K²´âÕmyÛ²‰²w£Å2][âv¼…y ]öuÚoA‰eñ›Kâ³Lš¿ê§ÆžWþ:ì?oÓÇF+'³1]i>$gó7÷øI˜£ÐdñIþ¬ô•ð _ûì@êåtÙ}C¤i]Î9ÂMˆð·ïð¾ýWÐûa¸E@Nÿeý}é²ïÌq-^ #ÈŽs²‡ÅQKøˆ›Iòwuý¨%|gö¥ñUôû&Î_§ý•uSÍql´XBèdG&ˆú¯ÍêÊßÜã'a†B#„ŸÔT&¨xPZôFûæ°W Ôüýþ8œ¢=´fBˆo+ñY†¢Ô¬²ÚzÜü][?Z/Àxt\WF€ý9M¿.x-„R‡ê"aí@è’ÇgÖεÓ'×ÅOšž™ MŸä§s?Ñ|u\`WPqxEhÃpÂ] èÿû_]–@]öuÚ ú$Î,ÛèMW8†‹Ó^?D(ád‹ü,(á@iëºpcç¯oûÒÅUG[ÐX‡—c„Þ¬ç mÏ6¤ç¼„&‹Oò‡­Çø¾^w;)*†a¸A(÷C£Ò•·´çã=겯—ý{ð ;ÁàÌ/–-pyý°WÌ.æ ÄÉJã;3 }醕äZ/ Õ7h¶-†MZí}Ä ²î*¢óš3h±„''nj#t êÑ*ˆ•§S£>¡ê²ïÜqÚƒóPCb–5çoL®­Ÿrü@ìD§›>õ´›ëÇ‚R‡–ˆo%/t?Ðû¸qþ&`^B“Å'ù¿*_¦ñO"2 )V•É0á­jñK¨“Šhÿ‘ÆÌ-Å Õ^)Ÿ0vÝ5Ü_ÿzp¶ºìës¼ˆo J|ƒ1é—ÙÐÀê ŽS?ÇûÈ‚ò¯‡½Wþú¶/úëé° Y¨Z|;Öac|˜+ó×?é¾Ü'”g+1þK,ñ¿Èœ¥¿B) yèÉ&ÿæÁð_àºK±7ò4R+c ×Mñ-‚ZkQʰÿç9øíâ.û:Ë„xë[Ùñ×éò7tÒyŒúQ|ÿ[Ö“bpÙ´šÿNùëcF:lÚž|ìÁå+|×GúT¾Öž:]—¿4`ÚÐp¦·cvKÖîïð…ýã“ø$÷Å‚ðVPl[¸¿Ïµ2ü4ÏųçïòøIŸx ¯Àë¡ïþš¿.5ÒÉæoîACþžŠ§Ï_?éäIߌ˜¡Gó˜Ûß>—‡cø,Üê~›ÙÍãRŽìWþÛ`0¡#8Ã)³šG65aÇ`82+¡yFŒà Fhn†ÃgÆÍ1‚cøŒ¡¹Fp Ÿ #4wÆŽá30ºÐ\ú–ì3=qº#8†{QÞwª{pt¡©ß ÿzþ1‚c¸5æÍàOŒÃ3a„fæÁ1<Fh#8†GÆ̓aÇðˆÌBh>û§K0‚cx$f!4†Ë1‚cxŒÐ< uÁ)g0Ü#4OFY\Œ—c˜ Fhž3¬2Ì#4Ÿ#8†{c„æaÇp/nºÝŠò×'{FŸ>Ú¶Óû<ç–¦UÞª¶Ý‹寊MÞ=Ü}“E¾ù{ñYÁ/—Siƒù1öÜu«˜’mÅgŒMìo‰vàycï…m(sS¡arÓc¯2ì±ó@„wºÕh#j AQeÇ?å¿@PTì -™¯aëÒK¯ŸîWCÉï@úå(vì5Ý“úŠ}‰š®?Šà°W|&7ǽ³9àûÃ:Š®úé]—@8}ƒ˜ì÷gÒòëÁÍ„æl¬mø^©7?)‘Òqo %–Õ´*ç×<íÀs×:ó”²Ïé5R„°ÁÊûk'ÝWº´•*±W|!¬Â)çKù¹­Îàë§ìÁ§»·’î]äßsŽªÇõë‚SìüâœÂƒ©{}U¨²7õöõ*¿¶ôsïx™µ%”Z¦ù©ÝxŒ¿A‹K½š+ÚçöØþ§âfs4a¸I7?9ò|ß“HÒaÊ |olá9 ¾EÈö€N+…øq{S!lð`™Ÿ mø¾)#€"aá-AA—§dCë¬ü#môqòK¢ .ß Ä¡âm0¹ôWÐ<®ŸcA)€dçÂ{äaþ{mÃ÷Pä¿ñÑ8…Àó²MîiÂTÛ[ùkåi”ëï ûzØ.}¼ÁólP°A –ð|@@¬ ŽuMv t4xÿê«Úçö×þ§c[âþÍ"°¢r÷`<>n€®(Äà,»‘©¶Q»v ”]ôºE¯¢¬á®¢^¤Í—¿ÒED˜¶¡‘͵x4,(—òÔ‡róÍwý¼v jC=P FöUó$/ç—/‚Ú_Ãõl°`{²Çsyè´Ÿy<ÙWÐ'}ŠÁ ÀÒz¡“²Ad ð"K׿¦}^kÿ˜íBÿ©@ô† ˆ¦IžÅ€X¨Î(µe‹h¥mh¼A’ %M ë§™›º–âIÕÿ÷ïü!ˆZ[™/¢œeû§ôžŽ‰ÛçäéÄ <š¿)§Ô»YPÂ>Ž1)ƒ}œÐ„°Kç§êïU¾kbQôVZ,á¹ËÓñx&•ï)‡SI_‰|›ª3v€64ûc(e§5ôú—@˜vªó%Ún𨺮oeÕ餡+àdÁÏ ÿöŸ@ýëÕù§_Ú†Èf_ËñÞéwaCë}ƒ§“ÓR>×¶Ï«í±ýOI†É”$Hÿ¤öyOd& „Á„QþýGÂä„!I@»,ÒqzO$Oˆ/]ç{"ÙÇ1múHˆýH‚’|O¥4‚f{9% “õï¿'¼”>±]%í0Ø%„„éoYñï~×çT.—ú¹YY´”_£}´+ë›ÿü:ï•s~L—É0 åûцßü¢úwéS¯Ÿkí;¼-ýRÙ±…­Ä¿ù*ê:Ø%DµzíQ>ã´Ïkí¿¼ý'À¤÷þù’ŠÀt¸k·õŰKÃC(±‚ÀîªÇ½í‰/᪡¬z$JÔÞmÁLî Ù6<ϲˆSùk(¶9™{º(­)ÛçÈüÿí½’«Ìv†ß-6fJU£;pàde¶3.£9<$ÎíŒÌû2öMœ*9ñ©Z™Oà @µõi†Í–Æ?„?BÒz¾šúö Ð,šæíÕ ½ÖT!ZFh´û^¸—¤>ñhÃí®€Ú[¡‡ýâ˜ìmÎímjÊö9$"4ÂÃò°‚ó‚Lõ >þ['avÈš*¡Ž0"8BÎl2U Ï‹μ‘L•ÂS!áFç‰ÌÑO‰„}=îöeðœß8Æ£©­.¯[Zá¼>óum/ÚÊo=¿£—Å>CÇÓéS?險ŸXÿËÿ•V·}åz%-õs¨e KýK<›‹Ì` ÂÌhˆG£]ð·Ù‚Áy;]fŸÅŒIFX³ÔVþ…í¬ß ‘ ̶ûdŸŠAúÖë7¨¿û[DÑøúþ‡ÿ>ŒÁÅú+Ç:÷çÒñ/Ϧ/2tª¡µ åï*óÃíñÚ§Kó'¶«äoŽXþ õ“-ÒŒ6øs÷¯õû_&Rùaõ~s€^÷U¯ò?¡=¬ãC½©¦BC<š:ìÀ3Ç•å–c„²l+¿õüÇ ]šãñ>¿¡~Ƚ‚ë¾Ãu—М ü×?n´åüuû %§cÛñtñ@¡/žš2 ñhªÛxž¿þ©:ÅŰ$Š6ˆ‚}moOÚÊïtþ=üpƒ(ÜBÁ$öð ·Ö/‹0Ü wðÉ*ØAÂ^q¸iå}§ãoŒgó"ˆÐt„õ®>dñ}[ ¨-`VÚÊ¿´=Ìd†5÷©£íJx"À˜ªPýlýX0æpÙ£½x¼p©­2Mñh²x®1 üǺ×X»«Z¼¦3G×û†7*måwÙ€³¯ý! ¦•Á¼8õ*3ûðO\-8îð÷ÆaS·ãÛâÙ¼62\!ѲK–¿Ã ŒÖ¥Nÿ퇀÷†õz ]½ÖÃL@-ÌcGÚÊoÝ|@ë7¬=+Û¾ξê‡üW·¯Ѱjß5ÿu¹?@>lÚžü½Óñ¼g!7…Sî¶z{¶ßÑœ‰GÓ Ú]Á¨íLc”<‡}÷üøoÈx6S2Õsx—¡ÓlEÔ~=´b_ø; 'ðgùãiìtçØæÏÓ7mBÁ]<šY ð4Èò†v$ ôDVÏáéÁ¹?"4ÂË ‚s?Dh„—Cgzäƒ=áe)¿¥ÆE„FxyîòJüÅ¡“ @†Sc#B#%DpÆA„FÁ–É…F¾  œaF: ‚Óyë$W ¯ÄoC„Fn@^‰_‡¤Ä„y–ᔤÄ„àÑçi_ Â3"ó7ç¡„‘ù›Säõ¶ ŒÀ£§†F<AN¥ˆÐ¼úpJ„F&╽›É„&Oþ ÿŽGOO¬ÝU5 ;p]g¾×UJPuÎírrû¼ ï¾×zRÿ°`¼Õhöi÷½V+xåz¼²~§ônX¯Nî_~ ƒ¦ja2¡ Ôÿoˆ¢;Mw:´»„iß 0KhŠ« )†O? ;pÔQ´¹-9œÚ!ô÷ ›%¹ßÂÇêƒ6}êßxoÐgöm( îºcyΟæOdåGшߎê õ[÷n:_ÿ ä÷.P€ Òk˜:£æ<†NÆç–{‹RþgvàÖ¸Pi×ÉvJó?½Šë7-ß7Ïm¼ZÏ“•¯Ù†WR|ïÌ]×Ú†R§Y,•ÿ Ö·ö¤5û½ÜâÚÒíå{í:ðʽú¥úëÛ¥ãÛ<‚=”ÿ ”“Ü·Áþ¾õÏNš÷»”Ê—Ô¡¿€ÖVá”=¼ ¬]çêóu@w¾ÙçÛgô_X_}þÅó‘SxWiý’ßœÝÓ·“ŠÍ<„Fý†lŠSñòXÑ”%÷?ŠŠIÿ c€v߀¢ÇÝ 0ÙP¦^Ñ*ØTÓÝRŒ0Ú¤å=Ö¹Ô¦6˜“c^î2t± sƒÒ°~ƒÉìHÏ}¨<¨Æ{ƒQ…mQp@e‡Kõ×­møáñÚCÿí9Í;³íÙ ÒÃÞvüEûûÖ?[Nö¤ìo~ð™ Oµ j?ˆ¯<Žcêø ^jŸÈ<1Ÿàë[Çó—/4F~‚]íAØCÓ IóøŽ†¿C{«â!%Bux¥b(×ñwP`#vÒ‡´2”I hÃñ°•Í‹T¼7& Z¦½Ü•ç$?¹K¸:ûAœmµa8A J½%¢r¯ÞR—`ÆØÐë÷“ë1òöÎz…µ€=Tðq|Zï`g[O럹¥¯¤Š—`$0î;4>†¿Ó»WݧÔãHÉê ËñW´Ï 4”ºê»Š†¸î;ÖØOî­tán ëUÖëÚð\»4°©6JÀ¾hm° 5æ›'ú&¹Gn(À«yç¥.õw:€èóèm?;”;Õ¼ü08€õÑõïzüX󎤒ê0.؈Òz ZÀ° Æ'²aôw0®ìÊÏöº:¾‚[ßL1Û`ìA0;6÷:ñL¨¬Q°q MCE©Ê8Ð:õfŠFL1;µ·@i/ªJ-)¯|6\¯icQŒ¹Y/á®—§GÖ8›Ìû î´•ÁO'ý´»‚—_3í:ºþ@EÕÉWÎæD<ƒîõw–Šl¸çuHí¨¼¢ÛŽo±¿àÆú§>œÊù^Áã~ÖH”:€µ V¿¡ÔÆT‡~Ï ÛgýüôíWMlηÖ+¸Â-Â0ôêú·‹cEÑט?øBú|ü¨ Ý'ô#õñø¿¿€ß_~X+/øõüú NÎóóËW¥2裺OøÇ—¢ì¼ôë+ð¥ûù?‹}Âàס´OýÜÙOG»+?áÇÑÇWx¶.þøRøj´ß§__ªdÿéù«×úýå%Û/Ö_~ÞúOÙŽŸ_A­|R¤×ü*ýýãhU?{|ûû×íþ«Ú}?¾¨¨Ÿ_ª¡m]:¿Oåz«Û­~/¶Ï çGöß¹öS¾÷*¨Þ¯¢}—ïa­Œ/`Ôç?ÿù–ŠÀx¬ß×Åx³w¼`³„Ëñm¯i‡Â,±6IuBé› £®˜Änã\ýëÚ·-Å\Òs ±ËÏÑLÃû!„Æxe7ûþ“]Ú]åY}vàz@ƳüFèÙ8©ÿa ±¡á„¡Åfªgòþ“Á‚ tæQgŠÐƒñˆ‹3EháAy$±¡„æQÄæŒÐ0ôj]Œ×˹.Kaz±a8îïëì§ÃºF¡aǃ>ÙX0„¿ðÐø1íŒ9»}ŸÄ®­f®%Ù¶½ÖËtmÉzœ¯0û–?®}—ëï4~Ëiœ–G¾>À‚ÑËbÕô-ño.ÚC|£)ÅÆÒ~P€Ma…ødm¾H£ÐP"Úå_žTBàÅLÃ:5Ä'Ñ®s\-~€Ì[ås÷¶í]Îé!F¦ë^Br®;~ìòG¶¯½þª+¡O>°|ðëcý¤Xmï“}]gÕfÿñ¦›½bõá·",Zbft˜£1Ð?~ÜüuT1¼:ó36Mñaü°´èö'aÚ¶·a̪²y6=]¾ËÛ¾öú­.¨4æPYûè×—†¹aõyFûoot‹ØC †Ÿv Mˆ[¾žl aà½kÐ6Ĺg±íã¡qÅæB|˜và™Axãö®´…+èKßòDz¯CýJÐZ½w}V1d'µCô\êP·Ÿ vn u’‹M×ûnŸÒ0X®5öaˆ6Ù=w, 7™ÙFd¸i#ñ,øç–´m.Ó¡þ¸q¥ôƒpñúöi°¯p g„y¢DÖQüªŒ>ŒbU&2g;š=KÃ]1üÍyOfî°^Âãäìú£¶í—±N\5Dy»¾åm_×ú³`̪ÁxŽë@{ø~ã}G÷y|ûG…5V.#ŽÚ=™œFÆ8 ¯4×â:3œ nŒ“ÆgÕÈB€¢d«Ëöã~çâ¤1sK1huC¯Çn½áu]§òïf_×úÀßa(9é¬ýú*ñƒ`Áèà¡èik|£vÆòjl­aÁ`YšËYµ¤ThôhÔ.Âc,}LÃgƒã< ‡1yèÉtÜ^paÌO1|,±^§˜ü-ÂÚÓdŒ42à Æåß;Îõ—›¶7Ù7çëóƒhý†µ—ŠE:GsH«ýi@³kÞrí|M’ ÂæÊc&[½=Úw4gâ“Ü—t¢Ð¨æô÷gîöõåñ¯oèøFçÄFVowEíà×C%Þþž¿žk#Ÿ»}}yôëcš?‹P¤ÏÀã{4‚ t¢É«F„§A„F^„{®ô¡„â^b#B#ÂèˆÐ‚0:"4‚ðbÜcø$B#ÂèˆÐ‚0:"4‚ð‚L=|¡atDhAAFg2¡‘•‚ðºˆG#ÂèˆÐ‚0:"4‚ ŒŽ £#B#Âè´dª¼ž{Öá6Ê©oÇz;<¸ÐÔc’Šð¼‘˜Á‚ < eï{Çz&Hg½Ê~?É_l¼Ó¿-ÓuÆ3»…<Ùû Æ+]—ç`Èl0Ú}/ÊÎëÒ+×Sž¥±¡NïMù~ׯa°”9ìÀu‡­s¡ M‚ H@þQ´…O(þ­(APËã‚M‡` ‚h7xŽp힦2mÄ,¡)®d4Þ4ň¢ ¢hƒ@YpR£Þz~?ÜA!A•E ~;>¨j‡(êRw·¿/é=O“£© ½†¾«'ˆáÓè±.`ô½?Cg¯lc2¡qsƒö/Pä&öìÌŒý1çy[Ì6<·Ô›ŸÔxi»»„ÑËjY•ãk;p×ïÐ\ö¾Þ›sKÐÚ†*çMf'ÍÛ\JÅJj‡Ð_@k«ðFÊ×e¼ÜVçêó§ì¡iâøN¤ù¥‹ëwc£½éü%²ã‹cŠ{™z,ä7gôÃmIlÎÛ—Öß Z/‹ó¬Ýå‰7¤üO°¾Õ«éÑ~.ÚŸ{ßËìø%ŒÉ®£,=ÛgÞž\mÁèZùÙñøö?“&]|2ø•kâE–[xÅ 0£š$]íEYrõ“’lxž lSÞàáø`k×I{Mµ8½é宵 ?Ü (ì±áy‚ (FÅÐî¶yJ6˜“cÞo MÞN¿Oö$: øÁ'Œ>T6lx+°„+ΟcÁ€‚ÖÚ}‚-¢|¶á¹(ŒAW]# ×µ³ß÷ ,@Á¶³×rÉ>?Üî; 'Â(kÚ]”í¥ˆޝö–zµŸûƒð®kƒÂ B³„ëA¸ôªÈ!ß·}ª`ƒÈ,±öÞ UœÖì´#¢a`aý׆O¾®bz0™G“ßЀÙT ‚ c, ,4—06XÅPEãÙCùÉÑb |•=ÈTKôÎŒ±½a®öƺÞå@¹3·T)ÅPlƒ‘õή†ÃI隺PîÑÞÀþG·Š˜ÚP”@‘ 3TG1Â0{ïX»6T¸ížCº“}{(?ÎD&û]-`*70‘u…—W:ŸöÓÅ~JÒi Òû^\Ë€í“ü„A’–MIqŽõŸþþþ÷hCã&&óh<ÏAÆÛÐÆ©”rà™Ÿd9@ô‰0ŒÇ)^%€N‡‚eŒY€²ÆK´€aŒOdÃèÔ£»®ãgnj(˜m0ö Ê:zÐ<ØuFn?£—ø |pµ…?x–2“y4Tx,{-Š!G:¤°@]AG¸¸IDAT¢J@Æ)õnŒ¶C3Š¡`ÇŸlAk»T@Ú»¸•¿5±(zCÖK¸ëåéx?÷Î*‹áé”oô 'EÒv¥`mƒÕo(u€1v*Pמÿ(†b§:>g»Á£j;6ÇÖ0ÉÍzWA¸M½êþö«“}ŒvJÞŠcÕ!,l0ïK^O3ö÷m?ë÷¶ÏŠI`C™éÞÔN&4e÷“ÈcŸöÆ*¡Ü ŽCW[¥×¡yƒHß\¨ë7Cñâ·Ÿ»íëw¬=çä!VÁ|vJ®é ®gWn”ò0ùÄ­Ißôœ¶“DvÍeOËW¥ò5'Ãøx<íÁf¥öéð‘qò@\:úÆ!¯§úká¶úüð(Và- Êöuºþæ¦Ã¹¨p6T0éÿ¹,6Ù±gò‰ËêÃÞnßJ K“èÔ¼;^€éÒÃ}¾é÷m?çí·á¹?Àü#{ ’ÖE^/ÆKë¤_û´‹—,åO N'ó÷ðý³U08ߢ(úóS¿FkÂè4>z½î=_øk“ ªÑèÚ·-ØCÔ“ !îˆvW@Ëä²ñÞaÔ¦ûÜÐFm?rò,š%Þ½¿™äËà§í¾==©OA|åÈ5çjoøÂ0”ï+è3›÷«ÁNö6çö{>eû™ŠüYÌ='øÂ7A†áÜsø¾^ËZ'Aú3‡Î^„F„Ñ¡„'fÞ B#OË\D¡„§dN"ˆÐ Âi<šÚêò“¯bÛ¶÷‡õn¶Òyø˜4Ýìgãd6äkºŽTãõØÇŽéYÿÏfn"ˆÐô§!v ‹¹… óVù2³mû6yˆ†DÑ!9ƒ–ßÅ~ÖKh> ÈâÍDåoZÌ'™}„>ÀÚ×jÿdz™£È"4½9‰Gƒ4¶JPZý«j_§¶mï‹É—7äÐlÚÖÎt§Õ~v 9Aà'k˜ÕÕ×=ܺ›!ê¿_<›û0W‘DhzÒ¦;ðÌqAåÕÛ‡¢-|ÅÍå6ØÏ‹jð¨ÒKt(-ŠLH¾!LÇ­öuÙN:cdæž@„¦ ñhªÛxžÿܧðmÛçÎû™`ó¬¶Å°‰MÉ;P;„Ê.æôÕ±xúÙ×mûñlî@îÉÌÕ›&ŒGój°Nç!έ·iÛÞì©_êX¬#­öÓgiâÄo•hwäo«‡mxî°!‰î[ÿÓ1çáRñhúÐ&‹«§ÑÍ…$5]·gä±v½ëçV”ÿ™†Í‹Ò ñnn.¿Ý~ò?àã¤yŽfÁàƒt`˜€ýé®m™(£M$Ù*Ÿ¹¯Ïª)që4f±d†E*“Â6™`4Ò{2¸KvM¯—÷”cì/eO[öœl‘²›™Ê!m:´`¤Þƒ:Lc 3‡{f¤³)Œö¼àœÐì d €e`,5 ›AxAˆp`ƒï € l&Z„æ[E_[lë콕ÚE’}2®uY¹N@úzÛKõ! "ìÔåÝÏ p¯Ò0å:…[8ÿÁž Â@ˆÐ‚0:2tatÄ£atDhAAFG„F„Ñ¡atDhn¥C`0³\û¬ß<¦Ï3B{µ{xGDhn¢K`°t1ª¿Í£ÎhùJ{Æ9Ôh®C„ñ7Òg „öj÷ðŽˆÐ ŒYzÀN^ƒ>2r‡çÿ²GÁnÄ‘S}IEND®B`‚././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/qwt/tests/data.py0000666000000000000000000000617700000000000013715 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import random import numpy as np from qtpy.QtWidgets import QFrame from qtpy.QtGui import QPen, QBrush from qtpy.QtCore import QSize, Qt from qwt import ( QwtPlot, QwtPlotMarker, QwtSymbol, QwtLegend, QwtPlotCurve, QwtAbstractScaleDraw, ) class DataPlot(QwtPlot): def __init__(self, unattended=False): QwtPlot.__init__(self) self.setCanvasBackground(Qt.white) self.alignScales() # Initialize data self.x = np.arange(0.0, 100.1, 0.5) self.y = np.zeros(len(self.x), float) self.z = np.zeros(len(self.x), float) self.setTitle("A Moving QwtPlot Demonstration") self.insertLegend(QwtLegend(), QwtPlot.BottomLegend) self.curveR = QwtPlotCurve("Data Moving Right") self.curveR.attach(self) self.curveL = QwtPlotCurve("Data Moving Left") self.curveL.attach(self) self.curveL.setSymbol( QwtSymbol(QwtSymbol.Ellipse, QBrush(), QPen(Qt.yellow), QSize(7, 7)) ) self.curveR.setPen(QPen(Qt.red)) self.curveL.setPen(QPen(Qt.blue)) mY = QwtPlotMarker() mY.setLabelAlignment(Qt.AlignRight | Qt.AlignTop) mY.setLineStyle(QwtPlotMarker.HLine) mY.setYValue(0.0) mY.attach(self) self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)") self.setAxisTitle(QwtPlot.yLeft, "Values") self.startTimer(10 if unattended else 50) self.phase = 0.0 def alignScales(self): self.canvas().setFrameStyle(QFrame.Box | QFrame.Plain) self.canvas().setLineWidth(1) for axis_id in QwtPlot.AXES: scaleWidget = self.axisWidget(axis_id) if scaleWidget: scaleWidget.setMargin(0) scaleDraw = self.axisScaleDraw(axis_id) if scaleDraw: scaleDraw.enableComponent(QwtAbstractScaleDraw.Backbone, False) def timerEvent(self, e): if self.phase > np.pi - 0.0001: self.phase = 0.0 # y moves from left to right: # shift y array right and assign new value y[0] self.y = np.concatenate((self.y[:1], self.y[:-1])) self.y[0] = np.sin(self.phase) * (-1.0 + 2.0 * random.random()) # z moves from right to left: # Shift z array left and assign new value to z[n-1]. self.z = np.concatenate((self.z[1:], self.z[:1])) self.z[-1] = 0.8 - (2.0 * self.phase / np.pi) + 0.4 * random.random() self.curveR.setData(self.x, self.y) self.curveL.setData(self.x, self.z) self.replot() self.phase += np.pi * 0.02 if __name__ == "__main__": from qwt import tests app = tests.test_widget(DataPlot, size=(500, 300)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091907.0 PythonQwt-0.10.2/qwt/tests/errorbar.py0000666000000000000000000002527300000000000014620 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtGui import QPen, QBrush from qtpy.QtCore import QSize, QRectF, QLineF, Qt from qwt import QwtPlot, QwtSymbol, QwtPlotGrid, QwtPlotCurve class ErrorBarPlotCurve(QwtPlotCurve): def __init__( self, x=[], y=[], dx=None, dy=None, curvePen=None, curveStyle=None, curveSymbol=None, errorPen=None, errorCap=0, errorOnTop=False, ): """A curve of x versus y data with error bars in dx and dy. Horizontal error bars are plotted if dx is not None. Vertical error bars are plotted if dy is not None. x and y must be sequences with a shape (N,) and dx and dy must be sequences (if not None) with a shape (), (N,), or (2, N): - if dx or dy has a shape () or (N,), the error bars are given by (x-dx, x+dx) or (y-dy, y+dy), - if dx or dy has a shape (2, N), the error bars are given by (x-dx[0], x+dx[1]) or (y-dy[0], y+dy[1]). curvePen is the pen used to plot the curve curveStyle is the style used to plot the curve curveSymbol is the symbol used to plot the symbols errorPen is the pen used to plot the error bars errorCap is the size of the error bar caps errorOnTop is a boolean: - if True, plot the error bars on top of the curve, - if False, plot the curve on top of the error bars. """ QwtPlotCurve.__init__(self) if curvePen is None: curvePen = QPen(Qt.NoPen) if curveStyle is None: curveStyle = QwtPlotCurve.Lines if curveSymbol is None: curveSymbol = QwtSymbol() if errorPen is None: errorPen = QPen(Qt.NoPen) self.setData(x, y, dx, dy) self.setPen(curvePen) self.setStyle(curveStyle) self.setSymbol(curveSymbol) self.errorPen = errorPen self.errorCap = errorCap self.errorOnTop = errorOnTop def setData(self, *args): """Set x versus y data with error bars in dx and dy. Horizontal error bars are plotted if dx is not None. Vertical error bars are plotted if dy is not None. x and y must be sequences with a shape (N,) and dx and dy must be sequences (if not None) with a shape (), (N,), or (2, N): - if dx or dy has a shape () or (N,), the error bars are given by (x-dx, x+dx) or (y-dy, y+dy), - if dx or dy has a shape (2, N), the error bars are given by (x-dx[0], x+dx[1]) or (y-dy[0], y+dy[1]). """ if len(args) == 1: QwtPlotCurve.setData(self, *args) return dx = None dy = None x, y = args[:2] if len(args) > 2: dx = args[2] if len(args) > 3: dy = args[3] self.__x = np.asarray(x, float) if len(self.__x.shape) != 1: raise RuntimeError("len(asarray(x).shape) != 1") self.__y = np.asarray(y, float) if len(self.__y.shape) != 1: raise RuntimeError("len(asarray(y).shape) != 1") if len(self.__x) != len(self.__y): raise RuntimeError("len(asarray(x)) != len(asarray(y))") if dx is None: self.__dx = None else: self.__dx = np.asarray(dx, float) if len(self.__dx.shape) not in [0, 1, 2]: raise RuntimeError("len(asarray(dx).shape) not in [0, 1, 2]") if dy is None: self.__dy = dy else: self.__dy = np.asarray(dy, float) if len(self.__dy.shape) not in [0, 1, 2]: raise RuntimeError("len(asarray(dy).shape) not in [0, 1, 2]") QwtPlotCurve.setData(self, self.__x, self.__y) def boundingRect(self): """Return the bounding rectangle of the data, error bars included.""" if self.__dx is None: xmin = min(self.__x) xmax = max(self.__x) elif len(self.__dx.shape) in [0, 1]: xmin = min(self.__x - self.__dx) xmax = max(self.__x + self.__dx) else: xmin = min(self.__x - self.__dx[0]) xmax = max(self.__x + self.__dx[1]) if self.__dy is None: ymin = min(self.__y) ymax = max(self.__y) elif len(self.__dy.shape) in [0, 1]: ymin = min(self.__y - self.__dy) ymax = max(self.__y + self.__dy) else: ymin = min(self.__y - self.__dy[0]) ymax = max(self.__y + self.__dy[1]) return QRectF(xmin, ymin, xmax - xmin, ymax - ymin) def drawSeries(self, painter, xMap, yMap, canvasRect, first, last=-1): """Draw an interval of the curve, including the error bars painter is the QPainter used to draw the curve xMap is the QwtDiMap used to map x-values to pixels yMap is the QwtDiMap used to map y-values to pixels first is the index of the first data point to draw last is the index of the last data point to draw. If last < 0, last is transformed to index the last data point """ if last < 0: last = self.dataSize() - 1 if self.errorOnTop: QwtPlotCurve.drawSeries(self, painter, xMap, yMap, canvasRect, first, last) # draw the error bars painter.save() painter.setPen(self.errorPen) # draw the error bars with caps in the x direction if self.__dx is not None: # draw the bars if len(self.__dx.shape) in [0, 1]: xmin = self.__x - self.__dx xmax = self.__x + self.__dx else: xmin = self.__x - self.__dx[0] xmax = self.__x + self.__dx[1] y = self.__y n, i = len(y), 0 lines = [] while i < n: yi = yMap.transform(y[i]) lines.append( QLineF(xMap.transform(xmin[i]), yi, xMap.transform(xmax[i]), yi) ) i += 1 painter.drawLines(lines) if self.errorCap > 0: # draw the caps cap = self.errorCap / 2 n, i, = ( len(y), 0, ) lines = [] while i < n: yi = yMap.transform(y[i]) lines.append( QLineF( xMap.transform(xmin[i]), yi - cap, xMap.transform(xmin[i]), yi + cap, ) ) lines.append( QLineF( xMap.transform(xmax[i]), yi - cap, xMap.transform(xmax[i]), yi + cap, ) ) i += 1 painter.drawLines(lines) # draw the error bars with caps in the y direction if self.__dy is not None: # draw the bars if len(self.__dy.shape) in [0, 1]: ymin = self.__y - self.__dy ymax = self.__y + self.__dy else: ymin = self.__y - self.__dy[0] ymax = self.__y + self.__dy[1] x = self.__x n, i, = ( len(x), 0, ) lines = [] while i < n: xi = xMap.transform(x[i]) lines.append( QLineF(xi, yMap.transform(ymin[i]), xi, yMap.transform(ymax[i])) ) i += 1 painter.drawLines(lines) # draw the caps if self.errorCap > 0: cap = self.errorCap / 2 n, i, j = len(x), 0, 0 lines = [] while i < n: xi = xMap.transform(x[i]) lines.append( QLineF( xi - cap, yMap.transform(ymin[i]), xi + cap, yMap.transform(ymin[i]), ) ) lines.append( QLineF( xi - cap, yMap.transform(ymax[i]), xi + cap, yMap.transform(ymax[i]), ) ) i += 1 painter.drawLines(lines) painter.restore() if not self.errorOnTop: QwtPlotCurve.drawSeries(self, painter, xMap, yMap, canvasRect, first, last) class ErrorBarPlot(QwtPlot): def __init__(self, parent=None, title=None): super(ErrorBarPlot, self).__init__("Errorbar Demonstation") self.setCanvasBackground(Qt.white) self.plotLayout().setAlignCanvasToScales(True) grid = QwtPlotGrid() grid.attach(self) grid.setPen(QPen(Qt.black, 0, Qt.DotLine)) # calculate data and errors for a curve with error bars x = np.arange(0, 10.1, 0.5, float) y = np.sin(x) dy = 0.2 * abs(y) # dy = (0.15 * abs(y), 0.25 * abs(y)) # uncomment for asymmetric error bars dx = 0.2 # all error bars the same size errorOnTop = False # uncomment to draw the curve on top of the error bars # errorOnTop = True # uncomment to draw the error bars on top of the curve symbol = QwtSymbol( QwtSymbol.Ellipse, QBrush(Qt.red), QPen(Qt.black, 2), QSize(9, 9) ) curve = ErrorBarPlotCurve( x=x, y=y, dx=dx, dy=dy, curvePen=QPen(Qt.black, 2), curveSymbol=symbol, errorPen=QPen(Qt.blue, 2), errorCap=10, errorOnTop=errorOnTop, ) curve.attach(self) if __name__ == "__main__": from qwt import tests tests.test_widget(ErrorBarPlot, size=(640, 480)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641655172.0 PythonQwt-0.10.2/qwt/tests/eventfilter.py0000666000000000000000000004071000000000000015322 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import os import numpy as np from qtpy.QtWidgets import QApplication, QWidget, QMainWindow, QToolBar, QWhatsThis from qtpy.QtGui import QPen, QBrush, QColor, QPainter, QPixmap from qtpy.QtCore import QSize, QEvent, Signal, QRect, QObject, Qt, QPoint from qwt import ( QwtPlot, QwtScaleDraw, QwtSymbol, QwtPlotGrid, QwtPlotCurve, QwtPlotCanvas, QwtScaleDiv, ) QT_API = os.environ["QT_API"] class ColorBar(QWidget): colorSelected = Signal(QColor) def __init__(self, orientation, *args): QWidget.__init__(self, *args) self.__orientation = orientation self.__light = QColor(Qt.white) self.__dark = QColor(Qt.black) self.setCursor(Qt.PointingHandCursor) def setOrientation(self, orientation): self.__orientation = orientation self.update() def orientation(self): return self.__orientation def setRange(self, light, dark): self.__light = light self.__dark = dark self.update() def setLight(self, color): self.__light = color self.update() def setDark(self, color): self.__dark = color self.update() def light(self): return self.__light def dark(self): return self.__dark def mousePressEvent(self, event): if event.button() == Qt.LeftButton: if QT_API in ("pyqt4", "pyside2"): pm = QPixmap.grabWidget(self) else: pm = self.grab() color = QColor() color.setRgb(pm.toImage().pixel(event.x(), event.y())) self.colorSelected.emit(color) event.accept() def paintEvent(self, _): painter = QPainter(self) self.drawColorBar(painter, self.rect()) def drawColorBar(self, painter, rect): h1, s1, v1, _ = self.__light.getHsv() h2, s2, v2, _ = self.__dark.getHsv() painter.save() painter.setClipRect(rect) painter.setClipping(True) painter.fillRect(rect, QBrush(self.__dark)) sectionSize = 2 if self.__orientation == Qt.Horizontal: numIntervals = rect.width() / sectionSize else: numIntervals = rect.height() / sectionSize section = QRect() for i in range(int(numIntervals)): if self.__orientation == Qt.Horizontal: section.setRect( rect.x() + i * sectionSize, rect.y(), sectionSize, rect.heigh() ) else: section.setRect( rect.x(), rect.y() + i * sectionSize, rect.width(), sectionSize ) ratio = float(i) / float(numIntervals) color = QColor() color.setHsv( h1 + int(ratio * (h2 - h1) + 0.5), s1 + int(ratio * (s2 - s1) + 0.5), v1 + int(ratio * (v2 - v1) + 0.5), ) painter.fillRect(section, color) painter.restore() class Plot(QwtPlot): def __init__(self, *args): QwtPlot.__init__(self, *args) self.setTitle("Interactive Plot") self.setCanvasColor(Qt.darkCyan) grid = QwtPlotGrid() grid.attach(self) grid.setMajorPen(QPen(Qt.white, 0, Qt.DotLine)) self.setAxisScale(QwtPlot.xBottom, 0.0, 100.0) self.setAxisScale(QwtPlot.yLeft, 0.0, 100.0) # Avoid jumping when label with 3 digits # appear/disappear when scrolling vertically scaleDraw = self.axisScaleDraw(QwtPlot.yLeft) scaleDraw.setMinimumExtent( scaleDraw.extent(self.axisWidget(QwtPlot.yLeft).font()) ) self.plotLayout().setAlignCanvasToScales(True) self.__insertCurve(Qt.Vertical, Qt.blue, 30.0) self.__insertCurve(Qt.Vertical, Qt.magenta, 70.0) self.__insertCurve(Qt.Horizontal, Qt.yellow, 30.0) self.__insertCurve(Qt.Horizontal, Qt.white, 70.0) self.replot() scaleWidget = self.axisWidget(QwtPlot.yLeft) scaleWidget.setMargin(10) self.__colorBar = ColorBar(Qt.Vertical, scaleWidget) self.__colorBar.setRange(QColor(Qt.red), QColor(Qt.darkBlue)) self.__colorBar.setFocusPolicy(Qt.TabFocus) self.__colorBar.colorSelected.connect(self.setCanvasColor) # we need the resize events, to lay out the color bar scaleWidget.installEventFilter(self) # we need the resize events, to lay out the wheel self.canvas().installEventFilter(self) scaleWidget.setWhatsThis( "Selecting a value at the scale will insert a new curve." ) self.__colorBar.setWhatsThis( "Selecting a color will change the background of the plot." ) self.axisWidget(QwtPlot.xBottom).setWhatsThis( "Selecting a value at the scale will insert a new curve." ) def setCanvasColor(self, color): self.setCanvasBackground(color) self.replot() def scrollLeftAxis(self, value): self.setAxisScale(QwtPlot.yLeft, value, value + 100) self.replot() def eventFilter(self, obj, event): if event.type() == QEvent.Resize: size = event.size() if obj == self.axisWidget(QwtPlot.yLeft): margin = 2 x = size.width() - obj.margin() + margin w = obj.margin() - 2 * margin y = int(obj.startBorderDist()) h = int(size.height() - obj.startBorderDist() - obj.endBorderDist()) self.__colorBar.setGeometry(x, y, w, h) return QwtPlot.eventFilter(self, obj, event) def insertCurve(self, axis, base): if axis == QwtPlot.yLeft or axis == QwtPlot.yRight: o = Qt.Horizontal else: o = Qt.Vertical self.__insertCurve(o, QColor(Qt.red), base) self.replot() def __insertCurve(self, orientation, color, base): curve = QwtPlotCurve() curve.attach(self) curve.setPen(QPen(color)) curve.setSymbol( QwtSymbol(QwtSymbol.Ellipse, QBrush(Qt.gray), QPen(color), QSize(8, 8)) ) fixed = base * np.ones(10, float) changing = np.arange(0, 95.0, 10.0, float) + 5.0 if orientation == Qt.Horizontal: curve.setData(changing, fixed) else: curve.setData(fixed, changing) class CanvasPicker(QObject): def __init__(self, plot): QObject.__init__(self, plot) self.__selectedCurve = None self.__selectedPoint = -1 self.__plot = plot canvas = plot.canvas() canvas.installEventFilter(self) # We want the focus, but no focus rect. # The selected point will be highlighted instead. canvas.setFocusPolicy(Qt.StrongFocus) canvas.setCursor(Qt.PointingHandCursor) canvas.setFocusIndicator(QwtPlotCanvas.ItemFocusIndicator) canvas.setFocus() canvas.setWhatsThis( "All points can be moved using the left mouse button " "or with these keys:\n\n" "- Up: Select next curve\n" "- Down: Select previous curve\n" '- Left, "-": Select next point\n' '- Right, "+": Select previous point\n' "- 7, 8, 9, 4, 6, 1, 2, 3: Move selected point" ) self.__shiftCurveCursor(True) def event(self, event): if event.type() == QEvent.User: self.__showCursor(True) return True return QObject.event(self, event) def eventFilter(self, object, event): if event.type() == QEvent.FocusIn: self.__showCursor(True) if event.type() == QEvent.FocusOut: self.__showCursor(False) if event.type() == QEvent.Paint: QApplication.postEvent(self, QEvent(QEvent.User)) elif event.type() == QEvent.MouseButtonPress: self.__select(event.position()) return True elif event.type() == QEvent.MouseMove: self.__move(event.position()) return True if event.type() == QEvent.KeyPress: delta = 5 key = event.key() if key == Qt.Key_Up: self.__shiftCurveCursor(True) return True elif key == Qt.Key_Down: self.__shiftCurveCursor(False) return True elif key == Qt.Key_Right or key == Qt.Key_Plus: if self.__selectedCurve: self.__shiftPointCursor(True) else: self.__shiftCurveCursor(True) return True elif key == Qt.Key_Left or key == Qt.Key_Minus: if self.__selectedCurve: self.__shiftPointCursor(False) else: self.__shiftCurveCursor(True) return True if key == Qt.Key_1: self.__moveBy(-delta, delta) elif key == Qt.Key_2: self.__moveBy(0, delta) elif key == Qt.Key_3: self.__moveBy(delta, delta) elif key == Qt.Key_4: self.__moveBy(-delta, 0) elif key == Qt.Key_6: self.__moveBy(delta, 0) elif key == Qt.Key_7: self.__moveBy(-delta, -delta) elif key == Qt.Key_8: self.__moveBy(0, -delta) elif key == Qt.Key_9: self.__moveBy(delta, -delta) return False def __select(self, pos): found, distance, point = None, 1e100, -1 for curve in self.__plot.itemList(): if isinstance(curve, QwtPlotCurve): i, d = curve.closestPoint(pos) if d < distance: found = curve point = i distance = d self.__showCursor(False) self.__selectedCurve = None self.__selectedPoint = -1 if found and distance < 10: self.__selectedCurve = found self.__selectedPoint = point self.__showCursor(True) def __moveBy(self, dx, dy): if dx == 0 and dy == 0: return curve = self.__selectedCurve if not curve: return s = curve.sample(self.__selectedPoint) x = self.__plot.transform(curve.xAxis(), s.x()) + dx y = self.__plot.transform(curve.yAxis(), s.y()) + dy self.__move(QPoint(x, y)) def __move(self, pos): curve = self.__selectedCurve if not curve: return xData = np.zeros(curve.dataSize(), float) yData = np.zeros(curve.dataSize(), float) for i in range(curve.dataSize()): if i == self.__selectedPoint: xData[i] = self.__plot.invTransform(curve.xAxis(), pos.x()) yData[i] = self.__plot.invTransform(curve.yAxis(), pos.y()) else: s = curve.sample(i) xData[i] = s.x() yData[i] = s.y() curve.setData(xData, yData) self.__showCursor(True) self.__plot.replot() def __showCursor(self, showIt): curve = self.__selectedCurve if not curve: return symbol = curve.symbol() brush = symbol.brush() if showIt: symbol.setBrush(symbol.brush().color().darker(180)) curve.directPaint(self.__selectedPoint, self.__selectedPoint) if showIt: symbol.setBrush(brush) def __shiftCurveCursor(self, up): curves = [ curve for curve in self.__plot.itemList() if isinstance(curve, QwtPlotCurve) ] if not curves: return if self.__selectedCurve in curves: index = curves.index(self.__selectedCurve) if up: index += 1 else: index -= 1 # keep index within [0, len(curves)) index += len(curves) index %= len(curves) else: index = 0 self.__showCursor(False) self.__selectedPoint = 0 self.__selectedCurve = curves[index] self.__showCursor(True) def __shiftPointCursor(self, up): curve = self.__selectedCurve if not curve: return if up: index = self.__selectedPoint + 1 else: index = self.__selectedPoint - 1 # keep index within [0, curve.dataSize()) index += curve.dataSize() index %= curve.dataSize() if index != self.__selectedPoint: self.__showCursor(False) self.__selectedPoint = index self.__showCursor(True) class ScalePicker(QObject): clicked = Signal(int, float) def __init__(self, plot): QObject.__init__(self, plot) for axis_id in QwtPlot.AXES: scaleWidget = plot.axisWidget(axis_id) if scaleWidget: scaleWidget.installEventFilter(self) def eventFilter(self, object, event): if event.type() == QEvent.MouseButtonPress: self.__mouseClicked(object, event.position()) return True return QObject.eventFilter(self, object, event) def __mouseClicked(self, scale, pos): rect = self.__scaleRect(scale) margin = 10 rect.setRect( rect.x() - margin, rect.y() - margin, rect.width() + 2 * margin, rect.height() + 2 * margin, ) if rect.contains(pos): value = 0.0 axis = -1 sd = scale.scaleDraw() if scale.alignment() == QwtScaleDraw.LeftScale: value = sd.scaleMap().invTransform(pos.y()) axis = QwtPlot.yLeft elif scale.alignment() == QwtScaleDraw.RightScale: value = sd.scaleMap().invTransform(pos.y()) axis = QwtPlot.yRight elif scale.alignment() == QwtScaleDraw.BottomScale: value = sd.scaleMap().invTransform(pos.x()) axis = QwtPlot.xBottom elif scale.alignment() == QwtScaleDraw.TopScale: value = sd.scaleMap().invTransform(pos.x()) axis = QwtPlot.xBottom self.clicked.emit(axis, value) def __scaleRect(self, scale): bld = scale.margin() mjt = scale.scaleDraw().tickLength(QwtScaleDiv.MajorTick) sbd = scale.startBorderDist() ebd = scale.endBorderDist() if scale.alignment() == QwtScaleDraw.LeftScale: return QRect( scale.width() - bld - mjt, sbd, mjt, scale.height() - sbd - ebd ) elif scale.alignment() == QwtScaleDraw.RightScale: return QRect(bld, sbd, mjt, scale.height() - sbd - ebd) elif scale.alignment() == QwtScaleDraw.BottomScale: return QRect(sbd, bld, scale.width() - sbd - ebd, mjt) elif scale.alignment() == QwtScaleDraw.TopScale: return QRect( sbd, scale.height() - bld - mjt, scale.width() - sbd - ebd, mjt ) else: return QRect() class EventFilterWindow(QMainWindow): def __init__(self, parent=None): super(EventFilterWindow, self).__init__(parent=parent) toolBar = QToolBar(self) toolBar.addAction(QWhatsThis.createAction(toolBar)) self.addToolBar(toolBar) plot = Plot() self.setCentralWidget(plot) plot.setWhatsThis( "An useless plot to demonstrate how to use event filtering.\n\n" "You can click on the color bar, the scales or move the slider.\n" "All points can be moved using the mouse or the keyboard." ) CanvasPicker(plot) scalePicker = ScalePicker(plot) scalePicker.clicked.connect(plot.insertCurve) if __name__ == "__main__": from qwt import tests tests.test_widget(EventFilterWindow, size=(540, 400)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626092254.0 PythonQwt-0.10.2/qwt/tests/image.py0000666000000000000000000001503500000000000014057 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtGui import QPen, qRgb from qtpy.QtCore import Qt from qwt import ( QwtPlot, QwtPlotMarker, QwtLegend, QwtPlotGrid, QwtPlotCurve, QwtPlotItem, QwtLegendData, QwtLinearColorMap, QwtInterval, QwtScaleMap, toQImage, ) def bytescale(data, cmin=None, cmax=None, high=255, low=0): if (hasattr(data, "dtype") and data.dtype.char == np.uint8) or ( hasattr(data, "typecode") and data.typecode == np.uint8 ): return data high = high - low if cmin is None: cmin = min(np.ravel(data)) if cmax is None: cmax = max(np.ravel(data)) scale = high * 1.0 / (cmax - cmin or 1) bytedata = ((data * 1.0 - cmin) * scale + 0.4999).astype(np.uint8) return bytedata + np.asarray(low).astype(np.uint8) def linearX(nx, ny): return np.repeat(np.arange(nx, typecode=np.float32)[:, np.newaxis], ny, -1) def linearY(nx, ny): return np.repeat(np.arange(ny, typecode=np.float32)[np.newaxis, :], nx, 0) def square(n, min, max): t = np.arange(min, max, float(max - min) / (n - 1)) # return outer(cos(t), sin(t)) return np.cos(t) * np.sin(t)[:, np.newaxis] class PlotImage(QwtPlotItem): def __init__(self, title=""): QwtPlotItem.__init__(self) self.setTitle(title) self.setItemAttribute(QwtPlotItem.Legend) self.xyzs = None def setData(self, xyzs, xRange=None, yRange=None): self.xyzs = xyzs shape = xyzs.shape if not xRange: xRange = (0, shape[0]) if not yRange: yRange = (0, shape[1]) self.xMap = QwtScaleMap(0, xyzs.shape[0], *xRange) self.plot().setAxisScale(QwtPlot.xBottom, *xRange) self.yMap = QwtScaleMap(0, xyzs.shape[1], *yRange) self.plot().setAxisScale(QwtPlot.yLeft, *yRange) self.image = toQImage(bytescale(self.xyzs)).mirrored(False, True) for i in range(0, 256): self.image.setColor(i, qRgb(i, 0, 255 - i)) def updateLegend(self, legend, data): QwtPlotItem.updateLegend(self, legend, data) legend.find(self).setText(self.title()) def draw(self, painter, xMap, yMap, rect): """Paint image zoomed to xMap, yMap Calculate (x1, y1, x2, y2) so that it contains at least 1 pixel, and copy the visible region to scale it to the canvas. """ assert isinstance(self.plot(), QwtPlot) # calculate y1, y2 # the scanline order (index y) is inverted with respect to the y-axis y1 = y2 = self.image.height() y1 *= self.yMap.s2() - yMap.s2() y1 /= self.yMap.s2() - self.yMap.s1() y1 = max(0, int(y1 - 0.5)) y2 *= self.yMap.s2() - yMap.s1() y2 /= self.yMap.s2() - self.yMap.s1() y2 = min(self.image.height(), int(y2 + 0.5)) # calculate x1, x2 -- the pixel order (index x) is normal x1 = x2 = self.image.width() x1 *= xMap.s1() - self.xMap.s1() x1 /= self.xMap.s2() - self.xMap.s1() x1 = max(0, int(x1 - 0.5)) x2 *= xMap.s2() - self.xMap.s1() x2 /= self.xMap.s2() - self.xMap.s1() x2 = min(self.image.width(), int(x2 + 0.5)) # copy image = self.image.copy(x1, y1, x2 - x1, y2 - y1) # zoom image = image.scaled( int(xMap.p2() - xMap.p1() + 1), int(yMap.p1() - yMap.p2() + 1) ) # draw painter.drawImage(int(xMap.p1()), int(yMap.p2()), image) class ImagePlot(QwtPlot): def __init__(self, *args): QwtPlot.__init__(self, *args) # set plot title self.setTitle("ImagePlot") # set plot layout self.plotLayout().setCanvasMargin(0) self.plotLayout().setAlignCanvasToScales(True) # set legend legend = QwtLegend() legend.setDefaultItemMode(QwtLegendData.Clickable) self.insertLegend(legend, QwtPlot.RightLegend) # set axis titles self.setAxisTitle(QwtPlot.xBottom, "time (s)") self.setAxisTitle(QwtPlot.yLeft, "frequency (Hz)") colorMap = QwtLinearColorMap(Qt.blue, Qt.red) interval = QwtInterval(-1, 1) self.enableAxis(QwtPlot.yRight) self.setAxisScale(QwtPlot.yRight, -1, 1) self.axisWidget(QwtPlot.yRight).setColorBarEnabled(True) self.axisWidget(QwtPlot.yRight).setColorMap(interval, colorMap) # calculate 3 NumPy arrays x = np.arange(-2 * np.pi, 2 * np.pi, 0.01) y = np.pi * np.sin(x) z = 4 * np.pi * np.cos(x) * np.cos(x) * np.sin(x) # attach a curve QwtPlotCurve.make( x, y, title="y = pi*sin(x)", linecolor=Qt.green, linewidth=2, plot=self ) # attach another curve QwtPlotCurve.make( x, z, title="y = 4*pi*sin(x)*cos(x)**2", linewidth=2, plot=self ) # attach a grid grid = QwtPlotGrid() grid.attach(self) grid.setPen(QPen(Qt.black, 0, Qt.DotLine)) # attach a horizontal marker at y = 0 QwtPlotMarker.make( label="y = 0", linestyle=QwtPlotMarker.HLine, align=Qt.AlignRight | Qt.AlignTop, plot=self, ) # attach a vertical marker at x = pi QwtPlotMarker.make( np.pi, 0.0, label="x = pi", linestyle=QwtPlotMarker.VLine, align=Qt.AlignRight | Qt.AlignBottom, plot=self, ) # attach a plot image plotImage = PlotImage("Image") plotImage.attach(self) plotImage.setData( square(512, -2 * np.pi, 2 * np.pi), (-2 * np.pi, 2 * np.pi), (-2 * np.pi, 2 * np.pi), ) legend.clicked.connect(self.toggleVisibility) # replot self.replot() def toggleVisibility(self, plotItem, idx): """Toggle the visibility of a plot item""" plotItem.setVisible(not plotItem.isVisible()) self.replot() if __name__ == "__main__": from qwt import tests tests.test_widget(ImagePlot, size=(600, 400)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626426522.0 PythonQwt-0.10.2/qwt/tests/loadtest.py0000666000000000000000000000337000000000000014613 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015-2021 Pierre Raybaut # (see LICENSE file for more details) """Load test""" SHOW = True # Show test in GUI-based test launcher import time import os # Local imports from qwt.tests import curvebenchmark1 as cb if os.environ.get("USE_PYQWT5", False): USE_PYQWT5 = True from PyQt4.Qwt5 import QwtPlot, QwtPlotCurve else: USE_PYQWT5 = False from qwt import QwtPlot, QwtPlotCurve # analysis:ignore NCOLS, NROWS = 6, 5 NPLOTS = NCOLS * NROWS * 5 * 3 class LTWidget(cb.BMWidget): def params(self, *args, **kwargs): return tuple([("Lines", None)] * NCOLS * NROWS) class LoadTest(cb.CurveBenchmark1): TITLE = "Load test [%d plots]" % NPLOTS SIZE = (1600, 700) def __init__(self, max_n=100, parent=None, unattended=False, **kwargs): super(LoadTest, self).__init__( max_n=max_n, parent=parent, unattended=unattended, **kwargs ) def run_benchmark(self, max_n, **kwargs): points, symbols = 100, False for _i_page in range(int(NPLOTS / (NCOLS * NROWS))): t0 = time.time() symtext = "with%s symbols" % ("" if symbols else "out") widget = LTWidget(NCOLS, points, symbols, **kwargs) title = "%d points" % points description = "%d plots with %d curves of %d points, %s" % ( widget.plot_nb, widget.curve_nb, points, symtext, ) self.process_iteration(title, description, widget, t0) if __name__ == "__main__": from qwt.tests import test_widget app = test_widget(LoadTest, options=False) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/qwt/tests/logcurve.py0000666000000000000000000000210600000000000014616 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np np.seterr(all="raise") from qtpy.QtCore import Qt from qwt import QwtPlot, QwtPlotCurve, QwtLogScaleEngine class LogCurvePlot(QwtPlot): def __init__(self): super(LogCurvePlot, self).__init__( "LogCurveDemo.py (or how to handle -inf values)" ) self.enableAxis(QwtPlot.xBottom) self.setAxisScaleEngine(QwtPlot.yLeft, QwtLogScaleEngine()) x = np.arange(0.0, 10.0, 0.1) y = 10 * np.cos(x) ** 2 - 0.1 QwtPlotCurve.make(x, y, linecolor=Qt.magenta, plot=self, antialiased=True) self.replot() if __name__ == "__main__": from qwt import tests tests.test_widget(LogCurvePlot, size=(800, 500)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091907.0 PythonQwt-0.10.2/qwt/tests/mapdemo.py0000666000000000000000000000660600000000000014423 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import random import time import numpy as np from qtpy.QtWidgets import QMainWindow, QToolBar from qtpy.QtGui import QPen, QBrush from qtpy.QtCore import QSize, Qt from qwt import QwtPlot, QwtSymbol, QwtPlotCurve def standard_map(x, y, kappa): """provide one interate of the inital conditions (x, y) for the standard map with parameter kappa.""" y_new = y - kappa * np.sin(2.0 * np.pi * x) x_new = x + y_new # bring back to [0,1.0]^2 if (x_new > 1.0) or (x_new < 0.0): x_new = x_new - np.floor(x_new) if (y_new > 1.0) or (y_new < 0.0): y_new = y_new - np.floor(y_new) return x_new, y_new class MapDemo(QMainWindow): def __init__(self, *args): QMainWindow.__init__(self, *args) self.plot = QwtPlot(self) self.plot.setTitle("A Simple Map Demonstration") self.plot.setCanvasBackground(Qt.white) self.plot.setAxisTitle(QwtPlot.xBottom, "x") self.plot.setAxisTitle(QwtPlot.yLeft, "y") self.plot.setAxisScale(QwtPlot.xBottom, 0.0, 1.0) self.plot.setAxisScale(QwtPlot.yLeft, 0.0, 1.0) self.setCentralWidget(self.plot) # Initialize map data self.count = self.i = 1000 self.xs = np.zeros(self.count, float) self.ys = np.zeros(self.count, float) self.kappa = 0.2 self.curve = QwtPlotCurve("Map") self.curve.attach(self.plot) self.curve.setSymbol( QwtSymbol(QwtSymbol.Ellipse, QBrush(Qt.red), QPen(Qt.blue), QSize(5, 5)) ) self.curve.setPen(QPen(Qt.cyan)) toolBar = QToolBar(self) self.addToolBar(toolBar) # 1 tick = 1 ms, 10 ticks = 10 ms (Linux clock is 100 Hz) self.ticks = 10 self.tid = self.startTimer(self.ticks) self.timer_tic = None self.user_tic = None self.system_tic = None self.plot.replot() def setTicks(self, ticks): self.i = self.count self.ticks = int(ticks) self.killTimer(self.tid) self.tid = self.startTimer(ticks) def moreData(self): if self.i == self.count: self.i = 0 self.x = random.random() self.y = random.random() self.xs[self.i] = self.x self.ys[self.i] = self.y self.i += 1 chunks = [] self.timer_toc = time.time() if self.timer_tic: chunks.append("wall: %s s." % (self.timer_toc - self.timer_tic)) print(" ".join(chunks)) self.timer_tic = self.timer_toc else: self.x, self.y = standard_map(self.x, self.y, self.kappa) self.xs[self.i] = self.x self.ys[self.i] = self.y self.i += 1 def timerEvent(self, e): self.moreData() self.curve.setData(self.xs[: self.i], self.ys[: self.i]) self.plot.replot() if __name__ == "__main__": from qwt import tests tests.test_widget(MapDemo, size=(600, 600)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/qwt/tests/multidemo.py0000666000000000000000000000474200000000000014777 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtWidgets import QGridLayout, QWidget from qtpy.QtGui import QPen from qtpy.QtCore import Qt from qwt import QwtPlot, QwtPlotCurve def drange(start, stop, step): start, stop, step = float(start), float(stop), float(step) size = int(round((stop - start) / step)) result = [start] * size for i in range(size): result[i] += i * step return result def lorentzian(x): return 1.0 / (1.0 + (x - 5.0) ** 2) class MultiDemo(QWidget): def __init__(self, *args): QWidget.__init__(self, *args) layout = QGridLayout(self) # try to create a plot for SciPy arrays # make a curve and copy the data numpy_curve = QwtPlotCurve("y = lorentzian(x)") x = np.arange(0.0, 10.0, 0.01) y = lorentzian(x) numpy_curve.setData(x, y) # here, we know we can plot NumPy arrays numpy_plot = QwtPlot(self) numpy_plot.setTitle("numpy array") numpy_plot.setCanvasBackground(Qt.white) numpy_plot.plotLayout().setCanvasMargin(0) numpy_plot.plotLayout().setAlignCanvasToScales(True) # insert a curve and make it red numpy_curve.attach(numpy_plot) numpy_curve.setPen(QPen(Qt.red)) layout.addWidget(numpy_plot, 0, 0) numpy_plot.replot() # create a plot widget for lists of Python floats list_plot = QwtPlot(self) list_plot.setTitle("Python list") list_plot.setCanvasBackground(Qt.white) list_plot.plotLayout().setCanvasMargin(0) list_plot.plotLayout().setAlignCanvasToScales(True) x = drange(0.0, 10.0, 0.01) y = [lorentzian(item) for item in x] # insert a curve, make it red and copy the lists list_curve = QwtPlotCurve("y = lorentzian(x)") list_curve.attach(list_plot) list_curve.setPen(QPen(Qt.red)) list_curve.setData(x, y) layout.addWidget(list_plot, 0, 1) list_plot.replot() if __name__ == "__main__": from qwt import tests tests.test_widget(MultiDemo, size=(400, 300)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/qwt/tests/simple.py0000666000000000000000000000350200000000000014262 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the PyQwt License # Copyright (C) 2003-2009 Gerard Vermeulen, for the original PyQwt example # Copyright (c) 2015 Pierre Raybaut, for the PyQt5/PySide port and further # developments (e.g. ported to PythonQwt API) # (see LICENSE file for more details) SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtCore import Qt import qwt class SimplePlot(qwt.QwtPlot): def __init__(self): qwt.QwtPlot.__init__(self) self.setTitle("Really simple demo") self.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.RightLegend) self.setAxisTitle(qwt.QwtPlot.xBottom, "X-axis") self.setAxisTitle(qwt.QwtPlot.yLeft, "Y-axis") self.enableAxis(self.xBottom) self.setCanvasBackground(Qt.white) qwt.QwtPlotGrid.make(self, color=Qt.lightGray, width=0, style=Qt.DotLine) # insert a few curves x = np.arange(0.0, 10.0, 0.1) qwt.QwtPlotCurve.make(x, np.sin(x), "y = sin(x)", self, linecolor="red") qwt.QwtPlotCurve.make(x, np.cos(x), "y = cos(x)", self, linecolor="blue") # insert a horizontal marker at y = 0 qwt.QwtPlotMarker.make( label="y = 0", align=Qt.AlignRight | Qt.AlignTop, linestyle=qwt.QwtPlotMarker.HLine, color="darkGreen", plot=self, ) # insert a vertical marker at x = 2 pi qwt.QwtPlotMarker.make( xvalue=2 * np.pi, label="x = 2 pi", align=Qt.AlignRight | Qt.AlignTop, linestyle=qwt.QwtPlotMarker.VLine, color="darkGreen", plot=self, ) if __name__ == "__main__": from qwt import tests tests.test_widget(SimplePlot, size=(600, 400)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1598963152.0 PythonQwt-0.10.2/qwt/tests/vertical.py0000666000000000000000000001000500000000000014576 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015 Pierre Raybaut # (see LICENSE file for more details) """Simple plot without margins""" SHOW = True # Show test in GUI-based test launcher import numpy as np from qtpy.QtGui import QPen, QPalette, QColor from qtpy.QtCore import Qt import os if os.environ.get("USE_PYQWT5", False): USE_PYQWT5 = True from PyQt4.Qwt5 import QwtPlot, QwtPlotCurve, QwtPlotMarker, QwtText else: USE_PYQWT5 = False from qwt import QwtPlot, QwtPlotCurve, QwtPlotMarker, QwtText # analysis:ignore class VerticalPlot(QwtPlot): def __init__(self, parent=None): super(VerticalPlot, self).__init__(parent) self.setWindowTitle("PyQwt" if USE_PYQWT5 else "PythonQwt") self.enableAxis(self.xTop, True) self.enableAxis(self.yRight, True) y = np.linspace(0, 10, 500) curve1 = QwtPlotCurve.make(np.sin(y), y, title="Test Curve 1") curve2 = QwtPlotCurve.make(y ** 3, y, title="Test Curve 2") if USE_PYQWT5: # PyQwt curve2.setAxis(self.xTop, self.yRight) self.canvas().setFrameStyle(0) self.plotLayout().setCanvasMargin(0) self.axisWidget(QwtPlot.yLeft).setMargin(0) self.axisWidget(QwtPlot.xTop).setMargin(0) self.axisWidget(QwtPlot.yRight).setMargin(0) self.axisWidget(QwtPlot.xBottom).setMargin(0) else: # PythonQwt curve2.setAxes(self.xTop, self.yRight) for item, col, xa, ya in ( (curve1, Qt.green, self.xBottom, self.yLeft), (curve2, Qt.red, self.xTop, self.yRight), ): if not USE_PYQWT5: # PythonQwt item.setOrientation(Qt.Vertical) item.attach(self) item.setPen(QPen(col)) for axis_id in xa, ya: palette = self.axisWidget(axis_id).palette() palette.setColor(QPalette.WindowText, QColor(col)) palette.setColor(QPalette.Text, QColor(col)) self.axisWidget(axis_id).setPalette(palette) ticks_font = self.axisFont(axis_id) self.setAxisFont(axis_id, ticks_font) self.marker = QwtPlotMarker.make(0, 5, plot=self) def resizeEvent(self, event): super(VerticalPlot, self).resizeEvent(event) self.show_layout_details() def show_layout_details(self): text = ( "plotLayout().canvasRect():\n%r\n\n" "canvas().geometry():\n%r\n\n" "plotLayout().scaleRect(QwtPlot.yLeft):\n%r\n\n" "axisWidget(QwtPlot.yLeft).geometry():\n%r\n\n" "plotLayout().scaleRect(QwtPlot.yRight):\n%r\n\n" "axisWidget(QwtPlot.yRight).geometry():\n%r\n\n" "plotLayout().scaleRect(QwtPlot.xBottom):\n%r\n\n" "axisWidget(QwtPlot.xBottom).geometry():\n%r\n\n" "plotLayout().scaleRect(QwtPlot.xTop):\n%r\n\n" "axisWidget(QwtPlot.xTop).geometry():\n%r\n\n" % ( self.plotLayout().canvasRect().getCoords(), self.canvas().geometry().getCoords(), self.plotLayout().scaleRect(QwtPlot.yLeft).getCoords(), self.axisWidget(QwtPlot.yLeft).geometry().getCoords(), self.plotLayout().scaleRect(QwtPlot.yRight).getCoords(), self.axisWidget(QwtPlot.yRight).geometry().getCoords(), self.plotLayout().scaleRect(QwtPlot.xBottom).getCoords(), self.axisWidget(QwtPlot.xBottom).geometry().getCoords(), self.plotLayout().scaleRect(QwtPlot.xTop).getCoords(), self.axisWidget(QwtPlot.xTop).geometry().getCoords(), ) ) self.marker.setLabel(QwtText.make(text, family="Courier New", color=Qt.blue)) if __name__ == "__main__": from qwt import tests tests.test_widget(VerticalPlot, size=(300, 650)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641720371.0 PythonQwt-0.10.2/qwt/text.py0000666000000000000000000012340400000000000012617 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ Text widgets ------------ QwtText ~~~~~~~ .. autoclass:: QwtText :members: QwtTextLabel ~~~~~~~~~~~~ .. autoclass:: QwtTextLabel :members: Text engines ------------ QwtTextEngine ~~~~~~~~~~~~~ .. autoclass:: QwtTextEngine :members: QwtPlainTextEngine ~~~~~~~~~~~~~~~~~~ .. autoclass:: QwtPlainTextEngine :members: QwtRichTextEngine ~~~~~~~~~~~~~~~~~ .. autoclass:: QwtRichTextEngine :members: """ import math import os import struct from qtpy.QtGui import ( QPainter, QPalette, QFont, QFontMetrics, QColor, QTextDocument, QTextOption, QFontMetricsF, QPixmap, QFontInfo, QTransform, QAbstractTextDocumentLayout, ) from qtpy.QtWidgets import QFrame, QWidget, QSizePolicy, QApplication from qtpy.QtCore import Qt, QSizeF, QSize, QRectF from qwt.painter import QwtPainter from qwt.qthelpers import qcolor_from_str QWIDGETSIZE_MAX = (1 << 24) - 1 QT_API = os.environ["QT_API"] def taggedRichText(text, flags): richText = text if flags & Qt.AlignJustify: richText = '

" elif flags & Qt.AlignRight: richText = '
' + richText + "
" elif flags & Qt.AlignHCenter: richText = '
' + richText + "
" return richText class QwtRichTextDocument(QTextDocument): def __init__(self, text, flags, font): super(QwtRichTextDocument, self).__init__(None) self.setUndoRedoEnabled(False) self.setDefaultFont(font) self.setHtml(text) option = self.defaultTextOption() if flags & Qt.TextWordWrap: option.setWrapMode(QTextOption.WordWrap) else: option.setWrapMode(QTextOption.NoWrap) option.setAlignment(flags) self.setDefaultTextOption(option) root = self.rootFrame() fm = root.frameFormat() fm.setBorder(0) fm.setMargin(0) fm.setPadding(0) fm.setBottomMargin(0) fm.setLeftMargin(0) root.setFrameFormat(fm) self.adjustSize() class QwtTextEngine(object): """ Abstract base class for rendering text strings A text engine is responsible for rendering texts for a specific text format. They are used by `QwtText` to render a text. `QwtPlainTextEngine` and `QwtRichTextEngine` are part of the `PythonQwt` library. The implementation of `QwtMathMLTextEngine` uses code from the `Qt` solution package. Because of license implications it is built into a separate library. .. seealso:: :py:meth:`qwt.text.QwtText.setTextEngine()` """ def __init__(self): pass def heightForWidth(self, font, flags, text, width): """ Find the height for a given width :param QFont font: Font of the text :param int flags: Bitwise OR of the flags used like in QPainter::drawText :param str text: Text to be rendered :param float width: Width :return: Calculated height """ pass def textSize(self, font, flags, text): """ Returns the size, that is needed to render text :param QFont font: Font of the text :param int flags: Bitwise OR of the flags like in for QPainter::drawText :param str text: Text to be rendered :return: Calculated size """ pass def mightRender(self, text): """ Test if a string can be rendered by this text engine :param str text: Text to be tested :return: True, if it can be rendered """ pass def textMargins(self, font): """ Return margins around the texts The textSize might include margins around the text, like QFontMetrics::descent(). In situations where texts need to be aligned in detail, knowing these margins might improve the layout calculations. :param QFont font: Font of the text :return: tuple (left, right, top, bottom) representing margins """ pass def draw(self, painter, rect, flags, text): """ Draw the text in a clipping rectangle :param QPainter painter: Painter :param QRectF rect: Clipping rectangle :param int flags: Bitwise OR of the flags like in for QPainter::drawText() :param str text: Text to be rendered """ pass ASCENTCACHE = {} def get_screen_resolution(): """Return screen resolution: tuple of floats (DPIx, DPIy)""" try: desktop = QApplication.desktop() return (desktop.logicalDpiX(), desktop.logicalDpiY()) except AttributeError: screen = QApplication.primaryScreen() return (screen.logicalDotsPerInchX(), screen.logicalDotsPerInchY()) def qwtUnscaleFont(painter): if painter.font().pixelSize() >= 0: return dpix, dpiy = get_screen_resolution() pd = painter.device() if pd.logicalDpiX() != dpix or pd.logicalDpiY() != dpiy: pixelFont = QFont(painter.font(), QApplication.desktop()) pixelFont.setPixelSize(QFontInfo(pixelFont).pixelSize()) painter.setFont(pixelFont) class QwtPlainTextEngine(QwtTextEngine): """ A text engine for plain texts `QwtPlainTextEngine` renders texts using the basic `Qt` classes `QPainter` and `QFontMetrics`. """ def __init__(self): self.qrectf_max = QRectF(0, 0, QWIDGETSIZE_MAX, QWIDGETSIZE_MAX) self._fm_cache = {} self._fm_cache_f = {} def fontmetrics(self, font): fid = font.toString() try: return self._fm_cache[fid] except KeyError: return self._fm_cache.setdefault(fid, QFontMetrics(font)) def fontmetrics_f(self, font): fid = font.toString() try: return self._fm_cache_f[fid] except KeyError: return self._fm_cache_f.setdefault(fid, QFontMetricsF(font)) def heightForWidth(self, font, flags, text, width): """ Find the height for a given width :param QFont font: Font of the text :param int flags: Bitwise OR of the flags used like in QPainter::drawText :param str text: Text to be rendered :param float width: Width :return: Calculated height """ fm = self.fontmetrics_f(font) rect = fm.boundingRect(QRectF(0, 0, width, QWIDGETSIZE_MAX), flags, text) return rect.height() def textSize(self, font, flags, text): """ Returns the size, that is needed to render text :param QFont font: Font of the text :param int flags: Bitwise OR of the flags like in for QPainter::drawText :param str text: Text to be rendered :return: Calculated size """ fm = self.fontmetrics_f(font) rect = fm.boundingRect(self.qrectf_max, flags, text) return rect.size() def effectiveAscent(self, font): global ASCENTCACHE fontKey = font.key() ascent = ASCENTCACHE.get(fontKey) if ascent is not None: return ascent return ASCENTCACHE.setdefault(fontKey, self.findAscent(font)) def findAscent(self, font): dummy = "E" white = QColor(Qt.white) fm = self.fontmetrics(font) boundingr = fm.boundingRect(dummy) pm = QPixmap(boundingr.width(), boundingr.height()) pm.fill(white) p = QPainter(pm) p.setFont(font) p.drawText(0, 0, pm.width(), pm.height(), 0, dummy) p.end() img = pm.toImage() w = pm.width() linebytes = w * 4 for row in range(img.height()): if QT_API.startswith("pyside"): line = bytes(img.scanLine(row)) else: line = img.scanLine(row).asstring(linebytes) for col in range(w): color = struct.unpack("I", line[col * 4 : (col + 1) * 4])[0] if color != white.rgb(): return fm.ascent() - row + 1 return fm.ascent() def textMargins(self, font): """ Return margins around the texts The textSize might include margins around the text, like QFontMetrics::descent(). In situations where texts need to be aligned in detail, knowing these margins might improve the layout calculations. :param QFont font: Font of the text :return: tuple (left, right, top, bottom) representing margins """ left = right = 0 fm = self.fontmetrics(font) top = fm.ascent() - self.effectiveAscent(font) bottom = fm.descent() return left, right, top, bottom def draw(self, painter, rect, flags, text): """ Draw the text in a clipping rectangle :param QPainter painter: Painter :param QRectF rect: Clipping rectangle :param int flags: Bitwise OR of the flags like in for QPainter::drawText() :param str text: Text to be rendered """ painter.save() qwtUnscaleFont(painter) painter.drawText(rect, flags, text) painter.restore() def mightRender(self, text): """ Test if a string can be rendered by this text engine :param str text: Text to be tested :return: True, if it can be rendered """ return True class QwtRichTextEngine(QwtTextEngine): """ A text engine for `Qt` rich texts `QwtRichTextEngine` renders `Qt` rich texts using the classes of the Scribe framework of `Qt`. """ def __init__(self): pass def heightForWidth(self, font, flags, text, width): """ Find the height for a given width :param QFont font: Font of the text :param int flags: Bitwise OR of the flags used like in QPainter::drawText :param str text: Text to be rendered :param float width: Width :return: Calculated height """ doc = QwtRichTextDocument(text, flags, font) doc.setPageSize(QSizeF(width, QWIDGETSIZE_MAX)) return doc.documentLayout().documentSize().height() def textSize(self, font, flags, text): """ Returns the size, that is needed to render text :param QFont font: Font of the text :param int flags: Bitwise OR of the flags like in for QPainter::drawText :param str text: Text to be rendered :return: Calculated size """ doc = QwtRichTextDocument(text, flags, font) option = doc.defaultTextOption() if option.wrapMode() != QTextOption.NoWrap: option.setWrapMode(QTextOption.NoWrap) doc.setDefaultTextOption(option) doc.adjustSize() return doc.size() def draw(self, painter, rect, flags, text): """ Draw the text in a clipping rectangle :param QPainter painter: Painter :param QRectF rect: Clipping rectangle :param int flags: Bitwise OR of the flags like in for QPainter::drawText() :param str text: Text to be rendered """ txt = QwtRichTextDocument(text, flags, painter.font()) painter.save() unscaledRect = QRectF(rect) if painter.font().pixelSize() < 0: dpix, dpiy = get_screen_resolution() pd = painter.device() if pd.logicalDpiX() != dpix or pd.logicalDpiY() != dpiy: transform = QTransform() transform.scale( dpix / float(pd.logicalDpiX()), dpiy / float(pd.logicalDpiY()) ) painter.setWorldTransform(transform, True) invtrans, _ok = transform.inverted() unscaledRect = invtrans.mapRect(rect) txt.setDefaultFont(painter.font()) txt.setPageSize(QSizeF(unscaledRect.width(), QWIDGETSIZE_MAX)) layout = txt.documentLayout() height = layout.documentSize().height() y = unscaledRect.y() if flags & Qt.AlignBottom: y += unscaledRect.height() - height elif flags & Qt.AlignVCenter: y += (unscaledRect.height() - height) / 2 context = QAbstractTextDocumentLayout.PaintContext() context.palette.setColor(QPalette.Text, painter.pen().color()) painter.translate(unscaledRect.x(), y) layout.draw(painter, context) painter.restore() def taggedText(self, text, flags): return taggedRichText(text, flags) def mightRender(self, text): """ Test if a string can be rendered by this text engine :param str text: Text to be tested :return: True, if it can be rendered """ try: return Qt.mightBeRichText(text) except AttributeError: return True def textMargins(self, font): """ Return margins around the texts The textSize might include margins around the text, like QFontMetrics::descent(). In situations where texts need to be aligned in detail, knowing these margins might improve the layout calculations. :param QFont font: Font of the text :return: tuple (left, right, top, bottom) representing margins """ return 0, 0, 0, 0 class QwtText_PrivateData(object): def __init__(self): self.renderFlags = Qt.AlignCenter self.borderRadius = 0 self.borderPen = Qt.NoPen self.backgroundBrush = Qt.NoBrush self.paintAttributes = 0 self.layoutAttributes = 0 self.textEngine = None self.text = None self.font = None self.color = None class QwtText_LayoutCache(object): def __init__(self): self.textSize = QSizeF() self.font = None def invalidate(self): self.textSize = QSizeF() class QwtText(object): """ A class representing a text A `QwtText` is a text including a set of attributes how to render it. - Format: A text might include control sequences (f.e tags) describing how to render it. Each format (f.e MathML, TeX, Qt Rich Text) has its own set of control sequences, that can be handles by a special `QwtTextEngine` for this format. - Background: A text might have a background, defined by a `QPen` and `QBrush` to improve its visibility. The corners of the background might be rounded. - Font: A text might have an individual font. - Color A text might have an individual color. - Render Flags Flags from `Qt.AlignmentFlag` and `Qt.TextFlag` used like in `QPainter.drawText()`. ..seealso:: :py:meth:`qwt.text.QwtTextEngine`, :py:meth:`qwt.text.QwtTextLabel` Text formats: * `QwtText.AutoText`: The text format is determined using `QwtTextEngine.mightRender()` for all available text engines in increasing order > PlainText. If none of the text engines can render the text is rendered like `QwtText.PlainText`. * `QwtText.PlainText`: Draw the text as it is, using a QwtPlainTextEngine. * `QwtText.RichText`: Use the Scribe framework (Qt Rich Text) to render the text. * `QwtText.MathMLText`: Use a MathML (http://en.wikipedia.org/wiki/MathML) render engine to display the text. The Qwt MathML extension offers such an engine based on the MathML renderer of the Qt solutions package. To enable MathML support the following code needs to be added to the application:: QwtText.setTextEngine(QwtText.MathMLText, QwtMathMLTextEngine()) * `QwtText.TeXText`: Use a TeX (http://en.wikipedia.org/wiki/TeX) render engine to display the text ( not implemented yet ). * `QwtText.OtherFormat`: The number of text formats can be extended using `setTextEngine`. Formats >= `QwtText.OtherFormat` are not used by Qwt. Paint attributes: * `QwtText.PaintUsingTextFont`: The text has an individual font. * `QwtText.PaintUsingTextColor`: The text has an individual color. * `QwtText.PaintBackground`: The text has an individual background. Layout attributes: * `QwtText.MinimumLayout`: Layout the text without its margins. This mode is useful if a text needs to be aligned accurately, like the tick labels of a scale. If `QwtTextEngine.textMargins` is not implemented for the format of the text, `MinimumLayout` has no effect. .. py:class:: QwtText([text=None], [textFormat=None], [other=None]) :param str text: Text content :param int textFormat: Text format :param qwt.text.QwtText other: Object to copy (text and textFormat arguments are ignored) """ # enum TextFormat AutoText, PlainText, RichText, MathMLText, TeXText = list(range(5)) OtherFormat = 100 # enum PaintAttribute PaintUsingTextFont = 0x01 PaintUsingTextColor = 0x02 PaintBackground = 0x04 # enum LayoutAttribute MinimumLayout = 0x01 # Optimization: a single text engine for all QwtText objects # (this is not how it's implemented in Qwt6 C++ library) __map = {PlainText: QwtPlainTextEngine(), RichText: QwtRichTextEngine()} def __init__(self, text=None, textFormat=None, other=None): if text is None: text = "" if textFormat is None: textFormat = self.AutoText if other is not None: text = other if isinstance(text, QwtText): self.__data = text.__data self.__layoutCache = text.__layoutCache else: self.__data = QwtText_PrivateData() self.__data.text = text self.__data.textEngine = self.textEngine(text, textFormat) self.__layoutCache = QwtText_LayoutCache() @classmethod def make( cls, text=None, textformat=None, renderflags=None, font=None, family=None, pointsize=None, weight=None, color=None, borderradius=None, borderpen=None, brush=None, ): """ Create and setup a new `QwtText` object (convenience function). :param str text: Text content :param int textformat: Text format :param int renderflags: Flags from `Qt.AlignmentFlag` and `Qt.TextFlag` :param font: Font :type font: QFont or None :param family: Font family (default: Helvetica) :type family: str or None :param pointsize: Font point size (default: 10) :type pointsize: int or None :param weight: Font weight (default: QFont.Normal) :type weight: int or None :param color: Pen color :type color: QColor or str or None :param borderradius: Radius for the corners of the border frame :type borderradius: float or None :param borderpen: Background pen :type borderpen: QPen or None :param brush: Background brush :type brush: QBrush or None .. seealso:: :py:meth:`setText()` """ item = cls(text=text, textFormat=textformat) if renderflags is not None: item.setRenderFlags(renderflags) if font is not None: item.setFont(font) elif family is not None or pointsize is not None or weight is not None: family = "Helvetica" if family is None else family pointsize = 10 if pointsize is None else pointsize weight = QFont.Normal if weight is None else weight item.setFont(QFont(family, pointsize, weight)) if color is not None: item.setColor(qcolor_from_str(color, Qt.black)) if borderradius is not None: item.setBorderRadius(borderradius) if borderpen is not None: item.setBorderPen(borderpen) if brush is not None: item.setBackgroundBrush(brush) return item def __eq__(self, other): return ( self.__data.renderFlags == other.__data.renderFlags and self.__data.text == other.__data.text and self.__data.font == other.__data.font and self.__data.color == other.__data.color and self.__data.borderRadius == other.__data.borderRadius and self.__data.borderPen == other.__data.borderPen and self.__data.backgroundBrush == other.__data.backgroundBrush and self.__data.paintAttributes == other.__data.paintAttributes and self.__data.textEngine == other.__data.textEngine ) def __ne__(self, other): return not self.__eq__(other) def isEmpty(self): """ :return: True if text is empty """ return len(self.text()) == 0 def setText(self, text, textFormat=None): """ Assign a new text content :param str text: Text content :param int textFormat: Text format .. seealso:: :py:meth:`text()` """ if textFormat is None: textFormat = self.AutoText self.__data.text = text self.__data.textEngine = self.textEngine(text, textFormat) self.__layoutCache.invalidate() def text(self): """ :return: Text content .. seealso:: :py:meth:`setText()` """ return self.__data.text def setRenderFlags(self, renderFlags): """ Change the render flags The default setting is `Qt.AlignCenter` :param int renderFlags: Bitwise OR of the flags used like in `QPainter.drawText()` .. seealso:: :py:meth:`renderFlags()`, :py:meth:`qwt.text.QwtTextEngine.draw()` """ renderFlags = Qt.AlignmentFlag(renderFlags) if renderFlags != self.__data.renderFlags: self.__data.renderFlags = renderFlags self.__layoutCache.invalidate() def renderFlags(self): """ :return: Render flags .. seealso:: :py:meth:`setRenderFlags()` """ return self.__data.renderFlags def setFont(self, font): """ Set the font. :param QFont font: Font .. note:: Setting the font might have no effect, when the text contains control sequences for setting fonts. .. seealso:: :py:meth:`font()`, :py:meth:`usedFont()` """ self.__data.font = font self.setPaintAttribute(self.PaintUsingTextFont) def font(self): """ :return: Return the font .. seealso:: :py:meth:`setFont()`, :py:meth:`usedFont()` """ return self.__data.font def usedFont(self, defaultFont): """ Return the font of the text, if it has one. Otherwise return defaultFont. :param QFont defaultFont: Default font :return: Font used for drawing the text .. seealso:: :py:meth:`setFont()`, :py:meth:`font()` """ if self.__data.paintAttributes & self.PaintUsingTextFont: return self.__data.font return defaultFont def setColor(self, color): """ Set the pen color used for drawing the text. :param QColor color: Color .. note:: Setting the color might have no effect, when the text contains control sequences for setting colors. .. seealso:: :py:meth:`color()`, :py:meth:`usedColor()` """ self.__data.color = QColor(color) self.setPaintAttribute(self.PaintUsingTextColor) def color(self): """ :return: Return the pen color, used for painting the text .. seealso:: :py:meth:`setColor()`, :py:meth:`usedColor()` """ return self.__data.color def usedColor(self, defaultColor): """ Return the color of the text, if it has one. Otherwise return defaultColor. :param QColor defaultColor: Default color :return: Color used for drawing the text .. seealso:: :py:meth:`setColor()`, :py:meth:`color()` """ if self.__data.paintAttributes & self.PaintUsingTextColor: return self.__data.color return defaultColor def setBorderRadius(self, radius): """ Set the radius for the corners of the border frame :param float radius: Radius of a rounded corner .. seealso:: :py:meth:`borderRadius()`, :py:meth:`setBorderPen()`, :py:meth:`setBackgroundBrush()` """ self.__data.borderRadius = max([0.0, radius]) def borderRadius(self): """ :return: Radius for the corners of the border frame .. seealso:: :py:meth:`setBorderRadius()`, :py:meth:`borderPen()`, :py:meth:`backgroundBrush()` """ return self.__data.borderRadius def setBorderPen(self, pen): """ Set the background pen :param QPen pen: Background pen .. seealso:: :py:meth:`borderPen()`, :py:meth:`setBackgroundBrush()` """ self.__data.borderPen = pen self.setPaintAttribute(self.PaintBackground) def borderPen(self): """ :return: Background pen .. seealso:: :py:meth:`setBorderPen()`, :py:meth:`backgroundBrush()` """ return self.__data.borderPen def setBackgroundBrush(self, brush): """ Set the background brush :param QBrush brush: Background brush .. seealso:: :py:meth:`backgroundBrush()`, :py:meth:`setBorderPen()` """ self.__data.backgroundBrush = brush self.setPaintAttribute(self.PaintBackground) def backgroundBrush(self): """ :return: Background brush .. seealso:: :py:meth:`setBackgroundBrush()`, :py:meth:`borderPen()` """ return self.__data.backgroundBrush def setPaintAttribute(self, attribute, on=True): """ Change a paint attribute :param int attribute: Paint attribute :param bool on: On/Off .. note:: Used by `setFont()`, `setColor()`, `setBorderPen()` and `setBackgroundBrush()` .. seealso:: :py:meth:`testPaintAttribute()` """ if on: self.__data.paintAttributes |= attribute else: self.__data.paintAttributes &= ~attribute def testPaintAttribute(self, attribute): """ Test a paint attribute :param int attribute: Paint attribute :return: True, if attribute is enabled .. seealso:: :py:meth:`setPaintAttribute()` """ return self.__data.paintAttributes & attribute def setLayoutAttribute(self, attribute, on=True): """ Change a layout attribute :param int attribute: Layout attribute :param bool on: On/Off .. seealso:: :py:meth:`testLayoutAttribute()` """ if on: self.__data.layoutAttributes |= attribute else: self.__data.layoutAttributes &= ~attribute def testLayoutAttribute(self, attribute): """ Test a layout attribute :param int attribute: Layout attribute :return: True, if attribute is enabled .. seealso:: :py:meth:`setLayoutAttribute()` """ return self.__data.layoutAttributes & attribute def heightForWidth(self, width, defaultFont=None): """ Find the height for a given width :param float width: Width :param QFont defaultFont: Font, used for the calculation if the text has no font :return: Calculated height """ if defaultFont is None: defaultFont = QFont() font = QFont(self.usedFont(defaultFont)) h = 0 if self.__data.layoutAttributes & self.MinimumLayout: (left, right, top, bottom) = self.__data.textEngine.textMargins(font) h = self.__data.textEngine.heightForWidth( font, self.__data.renderFlags, self.__data.text, width + left + right ) h -= top + bottom else: h = self.__data.textEngine.heightForWidth( font, self.__data.renderFlags, self.__data.text, width ) return h def textSize(self, defaultFont): """ Returns the size, that is needed to render text :param QFont defaultFont Font, used for the calculation if the text has no font :return: Caluclated size """ font = QFont(self.usedFont(defaultFont)) if ( not self.__layoutCache.textSize.isValid() or self.__layoutCache.font is not font ): self.__layoutCache.textSize = self.__data.textEngine.textSize( font, self.__data.renderFlags, self.__data.text ) self.__layoutCache.font = font sz = self.__layoutCache.textSize if self.__data.layoutAttributes & self.MinimumLayout: (left, right, top, bottom) = self.__data.textEngine.textMargins(font) sz -= QSizeF(left + right, top + bottom) return sz def draw(self, painter, rect): """ Draw a text into a rectangle :param QPainter painter: Painter :param QRectF rect: Rectangle """ if self.__data.paintAttributes & self.PaintBackground: if ( self.__data.borderPen != Qt.NoPen or self.__data.backgroundBrush != Qt.NoBrush ): painter.save() painter.setPen(self.__data.borderPen) painter.setBrush(self.__data.backgroundBrush) if self.__data.borderRadius == 0: painter.drawRect(rect) else: painter.setRenderHint(QPainter.Antialiasing, True) painter.drawRoundedRect( rect, self.__data.borderRadius, self.__data.borderRadius ) painter.restore() painter.save() if self.__data.paintAttributes & self.PaintUsingTextFont: painter.setFont(self.__data.font) if self.__data.paintAttributes & self.PaintUsingTextColor: if self.__data.color.isValid(): painter.setPen(self.__data.color) expandedRect = rect if self.__data.layoutAttributes & self.MinimumLayout: font = QFont(painter.font()) (left, right, top, bottom) = self.__data.textEngine.textMargins(font) expandedRect.setTop(rect.top() - top) expandedRect.setBottom(rect.bottom() + bottom) expandedRect.setLeft(rect.left() - left) expandedRect.setRight(rect.right() + right) self.__data.textEngine.draw( painter, expandedRect, self.__data.renderFlags, self.__data.text ) painter.restore() def textEngine(self, text=None, format_=None): """ Find the text engine for a text format In case of `QwtText.AutoText` the first text engine (beside `QwtPlainTextEngine`) is returned, where `QwtTextEngine.mightRender` returns true. If there is none `QwtPlainTextEngine` is returned. If no text engine is registered for the format `QwtPlainTextEngine` is returned. :param str text: Text, needed in case of AutoText :param int format: Text format :return: Corresponding text engine """ if text is None: return self.__map.get(format_) elif format_ is not None: if format_ == QwtText.AutoText: for key, engine in list(self.__map.items()): if key != QwtText.PlainText: if engine and engine.mightRender(text): return engine engine = self.__map.get(format_) if engine is not None: return engine return self.__map[QwtText.PlainText] else: raise TypeError( "%s().textEngine() takes 1 or 2 argument(s) (none" " given)" % self.__class__.__name__ ) def setTextEngine(self, format_, engine): """ Assign/Replace a text engine for a text format With setTextEngine it is possible to extend `PythonQwt` with other types of text formats. For `QwtText.PlainText` it is not allowed to assign a engine to None. :param int format_: Text format :param qwt.text.QwtTextEngine engine: Text engine .. seealso:: :py:meth:`setPaintAttribute()` .. warning:: Using `QwtText.AutoText` does nothing. """ if format_ == QwtText.AutoText: return if format_ == QwtText.PlainText and engine is None: return self.__map.setdefault(format_, engine) class QwtTextLabel_PrivateData(object): def __init__(self): self.indent = 4 self.margin = 0 self.text = QwtText() class QwtTextLabel(QFrame): """ A Widget which displays a QwtText .. py:class:: QwtTextLabel(parent) :param QWidget parent: Parent widget .. py:class:: QwtTextLabel([text=None], [parent=None]) :noindex: :param str text: Text :param QWidget parent: Parent widget """ def __init__(self, *args): if len(args) == 0: text, parent = None, None elif len(args) == 1: if isinstance(args[0], QWidget): text = None (parent,) = args else: parent = None (text,) = args elif len(args) == 2: text, parent = args else: raise TypeError( "%s() takes 0, 1 or 2 argument(s) (%s given)" % (self.__class__.__name__, len(args)) ) super(QwtTextLabel, self).__init__(parent) self.init() if text is not None: self.__data.text = text def init(self): self.__data = QwtTextLabel_PrivateData() self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) def setPlainText(self, text): """ Interface for the designer plugin - does the same as setText() :param str text: Text .. seealso:: :py:meth:`plainText()` """ self.setText(QwtText(text)) def plainText(self): """ Interface for the designer plugin :return: Text as plain text .. seealso:: :py:meth:`setPlainText()` """ return self.__data.text.text() def setText(self, text, textFormat=QwtText.AutoText): """ Change the label's text, keeping all other QwtText attributes :param text: New text :type text: qwt.text.QwtText or str :param int textFormat: Format of text .. seealso:: :py:meth:`text()` """ if isinstance(text, QwtText): self.__data.text = text else: self.__data.text.setText(text, textFormat) self.update() self.updateGeometry() def text(self): """ :return: Return the text .. seealso:: :py:meth:`setText()` """ return self.__data.text def clear(self): """ Clear the text and all `QwtText` attributes """ self.__data.text = QwtText() self.update() self.updateGeometry() def indent(self): """ :return: Label's text indent in pixels .. seealso:: :py:meth:`setIndent()` """ return self.__data.indent def setIndent(self, indent): """ Set label's text indent in pixels :param int indent: Indentation in pixels .. seealso:: :py:meth:`indent()` """ if indent < 0: indent = 0 self.__data.indent = indent self.update() self.updateGeometry() def margin(self): """ :return: Label's text indent in pixels .. seealso:: :py:meth:`setMargin()` """ return self.__data.margin def setMargin(self, margin): """ Set label's margin in pixels :param int margin: Margin in pixels .. seealso:: :py:meth:`margin()` """ self.__data.margin = margin self.update() self.updateGeometry() def sizeHint(self): """ Return a size hint """ return self.minimumSizeHint() def minimumSizeHint(self): """ Return a minimum size hint """ sz = self.__data.text.textSize(self.font()) mw = 2 * (self.frameWidth() + self.__data.margin) mh = mw indent = self.__data.indent if indent <= 0: indent = self.defaultIndent() if indent > 0: align = self.__data.text.renderFlags() if align & Qt.AlignLeft or align & Qt.AlignRight: mw += self.__data.indent elif align & Qt.AlignTop or align & Qt.AlignBottom: mh += self.__data.indent sz += QSizeF(mw, mh) return QSize(math.ceil(sz.width()), math.ceil(sz.height())) def heightForWidth(self, width): """ :param int width: Width :return: Preferred height for this widget, given the width. """ renderFlags = self.__data.text.renderFlags() indent = self.__data.indent if indent <= 0: indent = self.defaultIndent() width -= 2 * self.frameWidth() if renderFlags & Qt.AlignLeft or renderFlags & Qt.AlignRight: width -= indent height = math.ceil(self.__data.text.heightForWidth(width, self.font())) if renderFlags & Qt.AlignTop or renderFlags & Qt.AlignBottom: height += indent height += 2 * self.frameWidth() return height def paintEvent(self, event): painter = QPainter(self) if not self.contentsRect().contains(event.rect()): painter.save() painter.setClipRegion(event.region() & self.frameRect()) self.drawFrame(painter) painter.restore() painter.setClipRegion(event.region() & self.contentsRect()) self.drawContents(painter) def drawContents(self, painter): """ Redraw the text and focus indicator :param QPainter painter: Painter """ r = self.textRect() if r.isEmpty(): return painter.setFont(self.font()) painter.setPen(self.palette().color(QPalette.Active, QPalette.Text)) self.drawText(painter, QRectF(r)) if self.hasFocus(): m = 2 focusRect = self.contentsRect().adjusted(m, m, -m + 1, -m + 1) QwtPainter.drawFocusRect(painter, self, focusRect) def drawText(self, painter, textRect): """ Redraw the text :param QPainter painter: Painter :param QRectF textRect: Text rectangle """ self.__data.text.draw(painter, textRect) def textRect(self): """ Calculate geometry for the text in widget coordinates :return: Geometry for the text """ r = self.contentsRect() if not r.isEmpty() and self.__data.margin > 0: r.setRect( r.x() + self.__data.margin, r.y() + self.__data.margin, r.width() - 2 * self.__data.margin, r.height() - 2 * self.__data.margin, ) if not r.isEmpty(): indent = self.__data.indent if indent <= 0: indent = self.defaultIndent() if indent > 0: renderFlags = self.__data.text.renderFlags() if renderFlags & Qt.AlignLeft: r.setX(r.x() + indent) elif renderFlags & Qt.AlignRight: r.setWidth(r.width() - indent) elif renderFlags & Qt.AlignTop: r.setY(r.y() + indent) elif renderFlags & Qt.AlignBottom: r.setHeight(r.height() - indent) return r def defaultIndent(self): if self.frameWidth() <= 0: return 0 if self.__data.text.testPaintAttribute(QwtText.PaintUsingTextFont): fnt = self.__data.text.font() else: fnt = self.font() return QFontMetrics(fnt).boundingRect("x").width() / 2 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091908.0 PythonQwt-0.10.2/qwt/toqimage.py0000666000000000000000000000327500000000000013444 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # (see LICENSE file for more details) """ NumPy array to QImage --------------------- .. autofunction:: array_to_qimage """ from qtpy.QtGui import QImage import numpy as np def array_to_qimage(arr, copy=False): """ Convert NumPy array to QImage object :param numpy.array arr: NumPy array :param bool copy: if True, make a copy of the array :return: QImage object """ # https://gist.githubusercontent.com/smex/5287589/raw/toQImage.py if arr is None: return QImage() if len(arr.shape) not in (2, 3): raise NotImplementedError("Unsupported array shape %r" % arr.shape) data = arr.data ny, nx = arr.shape[:2] stride = arr.strides[0] # bytes per line color_dim = None if len(arr.shape) == 3: color_dim = arr.shape[2] if arr.dtype == np.uint8: if color_dim is None: qimage = QImage(data, nx, ny, stride, QImage.Format_Indexed8) # qimage.setColorTable([qRgb(i, i, i) for i in range(256)]) qimage.setColorCount(256) elif color_dim == 3: qimage = QImage(data, nx, ny, stride, QImage.Format_RGB888) elif color_dim == 4: qimage = QImage(data, nx, ny, stride, QImage.Format_ARGB32) else: raise TypeError("Invalid third axis dimension (%r)" % color_dim) elif arr.dtype == np.uint32: qimage = QImage(data, nx, ny, stride, QImage.Format_ARGB32) else: raise NotImplementedError("Unsupported array data type %r" % arr.dtype) if copy: return qimage.copy() return qimage ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1626091908.0 PythonQwt-0.10.2/qwt/transform.py0000666000000000000000000001356100000000000013650 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the Qwt License # Copyright (c) 2002 Uwe Rathmann, for the original C++ code # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization # (see LICENSE file for more details) """ Coordinate tranformations ------------------------- QwtTransform ~~~~~~~~~~~~ .. autoclass:: QwtTransform :members: QwtNullTransform ~~~~~~~~~~~~~~~~ .. autoclass:: QwtNullTransform :members: QwtLogTransform ~~~~~~~~~~~~~~~ .. autoclass:: QwtLogTransform :members: QwtPowerTransform ~~~~~~~~~~~~~~~~~ .. autoclass:: QwtPowerTransform :members: """ import numpy as np class QwtTransform(object): """ A transformation between coordinate systems QwtTransform manipulates values, when being mapped between the scale and the paint device coordinate system. A transformation consists of 2 methods: - transform - invTransform where one is is the inverse function of the other. When p1, p2 are the boundaries of the paint device coordinates and s1, s2 the boundaries of the scale, QwtScaleMap uses the following calculations:: p = p1 + (p2 - p1) * ( T(s) - T(s1) / (T(s2) - T(s1)) ) s = invT( T(s1) + ( T(s2) - T(s1) ) * (p - p1) / (p2 - p1) ) """ def __init__(self): pass def bounded(self, value): """ Modify value to be a valid value for the transformation. The default implementation does nothing. """ return value def transform(self, value): """ Transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`invTransform()` """ raise NotImplementedError def invTransform(self, value): """ Inverse transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`transform()` """ raise NotImplementedError def copy(self): """ :return: Clone of the transformation The default implementation does nothing. """ raise NotImplementedError class QwtNullTransform(QwtTransform): def transform(self, value): """ Transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`invTransform()` """ return value def invTransform(self, value): """ Inverse transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`transform()` """ return value def copy(self): """ :return: Clone of the transformation """ return QwtNullTransform() class QwtLogTransform(QwtTransform): """ Logarithmic transformation `QwtLogTransform` modifies the values using `numpy.log()` and `numpy.exp()`. .. note:: In the calculations of `QwtScaleMap` the base of the log function has no effect on the mapping. So `QwtLogTransform` can be used for logarithmic scale in base 2 or base 10 or any other base. Extremum values: * `QwtLogTransform.LogMin`: Smallest allowed value for logarithmic scales: 1.0e-150 * `QwtLogTransform.LogMax`: Largest allowed value for logarithmic scales: 1.0e150 """ LogMin = 1.0e-150 LogMax = 1.0e150 def bounded(self, value): """ Modify value to be a valid value for the transformation. :param float value: Value to be bounded :return: Value modified """ return np.clip(value, self.LogMin, self.LogMax) def transform(self, value): """ Transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`invTransform()` """ return np.log(self.bounded(value)) def invTransform(self, value): """ Inverse transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`transform()` """ return np.exp(value) def copy(self): """ :return: Clone of the transformation """ return QwtLogTransform() class QwtPowerTransform(QwtTransform): """ A transformation using `numpy.pow()` `QwtPowerTransform` preserves the sign of a value. F.e. a transformation with a factor of 2 transforms a value of -3 to -9 and v.v. Thus `QwtPowerTransform` can be used for scales including negative values. """ def __init__(self, exponent): self.__exponent = exponent super(QwtPowerTransform, self).__init__() def transform(self, value): """ Transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`invTransform()` """ if value < 0.0: return -np.pow(-value, 1.0 / self.__exponent) else: return np.pow(value, 1.0 / self.__exponent) def invTransform(self, value): """ Inverse transformation function :param float value: Value :return: Modified value .. seealso:: :py:meth:`transform()` """ if value < 0.0: return -np.pow(-value, self.__exponent) else: return np.pow(value, self.__exponent) def copy(self): """ :return: Clone of the transformation """ return QwtPowerTransform(self.__exponent) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.5544794 PythonQwt-0.10.2/scripts/0000777000000000000000000000000000000000000012131 5ustar00././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/scripts/build_and_upload.bat0000777000000000000000000000205600000000000016114 0ustar00@echo off REM ====================================================== REM Package build and upload script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== call %~dp0utils GetScriptPath SCRIPTPATH set UNATTENDED=1 call %SCRIPTPATH%\build_doc.bat call %SCRIPTPATH%\build_dist.bat @echo: @echo ============================================================================== choice /t 5 /c yn /cs /d n /m "Do you want to upload packages to PyPI (y/n)?" if errorlevel 2 goto :no if errorlevel 1 goto :yes :yes @echo ============================================================================== @echo: cd %SCRIPTPATH%\.. twine upload dist/* GOTO :continue :no @echo: @echo Warning: Packages were not uploaded to PyPI :continue @echo: @echo ============================================================================== @echo: @echo End of script pause././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1617896460.0 PythonQwt-0.10.2/scripts/build_dist.bat0000777000000000000000000000123200000000000014744 0ustar00@echo off REM ====================================================== REM Package build script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== call %~dp0utils GetScriptPath SCRIPTPATH call %FUNC% GetLibName LIBNAME cd %SCRIPTPATH%\..\ if exist MANIFEST ( del /q MANIFEST ) call %FUNC% SetPythonPath call %FUNC% UseWinPython python setup.py sdist bdist_wheel --universal python setup.py build sdist rmdir /s /q %LIBNAME%.egg-info call %FUNC% EndOfScript ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/scripts/build_doc.bat0000777000000000000000000000170600000000000014554 0ustar00@echo off REM ====================================================== REM Documentation build script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== call %~dp0utils GetScriptPath SCRIPTPATH call %FUNC% GetLibName LIBNAME call %FUNC% SetPythonPath call %FUNC% UseWinPython set PATH=C:\Program Files\7-Zip;C:\Program Files (x86)\7-Zip;C:\Program Files\HTML Help Workshop;C:\Program Files (x86)\HTML Help Workshop;%PATH% cd %SCRIPTPATH%\..\ if exist build\doc ( rmdir /s /q build\doc ) sphinx-build -b htmlhelp doc build\doc hhc build\doc\%LIBNAME%.hhp copy /y build\doc\%LIBNAME%.chm doc\_downloads 7z a doc\_downloads\%LIBNAME%.chm.zip doc\_downloads\%LIBNAME%.chm move /y doc\%LIBNAME%.chm . sphinx-build -b html doc build\doc call %FUNC% EndOfScript././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1617896460.0 PythonQwt-0.10.2/scripts/clean_up.bat0000777000000000000000000000121000000000000014404 0ustar00@echo off REM ====================================================== REM Clean up repository REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see PythonQwt LICENSE file for more details) REM ====================================================== call %~dp0utils GetScriptPath SCRIPTPATH call %FUNC% GetLibName LIBNAME cd %SCRIPTPATH%\..\ if exist MANIFEST ( del /q MANIFEST ) if exist build ( rmdir /s /q build ) if exist dist ( rmdir /s /q dist ) del /s /q *.pyc FOR /d /r %%d IN ("__pycache__") DO @IF EXIST "%%d" rd /s /q "%%d" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/scripts/preview_doc.bat0000777000000000000000000000113100000000000015126 0ustar00@echo off REM ====================================================== REM Documentation build script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== call %~dp0utils GetScriptPath SCRIPTPATH call %FUNC% SetPythonPath call %FUNC% UseWinPython cd %SCRIPTPATH%\..\ if exist build\doc ( rmdir /s /q build\doc ) sphinx-build -b html doc build\doc start build\doc\index.html call %FUNC% EndOfScript././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/scripts/run_test_launcher.bat0000777000000000000000000000077000000000000016354 0ustar00@echo off REM ====================================================== REM Test launcher script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== setlocal call %~dp0utils GetScriptPath SCRIPTPATH call %FUNC% SetPythonPath call %FUNC% UseWinPython python -m qwt.tests.__init__ call %FUNC% EndOfScript././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641627691.0 PythonQwt-0.10.2/scripts/run_test_venv.bat0000777000000000000000000000214400000000000015526 0ustar00@echo off REM ====================================================== REM Virtual environment test script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see PythonQwt LICENSE file for more details) REM ====================================================== setlocal call %~dp0utils GetScriptPath SCRIPTPATH set UNATTENDED=1 call %SCRIPTPATH%\build_dist set PYTHONPATH= call %FUNC% UseWinPython call :TestEnv PyQt5 call :TestEnv PySide2 set UNATTENDED= call %FUNC% EndOfScript exit /B %ERRORLEVEL% :TestEnv call %FUNC% GetLibName LIBNAME call %FUNC% ShowTitle "Testing in %~1-based Python virtual environment" set VENVPATH=%SCRIPTPATH%\..\build\testenv if exist %VENVPATH% ( rmdir /s /q %VENVPATH% ) python -m venv %VENVPATH% call %VENVPATH%\Scripts\activate python -m pip install --upgrade pip pip install %~1 for %%f IN ("%SCRIPTPATH%\..\dist\%LIBNAME%-*.whl") DO ( pip install %%f ) call %VENVPATH%\Scripts\%LIBNAME%-tests --mode unattended call %VENVPATH%\Scripts\deactivate exit /B 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462676.0 PythonQwt-0.10.2/scripts/run_unattended_tests.bat0000777000000000000000000000215700000000000017072 0ustar00@echo off REM ====================================================== REM Unattended test script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== setlocal call %~dp0utils GetScriptPath SCRIPTPATH call %FUNC% SetPythonPath cd %SCRIPTPATH%\..\ if not defined WINPYDIRBASE ( goto :no ) choice /t 5 /c yn /cs /d n /m "Do you want to run tests only from %WINPYDIRBASE% (y/n)?" if errorlevel 2 goto :no :yes call :test %WINPYDIRBASE% pause exit /B %ERRORLEVEL% :no for /d %%d in (C:,C:\Apps,%localappdata%\Programs,%programfiles%,%ProgramFiles(x86^^^)%) do ( for /f %%f in ('dir /b %%d\w*') do ( call :test %%d\%%f ) ) pause exit /B %ERRORLEVEL% :test set ENV=%~1\scripts\env.bat if exist %ENV% ( @echo: @echo ************************** Testing with %~1 ************************** @echo: call %ENV% python -m qwt.tests.__init__ --mode unattended ) exit /B 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/scripts/take_screenshots.bat0000777000000000000000000000104500000000000016170 0ustar00@echo off REM ====================================================== REM Screenshots update script REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== setlocal call %~dp0utils GetScriptPath SCRIPTPATH call %FUNC% SetPythonPath call %FUNC% UseWinPython cd %SCRIPTPATH%\..\ python qwt/tests/__init__.py --mode screenshots call %FUNC% EndOfScript././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1599462200.0 PythonQwt-0.10.2/scripts/utils.bat0000777000000000000000000000255700000000000013775 0ustar00@echo off set FUNC=%0 call:%* goto Exit REM ====================================================== REM Utilities for deployment, test and build scripts REM ====================================================== REM Licensed under the terms of the MIT License REM Copyright (c) 2020 Pierre Raybaut REM (see LICENSE file for more details) REM ====================================================== :GetScriptPath set _tmp_=%~dp0 if %_tmp_:~-1%==\ set %1=%_tmp_:~0,-1% EXIT /B 0 :GetLibName pushd %~dp0.. for %%I in (.) do set %1=%%~nxI popd goto:eof :SetPythonPath set PYTHONPATH=%~dp0.. goto:eof :UseWinPython if defined WINPYDIRBASE ( call %WINPYDIRBASE%\scripts\env.bat call :ShowTitle "Using WinPython from %WINPYDIRBASE%" ) else ( echo Warning: WINPYDIRBASE environment variable is not defined, switching to system Python echo ******** echo (if nothing happens, that's probably because Python is not installed either: echo please set the WINPYDIRBASE variable to select WinPython directory, or install Python) ) goto:eof :ShowTitle @echo: @echo ========= %~1 ========= @echo: goto:eof :EndOfScript @echo: @echo ********************************************************************************** @echo: if not defined UNATTENDED ( @echo End of script pause ) goto:eof :Exit exit /b././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1655399648.5574079 PythonQwt-0.10.2/setup.cfg0000666000000000000000000000005200000000000012260 0ustar00[egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1641633583.0 PythonQwt-0.10.2/setup.py0000666000000000000000000001200600000000000012153 0ustar00# -*- coding: utf-8 -*- # # Licensed under the terms of the MIT License # Copyright (c) 2015 Pierre Raybaut # (see LICENSE file for more details) """ PythonQwt ========= Qt plotting widgets for Python """ from __future__ import print_function import os import os.path as osp import setuptools # analysis:ignore from distutils.core import setup LIBNAME = "PythonQwt" PACKAGE_NAME = "qwt" from qwt import __version__ as version DESCRIPTION = "Qt plotting widgets for Python" LONG_DESCRIPTION = """\ PythonQwt: Qt plotting widgets for Python ========================================= .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/qwt/tests/data/testlauncher.png The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical user interfaces for the Python programming language. It is compatible with ``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``. The ``PythonQwt`` project was initiated to solve -at least temporarily- the obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is no longer maintained. The idea was to translate the original Qwt C++ code to Python and then to optimize some parts of the code by writing new modules based on NumPy and other libraries. The ``PythonQwt`` package consists of a single Python package named `qwt` which is a pure Python implementation of Qwt C++ library with some limitations: efforts were concentrated on basic plotting features, leaving higher level features to the `guiqwt` library. See `README`_ and documentation (`online`_ or `PDF`_) for more details on the library and `changelog`_ for recent history of changes. The following example is a good starting point to see how to set up a simple plot widget:: from qtpy import QtWidgets as QW import qwt import numpy as np app = QW.QApplication([]) x = np.linspace(-10, 10, 500) plot = qwt.QwtPlot("Trigonometric functions") plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend) qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True) qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True) plot.resize(600, 300) plot.show() app.exec_() .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/doc/images/QwtPlot_example.png .. _README: https://github.com/PierreRaybaut/PythonQwt/blob/master/README.md .. _online: https://pythonqwt.readthedocs.io/en/latest/ .. _PDF: https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/ .. _changelog: https://github.com/PierreRaybaut/PythonQwt/blob/master/CHANGELOG.md """ KEYWORDS = "" CLASSIFIERS = [] if "beta" in version or "b" in version: CLASSIFIERS += ["Development Status :: 4 - Beta"] elif "alpha" in version or "a" in version: CLASSIFIERS += ["Development Status :: 3 - Alpha"] else: CLASSIFIERS += ["Development Status :: 5 - Production/Stable"] def get_package_data(name, extlist): """Return data files for package *name* with extensions in *extlist*""" flist = [] # Workaround to replace os.path.relpath (not available until Python 2.6): offset = len(name) + len(os.pathsep) for dirpath, _dirnames, filenames in os.walk(name): for fname in filenames: if not fname.startswith(".") and osp.splitext(fname)[1] in extlist: flist.append(osp.join(dirpath, fname)[offset:]) return flist def get_subpackages(name): """Return subpackages of package *name*""" splist = [] for dirpath, _dirnames, _filenames in os.walk(name): if osp.isfile(osp.join(dirpath, "__init__.py")): splist.append(".".join(dirpath.split(os.sep))) return splist setup( name=LIBNAME, version=version, description=DESCRIPTION, long_description=LONG_DESCRIPTION, packages=get_subpackages(PACKAGE_NAME), package_data={ PACKAGE_NAME: get_package_data(PACKAGE_NAME, (".png", ".svg", ".mo")) }, install_requires=["NumPy>=1.5", "QtPy>=1.3"], extras_require={ "Doc": ["Sphinx>=1.1"], }, entry_points={ "gui_scripts": [ "PythonQwt = qwt.tests:run [Tests]", ], "console_scripts": [ "PythonQwt-tests = qwt.tests:run [Tests]", ], }, author="Pierre Raybaut", author_email="pierre.raybaut@gmail.com", url="https://github.com/PierreRaybaut/%s" % LIBNAME, platforms="Any", classifiers=CLASSIFIERS + [ "License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)", "License :: OSI Approved :: MIT License", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Widget Sets", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 3", ], )