././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1727277889.3908858 itango-0.2.0/0000755000000000000000000000000014675025501011535 5ustar00rootroot././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/.gitignore0000666000000000000000000000122114675025471013533 0ustar00rootroot# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] # Tempory files *~ # C extensions *.so # Distribution / packaging .Python env/ bin/ build/ _build/ develop-eggs/ dist/ eggs/ lib/ lib64/ parts/ sdist/ var/ *.egg-info/ .installed.cfg *.egg # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .cache nosetests.xml coverage.xml # Translations *.mo # Mr Developer .mr.developer.cfg .project .pydevproject # Rope .ropeproject # Django stuff: *.log *.pot # Sphinx documentation docs/_build/ # JetBrains .idea # virtualenv .venv # file generated by setuptools_scm _version.py ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/.gitlab-ci.yml0000666000000000000000000000164014675025471014204 0ustar00rootroot--- variables: TWINE_USERNAME: __token__ TWINE_PASSWORD: secret default: image: python:3.9 stages: - build - test - release build-pypi-package: stage: build script: - pip install --upgrade pip - pip install --upgrade build - python -m build artifacts: expire_in: 1 day paths: - dist/ test-python3: stage: test image: ghcr.io/mamba-org/micromamba:latest parallel: matrix: - PYTHON_VERSION: ["3.8", "3.9", "3.10", "3.11", "3.12"] before_script: - eval "$(micromamba shell hook --shell bash)" - micromamba create -y -c conda-forge -n tango python=$PYTHON_VERSION pip - micromamba activate tango script: - python -m pip install dist/itango-*.whl - itango --help - itango3 --help release-pypi-package: stage: release before_script: - python -m pip install twine script: - twine upload dist/* only: - tags when: manual ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/.readthedocs.yml0000666000000000000000000000035114675025471014634 0ustar00rootroot--- # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Build documentation in the doc/ directory with Sphinx sphinx: configuration: doc/conf.py ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/LICENSE0000666000000000000000000001672514675025471012567 0ustar00rootroot GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. 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 that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1727277889.389886 itango-0.2.0/PKG-INFO0000644000000000000000000002655014675025501012642 0ustar00rootrootMetadata-Version: 2.1 Name: itango Version: 0.2.0 Summary: An interactive Tango client Author: Tiago Coutinho Maintainer: Benjamin Bertrand License: GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. 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 that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. Project-URL: Homepage, https://www.tango-controls.org/ Project-URL: Repository, https://gitlab.com/tango-controls/itango Project-URL: Documentation, https://itango.readthedocs.io Keywords: pytango,ipython Classifier: Framework :: IPython Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+) Classifier: Programming Language :: Python :: 3 Classifier: Topic :: System :: Shells Requires-Python: >=3.8 Description-Content-Type: text/x-rst License-File: LICENSE Requires-Dist: pytango>=9.2.0 Requires-Dist: ipython>=4.0 Requires-Dist: packaging Provides-Extra: qt Requires-Dist: qtconsole; extra == "qt" ITango ====== An interactive Tango client. Description ----------- ITango_ is a PyTango_ CLI based on IPython_. It is designed to be used as an IPython profile. It is available since PyTango 7.1.2 and has been moved to a separate project since PyTango 9.2.0. Requirements ------------ ITango is compatible with python >= 3.8. It requires: - PyTango_ >= 9.2 - IPython_ >= 4.0 See previous versions for older compatibility. Install ------- ITango is available on PyPI_:: $ pip install itango # latest version $ pip install itango[qt] # to install qtconsole Usage ----- ITango can be started using the ``itango`` script:: $ itango # Or itango3 if using python 3 or the ``tango`` profile:: $ ipython --profile=tango Features -------- ITango works like a normal python console, but it provides a nice set of features from IPython: - proper (bash-like) command completion - automatic expansion of python variables, functions, types - command history (with up/down arrow keys, %hist command) - help system ( object? syntax, help(object)) - persistently store your favorite variables - color modes For a complete list checkout the `IPython web page`_. It also adds set of PyTango_ specific features: - automatic import of Tango objects - device and attribute name completion - list tango devices, classes, servers - customized tango error message - database utilities Check out the documentation_ for more informations. .. _IPython: http://ipython.org/ .. _ITango: http://pypi.python.org/pypi/itango/ .. _itango-0.0.1: https://pypi.python.org/pypi/itango/0.0.1 .. _PyTango: https://gitlab.com/tango-controls/pytango .. _documentation: https://itango.readthedocs.io/ .. _PyPI: ITango_ .. _IPython web page: IPython_ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/README.rst0000666000000000000000000000336314675025471013243 0ustar00rootrootITango ====== An interactive Tango client. Description ----------- ITango_ is a PyTango_ CLI based on IPython_. It is designed to be used as an IPython profile. It is available since PyTango 7.1.2 and has been moved to a separate project since PyTango 9.2.0. Requirements ------------ ITango is compatible with python >= 3.8. It requires: - PyTango_ >= 9.2 - IPython_ >= 4.0 See previous versions for older compatibility. Install ------- ITango is available on PyPI_:: $ pip install itango # latest version $ pip install itango[qt] # to install qtconsole Usage ----- ITango can be started using the ``itango`` script:: $ itango # Or itango3 if using python 3 or the ``tango`` profile:: $ ipython --profile=tango Features -------- ITango works like a normal python console, but it provides a nice set of features from IPython: - proper (bash-like) command completion - automatic expansion of python variables, functions, types - command history (with up/down arrow keys, %hist command) - help system ( object? syntax, help(object)) - persistently store your favorite variables - color modes For a complete list checkout the `IPython web page`_. It also adds set of PyTango_ specific features: - automatic import of Tango objects - device and attribute name completion - list tango devices, classes, servers - customized tango error message - database utilities Check out the documentation_ for more informations. .. _IPython: http://ipython.org/ .. _ITango: http://pypi.python.org/pypi/itango/ .. _itango-0.0.1: https://pypi.python.org/pypi/itango/0.0.1 .. _PyTango: https://gitlab.com/tango-controls/pytango .. _documentation: https://itango.readthedocs.io/ .. _PyPI: ITango_ .. _IPython web page: IPython_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1727277889.3778858 itango-0.2.0/doc/0000755000000000000000000000000014675025501012302 5ustar00rootroot././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1727277889.3838859 itango-0.2.0/doc/_images/0000755000000000000000000000000014675025501013706 5ustar00rootroot././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango.ico0000666000000000000000000004007614675025471015704 0ustar00rootroot@@ (@(@ ff32/+f9//999 ff30?/$U (@( )2)c,Q@g\Qg0)!4'fgz9M"3<,U&/b(%I3o '(R"@#H ,\%0d*0d+!> 4L|@a+-L{oҤK]E&9&6,`)5t12o/3p.1h,%O!!A"G-`(3m.4q/3m.3j,5q.*X%09aLF_as##5 3wo9C_$\$*-\,=:=v:m]*. f2!fLWYXX[L$T+B.`*;t7;s88m5&M! .@"@-4r)3p+)C@h p%!q|sOq:#N .վ8[YXXX]?U6%B%m>x;=t::q78n5(Q$$M2k*4s,.Z3jxt.,}U}ȣMYYXXXYZ&N$.25b3FC=w:4l1$L /e*3p-1h+$/Lvv( z&tbx{w8XYXXXXX[0׮)=&X7c58k6'K$+^(3p/1k*",O n j-*x51|)"t2B}lCTYXXXX[M!=R"L!4q15t.-O?tt<=nVu[;4fXXXXX\;ٷ?2n.6r33i*%+M-#-&5/znlDND<2bE[XXYY/g*Z1f/6s2:t6A Q?/(t.)z&o-7~Zv7@rvA~-bC[XX[K;&N$8u58u6)R' 33 0)L%Z]Yp1pE}hre(դ/[,>y;=x:+P)c΢loѾHmnQxńex}6h 5 06h6@x=:r7!>!7^Af:^T&Jrb @ !8dr;2q4X@9`PZ|iwϒfBn\!41N-Y)B}?Ax>,N*Sxk?QrhNoRvǜ'N -Q+@z>B|?/V- oוCg\=0i:eaDi)E%]3f'B%a>t;?z<4b025YMtM 0/f)4p0:ip:`FfQw^2\0?{<;u7&J@Y_yܙQux7.b)2m-?z<3[;5So.S7:`0&=$q>t;x;6d4'5!\ 0S*Az;xF ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango.png0000666000000000000000000003623514675025471015720 0ustar00rootrootPNG  IHDR>asRGBbKGD pHYs  tIME +;O . IDATx}gx]Օ)IWnɽ 3@R7 gRf$RȐ>TB&tl70E-wݫ[9{ǹ yHu9Z]eiFiFiF5% o?$G2J**˗\zcl 5 U fFqp^Bйy=#]u͟k02Q.(@$tSST_}ؿ> (܂bnW}L8r0tWb,N, +QRLPT;O.(ph F~]AK-]weI8 W_sd#`-tfZ4?nn,HӨ0jc'HfpŢһX\?eBH: LZ`G]5Pf-+W_"즧& Ɓ |bٸ7b|4観p@ޘnWdsfqn;J _֟ HmVf3zM%?yQ9s6\f y|q\V] v M4txMyO}êG.CKVlm{ҴXhqȡ"O M k1.AstѶޞޡql‚/}K IT7!۶i߼X84bMi:$,7ǯ6>ww$&BltߚpZ@YcBBٍTx헾Q=s9LR9+~}|taweMᯖZ e%l `@&voY9eюo˾<)'mfD9B@T]2ovc)M [|{Yu^qō7]<k萱0ȱX2OIB%,">tXfro}z6 Sw\0P&fGl/tpϱaC׉HmTV]7kLϯ9Gk֮r5וyLNlPQlߺM<|cc'Y*ecqL#[J&6o34eDpr NgKhL|~?jkuוs؉EAʆ4Dc1|zS~sdL^Xqg@Qܢ[\~ :5 oq%&4m$9I~ Dp,{Tƙu_s [w"_veĊ9>M`$4>M[7>Pۡcs;Y9:ˇ| 4"= .)z*mVEQ6@`An8g~LyR#H XqbV "?7=vc #ĉcGO[U\@oR FɴS<̘pJq*kNt͛.m[ ;B Ƈ;GDm"9MvT l3LtogZfx`HM D  o>ձ$SeUuP ,0A/n}~zO]ݑwpg6ޓG"pHcaiڞix)+/Tg>5FSG屮cYmK&r,(HM{^?Ͼ0؛3~b񧇿51jȦhL9ԈOG6c \RTtܼ?E;̌`]v|B,[K3DN$z&C֞3MO~qzgh?EOEʼn{w7ӂjyps5rv0zu'" E[f]N" 8I H4N/DUc\>Dq|է6c Ur"`p2`k];gYsSm}*2+IDEwFŢUi[u9::\y%σOn,W*)X_\R o 椴= c*sHW8-owllxdnefP*XA#X*y5DvUV & I#1egA8 N]v>qEʪ/FZ<\%`f0aOǷ~I] Q곔ERIH%gx23M^7 Ē!&,E" hP0H`Is&SYy~e-7/]UXRԔyѼhrP҆әjZg,! w-Uix HsTTkYz%]QZFɣ}]2J!+'uMػC+˪~y.(t*|z̓ehh?ضLCzw`NM[l-faiv7@`%eUeI$ hvY$"@IHPϏvC#2.(,8׮S EEsgV]gV2 v`;ntXkJ_DH )b/&C1&ffFO缚ROH |Mz+0iIPRͅů 7_T|2`DD1Xl=r hDL %B+Ht?RfL3J2V(S^Omu7CBf& N2+v,*--|fm t\si2uV4 P6r,)AR 7N )ByMȑḓDcZi MD|6_ڏnbn83R##3յ:ڊ"T5438֕1ӅC6D!$,J1A:n!/T"dB"*4ܾRA7׻:-o͑`B0(P/>x|`R1 e+2J**ZcOoNJwk +@a@x :ёg4s׾,Uyc,*L tGJɺܛxh:DBSzVz3H;! ~cѹFɽ`rjژ O~YJhϧcGM_~3oonY~O]fdU׻ (N]|jE)D0\ C*Ee1$|?$>5[e<>NL.%(AAPt{o6? ho?on0+PJasoPˊ'q}|Ysr` EA9Dqqt"h$ 8]H)Wd18""`AZR.'ik~$nD{N&X^T\hUBj9 `v뻳+kMOMe(+&k05N&یn\'k:?b(E04AW*U'xI=6f!(meB*kΌ,#vFuO- :>VojQ*@J32Kc(+-/B)Ř9Tq,T6W`g̀b@3٬II`EyLT5 D6WWR t zP W5xۮxNZ{K?{.# 1t` R–6)ț㢵%Ww Ɠ+)A9^RC_'scz@Vs#_(fcw>ߢmO]%̊ .0=llʃ2 \!b|Pפ5~)1[g"2=+=O׈S4Dg|rP^UlBNn`)A@yZuKҾ2yd\ܦQ,I\dbHcJFpI8 +C$FY} ^±8jv`rbB1@ZPJ!??XZsLB2 - *u/hvgV2 CI U1m"**9kߑF(mxj[;@r d 69 Dv,'D<&Bta. MDٸq7F 4ݝ-9I9+XVs@Ad9?C w`p+PMg5kr+2iYN+7iLfVpfvX KN+?J,7 +fPp%80 i3[ \dLXiHHǁHˆrD,xjÙeqES#{<0x&E忂OMK-Iɠ"ui'u9c{򢼢eo|1-Fc >p'B Ɍ2 G 4P~Ol1uP]Vl`d8AJ),y,x]2u1pyzf'L Oke5l[@" !昶au?9>==}OR"sЅ jkydQavb0-;w-6.X*9[*&t$r+r1Ka@Ky)[FlB1T,ض>p!'#çdc)kZW bgq D3 )#>#qAZ?PwK-LD+J=&< C@ Noh̝/dKFfaU*&9C~/YJg>|8zp')x돞K5_Vwg8lK8I|cԲsyݼӦiLs^`ÒU_p܂B ,}s:_%9WSM_m+ IkVf]WVKU +kY@&5r~&iI1WWT= i7tcz:05;CjKB` c uWw=d\tz'nހwph`h/{PzAvo~tҺFWtae}U պ00tbͩ`%-ÄG^lǷo@ż"tA 0ABq;(1n٨]|9edZVMر7U9 7kNEYڅKKDfn40;vHB'JS@+ 7;Sw@.t i"J".Xڌ/JH X5}_iп=t_-XǫןK\d5EExAJtXp3urz?3|n5fwՄ00nGqV)(+B 75չݼq'-y\w.+VVaPV &%i~ t'_nfRkf(f(,Ƌ_›u3fB( \ {= R1pyUup߉mcO*lį-Y3[|h3r3҈XCL.'%43s@{\@@I:N<}?t]AB莆9EXPUٗ.-P r~IZmbN^ȟؐio{/.h)w7 m$˽&!M┚qe72jBai?w!!vF+$9>ރ3KD4 @.{ώ('- \]Tnq˵|*NJЙʙ3`- @B 4U}}# r5!dز\v+Af rEcSyGޯ`q޽6,y+טN`"%OZU33g}حKt)I; [tVIc#9=Ήc|Scq$3Vn.!c\@cH"S q4kN3鿽sL E'1 ЬOx"fFRK&J8:9X2A* GJ$ciw&$z MFIKq+ YBLB ϻcqq!XvC倡`vN2c?-uv"bfw3R^(KnB:&h|p}h‚dMFXtH'Y'!崣{iǺ=Ks?_8MlI ,쩈 Xp3mi#P7^܎%mW) )86nP w\{âk_ڷn SDkʑ̮'GۮbHζ6؉ u+#'?t:HC,27׶P̭ryɌ a`xk}4dzAZ*+L@oF 1 an`I+A >kVI| "vލ}5yE`L9]9(D~u30=ٽ#<Fr۱ bj/96m,a!XukuݕoߋÓ#(31R`ܟ fˁEs)gpxuunӼ`XUhc+;8ޒ(+Z'#$*]m#rg` \9t@e}8yAN4 $%HIV$(99gWvn<[5!׉y7<-Vg xu%sskk>VcҵGy4bPu=c. DN ,(ħ4X2`:$qP8G,X?2SSMu~qgIUL ..-z+H%ucՀ"d ‚N tPJu 1zF8J)WU:.z +_7wт-vMpp?4{`N+Anx󳷆lESڀ&jG`;6,[ģ^< ab&3(b&0 _+Hx ڗXo<4uQm\"ܓ\W*1x+N|o9[AR:>w7HΚJUz i/XV6֮H.I/R< ĺ =ؑldžR|Mp`"ti iIĒueO|soEtF^=[jY,_IIDb&㲀1=ꉜrvq]E'V}veO&S"Reab 1 0 ہ!t 'E ݟI\Ԝ;2>{egaqOMtOdbuo#7So~S'b:殭ee&Ib6$H`\6:2$̐t_m[p P€Jmپ/nUQf0 x9XkhO@NSSK뾮er-87G*1y[s^Aa'<4Rl0=C)xR_LMS':?ba9<b!(De㜳c 'p xupjyw#ɖ aVfG)L7M&38djgMcvZE^'t̀cb2;HN? qK«&m]fsüE٦.n^(&8>'-';{VeɁ@0xY~^>[ӆmTǪ*+e_Ҿմ!Ȕ)AT01/`d _0JF!tR9O`t J4e5—l2|&-%{ּ9 +uMwk xb@n9q>gyIax$1ZR B~ Q;ib}&!fYXMHJKd\Luז!8эu9'{_4XFxKZ>ޗ|C;jbd"ZA{C Qh5HO4Ax)BڬoD{ΫiY3ƅX(;'4Zpix<9,)L}vNF,.BR 9߰{3%Nj+8h3+:J@`2KHBӠDֱ8ytMU;̺8cqFޝWՔe@f&ΙZn?-o'W}WVTV1 K %K힂cOlزuUjcnf8ÌC8R.M~ L<]ap=Od KN<8yu-^p=C7TcS0#+͛X"M=!N kr8~a0N24G{[9`^;ʎQ*`D`(&}0u 2E(pI>˪MHyѝg^swkWXQ d)lά fpqcKp+-oE-ό ]wׯ FV0%{;Nܰuϫ-~Ws^ݧO;I8Z.L*7X!tWP4hoOrsN./h[m{?T]dd4{ .fۃ)395Mߛ7[]oz+Z>A ]9thԵ"m%7yI{zy-Rf@z*3E'̼* :Sɜ:FV4#[,;S?Peb؞=;PHr n epQUMKKew>3uڙӪC;:cPfg18MP ͙su[|  dfXD^F`0` Nc`e-&(>\2nv5+\_zgdf|=7/g]G瀮ȣn=<99A~?x|mUު_~k/>s74S^a6֗QҦ1iyέo;04>tʶ&y5YIPR!PI#`l7o8w5C=S .zۏ\[T{uR/X\*3|/3-'/[ض{@$~>$e~1O~I{_39]5˜jg/1--7 t""hB#CdNQ)`,$FdE]G1Ka OO!Ac+4luAaucc0H/\a<>@K>snnϭՄ9_7l';;{iT3rD6nJT'B6p33rJH&,ahޗ3ynwy-o?z*/,io=) h3)$4Mu7-9Y_x0< <OF̒]{v!6#B1;m:Y=;"d sVu6Ė8LP<@JXl I'~HX ĬV¥O?yD%cTKy|:3=z5ISCl  .~ױguUᾶ4DˋX^DpF6pDFM{M2VQTޓ&#T$Y.㳺EjB_b GJpRY$.tEי x<>v*x{MXvmni{ tSyI>^9FUe)p٫>OG4Λĉ/T*W'dL>2#ccc0;ԙsQjK)iBL<-1{X1TL'7qw!x$|ꉬc<|l듗z-²:4CY`f,l%vpcל@wg߼ P:TnC54y|W}SyAͣCLg)"PLDq};Gcxb#QCgn IDATxw|SUl&颃V{=- < TǃG  K!P(]g6]mJC_Ƚ9sϹD@D=c1;uA0}LV?cv|F BLf?c1c Rʥ8p{w]H@FfF}ԗ1cGBRFAdt bSq9( ؇D#zuA^n628Pg1cubDشI)1_ @_PTtgpc1?0px7vXq㏣ԳaAJ_sHIKX1c2gOZ,{HL#ZL"H"*&~qdd@_`(dRh*(UXaw?\OЍïҝ/IŬX?{D˳D(e++#$&ެxknnw2Ya>H A"A0ޖeA* 7'ʧg@iÿx<'r2UhrFB8À*wKFQ9{ FEv"XLW\hı7̫2SK߮eV[H+\HTu}~Z#lFlӪIK\&3v/T[?d%#G3?\_^8Y~KW~l:ፕTWw,ܽr;?/NeK]}A@-\>_lrwŅI`j<=@#3"/5~w6":dp6Oz |5ȎQ ۇ1j@%5,@0(0T?դcowWėQwQ8IWbg#T\ةTHʁ֮|ca/"(<%줁B[ws xv9HT.hӧ5|(D)RxuK P??ג$P{W[$ǥ Pֻ,腩z.cY!#QL1_^QEpV*̵Jfn>нU3l^\v.fQw @dDlLT2)R3 ̚cVLvZG-vjؔyT g;%pbcX;,O?̀{랠ݸ.,^4?f83ksiWxO?}<WÌHkt!'#qo]Gm~󾾉ϞlQ# cQSb/|JL߾.eE'ljJLue32w{zEeJa_##*h4B_`6zF^JH*y{0ƿwx3\f𪘏lFvҮhyuAK QE ir wl{q-M!hӴ;tpKg9OgY|A_`DrF$ }o1ĔacUi%_: =R2*O_L2ʮ c}J` R+.2d@~6 (@^66 /894j66 c\R&g1kSYx׬7qu4_Կ낹e&r_FfޕCeeBaFBc>2F#!3'u0Ƙ_WiH@M !@K@wNxvN?\t&(󍠼[ lϿ<[hQ u1f̈́2QQ[Zfޕʥ*(Vڔck ^([v[WxL̜NM-z6J(d<1Tx/>7nݛm)?Gvy~O1$A=Sl^!{?ڋ8Z2Ƙ(w'W|.$UFo ,Tk /7_YFfaJ Y9y)TL-2^Α1@Tp=:)bqwaY%y鉈xLS,w/+XO F[75r!sq,' 91kjEFiU|{*ldI` o#yŏeUmIޮJvmT򸽭Ye.3(r(|'1րew?a 9>cZj /)FxTܩ9\"ы*UӱpH=@ X2v2sg$RvZت |1f*9+""" :;u˯/1VT&n@pYƒdK?k!@B.)2H_XI%q띈0,H  YJF'v*8(8XgY cq?e]1 f?.p)XIvS:9pܸ_݈8 |=2=dR)^e \cAѵwX4uQF-}iƘ| c1&Yw :k3ADȊWM@ u9qQX vW6/̙hcS\7M9!5~㛩y磁awAX$_=ϴxX/ CV/?Mg/"6pعtOPD?@=+CTv`IYfc1ӣ+ŅIH)CK%i㩴V z{uq$[4}w Oi%]MNn0 HBvTU_^ĘY)Ȑy64{9֑MΧQ^DgBF/'$ضQ߱~1rDd m S+7-i\hMt5>b&;(;m&&m]z""2U4ChW)zD\Mvm9VIIkcKu49I+L)&pjaOF-܍'"8qĉ'N֜Cc?Q]`OC7PΤ@+M9H^#Em _rLjʫ=~y L)ۯk_Pw=^;8G{Fo^3=fK˯(rD1mJk>g&Ф=Zn=IZۈϯ>Uxa'0`$I=ЩVDih5)MDjF8qĉ:MBnر r}[cl#b.$ oeka!u$&ŞG?\"3xwHƕ@S`xk7]zzN(-_d8>J>H[5]FljRb/᧏#*+_L{M{O~TU8oq2& DH{>za{;H,Yi͹EHSoǟ8h 9Ot!wﯲS===+Y)vMa&k#"hBs07cR] 4ͯz?|J6 G{QH5S}W $f?n,Idɜ=^y#t(j?;8&lLa(7bKGeɈN.t柏ZGO?V!h:ɞX99t$l,лm9l… pkk6/o>x`[qy|>uP= ^ߝ:H WّL ~pC*%? 1c|}"Buh,8ʀ;e i@a(@V[zD0x2(29.#,s&5 wbT٦g^s{s{GV3:ӖppEXv .VĺjeX=i|R|(=;S]n}hԩ;zñ871cQvCA&yoLFk^4N5Ƥ(M'=ML#)&Zdꋹ[l'*}qykUm ]$"=%UV(SѦ7()rƉIK%ضDDJ>Ygr+rTSH*Rj_sW9+%NQڅWpY)+?oD72J{?Ci"cZ ])#.oyF/*ܷ60fN7:$2%M|?.'gKӈ֓jد@6(&HK7OmF΢cwh38qĉ'N֛[֑S'aM}4' 9=l] YA_N8qĉeeudF)q@}0C;xv86ۅ3TN>^7 ݀Pc5H+#ϭF`'KIX 2 s~sIۏ uoH2᭕9k HFvJv*x 6c11c=Cpv4-~3c1f8`g1c̊qc1Ƙg-1u$4)`4܂ʶ*C!ӧz7Gc-GV-܌'bEⳔ4Eк;tHCK8 Dm,_}"(6c#kԠkBਅԧX[=+sK9ov~cQP:4uQsy5kEC9Z0huhD2dvܑLϴ$</ jך*R=ȿ,Z0tyנ--_}'~QL&t=gʶ e}x1aH\>ʼn'Nuxg?w!H{= G'Hd(@Ӹ?g+W=~lލ`~-FXw8}F̓*QX".q5l|~c{@ k6YX˦@SG?:bP5U, G< ` K-Я,<7f)?2 Csy^lbd12,A'BK imȲSi( Qqpn;1t~Mip6.8aѸ.] SbƐ4!+ ~\5-58X] @D F})8}h?RW%Nzb.Ș;3ʽ"8%RB]@[<40،rscaT4K?,p!2`<$^-`+*0gWn]>:(k.WEGRÜ[VG12%F֌FH)rRzQ/ܮI%}F7kFT*KUuhKќvHThyXlcC #y>F[FݯL7dOZm"vRdWq;>BkGʚH\D_1縚:ou08qĩSbuDӇ?FҢ<$/-ILjҬ] lȷˋ3I'%iq`Q=[ﵐjT~h~Vd+6huqʤy]ےV"2/YS7ijGg!ݕ$ AَH>z̯nk.yIAzܿiH}t\C<݄d&U_I¿_m. AGC6PG=M`Hɟ)4rg$Vے$C7R[{)BVv&UmD6ꭍ`MmuQ֬]ĤGz%9Ugy8ĉJcizgVhlĕ;q'ܴCN䝡=rpF eBjU$7-DLܸ\~Pd4Vr Ye7VA f0Q"Nفw!GPѹuf v.ή A`YASθw $ kZC}w#q(0yv^y$υ@NTϒ*bXdl~<2!~نRrn`ȫ,O3zxϟ~^pRf< CbW꤉wlOk|$> ӶホEGUvpkyo2CrO$ϻ8ue7~O } @ӆtVYTAF@'Q5}W.c~r_=ez嗟unЧ"O 1|p6[*!1k1S'4(4 =_\WZ RSQS<[M)F33QߍDS)\)n~C3*hpcH"/hX\+}:`bNt~#@0 2Oe2[ΣۻmzO!OGg l7Qr+鼪,q IDAT9]cƇ!eҳ3<ЩODh͜@R>]߽w__ (IMί獿0cM AɫwЊ]T<MVBp;K?wmV,EęNQnܮ )&?@dt*]AocD#Sv Wo8x?WA(JW<pMauiX 1-+?{7'sc1پߴQgoX]PWb/!8/. ߚ, yJc Gŷ+L~ʻeOwS.mo~C0o8+e1wawУѕ6f_ޣ9~&B#AJj.9]a,zaO ƶh; OsHI q!UE?M+[pŪGHvlzuOc]ί^X h;32>կ8crGHw _ =Պ 2$Ì^0XFq#q.|ʫ#CDyd`(1m]U `ɉy˽ :ab-wW_qʴCt#jF~s|p,% ]Ԣbsy~ İ ʜ7׬&6h7c1XC&ѕ>hܬM}קVx81cąh[CE|YS7|HeTC[ YLMa+cp~ ǯ(LEFf,BoOMa:+cp(@ZiJ:]aj1XTV1wC2l<fN#axp適Fc膣rT#qy ?jNFl?'}zd%Xj|^[ʌTk%h`='Ů^}s=h>ZCUODDB@ N @ _rb/-%6NV*=aҍ_u9BCmu~ _#Ymӵ,3m{WQE/ZzhϪ~UI׳)drz\JS~Mf7!ie7RIzĺi+?Vpu5>Gb/~r~ѥVLu<9OԧGW1zWĺvU *M1d6> :k3ADȊWM@ P9fWou{,V?4Ha9Fwp1$ :p# Vq@ؗZU[7M9!5~㛩Pf[X0ı?vޫ=  ֱ=+(Zq>ܾܱ[hWng s~롿 3>Ÿw mʽu uR\I2uO _Uxz`3Mq_d,1 ~ugDV'?_/㻈Zf&@lBkGJuԎ-Ъ#;imlɹ=b&'kb>S`38<&D;??{K>v ]_lZ_F؎oBpDӐjn_~U RSPbr#1׀//a{*bXdl^wTz?!y?=؞6_.I}m7E2g .DnS bנtŋus~=^1k|X]̍,DwA ]h ['t.. ^/F_.-=.8UJ @ ecǘS H0XW,Y~J.a(HFWM_m οt]S87OFt%1/bʵ4l]Ь3efC9cګ@}._s~v]'?aEGe s1)Nƹ1ep{nکDgqY_gֵrbx获>w)P rj\yXpO-V0pDCd>";@VYLdФᮘv)ߤZ'Ė c1.2ǎ.A~%d:Q_ #W$[s[mwKr(\ 2_u}s|pQl,`ISt,7G;p6zwuw79]Ƈ{""1yEAҳ/{ubNŌM-p<4e/DŽkA3â㲾#'ƻuBS|d',)&ڲ3y#&MjiS/],EDXcL ljzN{ DOQ2 :4q O叩'ϘtwD5Qb|Mk07յ]lM\.)^G-'+3lOYfg+m.= KW 뎰uW*ѯJ^~c}M W+~]ȋ/g0i9c{9?vc蟴f>$*9H6YFD!fFd~o]1w|Tbf|`JS> K-&?K8QvRQw<39WGߘ j=` Pb(-} ch롃ss{]p; y突7lvi+ZRn6 (Y+` 嬨KK xn .K㞘v1 Wt=pm׫v6zj=z~7> yZjUw+pG߆TbV~"X:?zD h?>p鎩ZݷPu[UR2~}}d.vи㊶Keo"yɏظh4:z;AvW۾s6( ػ9}1EɝKs#,5j;=bx9HisΘ9>cv13>x˻ucrPCea۶;^^G5ȏ՞:&̀{]j hLJjb6eŅOit*1&c~7]E.f;?pbҍDt6zi,:v֊fz6AIDD7Nl@3lQm"~'h 1f 2Ń*jg3ʵX;&56Q~ tj΢o=*yzKZs(KG]Eߏr_dt(gS>S]ܯL2Ξ3f$cZ{9 s-#]ṷ j6V8OѩF"cEKoOG'L:t_ wIOD{tfχ4'٘%keRj9Zج61# 4 PKyItyrzUkQ}ޖoso%:G[f 4O}D;VRT~j^֑SIR{5E9= &WiRQߤmHWudn(󾤵ȚNܯ8q<=\㑎8=T:`DB;_{_@.A \zbB)X~X(Ģ_1V9k0kwAT;|m3 HBDLJ5=w؋5*z=Z]ZN&qx"Z2qĩdNJaJOE|U4n1c;1o[u<1c11c1+;c1cVvc1Ƭ1cY1c1b3c1f8`g1c̊qc1Ƙ〝1c1+;c1cVvc1Ƭ1cY1c1b3c1f8`g1c̊qc1Ƙ〝1c1+;c1cVvc1Ƭ1cY1c1bv] SP @Jfuܹ39nb,c1~H;q# ؟f-ޯ8ڟսGu=7Y1Sbc1b8tONLUB-S%Nzb.Ș;3bk Dp ̛&BJ ?~TѦ'ॲld\|v"b3 lĝΥ(G1ļ!*E_;$p,sU H!PNBün5{ǪˆW˷Sx7pzJ@ƛ9h7.apre[h_}h?R Tmu KB~nv< yMڅ1>=Q\x )Ȑy64{9֑MΧQ^@Hx*OWMnގdE]&HǓBhUua~.S)PF VnZҸyj+/NMZ eޤCͧHb:obӎ-Ъ#;imlɹ=b&''I?ݤ^Nm=IӨBDd_Ut5:m@nZҺS-t# Q%-$7š94;٫dcߘZvH}Elյi5fvx JJaGЕ7[&lF5tOݓ}{J47͏Gq^'?uN8qHOԧGW$`ϡ_nB2'*ۯk_PwlЏzIJOL1Ĥp3K`$\|bE}Ԓ¥ M^5QE^ӊtZk$C7R[1Ϟo ZҤ-Hd(ĕJsWKSOMjf?C5Z5&]$S4[V1"R^v~@ N;C4}&Yt4'N8q2#+]GP`p^y$U@z$cȠ{p,Ǧ+{#/A{p (+y+O:uh>d>~H\Eꍯ׶+'sFٟ B4f_ɤ v zzz@'+7k vC^ځܢ*ѷE_hd:EQsb#y- hz.آGpxIcw"`#-\D2 '3;Y~<,w6Qɦ0/ 麦pOy$^~ aPg~FDt aj {(gA{cV?^5 ψCTocH*]cjJ>WoRKJ!8 v9?#G2GohRp|l0]B.1oc6ph1dz|KbtV{=t 7)=;S'$\OѢiѶ%("5qڴHٯb⽩=᭖@qGd IDAT+N^?GfC0ĴKnZ|:{j!zbVh;[Ss]c1<`ϋ/g0iʇB0f#9W u%Ū1({cO1̭i M[*wgsUVp 9h3, /9"9GLec}|_U_4N5Ƥ@~@Ip?sjD d&_}?e\-nfFGo"_Ѭ,-ޮ!ӠCJZ&cY씎DqhtvZ}1~m5yNNₑUW]ogc#|_2aF%l}FrMǂ GcT~J(-} ch롃ss{]޾`LDв~3k W? ߰ڥAHHq(67czo#[(lpo3Oc1x|n#o7zښ˞{-0m\8+8֚^<]1XpV0&uJ1c=Cpv4-~3c1f8`g1c̊qc1Ƙy DpJ ~(ϫK #^Ŧa'Pn.xIf` >5 ^ OO5ڲ15K]7K^kԗἛ;>ahsV+ 9X_mOF/{8ί#h1@qd6E[bwxTU?̤w= - @D@Dw׵꺫ZVׯl+"X@A@遐$&ޯ9ϓds9;\N$4=sz{PJDJJUlrώ'߅8q|!#{U"C{NUomp3V}?ĩ `5֢,/_?ߎoVBܽgS<qAJi~yLYvA 8]b{DY`h7kW_yǣ%#U!g'xp_j^W5EG6ᙅ#\psy1+x6V:Wu^8k7;/R?u sVtnδ/|}5 `aU>b!|$*[{8|ժ8#Aͯe8;_pHqUH=; odœ;Y]8:YnX(v.{o+a.;uND`;cNt{~w;>J@RE2V, 6A}q܏g%}-(I?wߛv#T-DuU7bDs8ӏ\nA H;I90?0o#&S͘'"")- g$:]>X/%_įPW/i I6eG͑Q;V;Z_k,OɏnI2D&.y^vȪm̓o@&F_@}mo(C.##z״Q1o_Y)W uwIy_O9LuG|pYuU29zIel_{ƝS?8.ߺKf/: #'̒%.NCÉ~_vt^F8t/JklJvb|QR\iٶ,s@_F  JBn[o0%HR]:|H>^b"$|l/I|}]$p⃲t_>BY/ahݏJ@DZ D{Y=+=$"b=*<0_ _PtrJ2^&*'-(ALh\Kl\#coݙ.=Oܕ 2SȌ)q>`WGM?ƈu)fD 4? ~9ur :Okj-ySC +ϓg&\Zy 9VކN(K_ٞoG&r\?WL'k+[W`"zx?>}pYd]Og_BD _)m7gh1`.JϬ` S DPOHW]_7%YN`kzC5DI'0+c-~ WݡsUARڐg5(Qk{|v +6ifh%wyo#sWXQ|^ m4^HGqN z',i\">i*"+0>R3i:.RAGbUl]ⶈc2sŎhzQ PnJ[xymx}*~ ƼS髆W@N}Q.yYaΜr~_`u0j"h.]:8h|q=;#1op̻ބOƉ`z! pZWX`0wYY \WoeݡsUAH 6-KknEr,Nz: MXmn'Koh/=#ǘ°xך4f_BֱQ]1! JD|@yŃh?>}*MA}7^2. }j^e֬P ȫ6c1lգܠGoWB݊u/?W<ӝrq(GJǪ"0aj/F?T'+\㋻t6=8řPV_Ecl.”6J~s,؅S(N[O?Ŋ؎qݡsU~䅨ko@ؑ SqGn>O_*1c5Y^&Nm3_'d%6"@Y-)o4 cڇ#7T) U#ߴ"f2X/mL ;cZ̵_5@?VJ]/U8_J5K"}8N%!WB˗I?X(G^/}Z=Ī:Tx'W>!W+>2xܕr)RP%6QnhwO_uDڕt|r'ywɵJt?yJ1W֥^~UΒp)ꗪjT,"!>${AޝCDDDDDNaNDDDDy0DDDDD;cNDDDDy0DDDDD;cNDDDDy0DDDDD;cNDDDDy0DDDDD;cNDDDDy0DDDDD;cNDDDDA HIIH<'v'_C{ }!;Z ?Sdqv:v:'"""r{U"U*`[6,VAGb]TPi|6jY]kƧG;{ĀyC/.WAuh9zdO""":ϹnJ̀)`#w((['ҍ`zMaT0@@7 O)+a?KwwH3S0*7bV,ll*!Ŀ7FکZNWn֥h2e%ۑ4wbRșJ@RO})dXl؟ Z_=|AEs{[qsaw"[vRq4oKR sC/2%ә\swګ_<(E 9>#Csv̙E߃W>| 0Hj{NȩBL<9ѢSZfkQ2nHJ[U4 P5INVKl@ ++?G}ޞ I6eG͑Q% "Ffx_R {+]KLD-%p8C X*.W$"C?dL\,NU}oODD: ΫdrL auْ S;wh,o Nȧ])cK@r=kIDlgvcbbbbbbbjJ)odƔ8q]K2+e]ՔWgl:,Djϼ? ^?tv75g$-?2umcL $R͒ SZMbە;}j?ɱw=L2*HΓcjwa"yI?Gכ{I3.ٝF.sK̂M.?Cሙ;=g4ú/ڗi.( DZvqm˙pP̛R=i7KmZ{i6|梴70u@i):⊸ <îL ~v#""sWQaSn_קÎ5~@q)NёXf䔷/\ꠡk^Fa.Gny Ky.jCb\%\8s@lx#h &G@wqO/ xkWueU9ӾJ]_Ą m3z7C;xr!VN *h*wow7eeȮ@TK^aQFY7n+ј64(/W,0]~=%LH=Мpk4s;WhUT cŤ~ r. DK{z90gWO s0lrm|}L1!s1 m&,Fd:>Xz}^ن;=B|.,l,[{:_>j@yp}x9O1#6!:&4v#""B/.gC/c'S9Z#xF`ق1:j+¦ ߿l;+f!&"1]$>wq.2/޽#qoGܣQt| $]he.?=?<| . o(o~ײ |?5[7գ']VOzAG*BD}Jwo⋿k|Lv#""UbZVhn%n+SsJ.QTH_FmF¦AO>.15rߴ0tk{ RP$U$ʛăyReUɡE}Dխ2m:lڸ%$`⃲)|8r0TL"b*˒;foe1]JLW *ߑMr1X$M^|<ȳ_jTNH^\vcbbbbbbbjJʗuty },,~e /H\q2ܼ?DDtV֛ΦHV,O7:ҐTYK>Iz>=_4i!j }/@pMnڏ5])@l_ V,GM^x?=[?$o5*h౳>޾zN&s[jm.`n"bn eOg۳=~))Mw-[}Bnj6Gd2~wbeU8z4X(OIEŎ_0~¡1pNխ*ڕD?/DXHu0QϚž@71)" BDI@>FTx'J!ԟTPaΫ4:]*шc0FQaMc!xC(r ʭF矢^[̙(/}4٥ǫk.'}'/F(ia8_>6vܿ袯o&duE=Va B7C~ۮ#pLFDGGˈ x ;@Ņ6Z̽H>X+L/CÞOqxW2֋Ma2'Fږ,% ahò;|Q_ Y0Ys:v]վj=ѥs"XDjR7M0؜?9q<0#~Co@ۡǙPNЅ6}do<aO@_pXO<˄1P .3)U6X˳`  v,8^w.X e: F/"|5/xנ"a8&극7*ǸKpQ\, vyʇlg bpbMhok4t-u4ء3pɲ*9;;SHQ//kd*IF7N=7A )'!;S^”-&^`}(m>"|`ʾ.D|:Wnþ}o I}ڿbP!8JnWH;|)_=jA|K! Ka¯0X c8xi+?M#z `\/&-ω/Y!ͻ`3 aryƌVPKRf(UpH;rpzOhO5eENWeUA<#.]``H\m83){Q۰~% Q%232QmFhCΫ6c>B~ %-yu{ %UL7c_a QSؙbXr\s+"5# &хqn9S>.fx9b)DYV'Nނ!#Pz1(QPӃKk)@yv[`Kh4`qf7/ԡ`r0uY` lg~?4(?m֢b}a %cE`:}Ui'@Qfz }}Ps#д ǫpJo iU:^M_Gů';_Ɖ}U3 /(5`+;MH=NuBa76ṅ_LjA~g^ oQ>x%F{0?گPk5Ǒ %NĈcY ],>JDVv1lv'6@qWolU0v:ŀߣkQg_L,?\[/Rt#L}55r-=Z/[?ԟ:8K&Cx5:ܥ3"Td!&f4 _Ō%#gRR ;^M j3Rf#,f#,Yݵs{;;uжy[+O@o?x{f16WDDu<'`uk؆cwJ#<%?t'UAwUpME=<[a04о\]֟7tz5FP9k UiYwa?QTc8Wl ڔ54C4Ҹx0}n^lG ;y׿H|x9F^g]qa".k+RwnB==)<}m(,6 a Bvo`/5-o("'_13ȡa:OOߡw׉v3l6O)c+F";cW֋r ZH#-cOj*u=Ph7tURTc@d.;i4+FUI E/ԤfOM)1^$m|]k-Fu }9Oqr`)FMmFAYY\h ,RE0nb\4q& I$ߋVz(D EvJ9 QvPNe+0n yo"ŷ,C_QcA㔝Wh ԠdƇN,<r!4r RaNVQD`qK09U׋r}B]de`E]!(*U}`^ ZV 3Fk|5a0 ڿ-Uբz&KQ58 *qIUbPo=,=hOQ )oUd+AEF%"F] p0ƽ:h|·o"d󅖻5{?af[S0ЅFEߦUb?ԡ.#K5m!uL S?Nq#O j{1`)@A!qq,h@J1wØY!@eEh2&nC l0¡?(岎DD]v%DeOiڳۖPQ1(9m9S/]k:G8nָ{lZh_݆~FL#(]̚ӅGTnɑ 0tʙ| Xňԟދ=g)4”承`Oԇn7Ptܶkx8n2@ɋ04a}TAmU'߄w +ߵkN ssjRV?> 9܃G0eGE~?e+)_ Ka+> OcGZ47c#"0cJd&&N~QϾH4Rn]7g*tYX|4G%ySVt* 2SȌ)q!t CFQ~$ݩEWrЍCu>30`N?1\Ի6.`͌kxAT2N|w ƀK@eH=L(?23ByzQ-H{{w.pSd}8t"""""Q)(9zV%(L"e 4a M+hw JPۊ_Pꦾ:LK5PgC6]Vw5X*!d 7:j|rK5=U]z'`׫1j eLVa-f &VJ●ltvSf^`@4lbZ*M`Zm-jh05"M P!x8+G:-9םB;Sb 6xނ6T ,fT" p5tg~dm.F!džVx5T@4'Yp;j*K' nlu\B԰}m$jK4ɂ"oPCꕣ'""""޹îBk0"^~*Z&6x5_6ǤT[諆^ * jCuMQ | !3UF7?KDDDD罞U@u^6Ips f 5M1nFm w5*g LVUK>_o|54Υ.8={0d m_RXu?u~*4g_? ɲzYaWf*< |cAI0`Wÿy{XX AɲzYa7ِ[5ĆRWi0P?i1dű64XWw -5p1kqъά3 _6{b]ǀ`ܝ2&ඔ;]*1DDDD{K`( Q-8rB@ Pbž?M~)瀘LV۸{ 9oXԐ@ܚkci0s:4~ٌlG#"""":8؝]]wr$(‚/ڿTN`R^!5R#L+'T!̶J wut5o5&^d 5%5ެ1ɂޘYo3lr ؍6Fk4[-h8mCV ~usn5'"""N)VLẌDDDDt~ey0DDDDD;cNDDDDy̔63`'"""":#8 DDDDDnQ0`'""""r+`=?# ؉ѝ ΀ :S_]wDDDDD4[cNDDDDԋc?%F{DDDDDDM"""""7jLSbD74vSbz=j pv 9; ݔ'nXx#tz}!ʙi0./.O?jnXzk{ݝc?%FÕ/OE@HT*>JDDDDԛʋ =4C `ezyA$""""P=?nelZ[DDDDD?.>hr0)IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango01.png0000666000000000000000000020217214675025471016054 0ustar00rootrootPNG  IHDRdsBITOtEXtSoftwaregnome-screenshot> IDATxwXGkW(H/DA,hQlAD%cHDSFAbPA HWz/qǵqx4}O'77;7F'%9&0oһJt%9zl3aj㸼 % QmI!  5ݠDUDpEϊgǕ9w T฼y[ך+x8ƞR(8waتp?.(@ڇր A3.oϪp? C܀ZBн5.:o>_B~-..~xl'Tl6.lPi:v];uUNh܀ YC´1zvZ a;nc6ίgn?#p? xS+/Ú "Mn_M~4] Y_>+*{;gv|<܂ٮ3kȻq[$R Vz7Ă9^2f7Ņp\q{1e>/$ʟUq+hIb\Vtf@N{˃$^?jkwX>ɔQ7}P"ks\W=A}IYkN6}=r+5qNOu<$f!n@TU|W^TID~9Ԡi"&."!D4>\ۛ\lE%˺EwC>agho#e՗8,S1ӌLxsG/g48h I{SٞIڿjݪӼKn0ےq,\Qi}؋'Kr+~-ӧ/Ӛ&(IxI7N3k*c=XZ,k8*w;آD/t-rw`D$** 6Igi!>,Ukd=`'ZR9/N?㢗7}9c%YEBZ:PٟGK>;G1~/Vp]CsF (F~x$-e ړ]vs}- &Uƭ9cdzLI, ӸC /a0C1u'4D19ǜBF(=b:/ir͓$mћJ9zll$_e}5]ւ и`HZҷqH ફ/ ֢fúsff%?.IJ~`o6kY̌^2k[.ڰSĊضF(5y6%IqZ.\T-fu0DXyR0=LPI 1Ik^<)> n6׃ g^s%( ʕ]̼ff2op!_v$['As4n@ჯ&}vdW}[.I<^>SqCgc8㲂 u)d:Y{')%Y{|lW߲dTɋ"vG[/5~EjnUiԮ#f h,f=۳eh6q F2r9AR՞x\j75D{nYRacU1{o\޸ޫgdM;K\SMG|ٵ:KʳΦʃì!?\^383MMmV"7VEsJPY^y0GA_p`TiӚn+!Uw'X6e?! 㠚‘/'Scx]״'jðL(RIF[z1:o}=>59KJ҅ ':7ըKG7gP(B¤; p,-۹TJh!a|K,;W6h.qوg!ԭ~nT8aŏKYrA;> +QH\_"F}{szv?%v;+k\Ǟ[C=ܦ8qHu|.ukۊgA8czlN:L&SWZSėǍH**c7jy&oE@OQґ/d6wpKBeyB ?&YtdkCMh|ch7geEzt-CO׫)̼7heDW`|8/%I1]Qgײ/¤8u-yZ$/$8EY5|L">M1t5`F&ޝ:Q&%Ae>$MrK0f?S_6L: ^n$-ƺ=k48ɽLqhvhfm.~t/Rf=Sy_| 0 h3S/]۵'r^H]Lpu/W=gjhC<- Ku3~uqFg[{3*:cH3}/syNI<:Lx3oJteTӘ>z ۟u\VkZ_#Q;%+>x}៵ߩG^ /gY. W#%83j5BkKl'>:oڏuEHeJ/V¯z?^ݎҋRB=u\_+˩.iڊI~xuw@?Ά\Ϧ+ *wpy b!]M\@ՕʭBcri¼B; WQ6vcTtKύ?QwEaY8;;S—Kq*F"P^sD^󆖜R9N|1ϋqi>.a4ɇad19.a٤Y{iC9>zg3vKas=uaSE˩.jڊI~x㵫e^_,YvkPEVJY:TT'CQuӂ*)ːѸ%}\F_n,]o'ݰk1/،\,g=J6وOp?Lh9=9c-<榈)Ի!M'%FOIRco9*O,ZM}S!-KtE6(dgxI{R]9۬3y|'VEH ־aX" DRгxˌ|TVybd0-TqJRZt,$7iA SrZ\(O(@!0~w(3GnlSNO0|PK+cFam3:#,*v `)e Q1jf;5zrZəUtg% Ni3.hZNB]Ԟza"Q57EYb'MhNy&}I"-z~䉣GJR!$K:oB1z(fXRn.%N;ֆ+PD=!K\8җ1 ;`G%ܼ;guݘ.3+sϺ#z~ ~b[8FVmqų!G)_K"eyY>t`ӚX>qOofe[5!$iD[v׌wi^DV~QU+g'ҰD=G~hOB/leAK۽Mw0(zD^xSi5h,{=y Dp+g0u_rs8?VwA=A0,cAg %tYj@g %tYj@g %tYj@g %tYj@g %F'v܀n筰O%" swfw+hp?[]Cw`k@fu]]MQB7T<'p:BU'L+Ӝg)oGgNw1$ZʗlWU:t>* UkzJBnoIpIijsSe0 }7Ru/v4ھ*竴Wu{)< 0e+_^Nk۔a{03$w?6n͘=r7jm˳kE%H_5A[zBޔW(gc&W#0 DﲍXۛ{ز+#-ʸvʸ\zD58I4_4^saj%qgZ6_ސUq+hIb\Vtf@H<#J4w..~rb{j(Ňr8.ȍ;ؓO3G+o:4D9Eia>^tO^gx ֋8>ډg+>H$TA!mI֙8S,)̗۫k^d᭏-ōj^w؄ 0=ׅҧta?eX_H,҄>< B1oO}0=wz?^Y?]%e#OE/6q\ۛ\lE%QyZvn_It|#=>hQ`l[{1^+N'ȓlM;˚5ݗb6??xy&KTg IKCG\=8ѳH voH%)c i]NkӚ,~C[C62`C~᱆D1u'4D19ǜ[KT_TXg\hCjQ۸[v|g٭̙p,c 1>a#aƳn\ЎsdJ8Hk/M%]2v$lrUnhͧq=7s|u="jʦ( bNaēpAmo=G:6P`xclH'|&cOZ``ˉLO7%E)EbL6D2]4&TpIHodX%㸴VW,\Eu`"5@U_ĘvoKkίˏϼc8K+s*41r{s*p? 08c?ց?ҍ8M_adX8J:* Q0|O]~ljBEEp}>;]%qfn8*'AyHhgjZN[{/moWҲ]/o@V_0)Ѵɖq9-'"$ȭa׌GR7t6mLo.<rhzF?ìq?LS38C8Bᕷ~c4EF6|z):=p=|_xogGN#\s?r!8ɐyq9 $\/Ju/ JJ3 ERchϞP\P<#J>.?%JWVa IDAT)*0^@i8gPOh}rw|l|TԢ-urZVt18?g_Ml~Vlv\4&ʄP^=ʆDZ ھ́|Ftae;_ Mw풒t‰ 'P$3Vt%mI֫r<Lv#1Mwrbl|dicVW9rDoϓ&Q =!MkY{(ϟb1qr\ !I8E8{{Smwtk/=#L<ky볝+SQґ/d6w(DŽEI'å~a4D;ёTUnMz.WT}|kW{`t$oo{ctg.3 nJ2lrC~+|mʔǒ*^DF69VUvfn淫!TƋV!҆_ [*_?e}AH]}lwneGE:QIUDEfAH  I7xEeB Վi>B)/omΤ r#*olv\!UGL(1~ă{LY7tZUœcv=Pwfmײ_F_%8/ ?DOYBTj?Dir4o/9ӢϽVt}V B4i ίNھz|_8ݔmO R{ "X*άKĸ4!tsDUuhBͽspֱ.7FN"0~KʞGnЋVlt#ON]RyDx.>+qAnŞl8SN/8.}t68AW͖@PNgxʘ W\W l~e܀(AnDTHR7.:Iv8kP#!*踌]Y)Ygygqnë=COȿ] iZ^{wfy.!oxa~kq.l߳]x<٧-}7Td[|9>Ø2tɒؤ@TNq}/V3 (~>.J ӷo'.?U{sv6[8ROx ܀5tſ(fcsbzLIP,|no' M vW?K GII~_41ѽ1u( bNaǟ50$-[xFpb ޛ$[2 "3kО첛MlaT{U큸YW obMC9s)jպzCa;c7*Qcom#AO7TNhVJCT_RQe֫>f}Jʳq6k.'Ćyc̘ eOB:nKPo+o(h*P/\SMHDIGSܷz>ut 06%̼7h%ǥ,9l ߠ(k{X͠z)\)LB8vl#M/LtGTβ-YzOq-[㲊.A1]y}nOr>⸰ Ro.IƲ_s46 qIEzԁ%vU{PSNg+Mg8|t<\lӨ,C[uӾ{Z̸Q+Bl7nu-'BV2b/tWRK 7_8ݔmO J ԞY3hT NeƏ;ej^u̐byp"K~Z. ZSaXC@g E,H@k:t毞YߴSS&& w«(* \K%Z*?2oZ&tðπ0=;"ˤ8^v&T/w3h ڑ&۳?1iZ(_λ[{. ۽gekl3_qY]_S (ts+m^W=v ھ{&egI80b޼}0y/m Ɂ)~w_I,/c-p':rɴ,./`TZ'yog >m^&[vbē MJL4)f~4YzvWN^GR_ u-ԗF>5̜+5qGet<$f x܋*(/41gܔ|tU7IU֋1M2O5$o&\d\-+.5d⫏D*>WG-u\=(;C~ geBt%t c—GeZYɅ;i/ y쒭of׊ 2s3\7&$$o!gӼp9ooW|s4A{sO}ca2 [j^r۝KDTSkVyJ[IP_t},lP-Ǥ%ɇ゛[&;O1&\Xo-{avoI>j` /f.杭8щkn@Ļ9N #;}@ۅjM  d­&ML$-K4N3%bh~;B'nUrtN\U7nM&y&Z/v'i'Z,[S[ZY_햨}j89{Ա䳓x"j5L:|l,n@F~x$->MN_m?j8$*֝I݉ҷcxi]'׆Wd2O2L4.aZ*Ĵ;:C33ȎSZ4$xRhh<3zUn6N:S[ZS_ -Qp2sS .f^3t}gyJ8&qAbe^\?a? ߧq,qL$*EDD34.dSP"L$M+.xVn>Ȏܠ$ UGUj:dgw5z'dU}I'&be 'y&YNN:ƒnhڬel߶S[ZR_vdUN?*U4-oBz6=8luU"bR|Zlw-A]'i D:p{igMK4n]?gBWenFa9XM#ʅ B+lYII֫ra|K,;W6C#ھm='Ml{J}mۧgn|'oill9y>!/ץùm{Sշ/r4D}ZowmMv!U=07 gexmݦOa)DSx>%2E~y7U̼i20)׍MܺēBMFɖ5d۝`i3p?ɕr\ROn5pWݱ}ԗWSZŕX؛BFy\5,nAnj̩j#8L|Wx-mX2IԉaV۽ݓƷCH,_/]zybiMoW}ǟ}74TeCOӾnP3>[v;CռiMo`8Z6$8 XM֮ΒU6!TsnMkoZ}81ը L ?:K@ ,5ԀP:K@ ,5ԀP:K@ ,5ԀP:K@ ,5ԀP:K@ ,5:DUDp;cU@5I ˛u-QBe+td3)~UMWZaoJteg@g uR咪GgNwdî#[aZ{= =WHSx5~R.hz ϣ u=Eא),wu9tmՖf>z֊qy凎):M( q/$j@!]on?Bb&.526dEOLײַe咲' uv?9vJe>9MYbC8~+ǙRBc@CrP\roSc3g?Ct¶Y=ۅs}r[wCIzbG5k;آXf$(oI3EiM ~êH| Yz_L) \+|.qɩgI1_wz $CҒhOZmTW]u{dINF^<ʲ~PZ[J+|Y.GK:z_@d[|OZ`` m)EbrqQrֈNI>){+QqAbYbj#8NdT[Gc-(\dWIqeG*8s˒ 㣬zG^:@3`}hG!a쏂ƿRwp9NeZ- Iy6Ty0k.'0kـU&i Ȋtj4(%=6Њ5PE'+zMuf/4^UK2z5LvRp1ɢ#]T4=@KJ҅ ':Se!L [s0KrزK& UÊ-|v|W"I>Z\/BHy3ob?Kf}%J:rc殣^a?:&GGRQTT!@QC6y둗0JϫG8Aۗ90˵x}5e@եݗFqV6qE|ڬzosiUUigl~om~Q [*_?e}Yj KI?,#TE7oU]2z?~mgTSpwC)Uj2"6X>< oVL>TQh*$vTS'®Q"7 *{EMtUw/Xv."o؋'hԄ|L>U?8kdwS>5z*IE%7 e??/j@x5:Zfu1|7a7tYj@g %tYj@g %tYj@g %tYj@g %tYjPBk ŧ6Cgy0`s!Y#?hՑCNY'??% >]Kgp.ňhCg)lU+-&mo$+zrvkĸ\/ȉ-zQY_yeqa6M5}Kg;+??4!^k۪d,>ﮠ*ui,EOx-5tzN^oylyߊJM_1gO(I5 L B-ծγq]tY_3dḘֳE!ôUߖ|)%Gy~BV-H?u'V$5Bfn4$ё.}YpWGIv^"c1SSﻴ$̜(4 -h܊goQ >tbo'jm9mEu!"Nj/qY*qmrү#F!Xx7"Aj9ir*؜MAѳ9+>vQ.jLFSڪ9nKΌڞRݿnǖ TYҝ{;<̌X^sFU]).γ[~O]"dؘyylp=zZ<ţ=hFUG$9 :B [3i >#;x%e5;`UNLƙko}ax PҧMu8r3|Q)' ⠣Rz;ɈՆ,E)VZ^]SYYi7ERLL_-qpʑ<'AUG%2Ǿ 3&şguo3K0hGb*C 7jLdy' O8@0,:w?mY2. 2_q9 "yPgaT?8?))yKw| !Aub EɑN+ "wMd.J8>Z[ӈF׍g=HIrR*KJ-wŴWƯhY)J"MՔI4L4K#Y5 BEw#LBjaD+#/eqQLg0aJyѻBqǤ%xPegfv|FO0 Ạ IDATZFg1_u¸?BR4f0Yݾ\*'G2n%Dm~jXS|?|gc*%];r;3"Z$eBȿiz-Wj[j̱t0+Ks01.έngDȫDBJqaK#uP8L1/QjBX Ŋ?L}FMMCk$rEgÛglWީ02bԢ\y|ze 1 %HKX:U"/Bub*p>U8.b\JzΜn՛KU,3il?| "c/Ծ~x")#N:m,-><1@|pSZx\_ԖJ$ȇehH$Aa^TI.WlnC>ڏub&PWV-N}qykUedy2 g|aX7X+u\=LX<B">cf_Q┇ah&XO=8:1Iٹ5=ydx.ؖ]gܑ36܀ǦS !$, e43coE є? ۴yeWkƃѡ4~(4,0xtBde2d-!dyi uwoRtLM*~#$,K$SsbaX -m[Rv#+}V[*J0}C$E jr=i7Ԍ 3¿8u_:)=qzuɫ`gqFPBBi`2>CQ<$i77/K%ǮEINʁgtZe˧Fvf>x0tHC~IDVP{pMYQmSe>⬢bgis*AکL9jG|ĵ~h7}ME[;+KBEłݹCϘGU<$0uE!$= [W.-\ەfrvE2\GɅ+kd4+aeu)!7q1AZåb5E\Of2/{1'oJD%Cm&qfgyQ.?^aX@ |Yj@gaQ|chjg(qDUDphZx|Xuy QA/lZoOU4<'Q MϿ Mek LtWy"_^o܀ʰ!&ߍ_fqb);?K5.De\=ʘcjǾPˋ+%bP= ѕѵWZa?$3qcga֖k_yA.4W=vEm?Ŝ5<. sO=|9KCCҡ!{~xcJ BD̘c|0޺>=Kg/c.8[?+aLz!}^ƻ{#R8Lҕ(?ӝ'FxW[(lpP'dLN7iG1{mGzǪ'bI=:LhZZ9#m/7 J-|b buq<ŦYBƒwrkqiSz7l,1.)M]ã ԗ S$~eMp\**x~y?loiXn@%o+5re̾n*_ig_|AY^%D\z(:\ ] !ow.ËPhqWb牲~\^!yFœ˟K<œP!ĝHs7?,*K5?L7/oMDebNӭFTb#ݷhj)<|(;Ƙ }V;WPQ&0Wx&SK˻f:|0 Vm=q.o8S Bb~B!=r{p9\t\VkZ_#Q;%+>!$J ='B?Vt.4ED\N?tS~>} 07%%tE\lza[.a~ bW%CNUfiXs|1e:iU%뇱ğ(};bš=%+-C D|i4?=>d%%m`,&"DìQhR&bеs,^_ŭDž7dߎ|v0K_qϧ!;\ʗ!r7Erpޘ7BVd(6~wBRB=u\_GW*;4')ͬ2kRyt\{i%~$mI\U_p?ar4Z:%r҉GV#O^ߺDB $ ǬY{_BǞӴ  э)v3jnJf&x{T=ry^"}jhht*-I'GCS LP˫%Ig㢪?w DqasEEQI0KPz \~V)eh*U& 0,vf08GΜ{ιw3s9Cg.(Dmhi=1gM(}&C]o^8~^cܻRB1XwezOsJқfdY*߯~/wW 5Y&k?u;K틆u:u)xo_.{cMvu>?g٢\SvMIz 6R//&d$nu1a?qΎV"XlegU2|Y7;T\Gj?giIh2r'{`d0hc\nWߴ&ޫ<I >v 6Mv@ h(#5$Zb~Wɯ khH!mL X,<5NפO[ٽk;CluF'U gՙd3D9߱lJbQ/\@6M *'x#ZS& 'QI?\ꫝwmM?kh/q|ŵw90u^+>{Le.Vϓ{6_=[`VA!Pj`)ŝn˧SSoj<}I/Vw͔Bu~C_js }ןgqf!6r4`|RV'}1np?G5qby^'±})qfplH|$vgXl۱ۏ} XeFޚa31<+P/VK߷\ed}נSYq{op'mQ}e']mɕ̿Cffkڞ/(1Yڌmf w~6 ԑZ]^^}5JHBJήݭ}qCy)X?H}4`^ƉEϷ+:ѩBUqbQ#9R/ȼǚ'9L9)'i緳N/wQ \x"8a3F?GГ1壳Lxg[q6ɌvdvzTک7hzL  hi*vV_9݉^ֽ|i'Kq_ZzwǬQǪ->y`dqNn=B_6y`dO\9X<O?[ X6 W=WŕmqRFUFޯ֟+c6Y;*;ތ:JiʞGgv*ͧiu_Y:Nj[ cן#Ұ`I4ⱴ'h !D{ͳ(zal;iŊ3o?҇HM.P-LPǤ|+O|m>-l81x~uf[ޟF?M|6ߎ zq_kqiQlF~lX_{0Fz>0+ZnK  ]'?e7șj IHAv}Е@yHntq=ԞwDHv%mYYm9Iwܳ[,oOcF2v#g3LnumN5&;Nczɐ+Φu;qSQc.ǃş'zu'cɤ~ fQo|3j%onqt|a+d>- 4u2CtEC\2gYkxS c=(Ż/$B4yq;jLd޿©NNpL {sg4l_I*!Dw眯E+RBTwgyAN^I):+:lոNVh!FK˽g$D~ur3Djφ5pu]zAYr s݉| Pݧrc~R9q`?F_^願\)M{na穿X ̢$\Ÿi ~_(.S+hn>l{gyFޡ|L&cI}`Y#k~imW4 p_x5nsu&j5!OǸ ˫|^<#xlj~mW4 {iO({vU=Vm wGdc-kex~=>(i!e7QEa#K|q%Bg.B5 ! ,B!0X"B&`D!L`B!2%B!dKB ! ,B!0X"B&`D!L`B!2%B!dKB ! ,B!0X>u$_plpl($hF"̋ 7-Β\NG"zc;+,Fܥy#A Jb ϐ!3@[m~+V {?]ISMp6q|c$ؽZ9"uq[*9], pېމsjDm7~]|AW7D&\ضx_a1?'B5+paz(C86T8f-k'Fvґ#W+)C=Zsnj %gm]M#(Mv|A+6kzܬS~૧rL\t~Cj1,i`YP kr \^g[\^e1:֖r\8r\ P%K'J(Q}cs[^LYzxS6 E`AwPu P ]RkYֿJ}fk_|\& jL~ϡP~hamN_ zۗobkxmX/=L=@QHںӀK~ lQDB)ݦw=w{S|2D^O:ٖZ Ȇp%|;;Zb SYT@g]\gShd){L𰩬2CtEC\2gYkxg.Lro _s1Σq*,RC/s~!Ϙ^±‘YO_y}Z9j7Y0lpz0fF~6r`6mg0 ~6?D8v`дa~*A@pWv 6k/ǂ;cCW)m+ c)? X-5*Lmt^~_Sc55uu{ :9u?,%ܘ,\9Rx"VT5KSwC !Z|vb2#6r&U#jcYZͧngJ?=hqfƮeu !A^jV>!wo.48Bz9˔J-%?}G6=|7P~0.C?Ϯ1B^q<.ۗgֿ 5CEiX13xNG!i- "pa\ɺw/MU8zpf&I@ö n0y7*6 bo&4#X-zplhyTT]\,Q8Vw q%iŅG(L{(@p~FFD&4Y[w6KIM$魴]A OkVG(wZJ9M:Xy4&[M49Wk%g~{kz*!dQ " C5'knާU%T۪>1Os:yc]ۊ3+l7[2e4[ge&rL]>6?bj7ث=5O}f b:P͂! ,(@*/-X7i@{g) +n:Wm4xz2l`# poj á7(wmdRD~|VCiXPjֽSrG!S,U\D"t$.'tJHAY T.hH!]sH<{ \pPIKՒ8MK,q(;m]V!.d.>6G}$H}|D` z\)ʔ,a#RHmQ@$(&ɿ$B\êEٽ:k02y|LRaR'QeFlZdݻ}_r*A+7Y2Zq;S=@عc11e++ TeuWrc%BI5h"ڨEKeZw(A*ؤ*V TD?儭_Z_KJ]3p@(؅X-CkW@%T* 7 Qts7 N?d&1kę!.k lݭue;q;T%fQ×µ#N ߏ!,i`YP kr \^g[\^e1:֖r\ϰXmcg rO7B <8Cg.(Dmhi=1gM(}&C]o^8~^cܻRB1XwezOsJYLYLO2+Ur53_?1{„_sz;iomE!pl_^ȽM;1k2S--TIY6 gnF"ۛ"1R"Z e\])]=@澳 DSaݣ?/ B\p!j. kM B&`D!L`D p M^e7mȼ@O0Q1tbܘ=F `|"j96 m je81i왻j=P3C^*_Wllڭ?ްjkey{t5{Y' yy`$Jc|wIs!DSr Fts_ ŝ+ԈʩQ]V#o;5P#c5 lpj*mZYf½w'#o+u&wv:4%q (ֺMCRG:%ۦ vhgefwoxBԪA?EQqQu_)K;~)M2y8,\+|#2G}?ΝE$A)9͹ +Ӭ-U߽x)VaGв^S7I/Hi<׋6X~5ҜMZ7|J+y`dՕ@J#_[Z_;.Rzi;^R8m^;C @;~6 EY<Zo7QqjBHI+=(rFub#⠢+@ʪ/uͽ.'wh#l< \Y7jV,Ch`OCGoj*o(ǵ ɋ$pѣkJ#y=^(2s1g _N/w<:W#HbцZ ȼ?jD6^{Ok6}|`R7ۤ>tf85dW;kȩWEVSm'Dz=zK$vG/9tx9WF‡Ӌl_+INGy{Ͼw-H?rMN|Ŏ[Г=+':|w*0?x #f9<#KcMsYO[v2g:w(2p^w'zY`]޻Wޗ}febB_t83^ yeNo̸nGh7OzөWlѬ SblIztv /l+ϯt?.o~!cgeV/Ⱥgzgi?Bz!HP]8/;%άÑe}U^Hx\Affl&TGy3Q 6dysǞ+cg$nکb#zYY:\fbJav$7.pՏ15_+sީ\:#kq )k[hc7.3.3bcTٓ=$mFuC&7Pn_m:n*cvOwcd'q^wSN휎"&aL4@jܶ ^o"ןu ʍ]A԰`/| 7ZfTwQWxYӗxpjz_w {iv5;2|BPmR`FB!YjQk[ۿy]9< #5Nȯm@zb+B=CpgBQ`D!L`B!2%B!dKB ! ,B!0X"B&`D!L`B!2%B!dKB ! ,B!0X"B&`D!L`B6wIhM=wi6CiF&q/h!0X>JKK 5Hh/BT^qi3Vb?YvѨ j_iOsh4Y$6˥>^Jaڂ yץ݌-ƑM?F Gϕ1j[+:GS=KXË w1H u[c#'cc/sGZF {'Bw D|*\XymF~(+8{YiV6؏;A)*3zZ$;nSjݷKʚJ'IC/Q`ӟL8vp$_ŇR8:T8r%ޱ"j7YVÙAX' %:N *UtZ&ݨ$2A8v`Z*lRSF˗bo±5CSmFRtqDX!J7wbdVp$[]P{偑aBHd/"bD{hA?Yn:Xy4&[M49W&ʡL|ytԚQm,}@swWЊAƗ3Z @˼u)KR4!54Xh7/H ՜y=-w IDATTqP]| n<͕Ti  `{/WGwel++l7[2e4[ge,(;WO|Mk2jOS٢+B+D} dž l YvhpeARy,XlE "8ߗqmiŝNZF ܟ(Ÿq (8){~_Pvu7 0|㻶rNeo9smm+s?Ym۠{?nOyi I2>w>0Bmv}k^#B-_CVhT$؁dNIr)(+j~<mI<+rurAKt=iwZ_?Gi:~MK*P=~\`TrU>>T{w"}E0`s-THP=.GӔD eJ0f(V BӊwvWSۈԿ|Į_GB^iAҙ-!1mIĞo%6]gr~>{$Oko.jJAam܇u2Yj3qsQM7vM!$k$Fn_\rAA VLSOs#ZK C±1kY;903!)@Qay:WHP\-]#!K[32,%4DWB no ^dd†`G*I$D bUX(kxt2&8:Kd.rBP*;\Siwd#-!wt]]才e7Fd/P \w23o?⩧B-GN9K-Z>>D_}6D:RiE0ZFRH*ῑV/ȯ%E%`[g8 XB+UYȍs*ҵW=N:B,9GaKμw![5c)G祶v!j ͷrH~ JFD~y5IEv]C [w+Jʭv]&#ZKXԅ)=c\V*(Wk)J7wdi#{mˠNAv'|_A=۫ɎSacr6*=G lo#uR֣߾,3^-4yy% s27dY_kte l'8glc+;n=#ZYo~İ$ ,.Ĩ7*F"O(_w`f@ .&&FM*Hy-J$ݥ#D?-=Ktz:QT>I >v 6Mv@ h(#5$Zb~Wɯ khH!mL X,<%ŧB%/Gl#&ʇS"v*-;,cC)Íf-ՙd3D9߱l"I{^; Ώs/. `ѪStWo=x}ȸvhK/VVP=y#ZfN;0S+y^jO|6'uw!pl_^ȽM;1k2S--zoe$,!UM,˸l+Rxzh-<!j,M, מ=x( BAp B ! ,B!0X"B&T[rOD`<{*4k?s6a1!eY}15BMbdY4Sr%t@o hocipi?BȂ*ec/~+,=hTI}k۲.7KP֬nu'SJO;T4ZcF_^RipЊBT_VU#:{Z*nsmh߼CO[•9}]8_?BPiɜsNd=ʗXGRSIFVlZ?G3ϽPmY9H5X<#u??FKS±})qfpl_:=&%G/uQo<=CU֪άN̝wfzFUs؋eGya87#:OʊBJKKzTr M͆je B@BmbKP+ڟs~BT5Zk_ 7|9k4m,vTsBrV/rcmAYڅnqG4??(Ǭ- Gϕ1j[+:GSb[wgڅ7ӈ1HpP'E16r262we$;p"$|@nLϷYb͵f䇲feAK?2gBYI[Y?V}}!6MNqo׉4]Sm!d^|?pLk}) "pa\ɺw/MU8zpfЦ;d8]0lpV iwo(vmASh>JANaA/_2MI cuZZ(ܝV\|ZpjluٹFB+B!*ٶR]^dE' .@Vy+ש@h]_XVEWne˴i8YPLw&VT֊@1`5Ce՞>EWڅVˡ ,mʂB "gYkz2F$ѹVA`"+HȩHr7t6tp{A=%!dK.ѨH9]m#5?+RPVվ/$yT4%C:Y JP`,F>6bo/_!WZtfKHLAno pلܬ轟:ɓZxfRPz.t=agL ̓_65nxNU}іs6/Z0;O="xo3s}Ӆ>\sg?YmՃs722nD%$tT^ff=Bk`0?!*Hqqy`(k UBR e%j1%Yښ%`)54!RpSw}N"#68TH%ɿp%Z$B/ooƆt @K!,>{Wybiy ;iLۏxɟ_6)MnRܝ*YV#Ra:Hhf=Bk)G@u QGGhφ;RGJ F([^iU@E47jl5]B~>v* Q|NPc>`@G%#sVԙw.w`F}УU:HWvގVb;_-vVC.ɏxCA)ވ/&7Ȯco(avEIUKt~CUG&8gon=Bk7u!h@`OƘA!)uƾ Uƚ-O;[`m) ߻a) - e)J7wdi#{mˠNAv'__{4qr/rSӽ&SY\N8Ђ"<)4e$,5Wx5w%B<*XqIw >V:wZxv B!X*X(<={ Qr?c!PZ! ,B!0X"D"}-ٳ1X"DՋݛ&q<1<02/ ʪԯHC49MbEUd~&Fg8| A;_^YPyʜQ"-mQqBTY9~,?\HWB~u_D|e튼R#k_b]~jPROrh]8lXq'2^XvdIٍ.jklp[ #awX̚q7fT,nE '(rP0GW,r=q釿ő{5߾Zdoo:`;󤟯a 7K~O]'52y~_|XoG;+g\V6Oj-ckɍ [T_&L)2νݎ!BOK [n \p;+|x{#{RsEfwk38'adLz1GJoioŴ//l )Mkn/iO)ypm$`O5KLbcf{C cŅcSwؾvYdQYQmS],.}fJYܸA0%[6_+]/j;E]⍾8RsJұ6:>bwQT]ζ$ ! ] E+Ey"MA "$(#TH'nRvvfIܹwf2g̝9sq_~b^h:nS_j{jf7ssA+uk2mw1G]VU%VY֧cOK5G}ri5Y[=ۓi_5*Aa;s(opP6c.z-ϣ_P~|sgaߪC/9Sx@Y:P+Uq(d/oVTg.8O 98Ȳ _F911eowB z[DJ ڪ{jZ}|K)Wڋ&{p_fe7r;&6Y<˔15.$ӖVĥIٓi,/M{):4v֖}䦈[v^?qllǡ^vWu&-I4uyM/#߾AHILY[Ug"W1|.=_'g@k#(CYJrZk~ވBiaf=ŷڢB+Hdwvz5ɴyvE^+d*˗Ĝm1j74,ɮII1v*~L|o0wWFd3FpQ{؎j۩b?tעMm6ڬiAo/kW?j qoP}RcB^FıYxo[YKU<sVS#Z[v!Pw8|?l5~MBŭAfR!Eɷ`^9<컟2{2rt_=uBlζBClOAL:oxroI˪f7W5{$1BىQ t(۬' !܄s=KZnsR )~ò8k<%?P/lv벥f*HQϝe ^}!Eֳk'ͼZU:{<%zךo6:{DK.>_R.b1QOq3V^_eՔݞY5L1g7^KקF_Xa & dq='}oHn(_P,2Zw2J̓²OTdQRƭ?Bеӿyկ<o"B`D!4`2̻T#KAo% 8?%v{&=%6xaM!Y+j0*ƕY5F/ bg0"gq4?X%dq0?ƓP_ۓM:Q %I֊#L[?צPɟuٞgaL u/@:L֊cKɟ03GOS c;dgcK\ZQ0D IDAT`Iw1%6ԖoԞA?+)Y+j .&6zڞ2P?WrZu5Ftɟ%S[Fx6u/03BiIw1s5LNZڦqoD!T0qjhɁ׸B!!P`Bi!WM59pST/K^5MESݿIw 1JBJ#3yɟQ~=!>YZ6'v$ςkl)waM1ִ'2)t}z03+ $\f7cr2ZzٲsoT޽E G4Whmڭz|A޶*)H< 6&@6n<?>z?GP>'*i04AONlɟL0¤U->xd!S~_=H:_R8*d?]JSE|>~Zu_D~ެNC'y6sbTy21^%Q?P z_m &Y >wg&}u`CI$0Wwuׂ)]&cnΩ){+f{JbLzN4b+~U˛Rp~v>C9c*V}~#Fͼ_{T~{~13I= ФS8el73c[;̶#ò‚x;ڭ~tK$ٶ_]ׂIeĿ&8*֞i-\Zϛ{_Z_mcŋ7 H\%aM0n՚)WRx9{T,@ۏ+%b sIZڏ+#>2!1AaYaAu 䙲|"%r+Ȕ-Me_my4 &xaɟsNR۷7~_,j-nYOӪ6U\e)Գ]f: nq{۹yg֟7$>lz`$$w]rwٕ6~5/q?_0Xߑ>:â; kD׌%.cq%yR<V)$)y}{Xc$dRII}Q^zwu_-$닱!%._1 $6K؁o.Ev=*<@}'ݥ(_de翜d˜+I-ft %n=gB)/?jqYHu Y~@E-ٯ6I?WY{%sϔ'[~OQ%1~UeIw< egkccDwc]aiv8 Oo*ipۡ<0n&1IY_J'Fx6u/03Bߤ cm5$ɍ_l03B K&H:MްtP4k47j̃.fhК{ZRDF|]O^\`E۰!,B! 0X"&n*`ҫF' TA?WGi]:ɟ+~'1L zJ\Q $I}mz]-Bɟng{= NSN\a?S %j$0.&V[&f8lɟ2^yg]оɇG9p~5Ft?X?SKFx6u/swW -|;1.\Zr­7_IIiޏEƪKH Sr?9 p]&k(6BB/ǡPm§߅QjƓ_?|;<棾~cXK_;h~.ryw֜ڶoHۨmIcvZkUǻ%4ͷ277ط y7߰ϑƱh7^~O'kM=*qu?AgyIO/jY~Wf3^$3Ɂ5;_p>1*5_g-Q؎&g ɟi!) !d)y"Ģ1?k]8Ե= %HA?g * * hwdƵ7ڷKپtM 'emL܀?^3w1o9 -=lٹ7k*#0dUaiǏM;ٿ9˵;oͮ 9Z ~;8SO+hISSQR"˸pV' ]VC%_.#/>ѯ2<Փs:0}2^?R\>Xh!&~ɟNjK(|>o^#C}? n%4퉕I$~c8pZgV^t$8͙%>ceD]f :U+{}a/w1ѧۿ*-RW8?Nfpa~圧oKm)z.ys+a/@o?&>Ѕ \-_T>xԩ=oX{>rj<(,tge3Z.fSڽy Mo,[.̓ Kv԰,+]VMeÞh۲?6Z_q!9@ Ucs͵[K گy|:O"j`VvXنN5ST,@ۏ+%b sIZڏ+#>2!1AaYaAu pQODteqrbEQB b^]PY&UT{o64dYY{t0Lva{ZD2i^7_ܣT:Fp77+S!7?0Oؒl]Z-*>ne-|8Kaڼӧ !D ^xќ Y8V1&ؒ? ('oo?ݷ4 %&dDV*&◯˖GF@Q6 .~qk{o;TlIS83Sq)`cJ lb5r.O!" m]30sCH\Y^s?,>ð jOɟ );:+eDiLǃߌ~TloJ]ﬢq>Mpr]'-\?[??:ȾE-vex~F7'1`ih/JM*{YtA& m]ϵ&%Wc{7";ӿ[Y"1dWr_|B"/Ѝ,8d4bFT/u4_Fwt KS;>5 -gS &nXC泔=Wj}'{BzT5:~EG_[MD?B v7֝osBH !,B! 0X"B`D!4`Bi!%B!KBH !,B! 0X"B`D!4`Bi!%B!KBH !,B! 0X6:B:`oސPedj!~eQa0m1.eF-ků T0X6F?)EJ)#̖g]H%zөͳ)ڒk{{\֬vKVA32r @twt32"X 57(Vey2RekY?ϟ6 b~݈!?n#ԷSu_ɹ}9??jQio<,3 +xq6,Xvu5sڶ4|qs?߹'Oέ̼qz=^QC-~քKSsȭZ6,c$d&2,}lˮxvUBBvj.jblt=kΒINTAt22Q9MU>ßd1ԨJÀ4d%Gs4< >  :cʔ-n8XPn#9CeSrɱFB\_ SW/1cfn7lOI惉'b*UOxQ3D}Lml8\Ka͜rϼJV-%K.4Lh5۩<^S4q~T8]Xu?-e-৵VRǁyEO6NEZ,74bXBW4eieQYΟ_s_,w/+w1L[ljQS1,剸$"R^xY=Eeēd]+V>H b). %)0Y%"'o cL~6 K#IGQQ)?Cv3)zYx}mE=7LCƧh]m?€ղۗЮ59_ޅE ŵӿyկ<PЭSig9`?>5BRT5 Fue--i[*X(0mr;;[p j , ^_f)#'B @!4`Bi!%B!KBH !,B! 0X"B`D!4`Bi!%B!KBH !,B! 0X"B`D!4`Bi!Ҁ }kelyJ k<(,n9z! ecT\\W1 +2r<-#?ʑSV#-ŴL[ڂ,$GErЌr'|k=*kQa /b^HRAa9i3FAO1i&_v;JouB}$nBM7(0 7d\c IDAT9 \Μ.yw,g<\(ܾ[xr;t (2o onIXvB:`#g sohQřqNAyVq[wJǞ[ސe-WP*!6h!4JyRQQxVkF>SD6!TzHlwgI"ѹeSQR"˸pV' w̺ WOέ耏Bkm vٽgt3 [gfnޡ'r8;坥ҳ+پh1PZ"=DdtJi8 (o 陯IVN(tgޣR͖^ج(%GPސ6q{-d52 @j ]ZKh@O˵|۬S?{=S-d EQC%EQU~UqH$-߼{?_;ʱëSju5$oVm93G@!Vb]x"+&W6aEF:(HEE2p "ȳHQE?QY&9PE\땓c*I{Z`(>˟O_*(2+)RFL)#XX~o"ҏp-RFKh GЦ ""4٠=gb*ֿUy.d]ؼ!Yww!Gy?LYrLf_M3kʎz6yV!tuM7s7QrJGf _V@PBx[\KJ2@f2W,42t鈢SIw>YR]*NI/' PB)LO˕ZallA﹕/Mdiv8W)KJWS^VwDw~]\ĥW4ʋ&8{!d@:rO0ͻ!/="=H b). %)0Y%"'o cL~6 K#IGQQƨ_>I^ |$$kђGO%뾿މ_% דڷNaAv+kABenm>L~$WS~`sw!d|ͻu'~z_M@OUf H7TKE_{aj ,KqOsMHD7B!2T${U~URc-!kB!KBH Fa;M6[- ^{Ca\>ˌZ sߠQpKp>VmxSg)ֵ_<~߬X50xJ&eM- v= 8Y~~Y~.KG*O,>'eedC x·j_ zkOQmn,V@K)~알20DŽ*\`J?ܹqvxA U:V 0_M$-Q>N,t>yUR`3yZ;0i7mMBAӛ!ʢ$q}/jhmQ(ˁ?u;;#yn3\V믚3OjE K(p7(/fn~Q㐱tD`?Y9ngW_^5߾p%{/m>?n#%yV]Wrn-b_d|8ϺZT@7_~<(ٰbYյ\N˒=폕gҔzm+*9_I nҌR[^S;8 _wIzns'{ᎵHZ(3oOP!#R;4{n 3Lh*(kk&Sܤ~ɹ/tAlM=w'V:'=ķ]@Mgmi?C✘#80s}7[괾PO[ {,yB6fp372>pZgڤY yf/N^t\lUKMxxӪ]:p,A l9v`$$\4ǢAc[a|BV(5ɉޟ~>/WWnJ؂˷"%<j/Xy |#7u?KM/~zvAv4*9SxI.54XEjt0XVخ7 hgZH` )D,g/e8 `^"ןM-}|ȵte>N-4+dUe{TKIQiT2[AE gw!e *yvbݟz&i^bjqm<%yq i.B,@W?8Ae( 0 `<@gVPP~5W(薕2G,J=yqpP=:d#$cf5eqy>e <;_*I5Wa1}:Zj> ʲ吝z_\m#M~i݄:ɷY)ɗ2J#INTAt22Q\--[^U>ße .2~ '$.&ex|@p.{ `[cuΑuG >*=_G܅u9wvޠU])ұg^g{40=~HŐPqD =-7<(}lB!lwgI"ѹeSQR"˸pV' w̺ WOέyPX%_.#/>ϴlǻ#_R"rmDi3vGgJ !/_iBJwbw̑{F .? )Ezf{"nj`>SY*=B˱(? %3KIL硔ÛBz+y &ݙs6+ }h _}=t5!;xmZxkpe@"Rq9)Y4).Pdǧ9') *(⷗\=G"}m/.V^R[ˬ!y[Gj|%pϡ9j$8͙%>cBߞXxxD7v5aGZ(l16*ve+϶^2:b]x"+&W6aEF:(HEE2p "ȳHQE?QY&9PEOr|Q%iO ҇z< CKeEF1{%Eʈi3KCoMDø]QOw\h GЦ ""4+_M7嫿>}Up c s.lլ@ɼ,}9&3֦R5ŒqKJ}qeO=y-_a+ 99W,.@r­lcѠ-+tܵS+ѹ7u5j֫r i;po{3)=*H~~Y"%h C !%%C rYP"SХ#sOqgGӥB9I8,%b\e{s}x|E㬿%؍qP[/die,ΕD| gjyTI-KYNn^.hN#'En&\iTif=\KWQf^ܬE7ea_lދ̢<ߘze NKӼS!S˳K*\M)(QSZL`&z[Ld f*1sW J 4%ls**SleqߨuDA@j5V$^*V#M}}-ę*pz=F=-8A[[.M1! h ;gc[vóȋ}%eY^nk)eރ7O{O;Ϧ{}V]~T^!d|t 40 HsAV\k}4GBI sP9LQ6ci6cAHkKOߵӿէvh `@'g`FՅtU>X'eo'_,p&|=[6Y3FTDHQڣkǷ0Պ)ګ.pxYpl>w=/M=Q!;5{q"ЗYϯEbmKs,X'[ !s\<Uu9Q(%.mr!j 7 `'@o^zY_UGƛliڎ/ZTͯh≜>V4YD.~;m3֧) YB3/a|x:=v[_Kj TzM,o^UTA<04k xS7ՋX//ia1&V.[pIڕErʲ?6Z_q!9@ tYwʱ`'W4I{ _"n,/,vxhqt6)&<Knzn;co/|֙q}3aoS5u";~N ${+; TլR\9׳(BZvQֿ=ߣ/7M3Ƨg/`Uj&m%Wc{7";ޟθXffY"j@=I%KBMUvb@Y?MQUobD!DQHٸ%PP'qdB ((]))(S%B&|+E޴,\R%B& [e`B"s{JV1X"j*oã*?sζMO脄"kQi,W5*r/R~^ rQ\X肈HW$%!!@z۴9g~n!{vaIy\}wym/L%`0#ĺqje<œ%`0#ڶPkn;PZg0gyˡ▨G/Q^"yTٳI,Jw-T]{MߘDK=z3θRK=KpX~pu;VB>]YJ@ :.Fl*48`Sc7zSSi0!>`"j.#D$ [ /ٸJhV}75C{ס&œKlSzN6ħ訷C:wzUT(}Ӫ ;1T=,M2.5~w/9׿;[A1coK`bڝB-I?"K"&"ěԑT(ENJ0hҾ2I>gxuaǮ|}On=%WEjv7$pW,x"C=ٷt l k Kk.NKwGӏz!/a7_ޟ0K=jz,!M_Mؚw1h@-h9=% v.'.,1of<;vב.д%DއB0 Ӷ(>c+^ %.Q$3= Hb{.OwdTх8D}g! c=\#'VOVR?zHBZݮN;'k[u܀u}[~1:]`Qo {D!vwf>du9B.mZ{%q2C3B7O_Ǒg ~/@/3#:XI߬[X>8~k}&}_>]]y;R>k~|m7{8.˟ľ6a[v"vb}M~.m9gn|u FZfb%pՇyjQ>Lʠf#-'p>j U_RTm  r"ZBVb8_vEjӿN HWⅳdoT6R)x޴exo~K\4/ඊͣ9}AWUf~5>Wj=¯K'2״]Oju{u?ּeg/1eXR׾4IܬԮ#*Y\+_T|N?Ω8A{??qw:Hm}+ NjH%YmXVȒ &,U|7T#T^c!ŶDl{ GxPje8KxiQf'7k\#j72)X$XpL+^\/ :"a2{Hnb$ ,-ɫcav&|һT}g {CxgO^*,KZ1)R_}Goy=5Kݶn=0P#'k=gWCUPL"7eL953<) sڎ8ǔe%qb! bqfW =S77k]Y$$vEG,UK<>"~մ9-ʾ:-mu`W[#WYrڴ`kii9dlݑD#Cͳ&heCrwovfsVVa$6$!r5~hl0:$vCZ{1fǞ}>|Xŵ\'^RjǔuE/uGaO- j}QEU?j] f(k.L/ X^h?J㪑a$xr ׿*ȕ6~\Ȁ/δ2 r>Aͮj?i0,9L "],iq?A'ނU~9 Hy!Y.ur $!C6f좭;\D>Iؤz,t%>4u}'G$"ӬTEZxGƑJCrw#K%fxm_ sϯ{9Kj|R7TM~ϥK/r߻演Fvc:ՂGW|1`]yy!ze I+7Lk׷/EV};Q>+)tjGTD=T_ })zUt̹:1) R%mo1G@ U__4PȲt߬=gNpXwq@C3ߔ9S7͕awӫUx ϖloӖ)9rSl4:WC &g;iՊn11"8BG8b($Y$I2$ŋ<6#zz.`0 $vG)dZSnj,gIaM۵L13e0 ,'Eյk&۟`0RBa9RJ-^Zz hPkJK+ H%`xQ(pg[lׅ+ڬT\s…Fh\bav- kMd  Wh >{2ŕ7fv1c募ɳ;ZN-^}s:: >5n碢;wXu'&˳v#u76^XO/Ɲ4@xEMb35'x[g<*QjSrt[Tׯ9IXaߴb-KK}h&x!֯g?c8.]}y'mxݍ9 8[:Y?w6%_ASwt<:Ԯ经0n- XKj{M6Vp@8 |Gr:U1ː]ʢ0*$˲wbs}؃ح)%Yg}! $z]GŐChc}bԭڜg^oFyօaşRjɭ ̍9fJ"ВT9K~%tfCx @5Whk y5DOCo-"2:nr']_EUʏ^xqtG7OCv!Cʦ{(*|7}ePKjU!aşRzm7秖We0B-- >svS,` 0ۀb Ҧ -tCPvycå}Ks.Ύ mPW*ڬhQ1dmgT7M+=yyCSnJj=$&72ԺdYqĚsuzs:< p@; 6Az ',S%\\TqE4n/8h|\_/:kRJZz9kTYqf}bcf%UYfB>סSpu\b.L7E)sPj!> MR[˒%%R^iĔoh xD-T'8 ?(ږ+ \TP|jk"G:;Uzz8"K8V:Őu6++C6IٟN C7WOSB I C]sA}N>ˌf岅2,i=s9ˆQ|< L^@p`&$P,c@ x m0ZL`|Լ]BW+A@pP,[j8*ǽBxoXM}u[!5梜r#8>vu!s6++C6&w%Wۢ 7/(&-Se[u75l)Qj!|tJ`1+(^iKe-+#LKj^+`8 l-ys#Nf}eVy(O5˭s;Gnn͹z;˚v2;9q?mɧBQsvS*uޤhʓ]vߘ#3K*hťOf*]aRj.JI2:Tb,)c;y=;rcI.g;NgWPjt`S1C_GTRZul>~:ꍕuǫұ> |{kFU'%ܛR(REz$&(4\:Ԯ䀶@{g-e,xm GvpdGwmܽ ukn_x/}<=/3e[@HqKVG3;g zuGxp| Zy|;cgfabW; `BXvXJ$ˍ[ш$\7[fv lN4%.'N0F%w.i^0n (! VwĒ ['9KaÔ4kPSwhTj--%H0g`0fEaMe, !X^ ;NcRqV/"K`4;B  !{*e*T,($̢Ϝ%`0otO˲-g's hvxy |oٚ%`0.`Β`0 0g`0 d0 F 7K4fܬjY2 R\(K wsdٰ hDFǤ9ulNzKEYd`0 |9#5 (sغ,d0 F/Zs)"K`0RS9K`0\œ%`0.`Β`0 0g`0f!RǕFBLaΒqBh~1Oanv=ʅ:o_r`\'넰o5P$ܟYeop6l5 ~I̮l4-n] v FBXs@| Tȇ߮c`TcKb6ڽuk:..7wOAss s.YL:L%~dSrOHytEInb0&Ej=9@ h"r. GҨ:yFYf>~dSr(-^D?㛟r+ Gd0 JCa |=A(;+%-rJ,nb$R|nP6DSE~Foٕ ZQK?->"Z6]6 lAPD37ɿS*Q]$@ &>qqh(NJQ绎ZEcYJJN kĔdJStb-s$;-W:Ic'`, y?Ž2\v X4Yj|$Bxg\ @GDZ#e$>D>}LH{|tT,U֛nBt|]~XUTTnv!>x,rA\{8RQَ8mhIn"J"F1ω}Hj8ہk?<#GNZMVU*5洂\ijP AVswA큂m?T52 F |rAFZO* |, U_RTm  rQqaTPs!M[+I1JQJ.%^8KMF/)_KFv9&z)'3K<!V\`8RdbFIDATNJ@ J*jv!TM?#R8j݀5@gYe?^h50TZEr2o&2ݐ!o.r@D<ҢNnr*PZ7ב+QsDϾR?B07pfA*˴(SDG#L =$oh?huG$PXm}䡱2 FQa(nP"]9q oUv͙hy%|D#XFUFjvr7ii9d躰,p.@Kj?u3_{iiiw4a>P(.FX=-NBɾCSF(+Z`0n2Sh4,AsT\#ƩfG|p -X嗓a!txR'"E[?-w"j 4-ȉ|};$Zn"m{؂cwfL I휮zbV~EԇSN b 4k+?GFQ|q$gWY3:.nzU?7(ŵ+ ()ܾXe0IظW ^vկF}\5<\0fOqBl^cKE yL-9&,@^:AւbĮj0єMrGU#!;/ьoxឱ6;FvepGd|!tJ<^1As.NLp#PW)oy_^9_Z`0n* /M.}99S,bn%;v6,hWR]`Β`4ҲNYa(X XߋN~+U4Rˌ[, Fp,n+, FPrg_}`0%gpfIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango02.png0000666000000000000000000015361614675025471016065 0ustar00rootrootPNG  IHDR w1sBITOtEXtSoftwaregnome-screenshot> IDATxw\ *Å " (]gZmUik묫 8*PC!+ $y$@ 2} +_2 DK B_L\>~CDU  eBP(lH200)I9B0!ύ& c:V>~dnnJcFDaWXק}K뚕͛] b^5¢a0hQ(*:O~aa~A VV լeKe!8RGlyNNMC=~rW]tI'f+@d7:܏_,&Hi!d2,#y 2zco*x8iB=7B(uQRLodd'j=G4mX3v4-Bm>Pb`g_n["9&f|!~r/݂y/4Aq|G5V2cf }ΠXfvT^Ώ!wͷhe{YfvEKGg2DܽI3sw4FhGb\*bT&KfKdj/5Ar).JGEQ CDMUj70 ڭrE{Ai3|oUQ<&e`7`)`>IC! #C:`!! ˔wrˤ0!DYyAئ`М+)~QPKi0z@S4!D<_59O_%+Oy*٥EfPDYuTz!j@c!{̞SfW&ݐ`Td(o@'/ :A7x"dZfcN0(=_|Sd<\n@2UÞHe 9E)7riggHv9 !/e5Wڢ䴦\TE(B]v&9 ׌{llֶۀ7V@hA' Dh*/4=4: !$PIJU Wyh[Fsy!<v'Ooi|򉊝EQbIQړ-ʢMGX|⋅ٳ~;?"T>:ґ O}_[i6ѓ߿9] H¦yGWb)Ff60r9y1Ml"x _kKI^=۴RB4߉ Ebͥ`&j  Ofr\vڮ:(((@X)h|Lqc*Ac64Aj Kjј&DF l k[ v<45ϭlp^C4MA0VCFą:T/y$՗b,YHMK3#f>ݯۨ=Hm}}-fLEu׊~?uHbI7*x<}hGO6ED|7y1os8~|TX2܁/\fGbXHi~nσWw {o?OL7/"W"˺GdIc[3#ӾoI{nFX:UK^Oݩ"$zu:n7iK^/$晽͹rն:Ũwٷ #׮*\;7["RެvUq93\24E?ljjܤ<xP?*G x2Z=?*{y_z[3syQٍC^NB]H:k9!ϖ}znFJUOjn0OLj@H~k|,hñÇ3Qfy.'Ksof d?4mM㩮UF6 u5+qXr5 ![h'~9eKɥۊŗ#ܭh=FqRj6w#n,UM9ԵfڗN<ˑK.%.?@g؏nXu=Pc/')oNMrM(#B! K=8mY*(= ߙ-_ec{I-Ưz7zZrthU*t!x`1 "//ϸϙG!;('uM5=u䫎yL{,=m:<݈B4N`qAܩe4E9y+d "W.![c\13-ӵǃYʢy+*ɊyOui^ץc+2&Euxonm̿5qpVzK֞Zr^, cy {Tۃ^OՏzY > q>cW=M0 ˧hOи`w=6CR 86,`MGuC0tnoy<{ثBS|aO1b?nų 8lrN,d0[N\re8`/c{B|N&Vv_>"/ߟYcen&taֆtе<1Fw<} IhO'5 KBf?[ iA' Ӱtȅ\QzW/;I>yn<ňaCϐzz{b_UMҼM֮ly=][ErZ4poYdEm׏n\* N{3[cml.  /qMlA_y})BU ֝?!{/CU-:T]āꯟN:}7&nǁs[#~CQq«EgA;\ݴI_3 O{}e^y~8?s5SF]^O6?Y$kG}g'唫/V>֤1 fݺl\!dhhqw.kcT~,<+к=Lj O:XP!IJ`*z/A!K\F1Lտ˯-dJV|:xvM$1#!˲r~IqZ!LR_Ieo֬BOWyC i].{{M*!o,lKxʐE=$R#~⩠e`U|aeRGgw7嗆jSh=䥔ێS(ǂy2YFswnGH{3=-lKY[[8+BuD9= n+Wr)˯-d񔾺n7M@X}tjj2i֙l͋Lחрw/n+0`vwlɹ(lx1}OG _"*~Y8?:7_d_㯝xT_(t$n{P\{8 μ,V=A7]rncs]!fsչB1&5gm؛R= WF+'nҏGr1I< ?<^Q 0 vk$W{Ӥbcoz`+H-#vWH0K?_a|)ړ!h ^gժ&~-H1?"V~Ӵ}^4(kty(_{5=/tZv McU^.ȀYf5ZfvQ&m%q;FnV$;{{q-HxV5Weq\pr尓+&5q_!I &GZ4?2JQ߂PzlN#@G* =P HT@z#@G* =P HT@z#a>A`x^xèc9mVoA|+'$ Dͼ}iG ~^m- Jsc^ލʗ4Dpaj%|.,EυT^ <ۻu07cHVvVBlV9u@{l[izY%BH5hA!+ SzcqWh~&H5=":u]q5",CT sGv6mögk) Z8v6΋vzHh~/;L YݯY H M#eGgQ)Er\yoVX6ò""y]~_HGmc\_SZUQςvO(gUO;e$KҞfco0CyF4vے'O?%q2N[_[O:9X|q'i&ݗ+ジS˼)}P\jQ7r[ܜGWMg..\ٶRp,ζ,bۻEuiۮK4 Bn0~tў[~y-ɪ* ݭ_<VsK)V;ۦ>QX4301>Nt&>S=O?vDFK{ X<+"/ ԟ 75ZN7FA|LoguM<ʚy&oiKBwcը[='zM2mxc0B+/Ç&8 lQ&Kis>s!ms'JS/'kCm82%jf0tnoy<{ثBSC>dHw$zz{b__VLbňu_ŒI f>W$8tCk0 IDATi}0j:Al[8@&fCz6+`\'^tS |]X[&feT?ʈZҎ>8` )a1vΕkD]\obV;*ڋn;~q?Ê-lJb FqwIڕ}>;Mgw2y!2)Pݝ_U`u*qM|qx!^#iOVNwZ4potڇwNXp[{z{(X.cl}߽lq]B2ŠTWi|zIRk((6ô݆'kъꬂߞ$i]]D7vt?ROQϢ7[}rӗR$HzTv I^r",IӫY;; by$){ZT.P6G71Ʋ<!eɥ5 YYi|p8`J.u qIYbtqKS 77rz֋\1Ev][C@F`qQARԳ۹Fth<=-eb ),!$+J9lTL+1h(wِ4^wضg\yDӰ>s%78CI5 < $x]&l}c\KˁP ;2<W[Z҉Jʵj"ھN&l:A[x $B<+к=z)JOcPEvTm"$7ɪbȲ$?Md`Q5T&jG*LG@1ԀE#V|Eodͺur6`0X.bIgs< Zv~-EH>mYρMX4:kť"YeXZu{g?[$ b7ƏXb'Ѵϲ>oӇN)8>훷+G-利8rI^JiaNo2}X,A^8y 4Y[,|/CE9>4Ɛ2sK>z>޺u$Қũod]0\sO .}NadLO 6s7NĊˡnghXmԬ_1 Rzuq롓XzQߑ]q"dʼnFZɤһ&B4GۧW-<?8MBIs^kjXzqI١0B_[4f^t=$3|9f|픲} '}jZvDOoψȇl׉t.fS,hŽ[^;~v4;a\Hb6N$-:0AQLu @:(:eۣNZO^ A)O<XǑЈ vO{JC> HT@z#@G* =P HT@z#@G* =P HT@z!#A`x^xD0Z9cY}Hv ~@;F $Tgms#yhTGJDz!RƠv,REWNi.|^%|`8]#aqӞI?1"k˱a Ꚗ8fiMm=ʼ0ʼbY;T` !.v~'X`ߔl cѹcq\$K$N "ό)+i;bqk|Mi!vے'O^wJ7kNXp[{z{ +{r/gp|/X)c·Gq[L7a/*XxWU;J}蓢| Ky\Aw~/UdP^ At% !D3-i4 iڧSOmBȶ+skm֒RJ1Ƹ}sܩOc,+L~xv딺>(ۙӮwakYmYc97u+eYjàQ6?Ȋ˳ WϵOA8?U-C?tU*!kgKy\Ց6*kɟ&{ĬvT mO=gB^&"ٛ+&G ǻt0vve,9%*װX$*aj}%OgxJalM?E.ƘQx-_gޔbHQB1X&.|F'KM͒!Y7Oji1x=W3[{r{c~xC~xF~X*+ωfgHohcrqW|w˼uMhg(cnHGOi),8e"}oԻyU'ﲎZ ^fWշ57NOM?c~\f{ѱd,ԓ独f\7'’=^Z!T"҅u2Hr2Ǝ@Eq<.-xvtK=JR8gR~"InrUяeK384Ew'#,+3-L([q*]0u`t !pyjoxV^H^'"<)tDA"rJ{S~#ArAlH&%niRNs}ڭW%K}|9[/d¦BjKrSL,,՞Q|?5/¸͝C809m/v.i-UW*NJOcPȎ@F}Sf,Ӛ}+^+>tp>-ls:Q_E!=~|֙l笭-np$/ݰvF(|LOK6}E&WPv$Qmq~t("O[C^u'wyI̯.\uC;Y6~_u;Ǟo4`݋ ,]`rnkU#jgIʙ|~m~V\&=?wLuor4X=vthzII ʾN$Spx>zGjٚ8tF=^(Vdg$oL}[K%e/NLn:\و0rן_~_Z^wjM^ 0BV|Pڳ՞{D5vFw̾Z,.N=?l)K)^e=)jAh_ ¨=ֲ߉]Rvzck?#kZdSbl\SF6EϗEQ-II~YY~́AMQwã,4#̩\ݸ1Z0hZ4_YM>Eyh16yU35ܰMHup ۨՋZ PUi#ᤃ.q\#7>sêU]բc(HI 's+y⸍fuX>sê3"a-uj`jZ$1a'wW|O/HT@z#@G* =P HT@z#@G* =P HT@zB5= t^ZY K~}QA?A#nR8I~'jai֐Dc,MAm8Dǖ hң׵Y=YzMyW q?![cà^c__kJW  b~c}l^~ Q_?WkN#כVvE\tYgCͤqc\wjwE3#iG-QD@. :=A潖q?cq^|ض Ά@;I,O2/Lߛg _~-T~_HEQZ2{(fW{ 1νڕCB o;#q˽,Mapb!/q}VG>㫬'hBwti=k5homJ#)ˆ9ay6)j+I.lъKWyKk;έ2m5g=p{UHP_c!dr<|h6Zi;(n38a YL3ĨEݩ;A,Nq_!hs%&!Z# ?2~NwY5z;# ==1BH.^F n\*@MjG|:v~Eh^! /_Ēb9M>CMu肭'steH7o 1eQgN"Uӝ=M=ܛ{ĭ]5V# ϻxR&jr\i9?Ҙ]XC;y4Wܞh_hM^/ Ͽ=Ό@fnȟsy\w‚Sz NsbOoOoNI^rDE:bsݜ jB@W_T8+1Kx2oO=`QW"QiFz6"lZȜ6 v`psg3bZv0x\-N͟_zM eV[)Q!_޷t1JJ^Ձc/.nQN(io+ucݨIݹ/nʃy21ƅoX;h=W/caB;KMaq <4~8/wl5I.>aF9F]܃򖳆jd]HVzeg^*e5 H#=RMj @\skZ/jµ-ǹ詶/q 8N% ϪiA#:Q^ LcMzToZ'%7-ͭjj18#GޑnjZO~}6Y[IsՑv3tQsȦAh6rA?A A`% SܶFR_>F14kG9eoK0%omҢhWuKn[?늛QmlC8MYBЈ5Hk_G1 ZώoşoX7Ft#{iA:~qm+cMDA /;zzD3t\ĝZm\1ʹWaK1ƹ1tW ]^`zk1/ϯ4 x[1s7UgTZ_L HB[0dO՚GL,J6rk֋lcE\72C1.yǘ(]v2{(fW{ 1νڕCѿdBPTaھvNHJ;`B W?}~pf;#v '+aٗcY;ح"m?ٔr[#ri AR!u`g36Ǫ{_aPίu:סcSܬyLǼߌSZK nry㬯Vzmd'Y}}1FomfGå(G.ÅWh'X_O*1ݢ[ONjSrsDl?Mߓ+^ʷ4o⌳|myLn>_ϏʙE>  /M4wﮤ7z v Njod IDATzI{IAa9{z7!A`xq|t5z)}>{Ĭvd_mO=g{ĭ]I,vlmNMnce:Ʋp`ɻ)!+]5#7yõ-Hځl)Uۙ_s:goZNG;4fyU^~Nj1=8ڢ7Vݒmd%{4Pcˢ Mi&C˧*G^ly{FM,{e)JB9RG}})Ufz$^Tn\J9շǙl7s.igmV؆%g3/gٚP0ٹnNg%){ZbZv0x\_ l=LtC}JF 9jd i$@yU'`1ehIbȗm?]b̻'fu3>xwK? )<;)\,/J&V}E9Dk|{Sz%JOX$vK5h,)`$)O2C~!n$?Md`Q[v0˗(^TNgZ8+?\ڔxִtohBYI?Y#-YHAh_S|=kPEi|=zM~M-:n{j6q?/ i vr|mh'6 -g<IR:<0][sY]fG]ۉT,epYej$Y[4Rj[OjUpTK/6oy9qpKʩ՗FQ }ɕ]Y3d1oj^G]Zj}l^G7̗lif[zںƉXB!3=-ls .)&/U׿,Fb =E_8X4oC&w-}*u䥔ێ6x[7}:&N&-<Ǯ}1˧hLCv^#=뗕E$ Y_,-qz~c.ghXYрY2ֈ`2Yl.,SWkm'%#\ifp[ݾڕ]>(&ut5R_V퓢Z;g˦郾ZzN.ֿ.0?#"sK=]+~_drH uj@ݟѷ_ȶ[9}}\{ʹsc,LY]uUȀ;wLU*5?,acዋwT@7]rncs]!ryYqeF9VY; ,1A߉1ƲCWZkL{^->aF9F]܃L|ֆ)K۳pedr$Ƹ}&R_:o$)7[N`=HYu"y鵸c|6saS<>>=ucн|zioTsQF?QeU~(5f:懫`3Ss>[}?ů["GGr=-˦Xwur4mͭ 8e}k@q 0hUIvO,4-Gby8N ޔ/Sէ'i+8A)u48NKye  .$WMo$g.[ySu-z:: @#^쟌/iM6ІfPkag6lOkQY9n(4vѱC 3)ް<' /xlB:?O-xƁXǖ$d9YBᣝIщRUQk8+_B~ohSBRqhQBq'7z(ۈEXA1l,|rg>\*|eԊs[>=~,N qYJț0ی~serfBf=soaҙ?E$YsRIaR^̛5=r.+BDWoCCTã)or KQaaNڵӥWV13'r QMYRۿ#o~^9ZfN6݅Ag#''D{·Zot4#f;w_]\5t]Ҿ!%}QWZoL,}ŕ.}y)+qDegnS 1ﵬwj\ #cz/kžt|Hʼ*;Vj ־4?e4__γc$w_ւy!%yvdB, {WvMM/kYxT}{Zf p\dowR|MPiy}{W6#UxdtYz}˜Bs0seWЀY,*#p p;Ӊ]pdSӻj?f`v[,bɛ <S 0v"YQA{vXl3 `L Fz$IɈVT,ELrI TBݦHGeDJz~B!i+"AƼņFKkuB^$ B_7HBٛەe^V$ &EV.U>L%(faФZgؙgOʎ ?{wĵDamepGpCA ^UkrZʵҺ{VR^k +`UdS컬!$9eB& ?n7gCf=8VβgY1g7XȽWVS#I!ރG`aWSg޳X1esuR0ނҤ$WG% f~#lXP8SӋT $w PW L2h{5&)E_ŊJlyRbW̒S:e*䗿3@Q^]ӎ/`DŰxN-\~"/|&wjWvZAX |s~US~5,\'ɟ\Qz#G3PY 5T,;]&QF~f;,2rdE2 VTHe:կ l׶rl(.鵅o!,JwةzMM\qk7W|I"Q=1Zy,ʲ]vɋ&{g2{d⣛gS3Jh{אOb~u6mϢ E5/1e? @3 !ᑢB*(M/T45[U4[QCY٥WUgؼUzZZVdii.vRac']HB^ܸ!-= ]yKo(u/)@$%?%M 5pm;x䝋#Ki맊 J)[/jT|^(/Х7%}9)a+RXgKd_Sv5 ܌Rpiuܤ87׹[ !)V =B6覚֩ =5j> !ҩ `e0LRzm{@UiG'j/"T!BYj;B7Ky`V 95zap') *`@`*BAkrx!^%r #=2aNWr >7 8 @V; 5 IFs)#WgQFz@/_[9ܨi < : BI_Ƀ`xr <Ĝ2X?s  $JԖd*t_Mw1<p!e['`?)Ha/p (~f} 1|n ' 3|1:<_oCsBGQS0s.m-Ѓ8CSt?X_RX= DvF3_ ɶЙ@A_èp 1= w]Vǰ* 9U²a <nTlQ\pCLf '\!#(K9?TZu10b, }wYFQ7y5x͂/#a'Q(n-0o.<͂\BEixT`zQBrAL!T•S:ʃ_Ay?qtcAR)HJ!7(yP1"nfABCn(qTZB RjGTRu?DAu)UoT եp7(sS} H`R)$^VPj8pL pU<ܻP ]k{psBM[ᮊaӟG!%'פPd nn z[& 60{Go_`o xV<*}_5Pc uʹ]:*mr9.xPr({AD:۴+|9t^]/r몖)ڟ(܁p>DPnc`F8X_`5m#B͒H7RO@<@Yy;8_Vjk%9;.~ P(ӳ΃p\ p  =sU>֤]:p4|9\ôݜ_Z T* T@a]0XMXTB#O)=Xt~VM? Ο$w W/)gJݷc8x fy_ /lD)yBEyzDފ~djb}^0(GBdQgtv<=?3m$-z⁷7EB1BmڭZ #ز 7 !jpx `B/!B)B!!B)B!!B)B!!B)B!!B)B!!B)B!!B)B!!B)B!!B)B!!B)hy}#kKeA"O55F?B!GIchS9̒$WL7M#Byel߮x|vc:.Jmvx>5˗b^2w4P~ [.bc rB آ!l]B!zmxu إ*ܼݟ$;'s' Uu={M\/(c8Zw t-(O=-;ǩ=lUOBF%@uF-OG^Xe On''Ԕ=͉{q>5#ۿq,E4HtPีedGZr%@П>t!B 5#Vt$WCCA!Qgtv<=?3m-aFCFOߏq IDAT1aB7B!tG!BJpxB!G!BJpxB!G!BJG㮐o]c`[ Y|,@N$[4Ă]  !ܘYm8ӦkW6pQ/_O^Z;5uUrS N7twج*B!UYW1\QBPF!Ҽ62uwFFqJ SC!9ek*=:@5V7TnLo̍xlf!$+%tܕOڻ_W]x?ڈkN]a3Y'3 2+)ٯp*еkU:5cc]= p@ȳrtT'Gnv}'{+(uxnru[_rg;'~InLH߿dn8K9e&20Ҭ׵kHդ]>'=ԡms.l[-uewojCtkHE cӡG?aGRA?<zjd1.AG_A}f,p8Ϳ{zei,gr뻑1y'])<81󰷘%9qM qtT'Mn0c6\*An~ "̣ 4Uk[z"1lC7=ʿ8Z^Zso6s*kՋ~~2A#ҷTbFoN:47y1!4(yVmsSaɽm,M˿/BGk#İJꣿrwڄZSnX<5;'~Κ:{.0Z;jfi7TnL:^1<{*!fx!2#3R#4WAp"7+B .76n(cʺko5\9^SNF7lzO#˸%WWHֱso46L*e}ּϏguTV :ﺺjk4kq59T-=7=an_ȫFS7^Ϸ?_|BvTQnscs߳F%WNj)(6cfKv8J-4TW*, ~O%ngeTpv9Y!-Msuayۗ0g(tW'GnXQQ^H?HX 4)7u~yG>giF '܌dX$ZxxΏFiZenz^ (md}ƶ+T |߀1ڿm*7:z=_Qzv3~Dwѫ7]GgG=+JaVw2s̸͗ 612jWa)bJ<%"@[SGn@&u+Y\K4ύ1Wʏ~^*IK9'='~Mr]wܹ5l|jGߠ؁=.SB)9%:U4кr'] Ik,In(8`_5i6P_uoYPqGh70е0&[ap%WNjТ֔>ips;Mb.`s,:?ݟEǖ XB"/H8hE4V͓Bd1czC5ntkW6pQ/_O^jNJ!Dܦ^̇;4qb ޏ.i¦Ҡ .kǘ0 e9L !Hsb.bI3>rc yDjaaq95Rsl^&/7`x\`nu|Wͪ"R{|`54J!r&s곿1 Fw<8m6T,I34滧cuq Yat{!Oh3zC٬9rb "}햞?=Z^![:gꄾ/kH1̰JP5c:M!zO' !oYҋ'>nif`Psؽs1(l"zy}id3afǦ B+F9ъMhJkQEQ(܆}aaK|͌3 ?9C3̍qMnu[x c;|Nc7L:|fa7$j {/+ojoLl[:NQJYxaKPlWoPb1 \N枞`Yjӄ&е1y'])<81󰷘%9qM q]s*MaTɍ%6\*\o+ ^#LM|',/zCav{㯯\귣r?Yh"pN[|A5)kC(M/vVc 7dZKύ&^;-Q$-Wdg%#e" v2wjv&'Eѝ3iv:lS md_~A m#U]#5zdXMnIo\b<>Y+4dSԱ~&BkϺ :i3.scD^BQEa&ri&7O40`I¶!S]h )߰r6\ئ_\WFԯInwƆ(~])VHwӴNuo鹵o^jSHK3b~Rd_RTxSb L p[kU|sgFەֿOqEvS^x]9^SS[K`fۑ=_I@MZwܵާ&St˭*v Ǖ u2]m_aijMhV6C Ex&}GX,tcMcjoW?8*>SHֱso46L*e}ּϏg_M۹q59jaƸNF M=jdGD*hxb ŕj#Kc6H} YU7jk]NnVHKS\'.hd@X^#LD3&ΓBnnuݼse7]duw|ݯgda~[4@bT&ɺKsJ5847Ѡ Ԕ$^6gyW [l#N^_et1HnZkSriZS>o9_htNrtk#>Fn1;>((ۏ(d}/,I~wS&QPl5Z6M!)|r%>3MȰ]禽cR9T*>spOzNN476vyejWw,9%:UM*M:թf#ZQz|[wȏS{Z|?J94M|w` Bہsw 14]S2:"O%ls==˹]-&y 9v./'Iڕ"Sj,7`)7}3%"͉=h%)ou[N"g2rk䡭6zEŒ4"}GH0RNO40`IjBxkʍ:y28'%V2lm7so.!GDtkoU֚!Dyu@'uS&rw0:蹿~#(M>4M墖}.:UТBZs$ˌ#4WAp"7+B zRJߧ";)u/&-ts|w})4FTYgfyuӨݾSyrc onU0ʍ<_w]b5p_ ߸& )𾽐7sqY67F߀K_̍o.wqyCLlEWeWzXq59r}۹ P>EQ,Ig /X_eQ #_͖pbUH RlRVY\mdi3/v;+NjmSx(42 ,vL"sUk u^6ž[LwꞆVyj_QI!7c7:o vvU|3{홤*Րӆ~ܧAsc x2ڿ[uQ,?So&H,$Y{i_BvNGNrt;YQLG?Q5eq=ES *"12jWOS)%DԨS!)|r%>3M[zntS5ɍvqװ=|F}g+NkQEƴ8tSM"fgEQ|Q%%isQRܠ؁=.SB)9%:U]>PK^,QqGh70е0&Yw4zsc FB*3bN|7Fc[ r<)!ԛz 5#Z>F 4П!BHޏ?yt/ک{~fE+iEB!%z5 9|o{is M3jB!ZB!K8/'Iڕ"\TQ$-ϤӘ9ԅDZ~$tf< eBOfʁ3{'8[zvl[QuTkP=ʋ*p(ב,V܆}aaK|͌3 ?9CsM:VntcS==jko {A0ƺNل3vfj^_TDy vzjd1.AG_A}f,p8Ϳ{zeݨe5Lnp IDATt`i9i~ewnܕ˃3{Yb#YTGexGgXWbV'5έ~;|Mqe? #"pfui5v6eno x͊U?",i%i">W,qMϸXV){fP۴3u #+IH԰FVW?ڿȠzH߶?T~glNߕ[Sn8'%2[c\ Z:ʍ; Xs重䠲]}ƴNuoQ'OM>Eq7x LBHyb=jbS -*1G?)^qHȌ/)_Y^Y, 9B3~UAn w-r"o.Ԡ#5ڮ}+ZjW8I ]{o MQ)i:N߳ksB̋n>7AG]WXm ܗbew:.oj WOanwlȫFS΀1MF~6|k5i߾WO\V_= Hm{S5[#UU"44ur:^ER]KMt%pr3vc?0nm:66|:rmmd}=4zύQm*7:MCt[7YUIA7מIʯIK^ :m}1 dzv3~D;ӌ]GgG=+JaVw2s̸͗ 68<(ceԼ񥯎,R>ELU[hc2!S^bS%ڭӚr'ms]wܹ5l|jj/%zA7ɵ_|d7!vfuSKύ:y2MnڜoߊSzZF>#ZQz|[wȏS{Z|?J94M|w` Bہsw 14]㿉_kWWh,T~HsӦNuoQ5Mnڜoߪ[VfgLujC^r<y]8BH˼,x# B oSU&SfԊsQL5(wL[G 8f]ɹEGUno񞫏k={PkKDʍim07QrkcٮSeNug|O35jGI6.,!B:uHg~ɣ{N]3.Z#bB!%z5~h*>o(f07`n4 /!Bk!B#B!%8,|U A{S5[#UU"45lRVY\mdi3/v;+Njm (42 ,vL"sUQ4Y')Im΄5<~MsΓBnnufTn,ǀ{\:xN<#GJi6ž[LwP=xxΏFiZenz4؏=m&muUh֋{4#zv3~Dwѫ7]GgG=+JaVw2s̸Η+TuceԼ񥯎,R>EL4]OukEfk%νa{Ti6Q7JsѤ.6ȢЙYcugnO_-:^Cos'mrf?&p<&nבhp'PUHj!?˲n~<_ ( }Ƽ8j̺A׮b4hFuR"WN˓B)KypOY*ifͦu2_Tȍ4~mXBnm&Z3`QB{>.!"/z|u ToVM87YM~L5Ctu%䃚+-\yzDފ~djςB!Qgtv<=?3mB!=߾`n4is 憚+B/!BB!!BH B!(^ɿ<>\Ő yA±EC,Pl"ˍ98]ʯk9FY\Q{ʻ cgޣ]{[q=} 39z v|cOf1} _mڵ{L1EqVfHӊx @8 YQZDECu \E<9hLOΦĕ{0ar39pfy8qy&}'9gK*7ubnuޙVW#]#cV^x't۾GĻX:~ΥY[nOr{Aa?V?H[-/ y|$~y7 4ZΚM?<zjd1.AG_A}f,p8Ϳ{zeݷ-,grO 1y'])<81󰷘%9qM qhYx6+r315=y6U0)|oc^jZTHK3b~Rd_RTxSb L p[kU|sgFەֿOqEvS^xe7I ]{o MQ)i䚴o+`B.} gM-V[X iP'[knUn84o)ͷlJKS#;6OvN婊g†s((ϤnoAug3f5oWǩvTn$칷?Y&K2ck,o@%WNj)(6cfKv8JG&.UWYAr̟KʨF ii꟫ ˫ݾ<|pi?\WAS k$Wɤ%O_6>tTQI!7c7:oIM:1JY~اM>X"I..~ҾR N:EpF>w˞*n2h 59͙F𕧡SNv~0HSsZʍpxϐK;|S闇z7 zv3~Dwѫ7]GgG=+JaVWeq=E/iW(yQvǗ:HI1%^BTmԿV+_k%νa{T<ܴS[on1;>((ۏ(d}/,I:N'~Y>݄ GS&QPl6Ǫ6A{,] RrKuD{ BnTIR~PRLZ?<9:jET{Zw t-(O=-;ǩ=lUOBF%&I ;0dl\;BEFetqZMUώ+tyN^[Vv:5fmr>ޫ/2QiS'p=Ǻ+pڽ!x\Ő yA±EC,Pl"ˍ98ӑ]ʯ/'Iڕ"SjViޕ2BL7qdyw;SB!ҜأX2ϚjQW}.hF\wzO8 {m);ks +a9QQQqu[VU֪m-ں[v9PQrV[VѺp FV $9?F$|޿KIC䗹9Hu˓SB*uw+ܮ{q&veس+ΈJ~INDA24TZzoLZ+oNwgo ob'87 f 4pǟOK!I4if5tF[I ɧib,=VT(,(m?jw8UQO(oR҅/}՟}jy)5:4QJEv-.?rwUf.yK:2gޥ705{1בny GPZp5e@S, xgB$b3fbvL[y&%lkț!ӉTp=o*s>-;UfXU7ǘOn$.=5fY7oLs?(/m5o.C/Yz>}Ae`ydfKZg˖=%}Qm5o2snt_Yî e _E *u괘SVN )YkRJH3$kEdLPI]*]uLXܧ{Vzq9(7*du!ѹfeqJ|0чK~K,ϛOlpo(3;oWaW9)Oo|%`W͔͞_efżY{כةN&%KoۇW]ޓojn}QYoyS]q{{6t ͆y&20~'F(c ^U.2@~ JYNJ&+%AHWXu=v9/eVbN/;-4^~moG;: <g+%NakH;wWy>8_޼1YAg.vؐ7_м= ڹ56|3~9.dL)uh+͢c4FzDQ=Y]۫ &WWo/,VI}}cwE5OX\؎Ojt=?"ٰgbp̿WN>̻v˔CcNޫE ={{wO=-e|Y4~Ѽ [O|*F9Y1?6CE{+*Tp?7UshCn_аYQ-X|#X˴ȋpV>[ o僼 5<0##(<0##(<0##(<0##(<0Bt}mP\TZʔyDD(lG#w[TRGn̬40.16s&ҧ>}EmJ:NYT v|{ym>vV yq^HFz=x5Q9&^qQW! Rs =%ȩwv)&}UO}iiӨ RiZ=z~M`1&85BJD^Cf_G.&}VȞI^"bw#e FαuD,7cL1DM3̆,"%~tmˎ%w:'ɷL~1Z""{v J&')+CM.hS84X#>7t%r (}j¸<;ȓ~溔j6R"su9s-^_ $ooPQ= w8uKkjPV]9رn=5Z'pDzm ^v8-#& Z ?5:@uMv0-MKp$H* sG܇x1LY)zO-eKPR?Jɖ*"RJВȱl@5dDXh06 t:}K=.-[exSUd5A#oKLk(Pe\)Idع9)g.pՆq-MrqR($YsEN$(7QS~N/" k!xp&֫O zŞ~|c!ʼ)xǜ*"3.t)7csqubL,rVkKUyGTV^vbKNJTk=u\<#Nwn)Drc29 mܥB{ xk]~U T,q`p-zk6k8jsSkhƙEw(6U+Ev,)]G^ա< ^mZ z<0##QIU.)&"XD-\xE=\(;x-\{K ASaBv&:~j+Gf8~k߇5d8-Vd{6\9yz`ԶN5-o%LZ,׫y㜧〼@is9\E=܄&Ͷf*|/@5W+`+VS+tD598dFښuykg%"aq,7Q`[GHYL1Dj)݂sA+vXahoݛSݣ3s̜zqZrf蒁vbK3JeFr̃Qy+ܮAyPQyOhċ͛.U8E&{Y~7{{gmt<^j['{DDÏc|Xґ>.ȿ)}܋qt˛.pu B@dT5e@S, xgB$b3fY)NK;t!N\m5o{&pCΖvV204› ޳Ouϛ,^T'J=jC{LH^zuSPUBkT a£3sKռ.8|=:RfC߼ZWef%[5Rղ¯n\)Idع9)g.JlWTЩy}ϯ-sGfO^oy_ڹ56|3~՘܌lzs'i :[)~[ϛ5 +JcyfռiB_q]jM?>j4g+{=of'_D6BLW7:= Cy2*rpr"~oo&㩇)bTnDgY ye'%m?JׄisuL(35'oLZx#qM,|rz[Z,+_`G"G~I1m6RԽ̈́UAnn ʎ 5h.rܳ-Aϯ .vEڵucsӔ7y퇶-E&ٹ69Z<8z"_[5#o߹C{9KE}#/07 C//(,*_z5!o>Y:umHd__AH- 3 3q8pB39#"{e?Hs|}ַ2?JsK;oQ#L[ N1JO67&wwNlj\&Zsy3)8m5.oD$j03Xpq l .X##(<0b\}nﲁb""k?^MrεW\5o~)^9ąR0ATsoY?#3O*1N&omGIpι:ơuʳzM[!&oO\k4kDޘC+C.>AS[;ZT_˛]zszri߇Y T<3[J ]|%"!3#_>+d$/ u`ގ2vؿwp:BۯT1Dj)݂sA+vXahoݛSݣ3ͭ4o"N+ӂM\u mZ{?asigFMOhhS'ġmL5S!ou tͰ&Rԩɰ5OG9y9ͼ/QtS%ؙ#C]}] S 8]Yù~ׯ}ԁ  ˋRt7q7C5e@S, xgB$b3fgA v*-2oycn'G٢-{7ǘOnT1oys[bN61t"ާ5T=TMElI+vl?vPnubEo}T{CQ.K> ˍ* [όcDD9wnzw+-ims\ٕ1NW"B#*uMɛְ=^={V!&͵q$9OnվsMoy]ycu uۍ]:_;.gZ)7S%(Ѭ_ѨNwz)A;4;9`gmVJT)ɕRUbd~ *%.tJSܨW:~WօD}eSx'67`GT9vay{O&<ռi;m`A^rTz}ռ'?1젽Ǘ:[ҳɼR=(GRg/*lPJU r,'%Kc gMB{wŸ3eVb:+_wZhڸ:wt:x883y};lٖG_&jgum.<\KVQ&獕n&4'殈9ռ DZI/w;M+6FІfJi{`#|Eda-ziQ0WN>̻͔CcN+Ӹ +/˜ŷۯ忹yq w8;#LL;ak[BG25!o|XWKq9OKkj0 yKy"2KgVZn{|QZN{t~/Rn{L103H$h>8 /)<&M]**͍!Q!mS.{v%!8UbVBDqj[嫛~r?*wެň'F(z>R7Ճ}ߺlhs7PܰW Ṅg~É9bO k{AyKS+:s9'43"^d9-o].$8߿өغ eXT&?^,y3 3<-ZVi˨M$zr~N U&m8be85su o EL6OY޿63XNag/޿Yǯ >ܴuGrڅZ'w@O1е&j9ī?.*$""_r5q群9mxn#맶rd)0'M+R %MzW6QWH:Ӵvkg{H=1BcL(qj2Cw󕈼&H[ӿ\"M=D$;nׁFz;acYhoƘbĉԊ[p\ qn4h>]@>vr"{s{tf[/Ne\ ܔ-=IJJԹIiQ" ty[N?soBCdnag~׻\̈$|gq/y捧t-rc ݰoGsZ Xr*Wwyׂ?[-?z~ǿfddĄm5\*rpxnڣ{N\kj;{"յvd|BΨᄎ2}NsGBwyrZJ,ץPJ׏\]F2u9HRMq~KHhܹ .L/2Z;&^6~4;zlcwQ:1"n7>۽OOϨR.z/7UP0F޹Qy9ID$!5r&QnT++>ѹ͜\`8l#WktaLd/e׺lmҲUjg?Ո\E][0H?[- TjYjB(WrR4Y)9vnBʾzƪ$w)\GU]li_BxԹq~?Ft֋v2ڄ,'EOu;̗I&3tA1YmQn,ߵ(t괘|lX 3^}Z8+{'{WՕL?;=3À,jW^lbLWSS0ŸéU9.1fSq.NEum86SN,5p{i)UWtjgĕoh6=K xoS䀠/Ƿq m& wscHTvtHŮAgw]go |~mHtE.2nx"KhC6Ȝ%:r=lj$%ʉI$s}褴>JYw{.RK&).`}ַQ9׶5fS.] =Ӛ n>`k9ͫc< :(FȪ1=Z6h+IW?:'Z"r~ܴuGrڅZ'r1fr>_]?#bߪ+~Vq1cg70Y&NqjE*KNd&ɧj/.kt{s(jE !:׈5d:~vn]vU<g*ȴiO2j99:UFgoŪ=''WFNdf}udo(Mx{i99,:N$7uLXܧ{Vzq9"֪?=SşZ1d¡gD$[|\VVܹO3HxxĽ-?/x¼ÉM믴}D$Fۈ-h'ՋR_ضx}ʠ)mȕRUbd~ *B1z\tC&o3uP.īݲ`ud~Ec*bǟ2Ր{^IL~Aڽco~&1^y/Tb n'Q @.+6A$ RlQ8p⿘it{7j* T-S*.]Sԟ; oW2 MbN[Gl?M}"x^C r&wɿUG&V^`zgy;xb͗eVKAi))ƿObW)""Rrr}D$twI*e0[<~x,9/L}ʁǫ?E1}]ǹ&GÉr4:?:TDDÏEDtbw3}6|ITv?E`[Y͎&I/Rպg>b~Uј _HG\H"Fĉ]w Hwkiȳ"|t]={-E}+8T.Б#ʍV,$~&LzbDobxkRc\K(YMD.YS _7,vZaC6橧w+Y}~<Uzf;[j&GMQ"2nν+>ҟ)x~lsޫ/_+ȑ&9:C]Lɹ1SόIј}<ϗHҾoW6|>Gt¦p;>͎Dvq72"Y m3"KH9QnOvab)|^arxZAE+!]& TvdlFK#~ۧC2lI|㜗:K$΍zL[oK?'ojF}(M螛\x̺i[]v 8yw#̜Y׾?d3xĞkYDD"[=~̘}2hKw K)\oGx/"f xC&sk?9οi]MtHŮAgw]go |~mHnQZSL|WwVlz{7̣/6+WYyL_\WJ:yyD^otRIMsѭ?ɽ1>@l 맕+CIXWIll(^2]H?"`M-[%_'=PX }Y|zSDkQI8Qur"H߼u$T9O<EGG +2ڽh*p~5kD 3\+]"(/NbHҺȫ1Ƕw_M\[Ýyg}ᜧ\ )xJ^CEaϗH꣈_Gy`N NxtעN ~r/C:GKuTzhuJkɭߧe*U" ^!Tf#~OXQu+'y av&KAAsJ Ex{~ϟk~\hmUGPT*?w8QRfW۫:6y6 ,:M&|.`90##(<0##(<0##(<0##(<0"^D3*9|=0R#ILU[~ELHDtfѝy;­t[wXf#MWfi'UVsu:]wu<[wl'>^"$.T'~= +-f4^"!ƙ1TZ,*kP@! hs6*o@Ua@6#~db|6#e <"FٌL*qP .qʛ1ߢ+l=ۖ?(Jʶj6#{4N;G`Xijkl:PR-djWG`8ܰUpuq<0ykB2lU&*k15?cFb ~s lV^  pSd<w-aYHfjMHBy5~63pU j!Hy5VBl?1HڄkPBcj Pڦ<0)Okf<yxAeTR##(&`]E k@ )4"By58qrĬ5"GPpCY/LmD(=ט~b\M* 2Þk}hYVy[ӖT"<UF롒P Yٜla1b=Ex(m"LH(bsC9ĉqCJlX4~A5~nI#G"n6#a1f c8㌕#Ybč9Jz#ugs[(#òG:GIš<W?2\/L l˫&qLo _ k >b+"la؆drhB ,(#G=3b,olCүm!(i_"L, l3,|DyW߫TG`FL)#}x޺yD 3qCaAH&#q 8qYle!t{5@ AyjE ~\ (Za&WZIJgZFt\G8駮g*@G`w~[t:]wux Ay`G`c5?jrscظԤ+g5 irs#.,%[(fi?7?^+)Ž_;&{64k8գifj#B Vk#BͣN<(GFDSaX cs^sc? ^5fs SB✧$<;:'?ag/&ks3HZ3ɣR!1z&6oϠ՟Db,c')<"/w%+%YP}1ǢwXAT v .e}GIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango03.png0000666000000000000000000004207714675025471016064 0ustar00rootrootPNG  IHDRHgsBITOtEXtSoftwaregnome-screenshot> IDATxw\SϽ@DdXPqnmkjVkuu;jZ?Z8Q ##2 !_s9B" % C@w9|C#㯙GGYL&S#" D&?fbO*H=٧"æsLMzTG6mbbbaaQXT[$wi DTd،1aMM͍MMd0ρ~P06vv%奍S76DQ}c;ǏԽt *ΟtEyPxTV0dDb>9(xcfʕ;8d c #fR`(ˏAYvR2igD0b1d"#\5ߌq1!3Y&*I1Fi&}ڒ@jIGR|u=+dXޓ7W{:(@D*E1[Zd [Bc +Yy}ㅻ9C:#2;̹ʉJdc,aʤB{RRLn&c2UN 4]8剔{ӎd./uV1wk6,`} YōӫeW7q LA/)^ 022nimSxrGOT&I$REp7g`܎C"2 !B{RVi*bdknfnȲ0eم&y[3ps?6=t/E;?A ͌`#Srܛ3el++rSfr¦JkĊ7>|̏CQ_b eRN7e!t|ׯy!P[u~:ӄjOaܽD@ρL :7l觚8><$p?.>B{R6ź~?O3UN 0ly\YΈwgN{_eϏ _rpcӻ7 3B;t{Wy|ª>`\/ܬfC`&+|MIi彘O9څzᬮ\KR=)L&C*Ed R3N}e MNڀY[wHpj3'k[ !ҷ}J3J1iҷٟXq"/l&B1uw.֦cPd sS&]0&„A(> a!D(L|(coD>l5xOdU9<==/%'1QZ9x#t/!o &B ѮgjM^^!Gκ*#!O&z2)9­-)C(~kf±̧^9zMUs6I|d*o` Bf痿IEvNy,Dw…1cF3Hv`-"'Pvwsq7PFS\KRTt')j֚QneQoW/}eͱj-)5"sO5]Z>o`_,{i;r'!ܻ<;Td2 $9Ɂ @g6Rd5Ȋ <!h/h/bjEmR")MyhI oH"MLM,9fFoF B-ďF<[=ONYS"YV~%h4c2 ~iӦ1Hюlӓ%f9qDtt4A:26WL|ɟ $zR@`[)MRT QG.Xl+6ȻD"a2rEM4ȑ#ϙ v$ lo"o UVӽ*O'OV>bh_W0}=6W ^Dɓm\I6$!n. gJth2{lP7CHɚNFoA!62I@@~v $ɠ  I1V3Q|:9սiE'[?`RQY@q6;xJ30Ms7vImln" ƭb=o}.Rx?[G3 Z|Ĝw4b,Ȍ{όD=.5g|^!^*]-irys$B7i_ɽk}5UAUT~q"Etv֚1&ȅ%L@1>w. DASIY{N,۞r0:9yuvg(Ҥs& 7FX{ފZ2Cs2w!τsI|lkjDl0a~;_qgҔGk1XZv. LL]lMjID?e _=AO~gR}45tOʐzYXfӤ˱Lvҷ{vҬ-w[7}柶}g:pwK# ~'BZwg֖WWvl#/44raK#>,y-?]7nE$I ZnlyJP}ml~Qbl&A291yMO 'Xqk_kfYyXhN.7~Ov[5K$8ҹ1B6Ql52$N]s]-k2q9INti iեV@7 ]ld)0,I"治E-"B2)&:]ҼH4ɿ2({/X*Ie嗙~sovwI?#wƛ6U߳n{F!Y"\ҵ_-J:'uHN7ce~;s̻{XF,*.>GH|v%a0T v_P/^}y7/(ܶW-5DV&l:{( a>pcՆPGЂ̳KۙE,\6K*gASח7O@slp 嚬kf"WYnvfa=))Q0OC ZZriۋ^&)۝5ܐn=lX:ؒW]? qeyw.!2,7(w[.atYWf x% >p㇁"ۯv<;鋚qyMec֢_=9m@ @ q>AazEN1$60: FDY#" `D@d,0" FDY#" `D@d,1Ȳ|NiӤ3W;F;2plB~kec g9Q,x\ml\F q,||Vf=;GC7duQ]E' ÷{tS,NWce"y٩vZ} U%FZԂz)gRuh8Љ ! G'Qf-;%4̸sd5cƈ窤]g lh@&6#\oQ. -LrKkETX_vBgӋ',fջf[(te+bV31&B1@]_$zՊU+bTF HS)ߞ1ڪB~b(?}TJyED*4ֱ̉u !?Q$i֭?U$5@0]x'T\cX&XRzvOig}hrvs Oț[Uvh2Y? 7C !7k&4i6dQ\~IoTr_|0 cܔqp?GKn(f4QYIɕ6'#x Ae: $"B[GKmƆOPtؙߞX͉y'1Ls?1$;_(ѲA>-kR+"v >OwѶ<`pcg쭨5+C84qQAX$5^W.cED0o:Mg08K>mlڞALsEc}58kωexSADT|MFv? 2zf,V&t{yz)Nofk9huއ:pY{ v4NJS:66V3ϫZ=(6h)BHZvT ԙe İ*(He)uOB G놫w*Z%X9UıуjO.m=rEޅCðעN`0ti%yΗ_8\8/Š@~P.l?{$G'7^s{u-E'6#kOQci;KB3O*bIs+|]mq4`{R*2= D!Ԛw5}+gqM *;)+Oɕ-5vmтB;3kˎՂ+;dzNy3t4݁~i[Uaiꍌ/tQ[VBpke x~Cd_(6_ %<6Nb'eG"!;E\(l wB9BaQ#L R9:0ρTXJNTYkcRn0k6pzJ&Q!L?E̤I1Lva.IW!B!`ܙ`4݁~2=O 5c @ki#p qw1c9ZIlpw1cpCmuRV#M*JZ}b .6r$'BQ[:0lAѯ.[UF>?@S u9O"6H=Uْv'-鞊! qCM6usyzh!43Cp`;?xWIIul`f[QA% ".?%NWvq̓x],rԫt 5c)Ϡإ|ןr_vRϼ7׭Rj#ogޝ3)6#[oE͞_)ACݲu/?+T|ƬZ1}@3l!M`v ]N|:S#8~M+ !rNL(^#-)[,6_F/Hy;8v3B!Ylf}L(U-w^v1;u=LNJ$E~=lxϭf)FI v/X]Ղ^_p7Z RY>bk-^ԬO1~.^C|N O9}9*6[/7VHmmc~DrBOP^Qnx .-|kŧZ-#1e‚=M(,Зa I}(!@wxY#" `D@d,0" FDY#" `D@d,0" FD<,}3_v cl5ǰ"*"+?C>t? P+(.~<~|0 Ǎy綼ˡOp}g9vJ1Ԥ'|=ی$|?_'UXuAoS1uoq 顝ƫXktcc}Ecp`<4L^}^g4<ن+ \qdL{~l3ya 2HmڃtRAeڱ_sn[HqkX63B!!ⲄKz`FƸ)bA:ZӤ٘Fqi41 w^*o9rys$B7i_ɽ'n@-!Y*iܕeL_ىUBi%4}LEߖoT._D<Uݣ+ysyg7<¤LM7Lwd\t$滂ޚď~hӥXZнlkio/=% b0Q13VԚ!t?#!n/Z7ͬ_Aw>4Ձ01MRKl0a~;_q;y2:]^ M`E`ť?e _=AO~gR} Rԧa'ܓvPz *st c,*[Gk1XZv:gߺFar~5˭:~Ûc.\kDrC}ק&&Qt5ƀ_mjxV}^4D7DZu s,ٜ#|cʅ-gd8/Oɕ-5vmB;3kˎՂ+;dzNSfˍ;T ښ=ݏ; KZu+]Kz, MGDKtZ",8e IDATr4̂Q #o1M_gCMB㣘ILcC%xSfV\~{{r78B!4݆IW"郳V-c aP}n}dg~3NA}^4DcEl2F a&H!6X"!$b$\./G<|{BQwlo-ĭ眖jOWjmm^KyKdNW /oTvH\ Q>c&'闕_f=﯑&}*2Ꝇ)~gLÜ+t=:wmf&N/_ivbgH}cB}ކHj)7V>KZ,oz6d7̙M%9z/Hy;8ᶖ{SRwk|SPէa&Qz< 3׬KnԪw=>DF PB[=Hmyk)G8,]3٪'>&U0^}䄸\IN+KsTd..Ć•]FN;1"g6#<ڻ'||`|<>&(3^~|u|oKU׳>n`#" `D@d,0" FDY#" `D@d,0" FDUΓzhGci }ny( bzڜGW'T0S0b}z4xpVLV5]f#=g޶ G %x*`ܚ} փB2 ƒs_Mg%ƋNlLywJ#Ƃ̸̌h!XNٟ&zh"%ر,?kZŭu~[$8f4a2.]f{oUI(Yb~I/Lx;56ⶋE3Cj8 /'x~@3jkvK㪻eIWR,&sMu:L;~ALHY{N,۞r0 M<_ܓfmqhʺ3 ͦIcspT&Iܖ1|Yi?IeBu V$X)NIɁ?;2iGec}Ȉ㲼t'&ϳ'B٤fW+D 9ƋN_yʼnDN$W9Gm=E@/B,>4H8M3L*崿._\4K,W]UՃE'Q]T{Ȋk.e`sz_5I̿nZt N65sX4cfR}LuC'9!8W\81\ŢF!o9r 'OaK~=* aČ_y{ïEzLuq[eڿGv~jcnu{1),!ٕWk&vw^Xw'yU }p&ĭ眖jOW5N,02 9tjI;zޖϐ-T-]ngf6-S5;v377].`ꐓ~9(_;3&1yނZ1U1g |,3X7lzhRK-Xի ۷q&mN+]%ؙO1p&N̵{z-$ JtvG DVZ{|C u/6H9i~ 5IV/[ 1xq||MW~8$)J nkیճVRSR{ꂗTRꅻ $*5f3eBx>w3݄T@T[?|pIbhMjN;v_#-)[,Ng'Td 1q1_1 /k5Z3d@_xщEz}wsF[o}]cŏ&ŀy)AF}Dz+)pf#Ƃos}*I}'*ݘP{vSW=(l8}.9X&n*O?'|ߋakGSZyg7FL ݅xתEm:;jYyf 4vXodCF Gia$B`s=3WwžW"v׭/ҘO+ ~ynIc-eU^A)ksRn%Th=un&v܍I!s:.\rutdY"i7 nS0WOXͱt݅.#͆lbqUvϜɃ8/t/%Jtw{պb,]ؗJ u>ԃVmOKtP[>kv 45` 3S{g1sA?,꼺@t3kͮC}_VAkcߵPz?wIIXǁfե.)ꛈAI0vqVW m6~ k8a \i 1jY3.ͬ/!ܸu|3up؋4''O[[zCA'^aAbId͸+܂ٲKqWC}_ٜYZWwB Nv փ=~o5Rw1̀j.VM"̩3C}ix+gwV7eϮVQbÂKsA]L!ɿ$ǩؚqK]Lj )/d+GIP  "ikYi#f r6Qqih$!n'%%g :ziV3rgP'B12sD!uI$kШ'x8_-u !7V]̔䯧s~ZS^=v9gx R8H!0R5Y@Km& 4}aze:r[N[ b a˭4d-DRdI.:ә=;H粷lm>oΝ2^zQVW{MgƏ0ch;$gA+0!DXی}*ƀ}G?S{9Օ&nVJeuFp_l6Ͳ蘻> wGr^nJ]"HKSQH$ ʣoȴ s1_z,aO Hg~:4vagWBYM^^~jqIMOWqܱR1xԏ%C$WYʌLk,-t Uܽ'aѕ!!#LE|\4*3s$ܜuuhNh4N+K8 h\g`ˎisRJL+^yտ n<8!Xm]xl`3@*nK#"wĖnK/v t#5\h(.B4Xa5رvµ_ܿ)ȓ ʲl7{ S.ٙJj4u5yEw:?9t1+OE 4'H*X4Ԫ0(5ėUWVc&QFgy:zVL6_lcwv)5a)Ӑk))7:;xUNZBH\\_"Hݪ(-)+t @;,A0-MÝ#}&~!Ia]kVU6֛X[Pfo7 +D%EɿwD=D-y,$T !* P#J^8<2܊\}+~|?H"B>B@ rH :,]`I~ex𳿺+m s5]~RD]R!z-h_+BLjk/,Ⱦ*v"R)O$N!~1.+&a?pi]_~c!$ԧPS15wH~]ѱ>/.R+9Ł(+BpK}coM~S#o>^12{o6[ En?^8O>.)8NZz,Ma`,a1cYDdKWo?p-6f)q&4bZ0${, ,f5 jhݹ? tC!9!'(,ޡL&KK 1Ie2L*JeqQqiCK ZiY'PW6w;c`t-4aVE##+'GJ_Ch_R BzY nk]Ok&hH1a Pjl)1BW|}@( :#bg[4K@db+Y[p!Yn;l)Ŝ: m(жD@_pޯPڂ qݘf& :AE`drUSD@Wd\p1XqNBY V#ح@ 4<D@'pYpfi^ۗmya,S.\-)4ž[;vw oHw ,@ j_`G#D%X0\;"ڗ*ŵזp|Ni0Q@wa̍Y"FZ=$:;D t;86сCb!?vVҵZ1eԾgBx\E9"b: 3V'}ZjE?d/?|.?W}()z:=vU|DUdI#y(^YyyT.pB}ZQ5=B!tS*ShhUtܠ:nK􋹪R @#@xxwZ84׊Ikצ!ܧjndsƹki X!S'YM4B54hj'M}'EN?烪\c5hq)rȨGm))ꢬ ݻqUPqݴY]1>r^Yf%] TpP'd HJ<͞,_^\~//A1l[o_uVvXP[* duiO9us .G\١cgUJB x2|#@|Qi:5`<^ռJܩ2M=U$Ra"FrmYp8?fI3+4W.CC^¨+(^]&|$ qQHX]bd3j7ĢGHZvT ”:O?[ƭFdUP*baAJF 9[7\MSѪuXwtN X3qmL{d8PZ"f>O=%4'dwfҒ. \$"AEؖACyѿSqyF4*& _I]nE@VUXz##;pV\(nJsӥxH袅cfq0e:x,6NXkmZjNE09.\quİ20u91oƆғn,0:"0RYǔiXIDATIAvf `-mb.!.f 3'P떼:)B.f { N2j SE e)ٗN- ֦baOܶ/vɐ#`RN6-LLZs >4q Bb.OcR{WKƔXXW+c=1ٔRAS-7ݿt|I͟\#|?Z#w qK||jɾu2xiOO|s'K^4-]\A%d핢 u|xHe!C$V,"B²\!1I/]Q ŋfOD<& aM!UӽV { q>Aa2HdmcC475!㦦f)wTԔCK Z)]"_۳!JȈwRfݿ/Qϛ$< x:lD<8}S3NĘ ݈,@ l=,@ @O[Y=*;Hڪr-Ad:UDW`L@2]hcX[]aec= v!:xzAx ؕY:hQX,(tM"daܥ"Y" `D@dj*m3(A赕ڎ䫳f134m< ^}M:1Xd䫊%\RH{L[5eŵ,Af\ { 5+æO:&eʵ02U_&MD"2a BhG0Y,6۴Mxty5.?vqg's>ݗ)NIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango04.png0000666000000000000000000025224514675025471016065 0ustar00rootrootPNG  IHDRL%sBITOtEXtSoftwaregnome-screenshot> IDATxw`E HCo(( bGQDTPzOADQ@ E:HM @ @Bec%t$Nyoʛ<Ң1P( ByxsV"!A]bSh5uH*ah-vfwb-(y,_JH+Y1fYM?(ri]xEdPB\6_ u)gXbxϊBCŐ`t;ğ¦F*EdَϹRM-=< 3ƇR.w_wV2ѩ Ϳ)ۀegA3 aY#zr{:qdx e|uSJL7SE-%0W1 V6j,if-8SuHᢌsV6|EVR׳\B X24,:=nP|b ןK>uQFcیƚ3G3LVTs/SVwA?[` ?άg68SoHʡ?ǴzY yLCx+%"} S#&4tWp(v~[J:_V_hxJ#spX67D 2i<Y{[XWHa3_ۿq^zX&@$Q(w"LaU^1^!yNea@5* c. pcedP=܌#Btpqq ,ugWwy^:a՟x֛B3_yA+ԍ2hJf41A\A^ܸsBZ\1z]}<WZ5n6+[Lg!_BB6[ [8p'Ny3i m[B+%a©[cjٺ#`;z)r4FE\f.\(jE 46z'-?`ܟf0sfG|~Oګ&U/˵`Ir7:GYTIb,yeتޜT?,xXj(#: XHzq}OLR~.UI6x?XCkW1k3tsn/S{`uCשG5Slq[3ׯ9 PoO5Mߥ_-Y^=/Y8o77or}˻ChH kluTy+N?rO[ou?^Gw:huo54X e3ק7I·p-Ewrql^~C]TdDhSb;%Xl<׹_-\:|Š}Rs1}8<̰Y ?'8(H;sbqo@Qد; j0\.  :}Qfr{<@IWWCS1D NXO^.&Ng ڐԳuӻ#_v5"@n]#ʰ&Ȥ k|r4 Z4'2@r5A&QՀQ\3Gw^Ƨfo4jںnJu>]f 7BW7mfS3䀡[$ضx'mͭ`4HdԈ (yp^)PN 02*6ҰP )ẖS}u\,F~sh&Ȩ2%U"S%;f&[z#;IzۨѪL;p% _Zո*<#w)1( yW1_A=سw lN l1aδA=[4]%:aø0_O۰ok>:a:Z /W:5?3rtct[IOm$ 5`tHc@DBB\-\w*#H%aZS*#*GY2i"‚*\u w\כwƟ0ԙcykl"v!@ۊlQlp|ptK8ߟd!nۃCQ{0Lq?gi"3KH0b4 8_3|&R\h>TO7I}/P@xB|)d UNgK] b4A=pyQƮݻ[lɋй{F 3el+]B򼏔{_~jZ(N1鉋π)T8җ=?:yԐ??92o_xؑ&o0\>mVNPp'k,᭯CBl}  WO4N óz?hǞpdd/}„OxGjΠF4Q'SvOpLqZS8{qb~RvfYnXlRW!sw_4l oiz2lI*i5rلj{tqM/11|s/g{@h,f#.XN` FCH)Ĩ 6d`p"*E sϛs!R\ӧpXբkV Re=?V9Ҥw;.̝rzN0 Ng3YAzU O^k:ʝB*; e^}-\uςzxZmÆ lکSGPN) CLtxwi q"KL&SIufeS@HM`jzr <0zSHFkp9Y <>G Cb)"M."2涷Lz= ]@@e tIb`B1pt{Xb4)"|'w|=o\Up)&A("Uo之G j4cBHzL'I Wm\!.jzP7\nFt͛7?wej壴ZwMh``h3jLXX`@́FhTF++= PY%`d4R*n 'S*[_{ɱA3{WOsP~0Eӗ ӫz 2>D%Cå+MZ @p# p6mlذO> S\l̎00!) ؤqCl_gĉ'N9SR۵I6 ; ByPn|VVDtt2.c{1¹Z~O&'֮h֩`)S4l͛&QSBP( f0[xvgݱy;nT!1SBՄ̌bW^zKUT ;f;vt~'BP("*{0fB١u[s|/S:As{}c!?fENOi^ϭt4mxgvӽs͚L; ByX ^,u y{ y@Hǀ1B 1Z޵{F Ud&jL&&^KP(2Sc,HU:}W+UXX6N{y?_8xlQ(w =}BPg<ޡqx@ lBAA@x" ʷO=xaȏܷ.hE B|!RȠ @֝@P(Y~&5+;Uv-]ݧA3[G30VH9'GH8B*rk 9 BPnOcDGs =QO/?{W2:3VN}BĬ>f]ni̿/1Tyc̯t`eP( Ra (Xcy}+ViBؤmQ]FT:eGίfZ3oL(TfMvЄ6 p]X pgATjbW,B{}?gDʕy}\̉5 020VWP3כ[v/ 8~|rњLZ$-Jx7;( B)/XŬcZ7J\|zW=pb鴟;i9ܿ"rٝŇ־7o.Цp\,I`v'p+==?<`?3z; <|b׭Yβ ,뾜Nx&Cu g@XJ&D:%fN#BP(eրg>I@pc1S߫#f}9kv8~d0xntbEχ+5ҥ}k-\D+ [X֚_e[Λcbf.oCS*R( R!{dpCGq)?;(0|/*,e~Ф}7G&u \b~җfCd^Ld&40+Y=p3 =Ē_e@|Ĺ !\ BP|PMw;ymݷa{j%[e;^O "/@@q}oxXXHDS$ִǎi2hP(JY!bW6ȿ!݇9P<,~sD ~~9-I@+m BP4%A]y?V'c~4 @+R8|$ȗϖA-==Y"^8ju|x}Z8Yjr U=> &#OESP>suQ{I>~7mνvo ?!Qb%?4p/2"kEv`TdN[Ko0Jd/oИLjj 4ϐjN JTut>J#:;Re|^磂 Atx[[w^QKEYYa J#'PB \X? ^d(_(|3_g>~;3k”{踋oD,]{ Gɻ6~DxGסTWIB&Ue},ehe!& nuK}jZ]0rYVATFS yar-P)0E〶9͡rm;m~ e$ L1o!10:SV,\) #e(RF^T2W\ؗzW.f7DKȪ4$\F IDATJ(siKR=_@ۇvY3j˲.AKիW>ܼ(~SMĊoJ{yʫOCR&M2W \qAdbIτmC:uE`~~#䳮&JU )~ QhtG *@JT2U y ):rQ;isx '4hmδb2LKFPw *K(B)%*ES)*Rw@Q d(0^:`BQ5rT;{if }Ve;,ݲsh˱[H2Z w^sˮ!v(4Ⳛw i>z "<=*B&ISĻqT''dGʜN=>;js:|zZ {x樶9a@B,>/AٻLhI|T>\2Y$a % #2_Y#mF0~`nrpb&w%ٵI5Rr"e:JŤdI0&88DR H6 Ϩ2Y>K~7YǢv[xEWЩd]a+DR*_J!<(JĒ˯{y#4oFʀDU\mf@S9O)r!+#jTHJ]H> iA1x'Rx拷ZQ ;dc1NCl);r\ju~Ow D} wY싶9jmw;?fKɫx2!V}ݮmĤgf۱kä(\ rBH:B/q#3!(A #\%@4+ *@BCb$Fԣ=IMj[k3 2Nuլ3fKl>q_ѡq֨5/"-&#!FS ko/ kŐS6 9 g 'IJ( +ΤFѭV&:>;g !JgSȑ:SϹ']48-f,t5Yac2#pm`hZ ۍ`HAɕ8tQєPCmq8)BPGWMARPdhR/ B&/ Xˎa[г-Ռy:RY{!I_uPq3ȼmpB؄z Oo1!տ?Y7NG&t2 X n2r/o_z MS=~_f^?!.^\ѳ!ڡDU Q(B&6ǔнa<۷[Ǚ;k_I|ݤݟxUЎr.>N PmHܱ;oǵ)WeL9^m;"$g,;5j߫Kc>xC"}eیaj7o7f;/E^Ji䜙yU\ŏKO[ƗXc.W0ABSK Uss"MI%o*:'F̻bk&QKhj] ,Ĉ뼕 ^76+E[.r{M{_rkhڙB ь !B5+4ӎg}5!6ߔC|P}+N]աI'QJӁ:PE&ּGt:r1;Eˎȶ[ yNE~=_㱶{fz0#>kt遣' qc>oli+gyۖ+st^{dBسSb޵|Ƌ!*@(3-ncg|-!se}yԑ3A y=E vܤdsYZBZbIGP,K_WI" NUSI)mE7QK8Biy㰘[l,8@]78B%.tj暵6۶߈a;be84vdgq٬Ь)gnϯsr mA2](LjCŁlM#Y&tE+=.X"<.#"tR^`?YjH 6s1Ynq wk c>| /Cj3?UơIv'k;zHH j7y2iCNnͩC9\ΈkSAWVx9v;z ' Ylޗmc^,Ж qaEٖ(3v:"/Yj\q_sbF}y7l8t \)61Ŭ+mv{\vC`1[51_2rF6NKV; T|!r@"n9<.$Ms Agަe3ñh̨[4Y~\n&0l4t"@BP c[ADEO\̯J!a O$P4 /~hߡ߽;'zTIy w F2 k:_qnQӂ+ITJpUd(ʓ b,^<?^PPYkGB1#--1mmrM=7}€1 n{F#l`R.`^˸*0I2T^L&`ڮ >P^ 2B.ؖSzw| 4kfBu܋5OMc 11Eabe;,Nc,,`bV9?.$iȋTU:!ePAI]*|]Ui`̛/wX'6sE@H z0NƳX3B>K~jsH9c9.ϲ{733 `/>]g8!l;koZKF@ jpY?YV,,˲,,˲w c~ xA._L8JǜXUZUS7o\f 0mX֏7w+c13rl,~2SH̲,fij"a,~:kg]DƏxʣuͬ>m;@[>}vw%5eӝxm:u63w֜q>,` :E<:iso iX8bKyϊ|X˜V:D H\CgqB2>.:#C+h1Ơڮf G:!=/ 5un 0!-1:K?F{o ]: U랛١O.oy4<>ylzƛj {|P,}݌I~/;u R簷7Jhs3u\O.`T5^x*OdaMY"'U}n_e>~ԸFϼDvDx Yxt;fm󺘯Ae͑΀/Tt·$4unG U,t(Sޝx78߱SmK jݢ}s3Oݺ9)# @P:J?#D+hWr%&%_C.HS. w(Թt}JRU&u7e ;翷P:DQH2 b(geBpA!y eS\}Bj}'h8~2n+HRa@*w $7YIЯDXRTpTLS %/jsy2 @V#D d]mνisﶜ}=bhͭ:ʿ=թYM! K|cLX)L$eU&I&'y)AYIʞIa(ɼbrKp!&!}y$FuSwo eB卿Rdl^=I%Bp^ }YXKSVB́I0}/)]\h3^*V2}I& !^-cN|ZQqFNKLJ,R( B #``@ ;f'3?2w!2p#ċm<_pc .CNx}R(vĿk~;`/B |H7Jeк%{fKƭgKSf|K7@F#w/qz:T;gƆa|bct!pȼXjQ v`[PWIIc. FXO_Sl9'"Qu{Ӟqs;wԋ"6~i}\Dck/Hb@1aqYt~tbsדՎЈYZkv?uSFuВ#|#0Y0R/L 6w\shƁ[Ko yupC|>~RiwZ)ld\80~nױUO~7g35eEQ5ҫBLp @6;x+ZB-=sQ@?杓Zږzik_xjMt^h/YNgɵ#gGQO;Am_<|\0hn#b@z$M!b€ļH^ 7(nR PkS|^3gHR9fk?f#96*8)a@ 7v4E4ȸt1c[O.R'!\gғV١a}7O1ħ5 C%N="t]o,GO/ 8pItڳ^;Ճ_5G&HUkV (a$T"*1,7{T"dL*Kuz@`0@9T[YBu}*!ƎI~"+4*6*x~`h5 MiL"uj7-УA@[-6&8"@StϮhu_Τ}ךYTD[ XG`8 x-rS$c[l1elQ}X=#BHa̼W=~S O4f _<ռBAs|ZAm˦߹W3+. >o˕yv(g )NYœ ^ϕZϿ1nuxcV5sgM9x (yf1jNY둪֊wҖUG:RU<)[M/6gJLJ}[=@@jUzʟ0z:qIQ];LY71LZ\ yMi`P͂&3s]`t|鮩?d,u:Y{.;|`b_XxXfwd Sn1,flXVj۬va8lVY6nsN9vr8.;vCٜ6XVf,x*A%^۪\@t1/$rէ4TP/67v1X>Ƚwř.K<ǼV@.qmD||\)">f`={fgZFDzfBOj j꤮UC*|#`UH-+"CWάA:}^_ 0F5G#2w=R՚jr͜ 5amM7GPkWȀ+~*&!`@iZIp%mŢ@n{.7z[Hvw֗cg{ F  |5&3s=g/6}XӉX%}p,N_ؙ~P S֚dGV:d'w7"1`1W,1+">:v+oHc0㩵NgTb_T5A IDAT>tvd^7&U{ bb0[+fCu".9uqc%GTfꑚ^ٙgO*ڿpp3R*n6Bug#F"Gy 1~fZy+`sʊM~}k׾˩N-)Qq KSkLHP>f^;I/Pm,0ȸfwx ]W:b_#!L \sή vd,_ʞ1Bϲ,{XzXed`,))&ߏ\U۵_-:ףV@`-f<{,Kf|V[bo_+`=7^=y6[ޞ>ݞcMZT?pŁXx:^t)LsXq/Z>ף6w.F)Zf) OC~#] G> 1IFNg3Wt,wIP妊U<}“1c飉+mGVJZh1~٬s'>u8;#Op؅3s9{bzK2O^c=\{#=θZ؞w%RGFBLxWDTp^ԴFPsߤ۱oyu>" #R{ pS 0TPb@RjKJlyZ}[|lV \n5fb_͔JZC+ 3^|QOY0KjJՑfY2Ruu@rZ B;Tn& '{{=xq=?,<# BP(wx! w F8@ b\$Ubh^Ҏb) B(^؊``@ ;fp?2w@^!^8P^ MX!wGt>)}Bf ];?2aN ɿH_@ !s-|_ĺvz^p>BH4CSf|ִ5{5k+ߞw/qz롩.t :==Ȓ!z7LkkҪ3Q-"ja]V^%pU})lWDFi#;J8~hYY#ѴK-UL͈pT}z;ǎ973}$62ry6V[z绩妏DӞZ8G?}Phڨy=s05p2ǚ'%6>f֯%8_'q6MKly;=WFm-}qqq; xӹU|:M>.W{ ^iP,Hw*"Z`[{gz~aR@ZztכLXS{W.9"pjSuTPnS+Fyۥm>d)o{]wЗ+Vi+2TsTݝ{W~;v\a>}ϮyU>q㝅۷yδ.T}gۅ9u'[;fZI-K_8zԿittym'N\hV.虯w8}:e~ʌV U#~xɷ bcgYêFEU{M>.WIRFt(-Hz1b"& qO %|8-wL:1Az}pb ^u(2aomWk3N-<4]G[PF66|kSz9TUoZI[|{trb;[&}nÜ%EmLJ˧loL8..秝Rsg1/0.^פ.Ҏ#G OӅv=<|/g >"*#U97;m&|y mOGMsTr\'OAT5,@ֶ|٣WcR@ƟO]Y9Eu[tfkp|kJJ 15c,'mji|EzqZN7c~ j=sŌԍ *8 +\NUm\tkcޘ=ihë3j4PU Ӫ]˦P 6ݣ 5f*Hg^$F&A Kn%DH'TkƮ%_\lޯ$āO=?^{v%bWўe M:ysտ7=ę0A%=7d [nAh51guH_-w3v>k/;g )ξϝy嗣/YEFg?pEݧ]ѭ.J詃;v9ܬ-_/\I3#5GW26͸QklEMI>(݌ +7OM{mE[R׷ouԯpy׳y݄{wuԼ7g'oy|ׄe/5Jէj?"1I~"n1KB-t/Ghx0_<(}s?0gMIFϖ6 mVL8Ą2l+ST%Y]VNo?ۢ=zx_Vp Ҕ$\a6#իCWa2w^1Q 4׿gچUVÏπcG*=M@,Z^[mzD1s_> mxȠ|DTfG5CŤjM&aV]pc: ,ڈMoae}r7x-fYGz4gurC-|]n+~CkUKC:ҩ9؏Zϋ};_DOįۮOy9;4)-i߾1]Ʌhټ_~s_O6=XGOSj1g7êh}ʈNOq±_={ڦ6+·O5GwD$Ft"v;(ޱ ((Dů؍E,D{AhlX"*E#6bDcXP,JPDDP5{w{whyY:͛SS!A DPIT)Թ\. r\? z@ų<\GA۸5K\l&?}@@9yC sJZO̞~CCuѡuS73srrƽ+_'⮚^G٢CGEg`R5V!^ z8\Hr<{ׯQ2j#7C[+_VN3l*R.%'ķs~˰UWơCs|-By{*g gٔۅ\~p) vGEZ>?Qt"qV‚1?rOePҏ^,}0ɻ+Rq!!9陴:!`V10om좙ˬێ`SxۤRw*FyG4{Ok@ AԒj %@j"D ;a8%m*MHJxX&-O?y8u6|;Do>Tp?!)y|.:&U/'>s0pp(T*-M;\h4a#/{Y˼ ˤeNs y8O^|`J]dvvVU&d.혽&yW ۸b+-~ZWQǍ$1.6_{gt΂J2Xۗ^P&yWvYp):#`H^&-*'ZpBnU {7v#|t;Cȸ<\JsKdJ Ee_71hzP_|pΈ\Ъ.*+>YG̸  k,ܛcUʚZ˲͎M)gmťg>vh8Wn#!@M@ ]6 50RE@k epJ2]E`^YdOAwhXܼhe$%egϽp)[nu Ϻ} qRbGTaSFϋ?J`.p9 l_ U,h3xΑ-H2`ۡ1bNny;>u|pp c:P]#1q͸X!V}g 9]5)ҷ22rsW#{'S6($ƅٝ?'nBER`nc]x:|>nGR3v/b Op)1ٱځZhh9.GJ;1nwcȝ ڞIW,&嶋>ޗ8} @ k9 m 7Y@ނ<7HQo1kE.uZC+6[Ut0d`Ƞ9!&LF0)k1B:ɬRtq:^~>n>q.~}#=ʑ7 /H@&(uGWU! r]|K+nsե&]dyޑa+~YߛsTտKϮL^`ZԾM=-)|pfT S ~ T/$v|9D;$m!@4]ifڙ" Z r@H A\2r ŋۇEdD( whШ!,,,X爅EʄH9xPeTlzq*=a 4sxWTM;FF¡n|?tR}-b/ќZxäkXXXXXXX h%Ej?ʙ `aaaaapy6uX;Zilm+ȵL/3݃z@4WT F*],,,,,,]W ;7DPmMzjzgLthnshd"RjzHZ~RH9gW XXXXXXXQ4]լZgt 'BBޓR@{˷Œ ԲCppr(9j~4R9N}zd1|T$X)$rejzJ+4Z~8PBBQ~)re2eN ,7Э{ɨFZxnfR{&xZBe"t1Y`B:}nzBh9nJASzM,0,)Ќ&atS~3EV%B Bv;1CaT垘odEUG[ QM+XL\]j k Qwl*5i+Q;؇2OF~ɖ!Y Yt"(~[њ!< E l."$~vnCc.*:\wtFfB+ꌟ ho=^oLA3*@/LmSPDPn(}W(!v 8WT>ѽ='=#~zΓSۇgm'i0?S$afXnԈξ^%~lDTO܆ C]K2!k&49wDt 븧}F ng?T1@{u0tyЕ+A3RUBו2š͙ nsB(p籘q?y7޸͚D_߼3/\J}#UGl%P> 4;w)HclV< Æ iҟ7-²1oq=i̜V==NiGJkKs>l@B.\( Wo. DֈkjCK=%ߚOu6Qb|T_aS]ߥw FKƴSгviFq̈́VzXE5kGs#(EIJ󬭝8mkdZ j69:ݖϭ/{lT0m djx!hTi* {fG}8P@=Gg=W@F);SXBKkq^?.Sf}Ϻ[UMjA^(7O>H "ec~#zsaLT;kQyݔ8NoV<3]㩾G0un7+Jsّ#zsyBފ; |ޗ\ R+]رFbNXàE9^s.) 1 &Q2܃^IҘ=f!;Y5:uȾI9~vI7cQF5cnOxlw܎ 0F.qwm.e$@ƈ IDATu\m*(9Ngc7(7׮{P%O'x|[YsO,r>.G|/k ]]`a8ykYA Kym'? Py)?>! -hRQDTM}"T,ERX*$"D,k$bDR#ȤF&JkdRLF~i52iTZ#SI$5\i72R\?϶:[Ifa+:m'bDp\q=Y`(7FkX\y)yuG#u& ? ?QL <=ѐUN7{]G!=-vs@[}_:$Hh3kV6ff>>lq mHfj'{Ϗ,9fx9}۶Nsnkg^6FY-"ehKS!AZ%j '@tBfɮ{UZg8mB1ZQK%oSDg `){޺%Kf;nST +`~0pgJDRsA8yӄ ]]K%~ܕԟ:u9̓<ڛL)`c%ܞ̮gƨ ݫLHK%FmD?-d;>G W { uzPTGQG6nGʱ{ĸL^{EeʭA6|7X&Ҽ?16rޣ_66gޥ |.zɃ\BL7~z$6dxco ]䯸tOӪ@[.Vv\̭˫.ڻ!.;VQK]-)$oO6;VU^vm 0OɮU/zldުe6~h+ rH& .KD]R"d0sk˷Vh5ߍi%gx)O }̃bu@ϮS#gfq)ؔ'>ar`dT>M+9N"#Q&;AWA3dl)%*fS+%p wܯudven}{oS]#1s >y]+*_пt1$qA!4~O܄ًܮû@ϙ[D:[ g.Y qS2ksfYbX'4AӅeZXYh6~iV7{ ?|@V۾2O\QD =dk eE )zuqOQEa.Ш<7niT?SՉ26iS] /h?Lx_Z_UTn(~rd@4/P\kfݜ*"㶹L}Swh{?M9?|ԾM=-)|pfT S ~ T/$v|T6U?"(=.dNG?V9K BD.H T.DE@C"V2MaU;aF&6YX>i爅EʄH9xPeTlzq˪a 4sxWT `aaaaaasĎTou$j Zl_ ˇw$P+PI pJ >~ԁχ WgKP_ <{/baaa8$`sscfP U_ʿ *"eH{q*!Bݮ ҝb"6&R|53`aaaaay`^&T:4O9 2wP)5 =$-?A,,,,,,,(6C !J!78r G9C~rCGNʥ*MGR)Dkj!8@8@9Hns m5?ru >JRu)+RDH)g^daa@hJŃNkӿ - @By޾]]:~uY!C뇅5j!H]B fJPӅ%^|geߠro&999jęǗ* C|TM0qX)ħ$LwnO Tr_j50*jEVSg\_͋ Ty|P5zE I QJC=pz70j _#lLB;1CaT垘odH Η@QpkBaT(oӊ+E ^J"Ig|U(z|zS3UYHmy Bkw$bsa!ɋ F~^(t߸+ Ϭ Х(*y~bczAz!jteUKWyz8WԝT9"ɣ=Kɼ 5/dBk4 .;}8g̚ Gn<ʢySĠH׊ac^Y9d!*V iO Є,;;$.8QORK<Ž{FM"ma\^Cڻ_.Bm|F?T6MبG埠R[ݻ}Ir! =;#A+y[;ϼNJU, mˬQ+ܗkZkv-MZ)v7H!{o]B&43u2"\vN(ePiWM1=;HcqK}ݔBaOX罬tP+hvL%5L4sWZaI :)_wr=Z^e6w>(8z\XE`1sZ {;)]y֤}{D\~kKs>U\Pm)5[nrqG9g!wSis/2ji,m \eS5mme*26&*Ŀ-eklV({{9!24nlZFX=UBP|z?5T P҈w.q7[PMBY H3O/,;]X Qqp|5!ݚ- m[znYUjJ+lY(P9C<)U7i~s]^xNQu Ǖ)֥^w9rc]c沩]хG3<Ļ+km͆-ETzH7mݺ Y]:iGD;}|v"uquwN pYdi֭G  |Xz"KV&f?"kiӸ,RQ:J#Nm hӖFƒՇB7WLg?CHJq"BZ'lXtg-3ZFݦ>$ >3iE6s:~ӭiZu & ? <3G֦fLjJj&8d瘏 iӅ\;H) 6_JNuЯr%xE.S/|twZ C2(d}4jzy/?#`@ւ&J@11! v~mFb ]~9Q7%PPNЋA 3b?!72~vPe֭HwR_Pu.xՠ3\}?Q^u c r'uY<âH蒰 ~"oLJ(>b͞ሔڗ?/p iJw{Poe w1ڊLsr!+/xp>zŖ~\?ՁWr'뙳u:;NWxEX+8ӆCVnSS!A DPIT)Թ\-:3ϯԪ{NV+<Z8]<ͳuYI+*WSƸiz@97D0hUc*.:pffNNָXy9`+dQRUk3hұ#:[T?C vGEZ>?Q\+ '~ )ަVxph*'tSM~-\K9g;Gg%,#7^V (W ۪:/g򙃉I^s.1fE.ѹLlv=K'INzd8sߏkGhUd Ձ`լyfk CqY pٱSV|NAeMm{evqf7tՊZ[X{ǕOȬ+0ӆC#AGrA"'l"9MD)* ߄k"{u|B8Z{DK.z=E+&.)#>{KpPWx~O;ڠ >7z^7Vv vh`ӄJ-FwgVH׭bAwlA6N!# !cJ!foٻZAwW) w05]Gˏތb/w`#U"}.##7w5b>ow>eoIb\xP>Cq}ہqC|6,dYf~8t||/qtaas4"D,h>d I]wjs'6LmWV#&bs3NuP L\ڸ[fyby _@t#aD}$?,{do9hXl5V)#fWhk0!޿x_?pҠNYk1|ю0a yNEKbja#d@?k7Sr߸k? m$ JA*A^JRp~2GXR3*@ʩ?\APN;h|;$m!@4G]ȂEʹ3?*E,,,,A:@R@H-PdU"Z4W P@t@_I`a#M0+"A'P(cO@:k 4 Іhiv,,,,,,,9@RQ- t/>POut ˿ WCGX9,,,,,,c;Ɨ `G mžwӀ%7Oc!P`P P2M8 {nW@eUNM1T|r^>^?0/*[{cԁRY MW@5밖/uBzeɟT-)|KOG#г} :@M:XHMIs#z(]@ӝU$1Ztp+maCrt>~_2sNNZҫhmXy֤}Chµ4sF)̅"eO߾\A۶g /Kq;- @̥?_ioZec^] ~cjioҋ;SiccZn)jiY4sy\efB+=\v"~5أK"kb)ӶFY&;n-ߘmuf3)`Үs[%jaڠAH˭^/Z?Uʫ.M:sN.>E[V=kqfћ-;\Q|rRvqVgH+!ZOqg 2 8eV5+x]4ῡ K`}(L^=77d-| HɒMwZ~AOm?se웩!`>n4OψQ絫qA\g d5U9g-9CƐHW(f#ѰuKB!2!o%"**:@Fr,Zu9;)3ZY:]mZ/u}w^PWRv3w.qWSq7h1.X1{UnOf׳ncTpQU&%F]xɯ-d;>G W { uzPTGQNJ~KR/^( ً+J,Ȯ$1.f/QU {7v#|t;'dY& sjo[+/MbDNHrLWF7iQ <ђӎyL3gcv3l ]䯸tO'UiQXI]ҷ[)W]ܹw+C\v[.SHޤ\Q3?'lv@׿]7|D';SkgrE+1+kUTh @F#@{_ @r6a&PwY"ԔHy &/Me7lފK06(px22y/D|J)?S]p ]GrRbOb6{oOb{?Յ`ӄJxc62fuԦɎc=kaPgU [cJԊ \k]F~:5]p[ߞT׈vE\BO^ o:]r0NA 2a>ow>eoIb\xP>pim7eo#);M{v -ocƐ")'6LmŇu)j!{b,KC^ϙ[D:[ g.'MRxK&b{<_)W{ ?|@V۾jR&7)2XS:-=&|Rwl,Y_\Z<{bF?S<7niT?SY46iS] / Mcs>EVFho Ԣ7.ůzD TWSQ@F2ԋ C@ T(.u5nNSqO;4۽ݟm?z> VM{isjߦ}>XR3*@ʩ?\APN;h|**T֟rZw}w?*E,,,,A:@R@H-PdU"Z4W P@thTcfaa#M0+"A'P(cO@:k 4 F.h/Hh]Qq:Pե @ K*.k},,,,,,jē@p@&]+4o@()*PQN>zXXXXXX>Z4\v/A@[%$ٳwύB=Au T+D@5ʐ6TB,,,,,,,]W ;7DPmMzjzgLthnshd"RjzHZ~RH9gW XXXXXXXQ4'm 9B9Cnp @rr @冎DRKU4C;S, ? ԲCppr(9j~4R9N}zǁRW*MDSѽLMOpje#dCus_P7 QZ@ dٿ|7s׎^.ںO,C뇅5j!H]B fJPӅ%^|geߠ%Msrr13/U( ;`FS0 O0IݔHNkBad][eK$1.F?Ul8P5|džR6ZY.IR_1BTr_j50*jELymP(v<}GrI-!ɋ F~^(t߸+uM'c+"LT&gY:K[Ifo 9V_چo@HoP5Hz^"hjM0T[1ߊǯgV\rbġ&99RprS=Wj% -Sh{֢{o$GGlw?D$aG3Di6a?; mp}7qnv/]xK1U^|]Ez ,,iʵVAh 11akr_ %]KK_RAa\׷>.j.{`hĸhBE1WwzuDF\J#T SH6s^] K(2@dVv9Sw8[ԁX$I57FՎ@|{K>,Ͼ]]E3~\Mh =9]/ֽiU fLk[>gGt2$;! h/2Sk e䀣FY( Nc*Lf?`:x{mWta O4گs[aD 跋1tnnmۺutҎvQD:.])*|2AAZuQYt#jͽZޱ|ϼ<;нxL jcgŇ6_ANЋA 32G@H%2WKfZ`8TV/.w? Bl5ނћ[.׬X_;zńA, rv(̈to{#_'{aΠ> |pX3]xՠ3\DO. ې+Ԫ+lH)} tE)-^xc dGu/vRP _mV=׶:J}=sNL'1hPn{z'Җ#:"**:@3wl2{kc.ouo ejeu@ų<\GA۸h5K\l&E}@@9yC sJVRO̞PC nf[ 9gT#P[z2E[mkew-Hq _9iY6s.Xvxph*'@⬄Ac~䆟8ًҏ^,}0ɻ*Rq!!9陴:`V10om좙gUD&uV2N^Lx>c K S:̃u>{Z^!V WKD-ARP8 .?r@P_>ʽ>>"IOoݻ ~NћO=*58OHJm˩a; +`_LxAOҽ4@UW'ݸSo؍ aޣ_6&M$1.6\_r\YRBQohZ':/IxL"'d/*10 e"yɛ[ hCP}Q?fwR;S7X&Ҽ?16 Yַ%_|pΈv>jl꽊j<3ൂjBڡ, fXE)fo>}V6=l8`+ѨqWː%VԊ_:v8ګ%^3Ơq"9jڻm!x  4fF\ K}~d*0`W ]Ep|\{VFM]RF|܋;OVgG .%vA6%}nSo p[\?ά[ł6قlCFL};C3ƔC-/w'R2a * IDATLkD"&yDul |fwYإ#͂]DEA>k'$6,XwE/hcÇBb7F1|(kl0mݝ:lٙ9Ι93wNOiC!VU ^r#yj?@ Z;iWtA9o;1@ za)5iF矚 >/@ViL68kuk"`RzH[~Z]A@ VU Zs p^' 0V A{OKu:E^~]{@ 1X@@Pș O@o3ѓCdhT8a"c &%K 1LOI zMִC&]2/P~l MdV^޳ieU% k;;c|ׅ01^{C-B(r8HFMUi;B4n(BSې| 6iEze1Ucs Bг#^f}af'l"nm `P 5 g6[u{ݻ(Vݤ-=Z'W3~ax$ۚ03,SgԐ%#O>˟& {xH e}T鵉^5BIpXqS;|@Ҝ1O3 i(*(rK6'xX| V;a}H/-21T~ymKn AGWhLEEʬ6UUI3f&zf7NShs۹Xa;b2.13[@m@q~_#f1(nh}{a̴ (Mo刘{R//n,z=wU`7Jvi,:q ~B4!HnwҀf~*Hkdkku둻nڅ-9b=F)Z{o!Z)̈.X]pzZ^v+xS})ܭbLugn JEeF``Fe:umܑ ba H`яg頛!ttB Ev2ɽУ*=&l7|FS;].#Ƃ p5>:a'~Mlb 25c06*IY4"Ɇ"gCP$06J(i(k`ΫȨL,XnLōMn}WQVF3izP_;28uhm^Ni 6rlD7;Dcylɔ??3ђk #y(?E!{NPT]ćYzkǏ́ⴞo:vjX~B-(jr)p׍RU;~q>?Op9;kaϼqJMqɿ>9|ݝZquęΔ??3:{ vNɕk%Fou@V(`1~W\2yS:{t +#=DUS=j]70zzu'+yZ.jT?mǁ<5UQGϒ#3 8KD"ϴGAL,XPn꼣gS(zMB)`**TrJ!W)*BPrRV** RYRUJRT*ժ*[ٮT*UJ.ZT*GR(TJ1[2;РZZvY0qjod8WI ]=d J({fYU&~Su.ED2{gs[uŃ,i_vv:urZˬ|Vfij8xw}^_)2{LJ527- (`1~WͼiO2tܴ%?YA\rVgDh(;E&w;W`A>|ԙO@M2{ 5yiq w( }su;vd_qʞbqplڣbwjŦJEMhaT~gp/nLvuޑImsJh)D.%!!\V\v~T\]'k=5ѳlB]A@ ĆfbPh%\15wЅ5+^u(8zNZ彟Mkkkgbמ{OXcMP D5ŸR`acaPMAhpS@{>BUz+Y67q˹)Y|;cٕm#|ƤB-BrB2G (N]h  ̛zNq*Xb^v)׍Q!9"cuf}g8,v"KO.,ENϞdn͋k8u?ڂ*Ǝh[;뻎Q Jxlڴlbg̐7FebǑ֡ =L ,XhyH~:q=3!Z}jj)Mm VX-D~ثEnϐ h)]h5 ,PպR-ϿyxyQF Fq^,P* .nGТF`["eѕl{ї9ulΌUX>{U~(Њn2RL &D iXmPH?G0ךӻ03`g R7GUVUU-wZca˴eZ\|e ^ڱf&5%Q~8BWAeqVdFZ`h>xvRmAϽIoS_|{|y܉ȩM('JAB]Yg r4O.%vPRWGt_|B>A`HDc:EorK돎wKic-B['h_J ^0]zo.ػWwkĹ"|f+*_t`#U"oaތ|I+ޱmxyN" yl "ctȹN^kʄ9}}Fym'4F6E.U q@7*٥>=7z*`av#+Z&[oƗp1tc]kYZS]F㢶>tYu UYq {,O|-?+ҙSy?ܗ g& ls@7j@PֱSLiB9L}S`]A9oo1E9o{> V}{a]z *{9oWإ? ue-9l_k3MeÅ=^ gW`D B&x B6d,÷AdDk'( n0' }0 ;yPk osFQBRe4)N ^@ nLNԁ.Wc8.7_d@ ›9 :4`¤@ k 羭0Gۀ @ 5[ֽ[;[mKѣG@ ^o{>Hfh޼.=ր5 db ;iig!@ Z㯝&mpi!ӛHo@ o˄lc^A!&u 5 Z@ oE-eȠ݀P PBPF]Jm.miFZXi;RR,@ #aC 9! m?zr g>^M8_ʓBB%2}9-b|꟒@ %igzsܿP׺t6+q;'l٦cOgo2^C'T{3Ó)3L&u܃wT+/+ ̛ܺ;l ~@%df߭x8EQ{￱5Gw'`JRF TYqp0&Z4lj>>̺2!. Fq?98TQxqV2/ RWɆE6ήDOv't]R^{|Wa0j]/e aq"/CYNW'/L_rT5ԛꌘ!^l!ՅLK&ɼ:RXeZ^yC5X|RdX֯CW 0 3ېpr.>l<@[ 4Mzq.~3aѦNk:K7ULPs&`9Z'emT)خKG[ڞ^(˨M#MPEɻRnֹ*3vO_50\5ƶ?.WIɟq:%qw9Hs蛃r%aqڸ.nb7{o\Svq}'ҦXʄ*0M%욻5t؉c?h^,Aᳫsn.a;LUN֕}Ì:h ͛11@L63FE@qu#V~п=,Hk:Yjф"2kxk- Vz+|Kf _% ,jCY2̧߬JD7ZORver{7J-֧9!e2Y*u r1)ȑWdmL?ߕP?sM,l<'x:'T(0?Gث~|rmjp ^NQyRh|3Lֺ쟞`C2H`яg@vP֋BL*Mɏz_k!Vɸu۸#A~mC^'٫yeg!J[?U~Pgm>>bX],;u]̬t6ԣsTڨچ\nn@dl! X$pNΫȨڃ^]kCsf>^MaAWLCvK*ȚڼLif^SzZ Ÿo[މ;M/m\|<'Q>4銔_/d-z\g1!W* 3J|ʑ}K3 jA5 X?*-ؘ3(jսYp,O9)7UNӷ.YR㎀aR]4KCȓM~zw`1kjM_)}BV(`1~WM~m ~03SpX ؑCn}ۘWp&A$m8fO;Gt|zLYpp :OYb|Ryi?ƉjnªRl pTgNQapegܞʫBlv37{Υ5Q[s߯f=LK9kuC3aP/o۞yX[zyv_WҘ=░Vݢw+EGAڃx Vz7?JG&٢#<Ҭw$*yoֈ@s#&60 ;hWɰo; zvKli"dC i;vXH91wfȓu5d{LT%uIv㻚ֽ])[qd=oG6M+)PfzA">YQMwH) ׭l4Jg^_xEbω[=]4=ji~5>8!QbU3oѳ%|ۮK~?۟=R, xb k8 T^Z܄6]vʾgWOl@n/ {b=LWf;ASoo/|#74YT^Iyh bqWt4v (zq0τ#'~Yr\6w{7oLJ*e7$'?.^>zoή Y oS NY{w4f~+V< -G*2d(w`ZGgLkӶ0)̻ShdU?a]@PQ7D[{js=T\t(233mn< IDATa?7sfE,)]5f&Z:}ŭ}3  bh&5 B{_P_gAiJu`TDH졈iu^"J{w=d9p @*7TzDeH.C;>Y+١IxgPԮAY]ih!q?t#e;HܐF9GZz𷢧G`&d6fnffM{}oaˬڔ!7X/l\H(`(Yэ:4Ac9={#(b>EQT55EUSEQH&@fQO*Ӌdطt=LbUI}9l&@*] ?-RO) OojCŸ6s̛ꅎFJUt?O7"iq}Goٗq3 ,l/=Rb9W9tv$rL_>LOIC]~C!yW >7}!M^ Xt{HPq]8|GrKFVXYE3ߖ{ qF;<&mZ^-XYE>жlꪒw^_QZʎ ߈:BcΜ޾,F)KM?]7{aŔO;%mdPiCT4 {>B?9}C qٱeZc`0K~徸*4ՊWtkRG;Gpg zH& %.,)@75D;\7+HOŻڠףe=ܣ?YcH!ˣu]XLv$|2c!93۝cܕؔ3Z6gbueem3XX??a/u}ژfl13|n;wRb[xxg/^'Kv|U9zxkĹ">]rpΧ X!V3O]:|lCGKf|'Sx1>u<~¶y`n#w"޹Y TM >m7aW]Yy9ש*!nbHog39T&E f&[ҫ'<@{Ƕ39aw^Sc{ K_-I {nst/R1Ww_.[o[A%Y][Q?E] Ay S9__(2 tt~te-kYΜЭnFn䟝{r䃵m_~(ZT6˓B{g6 ᝥ*kyK^7ߘwľ$2`$2ᛀ/2Ow50q^_ LHG@@@@݀$ҵ _8j٤g+Eb0@CB?fI Ȍ!f} B8%s$z_;Aq[}@:M'XsD D&DA'0c@F1 Kt+$tj2?Hw@ x1Bp4dMXd,@ CK2@w n O@)P @ .-}^--^%ܔC  |Fx%.V6h;Av^!9M@ 7馀k rjZb"3&Ҿ|[e@ ›2!׭!`8gIg!mi v@[o hW6hF-mz;(X}'!d=-յn{u!@ v@#g6:<|GO!]Q̇Ջ SdP/4r[2?%@xK5XhDt˄#@ÿ  @a)tr6 ݪgA)L iNLcX߈XS/O)h8szٶk. ?=9BU1"^~FOU|gS-R)ڃ}H/-21T~ymKn AGWhLYccm'ɫO[g?*pM(2(Kr;.=]^YY~hL9E#ZX%~ .Cf2!ff h 9 p,rOol>vd&Vfbkq.7R҄ 6J[MM#EW*@ 8Ri37E'Oh~3&I|-]NuO)wlm !n=rW[%gCg(Xk ^S:q_8Ѕ NO`kt~/=6XlbgJE&{T#7Hx:@E Av~ h*ТEh|6=ɸu۸#A~m-T)qPk-::IB!{Q";Iώg# %=':S5zdzMLt0zLݬ||ŰRQYX8vɊO{K`&6bOzO1J,dLOѳD( %450eUdT&~>mFJ+5Bk).Vef8%~ULN/8np]4@)͢IGWRU)x NP<%S̨GK¿*86.d 剢Z Ph81BQu]b׎i=t԰8YyZP$4&%Rޯ@w}.8{s,[žy_qɿ>9|]3;Yi=)~ft҉9|ՇGW{;v5Ue^ʺ_ +y}?GثV2oFRLƤ#͖Nvng$ Wd%/[.Q[הaTxWn<ל*/8qUͭ 2ᢕtդz䚒,*%1h1{9RēMgfg\BUYJp$z~5yj𗙣m3Ɲ=Xs%GfLqDgi3,1"L|Эagપ?ÞlU5|]A)W(_EJ.W)*\T RV*JERV*+UJJURV*UZUV8ەjUJU֥W+J]Z:& ksAR0_ˎû8K&Nmq}ܗ*gADiWwl#˄êNcҮ[Ewp^-"rK<=۪($fyMԩ˗Zf%>૬M 7OS˞X*grOC_7?>ѠTuln)XGsjM6ݗ- k8#GCGߡ-*>' E3wei׽g\Oz{֨{%ء^#3SkL*RݹȽ~c[ m\vȎ&U.Xwv3/R5O*sbvkJ:Ȥ q&{OҩJ_":_O•Ve1)^}lUƞ+agxгlB]A@ ĆfbPh%\1ؿu MuL^u(8zNZ彟Mkkkgbמ{OXcMP D5ŸR`acaPAhpS@{>BUz+Y67q˹)Y|;cٕm#|ƤB-Br>BN]h  ̛zNq*XRV8!ˁ+<iu^"J{wS*`[d6B~ςҔCEE] r.U^_P1ݿ->yKg+:^WlGv+(iZBZi6m1C~)–izY`@sҺeGRj-a]2Gf|ı7CϘk))(B66 T$l5mw"^k"]"k{g`.sjg&$My~"q'r#o4(I Av!gB`.xʁ<ؓXM)_yɣ/v>_ ~$"_RGǻ!Vo/%gg/{.Uŷ|Dg[ݫf5\[cMY3Mb/k:]p0qNyn7?ow>eo+c[MqWDVDuJ '58n=n|W|O(dFEdi?c![.9ƌqͿ'<@{Ƕ39I19S|`o!_1޻0%_Z-|p֫q-[V?E>KZ0lZ1-992!ܔmZe g_~̩zf|@top_.| ]pip[Z BfyuulSyfS_T>XuP;>oL;yjbeރc|{}^ G[(v#@] vi wx ךLmp!ׂ"@x1 @ѡ!  4 ECmB)#3 :af' }0 ;yPk osFQBRe4ÀN ^@ nLԁ.Wc8.7_pc@ kЉ&5@ ៀ^S0?m <] E)ҷ%HoU\=z\4;A@7C5uYC,aNd"eyw)!@ oMN68ԴDPgM} Hˀ@ 7eB1\k[Cp RC:@r_- 𷢿p1dn@(B(`zC ( #.64#-4s)Y)@ L!@@Ho 6=9LvF3V/&G/I~I1LOI zMִ3=sv9]v_k?@8;OV>[MHЕo&_PajukHud^'%GUCΈR]xnˤOd2̫)soR^֎5C]v2e(j+} 0 3ېpr.>l<@[@lz|όy@m7>2=+r{sZM?3'ܫ' yΠVIY2UwDnQop7~FD䖶2%lc2U+Yfj2cYɥ]ll"+pXY/=HQYGn⩔!jc >覨׹eפ]ض(=GNq%]4pFxJ^#9ӽZYgW2e]lSsz؈.b92|K w:9h. ߳sCڴ |Ef]ֹEPp5nތ e궙1.ZÅ-aIF']R&ifKHv,P' .01;e39P/N9UY'?[0B7~ЙČ*.I/ yc4{f {x3NC;I$NA,P)O 0gaK't̮{c ɸu۸#A~m_Uc׌jeffդ˰%;Qٵ 3.8ʝniݝ-BkىpyKRbwU+|ynL\S[%arw6ӐG` @N`_d6mdTwƬKo\JU&z6.>W UwfffftEʯLd~F.OZ;* 3J|ʑ}K3 jA5 X?*-ؘ3(jսYp,O9)7UNӷ.YRk(nC|diz'-Hk IDATc՚R⿿'QbaU6/af2#;|%I?N=1iur#Pyi?Ɖjn_Q\S2hf{ڹ2R>}kոHϸ=W#LK9kuC3I9p̞v8U$|V(wmT^֝iRl p5M^8m{^amyjճ^vHc.n=hN-Zxwh\td-'GLLؔf]voY]R+t~F@`$v^ov1J5*Z@HURe wN(TPi i;vXH91wfȓug{LT%uIv㻚ֽ])[qd=oG6M+)PfzA">YQMwH) ׭l4Jg^_xEbω[=]4=ji~5>8!QbU3oѳ%|ۮK~?۟=R, xbߋq*֝{ɠ)zc՝뱃~ p%yw4v (zq0τ°=(JϓF \8+-JJϓ|~qOwƃt\EDF(:`QWP~$E)ung =}CUQuYH~}߻}cTT/K]d_'R%GM_=k=rz@)2`cP|P .E̞kJ`kM7"Fbl QBDD&D`J{E6b2d(w`ZGgLkӶ0)̻ShdU?a]=; P@D5ŸR`nenPz (233mna?7sfE,)]5f&Z:}ŭ}3  bh&5 B{=d9pT{C'?Eu(X{U(9]d&ɿ*S/wm{PH`#Ub'M_tvs}SWw: H)T]붚 1yV&Eb٣7xX!v*yE8a~h4e6wՏ K3IkY5r`բߗ=>ohY6(ODpagq]S7I'_pXDvw%.%vA96͙y]iȄ<7c9(Fq;o^SC@Xc$):Ю u 7_pc@ iЉ&5@ ៀ^S0?m 4'@ ]5[ֽ[;[mK)y@ Aο0{ɍrXBwIB ryw)!@ oMN68ԴDPgM} Hˀ@ 7eB1\k[Cp RC:@r_- Ю:lЍ @[.0:!wPOB{Zk-)ZC$A`&  Fltxz@B&@™A}4!>(T_i儷eJk 2ш G$! @(|gSP~6OV>[ML`ˑ nϳ͗IrF%~XXr~I*!J %^SE_q>݃Jov?;AaߑQ]>)Y!H U=lD}]>Ypec*w%<6%K;Nsc.h陻*L[yʖ9꺜=CZ~q}lA9jk[:_uKe]_=bGcz*Rf'RL2Gvo*w'.8E Av~ h*ТEh|6=N"ttl Ev2U1]l$bãDGyj9o?,l>"^ٔ8Jpev1N(cSbˤ0ib,s>Bkwib5:_[W:#m2H*?%"X,eL*I$rX.ȥzD.ˤr^&KezA.Wle2Y\^.GH ȥT,HdRL*'^,I4y׬°~{Y;g,@-[g:inZ%(P IQc 85)}-\·Іoj%+d^s_Y_{}x]d 4[dh˶A;F]X.\x¤so\ܘf̏ ]͸S2(zowͤkX䈈Sna{f.weUx0])6_\-_/զS^Ã5v:_ڳCiui"zz="Hߍ:݌LAWx=њQTG{'~0Cy\۰E%*8LDU3Z2{kGl#HK# SO7E~Fjc_;~ݳߚҰ/_k[x5!NѪwp`z{~-;Ž,=>ӂ:YxV#-fc6zibǑy]-ٚgl!y]n :_O6 W)uFxEDfɿt-?iB'P+ BI( M@HGFb&bVI'ܓ-!GH+/5ؼpw>2Wˤ(nRiI][&deÜ3bVI2t5a>mSH,X=.g GuQE7dVt- ө dinY>]t#M|Ƅ.m=,5P,*FۘKi!sWQ]6{k94>.6 >C0 pbtY_'V~4$.MvNqu+S~V0ά!6{V<ʓ)Ԍ߷WXش|=?נ5<ۂvt*m r+!ȡ}V;#/64_ڽ+η).:V6M+\t~ *v]̭mP^p p&8EuЪ,Ϩ"妟ZqqrᓔORf>(|X8QqvjINZINgy?.RZ 00dS,W`i1ì : AP-a{)OR 'ߩD3C}&Vϯ;@FlY {|bI=>m I=B-eT'^@Y"DƻG=U>CHBʲ㣝G/Sjk:{Z3ɞmvG܆,8`2)b6whȤm#92|K>$"kZ,r򦉈{bW}mR8k즺@]J%E*6g}bT`7%SSv7#(`mmy}9~~FhMNi\ Tx4_uDU_GP^[YcSEgPߘ c>Mx!^TqkfBDrfE}qdi6@?jQ(/skC&S?yyE}V1;S?oLѿ9j vO9x9[c*K ×Zzu"T 5 P@^s1^j3ml0+ܗ~ n AJ"2Bj Yڼ>ToBh)$Z_=A[ Jxsfaya#m0;"jCDQ{!޵HVwBTi@XVԒ [QZ `aaaaaay轼ԫ4^ ^X `S@ N 0`u\,,,,,,,Eo+p΢pn~ v:z@nn+baaayU\v غxyn4H+Dh t a 7_=MjCAW"*`[,,,,,,obB@3tkyA!2*˯ҁY }i ߊvDD}!@!sT9C@>:ГhBcSBI <2oeaaaaaٰpprH9yPuQmO:&?P%P/qCE˻Ku m9[D6<$ [B)@vgN:N 5}@>=:ur2J 7ngO7GuB7i_50D'?1P(cRrΈTK/Ő999){,u@+u B1K!Nh C&bA0 ѣVm F_M-%/ic(m7Tʰź4>.F?sC d֞X1F|jr)"xo {cUUSD7^iLv).KH_7*F̰YR~5*B,Q4`J|)`P$ͻq #fmP kҔgnjsQV^5{P(5'2ReXV3O;\tFLX.4 HފHZPmBmt @gRA//z-ؓѵ=q- ۛCqt34eiwg߭[{G?.|W*a_b:7k/ 5 IDAT~wɧhHBzWFxqɨ_4y6}Er煢Q˫,+_VϞm~PzW߃{;8\ݼX!hڨۿ()K:ʋɓvW|dPޚxHJO-QDġc\d7/կۛq@]/jqjpYR?;7FK^3/ '?Ukk?vmfE>3'Qc$w7-;ii7fvb$ .E:iȼ[r5;rA PO}ɽM4 Є&g dYdKMvÚ!#֭ [|<4DM%c^S.qB}|ޡơ?ԶLk}CwUIs-% /9#%ۭ=ܩ3'T'5t=BН  =Ȏ,ʪ ABa aGȋSM%pTkpBsks'ֈ#$.8EuCzۙ݅®C>?SFv|KU\#k/<ڔt}*Hǟ6F(ϸn|Б?jԻ~%D^ORߙ+ }O^yK\ө̮j 7fx9dW[&'Ԃ\M۶!| ezo.*_ uCpT;R<; Ƈz 4ҝzppg;L|"TT&)(9'l`Pޢa8i>J2H`( N Sd2}aힷIo'׀yEmssՎV%47EODL\QKoFWs=#9N(;meo^faEsqz4=s`D(ﻯf&1CT#37/podSk>N.K]s=kQ{JND/nύ[ƵQatΝ=P5#2ܣQwM&Fi?,5猚梕XP[ݛ Bihi#rAy=BDLZUAB$>m&Iɝq'l،Im)}ݾŐ9DȪ>cϚs8ڞZ 9<gwh &[(|Y9;w4rv`QM@X2mb[>zN/I.0R6#9l&BBka?!xE"W/)ǻG!v؟-|0Yr5?"?fFEyBĺ-&v_ .Cښz1ܸtѽ1Jǯk-p&CGu<l R=m\?(4$VIm.9y6\,vh|H؊-C8:TD5+o~n=GL ſS7`̾N%WxdJ{# _K(]?MHy1S QshatjM"07 m8BD|yD6$V9vf+SgItʽb$xnVH^}ɣJ+7{ ;9@@vhs=CM [yE|ڛ`+zo.)wu,q=mD,3~OVcN(ċ "N ORҩa6|6lmɹzkl]ؗ>9OdocJ:n6z@<3orV\Kh+BNfe^.8$C+{aZ x.knV74;ֶdyYw~yM∭3`s9sdZ2Wu`tzOU2YUO[΀!ZLhx]?hԣOoA'եZr?.|` 볧F6w2!u9r޳ǩBvp95ȳ <ء+Y}^z)m d9J)jH8uFQɡti|\D+?Bר}[w5wGSȨHХ{OZ@If]uLt񥴁?ͿUi`RÕ{V<ʓ)Ԍ߷WXqpYy>,ۍON, t/翟aF+{!ZwΌ;tHPeӽ .:V6M \t@QEþ@̙Ϩ9h9"i}SBP6a@@mho6ew>?$!P.:U.3ֆyoSgܵ=&G׎ }o麈+^)G!=pP_ iR\Hl:lH~{bV߭#hiԢnLo[0Ө?iOg2?wA5cL!10M]<XdӋ;W߉͌:W&©tl\qrʼ~JV_<1cT"]70Ӄ] X;fGlqlɀԡKY!_K^hc=,h2{ FJ&K7{X -?W_:RU8mNktX{^]1<{a;+j"Kܠy*4p&] {vRi^ƭ+ fiV,Bf-Hf7P^_UC. <8{S_4$do}S}uvg7؝ L;ٿ1%i{zuT 5 P-@@̀$R; }z M 14wJ ˿j@ $7AHmD6 TՇM-eD'( z@5@7͚‚}XXXLɃjۯ@ =mTQ*P7 HԿd@g}/Jeˆ$hz@Wc@N{ ^X ۡ鯂ī:&]5O@)PYZaV ߅VSû)hHU\؅=,,,oo;LX<+JWA& R z!A?;d0P4Az#W A5_uԋvm90 ӭsȐZ,Jzg,,,,,,,+M[uZq H AI{jZ YXXXXXXٱv@)'89 Tj9%N~(2Xuj і@rmjyHVS2܍HUqO99r S!4r]˵kET:@^xp|ܺL,~?pոdiKD-ݗaw eB}Gk6w8>cm1VU[zQ߈Z^}d^=:~WHܤ , < ċcMF]"a]̳,c>/1)"T>"~Ph`#WG7/կۛq@]/8M)oa>u7ŖlXP#Hd̉ MUmJ*J\2=%ɳ_Z8"P&"nP(KvtU?sEZDA&V;^401$'@>lu@s!a@y4& cMi:; !I\3+S# jjYzBǤǤ$^1uߕeC[Aku;?gTLķv6s6{T[c g dBhu RpV_ _yd-?k !t_*(ώ۞9bhG8*/e } c>e*<lYw|+'2^RE'{d9GwP.#$.8E5}VB!wZOMy\A# 2NT,s/W nk`u֚R}H5 4RP#prC.Ae^154+dΨXyO;KðY/RKUQuI1'vn\#.4P\~ka+c\tFEzib1$yAjR \Ckq|AJ1´I !6Q( - f@Mju !]] ;yb~n<8Q@+G\qeJ갟 g%Ju_B[U&_(e/zw4 .LezY]˄ZШ]HLcߴI<&@QpUW!81k mv!8Iv_?)>;E#G0kqsudqŕkf*0uwz?HhͽVޓrNXϠE9޵e.+ :ҬJWT `w?](LüZ\,ʪ0`yc{IV5B$=nf~1N )6_\-_/!.MAP8 Y~7"XdC^{6r@788(]'W~:ZC49g|Pݣ}?Igש%'gLgWM lsryu΅_͊%Cb@[7<%̍@Rs-O ))4^C6>-!07@!'!BZA"w&DT*]hlݾ' g+[Qf/\[m<f$Lڔ{J7yaRe˄6Q@9@vhSKS:=}BBͻ[րG9b+zoQ341׮N$irL*ċ!όÅd{vaAš}cDV6Ľ{kGl#H0NSl<.m"ےs4W_;~ݳ*k^"q _k[x\$J[Uo`EZ4vW=z5(Yz|z u\G,Z$8la") ^qq@k<.l36ټe7 d8Xsc bjQu>{/]Oe JPJ iP-!qQ)%u Jً?m׽-1Zqwϓ`#o˚gQKSNluyM+`eXlre@Ф-64(aΙQwUw~tF^:ߚ[0b 볧,.v̊eBV1!F]~]!;8@G9bkgL蒈moCCc%KǻjH8uFQm-h: 'FSq4#jԾy?/6?wUXZ +S~V0ΚIg}Xѐ0H߳aVLPԦf:Ƹ!-/YݣS{ _ss-h ۊ6GJrh߫UKy uvJ`UM ݄ILw!AQ.6(DODe8c 6d !< ?J R"BI %"P BJC(Rڄ޽=ޭ?.=S".!o]g;q<`+pz<.`Ow6qم#:3t1i&1w?]&a~nwZ$8>f^ 9!G\SgU-c`=91duViUVyo՛;|VOLkob1N{|wMpw:lfwj=ކ0'n9NN$}3U^13j.o.2ұf/F^2uyNj2'~~0Yƛ lxТeF Eͪz9D&wMVו]x<.3/wݱؿIQC^܊_]֮ TlscuRKʱM1~o'eܺ{5͊EȬi6@?jV ABwĬ dԛqT"kfu BޣD&V*kGT3ZH}vs^պj[%& &!'M oPa{DrtPweҠG@zc4urGSVѢC䀺!j-^өB65MYڮ: - U ;l ɱ/ܖ7:>\]_Vc}|YXQ˫N.\>(=zOdǚLEn|Gc>1̾[um\fMN<|cDgX}K7@/"Vqk0i'_4qx֟ʔ+[%FtȦ B>^jp4 5QN:^S+w6<j.xX"[(6l\h5{xMs~ ǭ { [#]'mxg_Y99KƂ$`Gv$3Sn}L:s إkr!swQ0o׶0 a{!=s`D(ﻯf&uɮ#BpO봟1"j63bz_ =%}'tgxW7}-RW9j>;{jFd9hG֡ %Wü% =d+d2%4~SF@'vVo0"7DR*d9šu7%A,#^"BX~zslOu\餶ٔv>nXOb"dOg9_Nmn!G4B}^md o#+g玖V,IH\MaXO5A{spwͤODzK?o-`@5=)ryx g/? ;)'L< jk/.9]?| Nbu⎣6ܲK!'lo1A~@@H%w2~},يdGb\* bi6^Oے=CZ NM_Xvsme/M=0(UވRdi]+MSRJ S{hoTy/ 83udI[m9mɿB@ @PCȝ BHy%=W$ե,0AQfWL96~/{ŀIݬ*S>GVn-6>}@@9] 9$D*hgOP  [yE|ڛ`+zo.)wu,q=mD,3~OV˽L !p,r.,h}ٺ8/}s߆HRҩa6|6lm9oبVǤK<Ն]1w:gUP}q왈79f%Ji#I֩=yzV 8إgfvV`\.3i060 4cefCq;s0q3SrLVӖ3`-2M~y]?hԣOoA'եZr?.yBbiw9c*M{~ݬ:L_d]\q.yw =wk>v(bhJ$`iVx/A h;ji6橷R@sUak*pt}^n]*.]|)m OFUZ4fw )imrng\W~m꾭ޚ;g)|4;tU?94('y~SiTXGj:3"B!.S\M&#:ѱցg(MZmtGJɳ;Ǐ3 mAPSBP6a@@mhoD}.õ݃!B=ɯ{#WGk؍ؾt] / ޔC吞sS/Fv]N~4g).$vA6$=K~1Z`4jQ7S[&Gm7K-{DiݟUݧ3^՚1|.kv{t:#nS'KGX ֩q0qaՋ+Gc?ubE8EfkGwgDW IߌX2GV-y}edƔe{vRi^ƭ+ fiV,Bf-԰  zLB ADHAÅƝfN)baaa3@RmU -fj"P !LhDoP4kJ? 9baa3!&mjB4QG~>ohP;#)ۿ(-# #hz@Wc@N{ ^X ۡ u:*;Iq j T|+;@wpn~ v:zCva "77Os^C+Pw yH1m5㫄XXXXXXXj㯞&Ho~5!zn-7f1!׼C@w RCW@Q,@oE)~N @325nzrBiU_!!iURMkA"Cw" 3:7A!@1G=@폖B2:@A˻NM A5B[ѿM-j P_r;" !!BPo*F΁xvr2JGtugOgOn>n|ܺ}vE !$CzU CH$zw-/UZ.7*zn[3[% Z|D?d !'Gޯ%8El %X%LIJ~T_?~P*zod`,4>.FˆPڶōG֞X1F|jr)݋ #Bm쫐y*o.9v:IY`R$<= Fv<زm}Dfg!F݃#.*kGyZ\pLi6m~a'E:d[C4 8G}-JϿגwr2RrvKkI3faxQ$Y03MLSz?b瞉',m(?P7VLӷ_9Hv\g- ~YX^ EUGskpgOn [": NFqO/.J)_]y1yNW?[Iiɵ1 2Al>u7ŖlXP#Hd̉ MU]Q鱖_^.74H]iIizUB/]Ovfn P19[@@HsP^-MҡF'(d9S_KbWxqsdkJWs< nQ22fķv6s6{T[c g dBhu :Z}5ؚ~Bpt5}]\>;n{,?% {3$ߪ\0ogyxJ#] A0&~Ϫ:Ah9P>=!o`kSWйb{GtlHРcXy\Yv:iFj 1qQku~+~~A>x\CMn&Cc/|Βdzt0lRya*mTrRLɞ[k>׈!mZׁ݀$yAj'V{-ЋLUM@e !6Q( - f@Mj]p;y/o-кxI.rWPQ~zF.~X4F]rmgEިR6:1!/xԻ \0pa]/Z&'ԂFBb"oM4 ʞ qʼnY+?=X`nԕ~%}}"sW毙u0uwz?HhͽVޓrNXϠE9޵e.+ :ҬJWTˤ9^QZgdVOvch$zZA 4~SF<M;@7Ov")2@Ȩρ B!.Nt`gGԎKmYYaY;dvG-3| 6QVA @J;l=60ӥ Jx )}U\·Іoj%C@y1}g}V-L<K\\!-v:8鳿Mkr'XE&KtNfu5ℐA{spwʹkqg!C0h y)0h|<7&FNK9aeP[h肠NoEr>[1FU}݋s$xfd:AR_IJBI4m*<%BH2/oqwϓ`#o˘ؼpw3,2Wˤ(nRiI][&|>ׂcsfT*i՝2]÷V<̧Mce 볧,.v̊eBV1!F]~]!;8@G9bkgL蒈moCC%KǻjH8uFQmpfFov )imrng\W~m꾭ޚ;gnܥ{OZ@If]uLt񥴁?ͿUi@k4k=?נ5<ۂNMG`%9*ug䥼چKwv0E7ir*T{Mmbl 8X㈋5;~gcd/|\$铔2e=*~TZV,7Y^ƳǥK<)+,+,+*+*'?'0KUYAfYat><0^ЮS~qƽOR IDAT>NSՕ%~3C}&&a>vd&l5Bgۻ( oMI D@@  $%AA\(Šˡ"XnTDsq=vu!gp$7&IHLH~~dRSz#1zL".TZNG)*ǥ,8? YsGyc*Q jp"b>9~.Q]dw-=*neέ'?WK[R7H*Hk?Gj[M ]isOPϩQPeTIYz`SLJTONttRD9++Uw9h1O<&',:ܥUlQ ]xg{N5 !" XosnSҜ]v[#Ke$"2j5h|cjA'6:zħɥ2gll֟\۟YBQφ^:~dmY]m/sQ^ĝ ptAzK-;]ɎIh]Cln|dԧ#N[w=mzQI,/%Ї_.%зKf5FOviWt?g8cĄs \ p{@\\!8S˅%8fUABC1a(Aƅ[PsƤ!İ@>!9+R\WF$oT]@>GJedB.u~qi"NEB^1 =Jrh Xtۀ5\@w\wu9[ q H GF(+^Cn'Jwk{K({1ËzI-P a,[&ۘ g*EЅ^].1πu0KA_!'n~PƼr/wT%=bq\F ʎ̈́R}/9]*z&BΔ]:/3ct ^x8sSs(EJ={1 OleD8#2pbD"F / Ąax\\'7%˙+pOKIHIwM1 \ӡyn&s@9q ]<3'$]qʮΜr3_ lh\qяVN_=$AGbo.C?Kp&*'Vvmn2LͻZsO3Czz,.V{/dNĽ]g?t~DڕGDCU^i=6{-ڕka >n7Qy[m QA%u*:d'fm>qp}CߍuآZgf1ۃlPjW ;EL |ϩMsZxpo.pFƁMT&%4i g*j姥?G<c25J~k9!(kil*4S/m9Q-Q^4Ksm>&7Q1(bV}z׻~aQ9nfY/'U V !֭6n{9 JUfzHtn%dLĮROLhǶ:~͢%;exh9Z{Җ+wۉy?}2;QM&鑄-?p͡7EoD &)V%s K5{xf~pD:uKh̆ar*Қ)7YϦ _uF<#QMÜَGMޒwEsxNX;Z.Z }r5 -ϑV+7}΄[OymH Tv]ox'kGPvjݴQPk3,{ؘUkxc-j|WֿO޳Ta76g`ޔ.5~Əu7pΰ)6yRwlKYZXh5ZͅVj6,6f1Y6jYEVKRd٬6Xf-ZlR~[[V0+Rl9Pe݇mgXr캸 *r4R[,DMj_b#CJ“W3} {3I63|:3S8WKT:y)E ߜ!:3QB3v[1fW'4rW1n~aUj=wޟ@umi):6I;vﻘۮ5o#; 7܋P\ һr;DscZݐ>R/nE^=?۩w\ S$ћ02aYꁑ ˂Ȅhաk߇*pH '0s$ =v+bz 9E*.޴*O'. ȄĘ8x gL2H CyB"ť;(pet t'p_Ut #p22!:u!@l`$VcBϹ9ˑF&.E֬sbUoM^Q NWЊ$Pvqaww z^\DD6W \*~tz>R!|\ S ɡ=ծ?nD`PPppHy-U#'KD[~enoIJ,%2s~zIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango05.png0000666000000000000000001300340514675025471016062 0ustar00rootrootPNG  IHDRXrsRGBbKGD pHYs  tIME (5@ IDATxG|  IDAT?1,D60C3,Ͼ IDATtgȦ   K;4\f IDATG 0 hK>k= IJ IDATG|  M=6#G      L<5 Hk IDATgw~     K;5 &*`eh    J:4&d# IDATPTW   N=6 dbd\ IDAT    M<6  tm IDATG|  q IDAT   4 IDAT  IDAT 6EL=CDV IDATG|QbhJPQ  -;@KQR IDAT;?   IDAT !"&' 5;< ! FGE &'-   \gj~  IDATG| #$ͳqx!{s - NgmZ [=UHQQipcJ0'02؏*E IDAT     49:9Loi={D.EA7 $QHbHQ/   ;AC  5 Cge> Z{wC  η{"X!hN fj8 9MYW@*Ŷ)52$   "$$)+0 IDAT[K~ H}   I@C yطjzzR07W[ QHݠyZ;E&ed0!q>#ͨ,8}t7 *13   5r1  :v8 ϲ8neL4Կ08* ,5<:??I[wmH " XI-sB2ΰny#1Z,53G #?Ke'O56Pۢy2w9*-/$&&[ IDAT   ))'t^\ !+/+ {i&+)SqB Я gw>ĩ*VY2  " ! !SY[Vp[v#o7cm )!&-/ LE;,+)     #*'>ijW;! 'k1 Gt-fM`:ລ"EH0ؽ9cnX2 v IDATXmX/Dz$bdh *'467 /89 & 1-F)H  $" 4;=    G|ENý >kxl;޴vw$"dC $#!IJ0<ʡZ{Z1  Ƣ$:E.)b" Ӭw^mT/45 "5wq9$q~hen8VI<upReP @SN͎(>Y UsXlsH,"9@2ÊdW *_w9 ,*(.+* ;?A   +1#& y, IDATK~~9 |  ńTT &.>RS0ŷ&U9$C4 LZ?~\l(Ƶ1mP%CvyE   2;= %meX  6B3SfR4<} Rnt7VћT ]sC   "'/2$%!ɽ$( /?Xh[3% @IJ 9hogZ&8S{]9^=fd&,1bC!οz9xyBݿ+ElyiEϓ}Jvl;13   ōi_H_'Πwf_q5 Rd4IPS$*7? n/n #,))/-,@GH   2 IDAT2;>-374?E/9= :;'-NM79[Ih7 ٷ<> ߯pMhoϠvkqOe?:άrPHͧez6rmF&   ġtTq5  " (,.  1ÿAMS%*- )7e<GK m9 IDAT )(& #%KW]XZ 3k )Unh?7b| !@m#*%  +4;<gN5  Rc8uA?ǧ3O"ֹy02FV :* %2  HzbR(V1︓yN(¢@U8 >btvR. J^fjW>!/8:256 18; Ǿ  4BI*15BCm IDAT #10%/Hu4'Us[v-2#0FhEn{ u> ;;"P*#FL* <^OgGE 4VrM&  ?E?!%^U3$@  L]0"YUƏF$ 9Mnh% !Rlv\/ײk,5Xmy8| e"$.4^eh :DI%)%'Ⱦ?LS)37Ⱥ G|  JS %?o9c  3Whh$3g{r<^:M- 'd`,5{`/ %E9&`C( DM-BP6ɽ J'"9n̑|tfzZ$YO3U 4rJ:>R"20-!"  !!w IDATɾý!$  ¶ $@L*#]{dIeZXR)Pi~n  SvC:R(y\=!% .gB-$%c}gkyY  #Vv`& t 88^ld>IK (*   ~xJT]    !30--~<\>\9Sk&@  BefTN7))5=2"'+" Roan},+:9 eG# UI  .79045  @S IDAT   zt:73  8d?9UAY%03[Z{w}.Hq|zn !LxU4 ?d>y`< (++3=>  '$"p> IDATOYa    %#!MHE&UqZ7 +Cz=lFp}  %% H}u /Zac\/://R#LRT ^YT     -X? +5ZTR&  IDAT       B?< 4DM7G| hc]XTOHC@#%) ! IDAT -/4     JWd  +,10` IDAT !!&' & ) 1>> G|1av{;iAlnPO<JT/ ' EDJ@77][b# nlr3.-( URX&*-+*-97;%...XXXG_Y_ IDAT 0YP#l;gU~v#{FYCڕuFW.QyQ ع %;MF7"  ҥ"8Ocnq_0   þ60/   >?C 1+)/.0,+.'" \\\  pd IDAT\,@xv-;v/5iw?VVԩxdI4  L:ͦzj:z 1]T$k[ ld2VnrjE' 3bvh! nX:^#M -VÕ@    %A@B&$%2,,*$$$!! 5+( ?@E!"778,+-999 %%%$$$Ncޫ)ٲo~.Nqk!o9R   6#.LLE  (5&  : "O< )Zp8vCä<e% 5LWifE!Gj8MT0 ʈ]_j8 ֣mNU8;9V{x5 &zG9&CI}:J 1՚]X"M6n]8C1Pm#' DCD0/1*&&"*%$    -('BF* #BBB.//" 333 $$$׿ "ƿ_Y2 ~Jr0;zU8& ۮw`@ ܼ|0Wq?z/bfB+ +21  ,?D// ,2   fb IDAT U5   InOvc6- LX,,&'! .;% ^vI&>ntM 1^qR'UMÔ53 —!^H 2Ph\QNh|H_"!>@SSS s3̛Sb*(.H8  :=9 &8C:%$6LK8(1 ,<>)  #9Zo$ LLʷ?R?   !%>jbEN^B  (% #  ?s58r.+IK+_Gfb>ۙb7|q'cjG#T["MƙCñ /ct^9 1/1;:=  ++/=5356:<52)$"920 )d~,(ɬ 9rѷ FE2"), &# (Jp+iu<s3=ڪ{e,cd ,. '+*$BD7(GZ*ȵ6-MbZ äWC$& #7A   4D&@$ -@@0)HV*  E IDAT._h#yn6e, 7&+  Υu~ugљ S` ֤KP" oeIM+eH>k' "emyWm\XFJ6ë VO4 ,'&""":;>    #""#00,(A?B!'#!A:8OOQ*#,,, ,쿒1|3G[0  1= qƏżJ*  0, 4*2#!*CH 2.ͷ  "3<#ٿ&ü     3C: վ\G/*ž TfNϾ 6A$ !#RR7 G|W|!  !St?{g;mW0@O?]g-&6FIJJ*bq:loNyD䷀:A䶁t}6~`+(nH Ĵ % &'  (0 -֛ػ %:<%0HR= IDAT  ң_O  E`EciA:9   B@D >=@sqv+*-(((111$$$Y(T  >.*370˞J\0#+0+Ƶ"?^C# @3A D<&ñ 4A1 ٿ1FC-/PN%  EhETsL6b' &<AE girr? .{`ԛgd\sN''% ݚAh.  {ǮLA .  NZpwR(9Q +fG,5v2 OiaU' -&&LLK $%%JHK=?C'#!#"#:::???///333&XqKǮ*v   ZnlӻJ69VbH/7' &?$C<9 /6:+Ͷ AZ, $$")2;-ɶZ=0><$ ]E": Ia_!.>)AZ5!Ӻ%#2IM>#*6>4&="?ANCݻ]8 /% 6BG#$5JG6Ķ '6CD6#22$  - IDATວ9y8-JW-Jdad<;=CCC:::HHHɒv*;kuO ѽ   ,<E  F k_ 8L)3]A.aXy  (5.> F-58<*!  $YjjʯgQ!1TP- * ӾM=# !8;տ%Mc 3ch%9=$6MZոcH# RjS 5 #;@)$*/"ں6@(^b* ')ASE ¯$8%?[n$@FG$&7+ZG&վ;CC 1IA,Ƿ@LL, ÿ )DF8',& TPObD >ءK IDAT@@  :d:dXX*RY1 4܈DA=}f*Uko#"4U<i$ڷpgXʋA 蟈8e0  $ .*( )') TTTJJJ###07& A]Y^qm ,YRM  17+K|Dj[jP\ %(,4,*P# +M/ F  &  62 $ 6do5 (0+#7 (3ju&ͳZ< Ola$?; H (JY-BB8,M)?7*L) '"(C(+,/L[N 4/͙&5SI!"=&  ӵ9 0@Q& ,=2L ![B#KS ٿ`I"& M9$ ʽ >@= ;  (9G(7EWZArZ@Nc*\L| KtӘ $2:A-TR   $ Ͷ> IDAT @@@999  'Tb' FN \\tuIiI'85 6=A275+7;=Z3 ՙ6YU7#Nɶ  )*¾ (:¼+GZ %M@ "        3K=ڨS& !# '6M'53";K%$4b[Ⱥ  '~H1W14pg 9r 5-ékl9|r~p\'\i"Z9YU  93160.     07 6N Nik%T BT]  %15-6*)>N6 4GX8'CC* (9 ,7&I($S -5#O6  5lw5"   *  ,dr,,_DUS.M0JJ!)C#ȸ6!  %QT<ֺ Bf^e4ߺ,N$ -(/D2 J^%ޫ 2QQ>ľ"K? *4;)# %0 0 #! IDATG|  Q1 O$= @UK:B9-(% $L?$=P8 )H?%>M?$ (7+ űA. 0\8/V4;D 7GG "Ta".gKRU-1-5\& 1J+ )!+@9)1Pggٿ&X.5IT3ɨaH!࿾5Q%2;@H 'WQF 㬊juڊ2Klk   GsG  #2(  $!:Og:4GH"4E/2;    DRLȻ :WO3=N'(BR) 27 .Rӷ(L   80 $$  #MC%    ',2 76 ! 'R%   % !.1 $8!!1$ CP5YES )-z IDAT 964! )tl`&MO|2;5 #*.303  $8IU87Qk7 LcU*@<.F.& '8C7-:H, 1A/ %=$ʴ(> " <1$A   #!-A"?<7  ӻA= #B7d;0؎%5HK=) 30) URN    :a Xإ[O̤F}RE 8NVVN,  |VqgUA4:?ϳ IDAT&.& 7IJ3JY3 'LN 3F  /: /=;+8@ A7%GOJ*JG+.@* 6D)ų,&##(9-  *MA%?6 (`T,W$P9$ OKHV_vFXo.= ||W,ul3 æ*N}wR3   (J/䵕H]M$   %11%DO+Yd+0^i0 2FP) +IU(= &6> FC>ſ!fpQѿ#9KF00=+?! C>4B>5<81  =th!.k-֨YJ *QlkJ*. jwO_ݲPhC#dHu|tA Dpo? ՠrq&=ToU(0 b IDAT"3A;0#  FxۜocݚSM$ -25   (3=(?MV?!3Cj3CA`iA 4J) )2 .  2-& !D?6&%#*fo8x+̟.uq2 3&#'+_  ￵Z;" Q9&{)"s_E"޻ M4aR7ɘpeGJȻ`| Ml\@?ksU1};8YʂBޜ@+p R~DM0KxiG* #*'%   F*3ʌP ruEkapi4    3/(0-% 0,%"    ,y IDAT***   G|XuPz]j\Bd 0@DVZ+Wjp0  $ *47bssS/0Rv0XkD //<`3)2Ff{l*?{Nh1,Q)5}xAp:C VNoob רvod3ٸ|(Uc2ح.]&Фo?bqvU3ɲÿ # &2Ъ~,m$LJ]^; >:0 @=5 C?5! 0.,@>; ?      Eq^:~qWQ׼J6 <  /IZ.  6:,3 $6)5?2L)%_pB_}?X!͙&e?@Je|lI6/)Zi)Ҵy1ɹQw^&z3|mn4ǟtsC rP C * IDAT .+$>9))% EC@ ;86333      9 F7.ҩ 3ks4t*>x`9ȧ9~[2BXTDm~kk wJ#ѳSZC*  2   LuVGT^ϐ>k' %./bre0gvVMi46ZCA .@O.@=ʷ+uH )=E! &*% $=SbWD/  30+ 31/:''        %F2<od,;qa*YpV$#U%{D&_ &4VP&QZLex| |X3 EG/&UR _K$Ӵi58 92  :86&$#333           HխuzWY(Qv]Qv>ppF}U(q ;f;E<|teW7mq*Ŧa*;v71$du7wfkA   !<p<9=ߩo>™VPW kkk &&&rrr   30+ #863# IDATH$$          !  KR 'OD ;aa ?yD z@D4 54\,ޕ_G~x`:YzKuE0b/  $.?JLc = $\Arrryyy ,,,OOOXXX0,%>:0 *&$88              *7= Q-cB" $%e IDAT ***          `kqU[] !27!)nnʦ/\oL, JKJx"A++5" jjj 4'+  dL- O=$8*mQ/YD(8         .24 hJV IDAT'DpDp A (:H(:EEE'''<-fM..#K\<.7) E..       !')<@B_fi /// + <.$  IDAT:''         ,03"%%JOS o`H)kP/L;"$ 333            @@@}}}sss  U@&"L;%R=">/   IDAT?        *,-&() G|GGG <<<+++sss F4 ?- Q>$S>%  a9 k ;, K8 S># '`H*  ,!   333      047pwz  }vr  ? IDAT }}}lllqqq444 444%~J D38+! [E$0$z\6hP0$ L;# /$/#y[4  j<$ 2$bH'+! 5(`H)  C3:''            ---ZZZlll555222&&&I78+vZ3>/$*!pK9!2%;, ZD'fK)M:! ,!ZD(-!S>" i<=.4'"j< "l>,!oO'FESXKO\i 2{ IDAT33"           &&&ZZZFFFVVVsss * +! @/<.%I72%;+^F)  nsR>$,"p@ .$3']5(lP-dL-YB%m@cG&A2 t}G uV0P=$ !1t}*ka= H$$          875 \\\eee!!!bbbIII MMM 6&a:.#*  A03' -"M:! !P;#5(5']F) eL-+!]E%jR0 -"}_9xiN)\F(JORʵ Cea]9 IDAT88         XY"333///$$$+++E4jQ    -"  2&4' 0#+! T@&K8"m m\D$iO/еz #hwgT5ljv$3@y}|#+4L@(.JZ* ?**        SSS&) S?& Bj IDAT     %':, ~L6nR0ө\l9\sY?ʳ{gM5j`vTuzhqv{vĬlGHEâs/O*z 2Me|kS üu_?U       G|III\\\U@%L:"[E*N;$       >,vY3iu}_j` -*̱'K5%fiJ7zp8_v&EXynVu 9$ŷfs}*?7[/u_? U8$=@?3     C< IDAT(((111B2 5)(    lQ.7*   ,>[  N6!q59 QB;&?pH2$5GNE[/|.@y/>R]M4nG=%  sE5 9+5nWH-9G[VG1HF6 33 *   *  `H+p5(      ' `I+êu0,%  !"Q'ts~C5MM ({{tK&YZn УEgɠ˜03}xa_3ҭ3s]6 &Ġ l fT3x S:ι"Ӣ{~YplP:ĤC^/ӸdkTgtxdQ%Ub`$ 3MQ &!  IDAT***     ttt\\\ ///ttt :::?0H 8+$:, D1/#G7!     A.e:9+&Dz pðRjK LM9?OrF?# 1/5 .0"#'UI,MyX+˴7bśJȥYRz(A Ż'L[͵^j}2P{#+#6&I:!w=VcmZɣI}qP&oI ( P:s]`U֌ +E^׵I]WP 9/i`rFyO0tdi01L4 |tUĭsu }mcI%]3uZ@ÉU$$   ttt qV4  M:!   K7qV0  _H,  XC'M9!.$C3."C42&  #,!R>%uCs IDAT#0 ߶LW <GHeY@]G/?Pqwp= E>/lWHRcib55֥~~2%A *V9Ѻ{,84 -emlXP=-Kc')13P;9V(^Q\XQ - 4 "9E;[c׭,Au0  Ͽ9/ҹ %s<>6PK% "A<>FJCrFN,%1%]3 ?8   Ý 7K;"  zzz444( [[[  9+^G)( jN,#<.R>$ &)XB%z`H)&J8!c;"%c:mS13++kZ&(5ʾ@ө #??.    ϣ ,;,.* y55 $?c{I8W\7U4%X2a H IDAT JJJ L-"~G 7% $=+g; &O:VA%!XA"" }GlQ0,_H*  A-F3/$pU2tpT26)lQ. P<"XC) dL4|]6p/$>/ qz #7AI ]uvxsm -W\my@g%gl|_Y"&A5.Kk{wtn+$ -Xn>,1"7AA`n.4%3@z4@/nYANfLG8!49 us($( OjenJ4 @CM!p|^tw  C  ̝\D- Իa `K@p>'5E***   G| 0Oj2Rʞ kY8  EȐ<ѮzZlJG҂( L\7   &B2B2|^7 xZ2kP, pU2 2&pA 3 WA$ ,!jO+D3jO+K9! F4_G(lP+ gK(C3/$VA$  PV^ _q|{{TT>(E5 .:@CHEմ5ȚTWMDzl`)$57/ܽ$Qq* ࠵5&=8(}lf/RnM7#9C! (E#UOt',<`J4vw @aAž  P]<}6, aѴ/MF;     !()f(|8GT' X =HW5@JyxX@ z :ncrd ~_6f IDATH$$    Bkf!:%kSXb/ʎ wY_ F. Mryk`7 0=7)sx?czl7)28A2   -C-  P=#P=# fM,fM, N wV-^D# rV3+  0%S?%K9" ' nO6F5bI*a8vJeVA( GNS=V]SZ  o9UB3<(R9SjvK8C[D=8( }yu~#6M\6 dj5z[}aT{Nb5n,~+,AORD3/Sjw S``goS3. ̥@~K4U5= خR 'S+tH5y í3pWB%$[FYF ,/$-JtA&:[" ?    %W\TSkH; ZTz{zI_!  -ȹ=X&}x%:b}LϫqR9Fqi= ‘_\~\ fwdlu.ݺQl䵔{*X{`2 OIc   G6 G6 9,9,qU2aI|^7 |l)Y*"# .4JPScnv'8)VB#Dրh}f{+@- SQ)I_aMjs  wwr+@.:+dfCdSVFa~wk|X f]c**2FaiHeA6 IDATPJKDhzuN;0>Uw{.J> ٺoGK/Tx2qE[:=w;=$s??.    lI CqvFQ} !#5x3lBE 3! AjWA|t]B %# ?kR   &;FI e^? '2׺Pw?ً;:Z=v)Q}^\M_ 4hC:  ?3     %*  "/9561'@SDC8ѼG| +?ƭg IDAT333   !4>% (.*;L. ̿-EJKD?JP (.*#- 9^9^) DmZ-Ir0g(C,-,  (rdq^1!1GN%UsCijlKn*eIAzey=# :aS .^ZVE-nI'Л\dpBY&Pp -hhP! ***     SlhYin&8+&' VaG YpeʤscN 3Ry3RSS\\IH  'Gx #'Sr.. +\lam<;\t}p?ܾ3~q;|43=H?-4:1 Ѫ{ M~7wZYF0XFSa+/ «4#'.úN\(   %Tc+*yH"-_R CpR'g IDATU$$    ' $O= ()(O [9^2,00BZ07ll]G  !(+'^)<2=-'55&͝!7xQGskpT!!>TnZ|kW>!ֺQP #Mg xcn*7DE  !1?!?8  $0CHH"8UQ \e^пƅD IDATYY 0f{0+JfJf<|{?xO a[( !Ry-$@V+ CdE d5UH33.  D4<( ¹ 2.&6Rn6Rn bb***   m IDATļ-Ͽ H$$   ɹz  (=CLQ G|   Y IDAT  ƽ      0V~e; ǵ ,0C\Olx{'    Z   #Hx6Ɛbfrf!"xO& un IDAT50  *j_rt  457 ٪[u6Re?, &#<]e< B3! 6I_uO$"-   /J1 #(0 Xkp 8F  !ITB$&+^vo  IDATڴ{HlV:%lm8h\' L\$Ȳ%;L]M< *BPa? 0"#5T;(F?y On6&*w})(I9,{}>s\/10"9[^ AȄfAr|BF YJtMl;< (\zjL4ֽpy:0.   />/A`"I1" ,F[ = S* J\X (JKD,33 !#ѻ5:- ſ-<  !&(XR~|nu0zY( Ё IDATѷ0}WR/ɰ):@GHF?;. #8N#n@aq|)5'C^aP3  j2iu/ _+<txq r^: AV[al] *<% 8: % A\X C<%kS& +)6]|o^|r*L:жZgf, &4ID6 '-)#  7k&) ]fh/XC)1GLhin G|%Y~=-% 8[o+ ?IPID@0!ѧ_w\G |k I% 檌k%Bo|R!UV>Ÿ'Naݼ}3^|O$ß9B ϸ/@5 5Qp_@ >GJ24= LbvR9  %.!1D>7'Gq XG$7cdO"ER/ IDAT%:  efoͧ}K2/" Ż \7P`p/ot"D4=$㟨6|g|}m .@&195.%[E+ 073/& WGro4$&0&},;3Ng+C+BNWȨi2we#8?P]UD)=n@$ /tN?3'k^W̉^[?BʇP[IiXԶ0:ՆMDԓhȢ\]5$!  +;  &6g2"dY&88T&CJ& F/=DYCP,2,,{t ,[*,MeM60{[r @p/!S`i, s9 1|mZ '8FXN@& L= -+$r|g=X IDATɺ7ZXC'  5{i5G<  ! hQ' 1Dٱ#cU77 ^~@bvw(    (9# 1fսmv"  !"=(! TYU9(l[U *' ",)  U%  ڷ{b  3*ʹt{R"MVCcG??69IBWR ny7% bhj  '3<8-  ʽK  1N]dK2 &2 2. @D(*2)+(+ Rst_OJ Tdf̿&&( 9( W: /+(9q@  %%C_ (9Wq% 3>H8$v.t.zbG  3'ĭrR6)6/NjcM1m IDAT*ndG"     ^| ey6e|g9HJUV ,fyjWWI 1"$&.++p.$I:%hSɲ|k  %i"Vcr% IN$  ?!+4LkM^Yѻ8'.eLH(8  wl'ѱIG3{2 #F2O (ttRƠmKF1 MxMn\cK>{4 3L_ (01 R-VA;3>̻2*/-LcjO":AB;[pxZ{^"UZ[ &9;4Del xm #4,A)%;F.!&&"&A06ZdIOG1?!lʹwL)  B]kWCxh,% IDAT3jp_ %@r\ݳoRJ /(5.)2T=2Z}#FZW'  $hg.n5Rh) )Gup}H6 'hv< .oa\t}X( M#JH[w% L$(!Tfo(<.@_]@X^/_|2hhF (Hp4Y!% $W(Uu; :rgC0??vf"29@MJ*[_- %4oz9#5<QuV_mp!ck[+"[lh$;TTE5$(% cok{yYF/SN5+!6V*#!"@"N;" >`Y:  #>  *  )G`|G9mml 8AG:$epyz{j~8PZ* 0s}y=Ta /K^<81IXT 7:5 " cwno.BMYB3 &RG-B1غ%Nr[*ؿ'Xܰ 4!6 IDAT #+ 3;A5 N\Z _c[-=X0- "ngR -^\B^i7SLH?9A<zxڰnPs~dn?xW/޷ `>c6V, ۺqWcE!.( "LzK%_"J{y1Yl,/$ҍQW2if\岋\IZ'S}*-&fmJ(('   08< "9EXZV7?J!&* !" 9>A&! 3=B 9X0  (! 1>" Գ(jtJd?эGfa„E+Zzy? ԗMnV0U6`y-ѤY Ex&Iom̳)9>EGD>:1 ^u?"S+#>{Z9;_%Ң8h]@ #'( q4 IDAT4:;7AD/$?NZ@-732 J>" "7:*50*    :@12PG. ڽD8 AxJJoxW # uUJ/' 4N?  ~ٯ ҖT.Of. ;EMHEB3$61 5X:9ƲPQ=  џ}ttѯ*UUKTsk(ɏc[ȶ5A     >@9 # ο*=( $`aY2.' %  #@Uo@/WY26v=9M2+   Po:`O+x1  EZafLA@9`) ӄ,.}&;xs#+D+DPYʭr&qn+  5fu5ho]E' Ӽ{^ark(է~H46,9 IDAT/23 -69)*3;#1AC6'SJ9 $)(Ĵ:I , FDM2JH?Ļ &,2!ô6LFҧin*2, 3foX~yA.ڼ#HE[; Б}  -FH:}0lE$)-  F:.$.WNq2˚F&*;F(oZ/C=# dzglP0 6Sj6ԭmMkp- `Kze 88+ż'17 !'%- =CJ4  &$&7$6AI, -35  =8J& ;><.0 ?Wi) 580$Nq} IDATEqk>kpk@/!:\oz8n92|\` 'PkH "V}}R{ ?v" U;BS^*Ŭq.TlZVzkm}d8ä@D  Ȯ(GXd6! %-   0 1WF    FSZ "3>aT?* "ĸJZƿ- GRJ&T_` % (9O(9 "<_y<_ :qqsV~1{{0[|Dd  "&qV)  ;. .E@#)fq@#5MmRZiN+NV7i7W-̒2R 5( Z3 #BXLaWx}#$l&   MN2 IDAT<@A EIKPRO@SY  23=+/ G| !!5X^5+]5b"G|G|? @j@Ty}c< hk'9OJn~<   .htJbhf^:մ@}i+ 3}uIq5v9    "-4 ##"%&)/-FOQ   &$! 4B<  / MEԻ!]aW  C  >iXON.Q~En&D  ۮ'@!gAC_{B S-{}{L@jS,g1aUr(N   ### ul IDAT268 '**BMU%'7BYI3', ˽(.%@NG +  $,!K?D/=E  M 2IZ2IC;@ll 'bbVH  7u     3;> ( #RJ@ɮ#$#/KG$ ǻ-ø%!61" +++...MMM111SSS &&&    8CK?0 ,4; +FTB0364  26* # ;Q,   *3</=9!*'F IDATӴh_}036\۞A DDD222kkkMMMLLLPPP$$$)))  10' +MF<+6+*<:9$  47+).#%" ȻFU_1ͽ;84'.1 ##!   ;@@@B6ɺ   "||?i222888AAA222XXX+++ddd>>> 444$$$EEE˓ IDAT  23, .&:CG>)'bcLW]X !)$¼*6 GJDMQRA: ʽ'6DȾ#0) 10& &$ G|2O^YK/ +51&  AAA%%%///222TTT)))$$$UUU```777    $# GHG+&    )F@5 $'(-8A?7/H=5*)1 8>C 28  @LP(.D6!ý  C,!x}X'T|kD$ Cbpx#'JqwFꯁt #8NeqmJ%7&dB{]7 """222j IDATFFF<<<???888444  *+*#$ 035KGA?6B3< +/20.VTο* ,# )2+)7@ETJ0쫲  +=Lkvd'cX'(șYykI x;X7(tA ͜h[cO1 (.'C||J) ϭz\ϛȟSv8;YNqX>>>%%%GGGWWW 555 ggg!!!***:::)))¤ '9RaVEzs  EIJ,51UXX %)(  $)+,'н*>) PP>(=BD:/ &)( ?IP5% GLO(  4  ylM IDAT  /%!  b:  *lJ,Ff_VzEѷ)7=CFB=:3 '17D>FK5+S?ڋXkTh"zY~k;elz&@Wf> "+% wt!mXKKK$$$444CCC333 aaaDDD@@@TTTWWW$$$333{0ֽ"9WJ3  '.&ZZZ rrr```'-6+.//ID= ' !'* "5C=4<   ::2  3>>EG;  !      +;FD7*"6 ˽0   Usu]0x%)  E$C^$5@JIGD6'  !@7h4޲p`&Pgk᳽$4''  _>ʨ /Vy~b1N K8#Re< bbb###;;; ///FFF TTTAAA!J0"PN"XlTɝ-%/Х3lllAAA 36<ZM360&  &    IDAT #,5R^a')*  #&%    $ î    5DM5 )(,  ޏ3%v *l~)*CU*CQ[γ}]gv5~5C$Ka4‚> @a9,.;;.>Z_X /LwkIJ-awZ{uqq(eMhb O ԠۄmP'>===GGG===BBB nnn<<<+++'''222((( ˾)JB69%mnS˪Q־3Q&:::...PPP=HJ5>AȺ$5;BFLC9*µFA4%    >;4        ##MNI Rm]yvo{gAǧ.uxO- *<8e6՘MG(}=cK!ƭ )?@( Mu!&?`3}>!Dr:&5G>6%GI"ZKo9 Z~_=nE*l~H3>F>. \\\PPP===rrr:::H IDAT <<< $3ڦ[   :Ld`W"X^pppbbb  (.1 BKL?A@75CB: "! ?FI5 * &8%! %.-"  $;??IJL,AAA0%Ƚ   G|(8KO* &+* &b"U9h /FeC &t\|@#y4a:_B X_ $ҷ?Tbz=( -ngC& 4PD27d9-      %%%(((HHH111?V4jW>ΰv\48ɽ-G^gR:AɦBh@@@ggg$$$%K[_GDFI?4 (#*, )01 IE:UUM .*2 0"     *,G>1ǽʾ     ";a;'SvS@o@o 3uq  !P*!$ IDATGƵT3  5KP fv6HTt7"  9-"""b|.|~p iBl]c,OG+0wca" $&"+6T@lBB?0OZ!" -&2  ('&BHMO;" MI>OTS"/++ !       ""2[}[#0BC*5A@!IJ%(X).7! 4XMho/9x"^o!  !!!&&&   _u_?b{?b-CYCYczczſ=FP"&'' 2;DB52<N>*$5D *:G+*)!6+    o IDAT ]U "( ;A8 KIt6f**58  $ T|ho9CirH    """  " /39C<-$A A&() %!)/>#1@?"AAB4.      TT ή:X/6d6d/ ڼ 1E7 Wrk_ o!z $2KizU!æ8XF"|i9|4 |,5$Cog          JTT+Է #).* U_[ xj1wky| j.7zUcc} j9/ORT3b@sr~sɥaPޜ?˧n 7E@(%F,d54 88TT$.) OyzZ#b-͕9 `aӜVF",?UW($}80tb IDAT         IRQB/d]J"˭Bve86W[Yßj.. ,ZZ_Y4TnO5pu!=*Foy?\;W! IblIöG{<Ү)^e1ؽ'6;ADB>:3)6CFDLM%CWafԃ1ʡys'Lkm? sLwDI "Kwc*Ļ&7HO7 +N0#    0281*& (09LDF#   CHH! TOB /'8      Ш5 IDAT}*z "6 .HH#  ɒpsnu@ 8V.;GJIG9* Mf8 X1ƌIFo+zimC3ypm4QWM{V 8p9 ̘ul#JbX  -4>6$ :)0=GB7,RG2  02!&"#'&$NE6   ļUG| >   JEܳFu@B*u a/ )BT)BR\ѹb\|A :U 'q[p>) -34<az9i {&+qUz+6gXb҄SpBP#+ IDAT 637  .&( ½XQM33= 2.(LC(п G/ !  $ ڿ 9:+QVU 2F^L%#ROD(8QBno3M 8L+ @;!N'a+#6V? w,f. $-ȽUJ #P0#%W=&˲#;M.  M("5羞+   5We     16A-(=1"/H1!" %,26-( $+U\U "463RX5[pz<e+F_x`''"f4r*Sz~a?$  cghgB, -|x,*D]vyw^qcC:IQJ42(괮a3.ʶ@HX6'~7OboA. 0: ?9ب^t!g9I1/h~ 9Wok[7 IDAT  &#0C Ŀ.*6  (')$#' >LS J=5QFC (%"8;+67G* LQ\rj :jjUM  -g- 8>AH"3Z0NjUEzzuD(`)l) иc3x[; u)v<<_IsotV{@! )+   .OglS3 ?c?Xͺqee ;'/5EMS1'-ȹPI@ =;C#+ &"   !#  52    ֟n :Zl:Z >j>jAyyG%KuKʖZ9)Gp\> Y瀅uTF !S}z& Ra@ynD&.NeA,57! =ް -= IDATݱnK! ̨:?<).0   &  8CC A@B  OME-%=*.#," ;;=$   xAUB|c/\Z #Fx/Y # 7v)"He!Huv ]A [)HV2 :xWQ&2Qi, ͢tzc!9al x'1UTKP_]  %38I9' *+=!)7K>-TM>î     NGǯ 7& &  IDAT1܍& "BWfB)EdEd<I #kk;+__ !+4KG60AJ>EF%)//+  .0/7$  XNC ?94JFD*#  $  G|q> IDAT '! AA@,18?9/˲2!#)=N 6$:MO';9 D(--     *)% ! .21KQN )1dh2,S*m%=df  /-++27 $ U^a(09'?=21%%'$ F5' &'  !(&!()    E IDATuJ~s2 &X,mchXŧ)TO. =4     /)!#5FEAFUX*16%+./01#Ƶ.7 3"4>F  $ %1;5% -+)?NV'ۖ##        ѭ%Uh>6dphArv$lz^8 uj]-  #""'"   UdL0"tc{T~J ~c\9E+jwB~^p7kɖm zSM+ ӾLZ:E'1=4#)' zGrY(]d-|mZ  qH# IDAT(16=/;:4GB7ȹ $\Q1   #  $     /Yv]18`rn1Φ@}Jju ]RÔ5 UQkش!IsX+ *00}kd=^6Tj)j_*Khzt^5 Ǧ4\rF#d"H& >q( ,) իh<   6Pq+'rWlq. }'H.~ mw*,AS1GsfI+ Ua%& ! #\T! Þo6sU甐D4ޡj` -/. 651  %'-=;* /1-$ @@,!#*.2g^м >KQ !,ſȽ      G|)VV̸fHX{I% 6_[> ;1Xd1 6n+ ूq4_bB U?_y$ȞY" >ۃ&-`z×r$29@D@=:5$߽Puy<  Ć]_8`}uF93 %VR է*:@ $'& :B' "K!XT(ֽ&'!F-ͰD\B[3E# 3@V/OAC +- #>w) 10r}uu11d]_c6  v IDAT&eAޏ`Y-Q9?XW-46 /1/ (:7-%"/;AB7'$ >JN'8< (  SJQ1 ǻ{ʽ" tklv!`~O"$ # )>[X+ ӵw 묤,O}rS"h_Zlپ!-Bmi3 Ё|/zJV?zоdg$K^_E'%--ͣz}edq~{slnvaS`c@;28@V(-]>&K4@ KOH@BPSZmWB# "-5<ї t=)=rѓMpt pд/ $xĮ:21;;;???BA?IZw+>|!*% 4rS1   0[;[ހ粼 + ̰}袧죛۹y ;??8;=4/$#'%+16XYZRI@.4>lkia_[0-,PXW)&GB;#&,134% #ʻ WYNǻ      H{j˖yrpdciv   (-*//  :wb'x IDATS %p '@RbnJ͙iMI|/4.)Ta=EkI98Ru1!WekhaRKNbs{a)  7[hcWH/rlclˑS·7[z' $cR=>!%0 Z70"}vF1hο)i0ra\U7]S Gba /nڶ]~šÌq̭dt~Ģ͞'5Lx{|rrrkkkdef^RD #'7v|y~ױbexbWeǻurf0/-ͻVNHAA?KT^кH;/!!'I[ka~[  2+(,֏f[ ʕPs윁@<HPsZ n䑂kj䑈ޏ鸿겺켹,\o  nm{ 698/35A>< -)$ %1(MZZ8DJ!       :l:޾IfmtL~/-]l15  AS_AK-)ѷ9R4xʅG 2 (5U!:)" |R<' h( f\:eA?& *~o4#Lfeš!nAX,ceBio?î#X06uR4 M_E$_I4mD($EJ#  o@" պnRG5&=d*U3 *<-ZlZj- <WlP.y =P/O!  =G X>F>u- =`q8 6\h gᠰ Oe. &4Aȗu {@,>* -86J6̬/=s F>,Kd}1 ܾ# INL)A:eLt6 I4ITy'5 169$8#+M= )wD5^7QHG3>9s>d}& !<~~Ѻ MNSN B`4~q=175    %$!):;'.      3Z|($-/- *Sz 7/C W#IZzj~Yt 1]2/xi  5tc5.Df<̹"h`D&$K~{A+`UY d([1WE*>&\M`:7B2    Oeh5 =K1cI >{{V{SkGЪ -<#  ;==W&ir;##%k13 0I"qn#%HQI= 6@ %< >[W8ALPa\ )! /6اT3*>׃LQ#xg阋8W  d`Yu!*: IDAT $*B0WZ .    )=H).\wNg5Y*8X8XDY II)UU.UU0}  6| ٸ7TpN  "#6X+'YM[̤hq|3EZLnER+  @4&v\8zzY|oE'+1)eJ'/>;#DcX~ η  -365@/ 9:5$os{  mQ䏄6R-ݘ-JG*˽磟M-落 ;d do!5|/Q)뺹n^Ie%tZ!Y  ,!    G|ܽu %D`uhQ)  ,SST#rb  (0*Ao"%ǹ)G=ə.ppO370l)AVj7  ""$%@+hd !-Z  MN IDAT._BPEə1  k}s]dK&i{e]ef aw.'5I,^@ vZZ?ϯ )RyIfrs]RN )'8JXPkiig$d2# c -H1sQq*~%/)8e00 z\4j?5:31$vbBd9q\ "nY^%Z]t&"I&ʹEC5749$?   ]& =F 0:db_RJ^   !AdW $/!+ !>K!FF+UUXX;'v;'&b&$2!$2 pBpB&M666Njk{^g- 9 hX({ */*"{T`7?3& 81sdY:pzruF;(7Ry [B*aa7)b/]#ؾj`j i0Gbe aeaf/B" &SX)  ->rr 'D#3QU(kP#qm   6D 6K& ,1 Mm5=Vp ta` /WYw $0 7]-p^ gl'}&"  RJgVw!ZG'  琇ݙĽ;e0v̫.  *=- B1IES~5bYH   ›(< +3 ,GG$mrɹ%B+Q=w暯*A2 } }Nn7On*axcx 2Q06Spys|B pT IDAT     [aTd8Td E}EA]똂ؕrv h ,. BtR)    CkEc IDATi>k(A+0 56h  $       G|! IDAT    ITYTK=/46,$ 7/ IDAT !""#$$    2680  40(RY\ H=,VK?        'K IDAT )%!$2=J@7$. &% :H9         4@G$¾ 8:8ŷ  @GM-AMR7BJB/#$"4,% +35     -7< %09?4* BJJ kse>50 Nn IDAT#,POFBED $(#6*(YUL#'. !#!ɺ+7;-ӫ 4*..255   (T_L !(+1)+%253  ).),/-PSW+IMH˿&,1'&% >B &+)1B   ".HA6 $7+@DE  ݷ Ǻ2>65/ :;2 D/PNV?;@  %)$=6;%% -;@' ɷ90J'2] IDAT  G| -/+$)/H=%330"Ľ ('+')A?)/)<>=-'.(J'D:, (2;NI7   ̺OV=>0 ,1* !!:24G=6.NRPм I]g8Vx IDAT')&&" 49855)01/-  *  <71Ž(./ǿ,   3+  3.&2=@+! ><+@F7+"0  '6   Ļ +7!'=P)ͼ,QJ4" ')) :80)3?OB27@B 2#  "$4F\ZJʾ!(0  8CJ  537")+  +4,  ,($ %.$:6$&&諾AEA *==.    %FIQ@JF˼!' ɿ IDAT '. ! 52)  AEG )&% #"* ½ !BFI$/:E<02BJ/+ ")) !*,?IE3K+  =KP  */0$23($"  3  &)"    =EH8+#dz  *+2 ,2:" NFE +A:&""')  %ù7?3 HNA $1>B  cgQª o IDAT ,- 253 (=1+24$ W[Y ĸ"('"!#& (- *&&%+30*;558) &FKG) %D/ '$  G| nt =mH) (3Ϻ OTR!# 9<>(-)9AE"+Y]?HQ8BI:."*" .(#!027(%#--2 ($AOF$-, "   ZG%I?*K Dzz}Mdӹ<@(fJk 3lW3 鰂vn~c3  ˿ IDAT& %((/5!*0, Zab"$& 10)  A2 ! +   + *=>B 2 85 >JS3+?'&! ʾ      'G3$,+ !4+  lVXڃ!@jjܥwbW<7-,#  >;4(2>C;0 !*.&-*#<:8 $($ǹƼ=-6HH #ceO  D:1Ǹ'  ٲֿ    ,10x2HY %4Ѳ 3Rfur_;}}!=_Vir+F`x\/ ~/bZHW+Μv2RrV'wrT &kA޾&8FKF8 ! IDAT# %+(!%"   %-3,*!&8@ETD0 BJF GMDª/69&   #-''!.    0A9d$+ž *RQ  89;       8$D6۸PM(xic: ӝvpzT{@@ZN, ͯɉGNblnUd:u[zUU8$C$m2P$_ms7 ߮j>SZG_n3P^i4Q\W*  " ްpWvGU2kw{V#eKqGcO 3Zuxc<^<1ʓT ы=45B`w"7Fg}i>\zIu|@&7-   n IDAT    *31iv-7 &5TŤлTX+̑f+ Hm.H'qH'(f|Kld.,:\d)鵹,.J^:n^>=35Zw *, ""4DI?7RØzl8E}G TH̒be%,.i8*sxLpHU$3{BI{@-lna\i% ؜'ǙܔRGAMeIy&Φ|gCFŻa   ?FH 1"*'>=A2!'60..)(Ͼ-7.+  $&=EF8;:N'$[YRBIM    9$źN;!zQ%)+!5PmE*5,0/0 ' O! ,wB-26-G4#NC,99$82TlNzOOn/Ae$?eQλñ% >u\/   G|&3>g&<25 2cjN D  ,i";q_ 5eÊXSˎ`l);. ) C-;Ȯ 4"+CcOjNϳ' NrWtؼ +TJ͖ų5G2/XM ֔  !6׺  *in1lt?`qQ jb*zֲ^jZLS|GT>|ܿ:e/),,Jc௨ IDAT _~] 763 ̻r׭Y]rɥQgkVJ   !21- #'ÿż     %9J0#B92/Z ~_6(Dat< Jov{R$~mzX0 F~W 7gRKvrqL= 5uyM Iwqxn /,@G283H=  *c{Ntkd#xMG[qyb)1qx7̸$]\ɦ I{;  :sGQQt`HInI HwT.Tt~hl- n(8M %9ifUIEj7#Iin( go&xEIQ[]a$ {g@-H4!   ܶ24xD.UtáJ=7534:3G}yY !(~L:/X>9@!{BBl%  SjϹ.,<SgyS=) F[pƒ "3OưI<5ELZgWJ<>Ewkfwn`VXgϴridekqɮxqow~ιþ?KR/  ۱/[XXKVZT"          +  $.$05.>?$8{C*q;>Ŏ1I{H$ֹf`m'9L*iy f~lN]X['>S#  Z:JmidE~&8G%e%IृTlHˡIk o*jΓ]TR1BQ]~4Wԭ# ǫsu m^G0ykhڣQ+|{xLamnWDõ6羥Ang;"е %cnm$,p IDAT        ©{`aGxs77QWS2 '/0/0.+$*2+&.   1#H0!3ȶi^`U~)`hIΧ伫,aR*1% *&$%"86 '8)1F@4/eoSD?2ITk+11/..///111/.'TPE)0:NQF i_W8;EjZP/4EXhQ 6;AIE; 5]vjjsz|pU V~rl|,,9%|mq$"/@XiH(=bA`Zɶ)`(& XI<]ti ;}mKBzxHfby3W  O`jK ~DR%* A_=A m[=JcN /' 1)Nw׾9. [2Z4#BTUm_ڪ^:@NHqIsʸ.M%M<\wA j6L >dR  %MY;7X'Y=d'9+ Lh  #D@'B?+ $ 6l=13&uWY*fP@\8Ѿ]~kZQO*'H|A#        G| &K`&IezI|XQDW 0&$0ިUmgle%Skn;؝ 8O9 gC *O{`*8 m?1Dƻ"ЭIU 1´ ,Pg N8&Ce,aO,3MZB!L cVe/sX?^ @93`2o$-]knW  &*QUVTU (3D8 n'+]b&$6\q- Hazс{%p}{6&=  .F9   {g(/6#F-NH#1X- "5#      $ IDATF8 l:P۹-$%4N(~AYQ:J#]\8zrZ>ASFK      '­!=bũ  #ESEƭ29@ $ '(ϰ $7Sq ׮ JME7>:ӿ+=   HGILLMKGH>7!j`3h]> @}~~|{|`N+$44  Q6)8ذq   Щ˝HHA5  >pKii<&4M<]  1# ?H 3xIt@!AvZff%0E4H>Cm{N>$'L3ME ҭ"Ķ-!"*6VR3&*4Y&=*H<>o8VSQH+{_OOXh lnSsNROs~&?,zs 3R; {y{7M4BFB LTU Ϩ _nbRO`jK=+(8?AIJ.:) AOV 6:C֧Q;7џ@. 6cE59bn@ -G$xf26;鴓I))iJ> T?/2;.*_O,ұ*"      dz/ Dz%"8+° = IDAT  ظI+?@&y`4T6)2$ (.   \\?3>xOx$D*D*;R6;R\N\N(R:: ]]T|S{F7phҵ?cG-/::RjL ?   '  RP d>W@Uo'B0/* i JMj~OiSJ<{}2<+[aN ZUB.EN!1[L!  L^d$ NYS8Ki_Ҳ,jxv2O{`uS.#jV=~NE% !5iusXss:"Ǵ-<32"gZV_?n}  \b^bQhyG/ CT+ 76=+QK5siZ]t7PmcP*@bYF)Xc}b-Ij^XN.]"7LOb[ + 1MrI!=Ƕ"QJK2#",[H859286:<@D+jOeƨUnlNi6>991 pybzh }IQjr_yY^9bx3   K]l kFyDzJ"3'F܌,it vb)R U{t0xB] 4Hpa%fKhCok?q (`~5 XV>5YSQ& Pmz`bcƫd~:>6p2G(a15Ds\+cpN]D^}^   D$BzH   IDAT      D3[,"* 9<9 "   |vqepx h7;G>y>xKk(lv/Mey}T)ʥz})Xh3 ލNS8n; QB-5  (JfuiR-*^\)Lj~#te,  8v͝NJIJW4oK$bTrS3ޟ<?H,-' &5)  "/'2>6L.>D V_c_Ydq7FfVC}EuN    ϛ'Ao5" $'ϰsv $At"-J#.  V7cEi AnNk7LVYriX^͞ixlQy>Ql Ojp\eh7_Q*Eɵ;a5~Sa0      'Gu;Q: YPp۹av@5˵á-xB ˫s7|jD# vq %Jo]2tGz,=*Ao, EY'Kn"O? /tH|]_ ěwru IDAT{8iDu8#3''pKp -!6PU; no5ekI$ @$0NR G|-\U6>OE+QK13HG3r|G)#1Plz}A<cxyM0.LzyXF& TlYQUlO Ҹ$\tK*jmC (%Ezu-֗.OWFY|]" cB .nǭgʆ[is\p] OْsuU`1.*9:(H7LJa[ץrl}3y CD6\ٽ?     7z IDAT 0 ' !E ?tZβGqe&ٓZnN( }U4$%$".ceD *Zp4*GL5&9UW.7D5)b~d4 >[tZBZG7GO'h4{4 JB393+"  9d`w9VL)ia]i1   RWT/*" CHH$)-!    /.+  )WvfO-ksM%DZli^)"CaW+ws:,8d\#o`b>,.PlP$7OqmwwbB49ptdI1dDx'`!ݸ?|4+YS7( ˳ȱ #38$ ,W[zLA 4(b(@  exC]ciEy<k)e2kSo{>Ok@B,65'7yB}1) IDAT  &  NTU B:-+5)MSR$#̹-.$˺   ,'rb `I9h: (,))Lo!:"PO\+Gx 60O,5+ !S?h-6UNE0$ :gwn.!lXxLG.㷓"A2ŏx&=e8$ ".4Aa5 E[5Jylze;(8X   \mgG$ 7Ri%ܩR.Lq%0Yw|f*.QbQ$$  *.-%!*HQW$ õbgN  &-!/3284  C IDATGWf drD }1qwd6kTȭa:w)?ZSQ& Pmz`bc.#$6?*AB=+  %'0H  ·-DD1,I< ISQƻTMA7;/9DK9DL;50ʼ(@G1FD.     |vqepx G|.e# -Wt Ɍr7m[ ,ý*-@@<"^hgķ:3&,05.@M  3@A ),)   ߊ^ IDAT* 342 &!'1 RRF   #$ #+7L=]6CG3(1.  '$, ǽ-!),#95#3; + PR?IIN =?&#Ѻ0$ )Wo) NN IDAT"Y_a20)(    E*14889DIM41.     CKJ"I  ;AA ·ÿ  #    n IDAT,11231:>   'XoQ}:Gks[_BrZӊAGdiȻ  zO H IDATؖpq+O^7 )T/,٪vBF ٸ[kRz2+GQ$ 222...   G| Q|z, ڱ#9K\da:-32\jdP8 !4TVѠ?]kU/ й+@NNC1޲@FBefCڼ />EE1  *;?1 Խ 4俱$.7/ "-1$(.(  " #'  /p:     {= IDAT   ݩcKq-frXɯ`IԼ~VbUDLY3.nw-ԕlKMG՛zz ;lsq#FK(~ځnI۬9:@8Cȋcm.' qKw{y ˩g3ZN7׽wg1 $E//|  Z{>Hd+h]&!i6R:E61[F_?/]k:y^bP~oV(mYx { 1^wIɣa]*J#,k}BBB   }* !q*DKC-UjIy&08OnwZ%&TluVI8ivTel KC~ht6:j; =^loL(qAˊ: ߶|nyIG9HyH҃ 8JlMT)@\-,jr^i ٨VtP*ޫa8ZhLӄ1 >tP& 3jsq'TiXփ?0 ;Z~Ey2&_*Io,Hp) !XXɔS`Qq%aa('⩀jWxO%쿇QMQk"X 3|%NOyc IDAT   \d%  !'x8 .;"& & .:%  3G;76/;%QI4! N$29,4**#/  *IH<-'YlGjC1 *?XP&4),4)' ! q) 5\aH1 Jyx=jXV.D?@% :G(     } IDAT.58/     V=  ×hr2WXVHغ       !9!_ND, %A.<.:D: " +>~zM  '&>yk IDAT        *a}Tmra{Q̰#Ql( %;]]elrq> IxI@ 4zWaUM lC 3pd$  BZN4iA~wiF ʎt%ű3C I^I"u$b2l|pB         G|D`]V2Wfݷ1pR +F: Hws.ܥ\h1 *<>4 S͵{!ףpp|-@?jB<>?Nn-Z3+8Lg%*%#-, ()"+gFmSRus< ! !  )[tfe5 "7XL)%(Bua] %gV# 7,  &Sy5xƀA18h }0   BMw IDAT %=M        ;KWYSQ& Pmz`bcUUU   >ct㼛      "    |vqepx K IDAT ".  #0HX                   >$ : غ,/bI<;ȏ6ԧ gG5f  E;Xs Rt]D5 [,Fv߽23XG,1 (A%9      hw IDAT *9"/=$1A)3  3G6I]%9Q5BI-.D["'-     g6~ 3AyrubM+Aq u|w> oc~(q—  2B:TC(ɶ 0s6/+(*)Uh ?wW~|.^bF?|u C^( ЕO`կr} $,HECBZjqrK ]4 4ļ9u1J`QWXSQͩ(((KS+%Mu^   # .    6". #;'=  2$;*+A4I\ )2R/8K       v|1Ld1 °6w+2 ɱ P.1(  %,)*/N{ ,11 6) 6$ (/3%;2&=+̾7]GLXR/M~FV1 0MA-ĸ 0?D,ʪ$.>:2! ,6@4*H>*ȵ,@;"κ5GK3̵% >KM%/4E ڿ-NiU6&T IDAT߽ E[c #/+P-S`f0 ǤT#* Umu& /8^VO)8TcS8ɼ F`@M;y(J6;~(%M`XwhJ11\o/u1V5       1 -      %?3CL  -7" '   MKif`SlH0iM!QH**K:Z,Ő76z?>;ʯhelUNSү:5!ϳa]gzzƬXaxsgm-wkly|listu&F*#51(;5nWeuŶknõwxk˧̷eh{ievx}~uvvϨzɯwvcb>)G" G=&  #    w|iaݼmv%k]r $ y{ %&'*** Ӯ)/,ӷ  OP9 N[1>DtJl'&2;o81!'4VX#      #;(@  $     %,!7&#9 )F2T$9&  $" ( #       # '#$.AQʶ     G| IDAT W<`%a].0$5% #=*b 7I^9#' c7 YkYj2<?ni>~Y 5 LeymPܱ*E{_) Gcx`Hr~Y! 8WxP/?QSBSTBTk_gYSCO,,AVqEu{zI8V:&-V)kn!"-,^o\ v66vg6Jrg=&7    d~=!;~v= -txz;9^k; )|^TrE4A\A*Epī 7~{7 pr3 :56(6jf_on 4no,ܿy'ʱ jeXL (Bj&"z%Z^'d)Qd7J1^qZ@#.Bm-AM OO# 1zA_Hoh  )8<M  #    4  ,)      ɵ -:+8*3      !   -?+ &%V A&K3Io;1L^Z #:AˑMG wTDX,u!QA9P`zEMssegB[E)0G 38:) L0-KZ\qrp$ 0L$  (:# =*:$   (>,#tH.KkwK'3mrxd[D hUJtH, ,")#=Y0-ltyqp_ŪId?*8i%T X!] Ȣ6'   ( $ *C,  6   1 ". ".     +$8 ! е         o` IDAT  zYb#   {f|yf  #ϼsa>1 mK@ Cg kO= 8U  v>*/ Br\5oN8Fl^<>8h$ !qʤ{)(Hozuwnګj   XsſJv4< # # !    ! #  ׽Һٿ             *+)7  =ipM<7&e$jwMBMG5/œx\I^XU   }b!1AOoC%  2#gq ۹k.::  GTh(s_sDA' 5)ıTr]J $ j^]  IDAT    1  #5  ) ׻            lx$>|EWV”Of0 >Z3O{n^ť !:)[+ ׮l͡2MZP@6 D>}K͵:wG OdNN4#׻X H ɥP ؟$:  >+ 03/ϯ:k=c\lY*:4 ߧP "޼*>$ʭ0龏90! 22,5/<w57,홫'GZ\ h-pJ$:#  )QNڻ/Q(l%+#S>ݺ0U$ ٩ LOP=%5"ͻjTW<7S7 yt`¯N>=96S)& )E\ep2fQQW]j|TZbdkvغqrt,DCK!x{[zhls0MiG.6D{gAxxhfh) *2m+ +N[/  >)GR&7TX dj,;UZ*wNcj?q?$EE@ *PfyQ (!  90>u%Bjm!Lays`M96< 13?E'E@=+* kT~4B@ EE"?7۽0^@3N-$C>CI3 $+  + ׾ ؽ   !(4'177      2?K YSQ& Pmz`bcUUU=+kdX(uQ,fObP  ڰ>J-oD=&wmL0zP@ Tz]=  rPz:կyƣmoK+-I  ;Tq9˥4P) j1#zJ% g0$uD!p8ihJ&V9?PV0?7SM}J=bS'nB7;R7"`n'һ|   '" %$##CKUټHIQ!   ! OJ>ȸ        + ]J IDAT|vqepx /   ȩ}sykզ:!,02:48           +5f xNeU}h _=\l&Mo N\c,0@XR B_lD. \SE$J0 )e]`S-̬ 0ѯ)?Z\4ae&NQ%dim IDAT  .   ((&;GG-./&5>&--2,KRG4?F7( 61/  (&##%   !       [aii:pl lwyX]Q 4aa 7B!!'   % '/- 'N !,>50$ OND "!%  6- NTV! ü &F:,IRQ4*"637$'$   &3)$4$8>?,/ 8=@       )E IDAT  !% '+1:)  # *4 341 $*/  "&@"  =J  9.. .3;LHκ     .#mpLɒ<cL?}l61(#)Aɪ@VzçlEJKNxfٛv0%I%;*R-  $!<    /)"#*, ,'! #'%37?]^^^]T.*# # $*% !# CMOD;4 @?E(/     "  0 ۰ IDAThH;` 3kE٢BJ РPN>R3"" )-- %1!&5.ña[ BDC '.D=7V]R ۺ&{} 7spM۴ G_i {|qo  M[e@1ɮbpx=$+@       $撆3!|s ӧ֟&w݀np ܅htB-    /I] st:   "   %   =X_Y þ#$=1( 4>:=>=-110H@6  &#   3] IDAT s Um9.5.2J8'6a:+E#6ZWB-cv]%%!(lΡQeȐ&4]ZhFODLe8'zr`BA?@=BlwQkշ/5`YXWZZZhsDB!sI9Llջ`Zbsn{ɯRcӷWWo 9yuk ~  "  (+,10- ֺek#@K<'gUbʶ&21 +">1  ւ  ݫ | ؀!&݂]q(f~?E  ;6$ Kb5϶  2   06 & 3 &  $  ǿúskr   9]JP<kL4 6bT/~̢O^3twͺ7tUlD% дvYE0 WVQ#$,jx   Ts5L _:he1;%Eͽ12 .=26n;Yu$/>d IDAT   8& '" )       !"!07+ 7~b؂&}1 m_FT0E! W`kϽx`Pr^:%=e- 6I.Doz%6[A (mhr- ,;k^?~vm~(18[P3i_^_`6[vs^ !9AJE?Cdєt2vW8.@SaFSbBC8W<&CZs|O  * &mX-*XYOﭻ6:6404ߴ!#   ٭ۺ    (+)  +14 650&,-  N +mhRP 9emYdu.MsL(~h~(  +_~F !̘ IDATz|^?/U6 ]Ȩ    BI®- ŷmyARM( *=#(D/'(DFGMN *LW-Ei:sP8bn$1, W];ʽ 7."a|{![<_Ӛ[ )C'9( Tk3t   773 (89' $  (4:61# +#=J- 0AMO$1  WF?ϾIjARo5 $7`{õAqi`i         + ž!9+۾"3EHC+5QQ0ɗgxRθ0R]*& )AU]SA"/Mcp\6̾ &^9PK2d{     # "PuB$[ ľ+Brml WQ8S29  ZYX >jG61k]Yxh8 "! '4~:njaP[e  &* Y8$FJ J` ՝l\@  碓,J  "Զ 面DR  86'#)).%491(",>81-0&@FD ¹  E<@I3 6<@ %&$"*,"  -^ IDAT.05/ (59( "13221& -,//."ѣ@+:Q뱿M-HVlX,#$Bq9008[wQ/a<>@?GSkfNb@ }huˍ^Ys̫rx㮌y~o !4KD!忥SCd0?B3ۙOLn :QT?^Pܺknrtttssssssrrqnkv д9נ xa^šܽDA#  NE1ÑaQ2  ѿ0"ï.[<) +0 Ķ/QY =@H 68<ŞiI8{!rQOay vmH[lK30R:q & )UFtZw#6,޽ķ̽ K[^j{vy"3, E# " G7z׀(姺,_S,Eyqbfϰ-A!*/`hf1%  !).(050,#    +-,#"# ľ)& 389   %,0!"$%""$%  !   #Z6RAi[o(1M q83&-,ǁjec3ƉQ #}*DG{x [y8<=B ҹEU$͌HnEχ7רkpH?h.^g?rN  YS  *=*ճq| ϧp' t:˔MN 6psX 6^r#17Ds>;)+-AXP~?@4.x q}kay~F63%P."Q&ptfbFYx4 !"uF*>s_*[AR&;p̷;e}l?aw[//Js;G& $K$1J\[8%   )CM\VVgx~]pAQ'A 8e1@?&+Ao\`?kNd}L6@L&>Xv! lxv[j!+xuQf-Ǘb-Tsdq>eX ?@SXxc 6=>cwgsT(9 c~}pgm,:Rwe'Hz t+8(0Izcц4K)CH + t} 4 t|h 9*; *1K૪.) & * )_r, 3,06 M`/(F 2 cu   cJ,L2 IDAT %# ) JMEͷ    *($'3-+ <9:MRV HI@ EJS")0,NG;RNF  %<?2"  A#  .02,;582", '$+     +P5λ ( JE$7 @/ eNd?I@D8@O#N\2x8-+t{ ),7:$3O>E Q3.La>x]L(馑[=޽"iS( N .B  *=X[ 9+D`)K "/3O gd* :iHXW(Icg'2qqt2Joq";"cJ)GSI(2!]t]t8I]>+ z,B(?u-B&1"f1 HEAC AE5:8  ,/ʣ*a`6 4<>$''"$Ͽ*&4AL@5 #!/+ FJC%##&% )$'$ <(8!'300"IT?'3=!  $&!  +-'"'$3  %!?B  :iQ@*zd)$H@nz5  (K?AvA&+#  Ar: )ViT1R:Cnvc9A# @E)IvK #,3+  !=<6  ELP-@N'03(D9+ ?2&;93 30).)& !(;I'ú%08ɺ'.  4C7:թ=3(;3//66  +*# ( 3,/ PWT;" "  2B((       _y IDATja;Ns=|"__ E?M]Yp]^NzMrV/J?B 6CIE-oB.zd__Or]7:UqiL*e_'|f9Y HN8 G]Th[F3#T`gO3Mhi~p1#Ej  fga}%JL%3  8=>     )+24<+:G4 A#,,=B&  &3 57/ C+$ WU$  1JK ""&;A %,*,+ 34; A8+  .-+"+2# \wKu&B.Bc#    !-4# %N} zaFUi]2Iƶ;-@Q?5`uoXRվ?WU ;H6 \'#B0@4'J#F @)26 www̿+C. $-^`W  ř yuY収+Q %pM |,kMi1ǏGdҭ8-23,$" (:<<(($20/-׳560" !5CKA?E@A=  @?3)'+ &ܬ٩ &0d IDAT'      K<66  DU  7eK[K>H=Kf JXJM!* Y_Y 0'('' &EuEug4\4\NzN 1^^5Qf5Q'BS'B *M;,۹ xdD j Ko]DԤYl' رrV}˥ /02 +%fiKD.!.BH  %P]W ph5C  fت (=* =m["b;*0!!"NH2, $5 ?>< KPM  %&"Q]aH@@ 7C1.    Ǿɿƻʿ *3       $  .'ʕ2=7#<`[F\5K6b;  'Z\_&wgEߴ 'VTM *QM5}b;ǣgo,Quy_ ѽm3-!mjNXj *GR8CK% Ϭ SO2  _z.BvaM IDAT"   Yz`u[7   !-880  3 ,($#;2&  80ǻ              ~6*>>?^RERy@D8޸o Yk }{, #,K犣$$S=-q0}珒w5ȴ37 YPim  #%           spHo}-# T8$  qRs"k l /gZxҹ[O_]i-|wE×qQInPCFݲFDWYk: ޾_AJ:U98h/a*Ͻ ,H&-63uNt_A}bt]A#!>>?ym=Ó?ܿ'Ī~˭#iؾ<$fIFQD 4^B4_jJH3200   WK IDAT       ͼg9 rɦȽ=%{\Y  ӽI`O6ʫ * Ǿ)C|}xlg!  2Z\]Z[\RLM?6:`ɩ 8WX# db:~5׵r|/ %6w\7/4'ŗ      YZ<umׯ>,;    禸<=Ӵ>L#    ;C-ѷˉkͷ&ï#/=zD& _ IDAT2.)ڵEF.!VE."00(   )رJMC؞~H-*R?ضu:|`~dldZc ˸ǰkmahffjig`9#DXdDVWXVX_ 3DGwFDCp":P3 3$#3>T {__!""msW! MH=hJ8"ʶ)Wֹ  6j-e~iw #   !露 XEPh/5=|fw0 hw6] DLW. vffX.Q2 l$,ImR |B72I[fZD6$6KlE. C( .@]]__6?FP\X ZjwynLb6I">J>;4R^c&)<a;[4^z:Q(+ yT`19%)(03"8Or&K -pj ZuUq1Ccb lo UM<RQCC*G77?&B5 % z' @_5B_=I       #8 IDAT2>TkN3DXE "9VXC4Ch 7Zm   %0 $dp! \}7" :R ',( 3_rTuiN (F]P   :hD\W\$ %X' " C< f3p IDAT     -]qW.lM 7k+ 6^zOk@9A   "      c&D\E\2Z6)6! IDAT    "     #0<2-(   "!2-'  652 #$%2@KAB; )@MO)(!     (]] IDAT1# 776 2:9 :AI 5232+ 7?B;%ɿ") .1+1CFA:%/(        - @BA '% -/-*1#  &LG@ #'(79? ƻ  C;ED+JMK˸-+.4+CJI /1&   ?g IDAT'- 0-&0* )P/,+ ,44 ".7>0%ſJC5#$ ;$OBT̻¹!'5    '     6:0#,-!'      F IDAT     !*B1͸  /3;1' %$  !(#м ?IK 11*66=FNDBE(Թ @6=:"%& -!%          õ2A8      .      8NTP (0=203=7fg!>10 '\[MRP80%)  HC:((  *6D! ³ʶ % ų    IDATjj=nJ嘦5vkf{}4    )    :&98,(*  '  0% %+3,&+3_ko!  ''#L/M( u ;W9x1A$hZh8 G,   IDAT$! %   +   Ž    u &rSq+"0\K/ 4"]I^>B̸ 6P]ZA% qn!{n/uLY$p} P>n},QT4 8rX`,>n{       I<D?JYaLf$"rPlǯ GWT9 2 Wg3A 2 1-zy5J*{=n;&FS{˕i!:)oGl9)+1gOĬTZ*24/0q\vX4:J ~QQj)D|dQL$ 0kmzT9wˢelQ̻  Kqq< NfFw1 IDAT                 8D ؾeQQ\߸ F\v~88 Ye X@ٕt 77li^4nKfy) #I)"6J*2 DiE   @wF0E4RF tdž5  C+(Je07]m2Z2[MGN;~o          REX AC\e  03*eJO@U] IDATƹ8--7p/=>BdeZKֹyگq*6o-8ipL &9R$b!J\_ 2Yw@c<&)%+7HYZL0  -HI)      x5'*   )  - 7 *"ԥTd0DY4 .:-ѯpPc ]i9ӱ1a`= ōor  Q IDAT     Gu4F@#M# ˝U{@A94 .^}h8"]V*ĐJo]}<  /92DW% ȭ !6A5ʔv1w4 L    HFY7;2SJ ڞϴB" V]x #/]G  !A{t{'''   xwisVt(, 49$qR2^O1+ De8%">,w&&&{A+< "*Y  #NQQ_j_2V{2VA/]v/*FY*#2C#2 #[ IDATiii       MAMA)=!p!pOKGk<1#Y1>0>鲳i;  0 ñ AqR u!M5  >>444222MMMMMM111===]]]EEE)))YYY  $"#   '>  )/4          ,,,GGG+++888---///LLLYYY :::****** /  ".*   %  So IDAT #  ,H !/67 6;8 .:8(15' MTX  GLL,(%,:C;, .5 NRQ3F8',>NG6(# YQH µ"06     EEE777DDD(((ttt\\\JJJ]]]CCC+++DDDQQQ1' :20A/7 2;% 73;    ڼ,KLH.,,9:6!LI@$! #:>>!(+"+ /-&!&$$$### &. +$   % %!&%     %%%BBB222GGGaaarrrkkk?4 IDATGGG<<<777==<DDD     #  %?D6  )9B 5 )62 6"  '12 "( 6        hhh^^^BBB///GGGyyDDD    *,(D  9  *2 "$$%%&%"!       W  IDAT  TTQ9           4 ')  +! '< $<$[`Y <@='/HJ;N0ȹ905EDED<"7Pc&+?;@)35) DEG %H<"DCG     xxxAAAtttZZZqqq!!!bD$#! $  0      &, #   # " ĸϾ ܭ    tO IDATttt((( |||qqq)))  Ǟ    NNN))) 111 <<<wwwtttGGGۉ IDAT       %#,9>) ÷///666 xxxSSmm''@@HH##vvv '       $% 1862ǵ'1D82*Ŵ#GD, %291"AA+ =F> 60 IDAT,,,DDDxxxGG2222{{""cc##222" 8?=*12!!&-  :<3ʽ'-WXL˱ (*5@- (.)3  ˽! >HK; ;;;___ZZZ ||mmNNhh444NNN 21-»  243 .# &! "C        &#! " -+% (,. vzO IDAT$! ;BE#/6+ 9>>!061 6@F'+C@8+CNTRQ."#)<>., 78&=H? ,8=0'#ŹCJJ)ºIII000999CCC,,,nnn!!!333FFF^^VV!!ssGGKKK  =/           ! !"&% $"  -02  .1. -)*-)')# 3*#.07  9>7 ""-?H9 +3+ ,6: 6:81?<>0Ŵ5MG8 &*, (05*Ѽ 9;I ˷/<6;ν9;F;CRǯ;EW ҸL^h8:Dܾ5EJ(;fYF  die ̳K8 FKD*@M2{0H^N7ĺfbT ˮ >O]@( )ٶ$8HXH3 ,!9AC$+0 2OQQ -'6AG>2 abX#@E;2EHH# CPR6>;=A9<62.;D<$#-9BAMMM%%% //66 IDAT ,9=4.+;:/  -)AGJ3A" ,;C7.% (L<5" 8A9#1QE7$PSJŷYcc!/;?MVU ɶ,5*ĵ"2@QB5"#TGEŸ*"./BJB2?KC5&QTP*SQM>IP7* 4(!%*+(-:DI@.)0<@0%#5*&$'-! $ +PHL'33  .'+ "&&( #-  #'&%  ( $%-+ &% $0 &-')&&+&ʹYB*1 PA+! cA13+ *>X?*  $ Sv$&ҹ$Q2%"Mg&'"%?H9.Th#(&# N5"! $&⻬68+ ׿4O8fgR uu@@hh 44'' *'  ..) #$,*$ & $$$ )''*( )%&#)'#    *'/42" !D %*'·  +%!  8?6 0><  "   ' 3-  θ 2L %$ 93E  ʹ& H\SC?1##&%4+&  %!%2  #'69DU8- 2 888"+;3., /M$ #'   7438-614  =<<  3(   $6  %-   $- ! _ $  $FQ2 )& !%  GH.Ų "*'  !0 ! $   ˹aU1 "")'$$..*$ &(%)+&-3XXSSAAuu #&  @B9"" ! "     '$ -47#!  9<;0+'!_g_  %271* CHD )362- ELH)0  AAF7-+993 2HO41% '*($,- #2DII  Kdj+-%?R]#N[[ ,DAG "6GCC'?4.+# !*+3 !:MKW-$#% +8R7.+%&!  $=PbS?Z[W+ PXTA>DTQF &CWpja0!(^]X**UZQ PemF4)CU\J0#=g\OS_h/5K[^RC ZbdD5' DQ^k^D&U^c$-Alg^/"N`k`N= C@7SNE '41C@80B7$668  5@D+$"Ҹ847'B6 -*&'(')' H>2 %$K'" ," !>2#&$H 0H*'H?@50!6#־&  6 >   - )/         $ѼƷǷͶ  п~uů  ƴ  7ǻ клиͷ  ĸ Ǽ@O\YSQ& Pmz`bcUUUGG??}}11\\\pyy}          &,-+'%   Z IDAT      $"&,  *< "/9H@3&:P@*QTHʾ|vqepx  EEww??44||^^IOR:/' %( ̾&)2B82     #  $ 333yyyooo 111RRRlllWWccWW;;22% IDATŹɼ   إzzzzzz^^^ &&&>>>lll}};;kkGG]]   '.-  ! 32&"'.        !    )'!$$$SSSUUUKKK !!!+++```^͏ IDATxxXXtt 21.  565$/  '.6 .45 $*& 8:8 5=BA4 +0.68!-  #)7    +++111 LLL!!! ||YYWW  <-  '   '.; x IDATYYYYYY +++222 XX88#1>>3- -=;0 ,)>EH0?$%3C:2$ "D<6!.95 #ID9IKBŻHPQ -8=:DH 7,Ƽ ?HHÿ.5(ż #E@9+)6?H"ſ "##45*ó'A=58AD@DD+'$)5:2%  NRT  EA9  ?87:1/"+7( (>;,7=;   "$4,'-06 (  <;6!# '4;0  3C@ +94$ ;>;",91,("+66+  &$,8"(6  ,+3  '-= '7$ &>?L,Ͽ#>94 38*:=5CCC???'''BBBlll}}""##||~ IDAT (# .-' "#-,$ % &" &%!,,% ).- #  ,)#-/, "&#"# !/3 0/1  ',-߾:5+.+" ,11-0.  %$ /.&'!*)ü < 795#+3%+$%.  3 35 *'  ,14277(,3$ )3   0+& /01>D; 44=$-/:)! '68" 3<#! %&*090('1)":=<#  >3< "&.5 -+-'-&5)# #9   -'* 1*- COU>@<GC= ===vvv555 iiiBBB>>> ..::::NNEE<"+/Ծ+0$  -22- DQM ο 5< - &+"   **0 *.-  .ED. ö(BO .+!*+- ,;J(# $-BMD 7IH #% #    -   ##  »,3=8EP RSV  ˵4N $!#%&#  C4I  B\` KTI l[/ 9(   ! # $й34  YYYNNN iiiiii###bbbHHHnnngggPPP8 IDATeeII33  RSJ 31!     ),)  LF9Ӻ $&   410% ++" 971  )ܭ&6 );=.'¯   3"$3   $$$ aaa}}}NN TTUUU}}}>@;&-)01BEB984 XSK1/+ #=?:AJJ3?E&2?:. &3D9*)KF9)  ACCCCA 0MC8+34 Z\OBPW2&)'$ &>=;?B=O^cI>2! (bib'0BMA4\d^ '8HK?4 Yb_*:G7,  "MQ[C50 HEF 0FM10% ($!$&(*8NOK*# bqoC5' JRO,&OSL'>B? $,3JI?+ #(4+%#.**3% '/6:8C IDATIII555 kkjj//))wwddƹ   &$ ǿ- $  0.  3& 266B6)  @(HD C6*;.̿&( 7Ϳ/)$"&* )!! ;E.μH2/Ѿ+=<3?/RAFVd***YSQ& Pmz`bcUUUlllqqq@@@ZZZ ddDDXX\\\pyy} DMM2(!L# IDAT GOR, KPLƿ&,.''-&  )   " 6AO |vqepx III+++SSS000666yynnMM    )25    ; IDAT    ò ,,,%%%___uu33EE      Y0 IDATSSSAAAFFFiill    OOOOOOGGGRRRcc&&kkzz   d IDAT    cc]]      MMIID IDAT     aadd   R IDATggrr  7799%%bb    E$ IDAT^^===   TT--|||h IDAT% QQiiPPP   QQ&. IDAThhii|||  7$ 4          kkgg$$$ PPPB= (%G&3(Q(3"@"E 70 /  -%" ' $ , #)42+ 27: &41,2=Eppf1 .DHIPC     IDATcc;;}}}/%   !!         %= DZ)05    3!   &$       @@**..~~~]]]ddd     *2 . % &հ62-:LWXNRO+;=Ϳ/9@,#NTX6;>,(%#74* '+&,,(" &%' ! IDAT!      *!      zzQQ444444    '    ) )!"'( 462 +.*(7<#," % "!$ (HDA(:9,6EPA/"BDG ŷ"28 8?A"&ʶ '8G)$¶,6FB2+)>9+#8>H"*4:9,7IH      ))LLo IDAT  7 ¹"&%!    !  #$    %!) $#"'*48,   xxx...|||oooWWhhLLLmmmmmm$ # &7 %, $# /9;  /+  !,@ &  $&!  ')-34$" #/1&#  ''.-,0 ',&     FF$$xK IDATE444@@;;##[[  '.'  ,  #NQ BFE).FI7EQ$ 3/.!#362N9HI" >>===$$$111222+++ wwll '/'1;) !.1* "( Ƴ      ]]]555%%%III>>**77+39-"/-&   -)';;?/&.=L "#672  .0C16< /Q IDAT         >>>,,,DDDrrr222 ss88 wwMM77'(*,"0 $, TJ:")*2 EQK W,,A,"C-+ $5;%        kkkkkkFFFAAA//UUoo HH44((..**BB=Q IDAT :;2:?M7LT @<^#"-)SYX %/3: PWX %5 19@ <=          ((..mm__yy䪩 +$0-(74:> !GGAAEB ú         `9 IDAT&&iizz          >>          .?G IDATDDWWUU        uu}}UU IIV IDAT         ssDD         IDATpp$$       &&]]zzvv      ~f IDAT== --LL        EE$$$[ IDAT        bbbzzz33))!!!---(((       JJJ{{{aapke IDATSS        TTT///BBBRR77       W IDAT$$$555CCCss** !!#$$%       ccc+++QQss==aa  0 IDAT     ///mmmRRR666NNNppAAjj       `` ee---666mmVVbbvX IDATccc QQQ>>> "   !!    8        PP++MMM***;;;33MMM ZZZ%* (-01111222.* %( !1' 2*$+ #   1&  5 4(-;9+2."0 #+      99  Ԟ IDATVVVVVVJJJ&&&ZZPPBBkkk...BBB@@@<<<%$        6- 4    ('" &@§2)5;/ &/4       AA..  '%')00221222.1+''% #$   %'    6 >IORPPGEA #-XXV219[\V(03$#   2=D*)&     ҡJ IDAT{{ss//ff $ &%$         )557" LPL 98.#7G#%5CJ*%0=@    *.   &.0+   ll??ff333 '&%(   VQ IDAT  3   !ӿ 6; (% þ0=) $" 19?%-46       88eeTTTmmm 000kkk  "&)   -     )%(:8 " ,    ).2  .<8Ƽɽ ʾ   hh  A:z IDATSSaa]]]rrr''' # !    !   7 -[^\&'       '''RRR888  KK11AASSS  !    Ь " ',, ,5?8FF *'   pkv IDATwwwJJJWWW ***iii$$$,,,  bbVV??        $* -7:    ''';;;NNNCCC,,, OO--,,          ƺ IDATǹ   ---  (((777     TTEE ZZ         680XWQ *;B  OOO444 ll  kkOOZZd%A IDAT      \dk +&inc & %     )))YYY###%%%666 mmm   `` OO $$VV      70 - !   wwwBBB  4 IDAT55YYVV        KS-!* $2:>GB &  &)%136KE.$8EI $.SUQ   4CK/%   OU IDAT SSSOOO&&&&&&  oo[[77/*1/ ILH ,5%  $#   ZZZ DDDccc))-- Cw+ IDAT   %#̾=& ''6 ɾ $-IU      ## '8BPB33GS( ø1D3!2H@3ED954 ?ME' &$   4-2#+4EIRͷ      111ttt888ZZZJJJccc22 ==   ""  FYc !% $dz "(!"*  22- ļ&2: P`^,   (. !2)%@K   ,6C;' ;~% IDAT%%%UUUTTT"""cc{{   .S(̽14. $+.   !"# нWN6 %)+*  '3/(!@. #  3@K# '!-5=0$ (8> ǽ1:;  " (->;4  2ALU<\odΪ-6;!+82) &,)! YY ccc:::GGG,,7711     1    JX"1AL)8!+/XT* )'#18: &4= "   +      **' %%*(   WJ64;>@MG $)76) 21/$>IQ Ŀ*PSR (* &JGA  (>B$4<* 4CH%1& 2EK)!#!  !Th` IDAT  )))LLLqqqnnzz      ǿ     QKB5+=AA 6AJ)9*,*,5E!@6F1%+- "'84ĸ      #;?7$1 <8  +8VPB krd 46:^bc-=KH+'(())(>-?8 ><65JP# +̵" !/QQ@Ĺ  !!! IIBB$$   " Xe IDAT  680VWP 0<@ļ A <=A/<A  224&,.-#!UA+ž'3,!*7 &'&0!!  ;FN?(  =JJδCFJK3&DP>+#2NL@ź%.("MA9 +*##?BC  &GE6C)%>]UFMVR&2 264    ooo8 IDAT@@    4-" - 3<'   ž  ż  ?IH-HXBFD/ ;!(8H" #%,#(:)*   2;0 f[D)8Q?"̴û$).89fS- \N̻'/:( #2"  * ۽#HNJG %:&12DHF%G]c;1'DY\`[> @E> GK=3=?ۨ-U2  =>9)8<6*&#  XX''       8' $*#17 !$%""(!      @C+ 1-% B ?.PE=6'0FTTBo")*D>@!  fle$,+$"    '' / $(   +(#+C?,/ &&UU{{  )-+ ILIEF! #-.,&$'17 *24   &,+㢱&*add ;g IDAT  +7?4*    `M  (00 .66tjӷ Mgg]mp"* #!  +12/    66 kk      #*-   õ);83   786 $% *TPGǽ/˿B$38% õ  #$  #Ƽ  ) D8 OdpOT` /Pfhi B>4 $71!   ɻXlt & pp,, % IDAT     ! * #?%+ !$  1L.1;?0%9DH" 4=)5KC5RN>.+CLL<" /. &(!.47>.   ǽ  ο 4E<-A%  ::YYXX!  #5    %8A-/7  ±" ĵ)!.*,.,Ծ',! ITN& )M<    '-%,.8    Ƴƴ ް%$$@<  IDAT}}RRTT  $*MQM H$ %   #&  $$76$ #5.64) C2 # $  FJY/*$09A/! #4; ǿ'00   $..  /ܧ:IQ%)9$-36 ļ3<4$#  $4>1%չ #"  #)'6:5 04.3; ).59DC #'(*#53'C@? @EG NZ[7.%29˾ LD  IDAT  {{ 22mm    680VUO.;@ü ˼  Ľ < :/#4', $5243*8C³KCDh6+8:$(!  +LG:  %   -&63 +   $,2     71+:@7 .X>$ ˺AFF PSKLQK !4BMSJ!"#/AݮCON &37 /GTI:{99-(67/' 22bb22mmì7 IDAT Zbi!)$ioc<8,)-.%OHNŻȾI* +:& 3>? $38@= 6EH>@0A9    +4/.,&/% :$&=N,/*7/ &3A  mvp 0%  BYi/)W '" !?C=㨸#,)%!"/RRAĸ >>EEbb 2+ľ ,)2;# ¹ й  7BG  89=,7?  %$ ?:*ų  &$+" K68L&κ.8  -F\: 8FN5'5C0DLL-  "8A1߽ 2;8 +/ +)" tt`2 IDAT@@bb khVǻ).#.ZJ=˽A>5)0CEE   *FD5C)%>]SEKTO - !" --99@@NNN,10   ;% /,  $ 꽵  )/2I(ȶBIV 5=@۩3S/  @D? Wgo>!wiA{ IDAT YY^^>>*(' IMI;F'KUZ  @MW-!( $:CUH5 !'  3(.0EL!0>+(&29 31+#%      .D:ǹ >6:J[V KRSW %%?f\Qѳ  ! ,)[:$!"1& Li#$-E  %DF=,   _JL- "%19 SSS???888.. eeeNNN222ZZZ555  (.!_ IDAT  - 3.#,NMI 'ASB-  %:G"!#  .56  *, 8AG  $   $-57/     ¸ʷ MNù !/.,+ A"'4@MNTʲ/6;   #*%     **$<5$7, AAAyyyssJJ^^^III^^^???||| &$̾6# 1@ĺ @2< ,=!21" +LG=,:-!¾!&% '3NG; %˽E(9=*$  %#      @ 1?F^N&кNhl Xkq& )ݻ /.*!'!  + Ȼ0:<[7,  ___222RRR666\\jjJJJ IDAT===000FFF,  $6DK )6 )371(2.)2542*-HE:!VO; & ̹"&ELQB-/57:)  .3 $>6'      ޭ,&  F]jUR` 5WlrtLJA &60   ',,2( :=A%Ϭ$$$!!!***666mmm/// --%%%888222ttt### ^^//77 ...~~~ : ,T(̽ CA6+3=  6Sb("! &$  ˽ 0))!"32.#() >D:. 1ѹF:   %(,$  *5?NJ7 ̹%A:-B30& Kgnh_K`/ηNZW6/6[M$&&$$$&&&ZZZ|||///tKb IDAT  ppp'''    $    ,Pa&+9B"  # ?5;&!3 * %6>K FJZ/ 8(DKOF/,4 !(%  $%&(/,% ͺͺ ݱ&  SSS@@@((( 000iii@@@777BBB @@&&...  681USN@FCƼ" +.*2=@'&*,'CFBJIW.&CK+5. $'*,&    +   !" )+'@HH eS IDAT =OX )%5AG.# !#% DJL 'Z]U N[Y"-(GPJö%,,,aaa  ;;;<CR*  $*@E$     $G& OOO99   ]]]]]]MMMKKK** NQ  -0*&,BDC   mmm888)))11   ??++OOjj+#! IMI:E'1:?%+  (>7'&, %38   ʽµ   "$&16DQTOAEJF8^3%8& v IDATsss  !!zz~~    @FK7(  (÷.<ccM3=B(1,#&%&37< #-44&20-ѿ #,@8(Խ   ĸ  /!%#11+ "NSQF5    ==jj00u IDAT #) ( ,(!!66'   8JPJOJ$"'6?  #>7GZJ.7:%1981*%#&    žù!3C..  DDBBQQ[[^^"* 'ź*3))      %- 35.%9HK$BHO7 ?C> )% 8-# (-4;=/  *48&$")<;     -- OO@@ @@/z IDATLL #4.$     #(  "˾ ½,0 !,!4>DJA6'%&$&#!LRPTWQ*$" '++  18.    GL]. 8)HGP6 00ͽ  %,,  "'& 22\\66ss    " -:@KM=? IDATNGBQ+6:87 =#FJ=  0  %;43 Tee  '%+251     !ù,@B )  þ++! OSN"E& XZN" ,, WW33CC    Ķ ͺ,: PU[7=4 '+C    !   IDAT __AA   )$!  "!:IK  "      HPM  HHH888TTT(((""''    ɻ  *+#.774CK6;: (075)-0     GOP+R IDAT666 <<   ijĺ40)HB8GLJDDFFC7 6GU[RH $ bbhhKK,| IDAT    ȸ/ ;6    YYY999FFF,,FF      ˿˿NNSSpppddd MMMmmm _ IDATffFF%        ((99;;;555VVV66,,55           IDAT((^^^iii===uuu...vvbb1&*#   .*&       333000%%%""" EE//  % -   !( /   :. IDAT     ''999 ggFF       - .( &    ''CChh9  IDAT     '    $(  (E1V7P      II--  " ! ۿ%  B@4 075 ",4(!    SS""n IDATDDddEE   .$     & \dl!*VU=Z^H169 )*+      ++!!33 )0% -  Ծ36!RUS 86.(;LL W_a3,"!  OVP   $    *$  & IDAT  PP]]22&/  "7 &$ &!ξ8@B. cij =EF $ !,4@4!ɼ6=E8A=Ķ$-2 "%     888***hhh55522 , IDAT  7; ELQ 8IJ7?G;  544 $) ,.RUF 34*н $     [[[QQQ}}}]]KK AAAѮ $  FSU !""    ҿ Ž&4!)    iiioooDDDhhhDDDQQQJJJ444J5 IDATmmVVKK[[[ZZZUUUZZZjjjJJJ%%%=IIHFOS\X         ///vvv=== *** '==D @@''&&VV BBBZZZKKK}}}JJJ 6)#4;  #       IDAT ..-[[b00 ccMMVV999999ccc 444 (28 PTQ:NW++1.        777222<<<222ZZZ ''88@@ fffggg # IDAT! !     AAAiii```...gggaaa  11ZZ??TTT"""...(((6        mmm---'''hhh;;;GGGHHHvvvHHH[[* IDAT--}}}999555  ^^^lll111QQQ000aaa//22RRReee???___jjjTTT      @ IDAT dddoo))nnGGGlll     lll888EEECC cc 2s IDAT     JJJhhhzz}}       || YY NNN ###***&&UUXXw IDAT(       ??!!  !!+++ (((===888JJJLLOOXX       C IDATQQQ@@@FFFZZZZZZzzzlllzz&&33+             oooKKKZZZ<<<99llll ("  ;      - IDAT ......JJJ<< EE     ((    1 !$ : !      KKkv IDAT    .!5  (  !-)#"A    @@ &&%%     2Et$.   ii  ]] IDATUU88 7!   #3 3%%        ;;   #: $   V^d!      Vǝm IDAT CC nn++ ""NN++ WWqq   47   "A       KKLLGG__..+, Ú ΄ IDAT       @@|| # 1        WW::\<+ IDAT00ݻ      !!  OOUU00        77X-^ IDATBBWWWSSS!&%       ]]gg$1$ F:&       ʌh7 IDAT     ``jj __EE +A&" ;         PT IDATN: ),, - BJ& |L !             ** #! D .   [cc>0(Wbc@7)!-8?4-%             } IDATPPP...RRRPPPVV  <. &-4*&'>??)=  "-3&0#<$ H@16DG  ,25    i IDAT   ""SSeeeKKKOO ).4b  ȴ2 :JQ>?5,9D]O<4+TZY  4/"  179    eee<<<zzz   SSS;;;HHH,,VVuu ҢP IDAT &F"*A;-%;D   6+&*  *BF6%V_]ļ'/ .7:  *,/"ޭ  LLLUUUZZZ    ZZ))iiijjj  tttSSSsss$ !)=L #"#    CMCο.47*  -:^Q?7+RW[ .21*6:3=B¼ ..$%1#   ppp///YYYZZZ  hh<<<111&&&v7" IDATll&04 474+IC? + #$  ,!&".;A?/ !')5A?(1'"<=<:@C  5)?LK3   XXX\\\777"""55< qqZZZJJJ^^^888    ,:::뾹 R^Z3<@;@=  #"  !J:  )  QN@!"3%  bbb 2..EE  IDATzz44;;;nnn;;;"""777         '% B5A5&&*)     *%   FFFIII::::::<<< 33GGG ...===???ooo+++6         +++  :DCDBH5CJ  ) IDAT    yyyzzz   11777eee%%%***      999(((LLLMMMHD :478 :8- +.// SSS^^^bbb000   ))!!P IDATPPP###:::=== 000       999LLLQQQ444[[[OOO999+++þ  -?9-ʽ&HIE!     sss''    kkk==="     222999&&&222...ǿ  , %# () 3,* \\   8T IDATHHH)))   lll***!!!333ZZZ,,, )))  #    ((   RRR333*** 888 pppVVV+++eee!!!HHHAAA999:::  888333    8pm IDAT ====UU[[[ccc888HHH[[[ZZZrrr %%%///WWWAAA 444 DDD((( ...-       &&...&&&111333WWWKKK jjj"""HHHqqq111=== ###  RRRA IDATKKK000  ***888999          qqq555555rrr)))444???qqq^^^qqq 333###***PPPOOOGGGHHH+         00 IDATDDD &&& )))!!!CCC(((EEE999  @@@ iii  +12        DDD ###444  nnn555'''VVV,,,+++     5/  & .     . IDAT   vv))<<!!UUU   !!!222 GGG]]]aaarrrppp[[[NNN 888 @@@333WWW///333(((&&&---!      1&  + 8  666      %%'' 7777  <<EE;;))) /// ''' KKK,,,---000lllAAAbbbNNNNNN)))111OOOUUUdddaaa 222 CCCCCC   "  +  )'  (@ %Pz IDAT000        tt&&AAJJ))) eee  MMM777iii ttt pppJJJDDD***666444 999(((   3 .(%! &: ձ    tt111uuu *** 333"""<<<]]]???```)))yyy ͥ IDAToooHHH]]] BBB kkkiii222FFF 1& )     ??33 oooGGG```rrr^^^ ((( $$$pppXXX888QQQ YYY[[[UUU>>>***<<<)))III ,,,*** 542 *% !  . Ư  6666  %% jP IDAT]jjj<<<\\\$$$ %%% pppNNN}}}AAA%%%###AAAMMM %%%rrr222LLLWWW666368 # ." #=6<   JJ !!!! ==<<< ### 888YYY;;;OOO 111'''666}}}uuu111mmmaaaccc444uuu>>>FFF!!!ppp kkk8:=  *(  &"  к IDAT oo MMCCCgggtttddd!!! RRR---|||%%%NNN222(((tttxxx>>>222OOO*** 8:;:  ,( # շ  8  ;; %% 333000444...555]]]000yyy111sss%%%mmm WWW---000\\\222QQQAAA|||"""g IDAT  /+'״" ++  ##$$$ooo???GGG111FFF"""OOO%%% 555YYY\\\JJJ888AAAuuutttwwwZZZ<<<kkkFFF;;;;;;  -(&   $$  !!WW00 qqqHHHk8 IDAT\\\&&&;;;lll444dddCCC  $$$uuu___ppp  ,&" SS ))  ###000000444444666fffaaa---xxxnnn,,,"""bbb000333ccc///111    (" F IDAT^ &&ffkkkiii  >>>ZZZOOO///,,, TTTTTT/%(&" )#GA=2.* ((   <<<   ,,,555 fffXXXFFF&&&aaaLLL,,,FFFY^ IDAT -*' JE@      , %%kkBBB ***XXX GGGGGG$$$       %  >>>-- 000   &&&###ppp ~} IDAT $$$       #    666+++  {{{! &#$$$       !  888...0; IDAT $$$===  dddYYYQQQ $$$       ttt &&& iii^^^ddd kkkggg  $$$       +M IDATZZZ::: 000 ...ccc***111$$$       )###:::::: 777 CCCFFF ,,,)));;;O' IDAT $$$       (999%%% '''ZZZ'''        !*&222YYYJJJ|||###  000 IDAT      & ($  ~~~XXXFFF ***(((CCC        #+&#QEA IDATkkkiii999!!!{{{>>>wwwfff^^^(((  ?      "%!...zzzPPPccchhhiii222///+++ ////// R1 IDAT#:(?       (# ]]]888 BBB111AAA+++ '*-:@?      &",,, 888<<<QQQggg111M IDAT  ?     %AAA ?      "tL! IDAT666]]]222 ?       k IDAT?        $  |||?      *** - IDAT333       )  333         ,' OA IDAT 333         /)$ $#" \W IDAT333         ,'" \XU<:7 333         )$ fb^uplG0 IDAT***        (" '?<:TQN  ***         $/)%10-mie&$# b IDAT ***         "-(# \XV864,,,333  ***        +&! IDAT ojgSOM***       (#ROLb_[%%%  9 IDAT***         &!FC@`\Y    $$$        #+)(kgc'&$ż! IDAT$$$       ! ZWS310   $$$       $""TQMmpp@ IDAT  $$$        &   Y+ IDAT$$$        ִ֫   $$$      , IDAT      R IDAT     qOa IDAT    7 IDAT\XV   iec    cze IDATEA<6{qk HC@3-@ IDATFA<tha$%%3 KM IDATXtע" IDAT=O IDAT=OIDAT:IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/_images/itango06.png0000666000000000000000000041405314675025471016064 0ustar00rootrootPNG  IHDR}sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|E^K/BHBBG b "t+TBHBBK/#K /%w{Svffg4qUXUB!B7i_38>Gʷظ[{LF CB!1J܌z~^K@uPwݝ̬L232ʼB!BTd䆏⏐â4(lځ2ӥ/B!jj)\q(\ m7Q]Z7'-#5BK̖GI #Hw%R4f5f]+ͮ.8lvE@_2Z6S/cSUOojd遛QnB\¼z07i&>umk+t `'?#=kXӷ,ߘS[KzD$ϲձw_) ?XIT26!R`U ^caZB)űHSᵊ(ۛl3IM*7SiNVv7ͯ29y1bhNґxRcf.BZ^e֣Fw'Q p !wC2uʼnեqHJ 4R ^ݎR a^~6UVϘ8Og3)- NH.񺟷Wq>JUoX1z2|>]zq$4F\B\J"=KA?<~rǿ~4W<MrI|JWyyB!.^vjS#RjզsW8ϟ:q,߶nMXsmoa1GIQ/0 $94lyyx{xKw!DT'pc={??]%A[N|/[sԯ,ѝV~m\&\H" {xoGimG7Qp[ȮSベ'MDєXـy#hr5AQKٕ:'~J//kacS决vׁ l Cѩec:lݤ~Squ?bE); GhГeu!uTƿ3MO>x('p"/w.ɕm0.+o'W3yV<ٚEW6lA?I!Ә7#;C/hd>?ؑ^J]Ϣtcx,̬K q]ۗ>D\;!8G尟3+S7*4ĺCɩ*SUthņ=JޡyQ7ˋoɳT~l`vV[!DdSZwǗZɟfۢ/Kd~Mז` 7f`t;H`EcuErDFRc4/?4 'tORg`ݯӪQ'2qVcc q4??F<!Dmc)V;9fkiڱTq8V{_WֹGJVYKQ|/WU'}@ʱcngX1 !o璖Ȟ?q}*?p "C0X/`bIPp3j:~k33{j5= a1[)iF|#!dmiYa*QOO7V\3튬@B`ӕ Gٱ;9 ğk0;iYqXIE*q6q)i [8Qpf]g}HVn.ii%/ XiBQ{Uv,9dG4&< 6A2gxphI`ݦ̇/ۙV^|Զc='ww~;VHRR6 _BV_3USm*ͩ8*QCq4$"$.QOwLs-`@_/LSq ''lgMXwѿ;a0'4{zF 9$;1}eӊxv3]y o?zgI9its@!.6Zүi%ω*/8"\u//(ig}77 !crVjle{y@ѹMn~>v"쎯DN/Sdh:~0/:~4Z?gԬ=ƣs`0>>DMdmX k:=DxH@ˉ`t',Pӓ\[Ϲk:=^1ihtVv!FdEQRk{E  !f^/yz^ї:* |fn]=&wFވrCSJk4AtB.))uYca&<3l҈oHu_>l۹"BQHw1R, Moo77Bx੓N!8[$x-"_rqXm6ħ8<BQ4A ~$LSWF\!k&q8l?6ebEBQDRZ+|r_]B!BKCZVzAX:D)UB!iO/nB!BWY^B!0ƿ4B!8.W_B!B\J @B!Bs`ߚ¯N vUe[ @#\w֭K&RruK^>zn`' f+Xw4>e㏯hO6mUlfߧ)~OW}_|3,5/]ʭKƟOA؜E7YdEYdqi9䰟J*Zu/nwm:|eDn)V·8>iI3,}y3oP&Plҭաp{n9mF+sߜv-YQ,$,ːq{$޸:ÅJk-iGOc%'|=_?@s?ygV<,;J@uCt`$m}XHr_Չqu:{epUᘯ,s~.B!{>|#iۆ5rϻ/-z[6]q㘿7zMS AF4XlhKɬIwHS>ݴҋ6]z1dYFa==3XveөzW Utmn1w/KƆ_m/{NW \DIX4{^HypLΔ$'=Ϡn K/t~NfKᗷsu:yMs UglE400ikŋg[v4W6]z{x|ZNµgm{ vEl7rgu5:vE~j== 9Ζy۷7aϋ؝w&ێ@Cr3Sq{~o6]_㋭u|:W-_쟞7,e",r3hRح6lEN+(|vNypy1$H>EGo U'e3{W}Ǜy SvRp^7x hxzUo*yapo?~_32:pOA-zxS pb!o\>0jJVbFO݁WEy϶Ϛִ.zFJ99mƎ4h<TN:]f#35 ?g?if[_| nOȴƣn<zYIg6O{7[fBw_4,5;]2CZR[xat[7swM͠a|6/3µGWOٻxi8T-p̞iOpߌ\<$6]?OaC#3n~qv+f*UFXlw 5-+sg꽻c4[B\\pֱl왗yh)[UZ>DFi1u;;23F}d)9p/=) ɃLyÙ4}i记$&O` )rJ*lֆɜUSkbU.-%p&-ij_ee_濏{q ˏiS\٩ȃekkx&|]OXeƔݷ!xԄa:%KZp"2򰡰ξ|:j{Tv();؟Knakyдk8L\ >2Z1G3:Єqf4ݷ#(r %ʜf_:u&ohÌ;HtYs_@=A}sSVNz5X1kVB!. #eKKҩ`Ls ;Vjxl: yfedai,']U?ow0,I>c.wܐ\"MEW:_nwK] Iە}!Wxd!/*LʆWc66DN傇;:x4+ȏ^|ҧzu"c_oG"~oǼP66t4*oٰ|魉N=Np9mF߀oh5x?w>=k}sLqUBtA;1J2N9NJշ nfS!y)WzMePic>"(;l>O1%Q٬]qv-KYRXN9 UzUFPS{=N4WO쟎ͧ yE(/bOգif:ș4in xu2~^y'1?:UNKe-ү[euZy傻 c5</r^x' n$ljC{l4ܔ\6mJҦǠ*ʫԌ_}sƥT1 >g9NWSh]D^G|e1Ae}VpLƙ܂(l6NܦQA ؒ)*Wu*Xz}+'\swdahJAZB!.^.M3U^K}_Hg)+nw. %{ ᖸ0rޘnjo5(_[b޳>yw$NaSwr(c[QvJR}횚zLh5TC{ҿo%ːqq|N}| ^8RiWsKө3aw=HрU2i#Db<[@Sʳ1kwFVt;:떗ec#=L7*-ޏ=ҹӘta>AC[Ɨ|9e^}cLp֙}oGãSkЯ"~"ʩkwAsT}\ӑ'Y/TiL䑷;S9ǕΪy5ٵd&-B!E=l@_~f xo~/jA&2's^6{znlo_o5򛒫wO:Sx/xt']<)ɧ10{mS?&Z2VNdO۹5JOV-v^Q0fhwnl&8~LNԭq^1J/(мx^wOOyބ7 DS 8SέxɄtB{6GdHɶ I|0|0-{X!RS}V܇{Օiů5 W\irTU\tǙ_vej~\6C~Uκphu+sΎ?CC++)1?/'BG!BQ=/XB!B\J4''\t!B!΁&ŏK4<B!B8Gn%59,#t4Mӛ1B!B!q%ONǗF4ͥs*Ǔ *~?Z+B!8grS/?RfBi !BqRJU_Dte I_!Bi !B!!B!#/B!D-v2'S]z4%ɲu6B'$]VԽw9ٕl.%C:_t[5_5Ţ\|ɺdd6|CzN!\6O' IDAT,_:I޴Fz\9i i.9NӚDuYqg+vBlgfiYpB|?O%DYsy7u.&k"d-ip?y⎝ o hѼr7a;3SYv%W|fnOVFmgL|BZ ӡ (+R`n # ]s PzUcdnҬi 70a6<j:RQL\F)%Wg>mCL؛)wiϔxb ^r5𔕜!Gspx8+y| !xVWC![ǩd `47U$`^qFnF|,MiBV;x:gc1SEmJ # %am5v.& 6ꁻ܄SS(Z=m*ϗߘwgXak6ksa4<\3aT%fG)œI~սW3-h,q\ѵ9Ɖ*WI lWh܋VTޝQ.;~YIU⾬p(̧ILAY]Bጜ,6SSCi:ѾSw<ʎ:phI\NaG#H?B0ɟs fȷp$dTΒÀdO!B!.M 9CB!B( (H_!BFU B!J5%!Bq Si !BQ+~ۯ4B!-FFi !BQ[2i !BQhZ|QuWEV7-'ZWks/tR3144M?ȼi*W&⍮L:-"u]:݅B&]B\4 fqaOig,:ZA`+x՜U35DӚD@Mwi\rxtf&rNE/|~wnsnuv,KڴY Wr74cD4w`[pýf GהSSNq?شcV9JxA?B8B妮 ㏟`ŷv}~w=oMw)wYq>]'/> jܞ|8޽i=ןY.C F.z\hM҃!mgy26__wxh֯JuEv ,Me冟g{]ǤBrL~=/!&,.*wVه?Ȇ'!WYD3uΉlVS34swKMYB?͈wC;ptR*5;Ū m*̥6TRJ ^J4C% ߥ^oתmڿJ P{*R3(IuP9\8*?^T/G u[_Tv{bj{U\0z-Tۯr.hNUq.tlVtZͳ iVʏl^^n]e8Qs"lZW\j-tP*k࡮rf_(JZ>9dqrWqy*ΠUjbVm4ߛ'Uo^M\-I[x2T$U8"nAEڠr]XUeQ!\5_WOA5o*G W>V:ڳ޹խB(6j뿩|MP1Z]uStgcS'~C޽ 0|Ux~sWj>;J__H5OTyw 6(]dkIPSι8ZEjԚ_U6_jԟg󧫥߾~uΧjjբ*ebսsry̿=8OL74-V%8?& a̪Lqo¼o<*Sy8yl}/&fplY.]V$W_[1O زs%[{̒D+{uJ2qFG*R/u>=lgDnbWr.\t&.R|Z9kޕ. )w_wLEop#OX".IْY4T 08 op%K^fs:^[q20ޤ.ո~R w ?LOѻn5z.j{e[̄]ٛ|3 YS5=@LmnPͺ˦Wr'<헿Ȭd=c#[s!dzhNV|z3s Pl KF,~nzξΦNvR ~׼w_LSǴ]xoW>Wu^oޝKC{bu¼[ev:U|U)sOS'Qj?tZ]Z4[:MQGz6y/X|JfTo-G%L F5ZmUJ)JUG>8P%e98Qu[R%:*ۇEU){z43u!ʽ5I}w[pwZ5{]Z|߶ҽ.{Kujnudm*"zmKuыjKu2ԟQaw)6 gGE>s5Z;{s֩a{j-UЁmUuQA[~KEkUYȸjl3ME<]F'˙|9볪翆KUߟ<% -R.}Աs.Al?S9oi극\Xi5 'c'Ę#$h΋/E汌,㲧c)-z4*zam]?ʦDhأ>EF6>m'q|fM嫦 kD Ş$gHWMIޓN(^>]?b4?!䫽1sl ̈u\ 4(|l#O;S^{L?/GOjےXdv}-j2uCJDd8s XwQywLM>{(_'a;HM|F!TNƽT;_}?ƞTC?_t͈keʃӝYS7. MfѾ$vk&$"tN^Wsp%{ ع(Zx;œyw YLbZð`Z8I_޴u5 .;EeЩtRX22h{~ ~Q'%??fWݛuUP'gq2٩M8Jj9X7<ѻK&hbM "zn=2v`ǎeRh6˷ [9ǥoJ:foO(}>M4,l\ʒ Fq=Ѯ݋W3niD}B|ٙJ %5U+Scyw󴦎 kYft{DӡiE~1:v\ Gh?[jãu#o+Lc܈_0{kʖƺO^j~~xua͈`(/ȾKh;lu5Ss};=Sb|+EuVg{\%eJz2Yڹ??\9 "N0Di|3z1(3gm),z&y锻6aFgA;].Q&gF3cD Iw"")nM;H˩lްM;)h#k /ј6yi䐸c#6lfi\ruCB hKS?ܜ.ܘ|5Վx2kɞ>[^{R 7>4x%6fCOk>({6'O03\O_I=cǥp!t IDAT8so5u ཷ&M#&߫A׺67r`ԛ= ƀfJΞcBV=w͘~7}? a00^@á?t|'vOLn<4Cfܟ!>\懧=f%6]HOduWv?`*Ȼ3y 5wٽ}|7w?X3.:r\ ʑySv ?WFG8~ϝquiI`^6qq=v8md|i]N._M8z=Hdʠr“ΥV73U_AtmߏWE kZC2=[ľ;so;³RA޶΀zhp<6OO/)-;ߦҨsxmNOڋ余z6ze=DuCh\71+h sW s>Wi pf)^F8v+c~Ǝ;pEUʯֽsZ:d҅ ̹Iemp'?c32X/_q| .; M_dy䦱EIр`iyOꆸ\?y*D~mՋЬMGV1 hhh3}2PSSm6쪠*!!ޭjцg㲪FW " [Ӭ̑iΆ 3lXfdÑr&Rr-* !K#~߿y{~˛#?.+ёviw_~?{ EH…yw>~__Ƚȋߠ= nIr=iiz~ji&T=Ξ?to&ˎyq8um;<*|Gꆸ^Oz\!B$~wwO!B!=4o~,$B!s$B!n0g/ B!x@H/B!D 4Pm4#%B!!B!%вЯ)]/_!BB!BYi_B!B+' B!(̙?B!B5uЯʒFB!u^$B!JkײC!B!J-7jh&[%B!P~H!B! !BQңT B!(Ay_!B'ˬfWG>1KʐUF(kF[+ℸB!DP(0WK΄kwhJ%J a_UKceYZr#QUgTf#~kTikf qe M!^E!ez악]ʍ(dH$f<2"K1=5c@ag(!mכ!B!̢Pv#{ϩ\ GM>dsڮhF3&xu/!0]+ kӡh~pBRioX{&R5`f#燯WYqr&74ϷM; BU'ErBgLМ:0JX?5j>'MOpM.ps㱱 {u+v;B!E)<_NL^?ppK|=&TBiՔvk:7ѓT,NA߳^²9 X5yi85zVx-*z1^+#qaWp1 o`VϖoLjdL`{H8"賎. _reݲ.EwvRU ^ طcrf_Ϛ8Yuy]4a:`,@AԶ[U!,Nj8k[zl8=Z[Q ]4LHJ맸'}RueA+~Q_+{5B!)mZ4UJ)v -ZӻWԖ_To|q\%)T5]S^̿KR'j|neY\J᧩UtQ Q;ePkzV3Ŕ<J=6DJy{Q_ O49EGMQC}mGAb數UR*TƧIثFT1ܮ?PFeRg/ܮSGո(kMczjB]mU-NQ!3V SJqgۍ*UYCcp&Y)T2^NMyM5vQJ|v VmڨW*~PUP}{6Y%R!rRBqo_H] 9fMvD{ڽ~ڳaڻaڻqڼrڴb8W_6KdZx5irZm_H9mYڴhwhCgk]4b.G#_>e {1RÏ߂P15G5tr0sS$srb,k>wӦTu[/p3h.gO"q]4;-T!R8i̘+x֥mPRN|Ӛ:mkۭ+5Q,xٶNOliЉsGnXVK^ux׫fWt%г.mަA~$I$qf4Wxaʦ?LL-ʁҶ;'q7`+'"~(Bfmu>dMȆοGgį 'LjV&2cWѣ=zGmR%]) ր* _^+6ϝnJ>^x㯊*v>ř l]q45V9ڟϳ\8}HMZ{`~H?Ρї^ũs8yg7hZ袣|7 h(IA!%3PZ8L7E4{2W'Ե`Flص;<韍ト0m/*;Eg+RùMBX˘8Q<x H屉yccjWS-P r)v6sД %;p~ۃ)!B|ަ?ڴhC`vnXMA,fm tk[Q>|)wvӽ8.R8;%Tcչet+'Bq-ibX|x5lƪנ>+ hhH{/FG3hD)#!!xv 'PNC^͑~Et~37:Үcs<.toVvY{(pabA!xQZ~z`GR8U֊u?ҥT"n^toYE oJ!BŬߙk7>ldّ7u6"<.۪WB!2f2WCCNUB!(AT{-$B!' c$B!2jKf] pUu /ӓo ٿH*SnMәY+r^tFk2xM>ٔ{oOBʔ/cozH%KûȽ4Govqoo.qa-WS>QplS}z G 9^[ДK  tI sרdӆ׊Υxb͹xs^zzk9 Q@*7hδh.oub).5`ȴQ4*s?nX5>Ϗ8}5װ-!72kK43x̽ZUs;߳E鞜[rECO}.SiwlWuv@_ v|ͪ:cX#ΐc*"CYڀ]YIۏr|<9?i853KvxWr@Ӭ)Ց] H E3MCs(7bs2L,z /hѮoNcnrBl1nTqmy:Ok :yӨ+7Om0_+g#7|mkSNC3PIF<{=4hSyB?|]4 ~8z˜3&)\3.81_->=ދs[/:w5M_̣7-cz^k]LP-3ki4e޼{NΦ-R>ȹN=2hvEk4q5#|y&`L.Cהsfꄏ#*;_պ6΍.q@qQ,UtD14444/] ;;*ocz~1,~ėY_|ֈ=s n0&QWU^L%ta__Mg'&({=O}aǘ֭Cn~ҖēH_eRM[/ƛ'o6O3![Fг/+t[rff70gKvb"$Cy]4a:`40Q8vQlf_Ϛ8z~w$s_wfeǠ7]rb]09K a(wjFyyRQyg 19j$,EEܑjǟY齨bw=^Ogk9ͅeOsjP5EL` l"4&G:o}RueA+~Q_+̭w.Q荟ڴhR*Q8+KQ56ʹZuӘjB]mURJ(Ww{EߑinFߨ39i~mRQYG sהק*1IėuUT-JUvP64T_OT٤wTiUJ~Ϩ9**k/538NK[ ƞU}CYc<ڽ/O(L7~Siq+Ejoҹ/- jW 9J:5I[)!jWRSX=^ҕrYGuDzRZ9*,5c]gޚ~jFH9wQr,RBNYƨ-Q^_nXn\mZEgi<>pgLnt5ku-ھf ;sTڲViT!OāPl[; w7t"$eIيڥ2>n! yi<`H ?Bx@"w ٣#_wxk+]Ġo,/d>4gf(U A|~pΈB'.~ޝuK)4fIE̕h µ;pW5i!;ɬyίΛs^xny2ǻEAk*z컑Sh"14ɺ˦|J=x}6GS׋2ٮ֖;יCϵ"*O9RƐC]:֥RF7|)EhRt/rBr ;k{ Jc≈7ZY.MQe"ݢ :J'ʘ$.>^Tv΄Ws% ÅZ(8k1qx:EU?ulI}.r bT8;6vʸ:E^qqԈ v{+]^d_ٲw.-c}f%6'y]ǎ5Nhg^eN\kBw=I8wWt K>9 {S)݀'}ٳWtŁp @mq2\ߖT{gИ7}>^¶#9ozomJ@:=ú8u_1}g˻;EKM­[$v K0˥)֏DK`h,>ȵG=`(]떡OrhVF V;й/W's\I/a,.`5'?E)L]}HXY2el9tG{/6rԿs_uQ/?((ɞ{TU ?HćQ7B9 {S1Y'{Q#rXФ7\WNd2̓ާ]9 IDATA9T~GUVc=J ]O#2ۃaކ'{^Tsʷ[躣+c\-v>5+7q`rRJ\U[&SMK)QkwPWq#y}rG<@CLcywR8urhd* ʽSjϧTah)w_nj?dUڳ|A:ʨ"z-ҋP=K j߻}\OMb&s;Kȿ*jT\SU1gݨbR*5LiY}T@1(5j;-OeV{I*ɀkUΫzgѩ\#zcG)pJWQ7V=>ީǀ_]]upkiu,'s[z }9uw*GiHT:9?5BA֕6Ssy^mXմ-ԼRMRf=Ju]uKTy+pV},ĄzmjsUe[uD꺦1Bu2םU%Hn}jإ ?vu-T_-u>z6R6yuж|Ekʵ-(//w?MXXx>M3i bcj$՘јh$$$diȵ 9|ï"nJ tcnBhH9ȽȋߠNg& (?/`ߠYLZ _%(<9ދȟV;l!,$gx4I]eYY|jG!Dq${ѐrgM&_!iP(]@$B!Dt;$B!%L<_!B@ՓD&zH/B!D @-kihL_!BHɦ$B!$Qd,oB!BJCe3-_G!B! !BQbifu_!Bu_!BA@SfH/B!D ih2ۏB!' B!B< $B!DQ(JMK&g_!BB!BZ9mB!B i|<~gB!ByM+ B!(I2Gf"wI/B!D1ѢeeJ?}FөOaCwN,9_@eW$뼔0E]Ni_ 8dt$GǸjօBdٗ[ N1ЛXR-,Ѵw5nݕup׷=;/q[ҋ0[H# ۾GE2`QԶ4*^g%ߋŽ9|Yq`?ce$>=n8˽BH-$v~hi7,Y:̖Ǽw٣!rRCL洄QX/Xr>ORH,npM*W _/{rU:!P-3Y/ޛB Z,S\[կL;{m׷$vh v3ʒK쯴dѬ|w 5Ʀ\BS;zn=Wg`mDžEp s91<[٤Y2~Lp&6^_ ,9}[N率{lʺF~3kXm6Z[9FArs_ b7HH`2]ҤW])Mr^1hu'˒8 #n^c6x]w EGqc {>{-幅Nj"cS([/&랣Y!ăUB+CC52B6%}9lYczT [%? "gGi3uZ.˶C-ybD-JwO0ro?Ӄ9v[95WF bgd5:{đ+k4wʁIy-7X]Vnk{<+jp:.ŕU2C|qo{U:鐑DW9M#Tx|8w7̻Y5F_1ma~?z(Ӳv 5VGr}Z7S'ק (\x֏5؛qغ(gm֮_ޮښ/!9~Gx:d-.s90/hw-OT5& FM0 Φ|ΡK&w]Fe8 +vf=CT## Ѭְ4ƝK<|'/o%3౮TF`g~iV֔ vV8k 6ت"*Ix,yqs÷ N1ɏbqL8%< iw q'pzaUüku2otw C!{h.HΛ${ԡc6'#q2 `l]Y VI)ۡ[So3g.fu᷈K6e三LR5[;&Bj(Bi?5?>[}1s\o5,!%R|`j*-M~t_]4k+3WO4.rӝJ˱"ZfX>/wi;/ JM%5K&ӂ@3˺XihAK˜)1CM4ls[ŸOyط'5P"uax< t\)wo&L -s3ba:?ib%` Ovd6?z6畗ӷ ͹Hbf% Rcގ֢q!S|3cR<3ga~^s+_/F ! 5M3gU<_e0`_"b8w.+ E;4 fʬ}̻X7_*_قLnu Dlgc"c<*n) eSmQӢ\Jͼʿ| eRl*e:5FEp%ʔLRt|C̯g]0ڻO!rOYX8bR[=ۮg]2c~1m[lY,bCK~#[f;oXxl_>{S"LCχ1PXkYm%h)Vփ:~2zxS<39fVWIՙG:xٌo-]z돣+w<Ϸ# 5g1z:џ0ѳ)%cD̊9:x۳|4K%ĘGyd_,>+W6 VVh ACS1(FRSS07$$diȵ 9bIԦ {p͢\?sr7X9~+ $~ocbP!(T+Mmv(pnLS+)SJ;<[zúGR(#,P*l!= "ƻ1Ͽț@+6벥wl|/ˎ(}!BQhJC`#B!D @ B!(fߜ#B!%*=W:'–_!BSH/B!DIe݀B!B4ZM_!B@oO]5-GI/B!B!B!J}>o[k_!B$^o B!(d!B!o*Kԯ̸_!B K|5r5+B!%FZp}J0B!BH B!^i= J!B!Jn>*s~=$B!$! !BQh7@!B!J ->M_!Bz><M}J%oQߦ/cUùu b{1f] p2DžB!D) M'If뛖?֬y+os9uM}!2Ztykkk7g&7РgFҵaϮyQB!3su~2}ou f~ as  h"( n<:,aHm+@áryߤ]GY3DHSB!4->jZ7SGRiom{~~.k4kV~~nz9` 7k47lQnK.dH3ו>_`Q9)y,YJb)6{y}㯧wkRM ͪN}Fź,V|s1si7Xbrt,Bb^~A5P#ʘ;JHvx6`W'fB!+pܞ[_cVYoRwX1Oh&iRz~?¡ hcsò.ȅ9KNu>xC/3W2?$ 62T.]WYY>']o7I5׍a,.z2 Նd|f4Q?e2u򋴩WvO^ʅ !BNGIq92˜ O .HB!*٦6P"r")UMoӶlbJ4*;3>1V2n~lhЖCWMY[)kMPN:HkV,f9{vϚ3=`AB1XY!B; BQɑ5Www)JkQ8)*[5O,% dyYawOk2B!Dmܯ@"+,a䱉OzGWjWu-P<>U(enfId猯;vHawPo?U("9w.+ LmM+iݤc)_#K9x4;5B!CC ?Yq!Wٿ/nB2Gٷ2"̘_w#J ŪbYYRygHy.ΘpN=a ʚƶ< 5==VG{RU/_ASi oTj_N±sQc*7`ox&SƳB"*2OώF.cyl>ʖY#CU#BQ|a^ f3|ލ1]}e5)>߀v|껂ffGcy }i& ػn/eCZ_HS)_* Vѧpl-\:Xq5+9x?,MxQdo͙o,CfK\uj@I78B! [[m>B!rE!B! !BQMSrukL4&kV,^+lMŕQӗ1?)ϨB!Ń͕ǂeZsdZ.lYcf֔1 ̍a貆U*>S!S[Z{!aQ"{{*M<1z߭B! ZMY 1fе8:gwmޚ; "B®y cy_B!'O:6:|Oz޲# O*!7 }J3\2^ϛt]u L{) ůdR\y*_wuNߐ `K7^_[ }Pb!B!9L 9e;a~$Nt J.]]W^l,EֆkuJT-nLhŌme !B'7T 7ϓ9nl IDATuugIH6!B!DepM% EϞ&½·B!Yw3`P £?/sj^kF1'Ej%] >AnhB!D1i0toM6 寉+ o=K.|Aq&*S\aѤܺEbzfլɼV p{=9|Wy%rsTk7ʀ_!BQ2Wܷ"[>Ŷ4[GZ\c<>Pc_r|_Qv%FϏ ]pp`vߙSLH Wf٣1=Ǯ-s{M~z.h+>OF<^:[#xi}c_$akM9̹g ~N#Bizk3ߧB5l*a^Eptu0%gz5dMq y+Ϧթ\JǺx V ƽlݥ,A9ɟ<6 iJ1t^irS^o;AOx_ŘʳJ`׬I|mSV')ۗ:EI6D˖м_=TiBNe 0 r=P^-o* ?`]Kڹ$wQ>T8-LaF~9cjvͧwa6lRɿn TFF(5tm2ÖF7pr"kTN-ZeQV_Ȫ8H_UWXӞ'^-w U%wT}yJ ~aթl*ӷ:.\Hm^8UҬ[T0(ru iNa!WϟNڭ&Za\l_ڼbZwjj_?LUKfOR &NڭVϟIP[VڴS2/ YU:eh246|q e<R[~:bѺf0'eݍ OBߤiV[O]2^^>rVii'FIB!1b5"q3ΚFhf 뀦:ii8 Étt9x=~ĭQ1'!#$_!BkB!B\#dOQ8JȌsWB!d_!BkB!B\#$B!!B! B!FH/B!5B!B! !Bq_!BkB+)# Nݗ SwlE޸B! Js}Sp4^)(Ʉi2MN9f?i(._>ұ [+AQtBk]GMiڴ)1Q0DMhڴ)M "suYko?Ldt~#ճ'<lnxv69#s OA\o&^c&?ߓ-;{x!&Sۃ"r]N?K 3818bC Mj-~yd"4 d{NV?VBG1C2g`; (cp{1z'YVb*izHyqƮss5"5`|r@kK0];A5ljgWZ<￲ A>ec37R3ԄlCzs=9 fu|7z voO.whVYp~<B\7ǿ_dVбeon/ڟ+X(y QsJpYp݀{cH3w|DuiJiϧ<(y5䤥<v_)<+r3gK=SGX*ui4 PJÕܿ>|leױN\WOʲu4ăپsaxFN|ݛ(sXow2;"We_[*=xƒs;bTAjϾ$8';2>ΦW;sc:,M/35ɷyO/}8Oڥ1_BJ#TqJ)IPstWT/os­iGS]PkPzwn?A5_ JޏTSSe]xB-MEC]}>u/UmH{cKAcZ|O/vsrUUFQ}Bq9cgvc~/AmX2W/I>OmZ1_;z,jSՒٓYcvg{Ԗ6-"~*oʣL=Pfۗ;sDcT\Jwe|X$8fɥyzFzU)Bpx,S zN3m 6s$zLT,˯_T=C~ڤƹ8Hрg+u_؁3iI~ο-k}+nӯac7_nnW=O=s|r^})8y;ϙj[ûь|/Q|Ӌ 5chg!EOQRX?uiF4J\??kMxFOdw¨٨1",SV$Aʱ(Sp?ᄈFD}|ѫ=Z~e_2^ N%OM/P={f_fm2X^_ZG`Z:rx~঒2 a#5i2_ÏRz2t|J>}"MO:V_ o<^iЁǗx=YR-vi B&$@BŸLip848Zbڮ)ISvM~,Q@oM'tcP5"}\mzkt3KX2IyXdQM={\zag"X-"1]bدXa -/bFWހύ'uu\λgF<ޯ9ߪ18>8КC[P":/ec޵&F.v)tͿ>8`t\wWS!Xn&0hdȜ/gӳD7h@ h [¼q* -51ouJ֓(|6>MǾcn6EfJu7eyx̏c1}G 7Q)IlY'L_?=ES_?<ܗfvJY+[ vGSHsyzTVoO`g4fslVláX8u:ۨ A y+&߰jnvn\¬яeEіڝ j{LXa)x=|\x{49 wGL 2{9tgmG?~;߸y..B!'~|N@:eZ! L5>TFqgt:%7I|ych`sYAN}Zʰ wZl%_{uY[0W&m4m=,S~O8|npl{jJ֓iB񯠵iV[O]2^^> !Y~ؒ:ë1wl.%ߌi֐qM~c P!'eQ1w4FGc6[4]4MHi`88vAFƜuGpת0yZP,0Xؽ9BbD)wnt !> }V*\~!qW!BkB!BK_%B!ŎK_!BkB!BCJ? !Bq_!BbDy6߬ B!(_+B!W"$B!_ϻW+XB!Bʟ}H/B!D1м+ B!FH/B!DqWxsB!B\#$B!Q(@i/I/B!5B!B!_!B!H/B!5B!B!-WO%yhWbW+~+}B!ĿH/ Gn 4Wet`k8]K6ǃ}hQtu;RŦYin$Ԥ¨~-=#[ |Qe0k!Tir'cV)a?z]O V4MĝIdGji!r[9Vsq9O[h~7=LaWF.N+φB~~_BUylJMFL؉3p5SysWz{Q0Ŧ,7 eܥ'_rC:vaԶLw!Ei}dwM`ƟO>cVe^-^{*\n[?X\gJ){`'ÊgJ\Hms\C|u_-ijs6}f{/ 縲d&~/$M*φBEզERJ{Ԝ/F+!.K/Uk_*\uWITؽTRJ5:e2w7j?Uo&!7XY]?x:jTO7 U\ "ԓgoT5K\g_%ME]e9Nez*Qj=- Y)8V}*|*U~e0.oS]VTA+6V=X?<2I`L-QUGܯwIT6dlSFܱH-:G{{Qz9ujHUT=Kݟ˓υՖe:P1SޏKLTr$uau2(qy\W6T=U4E+uUN o݊Ĕع9%3$]'GM\y{,ng;H۝[?+u?I V"k e[lTԞ*w&l WlLMi\N}b1oRpLrt}.9.ÆK5벯n% V 5:o"ju[RPɬxn&|wW{TqY !(NCo+(T{FFi;E*2J-DtO*Y(m]w?I3y4OS6pwɦGjkލG_@tP+ ¸ƌi IDATOu^}O_s*)}t}zȧ/b$^nLb>:vUd;3^$M-L`8S~.і?O ^Ttf=*]+t[3>R[~ބۚ31g4 B}/ NfǽXW.!ō{I/ UYi >HE^w.׍R>~ sǶd}ۺTm_8.KO|=G'ҽZ0&Knų=A7g+uoC);v.r\#x:N϶P!mr5TuiD\L f=>Ȉ%8qSh4݌)Tɏ9^ׁʢ^_ƾ>Ȃ*N- ^ff eBy^=y^>BXP'y" Ԥ墵-,T'vtOw`c&zHS٭?8EktF:(mgʇ90&g'9mBSLm;s({O,;un嘚EQ<;60ԯ+!@iI \: qX1/`dPy33|Q4(`窽ds3WP1dW01}Ef/[U[rh1Kǡ7ye;sIq ny*:$lsPM_g9N&~ tAʯ-7kkЀ РA}?4@ tt]d~O %<Ҍ:R#,: OEB1 jƋ=Sti|oJpP,Cʤpg'rWSf`<ԗ>n#q?ٖ8E ~#l @+{)i8QqG6%>~Ą}fH$yc)JU^ ?џ8v qzXFrt;qo_:WŻ\=Z5kbt)j쉗Sk"NZYd ĵORƷ '_^!~˜l_fոsgMQt#Lfk&Fڅ(e`88 É#AFƜB!Zʛ?"֨Ǚ !B\|^H>cB!8 4[B!B7v?G!B!T!ݺP!B!!2n.B!ņ @+{1pW$B!8g> B!(f4_+^ !BQ\0_!B!<~ !BQl|-/5_!BkB!Bg_&B!ōa$B!~B!o*`B!B#{|io'Ւə)<}=ʹTΞK!9<2ȴAz ͎f6=RB^M]1XZXf  D`J&d% -AxX ʕ)MA /YH!B;sivQ8ʑ;q'ΐz04 łjj`[-V,V VKeB)o`ZZXX,& & Ij1if =2t@aa fw`;H ## M:CF1lL2228lL{aZ([:*SliVHJ^˗ڧ]!B(@S@Yy;ώĽ$pͲLppT!*$ J@P+V3f77i:IG5t]ä}e; 40Fa( C4 p8݃ 8! $^ܹLec,Y[ ݁kT(WU+Ѡ^MԢ~Tu"yB!Ŀ`uߴ <4*Rv  -Aɐ JP"$PXML&,f4tMwC&>~ar p]-p}WvLier>3s988x$[0eO8#ӀVѺyt!B!WL+El s~^8{6В+WؘhC TX * |0ʗ '44f3;X)Nh`<{~p3g!M0LX͔(D2+i0pL9u:#OQ?3*͛6[tlWt&B!;qw>M;(_,ժVY2X,VBԮQUST(Vpp :-= [  -AtU=ZPa;8S ;t^3{}o% ࿝d=بwin5) Ӝkx}}}.>v7CBXDN.*B!."NJ__>U |+Vovtґ@6Q#J(ך45 Lj -H\L6{|bxNÕיٴ+ӛSN}t{7_{+^=C+ƿمؔT-sXJsߨk1A9c{9h­GNT4xzl}LJPIW6WB%N8P[Fi?*ʕsQNoaG(sFafwY: tjC6&LO'f]Ҁ"KuC-ek}N+3p3U7|Ews"a;s{ꔽȤw~.<<*/~M8<z}b0+XC0v%T' [;raVF7)fWB\ +Mv;̾GCK;3p@@ſo9~)HF4RΧzkxSϧq|${QV߁Ac4׽D*ԩY?7&`"y"r]N?K `;*] FkAE~l2<,էV{?E/՗)g26?OuMsDUbyyzu+ifJGu`?JN>T r-/I>Q9HP 9eO*,YԱOi:%\~\Mb.4FB!Ir?~WQqgúm^`1ԨZ=}Ul] -Ͻˏ[؛!m7 V$ȯ !ˑd-L;V3ghߦ1.dqNN&#ӆM&NJstلއjl1c1u{MWμy*^4cpmpz;b1Q"(JQ\8'N%.~'6_'r(@MNXWM4úa %?ǕPuyOs%:4։~ 8bF>8R|lPxe.B!?6)Vk`#f 4W I'|gϝ󤦥n##͎0;gά;=_a25܃4+5}#Bq;\O\%52~ýtu#0ӕy^jfNHHKRry7l"-=GNl?곽i3zyLX&Tfc_@ L^"8gHrۀ<3tkuK8aʶ1>.WN;qsOuer׫C{Ot$e.Mi1:MYz x.ɻPxFK Pg0@)` #7ПU&`Q7O~WttMRp@* @Ss[t]ɝ`m]" cf/5Zؖ!~Z!(j]2U̥E;N﬽d"|[[)W&rÈULp;t$nw퉟 3Fz5Hq88ӻͧ 5tMC7tύ4oizl7P ׽5\3Jay>3C)73d" BHpA% h%(uӲ@X&LSddI=ξ9yΦAFz&1=MK# `6l`r|,7u a7SQ.$0ڿGCjy/?>K}UI]nUNZE4ԙD'D4#&,Pn?SszeBRp&? %9&_Up޼>y˥(K':ѿz9 lÙ>qK5 HrBʻݏE?owLrZ44CfuE#'w é0[tBC LxKP2$ ++f N 2a2huPp:]nwt8 JaΙ陮JϮI}S)Zt]5]-Z-(X\I54 ו MG)U{n>Yse4H9FFF&gU jo x&~PU],-fA;MrZ@Eb>DLׇxN7`d)zס~)ێc0w(ˏ /Ǒyhd^tbDTH̻B!ĿR W*Umvfͻ83nהBiuWzll2p8I@ N`Ղjj1cX\ M<>{{M׽ș&3wTO*2<723dldddɅ \H =NFf&6ݵi)4̈́ɬӁLLfL٬hq`M4]M{ӓٲn?-ekҟEO7t2䭮LzwF|+w5l6/C}~ޓX[.:zapT3^џSM+ݝ|Sꏝ #͸c,5Iz:ۨڹ^THsP>Y550SD?s:4->ѷc0{ף7:K_m|+e<;;wLZL)0jo8j.B!ns>"]Pާr˻RdвcJGT+5;5Sax; ÕFnt}+7y}Á^p6͎fw 9 HMǵcɵd2ܩAh(>WswI\䜝U Td;׍fne_qLt*错*f4nuvs-" R%T.jILiZa3-]8jVϾq\Z[S/*/^ 97Mfљ?| H}uucJSJ[vCre??ɗ?縊9^Ӱ^,=Fn%v,̵ۏ Uۙt 7t'3tJZ BkTVJ>A֦EZn=I{vu  w;AŤcX ` @`,XZ]kV3f ΁7ywrm}P]˚l >:R{Dx(|ÎtdɴHK{lg̴\͵F5t侚:.w0;ȕ>AZz:ii;p^q7]V!B\'eQ1w4EGc2[VIKMPsp:8x=~ĭQ1'!#~nwG5kچ}b/ϼ{1w ;!r-%kWMRd`n>嶗+%wإiރ{ZziVݹYyJy^;s=r)Og'<ԲjyvMӽk?x&dMu޻ihk>#& JUx3!B-OwK~wgɚl|qO k߽!A3T{}|+m]{&7hjA)9O+^)f/ }$B!5m;W%0<Mi<{C.O=i4;E>cج@h|O}8i9~r^Pytc{`xwtҧ>,'I \i@op{xKΑB!( IDAT|\~iHNk4os+,O4;߫ܣ#nAk4*kߏQ*3e\ <C"-|OO)'?3B!?*۳n|v Y :YqO*7g_8dn$BKTΟ+oy9躞s>x/ޯf7(w݃ !׃r45WЙٴ<BDT +۶^=Crk+r4gYv: 8˟?ͭ44SZϸp\ !t8`=뮹* `h;zpό9g b}{_5pɸɳ>%Tc}gg"xxO4O@e=sN?+w_PYWFcZWF#ďhJ@9<™xPƏlDȐ[IOFB!Ds|4p:>)4>TMsms6>{<#{-O+)+Ϫէ>ysV4wv=Y5o}{'V@̿[PD]kىGw=<l'S@(`M#(:zv׏ߡ^`8Lxڏ:>_;VB̔3g\d[}i%#i}2 xrk&^ 8LU:^oLoϥK7+u/=M,Lz=.8O{hV5] | l7'7Eߏֵ48^ؐDiZ|*f9o>(9̍ 5a)ېc _8ScҴ1vc[m &h-_wrorO{l׆Bq嵞3->=Jڏt]eukwA.b4峮5^ryόOLy\gG }[ڽw:Rt OPV+GS>z{*L(IZ|%GNӯ+l`c1 'GM\y{,ng;H۝[I&`ދGc1ox*I[(su=3Ja5; o݊Ĕع9%3;x˿?)˞drgˏBbya,|؃8͢z36QN*f6m-&p*ogxɽhZ4-W1W:nթר$q"qZ1U~JRqoFp_qJ<9lz3w~z;&c4Y2S r OowN>|o7Sgi_)'IJdET!E5耪69 ssG[ wQ0'Cyg,@6jH%6@b@kˢ8|aM X1gsGeGP B@~^J+͌k>1BC]uM{g}_9+>?GNn+]Elw(yPCu!k gE/2xz4h(y+<"qDF($Dh5p _9MBvT cլy?>K}UI]nUNZE]`"g׈#h~/5 IK'Ղ8c qMG(y2ĶemQ;8+?U},0 ʾ(. 1Qqh4&/Myi01.17Qqnb򾊉1F@DAYY]?102wUxΩ9'9uoGVZ: ot{`ߏB'rkd>[ !Ҹ|uVtfi|&X,G Ua b='zc $eQB;;r" }RoTm1投Z-vlu?̺V<"J[95L02!Xt9:VXGv s5?9w7xP}N**w$;;ZC+_Ɣs}x,Y?Ell/Q?NևEUoGam+&JR^ύpHuj̀uwN!/+Y0Ňq]fwbX,]nBi+ړDȡČWx2Qy%Jz|Q% >~rf7CKk{ _ VWHyxǎ!nF~@H@-~[Fˑ<`ލ3wr=8tJ3xxrUe~?̾N^p+6=/5nMf`3O>fb#_ ӆfybx,ьUX 62oX{Tz6r%k1geXSв,h .Yü[u2~n׶ uSs ]ذgw2[:MYu_8zcC=I`pCNEXK_{>~z@w.O;N'6%L.%Kye?Udα5Mq]Ok:vwTUV26S곜kXɄKh|/z/rb[Ȫ{FQ]} S2i$}ԋ_ GbXv6 Io9I_d%<Ü4;dnl} oX͸1oWT@ͩB"<~1P,P(Ert"|2lNݕ,P44ygZ UX,b|)r?8^446j]#t>kFUeX-4Jyi\sA"dX E]n@.W //(E 0jBZesyږ )tS2,K G2G=GJ\A:$PA$ pħd94P_̖&2km6@y55UUCt[U]/‘HH)Lӭ"鯵R0.œ*?[_@@x?POҠb@1z hwB8 "|l6G&[%#}_,T BtG:gqb * žӾ/==v\Q)},ǟ9Q}` uoOÅjJ t~7 +Ǟ7o/qbX>tZM.7!#?%BI<ߌ:Zǟ{*WWѭ{%i*+Ҥ)Rr@1\&a@~hK5wj{諢ʤT"@ʼnB JEBВ%KsKL6ɘpH]R+0qX7- Pm>=:8wbkń39v<8}f. _\#9al%in-MKOKfӯeq6qLYc;Y;Ì){Q#v/Ȕ}}Xergg '^o[+p΍;B7P\ρUw)0WFx9rnQ_am1qX9װuu!Q7_쳎fVBcX,'XN1KQ7F2W` ee58dΰKDɄ  :8ޘ*vn#L-jNܧX)Bi/&2aK s943qSup?B?7xy6>kE&0t= .%xCN [xر_ gs@MT+Xb־-/)9⍥ xS-۠S. 8y)Zɒ'o6K?.]W?ɻYl&e^3Vy* .9So[ǯ`ߧmk')g9&ʱgˋ-cSBRwP 恁zm2UM/p݅9e?x&sfKO8l&_xgG3BIcȢ Q]kX,O`NlcqYLCC\6U"A8Q,K:a\'^hϵ2S7rfƐUBk!hA{kj.y?z*@{bOFI+_gmƥ &{._U=n3mBu'Fα7) :#woJy)g,~|/zg G}ɓOarԇQ;VGg{Ѻ[\Oczc|-oϢE_ YMjE nx]}Z Of.b|8ᘐGf|)zS2#Qk?%9L IDATx\FwɣKp8umT-s:;oL-.&w-UjϧA_wֲr^Y4 ?W'E%z}+yygU޺Md"C͘({^iQh)]"`ݝSdhP`C ߖg*r7!w#̝ܹb8c4?}o/.HUY>=zdX;xaZ*tʡz.8g/&^3LSv0缝(g>嬫 ܞ?q;ͻeߡ15-Pؼ_I9?c,HZ9@JZ6.@H;xcF;:t. }k=zxK@NE,]2BK:rxMl2_=&s_nas9g3Iu c'0y y0Ue &%Zn= ~fZo C^5l&1g|2q|$C 8vߡ cq]㢱,k2O*p;cEρSeTNe̹F3rյ 4yx6Oľ\\X,H~ALR<"kW,'椙A 9 K\D*@0@xC:NHyG:NH<E\.O6'͒ddy<\ر7_(ҡ۝!$aOs7EʓxtU1 EX fsd¦aL+Wr%bwۡbX,MW{CwΘqcq/)Ew*|GW/ɲW_d{aͻ|kOv^_ c,iYԏ_jNi8<7ZrRo#ބؕ}"Z?8J?@+%+lubX,Ų]hS%UbZۭmI ~,E:)V 4# x# <CDQ5 c >si"@ :nkFw4`k g$HE h+Ak[,b|H}vb'~i{lLT< ?VQDW u?Gq+ӳ0PI YYq{9[$*RzB |k[,b|RIc?_)Q{s}C~ND `mǵcH}ZAR?%JND+ AHF$"9P~-PF"d[D'~A,bX,A"[2 rE^va Mmz01uM 5b0F%2ՂDiNA{s2[]qJD͚E"Aоf~机YHH~sX,b|h``'EP,FkiݵBQҫW'  5F"BB?73ִ~I? EG' -C2Gyd|8$٤C$vI#[bX,cI{Ml"b(H [)b'@w5-QfSŪUCjGġ&_j\H_U3PA)f שD$ aD(OՌq =<2 8dĜ7X,GʾZE]nWUV $˃)n'(B5 R iѺj |EIz$ŸsO\z K`km ad?F6!/Z'_ ͜7QjϿwl>Ϝ}:SJSV+8w5i|q _N>` X,G~ Xc[m{P^\L60]"ZnHA7IH:;"j@^;HRDdGu3#yM D6D[%Ң <0ځ1Bs̚ F*U0ʐۻg;׬G_;,&<0y;f{4?rnHk8b,#:Ȳz:jlX,?CGpCvߍuף BG%' 髄C@h,̛νFIRQHZ kE>PT1[D4Dv@CR ex=mXǔq森?}<g*B bkYMSX>ND0c^ 2e_1V*ӼOy_U\<ʥ5b}Գn3)`71קH#ur2%vODCSb7O4\99\p{8x}pfom'/vaL=d~,?X,hk$U,cK) YddHBЀR΀:0$ԢRʙ"M>0}c olGhUZc5z@5ݍ|1v}I7!466ggA07xy6>kE&0t= .%xCN [xر_ gs@MT+Xb6Z^S&s3[KO[Aϧ\q'{S,[%O9+rK?.]W?ɻYl&e^3Vy*2S=ᅱ~9`O\Eʜͽ7nɨ_ { } /-'qc?+KaIz͟ĭ_|`VQԿ/|m7a%Gr͜|mmg.`;&GNd汧sB:kX,O"aI~XoͺB  n+% q86"YSQv(P2鯔B*(EF `;}~|)0fc\Ё2\CSS -nO|,⪋ߏsF݌Xvƥs9so-GpT-W +ޢObtzZNᷜ==?;q}XeʜOjy?p t[/~U:"\vxj`9W|ʇXsL˸C)`%7?䧿=z=KNou^ s*asĽgw"W?hACy~#*;UP+fpl X[G2X,;v_2 `Q}֬ۄE\!%l!M>D()X'FF4q^!׽B&8(*Ƌa?q@ JƲ w@!R ؼLN_ASӽ'M11r[5e?M'|yvp7|~~V ՝9Ǫޤ0T=ͧ=i5|$7Y&O>O?Sn,oGX]9VG*>g1][ݶN 2b< aP=!IwFoݝ+.=SڷϺF7-.ç? ˭ݓl폹@eԨr˥ <_/XbX>$d&8&ُ\w}2e(* >Os6OPBҟ JڈWQTO# jɸHh[I~a98o |@a)q q ޥ:Q72e^?t~gs]#+V彵H E?qvgQ=f(o,{|?խPczdlz׺HZtXwߘZ?C]M[ :x>2E2ק1eܾ:yKTV\uCyQ<=țZB~?~`vncҿğZԘy[ ~Rٽ'3^ȗ=sh/:bX,;%s=~ ^=sA{sA{[^|LlB!"@;H0C:|@tr' ge8cU' 7t0w&IC,D-`3}fRXݳ8c??BHo>GaC kG ZH 5ٗ#yg{p)SؠI3xxrUM)cr`Rӕ*k'̓OⲺ<8ems/V<ÛM=[X{A?V>F3Va /HjXa'Q)ZZHnYƨyV.J2bNMB~'xl{pHo'v.>bZDkБ\[&J`⸡LasM d,"q)ϡB@Jɲ~N$*EO'th o|PׯP&7(+Ly (ByA8.js ح# >57}<,MId3<3WᾷMtDUُ߬=2,0f ncq}r]P|g&odv@%q_?&?&uG˹ &Qe\8U7yEƲ;go7BmI `p]e^)T)Y溪sb5s8e:|᝘s'vv N]ч9LJ?Sn;b|):k>Oĺxэ}QNfF(lkazVUkXEǑוRԪx϶{q;{L=ξo\4֜e{UuC-_#p|- \v҅<)De|>qd S~5?W1s2˹ΕL x*'ىl/nNg1yNr_8;!dX,* D8I_d%<Ü4;h!w?=&P8C@UUѿoO|? 0V!pМɳ ؼ ߮. ZYѭ5t{5=j"EE:+ґQ9QHl;юBN8V:")%8EP$؜9K}C3[245gh|ŀhB˃?\sEEnڧAmnRL8БpI}c oL>_%C6[%Kc;Xv, <:6ɆӻӖbX,m[|w3|x3n,"$Pb53Y1ro6yo ."^[Β7]vԗ\HIeEa<Y65iK#hhl惍Y_ LstsI=R:S.G:i/*JyH!1V.w\@ds"B\H.W(/@=n)45+ѽ^]뺺P/P($ o{op|0VibX,Q&%TƿN6ʍU,ґ~oeҳGw֛~"kYNª6J:tgntJr-Y6oiir74Ge7MN"X~wy*B)WWR]UAJjURQ"B P/ttMuloBG#DS;hgbX,0섄_P$e԰q u[x%Pt^Яo/zt1tO? a9L)Lӽz8#q='*PrE2b'=OаX,E" ~b'wv(6OشKJ@6gŻΪH{f޵UKUND֓0RB$h:xZnci*Qc< (W) *B_e@)iZ A@g45eشu4gr(TT*:a߃DբQ#bbX,哃 )JD+tKcnX'/~I]*TWUP]]IuU%i)/%pD%4ZC_ET Ks:RhRt}E]Qab8*}bX,`T[{u+=HD-VI[aQd4[+pB7BHI;'&:"nv~*i'" J $tp iI\lD7tՎ@<S)eڏOwL_E27ŒhX,bLJU&e@۶ϴ4RB/dX)D >W&7IOeƀ7|pʉ Dgɜ]fGR]>Q~Bc}Ƹ?Q2~6* IbB&/w@֐XPZ&x0Od?R'9Q9Dfe"Nmd"Dx'o`%AbX,_P渪dwo*D@7FoؘDE+uT_#%t22%a5DƯN й>6~Mn@IwaɓZb9'6$[?@k򕔘A@X>O%?2Y$|#1RJQpQw3X,b#FjRgP,"cԹW (ҍɿZ#<LJ9"N-Ӆ EIǡ: A t0o|#] NRZ~s>v54^$GR:,tsq\(̼BR,ǻJYbX,J$D)G Ì(M5L A_Q()sI2 8R ]Ǒ8RPJjgAw5ͰJf)1M$t4^\*M DK"QU2%7+evtvD#8hR ]p'@DUS\Ldb?,)r'yX,b|hJғt믽DqfsM͡(0rR' 4%HG?2c\]?@+4Mg^rwhE޵0Q}_72#y~R"Jp0NH#ft$R:R?%;"څp-8,jX,bx!j1eӥM<8446>|- GSFZx `G'a"W&⯴S">=(o%ةvd?tLuS~SB"lR< ]A,ґx6Q3rZ,bXvbsw'j9?mbUJu6F}jC|h0#1p2m! 셮h}$))M*7ͽP">MYqp|A8zBJ\m;NkAR縬k/,$CwgͿbX,qAQhMv9qp]L&é'!q#/|r9l(A`h>\%2 +VQwؚB)])H!횘nPzQ8Jv?QZ_H%P> PqET(2LrB:q&*+  G|f j T##<DZ~,bX>gʵ.;ԧ(44bQ{½{Ukxnƌb]uU Hvт%*+0e~B퓊Dt>l(qXkyMH6?&;W:RL+qze)B) ^᥅Kn}%,bX,tIŗacu]RtJ֭_;(N:ji^~,$8^bFb.2d*DnTh`wA ²* Y_an"w%Nhػ:+RϜ}:Χ8V2qjmI,߼;l\ǚ?BV|R׾- +“>辩:E5n !z|y|P11EVq5B ?;?gw߱q,b,heoϽ߯=*ƉSw~/y0y.T0q:?{xU`@^*$\eh ;4e-!HRr90'eoɧqcF0lR) kñ$({/h} n<`RH!CDiWG$v7*p,Ѐw0E?t? D~I:큂fyw**+J1yah;C:t:]7G5k#}rկ?\zϼnG{4?rnKd~/^Nߑ0y}*?ꓹmdP7.=.mh k }+y2[Ә-~e[v=gpv]ԭi?t *rxnPky\i~Uw+, aR%*oZskcVUUѭ[7jjjѣ=z J߄\| #k>e!zt+WRPad6JK|2('.0 HP@H{KN% ]G"ɺrxsHy.yUUo{G[p 酧sg&FױuFUUUT>3_ Ĺ-!gP-u,۟*!' aۿboٛ3YqdӘ>}"D߯ök\p߻qTGNK!KOݗA=<3}ҍs'"kgp׃s1e/j@NbR71קH#ur2cm_PTX,ʙ.~PAL~-;G{.8=k>c8fhH1o>~:^.LW!+rGXls}YW ~s>hF (c]̬Ƴ|欋8}pWZJ9в_~jz\6uJY~u7:]^uS*o}|^6?*nX6ˇ'\x({8xGsœ|m@,Q+{A/j:T"B:Ηs5x/әvT:|VcOe']"KW⟡ʑ]T翵`P]]MݩZe3nz8 K=tTx5`Vdޘa;rZez$AM!dEk^5xo uoyNCȤD\<ͳy+ Eݒnݦ8a"!?a圙ǕIM=qYUv),KqD-oǹ)}t F5z暔r캭7-‚==+cTĚ˥i3gi$dn{Y@Mgu˂1BoGT<}-Ѧe~ i>Y)גi.mF0:[Zc gfG`c"y5X_d!ϱy ¥<}}DRoPFt:[[[ zMթ`̹;u'OqnjrTR>^p6{_~`Q2v\3|x!s`ZlJ`ZHlTŘ5QtJd=.KQHJNF*X<+BZZ:;;;\\\Byot/~lKP <ƕTGs1=@G|/Ԝ%СުV ^pYx ]gչ#ֺ`\]=)r>Wz $}^eܛAv_~j:/WH;]gͧPIq쾎o5|6~ u,իyz668 4n^>6W,,+qSg#PuH~kvWo -Ь}~W4MaFtzEG?Zg5G#ڄvtttJg:xj}^ZVw&ڊ2ѡUCKr=Eri܉baXŕL5oa/zdت#YZyIw_L:i b;f\6k R~D/9 `w1KѪo_uBE3Ϲ_h̚6  F^U*Rj%zvi۷p19u;v[(OYzR /S.;: A0f+9ۄ,_3X蔌݄2Ȩp;x}@ZZ:)J࿨˜tKQWv#$z=.vxuЪWRyoJ,usT,~έ;s::;qbͷ; F0:ƿQBħ5q4OB\N@|ڽM+۸pzBNx`Q%Z*w"EZ7:y,(7?uDq|m/~9/yf|DQP긚·z]I;ti(aR|,ի yvl=ez׿:_hBÆR7z~a-[UT=v^u r=sg ʚй"$\Gبfy`^ 8(l9F$qtx1Sy+xa"D}7|AڕQ+C+\ɒ2/I;FXu٢1 nϼOoφ|c?¹3_'׸c[7eey$쾛 R4~ںdQۼ/LIp1"6o$zwzh1S39tJE$׍d|`0B5TV|k7u}q;9Դtq+^7Wg W3eG߯{?|֜6ő e,3/j i1!͐q纣8{z=lY~̜Z.ܘb?bKgM[1.1UFW){/ ԳRG=0_ h^tdiOΖQ$)͢\DYIL<j@ $$rs@lI=[J}9ި·pY1^:$bkOQh"y5X_L^q,`Y jrVm>7WxiȹeF3+F+~HXI`ß6"M{јy6ſW(˴eZZܼC\B"II'$kWt1ɩ$%JzHzwN(66(.8;;h+{R­*.N+Bnf9,}Ms# _̎P39I?APJ:Ik ӕe0:?wdzy啚Xpցr a&6_L'$@~% QRD^%uqc\$'oܝ/Gpw/}>8V)Z30y}g=B)k{ IDATzRo~43_Tuf۹YzQ$壎p>-*sZ~;݂#BqV-Jnʀa-?mɎK;f_>C~hR1'|\s…em}.> )i#jUɓť#U̱̓(UVmRoU&tXVͥw,&eo.vQ \rRng5ʲTBֿsbYuGAD}[G/W֏ACVJ CDJv$6Ttw2K҈ٺnT9>_7)O9t]]D@MzBUS{R7#|ErhzZ ;sCa zN4Yצ~<Yeih3hz+3[֣c6ʧ[|HTѰ"2p}E~3&r:f y|$axh94+_jg>=6jDžYvI~Ya aET;,;Np{WKQ̬kν38 G %oIkhhhhhhhhh<"H- Dl_s5pfRVvn?h4T~z :oI~Т&9A:=A>5ER>&uDB$D{qDn볦Æ&Ko݇֞E:&[1trY[T)bV{-ƣR{3hοU1W _=zO?B2S'C[#t֥B׹бOK= v/L?q=&q{a]fYo$ kNv(w(='l>3AjtByrW]ĉm=rlƊB3gpBAҦ*CGIws{FêqT0Ƭ;3Kޥ !ݘ3& )VN{xsm92zqմk]gSCQ]a}7͠,txIlrp-L*8=h5ba-Iڱ3zS *@O ǘ|tFFc)nshK^[T_!#,m{ ޡ*^o3QN==m$c֞E0:V0FUM.spFo}q^K:'vtvW\[Nng@e_ߠbGCi@>f5D2MuoJo"?xg:}<Us\P[>\uԜ :! O'EAGh4X,kcԇ|b~%)Di{5siҬPt=Xb,=LqEA^MӎE+NqL [vd,I"a YQpz._l$:]9*T-:O7O;'sFXG'+ΰg7N`/P/>G25F"ġLnzG!s32SUپ#x\:aqJP(WmJXޛE=U}|\sor. 6y>YڔmIx';Lx|FJ~1kJq O MF<Ӽ;ÿB4_F`š ?q~څ!x۹tw)3 Q} ɶ?\4oK(+|+TQ:]`݊<|nvUZ}OۏqV1sۖ6~tB&m%yo[ANsؽ49V'u"[t]6L$d',35bY""3I'.kc^:?y)87/#wlUbrLkMpu4zԫJڡ\M@ XsF p~IL:Gpg͔sI=tO5pbj>K׶йWF41.7N@eeXu5dmy=]a*T_R8IN~vqM.,\\:Qu9LB|\ģjS6ZXD,Pͨ?]1 n/GJ%dd&$k̶;?J ""hYP/;^?C)jV[HYm`,ne*K?Υ1dzuWU?""r|(>eFxEz $>'d\5Eɶy5ѫ7W{a?7wˌ7IEw[ٳtRjt9?(ʤSi&,m]ɳ _R2SjSKl#gXAf?Ff(x bp誈GM2~Iɑ ]e(Bs!&REt (.N>jdiRp7#L,>l2w*+5$ʿ2o>BǖεK2o(Rwrٳaٰ\nZ!{7ƥse/_fɼɣӲs>sLm_'ԯ#3Ȏrqvo^C~ cC<ڔ]\}ݡ(xĐڸ4/ƺ6O zNo@QY}nji+oo 5.)!@&Gs'wuY @Q VlauF(x.Eѱg"b\;?}$/54444tPlto@nXm!- [f0h> g$_ɌrR,Njl,֕~n?)*C Fl4OLn#AxV@bX΋;ܨX3};#l:a_'UF)мSHȗZ2М B)NuiEt:cQУxVDòQiB9̢khhhhhhhhh<ְGs544444444490򥡡آ(E|k<⤟BΛǁ'?;:{'=Q+(}ZOgjcOv7Odkϸ붉??Uɯ*N MK=/d9l%l}+,M݊bHaڣܰY'\?ltJ!^(93>ȝ^D)abX1 h.xסE#5}¨_JQĭv:{I"+Ģ9WI!_zL,Q4U[MS%QjW^\%獽1=>؏6 ̔kZ%N lQ*ȼN=CzV 'TDx*m(?Nu K¶Ǿݖd ,GX^sCQ\C9aW5l|эUK((+>aYs1M#!!'W>\dܼ~>AA^hDDɨG!!!2eKGêT_s_/wlߟNeS_,lu_~lt;CgK:5@)S=B{ ^*^o3Q:]jwE_dž%] `x$çEM-r}TRL錷%סB-Oqq-m4oHRR^+>GrfZ(dc\'>YKܽ?4^c|ڳ_QFJTm!~=}Tya۾"Jq{Xy.K;?J *d&g&?/#a ++*#&8Pg|REeNUPl"Jm,8z{$RqP{,N}Gnr3_?!;:~`/$eҫpy֡*W#l]*((|%r4ْlP[i yK1%U<6.]7i0{yßN8ȳHtFFD~$J_/CP?UcK}"Ģn("b!K)bz.kAV; STeflUdtV IDATcHC['icAZts9 MK2;TlO +<'\ub[t3Szgۡ:3EijRw vEYR#g 23umDt4}_C^Kr7~& Ck}bPhm;.Nk%}ھN_G]N ' #S8}j+sz׹mˈZy"Hz)̼^akTɉĭagh>e3nz8 K@gLO}=qO>/:UϙpF<u#\?z.,B!j.|׽1v&].,*HnM}:}!q<7 'm's`tK}w ІlEsfFWZ,KD$cQ|7)Ce-~ڳr Gvҗ;M+ȣF/sCCuEC̜v>WqOVʬ=~UJ>5mjV ;Sߎ nyZM2kل4Dr֬kIo4w6E]X-% ϸ/0e֏\VӬONXR}*(NYF_bLujM`l}ϊ$?ri 9K)Kl^ǟcKy5(h3V!ٞXYF,I"WAKS_J#p^.n naGlFԓRVyHZd7kd+?7;j˗' S%]z\+Rnܳ ["!3/ߚM1C΄|S(~2g{Ɇ[ˊvNS_˙t53dZ=g{+od]UI=&WEw_'1Y2bzĨ-K^*KmH!m]*<+ +3$lܑó;-b@v{/Jat7,p쫓OfIjQ c"@xT]d%f]q|v$g^?^!sF,>Z~!T n݅,*fOܦja}GU(~j[zI ]L %7j&ňŵX6S)A&AaFf(l7t{$_jZCt>ⓥ}NY5x,/,/[~588eَt}"5G'P*G6h_#o(!Ӛ8|'Q.A >ަm\8t!'{(ؒS~/Ҳ})ɣ4X0v<87n 9Y(q5-² 䅚- jV8DB%+֬g|s4L^w": rqT?q *WWӌjv(W:Pd2c^hBPۿ<[{аa3:ԍ^0Er-*b;Ke ³eMj\pģlTS3޼^juDS=-P(C4' 4^]q_xf/>H2:8l2c$ݟXd~3I;FXulբSgާgC1Vҙ/Փk\"F+V$clިRږ 橒n2Kh놏/Tj,F0Vg!>+&_ ŋDo;ﶠ_| b0bEmHF xbqrʺVU9^I+y> ( svr%#{UK_5/Y1KSQ߬fבHΜj`H7xP=pl e!XDHÐ%`H3d`*c,zݷʅyylze,SuoqaoVϊF.-6wlw^z?6ή"'-bn0I9;[nDMil֏_SLsMf+xX rJhh%ոZJ9ިBusNPԱd^ړg;^ރ%T4-չQJIt oN܋์)ua,ivFtl^q,`0 `Ģ|XfږV9ToۀR:йפO:W'GWøi6VWjbeʁr awi/BzaE{v3m9u] \8 R'.u*:t:RI5Z`w ɩȶװ*ɗ#8fVM߷ 18:3|BknۧKq4'm旉o-9Q(լ?-uL.W5KWe;Nb!>؏oϩȣ\>AdK~eot<))]&1̠5̢x|1K'"[s~P/ks̿2`"v?ʶɎ:vpj ɿsrd8+>1'pZQVCΜҟ1l}F0;|p%b?+]֝vգuC[ar-r2UB d=3[+ 芉Op{82"&c*݊- r(Z8]2FRRBK>S(F ./>UF\\Ko 8z Rx<[Qn;I:(!6n&iK^%ui'so2ؕwILNa#Aag'%+KȐ,5'U9sn/e/(ݾڝ[fs#"&'IxTm*y4W*TcڼYyrei+:l 2dIRoHEwgq+SYt.͝[}jB]t5ѫHI3BL:bf~Kc uOUmj:3vs`eίdƂ?9|)k'X5c6{O?YZ|Xš#O 6OWmatߪH yc5knvSG3ܨР;9OwZd8e$僖hќ GYVD, Ń"*}Jxn!54444444444_CCCCCCCCC As54444444444_HgdJm(Sy3"ѧ6}$3WG'HߧFPgb6q^zi|һ߁硵E^ԭ H-*JaܰYk8}j+sz׹mˎ>>I[xgV5i!AM!dE"{^F2MN$n C>?C)piX"#cD΋9Z=} 驯ӿ8)GşU?V'SpMEЦTy˗Aĥ@E''2ΰxqћ^9 =(l=yfM:AdT(s'e jd_t QR7lPWXWr9}>T '] kQq jH?r(lY̩my2TkQ\q-]aE^ ,אc~ֹl(ʵa?e]h̦v1S!rS ;-⭪yõ\W:rwd"G?L{*I{qVgiF`Ɇ̯_~fpSeoZē=z!z4V')9ԋ'KٳA_B8* 3kl<8OW=kϙI],kOp3CN<dyfߏ~w`rtߜyvb6Gay{k j}S.gj]8i*5j`!D:O'{ebU?wW{9`HRjxg6/fBߞLKl€kcgVcWvp-?ϵ8`>tWn*Ґ}3I^- }6^8~(WM~řҏ,5%Lي枷6[?Q̝e xX;JL H,c{9ɕMŌKVN3-sv,frLܫJ䬬 jj=1n%kFD9I1_u7nnxz7'U.173Ϙ3;==mEMps_=$܆O42e<1j?Xqa̹1Ƥ6KFt1p3Uژ~Sovu IDATˮzOnmh6'gycLN3_+SdZ=X򢉍vo+LvNN'{ULwMŌ /S}潥.:fɎ >'DŽҬŮmH帑~zv}_Ggmq37?oMƘ=fL˸07݃l战&^5qxܾq5Hz|C~DDDnxX.6܉ӏ SYϽnih/l=A gSdQ׶\=O^?sx`;}ܡׇ`Rl~6ǿ}@aȄ=^ k8r.7V]z3csZH) """""BCɿH!_ P<ㅭwgV9wl qX?#e+C_{V$Ṳ6Jj^>×="(naY%5Fc1\h55Onj~IZse΢x%Sy &$ 1ds+r#Q/ΓڏibXޔݞA?ēwt6Asz1ۈ,6~gg|jqO.4.aNڟHwq nEW~%iN7QeO S&,Weǯb[y2@ = ZZG ܲgPs(w^ `cGaHupzWi["UM#{}ٓwaRNU@ܸqtbf}7p٦(_>Gq&r+l/M_VKyۯuN-;H l˽MC)uṳ{Yk éiu U^e{cvēIajZA晕aW<&v|&žm.6c\g״}owcLz;XꋪeWM"ϛ5o%1ϗjCMS/;n֯Yc\nw&3B.ټY405GD30!_:z*j6$_W%݂iTLJ 9z7Ųru>v$m/sVIZѴt|~ٿ2N}ҕn*ce/':a+B@Cx;{_Zu/w-)AI/9MBhlx+};RsC2\ak,6o5S֕x[sj[f!+ZT<\KףnqX5$4Gu3i}dUd.sOOt] 4Gĭx(%,?ho9ݸN`n9{%mjfF*羫 `21}Y\iw벿}Orǵ\W:rwd"G?L{*gn9WDzrQrar^{A)X8H?-_h5ZW=?7i;?M;9!9$&!&mAzjͿX7g.eAHӪ½mnxO$^cv.cg$j>r{#`ؽ,zűjc_9e]}$c -K|AӿZ_RٽйG>f!h)cOXf5ko {1H['qAǯg&iNǮ~x‘}9WT èZ^<ݜymqz&?Ӊ^dq1:zVy5o<%Pn \OïPܫ}`+lclI1v_9z 9zA_Bk^8=g&u7l?D]?=,z g@^I>eb6|t&n #m(L쁃K HC cϘ'y}:b,dlxru̼U`}#>sY7},/.gntv[/ф_qfՇ]MP?clg^7D jj=1n%kFD(r~1&>cNY[Q\.1LLK?i>T)aS4&e+ՋI 'řKtiYpg>Ȕĸm`E:;j]n~madDS?7P7%ڜfj;ɭ}2ɍ.3Ѳ+'uO9%sgxYcÀ)fzV+UɴzӱE?WkWN~M6Od2}WsE=*@&{FK216*36Lzs` >'Ǿ54{ٵ釹7rݗϮ}컍7nodZmFuzvSYϷ2|,Pt:t#b8f Re/ӲJ Hpyx2s$l_sM|T~e(V,K'_,\F3nuܴ;J![,B@cAK:b1eIw{)Pۄ*gήt(^@;2]Ȝvw9z?,5w`|5lY:%7Y_G: WSZ74G79kaR'TUrN,n~_1:H̢xuH|LSwGac oeW}<Ӭpj]^2Uk .ʠG}u;OV'?N:K)8$9CmL>'GŀǏb#Ig>e$t>˓z`޻q\%rbs}r.,5t)չf6Vt:/""""RH()$J%_&6/"""__>w跱""""J2?#ZG#""""ٔ租 8G25*Z$""""YsncZ߬\K>ݘ79:PZD'""""_ĵ|oZ!""""Wa?"""""BBɿH!_DDDDP/""""RH()$JEDDDD %"""""BBɿH!_DDDDP/""""RH()$JEDDDD %"""""BBɿH!_DDDDP/""""RH()$JEDDDD %"""""BBɿH!_DDDDP/""""RH()$JEDDDD %"""""BBɿH!_DDDDP/""""RH()$JEDDDD %"""""BBɿH!_DDDDP/""""RH()$$1X`,mZMM8\H:^0 8@r>*}FРXcvCN-z{HaaG'FKZs~sLRַ/~ˇ[2oXL=w/LixY\>f'ĕaRNՂ=N/aŒqcj˲gov-²wUcEtd`V}zTrDN BzJ4 DNn+#`bM՛kO^۟Bd0~X?z/D;S/ ^㕐YξJN D<"%r!|s>{'版\ɿErDxO\q#fT)f,|+~DAyej@jba8d)][`,{Ϡ'I9T~(eLz[jk-p =GHWT}wzꐣf/D4 zRտa]w ފO¾sރ,Xfy} ÇW"е G]/g#rC4 fyPz[q}2>eaSuOjYXEľr"l0ehV _߀Ak ^_LTsEFR }RD6uK5OU҆ [jc֎'[J}Vs}$''ceV*} 94+[L0$֜+V䷊Y9#dUٌozv\*wڐ EEllӃF s:o8 ~%gcLx̟..eoay cټ<{t6 ǥpٰM"%dgT+!uJ_0`ysWo3*1$'Vf.a(2G%#1)O{oY0:|_ gױgr'_AW!juJ-<?jc0 gQӽ1U=du˹ Ss?x\Ȟl3邆ޣW^y^'77>][^widbxջʗ-\UlnE2z(uzq|k9*0sN yS}gELө.>}홳k)w yg9I۝;iܹ!qɱؚGxf7{-JUUQe;ꕽ]VJ9Q$: B5EFȃiTז>s*sLٺ y2bt. L>>F{g?qKV}13W(,=G9t̯J|cs@HCF=_ |[-~fn}+eF]w4yZBߜή W#y>c{jIc5wm_:Z?}=XlW,k&_rŷ#-mQn˸`KAVz3\pvg>(:2}'g_ŋtWS5cJJ?f<'txbULՇfAާүT|}'iH:EHYV'W %-<geGjű8mZP%""R 478Cy 3i$%AC)N ,IF@Clj:nZbN\KR8|J< dШ;s(*Ŝ>;]ͦEėo_^q~a/y9E-l>xzif+IDb&jj9'Fu|HݰCw>Vv5N6,ϫ{ȅoGinlϿwOf"'3\MOFs|],C/=,@X١Ycm`ٰ0d^ÆS3į/v]}?ڼ.:zP/qVma۝+q%N9' YZd 8;di3O4 09x4 Cp˯#I """׫KObVd&̼ڞfoN"Pbl(e'H찟x G5{jWDi.[z iiUr$;wzg\ }GhDԐԮތ9e1[^>ytLM`?he,(r+:LX~2eir]N{m#j;e?BX#4d2&iVYµkK;צʔI 9Mf}};+`wc8sCƮRq4熊'Y70ŹQX8NOxcr܉mYf:|gr8t*^MYGynjГ#tuRtUvlqB43ѯf{ ̼Gѐ̚8\ xyW9•zż礐вa3oa\g,|f: 5d櫻"""""RhH!_DDDDP/""""RH()$JEDDDD %"""""BBɿH!_DDDDP/""""RH()$JEDDDD %"""""BBɿH!_DDDDP/""""RH()$Jav`,k06&b.$u/~U`B 9BIcch1)_4zueޭs˧ábx^M]9: 9qK?#j_ Zj*x]?杣[c|ysz1r\xDDDD$H] k an=CZL?;a\P^V▷+ZW]cD~!,JUoˀ;εOF4,,6|ʰ\- ˲h4y?WNB~*kY0hMRZHDDDD?nIot'v lv#@Q*V+I_+dZ}~Df+@VpO0N^v8MqєgsvώЍ")'uFM v-H9>8mQ͇FuIuChp FotlFOch?p/ Ja0u~3oEQw xڰy$r"1ReOL:>l8Z[m(:+?$:}?ԗ㭪f."bl\t8{N(R }6r*ðkY,aaȼ iycs>ĬLn~O J>Dp5gĹBx<| ˎ:W 2Oa$dπ5\>٘'ٵk.GpVDh8VmL=օcs͐x"»3#""""לɿLa֭=1ɤFܖ]{V~x{yG}:P\sV ̲Vs`g+Υӓ/^wbwN,+~G$1p/:*5~;dȠWEDDD9fM~A.942o\Mju8(ا8Kh>>! h iOrH[=~;<=1A<>mrCng&xbǸtRC@E.;&a| neSwp7jP%ܯF*p◵$gOMήI7Y'H˞Mr/F7\ i';,Aj L<;7wG2NԮ=$&]'4"""""=wJ᳉[;wcݾrt^~-q荧!$?̎S*/RiOzr2N> 0GMϧ1l_垼tX LJĊ&ȍɎ1C#qc.--G9iݬȹb˭,6-GUn毤G[q-OOS%}4?1ˋ)_:QVTTƉ6%ӫ{ew GȳWXƳ25'{IZkA F'jC: hMi4uZY~9@w^ dGPH2UaGum3X7nk׏.NUIbBZH!_DDDDP/""""RH()$JEDDDD %"""""BBɿHf8C ,: k%Ʋ\obRlFϰX>F'7MQɲ|0 WYX55wR ]׳'=:T4&EZ׽7=H288:5 #u"Qg ;ӯP&\XJɿ8W2ޟEʵCer͗',cƏgKR Mz~Iz\nך>O_qE .vR휗rDDJũ*ulʑ #Xz\L-JU(aa Aw;YH\ы@*׾2Aww\KbJ5L,؟ﵦd_lG/8_E`Y!t֜@b)<F[=6}WpT6j휴/e, :tnͺ|4b2o[<8*R]L|u&fخE0$aY^ٞH9Rvy$uGmb֣OF.Tq z7vc9""b%To~Ǽg3t~2n&g7nٶ cXq;3b1I~o- Vg+ ;<8yX}ď]c/L԰ 呅\{P,3R$OKPX"۾z{$&}m&bөQ3iktكn `n{=zOxZU΅M,JA=H'. fcS7o\ҸE-ʗw@9204MQx'Vd*W`jrDDn703sF$ON64ČmhTlI9m=^2KR̐0˄ Xg1g"{Rn3M⪾pgIaǦ LQ&\Af{ՍK+H2 5j= 祛7i^l͌8 JϘ}Ms KN nOC3fe7j*hg{EkE0!}03f2/,4us}`eLYLk֟Ί1ٲI3cO/nuvꚷ?}؄43o~)f CfGKs8_>o9Uϛbb6,o7n`t_̍Ї^փ0jE8B;>2ޒM#@BoǁwzXOwDSODE;v'zE9&A: B*iladl뵯}yyvyۉ#S_VHF;.d#f`ua 7r1Df3ߔ@j ߊ\6Np8v!D\'`#!vCM2r 0> JW&U+'I&Q'Kaj=Os3:[epM) SttCR'2Ե^48 h Ŀ RN39(ᵋ&pSy,v'/~ BG& ,3 {H$„J)3g|zp8N;7+!Qߣx[;{xRv??$c}_aB6ܻdhn',;4 @)%<$AjI1w+]g@ tVpp0i,_vj6r3 铛Iz\-[J;W!a ~-?={)k?$yc#>õ59o# '_ 5pQQ_?WZ4ٿ}65>XͶ-|ڭGG{nrgP:eXq@+F adv2RwY ]CQ  il9 ?S|{Nv^=3e\,,p i֙ߛ?$;>9~N`ʄG3\#ͩc_pWs73x:YOy7(˾'.Τ+/p0'h8!wcƟȀ4N&3گ'z,90& k<fn(F~l_"7/}e8.(`5hwگF)Ke=@ 4B T|Zҵl٪)HA x+7<6 &˺7bt:g À0rOqR[l#߭ށϸƯҦ=t{N΍x;;YO4|G8ѻ/w}Lo++`)\}^yDux9 5ٯ9KH}~:;(#cYvN|W@ ;Bǐ6l INɄRW *`bv*@ :1bٲelڴjl6NS] ~E+_y)_   {QM%@ Bw 6h"0$%%a2T1 0 j| IDAT-&&Sk'prRd2!I^`0Hmm-7ofРAb @ !Hee%1UUUL&^/[lEjj*tv;nٌlbNpsL(R' ]4`ӦMTUU1p@@ @ !;A8,[}o>***! a4ղ*s˅jSO夓Nvbd2 ZENEYYuuup 8]MK*@ 8?JYx1gfӦM|>dYVMz%Vȇa< |2vXrrrHIIpIkeYn#2+Vo߾ꮃ@ @Ehhh>waɒ%-vZUHb^1Yz5| 2Ovv6,A_l2Z|wTUUMrr @ !>W_eݺu466!6׮G:=ͦAVI(//?K.%33^zqgRPPWշ7 rhjjbу(L @Pظq#wv+VcXZhߕc~BRh4bW_3|Zգ=V Y,*++ٸq{ӴiG4y1v{LXt̺(@p<#Ŀjnv&MĪUZ-\ʱvwJ̙3ӧ0-2PޭV+>M6A b.$Ibka}:D?2NL1 ~$4,#^ه]MeBdL0sY5io}5p]%Ǧ@ `ɋp8LUUgSNd2!˲t }Ŷ_Aү}חS? c6ٺu+SNe VDD9 l6ٺukf }Fy t.c&_8/ #L{f+gg]GPS q\ .O+OZWTTsrwS^^@e5n$;H&<}h-#GKVX,O׿*5spҮ$I555ڵh J9/8GoiԿw}T'OOrո>X%$ags'E ͸aQ\#.{m_ p/I73{f0wx^M){aXʍ YIpr댒$ [f?h^dw(o>|' 9y6WoQ~n[xs;c"oll>[oncӦM8N5F";js$PE`6裏xXh6%R?wFEEEEE677Z&t)o㯟Yo4E00(uPρ2g<;7Ev/<ۿ:bQW\ \ĎElY*7jl1ܞ\EXw֫7-=z#_o{R<"&k?8 [EM|x/' *&\g%xxwl vpI6n<~8SqyO._|+իxu"'Ρ>dO .o@Cyџ='>?hWPT qT~tn.b>TlMe2G^@ Y/../cٲex^fEڞIޮ?~[롵@WijEȻh"|I1LE;A v)//[iε?Oŀ!WM2_0mU+=._#f{lwSE2qY$ 8&q6 KC!g] ן8埃9CDY$dC]@ q܋FxΒ%KTGXҊ~so2O%Q~{~oUJ(GxoNMMMc[&sNy>b*{x Ti˿ɮ yȁtɔs)e܇8flQ" I\y^%@2 &o=ϳd͇;Ley#$]'@ ~illdǎ,X ~zhll$F(of֬YL&Uj~[]{ܖ^ -;=BGeL&yqץm_$dYv__UC͛ټy37_8XٯnDÁ ձS4l2g>-'7Z.*YvuXMNj<Ϟ=ŔuC.abX-v8PʍXz&M`nxuO{>NW(s:>r#_ zbn_SSÞ={oz$$$`Zf֭ő@zz:NE\\BoTVVh"^y֬Ydf#hds$ħ6mіO5;w. \r%-“F9P&NիW3f̘v k=r) hS`-Ur3~ܤ8OK`s87LJ=JfaXVw"M.fCw2\j{? /⼉r7ݷDv*u) {j?_)L~L7T;6ǶsݬТly{g;dha1ty*R'( XM$^uHPEI#w~M".{&d`vB@ 3_\\̎;8x PAbb"ܼNgXZB!())l6vBJJu3A͛illf鼫=$#9WGcmo aBvzp8ɓilll0E5z߿փ5 gT9}lc/y\Y+sw q`%c7dr#l>z=Ȇg~"%=qoxldfW%=uݳr`Dۙ9 Orq"fߔ5/du385ad`%!X)1yI/<T\1Wjā Ngg(>@ H'82t*Jwo{;UA `ƍ"2444q88UŰb X,LͶqqqdff:ǒ%KxX~=X-ѮH6JڑVf?kKO{ч"]h.nz5Ju@ {>=_:[uظ^RQRm<ܽP(ĦMp\vF*(~?p:8V$a40@JV^j%//|[_UUůk dYV3:Bk?eߖM=kk -"}{JP(ܹsILL /T'ډd2wѿV@ %w܉jE$TGvlz8p`0nn_lFؼy3Lzo/H(d2a4q8A^ZVB~I^wpK9 :I֩-"S$ sf1i$~ ?5{CC] x_1Q RSSq85 deeѳgO|>lB!5"wY$ M8ݻwѣ 0SN‰Z+cŢQU@ ʿ"}>bԨQ8Nl6 RRRZȲRSS BԄSCVUuUn   IIIIz|~0555Ȳj%11Ʉb!''|jjjعs'6mbÆ bIFGb#h{GV[v/ &0dȐV f"@ qHſbQ#++Tf3vDyy9 Lk+ݲ,xtTWW#2.Ku՚B!f<7'+--h4bHLL$ v5jC[n/XYŏ$ڻ*#O?ٳg%mfZHOOR?@ ?\,v;f`0H||>RYYSs(bN'v,&N֭[7oׯtNȊ_B[mEQXm2ؿ?'Oоű}v!@ CG?!!"Zn~βzGT}fW^ݛ@ FRHpr~\ceOhORM"EԉԮ]I@ ǎn+f?ʱF Y]]M޽[9vh4E^^~jjE+nL=555TVVb۹ ѣ~)jkQ¯mX);46l`ɒ%7N(/ƾ}(((8@ =%Vkpۍ`СCHII޿h_U`0HCC:j&S^$1 D`ᤦn:(**1Lh[joKO>ArԬJy%2`0ԭGD @[fQ[[Bũvv;@mVHiCB!Z6znгgOijj~l¦M8xS@hϗhҖ$Il߾ r(5p:w-@ 8tt#[Tj0q,pJ1͆f#99>}pI'1dl6TVV#TN'iiir2c ~i;<|96̩>w}"}4,,^,KHh4wno0c$tL>4y1tKvdYZ׶=;Z餠q1rHv;uuu:tH腵9H{iii\xz5W7|8]GpS6^5YfJyW{(#1 ] ׾+2mۑ_1W` ;;B DJJ J(Am@ @}}=C2ydxn6.b $O$t$}bZYjY'L/ ~p$.I>Ygs[(D'j\RM߃\:$ )nֆY{k.3z΁+qףQ`/1.!\{j!*Ky8 |1=wF)zdvؓG'9yi/73 x; v~ 2㉛oNs3QrCͻgw mo~ƄN5b$yTfȨ~-篏> cnpQ>Q<UcV4+(8*?q71rb62DzO߯@ 8.ǃnWW~[&LZxIT^BRR$Q__ρ(//nb`0`2T[q㨩a-vC zqp8XhguK{omԦ"I@82r <${=Kd$uʱ7zzSL!>wX= rdz ?65^ B=)rMgiO(ZsI~8Sݻ7@m1}- IDAT " q饗2bĈM"U‰*QmFUUU ghZ݊)c\F #-Z؅wG,v$#9\sBE~r4hVǣ ;f~{gE(x kIR"u?P4lgDhe&|[N+On&ql)pPcSJpWBG3癿xoi 0$ dtVRh?{St<;fR7>հe~adYyߗ,Xj+@ƐL:oq;<l *hqL{g4ՙ>w3 |E2u[?$1.#1صz(h4b2X,fUz^|-SMmcc#MMMOKKrQ[[+"; t:#D?@$;~pʂ Z_ɋ M;ذbN7ҝ.9 ?S|{NFdQ;Wљzjr=olf~Ù^B)z>?7vh}m6чSz;{f˸X;YOO:{3?ߚsXe_z'wie0vLȟ;7죧:X56S_u[JŰk~sxOYt)_|<7sLqu}tTJ{Q} 1xR_KWz&ݿvD|Fs_Q9FmE[9火H'\7[42@pO8H5 H;9Il׳a~Rel6@kXp8$&&+q#Gj+-cձf$tNrr2IIIajjjHLLk)›ob 4mE+T^?ڷo%%%$$$ r D Zv={{/&S>ܾ~"%=qoxldf+2q3Yp NzF +nЙzFzp3_2 Qǀ-xԇL$M+D5sYxYO" \zWN z+y.I;˗ur{WS+P-򏹺FV+@tnBcKy)iƀSno==ltXO*>wy2`<~w[rD|FC4}U[X)1yI/<7=eA:đ+VQ{ _/E7JRRR:ɂlիWS^^N||>DL&>bjjjHNN2q\-#9v6^>4(!?q.cd2HJJժ755v[wG7qP+m*_iu+ї@ CVq:@[hW&(JK.׋SW#hj㟟e߾}L&9pfN'BY6,jr/e$&&{nRRR0 $''}vRv"V"M&^W7Q&/AG'î@ .UvzQ׊P(DUUv<O:#w!nXӧԨ0555דሉr?& "2)755_k 9\MM :W  11.@ CLĿbJ U|%j#YN[6ZgV˅fSCz<\.n ] Um7 aXAf#Dmmڿp8bQmHh0ok?J+/łW#@p% Wl(RWё|d^ZڲW>+4RRRtHqq^䜶жk0ԨG~˥Sw&үvB>)I{6ɘr" ݩ @ ~LY4Δp]AqWvJCC̶mT;B6##={o>vڅgРAl6?@mw?c_ok#-LУ+==Sc @ 3ONޡֆ8UFr*mŶW1L$LIޱ:DCkmmmps,Ŀ@ qDVR*)YncZ!Ev򨯯' OYYMMMm; mavt: -[b\jo' ]Oe5޿h4"@ 8>SsG8bbtGp8TW#EG`DBYSz ږO$Iꮍ' @ ~+&0fL&SZbgeA+Nw::V{qRR~Te9r :j$c+j>MsF7'^~!%$);V6uʆE\``+\f @ ZbSqm+V=4M߯k+m9¦RUUEbb"jhDo2ԱP'R|iAzE0$zq݌7wǩeMM0Yv'?s7׾SX̾.% ,ſXn @&f?@hď}kկ\.n7$$$P]]™9> m)RH~L}ߏ$I?@| 1#F0o"&dΈ#1vB{g392 Q1,U, It/V; 718$a8~{;}%Tz_*xX8k9C\dTn<JӘ>wM*uFIRޭ \Lsy:p!2C\>xI0Wwr'B )1өHv!!2qqq8NlGTH> A[& b6IKKHNNQc>NXgPRr)%Ӹ0WO,9q+({7kLdJ޽W'glr1uϜù/lעU/[f!'',;j&7Kc/f7ɑA\Ą_MaR^/ecVÄr[b?+o<zkGw1Wc=I:@ ?XbjrZkQyd2>J~\\LUU$uŸ+h}%:#GZokRҞbx0 > ~GA{983H>MÈ7H; 11HOW]bm9>OBv!9J8A B6p|SfϘ~oE.Di 'C8g ZaȵWp6Nuڿ8+,Fÿge_"zC8 @pS/I&Sdp8,˸n#tXqv\j?m$ È#m)6X233ӧ>ѣGsiuc7O7mVVzp+#rY0_p#nO 7ͭJ[^ _m#:EL/6 K[f?H7V(x<u_;ɿmh;vlUH9Վ``ԨQ N=T9.X?v s[{s[Gڽ C5lY)gYV0$ dtVRh?{S15)a97q)/Y ˂ۨW~@ +7c94PcPG 81JHɮ0vy,wpdY& r(//Wu^2ݻDJF. ҳgO4i?ϻ|]Ŕw =oqpT.1-mW_9{d{!8qtwl[/EE>~<5 -fQ;u@ ~}X9FJ6޶tLNN8NN^k|>_>B!Vjڲח$B!dYpPXX9Ø1c.cig8H&`*lNd c%$k"{#Os֐> }?('OG7όf0dXn[[\|S8vƽD=@ ĉ嫲lw(b r~r|$ H0bX0LʹD'ZthhhtRYYIFFFIC.#j%77ڢHɺ#eߏhwGR!~H}rיgW wn Ag0oG1@ + ~ cNkwT{=|_GU[@ 8~7LX,$̉HnzZ|"4e͛)--%11$҈B36㌌ ֯_OZZ^7ff? `PCL0T˶]֫|$P(N,Nڅ "s#kȘ'&$uY@ cẼolȲLRRUUU6iNY1L Yh';;Teǣuǧ@;ye|>$%l6G𝑲j֩ 8n.n[ G?y" ?@ G)?jZ td2پ};۷o'996 ͦY 82ѣ۷oW΢1 bXp::tͼeU|iiiw}\clI-Y1@ =b.M&SD!P$jjjHHHhsU^ovc6)//gڵ|>rssq8Th4Ғ$aXZ >Iv+aޯ@11j]mH|#('~W@ ?bnֶ"(v"FiIΝ;Yd F\q\vV+fYm#  x.}#@ Ov5"E@ ,KlZغ˲̼y())$''t:q:j"@ @SSԈ7JE'L&:Cs>IO=}ך;YVnVN{@ <Tk{ג$طoSL+ 77WrOܥD~u} /"F~gql6#˲*cRW0СCj1Sd21yd|A Ѵiْo=ib<_%O&[x=Xdddέۗ@ qXzj$2JKKի{.,6Vh|->w-!Jbp7Ob@س? y8n>( |]sXx[$aM`aY0MG{wuqaGQs\2[f/YjeineVZn^K-~Vj^w QQvtPp0g9/ߡ|?41KRy#/B˱(ɟa]o N##k,{*zl00P⓯f;]?DDDFV|: IDATžIg@LL yyy@Hg.hvv6;v ++=z|8Oe+ ˓nrrr*?771ɽFb„ v0ɝWw?^fs LVZ3N_ Oxb眱5tF_CsOsÞ[&ni\2U- fpeO*gңI1j7cEvv6هL-))!$$1cpqUN7o<;zL{A˙l(c 2 챝wp"uZ2̚7[fX"1fE!?IGK~zO [^%:^[ޜ9ٙƾM![ yv .y/ᇌM],}'a1ĴOʜ(>žL}7.2V+)FpW3ܾ9o_}?jQ:LCDDY_dߪ&:vpݟiժ\p!!!czl65^4{bOJn`|A^I/a}6WH`ݮLiڕLKnQ9y/d{>6MH I%Os+^E#V{mTĺIHHL9Ѱ` 8M3sΨi|V[̴6)KrF})SS.?yi{c{~lm#W6i{欷oX/"lelʹg4DDDjQAAA{_QPo_s\ƒNvv6{e˖-}t֭n݁jóqQQO#{?qrEAAAz۸? C {y{4Ihڞ5{'EߙW4~cfs:#-X5?l ⴳry +'r=M~*-Ye.3pnf[R;܅^> _?o) yo?m3ɷvo=Y[*Z㾥}mUh;o*[!pQxxm.epDDD: *uEpppμwv4hР|RoNN_|1-Z(_1Ovv6111RjRGJ?t(0馛7n\K#,ݗo^^!l|g8g6Mfqfi\;7W+tv!U*K`R̟g>n(v) j-&m4|}qџ&%~A/ȴO8v{$mCcOo]CFejMgx5,LPWmrY>z;N3_g-8aϷ|z%?//5_v|O͛믿طo_"??UsJJJHOOf1`5jTq<}yr8$hIqq1+jwIjC 3vzKDZyS>=P~ʿ >JuEZCrG_'N_́fvRӖkϯXOve9n ۊα~A-OquBsAh6]YpI1ΥQ:t;<09YAQQvbƍdee~˃dS{조|GߵkגęgyH~䝦v)((4 ;M*χ?JoRRR?~|qMI ,dd҈w{|}Ҍaa\m`R|`'[n'f3ZuHv- [o sJi,[K`R{Xb#< oj&7Iyt"|w>N?ϰ1qPRur"""'^6|)O0HJJ"11hv;۶mjVXASPP-[عs'M4o߾߿QwHrػw/M6f+ 7of _#<½[;Q W9rYb>~~8|E4waj7kdo sq=?{6*0>N[_g{W~`3i4n^㻵"57CGwqYaʄiDZp.~?_Cjn2 /6iI1Oh8?h O?1c@Wxv|h)O3[")muP\\Lxx8vl6XV222*,Y&22D5jDDDDEEY>7PyS2" hѢQMnBnn./&44#G2|sroUpM1Q;/I e+9>g8OSء%m{\A=4@M`7rC9{ےOY8&^Ba #fȋʞRJㅁLq\nZhIyas7ƎCC3@:@kZ`x>5v^]ז 9ӳoY ?gjb/_NXX#22|˂vNg<].Wy=6mWZv-{Wx XlQQQIPP?8iiiqnɨx#]a?aDDD7b_VSV/YM]`` #KVVVFVk{g111߿׎d_ӆYfL_DD:)IHH //\.999۷\ڴiS!]{All,{pj-_F{frZ|gtЁ0+cp$ޛTXA#O_óɳOt7DDDN: àyl޼ `ٰZX,()))/[]N@vӸqc233%??S'U@lYbtܹ|ӣ}[,66XKjj*X,,K \܀ˆ //]vaaaa._aϿn7|坂N'm*#=V5MK9'| ҰaCػw/XpUvytۍf#)) ́8p@ bQ|˅ߟv{'u~rƒ"""(,,$77Ipp0AAAUnuO< """tt:q#޹Vx ǎEuuh_DDDDI{vv; 4;wNPPaaaYD^zȽb)|#rFZ3ADDDD>?6-ZЫW/HKK#//?? |&{EسDBUjkd4Mʃ}OBCCk~t#yDIMMeǎ`Z1 RV׎ +r*|/""""RNh3!!>}Kaa!*ެ|PDN&|2KF. s&rGLL ]tiӦrtWa.WU'Uݘ s)aMIAfosurtM:˃Ϥ]ҽ6BZ@nELI_aQ7S~M;~$<

6]j5GDDonM-h߾=STTTiXe'OsXڇZU>fӽS2}^Ϙi169`90},A=]H%b(MdhnYQŰmKR,ױ ڪwy5v {2Y5tO bXi۟9Q})㤫^:%4䫧崷nA;/1c9ٙƾ}×1:a5]I "$3C.'R']ڭhȎaӠUF~ϯ^~mo@̉7оk2ɥ_]'zDDD6?AAAviݛPRSS/_%;{@mTuCq Mttt8 /\ΣωX]IΔKtJٟ3j_Bc4]_82UD]1aVM+-v͌]A)a3g<:U3mp! Gʒ\|>>s&7݋{7?~ >Ǧ4Y8`#1mϻgr3$""Rߝi?cXHJJ"))ݻwuVv;6<{cYϿ^yѪvO]xr՝y63ĆP;SƏeضtx/MMC\;ȳr\v{F>&?gυPe.3pnj[5R^r+g'p^tγZPw,6K^" ی O<O}yٲl$׍~Д6=jڑHM<53a~@x?t|ҮNy~SG6.݁MΜSF}7۷{(JRpK8È99E#͚kܸ1z"11YJPIII{Tg.?b.}EnwsfdF~7Z˯i&ƵZ>13cJ_Czq*:pa*ۊz~0)3Y7[CU In;N~Om1k(.=bHOܪ g|χtW6:Mڊi:c;դ A4;uy#΄ox tÌR՛NaopfLqS 4C$%%&''&{π_UTa#??ݻw[^g(U:\0ɷk3F^z#ʗ `* *aAQV3hB9PYL57]v/nkVµޚsE,}:zwSK擑W90qtԔ_îk9['z{ѴiS7oNbb"dddp8'{Y,Xz5dffuV +c`X(..?phZ5 L]`hGx'+$X?K#y6oyK3 kgV۪ x:öǙƲչ&amLnbYb&g}{UZ=@a4)>[QxN–l+;uvb$t& `%WkRpG.\Ų]!cy ""wSav;vHٱc;wASRRRaԿM tIPPaaa'<<S~[QG>Dø4 weᫌ 4 ']îWybh2ю`RD{'-xEn׶Jf[ 57w}BLXߘ^?=Ӻsy]h^c -I9-R}ti o7Op;`3N.|߉I{SnS< g_NFO&Uw|8AS[y>z'n:>zߔ_›&qV8\@NOq7su2u.`U1.%xܳAHY? 3 g=_7 1/Ȃżxkވgſy8b=6DDD>=YNusD餲k.v܉f# tuy*gddiEnEqq1w&..HYv-yyyQTTD\\\pq?>×$}.(Ѽ7'Wŗ~_Zu~LunZfm:7m;w##..}Q!? aBHH٦iRTTDAAl64hP>p80M>}C&''ρjb&.Pnp8!##ЃYap8㢋."88 k(,,0ݻ={Bpp0nHپ};{a߾}Wpt:ׯ7>ч%Rev9(?JVJDD-Z`dddҶm[%""͆"00}ѻwoN;Ȋb`XhѢ͛7'55;vVOHHiv';;֭[өS}G"0HLL$114Ұl(((s=F'>>LOII 111B"**DwCDDDD TDDDDDꎂzBH=_DDDDP/rr<-qܻDwJ KOH6W!<ZOݗFW!DID vC?0 #Vݸw#E~y?r]iC=\~;N<.QR.} r,K9c;,7몑ySZ" {e LKY78/8]k4g8[9ʂʈ9i_j=58Aß_7u8<\,}'a1ĴOʜ(4+nGFv ß38eU!XzqysfgjC_<7,'$ǃa~:o#>ȆwYD 㯁HSOؙ 4dYSFwW]8 :7.%^mf.kB $v1pR&uX"`<ŒǬ(+#yDàɇ/m- ,C.,~_5/\ڭкQYL+\EbB*8R}~|:>Ƿ?k=U <- &m̗υK H;/~a3sΨi|V[̴6)Kr)Vo<޻.n3b}/M{>0]{q |YD,}z-O'H`ݮLiڕLKnИ+gnI,I&m%l}f./6&f\n&i언]ύ?2: o :{&sl3M7O*xp\nR/~aN ~`WO%/,7̅káPbi²[J8Rj'ð+x&AB"\}O텉er~+aXn n au 80j<k%ofrxl5aybsmMcE*?4&34k ;_Ιc9a&4 SӍX_ *yqcL7/<˗#3M44ihr~ow666ϘΛi^n]_7?#"$4/4lc`~~iE7L?Ӝ0mT0͉L31Ŭp=xw/=y}i6}=śL=jiV 4M^׃ilRˇ>L3|vCoiaCLk4'5̲k};y?ifilL38L?_ٹǗυʱ/f{S<%_2w\KOnFN`KG;= !3bOo]CF1?oęПMm?;!k(V6 kf ܸkɦqzz\kH~ݸ-<ݱl;*2d7miLPDdS}:e|:.&m4|}qxIA $x hܩRBI#__\}Ui(:2/!1ps+8s0<4~4ʄ7ma8E 7IpaCʆ YЪXqm5z/_47CTώzL8(񺆡GG(Jk}jss\GTTs\,Xx]?Ss!"'?RwJm bk\T~nn0,MO|z,c._&[>:_m母?dkp95JM|\G߿4Ǻ.]ŀy9൱z \pte`V}\֢47w+x7;_6Rv=aAh3xNm`@zA[ꯇԓt_ k˾^]i sM<צ#^uV˗υKqnϻgmtm7pLc\ڗYI՚,Q]?0 Pntf㞚юNV_Ivm& [ͼ.Λ~tM5V0oLXߘƜMiFO&*|8~װdsd (6'9>[JF gNUgWO<ׄϤyӸM/,Ezɂ{S`:7pq Wadhnm\XM}(c6VA6XyZY{i(`cT}=N0ֽl Nejڪht9G.Wa\x9J?p((k60a=4_þ\?Gx1\ /RZ['F ۧsaZx~X]/ 9e(ZRnk\gr4Ώ<'i,҃u/Cތ0~~a) ucҥ/^7mZu`@W)ns˼~^ ny.O-k?Msc4ZҶC 8Sɿ)׿6A%/rV|8Av;})[օoE$wb2s}>\=tf,Mc l9f:T:_cv<,`P AvNUz|)N _U?r a%56tfpݻ0b<ܾ4:{9h й-Ip(<"%0WjLL\Z Ц Hwx2)n"th #>,=/װ/Ԥ?m 1.x#^uП8 sovg^0,Sѧg7s/I߲~>ȗ\ػ68)yWU/eDNe8p_]ylޛ+K/:v?:7^N6ٛF""Pr}̸Ǘ2"m0{]|\6I[׼ߏu k#q|-9]]l/ E)99i¯H=_DDDDP/""""RO(' EDDDD """""zBH=_DDDDP/""""RO(' EDDDD """""zBH=_DDDDP/""""RO(' EDDDD """""zBH=_DDDDP/""""RO(' EDDDD """""zBH=_DDDDP/""""RO(' EDDDD """""zBߌa' """"rR/""""RO(',3c1 5ƕObJ:EuU%MrƿSXr?_->Ns'5v,== \t-lIXu܅,uO$F.Oc>;ǥ"""""N?}#sՌhOXs; zv~rcK0lPn㢰p&{莈Tɇ&ҹ ?=ƴa-59X:Oq~ܘvd.kBuq^VuzSb.gN;Ss٧ E1$W>?ύ71:=W\ʥmrKR!mn+> cxʔ+޼U /䌥?0sw nϘ9Ri5Zw ;ymLRE0k|>*>Bcu&!q*/tco!x}lG.ِ-3<*o?_qkNLKsҤKsq«4yO]Hy_ɻScr /ߞDq ~rƵgUf`ۗqCS͡9Ǖ⭯w%|Bp.ظ!m *$w/k?[h7|tj?{4H'PϞWH=d&2ZܲB5CvU(F:MsRmNDDDD7Lbw`n~^xOӬcX,Uڨ֬\cضߋ!sl3l㊈_nΛ|woLP.fX"h͆SJf5m>r=7 \.&0)SZ]ѩSWвj%`5@[fQX{!7Ocs%8I[of-Q8ɩauwۧ~sټv+/߿eqT}}ӷf.损τ!4&6y8;ү4Ζ~5gҼ&H!翄?ƿ[aWt<|s/"h`0ac&װyL leŰ_ntB0Kp2n~Vj>/""""r![1°PTM~~Xr>G>ёʿ 9RyB`4mx« Πnb e,$"S/3S][Xbv84WDDDD).e k_N-"g>>BqO:GOqGGW@ y*c7)yEDDDTv\5ŹZb%y (z q1nOg|$""""RCdت;st?9(oXIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/conf.py0000666000000000000000000000073514675025471013620 0ustar00rootroot"""Sphinx configuration for itango documentation.""" import sys import os # Extensions sys.path.append(os.path.abspath('sphinxext')) extensions = ['ipython_console_highlighting', 'tango_console_highlighting'] # Configuration master_doc = 'index' rst_epilog = """\ .. _Tango: http://www.tango-controls.org/ .. _IPython: http://ipython.org/ .. _ITango: https://pypi.python.org/pypi/itango/ """ # Data project = u'itango' copyright = u'2016, Tango Controls' ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/index.rst0000666000000000000000000006331314675025471014163 0ustar00rootroot:tocdepth: 3 .. highlight:: python :linenothreshold: 4 ====== ITango ====== ITango_ is a PyTango CLI based on IPython_. It is designed to be used as an IPython profile. It is available since PyTango 7.1.2 and has been moved to a separate project since PyTango 9.2.0. You can start ITango_ by typing on the command line: .. sourcecode:: console $ itango or the equivalent: .. sourcecode:: console $ ipython --profile=tango and you should get something like this: .. image:: _images/itango00.png :align: center :width: 80% .. _itango-features: Features -------- ITango_ works like a normal python console, but it gives you in addition a nice set of features from IPython_ like: - proper (bash-like) command completion - automatic expansion of python variables, functions, types - command history (with up/down arrow keys, %hist command) - help system ( object? syntax, help(object)) - persistently store your favorite variables - color modes For a complete list checkout the `IPython web page `_. Plus an additional set of Tango_ specific features: - automatic import of Tango objects to the console namespace (:mod:`tango` module, :class:`~tango.DeviceProxy` (=Device), :class:`~tango.Database`, :class:`~tango.Group` and :class:`~tango.AttributeProxy` (=Attribute)) - device name completion - attribute name completion - automatic tango object member completion - list tango devices, classes, servers - customized tango error message - tango error introspection - switch database - refresh database - list tango devices, classes - store favorite tango objects - store favorite tango devices - tango color modes Check the :ref:`itango-highlights` to see how to put these feature to good use :-) .. currentmodule:: tango .. _itango-highlights: Highlights ---------- Tab completion ~~~~~~~~~~~~~~ ITango_ exports many tango specific objects to the console namespace. These include: - the tango module itself .. sourcecode:: itango ITango [1]: tango Result [1]: - The :class:`DeviceProxy` (=Device), :class:`AttributeProxy` (=Attribute), :class:`Database` and :class:`Group` classes .. sourcecode:: itango ITango [1]: De DeprecationWarning Device DeviceProxy ITango [2]: Device Result [2]: ITango [3]: Device("sys/tg_test/1") Result [3]: DeviceProxy(sys/tg_test/1) ITango [4]: Datab ITango [4]: Database ITango [4]: Att Attribute AttributeError AttributeProxy - The Tango :class:`Database` object to which the itango session is currently connected .. sourcecode:: itango ITango [1]: db Result [1]: Database(homer, 10000) Device name completion ~~~~~~~~~~~~~~~~~~~~~~ ITango_ knows the complete list of device names (including alias) for the current tango database. This means that when you try to create a new Device, by pressing you can see a context sensitive list of devices. .. sourcecode:: itango ITango [1]: test = Device(" Display all 3654 possibilities? (y or n) n ITango [1]: test = Device("sys sys/access_control/1 sys/database/2 sys/tautest/1 sys/tg_test/1 ITango [2]: test = Device("sys/tg_test/1") Attribute name completion ~~~~~~~~~~~~~~~~~~~~~~~~~ ITango_ can inspect the list of attributes in case the device server for the device where the attribute resides is running. .. sourcecode:: itango ITango [1]: short_scalar = Attribute("sys sys/access_control/1/ sys/database/2/ sys/tautest/1/ sys/tg_test/1/ ITango [1]: short_scalar = Attribute("sys/tg_test/1/ sys/tg_test/1/State sys/tg_test/1/no_value sys/tg_test/1/Status sys/tg_test/1/short_image sys/tg_test/1/ampli sys/tg_test/1/short_image_ro sys/tg_test/1/boolean_image sys/tg_test/1/short_scalar sys/tg_test/1/boolean_image_ro sys/tg_test/1/short_scalar_ro sys/tg_test/1/boolean_scalar sys/tg_test/1/short_scalar_rww sys/tg_test/1/boolean_spectrum sys/tg_test/1/short_scalar_w sys/tg_test/1/boolean_spectrum_ro sys/tg_test/1/short_spectrum sys/tg_test/1/double_image sys/tg_test/1/short_spectrum_ro sys/tg_test/1/double_image_ro sys/tg_test/1/string_image sys/tg_test/1/double_scalar sys/tg_test/1/string_image_ro ... ITango [1]: short_scalar = Attribute("sys/tg_test/1/short_scalar") ITango [29]: print test.read() DeviceAttribute[ data_format = tango._tango.AttrDataFormat.SCALAR dim_x = 1 dim_y = 0 has_failed = False is_empty = False name = 'short_scalar' nb_read = 1 nb_written = 1 quality = tango._tango.AttrQuality.ATTR_VALID r_dimension = AttributeDimension(dim_x = 1, dim_y = 0) time = TimeVal(tv_nsec = 0, tv_sec = 1279723723, tv_usec = 905598) type = tango._tango.CmdArgType.DevShort value = 47 w_dim_x = 1 w_dim_y = 0 w_dimension = AttributeDimension(dim_x = 1, dim_y = 0) w_value = 0] Automatic tango object member completion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When you create a new tango object, (ex.: a device), itango is able to find out dynamically which are the members of this device (including tango commands and attributes if the device is currently running) .. sourcecode:: itango ITango [1]: test = Device("sys/tg_test/1") ITango [2]: test. Display all 240 possibilities? (y or n) ... test.DevVoid test.get_access_control test.Init test.get_asynch_replies test.State test.get_attribute_config test.Status test.get_attribute_config_ex test.SwitchStates test.get_attribute_list ... ITango [2]: test.short_ test.short_image test.short_scalar test.short_scalar_rww test.short_spectrum test.short_image_ro test.short_scalar_ro test.short_scalar_w test.short_spectrum_ro ITango [2]: test.short_scalar # old style: test.read_attribute("short_scalar").value Result [2]: 252 ITango [3]: test.Dev test.DevBoolean test.DevUShort test.DevVarShortArray test.DevDouble test.DevVarCharArray test.DevVarStringArray test.DevFloat test.DevVarDoubleArray test.DevVarULongArray test.DevLong test.DevVarDoubleStringArray test.DevVarUShortArray test.DevShort test.DevVarFloatArray test.DevVoid test.DevString test.DevVarLongArray test.DevULong test.DevVarLongStringArray ITango [3]: test.DevDouble(56.433) # old style: test.command_inout("DevDouble"). Result [3]: 56.433 Tango classes as :class:`DeviceProxy` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ITango_ exports all known tango classes as python alias to :class:`DeviceProxy`. This way, if you want to create a device of class which you already know (say, Libera, for example) you can do: .. sourcecode:: itango ITango [1]: lib01 = Libera("BO01/DI/BPM-01") One great advantage is that the tango device name completion is sensitive to the type of device you want to create. This means that if you are in the middle of writing a device name and you press the key, only devices of the tango class 'Libera' will show up as possible completions. .. sourcecode:: itango ITango [1]: bpm1 = Libera(" BO01/DI/BPM-01 BO01/DI/BPM-09 BO02/DI/BPM-06 BO03/DI/BPM-03 BO03/DI/BPM-11 BO04/DI/BPM-08 BO01/DI/BPM-02 BO01/DI/BPM-10 BO02/DI/BPM-07 BO03/DI/BPM-04 BO04/DI/BPM-01 BO04/DI/BPM-09 BO01/DI/BPM-03 BO01/DI/BPM-11 BO02/DI/BPM-08 BO03/DI/BPM-05 BO04/DI/BPM-02 BO04/DI/BPM-10 BO01/DI/BPM-04 BO02/DI/BPM-01 BO02/DI/BPM-09 BO03/DI/BPM-06 BO04/DI/BPM-03 BO04/DI/BPM-11 BO01/DI/BPM-05 BO02/DI/BPM-02 BO02/DI/BPM-10 BO03/DI/BPM-07 BO04/DI/BPM-04 BO01/DI/BPM-06 BO02/DI/BPM-03 BO02/DI/BPM-11 BO03/DI/BPM-08 BO04/DI/BPM-05 BO01/DI/BPM-07 BO02/DI/BPM-04 BO03/DI/BPM-01 BO03/DI/BPM-09 BO04/DI/BPM-06 BO01/DI/BPM-08 BO02/DI/BPM-05 BO03/DI/BPM-02 BO03/DI/BPM-10 BO04/DI/BPM-07 ITango [1]: bpm1 = Libera("BO01 BO01/DI/BPM-01 BO01/DI/BPM-03 BO01/DI/BPM-05 BO01/DI/BPM-07 BO01/DI/BPM-09 BO01/DI/BPM-11 BO01/DI/BPM-02 BO01/DI/BPM-04 BO01/DI/BPM-06 BO01/DI/BPM-08 BO01/DI/BPM-10 ITango [1]: bpm1 = Libera("BO01/DI/BPM-01") Customized device representation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When you use ipython >= 0.11 with a Qt console frontend: .. sourcecode:: console $ itango qtconsole typing a variable containing a tango device object followend by :kbd:`Enter` will present you with a customized representation of the object instead of the usual :func:`repr` : .. image:: _images/itango06.png You can customize the icon that itango displays for a specific device. The first thing to do is to copy the image file into :mod:`itango.resource` installation directory (if you don't have permissions to do so, copy the image into a directory of your choosing and make sure it is accessible from itango). If you want to use the image for all devices of a certain tango class, just add a new tango class property called *__icon*. You can do it with jive or, of course, with itango itself:: db.put_class_property("Libera", dict(__icon="libera.png")) # if you placed your image in a directory different than itango.resource # then, instead you have to specify the absolute directory db.put_class_property("Libera", dict(__icon="/home/homer/.config/itango/libera.png")) If you need different images for different devices of the same class, you can specify an *__icon* property at the device level (which takes precedence over the class property value, if defined):: db.put_device_property("BO01/DI/BPM-01", dict(__icon="libera2.png")) List tango devices, classes, servers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ITango_ provides a set of magic functions (ipython lingo) that allow you to check for the list tango devices, classes and servers which are registered in the current database. .. sourcecode:: itango ITango [1]: lsdev Device Alias Server Class ---------------------------------------- ------------------------- ------------------------- -------------------- expchan/BL99_Dummy0DCtrl/1 BL99_0D1 Pool/BL99 ZeroDExpChannel simulator/bl98/motor08 Simulator/BL98 SimuMotor expchan/BL99_Dummy0DCtrl/3 BL99_0D3 Pool/BL99 ZeroDExpChannel expchan/BL99_Dummy0DCtrl/2 BL99_0D2 Pool/BL99 ZeroDExpChannel expchan/BL99_Dummy0DCtrl/5 BL99_0D5 Pool/BL99 ZeroDExpChannel expchan/BL99_Dummy0DCtrl/4 BL99_0D4 Pool/BL99 ZeroDExpChannel expchan/BL99_Dummy0DCtrl/7 BL99_0D7 Pool/BL99 ZeroDExpChannel expchan/BL99_Dummy0DCtrl/6 BL99_0D6 Pool/BL99 ZeroDExpChannel simulator/bl98/motor01 Simulator/BL98 SimuMotor simulator/bl98/motor02 Simulator/BL98 SimuMotor simulator/bl98/motor03 Simulator/BL98 SimuMotor mg/BL99/_mg_macserv_26065_-1320158352 Pool/BL99 MotorGroup simulator/bl98/motor05 Simulator/BL98 SimuMotor simulator/bl98/motor06 Simulator/BL98 SimuMotor simulator/bl98/motor07 Simulator/BL98 SimuMotor simulator/BL98/motctrl01 Simulator/BL98 SimuMotorCtrl expchan/BL99_Simu0DCtrl1/1 BL99_0D8 Pool/BL99 ZeroDExpChannel expchan/BL99_UxTimerCtrl1/1 BL99_Timer Pool/BL99 CTExpChannel ... ITango [1]: lsdevclass SimuCoTiCtrl TangoAccessControl ZeroDExpChannel Door Motor DataBase MotorGroup IORegister SimuMotorCtrl TangoTest MacroServer TauTest SimuMotor SimuCounterEx MeasurementGroup Pool CTExpChannel ITango [1]: lsserv MacroServer/BL99 MacroServer/BL98 Pool/V2 Pool/BL99 Pool/BL98 TangoTest/test Pool/tcoutinho Simulator/BL98 TangoAccessControl/1 TauTest/tautest DataBaseds/2 MacroServer/tcoutinho Simulator/BL99 Customized tango error message and introspection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ITango_ intercepts tango exceptions that occur when you do tango operations (ex.: write an attribute with a value outside the allowed limits) and tries to display it in a summarized, user friendly way. If you need more detailed information about the last tango error, you can use the magic command 'tango_error'. .. sourcecode:: itango ITango [1]: test = Device("sys/tg_test/1") ITango [2]: test.no_value API_AttrValueNotSet : Read value for attribute no_value has not been updated For more detailed information type: tango_error ITango [3]: tango_error Last tango error: DevFailed[ DevError[ desc = 'Read value for attribute no_value has not been updated' origin = 'Device_3Impl::read_attributes_no_except' reason = 'API_AttrValueNotSet' severity = tango._tango.ErrSeverity.ERR] DevError[ desc = 'Failed to read_attribute on device sys/tg_test/1, attribute no_value' origin = 'DeviceProxy::read_attribute()' reason = 'API_AttributeFailed' severity = tango._tango.ErrSeverity.ERR]] Switching database ~~~~~~~~~~~~~~~~~~ You can switch database simply by executing the 'switchdb []' magic command. .. sourcecode:: itango ITango [1]: switchdb Must give new database name in format [:]. is optional. If not given it defaults to 10000. Examples: switchdb homer:10005 switchdb homer 10005 switchdb homer ITango [2]: db Database(homer, 10000) ITango [3]: switchdb bart # by default port is 10000 ITango [4]: db Database(bart, 10000) ITango [5]: switchdb lisa 10005 # you can use spaces between host and port ITango [6]: db Database(lisa, 10005) ITango [7]: switchdb marge:10005 # or the traditional ':' ITango [8]: db Database(marge, 10005) Refreshing the database ~~~~~~~~~~~~~~~~~~~~~~~ When itango starts up or when the database is switched, a query is made to the tango Database device server which provides all necessary data. This data is stored locally in a itango cache which is used to provide all the nice features. If the Database server is changed in some way (ex: a new device server is registered), the local database cache is not consistent anymore with the tango database. Therefore, itango provides a magic command 'refreshdb' that allows you to reread all tango information from the database. .. sourcecode:: itango ITango [1]: refreshdb Storing your favorite tango objects for later usage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: This feature is not available if you have installed IPython 0.11! Since version 7.1.2, :class:`DeviceProxy`, :class:`AttributeProxy` and :class:`Database` became pickable. This means that they can be used by the IPython_ 'store' magic command (type 'store?' on the itango console to get information on how to use this command). You can, for example, assign your favorite devices in local python variables and then store these for the next time you startup IPython_ with itango profile. .. sourcecode:: itango ITango [1]: theta = Motor("BL99_M1") # notice how we used tango alias ITango [2]: store theta Stored 'theta' (DeviceProxy) ITango [3]: Ctrl+D (IPython session is closed and started again...) ITango [1]: store -r # in some versions of IPython you may need to do this ... ITango [1]: print theta DeviceProxy(motor/bl99/1) Adding itango to your own ipython profile ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Adding itango to the ipython default profile ################################################## Let's assume that you find itango so useful that each time you start ipython, you want itango features to be loaded by default. The way to do this is by editing your default ipython configuration file: 1. On IPython <= 0.10 $HOME/.ipython/ipy_user_conf.py and add the lines 1 and 7. .. note:: The code shown below is a small part of your $HOME/.ipython/ipy_user_conf.py. It is shown here only the relevant part for this example. .. sourcecode:: python import itango def main(): # uncomment if you want to get ipython -p sh behaviour # without having to use command line switches # import ipy_profile_sh itango.init_ipython(ip, console=False) 2. On IPython > 0.10 First you have to check which is the configuration directory being used by IPython. For this, in an IPython console type: .. sourcecode:: itango ITango [1]: import IPython.utils.path ITango [2]: IPython.utils.path.get_ipython_dir() now edit /profile_default/ipython_config.py and add the following line at the end to add itango configuration:: load_subconfig('ipython_config.py', profile='tango') Alternatively, you could also load itango as an IPython extension:: config = get_config() i_shell_app = config.InteractiveShellApp extensions = getattr(i_shell_app, 'extensions', []) extensions.append('itango') i_shell_app.extensions = extensions for more information on how to configure IPython >= 0.11 please check the `IPython configuration `_ And now, every time you start ipython:: ipython itango features will also be loaded. .. sourcecode:: ipython In [1]: db Out[1]: Database(homer, 10000) Adding itango to an existing customized profile #################################################### .. note:: This chapter has a pending update. The contents only apply to IPython <= 0.10. If you have been working with IPython_ before and have already defined a customized personal profile, you can extend your profile with itango features without breaking your existing options. The trick is to initialize itango extension with a parameter that tells itango to maintain the existing options (like colors, command line and initial banner). So, for example, let's say you have created a profile called nuclear, and therefore you have a file called $HOME/.ipython/ipy_profile_nuclear.py with the following contents: .. sourcecode:: python import os import IPython.ipapi def main(): ip = IPython.ipapi.get() o = ip.options o.banner = "Springfield nuclear powerplant CLI\n\nWelcome Homer Simpson" o.colors = "Linux" o.prompt_in1 = "Mr. Burns owns you [\\#]: " main() In order to have itango features available to this profile you simply need to add two lines of code (lines 3 and 7): .. sourcecode:: python import os import IPython.ipapi import itango def main(): ip = IPython.ipapi.get() itango.init_ipython(ip, console=False) o = ip.options o.banner = "Springfield nuclear powerplant CLI\n\nMr. Burns owns you!" o.colors = "Linux" o.prompt_in1 = "The Simpsons [\\#]: " main() This will load the itango features into your profile while preserving your profile's console options (like colors, command line and initial banner). Creating a profile that extends itango profile #################################################### .. note:: This chapter has a pending update. The contents only apply to IPython <= 0.10. It is also possible to create a profile that includes all itango features and at the same time adds new ones. Let's suppose that you want to create a customized profile called 'orbit' that automatically exports devices of class 'Libera' for the booster accelerator (assuming you are working on a synchrotron like institute ;-). Here is the code for the $HOME/.ipython/ipy_profile_orbit.py: .. sourcecode:: python import os import IPython.ipapi import IPython.genutils import IPython.ColorANSI import itango import StringIO def magic_liberas(ip, p=''): """Lists all known Libera devices.""" data = itango.get_device_map() s = StringIO.StringIO() cols = 30, 15, 20 l = "%{0}s %{1}s %{2}s".format(*cols) print >>s, l % ("Device", "Alias", "Server") print >>s, l % (cols[0]*"-", cols[1]*"-", cols[2]*"-") for d, v in data.items(): if v[2] != 'Libera': continue print >>s, l % (d, v[0], v[1]) s.seek(0) IPython.genutils.page(s.read()) def main(): ip = IPython.ipapi.get() itango.init_ipython(ip) o = ip.options Colors = IPython.ColorANSI.TermColors c = dict(Colors.__dict__) o.banner += "\n{Brown}Welcome to Orbit analysis{Normal}\n".format(**c) o.prompt_in1 = "Orbit [\\#]: " o.colors = "BlueTango" ip.expose_magic("liberas", magic_liberas) db = ip.user_ns.get('db') dev_class_dict = itango.get_class_map() if not dev_class_dict.has_key("Libera"): return for libera in dev_class_dict['Libera']: domain, family, member = libera.split("/") var_name = domain + "_" + member var_name = var_name.replace("-","_") ip.to_user_ns( { var_name : tango.DeviceProxy(libera) } ) main() Then start your CLI with: .. sourcecode:: console $ ipython --profile=orbit and you will have something like this .. image:: _images/itango02.png Advanced event monitoring ~~~~~~~~~~~~~~~~~~~~~~~~~ With itango it is possible to monitor change events triggered by any tango attribute which has events enabled. To start monitoring the change events of an attribute: .. sourcecode:: itango ITango [1]: mon -a BL99_M1/Position 'BL99_M1/Position' is now being monitored. Type 'mon' to see all events To list all events that have been intercepted: .. sourcecode:: itango ITango [2]: mon ID Device Attribute Value Quality Time ---- ---------------- ------------ ---------------- ------------- ---------------- 0 motor/bl99/1 state ON ATTR_VALID 17:11:08.026472 1 motor/bl99/1 position 190.0 ATTR_VALID 17:11:20.691112 2 motor/bl99/1 state MOVING ATTR_VALID 17:12:11.858985 3 motor/bl99/1 position 188.954072857 ATTR_CHANGING 17:12:11.987817 4 motor/bl99/1 position 186.045533882 ATTR_CHANGING 17:12:12.124448 5 motor/bl99/1 position 181.295838155 ATTR_CHANGING 17:12:12.260884 6 motor/bl99/1 position 174.55354729 ATTR_CHANGING 17:12:12.400036 7 motor/bl99/1 position 166.08870515 ATTR_CHANGING 17:12:12.536387 8 motor/bl99/1 position 155.77528943 ATTR_CHANGING 17:12:12.672846 9 motor/bl99/1 position 143.358230136 ATTR_CHANGING 17:12:12.811878 10 motor/bl99/1 position 131.476140017 ATTR_CHANGING 17:12:12.950391 11 motor/bl99/1 position 121.555421781 ATTR_CHANGING 17:12:13.087970 12 motor/bl99/1 position 113.457930987 ATTR_CHANGING 17:12:13.226531 13 motor/bl99/1 position 107.319423091 ATTR_CHANGING 17:12:13.363559 14 motor/bl99/1 position 102.928229946 ATTR_CHANGING 17:12:13.505102 15 motor/bl99/1 position 100.584726495 ATTR_CHANGING 17:12:13.640794 16 motor/bl99/1 position 100.0 ATTR_ALARM 17:12:13.738136 17 motor/bl99/1 state ALARM ATTR_VALID 17:12:13.743481 ITango [3]: mon -l mot.* state ID Device Attribute Value Quality Time ---- ---------------- ------------ ---------------- ------------- ---------------- 0 motor/bl99/1 state ON ATTR_VALID 17:11:08.026472 2 motor/bl99/1 state MOVING ATTR_VALID 17:12:11.858985 17 motor/bl99/1 state ALARM ATTR_VALID 17:12:13.743481 To stop monitoring the attribute: .. sourcecode:: itango ITango [1]: mon -d BL99_M1/Position Stopped monitoring 'BL99_M1/Position' .. note:: Type 'mon?' to see detailed information about this magic command ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1727277889.3848858 itango-0.2.0/doc/sphinxext/0000755000000000000000000000000014675025501014334 5ustar00rootroot././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/sphinxext/ipython_console_highlighting.py0000666000000000000000000001014014675025471022655 0ustar00rootroot"""reST directive for syntax-highlighting ipython interactive sessions. XXX - See what improvements can be made based on the new (as of Sept 2009) 'pycon' lexer for the python console. At the very least it will give better highlighted tracebacks. """ #----------------------------------------------------------------------------- # Needed modules # Standard library import re # Third party from pygments.lexer import Lexer, do_insertions from pygments.lexers.agile import (PythonConsoleLexer, PythonLexer, PythonTracebackLexer) from pygments.token import Comment, Generic from sphinx import highlighting #----------------------------------------------------------------------------- # Global constants line_re = re.compile('.*?\n') #----------------------------------------------------------------------------- # Code begins - classes and functions class IPythonConsoleLexer(Lexer): """ For IPython console output or doctests, such as: .. sourcecode:: ipython In [1]: a = 'foo' In [2]: a Out[2]: 'foo' In [3]: print a foo In [4]: 1 / 0 Notes: - Tracebacks are not currently supported. - It assumes the default IPython prompts, not customized ones. """ name = 'IPython console session' aliases = ['ipython'] mimetypes = ['text/x-ipython-console'] input_prompt = re.compile("(In \[(?P[0-9]+)\]: )|( \.\.\.+:)") output_prompt = re.compile("(Out\[(?P[0-9]+)\]: )|( \.\.\.+:)") continue_prompt = re.compile(" \.\.\.+:") tb_start = re.compile("\-+") def get_tokens_unprocessed(self, text): pylexer = PythonLexer(**self.options) tblexer = PythonTracebackLexer(**self.options) curcode = '' insertions = [] for match in line_re.finditer(text): line = match.group() input_prompt = self.input_prompt.match(line) continue_prompt = self.continue_prompt.match(line.rstrip()) output_prompt = self.output_prompt.match(line) if line.startswith("#"): insertions.append((len(curcode), [(0, Comment, line)])) elif input_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, input_prompt.group())])) curcode += line[input_prompt.end():] elif continue_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, continue_prompt.group())])) curcode += line[continue_prompt.end():] elif output_prompt is not None: # Use the 'error' token for output. We should probably make # our own token, but error is typicaly in a bright color like # red, so it works fine for our output prompts. insertions.append((len(curcode), [(0, Generic.Error, output_prompt.group())])) curcode += line[output_prompt.end():] else: if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item curcode = '' insertions = [] yield match.start(), Generic.Output, line if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item def setup(app): """Setup as a sphinx extension.""" # This is only a lexer, so adding it below to pygments appears sufficient. # But if somebody knows that the right API usage should be to do that via # sphinx, by all means fix it here. At least having this setup.py # suppresses the sphinx warning we'd get without it. pass #----------------------------------------------------------------------------- # Register the extension as a valid pygments lexer highlighting.lexers['ipython'] = IPythonConsoleLexer() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/doc/sphinxext/tango_console_highlighting.py0000666000000000000000000001010614675025471022275 0ustar00rootroot"""reST directive for syntax-highlighting itango interactive sessions.""" #----------------------------------------------------------------------------- # Needed modules # Standard library import re import copy # Third party from pygments.lexer import Lexer, do_insertions from pygments.lexers.agile import (PythonConsoleLexer, PythonLexer, PythonTracebackLexer) from pygments.token import Comment, Generic from pygments.style import Style import pygments.styles from sphinx import highlighting #----------------------------------------------------------------------------- # Global constants line_re = re.compile('.*?\n') DftStyle = pygments.styles.get_style_by_name("default") class TangoStyle(DftStyle): styles = copy.copy(DftStyle.styles) styles[Generic.Prompt] = 'bold #00AA00' class TangoConsoleLexer(Lexer): """ For itango console output or doctests, such as: .. sourcecode:: itango ITango [1]: a = 'foo' ITango [2]: a Result [2]: 'foo' ITango [3]: print a foo ITango [4]: 1 / 0 Notes: - Tracebacks are not currently supported. - It assumes the default itango prompts, not customized ones. """ name = 'ITango console session' aliases = ['itango'] mimetypes = ['text/x-itango-console'] input_prompt = re.compile("(ITango \[(?P[0-9]+)\]: )|( \.\.\.+:)") output_prompt = re.compile("(\s*Result \[(?P[0-9]+)\]: )|( \.\.\.+:)") continue_prompt = re.compile(" \.\.\.+:") tb_start = re.compile("\-+") def get_tokens_unprocessed(self, text): pylexer = PythonLexer(**self.options) tblexer = PythonTracebackLexer(**self.options) curcode = '' insertions = [] for match in line_re.finditer(text): line = match.group() input_prompt = self.input_prompt.match(line) continue_prompt = self.continue_prompt.match(line.rstrip()) output_prompt = self.output_prompt.match(line) if line.startswith("#"): insertions.append((len(curcode), [(0, Comment, line)])) elif input_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, input_prompt.group())])) curcode += line[input_prompt.end():] elif continue_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, continue_prompt.group())])) curcode += line[continue_prompt.end():] elif output_prompt is not None: # Use the 'error' token for output. We should probably make # our own token, but error is typicaly in a bright color like # red, so it works fine for our output prompts. insertions.append((len(curcode), [(0, Generic.Error, output_prompt.group())])) curcode += line[output_prompt.end():] else: if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item curcode = '' insertions = [] yield match.start(), Generic.Output, line if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item def setup(app): """Setup as a sphinx extension.""" # This is only a lexer, so adding it below to pygments appears sufficient. # But if somebody knows that the right API usage should be to do that via # sphinx, by all means fix it here. At least having this setup.py # suppresses the sphinx warning we'd get without it. pass #----------------------------------------------------------------------------- # Register the extension as a valid pygments lexer highlighting.lexers['itango'] = TangoConsoleLexer() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1727277889.3858857 itango-0.2.0/itango/0000755000000000000000000000000014675025501013016 5ustar00rootroot././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/__init__.py0000666000000000000000000000220714675025471015142 0ustar00rootroot# ----------------------------------------------------------------------------- # This file is part of ITango (http://pypi.python.org/pypi/itango) # # Copyright 2006-2012 CELLS / ALBA Synchrotron, Bellaterra, Spain # Copyright 2013-2014 European Synchrotron Radiation Facility, Grenoble, France # # Distributed under the terms of the GNU Lesser General Public License, # either version 3 of the License, or (at your option) any later version. # See LICENSE.txt for more info. # ----------------------------------------------------------------------------- __all__ = ["install", "load_ipython_extension", "unload_ipython_extension", "init_ipython", "load_config", "run", "run_qt", "get_python_version", "get_ipython_version", "get_pytango_version"] try: from ._version import version as __version__ except ImportError: __version__ = "0.0+unknown" from .common import get_python_version, get_ipython_version from .common import get_pytango_version from .install import install from .itango import load_ipython_extension, unload_ipython_extension from .itango import init_ipython, load_config, run, run_qt ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/__main__.py0000666000000000000000000000017114675025471015121 0ustar00rootroot"""Main module for itango""" import sys from .itango import run, run_qt run_qt() if 'qtconsole' in sys.argv else run() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277889.0 itango-0.2.0/itango/_version.py0000644000000000000000000000063314675025501015216 0ustar00rootroot# file generated by setuptools_scm # don't change, don't track in version control TYPE_CHECKING = False if TYPE_CHECKING: from typing import Tuple, Union VERSION_TUPLE = Tuple[Union[int, str], ...] else: VERSION_TUPLE = object version: str __version__: str __version_tuple__: VERSION_TUPLE version_tuple: VERSION_TUPLE __version__ = version = '0.2.0' __version_tuple__ = version_tuple = (0, 2, 0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/common.py0000666000000000000000000000221314675025471014670 0ustar00rootroot#!/usr/bin/env python # ----------------------------------------------------------------------------- # This file is part of ITango (http://pypi.python.org/pypi/itango) # # Copyright 2006-2012 CELLS / ALBA Synchrotron, Bellaterra, Spain # Copyright 2013-2014 European Synchrotron Radiation Facility, Grenoble, France # # Distributed under the terms of the GNU Lesser General Public License, # either version 3 of the License, or (at your option) any later version. # See LICENSE.txt for more info. # ----------------------------------------------------------------------------- """functions common (hopefully) to all ipython versions""" __all__ = ["get_python_version", "get_ipython_version", "get_pytango_version"] import sys from packaging.version import Version from importlib.metadata import version # Python utilities def get_python_version(): return Version('.'.join(map(str, sys.version_info[:3]))) # IPython utilities def get_ipython_version(): """Returns the current IPython version""" return Version(version("ipython")) # PyTango utilities def get_pytango_version(): return Version(version("pytango")) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/eventlogger.py0000666000000000000000000000561614675025471015733 0ustar00rootroot# ----------------------------------------------------------------------------- # This file is part of ITango (http://pypi.python.org/pypi/itango) # # Copyright 2006-2012 CELLS / ALBA Synchrotron, Bellaterra, Spain # Copyright 2013-2014 European Synchrotron Radiation Facility, Grenoble, France # # Distributed under the terms of the GNU Lesser General Public License, # either version 3 of the License, or (at your option) any later version. # See LICENSE.txt for more info. # ----------------------------------------------------------------------------- from __future__ import print_function import re import io LENGTHS = 4, 30, 18, 20, 12, 16 COLUMNS = 'ID', 'Device', 'Attribute', 'Value', 'Quality', 'Time' TEMPLATE = ' '.join('{%d:%d}' % x for x in enumerate(LENGTHS)) TITLE = TEMPLATE.format(*COLUMNS) + '\n' + ' '.join('-' * l for l in LENGTHS) class EventLogger(object): def __init__(self, capacity=100000, pager=None): self._capacity = capacity self._pager = pager self._records = [] def push_event(self, evt): attr_name = evt.attr_name dev, sep, attr = attr_name.rpartition('/') if dev.startswith("tango://"): dev = dev[8:] if dev.count(":"): # if it has tango host host, sep, dev = dev.partition('/') else: host = "-----" evt.host = host evt.dev_name = dev evt.s_attr_name = attr self._records.append(evt) over = len(self._records) - self._capacity if over > 0: self._records = self._records[over:] def model(self): return self def getEvents(self): return self._records def show(self, dexpr=None, aexpr=None): if dexpr is not None: dexpr = re.compile(dexpr, re.IGNORECASE) if aexpr is not None: aexpr = re.compile(aexpr, re.IGNORECASE) class StringIO(io.StringIO): def write(self, value): if isinstance(value, bytes): value = value.decode() io.StringIO.write(self, value) s = StringIO() print(TITLE, file=s) for i, r in enumerate(self._records): if dexpr is not None and not dexpr.match(r.dev_name): continue if aexpr is not None and not aexpr.match(r.s_attr_name): continue if r.err: v = r.errors[0].reason q = 'ERROR' ts = r.reception_date.strftime("%H:%M:%S.%f") else: v = str(r.attr_value.value) q = str(r.attr_value.quality) ts = r.attr_value.time.strftime("%H:%M:%S.%f") args = i, r.dev_name, r.s_attr_name, v, q, ts print(TEMPLATE.format(*args), file=s) s.seek(0) if self._pager is None: print(s.read()) else: self._pager(s.read()) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/install.py0000666000000000000000000001043314675025471015051 0ustar00rootroot#!/usr/bin/env python # ----------------------------------------------------------------------------- # This file is part of ITango (http://pypi.python.org/pypi/itango) # # Copyright 2006-2012 CELLS / ALBA Synchrotron, Bellaterra, Spain # Copyright 2013-2014 European Synchrotron Radiation Facility, Grenoble, France # # Distributed under the terms of the GNU Lesser General Public License, # either version 3 of the License, or (at your option) any later version. # See LICENSE.txt for more info. # ----------------------------------------------------------------------------- from __future__ import with_statement import os import sys import IPython from IPython.core.profiledir import ProfileDirError, ProfileDir from IPython.utils.io import ask_yes_no try: from IPython.paths import get_ipython_dir, ensure_dir_exists except ImportError: try: from IPython.utils.path import get_ipython_dir, ensure_dir_exists except ImportError: from IPython.genutils import get_ipython_dir, ensure_dir_exists import tango __PROFILE = """\ #!/usr/bin/env ipython \"\"\"An automaticaly generated IPython profile designed to provide a user friendly interface to Tango. Created with PyTango {pytangover} for IPython {ipyver} \"\"\" # Protected block {protected_block} # Put any additional environment here """ __PROTECTED_BLOCK = """\ import itango config = get_config() itango.load_config(config) """ _CONFIG_FILE_NAME = 'ipython_config.py' def install_kernel(verbose=True): if verbose: print('Installing ITango kernelspec for jupyter...') # See if ipykernel is available try: from ipykernel.kernelspec import install as kernelinstall except ImportError: if verbose: print('The ipykernel module is not available; ' 'ITango kernelspec will not be installed') return False # Try to install the kernel spec try: path = kernelinstall(kernel_name='tango', profile='tango', display_name='ITango', user=True) except Exception as exc: if verbose: print('Error while installing ITango kernelspec: {!r}'.format(exc)) return False # Installation OK if verbose: print('Installed ITango kernelspec in {}'.format(path)) return True def is_installed(ipydir=None, profile='tango'): ipython_dir = ipydir or get_ipython_dir() try: p_dir = ProfileDir.find_profile_dir_by_name(ipython_dir, profile) except ProfileDirError: return False abs_config_file_name = os.path.join(p_dir.location, _CONFIG_FILE_NAME) if not os.path.isfile(abs_config_file_name): return False with open(abs_config_file_name) as f: return __PROTECTED_BLOCK in f.read() def install(ipydir=None, verbose=True, profile='tango'): if verbose: def out(msg): sys.stdout.write(msg) sys.stdout.flush() else: out = lambda x: None ipython_dir = ipydir or get_ipython_dir() ensure_dir_exists(ipython_dir) try: p_dir = ProfileDir.find_profile_dir_by_name(ipython_dir, profile) except ProfileDirError: p_dir = ProfileDir.create_profile_dir_by_name(ipython_dir, profile) abs_config_file_name = os.path.join(p_dir.location, _CONFIG_FILE_NAME) create_config = True if os.path.isfile(abs_config_file_name): msg = "Tango configuration file {0} already exists.\n" msg += "Do you wish to replace it (y/n)?" msg = msg.format(abs_config_file_name) create_config = ask_yes_no(msg, default='y') if not create_config: return out("Installing tango extension to ipython... ") profile = __PROFILE.format(pytangover=tango.Release.version, ipyver=IPython.release.version, protected_block=__PROTECTED_BLOCK) with open(abs_config_file_name, "w") as f: f.write(profile) f.close() out("[DONE]\n\n") out("""\ To start ipython with tango interface simply type on the command line: %% ipython --profile=tango For more information goto: http://pytango.readthedocs.io Have fun with ITango! The PyTango team """) def main(): d = None if len(sys.argv) > 1: d = sys.argv[1] install(d) install_kernel() if __name__ == "__main__": main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/itango.py0000666000000000000000000013122614675025471014670 0ustar00rootroot# ----------------------------------------------------------------------------- # This file is part of ITango (http://pypi.python.org/pypi/itango) # # Copyright 2006-2012 CELLS / ALBA Synchrotron, Bellaterra, Spain # Copyright 2013-2014 European Synchrotron Radiation Facility, Grenoble, France # # Distributed under the terms of the GNU Lesser General Public License, # either version 3 of the License, or (at your option) any later version. # See LICENSE.txt for more info. # ----------------------------------------------------------------------------- """An IPython profile designed to provide a user friendly interface to Tango""" from __future__ import print_function __all__ = ["load_config", "load_ipython_extension", "unload_ipython_extension", "run", "run_qt"] import os import re import io import sys import operator import textwrap import IPython from IPython.core.error import UsageError from IPython.utils.ipstruct import Struct from IPython.core.page import page from IPython.core.interactiveshell import InteractiveShell from IPython.terminal.ipapp import launch_new_instance from packaging.version import Version from traitlets.config.application import Application import tango import tango.utils from . import __version__ from . import common from .eventlogger import EventLogger from .install import install, is_installed, install_kernel _TG_EXCEPTIONS = tango.DevFailed, tango.ConnectionFailed, \ tango.CommunicationFailed, \ tango.NamedDevFailed, tango.NamedDevFailedList, \ tango.WrongNameSyntax, tango.NonDbDevice, tango.WrongData, \ tango.NonSupportedFeature, tango.AsynCall, \ tango.AsynReplyNotArrived, tango.EventSystemFailed, \ tango.DeviceUnlocked, tango.NotAllowed _DB_SYMB = "db" _DFT_TANGO_HOST = None _TANGO_STORE = "__tango_store" _TANGO_ERR = "__tango_error" _PYTHON_ERR = "__python_error" _tango_init = False def _get_ipython_major_version(): ver = None if hasattr(IPython, "Release"): ver = IPython.Release.version.split(".") elif hasattr(IPython, "release"): ver = IPython.release.version.split(".") return int(ver[0]) if ver else 0 if _get_ipython_major_version() >= 5: _DEFAULTCOLOR = 'Neutral' else: _DEFAULTCOLOR = 'Linux' # IPython utilities def get_pylab_mode(): return get_app().pylab def get_color_mode(): return get_config().InteractiveShell.colors def get_app(): return Application.instance() def get_shell(): """Get the global InteractiveShell instance.""" return get_app().shell def get_ipapi(): """Get the global InteractiveShell instance.""" return InteractiveShell.instance() def get_config(): return get_app().config def get_editor(): return get_ipapi().editor def get_user_ns(): return get_shell().user_ns class DeviceClassCompleter(object): """Completer class that returns the list of devices of some class when called. """ def __init__(self, klass, devices): self._klass = klass self._devices = devices def __call__(self, ip, evt): return self._devices # Rewrite DeviceProxy constructor because the database context that the user is # using may be different than the default TANGO_HOST. What we do is always append # the name of the database in usage to the device name given by the user (in case # he doesn't give a database name him(her)self, of course. # __DeviceProxy_init_orig__ = tango.DeviceProxy.__init__ # def __DeviceProxy__init__(self, dev_name): # db = __get_db() # if db is None: return # if dev_name.count(":") == 0: # db_name = "%s:%s" % (db.get_db_host(), db.get_db_port()) # dev_name = "%s/%s" % (db_name, dev_name) # __DeviceProxy_init_orig__(self, dev_name) # tango.DeviceProxy.__init__ = __DeviceProxy__init__ # Completers def __DeviceProxy_completer(ip, evt): db = __get_db() if db is None: return ret = list(db._db_cache.devices.keys()) ret.extend(db._db_cache.aliases.keys()) return ret def __DeviceClass_completer(ip, evt): db = __get_db() if db is None: return return list(db._db_cache.klasses.keys()) def __DeviceAlias_completer(ip, evt): db = __get_db() if db is None: return return list(db._db_cache.aliases.keys()) def __AttributeAlias_completer(ip, evt): db = __get_db() if db is None: return return list(db._db_cache.attr_aliases.keys()) def __PureDeviceProxy_completer(ip, evt): db = __get_db() if db is None: return return list(db._db_cache.devices.keys()) def __AttributeProxy_completer(ip, evt): db = __get_db() if db is None: return cache = db._db_cache symb = evt.symbol n = symb.count("/") ret, devs, dev_aliases = None, cache.devices, cache.aliases # dev_list and dev_alias_list are case insensitive. They should only be used # to search for elements. Their elements are the same as the keys of the # dictionaries devs and dev_aliases respectively dev_list, dev_alias_list = cache.device_list, cache.alias_list dev_name = None if n == 0: # means it can be an attr alias, a device name has alias or as full device name ret = list(cache.get("attr_aliases").keys()) ret.extend([ d+"/" for d in devs ]) ret.extend([ d+"/" for d in dev_aliases ]) # device alias found! if symb in dev_alias_list: dev_name = symb elif n == 1: # it can still be a full device name ret = [ d+"/" for d in devs ] # it can also be devalias/attr_name dev, attr = symb.split("/") if dev in dev_alias_list: dev_name = dev elif n == 2: # it is for sure NOT an attribute alias or a device alias ret = [ d+"/" for d in devs ] # device found! if symb in dev_list: dev_name = symb elif n == 3: # it is for sure a full attribute name dev, sep, attr = symb.rpartition("/") if dev in dev_list: dev_name = dev if dev_name is None: return ret try: d = __get_device_proxy(dev_name) # first check in cache for the attribute list if not hasattr(d, "_attr_list"): d._attr_list = d.get_attribute_list() if ret is None: ret = [] ret.extend([ "%s/%s" % (dev_name, a) for a in d._attr_list ]) except: # either DeviceProxy could not be created or device is not online pass return ret def __get_device_proxy(dev_name): db = __get_db() if db is None: return cache = db._db_cache from_alias = cache.aliases.get(dev_name) if from_alias is not None: dev_name = from_alias data = cache.devices.get(dev_name) if data is not None: d = data[3] if d is None: try: d = data[3] = tango.DeviceProxy(dev_name) except: pass return d def __get_device_subscriptions(dev_name): db = __get_db() if db is None: return cache = db._db_cache from_alias = cache.aliases.get(dev_name) if from_alias is not None: dev_name = from_alias data = cache.devices.get(dev_name) if data is not None: return data[4] __monitor_completer = __AttributeProxy_completer # Magic commands def refreshdb(self, parameter_s=''): init_db(parameter_s) def switchdb(self, parameter_s=''): """Switches the active tango Database. Usage: switchdb [(:| )] is optional. If not given it defaults to 10000. Examples: In [1]: switchdb homer:10005 In [2]: switchdb homer 10005 In [3]: switchdb homer""" if parameter_s == '': raise UsageError("%switchdb: Must specify a tango database name. " "See '%switchdb?'") return init_db(parameter_s) def lsdev(self, parameter_s=''): """Lists all known tango devices. Usage: lsdev [ - activates monitoring of given attribute %mon -d - deactivates monitoring of given attribute %mon -r - deactivates monitoring of all attributes %mon -i - displays detailed information for the event with given id %mon -l - shows event table filtered with the regular expression for attribute name %mon - shows event table (= %mon -i .* .*)""" db = __get_db() if db is None: print("You are not connected to any Tango Database.") return # make sure parameter_s is a str and not a unicode parameter_s = str(parameter_s) opts, args = self.parse_options(parameter_s,'adril', mode='list') if len(args) > 3: raise UsageError("%mon: too many arguments") if 'd' in opts: try: todel = args[0] except IndexError: raise UsageError("%mon -d: must provide an attribute to unmonitor") else: try: dev, _, attr = todel.rpartition("/") subscriptions = __get_device_subscriptions(dev) attr_id = subscriptions[attr.lower()] del subscriptions[attr.lower()] d = __get_device_proxy(dev) d.unsubscribe_event(attr_id) print("Stopped monitoring '%s'" % todel) except KeyError: raise UsageError("%%mon -d: Not monitoring '%s'" % todel) elif 'a' in opts: try: toadd = args[0] except IndexError: raise UsageError("%mon -a: must provide an attribute to monitor") dev, _, attr = toadd.rpartition("/") subscriptions = __get_device_subscriptions(dev) attr_id = subscriptions.get(attr.lower()) if attr_id is not None: raise UsageError("%%mon -a: Already monitoring '%s'" % toadd) d = __get_device_proxy(dev) w = __get_event_log() model = w.model() attr_id = d.subscribe_event(attr, tango.EventType.CHANGE_EVENT, model, []) subscriptions[attr.lower()] = attr_id print("'%s' is now being monitored. Type 'mon' to see all events" % toadd) elif 'r' in opts: for d, v in db._db_cache.devices.items(): d, subs = v[3], v[4] for _id in subs.values(): d.unsubscribe_event(_id) v[4] = {} elif 'i' in opts: try: evtid = int(args[0]) except IndexError: raise UsageError("%mon -i: must provide an event ID") except ValueError: raise UsageError("%mon -i: must provide a valid event ID") try: w = __get_event_log() e = w.getEvents()[evtid] if e.err: print(str(tango.DevFailed(*e.errors))) else: print(str(e)) except IndexError: raise UsageError("%mon -i: must provide a valid event ID") elif 'l' in opts: try: dexpr = args[0] aexpr = args[1] except IndexError: raise UsageError("%mon -l: must provide valid device and " \ "attribute filters") w = __get_event_log() w.show(dexpr, aexpr) else: w = __get_event_log() w.show() # Useful functions # (not magic commands but accessible from CLI as normal python functions) def get_device_map(): """Returns a dictionary where keys are device names and value is a sequence of 4 elements: - alias name (empty string if no alias is defined) - tango server name (full tango server name /) - tango class name - DeviceProxy to the device or None if it hasn't been initialized yet (this last element is for internal tango usage only. If you need a DeviceProxy to this device, create your own)""" db = __get_db() if db is None: print("You are not connected to any Tango Database.") return return db._db_cache.devices def get_server_map(): """Returns a dictionary where keys are server names (/) and value is a sequence of device names that belong to the server""" db = __get_db() if db is None: print("You are not connected to any Tango Database.") return return db._db_cache.servers def get_class_map(): """Returns a dictionary where keys are the tango classes and value is a sequence of device names that belong to the tango class""" db = __get_db() if db is None: print("You are not connected to any Tango Database.") return return db._db_cache.klasses def get_alias_map(): """Returns a dictionary where keys are the tango device aliases and value is a the tango device name""" db = __get_db() if db is None: print("You are not connected to any Tango Database.") return return db._db_cache.aliases def get_device_list(): """Returns a case insensitive list of device names for the current database""" db = __get_db() if db is None: print("You are not connected to any Tango Database.") return return db._db_cache.device_list def get_alias_list(): """Returns a case insensitive list of device aliases for the current database""" db = __get_db() if db is None: print("You are not connected to any Tango Database.") return return db._db_cache.alias_list # Private helper methods def __exc_handler(ip, etype, value, tb, tb_offset=None): global _TG_EXCEPTIONS user_ns = get_user_ns() if etype in _TG_EXCEPTIONS: global _TANGO_ERR user_ns[_TANGO_ERR] = etype, value, tb, tb_offset if len(value.args): v = value.args[0] print("%s: %s" % (v.reason ,v.desc)) else: print("Empty DevFailed") print("(For more detailed information type: tango_error)") else: global _PYTHON_ERR user_ns[_PYTHON_ERR] = etype, value, tb, tb_offset print(etype.__name__ + ": " + str(value)) print("(For more detailed information type: python_error)") def __get_default_tango_host(): global _DFT_TANGO_HOST if _DFT_TANGO_HOST is None: try: db = tango.Database() _DFT_TANGO_HOST = "%s:%s" % (db.get_db_host(), db.get_db_port()) except: pass return _DFT_TANGO_HOST def __get_db(host_port=None): """host_port == None: Use current DB whatever it is or create default if doesn't exist host_port == '' : use default db. If it is not the current db, switch current db to it and return it host_port == ... : if ... is not the current db, switch current db to it and return it """ user_ns = get_user_ns() global _DB_SYMB db = user_ns.get(_DB_SYMB) if host_port is None: if db is None: host_port = __get_default_tango_host() elif host_port == '': host_port = __get_default_tango_host() else: host_port = host_port.strip().replace(" ", ":") if host_port.count(":") == 0: host_port += ":10000" if host_port is not None: host_port = str(host_port) if db is None: create_db = True elif host_port is None: create_db = False else: old_host_port = "%s:%s" % (db.get_db_host(), db.get_db_port()) create_db = old_host_port != host_port if create_db: try: db = tango.Database(*host_port.split(":")) user_ns["DB_NAME"] = host_port except Exception as e: if db: print("\nCould not access Database %s:" % host_port) print(str(e)) old_host_port = "%s:%s" % (db.get_db_host(), db.get_db_port()) print("Maintaining connection to Database", old_host_port) user_ns["DB_NAME"] = old_host_port else: print("\nCould not access any Database. Make sure:") print("\t- .tangorc, /etc/tangorc or TANGO_HOST environment is defined.") print("\t- the Database DS is running") user_ns["DB_NAME"] = "OFFLINE" # register the 'db' in the user namespace user_ns.update({_DB_SYMB: db}) return db def __get_obj_name(o): try: n = o.__name__ except: try: n = o.__class__.__name__ except: n = "" return n def __completer_wrapper(f): def wrapper(ip, evt): try: return f(ip, evt) except Exception as e: print() print("An unexpected exception ocorred during ITango command completer.") print("Please send a bug report to the PyTango team with the following information:") print(80*"-") print("Completer:",__get_obj_name(f)) print(80*"-") import traceback traceback.print_exc() print(80*"-") raise e return wrapper def __expose_magic(ip, name, fn, completer_func=None): ip.define_magic(name, fn) if completer_func is None: return # enable macro param completion ip.set_hook('complete_command', completer_func, re_key = ".*" + name) def __unexpose_magic(ip, name): delattr(ip, name) def __build_color_scheme(ip, name): import IPython.Prompts import IPython.PyColorize import IPython.excolors from IPython.utils.coloransi import TermColors, InputTermColors # make some schemes as instances so we can copy them for modification easily: PromptColors = IPython.Prompts.PromptColors ANSICodeColors = IPython.PyColorize.ANSICodeColors ExceptionColors = IPython.excolors.ExceptionColors TBColors = ip.IP.InteractiveTB.color_scheme_table SyntaxColors = ip.IP.SyntaxTB.color_scheme_table InspectColors = IPython.OInspect.InspectColors promptTangoColors = PromptColors[_DEFAULTCOLOR].copy(name) ANSITangoColors = ANSICodeColors[_DEFAULTCOLOR].copy(name) exceptionTangoColors = ExceptionColors[_DEFAULTCOLOR].copy(name) TBTangoColors = TBColors[_DEFAULTCOLOR].copy(name) syntaxTangoColors = SyntaxColors[_DEFAULTCOLOR].copy(name) inspectTangoColors = InspectColors[_DEFAULTCOLOR].copy(name) # initialize prompt with default tango colors promptTangoColors.colors.in_prompt = InputTermColors.Purple promptTangoColors.colors.in_number = InputTermColors.LightPurple promptTangoColors.colors.in_prompt2 = InputTermColors.Purple promptTangoColors.colors.out_prompt = TermColors.Blue promptTangoColors.colors.out_number = TermColors.LightBlue ret= { "prompt" : (PromptColors, promptTangoColors), "ANSI" : (ANSICodeColors, ANSITangoColors), "except" : (ExceptionColors, exceptionTangoColors), "TB" : (TBColors, TBTangoColors), "Syntax" : (SyntaxColors, syntaxTangoColors), "Inspect": (InspectColors, inspectTangoColors) } if ip.IP.isthreaded: TBThreadedColors = ip.IP.sys_excepthook.color_scheme_table TBThreadedTangoColors = TBThreadedColors[_DEFAULTCOLOR].copy(name) ret["TBThreaded"] = TBThreadedColors, TBThreadedTangoColors return ret # Initialization methods def init_pytango(ip): """Initializes the IPython environment with PyTango elements""" # export symbols to IPython namepspace ip.ex("import tango") ip.ex("from tango import DeviceProxy, AttributeProxy, Database, Group") ip.ex("Device = DeviceProxy") ip.ex("Attribute = AttributeProxy") # add completers dp_completer = __completer_wrapper(__DeviceProxy_completer) attr_completer = __completer_wrapper(__AttributeProxy_completer) ip.set_hook('complete_command', dp_completer, re_key = r".*DeviceProxy[^\w\.]+") ip.set_hook('complete_command', dp_completer, re_key = r".*Device[^\w\.]+") ip.set_hook('complete_command', attr_completer, re_key = r".*AttributeProxy[^\w\.]+") ip.set_hook('complete_command', attr_completer, re_key = r".*Attribute[^\w\.]+") ip.set_custom_exc((Exception,), __exc_handler) def init_db(parameter_s=''): ip = get_ipapi() user_ns = get_user_ns() global _DB_SYMB old_db = user_ns.get(_DB_SYMB) db = __get_db(parameter_s) if old_db is not None and hasattr(old_db, "_db_cache"): old_junk = old_db._db_cache["junk"].keys() for e in old_junk: del user_ns[e] else: old_junk = () if db is None: return os.environ["TANGO_HOST"] = "%s:%s" % (db.get_db_host(), db.get_db_port()) # Initialize device and server information query = "SELECT name, alias, server, class FROM device order by name" r = db.command_inout("DbMySqlSelect", query) row_nb, column_nb = r[0][-2], r[0][-1] data = r[1] assert row_nb == len(data) / column_nb devices, aliases, servers, klasses = data[0::4], data[1::4], data[2::4], data[3::4] # CD = tango.utils.CaselessDict CD = dict dev_dict, serv_dict, klass_dict, alias_dict = CD(), CD(), CD(), CD() for device, alias, server, klass in zip(devices, aliases, servers, klasses): dev_lower = device.lower() # hide dserver devices if dev_lower.startswith("dserver/"): continue # hide alias that start with "_" if alias and alias[0] == "_": alias = '' # last None below is to be filled by DeviceProxy object on demand # last empty dict where keys is attribute name and value is # the subscription id dev_dict[device] = [alias, server, klass, None, {}] serv_devs = serv_dict.get(server) if serv_devs is None: serv_dict[server] = serv_devs = [] serv_devs.append(device) klass_devs = klass_dict.get(klass) if klass_devs is None: klass_dict[klass] = klass_devs = [] klass_devs.append(device) if len(alias): alias_dict[alias] = device serv_devs.append(alias) klass_devs.append(alias) exposed_klasses = {} excluded_klasses = "DServer", for klass, devices in klass_dict.items(): if klass in excluded_klasses: continue exists = klass in user_ns if not exists or klass in old_junk: c = DeviceClassCompleter(klass, devices) ip.set_hook('complete_command', c, re_key = r".*" + klass + r"[^\w\.]+") exposed_klasses[klass] = tango.DeviceProxy # expose classes no user namespace user_ns.update(exposed_klasses) # Initialize attribute information query = "SELECT name, alias FROM attribute_alias order by alias" r = db.command_inout("DbMySqlSelect", query) row_nb, column_nb = r[0][-2], r[0][-1] data = r[1] assert row_nb == len(data) / column_nb attributes, aliases = data[0::2], data[1::2] attr_alias_dict = {} for attribute, alias in zip(attributes, aliases): if len(alias): attr_alias_dict[alias] = attribute device_list = tango.utils.CaselessList(dev_dict.keys()) alias_list = tango.utils.CaselessList(alias_dict.keys()) attr_alias_list = tango.utils.CaselessList(attr_alias_dict.keys()) # Build cache db_cache = Struct(devices=dev_dict, aliases=alias_dict, servers=serv_dict, klasses=klass_dict, junk=exposed_klasses, attr_aliases=attr_alias_dict, device_list=device_list, alias_list=alias_list, attr_alias_list=attr_alias_list) db._db_cache = db_cache # Add this DB to the list of known DBs (for possible use in magic commands) if db.get_db_port_num() == 10000: db_name = db.get_db_host() else: db_name = "%s:%s" % (db.get_db_host(), db.get_db_port()) return db def init_magic(ip): import IPython.core.magic new_style_magics = hasattr(IPython.core.magic, 'Magics') and hasattr(IPython.core.magic, 'magics_class') if new_style_magics: @IPython.core.magic.magics_class class Tango(IPython.core.magic.Magics): refreshdb = IPython.core.magic.line_magic(refreshdb) switchdb = IPython.core.magic.line_magic(switchdb) lsdev = IPython.core.magic.line_magic(lsdev) lsdevclass = IPython.core.magic.line_magic(lsdevclass) lsserv = IPython.core.magic.line_magic(lsserv) tango_error = IPython.core.magic.line_magic(tango_error) python_error = IPython.core.magic.line_magic(python_error) mon = IPython.core.magic.line_magic(mon) ip.register_magics(Tango) ip.set_hook('complete_command', __monitor_completer, re_key = ".*" + "mon") else: __expose_magic(ip, "refreshdb", refreshdb) __expose_magic(ip, "switchdb", switchdb) __expose_magic(ip, "lsdev", lsdev) __expose_magic(ip, "lsdevclass", lsdevclass) __expose_magic(ip, "lsserv", lsserv) __expose_magic(ip, "tango_error", tango_error) __expose_magic(ip, "python_error", python_error) __expose_magic(ip, "mon", mon, __monitor_completer) get_user_ns().update({"get_device_map" : get_device_map, "get_server_map" : get_server_map, "get_class_map" : get_class_map, "get_alias_map" : get_alias_map, "get_device_list" : get_device_list, "get_alias_list" : get_alias_list}) def complete(text): """a super complete!!!!""" self = get_ipapi().IP complete = self.Completer.complete state = 0 comps = set() while True: newcomp = complete("", state, line_buffer=text) if newcomp is None: break comps.add(newcomp) state += 1 outcomps = sorted(comps) return outcomps __DIRNAME = os.path.dirname(os.path.abspath(__file__)) __RES_DIR = os.path.join(__DIRNAME, 'resource') class __TangoDeviceInfo(object): """Helper class for when DeviceProxy.info() is not available""" def __init__(self, dev): try: db = dev.get_device_db() klass = db.get_class_for_device(dev.dev_name()) self.dev_class = self.dev_type = klass except: self.dev_class = self.dev_type = 'Device' self.doc_url = 'http://www.esrf.eu/computing/cs/tango/tango_doc/ds_doc/index.html' self.server_host = 'Unknown' self.server_id = 'Unknown' self.server_version = 1 def __get_device_class_icon(klass="Device"): icon_prop = "__icon" db = __get_db() try: icon_filename = db.get_class_property(klass, icon_prop)[icon_prop] if icon_filename: icon_filename = icon_filename[0] else: icon_filename = klass.lower() + os.path.extsep + "png" except: icon_filename = klass.lower() + os.path.extsep + "png" if os.path.isabs(icon_filename): icon = icon_filename else: icon = os.path.join(__RES_DIR, icon_filename) if not os.path.isfile(icon): icon = os.path.join(__RES_DIR, "_class.png") return icon __DEV_CLASS_HTML_TEMPLATE = """\
Name:{name}
Super class:{super_class}
Database:{database}
Description:{description}
Documentation:{doc_url}
""" def __get_class_property_str(dev_class, prop_name, default=""): data = __get_db().get_class_property(dev_class, prop_name)[prop_name] if len(data): return data[0] else: return default def display_deviceclass_html(dev_class): """displayhook function for tango.DeviceProxy, rendered as HTML""" fmt = dict(name=dev_class) db = __get_db() try: fmt["database"] = db.get_db_host() + ":" + db.get_db_port() except: try: fmt["database"] = db.get_file_name() except: fmt["database"] = "Unknown" doc_url = __get_class_property_str(dev_class, "doc_url", "www.tango-controls.org") try: fmt["doc_url"] = doc_url[doc_url.index("http"):] except ValueError: fmt["doc_url"] = doc_url fmt['icon'] = __get_device_class_icon(dev_class) fmt['super_class'] = __get_class_property_str(dev_class, "InheritedFrom", "DeviceImpl") fmt['description'] = __get_class_property_str(dev_class, "Description", "A Tango device class") return __DEV_CLASS_HTML_TEMPLATE.format(**fmt) def __get_device_icon(dev_proxy, klass="Device"): icon_prop = "__icon" db = dev_proxy.get_device_db() try: icon_filename = dev_proxy.get_property(icon_prop)[icon_prop] if icon_filename: icon_filename = icon_filename[0] else: icon_filename = db.get_class_property(klass, icon_prop)[icon_prop] if icon_filename: icon_filename = icon_filename[0] else: icon_filename = klass.lower() + os.path.extsep + "png" except: icon_filename = klass.lower() + os.path.extsep + "png" if os.path.isabs(icon_filename): icon = icon_filename else: icon = os.path.join(__RES_DIR, icon_filename) if not os.path.isfile(icon): icon = os.path.join(__RES_DIR, "device.png") return icon __DEV_HTML_TEMPLATE = """\
Name:{name}
Alias:{alias}
Database:{database}
Type:{dev_class}
Server:{server_id}
Server host:{server_host}
Documentation:{doc_url}
""" def display_deviceproxy_html(dev_proxy): """displayhook function for tango.DeviceProxy, rendered as HTML""" try: info = dev_proxy.info() except: info = __TangoDeviceInfo(dev_proxy) name = dev_proxy.dev_name() fmt = dict(dev_class=info.dev_class, server_id=info.server_id, server_host=info.server_host, name=name) try: fmt["alias"] = dev_proxy.alias() except: fmt["alias"] = "-----" db = dev_proxy.get_device_db() try: fmt["database"] = db.get_db_host() + ":" + db.get_db_port() except: try: fmt["database"] = db.get_file_name() except: fmt["database"] = "Unknown" doc_url = info.doc_url.split("\n")[0] try: fmt["doc_url"] = doc_url[doc_url.index("http"):] except ValueError: fmt["doc_url"] = doc_url fmt['icon'] = __get_device_icon(dev_proxy, info.dev_class) return __DEV_HTML_TEMPLATE.format(**fmt) __DB_HTML_TEMPLATE = """\
{name}
{info}
""" def display_database_html(db): """displayhook function for tango.Database, rendered as HTML""" fmt = dict() try: fmt["name"] = db.get_db_host() + ":" + db.get_db_port() except: try: fmt["name"] = db.get_file_name() except: fmt["name"] = "Unknown" try: fmt["info"] = db.get_info().replace("\n", "
") except: fmt["info"] = "Unknown" fmt['icon'] = os.path.join(__RES_DIR, "database.png") return __DB_HTML_TEMPLATE.format(**fmt) __DEV_ATTR_RW_HTML_TEMPLATE = """\
{name} ({type}, {data_format}, {quality}) at {time}
value{r_dim}: {value}
w_value{w_dim}: {w_value}
""" __DEV_ATTR_RO_HTML_TEMPLATE = """\
{name} ({type}, {data_format}, {quality}) at {time}
value{r_dim}: {value}
""" __DEV_ATTR_ERR_HTML_TEMPLATE = """\
{name} ({type}, {data_format}, {quality}) at {time}
{error}
""" QUALITY_TO_HEXCOLOR_STR = { tango.AttrQuality.ATTR_VALID: ("#00FF00", "#000000"), tango.AttrQuality.ATTR_INVALID: ("#808080", "#FFFFFF"), tango.AttrQuality.ATTR_ALARM: ("#FF8C00", "#FFFFFF"), tango.AttrQuality.ATTR_WARNING: ("#FF8C00", "#FFFFFF"), tango.AttrQuality.ATTR_CHANGING: ("#80A0FF", "#000000"), None: ("#808080", "#000000"), } def display_deviceattribute_html(da): """displayhook function for tango.DeviceAttribute, rendered as HTML""" fmt = dict(name=da.name, type=da.type, data_format=da.data_format) template = None if da.has_failed: fmt['error'] = "\n".join(map(str, da.get_err_stack())).replace("\n", "
") template = __DEV_ATTR_ERR_HTML_TEMPLATE else: rd, wd = da.r_dimension, da.w_dimension if wd.dim_x == 0 and wd.dim_y == 0 and da.w_value is None: template = __DEV_ATTR_RO_HTML_TEMPLATE else: template = __DEV_ATTR_RW_HTML_TEMPLATE fmt['w_value'] = str(da.w_value) if da.data_format == tango.AttrDataFormat.SCALAR: fmt['w_dim'] = "" else: fmt['w_dim'] = "
(%d, %d)" % (wd.dim_x, wd.dim_y) fmt['bgcolor'], fmt['fgcolor'] = QUALITY_TO_HEXCOLOR_STR[da.quality] fmt['quality'] = str(da.quality) if da.data_format == tango.AttrDataFormat.SCALAR: fmt['r_dim'] = "" else: fmt['r_dim'] = "
(%d, %d)" % (rd.dim_x, rd.dim_y) fmt['value'] = str(da.value) fmt['time'] = str(da.time.todatetime()) return template.format(**fmt) __GROUP_HTML_TEMPLATE = """\
Name:{name}
Size:{size}
Devices:{devices}
""" def display_group_html(group): devices = group.get_device_list() devices = ", ".join(devices) fmt=dict(name=group.get_name(), size=group.get_size(), devices=devices) return __GROUP_HTML_TEMPLATE.format(**fmt) __GROUP_REPLY_HTML_TEMPLATE = """\ """ __GROUP_REPLY_ERR_HTML_TEMPLATE = """\
{name}
{data}
{name}
{error}
""" def display_groupreply_html(gr): fmt = dict(name="%s/%s" % (gr.dev_name(), gr.obj_name())) template = None if gr.has_failed(): fmt['error'] = "\n".join(map(str, gr.get_err_stack())).replace("\n", "
") template = __GROUP_REPLY_ERR_HTML_TEMPLATE else: template = __GROUP_REPLY_HTML_TEMPLATE data = gr.get_data() if isinstance(data, tango.DeviceAttribute): data = display_deviceattribute_html(data) fmt["data"] = data ret = template.format(**fmt) return ret def init_display(ip): html_formatter = ip.display_formatter.formatters["text/html"] html_formatter.for_type(tango.DeviceProxy, display_deviceproxy_html) html_formatter.for_type(tango.Database, display_database_html) html_formatter.for_type(tango.DeviceAttribute, display_deviceattribute_html) html_formatter.for_type(tango.Group, display_group_html) html_formatter.for_type(tango.GroupAttrReply, display_groupreply_html) html_formatter.for_type(tango.GroupCmdReply, display_groupreply_html) def init_ipython(ip=None, store=True, pytango=True, colors=True, console=True, magic=True): if ip is None: ip = get_ipapi() global _tango_init if _tango_init is True: return init_display(ip) if pytango: init_pytango(ip) init_db() if magic: init_magic(ip) _tango_init = True def load_config(config): import IPython.utils.coloransi d = { "version": __version__, "pyver": str(common.get_python_version()), "ipyver": str(common.get_ipython_version()), "pytangover": str(common.get_pytango_version()) } d.update(IPython.utils.coloransi.TermColors.__dict__) so = Struct( tango_banner="""%(Blue)shint: Try typing: mydev = Device("%(LightBlue)s%(Normal)s\n""") so = config.get("tango_options", so) # ------------------------------------ # Application # ------------------------------------ app = config.Application app.log_level = 30 # ------------------------------------ # InteractiveShell # ------------------------------------ i_shell = config.InteractiveShell i_shell.colors = _DEFAULTCOLOR # ------------------------------------ # PromptManager (ipython >= 0.12) # ------------------------------------ if common.get_ipython_version() < Version('5.0'): prompt = config.PromptManager prompt.in_template = 'ITango [\\#]: ' prompt.out_template = 'Result [\\#]: ' # ------------------------------------ # InteractiveShellApp # ------------------------------------ i_shell_app = config.InteractiveShellApp extensions = getattr(i_shell_app, 'extensions', []) extensions.append('itango') i_shell_app.extensions = extensions # ------------------------------------ # TerminalIPythonApp: options for the IPython terminal (and not Qt Console) # ------------------------------------ term_app = config.TerminalIPythonApp term_app.display_banner = True #term_app.nosep = False #term_app.classic = True # ------------------------------------ # IPKernelApp: options for the Qt Console # ------------------------------------ #kernel_app = config.IPKernelApp ipython_widget = config.IPythonWidget ipython_widget.in_prompt = 'ITango [%i]: ' ipython_widget.out_prompt = 'Result [%i]: ' #zmq_i_shell = config.ZMQInteractiveShell # ------------------------------------ # TerminalInteractiveShell # ------------------------------------ term_i_shell = config.TerminalInteractiveShell banner = """\ %(Purple)sITango %(version)s%(Normal)s -- An interactive %(Purple)sTango%(Normal)s client. Running on top of Python %(pyver)s, IPython %(ipyver)s and PyTango %(pytangover)s help -> ITango's help system. object? -> Details about 'object'. ?object also works, ?? prints more. """ banner = banner % d banner = banner.format(**d) tango_banner = so.tango_banner % d tango_banner = tango_banner.format(**d) all_banner = "\n".join((banner, tango_banner)) term_i_shell.banner1 = banner term_i_shell.banner2 = tango_banner # ------------------------------------ # FrontendWidget # ------------------------------------ frontend_widget = config.ITangoConsole frontend_widget.banner = all_banner def load_ipython_extension(ipython): # The ``ipython`` argument is the currently active # :class:`InteractiveShell` instance that can be used in any way. # This allows you do to things like register new magics, plugins or # aliases. init_ipython(ip=ipython, store=False, colors=False) def unload_ipython_extension(ipython): # If you want your extension to be unloadable, put that logic here. #print "Unloading tango IPython extension" pass def patch_qt_console(): """Overwrite the original IPython Qt widget with our own so we can put a customized banner. Return the customized application class. """ # Traitlets imports from traitlets import Unicode # Qt console imports from qtconsole import rich_ipython_widget from qtconsole import qtconsoleapp # Patch widget factory try: WidgetClass = rich_ipython_widget.RichJupyterWidget except AttributeError: WidgetClass = rich_ipython_widget.RichIPythonWidget # Custom widget class class ITangoConsole(WidgetClass): banner = Unicode(config=True) def _banner_default(self): config = get_config() banner = config.ITangoConsole.banner return banner if isinstance(banner, str) else '' # Patch widget factory try: AppClass = qtconsoleapp.JupyterQtConsoleApp except AttributeError: AppClass = qtconsoleapp.IPythonQtConsoleApp AppClass.widget_factory = ITangoConsole # Return patched application class return AppClass def run(qt=False): argv = sys.argv # Install tango profile if not is_installed(): install(verbose=False) # Install jupyter kernel spec kernel_installed = install_kernel(verbose=False) # Run with jupyter if qt and kernel_installed: argv.append("--kernel=tango") app_class = patch_qt_console() return app_class.launch_instance() # Add tango profile if not any(arg.startswith('--profile=') for arg in argv): argv.append("--profile=tango") # Configure qt if qt: patch_qt_console() if 'qtconsole' not in argv: argv.insert(1, 'qtconsole') argv.append('--pylab=inline') # Run launch_new_instance() def run_qt(): return run(qt=True) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1727277889.3888857 itango-0.2.0/itango/resource/0000755000000000000000000000000014675025501014645 5ustar00rootroot././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/resource/ITangoConsole.svg0000666000000000000000000003375114675025471020115 0ustar00rootroot image/svg+xml ITango ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/resource/database.png0000666000000000000000000003263614675025471017143 0ustar00rootrootPNG  IHDR>asRGBbKGD pHYs  tIME % IDATx}yfUfh4%ZL٘l1&LA$q6T\ DEلX`ppl-/B6Kh4kmo'}_>}ݣ߻ܳ^{^{^{^{^3sDS]xxc3dC̼R `@P1Os jf< "lQV,XB\p9M7pr";&T5]uk[÷w.--FDw Aյ:^fW)"BȲ Y"M{fHY,K2i42H@& "$J)TR eYA)P1q8p4tCfu3|5ڃػgY@U$:BTBB$ %!MHTQVX]8yx1#OP>v}׽~?|}~?pM75GS;cQV5R_2E!$Rbqii(k< }.-aaa>?}Ϸ7ї%8VTeZ)|k^!J_ŕ&_|4]X񥨪Y{_Xyϫ~'o_|4v )$eYؿwv #3kE) k,n`\| $!>jƓ??zs˫2K, ͯ A\ĥ5 /a*H$1qz I:|s~k.4A#L&bTSLÇЁ,^^çFN /؃s-<~iirh;1نheY OYba~7?;n?D XYceQPkoY;E6/!RJ̉!|5O6sGhn 0 kٕ`QUk[o;A!^{fqу7 M$.~   ].6#OG&1b~.f>B_RiS@ bNMkJ߰F U3k^+TP\=9d qq^bȋ QqYj %hg d"&|PGIBE#p`/G1IL'D"%UUc4,J&%ijgQ Y@nm. 2[qe7\;P%B>.1.lb(`0`4hTb( k1$d"i2ICWbC%`LPN"3t-&g g0@^Uͪ K1~ŀ`}: B jQC^PVZ }p/+sOJimQՌ֧(Je,Q֨{БH`VlCF{$$4 I)'`/wR7WdMbD.s<`]uz|Ǔ:QVh@`%A;CF"y-" rZ8yf-du=O" S 1q`)!X;UkF,o#tx.8vDaHx&GrL`BhZ{:]GBh`0hE0Q 0vYα؄ A6>\+ja$MX#44 ?oO&@HzVNZltsK<{S,(` Flu82d6j3 :SŜ+s5l: vm㬲hv L ğ$\t ;<F886q5:/yLДgB]0v @3e~@#q@@lAT86|V3ʹ$ CNrKSho!`'T;L$u]MH PF$,o0ܾ(Њ*mSɓ?Jv@Z wL1UlyiTյwdRs\M:c7^~GFW)[<$81'tcT !(ec ַ~0T ;mlPvA1Cxxu  <'f>tw~ E L^P3 <8t5Ts43'Pյxr'>8iV g#ÄK!Lq`s")WBD(;^xa0@ϡ>Z¤wR2H5 !A ?-zrSyE;(rE_@ fb[y oHo\~/ӧ'8ك'<&@ll_qs1AOMosH#@顄MD(<jS$]3o_i;޼=rw&ŋn<&CӴ܇s o Ȁ&H+ eYbщ$|y9LY+E=cha MdE!!&څbOq'ߡW('K F阰6h?(Jâl;x ܻ!xg?{;cOsKODYWP%"X/7BDSsr?Pդ*G42ɣ0 `8MqK vdSf݊&yzQw}#-ئ9 ㏟xmn]Wqii+k}y Cf P֌J)TuZAi \}.2O&(0ht|ro2Ep) Q)b&C5oe]rLS] 8s3]({|㵨w\<[V LGpmcy FCl ƺVQ"/kl V BHdD3t;j餺WJ$I )|'4A1)!I(:F]+1rF911VL f6DK`,\3@Q*_A?8DB)#4]+@JeG?Gt{#pn&|Ҝ{m(/0 ep>6&L}ѠP!= ` &m$]!4%I"J-]une&^+@[qe<}kke$I 'pFJR$\neؿw VeDb DopB뺻tDQ38k(@ ],j8/zY,uTc0˴)uO$Us+Ijt:S N ],:α1}ƺ3Hҵk;t9Nr&E/3ss]; L A٪R )t !fm*N^AB@>FS?k_oJ]?Xצe\X#%A,+Ee*K G9vi^ndIQC)$vzd{ZC*aR җ5 #.,.#Ifgu13Am*[41Kj:-f@p[mg8ڱ'fMfcU(0?c0ڤ D5u1e"[yg@Qts#Kj_OsYVPJ!Ȳ1T"M&F ~n!Au"1jU5Ψk-*L8/1k?11MrUQ vu}R(An&b% $ ̾@#_l4Dqu:%=3db@ne\fW`&CD;I +j, b~hɕ0!D1ɚR'L#&NYl%5Js MA-]0 MND;Kذ'n4IҠC#'G$#$5!:Sii'Д b(("d7U)s"֝ Wy}fL\T "@XqҢN! Y>N;ęJfI 4,R4`Q<5GW7mmNR[r0N ʬ|9oZmfy+U8LQFp0yB/شa,ς@ bw%@ c3\9rѤbF nrL{#??@Pנ; bg:S\&)e KjwJ3FԠX9uߨ}`5N3741LR,*H{I{\dF5PlLFգª&@ Q3xon-Eh*ꬮ (!v ᠫG<b,Wg5392pZ(i 7DAφf\$0qwNGc@6_V` tr#YP p+0<BE$[tS۾YHBHdaaOT0JA+9=1k062;GVPxբ`Nh@a"%S(GǍN>Woc7oHP8|'#Q !nr1r `yubm X'"B7E!!|M )gLP2E&qMK&r.A' 9Vq`ek -?h5JFy3598zl) SM0Apر'^pxڿ^_P!cp_/0ufчB8l=bǜMKm5ҭuq27< Deֹ(Ȧ%sd_W*ktE$"ßy?-^p$~-/g3?X%"kӮ _oFlXs0є1~rI7nΏkdaǻp!Ď9 F((b6 1)M'YM5i(v߿jiySwff\QDև.Z_@ζR,Mv" C4fp]=1Yl7z6q͔0Aݍ49<$}&fF?n}ͫQ]oo;veZ)/{t EUk6T/K]B|~YK`ObֹS^-}n p3lS㨞6&Q.\\ƙ1 MfgEQg'Au&EvZ(K]8 `6}BQWGa什Ž5ɼ¾=TlʐFlt])+lJh| !B:}g_8/ P Rx__r3η! N/,=;?׾.py r.ہP;l5h`?d1&s%WzQ'qSNLwPX7mt&$B]+ll 1KTvfRO+qzQ?SCNM&|#P,"bea)bF D>M2 BU(UG 2Mp`n<~GُT =3cʌ`[Ap9yH"ԊQ 5`ҵ.ًk=3Bzff7624š;0Db8Ǟ8z GA]JB+MpA+}\Z^jkC,qe:36z`n.zݶM$[Ch~'R n%M` Sl"U`֣JS:X[`?B0p(uPnTAoanq`<fgeQZPDbmc/=yQ%(Z;;8CsKI Rk!MTyتv-7FJ" c,>7py gWIV̖eg 27 IfY$'/JwDY\ yY!+agt#'NkP UM8/0án5ͨҌͮT\\NAʖ8 8;AL&eƤļLRǣG\:sL>{+͢\ՐR: 2T=IL2x0j\?@]eU*B1Os7EII֍QgN `(J!TlpD iEz|`/r#>M'yS?Д1n)6vEQa#4C撜gEaaʶEϝ&48~K A.<㠯Q;Ĩ߬H6\CH+K|p!][@`bjSf'Ѭ rP~m3vA-t &a9JAk2: `[sUR(5S8,b \9bp\<_i κ~7!8H8&LFr8.@ƶ-r@łۻG@Ex9!VLxϏP!JhLu(<0:2: )IiISO^޴o > +mdg CŽȞf|c )0"JˠyA|k+IP蕄8a}K3 AtiT@qLTœś~Fhu0 - w*LS~ EC*Ͷ}+(Ԃ؝R5#kY!`džtW2]#XIpg@4C'fFA2,lKw5p|'}lzS$<=Ly4B'&^X=ϗ_)e$ibz=zǾ4 (ncd ^ BS@rmSLb7˘WFiC݂9). &KwM(FcJ?t]@6Ykgrr))(Z prA:GC$I3 BxASf6O < g ~rĞM͗2 Iu]P|B""4" D&LO:mjK`a5@"e,=Y,}PM~$Eۘ EAmEۤLԃ,;`nDp9֜욀9P5ۇ) gQ:0{_@kkDY)Qs=tnIS"I)յ5pQ}il>\ 4~@ dO8j6aj)鸑KoH8(N_auӷM¥ iȫ2 \Λd&I,./'Ck[`uu7ˠ~;M3%Թ^(i bm ]ԋ"BPX(62l?zFr($!21-%@N0ȠVLx|޽]KKKJjru9{Ozb[ZZeU}4# gĪFAHfD; ؁!|ΟݰJFL  TxJ( PPPz_8FFYXB 7ΒWh8΀ʲ'>stGُ]G y1^ZZ¶ X}e+-x3sn=sYc-_^X$$t\mfJAB_W em`UQf]Y4CmٗnKx [kZD$~O0o_9Ve|' ̫m3mwێ\w&YxƝ/ |=n˧ɟ R3RJ$59BS|7_}{ +&q Z+3.BYi8(`Rb7N P0)%AZ`੧>}Ne1ZZx6lYW0uWN@0@oӝH%l5n0c$N8$qj{ҟ( dM߇6Ct ],4DЪ^I@V`eYZ8s"zKxɧf4I__䙧́F[;_ ϕP@ dj+ Iݾjɍ=]ikUi;&#ngE4Ax ?`m"(9\_ڄ\5 &nR7ɔUn[V2kpM-7_GǏ}H$"iEAA&YHA*#?g[ۮriu\hԩgp|" G9|4̅OS~>UCSUo>Uy$*xJJR44lh滭*+ko4~=(-k9\{_{;BG 뚍׮|goy4f0Apé-$Lj=I|u 9{g^o QU덪=^O}#~rp|΍0pwff'¾#x?w`|Lko3O7xHU&f!|* @:;`wf~ܞ{f"9ȄRfs 42s&ͱX`ADD4B /VE~'`uy"MT66>Zjc7܎gN>-mC.곯F( J?m.~h7@a rc7i9s(V.v^?nÛ4%1%6gfjOӓu5_!l g+vL6h&DWyR0hگMJri lWt*e3!ni<3v/ pivluu]IP+Lϻ}޽vkڽvkڽvkڽvm?s^IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/resource/device.png0000666000000000000000000020056514675025471016634 0ustar00rootrootPNG  IHDR>asRGBbKGD pHYs B(xtIME ,I IDATx@!|||b. (1EEE).  )/') ((/)/'/  )-') a---666xxxz|N|||%FLҀD/((0ˀ:B)/(n6dT"""(((uƀ&.( 000hhh999xV\ IDATf111222bAAA@@@Gi 111@@@FFF꽽_) MMM666D@@@ i;;;gyyyS\;!!!FFFQ'''EEE xc???]DkI;;;'''~~~OFFF+++~XAAA Xr0aJJJv=AAA [}}}߀T")))!!! u@@@333Y&<<< 6"""...MMMF~~~(111+++ ***... 888;;;3||| JJJ###333JJJ666NNN3MMM  8@@@C!!! n `h@@@J"""O7$d @@@Q%%%G~~~_# , IDAT@@@,*V~~~i fr@@@(,Jwww >>>EEE`1$$$%c~<<< ;;;z _'''  +++j"YYY222!!!rrrT"$$$888555  ,,,Xb222 "/<DJJJ))) ***hPPPxxxWp'&&&JJJ 4~~~^*** rrryyyf\\\  ,,,\V"""8rrr/Q )))?}}}RRR&+---@@@GGG񽽽 IDATaDDD)))>>::: 1 bbb www ,./.-:::KKK8nnn;;; MWmmm ]vWWWIEEEZhLLLYYYgNNN}}} ^^^ Rπ@)wLLL___"5%9 UUU }!!!  ]]]TTπ-<U9###AAA 6ggg  <<<'AAAK ***%%% &&&>>>:::555 AAA???|>>>444 f1 IDATlv +++ @@@A!!!~~~Drrrr-...r?.RRR E@@@ >>>$$$+!!!...+++ZXPk FFF555LLL---'888((( "+++}_DDD @CCC@III  222 MMM   000   333y1`|HHH 1w IDAT  (SSS      W***###  w666 U~~~@@@T      yr333@pAAAF m 1   c,o RRR oCCC333e ^ ЏsssW 555***VVVVc MMM򀙙))) EEEXa   ͩ[[[ """/###///SrrrUUU+++YJJJp MMM6I D)))'''輯\\\zi::: S999DDD`???###􊖖 HHH03 1- 444ԇgggA Vcccmpvvv @@@즔AAA;;;@g666>p999=!!! ˮ000:p*** Fa222- "̣ؖUUUL!!!V Yx IDAT  7111  IDAT25c(IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/resource/motor.png0000666000000000000000000003176314675025471016537 0ustar00rootrootPNG  IHDR>asRGBbKGD pHYs  tIME 4d IDATx}yTsNUUo(  KĘLLnԘq2ɝ8cƉsu2QA'5Fu۩?̩s#]U|.-? ۷o>0ׯR0Uӧ*//gx={"dťK:s^{$Ȝ{)bٵko``m>}jfD"BE( me& ,d2% ?8oڵǩpQ\qB&,Y~j([A!\A˲ 0d2>(? ! (&il$F|V\MUUU|>f͢.I6,{XVpX,B :%4%<} _} (BDQ!$%AazAxb&2%8+ ?1~_BQǓO>[-Kj8NeYB *2f3L*)EQ_CBe,"N&AƇ7o%8k=z?Dl6q*~8N|>X,fjl6b@e*=TeYWP]!C/<̜9sRXX3D/18nG):;;ѡ~ 2Q ,a8Npe˖kО~,$ BiӦIo6.]z&¸SwY:t+GE*RdY&ZNBGOwHӰX,3gQUUb @CA$b_8rK 0ݍJK/4׿z;rH!DaYh%tf J-)y$I̙31c L<&M$I~0 <B O~EQjͮ]Bfs!:[2dS$Á aݺu2e ;-aEEJ$Ir~z ˖-F׿5n կ~70(D(Ҽp+>9s\bFtuuyZ? v]$h-p=h;z#3 x<غu GP/!\QQ1\ޱcn0??斖ﴷ[,l6b~$]wmF60 Q!2nF\ v}>*T0 ̂ n??ٔGtq X,'{F ŷ#d>M&%@"W\n+WĐ7^R))oݺu /^?8ܼ2aUFuQ Iy\.466;V=#DJT*uߊ+/^wW o>?jnnv,k|z=M4#?z 23fPH$0 F`Y >ڊ)SLٳV8pol6jkkQ[[1s %: ڳgԧ~?SL&²,"5abϗxz*}dZ@\|9n ŒAl )p8L^-fzf4!hѦ'NpwΘ1|n8{xq`)wG?CO>`߾}=>1]OVNrFAG>=]dwy'6lؐa4cBgV\9yL*@ <rh6 v;V"IV* Ef&,'X繍7[ؼy3sϭtcǎ8#AXzH!8 9g%*u[A-[e$a{H<Ƶ^諯5k4Aq۶meYeD"X,ib3[YB(b N˲n`w*++wX`'-[( 駟^,˰wb,F9 h4F-2:Mկ~X,'F1tP(`ƍQIӧOtuu|$IRGH8{,z{{<v{em( 7d2X,nYf~?ǎ(iSh 5~s$gl!п,U&gOID[j]`޽.em"0f34Qa` rI.*QA x ü\UU>bϞ=˩(cYPxf۷VP\\b|eJ0YL&jkka000ӧO~%%%q 7rA$̛\U sV՚G@nǛoφ  fx<B! ٳ8s JKKqcŢR)0 J̛7gFEE*H$=Y!f3JJJPQQӉP(N~_7nDqq9mFޅXZMMMX,^YaZDAK]V3 cT*T*ɯGeҚtZHӈby^UNTQUUzx<,h4h4z2۹xt~?jp7 s.;ڽ:qx p Øp(8d_~) p 9PZ0^/heVUqEГٮ%0N%%%ꪫ I~$IVHI>hhh&z2WÅ> zϵJ-d2 ́zZU{f," ȑ#ؿ?Μ9QOذ/ĽP"G?BCCChC& m ,XV^^1Lnz*Ri6.K룁zBV (X,j  jbҥXj(ZZZpQ9shH<몝{3Z#bhiiԩSQ}rO/0k9|curTDҍ4ijjj< bAPITn vf¼y .DCCL&@i{ٜjŸTp&5F#崏!OXx6."2 ĐT*/]&_1}ELÁiӦaٲeG<Pj@R<6n܈yhdif:Ʉ cl*0T-KM*їع_M^<{.Ui8N\~8Ch)i |G)FHN>bE*} &(]Z[[q_$Y/{fp/YYbQc J!}-.mO٬ Pbt"'n4 /~T*g x>x/8믿O="ڜb@k!x,p XVDQ477>jSJ{4K1FXǎD"8x8PPHRDZdwL2b@"Dww7^*PHX,D XbA4;#npXs\HRX,x<8s !(,,Duu d%zbv;hnnF,Cyy9l6Z[[AAaa!:::(& [+ՊI&a`` HYIWZuFU@___n8s 6O (bXx1^1JUQ"#G?ϖ$!H JN6MmeaQUU>jn%%%UC٣ށdKa$- F?gʘ|>L&phNy?8ED]VmďnSJhH eeep8eY =ǂPY,l65gQEi5f3o va|s @%aħD"qjΜ9' F4zHOhT/v4 nGii)Dp8H$>?hNEh4mmmp:=0J$ԑ`lT Di\hd2DfFcEHi吞Fx<|bjhKKKF4n[=<3gΠHӸaZU{!^$ak/0j(X,v?]v @˷("re &2k8W@xDbLKOT:!L?3А|>8"}ƃd ǃp8 ׫V % 7 6z'NX,t: ىQq^ݫb[$ NvE m؈h4 AP[[۴u]#2k- {/IxF'4e{ \ө^g:F"f8͛7l =QZդ<=wq!3@* +=TnG<-#L&nqU 4b=["@(R3^+Ƣ]P m ZM;]Ŭg3, ˲䦛nCm!DhQDŽrx]wd"huh3s0 DQDWW^xx^tMARz9  EEE&vfHJJ#3!bŋۿ!ɖ yLeYΒ@Vam.uVmmm8|0, jkkՁǞŻ߿VAtuuaɘ>}al hԿivH3APn7?o}ѻ !SNM82cܨ(Y µ̾}с2x^adX @XrrDc䎦GvN'Zq8ꫯ~^7cǎsB}8h +**c=׋*v_{"MiJ*(ۋ[nEk2@iA`M088R4 dΜ9/n߾o !{7t9DTdR);˲D$Q{PAw*b׾ L|,>:g`0hYfy饗n%$}YlذᜆeD{{OWp8rOF:FQ yR)$ ~ s=W''4J ܌Zag~eΝ_ $oߎ7\x$nuڿY, P]сP(c޼y8[L$+UG10˶#Bаwꫯ~zΝ!g}?/!$kǦ7T)H2AQQtb`jq7IڎTl1yz$Ijx6].?oӟ5!$SOaӦM8_kDPYYIO=YoT,=١[YrёaE"b̙j_rewՠh;wkGiU(bF|YI͛׿{3QA)8Ft1IBfϞgΝ !۷[oŅXyI,ԏy'ODkk+~֕B&^XV]V2#"RZ;8Q h7$IX,d޼y^y !m۶7o\ P]]}===8qBMS7S$|><$I裏P[[%Kt@?+;v"cM>2P<ǩS(bڵk3!$SO]?j-IaZTWW6 mmm!M& }OVs/^@ юv>c%M$={555jz} RW?瞭?/˸+/D"N Eg9;1o:n(--lFQQU[a<1_2eJFn,~ohMMM&so%Kz)qV^ PZZ 3gΎ@ ժju )uAqq1kJ-6,I&6 fZٌ_ Ðٳgz}.O^'* &MzO lFQ/PH;g5:bFޑL&ϫHN,Css3i\b>CL,ٳgٵkBH'ߎiػw/DQ| S"z{{ۋwgyy9b hf%@/ߎ{̙3v3F#MwnQٳ{n-[pQ)+V@QF+ gA +psoQDYQVVADQqmbDN l8p*++qWjhG& )d(n à3#dW#?ڑk*玎|>̛7cjĘѨ/AA`ZE\k @Bo>,Z%Ka~|ԩ?' I&72'VǏG__.qr\.R.N'mc8`ϋ-Rϝ;~t!^d^x꠽~^/bzzzAN4M/ӺCutQH$ 3"G_좋hhh%K/^v\e&i:q!PK375A'ՊZȲ`0`02>-93b hhhPXf}݆d29nobk 3r%zQPPkfbLpvB*x.}9' ]ږ .<xSSkdҙJ߱pPE$4YS mߌʬai9uB\:/jkk,Y$pv-C_vb12d+F'G0ӓڊ|@,,c,T9 j׵^+HEQnjjYTTlNMF24Z7'0WH&Z?ӌ"-H|h:u 4Ν;olsݗY,l:Qj9~t(2g K Nwիkl0fժȲLK.eĈ`yЮիW,X*WyXvǿ@˲Υk g:q`׮]j2 3sT*q>`Xriۛ[Xre7^ve"ȿ8Bz3d,.{c-[LN<ʾŋ߻b ["뮮X,eYc\QzL&+.1S?a|򲞞GT*Q T>=wG%^nOjllTxM4555- B ].ټ8=!x}h =D RF 3kPH%8ǫn>vqWx[(1QzZ[M<JKKq%Ng`t:O]Rxi7|Wn[tsh]]]yfYF=zikAиEAA$y\˗/W744$*++o? \.tOhl<9ijGٌ`02z~Z|( `{bʕl2L&moo?#W&sX,8Nu-V@PHTj%H֊+-ZUV- wl4E T50 NQ5I$6m}gd͜9(a޽ Xf]'($7x/>-{f4w( ٳgp8T+,ˊ$IzjałW^yE.))MW^yk׮d\իW'Gf200pO{{{"r (ݴiӽ>,|*iXMMMZѻk׮-{9|cǎ ǎS?>|8?<ȧ>%R^ØnbVk-0l2|q͚5ر㜶t.{}Ϟ=6Һ.OX?&IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/itango/resource/serial.png0000666000000000000000000001426314675025471016652 0ustar00rootrootPNG  IHDRsRGBPLTE'!!"!&>&+, ,41Y9/00*<4%";H::6><0Hs:?CHj,HSKfJG;NG6GID XWxogfargS$|-ykor`qnB0}YvwC||q]rTQ{utlxtgtMtvs /xFGxac8<{Ы FRk@pPH@b<B佖, 3QknwUzM/c(ӠiR+֪5G! Ȑ n׈1G> AթYghY'4aQc9xqY4D{͝F!jVnHI $`A`%.^~YKT=C 4՘X%NtP D!ˈN Y߻Vժ@$АbW .82tՔ&$բ?D-^z+s[#NRu Bwe,PCd"A =NKӱ,yAQ{Xŀ# hi9hVKGp(Ԑ=s 6ۡiu* hDщﰼ 4j;;8«!AgIC1((84~B@0C@ǩA2䛐9<y4@bPI1K80;gACxa!+2azP1<4zv@&x^b / 0- ; 'Ȗ7jOrNx$Y/"h`ED74,͖)Iy"'ktP| _%ZtՍey2 qLyŸCx ;"8HDg--,ǒ+ Xwv9ćYO- E'8--; 8@Yw :^M\ S*C!`IqwN~[#GEx7 [H rDculpds!ɇvLC 90+F4 mC\Ы"T#С`CWvTĿOop2O( y H@;mDݟH?FS*l8J.clܽ 2v sanC>s qOy 6 |o J\I@@)J.Ez$PtHASʕ30B=J( G Wfxw`2 Ę H@I쀗DzCpD4z@At|:Vp"MmxqCڟcg&ެPPjOwǧNw |z/J8/H(JQ[Y 0 Hn 3x^?EB !Oʪ*Dq K,C2U?EЍf;6 tH,U_Ujnny6G}~$]d4&`0m%OsN\~իWz gVdvOA2 @;u8ϛqP>Ǐͫ:raGܠlJ0񱏢"fYq'auuu]x7nh %%e'1P]]]yiر3B:#`dM掆3v=χ we^N?~Jʳ#ǭ .j:vႄcP#ݝz/Hw;GǴ۩?XXʔ>*_Є a$[ i O6/\r`PU{}mIJhq;WW_VnȄl, J^G-|>ca;f͟2(5Xz; ׶@ һIw GtyΊ_Zv雚c4V+^]~Б3(% |qwȜ-0g}]+V>\6ALSyB [z3#`` 9(2|u yD6"{ov6eAUVT,,\"M\j18C4S }xOn@j*q6o[w(vak3džyOz瓒 %Z*-XD}щV2u:WVv+9׷9RQd0b~zly|}bÆ{2֭ Dxa,۲]iǑ| #ǥ`mmlZi-}ty'dJæO?g%{/^n˖ߜv`۪qb@r:=#F@;]N;$ΥBCm?s(G" 2?O̗JR򝯿=qrmY i0o@i< \.Y:󩧞շY^z=}Y$- nONK3sR=yr? u3}swcn7) `a=NB V1* R-??cEgכZka .<ٕo.xg$335<,JR[#-,9--҈HiI.,ֲ3! Ȋpyg=;~35LR\Y/),,,DGDgm]b\٥Ņi`n>emF @v_l]X} 0X3O|n㞰9{e~T(5YRrҒ$e}ѰCOvCu3zuҨ`ON?P_\\רbiږES×dKl(++)IJ$hƅ;MÙ۫'aÆTJR㣢kIDD}}('mQbg%+,~CB34guiUn>'UWsYɁBgY(3!.|NYtф%1I߽4cFLLl\W#13N>3 5X]vMV?=]:b^1cv(9&2-33S9kd3<]DBb`oXh]3 ،/|tV=1<8,KKb# IIq&O~zɑSSz! 4\`u ؐ>-~ɓ'1ٛ9&-,LK22%"nϵ"f9 \]]׮ hL-/yzV3"7HDϊJ%̈Wn=rˊ;]kMM._vL~zʒI2%Dǧ"yt_$kvx<{@wHV[Ĥ I#"ccbb"#\!!J1xVCuu{ ;](̇YjьȤ KܡHcLA>ql")22gȁYs6}㭐AJ{qncN|iv?xa^ʁC8qJDtYq׆ZH\/bS yd^,HN@ϣl0|`]:/(asRGBbKGD pHYs  tIME % tEXtCommentCreated with GIMPW IDATxyeUmwyK˵ꥺ[RK%Z$8`1a a#g&dȒ""F-  HVwmYUToeVXBbQQ/߻o,=ȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁȁm/|cu<07?+O<$J)R|?woq]]>/O=&pc" #!9F)N:IEO|mqw 7X>jgO3y-®E!Bc!r-#GpٳO~_9uv9w$<\[*1( !xޣ6Z`e?PJ@JR<BZ)wE1ܹ8}Ϝ;k,Ń(mGxmlaF_ݷBߵ2~khmEt'O8wna;P|}CDWWW+߽sCH)Gw=6C?{7{B.vu3iJQgrG6111'x񓽟k߫ kޡҎoc=#ګ,!&Ǐc|]wu7qg-p3; ,PJ2L{7fx?|6m\iq/.CZ *?>m2}<BgϞ;~ ǺBlo v+!Bُ/@mqnf_ms7q?eZߢTA h@V#MӯOɧiovsB!lv Ohw`5%.B@as;{Ӹu[wC?,^E=0qK%s5&1w_M?{G/wWe,hY\u*(3]}ER0w{g( jZ8T7=vܡbgcf6RE{cPveY{ިft94Ek͵h6 *xQwjd.ނ8 O~ٹ9k,Bկzvi 8{Qv8RҨ7ejjZV:G))d>x4 }Cld7 hwm8-Q8~?"=uwr';W~2 }rdyDE++؛Ώ2'G.YT;&s]ۛk)!x$#r=?~JlLpufg0Q4=WVVtJ) #TGBnTe!B(I r  -rJjKp/RfOARʑ>J "O5 [Uc|%!+SdH 45,':L&א~vllBH \fZJL1S "#ȲkV119I "HC@E֊.9RQ= @K!TQe ΃׉*J25=4λl|+4ZWgG=;+<$"` ,2 5qhO?WpeYJ{H\ޘ=d_EUʂ%իӧ\Ƶי#MS~Acբi }xr6t̩3wWw<8yEE =? ݼÛ_6xÛ&2 ,owz{RF)%NȰA3wfD^Z$9KPLBe pȠDQBosc(S[Y,bB)a {N~u` xphm}6.\G >fbX^]ŘҢ ox[бVlnQIҕK(S2Q,+a/>y+7 Y#@.2U0x;`kc>R*uPYꍓ\y2Bؓ[LNN2739'1Z@Ky$5&vY+"]eWY +5NҊaq~wP*|TR~ qjmX]]&mH /]G(QRb"CÈ7V6EΟ$IWrygXZij ')2_Qo!M "xW "E*O#Xg_!EFwEx70ƌ@#5UPv'kXkiM֙iՉ(6`XYYqDL/DIdmt\G** .(+jX4b戝[xQA(ҸVET*ː/w;j&*?{q*c +d6ńGXZcFSi6zy[[{W?4O$ܼJ!DI(%'!H i I"OG"LRl$qHB(mVF'$RIkY.lzN(/}I>ArErWLb@2J,XȷSEk\^ȕk>y^017=Y\\EJA$H!0QL[T%Ź%|qp;WA"hLx8zd/|\]N?YfyFZ(MZjLJ $bsk͛w߃™QG?w..ҨՑRiMWѴDӈS8 iC'b"mh֚lc9iZ#Ҟ"/yhHRc-!c)8YF' !+=|'gx)z}Z,-Q P0j6ڌާ+ҔDCtYȗ>%/pΓLf8~Yq%F@ !e AF ãSKFUC=AH8UW] 6ksuiZ{C @͉&k+EYO7^WMY[yn™嵧PR@h DQ9zyN?g.MbbrDZ+\[z ަiG1qcmFGʰ @i)ADƕ2I6e}D`m\T r-V' tI"MMЂ4mR'8z-N?}fB{ _!mn)y&iMQH!8Qef-]IB Keqw%ѣ@8;xRRDBR:Nbɑ) Dz2aTRk ޣsRJ.^G="׮.-c94y :YiJa7x\ ~Z#C'X"r %?+W0_DhĐ){/zEޠ^squ#Ο]i>=1R/ô^wJ3pًpj`TbsC()|)}1!PZeWqD畫`Y6[k#w)&;HW!z! RJDnݮ"uON8wNݦ2r67H8vͩ^7TrLUV((rG~& iq=wb'8.]̩S'Ffej5 Y^}`q23u;1B'THg6J82lNpsDiuX0&V(kI?MZCVNYFQ88tO>$zVAN.!M4bBnw8s6,+R"UD!b7oCe!u!ʾf_*xY*QEh-(+ugfgɋem7t:#Kz Z-n鵙5IзVNq'j5Yq N3O055\48/L[஻^~ݿd=L$ Y6 ISR]fM}Na5QuDp}c ~<ωh@a`@$ VVVn' y:++Q1ȻH[d TRJ87iYUN2bwJ"}`8aF'ApqsuzӧlWreNf=IiPdg00S>K4'2PX×LAF/SǏQ7iN4J)DLbVQDYzT(SEx(Sd)ihSf'd-^w x@IA,&Tե!8V QQaK]Z0m۬|[^r7#p<}2#GS-jn_N I:҂xBur/Ԕ pԩQ^|2J5HMܗtigCA'xY[۠-A 5Fm zQӅ`k#keӨ+XC˨hـ"(SkL W7h,IfgguR\FZ[n6 e\fl0VWp/G%^ [=xUlԣpLPl'u!tgRY!7n.3gHtTBq4QR玻ν;(8v eifNwsvZeϹZ l1 JjH_FĵZ~T#sfgB*S3-v"+,3??OElmm'-IӔ LdhDIGu: "M>ISA BQPH7rue?IzA3p$An?8:xԣ_0? WWdyGJc_ڵ+(х'2/}2d}s^+ϩg@@,P +4z_Ыz ss"285?({'fɝrMRg|?xᇩOqduz㼧뱺Lg@#uBnkoU@$٠|@xO9Q6GHTFsD<&z9[HQrB;G5Ia{{(iP@(i6L6" HtzKI٩)+ȲN_t3sV%tD;੧.WBW.P]N=}+03=Qn }M(4SC rkQFñ-?̰ D f$| MV@JJ(c\›VN:ο>X\Il'֖tJ$A`ssdZ?s;|7 lPH(Qk)ڽ-Nï8R@G]V74LKH4PbkyAߗ|sZ2yS#E(;x MjH{=?y]dbI `d@4zZGhRYLJD MQBќh2ٚШ(*x'9s~?q7tzyy9lllM|tӨm̥KrHPe:#.'2jZ40H(-,~%KQC\NYN$j(BJVPI/ gdvzz*kiBT܇W>5 Ow/=|So??{^TGa9|h)z["xgYtBprn|y?Vaú2E[]ѣG)VMjD1s<5BmtՕSf{F(2IA!^qnZ#5Wh#M~-~z} fPH+Ep2шPh=U6C%@ z$&I7Wnpv433CVR. e U92\N&[[eLƵ1(ɤED5(V-fkis^QM(2GN R + 0lt!"Z5 &'kDQ̣~C 㳇0JWaf6W})X*S?⣯sɹ ǎganvpCJiBPrHqaC+O.!(:EILMM90j54~>Օ/Xq{9G۝K'ٜX}77A'llCcr QNgYu&Ͳ0B, 0 K?[8?N<r-0AF8$ W~k _'?C6}h=~"{_p!#Q3`+N/[POlabYz(,Qufgg^:uzLX/\ѣGiZ%;Zz.Yo-Q 1k5t#iL}0:thN49vd%yl2(bvv͍XXB(YEs&LNXY^)AyeۼњHH&''iM9u,S%@ц7~}Mm5-?}}H|3~^+.C)c"!b-qtYi$L"`21Ct6+"1111NˡI211 `m,W\(TcDkKyYhMFQ`B^y$7qbM- RyGq)*u '^/Q!tBor1eYv8oivΆ<OA-nnu0escs4%dXZ˗Bk ZFđ.3'$JS4 ffg|҈е+7i KaK*{qr$/A)gQ ;I5, gmx%/_}-Hu!]}˷_yw~Q|GXP Җ>5]hfGD{f0!U<ϩ;땱B\5"Ո꣓ECJyDa1REW^WR?kw~4&,Ε .}(EւPDVk$ΏM=z/x_k#6]>͛>SB;~WA-zZ ökϩ'lnn<`4kzPױE"ܱEf=%M^!TPՒƊ$l[2nM&jRGH)bK,i-R8:ȍDؓV+ȻwoW?|u%`p^{A eUDX竔P2hFBL|, Z3;bb9Qj.Umx,^I5rgKx5c0 z-)RRNR!Bɖ)pqnpB09sL o{'oSqy{??yҊtRU#>"S[kRFC@g*\Uqy=WdeKb;iZbÇѺ"j333Kd BHY^hm@WnCS%:HdL]B"4&A%]_umWo·!LZk~󦨈Jk0U@cwѪDo}no333CC,pfjWnr)h4t;]NvRJ7Dr (w9QT ӭr!CQ&%ԉcLw7!'!0??7b :QB+E$UKcD3>eɈz’ x9vtl_ :k[(??rx'IE٧/4i!p y/t8P3"(-F)/ D"Pҫ8I.ؔ];-NEl[lTE9tw(K--Fj"!$PCHy0"h4$MDD7@"J*E_K@ j KiKc{;9g|bbBBZ+{ڗMvg̞3ĩ:bZ E[yL,5tmphT&LB#:+5.mo PfB ,ˆa0׊7躆 lzjxj ҇Xy*KūY9{z䛯yww W)z\=cԀACsm:ePQx%ݶkiz*r<q LUxi= m;܎f ϿHRCceX(%̿Nhjz/_ Le;1ij~#J)r'`ӓ16>JG&=2+e)hTӐR0ŚVawqדlŊ1?tt{OUu8̅˱*WDAEE>nnQzLEI)#/8 .31?FP A#XvMsg^o:o 3dd]]]Ys(DtSقh2ta^Y)!hظkϬ*5M7o>qxdLp-<`xdj8uXUU%R()ZTV&`.<ҁhILU#B lghLFc4Y>o.@(6F>H,] 3[?k-e.+TUbLAޱA F xw{m-Ӑez#̂J4_YCg3ku 9k[7mhmo^<nͦR9Z$I$I$I$I$I$I$I$I$I$I$I$ݭeCIENDB`././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1727277889.389886 itango-0.2.0/itango.egg-info/0000755000000000000000000000000014675025501014510 5ustar00rootroot././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277889.0 itango-0.2.0/itango.egg-info/PKG-INFO0000644000000000000000000002655014675025501015615 0ustar00rootrootMetadata-Version: 2.1 Name: itango Version: 0.2.0 Summary: An interactive Tango client Author: Tiago Coutinho Maintainer: Benjamin Bertrand License: GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. 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 that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. Project-URL: Homepage, https://www.tango-controls.org/ Project-URL: Repository, https://gitlab.com/tango-controls/itango Project-URL: Documentation, https://itango.readthedocs.io Keywords: pytango,ipython Classifier: Framework :: IPython Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+) Classifier: Programming Language :: Python :: 3 Classifier: Topic :: System :: Shells Requires-Python: >=3.8 Description-Content-Type: text/x-rst License-File: LICENSE Requires-Dist: pytango>=9.2.0 Requires-Dist: ipython>=4.0 Requires-Dist: packaging Provides-Extra: qt Requires-Dist: qtconsole; extra == "qt" ITango ====== An interactive Tango client. Description ----------- ITango_ is a PyTango_ CLI based on IPython_. It is designed to be used as an IPython profile. It is available since PyTango 7.1.2 and has been moved to a separate project since PyTango 9.2.0. Requirements ------------ ITango is compatible with python >= 3.8. It requires: - PyTango_ >= 9.2 - IPython_ >= 4.0 See previous versions for older compatibility. Install ------- ITango is available on PyPI_:: $ pip install itango # latest version $ pip install itango[qt] # to install qtconsole Usage ----- ITango can be started using the ``itango`` script:: $ itango # Or itango3 if using python 3 or the ``tango`` profile:: $ ipython --profile=tango Features -------- ITango works like a normal python console, but it provides a nice set of features from IPython: - proper (bash-like) command completion - automatic expansion of python variables, functions, types - command history (with up/down arrow keys, %hist command) - help system ( object? syntax, help(object)) - persistently store your favorite variables - color modes For a complete list checkout the `IPython web page`_. It also adds set of PyTango_ specific features: - automatic import of Tango objects - device and attribute name completion - list tango devices, classes, servers - customized tango error message - database utilities Check out the documentation_ for more informations. .. _IPython: http://ipython.org/ .. _ITango: http://pypi.python.org/pypi/itango/ .. _itango-0.0.1: https://pypi.python.org/pypi/itango/0.0.1 .. _PyTango: https://gitlab.com/tango-controls/pytango .. _documentation: https://itango.readthedocs.io/ .. _PyPI: ITango_ .. _IPython web page: IPython_ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277889.0 itango-0.2.0/itango.egg-info/SOURCES.txt0000644000000000000000000000160114675025501016372 0ustar00rootroot.gitignore .gitlab-ci.yml .readthedocs.yml LICENSE README.rst pyproject.toml doc/conf.py doc/index.rst doc/_images/itango.ico doc/_images/itango.png doc/_images/itango00.png doc/_images/itango01.png doc/_images/itango02.png doc/_images/itango03.png doc/_images/itango04.png doc/_images/itango05.png doc/_images/itango06.png doc/sphinxext/ipython_console_highlighting.py doc/sphinxext/tango_console_highlighting.py itango/__init__.py itango/__main__.py itango/_version.py itango/common.py itango/eventlogger.py itango/install.py itango/itango.py itango.egg-info/PKG-INFO itango.egg-info/SOURCES.txt itango.egg-info/dependency_links.txt itango.egg-info/entry_points.txt itango.egg-info/requires.txt itango.egg-info/top_level.txt itango/resource/ITangoConsole.svg itango/resource/database.png itango/resource/device.png itango/resource/motor.png itango/resource/serial.png itango/resource/starter.png././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277889.0 itango-0.2.0/itango.egg-info/dependency_links.txt0000644000000000000000000000000114675025501020556 0ustar00rootroot ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277889.0 itango-0.2.0/itango.egg-info/entry_points.txt0000644000000000000000000000017714675025501020013 0ustar00rootroot[console_scripts] itango = itango:run itango3 = itango:run [gui_scripts] itango-qt = itango:run_qt itango3-qt = itango:run_qt ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277889.0 itango-0.2.0/itango.egg-info/requires.txt0000644000000000000000000000006614675025501017112 0ustar00rootrootpytango>=9.2.0 ipython>=4.0 packaging [qt] qtconsole ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277889.0 itango-0.2.0/itango.egg-info/top_level.txt0000644000000000000000000000000714675025501017237 0ustar00rootrootitango ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1727277881.0 itango-0.2.0/pyproject.toml0000666000000000000000000000231214675025471014461 0ustar00rootroot[build-system] requires = ["setuptools>=45", "wheel", "setuptools_scm>=6.2"] build-backend = "setuptools.build_meta" [tool.setuptools_scm] write_to = "itango/_version.py" [project] name = "itango" description = "An interactive Tango client" dynamic = ["version"] authors = [{ name = "Tiago Coutinho" }] maintainers = [{ name = "Benjamin Bertrand" }] requires-python = ">=3.8" keywords = ["pytango", "ipython"] readme = "README.rst" license = { file = "LICENSE" } dependencies = ["pytango>=9.2.0", "ipython>=4.0", "packaging"] classifiers = [ "Framework :: IPython", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Programming Language :: Python :: 3", "Topic :: System :: Shells", ] [project.optional-dependencies] qt = ["qtconsole"] [tool.setuptools] packages = ["itango"] [project.urls] Homepage = "https://www.tango-controls.org/" Repository = "https://gitlab.com/tango-controls/itango" Documentation = "https://itango.readthedocs.io" [project.scripts] itango = "itango:run" itango3 = "itango:run" [project.gui-scripts] itango-qt = "itango:run_qt" itango3-qt = "itango:run_qt" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1727277889.3908858 itango-0.2.0/setup.cfg0000644000000000000000000000004614675025501013356 0ustar00rootroot[egg_info] tag_build = tag_date = 0