pax_global_header00006660000000000000000000000064150100641520014504gustar00rootroot0000000000000052 comment=e9fdaae2ec49fd900e257638e42489f00ec7b0e8 ticketbooth-1.2.0/000077500000000000000000000000001501006415200140235ustar00rootroot00000000000000ticketbooth-1.2.0/.github/000077500000000000000000000000001501006415200153635ustar00rootroot00000000000000ticketbooth-1.2.0/.github/ISSUE_TEMPLATE/000077500000000000000000000000001501006415200175465ustar00rootroot00000000000000ticketbooth-1.2.0/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000015761501006415200222510ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve title: '' labels: '' assignees: '' --- **Describe the issue** A clear and concise description of what the problem is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Operating system (please complete the following information):** - Distro: - Version: - Desktop Environment: - Xorg/Wayland: **Additional context** - [ ] I am aware that this application uses content from third parties and I am not reporting issues about their data (wrong or missing data and/or images). If the latter is the case, please report directly to them. Add any other context about the problem here. ticketbooth-1.2.0/.github/workflows/000077500000000000000000000000001501006415200174205ustar00rootroot00000000000000ticketbooth-1.2.0/.github/workflows/build-x86.yaml000066400000000000000000000010001501006415200220150ustar00rootroot00000000000000on: push: branches: [main] pull_request: name: Build jobs: flatpak: name: "Build Flatpak" runs-on: ubuntu-latest container: image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48 options: --privileged steps: - uses: actions/checkout@v4 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: ticketbooth-devel.flatpak manifest-path: me.iepure.Ticketbooth.Devel.json cache-key: flatpak-builder-${{ github.sha }} ticketbooth-1.2.0/.gitignore000066400000000000000000000005511501006415200160140ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later # IDE folders .flatpak/ .flatpak-builder/ .vscode/ # Build direcctories builddir/ _build/ # Configs .pre-commit-config.yaml .mypy_cache/ # Env files .env # Flatpak bundles me.iepure.Ticketbooth.flatpak me.iepure.Ticketbooth.Devel.flatpak /subprojects/blueprint-compiler ticketbooth-1.2.0/CONTRIBUTING.md000066400000000000000000000031651501006415200162610ustar00rootroot00000000000000# Contributing Ticket Booth is a Linux app built with Python using the GTK4 toolkit and libadwaita. The only officially supported packaging format is Flatpak. ## Code When contributing to the source code, use the same style and conventions present in the files already in the repo. \ All contributions are and will always be welcome.\ If you have an idea, feel free to create an issue, and let's discuss it. You can also fork the repo, make your changes, and submit a pull request to change the code yourself. ## Translations This project is translated via [Weblate](https://hosted.weblate.org/engage/ticket-booth/) (preferred). Alternatively, you can translate manually by doing the following: 1. Clone the repository. 2. If it isn't already there, add your language to `/po/LINGUAS`. 3. Create a new translation from the `/po/ticketbooth.pot` file with a translation editor such as Poedit. 4. Save the file as `[YOUR LANGUAGE CODE].po` to `/po/`. 5. Create a pull request with your translations. ## Building ### Gnome Builder The quickest and easiest way 1. Install GNOME Builder. 2. Click "Clone Repository" with https://github.com/aleiepure/ticketbooth.git as the URL. 3. Click on the build button (hammer) at the top. ### Flatpak builder and other IDEs ```shell git clone https://github.com/aleiepure/ticketbooth flatpak-builder --repo=/path/to/repo/dir --force-clean --user /path/to/build/dir me.iepure.Ticketbooth.Devel.json flatpak remote-add --user ticketbooth ticketbooth --no-gpg-verify flatpak install --user ticketbooth me.iepure.Ticketbooth.Devel ``` Then run with ```shell flatpak run --user me.iepure.Ticketbooth.Devel ``` ticketbooth-1.2.0/LICENSES/000077500000000000000000000000001501006415200152305ustar00rootroot00000000000000ticketbooth-1.2.0/LICENSES/CC0-1.0.txt000066400000000000000000000156101501006415200166350ustar00rootroot00000000000000Creative Commons Legal Code CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. ticketbooth-1.2.0/LICENSES/GPL-3.0-or-later.txt000066400000000000000000001035621501006415200204430ustar00rootroot00000000000000GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright © 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. “This License” refers to version 3 of the GNU General Public License. “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. A “covered work” means either the unmodified Program or a work based on the Program. To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ticketbooth-1.2.0/LICENSES/LGPL-3.0-only.txt000066400000000000000000001221621501006415200200100ustar00rootroot00000000000000GNU 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. GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright © 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. “This License” refers to version 3 of the GNU General Public License. “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. A “covered work” means either the unmodified Program or a work based on the Program. To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ticketbooth-1.2.0/README.md000066400000000000000000000052501501006415200153040ustar00rootroot00000000000000

Ticket Booth Icon
Ticket Booth

Keep track of your favorite shows

## Features Ticket Booth allows you to build your watchlist of movies and TV Shows, keep track of watched titles, and find information about the latest releases. Ticket Booth does not allow you to watch or download content. This app uses the TMDB API but is not endorsed or certified by TMDB. ## Install Download on Flathub
Builds from the main branch are available as artifacts on the [Actions page](https://github.com/aleiepure/ticketbooth/actions).\ To build from source see [Building](./CONTRIBUTING.md#building). ## Contribute This project is translated via [Weblate](https://hosted.weblate.org/engage/ticket-booth/). \ Translation status See [Contributing](./CONTRIBUTING.md) to learn more. ## License Copyright (C) 2023-2025 Alessandro Iepure\ This application comes with absolutely no warranty. See the GNU General Public License, version 3 or later for details. A [copy of the license](./LICENSES/GPL-3.0-or-later.txt) can be found in the [LICENSES/](./LICENSES/) folder. Most symbolic icons are copyright of the GNOME Project.\ The libraries used are the copyright of the respective copyright holders. ticketbooth-1.2.0/data/000077500000000000000000000000001501006415200147345ustar00rootroot00000000000000ticketbooth-1.2.0/data/appstream/000077500000000000000000000000001501006415200167305ustar00rootroot00000000000000ticketbooth-1.2.0/data/appstream/new1.png000066400000000000000000022440321501006415200203170ustar00rootroot00000000000000PNG  IHDRxsBIT|dtEXtSoftwaregnome-screenshot>.tEXtCreation TimeSun 11 May 2025 10:55:42 AM CEST9z IDATxw}gv^ #M&KQX~0jD"*+$AH^&ٽݽݻ|ݩΖ{ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""z$M1QtC 19C"""""""ǐ`U Q`0$Z1""""""""J} +<"""""""Ə`^ex,@_M5%M6l!XS}DDDDDDDD5KDDDDDDDD50buxy *j5X#5Am]XQ뾪u'N 1u+j'cnodMHDDDDDDDDUWQ_cs^uboxJVS%q1C=/DDDDDDDDKs_ teQRvLȗ~@dļx*r\WǓa" vŮJvz Q4 džy_Э`xw:'ǻ/"@QA#uEr:b.23`,QtMI/˖-ֱcAQ)"N7`""""""""JJqͥ6o:cxN00^  /QXS:Q-֒We+꒛^._9jԨ~.UJs%"""""""z&صoWO6m? TD$7BpkW&B'^Kd'`0* 7l0CRڲe˸Ν;O0 .A3-:S-J+d>"wOVV|~DDDDDDDDbJJ4o Љi9xHuo X!`mL X&]OF\`8p^5U)w%#""") sWE8v$ai))0J-7vT14Cw7@""ڣ?%ǒ|>y;2ɉeIɫdiI9:pe2HbZPFƚ5kg`""`6l۩ MZd+AL'!a&222@DDDi!++5k֭֬ jz݃9q2&DTj\emu.Ƕ{n>cƌYf,`YVuRe"Dݧr:eYiѷ^|>rrr`tqR:͜9s_Dx 0b&I%8UBh xbqF]o|c~~k95Y@Z+hB?=ʵrn~BRJ!5f*ݻ6m ?'uc 7(H#}XA1"l0-˚5ZVy5iZkض{AkQZyɆi P8P}A Ð Ӛ@~~s$""!! B@;Ψc1g^MZYXF3v8u@.^dDDD{8q @v퐟>!TB!?9ڵk)ZuK48Ѕ ""jFŋp,vPT3NKft*JK4 "^@3O]tP &""j JKPʁm;.VЦMlL֚al, `݂(-9@ ˲8wY@J0a5ޗ }΋\d7TeTI0¿mvv1Tv""&%¬e| e|ٳB(^;A`  (8bP* 222]0˅"/+" bC=&EAC\f,Qcɉbj6RPJ#''AE\{yJ'm7tjMii)ٛ0'`Ϟ(--~\(^C2D<.Zi^,n]^08c8hjSJo_>_*t, τRR623nB}$""j슋KPTTT͓EEE(..־#rh!נ]4:L$5^J5-0Uo$>} D>qڲMy_݅@wu:%PR|mL^/gN^2sVQy nc<81xI81~رFDD\Yuɓ_ĴiKθ+jmن| ,xmjon’%KQRRͮ]3k׮. Q8jop&H|4;D/PlbۘϤ-XcƌEqqqxZaa!}w&>t6ƍk2QuͺO5Ae  ~|W^̨Q` s5fX#rss1|jmU冀ޅ୷㢋.ēONĂ Ѿ*]ڴ/Ū oopc^ID.mcŊ:uVZ ˲p!1|83k<8ʔ)/c֬`p-7h[DDDϟ[eٲ]yyyU]1og+УĒe%&!+FMl}p8x xgcƌlHDDUμyKzӪ,駳oڴ9օ?\p:Gj.zGVo੧'BAAƏ_fw?ݻֽС',YZ[W_-|p_ѣ`%0 Z† 1qxWk| ~6Tgx[DD4_+^{]CA9SA@,+UjU*jSi_ Su׽h۶ \tѥذa#y!t҉e^zUl޼0t艸ګ Xr~,[mK.qU =k&=S2.Y4<> 7\#h͚gx|p}lٲpC@wdA +++w3 ^w^L".\ ˲йs'WI#G-[bүf8ܳ?^ x)/cժG/  سg/^xE,ZEEEhݺgq:FM'Q㡵Ƹqt Za=eU|Ŋ+qwᡇcƌС!IlZ!`RJzC4lR5={އ'ݻwk ]65 *;h*ׯ/_O?uC 6bÆ^XstTX\\lيF׮]hby]s~>}`E~8ᐲVy=VDD8<#;;=0:蠆.Rrpm <#(,Y+e4h|҇|2 ,*h_< 3fZY? F g۶mwq1q?KD]BYfxǑw ;\roO<̙wߝm \r #? -53)S^=֭[#Q̬ |M6ڴi@۶&WٶPoRCi #&sdD r/H>y qO܀z-QA"0Y0p`zixU ;;0li),][R{8- wb}[o'< Æ6mڌN:ûqq.*|0 #\&''{,Z%%%Xj5P0 \zobܸ1ryhѢ֭[{;5k֭\ .ݠv׫W QQ3gnԶBk+bhѢFLjRϵ^/*+lzake_1f&>բM)I5TKJWH)>dΝn+:7`/!9ݠ$".[j1|0w<|ͷX|233qIC1uU*@ff&N=9ظ=3=bDb#Ƨ~CC0eÏx,_o9o9pgTb!?,Y=mh ~x%%!g@Ϟǣg1ry˰cǏزek+qK.8jOlkX%m7k pMB߾`"]}?o7XCDD)˲,^=nfLv܉+.gAE$)E-ك; [l _ppń *<&eD@uKUu:ZRk?̝;W^y N>yp}Q˖Zbegg㣏>E:tH</..̚"ҺuZn 8, p"pXm۶AQݻz[~؆,l߾o=m3ݠ)5`~.Vz^ǿ5^x5kalffF8DmG}=dggW] 8cp`ϞX~|>JKKaժո1iғ .(=ҥ3֯߀?&/gy.^J1ۢp8a8L0:[رhT-c2Tt$2^~Ư7vFV-1h@yz0iғ(((h"QjwI!LXVׯG.q0aƎotTQ^} R-jѣopkyO=8nX{O71$"zW +h޼9 w,<3x≉7+,] ? .p<B`3 L䢋.D^^^{m*~~i喛L2?$.\Q8찎o/vO<s| x]p/Z?͛QRRС' / >x)Xx 6oނ:õ6*[xxWrj8=kBʏ=0&O~ ,Ć QP ]taDD1q_n&I(URi` ?$.7-&mXC]/QV~"f02bzm g\rMdݻ7p֭[nݺ$BDDV5O?۶aY6wHw I' Ϫ4Lv٦n5L 0­ipo*ߞ={qŗ";;3fYSrx█"B@ؿ?@n3##yyyUZĹux*6t?2/r>"E܋}ضc'UCRZkVCv ˲0hPlٲ³s IDATUYja֬ٸkѾImvtDDDT]P);;@-ZV%;j"""vt (1""""" @DDDDDDDDDu! QcHDDDDDDDD9DDDDDDDDDi! QcHDDDDDDDD9DDDDDDDDDi! QcHDDDDDDDD9DDDDDDDDDi! QcHDDDDDDDD9DDDDDDDDDil4=0ycχ9s>K^1`„qu^Φ`֬ٸEMhժe)o3-Z~|QGbLDDDDDDD4% QcK@u+r Z&"""""""-C@""""""""4 v'+0yX|9,F1bp\x0 88㬨œO_883PZZO ?~IxQ<9uԑ5>5?Xr%v! p1GcĈӧwT;m[6ŋRa9<0gΗػw/Z.С'~qZcѢxݙXf- NI'; txXr5ХKg\{8p@Re&""""""" SR /|+lO_~=x),\>:RJ>}z^nժZC5Q ,[]Tr媨͛7Ga;ߔ+m۰m6|'83p]c`{g}^n޺unzt/7sήp[Ÿ;yw`i>֭['`0o]o]SĄ н9eKxEM[j5n6^R c{H_}5ӧ?8a[eߕRXa{>LLţm70n̞ { #m߾>x45FS q7c۶Q?r`zMCzػwбᮿ}wf~+W ߏ~݊7$j_ ,X5o=V\Ѳe˨yӧW\q.ym۶t,Y4jL :{ j y'`YVm /={D,Z8j!Co~w 5k~c5xrh֬eYرcGe""""""""/"8t;>7ou݀ݻw_%%%B6mЩaظqSxp-[Vnwƶmо}{ZX^ugc=ؽ{7 0~e;t8cƌ ?ذa9\sUE^pԨ&jӧ8?9&Oڷ?駳q=*…p \3G}4֯_z?TŠ0x[oMZԨDu=_ˮ /-[qrr_׮'"//Zk< 54)@J[n>б8s/D-{o0`@Tzjϻgh߾=V\5#E^zWq/**²eM?pJwӦMؼyKԴ .OÌ MhݺuTX_Gz)mo_zw2_xQ;w}`޼-ZC퀥K.r/Tӟ}%uLCWnCi_n9.;p`LF5ke~# Y˗gᅬٳ ~-6n܈;jX;vXnZ3184IPx9rTغu+J~wܱ9In1LR5ǁR*`s-{o[mU2EM|,|[.'I yRظq#tRn]vc=QӲk<>zkbEYK;GuTڵn:𴼼\}t23f)S^ڗaѣ;u6mZgQc[=""`¹:~:t85ݲ,{T7l$"""""""m taM?Ä ʵ|Ak5cCkL W^kׅ8#`&lۆmYQׯoTgx7j~߾}@^^kkwPi~ vŗzl֭[Go>57tPWttXRjժܴKƠAÏ-DDDDDDDD !~_V*gР¾s 7܌sĆ 1~9r24p`>tvwYYY8裐u?8jn߾- |w+sqq!vXPc۶}'ظqo߁of͎jX;wB\|7kq߉Gy Zx0=/p7a&N|K0I8s0};Qӗ.:hN>݆kCAYh[ݻL}y2ZFAIIiSNh֬͛~rD]7?EixhӦ F<=Dx_~^z닢i~~>䑩矋*xf⧟~ ' B0g}5Ȋ'4p=жmSaxڵpAݱm6l۶JDDDDDDDTSl XM8cNΝ0v:+Ӏ½]û jZ޽/[~+p#1a£GGkYf͚Yf FQ,Y\w[o3|?jG{-_G?<ԤFMRJt 嶹~,\۶m2<QCcX>O<=줖64%8$Gt;Gukвe˸B2]yʊ; GСC*ܖw܎aNtU!c=Op9!.rߩ"z_{qV^"""""""`w*wĬYp"ܹ<w64yd:/O޽vEBRo߾5kvԺBn_~Sh޼u놫ݻWlu S<_|K,ݻ!@~~~r?A,\3gk֬AaNH)Ѿׯ/F<\ͣS\h~RP|h;JBmW"k @0|Ye؁b@YvEm= Bۂ&kÄ UZ X0  3  @A8ʂ6a[A ZB ihwP>7Gi!!? ЀV J[P !BGx-+C/EGM)iRB;6leC+FH)Ѻu+٣ svۼb  /+ vvl((C0 8$PRA$Cw9+^ hHG~ 3 rˆ.A @%|>NIV> Haq,ؖroZP@+m0ACޗ- %0!H@ 0 }(nPa{m#g4LťP %І \phˁ'a0a(J0 lGJ~J3 ¶-heC !! SRBX- @@R+аGYP"Ji> L@֭p1_s8 ɨX{CR:o^ʁRAheCkZZ/wL }%~Z8ÈBWe.vkIuݬbm"Y D+T A}> kQQmD䑈yJzZԼ8ZCK[#eKljތpB!Lam{v\;.D.ڵE)a S(-fgc޽0},@vf3lS ?Ai MaBk7 "Tw6,˂Z9cC6cAko0-k'}0M XPJ~(!2ERg!dk!Z)@kHARq߻B `҄Ҁ!5$~) pP0  CC㧽E@I!h&L!ѳcػg, K8%A,B!aJ}!a) KfYҏнkG07~}0tܱDTI]'*9MFLzo7coA>Ou'1RBH x2/B@H 0/\i"hpGk7|ЖUV5%z6 L2s8%v,LP,+r˨5wlᅀbh!R6L3 ilHN n@&ʾ[)+>O0! Hi Gض ;½U*QqtCļ1m5*4.cN0 s6ySʅ6of p) hGB[ B+(CҀ~_&rGkHp$e(~@') v4p m7RІahR?lt(2- :@*UB ,ˁv8Tw:{k C@7ٓqr !0%`(/W€!}ZBCi`PA[ԀcTB(HÀ#4i”:VRB ~EZ 4ء!$r:zIa0˔(--q+Pڽ moe aЀTUҶ R UZ_C@[ W_K00HRR:*IZ;b(; i~ CkƮU "YN Em:n(,GI e);n2w0Q0B@0̬F[=<ox;R~./9T 6~{0$A eE~synw~RFB@J4nj ~0a T1ځe if@Jļ<8P68pl7\eB=J8|;Y\ 0>~k( =4|Fv, ×}.zOnw[wʽ^P.~(L~&]j %GQQ !c(mC-`l8;:ypv)d^~ql\[eO}q1-:"@E1O*Y\M/NyoDT:>n]Krw4Lwޫ+FѭHB$:{[!m-_"DEmAe֏n@D:%en(Ls#/ cO7-vZ{G^k id[Lw:^FRׇ)C.X-%PB@y&i—#38 Ѐ '`CY^`.jqBFig7/熈pTeeIhiCIpa0t ȐY*Ob>u i0}0&`׺ :}oh)@TB ?$}+tn*^AHl Ä0MS=s8 r?߆ip4?GZC[H; B? ߄CP*LRQh &LBnmQi4 } ra vܲzBqtx۟Bs/ŋkOJ4)%L`H)KJGSZRX{oo2OS($ M05>_eepU1VRMt:bR/u F {7p=7|s+0BNU@%Zm!lV~bA([!;+ >CB L v8 3 ?̌,_& }wqw2p{GH#"&{bn«W ia2 }~s~f #ýo! 0cT=S@o,!#NWe7RB{N IDAT4ǁmYAcA"t[ដꘆ[N(sO‡_d{Y^^}NJHiBAbWQ TY2iB(2My9Z :8ng7U R0#=` 1 9}^}x5}ꩶ[FN0ց}=I>$qYNB%ek!7!MDTt\lvV/sdEܺ e8̘>h=Ɩ|`Y5D+Dڶ&2G=S&Mnw~Hpstx!f(X +HU&3nf_ڈ}?ƱP2œCIFs+v@D쉘{A}.W >< LhX 0!a@nWj_2Äe]TJ  )$PnwWa[AKnKP cCi̬LuӅZ\CJH!Nhoan2Ex!ϝ5`aD,(dHh  ܅>@fI ÐnYΜ50:έF}J)lBhddf:iL,a} & ҄v4 \J"q[{H0 )m %L rK8ۅX+@z]w LdCJ!%[ vĸ4 8N սVrc%a6>=0pB~J`"eEcru.'@c^r-"9;Y`E' Ӆp{Kl"O/GRVR+K[څQz'c[{ޱY6ĕ[/^IJm'8n M&^]{cSV+; zWizg0qh: Lإ Nv),dž#L-5^CVF&|)<7{g=o 1U@MCJ7C-74}ɢ#9Jq@) ~ VPQzȽ˒}{a4q=&fVФĿ? 2~'~⿝0f4o-yd|6Sa  ~R'Qfى)ѴsVee1qCQ˚]mTaqXsCpXѳu1RB Rj8)0E kZ6*Kq#p9Wob'81w1ux@ !T@&zƏ?W?-|c?şHo3Qd*Yr#4^V}KSJeehUku/$; Q4L]bpp}! %w"EAk5+R&b#`zz0)Yݟ/6 szCQT!3 6-(g @rrO p= )&3+oTH =8{u>,w3̫mg/1a@DŽ˷CUv9u Z&pX'4qΟ8rM\G{ AR<%n:2ξT?16Ds$PJמ^3,ˊ6&5џfB%n\_=n;!HH=9ei77u6Bdžp.ݢ GՄյK $  ^<`C [ZsPwdQ$+WpoZ5\ys5x .Bj+4kuW-NghaA("ZAӀYOj*Ϗժ' ׯ_C>WO1^{Mi${¶=oZ{C$47mLn<,~^N:dQYa TV@SvOAۑ*X5 `I{u:o?k~?4h%@$m*X1RHΒTKe oPeRq*팃}e2 qf+#(Hq6i |Aڭ1EzRYZ ͊vYnۯy#,V):k.PYq:3vGR@w}ψ /\՜јKcfcìC K 49lHB}y`Je㎋!zECFp8s`}S͵O{}grY1GpR]dFD4w`KDjOeʚH4q_.AM8t4\n>4'늓|²,)93Č9wv}Ne.~7(0*/Yک2NH%6-16@ M]$ǖgҴP-Uuad 1 )T Ǵw-idӍa bX+\z %ƄPBjh4=Rӎ`\>!T8o:1y-#2U`cmAvJ/_KsF‚Yzf:zSU "ԳdH_}{m?WO1~%&?霪#2#!U`´0ZҤX5"h߰0h'B3єͶ-aJ2*%tKQ~?_?^b+줃ӌt$RTA{ŖF"iȫXJAIjx|uzRZ[rQ_"Nɫeg瞈_ǢYA]aQP(Q,HaUkI} 0 3#$>IZQФh*XT^bEւb :jtPz|_bZ,F'7DY"^X ;}t]e]Rl $Qpi5I4MJXBnꅫXDuU ֬T=Rs@ΧXYmnp=KQnQ,ޠ3d@hJ*0RCʟ3ozq |R V{q-~?;@!?  #D fai/}'{UNNl΢j}ˤڛ|G'{qgƵkɣ| ԹXH3 &N'֐ư5ajeݧEl: ")F:BQtښ&D*Ge3Dt܇ !l"EmX֜~)C=/ @BιnC&>[Zt朷dga,Ra[ Hl?/w\;>Ext] U/_,1wx~%ű'՗EbWC*-JҼPZV+8RỚ#48O&!1ZuXoDR!'1 H+H.*!S-H5Q5]zRFQu(Xi؅XACKUpZbAcyGǦ8s/5 bDwH]1E YJm"q=yAA4sr)PVHsg)dieYx-%DBԂG>񆉡Ӆ %kĈ#6 \@ҟ VBhaډAPR /\x`,F^4ph<'|EDVh)?_3Jq>G$f`V; y5U$mDdcpl{vsim$] o}z=$ڿ89Be]n2<ZuX9kqGȮgk]06n?oya/C/^Ex·VĐkjlh3C6rsa?{}zRuNvgIBCj畑6\EQ͔ңj^!c}>RrI^BD?IW/wHU%FȡwKՉ'榶QՄ^Bbbl*0ANrDB$icʰݾvd}ajܳ<~ج߇ϋq-,7r1>=q9oqV]/:Q hԫx@i/ST&DZ?#ߍ瞀O8ǾfSQP* > r/SN (Zhb"5svtNd;>}KibFY~?,s46~ز*>LwZ$373RW uGzP%}ʐMGyTvrZcXG-Ce1l2(s Cl< cHH-Zz>皅Z1#ZX$o?1h?'I@FšyRXM"h :;\"B@1agR=1g.k[Uk1:1/W9iYS+,# 9J"4R Ѧ^2$CNqRHmrka!5DO@c>oYeHPa "hZ4VhH 0c24'H5Q/FQg m2v)=UQ?B aP(G!3!$D\ƥW` K͎{G4iOz#=Q7sI8[Ij0̭H<}98=V7&Q&o96_ڑ'x#q-ٟoa!q}w >5Qh諤מe(q<$?Ń=%ǚ!j$R-b?GGyٟ]5A'?3?׌[C@Y:_PKb@sEh큘RuxE`Zyf=k&:jL& &QQ%!Hۀ4j{Rm4 UZ p͂AHX-h8@pfH!xXKOSm^0LE!0pSy0.65W05X*QǏwc9pdضewg~?IZD2ZZLAШ4d쨐W2 |>VA=JH1Цjv`g4R(g?*m(}px{\~Mjw./[q> pm3_yi|o> y,< n${,\x˯Ȫ瑓 ~xqłv6+_~ r*s9<>I&?n߽}~=йGܽw+Wpp>͋7^_1D>êg1qYK E {A;GKn[ɃQ s`%@H PKd`R@gsٖs;vسڌKvF3'wA{:dO_|f ஀q>G,Y?u F?1ꙭYS>gQvzY7G>o~!ر}]kuTyC2n;R?aO ,;dI*4H(Y%Y#muO ohqr<L٢i]3Hg4μ˙L;2U-J ]u=8-bRMi  õ[7V[˦B2k3H{R*ΒF[Je5hHPa1~9YNweÚ,tہF):þ*V"w3'%kt'SB:NpR aB.0o[t0#8/|||_ғ*8;HDEXRgҔ_;P.~` CkΒXHN u!6oBCAƓ +řM2LBu{"3Y1&^X'}ƈa:DL)ϏӴpd`1=:HSR.Y;Zȗ)LRR.S]◿B-f Ŝ2+<`SWg4PKX}>No ZgGR%Rj:ů%2$u=J@cIXA5M Y{޹s<oM>w}ս;VK{-zy^t_;9k7o2n\WKH{~w^W(Z8t +`]z^y ??i~ȇ~Uȿ7&~U/_%.>G~'w6O47_{_= +^q3Ͻ<5} .]FH?o|Kޥ+oW_ o|KxOrsu_u>h"˾Xd!V:Bn"-Щj-m@' `!% ͂'dY@՟'w%fiFYүVXN4|ᷞ]9||gy-#[EEJaؖ?>m+ ΞAxZPj}˧g='ng|d @ϫcg|#o~o\IqOjdY yIW:2$ʵs>ߌ' IDAT9G,  gwO Aoq2b_u>w8pܺu)^zJgqgDI -<=2w|l1@t Utlֈ,̤'%qfՐ":JNdΝӣjxD j: z Z;SǬG]Ka$mQyܪg[P+`d_2$\ѽBb㓫-YL mp܌vǶ߲5Zw"$ ѶW%9u *Q $f Bߝ/׮q~e p.\cF=1"%ωap b~7wX?nO^ 3r_hbd>15@}z ,6q>/2X!Ss^~y[1Ktx~|Ƌ/_xT4j:!fYSaXN~Bp8i"x~"+mpSsGG|2ܣy}){_M^_5\ƍ?J൯n\88 ǖ+w&ENOX<``8I |N=ܽ{fO).>w۷n;W{Ye孛2? /nӝW_t_{pq{B;z0)hì}`}eNO  AhYKUZDҩKL$*H`bt'4Xn66cǰU:? 9];݂< miOnJ`טѶ #f3J ?{{O+//uu&]S ngPw6vhAI7t]<)W>{e_=c]dX.y1`4fs{p*i8hVkWpqf|f'=x1Nc=o>wYGiL]_ڠzU24MqFISPTU5~C3d-Pe:?M""aXmnS0fPmoWV qm/4(֬@&>@{ kn  C$zAuW+Ɣy)\̕YR%[_?r/rŠDi>9(4F J.ްm8iG=wHCfO ZL7!)xLgi!9݊rrJcKo%ҭNFWd[9{{- Ŗ`-16_ܣBJGqiR`uj侧׆ O}4YѼ̱b||댾sRM79p2Fl+l: ,%= ȉq3{ۇpSlG [KguwʏwU,>9LXׄ "eu"F8ҤduciO>3vOw8<]l/?|˟s>В\})̬1 ?;_~ef2k"7xnևke.Bí0V3HSCa\b}PUHi)bܳZxSRC.|ߓ6~\[4)mqf\a\v~U?%f#|lr‰[0' V%)%%.?c!sAB P4jc{0#U/@_zT)yEB2XP$Qk#Fk+Awr½#~Oһw(ra/^Lsp7kPj kJ@7?ߍ<||cBKDQE@KQER 'w'e5ضXeX' bULŽV(UCW9.M))b.cξ4dtkY:l8&̎|Stz[<Oqi@)X:, kK3kbyz1%;Ro;F6*9B/T N):oiBj}-=hFt/{`E5Sw:xJ0%(KҬz SP-A!*NNXMIfpzJ ]^X>?kL|0c0 , FL EZm(.-?I!jJ\t.=MM/ O%cbɍA?L#j тJOTa4>cnGE"f2%kSbs3炆@AHl[zIΊm*L笺Y)K H2Mb!ӘM4_`^Ħ_ pOϪd%@$T N͛%ܯԜl{t,Ҵsngi7O)Qfv0V#'ȭ/:^,/cἤn6]\$s ڵm,5vmx{lap.!lܨeS`,[IuY05_sUbHǺbfBEK3O4"v/r~j.fRn\BdcuWaPz_[ [B+Ӟrʸ[ &\^a{,GftmBp ,6ŖVY,{+ W 9rW5i" ƢE{=$z2m i^%RK;_ЕW@Wm@' , @ذ4P^zv>CB.}&A^FL *5QF.e 3igِRU 0$"X!ʼnrC2Yw"[Nb?w R~ݪZ}Іt('qҘ:@r}RחMN䔍L@[qֳqHmC=V: eXIZ)H4%G9@$2c>W9%EK2Ehf-A& @h! ф k)fWvS4Z*Hƭ:7"혀e?OSfk?e cku?<1^h1b1ZJ_.`k/&XSʵ}!J Ŕĺ8T$Qek{ɔ[¼傄dA;iа^gOϊGS= ٟ1$B ܾ}i#2LA_hhw$e$R<|)Y TK$@jBulTED8E8 *~hrO'!7qo)l8}NjQ^}']dݔ-жsBHI9MS54Q!:ٮً9ӗ(}ig |~uذ S^E iFO%mi3KQ)%;<8JSԈq-bUuh(7_RYXCzUAk2 OF 5t(SC*(B'M BJfHHDY4]*Z->?tSAȥb;Vc%*wj,ZצO3^j]+l5/Ehfs閇AJSV7CaW>?  i(~kT k R,,m 6xjkVeLyZ[3#Jm͕`w2!׶sSs3- DuBp3O+%g I]_3=5̅Hs%> bs{/c't3{x -" 861 HgO\ +EKurjˤO8=:Z2IK'^KSås l@|X{(f -">̜H|kh$NžwbH{C6q|x;點uboAXw> {m™>geMB'mW?9=p׵4̾rf64 {c\q|jJ$rvde)G]sQ +iyOGy>.Znƒ4FUAQV-qzJ3Fl=4G<ڄxrU1ydH$҈|8 :\50=}]ν-&XmZ)fDWUͤρ V^|`Vb^t5GG xJX)hɨ\ (,$pgpcZVAҼɅ a)›w C.=<]^rcjt 3HsJ3ct+TUUĶVPÍq>w8pBȺR}#d~g1ʁ\GI+VdDruj7y𑔵6F^>K˪W|@w&͕f8[oLHu6SzG:v}FiOϙνև=mNe.~ۯ;e(jH?u>RoX;B<8:tIYy2#fA2RNYwa /ڟ-KH9ϗoےRn;O3ڻs~9ٵ.&. 1C_wQL"5/VV*?)HhfA{w|;E蠛Xm DWsao"9z厔%Y%W+KMKlvBtC-WcDh]2DᵐT'!& 0<:sVץKr)@Z)"Aa˕jjltYj# IDAT&TBNH4kU^ ҭ**R%!EqtӌR\69kgmŠ6^,gYZJ~Hb.D3.gBPNK!Hqɧ>ycA4N>{^'Td8tW%L*=]D,CN3 {Ȼ[1ay&R=$" %XD5 0GruCu+8fŁ5ReCJv+o.1$ Q򐆷fz@&fdfp.=8745vz!칗 nxeSW{x[Q{#݃>ق&+ЯNI*;Ϯ򲒽SS8 }1L6>[ SE)OuC.N= !븐!\l▹Z,te}jDG4g4_O9,$Rji[NѾJ!<7YGȣP!է-lw D[$Q1.Y,5{ɗ EUbRܷ.Ucy|P|DI݊.w0Ce)ʒ0&% bUT,PjnA!Beѩ2`;1HPձKf.XN*-Bstp-&Ѥ9BzP%RdBEekLtˮ Bg'H6i@0rp|nΞ'L07…K6$ :jH.wRRџ+4mIVJKt>ѝt&J0bR#9ٯgG1GG~e3S\|@n/!0uszs5+,/.ʠ_reJcgVWX^YS"El.^FPq14Aup*1*#]}w3.qtZ-._d88yrNWoqϬ~ltel3*G՘\=_ʷ5}| T "sq2..\0h+gKW !p]'yϻN@j&Nõ&*'ď1M5!D2Y__yՅ>^I,\Jt'|m=:]g /ҏH؃j2vdJHZGaiXc𾢮KThkEO Y%bH$ssj0HI0~C0X[T[C*uRK\v-F؉u^xU{s\+c6rtޖ󡬡.'d\#|>Gn7mE{QEfM *Tzר5'V0yKi$ȯ@OcQjb ə3M­7!>gQScsۋ)s;k1Fq٦ ލC#p6tVi7)]Wټxի9~]dy5ckhWE"ciȭjvpZ4,.-v(w_ͲCi:1 `~]֍ʠ[#7sIl?ӫD9I QĚ e"/F]|=k_?0Ԍ>;h zK]W_|U͟0@h:1>mY_{_wMŗ+}O<(+K%xE~]bpxX^#׿,s|uZX+G\u{N_E֖).. _d{gO@|{/ݏ?x\s7>>wկ=+&9Y~_~}ZSq__0kK=.]ʿ?<<>t'|nBb1>cDdTw5f]a%!1xbXuuZVku8ēc݂}TGuTo&L3̭aZq ӿz$ipE#bt:V"׊tt_IK* a[$ch0Bu@YDSƲz !_f86s{E(WP;O[,pΡ`l^yK{nWibka,x ×T_cpU;&G[*ۮqzݰz-oݭp6Yϲf_w 5#nXqe/\5b L{{qI-,҃5Qɝ5r F1DqK5tVѭn}l4`.{Vխ%|#P>N~$+@U5x296޹m:w\yN,䴴xo%tN&fjLD cqq9铫؇'O:uZoo+ˋ|+ի^x'^<ş8sjna89*~fyay.^_z_k [[w=|Yex'+ >ů+:"/Cs*6`tyVqmnnncr9//ߤe4V^}w[ '?ĿW=7\GԱeFOڹ>ycK,w&51zvZL={5فZlei>㽏O\UV<8/2sȊ2 (>Mpl&iz:@9E~HX> F_W11ǨČrD79>}Ě`\`%z ػ~7/[o j֟4%LPStVZ7M"sСϿTUh,L%RqSkzx6nvr (5b8GʋtU{bpkdq[!owd2YI2`WUDy'ϟ!&pv= a&.4E3uJ9dH pqت`7 3p$ë| ^) Σ|&dY&|EP4{)L>6}#*M< !$ΐRkE#BU,p=0X^8mI^Z@71ՙ H㭩&@o}iZ+K)~ʈ rmH-xϘEf;~G_K4#3E k%&d`B L/3AOAeU"*\ yV/cg * +ꂕ*VFH3_c WtVq:]likz9v&TNb D5IӽATUɒAڤ[UI..c6n1t//3pU6 HY;l2w>j7>ܿ<5Osz̯||c9LҹHHWVw=2ڼ(wh-.FG<5xvw{5 #8M y hqDkO+Yv5Y#sa]]G uU1١.KNx]ۦ.kODfj 8_yzǬqUz>Mo>o2x3?F'chR"`7bakj~M+ q1hXZYbaiJ'=Jcy!C@muE'OcqqsWcd"C_^U^Bem̋X_s9xK/NH(9c7!x<_ݯ=_ z^~yk>KyM^/k,/|~u5嫜q@'匱7}ǖ{U.ʱvÏRoq.g/m\Ę|՗_'Tu-my|"?+Z6Yn^c>DU} C#ICkMК.'Wz(Ucl$ w>~,^O6N!)2lFGT䘵e8RG QЉ}~Cat~T _~b@{PN Qdb ʱY"I%_cimr0`ep U DYT 9tCLHa(MzHs\Xo1JK{d0tT&,,lIC#Ea6iՀJ4@@&`e ʃw m:/(.:Z7aڦ)g@EOtP11]_I8HD[uJV!bF-Pqj>DsTLn諔eZ/#Zt257㖮JO>yk/爃!,4e9QnET dE0D^IHc*T+ chm,XP:X[&ԛLgGaic06'=q˸9v//o=C計jE 84K2d%8*|%}c[x]iɁHW|s%\'Fk9dQ:#()RI2g X׸zLh8v>6Ͽ@ 5Ϣ´9Aghed0d{Qok_' !h:"cu66蛀 G wY]Y!2)x챇3\|Pܥ 쳟S1oa[Mfi<x㝗8k-{iG9{K!gskd{2-||Oim>Ua5VHhvǼdPƀȰt y6vvYMW_5ΜX/)_3s!e-̭7ZxT.H" ]̓|>{2 '=U30~1cqȷYZԬs\s=| S&۩DdN:zu5 aY@VHqqSQ{kQڀ%IOO}vN/9tՅV&=XBK|aIC1a6S,шܘ$J16dL"( g3 ^5?ƩDj( o?†aIlBЙR րPy1CZcAP 8Gx|c _yjzW mZo&pxhacj?mfm mVn0""7hfLL qIycI2MhMCpKQhLuUZU IFQJ:ج m ]0˒̷|M[\Y=s'yUveppWm^cUgLl&^XZ|ވL[5SĆi}b}1'/~:-QtyEGXY#,sq>=w\H(0Nqe:l?b&.ux4:}ݗ.7zh$N!bȌb0nN6~PRs@{9W A$fXC!~Q& GuTv(&^a1氉 jϵ B|\BG-\p{s`\'pu' w'$IMLSQ\JkCcm&$fP'ql,] Q!I~K%OQ\Ĕ&IJ^e1gxk@!KH_8j%AUFiwxW]SFx$eZ(+i,A=:#6e4z|7IވQϰlη N6Mc>}ˢ/`R$>;."*U-Z\1WiXc`hj yQהVe{Jh{Xlt\+r,=}'+`cb\ngz~F+;ݪAi+*v(:C3bK6p i5c=aV NvnV*Ma*Tt;sM|P;F}Wuo)ZX`:Cr/].b( F1ZD?e34A AϐDpN^b66)9Df~T?'d+_sQʲO\VYOI%vڠ5yO/;67(e^#rsҚ_Ν>S̯tm G!WϝgXc ru+~bul+1n2Q$˳@`(NC e &"({ϟe.oM|7،1*50Ĩ!B{Gn E W=VyR3'28ԥc2 mV֏њ'dk CsKߚey`nq%s݉ Jj!Ix֛9#[\!cuOkQ)dT#PY[!39,0`nCn =jNE`Z-ڑg^ɗRr߽wJH%@B XU/w%@*sho.ΜZ=S}g`4]+|;wq|mk49cōI`NAZsu?g/lL{ill+]?~Ir;_1` YUԮ?_yW/^6w9p@9*2 KB\K~< 2tr;v'__6|++X% PKq%ՄEhC%(!\FW%@Ab&#+ PWI83`ߍYc|_|+϶ɜٓMtJapZMĀ7La"QgD lAv+B, i&L-}( 1H(N1*LN؅Q~EkQ9òE˹>Wy}#dv; k F *O'm Iĩg$A|{TߡZ E 2q(!ŚFFc&%"AiDls\pD-lBE;ѺU-PV518tƤ͂RbGks-\Cw~Epc16hz,p0%jKSG w)2+9TtexqQеR,CGE#4C*1-@c\ɁJirN0o1qɰqɥQDfdk-eY&_M(bB)QQlt߱cyO],]tJuϊd:`?nw 3a_3sNͰ 8SQ*W.{4hfBv}N)ud <881U^Pd96i{-,kjŹ3nBĺޕM^~"Wn˼f8;ڥ+m'ܤF'.T$o,[ct溴mLnDnn{osoNc6=lx +KQVGT s]JG3F޲H`]co_g;}^ވeRz_+ywh4"zeaG =oz?3TݒgW4Uu}rGq^q}omP3s|#b{OɌby˿o@7 c2ԋ|TxhN$bԀ67Ƙ1ec4[2:-ˇ~ WF_~}[ #ǟ'fO3'Ka>*'e("5qj?4\8w[BFLCAvsUw΅k|:cٵe,2YrtdUxMҿN?I3+>:7_G Xj[,16@`cpȸYoj&[ {Drh4Z\JE^73݇q|#bcd}5&0&~VEZY،vѢ9E8|b7Lg?lӤT#4aUG,f0M<'@^9_`)" '$QR4*@gbd,@ AyѦH6Jl-:ĐtZr͇e͓L@Կ+|]&I0QN7J%(ʣd2j~!%NeR1\7)*G-bJ&*[7y:KwA09Cs})xa\7gK'O%:R cXݣ[%h ʕ{"bOK*zB uJ exy' +Ḻ 8EY 6,P\D#L}(L]Qu+:22bVpnk=u#/X8wBe_ո a=!Fdh$ \n2;|ݚ}ToAEa.(cX8vN`k{D yzssmPxU XMݪBk- O>eYa40M6x;1~\q}cg/0^Za謞D~5[vcVn jz7+,mo<pdB> e t]EBPi݂B4Ve3qh6bS H_;b4REeIk.Yf)yMi7a3Yc=3qc^{vwv(1ARɉvzu56&u箲}uBŵ%N;Cn޼1F9tǼ5A__bkwQ;O6w}V<׵{ZM N(*\9?Gq.$P+ވ8-ͭ=/{x( N-_~/=ry.2\ 3ёgʘIW8_\M\DzeভC꾅X~TG:h6u LMeRӄW oߦ&0ARZ/xUau!4|mT+v2۔1Ma2ƪ"1lr&A P*z9hhVVW`7?]g_(_Bɴx!1 ܨ`62ShH@ES7}__>LakV'V ":1k5H hLhRB#1%p6d͠զ!b ʢ.0q(?<ΌĴ 5>ϭ@?C9O1 4;4}(r G64PpV(\hQWr>WcTbTs\%zGU%9>5S;bH $GNXc3 JMDe䋚Д0r wGla,7Lm0* FcFZ>aGʕ+% nIϣ0 l?R✍@D|4Q,G9U RT y6Gn[(0d=ƥ-% |Ӧ4GQu5'ft,tzF0W{图?iHuV #̩A kW%9tJ%izZ|2>j8*&ۀs q-4'Op$+(Fm2㫊r4GdR֎R*dљhȵo5Ga4=~űݕuN=$G ?:~Àn0{=`vL+=FKYٹrsl&(6yl#[tA+GYEБbKgKG7x?+'W1ؽYՄdyI{_OMrqi_$M$+k:S|N}za*܎gU5v~~2O_3TMEnZ7N˗p59s 9}}Ww%Vl h <Kc-\V>ybUuEرUMYXmhF#&_|}d. >wp9]Nc]MZ3͞Nj Qs_S|]OMV`8vǒ5֖k:"d-l&!RX[LM)(-4K9{MI&;h31sR22S&ܬ]z؀1tCisEjg9. gReb/%/&15mKSiƲІ`^Tc3rb{pΓ|7Hb3߰ +{c$ " hRѐ|DF~3DFVGc#DFYU;a|&"xq/K3Ԇa;4&@v FPU(PRV7Ax\Nb v-.= h 32)StlءͮgG |?im;lhb:F(ӍkHlZRUE *3a^$1|ORR[OL &rF ~E^DOP鮯**̣b=N w[Tn O%TOQ5 ^ʴ U9!T!( Ej|P * q݂-;*_S*)<ՋdjUG,JB>^:w,O %&kKb 0 6R@AǖXY{Nk _W;g U2 .AkbTdV}#zjX32AR)gRTc 3[X7%ScIB# ``-Y]P B,#}F C%u!rTXɬF6V'f"W8_S17v{t]/;' 8 F ehJϰn:uf[IEozssoxLsjFյ͙ؐA`AJǵx5IW-/k7h*1\XJ4Qu!!7۝wl_UCbZc<0ZZAB~jSlRք䔡UX`d6Q/FJEFۘ"By[ϰplKd7 h8R$qڍMdoaL#ɶ(d\)E!(6|Ļ#l+ZDchE /g-y~qQ٧ShEg9}W\_y'xb얉Ջ ]OǏ/0ƒ9!v0ⴟ< MUE.xsbUۄ$Y՚,o"Մfl/ELe02ߪR4Z)>N Bj ƨ(r tשD_)Pߴ2Z6-XCsPPU6 IDATD%؆$UѠ7ӱgu[ا0-]]1+Cd`ڨAMNfsǨ'Ry} Sn6YcL]U8WQ'[cf:m6+ԱD> , jCupqHci}AUj˚f5:5p@k"xŸp"3u%A@ʣ*.Y8(meP+ QdJDricHI$X)I:Df#j'[vU%@_aMP:%#sgQ͕-SamWqj$Qc E;U%-&5q bbO}';uwVOҸUZk҃yTuH1M kxLL=l˂ fjE@bsl]@ =ktĠQy"uQ(˯A lNKh[߷UxIZGQkDz[-kZއI,!F$яb31FtR "1t] x%Áye׿K!άsآC u6{4eoI=hJV4~2^'*ܫ{ɷ? :FEƃ݃VC`8@`<;} QE.]{KwֈK.YkwW^HJ$R==^`x0l|01lؒ%ۚdhDqfUuWUWUVV.w9fVu7٢&A :{#F{;'t.!dq7p~˘S% coo[/_omFS ů'w!.xɡR 5~*(GuinĮԣyᔐQ(sx8eT?;8+|,"hTWֆƿcwQ"*H_wHsM}B:æ{M .[e97`"ߟT|DD  4=ŋY+Qb/!q%Tn NBguV?+uB$ Wύ.剒 =I)d5 c̎ ʜC4)ªQj#KX7ah.FeGRYC n0G|Wu)LbC$XEWTUd\1d^Ȋ YB*-1P6K +!W3#Lc,PϯؠDMJRhn D'1DE* âZeBƸ֓|V mS˒?YSnjq aF 'a6WI$i4Dբ7۬, '*=XceRY|%ٞ1A"EL#$! C"Ur>O藴.J0W(IKA S( hF]Yk5A Y>I0Y1%{A ϛ#3 9YG3BS Ĕ($^0 e{͐CqnF^rR@:yӧ?R!E^Ӛ*\3$lΘ?Jkuv c̸1չɂ^[v<񑧩M~\;$=k%|/7!?'NVg"e8 KB$xr`tN3ߋ1۲ǟo/o}$oM6 <'y/m\}2}2^Cl`q~g|sMYs}+/R,/|񯘷Z{V$mLֿ3F5EdP['8wV*-O]"c=+o!Jb׸Zk\9@"ē9BTM%xbz${XLm_³ 6.;C{A8vNYvX0ĻûN^_ZRJE]4uŠZcV50̀H > j *%D Mv̹GvQZTf&q}k+˃[8@8GPf`k A=s (D Jfk2APu.KZ@n/Z|q=އ #!&B9xT<[lU+{G~հTa[UR>4'$Nb  9OlnCqa[v!;};c[=(9)Rp~p?o|ڊko87C>ܸycy4J(-ˢ"cI.ݩ;ൠO;f{{g'?mK m F;|/募1_ċ_QE'$nRRcL%*ńs[Y~yYƃz &B?oXW\ݦ AXjk1*_vVb=}P[G_xˮ'*[\;,ƒ;굎Ny|# Dwk;piciB01Kצk }rn2C8YLYV!F&p4"6';!j4xC襢^Ja4lnn0=>[Hʂ)l(HGJEW23 T \oF85>8Be|1 KQk)7)JEXOŊBSpxB* bX [ T)O|D2KP|2OYKySʻQdm4/|Bºo~557S p%NHTyⲐ ET$O !E )Rxp#q'޵Y?|*vC$JS(>;[x(] "bB+ v.xZsw`-!*ZBB%}VHJ @(Q6jŅ[t G(}Kѻ%RIJ[ׄ'8#&OHmQ ,ql/}2za:[2Lj.BJ> 9v6`6>.s\IBf8`0Nt@'M"xɰm9y_zjw;oqM9 o,G5y$PZ-Do9.NY5[.K`!l5ix#O"^7b~~?6Wښ,OIWC( 8:Bq<sR"MOM5oзa f<&$63=t+dgSeHP&Ko& T2<9OR oQA37O kH$(q}M^HJ.*LGiߝp"Cz_UW+'!庉~̯xARD"}hYv䉩#M- N)U,fG(o }@K<9<1!#"lmۖq-%uI"az0@[I@JfQ:|!BG-5ȹܞC`IJBȉ"Uhwp3-bIYe`ѹDkJ9܅P2T]?Cz!-Ȝ,G B_,!m!/QHo]btKp6$sA(.dVagL޼By +:1M>77w [p_&PJ0Q0 q#C漢LU+A5јijC245Ma EjR"R".c$J4|Zbl#TubtfS$˾]'[g:޳ߚЕaÍn߃#ΉRwR^@j`sΣnu~ĺ9W^8UoN1NWf v{7ns8VPJV4U]QR!s$sX)%(k휐.Dpt!"$I׸؍a).S~>`R'SQB)\ZdAPB KB8Yɠ r;T yposƎpxI{"\ur 1y0HmAh6#~ ^{:CY:x͛/&k5=zo|u~ zhU*D!TԵBj]I#-F[ƍ3s\X୷v;pF}iӖVR;rVguV?~5?hI2<>xRY $޹f% I%"RTV2?\c Q],K1[Bc!ؾ|Yi6q{zw؛.JÜ%V\P^3-+MZ5܃P&JY#ɯ: b^ H— %.Fy!Ά@B:G b8J#lIuOyʘ>BɅR2Dc N& ڀmPJI.2׊e ,2>8%NmʱKE K3?cIy}&%A!4Xs̬yRT9iE>1oALv= vG W_d>Cńie !+d)5 lVh<6 GѶhypŧ7fPI]B:ٯR%ya) }y?eE *à!r9åc|8$ DV*F") bsZ4M*Бm\bDHp9xհQ],jOIǝo]C?w.M1<?#% *qx0Gwx *h5^SblQ2/LN+{u#:*Xfxk3\*&kTEU+L30;`Ql.v#жb|nzkp{6D-3G0~CNS ȵ;aC8urfg*DJ4e\e`*EXk6-5f^V|?x,^>aFēW/>hm&n߾sٙdᙧ#ǟk|'ta15021֜@Uֲ%CVsng?"̧PRrxpVѰb8l|<[%Q6% sh9.d%!5TlmJۛc|2o{ w!%uu ~/O3[mY%8P|/lņ?̩mW-O$FrT6cJs}Rj0Z>@!H5煭ÍrCp10.\?f(>ێ r\ ٦^8 soRgMXhC",7*BI&bJoZkB,ɨI"V3 Gc|1;@l"VIɁTJ*b$sKώr|·S:pH#Zk2}NX0RKY1:E-B,{N#:J) ;C\ (*LJJ(z2V$ Xx"[%$1R );7ZiIHBA7B4Bt)Hb.9u9)zN : %kNŀZh#Fʬ+uQ@kD\lh{j#E;Qm., aN ˜d,@*'"Kwi{q4"X}KYKD4h) ]k[\ֻK@@,:b$nf&D<2FtExogx[5H^E6jMn£փD\"+SD>BȊٔfspgD䦋I`aڎ%nqmRcT$BT%%F+joR! Y3ZinȉΊ)R"fߡOE>&K9D5Rkn؟rv6.1S[ LJX2xs `AQ B ݂}B[Oj{E?uZAS}{wW}{(! 7q3RaDB B%$#Q J}%߷R"xB搉VF#0Qۛf9bԐ$Kj=6:{0Ru-<\ NlIfnB`dqnGBnW?y|k4'Yؼ)uR!cL b2F K/Ә@'5{yRQ ,O_Okկqڛt1e{Eԓ&~:H "s.|:5K?b'Ȫ*ne+PuY*IZ#Lz[e>oȍeA|WF1 hJ7_ίH [|*۲unP'p r>f Z5Atk_9DiԖLRMaA(UjJҟ(kُ9UEDyҷGn-n24d6W>rYܟ\% XKm9B-*f$kEAY.\~O2)*7Cp{Rb&1_eO-i5M1%I&CVsP T"3 E MKZEW,Y=1gsrFPfa>y<o #(.)K,.C杊8 f'JR`K99[sCyZ(u*^/?kt/&JPEB;RH.Ad*0a*Y0zZl~ R2xP*I`E7)JbR]YL} *\U{Mšs:J)z ]?oR`*yv7yXi.'sn1?2;.{w Y}-!*T [kBN>BIAߕ\nv˖[fhSe G_ '9>Hem߿|~RzE|ErCB, yKa*}NL8H)׌w5*.|DqX6 PZ`ODQDD%DLEFk -9Ei1]Hxד!b,qA^%véR))aa1iOZ hmE /+"σMR" NrJ ͢lw˽vKvץ" n?¿I7Js\;2-%;ҳ\67/ %{{{__+ll8o[G#b$,[̦sWsm |W1Q|/J5vwLCDƘw^__]O pAeUn^#Cd(:^9po F~p3-I.TYےAEeRiUcA5`]Y}Xu"1$ъȗ:Bb) 126[(5VA|f]" 8a7bWPR| +^ Q!`hcdcwѹ-os[ |"R$i2WMSܸ frN)YA+?sCq0K0QJ剐ȲNQD6JJJŕdI,w8 G09-t!/Jȶ8!2$di24V#)fN 23yl.94dDH]pUo55iCS/%m+GI*MMl!UNKr5̙D{l~CٺD.3ۻYf&ܺvvĐ v"-m0L5\}%ޡu1t4V##n vs[b͈52PBJ 4BHHWG %EҡB%-^:"%JU8,ۢZD5aq|-}DkO jMG5ZOKwa,o']t:r~V /s(!q>R M|i9"'&ƈF6jhg<au?&@+@QOn . 3ENP) D]8ؿhv%Q, t$tJhX~1@ĜBDgdDH>DuuZAQ539OosyqO^/^  k`Ē.+05t*xSk܁ThW^Y4e&ؤ.Iy!o|YY֚q"dl"B Dw)yѶ":O!2wKu*]K j`H BHB鵥c(C3dFHI8  eS` u4hO`f8() R|Nh)rjT4w3֓+bnFnk[m'C6<Z 1PRĒn&.d&j*~0kʽDT0tQvXK2BB!Mp"Q ḧDqGYa@SP\1CL3DB"l^DiH e2X*THe*3} (a"mב'.^"`6[_g9y*mcKס}nMi8hYXŏ2'tj,+B.pahˠyf=ftAB}t͓/qqUnqg&^xr$ T.2dQwsB'*7l޾uv9!޶[D^xlɢ[ҁwh1b&"b ӈ,&PN!!EDI \f|h/08\ӇfT&Z(P2˸Sv-yjDx!Sd@x?u7hTl E|7A|N+*nQY)R5RHk׮3 vvЕ]_vY'U Q0;O#^n rn;y1pطy#Jstc*][#*KR@tO9%;zrAh83E#6ŢelM|hK-fYxu^-.!Nw=`sa>TFSj2L-!Ր(T%ن.|Nf%z+Jm{JS7'> %J`,1 󖪩Aiͬ MESID# c4'拞i$xH%*B[j[1$T@ӵ=6\S.{ވTUZƔ'ap/^L %%Ml-߿, Uk-"`-YHG' fkMS&58:Κ䊧zBbBhnRF"ug Gb=2K9]VJFÆYt˖TTBC@ј񈍝]dMnݸl:H %TY$,kE"1+')JL YMS˂5+w$ !|#YH } b`Q2?{ˮ;s;)9dr)J*T%܍vze 쭷 xaaV(89DfdoÙ8罈 *jhJލw*2R bLJC7]t*>~G_5ŤXz)kda(B,ƨѸV(Mri\JU٠O< &i"I̗Y+M9X'2q/ّ|sX8J8}WrO bBJ!)>[  9tֱE?c2Ac} $B!]9OopuE*A?+NNN# -7~6P ֘wp`}! !r2ve}(эFǘm22gx~nesLwJ!`i'Q# &hpcWstg+B ` 'w?Esz>Ь߸#dXYzwy4Y9AY]g!P7-2tM2=5 Zzz34Mla8g{-ZKC}옇"q &%KmcPJd[76|i3rr|·d! F>NѲ_bcG9>{]w?|5~j鸷wp4dwkHv̑Zp%E6~*ko1Wn6tt2ֹw[P䊛7v4\E ]Ƨ5AH<'|Ub/aqxiKъM~v7pt`=^92>+>8h\$f̥TYci@|2qz-VZeOI=߾_T+$^`%)Y5 tQ2B#@yAirdYk1MFs+@\' IDATW.$ovHcJHz7]sNNNifSsrLpm/_cI̼fEP +Ē';uEn%)*/$EEPԌFY2H)VR#3E!.R效@E EhHTUpWӿ;!WNM*.y-'cBF_'Rï:ItdlPD) J@`BmP#kp% 21Y$exq]D `eܼZMf(4BvduƴUH@!tc*GfEjR "$UJv"4(Y P4ϩ3d!XL'$8p rz$%!8C;73.&5:j0[ӸO v:Ktl>Zѧ:I9h+!>8>К`OI) 1a;jk# *&EǠ@͍+L&3f1.FFx|v![TiP1xqA8T:LR3o!dL5'96*jLg4 kA'>8Ys~eרtAI0xE & \G!y7_uIC~q|; :hH^dyP"453lzqⳏߪBp %ekgxUAo4?\W )[H>؟O1rF*GI躎kJڶٖxS%4qx`<9>qx4eQwYI 6m{9]6D=h+0a !8SZ'G6yu!'J goesdSrV(M K%ڍK 1M a!E|8_pl_Wp?敂QYOv L /J"ubsq/P(\T\7ѿ[DV)!GbXPf9"ˢ LEiw+ɫ 5إ'|<+ɾl-Ak%Jɕa!H]|3x4c>`p2/ uǖ<q`>P]O>5|8|I g[F PEsfm`)Wo;/ =+xk|/;ﰾVqJxxwo~%n?{7.3To|n^]P:i7 / ^ >GNy;z~?pt|'b'O6d㗯f\Ơ')K!]} 򀧮mӛ( =͛;!/{(=߬|إ*QXG<ф7,mFy^cFÚO%ˢϣmų0UDDHΚ ݊ "ȇVOI %+-AT7& R e\ <Û]h~%u3_ɍ qHDåF%S4;۬Ȃ~'`ɕ1~Sj%J&B) "KJ.XHA* J ({}ʲ,+dvZrrp|2F)2tglKTi yQ!G k!UX EVhE:(JDjHךTIÒ|7^T}ቋ+"0u yciC Z$xPZ"1q lUCTӼ?[WxuM#SFT{$x|gEKE&"9A,Zd\D1eK/|O>@^M9Ww{^|pm p29j߾3aaBҡy΄ gɻd%(a3^}V  `SڶƘ.=)>OI}|(-zJ2RB)"6:PY6K-y44EIl=䷩IV+^Jr/e9+8qB ޲(÷߅ZK|LʳOAnL=yJr )t3Z?X#ˋDN͐乢k6/_a|x=HI*F4xH'#Y ѬXJ8RΐZPkklo창1Dx mƿ_E;1.ʭ @AjMc"ȐP)'/\BlBRB?l䗠j.D(GWR-ӨFk%8"@]A&{DYq,@ y^a.;C-l';{Cbc+ w;QT%݇ALd1Ƈ[R57)YciBx?0n̬mhݐAuWXtpSChS&Ρp<[?ЄAxȃ:u=AƢL 17zr^ڙږt=ub]9:7g6oC|ߤtŐLhzg >M ΰft&g& U%Pya6Lځ`d 0./y 3LCu0n (B#M_!'!yCj^ Eg R* Zzxle !J%`[ۼ7?xo?.xcQ QBg5t{, 6wvȫ<> M'җ~-YNBXL(3m-3kS ɂB!Eٸ?<9kkk_60k m2 ZKdk!P1Uڡ ڶf609 ݲ9ٗI Ւ_*,=vK[ϙO$(JrSr|43`h'(M|}A s _5*|9a|g}c~8W';䏼.CӼ'XJ؎֥\bI߯JzC2`Kמ"/4:6G !XG+yYߧMB"f%O FHI!$D9*ϑ*,zYk׸r2kd"+hsYL AL-fz [ \6 k kznF裄X Øyڿ'J)L g l<J)>,? :KWt]GmHYE)QcL=g}g`y.M|OO{ztN&3!3b:>!877|:Jg QFiLK3MMpLkRX:at|K[7L3*KV_Uw!㟪tVsYυGʂf{qY9)-`f-iR"24$V/[g_czK9 ,YKׁBຖLg#(Ak\$H! 2A:JPrlϥ_ccRRgT(KzZ"5Rgn2z1"p8yΤi8*k]GI5) #S-ױ')21Jfs^}%LWs}NO +62/#Ng ɂ;xgpApp2y19snSW_Zû~P%AX &C$K&pSxxysGwOP:du矻Eu\r]Ͻ{hq5|0!7\G  c1Lf ԋ1ɔ&Sz袊ՀA8A#1jl$"CIR !s/p"#Dd!|Tޘ=5Y^`2}AWyROXO@_3ƸBqB"&  yQbPJP7-{}L􆣘P\.¡0yYdg X3EôhSG?^(~oopyctxԺijC t>e6Ag /2|\kf>F&fۗKl V}7mˀ)G"S$kZ+k;1x(>*h놃Ky6^:o뜋N s=,( H ƥ#2zҵ9#rU-j>b:!6O]eJ}"V_<nq|6[4>κ3Rblג)TUdX)ȲSJsLzV8$ e5MӐ,|:T3&抍@@d_\8!/(l@At8I 󂥬$J8gW 8v5>E+eIH@ȉPd ZeATRco~&J:dyEFc!uE/1,?}sG[;^Pl%-wH]t0yk֢B)|.]HOt0?.Zwg}'~LAF, *0F-u@JMYVzRO7' ,#tFg齶44d D M*-5Ut)%# &pB^ )Bl>6:>NB kWї Pa~A,d/KBLf4׮1mc4x?5wej)tؘ`1 }񓿧=\@b,)<\+ - Gl_B9b]ɔ\c'5vlCQ(:q9\zn}󻴏 Y#"sḳaPQsè IDATAM~,JNj+AFcSPe l1!AH)JF2[51-QX.5x`22@EL,pGX!Z^ e9d1;ƅ>Qu*88;a{ZR=,ٸ>wx&ܿؠD#+AȪ)6D 7.8QG8Kln#f:1],PzQ8Qk?pbdbm@ >ĆxTUJgP 2/׆3hԉwW/8{>ZI^/zvf14-d+Wr*9 |<ꌉ)^_=y/0gIKlf_4gʅc a}x:Y/Gc'+O_:Wg߳ƇkSLJ$}TXYY`_Y0"mAF[ 4XQH*dÑ@gص]ZNDt 2/qB.2.iH"J .@Lγ(II=߲_Bu>.J%’"0C۔Bg@+MBI c# MZI Ȳ#Ge~&¯`}J!+ rT)(!F͊G  ]s']r,)XtdN`Rw4uMѕA->x-f¼>-xչ_6hb]P\},QBm;{3^7R41h"o=у=7oWOW_3dA`d P/:~?e>Z=t* 2|01;I !V#u#g(lb}TA + Ip.sHh:K+pÇ/;8kDWNDO d?էp<Mq&ʕChLBPZ:wA*`ښ3`NP6z!FaLdOJZ IbDL @BBe9F@E}S8mu8k"̒|?'R ,62@CoXx0csO:'tRgO<_;ʸV`22DzFjI FKõ-N5N'hP¢h;;d>P`PU~'J<R^_9IVVl_Ɵ_orhgN1,M z CAU2WxkxtG7X35>67DekIZ92?=OO(:nNkkMLN<|#E\ 7n?ŕEgYgG}Θgיh5Y|iq_s$ g!? w<olAs:G+ xwL뚷&?gdhn۶[6{\"%ppIʬBJAFLYqخ!1 ˀPLeg("XGuT}>zZb-ߋ%-h,_\,}ߠg+wS(^%el +Zb 8Vdt<0ѽG(ݻg>ggQb"BK~5 B"T@hEI22A%)$T>#E쉊)[9dBE)LB|X;DŏPhq)0C P*CjLARFO*}8=PgC٘Vpum79wؘz Z)Q9~}% phDF;[ |8В%Tg>b!'2+>zу=!kOګߦ!Ȍ@vof~蘉*P*CzA|_LYT IBU /Q5Bɔ1ENg(+G<x__|Pfn6g63OǴG\P̣d¹"F3 'rwqa4P zE45t=|1y+<+~\CXCp.&ыU=x^ZRvV1"BD/J]Ȯ/s=o髂8>n!"d ɔ[H_g(c| m#080tI)ODp! (!4(pZ YD"3DȂ^ً$<8y0cϞx}HV&+R\H~q2߷,#ZW҉!FlT&`I| H1c~-;J;sn۹F ($Sjy.׸R4%[aH#bƓwXksO7"< 9j6o{qa;iy HDz6HHcA.!pcZ!(14KkVShCo)2u$BiHavH+ZhQZ`%"FScx %RYgk RdZi] dV2"B~ 2on@iHOۂ <1EY-Րc 0$1RRUٳ3E2=M)%Z\'~I>.1eU9f&nH1Eؘ<x9x ~1Ēo_4EϬ!]fS bkmp˔SxZ:By\GYՉ%">m@/ ܼ}w~Ow9fKR2'MnC2?Ů..-' mjm(w9z6?G(ǸLj T^RXxȿw7 oٚG=fQP#oc>x'}6 DZ'*{LgcKE$Jp!B*l袢GKr8!Q J>ɏs/ BT`'}}ʀY.3a5RIT.\A",Sw6w9#$ F:\#TOk JL+vmdQŎpHQ"3 ,+>>(;+dVPy.p؂~Nӟӹ)_i"":r`Nu}58}ƶ"m_%'h jbB%j $ҩ=!جHd(,d^5M&6ZeVIJUiQB`C6نny**|lRTKQNG, R)68f9v%mZ$Hý`Z^6h5Ŕ[2IŢ=k$V]O3imۯM-.}!d[}G{>x2g10eJ]?':أL}fWiL;߸/Ϲ眝^`\ZS(PjQIYB R NJֽc6[lA RPOFPUN8.knY<(֔욒XՌv:#h O%B~ b/x#.} ӋKvv1Ũ+[(%>Xsړܻ 1Qi@?BϺѶ?K\@n+Ղ#w4'IVN 03~{^\u27˃U1);+/!1GQ#ކle46fGl#$^[IVدlWHU*ScЦ4~|K;E#Nkֱadێ,BiCi=@a–l3v:=3L;߂RNj,+BC`2-x)h.EMDR*|Qn}nt޵ҠUbeOCt2PL]QkL ?!GF)J0m ת*Kc(6:} }*O ٷZdq>r8M e:}H0"ˡLFXkA^JTaL]$LM%n%{ ;=1:(-A$V$ϥaHEw"dٝ/񫏗OЗaH8XݦI*s=O$W)RK*7"e0 g?R!!m-"Dt9FUc1Za$j᝛QW:(o^K2GǬNgGHTQ+ަB[TZ#Aĩ( K QJ -97po~F8^NF,6j6&q駏cxTܺO>sL,/;nĤ²j]?c"`ĕfJLA!8zx]i}?ٔsD[<>uDSᢉՊЧTe cd1' t~ҋ<|mύH~D 2<'9vB$͒,bnotOo_e*PPa nF/Q(C2+L($PJ<5B E7Mł;q8Zp}GP3.骂 /MO|>`˺?u !J\x)EnĐ<&A!EB*TХ$ma(RZ{ֶ%/IIbX\-RB"+KY"]}*&V 6w.bt8BG]ɾoBJu]zHp!T8ą%!tHt]065Z*Z۲l3؊^)xů"\HB ): (%2FMRzg'ZMӶLO1ޙpp7ߣ+ =G߼|x$·ga 0䄳%"1"N>PPMQTѸ*?,6X"%B%!\m;$Hܾ9ft 9{˵˟=hLg%9ٔ]3=ŵktPKBjiWK?#\߲3e4JI".<}􄳓Scogѣ7s7dе|!T^AzK5^ x |q/_u9Fh-3MPZmVHoXEbHXt|ܸwrR⟔5s#bX!ƍaZg0{G5RHX= Mǂٌc ysH"[wه,\3IRw[p ?&*笓^ $UhLYu%V)*Đc@II k9*TQYMI)/ qE}mw[k|ӿ>bh-O>^"1wyit9"uh0w Q,L^J@։^QREc}D+A, !­;V%4z>?||F*ZR\ӌ@ :R2"W->kׯqb ~S.[ϙ]rM©N=  LьXu^t275~;|g،dJ:īPl<+LA"eи (ˢHYg/"cvC 'R2 8ˠs.y}MùSd.|LZcz6IV`m6n:1(dIV HGS.3$SGZZ Ș}0 OF]9@=7sOHYc^#5?2ieQZtAhzD_8#mշv f+~\ IDATÊ(&J`#oC Q(BC!ZDFLr48oXNqݜ;D|]n%^k$Jj5B$vz5kE5Ɣ%e]:ZIlŵ3z$wc&y ŹxQQ} uL鱜rv$Y((t14;xnO#~ǹu#A ~Sx )JPC;@Oit7~;fͧ6i۶v-ubl:uvc.=#UíWcg4g'hS&c'LQ#zc\',fsMe[\;LQ9LoY<9}ލ>:Fi-۲ale~U o "\>9H]"j,mB8.A csmڈxlr{LvqWb/_Xt᳇vRI?8T .{*Y齣p/'q愺FPT|[ "Qκ;~0nyzNҔ9Jq1FseA@jj]ت$@(z8̱ VT $idぜjԤ1 O(sۃz3s+/l} 9Mb|yP!EQlmI)jUHǰ-2(5dk.~vh >C&[$Fڢذ9xTI* &U]6 ڗx9~CHjf$枻{^:d^L DNO]DsBoBkQRȱ1'hzE b,}YM*#kݿ[4gkůUa46'CJ JlE)\ hlKCT2(!pQ)Ix'j믢FL4=YF`zXMcb1F< PoPɘgO8?3WȘeJdpk$dsA*)Uw8递 +6$:"YsBlAn|K^Bt}C-#" ;|bDQjN!jFi)Cg}}"L{  ̝ꁷ*6L>|!g,@ @+C}\E#dM&-{mD ʹOF69IVhjbc|XҶVxץLJ)%JX]]T E4!Ivuxr\b-4Mw Bt#*v$1yE)AKq1,Xqm@ ۃS9~?E#}HU䳓VT3[)!* -Rc=\JJBI/y0i~ D9&Jh","2'>k/ylbZ!=?i: ,E=O 'Ohs߸.o;w0>Эݟg936.m0+#qr `TYzMCo=F F0V">3ˋRE, o: lkꚻ* >Y/\/X/n`w¸.X.iBd]Cvny)$εL?iz[vɧ41GYHabg(<[2 _<6ig1'rF)]Yrg)?8 1l)#$sܢDh`y:%.5=bpnRR6!"--7I^rͭ|$r,!74# >rx !o%}BJ0Ra%*\P w.K^ttO3ֈ՛(ZGh=b'eǘ|bS(,\mo/~77ƣy+2hPUgQZRQ)]A?=~ ˮAH)BF4\zlKٯaH]U%G۞O,@,U)TDL#U(r*0 6 m]E쾴!xpS&V9R)69#3PLd0OlIݖ'0h}׶.67|[[/ZͿYkQ򪱾| nؿΒYB%EAp?6B,Rf| lV/ox ~1tUҟܑCbmJl]2s MΦW qƁTc%9P%5 6mK= AOg=Z EM#g?7[PBKA}vSW%@+1{C=8>`\CIltSBPEd:k|!%QZI4J;#|u;=N sfCR;Ĭ"GDjM|G>e[\XHUHE_8 Dy'7xk1!U_>Y^'Ou^dd, 32>"UvY&3Kj+ 9/I%|ާe_ؙܤZ% II$u1Haj1R]XŚj.3Ĩ P[9RWhf6lNU)_b(tNJK"%#D‚)N!!AɄRV(}K" ڦAKO qXc%Dy;.1sZ11@lAApȨ$PPy%0.u]`=u#5Z;jd<.ִR#g̰ٗ 1'+~ۿ!brp[]̙bh!/$B}u'45Goppth)$ Trz\Ҡd`L~g랥_ལ;mG״*\cT"ZI4%w;g4#Dy%Ϟ<;&{;'5P'4]i|ƺkTO5k'kVK>˵>vvw٣SNk]7,+f\Cd3FB#A#n:wxr2An""t>?읝rs6ez뾵~O^afemn{ѾFE>If_e5efϻȣZz-]lgQ|bܫ -na$FW]D"^^s%6Cc]!tФ7 Q)5N@-# JCj/c5[;|ur n~?Hxf&5xٺ<0!bd V~4vqeccV=!H4 NS&٧)AEW4#CY*Lm@dc'p?3bLIٕ~!GfvDXS%0xer!>70Lx[ h/rkPm79Lw쮎u?^$BDksn_EYC9GA};󎪪6٧ZImꚁiJ5ԅF*)!sc@۞k :DzԸEiPQb4BPz5>Oup!u##>Y'cyB|/W<}Z+W\{Vy=ĭCI]/N'Cڢ3xY zœ0s\K%OOrFJpì,hxy)$Q$/.Eo$>Y^_X/W5>$AH6}b] cPEɎ{T޷!H7ǘ1uG׮, .I)=JB  t)b)͖ Q)m7x_X g?{(sRc((S/e9 Z&Q$0[txV\COmf%0tk<l1g# EH&2]!8kTXཥU)i3" v/@Ph@,HQJ&#$W@%wOQΡȘ.yxqyrF]wƔ]bUawv8}?㧏`,͗.¥9˪@iwd.o}G%h+LN##Z (}1;?_4A+9.9ppB+`"'ʵV4}*<;ov{Znq'$J5vF]ضe9syvgؾ1;;;)hdiUoPGY *[S~7㇏pt(~XdFɰ޼|O˜,{f A&"K%|މb ֯T{>3L*w=L8"zKRn=6LTF6!Hli-X17r~1nb9,[k;CfU QbJ 9uu`l Rh^з@z0L.A^;}9`;p"MƸ|c>W!$KM!n56@9Ϝ6knJ˿zG4Fڲ=UQ{|ʨ.q&ov?G',:(MD R$. MT)+FP@(lB B춘Ϗ=J,O5 1bDl0J gtb*J_7Нd j> xYq7,9%3 B$82QP9$bH#`IETҳI%Btm4NYl/Jmϥ!J!E<1xIETm"&h>R҇Nw-YGqI!>/q,0cpxĦ  LDBLY4&6/AQPstߴ\p^"Jz"m ZiBC\;O_=uit*lB #H0e b#DbE3.}EAȨZ! \ho- ]z;a4u唋e|A7RRkdU"w8x6'9{Dfw7 (P$OŐ;D"w0>Z\ `Jx!ZOUO1#X!Ϧ*䄪?1S>G~2]礰俑 ;,SHJRVr\d 4m[O!%T3Aaҷ]bJq]df1*&;w}w}tns7yzW%r?t :>j̛Px*rq]zdHOf _z% 䄨FGP8v B5;)IF1J!d#X$fhf!JQԌ?)sx61;9\bxղN8'ƆhϋߐFMeoS/;;jfzqDRC#Ob~"z+A0ѥ.ona>U$3t'2bhHJjLw鹪FW]^d%FV(Y"FHCG8GGHoK>D&^H4^byr)JII9=88_xp&g9}rшEYR0Dc(vwk7PEIiZOeramHg ʋ [ 9Ϟ/1~Upyp(5/Ϧyvg%&%ܒh!R"<)xZp"vp~YV| |hbAeǧ½;GpsWn]o/dɺwXQI͍a[)V( `+Js%TSY,oTdpt&X]m\ȬR!\:ɝQm3.irqDdh6 bBbf'D;Y|eo 8 eEHkm 4|ާaS$oE/vؠ$XاgȘ=v?I#i}b"P4]oTrUh$޹˽{//KK&LCn bcDCd WE=XX=`CRZ>FmKwiI(wvhF7~,~ ( RP*mLJ$-=R8u /Bb%fc3;LF,1Ed<1LvvQNN|{nB^I@9:/`Rwx=Y x͊mOQkʛ{<}zB,(ϸ}| Eė~T%ݢU;ݥUMp<%qoO?WV]7jӑ Eҩ6 䠤PC$C ^ͫ:#>T*^pX(4G7}Du-'X?zilΰ0z>(Gv(DXC6TN^\ ˱mG}obTP(V.&Z}3.# E*%sS KIy#a9ϒ 7چ< l{= IDAT)[-9yi,wKY$=<}#a{IQ@쌮]'f,Gh<9_r7NAA̦ۖI}D\3bۆζ!z'>ŌvTqm,yd޳= ,=q ]X7|~ 7eI9P;4kVLON#JK0U\%^S P>}ѓN)lzF,]p, [oe(G"0g=(bk/ZWX&8#ayiaS3PQXt}-5Qfxlr29>@ʸd~˂~x9.ȉ%MIe R^t I[&" VZ]/pѰnt<=_pp`mY7=QY;fÆ غ۷Q>l/ÿMxK6^0mGDQ''|{Ha~[7qxd<[ܽ]~?xzh%5?|2p/Q*%eǦ$RGs > m% ND>Z\ Skw4E+dJՌjT| ZIXcc8w͟w.-@ ^E F#I>J!MǾaYqއ#4:uѬG)K{w8v{'ܽsr:!pD Tbqk̵Q삏OXT`ބoeHI+sfqE:jDw\\SaĠ_9ç0{䃂LF4kI]#D/1&4 X FcnvY=Rj|6O䊘l䟢@ w$SYV9[Lz:`_M*Adx$c~b#|ƨM&/.B1iXE4 T CF\9G7dg,RՑ_!:yH"D|%Z\7H_H]"Ո(5Q*T}h%`!ZB\'P!"J D&B*[ H^XBm$D|Eb(kpa)(aP*1*!VnF.'DP+|I'1uS`08\yk$}6@p%+؛*`PȐd$IB H,B&A^K))-$i4 W`)dwfvyí{Y*I8q#LU3^h/~==ILgZ9RF'JKbttݚM@M)$6HfˆM:^~t!-.XlphUPfbѶ#hŸ1nN 'yh]iEDHBc>:9^gZQm{g9FHʢ*LeYRU5h`r|{o̸U#՜?!~c aZ^b3o)^6gX49s7ol:B\>=哟sK:VrxD-w~'=fM5Jޑ>ۆ>`%h@H@#6g-w~[Rei'sy)0U Fa[6qrrDYr>H^.>8!~t @JBjyz>gSrtC2N+$ &Ov\LyǚQɞȦ-kzB~#üt؛p~~RK$BwL^ lvOr~\x{OfLÇBp-0o[\ץg:V*>g>:8[f\9IPg|~ .f,WU1_[rswILRKRp&NhSti?֯*,k5<_ݚOqPkDJ_φ 1{_x1yٶgWK+cq%xNePRJiY_o+k[1J+{,BdFI1ułYVLSThJ`MA-/8=;vbJMY EYVIs|(5Q8%&VrZVM(L_ūےQf/e˩ g,/'>=J} .`_!3`.'C!'5̥`Ae4?N b DuD#ӭv[; `.)UA, ( ( DYF*Gڲ:xm"hP1tL'%CrŸc($jTUS3J&UV$*ztoݽſc Mʽ w C ,%i/aYr-GLb6#N.Jv^v@ 9{;k<#dh %vgOS`LxɁ7 *O>M+|>l}f>W!RqD܈OAۻgD)bsnᱵğ/(e˭Sb U2,h'^2~b4!HgkNf1i!5.KҳA9" B $ʒ( |8"RJsb 'K\"%9 ܤ,̔ !Hٻ(q@ڸx՜_4 ;tW$/2D2(p;w!o*(D,9U2dYͺCbx: g'K XA2;,9'jZ?P)WY&;oa뚏?xAjb}JCyZmCuߣU5F*h,z杳)TeǨJFm8y~ZZ2(j/ݿc<)BR:,fs: K1D%"&E@cVY$UXaTY"6'hؿ>s^bC9Ÿ⋟U>=Wڼ \@lHC1'e*X-ͪKOpCs\ o߾şK$}tJcL|z`}2DZl\ǟ/6'Stu>K\}ײ`CFd*d|sz qj8* 8]W$DE {̫f%u]SVP(>I ޲3[8snC:VK]ǝgɄh  J!JcPU/mB!}eo|mSkoQzY/Z/AXsry#J̧@qlOy:t顒~ hEw x%&%:Oﺴ)I$ {~w?6_{n⹕tK.Jx R)0 5,!,8hDsF1$2eǵɄȋcb@G;uDv5d@3@ULTA-CCQƣ1tk|~A3-hH9b`49=.ȣon;`5svw16ܹ{S]`>S Z~s?–xn/2ãf53Z@޻޵HeZ~/.B&3*1KxW]q>2{e5(Űd.?h_6V#m2d''Dd+:,>K,JV{JP5A$ٕw?7MtBE@d:83 A  o HRɧ (+b-mQB(^d)qC["J41jt!)"O9m& ÇB1Dj8a:C!m[svzs\bKRmʹB"5ϙL4W,{q>MSF 6VE@ $j, РFbXRhk=сoH;yZ/$E (:6&Y|P46XTB&7Nw94ahk3pk6}ko}q>0;P JDi) LU!ʂZDdWMF J闠Q}SYw㟿Y,y)q>ێnxaf[}cjU ~#s;}Yw%5ڀ O/ 1o̰Ҋ?yF ./ y@ O:AY:ON;;FW0UpBs}; ΨW,#Q ֦Ю2;N9GGt-htaٝg3eslx 耷5æ:.fe" ],D=ʑ΃;)ROr#S`4E)(*Z =ĀQ V[|/k_o<`z(Wټ ͖jȕ7_gԟ\كPJ]//w#%ˌ^5eY2!;4as./{?p)ӰOE_CL6U P0ƄwDLQa4 (pʲD2 kbJ^{E9( ]uzLiة$߾7`O(%tmZM| #BLRpm bH^M&[<`)5h4U]7 c"\5Cs?/^T/AXGԘ"7{FDJ )#M3P\Wv2%YY6_wt%TD'ʧP[h UGCE?/ T.z|㐥AW=0!1R|!JET,фzIhoT%(>9f4DC9,(@@91t!P)*^;|=zr1RVCLU!_[,hka:0P bgs$.V v`?ótɵMCƭMdjXc:_bbL} 1%킺=&"EsH@UtgA;3OY bZRkHhg-eJD ( Gg5z %5ڔaRtSoMSpgp%acbZoz=%SQX!B)/U\zeD7_O6;#Mw"%"Ɉ,/f- F#6wv g :sMK7[&3>uU̧Hy{O_]e~k-OX):!HrM67ZPMMÏ| uVp?4M  <~Ϟ1w]A^~SeFITe{,?~bb]"X-N@+fS%'',.x~!r_p-AkUsbpxnQg%Mס+Tc_clw!@kœ'}5d"^3?O_4EloON Q V.,U'Ol3eqx[]WxN6|}@J@'7f,'%_^E2mW=>׹WSeDqk%3h !]ed'%xcJ1A'R̽\X_GJR:ɒw* A`+^Pvg攁,. 677HVЈ+9dQlS1Ģ!$ySlY`5-meUW8%/o~׻<_2TQ 4\y;b]͈>i6-(AIG"R0U曯٭:3\ĭh./{1 Mq<󔾚e䛘җ7 e{Q)kUfiJ|m6I Lfg804^xJ!3&yv&[w^pZ2KN2%n[@z(3 E׬uJvwDuŌO95R N77loW8/(sT^WoDŽ5b4%* @LxJ"fbHh.fd +N6YǢ\ ǔ7' #[Y1;9E |8"tq%`H3#!+OGGAZ3*1WQ: O,08($9SɿIk x & !bɜ9DC{HW ¥L1[EDQ"y0&6jnN"pz蔂*]7oޣ(w1Q!Y8>{D-0v`A\0;?E1FRCgeQ~E!.e H9ufedDJ&=h]$a^=1oE|Jyu˃O%rt{=G˶ j0B+5mA˒YxAXF)Q13fsbZ]<<͝Hޑ.5eAYTO_N?k% P1LX"bDtDN7RJ:_$g>20ًx}#O>z{ IDATZS)q16xj6b1csT{w~FΡjLUy뭷8;xlMv!k,BJx 0NJ6[[]lpβ\.8=<ÏMˠ,(˂j0`0`e JHpBb-Ȁ}4_U'vv Ο?meX` xV!_dħGA(+wG 1Ğy) "ޛڝ˛Ou)7چ-ƻ{LR+;Ĭvu5>JDP,S?}uʗ!KMbywtT? Z X>=O?D%HǻG3OK혌J%GEFAi-Xh=W8>p|_)sTHR<+}sOn`b [FP (R-aY;-\1#vurwʷ_6>]pS[ JrS((cZ޼1޺mK/uGۭhێihɣ:BqzY/닪 g,IfAmʇdҼQeOH R^-2ǭJizBhn6%Y \bE䀥u\(OԆ Z*N`WQJuepsakrztkڦe9aQu6Xd H8|!#QX] nLظyv L񁲨(v͗=}Fo|xms>o^TʪD[LJ[-VH] ]['_/H ZDfSdJ jD*\)vmÅȑ'Z_|L,Mqs⎱}G)M2[%zQv% _̹>"y͋&qaaeلYf֠p LVEY 5ҥ&Hb\s{os .?iX.jY,tKPH}(JE }dH.33iʬ F&.Xj4HΕ]l9;sEl,WsXH)w,9F-6 .XB [/fcr@\e!,W̎=0(ѪM_@V PYHc6OnyPd>$"$])BMGĕ`\${%qqI ~ԎbG<}c &R1߿Nt~(N(l'Ue"ȪWo_k7u@2ڢTG=䣳Stab+v.84DGRA@D)$o\c>~k7'%g<:@5bJC9,SI^CH_{WLѬ1 MG/ǪY&}d]̘n;kYgyHɼWM>1% ϟptJR/j< ' J훼Η(:t,i-+z,yƟxMV=޷3Bnwg>3~ٽLZß8֐(ug=|L {Ү8:lOmyu˳2zMF9*vRRCu;d !t7ӥawms $3{> |g՞h]`dc2@ygCJX-9?Xprޟ7-K14n[p4<:8ќQOJ%_K:i:Bq yK,pͿR8 z%Ŋ  Mbm$!JmFnV⒑]kR|Uf_"&?_($CѲ~1 EgqmGԌ76ymtbꧨ))\3Q%)f6k-uSp06Hd\F(k 'NBm=.t)TPM+X!!s#>"zJRh{[ٝ̈͒eݰZXs4mZsCzYzX"BYZvr4!gP(w"1IPR@coUE &fD,Jup#ER@o8n<|΃wǺ; <6:1FC\fIYZ0Tߴ,/ Mn޻lo(, J9UϞ5loN 7џ^5ۃ+SR]`uCJc F o- .p)i| /C|k $G%V2#^}s6M c]k?_}{_~)JCWBVr` ɦ?G}O¯ ]SZ|[%mƆd}G![mld{!"(o;l ~r)RN"Ofa]8Ұ7PK8[PȆ,Jmqlr{oDA zEʹ:gl 6#6wN ^_Ʃ5_<=Q:tH}9J U[%h}rRmQ՝"kq]RU5"z|YQ(Lؐ^Sbz3ه\$Ƶ`B`g 9y|N ̻mhrji:|c#ֿD_K3wÁ<4Υi6H%S윐=ֲPPd2u.2R"eMr^vɈ]$k (քAY 񘁁K];Ѕ첻S0fNd䫉넹9>'8eX2$qCxemS e$ޥty#>*NO,rTIN LHk瘛9 6 D@=Sb6xTcQ>WНN G%''ؓU')!PP#dtMCOY\?d~)/> x`0m*c&]CzF^ƨ.B$ 3DoTe3DFK;Ay}[+@zD#D n'i7t3| r >79z1t'b`wW޸V@}ek0E) 8jd>_PumD8*_s_O?1 -^{k\  3, "eSw8/t LOHdLxC~bNg-JiFQ Rp,h\Ur=zpcؾu(]"yBD(!ZxXaƺSvs-n޹.B(ڦey19?َ,dh$J;Jgx"~5^{k03E, D\?{ʓ |&4F15R}zkF.yY\:MTm}kί^{++N fp+"u͊)[ д6 $gs\OϽ3D+dHd7||#~?њyySEE3z4YrBYJ<{ÿ{;_zb=I5h6)pTxR GtmD +sT@5@ IIn\]E1\AG  TIY e3x+o p[ ӓӚJگJ{_Y_HBg;ϲn8e1-4brFq9w,lO#6*)ˆ1ll3d1eoJp4/ONwrx<' TE]+^ i2Y˕TIG_ƞ)aIRZ< Y`f8ZjH߇@`/k`ZjZ$ q>,Wg,W+s4.l,k^9 ) ~W H^ٞq)ɘuXk-&Rg-O1,| 鐢0Ԋf>ǯjj5=) 79U[L)yxtٲU_}wnqrO8;m^h$@1գDɡz:GhxY/_b?c]m. ZwX2J%}|fjHc5}7 DJDl< ޛ>+b0 Fd %m 5TrJ}UW~m6 ږ'?|e4ý-fe𔮣 asL͢QdTJ6ihQ3䤤LO/B4*%/y{7*ͽ۷V&?ɏX.llcCd)4`z}z=̦T!̬U!g2'Ī,2Jly?Wy=n2ڜ0st0.Y,&b= O~G8[]e񙰥Z"7%rČObN*uZ^Y{'&!|n3`^AMxy=:$`TӒͭ|ޓ )K)Z R]&(>\TH#fm Bt{265gzzZ2;0;,{?@v5NU=kZ*1a4Ālɏq9:-Z.b D yzRK։С@=AkLVW=.>{M |0O'6y1M#1%yњ,ZpC@㩔B |  'gh3`2"Y%N-F)<{|3ԋo=IpZ `I1X-Wx2v]ʪQ_zᓧ ˊcL RJ6ԉ)o=u2Q m$ 1{-*:N@E MtBΠi >EȠGkڋ)lF7>~#ׁ6}yǷ>xiWW_~O}VL$8g>Re4)Z/+l`wocko/|Z <؇&IzDŽn3NG:wO] H{JEAԘ*+=GEҊC4<|13ڙR :|)fv!?wQ3Oh:pcU]c0ݠ;SUnd S A+ԫqDXMI`8lWa / .X.dsEZg15V2m9[^pzzL{ڰWPՊLJToS 㭚j0doX0o;_lUG38<]:J4dEvlbM,ͼD̽6)]MYB&vFz0 X$T]ό2}e~ږAm;6SvC&Cӓ ,*J l`h Z| [S!pi*S4-jEv2($^5lLt. *^_2%-KM:~BͱfPϩ/j'oܣе-g%??;q>ཇY ;; #`K&|b3'6`puϒyK3V3yΒ :v&jop{)X{W DȐ+<QG HuB(i>m-hf`G̟RyM9yxSܠ}5_a&$ *Ll} X3-muM[4@VCV+>zqvixu:d{( :H4?]fuNكP DsU ֶ)EeS'@+>q7YJ >JI=#5Ւd8e{bDJΥgژq[% hQ o $Y2( ;!&yg {YUW|P")zW{3%f_镢 (5&$ :b"CtHc=l3 ;XE*Lև q1 ``Â,kƖL#ZCvXĝWOUu EQR4 ܾuO:g~>v4]Ed#^:]ݓ?s ," MTy!/nvd:{QGRx̑2l_$ IDATM%a9tu`z Egk/HȉԐ8M֑[XG|÷yt.y:x(-kZlՒf]⍸+|\\H ,m@Fc>|IΫ}u_RLCۖxtniY)Y!BG Qs'k,mеqf82J(|ܰ6$`!֊8(!PFId2$ZF޸[EMg(yrFq\ {!:!J_ak y|s/xgу>fa7՚7^g׾G*tĊDzaMH+")Z$l3[P1o>s8~TG~fU8(߼CxD`^-&lPt%/| Lwđ̕?}m}5 B57e(ۦQ8񎺗Y멵@#\;<:=c6[_go cXFGٟ}u tz:Jk^ LCyp<Ȝ ]{x^Gx дZ"qkc~@ + hlAHZg(8-p{S 9Ã'MIQkÌtD)eQ5'1ڙ#b5v%n_zQ2[Zpь'+f+Cل^z[{_;o>ƞGiqoБ&IK~X/BGdoӴ-uWu`NC}%%J $qH@9⚽`ɋGlfed2!2tцFiSۄJbq9G<9͐{dRa8m:޾wļK/1V5~d<ߥ4ٝ2ݞDiJHcim0֣CE~Wz\k3=po0g?jP އQTZ6D 6TKLxT8aH4Rt`p-PlAq![qD=FI 3(v-ZiWkl滯{oîRf1c}zBE`d0H)cyT5mzn_,JJggت-vxk."|ࢸO}uh)8ψA`HH IZQqQDf1͚6J G:EC2ɗ- mFe4UV},1} c-H&^RI!L*u@X cU^1"')38xL >I>|8Zc֢ RjA-+Ve2:lA9k?V"J"TtL,߳5o.ȌDt B`z/ a3psc1tUjIA"Ep ://nHDѷ68Uc+{D YǛQC.$ :D@ @K`yXJ\a^x[tqēd1UZҮr}"%6+QXɖS !Uwh-Z=~VEŴkG(W`Mp6xvxT`8BE޷mEX#eYSV6C'vW{VL. ) 2|Q|H$یw+_5%Rr(~ %0Q6ivc-[MكAuu yjk0E2]3: !T, Ə\/qpp?P+\&XmHYGXa tEW 򠄰9UH?zt׾>~Ek8>կ92iqxۡl~p}#hޭa0!Ϗ~Z|`e֜!fYT V+~?e$g떳S +S, Mn o"ذ$Z3Nv:8}]& -zㄺXTٿ}@=$PxdÌO]sOm!Os4o70,4H([OmAKLC/кB (*P}ޥ,Y[:j:%$_fHcxR;~4ȆVS~zUR5UYQ!u7Nbc 98^91ɔbqrƦf Rmp6 m{_-i();+/=ǵ`q_& .8[X v*=޿{-w92ޞxF2[Y9vz\ Kʏ66gc-z7z2}P."{֗a B,d!I2úB2![p qYrLb{ nROX+{}S7} Qq9) &1:jIcXxxvdOܠ.׼ȓ5 [wA6;ѕ5ZJՊalP27uL`93h6p=kB/lǹ 00l> x y>vgX"gPIl[ ! Ʉ8a{}So%]#B %FH'(]c쌲9E&-RxJbqHc0qsF]x.Bi-vA#=JeRdh kM㧴' ÇHY—l[O-U]T1-ZɊ-ny2sr~*w!390L@q$rIFb.¹^H-Pq=hN"dxsPBb-XӘPhqLصDQDەhʂ [D砚yEk`}Nٔ'ޢk aR( g3L_Hᝥ. "i%K%FDgZ>xxkǃ+RpbҳM~WXsyTq0MTe<_}=!͔?;l }i$%O+xZR+VsOY牛lh %<'4%єYq{h%rɿ?ጶA!,,ΈT;LrtIӭ۴VxJ$`,^8V4>B'xE< Uχ}_nh =)a՜7ht5BhsZ0?0T`2t-IGkͷh jO2@+!Nַ&TC. NT;OWw,K4OȒ8*RrIǁ5nl{JiDJ$ Wsi4Ȳ"B:d#FI"/pVmRê((d-p iZʭ1;.h!/2(!1`L2Ӷg3†&VHBLkqBCQqzvjY/ :ɘkn G~)WfDhLR˖v T [tqRHdBl|/gƣ-4}4/BȉyKTC24/DFjU-`)@;Gt!%@|]psb)hRJ=F1/P XE1x˦M@#(-\W+Z*Y5y[a%:*Ye -26a=?ň G,Q"C6[7aEKg vo{7WYWE Zۚ_'*=C}Љ[k I`.J)QG2M4L$D #]7,pB1N@~gb;1ZKv{̆ss:[1l1Q_Jl\K[وlrMm^',v& ɆcjVoUUHV S"'v`9gwӘpEe2#/ְ L% {7o;|9o};ӡ ZD9)5KI2p>1-uI]WuCݶ3[ szs/v>q7ax'Lؽqk;`< Sk3r%|@q@H# ~L^JtR5-e37oYXC.d}RbxxwU|WgU/a$2Any-opb@`l4Wxc𫂻_##dCtZI B!o~*%@@S@kr8/>:T[ Zʢł;(dzi6wOlE~e^}\zB.@IF_b||+_7gH1|)U[EnS|8{x3Ūi/Ei8bm9>1;s]+MLq-x׳6aTbIg}i|M, !=M999g F7 b{\>{>,@wE+I#eins F4D,˲j>FWG9y$ֲ=f{{ lm[op};_bƧszMxHPlk4 Mla~a.U` &IB$c#jҚ_Ķѽ7a;|dٯgN^ a ÜD-imj]0+J:yƹk[F ߯Z EJ£e LWIɺ24F!Őy#w.r!!g˂)_m[?|"?6;[$!>%o?dZh Ra D޶h!"MCqu_\ὸHB !MpMz`PK 01 Am[uLH x Vx:l Eؖb5Nj<˨uQʺVH"HI1Q-uDQFWs\gR(kck!4KAy f9l6g0 ^qf h(9}.rLopö5 9jO`u~FӮxk0Ҕ(lvokֳS|#֮wL8l͊I152T˨2"p˟g-RMc v 3Md& kCXA\J{.ܾ=_ \n,(/S2"JRh\6Y]>:l@  blJ#]8ʋ thp6iAר1R5 ˛ t b(TTxvU!GB.${\"7 Gk?ժDcOKׇ$SL!P#c2)H =mbsK8jvb<݅EI2f#h;B:rwٝ3l/+@XP1B$q' PR 0, V4mď3 uUYHiRXm-J͘0#m:dy~٣C< Y ωB7y궣i;jx2[<3l|.~?cN!Tq9Gӵ=a#GKp`<kIҘ,J½#]Guv[_LCuC[9HڒA67F~7{3WǹcA|Y}3wN|ggpgW9:^!uo˿ĩÏ1r?;_"GFs^a泂b^-pv;5G ]ߦOθvnݼ\yٹ.Y.ܺuk{{4<|慛|7!ҡ]?rXknݹ!IttB+tpc7aŜktR'_?gQoP79ޏcO=c g*1@ IDAT:'._{!EЙc;I|oXaֶvgz<^Az3}OY`c7 E(^ %EzmKsͪ]F̛@8Oclȕh;D1t-nI:bM MlV4%.]cӄdx CÚ G#8Y.1R"#-4-tqvt-vhg ^3Xo{F'X^5\Q"Io8ֈk2\G]Ӓ6yA#΢o?#x20Na>tErHGtmH2y)ϷK #xy/WI!>ۭ·)0:Cg0hCr! @@7Gi ;bvNIS\3Y) ?*5itH%J!6$F(cq)b{rj-2A') _!o7Za,hÿz ^KtْX ]ͪv=x7הuAgf;O%D*^:B Si֭'ؿ,m{5KlW}zT>=Hvr"IpBuJXqHIQ"C "BVƺ/+g)r4೷sxxD]ܳY^cn8|R(<:11׮?MUaR%H%RдhN48N(IaG$PnHUF:</F>]<ѭ[ӻ'X2S{_Vk xK_O'3s!H%2jj9m]aeKg^ hEn*:=EIvʒnȳDH$%rVtbA I6mMoo3gM>砮 ur6s~t0 H\ OV:YVkIԓ|ϱO2tJ/%O+pw>;2؆̔m[Z k `**4OQ4M0g3x+݇N9dWsoxbgI6^֘"[OQ(لgONjC_~؏s|Y3[LM}t "? !0EA^; &02 |!./~}S/q&xzі5vH B ‡5׺0\MjbY5%c14% qA'"ysZaK5 SڈRoЮgʷ7{[{$7lyl>ZGkκ-mWc]@SnP BӬi o2y\?a]ʚ.7͛c&>U,𵔽KlއR0!L j9bL CIhM!yGWVo"}4ѹg Jw}F`Vh-I$…BxmsteM4+g`$5˦c% VD X@WcLCJsઘ( 'h|5r~vάi]><΁ !\@%Y\]D8C{|B4 FUUu! 㐱+@E7rϓ/~m: 97ڌzws8<· MYeGIY)rwo $KX>ք Ҁqup8N"QHB:;9!կoƧBnl*|xa]sc2\%1JTyJKEQE-&BҥC%1MU#tπׇGG8,a(p FExރR,K"My⅗98:ETs" }LGKm0]HN5O"lXOq^1?Ym_$) qxT&4D 󆓓#eID$x.W4XBJH*{ui4&Nsœ#ƹS^}}sV)=:e^KUɃs~t2&'-4iR7KXQ|$3t^V%6l`%4]H˩Zj4i?l)juM$3PZ_!~B+ O4Q?&ש *%-M8ל):9ӝ8RNv+9MY0L r,`xF֚|2bE>hYNN8|׶LCHibtD`\8L~=q8͈Uyz\s=LP5-kXbfYTeRKÉOS>]kΓ6-{[(<'o"2mǽo?"=Zi Kp:eLH3'b /흋s}adǁ:R9rN0?i7]`!°P*="/mrS-}n޷}03l/9?Y&5P1K Db.{{ Bz5"cg+ S(3qJ$S1dwYn(`"{FMY{n"A(lQZGhD1;[Ȧ۴)$$BhzIzU$Hcve\YQczR5S5ٌhp8@-E.,J5-)yo1?=a5[#L<ȣ2렮(Ϣ &/V` :&I?3}ټ͐˜04]D4fM#$ -].LLrƒ*$ZA$ Kf3-ZBDhE  Pcʺ"Wlh KyjF Bxc(+՝9t%d;;`u||-V)l %+R!$j,Ƶk̎O7>$J77u8c0A鈪+ba%eAxwľArszvZ;waUI~9y_?_9_/Oj(!TD FԽ?G ǟ#%6)ޅCq>ܬ\$UmXu'zKPR)~=p ljqi~y 7ȽAJ@D[O[i$Nismʐ.RrUIu&HΥd"|>q<65'9JT 'W&[\cAzSQBFQ(;G #:EH%uؠ8ubGKl|N"o!sA%wX$`q*U@ƂhF^{P{[vγ+P4MI!͢U#WF PBD.y0alHl:&C hZ ~R}*k*E†5RHB%:{¿kg'P6vD &ƴfEus]ڦ\蚆jAbb)N2"S; c/}ٽqLg:N'd:I2O͈b<Q0̏Z+'*OZ?ycXu9_UPa a~a/ƳDi~?6IC6[UH7NbZaM5%RzTRX" z{RxC@:YRSb>6XHYO":RI ͢}֧3lߌڍ=pOkUƄ/?~૟Z|ZcQRXx8b05"&TUAk H8Oc~-;3ߗV E )( 5e\%KWs;\t\ckFEKQE ":wZK>h(Єz/<B *BI`y$|pPU/XzDM5̩D`2f*0*GMk=ގXKkBXi9yy߻2g g3dƯǟ]dZKp >y͵}CIO=k(LYF'΁BD)q;G`d42U93%h˂ ήmowo3?>5sΎ&RxDGϸ\:&ge 2}J$IL-10YZd_`bwo?lDn.b]#:/qgE2sٯa1\=KeP"KA15lg3POvOsy8to0E>a cL"Id0=ؒD;4grjo >BҐ rEmZPeL) `GZi4gs)dyjiCGU\p<}puM-\ܝQVUݤ= VApk.\❷aq2Ƕ=8c ! ^ IdRUckoѝ{`'o }Avhn`͢TI(EޅK,kyK_euW;;8[3R8 aL-ɧS+/}d!pn5"JH[?x毙e#L9E8s R\ֱ=h)횳܂piJk#:G3y|o;kvȋjƣ Qw .5")E|elE[qoU{8?=!n$~0(Io7Z ;<^Ppsy7_&tǏ%6w߸CpB 4!NZ4 ~ (%DO"9n|1Xpb"mMs҃HAb)@E4{;[,"/pmي]p4_@ NiϿxK_|`w m`# ciWZd(MͿ?gQѵ)<+4jT`c$*Nkx7op`Az ( ! Lgs۱\xlD߅ wDRқ&y2@%.ud@g9T1iCdyɿ7}=v9ymW+j̗^%/R#%RZ'YRop8q '8G~?68n~vrΧ*m@X;k5& )/mQ$H@!H@oţ@rtB⼢;Dm> 8,^yQ3s_ҿsȶ=vp.*ޔ_5!E rhk x+d=Td'XBF.n#LC(`jœuw.cTdB#AH+S 1WCTx![u͵֚k!$UEcG ڠc$Ci'pg~7ݧBA1{uӣ38czDž Ɓs1:W|& !Bjsy"D €!O7f ;џY/֜ȘfU`159vF5("QKx3.^ֈ }ŝ=dO0"5MpNep/֔y;cx\o/q)KLe>4f9IdzFG?9m ]#EZj)ɄdK|E{H ۞Y.{ld2ZeG -5H lň8(_Q&5L$ex,ȕa2٩'3/șrvQ.%:l\Hle#QrX{ J&٤?δ>!|b|3p4X, ``UU1A ŦaFBN߯?毼}2㊳ ytXQ7-&%) 4c\2 tc*'ց}8"u8kYѥD6{ۑCzM_ϑ!bR,ZunBmkfM2MIMP(IL 8W2bD!glj7"ǦR$ ZJ]O"08LLPGϢCT*05x:Z8?Rƈz,ƈ6tDJ^ݡ]#HQ|Sh-eӢKpU&~7̪aQ/DۆHE+2܆,IOÆֿ ׈ X2+|f6Bf{n/m׮+.q>*W,+\5.ID}J.K2ǝ!7zap2ϣg=_?_'` u?C3=<6;$/+ Di@%I<BR3*bУ3I1#M )makw \V11;Xm{ hjOwrB8|U4%^MB'{C-Ag^sOZ,&It Lv]aYLQp,cz?FWH])'%Rk~u ^1 x~ܿ1g]#RMppvn`v(pDT$DIyg(=mR+LҞbz"Dd-J2C&K|ekk̉d28׌m|v@v#e>`\6`ybv>h#}:K!Q)_8!!X T!ضo[ڦ{Ye,N?b?aru`6 ~I#Ŝm(2uMzM%qj=֊qJRdYeq!̋)m7c@JJ{p@YxMGLJ' J33FZo`a$u(dDyGSBd{;BG9EaL'Es\sk_n!͛8`մ!['>c01|ޓH GЌmz=a\N];b!aF#,qd`; `C$CFC4+=cCg;ɖ[i>,A)U5Yusx6;W;o#FlL[Dk!/꯿J ~bu>Y'es%#1 c>?w(# 5F"dU[{s2l<WJM  A@1@%RR+k,ۅ-xiY^=HNpa%>jр4He`><;3cpWk?}<*KV.ծ1`:WS؇Wc4}\__y~&|+䡣Eˌ ?ZrtAp0Qd0֬Nl_ءrg Tk" aMU0H`+d,G3TXkb-A(﮹$ m"t^s=UR]C6Ts 煝)LwXLD@Kt=xg=]vwݳ5ٳzVBp,Ib05'6s߳Y=&ʸ"J Pa@FW^Љ@otCIWfy0tEE.I5R*""{@wgwg`*8zcL˂~r4a4p|rʇ;<:qqEVuJUoãD:učxH' I*}d~ I$#5 pE, 1ohÔ(5"DO4/B_B?gZ/P{pg 1O4NbD{wWSk!^E TgLLdpb\DF9"Dd"20ZS󠶎ֈr\|kM ڴ=ZN$6 @/Ez!tѯh=fwt' h;Dl "4)Ly28w=$yɳ<ĤQۖ>s'$o>MycYG4Mbb8qX! `>L%fϡn =YwS?>:їC nD15YL4!>5 cTDJ3PZb[Nʕ+IvzD6fͣ{: \_cd[r2Њ6!Bm oj@9hݡܞM'9&3f{;{4F4v1p#|O-QcKr_6ӶtZJ򢤸r嫘9Nݬ>N Ӂ#I̪Xv|b}2+>E+'KTU.\ۣin?fbN?}Jn|o/W"x.7DO톣8xxyڮF$Nh::8pVSgoѝ#.nOP![[7L/Ҹ]ۿ[oXS{zDaj|ȥl-Lap*;os@gU (RlNH>Ru6۹w,khHz\2AͰ3)8Y6USS۞=!ՔlL Dd9mO7ZXAܙ)y 9Ch MF?\~6֧U3DDkEi22%֢6aB p1=BHJarSF嚢*(&Pm|ݰ{v|^x_¥[a{k'GdU޾qy*eB:zVILQIFfT^2n3agw{ã 4:d"_* @ |pJ+h__C6Ƿy~_7Pw^=B*r |u~ᇯzbHv`J z@g{tX?H]]x@j8 eQ dy TIx:/(Gcb؝c s k̨`amzDQغŋuw;w$D"'E}<&P&5]}mGT1gY?E/r;X"cqI@!зz1vMO AփۀGcv;3Vm6]y|2vFķHf?/xW?D|giƒ@hA5B "BY0〓zv7+XƗ SA?/6K~g9MXQ%2ËBF, D"Ĝ64ZzbJQn‹/j,Mԫ@"^jr<.tDc5^7)D>g){rYN^c{`]k%:.Fl,Nس}"/|sdrBvDF*%-IfHU?csBp7|LM%Mw9Z[s-)c~]#pľf7묏׼ X.Q"Bܠm1x+l]E]tQtx"H8a ЊUW9^K֠2)0d;@Js6'+fUd2uMhL2 B J*8<ɨ1* LVZDS] orW:lDǚU4]0ßמi y+I-#a c1_ҵnjEPh`GH.#7IKLŪl:Bumyd;Lpqgň41۬Xԃ1)8Hw= jrrhxXb- +ۈzs"Rdei)D[mli|ޣuJH))d۶ 3JL `c L(!z|6a2*YYՉ8:D 3躆LFf#C~qIU/[bȵ& pYњ[7)PUSNaDiJ$*kPx!iґ,ꖨ9fEO4/~zɕqM!#k}u48$]4.$_ϘY}z~zaq5˟:_ C.}H!6d[I/Ȕy)ɍĵ-;sQ:; _LBz)2HJKwHypu}i{T o_E䆓3vؾj;70޿m]>|A<1#ePČF16#\J >"e)G䣂kW8ղ΃D&V-ZPyR78^ Fj6s أ$PHr-9P߼EF 9ZǸ*EK[ 2'uĽeA->^cO}?gT6^CDD~GR RZ5)#|NQ-dͪ hɂDnثB dC緙8\S9E&#_x1hBeY (DK)$[l  1c[\MYsF`b* DTh+TzLe=^-U8.bŘeHɒfўE:k(DE,d]8K_RBN02m3hE#)MY*PdguZfp O^2rл[l#W ."EKso |${kBHQU>E)ICnd:w[GÂCJ4umjPH 1Y͹!&ZbB~6fiq>ɮDh7C/W ?wpҬhAL&cFJ)R",C*sJ(T]ƨa"'*`R!2  Zlt<(FGfQO7F>3cTߐ%#){w1ノ(f3m-&;e5Ӟ1c4!xEk̫$R92<ܳqoyxJUu5)tF@KXܾw4Ͷ3t9^5?G! x\vo?ލ% :Ƈ+N89<幽]KV$;SRO81;=w>xɃ%[-nݢn7?8}C)$jMtaɬ>#`8!s&ϥf*CZQMi]NVbR5OZJt5;WwS>|7I{)ѣ){WyWAI_~)%TO޿"P| ` )! 2XX-|>S 3̌%^SK$ȂiPG2)lH GHfd3A}'l_B9EӶ,˒`@ɤFhF1*EߜaۀULQqqQ*ɘ^Ȫ"Dd:ʸEa ]Ch{v4meB1AES/5Jg"ƔlEm{zMM">JZCR4<)Uƙq*v^G[ȟV=Zu˭9 \?nvHLyŭɞճX@OXeFpާ~#,Aq A aQdbNR;К`4f:^P!<}iQ(n-R$s~LBaId"B&eNk;r1. SV,+EI(}K [[3\QnpDnx;_;ob8a|Ԩ*(3P(CyŋtG\6v1퐗u󍯽_"ǴJ ɴd;="TD;$#M ]D1'!eD*V[4QH$=E͢ǝ-N{.^x>-5he vmQβSe\ܾtrv[Bw9*[ hLۏ`I%zAPk|XPRxLc5|~gWS(=a8LlRs,.D2Q]n#|ò "gD[`3KFZڐM IDATzCl!dX:|cofdL.sҷA-B. FHĞnN>a[]Eb.a^&XGF )YR$ 6qb3k2,5!8Ldu` wL~aN'Dbxzu=eI9.),rcIqN9z꽆'~j!|sQ N1ehγn8@č+dҢS5xJoWxYzg $FHN,9J5ƒ=.xZfh*)R(9Zn~XB{n2!Rߞ% xEJxx y ~nE[^SƢB=xoB|&v Lw" }kr03ƤP'Xw=7dcsTUd:&ϲw7rbIj( hi=mui)j+%qժs $:l:H<$2Wx /u s"EL>p""FMB iҐ?:NXo"ԭF9qhBBD[# \1KǞ\4Z{zR#<#؞UߣF a ,HƣuYPI t77{;?.gszN(S-ے#ˊՙ2cgnff.&WSvʉSKqX"SB $Ez?<\4˖z>8{em(P BiBT)-VWGD@'aFI|l|(j>y5 B+arz ]ć2T&Q6к%K"d\ߺ$w=6^䚣E!Hxo% {>7ok?.25"tG^3ôf$ &cjqR^hH?9 )4B |\h1bt0:YOD=^&V-E=%ɲ$+d5s6&YqwPdڠhf3Sِ;WRo<(NoXIGjU}γPn]ͬi8X9{'3;. CYApɿ3<}7tȨh)%hȵC#͝!G6yo~}LW-yY࣠ijBLlѾY8ƄTK6բ08EO+%(E(-޸Osȉs%cc䐵gu2dof#N{Ģ$-fkׁez!-A}bh EJhELw9gRv<)[:O&L*XXf,qPP7lV %R">ОbJ*h΃;N p&0g;S}>dVu,V%n g25;rYsxpD][,3 <')G\TQ"A hhDĻ[-yyY'U֞*g7H!?u޺ix&.S Rz"T8!db4III>y Γywia#7}~/UwxrM ɵ#"2F VicS0 E%T H#,'3=Ø>EM0f-'Oe}33/=kyNY.̗+f%F *#[kqVΡҶ-1!`%|C~޺QCMy@ǏDLc*wyuxHK#dZgq.}i\i뒷O>@F^F=ߺkV%>tSf%[}Eؖ!'o"zGSkh@Cv }&6H!28kgQC?e(TKju!| ؤ ):X%o2)y~\q.4\{}VJK66@ 36+(!&-kg+K^vϘ99Y8bU#Xoxh e:#B2\#^ü Lb!BK79BKՒپ~,m[>MtޕBtdm>yZG :\'u6l F+Z&ƿLKi^;i=2?pn/>O MSp?Ɛm1'> NBJUBeQBDH/WlH}K$(X/j"O$gӦrtNuiG`EbIh9h6G(flɖ1,`UW̭ UUSYZ:BmϪ J!LVJ$<ؘdMӠIRdF39x[.1p*װ{2}6-o3"ikvrʾQ<G+ƣk@dZf뫫4 BhBH)($FRS"Q*AFISUD將2`"8(xŠUH5PBXHxZz>dtEEbsbx׿_3 PNb}RlQMzF` fky@zb} mM& t$DL ZTHIW+׷/s2ppzQp`=hol>F=%>&PD)y݁ASZ7d!CJVHT憠2V,e2 Q`5\Wyc0UV R^K-:[p㧶(.[vaqMDHJ)J.=#*O)ixuNSr4԰sƗw23Z:R2y !'-[y;odI̜⫚1Ʉ~ yy .qdJG6vvSNgڣzr1*Y-GON.ޡõ-uږESSMZgp H$dcP ;gq!CDm"}2coﰪgMO9,*+Ul>rγ'`#lQ/M+ֳ~dubP+&[f=p;ۊؽ"zB7nl[GŌ2`5QS{ 8x>{Y'!uj1u5g0Zxrkk$J!_e2udʹ%Ϗu,Ϟc}Dׁ:~a)L#~gQ$|Dm"t6Q:g& '$g$TZ&G<ӂ< [|+ LErP{ʽY|•:VRڻ$3,ZWMXEpbs$!;OCp=|/kN%JJIk% 55)ddSgO^ŃдIupY_\\K4Vg[?d*B-Dl۠UCCh'W[W3.%q 'jwC҈;Uo}L yxZq5HS-ZÍkch*-RH"#yl-Oiè ,sL)rw^`d]4xaJ((}Lq*v!,KPf@ibd{w#%XKV1$!Mu|IF Hdp\A<28 UVLllnj٤mA g8, )ŜKT%m;"D)B{I .FL|4W?YO8`-iRcWv˒1k NVze>!J ͢[u/ Z%pBL*f㹹w\sbbkT>&RA,ܐP*Qc :K5"*0nVYN.$EQs"EtB!0µʷl<ӧwS3)&EID "AH@ƌ"'Fu%?v ] ^`c|߿ x&wޖLx\T\ d I))CL (@jĄ^{: Aj6(e0ʱ)g/=/>[h~vCn@6w7W1}w|ICFJ+SnZG#Y{ Z_ߵI$c yg9YfZdZ&,l)ypC )K6c¤L~^D)p6r|SJ,9GQHu#ж-UUaAsa`}FQbP?$6XG$M}˕R rb<4J mD&żx4wPVaScV6AJy6_?cR )~'.(#hkg..ݟ'mlE!{ >&oD$To(ih@E"/sEZL\$ؖ<$E 9x[XרW   kQ!u7=bQIs7y՟F W3Z8q3Zm'$2+)6 b9%&?kyRon}KBcѡ SL)h)03'1t{&@0JPdCt D-q*/aLiiqR%\RHi+R0 6L+ֲVQ7-̐g %O<=b!^K/?a)_퇤?emsLG#1.`pl8Ɠ5clom}ރl@Ӆ ͐/f1[d^Q|:&Tw!L+ MK"Aks/ܢZbf^FFc)xlkw15 3v2~8yk  IDATi/#C^*f.0EԅdVƆhR[՚$Z$ykӵ!uL4qC mD@[>{U^}3yLjD4ˊ#,)w"\y>O-y\of| '8yjs]KyaBp<8jX*1~q0^)`#Hҕ> xʌDHWGNCwA syy*DX^R~nYV,KVU*Bbg^CKhpUza؏G i,R8Dy wj1w׆2 0m`&rDzq@mi0zZ?I=?fA4to-$c ?"^nʖY ҷX "cRڪinmX؊i4)ڤm#K&zh@n3YCbw"Y ϓE(W&UK،ĬdY? KQrcf4ѐFX9'(-y19=I 9hs@u2B1e ]d" #BRQhtFu2MwCp\#ZKH)Gcz![wߢ3!o2Y-B/m.? 8`vri}=`Χ_x_*G|J{X3V餥9g, ;ܤY#JK,ټC|7ꏒe24R$O@aW 铇kb#QHEshۂ=؂0 6bJ*ذvp䴦M_/(4*`A2LZF_Гfnɲ` |Ш6j+F u .lcڻ&0t<*Ђy3l9ef9Z]'pNg31=긠]Do1JbCķ G 7GD8~p/p+(}pKOo} 39M[LJ#<`Pb<(tTm K;;EYl?؉1cIZGL [AK~Mwh h'VguLH6iR&ɋd32;;ZkN yާu\x*4gn??f~rʶHg1@"A6%iq4E[M޿[Ckk"C Etj2c,qWaI m26c&K(X:j\ yaPDZIOH1%=O(^'Q$3'Ǽpe-вE7o\ØmVlL+Br[H-1rAviK\_\?>\x/<{;;HB G $=)6Cz`8}l-غvw}. BKa4'OhmC)\G`gkP/TRCpSPD̉S]t{!$Ze uJMJw0O`>}b,#FF6 `vyEӴ[^j/8[d1fL)(N>k!xbͰXE4W+jnZe:Of@<3elBHs-~\UՊ !ȲRk6/Q-?aK#~x|0Iq:?|jU-3xafL =zZM) EEgwyZO_=?fŵ 3 8"I=Pg{>$+"L:gFTrV<:EwoNE|8"C J@LmX]N*ޱlLIhiM5Ҟ0>yx@Ku6R*rgdk =&%,ɋ]1!@ImM8bFტCt\J9MkLCj7jJdPC w:k" .%_i5vϽx~._Lds\gLOlI>( G%cմLeV[.y2ʕ'mEw7dADI ^Z".Gl`د; a/pچ36c(,:xmC,_-H0_: ,Sǭԛ§x9um 79;[uk[zEmbCn?wp x1FfE^1Ʉ: %g) .1GtW964AQ5zUQ&hX\3[7?fg w: Ɣ(c"આ`4 plGt,A$K(;(Q?uQ7hą/e~Rq:_1YXvy8p:CSTIbI#>:!AƆ q> x(kꋛ\c0=D|HrRcMNZ3(hx2?㺖ҝN-I P*wVO`Sh3y'A@5Z+ܠLiBڣ|dNL>lKI3f.#`T K+iG?W +3ں *S91V ޶!!X۶, fm"`4Qz>ryqdQ|4s>̥qγz`e>R/' FlT̪..DTaS;s)"GyE!GB`QEKܔc2w(8̕ SdHep>QN ^$#в5( 1;j;՟<{;4M ҙ=1Qs>ZP;9'iJ6䄐S-nOa6 -$PEh=vfH1V4ZrfD\Ƶ>b#9+uUvC7?s>dPynpwx8=&-rոE$n$ӕ0#شU-138mU5By g~wd[|Qaor( ~.u[w_/펑)'\)Eo4c%O)ܺ:f0mǧfsWK′7@'K`wrmUEw1B(5b# ,#|"TpQ@79uxjG^)vy1emAT h9OnQ9eEp, ~Z45;W'ѧ2T(\Jf:vikWɀc'jsw' h.JЊvLhjU0y_,x{o7G3ݻ/h[>MȤ!`* v!Ti ޥq 9K(QZ`mM5T1kM-#XkcWĘLMΡly&mY9\R-4J4:Uw & "SU 4%=YW%",ѺH%3krpTMb P2YO_msX,ZU%>y,J(b].7_ZQ[KMv}uB> g2ul,:?o-Sc1 %g=g2@e BRnǶG_DJoo )cIE:&d* 0ݦrdzDiWyڪm-Bhcj%xO Y'xG=?5\qk]ϸtrK;ĩ՜4' z97w<3<^ཹZ]y6 Rdgb$xߑS!dgXJr$Oi= Qeu>]{J$0 "A=WD-21#QcHL)%Js "WUH w6=\Y6MEɬu=5@m1HV3sjY3 9,U+zBy\mC LAmm"cc{DVv@33?MI+oqr2ecg;co ?/_G?2GGG|+<$4%JQBPf())?*Ѹժg=LiX*P1H 4yA^FhC\Z8=Œ0 %>ELRdn1Eg\Qyf5[K::`?Դ!Ɂ^U됪ˍۯ.r W|?tzD0J{nDltNi)JJ*7kVOVٖz^{Wj%%Ipz:h7$xν4h% UB.9o0CV"ka6g)(DK9ֲwuȪ9|:]F/\ڧd0f#>ꍗGD%/=Y=Ň9^. tJ&'ܣ@Erf`UQ돨s@f9;dB@Ȁ 4=W\NY5ׇO-c~[c)y9Hbb^7E?}b|i9yzssxc2!|BoK&Yh3d8d{Vd%0_5ahrSr%1 8~ѱM`R?wp=oOh&(,uF!e;H$GM&G(CM3-X约_'1nr:dz e腈&F,L514Q?ۢ?q=*!} TjN*ɤ!Ó=_9|xقq,W޷'/TUZa;$`wEQ }-sbT"җ?hD&vkz`~vFSuskN;6:9gZ>CdC9:4 M`dꊶ) h=a(HsTKA ! Wf{o6 cKʲD'<<4AR&X3B&E)V4m/sTf`5nE\b^ ےܸ=GH۾C!{OȌ&SeUEX,[!iTY ,>l[7q$-npOr>okhl8|7x׿Ͽ9}5 pOubEj|'ۿtIU-|ut-rme}'_eǰ?a5W|>KWo|{_OGW~L'=Ad'xђ{TNc ɥ@BF"t 3F!xOt:5|-;s=~J >\HdQqVۮ: UEh9:L2z ٍ1j exB/ BLdD%b䔞)3~NVSƺ?`|b&>FhBL<74mҒBf!fxiۖjE r?77[ 7hm9;V6\S/%&`x=?!8n9: yñOа;&1mG+(fFqu/bSC>g?~LZ#ihtՔPzgMJԒ(kjښ6F J NOYۏL@J&R8i`msC ֵLl  2D ,J0 =*ɬzpdʛx!mnp-ՂǸǯo}[?.㴡,J,#+4~^Yq,W+|[6b/fËېIo{|hEAC+(J!Ƃw&0}:'LhmE:a̔~ O~g]DZCkr= IDAT"ޟ8 B}FBEM51ZmC'#MYT[KEGe*&ۃB*̣G Yʑ29qX´9$ӎb`L g[N'T@+_zJzC@en|0ilsh [zgDxR' k\.\ekWG) 3Uo;/%sԮf-xwygAܹE-  T|HA02"PȦ`[f`IIܽۧ M DT(-O!{} XlfGX&rf1M@|, bgxt\ƴ%q `I썇d^)OE G[۠2~5׹y >Ƕx籶U귾7~2P[]|(hΑ+ fu{F~9i K,`i{Dao vF},GI[:uElA[NoHF#{>b9YC'p(1%7DoA:-(rdp}VRa֢:Dg0wiٖbJh]I;A'!ؤdv)J.adm$HeNj S'O9;]e2EiZBiuE֚<ϩUB{E^5Qd9QƤ-g&tj:3uM}EL׶h V%ֶp{vBGƐ!|8= t:$.֍Ay2^>#O#1RÆlm3XR U*i3,g2_ߡ?ݻi&}B+YƗ.9;j;l|WYX@J2)puEϮ n# =ϿWJOиsMH#YO!p _d}ݽ\oaYHI#3Nx|~|O Fpcbg%9.ƈX[o5s1ZH^`i"}D5#FGURWbGbBWI (de>D NF!b#D XkL *欝#B#J&jVOOXLf=^G_G tOEss ]GUAu=D դ:4 I[[=T6ZYmB7JHHVx_!3[1/e\}ί1P;l{_{ 7D vЍѹ~Pc߰sA WD7q'5r?7g9JH&p8}ɜlÓ'7^d8Xz&'-.Ln^W-Qz, "hz!6ýKi)ON4+\U##H2mrG"Q0)rhqEpcdNZf_A7Kp>ICl67pJ <>PGK"PW􋂦pmBH-;WBE:Y 1H!p>j^g [\Vie]Zxc|+WwzdՍw"{NYΦ,gs ֶ YGBh1eYmt kjSB%x$sIӪc xBH% $ua& 7&Cib0@Ȉȅt3Kq .] 4+8(C6 ɥu6@h[l%D ET׫yS3XNNRZ2& d"ҧ>oٯ"J+Wmv g'ĨD=tx kx'籖hi8w~Oq/4}Oɳ!mWܺ{8roeQy ƴwcS^8qËDftl)Hc0,Q DjhZK+}+5͕݃!! Aa\qoL^16 dJ&:*}F($a;ddv}|ڍ庙.6˿)b'"Mu}I1$|\&3}!7X4u֎pGv|΂%]!C;<`r VMCm4 ηXPYzX)=M|(O\Ǩ e0B1eeFok {`0{^[u%^JYv":I&!ctc1F|α=S@Ҟ$;@q%8sz´) {® G{K+z,VKVjкٲa7Y1zPIkAۺM}:DB-ղJWJX.X.L/؊#2s îZjwuKcT֞<ϹG@'s,;1I[*$do/Dr\r+=.$-*i~7?l\{ucGl\D@9O ։@4]“*!kEi 9O}xlkq!"L&ݓ0>;dZQ/Z=+&͸$3(m{rRqXk?OIDmD8m4pmXQ._޻ *Emmɤ(sJ*xj6r_{l_C?P) ul'?<iv*+ȕ"ZwyT-hW69I#yze'd>(!vqђeF>e]C&Y2I|Ů Egn_|QmAITt8xoz ^*7n a,/PSQkH#Z1[5v8= $}a=!m2,HZ)EH!Ǐ# <2_-)U-4RX; }̵>2ih+ 0u3Y,4 [3KI^ `[M͟?|D#ъ4 ҝvdxY k4 rGߔ<72m"m#2@Hc{jm99vbc+h"-F W+r)@J81GCx05QCA4-QcƁ~31{TS-29>ȾҟCBv):K:˰a2Kah |<~M +Mu &Lqy{-*\5$ueC (XT[e 0  RDbpa{khاiۄ$ՙaCKIZ,3~WM MLjcT2_@Jf%kj>amryN#qEMxȭ;7xk  A!?}Y{Åߎ]1~ԭ{%R&`1ܸ֊\o{EC4+ IDATLKR.B25&mbi8Aj*7.P*ғZ+ ؕ![>*zRGh=ŕ kh" [=zÌ0G"P2( >4`2 xָ)1$;ۺ;9yύk{nt(.(MgCxv**5|@,X%# ABMplsfDᩚĚXS*hH Um,M]DrIۻ{?] mEŽ].g-j2ĖE`ކA,x9čv?z#%{b*FkM5Z[Zk\KvR3p_xɲH)ȄD+(ochXUMD4ErZmyB }LcP9Q5u]u8͉bwofg62.T4LɨejBMNR'!99M]hL?4R iC$DEIyM|Z|/(a̢sxH\yQbK쒒;"9YKɔSf{l#:ZQ@MMO#mG=]1J!"&!uJ7 42\|ar2;H] j3# >@@Z2?9c3F;WNq ~< + i*1yqo@y1"G1-s0ƍkaYTdy$..#_@H- \]s($QITv8|t`Qy@-g3^ܻ‘,Bl{T,  R jLb'5ʑ5+j~4Ђ(=UcAm!)sDH1ZerRώvJU2NWFЛ& CMEP:镘~NypEڭp9}?x`"hE=X{e3,لnjfe;Wwt %̑YAD%Y9T|,s{'x (FJ )AѢi {ȴ%%8}dCL.11b:_o3FѨO)K Q.\?+gO7nBlW̬d)ٔYTTd3,9EVmIV w87OiKlw y컜֏bFqJRAU޼L[Li9K#&G dP"z*G]J`ʜ7c~DzZKpQ)P# T( lKBdmds:x[8$;ۻAƱ\8<<g+~7`MhnpNՓ@Y,N8=;c:_rE07G{%Ea26EAd` kPʐe,K/, ;tлYB77tr1>THg$3@;׮_ y?CJ yX]d`hMNDžbIAǠ(!5Gn6] í!t~[>,#(&P-IæM a`#42ljI4$z,+2wj&* s(q"gY4s^.wxʿڛ?4ZL9 EGȤ7s9}.m-S.9>{0_p%^ 1fHQpKy-%{a(?!H56$}X)%hJa/kTՊ`{y%U݅IE$zwݛپ",P}1e}[T19y5[FEf8[FhLZ90,kUU!d0()ﶎQ9DLơ' +lj-@%EUM<\ Tth12lo(02ꗌ E)%队qlwЇΥ@gk'i c7'An(KFB- sHX%XdDёO ($Cv`\BG]RJ֌Cn_hk Ez}ɡ4m x۹TU! ^6<9zd6g\op-Ds/_{ZKD2hOEAʧ)Pʍ4ms{9mWL) Z"t`}nx$M(MHx+60hrrFRC"*Z^;}g.[Eƈ"%3xI0~6@q';bP[6GW$rgV讳(IR)y1ot=FP1Yc*Ș4Y$ KFMd<"f^QD GĦ!րרlfKf O qΘӉE cħwAigL"|FhkDVP̧Klxt:u[#ɐΆԲ$H"Zd Cb_{&]K>p|p8(dyd1.*E KxI2)sVuOܰu OZK$ys&^!z(k&Ut>CiMfT-^I?7ZVKb1[$dHJ1} (%1YpΨWh_y#v._e2_+=QWB׸rmQ6ؒ/%@PULg3֒iMXrogWV &3H)+We/[?)~^ (qqclڿ8rƇ}X|~vQO>JO~Ͽ<V5'>lVIS( /@C!ԙi$BcAGId/}7aaHf ]w*EL,?s~gIjU?@:ic^;MLz-~2 1YqDLpcEo|wSlo[?=hR]RGQ =ۏ٭,׶n]Dv Ei 0l4f'ؾ:%%ƒ;HֺAs<9. ptL3z=z;d1?BQeEE|1°X-JmٸxiUa*ǻ@ӤDhm@̩exheCJA,3NF'Wnau:M jƯ%S[< 4A0oZ'C D'] Bi(פgHGPq2^SG^ԋ^/@OXg*Jٙ5ˮIGu8GکKy*`r˅g[.;(BM"#D_U bn9~uRP6I!ѧUg/(p4X!NZ!b)řEХJ͠ף2'3<~J!UsI,{OU- VH FgɔvSD޿wM6xk o_-qici|.{o}ʍUKWW1]: AOIzCRɟ-`4/j&"bAM=>_[_ dB]xD$(ƽy#lK>I&|bYL~=e,'ӔX}I">I=:ΙI$L}O8;5"I>6 TDk1YrΓIs3`Ԕ456PJi\8|ʽ)Xp1Q bD9%5輤(.us2ܒ*gzm6wn1Sx NI?=ҍۜ49'V5{pڈGdNf2=&9ޔ*K#PB "'(A[lX-ykJQ}(:E9C1od+P(k# h r=auNj{ꐬUNҔhd{o] Z#$[]%%}LUz2U=e{L<#M^tɲX+mNޫi,ib}وmc0l"ë4GA RH׮4e,.$6hPZ6uwtBe(]>: e!4CCdmYYYap遗f!@Ȉ JH,˕RJ;;OLąȓEMLֺg_cyِL1^o\ڛ%_߄( RSVm?>x5y)O%!bAY SpR{(Y6׺D.udY%?sK(Rq)qD樬KrG.7|'l/%Hc[4aF)5#H~^dH0Iyier*c1M>T|Q/I?a,VMyi N)ovO.{Q$S[DR rAA/*^۶7R\`"j'fͭV2-]D'_;[2)MFb8|hٺ^ri%~;K."UЕXfs5+0/kB:" ]4[-Apks,,8O0LI1ZANVy`%|Ƙ?jn"BD"g{oF/7hYh6MKQɰbWZJ=>f9S%F uF姬VX#s|mt>{1t bF7&'T\mp29d9%(K}XLxrl7:Hsp !xRj.va@d-h Tp;o3m Xdp1#Jg̽EBxYz1dzQbjm$54& D659G,umb-)unI>P$J&<F#w!LEy]?;BkP*Ed:4h|L>e Y^QVXp|᫖0~l{̚ bQ'ZPW_g5]db|% Rwџ]a%><Ɯ(J BD4s7 v [CLԪLk4M%φB J^.W3P,x=M)}im'EB"}u۶hET[ 37sW~F+x}N!Kv?x6w@KrPr +,aprh t~yR@VgC*νKWE;$ʜ5Ǩd(& Ԣ@#JQ1[_fTP,mJ@ <,Hw%yobTG ZӽdĊ2=<K{fxlbUB>J E΀P7S":m>t y@SiUǠR !(z;7vXY/ӽErQ)GߦZ8 JDPb("S"0gp~?(_ML&x UJF1M% F:=M2y|>FZr4;.>zzbQq_/rҘf1͈f#`e0(Й4Xp%V67er<_O8:Qꦥ0hF!׮_m\7QC'<}B[7g.DRUuѣ֒}b`XZ[k#B̧'VHs C 1Kn5l2ègFuTbc"]B1ֆ}H$F)cJ ݽѶG'e yQAd}$QhreP2CuՈuƁQ @(PBDXf%ާAQD Ƥ%,4`ɤ鰿9%^ ~b',VGz9 24W-`#*3ޠ?,$ Wnn9Ɇ:Y4SQw=3W q4Aع1&/l\^G{Rris97$.O[@YkC:1sݎHѶ Zkx^<5u}ĕeK8ݴ6w;MJŲۖ^ jɢցw@?Ka`__d2IJ鐗^zMl {Txç|!'Nǟ%1:;`٦to|'hiy9xoR YQuZd}gfۯɩ QY ]?Y%}@E t8]/}R#\X;fV[kmbꈀaskRKFX[ekk>|{O"_FW3,dOJr Ze&LJ`Q[l9b(qa}`a-'Lگ~Ajֆ, h}:`3<zzRK;x}lKmַ/q-6Y+yGh-FI>Õ!RIfłhR!}wIܰ-˦%DAmI^umY4-˽=T<l( y8QO.U iȳͫWѽۧYp=q̬<?g>yQ^{ow.jB Y`[0 zև3/%uwɼp.;_S\4Q'j1eR<ϱMC@'@ mC I eEQ$Fg{ݺ…E)M6Gѳt#}SEYiEjW _ޓ 9+7_&7,+MҐe9;9yQ=ވހѕ'=ǻ| B;6HjN-EH>׶,/"PX6{XskeD!"qvpx- Vy<ޔ2D'@`>CO&yQ/ox:6!)elh+幫H8jN2: vL@qyX.NL}!?sے?E ( ZSb E1&֙<7\z9#*CdBJb}}~R*VVVhꆶip,A)k6͖a?ᕗ,k\w oGG\7YQ zVL$."ȴmwKI0 x&FUV4BuJ@i1ZiV/m$5.Y|Z\C :Ot]g\쮛;E=zZHFiJ%m >͙g]twG{R PFm&#1l(>cz*YL>T9P>Q%!v.5|7L m^Zas'8O! ɇFEMW4;==E-}kYņD~7[ַX$Y$GQ`3Q;!yM\a!:0Ti#c_[Nv\< %=hl SxMB&5}[<#{ тZE8dhxibGCf(Y$~͏0qkyQ/E}zu88 xv{ϔ؅\dNM0S%&@`Z2$;)_&1Ę-!N5KO5e3 v:?mDAM72b{xmg-:*m|]hI|KXLNT8CgMbrȕ)z#c&qxrtoU & Y"8q-'qW;B 0A<|PEEg"Ј\cp"7" XPI 3MV1"U 䃒en"ۛϗO&,]C{DΝOCF"I{#9iɁtdk{gOĩ>EULwl@@G*.vႰڣ.Xʼ`A6H͡LKs-1Ɨ7Y߸I\qmvQ:ӧs${,*A+K^!W!yɀ)?:@pfV391U4>zGrDO!73|FwF[ ̢ @8~1b>"J@cD@\Kḡ?O>< lphEMdi5LĜ=.7ƛqY!] HKHGh8`^-yb㓜d H$òd|&bNTy||޳2&Q!RS ݺhE9yJ6lveW^[ 4!4Ę,,K!\ -t-($KUL|&cU~7>lBp)^Ykg`4p Ӽm>i: O<[tǒŲ6}zDr1ʠ,h DȨc (o[)Fdxk0n-1zf2?abd+[* Xcfy^ -]}~y0߹%Ω}X E EeJr5dK͍Jg)VDbYrK9GkXgPokV=6WlYFѺo/{onn-S&E\Ġ`樘oos`{ ~\Q>A#Kjfl|,6oܠq`Y٫$:3]:t Rg-EQs\G%AnώM*|6g{c mҸuv~8n8PR XҞ4dEs9Edʲn4ҠQ-GDl)R*ـѥۘk,#<]<,.v) (R4|÷X@6@xdž7y;ǒ]^*(fi|uZ׮ M]ӏ|nsN!'6rKto '(HyYҁQ$PGugj9K|SwdoGp1OhhR}HPhEI]Q/+ux$s4g/OqJOCg39ŧ8=`e ݱTD1)MPXD2+O\RkA#*h]W_E7K 2Jvɣl,>g9_1_%%BPj;mMCXTTG3fSytfm){%xjY}a_dI$O2MMr3-i 1e~a=)xGs7[rNkN!v:㎯ؗeh;e@Xm^)ڎEspYi* 8d /)F#do>B) 7xr|g`j6h#g6#£20%/'Nv>$[BPj}"yw$S+!F|6=RrK"OJtEArcHrѲa􀹳)4FZʧ [- Φ;Dr-8̨Y(yQbEu̇" %H`"7Wx3x5z&FLP4@2&IHFf=eogc 9ԜU,Ij5- 0v   ~d~00 mI(*5δG?s#dQ Ul.D&2+3"2s^~ku5kJU2uJb9G%BīYQJQSd}Ӣ㭢ZXB 8zcWI IDAT33D*d'dL85{eVʼR$12Q!ooߣ,Jѿ3{Hi|-Voq@VOTͅլ %i(,)gGBw^p{O|i)Rj41tLC`XCX>n2Z+[OdQ͗Jgܽw?'3I#L/63|,ogd*w$ nDzތ\ϋw_!>UYR Ge([O$?g<'\]^SO&lbu5!ۧx]pDDkZ2YNRM7{8Fy#{2%t7n+dJb_3TQ4LgYfFfR \Ӵk5e-cVD6->_lyqqy2֗lx#j-q> |t@-3wh%480bZ!cDreu9ޙr2j0ggxqa7=% Zib<2#s"w<89?VL{k冶λ=ҧbR3tх#ϻe&ZҔFFq+X3 !X"hto=j!T v`ev`Q|Cd8*9?`XіJXz1к4-:~>P8Ê`(ar܊䎐Tbx Z')2M C4$7ywM~L+X2ѷ7Ol6 mz|oY__"x KB7$ԈE(&7Pg紫%\G-d@pMdӗ v(Rf"xZ >E*za¸@7XkGx$"ھú)J <#/2Vh/Jܩj!2+/_ LlLU''/?'|ppUKe̔D8੝KI Z[2!c_ӽ"#V\+*H! [䀎yfs9ձJB"\ 1xLoG|ǙGDI{r3sbxxI x"ӃxI)Q:Û$f}kƓmD8O4('+b&$^;t6a2;d' G>h nʒ\uae/~14TBEFᒃ=/j}~חX밢T7ZDy 9"7`.O$-xdb`,Bo۞lY#B@)m;Sx/$ޅ&5%6@"uv?dZg99=%xwxOd6RXL#N-YjR ?S%j6)Bg,b#\Շ@LɒfK-%nu9 w޾-~?t`Yw8B&zh{B+\z`U@12="^i pM"?>㍎eLr~;/r|Bi oKzIp@Xq)T0\nNx R# q!HX)'(ްi`QiY?>{ˊ2gb5~U364'97yv\B6x>}[Z$&N[] ؤ=Fe}UɴEH5^E"_'9.YkS8]oSwtUY„kdST*90Q ]VaA1^r ,9Hc*ZCvGSs;&sB1E*SWt(<;Ӆk5@+瞣\qX ?9Teh:INwzbL0 2ɰa߄rgE2%_αƲiĿDͲ A`RvFz:zɔKg0C->Ь7Xk_pкĴv2جzx;eoPe!F<b =9dEMDm-}{ xj|Q2QqdƳLNz N%YἹ`nhJB#H\]o8 (r`ݠwB+K֣Avbr*0xv)̯D1#;M{#Bc4QQ*[I JrY1-y&Lj<O lO%<ځY}|^Qڌ9Q?J8o} U'Ι=;`ʘ) 8ӆ*GO[?=EO^*S>uM0`hqbq#O??6| (_#hc͔b6gxf<,Wsu cW!#Sg6iA儽YP`EЂ$JKuK.'| ,S  YI[,Xyo})ǬZƓC;ЙLQ9 Χ_Q$63>Lsi/eAIXH&)ۡÌne1LkMIwͽCt&R,8>]r, ): BA-QY Fq)F|loN=PVy#)jw ^YHAYcq!!1xu^#@h}.-JeNJ"dr@J)n?c`~tR*fYQJDT5~fVO(9ˤP5լduۮ> `ޒ ;.~D MQd#JTHY ] Cti<ڮ9o3w.ъ7h] Mŝ)368hWFrf@8Ο^~}̓1'5JQLgL;Kn@+<^ x IIk!{!@t1`1}ƹA6R)(2F*ͬw=x{ٓ ۏT7XY0?YޞkI1+nJ!1w\12~.H >*0*nM!% ?I|,3Ƀ"kQɩW[񓗅* s"/+RST>eoZyb4[Twϸ%J&(%aD "AXJzqE0(Y7*M>AϗTyFyZKQ$78<ȂJ;k^<93#]VB Q2'W>ZKCl m9JeBf(IEH~88|y٤y]3У+4"y^g /NΙ͖tSN?}}`e[mZ>N^3ᅨ7)dh@k>ECIDbal3M&t,8t71e\sZ3{sIQ2L8ܟ˷ѣLx~u xCĘ B! 5X1:<|- /{9yE\((m$G._@NT/eJ!uϊdO'Ȁ 1 W+\8cWjwo|}NNOSId`1#3 >{?oΞ@ Qh By>'w![ɂC _"(J>?oSI{ȘRHy ?\n)ݔbh'\n2%R ЄQu65_@p>rl'BR@G\t}R2:HXwkhd\^+FyA2*Nq{VEd9~GܺXGza,i&D<[x_]˼ܦ)y4q.)Qxw|?{w*y6UF 3+MJ@h7t9G 9CTSV/786mdUI:+ :5>#fUDԤ3ԣe!"@<{̤t9m 6zB4,"ĉP1p#B)f@yjjxv[KϤ쓏' S%8 cHr ʢر=ew7[3x7Ffsi޴-gl{C;=u%ɕôטa`d:Jfgq.`\T rh"XE$/3n3[fKJe2GDί1{Z,RTSc't5mF h[}KKfevفMeV,󜻕3+q4ΌfcwBNHzt1]LV_5jD_vxꋣJD) ~zCR!A^@j06\n@:\e9EQٔ.>|5){@y7ntʊ i4Jk4~k9Gde uͷ1 IDAT0Q3-%QFaH, Rc"H`#{{"~OҮ:C Mv\^]փw-()*/)u?⃿{RkB*ԚUe3 frE/SXҁ'fmi:w^.jw.RlA%LiMBe)G%ɵd1[ЬW4ÊiU%H ci^7;Q&lxĐZxȗ9~}2jY3a2F%ZQ<"$w }(?ē 6VE*hE'N䜷Ҟ"$>Jn<~m߁t{ 2G|{8e^c\%Yqd~b srƑqYٮ@+sMLM;H q$+u^\}2Y2VњՔ2cLk953{[oC~Q:`j[]/xtMu2a5<ӵvl!7BU6ֈmK@#tJNOWV os /BV$d % nKJBI1.zt9=QX ֈcU!}׈~~6BK9my%~s+9ON^[q*-Y-,9lKrxlaC{R6!%6m!/ Zڐ#-¡–EU0+9YȨ(ɼL*ZW2fRX7Gp \Ztp֐)JT,v wkܙ\2\t(y<":ʼf2HמsɵFȞ 7tívC;8onbJC1B9jE6!JD ש y"<"5'11b`-x70Hl%>*BHh8w*1<CNpfw3{=}(V6v/N^05{)Y`]h<lFBretvIZJwIYD$ۆgl"nʾZ__ˮ^)ٵmFn`Lf;ѫ1L+7M}9FM P() 2/)ŌFtӶ憑5oD>)ȻUڕK%zZ3)3Fc58R]TIo:QB2A⽧֚u& ]Vʌ,D6kɜ:dy|R m;>F*SeΧ>$j|+A7gX R-쉌N ";Od D++<9C(@iEUx~S{e.CtD%rM008R2j/}zb׍'rw hA1$~Ns6~+uk1EYQ!3c85l3nzEF DI+|hMLUxu?s趆KS,C*3L/ZfKz&GULM Yȧ>}~H|?cI9t 9agծJ1^7/#lCLyEDueېW趄?ےw{kOs5N" \a"/1bb@E5SBDy'B2p3]*ǴӃꊬLyYMyVf .xr1:qTKEZc$JI;q\Zb~tNkZ>61YmfehEcX[`tam:tcXR$Ā .8RRr:c6Ől/&5B3Nx=~7Ń3:KR91_aR _xpGW}CйgBRO&T (eh%J(S ]khrb&{4Ơ˚(jMŋMG>5B|B!⸣c? Zau{o_1S؛px@~d'J^|zͿ΋.}˧Tzdv08ŶԋC˭a܎YV@0}D1-At3?#(kv/^2*+T!1޻iTdۜ z]rH%"pk,("ly |lb2%W92(b(Vi0%ƱY)3_a s:L2,{/NN8mb6bEe=ZԸ&YZ2HDS1{ 0K3&fg^Tz] 0 y|27+Ƿx#Ξ|̭gzVݤ"7\_-Q(R1rwt͆LYؗ \qE rج~HG{Iw% ePj%G_;>ٿur`G|Ӈ),yu~c~}G^Cy}k-zGLS&yM2kM\L8=} 4[Iͤ-J"FUT"YJ6h\7FW#84۵Ӱ0BîawO]mǁ_8_4#50 5+x &HQxL\"g-Y9{d #z<}[o&ƌ\l8\b8LL-Sƈa3>3ŧz޸w޸eӶ a%P*M&cP@~ M\'[cyx$􃤳`0l^h%d@i<#C"Ed 'ӯbFM^brQzGbh|K-(2á1@=9l 802(GK䡢-`7o x<%;7Q1!KrWPz4ۉ1 G@C~xq+R7sEf\#UF;ɤCQT:@'w2P:hywjd&C*az.r##S 67|3ޣUR96Ji0&A@;7vsnfYXXN, vȗ^eHV.Ë͔U}d?!IiP#$*ΐZ)HY/<56Ӝ/VD'8y 'h-w%~ж>J7 H:*yJ:{%I^cȰczyXJM%0zd pY U'RZgUJ΋)lLY@w1 PB\/#Ke9֘kЍ$f,+ho0{b1sƻOɎƌ`_٣PȪX-WO;}8Kmt)Ql{*2`ȟO''G[_#k'Jgh"(.>dQBq|p.giJ{`U@hEX1|kW/3`}G37K.Op8[):8 |G͍dd+.g:ޛ 1e~H%qΐ%JDgLg>Hl~Ö"!$2H"b"%Cd a\LoXiB|(Db;6]{t]{qf4mnZK,r!B2WsVIkEhs4uKv8k"pÛﲷMQf@ ?k=6poH/k]& v!M1Ryk*55bb()2D!yQ`6y>+'Ś)B@dpi&XL_ZyZ|qqvJlL#/4\CƯTۓ-W5Ҡ ٽs_ Æ!J evq'|_.r-^8?]1Ʋ4epJ2r(_%k3H6(_/])xQy=e8`~@m'O=B3$[Ad"()bA1[b}K3}s]6 Ġ$o|g)&#bdwUTC!|AN*J(Dh.U ҂UNmFNŽD`FHBh":VmMGx oڔ,@)|9O+d"#(Oo5!h9RhQ1lѣp}{;Xci$IOu ar\xCDOF4"  #oH}ٓH%C[,=Urֈ U5D89eh;lLvy! *`5fZ#  ы7sIy%ƾ*:q^&o>k'd DM8c\/^ YKCH ugάJx#yO!dR($ B)H Мǜ,*ʢBK #tx ?-2 lJn%ȼƲ9Η f|=rQw'Ϟq|pN {j>$hͣ|v1F|h)K3YgktC"EI|_"*EbUi IkԐW+yNbfBנQ\TLW}vAk- "=g+X :] AO'%^U|mYcA>`BEg9m3y:5_f͊S_C25: X!V )ǭ2)' ;0u${^Iᓔ*c)ɴdPdYNж-4yf IDATB@vMKk{2d2WN8qޘjP{S!b%Fk~p aSE/θ=+IlomQ)ҷ5h$bi2dH~DY!z]KLv7D=EL`_֍~Ja`:X'X"05 1ޢ)2Gc7~<}𐌌2ygAJ߷:L$RIՀ ;}vLNA\>{waVzn`X_z/, d={Y`ǼpĐ|w/w7軘F1P蒪`at ȥd95%Ɔk=,RbuKvVh-)d{3c6_b8ݝдw?@n}bրUgt"$eQLV ;ߣ^,ٿQ҇z5"#2FF1{{{x!^hV->:4ԎRDŊܳ2|=+ @ e3ef|R_>zcd&&mZׁx͇9*LILXK D#:;>lSjYA26zF yMnҜylJ QtL&#\R7 k!ACb6BodkO9[Ec vEMzH3t> !"W,kVn09=}GDM!*v{dY'6&b*,B yI\vֲ<^flWϦ(Atm 5(xew+J/9 V(*]WJ|r$/Ɋ-( jdhbLc//~eć^|a}D6RRytú'k1"H2{r kjk%3Eehp.u"!FBD*AYd 9ՠ#^7oĹF;۴l05=. u Dž3n`@8΄;;^D!|\7/ȋ$ u)Xڊ!jߟd |bw"1URP!9.`<ڔ(9H@Mq~~/~ᅬ1jhP"|]}E}9~?H 3B^;?SteuЃt# d׾a//AHbp8%sHK\T?u"]chUedWGT1[!DCmgl풩%dz8Ez;evv {Mê ^ȗHW[g.[Ξ/Nڢk 6 ~?e ~Q`M$H5]`| T~*k1N]Kd1Ǐ=M&,b޸ BQ8ٽo/r壀5|[']HRFJ)g$hO`kwan%)ʈ`{#1hS1QQPK}ņd#@(SlVvԔ)}L;9&Y6y1TW-Z-hÊ۶F5Y^hp9E=z̡(37`m c˼^nұx~"z PA&f?AFx&^6C\kɔ AT)PN)Qc&1X8pZ'xkhlCY)d0NH[<]XO|{B4c'G{EL\O8c؞lZ"bDj>ɣ3>ϥ\v/uƽb^|xhk**xb.Octi:qONBBʍ'diKƫfݴK.yFyOXBm|: ZA Fa%_3k6*1:Hpm-^!r2 CSnRIFB&x탄@Rn1浽׸vŊO6)eBQĹ'!x>mF w .gowã E |xdQQ1`e-fr `ORh 9PjbkOѴ%U5SihvA.8ܽä:")BdhHE"]T!$) O` ۱ f+Qz[N5!x2|JTdҌǚ3\>r cb{!K(l/t[3^ k`q%GQZ_3|`ѱ"A:.}Rzr2G%EhWVck/(Af_~'ˍ !z- r]7*: +,QDr!( pO~|L([钧/9}Zx'bniaGK2?G; "Y"oLbs _fئf8&W+3а %Dz^G/4<=_1#?.>OoS}o=@~T=#TRPb/Yy49&#' %NJd<\X&W0yh)й&D!'76l@*X9ΠVDrFGp-;T͎'8K۬X,rCT(x1|=>7*c{w}\[sj1-kC޺uMyZ-Y]'t!)7&tXuJ! taDo]/PD7 RTL.OL&RLaÞ{?ט q 9UoD@d,Pa(`)led`|FI&ʊ7, +3Ôbj^g89ޣ !6v=ԇds>_a^=QItU$ XEohYN3 "T%(#Pr#>}ǣ޷?䃩eV;. t^0"Mrq9f{ r}bG%!vOMVRZ{rA3MV#+)%E<Ϩv]aP?%RpySE򄕂NLCgdPVptKKIUc: Z'Vɶ`maܚe6ҢM4?@ڱ9 EY2ڢV[(9g~+?y³]LypxrBFw>~{r1o~dyNYUm5i!}z։OQd3\p92nl?(cCDg>qK-=m_ 8}RUT`%!889d'f+~&b\p%n+gs^Y~cH},«\l^,;.AD)bU1%B⻚Gˆ|EUe|l_\om )%{/BEUX6$0%ho=V#12 |x'V~1`{tD%y!<:jDӵ >g4.[|>#W+8eXXl﫡Ap~RԿM cQbԧ+ߵT٧*5*C9%JKD&йD ]fEVQ5]HXG*UR$ZI|YE=ZR MP:s4o}M6-zg[א@~O^fHFd^. ؑK9-㞟 (eITo ,ö} a%wGNdg9+.}vV)ez$/$piY*>^~B' C썓,S3Eo%χK&~udoX b-~*?FWYB^y'arM *I{ C[ cVUl5 JvG1=yeQ< /%!+k 5-S(ɘǜ Vs{cִr2DY-C%(ʜd y<}~t>F0ƚfmo-HYv> mGk24ݜ֮eKjJ;V,c͊-mOؓG,=Vtxq.rrM֢{dgRxK AL`U@ku?b=u+ Ǘ} G]WuNQΟo);Z[rHו}eb։2DT̒R.H\0(Ɯ͑ar|vڐ!O`p/W_%ւ@JO "b AIDm+!tߎ Շ@Ёm=ͪc|aQY1ya1_;ImX% 1{љ,H5KQFTL§ G.3Em؟}ѽJ*6G$>34tmC߿dT (aOqٌ_JE -!xrتqc;cQfF,!-<^9>g^!x|K{ gK +|6FeDUeF$19sXkm k,FFB20+'wλ|zVY,Q[}yYd+BoL J>2 bΎ!4 y:cPJ$X렫jRi }@vwQ) rzw'9+ׁib=K{ UEM h=O-y3 IDATݝ-D.g #ǷZM*PH<2?O7O@D`N\{E^t֪&{72PxH5`5&+ NrÆ$UW bKH)zTcym`wРsDQ9`ԴR+Ek`rtܶd7wx+_Ϋ1j/=n?Rg!uN"|􂬨8::d0ڥ* VƲ}x_[_{'LT7Y[ =O#8cx 7s=Ն A`f X&#{9}cmlJ%ŠiA )\3@bJMDD* )X|mt콦M Y7)z$AP睮"|, $^1c0'RC,Ggd:CVr F`aedQkrD5 lAވxaYw> {|hqYp~vAdBS&BI2##Z` Ov!t*OxoJq{?9%:fD./͞eD 9OmͲ3ܪ2B"`v*r=D nuo2.n47Nnr! fR3,.LAa|N* ]"G%"l w(gJjbc9 Pgcb5ask2[B ܹs>|N17yH_HbA+2 oT/}ljGǴOnW~phpk:y~=~_+3[|5G8Nl3/ (WG uGߧu1cAwb hFA CH|K܀R~^Wшئo? ׽d\I"?9ǘBPFغqQ"lb3G0-XsVo߿oZ+{(OZ5>(VAUULV='6b0,>ɝ B5 `G׆WӀeM&H "x$e9-W8Ց$Wl{ώÅ[3SUZ @r-xu_qwdK2?E;#v`lw8??glxxƃ'+jXzJ'$%uJZ#[YV׳e}Yi}͝B#P H1H"FhjvJ嚪y_yqy㒬 (R `B 4:'ﰒ>^4@,*s }߀T,ȊьBIoRA]b5'!2Y.-KRdQ2++l]wF|)hD!X67zfɼ*.,!Z$o+ R= @|lzMkJk$ 1M6M6:!08dp63J@ܒׂl GɴL_5` ]> lu AA蜈 ֳl=[ {^|ҒHPBw tC6tG}^,3-k/QeB@3hQ,ij!`ډPi!I2ԶNָ28.|R$JYs v]\[y+?|MDyܽ}[?|z:Ð&NwH>Rt:̣G舊ݮWQ7?/җ&(%yp}ٲ_4_||K-ijbVÑ-^y޹M@r v8|!vq8%s8(Ӓp|h n% £2O O&;6:5NImDT5NF>alm&uc1W ?ywrW{>#iMt]ymZu qr|\51#c˨YI1[ٶ|jmJ A Fj`o6\%oS:y, xgH!O`m2j?\}RkHt,ں !=k9q:5. ~7/g|k>[|jMpxoRq]1ѻ~֥.vS^uܹ{?ymj(F늲"fHR D_bsC%v-ćQĚXO$d1"bǂ(Rkweb?pؔteMlb|7`=8vQċ,*&)s4,>1F<'3:Ơz |-@/g,y2EԆ:XGZ.l%[ %QPHSOTrCAo%RM?|G@K>b]Z~h:! ;QknkP5DȂۏNnwhRmB)+AX砻m8S#+5 ͈{Mwxy1 ɔٔ ȳlC_@z"}XJyWr`;C*Dnݜt;N Q]u!~RI(zA% mh)ɲJ;-šɈ)Z8}d1yck]L'\q}܅s|O§^_y ы$T.5^~E\p ȹy^~/=wK1(UZ.Ρcxgc^y縶W.{l2G68^0M(9ϽxdO%{;(h I/"W^ƣ;֞C\=6eQ4t:Y"#֣dd{smGyIDHMPsnxQ^]ۚzV3)4JaCbKii8 d^{? čn`C&0[OH4-VEeZğ!eD>Dʪ-NA!d N<ϓ=Am8t"]!n^HErMnh{a!"M55ip65S+4b ~ U3l3Omh9P ў-< 𑦬I312%Qڠ|0 ("Һ5[IԤ4ђycb>Z$L;U06̇pʹ~!|nKYFŹL+2{wz8f| ݟKLjYȧ$ ʺ.&4)D륹)~g viSW1V8bd&K޹633ׂm@R Q/|u~7 _7}~~?ԬS?jXR$4XjvqK/_?cQW鬪ꚪ -5Qqomw i HN˥[,-15hQ [OVFőQm<z3hbϡl99[+q/=ێW+^z2<qHV; Iy* @g1W_a{3/* \~F#]Oct^6elYxE3Vj]KjUن9&+4T}uE^D!=`XRLK6PyV1U@.AH._B[P)'Іum`Z,BoTe< "LVZ!"`풲b)x#lgsnm%$DWj(l0ع9:+Gb 4"v|P.}IU2]< ,~~k'6yS.TP{8| TiL{Q($%jA"Do@f4HA AebO!J44,˓T*(1cdQQ L'AUy{ΞyxZn3 \hħ"5wBېXwت\{S2bp,*뚙-ʚzY$!T(iZ@j^3ý ~^3cGae2G3B6J+Z4 .]_b"RI f0LIY%B[y|[O?_w^NY+o r[q޵EHײ({+5t4 XD|JF%puGEA1ZE!Pئgg_Ư1 ȩ) ǁ`Le߻>+ֵ ;$/Xi M K ZP42gmC>DA/-{ J@ 4_#. {_a,,.xNm$~{LSN%ؐaeF){4ǵ`צǻAfL JiR)qE+MqNMRڧKwگys乧d w#w{Q)'3O&Us }(z죭OKRH=\Z LgE-M i@gmIqS(tzhݥl6;zZ2P hF OV5{2-уd[a9Gsp-r<w(<|rƋc'ySSJnxyZl9IB +KuH2Vrm qJ ]ΦdA)hE"%9,od"ifRHko(֔/fЇY֥ji,hj62'3aGSJ8NЕ=?!v2NyI,C" 5yԀoqLygI,:]F=]22 =B2174q¼YICtؒ2jf!2A7ː>RنZ%l\Q^q~`%_Jvx_H\t jc5 H4Q@zU'4QB$O-C+gvq\ml(BRU52}* ky4h>gL`0H>25yas[ t$!iuO( %u\%Opu|/WdxN% R>"}[<<<-0)#Zp~&)ZxPBJgv'@M` xՃtAw.B৴^ DVEDɌ~o%GUG23iNC=%%@+@F3 ckS`Ȝȭt>Kӆ<9Z`hpf9.8O=l=[3\OOEJڳ}~:CZ) NS*ա]agADopf2W>5Z@ɔb)BDi e8Pɿ&M[2m3lGhQdD󗶹xƀ^Υ.q,dnook4sHkv.\d&;?:ソwD6az?:Mx+\ޤ#RjN\C?s\z:xJ9bml_~/p{\xM "_oŴa~T%ƝOϛ69nR3Q7SK)YM&dIJ>^^8ȶO!+ $&y$Df)'D~6" 6@ DIo8I ŘZ((Cf': \x ~p's~O ,eMxdJ]7DW6^D<%M仢d(F^]0/Qrc " "]G7S5FZ2ߠFgc 9z}^"^2{>y'dtʶٲN 4d 1jj UO@ {c):}^ !Eg (ЅF6 #5FAKyp;#/gr( GㆃxŸLr{-[$"&T oζ{#P6ĂM(k+~i>u-ɢ¹R@F:yj".:n<3 r6F G].AmwkCn\S&͇ĮhP2SBUJ+QJrsbqC!\ܲ|EH*1NL'&D\]d#cyE9_fF m4:d׌$%UJf5 }ORdr%\(cPJ$k6P@X2IӢDpJ'=M4'H J?N?Od[]~ d "n]KyWv.?1 6,ov mBZSـR4b+X2Du$#)ᔕ['H'SMY[o _;[{D~\YbR[0iďbַ5wzyZQ=DGD@i`]n}yU32I޷ 9e]h-;[#dY\<rծCq@OA~'Uuh) Rtm p&e@(ȩ+]b>|z[o36T('O:ۓCx֪aY746p%>ꋼ}wNڒeP0R{E +cotml"2nupɄ2!_d )ujHUTU@Buٔ0"bHJA) Gʵ88<<~ek]=4%6_{m`MGMޢM.e7%H{jBBG%at = ADG]'$ d?aw+0a(#w<̭v֞Fvj}o| L5{]|k[p/ |goc\SiaSAviC"%I48gMJɻ}|UQ.LT ,v:% )5Bj*YTekJcLT$u L)QP5KBL# (~7Ul 1>wsdZV, &/?~|+k_<y.;.DDNxoQ;Ox=n'yt^*|1gX;LR1ٜ}{<|].^lq7t)&*@!hʊAs͉i=ۻlm)1xmG96yԝ 2RĈiVaXk3,X^L>+ ֦s>$swo-uU1V-SJ&Uͽ{ﳘ͘fMdY2wd- |5YƿǮl%!z΅ĸ VaA&OJ4\W+pTC$(u"b9_$_RdEѦ`z:w!}1Xgrf;,MEB~]ȘuU1NѠmxWDB8EW@{lAtG+ 4"+Va">J*"K Ǔ޾}.cwާi߇3 ASQ1:HoX?8tPs !Noi^Ad7.+ʺa,A2-"Kb6!n"hy\8BBJ\>5 Ӏz*A(ã;uTP(7fk{}ۅ$ɒbFUd:YuT zR-4V<].&J;X2[<8HeC{> 2 dQqn`>|yiaWv(F^}7/QO+ 87P +xr`\R7Uis&˚EDFC yHfJi| U":_+ȟ-x"#f,YǠ"H=^ڕw1c^:y'9~4TM$8u:)(2MEY ڛocs#*}C',j)~?gY_@̩Dj#<-f«kPzY 78ߐYt:U%s[NiO$352dYeQZlmmô?5oH:5'\J+owoq/O \ݺŝC;{ r7_~q"lF/k/DtE_+v \r/׿[pxo F[5^١%rAT-~_'|clCwh"s޾/p?{&ۡj,"9d:dH'ydb9qct[9Ez߬ Luιw'cjFoMA+}iC}J@; eL ۆ^*"A8& / !mpA9Q+lu#xZy14uJyd`kvJ+2t[aD>MpKnX En8:9k<KzMO%UJMc$ԋ}z| *eα;G ih QWFlSǒ}p}栎0JZBIY9TK սoxbh֛*-3.먑uLjܴ%>Zr]}:ONh  z!ceXbeGtQD5wxU%)BlBOD ֈuhΩbJڒ_X˹dˤmCx6_)( ڨvuӀHhV~[m h1U'ie8;b{wn7Cg\[ӑFY&̕JIu9w8]p0_4&߶Cg>)@!*ENrKͭ~aeQ~<$?XtϤ6hm 'Bh_;ݞ`Cfa3ZLN̦d%&hQttqA⣠n,z1Z :j̷Y_`okH/33_ =oK9mӦ`k7nB=gy209Í!/"/^??Gȹ)cdC3]ia*o 겢SUU |𭿍\}E*Mk]s*JT~"Z`NLOPt}OJ{P.51F2tW C4f^!b :߾.Mj,;ra[ځG['c4Q ~?<Y{ϳ\T<~tH8BlP&ɶR%V #Ti(tD?7.=f=JzEjap3sɂy!uj.GC/Zso5H]%bڵ>A`0[lp!G> 4P)($oŀoe3DTcLeu4rv9u7IG:̌Fy#D% =9YtI#^ R) IdH >&3})5k%Iv&Q~KHih>@k2qu%by eU <6aW)Ef2Zdy`6v btTMw5v&1w1QWlcaׂg ʳ=uOG|P%Ba]$j,1x|#(K9ٌn^=(~Gf2*9<>Oy-6wS(ڑmV{AW-0a2Vrg&ׇ3_m:wư! xV6pnm8Tb[͈mclD򏵍ONOo#o'r?_u>d)\nyϲt(N!m+1 '1rNWnqv G$!J@. ]/wUĸgkt(ov\{* Ɠ)e٦m' zd1x~O ƤiO§_~B82*Kaw,H!=ӕS^܆W;V?T5cYeUg{dy6y>D#T> \h,G [yFxkQ:)Rpt6QhT+tp0/=c4snoέ8c޾ßy^=y\Vtvq݋{"c,kdV?eoOxs{;J4-(Sȱg0_ 76 ?1 cKGHHJ Mv7;}s[ĽJ9UٔDR]@u:Uujz>ag` vgse4Lېd 83C`V0ҔBK4TS]hĔ5Ǚ+$!A-eq`|B (ry._y^h4bkk8,lJM]#ExSH%$\?[wXMk:_67'2pwJ\~4HHs=ϻdN1YG#Ms$NhTgEۤ$W{G@/}?xkAr|-'6᛽DTt0,Y4b/ CE[Bi"I31'UG<)Qyz)x)QD -N8[4ܧIWOdɝ49kOk<#?c6I Wkd~Zs=H4တK75m??`uOl-?s+ptg%+'NƛWȳrxM.zg>lgwv:z+Ovz !O`d2&;*B4 ycL}d-}鿢5BDvޱ#kMŋ~G͵G̾e@Į%a)C T)5޵0x΅4kd7Ez%cRSdF*r4NY0YIk90Q1(%ڢ̦aE*T"Y?5ĺᄦ T#& C̅iNrkPZE$QDژ 9٦:@Kˉr2!jXWH͑ M 4Ej^1i dBQ$ IDAT ~f'mz=zF>7Uw]X2+x+1Mh-ٷ&aDwfMB#(/aFа59DV# 񁦗c^ą" 44AZ̓z xZd%,ֳN\PLh |G߿q,o1Gȥ-%J ,cmeH[E'8yjT3uŶ_ *%V* Bd*yt $xTX.w[Gk,lF5/ .?OSFL_Y;\%);46p8p7_No_Yae0$S8Y!8t nm2hL|? Ah $:ι^ȴiW ;e;~o{U1w߿ވƴ2YSCR sXdD,{i( TUm'#l3b:L-q_|=R23HZ.444ֳ{@w(yJRT _+2_W'Ol R?(u_/aU)16X4K R@S{~dx@u䙧\NQ з?8 %-dA53馁7OQwKv[I3dwd84wOQ [2pp B (ʁ: $YY2SgV$άs!wlol!h'~O$0*,㭥7P%`\` _$&$ՔyՐQm$g]V 6sogD6F峼M5p/ʙC$jN;Mp\xxG153䶠uaI>(Xx<+ qq9}l53?wL޺#\e)DF%!zùKH䝒j4!-rfm}H2Qo߽o_W+L&V.\9Å gx5)pRn^ιS'* 4:~S/ŷ`Lt OUMP Xx T{WRf4M<%I)IFfWliB),C,vG|<+8# TJVz[5sZ *eN`VSjiFjt*Vkg 1+jS[=KTcZT멢XAS{jxɳ<۞ hεwG'׀p l-l)l Bg9Q9=pɳ| Q lW|N]i3\|2NM2c IF&'Ν… \_{ܽ{lllD6tΒwJ2%~$:Ax0-[(1 MK# 0;m+KQ|ho|m0܏mYfŃwNa4V57nDJH2tPY*%( R( _u}( NhH| 2Xv(L5Yq>heI_)ʜ<yG%,֖oΝ&+:{bg86td+ u˒F ֟ryN#Qw(QFHd5^I*cw=wKȤϾk uِ[S%ٟ)&q:2AW BͨT3cP58$aB@8s{~n Ϝkߺʛ^g Ο92m4NKQ'ff!UjO/^0VP׎ }֊@T!n2M:J0BG DY t:'DRb᭢A#v$/؋|~4ٙ͹1sǧ.?⽙ _!"S kTDȸ{\zNNu5TSd?[Wyc知t$W]o}Ɍnf> rɳx/dw,"z]ra``Ò*{{]+g>+^3WoK5X4-HVJżX rmm"cNgF^2d8Ek.vQ| Lz-XKCd- b\ )ʒ[Ȫ hh9d.CZIGSDɼfpY}HHuk\GP.jbc]sFok,Gt:}VOcqDZ )yjd!b @\&ID9lBxѫ Dw/?E~dX-p x!0h*GHӡ(+Los'Ƥyl竔iAs24l1\zݥMRi=F8|@xΠ˩ٻ.wn#:$t˒"+QNr ]+]`4C Nܤ5o0'~țNzBK v m=ԤFJEAt0L@(SFKu4P)!DWE$)({oҧe`M3M+34jexK1݇ ڦS BD2ɿ9<o3!bBn8 Z =߮,RU3VCV7`s*p$AJMRʢӧ<wywH$#7y\FTP ,ra ҅6TCd%[PeZdGgL| _\+._ !A>eq 4 V(40CE@?wn3]p nShz'2ܽūqo`} !Jģo]g?:k(Ǯ_6hıF"޷4; n[YPӛ cA &)XT!iDrʓ$Z-Jg`ˮ_F0bl(Yxv'YBLH$ iJJJnKB׍l#Ȭ\ރ1wvHk˙*]RX%)CQb q2E.= #v BJ̩)P(מj.[1}֞|k̍ħg'd$.qa4S H»)4s J!2og͌L Q TS5dI:ڱӜlѭ[TZG_@8OQ\8f{v)%Sdi*z1!$:/;81ў#*pަ2`u`! 4?߿.Ƿ~6hI˭#׊N标L+{ps:ykQ&$#+%7uxQ@wԱR"c&>wO'^$P%S׿6{7?ҥ˼{DugWoCPR^:ωk|M^W3yeR'zwN^ի`2becmͽosAij2o{.={g.`瀕NP%rd>m|O'%U5Y]½ws;U^xEz4_.3152X-EpaJHe@E\u+FsG.$o XC N+sχ b(dђ"X,/IT+\AL4UI ²;9ɅO1&wFH$qc_B)R]pgq5Mְ?ޥ(:ZA*8xFk׆$WOdiJ&OS2etac-vf=8Kн*6$HA G2.-o]?dk3 F=j?d6iaPUai"7x>=l7ihBy!n6a+Rqh,Z M@'Ty غ4, uDdVYFJHiw&fN1 TQ{ms=AGI24>X22^`cQN1eȅ(1{U ޴2&C$aCȂI/e'u%Mn6k=V :ENS 7VXX(Rc\iC8L"heZˑiˀ[0\ 7TЅ"4 {p"HC%q-ZdYh}YO=\e&a:ceDTm臤t9~[wg\ I21X D梈\-з}Umbx琭|Xh xt2Yj =bQ]!e U>eVD8 n{y^ƿX zeasd4tʂ[.zOݻIӔn@QtM^y &c!z0:K]5B2=8S"9ZGX6:{{L&+Y^w`2Kt:M^|񣨷C yS7y4o NAe$yJ'K9y$~ iq2|e}Xq&w x)q=(GI+=ıuH*T͘Y3 iJ*zFꠣr69뽒A^P(`{;)(%9B(%}Yi^vgLs΀bu'Q<+ie✤nBt%%6}Dp\u,08C`:sj$UH kS=;c za`;gQ4^y5+EA!dQtɲM_S#ō/ŏxE1]lmwr!Y~v[2M襠Ƴjs4d E얤ieuqd&3:[z\)*!(,.n'^g>\2`{;2p_>c0SǨ$eu W&[;?SsVW$'Q/lT#iN |+Lܿ{z:JZDaEʉ3> {TΡc&sdyl[-R1@v^-b9/O(ZpMK`Rh1mcmOHYX-!z4h GI ',a#rR1vh¸GC41Y?|kTLu5kQg64v=ʲ䐐*F#̼BxC^d ֑2ɘ^ KR"DdvE 2S6|1#d]EjaM CpjMSX[ܾ?¹)\43L\(MȊ;:J;Hu2%*`V+rzD8p2`6Yu4-h!I8iY/'LfU̔fnxD+Э hk;~m8p.>:8[|m%_6`\ L.|BdňmD&!A{tZ6Y#C7Tq^x/h7oʙjʢd`8{"[ao1u  Ņsw+ܹƉ{tz *ߣ6 X!f cMXppp֚tz(Ȳ1糘mcȃ5o/Oϱ2c.j.[Gl||tYhx<^_/45c)yͷx/|y9c}:e/4E<xJDd4JM̌C7^W]}n3N٣I!U޹;ׯsoYp!3<ؐif%#eTp $Jȸ Cd-U3P1^XWJP\HIA <Ts IJ2Pֱq֌qnm r 03Sjq7pmGK%OR$A`:pP()ΝauOeY tkgugFy@j IDAT ) @um3Nk`H 5ڭ 2 ưC$ ;H褊NAΙL^ӛ/xY7|4Z'lu Ak|KmlD}pCx<cAc4 Ce,348S|h4mMXK8RgVUX!cĺoe˲e *r,!|~NҌ\&07H3Mo wyx|mE+e-Нsk}8A8)k/"_ӯ|'7po!UBe+nc{?CbCϩ+`ox׾5^bT )Mo A9R7 VR~^foudƃO:&L&ư;o^K^3Xc<$a&N} +n 9xp'<> SI;_C\ʅ5CDTF+^JK䱟| V:i²&9D\=:!cg5)to,C$*x &4`i&}j!mrB&A"RO$jxC0 s㑉#.^!dfMm*i*T4M3$f'^sd ! ~!pl?\g;lϰ)eB=Wu17.]h#0L7@J+<SSzi`ݲ;#0(Q$Y3{&*v+GSY5ȹE;D8&y^]%m L'[ H2G5,N6xmq<jhlM {01RiRѨzRP_zh|~P`,h5R$1u%4^pZZδÓL9c:+ZbCkUq!qpoEqo=w/q' Jim4cu$JizLmuNC+=SWEΦ)IcGpgSId:eEHI$Gczc2,͠(:X#uCQJFTX q]~|ʯ|OC z%-U] {}Q2A2y O2>tx_k_o8 lΣՐk#"/2ΜZ*W;+ơ[7CFu#p%Qȅ'l\yR64N7ehAEJG Q]2!"yìRU:!-;:sff3vSxӐbG1#c 3Xo۵:ĵQIмi8qUC=3ư1x.ywH-3S*xA5(OGKV~::+]v&cO%5R'ٺNaF"i3;($tDk*cj)ǮH{=ֻ ݄A~/]὇ԕ_ӼB {DdiY= `<J8\~Lp4("ELu>b~j%ex(ņ,5@!Uq=xu/r++N+~{%V83E?Lg;lpp85J]n=yfslD3"3[ ߦȼ8yehȘך " # >}KdZKs!eAށNăN4^#`RhJWDPZi!I5x*iV,x_ih\yΐaM 8 in%W1nLd͚L1)E=cV21tW3R7etf;6:xsX'O)2H5 QBt}Ç94#X2P(-}uPܼ~'15(`[!S4BKinN"D!=dȼlMqHebbjUM]O.;ԓ)JIS'[mUS3щDxHmIWz\ I+JP/^<' >qQjOoYi*e* `R?y_E(UuAkA' x'x鋔gl⿝Xo)?c:c ]1w|쐨Tc?8w8zߦ#o!BJ<'M 4LzHB *KL̄0xI$)*9{lN"BsuYM+JG~^,(l3۾:_.#h͑qx!P3q2* B Dd,.Z'Qw>{vm~a卷_7v BbCېq>uijD1֒q HuJPJ0w17>xP75̧ ^󬭭O;\+_:<;iMpM1S@⬋{>ris 7 ${8W>N_F,v>|eѯc'="deau؍u]Dw4 F?pS1' ն|pWs v.yq:y}7nqw¶}q~!hRj*tRAUY6C+\7sHPBF+:|+؞+SyCV(2SHU`5S8vuJB)VH"S!Q)a͌j=><9Պ<Ȓ2MZo[5a9w,i.c15:xDGZC&p{S%+sM0:8iu!{@ 6tk1^d|D2zof40-E |`C֒4Q*!SHRS 5޹7 0k("C^SP?E #d :~1X|#k6(}r!.Ѡ6 U6Qc@PG?= i! >@|#l>y /Æoϟ^&~?7fl@ge{"g;@o~Ne-})~?믾V^ֵ0蠂`j<ܺǗ;|Jg|^~9yz&pOv 9RBPgO7u:k/~4vխ qȸYA<\Hh "pB.1S%$c:[$![W&RmB"ʓ8uz{c̙u^xi} GKk1XC?xkp2whR/j 9olAHB1"6G5\1M8uSS#9R 4C(E I[0 shV<)< 08yZTJњA_➰.x>{.fvjfv{okY8ÝޔsUfUU=%ji6(d[ CZ{gC F7 ÄeCM6Cٔ{*7񜘼8̪fWn#H|{߽gIV$Ɉ55$Q"*K{9ᘢ0H'sl}=e``Qo^?' yEY,!Y$ΝuFFffӶD"St1F\)mTwIa}Ckvqʕ| E~*/^f䝪'S899dkpm%xo DU??//PEd9){gpԈWOk/1rUDLTbҭp!? #to?с]c:sD¤.sOWxF#j [ڱ_}[-K)R':U)׉ *㮱>Po_$R*7LZXV*"TuM Zϵ!q,fD'ޡg~׿plhA9Zl j߭B+Ac<)uF%U$5GG-{ /b82lלSKۼZ@yyG>WͻSUŕ;{׮E?[?[ys-^~<l_CQ$:F(%Ju;_~}\~]oo|WHe(Ӆe|拯' nQK`YZYS]<˽Xޜr獛=lmV)7 G((cR]E>f 16PR#d2-hNR)Lk[?7'ΠD@,p!>R#,o&)$C*?R q0a-ZqyRvn@D ]/TUemiN)97ߍ.F7'hJ^S={(&[_>_f{wZ?Y&'p)4YJQ*@vwiJ!*Lf 2}؅gAGҚQR!63m4-ILi+hAAQ|_(mCy*R ~}:a0$L搰IV:ZKxXz)gg$IK&X1;հ&$B:M"8X EQ2`ѝ') ˃ `g׵"A0wxxsۦm35=ζ{N*fSʪJF>P]O6:yZKƹt- rAesz:[>:lk!cbZޥ$iQ!]c4Fkl}H] 1a C->/=h\=osl:_m ]98^(fr Zv[IQХ o2$?ACaLެ۔ě 0?y Fs9O]cαs_ơs7Oyq9^NI}ǰtޣBȬ$'Zp'C9b5AFf&W5pR\UEQж5[D(rŮ:"M;uE436q]-9nOX)q$J -+Ο=x8`8Ɛt|%KRػtݧ2hFbXj xrKbдV1].7^ڵ;!>\5[D)+!#Dd! GCB" v)EWTSD3젦0m"N8_<ǧ>zS!o[Js)?9Vƣ#@rY~K&\h=4b~/, OOq>TQBl'.=[`w88<9Yĕhapu'lN39 vwLt]yr2O_yo~gsl'Sn/:W<ɗ5^K/qv&;G)6x$(`|hܼyKz'V&#>gFW> "يwayHt[<uÓ/sEycOO{-ƪf[n޼3;,M*IRJ'f\|F" YYTy#%%v?HvhiC$ {. Ad_÷.p_=(ou5'~"k*Rm%eKL 7/>\wn11%,s[VZ %7op`j"iSd@"ը&p!"Úe,KfE$P1  9S3.yøJ O2%XI)>Fv(5# ׸qA.cbJj*bQ!ˬ¹S+KjGQqH!Q]Ha~,/ joib6)$ۆy)Wz'{sGlݢi˕tvK?OY{ ./1t;P(xD\ }̀#$IťC-љ D],pv߼!T%ɸ2ZC>\)YN1nrz[o/d".o0J[r;tcDŽ  ) 9 ،mq&Ҙj) (KIH1 X',%bAuG:D>k0< kcB;`>sP h|4EfЅtkKA[֠mNJ@>- IDATiL#xx=o|?W_/IT.^`4FD1͉9{<slv/:*VEVPb GԵ}:mky(4[0TimlqbȾʼnmbRkN FkbM>r!1Jd0F"x3S|_OqvopPfq: fpSN~pcg\"ܐ]뽍>/oNG8vsZ d4fg .mɷoWg&Wh$D^sj )9j3c-1#z/T,{kE/1#i2Xΰysa5Dor]c5M.'DS$p1vv*'NKɒX(MRAU2n ?ZV3!F>5Ј@(AEAGU¢j L8| gvv('5WLUX)=T!tpީpzةKdHUhf?{GI@t>Z”6gll z#ٍ1#`]@Ġ=REҚfګowo0=Z|,QO]ъe۰} v;ր'ͳ-#^#,Sx__e=Ԧeos>u1ΜUU/_y%:u[c.r6yQJ0ԯ O? _ƭ^˯r'QՀ{ K;-jaŌ_Oqpt™hNlrt|D5p,o` i_yZtzR1UCe 6t-P(E .ɪ4I>v&Q $gϽlT c_]xZ{viRtt9)Ldb8madlWu{%*G'<ƈxm->ʲDEQPEY$yjYBAtޱ\.)Rf3AFcf#{(ӳjB / @*tq\bkvɰ*ϑ YRjj]sz{wn6=Zt.mKe ݦn>/53¶7a h 99Q"&hS0maW 咲PsZsBm,u]RtJ4J,ֲP Ƅ'aZ) ' LY2m1Y|/a%KRc @QW9kSV!3b71_-]{XCƑfMN.MU [|Xq!I-}ީ2d(ڸsRTƤ&3*n/w_ŐUyѹe&Ĕ֫RQ 13*Z 8]N= Fk1V:ˠ1EHQ8{ %圫GO`Pz]ʃt<0+m``w٦0%ϼY5JH2 fTZHyoξ lAQo=B3ݧ `PVHVp:rY>rdg&'Ac>f!fky|Ԁ0lBn:$?Z32D"g#*2#b-+?s^ϋ=kx[^@gu;G~:맮pqX ed.~iUlr},𳟤ėo26 Jb)w',;hm\hAf(宾Yx 15d+B'6aȆF=#%?va~~D+BLitIl ɗP,폅MiCXylj1&t!Ă$&Qxn~bGq#soO[>Lc\T"N Qz*BNЊ,ȠP r| xeŽʄ;6cL`2#:Gl #*T8?Ň*R|ɟ(X0 v8fR8cnq lmDcUdE \u+?l:CňĔ"iD# ^l\cY-S` L&w8oWT@f>O@S1ܿuִ 1:9%Z&*X5f0K:"$$)~ww@:0GဦS{r]*=`8=Sq0M.|r]f, 1Aܔ!KBC ާKFig( 1kkY!((z0T>}CA(bishܭ $9gMo$ tuZopIö-$HNNsz:^"YzoTuL쥤*^'Ft W q#)ÀB}yn{(Bмu?i#YZ`\P5ZcJ)? D-@bkc|0A[;ٛ`kw֘,c!9e$߲ PVLbvW"{z,$,[)XX9FiMU際MgٷZED_w_xx܇6ugй~'n3b'H^O?̵9A>Q%񘗋NWɄ` t̮>Z$dKpsҬH5JyE)4g4 Zd\ZEF[oyL @)j$QG`R-cƘ^M`? >^PE\5FLtUQ `TӊVm`K9aM`ғHH Bu9X% mZK`eެP-ziÜbvH#ZjUs([\ s8 ft9ks[l jOB=E8r 3Ϟe8=miVۗ~ȣhG ]'7ꁅrk<_=?3 7P]P&GL+]dO3:{>,hOퟦ W%=m"5x_&UYrYܾ_W?IBQ+{L'9Xl@Qwf gY.-˪?LENGm9ehejgwP(dIU듌Ҥd.!BR"!tpDbN>3f#)83#/ހΜ^Mq\K7zk:.JLQ J'%$`[JD.Hh;Yf*hp ?QI^\Y"%)E\y'XQDZt0с"63 xMl4]U ޶(ÁfP8(^3g";EA >)%e*PD׸ Xb !GCC$N~a0|ū (qŘ۳*tGp.ɶ2RQSQd<}dV&hcJLjR>1!^4KJ_ۛɣEK?ٌvV%5:%v1FcHw"bU fsJ%*'#\ssѿo{W\xlW9K(p ' $%tͶJT*fV^*^`Ne+^ e.$Ƙbu$=/TiEY FY"E,)TQԢ$FѮT9D⮷؜d6  ! '[NLP{`RئCZ3=0HE r%&18%N]x1=!\e]~Zʸ_xz|_3y$7O)GS~|Wh$vMWfϧfi^3> f`}g9GzDY*A O %ei~>o!iŕI gP,W, e<Ϯ ;;;EM"ģ( cXViUIApp4w/}__8wv"":e[,{VJf<nFRrګ(tn<_{e[o-8D2ĸNNnj`;FT:Rk`"TH05]*'ֺ3c;LҔd)F>ӄ"i;Xl3,|gw[#mStV_2'*|D)tG7 1Tlmoq7b:s=>%HdSaǴ/. } A%س 1^ʦ5\@Р M)eU=Nb5ZiF{T1)4eTR(Y-֭p7]Sݭɸbȗ.4Āb4F)J FKk->7 oFe \&Tzd`Gg(Ge6力]٧93"^QN;>7-mnj 5N(f{PQiřm.Brtp'^'K\|PNXU/1 CZْ/}s|#BPV4n<;{W7NZ^ˆPm hֳkwp噋'0vٝ;b溜92Pv"NJ"!8 , v:Iʲ6,0Z%}f Yq%La(1w*c69b.zmBo~DE7tؖ0Uh:K 9!H>1!$=]:>d0(=K3>atF`k5-)1jZw]D&ي' FDl$DQD1I瓌6ѯ2/u8@5WWNqkdiR='bQ>Z"I]rkrlio1q$@AP1DbM)ez ZbԉMծ +bTcBX"q+Zׄp:m[@%֯8m(^9ICe,8vr$($JԸE@!thp[GlǓHNՔgo{%JN}3z4Y!/t}Ϝ\hZ23NH6DRY|pQ H 'Q0wtb8PWu* cHs֘HJ|Y"'V%7Mf/N X/tri]x@ꙌkcZlۦ,|iBYD|Ac*;a H'5DPEYE\0B'dȆ<-<JcIgͧ?y_SPN~"ζck*+gIgbԈrX'J>,O-Eع[dVP2d7%qiʢF=XG MlZܳeZa}H,XRv1R2 BaJX,_Wg??G\<m*lOo]mЀ G]kZ$MLaXQv#v}UMw`D2}yBas"QGCXE4"h *YhGV+$YǫpYvtxGϷ*G_{b:3RU|kyɫ,Μ_*Z'',O=bP=׮곌W\O=̜XjZc|Oo|Ϲx6QƄQaZ,1ՐYNX,˯rw?9wq./|Û>C,+} ,6S@44 u_tW4}`ЋNr&RbH`Tv9TgzT?S ~N]Yr2tT,':'RFEKI,PEAp1$oĐ6_MЅmN:&28Kb*I2h# C)BqysO ;CU.AtDPHQ<J;O'ED]1H.# NfubkJa^L5܁lSb;M.4JlŽ<}K)qŇBcOK h)Clo؆b b\BK@TQci%͢m.jH(,.}`wb`K7J-#D("F$t )[:Q=ަ߷ vt gwwelY!wWx.|Xm!1Dz%؀>1}^c2`$0DNʺ6:CIx*1kGTJBx;ہAF$ 2+$l:m?[E '5Ks$ NVS]Nrct 돝&<+ekQȸEٗ~4jDPj,ثe),߳m쒼'kw5")xʟ IDAT~8-Rj'IuF:O>SEpMYz.4!1s)I2KQR$OF PE<  B(| 3YZZۖi$~!3cץMFIoJW}c<*_c3ӣBb CL)s_Ư].KzSO_3'E]?WZ5Sr*)xݷ~,@r0]%iJ Ղvu[K ]K7 $["ۥvθFoRjNhPHgnw:"5l:br@hKwIRvvlpY,[\OI:FI!1&Pݹ䅗P%17(S8q`CB3.=ۣ֮88>[Fq6{g1A!CUU4`цF,9YEl):%B4yRS={2,_0=9r(0sEٓd  ejT[+y N>i۴fz-weRF.m*Ϭ3m,-I˪ L&ᠢK*MAkN[/*7Ga#]8ȋڦT-L[E:TN&<{0 1ɳ$+Sjv Q!$OA|L^de5@j=8&D(&cVhoݼ ?M=qϾuQ1ۦ+Պ1=9gkؖOဝc`Q|?bnMp"~c$Fj bs.p]^y?_]Kn15 քTl@|UsU v7[@|с&&RUw6-UJ$Ir.WTe.}. d|O Ƈao[kכwrN1%5 R!>ɝp.1HDhkh휶]%h8m5 2y,Ml }s%(!p" g/sqQN'HwhsXEy !Gpnʞ܅]8| f4)1EĞAy L,["% |DFBj+^ !8 P$H%"`X9XYWe.䙣TMF4-mlhZ'b fl1(P7C)CYꢤHa$@f@GEeE⼣(vkR:r?:M+Y6Q耄@A@_ 8yw;: dg? 1Rsvl6CY[ lq׍=رC-ԿNWRt1 2Yt)L:JV:>HȞ]*bWKbTUD |$䠫ˀR\Xt>Y7\3c 5.{n~ɛd;UeI~}EKo0A睯o17K߻>yv" TwR#L2D ]$^z D$$uE-ʺ/RsC)$fRyV97@)` e"1DOl=_#Tό^ 3h<M^ dye;&RJmۦ=3x79??'.Pdzw/w̾SN2w1tkyO]?'y"f\|XZEL/1ZUc Rct`d Wwj~᧞c\o,c, @NR-S(LQZ.MApU#P (4/թQ"TT٢azՊSf%4'Cë !UK[V.sy "kBBV`I 1!D\H>>'%C`\i[an=6UU1 Qz 5 `2R+D3dNI{B|:ú䝨ƻY+gx /}ۼ/O*_{P&'| L&xXNqa]!Jh/VQmٿdR썸3tbt1ۓGa儓chSY?!kУhG .>S{9σ>"tÀ˚(^`c `W ̄S10ԢLf)}cd# uG'qp/A9mt F0 owX4|__:׿-F!C!^89:tnSNƨf d/~/1#m˷%>~vd;J5bNo "Zޛ,n˿|=>+ȍQɡ[qi**SbtM^G޷^AM&Kᛷ8XDX.Q*guAV0X|n"̀G`{!iqk!Ę:ӳM$˺+Q%FYȀq9rS WM2#| 6!TQ1G*XTZRB+'o%V:gQpE  0-j"-DY pXiZE9rlMxOԜ(&a00ÌJE!"^%VgT@OI3$tm Ɔ-ĆVx5%mЅ0"E ZȞJ48]9Vamb %.R0$M*L+ܚ 19%2gXvIj+m&c5b#ⓍO>U*"Z *p6T U ذw;Jb B ,NN % %U}oˈ36d{?${6u%vLwܺu@X+B7k;F\h ӿB;n$Ƈl :5H6$V/{o+Iv}K.wn#h$x۰À Eb  0 %{5l6{v\#~8'"@[U732"K{T%yZLR^E|NswL_bgǐ5ƣ1OpflLxB9LQJsWQ O(IW5S q[TU_aڀ'ߗOsn?=㫿qVJKpaPx2B4DʂΎ $I ]ꐒDňįMði|ϖα(RJmS*P`t1v zDhPcB(DE: 3R'v־^C#$o$Dw?iM!Lc+OL^q);O;(~Ԗ'`nTȘ ]֌;p8 *^@%JiJ[͗y.:R'#,V/ѹ)ƶ5Hd-2C`!:[()@a_h9_v'?b<@a353BLl.qL:^3g\H41_jh :coG+ Ph u|N4Hkb ' AEtz8v%-pT"W9"#D)P:٬`=_ݚjb,PqA#Qx"63 !5!,eKܡ,wI㑢h:̭CDPSAr6p gz|#wӘYhʌz\NQz<Ż1+:~ߟ_5zY36)H2qυ8M3+-)O*Ҹ@8tfO&mvZ jM~RR*3zd<(W1!~1ly?v< *o 7i`^oQ~d!DcR<&6v#< lnBW"y:d_Tg9[ !\^ `knhczv$@(yl-_X'8_7~oo/T;#8i}@DTҲ;Qdybq6D CY<:(^>Ƥ@/H& v}J=ي'UR H Feb}$1@p[5+\gmtf;c5nͫH "EBJu_1b[w6?>\vಌ6B9B &v |J'Gs  CLH Ə ,_BU <>B &ֱg.bxX)֍I@6CqkyW99g$n6{G`xZx%V``wHR%_Z6E eqqr?ƍ.|sfK_a8eD<51jYTfcjk޳nߺ>'kJ]@\[&:(55SHK4y,FJM1Gxis_=|"$" 18q2`rvM̉_bf% 0A@ڇ$NKalem%[M;aF[.Dѥ )tRJʪ,t^'Y}W1ͭ9l|BګXBB9ɵ"髐C 0ƁihsKLfoXaEeB :),X\ t^HTLJ!?L Φt}D) E4O%;̎i,oɭp={ ^y=4W} J9w=YѵzY4sGYIP)EDH >\0*@ bN̑h1Tsݪ$5qM!+HažRϹ#r~nq~D(dgggheo2eo2:O6D*9d7enZNb,jy IDAT#ƎC!X;Ai'-Íz%fnCX@EI#ǫG_u=MJ O`n7S_ r:mb ء-Pȕk%;AEuSO4sw18xf G8BiE "_3IPT@h:6Ɇݰ;Xy y-QOe>v\42xG}h5Nj\ݯy EK: G/nx1* FUՃ+fPϩxk?^ѿH6 =$=CHL2OL+Q$*uf^p:! [\=_*=΢ MܛpߣQy*b6g\̍%x'{<>~qUƣi7n03>So.}RR9?#&Stk OyWW=1KS^{g&PHEZO#%eQ:$B)웒fBcFHO Dk^ShD^%!d$3Ha0D a {B궅k)WHQZ*Kdxg>d/ {Yf֎58cHRC*s{HW8'u:l8Bf'"%ZGƵb\+Ȯtf,#"}G=/: dR8*Win!aZH%)Il"B%>jL0wѕET1.Fli1{+J v2=>8ɀz᳇.(!Ъb2:`\Q *bCkLD1BRc|,s_:߿ ۃWq#o7GV ǕK ‹|{t'JEEC[mi X̾PQ0rb0f{6ɶ<7Ɂ(˺k\Yeg V*nÖsci ks;1B:ca^H=8ιpج=?xM`$[Sahf9_$!Kޙ>zhpR+㭆f\)LLd/x}. |9ڏgl:uJ68&Jmǝ=*1PU'|t)h Ƀ3˝YJ,ܼ׮,9>9/os8ږ% Y+TGD([GgC*z! ıL!Y%nٳgLf(dsm)ޥBO}bXžRl! R4 h*%T%&b-ENۯ` 6I!MQug $y_G E蜰"HRB!yYX;AQ*FUdRUB_DQJG("˒(*"TB})I&a1$ &yщٓfPvg2@#U2d+ (FA<ة$c/ĂtR|b N0{(rzc@khTaJdaYϏ $BLCʪf>;fѕ\)79b$38ڃA!Krlr f[&Q$Yx, *zR=b3t]3 N9Y rV#``=ÂZ6l6i+{;fx麎,}ہl4pxlp`+n=CP!1KqcPS I6C凐Oʛsc(ZkY7,q=Cbߑ_v8~Is}=,İ6I@d_U6113 &_3,d۾SsՉǴc)Vu DN"R6y5XǂyP< "L؟{?0\=:+ "m8E+Z0&|)#'4Yn^zb+[Y6ьV"t^|%#0%btt=3ᖿ05Ӱrekh-&,i #$EekXhɩمoND'+^A%( 3k1`nNwI>_'*JqatH(z5H$2;_:`EC{{LwGʣD)TA'" (.$^g)hPTkB XgPx߽˪Ar;OT1eQ1_rT0^jS Y%Y\K6CKG6mƐ뢷b"t) 1z 2xE鈲BtZ!h02`kNOg(1]jY"KvQ/9/M.:Gk.xeY&\KO삃 #O?{3|7d<֫qƵK)q(Kߔ4;^s\ۏeC޼\ޕ׊Vh JYM}`DtD౦4&_ˏ 9?Bmնܸ $mR=8Obmc)BqS!ZCh7 )ᔪ.8{6?~.tdTCwѝc\ӭZC?%Zi[LJ:R9ǝMau!'n]/|C~ F\>D팙_8|ɣڠPRGIx҆ DFaEI"&1 1̄/*@H 1n^ s}pH/9 7R) Z]*v#([LĖs0PV؋>3{3_0 h)(TF2DV|B*!*IA2(|F'(4L^!jڡ O3BQDAk/Iz+2(%KK'#Nm%>)rB`"PF)0гȉ-%mrtT >1 &Pd<'Z+Y/vuDYd}(! !dG,5!*,(D9h8⃧3K4o$o8uG9YtX2Knv8֠dgy`\ kO96jPH@/:,M80jOPXc [P`ެi¨E6=PS 2r˖ y7I z mȾO]޷0$ƏA*50MJ:ι!d}*)H[6vܻwÏSUiV4:@7* UĢ+ƼDRL bX6.UDDs4+(.%a1-q꒫ܸt[K(Jfr#i)ɆjN3LCdX8G!D ΀[JH R=h0#H7Z_U;\hʢqd{GD.kΗ+d8\먹sBMQZRg}Jn? U|Ik=!S(4=5cWbWΰEFv&\:c2-0]K`s5Li}tw'+^Uew^9o~I[Ŋg3Ʊl]'<:lQWݝqEcei+brjmu.(H`W"Sd !'FC8tˊ.rء`|j cz<@ Պ|J &>r4~#V-]KG̛)eKA#Lҫ%?{6Nl>_ycf'[_굫NW`F"7d?Gxc>eBHH \1f6'~d< 9_e?>{ӆ̰KisŜhJ۵\ګ8ؿLs/qC0]btUUG+8V>"]~]toVjo&> ϘZ.82uj*4IΟ,T*bY;$`"-)z*E:])%& _#Z4!,d oܡdž?^qUUܧ#D\/:LEooQF,Yvtm0(㣠k[fm[ j4tBĎR0KDQuMXuHs07/_g_ċ?˂E#ƀ#J=F0&"|C+"-"{у)f KFO ٖJ qϕmz{9pb'hR<7bN0[̿8Æ~ܿϟ?RJC@odj"X|X6ٟWj;C^lV xU,ki~QV0 LlI6RMb_gm=o{@>|h=?;]5'3^ݥ"T(q1-=NF%x%PfR 馞?~m9X ԡBr2R߹*׏n%jX< q:QDc3e$\ҕND/?deA(0#q EG*PQDPMdxFRcw4WN fO.yk|Q( G JCk$-s:M53Y{Q)tK>x m3yuz,MFEGig}RqzzJyX1Йȼ['3.JU<:=7@.&h~xPQkVF|L8qfm,uUQ%~xp6, G;Jbm\?RFL֗tVt%!Dl%7Kx/H<."> d}Lm*2NDvX5Nth]JnHFss֫[.!js::]0>:^#dZC), & }]ieukL_~pz[:o&nT<<7GgUJF& Xw[8,O돨2XfƁh@Oڶ@B($6Vk*vyM^x%ưPcOmL8B)UIc>B$\@2d9Ɛ@@5%#FlA =HRe8drv5oӵr$eooĺRkTQWsF%F6e^BJ6Pn}5c)mzTcZ ]*|$eu6y`x`%@N݀4yz)d 6mpn[3_2;K3c.7Lu>11))۠b:RtP[` s_'|9|nIy !Ɖkؑvq1umӥ0!!5 PTfUJQzIfpOʔ0?vhKfA`flߓ<>>}8GyCZ5;A)539, tf˓ Wt1&xpB) oKT >\ӆ\Нcz׿y<|ȻguL|\wyۼw^R 󜟵QrPL ې0 [dT()BDco03kwj{ ]"46͒8, IDAT O1b4q+tgx٠U.JF- ND!i߻ZV!"1zaEg-ZxX?kxp$$Wfn+_0 i1Θ<0+~G\zBOUgܾ6mk4\ 83VtY($xĘru˜Z6X21>0<+#8Pz/*lH̻BKt-.(<(ULJNNxJs~`Ɛ嶸yOɘfE +B8!$fA28^ __*x7t(2gĔjs:D)aX-ftְ(_\P|2W )>{X5Δn K(/Kˌ5v%9v+oηBߣՒ b%prhZr?d6\i=t a%k`mMGl;b&*o#X7`,gBm1Ybxgs*3'J8\4t!Cȁq,櫝8r66>}-l!f^R`ʁk*pLJ_^1&8,DRQRQ4@lPMQCQz3-!qZ2Ph**QԸ\E R t̿HHyj DE|Lp"mόޙ'>$|$;~1y]v3!\CфR(Rws IIRK)"wE X ̸n[49VM!'\Vړ}bR%:dWURJ ( 󹕲$e,\NE+X*QD>4PeiP ZP&6bzvZ  muGJvW|UږY\(-P1%%3"x0yRHzvԠ%'*- B<~Vc,V}p C;Bp/My~v| ( =f p}Vb.JEbWwJ r`/Y>֒̀~Hm 2362a`<OLŴ޴Vw2>)a 0H_T#b͑Bi A!q_5|jGOEY] LaV3qwU+nk򔰀5T;Mr[o;Xs |B_ x!p?s:O J{-{ǯЅcjW<sTBJ:n$!Ja}x@-$\2 b B@f3\:QU@ ˼8jh+zѹɚNBuz,+#_GLbڑbO \?J!>6ϙeH€j1P nKt jg37ۧ+^e@.8V˩Q(#ńOp[d[9 _#? gGl/Y?=~(]sۡ ifi[~ ي(|Rl\T7-EY6®mٵ:x9 O;~Ȩ}o\eAgq\JXF]a<,vQ)M(]mĮ"3T,1Ĕh7{ON[OcA(NnŇ@muWUn/%'ۿ?OVZ)lg=|fk_[w:ΐ<R[ھc uUEJa0)2 a-i!CH< SxPp׶5I,;skI)x)AY-)62 HϙXrR@7SX}lnHWư:zEYSSŔ>1Ej 8G5i65ZXbSvkbIk3H 994Yߞj9*5#.X k%hPku҉ZG*-$#rVR(Ȁ$G},r\ɗCij9)l!iQO 'PbeZPW+vl&yc`HH#Q}hRD%Ab6mgQs|]N@:>1-J'q:bhg@T[璯2x>J M~ 2L޼(ζy=%b5`UvsȘ&yLAǯ1UY2 "K1? X.g& ^9:eQ5}w*q0W2w5o3*&Ȕ.7ׂӳt}v@__NoJP'Lqzt;N f%w٬lZF/3%U}#~O/a\ 3<]_+jG-YKJ AD+D_}9Ύs9y R o>/ZLUcyα0f3D%pQ1KƪL Ci bTRQu8@b6XfVs4Orw|.Xp՜ X*0YHǫd+;@M/ ]K$lc op9/~m?~>BV0mY zl+ЊbNG:MOx AYbP2 =^"Kf6.A~L1)\J#ѯ~H-ҴпX $Еxɏ>zYc3{yW~O3\l|~NZR3)p,ͰUM4<]o7FWLJ-2>~_ꗹx~ɦo\_[oqѣ$q?9F||p !9qŚv :, D[iprݘh7b$J)d#ʉZO&1Ʃ L>bIb_GUEXIV&w+כRSS18!DtT63E=k!BAAID!1R1RmAt@lbB"U>kÍ2-j%רU`8>a:]=!PH*K7RH j~%!'tXPDeDKT cOe#w)a'82:X&B)r!Ie)Hb"I֋J3DP=ubR&%/rqSS]|Pњ5,HB`"h!b@8=KC_,2w8Nwq:);5f!XBPb!|Vù!;Q;5Bx쬏Kf{b6>)^/'8 -p \$Naap}< 5wbB'*e{)Ip3XY@'yq* <ݡ\P;~}F{{0|QgTuC̳DcԘ8|),u)zmq~ULnp=H &6 J<󷻇lml$?%<qH"*+5w wbϹQYг[ǘV33bBzR|WYȡob3.#=<٪B|[,~U|?|"ZuťTTd=#G G֠#(c - z$pՓ:B~21Sr#,CIMz?1<}F5&)9AfHy.5 QGOq<~og\#z b \T Q̥ lD$̫F{Bv~n}w 9[Q4ER0 DتF̂ӻoӇ~u>MC*yD%]I=$k1"h(jBW1cbXDPE?Y$nsffI3E240$^_oYT36±}~&<ϋCTΤ $yܿ*tqi>srr:ӧ m{w=>_e.%A'!׸{] ˣе[|Lt}5+G<,A/(>b?x9A x@9&o69L=d`w3c>՝U=qRN`&/M$0'GvGgB0fz.=aBpz|R=|V+ ^+svSG$Tx1hjV͌r,?M]pu/EVqo(J0GsbvZG +/ ٶuGt/$BtmK#G$ ŷ1H4 4'v(gP&2$ B(K5" -GC,^*39}=FẄq$.8fej/gLeQeЕ%<{fMr:!:UTcEL M*ϫ :e3+Z(ࣔkjR4ґb߾W-!1Ԡߏ~2t;ιL\g_{|%2 Lמg+gzάNTss rE`59X4D Җ!ӹ$q|'1 zpRUnzmIen`s6'Ȁo~}|)?@A?@ߏ=R̋e+95:@56\mGS!HLZ|NQ ͒7]h]bH3>3NIs1T#oso*fqEfa>BNe-ٚGGϼJ(]a$-6:>͔LJ": *D*XVw X{nKWj UUޕVTMlְj4&cdҗXqQὦRCs 9VEknH!}fǔQ8.[)Duj6ۖ|D?8nA m?|C?R,^ =C9:Vx XrVGFvM dp!O{9^%3[7JKGETp~Ɛv7\QQU˦m9p 09έ/rzv-'=lZ,8/~VpLXL+Mu+U뇏130Xww4Va5֭5x1 ?x=;GZlr*: l 0$MwwQ! # % ,H!@C6qbo {Ye)cH1WQ /_2`'֐BDEGYJhuA1{!S%@SŚ5*/(bl1f)o,sZk[v%h:R=WWU>X€HY2EQK dْ*LvKRy#`:RU HBh׏l0uBfʀǃ rhC |fֶ&D!@!>Q DNvd0dyr)-RbFd/ I(P > C@B(T<ڲ\5v85aD.{@rn|Gsv=*q%)Y~@$R'F!"%;3TO?~(z !!=!+000voiUhna}S rؒB!ѕEU^fkdS R];O ] =UhjWa3@u<=_8˽7ֽ0͒4?Ms-X16 ca&ThcwuwI( IDATf2N~Z-Z՚U3cGdOJU u]1t˪_<=h~@uU^ѹ@?xsuPf$215=TbaӚvzk>G~|c{^lxW~7>{H1;KIekqW s䔣;vS3L-Z^x  c,?nJ#vhox+QΖBϟ:]mw7w/)1[-v]y~~EPU+d٢ jG[!H ~@Gj;¶%;p>KL̬oJM^Wȶ+%S$%2R5ƠR"}?lR&o\ 1>iEHJJv>'FO ' =j,N1}JT5HeuI$lpScPGXcF6 ^3#FsT 2(U#drz3$rc-uxi*?/yQ*R@#CTqdrp%*WT/6O$2 Р1:Cǀ$5?2 1baRcN-yL,'%2ʐr2V&Fxz'|k?IkiYa d&'7rzB H8!1<ݵ<3=Yͽ8vu]!U WC."YP=;Ű}΢03:3b<5$yo5}ؐ$ nR?N0bTRO!J{YFc<]͸8^.ie.'`*5e+Di*ku>'}l+K=a9 !NHm,)vU^Qc@% h h":J'RiJq]j33H1&F$dR@N#>ZvV6]%m aqWcK߿|htmǝ#b eVɡnI!(k fHg^G93Fi6-\5]7^=n iao} xϷv=}-: O񽱊`uNLhdd؉'0&f ׵x*cId}ǃzvIRԈ$}m NⳙpN~Rxf8r(~.=,OF"MqC%D$L3#UB*K-$BrhQXm, wjMDݖ. 4͂Ŭw~X 10LV%孠G@1j@dCJb Cs*TS[䙔*$*Ƭ ,#Q/  }I4" 4)\H>gHB.u.R J'|N){^=;PRRhƱ; {L4"RċdHʲMR lfTv24fAcoq4]%Fâ9%EE>f}g2,Wg9R@[w?K0G~? +*+@';b_>W|i/^kcG4MS ۥ Beϼ){pD Œϯ`FZF3B5) TIjtY뽨FPFt>{󕰌M<>rTt-)h朣m̆CLRn8}9$ 01SR8Z6x k`ʀZch ][du$OVKNo<:5f3ڢKC_sp=>,u`5B k~B 3{FR&7:&oH垞X}{8'V*7i(߾C!1T 94&d|RH"[ O֗_6fkz=iL̴ \.AIM©̹=;_}wos,6{sF)!ŃM\kQ{)'5b FifVsV`jF(k%Qh,$pd+>j|:AUQQM\r~t'Pzf~.B<[޹ctױc!&+}ByTBU[|p4vɭרlUr%RDR 4ưW(Ǵux +}#y WFMwb4u]s*֭;b6vtvy0a@Aju~WUn%EG"bVp-...ylv Ȭ4(?}os~]?X`t(ϽqO;nBi@ .OP vw[.=fK9gۭY-gt/?'͌?X|15-lW(I6 0ʗȞAZ]e"2̬;L20d,! 8B< `r>L란$ݽ;r!ZAЇxQ6 xf3ԣ\XkMc˄`Q.>0X٭[8Za몀]ȕ#9jd@-,aPL6hw.?y?VY{ڧ,ǔ]Brlcn#r C6 +f9GGG\-is:RiiF*Ӄ=U;NC0"_׸?س 88h|Yx; =_{}vȬBT 2zŠ҂/>\І};5WP4CֻE%97dI {v6z|Vs\0 D4e@Gf0i4lH1e1 Z1y8`=.'ВLditwS%{{&\"'X40,sغƢLj=jm* ~ Rʾ01b y!QT) 3HFe6oqbcC#HϲUc,M`BbZI!$hlsRJ!h0I2YjA-`h%8G "WBZǼTΰB+Jx-):evg yIDb1_rӳ[ ^"-cS>&P0GtcШ_uJc,TpuxnN>>|~>/YKVF,+EnQG}WlSۆ֠kΐ۴_KPؘ8◗~i !{պl-2F/7)kļfi*ak]>;a蘽~v"t%h:41lsIڇtC`:v! RE3*_aqǭYCCnbM4kRѢzNhoz˝;siM% "H|&i3rH8ࡘ>iO_`0JiPEm5'pc_- #M)!П?e>&au*ϭ/Md@i\A19!5`m#l À֖#NO )bŒ1mx=X?LZQ^3t_—xϿU7U_/bqI1fD|Nڮch/[VzEtv(Jk!\Kij0g~6gWtBjx'jbHrZry㫯gWۧ~]$ļ\GfIa<]K\rdF|r/Ar\U=k`[7~(,!5"oѿF*aX?j\!B(4|r>ڰ:fz{Tn{!]CΟ.P9Cr36aS*w pv6kr='1$ ퟓR@H"ZP}7YfG@pEB 8 }H0SӴ(cFr] ϽoJ)&b&:Wf>GX ѼHP$ƲNFR!ӗ8g} U.kHٲfw6Sf4MUDcchw //]/zbE+AkEh#nHJ}I$ dUUCJ/>)+sb<am>Z` %kr藧 .*TB4٨ (SLg5'NVME@ =⇜η{…'PYXy!R>]dT)֒&ܵVe^P8cNQE 2&C&C$IDaQ< c`ߙK Os9DUl6;~C4h]:E7hT5ÍXlȀxI<)R|3'ϨPK0y׍ 1p'v:}#PzAETv2Daꍿ#0#3ZDH>da@,m:{7~el(uv>:NQLyf^f55l˱%Un4a B2L ν"NUE4:ÿ1<5 9Hxy{-]}3'{FX.{.ǧ1'63e x_曘ML@u۟ȟa x6/j⦔r2}OGg|$Z) Uf1Zhlu$ 7mv+^iVƳOR{olIr}NfVtφN (si)av6 CfXM3à)&! H$Ha[*38u{31==}֒u|cG5Zב5LCˊI"Hx{^x?|/9Ց,y[,igsfAG} #1Q͈'yrvN=~lXmƀu>Ұ?Q:AʣVVJ; 1wЭ3ix{=Xl͘BPD=[d46 @;g-t=]S\w^`?rU v5pE1$`1cpj*dC$ֲ} IDATmcDG'ALґ9,M|f<;?!渔%xH[YXv3{xSK,hنl%3`Q"qd!X<2) L,$"ﻘ)&ơ4<8lAsU/N{ͽ={͛|VﳲԊg=ˋ [KEw8>6sDЙOFȝs횭y^,aFm&jH 9ww#:`V)F <74 5 đF䴤]ydkK@ǒ:_Rc8# w{9@%rewfǗ4ڲ#/z?:koٖg̢z8B۶E՞ݕǠQȑ |O8ኇs-)EbIjj='3S(x4g5_Є1 ,i_W||#x,֑: G\8\隧t۬wwjP%?\26]J%`&Bc8 xu],~])FsNTߡD!q;2l{\-x [$֏28ks/v;c4f^ c|Bgpo=ixtnNɦHÀINLlK$OT׊hg]. 4493ncH\@a`j++hb]>ەtYgIј)rvv5!lYCr2ɘ l<]0+&ؤ_4H7[0z;:-[g0nDĝ\x8F8hw ]m#+dpՇ.#. A!@]jGra(J&11'A#٘}|?kFfkHьʖ4B u)$ ` cOK )VTݓJ>Et@S$#|Ӓ51B$Hd)huEիƭJ[S[eoM~2ZBcS\5xmPN`Ǵ_N.zP )w ɐ.q'>x2Dȭ7q@86{1fÀwU=ȞE*r,)6=8Xr|:,sw;3O'Y{>fbMG&}Z%O&9۽S\)~#1La0_G#9}ro&xV1(q-,fM3ΘeE(MWMKLOYs331`\0Hד X ~`He[TOUH_ӞP$R`a—o8f0HԄ˅a=/?S?Mj T͹ݲGƖu QId%_xe7t'T6k5)7ܒ'[~~?:'dtTdp$c5yIK"ӟѦ ȓ1m:Mб.uffrrƵGopH d%Ybubdy9n|o =J{ױ}}4cow'X֬ BMp4ݜfc~tӁXg&n57g£-4U[>Zc;:fmG[ȡ=ꖱ0sʐvB ?l^c7xfs1gGeTZ&E+{??xw+T.G:H́W6;:M#.&S(ލ096J8aTo=@cF!iF^@gϋ!nSA5"Q)hn ^Y hh8I^yhQ^;7\_hVF=DC-úcJܽu~<]O|5ֵ`䤻 $E1Nrjrt{ mL'oYs׾?ŽMzyKvV4/Z.-nsq9<-:FiȵOܠO$ 0knWܙu|϶V{c&UP0:I >6^嫏wqXӺc1IEE&rN-R*a0өE~}&c$17 3 p3 3~Oq$ڐ4i /{Tzn?)8ՉX9Ӂ,/+ϏpW.M\o8sKӊ>~+.$z //~o<|!(z [p|9>Gګ$Ew>u2)9נ/ tń/LpBq7x,/gxM1sq&f놺ٷ GH=u&Lӌ>qzw?¬JEd!'Ż@<b}iB_n>f֨wq8k" ׶xٳIqJ,D; ExQ\Aq7" ͐]Da Af3|JS%8׈qx>_͗bd+T7P'-`=FU:)͐Z2[#g&ɧ{ƒC=/> zw`%k5R\;Ť4^k#5^6lP1C'6!xp^q8%xU/vT'! [!kKpQ-V1NLLs&)H~n; (phwĭN8['\K-k7c=oO D\hج{mRFfw?|]s,yUɛqxteF!PLٽ/4gb dMaqp{3q׵}e/Ni9?1|p >G 8_;Xd]ڝ[S 9Tbk0YsT.m<4̼3V@*8.mEH) ;0W)+`7Uzs>se]o [_y~ r7! knr/묖KBMcNiql9m3?O~m>OsF 3anWlQ}rQk_ǜ:^Ȳ.Imvu`۽'X5+E bsN #G-,` <?dA%"0,98qs+Pz& Ӳ)_wʉ1F &"6B Y H!2,a΁xTn{,LnPIx^_3LV-S4@vY𧧐"]3c;Oޤqnh@,/\9C򜝟9ͨ"Ncd;F2i%aq@Lբ ϒ7% '?I6o>zduC)~vQ8cJ79x%M?ٌx))>%]HRv T&( 93Ua=i-'2Ҏep2~.i1V!)tF)+\+QI!+y}YB7ǨƒT<' ͮɱ2^vRj)YyHI2 IPRIqz7Wkv)ɏOd61I%iN t!ɻ7vdI1S\ ׫wqe||D"t+ ECrf5x h|@Itm,$ҍ%=~g$|$![7t9 Fs^Pvrw}|WkUFG[~O ?UNg4&ONL614Uq;fNuc_ᅲQb< Md1Cˎk[CQDTq},P exc"kICya0Z hSeN'\|@RӞH痌c&gam% #sϱ+\i3Zlnv[!}ゃכ#pe6^Df\<y<`owo!Vra_SyTz:5bn/^EoHh+8 ]X1NMD8]-]z s&Nv%cN$\5wa^РC-*iq8t-mhyYs>$1DJʘ=iIM5ʉa@{?Ι_ԥ\ZLko׌>mHYqN_z8=TS9) *iLDc5-M"+{Iv\:>s70ZaH?ȕxg^3;HiM ;m1%3=fei;W @̑ԟʱpMȬp;9 h8q4␔i#Ep*8p:i:W$IY+][hh8 PgwN Nڂ/@53 ݓN锆>&-R0#GVr$kO2 })3aZ2ݢ_Ҋ ͷ2UM>LD- du;-H*@fvkv{?q2H0 V~wszūmTy^kV}z-)o'/g fdp>Hp%b@ekbҰI"usˤ]}m=z4xœ.)2h4 c"]9'4|h |B?}n':75n#j wyXMÄz`NL5_~9_& yX]a#qkvłDQ"*~?%^~.*E%࠼^9)g/z_'|ijϾ_z=^fƬbw< 19}~џ|dÁ ; XOl TZd{RbsB5ݘO}c|8>\Z9>s!1JuyBrH2bJsS _SO'Tҹ{U_=0{A҂kLM2*G~_XܡzoQYcGgK4gcHŽI 4|ۢu;8 j2'%~ﺬx4vf3 'B7N V2t S ]* r8:<oaMe?^JԌȬMď~/ɗxۯ0ϙiV7H~QcLQsgxBЮ:_;[UG4$"jIali!LN%TXʈHZx|2(ym"Q!w 6e~xm5ae ܸv[ɵ:|F^EO}?'6lU64$:ϙ{A"Oz ϵ__U)-0E4bߔ\˽BX3俦{?L̄w˺& \yӗ򀩞dDŽ"+MH ɟ+97ޥLU ]Ju8r6 EbbA=Īۥ2\c ec:EBp~Թ`KE^=m<};&+ye7y t(1F;\,RL}We^bNrc ^-HyK+q r{df!$P }) Jbc$VP תk@[ԵxDmb\KpqƄ jdm2Qۮ 擢@EV^@@Ӏ!ݵ(DD#HNT|)]usDcr- hAEKuVB^wWHWǾ6|%\0SE@r),t 5;285[͑!6D$%YM(GD4ci ʸ' aډY qBrJMH Fl0i^yλ)b ^m[uya)WIdƬ$?/C0iJ'|y~–U ܺ}Ǐy1gglv$8F۞G}ml6kksf| ,` }cޙ]b b#iȈK&KabHvrW`h̬@xN`N^ٻiTv]5۳H`r1ke}1aY+Rx;ߋ{I_$˵]>X\_|xU v+O?71fcν,^ S<$V5pPIĘ@ĕa!Mb8/y m] q E>'_ ^3ʯ\?^r>[;ʀOƫo[|oqrv)zkz S;xKN\febVD)F|,Kaqxgnя|nF׶}:Y+]r7hW1+ց{`eX뽮9ނ;!kls|dbwk!ұp_>9˞/AEVQT;C.!i$>x͜LfF2-RwR>L~euYZJX"](gU7o(J[2KNyĔ9;?gGRad:yg{xk n?cP7zX~ZMsd{o|slw|,y1=FqBӶa_q/2~83 3[_61-VK^:^G[|rJ#bO;h27fq.}n8@928ӄ'g焋Gm6Nֈd1 /|Oz]YOAo_mߩ0/p6F%UfP6'doFi!OԀ@) g;3UVZ2r 3M s<:bl*v!̖+Zcav2 "hT6."dr2TeṂK7cIw(S6%S"U`gh)@1l ܼ8b Ċq&D_da"M`_[}'Ww${fquf|F%!~NkI) l1{O.ј>[ɊW)M@c͙+ Qvy1L3~=u NG&rmpMKNh+hӐiIQ-5W%ZeLN)rT=+A}f+єT"]Ld~vꊿS 䒮g9%LDf%,Ѓl LW): *wD>e'r A AaCROf&F&'4'I,MK&_Zd {%e<1˾rߠ$G$E_W8_KhЬܼ<#+Ux:|$ TWr6 b,pDG ~m}a$Fcs 8-~~{3-We01tk]pxƶh% $Ά)1'Tv_UZjh,_Q(=u54WJ¹*6 )T51gͬՂ@ f9ON&aL)MRaJ`yUU"  ^֕ QDžHg({K5MuQ. ߿J˟ȋ͚o ~wIղJ[#.) hl'Bc J|!?1?N!3W@Lٺ_|wx|& =?xG_oaܻg83y1Nz{.Pl0ZW[ߣN`Lpu3 ^)"^k"(=IAٺ$A dZ1Q;%5CW]6p,G3tvܘg>rX&Msƛēhn]+~ 8,i7|2IW_Σ1%l6ff qL3BWR~4Mج{BOȓzN=Z%bmQp К{łE9HL5 ;k_ .6,f n,,mυd򱻼6azadX!i8n3͆ÃĻg[yB1]nlq7ySK8zS؞1-xo;Pۛ5/t8s 3[#n60.pЯyt=]S}%TM4[oՋ WRc'`1Yga&Nba/~+ұ7dzWD̰9 $PZ)Z:!bƺII ˭3ZTmwKU*"hp<T:IWWVKcr쌔Y'0RL'UV_Ϥue%Š~h䐌d8E=ZVڦa>(tL{ :]9MkD\,+|#"asJ3-q_-HhޒƄn dnَuhΤZ1)޻( 8lqNiBG4)%:pYi$Ǭ4~QLKۅ֢LFH20hdWيINHNhJ&k (^"Ҳ_d$AŇ0 . ,fkQ5;r0s caơ2%Y PYBwaqdr\15e 1}ISO%i, {'h jP Ej6lY !EyIdkR]W|`Gb776 fC>g7\隦Olٞ59CtCA[coH ,y;2 2($xeANW0kV"՟<6uQUAKjܬa'uИ͟p{r Nf-Ѿ!SJ8,?u^`Ⱦ͜˜2-ù _Mޒǵ8=  PlE ;ٸ2P矻/?"9$zZuGo? ƈ%EF[߾?GgiCl6ORmgcl6Is2s|xr0_ݲMu*=[j>_kLJ,g ;ڦ!ݞWd+u.m *MfvN6w}/wkVl8p|±gMD =zxfw]Eg7xI hj݇]yineNzf G^~ʹѷd2; G#0epf4qJѶ YhGKeqaZ:\ѴmI.x{ @¡zrԇ??7[yw3pe/p/>$8b;VM9tqdL#A5?n֙KV]=/,Ћ-9a7چМЮ:֌C[?^6+Y;K 6LIo .4t ČMcn:<)+̶G0zsԅ:'^*&-oL2)~_\C'+J+媯`eU`p83%چ44cNdG8lHS6d3c} ]UʪcNVLhUc<'gK5V$wQn҅ Pޗsn jLS>(B,%rΘ ^2.[JoʮȺ3'N~/R`t#Y>#Xⴻ@݈] -H"DNif3Y .Yi}K͉ig#I3N,  >iKJ7&eZa*D<'!fYE3l" 9 F 4cb7N^|)'ԍxQO֖.Yjth O&Y)G-#c{r2zk10jbF . Qe >كI@uyk}4ZGN&4+^}ARpْLz\ʛ œgpF~~aє+S(#S{W%y2yFI<ԯ{Py,j| n[WN͇)2tCj' k]LJC]8؞eHҋ'IKv ʧ7f $*.84Wf XuqqKa`G۞9秧R\$L"ن0I$ìɻw'M"ȶ_[o_#?% /Z1ْi>]s~72uD0oܾgn YWߪImV_ΰMuH6o??ӟp0f^}~oJp3rs&)Ff >8J=d6xY,, ~~cM-I_nUu=  0$AТL32E-J~gG8¯0e a [mF{{zY*3Ȭ:{z! >:d O]:Ϡ BC >QWءŕBTmX-ϳ[zRѶ X N(Fgz]_0U5(1ڶAG(θhu䃓%V3*8r1ecn< M4Z@8ј ZmzPixGAR\uFɠӉh-R_ ~AUp5^ ?J-*lɪnh)A 3i#m2%_x'Lvv8wb2Aj6,,M1kmsҽz;oV!%:by}ΘQ0c#b9ʊhzAnNoõKRQ-q!f@5yY)5 k[ AA/)8e[L1ImKZ~*ƓdMO@O:B-%ʸQ6gH^]!1ҡCb7 9i6Ǐo>Glb8V% iGZmfexW"@Hu1dʻsX{]Y$x#>u^wCag4mdK-Za- +VuAP‡9 C]oC*Rhm΂֙]%MJOUC;QP:Ci&F$g׆Τt!,ڟ>CF!Yw@ɛ̃)R=F2j"lTfV$:TEhA:=OQ"*IBh1͉NiĶ/ Th Vk1Jӊ* w53d {يK ;Cfg,4ư]LЬеh\VisHe:жS 0`}~8m!v|?*0Bt_YZZV:T9  ' P؆##dq8{m^svv\o[ [(utF1фUMãf1gfnd<0oZXRO>7:5Pe?7ٸ^[5@ 6 jDZ ߬h 1">Ze%J @J3k@-Vv'<Ȓ\ {DZ"(xc0F 0P15nt$SK%u^"XmF(c.%{Җvm+ sآȯ+9=>a>\.Ni߿I!( yV~;KArCcіN]fkA' C"c#Z^hm CTBh9U5mGՆH N "1Cb.B0ÿ 1ѱ &ˆYy-CBaml>c n|Ay $Y,4M;o;qӉ()2* *CBe vAlM|/~׹"bÎCǜ:[1$`=m[/W_3N]7XTwǻ IDATV + gpHlX<#oXVh nYӄpXfWxh41Wԋ%SNNg`Zf;E@ϔfe!^ͨiV>ji!F` :e ZXx )ljK~!3x2x~‘hB3m[\aH4]T%ʙXشk<&cI.Ek#un,OEaF kHi_3KO Liq:Krz;#䅋.)]Aȧ_bSW-7pr:gXD#>[#SS\Sj I0kW˿5<}%о(Θ,`_cRTg@Z{|5:@ƃhQwH}pm EEMR%v<)r$`'\V]+%{!aY̧ Ŕ]8"Om h~|0Iݛhz ԋ%gm.E2+>=!Bb嶫%o|[)%Z WR9%Jͻo_g6k;xg Qa K V ]d٠ IlvӮNY ֖,eY_ՒrwpSeKQwHfS4M3Emb@kn=%MbtpG9F@ EM1lX›LD.v9 fe3hhչӉ@"ٲE`gdj0Wt2'/;t>73Y۴ ty Ja]h-JuO` U_ mz|]hoɬ:FD{ji1*KZDהh ̯x(-|'m1 ݥ~;- L>=EͺyT*=jì\)E@(hb@y'DWu $f!AUhchV HLK쩨Ҧ, [euνQJr苙=]xH5KA)_˞ SaSʫ$\F X|W&vEQhe˿ $6DM7ɯX2a=NH>$1ޕp`W|s`|kgc¡ 7OyH 7c9A*IIVQ @}bȭ霫D/Eܩ q]5Lh{pQJjÍ]^K;nO[w?4os?t;/+jTŒ'w*&$ȇDQӝؿ"G#Dը9b@񕢥zv7w(V@Ȯn-"!clDm[1%nvrS, %рb>Y̦,SU{wg#^P$ia4m4~ {|HO!XBK:ѱ;$JtfO &p>Z4ƺءw5l [C0 0yWiɡZ|y3g<qu;mmj6Zi ,iB@&mj@QJ'P֌GcLkMxȗ^~_zþ ":NmMkьomV g j7?r1O̓Vj,%A39Ɠ W\/\xѰ\RA[(vɦac)z'FH^{Q$ۇ>IK?m{fXqmPs@M(vD*0R=p4rLƼP)qd`-X 쫆Qm^h} vdY$6>cѓ-/łƗ#%A*^A90)rGwMJ(RaIN@9=:bvZKQ U8ʽ=^{fkd1;X͎0Tj8d>3ټj#w&yWmrY؂`J{;;"ɡ9ƣbHeYb{OUzI9TY&Ky4ECPc{lbf'%H4":2[IJF}%)6/E5}o^; okaKE;~a'8EƠ3%3Icv52s,: 2Ysʱ( c9P׫1zUW<*В#*5ET\P&#Q,Kɿ>婧K5#4M*w#ͿA9S9#kP\TdMP6[* g"3a=8:0]OIFJ&Ԡ웻V&H>F2sN}$g5~wU߽j* +16$@!_(`nqe2#}Jo}?ev&#l׬}Gs;ws $ a۴9VQ8CC5b- tO/sZD" :*dĹ3|// |Q]m+~ֽu׺q}ax<|HثC:#Q>A|Q=8:P˂,e#;+/,3k8\7ږIѡc,3a;c|C P57o)0dDXY:2(1ֺH@!UJ}`#1F1$ 9e0VAQpxd<-U5$Dpڰuv6MIu&1*`E {0ÊΟeu@cruҍշkcmF۬IM"ORJ:^r8`4cCiMUo!Vɠڦ4Y58`P|Kf)\:0ܶMrQS-f\b[, F.'A*0 - RںbpS{>'ox~Ҟ||b$H "FJ{Mg,0ӶKgɛbgmHBlο:>0:/iB7g9`Ce棐Tٹ;I[b$?#QBT cm#*JtQ69 D'T~dzƠc }fUHh.޺4`@tݵ6CJ|.S׸MjEd~zoÑHzbl9jt6hl: !.`.cHtH_ҁ1"Mj>'ԫGNULALڃR;_AENɳZ %h4m $$!%AA6#A b .J$cD+3}[s Na{ n\XL KcyqtzJ.cwﳿ}yHS*j|N 67 2m ?Y^g=FCĻ =6B04=s̞X$~{͊\~^}Ch8tF_tcy2+O}f53iz|rƃy{+^ݪJ)yF4&h*lё|b{(X#*JHtJ AH2Hɠr9 ,N\NEEh1h@VhZ&15HI\YTDO94KﻴmEx`7 o$mO[^8ّ%oh{lk +8Wc(s(H<Mzc@&Gh0\Ķ4x1&K-JzJ>Hrg1!zj(bÔjKd<ί''uaLƷU6ց7|R)5MRYjLܛ8eeAJ. ;vz7%钳W:2``R&ɲ2[5,=@X\I\*{)B.1g;w&3+LN#f/}䘓cF$yyN‡O>MjC~^̷짙}i4ڤXPl|uRKu24g3W+sGUJVG4apa ^>QO};-]n32JV`sKĄc IDAT%qvT˜4-sMi^>]K?yP}?ϽGzMzp0F\tH\Z̰L0ݥ5&_PEt]_{n!co$)WĆ(E1(@D97R:UffGE#ɘfPR;l HLMrxE| bOqq1V,"B^𦦉-mvY2PinDzFEYhQŬ|]|H$1)zqj0L?>x2&' '/iX^*- 52N2W5IؓM%Pbt;Dσo=ֹ)n%Bs;/-'ESWlvAޅv T$%3tF\"!-Jky]*ɁD$|ΛJbScԘI|wߧijC._x , % kд)t-*^ܩaB M麏'V燖a:'E& Ʀ[%Hc·>slb/-NPraX>Vcќ<2kBeW%lT:<;k"[tO# ʸQbNSHm֌Д(18mԖ.(ڀ@tPT /=Nj^dbsIIy,?z\yyP7Il[ܝCٜq h`ȳO_dry{S'`jc Q[S6svF@+ˬE(ж*7cy\e98=&*f8K};J|cv3O/0i7L cdR<fkE=sөy%(Šb6J[L% P)Btjt̠NG?["mK\1(4휺>"Ҁ*0BiItJ}.RjFUfV0r@J4sCWR Xwx3 + &nIqpO߹=h$|^V=3_&&bQ̌ ޛ.Z(Pql# eb]i u3#bP떴uC#D\Qoy~y5-q Ҟp×HI-bl4/%^ KG]Rfb$D|@/FR1[%}:`I' `$i#*͑{ãDǘY]Q3֨ʁiD)-  [of%Ft8==nk[8ex$اQr3 K/_^x*Ng[ƣG00{GEMĉ!Jђ%*nłzac0PMbƘB\g !=ss{\|3\<Tn_7= {xxoZ4'x9x8ǁ~2boAg J^ Θ՜p _~HRø2Shu=ET{B/L?; B}JYw)dΤt%5z\٤]T:_a ^=I^͖H*?;DŽ3T!PVIkB0D%6?]ŝjkݜِn<>++RF#o1}?rmtͬEDaV݄C\_n4{5f%(Z,T(S2O[zI@=( P[`bumcjlF@E"ˇ҄o! ,cBl3dcorBQZgJ"t`$Z㛆z6er~n*/S"R{]/+ckPڵy)m*,K츶im۳'=NbM.>mJtVWYd/Y0aNyMj6O. A;*\z%[=1$0DI6~!CKsN|>>~$\h*?E h)P^b{tFxB$Y1бPR$J+BȌ8PCE $9Ʀxߡ "&(+gvrjv7W\~.m3j>OI`]dxa??&Qb\2p?[qJD@i Hk)OjLK:Kl U[n8c8p-2ۻ{ږWQ~)_;O O m){P… U\`bS){q Vo1]eSbT !J43H*%/kl),$ vD}|yOW|Z(3B9c&ˎ2G$dAu/?G䑣/2 Z[. uPD?ɼ>Rd`CgVך%APJ*A Dl6ҏ}-!b\`jM0/"1|DjlWt1eۖE vo1Em46 sݺLk5A[\ ܹ8p/\p wkxC+--S,c}!A[9#ڜ()]FߞRlOƌ/mn3| /r7AK tCe W[) BQnb)14lOQ3`:{О׍Ԛ?1{p@PЁtx"48}ˆ9*sNք>VvuTZ8ZW qZ6 Hh~9ԎS;Uc#=5 89Wls"c4&wݜ]Q' Ub'Xk!5(#:#䂯9Ob\4`~U^ż.)RIIĊ缚&Rp+XZe+@iVoX4pj~=~Ib$| *3J&}Ss#`0"}"1 P)^\|Q$q(1t7ZQ*5NkA3( ll iۈ ggޅ^ 8v)^`6Dp[|atoPB%QH1F^)~?/}ʗ_] U*qz#< {9? m2?s =J&2u|w?n< L>Ja4o~ XxtIxCJ~Z3:{j5Dڶ `!,  ,;S?{E0-NжMK)ܘ2!%!|칷I{I '}֚}8{SĆ/{olGr̬ @{gMHQDZfqh4G D'#&4#+fijFDRI5^tc٪*3_Ȭ:uo_4bw!!;@=NUV֛,",vϘ֬׃٢(b09bb [)&pot;lned2OOqُPTރ9(Grn;*VX^}Wp]A\̤<}2C jH2Ҧ+7je%T( %{YB/;HN˅_N~=1)$s)eEQ `.e+=1DY:sB=N;͔}kL Tɦ))ϯjdTa_Mbh_ f1C"zŔu!7ON.˒6 Ҭil&`hH4tumIfd\R`>R f u  ԳNXOjSH2Ru)DQ]Rzty*HH#(PuUIc֌12N(O |H+}rlzA%qf ~fr] w"QJb1F& -!ߗpH0˦z{7mԕk{x,, %l\hha>a?T/A.Qv{7_~r:I` HQ͆FE"J9*0PYX9޽˽}.>zrgsO5D[OA-VƲf0[Q!)%vM 37 A,{QV;(EI$q-m}5D*)&]Т$5ͧT{v$ `tgBs _]d4ZՒ%NB‰:OBPF~sc|6HO hρT[ ẅ́/oV`| =ڋI>qV8nZZX ҁd{>68+ eU4x=M E]%`nhhUX6K0سb*)X+െW|OAhhb>RE q'@vv2-+˧w}2)ߨϿr:;2e%:j,X%߸y ]` SG؈=v~4㞽@( pu?>>\Fcj긷f c{GeX`bo«esk37l5m'bb$?~c6ۛg .N ҧ_i@BPV/|q͍ 2VrȂ0FL_f2tK??_񫗙G9n;k]kz /sj NrvPx3J 7r5o ss|+[ ?g`clRY+ hgh# j.`˔H@ =6< IbNG˗v8U^~ F^fU+*@1ս&eM3)8E1|G&nmCÆmyB􉔀p)xc6[<&iLjx NiZpTs[㬎ɵӔL;tSQ-=,O;Я[A=՚b&j>[#TW8& EYP8qUķtV7o2],uAf$ܡtG_&`H0|pr<:/Xlr_MiYR6>cbJ,!ƀq(^fUs|pE;)䎝16{ jo9X5L-]ڬKi,{{L7L6ٹٌ=ADUje%1NJ\_Îї 8]>fpJ /(wtLE**> j26(SbJh11zdӶLɯk]bkRbJ9Fc -b9Na-64"m-fWټ9vSҷB. םpβĥ }.ɰg4 JIBᛳcds><_s-׌=ܖ+1O2~6H+2tg,|YFMYZzކG:Hzpmymqӛbn}zF'gZ>O^N@!-v9ήk&>5烚Y|!X6g ^s1:A=;|{ ~'INƤ5UlUD\h=.nRSLYmbbM.)wx 1=IpuL/`-{Μcu -#]1)PFE)J&R#㗈&HMB!QVj5xjkՒVmؘnH&B@P2/f.1N}LgbO{usyɿ?#*P+޾ Ҝp+ IDATawN*&-, U*^y7iB9lDwchmý!wcO~G<\1%(a r6Mi<pPhlߵno2$`:IWVqfqnb_=0ǴۍIL F[$6a-^6#Bޏvzi1gW$SQ$S} 9LӻB85~R 6ua%1JY"+PU-R`!\\3/˙,lGڶ!6-łd>I%PO'iHǚpA3#BXIw-lա[X{t,eK4}5$UFr$6`ħ}NH61LIɟ֐ASiҙ#?|jg̴O,QU՞زkGWx(zRF(:FE uP{?!~gy<V%rG <~yUEM0)I{0g;o2{G[S'>[`+G,|>Dž=:?ј@amC"*- [[BM>}+!ob4tsg6q[.>ʮs8x!H༥Ơ$=6MJSlVІYJ-P%:k;{sưJlӰ`) 17UbSn5b=61 |OӁ;sa2/ޝ^İ"K Zjf\k 66jqHUWx"hb["bZ xW„ڙ)q"5nװZ{<ҙu(Q Rl/rn  4pO>3;pz*eLj>Tva5徚ADQ )D V N-!k3 CEBɫq߫3Z-s=ҥ-gBx,W\9g(C wQ jMſz^Y1IKu +W'5HȳWUipyBBu0ƧMrLf}?>͸ ڱ=׵IAN٢>E\B>}^^Z!.͵L&c\_38/]ҾNfu@<g}wr|9}O{OuTN˞aU1Hɿ ZX,1qΕK1x-C+S43P'8EjOloksvЦm a;udO:+/Ԣ^ytwJ6]M.g NLT퉬zF-0Z15&Xm5 i=ՁSO~m{k] =cVmJ!;}bupw͓ijbH |7rPUUUZ(|{&ØC uBc eY tACk {*8d8o‹\KF1 `b|$ٵ8"HY.l)ƅB1 \ ߶WNߊl}l2bk2yPN!mHV9zzb2Ⱥ00$Id `s`|ML̤߭. l8om.C<)ը!ZK!`bLJCm*byo|İtFM@.0^ͱcch`"ނs5[%wKJA IpnslW_G UX8ai ~5|'7pRx1p5()Ʋ~ݯcO'υIu%:6r.#ɡ !LWPĴ9vr'X&1ӛt ՆhFyZ.-(DQpes7{eL,MJĤ ::$51l91bN}b,0t%hK,ʍ F[X;fU7410 03B{L,$Í1EHx#z0F,#ܜs(H t\=:Y;W/_0:mx9XD+w%AlLh2nh o;bp@Xv* ըs) 76[,s,ǜ-kgBT)c`|tt̯_v\sU"wq2pi#؆`ֶ3DԴnq5<7ň=Q"{Z$`ro[JbdAw<ЎXk *")DB >٧J hb{5mX.{MDel ʱekbZ0o0 c'r;guKo}uiݽu._Ʒh 1}1nsg&P[R8Eq:t:'sL@[*3ɶqJ|c}7k-@owP7)kW߽yvǸ<]*=,9O dܪ`4PZ=Iy鱡4Ƿ?9ϬQfN8n,^h̙\x1['n:Ğ,[_WD3-hHM1Q5fCVBUKA '_Ͳe9R)E%:7QS)Ҟ!2ҬjjmKu{juWV XղF}Z4a]{;F #BQ2Գ;̛6&oΆvSS Xeg;š$$(F"/>b\3ӲmqpbjQSjR kaI:'4 1'J]74u vl䭓qA Дe8@7$DRm,%~]G{o|pْux%$0fc}bM2(*mЙaGZ-F(&fOE+S2374ZhQ)# T;s($T)cKl[h[l^d:u@MR:G~Ķ*&xk8{w.}U>C_|骡7JYZp]_/{'.=ʖ1`pc 5r;(4O~ҁ|iU!\$pag־(81ϾU1>)4j,GM%߹s)IB9*Z-UK`m tƔDB2˷-@3e6_ڒ&̻{$OVKa- )ozIkURĆ r0!Z".dM[&]' ]B\9ʐK9ז"͉D1mK~)h:Mo?0؏b˂gpE`  wZiH@ρC*L-)'.9+20Xb dΟ|!k'dҮ՚ ʆ|\>x''D1*1Y(ҿmhM7I[Ǟxxgj"EJϿ}\}J z E?8[-}xx/7XiLecygE楦֍X0!}!<wİRN4 NOR|?OQjrv6Gł.nlQNFLP;^JkdSh`glTPr`iT< up}j*²9&{wY,<ܖr6v?`erYٱ;W,?jU O hH1P?B"I7%d?k$&0vTԋB|'`}:(&8㚝5cdx} PUG3TG1Ѩb2Refg")4ʹnh%n`>?N5͖F^Ck?d\|^zp<g %=[̀ ut'n =`)xv߆Čib{t{@*gfZ,.nA4'v'CyG2"b`9FqUS؆*&QeM A_$)`"әvLŧ'$&?@1LJ2kf)\^mEb,L'`/it]fZDl]C@CJ˙d13bl )r!0Q ) 00MkBxn #wDI A =#]M#ڳ%J3Y,E}#N [.Al$==A$d0J h%QKxa88t|6%7kASpB|= wa?ߍ|!RXYy4$ٸx9,lN`dX<ȉT9Ii] 5+pݑɋp$,q ]-kV;o|vCh SB0]k{58;S\t^ӏ<8iKl||Llx]&"\uzbQD` lI%rF,eIțB%M.V)WK6 ;hPͱsz?=|u1ؤ)s<'y_U(*ZRrm MkhJic';ǐј;mw5&Ơ%bMj T[(mx8?^ c (h}x{byPk%1MLH4Ki-YF÷ZE_מL,Qڔ{O}n^7zb$Hb?܍O㲭A߾2=lQhbvXE.c:ꒂwjoˬHm@ B[]#$MCQѐb5Ĵmf'/O$$4yr8yym%4A O$:#9#'tD+veA)R0!N]H:ǝIN d69/s~]~҄]d9\<{ (Em AT m~>966r XzV!t';q-;@H;S6r5*'4 `ST=_j;ˎsk+0sM{z-9~;A³?kb:E3߽l]zi&cj>4aasgWMۨ1qYc9>M4biYB-WRiD^ j lQ&L{C1BDbLW :ͰءB2㆐@H7t;ŘWl4qlkk'b T':*䠈HB^yȚvu8 X3`޷ԣXnX4tذ xy䘭|(;?#mgi۱E:gɡTMwXz;=l 鼘 .FY6ySQǁyo*ܼ䧧G67hLa1o>uF@|^:Q"{1?,e,Tkg.-a;8fh0LMd<,3ϲq(%_W8F#F#W #vV 'v(ptb?@(UYSO1w)xI̕ݝ|?ů/<&;DQCW ܽs1#;:s fTOܰ IDATa2ٟ8?٧0٩,tpx'T^3; d;7>y {yџ^! I]rV} SK[LP;8(]>L~+xuꗾFؿñ혣'\ ˛7R-{ tB1Lw,cX=F(XՇeԴK;P 3ԀB], f!&oS'PhrJ8Y.O;0s +1Rbhb ceֻ5uᤑiigk ,H2/WgOwkz}uD ugy[h6Yw~O}tk9Qs--|᏿ & e9RE(08ƀ5ygll1Vst{%i-xtt2Oka[I5 N{Or R2[cTZMDV/qWN|;{̛@-uiW B1Ee=#2`#]|4sC*+V- +D b\l1XdRYc5=E`@[61/6y+DǷ_dEJ"!#>)k td"-&~͗c œ?i_N'y(}X1&=Czcw6Q1xiARn_|޷i) D( Hf[ 1٧6UPHM-롇x8l<&LM~~tw̒lkNۈsh %'C6]G-73biQHUb }b"0Yqj5M748H[!kd6`IlCo 1!(ylwlT2찺hMO\x!tb'N5)eac͚ GΧAdȨ|Yf8scFj0 (PTC㕼W&‰IW`.eTdE͢G^\loTN((w7w > j bKb#с!sK?Ň_f\zC6$39b*eX,Fr\Q% Z7#sx5=mxJ2 &ªy~Ǒ?:E Q/2{{j#ִv7y V#Q<@}e שz!j\Zjlb^C}dZ"9] A;*,-h@@F }C~pazMMwyiӲk?s׏-wΰ_hh߆{L9 mzA|xUIϋVM 97HA׆DY?ʉuzx,g\͢Q\iۖ+ ?sXQz'zRFD D< ӛ7bE J/f˩̀%ONXy>|B jQ-&}=@OO6_?:_raz]|f+j1f()-F4mMPajP"w_b{tTfCƖf7TaY{^|&#ZAe [4m s$,J|Q~w?'?lnL2@33>m}zu2ccկ;Go;=(xطx}x gsmj# W$sHlZx9]W{c^X8:oY*UYRZd!B[/CۺL*fm ԞXD,1b)h͊], ڦIIO/M+,g\Z.i ߶!45ªu'jǮo {kJ̌s(Ɛ|Jj297]#+T,^DV0kV\fv'E4FB C4IJSRӸm5>8Mz07tWoS'uxE2hrBd -1|!֤LTMn:N([ \M2'0g0KΨHMcKU. %57D(4wi+H͞q lfssc"W|eQSuxQB0o4$4$B[oL}b4iNw g'Ŋ@OkO:a`Eei%DF]Ak J3+tI݇J aW7:ʒQJ1&cƓqߡٷ;^1پ I^oɟH!p{+_ڷrL 3%IǥW//|$me}ysU]/3ӳo$5p%Q"-J(9lь F8  @y? ( lXBR}"5l鵺YyνA?@T{s} OcLG` PjНل^|h䍙2fkWƕLAQT)AC)RӬ ʆL< !oEJqA"(T 0Y֐HKA+q4U ZE4\!M8ba0cLD]*7(4}@Do,K|mt4ZmDlXl:ow::}o&E/6u&>oWq'T1 =oO;Z7{݌{ 1|~[jrqI L)2II t" fyFux_ǍEX"C.U `hlLiwz6@PGS>B!dA22͏2.I!ĉSyO- l˄0eQE}ePAa_cgyieۦpjǑ=[P["A X…`C!"45,*,qM["V4¥g %:4ZMtȟ1Ӈs۝ᓿQXEj)[Ok37acu?>׾<>׶+;qAӝkw~gϣdDEH#{LvԜǟ0hC"WNm']&߻۾c{ tSƩl%&9!-_ޝx7xnR(*KP|Es&r<,UaeASyq 2jv&~v#D O*@9\pkMHT`7mf3lJh hW*,kJs|9>qjcUVomS2 Svy$8)bд8[JgOCVư@/|P % hʊyn#9,h6A@W$Y~[+'vJq]ikDǫX# a._:ωZ3%RIX 8LUGڂxWظFEB_Ո !\lZبWE7{㝍{ 9vU:wxo=Q3ljP\ I ELEE(f˪ {CWkZMFJt.9#j*'k&4Y*\%QZ㍚"tM$hjdn-$dc*42LR43t#AjE/4)ÂI2h/5Ű>yHەqMT$LȚIK52T_VĤɺplHehT SRfH5$ R)$ZIlQji`T!Hd;ƘQ7BS{Ӭ;c3p~y"pp b*ܷfo@! i~X b (UʢRrZff)0^)T"aV̚*PyMS$Z%)V"nN%b@9TXH<׊!nF'Ry (+5bqk8RҮ`9k͋8x㉇=fi3þAmBi;}(Mrfqd߽n`$v')eت`&'{,pD*A+*[$ ߢ4Hq/3 H)Q"A%]$IST`c'&sՈS&YBe$CWzfѕ9Ԓ6W2^Z${9Ȅ#6-^+p k^ya4ZcCHE#4&> T3* pT<(E~wBHjgx 2$h%[C1m&)kobHHYv8Y<=N;(Sp[7@g4cc`PqL4iΝȍk6<,&>zB>chf*BZ)Q]s'Ŕӽqoqo6AJBVf;3[)JNedYbr___cF΂@t8v<Ͷ3[csp$s3i~7F0ㅥXoca*7:M~w6֌cOJV)k7oTodN3C"H 9>Kr(\*nog"[kNz .8Q T$$͌њọbV֫o:H U*0&ʰR;6%])N`s;ѵw8޻"s,Ŗb$H%Z3UD= "JbBG1s|+Ϡ![2倎nu9W. e<~}Ro$"pePq~ljYؠg` yIH D 4Le[^{f,thd+ZsNȌ*xYvy23yB`]X[_Ev;4#+'RXL IDAT[i zhX՚C݌_N$"o[ z,KWAa:$  yIv>xDZ3z\ jIpO,Y QbZ]7ӣ;hH mJ )r[-c,d<%kdpnݹ"=B$۪(i0#Kki%*&[zR":3a13Ix?|m)"NS@nb(Z#3E_p,3|6OkynK {(߰lγ6q6[qT<A52 9,&o׎5n$'_t<|3ghd/qTk:&O?8?Ox;i>XnOF^:y,[}\t*wz:3Ibi_~?WXL5)d7нǎC>]sLmo8~RxG19 }JM Q[ +4â.8(2'o՘|d)҃JB BQV&LBn SYiqu:s-QAj<,*,KX<ç˟OQZUnt<__VigeX;h3YcF` *Nhd Y!7}[j eoBJ"$msʧ>NgMo4bPV8#Xv2/v,E]5h)B& !?~àVq* iB(SABxa;x\A K/4˫o"$FH{=~y*7}J|?͌iλM~~ךh;ϰ?`k}'5S^~e>VoJ}'yͳyΠߟbR׍=Ï};cZ69np)&^ns;y{=D"foWD!BƩ)]FAB&2k=x3O?㇑ZPyK>G|o94WUS) ^Jd8eZ'xrV SwoLq59 gh2?R%hJJօ EE-TXh5eN^䘲{C|ES,E*Ac0E-r=J:%Ͳm^z.`m;&s-.МihAQ{Zt:AyiK^5\&s2< -kvR" Q5_ra=_/s1Ф^ ,LI {xNY\L~,p~*wv)FV11EZ4S<ܾy~k<6vs{mkc@hE{EaQE$I,$yH@)@&IUw+Kַod9I7ڗz|%)5i,>or#$覔ApS|>3<7kتz!7MɚMdQMҡ}|r2_Wx7aKu׷pWvR"}^)Thd,/^@iu##(] R񱻘BD>YW0Nw;ȟEm,zD bj0fL8$4OBq³269hZ8SHQXî6$3Ú|ux"G?ElWtB_Hv Y:Y^ BI8$pHCB_)nWvO=F S V0aIxhl yxnE-#ְyC6gq { E3ʒϝ=i5iu -XBEcR 4Jq5iI`>P.t^w0[CN˔ξ9^έTdXdLڛ_'Yw~r}EHxWBSn;{&cNfQR$:  1x-pWpH+#.jNPjWϔw_4c }<ڵҙ,sˮM)D¹R^ZCK$ U^s#Ƞ;T,ۅ/8$!o</z;g:|4:aI}m1Ls6:xD  -$=c'HQvH Xy|8}tZ.ϝ$w+a O'{哟e:45 QU1#ntf]Qwg=s?8&i1Q8u~O/i7w,aŅ  ([؉dYFU\r~Gwv#G R3]Z6sshInutf%21lnnpu>I Ly7}"!՝_^XB㬮ƫ/qi!kΐ!e`,MUPZ4> xXS=ոh`IP',#޸7q *$d[ pgFdPJVT18//l4Wyh{_3SUkGM*R53,isgTU4#ɲX:-IX5l~XHH ^)TQ;ɧfiqxיkgxǸv(1B|+lnٺ֭-PͥBWI'YƵWy챇8| ?Ƶ[ *&Yz?/\esʌvѯGYcBd2qb+VP()6(Of}ݱfb@1^|F;9 S밋R픟/=wW1 SנЎ(" `@i_9jTl+e4ătѳDA)C7J^~/8Wr2no)y⡧i'I &, +%G.qj& ^cK*@_vJ8V'oXgIGWtF#*@zybnM4nvܫu~Oڒ Ʀ7<ӝdc&T*8)BЍҬeɡVNos_e*T^Q%m$ˋ!%2m } AW?a'oW8_{ XNLЃph)0X*)12v1q- <(C}*_^d]5{/G8Km.T2w+83p\Ȫ)_1bzGM2d|D]8NwH_r[o|g4 䂏kp+ay*<ChTB2TRʜw<4|wݰ!5H='-Jp%X$fO@ : 5>S-skF$c]aX~c]}hBos=6no=Ǔ?#>wWܺEUY,ZZ/,Eؔ"׾~~) oBtyvoyn`5 1EzR{tb#șd'|?͋NrLIUVXKdh@9uaa9qwWC \qӀs |)cvTazo?1H>&%H\Q}W'њ$x?)6`}(*e|Vr-fLA,S ,6drkǥsvs2x'X^X`}jMTNY%4%ogQ54"T{%je-RYgRƢe Ry\+W/rs&a_~'}+Jn $:lʹ-oiT'O{[}+C//yq _3]7 $_7HpXβBDIH S^l{#՚2[Ջ ecP3k騘:1;{ scYn`buF##hZOv!0q<)yd˫׷F A*Vѡϯ$ɟ]Y,BSFL+H )8 JNr R`$VAZ?Ĉ%IdL @c ڃdžX rz1܋!D^<:b8# lbduwICVX ZR¤n9Q M\p ű? u ^׮>'jft !OM5m2 bq"̥< F7ŷ <_>KW6ZHQ%TC` 4&$r"SaBq@N͒Btv7t fgX3TP_@R0iDknS+4k?8`1R)QT&M9bZ{ ς:y]wS/Q:Hsyoq,e&RA(NsTg*sX71{D4$~ggys[;r'|oE0q* sΆR`҃.fAOYTXpy1N8J1<A;dD:(BF(Ehy>N8ĕ9@P7V rFl]N pQ:º܌tFO`_/tbƮ-]ՠ?1N2; 2aIN@ l@4dm$KT8Hn9A/k-bs_]CJ bs8&)ˇ94;|+C(2+:V7yGPi)q1/"1 Sh'H4\(NvALKAm5u]:Ax %oW2P̓OY8vvLlٹ zI%<} \. [ذdIF>,HK KK!L($$A74NK X/1B`.9P'|#v~̮݋t`{Wq֞;,6 ӝw^JT9SGZz6b&p}Ғ)вf85͕-v IDAT ^l9a*+t=[]XcrGc#Nd>.=!1:^{itG4H%C>rgRKHɺN1TBq~mm弢 1KSsf% ,-Yr N,Ohm;:Ű?0oƴK\jǦ ϳXϿUQ򬦤w~ӿySШku&)in79ƅ0ަn裏@5u f3TU`cV@':T{:33߼"H(c:}xܩǑI-@;?wz{wk.QZIb(IEh9~Q҆.YcB6SI1M 7h@Kb1XV)Iq z8ㆸbrn2-+AY:@ *Q^W2IB+ TS I{>mDR6*'1%5/;VaYS! uy*}`#bCåYo!l<~>7-ڭ96e5Zktf)JĐj,RŰZޗB⬏L>h=p_-a>:d;O78F ڷ>I=m^E@s~b7kn1xw-ikXUItyчy3lnn3a[7т, vaHVG>,7)G#L1[^svw>._g4a*7o]=ꅃ 6$E72FJij_ d0W5KCPM;şjZ:6> C{@ чf^;Ь&U#37Ԭso@{]k_}t-%~~\P\_{p@6fc9Zj$dIOEZB={^m!pkc2F Ja_ ׎fė z)=qTk`❩OCȓɤw@{4cv„vD ewgTx4F$!Z~ɼW1W}|xAԁCW)+{\ Xj6y`nCiE=n+WS9 H|Ŝ"^3܇9UW`dN2S٢(r FλTd[ R8o"Í@NJz+WyY)oUjSVg*Jc)*XE%^10.Lv8f C޹qnVq8| h)Hk-]~^آGރ^Yqc->CM|Q`]E102TtBp* Rj 3󡹦s[LK1&Eϴ֢ӄNM iiylUP9±}&VHiLwdx UhSO=Hǥ+spVDK}4Q]3yo>{ سwK<&Z!~4Z ^}eFyqT0 @؈bPãP#$(h4I2l%D%+Wc V*L䓏Нʋr!U^`KDžs89{I$]}kC':|zOmkvtf۴f:dIBYYw>- hE5h !pr.{9ܘ2 f4Svghd)yY=l5BZ*'dRkuxS~;>3Z3on5jtɏfVa~l/GgXbEEve[P"PQnC"I2({Su )mCr6@xH13R% fºRt;'_ƽgSL6mps8$p4M o^%OEx3SzVD0cdQ2+HH ]f# ($I:f3|gG,tK&Gd"C{pȱWƞG7uח2淳~y0=>#uuT{xX\Zd<]TaE5:xtGM]e M po ;tD@I&d`j\1 RKiJ),#tEQmoRdm -G Vq>uW&)=J A8rJIƣ]E( 9_|0kK=.]p_x2b\):^EgVZ8VFk= əMshL=\\559NMcȲT8[}ބf:ac}UlQ) ;׊'/~\rhP=rzP~}oIn-X$ C2;wAFO>O=ǿ$ȐX]gC>d#G)غşɟra8)v26ɏ_{cL0m*t t3psk/Rd\$;YN=8/|νɤZ o}25(E<S :[dՔ_9/ZfHt2^ٯ|gW~JDr"V.B&20#;н./gssqU1ڎ6&)+@h e\V2(Ō!$rIdwn@MLe]!B0 9娶\|bno/?ɓ4 Eg:2ǿgog1!(XZ[ y'?Sdy;ã=ʡCX\YK ):t;XCӘ(Oh'tU6F2QYF5-+/xX\Z'QWo:ou}g{`pGu>f+xv%RvvoY/'|lkB/$Zeؠi U )>$`EIIhHJw١,ZO ij>s62s3p\jFٽ5*h(10aygљ"ɠcyqn7TpEOoq JɨTpLeѮ%YXJ%|7. nX[]a}eMF 4쎩gee#^"Umxq:.qxa "';_|śD,bIL~5}7*_q!i }_ |~?lJ"DPZ㝣&8hS(HT1mքݝ2NTCԱН#"1 K+d'gay~d>/|t2k 9{}Μ:'>ɭ\ƒ錺}-Blo(K*}BdyJj!.~l_SNgUXMS :+y +9Ƶ!d9AI 6cnlrck;F6g$07k޸;O,5Sed:Ѧy} HCo.$ZOmնV{G'Hr#*$oS?,N632@yTJ\tIɴSHXtX)'c  rјv g*$Xg*>v#cQr/p\.+㣝lqtq*FoIA2 L1!( A F!!>"./PxC=ì`m3ͽ]ؤ-/,nޠu3O?I,?i\EoC8Snmy{%Y~%y A^-e&0;U왷Es]3@XU/<̓'F67ZZE$d\sMiI4y!$v>2Bpmc_]71J'0v </o=7Ѹ)dfVbEGIP.ޣJ_"eh-?F]eLrvS_>NB8w8,VMrǻ!&s A7;HSS5\c62+!xql!2'WR8uQw:.7wY+2.bM.JÄ@ 2kNil{ @xS;SА1E'P Iebb M.ɺV tzOApGCjYo!^-9 & ;nqUyp_z2te? Bi\JE'+L•U:q[[u8t0++x;TuM h9|EQ7%^M||\Z-zdJY":J,uP 21YꪦjVWWz1i&T3Ku1WL Zg8icl1.W`AoBJ`yiť)ȴMֱ+=Z*w,v3p!8Α,JE+I[P%y&Y]r#oqyyMCilQ0 K<`eia&Lؙa'`ՐCބ ߳T'ESgH),B^Z)&oDqJ.QVٺvAщNcimE{xqE_WoAOV%=Y '%'8KS5l^gC7d4-MH^#ZP |aJk5 TNP",#"֭ lmRV5>y,Np&o)MeD­]GGNwɍCHC&&7_DGg/>O':Ï~QH O x[g晧,_"+Ja2G771>P7 L#s6LqmTt@ i-= B2Bn-KM~Ma."MgA $>ßJ^Uo?\lQ f0 i7W%j 9)62T,|i, e!@az:AL'TMA?pil2FODŽ(o ԽUi4w._bc(}؃P[LLQ7 48LJΣa>IE~ѕuN,o¶B|H!2Zd(,$d۠C2Q{e:QSC"A"MOl23gT]r>}vXLM"ݙg"<>xkPޱ0x E,Iֲ"xqC<JRچId(0.C]PȎ%$7u\˩EEMR J!;?\=g>A7f!3Ji*߷)꞊O-x'Hr$p/? (%N y^p>|4nL䩓9~LڨbcZeYAr橧٥18}<䓌cAAQt{=3N>w|sK;;3A{{maƧ 6m4dT 뇗.t BR2nZ`Lv},.F{(%zI#gg;OIVV{M]Z\;kV$ەw4 24㈅t̊FhXq GlL.Ԓk7#+E7dQ:K ?V|,pJcl`;CGYpM][R Wܼrk^"R(݌ %AK<1%G"+"V.Ii.>.g"s]o?;$5NT[H~pGzDק%vDL^!V{B}}ki FLw L YO.E$~*G/Q]IȲA}ڢE8)xX^y5Hn(ecp>2v5o~V8$ b"HE=}Q',ʩ# C,Sk1<$Ar:2k)vv [Y(B8TZ_[¬?= -MYdT7oҥmA"s[5B(g>A` bMuXaQEϑ*ĩ&!1e eJP(M %^dZ8OC*0Q&/^䔞"]eMȖK>OϘLEsȑ"@-Leq:葕 !p* nAȱ]@(:6W1`n)Hggai߆8{.ݽ;8, @$f`N8}q0Yl 򐥵 Bg"PdZuN9Z㜁" do$PY ؿ?ݧ,XZXd:Ru*d@~Ѽ !ngပ#lyLipƂFUFTX< 5 `”nAu$ʒa$RFr$JiJW2xǹ[ >=BT^i%Қ?y?δH J2]Q2:N7RgHIʃސ[DK#%}\FR0G%Z*Ri(hȴB(֒LG?PTǥzq'k58eeO 2O|!Q>y7}=vF4&x,xoۯf⮓>x2*ӂ{H<=MUs&/~{<O<{4rZ 64K]ߣ)#>xlӠjŤj٫*cbCh ޙt&1()JD?3_0\[bw2ݛUES5c>`VW9_G)i4F<>j;J4aK/‰g d/+?#[KޣD*OgevoP",,њdwCDePF4Ӓ44M7A}cޘ`#~&!·Rߘ,RApH y5@-q>~p}3lho)D")QߤWgʕs|]rZZG(m:d8pD0Px:BӃȄcb k)Jz21 8)pR'] Ur͎jJFT/#Yx2eXÆ(!V"W|cS(L"$~PtbA :E^dVpx0Õk' oy8@ip##wBxW>JWP"=$o&3.t-)ý].L&8ȜwEkr2*brU1O&'w¾{1;|l;wԝZ ৘}Gg%8㱕ϭt8] B+JGo3-Bb8e2Б/5Njb3 RP(8,]ٕQ\unĦq2yWs=0rTr"8) uwcDwK͟!+M> qZI/V,ʢHӹ9<#P:_ !эh0gЌ /%%,t$"$xe$G.pfinXAxtkpl0'ys9/7UeS` R;!Njg})Y!|:V<XFw}fgq7vҤ{7oݻ`\tJs._:oP*ݢ*W(H,2FVW\I1\u3<'$AvL_j }VVY,)TZtaNIW*Jc1;y\{JDr `] 7jZƹdp:TXRm>zh ÒB`c^Gmӟɕkי%>xoV~N-:I4O>fg14!VW>xA h%i#w=ŝ0{@]]qQf׾9ޤc3$N$P$FYA,jEc .J0q.Oֻp<=ڙb_S^%(DP;A)Ȃ qhE ˰\@'1BzހktWx^/w)z=.q -rg[ 'Yjw?F@h"Ϡ| Ε/iwqq%Ci+hϣכ '͛4ӚO_fX$Jo/8OP@.Y "PiUrCw($l`2I UJRU}Hx|ÙRhvӹH"MϘN j1z"N|%(B^L1_=4XNVbm@ބDG&.CXK.8NV(!,`YSw=ēk]sWxpcpB&ެ+2rzg .!:}J3AB;žhe x/zhڒ#omZ^X`s,e^*I*6p|xe,ݣD>ʢ@:I Êxm˱ Βn.v:€Qϊ:ʫ) W8 YHrPk-;XkY^^>[[[ׯ]jo{}gf wzrviN:mO9J+cH~y "F0S&vw~ȴl/-:c}d56MC8PZG]>w2MYshuqSѬզ4,z80R:dRsE290Q8_a. 6ﰺJ_w)tҍ;9Cd a-~U WNfc{|e|60d5ƭ]^7nTSp ZKTN,vTR h\:+"x֥/!xH΃ lsqGOAiAַL%eASvx:0ҲM-RO3ɇҞHF_.MĤfX\~!'K NusV3͞!w8$ y2'dOnm4u=Y 1]rs)+ ![/8[t/^#YsN <Ȓ *09'nnYC Dqxqko1*BSDzɄ{cXY晅!> c@*oR]AJV9ǖyly. ^(3o_8f1>a;W=tA=A$Kk [>;d3/Ėi-+8$^(o/\"GRw9`h8?&: -#>og=< т oU> ;?e,V v9AUZ_+_і?>^Ŗql8A&HߡtdKr8RN _ґ;5?6+%B#]LOsH[Hcp'yCi2(Nu: db%/6u\I-B'Vr ۮNT7 m!!0c# *@FBs(QMbGy!ZOG!3~te+DIW+d7=˗&TtRj]m_Ϣ<Na=QBk-[Ͻ^~r&8*e?Rlوv^xD&WZ&@d:suJ1 )y>)Mc)n\aWU[3TuIcb?đbtŏvx뭳?7y+s?9_H8AY,,.gd7f)٠kubM呵0!ؘ+yp"eZېe11&Ő,S8gg=xO9f0\@&7v|9UUk(g,*8|J &8O6w M5&& B]'-* ):+JWFMH5iw)m[:+C˕R )$6 8*QRzӣ?usk"iSDK娖EJ>k"`& Rc{?!`92]*K+(hSx6n)%a#(?`uq"YE:׋֧2cy!ǎ6Fv&n>qT pUjEN'$Ƭ1))=mbń+?f\a*w6Jo%XG9#dfnت$XtkW2% &)˃ PFe:z:y0ܛp^m"QE-@k4')~͏o u6h!#:% Um9mD-OIwF_Z&[{4 D%R+"r+hmL' 2z|ACx&_~u-Umѓ뗮m_9ȶK|B>YX;C([ы(}#iR r˓ )UgiB`C!(zssu}<;UM&+ӭ,(w'׷Cڃ%"Lѩ <#:[ ҵk  *.Wc~w' ,֭ei<JA9@诂CKEc BO=(Sp5xw- ؾW.qvg[bcj@dĆ]F択PcOplkMDUu#*oظW !1y'N3T]VLqk.,^5~=LejAɘHdsp;VӲi҆ϼ%s| Z0Ջ>IZ#D+۰ zSr>x*-4)"ģ ]H "MmϲRZe%M`> 25`ljnMx}\uM>x+Jl;! 4>tk\[a쒻(nb¡/v^&&G&L.%R)"6~ߎD@olcG9KMW\$=<4ora&pcA#"Lb-8a튏*8EjDx6Wb85Rv Q7r<Х6WObvت~7&؝NtW5Z %5YZfaqc,*+sLFcoO?,7_7 IDATL <ַ:4׀՟Ʒ틼r|~^>Oy,)??p) X4/H^SPv&ʊ{yT/oެ5ɇOq k#]~phh7;=̷ھ,qG ȴ,){6CQ%B"P8gF8k*q9,G_h|R54V|SJܳ Y22hDdF5ɔR8t!fs*I: BJ2q> bHo0D')KF-dL7Qyx36`lLL)wy˖+GHr冘zY X28Ѻ^(9m =!Y6xWBSti ~o3Vڼt_<ڭY`x_šqM=j:Aɵ` (bէ]:jFuATR#8;[YfLʳ<{{Eoz ^Ly3ir2 QB N(aS"'*0x `%LR/=ʡ3NR_[탱?'[˙aKq>} x(-nx[#$B@$O@=գ>rli@~hucX kz#Kf2"zy:XckoGYAE<cpԌw'4Uܧ xسjjB> (nޤs;_]Hgu#$fڊ[ҳ2d0@)~yc[{,]n*%(&Wv芚^cx()˫X\pNDMޝNzD>ga6$%۷٘@~es.mgޔgf`pRbE K: H#]7\߻ͱ!mhc=jH'k˟Ż/_̂b]J6C I&3J͐]եij~qc+WSr3d.UȰR @.}>yrG IpL=υ.K=GϖBKPY3 ‹s&"C6="$b\9'UԒ \( =~üWά2JK@$9eG^+rUIc͂,3o;YY @$I&D[pX۲d?R˒a9B v)QEP0P(jȪ3t=a3,$E \De޼3wƌ )S{VO΃*W箮Ez1A Y~Rܢ˄NG L3"| r<?kF+\y?mNqk/8<y2ms6Gh(͛?Cbu}-䃞q;p ` q8q>"~NcL6{R t:|YyRoBYs̵ZWU,MksڜI l6k&nZּsO1U1ro &PZ!hz*|U`u=PyPdvolw.K06Y(˂^OycBEMF8֤IJ AA' (\' UZIVWW bBM~-h {wMX Ѭ /WK5t#mRWY9u5kv SN+&$a,%HJ4yAY0}p8e?8sz;v0׵&Zywue|h]1EWD)(X5i?2,l$W%D%*p qUAA\W |\Ҧ(BU/J ~KH%N^np)Pa=L#k,.24 2: wE l=ٹdC%87'oQ/»+/>͔54wkf%t> nfHFEK<Rxb \͸9o1 6~ >#|B(_is(؟HTxt rܐ !)%Lmc 囷nSe=y찴.*.ᵢ?(&\xR#TBلrʿ\ e`5XM-?x5>6`I&&FMIS# 12CGYH `7Lc ;q"yO B۳?Q^cl$eg`ݟ)]k1[-HtX\SL\*2"Iz>\BֲŸo"^160y&c~-^ ~QIRݴK3Nyŗ]M.ln#nmyNjvy ܻjӌ(H4Mk-Zcq j)˲ӂOl3$j > Ch]VQ[!E"V@)5…uQK/eRZ>*M!7Gp¸/d0R"0|k6Ӷ p*դ_:`i*!D" R:O{idk,HB`)ʂ,KH'^/ S}Ȱ"y#V8tM8<SQ9NQZjՕ:9D(yؚUʜLydrt<9OH B9qS鍼DJ8V5j_Lqjm~Z\Ͱ-[F iY xU"ۺM *↤ƊěJkXo5$z/F4T@K |λЖ]lݍt>+D֓a$Rcm*"%`TBFʖ$s.DLPK~{}Iuݶ袰K Ld?A{׭\kTS:.z|:ߨ VZZqXZHz:֠4N T4ǟdMGEA<0" II2v?G٘Za^ry˕GUṷ3=6|g6.ɦImS/_ۣCzAxYU)*阥dNe ]_̱w73b]MiruN$ԄBQ5{.lCoqrBld=cT1o|9*Dp. _7!'7$W%H>tyᱞ]-&PO ϱ7|8|7V=4fQ'I@Jç{| V{Q7c϶FM{Ebj-vNe.<{Ȳkxȕr-(eMu]56:㝲l|Kz|k V$5Oҝ}r;_e !I\BPx룙IK+ɭ aL  _\т,ߧ?H:!Ggc]5'H_?<3 :0qߺ3╉`ff|fE\a'?[>gwvO)$ݮ :O x"sޢx.Z6p [O;M1;B:\,"1Mgp'i196d_uB7>>;Ig]v𢡊;x =|h Ue"/KZlp P4UZ5>5Ve䩪"v~p;ٔC\UlՕ%7d!izCz&MSu 1KˋF3QE 4ŚD'ܺ 0Ux[ YΕ .n%xT#nGbme݃zY3XX%~F774Q{iGs<-XZYbi`xsplsX`qR&h@"%8"6QWzY[KRκ1ͦSP*[9ڽeX#)pQ8)*dYb6{8t?IM*[JFhgp xڑ Dtu#h"0QmE/CB8sGw_);IsEU 5ə.5IJ "AӪ>Qʴ?kk$~.,~Ev5E׶k˵G4`x'ɷ~jVԯ"vmG]ZԇaԺLYBCUN>~FX@\'IVz4Qyϝr.$ [D|*%CrXV,ݸшĖU6;@ -%Gh{|Ao2SsPH͗?q~)Y$~ UX ^;oLb^48WCĆ[R2hb5>{2ӛ"D Ob>'Pna'1#cq&UK^X,c+nm"v~q[} qֽ`bɅ9k R's?=TvAsQH4D';ڋࣃs=ךw$Ct m ip jk-fK  ^wBu1 ,4 k_#[fM`0hE'~x.e`rǽ DQ{3AǨ=\eEv1B))JrhedU{ YPdOl8)ĊiE @ܚz3&{9x㩕쳏VhB{|z!/RU "ɟ;g.^wVCx?`h}B5:Q2hi[UkQ;c@}jg ǟ<Ƅ°R-rܙao@f!@jLgSrceqq5nܼESV҄ŕ%^YO<1{yǯnya nsem/s=a*'>8+ b8){G,,8kƛo sHJ#>D1ˬ,-rw.2ceq2 z4(zS[)–APKah-RPU6Ypto2[JThTil4 :'IESU%ic\CN&S֤isc IPNeI0\88 ϙq?I?8+ytGCrE\)ݵ''}Ýk$A0gnVG.-1pLnkմtt> #jyl4f65J[I5ZT:@kj8-ֹ0NՀjlU"UY$.T 0ԋhն֥z׶֌gf<Ҵ:Nh̙4>yݲ彍L:A7XY1[ ׶}eEͽDy[~lbY < [;(c0Br0X_^7HSPa xb}d4@v®s<:JI., x@k);3z*WuJhQF0M`Xygj"(QF6`hn_nC Vt- Mף aBwMtIn|o!lKIPR"Qe~{B]3~4 ddL:re? MfQ;z [EcTQY,9 nVEզ4sY-o 2RaB- *|~k}x, ,^/QOnǡ&PJDk̞άl@/YJ..bf3&"h"k,즥ʽ)EV0: IDATvȭY1pT+ W|n7v{% Dpv۪c1vQ>MV %ǰH/HbM;~~€~; FI 0{#mr.P6ӝQem}7=KSDi/G;ɦZGUU1 ~_W_cu}YY[に6cqXܝ IqCU?fcF~y;StlFYWYf4h!U<,s`Ic,UE}l!ř拳̦9!KqMmA&J }f-,̦H%^)I;TUq*33{8'<E}~8UbXVaeܽhʵ7nd:%rT`<825~x c aRd8ynRpo1y1,Ls&Ue8FhĠHI^st<(`䓥AXʪ ϱLƳfptew[$yOe 9%UYDCJ$-Tm),>GQ =)ZFc2G9dY$ 9q9E ҈ptj>СnW;/]8BD NQ bGmr洒L jPQ"% =.?UiJ>u.

xª @Ъ,qbOI6Ҍi/rVx|uY =^ cHRm$2 zsCJ l 3:ors7t_#+p9ww ho a|xJ {>߾y#Ȇ*Im n$jX2α*s Y9~ؒ?z&O^|ew#W1?buǿPkܞp,*XNǢJïmи\1-_|"Ȳok8crn$>\zٰf D[\ 8;զ:5T5AJN|g?˽{wy㰘*i`}Yc#37 ϰ&zMW58ht)Ll0"+_JȆ=~ `gY0'(PיP˾Scn>p wF0&zkqµ-Lt8Zkgd~;Y T(r gbwW.ZWnný)?PA?(+LcagpqA^YƳY.{Me `@QZȸv.xJ4^hϸy( <s/_' *8f!k.$m ?$Rjfc$eᣱJ3vщbqLqxr,zŴHx!^PTT 2rS5 `^`R2OekPBZI L)!IRXke1'!M^Ve ide5Iڑ:8+Aw1Nwv-LޟurV0y붨p`GK\d ;ĩι.PCb~5I? )= |chzTƛ7ƅ K|篾N-s|f$jZkpv.A)p~9|]wg]nOz5&(E\wj<.De}L-tш#RS\2 KVIB}3^zG扙\k.W;|~lOKz{ydeۚV|%ۏ?ŝ#V9I 7w_e0%Vч#G7VY𫛛,x`o^g 2WWЉ*K@K{gB ^F4 vRW$g<ҒHG-1Ig,C E"0vt@!5+T0rIrǙ5; .>kFrs;"ʜjsQ\vq2^rR&ϾGxsN3&#zլ*..mH|k/N-E4tZZ^ޔ )s(}aEpV'w$lg49(1ZFMkVT(-Hc%II rR0h&Z167gO/h>E/רCvHRcDOh>WAYE8KP$ʂ|t}E}kos^.q[kwm1oi1T{Sm'k`Z?7wħf~!DB)>(O+2s}Y~׾Rp@mll: 9:wbRG}/~Kk(Yȼ?g|߇N74-GۉDUX)Hl?gBk>!@I5-B,FLQTeAYXN C$Y싇TQ#ɪ<8Z>D}ΘySTD&T3.*9 UU8vyAB DzK)JkdIJ &T  cQI`+-QH,J,$I<8IU81:0Թ?\ eiH%dYڰ)cMs=>hINqyESDt@v>#%5V*aL FZk) 2[tNGT[Gf$)#:*<zqc9~ix j6'< 7u~;΂m*OV߱BdFll޺`goĺk\?(> x*k kK+7wG|cTR"[+U4 T=ңXOJHy!6߉dmW臘[å"l:vɬFmҝϞEcps)N8OoGzmRJ,.-cE~CWZG۬,m+?!3.]:Å C^yeks`m3s,/p?r72jNy|N^{x,Q[;VX$ApقmA5 c JFwZ)iB&=H t2xKiJp8,+<0cYY[oؾf=1Wׯ4r|MG)8&uJ :I|ʥM2s~=Vro-LSL7n Y Z#w*͇|-jF?w #~A5'A`:I,V[c{xPv E_{ _p60lkF^_GIgs*0|6Y9!ڊ;YRƒJ^ .o70 scR=R2;5eFe *Ryq{/o/{=>O/|4*i LJG\{Ն bOʲ,%с1kD CNX~7?8٥*˦S`N;~78}|[714[soNv-gg}^aޗ ZtyH)BAhDIX.@'9g,.."d;"ʂ [R(Z1+fTU9+)) ҚETs {; C&)VΦ8!Us>/oU,GHI_d1)JAʔ$VWYi1idqqSFD8h#,-YY^gYX^-޸qcfl^X%K^~&YY0#dce,]4O=q`/9Q<:ئ* 0AAUL1EZYϬk YpȠ?Jyn(J.y>C'I8_Yx ³gwwc+E1C'1a40H҄4>8:E4PUeX"Fkms<'s}mAsk}4' uo>g[kĦ& ^8Hݜێ^Ec5y &:Bh=I 84CtRgcQu,i}`>ϝC\ZKyH*~vmqJcrيAH!Icke~#Ɨ:")Bkv|:?wy~M\5m@Z&[sFͬ:96a\ RZmzNv'۱ "kz ﱾT2W]7BPwg>'9:8-!*ࢭj $$|'?I ^Z{}!H`'>)hpޣFi=<.}4[/|]9ӹ9+yXcTp%F 56VEAQiBY fL' ̳I>E@#k-UYaL0b23rNpwR1(!2-J1--BTpBVekco-g<Xh4[)K zC* ,KF =<'M4TL&#Qi^P%#)xk{L&S(ݥ%Hr5i=ڧ3Nപ*Rd<DQTUEYܺuZО[1Aqt|2eURU!dl筐B9ٌ$IPJ3NI+DJ "\UE>Xګ,KXk\&!<<Ύs}Ei^NdLQJ#b: NH)Hkl5.а(*.~\4f."I%g }VXTdYc=5>y>2y&|u,!*lEm%eCw 棫hm()$i"Dc2edY1h&av4hؑgT류dip8XCU$IҴkR0sTi9[7g> aMjR}>Ck/BEZZdxVP@$Kd[F6h=L܈S@k'iǑ|Kz,^b^/n+B-0ps:!"3 탣oN*n'Jy,롄CxATjsP\ o^B&!(w+])A/pP*lW޽ak IDATVps*z=ZºUUD'ܽO<~7{mY1 Ȩdȵ<|LYW2Lؼt׋3gue_1>k B.^ΓNnW6c۾|o~OOee 20޹.. I((*ɌY1#I4-8V),ivtxQ ;cJ#,KA`Ll[UzwSq,qŤ4w"){D+4THZ/* = hEUqsi*C$YJQ[ΐ2ak{LvZ%qTHPϛ%d˱z:uD޵6yN5Z)ߤ ?8Kx!dww;;{(e)̓tnZ):LS58bG8yAe-8 B M<Ǎs=Z} }VWVX9KGz&.\1z&@`e/]f2Gm!4`eիWٺ{{$_Gy$I޾Åbw_گ㜣J{\ؼzt:`<&)/q\ZJbKxȲ>Q^|Ell\`8pttx1舵Սl<Y{o "%:iđVf$DƼ/1_cc#vάF(ъ @ 4v)f_dVsM D:YUYU1\~E@ɢ(:O~HDQL)ܹWBۿeh>._׾^yc Xk| ٌ]tmx/81|<&5oѶZ4B7o[N& Cյ%WK)P#q-: #P1&69*+oZK=X' A0A@#v'[w"WS|qXk Aj< >7(*/ S+O(#e{1I̋W GX=hS  h%q\Y/&]U.L 8#yhjd6ww)_tX b FRg{n1v H|5:w '`/mRKR+t&d;fv ֝ˠ3#} S:л̩p>8ᓁ>xl쏮kw$Ω"TNΘtƏ6;/ ERcku2Zq,Ê=')Jn◟_\̸:LڋxS:qZΚaV@g|bo{߿=ŮV>\*+PpI_%^Yx0N-RﶲfWºVmV ,N O%\^!A50֒$ Y'#*xHoo [$t]$ҥK/?9qdW' I#,eQ_txw$ISWi(n4IOl,j5WkK~̬ͭw'ffLp_'7]CUu Q{/8R~AYUAU7UBSYy9/W]k=Е!MRD,~R`F#_u{!ufk-J~֬o0(5eY#/jۖΠ:=J'BHugjtYR[GEDh/LPQA ך*T6  EBeCuH0Y<ILJeiTR?E%U%ߣo c'84o'81gu5B(3y(4@k ݢ%y^ߗh\Ng+^ʪB+3_}Si{~|~g>Y:Yng=)+~7;wr|tkx4I}6Q y.]b8Ck U]sX0㘫/ḑS~W]vkv)˒dB\rt¥MuDK[[{J*.Exz"? Z)񘽽4c80QQښQ4ܼ@]Wn7gF01RP ._ò>X,aM$IHm^~E:݌8Af|˼ uWƕb('ҔןIXY6`gTԥnW95L%QpxϊO!`V {{-" t8JSsVC)e;yIHmH$>fks|8 yn-5fܸq]t;# ,E;a[, w1g9h4!IO7߾IQz#*N'R5<{ys)]_gX)u~l6e6ME5"/)|g_c(gq5y6bd2,+ZkTUi yɲN;^,â517oޤ(JkKyE]i9oWV.Qz |HYm@Ѱe7BU@!Zrr'ȉٻ&;@H12z1gֈ$Fs5Gg_ႮޏHF_?p׌"% "ev%$0Cm(|D*(b::k:tt |r̶p҃T ӔW=\[wȪ+, O( K**<+Ҏ7#FReO&Joba53ߘpZkasL@Iɨ,{˹S@yUҟsh-}i` pQH$Kd]+kY06w(Z X2(;&9ZpTHg-iW2O쑿O8PBHv7L1ˈfaqeYΕ :dFK?U|s*s޹%đ5ȸuEQ1^;wxs'_}%5qspxH'sk1W?) gni`A0Dۻ\3fyiRDlmQc+sm saslJ9Q$Y__`b0sxpJMHHㄪ~uU1q䙊XgIx@Q{*pakj8B)ȫ6I|xBe0Q%u0I+W.G]WDqԺX"O)5k-G|_)G^h:'R2x{Jq[1G}}oV+%Z`70{u/Wʜ5|_owC]{/%Thco}0m1y*-;Jr;:F;TZ8wQJq(˻I^o2kh4GofbA*?񬪚cp@Y sbOwVbwI|M]wx}VM] Pٰjj,vn-a'O„uE$22؍C:z TX7$WFk4i|>`E@J'xv0dx*vV AYY|&W~th ba- Nd7LȦG؋ߜc;=KI3q΢JS;Y!t%0V0+i,uLlF=8i˶'Ğ7yL֗͝k>$}Tӽl''K1 !>٥D2sAUV҂mgowF Ӫ'UgܙbS)`d!b~qX;=#ofx6 W;{#a˝ZSA0WuO!EGs^"D6c~"M%xs! 3'2RqnTJzIU V jd!)\=B$xysL>=yIa͌=`΂lTXVA9w"dU9p@ nc H]sÝ`8GmeҴ^wb?wu;mj0֡g=$JEn݇ ]$qLkEQu]s[IhLet;)Gi-v|AQdJh킴Գk]k1>KIJUTg:(K/s| E EA1:c.RHN0NY6+Camem!!l u潌AƂ~JE\d2bma}%Kr1 ,% nk5^$R8geAz͎1Z6 TUE$Lcd8W,H5EQ$[U,Y( j]SU"(:z@K]הU$ퟴuN5RIuTU Wx2Ak1P9iP$IbS/Ξ Dzڞõ 2*x VQUfI6y$eYzPEԴwZR7\Rf(6P IEEz%0R ꖓh#[OqS 92嘲KPc|OP[ ͻΏQHAe+e|+G$$(A5XIǟt}@t0^͹j_D5b~X(&">'16`1CJEe 1+R6 Q{_`{t^HDFb:X8TE Ҙe|MZ/'Ql715|;ЩH=UB/`#Y5]P}s>5 |hB t~Qzv t:* gyچRstm?}ˉ֚yɷ׷v;o` J'Rb%hQ.b քߒa= ɷ+>uH/Vh+p\KR& dMBIc"%A-y]&ndI5zol;vpS*u'Ή'}oq*B`Ѝ%מ8D/:)wXc;8i¹9r{ %B 2g*GbйCX B6n''x4>xx(i3d3?~5-ZS܊݇睫bXyA4sU?ύz%oL8E;l?]3+my-v55$Of !D;睎5ϓ&A*º'H)yMM`FQăQ9{{-;TkM)oҁ<=FJ_TԖJ޽{[(%-(%I$^\H&!%?y-EeOKOp8R")b|F8, GV<ֆy^0O:۫+x<C,6|*lcve b-q^q>1VA%, "8agPFI%<ޣ65R2Ȝ4[ZK'¹A"(cu >yY5:6?mO㶟?rbhΛ --"%QJXTd&uQR1L+尫]9o6ۀ_R*:NH{$MH#뼯ScyDzZGWE( 6/lR%il-t{]s7Ȳ>II/}2=TUEn1$M)9*R~X0NyeBIex0f >]  XlGvxqakH Us!Y+{dI_)C@6-ty?&*EbcOn "bƧ3&kV:1ݷuQu%F`"oOtEdž X}z T΢D!؈RXkXZW E A.jj#o(TQ2DC 0!mn~.`Ђe o(  2?Uc4'MߝgkV?Br1 ,9MK[}.:٦ v+b"'9ekg!o㙾vs{SG$X(,QD60VowRwN B$/]{cZ@i |"blgV>ؐ|+d .jpɊϡ; %v>v׷ȃSRFl)+ Fc=ҟWX*lI0B"M 2M781pNPG3{N> ]si-c5ôOalby|DXpiv0ѭ:hhya(lr\Y2gYz>Q=gQ^Mȭ5:K)R!A֩fyyJbMBaC50,9= z0hWNmئR €4x.Wg)ica 5 r1믾ĭ?>H^>_DL+va'ZH~THFhu|dml)~wEgE  X(ӞscON+? _x| qN3Vqzg^2*Tcp!JX1@?ǝRY>?AkӞ%TMqN7%eXHr^T8fuE#Mʢ" GGޗN{j `I#OP$4í!Nt=~E֖|QC07ևdiyVu<=I:ut6&1Yֆsv}|l(X:Iŭ GDQ| ोӜEϘr8!K">NH8ƈ$½ŵ`i [4DOj(R m4i`ip<`kZ%$g"/8<jʲ_`gg)!R4j^|E.\ؠQ%KE˗ |ײ,%}s6DTUEUıgI ~W^y ?x G#>t.B~˿DJRMhDB}ZgtxeR :݌n7C͢ں1?\$RH!"Iȹ .6m*pIDYR9eUzf5$˲`K^b,$ISUiHH9HE % +E+)a5-& <@4Ǧɤ%K$JJ&98+H/D{H\kgiJ:M:9j!yKº[p/?xTaH(t?Q~ *+yg>f'c}^Hqi|GLɢ"ʒNwHX') - Tj%!FE(a40DIʂ*lb+I7J9q@IH"t(m8n2S#O 3Pf-¶yV<ȅ?PDoSulg-)Vzy*Cdžm&tĶ V?ҳ1ө&G!|lr#m7 RBȹ ҵB$\PnW;S&%|qE{f3f[FI>ܷno+O.C8g> Ͽwջ/Ox!\mK@%t,A%#IfeY3JJ*h)+C?x >$~tcLOsoAQZ.>s4Xc .%7߾`OEE!^ڠt:C׆W}NGp%: k8aqkydw0;ꥋ =eMYyօ.]u敏?KַuU 3VkqvN8ܹs]R<|x<֭wȲys._l:kьc0ut2ypںήOOHbQ2Ldoɵga44":ʲd{!{f3Y,J5n޼E)6el># Fc@pti0θqހdL5RV%6*R4^ub9a-A@l<aFPɶ0="ϓ !/*  Fe^$GuɱX 6 5H"bZ`H8EDqՈʰT;Q㰢=}\AEq(&OZ=Us8 B,RDXϝ;e߽CՀdi1k7ns@K $3݉.0 B8V֮HP9 Jk[wJIz cD:(+0\3/51.^a%=QIʺj#W eM!M~%IcM}Tib XQ5UV{@)) k}P$K5t;='^&*v;$iԺFۚ,(KWU)KM]5lo?$IT(50t]UOMS)h}bnY.Hkt]R.ƐsZ(ET~CEuIQךA`l˼r6`{k+Hf_8&R#IS]l@0T9y̭wcQ:G~ !%yQrz +Fpt<%I${ǀd2-x8I-c1J*c@E;;q1i8z/JSV5.JEUr(J!&[j0/x{$i oR8UAE%ee}hGREeE`x (Jnw_9&)NO38˜)EѱM4`eֆlF$L&SR׽}E托PV][ԺFʅEY"d<{_$Nbvhm988ͨ{KŽ;Tuu2X q$f2PՖ( Z)yr g)eaӳlY,EYB DYUiYUJMBMԺ RޗZWc,ĊO|Gq`ܴ8ӮLxHT> hAD~6Ժ}ZLFU0mYR*q^+q5M#ق^yps(vW)VRNl?Bҭ[HcN8Ҝ ¯“ vV@k/'+ mifpy` iv\Wƻg &Bb2! Q|wWWYYT\Ne+|\$|ZEUOqQ*8s# 뢦Ju DDl%Ƕ~5懮 Yޠ7w&>ia6࡮bLaAD'#[2cn=k60Q4+ lޏPG16,d֏1R:y"ȣ<x YkN]Wlgޝ,0;p̝ 1t{X0SA;wr{; c5r5:}%qp餗/i Z@G `Q;W(@XʁRgRWye#cj DJ\scz1.A:=*?S,R qQ##+.(m1"]7]̓ M)E'KCXl$-so,87 [MܮwJb=$aI_yD;<` Ye= SkΈ~{hF,Ndz~7~~tnYGtz],gmLgS,\>q`8F)EY LJ~SbƶcI:6k׮sY}l[?x6(&:#kLH@(4F+ D_l7`%/avRJERQՆݽCOfe}vEc!s?v D7o(/koW$b42O=A@hW8imA'$k>D-/(`D _-*v}%EΈij%͉d>+O6g-Q i OR5J!kKgE=Bk@ec6/ZM &%U9=fdwkt@zEQ׮9p8E1˜c4 5/BmiQO q\g!‹JJjcv'2$BR1 qkqçF F;߻OLE@$)QSךnCp]$fcc$ϦdY{砮ke)q\h4"l\ؠ`,|Id2a0qpxbL&ֈ}:$5A"b2?Ǐs-k֐Yu4G$Y«h]r˗2}Y@9g e{>˸yr1>7w/9˛i+\m=X a5py{irc0MSBܸ$j @!V$6b1S0*Ui~#N8}Zdb(#ń dBZ/ ЅjF t^ -0ְQo"UO4i'䯇pAqNsj*$.ֱL*10њ^2І]POHT0Z`T@XzS1=3{Yus0XB~.;i0"÷/uP]FkÿT2̭pzyxV}b aοοƺF dS3bqHi]b0D;7mv_p f:D1F BA,5-5RAj&<^[^[x4t%g.WF AԠ#zG_1d <x89_vjOw--p0A`Ĕj:]O>?Z>Mif)f0 hĕzF^G8^fF; ]F)`0j"ıM@m GC Vm4::YIʗBk!8h>,Jى8_JgJ=/c׹qZ ҝ1h(,H(rIUJyR]-Gtec9.εhԤ(% רT\s4C)%GG,,EEH%H3^Ԑ"?d{+hBB>cJJFn wneS& C>a7`Hՠ(Tk4gdK+,/.iqxx$hl?zHRaiiGDʅ [~-(QY0X-w5qp80 lm Q]`<c!IƌF5(6.$0?;^1,o 4gTz&)C cՔ{E{ѾZ%72+,,tX__a<GGGt,--!FCvw],>JI,萣^"֤Ã&FɘZFg``0DA0a8ZP@眞eA#MNo/M4EHA&Jh4҄<4jBZaCC)/z9)Z[q NO{t=qp Z5,r<#`4 Rmߌ'c(NNOI dR$ca>yP ˆ̉˲Nf鷎+AFHy<9iD!}$3 C@-W Uqұ K;=FqL%唑bP{ܫW eLZjLpne)V =eHpY(vҔ]cuJ3(vn aV)07_c,۹eb^}|Ic9ɳ"r8|kMU0!;ic$&$aRd(W.!`~,) Ԃ+U}ysB2r9wo7֎1+2%fDAXX .F%nF}Mn9KFsg١rDZTfQtlm2Eɛ=Z$Woݻ(ьwdtl4Fj N³)='މX2e>8~jYeڹYgN!W{sM1fOӊ+'rDψ80VoJqš_p:iPDQķmR-cb !QA`^^K0ϭtX<'7,@@hB'y7}Y^֦+w *ugl٭Yg2Uh䅼NbRЖ'Pc4RT`2!SKce=~ھ"ZϦD41ɘ$hp].^hHM:Ԇe&126!K%c(Hqr,৐( ǒz$zy :F[fdd!F ! JD qh;&Ѭs|tHްMJѴMzS,c<Hd2&dif81Ɛe9A`m[L&ݳIimr[m,;Io7_;T1O|[6S QyQ*,|S~ǿh/ڋE h|}z'kuPd;/aop;w9ǟy;8$ukL Q4ȲC<Ɏ+F J V;ǣG @rr99sxt >0Fk;X]]哏?a.yvߙk{qfq Z)Y\'{>ׯSFc2ã^s |HP# & tD!#r!1d2|?L\,0fZ0ÀĂF|ړd>eǣ1BYXcPIՖPFiūq-cexB*H:6}n3d;T"SI>@N Vj>9i˨__`4#B"ݐ{siˊ.V7//o)CIH,2&r먋@"%[^孕.qB`L2JY*@alBBZQ{@!mꔭ11؈ a(F&E#AF B&+ݶn߽:oq?M1T,"HeF2 cBc#~~. 'M Hs"y(+{!%:,l>[ RD8 ÙͲ5 6[FӤ}z OA)-"8Pڕf"ؐ'T(2esRQq=3R,Хb^IJ:9tיg;ل6]KϽWh[5G34+Ɩ"lކax=Ϭeny9:=HDQiA{i )ƛ>\C+_f !ȋW ;w8==ų~!qGH0M$p,RwNCBt`44UvvH9d`srIҌ';5!B!{T5!񘇏&]H'nC,c>#gX-_ ɏE&On#kKWA[wu-;6KdÏÏz`o.ZBx,]Wg ZH>bMF"(֖NGE#M@+0l.1" @I&+Vj\QN`<<-'sS x"Y;w<虾MpeS8?v2+bu-h)XtL& cdBZqς}DZcLaN˃pέjI2! #v+>VFeA#f8rE& BT8::fuuչyɳ\kg j Bcqyph0櫯rG$AqOL&RRTޙ0d9 cI;wA Jq njF#Z"ӑlU7lSӓWH7:_!9pNgO#s1Hi-;S>3gj#rz㶵km4B]PḱKTaG:%ga-,2'hj̲G= }gZA 9> %-n ۱et?yֶd:&:w>)ʁ,ѨO R`t&a`[!so$9x`lh@vžm>E,_yCh]c1 ^E% ʚV5` LEA7HWr̚Nu6몊7ׁ Diyf Gφ[ PV5p@9c]ɀR071~}̄>Ctmkbb0p]*ENVJe_—HW,  .g'FB{,c)K%s!\{,0bI,imP#Q JcskRZQe•ta $#irB3IHn:ZF@%9iȥbiZ!DOhHK]dp䨇9hVVA: >`H/흹-,0Yς?yi ;+oڗ9=Hq`"be X ś QN5G҈H^_/I8e/՜S1IC%hTcZUE+T!(&R^a&-1HFH! pFȜ@ax * X}חwr?'B]$p4\]ZBcPb.Ɛ7uR@, 06v%K/b# (94a&⠡9ן3 LBEd*@ alT`]% -4BvxܜiWL2~MR!#&;wn;DfLɏ~C:bookׯ GQ}&Z2+1v->t]y>c0@'Ov,,ʍW8>>]:z(OPJQ՘Llmc l^ݜ}?k{jLtJ|g-%)bVPT<Bۙ@Hz9{YA)1^ϳ̞/FV?Ӱs(MSW 2(@L'wauS[+~g[ 3ZH>uucH`Fk49i(DɀDuNsɝ@y_+=i0ΰϔN1,8 G]21*>7Xi6|,]"I8]xK8|[K~Qh|̌$ Rj" b3 ;oEHHk2)YjhVA@ZuYcfӹj4% cNz'l=5,E ]꺲 .u(|[L&]۴U~ќ IDAT.] s@!ZvvvNR)jt:VBJY_`A QUXXX P %eQH%$ ?ǬT*th6ZmP}d4sT0Vx4Rq!6ZVGkA9<8$:+a;;;< _98q}e?BuJ̵y )3$}z ss98Xfq!SnRnzk0L^{Gc?̰ЛQAF;@p>_VY Yf@eJwaῙBahq;(tar;v4x;!X+3lYboҮd^ LNWWR|2g@)*!5)X ZUw捗x 4H+9`dP(L1\jJP,B6BH0~߸t˟CQ*6ǞB(m!W!1X}~%lT  ,e1䔫Eׂxi^zG)#}kJ@e-iZ<;^sP.JϐBo>rYq`Rr5{TaSt̾1D:&@#E(s6?GGxFw)c i2Ð0$IBZjBXjȂwQ 蟞ERܸq)a`YGaV~Lartf+pttJj BF1* zA3gf$(ȳ5=ȣ^2Id 4#ICt a(R:giO 89>:"pkǬiԪU.( Y^^ vBFbO$Akh8.ycz^,gvvEV# C.jB%xa4MTEχm\*5V22.x9ԁ J̥MrF3dT2Ἲ2W.M1k ;Z0I9]5iQyeob!rTesZEݗ GfU.#6cC:тEב40L 'Cl8vww%ϐ9mFc.s)QL:]AjZZR,9 NFZ_EbkhZ߸I IR5N~ի׈>~ZթTŇWX^^[J*?歷b<9''Vcqq?p=^&kkkz ,d0oql? x >Ys Wq;:{ܿśoI1H?OKu6]l'g\rNge{=6.]b.3RE6WQ F…f(zS)?s±׍.Jm0>w1˱{z\ctNWĘf;~`Ӳ^} : 3yos/ĀqόB!Tȹ֭# )݋)ȞȬSV9},smSho1?@% m`ej[K-p&.Sp$/-|zZRV-(&E!bJgꍖ[${6um6(gT] š*ۮt:\ͦnYyiI:,,fX텦+*Nwn&1N(+CY X^^v*pl*)ؖ} )Vb+3c!M`7^p~l*Ppb7ŋgxjŸw:c2rM s*湜?eMI) )/ T>)S`Z{^_xf3іeXJ"?Xޙ&FuSc )drJ !He!GgB$U &Le"}J d@qcҜ4M2Y)59W u6QY[q6%8M %bӹ]+)ȳ09;K'Qd;YVh-EntEqI8Yٚbh/ڋ˷_u,{3Yl?wQ'P*L罰zA9J/oEzfAs%LC.RI0rZxJs(Bvb===`X[]e4Uh9::fko\#BBGGV…u(FyNFdym{'ryx<^mskkh4IVk0NZa8R7.RpGGGh6 ptyYZZRm(fc"h*I2a(AFT+U6 #vvv'ܼyـcg fZN<7oe@ZvwI҄ E:i۶6zLݢe)cw-PȲܿx$PߋvY\!RJC^h1gH Q=; z@\{pcM秋V`=b~z]ע"ޞ.-0&)K}3iX G>x7. c9g =p3 kc11u1DnC @3篺Xr98ק Lf%36vvgXuĴ[3{qFr%x~)I$֐"-#.MɄJ\qXv oYcYNJq?3L0Xv-#( ΁W( (B09>:vecj:fpH'BFÑT#`۵%ؾܺ:6LYKKJqǠ'MS**R5B묮͕ Ws\QSAl69=9! CV[yx3?&NiPJݮIӔxT3(X][lڹGy3e篸]y{g> Ϝ7ZQ]@ {;jh$<hO>~|Js7)nY:)^ 6 b ynA>속a 8LieГ1^ó+=om YܳEJA@[Sma1.bFR+1n3FzF\ױxS)[.pzDq.͗c2}{h`iŰp]黟Ĺlۓ=OImAT#.gt^?FkmkRQYnkk`@,//m>_Iµk~n`0On1 ckkV vw98)qhNNNÐ$1<`4EqBeL&6.]boo_|!aYX$+\x?d“'OCQgcco~[|LcmWVWyH͛6W77s6jÃNNN~7n`{1%mLYq768:>?AQ*GG창Ǐ;Mﱸ`|cT}U@ͷoχ)Z A@YLW%vO81h<( 8io}Og0[>fARE=f^oiYkYc "KʘGIBEd߮T@H0h&Jw/{&4΀/pF:Y2e <0˲v=aa5{_GWMc>~^ rglϷ3_:^3eO9n-v p"NՂ}ʕ\L(\]@+՝z´DY#=CaP0+nwTH г0W0ҽ(=朒K_uAƐi @1Njz~X)ۅRs3/nl?L?FUx𯼯2f+S/.э{\hH!sy1h? 2W^ Ey"g,N "+,"U?Y ,=L}0p-@G7xW'iO?Y8 kXkb2g|6N:X\()?M }}8Ot޵e6Nߦ8%IbLɹ;mf)NiIw}Ogiٱ,Ϧg3[iBQOęUfz&/{ۋ0s-O-_Em.#Γ8ی1}>S O<᭷ޢ^'!찻GzAV&VB00ھC T[S~wvMbss$I *"[2L,L| ,..ZJBXxge%Qֽ{\pBܹw89:8`iy_{& +++<'? ~:ZkvvvVT*^0DFR$,dYF#+X?ҥK,,.ZdBM&̻dvVb?Z}޽KԪU1 i6Z4[-$ۜ8.qlYF؆ڢ8r뱰P_gJ U!T:1M.2K1lXN/Ѹ[{~TJ75]̍׹yOO?`0@ $ImP0:0$4YI` YR Pt:MVB#v<7nh4;hcjj1&i5\NGܹ}Z[W^>-Jh5묭Z[`+E$4 : PG}5 Al6 [% HE[ƣ&sj)-w<_14IB'p"C&Svu ;lLOrE{o/@gl<V/[9ؘ6%Sy+ih`*۹:fP (/S{3 n1"*.ᬩeLkȘXE&r7|TN]w-1a(;Q4 :=U2/<(L)K~F_J+s 5GЙSPxczh)wF *`;)}۔Isg;wUMx+8CQ+Sz&JXcρdT'>//qp03y>M9ϕ 0NT\3-g:ԘO IDAT[|KPݶйnc}1CҹKC^~KƳK_/m1z{3uٯ9Ps.xj ug1Aʀ+W.nt⥋`!#.l\ CkYlj75jaDQWn0i6یjZ^{)% RJ(ŋti8JBĕ*cj`@ZjD,ZNMH| j"NzƥV:FI:izVC$I+,Jd Y;O&׮Fu8v)K|4ͬ!J!/2ݥ%0$ CwuJnK[g$ &/&o&'aq嗩TbZ \Dō ڭVZ\\$$qh4BkM٤l/9g% #&1qTQo!7^y$IH׮{$ _ `eev(h4$IBӱ}r<7jTZ\XiMª &'p|>odp' $o*&ro6~=6.m$=jYY0+z)غwd.a\uk6xm,^e88e}}Fq d@?1lqKQqf+Wpν|̲)f .\X'P^{RY6}$*ܹ}[,w$gZ_{>]l5G?R{[{XGq^\$wئ@w.)Pp!&_:H!`vpݲduSwc)nd홝m<ﻒ2jjJ1Ϗ׿f1ƾ[EIXq-eƲլȸ:PS]y/zo O԰e[wc苔r?lG$"JJeH;I9lR +ҠdrfVk6&#qď1WlP5Tƪ{mȒil6t2Y\sM*rLRxo?1X[[΃T8L/0_LaqlSjR˝M8 )K97w{D"=W(z1H+[UYDd͎ZdR(l)YD'=E麓Lզd'=DR톜ץpƳhuuR13k_@@`G;a?hwTKBYtfBYd\׆n3\F*v ֒znjVUؓa#1d3ЊU?t]F2g뮻 +OU Bq=÷ȒDuU1_զΨ p&ﵵgim(?LXf?l3TT;zIGf̫0~i$[)DuUM0YiC)"I5jY1UaZD$s\ EQ̐$'xP,R|)oS46 E+))gZL{ǂ56塢{AXKI-NYCHH /c6AeE¯)!43qXfϞ{VAU#qx?iY2,$I0c]S3|>:::#$)5P$t2l:EYT*:=? SVQNIxhP(h]pD fÎP|~)#H `|T*!tttſ0U~FmL%J)~b8UmcWIꤪ ,X@[{2vܣrF%׏+DT+y*Iys#>v| | H~bq;$ X LÇ0rdr0olJ#DTG& a$Wqf (7b`#no/~i<} ћ0R'+LO,F(Fҩ ]d2hyPZE&JQ6J4%RRB[[;Oaݺuuj]Bͺہbq[beK5܄d nG\\һiݥs\s:G}AUM3I\ WKݡﰲ@ʸHP簭,nKsch,z?>'^R.;3bI6yd{s2h\5!v׵>be|=3;Equ%%MɦkcYnvWY7uȒL&!Hd̤ TL`%p$b1 jjV5J"4JRX̉v*/˒7um}LW'>x23`[wcpnS'vP]SٟhiY*bb>vE(LCtwFooCv4'" h;OfL:iZDee3dTwW7ՑH$%1^>_` ҥˈcd.? cFp8Ȱz#\4ZJeex$T&g>/fLfdTsXRzxHs-Ct ;)9y%2@wLW =o%u#3"IhI Hֶvz(L2/hf|wPٕl]7t++s_ѭ;eL[KykŴ :Mw,7&$;J$,$5Ep E隽O!ϛ835<Rף'x,sg li~w Zl须NE!ɠI@‘$Izb=&i]3=Pd2I4ZBOOdH$l0?s(/+C#F`ҥkklVS[[Kða477J%$(+/ |>TR(o6Prǎeܹi B!#I: @II CCC~kע*uuuk"tvt,^.R]磡דL$H$RDDmlf TVTe,t{b 4xO6ޛN},UUdn4LL6c$4sOR[Z|b1cŲe(B<'2b,t_lsZϏ@2]-P"W]/dj mVJEUUZ[[ikkA%-_~M"/fnʪI6׸G것43"+hYd2st^&43<@_?N;?{--Q/!ʨ{ XpXj2Y5kֲ| {gnf@`2xoV^8H d]NȤ3,]atfȊ+#$RI[T+VsCmSVZF`] JuRt]'Hi7Qsl8nr/ձѽ 2*H4K%-ŴB4QI!hTVݖrSq,tٓI{AL9`2yx/>N'F++V$Ie4[^m]Æ$*+dUlD2E,KWg' "вjqvu@e YT&CGw_}ԓi2LkjPPY^F8$BI$D8$͠oOT&CVѾ-~n&J`G&C2:J\¹tWۧYC?Vcf"n ݵ d`3ܼ(` "%FHIxJJJt8nqEF (l2֊'S^VʐAtvvI4,O$BˮbKӶ2ъYFw" Ie3ޤR)(++PvuQVVf+*HR  HJo"AII 2IӔ.ed*DϰF(pjJKhjZG($PRxjY"]ac BԠ*z#k? H&A2;;)4%Q KCFQd¡ $C줢ˆ|֒+.<9/Ÿ镼W F7b4l{ LzKq7Y}͖g_vt] i:k*ZZ#A3]U2gY٧p?Xn@A+TfvUhMmU}fF(TǃDv-V[6 jZu6:!QN:cpFAŌg+ζsMfẦ;&^{tt38-b[ǭDenx~WcsOkSmk[>+9}9Kf},ƳHC\2 ]W(n;SSS˼YrAiڗʦKjo*tL&c+O!(Eɪ,C&5_l>g8$^Sdl6K" oS&WK2>6ld,˨f[ۚ1EOܪ$`K8ƒ1(\βdFrH%w52ܫf~?'tnjk3w>u5,[X,ƨQ0ƚ[#F]BQ miY񐣑PT2t`}FD2$Iti LҼn hF"`D/ڻ:T[GEҕYlj꺊Ę#M(~BE _ez 4]=?TTɶ{=.czWM6f.E Pr{"%5oGo{[67~>'A&GMG:lD"A2DUUÕtļg18$R8FUU2,>g,sq>Χ$ RgfN֬ V>i*,fv\k|ʢ$ ъa 4l6I=#a{ILI$($ 0u PxONddVdN`@7HP b1TU' dd2ٌ'KN4 64I&6㿩ȊDQ|3)3L&c立pe6VGI4GbU9!F49#E\5*,ʫ l_+_$Q _fʱtbdU5P;׏VS@s jZlّ-Mx> sAYdsid] EiΒ9nr˭WO@scdۊ>+n,DLJ5^nETMn}>tIZc3YԬj5g˝K[$QwR l<@P Ϻ3?K/[bl \q=II̗ ,+>l:鬑vTWc11]A)B/[O٬edEsݔu,jJ˜m_{5?e: N};4  ('ަ_| jٵ IDAT152= ,1Wr92`N}\v^5u,) p~Qzxkyo r ^%)JJA'V wQ.*n לm[!$T̨at8Vds0-0rFFSHHhN6,K^ uVIn$ײfĬJXdqdEw,'chX+ZZɟmPO7'fN&eq4 = ܒNYb[Fω7 $7 [9HBȝ0I4C9VD= rOEv\ eYFRd5;ӯH~ϞZI\:!9$k,\ٻ}yt#MF9"$/q'Q*isTI+"rs$gK+ޮH@'?F{^ nwunJrl̲E?+q־,!zv-()=u8-rIx~4Yzuǎ@yeq]1H@%K"$+Xu+Ji @}adQ;Eg/<n..˲R$gRd(\jR{ݸ rIsྦEB:p7 ь}쾟g\ж䊱&'󪪪 $b.*F''B | HS7Čw?$e$]wy/^,$ڴ5 Sl]\sؑpp.ߪ1sQp^BFQ0HBRy(Kоs>/ >ʣ^lO*z ;3ӭ LbR@PmڣR=@v$u◬X=}ձZ*9!\ =;~;imlqMn{&'b]ƲtH@ۀ֝R(* (&TGg-^R 3=9! ֻ.I 6Hk<>o]H@cfLvCz.\[P|[M7zYrq{ϲ,*/voZ0\Zz8J?r]sPQT j麬QvZY4|>0TW3n\#?83xlNp!-,^5,XcU [T h6!l2y 3Fur=ـ|/? }_4O*Lmm ''sܱGnSBbs \%N-+yflWBuIV{5Ҋ*u7˱3̽K Yvg?=gX,bj>{Ӛ% ˮ=b87óQSXhvA |HLQݸ<<. )6@{&ۅ+{8rHL&j/rJG5/KY]PU &#ɮwgM@۸YK# ,z$dg:}yvˮRN rEud#9.=Ǯ[[-LYp^I@o uƑ$`lL u=oL<~2#7v3ypu(<3]>> $W]ɭE 9kEH@τRrnz;Eu!_(VA l އicGQ臻(*f3}@LFfTt,~|dĒx57pЅQ]j!(i&hń3ߩVpbChZ6p,Ղhh9nHKs8JxUhV-:~rϾQ49:6b! "=B*olzp{mH3 }C&$~> Llu U!< bV8:2Y~y{}Lr΁*¤(wP@@@@@`k@[q@ eIrru*oOpXқ }P}uSN~ Q_ tEp- vs .Ц+_.<(f )Xԭ|1ކU|TAuuH@SSLgyA.JMbh4"hFDQDVL&úuEO˜ٳ2d(C l6,ZȎ]cȐ!$SIEaȒLg%'0hPV$0~xTWl6,\UUUZX,ndvJ"%d2i|>(O D&Hg5(nFFd**P| pN˻ dP  ==Ze˖1f|}WrԞ,Dj$be]ssW 1L=וUtB;lrF]t*/k~[U]B[ ++ֿ-(?jk`_6{UVig 9k96vTU3g2IJ)FuYz59j46E_1z(/^ĪU!)))awYL3:qBx1zt#]]A[e*]ȲD&Yijj$tt&$+$Iҩ֊kmEYh'Yz5"E0 J ZX#˜9sXf5cƌa0>RGZG5U#ɘ"Yb=HRg+$UU%NNB$׊sn$_˶u'#3Cř9B@@@@@`$MnOԟ}}li OjmmJ) [Sd+rY(Q;QhL*b-%I5jܹsTWGd}Og$X~{E*f„ D"V\:t(u1xpK,egݺ&jjj2dQ#V'5̝7t*E2'qAjjj(u=H`x;0~헿خPTV0nTLQh†9am?뮺z%˲_@`GjkK#ASY_]a>\j2k0UlbȊ (K)I$|G|gTUWs0a[T(I=VVb ,hߊ3-A׍5P$9 2tPj5N.Jv"t8ۖ0ʒLPqFG$dɥrs;e9X]?k>i y Db9.ಌyFvZ,+'·1; /YdS66n$I1v|XYfl-^o5lCɒ,H0̸yTX`0H8& o9sOلct$ eȮ\Ddu1~kjEp0$4$ub;`$I'prNwwmZlJ,!$U`;púGK6oL&_ 'N`'nl5|I@, 0SO<_JA L&mũ'@ ~;&4Mj вdNVH"*:7AdqmsEu%]p$B8`B=" &e qQ6gVR{g&uoHƍ}Sl捗}K6Qp]7.h-绢璸Xk@caٲ~Y~xldʕxGM0l0N>D;L&'xTUU2u\taΝE]Zk=՟5kO'줶;s9f9-7| ۺ;[hH$<#rLr8'p2~'k̜֬'%\M* =kU$}`?o8Ekn-J-} K zb=e716?i%S In[୻ %ܶne ޗ2&RX1jӂ "f1c9Maa䃘< V^].Rf̘I e˖qݿ^sϽ<Ƹqcgu@8bFѣ=Sr`B;^}5ZZZP5kSpyѱc0mڣL|zK/ަ}$ /Ǟ`UHڵMt:<,Y( alc#mݍ(4١i-]~}VUZ0\(cBU  [CE'AOFȒk"M}J"0sg |.xغl?͉4KJvR򑫦+W?7AZB7E#tՏmC7`w3Y_^^ <+_@gg'<#O=,3kg,Y1cS{~84yd2^{uV\U/q뭷c}'w駟`ذ֬Y}vɦ l$˨G? xD[o}a[9~~Ӷposfk&@[3H.$IR6Ad;‡nt3KHHc7$%Mы`vbG~ `.̢=F=x]& %#^D5X]Y?^~}!_|"-|ǭpeV1Llr-[N Og)3838#y뭷< N+W ۨq 73y]:;;U_|%{:K.Z7sgʔ9S$x1c&Gu ^{=3e|;ꫯe"i`7mv/\W^SN=.W^SK'8ӧu]î@UU7p&ǟ䨣aʔn[o|{zT.bfxz>pUpSX+8#8y\reL|o1\~Uvu1xͬZUXR/ qUW=EղA HؖY WKB$`=ԕؽ]#_iwf>zN"z`bb\Q7lM@2[/P6qw}7ƍf?2f}M7ʊ+2d0֭wL(sͯ}?Ͽ|#橧W_#sQ߳ۮyȲ(Ȳ̯~u/\skӟ^@ee%gy:'t_|m7\LV\EUUkiqDQc7vu**=DQTUeѢŞn6ꩯgΜ_A{{;+rmY[3[()ɓ6^}L0`0ȗ_&Q_?wV,,]K/!lUU9r6>T J@`ks_jM"Ʃ'č^M\-%˲H"]B1жd_$- Mb]^=4O,d$pnl o/z6 ,xc[A UgmJb3wIp_ysxy#ޤIA$ZbL,CPVVFKK gy=f P]]Ŵi( v'o1?c9o9frihhLY}˭Z."{]y≧8 1E2+I(//#K.c&Hrgorꩧ? Ğ{f953>4K/&:۹瞻F6yzq'n]3s裏bݺfM{~nǟ NsS_pu7{cO_8p}K'{4OR__sϽo?` IDAT1Jnn?0{ >c X^^O#pW|l$I7=؝s%!yIӜv)\x}=̘/"\rfblc#=Gn:+_뷹DYe rAc+ #F &Y4%b0 C&ѵtAejnN}ǔsaJEZ5Y)# >'ՃPe'q?9]/q[,jP|!|6s|rz| r0/W>tttPYYҥF#<#Gˮk`.^x)v2 MMweg{NNxn1;O /G/3ps?񕴷sri{tR9~y~뺋$,|gw8bҤ}xWYl9--mJ`Ɗ+=$ԩ\*f̘O?իYL&cΥ?{{ns) !H~xhb14MWaWbq 6 n&lxz&i-AlI.̐!C<gϞsϽɐbŊͅ\wۅ˥'+F AU5on T q( tSi&IMԹFKvY`{C6o G>MAs%IF|ȊY !IGxw(N;i̜.'x<swC5x {.1sɒqRSSCUU\r!/"]̛7}.\IGG'p^ӂu>~)Î:3o뮻0|&Lܹ(gϞC,CQƍOUU5΃ih(Δ~7;())C^{+b>s =_z.. O= O&Ogyzm\{=} X .D"AH]]~^nW_K)x_/ak/0/F!7 dA' 숰\19og47d?#O]7JJJ5j$qIƏo',r;Ǟ`ƌLk~?55F rWqõ Qǟ`B('teaŸ4iXz5r;7|#555,Y_Ҙz!TVVz\_}:g}&]]]_0fhꨨUU4i|i***;h7|>l6˳zl&Sxl&NOSS3gԩ0s;"=vLFLz>{ =,Xc4ym>x<$bdMn~kXb#F`UZMY?~x֭k&J^{ommQ&`Ŋ{O҈}fϞCkk+'xf}oم$I,XSߘ1c8Cx8\C0o|V^A~իWsMps*3裏NxS9r$===WYΝ9oqYgf2GSN9 ,srW'rH$XJӟ?b͚S^^w{,srnbhkkcΜPSS$eU̚fR~\~UrK~\;3 /AaA?m $pUW0BVX_D8"L:H;uYS>k֬?~ ƍeѢG{_{6~O>4_}p8lY\+++e=MMdLN;nzx)̙W;GYw睷裏3}̘1 =l. 7\ǽʕ#'N{M{ٳvm#G/H [`f 6. Pb?O<<ؓ|ɧtvvR__S8ܳ)--;ovەkNx)'sQ :p'%p?"H駳x8㩭xMz8f}λ/mn;߾\v٥3ϱؾSmk[YNgfoO3cL֭k$ɓK4LY7ر<,Zs9ᅢL(kbq2G_˽ϟ2z2W]u݇V~5keee\tхc޼~-ܹxG7o>2~N\~y{BXp8D]1yW{}x!őG[oAiitl9݁,Zg\ږ8s1l˲em2O4N8d֭kkǍT߹뮻(C1Coo/v3Gmؾm$;UU9sY}ٛQF2֭kfĈyI@6s4l^ 0z(N;T;Qvm={>szzbTVVm=F% vx̘1unK!׿ĉDM- q l<$pxx忰lrEa8s6Kʦ&~[uח`՛ /yw߭woyՖ;>̇EQ6;:4rggĈ~iu`#\&N,_?7?ɕ<3 HO1cL[bw㢋.~@u͟?K/LѣGQ^^9\u8s X?/***6{|P@@`!O]qoyŗxg7uYҋ7c839ݟ ~X][1bqW3kg[Lrfg~/hbVXȑ#7K2ũAgg|!'p6^z_ P(ڵM]Ļ#1F&aҤ}8ܳu]1֭[GMM5z3Ç߂G44rJ^y̛'?|>a l<{/s'sUWlr}yזvaH&zISjv(> p͓V~[ǖĖ##JN()f;@ .3O'[o#I{ _|0s;xμK\|umg}38nN=ol6?kN{{; pȲ\}gƲeYL0MMMx͌SO=EW9r]S.^ye]0k׮q 7pƍOe͚5u=<ȣ_6He1cF3kguO ZrnFs4ZZԍw#bL3xgXٻ($@BIP 4EAt M " RTTT $RH$K6uΝ;3wd{gΜˋ gР.&Nڵ??. ̰m^^^G!Hʕ쳙ԯ}6v6l@fM?a`ٲ%/,,n:eaTR%GniznGoWOtt$ׯp|0^׽܏ܔHݝڵk0n܇ >ի!,,+PPݟ~ZǾ}S,Z󿰫s V\M S ussjR#?/ ʓO6$<|2E@~RZU\]]S `@<<`0`49r(#FbЬYz-Z4Kw\xmίn-ݞY=ג&$$'N2c,Zlmᇵ=Obb*֮ __N$b1ٳAZ 'N߿, 4nܜ̌pIժU(^_{P~Csވ#_'~R={⭷FФI {x||[qc5aO!"ߨ'`6^#"ƽn$]ׯC"X#Gnc$wnď>}w}NMA9r\x3g+C8x o^L&^}u*UJnVϵvɎ;m5k`Ab`m~.]:P@.]DC]v3kVnnn|KbXX8/6]hQ3{sƍ|||Yg&NݻӦMkΝǾ}F…ٴi3O?.표s)bccqqqo3…PfР TT"#ߥiƴk]6o++]4'OdРl6[,_…ǵ|i Ξ bŊU8q3;tͳgr% L0 ?-Kpp~UV?w4%`Μy>|ɔwb+Wİԩ &}=/^7ږZu y$gaǎ]QۛG\_}_K)TO>ـ^{B ٶ?3… 'JǻH^0jp&GC)HrF^|XΝظ76mڌ3ƍխW7]OӸy&׮]/{:>|l7/.. .ۃ'88Į7lcl`ZN<?WVJ7yT\ ETT{*͛o/aZifp4s-I׮1۷{pue\vzL&jN~hݺ%UVp݅ y0r;d2U2m[reʔU>FFF9\ׇ{]v[i Օ-[d-{xxd_~`J(ҥ(X +VbƌY̟۷e̘ gǎ+R7H|XԬY4hcƼ{!66];ӯ__&M[Xܹ7n4jl{7 7NiӦ̈́Ή'ZȊf͚CK9w<{P 繓OIC  NNN4mژHvŁYj޶̛7wwwTl~ۄ `ѢX Dt-[0_jJ(]y㍷iA 6c|B-3ʼy zR4mڄ7|vIŊ_/_Z+;?{СC_ $/ɓ'ѣ8vTH^0 n;KѣCݩX=5o6Ӫesz|1ecbb?!wdr]tBm,h?Օʐ3}3}G}`{W_-OrQ&NĔ);6j{@N\\u{СØf vp=wQxzz~{*Ņ8kݓ^oje5G&eЀz,7 nԳf}bҥ]wᇵL4//T;IЧnVQz{{{Ϳ M[OfM<eSO `mGc婧H|Y#07oƶmYO*WDݺu~Ԯ]~G?BpGHRLۗs+Vdɒpi"r_PȈ {=L2:a8z_NIie˟lڴ db::vl˖ڵ ͛7㩔*U'D89ȈtC`ɔ)S(-_ͧSg't̎5S^]ǭ[q#'jn]K(Yx#TR0zXZnEϞiҤ^>:t6|vЦMk,sѯ@9p`UT)…8p |I IDAT06+y0LDFF7Ycism޿o Vn޼hU0L|j=y<7вe ֬]vSd Ef_ɓ?eTVp>x2GR(V̏ƺuk)P6,Z7KۮZ*/^"&&v.lڴWѠQpa0Ͷ.,Y5 {"wz~K~͹sY|%d!4iҘp:'Q;w2n܇ӤIcj׮ڵ?qlPduFuԦ_>vS)ߪS-[M6sk/۷ײt4c0d}eP3稤]/4A.Oɒyg,ģPLiƋ:St)ҧwѡeM&/oʕ9utۚѼ$ΘL.xyyܳ8~<4VUgtџEN7 ={tڋIچf.]Aڭ7ɔ)ޣ?={m 9;S5|Ǐ;y4|_xf5G)S&ѷoo %..53vT!`˖-iѢgΜˋ޽{z3舑#GP|90~ gg'6o[nѫW&N(5-ŋcƌi<`5 _>ԩSHvMllK:t |}}yg?4ɹ>|vN25k0njz@ll,}Asw؁>T˳>gMK3Wg3S=I5I||<С\Y^{wz/Mx ֭À\WNi߾k} {.\@>iڴmڴgǎ,X?Le۶)S4.\{޼̚0pYWd׼{3gƍFȑ9r4aΜϙ? d+ {_AN] ){oܘaÆ2f(t锥'[@eRH#X- _ ~1py<K ="+T!"r'bccҝ߰M=h3Tv{x*p"n-ewDDʁyg֌dZٺu%K`0l۾ONم>̷HNCCB1s\6+V/3m,>p49z_&OObMmӊ+Vc2XhAA!,b!j2~$~-?Ͷm;y ,3MLh׶۷"`|*=Y9rg pcvOMCС׬YSvޞpaTufŊ\\\4h p_~9?Ço*O%KdQTP6.\4mӦ_K󞆒L4χs+Cx!nT̝;ۮlٲũjՒVZN^SoqQc_I?#cUr%2G$Izbh]o=!w' .`ɒټw.^'gȐA'(Py0{v;}PbEzx^Uܹ7ol6Sf }sNxxbUرWW-Z47^s~[d⥜={ 3lӓ+W[ oޜ?oYz'ݖewߩx^z'%JѦMk/_E`zGٹs'7oFP@,Ӳk~y7FOpDBG2eJSxqֶmkV\EppݻtR{qbݽ Æ J:tJZ8ԣWD$/P Gon6:u&mڶۻX<3\pqq!22^d)MiٲU\Ll*_};vO߿SWEεw1:LС=ÆR""y=F?af9hݎ7&7Ņ}{ӷooڵ3]v+s䋁$z:9c ,$,4cGu/WGOȑc+gtرc߬'~ۚ0\LJ^=_d࡜=YUBynwZ~v9s\J(θ#Xxn% uwwgȐ ҟ3 Ԩ Et̙}se /Qr ۘ1/7vEݺu[νn\]=T?t!""""-z0L& \xW%228Zl K,\5ݫ(e?ܹ_7p'22eGrEҨQCYM5b5\tj _ggnܼjql۶lݺc>=+.68N<֭;lۛ1cWGll,8;;a4^qqs^cׯRz5n~l6e˟goY9""""""""W N^fLV'i~tkS?;A+i Aztp+_X,4kڈ}{b43]W$(~&?L|~t{7>H|kC3{TJ(Ϊ߲~FbccQ:CۻaSi޼ }zwgXtW\l2 Ї*U*quO'XʕjArfxKiI3w'OۛNE{x=ZW7Wʔ.M߬=c$"""""""0 XR&{M?$O2ke)_Ǒ:QJ899Sd 9F"""""""C@- dNiDr1=ww~ɽ܏ܤoȈxB_!.6Fy:$QxB]~{n;KѣCݩX=5o6Ӫesz|вVn/!**?ΰG{+>X!Sx 9oW)RΝ˰0cʗ/GmӜ1[ͭ[1̙={Yݻwq'mnڴeWq3GyW^D^Q׍$ 3K!)0;atHDFFdسtTRK߾=>}6W^`˖?ٴi &g'??Ρelٌܸј:9ȈliY2X0bt o2;Fsr?+nݺy6U/X'8p,o`A ϿHn2,<=C^ԝC^gv|={ŗx2Vk,6:RۋLg:<әN{0 \x)uΛWiaƌ9]K9FsbqáߝywHD$%\s+:*y,Y^x77WWeJsl>7^֙2KЧwf̣c. ΊfbH[y~$qvvdrdg;0hPիcݺ_Xhބ=jee\JGb.lflڼX6|!DDD$s'!<dbW^1[=ϴ(91i4vm~߯L]m"PDrMllL󜝝y{ƅ )_OjʶUT…ܺu+er [?Eɒ%︭KjuJ,`MmN>:Y3?C|ݏ 9̙syA,^4B 1m,rؿL4/†Xb5&ŋΈ7YvfxƏDÆ/iۦ%0hbchd5j ܹ玎ܺn6Z*:uriشi k=qs4<,dvṟ_Q_7ikVs/XVV+V}KϞޣ?}lNseoХk/&MJXX8fKWЫ@vyuDDD2et蟪Gdp9yw,:l=I χ.ϿS$ށ{O;rVݻbΜdl63uLڴmw, 1xL.ؾMoY8q/<1Gښ~DFFз޽tVЗزe+__Ѣ)Rn:}Ts6iDpss_8͈jz ϯ(QQQx{\q&׮_|y&Nx'''>Oody&/V:tg;>dYTHf8Hȭ&:*wv(X/K yc;t֛Çsdn;3՗N-*h2~ck%)0oTX/\̴ivObMm.0 a W6V'mhmL`hd:thGؾ}sS{Kf8PDrso,XHXhcǎ{G8rEp1@.xs/0aHDaϟM!drz|rleV ۷'dxxuxyȀTfΜK7v$/֭7} ҟ!Csaƽ?5H".U9s>K}se /Qro3:Fsr)[4ׯ]P[GQ?{MB_{U%y=jkvC׍m9$璓Fxb5ӯo;jsǎHJzg*"dr%::7'+W!!7Xb1LЪesXMre1L,\5Ztٚ5`l[gdf|ݛմښHhQ_5j7k~`[Ciڬ+VrJ.Ųe0Ltggnܼjq6xիcn6 .68Cغu>Zo]Dq:vl;NFWFl\?3۷&88faؑT^[1t[nNPPp1[׍ |}ɐpʘPLi6իWg!زgg|C0fw?u#w^|i5\ܺnnǹEHVDr[DGG9/<˗o!/ushѢ)W^c{`Xhִ=eʢomW^[iyᅎ6t8uU3RFu 1899ѧww^2+WRl`ॗ0}lzG x챺$>@Nevyuy^:ٳRDqV7څE8|?JMӻ;wŒ+*U*quO'XʕjArfxKi8! f/^GJҥСm1s Yj ۷q(P aoRi|Fd21yt> y ڷk*0pgWi[`>g-k%c$"3\sZKdI6dIVfM,8R! E$We&/pI|u9]7w:+<Ϝ'$C@ߦKiqڧ\HnSxw֧P?&,7u3I">r$MMt}C<<< ~&GO" ir]yw}E${t'Q+ ʍ{3^EA#/Gnc$9'/on2K _ZM wwbcԹ""""""y gNH/'@~nݠs EDDDDDDDD9"""""""""B@|N!H>PDDDDDDDD$S("""""""")s EDDDDDDDD9"""""""""B@|N!H>PDDDDDDDD$S("""""""")s EDDDDDDDD9"""""""""B@|N!H>PDDDDDDDD$S("""""""")s EDDDDDDDD9"""""""""B@|N!H>PDDDDDDDD$S("""""""")s EDDDDDDDD9"""""""""B@|N!H>|p?X|%3gζ+{1>y>B@TT ///'OcWʼn'R-x U١CC:uRYǩ_ϟnK! j=bWf69z]X,?|qqqveiuɱ6$Q蠴A^Z~8zhԩPDDDDDDDDr zRtN/Lw5k`ZSŋTiom\`ח5kо}[`r@ z9mHF#;wnͿ/̵k(P*q'i39: Ù7o۶ ,,E}iܸzpa4Z7?=˗qss|r4i҈g툛[| >JDD+V`ƞ8pH0˗/3t0BBB27ut0/0ugveV#F kιsck0ٳr.""""""""%  |<@ maa=!RJZ}g_v#m7o#22bŊѻw/4x"պ+T(O޽ӧlʔO GMX]yTTfyL޽'[n޷~޽yɆk7#䓩iʌRmӓO2… IDDDDDDDBÁ ;vƍa}'L~߶mÃ#GPF N<ɟpeGh0!oҥ6mZӫW_SwCPP0e˖#J`Μ*jfj7iUDDDDDDDF!`$=#'N *Uč7®GѲS<#v=znݺeW~IBCC ;vӧOsU_#pEi@͚5||;{ҥ\Z$K}6!~) NM&?[ns""""""""B,[kdp"YWvBW%J ]=y$O[`v!je޼/X|aaavnn:M&Ӯl?{󒞨...噪LDDDDDDDH!`gZS=V۽j~uB7#oa<@E M,ZخժUr>.\n֭8tTZ\b22\LxxI֭[속""""""""B,|rv=~>L P#[>ݺ)8ae*TiXDqiJ`Թp^|]ShQ~ Oh$[1ѣGQ|9IU'MİTDDDDDDD$0܏֭k7u%J LY8tmm Ȉ`HUe'lh_?wOt2Ξ `5sن [,fϞÍ7r"""""""";̆u7kҜ @R%˩Fjzخݝ)_<ܹ9s>ϰmi=7 `{مQޡhѢ4jԐ?js!:uF͚9s&'OڭA';s5+6kt Ǐ:QZUΝ;g:Pv-F@KVٰTժUMթS 6ڦгgt+Q8>\zVv5~WF#6F#?v |27+ ,Сfݬ֭ =w{ҬߥK'=F#C{sMkNR%,"""""""_P+WJs^镑 w |06y 28y˗@ ϟKr߇ח3b466la=@׮S͛7_>.׻wOTc'`6իWGٕQTTuH:!`ɒ%Xd!-f׮\|//O*WL~}Z5`]6xrj9͛7qvvhѢDGG-[ŋdӦFv:nnnTPFg5|$~ZǿWprrϏukPb40<0+VcܼyՃjr""""""""O2y̘,ON)^;766nܧL&xƿV5kM'!|Y(K:=qs EDDDDDDDD9"""""""""B@|N!H>PDDDDDDDD$S("""""""")s EDDDDDDDD9"""""""""B@|N!H>PDDDDDDDD$s ®_c\8yfs<V+0$kvK 9ޚnC6 ۏ3T`Mhl& f3Պjj{L;e0joM]0`5 V~,m9VmV+F1ՀŜ^+Xx Xbj5Ctt,q`Řx-XV g\]7Ljd6ٌj`4䔸}+ Fl5cv2i(H/X18 G&싫 X-'jр ŷ[7y+t;]p.݌gX$۹d5956$rIuiiVC`L8ό:qJ*Kv[,srױ01:%,ѐ0m_GvFuFv%ͷX,viP קŒXn6O||<s<K<%X&ַ-v4i{V16c$`4bprN8b0SN8 w`;1FGGa` ,N-F_/.FJeXPSQs}}L^'/3&+K4?i:S) @O=r',...ՇS~ȶcX1b@7' 씸+ i`09ޜZIjggW+xf$1Kv8;'f9VKv[H&']} ;Z1`&;քPԀk`N&ٙx{`[UuιnoޭխVKZ0h!1aaf7ZBRK-n/~٪2GfV9B[F޽֩:8O2h~ ~"'(㯟k=z}*H5T>EgMē}{2TqHpK=H@'±V-"0l&T'v:CTu=i< Ơ@Zu9Dق_pNpa [UTe8.־9WΓ,\;J)p>:/'&mu ǣZC"ui={_r!?ʫSER f~ϴ~V4lgùlsNHJy;ܪcQg% A(˒Nif? 1>h8K&6cmGN-ƫ415hl4ᢂR94;֞TJ1MzQ w)hh8A&Gu D)O*bW1oBw. RLvVjrJɗikf_7\y|3? qMu)+^7+]ͼP ;l]h ͫ? vW[=Zy6gխ{s+oC޵& qƫ % )q8J塴b,`}nHMy[u$>kvOuHI?l0*H?{uǣ:k!8_z$(/<N?_`ĻosD>Os[Ʉ(b$`lq͑!>Y\` ʹȽiiR|,˧fқ D'pu\ږlsS6 nMVJ De "R Ȑ&[9>le= Zot<0M*A ˜yY`k{psN~< )#f0<0,(uۆhh۞&Y%%Z?t^_.uPl hAZaFrJG+/SϮڦ* ίa&ELb9}΋yuA4D';( U_Ba_$<ύ6dFUb"*b-:[Rޓq"ێ"J{Zq)Gɋ Dg2(%Ԟ h/r;?rgov$y|ms^mlRZ=Q"3Gsu:o,̴,ZMq ϐe1 g|V(fjn栭d RA)(nK1S=-R#+\2OCkĒDkpɤ'gm,LX56dAFB)H}')LhS dZaxKOZAь2aU38Zxj`{:Vm2 *% ' u얶z ѲTPZtU+1n.pmBNf9Y&孄BTcE"5[p/x_N\(11%Xx#-*vJ+⯽eTCX"}P>DŠ?y^un.ݶx8!!!!!!!!!!! |-s:Z<\lۂR`ujYBJ *M\[* eW֏.6WZEjE?&4k& [ gQ&XfTT ТFO~w kˮ::Vs)́ޫ  qAn<b 8>cGYl UN?CY(ӊ_Wo{y}'$$$$$$$$$$$qv/7n9~ni>}{ \A721L&M(gs0Yz"\*P}9(sRccҌʭ/Z]c1E5ԦJ 5]vmȶ+ʲ 6F* Fe5YUm67LԔMԓFCOСs&{͍|Ps uAH;g@;:[*ԼoW>x/[(c|#jZJk2H-2L@9ɨʒph IDATh BKupumx&OkJ]RԭS`մ@G 7.wa>g >{V@i1nFgǼ˳ξnޔW5y 4[IIUu\Cxc|4 z.%xc3"~]W^]{) נwxFi(pSc?.۾tNJHHHHHHHHHHEjN8+gVSfyiﰅޏFGU?0;qT:P Z w'3kEMQ6uijɂsXPjV}c`WMzy):Ex4Slmَ\&\hdb-?q=u[8|痸-ogeyE+4N+=:_jӲf3I7*r: r j8ΐ;53rIVꩠ&lm"Wuk֟^,l$͟mYB^vgT )Lf<Wj}l<{fCI Gn"cb$gV_ Մ0Q!SijehT:x W_O'Al3~+.>t GXHSkIG𼎙̀D#~-_꡺)r(>k Q08RJZ Ŷu+vڶlho7{~$J3ۊڟ`m(;lMrhE\EYZ3Mi5Ƕq4pO6ε>}C:3RMƉLGr2YpNU|B^|AUu.J֥-ӯ7׾V.ETFK{X_qX>P[m(2ݘy Ome>8]X2 }&FW\*뭳YOoڬNŖFEohݷU{wۂ: r\ϟ'c֡8ıO?t"%Hsĩ` KZlA킅n`PȍF+|n1lFֲ&:¸dYFYϙGKAv-5# j+RmgQ ڇ JPZ3Mqfaݍcҧ;2&s_}x{o}kw̓Bة_5b@"YMoUƬM,m+Cȏ-",-v ͷԛUn5YC߬M(j!&#P_ TCZj*HgS3ͭ-]g՚ZLT&kuP:urt΍3?Ga'%?25Xiv>^A]woei~ΌDs6'$$$$$$$$$$$|s#xd & SӴBDR |1fS6fLiДh]:z瞳i0ՙer0ϡ%>CՒ78~ˤ^-:ٵ_zjJjus^~ADiԉ0 1!/4JB/,+h*xCꑧnU:1$Sǖ'8v,iYu[=% BY*K@!.YѡRg"@t)eꃊnTKBMcsҴE/q\vbܥ谦¹)ZHnFny-<չoV+TSgجϴ%NZ6WO0TM[O&:YEGVyzm&Ϩ٪&/U4ɞRΌ?[ީ1HG;0 }6sBBBBBBBBBBB71 <`e<d2zh>)*xbQEQ@@kb^7Ǵ )tpn~@}.Vh ͜;빩:֖H$0b+Rqx%݌JɵHi. 8cM~4!")O9rMd%/!+c'7}trywQUeec}@q7!|A9XX1<r}y?~"8p6:À8[a4l*ʩZq'(v_\&39&ϰW͘XN4e2Z9QA*PXa n!qa}Ukzܒ^ &u3vQPV'&4Lx1L 2BѾ8f9Jpu4sw^<aY1uNJ`/9Pa=D"7/ 8绮dj{?YuaM㄄o1$y ZFNg:,MͿm3<2dmK} QKSc*XuȾR-Ko -I >uyuԡeR UՀ[eVUr=Q aEEu_1 N겆AKw^1-N *qLZT묱`FD+ ;\_މj뭟Uz׮;ƭ{ OdR+檪 -ek?{߫Bk(2ֆ~NaЁLhZt77p޶dji6e@ND5lI)` D Ihmgk$eT4H6e9'5C "ة, W9Gn4z; ~S_ggF5ʓ?H>Z&3XpXސ SyT`C3'3- _Aq6lg2D94فt[EU+TwZ>Zi %0϶ԩg 8qzoN|Ψ{H-H}q~Օ@u &˨٧Z6t˻:k m 3QBxK>yzǠ,TXTZ?Jt'$$$$$$$$$$|k"XtZkpJNYEx|\c\]HsٌiI3CpF&䷲趉Xg >l]4&V7:՜ksg Z`QZH,zuZ>(JP.-̾5ӍB,ӆm\y+seKAI/XOy+Fӟ g7Ϳs`HtchybjJŻ{d)j8rދѵ5^X,Ӿ$N{՝sHUR L2C^Ё9dj҆6U} 5^SZJӴ HIs9,x2p/ \>|nI7kb)mݚ#v[ g9S(:C۹?gX=u cL}}c4&3AqF20x`?iJ:C(E) $s(qh|Y4o5$y`6.fv]ؔ8^_ɘ2/X1}Zb҃6?C_چLL64z*H,FW W!d*:J;\8iK%5- ޿wG(+4Kl͋ve/K/DuS V)9:5ە(< kcu!,դ:Zk<?Y 'ٵx=( c2}O|`$BR9^wdݙG2CUUkioV-[[6ڇU=bxj**yU8;m?&ޤgKj-SQi\pRP>Mxtx#^Tͱ]"hty5_ƠKdY+/:@>yϟXrm4vIe?=~e AD[ H$9bV yM~޿2˙w0JZ@oݜy[gC{"R3Y EZ1j$[eAQP)3s,,.3?HoaZamuSX;}h#2$ 0{vEW\Ž=d9F5z?GƞL $`4y_v.BeU,Pv8N>1>(r)C%/|[Gu`2& m#^7ppD>Wf2})E G%UPʤDdX*.]檮yc֪4 BPa'%%u01 pUZb̘vqRxr. ᐠe2d[8ݐpTNa,ֹoR6[gO$YUmi"h'υ6a>Sl(yccr3& , ]Π5"ZʡA"2~mgo,њ̻=bOS| ~oz67W_ë 9s_"C"65(, Q". LלÉdRU$<֮BWPu˞5 ȕ7hhrSs^.Z9@@dp$GᅦU*KIxRRkZ[t;_.]́ vŘ r237757ĕ7=XU$4,*xdX[&_+ٿ!1.' 7꿗 N,Y\E9HNR*sL3*EF|Fik,v@ĹگZ}J8\!6 J8\Ȕ5=hc3EaEcIPDuB"n cבnYuaVZ;0}vm* ,.γ-"mlmMpli1oPi:*B.F#!`x2G9hn~7[Cjo|kȌ};xMO>$^qS=ĝ;e4:uX />$1ye "s* ~|1-bLQl\Uߙ! "Z[T}ѦH&ή2<:OrXȠ2XG ˶PFSt8QAE3X?I372ZikxoBO.9 Rz2U N 1Ysؾk~x:7p]s 0n]1hm ^uRYGu{^ k⬽/ 4WU8k&F:*ɨ'ڗz8[2=nA*35:1{3e7 x*/os̴hQs$Ppz\kCh IP':Ol,JXs]& YvZ­b*ߦUB<"T:j d$!T(YR  %0"y쩩ceR =O~k},ά## &_#Q}эWOmAg9s{ٹ;`t! ߊHJsDۖ&ژJp\/c~&;-wVF'O?(] 9JCV#>stvo/x3U>;͌D#TvyDkol.uhnASIkC9 U֘xcgnv\ڊ'i:;8/X+.׼!EogvAWUUA*S؉pomȐɘ'p>cxƙ3ktL N:^:wG9ġF;)r$Sl9}dD5!fdENQt8y4'=ދ.@r\1\YpzuoNקf:C׉"׊yPOy9c7 *DR*zA~O>\Ϲ֊;.9!(Bb}h/EdҬϦWNYᝥQ)DL+"@5-:k^[ZJcYX\`c}ëQhTPz:l[1>y  ! 0*+ Gﺋy%282(,=.nP%N7(:mX:p#FSYDeQ.- 'NPU*UlhY>cxny8]PGBa{+E0NЕ*K&09z*q xvX MWSNN Z_7Xg~~/dX J {ᇯ>x#Ug]5})~D`i?O3hc ^{~mZۨX޷ \[Cp / x0J!b/(74+ɄȃT cϊ&Sj:B?8p,-G{kШB pvb?M2:zK:/$>,X`8*/+ a<^[>?UˋNLVΰ/pQ.zIάHS޶("dPts`‘ǟda.eX޹^ άmpCd}ŀg|t;=;@B F2As3QOo?]Ou'8q0{vQYGG6XȆcND*qj0DC F O3qdUN>3gТ?GcfYߠ:~IN;NuzmWיW\J>[uo}!})~⃟oOA\E}ɞ~RFez'a|$c'L7_$$$$$$$$$$$$|!U;\砛<,r"X4OmDZ߳5N{Vm\*lX9Ͷ/U2dEp dUk~3>f[A$%n,WT״T;K)K3/0ԤD|E3>>d xD'=p!N2>y/D/,Ru s1Ýؓ=g epl@2k+ cy"RXqd%cOFx( g{/COBɓ7oN{b9ay̞:Ӭ:Ɖl~}fVLCʩFVWYAg2gÉ;;uqG( W_`~QuݥU{97_ZEE"|'OҘ>S6_52ӝ.& W= @p$$$$$$$$$$$$|Hs 64cB֚'CX\)L- *)P`39}U"{/ƣ*ĹsÉC-ع̸#/'=áaqi--3g'8V 5S9Ɖ'b aq{Yv Vm%N霉 HIf2e6'kFR1\]ŔV|ӏX%y5eN4JgdSH'9xĎ /f ZC֞9Fe'H ߱ /,ϣ;!l򥗳!.혬}{pQCOvs2un+II\1+U{_ٲ[Þj8{& eY ,;yp 91 oL0K  1Ď!$,["YR"M}N瞡NM{Zkasn7Kdݷyn]{P#k/ ԩ?~}Bӱ8=7ut#4hРA 4hР?= R(#[ ep**⢭&6{)F{A7ƀI./Ew`qC֋ADla_QVK%OWuu ` YF|m֋E\GMn(.*rB,FhMHFz=:'xUE׊^ h(kPڠ`>ނG"Wxy[o:wdb4ΔzSݺ9xxEQ\WlI'Jn/o-~ 9DE'aYtxs#p<gYtR")|f6{?|9qB wiu7gR\ h^k Iqjz;+K쵤c uX36L84pIRrSE.0~Toq#l`F%(3֜ݿG7;wm|΁7hEU_w,f3mm / +;S;P׻|)Jº;~B3;E (sro:h tLuA+6{uF7oa1eѪ~?_y%k(fyV)"h|_wGs yVП1-b4hРA 4hР? N?ނ[W+nThiq0QQ6.9HӻjCp.ĊSN9|KX-(tɪuM- C?"F(c.ݯl]{!l=hOUztu\g'+=gEd(=iyORNFw G^qR{cDQ>lЇW:|A,|YS2ێtJ^TMD ̑!\C^%'B[d2AR\#)(+?u::>ztmgytNpW 'g+<4Gͪ( @ka: LE!qo /\ lG7Q 4*pDA[0H (AA&86/Y:e8k\ֶBa*.KozB`ˊ,{5'u%pZz<ڱ|rF^jkk t8ף7_>Q*+Ȧ{H #*a[n=m1݅>ۆz9g rA{~_sd)t>[o~ٟ`Q:wo_W8)rsR_ʻO<䝓OXYçwgWGN m 1#wA 4hРA q?֡Qânyj4WdO1h0(uM_&6{Qӹv' >cp{ŝhgBzO:%;t@Y9&"i`! !wWn̳2$>l9O֫BĦdYŪnA,>e+7o#:HLnp$Tf%\/IJ?gy|.㫇S hC5n;IS*Ѷ5HJgq% :ɤwf M{1_ޘN+QoYa5uw,as>_~I߱ 1:I[^[}S΋xd:햳һ4 Py=zѻS_GMBP~WHtB5*! JHq516m s£<,Q` eU1swhQA0klߣAFcd?;"A IDAT5wޣ8MtKt*S2uzc'c ) vAN586h: FtfPZu=}ߣr~7=uܜTg_>\ivhhKVGG K >u:hРA 4hРA?NS!h MF ;*FE=y!"ػpbm..&I?h dR 'r\pq䘾뷤%n=he@}v~=0E#:txo1:?䔠bwJ. ge%>鲶\deRGw7ϡ&'Eٸ UP{. 2T6ӳqiɛ>uk3xz&+!\}f\i[@ I" ]kt '*BaeN]'Jގ(Z'Ǚ'8✣i|[u+ej2$ R?]k_.hDg4%7- 6|~4hРA 4h58?()ZxZŭ+: ~l j?{7S7b˜c8yv쥬of9&<ڵ+<9zk֧K9AK2g3zɢnX/tQ/λ>f{٤߻ ^=8D6{~vFԉ]F(|>Zkzqa]5ntb5@c^8֔1A(hv|dUA]t_k7{ȯoZ?yh}^z*QjLq^2;(Q\I.'7n<9L2.pR'&b*[pSf\]9Oyړ'kGY=fr2ݣmt>ZEH`-sAm }[ZFb .>BOmy젪Zꚲ*ErD-6Se0pqEA;;C6vpK߻4@-JuQ ըs.h @<׾;Ͽʿ}Lh~n.?}/;c nOg!͔1ާF?@A 4hРAjW=\Z}2_|sʾVxiѝr_Ŝ]tmviWGa`t *%+ [ONg37n1 0YVazx7ʝ]:EY<8o(d[{-K4,xn} %ew NK8?9y:>zIQappsXtaG,fL]n2^O(J:DkcyYqG""LmK,__ݯ;w{~6u+0L&{c^B }Q YK4^"zIR|Cץ&iM;gC1k\)Tr=} ?u$6Mr)-pʐ_F9ayv 9~9kf6c~|ݥr[|UM@Dlz|]͉Dv !osx3`3(8/bIz ۶ yLw1 aD&zu{zZ+C52蚖жq\DOB"J'( b?e e.3g@@k.B7(Jo1|/9G'[6AONi .ƪtx4hРA 4hЏq%aCS{~NƧ^Q/Gy ۸w>umb] J^G5.YW̟SfPo Z(|-/)>3?3(?c,՚+&hgx/NOiyk:n6WY:gePlb>䰓U?hsd ӠlI!EOsv:^z ,A@k!"*];ЩȊ2F$7=D |8k|+_~ t?گ6 ĵcG#hVSr1h K09?tX] P#"|D>ќ m?L΅/%uۡ%'aV50YF=]nQ%O59~O{_yErY{L UBZL/k!-(\e<&+ d9b.$>m l5­kJDZmuCe`em% A ҵSG (kv{c!H@ebւ1 S򐊿L+\Ӵ<6Jd2eTUw~(=Nk-6ctc}NAet]1@'(*:6trm{rNh;|W(#t="NBx!j2A Bf@)M v- "MzM1;6=tQPb[GVVGQPd)ϒ=-PpM6_gRh%m) CǨɰLҭVgpyZCSCӢ(hF"vfb3|Rdfݐef:uyס% ,<'>JZQΠk1Wz>k6 Hӹj7 +:|>ء88DA4myK02T^Vs6]aG+cq~3;`<~ 2*8lә*}9Y-VD) v`evrt6I |FiE1hРA 4hРA?~ T?n-i?jz-mpr늽JQhAU4Mr>g7E(ٽ١>|G8_cܸ^;4I6=|iE'h".tm͓G{d=½#+ '<mƎvb7d׿S, ?"{6/,"Th_:Rz܆,|@Tn!Blӵ0I(bT@}j6crF+`{@ӵOz(tY!,1NE(#hۖ޻Tq@^4郎V#FG%}p+|RO1ZC5'/8#_a jTPlxL5E1o69$@oݘ0V%A;UHnޣҦG^)WrzMz\{52W+NeAjp ]q6vz*y^a|\EFt-)ˇѹet j:tM*qc` 1k!qy^Q:W@);Sv5/wPv8B<7>fv6K X@5M¹앴+T!xA_@piç獻un2mnU_b =xI=Du;hРA 4hРA? ǔXC.yS,o䜴0xg^:كB/Q=ѣ/L#ntKf1]ePG 'H5ڱ8Q/VTQZͷQz0;=9S0٣i=mA 'Q_M^HAeɟ #+,zkʝ)^4=>y(7X ]S㜃LS# &h ]MZa!PMw)`r'0Ye (lHaM?Zm rfh1r딧b1bsc$;GBQhQV%]iJu'gƄJ6ɇ0A 4hРA~|5@)׬1&G).?:J$#8Z~3<[,};<ƫdבHڸl9fܽ.=ft%xYJqD $gլpmGXQ{dvE^06êm,7`4xiΎ0{_NDD4{o3_W'ZNϏ8z.L7*+f3\K)(,v\CH}{]06c2S4*fL&;|kM7;}hv 5tM˃x-ı!E9|>B±tuzt8aәK@Aug5s@+l1WWFYv o:.ض]q@&?+(RL~.E5/f i9q:2S4asantJ| h 6wn7%zG,tuGkQi>Ȕ%!ڮf]H@FϾڠdɲ .Z{Z,|-tY/V+D :X&@P*HotQu3Ȕz9Ҹ0VA+U sxg)P iIX.;Ï(й%E|M&tJ}\ aL\0cC}A XM6*#֧3|tAI ?XB:A 4hРA ccj ].c^iӊ7>ж(|냚֒=l.Cp]Zd ͙^d #C#)FGlE7]3?9KKkY^EioI92OkiVK>xGG3/?s޼hgLCjbi' (n郼H\J3^_f|zs'>*x87Czﱹŵ=O֝$0c<~Riwg/)Cn,Xc('#ڦwoCE$&V%hbJB+c4h5yx; f:{$_߾u}܌stQPHQDV 1YzUtjhfo3@QE0E[ (͓xSYiȫc&WM oy\7"{H`<"s1u2řm%"~A</A 4hРA ک,8_̨&E47E%$:ih%wNgG4n79x .VjK>=ʵ[͎ m ^^}j!di $`s{)0f20Ň@Y/[T92CAYk;u-f[kSY1So~f9_x~~x'}Y^w" M"'㛿`4f QX\eY56=x{*>f4mN2!Ո>/rJ[*6@Pb9_1ؽ}>=\PU՗^` KF,:udGrĹӄz}r* eQr(Lq3|׹ ;(G'S+ ~ݫ׸rt_UYFϣ H;[K皴[(qy42VsBڮZV1l#F5-eU2(\c!qYNLx6^{ldBew6ΰK͵$J0!(@=Ȋ@;ދhui;##`х@'< |1rwAt`f^,hosFϿ3Ɠ1PF)鈠)q>$wa@9SR(E(TUQ[t5ŎֈH jG!ڬA"eEeIGq-Yb`z ӽx%"T *3 .OpwX<~1mNNαU5-jm |].NqBغ_vܰ ]w}b3;Sl? ,1Y:şE0hРA 4hРA? JE\7^;4C{Ą=jTn ߹k_2!ĸv1tǧ8l#:5f㒣w{ ~0@*rB#6ٰj}@RȳhMQ(G^Hn6q4]XozZ*~4m[Y6gͶtF)xD9Q9(kعyѨ$׆,cV+8kt@ WaF9}T{5R5~Nq T2V,hKR;aU *v)Q"ztڢ.Δ|ӇXxr_mG,Bk(V+p!ƪ3t hA@b(<0|m[\㼋݂Oa49Zo Z^  4hРA g~LX'}Gf; iNySr (" qvBtǼoq d'~X1 tx6} _y8^pvzB\>c2Q9w=%`hdwAkڶcBf#T:BB[Y uK6.zs<t%zYEֲvRz&%p)u;JUeGy\[Z&;S]'CD>E^?-Gvv1 C\!.6}M6(шtJYzr1I G(QO܈JPWEwg}!RIJG;λ:jy5U|p((t0 ۘOO߃l6t"Hn9|yڎ^8ȡm*3lf֋t놾i#t]$֝J4Z Gm'ޑքSh04x=ҨPt nD He4"tukZ|@}4hРA 4hР cJ{ʣDQpz*|MT3hP8 Va:T[o+/r͟ɵ'!Xη#O9b~6xĉ3YL]2&iC9Ē}s~rJH"%W]ޝآ>9ytk# #jhK| o넾#xҖSlS\ף،xQvYs<}^.&g5;ݻo||_*Ǯyťpԕ)gg,Oj(dowRZѷ(n)v(u,#!<Ťi8;:?᣻,ǴtAv$Ƒ7˴ _n4w$RCjC{ _nK57̲}^I0)cr*Z_M1b" mLJQNخk3QQJŨqr#:ć>3Ԗ_*%(u &/.KKhBDɍkd珏MK\>y՚/>G`Z@ucn0\Zko_x>x2%qEײcx(xeS|:.zRF%mQw 90>8\.Ͷ1KjGyj 4hРA 4O6x*:|vvƘur]AXK#|*:iKkvq{'_Elci2+\G%6G{\0VZX]>xG@WP e nUsv|`ƚMsuYiT8hkn—(wv@ز+pv6^S\l|e7{o$yy~~ϑuhOYGjl޿pc_FLس5ö.x@ n:3y}z~ FxD#LRZ /g8 &t4f.?y\"zmD"ca"y| fLE7YXx,+::׬moP?1vX_+5Ac>xTPiޥ%~21$VxגxLXi/Y 3=MDt>E%Jߔpmq )޹ߎ+2>4hLfx3(A+Rk֚Rhyj@Ir`&K ܽHlΥe^:W`VYsfG#toL=0::&ys.`#MouT*A6! %$hPB81x݉QĤo{)PVѧ kt(v!Z>_#Okv<$x!LuP;JxHީSN:uԩSN/us'UFMHkO?诬mF D(5s;9}ƓxgM#hN l>b@}ꨂn߸f8hPg2><ėkbS'LO uH'7vȭ4|}F?r 5J>|B!JE^E}o|bl/ko3XdN f&,k oq0?n2g̪9U9޽OW^.ZWpR&Ny훟_VP&cFT.oȋh bEg5 / bkLc9b,FB0m{aM ..D ta 9LOU^!xL)\Φ!U*:}:# hlf1)ʫSlV:%cmGdJm,tZ'@6TX'$jeQ*:HǪAaCO99N&F_#+ DYJ(r7aTJu_=V %8Xm:C:4P<|r&H2f.ƍ8 pJCf2uݖ!u 8PZhtYn"$t>-zj:uԩSN:u+~NfUYzBZ*Ŭtzs{:7Y<_BѭDX0BoPWs|xH=Tdf`c1cz[hZ8pu( {}0}Y`Aⱒ@^Xߤ(zCܼ]/= 3\_!w) !b4NYVJs𦄼#ϳ_$">1x1l?s7T)(ldNSkSG` ङ8 C#&d.7S\%@N]mqh6iB0P[1N8P;ƣ1j++LN1:-F@ȴ(22HmL.fq8W"B<;13,xC%A_ h\ h,8pA"f6U2vym37ZpvTQabE I T6ūEV x>p%W{sOI>BZ^84# ̋`5E]U ^0(Bp_&31y++pOLW 9yN:uԩSN:^e oF"*uE$#a$Ygl 1N uhhs 3J]0-Vt;zahjP&gc|r0sH>F fjzí#Zw.KQBe!`tuU%]{6뱶SD?`>#@> )S~ >M.pf9l0Lػqq5!@SO0g ߦXjࡪktF^Z.FZ Ȩc (f0xf*`iKg}4yPēg V{}).&5d*,ztH>8-Ӛ>%i+nRiE&*9 CmW1T`o)zyasKY1M]tThViěZ"(Va3jh0F2%(e"%dZȍg5,bljPb:^Hу)r$J*hr3m0ZiCn,1h V-1X-Xȵ&3)L*-h# ™ʂxL?\.\ÃQ^GfVΣR A/~@BFCLgkB .br]tԩSN:uԩ[j\Ta1m*qďc~@ [k+VSݤRV2̋U*8|a^7qhrv~kS~=v=!yG A$ݒ'ܻO9^Y^ey\q]\UGGOe5+kk(0V͛c14ړqjm6"UPX"nnfQlirۿ{>PKXya3`i\m0h$.G:į1`?Ov[tImKw0Zan6_F7#T:u%'XQ"DK=}jb3XCf4VTk3BDH8йnf$%zs(3 Y),ϰ֠^pq24 đ4lܹ <Lk??o4Wkvq%UY/.KZ!m (JFa&k c69)2L$fF F lMGX$=wŅRJ1ϙfvg*jpZ(.c8gmN:uԩSN:}"_b(jE™]v<{?\tJΔS#ESL >z.Sqmy'^MU}ޭ]Ƈ3.>~Ac:8:@hƜ\D"1Xb13jGB+kmc[wS|ٳ._-OOyJj D  ȣ >5r)x H1 y'2H$g~Q $t{'{ַw0yA*P5):DJ3X#:J:TUEmF( bUsmP)98]·%hs 3Ɛ,B\l\NWGcozi %̚x.\KFȌ&2Q`DLX~Ѹ >ʳ@uR"*F﵉c.,Kv5.YN3UEny[Ȍ IDATB^/ހ?koՈww :uԩSN:ujSU]S;17eI\J2cGW2&&)M1E3=k1=O.:a<@6/]ysxxuɜ^1dqb#O>G8MA刉u5!(1'9=>N݁mb,O@L\<ݣPۗvX^C0>O{>ym('Aۜs/299>ڛoSm,=;Αib^P;A΋W?tQ1񾇅y6^( CB J+7〉$'_;QViaUKi$|^Q9O~mܥ9|sJפsvԩSN:u+~Nr&3l stQ8ξ\vuQZ1|H4?[Ax񚀧ϱWX LUsas{b8y'1Y2|֣ӣC|r.:$D '1p573*]-}3Xޤrӓ=U8\ .{Jt W诮ʼ3=<$spmg{=Yd1;9;ox&#TolHa3FR>>NǩCLfpP qx,U#xH}pVdD՞CPׁ[g.yo]E95;Bx-sK3Av$,5.FѤrŦ)3/6./^e1ygP ,r_kSN:uԩSN~2_oE"aTtյ:q` AIrEA~\ᚗbx»K/ crZ ;k<QU`m M,K??0HXAU3FGǔ L JE$ZZQN&B‡+l^A"g1Nvn1[}畿!kkFUhq!ĊA$Z<{\]oQۮb2s7oq<>%>.uUb>wȇ+۫^ YpK-jb!\1ٗr4.&p8_3b6F-|9hi`Vq\tiBXk2K6 WE"ET_4TxpIW)ƁRzoT1:v#uޣ a )ꬠ&rXYZf[MZ SW^_c"ET"g:jA' qՊ594 zzn+)!/Kؾs9ބe7f|I(ZFt SN:uԩSN_YusJNog^;e]3kIOI ^@!AJW69a_~QzULP_I@jj`{8 &)(7Ƙb<G5q|AMSasԵ[׮-cG'Hzhݲb|NAϋG\b-#R*:|JIu^NE{|>m?:t%cS_XAK׻RTޡ|Z L>FUlYUֵGKA aa1)Z\PjpeU%rZizZ:I"T!HpzLht(Wȕ @J;Zk/.>'AGq6/k7K#N\>:uԩSN:uUS 9Z]<*t G ! DHO;n4!e"򩼿Wfkoqݫi w:?öi6pJ9fcf αo,CxqQf91@JN#33Wr槸%(<h@2֣1}f+GG1e ;Y 3x'?_ 1@4A2V3?=_7oRBu<ڒzh<XYtVwlr%C99 ̰ .=pke>Q񈪪bǜ(QKt@y#L(%lۡ(z-s&g9:>W?guqJV7wh`{{?GHU-My_}w u]GWT zN(X%q"%%F{Yg ;1%?xzk%ܾ~xxNP̂g}r-:-<;;yȌmS4Rzq=&KeK?8F/ !2ƙSF78Wqzzd:f>3LFg3)uUG\Ma%`Uk*KkmZm$>7Q<*yo:Eq t GMfJvL<̵a`S(Ff{gd`y@EӤ[@Q;OwEk trیZ1 8R4[kjcڪ])n\*6.,4oA2]#:uԩSN:u_S]ζQ5t)+簽!l{hO;+Hoۧ J1U9.c 3>z}?E/_~+O={7x# UUo~yů Vy3;J%C02SƓ)5g:+9c'S8>`@!'q4̦Sn^s?F6챹E? ܋Vx]n|J{ =X%.X}h{o}*NkˊWW~ν{wS"Jt۹7 4W$'f/+?!"uVy\[|gxŗ߽+W`J,{n":\'%_Ģ*OO曗L'SOg8G+S;Gb9GZ )vEK`&Ve1$p';(n=!}tF$:=P̹zR@9!`=λ2 O.XSeF@ q5 H0)3&&J݌4 @\LDXt3BAb84}Q۩SN:uԩSN_5usر% bdd6'[Yç7B,Nz~x2i;Bz8o#`ktVk8,5hVW^^A&};]|ц,yÏ[jՋϫ?9=+6]M@R,С$dO}#At(@]x=vﰝ qjxѽ.>)z9!vX wͷ +h(zE<4J| YEm4x &.Zq~:_љ%*9=j*.RQTcNY2.i8rMti%ѕ+// oo(9SW't |VwgWEӡO$^W>/ϩTgm-V " xZN.8aL};ݿ[oCdGO$9Yz@CjeI^~FQnAb$ Y( [ݡ4g1?&7jW~(٢CT m hfZ^Ҋ '3QD:0盵r)Y^ppz!t%5XQ[ݺi}THA`>z%4gwԩSN:uԩuusJR'b* &&tJf5^NYVTUr4@PPhx" 2y[.paz=ƷQB w?\os.?s'm_:/эMe5LO+5xvOqkVsdİSnݦkNOϰ9Ɵ;Zg.0=:w_~~C)bj@N;7 I}oS r jĐ@8h`LƼX]97?R{@@f~ ~sttO>޽{O/p >+\~q`^}m]}}W5ZA&*mu.w6Uty_Ǯ/J i`E8ӺhYג\}@m &3k<'2dY1\f9)p[wP 5k+KJj(ԭ M*Q:]b.t/ J}hianK.!Eo!_~l"ϡPiuXt~EↇO꤬SYe^V,VX(bZ. JK9ϹHL=c JUNuMp5l@E X Ap5cY'F?I!MҘPz}A:uԩSN:uU?^; IDATT.(;OkJcԄɲ4x+BowQj|ˉK$y7x+~@xjݷ?扦 *,~ ߹_A['u<2əLg޾p{'v"!7g;ܺ1Ӄy2gsV)Xl{` w{''8P.S*I 5cu5QATh?f&rgxŗ<#bڇ&c MSf(<.\]78<:䕟-F֛woKܽs\]!ûl{~G˴ .ŗ֋%es .kTڀ'v%ztSWN:uԩSN:ujSG$jO6j|ꇋY`'XԩSN:uԩSߗ:9M[M9Be}hLQSqWb`_ k-E3])k9<=-r @q2W~y) HW?Eiq|5Z_l?(AK#Jɩ}' G{*PF2/rop$='UydSr?>[F{*T(+10 㩧|U&''yEC#^~yW{[e.{w>+ϒ[.7>,*: 4+h ڿpa./q9aZFƐ96AE7WbXv>:|W!5oC(W*\'p E Jq!~ IW!; JWS{ejVbXjfV{0BzeyͲdus:=wnt tc$(")FHk`6rئ2eR y2swV&ԤInB\=LUYQZ?؝;|11Z`HʷST8Ʈx}_ԗW Fɡ'\IDhvBTp]!%ft>qƊ)Ѻ JZW+Ǎ7Ij1_?oqy~Zi"/|ϸ)B1l\ȩNܯc<>~{|_M.7#}󜟝sr6xηq{Ÿ]K/?s}jۯ9;[ePHg䔪 h׎>+¯ڻ5ʱHެ3@b2#d*HN9L[h}=)% qBrsO^~8t7o]σ0Mݹ8̔8`)`MʠU{(2K:U^R03|8C(w9AidӴx3C'CiU+p\7KDa)7=MLt1&8b~c,zw@ЈLJjM6X#181M)FbLhiך玽~Uj뿕hѢE-ZhѢEC-&GGLgDcn i[5V_x94)I&2 #:NGqĻ6{ B=gċ?z|pM܌[?`&fMft|Ͼc`͊=wsqH 0IEsO2۰bVDipns9SG Ip&yí짙 Ơo^^Q8^{艬R1~oO_g>Ɍ'| W_nj`q|rH>CV:E*TJ5ӉCnl\ÉG%ensG.#.N-Cl^{._j}^{%~?NNN կrxtŸ7y7'O=5gg<ͯ_}[>/xHS>í7 ?᝷O=ýwe;n9qċ? ='`BӶ\]]qz"?_RVgg)Z2s̿_d?ing/" _G/DoWgBy.&Nǘ ~?Y㚀-[[u=ݵI$NHn1%^5~g{?&w}iyO^{˳3D?KOgpq~9?Szo??3}k\X{J ]λw.CbѴn6(ߝN4+eoR)exX39WYjyϕ0 4 )DSSyNnĭtqyqsiY9q ȷ/MfvE]1 r=6s5|l%h&HL)[}M|.#HqвT!Y+V_jD9 .)P1+WlQD1EAIheģIJӘp^̘vW s8|_+D;XL)E-ZhѢE-j1?]!MNPjqD| (0 xiܜ B58F[@[- Mi6o_ny?xtdT ˜$- T)n?$4 q>N\> +BӬh+. rr+ɯ%)HΟ7JL3X9>4ͷ0ZIx{| 7΃gxS?||Kwp+Iy'f^ŷyHÄalx׹y6}qy~C8{%O}INc'| o̳2l~1nF./7tQWLιh׭ZOJuW*n٠ӽ$`=um6QOο+A{D sԕ~:g8I8SLrXp4Af3sB[\F 0%495cda"%%L0[9Bqak\aV!ǐu\hѢE-ZhY 5kܦ4f$ϿtK=}Ӷv`"151bQWy=4)qMD{\{@ f9D6WSy[ H) Exo! 4E.ϯGsc̷2W=5\uG+#Ƕk';MW kǷy-8w9w?&5L'612M#]ƪ_'4>sSLKxS!3|!I;YJJ9eJ:wf`żsQ3.yv?D8afS+{ b-nh,?#q&Z"s`1ZCqBԘ4)Ō{~Ɖ1\vU#4Ne/Z*ۀ{o\*d`15%4i)epѢE-ZhѢEg-&GA޼_eb="Z&`zhinG)NymZLf Bvm=򖘊m%.l+/MjAVw3\e'J&CJLFxw!mC{C'4U/,4b >%)3Cȧ0l ?y_s4՟rqO:3Oxny_xŗWwyE>|%2iT՗^ap~z6Ocb@Պ/}Kl[}]́de#q5glNR˦P6c`"Mhcy~ْ쑂ٯW3 98H^Ǎ9Y@۶ '٤ӄj 'k7gHj8U&i<]X\(0[u4f^ָ}\Z*8)x^%(0<0C\dkjؙZə$1aLІe@2+ RJR`L1HlƑ4M)s6Vh"yT )HNf3xΥ.ZhѢE-ZhR e{;5y>4lRRI#8\ xy&G-.e@ 7X{ =BƵ& 8'~5s/t&卺!NyKc:1jSn5 k1_/ȝaZL[lDW_ȽgovWwuN޺<౓c|/w.~SgO>o}&w |')&n}1Bcg眝]"R]shoQy?mH=Plڅkiگ>bF4'i<|xmhO߷Xĭ[;;3.@m=M> 83=C4 VsPnz%RjsXs-{}`[+bxs rگNe2\z:o^O^++TLB|bHsrN f+1mi|6KoO+g 2(GN(jZѶe |ꄂ8sYMCad3]kvPЉ!3pDsS EvѢE-ZhѢE?k&ţ_g@r*L8 aKPc069IܼѶ0BhvSaKUe^"fG)6#fa< y%y\qq>.xܸAFBߛi%9ULKgu0k()Λz_W^ |ϾjRy,f&#kedaXs^RbL$/|^d&ٺrL/w>&q/F6Um4-.8!.)r9pXa'`Q^I18o\} IDAT:|[M`ݭ00@^}3Ũ|~Hd6MjJ/ K<ڭqa(@!GzKV $դ2j-8IN^&͕l.r٦Lz%)4ajDKw%ޅLxk{\ ql^mє&`7[,elZMSD-Oե^uZ@-ZhѢE-Zc[RW }i @"ѧ)v`l9>>C$Ʊb#}}1#uLͿD>LsBH\yA7L) +{XPvFt^s\,fDNX:239Mu8n}}~/~ k7oc {ֿ|N D?{W|[Gʃntl~ Ia`EjxC\y2F994F?)=grz>)L+w})L+RbθlxUMXJJǘSM^?'#e.`ڜWM4 H\׭havۖ{H{*%79麿YG ihl4ڙ˽g+}6ߝ+NIF5UsdF09[uj} iww;n 1Cj]vPq?cn9ZX#'-5e:)8&x:i{"#&-;n>7hJLgHH$T$#8uaNN,ZhѢE-ZhP Uݮo AS"6%a»8W8al9<9iq$Ƒm^b9UsRnɜTʩ?UPXKwWjnNBv _ iypvh=[][Σ.p<雼{ó˄{&$Dr!fiɮA{3L<: %E!* 8ұaW|pns%X̓'뎻>*R*NIj Ω|"؁KS,frpLƲᣪZH>B0m"ת%%'VQ2yN\z)S1-_K%mӰ:8 &!Yo4F!vnIr9:Z3Ɖ!ӭ:RT)͛޻lJ"3qu5✣Ѽ1e׸FÖLMBك jDir\X1Ej&ZNR o,igo,.oaLbX ^maKk]߳:BJ$34en&iCah-u W6N8lkN1:Pm~l0Hz>GQ=E-ZhѢE}Qf\ }5}\ U4EtJ1\HFQ"M6*yi@@R'Ep3$f:B*v6Rl<&ⲡT+5Jhu)\]]1M1'AW+ vf}=>3Ebk40 L3!̹&d`*xkI* e2r$NdKDވшQKsr〃UCiB^=/3E"c~%B ӀVR R ?%^ G)R53jA$ L^%\~6PGea݋-ZhѢE-Zqb-? إ|8 Iak[yL&9M7Mxiq& F@o3v+8rh9LwřZ*"FZgFsrboiM'͖ r3S$G+ 2ģxp*|j>"$5bJDŽ L"iNe sBRTa0) zȨpv)"IiEi$BHaϓ8LSnR M:cFWSͦoS5~ q{[\cl\9Cb̵]o*yLqAof3L[L1ayl,Քw8/ͦc9aP3{th+/*\y|<&r~IQKT"37f*w4^0t%R!Φ5gR+sAcLhH<}X8iI)2rrtyV4Fb]<iIy3MMKTCg|ĤE-ZhѢE-Xj1?\ΏQ^5xk0iM Jڎ82]]PYtBl9``KkFw7L*8е=QEK)jj:F \5Xj;ЉR%T m@)]ljy'q ")L*y6go÷ߣiZo]Gq! >_&J{I,UPju}Nrj1KI1h)ٔ$'i{p[nQfZ!:m[avfYf~^ :.)Lx޿Ǵi1*m팻8MpM/@)YQfJpUMq:\{Р珚ݝxT*]]ES"/j.AҒ"ƞ>Wh7b~CQl7# eGeȉPAO%ńc[&,% &ǹ|||UcXr<w9eoj_sE-ZhѢE}U3յ~,s f#!wgSiiDcNumTl wc(pAc TDK3!xK4LPsE3YB- \](L1qff6;19Qh~eW1L% 8quy"mKZѴ MѮ:BPT#2$TfߑAK Oʆ `ɨG'`%G㫭U݀F/m%D=upOݠtTӗkZ/G(ggTU蒼+S0籒HKƑ`#)%BhX%h%.Vr0UeګND4qgCk>b3T'{DQJ:~ ۵K6J7'M뵚I?9XAZTI]TUѹz\+Ry׻ Lv{j9YМ0CJxF3WԜ<8%TvSu{_3+K)ٴ;<s{E-ZhѢE-8j1?*cw8'a2Y)KqhBS}5b}6LIxB=eeBpNO)qr^hCedG^R" \$lL1^ͮnYֽ31 3:qnxOz6ۓ͖f`Ju4! QHg[4D+NnЄ>aR-DG~GgU#D=Sf6i&YyN@$$\;L4>R0^ƏiKW֍lӷXnėzJy7N*cN 7^cXqt "4ZCH8a#M NH CW'7q7_cL_5x6ppEZB8E>R^}qy[/p55XUZr8Szq}\i%Wki~,fP7'tWv="y˙#@JFĸٔZinBf; j%kf#k8awi=S@ $hܼUVRi,LˆM6+IRMhM9yGXZWݜ]}a$Y-vTjpTsZ/Dz&`€ D{y^yҖ&ƺm^"$ZntmJq6B;}\Ԅc%sZ3w\~L Mkn28L 4Zb KO}s/\c73|Jl/'M#+Rt_-\+^+9VҪ\7 ڡ!? k)K=75 XGK}ZmgE~'K51D.Ҕz[dZ6JOMV8*]۲z./7%4T4fRyWôԆ1.EKfi|\\E-ZhѢE}LU{ ܫflPS4Ƒٟ96qtܳ>hVkIbL$1 `:mtea*VI$ 0'v}`g`ETkkNr sq^߃X֟#`f#gs MFJk4E4Ztؔ،ۋ+t}Ks ɀƫi_P}obMqկ1 @rbHcRR&(d  gX‰ ݈pZ`Aê?i.Z˙_"FSQ5 k`Xw8;#x\s}\3|EqP3]'Mת",x -_R+9;c^ֹ9X>!@wICTU z}MѪz`%2l@d$Zg 8{ڦc^;V6<7H1cgj1o5HN8U$&Ė9Ř﫛A4\6ۢE-ZhѢE}ܴYxMiyY_ &Ɖib\qЯr6"7om iI2b.eb:$n#øŻИ'GT%Ƅ"h2Z+lp툣)7Z9d0/cIU 8Afï] -ڱUmvep(VvD:Ԕ6 ޵gM|~q~Ӷ똫ƉA ـ؁XZFH 6huX\-]Fv/*4H '*' cPif ! g@TQմm٘STN;{f/5W5RROiu1ivׁd<qܾuˋsN.p"ʜܧ2C"I"ӄ t:庯)?jؓ3mkk5=BZHsW7a$Q'Ydu.Mag8&ۆ hbFFMHt!jwܼua)N׌YCS"#ݱI$pk~?jں ;DhѢE-ZhѢEG-v>ĊaS%#䩄Z6q.D`UOݦӵFgHw$P5iA6Mqtm@M)͡&B84~ky$vq}ĤCNT#m0V K&kP|"^W5ݪ%ʮabL AR!8Zst!id"Sup\`XINzh5zx7ɦҜM+*ݻu̓bdsZv0!R e*05dWAE_s:k7s@"!'_tu`VkoMk MKuJ7Pj;uhnܺɍ[~Xgݢ.uVc\StSHvd"QB@s-F"cl .e^CKZ9t3?n&"ߵIV%dHKafeW՜̤zRٍ Ddrwa6ݼGI䁈GuW |LۀkBI5ٸR >ՊiH16w:)%i۟<1ҬV4>tژH+]5sl5RQPH=\*n\֯U{"{tf3EaH)dلi[|sQ(lVa&\񒐦5j8]VV3K/?n3I28g ep/\]HxA+-ZhѢE-Z1b dR7%zʣř<1]]8li$`Z .˜X֝w]BB]c|hc,՚XqfȤc|[J/M1Ae؆ylg1WEցiN5MS&NV/xDL_l58+dZ]IN!;g3/ʼna{v15Bd@0 AviZV}Ns*6J8kZ3ʹ[ݫ l W!IصШo =bg !D[ِ&pbĔ 81Ȱ v0qy&W\^mqh%1p1qyyEӶsj]3v&sr"ѹy30`+ (qC5{Ǔjμ CRK.F&DE;aJ8\m]sDNIq8&|)7/"!|.ʛ3_bNcy_6QN+NsHI7n)DwiE-ZhѢE-j1ڽ)RÄ8NLW[l WJr$x,HLӖnѭV4{P"8p&c< MW,][1G\Ld)TL]/ MTԀqBa>5ccNnaWatߔ5k>_1):qo]0+] #tDUq%Qduu7NsJJR94`hk|fk8NCDhkAdƔ"Tt۶萮ijox\(&LtUG- oslR]䗨fӬn嚸|4evTF<)Ue-%biY b.g*暜V] IDATٖRbq4!ҧ" jd90LݮU}3:mzuh3|G\';xoo9b̻)Yp+$TLiΗ^m7ܾuƪo#/V3b4N888Ȧ0 @1ois1m1!@ea'u;pNV|,͠z|8M~sʾDZvѢE-ZhѢEC$L4M4aIqMNe "088Xs||6x):@nΈWp~!Ђƈ)c:'Ncy!,;EF'H*vNrV08;;G\U@u/> O o!#)%t\q{q:x'x[qvr+1==2F&5\jPjlyJ,&a݁+3Z!4C!_ g/2E;| J$qHDlnW3KlCӵWlt*#nݸ4%!ɺlHe{G6е-1 {1yDtzL?gG:8t3Rl֯\׽]LФs-]d=)DoKSA"q*'4\Up!0 oi4Qv[ Φm`(;i8RڳB]}5Y*zljO|m]-ZhѢE-ZKbM5W?kb$gn4qIN#vSE>LK&%yMЄ&.-BLFFiUV<:1uVjsL"iRN/1 C-[`^W&Jyg?58)cHi \uہ&A\Oz>ZMl]ɣZ533)Rntw/퍲gXP3`'w-^{*e)aLˆc,1^^UyFC8 ė$=j8iCYRfBu4{_݁9y؞5D&QҖI| iW=]I5PR̕\s5 ls (e":N&J36NJ¥3)bWRڒuJ\5+x 8cutfe}s7˳GdSG)1̍ N^]6G[xaTX Ֆ6Wh5$fnzt9h6m̹Ro5yW'VRrN͉1Spd\?RaD;6={^_R(Ԫ/guIsdE-ZhѢEh1?DzMJTPS~yLÀLfUABn{Vb"Zuuxr3 WPBV#\KL5LqSM$b:d`#ɼs SǮgH GwncVl.V˂*Y&꽢l/- TtRq29uk5#猏 KT < nOi@Vl[۞JNK!Ri@@y&*(?+g90D1m@k)ޛ ޟ" KINU_jI>Q9_'Y R <y 'l7[nۏdn -x m{o a``%E յs(5u]T1+HLe]2'5yqҊ|kYhѢE-ZhѢO*DߴaRq mՔEK uķ̡RE)j*]udwwVe&yC{,(!"8-ܹ߸ͽy,@Eb88CW^{{oq-֫3d 'GGgbL:Gl?fs|&U["j3JG=:m]Sf:3kK2 ,ZhѢE-ZhѧQ }3y`L~\{^ ,WgTqׁWiKlNLVİA3(I0Jpw8$}|K6k!gOy:^p^{ULg<~/o7>zfs7k 垇kTM\k Nk)6eyEHQ\i0ki珟^5FD_ۛ(fho ;V+xO<:L Fk0a3 =\΅P*@*#E&PԠ]Į fpDu@ yh⮞ckЙZoV'{wuǺwP7w.XRc4?~]V95LQp'@tE:o}`W&Df} AQZM[xJ^ɸ6#gTI6\;KUќZx3Z*ZQU~'0x̴RPSXCb̹FQ#Z,_?PnxG-E,>=)em4E~!t^CS5 .,"HQH},-ZhѢE-Zb{jƥBF(M+X5M +,sdsJEJ$(Yfb]pzSS]wMɞw ?bNrV@zˀAE<;p{ɯ woij3E{~|o~Wnd͍ۼ_|};oWwKܻqJ5xo ;:_=|yTq\SZq6Ym]}2\n"}@9Uk‚"sm-BF2uD Z/APoɇ^f0pВ!8֝#7W_k&j/.Uxq!^0];7K5RR} R~.S,mͨiVFQc3sX1'k˒)؍{D]3I#و 9f^c3 00a7mf0M硙}5Yt-`9Yw$ si6LI:-!Z5Up3Bvܼ+y# rm09;l\OZ5k:Ev.aJF0|ףfӳ͓aҁ#]UcUc9?W6GNo Ŝ6eˀzRNH if]R <R0=vBǚ<4*eH2?E-ZhѢE-b~BM 0`9\io\'5jմVcWNBiPqS>{oqWR?3z^]qK_k<9>|rN?{ۿ6͆M q+y|wmֿ|O7Namp:fzsZS[rkB5[q~]ޗjJ?N՘ub ()\%a} yԄS{lFo}NOجޏc..x#bu~/ՠH:_uS\L]A)"Vs+O]PIbWk]"\hѢE-ZhѢO*'e #2!DV@ef :"5s;R-oV,[R`Xz0U)x ~uu9( IDATFl~8D'>'7׈S: XIb =fnyBؐ\^^uE4$~;c`,d|O$H-y cZպqBNJ N8E_m N=wHLt %X 02'ۓ {uNWYJ5|jU ु#Tϖs$ R);~f䚑[sB.zB]5ǒ)Y)moX5:l׳^Ѧ sرnăFV ֋ez)4BsvZYU03,PZ=XU_2Dmj΄bCpIMf);ZeJu5lmPщ|;GAG^|_BVBqz ;j4 8!U5%:<6\Z)R&rj-b(yZPhk5U05Yj}X)E#Ķxa!ĺO،q& W0-.!E-ZhѢE}P ZWD(VSE#XwN#:H\20ЙDas͍-.6j8*/.GJ*X) ޻J&*hәRR"^7"!-}޾=q|!tJ*}Nqc֯|ߦnC9h5qǗ?Ou+e4G}`p aXifT~E&s9sVJUFLbWZP[t@΅b(͠qC\!1S851ihMج;dl֤=]Y*U͐a$&PxaΙ1'.hC(Cc+BŞz &ȮZXɲ}*U3wU-Rz 1'I/:ս]:3<5'*A6߶j}mѫ@S"!b8뮧yv=}xqZ狋 Y3(Ϩ9NoprdCjhfq6QV]ǺW}ԼNFoZ5+(R/AYڱE-ZhѢE-j1?͉vaȔ2B$̫7>3&|dۭ\2EBW цheXoV`u=}_/xvM}?{sxk۞߾{g?ԚS*mWHǩN ޭI9Q8{z{䅽Ƈlx s( *5ygP' ] t(SimJZu@u܀wy0МkCGgl[V /@5S%ïz9g1 w눡#Lus3zOJ?'A2mo|g>F.p6 H9#t$5k8Z 'PrM3Ƒ\JMmLvjLUPDb zA@w8R*Vk.yUJM$DWmFw"tK+/xli9{'4ekEZ>ɪ_\;VPrh 992s;|lpq=>z6}F{nޤ䄷JS DŌ! ۚv5é;M,%:yѢE-ZhѢE>ZLOa,1 @M0K9Zqs^&bE)9+A 1̤V~V5A a HݞscUt꺷Ff`816Rs՝>`Q:\T8a>9W".B (g8''[SAd1UX}&LJjjdzcB"k0 Ҍ93\T8N}?fLγL2'l]:laϫ ڒjgmdE3]y 9ڬ!U߳=# ϟ>r9 ;&zGJ>Tsl6)̐i&V37gb sYk{Ll-ZhѢE-Z)b~BSV1g^#xi^0άQ@L1 wR[:11`ౖ麞fMΉpYGKGb l5;Ic&jFw#}}6+޸wJpN/I\jcG_:TQj!g~ L7|?wl7=_/~qtrFR( pL2uTd3­[ o/xGg~>8>ov{?K>RYV=2jլ V ݜfhUӅ5N<}߱;\KBQ`1l\/Ym6DjҊZ?> C݁4#!ƫ3*b8B8L!dzO"}hh6cTB7obI᠆xO;T2 8qЯwiMt]5 zqvz֭ۜ0 CKUÈRp>K V{=f$ٕl-hmZRO:j2+杺iˮU÷}{wU*u3pھ'djPO?ajRJ$q ~o'p~;sI*+wR.|c/ qYջwج8V@ZF! Z.ZB,ڎUנ:FJ31-]hѢE-ZhѢO*i8}֋7k:"[vC# yIx\STjHa5!)vIʽ[=3BĮR8'p?kF BwC|愖 T(@ nxC?⫱""91x-_Wx{A=_}W+)(yDT)!Ȏm2=U:+tK?zj'vx1{o$*~|UJ?WApk[,8u*Z{ĥՄmp:&pIQgg99ax8 _- V,Z:zbzʉa؃)ǟTq_L1#fZݔC*9B(ºedz500\Ɓ4 8b@$TcT..%ea$'R)0}Xoܺyљ)9={B8aj nO*J  jZ#m@5,Z> Ü^5HݼfQ5Dj/C/w8Ak(\MbVkbTہ>#.rmv=f+bs;7nE.S& n`#'ĸ?3 E GǬV+#[5BD׆T)EH\A-5e4bQ\Rm9LE-ZhѢE-Yk1?A v#mL3cy_o֌K {.7Hi$]ɇ מ3֪ Q|׶) 9%>cR_ srVUm6׿].e ?xĪbwIkMC`{%|_hx6{|ǧ{3}4 /C8T};lǓ/HeJ%@` X8N|x/}@̙W7aՓ+CPJ `ZM*i[n Q N D`5̜ 0QakѻwW~Gɥ&hRbd>āxbK5/1P2ËCӡ=A6'X\Ki݁`R"BpM1 |HH>tޓ#˵xp#V 0T*V k{qAɩBvJf֤+'vz;cLխFVw:7j zъ!NpjUߚX7'H,ԙn[[igi21f&H]!;NHcf 9 nijaIq8 ѱRcq3VZG{R".^K3sQkf8$ i&\^-ZhѢE-j1?'3۵w1Q8- ܪl?\ :ft` I 8m@EY7'wgt]n6b u 'v/'OvKn!灋D_B9>=UpTBZ#w-~?OǏS_"2 v@`!Il_NF'…{;&oПn$cX;VB(t&oB+oŪ"MZ&VHødrN| 5C;C4S"y< ooqHૉUTqU׌(+Fq-%/5]D Ք#1nlRS<!/3 9WSRIFwf`L靪*a?\Sʌzgx$3KNr[VBHM:W5L~"غB1mio2m v^N}5Z80FB30GKn)HX @Ughp+pѢE-ZhѢEV-&'؈w/w~ɔ#.f ozIH'ͦVDW4!?ɏ$WcȍLbX]U]գ^faM]tt :hRTW.-%"<|5Oܓx"LFFx;.uz# Ƃ-,4eU:Uܾs;g4MK pzr (eez uķ^<{Ĩ,|pR%AMcnL떧x5c1="(e }_H_P9UͣG/m&wm|Ź_C2O- ~[^g_qt;)Wq뭷On>>ShOT59"k5RxfcJ C)(G{[={Tdy@"b4ǁ%zI7Li"#GEڑ6",iQzRZmid#Q͹ܥGHsu&4C)JG4fBwt#*AcޣQ 1E 1rv` K:/=|ʀsv!å΅3cc{&bˮt \VTKNrn^:%ƭPX#H)c`6 AAL]ijjZFqAӹMckqbt߬61s%aJ k(2B`#-!Dj"-u3z3 4hРA 4hS*M`\(N)JrhMj,A- x0/lOa ` zE0 8vBv(iF$ 7x7|7Nf+?xٵk64gg:yG#gO^׌F?(K^:]\bh(s<f́7i<٬yPIkずG|c֛?U;DF)шM]_BY`太ic+g sz;0[U 2a! y[tj6D qC-Vo%FL1$&lPiƇ\z3" A䁊,p.9uٍQhۖHDCCT!Xb7 IDATƹ"cMrT٪,\!wS'^SǴ=-"!bb ӻL~,r,Tc JSaO N-&ym MrN4 1`DcER]3bҐٍhWɂ%DGu%_0-jv=vtK!Νڹ;^\U4(h3my݁KuE7 6udZ1ͯGM1J^I y/;dEhI0Jrbʸ<IJu+&Z¦AA8$& i4hۏ^Ӄ 4hРA Fe~Eٌ&è2LA=O Qpn|/t!F@n.uyr X F"_:^{ˆrI/.x/n̸qLcrb?*r!w߼r`6>c W7w/ЬMy}G= Tb.|l94hРA 4hР%u옢c^( _#&pVl|K?۬?90ͦFy)@#m0Ϋ{m߸vŚf$ʥHܧ?@@9ʲ[0,Yb2{;c f@)s%"6(#W8$D @q`2/#}5!bcJ-eIQ c{ub[YGkUBH]y"?:H@PO=-4]sit%P/ B@2Tu8g3!b;6^;Glk-'E}LNf?33_1f]wNR YgqIfK2i̿ ,i ƙhώ1ؽ<]?;EK@q<9jvv]A 4hРA}=5@/rUWW8W~/Cn 9oh[!1 1bbTEEzc\7lI/ Q#:&SB,mԋ+ĤeZ9_?%FQޔI9h:7h F.x?gP@wLݴL{ηxo9?a KX%"Sl5-W/BB5m869+>8"FICOLœXV/-V41]y*pZ]ɡ$j)ΖrD+,K|nN#zZD-P >l0vBeovj!wt{ٱedYV6٢,I{)u|~ [I1폪#cedi0ѨR֜)\9 &:,Fn\qq lNK HylA`v9DC|ն;[#&nlpuNd)k.nM$*t4]1Dvx\k.U8=n+&Nu&9+=`Qx̮S3QeU𔮯Ʊ+BiYlB6 AXAe$9:;aח%pРA 4hРA__ K*!t7p?GcX+ 1/ \;&GOC9>sCg-nߦ,*?zbT%Exzkԭ̖s6EUX5 91x8=?f4ܼvkSlPU1o"̺fBdcV>)cl@產)UOPqsFYQFO|+H#5{RsQ(ɏ-adQzR=H*Q Hs02>Ap' <&S⪻o1sszںFI( k\f$[5thƖѤdvyIS{aLS5Elæ5儫#Đ[ŠX"ݒؔsPXA!z),x*y9pS?_vV. PvyfwiJj\ǒR@3MZUͣA`Rc ؝hua<pOLzL4$Ǣs߲( ʲ1fgCPNN5PnTI$dt t@ַA5n/n_Gegy}РA 4hРA T~uJXmyrbn((^Cz)5\0IL-"&HHJ [Wb7kbF(@1T}zzcO_ߧVEI?ld6_M&op }O/1%\q n^dJt x?'5= Pu*w䨥^,0zԓF,|@TK}ʽW)][Ϸ>)>՘:#ea6 lg4ۯ,6J,Q bklƲxߒV4C`b1kܢsbblE 57ze8?C3i6=H?C>&xc+D{.ZH4)B#IIS(8H.W?s"I= xeU:Eai}aThFBZ# Cl1"J";?V,  !&8؛v|͈K@y ylT 1ʢٰVy-MQ¶+T@`l9Nc36_?ڏa~;>#\0/}.ƛZM&]]ZD 8I#@DHFC ;- >C@LnD!%{=>feF0  4hРA _@hzx4rO׳g75X j%6!@L!hFO,nMNB? n/`}xԁXTSdP+l7_{>N"' o{_=zLdV 16D]qS< c>93 h<S` VG {'uk?W{('T[/gHXŊ[9GnߺPOꆂH)w^u=s< O/k[.k!JyVE01Mi6s@0Pӛay{$ T`oD0bISa|C\?Ö{s5XlΟc|p֌UcY1%A#AcF'AB 2e4} + ^By?sj/}nG\|7HTV8&pweO>y·L9]c,!7 +w+A9DihuZ;Aā=e:Zw$joִ͌?A3D̘r|cI.ַ V 0um`7-<-(2&33/Ĵ~I]~l5Cdm,cB}_7Za|5 vE՗6%p"/2@4?[g0{=o{}M 1`2s||ΓOG\qDxvyK6Ky5nXJ/KC)o3ZI@;+BHqr*̏K`]8m+iԨ6"mi 9F`bK݄Oaff r 4hРA 4~IbFƇ[M\W"P7k@HI{w&ՆR EQ #OUm#}}zl qstoI !jCD u :RrKUYS6et-HbRG_w;:bli)G\9V!`ze1kq# X2ٸO?G]m[ ?a{\\YG>OQ^)&!*^͘=..RW3M ea vEio}}媂( -&$zZܕ`rmدf$1Ǩ@+B\c9!f;cL)=QƂo~ 1{?~෹5qSG(ΦS^v¡@9S_P_`V+uL{2Z1a vU4 hLbAޯ[G5/w4x1;eQܮ.G{HA BHEm 4!І1n&+QJ!tAA 4hРA}4@/J0Y jhs EG롎-!D* ej#j:FU0m6mƖ27lVUuuo̍  'jBP=˫ Ws,b6co2a?e:ܼvI5\VlѰ^<(c\I?2mr^Ybpioٴe'|l^y(%qaS/YW|s>ǔRp %#,X5!_,v7~O ,4Ce|nO|8*ia49ex>xGl7$b6% $(#XQPzP%\O) 񘢚p||-q1RlGswuQp-MzUX>UcFLS]t3Jcw6z c h1>ZO?OR?o_;BķGMѸ]MϷH_Z̗; Ĩ2*"s.\x:_{L&6e  ԣ'W\;c\\RXH ">KUg>`^0>lU6001_bR/Z$Dd}ΦbAdC4D%0<ЬwO5n~sQQ9.iDw߼dɇsq4J1bd#ξCxthAij%SF!y#4. Br+c ӛgܾwW^}CnrOǟb5 u𡥬[Jv2NY/׈ε;.ߴ:4iRjp7\l&.b4]&yb4w'6b0N!Y!; 9B*z/b;ĶEDRw^Ncv;C#v{vVDl6y;|S{B_C"Bh5ͦa|ݲh<Նӳ3ƣ=?z3LY1695$:LiWrِbҪ%-+ }aa[Ť ĘBK}XA#=P{]y)mf_hŝFW 1윧x 4hРA 4h?%x[7XoLcĠisW`DCQ GW+ķ;ݻf}W9񈇳?Y ( 0F[bs]-T wyYG@ԠްX!ܺ~ʕ9t zOUX}D <~vgV`:*Y.gjKX?)7 *ENO8,8=(?3\ϸXlzYAu%#ιw1i~)%W#jŃO?T'x{G#] IDAT`#X }g̚=~RNPii39bcPZC#Q`zFrJ`1U|]"D^t;M= ͏?[/.T4}CY)Q)ʴ&,B\S9_>5\]m4꣝&v;w#Ѻ  1PА1\4;-CrBܺҊm##"zCZPl6QLe"*'>f>Qo6XoZI.pq7]cϟd{ u./hYq-Ihtz%=ױ|^\ٗ}!Xpr'q!yID?vVA 4hРA j_RuPGْʊj$FEX \-^PU%{1G\~¨֗8*Wzi ӊ!ZTid$0WtuT,jg8(OF8g}lWNN8\ݧB`a4ڧnj 7+^=w|5%bZpw߸B 9?9bɔbj}{K$xY,^\}Q"@_׃SNn׸8Ϗ^<#p{߱ y+u0DmѦ=f)X׌h7#Q]J0owxoӨ`M7xP88>,'ﰸࣟj$jQN*jZ(}$3D%ߴz0TNNcN.3xݎ,8 8kѝ?#/H]\51~ +hM*x|n#1sYoPXư5LF̏VrewQclDZ8NgO!+F_Ffz̝o)d$uv#,V[,Djh@$g 6ajp][݂#V Pӽ oޤB[Տj\qxxOIB9Li8Zߦc 1V; _wg59fk?}P.ռV$xE[ཇ6݀v>U*һbv}uf@cv nuiP1Qr`ZrrtU- ^jjFLH^چжD Hh  P*ϸv.E^܇2{i0O./5_۹/1.kR$Gg|^d)v``Rj~&Pӝ{rSd(A 4hРA ur$Ҳ^70)JE$R5g79=98˳3M\Dֱ*T)D (*8.-7-n7aΗ fn!UU#Dꍧ`#oY|ŊJiAP`^Qq7d8 uV`b:4/Jܟi*=U|[?pıQ+{ٚ_V\SRm ^=nQ?'z{˼V*A1N0yYI]dAi;~=Ns11G FTƮ`]c?{?6'ϱ mі;$2)iVk$n*ņv}F*(%7 bmܑ';ПG3|zbc"kxtqmKpQL;1iDIzDzbӲs߽ !~";;7F! UR|РA 4hРA4@/))u̖GږQeyk׎)=78_PjKWPE%DO#9ay#n%-( KY96QDu 6.Cac<詢'kw(ǖ)63v&KTspBu~`hM9cl1b4W:6˖8ciY03 F"|m&! L4֋/Nf4/gGet0D<F7q?og #jxC.9/.jdz-ث*o1:Ĥ2QS8b}ԕ1x& x~(R4E(66D˧{gHW͓< a3`BJ g1I>}Is=hcӟD` MݟB?Y!oJuhzubJ4zb)!lY6|Pbj Ub7" i8U0"d8a^sb]7iz/&">:ePcNL>灕c!c1ACZQwuA]N$O0A 4hРA /~IUQ:`W\\4\>E ^qxpӛXkYW=&$PBv戞ZCІcgxc4捣N܇zPheТDb٠4c si7vq-Ŝ#a,1&ZlQmAS/Z&D1l&*{W\] ??d7ezupS/Ab:ƕ\sW޼r/^cy5g6Q3\ܚX1+z\-pzM!QuI޷ &9w=z ui F,MPFHׅ|5NF FИ2tg<#u7)V :WY]mf8d;d햹wStzy4Cٙ5cP!*uAl?aM͙K_ >Pp1<~$ g|onyBFQ9ɿlQIL廕rp{9G] Bǐ.KQ>^Dk߁h4yA4hРA 4hР%Sqc@qm89tNA(W%s0g\`49X"`0*pTQv}0W6S7Ʌ hKJkFղE uw䈦2]w`Ws3l{DqAXX[cai#CX+KU1tXm8)k’EҨ%>2>d~MiLL.E`s1u˽ \<~?&|S/; vFJΛo&(4B9Ƭi3G 2&}6 n8hРA 4hР%ux|l@I1<aƇC3cIG@St$8> X4(+Br9Iܫ xz66Ϩ}MJm1Bh؉)FQ$FD *G4([JJb kbbM;„`&ꚢPpX6`5 E0Z'FXDS܏ ?y_W~+~v[T,|=9`%qr7{D$tv?gFDf")eFwν?؆a ?WvHg_̌"2ɱ95sاk*-K\b5" 1Pso_DgOw!PB&AXjEYPJbr'5uiqp6 Øӧ_;׵l]Ms!"6u;\y{M.aA%կ\. s~]?a}"X!Uٵ{g/r3^Hm02:8`-4\b֩wsͷ#)MobD:+!ɗc"Bq{"8MZL*FMŀtN@6na^lKBxs_v9|*-4v Zz`^zիW^!7[W˳ \!oP\P؊5k5Oi e9r( c&6n?B6,hrZŠ]k)nj(9UU. es/4a= MCBP҇jUPmB}/94^æBה/f ^4(T& w ٳWG ּyzƫ'5˵rtN})bSqEWK ;hۺlvZ!y\eP2yJ]2g"O<$Xi!%ѐ@1`ňT a@{spX79y_Ƶ;3. *93brכ.:ѯfzeco;@+KvX۾ ۿ933m  a{] %S:B*/ 8rQ!אBUX$ Um>x|B`Dv =(zիW^z]Qɐc$Fs-SCW4D3 /_ gu}`8\.( uJ]N]&h;ZP!DTERt˫@vP Xp X6{F}9vy C%14x} >&'`Ħۦv @ X o9D7c n .X檄fCh2.`oJi>:g/W/9' tf$,7_ٛ_X˸.7 5G|w1%W$(l(D8 +(nL]81 *?CS?|a9~C\,=#j:r81,.眽zAu@xF&GG{x)P1XW8:W`2&cLbzMmu@>w!byy6$"mcqK&]ι e e]:;.$\z-Qxɝ8w6rFUuEt {Gdx|qx"NUw\uBmT8!nC'B0!Ę~5i&Ҩɕva'}[=[h-T 1S9'},W^zիW^U+2ٛ`!\^^RH^Νc|]2,]r!QkPUUkA^Z۔bVɋm/XXmvItc#548Buˊ~/y MT1eTEm/X Xr)o_8.sXk#aHĀȴ,f EqH4 N V9<8dT cjc zSB.<_S>9Zs;.|71 {2GMI XEjqc?{|/~?@ ,{Gqp6}kG\6n@\5]ܕ;&]`hc.E}D.6k ƧL3y]wmR`0l;]8H $fz491~o7W^zիW^!7QqSb:5vxȋ7K޽dbi%h$ouհ\GFF!zbl>SR~:);&w]Sӎ/ tV( Kb*7b7/)tpyd@""sV̌Mr~WLg#i4$GldDe& GLcT 4B`U (!Gi)ܟyGՊ5iiuwMEXgf AQ2lP 3.g ep7˜Zb1`f|'P0QM#Ug?cT`)4Inpb?rqv.ńM'޻ߺK*͇}fo=}m69T4yɮEIC0ҁ1=ivۃ={y$JImGIZE09LI@1z4XŦkYWo޲/B LLx5_g0ClXTk -ۍ0N?k]wZWc7b%fpu{b v_z=M)1ncW"ˑH}V1^zիW^zP:ـxLqJVa(`D>[ 2x2:hI9( n6p)ՊOܻ}J@1f1AWfl. {̇{b N@?0z=ɝwr늼* ^={ɛoP򿥘uPNǜܿwbErQ LONx|AV[y uU^zBjnu1Kܮ wv!/v0h IDATGWwoCDȎh# DAB1q='{rVmxAkVg4&͈"8;ĨW8˂r4<8bjU>qﺺŨWq2&`n}~xV! s +_w%m,dU۫W^zիW^EJxo/}D<_R#Z`-jGk޽wOf,W Oh|, #%5އm+ה׋EUb]{0K.W<<"Xe0(hU(<YӼIEi/;JIA)+i!Ɛ|dGNSn WNdH:=t; V@r0b1 pc0bZX@;k5`\x:m*J.f~=Cc ew_?qΩs"#ck#Daڬx|qbyO{4%t9rx!/~[6gg&" Y77Έ>gPQjƍ:Gce:Orq%7έ;<}'O!;]݂֥vd bbѴmL:ע]^J; Hl!.^Hޅ:uO: B[82y@iQX.Ws4)~o$^3;޽qfTdP ү4[g[#Xkv'֛Vkw+T|]K_gu=*iy{_u.oDaիW^zիW?J:j1G `@^ߞb4?1:q "b;c$k2 1BrzK$2bV͈CKDBӲ`7fEcբQگ j3f `SNT(F%>6™T1̱۲q-G6ԗv(yQUi63 Fɦh"*jIm|b&O\X%xAYb:Jq4pmKT1]qt뮴vTd spJw^[l]TCمٹ;0j;4!C^~7iݷi9 :-i"nͰ_qk|19%u㊻@2fXm t^  nf&y:/+$o{_un!u0} mcȍ!c*hE-T Ǽ{իW^z뻨~Cii#Sqa h2FH @ 8T/naS:(&%q1,M]1-)!8zZ \ڹ4zcQ91C<7C>\[9S=gdJi$?:.(ަaSQ4ÐS5Ux9+ɋ 1܈-!~tniGNeJF%@ p6D*Q0  k#"aư~c+$Dzl)14 +hzrD'\hJJPZ>=CƧi|s7 t歪 g =?I4IGr7^F;Zhg;ռJ]j4F¿d=w$l ѫA3~6]t$ 8U`s3^}E Y 5TF1dQc޾hʞ^4sXO*Z,;`U;փe1D+6"Jdl"4op&{Bh +M06IkW^zիW^!7Y_ qs?.x "XW;@c4XR@[Ôz!)14baCNЂ]I+-s=aE(7jj( Q!zElX!ZKN W2X*DDTPxӢ[|B1 Y| ѧ M`-Iz3 b 7e1:{#6TJjL<,5{|߳aU#UL鄇~0Ԃ@ %GWHĨCەz#ێ6K- vDBPL|;0hҭm3_q'w_u"wu{Dly.yoY"4 6MH \*uTgܺ}e|hc0$C24- cNn 5%"ݻ_;Ap؎pi HgҘ\իW^z;~C}Tyv9sB#.* mn[ P#\V[&?|ӓ!܋ k GadXpWlincY-(QX)·xPN SY0X3ċ҆ƃ h4i"GJS4" fE@t%2pTTb6$$p*wB`G&DŽ0-}`x|uY "A0f Ox݂ߍ:g݃44r|(B.E2˄ !ºcbz7o#P9 e(?M8 11a]Uw>%F BRRc0gUbM^/om{;;ubThD bDixuj;(i]ub,E됒6W:5T㵸k!%(T9 #$4D_uHΛ^ݻ j !?}Ҟ;7՝ۍ] mtk1Ưb݉$LL$py=ޫW^zիW^SE9n|~m]2mL # V DEdٔ_3{ܽ=%X88g9_prtmd\pnom.?{068Qxr0t|X]$Hy:{|6.na'є"KI瘋əu) ma.Ipԁr)?#U^0-(˗Ua\O!ū0r7bDL'!DuR\b)Vqo`4ʻ,gT;훜|.c!D`1k[F\`|B4}8z9`U{.gK?^HYq4ѺLex֮Fͱ.);PPȣyDum\l]Ձ현16ukmhˎ5ɱZbDqx,ְ'};Drz2B `d~'}PXFx>O~YKcl:^!Nun;"nl\Ī)3D ֩ CTQ;mlYJ mA1@7ǘW!OcLzիW^zP c[ީ#jųAIvF ƕ G)jP+DZP~3>i`K?:1&͚20`F>oWkBD 8u%0 %Rݻ`j/(|ȉD&Â&e\29aN%&  &o8I=$<4@*Tv+#s9#GgYTL{`$w6"ܺ"!%G6Mú+ֱ@mNr58ⶽɇ}р!52~VCeY%A$`Cy΃rt{|1qCXoRuYWQԞY0Eb\DMwBH]i\ǂSFfT_29_ob]͚'G0 WV @}7 Ң%0r6s;1vDw۸J`/ZĚ\+Mpo'fЁH&DPOF*1 CjrCW u49quI+D* R7(3r9y-7~;~U~X8 w} /}c-Xk_k{篋F.^FDڞŶ[v)sn s9?)fCOO} {իW^z뻨~C0T͊gņ?pRND01b*M#@nݸ˧/),/g\,+Uy Ey`04t@cRRBHNF6K aLJC:}- K5<>:ey{[4> A+p nS9:d:Qs5ohp)4b񁦪|ͺYu",C?/XwaW28P>x}Ɛ2x2dzAc1 54+m\C򏄽ưqقg32dcyv~[{xpiC#o/_sZxoYO9ެ#Q>~/11i[:$Hf~98p}F%jȷ-~1NOgNon՘69 Uk1NJ[ y8#:MdlL>(o*|F(D(T%F ǃck6(9|ʇ兇A Ы{ڂAF3K_yڐ\OZsJf㮣7+t bFwYb{ o׀wW~.+P5D>z'`^zիW^!7:b_7w&Śg@1'GD۫ `e(`e~BBYGTϨlwr#~caCWٻ7Ãk9XބPUpK0p܈):q(VLg*%J7k!1^bbjk,c~Mb֭gR¯b2=Sqƭ3X#6Hlf(5,,BIq%"PdžWV1Ry:zM`J]XXpB,`*Ls_|č0>ͽwG1XCA~l.%Ze,9r%H BH5T",y{w?bG2Db$0jj[nx?2JC 7r# h}G> Q,{C&'{ vT0=o>Zy$weԐ 5$dS]w0E8 &FcCu! Fi[E vVkk݊:SZ (5FRWgHsFSeWZh8z2ÒqK@b b˰pL>9~} ߰=#m! =n W7'md% \9Ҷ^ ڪ%c̃/C3v(Q ),B0 ;aeX3+&rwo.sSRO Xvx}X:Eƀ^%iǗ^ IDATUj>!_4rN h ,=GgKlT/X:hBy93pxRA4YCS$wo0%/rzț/~w~rtzQyvIkPGQ@Q-Aa `Ry2P+0 #/ ,kf?bHRT Xljn JmA DԴ,y(3f]++:6 ̚Mn FzھMI7151c, AmΈEze`Ƽ .1p(Xĝ(iD#-tb-,`͏tvɘ݉)DA)FzuшAQY+UHnv1D[o^d~1c4_(./mɟjׯ(3"ٵ׭f'JD8;/ÝNWfk5W/4:v\)]xvj̮|NqkqӽW^zիW^jCo*Sl8,>^!&#Ӣ8MƩ3 alPkA¯?{Ayp`5oxA5014Dcx q xdqv̭\RXP PȽgB2_ƎF"!eXݹKPbH;)A@ w.5_)+xz6KBN%Oq\1-?}V8=*O5C܍;%HKĚ zنj?1~f]X%PEϿJ7{cu0\4 )ynx#\ް/&(L6X7\>}֦͗%i(t#Ƨ,_rcq ,Ca20Ma9+j1Gއ?@'ⰱqoq9 щRIOiߵ?>nw>(`k[~qkYMpM7HZnWq۾QX06]>&H-}BHr8aR5=524>2qT -y6_sx>ϲ,X#I!ű·ގ f'c q1mt>wU%qܹmdԴH ӱ7]l̷ իW^zիWz %9QD֤h~~#}Bv&;fcIr.;Vh?|yboqrux$cW9Y, !lVi<|(qlL|pܝP,g縰 @D|ð.da\|&ƨb0D A !j0|yZ,сC)1R/)7 >{?3TO~6:'06 GQq4"ME Ci,qƅ@9rX1)0DJ[X&WrFlEgfb|Yy+K~j>pp6z_q=bLǁIՌr`^YP-Q>o{4؋+ D1h#½d@ PPG0.:eQ<'GK s ;b-϶9l` 4tbC$-gQY-0BaYMHp1jd^<8g ?W &Eɀ_w,,_w؝_b4~ 3"n݁+b;¶[ XԘN_:]|"t{]T >ܫW^zիWzMfMd}ɥ^ R(Ҕ,E1moGL-Y"EJ${޵fY9U xF2E}̪bӿ%G}  -ӊpʯ>!3ش~B"D#ԳZ%@m0|z&OG/xr:E|ױX1`m8o0ݖMg*~ۡ3G8+ 3i;mmMgE!]Xof492S@Qh/|~qJO1U)c_F*hISj"%|Ni9%s?!-`ɿlդ'H0nqx,X\r$O<Έ guM8+"{ZS}XyaiK& )KkXP)L̜.ư^.)5Ny8}(OD /zpb7*vtCK@>AaT^?]^ATzq$ MQ`ӫU%,FRO~]ZKc>ueHLϣ |!d0cD6݇SD $ cٕ@i y$Dx%]1fbQ\FXf>~DU"!_z#^O@=Ƽl^!uNʿƖܴ"v> `Z3Yй ۮ-],. l;YQNyr[q7vD6f3*ܿd8"ax>n)S~Oxw y"FK ayA;(W1&h^9^һ 44GJ5CޝGv}Nj`}$Ę`v]Z `k]$( 5h;OYNmG!g({ϲq4MGt]GAj*xM[VK>\+! ()Q1A:8G#'ezh~N٭Va4}]s05j^s!v~fh#S\{m!j?I%P}yJ4msԞݎ6T19 5 D'H 4.lɺ:8U[ҖS䜒]1>nLgpǦi(s=%Rx~S 1A0Dl(͎ ozXU?MU=(/Ր BQ 5ha(Q=]iOf݆fɓt o|ArGm-sg%lje eǯp~m9f-!^S3 {za#F"/n;Nb;> /C!._exp|5jԨQF5jO#:t=`R;`Lqo_l gM%E0EM=s \m[ kpl;ۯ~'w+›eN t4v Z+7akGr[v2~(dw|+YwI$l7Wh[R<$$FfQZC,<|a~o_-"?>yZ􄦝ẎmpZ6`CC)&v(ěTDhhޱm<QY)#.\m,p3( utzr6c!Km*gQjj _ƴj" ssM5FbgREWn!g¸3ͮQD3p i)@(0sL߯;LR)]JȎ|A\4gC (FvI˿y"-Z`AEOKM="X jh;(4֔4хCtT܊jSw!w7{=>3Q a1 awM!{g{>N>z jpUrI`sx#5jԨQF5jS#:Jר5V8(Ϟݗlv LO"i"y51-xwwVzEjhC}k3G/gDc3=4ttɂGOKT(I-xM{͑3XKf(m!H$p|fstQqrs?QJ@10zp;ru{ۋ}fyEMC;k؄)SC:6r:Zr[i'lιxIH}HЖT Di $$舟N)JĐDOeZ͜O(QC/] O'>crE|> >9{ Nviru fnvYHs \1Q21&*S5Yu:dhG2aC7M{x&8pWG5jԨQF5{H(0T`U0$v< /OXa')co{ѠTXz%zCDid) O 77c󴭲lՆ)-= sbEJ]cX5`LC]溋 > +h1)Hե!5mZ1t͆`xcxվd߲`- ScmդXdv%g>!acP fٕa}6G}ЙFscw5u!DhF߶PAL"Y1&ëv t(wxr6_m;kk֫%mc0hCM]ve< `g`Bz/cIyǽC|sĈŀFBY GǴDNgg!<~%sIODۏu> pԨQF5jԨQO0?`T$-OcLńg?^pEMc?!C.C9P0VhRd\𳟼S޼S$x6bDBl>M1!\_ꖂBgA5J=&(D%oYFG?E8_cOx}051YM k0fJvY˽,؄XFR“枇KSMnF4V;꺢N)2.o(%xvgqr0xfӂBo8: !D4FaL^?_Dp_c"鉫q(GtkߑcrI߱Q}qHLn= `"ߓb}ucWuar]vqpne]-(s hV`^=*Jz ' P=,]*&*<!$m^/ zGHU tB=e2yh[yq-?-s?~R4D)λK.<-0/k_ 2\S@^ٽj&A&9#/ g[`6%B4fhS@T ap2 ?)׾0&g]1o:D펢,9vOv . WmpPMA0>4Gl`SϐST:qڐwS_k׌?k+q{_=?dxpѸ\Ÿyľii:<\a8^!F5jԨQF~GA c(0Hsc (* E?)!'gGJγ恃5!mf?OӂTTSY͛ ?#rs|d>1߭vkJRT bdX,l*o+jR|yhV4 ?!-M.Fۦv/KP!AL=\R QRߠ؈ "`42)"[,Î*D(2Jlx8k8Q IDAT>tLEFYD QQ-~B׼g6%0<ixߥXh:w<.wm;օ4b ZLѲDEiWwHV,,KQv. oy''p}n6BC61pja>+9Νׯ{}~ɥ( &}p[=0Oz0F5jԨQFjQ}Xi U 9|-]PmnCYO [B9n$wr;P@QeTk nl=vO_?y@ty{s΋@Uͩ X/")ӞZv76FT9m)blsŷYwj9^ "BGQ-9(X]`` mUpÇkq+6KN()(^8|q)h) ŋmxƊ54qhuB%F FëU4"@ RWlpl? i;+1;no899k=^=Eifou QށhvYea9:3ɠ}}=*ӟ}u#0lO 'fZtFa m뉛%})(Ym:>=Nnq0α7 Fm@?RaʷoU!PA7vwf0y oO%H`F5jԨQFF4RC1"Q"j"t>ZZX8S_VgytoQ)A4(QfE|/Lj{֜E5-擖6n釘{0I]\- Un7-h[\%v;T f㼻b{STǖ|6!Ǝ6DvAh! q~\L eZwޙ"䪩icjJ $Uu#f2aWY0uCL.Hq9TO:NN cZLI-̍mw PfLNK/-ЯbZ/=gPHOcC$4 ko д!h܇EE˭w.ġ;pp}bLK駃Н3XrEGGn~;Gm BKRw @SOqUM< 5@G `4;%C؃H4ФX0/EnK9-SG+ɇP"J[go!=>^W߃z`<£F5jԨQF=&,PGB/N}rͨJ -QEO# jm)B)ز˩D%bd`H W1_N<6r BbEՔ݋Ix6W9w BҾ1O7tUŋ3-lSn@L|]Mv&@vvil9o(Qꪠ0J"ƥ>{(XovqbYQ҄/w윢T| Xe#S3J[0M]ڀ֖ 羬kNN#l-EQR6*n)fLL'gkA! 1RaK/I8H/q$XD"x3yA?!IG1Kg?!j{kn$HCujpOdߥxi%V9{WJz00LZvd s;Q5 S[!%(( ƀt~F,v˻~ @d`ڟ#z}|V;pF|lȰ3 gxqgx$pԨQF5jԨQ!wTpU{b#f"kQQAEW_~xFp_^M+.sŜZSUnEx}8<弪cKP AS99E-aBDCxI䣢–t)BP m'%)5 w1|k[ge~F N̦|tZ/4^|Ay ow펨%k9 !ndnJ[,ps/mpP爵1EbBsK?z݊_bYR"rMkIiYsKf9oPnx61z͇3fC~%i+HcU{_^G"Ӎ40b0{-߿c!"0qUzbF"޷ɹ&qXoG[R\AX *8lFL$2 I%QFւ"-k摡S:F1L˒~.(ج?97l`DT1Dc5~Χ{p/CƃɽI}ixv藈?z(apP,!gD!R}E<O :QD5jԨQF5jԨF]#9b5sn)+˒ipޥӘ:̊¤NA# '~7|q}C,p2:;\r1)3( "J5o;6 pc'xVjUNs_h5ÔS"6- VA Ѫ"Et1RXXXpFYov<1B)z \CUxݧ|%TPЪrvL Jl{?x'AC(T-"󍧰` @ _ dJOb֑Q  LS02Lηֽ[ŸY ??jZ$@x+|U'@ԡ1{ (G-M11gJP^EA+ȳI]!|3ɔOć|=%] }fwbwSJ" GyÐk{S{^7II6; u8a9>?;?${G5jԨQF5{~G>tض-"hۖu]+eHIW Cb,w1P3QAn+Iq?TSpX':~韾_8)njlQb ńkG%zFyd-EيrCXThC E\d"TcXopta ߮)bQ;^N7'W<|+L1-x>ze.i"]hb*F>pryBY#6byͶ,}D1䱀M,Ɩc@EbMp*c4 EY⼧6 O(PQO|e 9^jG l66e c.n@ɝAM?tһ_ա o.p-;D$V=8x*i(Y8t}dAG:>&|8 ki$_IVT@M0[OqKI QM=+p~raɛK֫syks^\CAc]Wi%q[ 7O_Ocؓ5r]{giv95}8jԨQF5jԨQC;j14 Xk$| .&a$0)ތ,͗lۖ`&`N<&DoWlw 1Xwy||,|rz|I%Har UK;UҰ-.m aBA,öaU,V=G41)mYH"X"dhg|dbt^Ji]"6Mܮ=[q1PVzjyܗ>9ǦmFSUŴ[ ZX-LK:4SGFEI`{VTFL*:o(fwB JQXv^8k=')nnw-*89=䄢*Eix÷ogCwj}1wNؾ_Ęx4C<يjUf7eZͮŠ) G)iJz#f=~),8CQ,NOh:nŇ [VL3~gQ(Ac͗_^ݳn"޾Nj#Ur% Vtr( a>cLH} < l(}/>HD~S었bQF5jԨQFj3/H$CXk)=λoJ#iC'/,☿MY$G}> BTj&F1*BH1[FW7 3S674.bico7sHYsf ._{jC˝}HO#]ੁ MiP9kwvtP_ D;&fαn}iY zNf``}\0{v|#b,A,ow b'N0F5ED}M˦uLKa1ll\29Ό) )Ma&5KXpRcASlv[:]$Ċ6g~~B_/^KΟ?9gñ ZQփR^/bP0/{vͮ~f`EtWnCo61F$xnx8yX"ﷇS bMzL`a dJ߯Q?˨QF5jԨQFi4|Ze{(q (#lɄ2-J~]o.\ v:'ZRwCY*Q,^"#lYbK뷔FMT͖Ň?|:TsRhry, ,EE5m==;3-DFWݎ]Ƕ Tz^__PkmԳ_1mn/Z5W'g~[Ӓv-Ư|_>fՔUxm/q՜`,O ]z(ʊi /JVuCc:Cp;M+SYgm+G (Jќhl'ԵE%P(;l1f5ɔ'O}{Etk-j )u=u({1桉!h * /Eo6G{Gebf{@ =upavMi1Ǽ)!R}m}42ڿa  LW=hDcwE.p{K]UxK:ެL žOhkm7tmC4 sX1!..Xnv"kЈjZuﰆ< p>~pͬGbp.<هa<~9 0Ct5jԨQF5jԨFmrWA3=b+B;B94+1FPʆ'g|y} #( %(H*R(=mA9HѢ7K<E 9+b~HQ;czr~NYVSŸ}+WS<1Db!P؞*jX/xuWEc;z.iU2B &$jR޳вY2͎q[Sf B ްa૒S{Lv*`eI}vJ9BHU]$XPv-j j.v-n0N"j ?ч??ت ]~A` dC@ 2~$B2Trz ?pfw`DOx"sטt2y4 "~),ESo΋-ޅ^1RAK2AZ<Fe2-l㉡xQqK>f9b4̫mu wx_Dt_} ~>b'FGj K@ZW{H堧/>~=<'su}=;~6t=K}o% X8jԨQF5jԨQG;qA;0 1Xk Aq{U%w`6QӣW|zuGht129T,N-(XޯXm(fMu_uL*M^10Nc W_}/(ʂn2a;Y~ Utb>M ޳{!PȔh?}r1N+O_4iKmrD2 ߀\_!L4!+Pc@pwvFBivy3-:bp#t ؒuUeZrw{Kls464|m[XUmKvm&$ cFo<%p=:M Su~4"I_931@QF5jԨQF/;!ߓ0ཧ( ʲ{~?Bj8/ ݟ=%-Rp5Ua]$%,c˶u5G#D Q;fwKt8^,]-6%uZNf!떇~yEY!OW *$͑^KpyO( C݆z c \_]bIQcSCЋy<_r4>߄_0>bmvCY%M-5q еK77[iE|v]T `Kry]Z6!WHt}ӱ[7 IDATк&EqRD1 Þq j#r'>8:G5jԨQF=D([+;hz, !l&gs@b7BLu/?\p뿿# HٕQ LPLknnhE9%`ewn'sJY#٬75Xɔfùs)n>awu\7lLScG ;VWϸ;}Ն"xv%E% Gg |"W5PY{K-we6 @Eɔ__H(A fnfd֭#PUu+3+[_%6 2X]mMp#O Q!ƄgjKv}G&C qw$枔U͆6][v{Uϩu[#UYnw=Ԙw`1ft)uSd QĘ(I Rkxvr]""WuMIwr<S8!c\W8B;"n۾}}8%n LC@it٨UNdG2}3rrM-n^5ZBrDrTr%ǘhHIi2)BġǤX$>%Ks'nTF겥C~kR!TkM5'g`:|S3չs0}:FA.d/ˀəG>AUABerH. Eo9jA֊%%!ͮ㓏.X]6lk4Y W{rXsy}E^ҽ%8~VWAs| Ia*F/3؅hj&\v xxso;cϛ_sE2(Q5. 1$M )`4zX#^9{BJ,:u`̿~C]=yء$B zA]W6[Zpj sx֌n,TCㇾD{Dq⃏>g-Z Ҥ9>od\g񖻾r <FP1$ dZisK'qǾ@ɋN]9r=H *ݰo޾j}I.".Ww;'e0 ,(UI>JwYXW ]Nܙ%rͯv7E$-H51)q9r(G QřZ mX .jɢ,+\6'D!onEk9\Ãq92GHlj\JMIqt(eO8vGrJ G]]*9Gy߰U T5W/gIWx7 '/Yw؞w})<ͥ03tYJ|XLVI TŦqqvNœt|]vRu&5w݆I >DrBq# H u4Jr6ԋ%v_&b]dc/8Ğ?8s~ ݾqgY TTX,ZjxningŒeD;@B FQcPY7]aÎj8rˆMFkrsךpon{Z%j1TyҐGɹ !_"α*8Tƪ@e8[/PW!c6MRZƔXw_ COÉ@1ZXP+8~kګKVʢ :$$2CNDW??1u,bߋ1j9OqJ"/}\LM*Վ[qRQ5־~ݑB-t$̢p&'=!RTM[fXѶ5:=q V\BUqG*1( 鏰YLXt‹LJV҇ gYV0j0Pe( #p:UJZIpƀd !bwcDG 'TMp{Q=FwR :猲h,/oIx|.o c&d1y\,@w wJy\G'Wկ>}݀l:idTsF)89@R9v0fZl&{.5ܾ~OΥ+2kTY-CL`*L]%"[Ti+|bTx~}f>A1&1<ܾ%1xaՏ^l5A1ѧF>p?ygGg7HՐm@mYls{RjHZZ^ovbYROֶ5"l6[]}1YX-Wkp+l{]G#N,@*D̍?pzlݚb"dOgu!*ZGʁ"VkKJ 189RbťqNB̐<^h!qKmָX ۶TƌS\o >xRe9x"y2劺],B?l6a뷷?ivNSy.WD_~u˿2EL9-Nρ>|o?mt(!ѧO Ó@-@]ꪥiJqF=llX~0@LUKŚP5Joji`H8B׋?| Q"=gn< )C?`]x%l&p٠"HRb !{2q[,#!'s4MxĪr&RYG[XcTQ  WoGK+ND;ßijkMfr,SSwtߑ2bkGH> N;c}'nJi\F*8uE.;FdKs"1O@YS?CG=u]*}ၰspɟ:T?bp>-D9eQ5Wܼ9겦rwrp:b1e51Ӵ{<ieO"}~L=)@,# ~t-c|q(q|֬Yf͚5k֬Yo!9{s4""'_%Bt'*Yu:’D ;>{KJWHeʇ|ZfQVhchTGyaHd/W[.RifpZlvavP--C뚴\P]?#/Vs%iPn%TMx45bD|TMJsݣqe4?6@>\5 #K&!@jʠj{r\^$Z5Y Da3P2m 1%bL!\I9'TbP%ƌ ~ %yb K~GJrO`4*ӵ9+pcrٯF&_&[%[m>EkLYjqf8 4wm1+}O A}8Q%qe{/9X@X~i=gXD*ʸ3NΉwl޾_9KO,W-E;Q9>c_q<a^SZҶmxRb?&=s]{LOqޓ 0ħbyoSr)?<~Σ{+9t;4(g8k֬Yf͚5k֬f-OWTI{sOP@osrTJ6X3痯^䂜s+Υ4~x E nG# ) G%bQ*n9;>z~|,kkQl4mM]Xz9?pyqI,0uMlaKEщ%`r&HDČAĺ,C$)OeL%1WKʁĀ1B;QF9@]GV!V#-U5h: %!׶ "o]O31Dz~; 1aeQ8{?ƹ!%YlETUK؈#bPGմELH#)?)ڔ#b1f3#GdB5St\Ne͗q +8Δidd4XI'Չ7bX0Pe.T-οkGcqﹼꢸR'D̙a<=bבCYelԋ'PQ|ױ+|׳#.?`-Ւ|/ /8 =%??U_q\ɏ5)㑐"D0F(ə8~O%l _<زRLCf垤Uګ+\P ^}9 XCp$v}dHo\Pu8kY,j uaOf˳g!k%^^?nyu9bj$4Oo!s؝FBX 9)c2=⹢zWwXK[aҚ GQAƤ+$ 䘱 _]]?]AIb{O?or4uC۶uʙ{RT֐P%cÖr]jCsϸ~qd;QαѦir%W"*|Å3j-Y+DmMn ԫ'YN8ɡ'"A,83}u#glT)}`8vp,5Je-:6l[ܝwH%.-})Gr,:y\.}< 2k֬Yf͚5k֬f-F:c59c} Sq9',{%75fO$ۊlJwZNӊ(c|p,,-8ជ;]@R5A:;re*mGdܱZ`zǮ9r"bzZ,]pl샧jR8ҶĠG2JS>VWS/sYe{t% ϟ2>ssqCTk ROHRe2أj5e͕L- 9u]r*`CHd|cqnZg5u1bbnǯEMsuITuaKS/Ko#+H}}ΑYRP%i:**#rMί T\RHqhVnF{pL*`y-9=cRMˢiCONB[TU]F|T1<|7 uP-W Svwox _wv,gLSsjɾ}s4 |%ox7<{?GD]=$Qyr*}ԪT uks$8RV6D[sG~7 Vm3*1 1ET^p<Zst#)e,i88G|;!0 g|2dW pc"l Hƙeò~ufeCJaoO<ȠytMqGsQ@s"T=9bT8h*}Sd dJ>"b]|/uC,𚷿1V =a$-|s)q,2&'R\b# TKcΖGk0Ε3D$zNc8t;)<4FGKl8b`D1 i"X֣.;_"اIj}]娜AǁQl fȲ^%ɘeXWox^R._@Hϸ}7MßU<CL՟_hUJhW ~SĜXxmâ9v=it<Tr%r#1gt40dZ\Y?H)gcd"œsrHh1}$i9s$@Jc)~֬Yf͚5k֬Y!ߡ+>NVh}8@Ҍ5d?-7pjN˧Q8J6z}kjf= 5 )9S Ɏ߾rv\T#9U͎{ IDATpkۖ|| uB(Kş͛GHʑéKb#A$BEc`e`b}J*vz;pypcC` e{(%cXq?ID7'Y=ĄEh뚦i1ᇁ!bT3m%ufD?(3qi ݁w,.x ׯ Z3DO}ߙL<( {==b DUfCv+jd!]oFkDZ y> D)]űW}EK;ɩT\1N,e4sըW-5: 1Q=uӖs#CU7eX$y<ܿѴ-uKxD%-KzDEǎJ1B3_8,q!D|θk=)%xX:CH%V/1jSS+f|ja ]~Y@QD-iZ-/9)bnȔNO4Tc~ { &ibJ~/Yf͚5k֬Yf{ ޅq >so^>:;_h&kqIvTTՎyqMes*/e#!A-oz0icw͒uG__2GDYCU9H)pui+^~#sVI^hښ; (*e5UMC`hY4Vax#U]bqQX(>CA%/. 1_YY ˩ iKb0aLE.Ds;;RI \1e9?=>bLE\Db-ߟz X1h#˥g I"$3vMKJ$?{/ۥ_PE1f܈#}IcL<0S!C2%~*YfMԱ.Kq X:?{O#F!PM(D6op"nϛ~Sm BA ;! }jC֎ v->:nX?_#cg^<x|{ by-OIBHS@;/Zy,Ql)IfkJ72bD~sJ$D.!)Ji <9q 㵢B? P}DbDM{3g͚5k֬Yf͚5~[s~oj}38m;!#YLc睡u>!{n!7u) )˸eAx)5ǻ{bZT)ϊh#D:aÑbbi':y}LePjpe2"!0xlU]D+.%ǐX]^ssRD Rǟé 9+1=)1N Ԛs¤ĔH#25"1& F2Ď !xOeՆ2X#S@1ԓՐb`%}8?bo͹)4N7-aVcy_e ēH96i T=BC̘ŅՄ[AjY.k1((@B @UuG858c&v_~/Q5?RK:$$@n/^c%e+jlܿ~W5MSK4 /<7WTmKNkv8⇎X\s 4xlRGU7\^pqqu)0Tȥrx[9x|k5%I" kdR*P)N=ѩ1@B1!)9<:C(瓭xT "hUǬYf͚5k֬Yf4CJuwyjto7+[sW~{h.IZUP"Q@W1ZVuTM~8ԎCB<>q,[=uek,>4M|8j]x{7XijvUֆwd!t8&&כ=^fɂOч+ڋ`,b22B])/OjLo{|LK{:ةP2!FO! 1)zB ~qJ{$֢&bLňPܑe21wGwoΫ$Edty;lNc1Z{,ˡ#T*VCwl26 )a-rC0,jꦡ*@6Rt]GaBQ2"HSA?^45ba8?b>WK 2[6GL<Bd#q86,.qh{l80t7x^;( [wU1Vhӂ1T*h߾.ǠjP[!@NX[^W5h%$nHt=@èB ՈmqtSkKہs C7uK7teqmi^5k֬Yf͚5kS3?,DžUD:_ XƷ} H24D^.ՊJ>1]8v|T-b^pn\Ę+z2o6{} V er8H?xbŲ 3A+ږh sw[rXuHNαXlBCC+\4j}V$r|( :f!t,209ŒRUZ{z-Gx(*8P'*2nʸ$5"yHS.Ю*B@TIYPqsM+6ӈ0%]C“ UEҙ9¿?. H vTĖ8ScH2%тX##!о1bo&@<CqkN;sV{@ Lqի}bDDUQ]wUܾnPfdy} Z,56]jjbyK]_j/M*BwWp$~5BO鰨ZY$zUrU uݾݢ^_R z7R^}qI.qjHv&c8"RrR"+piTZKmHCG-Ɩᘦi )aMTT8ANcJXC즑ȬYf͚5k֬Yf4CCMeH|Kw25S|i`1l_~Iאe!fQ9=ӌpy{ɢb .W,`qjU*Ec?[*F X)khUY6 sKln[Ullq9p=?|Ϩ/J6y%S;Kl4>x2g-(ֺ\;W)8w5h}$tלA=~mS`elK,9%/ ^. 0M]ߕR,#ΒƘS,qIIQKY-K1sF&b|~r3UUQU/, qΦ8-Gw4MSz s"ؑbU!gRL)Ive8=r{l]ᚖ>GFME"6l0ٲXCOH k6=|cK׷%NKZUKtg9wTu[FhbDݑղTLJ޾wh:ګ+lSǾDwJ+>J:X#Q)s9֚3CpYK𥗱 /Y%[7TM[:F3Hʥ+(9E$1k֬Yf͚5k֬Y?Dr]%m}'0ĹCPCO¿kJS4qJJA,r*/>oӗT+(qR э?ڋ%x{+'(FjE3Xp6G/` `H+ Y6-e=ұ?CFs/?xX!0 OZFXUJ9 H?tĔȱ@e[ctr=Lc4-Ԓ$ #-NPNiW*W&);LY2.c k7߅$O0vJasmMC/6-PatA *>%T  HR2BBcw* Bڊn0XGXb, w)cд5U @;ݎnKz`xQ-=*!DhS氃w|)]4 iaj\0W7.< A|`86[HZt9a Q-ZL09{q&wĮv!^s5 a[mK=ʹ#9%c8cB).@{$ekuo7z.}:AƐ31AsF$c# ëc֬Yf͚5k֬Y~!(V5}j?72FQeοLt9~,f$rcDX"^^}@f$ZѵUGVmˏ_{pt}D ba~s`}uK]%gᛰ\;aшRdtZUch}Y6|!h&8%A'*Բg%6lTN]q:~8F<O KzD#:Bl"^3)+M?@լPsN-qO1M L?*`;Wk0Z"1fUԸ=Sl3PVa֡#%+|>a'%Tl9ke6xA}Y&VIaCP:ߢ ~ F8>cDh%}a hB_.o#]_rwGfCl+p8O1*a {/MfЮoX=ru!E_"@T2b-j 1Fؓ|Ukc?A>"MS34 G8೐z⚚ [BÞq 1rݒcG,5ĄAC \Cap؁d*ѭ @{B#("w1k֬Yf͚5k֬Y'[:^ xŁtsDpM0k!,<9A8y1#Nw<}\bx#~;◟3++Ԉ$DإIJXxZWm/|TW6;v=1d! ) F&pVKG&*F*#Zxz}2@V1%ǎHS^>.,A#17Ff,CHx"99ʡKǨtDZt+˂ެDzLw9ʪbM$ mx7nGhدF-"eb)Șt=a,R종ȸFQa2M]&39,1{ZtEI@{ Gh#.Ĕ !d"J5v;7CoA >:d>&!u$*GK(YHE{*{!xdyC{EJى@?4t-}oч9}8}:$zOw}br88\gY5;9Պ`ݚaBL2t#p}22wAHȲdW%~hD[uCaTd)t^mO6ضGPLZϭPFS%(M@"b wwc"ir@E#a@1t@[YRLnI&M4iҤI&Mi2޻:FEB`Jxmw#{ m0lo1Fh)8,=0'x}UQ&3/)+hʽmx !й"lADM[uN W epvZR2# Y`RYX6WØ1@+ˌY!12z렦Q|glJY)b^CDk41 4`!RHBMTpkiRqDUwdqc'3IĹfDI 4.W"&G㤤bpMdPčEkczZP1.;PBQ@״ m S"5n@^~ضIcuCcYcM~״w"S(-=mnpH (Mo-rN})3 fEkI׷,y^\S/q\Psi\ht=1uRAE0 6xbX@vH):ym7 qivVpz|(EQR*dgqmFs%]蜮/(1;}`LF6yU!J=JwҤI&M4iҤI!J)RwVDL!P5V}V?D?zRMJlt@:"{ǒ>Slv,ĨpQ4wVjc[J)-sh65FJh"Ρ385GMUXS3C]w֓-hO8Z͹x)+i.H3Oz)Jׯ/x}~u[6 %$iטdƀXgH)ANEAR@pg>Q!*]|*P l 8DdS*8@j%~4G -+-B%29|,Kn^"t}mΊ%O=MtI&M4iҤI&dBHH&ZJZi@T2nyoƁ$4 w}]tc'](F1ɘ {i- #3W7l{dy YtٛHƘբ50Gm״uk>#umkNOy^>FX[s|+lOy9d9wG6w@ c_^ID0 e:ucyb(%sMf F%1c >D͐؇JY3BzI'E s D@!R7]tR=a$fy>RjG3Bg!j~I?|H{$1Ne;͌B(c/ԝCAkH)418Dd]h;p?}!'0$_ Gti 8zwn, uH%0e$7/74= JYFR-,OQ^-mZ %þ_ YWvKY,\o-G`އa M78VR޷"J@i- FҴKh(!caphShFc}EQkbG ټjiG*!*% =klG̘$M+ Z-vCĔMb=B.Mz:gҤI&M4iҤI~7Lo[ 'D* dJ &"uvu{CoM늷FGH91 IDATue5G)3sxK۽a :TZe>y(Ҥ[Hb.<}g{?ٷ\>U ӸC#!HPOG=D}v^3)A'"圡kٷ1<|.dTeEQsqp!Lh9~Ko1vާE| )d*Gcjt9G댡P"ATiF"*C PR9Jf|#jR&+!M9]8p z~5vsveQG rp|9z .{kHF :вh >̎(UQyArbڹަɄ{A[\[N: R "UB@ʱR^Sd~Rʻ6MAdX.Dg{|dyjv,,rDQbkl? en\ST%^Jh3_a:~L^s)o~nPF!(7;d1s v'JzeUpҤI&M4iҤIL5 ky%PL u0G'w woE`|3wO*;/2HBŪM=!F8BEL-ƃ3{Qg//fEdq0,fL_e1Rw)nM{Дxg!hhYɨ2R킶wZS*2!A!;I\"z<a CY 1bD ȳl*SJ+=i <Bܑ#&3CB!MҊ,WCe6{)D!*)&%ރ*diM+%T2h""Ҽd+;<li+3yEDFh1He Y#ؾM $*ˈHa(+D# ;\H88;nkzK~p)}DIE]iI#r4sH@"r7loD_ӁG)sבfCJ)Ȳ ;h# a.㈫{Bmx11Dڮ;nmӤ?c٩`٫=?K"G%kލ@ IXYq8[/?c:i(pu/ط G =7epr8wYKI=~ﹹEfAk[b5''l6vۛd䍣Fdq%|Et EIŬ3c5z!/g謄:=}M^)0pzr~nσ&Ӛ{_\?T%i{;Op}qKzP{tWǪ8;Za࣏m2^o?c⳯rDs\w?o\w;O\31w;kd E D)hSׯ^45dYu]#EYPU ^x|y~#[.v擇>SD̏˧xYݓ:nIDcƌ}i)a@㱗a "Bd(Cmzv:۶#:OtymABIГ弤nMܲ|i&c6_okѬodقd.#pmC1 @+@GiA)bprw]{ #-V{tLF e4J)6mGn RB TEkək77, ڶǹ$Vx) 6Ws}9FJ`ve⋛g@QھEͼ(nde͆ް\mST<{u@T}}(^PBS ^_myWt‡u|W||PXƑRh-J28KhϿDa.X,iu7577TUEuɄnOQE6i뚾xR< 3 ahЃJL&\I0Rj1coGy\4P˟ߋ(`tu2cjsB@(ƙG IFf2V): i6԰'Қ3BptCR{ceIi X*C =w `C  x6W4-!zz;HQZۭ[ʲwMŎ۞sܥ&J #*8zM$elv;vmzkڶkZ]Tx{ꖋ&~zv .e9vDsp1 uJ xaz-$!F˜p!C2#(;'Jq8%#@#n6n뵦Jw\]\i2:xBJgڠu b.rY-I&M4iҤI&MkKܟ\w׿n~{e`O}a˷=9vGz1eUUnO[Oyrg-JI3~@+4T;XABjz& !h ZHZ"/KvHyD/FlV!^.!0ڌK))9vhuB$W=/CrN9ONޡt3 FGHI۶QJg%฼^U^&:#RDfe9t, ,yxz6H&Sa0 "Zɨ٬BH-e1_ΉQPj~ B* 4u|Dd}H$FkxBb@Dv!b1l# 3};oJ /5btxc;&#WeS?M0mԥB9! eȪ9Z))UV(t2؃ǻ{ZRFCHstQ!B4e J\,1JfS{P#DJ:\W{,/)KBn6Qfo鮯ɥ5R+s"c4J*2cPJO/Bb뒉U2@ɑuZ 5Z@n/,AJu!݀V !$W׸Q`Rc4u)ҰHmd9}x1~h1G*IթBZ#1])sXSa 9'T h5I#ɼH".L'/0EAX28o=ouL4iҤI&M4w,3?x2Ϲw[-}?o;HSh۔( JXokˋ􇵔wK#3lB+Eg\]gϞ1|*ʈ$&"KٜyNQk[, TeyN,+Blw79vQcPPÃK aIy:='?5y]bptirB[D <=2zDDkO-lÓS_찃'Jɼȋ%_y蔶rxkX期sc>X8aE?~lVQ CgZ!FUV:'fz rpnv %(R l# $OC(YhbJ*z!++Rd\6ɤI&M4iҤI&4PΥN1yc$7 !%`rc6adDc VG@Vt@^TŒ@U\]bBP.VDi88:'خ&2U5GqY1t]O8:^IHrG'XR:RŒp3 ȋ'9сūDry^ ͎EUPV1ռ"7ROhdW7 }!vd2AG>_q~CrcV\o{^o;BŒ,ˈstpvf V+67dtHAl)i6/kN#$DhێO*( *udr-S&LB`@s8PyF gj ׷э8HԷ{ m2+FLNAVB"D!P!ݬyRQe4Qծ@Q ]Ǐy#'?1>d<{m9={7-?ۿe֨@2 rC*Rb`G.>j6cXrqsɬOʿ4Ϟ??% ʬ8v:HT\ڣ!1MCryrOX|t` IDAT{EN;t4quyPO-<vpMRgYW%,C4;?!R|6c}-3N>VY1$B"/_s~yE^dpɤD !gFA1;g\?7?=dU0FSf;%?CLf@j-R)Ro.|7|[dҤI&M4iҤI~'Lo(r4S~HoZ׳{NOO,) k-YlږaPA Z֢&ƀ􉑾kBk1dZ@)hR=@ʲ$t_Z'3SkMH)ZC@)%mס9ju@lnnEl]?Xk..qn`!0?>:uuru5-H5 ya8;9#2Cg_g|ŧ> /EE{i Nj/7ؾyxz"%4u,Kt]2/h!cf9Χe{__X,9`ūWx9|HUθY0yF4>yG+T.sb咈MJyď&m!eDDAȔ8K ?0wz+|'3 O1Fs6dy .//g_|je^伾)d5+Xլ¨G<}9rtt;~DS!B( 1 5<}Ϟ㎉b'?)?fn#JBg_!& >`&9O쐲0H#1*RL=jm~sJC)h[^xI[LÕ!J+\afׯZDbEb~)Fg6)Cn, <ێ!Fb ↡!Rk.// 1ж }i)`]@g<3yƣ3\_]s\p}ݓżPJP{<ےy;gnà R!1DIM4H&҄"DR! $LM\y_s|4yoX`狸efD\#V/$q Tɐ,bWwMM6DR e^2)LqfYCG9tDLtMT!e-BжxN[g[14M ΂.dk|(PC M{x·~=:4#pa6={ٳgϞ={1{OYV C8BP%Ism"HҔk<v/w^81FfeI1r|r g >XIh]SU2?8&b9CGXc8NMS^]iJ$Xh/BGEmCk&)t8H'R RcT4MiێX\ Vƒ MSS)JIᠠ,K)Q"xzF>)k>[ QPƑhoQICMë5*JXO99AE ij9(!͇d#|b@Ykfs8ܸvb;#B qVD=>g>cnݼF g("%DJulw+b@6aO( !MSSU%nݢj6qD+ڶ)JR,/e4("b0aS3-h$"7X[1Ùt"jQـ8WA4۵B4ȋRHsCP&bh:5yѧ1?s0%8_\ppxݕl;t$s!$uK!OJQ[oTzpnxYq䄮kȲ o+T'{hci"bb*yb)ֻlxCSʶ!V4!{gUÍ'ͦcQٳܾu0 Ʊ.kNJ bD,xŰ`>ٓI1h`baG^P%CX:%Zwl[(%0F^m$qD+c coVwT-Ζc! BI*&sw{pϞ={ٳgϞ=Eo S mۑ)R }rB I`!cs-&Z֫Jmqޣ4ZМ:mSuWB!Ybm(B@ݔlv|?=$Q0ڠdΩnvX}(%.J)1 94wj-H)[8#K$c-{VZkTzy 24.^={44=V).`b3G6o,q(MIK℡lJi8(H ͎/?bWv/KX1h4ɑ"& . XG7/rx00Y[î%ܥ(/4*sɃR*KcTjsA^pz@xO,qHtb)pBX/^hw ZT $"P*Ymȷ`X]9(77~WYV{$It>{oww[o"CxA۵%h;MO?},ɲN?Al6w׏Ϧܹu/_T)%6?ۿ;1LrEx!.Cq;oJ(ݻ557~/>|ropÃjIp wn$ruTM˦隚׎wq}ΗK7NSJܸc:wGܾqhqow1mCuu^{;73F#$;OM&8/xY͓' FH)tǏy97rzb`S6,+u0C~BE *\}Þ={ٳgϞ={2!2OQJy\u,j꺡( $FuUnͧ82f2\ G8I1<s&ՊlF4hC8`m XF ֘QnV4-i1xwW%̯]cZ{ں7nE)/Z%Gs3HkyuV%o})b^] nm]wXWtKn\;t9ӳSܽ 8srX"b<_ڭ[ .Zn޸t CŊXd[$"͇tb)8'h/+8 "q`D Q 56O!988ڵkIT bHD-b8l -B]7!s]ƽ1eK2q0=p`Pt~18I8>:$MG?Hg'8ӡuG4i [wv%}1V;8C"q:јϺ/ <<ɹ-<%/^2D;hf`\cg, yN]b|8^;K[d躖Z.@(|0DkI6`(xGkK$Ek]#b6?d5݆alv%R d `(JBi%9Vn[u$in[(e#b$e42J9Z0Za2frn{GidF^te~pH18٬3h3`o3sZ'bOƤ |lpֆyYl6HM' _>g:0 YoQ:bkHȒNȳ8:ODM\L“Ċp*CAFQra.3 i Xl]\O< ~ֱ-+*VD"c.<|>B> )J{$I$6DQD$RJeZ/EJJ3aK>=6x 2L)˒,}GkfzǿCuU/^%HmZJSV|~ v̟bm&GIEvHhu4Cj/0f?PRP Zc6-b tSc6躢5nzyzzK()v({Xg FVe?Q*ILD~Թ4o ^xNSU5ya x!A `E~eIO+?={ٳgϞ={Y1_KJi)Y,CI5ȑB `2C)Axiu]1ѺC됩q!, Ge&1ƶ,QDvdI:JP;veMYJmt:Ջ!%w_/%UUo ~:8y!Xb7"ֆ0Ɛ9HҘ<I$OiCE״xCJ0 }4IcEDíCy瀪xvKd *Pqƶj0cb`JES7(Cʔ{,Kyy^YT1qr0rp|Ķя?k'!Q8VYYr!-beX qрE1O|%ٱ)a0X!`>3KDQ$v'GT<߳@%vBaDTHzҬKD!⟿Ivc-"IY"HP \d͚vDw/zD]]Nm*:ʻ` !D(Ipv}Q\y/]Vie kxR|U{ہWBx bWAJ r6/ϐ},")9_,ʨ: ΃Є+c-zD%5] KTPɋWhzIeEWz#d8ݮ Vw$J`Adpai麎<ѝ^ܬV\vMws춒r IDAT6Wk;ȭ&|]C׆RFII|nòrC'hmh ( ˮ[T1TUv9GSWdI;$R)ʪw5FnPID<8 k^"B 7b:(SFgyNYvB&nHyv`6"Kƻwo4Uk<Ŋ4(w%D _~%`l~USc:umJ,!\!EyJ t xG Bb%^լ/p_ߔJ!+7l6e2+X.MIL$$qL׶4ڰ\mwn4Ud2FJI]UX8>>aބӬ7R,EL AyB ˜ *JŝME@i1e:GtڰnҔa"0rsa48OY/HJJyH F88,k'DJ«Ç糾C TD>)|wn2 "b|8g[՜>I2 ݑg9mɳ/'C4&Nβ^m3Z75=h@FmGtTuj୷;K4(!ȳ5qxsx+j]!={ٳgϞ={!BB!qZ"2l+jmQiBv4Ml>æ M]#DJb.w$IB$9SV%*چ%OQW5Uc0(h(i္:nJAwr mLֆvbc 1ˋsR*1xgtۢ k-ɔȳ)hL]rW')LJ8]r48MxrM"~7yAZd:=g2q~ ct<}[n .y(w;ŋ3Jn|ux(ޖLM Hy%~[ox2ɓ}54ӧ\nj>~;f4m[$?bO>!S_;_%RMxVOsؖ ZS[ϵ1vGc]{. z(XJ͚wzo.s [o3O98ܺɰip2 RuQd9Lgņ>7_ e/^E%&KEGLfH8==e6;Jʪ)Hc#:t:jj,y1$rE1_aZCtӒ9-p!eE@'̦?ӧl%H_[oqm..4 dykP*_Sx/p1 }Q=B d"ni DQp8#*B!{<ų 'y!|hmJR A"/ޢ( RE(#d rD Equ!$B $hMD"M3TE  d0 kp'Y(ԭe6"!b@kG\;>b)#)e Vk EN52CcڦF'7q~C)AEH'VkTIeu|1CQcn+t=4LSMǟ|1TIgՖc=lꎸ(xx b.F3q'$qZtq>f:QV-xF#c-2Ly~vbCZt~J]opQJe4~% ,fڲ-K|Ŷnl7dIBdybӟ|k:-p>g5][3( 5<`P 8i0!fn={ٳgϞ={,VĿo_.~yY:_s )㈣bPP&ptrN|(}PUU(#H$IBgbG#6h$%scQLӏ{:nbR~M#T!Dtp] Rƈy64K=pׁsxB`PeWWHXzE$%4h a_nPxp?q-xՕP~ /$퓟l7={ٳgϞ={IWF?e||6ӗ2ڂNo_~?!ڶ(fW}Otm^k Eׄ9kjZFZUgD!UZ|)J-M]c AX96ů7(f4P5B@F*N5ے):&Iڦ!NjMWoI8/H0?5z(I:vu>Bèb0DHhf/E0)eR_S>9G^1^Wۙ_{EMq^B\#e/$R^B"e_c4x┮{4)^ yo ֚~/\/:qh 8J $B!Pq.'gY-7$IJ^-//VmQB1MHDIx)CN6OiD1"c0dqeZpxxȫӗ_c4Š@F)Ng<}""sSstuլc>h<>= bNsXy%o?'gL u_>>ǟ>bSh#yLB(0/d/㋫gťR}ù\G.LK *i.kT/FZJ}IºV$_ g87?g|/-}fZ/|!^=BY"#RZ Ku/^.Cq)ak>PI.U`8w&cAf&NPg cX G#)*RTdjb00q֐e1m]q|xL.;i1*2yG0b2%"Ť(&)zt4%/{w'WUsνUf UbƠlFDA] 3:,",8~Q(((nCK!NwuwսܥnWUWK>yanݺunϫ?<>}&;6ىo/._!%{K@6&S.6h(~uSK iV8`q-g>Cf""l]5fV ;Q *G"""""Ɉ!` l&XصȴQQՓNjEGRSV=Ct5C )5F+0Dww'[0(U-I'[@*r9a Z~P@j70E];yZpQz!z }hllD-҄RXDO MM B@"DKS"z{Qq谄BW gFP ELl Z5.נ0^ø%QKhoHB_G ś.qp (e[{s90}}}uKiCP\Q&3U !<3]Va<JF1qj&ʭ}v꒎Cc׷3*2s!b j#ЅE6(Rھo߯V+@@W+^x9Ǭvtl_ Xjm"(ظqO^ߴBtw0w()-6 aæM[ǗA+[^.-<׿C AZBGF]6aMXv1U 9^ð,t }{ 0 [ Ќ*IPL_g"{%nhm׵eMh>q'?DRzMW@Az*,A &e"""""A.K4eV'67!n@/ZERVˤ~ 56N_{* d݅n]lU V52 &Z_Z\@)(074@!<϶\*<< mx^\1۴H7!<htob}A)tIwCyqk1F @ @)+jtt tF6Ba *P&&Ap 0`z5nAyXhLF;kiׁ¶8F;ZE0x;q  ]OL/s-m"ZRzHbz¾U"U?醓@A nG{.lr~*ր40vZ8DFHamϽvk#}dX}%zvd 2|߇kNhH TlfX oh|f-$.AkVb1TIv>sB{D^**.ק{%yT^mFOJ.'G^{_Y>#dդRmW4.슗̊.{ >X~.Ձ^cfqºTԚ QP^H緼-"^} 0%>^RAܢAlءQU.V*e]* =)sAaBx9{с}.(MmI@`Z.. k7lAo#D3|(mhƭ(Sk_ '/ uAX$Ue& Ҫ轗" Ex.!,:L ,1eMd:]!|Vcom}&[5 ؆s_&Z_=F*`7d.alQFxG;no+4& 6(Lj`BQs}Zr-ɇDS,A/ IDAT P Uɲpxz)@jd dpT% G@"iOvE@v؉A:!IbsdK*l2LrβbjC'f:T%i9 j, Lݪt!Z93!رJX]=X0s~#7C\a4ᎌxqHG%@Id^v]d6Hߢ3ӌ+])„%hJ 㰒= ˉm" 6GDAN%Qjҵ!l9۷nsZ ؠPȸ>V '%T%[{/j0&LUw1bt&E|v -L?@Q 2kmR$Ge.ܕ®-}}ڵeϥS>s&~e ]SG9M TmHYfL@cАϻiIO}Ʉ-k3MT*=IGG:uTUW7 x he:VI6B@Ix`n@[s#JCoCg6cæ(*FDFP2& h2Aq p6/w.n7Z-VNj wv@y(-%;} WʖLSx*hB!F^4C(cK El)'(0mZ4ZWNgvfQtd4 D8,F*?Zqda2n.k7t6n5aƞ.*&,$ŘHqS*nmSDa xx fƒ}CEkم>vxV.Ԯ1:[#0H*By% WʤȨ hSUk|2NN6KQ ˆ vA8OrGxq]ѹzDDDDDDSC:38 hhhH*RaZz;M?Ih%;Xֶ& |C#͟_{ A JQ*kQ*hGP*! CyA?lL|pk4zm4شqqxs ל6LExO ~=o9:6f[Fۥ \5Mߖպ^'*EM +DDDDDDS C:eTcA>C>VlpKE*UqZ!3/UaNmζh6 wQ!<iRx|Zx-0CE͈40sLtlڌFKEs>йy D{,lذa@P5 Ch&{9475P(@0 .Ashk؄yͳA5k66oB_v]3c4|m60ҭME=B@,$ImpF(Qm(`.z=EFVO23ʫ(qlv{EimGZxF4,(ZxOB;(Fhh[ I7iWӂW> lp Sm{uռB'9a4"FMY(Z Cm[,=ϷגN얞m ?DA\)7, V5*ueY^MqJ+]@Ygd`xo"9SMj3=VD*J"eíi#" LDDDDDSCAץ>0uw4˲Ю;,*鵬*Vm쾐60<~Ch P(8n*DC.RR!%r<c(PnCChhl&&J}(hh& 6 z{!=߅ Ӧ!J0Z }P:L\k MhkPcǝvFSK Z[[!=* 6{.$zz݃Ro][6CkDPneY l) xFCM9Mv׎>>ޢAϠX2mА0K֍L5Px/ )jԨD«Q5Fm˹qLc$nhzs>L`[Sv!P*\&S]x˯.3<υpst*^aiy>` RZSknFOU Z ƸIAxr̨ ZdeyUs?Ps]z-$'hhpjNjpJN/@DDDDD40ScS z UKWiJL?M.ybT QZ*[W=EmaǬ0*DЍ/vQEC>BP@hniAcS"O-X ai10WuӋ֖V45b֎\R Zh"6oh: {06mT** Er-bƌXÎPA\̽gW꫌kx!$ILo |(%[T+i݅!z4BCFa`ۀ! Wu x]3}=kƴa,͝3k׾'dvmmOB!>m\;kk$i+Ha&i6ڭW!J_^ȹ<ܤ_ZKCumhQ%[Ѥ8i˖?jڅфo! g^!Omu  h#)Fxh*$ g5cw]Fd vH(hHH <ګvtӬa o~bax: gb8,m5JzwRVg <o4̀]2B'A+yWU p> x:m~ kӦ>˪e{](E#=5%eW W2-QR`݀az;qp]_Hk};(TFCc#JAu5ZKPnWW%я%? SךR:Ih;mkBM6 :EU(`MfmThOjevopxFjx5YڍC)rCX/'a ((>\;$^a^!34T@(ۮlJgJ5&>7-:ϼj]WaazmZ\]`y; """""ɇ!`[O@0( k󵡗q 0CqZفbqU4:U ,L/n!avccOW2?Uh.aN "  ¤*2k7U#h-|5@aKm} u^;, (¢ {1!ϳUTvY7[mG"CZϼ{9B-$}ِ 3hpkL*eDP# JAGW+8\ |!!|O*6&*Bsn~>J6aИ}AQ `058þDY)[qk׍N .vo PBǮSCz"PF@@]ZJB3!m9RRh#bh8M Z^'v򵆈Ƭ;lDH[heؠZ%C'CVWgQvmlurZE?G+=v0韴'{Lݏ%"""""Liڌ6,y־r-6°\΃ a"˻_У_?[H@ɋ'u++7݉&^^Kƿȧ/$ZMΓN$TzUU5]b긣Cd# J@BClW#]`;}Ap};!Y[L*MvmH &.KT{# n⨉(V%Pv:y{O5J' yn:`U"'̟73+>|߿% <|_")؊, S[#O  U4pkZaLv=;Ⴄ6i#u\k10as -'=:\D?QSq=i'kGa[0g+.dl&u<P! uGB@9x"0z®(}FJHATNƖC Q]#B'D;\8nfP'Qҡ'|vyEDDDDD4 0=^~_u5j]S}a (5[x ԯRJro,rre'!ʍ'3Q\FVu*ew̖.$D\elRv=E$(@'QRJ P8\/VZ>%6u15ZMTIH|䙄LBcl/mfd!m(O{9tq/A“zC!r Pw4ZkҖ.x~MPTɴNΩ neNk$ڇ vT1m\5]T j'**cbT *}Foo[3у|71y|z|ɦu*UU S~뙉8\H\ꏏn+~:? &nۀS-c['ްO(o܈bcK[78nM?C[&=Fٵ-!+U\ۨ 60nͻ|C3A; i+F!\LքL}&E%;n1z*T_D"^!+2Tvh(_74&L|_GEիʅk# wM29XD?ۄ{WiPŭ˜",JLutk^OhODDDDD4u0= Mx)Bn476T~'NnlLyPTM\QPEӇmVYY&^ J0|NM.Աk~!iʹ&)ntlOZj26ݪk/ Vj?c}2rBAOJ똓>xϞ9g .Rl;~?(j[O9Q)tQv Jno`BUi @cRYs: ˪R YYg*h@)@+WhRFr|:ަRY|MkṟQXgic Ha\ 9xС[^?ޮƵy^-DDDDDU|)':}LݖɂWheJ|MXed hll'={e& p\qp2*U #J) E]-[:@T%;k(m+S砵kNNMՏu6D:RƑRX:U*/KCKZ7~xE۬R_z\~~n=?C@H\1r#WVE-Pڪ\]D2Z$!YX*P*1y0߲/[i!Ih_k0)jtMY֠Fl~o2 '&#'כhlQ*!r- ӕ Ţ]wkDDDDD4BFUI}mR_#}?d|3k}]M=ԅ!܄+_us#J!F}/5+`\{ɕ8 #F.3ay>ߖNj61_=bhصz{0TT^0s-;ykM7.q5> @rLQpZh5?ԙ6e5Nì9b=:i¿_z =ãg}o@H̍ IDAT!$d[tK0t]c+ !l9dJ*XͰXԬ.BW|nF]iQg 67C\reXY̜9 ?2o68OÜ9sF䘉uZx88{ɧ _n؁7X }Q/`ƌpr6x Maa~ "_Zk?1Ręg!9N| U~K˗ZZZ{>ҥc_}np‰ϩ98}q{߻KK/|ᓟ`X WRT,Q*--!>sp +tApG}J)>K¹\wpaO~Slwuu}7?CUvvv_*?HoYg6y""""""BڛOݿd[y^}^r7ى9sfc5׾+WnoMpxp=xn;l{{` UUmK_w3l޼3,ؾl_ s|a\J@+^ uԑ<ӟqWOė mg̘䒯ӟUq5  =ވc9nٲ?-ګ/|c. \ !pUWkUW]^V)HDDDDDD40---(xɧj*,\Xd11x /x vyg@OO֯_.G 6m<#Z hC2s \|Eo~K.:cp˯,@CCCtuuaƍ6 ]we]`{̚cE ॗ^Pu1`}ƼyFUM, AJWw`~VǨbvu3iNW)s|H p7avUꫯo~s/MkG _ӟ˶OWa6^2㭼Vk{}Cq""""""RCoxa=ܹsxGR ?(< Raz~!H.k%\i3< hjj*~1cf͚5ǵvm_+WZ^{}"""""" Ry];lΛ7n-֮]x=Zr;Xyp_wZ*~z͟?Bl܉s91,]vy99p:Vjgop:sE__l8ʶ>яcyqhe,Zwol2455{Dh"`% ho-\0^s @:ȧ>I|Ihnnw,^/=}l\|cxɧ /BJeL֊]vxm5O|T,\6mBgqE_yxǫ3fSO駟6$ĕW'9` ,[ gq:.ȴM#n=|Mn}}eJ|c" C>DqW⮻~N:9{zz+b:'p"֮]kN]ӽhrsT ڤFHݏmmٯgx7.ýއvo{lذ<'466裏#R>ի`N;gYka… """"""b*# .&,]vuq" y뾇xehkc}9'є5eTlwҷȫXڀD;0Mq Nl""""""""&uPF_oJ" 9=G>߀Ʀf>u8G4re`^>$;d ҹi1}Fېq(c4 z!""""̰I5CyFtwo(bSz"fc'M9G4r&xMMiM$֣=Q-ؼicO1{hLz!""""؄ȠFxd :ނB{&M#9e`^F͘cl-޷v:\{ x1{,zǰ_ރP)u8唏@1cR?P|@MUuSQ(^{snSs7Cć>tBW_vwL9G4rFy'pU`Zk+;m7#]&+>X` `"bU(to_=v_{'NUW] l+C.U˟/yO]a嫫𝫿/˖-}_8 kV :+~v;nZl\\~5l:G4rFy챿oıO5ko^??{]0^녈 eeN}=U o~x466;,+Wٳ{!,~;i |1w;y ^zZN}| pq8ay/p=Bwq_Ny_[os̙3O~r'!%tЁ83y cO*ހ_~;}:vmK/kVwѺnp啗_?`p]:??Xl9m5Km^&T 8R}1ZTz?MfZӎW^~{(~a͚N̛- ߱^{ Xkݗe#4~_{믿~{?睍[o>M+|Sxo~7x^[:lw"[n_WW@)0 t np{W/==(|oCމ;~r3u1 shF}0mڴa\>_v[Cc#^{!#"""""IZn4iR蕀ko;+.{QhooR --6|\B>63"^] v!C>ց^GЃO9L6 [7=>ѓēO>|uȣxa`~)ɧK,ƒ%Ɔ ކ7^_=[;^U!8qaoO\Xk<&ۖ?+V<=X ^}u%9C>F^/""""""&z88CnU߹-8H)ѐϣPAss3 A榚M pogyڨ\. XpnvE챇zxhiPi[7n؈x>p|;ۇw#Vz l3R 3gt??!Z[#<7nī95_Ѓ-sf۹eϿ66&m]v©zJaogcBDDDDD4%M0oBAƛyf\tѿMqbs3g6`Ŋ6s4cX$v_3f3\!U[z|f¬YS>s9+W…;`=v4>5C[{>=g_z;laKK = {xg^} mmm~ش־Yvۚhn593MZgg',YpA&|~`cz!"""""L'ɺ&`%f 5߅O>|<A BA:;jkXvn8w[o?؄7\_C>ց^Gڜ9q!gw xޅuDXx~-]]0Cމ?Q,_RxG/-J^z<ȣ]}_T*AJ w?aW^yѱ {'}wJ)<jkѼn֮}sϽR̘1 l?c2@DDDDD4L/2UsOdM.*|/*|Of!Oz=Bku>S o7<3B`3O̙3k[]_x]}]o؀o;fHFh]7'x7|z;:;`}:^/^hka?k3P{T5T3b!hֳϑA^&A1h [ @7Am&M#9e`^h\]L2#pD'b;pXQeoRjPl:_dxikcm"o^/_?M=.x5;UBXjVq===O|uP:&Z[ղ7_hș7^/BDDDDDSQPli9p[GD̪gKZ\S=l5!6'M=G4r&xTr!U!3nz&Z\PVph-@ AP ҹi <g Zg4sD#g?o^녈2n=@U60cV-7lc֬z--hiiEЍJ1 ߀Ʀa>c4937^/BDDDDD[ :Ȅz cV"ST_vRpv:;gw}N5 MB㨣:LUeg'LpIQ 8QLʚ=Po>^> NDDDDDDDD̳>{>UͷRLTZێѨ~Gz]l`O񯭭N%""""""" +3k. RR1d_:}}ojoocxDDDDDDDD4Fz~Uf臮R7Pͣ&;҈N>]k """""""1uӿTeJ&do55(y`+Vf>WX̅Bc_"!бb3 JT7R+sw eCCW{|v_Zot/^|ϑGyƍ1 $"""""""\@ƍy-^_/ZKpo( 2}v8H1! Aj8Ht[4D~-޹hѮoomm`NB`RjewwS?_񎥏VYREK5m=F%,! TݦZeаҾ\9&"""""""**{P/fAU#ZϏ*`19Nɸ "0m$z#wzۼ>tDDDDDDDD(!и5 7nBcCz':aT޶R0mϤ*LJ&Еښjmﳁ]u7[ eZר0-V U&J&*|Pۼ}uo 'LnSmGt%`jfvjU V *^T40]}* g1#"""""""XZW)f#{[t}" jB*= ZCݗ/=@DThw0HBZ-D pZC?R x0Q 'J% -ժKW!*?{vہ0$"""""""J|ZZ[0u{q0aBTbUf 쿕n?[XmODDDDDDD4 ul_ZBF pXPVkϭֺ[72\Վ8d4RaVdJjW}nv&kZp$U U; fSDDDDDDDD4<ՂJj qN8cYm6jt_VcS]X8J?""""""" %,lu@j)&V;וeLÉV~8A j}\Fa5 ZA`?TiZ_W~ S.Uvjj2#"""""""@mPcj ~=`۪V~(A mSϱdBDDDDDDDDe~U&{@j!Ps0A`ڮqs`!"""""""j jmS-|wbP¿J1W2D+ Te1j''C}S6oi»{Sm>X# ^V|ʃ< F0{_APÁhUm JRc\BF2a@mݮw?DDDDDDDD[lkm?~jۭ2IDAT'&E Jdk0JWϤhhdTn=U;Ǎ 5UsN/ 7cxHDDDDDDD[`vonFD F+}Cin7-d1u+mW}S6 F;hz'yh矈h4T 6Џzo0a1ACpo(!"""""""|Cm~2a@LjJv~k ! *E:\QIENDB`ticketbooth-1.2.0/data/appstream/new2.png000066400000000000000000015761441501006415200203330ustar00rootroot00000000000000PNG  IHDRxsBIT|dtEXtSoftwaregnome-screenshot>.tEXtCreation TimeSun 11 May 2025 10:56:32 AM CEST8;~ IDATx{-I]܏֭wHT *K5Jc B:,ӽ[m׌E[X*06"ԃ[[{9g1|DD33b?}V:{####                                                                                              X!l 8PAAAANqPAAAADAAAA@ '$j2"   |H@W*    DAZ,    $uOAAAq8INj    (41    0sb"g 'AAAqH!뎽x܅k븗1AAAAD q1c+W*FBlr$   BĹBޱx54?r#   &|Ebޱ5$/sS9AAAA7\b1XAJ!    OX1pEumAAAAJ*lr'nSLx[˗    bO"U6;q--K    Mlc[%np#oGAAAAz}c-bV pEAAAA W`+a\l P|I    B Meφ }^;,@Cyl JAAA,յn_7    6_o>o}1pM#]~jX+lAAAA&#lŸᾛ]*cT}v &    Ζ7A곹ϲ[ug 3w    %~/l_ F\h0+}r    8\C *!p":@@DLi#   8ilzoi A;BU >kеH$$   8K2" !pD@P'<2&$    ± n:?sTQםK/'Bid:*M"A    %¥s& atqoj*#>6Ʉt\KS'AAAAl2-` cyp|V^2!p*f㪘' ~p.=AAAAD:>3AdBx˔p\Sl c c&!&/g~^{j, ~uQ{s}>=̖{ac>u&;yd3g6d~TxC\5l47 muޏ# ZmCs=njI?vS]7;[i@pSviꇭ$ Ϝh[Zs龜=wXW៖~n4q7 {"1Hwp5M)HVHN{J9J($6Ƕ6/aav9z4}ncuk}\i7Tƶ],,{x}W}T^u6O$[E=S_o?] z/Z,sg+D޶/RҨLrf6@ C"`7$+-'Y1"6{LHk6SlU2>u@^| b* rw$fUʐx 7u"Ns  _{(E_%ر:H$56[>?I\o( PO]?:B :&BmARfbmn(}OLJdo\C(Wl.Jm/t3ƐeƓ|/x%bKԉ7'FH$<3 nħw*#C?5˳>:y! AqhtM)I\1zFϜͥ?Yhj8lA#]{v8(leO t#t&ecrW!MY Ww! \DQ8xx| A"ezx&}u1wl!ڍJKHGj4%'6nԚAk_7bI%9sylПGԁ  P!zMS0 cC\;0.̟ȋY! /"YBp({=M! !"czV=L)ɋR?t\Q9'gyb᭣Zӓ\$yM:?߉E<ç&!1j)pN%wg[˫į[EQ`>=?􁷉z$5昋tŒ)u-xA =_7/  k>ŏa]^_< wCl>Dum~XWL;ҳb,i/pooI*x K{&?:P*}veL+lm+YdҷDm>ſx)<a`}mݳ=<A<MR:uI-Ȩ(Q _ͺ]lr :CZaCh8ֆ1fxxi˔)e&)bꞵ+HESJ![~BnjTQCWDIUlMj7ӱr9pIK02@w7.boKA:Pbf/uO(8NwXG$຃Av<io}uM~T94[~Am>ȟ]Tn}0#}ljc'KeUpw0F>o#VvKyoV!ܤE %YOa^gbeEl3]NA5\{2,Юp!QIi<ė&'NHz>(o7RtG6-m]kHMSB̰S}|wSɹ;}kcr1X`QWl܃S=c; h n2u _ f.= wWNa@[.c{'[ZU+0}}N[/BiXUv[ۚ-]mj(K.GGG3L& ci`9'`H_R~8U Ŕ7ZŨTˁ޶.:/s(A?lb#lGS=2vNw4VNwu6Dž `cW1X,pEDqΑ5G2ULIB9|ݞ}3egNIG@j|kgq'=S*υ6 n1;鎸?T9XV"bwAS)Y=0]C&]ѭ:*zCBj-0}wӊ0!0tps9:XG#NC@5t~\8R&A&&t-mȸ0'>l'Vw->t(Ū7YpX]ѝ"fEnbna1t|V]h/P4QtZ]#{llIT\[$\ty[1OMUEKADEx)>r{{{x泟$y{zP|W|+>?QzN.>=2Kjfsxh+qpIdApi Ò׮򏝢05؅VCMoh}/.iY`/&Y垲]~%1~uJG(6ǿ7 /j pP4_MIl UBl:N=iwH\\wc)^uuW6UTADbx4OLWc&J>vaׁ5[xpppwG~?h;>|i'rUQ5H_N}=ֵϔr=WgѿGV&3D6P?y=nшIp'_yLtS]߲,17l2 X,Pdeɦ&[aX5vaI}}K 8}TA+% }\ #LmJgt31<ǧ$9ϬGw < /;;;)7wېJ3s)Hq|R(cdEըҼAAieO-{X{'x~r~<أ^g?U01Z]cz=Yo/@]%I[Gxg' {#JŦ6Zk#_U -P[lhwN ᝾6{"v󼱫K]o}ۭ׼ ?wsph,R1cmIߏ>i=oMUeP?C!JجF{miUi&{ZۗK}'_/xS> ,ˬ_/8t <~ށ}/W\8z>{+l#\uuѸ^|\Q t\|u=mK4q-l2gQЦ Y=֙z_?mY~q~_dq'&Jzc77#؅<ĬEYZmUߌ {[ַ݊{ΝÕW^o{7.]r<(ѶT1D6݋k |^ӧΘ[ٟ4ؼ95Զ8+,'[,& bn&HB^}#:I+2%3θgT!ivC79}ؒdʋ1x-Oq;Q%ľ \~xs8:<[L>xK^(?OZ!|K_Oqxx{O~*-?^oY7F.duH߱SBu繚,`E+_#Z5xH?06>0D3I'7\ 9Wq?A uC9!6&LO#!&f5vtT rm IDAThx|үv9R?tUv!Lw-}ztB63ԣJY[G,xV7Q^DžtO&ׂsKеfRP4*{>yj;0LfDE kWFzq%`]"z[\5XMΟ 5Gt-CI:DAǑ{KM,k,S 9 bNvqYڍ+Xr >蟃s4O}>?bg.õ?m3¥v[nQ}՟us1,^jg3\}i@fk\[^_W0 bx(0cx֣LnN3><ŖuY>NpN7뙢HH1Ѫ[ӃښIV߹}ƛKE|м5ހ:.\OV;xAmu}5ΜiW_Յio]4ХLX`(O+^\sg]/:bRG^7Uc1Nndl/)<Lb+h߶vlDD=`yj >)b|v柯$=kqJ٢ώ)< J 㝍׼{qo}挶Fv}|-.im4^$n6L b+٩t9Ĝ !ynl v- TOW^˯ }Cxs_{~gކl+c?O_,KԏGO$>rJ'Nkm].ݹ-N-:xlґD+w1:-FCl+ǸȹA4Ur|'nsp 7_j>sO^jp 8w>iUҵ>:Ҫnql;Z|;ވ֥j`/A(ć|=g dɵjuҕt˲4L),tX.ص߀ӧ/ŋ7mԧ5=վ) 1|#w/|&)'Ug˯ċ^r|߇OIwnٟ'T}3h..I5SoǮŝv)ퟎ7΄氶fwݫui O|Նך(GbG)IMs8nzRV~.+rX_r؍nl4$ugc]yMW^0Lpt43#?sΜ>k"?$XN *{&cO>6/ UgT?\Mx{Ox;gأF>|6ɠ^kFl5Y\6uj_& m՞bTiڲaAGCXEԄ`t 639~h?2:l{XuSt[k;( {]'6vݷ>gweѠvmo:Xbۚ1}8JϪC, g8ٮᶩN&)'O&x?ǟ PhU,,Nw۔z&8u:ux|+grq,hqy pLjZ6_Fp8xm]\c׉Cy >r…d23JzFDDrL^]G0i>e-{)9u*c3)}uM7k䰒VĄ?gדum'fy fSiٟ S|q=sP%. n4bZ,Ku)j;ރ} /o~~c֦Ym*w-!&Ǚ)UPZ_N $_|N = =}D#zzIΟ L R}l~},#5ۃ~j^W|`W_s]$@q0|7C0O2jw,w)65Ĵ,kgr[ "mjUWW%tkg4$z\6#1H!CzڮR}@B`x;[UpWm*uRnozq!POPg܀c),6/ߕ'x:%R{h xDn–255V!Y|;z==R<,/g;Q̥*jwE~d ^r*㱿3t:-:AqcE@źH$'PBl:ttZ:$-dᾡ@ͣw^ \ &.׶;TM:yhqC <#4>fyN<8FgIЧlC%vsNb]{EDmW?fmw]CMcMIlqCo o@WYSIJu+Ev?q9;݂5DA Al!IߛاvZ4[ϸ=A8eJPzb i;ʵvd(')xRu|΍Fא<ZxL}~T3ݶntEZ f!s*kOM3AهE$ UO1ZllrXdҙ8b<hּ'Ub;%-ئ>EJ6I36!^qR)^v 9K_Z8D Ʈ𰍃-bK܋C^&YVMޢ6kC+_m)Mo!G9>Q:Xo01M7{ѼIh2n,cEY`/9/fF<Ξ}?o׹;ۃ^5`Z2h]0x|})s%DAծ˶8;L_@IPV ю BN: usƑ -Ʋ5fXyi.jA"n%9oMKlX6~>CtNSѮua#$S%5P0Z)dDyg>U'j pҧE$>j[&؜t쁣[)*uĈe.44<RxTI4ZFdA`Me9%$'YPj,b 1wm&eʹG}o I:"Cdis :S]C?]]ǫR(Y78 ͷ:8JU(a亞=E~8lk!}0k zR 슨Þ=a}i,|IݟkNW۪v-tv<˼q^Y&9AzG#򑥗]gqN!Cfe[]~,ǪM]lRAya{mF$ozh#M/;U,\2EޱZ>5~c843vTt6a]mLzKWqmb\[}nC=3$[ek֝MmMnɯ?np[c!w+/]6z N&۽m1?[z )Ƶ>ĵ=<*_~zwR\eD3ݦz/{=rg^|ͿiL'l,ez\'p城[.k0YIה>yc_>IoB']6@-ݶ}^C*+ Dj&D ¿;h «J),SϱGw0G>=4+gr8V1:I?e2T_|EȦ2'նɐ:7+4iV;:i61әvXW݉얍y4/9^syzq^D͏r08ժ`BbՓo>}Sa=<B*@E76N[6rQkаJ{\~>]S}w)lUQa$׽.7% @Þ8osZ/*@~$㼶Mn4m٘fMGǕC`7muvɤ)7 1K##Svc~eB=Nu]>+`vjkIZ[κM/NՓlKiq4%̍<Jȹ_}g:&cȾc7\>K[jbM+SfN6h^d<7 f>c}:~wg7_3`Ls+$'L3sfXtGqM)`G[J{ٔwo$EgB=~Q%4w[킚ۂ8k_xz5W m36rw>,Dž(z G+J^Mx*)٦n HWhn4'.Mk ?v:gEic+X`!ۛ3 夺0Lh:Ki%3flJ`1't:YӁGc=<>|+$n/?-{}#@hTFY}p;(4FէKimGE+}jI~gzJiʼU2 55%#ݴK]GkbڹU\p1>!I0\/Ƹ|NDu =sM`y/IoSsg; +cm6\L+*rsp<m*Cd)%f"8"HZEX׹M]Y3t3NLk8|Sn ){uCmw)ɵE;r`GB_?zmdfƚMDNʖ U]L'*G0{<Lfztm .ڦhd?9YOlQK0+Rnv6&u3ݚeTvHy^ubՆ/~Ғk2PaOId"0Xmա-ѩn*tK:\$UM]NshHPqvf/䊈Z^oomogӕvke[fDczy qas+'$xRy)}Bo5ƈx8&[so"tmU7^Nj۰JHsj;ŀɭ/l&E9e9)6:o|O2vNfmw^$o:hh1s]o{öf8d&)!p+qTF7) .lv݄=-;mu8!M1դB n-ya؅@pl.b}@F7VMc o93\Bζ~ SI?=7Cm`:HD ?C@r$`Mo[ow[D̓DJJ}fz s%Xd"Lkswh|{.[=O^ٝCP/gBVCgdž9ݒx)P;Mre3!ݮy/4ԾWs8oY9'%\x.t-ϱ Nk55^ $ kT8R⓯hA" 1Dq(|=ڼӴ. .]x |ĸ)B`T>pj }FTdUmLHQu5Ru01 m::v"7|rm:n O/ovRVFMM79se/Eo!p/rY`i{+6k҆:1@"  {6{*z-jxW@=<ϾNx6bI5$#W4dp_`\fy)\]g{Q=Ͱ#:4mʤ-2?+5Q\hBX} ?.G4 9O4їRJk;[0Q[s6 ͛PwNP~ߖtEHtQe`Ò5K F=^&f]g  \j\Rl e,x9a31dc-=:6>2p87 ayLw9N6FwJ5mF~l{ݏ?@VE IDAT-u7ZL籖u[n>ܞK{:B" |" 0`H`om#5!C_K(S?v=MYEM <<2t?MLSy}>Q  w"j֮ 2 ht*A1=}d?FĢM cdWOrL+cHJl]\sl;RlH$zp]FĖm}m[,O:F}rj͟dwiݖH顡̈˿vBVN۱q 8jmqS>WjvNHW&;9WA{Mq"Y#EM3ӗPjϰ$뱒Z㧜G~h~~SjȞW*hgbv4o;|H$ η"vNfCL1#vEz hͼG|Yxʇw3f&@79κvOYћpA'jlLbjU ffK 2ڔi IdiNR%il1W=Ϋ"4J8Ӊ]M鶵9) v6q$3[Q$ZoMaJpy2*B`0TX4!KPH7RMXݢHf_dFfϺ5XknII- z#$/ &9sp)Uq7麢q{HSLGJzYXoZI֤&67* ^ޛIP^-h3˗|{!HXyS{)~؉uD&?)jv¹w $Q$0)J!5˯Zσ,4B`lVcr,6b_`ܧL9oMทasmm֖UDY5?cđh+òYm؏{yDmy5R9޴/$r`f] ֱI$a;WhߎDIm}A.'ťra1PjBv'(\V׀8W(q(PnQԅJO2Å3 8<p!]]8:i-mM&Gm8"ΩnU:$)4OF!pmǛN$*vx>˂qFQh\-gj[{/=z3UOu)tl:hҟ8闽MIԂ|+:MP\{XܛBi4)Hd_ˆs#uSC}' ,4ױ T+Y D@"1 b+茨BYnh||y.Qm;w1#Ѳ|TV"2>^_>;+YYj2F,jf:.>qr=1W 59=:uFlˬv.3]j55qF-G^MFljc[LgiJ.cwE1^QMU՜w+_\c+%O">֎d'R4WW1R6pia0ǭfv4ChU@֪M!b(gûk\Zk; ~:ojtsuă"MCm1Z!0[uy?:h}^ogS :HѝTCGoKV|G>;-mMԆ$0˥7=5_ҸMr Bb2ݣTD7m +7qu#["֤]n[͋]PJEmD0.cr y9AukS\`#(nv<=7[Q3x-ƹ_33эtz֍B*n%k\_ T0hJ5SMS S;ti6Gs/DTӡ̈́O21RKzu׭DNh2'K.ݺ6Ax_Pq#˂gz4A]ttG1x{Km0ʰ$fO^"kԱ޴{_clM雊E!4)/c׫nqx۱x7DżN#*꺢({: ӝ0B'B"1(X\z1G0dؙN11bjunR2p^6,%x$`(qg31QeݏD)ݰble,K)>9Y,KdY&W+_[1/9N>bєeY/KL'&h4j4exabK2nm4P].EQ,K.{{{8ϱeR8rه/sf3̎Xe6YUx5_gaww16iɲllܹVeY"0beYa0&xb|,΂3 h5ͪY{8<Ne(.vK!R2+Ƕv: aDV"=6w MfUȢ[:+)s _9/)xDMN7,B>wn2לB&vǀۇ{TGWcx Q.0{N/GQ`Vdxvw hyQUymycggGFujɴ]4aü䘱 .#~/AuX`2a:hyz}Kᴮ1.)s!V91\gk1[G!ec5E_a;#{ҤѤ5:tۢqeUMwҸw/zƫ2~ vS: t  B/,ߛ[rh!3ZuށD&յ3{IJ" ,01NkKtu;SeKlA);OVΗa3|d9|XZ+˲y/$c 1Pd@9c(l9p!G9&#%Z18˖K!1F#s;;;˙h^eL:tY2]<ʦz@k쀑/o[)6ENi˛7RؔJ9ul} l;!i, ۓGs&os|:L4)>9 k\cNִkLy"T$ӗ_{c>yx[fͪp: ;E.BasS{Ȳ wprIG֥O)<e + %˖EO(*Qq+vp1F8srE Exܼ_~? o"^Yʛv!c/rzG@|>ރOfO/z7YUyo-5Ug˾M iEOl7 8826Fsy\y2:,y5Ͱdxvi*RQ7^EэO]m(zӋx[]UIJV=tM6xrdUqI-p^-yIk;v^,8u/tv&xq66ט6KMZL+x F(PVK~v&jo.< `{WbIu=}E^ [d2\hi-0C.n(̆>G سK/~Y'֯A˿Ui AaYOIo:1JXU:&RSTb JŒZUzM$t̊*Pۜ%آXN~2ƺҽ0Qۯ9 ŶdW,cYwIID-0xKO(ea:b6It~8; U3LjeNwcs24/;͖VծL'BrYxQm7ɪ%7ːgp\twe<~< >r[pP' E}D!z`gVl;7ts=ܩ 黺>q"\N_~{.`4p6j4>q[o{lu[4}J4)uض %4͛7O@-4c+ߥyi.#7 f`cf"n¢,Ō~ DlB%ԛ-ĵI3KL6$~, ~HClʺ+|S?$n78kPS/w:e@Zjx&{[.Qe`1}Q%Qg(ˋ@YF(|)4!/l|a<4ik"JA6j.Z4湶_R*˲Jpamp^K!lN,,8C뜣uq, LhlB30 G8v(b\qpGnH]F#\t ȖB/sdrQ-΁lܔrCŻՋy="rǀyx2d2cxsؙLv1A!/x^N LJ̊4XcJEX`:ag:瞻:Dlmh?}:̏hv| /'/ˆc]!g-a90M/o$Ԟo毽I频vuKzDiWGSsY:応3$J@> ,:Op焭^N}H9fUI,h^}#ҟDG)IѥeқXqƸ4Cmwu6b@"> c ki>#2LSFjE2g|/ߋ6ϖ;rd —_ IDATUWt|I%j/]l0"AwW,$Hw-D=ui(Dxf).O].Xz$G!>ݙ N᱋[߰(qU*N>yf`eʼ@Ϋ]$QΖZQ,jQy8=sؽ: E08-01+rQc\x\%"hdE9β=Y 66U/f>OCeY{Ɠ>=w 8w](\n;wwדPE/dJ1N9#p0LQT*^et, p|͒c,Ksv޵G \밚"ShB]N Fet﵃DQLL+qx0[zw27޽RMc%1y1GG!F[ϳe\G9y8C`r.NLpP.P1F eWbe-R|L8EBl&cK{<@սBֈsƖDŽoED@R`({7s;qBc{VPB X] [/];||<Si19D.z<鉮 +c>5[xS/kSQusq4崸Yv/LX}/%d m=DŽ^D.iLR3 Zb!6u .6:LlA0΅?VHbJafB(cphCiy^r(l6CeL(ʥgx<뮹bŖ֦3#:.=֤AUhgWoPڗʹVkg)duZsت_bz;'۰7|>o6"ѝ|^Y.@d@K0Y@sI_ò,K.E,z78K䌡8YYؕ1~~Lf('g1gclY; :#K%F1|鑊Ѵrd<_Tnu=~skIwg} O|ғ_89e9˯W\th~g|y%K)7? ➻w( \qU/|x.y|Džeg/dzK/r|z/Ig ~wmg1?|ހ|SJE@W/6Q̩`v{VuC;+0k(DF9׆l [D$V %/rߢ$$j>nd”=_XlӗR0E ):m znMղuKqD-("Ԩ^FhR ##5^vV5hbè,16xFe~ܝ֎Y xggʀN.,NR޼*SzooEq<ށh5˞yIP{)?!qW^Ȫf$RRy_Rw2dEM132$O?5"jmrdB2{,YYP vÖcc1l#,8 pV`Y5_"/KN2IY3q4awy08Y"ϑqx9as^f!{8::l}.?? ݓoɾFYrq's?6ߋ_{nO}+fB:>~w~wI|gNSh<fw;m,2=_ Fxk$$:5V'(kt7gfgx<:u =zPl̤EUԉW61s] +m1mUפO3Zf_`6Nmʈb2bBRT[Xo2IvI?YQ+uȋ;1!xғ \ܙu4IS#U4sN,T7Cщ:6|EHU7dQfHˣbL&DfM\Ehd[\G,4{67z(o{ǩ7ߗz߭\/>9Yt]g ҬZ-xH=黼Un;6;_$i3R-xz/0 Cč;ZKҨ4uWҜ}?72Gth,#h}1ӛEC %u]A|`eIEB=]q Iz|YbS9G tYi>x Oܿ6}YeY~/5ԩ3Gs_uLpoq QԣV#ҋ:Voɓ K"__nUY>/,E˿)㦻dW>DՋQ@pEz aۈύ:ZU3w̭5 R/թɽp樌w4zH΅_ej=]=kPUUT:0f$yг}zc=>t|@ tإ+vFƐc2s;8۴]Erh UDZN.h'q]`%xaz[Z[aqK:"%)_&|ĚRg'#!b6yVTJQe6t_stx(e7~Gӂi%)1~wbKg}9"YCFP$s2>l[v^w%Bk?=L`N 8DfûM%%В%N"΢b}KB*&:jЯQpN@,bm/&1bc":[XIv6h6uZG"D,ͺFhM(R%uQڻ;+A)( :$anxe-[I@cu+y:}s*rmD1.\|x_z)'VOGfd-ڵlogo棟x< Gnj-ZM,; %ƭ?udooXhUR³yz8*q^au7L֑i7^MW^7kYc@R{q שoa9q }OH 8&9TJ渡qvr\a˯b8Rkm?o!m2$@88(ӫ -iyeMy20])o%m& B䘸\nK>UxnĢ;n'e3“?rťq\.b}rM6d[i*vEq|V$֓sY q W+0V0@jL$%"Ji Zġ%mq Lbsz)% @fPX`u KmZh18kQz\" dٸ @ơ14skdx'%ͬ/VX$_LuFly~ Wͭ7h|?fVknVVO Hpa|G~ bQ9\-TW%}\/T{zo/սr^a2z}OVe} E=vw"'1{Q>J8xL RO~Ӡw%LqFdfʻ8JʧG# J-|b'E`V݄ AjpxthwsFp.ƻNqї*2Y$I7>qE! Ǖݣ\T\bZ=vJԞy:f|\IiT)1n=*łb6%$BH(&U 9t]&f^dD')h4t:9L!ZPn#m<" p ų{͊'2 3kGc IXP*k2RN)1&u>L (5\T/{'$>Pʞ!$ih%`zH7JH`CЈYN5mBU}"p@es_])Ř!4QCdʦZ%և=LEήJ䠑rU*ɨGU'zEMX0v#{JJ?gSL^ ? r&!41"{(JLWR8.<&pPtw;5eIr܀KcFΥ8I1u Z'Pkc$U$fw.9[!)q!-%3Ɛ$q?\Qvs^/aDzuV3?ɋc` 49臸Ix"v%n]G4^Yn9:A@X Sb2&BR%[lݹFc,gTr[!pzXBN9Lz[t.0rTEҋz Vxt[1* lfKVZ$9ay8pcظ??.?$q|krzAw&KQ/ KXk|۴Zm~B%:31q 1fr^2MX&RǸgl۩ElgLvwnn IDATq~1\ FL]f^_eq& /;V>>I/qoA-1K,iBEXki6cccth4zn_:hs'Vi7Qp?>(YvY[-8v.oFC瑹f$"$AIA -Z~\ҝmϻz(;_.q4- ;,t bm@wmo OF[6C>Ǟ<.< A=MސF[з̡Ⱦg7l;`|+?~g!OΟ}k| ܽs; ? ♏~%޽'3\|i3nG9?}qpT $d. nHq,^HĝM<,ʚ*[1[qyq9Ooxcw0"9}v:~&r.[EQ4T"J"ΜZeFxWZGJ)0M{8 %dX9緕 שd NC$}`UJ 0Ց?L/qI 4M ιP;CJK?d:Z`Т\r$(cbxweg΂}D42!qbB[5K39_ÏAm¦,*֎NBh.?c>cK$)V@*E/ѨM#(Zo%' F)GH7!=bT?yֺnj5lDhlhVW GCr(b A5t.e絓.9=VfƘ>(nzNl]Ycn\O -|D"HJfJ[(gâ p(Ϝ֛MMueoDG&ʼnE)}IPR 1hDIJ$Z2u_V>F"PUx2Ya20*ӧʼnO(uXjKm~s &VEfCVX 5p2<Ƈ8wۯcjಘ׆1^`qi&heJ#(4Z暚sKWdfC+LF .IĬͷ8TG-L(AD!i8at%k4%${ |*_Xdiye}Q\(I rx'9qbyW`ɧ>gFspr4x& hLk<翸+J> 9#c *r/x2IRTWR̊ԕΨ"A:Wڣ effYh`ޛ΍uO-(s~󤺇eI>kɓ׵֬tm|=(~EH M>MW2%g=fnnu۸Xt>x8RkR=|Bv{#7dii`Ѐ);_޲}Ϣ3?INQ5(M A(C-'ZjDΏ5; I-_뤖hEV# \ݠ̣NvMBX"-7iwZ)SR!SX΁1u67#)63vM'_dV!DКbo2}ou<Cxz/%pXh=PҕI><*džPQ R2T|P}W%jVV!U:cFפtb+ˑiUS+P:7 q Z~٧$A)~Jj.~ Y9Ф0ѱ%!ݓW@4MZN(Zԕir,Zafkc(Ξ>Ac|T'̐Ya qlefE.өHtY]XZfXnEIH-wbӷiRaE?S2t o@p)o88r) zZkcHlew(:#=d\B䙏 S Q&Zx-$;O?x83 ){.AP֨wC-0w.3z۪@YN9E[!כT(661n(9׮Í׸}&wn'<>+pԇPUao"Iee)IQK[BX4d{{VXeVDY_hc%QgcmWu7۰6&ˇZz,91c΍+&J-5AEAɸ|=ȬQ2Wq'qrs-:d`T~{b0Os-U c!!l]SQaĄm$!t@k"h~VKȌ}yO|ⓜ{qڧ.Y!X! ,WŝP%$C&ܹͥKxG?QvH6\__g5\M]lY|b7߽B5\CO.w`.„.3>\ l q8kYX |k|~S=w?q^7~2tSO= G`zx/qZUk] i&{.Oa (VsUWc+BlQiVY0jeZ}ctR᫏) iʨ ɬ }crjgNjx!7":a-3yyd*s[ė=lcuev$8zQo-W L{8kI/Krql:($w#HeVw+R޽'19J4O2qp_=9X ޜCEf4RQ"DLI4cYGM+mH'菍1s&mVÐ8ЃYY;KkGWRZpΡϼ", |ӟ?@tg&h mS7t ϩH$6YgS V#(OzHsK 4 g P$B;d[Y8BhY[^ (Fa9G4:@h$YMgM|;A E֙ES9^ $=W}|88ܫTRp/l{4K;az ʱWE-(V}dbB`)l'DTD`Ub5}([EmaAdgpC2FT1ߋ%չ%umZ 뭼DY;L{D=45jan&Et}$Knde2IZ1k-Z8ϼ{oևϓR>TXq{L24I+ qdj,/`@knbkõk7ki(I@i$B"+Dtw6iQ7|G(JB q!?bTJNK'N_"0%t?aӧ%v"U,XoHǭWGs-~CZ@7I%ct0tj(fVukX[\*O~YZ6M.%S8hEL9q]Àzv$v{@-vr"ՓOloMvCſ ΃&O?Y{qǒ72IEBnLLeLQ]Q|3i4cUXjg=nF5q%dߙBO|l>C}?Vyw{TF)Xct$=..edT"Kl6QJ ȺBࢌ~ZqXg6*4\I-°NުIs4ec[Īp ;m˷an#4N`2ru}̹.}"<̝Q &IƩp"'hڄT$-n_̛_} (uKC$L˽^D ˴ڋ4V0e "41g@D;o%KDq#@'?ϱx~\A8[fi&Vif$lx~<-6lhzH :1 IR ꧡOˌ1>>`X^YoЍD I~#J Ļ@% C81"$G>Gץ3mY}|Gy핗y5:&09wy{I}CSX\vCӥ ܋JHNEͶ> 0q}O6j6IHď3m=Y-J7|S哟UiX5I[rJǨH,+P~(*4;䋘ecی?4Jl^2!~E*jk0IG5fus `S F3KrCDdO-+)tt,aX+ݠ&N ee )nkףV1luIlh@tn&iТlsgV 4S2x(gu,=B옲$"C$歯ou3ޝYʻMgE'<8"8q MAi>E42f:=88YL( ls9ԇIM1В[ЩSG'~O=(^.~[WAױV khS# 4NBdåW"M2#EmjPo/s7J$g>éǴFcQb`KO |6b(w/=5\z g'O,+0ڐDb,w7 B+MJHS7>z>{6+++$hz`~Zby6ڹ3UB7Cۥj\ݏn7F\I=gxIcOZ(󑘓du֡BA*XZ~̫>M*Yzb Q;00YZ$.m]^vCIDRwlvy-\ a'}8pAꧯbsʻ|g>}OCȣLl_%Vi6xCO1Wu@#i" ZXظu:wYߠvJdCz/9} o;mCpyg?hBb)X\.OC'1hl~sy套 LݻH`Xx|Xb$"ea>hܦހT/Μ8ɵ4C͏^"HMFY\^IX: 8_}:\ô5`]81uMN6sQ;1^Qk?f3cTDHfRJ&|SWM-3W-["}"p֘ZV4[-S{^|):`GU1q4^Y: p kaV^vz-g{Z &NxvpLV 5nK ,& .zPZM$4sgpORkp Q0ڳA?F~Ӡ,HOLg$ظ4}/ǐLڞmK5 DI&o?RGWdԮqf /eN,0A'+C2eBFu +J z[1,7nxѢTJ>9J|?'$=gE '>!8O\~X;lmmbM:5aE0du~6޽8OcnUQܹq7FƍK#v:Z&a=n38IjzlG o <4΂5V'a}G\+Q$2ڷ<1q{ȸJfGd`5G*T/'}+#>C H ?5@*{n'2ey4)Ty#lG_AaѰʇ3$Aac+#\h[%eOsVEQpI8ډe PXouYYBs'ñ糟 AO.1|ΒYƤjV|e~}rZ,.a&KTe]סSwkRQj((qq _utcλ̊Ĺd2iޤ1+'G2˸,e1&9?!I"|<ق\8m/ _F96zO; F^sgykV MhqiCn^ɵk/ 'Z IDAT] D"QŜ'xU)) 909YB+CykDd5آJ4 hp[A_ nw؄+9vӪFwso=MgX8#$Za;q&0!"vu~MکzD+:ځ0IAqf__$XX"_SC0A=}X4YLas[/,@ xj&[8$"QN*ko0A9mBPƻsj*Nfcy8C|O]O֥VneJ dM#xM~/6PiX?E[~\\|Qk'Q;>*tjq37z ofPY+ӏ ۬ߎ0Vqu~ꡇY_cЄ>&V 1Jå8Kk+$gƦ B7_K 80*C)kѐ8V{. _Zk$]:c0滷8qz |qb{^WX}u$ <?pNYE>wW <ͫ JRw+{m=5t<9a̾_{4Y=BV"[DC*ܢ*TdVu{Tz}i\Nz9[^w:nʅB*/ 1pZèJ$p{OrsqLb4h3$IJy*s+bpbuf3DlLЏ]RFYYBF28特+br<@XYs[iYkQaj‰Ei(' JoNeE8OYhε9yxC"lln@W' RRHtQ/Qk7[?<xU~_^x/u~qzi@%Y;y۱Q36Ah ԕW_#|g mfBWٸ}V+o^;W896h,"AI0z?6R Dwb5ziEC&\WiõKWpt3$AykRٻTO1)2λGŹH I"GդQi4-T&:[-bf[&os8DXK'h9} <(~iN" Ҋ3o8XmL']g>~W/yN=8akAsapn t25DczUzO.:xܸzs,olx Cs6]j.mwͿߢs =pK?y7^ ^Ath ֠ÀQǦ^$\$}si[jlxmnʁQZ)uغ/~|-ib9kL[`gEloM?z cĂQ g@ՖX9bXP sm@۳9GE)!;:QCׇ'[Sk z-ֻXZhb7j}^8p6?(g{%b]~7R(/=;Usm?(QvcL +cm;- ) h8)Jh! qwJ+hEh7#\ppٗW'+%.^O()_DHB% Kcaqg/p#,b+W15M"*MPd,&Y)m)҄/McDp[qh#ԗV=o@el‰sQ-VO8.!Jnoл%cea⣨FR ͫW_n0i6ovCC^?޹_uzw/_+_=zj8qYC1!;Ԗ|lҾѬUM}^)WA4 Ӿe\*i{pNW^1 X1QJ6N]`'4BLw VBp^3$z]EXac12g͔ߦK9#‰o+&9h-p,'B7A׽Tҡh bITuiYz\N?'書ۛN}.CFZyMQk4i4&m:666&-i0ls<3]4 d{%wӚ2syɛD(O~_Ǘ_,̵E1*ٞ3~융|bwso>a'/kBࣗh'+ܺgV5[\×7 lb5 Wioo_gN qAKo^E[ J\Ic A j5w6c'x4nx:676hp(Α8/X+˕˯s&B`!/26t;'# `덒=~>R|8lC~;|>g?ʼnɻ7+_+CGtT]XxR ;uQ}";D4{coHPU{W<*J:3dϲ{\%ejWH7B %mZf" D +Ei r}v# U5Bj%P\J?&8,Ս4FvzndM\B?(ҋ(.$`Njt›QJ!Ve` 'n6M:}$Pъ8Zk8"~2l1'ʲ?O!)(Jc-DPIs磟T|4=e ƚZ Wy|[.u;V͛79Xƕlߺyf c9nnޢޜ#\*Ihܾ j<яZ;B؈W_oZ=u%VXIsk\$.mэJ3??OńaHd,ZL&q H=RuiEsEl67x79't28D&Bd1.= 8X#XVFk66j4[-,.DaB8˻ޡ6 qc@\=O(%~mb/Sf*qpUpU_Sg~aZ-WN1ׯ_k1ׯ_X)?)>~z-//-(`eDaܷ7TUkP؛˛YlP,.|\Ux=h3TeØM1U pGPyV^*Iv3jR3T+>b-:f;f5 "=NWъq >&w~])Iq& D- 5h!64NibWpβR:XkI&>('Fα$8K번 !É'Nl $u6y̯F-":$N#o ҈KJJ M Y={;A:xk-p[4?3ВܴE{GY\g~V+L0! .)qPsDg%-W={ȥr"%,t!7`LwLϴ>#2W5ӷOvU _~~ ryFFGvAp 0% Klݲ7"Р%Y%IbPYSq`-|H8FmDؔi-*eO{F#Gq*PPN/B^_<2P[ͯ|+.iؘzuHK4G!?Bn I>)J3mpXK䃈o|]$ؼw/T mb,8$Qaڍx@S% B$aŊ"P+rbqUƢ̈́:1uB-$ֻ3G?pgVO|3 KG_9ƹرs@˸o>? \J]ݶ}ܵnyo.Ҿt[Ԡdύ"د6o+C5o?!m'&aYc営olU*gfPn[ OCnXga}t3yht9xK6h9 b IR' l/KVʻk$! zl*!`kSSS+/I]S$h[`(H$8J Q;Xos;rӳ_NyWٳKڄBIJuv_!,8q SLWOmbm\;0 /ϝ =s0ؽg?xLL}_y\rBȁ{>I~_y+zg4n?u{ u81BWQwl>ڍtqW 6<];dh1>߀]VVY> |jl5{՞[fZhwԁoXsel0 (C!8殛 s$1JDeR1 @F|nz)q $IҌ}MhDxv *Ŗ3+5Ą\tcZND,X' |Hu@D,k蕕Z^mn"IK*ST.9sM$LRƢkց&\Ry c5+Qa߽F08ȻzT<!*u4 B`D!&Cx7p:6.` y0$ͱgCׂ_]vܴɃkTYÞC|]s* H\Vjmկ3g߹6œ Q)F$p \mѫLūpJuąi)ik*h8I!Np.F)sX\wm;`兣ϯxm'_H: ~7gcc.?Ng||x3&6y۟P,o/{MLMnc/[k\|g/]?c޳-[q3o |멯;\x]uU~-aLo}{תݱ~Οwlc['}cwlvl8[M>l[e+xZ'׺hze|[2V7ˇR Q${N6lFH$M 9շktes ZJZ1[w,ڕBA@2ތ lx`Ƙ4x33iX+'֑/Di&h,t،G<}>-]¶m;)1s>Ϯ]{x`tt'>iߜT-kozMf}ˇ>O~oH>gO8yK3'$IyO|gԧfaao|I>w{)~g;v7j<{AGzmVFY^ؖ+֯܃wͷV]ǯ7-4m=a}<+0c-XuխWmPfJ]opi뗾 3s}XOk=GVskaMwuc꽐N|/_ü \.ra*Dq wuGY#v஝},;R 8Gb"I1('ϝbq={8eQ.] leL~GMWBDX FAQ +nڶWJ<7y'Rz%X2+Fi`!B& hǞ]Tq*[Yˑ\qJaC9a{SJ-n?so3gFZ&p$_'k7ppWkURfC\x+WiPgb И'ѨuCq,ͦ=ݚ쭥42ҚFnxz\if.m\8w/1c/]-C8g)F<' m셽=6VW0l2HM87G2q΋K"aT:R=4pnʮ^̕˗瞃p}S_ɗY\T*p ,|ǣc|b_> _s]띏8t2|oॣ9t|N:׿$_Ǯ^ 6 IDAT: ?֨}%[2Dp6 ߽A6mrgn 2`懑a[a%]o-*T3ddV<U}audrP ّ`ב*[5{djձ^B{x i_Rq'YIXj "KuhK:Js gk5*vW.pZz㽸5RGK5 k|uڳkhyv,Sm~V̜sIӃF #$A16ZR# IC6w8ɫ0eJ&-3}<$pVW"qUrmb(pR-z#L/%86cLnӌǸ~:3.2%P B8 H8Fu*( 4+@ǖrm;ႈ)K҈9a9uYdℏAeY:'n&hv 8u&^2M.*P\ P?ÍkWёBxu3ۺs{۶:} w}Mc K#$ 5W/gW\/jwݶm;|[H4LU+3>S_v P*S,>bw$ϕ<D(X- <~픷+MQGNP""J8wS>aw04ǍQ;($+7g`SirWE#0].nkÎn1`_8Kr -n ~ c {vC…s{{OO\$+Tx}.nܸ@̔wqw] p077=ssI*Pb։Ja4ùn^70̒>`\Cƺ $nZ1'9"KÎ];0 c \č+Wqoocs"h/p.14@Y2Ty( ~[06b:>m:ҍ.=ߟ8("1•+aH^'CoG>䂶VEjEe|w"GEς$bn~-[RT`9nxS8 v[@^]\`) $s5lo>^?Jۢ] .lݵ+;nej7 {Q.V|Gi 8lb Ƨ*\rkPD+ze`QHWHRZ,1C4#$֓ A"'(׉F 8MW/s9uv< 6Odnn8s$+6m±^V(b}W&ÿu}1 az8~Ο=Myͣ~?^\ۭhA9d~66! |Zv6̱87'R}d}>loזn_K}i7kg[Xs_6GzRKb6ϞƆ]fa!&sL H;Jf%v6Su$FV6L JZ4czZKll̵ JO68M?]J΁8c 4 ($vw;ߍΗQQDbќ?~ڍl bp <$I(878uggLNz sܸt 05$OؼyOKT$D0re³βz3OhO dr֋쇩3mXz@iN;_gP"`ăf02>d8K{_p!J  .,,,| WS,0z!20UfQ +PQmi$1 ;|g.0 (> t(H ܻ?[ď'^c'+F왋c*Ԧ z#-W4(ܵ]wKE8Rܿ?7gy7377ÑR.yxc>'S\x~5uv~?ʕK\rwO|y˶l߾ϰ=sc/]{?عO[l$I̛v>9SlڴkWp+/M7sW>wo>0puGyݠƳGƬG8o6ʪR 9ږ.M[+&~&WaC6=5u8]}r^G6nc\ u &i$ԝAJ4x%Evn#8ؘ' 8ۆwtBپ%B"m!ndjmcIhq&IUW,b)OQe^a4f~/z5&+Bpsl Q8@4^9OCھ#ZXsŗٷc7/7 /yVƤ #6o+M]D&:(\ܨ1A2 r+ U*'+^(E+!#ᕣ/j9:Tp֡P*scnރit+egu&k@YA&a5Ҕʊz̕ ED6⢇=?S%k.r1d ڦnKk 4Flz_VD6UJ _&v"J!4Qqj &.-CE9F*V k9mB8i9cLzL(a1qC*ӨUQ!9>Pⴞo~F? G<#r3Nn6^}ܱA":NΜy`t3[N j`KeKkX ðP" jfcu)>%.k_ovֿӭ;:Q:˼W͍qq?4u*Į9l1l7X'~-P)&h@A:2аR|ޒa=Jit`jJ\pB+B\aCqV3ϰo~ wm NiMXf8'eV%\|qY A}}EzA'Biă0G o=DaH:G@@u~cl|Y\v2 ׯ_Gih pMf5c I4ۦ[ܢ_{i u@h_+H(=V!I9t6%AK@Jcq6~i.rĻkuyg8*.̣b Nbև}bBR!cmw}ު#cͨF!,Ρi9254e ,,vwFNx\^|M=X}mx}ڐK=_6Բ[ ZXˋ0=;n=AIv-pe!es,j`U+}2a-]'CAtg#wvȼOICKi⺶휇ĻdPeo{wbBUpMUOǡg)q$S]Ќq\GnU|+cM͛zvMŐf z>Ϡ\Bb4bz# I<!/ :2V&$ _*r ##{[xo}~aZ/IԃqRDbav'Oojogq8ǹp,. ;QS(q"(%01ID0v~/5cեz /M q`Ӫ/p)*Ofv*| Q%.uu26:F.Z.qE'e,VZ Ρԍܻaoq4 |"J(<mus8[kQNj#Z.eQinZkVyfxFjJEB%1 H48r9O#R[ ܛ7Df|.?sCǩkcXZ׃ΰ\8T7f]xsݿUb$&GM;J}ZwWhӓ[gl3{^;Ԟ0v^{XTnX!wr.;dPl_ a#O3@WY^?ͤףaz})= @;ആ(6}#\-А pQ"ޕxUUES $5B+Llf<;Cox+AX`td}{}(Hk #ju8 OV:>6)M.A hgZ7(aޭ2C;J,"_ȡ s'Q 4.(B!8ФO42epĔ' ӜxEG֦>`+yq"TI4D#E.qO)yBtNYc)n,bN=YK."(I]/"xVDaDp1aKq:b `5N!!a#:SXQh|lĦt*B1raN<҉!3srz#T!SƳhGi+2@ØW2l_8d---`TK8HJd -uw#2VnEk[Yt7бGP,y8D18o da!*YY˔cQ^v О%9CprT3][K ʻ A ??Nh@:[h,.}v' - +޸΍Q'ϓ4$1NQF;0mXjC |L@Gb3!ŷ;i+G$IqAg5R4E y+$B ;sgD (ˍMl"pqH>$Hff['~TQkF~sԒc%f^R幧4R%ʺ6hA@ƌ@{T<6g XC}ՁM1M=Φ1A\ qԵc\6D b]G >? w : -sAT@> B"ăt*UU(eږ( 剕g61"/^`Gqׯ\cIM+,[W3 (J$F'6hU`g_?GߕSvt]g2B,21@Cytj: ȍNέ~nc=MzvlYx9-JV8>\h\Quﵦs6vXwC\ JgfŁ:ܶlzT[u(jG]i6R:ͿP4$=>`tTnvP=ZZ64a;|>i[x:alۂZo΋Pޜ8!9đ+W;q#y 8!P)Ilαmr7Ba4Cg:rEvm98abYq.A"RhaxLIKz00FE!ǏB\re@N~bh,1 計2'@T(QpJ)(banryW:6e8{}PY <B3\=wMoW+/ܲuv`$+`lj_9:9 q,>[>i(%r9"%3ɈgVT+Z Pc:Soc QgdL,444a2˖A14[}y?{ML޷C;֬}ͮ]~V*mL۠nH/뎛V׶C~cweh*ݿnaT'C|"v-[RZ eݯCo9L9ʤ㇕6wGg6| d# .l"wGy5.^$Bq8Q,6jލp[G9x+MQy6F'زy3篜ǹZ^4S o5)TxY=#MQ% \|3Dcc)tx|%B IDATZGmJ\T|L!c _ٳ5I8w x&xH (Sz#L_W4JQ*iuj6{_*0`7m" CbλjE$`,JK+(HA9/d%NahXb(IM613}ͻbp LbI–.L L_VyP8IAM2*x #8xhT,7W.a5lbH!61N+BzBTY.R.8ye޾@<),9rMSB@"^#PpR0ш$b"uy0$ f<1 iLYķyVg~@>y1j`!^ .ֳ>}Awn'hQ.Z m>J6̲l!ElC\;8:*36]׷huC6F[tw]Yc`8vx3vT*. M<ΗaD{TBln|9wn˖ ;M ˡ]4: 0wcǘKAT猿&L.ʓaU`l'!Аl{ܔ4h^wشy+qbJ9S~3σ1~@ZʔEURI[.cX\X%ޞErZM\7#t U9VLB^~GhPS){v(n=SvV:Z(@ Tz-b3X,:P9&ٶm {78n?Z~;33ֳmS[8XBs s8瘹rxfԯ؃n;IĖ|OP"(gqqSyp B, "[neqFqf~~ҚQ5u^KZe) {{OS(BPI C&'ʳW6[ÑXc)X*!@CN{D2EDn۪x֧EHFxE\??u fھoy@Y+E4Z)&6MQ8AV*aDi防%Aӵ׵dztuTT֯\$QaAg@ kIA*;62\4 [K}{J;g-Kѥ@n%zFhfT0l˨z A[Z|Mkɹ=S\ݾ0ʵ1mRWk|y{|}ιw@@h!ͯ:Y^1n+-_^o)oL;N˔8!B1Xfmd6o|I=}FMPg:q,xoHiv@+9yI' #!&;65ı ^B-f#X]$\tSE)JgC)$B@u8 ȕFع{" њr51.9si:)jm ^k[cO|Ll`aq0<Ӹyޫ؋zĄ :ELwDdXJ3h2 Ibr=<~ b3O?M|;&BZtגկ;h")04v޳s3fw;eκ@ 6n1y9w/}kUWS'.Znct/ee~XZ 73,^Vܱ{ >K1WJCs]vPjWAkuh*\K܄'^nHJV*2iPJ{v[~i;զA!#7s{i;zw^ h s+-MX.]<| ΃\MЧ 1gQM Z 5$R "c+/9ǸpFPNq5Nrkr:+i B'>&{@3ޅuNT1cR-P(18<3צIq*yP: rF{\bZ,h ٱkPqBȹ9܊%|bi\.\Q]K/^">gT-Daʻ4``u_'Y‘4"* ig^qϽ!| Qg,ulھ}ceL)5[rP)[CDċurge,L0ɻw[P='ш 184YHbapkM3Xm۶7b ^Vi|B#tQ(}Krݍ1LJMo?lSU1"TTZ$kҧZuxkoKA+]{y*7^Ž>+TOŭZGG~gKKVS'Cz|)_Zssg&=&Y-xwXê^/ڻse^~J".{&ȒIfMik~۲}{ŦL7tzʫ5n4 lOWS#)p_}1^8oU] 2ñLqnaدKf-.\[z?34ڛk_\Vw9it^ `?[X/=YK*qR1έ,MsQ:/c h*kCG(908i`T k~oz=OPBמ9L}<8Qb⦸\eɭWMNޠ?ɢ4rq4oxTf H BF'Ԉ \t c|~8 eD[\>n cTBlJ((ϼ47T*|/>JTk0c$/)AUl=ib G Q8b#p@ &ʑ!g-9}<0.lP)@"_ڦ5()o)/ȢB[|]{*ZBH;w,:Uk4(ƒ]5<#FtJ4GPBmx 5k5ZZ5. ZB506:!GB0ab /p' B8P0 QA@h6+qaEBXgq6F0h856fh鶯Acmj dm-amf?_ ~?/`N}eSXu_Rk?;U<+ڮ_ǟѨy|iʹ0˥ݞw~?GozwZo˕-[k_Ya,][YKG_JWjO/7鸮UkIۚi+G7Rhriv\/{ѵ\q8Xslx{mmXVb Rg=\b%Rn[T)'ƈ+Ep(JP(݉Q#LN{0SIV6]{~Hzqcq[[ !z x7g,#IHN5V(ػ{7$ %AR]] aؤH9=5 Uh}T-_StdM\n b\8qlpPj%RS)0Vx3#q\!DbaiL\Ț$* aopiQ%M~~mWΎ-b99& i9buZ9N9m.ر !=}< b+<~ȃgMmx)\vy-yv/<~пg{hBc[4&#e^-oiV̾by/iN 6^ C2hњ@*l.68߷Kl8[4Iήsɟv8 ^4~M1*mε΂EycLm?o?._y/ 7ocuǬriH{O4u^zq6^K.ē[_t=Mo]vҮ 7_q)Xb]ډeCE_F?=wӐJCQ[=SIo]\n7r/ϳ4zYg掩b󍿋h/fIbdZxr.ԳVg.g"k~匚pgi[RrTA *8ӓ"n[_Fwo\RilbPJZ ̥x:Ze#.eYҦSl^Nt[o .8\;q:.UAV GlPD)0 c>!ғ$RJ<';>F623($5LW!Td)Mqq!(]9E%1ݪiZ-Z_{?|B T  I+p' MO_'OֈFu ʫtu"' A E]DƠA@.ۍ&$!նcq:8w8vEy8UCHKWcKĉ;;(U/Iy2aQTQkcؐNȃ2YJL S9x{ӿrV" C:S+'#AUc0zopN"8Vw},$ R!U> 7Pt:K_q[n~M>'>!&&kJ%{?ot| "#s6>Op57^m~ƿ?ofsmmS޵Y5ym?K/ Il}9+G;7¾-];>K_gw7y['Zk_359;J*>Opw܅^9ςs|ޏr>_n>erdQ=R.ʿ|8WRRIN=,h0ks_FK5/r-FC=ETMvH읥zwCѲ_Uy4xg__k7YS~r{>r9SO4鐴'g [u V U;T'xHA ;R>³+#3D"t9&v!C{Yv?J4zA+"pn1MѴwwcA)c( `,\Rw3vrtW7|7:RiƏLL%Uu5qxd0!'eB %ERȻ _$q `8bA s0whG:eP@ ɱÇq *I >O\t'۾ E$YR-RtTNMgV 'NI0V$ QuY(X#d2]ܲUEFGoy/k֮cŊt+;FP Nw>Fڵ=ww:.ѕk-qmͿvG啷];(gC>[ (Skq ]%-Z;A93:jwot;2ӹIWz%;SUܜDI9|;9%zR%l EwW_)2M$Zio!$rJS6qu>n azBNL̐I95 ^~5Z1Ơ(\/##+)$)d ]iCP9c/$]y\u;)|8]<' ٹc7YN)iI23$a:'gUR YW8F*ۘ)%.ljzkODcI^P:`w|c'HGEI{0kphg-B;<ĭox3l|s%D|ֳ<ݹ/g8:6ƟV6ZUʹ%aF )orE֮]ϡk A0&qgNYsq(5qX 5]Iu/u׿Oc l^ZlzX, Kژu5>c 4mJ#QͣLz-߷'8|`SJ<@>M`]g!k׭5)ΐJ*aXV,djv)|wM; 1Mzv{4<)Y T?wF: k.]t":3Tܱy>ٱ8>'sKFp0ƶ1Ф9Yfs+r9䪞AC*,1fE911ᱣtZ߫3$jDZ'(YK&P8ʑJ}ioK@xK?Pa)ud՚uݻaKV LГh4Gs`|l R8nJIJIfs z[! Cix84/l{8PH\l>OT)#˔ ٽ7]4\d~ a;A,Ae~]<J̃ׯC<,L|W7ǏL8:Fd2ĕ+(GE~2ՅOā۸+_e˃+F9)q;Z8sa@%&pr2Mtq1ܷIz{IPQoh2+Wㄏ_BH]V\l q5x PxL$dR>&PXcT"RR#{p\4a&&'>xkqBR!eckyիkZO^k5*щR k]NW:3~ZkFؽk;\z;?ǽK?uA j1Yhy՝wsW9Τagi&Kl} ֮[#y~}:E-_zS[;^f[qšffȇ\+K/$~$#f[mS9[`eP@*-D aK`#p!G+LV8QlҢ&*ą2x9!Njl>CXC{f߮\ߎԊ0EC;v~׿l VhBXDG#?y5^L8Xh,R{ktC{r@/T?9&dpt/zQn!V]'AjC׿ξH%K؝&Vcd^"M|lw/\yЪbmA@ &Ǝҷn  Nj38V2JSPHJVcEDLJ 1L h&gdvbJ`w0ۿP8 +[Q)V_C~(Qr[ڥsU:z ~h&s;p'\PZ Lh&B*u[ZBDu7>\*o.t+W3=5ɓ']on6\|,}Yj ';vQ0J)v@]mʅ^ʳ<4o9+O=8k֮o<9 `{0cLL_AmR.H-qcvSLL`4*T:I:H얧kYW5pfDRzz;"] VXa"N6Z78Qdjjd}طM*F* ΢BMZLOբJ)qy*`xd;CT.ӣ<̳=>F&1pѕoq/GnM$1%2;hrtL!A67};s5W"d&IjuɓH%^9Lt|h>1ra:I*q>_|1SpА'38=-ϯudj.JX~i ybaΝkk BjxVbQ%r5K%RJ+OxJJ\ȫ,DEPDdLN(-TOoEPaGNoa*en M^c{լNΦKL,ݯ}t1'Z,W9NW%7o6s,Ѱi ڜl@Z{EWՙ,$= SRvdwRфZe:|u,;0.ދ5Zt~p#Î[u0Sr.T,nΠ_d1R_,mKgS5A@OO\ q0 DI<8@74= \TF-*鼍RkB4]dR\* i S 4.BHd#F׮$w1Q.iw ;%ϲbZLrBl AI#jg7b䲹lk Z=;wyݤJXp`xt%wP— T*ry9I *aWu$!)* .)`BU7ij MƗPcۭ\;ve=%M75a@5?X]WM7-Oѿcbb_gކ^G/xo3O_|˟+ovݯ}7f/敷9'޾~V^ɓyKQTnO?a\u]z-<ģKNj5x?O~~5oK/窫{Ckc|3?~o}`g7OO4%]T=gn[qum%ѻ|.9e Ge/Y zOE(K=,vw1p8)լzO}[ʕc"bZ˼%*VϓvKGBRTpNUiY6 @Z8S ;p=}5:b*4$F 1t1aT&?s]^Tem[lx-T>RC[ (Ũ*h#fXyUۋVc wDvz=dl)4 .YBq=*ΡtǩHg8{?H:Ca$n"$XRXɃt=2?"׃^Xk _/xrT!%y/I.w>r<< =xDDk (I)*qNXg (T=[M1q̻w'q lQ&Pg[ɀ(joZk[)'9 6*gdGWލg?ɞ]!8 d&AF"#tC_ ? L*Q.tBe{@?c`dbm艊}t2aephDWm6`\[q㜏Y#tP(y j|oiOD2z9->q8u'>L_ ox[j:t럒w/ΧQum];h2;ͫSYywsnDnt۳k+yq l{gVy/, zV/bs~,鴺g_,%Yt(wݿzLMweTa:fzfW) H)J&~h*+VЩrJT<=]&79'Pak.9P.)>cIdq%fb|Jafh*?(P EZ\u qDgbn|ko5=ɛ&ym=Z.cǎbtY2beKpޤϰOi?;<;5/R rAvYUPVCg0̞;;-pDfK߆ڿ5{AĬI s'秙[ݼ[kplouflKR.h53ӓ#. L,u(4.i"Ům;H4JRrU׳~-=KGTR=TD! IT!?ҳ"۬0Ǝ疩s $ە9#P*}`,(QgU# ~L:ta5o}[*%8"RJx y ̵ y2X9FVI/q@v=ջH; 'Bl޼BBl-F8wbJ0>~c =8=;]RZlw>iIK״ԁ` :P61J8c9r 87'+Rx :pxKCc㦾D5OIW됬ش8U(FMT&2H! %eU pŕ_~;ozXv֬ꫯ&5)DM][VI=\Cl~i)9cn{Q]I Y]je71fk+/%j`")Iy5!' J JHJ TPr5H#? kj2$.RiPsؕH k90@ٱ}tzn.^cJJ8'9|({pJ3%:r0H090΂L(T*gfxWh~CC5K8H$؁#O!%ׯ71S!('½ &Ü e% o%fP|_I,cs`01V ìo6\ kYmI.@X$5͐N8$$"aHE ՞%iZHzc0ưs''gMOoo/9ue'Ax{zj[wHc:5Ia04j,>c Zk2.D!;_APB28$q,. A9!timuz.~>00֯>Y}x~v񖗴qoӮuޢ}T"߶_[m=m(ŗb`m=ke:[ (9?΅b|&Pے<=-i7)qAK-GFYwt]w|]mcRͳۆt /Na>=4js3γ}F1JB#DB$d NL,cEzW%BITX]V#7(PR!dGYD<3)~u$izr '#"d㺵\f9N@ q澯#;b`Wt'}E9|x)I&;HWWPT8zdJgSλYV 1QIb9,E ;+\@JKv Obȅy>G*pبa`(,׍26yBT"61ǏS"J%VxvVʹIfe0 k< qB \i:LI6H'TepֳD#P0U a gb (i!9y|h"c) f=~OF# vDJkWkAUk*`Xd:oe,;1A>_֧֯Kș?黚a.\NYiYO,}mغZ \8|ןn?oe!*ΤYw7/=BlwF;Je36 ^(|G{w˨,-گ/g?r\9q,=93SD)33d2鴷pjSshpQ=}8PbۺS4P2Hk*A2PONp'F" Ck͓:au!lLqj0P%Bdx\v `hhJT@!!fO3jtB0֒J۽:HM\#̤ )%扬AicOz`!pRʦYf%Ÿŗm:*c|5v@&b`42 W Aio݊!*T6d_zsya (ȇiʼn t6]8DB3y=`\v;k tek~bw*Jy КKܨifd;v E:<qC-KKu6nrj-}mq͹dq&8mXg4ΞQ3l]xC26n[],E۰],tdL+S_[fj̫s5Pک@6 /禷AZOscKr|-@3|RɩNh=$hj B!Q %fJ%z1p8%\0q+H2:%%5AN<4Șoz +-*TCKQ)"]ġ t8QWTټ%Cd. D8 o%uDqTLHhfsn؀HAj+AAP LAǁ{ 08a^IE\~K8|5?*(Ϋq'U%JN} D;G%GW\pPiBi% ?zYõVipQgXBxkA_>a*ˁ>x,$ 1yr 1UlWH):D\,ҷ@MMPZazz# jub%G &PJ<2S?|[olj!0֙~u*$L~ANW{o)Nڧz[oY1G28B{ ?)Ӳ\ \Sکd|z 4>x !qLLM„uUr*9wXw#+WSI\*Mys ОH(M9STY#!{dۖ'6"$a-Fzbk2 7ZE"E2@l|_)"~7OoS2 ('8y0"q7ZW l J t&Њbaĕ@d? R{ .+ O?QO Xz5N D P\v&NNNR ?{o} : `MRff2z5a 'ahtraem0>+h(c :;+X Qus|qJR#bC~oZ_U+4>Ct!j 5J,/0dxd4bI؅5Xx} bժhR)J8b S.!22+#l3l] : c~ r|nG+ 6ؙZi*ʜtDmY`cyA.erguEᖑ\ r ii$G #`;ϵB˯eb6N)9ʀe &>U!Jak8BvK0%cP76KG;NWUwO|9I`= $@` ~yxۀ1l,0$@䠀,J'I{anN=3t;;k?tW} *lU~Ԍ-\|%Hޭ"d紗eh) $%5ZKag/F8("K#(]%_ƚ*}*}ۿ_͆t'40"S0"$A: @ixс~Z)r0& `H)V1'im˱w۹A9X)im"sY:vrZ Etu܋^AI/A臱9cp]y st N% 8կAJC)H(739Gzݻvrʙg! |m0R }/P,`B *|$*LK+R9#ªn=.2AX$AGad};vQk8 -,b(V1XJwm[Xvf;Ƶ(E} n D( ZJ5RH*&Mr bcO/~y ^# / tfcׯ1 t"KVG>xҒMyjւpm7miPhq}f 3YybA4ll,T>RS0MCت^L|M:3M,gp߉OSZ9Mj&E3#c{^sccFoYɴ]Ĝsm$'sg+lESLlT*Q%8b,¡#d"J$>J(@SغVD4J .Fz%t+TK߶%|3)Ulo/;v CRZDqOW!VP *`iyeoƟh@@F@?^ H)*R$DO ) D %="֗Fưp"P7242Lwk+{AqxT"y ؽ:d # Y`>?,_+I0JXB`EI9 :дwu10-q+_6'6c`5\bh\d:"qM{r-$\QC~E;^LaOT8؊K'1I%KR<: ,[ch'P$hqlOlZ7PAi0Ai,/T #\0#<ö=.Ɔ$G&8UUy Ay}(99-"}E :3,Y:2.$teYwCu:3,^Ξ}:2r09Dբ*dD'3$,lCԯ_W;MwbId+Y4J' E<J5,ȓS'*O04+"ne ,gaĸD7խ|Mfu\}3>Ɩ]̼*4ܶy%n誡2mR/''ԜO+3pQ4L'睙9_E0"H:£sG`q.G"?ʓ> ^"W˖cF"%93Xv#lً5E\O̵ ButX exO@: (wpyVk$ЀGEq|c6@ {Ys+ǢBJZH$}C( JBC;v aSعm+V4kVyf2-9-i+7-9DS 0.#BZ;;?V2϶GaՋ_!J*x|sd:PF!6A.z#{q4T e-H(@O=,Tk A`H;>0c5a'i3\K,!~ yrǍ7Ao '$/XIHO8a,+$2QQ uYqjNY F.A†$]Aϓδ0u<l95 8 5Rb5=&RWW= VÂmO⨐V/&NcI^&-_9q*$Jh+%#FBHkp&dn5B9:8I V#@H S_R霃L!Fkn[k,V;0A m#{{!_ B5I !\EYzI<ÎAhc] +-VXd@Rx$7TmZBSH:hG @B+ȇhTQKTmvݢ21mhc73$d|]u ,x1nKj_YL4308qT̒) Q?Gf&$> "'*ܩ+V ZHc tE*7&VEI(dCC$2-x^G=>gp#078НrtvvemC•lqbA`וKʥsQ2D[(>!HP^}>yD U̙hD];vP@aj&?BHP/aʺX \(]Fh5vtmiS^L*v {R)=ȏo=Xt-ϊb3ha$REH0Ce  ~*kJ)+[eUځ5$be8j c)'I:wNnl"1+;e,N0y9;sIcY#Ɲ;4r>="15k19N~U9=Yb Os&N`SbL?M*cBFytH ,gb?AQqԖU+AD5Tc21k0Z0j$ɖ,O?/ck@Du&,^ĪKyt},lmaيet %FC>q^-H-_z=6"@HL8E 0[ }daղŬ\q{^>ٚM-`ݑ&\&GN==ȓuBT:Ü9sSyq]D?9t8W HQ"eނ97dޒݵq~ />ȼSb X)PKh6'[غu3BX? 028B|'&{H1T^`2 CHR`8\E \)ݽÛ&BHF#E_AXk-A"D v&<u8U+) ڿW) F5S&۫JWo4GxNl||1sˌeK&ri;244ęg_u²,^N1zSZgワ;.~0ggʁ\[||q٧2 npleML1@4i&,f ge&1wẂ*"~$dRᩧ3T&C%y5ɘ4cd_mm]T7>ngہ~K&زa6n@  Dѹ&\.8p)R`BB*V Q6? [lل Bh-g/0<27lk1\Cp3j]ٍzfނFAYI2 o3(`-qի+(h) 9:[1 ) pnBX.KWFZbӱp.m 粽g^"po~ s?:#+C2h22ٵb ,C`5kZǺe޲nf~os~ʭ?wkFF+ñƪ !qd rĐʑVghҷ7M8:c4 }SCMDU.Wv`42q$ac3!l6L_6MkX,rG?a7ٺ.{3՜y|>g}?ȏ~3>o?}Wd׮=Ӭ{G'{"sߺW_J>QdyCOoki曓%9mF+; vGM!ye^YMx 8q̚z V|V[ipV]&S94$E2ԉg ϾbymI6n&Mj|]MIkzꎌP!6d[[/K9ρ=̝I[\6>: ֎6GA}9nF,M"FZ\V$[FJ"@oO/Guuu!Bb6 a"8I`a+~% TM#SiEL6Uikt*ʤx:[dQuN>e=7ׇc_$t< >{OT>p?-"N5X?rOKnƏ. rIc1?ߺl/ubzԞ&q ;EIDqR282Jx004Hr8"Mek+;Q)iYA$yW2*A*c-xZK𢗾#h>VLP2rMsX?cPtg'wsgqA A$H4HQ¥KIu J(zADo-%!Jhu/8;GV6lt6-"U b9;~u3ي-q sU$lg -I%G ;WƖ;bhFw!nϦ  d:X0Xk&D~xOn{vaDv*T*Z5hCWXZUFhAhږW`5Fc QWK=&%Xt:SJQ("Z:"d) 4mlDnKQo`Wk5"'JSXL^jf:ǧX{gRL{5>m&'{:::;uo-X`_+x?>/,[\_~n683*W^y-RyU|k穧6Uv| }Çp ?9ηzJq6lhرkOIv)<}yO;m-gb֝vfU$ILk_j,X0[?~#]u3$W]A6mP棏=Ηs|_'6N^tx:>[}@1ܤ@Diu'Dd78!nt DXuw2f:{~ּ*lJ4)[6'@jMYu6MCSܼrWmݴ6i2fM-M+I5/y:ɉY0T_^jG;,FnF1g-^aXcU>I&Slyfs棼$FȔZFFF!HfkTeb'-&OK/SlƟ;,:cwO5ѹv?jx~E,Ykמ)WNhfYb{{{k.<:;;8ٳgrSxCP@P#5(DŽL [7>t Sf&0Y'c Vw/-Mj&JMT'Y)æ)xV6=& )y2ĚI(O L1|KLLG)*$k XC"dMd-8^"҂r qX,b% `dd0 2(2nPGd*kI0V:qZ)ںYS_u `BC K3=dK \)mk-{wi~e9 gѲ%f|la(ں8?  U`mDT"wWl>!#6LwO]dC;rA vR!!x9,[lGyn7-L]{8O>-,/|__(k,B~ P1$trNPޞ },!ђmB|Wh Jd4d)wbtw6H'RQ |B,B*B q au_b!+KID$kFTa!dlnnaBAX TG !iks"ֆ.7dhh6:Yz H~(!і=ZTLǕk*1)Cʹ_& t:R,ϓNGĠ.e\//knŦՈ|c ?vWOAJ<^9Lr{?_Tw:nyҩԔyx׻%\w_sS{':>W%j/e*"u]tedC5Ifu E1"t>>Xӕ26Ѵ^Ԓd.1Sէ\JN%TZ7KtK;i0 96:~0}KԌ1)TW$*wܼn"lo&p5F5A-)riƺc}]NҾ:Ø%uIMG$,IR /JbF*ApmF`#_}y U[TBl&KGG+`"G$XxCE#$Eq0͕Ic#/%֎ʋŨT0! aؓi `1{6R<ì\/y)R+HG@(Q5פ) ZBAI\b.9rc };v/yu"f)b1%_1] @(A3< XC!<k-y,>"6dQ1%X"ETcȯ=o1CL>[VЀ#%^"50 LҋL-K,5#2(o)?̇!{mkgͺ39`ƚGFk ar$D'iqc_c_uDjTqb uZWJa" vD|_OdE飯(rSOo[pAGM/^ʕˑRr _;'6lMzR|kWְ,3"ܞ}}=S>O޻|Rnj>i3S}$Nw_Υ},^h²AFQA8a`'HϾ|1A w\iL!N,)&mx:,mx (dD#rh_q ֝.'Clݽ0hG/͵kv~ هD BS)$8 iJ[Bl"CɇSqf!zͻp`жO??CT7qawo^R oI?Z_dFGG+W|Fx`4Oێӗm:G˚c f 5G+77.։ Q_֦g'mM~5@ɾJ,f1Yb!O|yì&8 "{jQkp.QRsnҙ܄CTcZ+"--F A>' C2 E322뺄(Dq:,ѧ(J0ıFFXmc@-ndO<K>E:bMwkسc/7LZ/YI{g 999xd=מ.I1R8"l\z!! J'DY k#6'A({^*&Dů#˗{ @!ځ`0\ pGv5hIH㵰8͖\K8" ""x-,>Tn|rs)،iĭD̕{4 N[R"-A2u`,`&#ݒctAT"+.~YC~t8~-m-UFmc?:4dR).G~t!" X% _(hR.|ūpCdOTVr$*p Nan^CzS`C'5٩,f1Yb'fj 1} %3^ȫyWUɲwy_;Gw?^iWAi5?]d3mE{ tA*P?fђMLJ!|Z&"5H(RJrV>rS[^ HHcC?_"?< 5)F)ЙIh5CYB8|DRK/?y3rH58?\1$)rXƲIaF)2 ?{‚tB#Xj<6T{ OtF#Qm~?⵴%\)V00\_9(A8Z\d-ieAJrYkyG>IzVdHtHh Q[ IԆ0)Hz>6rtA"#eEâǙFdRFf²ZIbYx)o?H#.}e(EW JHn-7+V5V(&)%9عs'RFl;^Xp=wsr_ /_6=QJ||&k積-D$XH7K(E&!#E⶗'UfjqςJn(XȰX63X0|zL/X1Ic|>Ey(!m;;ExO}0pSOZQgOVTLQ1k[wT&ٵDVH)ۨ`BӶL'{ ‰sA׎fnBS{Fۺb#|Mu DsۤYhfgV|5|s-8Dnơ m>ULե O?fU>k\骮נh;h7 a"Ks ÐC}ܽ$0cm 9$"ү|頵[ ՅEN+$1SV*lh%lbX-`g0t -#>{`pN}g?G Z5Ց0h4aX‰W T(!W%Ci8w xƁUvA[r(!dzBͦMO1k{S,̦^nz`3l; sn7*k6&H& HIp$RDA, Ph Z[)!F1qr^k(dYHDbES/ DI@1R$Iǣ=_]wgDZ#‚XYk7|DJa7!}#|y衇Aל j:"_n񪫮{##< \)8us飚NJH6F[c|KIe(%0Plm= aJ\uZ<`b1FcjC1_/8J %HCth/ɡ?9FC` :H; Y,RI8Yyi^a4dr$ۺїZ-?u 0LDcZ322"*&fk$r B !nڄAdJ-M{AB 0:Dq@:$Vq/?w|Wwy-ZǾB66q= YJ"!Y0R8HpS 1DD9I$ZkPJ!bEjL[FKP.bL*:" CH윃%TSͥ:s@bn/ٻcQ^r<jLhPřgß/?Qϟ֖\6.w ds9.bㆍx",{`am8v*n"JLef|{-A]tRh, cȄ|3F-UdDm a4=q`OpdƁCC:22{P( ǒMsmGG앳L*kmU'hґ:Uډ3eбaMt~&N5色a"AxO27BuYmn{4ܚkĿFuh|xdayә)':hFx͗Q4+Y=m;zI)tB۶iD&R$F y5dJJEMr1_fсْTOEdY <ϋRR0&T2「HDe-AH^/CۂEDT #{BQKtvu5aM**2 =;d|:-0@y Qna>ru׾^bN?lcdd$2UB(p}dZZxs{y4"ycM0ugH& w^voހ\ X,rg8>m!&^m-ůy-/y+IҘbuwI c>},YluXsZzv>=w0)%ΙG9,_~b+^*rZzRȒ䴵ky+_3[P* k\To+MldشhqcE!"^t)%?*ţJg?u-1kq%.ƳCC7Pבd358xx=9 XGRm dLtr:Mz$hiLxmX ;S6:i #"i3p̰f`g1nM4 58YP~`:9'7~*3qկ^'d\ITLD(Ɂ.q$~>^¡%& 0 e#5EKd6Z >dD"A>?`> 5łOPq@|lZkDd H%AatTd٪$rmшR0]w GjaZ2s-8)$Jr I0#},Y̼nt){ Kw̷UnB+ I(KHCɖ,Y=AYK χOy"&& 5VX+E%RIN@p hẆ̼|*E~e{7o9'xU̓PS,T(hE΍->_?Ƨ8^c_vralD/gc$iq+v47LB&BFW0QZ6Tr;'I4xgxKRX 4*L;r;L@ _~-ׯ]~7nvwwIKdG3hpYUDQvyB${l^z ʭ݆kx/N[Hk_oe{wGy|![-wzZnwyMDbr׿$orI_t;)g¥~Z;JE|oqri(oG%6\xw~kk5= OAbQW X1ȹb-Jws3/u~?C@Kfx5S !O?"‰uZiT87Q//x*cѸA3ʻ\yg,?K0gټt+{,MqN;0 {/؏׿Or Jﳺ+W8D/WȲ(N|l;!x>zAYswshy\..]Mn9ZfJDGrb*Yn+ecŕw/VN{uc;\krbNLJ{`Rnl;^,aꥰMst8;q0tJzN3 XX0ZYi)2,$({m wyO|0.~kX )=(tct?ZT wx#p kcl:aX0J=;]* +diJF |ۉ ] Q/y7v*,--w<+)6kkxbȩvb$MnZ$׮~w]wKZ|cc;x#FƧKN Qe\u-+| ?jߊ׮l >NyK'/7IPܑkF4F:ZvJY:CEЂe (;TDTC`x'x"IDԗW|9 .y 7K9qrs/rT!҅ |'x駹pi"•8UN6|67?Kg77rQx4Kk'yWۿ0{6Jkx7@;|/RP"IEl|"+YRN? UrTcD\@dD6g^;hߴ$lqacowm/я{o˚cNpWO'e{Lo:ZvrPM7% pcZ Wk7c*.T6w[,9X>y ww wG7jlmnryN 3h| /܋:DW2V gx~_u7;udET2v|R=ŒB]V,ߕwKOt>r,r,ALd4kY:2ZLbc{ww`(X!`̀9>CXk c~ԋXXӬ6ņ o F7Cy?_~sp}8TY`CN=y0bq6Zg7'_}\V8rI=݋QGӟZ.<|`,ÍkؠETxqSO~{3#̳8}g>)O IDATj*  Zյu_x7JB駞8xO^GUC*!nvU=Y戢 ҳ)HNR|Lճfm%9o6# ;;;/1"/{ 1TgJ ={]?0_E9 G5Hȱ˱˱}A^ |EuPR1ބstQ4[o{O*KD6PY>{g/mmKѳݰ 0ZK)I8eb0x Z.esgjB=l^F4Ozf\]1(Ә /0(a}pPTΕSb'1`}j~i oxS?ȿbUg+U8٬`4Ƙ[[w\-ɏ~;labO\;ɣ~u~^">clvhM9y~_*ZWnPI* }s|O8"x׾=^jV_抍"\s9^ o /s0ϿgWu3D\|uأETQU6z>I>qCZK/,ͩ*Etd|f-Meι8}E12L!7P/{̷o>w3qpqj'tx~N!bqb7oIuG6OLM8p82 ]C51KyJذAp8R`ZJ}2} >?ުyVoБ4  @|pA.D?ZzXpMD!a08"ߵ2gwSò;O?_ZZ{*ia&WytSOKG~ Q_ceNCj5&i֡)Rghu]rGb 76`[-&&mjDY'Zr/v(2s]RYngSکl|h*рʀiA1"xj|\lz!#OZXYbiA e{7D1b$f@WElJsuK 鱾@ʷ1䞾v%S+A (slS0LJSTD鷿j?#ap+^AM?_ u§?-C0xo =y_y+;"PT#aͫo;Q5#̧>ý>ȫz5տoZm@0*8&m|!A Tճqc VWP F0q4 Z;J YB;KQ|a: /9& ~I8FNP=}Rw8i@]NjvwcKu:DvX]c'#4xU\,IwwF(61KާǨ/&Fflz%ǚ抳9%R_g4wtҌn%.FJC,ovO{^}?icwrqwpsPXc!~AxqPey0+w?ˇϸt2ۻ]K,+"ﺓ!tw c(VD-.QꅠGZ+r6ڦZ + y]wsZT* bl`]C^FBu;v!#l磄L,D1b0"1X"5X0)"1cbTVp1#&Y$`9`ᱱ٬qrmS'h񉲓ڢ&RjΉJ$l_O~<\|3G%?О!0 0BTaug^1(ZB%u%e}Q>C #v6D|S_"-'W;ȵϿOU>[>Z~^&?8w ~]34WN$8($|O`Dň_"/@.V,1F/s䪨O^*c[`BcɿᏑ|tx/=>ޕA-KKs m˼:Wdr]r,̸r,r,r'(k x6ahQ^%^C0 x5+U/ mSH ם Y'gss,4Mq3- Is&K.wq9'h mDb\sx<j [!'o3'9y75<ȼڬj}X;ɣ_z;iOU1|^KZ{+?+7?d\޸WXgyߟ~-dSϟҵM;9*DU<1h'DΉSKUwS'ڇx'Uvnl|cEBdjfHz2>"&"k# HQIxȼ~TBSE72Iiy61y2tt2Q>T䧘LI?S٘މÇ<>q4\ϕ2%+>h:u 'ȶ^ȅ5 'b-:tlօIFF :v\͜_FuOH4tLf]:ϒ'WyQ{Xfɑ ؓXףs!?Gp|}2a\0ƆOwߓ'#"m K G"&ұI|,F??4+,CCV{ ifv GVߨ o:]VFReg{cH":#QUQ-"gk2VT3VVNTU| SORu2?~7>s-uzgD>%"Y>yCԒ Y_y?r \$˻X"LcsAM6wx3Z[Tgm-'/ըWm*y^$@$$:z9{ۭ\x`wsJN43f@-޻u>~l bc1FQw>6&sE]#|r93?`9uJٓSՖ' wk=+x%L_sLa=_b&|{ }tef؅xH,2Yh^ZI FsYˌt%-:LH;ÿI2;J%\ze '2V[EKE$0Eo]H>Qh]rx}}T}(rzxCr՝pT܏7k;#~Qʀ/5D\d>).){ |>xfj n%yng*NN"xDs@ɻ[,5vYnܸauujC=%0'sm p՗*}AءtSG.pf1=3,z&ptAjF Q;%2'ЧETp!QL`%PEGi!ք$BG/̮J=$XT-N{d Q` u  \=smQF\jrj}fcn;v[ɱ551{;1>gL8M l1|Ga"{B`D{*c4-q,߃IpIǢgpOd_9U4_h٧>=` XPn `fN} i:ddYvZ{TR:@@*=RC&EqFUO-1<8&MfzLޓ5/ar#/s(3i/Y gVKKף#N& Eιy+>zarQzϣCrg-pGwLAm|w\:k oD RUu2G-qⅾ@g )ԪU+K-676X$2[7e]o9BB݌18L@{ +Mh =%~[#0N/ s1]H`S~N׏T)4 jJn7ڵk88Dc(©mpqcL[_ZD}NQAL`8bQv. 2Z!q|ѤJ ^,SNUƆxL+9ƻ`/=ԁ/|Jz #䆢_{&+Ie a5g{ߢumTԩUVkD&Hc%J1!L0VƙWH "3 ;ym[~U};0V("ϳ fNz>x{yޕf:a9^L|lOI2Fd-E^;-.PX{gg; g88I07M0p"*_s%`|) ;hvLhd P~Tfƍ;|9,!SAClO_U~ IDATʂMwǏ`9CB޼5~7h_OLAIcpQ9>-"`4:HjUj9;8RrΠޓ].\3*uVNv jHjﺈͱPSD5izEmVw+_bsJ dF%D6 Ok(x5HQX$f(x1UéV14nio4FB00>L̲ $>P&}}i!L]INy3Z:tI؈EMc{o$cJ9\+3i$N{ 8fCMnmw\ZN%Z[]IQN'YbLWL{UC&6I\~.c~%sFd(*&`MؚQ#L\-@Cuh2bKҬ-sbA2]ςyo5P.cZUb (Ϩ%1,Ɩ\|"Lܠ08^>MSq bV ac>9XD-j hԨ׫䩣tZyz("IbkI {:ys+ F,ɽ#k-S@vcu=042cN %DRC끾*}W }JVK\| ]Fݡ^$g-I|^B\BTkgOfcyCP=eNv O'p"lwqzdp9Unڲpmؗk}F TƸKZh!h # v+0CLtQ$)O)XnJy,帋$tC(G]. `i8ޔinf 1#ExFQ_= B;s4ȱɉeN3 %)y瞻,ϸyFq~ 'O`5:z# >tqLӡ.DhQ]5Pv9F, ,%EM5&VM u8 1е\@H }*}|z%MSvvvƫYKXQM*4jury]sK;^?FZ፪!V8gRvcl V|4;- y{ʤ$?&-\!TYج L"_< ),u3pJ$&N\](K]^,=YrۭgV]J,Up&JwSXd ;E1EmU帢H}ҴE5iR]׺ 42P߇(j5sX#F1 b1X}f $\ =^LamYfmvA J(`b-k#rnʕ/&1+'Vh,5i.7Iՠ_8^1=^ mJ.e@׮~:戮Y{bL R1M`ή {8!K_&z=VԹIV1CKܥTsbH: C{XfaQR8:'''-RF aa9z_ey6alN=0bDsY2? 0N%R=xC jG1qEKrHx5٧XczD,%,C̽YUL&[AmҴi@༼N8!QuʼR/])MIX 8$,r CU|8>,)U/U#aɡAG?r R^iVƎLar;.I])9+Xg.>1N٦갲r"31KPG4'wmزFT*jWtW@:촶TXk6ɜÊM,P1 [LDEwo\_ӡ\"u>ϱq+h2}df? Z۴i , ?`u걅NsB18A<@~_Dm6,--rNKa{10EU$^cW.^#TKuWVT bE@T Kۓq_cԢ^qY\戬eeyiHb0Q?"$ƕu8$^DB.jyG.Uv8ZVCR X."BVEl] &=!KBV's&2z(Ӭgܓ Y@si rJ01>ډ&+u%$"`]GpY3(\)!Pɹ_MX1tp.pg-$EChb;w52UF9eR5wo?{omuw~PU;IO4ۖ%N `ӄI'݄"bt: tlc m06ke[l齧7LUcWթ3+t[KzV]{wspF1Q}<ݛ7iԿ~Nh~lz 11\rC~Šs74auĢtp`U۟e-`?~I7~i~{i`%jSpضnbv+m(`Yl)^E Mq@!#IT5P$u:sđbeN8Jwhh&-<MD6q)I?KQBbDD=}'N2??O^Z# P C: )E~=!2q<VRbf+WoRUrTPE1REbUy:uEZ6kKc R a)Y_FA?;uHhPZTX|\Kǎanaf.̢B@;oM?) 20YDAԈ] 7[_b/@rA:<E 9:YV"FK X'u6RB0(8cqqǎ4ϡ9IH٫3aaݞCu%n_pӅDebL-W %ݩx: 'RsH9Z\M"RL#<{=^‡pOJ BiFGyghĻ.BI zGc7:\`~~n/{SA![ ^[`iJG} I=Wu% E0k>JX zMRͲVhcV]uWmqTOȡ2e2̫hpdEd#gҎER^7Y' IsZ+ZZ[C G+-thQe}#=nh^-!{WT8[y^$"}oЛy}[ }LzM;#uΓ4#M-;z.zM^}qŇ6`+"#{6`dxx;iZ D,Z*tAm⒯džщxnVglp``~A< zL^ND/$d3t=u*(LU+B.:9!A ϕ,.,X_քkJ,Ýwކf3Fg" 5M9RX7:TEnb>i15] c,BoJs^ Xq(@=fs+@2ĭ.Q=d F+BQGBqUo[k9vBѫ%*ǃ6! JU,|#C(0NP=ނ19͈zz}FN;XQ#AE2Ҵs4$0 >.W @GbnnY[6)>a\0Zu&d],ف%/B0\'\w N<U>/Qr ?e^ptXB%洐<V u+s&![_Pl!p'Gqw{g~OnO ^)MɛR&h|O6}s~p3/i4͡kqupqt:cȲlPMՒBx9Kn#8.> a mRKC0Ɛh\sb}+@(lv`v`{n x`v`b?eVrjRX*jP(ߑt 5 UIDI\MP ^)Xʱ!"1,.,뮑u۴8iF œB83Hh!Rkr v{8J8thk@5_΍h 6j^ "_!Zc%IVi)eP)aep(Qm<ԧ8q+V_2OX)+^UX X`w +0춙*!<Ιb1gR .!J@&7daQ40i^u1ޣ(h48J L_੫+8hhI\(#Lj%dBCP_C>RdRzpE[I1vqy b7`UےZ;A'p-$}-6d(Ÿz/+?҃4}oHdV&una(Te}Lnզo=~YM7Sm}ldg̽4fyn]ŘFj5ʙs~_um+>rHFqq%`~s{}rON08jn#F#go12b7R7NR?<;Ϟgc_>kMa|fۿ1n\gƭ%Hi&D 0`角F?rxN?kxREx'˜:ZtxiPX jE g-ԄQ@ )&a 星kb'5~f{w{ *Ǵ=phzm4 Zss--$ JT2)Cn |S2\Sֈ"( whY2FPT!R_W G#Y9$GE=5XQ#[̸L;[/S,6-7yKQ/;5 t>dm7ncgQ+.Λd[,KSqgI[e2f}c-IsN:zÏ}@g~&B~AچFO৊zټAMuV6ǤmcN_'sW,%:z/F`tl͏"kgk=5?l{}v3}) -U$K}䃢ISk^"Q#P2Kzg[~T ;%5QHň<Zf49z6cynn7;*YҚ8NBNh~6z+A!@=*?R!?a\Q X;P.-A_mp!?C;PB ƻZ=BKqx9b7s_8wN1$,0pH%#]u(\ U$["(! y=8LFi9քRxZь4n~.DC I7 FGxGid#tDUPyb kVt$h80tZ,JբWT ˦)x C+[X:JaUDz͈ќ۵@âuj,bZASSvΑIf V^(˴`04>f9 7 4`4&o{hjr뵲K>in8FCG4.!XB.4MޏYK 6vy@O#$I"bi H4ҢHW2m"c$s)6ku_%P=lgO__pv_W~;l~ɓxDͶ2/q+OH<5I~\%ұ^Бe"..,E)12DqD7]oqx(<׮3ߚ'8!4I4QJaEE-Sst:81E8+ x59VPC_1KRJVE OPUJLoBF Y<9 ap{ogָx*y? XYXFD2B{F$ RcA El!ԹA(i-.؋a$Bg8Zi/,YPnug9nlqEHIc@ؚ9O֯`rh6i44$R*J*1( XI1E zJ/X Bn`Nbx^Kyw"/DS싻v䄕֙Nyn|k 7Yivm>bNύmΜq(fy~L{M16F`' =qOknnKډ,MڶWȩrqI p>3i*9!xܯU?T' @a-'b0a!߷J>zĸ-nփPZޜŋ|qJ>Osgcpz{ bճc,N}z0/q;d{usQܒ S@" ^ȎV2sC(^<Ϙ" Ex!ǘ) 7;I/rhDjcryhq .J9F81(@55Bu(-_8kqEد!Z[) ֺ못F U 'cv7EH]k .c$n`x+p*FĢT<7,u(ڑ(-7S9jf.8{Z(z;6 2Qj *9Pu(l"8ǰo_(orP ̵Z8Z,%szn*E1QihJ8 *V戓6Q#O]f#̖Цׄ:(B$GBz RjI(|A?ku-g;<:ާyd̽< A(ѝW{v[v_ni StCyJ?q MbTE4eR5 Zd F@5:)pYLx*GyE[GlfJ =L:AD:0j&Lb  \RZ:tnqܯ4q۩=OAхn'od~"t/is(%U% =7M.6^cn~* 4YIZXLJWh mx06 !{wa=J@"L%=HȄHF9VF`s @"ȣ%(8!Qx ֖WGdNnVIo,,{RZkv?@44F)K:憅%7Z,-nS|fuE:ZTa!" ()pl%B!ƾ\4<MPX0JX:2Y<UIDqBHBZ fdYu魯pb£&QQJq#2hC8|n*./.(sH֯RQXŬDV,úpߢ_^ۢP Qk{6ځ1Cmk6nV\uvmf: eN8 ͝mN)xn kLji·c,C"vY|p=_6k-_78iĽ< ~B&~Dcmxܧm9T&=RL`{zK3z=qav_;_E;j[^^feee(]=T:@(no,][[>KW`܀/_ر#4RU3.ZPs#dD#V6 : ϜC)E9}.s\~ =AoJVH tm c6> <1}iHY~9HV]2ӧHhĚ疃Z4,6#ko<:^qFkw kqj0Gc!V i\k\z .-6Ҍ ׈ 0"2xG{!GpbkmՕH؉JI+E0Jik,r忾&Xk[tllRh4:/X:U1jCץ# 㥅EVh-u؆GIB,iOd ""f$IuVCț=`Gr*D*iEX,D[c# 꿱xڍy f )o2 Dtg+ʲ%ioڰ;9'bG?ѣ'WM,:??VyG~[O~׸[oO6ig>('NOG87i1t X4|юn17|xy=v^2^W䭿8w,g~nfW=mB0f} hg< lpv{?Ù'nD p1HBV1r1<1¯]Cʼ#*C(`(fsM xfV>v~Kc?gb؁}~<]{ٳϻuowmUVL}p)-bYO gs:bWok-'N`ee%>>oCo J8<"$.Bu˰{]Zs |^1Xsןq[q3^7hFl !B,}>*69,$XjmF81ނuha.e 5X6._ ©zݗ)NJ6?/iD:O[0GD*AA[˓gO?#|[o 칧zP oЈqHLW^P @!" <5(և^B` U@֒Z[ W S<ȋ{:yKr*RaNIEf x,sa8NnwtڬidI f )B#b4,)nx(JM(r j]/`D21:*`-ľp<t!ja3@Y m_dƈʶ3qjP8k-ƅ S7ߊc Ν{ameٳOG5@pma{㴝0Y}g=yݏ͏U^_[ s6Nq;v~[nZٳg :ǯ;F|2+!BxVׯ/1~pْU1D#NJѐQ s;t$qVk@uf?XX\_Xv`(;VSq TL=k2 rK{6>뒿m{lV ٶY[-'ʲk׮$ KKKV9pΆtz sX*#eu|JM"Bc1MN'bd!A v ؐ*)}|+ 5T2, 7LFb{ܢ%H:.%k5e℆vEsk n8 N.p2'$(E[[6;~O=虊 IDAT3UEw]#^hh>/]FE1q$ ǎ;Moz#F'{^r7~3…r*vC l,r(Zgf:7+M!\gEҴVew<)g1` !*P bqtk ;Txc X rcMDńsH/qyN5Ks,/sӍ7"ҳޠ`c$ct-B4Ϧ9&lg9H!Yi>%QHR=&0{!DS*ip}D;LiUJm[l"f=<YXXw.h7_sg{ P-̙'8{&Ξ$x&rя|Nee|{5B \n?ď;G?'<߰2/}_UH!0?Ns]wMmɇyM#|9;_^]? >D;{^ɜskp>λ׹t*/ȑ4kʹ/~K8}m/_B$Õ!8svՠ=ɟnD|zK(?"yC΃¹Ǻ!1;Ciۧڐױ֤?~+ Y>?'8tnmKtc2FVx2TBsssiJ$Q XiV]CE12*޳ON|ytyF B&Cp`}(a .Wlxt &(,S p]`IpY {JpqeC'o 24k<^"y9n:'oXDrsKUDpre?^J &Kyxի^w$I*F I9"R2a$jM[ 4emm+|?ĕKtiÇcdS!Nri&*ޗ!āA/CH\CMɦ^k}_"d$(cƒ NkW?꼯wqз&؉uCQC5_uC  jk: ut%TX 펶S<Ľ=<ċǽjw)@`yn?~t Ysa;٦`.c<;;;'#lrWi ӂAWm~P=՚(tX_Zyn: JΑ}Ë^bɱ$(:2)Γ{( F[ {K `ynxYz/⋅r P?y' HùKֆ4^$OH)Lwա~kߛFx>;y?:L X|Ct Bg]#S_foMs\x\aK@n3%CV䟛}Uo-+]وޞ `g Ednb%kH<{49ID :A0A g3z6ryC DЌ<-yln!|P>-u&@3\e{+F*ƣQ$%,@g3P8\U!g.]\BjSDYO"LMY Z1]wTJs_8ϩ#<}ǎ-"%f'?s≳Op}d.$"2? Zϯ_?Hf3L)Ww/o%Zɑ*$ϭ!""+p!+Is5|V᛾?Ǒ¢D2TUBr~a| lOWq C(l_`">#А224HGDL.0&#9zkqA; 1o2 & 160BKPs:"d`;$`BJ !<H!e8>$Y  c +ѦoI J#'h86^Jf--*(G(Bb'kbv};G'3 5kr+Xk79.~ᖪ)ԍH 4}W\cs˭yOps\|i(D@p .>4C%R1V?#x 8z8?cb9GOiT_k5\ŋ'b¯6V>炼 W?iXى#哀/#:6pt198;oS prvvx4ZVD0==k|{<{eq~|{&YlC[lb]%[z%ޠHm C3~cr8~$Z{._M/x>ͩ^͌xMAݺsOeTM7r~e*!Rۤ9nfGCb$L p WN:BlPљGerg[az7@yxvލsv^~%{ނcI9s-C"JfsŻGJ(r"ZH5_=*4'OJSP*-u]`yT`> L,, ʮxrUyCm3E cMȗ[y/EĬ]ZW+5 dFpkWeS|$1%89֝GD19V9|KQ)}Qe+\k %X/5o (( 7MˏV҈%"!a" ӷo`*/:uW5y;:JJ,,."$\tiꜙ;Ki1qAFVbi9 7X,һb\ j18>BX,Z7Dr PXB !+R)~"%0HA,EU/{ *&k02S@RJxv,fRۋjı"M8bqq |ǭdYNyet:z}G/BF+F!%I3LKy'=z8Pw{y;ƥKy;J%MS_6v|O? 5ݭ 8}3p%a@g6߉J 7z׮^!e+SN7ivC|$ Ǐ`n~4SNEO`muO>eS|d.{_@(<vK1u_Ye(՗MS@T4FOWTygqpߡ6#j3wz( h89Ci ;7%T/[n:/}ID4);WxƄ F$ZHɰ(QBV ZmkQpp܂Zu0:vGz_rykؘg9|!^ x \^Y˚8IN4x.\YᐈXn\#lt:ӧ9tpH}?s?B|$hJ]<ȄL_j ;7}#qW7{rERi)I.YlG»3n3az3L4 ݘ@7x` l-˖aJZ22r8Gܗ{/dT{q87nx;u YWӿo&oL$#'[ĕǯ`I"_ld2ʔ$Bje3M@ș;D&)^+h735u6JOP5K;0}C YI[>xwTUQm^iEQ} @*EGƒK wf̓*fflz檛k!vwW~ySP'[M5z)ţ]|E50Ο,t:(pۿ1'lKy'o7swO|_?ϵ^=`0ѣ`n nN>Чw;NpO<+rq]?>IR:gW;Ϊg/ %oTa;5A~iZI>pǝwMѳl6;ic[W%0&ے}l< `+sQp'톔M+RS@) Ys#"_;yX_|iٛ'򜇝c(1t O<٢oΜ/xOsap +T@G?yo|Fَ1)k ^4Uf5is^_>NTP _BO_ 5Mʴ I)N(M.$׽;8v1!fZc Pz/yj'mCJ37l |[Ç>ӧNƿzū_7H|sy7}WF_v׾ _#8~۾;yū^6O= |5oߊnۿì8Ƅ.mPj' ]unԀ6v31ɖ1xWrw'?IYEΧ$wrǮ!Qqsط!~p&QQ@Ͳ߿;-#ezlEUm3kw 7dܗ gQ?;`9WQRyP9Μ>|d)1…39c WؔfMw x27ļ ( ʦQ GP&ٸ!4 k]Z@y+K||aZ9%U_cgrPSu;OHcW%Ã5rZk&4)^|-\ut{O>l#= 85k^[?PjB&VBtR$g`ѕ￟#ME:!$X gG<뾅<á0Q<3uTwnؿ;,/ GS0%UE=BY=͖Ú c%2>FmPQPǷ უ%xW!G'MkYQ &5 *zIbQJ6촦^9iv3FO aWՌWE(b IDAT72XU2t&ZT|H&sL e b~?[ۣjgm-{ƻefm"Aؤƫx{1 f6"kg>c8Z6IvW讯# ?̯_ONw|ؘ:t"yT8žI=_t\sݘr_|y?GvWaOtsmzXagP, d48Ew7T&l"w1mOn¶;Jeyhg~eh0/6VdL_!3/.ReU|yZ =E/+KTe pupRg4,#>㌔ɄdfHw/ Goc$v1urP]`L|A`Tt[ Y;#B(ILJ#I;l<({hЛ0%mW6 %2hk7넇u&Z{W(%VB'P( 赜PVN\pơ; Wr%Fx=RJ!-4L!nXJ-|SCpj4~ի !Iz5W3t%i%HhKz[o$$vu|CW 6C+M KkEІByn}]<KV1N\$XkI5n~:E)C4% RtPy)]ѣ'8ԧYXL"-B!PQu >2F;b,eE* Amf\E +ȬuihIXxwMŐe< ŖW 2r2S$( T΢]Z!A6 @j/IlסvS1~&%.Oi73c& =E-;Jɴm폾}5u Jw2~|ګtTm/s⪱pQzyA>WgN?sǏs=/[5I`):Ѿv)]?7S݉K1Ilңl.ekPae(FyVɗ(E뇀6B˄˥c嚥.;c6w+F^},-e2ń-ׄ:jR(Q{]h6;$DWIFG^ G2=D(+1XkH `(( $lV,X1@%*<B]+VBP " DkUY K OE{~)npޭ|/~4!՜8>Ϲi600i ve |nW6,c9v2jh†[`@+? ӆjGW%if((q%cq$t-ZhtQ'ؕހC6ZQJQnp g}Oq\ 9:8>텫b(`vJ 5++] kOlL@Y2kBI@P )=[o6ƹǼ cyz ҚC)t"|g*6 kǸh2DB裋1~G?l$+UbnJ4.!W̹3.<.߂ecUL|RmY-p%2nO=tq2 ''-M,/gyr$S_zU42F~ocx{Q蘸SöNY ~-1&s _+^;n _&-okgL۞Nkd#6{ r ZNNcxu7i:m۾v&Ij,2{M Gr O2A ଏ3<CQ">U^tpRg`E2(P,*X48q|*D'ԀGhÈ["c4 #$'MUjW!ڠ{c\"L^@HҌJz9[+t:MEXYMrUX3+hVOrí7p.,0.FQeA!J RUn&t@Dh4/+ʑ"qëF&oP_||(<^3M.iK*x`Хn>%bꍔ di "wC{18"H14瞢ׁ\^v%B@JucN6*G6eYcCBd,!:5[f . ieEE\be݄ $(CU9ʼ* :9BPfR@i7r$*f,0DF| FҚ"X"NE 8 D%>~l*/86$i Lo_o1Tg;|7{샩gsQ(.gKtkp5^qߦ&Vwel$2 _ku[tn;G2]q}q]]1-?fج]RO3pçdl[g'bWIAǖ|F]dz)ҤYIY옥|l/kr/g@$ ^o7vm(#۹Ų4Ty t( aCxQ8̭NB^BdysC)*Acm Dx-6fĸȻ%$;BZჂP*ֆF' *"@,jTE %>͒sܲ4Ϲ_~=V <(}dK_|V[EY*(/"̚[\`#஛A(Ƽ8wL鯟fQ<}o&wAiΜhhc=O}~~{ JUa3@iC5y^Sgs6%rP A)x+A+j#ޝ3@3MA1%Iv gPݔtkb/(Q1v=' D@@jˠd%RFQi 8GQ !=!x4EpiNgNP! ?%JX~>863.Ct&B$c*"Ӈ\z35l/`011A|@vmbSc.k{ao&l=_m~ՔvlrVo3˄&VM&*#apIc6h6av i}84l6&Go4t~ecNXQ4N"dF̩>P'4c FΟUdb NR<ߩ)l0F.i8Ow&C_lX7e?{z s bjr z]\wNI4oR?L;%$;ٷ\Mlw>Pӵu_y=R>W{R+TYθؖ6wAVvnWj+g07`B:ـQˆqM'he UvectJ ᔣ&0Y{6Vz,aP$I*aTxr޹ ƚrhR`@t\T5Y.[ G$ :K-n{ы{8J>4iJU%JfFp}>ʹϳ(*@4;mOnJf`{|^sng;vHdخG~|2yVxzw*xe;nk.F64M` ہ)JGSٌB7l{i8:޴4Z}x^=n߾mz߇泸<*h6aZwc ڄ!6E}lQCՔwIjySmfnO傌T,ټ2q'-׵^dޘRCQBADm纻՜f/rx͠'.ίЙ'I *_h FEʵ z5oRDiZ|@74F!NGT8:,=N ւ ^<:.^ VdcEvݙQ~0Z0( @& Dz:KK?yփ-}+kHZ=I+eiy\~.@B$JpUQ`aqv {К *?P ̲~vOGed ^/ً9wOiz9q:59vdsM!(|U&*D;A#xi&Kfj)7Tsq~cí!ƿCOx)y߇i,_}B7?UW򴫐b"z<9%њJE2:f)>,4M@9J}y5 HxZBYbt1 jTB T1x@fW &m0J}Y6Orh+ɴ!{?_⇾w EVisv˭7ߍ&+g+AUN( JXqP1a+b@(lQ]'jZe)I,ss@4 9M X9xk_/X1ޚ׮ `b#{lL-.³a轸۲՞qդ:;3 OTۗ3+rkL`'F`hn^oh'"#Lml5vk֫퓱25{ 2|k(5Qߴ|dɼmf׎g] 8.;32S0,deN'c//r٬.OS'ObA,)W1f2)$8(>(}I nhȬ`Jڄsgq1E,(>4E?wowsR(AD(uIUvQ4)Uhi$g(󎛏oy_?=w8$U)SO)ʗ1p+OG.ƨEJ _Bh6T!(_qCCtI~O;Zk hv:֨*Uh >>קLdVj79s4 K4l#0a%vM Zi "1sz.>xt::ft?^[[*=K$ndNlJ#ӛ %yrc$I !PLv+m\bw:f&+ѱO>o *'Ug;Jeim$4ZCuqgg$hlQՔh%TUiM%k4j,6L(ݠuIL 6bԖqF7 2Rq=9@K$_? n21%P]y9PRn,k2ؙ .9 gym|N-QnIWXE^4[M Rlj&[66+BV":'mf.ALJoUF<0~k+OD 1j*/ $\`f&@ IDAT+2` hI.H打g_? ヘN6oO\C~O!+I<ナ2?z?"ʠ&)yYjd!i׾vDZb k!^X=s_Ї?zpK^{>7|;oOg]EAU$o|P(3 TyEi {WtڇW"GF 9yYr+l֍m5"Z;Ν;J}7_[Eƪ씺yo&dx?Vt7};+Mg|7vЗaERjq,10prDT4ŚzI\QUcC*U[ dӸX3N+eܔ&qpk̽ Ζ͘ @@@@"&;n6P3Λ E^zґї\pN\';^`Ff ZYTNaABE@ >xQ8W,)ٯz]KIcQZaAM\wVg J Ĥ" xֹٳ>}:2TL؄v+#K|% m5nPYȫ-M:m@&(y,Ybe6HU^AXXX"++yn^ %6Z{,?>cPh6x P6NQIE+mR {Yu֛xTiVWV_GU|%\y1iRSZ譭 .M2E+"Ƌg_8Ơ[0(TeAEF!n=&y{=#COsQC"_X=DIfRq ˔&'WKcT 1sp/)M<ՠ :(Yy72~|@e"ݾ1$8q|ss uܿ *].Ԯ I pQnэ7rAyyDy>@'֦YF&8(y#qJDPlzx¬[̝cY6VGA@+5##p{+j7=6=e§ ɥLcgi/&lVu# `?;Eq|GtccQf]do d&ަ3"!P9n#;se Q`Ac:;8 pŪ;3ĺw7>d{b)֌ 6["@ȁȁȁ\>'mIfߦ\&lXՙ{2/$&EEUyGy zL@V$I"#I!\tD b|6p#ePz2( JQQq߂U%V^Zsu=wAO<ƅ +!ڠ HSaiy+CZUc?g?B,m$˜?)-t"?y'+uXH2 "iYxQtM:K+cc9$E$\y6G+g} 7*X|Џ(i2P9AW8*P42FM#IÏ5:Uw%i^<~|#TX(nwyjxD@Wj>bUϣmOR>]O(\*ė(F!fJ2RNl _UʓhKTqD%TLb*WXk0hTH;ClA4A&YtnSU++:1sk-M2JQTY3Zs4[m*|LRd~u S@Xff*$0'!&'!J頭%/ yNAugܦK@,,*b(_[OoL8|2|+p##'h^$s{&@A|2>ٻ\Nw9i/x6W,LH1z0ȑhi&]?Ǎ7^9pW,-z]|P Bejb2 ʜdn $Y}xiTdP JGp!f2UFDŽ5yI4VͫQ S'IPJQ%<ˇn&"PUcjj@Gb:Əp5Ǹ[yk>&4W@*r/HP]ORБ*@q N8A^Xc?zOz+wJalB*@K#X[{BpXy}>QέA'~A` Z b&]}neSȫC5 'iCGkHBW=~, z9_X]NC%}?_{N!\ lquJue<%m{:otb $iÐ5RTHpNbJk$|{N,JǘAżĵst(~V]hezoBJ$Xꄲh;:47pU^D*(TQv ZSMFixXc@ʹ3mh6di }Եߥv*t{72,LF8$M1knq]w_| ̵1u9 V\{qTcIگҨB+&aWa]`jV]-BY{^s $Elz@K>'x#R`0(Xw)E AvsM|EV43h $FtN>ɣg|ɛZ$iԃޘ2oO2,.'l+  (DH" yJZF\4z"4eP Z*(Q*Eޣy IT K6^iĘJY8BY #zGkԩ[s(e6^kP AOc~~4 -x x,vhvfGPyBؚj,:bd+xشLjgm/<~/MִZ-, ug/8sݭێ DnDm[5ƐeI6Zwy[15𨾈MU>er݉@(p[|-[;g'@s0Ŏ9ă ́ȁ~ddy[ u>:Jm ?;8\摴G `cf]F JJǑ#0i,.R}N_,@9@Uyw|_UeNP>62~'ND]66 !(Ѧj0\4 Vj! wU&3gNSV}\qQY5)Yy8q1`#SI׿<<9nU Xяv8I f㵝|)zJ)|hN-TJ)*s[s:vw?NZ>u$;8tdS@P+Ym@ MwCP _Ei78T0@AkݷalFj" TI@ی_pͱXKoePxMW')zk̃V;>+gO|]7uLP6 @9G1fk,m3Fyhۂq25"A<'I3 fd)q(oD"k4ZCQVWW$zuRHӔ^Kَ;|.5X_R%,9GU4ŦI#N)!h( !|TyI4:?>c"%N_f ڈcj$!Is8WRUn tҡ8ӌg7!hYwm܋ݗ[ Q=Ml2L|;okw7l\IvLq m@gwMb,6k<(s(8 ]tlٯ4jkEƍ:\feSd=sr9: W=w= G3$! #Ձs2^;9yqM!Mȫ"s(h،N TAR!`pqxx4-\X^Xbhۘ:xR !AN5i%Mjg\mS={mR&UU`F!(RO4i/I 8Hs7zrV<+Kt1@kĮDOޥE Oh3͵|k.S&͙3%<#G ͚kvk|2HBfҡ "Eʷ_QHQ9DR+Bwt#"Ee.RVj0FI@sdA82t{Z%*R_hbM1Z-rр렕bvz-+/O`-A%4S+ eLpc 'dp!jvq46.rqu1$ 8p ͽV 'kAOos1cBn=Odc.Hpl P!{N cO®GbC"$O\N'8ntRiۓo'94$I]~FQ-Cgo;G]]dܽgM#p=ʷ{獤Ļ88; Ҟ/!(J[)M% CM a$ fb2uA8avFZxl ʢKO#a%M32p"*%$͸A" rp.X['̉&FEӟ+/#I &VyV– ):JKi"TAL|I!XRgNMslu]*Gi^3I>=]IdV^/OVڇBTNSЄ yS33VQDQ(@Qdh!T%ʿfQe A=Zu"3NHy@E @5ιLN^e.%Rt6'ZwLe&L9MQ8oQ&wK㖨bK ȴ'##PLhňo{^.55$c,g%?7Cfn쑏ӨětpBܓokuEsxDcPWbkkLvH"P 5w .2Av?xD}֢G}xDi~@}/G?${EK| ݒEMQs dyZqlBQiNݨ|% H*C*Ђfԍ24(K˭;wX8~HqHHN/<@$$A)4.aԀM[BVWE*f]W&Ru͗*S Z&ZZ׹}z"W(T iY>`y%%X~tL? ϿȽܸvViCobԩS<3ܺzTZd"I̵,E1%EVϵ} ,+gCt#Hcܼy߿D5e(Q,|ҝ:u$U` >)r( DXߢQoX%rdo}K!/=B504:8|J=2 ~k&o "PAF+úvK@Mf*ɼ$ RIEZ:neYƐ!`KQҠ(=&'SrKQUDDZ`vIj Xk I!e0~8ha""/jʄܻt+?[Ei)fk J^x S)ш\@J2$ȋ -v$Ɏ3n7K#໱XL[aDZw#I;1U?wνƵ>&GwjM(bsFi%v F(T IDATc?K9H"pvs;2ȖDkoؖmrE]#(\43!yG8>pXK%p^ Șqˏi>,eM$tkHr9O]Gj KB"bAHp֡FW07]Hsu.^ :fIA ņRuP)I&UQ)Bq ؜RYŔ> bMlf*q.B?MJKwPOmD[(Rey4[MQ8o),+&w-%"do&°)4)DZaL855 ć x(mV$1 ZKϞy7#贻#Ώ5 1&NJT ~CEl? u27ޡ]2 N&*z{M,癷ًOu}7 kHl)};-Ɯ|Pr{?D+1#|6UN֌-׷#.mvF{^MoLM 1Oئ>#G8gj6QTE!ଣ(Jtc4z,0F\m&xǝ;wR"i7qLQء߾(H`*w`?{N nF"Mܹs~jE0g+RPҐg~?g0ȹp#>p/ڍ\zp-YmGJYJW⥬S)02I A`ի_wޤ {Zsk׿5;?y3O?%)Jep?KWnM%C<==Te"-)^:ZȡKDS`}Eg|Wɟ;2]F3!8W?.T]YVAG:UMOˇ"0%s?pR# GDQD(=IԠݘ[5$7[ڐDyDP%ZY^o-G B _<Zij"Z'B8J( GXj]3?(MEuLTE!%Ccj=mJzan'{Q0b(^{'JpL pul=rT*Zw;MVM~u{h1~6k쫌? }3ؑjAlϰ}Ĥ7MV&bLw/s|ݽN6=FHwG)GxL: T=G<^<}!>bsxAp*^g_;wPPa$RIt)mNl4ˋ<upDRdHJ0(@4O<FNlgQcmh4q|RHΥoNٟYA  6`)հTȃĕ%VAZt}S P4dŀZF͙?~'X1ۥ%F)g !Ez T9F1Yn݃ZT9ݸE=TJe R*Z)%q-Ah0FB@ Dz> i[@RJ&f[6ɵ *u'STZFٳ^<Hч&_x5%ߏ*pf9Pm$Fj#J}[({gOԨ[enݔo'87#;pCa ӟ ^`ۧ#@ex$vØ>$@iEDQBe4uR2(2Tdrilr:+1lUȈthe Mȡ czz( {㪻fIo9&6؆NrZt)i3gslnw~BzQy1qEdVX,("EA)EYfp%7k`:E!@A\|z/'O}ş )s9 zh!.L'bH/)m ^yzOϟLJU4n?/~/4O@D$I5. F[1&PN}勲3 :+:!Mms2q@ޢBFC:㽩͵9i6 'G[vq /2_3e8!H <& Z9*=DHd̾(5.ͣ&/ έ[y11_ ٦-*A$*a)r[|zC</UY*}K_>5m;d?P-v\F8cp)Ok/>pO DG8ž|q& .~ |p!TAZilYTV"9AYYGgGQXth @p[}Y0&N(h}s!5 A$ZP)%~hwXf /"D|t ;!(KP'ʣk%I= g8s,D,,KܹsV#Ip6 @Zt˔?/ 8j&="w(͸ _y oҌb%ѫ RJP輠(c3\ ?u׿}.Nn"ZR x#q%BpU]ܦ j62xHA*"[Kb 8L|/ Nd 6-> G&idÉ D/pWڿؼ~w]eUo:xI:e_pYT#EUBCqG4 (b<7ߪL}@5n<]0`xчMm;Tvvy$NoT$ȝ4v]';]/!b4Iy#G GD&ƒ/s>8"7a>aa+ =hZ*,//n`]ƕ R/Bw{"*() =9L[9 xHӔ(`PC_!*Дwӥ }}_{W`ج!跘Uj5zbmY)4j)㱘H55J:bxy执Aa-NwA)CH6Xk)t[?S@J[rOߥs&؉6h dP`qe[\ڝtl̥wJ!kmj.B:+޹p'N͛1"[ (:R"dP^԰Lh#[.2>CҬ38O+m(|/֌tXç=jQ_X،'_ff8>CuFaL%R IBH\AW<+sip{y̭7~{=zi2:/nP#e qLgf)ǁԠA{nnϣ|f,w\,S,߿ZUUJ#"(*Y Tô|h"άD |y@57"D}$qfeVI{Vl=sPf;KܰۏBdub0"DrxO QZdff1X_Mi2Móa{q{Zn~Ʒ0|EޘS;Xmnvm&?ceaGXwrY_-?[*6x1A1l8:5|hw!{K>lGG$/r8ٯ&:"U(fgu+n-!P1A@R s#JJZeOa[]Rj eٺj 3CqZM*S>\~6z|xI^^FNXLsH .T"dx[,sgvCR8/PBQEU0JJsx!@J (Q!!iSk+_D)#k\g,.2R5x4T lJ(3T8kN,_{qK% J4eBFk=J,*¹t9QChVIbE :+%Œz!_h5:iH^@ȐFSl0M{Dt<qA, wj)]-+F Z1f,DJ)[}p1Vo=V3vDIZ9 [4 32 8!MkML'Ƒ듃uaTuXq$&f]X1l=1pC֬gd'!#68r{;?CB-MG7fa B"q'ƷZ,)"FǶsoYh=vm[n%|@lawsjR"TRV&,ZՐ v%u:(:rUE.~Z}Dk:|jef&'sluZx A%> C\b>]tS@iPx) ("#!&4tHќjSbZ1 x9/(|2"%Ƣ|9>_, 7I oE1 27<4 +rZ+I"]##,Zc8i#/ChArTt=-.I83;囷PIxWKGc^G#6 zXQJW d|vh[h NvK9;+֨(,fr#GaO>!֍G]>I uݱtDs|~$N{E+ZJC?d0?;C%XG53Ho3D^L@yiDj-fM89\QE@ۇA>6_3Jk[4(Ud IDATZ:5 s >PTc)Ɇ"dvn$AIE=yA)C!8:%EѲJS4_}Uܪ#d: *(frngJxucOr"ʴ( Rۜ:kmQ;YP<>e"1Y4}S\i"pn\ $A(JB[sϿ٧ y]շ𡤰9V܉_~il|c u CPtV Z^ ZaDHs7o^qe0#9 '@<2x9'[ N^Uш]q/3&V~CFl(p:\loΧP^ A୫c'O @d9uSx"T^ĵk-Aӧ ?[ZPpY%#w"jGM; l+ܸr g9<.xC|dҷnՕ{Hh΢bplz Y g Ad̪yze/}[ġD MTf~\YXX@Kɹs!!uv>JiD;N {$"w)cCavص~MRAn@0C/Oݧbûk= Kx0EL->8"װXBdrR^!" 4j B++J zЄ64^2ӪǔYJb40$9G0wZb)Px- )KYY3={Ey>ĎU(c\#R!QJPr %KSf˗MS J̥KytSSSҢD! /<,_x)NNhIhIB$%Z8ˈCH* BΡ^yt}A@ hB J,\z#DdMݻȫOXVw[U^3݅ky閡YA;uĵ3yͫ p˫9w8JU @\#Ҭ˄\/2"1A8",{N^tIH#}5E %q}bڳzy ͠@0CM,qIu蒗9B  x "vdAzd SS_~kNcyqhO%ZXꑤQ f595Y^Ax' 25F(Xz)B2hzV3M*} JLJsޥQOeI'WY^~E'4MSHb!JP CX9ss!AbF@<8[ ri0Fcyy>}|0> !;jAs3Q <%ʋI P(UPr 0vYz=q _:G ,J9im  13=Z s/qVjp-uR0wIl6< H%42SlP{xrb};K+Tv \0O8.d jWXUa`:1r[_cek^}mql2u} r八9{޾y25V`D*i)Wv e2S LϽj'Rkΐ5(M`Yg6|ߏCFAz !Ph a2c٨ iAlj\z2@SKYq 7u:{읬|G''=DZce< [xC::ONvtGx4N~o맏ٮN5{q?#'v5 *9_m=w|?mr ?5OqSt96T;sJ ?ifϗ>JyN vQMNY +x\vaoGkibuÂI)S-V7P hk(3/=Agvqsc+=th}AbJ +$ʨuwUc3REbɈ&)!(Pb%6My;[hE*ewԈQqF0i anv6ܽF,KNBkj`FꢠJ:gחXc5vM੷p4$g3\Px|kେ\Je+Y՞x@#dY _#mҥ!xSWC_b]J9jeEE Q1@j-YG?qj:I3,+[UD*p*"Rpf*"}sk{+$<4рH;B),lc+I>KIMzqA^4e>3klJ{]cyigIe1dлAF 1E /O~g)'"3 BK#pE._{^CQci!zM,p0լOT@lгk ^Y0zF0T$6!{HλC:Z&=d\۹ IeeLeƗ.6֡6l ,(c#8qХ9]|>9ͲyK=GWxRFTNR;Oe=~=;)ַQOwf}JSi')>9ig>{ϰ6]lx`fkFK*+gaah"(2*Ix{> $Td: ǕxL.k7n1d4YC,%HBb,Z0Vã^M:VWPVbPc*pM#F G)j EHk52Rc0 b\'[Kw3_M!V! lc)m?}׀$6,M1N876%Ijչz ? waYYz9^Zޝ6+_Z[bηh7WfIr8(ei:lސt0!%~@NRxhMw#CI@tsp4 %W FWo"Iq5|NC?/1pH[YX\SFpe޳%q(cFI3 ޗؼmPY8DL׆5KqAgHelў#v)ojBpIP>ϵ]G,Q"lH)~/|GȽ_%!!5Td'#j`1PDA֐ pbbF5XB-)y,}Sc|s1EМhs)~~fj- ct "?l☏M}t{z:䙺wPNܫxsrOV<O82IOD- < Qtcё7my6ASyO%q(eT6*^ɲF#“g_T-11h=g9gΞh W " :݂[\L0ѢDaXg!b3b!ֹa̫V"n o=c,zJ1ڑ7˒PI:>'xJgi`sbưq@ykϋ/;o"! A)t:fzNwF n>Bmutls&pmܽ֋Ss֚'_N32QlR oqtY RLδxbk~oFltE~sT&zjSb6E?tN-ݕH&LQ #PrzWLŋH;UJ,YX\$fΜq+|_96uD_ȃGV}Te7dJ GagJ]pzK<\ #{UcAGm-SOO.J4?zӐq䒇:]`6#UpԋXXxxɝ::(<Sj:WiK=Ȼts)|-!\U&|K~Tvv2y3TĒDlܹwfY[[">y٠hQ&H}DU 'KO91rVe5VM`au`+buT)|XWySy0QEeZVUvO$ 1\{mT, cψP K*A ;,6gZ:ҌT(5Ҟ^`ssA N54> $LXI^OFo`mCϙfJ[.WL!yҠ_cue;_ŊiaYJM%5ܼ .] E݇w<HTǠlk!,Kb(h8"l%|O.h3$'՟=)#OQ9=o}5>P cw"VaX:s /nOQD u^ab 8 ^Kz,,ӞjܹwA%I-(Vy/U-R~1H -Q­/gDHT#M2b jj{"E^%KDP/t}X6 1! ed4k5DO.`ĤPPҰ)3'](>Hr+u!\s3if)/ôUf]Δbjfr͙ȷVx+ִ$ 3`bR7i$G b tK(bBĦn ͨmcED ^Z~jS5LҠc'ʝיo'a Gh ʹK/_fm՚Q~__ |HYF4VE(US찶ilL1( VUSA(I֓$AO~VV>t(di˗Qh==\0 IDAT7 "%j Ss|cۼ {]Z[Q!q (PcR3Iq1Db؇{r79xt'8U=$(Awd9 sj'~/ G;j_x²ϐYv8>wx<X.4iQ縦toSl{Zǟ@XNHNo{׌ ЁNO>NvL{#όLhMna<{ 'Eݾɫ#@blV6Y=!F1"/ ,q9gp%_amǠ(0M *IX_ݠҜjQ<ϑ(3t>&CT$jIm}>+bR3*`g 77=\c~ ,1~lb1֢*U   @(X tktVi & bHBX| }^p9B\j\c{ SmZJuh 7Eft*}-"%-q n%H942|C b4;K}D:iy7,|lLEy*7>ZF1EƁTm>o}VVa:j8 {%[3Mژ[l?C:ZI@%`7n|HPɣ0, Z5UseT<=S|W>b~D !*e^ |B>Yzx_y!MDoОɒ7of*'OY3b*Tcܔ7x]!١ގ# <.->M.K~v}8q5^v4}xnf ~|ݺ<\:MOTv=#wIHN}u[jcxNWƿ!'Iz-?;{n5Nvbu:W4=ѓ|8;t#&{,ͧ)=CӸ9WsvgOdׯc]C2)^=ҬN[7ИfPQ+e}ubrgZϟ!Mj V=Cl12/ntgY$n#DCJoCSK [?D#;v^ :5*<&h72SAGsD(%# IqKZCt@&HQRp>0s3>?hМY%}NZH96Ө+faXֻY=bzMa&ŘULIt&Ut(-&j Йy}{ ytx &2YIdi#TDAD,S!z1 JWzZQ="QX]Z/;'ʧEDM^̯?fa*ֱZnyV]"bAQЂZFQr.x"k~|Kߪvԍ0eՂ6+HeG1(=՜K+ʍ tڕ7_1~u[!Vpjq-^~+D/KOIBu?eYVdyMZ,R>%fHd9Y1c,L8h ;g,7~{;y5.Us 4P _v2؏9Xr}i_F+ [Sx:=,!{eDZ ]$89OQN3v.˓l$d*rG^Q>rLOW!) vw;45^~eΜ%a^p!eQIAgca&KS UM{$i!ѱ)pAk25 n+6gk rmybUwf L=jFF&8-/4VvX<AIj@ݗ}ɬ¥ffgyd.+L9X{{a̐ŅHTO0 ʙlwȋ7^$%Ϧ4Z \-j &S h }kk uUOA5cSצzF%E5=Qhd"$)P*]EDG`//_&dTI|-q~/sD(X1hTu$D9,N?97ۤDG )}$/Ay`>| \^"_f&S|ߋZ!Hnڷ` F Ek׹.gϡZk+Tk ʗN7@UO,eT\V#D\To&QS ?:se:IE G$C&8#ߵ9c04wa%+.g#(vCXzN{?wF<ͽGޝ\rĝJ9GyI> y&A@ٳyeҕ.2q~GYGlEJU)Blfj_$K Vlu/񥰺#/ D EY]BĹ pf +iS0K2=Y3CPE tn%7^@MOmόBF!%Y=g\FB(<7N#Krp$x0")D((ܔ~@* 44bT|VG}2#;_'DZ mdgcWh )w6.Ekԝ`b^}#鄳 ,(B Qh٦lH(Mk<;/otЪ!G%$et Rib!jJyFL޽I=E/\xxm޾+fXЭ'֐Ua>F,B7 [V"귙?sZ-cP*e+oc%Iz?ڷw>6V :3͇qq Yh5$\ʃKl$6N 6#!"Y pc#&BĖBkk~Pt@6frA(>s ,LO JGS1H E$CߗH=IҰH4`*!4/X~!?kS\ZЗxMOS|O~k3`\^RNNq3\rA$xq Y{V4S 1"[9A0 #\s׾AހK;H2p1(֕hudYCI(I;CP:'Vc7|[oMGF1C1""ERD@7/Ȃn+Ƚȩz=69Q;t"o%dus ;M͸Г(Sw+8@ƀ~[Õq=q<\9y7a9fJgQMpȎXwFmCΞ{ }f bM*[kn=^}&Yj >GFՈ>t~@^c%o^"Hs\Ȳ =!.lA}AGD ]9D0Q !cVa e(4ܴHPQ*b٬3 q!QI_Ɗ7F0ճ1`P,}gfko]jX&AXSѽ;*ʨ 6blE!`B|]Tl{5Xz>g^9GJWRH12<tѬP bwWqd,w,k);Y A |ui؅IJ HAbDL~Q7@?y??>rY}DŽ0\C1q;tMyLs~YdB[gopQ[5ޘD"^0*U8Rw|c[_ 7BoQ A }(ΌrRVϠ,8TY-e頱 ׾IHETb DegXY|䓟GRKHDٸۯʰץh~w8_eyN:1: ?)yBj+Wpjyz~ٺ6hz#xM9|*O9/M_b&cg?u*%O‚w.NJu 1}eI? ?''&NJ s<î9O(reaӕc쿎Qc(>9\'9ouf$5ZSLJrg(k-F"b@bt`C6i5FmCblmC|ш`` ݇]LÒ"& 5M(TIݐDajnA1Y ZG>q1 nYr^} _H=m$èDTux8RKM}K.OHs~te)_ܥnkaVʇ|*H *K*PW jpm  v*{du.Iq;refj/w0Y4 ARqxp =%,u_\ %֦Dwtz,ΟӌnGZ1i}%orc#=B,9:znVG|,r3Bdo0~⫐wCS3wq{'KONw)=9 }&>xMe̱IewX5<Ƅ;6J7ؤ8eX7';n y.y_ϊٍ[˕Z˄a$eGIաvAOJ6}oܲhdBeoiq8~z'?qwso8a97tlOu𘋞v<9yFA@ٹ]u@8>=H@ z6@Z5f `Y$ISBzS-4@6("6ĥܽsmCUiZt:D IȳmdAq7 V,e[pl66ok !FˈKXo @iF% %~:7χζ=x}l >(6QrQDYKm cdbOWLvDJ"λ"1E%5_CY0QGIF,?w\@%x zus<'q_zR7&L)&=p#l;e[nzߌ=`ؾ}x=yP]eTpV? L7%G22ayN4J_ z.\w0Zz|T qar 7*zbGD'*KD#Je*Zjܼ?5{T׮8"QU4T$N^& Ռ,fUpPU*#s2 ؚ#FKD G5,D碑ҎWfY ߾wBrr\TA#(34Z3ܼAhcKѲ`1,N3焼F},2hJ|wnŷXXgٸSrJc}MF _BS1DȈC`y<S{֯?2}*]N"=PՈAW$Rꨀ1V0̝]ds_!h1޹џq4RbH-I1fs(n1w²QjNnc49B9̞Fܵ9 2@ݯ{~uZNy(8pP_1 @e;~u07 ƕ9J};cw^^E?>ʡßƞue~-GJ2e}ރ{3ad[v߷“-a|Y1ܮcK@=hg1/4NtO viq| m>.rJM1.i2q:§OGMbAm;~㍇ Bqf/ri 9FP.A$;dŋLPNG2yh4X~ZF* jITTqkZDXvF ,7/tb5F輳fo "U!b)N)3H%X>5˳d2 Fl#F#XyTE)QGS7m$R1TQaw1b}XJ6 ChN]ffR[GP E3j@b!!T`,!⣯@T[+I^QЏoAUF " C!36dsIb-Oֹ]VnvIδ,Ƃ3ELGclt7)*j`+CpF+/4$i ҋ/_cbޣ97C_<#G'8I)uc/_xba3RD;˓y_iYo:88ౚbN';k{ֳ}##x|*URqQy(I∹,XW{sDacNiU2AY5J6u__~"P}Ժ&5CiAj K*+t 4VI[sZ8+bOԪK]!PQ֕P U ;P]"YF 8 x*:5>RWuXz$YfT #v*++8 l  (&VރM2w]Ggc ]WW-~zM|C6;"1.X|Y4%K? ڸGθA 4,0?3ĺ8a/} b*kxqʝ꫄,u) B"ὰyKV3^[,߸hU]!$|nѝw罷vFJK:q!uڽ'L0-/g@N.$Ig|d<$ 4-? `G)g\˕')&?HdRS} 6&t#JE 1[IaDGuЍ86|(qQAG%ӌ<7 oD-GQZB D`x aU$j4ZS '(덲2T:Ay$>fkWְQC@ȓ;TTR{˪;> Ԧ!9Ub xl  x8@DkJ"Nb>;IBU mA3Ro)|MOkV\`{"냡RR&`DhH %,(ONVuNَ\zM6OTun,/}s?&l{^\{k׮ۈ?/\6ss(mΣacnq;2dymu(W_uo}/xo]֚_>y85As|3S/o"~Z~qJS3w߈ɠ,9q\ٰk&;@BeY\"[$x&AOg/8 xY* =QB`ee^su@4>kH9b<ιzi-4̵:k16eyyy(%C:6{O!TڏAnZu$ʧÎ3nR>:Oߡ,dQ~ưJ.PƐDxLe4,i:?ДrUm hTdѩk{h2B6()F S)$:"{]/dW bn/i]DiMDѦ:?7BRQuEDvMwzhŊ,6 FCFDU*CQ "l-EoI7!pw%f&0fn9S7~_2ٲ*.Ա6DbPGJ#~'l$`EcAA>nri %jR+DqTſҥKqCkC4`QB,1nO~3dE:hImz6hm+J>}FyQq:AܩyNrP4FB8f?ُ:~d/}bStC{bYcxI<γ6[{&+5Uve;"Jh4! Ma(cW7 &8qi<& i 4Aí ϳ""tZM:%ڭ&M)\z|/ Ͱ?}[/3^A$1JDU*"P& ʃTyRE^pRbD3%6z *WRWjE ׾NUlcG,/| 6{=源F|'?hE8_vbJ[TR*ik`MY_?t4k{QŴtbK7#qȟ\8*鉨q}q<3T49u}r@s#~=S>; 3).灧{~ژ?BuK: \Ok/.p PxI==,~z཯X\^fk嫗w>>TL$m4y7iĚzPf~,PD=dJ u#RԾ2f=ƳLNzh4'Lfَ'π;-.vOgN<[|޿ >jάS=S 8wpDy{nxy\15.Oq?gI7xfP$.;O /0 \!;soƍ|L 6%+rjM][;sXUp=o]xxIgz_?vdz_]5l2t:k4ׯ_?d3OdS!w*@ҥ~Or Zk|*4 khMJx<(r8;h0hQeU#vH:?wJk4Y+e˕E)4ɓU>,;lUlgQӈPRq2EeiF@ e̞BIA;4z m!HxDQ3"Ԭ5$ILY$&"j,uxeUկE=(*گ6czG*V;Y5D{P=>U ](J!dZU ڢqhUUrs̓2esYm. p,x#y歵.W3\gqDX ޡCe+ʁ %P EQJQO /Yf-,2T)9_h4xs1J,\AfqÌ5@"/<>vOcx3f5!$e8clT!kĥ@S:T?;{TtrӴc-y9SX>ȳٛ'E_er:$Q).L@=c}1*rơOz'h7Fz i6ǩg p{ =Y@D/S1TzG*'BjiܾZiNPRy/Dt{_ʗYOh>IvA{u<~(gkk-R $!:(H%dXaj2wJuM*Xas4b=h]͍6_E2A7ߣb4 "t)GPjlPMԗ9x`"(Cp !?.i-7[G;6'ի 4̞DFx7 ]1UJL!*+H Ԍ_Iu"2+xL" n (ej:"F/XItFNP~I"nGkIµ(V7Vo3\)4 *jPwhͤ JK K_& -1A "9 aK4p።7Mx-I+-xWbLe'1jL 0e(S}8ǫ'xT YӞ8⤂NM#ʔ Cُiz|c4r}qEO& /"cʝyxmln?S;=4G黓]#2i.pl#3~\`JӰ'|zk\Bwe>')]IlsdGڊ IDAT)Ǭ4p*`@O=hkrWp`TEr^ N)tiI%)yn`j *,PV)QQTj*UJS^VetGq肣% x iy`ՂPn]@y&ix=|r`έs iGǰ(%o,/!l (F"(_S蚤@PD(@'0(U)s/K05>/%7_2Ƒ+Ak![*Wz~o1tm}wiۨ N sc067qә[d*gs4X%0BТZQ_ /5 %9Gt~Odǎ wڃlPvgQYON[i~<<[Q7>ME?N|}|cSȄc3if?Wy^5G񝲍~?nb{4Ց.pVs$\36zu5ӠPDʊ}@V>D)fp2qst *oŴe~CZx7!`Tk_4(] isH.umnس9,ʬUPckC3G#Z+Qu mbnHW15IP8BJOCPCrkMFV DhoQ 9Qi9P/8TEP^#.E|F1^q:X/5ifq媈+K6.'W&?.3oRt;w>;?\\"`Xj "AhUt_,/$͜8w7O|v"Q*>{U2LjGyI+>RGc z' 0Wf`)~7jTk( bl}>M^_uWq}78QXihYƠYJ cl\CEPcp!WJCRѪkQA ɱ'MXhǕ8HbN&f (t =]x1syPE?vrR&_2IL^l+NϾwg|{Ӝ';ӳTMgez:iЇ ~gѼx0i9nˏS$.ԡ>3cL\.VµOBApX[IƐ v嫗mڝ1 2{Pb/|_DYnc}N+\(btC!Hˆy)I6Y]YÍ6HEr,"#Ԋ8>d,!g\2|&ܑ`J"Hu/TOv(3XEY:Fo[D_nQ]#Pj(L0.`|CGxoxofݢaLBA&bk0bs5 _*QlR 9Pc$&9I-|$C 2`/-&TjNQ #Stsi)c홌N~i؝vkztQ=s$xBS4 iyRW03x3ݣN5xr8k'o<4zn:vnxI@uqʐCIO{ $:s}>s^UCE*,iZd݅9.#ܿA("**ªnp[|OW/-^J>&>EVWXU6%.۴e9޹yl\`!H`wQxVmҺtU%NinbI{:[̳Sθ_%ҐcLĠ3*v}-V_E# waDye ȂB[CJ\_}bC,TT 4Y~{:*`lNdf:ܾ%|6"n*"S,a\{Ǫ 'H廲#'?L"( r%4 0 (w}~'_Mzlc$eEY˗s?EbS2mR&1m >|6jvMQȫA'M 4X+/4i!&6\QM1ܽu59 q`!Qe"[/""aHHH>އd*UR5# HՀٸHBj &]qIu}I- ll#ic>l1b2|({'qX{b`l Foqekk9>X7FDe @(8c$)sl6!2) U|fѻs:4\ (]`\CYN<>Jw\'y_~4yߧhKx(G%}%Ң+$xqJa|Dl@D!JE%TEC FЫŋ=ۺfp׾.yDE!xEb*? scGzoo+o-5>S|9^^cBy._^aaI+*S_M)r {o9Wю}OCϑ J.'f)tjAܣY AsHwRR0cOq|o1㡎_ԱТ͖o:TM>\'->3'ǯZP|x+QLc1g2rCL3}McA!96[-N.@.1v@KYD{((KrW9v0> zxiXl39rog|bninw?fy8 &f>"#c[[JV7 bʷ` "r'( =tx!qX6m:kŅ}5͢fERS?;s \A<#J'4 ZT~dN:ƛ a Vm5,ۨ|@UʝhZ@d-ո "YUUU1''ӞP \v\ A_0]:dV T̃ވh v!U0 mXX\d{k*{Fv6;&hD+(tZUA4HFhƥC*EY R'u9eABcd"%U]f^!QBkp'Y^ 0W^ed:GAH J2;iu=@B܎V 1.z'z\mR!A*]A\گ|M1.J +JFyAo<Yr6[~Sj@[l@ɽbs (;k,2Z^r#qvoDtL#mV^2SfZBBM^A!S~!lq4vwo~w"2+dQK3֚(N)\IT:朰\Z_]X)xcڢ6F |⛟bc0&hp2xQe܈nFT%h6ܹūt7?&|o_YՃC8"A ߣgSNVh]y}_ΓNbsyI3[{њz;!ŔO}ŝi1Q IQeFC&wx2GVVMI%^znlk:[РjPUJ@c @$HI҄;Xe0QDJLdA)F Iɰk0] l>`qK2k>v E Dlycqq$mP:aump}mi1 "E FIO#F9O` D"Wp IXyZaTJF&.wKl݀K.`8Sg,cjQlH96pcݘgF(]03 L|9Qd0J*{7yqxppΑs~~j:3u qcq QX  'E:$ o>@h1Kc ?]K/;?4ڈXc6V(TMhLSq#i`X$e e4^0wm }C|݈a#GA2 wmJAN+e|B{(kBȘ6P5 ZW}%DFi ʁZͦ Pȼ@lP֠()}Al1N ha.mR:A(1X1h ZQt",EZFLQp`QѪIgBx##ݔВphP2 DY\ph#QyY5AU]|Ip" Rxrۥ'+0EA&%CC-#Ç{󱷮ҽ%g2%*Ċ:߷s \UyE{F<0G (Nq@2j#! {ҔJyŨ וo%up~ g.vr<ft=q;Qc :400s,~,[h|ġTQCh0R*Ѽ:D]Gp:ee:޻\lM3K.m~BIeҷFӓ13OBjWAA\  8/y ! x}nuNJ{?ث&puvSo A*YMD(0c-V^o(IIuGx_I*RJ|{,/-ƌ<[!'*ij߀AY Ƅmq"DP<6hzN: ^*"Fn(6+<`d-yX]@!ňn*O B E<y+/2}cɽc"* 2X(2]&IZ=bH1 N02ݻϵv2d.r2b,  V Lp hĢM%{ߧiFľC[ڄ{wg%cl̐wl_uBOSr"R 5uR`?96-<{UaG=K;vϗ{N$ GO|]Gqx nEjp 0u@dMa }6B*j2]hTrciksܿ.:(G $h8 xa+Dv~&iXydRD6 įސ\O~ttq8=n{>rgyP ؔMl K55n(FUw-ތ4܉>3|&7\u ϑgNyy/|El@EE0XD*w3Acӿ}XՂ]`' ~9Ӣ%T71ELkƸ|'B+&[(3r3O?A__gqubAH4!"jLtB.^c?m~_o^G{A%f|%V"_!$t}=#Agw <}Iiʗ2(4#`mUNy"*Ai~|̆aQf3=~~`*%!B/U? eE$J Gaoke4OX\ovm$-!!D sznP"MkXpkiߠLga$E酙W98M 3a c{^=`hh{u.0ur.ݫN1imky+W2Z'馓ɔ@r Lj|qo%NVȗ˓'/lWϖ\Rcy_%y>Ǣ_qM} 1U(͌;g.7^}P5ZN0v.E$*eQ믰hs3sQ:p7Gְh?a~1[_}&Ǹ=3JP_@İ8 mVWɳ=+KqyBW`#'Xϩ#N#WX_k\on=AEm,V,>B4 e?LBW<G'5&^~4Fru1jPq,QMkPǤ~tn"%7vMfRuxTu藁ߥ/M&P. |67 Ԑuî!g>s,)_Ƨ۔ *Wd.Eu _ko?%}e_죀svť81 7@IZt{D'x<;+Hsz' XyǨ`|.?K+{KT33 $#k,P염%?G*!KrH!PTXcAfFRfZ\k^;$y./.G&JI&bsW"'`3(V[ߧuMM#j0D!`4RS/\ˋxr7B̑g /2~6h 5yi oX~3ju8sI-ΦS`YBC0ᦑ#Ϟ!Ff.p4V\@wF̧/G 1'Y'J1Ay&NprFxU\r'c,itOeҍsz9pB{9~x) Bt$yN$fR~Q!`lD%K M~?w6&06 5Wu#+HjYk7/K~Eh,DӿG67WfyK!JF yC$sR:VCn]_%͔Vʃ-b,S >Tu p4xR*\irci ;cMfj Q| m;mԢҊ^&-vV1/nHUI?d3D1DF&=N/ ]&9I΁cuDcZ Z 5cpeaWtv$g3S'd >ݤ}hF/t5lBc )L]r\=o'MpIL-rJqE iu?pշ y#\Lk 9'~5 9Fſ|qQe1@ KK{oW|1yDD81P|H#7n`%O2cD@ ff蛼uj0jhRz̵rI[/Ã4O,Ux 6v*!1B,V4*&(-Ex}uGIBIB> !FL cL*+i®Xw_#}2|w::175S0I)ům9%  c-F:(͹7w 7S~Ż\>l`km,.?Y~o XK3IUt&Ǚㇼ"-U U S5ӋjRL~,ܹ;K܁AL*X5 <yC/X甭&Kg~U13{_g9?ߣ DyMZO:AcD򞽽=Z /^YVx= SagsW^j،(Fab#B D)g̖d"1V T,hl2JW_Ӕg .z"QgONy58:7u j2Iy!ihp59YcoOn.*M4b $5WbYq$ ?7~1Kw^ǸADO7#`:k^0ΰS+re4W^_P 5RZ ZqX|QH[ 0bXYZa6tvST=ʲ;w<{F՚|$CXFx#tM*%4z jfJ=^nPkh{4_]%Tz"k7 hI_D{W-lք,"NjБXG DQP5#@D!BEMZioqEhwyk.o:b%XvѵEolZ0ϵyXE(4@#U7xi>êS31`J PV % Մ_ÛiBf_"(Xc1ԬT5Dn~t|B m(-l-"%>][ݭ(uzz4&|wk~{%woDohH^"&MO@tU{ *OUD _Exk:Ҙe'$ DR"ARLp`b%w>{hPP aE9P'- e8 O'X=\*9Nκ2?+1%55kmBi!4y%:9:Lr|I2%_NC3D"P!b Ա$1pZKaېc 3!Ru1"23nY\YDc/XZ%Jbk߽O(=o~fZGK_ZߢTʲDccdis3:Mgnywl^/Cf^>3,߅}X\e%1cD6G#&yE/} U"A*""u*L~ij@%Z!a !D0+Ek0\L FM cKEu a,ti;.6`騢% u L@L93G!]j}n.&i$%4B4 d\YӾ$(B{1s ]|U" 56#Fȶ*PZC7)fy~hZ?d*edLh|ᇼK8q\\59_,,|iaZMD!RZ }}_n7uxT6zb XU)B1poĚ):zp9مDF]8'EJLOW⌷i3y)̾.vz 31M_rꑌBO8a!7,>Xz*ש:޽!{H< IQ'e` #g,ǎF5'lx< |'DI:;ݕ/Cȶ;pV _幾}ϵ/( 't=9Rӫv)=@CEb&:.ɐ$,<.I'b` BTEDiZ:m߸Ab}*8*_!F 1>"n-"5X[[Yڢ"bi%,AElq}lE=ﳫMFFUy^{FO٧!I(QQ*UIjRPm-ٻg-1,t"Zz&R)切TM 1FXAjvdM6?s41#;x[ohC`t8'b-wƀMB$2F+zإǜ$QL L?Xo>'ܺQ!s["yV7~DÏY2C+ 57U{Lֻn̠tz]z^i-,⒌2*OBTJ$WTg7|My%a;J۠  |PXc$I66~:.YZck{w.:;dnk%lldqye;qzP0X =P}pÎ) lDq(OՈ1RGVŹ ' ̈0qr1 ʾp*KQ<-n(O'';y)O]dNUr=|S~F-܃``ēpZϡ54M c_8&M|!!o;x09~&GG~:ԺRWNd1Nq(70ZPS |&?YW幾ϵ/(xRNгww4 uU:X5\_w_o]VnJ o@(0AQ#^E0G_1;3O7%&h8k).ɬ鰶K>&ݝ]9KI|Aj`*V-߿Go'7X%6CR'q54`U0"`Լ7DUY`Qb*cěl' >Ԡ:0@4BX#h';xjv @cjO=-5}^.~Q1%1[b Nfm A$'z]|A}5zLmm+*Kny͇ҵ 1WŃ֬w ~F=[?enQ&CM#2F[EL;GGПƧ>e;%e*uX=ac}ko< .Kh]C I6 V]Z8|Jcp)qkW Fj|pgT1>XK#11S3uh y"Yd J c 2ΪiƐ|21?r>:bZwI~X:< 28aytq~ӋiFK::ι<9h9r?3 Lo;$h$9j ؔǔ:cKB~ &]񇪞Ϸ؋(((g2G{Z=i/zzp @@+$>5]n ?dʀlfĨ1=,E<&0hsxQ#U%K-K#k7?-yHQ1' /6 (&a$4V)%.cSUS@)ʂ

6]!hcc"FU3y1`T5N03I2𮅝͛n08$hѰ._#YJ^tnac[k/1x:RPOD#8JI &R0iNҘ_u7ТhYQD+~'q)]Kt%yG5@f~ɍ$ֲA[39GQ?dyu6N2M1%If$u]U` 9crKxњ` f@Ś:pR'x4(&B$P3}k-gi˙3|OK{R04˙)>Lg)墓*=܎K]K>!"[N^9?qCfQKW?!c䌲֏LpVϹ@9|`1$E &K%w Ȳ&ix0Ђ!\޴-IBYean͍MD Y_l`Ӝ$qllrUnݸ>^aen~ݝ}cɴKnId&3ih6iwTA$!".U0z0PW?k3Hu`8RAh[!6`$"aZ)‡gVP&A/ 0Č=Dn1oL3>')c.OHiUg>LMRQޓ[)*ULvL֓Bjgez,9qv8g?o9AG 9&,a\n.cіKP1!OS$YrKKδx7s5[F1 FJ v /10p :;3_(I5R2pa543t{;bK-Jz'kewK2}yT^z=>FAsv5g(ıW**0*AD[ $ 7{b! QOJ3u{hDjQ _iP~.p "YUYeVP7=u?@ hw@Y (X'DQv?۷v/=V>yhͲr<++,r׮',PFCpiF"Kmn`ʸ~.Hd{k2'wh~_FvLŽKٗrvݬŚp|~kH $xbO1FpQz..Ii9{-hjеlgrmz! KW'X#UhH +r#F?'un %iӇ[_d- {$ek. =ruÚMmSήoH| rM{8L"qv1@8V#gf 33\~ ,y##% Α$9B#o~[޹ !od8[(N( IT$Vjfv7gL\&X3wU0ba9⠗.6ڎ_l)pgw8776^ B;0oTpK)&g$u 伂^;< ĝ=!nx7 UGG"'mE<L,=nR:QD/f<=hԬi"'FҺ)=V<;Fqe48:xfpSj[ocG^CYj^g_p-iB!DPk]qUf~ GL0@;:m[mqq]㘑E" 5.# 1p{TFETW^KBܸqO>w_YwcRDR3E0NHđ!xS*v`L9G7d48QI<FYFBC }B9^p~;K< ~/Q;W5fȘ7̚)Q7LRִzYOqxhh_<s1'rJ^0F~S|n| :(2[ X1 34rJrbn5Df7|__2-& !T(%[oXA,:dR#++ PM@PBw2ty?`msw_e36i/RiJt-Ezg~x%8#EeXu.AgU8qU$s$ݧc5c1JU`$ 㻴}ߥ? w zD{Xn b u[\AVp`0cX++Bݡi v2`)B] lv?׻D|Z[g5ψ׿μV=~sfWV Q+6A %Qצ27H5C(A-Yޢca{ rw%wRvZTs軜V(wz3$=Z-, }5K15fܼ}ZG7XJUy!e,-dY͜%`hZHEI$HlQ DU Q?X(dlR2gӘ TcD&u8wcB8O9?L761k'''غ&a8yN&Nc2pjq=c9H9sv;cO=kӮOd>2:pY]XSqߍkN3u-}I:k8||آጒ)2ڥu޺Sx匨dn߭]'}g_L.|!7!G/=^Ys8,4+|3}lmz\"jvPZCbyF$L=;Pu8kyE\wiXA4UUUUI9s K+4֮I`ooNe>p*~kwM>?Db,Py%x4A0ӫ "HAB=H,Gz5P 5+{S}85C{쳊`˧35\kL ( GK1r lߨz4#6ފ};ZtT^ ǚ Fc~Xg"DLxM(z 4]{0ъgTUA2onil5kIҌ<;Yx %6uuk 680hbg}M/CdaenO8i7cZ-P%blgegy s&FQ* Db4`Ԍʇ7O (CsSH:x~p^ċIuR0r0s,INwv;*2>*2 :1T31~*9 E^Le 1]q`LNȀ S"D]ur `!l< \`q^N/B2#UY ti".&SWlt=IċM^p i /G&*ܧG6vLޅr~xGE`j Y2 FQT!nI'H $IBi7_DWmIjєWVY/ VȒ/xsk 1Fs 5f]:.qܹu>#qyJ %t@JPWu D-醊9/,гJZ`、e#Q<*a1@R5bDi@ߥ&$&Dځ;Q %BԬ2P'@h;cI^ (8(N{Z13d끪GrXT-(]n.3%hU!QkYehӉ} A &Q%)1*[[;Y[u۫-r#eNkD&Fڤ-pj}זwγCcf,POeWilRV%ܠ*\_Y7_1Z@c7_QLCk/Tjo'gȡ  FEtvOCrlaW&NQALxz;X?I!@=%:CF 2u2CuLYX :$ytd\c\̆KPqn$P߰4gaJqҶ**qKEW'K/2-8}y/<_ml|p\TDxfB  p(4^ ŗ#_S,7uOlpL1y%s/G@L1{>*zlҫx' ,MP:EŘfEa,s=Y"IտOQEGCI2=Dj֙5*4*ˋKlmnGsff!Q֌@)~>ܲeI5TY.޽X#\o[3\y!IS|YNRRd %EUEEE(0Tg !-J*Lk_ 곹z6eهP9%s{X8 9F4vVsu5N,РX+xƊ&JsX#Y(񵹊>y9ށW%Nv:RPHxC ylSQL3\E(Ģpu|ͤ+yr*H2ǧ"^!$!w9XUz(m KP&YX^&o5J5>-3PȒw᭷W^Nl^(ݗ&fWj7cKW51rsqe,TL*0*̬k: ͬ_ļ `wA!,NN92/|Tpj>8Es`1etIb ֐4g/u˾ ;톫WǡeY@4e?/+M^I2V}1#<56}!}Khqlq7` ک 7iٓ$G~+̬̺B7`0.\WhL/:7eҋLk&V&HJ"%3` wW]gDȪ;Fm#=~QIq΢uMHYV_&c4QJ`s* *iRFs fUXR[6ϟo{%"vv9Xh6''u-| RIvwwI$+rZO+HUJ'}cgAAyG?,:R }_eV$Sm=B{Kj6(C٨[Mg8 8'Юt{O!"QEF2 %؜6iaec)=nZv~XUV#{B=DpX9 Wx,eS-qu8ۥ赱6sLg}@CtYM~@{8.zzL*EX%qDAetz"N J8e *+uzDn~-DZ)ITɓIX:VEE}} @ OC6~<{ub\B ;\8 4Wl@˽;;_Z&w- F iͣxEr復E 2|N S [9c<Ĥ{ZQ ·ϩS3̸r]h`qc's}'g1y(M^޼5R򟴦iy_cz^ _iC^D"!Mc$Ap|7(5::y IDATy'QiWRP8}3 b./ x@BLR\(Yj0 .PDĦhFABIZRt;ꗿέԗjݞ'rOߣ.-2oLD2t[e\l=b%$V.GP.BdY Z$AS4S'q֢e-[hv-{(y ]ߓ4s GHy(FE j"} PhA%z.:) -oE5m0'x(B%OB.JiTZ#k-yI r  L$%߿Ǔ߰,Dqq䉰W*|ypFgu.@%x#!AG(旟~}>8^(v&ZM8+RЕGGl&n +m!Jbx%K ×~G <Qq, AoY"wĦy J5GGa%V CA02HW'qZƒAE&5Sqs/~_{֫ Gjq ؼei)}ANrkYiJ#$ x@#[EL%$+H|g3 H--T1I ZY]MQ2sxoXPnG/_=~z+'2T*U(ps]'lhn(ȜX蠅 :TsԚ >]MX} mvٻEJ9aRJ߀+F`ѓ2V]lА6OL o Wy ,Fk Oi;|"@ҜGq)gE,πM0~xmat]f iY45\8UZHNp0!Q <014 njy":/}M1@6\|\+pAO lXC%.8WYo|w(ϤDMsS^b 2'"C:GEx=l=%NBDY14x]r.yGtmJ:+#x:/QRrlu9D>,KhbP4s]2J TT:laJHxy!T$r}Gr2EZ@ Dchp#EuZ1\"M VA>@QX[tm %yyK#|ǫ{w|"Xـ {YjðR#8grɽvaq& x|!]^ZE$d{- [Vkw_5 ցغ:.w8!/!cC BAI% 'Jc#,PY] ?G |V n:QjJѠV_(MMCT!pR}LhRд>?̀G7BN5ߔAyL.jCLGN &<&b-MXQe=gklD\|hb(;LS4 86cyQŜM훃axY2nJkw5 ni2iπ9\*c@0v96b#/_-Zn4L݃?]24!ͳ4 e8]" C5;c `_稶pF({q: $ͮuY,"LW;s^ ȿ/.> 6s I暈 UH?K ޗ"*>Gb z’)QL$sxQXīAG2&-k|NsFɺd/COCt*4h+ (EN<ᄉNȺy𒞇^tVchI <˩G5Q}>UW pn@(IZZ.:k5:YƠ(EGD*NDgդAͻw}zn,uYF#B KuHvvTJI/i j {,6;>G=~1VŞ?B3X6a[MgSɫ3NӷhHНXJ6guՓyOdq; )#>EzRѼ6m㙧B ? - b{:?dR;u&SG_DYo)-_0zyA$r|GEP .i>թdt2p6szfsmޤ8ʮC@7ZFL~n8{ h9Wj'"1yN@m R W>]I \CyvLT֡c'$we)ڈ4)ܸI $ԆZ!vټְO5$Hz֑{ohݿ[~󄣽mTE|7$݀Cuj+,RJL#bҘIZ'ϻUE8ޢZ`l @ Ip)xp W\8{mL}RxPB E+ >rQ^9:A]Hrq!5#x[iԖ .t/Nw&'%Nz!rihjg;]#}fJ^ÜNNi,Hı28 JIXCKJ~ D aE%5D lj<ME4+|շ,'r[V5|B q۽yj ۻ7Gį-Z;}M^>\U_`vxccz]%Z>4mYd 5xCztYT` ZZkR8Nv`x8F- |H1Z롤Ĩ?T*V NTPq~T>ҘBmRHm@hw  V]K ?yDH#gT5:t]"(:44XP.8p9L$ VE4 smIN+^ HkD(/j>{nVB.Baɑ"'#qsENHm?CKIJmJ86,Ty3lTFIBX!*g=NI ]$0rϺ-tR$xpU98襫7! P>C<mu{mhtlAet҈[mj24)5KEl!-q}@Шɚ;%-%.x!KYh)wvHL$V"%N4GGZ(9:y!q!MD1/vȕV GY#@yQjq'xspq<^ju@FJiI9?x~\MW \.nEcJwz]-7$:71s?s+ C .x V`{raWkM?OދLJ7wĈޗH眣( +-PгO+t`gk 4$Ғ&^ Ăr[Q;/PWP,=Flm$8"E.Ǭ.z_a%Ͷ ɧl= I)< mQ_ѨVMd1td{wJLeeo3V{OGdzͷLBQ8#ђƝF RsnefuD:QI2KqK&hB^ 㗷 &5a5l?m7%P9b-8aR|Cy1\pFy,"99.,U|䯎!p ӏ>FUr*"@qVH XոuwԤ)@iՄ l6RdRQE\"L4VC()g J|3~wϲ7NEy,౐x!k8vBkRU}XpҾ ,i_ɤBN}O 6r!Ɠ&s; 9Lj<'x\mu1py%@Kvhy_0_s4ve(. 8EX~胁ޗ}WJ:$7A<}6ًrt\ż>DPBh'$q`/?#GBxﱼTFgB2 G AZKG@)&BjIRZ%],-Qjb,#| |"zdGUtͪWvnrئҨbb Sͭ.hHW9"/|M-vlemܿy""͡|_GGi&շY?Oky*W^8R nU%J8ky #qXVrszL,=!YBD =XOR)!u (|`)^ic\ G4޾ڻwqH=6뱶LDQFtz 88:BKE( ౅%IVţGOX^^GJA<'OK[J> Gwykmi;9XBڏ陯BWM'mKs\U2N@ux/96!R`zJSݕ̨u*iH/*ߟ~YkϹ3L 짗RJh IDATo@Kӧ?mogXIC-³n({q6gU}u]W/FvFzrU[`w>3KȾ@\B`ߠ f!$ZyT2/ ~3QC@Tz~t6ǼxQq H!Ad?Q (% ı![HcUjR)CDXYZcm[AJM,[LdpYBcvvZ6Q!ёDȌ!yVVpG˩U)ʗz R $ΑqK)nAMv.QnNMhȈcxN0`[!tD_~2*!6VML!o I!%9xF2mG@TWVXnlbk).O=:&ŬD6Q"D~ g VWic tKVI(SZZ# ZKi⃟~ۛUX!sNI:T:T!UpgY-dž(2\Ck׬5Xq/Bqtx!JzEZy5<k e`P*CZ/R8n7/wfu'r|A:ᚴbׅZy Lͪe(`&f?V΁q f/3 <'Wb⽉ BIGyc ZkXkO,C}m8ΨTBD/G(H%>k?cω,JJ0v㓏?P&T NOb ϟoW]^<??Ĕ\. Jmұ5>ט߉)Js_xw[D5}.H pRnـ%i60si⏃aii ]Ii>„a{tax>pJS41܎ӫ^N4łC4P;&)gzm멝Yȿ9ooQ{F7}h8a*c!&g*>W?Jͮ% yf,<:bo w~'y=.}sO!?ø!Ƙ2riP;oa=x'@yDiEg$߽Ik⨂T9nA wCqʦlT@(Ȋw"RI<1i.UkKN_Wܽ{ZJ`$W (53K5yRI͛T*>yiB R r*bOb~-%b$>RD3 ko J.CNh %*7% R`LDkc)dyz(8JF)$ MCalVbn./G'S*"AuFS⥄-JXIo{ރg{\YC e4֗O7RppxI:.hcz=Q=$i}o"$t9cpя>B@? JpUAtT}R0o, ^8̾ꁀĕH43A+`F^9f9_FAgHYCIbh{_@ :A+[ԃf?ыpL05"l0|p߂) iߴ+΍y1^nz'83z1*G^/XgV-B TWwX,ۥϑkwB$e} o@E״6i++Tc45)5)D;T }ͽB@yӏ w/>5#UCJcPYbd' O{VVWx<ϩ֪>SJGI[<|CZΕ?>xߖ@m,7V( KmΗ)k5aiP_YPu(PD^ $L8@F`!h& OYY8B Vill:K5y%5e>{!VG6Qy, N/y8Z^-rv"26Ιgc^7 zj||dě]&kЉJ@c0DA ʼnP(A|@$<~A m4}gk!@i,5B#Zb"4;n}*20t$ZDq9_r}"񛯾l޼)nHGqV۬`P矓w2V+u"mJ0318" qA&H)`XDAx+p*a7Jy޺Vsd>ZKѮo**A 524V*Bkz](:Ds[˫|cAz_Sd]@\$^O~{l!AA@D ?l}>7n%mNvWW\ zO:ZnMm47K&ySi冓5v2=2s&pڹ9{JSFe@>b_p-MCF1U4"c5u<`:#P$>\m 1y6g"އ5|~Ӏt1)gXpH/fz7 .b<7׹S]QT'1j;Rh@!>w!g2)}ߩ&oG~߲sBF(zKxP#Rl~HӔY_]!ҊgOI!ҺP+>@>H7UV(% P)%:2TU(ZgϞqm+W_UF REHbt#m mЖFWUiΎHUoz뇴V@ Bs*ʃRaEpF5JKTA϶߻ǭ[heOk3dَMBT!#Ҍ[js@)IQ!c"ޫY$w⪺%Hb0j f iK§5񕤑F[Fr$b]EuuUp̛""3B)˺ǏpVLd $xLJ)Pxp8;>CmHJMp#OYG ~9_g?goKT$>@Wgt!V%pD[| &ȣ8:]U`d2ӫ|6G,~ZL{~{w=?P W BC~O(bᄉf5-Ƚ=SunO,pNJf a瓿Dj^&źD:a6ɴ ҭ0 eQnƊ)Z f ؜-Ҭ{+̳ ȿ!smlc>S6+|/A4OH7@2u֛wA.hsQqujqBam7W с^_B]eY&c qW~Bmg24 00I斶@D *.!Q[S>yvz;x!T(>PQk ١88њ_}1n݃RF .iWCԓv2#1Bc8)@t}8zOYOჷ=8>hrw?.xM0}^b4B0TNf,Ab NGTS["iL@&Hܸ(3n;ʢ„I| Ɩa$<;_ZD2`8w{x[R##ӗczY{]&|It<1P ӿӁl^F9=|G:GEx28F9HX?g~+muڄ e0O?÷(Kڟ"Z t2SN2B6 ہmmJ&൪}xE} ApA$aEŖ{~Oq}RDq('V^_wp΂t +v3>3zY`V}gwxu("!q P*>w;DB%)$ 䜬%xwa> шd{͙t~Щ&J6.O: h%qhd]NFcc;>$GkJa0ӽO9@}nog4fG xH"΂ ?E(lI .X`_XJ DJ%I%J(l("{#B Bp{xT:J)@D?jp^_pJ~?nY. t s7nǯ^f^ 4Ti3iRmt+H햁yu5`k]ڄjlwufs ,pܠقmɷ}&PȊkJ|]WW%p, hM_{ j[\qjqsUG& po馗1fz母6([WP_VgW`uhoŃud.\訢;P C+J ,TxC.}Sj8_94ф 3+/(N|c8d p֡tcDy=zъ{S^d2!xO^T_|9N4˪uF+,Ck=Y+ 9?ѨHNǤ*bprF7NQSP(t&y 쌴F :NawqC⃷vB2)Kv;ǎϿxBJBJ0qɤ$N-JbXwxfS TceTֺk8H'MczY+AQVh@΂sdfp~QNQ:He,-eY&H<(VAZ"Ҕ=vwwt2qkZ;{$TЪs,Bft;%N#\ jъSiF`_ϟۡz.*>-1wmnWv IDAT@S6tp.@GR>i vބL6d@i՘w.bt}YstZ]moMi}s[[Ӭؾ,$_)ˀMhZZhm[QX^˹}X;\NXky p}]>5’7mY$.1wЍs5%a^)_=xf7:EQ`S ȭ%F`h9_S,4M[1078$jS"ʒ~t{o:#OO GyxPir Փ'IqeγgaT}}ج2$LՓCoDqcL4DU GBK9 c]QEIy Gxј(%S!DSD\p(mΣ1vz18;ehtQXGP% '?֦z=֖زD+E%aΝNO2𡊂@X/uUȒH%chaNI'N*U*=;?8cp=S&au<g"Q1gdBQ{'(y$WtB@#ZW&{0Z#LD&AҊ֑+cP)Y\㽟iB9R xh45*pHG$ќdpq1Q,0儢EO%)USky`8"M*PVe8r~~p0ZUPJ&JWi!ID "OO1z׎UJᕩ@(r~ӟQZϏ~&ܼrSI7קW}]Fojnr,(m&LFp n*㲠ՖrvegX϶9Wdnk9wہu[{feFHSk(1|d/4˳!AOh&gXW>v 5N5KdEˏuaW{zդ hW[.untj~#A5FMᗳHP# ~|m*\czQq\#5M2d=蜛 +mRp(,&xD1G/^@0h=_Vuisim]:0""˂ϟf]8&we]! bHQPJ26ޑ%JI/y[ E1~3<o;L8Mv8zqijҔ$QZ4R"W1bn~ΡT>猢,& ym: Dnvv2hÐ.ǃ?L#ʼ@` ǎû=r|:– q|I*6 V$.xyP26ӱ`| T֚Z#un?Iz;qI2Ln9h4wm* IJ,$G`mL b1:xC¢u- :$I/$/wv _S8]j8/D/~W.ɷ1w'fuRVٕll˼Hq֦-vQR9R+wUK.iC]V ]M گA֏6OFi 85ĭ@L/q&6RrEk#fD^ , cMe JEJ)XWbZQ@!Z |X>_iN}1keФu<G8Ҽ޻DOQa:-,eِ `0JZ!ZgϞ=ق8(%x0QԾ5G/8=9=hmx ?w U &~2 y?{VIIv;)]-ͮNsx$QDŽN` Z|8!h"!`D}=jpGLJ@JS#}x A)J rtOw߹}pU@!¹*`ɺo:Y*>iߤ I D4#=Cq|;Qh~>QJD4Č!wtQ\(< 3Jb<:n|@Bw՘2FX[ E^Z’N:Ʉ$*QtLNTڡӠ25T-6Vkbk0Tb;xO[^s7NwQ2Kz=FgcQ^DŽHs<8# E%8kѺ,yYWApJ dNTgp:@KV1ZhtNNǔs8;=e0B2wQd-rlY;~࿔GVl1ym0nyUZUT+kߪl66Ɨ*EkpGjE"iI먩h)(O[4a yo?/^\\6ٜfNaro=n6q>Kio]FYt.LX*|Ϧ2r7kpmhCu<6^j ģ"{|MY#g)W๡Ap)6YKJA#7 K~mERnހ@[duen9M~yU2dfk00I{fV6ꍛ*]6@0u%}sFFxw<Ɔu68؎ǚn`cy~;eJ{<0Ge5Zif)W7 q=ui6lnounGgc5ߠzִ&uYD"hM.LVSͫy&s޲,)˒(V deW /PxAMur厌oŇ~0{V@A4&1o:|G!M{/҂'(і 8o?pn秔$M,\Qrp.c>-=vw-~SućnD{N~6fRx .(lP$4 ߍ & )]I"0QWBCJ2"DGHT+*92U r`!qR<cmD|T\('䜠ݝt %z7';(F}Bf`'!{8EcG9PZahsD>?ugSL '"F R ,=IJ@yIxו.jMty"Mf`05 QU`ȼ fVO  w{{{| cv$ UJ2C  3QdN{N#X8OO8~SƓ +-7 ޓ$O>$Ih4eKN1LHӌ={Ƌ/IBi-DQwvqY^P*RiňmQC) LLPUUGJLvbs||)qJRy @Ęwt Ḥ |*38z`LD^'\yawwr6PFt| P]s1vI>ԦSy9xs8vC% efҢPZk{Y,0} w?@|ɳ'_`}IۥV%5Μ [2[ nnu95'̀W}MjzD_Z_T! lοYĻXƷ7WیUFuF:ove|{չK_9Ol,1`\ y\N2ieo~)K<BශǬܿt)NdҼe PT}\GCWگ nۿ>߀JiMkM,me]ցfaU]Oraf{5>~? Jd~D*xs mb:;t1%y>tBAǗbu0DXET -h5,,Ea RSr#<8Iuh< Q9wU$8_80&́.?>yAA,/餞@^8:&IvwvUPnX@i+Wj|282{L`8֣F+nPD>@DQL^um"8ac4Z AOPX]χ:>ǃ!wz1KK%9=9b<o}G@;%Ӊx t髺_ zA}xlY_ V71u篯R]nk2]*S5EMZ<@YUs4|k)Dsu2g)-]v \vN{vr}po[RހWIb^Gi7 kUMf}˿ga 8}ޯ4?`֐ok)ebGD?'ɓ/ :&c| ZZ-P`$ !UD8(\AN_2"B yLd^脝,"0 Ȳ/˗/#*pINCQpvvqB8:Ofhtp('L*z 0:*΃8XDI [TTD|U[5L@ >=cJ(4 JI;2Pڒ$qΣT ɟO} vz9ѳ:bqLX`t{o'c3Tm%R/!TfT ~:ثWug j4tҖh*t"F~pD^R$i"$/ N(Ź,AD)^(drF@FZ 9{=TU `"񧟒r}PZsG7 ¸mnSoZ775N piZ{vl1}.Yg&qN,)-L{B4Wm<ֵV&-Ьkqpur~nOhfHxx z\JTU״A^mf 5:û*~׍#/~AkhsOa2lҥ %m{K7=FQt=3<5LjFL Bs\L+ZSTMŹ#PW(PJp1!Tf''IJ IDAT(b*v$IV~*}9w: FRJzAq9tS v'Gyp$ɘh NƯ~:ۣwh͡6go@ VxQlϷtZuunsvu"{yK@I,i^*,Yl#ųsz1q+-oJ=?c/%̶2+}.K\̖ydE5il^c\2{ʭ& /7[/]pcy -GHmZwaa{a1]˼v=YCآU--}}qr~6M 6MPkCT5mWuڦdkMkuo _;σCɏߺk,[ 寨9ՌD x %3y/M9eJ*l@%;f ,8<R%Ujs*JqF88zyLW\L/^rw@QDŇJ>`<,NGY| {2C,Y'8 ,CR+e1Fih0Jἣ@ R\9;vk$81e0/Q] # q%~*b4OrN}-;c |8&8iKgP{Tpa>J<[T@]kzn4]Ƃſ|x)}-4~WyDp@Wf$AlAwx<{^t &ƘlKLd"(QZ6$uy P4MpւDSZOe(>S;2: dILw(1 8==EDȲeg |򄽝]{D*8_Bdqo=6r*NP6x^'#'ER 08K9$K;Qa̒t5Q|U0 (ܻ||·?<ƩNA (.Hg+*2`g Fk/v2̃$BS!!kYVtݝ>,E9$;K3+(wA1UPJ(1+LC:Ϲۃ|?_tgDaul3WkMy m鮚6lIejh"X5:72V `ᠼ,iؤ!Ͷy/cJK5=k۲>9.w#evya}-߼w3`8\_M^Y;HvEAF)5FiG6lQrzS29וJKCkM甥'K3ܻCl1D' $e1b=·*-~ 'ϟrOL`0w;x`@K,27nnu9}}_{K06> &ڈ,j97Yd4jV2_m\92%ڣY½Ixaz}]jL]6?-[/} h551Y­m&m K+_l7۫s؋M¤q)8m p6>e.]+~7׫7ܭFi_-悀q=xH`>b7$?@mY" ~iygLޠP+(VxA&޻wy`BEE oEUAD|ӁFB|UA׀\D꣏y-:{<ƅ@utD'|D>x!J+D; E1i(R΂4SҨڗ79*ɐ$8q:<*VZb(ehķ>xJ A3(=3U5}>_JУ0x/365Z 猆CƣeQ@# *_@@5I Ϻn%x̨'iZwH"%{,d"c& "HལpRN&j`:b(awG';Q4֭2o~}~}m%ͺkoocxY@o_m-ח}@6G$nd +kBb.d]N:pzS"ѫ%6O9 %xssg.!ƻ"),_htyۛsuWכk|)%ܿo@T5m7 ELm0|?}ק_ZyYneplI;ooh/giTy i4/Tz({݌{>d4 ڐ4%f.GIJ 7(v}vNO8~yD'!U yu i윗G/pe;t:<{-&ք`"EDIp8b<iC$i㯞='EeBEv0"/ƕ^1JSX;닢:JjeOę'qz^cus-Bƞ ۇ|[h=$XwZႧt J#acjQC҉*xLGJW& gL&s v҈ &-AȒZq1zF 5I0PQ,QV $YA{wHSibZKX(u WJ<,89zΓ/39?;M}:nހKt[-c{[Z7,։H+71y̿*+7꒏V1E`VÍ5ݗsmnx_ߖ^MpCv.t'l0]N-&-VL}̎[Jl?..5HMٍm8Wbۈmz XuWZSB{Ӥye6?7!%ֽWگ rk_fhnh{vˆk +M>/SWAh7F^ ]0{z}wqG^ggD9L}4MȲ' (eI=ƹlH-nx=FÜ4ƪwhR)cGۿ, hx[褂Ұ aS(k3Z`z*{_L;5x4|0,-!,+c I I' IZ$MF(x<&ȁ8I RZAp9nNNNQZCNF P !XRDQL^C)S2N9R'gbg`uy{ޭ.Z=݌Օ2\ޞg̺"Kh|o7G8^tʍ&pm̎2Qspe*KMֲwjylx̴҄KͶMFi7 Vfi xU p;ޗP<"ľ IF0,̭R|+t3l~ހ6zM ju J7Vh^* ȅڿZJݼ9pS@g[g<T`@M?>w?C]Tk:fa~/ 3LVa˵0(B2ϞWWlMXmUD=1=w𰏖ʌ؅$5hyw/x[8Wp`ngggt}N?XТ 5YF .@AEw)I%3[Avճc&.qB@s܀4IHa9A*pM nnȻ?{o$Ir=̪91CH hV+^dL/zLflzX3$thIP >fwwzȬ<"2#W=F&)/׾t=-[#$YeqY>Q!d'"9p^!I7!KR5C9H3x B@t{xJnHc9sF:KtW ]ˁwXL PӘ ! a"(oIV::M`}Gw9g_7 bbֆC;1޽V۵X:н?$h(zZyZn+=ain[+GϔuxL)oe+yQsB'ԧqBAlިfTU߮i d:C#8k2ׄkJ1^^_;g 'Ѩ"C\KEG!eDRNY\Y$jFܽɝ[wP£5I/ufkkor&6YZ'22ɴഡEd:EIS;lno!o]Ʌh2*+/>>nw1V>g,0@8⍗CjG3B3'-g׹{Mvk9Lf5Evk69ghF&Ȝ+vK) ^>NnL%$ڏm8_\t@#4jFyЕ8!5Mwxx3ƠpH).#MsX)`ؘݽkSD"MccRhڛBm#,RB3UjDE#9Y@mt{{WzX+dn N꬏'i͆47S^yiM'f܀c&r }0j:*z']$J!0§_i]U6fgru*U'G[t:]wY__&$X(LIs{/\s;ۉR'$Z,.-Иoq-4y^s%;KgVip ,/4+BTJL|p nڀB*|R:.N1B 'aa} Y_`#2e,(N d $at3`Fy'xӧO&)kq7X ilZ!PVڔkZdQEGv&ԇceʘ|Tag_9٤T7"] V{1Cʋs`ܽg qo@t)fܼ[WGM{ƸijSuri6'Q#f1kiJ.! 뾉U5?|1z'&::::Jh=?)8L4ڱu冞&4S~1J@ï} p/G̯l - Й!fB6ebXAk5C_֍l$ Qc46ZP"<:k\Agynݹ":k m4IIVH3-~+<#V'{`[6;z2_ A@֤5bnݣR07aΝ{^#+6f8> +D마$]Xum &tQC$&_E)qc56# ~@؈R;VH٠)=]K`Aedj:*/,UJ;\aqjY =4I +~;ܺm._g*ϵkp:XxE k }3Oy.{;,ZXVdJ>M83uh4<,/-/6noaCZ|ؘG4#"!3@9^0u:לŝ AX'bUXZ8&/ؼKoEyK1fwO{`B{qy()@pPfpV- PQs= dwg ,MfX /L}-7=98 IDAT L`q(wl;,E!/ۼd"A 0}ꛘR5ڤX3Arz\s.g TXk]FAќ_FoݼǍ[8T>iQb @OܔX"y=X<:mOҾ.-r@k 4JȦ [ 0vqc \'Aеu $u^a6L9b(T@9{]Ēf#ZQ$ "E)'=2&bDke`[wX.>h@z8!HR*k7EA5 Yp$Z6)hli4Y ($LDk&b>LѷGQwdp뀼H-]ծxWJIalrPd eaQkXvbYVJ:fx0@:|K21nG|mXLWUZu-0,o/My \&5w%ƕY'<:Y͟] T "j(d3m'"7&,D{Ȼ"c`_e<܄Ű!7gT;DpYm` ~O>^:.OIt' #YA?'TU _44$A)Ed5M7i 0:C*m/tˏ$t\}*}IæqV$YFJɌF "7#'!Q `w<Ξ^=O\ŚI(X'@xd~sˣ9;(s`2C܉٣<H%1iJF4y_)J\s$̨ E:sYkrB( >/+r޹_ >xĕVbUTW~FKvr}ydXbF\0j<^\::iK^MEƘ cHۏjrkRITClF톯W8NpXJ# ;hBvO||嗿Iϐ?#)RVdk:BCIYY[cnֽ-6F sb*1XRQ)gsif NU@}A[O}1W9 _=|=^`0膱JE>X-Oxtyih} c[JuD5@فE7xPWLh;@ixY{ϓwcR{RWetdgm ~[ǪΟ,HLL38>RJ CcrmA  Q+O|F@?1!j۠=M)WK ,3 C8M b}'_|_+Ә22h$05 ŰI59cr L/%x$# A2g!3<"2Mky 6v6nʥ./\#8Bk7nc踋k BJ}rH3Ъ^#@& ӹ)okI3v;ml<—2$ׄЛ(t1nBd:PB{  (u:(ȵՅkո"Qk_[pfwit]tL$<'%N@fA3"MRl&1S>hv@ADa1v;! =(/#= Eehq2T\y-P ׈CuFq=F}zx uj1#Pβ8:xqa:mR@1k <;h"NKV8Z-s?~9*81((blS]ބh6;lT!&I:ޝiyN'#kz׃FpZReJyo: `b%JO<2yʂ3̻=;5?}O[$Ԑ%`NZ8? /_:wl.%j!q4[d}p0{SAxfH7&K4N606! :qá[,,Iw^.[%I3vX\\D 8NI r|^H<7hzuJ%g|:%a@q)g5𻧵:Øx^}]~pt \R4=w+LUY&NQc0 88I7tBg9_TupBU7{]Ah?4csN"enyƠy9%pv<+%Ι!eԿ69owu9\)נL6QnS-/a4N-͌WpuR OB،H6>|2/}+65:n{ueWh!Ok^Gg?W=>?#Mh;{{'~_ ]5 .J)ִZ-vwwA;đͣOQ=@# {gfqqFj ./#MݘnA<}0(g :5aH }:3hO?રO~gMq--B$:Gh!H;:K0DWhW:t$=%c{/Kc'[|BLۤQ9곣fh̍s@௟zbvV%[RƳ&M_ 5(IU~wjcy`\+Q+hLZϺiFQ0U: a]*}D^ֆv%y7'J ?+N7TmLnjG7E胳bLOn U>Q;M&E$_#d٘Lʄ}n]?zUw0{`_ݶC#p|[vm&1x0w xxLF7;O,> Ƃpc0PR sEu8b-kk1T~׹6\^;8{C$S1pibem^~C)B^|E>I>|_rtuMTAջ^:6=MtN4{ޒh]1ݿGᨢm_jW:̼:Y-ԜbY'K&JFJw͂MTP5̺HUxȉi ̼<$F1~%ps[ rCG-#ʀq~Q5`˸k%h:ʯ\;_?zk?|S}ɠOE@0i̫J# 7A v,8uwB qXsg sܷ|lᜥݍI$IpIA 81' p!,2fs00[й2 o{bZu&77|| kc(\QyxRm6BC5AnwX^hD9[|4s GQϬxGe8p=GPvyzI\+ Tuʀ٘o],ޅNӟB%=zuWW<6 V  iƲ?H~w\}Hڸ6@8h>뫍YQ@0-^GΣKA:db7Y1/MS"7A4&CC%y2c i8ɁDk# 2Cptw=z}^LxdZ@QΨ̴pRIL :H偵x(53o?Xxt Ɍq4O Q.\}!4MI՟ܹGm5K+헿s/|, tvfuuk1txgҔOcA*<[0h]8+@J)Lϣ)4A!U_z؞@<3M $ N۠@IQZi(|Lj"*~R$:MP<#7N _x*oϘ dvTn9jC,4C."RжGϏ3zCBڎhJc8N>Yf"*ΗL[S# Nz@H7 jtݮ TS.ӃHLjxBM4$_iX7(AFz@iTJI8s}/2$!eB|gaaVy}_} `AO~G6 wF,Ø\bF\)!E V_sϾk? &A(Ia2M :n'{fk+>!q<,ocq O9|p/rU ,!qELG>F3Z};}ֽ6Oյ4Wα|>;F2_ҕXZ>]J 8'}.I'E I!?{Vc]X' _~?aEAgϴpQPЖw.d-`=l"l5adQ jdD6'1~0ʵ8BR#}I%<h=4fH# |giʂP|gnby=eT`nSʍX,羬nL1-zb=&ҬOuR>b"jTy`[c,WJaNM`i#I,m/FY3׌.d) @$1Klnn!$ ix^H$ܹ}_J:;{H ngOf6#|ۿj9*Ra} D&|y(e3S*k[S@#p6C7j:D,b w)ePkTZr:7CTbt1 rQo@!{h<°:0r8#G'+?7 #wԚ4Ώj}~l̰VYm'j_xYf<؁$מub$F_>7(}b RYQ4Gj-Fy>):!ɲ l 2\S 瀍٪ Ϝ6 H ?э,eYh /iT$<\r58I:mViDVN*<_׹wo Wp .]|I5n޼0 yǸ}6ʧ[DvE߰ڠdg#?`:ssMڝ6gNs%VVLF{M4M.\:Z&t(d}}{wi͓& ?џ_駟bk/]d=4enpFIc()ۻ(G&Ţ0a~3ߜciyq78ϿLQM1PiP:ݽv<)5\ Q{RJx됚3®Wjgqu.8LӁ;wGSyL:SZlK hĪ}UG4Wߪ.C۾+;MTA;f9kz,O 1Y:&`Eک(1)CMקCՎNb`w=}x߫WXQm /_&Jũ2ͪs>VG"Q̿ 9q6x?@97#}hݷ8Oi(fAvnܜ*0GYUu>ҕdZZF!8{Gv'!@43 K8X^]'X'qBa8)i49wk]mll!/^ZK!՚ +H3˕ۍ{Iǟ=<Ï?C>Υsnܸ7i k|OC|/y ߠ1/~g0YE~ckg Ci ͩE@wgO>,q?O>+,,Dܺ:YoG{(O>R+Bؘ,--uOsw'}g_ҕ+ll}4 |^#c>vyꩧȲ s]%++ĕKhF!s(}nݹͭ[7ZtȲ'x+W6<$U~7?3Odue};=sgϜ& |}~7>ٍ3u:B D:숉<|K7l˟ZSp)VLQS*.&6gƃlK&3 1*S=l(iؙɲUcjl?~8w3&=YH,88e={𧀪@ƢXk vWt`;_]c#*E47hFZc j52~ ӖnlVY8pBMH01V k-A)J)9wSsKZ67DyYM3̐`{?4 [K/ &{(aik>ןgFHI tsƤ]"?ƛy޾CqS7xHie`{.a :!%n-O>\z i.se~+_NJl%KRֹsXY'Km}) 駞da~g-^~8IҔv @%ÐyVVV>l-kkkBᗲ.K -nܸF,7_ŋ|K?!+˜?R<= ?fp$I2nFsn#ᱴ2Q#BySOrP)VZ-gdRGkGUδ&b=YvA4(k(3N{&9Q+J p9BY T'gZ_GOCYz,yJ:(MlwimFQ҃2ޟToʵ,m98: sX-Ku>o1v*(LծPh4 PZP,+Px= b%;zӉOArV4c,#)%J`QT䟜=V)8},Uy*R'x>֚ j9y >ַiZqf^{Ϗy*<\q>o&K,,.q].gk{g7PJqY޺vv ׯ_fuy5A'!QJ`IҴ>c!<aSθs{{$fgg567׮Z-^{uΞ=K"MSŻgb8BИk҉3^МG89E 6OcyaT(0j;7N"p(ElG 8%Y cs/i"ƿüBm\ Pt*)ӍMfOAmPE%/0xY\Dbe4o{W,3+O'JM/_)+H]!Pj `B距D^RJց `,N3B>ḥ˧!C8Meit 8JTޣmr{um%*@iNcF3 "g%Vzd:r99(>X$?M*-ҁ9kZʣr5Qta{Mki"I4yY^^p9QB"`muF:3;{,IsQ8h O服'}\8}.^y8"=lHSy?*{;.AlIH"ZPy)@Xm \ P!!J)X('TBi=S\0gwmMy Ky h ʬ`hJ Sgv4*s+^[ANDQ7Y~99pΏEcooA%V̭i (pXB~J"6V8!Rb\Fx@\UgxZt !LG .7TEK;{517?GcA7n\58Fg/@5(A1OE vvvX]]|3OX[[cood?bmtYY^[Ϸ<,.-iwJF;wAX牍quso5.=$^4>{{c 6Nsmq<`.،ѴZmN`{{ ?P=2[[7iڡ& #'c ;q^5{՜zHs>-['Hw$+L7l75 |b;b3 ]?؎bӗ%,uS{^UnQ9+)kxʑE}d0*WߝR&uxeQ6Z^dtirWK/?G=b+ύpCGԏ :*S)⽀.oWl1t F-U*|4txF'rkacADt10Ugi0 M4MtqTͧQ%4~n{:ֺRE|?@)fggGynoYx"i Y dw{Eg Y5$d)$g7 IR4Az j2/ tZS4fqRZl졭1O=O^{O qIZgyy9NK+SͷX[;^vfI-H?bu4ĉX@ {Dݘ ɴeiizn;|7 ~_nK7B@#Fd#=aaxDZ0d 0H$ %Y!ZeG]FeU׷vGɿBX8 'LtM\4M& QuG(P>P$**H2Nfiq00DVhǵs)VVWdUQeUdF0c'NîX|27o=$I*;i\8(HQȡS֛ʗ |K/324ĕ˗paJ"2W^G7D2☱8_|EKV6P$LGtww3<؏U{.m_)_~YVW hF'<(G#a(%R8_獟S,HR R(p8}I&"Iϕ.ip/ M6&:}E^~%R4KK튌ּ)#Q4gyX`~~''8_x5%NnKc1pWLO1նF 7[}}Bsde=0D H((!X,`3YUb;S)]_/G8y1EY%DwA )2=C/;@=7~ p%\B\~UUףʔ˥u>!RWH$x9s ,FWiAш ;DF(4e×dDSU>wI1LIkZ 1BFAPEB"s`2ˋF:)3dΞ>]ra*<rKsxd}]Ibo8<50&G9s(·1T EyܙZ],D K>_EWUT|T)z|?P^b~iD6K_~;x/`~L/ IDATcqUT:espwuxҤ Cr1 3QE50CCܼ~Z;#,IHqld1C04dIbvfZFUTEAݨE.T' ]79M&FS$5| $}ɉQV!+G}])dY"34bagmRqy2Iq<0HdqB#$! ) Ɉm(!j0dikxNߩ 9y1u&bg\w 5O^-^NlqS7Som۩ZU* 2#ẀK :yH@G{l+XwI;kba/l@y[MT~#pqG+PFvwu[um y/xʰIR'dǡDh(`<&sQJ H$a4/_&HcﳴU.DAt۲( $IVWs5EӰmEQL:0gfjD((x^@ba9^%"U1T#N$.]̙3bj^91:Z;N7h<5MdY[Pkcc\|#Gxnp9.}x 0ĪZ1~45.^kCtݤoށAD$qCܼu9rG?A '$ y_"5ܺ~rKܙ'. G`yqGS(^d"zx: Lr@W?~ɱ1VWH&ޮwpdPT˵-ܺ⇵Ӳl:BBڲB!g--;Dgbh(oW<ߐڃ=nNiRfnceb/q&Hw;ۨ3HoFm}dM{֞>Nڹ=سiG~G-MuJmz6Iidb~{ARcUo iSܜ&MZnwu%ƥMڨFwFͭ?q ܢmMu4S;,0Ӄ;TJ4 UU7}V+T*eRizpx",S-Wfye4MCe\!JPVV B>SSXE,CUb38"}ONzk=C=y'45^9yzz9}!._R*!*㒌'*e21SP*qy IK:F$R$do0<d^a+Z !L$>*A67`/G8zؽ_;O\Ohݳ̻G/tմMeKnͻu5 enu.ݏd۲qXO#7mZ(a7Ъn*ּ7Ӷ*ԆΨn$O6׽j!^Zgۦks6mYiK?nVOjqSZ;K>`&ܫx|ڷ6-_j "-GLA-:yoWnUm<8i(v*a7l&#Qmb*xnUՐGX&CĺjhYضÈjBAeɭa.l˱q\<#z{YTHvw3?GB\ P* "I&TT4*ctSp*{ϯ}~Iw ؚh vK5Om6ؓ^݁^{q߮v$z'|muc'bCvo[+FVAwVG 7@bi0S;04qvn!`g:%5Qv7Uk h!MȶiVA ->7QۮݼMcX4ߚǺ/_ݐih6 D? o synLƖL[íꡙ]dw؉-}|>!ڏؼvijD 5elt3 ho>B }L;qׁBk=+&2D~"#ږQY$ H'ؕ2)5 . }( AH&Du,G![_􂀵5' AT6KFOd2Y\'3M'"\|FG0],. 0IXFQd"aOG"ƶ*O{ RTb[dJ2Q248HP@U߯GzheY$IJ) ju$S蚎h Xd,!Ճx5Q Os%n 8%(HB(x'$ %b8k `!m]$b IS誁c/"r!r++ĝY9(n"#EQ!c6}=}3]=Ǘ W-~En.?@5M0$*hF"\)RVtuE# aY6*f /;+)v>.y6Rm6vw]kĻٓnN d[n֢m$$(hX-yl94Ewƫ~DhSw\ح)J헩'M/gC"" @QTUX[rv H'9~xj 0 Mu$v株j>i8.H2=}K]800Ya0$ "կqȊγ_%fq)0 ˼KJeG'ϓk8k8~4t&Rω'Č'XZ\=~_\mV+8q%GXYɑt1>9bmƆa=Nj^xy?*+,,ܩyv35=yWܸy [o`[%8_xo|X<"q,z) ,,^y=rQFFq2N+<} .=ۿM:K\x<Ã\ _cnnlWcǎp VwVq]rpm?ywz^"v?O7'.`6 |['y'QT>~PAD*TibKK+H=݌OOHW|eb|y( sAzY\\8Cc p1n߾šC^xx0Zzdee'sg1 Ang{#M[xw&S%D6@;IFB%!ge5>L& sQdA Y81} սS( F:Mݕ/pv^nckƽw `iNK>a8?Np'8[G `G𯾴h `sm++ˆMz4xN[b͹[:3uO |0hw#Uj ml`}併۩MOLzJ}Tgl0 PU( ,랷,a"˶r3А5T?T,Y€>"U%djc$IȒi躉,ƈ$X,ŵkdG܈˿# !X PkWo2:2Ie~~~#͛7YXX@"[aaq~X &.b XUt3Ɲ%*냬bYZfPDu4c{\|UQ4d:8\q^A~(H I<'<$*B];ϣi|??Gѣ%c,߹[|Q-17?9d(m]^*/X*Q2:҇ Τ'tyo_ ϯ#ʯ5tY&0t3I*e]$C#ѿ#x "r1iH<_kQcF.oǏ_c@MF&GΑc_P.YZGU ]0CL3 1K?YH(xl6KZAd<4 lZۢ$ k}n||0 zx#D0%#+:G`xd݈35}g{LD27Fqz8Q%dMedl͈104±>p Pu۳Q Ӫɦe?X#+2=K8mX,ˤR)\׭m72l 8zwfؕ2n^ 0c$RI&ʕ+ ל`kޑcrG$r @+++ y y,--Iĺl!$,GUVue#B+:XCP, Cۮb 099g-E:/!bXyZ ahxUEl'rldUZUS?8rQHI[YX=v뿦tbq>x۳3HD.#iBDB "$E&NY3E<ϧx,F\پ1E~ !VBoW^ih19)'E>w,`](@UeRf`uu>D?r>4TEBWe(dZ @ 2t*)ObW+HBjա B" d@DQ< AdOa(!Q_՘h]f3H%qRMqmw߶EGӇZ!`SK٭*>t=&$6%~mR [l7;l :]IewJ-%:*yk܊Wo(lѪKZղ3|9B9oAhzJޠNM뛥ּIԴM:DaUEoGZVi+:wڨnK6=HݥMt&zKnӽm适Z-;M}{*%{^LShwS Cp׽kMekۚ5Mö\]Z^G4RD~m ?bpxT&l}\; D-ܡkk9"ᱸ4+1VW$85@0 zyg bZ[nOA E\ktww0uf}x<,|GXŭ7J\T%d)z)j(K%t]%_X͛X2rBax~(Hy\|UU%a6T*~ћ+'0$ (jƗˌuESYZ2#6-QeTyVR롞+mV=|(n=XvގZ;TnLFb+ȷ@i0~]YF^d4ֹk}sB 6~q IDAT&mhqSکFl]'+ m`ojjy[4M0q~ߛKt?|Zn7\#GQD*Atamnml?u|$D2m٨~_ 4qj^xbUƸ}6H=}xJ%d)80"4q4Uut- BTC4U% C8R@$.ml.~t'R0B&"aW-)WTl͌cl>w݂a{Ŷ?6?QeoCVu$5j {N ΍n}l` Jh){ps林-xbmofp[QRݳl@RyD\niw{f7?Z;P膳;6W5-uݒ(5вvBva;f#Yh6ZZO[f,KGÃSGd7 C盿҃I{ nltm`oo~}A*dY!  2Z;PށB CTME4kkHD'3qd2I:FT X[ sDD,0 ,FfGX$ %162A\µtU% L CA:Ad*U06DQmۭD_?TQT#Ct_ߎiDkcW+DQM*$XVU] ϯ(DR":6Q[YVBhBT*eLĮV uQdvpl]A4UFGG) #2= XU$bk<* ks);2E"R.quj L3AT\0`uu?vvH'ry aMϳ C3ate)HM2$Q $rkk-U3`݋uee eA\"fVqQ)&>U݌ǓB%>t|q bj尒[CBEe2B@2Rt9yBD؎EA,T*Q"G zamx1y0swXZ^"" kt໤1,G-蕊 hcQb1i: k@qAĹNl2;XoOګN_F>Şq&`؎t0w eZO#m 5M>o#lfA߿+uSOcp7sADlR:?$JҹƝn]Rjtw@k-m'oO򙠏ۏ"~<wh8^2$׀6E}4ּw)0DQUdEoFStwwQ)s_`ey ӌ錎LT =K6!|$If||T*E>_gŲlFP. I, O317s_/WoUM᫿*CHaÇyk~B {o3>5AT O"E OT(308;޿mrKwxqCӇ)V$Jf)+8My?y*j(}'xt%Ks`j#x׾:G`a%jGV < ((Kܼ9Os~wfn3grrk׮S%6XhO 5;hgwwwk)}Z@fG-j5h n k `4[Iw փ}N[bKzkiqCdG ڙBͷzLɹ h]u܍Kikwԟ~թԲ#ͭH[IqRf2e%I)DQeƶ\DQu0 AcYT*UJ )[P@Y+/0a(XaHdIQ]d EթZ.f0<:Jŵ"=#Tlb8a !C$,/pCX*cd{^-t#Y:~zI $Pcx !(*|D6ۃaƓfff<54S,٘ s|g%N#dHX$IUdIV $t9XDRɓ pJ߼J4gnaEC=LE#$}șGrܸ2G\yQC<%L2<2ʕkxY@e:b{ $jʳGlvq`iܵ1vvobu`=!mI[vwF 37z:lF":ݕ:mK~*;i >MҚ6Myͦ]^r>좁@_!5 PE4* (BȑCkteȯU z{D#ihL uZFTRQQMc:kKI& Cɯ2;;"+H 3-/316J2n,ܙ2xCC"K1\\tUE%$[&3XZ\@SdJ\.@X6Bcx8yrrgnW.ګr!}sNOOccc|Gscg$qFY˯r)fxx!?(xA.(3rqLCZ)sa)_E&bxxsIufn]GSdb*KKE<MS1u "pqK tiw荅]J%Wđ\%ӓ%.r/Ts, 1^A$=D,]崘=],vgG;GHw4G 7y4xxw$ GaӺK!)"##"EUgUv=^,uuLħ7i0 ̟ıW5qk5~z޸ǿs| ؓUeRw(4mmΞ9#o;,=mT*:}BDu?u4Z@ 4k &d !@S)WY?6 ||4sbG>5Y>;'?]s}ufgjX8&rY޾a0 0`jjFAYC ALLLOuj=&[EשT& zmw9u|Օe ɱ'Yآ2113=i4.RupMǶ x)i4h CEyʖw`&Zh._&KR, 0 jsp0T%1;;c FK.ixKuSX_`oWWVLNN uYgrrZdu*PGJ<xhqj:'OCA>p|0,.^mF$qXZ]W |*~4S rlaq}s9{;;;wo|mZX4-//ssLNTwzBs);%*gΝ^'r[X`sgrBuj%vwwf5L^[1`mm)M@ګ/r fH=6VYSl31QP=sFC&*l4 n߽ӧy1W{Ss\;qJeP NmCJ-$h4vww[wj@Q.LNTpM*Ԕe~9:);`N?PnG7k{1wt U?qp؃zN=[A\ UsyRTe"2n~9;R:I*Ї3ˆk{-RxmFEo OERl-Pp"񞸺Wn榝z"=ig=c5H{˒ogO2Ɩ>^<-Nޔn*Ɨ3n$=g]}{Yg8 獥Doպ@G\Ďs8z#ͺ7OBJz~(7oezj- PR umraDN$L< È*y^-/lZN'Xau|ߧT*aL qT*!RβA4ͩyp>AQ4iF*rzAj#KRD9֘M2IDinӡlbai74^)˴P:h901 )+Ej5Ǵ,-gggu)˸n09q;;a`6bq(,FAurM&&'#Rk `ٔ%К`&Uw7E~ְé'XZzHeUףr0L(  4 D&Fʇܦ2<.\ޝRY_̙34Mv7)(AT*LNN`qc"rȬJLV'i6j(Gq'sI;(ŗ`1iiMR%e J{\S!W2(OdJAqƐ9TDVLgiR>? h`1w8u`֋f uρ@X*Xc^? \D鑕~݊9p yϥ^f04xhIr*H6E"=3fI0+~8:O$xcO0nM116tMwhOx4e $gJò}UAgށGT~<:=D L{.Ry>abV4Y{磔f"s Nbkg 4^:339sG(l7R~ B x7b.˸ IDATme4K<}i~/^ٹi?~[o}u8yW^ea_{EgϞ`Z+,-=D)K.x曬op 癪Nq 4jrTuj_u&Ueaa׮q]~7~;p&'g8y4erlq)N8+m\{whq?_ĕK8q|}oŃ?¶$ 3SLOOQ\uɓ|w^=;xW|'|~u~~0o:?c?W^^`:w.J|0p/s~䗿6g?_WΝ9_{\< ap)L? H&Q,Nri.\?sV6v5=jOM\_#"!20@J8K`scZ}1 @cDRP(ؘ& {/` c-Oie>l{@6 g G:*PY4BlP1 7ɟ aI]tfi{NERI_Ҩ-lUv)#Bs ̭" 9,"ONZim?R_[ɲɍ'e6e'k/"= ?4BzXz^zSFw1B`R4M2E-sA gOC4,=zDŽ*^磟 Y_V'+x^LM ͹3ܻ{rɢ:Yevf {^쟲0o}[ <νwYؠlyMMNa~LcoCk>;[\֗gNykWuז9}>2SSUn޾Ee̟k(Oy&VD?,ϱQ,C> |t ?,㆔SLNP.U FbBTezzP4a()'Tw7-N1A0x2i0@P:>@cqKFqcI_o-+ppȲ4  ͱc'q@F" ?؅"S3sLb=J4=w9ACbhMeJ<~$訰h$*1>9;;8} Tvh`Himۭ ?x qTHhNi<3'; fNR4xFGK x71w-p[!E4 P!0bi d ԠC&ef*! mRBkM6NL s0`wkmgf,RӬF2 r`.*By.EdvzV'q\0)KLsul@hE^#pJe077: 2٦\*aJTq8uo 1hV7L LMMx+^ӐlooTpq/αJ,.rEg9vlM[4 n}~瞻 ǎl6XYs)WWT*\xmcG?CPq"EO?2$_gRiԹ'TJEܾ.h?q:3,='Y[^铄σ{E!.&h&*{ &f\@ &% E}'D6?w(ElWί4k >'HCPT=P C*3B 5^yUد59:}- h8vyK+wǶ|?|\inlrENK&8;ww~ư\"w?2 jܾyWX,v/`OTةO>"DQ(z,&6 AJKU\:=3 '_b&}?fzf|B][g?jbfggwZ<6u>d{seTlrxMzm9VV9}Cr2bY+s6Ϟc~n kؖDtJ^g}uFɓxRds3Ux VX_?|Zur[[4j ~|oxxLN0-7LMKWu4llqyo'_]y1M>g>F5wwoxb$P-a-A([lm71ngkk篽6A!/2O?&vq]n߾c! GTtD{Fh[fB h @4 ° hBX6FU(aP3 o5Qve>7Hb/@g8*{z u>[:B`nk1@ y}4ELNt"yg$j0\'F` ҞD"ύ_;5ϧ͗O;~9僀 h:w CZk u]T*J%"G儠e]>a6hшѱ U6-0 1+i0ZV乷eY!%!Qaa3KO¶m#DpaZvt,ZG-uʕ2z2 P%3DDG 40 p]zJi,IJ,Ŷ Z!AHBGǣE\LDƚ%i{M*2a CFޛJ::yZmcȨ;A@BT0LRz4 s8n)%z WjT*XM.Po [Kn,fkkByEYO(Z΢OJq>0[!=G"נoɯwqGnCs(;B5^_lD~9>T=o߄Qv_9=ѝ"Q=|@:l0e x}h-N@ 8Xu1Miі$&68e8aH,Df'2M|ߣT*"0$! t! ,R[O{&4 xaBt(:4#E> ֨ZCt ,..rI seaf矿h*o&ΜP,ΫAp Ο@wY\\q=f9{\p˯ŷ̂㺼ܸs K>sN# /&a׮sY.^8K2 /^{W_w~7 yWyw e0p F)e^Ճ! P+ &PJkP#IJ+ha`ZE6w`4.BH!M a0{,AjLii8.°qT&9QzZtg%Bʥ*RZx^@jlz1t PJ Bikzun} YO WJy)1h ӈ ;2k|'1>A0u cQ#$z4P)KKElP@m7PXaFGM 4"&,3P:giႀDV]lJRm/gU"zD*n,\gy>قS|'y$29lT GQ7*}@8YS)Ȱq ra&F1(eMXJr SVJ )4ZX6L cIs\J""hyԊ. , L!"8ea&xK`TGx.P0- RSѡBh!:)Z64P~)dL`Y0@h "+C [8duYzP)vYoÇ)xo SSTy&W^emm- T*ʷx3~azfZNޤtefn 4 NOo|m2;3!->T 4.BKHP At<Zf4M 2w,6>S LPbm} *t*2YT˚c=^⭯_jC1pKyЁZ O[xqTa LB$0C ,i8M4*`:$-A}FS"&++kj5(buu4幋籭H?0E|uRDe % ǎS, Ðf7Fk/nA$A`Z6{ 8.s36wƋsloo>vz%^QaR*1 :6n#qBߤX)Pk.mDHHaK0@PhPB(eH}n%Ґ c5yf"p} \NU(,); lms4VX&:ƅcK|7+ =JbIۡ,D{ tD>wQ:EX|G tD!tD!EF dBEi iD`6Ðb<+˭-Y[[c Z`&]0-- !0$߶eDrW1fh|h(0Ԁc&=$%z6#2v^~8n{ @i=G2hxkcmu$`W:e4GC9Vph{ߔ29+P"G.~) u)Rѯ4rOU䂢 |PM&)|Ϡг{FO/vu>J;: ^i\+!NkI{7N{/atMǑJS.T*!"v/ S;GܙO"DՕqim$"v<Jk(4*Ԝ9wzj~FV2M s/eYSI?w۷oS,)ll)xyyWX^^frr]\ץZ²,\eow ,3\{GT\.333͛7)J#T(FAXu]8~033G?.ˏϕϱh* sh ݗt]66(lP8q8Q=) @XE5W+{ܿ.5](Qѱ`-ږuۺ%/hu7zb"^LD֥-g+mgR-0<0 L Ìڇ! c _Q*0?C0Ri{M,BkVS!f@u.•ϱS P * S8~!x Bziu$6-Qې,L.\aNґ,7pa3kJcvb(l''H8:odY3eY;i(QhTLgfn`o!c3B+Liõ'ݟ;'Ve~E\w^cYb1i) /?MLkǖ%UukL; e5]8Rly˷";hiyHO(:,K[V)t- Αُ Xx^|)bHS%dP;HiXNr<*/26L[s')QC`_͚3uI7'OKcD25^mV#<}+ f/\h&̰0ݕ3qNrxҝcr0'N>KDMV:uwƏw֊Bdž7%Զ:c{_%kj "鄥Eq 9XaI9X' $Mr1Ԍ7N/ soݠؓ*SaD+ZH(:Gk ZFjgBu)CDEsн#4;==B61ٚZ1;b9CIFp4'ƩQo,ʜK *R6li:OP%Ac" Ʊ< ַ$ֿaNg҅B6A|:-mpGz KnXʃ3@q5H$!yGHP4hqե0FiaLo|qxtyfɻ/DiXB$Y!) vyW{^O8#@A~K4@XN:qYEqH#lؙ;wzyyH?f;n!m8N .@TZy䥕\@6 !^U'Gٰ(N̿|^8v-6q k î` ё`$ZH(V}x UhjEf $YnqEyŁ@Ӕvkz|tЍSOޡPFT$c=Fs%h%sLH0Ue(k'7(Pbs6YO{g2C'-a@LԈ+A |I&0h}:BGf|k5s׌4*n4t,gIg4oRY$bS&1~y@cB`]Ii" 6Lb`i8l$ږ_G0.3t ձ=LMVEvm&mϵJ-D, &-0 |hE4G#BcKŪɱ9^~<^`{ViW0 (DK mDRS"$P>RFT؉KݿHVfR 5:uVwAH0b_e+$*qt?bo# =7 . MaE:V_v6f§԰S+\ Vdk؈r!‘wީݏZP3D2LI] 0?1k7#`X>SN'DbZ`TYh[B Ӳ֩#CwEyKGW1!Rxd䥓;H02ؖE揞/Ӭ} ۙg~4i-T*n箱xR|I]K+Ѻ-KwSZy]loBuX_HƜ$țpL/.xQI4fbu*4M۹72:JN'~$_u䶩p5=i2%`9 T,\;Nx,^ح]giuխe QB/LK $asJխl'$@&Lr[ܤ"/icT͘toQOJ)_=e/5:Qv(ֲGcPsx9;V{`lKy.WG<"2t`My;r~əh y3 Or{+,W$\%G>8R?C;%nT W8`S Wg @(`|(@!9:ԑ %GJ@J dK?igZ^}u}] ;f9ZV7i|aR.qs 00ν}A`YP{\y-KromԝfTv"$ CgJ=fsI.+0>⟴tbJs_*B1´h?ON LI6Pd]Dk:ٹs0;y$mw" -)j-?"Be4MCDޢ E $T1Y0҈BJLӢP(riΝ;aHIO(n˖W_B` Z"@*I@ !hacz,o\څi&,!"\3Th GȖ'a:Vy}7:NPJ>:]mPֲBFNvI"RJ ivXjP_ 8|leSCOC+bؘcpqDGnG#5>O~tKΙO"yDOZ%z^('?9ϟ#.3!݃E?/E0|=EHLe'N@~nI|F6nDV1Y#n,R$:G?Jyb5$hJZcVsiG 0VOb&e%ʼnaU*O|Z#јBG!frzô?/͟173)(J ih4a OLҠV6MϥXPC Yw* ejҔ*U?~,RP(QJcTJ!?o@덎0QH]0,@瘞;F xg]~I:{gC{2e5ÇEȢ41)0@n(^hi/ 0`l4–%/{CR"-'ÙL=J/Uu9Vu2#"| Oy'׮ +xwG>i8o 9* ԮNj@M@8d( ;{NY:Wix@=4+'7P+^ymo}|'{c>xmWp}`y}\4RA Ёy\# ˺ ޷Ks붫U\pbB] W*6Wq5TLʯ1tS+FFұ'Z N痳8$5!Z0F溎^{\HiR,u"~VJJaJ*l!@v4L C:9e`۵LVESahΩFL+A])]dFbqT FoW⋄3Fa~䘭ҭOJjqzG><Z@;DժF[)kVlQDOd@fpR؂oÕ كZ_? ^\W~7z_/{'MYW ?o|}~?_җ?3'/~~?/._[?_%TU7.9YCY`Unw {pcx<q VPG>}]W^>֫ ׾ȧ> wZnWoj=^Nϫ;??~~pyy uѣGo~>xo{*;c?cp}u ?x_@A{ :17Op@݂xMEç ԰³K>xQCUT>gPװ`55 6`jpk҆@` =+6`P]z5;еi* 7LXl?x)&PsGPZ}@S # =i7VcN4gb#sxD3EM7-cF:gw߅3xO+ooï/???*|wm*2eM//^f j =zW/O _D-ᓟx 5'O7~ova>BL\A;X7P;ppxO>Zÿsl?{}Cxl/T.`U] ¾9_a6}36u`sb{"8}js-I35v4ƃ II9ʢ7Ozdp~fri\iBs>NN<7R8=q7Np!9ۏSY&֎[s*@yBl*\zoUEuKk4EMp%8) 'H]U={=ܻw?0qv=TUuafoQ=9-EY6 _<7)گ:| +/=z>3?}ԧބϟ׿_k_"|/~w T8B ~|ᣏ“'*xWakVW+op%|v= f #+?iO&?4j|-#_t0@aU])Y|aPh#uӉьZDU qR=ś[Ts<왿=v3x;g0edDzwn]p~~Cϟf~>9|}xy)q6qg "pIeg5pB 悆6¿ } >}{+V3 jXAwPPvVjb898^{=WGxԗL>gX};&e, sܷ)U[-œRɠG?ɠcR孔bqs^͔WDH_X]N17+F塏EN h6uw1xC{s13'Ҕe?+sF9ɬ1ӘsO9- I'[ 7...ՁB *s8??/_‡~=l@z WWWp,@ˊ!b9pDhY ϸsu`kkD8[!zK8 (LoWnn{~*@P 4$5vPc jݪЬd`fKi{;f~~7=zPx |~K_Uծ4s+@t}:9nמY!w{Vܺܬv܁RUͭ j qpXyځ~9dJUfݗnhw4'{KY=65ǰ ='[9@+xӧ=^^_5\lZjMPO>ay<^b&z&e`? LneLBǎO{*S:˻ /8#MnWlF̱Cb{Tzyz2uPj1 0fJ/[v#eG"kqv`2-3t"C2>$#n#,x#Xۣ9I5".-nͶaaᣏjwߺ[&%ធ8$;~*R| BsHıҌUc=cuystS=]@i7$5 W.v=)REM7Rh?- $衅!na)h0p >I4csFw N8dcԜ_.iOp}{*@߃n\Ѯ" ݃?| ͪ=V5ԵSѕ[Osns4.1=s3ՁZzޜ;Pe_]kpe]j׬s1 aqn );Dof܃ngMZ*^J8B]ϻ!ߜk.X+8?ԧ,\~utjՀz݋zl<\+ՀB}fuW1]]kW: *@@aU` Ƕ{Vu?pyl_om>{n-ͪRs_5qsu~{iMY fXz|fP4sem 0\jU1YDžd!4Ǚ"x"|dǨ-f9@00f81J9H&Niu7X,0|!(7Gt;(O6 @_0gY ;(ޥuYnoۇUu{꺆\]^Eg9""6 ]߲=xoVvu(?%.}18_ZOtm!bL`;NcV¶N-gժ?!Z9=-p\ݕ<u2i 2'o9MChؒ+ٵ :gћ]iB;Ӭz!TUտ* @sK8??o?ϟjUn+xǰ^C/Iܡ̭bGtP`h}OKyZ=v~[o-|^ _Q hr m撴ZOU5Ȟ d+aup H;<4z`Wב@p~TBl1Q%XIyc܅NF&}&FZiq*6-Or[Za+RE"$}b\nChl=kʗ,4F`cLN /? EkmϞ=u݇YVyϟ?■V+^x߿6 nk|yͬu~?[;<å UyKڙt"'kvlnzˣ}Г'Pp]_G0J)ZZse _ aXxkoNg˺y['oaZlL}!:N;߄af)dfAt>.`\M#yDMtfxhg=P ɘ( ;$ve`)C Μ. -GR@e _1+,sE \h<\__P\CQ+! y(l4ŕ: 5= w٭:r:㐞*HE쁅dZ@7aa3<@n/^v <ݾ_ $La5XwðD#ܸĩ&jU5q\/XF]IBi9*VBWn[AD؜_9"`՜c~,M.*/aU;mI5JF.O||,;@Um <дiw:4`זzVo!0v#VRUN+&1 x i[rCv*'ٗegr}i>D߄Dj<ݜ# :oq.!pr"/qgxWy S7M}Xߴ;)蜬WNta5́z47 E|h::!zdſ'NoFaf`='YݭOu3Krq([]Ɔ:r^Aw$Ah]qFA$)׾.lY0g=b b@̔w mt!\|#2 /mdـe,58/i\"6V.6'~s*ڝ2Mo>hj;uR~iF=V3|5EMH 믊@nlZp!+w>\_nPΛ»:͖WyUV̑v+'g.4%iP43&n7- -O;zNf v<}ѣGNW-%npnb]ݛqjUfɧa`6t@n 嗹UUZ)IeӀM<%Y˛[i }L݊unnf~£?(eiso~nO: f|0qrd S'C e|J.(䝋WpCɥ"ZEX\xDZmɋMǸ R;!sS .^6[X[8\yqq,la u/&8BRXޱVƌ;Co*r!)::@~]o>ӵ /Vȓ~"ҴqT{IKmmقe|Zzvzבqƚ)ąɴpTsT7s3/it^Vga;[+DجP p]pϞvA2Qe٬pjLaf:=Esqjb{/^B]9X-Ugp}vU @9nf+}5":جw{X`U!v Pꯔ]K3< M;[!5G bsRV|zF9 C9?Ow`s(9u`0O1Q!|>իJLm~tl=AKIX*^Ӓ^!Z-|K5}v_LnN[nxR}LINt A 0|֎48n|D,ۑi >2uR tftJY:Ԡ{I9? IDATb,T,br6wH6SӁy`8YJ> /r-ISLGwDâ.DgWyX?xv߇c/r{[Wy~_^| ܿg \=@CctkpzU]HV9X5\]nlf'ӵ]|{my>n˴?SRրUu{Y]sAZ ]rmvݥIES/UG֙w5!hagZd. $JjZT`?5Adwۄ ûޯ$Ga-99={;b7 fחxˣ>0K)F+SeM-nĖfi¢RD^ bШ̐ >,]L3ҼI֐ 6x`RAU @"DnyTE[&"2tRѼ?dku^-LJ"6vЄjLi I(@9 MtS[Gd>R Hc7Y~$ч̎LDB! ±FfcK\t{m E\w^0z#q:ބ`07plZjS:H@ ~RҤֺN,+? WۊKnI[.$>4>v(H -Bs\lV+\;Lrg|d^}ro%U5RoQ h?oeª]gi 5~9CGr8sůڇKy=w3Acx5aӒY2$:Rh |Мrp|Nac - B -t;iN 0ޜ6GK҉ZZݡ47KѺco~W؏Hi}bWx[ ]-Q$>뎬RxM^|qox_R'.M͍P2A}RSS!_a:-^rp:"む@4if>F~h -LJdMDf5آ kǓ;y(,:.:RyO5󈷨/ !*F d/#p.5q]MXWlҕMf7ۘ! rh8\AkrA.hZH:=--x`'-IC"_k4 M=`3?roS=ũX>>zorH?ޠϬk$tca>p縆08v~ph4Sa##zdo[~DmFb6Cqj頠,@B>u]2B8p"t1e-up +̿EvkI2džo`ǝDcR6-`>i@$@| f$,LaBfb(;Dž[O&kG );?ͨy͂L%Gʡ`pOl6ͿlNXSi[jd>9ҷEZ@nAFIbzPd#ckp6oZZ˭6xnB>A82Ή $(n{J4u\w6 A؊"$hJAkH[Nf(!7o">!]89m=m5S?e _N=4\7@yZjả8:i>-3iKq-W} -,K [xïj`i 3ۋhfp&I>/d9flXuI91` 㥍dZy6 9l.zuXHguҸbLV\KNeToLZ%p }GHw32mLuAEtK>$ˀ'4@B $̶⎩,TlRv+;_AHYkB]Zf d`L`/Z@Zh>Rmѹ 8nyUmƄ ߉#-GьŀP7-+eSdk;:[u\jaG_ZdHIr|;OslQ\|?G.NpMN|J6уɲԭm$@p 4zi;gMS(iZhTJ8YRyoQܴ@9YsS n|ABfVrB3XTzTF;B\m!sOĴ-c['*>ɥ$emF-јMC碇'?a!3,Pk}<ǫLh=fr901ʄ'ʁ@o^j _N }"GɕÌc>:lB_+/1E<2pLiI+K ńl%Z;oH^,3.?u_B6y͚ۍ;yz0"K@%c8mF#C"0e9ѦHP7Q@4XXQN968utc\h;@71MU>O.7 8] IvZ߈!wV 6OɿIxZdQ9sT2 e+\p"T}ӷ'U\))5-P H2B[%&I)xfE~M5)MY]Q<TFЗ wxVkLMZ;/ #?zr ۄ[2~]; ulH|)X3[;j$JwpZ ,Bnۙh{QxtY-am{+"4^?`;ox1;riW`p3d?"lס44}nryKF7{„!91k:-K9 NFjWqwld,Tg0zch(o'> %tE!MT$}05³$4/ 4W1r MZs0xr}8&⥔(Д^$=٩1@[,3wzNVOz&\KN`q%6T{:J2ɯ4O{zz~j{ ^rą 0a.beQi)$8w"L!MɖŐ<X[<]N0͛> KMXLepKk:ZR423v\! iV*kshB (,\\Fkݍ6A~zI7nS23u[ya@;/l${ݬ!1hn7]);}v}}e)v R҄j%j%QpS-⪡(mg7I V#!|ZaM4>u2@J\ ^i7an YI/8$Nԁ:\J]7Qk ned ;LzS[surWAϓQf{TpB F<6u:k!Jj[ǩOyuSk+;OYa?vPo[<ݡV#QDLC\h&e$y4Q^:P4bp @˔4o8 2:!_ e@`j"4D\91W0ޟxxt6 ̟|`deM䀡Tgjts㆔6'*4!@҂G޺ tA@uVl9m,,0KRyHhBf]I5+r{]Ew.ېflŷ HX#nEj{$};SQMg SR*-NP&݇ y|C 4१ʾWs:n&PQR05fjMf< <.bEŤ3=ren6K" 2_Qpy IFR _*vfQeڱ1\ЇI"}. DzěTBǽN<Ǽ_wCMLVOs3#84V ?I).yVHMp'M#m%H!@y,ȉ6^~npFx81JafQ5 KV{!Q &odwbmh$멋Kyk 0|&pMH<|uJ7V]Y:~1烂#LzׅϦ GWY : p:Fo0۲e[T~e 2ǣt2ƇDjeݷgy{0Yx0 NJXyY;nSx::3 Wfρ-c} z)vϧu|rE6Y\ҏ5t 4B zϽ tq(+ix[L@)}{6&\}vqk=|<;&Fq/l'diX) P,,VWGL7AC=1V}TH@&WlfJ5vYh]t”wb7QБ-Y@[jO۬d|4RqrFZh6l MDv 4Dw~`gY1ʘY|/3?@!DʅPtC>mB_r*!MBiΪV9;L0*vv0_+\8,e{o4 i"INz (6=րӍBϱ=4@eyXփ ~1yFƍ$o\2xctA.NJc"SS]Љ9B{?iX72cKC.^WBv23P[[W%R=)WOL{ӆMHS&̤O#fn?-d]^>yȵ;~BOC}.qV$ 72 )'nHÍuXf,Q#Bʘ˖) 7*-4lc^^8h,{9ڈkI &8Ux}rLmi@DSI#dR6沤 ]; '!y t,cR U. VyH Y2Q?~tIR<{BbBb&p>u&1,J\P]kJ@?M!{[U:=w\h>+5 dQ6~LkGqʶ8Ytb:8,l rm\LAܛKk/Oqt+0h~ 1FGЧa+t<{=)~/SZ2- )U3&NJCs:ir޹?'${fƛ(a$~yB5Ϧ9$ 2s zg`j:bZcC0jO{/[-oBƁα mAED'!aS ܊%I gd&Jj@f"i tQfd.Aiel 2x h:(L0A%K Z7i240NPfڈ T! JaHn* GTߑpN'җ4- B -to`$H\oS7vHsΓ^I!Qc(Y?ƈtCR. \{i42~|iL@J@N\J:F 0 >#i.Oyf2@ےKhmbSvS@ sF@uz@Dxv҉Gt䲍wP0i1Jau^6j!(!3#}]R*6tJmS6ba+p1 CLZgKA*d.UVT9$8ͻ-_N.B#ɑxB6NaWבtMZ2'ɵ謀t؅7c1bGK^}ToB/GǔZˠ$*~%JtK:nqJnՎ+z tly3#9.ZeީMȲߚK<͕?J [L&E̓Q066r@*\ ♝PF}@=J\vƊY{wQp57A8<+̎׋"3-lR[E"ӄư2ř}Yql`; Z@ZH#Z R 7Jm%2UuY̑@hLFA}t)m HOʌkH#M6LFc*Z:5=vIecfDC= -La*?{^'fS`5]2:&rRia[PjD6ȡATrB][[5,q48cz^ׅi0?x4KW'f9 ǃCOίx 5/35Ȝ؃^ ^˻D̐F`NM1x^6S s[j)ozRgi,41%4{6Ii'k` +ȖzA9 X\t` 9{/cYf c4kAĔ3\g4Hb:]O? D GUB Pհ0V?8e [!slyp ڌ :o|X4鍾(Hqx\qQlȜp*C?R>r!MظnqSM_Nwiu[q ࢴP K 7=ށ8bjDx@i Ep'##|osS dE~0\& v7ld'*:q+9%຦J ]!oc=h؂8Lg\h"3vv+?ѓJbG"r#*n##EtLzW`E͂x9'+@Q=4Ńd ާY ơ}~@J7'9<16sqs Ժ) 9Z8&A=40Ʊ,O},fs]: ,xY^xd@T^>g #RY$ҟQ'=".T I9N Y龘@ 0HsH ꪡG14 kiZh#'㍿j9^7:NuX@`2xD h̜.=_?BuH"l̰| {7hvE |.kJ`ؒU ÇupJ EF낖Bh7 ̼w:pk:sW7ŹӲs=ē9k޿4PrT6(h+\`;ὡT3aQyOa}@Ê]98Td&EpDcPƵ$-0Xie(yHε>ᢏ4(A '1XLsމ2p: TL0Im@2%(,W(:])0ٜՁ\ ]/7 nNh8BN1@&=|Hg {br@cXS e_; OTn"ws WɅ3!y&[f5Hco1(1x@ny/e2%Yd˶5<Ω,ç""2RJi˾aض;PIv:?cm*U)uIbX,J;'zDylT6.B'BsZyAPa ىc!@r0ԗdf&6yW/IV4$iS ܶ?֍SY C=(aW[7qe vRx=9 ~#ˡO7ޫ E `ø9]_WH-6Rd5NYi̴J@! {c.3/7ND5u6\}F#hn7Fp;'b1Hd 0tC;RZ@ZȰ5u3jQ`)ͅ!ιWhj&dHd,q+ᅓaYЋI (ހ́9ۓh$ĝrpU7oxCkaKT̅Ɓ_rqrspmx-rW2@wX->ONOaN525g9f­'HûqR7?yG :|$')6)Y"w⻓‡0 J߻,"F#]HA>47ˌӏ4X\¥M[SnkQ0J"|CbpKk})TiκپAc.yxP:o0hka9\-^셬: (:^Ȃ$BسxgNPp^+:^}V:CU׼"$>-@L[dbY Y\ķn$br.2xK]B aC8C̣p@q*}TE,uwf Ba*>ZEӁμSjZc32Dpg #mt .hp) ~\┱ y%9aL(5_2#OPOrR1}a\U $o'wVN>>^c#z*݌8.\Vx9%,0Ftv &c|ȕ ĐɑY~0m*w Qvr?vkԹnY`ȷt8=~Z.P ؕjNp,1mKCr|iL0QK~L&rU9N YdPxo7E xH-4;Z&Ǜb8kN(J\qXQ| DQRӸm 5vN Wv4bRz!ȗ'ֽ ,]X.Y(lK) laq ` ݟ7LW'lrHDǼL- }'U;|NMI~8G˒Fru ACajHoIh0%vXGjnQyx#pyac #|&3 BᰛVR@ ??ī%8伲Nsx$%Gm)TKvjQ(3~'A-)/dC!bk:7 _ѓfϽ 1mG݁Km]ޅUI%I#xGD-Ѭfp1S~egd6ޖkpy,Oѡ \H&f:ҬQFB(llĤ%;0ϋ~)w# @z@L}F_#;qs9a jUa̸$ao*#7bP 䢇Gװ1ʎiI+4h`0E;2Q#8M3#rTqfhbb?xKݸrCO[fnGD(>; 0*@Ra:n;bDжSQmIFăWDAзlZ@Zh!9yRYQ}`=941ZWt.IydeLNŹ uX$뀶|{.`b 5?qXpN9`O9)|%Ͻ$:˒(n%w4.'r%^~6ѭabȃ-= |91:MKbDOqhFyԿ; -BY4׍t=5L`$ŲmUgdf)c&S#,~|V/v)o"pyR$}{.͝oi?gprXZ]3#  euA=#H3TA؛" Crg?hA7UhҰN^p:P+u/b&1-zgZm% m7[,x(pZRwMѓ8? :1M3Ddi5ƑNP%̼|;UX*Vbl?p.2%HI Ko6g - <0} nA뮻ϖ >?r]w>/-E>S yri*Xrnxs87Fs\"gu/ؐ㒷P :v¨V߂ 3 GW d;MTK Dl+p"zג0?rP}&,}!B@5aQF\7N&,e K B !Y(]Ox,cB沐YƒS`5tTYy ̒SqO_紗D6ʰQB[1$2R3Ȩ0e@-Ʉ7#ޚ0.huys/$&PY'ge5;[rZwHg* 3 '8S|o)"=vy=!)\E'T {(TGs!Ց >?ndF/mNn4|v/[y/_ї8 V:զABH7^#'.BGJpNx)D#lAȪށ6a]FH(gs}y`2y:`sғQ@2{P,uv,< Y dS|ϠC(-+o qT ,:Bv2aXRqѣF.bIt^K4.pW1mS6%} {,(f$z24bMokp\ނDƺ)hT8RD;:4t}gYuh9b8F=d>cq9DM2&Qv(oDŽ+[Zf~wă_䲒 Qpr!>%NLl[sRl*l9D(ĆW&gLm['\)8<$P)2( OepU3|tII$+V/^P9 M opGYY@TX u$qp:Zc[2Cs}dF s_``dRKggu\SM1x#5b;.X.> 7p7X9B{=⚂SyJ/Yat}J+;[qNWlmIJ/_; h,#)3Eb1bmc:G<#jMyܫ`yt!dXB.U4#2ɖ}7,ʗh5퓢9BZ:Âz.a8cl3PZFj~A < h(謹,#kZh,aڄgVcv*Y 3O&|觍+hBl=r#'DB?r=2y0[3b+a4A5dANSv}8T(Rp+E582Q - `BN #I~%y"a@T[-½g@Kb˽d D3R ~e|?=#|ʔ?O:' | ̸0D.885Rgw>wam@7JB|K%餤ӣRš1r~Ŧsb#ǛobJs[6B}e8Q*GA7P︖^&ơnsuSX|ُW *- B -СIaǙ=ԗ 48BMts+| <{8)D\A{>U,@d xJbpmW ,e Aã~uE;!@ݟ"[?2e478B6@ SKXO0х}$*A MZuNy=rZ 7n礩P1X*L+^_keZ@dYr MmtnԢ) xv7F=ͽIN~tWinQctR- -0~,YJxrZ]ä u)1&?7x$!q%CzE%XPRKxD%m4Әj8)FGxNOYnqll4ne4Ė*:G=]QFO&o\hF;ׯ>KlWKHWW4)BY(ǑK]iUV.xiAIQ.ɦTiB |81S"5f@N e-`ڤ#n!@ ת1b#i. P" ñ: {q.F]s>RXm5iZA 0 ʈO)]=ϴ>-~7 KtfԷi$u`KBQ1fahN~XCNZ@@V ^Jl3oǽVݥC?<XR=yNk4QҙgCKLyO˖% i|yPPLzFH\~[ +%d>#I^pZ8}~R`KEɂ$}@w\w޶|=r |@NirQflo'<e 2M,d?< 9 oT"f3%,HDG0db6KcTS]wչKIsaT.EYHP^ˮC=zh߲uWsn/6Ը cXAZf$;#cӞ&s'A&!Ҧj,ӧCF9xwGOf'<~<fZ|{7bKE4.}7 7"K%Cw[SC"#d0O}"q8y*/^n&'bDA<'ma)vGFiPr??,ƌre=4Z} &S'|aN]?)'Os9ϳPj["z2#^Qy%9%o,obH#R d%ΏǨMۮEpקZ.QZLtHe<)y]$h(6H6eFݐr&`rBA wlHns㙢? ޭV+x1'sig&v8{_j w'fYw߅?|j?1qX@̐ .2w\ͤa rA$NcR9R 2{}7K&ڧ^_Fg.Zr-byؿ?y~(_- %C_l9a8T#F5뎯yH%{ "Šu]˺6]*DEVEz&$@ $B( '7on; r<ޝs9;wX^SPoY JBKδy1E;E|'YDhN_k(&N(am?$#4.APh>CԡFb^!/@ehǕIG4S6eQ'j d]cB&{v&;`2{\NfIT!d1{l0/pVL8]\t&d`o?в̳]pCَJ|V??{ Aph7iАԼ%7=CO:gdCd:ܓa#.\e<):[n }7dNɭ<@1vt-Htx(Y+^:Љ&5ڃJoHu|R2CNϒ]:$Qv1,슣)K2%4Z/𳉤2QtfWmYj^!dWt&oW=wr3h}Ϳ 0sb MpMPKTJe~Tq@Om@ yG;uoj*M4AǠAC-k|ӧ'NAPP00hP/XBn~qHo[M~cd׎fvNZߛ뮝YkZ=TVrX]0\ŧ"1ꪫeeeؾ}+֮]zTT\ҥ[nl 2o:x[O IIailp˞zNW_tF;.},Iuۧ#khJa]glY47: v|{$;򤠢ԑݗA4M duM{W&Luφ/n]bP 9yJL߲xvȠK]|iV:{;Uxey!J6 R Q/b^;F3WL΃Yc5b؝_nNR5훺ϟa"`{Bb2sͶ"aj4[##Gf+Xhq,ˎ<K- OH9cҤ)UVJCY9G|'OaÆDyyFEǎO† pH&Ν;M={cBWTT`H;#Ξ=#ѯ@8΍;wnϖB°'qX.l N>$Ν+\>n"&Ownҥ|>x7þQ__8q*;V[HonmRR|VСCmm_^^~DZL1]6^7EE'PTt{?Pӧ?~<Ǐbel{ՁŋCiFѣxͣ;еk7{(:t>^5:_2df0}ln‚||e#jjykmfw,dJB"js8~[]&*ܧҌhT g%s$>r^KNZcF+V6H zHzX[5b"aoj|a̱N.NYew9 ݲUꈰBABYJy%8!ԨC78ke6Rr8@H.UM6dx /ESdϙ)|X.M1ƫ3 mmΔiͦIQyK`)G_ ?hn~0*دZSXX8ŒߥNP/1qdv躎+`تU+\9*̜9 ZEΞ=z>}t8ޣ'Rt5dcˑVHLl r!3# ŀCpl'u))]1py`lLƎ(s% ^P`0Xg۶-ػg7khgB#JkK@\Õla7i+]貏Gwwy34@ӔEҥu˳O3Nw9s^~{)*K TqjQL8QOv5th4u^9sg|z&?YvJ˗LY3ե{<2Ev?*:1Xp."[^^:8STT?/ⴛN~Yu#M$jS"2iLl )WS#gMJi2U=.;kOwH~ɜ S55.ɹMMR6Ђ?_Բ@.\{`Ѣb}>c&JJ=;wcԩ3N(D6mF^qY1tXM6231~DAb칶w͜y @BB;X PZz99֭%;8QW.-//:~GZ/c{}W!!x/ɫro]'xϖX`7 yԀ~pSHy29T&A*Ov!zV ةk zR'NP[#ɣqFPzZlgOI4NOu=1Z.HYƖN'=3EF!#/˵Q>5^>Oo*5ˈt|FAC4~zI7 ?<^ZϪMW> cC^> w3$Mcܜ>홟h#H+H23U9Ef̳O ҵ xH3'qC dOiRf/l2U qۗcҼVh^K-D~jb+Ma<ؚRD19 Mb?KY_5oјzRҤ"0Mgk ) ȐٵF)qQ +2ݏ^p^)@2 :} YCСXfڴin hz644! 0(8v9}||o 'WT\-ӓSwy~"~_8TtgKlQk65J>uO:v#5}$ D26#xCrJxUM9<f= 4^n@M`+ԜR'm$BR=Dֵbd޸K"Xb0W6`YN+UcyyU@QD)EX vTۀ]3mZp-i"I52 HL B{ USMweHGmcQpSGUzN̖|v&IF6M-7FZlm>/ecXj4tM- ௜mjظ8t萄Vؽ{N:3Oai;vX lڴP\| HJJ"lٻw s qzL<#^+Ν1am5#4XW[k)7))ېO,BLL,둖KHHdnr;ؕX!hK܀`^ͬn7H?xe3 gh%dٙkG(Nkvt3rՁ>J 9e?z5A:i]۱+L݊Mdp~&7*,ؤdJI8ܲ0% P8ӓ ~Ghe~nD˔ܖDb*B1kR>CV8 P6Zm\&@E;+/] , se@ i&!E'MJ7r$-LsA=Z2jrz-9<ڈKWD7oĮ];Q__oM9bFqIKݻN>ݻwpݼ0` lX'1b$||| p8퍗|g8Z6{Yhhh@^\HJJvC|}|QW_ۯ0eʕj͕;`lܸUUUhhn=PXBo1^-O 5w,&xlւy+D [2 ?w"KĻo-(Io4Y* CVv4~ms^g<{iX_| ̚5ې?*y~^CCH1q^-{Ma#=Nc{+"""0g ƙg8l(?ȫi"+N~ ]Y-YD\OuNLSdm֨n\Lmi 淇_wb%FNN tZGЩ屖g:ݖԁd9NDȯh9tׇc6XO緦6k X̤r 1 - {UxS!s,o# ˨wqdX_:d)ٯl}s]cf dFKj:iͷ1ӷeʰOy{uA<;>fVh4RJ-h0ڈ+kݖg^"ԲWH>>> C6o~2#>>C C ,))=(6_ ;< /22 0fXDD26mMp()9 ]F`!p8A_s\aϞ]GbbL8 YAhX:sDuuTva˖ @y9!> =zyr 5'yt $o'YY~c~E44/1 yo7RL^S _fve3u6XuQ0I&)FiZK9+'WL|@],[՛i.#Ǚ"o2>.|5yH˱zOD#A+ YCL(O7Hea`ΘsP+ Gɜ 2a|ualD<Ү e9HrRv-ZU'(Thf<+YߟWq4"BclԚPRB 㲤hE۬d3KAUM(WNٚ[!3@1W~&ƿWXV μ %D#7>Ma>q2Sx`io]y6TFCZfL~lS"MԯŏSI".*&QSQ+r`{Drc$q$]M_ ,&eHH sY5*N, ezy1Il$Pd1/9F@bh)4>) >*jv6IrHX4,%^(ϗ~皚кd:wm4RJaT0,XCYX5@8nEY_i@h^!F':[~.&q'lLI p#yњze5@gXNMt y{"qU9)A&?4`aZ"dxz9sNa+na%[էh(I&K%1p M3\&PƝx ɯҬvc1B2; @ϯVΣ1K:[u'Sg#d<57+Z.q- ` P E ]hVфdBYjNuSNZ'n9j)K)VnU*KycފӅH#-P#a5t8FLE+syt3RSͷF=[tA:!SD(K5Hs|@gT&Hܾ} طCxZ@%!0xȰڌj!5r}-k)휌+C|:*A4t[ dI_ tgU "m/I8{S}t.*qL#m(m/p N 1"I^=H y?a5c*  ֙́1,q>NHzNMMZ1">Q{1>Cݦ&M;K~S+pb ͙ ӳEe R`zD+4{B(3 |X33z{`XsD0+|c~f{ݥfd5ů<~3ȬZ@-B-Bx;Q*d!(NDN6)˂RXAnp&5ŐsI5KͲڞ-_ _+ 6F.bwE 8v(A.fkTRn's?eOzt*M K\N\%R/c3$nf}t`fC.#(UY0O~ЙI/ YTFn թՉe-#@ dSmUu'x[JϽ4rN: Ol_ggc`[~1 ē, DjݗJipF۠^H#pv&֩t7h/-/[],sO2.R6kʪjr}Vɠ#p+Ar% ] Ta&ҕsST2MQ!3Sm0솒?9ɋXW⟞u7KlW4^R"7O(A}g>ͻSB [v]ć.ªU+jJlܸHHh0];b oo#++=zWF Xv~1jv܎sHJs7k3{oHV腼\#6.[QW12۷mm1ϗ'źڝ+,cիBClPX//Ŋ˰~jddBppڶ]|.~ +:kkkUHI(킚pXm۶2;uV Pz'gHF^q!.6mڴ[g]?7zcnj.{ʹE`L(}L *'c뎝2%aNTztA֗&)\/1\y>Bts^3(L0xtPzOI(@!z/Á8e7S>~;x$izck?9xw֑RZ<7PQUnv_` *9W? 51TvdjB{69jI{ѺHYk-;).4`MDF4mkxn 4?e}Շ9=wm"׭L uM;mI;0^˕ԩ&eNΚD]8,M֫4NA\I3'd0 *=F)SJe6QKc~Q:6. N5\&@^$3a q&cC&n/FK35F!Udj74* _Yciw.ٝ&JMiӦ*++~:k{~?y^>1i4bZE'pwvlߊVUУg/<*.>.]RmihhGVf:RS#'qp] `?^s`K/MYY`;ԩ3f̸~H?>/&Nѣ5IH4{ 2g.8C=.WiHh`I͢C] IDATD>~3::ѳGODȢF>37N M#RSRPU] ^/8 p,t@ʮӟ1s4^yzKu~\!Qus< uwP}J,RQmcyp8pNUX(zMh0`rɬJmiK_{⨗wϏtb__57V裨c]|?fbһDt]O1b%tsKDUꜫz`g\{dƁ1i!Y\" (((  xpHu ݻpM<Ѻu|3//Ghnv(""3g^kˁ+..С#l驮ӧpCVf:+-;ڒijkkozޭ[O$$!5;bbڵ" طo7tIő#^ӧiL5yf:{ ⮻oHl&Qs-ehtE~$ 2RO ;R8ɨ ~)XP H@rdRz$vqḤ?H~+`[gLVңiuSƙx`$oq S:svY燽{vci5j !CӜ//'ғ;ᡇv ~-Ę1ut<=r7xڵW\e/>CfV:|}1aY>X'uY'ACa̘ p84֢ :|?ߋʪJkWϚCVn = /;,KKK.l,Ξ9 طw7nN=%K>Sňl+DJ bz!\pS&`נðu&=Nx[ڵߢ Q3vd䫮7_?B &]h}K?[ Ž[Q[[`UpMQQQÞ\Vf:*++Núp$BC0pP3?zո; :<8 :/l,  8U|_9 D0~ߋ oETkNmt :tHBbb{ݻwޅkWaڴ+op\)wsّ;|SG曯g^x9l Ł 0id8|_^3g{ކhBl_"/?}l|cL:0-}7|y9:t\;QQQx/={[oEj׮Dy@uߴ [ I/GThv+W+a7ߢ\)ڷsETd$w݇o֬řgѡ}"M_NuD Çaz|M3 7`됒#16כb{PZ^6m0QҳQeL6G ?([cup&n'Ν=֙+u}0 I1gXGT74^Ƥqn|Exw" |huuXrvxU.7_5b+:j(Ƨ_kルпu_sxqvvHă/gO6nE x\퐅mF3 }qp85Ћ`+ďG߶5\7 {gaVg 7_uQgnrUKJڍHFuM-RcwQ3bAx?= mBѩ3ǘ!1~ h%^xIuWLBر/ |欇؝7:P[W?B}}LżSZ+8b( h|q5y<4ߍu[w9DFD`qӭ+?T9gKaź8|$555ܡ=<qm@M]-^=iQQU {E_~ϖ~1 w_?1mZs;:@FVn܂O#", CC-66Iwj Tu>| &D6yĬMBH`JGU=; 6ۢ.kPC/Y6)/1$WxougHJKS: \cp1kȺH'2L?xFXR%~mYA~9rfM 9, _+@}^CE^/O?Ftt <2p} 7GvQkWw>x'0nXǎVo:JKKp뭷DFa!sKOGOځ } @?Fe>.FzaWW~~~x?W}Çp[GGLL,>xΤt8BЫ!|cw]Y;vF]Ny׮O]wߏmCM #!6.A; H[bO?4Fϗ}Ch(, 7ފ~xpyCFZڏ{{~w[6 s"{~ s]HMQ |ѣ7^&O۶`7+#(7͇}g?_|aa{ݍ8v,/z੮Byy9jjfڿoz ի~ܿ#eeq~̿V{oQUU/>_ lq`z: 4ܿ’e_lj\s4}bBP^~x-{ĭőEZ6cixl eeΕ`fzF^Ϲx:;ˍy>>>H:b1w lw'Lnk6pu:E#'fFٷC ,[_mކk' #kKatB֖=1i`wMG8z<Oy#k>=0,Exx?.揯ÁzaD=nݗNHKlžYA|t[R44cbpT6'@ĝ72L+ݏ6=/si~[iYGGK1G*f̝<k’kuL>nG ĝ7cXvf&\]r,~6ﮛktnCGrGaX^xrmfXnr&\;e<n$%%zۜGt:'GIx5c_26Wۿ6{xE#vxꝘl^g۟$>ko+.aB [<[9=JEP"H'r>?_p]otr^eND|<|&+;348Fױ~bϹp>5M7ڜ_>~)R#cy $;w y;pkRXX8Ͽ~~~it۶кuk̝{q y7_@AA> 4?F۶HV&B=(N믟gyгݥgIun(=11:JiOcwxݷaҤi A`` 092pD!~ӈt7o>{)aVO >^OB @;{ bcСjl>mt %:w#G2Р7`08 ^2sO!??;NeeCvH6l:@رl|ew?G}!! g_;/i۷#GDG`xcEЧd˜躎`~ݺDee%b޼py5ݧ8h>Y.|"RR",,?߃.ۍ=z!00ѿs6DEƬk9ҿca}zo2ѵ'hu\sq&1'w9{~Z;vC;BC0e,|&O`gq/عA{\cN`` ^~b whn?!1ix|  AxXCM555ظy _?=9wTF>^]4ݰ ńq1(/?/Y) `HYWN{!/eNsfmquٿBDmuWTh}c% e5 49B&ҁU7cH>2v !6eXra6be12qmq WU!",ᡡ E0fM1/W\@(uK0a`L9ЁQZV/n' fNA0gxؗ"tHDD"BChTU0c tbcbHb<ۈl@~~5/u8xΛgϔ".-:&:}W_CXp0CCp8*y[b@nts=FVk0gv=5|8y~tE~b}D Y@lig?ic n Ppee5oD cu^ϱvL'CVcB$D9D}Lfl=fsQo>@ H<tf>~e%<ʳOMH!Gh.)H.KM/Gtn3 kn1hkmmv܎_wy:uNa\c{|tӟ֝dy6٩[JG`=#;9ز3* f7apއxo/GJgv6{o.Wp47Pt4 РviF[A!o@]}|}V3o:v=쮜TW@!!AA8PZvG Ɗ Qx4!$()Б\lڵǐXQU*7r *,=ki&9'PS[TtݡBjR{۹#Ì2rj8Vp5uuxTTUTI)׹o)m_c?(jjk1?> MJIFѫ9f/DHXI ۋ5=_t Np:*sUgG{o38ەvG pL Nhu9Ǒs[v3*]Ben.`5?}=DQ-,LzuǦw)5@f49x9'pY\}7/ųNH플!4 DCo̅:uPF xOM {rԁ#i dDQJ6%DLMEhzŏ' 8tW1szLYq]<CVEՅ IDATF57lc˷hm_`255.M/MD4nqt]G``q\}58s n ={cƌLzmRݺntCн{OLbhEcfc<:9sk+dN q}YPPl-U.DH b8|3ag074C3{~rx yr31!!(.> Pɣۇ EQ.{],~9y< 1 />0~L@F19Eߋ>B~I<#E<ʛ0Gx̵ F4W[IM#٨FnMMqա?__̞x9fBLOgudcD^Џ!qBCG= 3f@_,] MapT^Zgxؗqe_!mky̩t[329 Ҳ.+;S <*,{uGp8manc?_?8&!&>ҸE!wͼ0,$O.9v>|FjAȸp/"BCѿg7> |!sx{uGLJ˿BLX8lΟ"*1}Iy K(h . tB,`ZG% H@ S > "yE$uANs.N4w'-' mĬ N%2Dv+񲳑XN &l|b+u ?qU|I"ġyeGQgbK.3 Q"#$$Dx[BB;={BTTQ\|RGYYN>>[sOYsp"'( ŻxϰnDZ~~BBCM`' oW0v}NDLj߹rA*(STThh=~؉c?`0/>ql8Fn:">8 f]C^|JJ΢UH\8uXu2>q4[uaPUUE~'cC6΃ޭUlL 7t 'P-+iْDTd$ZGF 4p)urqʑ. 8sQZˮ ,>?Ĵm ??Qh9SRz+t>D#x1ec09ΖC('58w0o“Ũ~}0 -*p&n5Ǎ=*,UOl=7e@@?Ε罜:s֓DԿ[W8wtMAƱ8~'@v8SZVh m##P]] phšg麮cQRV6C1Nf!.Fx}#)>+*@ps$s3w7TVUK?1ɔӨÈ>=p)!XrOy43@nC8M|wݔc<8.@/2>8~(yy'k///nޤ7 ;DG pgdSTT_/lƊ埓gW_-n̘:޴]TTqL6Cby?222₟MZ޴]߷B2g򢢢J]9;0wBt'9s α~7_ &L1ݐNǏTq*+ٷwgΜbDE [7}+9ezZ w%0p0[lkp٪X)# MEE9ΞfƵ KLmqʻKr^͏93q2dw!*8~ {4ul {ek~J+Ⱦpw?]ތ#&^^\)(ܸJqٷpJJ(`ø8竲:ٙdz(Ja1}R|)# kN]_"\X(,+gSZ:grrev-ZhՓu1~=n1d]j]=}%[\gٸ d]KbwqS\). zu 6"V|^ekFٹApsqfRPVnsWT-{d|RlbzEE[˾ln,۲wZˍۺ\]'/7˳3ݻmƻ_Jq)U8t 7gg|2#\ju-@Gf&}MQRQűsXq;c ]3 w- B[)J|uoO=}GO!J+8}2~#'d|X|<<\\gvѓ<2>[fGY \*-BՠiDGOPQSK9ݾ |6oguQVY;quqx\'UTV:S02gγ`&eU՜:OW`2f,KuhvdQ鶶`aD V,TԼQ 6bcX-<3]O?''G&N<+///E6otz3murrgƶٺe#nÓ>}3ad׋ߧ_̝Ir ^ wwwƍd=O>S>_89:2~CYت36E?ɮ]ؽ{;$%$uxU؅=rn7&,,'SӰa8xp?vnϏi3fl 3rhJXߘ5"G[G1=x'/'m;Ý;'HH ?mlEqq!>>~̙x6DAx≧ٶmV-[㧞KwK#=}tV~Ȟ=;H۳$&&*|wY5QƳ"Ӌ<3mgKI(ӓ}ؾEyw4nnkmlF/!QR~Xkn޴:Ii{yy`l۶>XLݙ:u_|,\Jh*+xŸ2l0&MdBqq 6s!{wc¿??Slܼ_7sgaيVSj( 9 h=)'й;w젶_oΜAۛep~477s>ݲ̞6~nWgiɔ+^깟n63D1|pt4lU1i<Ycjf̩$ oEfB Ї&=-ۉ #S'L{aWvʈ9aI&Śdk/>67mgܺHDP~'AUA7O='}D@?NKYU T0qSebȁ:[)<(<̪isȰMkUq eÞlܓ 2s\ju`xǎL^ųVexx\*o6ٚ 15uo?M5QYe'ׯׇGOO2DynG[G?9a+pn!;c?"xAK{⣣xYlۗζ e`%/DzNB!&ZkOZ<^;YRuRKT 7ɕK$eNB7t0Z*#-)'Iy GG}Zg:ṿlӵ4yu3oTiM:3z4K^ʋhQ- ˻&-úrZ͌5[D_(т&' q#N}LmU̫J:Ir,TrM,TiF3*mԢW,v R׫Z]Yv4@ޒu%=jlU Zvu[-=TM+=&TZM?_A]Jy۸RP}З4 Nj6Ż(yG[ 񗊬~(æJ@=ojƍ#>.&ߏiՠ1ctIS:ݼQW[@m 2=LhFH<8{?!C-ۉ26C%rm K)YOxjX):Aj@l`s(v[֩~X;8$Y-iPALoxQp^ZUT[rX&^2Y}9kfs,Dw5W/=k8)D˲̲֭-:`OUmus6k@ECc[4>[e[y-QdC\f9"|,9T~z@ Y,϶;i+~J1ԯuulغkS& @oϝ5?0_ֱvNjjkqwso\,NRȢLViEL7ǶKdRijf|dveֺ̓XUCw܎fwMi,zYa%4)'QRs<)iz= Wk4([/iJwEkd{5AS 58cXy^ `Q?4F@^^l YqD|WCq5(=mIbJwvח*ILO[MbBOSZ>ʈZ ޾k!⦝GE9 Z4Zutm᧩Kޥno;p|; j-{,ٺzX^뉅J䳟S/5ION-@?k;0i ȥ:~@ +:ӸC(VZp#ce+KvW5s# A0,6AiyцqNWTX䣌,CͼǶ4m美wjlC2"Ze/ ncjǶԋ,̫ERy0DU--Lf%4mM-OY :ee!4Ev΋ہM$hJm=-Qu  >N+5je*j+?=)kVz$j!HkNɱ$-6vKڒ^xy{6!{V'6׮YZ'IѢUIA,K- ]vKƮ 4vB,C78;1vz@wKw ݋(9=:!9$!X*4% Xp'(F(Т$Q5-uQgx~{Y(SQؓdِ.C;x[e6Xcaj#r2ͷ\ z,$jQ| =fCOd@~m97UxA#c} Vw *eإ|7%%C+]C4-V@zR$Ӯz@IiSHGwF`V.ɪ)/@Tf IDAT/uk?}P4SIY-竽=(n[[6::d7cK c*{Z6fiUVjlSϛ(:woä\ f}k2)qv*Iƫ#r=eɜ\IX5(t=s]/m/ a\9l{< zd|N˶Q0 aw=ڵkW/RQQ$nޱo8~ݗ(P:o'n޼y_y?|O8_^}8q7^wܾ}[7 yN8__Ww B߭Ij*\^BU>KEyEGD0/ )( ~[*P_+V'_ܥ"1ڞGZ\g溻_ȯ7s4ߌ" fۅ@uSWѶ,ǻ'UJ+#Kx-/}]/ Ikm պzW)lEiZ]=/u*5*󢕞:c!0:옦-=Rh2Q7PQ/R{#)x0>cA)끿87/' snj6Қds`SmXmD]9W{~~Dc={= zqu{/&zT:,M.u 999ӻw_#;TBB77(6ѫ}t*++ؼy=#STfJ~ի5:\^9l`kNՕ淿jCIjh(JN藿n::~{Y^1ĭHUf($opB&d8^/)E^2]6FUAq hWյ̈],zE%4HGu 9+=KdΙ9iJ\,E}F7?~rL-S"R&I0ج#Jili(ӒȺ©U=zUf*5y߭;DIӽ+ڦz>^ /1`K ʵU7:YCOF[JA-}h{N}&A! +WǡtZZZۯ?s古!// J11ѣOuM5^ KرdB]m-֮__?ƎȠCl޴gikk#*=4 e$%e E9{7W7 ĉSpppINɣ͛ '''{fԇԩkYɱc楟:M+ pqv!WM{'jksrr u͔3 _ģs\x_%yyWضu#e1&ƔNye6o&g3kCtrw79Wrb**eތcFEU57x1O/Og߾Y4551l`LV|jM5u海cs~ Ka)$l>1ޕ?4(mA9F3}l C&h~*^PV6~r+|ʫâѧgI沪joNNAnn Ϝ l\1TxkfLldN@נ@>^f~\^|F+y\*(`ObŖ]_7e$.u2.L5)#L?WWPX^I'7W&$ f֘,߲O^mm|#'O}+˟lڟ#'@@fh\((]--ё!zt2h|62 Ed]Յ#1u0MXura,<C;qeL=_ğ`ͻI; #{X8)U7=ܲK%8;92(.ESމm%͸ cчy?oO}"l<ɞYh ,ПY`^![ZUò{TXbxlX< k6î'hh$n47dV~ }ONc o?Dؒޣ'q.=*ؤwq>7zԉtvw_}~BM;`SSI`SX=/Ɂq=?yq!3$o4Ԕ i/]fcZ:W"e@$6Jsj]=b^b_k7Py]|;y+d`@Ӝ>}(}ܱr2RF3mtԉgl>>?~kV3nLNPP7ǿK!!nMz~ HIpqqeu% 0QYɇ2c$&m61tH".vz>.\da̝;vJ}} xIOGddwu9IM Y[1{|r N<Ɛ!D艓yS{s0=Zq:/6=det) I 0{|˻ >J߾L|PSSaihhoѯ =(11lټoBBB)/+KE22{QF3eL;ezbbbEDdɒu&s.`a~rtyyW8 "KK,[)}QS]fР!޽tfΜXv5ݺEşddsf͚СHLbzdy~:zW&[@?1=zp }槌1gggr.Ĵ ʮ;q:qjܹs\|9ЧwN>E֩,  \g_|NOJhh(6m=T5ȁINJÃ6~ϙMrR"Wr<̨$ *M܎?q=cȾTVU3{4&CEU5;:"GGGnܸ? 80G̦w|<DzNqi vc#{fPPTiS7*Ҋ v?$~&!Bx|leQΜcЁ|~Gyt4&Nqvrb1?21 ]Nk+Cvc#fR^]S>.jI+&YOđqqvbݎ4veə5zBnwUEZ~ fLdpl8FZ֌+da,2Nn,ݲ1T"VRU[ӳ&31q %U5ؾJAy/3#%k R/;N\,(z18;:j*UP Y1WO2ϓuz͛Γ':WgջQ=4prt ;Bp_ow~NX`5b8}YgHs8z"=uəݝui8c;l [f{d]CǨV˂1-e8Y{?eC㘞3_lF@Bp1n D+l%Np)siJ**ߓ[MNMmbc{;(LǔdYi;Q]C BnÄa̛8@VmMsK3qQ1y{Jxf,F ǡ)o\On76ve̙8qIC)b##%U\g|r |VW3L1^qrr$WqQ$Kai~G 𧩹}G3r<;wfCt)]X8u2 =c8EK$cȋZM/ ARǖ6M}@)kG0-d`2pAn9Q!fؒZ.h%aTj/yh2RΔ[džƥS)z%*KQQE2Ur[gAIuxIWA0'/dڍzs0ڈRPs<$軫22W)z>Iptt`ŲO>ڌ B_ŒջDVZ%!OT1uͥKťKƥK6,/m:ş GGG\\ +GG|:w6(AA!L8@A|%&}㋯//et 4*&'ȑ rs/ѝ\ Kϸny?Y%<O 88F6m\DŽ p0}ӌh S[{i;իxxxټD[#:u2رf S*i]7c"!3f:wlQƓN:Y :u03ի;w '.))c())pf=cbM| K2q~8r4#Rۧ;S\RLddB6'Mп_Ǝk`DZƎ3DQd=yyfOFEQHP@ 'ֳ}N&M S o/G's;=2DΥ$_qS:i#0kC;Eqi)ёgŅ.P cjbK0|xtL~)*)gt2ŗ̛mRl\0?c1E%u,=A}z#]C(,)r=v5q,=" =2u2'),)gT7|< mӃΝhjnfGzx} jղq~%ī޳;ޞ8:8?5oz7{/-ˈdO1y3u+YRPVNdh~^y)puqF&HOF-<;K~G !TbF GR&%e- 6"7iniaXx}潗^0&ҎeԬHch ݂-)¸z-G‡gX):#%Rvd_.2_8z,\> :eG0y\((_>Cqⳳ%l8΢hrwuxJǁvBb.q0 9/9l8€_>bN46L`Ѝrlٟ!L>DBlH;1)+,YPSSCYY)wZZLa|||dixxxRZR,sSD𠩩ÇQYQAuM5ee)neŅ =%%ŴȵkWXC.]hsrr2.-;w&4TnX! b"" OO/(-)">>[IEnr>x?s:BP^GwZ4)((}=}YuÓf%xzz)ggpJx7ypj mmн{,Ld(@E/\ `yzy&ܹӂ/+-A2QRQYNB9gCAdxyy!mܹBuu5--,]77wF[۽M-LЎK(GFEEQQQc^hh ⏇An^yy>zvc# rm:Rm%0 deJ ܹ^|%m(.-%*"Zx{3b޺eklnDJ/._Dq5[immGdD2:.>ަ20aSsf1VTUBl=@#؛y̸RəfC9旔[T$!~Z9(>ϕ^k+x_o jS4[c0wh)}bޱtvsim%.B:o$DGA@jZZxcjx2Q +ZK^Y~&֘OYYK+0獸VH[rQKYSH~Ya8:uN_ZF4|Ud_3svtb+*--wӃ *f"ٙ`_KM `oOٙx^/ڎ|ʪ|8ٍY̴? OOid]!{c""~TPNhںƎCG)*Zexy"5WinClD7Y\*(RA!'MA 34jģl$vgٗ.3"~q1D(@?s{6ߦ2m+(,+WZ]]-e*k#VxvV 8YپKٔ-p +NKm`l*'eX')8wO[Th΁e+7MUڿ_pF! 1Dsks%ZS̭ i2Z(ÇuԹ%i5eckàzÆ R__K$'#+1%q\II1s.r9oG0lݵ6'8h^+᧤wEX^z_HV@$ H,fecWfNNN<4q}U%n[ŀ~}#3+K+4⭗U^<2!UΝ)2&~ĄZ]G%-uR2+z<-c&xIV O obpppVVmSQJ:Ԫv]%\N\a=|l+Vv;퀯l_Gxvh\i ECHR!}'NڒRیq4ٍQDH o+gy:mIdekoyLIJ`cMVFv˫Y o28!S/s1-LLʼ [[$ M./W?.CnQ)NEocS+Nnn=.i(c9s"v|zqICxxzׅٶ%F5@fJC:XQSf3tkm;WGXBJ]}K#`3f攠 k iPဖ#j@% c_#]vc:zfE"9XzZ4 4֋k谎I.ݑR30@, cBpp0GNû MȑLŰB!/ uu5*^zKǏef̜ŠAC-ׯ~V腅u֭3<~"fGppi8 U]u 06ّ7oޠЮp @XX8EEru=ɝ;w˻B}]O=,#F`ܶhNՅzDqQ!]3zxz98r8N L}}ׯכZ[[)).@0ggg ٙ#F\]]~9hXyAzM[XEE&9x,(<4kח.Q^U#8::r1Wގ/^/6%h@\)K$*W&ȰM>>RVY\+j}={q&Hd@|O٘g/)A8[njJq)Q]CxxL2/?b}*|?N/\g' 6=u}Й D37?}zDpkU@aݸI:VF:s;zQVV¾c>_~2EA>!6ɨXjQZZ+l**ٵkdgg}&%&삋 #Rضu#OgQYY9r$1M<<),̧HMG߷ʊrΞ=ƍHL{'JB\L]] 1ŕv-YTVVpH&} yV-1A| uup`1d"mo9s֓$;PI,j9%%%lrÉn8lܘd>̞}iWTp|ڷsmhkkCTVUso"G>{b\[BhD0YjJJcɲd=&lRQW_RP\Bna/U 򺻺1j`lg)dݔWU!r w pJ.Wquqaˆ$Vmɑ쳔TT==3cWTRVU-[e% ju>ZR.x7,۴]SDv:FYu YrXYc5VVKÇ#eW9q2 KV| g:yEU|cU,n..LMƒo}jvVr!HS?Jj8v>l;t'Nې+}ս]W9WH~Y%\LN2{ۭ+Gn#pఌnq,9~n75MUp!-_GdHc =3id@QE5ӏM޸)IH1ͷ%"$~њF <|<\XJYU( ̤Cz[GNGI;Ōd@0Λ[\ƭF߾XɗvPZU2 KoS:uj6?3l :$ eU>SQs݇uZ" 㓆zGGϜGdF65%}DzؚIIe5/]߰IEG1M-kVnIYU5y%;{#\ AXq?{]Ȃxzreh07oOOʪJSs ʹq7STVNAI)[Ϻ{L|ݹMG$P5+W-fَ#ے%`vK' ؍quv:dOtΥ'j>rQ<4;Y$?DZjk'H@)K,%mѦPfz'a]ś{%pqBBByizvJnL2/C;o>W~@NHLyޜ9 غuEE1cP|[6WK}]y晟oi%`੣RYQ{3iTs0 ٝ>x~ݣ/VG~cwa}QcP5c&:,d&&L&e23'F_41h\AqI" -(. ׿?=R˹sytWWUoUu~:yQ3=NGGOϮ&M^w]Xi|K_!٫>Vӟu8rQ8kι0.<}+)gѸ`Ѣ;ѭ[7}̱8b_1ym/~ں:̘~:ZvΘ9 ׽hllOì329f: Mc%?~bs~.6>U?,X'<`聩SOJ MMM80o}xERPYf[n7>l۶}'O!$Ȓl=w?zxk0f\zɥx0|'x"fL2чcРAٍ?CKK Ǝ{O1cK/ü`;g:tknƻ.;kN̚1buクo| <s:7gvݚqi3g_Pv0?wߍpN_=O\[߽hnjG.H墹gG8qј3l-e@sS.>g6p#k9M`ێP|Ŕ 6٧LWw.ƎԧgO|{? Ub˜Q?ﻴ1\^rm"4}wm.D3m\GçX(~u|֌> u*i~x,4wޏ󧟄?.}YG&n"m sN<ጩbݸ{ 3v=e*<[O.M>rۏ1Cګ.F{h.~u"|nƑ㲳f?n5sQ6H\{opҤqٶp.&YW>!|\{QWWG%sff& /94{W?1vGFO m.\}y8n|M=qƴpmrp0cF|k?pY^YCa 8Oo\y\]~Ŷp@BbҘјsT=$Qqᙧ~{GΟ;/x3F Θ~sk:> S| ?{fN= yq8nQ8)]pƻ᳗]/ď~[J1rxjkj zMܵtTZ԰ZT_ݩT XЋq8 Q*(A5Qcr!q5T 7=+^`IEtA/b' ALS FO n г:!B&;]tm7 E=akjZFŲkָ3uCwdG=š|;pH<w9 Z*nWp)3qIvФ0~~z/ HXY`H}b~ œ Ҹ)vS_Z5_ޝ{')5/QGk rf_F=8WOR㇫U'=ZNJ/t|D>.]#5֚`+%9u(F'Dꚪ=8޷w%&!B SRSB[gL C^1+1_G+DZHe I5y HneLnj|65ץi]J&e۴l}}=f~$eETܫ?(hbfu d̶TU(P=f 8ZL%u_ۄ)SN31"Y9KJ?b8ēPSSg}k׮i3t,0 9 q>pS^x?ha4qogb$lne!A ӵfuJ#\ E`_k]2Nzkz|B\ӤC ` Wqk +=]n>"bQ,??`T7(-޶uky}MLgr7c ֑$ڥo:ts2Qlmmm[1j4tZygo|R9j|:xS-kdeh"QujӰ430&rfӤE oĄkh>w Dkwk'pFҳm+  Y (esQ ÖSع.shh@2JBIչ6g%I 5zJp[bl;ԷDL縰Ӂr~80ƾ>)ѶJjHvNW״&ymb?*25J}HmPJ 4]"FmL۝4ˏbFgYu!ltAsD^ODX?V80 < e8ttrC2gw,K0_jkePD҉lrۚ JbghM IDATa Q }+< _zQްXUӮQn[}Ԕ4U Ϩv2Q'>@!*+yVALn>2w,>w5*:]欱KEhgk0ҴCyXu*PG_{ŧꔘ|:^6f2Bd&ۆe"\?u%C [%#C_dՅu cx:M UXŋׇ+/ !l^I,2PDaKN=Y̗^x)8V0{U$'դgΉuF͛~Mvq}i$&wDBQ󘂂zuc:Vb=! XYIGU*-D$>Fz  _=cI]%kᒒ$wi.Nj042}ӰiShjOO ];Zt))GQ~$w"j,~05NLA){gh'uȨą+s ) ,/wNԅb8=O32PDń8@ "h:yX-1t$ dD˓5DєP:LC|wШdӔ/VR1Da et ShM1tiRfƄ;dgm8EÂij{r&]14rFqӱaՖfЁ72Z?Lw;QRSHdxUB'p% KْX/ҪO*m.-D4N p2OGXrm).k蒪ݩ348j]2jS۲)BY|^/9$qҰFFaBmhڨ؎Xژ1ީ)`v+ЦY|'PȖTe T6/;mC @3J쀙b /@b`F3Y#ABI繠Ⱦs]X[4rQ` d>%I>D!t3Arʻ@Ӳ)ZW6 M*V0Lda GÛûjyYNTͅ:}Scc62 Ttמ6WT Ws8PfX.Ig|q X}rƲ&<0.D.H)1J-sG^A~1z[yǔg7(J|"inai$ װSunߦL5a"1kNgZTC pȉOC'VՅ]Cf8b$V"Mg!,kXoBi˶D̲T *~Rwfrӡ:B**&oj5@$/}tWsf:cJ f,R(\iZ @Kfz[~+-ㅄJZn|mɡ(DBܗhGr: i9I|WY㙩o:8U U Ab=JaNi16ʙ4ә6K\QY%b`Yfuhv2NRBuYi;*T>x]'opVZMەBJO[Xt<D(j3 Bk 2>t#bޒG}A_C &C E !5eWl4c8JwfEŊ.)cWi;ĕP“O ;Xg"v,4QعF]#a93@aTGd+G$1b#-<`q(e&TuY?|Mwl*(hNfNGu'F9a[J3蒟%^2|hmsA.&!|=@Hr]+hn.pGvOt\tuYL|%'QyHmgH2t{~aI?vi [kcw|IZ&R;_:$t@r98TW=uAIWIřmA2]>yt$"'dsm+4t0U+n[0>ƓƓk< :=#$N7@dkḙ̏tI\렶;1GMj#6 JVVNdK>۱w(~~Ȯ&Csھ:`^V/9z!Ƒg!ѺQ\zrSm7V B._59iɃwHc2yaQzO^_|he ɲ4, #}t##Oh@kR-tc&sF#(gRU`eC.0 ܮ"瞛Y Sm% JO;j[06t ]`6rDa1!Or~Mäm^KELH)$s0JM#&Y\@?Ew}0P۞R%K/u*%6'RӝiyYr43=%M_%ku~3&(C } x+,܆ſ ӫ^CVt oD{Ҷtiy}As׎JXuLQi\KtO[~f#vR+/ ݋]  G wA[C4TD (Srh'^\AƌaS[qt]&) rA?IAg0̔,¸ׁrg>7dUKUƵF.7҅cTi 1}89zz57\5 o(P_.ddPy$PEe!AS\U):hHZCa*Ȥu$W{UB_՗ޡ RjP3Gh)& ,t4*%!d5n;a$}' !zºіW:G*]5sL++GVb"1ʛ.pC[]x%KyH7(#E7JfbɰKf;y* (j7;/BCʸ7eׁ`vr(#(BѦ WGK.ܐO#+ x5\;"dGsSg8iQvt&0/+Z{VR{l {+XKON =:}y7$h#ߕ,*xH 5B% bQr4e^xFR(B`͝ EPZLP*m+M:Hö m@ #5E]VCpA^VmNK.`/^m]`iںEYA`|vko0bNMlӮc[$?)a]k}jz@NǰAUG&栓γ|tA@8yiyT8OK0 lw5xRs-HSV::MO>*)o p0c# Ynw7/`(uPnǦ#,N#4K66Ȥvr!2lfۜa)ՈPAyȶ:.(x旘s:[Wż5Υ%45ƓTk9+,䜒4C[(iݍi5Fwa2sw9q'!F{HHÓ>6}S/7ZʯPX0@w[-S &շ +MfD<)2%eVAmd;]sݐLT&mLGe(+4 uvy|}ŧ4 kyceƦ|Z9~k 6JLdŇ5-O;!kMe1.']'LeJSS\ 2X44Bd}Py$7oh(XC;'5\Bҝm,/BVט014ܜ HB5"z}l爥lj[Gt rCZ{.͕Ns>*KRj+΋m[-wsK2ݫN"!qڔ|߹ߗ1Q %ؗ֓4AyB\J*t<%<9f"t\@Nǃ%]6z}Rc:N(EWjl"j4#LJͼNI 7XYX]f{ B!|xlvpIO r@)LmWp՝G&hZX u*D u$d:1N0WX]k4͚/ݠޛ2i(,$lw?tAtA>C7&KJA32238t-åJsJ>@w9+}<4OGM ?PiLEUyʂ^o=*>0v#ϯm 攤*1. 9tT=-~Ӑ]pi噩jhZ$;$(hi9`]N˾A9ҥD~&/ub&S>5tAe=ml@Ef"frY)316[vyCKeRI7W'2fKtu69hNͫxv|, :P:!f>ӑՂzP.Mme @Ӧh8+2,I(J$JserS^cIP3;!t pTb;( } 1@%L Xvv;P Mc3μ)+B8\qh9%WP 65'7SB0%p *INC)/5l"4K8mHGԍ&1zH12(H䧓9M"sFd:hh7y|Hq91{/h[Yp: 9b&EXC12ձM! mö  $6 q~##%0]Ըm )̰1/~{rulk]thAnH, h[AW0l%EqREwL0*/v(V檶!654_ U.C.Q"l\n@1'd;y7')2 ojtdEp]'*I&>v Xz`[Di| \vpڼCDR/R$FR!uDӾKq̨wWIw@A PKf*󭿼T).$CGH:`fbM{A3KGJup Y;=v`x$c'xa-S3˨]ywE} tԃ KŌa&.TYMFPt4x2i#'1ږH1jp:tm43'tV A"% R.J{V@ #T57O*)ϕ yu >-Dz3;4ڦfQr6A!NXw1c DN_PoOh^^`WD2?,{X3'A5A͹RhݧzӅ e@.gJ5 iq@ ; 1˾Pm Yw]Jz.K٦]vVp3BL采[s01,;]o"]>I:@f6$pi)1S57'gVJiTUwydX,Iܠ/ER1Q~!s:z4lNr`q$kA= jH :_']@4ȴf vaTdDu m:jTVpW+9YX:sĥ]-d"qxiDJuzw&vfRqu5]k,'rr A"HY\@F~W;a`u176XYbƺ\@#0ozp/*5t0tά .ݣW $ׁsN>kzcV9Ѵ#'5<:^!C_4RZ2H;U&ole&סCNzO0]GmList!ܺb`׉֔Yf+^˧ v- B{_m"( = V:GɁR{0dV%GG=tjw,\|M:P E_] upse) ¬eqAU7't> 0K{%*&VE  SRFia@1ZN\}AK#ܪoʒeer6!Y?vV\޾(y&Ф#׏ Pc>AO!^ˬ,*ܯ25ah8@2NGoFJ.#u5Ui(5Jz2<=%zgt\m,tD}=sXQR"]Hv}(]A@ FQ:Cŭm$[E0AGkf^)w4k粸|obX0 U3 @‚[<_IVX%~an0˩xZ?12E+Yw JP} J{N+EOE[h7SLQ6/5z'no,P) IDATV&W,M4ěp"AGQ~U~Cֆ"jT6gDi_Сyt$ֺouJGtE 9+52GX>+)-MBtJ x5JVPOUdA]"w@_)Z40-ڥdeTHiTL=,=\&a8V>axċ ciHM&W8!@:? </t>5^-z.YQɿwfϞ3g΂أOqzooPSCO=56^߿K~ ;vlGSs3L9:"{YGdh⩧Z\q1rp9+W zhPkQ:*Bo[ }xS}?r HS/Pg%Ch`r}{,<觨 x>*3&V&)cLm'Cy+ :3b}]9Np6L~tYFŤޖ*L_L:Tz- -j1amT)rƨ#.csvS`àTMu&"ybZmE3zejQE%(*x甃-22Z@uyn 0_Ar/kZj/# w-٢0[}lf;]=*:g0?$ܰe--xfrp‰r `Z2 > ~Wޘ: /-/b 4+g[n,y"߽kBC;D{|1ܽ0lp~i/VKK VYI ?ZbXXyU/VߺhF'A9CF'^>2fP qrB踁r )ˣrvh3o`g@㮣F  @-ҹqJ۩雲lQ-kc 0i.+*v$1M{23` |`+b,4ܢ(Iad%!ծ02&9ahg5R$klnRZ 6.1vB18|>YꄸYp1D1SO),_F/[t˒gf 8?5Ms+0o}7>G2'<|0z3Noi(ʛoҧL=p4?|lŴ)[ ŕ/hh6M8l@L9CHA80iDE=t},sR:((L!`jDCR] J K6䡸_QU{q<7ָ'S3!ҏ *Jtk'4,Ps~ w/ FT8uu;I]z!@=Ӑʠ[Ɨz- *SXs&ʫv'mYo#-v4S0ơn M: tΝ di /_^5a"V<rxs#Eԩ0u괨2CÿW+ǀ.!c$D>֭oUb 6Ti12壝!we?D<Õ2}_u`zjH#F`y 5T^8 fKEI8E<6ir29 hVΔ^Ѡt)RHi0΀1 VR샙mwjcU\;qr"H[ 1}BѲ%tti'2x.&-)>>"3Wz8 !%VvZ)T>jBei]|YygQVu= xuJs$3`55q6l%sa770L;xdlzA{y~}+,'qUsm/D*-6mĦMggAkt ~? Ѐi' '|ף.ƣ.Ɩ_AٳFm]-{W۷ov,zL}OO~_bɒNKi 'ǓO>ͯm¾}ЧA8ꨉx)ѣGTrMxLwӧV\9sWgװh|\v܉f"&s,jj躆Po>^zz{21aј={.gWw |Ƥ'^{m?\sĩ'a i-[^Ƿk?#g᷿OwN~&O>vj3g)ǝ7؂+_|-->|$}V{{A}0p LH>oQ xB̘q:f͚o|+رvIZ{Gy+V,ö[QS[Cc9'0 Y~[_M\rѳG/{Ѐ &asXAW5ֈ Z0FI*m:vƻ {`8VL#]Ia]S'.)S Jg6'XJ&'tv6钑b(e zQdqKGeI0-tZXCg1^R'pj{a ʪ1,'y@t9dVp@'y/+g9IХ}QjL\Jي!ˏ42J4HQjNCLRr O,3OV< S-YDa㒮G!k4_2ۉUKWЀ]GZԣݺuða1xP[P>l-{7 [K5^̛w?o[͛7㦛~Oʖ) ߏo VZo.'zW^y56ꓷ)[^;>/gϞ5kVþ}R;wbΝXfW}56ŋw^o}=06m|W~t{׿}{As>|a^|o6d{{ɲ  rER:j9|&=*gYax/1`?٫A`ˠHc)C5ԣ#GcdK'>vѣ1|p/&y_N c۷/`ʘP__3Nҧ8 {Q >&NJwuܱ7t#Z[KGe dɓؾmƎ=}޽ =V-ipР3\U+S|8qhjlxY5Wz&SOCcv77X@ss7}@c&<2455cȐaݻl޽KkC)%n رc;zꍺ®;tS@S0{D̙s.F-\xc SNi?唙1b_wF)mnK;Ȳ ZPꃱG)M_v֬Y*h 8I)dhG畩Cy1([YEW0Gԯ 2z"?yS U3*ҬsEN6.'?LxOӽ:,P ☠|Hxe{ǀy! "#-[^dž ѣJ1cbysũ.}|pg85:tZZZpu?5kcΜs֞=xA`Μsۇ?9GO0P|ρBS8 {~ضm+`nI)%.2lݺ۶mqMEss)zJl:Pޱ7 zgF+w>Z%=:?wrϚ\0oF ? --я6 Xx<Œaꪫԍ?xqwygy6N~:^5|{N_{ н{w\yضu+}'P"ĉwOss`ROٳ:ק^pB靔wy+{YgnݺkCŧ\6nYF;v[ebLad܉ya>m>V[Jݕ枭 ǝI1p&mPY*)tR|PxsTLVPjiG#l¹?oȣ%]~A\|s];3ג@^o_P'Vo"Q}w\=BU YE'ceptmR3m3䶵}6/ruXh:LU5KS4P ̂tk &)yTzu& ld.7 <Ϊ#F!MWiFeyO~7NM2С6] 7~;?c &i֮]mhhhQn=of552dƍ; ’%O8 @K*;v\zDW>x,^zimz=ఁ0G&mذ>t47@0`@pܸZĉSv&|0b({$zꃇZ;?O5:\&M\5҂J01c( D^Ӽ>`!!`?̈BI|ov2|rm& Y/| 3>2%֗)MG>wb;)j``uoCȯ@j3?P>t;sP#x]v;ukntk)uuui ?p?zh"A'MMhjjJ{Yj4p}>7ZY80r!/5|]XXy(QEyhLO d$sk#Nthr*utji.Z9ɛt4\fe傄t"T۩E9Zz ωO"7 W;AQq^mf a0^:8Ivq!Lf+HKrS$QWc*-_Gی zNlM{CBWsmbfQhRˣ%z!SKRҙ֣wPR'A=eC9uNCW"N[Mضm֗?_ >Ѥ{݇]w{9k{Rf74i_B1!)`۶4hp)wK_t'ژ1G`„I8pvk "]TWèuO;'|ѣ#0 K_S#ǠA|2׽[6Nz-gO9l3'tssA`ey&N!#J:Py/G{-5ہ+mBUjsqrM0xJu9~V6is*" W9Z[:  :N@c:L_ޗ()_`6E`} vd~c{#c=c{>-c0c9ZT1jhl~}3}kmӦWq/oC0YS__'u~駰}v +V,O#kwr+]74dOܱc}aO^W &P IDAT,=5 u W2 lr3#G-o6eaq!V,mGZ799lSs9,Ti# *GM3sֲ- "++~=!j"dOo@&Jnޅwt9. dW;޿>$Q\άBw m꼅" z2+^u񜵟L2}lzTX+/t٬爮9NzBSN 5;΢,jQ@5Ds6t myiNFxCsD}媎 uR]!חo6]L|XU 4ir)۷[~!jG5)޳g-[+_pp.IYڊ>g_sN @qIhwHv)v?/9dJǫLy@\>.O]EڶF͗; 0u5@"gL"\U jQ2)85DܥX(>gX+m"`"Bi閌NxF5ihD|/P\gg|XvynBWyP#!71 16y"NtK_ ˿#XV@|k@ш] H tw,2F/ik7eYrb|IxSv]gV0ie mScXIcvgNJGb,l͘_kMਣ]SKHNt41rЭ{wLq9|yB0uuu8C^}0lp455Doĺz\ѫ ߏ#F[nG~0}i翈% '>qBSS31b(\yǭЭ[7\qG1ztuu&?~>ǟ>uuuѣ'Ǝ=]8 `59 ^z9 zt&+KPSOœ9oGCCZZZh9P|3NGЀ& <s>'G;wGB: ށja^PM>6Cy8V O,bѠ঱hmx0,i3 \=ĀDTiIr ̓"-7(`m'*C;V7?k bmF#oo;(i @(uی8ʉM@*m {ǯfjL6bܔ/`~d%s|oh iu<(ZuWQҨ['׵u{^ooI$%&ʷBrKIJ>`rK-uD<=+q|ʿU m!. n.'r,An^{k\ It$1 uvGz 4χ<`4]&~v:M4,,xKjfP4](#Q:tͩqF4t@FDT&.oevj2hJ~.{[RfҼi„='-ElrN>TM_ɗ9fR1j"zk2n{)d4V/i5de|y*#D{W*BcpI,]u ɋ߂H"@swY&)'Buw ocP].JuÇz:ˏ/`k "_Iג4zMpuWp@MOL(6m?giRذeDJ3.C}fM?~Z@q-k(Jl29de`N6*{V&6ewA5@96EՒ-D@k5i[EƳm͓J33jqu< g ~O#MFI2V*B dGjWpTkQI%* , BkbAl9ȵuB"LՎef9 <&KǤ-uǧVE/<!RVE \Y3p\z[8%/S;L,j 3y@Z:~j9"SR b@HU t -d0MrfrW YoP!jfV\jm:yw95{ysxI!+Z..LRF$*Y`eEZ63GI9z`opj[*]}oη#*Q$Ų0GD Yu{D29f+q_%6!A&0OT #9Ti&X|-DՂH )Kс@Xn[S>\#p+ 1%|!Z})Tx0Iz\|zh߹%T-uA-"?[\mSqSI;)'bA*]JIM"Rcqy;Ãbr!*UjWIV^hDL4+t AxR4$cPt}Dn1!_+m +%cA3zeTyp5 ]p8Чg.ҍvY<*W-լ~x-o7NPZ\' $xDث)tҝ B2 nwS¹߻jlb9 Gp sx|#MdzCgE m (2iϒ-p`RG ogΚ, ] TǂY7UݩQr uv e&+1zTS_w!uI]UNǍ, :akG!,BًSٚM#LD;0 K:EGM΢ESU2q U{^ VJCjU[vǦN31޼[l\ʙb]E@Ssn띭C䦂#fpuHwyGCWTQN0YRU "ryO,xbr*ͷG%tEI>7~"MC =P iFME@j BiV*ШKS2j[•n,j93$A)njK ]Mۂ`* ф[k :V BQ5DUZ^%J7Zmг{G6˳cPRϿv\eµE " At-u$׵:Rh';hƫbvitm ">n9^J/m v)Jv t,i=`֡ ǵhZ=ψ8*/Ɏ¡:SF UVG?!3~zx<AN }ZxHYFL!F7pYC:hH *A; c7N';fs FYHŀ%Yݕ4im>G#o#-CSl _zh~(NeEuDy5x29D(N\KX8Mt,r5,Fm89eP)n SɵKg PU[}y2=ivENeh뭖Kn|g/s Ҝ@(1/GxiQo=uA37\ mxgJgTL~v'=бҽ2 9Qvևv ZhBX)ԃ=~^[ BFО9p7Em/]RKJ- N*y =Dh6? iĦs)EX'.&Gז֝!H ba8Rv}iҘ$~Vc)qo3K쩂ĖV~`GIHeP+^s9S'OW<(׵̚:iPTlxyF 1[v8E\rxi'yiW/֎ ȊA[@/=HY9<% M%;*9SKK3)"< וPkPa5D+O$W~ՄMC.=&+÷ku+b<T OqMlE5f.y-ف@w!KQR;fɰf/ąWQ! =?_97pKI8OfT/B4 _K驾efpTURvWZw>I<vI;0zOpf%&`:%=Vb҅ތ.:eO)بBPB6̂c\7tcxڎQYE|DĥYi72W[Ϸ:VGL*ŀMR|d4U7Lr PC[< };nzlǀ"EAGz8%"y炊=%PD%hS>*d=Km yjeb3#jg *|NJx* $Iz9N'\Li;Ӊ^+BBtyrhΌO 1 o;ղLJjw$ vrvm -#u4{ǘ"ǡ4(q>Y!# :Q.C ëjgA@ϟ0 Rof/|C .UebF3د2tˊE*v}:KpѶƴU/Px& \LCu_c/5T$;bǎ$mW=Iǰ#:9/0haHS>02-J=T3mӫEpܹ0+V9|8=]{'7Fvm25akrW5CgFD*Z*ٮN2v(gKy0Z}tG 4*7fv})t'"jevLܞxxظi#jkj1x< ~6(M0|=< p[Nuo_w?YAݻwÅ~#wbݻKmV477c11t_M_[mEsS3&3Ŕ\Uw/zxmk4JM6K>IҺ~,?k,w_ӻ7gn'XFAܷ`>e𫛱5J|ܷ`oŏ?~|jѣ=S0fOKF})/;{6Nz|FǠo&17עʔ8 >ҒSVaݫi?(~}'n%MÇڍ+Ze+9SN.=C߃zcQcSGfޖKb`CpS1}DR/}ᇿ_Ο3NN؈}ƌc'bcQSCy~3%h\H`l6>Ɣ^CA'c H߾47ᄞKvm/ǫ{wo}w9x{D"4x|:ٺ'cHcﴓ[[%ز{4o>J$m7L6r u6 )D@%e6]jCh?ǹWytDkB@H]a jWk88납CN'<Exn@5[,KW42k) 9ζh14rJ:pʸd"M̻v#[Fff .7{Xjc)_TI9H3"T9PQul_tE ]A2ܳ}oO0Oaޟ9 ߏUVbU+?cU+qO~޽{_`yc8s攂w¢'?޽tJ$ 0JAj*>^WbcϞ=cӦعK~> .U1b9ڿc ;mI,W1tȰ~ D~ӻ7sN1BԠw^_V]^L==bh?lٲrqUkV^CLIr5 B x& ^DP2Oojk|iښ$e>G9޻jvp8| {a M55bZG>#I4qpAx{> acxds/áҊtx߅n͍8ab9| ^~ֿ'["dT7+[3h?}Qص{ ċonl&~Vl>$-yxs_|y,nݏ\zN?h 95} jS웛WLnžpƿ Wij7ѫn[Xyz6BBחcոdV_^k=հWh\?|3J")P77ڲ= 8:&ƩSc1+PR ? ob;:R\t4Z 9E (bȬ}Sw&k>3ŁʷtvP01rp>>&5,Ef}W>*x@ɗ4ݞ<CS,K+ &Uю*<a[)BmsӖ%EA j@ ^F8)J P_񣠥>^')%6--9 ݰ}u6݉q&V~5 5^[Ǫ IDATwhu\f XXz@Q*HB !-KV$ыc;.8N9-zGV$T1 ɢ&zݝ}N9g+{3gڙs~3w.ZQ@OØ4OZn6=SG]\=!n[w? 08z/]zo><";a >,8  @ॽkpm8ɐE9Vm}pMLMS& #'!\@ju!j->,ƻH-T"L+0L3K& ap3Slï#0/e d%}B\6PηƁٹ;.qpyvp'>xGQ0C29*lK)]egcsKUeKW*sV?uZ\}C̸ՙp7?S&i0Y L&TYyzѣG|G3;55?~ݻ'qn9=c`hnnƐ!Cqɥct/~_篠G_Ç F 'úuk܂!Cb+1eLesޢE`Μ'mV4my] /X9;Aݭ[⑇ڵѽ{LrjqP|%gƂ0x\qU<9_ /<={v/FL|Z|w'm6444`y .Nzٿ|wX|jjkp啳*I݆… fQzm݅/a=Xt&O: _Ö[p 7b _We|?äSڊgxRJ~?-7݊2.8"pxx}o>BY$mvZ<9qlظ55yH\ul 6<:;x?} ?o;w0癧ſ~8p<8/[f : .8dؓOƊի1Wb!8nt7oFC06>x +yXf Y ݻu]+/ `#~#xgrTWU.MP[SoI/ځ?߿m;w^]>s1y)0 @ L6,8dc2l@?<|Ǣ0y(WCuu5Ɲ4Z)mPo_뷱p*l۵ {Y|UU' VA#@!& x)UYd^]/QL&3GbJZ6|Wp|qN=ᄏ Ol6]>|?w|R3gyn݂^[6SYؽ{7z,˗/O#yt|\s=yO=M4Xz އ^|3SOOgn%c>%\rL]EpfeO g1Oys<hmmŏ~{nٟ},[k׮N%|RE&[nFsQ`ܸ ڳݻct57h<89>g{?+/bE8p5üo3`u4q F4K-`D9C?mzi4Ԅo{xc|mhSaæ?/\wSrbkJXcOSF{cGX0hX,\?8}d|W]r IZ%%ӟaΝ' ^%+ : BI'c1/|ƞ (\@/^>EsK N_C^ZX8?-:5[mݣ7nժm}ؼcX/,bVqW_V:cB.lݵFBU4[U {VpQ\wITUU׿%,e˖A~> @_2ٍub)^Y`3-;v`İ=7w?'OGccb߯VYnŀ~l* +V.zƙg`ixױl*yV]56_P\loEi#:=6yBuU'N_U`T:PtuߺS_ vl> )_IӶt۳A[֫MW]+Byy"sNkˏJg^䥔vI%¯{`P`#?y^6`q):ӔipG 9-PyH!WDz Bu I] AfI9tMj$Nnx-X|),Y7Ǜ qam] ? b]xwF@sK2C͛OE 6'tN? tVPgo.7a$VZUV/U>Tr`"nܸׯsF;wbB`Xz%oۆ[GLv^~%˿_p*Ǝ=&^W믿tӡFlٲ{QvXJē]BH&!Qǧҫ؇Fkk+;;x?sʔw^4B@zq0cN=@rXp>9U^^|;v=ͅW۪5(s}qw7[o I <bj:t)GƏVc5IӷO-^pH`wѧZ|҉HozIuUu`7.gLB t+MRb1٣?[aɚ fv*/Y,kqG^ 'haKoG`{.rD4Ŧw1ݻGiX?w ~Za0{?L.vU Ge+? 5Fw-G%E0}͇ /S8Z/@Cu}]lJW3GƎ.NO)S)l|HԩjȎY'{$zlLҴWb}Kqn- g/!_V@E4㉃ނ2DA`'/y+3q JbNh}4U~0l@9B7l³m[bɒEիOo~UiSYu޽{"$go/; 255hn>+aIq95WXG ?QKW]ſ(XSWQ)[|~nݺc0x}kؾc+NT> u1 LV5ҝJŸ1cjZ46IÇG.cŻ[C?fIUVc{KvQO}jZ/OVUPMu5Ο:O6s^]#MM8z$6 ` g=ش.O3b(?Xx6`X(E PԯzCK!x|b\p _6Sl?z[?\շ8~z`Lx}:ޡ֣?wMw|tKn;7kcoDߚ=I^yI`8TL೬gt\zӂĠSHF%$s?B+__'Vc̐, 01 M6yB0pH>Ɩph+x.Q5;ń(Bg|`>A@4,9EpϗEG=gLI0i?-DZ?źR'Uh`V׃i5Dr@JIЀ }YBJ֙eB S4/o򲢻2'J-W:FL"y'4QO(lǒ"I ݫ}!3Ϝ~Yb"yNwЬZMGص{'^yu.ZZ[pvK :: Æða;ѣG3sO< wB~}#8xp?r]vo߆{nضm+qA,YrbNz45Iʻo^l߾ &kAJZ{닾o~hjjPUUCa}ضuk" +AEݻwǴixwظpf܁9:> 8u$+-7z¡K9knnU!u[ 7\w#n6\p8|>Jai!:him 1b0---=d=ݻu5;N`݆ X~Ə37İ!CP߫Wj <Ş}g--XacH\zhYr5sы(+s3/:}]wASǍ~ Fb‡\hFsM6-Y?9g Gzk{aWA\5T0[kGУ+/o܎ATe+i.e+ċQW]t@"_iD-u.O 흍IL8/LоժuH*'EAc96 q^׎F3.,8 QifYȤgk "ğ#?IGJSM=ʔQLb6ޓ^¼vR7@1|2R]ȐvdփaTI.o0u4M]j[GX_R*vWeEq(4A!OD#)ҽo*tt\̝ QpQ{x\ 7ЧGp~Zl~Bw. k׬c <{A}}}a֖V{İ!C0p/dDıc1l`MWB:y%mGqI^uzcUؼm;7AMu5c쨓g8Ri:F 25N0$':5`ۮ=yMt".=طZ|u5hg{ovDUu5N9 <񀆆ƛsbݺ5&\zLl߾ 潆^}N.sL{֭Żn„S';o+[G]w}<@8ƣ?˗ E]Κ\p^{<c sO?ݺᬳƬ Lq.b<}طfμأ.Z[[1n|Du5?}uتڻ|敐RǞ{Я_|pj!`?~>{~ ݺuUЩ ??P]]Yf[&uBtMU=z4óx7{.رpWbРnĽkJ`?b8}騭 />_ٸ]}=1oO>XgWaz IDAT߾غmV^a9m.;wb݆uXl)1srJZo/z_| >ᱧĒ˰e7]w=>#심}0_صG0v ƎbVWW|zQ|'?CmM 8^muXa#COFWbXG#^|C/Bvp1ʇ6x܍ښ gO\z~qnRC_z=i<})S-vG]ƎϜgUMS^~|K5M 1>J/\D5ZM012QOu@&IwU=>๧x6Uz+kyMU{S2v\2lcWbGMA3{Ab kv:侙[ s,d}/"' $@`dKZ]|u)Ed^³tCe$ϽX##-\uqOM/ gv:HpeC (zOO_ +tM@O%p)٪1ψsP4 ިxfiஔ϶!>f^Jlvʮ*]Emص;Pl魫)Xy+υ_RɌ.rg W\<}*f-Ŀ@[*\PrK˕ś$  ڙZ5H22]tQةdqƂ1h`=ŢgL;3ˬD ۉt4e5A$,R'ҍsg[Zo~FKgj,\+֬3/ /D?KŦ܉1"/JBCI27?u)F@m$7 CsG@nߵeN{{e52;%.cݞKbiTիޮFm*y Nz;l cH 8%'g}|Wi)`hS d-QFa|wACUOsF.W u5_7vHQ_ᑭ|ayOMFgQ2 eQ"̙Z_Y@aG#t5}u9B3бP%jq|`M'GahCeKw(JB]̡"`]eeI7>U^Uu0kl 8M%쾱S홆R\#+MMu5<3š#G0l |[1~CyM܈t@էr*fwMLZKԹM37Ј~M"aX"ZO1jSz=u!= Zth^nXyϜk('s퇐)Ʌ÷@!i7I"?ka?5]05ӰoNf#NQIXu֑֠ET&i7cOFƵ Rz-={%4-SN(.s(fYMJjyU[ K. \ Hɐ a$qQgZ[!&-%g_D+!b}7ګopV^l7d]RK ZFaH_Q=i0|Cw'.J.Q3'0G1A;o^ NJO$[ׄ; # y4_95*7iT+ `<49ı9[Ŷ \kӡPlWD|;Oa[~\dPl\ EnE! UaHa=9WW,oȜ~QJFP pna 0c\lNC,fE=oZ0k׭kA P|\{K13ەƾۀ@c. HI 쟺aAHUN2v9V 1rU$g(>asy[(y; Fj,$N7m9HUbm '<3OʱLN|$$Nr̞Vmǧm*kzL&P`S' qu2nHr%}۝(B;"$;Rr ^+ l+OYM"Y#pk"\ 0)7Wy](ncۘLAx  g18sfҩ;P*:v+r3PzkvI-HPKX.vCMǤtS3?ԫ8jDNiT:^gLi ,o2~g%5˹ K?&g[.0auM*H R@@̅E#7V{i+)1xvLOL*k'ς!Jrt6:nA@R"% %k'Q="V,b )Pv`%FycnԱ$%w#瘂ȶ;*+Tԁ_=c^-W/]L ؝wl$K>39z\Y{~XMXns})x>Zu⿱էHO*T-vhOO{D ȇa˜lJPWȡ8@Y98y}-D}Gʄ+r΋\Eh8FPC,uhSnR_.f7A/:gt(5b,t"U0zAf֠*Hi%; d'Zdž֛ [Qל")feƆ",1v!;1lgb|Xtf'Wt["\JҼA 0*RnV FθGZa&t34 :>1@ Oɨ}/N3}C#[ϱ,hOyAY@ Od8IBK_mbWWDFiD4& y1КN<80x2Ŷ|qCQ.5eBz0cYL S.oUTm#".*[ByTR+Oh&9ʖG3KOz,U O1:l@%Mn]vY3x غYzsdM5 //19lE˳ErYBʊ_>Yg}iNry뭟mB-:t8 蠜D[Az9us2JM^:6QrLBn])C@RjG5m 3˖A8 MrET=GȸnE]tܓsވ~1+;uMu#H|ΥYz0^G!ׄ.LK;0n¼ + 2by2Gdx40r-1s3=o/gׄTe/2Ib_.Pbw~7PPN} 8a' Ey_ue8ݖD+ى-4;d TH;/KmOkfhB7LB?,rfY^$/\ioMm~˲(" :Yg ( P5Z"\yBf*fs̜8G2(WR N-w:k:} XIj/0WZW.1n>*6xkEmM] By;==1t1F_nD]ijOP:0oIoiD V*XSƍ #ūBL;iܝ: Oͨs 媖)J٨HtZ@9QkmA!L ^%֐I/X0}!'+UH}, 4-fX]ذMЦ?C/;d8R攣.(_Pɡ ﷚l)@0R= {Hb}ܤ0Oݷ M'|B_R82Ea+ܼ]hXaTtQPי.bzk@HN]Pix1lof.;K*T9+Tו%D,Tv1RowP-||TY"=TV 2roWj􂯮9௭o2L0!Y(UOS6>q*ԭODObdRA.J] ` u* P5'"v:ʑmuit] "e.u6WRS}WGO~P0"ȏخZ&e*֍C u1UBquz[,Q#U܃ 8*; 0 =BU U)?hvpni;$L=[-T<7ACo>W$ﷃ5supf#^Oo\bHOPF"ɄƕAm_ݙ ! PVRHAqQ#cCgU3AL)_a4=F"(2'P[.F{< U|\rP.@D:S٬{$N`Vc'2-5%精 " \pceU B*'vR 2L{Yj Lf.^Z-# [Y~KUJ>W TK-zI~ ghUd"rk"a9E`ék$x:occ5f%eH6JtK(!<‘oٖR.S'+o+73lD}{p\,Qil@ iKy Y8}L"rk`#jgXC!v#UU7z81[8~߮hL&i-՝>/ePELe mp:ReJp2Q"ƒ 6S6hZck&]_e'- sNdIP-,_jv| *Ո|b|D}.k֓6X['~]1\9ɴLE~cS~4ZIԤLy/$O3m} Em0Z7hJyf=RF\i59_0]iռ|yIIljTR'DB;)rEZc cJ>_mOO<8 RvV%v%U'ʥ D.LUȰ IDAT}T1Z wC9u8ZBݵ<;+7>}JjVk"b?HiBEnQdg;!f6+4+WU&TW̮avv!j ̰;YBәW e# Y!"U̓B3 i Ziy90n U)cɒ4?$CapsxfwIJ sˉ8WiatJw&δd{ $S{t4# .(0t&mC4TϣMi faa y=\G8&V=KPu괖*})X!!pR`'|+~דKD0rw:rM< 19U̢h9!>nEN@'=nS%y9 `L3Rϝ&l 3 ͎J0U<:"h5i2Y4^Ō@ βlr&sj#>Hu& ,biE^c)ƿR[0}T.MNȥLJx8gY?S!<4i|63 y 3۪d:^C+o 6U=?+m%) S.f$ZC)ȷ/,"$ ?7JTC4ա@`O>@`rL) E,ce2@\e\o_+8uYr@njq^ ¦ Zr"lHjԱN!JҪXt TrKYʓ{l u(dfP&ہ+!](߄v 4k4c- 3:- 2% RǁbxQɵ',Dv6NmN\9H3>sIS Cty@]KǥJI;ڙx+/M] `TL.ۇ WD?naۥOeRHY3;o t|q$f9 ҭj;UЧKAv7 (dxcTB ȎD̗+wexRHGQkDŝf*7ܒIZHY"1ӄu=t& Luh*6F] AvHg#V>O;3xq `Ԩ1n w"]D؛@eɂ(pK qz@.9Tv&W8/t2UPZ|L]_uHvFSǚ!v'V$!k ^ެ#=J9W.3_%ɘrBdliYR7(bP$zM !.n7ej+YwU!< 6'CJ7[,get=?gSc0s7 vTlf>i# B.H.?Mb>|i_|eM<#%~.]exR PŪ. 0_ B,y\f5̟3ΜǻI>#jD ;eF&P  ܼfe IĜA! tWL/7T^YHRΫK&UMFQoϏd\Y0p+cYcj)| -$\g(.2k˝\WM/HQK&OK' 2IR:ЈBHJ|*ePphi'x-2 '8x!9r:uK´atCpޜƣs7,"ua]d,Di/_OmiO/I(Jկ qOda_M)_.]cIXeW ߌ X[ sc?#x)PaӸ>ac{U]Y+#I~|YPYz}m _N;SI\{L,MَĒ,o}!lPOPQFYHhC-OAx5yuwwc=x=s5qm˶j+4,R{h\\B3T\m'e&ϝNrT00(z5+d;{M4,Fh߾}x0J`xyظa=Q__1cOE_aÆymUHP xϜf_hmmk?{۷mCss3 ӦNE_nݺiٯ\/"֯_Cg3GUձS-NjpJjreȣHYkGfg]hݺ|>]B^<+|fnߡi2K̞q34td%Va3=̍+kF:д+%a ZA$ޢཙ2ukIJ*8^vIjYʡ/2mJ`e.DgvǬzfłʮ Calǖ:{)5+\ K`t!:Pdڔ4Hث*;ݝɓ3q8+iFqX.Qed5c4gt Xأ2/ 9YbI9] zyA ~rQ5J.2 $)WA>';KW>iH_Kc930` O=iݻ1xs|3 ʿb2bw`|?^ ~h-a͚Xf5.Y?H>eSteTJr=9 Ήk ƻt偼9C 76#szFБ_o ,7ٛ&H. ѨGZx  J-W﫹nIΫ(<``ЛO$}Sjmh`c*K/lWǵ0H_l@#W+}lg}lK{!Ƙ w~UHA_@96HE8͛V#3,e0lB>2G6&:y{a` "_1G `8̢6PH_, ):YUb48\JI6Lvǜŝ{--xҒ9?`q&zȸ﷿Ǝ1p \zLKƥ1cO=x /^޽۷mŃW(xG9F7ߊ+gFMM^,^[My9]īۗ"LByi 9bo-tF|Hc(s{ԵI"na059YO!`%Xl1Iys_|!Qmg?:޽ _?hQ=z:]\}x睷\}MGګ/'gΝq oСF!pPc?1FBSS FQ7T 5ln:{Ouqd!a`'m#V9tȸ(웖 Bh n Ux7(8u˓k6zH! ϔ}7W\q3׋%w}͟(PYvܠ$? 39t=[ ;u d)otyLts1K>CEGZ36,ji u&QX VB_O?cK"19R籭D,Я2:S,]PM6Ձɋ^ K(]{F=K ^M!ΆW=累J]Ͳ",uIΫISM5lĦuXفrcNX|8ͯ_kk+lތc`Рض(>x01|7CKSe=*C1CRb* 1ʃRET9pPVkg_ۄDy=ʩR/^}p1{ggN̬-g +j?g8T~5/NZp9 ivԐC'ZW$vkm}ԫY]–ZzqrCfJ<"NZs_KkUj,Wy]`^nk*癉7݂Xn%ѣhj:\74՞ihH~8py7߾c.}_W}G-LPÐe|0W/+}]9la?t8S^NjǴ}MdӝK1_H<%8$+pe:>7rЎånF$L(}_MYR99WW(x61U\5R{ ȋtpvZ׎DݖKJ {~de:iXc2|e 00||@[:7lf7P(x<'<@Xl vȌC}w9%-1ϗ0OZ RQƬdHGRqSNj<y>S2}o2)|#=֓1O];(d@V,)fOKơl,<ηtE]]mٳ[ٻgOW@S?z8fĈ7{Y +WĦMnZ3[L9'hH36+{Y@ @>L q 1Cc Ȓkn;SZ[D 39,> |< 4u^E@5̴8C.t&Z0[n|F*.^}-jgnU^u:=$8z% aU2_7%q<҄#Pp{u,/6[mT<ͬ[%e+b{\ҙ[T6iE6X~MW *?`e\ KFg _r{6\jV)$NkF,d O`΄)D-ΒZ@d%PVL<-nYaOe-WvSYfo%?˞%u_I|H`r,u}|PDSfF,&m*VWW[n ɐࢋp'eKhq`Mm f̸ I]_'9ohllĴIS0}9xy6mڄ={7b{1̀{@KaqP#lݒ7bĉeD?=7_:"ԩ<9g{쨜-搔rn_8@-ʹ)LG\~]WnǙvlvj \/eĄ:\XVWӬ/re͒"ЄMXzwRݏ_&晇?4TgfEq ׼y8-.(u͒na iCmI^mywì:.txY3abt0-C **4(~ԟI('H6]nHc:‰&vX Ksٚ ʗ1P2 ,r<-"X48O8ͼ=4`mؾm[򼺦 P{ԩXj9P80i\{شi#֮YKZ~{w !oxz~HH\+W g^kt&Ǒ`e8U҉ϷFCDi,q92@ lH xSƲ; )B2t0 Z8I)FI%,4hFzB8CsT6ss\9^h/IU tK%uRnވ߷6$c& F#Z ꑴ5YIU.=PY+|VKDɶk-$US ,vޜ8KU@@J0\u=f,^"6nXF1cqŗb.@ss3^ڵ UUUhi)櫭G? \,X0۷oCSS4` ۷_" /°ҋ/`58xjkk1xL:a㒊zl۱X!;Zo}'!09ar)NCTaM@(CL D΁0+ 8;نNޡV\d:W'ޅ' JTIr40ujʀg!^!rOɭLI+Kºoe.i4cAi帳(#{eWY83D2,Q6? ZYqdZv2WjP) *]f 0^a-̹Ntfa ,4͂c5~fQ$D~!LOޫRjw{魦f#$  FDT#&;plԣRH12-&oEAw5(t^xI5ВŻb cLm5%lo9'u`qޗ B 8KB*atq˕ 3 xg7;͊Sվ;tʌ *: NCRwء9td25&JzceH&GRۖH.kȥ\0sN*yۊ~W5TLpC eRCz䪛{Iyr]~ 숄.RmO\ahY*r)Z"A?\2l,1_/qaBnr3;sѼZ+0d#Ehjp8zyuj^eS7z]ڃ a#,\\*Yp^L̪(GPx,ꖱؒ8_ӻ#9V7E|,NBP{pi[CdNqe)u^8W{^0+$YG*z{ I=c ks;aI*ox qN|hW!!z/ (p K3x0!^"* +'Gd%]=Jnn C>d^}<غ'w/1>BA>ZoiV@HN# %þb<)׼@V Kq`tAe#uwڬϲuhJfIakQg˰3xrL&FEފFYc^-z28{HaK^O+Cj_:&lfc(Aۡbc*؏qGʎd\! |'#õǔ͈{ v^CN4 O/MV6NPA @K@:2g+A ےufFR!n5m"x䫭~N)ϕÔ* [@O^Î4 5O|CvBmGZ6]Xػ|@T>~ff923vjK)]=`]B$-Vx0 'Tx9NXX³]F5y>IEד(X7>+yNN] `&9C*C: 0hBzwhԝ#{6W~]\~`i=77pe:? Б#m>).x-#ӴEHq>t#PQiC,𣔣@23k@E55T[Nf4k 6Й.vO|c֕M?ub^  뎑&  }=L޷sUtw+[%97O?^ߑ}xYnm0o OF[T(&3'?k?\+UXy$u9S&IMj_ d= t|@x?,d)02J[n@`r f3H8gRKH dcxR ?ᆌ,@+=Y:zOs!=']u~ϕ?āFAT0FOvuAޛnI#W@fuUtQsFZ]]Kb~nu*If͖ .1}0L"V%7"_VIzuwj@Vl,k[gDz1XOuԃ Gr׫W|m]Vt󉥰97_J^D&%:9Q3A}Pg!FpQ^,&8Od_ 4 TD9c]NV,&S+nK .NeiO\5=iox(;g>{"o>]2 nC[@i`>EQY2pXny9˨hDl/8r6kW);3Bss +?Oqa-) hdfzQ9({Hjfhc~2-<_ wѕl!C|T/;^ U įQZhi9tݐ׵1C|GpOoht ofcMz"/at|LZz;=h\.C7^?\׃?9k (%C4?W5Ġl_ztf6'}xˁKYmge1X>B/kvR&j!W ֹʅyiX?Y#%!lExdBFUXDtNf:i>5YzǏ9r -ni{ƺȑتOYKqDEYr]i`\*+_~%zKis!JTrm을o 2 b#V=YjEbBGEuE(u֩/Xc2֘7n+X nb'Jig~+Fryc?rcۂS#ֻy rh`[09Pb2qo'5;ձWN=KL7y۟kz$"Ǚz!qʬ31pS*bT} $pqg[^d14M9]'OQF(X8: ձw qX1`K rr_"pQXHǀH=XA E7xmDX,ga ɊAZΗ{gm   )h-t rhm Jvo>褮S]y;rlh?T8)LofQk bCu?: eTnc}>a07hƠksSwƏɍ>m{òk@0"t@|^o䁸.S4][+A -츼=!pvJڪ3iUɀ0ӡ<:)Q Ɨx]f`:=7n cE:;ghy| FZTQ+Ղ,) ;@2FjʷW2;9cˊ@%E$ HtlbgjdX~?ާt}F)9Х<>CA}`Hf'nOWu5`Sel;~x5#C7L9p7txdAs0@: < y,]odr~DN5н 9 [4Η$/NG78V$E+^ xH_I(8g!O' .ڨlfwq.3_BXz@6VQͻ2Rd$ϔxԺEqVL'~K,h)d?W!>rPyqRV0M9s?u0[@{GI=d&tPߎNEroYKhFwh/Ai|/DB}1gCV3%:G՚;٘ʽB_9>j,B í?.y>XC↣К8ﮫMMj;hu<6,Z^D]w?Q!v4tLz2}OJop'?NN*kyz/I~H/[kΣe,xƋ }zNñ;礓 1Wt o+r"6!].Hs׌D%%HGnh-F鑇2|?ֲ|~>Ͻ^ e]Htcӕay,B5NYp@C%. i/A"]M A){$qnl"S$v 6sƃVl( G܆e!ShQҲ|KTnO͢/@o.4q-1lC壷mG:[^j]wʄ-[_'k"2xx]|x=Tg&̣xyAdy6]޵/bGlڈ &!sphsh2RSC rI Lo3kjun]U @r;-4+{W٩f= yXIػBhj@G} i"cBZijxBL3t ǭޛ[qJX:tC8"oSνG~.nz^Lo/漝Gg}@My:&"ŊVQ''NYag sp([Y27-`96"5:Yi`I$pPriw@ -==Cpg_57"x4Ʒbh[lYx1l}$E#Q+F@U7,,&kܶB!"yy'OIF-\jCz԰^tA/R *lu鸭+ِF :bXpG=jȴHbRVvY$ۨw\rm]){r13cjD~->dT5An4Bs@]P2X ]o@D5gfanLKFO>`<Ht<_+A:IkX/O6;Q\ԚPŶwmd{^QU2EFW|79q{2y\qVc'^@;s#irrLU|]v[~C_u=H]f #"?gkEohdPDD~};(le j-/ӪHoGP%[0KxΫ z_*. : "(W L͛6e>_~^3N~C~@'oqɭ?S6XcA_ kvg5bơJQжL'-1t7r5*be-%*a3 j]B 䮦)ު~Numx) jku}zmKV+==ӷǯbݎ8_ڧ4l-,B9"v{V;clB45>=}&`|{5(h[_7x 8ia$8~=BCwydV ̥G 5vt(N!Lx|;J#WR>q#mztLm#7їǓ;=+FOeT=mٸ,]s&we OmF$M׸uǔYt: (~+gg"[_;[C(k]xG=e*,m6I$(Qvi#Uꔴ [/ё%NUQ}yn;w6_պ 5Y^8XPX +g=ӑD̛e }9l pnT,3g9w4-PIrݡ-_ H6-Bγp~4a;[b@mcFW5Sw P hUWs͘؅o6Ə?;*[U}7p'U Y~l=r&]T> Kj:B;Qon27Pt9[IP";N <3 * jZ@ۈK`rPd#Pѝ^l ,u0tPiˤIg՟d1 bbmZn3: w\?ZAed@@.ʂ{}se׹-ȗj3<$K |):cv9[O齏XoȈW |!r:6(\"I0BEVvDko#5z?LQtL[뽷[['`,a^酁7x9 ۾61 kc[o_k[R& 0mNtAsl/#Lvs}AѤY=:r<9``~☂Vql왕.Zܲw9dMD튼J\@x6eʦ "ɪAG,<:P^@dBB)WAdȗ8&IS%ܚOPB bRr `^gD+{ [jXou 2A-0amFVvS}ӟm*A@rd!aHQ Tb& z**&LV?ڟ?~~m~}هGH}BwE} Y<x"H8q=MZo?_~E^fxB,ydTP/S{:>aʵ_~"2uf (ˉ{Y_.\(pN:_}=E8d&Nj ]X5$hNUdF;4t#'?XlY&GR*28 R0|6Yv :Ye|ݚ{m(PB;ӈKF4 B 5xGIFѭ^r6OVE'v/J $SBٳ|X@[Ncv 2:d3N˶sqhW]yO c,i޿90$g}jl7 kQ3}Y!ע[tPnƁhoh2En sm,S[È+}:/PgTuBlm|ΩK~=x}Ty& [hGk۷oƏ DNT9g7ߕ5A$ tS5FGZg!H/>@eիey/OŪ9"=*Ư7Dyrriq:([]tɀ#ClAς7OJʥwDLB'1J7ɣA99g*cZgkNxH Sq]ZAOrcQk@>uy,-⿀j5q.{Um_QK$B2X;7idg`o\J˚+[a?d3wK!xHGb~A߃ B/=#)`{gh '>[?۟aeow,"JVKh={Sdڳs6/?qy|/ PMW7+O"=AUjyp$h%WV|;A'SxY`f ~LYo :Ca)km}-$m2g>0*^UƥC-#$I(*se읡\1& ꍵ{e9/qo[}}1hKjZ/c8KM 1*Ǐ~۷Wf7b΃Ǥ a'q Y;L0gMryUޕe)$U*zu_Н>/?*xw"P0|'hBĴQ;%PΑn>{ٵEj uzLe<ಬvs)L'm֞J=9zӼk\u>Z9_~2]wnXf0}ˎ_?Ǐ6#!i; \=U  MDd%a~?hM,[vq%tOѴKyzb ]Mb۟1ɤ<f@5 QklHB]gdi9䌔+Y~г:Ip^0ٹ9D8.7'|s)zjxq D$7=gh%׳ !lm|Afͯ9{QႷ|oǏJ3uNijҾb?Gs&ҏB뼉m%a1%W5T7.hl'ԍҖ=t;FdC~Iv* h:5;0=#t"\iC\/`GPͼ߻h¾}fdQț DYQ| F+4U8&O< ں^uavzӌ&ڏ-zࣥYnο"&^fb,BE4) O-U|N],xNgEe*TCЄAB:î2G{Ya7Z?4piHs~%}"pꭓVR|f4 2YP:X;2qn_yD6(&N䝊ݗF|n @ֆ3I{Ӥ֩rV`h{:y,dfc!}> GT4OaLԩ*>)t-׬H hIXxU_rW40'V^Ky?'*al:Y톨PԪnsOqdC^Ho.&в WaWo M}Vm| MG+Ϟ+bD܏\z_uI:W@(J6bTLbQFO\ox;xvQ ݍ(@uz6+pN} |>=(G/Wǹ*ښ'2A2b2h3L& <}Llh&jEa#Qh#u2.&ͺ|Rw&P%e?}_ ٳyE=z{@ M;+ts`YEc0 ԒĒLY>`..Y&5b[-C+ߌ3z<-p|rnR`˖5v[y-XAe)RXW~\1 ciG_g31 =ڸ9(n[Х&6ɯ/z0;j=H0h!A XI?W{BOqYw"K@ʻѺhS7Z fJ$~VLuQD>/[M+CpOFG=؋_ ৃ Ptr8ǣWn bY-`ZdU_2F.;FZ*dC;^(2f+#@g^^!7J+v*;*V5dvR?B)F /<^QD;vQBKRS51@Ya >G‡I͡/X[ 1.!jٜ8\;NLh#WC,y!V6KӥA}"&dݏJ⑱urJAxTp?;|4} -c#w7-16sn#֐=8* `/E_ wOAɴde%s oen=[8[Xt=B㥚sa >Q0`2u1TEV> D17cnˑz``Mf D#&8Y-oϖ7s b"pkم} oܺa+Gvg$9͜bxq4l>˫͗2f$&^Ngo!B橒iQ_bCb_$,Ms^X iݯ纄K2~81숝nc#c}`ܧ5AOȳ,<'&6-Q )T`+5B2D_~QԠ E@:?6Gؐ9ߌ>kyQ^SgHy.@1fAX[F}N-=pOA5J8#9 -2>zq$iݴ&f|vePϖbQی>fVfR{y庩D;C\s]OfphXt] /%@T_ )N]+ru>-+j *Dkf 2r el2BQcJbN{/oZޏgm--N|i=i\[p“7;#1G T$FwO>~d A\HfuϬHG,YAsq"(:89!hrEd @}^#Qb|(yY*:8QL0L:o.S&ףՔ+Ar p+Pq*G%;{<26;GA5 `3vHFQ*ex`5PXsI|P~*ww'hsׅ&ב'2w0X n=;r~A2exa2y+]*PpH u98Vl^۠|l_*{l@od2Z4>@(gɑͫ9ǚ=9+N12Xu10 .zx|m#}J3w7Q\長:kEvYp4ɔtƵ"-X/U I%Rv꽥 V<h~βqL90#,R^/Ptb|*]!G= r>7r@4SuZx"Or}ޣ<Gp%> "2:4h71" \JL$0M8̑?Zq=PУ6y~U #)XZK?ע~Ov"q/>Ϋ=TZ)_h{R9͓JKPq ]2BXH_g7l'Hyz<#f0y5b^c?-Wb .a27}.4cWūBX:׻A=uXk,nn?3=Sgd _Э}3pyi|܉݁6畓}Y9=b !7NJj$o}no't}l7#[v(=n}OQg<д:uWYi{ {1c٬IMpP n)G0mnqRDkIQ "\D705ig3ѣ2C73KȂM;='Z9>wESrTgI&nOHSz4ro*y\jCЍ=F3@.} |-  NAKm&lOXg<'(od(J3ȾALO35rx/zyNQo-<8+҉]--L_9k]cLKGo1msHvK8~*) Y+o((HC#oP=E.AZGoFwd \۬$|w r@wt^{J,訐h]-غm~y<`O@/v~^һWi!wtN{<J>ӭN#pf w,ehb9f2t.~ ݞQ1kRSX:9j3q.<@sփ--Wutg5 Jݍiu("kON &Cj)m: C x͘Q_|;} )݊@ J p@кCgKke"9ѱ,TNw ޏL.ir?#%|4Ԡ{DړX.ds^?|\b+ lz`ر߳eD#]{x4Ƅ?[ÍW3ӌa:%f=*]77&˔M:43?-Zu6=WNhL{'g::AGK2DtyW .%o]c;vͱ,ݪCd OI|Fg+?輍>r?r)$06:E"CڷA= ' Qv&^OބyEzqG*y8 ]``exg>>#q(A~2XE^&k0o 6+}%}cQ8)?#U uuW^uvV`DRf2)yx7C,diq oeDގ[8Y@+=oAlFݑɻԴf:* nD߈ 6Y.0] :ĽoVkorh,TcS)×\;ܿ | ,=3Q/hmŠ2Wn^}?\ּhE:_( b:"<:!#.WK؟W>!J|t!W?q&`fWٌ/jVL@OF<y>o'6%]viom"g?+ԝ:0@ R~jj49/3+y0,Gaean2Mس\jr lC,-|nO5ea灊GD;n핱j n> |'izY9eb,(fFi11d %a+@嬵yQhZ M0-:<A9i7x<'S_PsA4@ߪSi^/@(vg;.lv KC //b`,{t 2-?He[ e}q0!H_R# ꋱJb|F;N9Eg(_yXK̋¤M^kL䅒$euP3rMWЪ轃fIwmũn.=r ^–D,/dx]p V~L!6t lюb1p06rq8/J>~XzYɅBU8_C_n3܍76i"ۀPsDu #aY]:rK7X~~'_H$J5ICfh`P/n X,. 6k$h ^qBy4T9]N<;zW4gCb:IИBB4ZY_{NL9kMO@3N+^jBc VCIH D|x$I>*8Fm ctn `J;YvjE؝()i-ykz2>tB5e Ah 0YVMg:î΋>[2{Dn.$z_AMAU-P|PYeGeq9>ZaK9)p1QWMFGQ]  )'s]fg ̔RSVZh0;l*z/VCC.&܊8M{Ež?ԝ~@4U~"u\S֐<}lJϽ]?kvK8O"&0H2E;W@$q럳V]_wU,;I*>hf/\B¯`*xZkvDu<5A?IF>ȣu2"'JF+uNgWwuy2W 1-Ƹ:֍XH,( e:}FgNI8GM_wD+nh> bnlkr3ඦ&x, {GsmS8xOL7Q+ߛIEx`qْ%VĝK0-; փ#eU|I})ɗ(I5C,9PH Voh68:X4S`XmA#I uǺBKЉUFI "w*02 YZ]d][mt? )Ӳ4؟c~r%߁'5 8a<7~жs7a;SKX4L?@t\ɣ?^`W;]߳+rէ d8OG/zR{RsD^$ ]$ʫI%Y?r%G趪k`8kީZR+_tg9A|@/ U !^Pgq/ 8A16| s ^ymՏq)w d5dTև ]h`>DS$4pV\4>|5:5ЂW>L)uf",gQq"=RzUBG*Bfo{n.擞qׅb\F zMp~ q.O#*3NGHKνX˜g@cas:rӻ~J̺ipҮ) Ď*,Csnqz[-_'?|d:/J|MƝW @Awp =@b$S}EM4q81 v1N֬ϳtIcQwZce(~ӭ$: B3|uki`w㛘Cfnm̋i ]Dc3QOEKC\c!ݙ=׸$ T$)7(  XMЩҹ]v'N\wض2hgOv<(9qʪ:Mav[d5T<=s6ph3sBs7=XɶzkQ@.1/Eo;;;pv2 0w/*[(>nO!G]zg͙wpG&U>>:,>@p;t`HiL+޻%sPYL ,f+?8~Y@`cwX++amYY񳄶c4B.CBk:} PJ_MGۭعiwOОi>6hA%U>?0oEi6TBΛ*#]xa.ÁWXKז߄9la~VS9,l5( 3 /CexN"1 dn;mWaQvg5ܜDm)ʢ^󪝜Fߐ^ 7u{ؼs׎OCg)h?fi %I8>-Ԃ/Sa;,xߔv/3Y>:idi)(+ |]d6^r>9ӯ^ lp5i QvQ%ϡ\_Ϟڲ[v8Z z>[zD\I|s猡?h݀4/巎Foq:a8ʵ1[<7e8zȖk|`h *. |{-?c#NuUۋg@ >" p79%plҼ?Ġi> ?!PuљXx |5 cmtQ&ij'H6͙ڰ 4X͐O f5f,S"\E|s ׽ ߲hkoo*Vq%[/1fl9lK@ LJG2pSGv66Twǹptd(8O&_Ԙsx5GOưI}Q*$ZkcSk@=C'U {x%-U骕0/gd:f s)]h8c➨k9wfnOrG .9hGf%}%s?RI `ẉ̎2ϼj;h]d%w1 P8hCFjm1^oZ/6 zج+C~&/_`B*+rt_lMey0RF@+]ϴe YS6;=`ٙN#\KǼ`QPS?A?8j礎FXC寠F){D׹Q±G\0p+`ox`Z9WM6G{`J|Y+{Fԟ}"agЋr}mA#P Qշl`j6<Ƿ~#1Пfo@ 2f' 2W1y!/v,vys9POH6բbjV7wbƌ8Ksn-z4Ge`D]XAy7(1ƜwAdv*NXQX*NRehŷge'<9:pƁP3Fm 8󱌄B(gKBl;Nftj+hgEdtG'3NnݬW<S,v4  :] tXt靷'dw?Q_+=ʖODya[5<3F93GSlT 2fLkψl8VIE+ugJ㈭c @,#³cL{+yMgn)*u¡`e?$Y/߯@op ͦa}^sns3~l!'Xd:6>OL$fHqE#GѣR]n'Sn5gGA!OMc%x=)v߭\ ymuSHPk1 Rjp 8ңcWtRqVv܏ 28w }9煱1FHG4fPt1&#עɿO^^"* [k>pO:bK]X:A&~eGڂ=>'d\J 4C&mGga.=JMcf?Ihj gUu϶TN-,b40d^ ~q l]6x,IvޥW|.7lM0c>K[#aT 1(|7LR2=Pg@#Sք4nih5lp LtAYIY04|D)#v'5 g,p˽V^χRt٘΃Z9zEr*3+OM!7EH z*`lscgʻۢe^jB5ÈDqzqD^~qMafXD 55>?#̂ڡ0e/;˶@!Q%7xF2 ʉh]vWxEtaG;F`G^%w=/OKt}b IDATgWɪ PEf*-~ *7+J0/Ǩ js %أ˖R 出k?:)ʢgw!) ?lX g7 Vɰ.VT,vL~#4/L.Oy=Û= W˼頗ʟ߉]\3ߔ͖x\uԵNf"~)@b%ԄeSh,g#4l p My:ĹHYDC[rdPd -{u0njkH#*#gDѼ蚷g% s!&C^g~K! جE7߲݃nrb~yi'< Ӌ҉OXz>ޘ P$;7Z;ƭt(ȿM1( ˂PtUhvAzŦRL/~o2C&` THlA?χpOސ99WvsZ !.,T-PH& զݞ,e_-sI4=\y d6,Aq`FwE@_ n:}gb=f%_  {Fz^'|0IH#!!Ն!j$@E> W,Y ǟ1VL/isUsa<` |$&ת0jw>JzQp@`{DroE~h;&6_]}o>l0)?|^DV@?}Ѝa\AuFV<d] @eWyMn큩]r30e_k@f *"gQdE1! Muܫ9Ua%AB\N(ũ599W'gz͊3me'4 /3opă+z~ 6]hwqG e2Wya VD~`hyb"\8Uv~f%P.CG?-%u!MNŃ3߾nܮa%e>|񶃗>PGPc 9X3ˠ4Jy ,gkAJ`]-.ֿwѿ)O@|iCgX.$g;MWEݨ-a(l2 1>֛ۜ=IS.η#ǒ5wXW6Ҩ5fUώq<_OOeՑ A<ǑXmd=ZpPZK[U!< |HCq(čyǟ7t&wAQ#5!*$9c }|VyZzUsA8o`:uV:CՑupt:|^*hpt pN'vf CK o ZX6Z\@ dMKmFl}>p;M=RK†]& YҲH<M)8a3 8 V(3*ّ{cVĩik tmM krrnb.e|!V7HA.Aէ`1uЀStZ3y#NSka^"b,v\8ѡa}pnAe! zE"@|p c 0h@e*ee͘=>.kd@%.mv 0Ԩl\Fb6莵@~-8܅Z4( ˢDbe$NJ9{txAz$޳1@nT%LJgx-F)@)u@"$q6A#+`ufL#wz]78Mށ0` Ǩ{(e/$ w}J\ޣĎ"(hkзuT\NePy:GPo[N)319v"yǪ Oc/_BoPP/9;|-kpqKr ˯>eG'uX|G`TsUP_-]>.ѣ䁩+I{G}1qAɤܱ\ܓ6@tjc?OјI>, Cymhm5 Pm#?w'|$vǟTˀHzJ` ^Xc,s)쳺fsy)#\\ s Y1983lIlb]Ǚ*8[Fo>M dIk"si| es 0ށ?@SWܹ0ǿn̅PzTH}W@`D p\_s%@G,Y n]tt^P#{#xAVghLΡ>lm4Dy-Rm<+u$N[gbhji[rE# 89:ÙcW2u7-×,` 9)kԺxTg74J**F,WV._ _ iCNѺ[wWo QtY`xv*0=x '].痉"I>i-{N7 V>!i-ȳvM!YIZ{'A6E`gq{}2\ xXRfmɂbjW3w-ir=}vΉ9:9޿39 (g@kl~"CZlY);~3iU@ ͌8ԣ7 :je|EbF"]£_q^:L=H :( ֮r &\_ o̐}4Etx;![[sCTl{LC>亇?}eG ֡](xWkA#Y̭YA D?}g'_nwV>щ '-uU}?Z]  Z"41Vwz}A.➮d'/@m^`n]K,tNN ~ ~x |`> wij`Jp1;u[QO1m19^1깯WJPKl,݊J0Gg >X3}f`mt{v1 HuocB`Hٹ T~K ҌC)py~"}Wa==Ys6',鑋3"qIrg?D>{)`[\"ryo$(8+N=<) Ff\0$Jem=uxHj8(ZQdvu|P&0:W&WȉR;A{I*JK^]c"mc0mD\zIۨS}: 뛖e[4zT,l50@l`z@4~* ct~O陗[ L4t ot![w\l94vxlɐ,LVCPjXw.J0EwHRs 3 W.s 5#@e$lE[1ep=TWF ?H@v}^'ʾ6OW̼ǁikGu@ bRaR0k=k^Bg:S:7~gޑ)oG:\_q`SBNC:PӤX=JWk^|ۓM69[!'SS1ik՗=,{yQk]=f.&myQkIItF`:87J'xV'ٸ42ǵ@ һ,-{(硔$Ckge*H ԙZ8 m-g5nٻq^`9ʛaE䖖+Bktr72AP_ 2ge6x3_Bf Ő}*&k3t6vqYOC ltd5d~J [\JȀ]Bsje(gE|m3_OCsF_Y/DyQVl T:R`7ȻD@CF'U$7" D \7h-%ԥKa."ek ޝG(6v1JՏ G|>|!]tJk^B- evc6Kߞ|>=>7pTSC=;]> czÁuTrP6@Yt8_NBc VW>Qc^`5H~yόKfTU`c&I{&!0FyhgA?Mp.oGQLW)|AH_il zb}bQ Zr&=zҟA(?Dln: *E0ƌKT٣ַ01 { 1ićjGJJ$WP>@+~@Qycw9aHۆ牽g4Ƴu}A7;]ISEnbad uoīn[]x$P P}~klP gţ Ge?<`MX{Z:P}c90}2OA4?ź Q5ٛ7XkT?\icX.ɑk;Su?FˁKW4`8 RʱC=IGvCHv֝ I 1@q;;P9lǷ5)0y <( u5>sfVX%C(\Zuo5R4MuE <:-ir*N)sB9=rH]8nYx7DvFR xZEo0E@wAAv^<)3& :hO3(M[!+-hyӛf ʈ[-p'=ή6[W ;p 8 &QoU͈7a8X1$(yj`/]7-G^*wG ԇ&;`eUD@8Kz>)ס u\@nu^ɳ*`5jv+ZÚd*A.z+2*J#X-;KěKsȶ].vO-H%q0 gɕm0N0~/Coe^I;-KM_#./MW*x уˋt2- Yq\zke4Ш}>49/[0U*@Fu$P:x ak\2dq6Y-x&k2K: ݉ z^mkMo2u{Sehxe E7~aJoo-ɯmt^I}QFk+K ¡D=A_CF~1j# 2L~zI<} A<^8(z|9E( $w 2t f N:ZlPYCul|[Zr@e- 1ZfG~3&{Lj]/tvVo;eΣ(AP*)'Tut7oTȟgSP89,r9CM}gkW`$dA~mU?΃p)qԇ؅f!E9qC-'ѵ6[1MKeA@LXe+8= Gh={^˜z4ɉ.j S:5x@>h CĤ(M0P=vxL8l@J[M}W#]cḥ̌ ǝXGts[i4[jHm,[9sRGJ #}K8?N :Z%9dr ۦ FyYRߍ1a2|dhZl,.NyfiFy&?Y6]uu?yKĆs1}d-x?b 7 1G$~痱yc ({ ,0z6 < kv~pr%w/Hm|JG﫶A Q`0`VPXl>WxY80ꤼ * ҉>ܑ %5[,=)Jk4@!C>|~dFk|d9P!2V+2;bnt{4"hE>1ɏ: 9]K>4,C.􆭟E=xE7`~ ΁:ko+|J^aT稷އ!ϧZ3CvqNlBw$R$'OP?f@iAوME"kxF5fe⠑cy(AQwݕ-Ã􃨔: "ڼ3%hx`Y]&Rqo|w ,< A褬nZ렁] hgx@wꤡYz:4kbq>OgꟑaY_dg]aEzT%;o ָE ()E3s~9$ԑo5]ޓ\бdU.@`{ (0zw<t}rAJSe-R %úԀFd<27DNq_[~ tIrȏv~ED|׷E s`Ό6u g3֊wM IDAT7(gzrj2yS~#W֮EpGBjz>ʛgB Qe I )oGu?=?ppIUf^܈ʥA^dB~*NV5@@~_1s2FGw+`+T6[IJt?me6QאZwUn:/{:iv@`}d<,rrP-)?d^ 6d~r>ٛf%gU|tmbِ\nGr qʼnn|BW7N3͐I0ߍG?O$Ø} tCy ?g_zm/VO5Ĉ'NOZG"c|x" 5ζ)pFdx8\1v$ۥ71VfQ47'Rwrٰ|xC 2 /b<aOꐫ+ zAܵȿ+Wp\OcX< >\;Ku%npoB́$K>AM}sq0HYF j9O*||~.SJ]+b3lnms&(yQ&:D5'e`M0hXYx6`iE F u"S9>-K8)z\_GM$Nqhb3U{{&! 1ړ*+[?@d;bϢz_${/}f?x?j"X_d1XxwA(QEm)zb./ʆ5z"bM/ºf\w+U6wubݬpoYҝbVHeF 4?fB8|b}0xI|~9ǹ_;X$@De{)?sY”׬#1FMlE?[ dj"zʙeRv`ps<%wPZum8:亠@vPcyT[gɺ嶸rlSGdE_`s(Qv^Z氭/:Wv"[ݕqU-ɚ3RZƖ. z+/*AݺPb It<[o?~h߾}/8Nte@k Gi4zB9O Pv]ٖsA$Ზ;H)Kop:KW,ʆηڟ{??@@;Dk++-KZh>_҆/7${ #3?Y03k| X퇹rHv>q _ N6Њʙ " ʉ/.ދ偂#g6"ej>"br,ug3:._pkQuu Sip 2I#3~s151׊uVzQ4"(=;H:ІÆZ?Zo}?/zg (G¶:v8{<^esxn%Ndqe OQ_ 7\;΅sq doYA8wLͤkmhn5^byHQ5%]3`C1%?O"A>FL3tGm׬Un3;.yh  y޾zg*Y xʋB>s^,`#}޵m҃H{wN8&8V|?6j_[ޛ}!!«I⾵gZ}jS "K"Oj{{_l~^{3m!Vmֹ֗'gX>|V}fG,-#C`Ɖjqy]:yC'f1ksïg/7C8i"wQ76A@Dl@ =롋QG^I￵?ۿۿm*S7M%.nc",~s# 諲8[?\E%DW g&&cady8XlEb,`7$uqS`/%A536۴7-E'.mlFfEPH~ _GMu^ |XMXxPl-#+ڱD{ :l9O?}o߾}r50{WQ_|IRLW<4*z3z>Ojq 5TucKB8vƇҧ{bs$8AM.]G|PdBs%?fG@ݔsť촂nN0\QfW:Qᵸ3Fߥτa5iۭ4Q}vwf9[ uג,a#a`m$O2zmrts\_NX~[B\I8yu,ǁI Q_rT2b ze34ieMԑp,jLY*r2 Alz^8_)@JEGa #!<Y3ǖcrl~q`zŋHq *xy@}-bd>f* ˢzc[oGk{o㧟?O:0{ 0;.ZvjLYЙ].yi˰u% 6n ء).uYDĩvWնVYE$ =G8 MuUb^ǍfIj=C1h 5P0ݚ,t/LQ`f9O=^ ~leûf4#"ᛗ5 3m;LpI{41~|p}64vnD< *GْC+u6(ӝk 4ܲcٮsN"Q(b "Qe4:LEB"Rg fD!-L P߾}o>ts]UZS}U].+WR{);]綢 KF环tmGWj:t9;y!^^xQŧgўВC{n!}ut!+|RBE\rŠ1}{yq>s{Gc8ym. zi0 6,vtq p!jW|,z@,,Dz'BpOo?~*Zsrl;5UmtbՇ)+E) clM#Ȫ[}6ZJ l!\(ZkUpJ buLߗ(~ؒgK8/TdsQzI^uH,e;⢧S2]Wl*f[;&iGж(Q[svaKyZ%}eTf'ɀr:3Й%kf[-Ch޾GFf+?x[x^x8#\,W?vt޾=` JK^`re`PTl0{<ޱ q`9ڏ}ڄOd"|޼y/e7RJXo^qmoz_*nWI-6FNFpy9O{kq XwIǭ9D6\,~.i^K3}>V)턒տ0y$ˏXFm/7z`uPeud˰!|BLF/mU~SoƄȷ8qRҾϿ{qQ`l!__f>se|'Y{Ev?.s?WpP3߻7o޸axracaԴ~4F8p>{{ LC,<[uiރsz npK7o߸~>s滾BlN\q>:K+,QQO~z,2IV}Pc|8+Џ}{( ǁ1 Bvz͎yI5_T"_-HCu<7wj+z=vA|ߴ˭n9/9&6k=H_dT%tw6a۹ͮZ=ٻ@ݮ,ooex֛dE?\ "ߌ<`CmG7CO&;>/{}apOOOݻ0ip_E|EV״ ֠Qrv"TK6)ij|)wιK8鼄'瞂 5{9;%Gl.$č~O94ry ?iR;5}Ufym:YykE}E@q͜2lSw7l;]US=*;lJ"`VH>[}$<4z޺I,A:g95IB+*B]W.~iCf-^*0黤`eH\ї2u"k󪬌b< &}"<@ځƶ@"`Wm;ھV4<|])"Db}24j)>+@-ѻ{Y?O("..\.eQh5ɝ|pν\ .d Q`e&i˽fM!)&Q8] Ǒ;rvI{>hF*[l-eużݏWMJT#l&X|wyޟmwrXi2M*Ax "<9~-OL4BW-:%Q.sڮ_UKdTi Q,T *δVFY-EҲgiׯZ %aJ7 E@r12m+{+"`=h*==~6bW"68bFܕiͲyޭ>RXo͋mw۾:ђ8fC фMu|GJy%CW g]5w !w|D]!A-<$;`b7.ю/ A ;varHjnI<8n{JkD\ XH =PVz;,0#Bul4wY" >|V66`qGnC~ö_5>VWr9/.eP GZ!JxzxɹN0_n9soǂhԃ9(#Cvɒs#ݟ vR:4ZҟZn$\+,/sR󖟴Mх^ԸfRɠ/@M f֊?4:KQy x= r^Wq^4]nܣӌѿF};d0pc3udC{sw奄zwXN+;q*DЏk? y|>S|Tfc`M㐖S+[%6ZEk:vau|yt^<̧pDŽtѾjrwY2 u\ M`Ӛh/YKt%CiXbwrȓ |/iӲC0^"MV{d$32n El| KS̋~"`)mg^q]ڏ{ a k ݙv]d"`_cz粤u 0U4<.Okjj9y#SCv *"Olƾg4z/nGH)>xuGwqo-J'p: s=}wZZ7mՆm2FsBPɥ^eSz`Eяk?(ugu T=NH۠5j5hb9R{W.uhC.Y7U2?}ϫuTh3|,{(IDAT+o@2&ykLd4?Kgc%G;ĴIިi '>s }f;(cmܿvqKWXkª>{WZ{H7W%vh[|<ưiAآn:pz$V7 y*oyPÊ7@UgC3&ŀZy˒ϱ } QKBo|{nUk49N'֍SÏӳ['ގ-_z5=5lNkru!bo[3} NO&gZ"lH{Ky'#龲XjǑkޘb[;Rysmz-$UxCָ[9lslu^ȵeI'aksSʘ)k?M7U#3%dcF` }ķ{N!ΈSKc)zx\۶}tޅjwD}NmwsFQO̾riHc`%`1A^{r^y]}O9z~aO{m-\SN Rq.x9=8s~Vpߧ!8BL\s30' mN]?ӎ?9g! 9-;I2ޛ.W#CQ&Ƭ:ɗ d︝g%$cygԉfv־Qǰl5zpk%ij|o|mO+.gi,x;eU7۠=f+iKv34E~OЃQMv4<լK'U[cc h'^$zE4}xɋ=W0m֎I=m%ת$7PҢ[Gz?]&]3V V4GJP#LT z؂;`v6N6*M͌jh+vaz<P%{ѠD@&7Lq.[Hou@W:.[bэ2C&ªv Ehޙ*wY0wcgLh9Oa6\_C3 }{Vċ51Ojyx"'O~Do\j0Uk;y(MU _=lm&d`CEKdlpͬmFN)T  0|[Pʙƅ omX`Te]k)fc;˔ii/KⴲUzZTSUIմf<[o&}^iof[6Ae{N_hugNW$X'epvoBhna.0Zp<IJh +)cU_)̡4H䢫p%%A ᭴Ml-ۑdUrڲWܼ>Ƶۡ$as}F_XηW5z~OU!xc:ϼX%#JqlWly(8䷞G_+1[0@qeٶV-n*o H\ly\X=-+4z_YюdyYKSƘ4)4sEt$l9wRpWܯ-ʓ:?zfXdؓξ|oSq^u#Z?}BL縋 $l)DYg=ޕY O.`ijk%j~EҜ&62Q9jeb7E([jWz|8z c214wRʰU?}v:|m|H.;N-Tv&Z&jz1;m(eeS] Y ޻ϞN[o?]'Cz+K@NZekO]8>}W;~?|4 ^ Ez[% E3[ ;?|Ww"PA#vkCטchsM 7;}>.osO;}>|#r܍v&k*+M_RiZМ<ۄʴ޸^b$U=\>}IhuztAy9}4oH.Rx!̲d9gkc}eGR}ڹJc߸@bZeq8u7ڱy1VL5]f6ꤑfBK3,Y%+{g&-em4z^%}fMSd?h<ȱS22L&'΅ bNօv|Kꉋ5TȺHgsfO(lҟ}^ҕxU7`q(ա&Kk<̻e9pˇ Fb[k"*Wxu>ZbS?՚WSka;oyQy}?mq\fNyG]1g#W&z}ǁ}Vjb#: NcWuZJq$tIK4_ocPWsGyri(&pkT<$a>q-VΊٖ~x?&ȞW7o>9{7x0{/X\X(ģ. N>yMvmKȸ>Z"lNB~_>޹Tkg?O7(MML[^wCD4Ӱtb\P2X"`w Ў[DZLc$}P-[+vr]X^G3V;Je݉-MIWuX '0/.=Q4J]P;r(AzU7E4:۲:ODDGB\kP{ ֣Gz# @m*J*ّ"P+=J´V#=a="+I0S¬J_xJ/ִqX[rk6[Pn~ka֣2MR9ZaFejK[bU[.q" ZY(@znIp^鷶]D[ VRZk&"ԩ=f+E9-M`{kgqG,ZQⴔERxȏ~Ĵn-GlÊK%b`)^\-a=qZػDYum!e՟V2-B`W=skgxa˯閄x7n#\VOIpk G꾒SӃ.-ᖢeXPD0G qGk(I|=D4p*b\x-i=f[_S{lE.@wQjG]ê%"_˗{ʸG:#TZ"<ۺoKl=IJǃKmQݖU{<6& =W͵~ɷu-l2ޑ^}O2a@w@jo![`OjhɯGlkTZS5Z–,y?Dž{8,\%j{vzĿ‘E=?_A}jޚDŽp8݉`um1pMK> X_7r/bԞB`-^5[}Iڢk-h;(hmU-x!J o^-˽wu pKzŵ/pBe_cow3|ւ Aħ=൲Pw#]{#Hwȣ \8G3{Ckף#0ȣW>[pOZ|uZD{:{*+= jTE6/<7ZEzĿ.xM:olx<^C?^u#W 8 5`V?1@D>x?ADqnIENDB`ticketbooth-1.2.0/data/appstream/new3.png000066400000000000000000016276541501006415200203370ustar00rootroot00000000000000PNG  IHDRxsBIT|dtEXtSoftwaregnome-screenshot>.tEXtCreation TimeSun 11 May 2025 10:57:01 AM CEST' IDATxw?33{;5*T CBkoƎ` bI{@&0*( ("HGD9qmw1{{wW۝;[f^ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""H4|jzsHDDDDDDD""""""""J Pv|R0઎ QP0 *|.@_-$-6l!XK}DDDDDDDDKDDDDDDDD0b8c-eQzi`ú=hjWesLDDDDDDD5da`T YF>DDDDDDDD p! -Itt{ވDCyiSURۼ<ºyiCGDDDDDDD:-6 lΡUS5ADDDDDDD6nqa`s 2l̦%"""""""j EoQA`s nMIv>DDDDDDDDN!ti U؜ȫoi% &}U`s "O'\_rt&Z7KWH8IDDDDDDD."l^Vqu.͎]vK)¿*@$W"""""""TLSݚǫlqa`Uٮښ چ';/ŗH_~ºښ$T +L4mX}*R&"""""""j*P0ްd S-$Sh}/ Q]4dLu`"!_tXU)R`m_]d5J1QJ/޸Ʉ:L.ۑ̵-K4,iDDDDDDDDTw5&HW2D׵Ӑ&S!j?t˭KDDDDDDDD_"=&R=O2մ2L.k$6p"_ib-/:ODDDDDDDDUj bWQj<$00oԦE&%2MAb"۝p"""""""tH[[a`"U*l)xÇHG"񶭦aDDDDDDDD-M2vmXU !,kA`SR3՜7蔖:DDDDDDD*w kkNA`s c|T'ƚ'^WS/v=_ykXەJ(bL#n o{\ Ha㶊5ZwwH`"!_۱:ab qc= (5V/C`/:5,z>r;oC7 oAV20/<kę7ĺMDDDDDDDDɩnP!lp"j^5.zyӤ6d0/C1 +Vҭ[GM):F3`""""""""b8+**Vl޼uGxN00V`M_x/XAb؟k*ƫԋդ7< 3njSO_wRm+gR{}7(`{! UJX=ǻ jk|m*Lf=*iܰa9]vRܲeC9dE5]?0z Ta4zj!`2U|_/ٳ瞬(ŔMkTDUwR 0GPU8`ɰ҇-wvQZ:]ք`?rDDDK ;''/ ptOˆQ)5)S J\$s$ ={ ;uh "",w={ED$DU2ưڤ/w$H]-(vvlLDD0~?*++a6G @Rs `LDFF222zBVVek׮]գGYށ5^NȘvPbMzMc8 0z\u+ ƨQg͚5Տm(--E hM(/W*Uy`J`alU`),BNN,jM$""JRG>e{š0QM7^OH&!HM]q?YTM75c$""j~?-ab?5R^5ip?ZBRJ! DVy $""jwҡC)^ĸN`t!:I`2<$VHx3`h6u|\DDD-mؽ{ä: Ɇi"i2ٳBH܇DDD$-ꅀv^;Qc\}1;ieT1~tu@~Oii) GqH)ЩS'ò,G@ pAA>:u)ǁ8{v$""櫯V8)jș%2]-:냋!v'C=xpl7Qy *tr|>^K,t[4PQQ,?|>_SoQs1K) ÄeY0z˅>/1 8<{4y!&T)X- >ElM0hViS0 |ڴ)]!@yy9|>֬$"8_*ee@vvv@/ \t#*ȋDXp& 9p}H-D-OR>""ͶD)ܦj 99 xY05wصkwR?0WVVb׮ݨz\(V!W-ưD/[F1 h フ1Z%""")*`,+|PC,J9^!r۷qCYYy EW!B0\C]I:'5VJkjLDDDuV s 7gmi[}5hEEnyF[UBDDUTT)++kE`"yQ.yUhaXMMd < k$lx0jh vFI&cMiDD½x'ѽ{7\plڦTXgפ+2(zᅗpmcCPp(--kxWPT B_""qW0h߾R8SE\X[;x;(:mg¾r1Ə"l|\Lx ؤHDD-׎koo߮A5jt^ .1͵ހM6zxA!77'tb-7Z7uv؁ycƌ/O_k.{kx≩5N3O_%_G+qW^}%ѣ2f9^xa:VX ߏݻap9g׻*򩧞{6mƟtwUnd'"fJ}) M yyy7^5u}$1DIT\-&pذcOǡ O?"ٳ|ڠ>qB`c첋qciuԮAoZt?&NٳC0uiӺ;th}o>8CBÃ태y `E(/Op_vrPp%o`:thkǤIag8qy{Yl3(LI>\~UzS8IuʺT֔Ք7Քe%t8ܬAb%`u ڌ/%w^и npv*H)1w0nkY^5;7?i @"+`ܸzu!zX}uQYqo~s9 G-}=+W㲳ݤx]od+SJ0C-I-wY`+/9+/Ǽy`eDDDUfϞs] M#苯^>/?yp߾}W_GL{nK%(++Cn]qaΝˠƳNE׮]~&Mz۷Ì/ko[p=0t4o5[m`Ȑ999kK/Umۻ :$g|_< ^p/Cf|݉sM.A`E> ~[7N>yDy-dggCJˈ'7^PIJq.<W+BH \xF~ b]s?cMAvv6 [a֬waFLx_4h =!+\_/2E߾}oÄ 3ȑ`E/Y={Vo Ç59m^]cW]{lٲ{BN`Bt-x'qGg;7233oݺka <?e曯Mҥгgq͛ziK.s\6fODDT?<G}p@SoRrW;6m]wB7nBǎkqmˮEQpf 60D7.o*mӦ5~7oAO 6oh۶~""XK_#a~lCr>cl۶ ;vSOMAVVfz>;eVO>8cgsOWPP_~1/ ꫯD̝?kv'x<.lڴ9nIDDg0} H)qļJ(Usf֮]e6mr[t&ݏ;k oRSimy[d_<&DӦsi/z ޯEDDnԨk.L]4`ŊobŷW15nXs1G#+mBr;wcǎ_pC7믗{BΝǎ_w^އs1c;wU?uݻq\|ǟBJڎ&77' ,DYYVX p=@0 \s>?xqEm۶(,\[n`ժ58餑8S@c718Sp≧`E,kȓcǎy]~( ]su+CutƍW %2M>_U%e %7|&T+]m/ M}K.~8w1W\q9>;6n܄^?RJy&N""jPkp/w}5k ##C ;3v !aÆaΜXKlٲp)ӪƉV}x`&{|'X|9֬Yw}Ǝ'tBRۙ.F<…0p1m;Bee9s80p 8]tN;mm6lz8+"jD$8G/b\AA±_`ժÏbɒ?3CDD*p nf8tPgW^+pEC}D~G&]v ӧ@aa!gUl,  .DD^Zn'|7p3֯_8~q)eY~zz!{CU'OĄ j]vՔ#ū_4h c4v1vn6nʔছnAap~טq"̙V"z i^%_oCq焮 Y'j 3G!''o/^kc={˖}t9guf ͌[#O8cvt+/Gޗ7 ݻwȑ'K/ N,Ly .† ѹ[q'}>;S>+Vqq喛B=+O, ̟֮:tW\ xqv۝Z5Q kn5[+y2Rt xC׮D‘ IDAT]'Aʈ'6Q4DDT+TFe-ZV-+j<R:4PQP^x7ZW^y7|# ׿U!F2ut睷#++s~ի M6oOÍ7^_R "0 `߾}  XR91<9pt3`590QK/;Y oB m Mӄk~4aY>tRDD\x}Ddg ;;NX{Uf́7eJ5 LCDDD0xPH25/BGDDi#;; uOͭsR(fzEO!ibCMdp-{DDN233Ѻu222'##[ 33Q-QD"/;ՍG)%RByyM(**iZB ##M(P!@cC)a²,ddȵSQ3`Y  ֭ХKg͔֭`|z "e׼M|KS4ODDDi ''_) Xl.*B#ucbP'"ع֭G `CJazMbg DDDib4Mj{KRubYرcU= 3L UA s,˂i!?|>_D0 l܄ZRiZPʁZk(BA TSJ)C322j%! ՋiχGee%lۆ(LYt( ua:"*jUMB@9eYDFF/Q0$""E o~[)G' 8?D .{# """"O0 Vo$/<?""T#sQ``$X! Q  D3=DDDPXa`QBQCKGLDDDDQj x!QK/t (I қl """"""""(1$""""""""Js C@""""""""4(1$""""""""Js C@""""""""4(1$""""""""Js C@""""""""4(1$""""""""Js C@""""""""4g64>~ߡeaONY⧟~ >8L<ѷ%3g.D fm6MMt-X>}ôi66QJ@""""""""4J@jp'۷/t̘p776d$""""""""Js 7NF {+W~i^ʕ+ܹ38t0 8N=m{81TTTT=S8#BLyZvM,9 Ƨ~9s>ƪUP\ Bkgq:9CR}㍷oꫯ5k֠h8N;N8a8>,dff]ҥꫯaժB۷z* 28m&"""""""krm;4|x)Xx yd20 ~Yhի fڈV6"|[ju| PRcǎòeTm۶a۶mqiӬ˨O[n=֭[ޚng9e;͛C~q;^{ |<M{;裹瞿DlKpCc>?~,?+w1l;[o̘͌"vopWEĖ-[ѵkZZ_ O=r?x:DDDDDDDDM!` R[oeYnݺb/DLW\ ;g^_~s=+W~Ν;cժˆ={@֭G}>۷+V6,ǻi&l޼%bع `ȓ1kۨDѾ}h_-F8 бc|M?ELttύ!cc`а%KB׮]tj#//Bn|ٓsBDDDDDDDԘjtPjvUs!C^_{(reU߂|va kp#fM޼x׮]fظq#v%2>oڰ駟Lx7~pX?1c֭W-:8|8#0oq1LP5ǁR*ԙF@5eǺ`a:233CWTT`Ӧ۪J޽{OP)uG,kЪPkgyPv^[e|V֟ネe!33+' yRظq#=jY]òt{,G\u͚J#<} uXn*++Crѷo4f_Xaݻz駟׶GW=",`bs}W|]͉PQQQ5Rװ1LPݪ :YL x/aF,Z%sf~7iȐk}uﲲзodeeF\/ b㶈gqz(on\VqHݫo5۶U>ƍ71g܈ 8䐃ѹs5_͈Zk;/䨣U[ԩτ +Oa޽ DDDDDDDDJkg}&f|;bҥbOl: t9{iwРXj& 3VZaxꩧkݮ}Gpn:t9眍G},4޽{qEbطsZPPA&n0eJU#l8ءO#:YBvXot?\0zyݻmۆm~lm%"""""""/V&[#8 ;ίq]v%ٳgm/Q}9p0nX{93g./^;v`ϞCvпQ8唓qa}{˲BN:ETI)1`̙37bX!vŒ/bp"@~~+W^y9z=:䐃1}x(..eggcҤx̞֮]Rs1psht|`⡇&/wZaС9h}qr_}H(,\t^z1N9dLFn"""""""diZnaâoQ~`y='5S>u$na6L};DI9DDDDDDDDDi! QcHDDDDDDDD9DDDDDDDDDi! QcHDDDDDDDD9DDDDDDDDDi! QcHDDDDDDDD9DDDDDDDDDil HWOo6`ͦ"سJHRB((@ mH&aAVe ZʁRTTp4V҄JkaH4`! a(+؀î,J@vhhT±+ ( h@im@+@;{[hh w ; Z;}o44u'D%0M0 ۷G>}p'`ѣGSoVҶok뭫aVu_Q4R{j9՗(hh@2L!1῔Tn5h t49A,X_] -43 {vC+-F@J 4a&0 Z4MXt2Rض ˲`&$ DZ;!$!"4lAii)|0 #bxT)@ n0M!!!;Rp (o^vlZkw|h8v˲TpraY À2x DckTR{'|zݦD+Ä_ pw};Lh@ vvDZ Үe};tU/o=DԹKiݺxw_?K_3MRʈAu꾦t蟔0 4L|33Ц mse±A+Le!??J*QRG.môP P$}F+ 4)2a CfN6~.ډ_~*3`X&|P4`Z>X@! B )a4 SP2PRR!˽Bnv[UnJ*m0LÀeYWTmW`oIGi}- /ǂ,#mT ZAxiv4Ut]vݻ7; g:կENDDzayydذFm3X^`e16iB^#5eC;Geа2MҔBVp m';9&a@!! P Ү m?tܽm;JkrʝN/< M?CXC@ h8ZC#:NZF~w&L,3# D-%O Zx! 'L )һ'ѡeK܎P;eP jDٵgHgJ, U!`U EEm [I D9bٺbumtX}▌>W raMS0C/CHCB ҰȄSY _VڔIaplDgmc{CH/u7m LWS- CW`+74  ‚*++aF(BߣvߣBph8R^N>rtߑ0ض m;0 Dסu PhbFZ}?R"4J()hPgF#a4J W;3AV^d' p'|aBKN8t\xE8 o ֭C?3g 3&t_K~AZmkLkV0i CJH!кuZ=eص?¾ Jpq7Ly?CQZ8R#3) (΃d_)*Kʀ!2}& a6(8YZ4$(׭!! L~wc+H!{H6'`Bmva!*dQkOOp0l@w|߰{v"%8[&izNncCk!Ҁif03Lٟ4S3h=׎'[ (  j`Ew8~?enNE9t[yU= wv TJ@!ힸiۭT{,O"D7@O4a)YM'ĕW^ԛ;j"NL9q28/77p?>44 (R#/ 0D0U!:TOnߑ(J@U_Gn~澇 C!'ncFQUp$% B/:Э>@P@4Ɵz8|DR67g Ky5RJwô`Y$~XR RH(x? I͋wB U))EK*̠8l[A+  S(}?߁ZN`{8J a 33]OTMx%`U^X`S~Tڪ*'YY^Ð,=&7CAqwlضOP v(<>ۮƎ!&`4$<)=0XUpI]VTZ޶߽J)/GL %*6srmh+7]s#Nqrc/;LI& -~wzUeW`\DnhBxUy9(Bt+ v GUU TW?8Pp0Xq ?/=d IDAT}mw m{xo ޗFѯG)%y\zɥɿȉZb dʛOt*@&xr5|+p&M}{۴;@ʁʱ@ =qBRr^SU ZH5q^Ń9a @( pqVwp(m&KݓlAޱ@0 qJ+-tULoBHY;^YFA_Ig}qpubǎ7n\SoN53Sނw]]F{Ֆ=>@x#4(Xk9{Xp!B"" 2!UH> rW}Db͒|b 4 "Ø&px+U-B&W!EǪ2u]BZMr%Ϡr3:3Ӧ<;PM7XgiB@@ /!H):tO5iа] BB9R| .3؜6%M( f# B1G9 ^SdqB'Հ&ǡ,/rܪ,ӭ>R =y{A›&/|?TN6k/w,QBZ[%4|{a+a*16ty6Q02V"ggk=fZUa+?;{KJάë<zg4Bզme__%:AnaWqlH)0!GeQk?i;t^(h+aMr .moQYV DeZ߻w/lۆ> X lGVle#';9Yػ>{mC@ r»0M BJfga@iejhwyzSoQ> Z=. Q"8><Ԭz]DVvz ~~5C+`X67ZtwxsWy|q{<=ec'PP2DÀPnE44ܐZ (w坛~R°,@ h)B«^4v+ U!ɹ[Gjj$#"j]uQh@{ۧTEŋ ^wOҵi xFXD;lTUk8Я^mhMZ] E0n~c|t]6[W)CzUT7nZGN5qUW?y4`e`HCjX* Z>MS4wOB޻ZeAs//4mRHHY <$! Rk !B %c :ql, v79gZss٧.]]Uvg_眽Z{ko~`㯠jTe$7cJ ZN8( Ў 9cQ`xI@$!D9+H)M)4kW^+{bP\1 E [;sw6F?ƪA `~L|v:((ξ 0$,P`(:U{AɖXJJEӗn-^x06(H "J&(:{_x]{?so׷Q+ח1ڲ pm@Pi=XuU1!"~Aʩ.Vt=ᅻX,zc5ٮDvӷO}I2_Ÿ!kF;VKV Ϟ=1"g8fpFK.F+ =w:R}ssm @W,,|~mhk?#8)N |o?_}P$:iD!L2i]hppd"]%_!U2ml!B9(B[e@KJ]V\ Dl@`jkw C35eN'O'UTc҈s7! 4BRa UDibc>h}| #gg*CXW{5{g Ce5*wx'Vm=jt< ՚rajUasߧ~0ـZRࢶa9N6{=d";;g~Gxߟ^7+RZlA!;õ| ST/19Kf82\JEe? N^1]U`r'mҙ8טjYp3 !9ҵњE{LK]RX:[&tZRAcvci=2JHXLY)d,阦HQٍ8`A f*`4iDrwo<^ć~'~b6͟';5}_= rzwGJa5YXW'^³^vo}@GBu`}\ sAD3!2$MFcJfCBι<` pٚQ HVcQ:/"sdnD0 e,. :`25>gY(שesSji5~hg/_'S8'}K ev ~`4rUx, 1@EGSdZ2fHGJ `n2DJ*#83hAAQ9+F,o/@5#0#q8N+q)gO g/{Wq>hnf8Wp)"Ќ"7G߻q2~o-P7udsͪJ4 1rRl#C c]IZi_ ^*ٳiEyLUN9AZުvH1$%XT+ a1D#/D`D&]*JYӚˇ d+zqvI Caݯ\VۿS_/sCc~n:Em@9" h%0["cɘ@J]R188+O]?+=6vt}D{t*@J`\-Xdz.S w@-Cfo[Y?-k$\D+⯅('1;(QMJ[2 UbB,Aqy԰B +q@Vlg] jKԍL\]Հ@>__}u_Wߵ pm,;sv`6`Wg5"Ν3,ȣ`͖&vQ C'!ނ}9?n{ Y-Ov_j{q 8#IiKL&gƱ+4'b)esF("P#QQ^z~ F(OϮ$&M r'$ X@:e(YavW9@f%Z/##B59>T&r,cbe-^-PI??p"2I# +L0UJU]GJ['hg~G;t@l;w]ޮ{3'I(P*Hcp=!᱘d=W]8>JxӢ:)'p~mo'WD`{_c~WnBS͋S^elkZLe}+B0MJiu!.Lu, Mc=2(=D!e5,@dK ƱxV:[8"+SVʲϟq'Z)!,I8slES5WY4P˕۲>8.Y7gM<zb4ʬR~{ߧQ@#Tͅ_J&2d8@\Bo3  ~W;O˿1- $|/|ʽEyE3~jq$vcC0j3#<2|`X,_ƪ7&v=4؂'Oq5t] iw f7`/B}enu1 anfs C2l|#_0=$Z$٘ _ MZ呄ϯ}_:8)>8#~6s6bs<( `(Ne!yrn@avg7088Z!T+ 1>W1MJ`]ReW* c6*M+  #T]ê!t6MqDZV^E?k|IàDf3p҃؀Ϧ6u`m1;Rz#5u $j[nj!=ufu-[cfG>?HyyG"W qtbS+3k2v"&z tW阂1)6q3ZtށLD#vx//}h ?G^^3M?rR&6Zs8pEMEJ^{waLmCXVq[W;J 4aElA# ~gWW{2ooևy_),fcNhMmVjAغ1 lT'^~+s~=0?ؓwzKfl4h홵$LvP*f@yÊTqA>7^t'.0,uv ?ۯa;ֶӒ3QI/8_̰8bRge& KEP(Z2XJkE)S4O”#vMVgĔvsv9(gEUdˈӦ<=`*dӥJIr}p1@vјFY#ƂU(m=kwAxWhT2tLv:1Om_ RdqNOH9m TN Sr0_uX. %~_~=ߵ=Mﱒ^4CYh ^[:`|cf#cxcZa X.!`07 ,+,4=?~q4^{udOKc˸ .31_ʑ}@3s.DaLXn+I%lv{ -^~pW^z(p Si:}fio¡Ct^4c~4gӇlz!gەG)NqSߋ8#zt pdLHC P[eZft1m?8C:Tg?CpN)1H0`΂$Д})AJKX@]yehR hc A$Ij74u,J/1&^eU\uXX r(h5,':$<>{oq+H+-}[o_vEDŽD֎z uL_wQ(eXMu Bm(;_v8Qɭpu#])`;f,TfiݶuQ{'iMW`) a9Ty ijv#~+>s&SBϷoi}H/5C?0 ( рI#ֶl?+EuQk ٝ~6#)QNqSqGObCa#/ IDATA(svX)-%N•BP'ݖȅAٽ;c𙺂`O^ҐA`~ aH33c&)hBT' u,;poIe )V_o!?U=5jeQbjϥa2ͯh`uDt&[~`t;HF=+٣i+$ `3h*kaP6(VJU: 0U2n2dH9Mt8Dh`YicHL0SSl[,,tJஷbL>7W.Lmߘ Yg- `#k4ra:|JXTI}>P'kA'dnŮfAvx$APo"A19b3b1ɯkFb!w-=[w3YKt꿲О7KE VK,WKPH{ D.3uWϯ>EocbO7Ȫ㭧М!ial c!D,>z ,b|t,Yǀ@=&#rʕV3%+ 6 /d7:;;wfFJD|n &/evl Z̞S(I]_hO&YʐdL;OM *u QyE/1g4xR*5(gxw1wb!h΄P5#n'̌%{}tWd!mrJ|0Notn֥fr{&yOYڣ ,&3Ok)dy][Ea+^ٌX[@ _PT9#+CK GWr۪}tحҚTxv*sH$CȢJDUq+[ kY3눱^b0 6dDvkl- Rg]!)4Z 歗-W>ڧÍ+;1YiJ~-f)%xbw1#[gg+ fJɄ"d My\3b/I@P D8K7FLR1@@NY ј\v0%p%Yvj8АRB1"P6$Ԣj3h8x2(}0I~,R$=m@:8S^ ZƼ* psuD8vi`ɵncήis FԽvbc=%爤QM4A`0YΡ:"%+Zmzx;W~=Ʊr P/ V{qA".?z3`pv96?w9{q>˯| O> osX.`B#dp}}OᅇQʂ˳%=7;l<~ rm$#Ō HcQXV^z -軈%v }qr][vP~ /?˂6oku~;={p&=)NqS⃎>"1Tݖ'}/ U$@ MC`db kVP*̽lZ)"rd&b -\`ʦ%L V:D@VPVPc@]g k,Z \i=#Ha3*^ J&)ײH0F-HPDo+w$\;^:~_F-ڒ@l.iCve<2TF懨1߷s-/0:{hXvr5gڀdL@GI&ߡ0MÛN(R*UHϧВt~5A:|pe Hۯ܋sa"uN4KNG⑃J!SсCGE^9O4cB J1d (l^^$c?`B֌и 91vLtJxϚ~Zez?NI;,=.?-qZcE0E5P{!DPR DIV /hJeMn0v[ɮ3enݿ=,SWdjav@~wRSXbh8?f"зYqS6aIkTs9q[?sߡ->#@m(!bJ%s(ׄ;2^MQpə_SWEsntYmd$$ réBt~f M6Co$pܐ?y2V 7) Ř3pŌ$a뺈 ry,L x|U3SS_ 0vIQ`HKjd:9ZMPz/ 1mPT@1alۍ7lr vqܛos;G)E*;8v[/HIpuX f5lUWl~)}nc^ < ᕏ=DJ#nj<|axcN2-0^"9)EDJ#dLHBba?`iw#TgP1asCr fFVH"CN  TbG$7*gA9,>sZe|ߴ?h%G-8)Nqw'}PkBBg(@0@f’+JH,  IH몽3%$p1bEXEb 6ih`H eGAU%ي~ 42('0:^)!hB`@n^"zo와t ZU $25Af +U@uJxWlֽ罛 ")Yicjg_3f8w*a1+؝ %uJjꃜ9[?p0!I@$OnDf~r{K7)#]j"IPFS?@XJA6m%G4`q=oX묷5q'ʈ6]5*DG>]!U֢*H $7`4:nMTXgZ e#{㨀 dlϓ'> @I#8#8B3ceQ$kFGc0t9 };p"u`p\U % ՝w[vjaԚ)Iǘ\ KxPrkT-"0#l.ʆg'bJF N\ǗQ$8vv^j/b+1!`k($3Џ2Kk-96Ak/ϪLnηj 9xCBDydL@ )J V6>;Ўp~a͵Og>c} [o~]<")gt1 Cp}}~#d;13b#V}ٲG{tKN<~u!Y(C\ݼEJ2B3 ivuX|S߹8=[GPuPG}S8'DV+YNF L` v@ 6p(e&".E/PƘ]^v>"'E\-] 픒< Đ5_VeV7F#;B1 }@CWJ?x }[2~ջu"WCX2A9x)O2#K `'OX B@S𱖝Mo7/Etcc+Ǭ}[Ug\}"č׸5G1P1H[xI0a2h/c$Ou 207}$SS}k;xxƼk@^>0GKg +mj{}?p}?iW?{j:+EM LbY88,-ZMNb,$ΖHAkntvq}gH>V`# c 1]D{KVPb ,|pv|{x9>q39^\ᗟ^Bsrő 컋4geF4yj->W4͌$XC&aZm̬gHg 5&v)i8Fj ~؁"]%صJeDʴFU  6vh{كXK*7Y:pkK~gn< F- 3Kd1 F;cN .tb!>? /7Ț4AIQmqs%tag@VsEszK/rws|k_A#6 iUc qmoeECS$CD"j8fb'7Ho>rՃWfi*{LS}qNs\5/ oa?i?VV~>)NqS{'}D- RH2VL8@c4W[q#,E{䜜 Dp 0#$\8Z!9v=222ŠA=A%P}BB!:r .!2C\V=U9a. hu ˗xxxpy ,HI2~G>g.wޯa~gو-gd@\y-6^ 9S5Wl*6m56#'fcд}Y\]iykXe *tкm 7sX̍5vZZXb hUWى3}I[PQJ$ -syyZ@@z(H-m6}MZtZߛGH c+8X+ɘ%2cifw$ {Uv!C5Tt\i6oHdq-Ҭ!p5IXKMm:gq^ >\\^\jsJ *yiVK`ZS82#;ɸ^alcbe1F;lvv`RM\wX"bHYD`RFV~5yu{kmٿyiҁClAS74Qit#!`.=c)E&$l10i@" e? X"^J]L@"bƠ1S;t`%ء]2}6&s␵w p,uno5d#`2= 0 H5 (wwޅx UF@@Rs}XTc\>0Nj/K/#Ϟ=jL;Ish^ۼyY?=a@wx-XrpX.m|{1WKlc!`py} `X{\n1RVw5ș=Kvzɶ~s,P'NqS4 |?AMKkT;V@ ȵn(Ңrݣ[02:1$z(@"Ll: IDATpatAVtGG(+/#~ѽt/^0XF eR,/o>W&v. t/A6GddD  b3B<&/M:)Uj*2VݞthB>Tlt~P&xV+%MvW06+f;CEeБߙva08l5Ԅ"WGn(?@5@ݤss.m>PJuNbeUo;F jReRu4ɶ*OgoeTf9M7 <]O4,aN(魷 ͛Ks)u-H8a*oDέW/|Z/3ƫY9(Й`ַaAMG`1$cI t:\wP[ 9P1Ce'y9qMZ !ZEN@vfĮBpq \2̍e\|_3gUX-lXD&Gޙh@ Wg\&,7xt V=kYtjIpM8n[D|dTƑslxGC7=в; [ZǶkOZ.74y4Z?TܲG$olj; m,LT[C*)?bc-=]c}~ElllK LvGt]q0=RȒ ell4LRXƸ"tMIH6APdO˽GU8xVYBsb䒄-.DHn<)%V( bƤW 躈EenL9c J1ZťF8tj̣35) V 9ݘj -1c__aS[ ? ĮGiua@w~A;v?FڍH97[Y3L'JOYl+pa~!0Y^Ca:bݢ oq9v;0d4;o={plrH-kăO7qq _')'QҢ#|/c=VHf[Vd|0['>_Mlpu$gÀx 1n gX/1<|/|O< L=zgW>߀e<feLgB˳,dzUpϏqÑC8)NqS|7qGKbA6R,K$XzPfHdL>u ?uޒ=9ԹqG8&HTf22(%#dBCH2"1(dHPH dMxzaUM a 2ӏ Wx{³ <sXU>paV]p6qf&*)v]_>ÛO|zD=Iv95L|E+d4X<4# 0gWW'dccJ.pD 2Oʆ>y4 %~:1Z*^xB\x'oь96M] ̊ iT(w,4_/ *ľ@F%r&sʫ{OO4ZفEbNE`J``\jZV\shNxsw`ZBHXd͕5O̙FBL̨FGWXT@nTN!=ii`>BYotܔϘ"& |1_)Vg%D*} n| ܿc6x[gXu;=^{ s\_g}ă?{oq}w0k ." uQ]?(J# }7B^ a$j%5% H񂈃 f`gYGf!_3"ht#2#.mB*n0~r}5yQlJ< ^jIq,5,7d"K˶V]5<::u?b,Bd$NJ?FŚ53a\H9alK}I0(9Cb+L #hkA$HGiI1db}co\a2htљŴ'G!u!lAǹ& J! rtKqLHs혇ul2$EʛHjf‘ ;Y B)PbɱɤT!Qg:3(kUp(%@Pp%/p<,CODHju̳ 1g%HI// [Ae{R5^^.&Uʳ鐒i_popT6Xc7E#NX2R $Uγ1KƵHʀ  BhaQJ89tQ 1NF8RX)1b}nl\SsX'Ȓv&>K \-1֢$i4͐9Y.XSvopJ0 CZ C޽zDdy$CDZe9(BǂYUYAh3,L.o_zI[}GJIh\UL$tЎ!ZIvuk<(#& CnHAZU(z{}ҿ6*Ut k*Ƣynw^wؼ:::u@<*UNHKAX cw%ۨjb^*{ɌV"=: YQ+"oIA %K c2{{okM&&S3i#$,0s(hlrS82+#ΧMp Eg<0 !: ެDIpֳ % F!Dl&b$8"&3 XY\7'5꯽fw0(gUQ2YAƼo?b9|`쬽Lkg @'J໭N3.<-H{+zaƯ'_.BpXQʃ05QASC !C2o@ D`2ʱ)8Ho15U%<8'I~;< *9%c2o5oY)u_2yKuX> U1EL竹_#kx_ ҡŘw^h4$tQIF`cgy7~C$IR>@( F;;;,W`gyXv6+,T6ocni9Ipؐ;(W13񌠐vkl<^KvADZ!((S9YV@Ke|\\%؁qrA( S;N@>σKoiVAÊpnW ghc"A/% <{ҺqߦDB-% ')sr_Y3l߮ZL&tPf/è~x=_^J`{K@]JEh{UQ. bcшtmyHhLnw6Ia zsDQD;zJ+fgfX_]Y[|'8{I-F8du.ecu,˱dN8d_k:7dfbvMwǨ6J%hh-h4#FDtp'mڭIh舢(htq33-6V9VA}[^8z> " Ax89,}zG]>:Kb}֪w$rPuPuPê)[xyNBT+K2t^&gJH\`e$q ',& upM)uH+)/I|(w.[H)2hQmlIpjJ_I&)φdD?E#FMa)Lc'?ӧ*oee__W_}UV2w=: AiGz`w~n3g2??s-n,p8&Y^T,&gϢO4~#xCH)KMans}1~t@+R>C"%ᾛ eòڞcj0^N(/ W(W2dXK' ґg4Iu=v_~?/EJMaLv;<g):88K QpQ-LsJb8& l„HV&xv[X"1i"ɓ9txևz|PG؏=:S2p&+ V*Z *aZ$IdIf#kDtRt XEAiff(Mnbe 5[[\pV;51v9&&$ME=V1*sqf#"+rP\6[(Бbfz'4VwH#5>t-,B@JI$cz.fbICr"67ܺMpD'C(T)2w컒fz ml?{AⰰVrPuPuPè(k2#B(L9B+TOh¿:J?bzg&8$.3kȭ7jy0u8WJB[0X6F}m3g,)m=Xl/"!ޤ_,#EA"MO @DR]޾[QsdP\a( ,B #sncle뼽tn[ɓN_d1*Zp7XzA9]%RS+4LMOt`^S嶢6&iw1.tb(Lh7H:Sɉdjeh42Vu*9pZq()!Rgbm W~e1EA:PE5A~a\~˿ooxzyN1a`kBJą V?? /@/rN<8Ggey^zߧ톄\A#Jg9EXbt1s}oePT޳LlسF%L:i23='S=5,+\<6d0WVrw/I2dπ-_X n$yװ<0'oG "똙b{s-vXz]V_gw}_Hg) 0T -eA ׭gP 08Z3=;C>|+/pטb(I,nߍ x'c0ZVo/jhE055Ah )X[ߤ4QQJa2S(%i4v /Xa"Ҵ[m>;]/-q3l*,^{Ntܺ6} IDAT!1<Ѓ?z<}=8q5x]]+ D)Ar޻v -&X_݅I4#;܇dِdCdjj%ijnX`a?9Ri~BIO$aUhKOJz֤ٸduniuPuPuP?:r@89 H8x )|" /RTi(*sx6~oo B)"֊D+bgaһ7X~=nv훷qNc ОkО?@Nføs f:tGZp'ajKV@nb7"HjAz7tsC+|9 NFD:A@w V[[~l;1fQe }9M+ ~7Eh?ڻOcxϲk%$măIZ5c+t7-^ B@!~mPp۳p( &U)8`umF9G,%G:O2ךYeD9UVW%"YygŤE+K/ss:Jd^`cşd5ﳺh4ph"|S9vNn m֍7xҋl6IMLU|-I`8SY.{2`PɊ]M` vCx#|7XrҳPz91*!i'{ ._Sԃ%XW⁓|*'`[%׳L> 2/R"cͧ?SLLLeo'FQI>LjgU .T±RbM<ss/i~?98Cec8ȹ{'[sZi5R2edO %A$:Μ=ùkN ;V3%$JzT({xcOsYΜ9A#Inc+9-& X Ƈ|z'/ 4Ҋ&<8 _%+4JV2H"gaf~'?$UBPd9ywSo.g)2EF-r-JVHPJ$M&g8s9 è( ' N(// ^bh댗DFE,Ɔ0V0%Q`)5XSF#&3/qA>)QZˀ54_ʋ3Ks:sS~Fsny.>t,tӓEA[ƐVP8q'@Z Bb*YC(URp!(`'5L${fK7wz |)fyti dgr<Ș9'Qdid~ kr g2H,C1d{wn7t-aJDթ+t\|"g9×ezU ՒE<JcǏj7pXV׉`n~jILBs‰:gh+z,*{ -N+,mYw$-[+D#/BT=]GќAVM!YXs'}ҫ"cc)p=E65M+!BjZL?QG.P?jĒAv)˄PO*c*R%ԅ!v*>Xu9Zޅb;#H ;>Dڲ4 מg﯌k%UaJu3B9GCJNΞ'o[ ٣|?c{#[BC&?ɩdyΉcN<){@UjͲw}"%4ǎcff<6Ԃ;4 $7*˜] B!fjj*^|/}K8?i/^gMa+C1o} q$I8%67wNcYhwgc!RYloo}2|<"K;9,kA6BYDSS|W~x/"^x晔5Q3?3DQ7y>cLհZ6})$aks-V޿#<}cǏE8vәD8(2OIQI}2EPF"rɏ19;G,W. _+|*sqOYP0kkUK+߶WZ}|e?3~X1S]ӤӓDQD8HɡG`Y^#)%nqL)&&Zl)7yX[ 2X H"'wIgɲ[`8w9tzS4g:d.*ALǴmT$ )#vCFEZ553s4-z;}LvDGJf,3)h4r ɋ%%t`͘^:Ÿ380ZЕ~wg=è* '<%B'I8})<Yp%JY~}{,ȉDˈ"!Ri?bֶx뭫|bG09L xf3'0; nj'M VJ "60D',9:ZQn\a [䫛,ED16YNLD( d`ߟ-vwV= ; 09->pI,)NJn+uI&_n+J^Ip1.QI=X=V='@ZJƶώ폆.ņa> wURk/Vןc1v "դwP[&ee=M p4-މ۠l"v[dd&'59HT i ?!#lH0aWBєNV<\g#3'X}d*o١;tąOr[޳04[( СE~@ |=vVָH哕4MWxGyꓟW^W_I%NX PAYz9E,.r |곟0Nz^z?O{&)&CdQ('duw+o7殺cQh&1V>mZG^Jj6d8Yޡi 7'!Ng-nVR~Qѣm^Dwwnq 9kۛHt&y/ -` eflolrE")tM{ $LH)1FhȭuN# jDMc R9[8)(;4m 6FЌ%q,)\A{9|,FHVJ#_.ρֺ rLjRm]2kn2wʄ&%>::0`xyI* `@_)rsD#")@ZyINRKq4=H |$ L @X{GHE% %F `W cVo]YģUuTQ}cV2_j5h ?($jI.[++ImBۜ;'l^^0r3n]o_SxJ8 7x7X۾FfS(a"υd^/Ao(ԇsF]~[7Y]SoBHy:sWHOI'2sL"Oqy03dse3E9N/PbsE!hG>O0B1әcTJ$,<~? @)ç/0ݘ`8QCnwHᙇ&zWq(l& ,D…Z1;;Çi4|Ӛ-^w_.&BOP& 0M3xWh6<3| _'D)ŷ-΋/299I#DZ{߰O<'w#$sآ n"E',ZX+p{u^W 6c'|zD{Gb[C=s=<`NO_zmG_$MS"378'?I>(x'_E!}nOtܠzf,SEe6r J_dgk$iiM+Nh ar7?)?o*Ԕ ʰ{V  zA.KȲcآFKp?^.\ca]c-{iHbg$Q 54-wY[`antAbwgfl4X8t VQ`8d-vQG4R#GJi l1=.LM`'T2XWhPȘLVDIDČ k Yz 9A0}g0bDLOMrCG:Vv@'I FY>h\eH9VH)BE@~i> QRV`}y@1 ޞ` >:rzQʐ! BZ3E5. *+dLL2PZ ʿWvÙFBz052WX{wa %8'8cq)prJZ0)7#b' %cPBў}`M!!dH yacC9RY{^bV1k]LwHHA5`;a1&d!,f wvh$ QJ&so,:KC(7"7Ac)8̈́vC s.]z FNPEۛ$æБ&4XffxGB gw~wCkY>ZKQlmm1JGMi%))0ZO<98<W_Bh7v?JJ._RzKtNR];FG EkȭEZ# gɭ2k:ZW$ ׌IHG9yn<0@k ?A8z9O~)חn{|?$>q3h ɳ!\Ge掶[>qAADF宲FTU~hh͆ IDATgV1e<뫷ѪGE5Ye}m]FwQJh8 cI 8!OS$$63 XC 9~%,7ng[ )VZDqD)8rib8nD̰3D2!ˆ(陭I+!n4&~]ֻ)59aF萒8.=EVJ"כ}:* ƺ8Kwe|0~;XgAAA(cFbkpx?9_ Y,* 2Yi[ Ԕ#h\^ CKND8)$X8qF?fYEJIQ `+`%[JKj&D@r %΍(yeqCp %GsС*֤dB|V؅1; .s]ڍNV2Dd^Z9Q @˘ó',0Lm:Nbg`v ZjNΟ䱳k \Ի&ZOI:F;HK8IJ͹lLHT#.Ƶu^   pq*WRD&4 dYN#2VWWz/~;\zm>Zk@K)8.%  S S8tx58$>,?8o&̟3qBR䆴P{x$ .xѣ,-K;5EaB脿_>SMQgeyzQ:s"J*zc={LOtFyNƍ:WG:ɫ~ݑ>8La-}Q"4L( zQ1;;~W _eE)ͱGp9^{uJ!DNtVnm#Ч}Zo_ch&P)4cܽH-I&h=p0hpVጣpOOJyƧ 2 {i1JB )s3 FBlmwQJ"b2lnsnZGFqHY{04Zm67k-40(NI05T[-v-T"+r`8 8rFNDZۨR!i&-a5ffQ݅;p1wF,ݼ H͈C3LwHPdO<c R$a컱'ߘ.+W|8RX00j(mMTC ԻS@::as'ؚgRD"~q&S*Ƥ(AqID4B eآYFD#n Z.]Gd#}! $NhA3Ěsr#+QjH+䁹Y&Jk<` D|8HQJ9=sC:'EÍ..Üф8F6)Ιg< j̰"7aJ$4:ÐL2Yǚit`*zņA. I8p='lR gA*'ULT5ykPBǩTm++e5@Y #{83xe9Aʽ(}ʠyQ;ݤ_E0$^!=H&"_ :p -.9{?$|*e`6PY +\u< (^Xٴj5tU1EI86{N2[f4# a !ÓVõ#ӘDIAäkqc:R@[x⁏rz,+X; &ց9WC<|g@$#/n)MKS2UrWyaݑC7*4"8q:'իW{}Ih4P3uQiƴ(xY7{aeko ,& v+c({/lQB@)j4Uӏ޼L/"JP#z|3 kC]WlK/+oK/p4B RDk eQI>9x3K܈]\bvvlllGG<|s;m$_eN<Ν;+26sd?ivߗ$Ki/,Py6i33=:,A8ԧ?ÿ/ouQ4uvk-Ə|l{bvxef$!Q3MɹF`1Wu޹~x*Ȅ|cz WH6J{#zjTU5)P's4;A'TPR*) {YrlbkkX!fH[\0Pa!{K7|aS\@Ak"p<, ݽ!ívwep/dy ָQY×C|L Sރt@ps"0udEGvc yoһ`-U@1mD5a@ \1oA") W_MSDIF$W/ āmK(T97a$d"/$~ T|}#V)Rxh„lO=-&~? x* 9~r~ʰ$U[0pPZ:\w~i]` UP¢d`FJ1>IJ@4=ʕw^4[8Qq$i&Y`Cob&O xS&#iNځHe[eri~7~ .׹{w-JD*$DIE8IeSZdaEzM$fvvYx7Z㌍ Cm͜`valϒ$_,eM\t?_$,/EJMY<΂td˺p#%ϝnQ?<,w峟,ϟٟ}[n|=;Qil]ѕ3Be\`?vO<; [[>яqry^Jf9q O#<ԓ,?p0⹯ٖf 4TYN|6ir.(-`ly3fgJckC]OpYNZ#\SY|u2w<Igs/v$IB$sn <(<TJ IFTpc$ ss]ƘۻC-4BBbwҘf<|!_$i+X[[-:8zoջ[\r'>eo8颶`k{c Ե%)UD܏ZIEI]W oMEE*E1bgv;H%EKA8b{wckNF3飴B*`8f<$Ͼ97:6rcS~ScphLY4 &aJWaaa?W?NM w\iDT9B؄Sg^q$UԃZB$ ]fcjJcÄQl0Uq^ɩsu}7{(;P 'iw!-{̟Cv0,Kv<aW'~_0jLkrMx..d`d 1u u℆T3;ؤݠ޸@"͂>‹*TדH!Z`nLCX!RԘ 3(1r@B5f脮!G c(Saxk丩:$z3sg89TjDJҕ8Ḷvj`5!b5a@ԙ|#Șh;.o}FsҐ@_7~Յ"csGƁGKO"m9l,>I6we0q-]p< 2\C]n ϥDBnwxgYZZkkkcܹcݛV[A*jc^b^?0?˿d<)v%~Μ92_0 Q*0{׊>Zf-JCC(GedNMESQs2+͜ wn2oTHO5X-FN#-,uz1:I?8-AGh*~OS?QS_cv`٤4u ޽&_@22 <"`Z Lqʚ0zEƠY~y⿧,N1CR=9,0Z$2G|SCn_g{p"{OIl@@Gȓ!H"jrY1rU#z08N#U,* EzCr}ܿlç$J;$RᅛW4J͙9F2DKA*3$3K9nPAHN$kpN}O??xF9++%;;H|󤔁Aemk^:BpYIR\K@g ?p?eY|ԩS={Fe 1uUaE8T_ FbWI!fiiG+׮͹c8<>,< ǎC)`0ݘI=N\Wvwp:3sdr 4e&I`wwƍ|scaaazY[[`g\߼T7/ (ld8A,E' ?@܆eqiRU5w7W_|O\]e3&P[5Tds_`G aq64BE+! q!΅L#3|W|*?yϳ-?rooS̮{xb|ӀbS2c*IcRF BbjGKfg,pی뛛:(Ap/Q><ag)â$sF  epTs鈂qɇ[s̚”dR[29鰈<}HA*$*є=lHEC8qrb{bd8HMĹ_ Y2ܹKӣ[gsZ8gCVh_)qR7Ncq27Q;y:B@^<NwacZcD:z%t BJZ:HIcDI膘DO`7 BH5}Dl)_`eσ`}09ؗ,g*gi%]fB%6rxw6n/UYZHiXWl%%N3v>IB$ZA*[}3XiMlLLcӜ,ɰtJ3.@' ²_VgC:LcO4߻*> 5b,M5 IDATb $%d|``m(^sDۤc L$˰IFa9=Z-^hWY>/2/++ܺu^x/| ,,,c"=(gϞaqq k-R 9mR %tZA'†u'OX/pW"AJMKPxҬ=?ݯsif!x׾Ɵ1Yɳx9v,0G6&x:{{}ʲ@A|_Ko&O=$333lmm,UJtH0$J f_5N/0 Ko+Wr^ WVks'"QX#ckKb6/p<0`MP{:6O䩏4>4<0^5Wg_X萸^ \z'A{`MȔ4xZ|P{TJVd<23ŭsmlڡWd6n6~$Y ~γ_k|ﲻ& O2O9u<1FgX NN‰Ĵﳼi>KN0S w'` V0m)FÐhwJp(vvG%ISdY!._掐fnʔQJk}O=4 y*HL4M2 1ԅ\hGiMbvnvq0Q#1V,ː*aP TU#m&[:[Zyn |/6{wc*:3$+l7&J5k40H.lŋ5DL6 y{$`QuXuX] QZD "2i8kAVg%I* 0YRcQw`k HBe!/έ=* ]dYΐ ˰xD~TjB&gģ1J#m<8kq0JS%5Q3p$u4q*&㲢@8;J\]`t,J)>q6'$7`/>ODPw'5RMMyAk4 DN@:1Y| 9YxDܵ>@D -Vh1~hN&-rQGeږmhU!BHf۳?έ+.rr}utq5d\ Y.01Yǣa 7 GY.0 T,̞:I5j %ں#It3,ԦD RRQ RWc nCe1!qyc̐ݷέ5i #]N=ϥw8ͣ7vid@m\Gϲkw֒zbHuUFKAnh\sqBHY~yaOK%dE?dowfi0Pk|qkXRdI&3\xr\4J6PaK`:Gm s(&~cu]3ŋoկ~u$ Ji Mې"=hPpKow"=̷s/.0-!eE=kO.J߳,%pR"-4yq oy|UYǫ—|ϑ*:PlYߌi5?a[ӯ׹nX)FAVX#nc'̲h.IL{1zPkMUY_%M%BI w˚~2qʝ>V 頥RE.ǎQVc$/]lڇ"49Kd5ii~AOCӏuXuX~!c&zB7N:" `^JN}tS 5-%IĹoX.d|_;=EiL Fe-iQ ^7L|\di'[) Zh'E8K ;L]N:i7ZjS iPkGu5!5tio(?'Cj^qغ$ad-Ν٦_I  TЀR4F*tN46b+Lq6NV'UDWH> "dZl7_]ć(lcl͋o!Yٸ 9Vn3Z mÇ~A[_v%YqC<'aH:bDwÇW4iL1aA׀` kg"ᩇ?.-R+d\8!.}LgSsej۟no^ۯYڧx⡏19J3Km}DP(旸^Z9HgRSpw2E5#4Gɔ;=ȠhigmP1fȕo_O2j#h/|w9} DP'-rGCHf1N^Sڒ+W"kK=INy侇y)wQh 04DI)'a L=ݤFj 6RI4#I2 *0sԛF2lCN5bM~I&J=럳A|wh:AśQ JC$E&C1xɵF P"0n~۬ܢ9/l)@/ ff3V$dH@fDXh咳=39r!H%M$@,ê&OrkId>Ug5B,0uK\9, \1ƕ#&L4 ncb@@2HOE$35P[|(V"XJ";%"LA)4wLD#KQN1' fMݲE1U샄a6wX)?m$޲s1;(؟Ov|c'8k#>3C~&vS̶Hq°7z(ϓO}hoa߈&4qtH9<mb\,csnʎ;c} :eg<3¹'\퍫Հǐ"EIrww0,@8{V65UJk6G(escw&cV6CHI:ծbky?E3dc|+ ;W˶< 9X,updg .sDhֵ7?Fs2X-Rk BQ)kB$5x1<ϹpyF1eY\PT'y$X鶴AQjnbuuyFfᩱ(@mC};mc1(ᙺαp|.?,n!P2d{{(('<ρD|:$1jj} GxK/}S?jXk"ho rL +~??!њThXc5d$Z hA<0I0JQy`PmPy!D˜ [נH5exO['^:BiRpjGm=<|AY}|PolSiPy]B/m期zHN4FEX^Zpޒ)ZI : :I)fksgU'c +++$I,˘$konn"ի:-6.]5!4q~1gs10dα(4H6@iwg)wVԦjJ *Y[ߠ,I#R^42zz:Ȳ ByT*4{SD??L<xXuXuXQ QQdw:d 2H\Oga` }3g-^ D(IY|WY]FFFd\X Gr| ; )NN"(T)dKa6moSr֍!sIi!<$2,JiJ$Xc(|kT$^;S,qe E+Fb, \YoCBJWAnߟ B> F(=O,L+wf̕;/s8jp}OP ~"n5XZ96SvNcBD H7y[8_qWn|}n_futQ*cq$Oٿ\" j$ds(-9( J(WhD#0Yfcw5$J(y71P25r;}O|_rۢ2^kHwq.&zA3y%$N4ꒇ{|~3,$IOLLhVV:; f#q/q)8u,_#{$Iţ"O[,IxNAkCpAqM{ss!t2qImrx9-xc^ A.zfFaA}_O@C1;6~_xϘD3EIU!UVll'm[ Mdcs9k9L􇋭Y0LoKkMePkrM_4.#|Ie^EAU]9"LgSnݾW_жӳS~~;sy~ɏ_1I4tT4uͺ_~Md٭躎zͣGuGGG}f=/r6Œ|;M^s?l[5uo`KOޡf6cO amQW/7'駟q\Z͛0Mu>mTrAiL!!6>(=O),%Yz3~];ֶmm_ 7Oy$:򒲚"dه!x[ *91&TdϡO/8} `&t]UHR_=z[y7￁͹;YZ{E74T05Xi]w'=5,^7b&mcn4hj"Q sv YOUgm;APŠg-k7|kC`DdRdc+Ĉ s4ΰ9[L5tN56K΂'*K}szI$B:P)*rl I`?K{ʩC] * %T~.IAF#ځ%=ZTLp%8Y=#~7nͬE&OV?7,ڗ=o`|".lX?>ƹu='HA?;wN0zQe^r|?KG ԒN `tp({sʳXцQ,8Q) TR{3';N7nj7_ ;>~;̧%|*ޯ1’-C__?{t:%xmڜaC#> D"<-uBJ%VE/ >$o..do|cI=>$mxU8 C3 Z4URWSI2VF#BQ=+Rʘ$eB{#Z'O4w(XOLΣuJQ&sp"{s()é}%va^:BFC^$%I,P+Ŏ1T!5:x ֘I}Pyo1kK-J w-r3B 8"QVQt;LJU\)SyPB|ކH=/J Cfg)7t,T#o񧤧^a%_@5]؝ޗMԧu Yl {{ ~m...Ѷ-v>:|ry9i)'';oj:g}?{Y޾b^eUUQ5ֶl%R *nu8??{TUM4]@g-JsvIc_t,Q\ICDΗK(*@w'l"$LZ4(0FZ#Ii.GI;D:vb`j=,r1oV#&U4KXYzs9[, ]ux%%snb`,;WRI &xB-;ĺBɜ#N xmBJyE҂?MWEs&5pYrs1iUb!JMTI~?'W~# }Y\$8-FGr"Bm%656<{F7gW13m%v5޵ݿs}nޢ{Ηg<9ly~FO h9Ϗ?7Tj l.8Xi_\}>#:.t-_C.7ذP)h3? /O#QXs.ωұ쎹_ƅ5r(zh]i˧<2H<}1/ϱM{"JZDHK:bc@|){M\Y9x:ּ<>FDhk~L{%1*$c*Ju`߿ϳgxwX.광pRW5ZkɄoC65ggx-K9_e9v-9˗XX-t]ǭ7N6 Ơtϟ?Z[W$'+:Ym>7fTi}WyӥK el,J බmmu&%)2ASD+fJ*>cD|]FE|~FM MtfLXQ'0M0Г:z& VhCZ[0v|Vlca%W![`O6$Yq4{]XG>y: %vH9yX䶡_&VSF2?ou.OP*jd>nfo`k=JB qXhEٳz{w?e93'=34.]^vu z0 @]Ƀg~$*ʕ/$ ~-O/ys2K$r* Hq hlc$$-Yˡm4 l<{YyZa}nAL az=K?V{:ZPO; m/9J'n!Xb`9_B,ǯ~«c#bGځù~%`X pHmymO)!(H. *ZEO<:~ht_4]Òɿʹ:$_:$1bb.@qׄ(qXz5a6rtt~)=ȐGeL| )vH%]׬bڶM `K,OA:9r؊|+Nd ,kvf3jrjTc ؜ ,1Se*+A7*nIA$]KBel^tD؃@4R S(l5= W>cgm!F T P*b"΃CfP MiR%$!9LhHt٪…?ETbP6wepNW$1C2῰z5I4yЃyñGI\ Y68g30v3*sgW|o[:9Cg\^\rxr >X,p9$&%Ogs:;"ɔlͦj6L&6p~~΃w^ώLm?viphptt_+VK vNgfsKm7t5;x łr%Ν;T$93Ʉ}Zc|ddutW@a1XBh߇= ׏5n[Ommk[/ 7)J 4$GRZ8hW  Y(QB?]U*~=} JMGݸA|M#T!F*Me(*a SFPFU'~V1k[cO " ]NO TJ*+l>K"$^`/N[xPqaĊMB" WadD#w:P+B'8 h ld­K|1viĐI>t̍~vak=okѧV}3%FEW sU**|LAT L ^H@'EfiUaJ2$WMuUսTFfKp$+ ͲفB"̟%YB"G+pJXrP=ıHb fI $ʂ d9|!V9%ҎX^F%> mt(>ј ,OL6vȌY*E{u9uQx\$cwXl/Q!T!z``8j˯ߌ?Kq% c`BŠ,~ܽ{<{ m ;;=uJ?}F'M(EU0=򴆺2ʞXF˹4ME 2 }X FL2[15(v}A]*+CJ"}}TK 9~=xé0_O"u@iT(P ֙w[G1B*.3' цFg UY;*Y ) X90f䥙UD &y8&4N`QUo.$:'&OJ:;8RpyqF{c]{ܻ AZ~p-x3rE$nZ>xvvJALeswx1"B]y]45I$W.ɨ]1LVTFSCYs=|>~)vMr?ɗcm]ryqj7y뭷1uW'<~FTDQJVʜw60<Օ6u=$f y./1{p$-yNo(lk[ֶ/U[TTf6As-gD+1iTWTu6`hzGp,αXu(k wyBw h?GE)7C!-5 ƿN4@|`=7FiXˍ.g9f|%98A`@K r)=6ti7Aʔ:GK_L[0od wՈ1(*td,*QeyK2 n`#]ڕ5{zd\9j q/+2bD?XBe$jU= oNJ,rQ2R+I؍bPb=w. ( 81HN`l?z Ϝ*IVx|}atJ[rA"ZV٫,HH 沙P%ĢM+#qrHj:Oׁ$3;m1?R`F+mXT!q-T/뛽d#TO~8fkJ +֢s!&!g`Đ#ie>Kޕv9$I#Pec 6~Sg ` † 36&D|bH Q/7tk!3}3""sY6DL0"jG!$f4)K^c.ȘUՃ6 bi}Wc_[~KHӟ6V~"mmDZcE+ Nh_o{O5Vk=~t67jBI>}{zm[Rs6o{Ri';X.خ/>c\d/ؙ͆z]45g5/+Dq!`ۖG@px/:yjMu#FM!e_[N\JKr :<\ t+ ֶmk ~D2C9ߋMbizxZԆi#L@Z,[oق& &{3ddZfIdgp.j}2kJC&Tn%Ԛy{FsCokw+Ş (q1q^ѣPH2:y(iv;;}Ξ˔=b~|a­ˬQޘ)%#̌ Ę$8p-DVfҊ68:1LYM&)$CΥŰ(_ I**NK *b =z %=E V^DXWщ_ 0z~aJ1{ +Z]iLRyL.,ԁ'JJfRɛq8|hSzO,;qi)4r EZ-%H$>_-@ IDATc$ܶ"{& 7gp#DK1@0bDRSUƏi<,X t1N>Z]B-RHts0 pTU)b^'?ną4F8<^]- Jg }IN|}R^㚏+̯~N!$G̀u)aU%Ze*1(cؖ9:kݡǏCOq%/_7`oo|gϏ44_\\r||uSp~yd:i.X,JaHc|(ilk^zɤ}IUm7|PSJSW|O9;;;wb)7!F^c&piR k-mڎ;wn‹ł vwvxh& q1gJqt|z i*W|O}I,JkM%0f^gώ$|N ëmenk[ֶ~IYb8(t&PGJRjS٤a6Q?s˔h&UyTS`wh~c4QzXRW {Q1aWaد[:V|\y-dž*L:Zf @v&Y>}Yc&Y.&:{%ILJ"D<(`YD׽"F!Ęnkl.opRU ^m&@4GIYB&!^]ld|M_ݙY@Y90`H3t~69rmq(]PV!W練/%$$6FQ+ƘqrKrl?{"IEҫj`E.M>tcG|@t tG̓|Q"M;]N`fyҲڼ~`:Zc^yyCj?|bE1`i1d0y X"HY5FU'@XE1sHH鿕vLL~q.΀aBɒ4 įJPJ2p6* yL3RR)d D5IURmL2h2}kJ dV|𙕛۟ _LɿV}X%W|,|漠'SĀ et{PѠ1)[<:z J&fA2KȠ F姗,_1<^k&jMSWL:I$p.p.uNP5ycic;w=C,fja| H =Ac@/-`}6L "X%)CDeV_j!( FY_LfvPȤB]>pDT#.}mQQB~AL!a}}wJ؇LJҵ~誏\!<:4b9Dg^?9fh3|n1Z[vwq]jn{.7l'Gc`rM~?]6%;ڮE S7,W+ q٧|Œf>Mm |i*vQ* h@kzJ`zdR#Z!D,;飇nCc4i!2ߙq-T]3I,g ޱ]K]<#{{YUyg$*cv cu!6RX i$=Ku7X7lֶ_^mAoPCa6AWb^ =>M%:GpF f)''+\ęAnPs٩&L8pbJ#Q,}VBc";ЊUǔI1v> x3f8Y58/_8~jWTeU ^JU& <9KI<4"U^(TBAT QAHVD ήh7jѓph դNx| XN#y%Z}Z4b̋d͖+xe;Yl82[OS}2\ $`1Bq8˟1G. &W~7|W81F3y} %Ch9Ѓcq8N#0SYIa^AuG Ȅ]r6W%ϟX1k\,'_F"!*%嶃)AvD/`_RD!zj#T:}0d救ܱXZUXK˨UJ^.*I J[wdt!/eIw@ Sn\oyFWUT S$N$ ?1dm 4%lzmOď%SgifAMYDq TMESW}SYjb o2I)%XڦL)g@2.Kڝw1FW[Ƞ'\u*IQ O;9 9 V5~7*a6q5!IgG#xJ^ m6$>'x&RR>Hd!$^=#53u[bojh aH)Uݠ!w?w}Jejڶr%1ɣ|ytg/3ߙn-NtH&P5XfXZmhjZv=1tmG$YIijV"064̈́d1g[\,W &RQUUw.mҴmͣCvvvg\rvvwEݻ_pqqt:T {GNC1x9?97xa.+ꎥ8r5 xֶmڂߠbtiwTL%ɐ=JBW1u%?C>>ŵ;GyDs@[SWh+im.M<𭹡Ui&bf"% .'aF"yO鸒NJh)Q(8Zw,- !1;Qʠbt:F3/ cP@CJB+vؗJHfIY.WMQUM{YLڢ=!fVwi!<ټi^)8 Zq̒ pi}![HG<"+`+>g u*mQH)NF%hJ#C:JR뱓|G Yݑ7, SFKSI0@sĿ\ +fRWk 1goIY6/9ƅrz9Or'1ecLݣ+ (;_> >K)CdL׹RbPKfsQ_`L>lNjTpʘktuF~|}P)5u{ꕱ#ƘB*a8co8҉b LmU,.AY!&JL$f6p< e#F =6YrNҵ_qS2bp}Bx<~h,8;0_g:޷$&p,y*|ŧuf&ʋΧ4 ]gY^{Q">l>9>>~o._'1> 8>>ƺkƍ=69gg1͘MV `BZ@c\{jB$۰6}@W 1TU].  *-JS J;XxQIf29׃OzJg(sݙ#1X.8`\OUXgC} 7~f:ˡPpq~٫WsZD^!f8|ihoJAkTmmk[ֶk ~ KA #>IdQy|Oyxu vz 2mhjáDn6uldF.Vo w& n5vL`Pv6-Dlp"هH .JZCjMp!y !!&;'Zrqb:BKzXt--9sD %& c1tI gW\̓JCt?|9#LBĢ4L1@舾K.T -Vk7ٹ&MZS+I*L&I|]Wpחξ}=W<%KKDπ)2aJh C`kgc=OiLjW^pX< {6o $!dd.,セnAI%&`sOuȔ}Έ"boW1]stcFD(ѽW#= 7j]}y^= 3r85hzc9X dpo^}%$;]+itd|&`9rG{دJkDdWCtHS"&N+:g`2%f@[U 'bՅV<CaBʵIίE)f G!yE!4ՐYōHoFB$'pѨ$3i Ի iB\ @t | PWXAlX`ʳA~Zs"Esn K[A!3#%'Rv#h&:GC4#{JN7:1A}3 `7)O+ 8ls]^IY1ˆO,Gb&ы_K5/|kV?2!L$&_U>)zLʈbgg^3O]n0FlLYĻ\p-nY1ٟsp||t:%޲^i&S6s˔r`%mgD[7#nmTMg':ϭt>vp5(d r\ :Bp4~qa[ֶ_VmAoR煱^o%GrB@+D15T5>{Pu"Oy3N^,.yC;3F wvY8ON|5;6r5{;pb)+ vL:ɾߓ$J!dYoHf>l!t15kkAxGf8x.ۈ4;ܺ6 yIX 5YLס UblDk>1wD]GkNGh`Ra2?)%ڜHWTR86@]I&1k3 $n:{y<_1W<,*$jz@k RU T*R J́WDᨲ\ Xr#`p %o+OII)Ǖ;t,Q1DHl$_'Q-  X11QiF?`J1H2`=@b_b18W=){ |ob* 2o/6+)JA"ZMa{{1/zAJo HY{M7)YXvB1 aWĚV䀏nϬBUJlɲIޏHޫa4:o }ܟ=t!dx<'_ew,팉&ѳ;@@׮'x!J652IjsRraQob7Jq={h .@Zރ}G7^eBfG4B +Qt]ĆJ26]&fIg!d& (A55TGHYOQ.F|T'ӕ%_7v)ApA\^w]|89$bs@+F<{D)L[X.]L nݹū_%my o=s,t*sh]L'TGxj1$ W45{r))w6ru Xz vO3idob>\mTj0Fae6uc\B`ް c,7od2rxxCK cx✥]9~J f;,VhXzhs|=f_; ,Ks_OcJ7 ʘc؂ֶ_jmAoR!т$IK}ap*z ̔& z:jj/xAOonΙQ;{y~C,9aO)BP|0=ৗD.=Zg:^9TN@,kF)tJ"AK^M!;l%,e#¢l.׸^-lVڕ] %ł\ ٬CG[먢c* *$vWU f F$>qsutZ#{8,o`vRQFXR^dT9*-0eyr]4>^׳ L:d_:FDi)#`oX@d׍\\whDž?;_tNZ?Z X8f:d,FR{_4'pȋɍ;˿IVG6%A#@Ow\4vĜ+`RGEVURwO.˘X|YRF,ۍ3J&bSQ0L U`cY\J 8@=S4L启fd,z(U]v"ʆF VpC /QBaat }N^vC\OL?`8[i Xb{0]wG-Sةgwol?G:RETHv=^1{z_؂31%TbXi$fZkTPXpVJ :{ʪWu.EL4B7% Xa1Cr"zE:GJt{wnג\d_2%^KNymr$%AicߧO{{:۬Nkv:.?Ƚ/޻q999a>R̸s&gg8*^|ŷ' *1AӶ-;;SvwwX,6E+/%0\c\ӳiZCA2C`2Zu]cSx(!@l5g,Kv8QU": fO~zvY-yp h&Snes1>Ό*^=7C̞Kg ϟbbwzF<]^7+d6kz]-X\bтc MdO+' fRF3Wd0cDBP %".x6ej:g:X9aY6ֳv!%JޥB%@ (B&=Uv MAxQ]:Ǧ\W?U_"~+G !33+ic!tB`Zi:Gb0 ~yx2'=ؠ"#pMd,o }J*uTh(E)p!8DJ*/NW(̖S/15#]-\[F)ҠQSCG].38~ $ξ>OI؃w*2h'9|3[NF=]=KQ%01`zɫJ ؄|?8HqZd%;fu%) 9O9BsU7 T=EU/M{,F4E,*JC>!eXXTp}BJF$?O$izUDΒGϊ;8Yf$P3bΊiY]2eQ5%=5>)BF`6Yrĵ hRSHh}:oq͛_тɺ%ݓRὧh: sUk09mH5р ld̗FgXyٌ"/8pR8ѣ=}Aϟ1sX˅QY!5P0K(m 間h)\d&v+֢``0 %FE6S-zCLʚqLsPW՚=Y>bx!^<}GEWZ'-SHE PvLwmmm-m*4Ǘ@L;Hd , Q$d@elQn~U 303;(0#r3ˣ)w Ks=%m@3A@( ''s`ڷ~-LgAu=m' '[Q(LJ?s<{UTSKh'{+waVҡIK S;'3DOlJxp\a,\ ].7tb-owO{ 20Z&u6&ڝxױo0 Hb3);@9Sc)b*F]#۩hAu R!ZIJmAPIJ(eI !˱o/>H`M˦?w;>[+T%Epnz 4&6նb,G{OC*9;?7x>el~ͦ]S"uG+J 4)TB&u#V:]j1Tbr} `.LRa! bZQzjr6ɥE > \ 7EV<+ȔDd"W& []t!4%1 ޿~1pſa_2 [O Җ] k-F#|ܿhSNޜP9|3f=t0(%yG{!Ȳ]4\\Pl[)xш^B@;d2+0NcB32 :\]בAFghm`vf*  FEz\Esd+ lJ-{hy5Fk` v`Pp}ƣ_?S  D_Rk-vciQt[ pH w޶%ד|sq1(w3v\ķrۺۺ.piPA9v;[/)>\H)1ZmoMQ rΘt0'#!zIHIFqXG*1%ធ| ;3X穭E( j>&BcT8Ϧv^\+'pZ |E X$@&%24HCm8d< x0pw2`0`>d6-ȕJ3eZ-!h6PmL++GA گ%SZEYiP[IReJߞVBuӰZXgmp7*=t?)ݿ,V?&c6BJL(kzXШL fwLkA^@$y2oFDe$% Xh# Rc> cs`L(Н̸\,mgPBrpH nM&2z {4!I"DV(/={b~hOȡ i[1I }6!%}'Д$ >t,}b_b Mɞ]Gچ, |5Sa4 ׯ }{E0ГlA)AdaG!"l!G?}A*S|\.lmD#G:.5YZ4"!2S %Zh| &n-$^=}`ܔkEֿ&(cm"-]pvSruqdx||ǸSӟ_?9ٟ(I4hP2BJJOś^ZۺihR@Hу12ս׃uS#`ĦS=Aj{OhbKP$G2(=.%D܏6Jwh#A D1Gf!+Z' "يh"IND#?9p$u_ozclR8S/ٵƌVJLQž,c\]&s./xGqy<?ᗟt҆brf[5نAQX\g{;obF+yɌb:4 gCSΦC)nX=A(.y9i<& .|h%D z]xo1Mp4zCoq}prD$M9"糟 )$oN)T)^(4~wiCRBu7t$t?p$Mnmux[u[u[O݂ߦ: !$;l i=ˑ2 3 fzr=>!S :qN݈@GRdR``@a-b(AD|4OR,<66tZHlx8@ %篟#jz uqr([]LEh NdR120=g 2<׸-%e|vMQJHm ,ybzeS?F!%dB4 UW&5Β`2' 0si WW )r[vh %ce ˊMJdo-p8Ch}ԐV+L d^-{``݋tԸ{uoP"t(IbwuwdI)Q2NsւoO󳊍'95˚,d:2(؄-Ӭlմ;Il>^cD=1Ehc&5D:V$jk {Pc+%Mhm$$l\{qoeb&Nk$['J/oW0yƤ_ǵ'/|a0sVx0'sq~Wi|CmYe<#;q (ˊ.Zn.K y>D2ǔc`c01( |8 ΅G9=;'='o`|)[N/Nx?x9>EQPV߼Ak>;v|[p. `aF Lmmw] (т^ɏM#xbDcJl%@))$Ha] &';,0?fdƧ{?3eH+LEzhx+@+r!jE$Y6&\.61B"( mQ_^ 6 t }$O}Ҧ;li>Cw Oiq;:o'ԫҖfq{w|pʣ{Pfsr>ك?DȌb˳4!̓ @%/@E+O`OC;vߠq,!)9]p8dY@6Ԣ#eK>Qu#l"((UL'4*VlYl$FUmzm~xF l@7HЎyzFGYID\Z{=r1';&6=ơ!%FkTuIg1!WX]e82xGwJ q}.|]wU]} Ŷx@IAHrS/-Զ3RKA ojk*9 EXQBZ L`a4 C9U]\`d4!d)in,B)sMY\oPJQW>xׯ0N)'_c t+NOnzh.d4F/2d|pF7'M 7K.O/y + 91:2)FݔImXU%wT4k@͟NjcӋEc #(CPXPnW\{w"ǧE)I^\-P(/LDz6aFm ?91*?l\9'WSĹMa2R19<<◿%9AS5y(GFihrK-#UkIhN^ԼysBUՀ`d0(ȳoO&KyчsP{Srl:G?wy9ԌCW%˫(9ӽ$ݦ@>6 ]%2yueJC\%0F׎ Sۺۺ{Z (D/!لu6Hc!D9u\@P ,Rq:fmpM 2O6 "5HGmv>ieCB'n˧Eg3RfcψsyGc+JېӂzW_{>C"QYKTa26%^>?"u[l@qyBKC=6IN-*cVtt,00N_1X_wx1'oOY\]!Sʪjt:ep}BJF r%{s~'gS٘_V5B-̽9Xj>,CJ/>=;gS68kZa(ڲ '1MZk ,˹bXnd,J)NgHXm -21dDSWܻWve!|#V+הx5]oH}m7n}u1wۺۺ[[Tdiwd~I!d@A60䣜`$!+EXf xo$y :0L ZRY((b&,6=2Fo^)&A6Q+D]*e2; Jiv 1dyF12#GSUY6?’ckњXpY? fc齇 &Sʷ\<{{:FCL>x _<{ʺ Wk0NvG#R AdCG?su(zHQ!$B&Z!RRqODwލ?~H $@Dlm:907{; /x,mxH$do$qM7J!brbTERil>[jy?yctyZlh+"2%Z-Qg/3~TR89zS@@,*d9˫y~[(EDa}'!tkHu($P o (Df_t5V0\HY} smDȢm2p׼ Am7@v%;v+`quӵv2tRv*FP۝{}Gtb(}w =Ӓ+qwy`ľ;dɤE6%9k˯>шbICB6~Bٮrg\._GIx(AT"K"]w)Ejd) !l~.wb]磏?믟ݖV>eZQ&j$v|oNYn1Z1 X,cٳg7nYS [̦3i=" "98u.i_Eff6Pd!xR[bD*t655Sgs%d,.0z?ud0_?9!JB@)w ̈́8RJuOj#nn붾U.v>ASGBjhq +!P ic.1ش( "YbEF{!q>`}n1- \)(0l*c$hMs:J3srNoƥ wMiŰ(dE`=Wl+݇?~ƣ!G既ebO~1'f#\.qyrQ6xfg] g$Q"%OKf<}وFC̘̏GSd-:31OyKݖӴ` -+fo}6L-DZjSs)fP7;alqo쁛oYnn즙j}epd! 5ZXZj۰%{Cr͝iJ6W &LjkN_?k!%6F $Lg<&ii-h,C6.cIFDwQ%FI "W(a6s!ޡ 8Xp5tG))>9F6 BCuм|h#AjM`b*6z'6ґgv &AkxsrozJpvyj[UUǐ=d:#ĖpqqR( #:' E1NN4bns[7() ӂ74M=ͨ=ł<ϙfdFX= M5ܰVM9,ӏ _q(x75utHUVuEX28<:]Xّ9)6>Zv#-30w%R~L,mmm}Wu ~$ X|вF(PF9j8 ì|bSR51§t{P!b \9W/ ӚR .zz vLC2% ܐ3|]x ٟ<яX\\G=Ƭ< {MEFY~9bQ;R1YK%Go>G!yLuB!d C*F>$vsޅpj'mm^ qJϥX!MzYB 7YdS0kYՂIo4&٥'a++nDe%o߾B_n[~9w6x_s^ ="|'҃{[Ih~,$)#GP)?4_|}#l& [ԞG,K$d]OӁh2=BDt>}$vGB⼍w;>io\4E,4a0QI.[/{B@$r(H([a%/'Ip6&ЎZzd,֚dxUE6lcN v\^_p!Mm= di.oH5Nv!zhxpTPQڱ?.?ؔ4b+,;y_e:^]^1 :ll6HƱZ-N :M䣏P\_Wf~AYn9`v {T%fͶrvqٴ>=~T > d q I H9^HHY0JFJs5IIwF E!#sTNjx]Pщ=V/*F#5y+yMݙC}XN׽o^}_mg6^SfwLbt`,ܟC֥ق/ɏBpX%Mab[5,|P PdlE򌪖TeɶiEl^]&+vH%hm&gi]|(L0x/FY(@Ro4qFtAnrP[,%*`>sP[DpH#QZAXB GHȆ9Y⅋hR $o.-hi %ot ']1+@8?2P Ic=: Peg3SޜR7ـچ'yIU*Kr.pvvh0a8Xk۔=+G|Ղ!r(3EUI=f2,Zn@Y(R\bǂs4=p[ nn붾˺M%x$N.ȑ!b4gA{ރO$2@U)fҭy-q|nZrX.K., AƤdFq8QŚUU Tc $\]./ ]Ӕbud%1[aٰ f4 ,3f(XRⴢPIV5[߼$s 9;HDj}\Dž1Z2d`!mv~2`4%vZ {N|+Zv`';oNcV}z+:_sDbe` b8AIdX$? ]Rt!رU܎T$x. x)_6xuNH|!(!S8JOI;pVyT)6X/2tzE.54 Dmx&.)?\W?Cbɿ^ dhdwAE.Z+[1: lGv Iݴ᪩kl3*LmXƿvK8|wenJ7逆_d[Xf)^Rf>cw3dR=!bNS."3&QGtzzI.ECMѷLA5Z"xuhY@W#GbR@$AUc%I\\U>6mrpl1TJ" .Rx.&V ֮_uC{JL95W+i-PݱCxY&N.W`sn 9;=e $ҭlX,ܿwzo樂p14z@) )n拷裏8991%;!M/1P#w.y_~'||PIpvvO~^},MXXci \8Ӱ9/ MR2068gIR0Z )u!qEN bAYϲaX2҂ξd1jK{SA'IdcjMS7=%F鵔ܽ%ZEd2!V:όbv OWo 뺮MkWU5oWr(3$Er0f^⭝o΁R6Zg'MCq l4R%ɴ$UZdۦ ,2iF?tA:_rQ5,rdw.PyշwmT0dPwr}܃/qgȥ$}! B"M$vU8! i˄+ҷ (4!$c=u>JJ:#S=d@c)4q1Akq!$HYU#Z"؂~d!A-B n2Z1jȃ IDAT4uYd-'B}[eAV2Y)f8.9uJȀnvZJu-(  57F)֖G^ܮ8KR, s\Bp UG{\g%:Y ըVyv$2y(%BJ9Hpb&(p,ϣ9/$;|4ΰ 9dzqg)*+liЭsCC']!l(> {Ag킋w1SFqVxQ8d́T2-PavPʒ1GÌ|%tu.6_-ϫZFJCh !El0Bs m 9/ݿ?Yy%e4  @k5ۣME%2;6ꊗ_|OÏx;Նx(HH (G ɼF؄Ys^c{g:[pq~1R2jtB:ՁA|1{GG$T "#8s<.F֡G5)y<!~[D 28@Z _[= s`uO_˄](VJι2Eޗsx4섋 v9;`,i%ir0[V8ې 1Mc9==%+2BuZ$mG{9[߿+ys ,E+Qbβ\"њ(ol1%Xt+q:*Is,ewwc4Mx 89ǓSe.ᐭ nt~c)iHS!JJx >a P ZI(r&f6c{{<~EQplθ kl}_ϕ7n܄V*Et?#+l뺮뺮u y)Ok"akvoxgܣoo% wop-NVD42@BwX暑@YOjdJJ P7)c#g2U ~FQ, M oeP̍cfc3`PQ%I"倍^yMG?cƃ~(Z$D+>JרGm"]CɄH@$$Z!E@KF g M2/8_̌ef=A"Mim!SA8h=L)NۚËֻ'.t\ӱQV(=CalLWL&F{VB#8J% 2$#ȡ]dvQHt4.Q.2 P$_Wێ':m{e+a^3sL D)n*C '$RTnFP/ TB6ʐh$+vTЪH@1#]\^ CȦ\(] … gE#ĆP Q4W|]\;jv3}G{ J~'WRdA!SI42`9=C*R^ш\ ᣗa  J澓pMuc :`gjA-T5JRJ{Qw%㟾|U ϯ_,&W=ʸepJP R &OϹ0h>DI8",<=:>&Hsx}ȍ!7wy[x狆'gsǟ'LfK.JC%M]AwiT mӁW=aD١l J"MaU5$D:RD9 c}c$XSMw$RE٣&. qGj1]R⊈hx}@ޣcv:8z(~{{X똜QO'LS=%@]UEbA4H)TU9Zck,E R3, O9wnfvyt%GGG{43A霍-^8:Ky^P5.V NS~|cB0/+i?4\py9%-Fyf ۻ;\NgRV5Y| MT,!)p؆,p֒9G4s`Dgꢄ$Ȁ5n5>VWps\T ~Q^K뺮뺮oA_b;&) ~d{vǼ~sx ^=Xڜ(XZIdCzx +@Xɔ W^IRx'<Գ]%=gYɥpq,-FrZ{ZTO4\ TP[?"MZF9XMtV!x1M(Eq9j"<4EiA Its )IG ԚH$vYe ( 2kI0q/eKNREBUS Q,¶>.ol%Ys"j%WthOdamIՊMUЉno${T$kN*Dՠ3J}䉤CL6-ʻ'")XDvpl^2GR(Ićibu XT]\Ds Gm Yza]%Sw.&~!V=[&){f ͢x!onIy񄦪lmﲵGY.֜6!efz-Ոuhbn_'\-rϾCJ|#CVKNl|=3 I5Ix0-};g;Z'Tka]_UZp+$\TE/KiZr"Csi59LRdW9bE"9/݋/~~9ٰ"&hK :,MEukj3;dq>א}=#=A*q+!Jn]3@Hq$TL8kI`\)̦ۛsln0|dfiN ,K!XK@&cLd4G6Q"AguCS8</6 T~`6rr/<\%EG%Fg;̨ hѪ'?鐿TuWH>(,Fmd`} -EJB#h-{oJ&?r]];gTae}mӚ UM|pWlmh2[D9ؐPLkWWeʀRBVB 8rOj\P 7_^%??crFoWL?awd&$9P!BT,7hٍ R|ƜlAJ/.Z*הk2n\2 A ]­U#%9nR[HjhڻMĕ xe}LA~WWs+ \>)AxrL˒}^y~Q0=} DH^rks伾`3a0.Et4`C2ާ̛Ly|KΦ OJB>UYG\{0$T<#Oua}XQIQ[C .ƊcX[2Vޢ#-Q.2Pckl]bd*>2MظV262jZxI z&~j<Ϋa?ϾoڅWW^{rEF7xÏ%H36F#"ӲBJX%{2cc<\.1 <ϱbMˤ "/RQ׆UYU!I3N)x%#x,f3?G={ヌ1bNs~Γ'9c8S~HY-)5c wcokY}9R fs^u6!%Th4@d{{裏i 7n } $aNkc`0S5ZByd6A$6)λ'`vP֒W V^+p 1'obu]u]uW PUv~Ċr<$OȬƻ'&]24rvb#@Lʵ$Y x`@39P IBoA62 ,+L A'T)63xKEXȊKD(IFZd }Rt)bWc-Rjubz_~Ɛ6J(3ላs92J- (MP `8fcaT)rFGi_ԁHgq>5BP:]sխF5F ";nH H?ߌR"PD9)~XAIv (5f ED-qP OL@ZAAeص(]s:E&2a&G&ab Hリ1̡H'xgNNw;+ƋHf cs|db O,.`,L]~TNɽ?'5;{? '!jҴFadZD/EOX 垭$Q-BȦE(Sɧrܠ=dJGMyi[>L٢ A!&=Mz;do[TP$LE6B jZ {(Ӡ4x( #dU7Axq0} Ǡ 9ˬ6֜ V[k J{_{AvjDC".xl< b@R*:=8Oj~#^=:pwaq>a$:`[bf,&'T` ҼV}4G 5I!Uols者jK]4AB:tjZ+k}cA \@G &n'(GPSB# B">A,/Sqle&ཀ o 4^:`hhZXsk@]`Xףauow$IQmpb`:q,>i8֍Գ9-kH=ΦS6Øp,~}S"<(z11Q%4&0(i0Ɛ&)$YΝWn38>f:>V$co}52yG?dQ u]xM?`>aoȧB~%vwSMm=w=bJo4brqhW擏>Ň)8¸}!HyMMQ{vFUyvw c(QFH*/KwI$\_\rt&N82Z(YmO$c9glk/ƾu "X<ű5Ep-Y@Vq{]u]u]5+TXIw7zĠ}4Nhp>Z4<&ѿ+zߙOGV`dz|L@$J sSB}#N'_~I=(J5{7npo0dQ]{:t"#MrV֓(Ae Gi/ U)(u%!O$Yrk%R+yiXxAH4^T1i5(tp S x2dX%?6$HR⃋Hls[#qZJL+#i߲ZB{Ei4`d]M[pb%ۈpB@n-گfk? mJ\,Q.\ƌy3'dr8[+ۼƫ66p>>Gܺ˷oч؈x ^}hK\APkhmIBf1<7#逄AHj6^ t[ٲ$װ|X/z$/e Zr-C=TUsxjEOihQN|`:CiZsƨ#u~O/2Q/'WJ !%Ր(pP.@j~ AhCtzy6^*qOSNϨ77Ƙ#h`zK,IhdpMW ӂ=>}0&ׇuDG hZ-:+Ϲud ++VyN{iQ-9 W R 'SJgby-h/LXm&9Թ1]8xAGח! l@yJd }j=[q1vgjڸ=WD G>3WL6F.*,KNONq:ptx7MNyp>sI$՜lX,dY ɋRȻ-ae(qc]}D)1 LhŒ'''E)Ʉ tDoa<˃O6#1_̹m>lS&OxB`XR&ǧ8zYf9Z 6QBpvz\29~򄪬VL,Љ&s"gYV8穪 c48k1nr#1RYJ܁}ϥNuTtAWղ뺮뺮뺮%:P'HB]bNrK:i}Vc"턶}9NH":c DjM?$%˻2&_|AsqeIccH@s o=6u)%xl8(h)ˬJJQR[H)tJǝme%Z`b%?7F/hS9^ 9gSN\qu B'$4dVU,*H=LY65F&F;$M ()ٽyHDW(|]Ѩ;H#ZW$c #ñZ m' :q\ IDAT$Yß w;9v$n ߅֫徬|X6دBDS P+9eh=Īq>`$,k\+ShRm2f&^`mG@(B'TY JkTy&)FT>xy"e5棻IM/gNk%U\rO߽O>wy!$Y˔ ;My>^D6k3cO>klk P! B tZ)fҧ/dRhFp5S%zIek@EPd*H VQ!A:AXhwDЧht)D_I<}@֖ ,Jb(]b6t>2q 8SXh,uُY ^}E SX,JD1x.^Jyx“眜Ni1eWiSI17nщe9;L뚿N? Y&8cyt3<9as+AhiYy+m'&u\zO>4lJj %ֻ~2\++K2oE@x+^ YR52sȴB ^~փw1<9"[6$J|\|xKMk؀ G!!.Ee2$ߐhgv|mAkZu]3Ubp/:}pR뎟eu]u]wA_{-$,x\}#$Iui%&l::E x%`΅ﵒx1$Y/ \ .&Sa|>6LOOyt?2SJa^dY1`'OɥrdJJPH8q"ϯzJSxLA\}Eѻd\|ó)?>di}=d( HnXEY0M;trd>¨=[ S5,ˊ^֋< 'HYGx:BhdkNEkdT VRK4KvbⶉϬ߮%;VlЊ-o,j\ G ;CC3\Z~[$“ȀłH*%6u+IOhdͥ?w4c:˪LKDzx*_* lmW@sc+ EA73-qΛ7 S<>{?gz|A_J߹a r~f =[gs[$"·r$(ҝ\].!iB/Rz|5-"es|Ə~M,k"ct],Tk 狒>Cv78|dk>ۻ|{4.2[Qgܽ^z 6mx\B)3Dk0\Roe FC^}|KM8B0L0EfݷmpE+y7,}oJ$ aKeke"*,YܢD4*rI%YG$$xdGk`0Z1~gbkk]..)]4$MMh0n+R[[ˠׇi;o)sq}buIW^G' /zx8^d4Pt>\ܼy?5`l$I }j5jY1d)o ơI{#vGdEN(vrV=ӧ%^xRr" ZwY!d;?chwno[dyXLYr1~~l`r^_gw?䥗#L4;|8 GGjs,f'?qvW#DM@Ȱg7a㒴0z'BHF ٺ bqIl3ZXx)-4Z&hQR\A 9IJr ` AҎeeiPC4Qn$ A`DJ5 ILX-; ZkE|,=ǔr!32_wy!"RZsXXJb%]B n"U{pxϓ'Le9;_ GL.ᓋ|Z`^[Kֈ/=`J >ZƄv.N#UxT`4RJ/z"k>|݇\,Jn+z]oq<9rqy& }Q5ހ/i\w !m(a-C4v>|m0 K@QY  JEx6M &ZY©6 !Z鸸Z}ň҂ָ(;n7ߺWK~@@hu]NhR3ommR-<`?ڊjHӔ墢idZ3h(SF )X<{O#9G1Y.X飯j]wϙfu0ɴnj,ŇV]>;?/|ưǫ?_p.Yr^b"[>l>%A]gW7Tuw6[#NP-KTuà_o S4essc&Aۛc0q3 uc890ɲO?k޽ݼJg|Z)ruI:DjkL/~]u]u]5Tn!JbX-ŌO}7w8e<3++VEh\8ЦA^Bviq$RGo@]y;oqr5-8R@7s]j ”O2;9f/1'Hp {`f Y6vH\A!&&(A丝4G/ DkiyƔG@JPxS34ɼĴyJ&JKe`i-9/ TU !{7wC r1/߂Ds)xdH$  >mЁoʾW̾ʇl %#kTm(J~[: ]@}Z pX.8+j(AmW[v%֘e*^m$&S.HzV%lno"6 !-:M2Bu wOC$C@.T̥b`NM9y~ yi;m0aԜ;CM򔽛qXx{C>z!P2 c?Dz,ssӛjO;$C@mH Ah!h-A F"9M]e2gdx8x, t/ŋ{5B%iFS7JYi1?z@ێQGJ6|O?s{ 1s2ZeH=@a1̪9kY]kMRʤGIU@ $4`$VD2*q\фV*v#`ZAKo\Kr5/yڬ uK T~iA/>[zv&}5W\va 4 kִMꪦReF0rF0glqgg}px|Ƣjր5 I2[N6m]!߼%Pk 8?;㧟}ɧgѰ5cM<8]pT/#ʍ-"#/YsܺF˩3}sx!l#(3ŰO5sfxd:KqbQŤkٌ~Q9ɤK\zOfL !^cjʢS,ƍ3u8XӒ ckjBAI<}ӓ`$͢`]}/ ٦8|n蕦xmM[(...~u %L1uy( RF v|YZi f&S>=7*x[yMtd:LXv<|;aUy+e,S{CU`aaM˰-1߶̧sn\tx6+)Ʊ@"thc$T9XW=g: /LZGd뭷lϚx6MSf+{[Ssuu4CV ʹiqZaQׄ(չj'K>׶{:Ű״%O9;8bckzМU$ m  Ioւ@(o &,K ~l]mzgdMVDa^D7zT@pѴ~b\D:ъl1*%ȵ )A ZKV]V* Evgr_ sdVp}]no1dD) lzvG?W˪*hIhC".F)ԨBcl9YT loRP"#hj?kU6Q$qO9/̛>3#''p4loHm$C#GS~dŀMT#&kAB:OgC={Azt8fNؤŠ֏q&xpG.Q$dQ)MfOKt! "RSbH!"DEcTwEG)]2H=1uZ/DvF-*$,ra9JiPT L<8/9"2C0`8.BԻT&z\-\:{|F\wo5ٴb66,ݛY+[#667 qt6O8/ " XKD̓ggܼ636mPjAhkbt_>_#K S5$:᝛Il6g =>x=n3f(G~gNTq,Y䜣NǐHf(@`6.i$iI$K^v]lJ97Xku,s&H)JDKR'1xҊT+L4"x:&nD+:iYW$^x/A\oɷql ^=1 xM.8x1pvzDsҴBkM^$udfuR`Td#mʢ`2qѴ,ϩ./,|,Y!q:},%..~u "2.Q6"Jd3rտ;.YbayՏw?ohw $Z T5GK D@,}=@:z)Z! +>2H*hԴӆj9<&޶>vc3IS-ւPQ&cU(s !:5TO4oMjH I׶7 9iLaiIX"BJ"B4^rk;WomZW)Zhq:B% !@ @nHBLx!O-]w@NvZ 0]; 1/>mD=ZV c-"a/K ,Y& YR.9[L BP\dsrL3nݹͷ-TdO,anJHBC% 'pO)w켍19uLS4xAj^st2F;{w RxьŅ`<]P\IͣG_aQ7E8|?=-+O 1f`t5ж g[/8?8u}2)2I?7 ۛ7Fyidak1'?SC]*uAD-]p8F@PJ|/V(;A"A"KLK.پNJӲTk!tk=J<]Y.׌H^ʋKt,e#*K(PRgXӐ)=/1[IIm6z2lSΦ-f(2Xdy?~ 1;o 3?=c|z5?;OF~dRO")Dn^^$Ļб5MxopGi3:$S} YIB(Yb\E`]SZ,IծT7 8.uppY5Ks}Ubv_&_1KT,gt2=e,ZR1(b6!`Ap~~J#TUh4ZϵmKv6wxwp8b:>j>_d(8:9fIac4U>ZP9My }>zJ&dYqt%Z zENXEV,Ϧq-ٌã$1y_ O9;;?cMM`~ezFXt2;H\P_ M6oiFXkڰGˏ%_0+/b*r@ LT:e_uŅ|8t@ QD(:F`LNWJvÞT+0圝In\[ƍ wBҙO(y4scy L@ L؊W cǬOvP~~@e>;5;|?~^@e9Bg6S B.Ǒ4M_Ը B| Fi)>RtZ WZGc֬͞)w{EYkZ7b9yGy f=tÇRվQ,^؎iYpZ;ߥM;W/kc6h%q :jXa-k5 [ɪUuq%T_<+_}j]f _p쪎1IRi/ԊĶ RMOIz2xieh(%kF~>;Âp}%6`$T ӂ_)+lg19m-sencضŷo[n)slkpB{[p~!R+(T2dM]ͱ՜^"I3В`bHO蘧3!8Ik˜'yK拆lAGI`d:gQոs_ypqbtA|2ͩ֒&)ZIax:eckK Hӛ\@z-TعW$˔௖^PK,..~u BtLd(ZJ>!Fk2BnӭZw)`Z1O3+歫lnhLKk@ >ve ^R925d#E@ц8Ϲu:yEla2i ɗil,XqfeKgI ELhPXL-/( !}dDLp";ٍĪ9&9d'W'>/dXKTE]@ s=Àg?I mmy zg^7lJ9>(ፌ )ekae5:%(!]bɰ]B{d{ Rw8]pIFhg885߹+vqQB:}4`A=ԭ%Q$i#S5]qWR HDpAJᜡ^TXVSu_gǾ.\g> WY5!W]G0m !G<~"(3666HӜlyyl`;^m قc. }@&8K0f>o3op0j1-h%@/OIh+KxOִiUMQ|88: #;'}6y)<`63,Hŝ;wy&"+4uEYU󎦵( GK-vw1[Tu0^5Rm}כ+*O+}q08˺˺e%T']tD+hKW oAK0P%<(%$44s&3S|򘭝Wop4D'  @K)v412UȶSCp`Ny}K?~)YreY4gZl2X˴j˂!cg4h :J :#)%i*Wp!Qy9;|b6A8&OH YsFeKsδݡ/ d/j 81-rirjyGMR]'uzYGZH%CgD Y Y&.D2sq\ZN~%UJ떉P"X%(ל:_[p"V$!2BTuÆÒ7 Jps;ak)9,;dFe<0Jd%sP1tI MLiuR:2e 1[ey"Eg 9P&q#WWqs: ԯ^a֙.-.X^K:1(%J*T$[OϧoAʎ ޸t6f<b{{4M9<z-y-1/_P Jdy+{ԋ>x•kWx{<|7~qpOq&s9 ٳ)7GiN~&{Zc22#/ͺUxFU_]˺˺˺_V]Pe;=n .rь:!(՚ؑnc݁2ABhf/tHP SNO<|$\Ǜok09z$"8?rmwQAHHM|G'-Io;ev6xԴMyقF)dB30(znmcd jc"L$J#p_h)& 'GLN 2~]2a'TG'ܸ09<>7bpI{iV wL:˒?l9 [Cm,zdyBbzfϏAw}sZ!|Lj @)#S$ l|P*zh:\_vwnѪF z 3K(/P>8:PU׽/j9bP@x1R Pc*)RBQ9͋ 6f n|x+ɲO#vf!Ix[OεDZ& ??~Ij )BH$R䛷ۥڦ❷781#0Ź eTcYM r8BL "uHZW(l^CA)&I'+]Lpsv7~k1A}ܰ,WoSEF$G.%Hyވ3CmP}Wo;B'Tq_PUaTd: e+\%h&-ж]@*f4Ym:;WNeҫQ/wY~zplPꎵAYkM;J\ܥH,>s(3nSnWjrHz;76PޣV(nMk+CzÌѰW͕1Q~8S24 MkN D[W"eј0FDɮj]K2Jb@-H4F7nҚ)6/ؾ6O^Ѵ6zybe,K{b)Ad)HP75 /s`<޵8!PIୋ>Zǟi{\}E9 . [ҁ4$Zk>]|Y0$u֫ߗB@+"a$())p@9=:C༧11?ccclγg)ʂ~g =8QIJ:AO&mMu?`{szIjAĽv%{sFCv6Ľ7 6z=E֠G1B5 Gk zGt!Dl ܸzx)'=`c99<;x67:@($u)zt[)Ͷ{ ;wo5-Α1EL"UCDOGViGj2zlŸPYpͼiqz@뱷5 ^ޙJ{Zڀш:e C]THݸo1@.mǺ) ;%:1S $S爇X2CK Yց%Hw&GPFDĖ$j(X'99n0H7R刣c'-a*ۇR"8gCX4mK0Z|6{;[|!'8gq5-ل}ƈѣGQj-M۷nŠsk{.\$rK0İg2=&~^z^qU(SNgs&9idL_T5u{t:筷-NJ eFx6a0%'TpN2)U]1Q =<-ܺ}`A)E4hq2xgyr L&E`֊ф7oEdv:ٿX933r,|rq|חFYuYuYK(XJL,1F2IQөcH] RJ"HR2EKcG8Kƴkϩ3̽+ܑ-w66YLOFaM,()~r<%}z#Oglom"3z#~4Ulm!d>39<F]' >  2ʌm;h:"ՈJ fϧcN_`p/Jp:%ZIa$tqtS IDATN;ֆ2laf,m8AGVڔn\=^~%f>GPă JD-Ց (/,@.6[c]kyk:HK1V(2BZ.6Pd4JW]8с%RD&MLO$z)l&I㵒89?yƗEIifGHg S5M>wA!CL{erj %0Њ.oH1D`gX[G"<=|Lb76К w'JZ`,Zu%Tڦ[xK"ϫ(AEɢ(ʡ dy)VDC5 ,)EN^`O]G&GŰBSJse7?}~:/$ !"( l*t>z7C5vu!>YOﬢ<ҟ_߼AtBdRH/:6/Ns+QEXvGYu ")Zm 8T3L=(@+ty{rln ٸL ~d !x7"Q\C2R%q6#"Adb"MUDiuLΰCh)GgsMLRP(k%3&I# Z)ږki4(DGM<|6}.>OqDAkro)$2 *Qh)Ȕc!%K31p]\E/Ak!AkmC X$[q$Yk 8gAt 3-yZ$ |Nf$IG}zdق^EJ-4R0%_K[t2! 3|5e`8 y"`vmd6a6`}t~-f6aw򬥇U|~MYTӳ[O~3_}6jgڹT-mv7,*bʳy Ώ9?1^(EJi}AS# }>oR)p.tD2I^\dY-<]hcG,3fmش6-.XKk=ytahK\2g>=xޕMʄжl)7wFLZOx,5QҕSW Ϟs-z>'T0B_N,y:*&" 6{G˦d׆XRZA@- ˙X ƃ h 5(PZdN^ϪVB,: p T.G鯈>HJD@0&KZp?{B _Sf 磻J^<},&3LJEJhdް^D4: i l9Bom0'@Hy `.HY>@(G"2E}8gEE¢Ht꘮+%8QT"kw TFK'𭥚X\3h!A! %Jpv"yɜ_mH"qK ~{$ir}<|?0 2"DJ B?T %Ƒx ٙiWq"$O8,.t2OU?O7~;H!3߽`~\{;zYb[Am![[:0>:Lێ'Z%EqQ@[o$%^W$T2Dvز7m8?6bڊioK⸥"WXe%IȤGHJRTC><$I7P@d?z/>[< Ze4mCQ2(?W?S604^02]5ucq^ Hڀ$InVK|{=<{%G|kjDV T`w%wy=%DGo9䂸ɢƘ HDq$h}ȶF~dw(-V!op D)$eptU]4@hBaL"w1D@T~y~l\/W\V[ uwN)%O>ﱿ~eE$ ES uc89=eo4莯ud2%Zk߽KeX7E!B@kZl#BHF't-I&)+>1uHX iHgOIc yeot1"`6J*eŗ/+fEt-VeG2Oh1BiM'ISJ>%uS1Lx1RƣiJ4-'gS2 r"MSiZ-i*ɳy%^1N)C zʭT\v-+5ϿcW6:Pu]u]u]κڂ|^t:nj[k";I祜XAeGhd@H ϸ3^;J2NƯDIP /$Mm?ypnv([֋%m _}~7_}/HY7,sdĪؿ-9yiq5H" mO\"{z  B!a8Í w R2pP!!(Is>oBG 4It`Gx?3f9޹8NI]B0 tmmD i_Ƥzo-B'4CpDr!2|"ZC9ȕKwqP:ڗ-ȰZb[H:y 5Q]OAܰa<`^&E1?[, 5ƴH $(i_@1a8"kf9{{;LF=oǔu9Cݴuۢ#Itu]nK6dF1M9MS+ p[7HU`1=.ȳUI6죥¶-.Kۖ=a@6Ŋq$gXky99x0( ^N8TnHm-q8kiږT&LOg*SY{o>М8\FCG>wlmu5笮^JMBN6F6 ۴e4:EZ|P=e"SFȖ1(7`)t̗@HɆ%h-OK>}#|xBo"95J8' Er|9O~#K$7zp5 Konf&T1$I&*^#8b ("\M1A5 [ $EAmg#IBQ,OȫE@i DFR#hCC^?6E`S;,(W ?D G{;+sOq!J4=@h\Ox NDEVN n%%v@@ـ#xBP *Pz$5-yAx":vG4ף*jHbe ϶u)-^enmKBexιwF)yS%?ƴ J)sxxzœgLkģX.׈ 0ReM4 FkC}@% [or]ӳwu-L7xhczsHD޹}*⇼"\Uv[7+[FS7n7Y^ UrYqqqwhMiy3^~ 1ekSYR nڢdL 2t ):wDF6%UC %#:ZAP}ڲ~Vs $_oopIoS{ٔga滇L (h37~u, sr&05ӒjIvQB׻$V7i"KB z<<"l|YP ѱOct;m>c>R 7θ[͈;2D!;'%+$].i>B,%E$JcEǜjU(N3_B0)x!//f'5JSzOU5@ _MH>yˆoy;G5/X9&朝9x۷ع;`q^B')^FIp)#[ID17늓gfqYsxg$1C'l1l To6ѽGy%G]pB@:DZ_T"S׈ )MH4_I+@Utm]M&n^0CwlEkKeyNSEIdDU5"x˚1iFmI]mSb<1/yihGp¶%.|-&#nR7%79?? ̺M"Xrd2(uJ^ZoXVT49G',ˆӋrZXR-ɒeUat7$iɗ=?BJEp0.8+91(K$ʉ McXXiGʦ˜v!P Gk,7}{Ϟ-|m|ǬǍŮnlZz9sNg﫾u]u]u] " KDdFz"T7JBzP L\PnPB% :IIRMQy<'#yzNi ^c9@X-Za5Zc i E}r>gx|l]QU-_= Q&Sm`X29Xw.>HRtWsimt́mD5.ʃU jmkJHie:*he[c|VTuEŋe^.1~ΚqAYGJ%z!(¯Oڙ{6?C.vG,n9.uݢ^v+_!A.O_ eY 6.&ȍߙ_R(Wc#0D q7}"c"*!2ě g, ؂]֫t<KkZz"E@?S ߍ GjddL/}ja5gD4RaLʜїP9^\8;+A:pH/}̋!Ȃ2s=FEY0ލQk2oqv8l#HmX ku;6RwUUr]}+UG{yW\^ۭGpȍ!Ƌ,~(UdYԵd_L=t1F}t'{6@e@8蜿SZISi γjiD8OcAηM`A/N8:s?ݵzSKV)!+ M ͦ\Ml_cu]u]k G\3) B&Hu:dAȨW҈TeӠu\Jg AY8" \KLYҮWA9ˎHXxl_7`og'J9u'2Bf=.8yץsUؘUJB((XkF'&NȰ4`Zۙ;0ֱn fe,c% 8chْ50<Ý v`RK5Xڦ%I3!k*S|łl"z%vb˒>Fv?D-_A:Mw&)7oˇwcT8M3lrҍΏ ):4lr>+g[o6\dXX^x"d5%E/aXs#{o-ina:(\(>9f8'M?G$ŐYG/-"xʲѣ'LKo 7O*΢&U" A A$= %An<z& h&2tÔg OifH tȤaz~zuP<533U |J"'vxbtApQf\a#{TW*KBa[M^#;(KK.Xxp.|-ވS$G9!i&xkՊg_+G"%;4xQx -/Dd!Mȴ)kz~({ycy^ג~rĿ"jcW33`L F{LSM&Y)ThH$R-Frv1'n#e%u$xs~88&!) ڀrARģ$Iqֵ1.POgȵٚZ $@c> R ̦k5 =6>x eD ell {H?79Rbm޳^h`%p2!.hki>9ݽ ub.I:KY}b2c^s~~p)eU4-uE-~[1 ˧O1;{; y1m=!4GŪ70 ՚=WOP(VQ \Bc,ŊժwŴMӚ?p@Qc ܮB?D!s #1ւn@, PIܵSn!ɪҌ.Oٌ|Ý=1A S4UM0-I"P>:ԭ[uYj]qŒ~ZGc#iއkLsᑔiH4Ic24=jET ,k՚n p 3LySlj*-/I |iY91Nuhg+;9S[Kն8k1֐rz$[V< 7>~q;9οNLd^Iʢ;I6ЁGkנ+eWMv3)6w PΣ%/ c6ddcA);/@qvf=f\yxΨNj]jjxz q4yȴE$uI.`*!{7wp1Ջ]0#j-IpM83 v)ҫq뚽ܴ 1PAINܽO>\f@`8D"0E@iن q4J[K%__wAڗWT]n'/Q:*q to۫߰ EduqDd/\'˭MlKAiRT%wnޢI΀VHj>ϙVW/o|۷Jvl^!+zH)hǶ^H-DI1VZ! I4BzyFzrڗ؋&Վ,oLyt|//xv(gP BmOhpRdF&ajY,ZVAx5I,[3㍷rHh;%%Z1gh˘D⦉ 4и #-((A(Tž4!u`<cBA ͦck^*Pڀw ! coԆa{IAd)ƴme]3'̖ l{`@4L\j4;yiQ,J%Ye ƣՊ| >ym8+p#%Fr1g2(;0i˖Y?%Bp~~Ae,Kb:7p-n/r,qߝEg:ZP:UUIZNOϻ*L!X*N}>;{-قlFIdYj>m1lo~咶mIӔ,Ҕ ,ko"Kq[eM>q-]:w%cmJ&_u]u]uu M.yBtGHPD(Mwݵawt1 V:rzAtc@ G9sTRv .٬ vĢd$7ySvUkR[!ۀ+\]-z$ &'C+gAJZks6_f>&U%$[7 δr|-J&,|}ai诖Ȳm[jM^]l'yUkjbjͬlh\@'R$:Gx<Ov 0QxNyֱr%u늼Gd 2r)WUY2<أY,q3*,tDx- 6;Ǣc[^:AyU|-$mN{4LǕ&; (~/):1D_)89=Ѣ6ٌ,+RMq![?7v ą J@$^1$IF:>{BnEm:CB) vcV@jq{5h`=_7T|9T#{c&kile p`V"]8!h[ލ97hxg`.؂,my=vn YrqT3so@6WmpΑBMRMic:1v.M$YJBL^%w r!^$R!Ghbzr-k,C'm`*ұe9*y?n!Ҷ%q2d7wIqNe䃔?\5 8뙝!ж-/_ֺ P41z9y-i޷[(43f]<~4dix2/9=yI[]k;7ooyyzJ8֭L7"0[c|ᇼ8[[#Euq2Ŗ DT Cvw'|c {.a,Mꆪsx>'/O쓏B9I1mB7`ף8$ i"G3_ywB0D0b!Wm6`ޭ]]e]_mlW,Bk]u]u]EZl #6~JD+HAv)k9ٰG2)h+P.ʄ7xhE`2̹9P57Fh x;3:9F$19x[ԄY @% /.):͸ON~BК$MꆱO_& Bil4-2 V%39勧 dP:YZY=QLg Vh1{u͋% Nـ|INkxARt`E R;γ?`8ieDsjZZK]7ddm'AHM~Ǣ=Ν;af Ee‡KƨPX!h9y$xы"l]W1# 5 U7˪<^ цv P.Gl鯻#+-h*0q =Ս+BE /15"VT"PLfgJxP:HAFGw`\)1,՜/zCݹ1o)cP!;yWTwFi3 Ц@t# g咲n99zA$￉#aU<}qKnMFǨ3xoy<fFRlQ:%)8khӮ(e j݀ ހ8 Yb6w^92$ބfV%y\0קzmY#PK[i=^e]}RNy&G/jIc Rɘ@?yOe{z>Y S;fgW vnGcNOOHӄh1PA]5|OPB$x@0fg_1{>tf^vA=E&OSG|#ܺ͟88ٔsL$Rb[ehF` Z˰ߧi?=܎cnYCe-+/xg/x뭷&cr#Mn}PWU9.f3s9y~_nYR)L۾ y]\m'!D[KC/jJ_g^u]u]uk+v[3pl|+j"yQm\)257{*JII`ZH,Rt" rsw9Oiso첳>_jhӚch-l i?xL:f/*? !y1߻>aSqp Fgz}x7Gi-o?P0U4ZZ iE$^6jkjrh%47 7i%}+I!<{Ya}k : +I`47iI"N Ĕo{Xw~c\7Me4]]@+=mEz.@H\!Ǵw_8=z(L HͺnD8ՄG4 GlWh4x[wA@@/H޺oy@ÄO{Medn}c:Rl;WW6-'h6\":*[ fE BobB0!CB>^:0EhsLU,">3ELg+d83MHCt(hLd5kB$)J񜣳s79l|:#')JZ㣟bwHjx=є}{']tG"㕷ޤ)T'gLcryzL}aM?"M1-ׂ9Xq1t< IZnT~Kn3Ym8_e8pch@&="|ਬ7= SQA,BĦK]qpmBZ6TzR -萠 )R4`$CC%pVZص@ދWi.Cv-) *"IeTEY*5yGHO1Iˋ):jj|QķtbdX0H?? i0 HZ35)F!R >#޽MA;{CL?/4S5uUh&a:[ɳsFYJ4\ܺ{>^k-8\V/m]R8Ac1n{?֌=T}OsyyNRrvz,R+d1UIԍźhdYFӂwX)˒2(e*%uUE J$ZQol0E;rn+Dϯ뺮뺮wu ~EuuoB*2ZbXeH(e{C$.[/}D V-Ak8C\8=n~q5?? -!59@Ѱ? IDATR`hjA*4޿Ų {A .l@޿h84BUdJe` 4r 2jUݒ\>NKljFpy|>9)˦jhr=skC:!e18 nZX-fHAAh*/SX)YWbNQf2c(Er,Ve-K~k<:O 8.NNaD  fKM[_ofvM*@lDO2&*o}Ndyle۶jbJMb 3 9RjW(dYBpbNc땡* 2C眜3Lv~>I3h'2:Yf'X(Z{&,>8:AK YUio3HKB8\\L_x &" z0SzB0i Ŭ-j"W+YN;!nh筸RHj+LWW5TfJXv7{QC"-<u) R,IgXsd 'Dp2 0Y\7.wmng:moB2rg^!+V0/oG_Ë)%>ddP^\^}D\m`%J lΡd8ߙ`Z^jp!!Isd>drxWjǝɄ,KH;k8\X(%QiJQU-(]@zO"A/Uc! \^hnb2i/Gg=T6@v$R#Ҝd0_6 ><:5T3݁d| w{!Bx, .Wٔ=|A? &1H}  aK*%K΋*뺮뺮g_ OQߕˋ1pEjdj5 GD$ ;Yyz/ @I( 5B-dpo,xyXt 1o[X?b9wS\1_cwJPܾsb zM3/-Fn!t T I2HISay}YSK=Q,iA}>T>cy| _{uĭo~{yu^5`xn@ 7fm 9|P4rY2GuOUc8|1q*cKMi )4UC|2idY-C\]c¢bq9ǵ)[f-([ 7`r.)p/hoy"Fl\\ElIŖ>n28-! CDl}@ց, '! $ 2>pwy[ zcTE]77 <]3ih"KL_ BpA\8Q$Z.s>䄧Ǟttt'Y@J Gsr4 Vh@[tȲ×iM51f-L)\inn6J+Bd~pX2=YY@],|*-UzvfيDdƇ2`eޫ{kdلɨ ȨV fՠ|{~t)l`ߊ'ٰW; +KJk/^@:7н/WsFj\amɭA'a{єJX,Z4JwQ5 YoJŊd4cǥ{{_nxے797{ʴ4d@9f iр$JR{+==aYJ*Θ/Wu֊Y3,sz_|>ۀY % {|-n2"ĠD㥊y$`jjLmqZn^pXQIZh xPJFk[,)lՁrԻW5[)Wo|;#$ϞG9*ώx umU @h Eq58`z]DuCQJߝFk=\A΍6ݿ> 7i>*NpvvI?F:EsS:+|NRE4SjE=Q V+YA(XU@EKoӟ/\I ޔX/H>&L$#첳CY.EL8$z1,jpb!!(~LmugdL/1Y /~ H6ZQ"cjM*F2WD 35_ LlG2l+qtd+0p!있@]#Oey"VF ]!D!1D38G!ypf >ҔDgpԂ ,"h/Z6D`4\C؀8]vd Dm*mk['R'yBn`UQYTXel+2,9dzxp4%< $A%xj|J>13@xi)jjչ`Dp o+VggH>wpXOclʲà ¬$-PtCKґ%0_Sg59=5, Ti.h| "vbdԩӎ Ae(!!_]ul2}:ҥ*IKйe2N6NNM+T݉T< Jdф}n } `m Vgh@'B%"' *K_'qBF案)icȂ"єU4<щ&O%E0]H]K- 2J/#`ņ]l3Bφ1>]5ϋ-JI fL41KH. ?YCeJ&7R <Bz֋ .g',bBf^&<,ʧt˛)Nq"I"7,YH> dd+eAI`J5I&ѩ#IҔ58^+m-~q;bFf@*I %JQ X1gXc֒)B4 EYa*kHn)788'dY& YmII9J >;wyý g|y)jsNNsMBn>@t$Љ+14b6g]jnwP?"MiH21<9#XA3voӘ*EOK)C޾7~ϰc.NwܹIKoW1w^-TlM1E-XK/ss-s>{SwBfdY .vIn O%|f>5MQ`˚*YX))?;oNs!$kX磄IwvvoTJ0eTU'YW+/YX 2P`A-2 s̾V%ZIz;# H4tpgB1L^(BZIQ@^yq0a_Tx{He aCeq_lX{;, huZỊV(Fq]dC\3Վ$S] Plz]š4M0D'VlL-a t쿎)6^U-y~\1ch,ޠ'x=zގAe5G < ,#fR#T$OT 셡V٨MMoG "jl .ѷj; B\RN=4_ơc#4L@"ª):tvs.)U+Yf=eʟ[:PVl[ --dDDн_ӌ$ v&&̦gܼs 1 U?*%uc8>ey`wo$!4JQ ?>o$(+4Um-bP5я  =/ c[#n4 B'͛XH Kl0ƣYRRx|\db|GYfi֎g_DPKr똵5a9敗_boC GPw\ٷ^F\Ա}-7~ؐ )L+G:W]ķd^,~^Z6hHFvjjR&>;7X^3L8k*u?J`]PIZQURH2Rh4*BVkFyV!zwc36 >!| w~7(MXM/89eRQ${C "8BpX0JRUpvv }n\ok#kݱȳy%ԍ#sϢ,r`o^Xʲ<ݢ\Pkl8*~ᝋjk|zxkX/%<$ h#4jTK |^`vnLI6ca뺮뺮gY OQ/^$-To`EdnI+CԀFy%@tWI e`,%us;L/I>?x8$_z?0gM^_c$ޓ%4h\_[²Z5E]> >9rohǪRMϘhDQ:Vkh&aYbs\ e+EW%ź0JU k #{ om4%ؚ^1FTE.45aƅeQ`|%0#8p'~Am-MQ!'sƂ8kЩ&hc#x[ZIbċ`UBZ`%_cu^Ib Q+;4B\ܨa8P!yˉbLA hN~cA$ʍ_'S ZKvo_\P>@  ed1u=f_gߤ#J/la+t)X59kŴؙ2-RCƹD4o&; eS0?8ƺ屶G2حY +<,6UM]&T35щA2%Z цDooc54RLn]jXjAEr!oWȃ>f"O4,b]!dhqo 0 ö\`o_X2df Zoxzt5`+ioυч1zp2Hiܸͽ^Ce9^*fX#em4Xdn ePњ7vn1HA t4=1TAEȆ},:Z)'KI,D_Tc p_Ejy"S4H1_Nc݀n:%MStrC~xvr]0 (5Y(F'Ms֢!=yZGc9_"6CQ<}|JUFy\4UE!Pdoۿ)G' Xcc:_2%wx~|ʭgت;Ml4ST5[#.TeA'چBd^ɯ#8BXXyPkƤZc9>>mI^2Lcz,?=ڣ  k l\L#ԇ|t{1q5}PI;X(j~/iRX'hw/.xE:!e{'p\pUiĭ IDATxW\j:ҝoИ?{A"׆Z#g1>Òm沔UJ2<1%:mHx*:mD+g%iVE'}o ɺ!ذD0#=8h0mYJ2`1p> &~u`6wk}f})Jt>m>p%H6bJDG po'}jfg|6%@jkbB B9ucijb5g0ཧ-Zg}*F>X.1 )/ _Kn?Qh~ {{{)f!=o|qofqvI-%>İ|U S9OOc@8ioEASUR}'mp޳Bk7o@&Ecp^$)^fr~zDp,ǖOQ/yPR)$IBQUVҚ8|ͻhg3-O?JzCTnIi|l4+!>I "2-0o½뺮뺮/53Ђ1ʹl:zSrb5u;QA t :;|U#K"ظ^UvZٛ:–%8=}~闿EOܺuH.sTUI 캠-],/טDMx)}' )VJ8|R1kM9W}w[ b;Fp.Iqc<'JdFz5d:lHA = %W@GHS쩴Eb}22|I ".H@t ؖ]*eYWA[ڶ mq8pRYBp-9R(*j=I0 R)z)ùbD B]Sa1^F9Jcӧ&wRxmT -[NOOĉ\W eCvD5q!De)hMPz "kC<6:ZR8p_a:vX6~z#`.@`-6^gԗZ-X5{{{$Ir>e4bA>k&%65Պ$L3щi E4EJ{(ʊn}vw)yk?cnAe_G>}'%5rEGFVw{GGG 49#@fĕbc#^ܯo16Z;0a'ŊJʖk7͘'(26V7{{ώ??4IHV -EA,2ຮ2Zxv| 0h)M6K/+&ClXX}{J՞3JJ5뺮~~u Vaw%Ѻrh%z# .] % T#tscT}֚q \0 <}?~媤';Jr8Ug p^_v-g Cds[ n Rlq bMQV1@&xx?xb>A *eMJ*ɔcs9s8cj`ZśNS~2J<. :'Do K\nnCx`JKnF֝l`T6ʜ]"@.(U/Q*JsH+P-BA(?{ƻY)wo}R vnŪf5[s O92<,#|p);w_E% "Jl<_T^:=k͓=jrkH8V#y"ddU{(g, ^N?OLA3_g_Kj5-g]֌󳚝1tdJn' LRMMH/UlJ)t7[bLu `$xHtle !J1qmRk뺦4 ш‘$ 3x0"I{y,qxGOkk?[Ge}3V9_{G(5|!gOOᕻY?zĴ,cs"S28 wν(˶|@:5W++a4L2Ceܹ}xѳx8=? (M?( >l{$ieڴͱ~X`g*x퍯mhcf]wWdzO$lS)%\;뺮뺮뺮G]?e-Eg.u˻l|!!6M]7?2&2 AK\pGDJ"^PX5ؽŭzGǜ}!9zi }Ecypx$hH |Q%M'ZLkƐB$ICJxk^Q0͹{$9{ɠlXq3ܿyȳٜg T&cTJ>o_焄Rsd:>%qu}i5MYPVxBIjWW1Y3B'y "IB ]rjmXM'}!.[ai I/h1iB&'3H:h` v]M0a#mG;+kٲS6l9'%ս\F jݤ"ȸVedyP !MJ_wm Y?=7OYͩNXQf x##Im8 $cy壂>$͂%n=!7*TԼBY;͏?}DH ~6ltC!&VNv9u ^("/! բ®k.\G)[~{oɣ>?~TvBtਚnhVqFq2 bzl;3;aϻvg9!)(Q$˒n'@;k AE>@n"AF8 IxPDR8ySsyr񮽫H[M)\}W$ܵ~"RB8Wa^l~$%fDmK1kW;Ǯ@Ei1ZcW+CXVa>N/&WzmyWP OY qQ"x3;sMVZTMU}2L6oCǓ9G'U%7ܓC^sl]m'TNy 5^ǤByRg7'KmY F4#+Ao~u{mLQ!dB$sx"#3,wy+  |)W1V8SgyeYs2\ý8ӎkmJץ(2a 8IXd''-*Lt ~)e,J 7Di's93M:poߡ),b TҬj[UUĿ2 E:Zζ#[Ցp[ NM${wF[8==![۴j6PR3Ϙ@lVsE,Z˲DENãw.[[ZpuY0D@znZtWw ^\\"B;m]yy 472/"UМX ңtH 'DjeFrg"Yin{<1?ykx| muxrttO?!nn^REU(*EQUDh"\R+bө5-w$օqti!0bdDgϠڍ+2iynn0xL#mmr;BP4TK 56/qJUyGU.X,F̳)KYb  gCX᱘D8++,B7B TXc0qbq-iEwI{$@5H&8)>q^O3R2vfy;YG'Ժ y:t8-X 5:ppuLXX?܉1YWo2|a͵_rELr ~MDQ-Kc">Əѿrx |tV';˖na8xenoq<w96.Ttߜߚ .6P( p6,?.V7#3>-9eU`bl8}4i'Gwtp~KIbI*%('7",8b-i$$N067S#~GwǷ==DUCE( Qa[T P v*UEZG$*RX鱹kCgk<uwfޜ-(bJ[ Y+qvb./T[PJsaV ڝ?=I2h-FFʈ4MC9*SAIҘ$I~:ySV( "pB A[M/#NOO`8pU?z /t:)7o^ q<~E*x딳9r:W]a:dZqbmhBY4Tb׭3&>ՉZN} Ks]4-~l>3V,e̩l~VxudYS86BF RE\z ];8yTU=-uwIEE;s^D/b.b. 0ܿWBj{ g Zvy:2r4BL lqW V4EIVMG\  4FxEj3&/xK_8<ཇ?1+- xQ M!,".*5mÃ"'#pfOC UhPmm#IR!nw |H ϳZ_(]Di-5]ppB7ia6s]ƴLgyNUVTLds&m/J ,EIwVJfǧ3*ǀHIz BKYd ("b7!SY 풌QC:[l]AdN4B$RGJ΅hzu,WQewιiR/sj\q\BAΥc9:\1 jVkx@WA(D $ I4^_?{'%yҢ?P옙(c>??KEzѐo +.1DJ/ʁuԴuBsRݼ Pgv9_Ox%AG Z^Ke >%7 }6XW'"%҆TQ!=fL$("ngp% Zcm(]筣6+9],km ZGՂr8HhXk)u n\LX_W2ԝfK R<'dm {>WlIqn\<-+՟JʪkVGJ ";+x)Jn4uRvga"R>;_?Xݮ\)Vp{d86Ŧ6kĝMT3n;Ŝ|DiuBS%i`dm\@Pa+J: w ;<4ٹA|2*(*K^ET,rb2L1ChMV%YV0غJq^wȔɧ:V -(“Z4¢@L1ep}~ "sVL4sc9LJGy^a *ӈ4^Jr 'NS,M5~!i@Щ 8%?z\T='i%W ;1I=EaWe*B+M&lnX[/{0OOdy")88kPRBg)CyYRYiw:3*ʽ]*@ruEҥ৴_ IDAT /b.b.b~s!Ʊ|u΁2꾧pjC 5V|#+pV"_y}7xsoMIi0/CUtFgEy~:o&?Eg ;28Ε'c ;{NSPȴ#=IC }SA8ATU~gz5 $N*Wl',ޖSg\o҃(g~rȇowHčyQpj%r8(lEi6tu*Û_TLUj"qi2.BYnmz:>̹;qe+*HD.c^+[l>J998YT<N9zJ0Ҏ%F\GF ޳cFhr8YLl<.]/8~t_PX/PB  EJWXYxľzS ?KX^}Mf)hqe|&$v-Qe,_+{Θ:jh, dg{X0B휋D *KBĘMł>[7A6Xd?g\tןW<~xBe b )ݽ='SOX%,cZJc=AIʀ y#Xu]XhE˜wDuMGݡ( `[]ߔF~e<<%3Q$ıo6ju̳|{ \~/t>%H[Myɢ(qn c}* :$b5Y^\\B{]vt=ixT-,25BEpYD>오_;ƒAHO{ZUO<#j6oH=>b1( 6xw@[,Q Q*IShԼb9^$I)ҴŸ0(% /3ZMLEV1N/m#6wygpe;V:&`y)$A-ޱNFD鄤{*^kDS3<>~{H4|D y”r: .?K\noLKބcP8*/[(Tȏ1ߢn$ȦDt`$F?BP/ (W>V' @Aer 1H@: -Q{XЧ$5')qjנ 4CtᢠK`/{_~ %X)f#71XXIVd/46bdN#%O *-IFvC6Ʃ<ًw 0*kWHBm% ^s|:a,7E ;ߗLtZSg%^ 0i - ⬥&DQ%~uN'3 2%)x)r.̞בp|܄)5UU}jߺEυ<u74^ SipDFDYv6 щŊ,d1UzO# ZWc6?1o4#C$ ͘gdX)iʠɳ*$Zh7hQ*KKVd%\mm$e[nw HIdXNg:WCn1WRABp-*!(qdL"Xɑ3yV"є2soFj%ta{OHFz%o?뷮R잂4p=jSA\D#if[=|")|4%sB|MmPP c3.xUaL3II9|qzN'~/LK =|@aJSt믡2b]6{1/!^|F>`QUDy|h{96F'%qA,Hb"$MɃ9\pqrhlpHnkǰ[o`;hͨij aw$¯i?@tYQ_s٪Kdwk_K ~K'"asR` g=i67zܸn]c狷㝏8f8t"x/EHA۾~Y1qO*^0( iC$ș/rY$M#ʢxIa"2µJ0 if{J渴xtDHqlq),^`9”X uB`z$e6洔~+jA6(9 2V4vvH`>E8ťH zA)EZ#l]"')Q>,ۏr;eЪMcr%Hf{k_yYq|TaQڣPÀ+$6>@D$QJ@,B*wxc-}Yg_㜋B 3OvJu >B<| :'|BI)BBkv+c!,x RNdJ 6/7j3$ 3t#eDAڋVGwxqp*b)N ьRIrcֱ>XIF,c8ĚM&Sys.g4;)Q/ z|8 S*:5GPR[&q}ll_G/zwU?!'XccciL /]a;IE)Il+yΥk{تbt|XXb:IB ׮ҋ%ޏiN)gN .9G<Qi"QP1[` : |B*ֻk GrSFS2++Z ;]668Iݧ~>N92h")%Diu :ji1ADa`>q8HZ%Ƃւ"/Xd!Yo~w3OkAU@+]8'AD('q>t6:)$zt]uU#$a"g܁JOGY>s( {Vq+1B\64MZ{^~UpΑ1y9c:DI/G<,[& .e F^#sHXxB#sxxD4 k=ZVXE.H:oQh-)ːD6o0gxQ!Vf[:B_Z{րtYkWf).WS.DB̲x݋3V j]ˇ;qB>vE"HhH7\ah=&F:O LY!/7)e.]":8dso 7NYO̎Ojh.ncWbg< rK |$c4ZM(5B0̇#Fads~`tun/s'xd44C6oQF1fTʡAXP)"8Vhu: RNwqo~ZLʌk͔wy_nRL3>o{!޸L"lVU'*D))l8;B-\cƒ ͮgƔGq8f>as_*㣧pZP9K^D] K/s{٥P?S~Jd{$:uNcӂo@ܠEƏ$=\p}=AE9q2y#KE)跑q" cqHFbp$&ysވaK-TEXGZkaPήѤǂWI:JqFaJEe?!J$+iAg'Oɦso^!w)U,0BF!t[F):%5pr sLP~d)mtɘ]Ǡ1]|A@8w[ Gdcsx؎5J[yF9W5_r!\ZNs>%Ț} U"]}\rYWO=eT}mY:k^(:M7^|5KvH /zo{ώ8NdYΓOxNb>Y67k89GtSEggcKk "gGLdvQ-8@As-tOs8q^ѿzG'S+ TM҈cKf,Lq¢ Eeq.y107rWv)?5D5D^QBHz.WnrKx օьܬ/8N8[RBf3ϑ.C<ŕV@ Ilr|t\C'mcZiLsQ{m>?%?=D`W;]bp^|詣*@j\e U3Ƈ(5]I]i]WI(+Hג$ޥk !*zKS"M}-wwk"FFn`}c٢{O"g<>Yk0`#[L'S\ѐpDQTIh,2b<_yw7?SƋiY"㹍MyL fʼ*NgX[StBxIskx8:9b4(/{ʲvZ:mq8DqiB$Qt2$"ʼDk,-'CdRGku``gH)8 DbT-$+sU?:Z `}_w\\\1"-O?D -ol1/ߌQ'],p"MµXeֿU[ʬ;CҰm|]6)fj]HI"JKfa[׮o,cR8$qeypIoeH*EL[N笭u{GGlsx8ew7cC\ IDAT)+̕W_ u7E2[7w?)A]Lpxή7HmWq:XGTp* -nj V8uC|M$([37+ڬ8ᗶĿ,u3`]}N5Ӟa{E_>)?Qkk]ҡ`-Q1v6C5@h=!wB3K5̕W^])ٽ}'A9„dGWxG鞶*\pH$Qsx4.X8rGs&IJRC(RZw9yZĕO`|<49IF&ma2 [;8=C)tZ<- ڃG&Izwszp4DhE)$w+p:Owgub蝷h)Hmkie;R$u؝T[\gpr}Ġd" gpu{$~d%ʟUw\1~ZG[)*cYzqբңaXqk\z QpI!\t|5>.>ۛ*NOr} 3e/,E$0.ZcA9J͐ZH(KxJUZրç1[}*[]+)5tPURi6ob:4` י{gA(U,n2/g8¡:"DKw؜S?PNZ)(B3\fkWH8n<-K1UYx/% BB}Ϟux֋\|۷?`xI*#õLzG#Y8=HJkؤ^7~7o-<~c3+ FxG'Z_c4:k7ihM(k6TޜnO(+<ɳ=NGCNOGG-Rc`82MqbE-nPZjw8>Ø~QDDi𔼨Ȳ8MQ3/fT$I֑4inG#"Csywt._{˲>#nL9D5"M")% mtnۀۃl?6d=eVK)SXYUY9qᜳ?soD& 7`6~?PȬә9k~,^{.orE_w(j"PJ.7z h2ui#&:%s /A3#i4,0NzG#jYW 1Aj֑ckDhV01taoĴ0X|UK^X+),L]4gX)!tg[W/nv?fu֬dXj2,qWSK &ynC8"[qOP1\4nЬ%QF*0F=_w>bЭ!29~T )4D#9ߋV2p93aS:E95H(8% GY\x V,DHᖅ^pg,/bv|n@tqpwwB3K; !B n]Yb;!~'ytGq=t.8"y~[d6×LLw*MB!ݛ{lk( .q"f94d^Fs ,Zd-W{1Y);yNXW̦Sdjʢt|KHUt| @aa}}'a0/4vFgR[p(Y )C8 |>%Zp:g:tsD(%)<ϩכ3%;\{8n$-¢|c,vw0zK}l( du y7mБK:G*W "}OPDŽ]WS4Bv.ghxbV8s,.C_B._;ZWĝR/+ 65ZU!GE8OF}yu>M>H1 –ZPKbڭZM.^`>?zzXڌ\ҨKi4y3Ђx$ Cp^*b$ ҋssh# ?|?ǏX__j5EQru2Np4GMFf #(J. Zg42auR P5Œ!$ $Y=@ƂvF\++MH` č aXuj^y7>zMZ$Q-A<@YC r!pU~u)i3fIlb@Q@Hy+  S9 QU} Yau}Bn>"8''=ҴƵkFTzo|K<~ZW_h4X__)$MiZ.x|>~QϬq#DPbt^RKLf3R#OT@mI´P[0Xc9::͙sf9>I%4KLVUs C E4,tⷑRDQL^x(K$N@ZWmB1ٸK/6!a U<R%F屵j!r-AhEB0|V\>99M͹R\<7YG?:_Bkو[Mf͕DUu9(8b1*$+vat!'|)ɌzS$NXo7hrN$&9i̅%t8!1BPjo|JkYsЎ\[y 9##8#Q$h0P;L+az35 ⬉`&i?xpF jiD|:d@S&!È ˵Bbg3LW=-QdAX7x7NW>A]0AFrvt $bLqFվ̉Pu'oxVr\ac3ʪmyV-n@LMyAm˝i@,212$!f|8A7(DI6мx`|ʓ1hP$Nyrq 6@̡BɑjsO^`&!x󒲤YQMkO޵&*wi\8qְF[ g*X]os gѐqo"RPA<8VLJPѭb VA ( F62/ѳA! o[o1JHξ'Ic5''<;1kjd+R)|:i_S8qf3<4P*1ib=uJ5zd-]fEHjCJA(XqѩqA3O\} %Wپk.A?, 䬫K Pakg{uW\! ]p=~Ev1l4$II<ωˆ[`|ge2lOk_ Oc6SkI4b6'tjuz '񰭣I40RJ(J[вZtq_CP5Nq!B-YֱɊj+4( FlEeY98HCIIFD9K[re.]޽OAH`8!<|cRk}cfqs rV{qw>s>s>o{E_k?~[ -L[FdVf%jŴ'TDTb>Վ[/{_vc iN3NwpH($kYI5rLDX? k/aO5JE" Pg]֠%TA숐BiԹz2;1جH9wc0+px_F!Æ2d҄,CF!0qJ5ڜ+h/2B>;b88N"pb>Q,BTQC_h!n9#=\*pSNQ}YqO̱*όRh*)}R-v )?_5Z2žu}KCTc/J:NPh9* r* ֲ,,)*NJ&=}f+mV)}sPǻ z>C:?T'FH `2BP q`8טvzLX*(ʜN$k,H_.ĩ;zEg(_/%a tZ \t<'>Nݡ]n!F ֠)F;" qCbHr/8٨׉ŋmKDZ旾‡o![7C[ C%S+&;l}unؚi6/ě9{AB,T?"i]8E\\n2)EŃپ-!AJP+-D8(F(˧ أ܁Tn#zz#C)*dTb);2LhWrzA_]Ŝ +[7y4#nt8N8pαmS#)&#r?{yWoa+\Y"K,0ҹ Ϝ3{Y"¹peJ1`FSg_󬠳?/(qiZ6%?D)x]A`8pEɈ($#\Oٛoql___|LeX,Y[Y钇>guCEЬVc:wPHs8PA5rWgΚ,jXo&sј0T߯MEcaQ$IBc,,ew>M0bq @L/C_\R~HdRd>)x<99rE_c~yN,oX9TY Bqc"KJ,&I,DA8 RK M{BA Z}X^y;?}II LhXEc# #)yAauhNpқ`!缋DwXOt[FńILRh3 hfÝ}"9_yaɣ}z *'t; jjX[y`҅ ]XJw,89: Qkn cdz>>jlYP)F{QG!R(0w8,_M^ܼ)ipNgИFT+G^DIFEX},kI 0%, 58_fo/,OK<2+*8HAJjeA] A)_۪#!B][?ao9OQFI"չ׹DIA)qgsn“>J5%%H*Jko\ªM, b1F3Ld5 )/kQ*(mw;ȁՌG'TD P*[_7S~0N(#!ã}G{$qsi.HD׶-_ΰ7b3*>^ aҡY(tAhqbn6)k0 s)xDZ*"dHh~G~rNG i35^\k5R|w~h4bڷyϸj1 4s 3@~77Ozyڵ%8Dk[]~(3G:oxIY fXxʸq<),)e4ތ(qtܧSϐIǻ}֚)FlNk $BwVBRh @@x²R4{[`'sg1݁bFE|th0sGSf9i0 J eaѹNJ5hffΉ~L^%q#yHZʥvKkM7h7PI !3d@dLIXk=G>?^x׷xE:$B1h!#z;$<|фf{47YW.O..8N'& (a4)uBZ`BMX$r,Z[tiNTUV/fPX%2Pd/(%r,,K4E} t.~a.Q, pUv9 eu p)fsB#D'{t;m Ii6L'#aރ<{̴Ymvh 66ٺxVbrM֙ln_FŽ tYV]ڥ[p Zc@xozE_cNř 3OOJ#~S¬RKTsu#F#J[潾&"(@ ɉ 9t.mdăOmHҌOz("] $jCR% Hs..JTM;'$R*00"IM6zA>aޤMyo1kaƕMVzH"CvB+7^`z !@ \QJ!mk]S&MZ+ƥmҵ R~|vwvir{Jgr1 YNtU^Mk$&hLgpj>U 8$Km Q!Rz7 E2Nb IP!B{I, tio{aY=c]N.Z2z $B!:2\Gަvڕ-GlՐ<p!{|<#\1h ~[4Z-\-~;C~wȴFVNT((pBpSj IDATXeE/1G4PҌ GCZ0wk1*Ɔ %VhY/_; q{_7ٟo'UeOw_.D[Mi ΈW2y4FM,Cbܜ|1LJuCgO4fF2 I0l&UvvҢD;-B1^}rzGwy{[t0G;7$YF$ʸet?.=ϤQZҦn/J|Dx!Xeg6wYc ^Jm %B^z.]{!*KCβaI< ,xVB%BC}z566 4!0"1Q \rxrBi Gsp?!>N/_oh9:0F:6ne}R@>skC2YK^'SQCYG$$i䐃 lSGa|/`YX[e"gn&yZr|rB>[]n\l֦ڥ U "c\P J5@*ꥦ+yW6l[/.xfkW?" kw صi>6Yi03F蜏|fw*ٌ(H\ aKGlQJG9_RB" RRʒҗgw<{6.bXt%(f),Dy&u:(b2#GbOp%MS8,5~ߓӌZNJEh:g<#"FN0`pC|by;{|g1XHu/A'|84ZYNDJK h)Z~l!B "N"~ɂ0 *xZk(je#"8b2,E6)$FptWtfcV:-0z7>O4M6>Ϭt'qeF!u֢""B <+- 2[ ]Z3Аs!|||~s.~FA{ㄬEEH%xbJZ޲j38:Lt q@)P!Z$\~#>9$hm~)Yo9W4~Hi|W:ܤ3 8f\0*!TbV͍M5.\`0sy.zt:WZ-?Och # S :hm_6õui (!#isfmspy kq f[Ԯ>ؓtu[lwWiz?L P[JUϟ ""[_x7lctOF8y STxPY2+w(*F`]bA0ug,{s1g0rzb+)/E+y*._h)|-@O9'1.:MTl+\|%[l7+]&.KpDb'.ƊsdB,NZI ݺx}I(ЄnscjϿ({D1GAXt#pi&v^@Ov JFlGs͟ɟm6/=c5!Ow+׮ Q&Og\ӈG%-Ž6Z-b;bq 3-qHN!D)dJrip|0 7cukԲ.Pz7h5X"om0x;b>#|{lt6AJ.wxmsuŰ!@\xQu% 7 O=/EF=bA:ۣYdjxe[qJ-HтJ)a|lEAa4_R9&CnݺEU O|W.hԹ/E9c 2'(+ ˜paqLӠn""Rsm(sMM UP[Q٭$QG}Y>g2!bkWywGo{ᘹ]N"):Vti?YT %CkY_ˁ`NY±SuUلѠǓ9::D |Df*c6 h8 n5yEJbLA(f2p||B)`}ug6qk[>cV֥{LуNHh!nzArW5Γʥu8Za!VZVc$ y=ƥ!}%i*]b=~ w6:Zohl:(r4#Mc +q `20E_{7>|:⹫[l6.sN*tQ{6yWr .Bx tq,=8=F_&۞s<:1xXŃ+;\N,Ӡx؟/L PG':"4bҐ00HeqJ 4X Wnd0-yV䣻\hIg B[hGU,I51yYlPŹTJSfKtoꮒ0Gǔ#dQл)Ӄ#ZkI)r/NIYQY2y'4$o|ہ~7:Wؽ}qXQ+ XeUe /vPTFq__=(Rڂ B\qzq檨}ۚ_*X_}SJR\T.Aa! i[5{"J)@BRoPs"Je d}KZv-I:_پ|h{Wh-.H=bri#Gcbi '#a kdFDL6RQ:';GT&ܸ~$j0))yx_!::(*wRl2M)ou6Lq,@0mqXt#  u)@鹾 ٞKSP Ԓ-JRowغ|*aABe|E+av(P+tBap|G\^k%"c&0@bɋvJ:l8yQP_Y|BFQG*cDZ HÇwq>Yx7F>Bݢ?7Y`V%ul9GE1tBaSMi0տcPZf!IcsdqH(Tp"4c"85Lu|:LjIFd˜7y^@h/n3sTTvH$!cd夔R"ߑ$k*^!$5F9Q5\-c 1ٸ": I0A)$s$eW)뮭q|txRR%: ,D x1e1ܼy^Oq+SZП]AXbcձÒifunt䙯{>s>s>sטSi37~3fR()HA#O8k/!P jl7&,ԂDXht)O}aJic&S&M +VBKMD03J!(10j5ҕU:K7/sp̓2qEA<I2ik m e$KlA5Z8g)]$3!Df9хċ]5n|j%6Q:E9lH#Tp*%t.cZem0̌_mlBbsskM]1(  =zs۴j-Qھ/$׾r[OmY^M%-讟9s&^]Zr)c?pK) zRDQϥb,9:<`e!{{{XkY__g:2) O=sfxڥ49ׯ\gm}Kym&yf).g# 'ߢz!ET }5UL <<|>s>s>99]tK9`f~y*x?W Zhe%͜+mj& )z!xҞ"00d<愱$T(%}`5Q'=zRɇō+ Le--ZE-B [#4%juXz7ne#&{1ӣ]ti@ȴGCBВ8IJ_) Ѝ6ERN }ʣG7Iar?M J3 Aǧ{JL厐>q'kp:"! ф|~/;Ϛqjy)/Htx5 }GzPh-rK'*{{F=e(Bx0._`99޲ ,w?u4Az 1)y0#T/}k,czwsp[YӺڷZ)S>a+#pzҠVyhWpYSM.V,Ge@Дx( BԑS !,j)Q<G>x,&ZOyxs/{{=IgzgMWYt fXJ (D1tRH+RؐD)H]rK-%MJgtq2tpSꮩ7G/r89)vl5r)/&gbD_+CSŵRKby{CEkm PVuEy4,myRḶWBJhu g1q2-dc0Z2jsaLUZ,9e, $B@F1aڡW$կr%ZF]PIQgEx1R *oD?k=ZJ @g8 5e1E2XpتS i-3j뙝0I "LA(tᅗO9=ʍQaBUdL o ,0!)C bh{x1B䋜ڐNd6kڭ}!k5lwڬw:cJE]~3/OEJ\67u{VsլZϣ&8'mRtuLi? \Ƙv$I x0qqt=m">)mhuHgn:7o><ojBU0{?{_-8L(E* t{ժáDJԒplkQn1H$i!5 5>>#iks<Ϩ˒*) vYfg410Ace-]Xbk"Qʕ|f3:Aǭ$/aF̓R6\C稪x3| jG?|~mu b.b.b.W5"/9~ /Rg 9/r]VIш>@ n *u]rSJ`7 X7M|EP G0$$1h#cA6[ Ԡp:G16f-*leRSIM)!|#d^1wJGjd%2ݫs>{LF#7t\\) i=i hD *Ngv6+x%#M;O]CN us`K&E7>'<>aiW9`rx!€81Q•/<'L5kikGƥ?}/0"+%R5\S7,?߸ΤSqLBx~mv It1[7^Zͳ?)_ jˢL!H ŋ!JJښ|vG3J3V.?z٩^c^7izKfsna>sۜ޻ h Q2ұ읬 IDAT.Wdsz-Z#szxZ8{cDHl'X M+1[ouY uZ/?cA"n+rL(y?g3G1-z7ዯ\:,W\bC*pA$غ`wWF*ֆ.H ZDa$IJ"Es;l#n] /"ӲdΓєiQ5(%b. CI[5@6$PitcJB֤ -p.|PsBzfJ*$mn0mQ MPЭevzBX s,K(!&KZ5XkXL'{OjmM3K ft2c,jZIb^0tyY$1f,&!^v<1&/-Y^XV oPϽS c|K0-0\ny5QPZ1 E6?']4xq'B ZZW9|EEDG`, TP'CdUR[l]Nڨ01*9Abarr@e "Ҧ Jjq8Tp?dV$I[n]퓶:S_FL&cB1y^#ݜaM* .]/'j0gx<7~Ys^|䗥#Z6xqϿ@7Mxn' upIxOADt{s&+$ihF092Xg'2'T0ֱ(JOҥ>$m9R >ͱS 3,QZNNN4>v^bm,qr f k =c}mFM>6YQ3%?slH))MyVj|3m/7p ;b.b.b.W1"/1OY}JpMM2'URq`yyPۻ.aMhZ ^$~ ^ "R)1͉"+llUy&d(˙ZiD#-F)z娶8 UUr%ee.4(oM,5(;Y7eRqMW,5APA+5B-,7vefBe& 4 PR<O׉~Mq82)[ R8\v%v]GA0sTM<☤ѕUIV<6ƆtfnMVL/ʂN\Uǖ 2J!I68}<" =ye61B/q@kA(qH)#/C0I=Ta /*AMQV$d^? =b=(pCs>ٞaRY=$(Z/|3.NON0t늓cƚ  ZR hyZk>Io'O{^xo>p}~[p7|ǏN(NS Zc#X% aԢb))ˊ#׆QhA,:*F8p! yh;n2W^! ONYffS$a80\Xd29:>Cm eUSUNљW5< #)$c:mi pܾ_*Q MYֿ@PX~+O)c3*6yaO_]\\B%,vlvh<d:D4Nxix}hى #H NxnZVeD, 4N:Z1B %N8T,k&O6 11jX@x'pRT`&/YE#{f1e>Ǚ W`*7(%1 rADqŘ% LNR[Gm3 S3fwkw$7&0QW=~ݟ}6e& \:\gkw?⸿9i_at8Ô SO)$ˆtg}Os2㑡BHATWy$]o~8 >W#0JXkw8ZV\!5b+wg J5&!5Bxt3XLY+^9WLRT#IkMB r(%Z d/n#O)b̬x7pn~W_hœ*K=m{in7iDGdZ]: / t\NVDiڴ Zc F)v7|r瀍.2Ԣ潏?Si2 o\ƒT [7:7l1e=a ڕŜ|ID7 p 7~kP`Hg2Ąk<͙Ah2B6Qpgy>f91!JVjgTj,hBz)33iojAjAbkcd4z+h6a,?΃\roUR[K@K AyY)WlXwxhBUL& عt$JWg%W.]"cFdu4Su`#*SyAX@8"e ׊XPksep-# pZq0tStbK’hd^r5;9%!:pq *ރ _0P &'OXLO9xtN%mzqe km(-~< v+ⳏE M(/W{:=Z3J0:=sz߼fD32M顕L>c[cm0瑪q\e6Rem(fOO*p|l1׿{w &+CʲIXSJ[edX%q}1BitQgMM](b)ꂢ,(Ka3k.7Lќ< ׇ888Nqm{= `2q I1vv! dc}M߻wJITac}H͉;)"l- 7wykKiÎgulYkYRdv 'STfco% ) q!Ū],8s1s1s1yg DEl(R 2@ b{mNH+4xgqKWYI'Nv,m{(-NKYs-ڝ!y6-S+BRDD.yUcMF,O%T^atL͎v5H=ٸit \a]dmLN jF>bT%3'l^f(I]p 7^ʝɈEd{]SNl%įowh2oC#y_@=NF@vH wIq^0,n~uD,>9j1AW^gysq Kє"xPZR9P:!-8 ^6J& >| .S, Fі%P&.^ emƼ|((7 ƕa8^PD㻞G~ȧ ]>x1U!VrĴIg|Rx`8`66iQq.9 BM Ҫ6J4=ٸ X/ΣU.e&։:*4 0h A?*TX{ B?1:"ZN(dM"2v|]Mk1 *ZyȀ uXcVٛpic08S2a~v|@Uj!}*lұ $ʲx8>7H<û dCPeiq~@nR<_3IO<8dwE;lDO9 @ }YWTU|67J@VYƳ| nO6ǘbBNO]I`z\˩˚tv e5nS. d4[1/><;;QLs(NhC`c:8f{}()Mj:cH:-\L+mg9Q5{d}jG-g\pC8$HVDJ9YNU|2c=F˄*1nElJj%C41!$ENQ:PV"MIMim* L n~;dyv)\5Vk*j8k(97ڵkonN+\#HIB7NFYc =EQiJڵ-޽K߿,ZK{OQO*ι%˪b<iwc-X+K&ޝE {ruy/Ǔempib5𘍍M8fsc,񨉹 AEtm38<8`2QySjXgQR1OW:$i\v*M淾u`#˲Uk<;Iqs1s1s1B!a'x1OyO_8f 2 2Ik̏gcu| L˒]]g.~HWv׹SD-jJhuttxAO~LutDa_'.]'3iMcswSNFKfӢfqټY"_-ٴ  &~ϾgT{I‐Z3 {SJd+Rtu`O lQ)Hvn@$vF}&|?8K,3j[)(IbN~gርL#\#94{-&) lDzgl50lj<G$T㆔ҁw8,إ0Us" 7Nc!E=-^8NxF>SڃRtH5n^J?}ǎHKgDq(L~Ŵ,.ԘՋ$sƓl9YLJW/3tm=\kܹ$H2T&l  '3'j`<;ŜlXYTo o#-٘0,hG\ ~5[^z7@F"ˢklxyS? 4ߢr<>sr2L1U:EV g>9a@J !L&3T ^}5J YF' #2T٘˗~:v)HICY6c{*"/(˜NFf9b3$8Nv R) 4,ɤY#t5^`SYGԀ yJ/(,9Ƃ 0IxD}*Z%ZM'luٽasBa bzmSO[{Ay$JtBS|W;-vޝgC~<Ϙg{0" #tr5^5,En,˨$$ 6ocZgN88g|༧6QJ[ TU'O۟of4 rCWo=Yۤ4JSJE BY1{I6u+l6ZC=@PU,Y,27k&kk=ڭJ Α)eQdt\KY9Q/*L8ڭ}88K_@1Y"*f}=/Z9_DY<5떼TѼ•ܱvyع0b.b.b.W5"/1bs[ܪ@Ӗl@Ta}鈒%\YapaBtYO QNAix[H(x)^!f:!֊(Typp e)1Qyr.Ū+f\tE~ k)8&Ø* . Ήej7sB~6 q'ZMw{+(ނMt^1-PJj'')ǧ#ZA3vJ'Ml!5-@ $N0x)2,H`LJqQ bFjxLs$HƗ>pRy ݿb>ѣGeIQMK`~m6)ƕf;+2 tHgss+W.qzzʣGt:,fӳb,58w+ߦ?Xmf7,+Tx2 ],[i3g܆wx@[1;N$qӓ1Uws?TUI"ђZ + (7RԆ:Aז;m.Egܞ՟/Y ­5ɪQxriRsM՜ Lͅˌ ,9N,VM3Xas \F  UWH%4Lf^d Ig*!,aJ1~0"+')2 LUc01&!9E]0&|ރ0Rbd߽N6YTcDqD)u6![XH Ը9Ԁ 4"^($JB(YN=cFG_N8r$&C QfHL\<69 wѧCгxl~'D'/"C=ʷJBP)Pr\A 6I Q,g)y8Y@55hq{/ˬ)d%\LZ@Z S,1&J[:^ wAψBt Qou=Rg=SB#VC ZSe*: k$9t-/$ AI I"=JD:e˻;mv+iSְ+NSI gF[rEXcAtS:|FQ6B9k>k;]:jh?9^q4e]᫂(PhB*EJcy!prV;YԒɬ湤h"K;< pd1eckf3TPaCr;>uQ_c4Q,F (*S̲B (l)<6\P)@k%H-ז{dslA-:uvap~)pQuu5P=Ms{pi]B)YE V:Ϩ*ipo -)]ÈNJ)EU XAЭphm |;/,K ylXJ5Qdu]#$cE_~-#M%id2EKI$q7P.gNZů O[}W29/2/ϾSQpxx1"n>E^!''#a߭R"yj#Dn_, n)7~ q-b)cX,A@YX򬤮T9RN8Ƣbc}" ;2hMjֺ,;+iʢ(ҔbX~g&`Zugx5ͫ_n̝'/QJ5s"Ys1s1s1>7b\2A"D8e˿U! qdHո8(mv׽q9I- a@ZKɜ'߻vC>9!WR(Bmlh%=łX IHQe v[UgIK><gH M喋qNd B"Cz%1΢Ls!n+" =N{̎FIH6;4ke(>sICzZt3:}Fv\5~ ;?k?"1//Bb8d.(GyE+ 5QvӹqBXP 8LfbZК//tc0q2.+l 0g|=p"W<˥2jgz{fAݽG!{N#qZ;IZwq?>f2 croB\S!ZN݁KHb{_{&ˮﷇ3\*@" ԒV~p( n/mRSE Cjʬ|=a#D Y{=}^kO 4RFn .(s{d !됡[(D:vuA-RfvBh$Ъ@xc.4Z+50?w7 E&9{zƙA:p+)P:(8Q(UaDt4?'0Oxq 2g b- 9o\<U("wBG@+AXaqҐp> 6BZu6%'ŜIć^իtBE@#V+=.I|{d(Aϻ4ם_u3zyk4U`Q C`K-PINrbW##%s6ҭ$,Qc J6QϴƵk=e${GQJ""$75~7Gqt^.Qֆ$kI`KP:qONu4r=]Fp%g[ :I عy*/@97`jFXxG0 />:Gj?w} ׀)%޿XJ! vx!^4I3kh.ccVBtm)E YT~?irw~wOяޣnj/M *v 1͹+\ `|+nJFXIEʹ()Hu(ND(ZZ Gż&l!b6CF#䔓S:y,Ý(47)}s .Bcb{w$!2>D4xr.x%("\p2s9s9wg.Eclѱ"d)^j(pHiHf6'ӔNG#ltxҵ)HE{"XDP[]S<9E̟<@v :<:z+Qf3%^4:CL"ux7tI:=pD'} >oWY;Ì{7[|X*IquSxAa*g4h.cG|m [FʬQ{YOqtD( ˆz2%Ьfd7[ NNRM$T5gA1{`'=4UcZ)A 9H$d]$juHx2:L8^-tOr0]B ;~K[;ªzg(d@GƝ,'/r}|ъ|:WD1=zEyfq՛75IA HeMDjin,%I"$)x@鵋!P(];.ADg] W[ㅠ5svKiGj7ݔ߾)'5<÷i8^qmԣۙ2-e1F9eи;?>b:A L+^7d& )0Ǡ('i\I<˘-̋%5!p6]y ,#.9yEolxI^;TЂ%ޔDj ,jϼl8K3}uqb]M*HTB+WwXDnWqmo٪ VFݔ\pwIJ2 U mܼG' z.Tw+^G6卷M,'H6u !M'pU1ׯ^%)rU$MR l]4ylE]-iuUTt]vٲ zy+Xi{&S$MPZq]|-4b=;`}5$b{{4Nbpr5,?\~9O>%s1>B]6jύjAwD ("׾οZo>ĵ@5o$VUC dYʉZÙA6yՊɄժ )|4F'!8,Βś_*l ]{@x0MK(gpuoe!glJHP㣰cH/gr.r.r̥L9G.~T͕-@#֮-v B A#2Nlāe#W J֝7b}"_q+Pb2e$8Wx^Ga9Ղo^7mn޸)K`z|g| ?|9M [H5һWoW:EA$ȴ`ԧBY.KmA=\Iu$%ZG6"PɀpT" Q5-SڅAkC}kgK~T΍pTG  "O)mG?1?!_%3%S6.VߥJ9"Y1))˳'^ltE*F*M:!YG&dB!Hv)Id|j~mjٺQ誔 es֞ :h(-14lѰ=zB8 t ?X5!btԎ+ Ǣr)Uؚ (MB5ޥ(RHWRIvDts +$vL{+hªz&$Zk8}9Lp8/l(ΰU#H$7I"I1d-Yr%)6 `VtѲyX@D>w4&;t7(LD3q|Li*3EiI4BExA "$1~erjO5a N`$* OXiV3/I.Yd/hsk 2Pڛ(J!/~$ceh,*ǢT /I.k7PR BLF#vd`;:;+ 'epkC")Ned1 1Ap2 ˷U6o!޽@4%*HpuF笒 exkN&Sn7Q!4ɔYYR5XF^c:;;7us YG) х*E<J =M*q`UMe=]bhZrg@a(x>`jHĔ lz{yY29P k+)',V-#";L(ihXO/%UR_\Mpzzd6%t 8{YR|YcHu/00L2Qۆnk{mohE\c$ ~ǏB`kg`1UQ89>eU+b4=pա&36꽏hy}ݔÃ}%em(ϸע"Dk?^x!/tEZ!m]ëU45GGG5M]2Mc<}怲*A|,V+R0/N#,ͲD4ιs`Kt$F9A}ֹ6Å8th#\T^//č۟YM6Ms˹˹_\?Ljs'f D,`RǨ@*,%%ZgY@P7ST17렞LRqszƓ?/'u!JHp$SՊr6g%wNlkl],K69,avRGx{=t>B4b:cQ7\y(!0w_{OfdU9I`G~FYy%UYd1 :GgllM bŮ+ǜN4Mvq;@~AY 3/<(/g ')J F!eYKs8_ƻ  K3By]c.~_g\ιsoú*aU[)J'8ݣRXkG$WZ !x XS}5ƃw9=>;!|1J+0L`Z(bÚ(N BzbbKX.lv7s:䃏>F8Xhuёcٯ/ZSo3qa: 4<֝ѻEs'gg,Kg[T!^3sBL!4ޟw1/<,QyMmok-J_|EWQWɗs9s9KW{܂ BE@ՒAĞ( -Ē}2.X~ۃ$Qh-Xb;^p8P(%ʳC>~m/Dk,25_{_y|4@ȸC,FIJ5ֵL5gspN2P-O0e& U\6=Ns[70ɻ)EakP'HaHM?Xtf76<^0yy>#yM 'f`a-g=}F}xoU4{6Ղ'7#6x6C/jo |m`@RL)ʒ7&r6; bbpO[n0il+3d٧XM&[1%JHbZ \/6F~&Vĵe{9֝ur[/Z WS^V%xt\1M$speQnBV \ 7-yEV @f$ZG'}EƓdQ1 ƕo#ۤT!`'<|$恳 5Q_ӿgh5C#8A4*oE{.KJHIR₥5!rpOY$#H'$wnqmBa1֑%g Yd0;z# FE ;dOVolƹjz J@Tg%[;{<v0uMU%%*gF w,,JP"crH7f0]xo=fgUQ]Rģroom言S<%K~mψ1 4 XOa&Dt1iAi 7rk $0єf즸 C<'̀%]/u8c`5 >[/9=xL(>OEQ3_,($$Ö LJm1I|tΠ!Xq4E).:TxYl1ҍdۻ[Ŝ^o ڡ.%Ɨ/њ͍ ƣ1eYo5ޓ76:$S6q,*1#t$];'pe%>>.-ewaGC^{`1MEÃ#~'&PbYeg{#)MmJuzW?`(ΠU` d[ޣtZKiA{њ䘏%;ƙ\( _smD{w ag-\S..s.D j:yEp\r4MINBbG&,!1U:n,O_O#:^+yomnspENڃu]* ʺb_pBE;LGkՊ@45?F8Gp6_`/aϊk1M*T1!s̲n0Y5#D@%{;<8ĻH^;֢vj|IUuZ%[;/xf ,R:ilSPUgh4dy4bBs **)^opӧϸz6S>>8 팹26l5%S`|M xIGhIٜADItXp%OG'?}joc\r9%ܺrT%!ޡj_7پI$aww=m xsP48΀*is k&V|\A{l}!FlƼ V' !A*jv/MH XG,mh0ݛKT]qm2eV?c7_cc"J D?xl\[( Bu`r=rDpOI'_ qpc|]/iBEAj"}5#K7|B@ٮc垦1t:y+2(V c}ij'Oϧw9<c ˢhc[N"BHEQDT#2QTDUͼR.0\u[ aΟCIT"VX:t,|c/iH!aUTLfsb6 Ehgg^{~\χr-yy/O !H4.ݫ'ps\˹˹ͥsLXwTY]O)l$I*RRf ,iP4MHD*΀x#;RJ RrH2wԋ~2!l9^;mE"+QZNΐRrU4)pJ"DiL4B+T"f^ 譌j1 $iF2JȔfYl~#I!;]:f(cșL_% l唺2ΦT9viB䤺Y%olpZLtj<])@U\< =o0Kz݄iF2m8;:<C5IPZpx.붱Aڎt{TRMʆɒ~C†q`b /ISyR6/C pћ6ohV;1᳣)i9>vr೏槌nݡ{5vM9;zɓ#DKqTe%|ͫb "Di4cI["tF1kdT'- :Qk˓#$asA`& wZn/i)?u\d[hkh[IXћ-trG Mݼwh?D }?99e<s w#I2TA8>991 9VZJN B[o#utz=Vp^5eU4g=AӥSUuO*`$IR DyI5Axx.XS%b`li_u 6@ZQȗRi+u#Bp|6ecsgZQ<g\\L $lS2ɿiu&?c._Z>BT ySεPW_~2/Fҗs9s9 KW#bd.D)F\jg g6Iu¸ӋX*h>U`LJm\HPBKXX`KlQ ]wLKf)eU4OHM'Id\eê1>`T z $. NIW 1:o>V-7FFV%%z9o޿Bq'+KfϞVKsD߽]c ﰪWP:3?`!9',*&WwX8􀽝M:߸{9˿/ ^t-$~ JH#/*^R,K:4 1ǏXHcQ>~kL29$Iˣ3|?տ3CHi!Z؍([ "6c*YcxdNcYqVG LP+L B6޶+t~Wͣw54rPO>^>b@r>^*0s,yւk 'ܿ}~ @2d/{C_f 6<1(XAwl9%$p=ӜN Bam}nܡ* {)QBxl mU5yKvRc@ ϵA7r׮UC]8qc;;D2%cQ99PU*L.Q)M&OJt"t{+KfDP*)UtK"JHneQs<1tѪO&$I TDz$g3 8kp!x$_v~D |Jq5$`8޾ý @4xH̷hy BhR y7NΖ?3փ]vF}^B{:퀔h)<=D"mkjN]^٣8;@UKLbu`e2k=ł,< DbR9[ UG JsǛ/Є[pEۚh9{;{ut>+ߊHtHEc/puLa\÷=`bƛ_*uPgܢHn,];/vN38(Cy^ň/Q ˹˹7"1Ҋ[H _nn8X><-1 l:jOTfBApn" R(aڅhoRWq[E6-4Uݐ9MOs?7o&3?yn~S1v5kPB@gg 3CMt!&6EIU&MC%W6yއ3K1lM1 {G n֭LR i\j$R |xgK,{ 'SdӐ:GqxYӿ?8<:hs$9rEyp@P.y' "E1G&5c =*$^{|HA~6Gyx"I*g UX[3Q$Eu7{cɕ {m̲,C6vlY $-G7J0vLl϶aӓ岪2+71zqfeЋa/yy3O<! :{a!%x>r2{~^Vb.P&BKϖ'#oPk;8aeHm9TyƵ~6<7'KT0@cjM2 ۢ]},B*:E$R_“_/>'~IYfkSOGN)fNƱI(mIL)wr5! IDAToL駁Dh{\aZ_`£/" HaP@G)n ;?wM`jY`M]=diĭk;Jl9kt%I g)>j{%9לFڑK7_?߳, ޸s !v'A48[`:kG94!?:ۦ:XW6nVb#7ݺeX62E5>Hi׮o1Y2D WH+hɳ|μ.9#VM3T1u[a"|-}t 10a!M/]lGkhŎ|mvfAO#$,h骡ӭ ⃃ͻx{;GA Ըf!~zB$=I*T! ;$!k̟?aY([A9?pa) 5d_Efc+3$IN$*Tf"tɺCjsb:{;(9ELD5_F?+o)}E4AYT(A/u aI\`{xx n޺E]Dqb9G-cdYFKfqa!2ip ^6Nb?`Y&ׯb9/xW⌥*8kp9(bscnX.Dދꥸk :%UKƺV`}}Eė~**đ"R$fR%EQ`ww"޿ 8bIY1zxM(0) ND(DK`k#DEwu{й ŎFeG\\\orD_gk+qͷUi[76&l64׺ RCca{'J^}@%Vx\YH . HQK C*p`XG$R+VLSg*+:*a;fsfψ'5n1=!ZMeD8$|NSVK*'$Qzٌ M2Ns{TPdm7L,ƄϪ@Վ7ӒE1yCS%e^S6 ([gow[9n;_P8u5u +'XJŜ5?~~YsOiv0l7{PZC5>ڜ٣".m G^"ۘK[$ ??c6Pҙ:ﰜ6Txt'&ln(O0owFɔ"sZS%#de#ⓒREpVcr&RZ6 %u'gݯu} :Z@BxER#p0Xb:T9t Z/<|)Ugŏ~Ȩr~ZS/rmS٘cfw l :[(1A%JH28:Y֖⍷7 ]~<=x@=a Txgȳ!׮j55 ILYK&SE])fӊ3>eR|ɇX/` h{zEF2[w]FRRyBR֒f8E3omH6CpئV 4K:]8Axp6t\S{A8e˷`V!\T3}qZxyIGN-J:rkM3AibPCzuDR12 7I6,+~?g\I20Mۑ:^hҬ?aD2H,mւ^G/] ZJka&Ib8b^,fdiL'I7D)8"V'/mp/"֮ߤ\Na˒eQP@R֠D;]&O_3 THiX1q[ﲾrLCٔD=.3~10Cn}W3MS{M>~ϊ*h"(<<;l Aw3~Ή{5ags]Eo"7ĝ\ ɳتaH)xt C OFoA7m ɶ7/uQS(_|v:U h>%h mϪ]&b\"DU=G5ȈuwvxP4cGBAJXy5RɈɢ1x% n Z@CwG|01GF<>{DDFZGvn)N*7/881L< e)d ;yq{$1Y^r5i9yc>CN_#]`[I4 Bzfӄq=h=Ic6beB$Gc2H0|m;5gϸwk? =V={!QB e4K/Kj@]wh0i0u-lR 8{!Zc[uY]\8V,ҒmbOF||F9[0LkkT2-;] p>tFGYL O^L齖Shgs:NNyHQ48t1@Z -7B6K㰟YV:D vN&AP" 5"666fTe3$Iq&nZlы#֠ YӴ Dү/i,-p~˸o$_r}_؆RcY6Xcyc>6?awg|GxHlV찿1 QOyɓG||`wo/"|].wĻ\f%~)N"K?+*^\\JF]"K݀^ZGO 7e]b!6H"P74+*t`qcJbE@ZסoLȿ_PҴ*h 9xr𻬧3"ggO\w-kfx>8hF0k,f|7zTǔ16BDaw6(3:8 wcz7!bLX3eS.?}Jytc:R(fhQ ;S%\uNxά [k|}K]LI܋5_<<:0M͉.S>=o>ʊ(~1uN皥Jq!:9fdFY;>s1zz@*n/!nw|@EiIR)L.y/!oK HH3Swn׿Yh-Z"S54k]뜔5f3ÚP*.%%C~w6_>[ޠsbih+A .P=\vRj7-%3/կ퐨HVE<шH+~JGvͷtN,oqƋcm4n/m.bnkM4Y֡X*ˆZΙCָ^cjdRA"\{\u-/)\r~2`GzV$q̝;q||LcjOiCivwobLpcH"4O|bc}^t R)RwC\~Az߸/LWb]ZC $OޮjjiVT2ݤnX,0sAKD'*TdݔX p *S d"|&* 8@ŴT4BN Md2 J"a9@() ͝u 13 C31'唸1 ^ ۤiL9q;9ISh,c/qخKDiqg&:CiYb=*X-آ(H!Q1,mYu|ϫ72 eوǯ31DZ􆴓um3)yxa B(t|ʧ){9 Sf,#)]Ɲ;?ƉYڥ\`M Me`1[PќX>;:<9LNqٖ6bӗvVl CDl'`Ci.͠=yf&GDkCL0ٸ}y>bwP3#LR~t"vqx$N(,%gLkb^d[ EO~-8!J7bDa4;JDHa^_pFb`.kh{`Ļ4|ώyL1_H&d/e騛` .^I<ɲ^v ggSvu6xkq m/|A6;^pZ*p}ik}<.Y0yꉒI>Q%7:IxM{qJ3ΐN53n7Dex\%|1u0smw7_~swlfɲ,a?aS7+_l+P7CWsAHZؓ I1Tk$^ hFϥH DB@x8H7h.;R )QnAvgIL=R7hO߹|6xh%:dLG(M вA`R$b{O?:c6踏i,#NSt)*޹NpkӔy|:f`k{vh5 ;9/ ʲ]{גDx,聀;mjtKI#t@||R%);[,w7ƻV b$HihŚ=ݵ,ҳ5#M8/+ʫǚѼX,p6-HC>|up8$#d W.ۺRxkkǏЍcz,>Ԅg\ZXwɑsV mD:i꺾nMS]VإM#B@θ- Eǟ|t:Śa؆^ha gggiR ۊ$Kzݔ ==*Pv:'';;Tִ𶠤Ys{6R-g=FJy!i_JRp}Ͻ+ϥkԾD@$-;hJpwBWsJud5㍥D R RxN QLbDh`{aNlռ(L'c1ӧGT)MS+keQ,k ӔLXx[(/Ō!7Q,LjbS[ Gt;)Q"R<Wd8:Rf 3dNOf$#D]Lh3lU :<$wvR7 vF}Q>" A#Sn\f9B#UH@"4`>>f7`ߧs~w!}}S׆r+9xDyzL3 @XW/! [/W8!e%"7QT#H, B`,"8t*F.:R3~Ʊˑ͂09=R$պjSmCY<>>^?)+iP^)٢l :fNxֻ,sah[Y,$:"Rc{IU׭QWsN8=q6Ѡ0N 'E?>֍!a-sX1i~o{g%=z/Z={֡ S -[q9.[dX[G!t3R(>Y,8$^Urt⿫Ͽ p{YS(}9"wc=JGt=0H{>MG `mnTPZo~%N?O?燇 Y8\q]=/u/{(Z3"꺾Pˏa%(֡Z1&+r$,ʒG%Ag qurY$q j"&IwAKIy %:Бjx׸y["Tg&Dq#=KPd.] L_DA+pN.lr"(Dfsw u!F+\% 7g ӂ|-p TaE.OEi[o 0̋%3~)-lj,#j( lmn1:;cЉQxDdqLLy!i2ͱֳXV訢jnio~%d5&I0~܅JV]hE .~^׽o <}b9'˲[M0 {LSwdiʵ{l -KR0/.D֭3DW^鮻=VB YKY>b{,~CJEc-%R+EIcU` du$*1A)ITumه\7Ot{,5QTM|6 ]R\K+c_u5M\c^ W+ !B$t:T_YosuD |ѸNqHT$Fe1X겠.WxhDLm>8]mE)kDA T"KG,["Ix2aVh#Ɍm<ۛt=:uEC`b{O9o*Jk QBHnӵsm`JDӅӏ>1zD.7OpUg?2x? k7ؾSr-3N~>pvm{SL&>tCݻaxߡ0)Ʉ.M߼Om:{t)ecY+Exl37+E+ hŌª%0JPBW%:l_,GjiQN[P%VUx1ŇP/q}t_H#f *U (Bb/=^i6ً Fw=^ޛ|IrYzlp!)Gd& 1dE$Jjhs^Z>G u bXEVD16Ag VEDfd"{什-"Z(8*驤RByR߼pdiDjںf#ٸ.d~ptڣ yvD2:C TJZ4U?W R*(>Cg[JAlmm_jt6ey)F낖6ڵ!K Q'6mlE 0-N̉XS21=yzj&Lap! HP"2 <^zl)4"H,̻G-󞾊"eRJ%qq$Qz.>ȅ ""tiUxݵ`4^iU|3lnhu3CK^&,Qt]b^Z J*em3"Ib"!_f Gg}v֖2'qt#?GؒvZӣzr#%2t`8SQLΘ!-h-AvK }}rʠl8VZ^Z>pLH*6EE-C*gii,: L684m 0G1–H%t2Hckh2cxpLZ;R6u@ss%NbIvwZa@s{.Ƅ^}r>D Gůu9s9s9K0焸 2M\H*9+k'3_A)*T%(Q AG /k:DL")>&ZLC%1+j ]_ƃ1NEXUJE8\٤81 "7 ꚾiox;Y"e9OU n/!UvB3vUKEHp "TbecV[Wxr hŊWv|]edp: Ɵ'd+to_%͍_Rp猾eڵ V6zn<;xpe1sz|4IO=͹cv)'ho_P|4=[dGBʈg \:j1PZ믧|os14nGt7_ͣǻJx'A(p MvT$Q"ַڒ  r64BDm.xcNPIA"Ewi-:K=RhX^`c*lF]&zJw4\- I:!,ol#Sp X/:T b#3I0*)2xV Ep)R_FB!Nl*Aw6?*˦0n! !PZ"ċ_MS-LqG&4"=h  qTTڊLxT<"Ji`W9x8e<˹"=LǬ-i if؆6ajC$,/'cz$kPIA+R:$CmmPO]Wt,YCU:Ry+\U3DkH3\KfǻGg1{oq8Q !gfBImQG1Ɉ%<5fR |Up<","(f!J%<=ПԤYiSRS>op168mvիW)lVq{{oΛxi֢{i)_#h` LJeIe>]6VX[f}}[/f{c͍Md4~uMa}H4 8*Ӆ/8:PZvAwޡ~Z@^X5?Rk~3fk-8XY^f8 +/rlmms++qpp@+1JqȂR 4a6`'ؚ(μXg4Khhj!ΣY$ H7]X"vWx2%JPזŹԆ\#V-uuhTsz֧,kST68z$QD`eg^ͭM /R{_G*eCsvk/ĉ\\\ίs.E<X艹gX6DdBUJEO #bsy%A .1YH4M0kQ!" "&jL2oҺrFDs?WtV3+AD1) 'c%#(B)V(U\D"E#'qtX][Z5Y;a܋QPi pH5%~7_ƙbQ̸LNa&wo|{L|8{lh$FZK.'ꄶwL T&3T!uQQɄ$NƝhg;ozM|EUOs($IhFq<œM0 .ϡAXDm]5  'o%G5JDՈ1 TG"+ͬ(ÊsYْᣇ,?|yg?$ab-ﳶ_"zV!d6iԗ0-iZ +3M$T≨gaT Fa' E**1Co nهYJ@c|5Q#u|ܺѡ7RאG;kp.`1;}q!?8\mXW[acN{F8i#lxHQ3ͯdlY6=nmܾ8Qm&*kVskwc<dptcgq B[CֱÔWK\-F,DA O-L 6R9a$iDAB k`KR`[L8[} N4"-U'91M,!I,1prx{T1TeNc8MdiH* -W1'$QZl/"[^ el IDAT']YcrOUXUe0"Q )J\9piƬeV 57V]3O>ן{}*F #U7_Z;]g6lHZ 6♐&9e`Cv20hIJ^qJ3+A`oy:z0+9O ک`s%k1NH|Ӄ&'X7EhqּvWv6Ȁp֕-1NƏ{iU7>;kD9LCH"#&IZaRXSRgc͛zM}VszO~N^Ӈ|%v9em5TSڒcs&vؾv!:/1wn+Kl9N ݏeQ˒S''q^+4b4H(; p\PBE0_|# E/7`qޑD T5(Q5c:)f1hG)f0?=%٢ xVU bUW!]gkx:_|/BtyD\I`)ԢR2RōW1yF @qWtbTDƍ/29zUؑ-$_ -}pa -MVނush"\5 dY!Ta5l;jӜ OZTk(&O/D#B }mM7YlɘMjG p$nC|O7jxmR7?`CI>Y}qkotyEߟǁ/+<-}`N&^!By~Zw! kjt8#f4 r@'''pu>|Krݢ-9L!V4h-V$J=PV&fJ0'(˒IB$Lʪ"Zv+amsA뱢UψA9b''+8T{3' /TIDId({4'{O?};vSI>/.BTq J^\#$YSA:I'C>o~&q q^$ (E:'(E!刨'6E߲ 8Iw䳒'. O^2LOƔe5`!_y&H)x YX,iΧJ"[OYՍn5=k=np=8( k6wi(ㅤ˅0 y9( '1 ҴtsttG8'&T(ۛ[G?b:-ھJQVDqg<ا8?.~,6BMBh1s9s9s9U̥OTߟ*UhS TV0%LLNW2{13*XM2zP<5Di H*HEm JE$YWyC]ae:%Zʠg<.)LRi\B iHR\ڦzҊfysN;˿x}nrկA 3_a}whDyR+ xld#PKC*&v޻p|B5)h @JML% 1W)8&c7wh"'C#QXT A"޺{LyY 11|[W?xX߸ÿ7?sO:yp3)!ӳ-^Xbf8jDנҊZ(܄qA6Bx%<'@ Ov~XwR/A_Bij ܧif1UY8rB\pT7 aWJ$Jj!@D1.)eל1qI)kaq05 u8kp]I98yNoikJF!2(<,[ZN4XЋ ɘ[+m?z@dY|oǻOȺleO0'i=iAuQ !.`M![!(|@ ^+ǝKl. }QSMs֟՞3֌Ŭ1 Hcj,ël};Db[h~eȢ7yq]9|9s9s9M3_ /5N*,_=+8*;˞(IYHnn$tN@ )HuE"B4Hqޢbyu~~Lct+P)>J6>k[)(FYEuxlfgDyI11)5aB'4^`CYy.u(r6fxiB_ FHRevWDM27lZқf9I5dm^Ύöˈ<|>WT ,ԕe8Rg}mnl?㋟/蓇Li\%B#'+GxV`8arҧXdR-h=nϮ2O"l4z0e61ݑH!AhQ t/| ::v'(( H zNY1>/Q.t,ySSCt^'ASxϱ#1dƨ4B(PےX-'%ݺ&U]qG|-bOTA-Dz"kJaIӻx㏖wptPG٪wK/o8Vn"M $dYE-^y-?)?{N5+X%'pHZx" 6KsWx/1Nb$N( *"\UP (tۊvMG%nZ8*Z ;D:o`ի'] C5Lc*^ *:< d̦CA}<9!g{0iOXV(uĩsӁiHP^ߟq'9[WR)\p?yGZC$B{t}[TuErmސ%qZA]e)C40HcʂBn(P:")2P:j<3J %uJOe"DR%RI'udZ󚢴'J-vkA>- )$(^@r<-ӿ1e>K{'C@ledmfR.![VH[Xđ'>s6;zYjǼz}U"p6r6)Jg9IE] ΈBPM Ne:1 ;׮& S8Y_")yZvP&Y|DX*5᭻x}?'Ke~w gZ>ø_r0xfwpUHoX]]O?,rVznlEXkt2rJ3\,thuz8x(# 9 ?EQ4@P:k[B\xqyjh8 d4RE!'1HD++4wAuFcVVi3Y18J cΗhl}Ә7vۿMSVkC__H 8(qar97/RorNRο>\\\ob.E_,2! 28tJKNcmY)vjE--ˊvEjS #3LP!Jc !tyx$I)W8Ag8E-4nlu\)vgНN2pV8md KǴt,]ôBa5 [d>C3(%BYKZ(:#YiYNw?FYQϏ2bS0*-a":ag_.GcـIf `H)w n~[~{<ɻ|_Ԗ;K])VxӜCvlnstvJwg䌭VXbNRM~Rr||=b29 +CZxk/ (w.Jznd,2G&4b4Ii(UOk\B]zj%0 xU/I"BFhd[8R-(2<"t ))4X5q>X,UEzՌ??ztJk*vd-GkGr1_M6n,Y·72t2I8cӎrklEfmRS@zHHz+]$H0>Q"Jt1)IitartEb rhV60C0jdp*J8u6X1zr;ciK\_Iu,SQi i5Spg|rH dlyz)"NVQdTcO"$iX 1~>x=|½S3\N#(D J"HAU&gOP .)<2nN3!5Q혔 BR%Xjk:BM yQ`kMR1MVΠ " -!4R tN&Wu]rUqM[`x:vlyf %8+J(*GT 5$D9ny2ݺhR0vu؜ϘW2Td:f>BBӨD] غ"r9988k/AiU"h'ɈJx߱J-xosp<8&Vեo^g4q6!CYdZ)+: :NJCl<,a:8e-G y9# 9:c8fsd.y_B,\o ?w1{#p$ȋĹ TcXk󜽽}dYFQx9Q)QQUU!YKߧ,KF g SJ)1RzdͲ^*D x6 c7W sq s.8 q(xa,XuX 1ޡ[-%Y1X Ti!AJ bZfcc!sԶfcmp@InݼWF8">{K7B['% Ƙxo;݀/J(.^s9s9K4ϛłJs}(/QBEtb [(8 ET!QqԕY:+$VkiJ> jXg&]]?~e^0Z:T7 ͤ6x'H"sd'3l —5RY!"p:Bb|,0ZqWJÒ-8mS疟><i}x} <6Vq÷w|j0{!1?Gƿ#~,zσϝ_獷7NTgkKyQYqZ:Z5+2riJr+m7nD/n6,X7_:,{p4%ކ^2\ ;[v #@nq IP"ָH!SJbd;µSTÊ;0hi✪qFDxA?=G|ﰾauHmY;շ>裔u%k)wɸv4ݿCkYj eE{9qę J-TDv%M]%B MkFI58LM=^ahdRV MhM|cഫlyŭB%2dZqt>];lܽƍ^ey<20F`j\aHW#PGሜ*᳏xΪ 汭?<ٽLU)I)+Ikw{RpJTDNE=(Tsx|ϸM砎(p,J+pzѓ'T5~x?{67vtF!TPN tSO$,aqHh@X<{Ce:wџz#N"TF^Y4aE]MŹbV2Dkc(:2CӢD9bi.K˓c>s;ꓖc6ۂkoˤ`=nDI=N@8P5VB-B vIԤ&^d _(eY3l*#f126ME 7=oW9OWh!)(s62*c9z3A,z7P/~փ AZ IDAT;2wфu@):i°%Bb(PkҜ 79AR`Lqa(DͰ`%Wv܈?%e}̛XPr{"CP$R`Nם/i/l ;g9>7 Ar l(6ߐ~#%YDn^Cy^`dX9?Q#dQDRaLRx4EŇ}D% FS=zRMPBX1i/7} ]`ߟer.r.r~s)qWFB"PhT(: p4ޔ'C'G`_y!q."B[B1lYF{_akRMw ׺V3]QYAnEsP[p68 _#Lp|z>v5;N߲P4xeQĖbL!'5KdӾx)q!Rlˢ7 71xxe;L݇{|ﭽUR0TeMYTUz78M͛߻pQ>?{̲tӈFtV5YF}'#>y:`T[[zon't)gGEXxD.pvBԝ /%R(ShC# V@Wdm4Qĩx7oif[+'@mpB:SvzG9R KҎ*C-'X$ItR6fxh{ wzccU]=h HAdВM9d[Cv;{+3<1fئLhq .4ߝ{_VVBa"#2_{߻|ߝ$Y.(xuq-Dҙ AZߚqᲤr(똼ڧ>~!?[Oo<壧}o/ٗ79D1+c2qeBHAaСBJLMQB"gK|HE;V|WRxx{Ӓ($=: NVn([GYVGc-B9HB֒g@ eZwpGO5׮\^B.{Oww X u~_೯_Ǜ.7.mp˴VPI ;Wd.hPݣ"@CJnyG0}!25v(XlLGҒ(gmx\/$wv0 ޽s>?_d`rf)Ny>f疅Mn"?-677x?I3"B!k0…AG cM#i5ĭ{}nCSӁũ3pYcR=WEKxzxT"@*Mg/75ܪgHHe9q9v+x;bTDekAk]SaA 1HUcKnߺE _vp\Ρ"B(beespppﳰ`8٪0P0 dn6njU=~hց?T8n=Cb3s. Ua1v\H? `RA# iY,eZڷ@j$UX4C+YVx砊{l㕗_K8#R0}zuTJբ_?ٜٜ͏pDbr ;ubPK WKȓ#Xo+QN񘓘 Aa!+Nļ] #J:""0D5* .ܿ$W.e@߻pol2㝛9E%H!, yFPXϰɬ?l\X0G$̈́"S8)P#c:FA{f3f+,i17,[\X!JZpX_鲛+ɔ_%wƂ@H(QʥEVټ~?#ƃ)yPٷbtx4~llC>a" .HkL#|; zCVN-3aȽI$ܽ$i4efDj/A+DZi;FGh  Ab*keb+iGPR :K1x[҈CF#tCgKQOߦlR%ΟgyyxOi$a0 78)=Y8V:yq^ Dy'1N8UAI&Z'8rݦ "_{ }n<"e:I2kQk “KVZr)bRrC,'}4'4M"]Yd6K!VD aHMqv(h hHǥEn?}AF0 W./m9PkB Q_py _|xLa :䳌՟?3|i?/9Oq* 0 NE:bT 8 hp,9}:.G{mMH|+ps-τ \},~"`ul%Az?q]9_jM;xžXAiaY)>! P'<$ "㫟2F-2-)JCQtF^!XlT XDtZUWi0Rx悛;]>75i;(KјVGҳp'^[B+ \9%/.lDX;PtXCӬRt@a-`<0[M{&&aw"8 -n;RcHG4/}$cguI-VOu'x$Yye\%G pUG֥E8,`XrYw\uMzif+46߹7>'*-,>S kus"Tk'|pP9&uNV2d¹<~1oyogs<}ڍ&8,NtROLNʡ}3(rRÄ!%Nk!ZhNR4Ďļ}vsn.*^OLOjsArUﭫ:}^yeP#!O8Sd%%IBDŽap8(rRATO"Ԃqs- YFn f;='y![]^prV޼z6'QX~Kpޕgʹ,yj]9 Ht$5QI)Qm82Ej6贛*6V(PZAwqY^% @<Ϲ{#.]H!防0eVQU9\494!㝂Zk999՜?N{控'搐ZN#fsxaIbA^bCAaeu%*DXA$dF 2wG ?xOF>!iΤ K?x&KySŴtLK LFCfYN;acĨSIu@!X$Y]$\Z"^n҉hѿ>&"xqybmp-|Q8w"YÑ{nƹ!RTq`b,P CXڸϿv/_/z(ӲݿGs̥/* 2_! |:#t9R.N2dB,MTA3;|qE~t0bt`qc k\  78X`x"?puV|)GUݗ)‹4 Xc,y1diNΰT@(UC΀5U4 _!'*rr4Ô%Y^R9y1ő'F+ݘ[]:aD|") ELwMkZ6*da]~c*c"#)\W|)nYh рxSfK ?ʌv,Xr>D%?KXh2 u($@X!eLJV2<@q嬴-\P#$34( ,:h-)q"t"xפI["B M(%(02LSas<MGq䄳8B#]/F3!Ob->,dh WBl}!q\Gu(A?su\a'xLF#<Ǽڧ}r ǃ1.,;<|gʝ{)aG=lbD;IB (D1RkR8TgBFxt鯐9l@tK|6,beAɄxl6E1eik{!ry{f(iJ*{hXXX`磛i#hٌN7  ~܁ s"ZIYQӱI܉vEĹp.܁KY!?+KӉ僛? b-c>TVU*pX/PH&YVϪ 3'?,.=FG۹Xj]<@`SxWş |戜aTJ A1 ZRW@ aiaP '9Iŕ giѰ>ZьD,..G!к̲}lt6[nYpǸ(@:su:qη99l0-N:lll~Ts&Kq72/3BH%#M+Ѭ$BWJ V!ieE4=9A'!ђ@# * D cD@ce{w1/}勬]ѽ>ro iάpX3Cոa Aj1S+9ep. -N8EH;Xa˔DN$̉O0Q9N јGESdBI>D\lJU%"T@B0ZtuؘEΛ??6cy?ႄ~_gwk|t]J+Y:"tZ11[MnB[[zqZU  voOx{=Λ:&\y,@dΪĈ!и҂p%Il1-NR8 gph_{ hHT/m/ڒ0UI"G7Z-A6NO$vFoȝi·'bd2uI|BJOs1^Z! m Q|R5R23Ǥоš qdkRgW.RG ͐HTE<;] Dwdujww >i.{@hX/]JFQ9 W,.xx2CMSDZ$M2ɌQCAlmo‹Wy Vw4Ni:pX[wj !Hi<>:~ﰰq&ںJwۯ7~8emYnÃC1QIFʱs}v¹5Mbe9xE҄P6P"DI"Tt@Xϴ K a!q`,2Ru?U@^XtrRA!VP+6:eƫ_/ho޸ш?y7^=h IDAT=zZk1(e敃NI '"`2,B=K^#ş}:6+Jё`ߣHs޾/n.Cӎ_ "3h˝4f JfSOk5}(Au IgHWA%% (Y9O'jG440'v 24DZ x#5_`k4U>t"Jq}[k llllG5g"࿬ynz~4'0V18P4Xa #zOyMJgy Ջw?dh1+,ux*vokW)& &[xYQbMgKMQA~G%M-X=}t} w2Jr"(8d=)!ٺ|A/ͱD6T"ѮZ w<_ΫѿCcs~ds(eQwҐ_o_2G6>$b".A{e!\?ܻ}#n16g YuF|rWs<,7Ѿ8<6ykNX\^DDYϓOIӐ<4 +aH%koع;DuOi Fy>w<`4jo.sn&Z rad4Rd96wyx6[h,7 c4d0.Y\r: YawiZR;JU [^ 3ш>/.Sd9ãC:W9eh\Xx<%RU0k#..3 "nF-7z3\M$e8ХC EP**XQBSs:@ O% cy0h7錰c'9Pf|4((\x"n*r^XcY^?G`TUq|'6}Q"G jTJhUK! 4)pQH$`h YQ -6K>T9gU| Ah UBVgDS|=kRJնB]ua&1RUPYHYd\z_;e+++Ad|H#iRYU׹&$*еP[%~9Ur=i 1rQԬ'=w|5d@8U=6NE_ $CQA1ݻ4zDZ),vkݤ4}JrY:1Owp}aN͵eK!^XcaM@"m%YsLL-_Mҝ\^(yw k'k+6 ,͉pun'`cÅ ͘Tm^fcyV3 WBF '_W t*<}EÒuX ã2BtqþGI#JZܹu)/q-Y19>WYZiSt`u"'vGq#N$E/t)-2 `{9#z31'5N[EIu Cg\m[فvrNyTf3{UOź k82;0.7+,5BGk+ W(\h0faI rUAS!GYOTFYǰ?@ SB9in0Q#ain >(M.uU_P!C_2n|nOZj'6=سoJYDQC*tE}n}&~G9[[<~s[8X~,#Bw'К5od( 7~7{9 YMDTlQ;4J ^rɤEgms>/}@4Qk:ۗwNǤl"Te y*:FD:#hB|Y`{`mK>rx e9aϦyLogm$Z+y̍[; l.?Q>yQ[b2d eSLKO 濬ԻyݩhrM-ZXk1֢DMWuZȭ#N"&քZu0H/)ɲf[/ T4+YK Ɠ$E^dE:Fppw4MY^^-{>f(IȝMYETJU'J?s_ٜٜL^B?y/D+'R J a(HCAVW;Y)u^ D1>! Tx9;O̧xnw02!c499We2ý\zf+ %B8Wl&(F "i.v"ox5i~t}Yrs#`=lP*"MOIB68fp zWϠ79i+=3֑: ls?W/ ?™*z{0~С+|1c/d"TCAh6^bI~ވJ&>a|\q֔&'xSEfO i$TK%!|E;B_=G>+<&j P#/l]~i!vw &A$k ,+˄zĹ2Zzcˣ#.,Јr(CpS7yA؍8nCP"uLLvpIKh#mdWLgQR-/Nf( t3I <4&2@jwWށ aFr"tν#:C:5Eˈ4HQB:pVO2KG5WnFD!+K,.i/-20EIA:Fq)D_6X 4)QDŸ,JqwߺdffneG3z@#7r0isw/izkf]b#D耝(Cj,Bh )5RUB)M qΡu%RHF"DVNK/"}'vܜ59q"Rp sGivTn-Dt,ZBPZ2Ny!qҋ/1Ea#DIMX"ehRXr7xpTvdh%WAQVBA1S|;U僴䂉ɴDLVF( H1a+:IGSl-ƼpRYF#i$[3<0#T B d ΗR g%pO`Mp {~1q (fH0a 5ubpYC(_]p߯roBu2c|nLЌ,9Dh kqDMB c_{.}x:E%o‡w>DJ|,+_h4!%: ]/<@I<>+Y=\Bw<!PUdiB㛘^FR|ˌBԄ JFKZ-Zv,44'Ǐ()`7.$-JTi@<NxpB;H0cЁH&L)=8w'|>{19>kѰDKIS&.YNc*lSz(DB5EE1̛&@,8y<zLϏ<`z6bJ@mD15s:)*}Bu6g;/J~΢tU.襒d3.'B4PJ+PJʤF" =`M_u?yp;oTXRY֋Lvz%.Y΃/ċct/{1Gedou 5˕/ѓQM {^h/..% pXBJM%Bߕ\)^L+d'AjPmXԭY>22Q/~X)B :e~z8^} $ӲtN ʘ́f-9CFG!6S;38 &mB5NfҥQ!s`OUYLhE-7>o.ռy ux_s._3w8mvUAz6[<M?;<ۦRS'$Am/21aKa2#=W^m-Cp \#jhj?K hcDARf:\\葨蹇o?F`"+Od(_wgs8$ңE yJϜɔcoY(A8j.9)!I$$%K<hI$RKqGy_ͮ3̸ߢt9kaRp2Bd Rao'sɕ31s('ꌣrBۦd{!.@$p؀ GSQEv>8y|-Iy*g݂m"I('2ʈK&5fإI}Vz+ZeCo'%b%Z@ʑ` x[#:9*fU=J3ӡeY.ϝ%p&o֖X}Oe9<~,u̓)!i/|bߣ{}yԦṱ? EW+958I7ݢ:b U9^[19B)2b/IJ v1֡@@ " 8hS=87|i 2DV3 ^Vq`iCjS1ؿ°4`|权)C2&d7&yȅ`N[\ҥ.?'G3]|Mr8Sֆ  T͸*I*y0ж!r&UI#$HΌEHFQJ `pJ'MIw6*pXsfL$t*vr IDATmxu>:'XPC+y/e)ѳ[h N4 ]JE" pB<2^ǭywOIVK@A +L!D*U pux8'L&@Cpg n՘\޻4lo2ƽ@>ho6 1LdMB*`s!y1bo yp .?g%^ P9T~N2I8>mMVID"[acCdI|Vr|tb3sRi8<:Çs88GX$k{WHr7k۶֧sO2.>zt/]WſYն X' Z+:)7;$dʸO(: *O!ՐA v ]Ȗirq+J.J- ijꦦW$dMRA *2IYS1E"+y/:W#9=: MypMI"}$&j8fS|/c 1<SN*R Ա(LyMxOg9lw??߹;)~wy?L|@q*"2QΙ>;&SDY_G;mR=Tg79=I+slB[EVT bVn9K!sК{)i=l.UP(mPT7APB┍C#AWjM E G* ,Qޙk @% zA}ȕ Q>J*E@ɀ$Y(C(,G2i&;|㏟?鷸oa?^h8YdQ9U2=CH6S^A!/RSut#p3;hEع )1χlkfs>6<z̯bQ̋R%X Z8lbbokg@ٲ)!kiv'G`XRHe U0dґKG*-‘+C'\4'9%o}D!( q"hOHr6CY/&(Iԝ;bVRUn`woW_},8x)A]EStGq[d~7pc 4E fe-{Wrӣ\`>a&Cth4+ۼm:E!.& KLV6"U 8|B x=s;xo{\Uᚒ23ϥ:;x7-}>Nq &L|H&,x43` ӤF"HȨc^>i .m x o^bIMyIJXf!<(d:{&7lmlNm<ԥ0IH|oۧ ;{\u4/!gB@Ko 8\Y#DE"BkiꊺQ/J3L9UQ5әEJunp 1H% TuElOk,#A].^EkgMK 8Bˁ r:i5m0yx]ˉBRYKb!e"߆h祥 ^eUu9ڂɴ,}n~|ҤMTo]?CZٛѴX@)I$SI)iH5Bj Eop,޵ pBxͼ5EøtF! 0BP6x )P2","}*F?Akx~N<@&۷^#ئilfZ..GeJuiNsDޡ+cH%]22J-)> e8び樜l<+_cID.)kR:H.`421C{ *-E/>ٷߠ' ?6ώМ ?K9g?ş3~[to`Uf2HkҾJLՐb*ZI2$ĭiVd Qm q$8 \DI2[$̑}"ǩ !v #=`PǛmp3*g`KVm駂Rt{$Z4hDd,dY M=YG6]L5*K[jAS6 0&#̓׮죅$ G'P$vDGRK!4?c|]vt.$:e[wxjpcsҺt6GJ CKQWçtlS]mnl&9q|>{oS`\ [74E6E9$ HRdr%KAJ`(3l$2$ diטx Yz^`!M9D%\xG@F0D.F,ɄN>Diq{ >l6#K |K_)Eb>e4`9Bjc)vY@j5ѳz(PIA(6ٺt㏟Bw4/R(I ?xNLOK HxQG|n8jSpZ ikmφ,VۥdLu.pv=|J}Hi:}H5.ۢ+N3:}Oq~6of/3o^JZ^T Ģ5$Ip!/ +|!7]Zeqd+X NѴ_, Bb%2x=d:&SZlmAQ bz)HtB%^" ' ${E"#C$ɉAWFl=2ѻfg/3>< H! 0|^sǼo3:Z{xz6dYWld$M6ek14GrJ>.g 4IL$",8EXb-ڸ5#LIK/ լRrr븚1ѐ{> E^--n2922[ǔeP\>>9gOf|~:''ϡͿ֟Q]v)!{{u ܹs}!7n\aGldړX!06't66zo©ihTSƧϙNٽt˷2򼇱CT8g:3N<vb%˕52/uM&7v:\iI"S)Eɸ䋟gvYLfuA R7ln8~B:ޣ`3J-3mok'O ^pz6)!;ku,JLZ|hbYkQ TLWNU4ҳ_te) r-kL#yxnthS"H:=ש P*>֡u/H]꼨It1H"DV'P2;s{!Vl< !5:|| xJCg>)uoa8#vO~OՔ,~. ^՟O|c`bq1MT|S#q`LG^upl9vZ:`+$K֊Ap$z&:!?M/$8*Qci]Cd'?{{Ukj$n'e#jtSܸ~yi^8ve-9`e _m\ \ &&_E]E]Ej]!Dh(c(r#g5WfܾCiv"I8Fp/ 'Ò1sevfL8UX#:E0Zxk}]@eI:(H=Artf$2zr]]DO'ohTB4:A%G|trLx|hV}Vɟ2H6zUlbg%шQLCᬣS&uAOjjmjRnl{oSs|inq?#e$tp{_]㇔F&mh~7K?o'oK:oK:ECc{dPd bxo21Ta]Q |`?~ .'EXg `٠r %V_ Ȍp&4SM 3-tus(we ;+^HGg`wTdE؟9N攕G>Yg6OU(Tbn0.2 8&h^C i,)U,r#\ۜr7Ҝ{pxJVhIUF, \>Zm-/թIhmI$Q5 1JT5[|l 3?82RDpi`kw rxF9g%FfL(PJ#A*I,}Z6k>%WT{D'U?jӁיY,6h{{5R-/]'N+58! dyކzw>mv=Zc[[ܼ~G2/繓Z*BGOo:hرBQ2)6R{ONI\_JIߏ瞀n3<9!$iF& e ,xbc|frc.DSr?Bdau.G Ӗh';_a˿/~Ň?[J~io M !֑u%{4[Uݒ'^0\[b ӫ-_O cP/$(Qnr Պw&SڥZ l i ,)Aj=>j68<::ޣ(@и1(rp4#lY&Hr~ΥKlon= P Eհmm)$V"wܼܡ6ɘ-'5A:O'dݔBKRlgNDHtH"u^itލmP9XAc-UU&,zV.T& ^xd R$;C?'L4 CըZFRkD K6`\GUVغA:\kgI $Z)n9 :|>fa2`b@@&iwX1I0eyo֏ep:A)!I$O4Q<402IBSٛ|S.N}Gt Vl͛Kt?+yzR8ٻ˴*K/.C`@K "!3ki2Qb0ixY=D OH MU9.ukn,J>|7svwI!ytl ?,e6 m8@-'9"uxLR1o,IL2ISs`, |f292j B!IS0axJ5lj \좒" %Ȣ4*%d9Rqh!kmz{+!QPHR'#QS$NZkKmvt:=3%VLa`Tf8 N>( qHdLwWق=l|M4]z) KP:Plo3*S&M1\J,5LxA*x-ABsq#d\l-e{d+ !ʻ} ;)%uޡ+]661%J~`{{>`5s5X,/;-8Ru: $^(m(Ht5k @riEUdg.n:'4R% GutA\s ٗ$K@3KQiM$*9kf)GgSN8\4LMKƱ09d27GkjC][QC!2O*LIs37% fTʯʵ4"QD#SM5ADᒂn!G,T%V@PJ"h1O$e^jES6}d[ $3@]oǖ>[Ur4P")"% eE E΂r@O  A ǀ$H ؑ7RHJ4Cp8 ə;3w_z_V˻凷Nwߙ(@ ܾwzsΩzcT`6_7H>ЂhoM\}2Pf_kw0˭{/0}ѫ/W~S0y㻔~D\M3ђ8,2%&;^yfSnRꏔe3xQ"}Z/^'X4ހ/9[xLj~mviz4VWȊ/2*sG9z#6R!\E OSX5ҥr2u(RϧhMD(LD>Q5TCQA0Eo--V#n.zNW8,M<`oR4[3KL 7 2;5(hdQjDu?6}`)wX5m=c!0@JY"))ȹqReX#^{{& ?h%DDhZqvZ 1D.`,5sO (@HD@,? s۔"O>1o~En߾ޣ[䬭l:,w\AR Ju:f[MY:}Ƭfh=b<-F1^|0Q Yrm!eh6unٺbb#v*~A0 UlkaxÊJc`6sfj,/cO2yطC%(O5uܻKQqMI$bb~Q J#PJ")ADInohF >kj9u.xcĈ$e1ڐnFtINpT5T>}_%2FL#q\R`wĭt/ 1t#JiO4ܓ޴(ZT V0Es|*ђ;7(!IG5 Z!E9Ӎp7䀖0Hx)ao~~MT}"A݌SL@hFME1*s>|m̦d"ehXX8tV"!]e(EN @52He"CKCp4pT rqWUh0 O;~ ?* ra(şV"i5U,Pap}%"D*ZA+UsGr`# |̪ZPEH2VDdgJs4Q+.Υp,PBێfF}~ x @>+_kikp˼y=v_Sgh{(rΈ sCg"[ H.u3l¥7XB >q mPs)/s Heǯ|N9^G;@"3ΘWjQVN 8ǹ% z ՘ZSK݌wf Ȁ=Zu hP'PNA.iԄF")2)^ %;\z1.G >QU`:`ɋ֖.~;{dMQ3Cf"ICwKat\fLs[%&"D<]~5pN=MOD^В|<&X SV #nTlt{ݨb+[iۃ%#e@eVF1+DHbSo,ܫW|5?:Gt~akC]fSw(˒ɟDYp`0H()$0,:DMYI}4c'Y]_Y`h;t3AJfqbQ\ hNCczH"Bx\ئҲ{hY {cVL-T.;lM<CLo5XdRthLB⣧i&GwoFrYP@h&P䁬^xrY+.,*j:ӥQ( lʵk=PT)$Bm[1&9R K9"Q]Qj/Qt%,;4 J@#$^PD`VU󗈯jȖ\ ׮]Z!+:0Ӎ 6Oha14j;wV,rH>nXZ;'lOݷ^FHVG5_cA>(|?q$J6;Nq \kqlC^LUKͭ-; !Z,g{g%۞ 19^qi!tRB=>s|mPR%Q LBK(Zw|cBS2Yd2M(65Y)g%J'=5ߛ^;<"Pgs6gs6gc3G%$Z*LrMk '2( .(ip Ӳf<8lOtY| BHG;+G~p?x9n"vD3UCH"\1 }y]/7^jF9&ZbxxQ`cF3 `cx}w CiYBêK.DQ2Y(TT[V}:FCˈ%@ ѐ)V ['##Z%>OBAIbCyb.*JpmsnLBL9ֹ$2.fw{%M,ׇ_}L5 وG)Ϙȥb)N 3dC2Qgk!3hN_Na‰7O;fQK隆+Waci˒V3.\\R|kL@@XxGG!T>5 %P2B^De"G5J2uESd+^`+pI,gteuIYV8 ,,ֵw/7ߤpﱷ"XB=Mӏ_,و5,&z  ;!+]Mo:H">D"٤p:yΈ[[5Y75 %[,2X\;XF.(܌eבv9Xg~ÐQ.' 6wUE}tqB s <ZCJ}^y+PMdW*R,ߣ'W~PCgdqZPHYt*dhB8&M("6'3TxH[ߠ}NinJ9sƘ䊗'sRi@@\Du] l娢G1 <ܧ{ d!BD ة?B;MMWryMSqN唻pZ'0dY1lt:i}TU9 )q`M }u(VHy `y\qu^l/X714mO_9;'999ǜ?!ȕ0:EerhN|x Bb$.[ئ!*E6'ܸɃ)'d4ݥn ]Q7 1:@?A@D1?`O|<Ӄm\S2wmQڈs2#Mܝq}԰w.0^11V*iQ<:Ow9/Kp .1mP,u~=bp/S9̊䚋^dN'(ƱR!>{w`ӟbbQ }XsyUqu \\ {‹o;th/^T@,i>JQ A@D}m0aD'XIl8"-QW{h"#.Pt2FCbcm{{{ƛ<3|n޺<UPzBēšfHp$>65rJ|Cј|-¬dq-) G :F zaG/gyqH)-,]Zh.2!!;NgWy[woyt#UCOIZ>}RCO0D+D|ht:+p!ESR*,,P 4Q%I!".Qf\}owq1N7>BuzNs'ZN g<;8c ϟ{ eY$)Jk){s\> j#e{<ec?4<8ܝ92K͕UY|CcMQrg{{{,//?ct߱ctN>'?]py?<-TSlll~5: DXJ$zpO_/V.BwX5-qu TOw45FprZmtΟ'( w1^_?"(tC"9dn']GYu ly$rG|Y?~O"Gcx3橏}^wnt(b8Y7B rxt*!y+,jw<`3`y24$8D !b1jozUŅz2ּV &:g:81}}69B5 G.]eI5xnH/;]V^o6,Ӊs^! fES7Z0 (l"RA "jOCL& lp@)BxEX[YtJӡs-a2|gVUt.\1$:Ԛ .0M͔hވE.\^#uJ"g.T.pPV;ٯj&K2^];d"-?5ۇ9; %8GD`DžȺ!PYYYb&h1d1Œ_#>v|a&sBzLf<GރM27C 2Xp ؐ>PUxs֠3\ix|MG{-L"+3FcXk4J)wF I i('Ӣi8ryi>H۱?O?RJs r֊Ye]Y>IA4u"ݼ!8ƥBi̴1ZZW=| #sPBe֚Nkjh<֥nX!$1 & n<ӹjO;CO5o<% b|Ⱥlllݜ? {F'23ъ,3(UF死w!kM]`43 *L&:,..d\d5TmǤ[br)AE`porOxn~7>(9`GoilbuO7yc\sԆĕ_HqVgoSmno )7XZZw~γ#VG7no>`o0< >ƛ\{پ]-Q}P&{xQ,Q&k _}7#@d?ŧE^?gݷ\&=}0h:EEVx=hɓ}Dӓ˛dH]rdrfz(qY@2@QMx*W]3<חPrXD@ǔ-}q} cBi "%QBE{J-DIm QVD CXuWA\ۻx'.-3ٻAd v1c}&#۪`k*㢇2 DСd=w-/,Yv1݊bAd\ fq@:ÔI>"$PQ*w§.1Bx %M+:tt-ܳB5ͅ%ŕ%EWivP7Xxh#rOrD6@faR\"7eL`!*=2bFD@s>sG2y<{lnncdeei96 |ak{G|g~=&Gs-:$# β^LP@4MBS65O δa fV0p~GN; yckwG6 /:G krLK[ /Q V,u:,)Q7=-rDe(y-ɴ*&o{7B#DM:`+O50Ϩu<ek/Fp'.X.H*2dVG-$$Jb%In#sd98\!Fp4k8(;"k* <$Wm3!ml0tQ㥄4u *O)H 'i&Ԗ KLg#:Z>el.SS5ap,`} ]=E3cu{9:<{di>BkVcmuPp%EsmB q?a.$}#p.ji6ǂsv!=VumT:r& JIBt9WHcQ*Mꈖ@r׶9yB7RrpxĴڛc's{NRDE9%XʶY35I x9?Cdsn_g6.C+ IT|ؚlll7g"0\ *#ZJ6 u; 91µ;\ߞ0c66VY\ă]&,3\xxYT{ws.C"\I\cĹ@ <2{Rɑ&CvAgLbv-4DgYxIN{(@(K{.>F a7WV(^F/Ӭ,3ۼO=Zc̾;;t^$mf'%oq]Nx(vEL4("X/[%_aWP-B O?r{x@[7?:;[{;d(GMt1#VфbgePS8OyP<喜rQD!4(S)H|AOY7 qחQ]EwQBÓLx0D!Űbt1B3ԑ%Å!EkҕS J&ЄA@yaꯣ8'ȬdYF Bd ?5upoz>O͛/~ |:|W6_X^^_*nA?`2Pn6N"ш7r K B&r.%1Zbh-) Mt1U V e&)7ٲ0/" !9Fm=1x" Ԇe,/<0wGTh# j1[Y4΢,Fݛ |^cpQ 51 FOCD4b MI&۾H|gsVH+ ΑG4ǻS9wԮ!3_/O0Lg%"B !(h#1OBCc fGiJ Feug/ZXHȼ9 Y]g:a$cii`r".#q˼[$QDڦ5 zG`ڶ0dx܊P"\Ki;ɹV|479Rm<&`Yhs^ͧRIUU`KQtʻp]i+p]\A G$PĔ&GAl0C}E3OԣLvSϦ邿u.iѓDk8ohs/|w =*Ǟt:2UFY@(K=P '#3O1+gJ#Gb182J~;xW~lE@g >,W}*d =k6~=dfkkl|n\ D&|3/$?a|m>ƈrL)EیYQKI:MT\(?lNmA 9.f3j'E+РBA:_\ȥb)j/^fui*a^g{4PF`11!=ìaYHֻs]FVI:"^Dߞt#P>|ӵ[-ə !#B{D&dP%ZpQ]DX=li3|]H+>yB8<Uс#v'!%4sSB˼utSREh{$:%ч޼hmsqVz?BHӑS4ߞD@)Ee_?c[1(Қ~AƢLZ`ְR$\x z'ցyؚm_q=nMgs6gs6gs6?꜉?„JdJ5~)Tڝo&jVϟOgg{%O1ռg_p7Bre6 L˦Y!ɲTȇ"bxk?;_|o-._ՌJSi/m4R΅' <+?bu^]a}+W^U{ѱ8s339~1&W#.{oΝW,.>(_ʣo|ik~;,Ӭ(MLE[W}:<K/r{fGtM,GdIrkdJ9|3L1)ۻ[D'F1~GG 2)1# 3j\2b޻XrcQF_|p+*^6WDwƓM# eD0*/J%em(-P2Kۭ / {x=(UfI4\D%tF ϡXQUbj)v7u>͗tFDGEd\[p4.ssASguTRYGS8oA2(%ăA1.t+Ѳ'hylu\inqs{nS#s疥N`YHVՎ\9,YZ]IY ۚ郆Τr( Ak¥Hl| DGb.wPCAˇwn$#B2Kɾ," uuHu|"PCzlFys~W-^z%^ʝ;wJ|4MÿWݻwr"n3 !͛~mv7ԓk,<'e\6DʚGO`0SWh d irʒa-xkfrF͉JHTaqW>AoD?(B A5Bi'&)nλeuonn@sX\='ht7#fVkD!&t dL%ur 3b{T\DzȕAJm*w&;!JE(@)pT4^+ |coL} T!B&#CKm>NA@yOH.<(u]9q萋.rw(*v>N;stqc/;ƲsnzU33=a&QJ-ZQ y5 5 û6vacP-Y")J(r(ɱ{:Oׯ{]?k Unw{~7L>}g Ȳ쾜yhH))-n IDAT%ϧ `u {: VV)3e3Ke9ˈ|=Pn1m5¯Ea@G5L Sa!ȋm!R[k#)@* Cd͍MFYAJE;?"mWnNTXT%QyH)mH8C(X~~qHeHwr 1D"n4ÀvJ8!@2u|+/msw8eEg#oe3gXX]c;;L/W", Ei/ui-/- tמ+$N(䕿>QZJ{>LD[Çi=q3 `gk/buyk7`up4A1G t(s͜mvH5ާ(#͊]Kro;v;8o/{'GLmm]]9plq8 D!NUXn>JPXΈ㄁H:]0@PY.?ܡ=Yr(C R>+Jz+` TXc>U T G5R:&m'-G }v&w6K/mr~ Ρl9RE;Gp %M1MX J 2#5ɫ ҪQ%J>&4 J$w%d%އN㤃=:^QGU~MT3 Y9u#b7RĹ ,s:V"[)#aTNaBIK.up5&6(|S Q0GXaU 'Z@YYl09 8i-ߩy駹vGeccO_G> @IN)f~bm~])5+fMs$( 8THծsA4) B(q@\e%蜴@!ZO<=_bﭪj0 j$I!AYxkv+O(w">}!gGf@C:```~-bC( |Aq[;|`)]k~:˿A+IΆ# |@Dryka$= NRW >|GO)V/9dptZ>KC?4֏O,j4VUXv7˭sSfv4b5d_?B{m&$y([lB@qC&ۥ{]d7n>~S4icLo@q'za|.үR޾/Wxm@~wW\x GȸI#+Tw6p1xgǾcgpu`{# J*G9b= G(o ;|eMo7S)BP8BSai;="i36 ҍQr %@kc%+(p6xP8sLaE l$` 4STjZ"$ʅP:Hpv+Ҽ`4G$+_h12YnvJVgA; mHXB0h"T9A5$%r1@ksHq0akZ _댿Tpt0_e޺+/Zj3hqcmQ! !Ǒ^/GN2?g%)%4psla?55XT>e*}a) Ap ",/ h稌jGUyŔ`}۵Me楗^هcwaqqcG1?|k_ꕫ4M$AM\A8wKyiQV nJǚԑ߮ &i."j- '8 2hXHcѳ8ip*&2M0$P2FII唶d>hBkЗ_&''CArLRC6ilfiT@JaҊԦ4CP2D ᳻FQh\-lpZp$2@?ބ?H$ʲ()Ӕ`@k|B#G&iWQ*,JeF4Ä8ȋc5yݹ(ۥwe[.6U.H8nE I`\v-T8}jҖ@\X_R9Yz4M=}ƣ6Cj0Y/NE5КZqggNat9q}OYو3?_c͊eϽ`V݃pY9U(Es@vw)%IAfHyIpTUkqQRn[YW[#桛֫02akPpxZWgk, s dY:p;&vsVpO!hEnm6FN4D( ]9qw/.&4L9xk EY4[8Ƥޒ utAԣHqDا}| >=|BlPNs~n1G}fٛeFbNw߃Yam k,BJW@;K$nswi3d 1>%P#T 9hMhF]U|f~&Ѣڠqr!hR5(eH*BR[X(:TtR d)H""wMqJZBF-7X=pRpc0&1VT_:`4hS紆*CTOX +$Zu65iXR4ZÈ(g܋_c;! w88w &X9tU;"):m6!RUK OC  *I K-*BsDBԹ$AUC@QAY3s ށ\(<أܺAQUDA@0N4MΜ> /6Rܸ~%N?^-I! ahts+e k,J*^`RRV[IZ:Lw(6nT3@8J^yj_WMR!"B `@+tC>LJ]YiNuunﲴqӁ"1 p OrƣJ,- [!*`_2*49"D+A^PͤDgYAU9L='f 5aުzm}HW:ӂ0 |Kƹi&߽RyHm5[=P3dT&dR;͜ 9t T֦;DenZ:"i6(1I1Sut zE R0!4oJCAnC[{Qk,JYSTJua-8$"s߶:/I1>vځ``;9ۘ8 ˆ @8$F("—hn&?MrJD.fQ2"i:ʺEN F(l#6 90֔՟=KUx1$G$ѭWV-n2,꼗Eᄷܺg~_+f>&;;W_d/W<14tk$0V(*0-Jk@do Id%|H?2RK,sA:~0^n!k(h==V-ʯ3|etoJ+ do+jq_y L6=y#u{\ykhG4"2 ,4lYXN$H1̗}*t~ |V渹50y*G:rC`paժ$+(&*"gJv2 ηY @"H*FT d8ª6Ft1 :*F+s Lc1,F$g NĊ tDd( e> 9~{k{){a_mrmlҤrtu*(-TQf2i3p,)t9Vؙ7*g)"] SgE]pjR+,L6h'+hpLcw GMJ&y ]0C(G0#8#Hk5TCtACb%m >pe%]^ُd 8* I[cC?)Y2YWͿ\~C(xB"Bʢ`qi8NȲwI~KmƓ >,O<$Y19>_f=<_@(J=>wc/֐QV`tM4֎X\CG I«?Yq,B@5i2`oYC |~a䌭(Tj2eAb{t̉c=vl ]bZ5ZYޮ*@6% H|Qo+^1e& ^9>+/s*CE5Wm̖:dQzso۽\ Lv/WRm9ۼ@Qb(Pw bE cEY&|xRQk6:&y5?g77oQ-EtC@> ~Zw5Xc)|u+f^l)Vx{[& |'~QA`F8"mΟ?E,4o-M>D@qV#J,c4$u[īP=A7ؽy|{JYR q=09'N>EC%qiؼtk7ζ5ƃ-'Dgؾ}g8A7' w6,[ ]I{ZX'ؒ X;ՐuYa;>Yم.کV BW0i|Krd-ʜ7;zbޏSyBقq gè f{> ^|9rq|M.J*ƪ%ӺBRэf~ukŽP~ྮ?y#s C4auđ/ ҅[9NHc=jRWB 4^x4hPhN)A$8Ѫ?hceZQTVRZEV2!)q8r(-!*&BAOKNBclm0r7nl̛\5БBoPAW2@ie΢s|9f&(,J9,i. !4 Z aT,&g~?3D&}ť"m#IN0ɞt.a8~$ Q!Dqeba$a+I@4邎Q1=u6w_$@Iҍp8Rq{ !/mKUqע,MXؕhNSy'Gclm2q \|Mկ":UU1pMNxvAV:Io tqXpJT84&w*HS"AGWa!IRj5qRiA5I\7p/?ljbB`^;N*YfA 0 艥{K+'# Z`K@ 3H癠!ソ %bQ@ sɳyyk hfDSIZKHeЅM6na Ov0ϝTi1X?_zo|},>kx4+Cd~)$ *V]>y>Y?rf *d!Aah]Q:pVx}1i6a?`pKUAD(w=2TUs4Ϋs{Vk\bf>|yD,)y|ٚ}ușxoy=+%yvPfYR(fZ3LP}8D!ajem0qp4*HG6 gr,5}{'a[oBs0s0s0 p.m#4 Z0c\`ZK vYІ)u΋6S )H DEr"` I"`&9{7n7B4,h Y|%D""`qđeVb7T!R9ډ»'*ٺIIJLBZ0zMp!Nј8덪V9:f#b҈$qDGX&iQdt1q8SG[b8/NA;ka͇$R#`x7J]RannLR$ G0 roaܸ(_; ݵd*1g쒯*sJ3$)*^u|i(j@?g!\f_%N"&fDhAdK[Yv FH9\.PNBHW/tY\:՛N>>1LB F֋0 E nDxHDʑ0Ǿo64 kBH' StɻIǒ>Gz AW|haĚҫ  2S#=eLekQ澁;P)52BFhu$ z-E!4! DB$rlo#."I8J6U\|A**Mp ]c."r_X>N؋q_8uyiniBڱ:luWvqTD^`zD!>Bo(}bW7! $ #(p;%{/<wئ,+:DQER͍M9q; {h-0:$NN lE \q}7#_ C˫􏜠jtqCgƔh]ah[H}Ӽ5>KHFdN@%-54g<$ Cz}&YUU_g?%`5P RuE0]ThK܊uE{^{DjBJ5޲,jP4 +RQ uɎE$xHÇ͋9$mGk'4팝rkl^MN=tt߷8p8|OUt#-"み JZ:>nΜ=KYA6z0gdl2 9}%rZ>HU tUDIv}0C[-3rV{5sߤ+[$BFQ,Ò[P+tU)iή?T_hN/U{(x#Ix0Zks (A4$1UEU/fY ǎІ+W2Սóv|iǃj)Bo>9HN>xܼ?s0s098B!څhb4 J40p 2 P\@7zt挶o5^](FvZJ`4Zh uAٍ[-`N8y '€pEԄ2n@گ)@|{'osc,/cmo^o&=C[O2͗ ]ۖ >!9~#gNLXD;)^УloCﱲ5>Kzks_ϱy ź&/]e`w$#nwIm ͑q4*G֙mE6fGPrW@Kyns`O$h^> pjqQ[8\96n "P UޥJ5D]0234G`AiJ9ܣ4(Np+,0gao.@:B@(BC"VPXGц*Wfʡ,Y4&'YI~OBg_{K8]L`Uu"r8xj=S]%c)HDp8!g,/uh5t&҅f$,4۴!\,s ǡC'tUG˧hLJ U.]zGmN9 rhXb&۲\4 _`1 V$@ Mخګtǟ`Ppn<{gr*Ke& tZ1޾AJ6PѤdMo}꧙H6I GkBajEh4_`g{ EQ)ϟgk.qPrmz/_kpP%U5l줼|eaۢ%fGUfBx3YmURMׅS+ҭU]8^0 ְpd%t>f|UY6%(Koq7-vxwVPMJ8@^d7h-6ާ1 W^@aXg9XdDvJ s>~{N.ps'K7 Dʀ<״Ij.+Vwor>/m ~?ϫ/_w~91я{o=u_~GWP[['6pTĮ?Oąs#,D-p(5l@}LUUKA`,sKp|Sۛ)iP5>ЂS3{aJyp߮;Dqϩ#˲vO,$"YNn8?O2鮣*1yQ;[5>cT |^Lw~Rc(r⦍nm;k-J@Pt{R?m]]0[SA4UqN6FO@p?jc|mTs0s09SV ZG~0 o/P% {#]FcX~,NX^BH|7KL]XŢhQ2C0{j ;'5Z"(J&K.h3?|O'V_5BL VAcgyu{{9(+lѥƖ!ixO}=R!*H$Mgm0(r:]XZj3:C$诒mŅ\^9pvpzg;H-"P)FyE@@$J) `J8`41YBNt,PÌK8YlJNm6*+?']Ēdyfus:<,,{UuCﴹ{wgNsꡳ|7oYXZdii )%?I?!nݺEt:-n߾IVYF#nBIL0Wf%{cx΄+;#J2 X\;LBaEzr+o-+2G)UTov>_(+7,~眻ŖTfVew]IMJ$%j!3FȒFŒfdb ByY/D 4A GR c>d./JT*[/Σ%XT[{b{,){^A:)@{n`pQQ@ G*+$Y&>w2}7U2̜:Ç/VV2s 6klݾT& r9=&wװ̉ss Q%7n8A%,._)o2 4?#?_Nk8 ˫b[Z3Έ*Ni^(lmȋ4HE$qp8n5?;{=H5Ry{,M8s?C[ǟc,3ff:4 66X_ ,:1 7oFg'i[Kܸmm̮,1wLLVՋ/m yS47hǸ,AK4;LJnoo=FܞC!tLcfS=i6*$b:ߟ3 xhwBGӞI  E ]B5)rHE"^ 𒪘[[/?npX ga .tӊvyT(XnLdB$DQ~}cW #RD8 WD4dH m%7wvPBD 0*O=- ٘Z]JCOSvՁ)8eH-T&'#ߠe˗bȉXB %=pg2rDFcNhKpSL=IJv:_?ԧ&DJ1\rS'9x{Aw*W\W_S(dIIbO ɵ,XKU\3V^ڍ s0lu,,ә;'@QِlrV VBf@3xq84pgmIyZ3si eN/ߤnF/V7:Ngg[_{-sus+߸ȋW- &4<1Yvi JC7`5Ť`mcm\5Ye4GUU8HӄI> I.QQQECUVE%&VX\e fsj@x3`2"g?I3gd[hD$<3?IHֿ:[2-,qJEoo1BDQՙah<;7l⌧;8q2?"}=˵Wxf%,r&f 8J$\AD$#>jp^wO>y`Վo?c_rla?GPTEU1+Jc0zŚ;h_i"` "e;{2/W__>5JmQm&9[h6IF>Į5:#g$ԓ [s-X$h#NˮÓi(AU:d$PZc}R}vCsL—apc\q^J)=Rhf%gNsL;J߽MZpp;*x| IDATYヶ߻#mp&#Y=bEY wtLu:ڰa0\gpmĬ!NOPVa  v1v%csc'@!7}' ܟ+'34s*W O&ܺyW\a8ѝeoom$F"if,(nAkM&?'l| 'h/tGS(ʆЁE c*lb? 2nRO%Yp˂:]o4VzvFl޽EK9tՅ9dvb:.'EzzMpHq^0$,_ +qI6]w{XSđ@It`𩔯:aAykZZY+9߼_ᡙ&-'Xi$y*wz)3"/}O֗lms/|3FRhp@'ZN?FjAsx"}uw~w J%4ګg-Q\؟dbR`&JR=SB=0 |Z>z @>nB)EUUXk0ܿ9>Y)z!!R_ːsOñKEl1ReYkwe%rz-SRAR-}6y_{#:5 G#"s^~T& 93;xn~:::gCVy1qmLڒq+53= O3ϰW>R(I18{~׉{ 㝝i#SYvWjl71[[8ySܹ}>6 >Oy>K39*a{mOx[^7p}kH"[+,;‚TSU ߺK&__zx^C/P)k_ڠ] 6k>,}0_|BbAZy8)!JWdyZ8aFKJk@Kv:/0v,yAi(L>@[|oGIўacc=, ;dɄ˗.ѝc h G#LIX)B2yI^xzc˵+[CrAHMH3T JH**HEN5 ` d-˺?)|<4,KHdIB> Yk"F(< ICh0{n?A _U t%0ي-,ՠVBbGʹ`Wc.;pHA2٥iJ<<Wn r΄1\Ӕٱe>,3Fqk[C\+3M&)Rf"ӧxtWV.2TJ1rs\X6,j([`g-h(FJ1ENV.|r;l=A:#8 zPLڐ ƙßw윾Fa|mx_RTBv= ?8`|~nꨎꨎ.5g&tf3N"]n#DYI#Fy ^T3%ȪJ*Y)E %;,̵u+,.Rwpeڀux%1UYa L(GCM~>Brꀧ$*Milllx/y% 3+Ǜ8_/|nI%ȹYZG\v:vc'Nx ͝1?o~gX]}?f#! ^8B 6xR j98ٹG0Dz򖦜Dypbn&CT&U1իs"/^Tqy`A4^P Z{KѸ8CFRI\X QevbmTAia{S˃aRXfdSxLl~^}iqm{"KHTq SLTT EE1 wsCy TfvNKFKh(THahȫp`id RpH"HŨjerBWQ֐vj8ɔ}gfiG#Y )T-z I+ 2h l.b ԏ9@3,a^ӌ%QZER9.]k<09hz_aF{PT.PZ5; { OU OGaMJ޾byӌ#v$6w5_UlO)NK]biqۻH8=dFkx'+(rE c<^WSOh4X5lmm}=ܹCĉљa }z{{i"qmRa)r͸l o + ZB%)>N)TWo3&al<>IۊA=})nmM6&93^(gmel(,7%y#$s,Rŵ E;ukL2͵Z(!j{{K^]m8vU%yЗ Pm1 (~drd~A=  2MKt/ FwߌaٳPlsT\|}'cS25x(|ׅ8/ ㉔¸"J0Hjy5ےtx}7aQQQuC\鶈uuIff3T-OrlQdH;,pd- 'I LB*jwKᄭ].Qd A)%ZW8 TŘή)_.]Ym8{/S?Cܺp+ȏ~ _4ayy=6z}tQe r/~0ugۧԚc-1l?K{,,,` /$b4` A&*0?c~;;dѸ(٤ܾ. cȀ ԥpgm,ʒހ=v-ʪ R)7p#8ȏ Ⱥ(A$HA pB!T 2dcv.tE-3cjwp%VOju+xKSXƴv5zfsm(=:jtR% >3xn0ߊq,6&ť?#r ~D09o'aEH#ak_۟ymMi/`('U|0p)B)4Mī7%wW7&13U* rw$/e3"0y[tT, ;@#SK(IYjq?:zݽ]p3|C<2bml3{lC'$*&C`,.~?|06e#L NJp!I6Fc90뛖7Y pŘyQ6&OH.]4rYy_DŽA`0{ '#QN}R{,36x~H{Uq^MƜ??(nK_"++lmn2\|"A$C4O*@(iA{ ޑXps{;# YBDig84Iքw(&_҅D^!E`ikGrg qcm2Qz|i4mAC "KMថkcP{#)q#5zdDI:1M!(M+C uJULkK)I&~gn<؛,;w9f ?3|ks}ŤFz^'-E%kYec!x|٧X|=܄Pw!q<:A@{u~}}TUE4e<[g)nT> %)~#iʮӔT|8m,2$$^2,`K ;( @R|'f0;oXGuTGuTG^=TuKإҥqKΠ#=Ё-&D8z"!`-в;"[40,mugNq7þtPi0`tX̟3<_} vbyu_[Yh+Ĺs' Is{^y*a G׀ \q̸q?m>cDH(?W!P4 ?2םd7n&Stzs׾NcwlԽ@W_~hz|kc~ލ+"FWTaYD4RF$S(' '睊}} ,L%Ag;o?~j0eb2H)+*A,HO;YNJF:=e;bUf̶g=OT\8>`%c"ZV5wz9ۯGc5勯\8ϱf %;}hrGTnS<,i"n׾5Hb+L1ac{^ Â(Af-۸a];Q(1X_MQ$$iڅDflI5@]}/߃=/@p{ ŲfS u IkB@[x<&NA@cxL[G~u֏SUB1FC9̺p1Dk5r?Ns`VD2, PQDeHቤl}4>~?|w+=~xTGuTGuT::Yd#A4bL;su uӕuPIL#9KChӃc1 KCml"zq7Ճ\DhFX-*_}+bK'8b%.r6'; B<^~lZ+,zDw3s\+ q>!~0R;| ._)ukt^+o\2;M u;j<+zX7޺ŷփpL]}콌`8'u#ʜ+]uLE=xJnon[8oR_GCۗ`< /8 Gx@=Ee䝲>v1գ{,ـ!G/W&xVٵ!%6L܍ v ]iXm{V,>4٘ٔKά̓em4pN*ܨ[4"Q2Kk4^ynXF,@2G;Ђ|s7,VmmO&f T#A EI_?r`}yEc"Ѭ6nKN-IgF,tM MΜժ#P=EN'g.8`4D:<20⽨"Eʐ(ǜieЎqQLЦYԌ45;LYmS)z=0Ւ }MjaǔۛsS0~pZk!9,Ail)hl<Հ&XNG)ATpjsWw$@x5,w>(=::~=UG8jsy !C TaK(X!AM d03 IDAT$ae^2sXt3bdžrAdߧk+Q1BD ϲt 7xލXS[SitJl@'4:-TؤM-ߺ+JD͟,H )+qua T}! "D;JaŽSDċt4;Y9el0ꁫzȏ5{x!ec_>F"v/] Qqvo"OA~\  Ui֞?u|mO a xoW48$!WZ0Y>L L1DzP>Hs%,||Y`L߼x g$ƍv/^D*>g4$#i1[v}vXMwi+̸|qA#h*s_UU9zW2֧3Ο$aJVSto+gWVD&W~$#%!\|aGsD_IFCUzH%n}fħUn7>sTC6FJAl=q.T#=>8s3@46 辣"$zcɥ;C]{#R}PTEw !&x+JwqT{ 8YLueX" Ӟ#L&YL'Mc#V5 +W/-ֱ瀸D) DB1*JJK4B)(F 6vBCHFQ A#,4;lz[$:)=}BĻ@F&6 !l&<$PYQHFbs j*,yLpcK]͢U΀Z2"0wU`z<޹AHF%Ōq3*K:kbo\, ϝ9$9[ɘSgo_OϟY*@a".'|᥷ۛ ]2vhYK"[%DIuYk4ֆ(JN (%@ݤYb9znCaj?Z)eڗ$?eus@ܙCߴfOjz?sކR@YF1$Ph(05~>=xn׻ɉtw{ꨎꨎYG P΂(]@J#D X!`hbY{$-[R&H2f<Q LQ(i:lM[҉S\ GgqBxGX:sOpEvDXCE4 e6f?™# |`Ìvי <8;,JDۂ(5dI`}TPsD:@!I"b8B8Xduzo+D-BbEؙg%bdBypCt|׿E8]90?peI~6GYwYx^ziX\֠<$2F8Fx*"Hq3 ?pd1o_yS{[j |{I#rhcQrA%dH`r0cL䇏G">s $4RƓ;/_\E5]8)0g[,:W$99kv#{|+ IG>q O5̟EfgJ;mPV{34M_⭻#V/~rS)jC]JK%]bt8[`bB91#Cۼuc[8w"cu&e.,79 ,Li`2#` D(/$lQ8ɩz{|t(?d,[eoS\\]hfg!Qq`S t61b%&& <\)O6ۭ^cyDw.wyO2cn' SKpg};̖јV!Xcԍ5+Thzq\rfJ D%sSE*]_ 9gɔ7W!j G*tTPV)*Kr+4֋}C_3J3.E+ʪB儀(*JE4=e5fwT_sP)·Vpm>,Vxp~dsX!j~B -N'Hpc xA#Gc}rak\!'h A+28c1#z|Q1($ڃD:"1ZkwG(q3?{ocYr}"lw=kꪮ76ܩglX{a00`?ǀy3=y4#JH)vS약UݵyDqͬ&M=]Y7=R0 &&,wO 7wYng\%EqZo~3b-0JGMG=<b]5qF&h,f{uudֲ*밓0)k]`*-+.tY~)‡sWm{o ;N98F1;›JpgLc븎~u e%I0:7/|#% ;$SqHDj︂rRP-yoHVgɩRs3'H]F PYZ0\L$Es>Jჟ{WQnln}s,6I0eAu#/R//>ʋs ~WϑO*_2e-(f Α{Vロy聻IFS| P2m&r*cRRz;ҺL n} { ^WsԉN19HT&H>֚D,}qI;z$g87y~gB4V:D-[1w.\DYzT6viGt]cm,c%._{eA7Dg¨OUR_JOxḢiZC=0KD3m-(vQEe`V\we<]dRn?M1-\[n#Rfh*vNg4ʒrH<#[{֚(\5%cܤn!UN5ag<8m qMt"Jj慪g.A=#-,B4mZТIPDJ@r&Tm`K*<: rc4q8bX;cʈВeiK >(*!J$G4dr4fs$Y<F5jQG3NŚtCx;'S~<ٌY>}ʱsW]eph4* fN@<+'XZ9ZdSʒDy%eY`+GۢCR4w~ra6G/ir)udAԷni5޲H81$*(8(;缟 ^nsP;cLփӑ3`8/Zs|p<̎{g}9ek,eaε/voLQ :::_t?GI<0>)BǚH+TU{TitI$4TE$/PEve~{|ѻ{_{VX*!Vcs 6K>kEEhbw7XšHsyGooscm+`9eg|s1~]t㔍N)J?<}o}Wx< VG?;F{{`z, ~;[V0weC =: ;֝fAm~>tm^ks>@P=) SGIRc(E5 2맠5yk Flj eT5:>?|-TQJ.j_|I"]2jpi.4 crR[6iMCdVOraՠ|3 mPBm-*D{*csMU^/mG9bqr͙EiN0J&u;a6pׯm@G-~ЧF=v,.շY|1nN^l^αz%2;Ƹ7\\}&!T_L鬣,&2O,cS܌7ES IlUiׯ}@-kW wh%-._xبz\ᩬ|}&9ʼ#EKY?Rll.dHR؂Ti*gpև1("Bcz_7'DC*§:n7%{: )Ӛ8A XK{~dD fxsykCHţ4I`+]L؄͹C$ UtHDDTRh/ X=DA8$0 B` B9%mUJ4Iqf=wsc7gsɡ3*XndhpxW(O؂NVEI$쮏ع>`?ƣA(>5h=UFi-B{A|8PXϾ`]'!OZOi!y}h6wi6dYFDQdh<1 )30t'Z o`&#@/au ,zBԠdJ[4}m\}5Yy B*sTOuHZvܯ>oM]F8´;v8ngA븎븎듭c)x7 !W`hAT#!Jc(mpSMJ|YxA@4*y:Wׯޣ#Izʝ]XZnͿ5^:w߼8/+=|U 8bf4|HԢ 0 Iw{#ڑahh0.I'#~1y>LsfEӢe5|vKi62g}|"q3a>,( L_B=āњfɂKWUgNНA[2ml tX9}{./ˉ3/O=ˌ?q_uo~J`>z;G &J'#SA[0q( .9,)($ ,7,Nx~ҋl7t2cʑC8s~?`AE22d %Ƹۦ~Z< MmH AW1tU9%(S`s Q씞c$o#f ZG4y(Q`" ġ\I iA֡9{Kv`Q|$KwӴD clL0zYh~"XP V Kd4QD'ldk:G{lIFrcGP XK5D [ {֮qJFtR% > w2#'?][=E mb6)Fјyy5,v2! i ҆(qerB{~*y> F ex iӮؼ*sLa"юX  a(_,t[SApXz~?/4ZA$;w{(,Zޫhڴ&sss,.."O?St3+#װߴMTʜoNkOM ~)#1Ldʸdד?۽,in@B^T±hAZH L",_nh܅jB>A3nj}O2VxڈŽvkѲ-r=,$>~G?g6v_o!Nop8d p1}µsmS*VJ1U'W XPTњ\'9?pW5s+)salg{.\f>cR]{#: qpο}i~W?믮s&߯96#\qtk4{WM NWA(j6n9C)7cF,-j5"\%nib15#;qXn^([d}h2OQ&—c`uYMܠ@&/<6헬=:KShe0Y'AaatdoJG,0nYycvI, MJAkVWJ$ܷKS"q%̝Ӛ#RX JcE^ZŹ _jYbS k N",";|GZ$1zn&6WuRs  /\9]Sʕ²k=γ KWS8EP8A1:&quZ;etH/h,EFþ~ɘբ^k(ƈyap IDATOF8UT?OmЇҡ k; k$ZL罗 yOEX&tZU,G1ʀN ȅU@'ҐuIkU-eɨ7azBdQu4F{bx>V.sTE!@K1ۻk])qs8mDYF%MX]!"–%.ðc0׾bhRK E1!/hHM$ ;18ύҳɼ GYƩn"NĆŅ>wʇ1ӭiʙ3gx衇x]<.z298ЖQ%GۦMg9̀t3NR}8B{'aP=)%m| m:?Eze븎븎~u ;>ү0,btFݠum\@;&i>\Eqk/_EBR* u^1zӜy1xD[:py2HԤ4^Ub3Oo狟?\=;3q|zPs^N9KCX /LFa`o#JaL[ oTw^}֕73Z&Qr2X>,qIAo^\إΖvγp<$g{Wx䵋t{/hbFWX|v& Bg$icd)ZhN=<|x$^XI n ںEҚgayiy.4 &U @2*1(h"$6 W٫Z=V g s2x+(㫀}-`CFןaۡӚOIEaE^R;F)a"DCTc~Ug1l8v`j`tH5quq>–֕I"P:8T*,PP|6p=\Ub1 Jk4EEHiL;$Q{v*y wP󪙪JꘫbPVbMd9z(l8$4V$T9|zeXxڙt*p,{Gh()򒸕ҚoKaf^N+fb( >).] [p ar;@+pmw<򛌭=&QJdQN2lU̇4Zi;Ï}!eѯe^{,*i&Hލn;te|G8GL}1{ez*o67]_._7M;cejz eQ|;/c$r؟m(@e0K˝N;븎븎Y S>tn RGUa)$+SgLgM;""cƠTyNUU26$/*E7Xm(bBD,`~Arj/͛7H [qZӐٗQXZpb= JQL)66i< ;]KDᶷ{%4?ޙpFnQmg,6ջbDDQigi?;I7 P'x-8V9{og>Ӕ;;죒C{,9y}("ʢCqfPkGbz-޿ɧ>ϯ~_< 0c\}`pf27+y- +C TzW.aA&2*St-4i-躌Ns CΐRJɰ3G̥hlReRY]pjԡ-vU*mј]L5iT(- >[!̦fY+-DcyEYw(B T!Z!P9h r;OQKHt$q`lmo0D$*v i6ǘ?p*ǩWx5v ,C@QD@+T)MA>7,id!AĴ:CEVUo[FOWK&VH 6a`o̰?&/A{!Ŋ,d\F#"567.o_=#8EH4~񰏯B١rE(F)sj2W5^iDJUݞס}9Lf(@PE J`Xe^ш2sx'$J8v-[X΅$|!(L=Q*IAi9HӜ˭x@{%CTEP=}2g?`2 mb %,{~wH5'֚FQ:GUJ{O5Rf3Vz(1YG}_1E9‹,L'UUd4 ДeM?sLV)5cN)٭>wߝd\n@8YX\'s1C)'VbՏ_M$T޲G,a̴6YWjJMSVZ`Y̷~?9r|0w}:븎븎c(#o4Q(Vi5M%[Y*W+ W3G9 e7&k FÙ)(/x{ '62A1>,,t93hcq .VWj:a wLc=8q^{Eq=snqXҺ&RpV ņ/{E&yY87.4?yd|@1/)FLفy L!V{^#__ڣ/|oPNS%2G|WaH8AX[1n9wvfF{TNIml z} JvX۾/ʛu-ք!JJ FK-J:V͘bQTʑ m2$*blvGD١<9BTELP{K=d|5~> (D0Hu+O16QFR}MG >Q(12[u_X|+*1jCl9[:uM+vŠZ,mR F{.!BUkp\ˬ1fӟikq_ggX ^}HnJC3|NUbq`W`F]ANǚ(jA=XqNf^DȌp{;v?ɲ`av ( 0  aZMD3s 7|ʞڷсy`э8#U<|3nscoG_*hBsZWhm؉AE$MMDQE ")WhU!~#NN*X% x;krjn2҂+^\A6ї?M/1Q&+'V/se}"tq]`~ sϦV)ٟSRse, yJ. ()B\ftnT!JtҘdްGr;k z}ݜqj1 GÊ]"xlQ6Va\!?,k/K=A+I(ZJ!"?TRI5YD.L>LE )F3k$Ih]9*{Mr>ŃxXVCG5q"!-Uǁh+mDjCE͖YRSKc-PU+0n`!*[7;pJ;b}Tʱ+-X!Ʀ+q熒858͚6BNp=]N\GR,z^6Ƭ«*2(mpT ,ልm&yNǡAqS|mC}YTAVXqFęsGlVSa~o% d;a4I>u E}`ȑ`P^WHiΝ=éY3)=*|ֈW귲_/}F1'sh{3<&>p)1.--wy tf@?w?$X0&x#><sn?z3^? ryS1ou\u\ c(%ujzP}N08WTDF<HZĆ*ko ]͘ o\;s ׮dB׿Uxo}$˜NI&Px'lmDlqEϋC0J37ogOH9עMwtsI؜-(:xq)P?_ccs=zqŻ̟`hpG}-V1ۦYn6cՉs؍6Gf3 a=TuJa qV(ؾ(u:/%8贚g4*JD#R':5$ o 0$tm>20ZNP@y.E椠Ct"ChvgVV/ h(/?(KHӌvGL*\0? cI *RI'@1e%)C(ƓXY|ީؤB* 4יԁʁ,Z੸Sg`,' I̤O{>KVZ]ՏXb8b}3jo^~Ɗ6J}D+me].e:fu=ƕmn4|_򹻙 sFÜ(X_3x G#zd̃g=߆^y)FLf)H.J1Aj0n>Ey=P7/"ĢH$LcQ"$Jx!!2Qڐh*xPH)nnPyTwLj68O9`QC5;(%((t" wb@MeS+c"%e&ִfB8%r"Ai\+k֟[]fZLJ)b U :$}E}a EE&YlNv-=QC5 RX (--hIbE8El`F!84*6$昛X83Ƕ+'9}}Y{PcMl@J%ሽ]-$IZ ɰ!- ڃN(8YkM~[hkHLFl1י R!{lfH//$PKS0x`z3KgngN7JW۵Ϗzp?[ք+fqq/{Wf똲=".\$G9Hu C*,T%uvKO!xw3Y// !(k&Y$@ RRagdsEd\pvZZD+N<6ߤx%l~caaN,a`5!T.t1w#&Ab{BR:40e3ұL=ށwzM $0o"~ȭݫfU Xg8E|2tX_Y{mwIƓ> [\zXa^~"V.+'H㊅"gQ =ƌ)įMVt4P'bweEբ( 4әX[nSLJ5HVI =F&J 5 =Bu(/)"u HMnvE53P{`sGVY""2n@Q%t^@m+IB(bc"2D`hf v͹;#F׆]}>Fos:|/g]ݞ IDATk,_haš,x^ݽ0$46JklEPUU5ZeV 휧*-f# / N}`+FUKgތi2NaYAVQE1N˾˷L=A !cVPr%>_?>j$ޓe /1Ofˁmj4,--X_`A!(<ω㔲,6xYye}9˽Wuu&%jLy@ '$ @#@# 1GAq2FM"˒)"%n^WoǹիfӲ#]U{ŋe9~#{>{me⽀{ǻw`{͏9sR'uR'uRY{* :7qc,nQ#<Ȓw,6`ǟ/P>-D4vTDiLsh6S<eHD!DҀr:̈́sgX^ls?TcaI#(&Ls+3;?U3ݎǎ9WS/xBRYh[CbGX+{a>/·_~VNc{ѕĈ李 +fi3|sv#S斬 i}qYS؝.mi.28d&f#2>yLr9KN()*yI3oJ?ojיZfΘav kk*N v|y \Yr88~78PB:}׳Er~*d,^$^v}iiV~?ga8p]l3Tt:}VFLmJdinw(^3U.\*Taq&`]?*u׉5^ `)%iE8z%#e@@v(名2k՘Qp{TRu3 ֦w$ ;S !$ad7kJ z2<Uk/CIm1lu]hQbtQcpJ`1 Sn Ԉ `I2 F# ;Me[:İɸ10R 6^8Z֣3AҒPE&@TH%GEK,a_пt?dX^qY_Y`|G4$M^%xywSL#,Cɚ.>8{(RAEIp8W1[=o]`ԳWa2QYx{S뛯y0L:s `QXRe>}/xfLv{<{7CN6Z$)7nGCO=?OT"vɟt I@cdmm,M)!\}A 8sqpp7xW{gg{x1J%w:sR'uR'uR'7Q' P[dpLBhwcW N E9NR{,y ya<[,Nz}jh7 RBTC ϓnSQxjT Ȓ .hlY'~DnUzz( sz}?w9ü; ϽA$AB=h MC.|!io}~CrV`%FZ$4Ou~-Oh^KA  +IOԧh^i!MAY8 +ilW_>?xssg&>7e j~9<{;uP5,1ӃGlP}Z,,0I.fT1BqhvHk-A"c23,F,,e14Xѐj"K[ЂvEnG-7q+caq{|f=¸Ct;k4Dc -&]ņEnHYL D=j>APxO]YȽL2 4E%#|q )Sf ϬjǗw8u  l dEA|X)-k[i$lzI֑,,v\_h2i53Ґ(Bcq.U.`1/2)+IDw:,sBYYZ9.i8So6K%Üd{G dD!RT, tZ Â;cIj(򼌩C8vEjca-f1Bgl! tՉ[3*ѭSeIԦJ)Wx52`%$e0bArh( r05(jch':$* =:pG)SƓX\=EFQݺT~<§-""ksIl~tP9DIPdig-dx4 xRE6R$iLjc*2G(M\ pGIpolܞ5G󽫿1aMݻm'Cb8$2Ο? UU͘cy0Ƨ>I^{X8ֲV5ᐪ2<9s;;7;"0ZkN>^:o^Wc,w3pn_{g~?=?t;::uMxhT-Y߉C4!zMmL^p"?,R *Z޺LiJ4 $ؾyyPF;1`:5Ġ !2e=)T3 .Gʷ/;t&jvUT{?P /ST@*~?SO= ڍ8&*KXN x+_:'.{r0;|eL3>?w$2$${_|Os?iΟ?6×5&FdE~ (([ .NfA;{=~O~+|s{Wկ>;ox) ^昁xG4 2)$VՓ$UFճof*p:2ߜJK k n$UO 4H: JfKHڌ|`PzJVlS͵&U*IIA&Y(ޭ!-%kG2mjlrg*a|Nk$d-O' jJ-|VT5p !̃s fAVH .R"FsَQmpO™G!]_=.*4}r ,dqP6Y$i%HX^ZŔS$X֭1U?UU]^B9"0Mh4h"Uuk J*V@"w{nAbdӔ5adrBdPz20wNa, [c%$ ZV"zϤ(GsgXRF[6YɌ*$6?<'M%sAAe<mvH:`09*1 %_x6뜟-Ȉ ,XIU1!YΡ\"NQ:em b ڇ Iګ HA( 5Gn$F0,憬iCjj&R=e}'@Pz(ZK@t A^pAfO:}^kt2ZIdËJ$<,&Z O2T }] ,,5XjvItn[pvū/d2;3р̔6z'P6 qoQ@ tqzRdiʩSh6HfN%d$?_p]$Mɲdkkh69яp@ZMʲ/Yx1Ay\GrɒNNNY' P(|6.DhiQ BxD8}}d;0 ^o̧$MJ@BȄAGwÈu Q_ ϹvgCf|^Hy:`7 ñw@;8 .i+OҟWHRDȝ!؊۷az|jn۷w1"Xn}@}Z)'"Ay*-4$"Xu JϭrsP\UA[q@۪oxSai.oi42֡LJn 6D<& S/}^*{} Goh<[3jHn%~d"AbES/:jo<XdNG6q&&*LzYF>ʱIB3ScIjDR 4H+&0xd3  +m&љHEP9`؊_ZౕuT+ë`?ql9V7V [\=HmU5-aw_QH4m|D/JYuekA5*J_`]aSJlΓ.\pVy_ hzyF8լA:!>MS:M1Êl\ 9-Z]e[;h0&Ř̙4-*WaLEi {1L|t4c*~Ȫu>`}85fz R"MK ZjjT+)p:r+zchR B $(% f"Q:Ah0Slݩf_-mS_*4EU"̦G"BW)c:X@*xcB"CPۊ$F[kYEF١Kv (j0Hj^:KcYSUx@\%&dD`1K:I=3(=,,j 26P:\xT} >rU+ehӂ,iTl-"@:y`T'ܺqY+IuB>R yfE;DL6Ҕ4(9[|`lJRhc ("<ؓL&9o:e>˜R@;==8ghni g]jAliS-?u>@4je Q3XPZ&qIR־~QןZfZ. u\}?'8w>^BQџFEi5[L޾vW^.{|_co .P'I4.<[YZ2Y]YEՅϐ2i42VWWh6KUyS+E?ȹsg|2/"n#PJ+/n9yzX#q-Q?8p#O7?_Qz~II{U' P*j@ J>X`5$ A)Hj PxgN fbpc9Xj5NjjH5jvIF-zܹsjEy6`+'Zo_˿ho&ѧif'+t[ G,#leK_sZf{X0ISF!Ncggqr8_DiziG `/ 3$#ى.O7& 3W٫&m\YqcK]v{auiFHgl ӸSwKNSsc Y=u~"-jBAV(o1I`4)2z G0Sz=\'M@<&B$f_V9_N+)iAJE<DsMHT4Z ͅ&)KyN^Pf 8I*=^ U**C1i1. -APㅇ?ZE5c[LڋXYі Mȓo+x-"lrEi^^pQֱ*RP@$r*c̳Z>=NJG"衃^Rrizg=|9> U =:/LCV[\}KMݳDXGyq`)MrB3i ؾ*Pr*z{Cސ!s6it&!4:;wvTTyvF :&+'dѰcԿ:eKsjko#Fw߳RB.`& [Ck(*G&$l.Hb*+2NH|hA*%J‘ K12zk&#anLh%<*Ah研 "7* Mbl@R.h=3Ӕ9vѩi'sb^Om^dz2(zcBb $Xe^D&~" EZx,Q+I2ETqpBjK%ek^TRd}ݫ!!cy!x:7p}78{FQ#-&v>ĺi KHIT,'LFF $m$:A>i#^χ>q|/, : %{ [٭qo'KN:ŹsyZZX-\2c .^!$.].S|ߩA s_kM٠*_ܹ,Uj`tuuv֭-GHGcx9~=RJ:>oXhh<\~!7oޤ?<|_1 !8';κJxg0o! ޣ=F;:: T0UL@BL'"J|q6"(QB^P9nbqP:n%7zeXk$KIBc&oC{P3ᑍ++G " K\-'R翋4/+^ΊX"yKam!P &ݿTRnY#Nq |ۯVűL2l AH,=>\sz'5!n:H!M9r@=iok>a@XÒna$ zf`75 ԓ?35Tdz/d 27aRÒ:#RLL?- &TF$(IFC|bo`o{ۍ+ (!XtJ`zF|QH Xѹ _p̣ 7 IDAT! `J="fM@"5Y$3$Ri5Ivj~{HxUڃꂥ3nZ&{f+'BC[z4 O>Ţǫ^&Bl,);e'#oŸ,9wIH"h &ބ:[#ф6›Tdh<[}nnoqG{e4i㼏iSoݺo~G.B919]L wssNpT^ZUi1s`-Nr*BI-Hq*84  A*ґReě2B ̀@ ] `tZZ%:Zi"!XK0"P+dj"$X@P cabX9%K#KQX_!( DiRg1􌥠rK 3MROe-]<>|@"/Y^[Pڢf8~{{ y?V33JFiJ5h6d&ZKF$MqB&H#ܸ~HfV!<s3~{GP5w{ǃ߹3oi0ȲS9`FOr}_d{{{'htt:]}zУcvh2)= Ftp2E $:U$_a;\쳷uK[#b5+`|pp bLtg+>soز&֢|@2zD*l`l+{|ڛ{Y*L !tID ڸLcCByDNC$f+Og'dJVx@GT,ZK2 @wA7NFbհP4ѩO4+97=r?U6Z@4!>YyE;GRlQIUdY/PΡLA;tfЬ lX!hq'1k˩OeNc-M0qpp8aph*8<e "yt Y(ɣ.#C .,VBg!0j(TI|DBsMƩ%Z ?q[q fqEm)ƴcc!UUԞ$h6'c7NLҚJ*$ivZ<TeNlb%xcp5Gy/#U c@ ֢b0 <wvT;H77I_Pc.g }њDH3x_9ԀZ%֚4IѸ)>O+ E݌T_8bF@G{_c}4X1}~ioY nW AYc&YlllŋgWJqߙM.O|I׹~vL@ɳ >|#O;+F#ӛc< c*%IPRͼIԳ^wvvDvҥKm6J)666xXZZf0ݗ^r_i|t/`IOII:&^w GzT ,!x×P"T6&(X'HS)ӌ"bjdi@Rn MʝFf3ؽyP1"k}`x2.?D8SkuͯHNW翯V#71(\+R ]3&o"lA̸?uj6Br7lPw^xbg ꈤ7슻bw9|W0+1p TU?aM7Q:K[}I'7/<^Zt'4tLv,#lE7[.>^3#v"짠(<6PJ$x{\%nJ;yp,4Eel_g`h8h M DCNלg*n&,Iup7hM<͢B+H!^`ǁ ,:A{Z$6 ]#$NJ6֟zZ\mޥ\.vCδ~?zMo _Yv4)q I,W1“{oۍ5J ֒z,|}2!w&Gs1( ߟ;k#kd b!i,nnjzl%^~-V O"RDJRV%ȫ;5#|[}ԃ^D7N(f]".̃S=<4 $ 4f V, Ao T%>&fw̖dhfŒj&`4P30=Z!.TsL>&MQI O`k >jJW)>֢D\O5M򬯍S̸SIįiB@%BE L0;&kߊr76F#F1!nܸ,X][Zߛen˿m>GcvR'uR'uRJ*O+G^Kp|e㍏r_SSO sc QHjt;TK$ g(F[Q|< M@a'N5t٬JBd}O!7 rq0&%*XW8ދbX 1cpL'oߐ vV`-Le\Hy0r B>M4SsO',ΘPwwH7WLxG z&d?L.ig_qJgȴUNE7 H0MC`qD0SZO{sz.jf,ԋ apfp:JC2t }&LQrxH*B"ǘ]x[VT#мby 6&BDBex+XG.ht3S! ;)łb'+uA`^i8^jMQv^gbʘ>vCM#g,!U3=`jt"v!M0}UN)&k+.}]ܸ2 Ti$mY.m/Y) E^R +}f/gٔ()k[dJT\7 6P(ja#FM2E( zRp,FZΘ<4xp8w2x2S !H!Q8 Ա$d6.K X޳Lhk! vGdE '*Bv' k*I=R eB̘ / RK\ {*cI =MP1]$JôM}|jC<&d % (C`XarIҒdMA@/0~߰a q4^Q@Fʠ2Xg(s(< -٘y%jtT2  x׮VQf϶]yo̹io h)")F$J*.[*zW&o_?QUzP*ıdW*r,HJ$niw9Ük9T)gT}^{57կ]ə-/-VmݓO>wEN4f3~֭[Ր[Ζ)H]@n1'c1V εs?9s5&Yki*TM͛o~_?Wq=eIhk"̤RrѐyO HA1*SErapYsr25mya̽.sDrM,g;xZ<<< G:moǜE}@]Z{O;` Q/GA#a5d@TۀA`a~56ƻ.WP7G4ub-LMhPiE em[3S y=Ki 5)|v;Y%p@n)=[:Ev,Qɖ|ٸٓϢGMU Xs~`vSwgFl"&+Tifh5|5D2ʽ;䨫PTغtT| `Z6ZƮ|YI`Hq ZK`0/=AxXPSF^#5.lՁQèHP k6a6lW5 X KARǖ.L=4*^9p)c.W7;m{|sl=;V_g?My8$9#Tltk$_ GҫTu[TPظǪEg,7o=Fd*xj-v:u]9B45eC3k`XpDc.q-,vgPؗ~Ydc\>dRՔ2" c dF64T T;g?C~rp)}Z[ڍuhQxCjHk,և%UcxL% :_+_ Ƌ/ȟɟ/:ՕK}q|eC}&%@4uTN#e_D)q7ߺY.52'e3=d+18؀Y5ezmhݽ6U|USq!<_c$AGұ4ݗ3qNo_~)Jo]@$/C>Asw°lvK*U怷OlJo3eh@` Yn"ӫ \`AI`#up鹹*M]QC^koR$ik;ֿB#QLjṛFb̑$LonKmblIc@ZuYqPap6^d9ll F¼V&sW/$ ǦFa;sXScs(M%Ta"vT.eMbeh4޾É Ƚʼne_<.j`vL/uEUE[ XSd8KGqD&{Dp*1f%6>٥ggn_`u._n┙Gn49Mw:׫ʟoo*?gxM4K}Sˀ3Nk<Oկ~OLg3~_cOp@Q|*U9g_W?$runs][ˢl 0cg{hNB,U'8>>i1?֭[u4yg۷|0z>[?i/F"888=Aձl"Dk7uk[:ش@%E{/f%Fw=Bm9fO>ᕷ )g= oB5T3G9.VȳWe_А&QM ;x2)2sp 4Ec89ļ"OKH59«PʽBWnۘCjSr%BPCCAA6`S0[4#lAU9Bf@)!y$4\TZM--K4&wty2RTpF`^P FgrDwEڍT(!=[A]I4E]W87$R(X#LjyϕɱcYwPH#CBҲz0aRӨggkhqgwҰp' ti4\X#8imW3>I,yVybKsc"63d24T#!$e G(ULʅ]zy'cz3DJN^>eO="dわ bs?M=9߻XZFIl46KOvz"4#P>Ks[bm]ޡad=JyV'>|NލM']ْA{Vxϐʓ'O/ب+hb cbh^؛zJGB,;*SikTٺN+Bkjwnd.ⱁAfytkH%y7|(. N0{hax9hkcadf` SӨ$5Y{kgO$#J`Q 6~_dq9b+,n`w\0:& SeAX@y\4 \L+yEU0ox1(@9m\}_̻2dq՚0yw)s,2WAAA'cW2/:L%nZX5OP)Sv@"L2 cg0HQ@n%j$m(Џ(G>e2jJhKd)k5nSIrB` =acB'F҅ĤVeX6 dХhQk g}L1d2,(Sc9 ʞwYdYTm *Ut/]{㙦xBRo3Ux?$/F\5YK4o:YYuLgye,34Nc=  ֘&ss]~+??+W;!|FYU;RӶbL4qE]/r%6&ު<w`1yWvQ/"`իWyu%lnmq||tTNWlmorU0eR]E|7^E#ROl>.Nڒk1yE.cdJ, @`G_`o LQ,/}j?wpdnJy.4% ױfuByBFp B܁Sa5v1@ݕ $#&6I7Bbkr7L@ yPLR(H~$֒P854APA\$n5xL*+H]jbJd"Ѵ)IeEݮ`XTsÊaZ#r@0NlPgPS8vZ&F`"~v"-=QIЖR)A*o5{/3!3O_y7_1?Jc(r1 \0^2 hŧP_+ T O=k措Q&7]R<5peqq\pRflxd`_dk8;dslRsn{ymqv-*, nO]?ip6w8ٻ`>V:1$};,+2I5i ˜tkZea# 2(QyrcmA1Xڸq7B-v>G#&~DƹK)}ۭDpuNAC<ǘ8ṭ46F0bb4Ttv 9, |74(D1k<6hZ)+G .g^c S:6an9.:A%8tU]1(w6CI;$3d |))4yJES-++=Kw59ͨ]4C,g8S a4Fc16#xpr2!/sX2z .jTT{Xp x{[콬*n߹/%~7.|_K/ĝ;wLNp>jEx=;ܹs':[!" w&^{ǘ茜ãcS y p!`ɔ$M+PG%^[ M})1 wU/Q30[gaǵ^c+JX|+_Iɿ)88; G8i[>g7Ke⟴]-iCg`.v|lB{#w`EGT5mSL 'זiǞ^|G@ #6mSS*$4 Hc>;cn0MGGwW&Ų`:F $ ,ǯm"lci6{o&Qu`]ѣ7'+viy{3sl˶V-juI&KvՇ~2!v̳f>^&'p㕝!H%:C `SŚXR >mXִ3*mfg!.B.BUyDv<&h88q8k6MvŦ@JBDƓ_A5nD-%9i7;2J#QKV?`s3ǝCX n |ef^0Y0/m.(gcE ͔+ajr(gBMv ;'ܾ5޻ECvG|^“qcn.6w(n3F,~`u?بi9"ti&TTOB41m,-Rt^y&XQS'JgXuԷ 1I]0xxcb"kXJ7Ht%6ƚ\/@=y1iVT&QGAɓkqNd"dHx$cM4~W&%!^JaZ{lnG[:D nTi2hF?_Qha1WnJ"/rkwf3+`h79rMIe,3鹵Ӏ`F?˾g ]Bl xE4{J<#WP*L' Bpq[CgY_NrY/0M|h~ {Z޴m!;!90h`|>ܳk_enc|t:|woLYUF v*%S2{+`uDgxך-KERKY{d9~HF4f)[)0[3@{-`,nfd1d=ꜵs>d]+go7ӿu-1g|yyyǏ+Aj'׼2xh-Btvbybm|yL'4'{ 2<\?K8n_KȶϨ|vݾgh4M\$9gyY/ eAWU-@(男&۾^y@K!.^g ^GKxhKCoC3Ke2vH3y'͑,2>2㖵 kOzBV^<޵êJ~_K:Cby5 ,ZuH2N FDSyTB5y-R]ۼFa(s$I 0 FFܱFy0uLضD#ȒCYը&g =󑀗F1z;NO{%}ZYNd"=|kR~c pM|sy}ɬf[QAYčThQ yg͐qyhذ %7Q JF- U(1dNhDl:qqPdC.y:lۛ 1_1[g~waZs׹b|Fg@t;,ٸ-k ۖǛ lA4碁׆x^F7بi k1(Q -^tܖM\K 7n׿ vwvs#Wަ( TUb`2p-|MʪjBjAMaB߱[&/nls)W[Þ)9smKzի뉔ko޼;e*lɧOV*<]tڙ888/ASwk-dڅcaʉ`|JH8We L4t@6wȶm_|Cdi`~:F=|+Jyc?EcG& .9ye8ٖjIIuK; 0}%6 p;F}#B[ch9g~MahoےfH9#j2 ϩg7Ac רؖik&-W+9 z2~tyPc(.< 8=ң. ]e:.s]Vt7u-߫i-Ea&gVd_&v3=ursTtL+OlL3=N 畠!:x~5BZW8۪CR bee*(2.s u{%opTzN9)M,E>ʑgkJ4JᣆFK 5u\D .Ln˽gc.DŽfE=dM!ko٣"[p7dVLf%EM>9ƣȚ){E6f-å&wTDXP1d`4w=r8-ɨ]$4hLW;64K\̍ /_WX5[Pi#,HrCI89iؽg && 4Brvi 4j:a8nw|A@u B0FLd9&FRLͲ 0МGɸ`&t͍ l`O'UI6(ȋ!;dvK>,>Pbi|W?|>.AN=L#cKux`^,ʒƛ's%pO8\ʽUbHhmײ\cHJM?ǞbAf e/_S%SKmqOX\'>D]] IDATiC<?C#`PyϠ(u|SqfH($"R=S(ޠ:M/h{ w}ÜS2NMe ޣ#ʷ 9ΣA}@Bl_!O9O fAuml?BI{@l2BpwmަAV[?L{epL|ZcM9 h&T2EJb@$JAY;. 02i@5_?xHѡpc]C@j^y6F >x>Y0Qp\7%c,$RM\bRE6l&B'f< xUl6&Y OVHerZcFWTF/Xk!*$@0 36G7cW9wͷXdA,KC)ؿObgv^W B`I9\3e>fk-, J)"a$2"'cKi,]3A%e399'1ftuڳ-OtNeEe 77Kl᪆e锢11fcy^0>`X_O|X%nkYy4>!{3RC&~ʯxﭵV9svbtS?+-=n'GMxjaPr$⿺>AK4cl yTB43̪LSO.=MȐlhpm%P b#A0uB3O')ӮƎpQT3h&`a@,!eYyYvFIb.a]>P]G A7cc6:zIEXvZpAFg0̜#&tBѨvܖ_bїed`_*XTjeoWYn[F`mR0P^ Jna&i,GMऑh \%{#VJ"HB,4 &Ш[na` 0Ge䈃oɝ`)3Kstć𬢑<[9[:N?Æ,uRYwR" g ᶽuJ<'`}`4Ȭ63+x xE]E $5MI},)JUzjX&s(N "+#}&`OUU+O_O=~߸Ë %_~nOggs)xQ{F,')xyr2FeNX 4EcQ\Vpcp#|F 5(>XG[~=`j~q,wxyE#"xہ5A=e9kjxs 6Cl?ϯʯ|># +MIk-wtஸ-Ocĭ>@f/kaA~u 6X?%>z]fa:eZefEqL !\ʍo_V}vk{b%qqq_%ފqJ':7FM,nuv9HH;}֣$@Sl\:Ҝ&l^ye{ 0[ f)qBM\n( 20&sfƳg9魗P|茫.K*<.lpBh"|f4Ƒͦ 0}@PMq!~vBXBpz1+6z3;p / L]MLְ5`ˬ Tair]D#>h /BҦZRL[`KP֌c06T6I0@nq.lmMj#m=dI*K6ր*ؑkLWcs³_z^cBh%9K*魥DAqY6bT)2À<";CȄAF6|-JWP?`|d~4%5D +[^b)rLrk]Qbni{[)$]$j`2UB&eYT6˰y`8O];CkL *ۙkX 5KDͤ ;vEPkU*.XT yl!Rte#eDxˆO]ȕKt=|S_a}XIwM h&6f%jQS {%#LqBNL&R#%C1Nm7iY+#uf_?C@|%;WUM䃂b47\,f2eY'+OS/,1j},vvv?M1Hd1k|7oR7Mc~ U1Rrl ،gےV~Czϭ]I1dYl6f?x,9Y^YcHfs"U?nsqq?s#Ē _Xꎄ 9|߉?iW&mEl)6Fp,@ UI}r5wd %ACrMhB*woP?Xqކ@?t>tIی sQѻ,+520:ZM:Ɋb|q L1@lNGZNħWJcVUk_P^.ߦ;HZmDaMkYP:%i7>!ʹfYJL*S_&/LC{K).[{Z0NcM뿻tz|.t1&|B6 0֢r.\ujL:QjYnMUL&m|,18 L^yrB>ɷ1;WOl.[yh{Z&}lR}Y>ߎ˒3g?hkG1ʡ ClV28Z5U $xr1䘲aX9|@b9U!z5:QbPiFiik|ޭM`^y^(޻tV ՐiÕ.p.&\b% 1Hr')O%Ij jsKޤ&X9M3GPcX89i؜56Ixs #˒\PyOڳ_6@S+m|Dl }F_JbR|J#󜍭-f)ӓcPmAE ;Ő,U2l~;:{`ֲq|t{k'◾%{q~wwtgE7?cZggX;Y.-W?@r? %PZJ\vݹFGLN*_ikud0EM5mmt4[2Ylnmrppv? j>ߢyyyݎsD 2+ra՟C *D R.MEhf7]y|Q|/C7MIw“0^>nFD 8.5jmŇeV,M&4>&v x!x 0Ȅ8dqBZz@6&|4ۄ19Bˀ}Q;4!":vO*1L=sJkZ[p)"s "Voz>MVa93 Č0@ (M4R$ь"XmeQ9W2 sPFV,8 %Ӹ5#rHҋ7!~50]rSvp/Z+jUbb+ 뗸`4\f02U !2~Xkg?7X\y%ϒӱQ2,߉DlMYf[PV &3Bp$5`y{iVHd].Y?B;SYo'ɳS%j+ꊼq.:cs*7i 1by+/y7 i51vE}SWU|TT, 49l9Hj.ҍ`7#r=L_0mhrd^?i,(}~&u&okԿK.L˯0mBZ<뙟&={V򷡒<<<9"C+su z]E1*3n/!C%bsh12(}IpZ'4G\CF)aFeƢI7CEWBb".O/ZV8ϸ(ҞclZ#SA"+Iظ(,ZV !vCn4i12NzI6ŧk`\i NZ}F'EV: +_TOKrVdI'm6*63&U'wen4_>|`\a"C ^}v zw6Etv{f}z%Ogc GqNVQ[Ӷ%eg+\ޭ>e@[~ ~b9v9 raXdLNJiX e4p"_P%CG?5efUsk}ܤ$F@H+4>`XFb׬lc7,7P,_6Z/q5d@0Gs彿眪|CfUeS{fD̼ϩ+-(EB%wXAg:ir)9e0Jr5@& bpo(Ycqy4MBYZl1"IRFc =):ʐZ]Z68R" DxG}~$V#[N;fqm4~`h\)f7cL fQ.ԸVkY3~D: v"e1)I2FVx֚,(˂ןYf'wi51!Ο( zU>cHcL=Fʲ$/N}+YGaKΊƘӉZKQZsWADJF;"l Z)P?k$Xkp$u5XG@ଥ(KzgcHzZ)Lb=]|__3Z"1ڏe:Ctmnsds(IC-'i!йN@ 㠖h&![XesGoz˷1|*R1ϰE9K1ڤlU^_GMpT1*=FW0Uv+N%FPb;.nB P&apYDƘ2$╫%e佞OAqi%wJisrTW*JEo- yoV8*UP^#ʋ}xJN5m\8g E^ >$&9y?4yf'ӖGm?V RY%椳qHV;0riq]HkWh0+FGu}դj"znJvU(bJ0(2P9D3X*%Ɛn9QU]Ը3| HDHtҚeɝ;ǸSpR N|CuPCMLBЁTȅ{9 vo:]'B[@Jvw7vY]=epNfCfRMO3}ZrJ'ƏT 0!ym9G$SeQV <'hw~])6=w Ti]j^IWޠGhBSDi`!|ͱYߍ-I+ҋ}8Wo X록֤i=É'F#^s/oCaP![)v)vcRl3<ٚEVΪrfnܠ)׿P 4|gPɀ(AF%^:K/Cj+J b{H!Ϋ W7j{OnHa+VMqcDn4GJ)DSRU M4Mp\Q (G)PrLTv_x:~mOtVI!QpBcaUʜw&F$LEbd$gtTơoq|y X; i p EP5E%][r{PŁ(4LSmW *J>).4ѤYF99"0WW,,c m`8Cc9 s>3V4%g+PrT',8!ueGc҉ߤE((֊D3mb7WKStq4A -^yI[u p /Y.P58e4&ME_ J4Iϯi$bڸr96w"s@#2&a .pq[˗/[vacwggۿ#'%\t~=>?k< diwP[>4ѨoU7I;;xC>1v8oZk?ΟPݮpx0w}'lW7x7`ii{ݝpocG]z'^/~"29‰'9U~^o={vvvx VcGaF,JS3~&n !?6mnA(_[f69\[Y'{’J/PD!sEIB!=x܈|eda tdG z+'`I9cpvvgel IDAT'aK$  ;^8moRn_Bs#N1$5SC=0 :Y\%!=#u? bx->nq3CSh!\?%aUV9LV R(!QEb [55KW$b V쉪4$ LfuA`CatPsڄ>UD~sƊ-+T_S"ȵkHAE1UD>:CEխgǸ %n(W#nU_g4j5IYUu=*y܂#Sr b2'&J/b$ڠ5W B LiX>Y*5,u7.xuCAؓ!Y3X muOr VH d>I9hD?MY]^B26 f$\-r6DӰ 厤^X+B=i:WcA&>g)=2\ q\Vrlja(f[) 4K_ǜ u۰"9W R5,jbsK*椚 HyYm* ϺR,4SUWv^0a ̩Z} T}nD_LTI\(؅–sk9u #)|Q>ٳ~iw.Mvv9s _})>+gOÉOsFPIY^Z||?)wq/<^~Ǐ;'>s9o:}ޏWKFqhXp<_S?~MQ͆|eӧfaϷ|{xɧ8ZkwuQ5儷f$OE^1Խ{Z8LBڝv-+=qxW L8kC69x[l/"+lAD >ϓg &%(E!vf8:[&ʽ c$=($K bʀkm"ױ9pu|jJj},,bzXzPQruTa159%$`2I]Aq{цQ[+B0xZW ,` aF+NJI;*8:ܵ팂F8lcӰ*kHW4:n}x_ l6@]&o7G7#:5^uL<"Rsgk,3EH|~}2GÊ>!`PbQ)dR--?~24_H3H+iN{AAƬ `E͔;`UZ 8nj\6xxRmNu;o9*I _$P(^ΐ13앖2I %a(|mـUeHmfx i hRHqB˕TX{Cb)fOi\j\<8vCob@.нfө U5si >j~e+uPz9\7zy>B$0X yl_k)^Қ^];:x4 \f2VycyXFJg=ZaccsG}VogZℵ5zlg%r >^]vvv*]?q~g W^Z$7}?S?ſt$Shs򹚋doomLEeiٵC^xE1EYDNӌ\t.\d8Q/PoM$]:q6mn9xC-'mc>WXA n" :\,66$U-{p^C߱#e\9$]:dKX82tl5Ímx܇새a5s3{nY?C-Z YcGƜ_c0 i%#锣!Cq+,K @ߠ1YG J sde %8+NϿ4iV.QtяKK9{RF:((;=+58L DӭUpR *Hp)ƀ9vE}q: J Hl)eA% *xf^ׄ馩]ƻ\g[nh c۳dpÿU_L,+(+ƞ*eI >9\Rʕ+!?󖷼˿+\N!RCsOmw˿^dooslի+\O8Ac];mnsasi*򉧤oZ;ݻ]iΡ1d"nDwfR)('(q@AG2&[)BFB ɕCĖ!/QWpt,$vyTa\)k2TC%=0>1sT,Q p.1 M1&Ŗ{!.z`YD|0aZ~j}4u}{Q6V 6jBmp3=f^SN7.ߔ5B "Un fsRv#(NCh,hJy5/-Edg9rbλo+dƤ(Lv(38˓/]tBFC6tZ+-s#$Lq^KoD*!&ѤFi!C1T90t{JW:,xR9Վg'nԢP\[SI쵄Ю[y$ iKWYaPjMHlf}outMu6UO<}ǭSO=Ug{__G?#|s>k k:q7 S9nT~ÁH`~c_駿8%ٍm}6}/ ]6mns{mވIWnkq.vE}J,er1*Bi M/n˜^Fg%&] ƪ[lCPJ-Kl>I`) %$#u,E‡`L4&]V<_J)^ *Iʤ8@%K(<[QvWxnrGTJI.ؽ (G`TG*P\ zڱv뿪aIh$RkQfnkV1(1[*0*!`A%Purյ)O[AHEcEgt xA%dgYePRNlI9m1s &.p%1gWkg*.EЛX2c aԭV%fu~ Q*+"*>e]qĀ= J&a1( iQxK6:SibCRbƠ#ضFWyTʵd5DbunuZeyb0ڰh<F1ԧXZ^fa_c1 qN&W5,k ޏ-(q76mns6oX-׀ylriŋj:seD聳^A4N)$;pcުgio#KWb.Eg $"ʤ !$W*II\陁XVj J`hU~ghtBLA啎(%87pm( HTWHeDx3mezAlWk1:wκgW]3I Rgw k^5YxFl8ZMQïVC;_t L]8L:uK9!aJՎIFG#*њ&WqP˧۱VH`t=6*y ԫ_o_k UR iVI{Tv!7l]ZF95D#6k_ c9.=<4!z`OAq!:Mp $#K{h뼲o̥3W |C3EOAlDI,HMnK ֍DYqQ Ê¢5,a%I9{nX?bBl |S!LM5.jp O1 %7)6E 9)* w- (znJ rFOLMFeC+"7R%o&!xdn{ІjE|hmq'K_:U?ջ֫...To\YYaeu}kc_*IX]]ciy(}^:Rc.^h4 ]Zcc8W_5·bogg&/ @Q9ZWϏWU|llmnݝ~=( v=s<7o{񎷿r?llm5*¤j\fO]g6aΟAuH^>t/&\tnw_۩҄4Niz;v魠Q^0D0 R-qÜ|JZQ #sS+5 E!;UγYvʒr+F+T`RTGg+hmrL1El6$wvv@(T4Sk>e^ڽkZZAtoVzG UZ 4K5Vk%A&A@AA̓2q 33٧MCN8wi%ft 6udG l/ǫ6䘘j0.`=Si7Q^LbG7<KM nOܸ=RѸi}TD3 a"hí/m /,b &K(F|s9wgzȌfZXvh˜TN ,i¡2ȭPXG/դ"-HDH+;`ma:)v@Vl\/ި08M!`]%SGEJW"3Apiy 8i9˫l^L>)+dWS9|:pdo:^6<;*z׻xGG> ǎc{{Ǐ#?Gز ~R33![[[\z\x7Y_k-.\?9Gf IDATe|G>ʕ+Wxq> vw]7褮{9mnsӶ9xm|G4a 1'ލsYy޽:d"ԯ| :r8ͷPO,`t/Q\C"w2/q kTu$\uE\k]Gd:v|URq` lÍq"mb:["+&"+qAl?$vͿ?oro*,`2,+P#M0ZH] 'I>W[ƙjVG&E` 'T2+v7QL {N*ڮjJתS\zl5j&mڲ NVhWmu;*ʳ+UVTXiM噀Nq<MVch_ 7ãZ1*`xѥ=WwáU_Wǟawd9;8pEΎg̴gKAr "dacBJ aRM(z0_MN^TXnaH& WB&u.]s@Hn}˪cg`t_qثcs41YX\d*!x|~@W{m_s_9QDD:(lҪx"/}Qn|+Fu<3S՛߾iĥpB=DJk0{1||7?C?s?O/Bw3fX(Us~?|C}][/=1Vfɬ68^7X}#6mn>K_0P*(ҵs@LM7PmEp3C\{EI{ PIFq!CQo\z0#VgjRJl \mACUmZ5:I![q;?ʰ}=E+d]׍Ŕ &I`\Pr%Zݗ 1@1H XEeuD\# [E݌L2cz՟+Zp"]Ok\z Pegoq8*Uq4'Q;{Wom<״E$<;N7@D\[XXЁyX臓57n 0q({vzηǥ~iv x:So0ExDhޯ@8YBXX Cq " JRȴ 3BJMPjŞhv׷wg/3sis(=uޏ@Ѭ2W.za:g!yA7dqq 9kw /XG*(S?Wc{j=G*ϏAyO}cwx饗8|K_䡇}{GϝeJL)2{(WNP&Cg}d-pvWnCDB מeíG_EZ]f!V3-up`KB A')P'`=bAUFJb^Nc77O0*m/vԽo|3}J^k@!EEGX`ǟ[SaAuMVjT(Y^oA'烎pk~Ij 9ilɒ+P/<>wUgڵrѳ4uj_oSq}EF&~upbO%ߚ\kMy8]DW@d5D7š^uu;K,$F;Or]w򕧞Wβ%?Iő%FERc| &8[#0~ c+KiIKG&B hVHQa86F]zK vv ؛d*Rc>F ;( u_T,JH Za]]vY8#^ 7[u8`]`{Uc؀cU۪-fkv˺X|_G}{?? :< /^ɓ|CWWn;]w뮻X^^?9(MQP.I}{?__il"{Ӊ14aE1/\䓟$+6tfAk^o6mngs?&h{J ^*nP]L?hZE@Teht۬g9\-@+!Ю}-zIE^ҡo!F)xO2_!Ζ dL 6&t}]XN}o.kg~2oUDA e>l'FnNጩLuNn,ܷ9iՀa|נ\@hjw8 $+)NMfoޙ5熩›*r9EVX:́3spR(\yVƳ8a -'[ zϫJ·vX]Zbyq`$hMo0~~?sgyg?2w?ƛo;__QKJ%5 QT\+b-"D N b센tD2sm4C!{Wr: q~OCuog$ݬI%֙꺊69ZNSRu!Sx',,@ վn&~_~Vv_*᫖*pGEĠn_zQH~5 Tϧ˜f9ɓ'yƇ?a>ϰu>s뭷z/}Km(x֜ ǹ|?/^Ctc0I8lX߬Wm+m!=G>{1uRߏTsjB+9mX]]ի~3(tI\LiT_[oakgۇ ON?)ޯ l;6mnAS28jzuRېz6>/z17lϝ^<6NP^j @8, GP.:@kAU3roR]jiUQ1Aٲ +=CJ@%|$"H U5L!1+ߵ84Q^ck/ N{OG^_+C_E-`F ݖU@ ^a]Eg`׫7;j=$á*[-u763t9HfGk2s>3ƕaVR]fUtST@8%X%ǟ ֢j@O* iZ"]Ŧ= Mow''!gd>IcҔTyV.^88-z9xUJ(׵uZNualC  %Bbab\8zևv\r4ʠŷ6RHh0mSuVJԚw]qj ,yNJ3 ,,-uzz%7{8< WO+aee^d1h)СCiXm5I0IBlT E3<ç>)?8}4?8 C/^KA$ Ibm`cx3^~e|ZCk1, ,-/yPK.>5vz=bii`P_/MS5vYQe$IoM+ll3 @ ށ[Ŋ'ans6ms&re~gYT׎|a+*QEZ7,ַyHKŇh29R%8 J 4N|{JcL RͷB*jt,x4O*1A yEq>TSPXmR93r)MYK󺜋zL0AIs ?O#~y mܪw4I4+aB|oD%ĠQ>]G@ e_Z4w4T9¹ΗYA;BB:5@*<{w1 ] ?7*VNeڱZ! kW_:(\fL¸t(ӫY"(c-XaY%ő ZbBZ: dh· 'Q=5{9 NPN,j@;clֻnz pxfL#sԽr-1ICkk=zx̽O?]30/|~q>찱|#ŋ C>ΕV?s}YFQnceeGs…NZDX__瓟$ЇpQ J$ɓ'?ȳ>K}VWW)˒~ǎرc?5'No~3gΜ_z}Y}7ˮgMLJf1G6mnAd??űcGUr%`w+[yUX{f.'(5b "wKʵ;eU+t-P5&Y m,Ʒ[L+ |P)RL_"ttn.@&ma@ Bv}^DP3ja;~ c`Lלu,@:>Fu׆>famGhBp4,X]D=[L'C+j5gkQm%&hUeaE]z#A)gRU9V3X }MY@[w, 0Yd$C)`+Js8?r~~{}v¹W%Ŭ|(6eA)R4}JgJ1. z 0.KvEȽ4iK[CJVĵB*=5^fWz1[km;OD~Quo{oQp֡MN EY%=6T28w98]c6J`Zkʲ2IXX^^faa~,8z(hr4Z ILFT,ưfU 9EIj,3sEze[*w^wȓԷeqvӚr؎b9 00eD_{Pk um|8hbAHL8G1O3־z竵kbN1]Sk,+b!e?蓤)e/]3wUZ^x/#~\k<3^PG[݃x N>Mspshh4b}}E" }\կs̙3!d!Kj>^F;ʕ+\rk_Zc5iٳ\r4MI'^-y4绎>7U׃-B5o{Hmnsvld;u=Ki> {^XGj(BXAb4{A4U ?L^o+6"V\2a[D5N\Iӭ l4eR^,1X,!!MR3yucFNw _@_+++zV|2z绸|2[[EA>B7}' qاJyF^{BD(˒(ۛɊ2[窉x<.XX1ccpqV9qݫsMJPk̴(bBtkLUL>F6mns>>?|2a&a쩠X1`DX\rBcv_<ǫx_9H*+\MBWy`EZuI2-b֫1No;!}Qkz?w`E?[ri@iR,`Ct F("((U+*ұP PsǕ] $!|w~4[Ӊy.No(x|׀OBzj:숀,ⱆDN׼5'ܫg5֍ԭFB<chxcKw@ah *"AnuohZVAOtX7*, u8=HX#Ep2UDùi3>:D*Rf*v*I"[\`LR֤7-"EeɄe5XUݢwս*ԿL"](Fxr+McB{u3ցs449nǦٰbP5;fpxZ'F.T  Y$ -Ef^ j 6ݎbYqW e,PmDMPnⱻ M*epC(#:IQq^D|R`PUl+Fߍ 8#7vX&+1Y\+iln !<MřaEQ4?9"`XR֕x,ua=y ϪF4-3j~r,aTDjv;/u6ciuDH֠TC"D"H*)J$JCKdy\lEx}Dk8|- Z鷜)>kAWa %aS_i`@'ZV-"LQbEYž*Q]PO_#딮hY__8$<-7m 8 WͲh}FcL &FGcT#PmvX4fGh6P5O w+uǟi64k:0Jq _hUEŭX:*JExWR(,2s- y]nAMPZޘmp80 # kLLطuO=w"inx>i+ls!6USL':Q5  E04YDu -p*\px\ #ȕ6(iuJ+#KvV$3whs*hXNVhWw)"D"H$%ILêmW2P"2(DBE];Je&/!TRq=11ˣiRY6ADZQ\CrHJ \yոb-0%Xn!|ϬJ.YoWT*Ńēl$@`T"Z,Z\lb( nGţc@vvSCnV&GyNnl1JabXG pY7KLV4WA46;" Oc^EE8צ0=\&EK,p'8HHrgA*E $&q !C999a1ټ=oQfs$g RU4TMt4MC>L,XP0, L w Up0 Q¡C-PT2 ,KŰ K\Ɉّ s=&/bA)AW,>$hUќhq֡G#BFJ~B[5%H$IE!E@DRi('n" C1qWJ:—R,68pZGP()Q"XFf~+M~2]|X+֘E4 8вDc"P5S7N*łp5Uua |+L0 Px\}Ͷi m֢QX94 3Ԍ;!LEu+fPDAzJOK} n+E X\%c &?]T{M  DYɱYZU7,*,7xbwbj+Ɩ\7D"9"D"4{_,|JM] dSW-`}.}iv9UV-90Dq?KuS0Sh,֖lG'yD _uOT,t)0L%]Eԏǡ E& mYĭZXEN~ڵЪU+@䒗m3?šBdeɰ-B#J͆i|\r V( Sq- 8nMj6;8F<1܆IC')F%eRd KlJ,*8X0/,`j e)*&&´lkdiǢӲ0݆ o$]]Hkh1ntW!GQl=ϡE֭.9=X~W֊W첫yǓU|}M"TI|7 /XIB 8K1`)sN}H$Ch׽-c"XJ=a$Ƕ97R]EQ+w=Nady,#> TSB 4`5%%s=U;nj;-  Pd8kQٓ)6ZL'JRPQT㱨iwto kAdX&ei( /1,ܻQ!X‘\7S"]&N3EQ5KęҹsTuW]vcZ^(n1#y0b^^*[#|w-wM>p?So*H$ɩGEFSRejpCh!п.{ D"+<4 ʓ]E QWMPO6P)sR8&a Ŕ]m4iٲ-:>/}Bx+ Ph"x"azu-T@!"LUд(2-캝U!ޮҠf NkЀ:ɧTDl11 7Uarٲw/uk')F'H:{w_mI;r ;p(;\%a/qQ,\ $( DI!,A/y]_54E!Fӱi:v 캴nz:uW3c&,7VI'PJ%4Ta]k6 Jfዝ1@TtkibYyn/B ,#@>>JQ[BMUXoFJ. S(L*X3le'Ɵ+/E!r^N=A3 o.Y&,KKvT7ؽ -[iYE7Drc`+$E{o^<ʈD}KK(q\to *3tڵΝ;+/Uy;CY{FCg1g,nloO)siXŠAWs1^:v.ӸeKzx#K?8hyxq'|$(BI-NP('_L+I$dxY'Q&۲:ύ7U|xZWZL(E(^`EEѠSVXN ]Q)R- MPCZ^!Tbmv,W*ب@r͚$%aAmggE\E{!6Kenp2.'õ]#m>g1e`()(/&q&U۶o۴ E| CťKd浣K *h@䓰싗s.%J)Jq,ϥߓ%R߁H:PoD"H*92Y$$%%/Vw//,] *ر }R! fOhW(NX޸]i+qUH9R D"̫i {*bn!4UAUo5o- ՛o%ҎQ oE,hdIk dr8;c89ZX]YFO!''|XLF:.C!?/rbeio)d>,lc )N|P'pL$װuLEN 3ZI\0pkKM'VQ _4LaO'&>Wa@A{f'>6E3/‚<,DB |QS=,R84>݁[@4l6#?t+?O>9M !=$L<ҖC:rK<*gE'*p&dP־I8j-iO=U7D"9"q`صk{/[,6qW8b"eѯO-3$.[ɓ 4)&dUҫf'HeSiT Zhxl*Ѹys{~"PX^J7ԟGXYx/LxǕz> A%FѱYg?5 Me#8Ѭ,nǰp6M8H+("-l@(*.ÍaXX n퉙t\u]GQE% S7E)ۧR]` [@n^p;qةٸ!"acbcqh 1+)* !+Nm:zb*؉s`EmfGWulBaA>B, 0e.BZze^b{UEU6Un NY i$q:6klv{7kV" Zhoq^;SD.uXCb[ybUw2 CBC]}'M,%DRH8С=K'< bڕtݲe s?ݻO<ȿ? g_0d-ՏÇөS7:v޽bKر W]u eaӧѽ{/?PK@4y\{t҃`͍XeYX\s5j"77)]wKl߾бc222㨴cX{:vc=…qҽ{/xb4\{ l'W رcL\A.=5kvKsň1χ&PDUw>3+G2hQ &<==ڏ< LS!6KKB: 6h\<*o x>Z(*#9rGp$;'kYnLӛű,J&Q^lَKa2\nr #/B'GqE$n*  4MP@hv8q 1v4M2p吟M~nB,(q/Ʋ5Z|15TlMՉt-3\6M&AW|*%gذ7=.x;nՍ@!30$~H$A^"={ٳg/;7֭۸غuݻwMXv WZwޙFAAZ$99 .+e|ۀPU cBеks_a֬?xU3Df|3fr+hР>رDoڴGcNj!" 33xM6'J9D{ ;woѨQ#^{={Ʋ`$''sUW`o=s?xl'oMEԓ"OyUGD^q"i6>Dt< ^| k hb 07lD73v:.('RH8-|< ۍaDS4M%Fph*TtC`S5nBtQvy]aEWlxYgiE@Lb "HG3Lef(MUoy %B>EMh*bhv"adPȉ*,T!P`DYT T ]QQ4;nOe" 'ףN|,6Mx{DB5jSLAӴѺpV%'"x(mLiTH$@&9.B4M#%e)))Z/O?_HBB۟W_Kz!6oJe/b}vذg/orn:.?{eѢ%ʔ)oRF 222:Vf|!Cn ;7H?<ȿ(**b͚ygؾl6:wķ.bժո\.v;~lj׮ܹĜ9s2eCNN_~ufo8֯_}֭ظ7F~+? oGn r)))$qߵ+3}%{XD9)Nty<OJ'>7İ>).8t(m.w^{桡`STt3W2?n;'^PL!0(0LLT8>hY(BqkT;x0=lڵ]6˖->$55CY|yYЏ=2TvރYH6ѤIc.?^nwDWZO?+V@˖- "f tڵ3^FAAk׮GD)^z III'Hܾ}gиq#ԩ @֞RO^|<|)6mJV-ҥIӤeK3{6Þ~_|V{62ĸ E!AGM:֙UiJNҾ{z\sMiҼ9Mz~mkq`NŲJ%@eP IDAT%+ZB`z "Cx=MĵCjXm8PBWTrBӢe7ELVOxn7On^n|RE%ipe%Aqhn->͛cp4e>OaN>6WTlhYZǖYYXnMiTq  r>'U=/cZ={Rv5eʛ%kР>{)xC&Yt۷য়6z͛Ϝ9JkӦ9r^z^z%h%Kѣf/1gQK/kٹs'K,eѢ<䨨TMZ'.߅&͛s˃ƒH&HJE5QD"H$S)'ݺu%..EзoobccK[x)?  0 >0xt_ޟ HIهfw^` OfgPV-5k6[pgYpV^-[Νs5yHI 7 aϞӨQ˗>V\5p: iҤ 6BQQ111Y6h!Z|"PtqA14M/euQ+H$D"H$DwGILL ]փ Я_߰ԩ9o~6lL@:thO XG&&&pgңG7VXm}ٶm;t҉^.~zݛ˜10a\}[#|ŋйs'kxo4hTֲ,ޓo˯իW3`@f4FMe֠9hiذ!+3gb˖?O/J֭GO?^rQ+H$D"H$DwGf> @RRRDQOdee ܹ_|QPſL0anC5-[Naa!v '> 9Í7^O||1s$0oߟJ27ow-h]͚ItY4o9;}ٷoǏ :h!ZFt //uc;vF?V%D"H$D"HTtDhꋔR L X}Vσ].XO2fYHTXF0,4RRR:6E{n$%`O,A.D"H$D"H$I!-%?{bǎi5o>v-RH$D"H$DrR8-(H$D"H$D"98E@,H$?m۶}Jim-aٲˣm6kd7I"H$)J$Jrѭ[ϰTUeڕU&s"橧ƒNbbX"x7w =HK"B>C,YʁsNyHׯww\qIOO`ذJ]^XG3ud ݻ0i\tхvD"H$ )VrV")Iga5Mzcׯ/ǏJ$Տ򎛻テM6suI"//]vp8b\ߡiӦ'fդSn14iҤD;}#99zh֬Y["H$ICL46mfٺu.M0xU |5>?CRvm.n܏4iۇ GÆ O®2e*s̥w^{/C,_ؿ{,^>KJ>֭Cn]1b k=..)S_b޽yfs|r-[zLdڴ̛5pK4M{o}C2HLLk<}$&&VyIN-͛رHK;@Νp8bOxɧ8XAAcƌ#11XvɨQ,Obߞ!''Mhb.]3gƌ\n 40vltɉ{n\.6i++DRR >Eкu+zOe5k6;wN:uHIc;vlm׮]?⋯عw:wĥvsή#_Hjj*;w.E۷ܮ]*wӦM @ƍؽ{7~i޽ۿr%_  x5je رc?#cYJ$奬qӳe'22 5%e__۰aCϧ~޽=Ibb\r_}^=Yj5~?V-[pȰ*Fl&QPPEׇ-[иq#.'|'T3`۩U77;+_{AnLY3|qƴlnMÆ*۶X:yҲe 222(((*x:]6d߾PFut)ӦMg ZMA_D"H$LJ&66>l߾w3hժ%Ǐ3cǎѱcJ9q]w^~dW$'-0(M3zx*viJ/3o|N?4:wDxWg$*^ɩKqHccҤKdnԨagU-^IX oW4iҥؾ}?ի0o|̙%%JͰln֯Ν;ѨQ#֯_Acԭ[I׮ҥ3cU'(LfɤhLM+bR%жFDG|,\7oa۶/|'̞=ƍOZ"H$S0JJضmGi#GgL:CH:?xQY[ zիW2:m۶ zUfbP=PIUOIif6n 0gqz`۶혦eY[>.^ >fΠCjՒu֓ =@ϟAZ'ܦMmٲoYH֭x7_ѠA}B6nXi(H$ɩ u:|W(u]E]E]Ȑ!7qWv={.ĬY3͝&M9QF MZa˲ذ(gbi۶ 7oa1qFS22Svm;/XZz >0c>_Ĝ9sپ};^{=Bv{TS.Ku֙JTU-?^*^xPUoW'cK8z(7onݺuY:^;ٳ?`wXf- XGf/sN.7hРҎS"C}ˈwp8(,L*iƓOBUU֭ʕ4i iii_S͙gIXb%6g۶ҥK'a͚A߾Yx) mڜ[,U+M[#MߟƴiӉuгe8:fϯH$䟊Lo9?Կ|ǎ~XL#G?rs/-UL8V^˯o66}˯J͚I)?ch|ErUVP޽{1h@v;S {S69\xqȨ@vmٲe+V_z>ʪW"9^:Ǝ}ƍfZC޽5kzluzԨQ{ҫWO T;G( }ߏ)Sޔ*!113qҤIc,ˢf$wʌӸRO}0b0躍[oB0ax ]Xl9v-Llc>͈HH租6ȑ3ft"G_ޟ{OoKYG.zkM4H$ԠDSRejЗo^r7;ŋRF hnn.cܸ1`׹s'^y奰̜>.xbbboҐy߬]'?CRvm.To۟ԩ,޽SPP3όo%/jlWn^|yow*_}cʔ̙3q}aZnq_xG#G1 ^x9.cvJ$D"H$D"/v`fBދ||e"̲LTȩr౦h̷~O?m 9.7p]e vuy޽6mJ>喡rm۶aƍw޹nkז;vҼyr1 OLJϝA~iǓ/;;G~~~IKK sC9D"H$D"H$Id%D"H$D"H$T1%D"H$D"H$8RH$D"H$D"HHP"H$D"H$D"#E@D"H$D"H$,H< \EQ4=Gl RgU_2 9n*yMTu'NJD"H$2;D"2_ڞeއ!7]Uk\xaR*>t]na'q+O`ﰄwrM^ɓ`Æ_Y,jժ_!w0 v&>7xwK8r({`UԪUf͚ZNs?ۅmq&ç.qq\w`ׯa4&O~ݻФIck-ZINN.#️0zYn}B}iyy46oFBB|{jyߍ7>~m3wa[ٵkOTmqJilnn.o9MmI&\rAۮq?c2i~[{$5k&b*|t]+%ՏҮ;08 .IFn:|t7[<7_ IDATzP1ס};?2%NJD"H$ꂴad̘ \5z_4͈͒Uq]V-HLL Z11OEiviCօ?6.!+WOCQ,]ΪkyLzel_̣{]tډO?}͌0_ML*+WaaTn⥬Z^{7^/ ]q/~O?[8 `„R~0e((pPXX̙=vm>Sv;zG= J\Uwrxwfp=w VԸ GkvʔiO{ooƛoNYHLLW'gO SCq@:ǎET-/]cpI=Zt ÎΏ]VXH$DRH0JaQ#1haW/a·y}3̭ZvsHtĄGfVYYY4y^?( |<ʍ7s/qu7c9zXP=> 7 /t +VbĈ{ۘ72qHM>sYAQ?!@|pdff駟.О_~;~G%ػ7DKkcY/Gp7܏׃+y KNVtu;̮l>gzfdHRBP **|U@^꫟(X !$@ !=$){}^k}&Ld]W`>x=ϳgߦC;LvQFII j3{gp҉ȑ:'\O s"Ӿ֭,ZO~%%%8bȑ?u w1,}F)Ck[6oƤI\>h[o{iS1sr}K._ϖ-QА3Ӄ_zg|TTT`I8/|Y|胇aƌi(++ __v{|L2 \>pcwnL:e~&í3zzz05_p1.\ پvmisUr۴ cƌ2=*xߏ|??/7z455WϟjDKK% M??\pe~ -O0Xڵȣ_Ec^Ԙ~f[[ @]]yXMȣǟ0l|}>9)~ |RJeYdYTTw̿+DDDc1w7Iq=3@J`c_lpO0lX<&y/oѴ %tmNbB6}2 JKK7'477߻Lx1q@KK o|#G ͢8cz{%%iա|8sr*L0ӦO~c8Ѓܞ'dw~Ouu57aԽSJ 2s'Waذamz*++q_g ,•W3gNǘ1qWnyҊ3L֕O6n?^??fRl͐!C}4556hV; GZ }MHݛ357[q8g⤉XMnobz?"""ڙxo_w5N)? 6lu_mloMM??*N8g9m5rٗmJJJiWw|3<^| zn7lK-nG1 .o.E&xjj1nn}r#F a{}#wދӃӟauƍ =6nl5kȣOzᐃ?7oA[{;xŹ`ݺhl܄--mX̘1 l<r9X6 Tgt7G&AUU%R)5gmgngůn_w {0mT\|ѷr\LZaYY)3mƊ+x8?`SO=˿=(p'…dqڇgj0λkf3@6qzGw܍UVcÆQ;~_BDDD6ꮏ0o؀nL0FĨQ#3W_'>~T؟oiG++@WWG/+~~Mͯo⋾ ◿guTW'o*Mk}n@KK+{&.y}uܱƹ`㨏~-ˑd0s }Ws?o|_nGq8^}m>obܸŒ|q1GqRUN8K$_ Ϳ%r2yR ZwŸ8ϠvV+{?3/o}upg`ԨEqWn4hҼ'o^c>Qt믻F|31iwܧ`"p޹W7߂M?~<4!0e$|kG.g;ן<#|zkii g_p 6mj¥};fܳƿ+DDD#_ΜOlk{k:w&ִv]gUW^ŷt<8\z())>զ8o[pa߄.<'Mok+ӧO-z啨^]O}JjJW|9ga}7bҤ8O?T w֯߈ocժո//yw[o⋿ {;n6<3k)n3i;m0z̸^ٙ￿Rfu^?wmm|w5;`{3Wvn%%}5Xڦſ./ ˪ 쏓O~~MhjڌQ#qYmTu0l^FޫjfN Ѯk0V2Nlev 1d;vBee.[^_DDDDDDDD;C~aڮjW"""""""":ه}hhcHDDDDDDDD41$"""""""" p 8DDDDDDDDDC@""""""""! hcHDDDDDDDD41$"""""""" p 8DDDDDDDDDC@""""""""! hcHDDDDDDDD41$"""""""" p 8DDDDDDDDDC@""""""""! hcHDDDDDDDD41$"""""""" p 8DDDDDDDDDC@""""""""! hcHDDDDDDDD41$"""""""" pv~'~_8ێ;X\x^{u{m?ɏq!Ϟk:O4iw󝫜m>7վg_̝y=ctr˯{""""""""z/̙]mEΛ7OZZZ ڝ>$"""""""]C>c=PSSl[|9zzzmXlY^mq mdR|8|~v] @ٖo:,X _h1٬-)3gvDDDDDDDDDC>J A^R/dY v<( ,X.nYfR!Q0vZ)'xϣXh6o!YfⓟLΛ7_9׾KRJχjj455'Oc*++ZZZpͿO?f1~N9K:&}<7,Y (++äI|X+ovL2gxtDDDDDDDDC>0aM6m F!!Cn^Zmmm@^x1^}Xv-֮]zQKJm߷q5K[+l66wq7~c\pV\i[wq|)|1bsLWWǟpg2̛7w܍:ukWm7pۦςh c;6ظ65|s {t *s_~`ܿ0~_mǓ7oƙg]544sǚ5kzkuks)pᅗI7ڵOsO< z N;-[8#?)S8;;;q LL^xziz̝ϡAuu֎kּVJo(Fuu5<7n7dY_{"""""""", |7qb"oݧ /^ L0a<ױ͛`>|8~}Ǎ \ryd[oa֬Y83dRя`}gٳK~{{;_Ps駟ζ:!N?x1|pcĈ.sY8##GK/| ZO8sɓ'7}Ǐ+Zp* 27ZZZ!"""""""n?.CWWV;v,þob5vj[lC=7\+Vq6o޼Ca k!f͚l.~iS U}g?{Vzj \0.`}SO=݇'"""""""n9swz XhSY7{vYѣG˗cŊ !0{v*pͿ߁L&}Fƍgt2w6m*֮] o!"""""""nٳ%U>xl6mjAhm^ϟ:늊ޫFiSٶiSχ RJ\xxΐ|GCC#m_߄{_okMH)ӟ^C98 B#<~ZN=KkvX 8`xMg[}}=ƎSoRu cƌp+~/55s=qaԭ[Gq;o T #F@WWoq[#⡇իWi30y$vء?>~*ۦ \#KĒ%KP__9sf34Lxg}wqxMa„8/#0.w侉v5S$|moֶ~b_dDDDDDDDD*)I  o}az6-u1}٧OLDDDDDDDD41$"""""""" p 8DDDDDDDDDC@""""""""! hcHDDDDDDDD41$"""""""" p 8DDDDDDDDDC@"""""""".^@ ]ԄgVbqC:zN BD9­ s @(:9N$Q !y2Tt_RJg{ 7BR8P{2n깷 IDAT|?T\M [OQ[R@JAq"^9.3PB@o{ai>X^(9yg'MZ4u*L&;YԲ.ոMIaRQ.;H0Oꄀ::ۅ B@s`ga. z Ul4Ll!2NB(Hv`75/D%A;4ֱȪ辔R!ޮ2a{̈́uVC@s[@79/YaQIIz9~az6-u1}٧O@w#O2:\_z'!UR9M*yGs5?2QZR%@4P`N)뾶v^\BA(Q B˰!P*=)V:i/"愻g{O&svbnY #TtOoѻ٣?""""""" ;O^{lUrpŠ3'ԭV& 4} yUa B'_]( }P2h}_Xkun1ʄ;1a*UϡLR]>&=ZK>^'0|ȰZ:ӎlؿS>z3p=]gڿK4v, :3S_Eވny5m MUZt@=I7! ֩ ڊV%y{mx 28Ğwªw'|Q *㗈> њ89]Vn`ruӎވҹw@^lrcf!?tգRP҃ilo״ !YT8՚%([/?)ϵO | =k2vVЭv])(^V B4uQ+eE"Q*IUp6|JƎ& [ЦX-OYkpg<2J)[}ڀ֮߇Rm({;DO~dTdU^\Y5rçg#^u󡄇1m^y~P_h==HDDDDDDDC~Rm ITpҫE+dВ  qv\D!1x (aMcAby@l 5  -wבfͿE7sgQ`~4$$cf!;f{M({ E}7~MDDDDDDD;*!tdf맔*vӊ,mۉEx%VI}{+֒JDEV(fŧ"}nYpigߗ<"q= SX:Ak'u>hw@dӂ*A5hpcD-]G. rdB$MsSzug-'ە00_~|Ae0p?U`r՟Rwop5.>!}+|Uۅ59a]D-lGOC~Q;5QJA(^^G ?j Ii  AWZk^"a3~c(lE2lf*oPav +GB3ҕ" *}23(ƙKaBhDiVI5$yn0P)7\k ;RfH"&N]YJH"""""""T!annb`':aUPBYtB'!#*鄽xUE;GoVa`hgJ.~صL뱕ZIP^. ՋNoUtVŞR <_vݯP$f i>/T: ,m3H{gTA˯ 5pWjѿjX;zf|jNxIDDDDDDDT!`?D{m6̄TBE;HP0ڳ* U s=u0g57{+x.ϺG+jdg|N% +Tϑ!o=YDK5jeئ\%<;a+iV׌F~C維dU [nw@U̡ Hl&tB6/`m澅柕L0 eO,Ea_=yC@ m5BȭM Vy7fk:{iIPV]5n@=xMBrxݵ|(2|H9.T䚀DDDDDDD1gLW0*5WXے✠]NE9^NAn5?v{ҩxD,@B@{Ggӓn ת.r䪾"'|wf*-7GLt&'|ڒfLJ_}=gUVf *657;@Ԗm yc%B S9[zEX焀x%U4C j5uV@(Bf%ΫTt))L{jt`60>LX~%( T w!]kb0=TgI HrB ԢmHtzȾD\ 1ȏ^戈+dY]ʏpGN_f/ҞnΦ(s`?iCJJO]ܛ,Ež;_Xvh\Bďq>᫇8U/*aPYA})rg_YZJۂt7@~Ӂ n|@h5 ?sPe """"""A!`?ȤUI+SΚ'φ!ΜO^*J宝Mr}QE_R&DTث`m=ϵӄIZB~B&臕WVh/kzqbtJB2\^ w!^?xq3e=;>#qpRZL4#zn! ܴ`=Cz&'FraeM1aKnZ|\ĈvioSʭ΋* Cb5Lks8lDmYK:+(_YX9[&F'0(jvn*k{wE *1/|/ 4w/:yԞ*(Wyv(&t՜Sg﫿RVgMTaKVuL~uB:0 P"VE$CF[*lJ40ӇSh?v`C Q[>JЌ.k 1,ɪꆀmMâvxJA56,uO>j}?aǯ@[_ِ__N"""""""S%'M ֿC,x-'J?Ux.nL}֮i%2eB=NЖ3 NnUQ"ii°WO)Б7ܸ ru@U@x" =T6tjn#""""""^1ʻ(ռN4mJRp^й38ޠ=>^|IۤJD_}Xgϕm^Re\9 +~-XG.J!'rmEHs =gB ߮Y0x}*]~އXQ =#> 5==Ck +7U}BAd4W1 za DRwQpFV)_ I^;Ov<rǾV!1s]gR 8Śƀ=QYHGT* N ԤKmf!/mt䡟*L[.t9̀ >Q![Yw~v1Vo+a)ﻭZйLׄKN)g zCot\ɛkXUx\⥢`PzH?2K^0g?%e^V?BdH!'C  l"׍Gܛ4"]lEQ"""""""|C(z-?U9aKDm7]~]eu&Vӡd.)6&@)/V(b'g}ؕ+iV br+ߔ.HjEAThU:d|=/@@ + yD+J!5S&׊u?+߂ÚPlUJm8hcvïzOZ:V^V "Iy.AZs| b}<̿s*?sϦnTh[m A뾷U8.څ>TlnQ6`t/xʼ]:J+P~3TJA =n丩Pw8ՇV/tSN`0عVhbIA9ka J \ϝ̥u@e@pHHw&,s~aݔ,9NbVB홉n N@YUvzrrBBn263,y4PR'LGۺ? }W/rqh# mX"""""""QC!i<"Xi5Wϋzc "l!bab4] 覀sQGSB>D~nS駢=*JLϩW$r [4,A]x*vB@ƚ Ana'·xdW-D[}$J&k߶%}?P r(҇RAH00 գDDDDDDD4x17o&]gstfBMs,0mT3hsB@ieFՌN0v4id"FIz.,'fQ'mXkG5Qshy';Z#5zwx!ʪ?FyrF!()5arlB;嚀DDDDDDDbk7 o2ڀ0"tztT 3WZ`b;^VZaJ1ꡍ.zPf<⬕/VOo7 =%z =,=y'KYz?=xwC_(1է~ؾmf\4ְ*p(jՕ{^Q]_I0k^)Џ4]ҺqVu*%\;aM@(pgn/)ՐfMβ\{}>`+N9=Veo! a!΢ NĪ78 m>OCsO5"FCQ:0ĬX( Ӿ4Tc""""""".S& ZlM'UT5't&6^+lv0@٭~\*nkp`R0M8Ռ)i?Dɾ!`֡BZAl/hB@Mk @*`}cOD͜jAh8:*3Vt>(u8DyuEsl+&"""""""!`X9Yᛴ-3-8>L#j!zmx o[֭X< #H'4VE=7B+ ۙ aSiXJ9ϠCC4(+hBAUԶ[f5C ^-gnnr(j j)t[ՋknDuT'8:^hGNDzT/ ΩL+/D89|'B AZn- *̃{aDDDDDDD40SQgCy* u4xJNq ]'QZ҄X" Dl=z7ja`k"lց0-Q_pJsJa0e4%: WA~ }17ABkp+b@x.$Ln8'ADQ[ p|0m̰{, [aVBP}-!#(ܴ{xvܪWp3sE{" RUpoڝ5g#S*«–i@F~٪FV`h=VS$""""""!`?Ės*悪@aЃ0UeRW yӚ bVutBXݧOzѩs(AC:Zx{L0T~r0(ZY^ҵfZE@㟁nUZEvmx*A=DAs)'mUPE AsxUVUl"""""""/*< k&qB 2sٲ` IDAT "0BQ="eM;et0%xRgVI% ª D}= E7nt[@2:ڜ +rD$?|!η<MWjU\K*?iEH+ ûP2 "J CvUmEzw"\xNA3a(0|J ?^Yi&iMab{ kpZ9fCDk@_`>9TA}[5i"Fl$ Z ³lQZa 5]/WDRC IƦZ)3(D(|f>T0MD-?y?0R|  : A]+ r2>`͸< lC 2,qB2sGA7*sDtzlp^ga`<2$~qUX¾_tZS~u#NEyz{}sNu)c󧔽fH&[}@8 RQWn:JgB*í(Kh}@/ sJ`4n R ȰTAQ&2m[E Leg>]g[Ϝ9 ]:OǚڇYGp;YJ`Ga[1VXa23VЩt,<޼ZAORNhVtp}?ıJ(} $0ZPRXBWyDDDDDDD`z|QNu#0L{.pGX)R!Rʇp9^ W/ “sv]*WC%ݒlWC>˹ ԴU7jyԕ(Ntw;Gy?\~e)" %%QBA)y!!BMY'$+kGb6=Fe}(akvbKsPʬsCWMI {JJ T h`}.ӅTHDDDDDDDC~05[QCS( PzPـ^y MkBg[32.@Hd1*^*O =Tz4ZڑjJ =2N^Tݧ[5Qբ LoQ h&#hi5`2<>P4N?k:J) <Ae/ömyVJk BcXI(D$`7\׵/LDDDDDDDC~9T4Lzp@߅tj,ؼz9:;ۑfus\Y !<@َζشi=wuaCUGZ=pzH62q={Q-0@$LA*r4G=77aFG.R  DyY)[~ZDmPtZ0zY _@(y0SUBqPQ63@rHQoG* 62=D{G7:UjTڱHWCTF"hmuuѢ @6 %իWUVQC0vp5cƌxR"|ttac#^?w64NJ:!?{wcwcU9DjnM-ec  rpUȿ $㡏펻݃-HQYiWZx߽ca%Rb޻7?<oWaWE=WOfʯVؔ,n7./[Fe<<<B\4Ҭ:6! hu;X[U,/XIML(YWW4[[!viE").9q4!sNnjs0lՊW_`m:mɚ9@!/=ǟg~yw^wZloOg8]n~3E*u`),aɘ0i7_?rUVHZDëY5Yq\>˜\z[q)zNj]=YO9>]"<<<<ɇ@u_ @)QB" "yJ ֘"gv|LGHcH8ЁD IeKLY6$ n0L(\m]Mmy2Eo-CřV.^=#gA*#:m.lornǥ˗hu!ւ5(!pր8[apk~ 7=!be#u-Bzͷ~n i{?-E/&NH0՗˯oץ.N k S5qp4!BYr:`}u vz̈́'D RYutZ]mA!LұD<<<.| "0J=5ϕd}D['֛loosxEx6;!=3 (S_y]$y@p.\J B*@/U΢@h4I8i: bкjtcognzgnd$Iµ-+ Z*bŘz,:J<bBgb%F⳯:AskP~a<<<>%6ݺW5_m2m]@ k+].]<2K Mp/U^8B2L=:ye)Jg<{*[C*]?~oyPĢ=CN:MC &ZNVr,A(MVAUO3 uXU-Yi,UUɜdAry\pPk'Eo&œs S.kux6Lkއ$QBۡ"@kE  V|6J.e/.\fem^LN9}H/L3DJpMLC 'CFyEኒb6E#ָ‹N)rMtRQ p:MA'NZLfcuTEKtQ!CqN'J "M9Y_[J ;3⏧B@E'n9XEыuglT!Ib6Q ,JlY! c E3iShar6ֹwtDFVwբ,{6zR.2̓ԁ_ݲkF[,ʚz" )5HP ̌Z}nB\.* \yWflll$ i28>>!BmY`m΃;w* NFIj8 )LEДl,VaSogh3+_붎E[p\~\fQax1Y#+[@g Ʉ?wz\~ MqUI'io|x:L{fY%UOu\% ^0DVbVq(^Q6GlB1tl$ 00BDuU=xfW.nE]"4)sD1ä'!U),vVlvp:?3::-xX3XΦPa1;BT$6>VLCd" (K)YҰo 4RH8W<;҂ G7 ߝ)YvʭO?ݾM6sigW]…Dp~c0x|<7nOv"B)(.?1wK:bM޼A1=Jb刵D(iVq7hV͋/KDU٧B8)uT&ă\DaH܂ ȳNW~'mc LE&IlְuW!79 YӏĠ;]m>Z `m"3هb5 obfU>mtsZeJY]iu^Ġ p̤e*A .CqO,&!=bozyyy| zReXjM>$DQȰș%Y[ N`D aEe/=QU4)L⸼w&{us2%xۿ?blFiɹ}<%YQJ>y?wާL-&!f\RQѦN,KVH! 5WdHQ5k%!LB@ShB'8%7٧zY.Gg-OwqOq xwP'AH9V S"!"I"W./DґzpyO=`q} u<<<<ć@6w]@ɳs͝6g&1΢N1V|z_>e>`A#^tC8 ɘQ:h*-&C#}VV:t;Pqi{KwX_ 0e EU2$PΧ)%~a\ 0Dw1I}OO)0YUE؊0YI#חtf'&Hle( gId^p1i{Wo&d]kW")wkQX`x|t4e]>%P$K4rhO?ϿHgS,PE[Osz6vc2'9:t5`G?ŗ 3(u˱pOʊDE#RArs T5^GGlml2HtShGt;=*P8:@5k_A= (ΠL㻷G4iΓ!cB0DyV6 PU%R*9Q9} RE{u*ڌq:1ZV`XT6#2 'DQV@[AF1(s<x!prqW0ɿ!N!`pMVd+ I+K:hJ<ݻTcee$ A]|,IF)ZbE.4NHT3s(ĺ:ೋw3(\]b-ӗC@<<<>|gC@)e  *b)>'a6Q@)mlo6䳌cM1șwٺ T Xk'5Ya*C~烟}@Nh1[se׌(J.GC& Ń\k;V !VDB[OCx{pyAYD~~)%s\&YYGHL3u{Yl։$ߒ&lZҁ'*JګyFAtӔɄn;|_\SآpZ"UBt⤬CSA[${dcPiu,1/rP@ BDMs&,t|:mn!;zV#l}*9:>"PјhUeɲ #6Pjypl)B P"!9ږ"rTDBW(D"Ok5Ew=uiF WtnuBL'3J!Bt~ΒIInC0F tWP0/ f6 @uͺ=<<$+{n޹ˣJkt[VYY0@jh̦'@ =;!N*lUbYK@N"%E5K +НDP_q5  YL!OdՌr>c63:PpR.l#8UN_qADUP֐9%!Ee{W%. *,rhB3N Tg1 CM; E:ЄeN6 Nڨ(<: i8HgDf'f{QQ2p\*0ZrC.JKȨY.;bq[![ !qA #| >$Tp;prr݇3n 9cJ*[B)5X]J HPҔԓJi@g9wEF !BZƣ!8 pɊ0X[[e6Qu)R!1YPJV'lJ8*Vbf()e0WX٬Ep mRTEE8[aLt4b6cuH(tE8g[t:P D'߿|ý!Gw8Ϙ%Fju6kL'9{3  Rr2^ʠh^=HW8>xl:cg#dsgX"Lb\|!-!Ph8K7Vhg΂W@V-/1U^P,):k3 A@HuW.n'XS5. W\bz3:V/p4So22 GǬolr%Vzh́ePZC(%q ÀiVc2~koūa^nvupȪ"BQ9!R(WQdg r>f͗^G};U?ֿS̆=[noNry(fg8!KgLN#hg9F>t=Vv #31 JZU2;:i-KJSe)RXPEHcqίn>xUV,}MQD`\s5a &yyy}-DZCV~v7"BZiEhE`C66W/ZHLsG#9ei08A@?ioǔb!~S+J V ²&w(|s/;v{l0Ɛl'|;&/~$Bڊ*)%涝c8a ܺ ?9G&("\9ѐNw 2/)2/R R`%G)*n/ӫ' 9_Opc{coo}+8e#>o|l>^avrKX.n-:2=9Ĕ)>AV$A+&*ibg 3fӂvacmf|oqshp֫r1[@R R<<<| ﴸѥk&ƢmUg*k)YOEowyW?~$- 򢤬J " BQs/̻ݥ( Z)24ZC(r`K/W1ΐF?Eу ֧  "g29[ )98 Ȋ[J@B(,JBY( l>UrJe0Z#= "K(Y16?:ޥbdYt ,x۟}sYś/K/[AF1BJʪSb B-vNq1;[[LyD_DVo^1MYYvT)|Qa(q͝i>-6m2VSɐCs+WI$1A @IQO6CRHuMk yyyy^͇s$J`a\,Nտka:qܻwxwQOh!ESCǴ*C>OIxgTramZK8,*q&u)J:tƹn ;++ְIa'}{9ͨDHoOq!0t:\X]H'NXh% d4ֻh)VHX,g4J)VxuJ `ec0J^Cz|L$+UTrr2/غpLEF!+.~1h湝u6{P$tZSg, \R"#T" q3hB q19UQqxsdU&AU A]2p#fiիt;-RR%V@ I+N|tƔeh|ʡi^nku@EǏO?9&Z:(xhMTeEUDAos! qca<3t:XkRdyphαEZTȀ$,PlN^`(yc&c6=}Q!U%h"EZPJʕF-T`-A9<_l1{|=?j[F !5"VLPNNPn0Wt,g6C!~vA(\VLcLY]rn3p21K&ĢV@4-f#3~O>ܽRs 1hͦ(.^$-e>å3>S&Z*%Jj"T 5uMp]J)<<< O#߷*"M3p(QHQlm }K^r_tAj 鬥4l:g@:m:RAB*ɽG c{l􄃓!0gl@`IGǘ,7^m7^gTiZ5v=A K9ϸgoz!$Q I)E6GY=>ftu`!sO /&509r@ 66(gٜNrqv0D)eeIy}QlRd6㣏og_wHܿ UKݧM::ytW/cR6<{1cwG%-Nqx2 IDATc~1t- }Wϓf :?rC>c}?!Pe)(kTXQQ+Ң^#ϲ vҮ`9ʏyyyy_S>|>yůM^/B!D=(NEAQ=JZ?5k]=W/"pHD B3)A^6%ւ$>-qϨ(9`<1ZoN &0?9R,S~Dl> 햢m7kȲ?W/lҵ loPQA NV3NG&#|2ԑfHW /@ڀ$'IJ2clV0ٌ;} NpR D}*s/WY~Ku+l"EJHk ĉ`` WI2 1b;3eFe4-&%nM^r'1#q:wsn>.((]WIׄXֱ.W$_÷W+Z5$͚K3%)sY2k0Aq󤩢w `MŠeg0feB{C?̏aI&uVlQv*yg_6!b8SlM<{r>g,xtYYHX͹w05Zvs&$B3Oѡ(bEQEQEQEQ+D+>}gjkS Msm` 6d.NMBdrU3I..Zc׎X$+tdJpi9Ø5[gg/JΩV5(5:荶PRCvXObo-z=^yE2Qqֱ\,t:]غn^urFvrʢ( gS" =f<@jvv8r`ElލKq6;y)5m?#fKEI]0kJR:_~|6w>C@'5d$fW^a4̚GGܿvl@{"_~4jܿ?((((+`ccS?&_@3 ;׶6MpZ8x|:d6Gk"0ͨ+rD E3fKBm¬KUX]TP}Պr,WS_X|6@Y9ɂWG? Lg?r)o>an᣷έ[Ƞ%/ށxp֞tsi2{w|㎢(((\`Sd&C td)JwRXkCUңf9IY9B5!:I:9HBI fP-j|x2(wv(O?#=ؚz@ kx)[/R+˯n/kcFB'HJ(1U&j[AAdYɜɚ{GnmR)uP:c 6j:L&- RbjbG'yx:+`OLAik1;e]3^:&T?'}4eBav=A2శ9B%xGYI8eX1YS7J$.u9mBһ&,U2%˺%G'<8l]vF}=:%4;;x#R^-zʺf]՜,Q/gZƛo=ϿV?X\PjOi (9RSw7]"U+O?^0YOH5Htq mڡ‰'gn MoM< P῀((((}CG>DJ5g.X vɲ h@oۆm:68BX)KJ= !E3O.pF֘|@&)%)dce%̹]=p q?4K7" 발aPH$Ac->`!-?z}Sv.[_drmh7R5[JA`dٚeiQ_HiME0(A!|@|hBf`; -&˃1o;w۟PY}柑 bsh!TS?7Ȝ1S.8hJ<+0A@ğ!A((((jl'm%.TݳMJAijBt}tt;M`[hB/c9TƣӦ7e $\tMa{gc;oɤ Xjt>>9ZJWr\9{ܛXـ/~0Z~$I%"4DI*F1#>w2?| n RVgE^$L]RǣtɂT58^0)&H-m$pQkJkyOJImX-QB&(oX E4Z8.e]*=!%͊hWlEmkRbZx4Ap87gj !6yaEQEQEQEQ Yúp^1tOc65J% Hd޷NcZʲhG@ 0!h8C#'''hN2:>i7*tKjyN w??>Ͳ(7?|ܣ;>lTڕV )Ś7~xahTL>[{cbM%2pإ!x,YגD4TzzT ,4YO7&IsPN'e8 TkܾT!w𽟾>૿A;$yǔŢcxpWwK7ȥw,+|]xfQ:Bhb֦" 6mM(!`,T^ՍƘǞi Df!  s事80(((V  6O]TU3-MShl^\ڰ  zBaGΗ@m5u:1t2tNyp7#O>YrNJ #HXWyxVnf> I4p=u6EQEQEQEQCgt>. D'hJ5Af#p{ߦ: |4z kSJIۅRQl?k-!\8lxmJa! h@{&25A b0ޢwuIILA3wr֝aC*h5BF}z/}ѕW\ͣoI;<+$i|C|ZGYщƙ~3%Ee* FVkLK;W;`Hq>YN'$wFѹb4cw x 'sfkK^Cx: yh#>*(CJӷg)S3}O׷3_7Bsx+((((jY\ >tSylf}zI槍߆RJ$M˧ ͼ9@HY *D+I$hwJ Ɣ@)ljdB2㭷~8W)*wغ'S~Hm ԵiZmEB M+[CT?Ji$9fpGwqAp e,-o}p]ʠmΘo;;!W/]ATa,6p C$k ŜdRJ˴vTp9C5'8UlH1h E:' NsVEGTY҄Yj:! t5Wv?7x"yHE6 >'mm/>&yk8g<&(((_M1|B\ oBU ABHESڬGC)\Mg J D{wӆZyTlt2/?U+n\8rfgwr6xs4 T1wI$S$i6T@Lc^M`AXCe ;{;q8kD4QbH])n$,9,\S[rz@)SVxa23^f0Gxun%3yc)iϕw9 _H^4~.߷qRJM88/|c.^;v((((1|CMDžPӕZ}H)*2EBMlw$M1n'#K4Ro?VZ -޳\.=SϽƟ߼7ӄPDʫݿF? M3t,S()H xޡΖiJ(p: _y |p!嚲X3xptKƃta,Kp£U5ٔŽ#s<[·0[d{{W@ULO&d*A6@g(׶*R t_Og<<"r䌇gkGo0BԞN);6HjO6\|f^~~|犢(((WW fs6ύME߅lB?/<O.)YM{0,%My9|!"TU׿u)֬1cd|W;#BB58EQEQEQEѯ>=C˦J*.@6P8iRxߎ$jëfpm=Ueق!`ZރkXxvv;d:A02F!/z 拂D ='4ٴ"#nf!hk*Ն;??u j` IDATʚ*+tɛ?{_1GsOYW!5i[H*N*xw}l9{{K2F{#j[RnBWSRz}~~S~[ *@lhkOc>cCMwqo{Y**+5üŅjw',a<>+TnZc;pEQEQEQE>.ovsphZR)~~6NR)B4A4zU0/7cxGݬpmhL kw)5!-/]b`~۴IJvdPTUx4"K$R*L/z6ZKǚ8xqIP#[ /۴wԓ 'Ϡ}((((CgTl}nuQCB!!mI@[CiDc5Aix>e?Ɖ ߶J4zEw,WuI%RGR| OR;wxxuFITe$  HDH0Ν͙i΄o+.y|6+PJ pFhMEQEQEQEQ+u6l\pO:4۰{O]פIz>;mg0BiɌB)Iۜ΅!RHdhJ 8r֛oq||ҶBmZkt"!^{9yi7)%JIl1*!0H\y֛|a'%^~shD'Mxl9WvkVwf8C)d uMrf/__seEuvKo$D <>]Xg2so1Ki5g0vX(4FTŚks煤 eYGTO66 j),_:Yr^8bQEQEQEQEY5X7h… wΣZ6H^OHTVuJvHRфaCiމo \S@hweg2_ܢX LKrºH}|$mڑl.K7*h)s&Soqt.y"7k/}c<'rTNσO,ZT$a<7>S,QI ;cj7tz=t4>ӄn?o{\:'lfhڥ)_ʺk|rz#H$E:wbӷ-%Wu5Nxkq\@BPHMY,*aUQN0֓jA8/yUQqiDKf(yzϲ89;a;j]ajCY jډ7+.6f1HE%<;xW{p_uy2κ$$Zuض'Ԗ9v]^<<|ɢk|& A8[c!䜝`egwx!!wɓ,8&K\y"IB/_zc?C$ͰUEakk JQ OW ,M(o -+)O$͙\XFQEQEQEQYb 6&৮k[|1kqvɵ Դz]o(bEQY\;{p>Ao14ܿ,bX,x~yuhASX!M%.NO|G)^:P NIT B)p^3()R+-^V $%A*su֊Ne: `8!eSitLKokKtRM͉2&?wS k`kwZ'2)y&sVUS).؜ !z*)po!Z{{'A4b6gROwGQEQEQEQ+L['k|VU!o;GJjJw8 R RB$x~j+WoV0Sfi{m9Z…*lA((((j\ |ٺηzT{фl?yҊN'(*h[ƣ!^lBUnY֐,MB mŀhD98=beZn-5eYX,zض )!P R.Ydph.4A4 ٢`*;dg{Y$7gEْjb]05vwRp蘟< z=ιr oxUxRdYbmMUI2YGuQ'|2YAe '\=dEQEQEQEQL f)ӳܞ /uS' x lHK+f.S dyFpxxp8Dk1`RꩳBh?`։Uem0oH[3l/~!<9g焈QEQEQEQϠ _~1ltsOq ʽ4 z]Φ yk=Ӛ,Irr6a]Zc:YNm*h+֔T(l===9~S)$1We6mo#5yt"2cZ ѣ\|aֈLID$ZUJJ ,i*ޛJyϷ;"Δyrꪮ&ͱ[dђ% @ .lW 'X ذ%K,RA&졚UYUU9)ƽZ|vDfuS6$\p co%pA o޼nbɿo&Lp=s1Nz*K ޑZ/r_qp~Eu vVLܸrw?䤜dO>:q8"M2T2"fc)m!{َo`RT*JRT*-U|ٚ%׎ {/%eEUޱ[Ή Lꖤ m7ile6銋S^<`KYdyuyWϼ̻w4J\VǷrʤC&؟N9\:10͡>oʫ_1+NƲ\u uExM93 >8vJ,smóW믽Qաfē,ppt}NONh#NOψC1J6m*x68x0 C/"e41+.BT*JRT*JR"I]vPFWJ3ù/u'fAIېҀ?_ʫ3,V+fӖ ΁*2_}̗6]O.+X (>&ĝ{ww7 o =I@ۖ>DxL޻˻G#O/6-pq|ݣsK Bqx$.K#\A"M)hcGtC'p竿8 SM;)ϕ.j8 nFS v2-W zCސcꕫ_b" 徺r?UKn<Ʈ(mPmzaZѶ-oy4 EԬNQU`:Ҷ'Tb鮧o{FAP/l^9LQͨf,gZKs{[JRT*JRT*_T' |$s< ͦe9&Ą0.G}?#c\r?aoJxv]s{&8Y6YQtUis0Ή 3pkfti3#e>r9E,E9 }H&ňW) eю{~@6% |m>}LJig{aSjF8?=l5GBqBns۶#b@-"sNZ+)νyz8n2Ɖ\`6pxxӓ̊ь"9p-wx10hpB=Sɭx+29<{݀JRT*JRT* {_"dRD@8Ê;l']1N9==7 L[)q4[]]?urqAVJw'hf8q% Uj 1s0b8$`.Nηtڦ c::r&D$rtyW.sDMX# ɸ|!<_f̔`HoEBa2cbN$;~P|U\|>MӰYKY{iE9uAUqs(n|eח @JYg`[ݟ-u RT*JRT*U=f;Ql3m;qʼnж1Š )%!C.. ]Sb4]"Ð膈^.1ɮhhe`S4+18xiBLrG^r!@?c-2X1Hw]=%\ot)2TVE0q`BFf‡b8\hjJJzFGoq\=岈v9R$ơqfXa`Ҷv'Nrѩɹt&z {ć2LZ_>T*JRT*JR)8 ۹E"d3:9@4)ۖ2hqeWƷn~3p.` Cє<9=n a(Q\8 #? 8jrb\,{N\,`$Zޣm6,>eK:n^Ji̊ !L0O="Ff:@ *C8z޾~<": yD(hFЌ$8!4oV,YWNg 3~]Uo[!Ptf JRT*JRT U|eb9n*~,riʀE dSHZ/f,pho! n7SNJRT*JRT**[yfN;.Si"nt9gr.kͤz]7 臁z8co:i[ȹ zǝC7sqK8ʺ)]r ƪ,Il@$63lCO8:rh >Fy6!yZ\x>xf`3HI)f $t1h_&um[qWNۆ?kqo{hcC=zq8&'9ʲA,z.|l:-?`ooa28}[W{>ͦOH fE:c9+ݎZYT*JRT*JPE`+|buZLNgc/%ڋsŽ6iɄ=Ff\qcoR-q'xHy]~F]Oq-^hz=)+QK]̬~IôG*$9>¬@fSf>#JCf X"LBChZ9&@` SblSNw޻K4E'7 X\\o|{Oq==ΣsDcΕL8D9ri !ǁSpv NH.sx+G05Y !4,4%9gsNK!!YG3^q;ĔvWoª}c/mOoŸb?ٟɲߠ9N@lCMÄ{L&Lxdӌ-1)=K0cy/f݃rJﳨx>0q ɚPis0g0A(7)K+ ,?wT*JRT*J+U|~qm3[ԬtmgyGs&DV%DjT1ERN|&n9GT[ǞHYE r` q^¬KGLq@S&w+چnAw|s>_|^O"#” ˜..Sd\m:RN$SĵB63oJ{e>}σΞaDS4g޾15,Ly o}xl]a 9+MrK]TFVA6,&%I)Ѷ{kD }GOx!v2%&|W"jE6a\vpnRr~oqnJRT*JRT**[g%ld~cs^qͣMq~q0 8H0u֫5Í2"aXlf3֫%Au˕<[ϵ˙d Zl9ED =/ybui&ŹԐ9˧`z.n繸.ޟKZ?Ca`1Q&4nWtӶ._Lu=F$wgO'l7k7IhgLpP5fkZ$(ԖyÀ#>LuXIKaMLI}G0;,Cpxyg#JVG˺cPq. {RT*JRT*J*Je+"`}(פmGv̀mKlD{0d=~JJhS{V]ef4!bq}`Fov_'ޮ:KmX&0òcD5S&v[pzvǏ?^I)Q*zXg!4\tCգ@fo:‚Q|g[7n3؄#R2v•78==abqoaņŲ!C@b ;ANr69G~\]vcT;&tJ6)*͚d!&bEDs4%6M"SK ރmpǢs=쥞5ipd?LO|_T*JRT*J7U|! / XlD;DR0gbl6]75DO5uh Ewݥ!FgRz/Be\`4Vsh-ҤAr LN%^.Y yϥ&FQV{t^0L cL%T'/X#r1GW[CۭNMK{ n+Ml㛖rMLtǭ[SNNV+T3j9p8͌F.yx.-"8/_C|i8ۦa23-jX,n! Ө!_Sf~qA^Ë"lDAh`  D8G(Np]PT*JRT*JcmhF)xpz DsqŴC 964mĈ9\h1 I*xh@ABq(" քeE@;Zf93L,H>'|t2gLxfʌ-O,5ONN/WB˼yt6q̍`z| 3çM?CRwBcebc'gE)\b*Cω2N!rH*dRLYqXQO㝌Bf!{{SOLSr+«!; )xù(&ECg/BIt yX;+JRT*JR"hB*5<7UT>~&д<),Q JͺGSfhQjB @L= qX-ڞ.q K0%z+Np31C 2qb vǷzǗD %#! #'OЯ{Qt4~o%g|*N|6A9=@)1WoL4EpɵK1$%HFiE31 f~W=B̦fw޽|O[0f~w"欣>`c{O#-i9<Sc0XuU'`~tnv (Bpw 4iT%jq9+'݂W.KfSfyX OOz2"%ђ}sLmg1T*JRT*J/P:1_T0HXn\>'۔1_nX.j~#fq{$1"c&&L0v1:>+gs9 X.V(b@)%*C〦bt0͈ӌe#LΑ: K7CqYo:n}Dw 1Y0ǻ`Ȕf#Y=@$z%-eHdONaJzI1+)?ly=SqA#g)2}߳ϴ Lg#k_kGEX6B0h?W~_͗d-Ǭ<0%7 R_a +JRT*JRT]X6e3RθI*/dR)gR_*{6a_r{rSo 3ešx9 Ck1GhΗuYK < Cm4W<5{UspiqǍnRqeS1D _83st:tʟ!G?xD#"gR[T˰J6Lm, 1fDjmrxxbqAY4 M4lznK/]'p&(@;itt3hσv|7GAKn\@#8u!L͈d+n FV*JRT*JRQE o0}2%s =kqqtt03͆w?"{{{_f>?gڰpvv 3^W/"z('ɴ!CMFA+GFsnt39sD-^tMqp8+biJ?E>zo;\L;!{?~(η·s YvYzOtF.͌=]T*JRT*J;U|xf/%b٘N)=_x4@Ι9N0EA5) ѡG\<dOL?k_6"msr1^LV%[N[_W䷭TFsWܶ9Gy9=Elޕݜ!u6 Mp8'l="8 gHy?9Qޟ߶ׯ*G eDĜ"@ 9&)ppt@꧘*ð`x%xO|Xv|SL~,1uWf|ꕛ\qO}u?W_?w?޷?`#%ڸW`RT*JRT*gTVD$ղR"=sY Ĺ2ء"H&$Rɓl|tN1GƟa'TQg#L]񄙖$zhr3ua2+{)ͧ6 0TY, $8O_g \ޛY)5@FxF)B](&J,ڙG>ghC[mK6& IDATs~a(^+89y28#+:I;9׾:?|WO//a$3{cG!VZZw/JRT*JRT*Ebq'[v0$LyV8+1M3&&-9e h?1Э.ج`:BqӍXYqjfBp [\hIP{& iC9Pn_;o?g^? e7[B5a1;!-0;1l+=ҝ0z1=y)CJDB[.szrZ9g1ITuw}[Z.Q\֋ %#c2[AL5SH'ZC4픛/L;.(Qw/ 1_e䌴z '4'$gf8[_eK|/%2HRT*JRT*| v.!eD2#{DL4?S:n88c~~gEXJ<Օ7Sۉmqctvb{V Girg8쵎׸UqdgȩDa0HR*+j\<99%Yʵʧx]?u5=<.]NFm9_dx1ewܺ w'0Cth+ Mlt6nܸ!|V Ǭ:G!Oɴ/] KW)2_/6 e~bM6Ű+JRT*JRT"aV⺚Gg}JtKMp0))n4DSb.?CV xUMs nޕ8."E\;Wb1jy yX"NU Y#E\Vz 8ལݶ#[Zb^bs ?Kq+x_}>c!NqYƠV.윈ϋ0{F!Tp/my1q(^_F~^u%n,q1'Ti'v6p⠝Mqq9&myw7~WņT*JRT*J*f:;AN<0egX>a~OW|?L']i!2P1)1*"!xX&q9RV *3Ë2 ˋ9^p}or؛6e%ΣBʊ{&v;Z9Aաi`#g83&픔>ƃF~Cn׍C?QvLѕ)FUYƈ;d2Cǜ7 ·feTM#[_ ^}SS^ L@r t9"{tlǕz 7oX'j& _\y,OέRT*JRT*J/DzxrHtiN'3`֐Ѵ{hHbK]o/m1 ״}g]MS*r;g`ι8Ƙk9,:?ٯey;xgE8Sm-[Ȳxh}I4t>Cr\&FFNv˲$")EV*\g)ks %(Uggsn~x[V |nfHu`{Lu;SL>|56)ުHӬoa1L'_@?"デ\:ހSJSt q)G)YJ^O>zckʏ?kث E^u:o&nr!z汉À/[oM B(=.ԹM.Ag><5Y"@' sRe+c+Ϡa|ou~?n~7EQEQEQEϲ~ $Fc>JtY@}A\G<޻)\w%-K)S˿Ӝ "4@ OUzxа֨;F2Y<~tHd^Ex@)լ-ǁ[XkXcJ|:+/#d;H6mbt:C)5dBUUzwb9٬߆}#֫B4H)( =毭&A hiM7M8NiA HBt{]16BHH@Ht}ַZ@D*lV-YLUn@2_",qeEUUelxTHIsXN=\-'8s^`8%޺zX0[> BP6~RzB'5$"If qzO^,N NA;@  +$ZS,L&S'PR)u|,:['a6E,S)-& |xvģLM`JjA3i+`"#;mXN J'as*k+h 1v=6!A+g+<} \'O?(((Mb)PEUa*g-y:Jv0q&`pacgY)sDs`w.w4}yEa *gz0xNait00N8 $d[zO[WRso *ܼsE *_b!pE& Z:Leh:b$Ӛn4N@cJ5[{ MxF3BW˷%lVYCH *SLh!;<:ʼnSXCzP =̈́]="'@Wp@HXWB~\!x,q6~4QlI"`XwwxMY!L B3(gR6x8ŋ@ J xZ)+4k*6J&hR۴ %R5rZQjr:Q,unR:=W~eV{_((((~S8.Xj!diR|΃eIYEl!O.W}iBZ+jL۔`΁%-e `PRʱ(BiΜ$ӂY>j|n+!!1hͲ(OFTłG2[ )˂3ۥҹ4ȋ  +u> qi}DHXdGjMROy߄X0vJ4N5Zא&̴!m3Z|]Rp( IE6UG ZڀW^z׏zEQEQEQE-V+C)>( dQV NJ7wr}DZxV *!ktC5i+E)YO/Pj;'/1\!Z_p<XHL lnn?+I@Xx:69x!XOG=(((=bc&()d>; D%&1V7Ά4OD]q`K s5߿YUJ!i.=* xLQw  6<6VL!9@hÇ(28]"(%x{]Ǧ`n^N.2˓Γe%IZ$Y^bÇt{+hP*cE 1wZ7pz^;mC Z:;~M1 Wky7ytiFT3#bu0`1+R{x2m((((DHzuu+sk Ţ`:_w4B~6h[A֥c]4UIP!<hLR)"MZCuc.D! `S{T YŹK뻃ł*ཫooPe}?.9'S8,64K!$SPanfQlG PE^ưϓfCI) QTCaµ5iB|~oJP:encqEQEQEQEC;RJDjxblxsZqce|S?D D AFk3y)8B /w2+m$a,X̸xvC9e!!{xQJJ=p^AQ+α} yCU1=g^^{ 2.o%AHwuPDes3O ynM =)cez@).غVV֡ uafٜ|w%$ l zg81|h>g<_?ǧٚUQmuPT2c])^"k7wJ74{# JcrhpfG~oNY Ě+H$ /$!K@`0KϿU>stWe]HH2<;#jZ ?=fbPiLշŲd $ڳ_N@ qJE+됦msm:CyhZCaZ y>'B^"ES1hNp6ӊ oJT4((($286$KӦ`c,yiYEYgx|cX;HF%[Yu R$ !+J*TH B{SOQz;ne736grXPf#D G >Sϝ Csdxyp^($Y^]d6N)BBʳ7 Ji?vxpT $I*5ι=^,I)"zGQEQEQEQT)J4VtJSDH,PT 47xIc |le)8S qp? T+uv.5npoFi-΋eCHW -8㙳ۼ3|g&I2 ^g I%n9F#MH[k|K_y9ܹ7}& Ju_\YuoYn,Y,Ceuظsq˰il2N*J 7xŧ8#wx^uTk]Ck-HPMs6<8 EQEQEQEщ T9蓩5'Ce,ye. A庫1$IlXp|mNMۧTx4e4R_~̙-zLp ,R$YoKiV`; t{+'&J$cu5bhFɓ2|,dd*Ŀȓҕz.͔!M' Bw4* 6QV%m6J :)5 ci>>blyG.01ր@E'?VJ5p8xXrEQEQEQEQ ̤ m]$-@A,r拜y^2  f7VQW޽@+oG /3_{M^{m|]vv1fR}(Jڽn,-RonfVHb oܹ tEmt$ N@]"ɧp_a5x% 3)ְ<+d/y?ńPj'MJs7Vf@^V"$n9C"+R-kr'|, ,WY$w uBᰨ#֯kbG(((("J@&ؠ"8ITWO,xbAw dD"85__W 7=EzMnܸIjy4(Rf.|KT)i/wO"3΀INCecGtXu6V!SLJ|BY8UtKQ&3}pO_ĩ dp|3g 90Hů6OkYT]5Y>$$IP{/[yH9Ob-x8anSU4ƚzP _κf44+MX')k?@a,EE&sznFQLׯ要)R!T]jxg(((('NR.lo㍡4V(Ԅ`Z|8p<&DH#߭W~{_f0Ȑ2%Ibwg61甥Bg-Z6*8_yhqyk}_,<dRXv^)x(͍Di!Cݨ7%̢nۚVJE^XTUzJD4sy2\!YړBuL |`6jGp .vscPk}QEQEQEQbc"LFS{U%`T8YIߤuHr~M`c+?mh!_sQEFiB}t^a}K/n8}K$魫 WSZ@,Ǚ:J;L#"H $G[LfZ:U%yZ#|y'n![J҂Ֆ޺>E481c~5zN vY\] Rl>g6[0K RBiDq52Gcm gl&|QQXcRXvX<ʟ4kUm!q߂((((~V@ Pi!, ++}<є j"@H' n$cu-% IDAT$Rp9ڙу"E"xOYypht6V&AVmyms=6@nva/Wj:,%YR*բ p NƼUd?/B!UBZcTs|Bo|{WtYo Uszʯ9^xw?MHJ}޽z_g͝CMiJ8)q=JR|3MJ `@Yj&iր$ RHYјyQPw&cFs~Fz]Z b}o0NFQEQEQEQT!!DJ:IM~Xvј4b0V`IZ,9EY$)[oPxſw[x[E52'VW; (T;Vڒr1FR| 8VV0w Iև}~^锲4$R-ѝmxP{dJfNGb4%p<:k'w 0RӌvEi BDF3چ-bHn|tw_g/i>K%IKG <<{o_cxe~om&/Oe8cA`=HS%`cTU]$& R(׫uXbP1$e :`u+˩AbBEw$Yv¤KBbEQEQEQEb)vl⹋r.m-`w1a&sXHz;S\NqJ%^#HPV9(T,ZJdPYN`ʊɧD'<óTI6|̠YhN<,Wˉ QEQEQEQb)|/g.]*\!V"1cnQ![k VL Th#Y. H |hwhȧJ] G(Mt>c2rp8oqy26^_ ᰾< )4wp[|AOec֥ ׯ;o/<_qAJ$AKE{Tn6YͅK9<H)Wׂŷ^߶\~?B +)c+B&h N B3=GG tt3uHdMiW0 SRQŚNC`)((((COshXOT3ho7ԤmA_:޾.߽fķ~_|x?>I2l[<@AS^.X\BOMr V9# hP?oyNJw%q!ՕW_<鈾ёL <ł6{)e!8)N+O4eGsbpXn߻dC^8y_\AiyE[H-B``(Ad\p=7luٔ~ SRe}k ޣۈ KZ׍JlnJʣh]*eu7ޥ7G VFGwQnN*PU9h5?[;((((YCOA929<:L7r']`n׾R[3eog\h7H0̎8Ef_0L<>X|x/\zsv!OYZ:.LٹNP%%OcQY "PU<hg xÁ؛QzMH3V[+NaeJw&{h]aRJ39|J IрYe+y}Ďxp^gu(60JS$ҒnܣxqOؼpZ$JWHEQEQEQE?#b)1[L޻lr3Q+)9iG3'{UûܽG>+I9k0S I4'p^`drL]TXf>RZB5kup>TH#Ւv$Ϡ '/jbT(%Rɺ"S}RDDhڈ'ڐSfs|, xr ,B8H9n}gw3gX?}K8?`62-X:ht:{OlݻЉ&њ d1-Mgc*SuR7cm&-@KyThu[ ֆl zq[.< +5>wĩ Ɛ/>MnS ID@d \"2%PS *(((COakkﳿ{zoεh*PS+LFSxg)4hP=mkVRRe)A- *')f 2ۚA˥YTt(]A zUB %K^,pMG |6PsDy"و6bm=m&DiB:B @{J$xVZ4S[cQx`%@]=,ۊG.w?|2 4` Nܹ| P#vvC 2: Di/.{xO˜ ф"zfd*x2Tx%-,0+%K(+GhJc]0N P(Zŕ T-DY:a3G/xpw?| [x}t^UHD*@t¬pXsA*h0RH8,xp\@Ȁb{PTxN6{<;"@Q7z_p÷K_Ip}VC~̹g *[Yd|x#6{7q].=<~a+tƺϼ$ݤͭo2Hh%矻Uěh(RMJ"KRt,w]nxp#M펧 ֕L!GLfS b-C ɬ,)ʒ 6$Ja<٣2`]r4o5IKaJ&#vvo!"EK!Cy=V:9"TBgu:]ń3]yc*R:l  u<«~Kt *iN2[)pSp)Vv"!EY+ - x0(((Z ?,=i >yiȒi*8)e8+%z,8paA,U+iB[(|Oo:-lgƭWQE@7kUsVŢYO(HU fBχuc,:uNmFtwtzg uDTcC B JD4ϋ!%BkhUL{GmoRT; {Ɠ)yc,甋e<2Xnk=,^Ee,|dC*+Y4o3Ɛ$,͐RC %ZR-@@{`ZUy cNjʀ"MXkwf#QmtEKCi[ C֔B@i棇n_<vϦd`?u9y{@^ٳD۷qGX8Z! Hy2p!$p p$Nu)'N3m'EɎLʑ&HB-"gM{Q@+âr,=p2&s;̋Yik=69ꀁ0s*I籮8 >PTBmV;<3 ;^~y~ _?ƍ8"p6bvÓckn^Lvn"cs`%.7dZd j3>u@+llmLYln>˕>} <vN=9W$ [)'$+2p0;xgUEkuƅs\rr*Sp{o\UR kC;YTpg GGG(0:aڐV7E>PVΓ:tW찹>mo|o1d^0(;, Z^?E9+щF[ q2gϡa6~w2a:U~}mV{12>1NȽѡ&9>s;Ob,rƇu7{{wO$(((1RPGa/vz){GsRP@:6yf քk@[;~˂G$p?_X7CJ c}Ed39<^" "-@D-=ewK4>@ tx#d@p k-X=ChumlmϾɇ7?dww$gV3E2xb1/y{TԜ=3#<\9g]-A5CsVSS(((gG ?,R@fJRM:0MY }4M{f= UIo>a!{D[g  ^}uys\I-ٶ#`` 0hXav$vc{A%I,:VV˲iIjwֹXNlCD]O^TZA{1DapxQ\b)OWW޾024ZՊ)K|CPU(R(rыΛIb @E9< b2ڊkA@=CWc RY}9L¦F99Sٱ^?!t+U1rKC<Jsrh4O=[8)WĭM1(KZi֊դk5Б!+Zel. ,TΧVØ$t, {vUaZZ.EĭF ,Ui n<.c5jLXy?G\%C8@cB+1 c QcC{ g , rAmc_C#h4[\lY~sv"EbAw˩P8h`d_GMڵeG@!B!Bd$8(JYNhjeR1>![UC5UF1P e IDAT,(8BxDukT?'h5iPV/\r7*X_7!.4a,uLFc(j˲y5)0N|z:؅;GEb+;#h)RQ+# #ONy| "E:_# vuY&OaHhaې9~5FS`8GDAfEMcd1j6[Z1âͦ FEĖd4ICc]rkK/c@B!B!!4DqRTy|̬zD9Ұ-<sxy hb(N'cPjFaa ?9<ͦGѕ(U4"b8WFPհ#q+2֤UN] uŋf8aiMwE<)°#$b"|3ĭ..E+G㩐6.F [uN{6C;A+\A c6(erE(b<Xb4r fnj " n`l:sԇ8grTaHYX:Âr(3((}1I&(d0 nB!B!aFBiXvJ-\R h]\&:;0 T{ɤ]1ıMuv;qL QF-P1JpF﮻Ѧqa]o\{8pIBӎ(j4[I`hmB񈢘(t8Ź8Y8e946jx( T2\E)LCi?zƨ-Z+GcI8ukcQ)֡ mdnEOoR: HpLIk-kMcc!2(Yj(pS[0$wZ0"1Ť480I* #"gۓwdB!B!$Mۃ:(MB,C9!mM mtyRd(΢3g]:8 Qa/} 8lvqN[ZI64&ũ,.RI0Kk 9RJUd+p&R9K39!v+rUtJ\66ie}Ulh_g{g&p*ќ Z)p1sĮ-Y·$U$ٍtKؾY%B\+9.thLZu\KOM/vthTY B+M-D$N!B!B8c!Vl +N+Fl &UGu IpJ?iȅ¨tO88]K2T:bKeeX; O't9nmiUeZ]q*"$Lu܈]LsCynWۆ]zmMU]u|1g:$#ͪ ].(J@!B!B$$vED:^-rZv\\;qKE1{vVC1::l KK'ghv0 .];*gqi#3ťY]t_K&2йp|Zs:#V0Lzͻj{ udO>nH1l1_!#vV4L: 6ͤ.ݿ 6=Kۜ'7Q9K'(fAj8ڡJ851#Re!xfΤs|oɤJR3٩o B!B!DBBi0* =Ȃ55^6sFg2:Z<]$d_= PNòA S&ijގW NSC:v891ӽH}iq)jbm<8iyq6Q("1qvfV%5A)K`-81EȪގ7qfd͘/ZC #'Tj5ky޹tB>\VYWpo(A+`|7m j4PZc}N8=yxtoiǘh:GYcM #?HrIXѳv`7;&% PIB!B!DJBi1DIL;EXR yN[u:xeFC[scxh/}^XNWw]aLum<oI+M>G2?c2q`k0lB#ORq?Ȫam}N:O>>Qd-Y̜}? n==}8 ٶ\zuصc5|emS=x^k6Ul?:-YU >zB!Bqp=ʍݖ;0.CigF=}9Zc  M|#5ikuہ= ֛v,;T;xp:&GWKr)EyߢOoFjRUgeYv-W? zflrg39ߧT.) ߱ DoFOc6Fŗm B^M/=9Zeĥ|İ8[߄ ']w!B!B ۲퓠ufqSۇx2iˮx{8mL9KP%hٳs'a+hzQk#$}F)09Ŷ?x*nStiFiR096Qe+Ir9˖SxuQbƧ׷pw8N֮܅K9riI<6عYW{ EKFtnjx`G8 8ukIMg-C[vl\6 XvJι"zgbeUV<駰ֲeF~صs/|#+O:~Vu JV>X>/YX} G!_/eS(,Fi .s,Zb6Ɍr7ڇQ6BirT8si=crhG;ocrۯnfν>>qAz+%B!BÜ0yRre8RDVP(xPT Fp.nO!JB)Cqc3g6f\Ǟ])j}sXd9zGHӆ#fs{I1z6bّ+9h R⠁Qs;Bƥﺂ3}-\'}+:7^r3gW=;2o|N9m3f͡P,>=}}3#fs=30N>WKXD9.[9GӖR()U̚7##hwefV>+;Yh)۶lukس{3g8Yl=;Yʵ..y\7c'͛(,?r%+ZOV6{vNHqbP<՞}ہF"B!BÕ/ʨt _Oo?x+~U\/3k;A" kKT(lxعu3QB{9f̙q)>۬R\/>{՟gjFL{o]\qGذqxt %! ȗ7!s?!qre+c3N>5 ^_9V1kOtّw?&cN;qԓ| F(\pe\yՇx%oe`v~))>RJ,B!BÑ~1UVJpk'O ba}>a3IqkwlƇs[o;~}#۷m-JEtL1:KSJYu똷h l̵_2l c);4*8gm2"F{Yp{MJ9o};Ls(`3 Z^* {wBXؓO\bÓy&L.G˥h]z~͛7,=r%R1Pi@w LQ8Q06K`hp~p2@D%9Vy۞e+Yv޹>Jp1QL1sQz8"#&Ab#l4d q2$TKqDlcCоgt-Ϭ(l6&EQ\̒+8b|6ozA\K¤CS9Y1ǝ@̜93Mz=f75t`'P!B!$<0:TSҨG69^:B5~lK,7^MبѨדiG8 MkV .^?xC@`2Pk3s,ʕ 7gΝ8gqNKQWFضY{</|X{dAޤ8)>ML|Ƶ_T-_NE<أAgmRdAfsQ=8qyTkT\wQsS0ZcUr' h߮3 ;X B!BE6y2Rnxb0h-plW>ZKM8R k]4`֒}zz{1ςXx1YG\ڴmYEYI Di9q2<4DQOng tuwyS|ET{RLV1T*ʥ2{ؽgwz46} GX"3Tj52K.cey\2C)v:몳2[jCB!B!0u\pv(4eoN8ծfՠ5(l6y{M`ldx-A6<8&x>B!B!MBLuXSUju6pƣY-XEKenv~R fY8i6ܱAcƶגn]=3p!#80@8r|N&pSTq0QO&H IDAT; GR*04 0}Zbvh"1rSWAR7L+]}/vn5~G "u~гEB@!B!BL Ӂ5|6B%:k}08kJt@ ց&JShe%s]8AI\AcvSϚ1AE+LZ-V@9-;+?ο"rVΥAh޵٠8k.Nۘ\986S{xJܤshviۭvsOLuM۩1Vg֭ry-Y6T{r2CxQ\+OXdp`( 8b\1DqHqĆu =wTN̦Dێ /۵u &bͮt;]pB!Bqp:üP,qPM~8 Te|oWس l|Rhcڳ﵄AȽw:9߷gNnՍDQ̅_gO҅(@>Kq9mȎm[1ƣPRՅ}T{$^DZXUPC Ig|*j]}UrZJwƎXh)t&W~cO:;( ~bs'ZsgQB1~>4ַam~Ɵ_|_'B!BÛ 8 ;U.sA$h"#6lxOB3g|N<}jy;wtTsnL B!B!Tv9:tsSm'mH,;{A4NY6!S9Z9l|kxG]}19C㺟{︕:+?ag3<Ҡլ{jX\+9ӉzuP,)rl~I߱s69$.y|}mlٵs;7]SnwFid5s,M;jJAgÃqۯ?cr]EOLFGG ZM|ϣT_e~}Qcy~1($W(P*Zu$6nT˜fPTPʱ *y.o}给5gFWѬqqw}rx'B !B!\?x.ٿlc}6i;>fɟ{?GBi8!d_lEF+CXoF?ZC %hqA/Qӆѡal< b;p䋔z{hi֪A=;8 %-^OFlڸyс]8 %}Ysr'7k6vڱ5cέ("dC@=FQ1>rClUj]QLct(E"  )Zbf}Y(V F;={I[1w/[!`cXJ 43ob>8g&ݼ׮a`v8Zu;8=XsSNP!B!LBx N~B4 JhCⲩJF)qáBdmٸ\68gq6ȡB+qyPI!A);q8htznIb6Cdsvڠ& Ƣ`5 ̒'S\r bڤ3='5By(qZQN/#!}_ s]M1` Ot'B!B!p eOP jPs8D0LM«96f/vGZET9( JœbƤ}x6;wV[:;NZiGkgr'I֤g8tE&B!BÞL>~4a+\ák,B!BTN{:zTxE]T47`@{!^Xxx+E' 9DB!B!xeJWi'B!B!^f _U֋Jv9_|+qt@wN}]|~j/B!B!R xx1㠗kFrB!Bq R (t0,B!B!x1I8 SBxґucXŨ{څqCti)Q!B!i/õ]zB!BqhH%A>_H|OsQ ^6U\/B!B!) agM}c#l{xA!t/R9RU~Tq !B!"%`2:}/kk !B!B*S?/_O nA+'B!BTN֯ <ǽ}%}?B!BqhIJ0 ݽ}/~ !B!"#Ӱp 9cL(}T9{ޟ+;3^{~3Yt!_B!B!^pN8eմ?UxR}W>}?B!B!!4{/دs/|K!B!BLH8 .u_R/rνj~'pK !B!BLH8M'd xYZK !B!BHz5M.Q/g^kxN⟩?}ŀϽ{ic>ߥ P!B!to|^ʫtNW~WsUS_!B!AB=|okKRR "hY B!B1<<|Nw<7U 37wM}elrH>n䗿DQĵ~~\}X4.] ޽IypG083XũʕGr5 !B!B k׬S/tuuE\s-_̛7R.h6\~;y. _r++Wg>>޽ū'?/'_ k>֚?~߱|1noiffsC J^Q!B!BȚ5k7IV#ng?7|_9905\;}1>}vgc1w\[d1{yx/X,s'\G>GsoY`>;c8۷og?ϰeV:L "/S s5B!B!T"\ܹsw?6nȍ7ތ֚Z;wr&W\. BXz=̣k`pp;;_74M/x;+??+=庯Ay橧f̙|KओN"#pq[B!B!˃;w.'t"ccu֭K\vNx_l۶ŋ+O Y0x:]p:o߾?OM6K(B!B2#!!bi?VJM[2꫿{gϞ5RuԑY;+Ouwի_C_u}Fk׮ȑ#U__/IJ$:uN-[j׮:thm@n1Ə/P֭4eʇu6ڵK\pM{rmڴIV~!}R2T"$-XpN;m|m3g6lب7h%Em6 VI&Ls֒%{s9[---ڼo1bmPX?zFVNF=f͛w=> ?B3#6L!`ut,ѣt5!Ygj옓oiĈF/՘#IuZִ\W_ uuѫnЊTWWZ}kV'|̽'\3iʇ>oS}}$iݺ OSG<ot}ic+,K9\cY,=_Z!ڻw_t֝&N: gh}[o566O8ANIRssox,[/J&խ̏߿joi_Q7o$55P,ʕ+_]vG gVhذaZ1IΝoi}aV>B{Skt\%7 =,_ڣZQ}슙jhd2#ݪSQQr:yXU<]Pyy:ki>5몌ʎÏ=.I9s***ؠ~z{nMp6ze{;NӦ_]vK^]Q\|Iyn7ѡ‹.?}[oY~ڳ~p0!` S~IUUk$IeeeRQxSUU}===QUP xSt;;֝2eL_vܛ/ݭ3f+ћTO[[Zv]y2TvI'^Y9DuuyPy*:Z0o#ј'xZ=f$ݩNFHo]'8RC1'UmjhxwݶkܩH9}$iHEtOFV??&2l0%I߷o;/]w~wi;Gvuuw REXbk?6m-ZnqHfΘg{Ao{GO?S͜1]TYY >z_#жmKe]*Iڶ}~I{ծ]g .87zC}twyAXY9Dg}x|rsZn}E ]?0HhʿMTJֿ{mݺ]=z* KEp wL @+VmY{A= ~g׵门Eɤ.B͚uewӲUSSso֤I$I_w֗t$颋>Υ XIDATyf^؜GlͿ2g/|MԠy;RD14zkb?}I=z%%,0|:\6 84h t`1?H"x3 姍7~P8}Xs'P(Tڝ;=Ǽz_gg߼xԄwښZUWx {?#S4f`΅q$N,N/nfbǎ7ic72@Up;nԗ %l2Z~ZPY XfSVfkI*;/Yɺix|mh4ں K?dG]Ҿ}I5ᠹ_ٗwNϔdsss 2m@uukwp XTQ1DC 7#$57>gzb??u$3w 6wJ^zuVlF8D"j9s'׬Yngl4 M.a]0Hjp i*C[ɓ'4cƌ+[ZZK$֖֦3f\9y NSLdD6 젛DAYk38욚DSR)Շ 8Dt Hѱ7oy睳ai8М=*e;KլG^0K,Y)qlv6|cRw/93C=kh n/м'X>P/(K^KHYZE-H2H7޼/ N,'e`o@[h/HHs$ 3yֺv`no_藲KٌL9vӚiynv]s$`!t 3[XVfph$S"6(kQuYIc_Щu6ph 4i@S;B̂ K5j)tClF: 0`7MD-t B@ \|y" *!v8mq}fuʹ_r ܦۭ ( kۦf[郓a (р~;]wg_7$ԺGfY A Q~/?nc>bB6Ьg4~ݱYZn +7O&$۩~F#BD5ݦr`к T iz])avN!(F ܞcrv#znSە]wjsh@l:)d1lʜ^fM ;N?k:9,р۱]T^ #`IXttu)NaS;cs75M(>iB'~ {[4Ôa۝{)0Ut۽N^a 7if(gwה`85'68!SL@ im37 e^>7%fA@L@znS@|q ؛Ig m3* ЭQ3 O'}%JRtO.wu »yʡܼFِ>+@/ r1,fz= 69] ٔĭ}A$4,tp Pa״s#in5mOզP*ScT^&!1IW&a`)~Gr_L|e~gLFuޗĔQs~w; `mwpН}e}9*_A>LnEu9,+P! z#p[?@>* :THClڔh??ee>_Ӆ@byGY. C\500@vor+@+WmE 2)Ĺ "K++WWk^_0T{eVJaWRJT++/O3b4\I*@kU :+/ëBPL fTbj+b Ԋl`/|6XCo /maɠ ]AY|wP,W0/ P+{C#VT?:';pIENDB`ticketbooth-1.2.0/data/appstream/new4.png000066400000000000000000016404731501006415200203320ustar00rootroot00000000000000PNG  IHDRxsBIT|dtEXtSoftwaregnome-screenshot>.tEXtCreation TimeSun 11 May 2025 10:57:37 AM CEST} 2^ IDATxkmQ}-F`00 ,6[y0qLx~La 4F Xa`AHݭ~Hsv͏ZYYYqYVUVVoZ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ CV 8@ @| eA5ч@ @ #H  _@ @  R@ @ G*}@ @ pR!@ @ gAu@ @ ppn Jv@ @ !xȰ@ @ sCRlv.!\@ @ g KkKug wdࡒNsK> |@ @ pXx$\ZrZHڗ@ @ u3u䟵"ܯ@ @ GusG+Y5EڣBֲ@ @ ]|;$bF1wD>UK^6e>w @ iaWkB"pH;vo߮I @ I| \jWD8-Aȿ1_@ @ |ڹ1` xDTchy[#d%#@ @ 0ׄ=%G~4ԉ} $kRc>.w@ @ :<_eZYz$D՘kx {?-$O| @ @`@(ί9!2?H \{<^"ѣwKz @ Y5o2г+$N㴕@χD4ݬ@ @ ']x<-Bj8v ><2A@ @ 8 hk!k "H@(|oJew@ @ an?~^T/\B&!ϊw8Qȏv!@ @ pH̎->h"p$ӎ9)Rdb @ }RF؁@qBPJrhΈ S 23b }U݁Q]X:|94uKy3W)jK/]Zڵ/x'hwC03s]6z͎].o޺7)yzbi<ҋI߅ewK_\2+u89c)3ǃH]4@*&+#f: (Wz!}Iq$,\,%1FgNDlƩL$`[ڝ$`R$ %}&B'1#P(G$g2cHp,Dm㣧;\r9a$cR*Sq< ؙ5 L$qUA57b-w)ЄYB_":eFF: *`JZţkW'~׾[#ay. scW[K=|BK ~ᛏo^|WNN֐%#PHF[mRS$`!i f$a_JWi/ȳ,A;YD[ +6}BN|tQQ9.C (`  l[%{yR.m$ y9H@{ K|/(] e4 s] #a޺.>gJ>+q,tP;ߛ]EI!HUNL' sQYh 8$/GF$Q+I"H .ҥ ׮\=_[5"0c|4MݵaA/n|Rbi7 /#.O~o|ڍ+'2x؅sp Xr;HƯ=)CgJS=bc?<~`5|$s3۴gA0-λo$;ТmRv\JW^ ,;I+78U [vnQwEۨiyoBY/E؝6o|~c <^gqy/_y 1.jxy_i'.c>͓"aqhț<0eq*2Pȭn#?-%")KۣCRIȱ^>IO},u)Pc=r+ƈ3`a$LgT򋩘jb=M4X=wDTv7 @}Ǝm4QH~?OݲC-Uپyr7rJO7o#^{_? i\~%U[8AY$ p;*݅>W?`C0Y:;~sdlm{0, \"HH@X&Ʒ#kS0O:I(ɴZeނTSI2`:Kc>cWW*zTI,Sߗ oh܎3Hߕen.䔗& jFӶ SJ‘+mDnI2Ɂ@`pʏ/C- ʊCv;i˝cǀc9 T"G^v^PvjkRa8bipbbOw>sߟ|r)O1`SP5/g$ۚiORڰQS CŰz^ϫ]HvwA͋ZTa>C&#;얰Xh0iobp۷vs,Ziiv+^| K m'%}ǠNh!Gl69>>']ǟynὀI6cvzQߗV#-A"0IЅ{}|?qe;ꓱ#OMf#H_U;A2$xт99T"j4dpqKqBsY4+0$ڬsA_bUq 9BѰ[yg,%lJa.'H]E;R[aMv@*@DTn{/>}XҹhDsYz9WyÈjMhV<"^Yഐ{G+@zݹb{ɱV!W.RJxFNYZy*Nł(3ٯIiWٽD2#eBޚBZ[;'BYo~NёW+ ᆪ}돤Oh8TpWR6 -{[!6bR7핫XHlYgr5zzs_;? ]Avuj1D׼n)ul.EkޔŸ0 \ߔjI`X7'Lydp-?h`b;% ,aV͗\0a'qʇ_=!xէ|=9|XsFz'g@ rgeŜwϵ7G^h3(1}&C>vcH=Q^?Q亾57`Og9őːfEK i.SŶ!8ynMfP*IExsH%ggŇvLE~Н| q V;".-d}Bkp2@mnjDt>U:1 VxެgcofڽHӴ`.Mľ.78p5niO}ݩNB:嵄=.F/\BGL2r=+r]>?O͹ۮ,s ]/>M)3/ A3f7R7Z|k ` ܟ6Bq5z#."PΣv Xv!ΒK`,OIv9'q5ܸyorprr ''p.\/^#Lvd ncd id`yl$zRK4s7n}OGĪՌM,̡Zwެ3B(y];jBy~u>!M;{8˖U{a-N {MlVGuM}.C]8UrRlJzgܧ{gSu89t%-DdbrYsשStIP ݁3/%R)$՘ZhcAĎ-moUǗWޗLWHne5qȧU7˃IDh^W8y߸fgbF&߄˗n/x6Í'wK|^+" vReSM"w5Oڍ<{~tΗ8Ϙ#^LINY4m]Hg_wbKk$f6dhOI[N=r/:uk5&82JzmϽ!uB~X;7"p&@+I ȋOn)u-g}onٓM Ť'tOK"TVr_A}'CK;oI(dKN)Wu F_yLWvkgR̙l%/HU..Q̗%y:ܸqF~c7,3z h2QS͂%? 2Ҕ%!Mz'`*>2- T]l!ôut=]-Vz ̨&|RAo[zՋiΦ#kL] Z=ߙMǿ!5̥A j' !KYBvv߼@rܸqohVkUk7+љv8흀SP =3hy ?{…_Ml)GE`4Y;|JLVU-#ҽ%d_ c6P7zͨt] S˝$RJ=h 8)3+c9D y׌M ԂXڂq˵y!SBKV)gWuG|mEldCk8dݮhvIƙbNߝ-.=pAꠍI&`]x7D ϓssYAQJ^䴞kb$.I["'WRD#0rK+喋O& 0ZC`ryQLE]AL|޶et$}̎$_&(M'Rij8|T>[<2xd Gv"V)w}:Zq?sh~DPN#=zJ6tQ67"22`: CXyM{gp[e)Ȩtkp[` e <]"1rM]/ dnwHiinݾ;$[IaRuܘy:\|؊)(I̢ %il+?Xٚ\|ҥ=x#[𮻞_үՑV_-q򙎽V"]hiT< ,w̻9)&kj}ܦgRpoNzSvx7qN佈8 PIgk=+VciaAUl\ĥޒ. 6#=RtM9u|}ytgM x=w\| x=?u&MX>2zI#j# 8AO|}wicprf逤0v=ig-:t[8eceે)QRA+D $TwYGN>,#I{Ʋk";.7>@uP2(cURĥzJ}SCYlo7p䎂>K#Կo>xI+7'_oҗz୿C^2 ~ _ٟ~ ~G׼ NxO>9φß [ &<:> ?\r> 3?^v =p[+/ܛGχ_wBJ >>i ]x}r>^χWk ] te_#΃R'%^\vӒSmRaSŽ g Kp&@ַ @㭼O{ڇ{x~^~zxS6$g899UEI_ u` -d^>TL#Q0?INLО"n@Mrr_Tb=Fj+˰C t>S0FjF&0(Y#q iŭLLhJyH\~ږb~; įt*k煦w>nz+w|OA-끂e?cQCQh] D̓ 8+آ&9E(ujP-  HE/;|Ou?Cw<>E/3G݌ Y F|Qp{~ӟ~|SrНkD PZ^b*MHԱ JݩC AY =#d]vrިB۵y/&lA^fEg}@mSt$,_jY}dIR˧iW8s %k919zݞJŋN;TYoF!^)iq6%@9vWf=Vz=I/ G!JaG+~p>?c>(Gf_7>?oؾ?sgsH~|˾n; gO} ړH/|{+-O޸_ G#7x{ q< >> 6x3Tx?=pkpo_sp㥶>Eyc4̀qsyj ~E15n Z&Y4ajKv@+2KWow4$aҼ|ťkԑ_}7*? 2y*6zjxO;xn^oD|6&WH~MoEtv+c;mNuPiOŢ!T+/CR}Y9_>38n<{Mxbǹ<+3=M-]G?981\YgvIQ+ b+gP^jX}6|G~P'i]Lj$ LDbMާ$59Ws"8!Uh?Qh'Y7FK; TdVDypQt Dpr3z/|a̶{OP?=pS<076s''Kͣ8wޱy; 2<;=}/@=_z}=`/' e_b762rA[n~ѡ2֙ lQ9Aj~:4EsP@ErVygYc&H2Crs*5jDO+=3f4r`utGz.¨0ғyE]գ^ %_+ ^% b'pSƖw +]Uh436ɄwuX3_ =ZF%N JEZ  P቗b{_UbDw|˷ᇸH)A6?^#O_Upml9}8bC[m8 xjFի7=xw?z_@v/*95d%L=Vls mDOڣ܎].s=>aQViLtb'ZzS28enzXC>f=2p㿸߼IuNIQ]5]. |73twMeuHns1a(;܌~dAr1eF+Pz<6lx9v~Ӟɱz|gzoUKr#YQ u!pHwk#^uK~7# (ig~$pd~&"[H:/ee:qX,O*Wj,9 k~Z>yeHG\jsxy9biJάz*6"4T .xb M'Jqވ}o?{}p%/_~۟ ??O^ޯOǂh[~F6JC8$Q{q:(U<6݀#)ޘ]}),|pZ7vL2 ;iT9 T6"HŦ?8sm_uN7/)V"}9+=~ׯ߄dЇ>|9BNjGc =Zzx_Lrghz TJ!ܒzSMos&$k#iqQoj]N25CqƳZKsBZ&\,$.ׅ2D95L,b>~HDs?e~A@y~ Is2g_B.TGrSYd{ \eA|.B_~/&r|V<)ˡʤRdC0OZ}9Y]8?鬡uRԹ6#Q$܇P`dSFk:W-"ϥ~&9iXO%Ysa>ECgr<ݭeIwC/;L"gpέ/akk fDTߤ,OL`xF <\ITr9 kAh2EUtPAs+|4&-.<τgY5DKO^z :ˡWXk&S'Kڴ3*cCXhEDp֌u -(_U?ڿMKu%‰PX#fs%Zұ&o8& G}Zҥ[ƍ'I^ʑ˗nj℩bIk+6*f_V`Fi*Ȧs?gwxf(HLNAFNr4؛[k辯Ra,Hfۣ0 60eyxClSea%7DǘS*nJ#ǬșRJ쯚s{d謖yisƚ 6lbW˧4Q:{}#<7P&!ՔY ~=lԆHy.Q̛ýd: Ku.}[/oJS;͇x ˸84}JP Jh%pu^*:t2\xIյAZ3o2wjwpz[dGzW+N;69'|~:h$Dp>8lzYT2: -8#* $2K{TVK h<]# .:k^aȔQsypf:$|gC?`y,μ3>W'Ч[h*Iwp"VDi%AuL)}vtML|ͦc9}L$!)0nJ`XUHxV"#{yP80ulsup ;K}|pޫy$-O$+o (D>[WFJJ{}?q NCn0޺J(cO ߶Hy6lPMʋ$\jYA'(ӄ3Cwv ܎ jK䠩v42lr_mm La-ԓ6N?T:̺$ /|oZ[|H!3RpJaE*ac)lk/^GGc!.\G/tưO$gu5v凅X:oG&#?! .1toTKOY8Slr.J)=&V"|ӥo۰%s(ޭWJRI60OʧVt,2Js?BAa"B(7|r\ֶU~CBo@.9~rD#߼9#~R&Qqm6 Ȳ*FvG-Z+pe89 '''^:wqTmz 5O$b7l@3:ɻdOI'2y@A4ե2z)qFj~ ֖Sv)$|#Ζ/ۂW#`3|N5 hٽ/o ywVMr}SG&'\#:icH WIJuμnY8M-h+O];{!.8XbjexǍ~ xz$Z[̟bG_$O}` 0j yrɖ~m%Sk.˪1l{i(T$EQEBzNlRBeHX.vGA3HLr ߡ]w^hn&gp6Ә]ei#!hFOqT׆IJ^e$ĕp&HLD&^JtgC%OGNLO*f_Ρyo~aR,,a=f<0;_]zZ9U-E,%ttw=ZAwG_6wa:K;0vs~jf7aHDqfR0'7KH^'Uw=x<sٕc]'b6|]w+W$ݰ V6.2-h&;~dNe+RQ#,\uϓNB }kOH DHbBWmTN*mF~(ӥ’xm8D)4ME4J$\7L 4s[!ֆFd,7E^u. ]ULSd<: T8wwwe;i0=# gg|>D|8 ^7Ef&Dϵ]6_JI`'㼮O+CZ=5U B"e9XjFqUSM4"}pd)}Gկ&|_,5r-kRS!*aj翼sC<]I+W #u)(U2{(Zaї'yc"G>I%c+Y<5DG˧[ p矒,"vR_+Y״Zn?N'636ȸyċĕ/Ap5``YɣLβ!)AUEw8%H"#(mH?kUƹTz~|Yź e]Vx)5F Fe㴮K-7hد (KhSڀsa c47e^KLM?@vyMݪ0_cs cnOxVfzkZԨ2I GvZRR IDATTх+nюƒxX+r/&(C#aW6& 4LexY82&yER'F% U6C},m[ř* y6tЛ_j WR8?o3l;98OZt:[uSo6TeI|uH `ױئyKh%Mҕ-{(XEUzAvvlIMt$6KĜ)_O̜NAhԸ-rR@ݔdjD3_0y(vtCv*T_)ICńq6m$nl)W^QBʛ_c1jRf;ѣee}m7߫-;J 9sQg,|ފLuΏS* Xg,Mv3N/ƣ|.C'kُNRѰ1M'/} :47׎q]޶I1d3фv|Ikkm:;gb@ RmOok$pEhhP^R/1O*SwN̩EV6Xh*I8-2ld.LnHJsGPN'!倧MtZ>Y7r-]DI_kT^ #qoQ-辝,uy&Vw.P#V"1R/hRFѾVO\J-:zfHAEv#ڵԈ$W0f^$E,c&iU%֧w虗l?7}<ȠOS>fJl2 @I'QbutH312xJؾA$(2r-},rۡUw$-e|R&bg9 ~m3g+z|Fr~mϧϐر].^O2zw[='RLj$%H5BEgYU4W5Vr&CM}s^x<ǘe+c;j( ]}w4}ܚXH5mЋNcP\6gzfp H+Ž(ʹ)G%oAp?YP[ڎAJֻ?@.+Gu;\퓔Q"x#å<0՞OtMNL ] (>m#Tw>Ic LK쀚 P$qYs]+.MO `Su͔Y%Q)3h?& A ۳ v`*3`ԬhG]Ox295&O#0j`'Kx s B)kkLFA>粐CjC7,3􋜧ԡ,U$8Z ?ĊCb? f) >P퐰'$ Aÿ2PgzP^E.(R@mo#gN}@Bu:ޅ':0gZdz6_|[c}`9c.L޵&iKJIlIiءT.w a9mDR2[]ihg!"\$.6$Nr(Czdvf !i~mغmR=vmo*>{͔TF*R4+v{fLr1y˩I數eǶp'9,^T^<5_*Ѽ}H&N!z-L粩6vm%a(  L22.˼ jvUxH2z? 8ebXD$<O%{VB=mmQUA?\,̱Z/Iyj@XG& [\v:IX !`f%CeIF,/m}4fM ^Z.{0({}X渔s61K!f~̙$,3yPZ^e/'e]`3 Sʓ V[]SDΨ.e>ֺ. (XaY{Y#MS7V kw @H/s<|㋎1Frܟ!;=|hϤmB =d堶[:8H3^*e]KKTQF?Ui+1ԭ}1CN!~ U5UAu{D1f'sxR=v+utmv*p>9>IZJ2yƴB6엇RqM|cŐrbBoôp&|˥EAy1bWj"I)Y<_>0ϴ[fQo~ Q]+}y-  `שYjXt{iZH8K톃S_M+?t ~q$G~`΋Ԉ:3YD?e|B+t`j*Qv- ldoe ]uIs"g5t.mekaD"Fb>Id{(2?f-qcM"E) 'Je`ko*z iK2=rD?8=pn5܆rd2sEJ |@YKS}HKI^ICw$RG@#e:S(G3bbk =]~ݏ%ҭѷ/P\v7݅L0ܘrV KUo(+_QN\ Xf Yeˁ\t. IeOgfk; ARB)pC%H=DB)8~Kr"EVnq帔 :, {qX1ψڧ9lg}#DZ]˕<룐㝗x^U=Ev6jɒXJY!rJkm9֖d'yF~)_& -ܶ9X9+vd%^ZmXr<;K Bd\2^Zsg Òƥ|ipƬ (׶v& LH}}\>>0;5G#(2~ ЅA;$IoSUd N :]Ж%|CbD:?u-1nFa!1id{gD!1ץ¬l 78 iVZ{=6>l\0{R傍,K2%t2ev'Ü ^..= aa bI"dl(G,4?6WSM xո~ ^cH1~;?4Y2O $ݲD˗/3q'|ʧ|$o)}rgP5И65v~LyƘ*zόbQ2;f@u߉̡2PP"J=z?4 I$An_FD%g94:e\Nz':v6=㓢֚Q,ڮ>S*9)xfKs;sy@ŗ$p( cN{,~3x|g=<^@A JHfWF)dQ "u΢E(ɪH%\&q%3ӟ.'$YgZߖtUlVΥl/!yY~4 FB-5jI%%\%#"1[zko&"Pt<[o(HZ˴a)jX_T\#e9m9=9{FY&mR/ ~H&$01daaYCs4FLUҬr^?-H*QhS^|_'S#~r-)9gZ[B{aUf'[r"$ ymIb0gx\Ob8/21ǼpNI#LAqR=zAZC2aȏ!;]3 єIa; .xJX%_' MGǎбobd +LF'%REylo|Zۍ򑐾9O·\Vg4K|,׫Q'(dt&U'tJ IRv_sc˾2-P˾Ht#F2e%ۜQk$݋T?<{KKbh2KLbUa+ HC. $$,,]՛c7U}OlX9+}9ezK4zypI_!/&[KH H~#35J H: :D[1n> EwR kR?T GEӦ~W&1^8I˜$SRBM`/5iƶB^nXB*5彳uonS5!I zɄl+]G} d6k_ `$[5M2O mQbP]gʝU ːgA8zË2y݀e]z`z0Mˑt\ , G ט{( }]9aʍKX{JuS sdu< qSěDPiWCZ"^sNHJ".ݑ5\sB.!1sFxe~N9+ZtKjIWZ[&hY>7Xcu7P+&`Qk-Mk ; IDATG贷ev%[?^ek#@kk>${|0RaYX, vmZl:jYѝ՛Qyp\2խ(3fuU'n\Ոnm3IuޯhnSuE6J&kѻ8B}G"/iX޶s;|q{}qGe`T6ku2vqx&Ϩ0q[S}R>!Nt/ e :L 6KwXʵ"_W o]:XVDc@ĩ?D*J!%dbi nFߘRS Ќ}בs>xPN;5}_2[E;Gv,Ww/ e6mFWsXg!քzݽUI'@NUүL(oQ<:CTזJʍRͯI$%N&I4c%dRfnqZkN:?6}IFuc<S}þ̋]#Hf8&\kߛW1`IljySOz D 2?@>-:GA8mĸ)V5mܴwRFG>OIhFVHnB3~#'(k zǗ a{3eBT8+]ĚI GAW^Wѻ ïNd#774b*WlQLdK7t~>P*s^sju}k 0GX>>/#Zܙ;'k^ ctlյAň|e( o  4ruzwur8NHV[✒Y46|vw,W>rQ@kzRX2JA,Ca$`Azi[e2v,ͼOծ U*lT.N$Y\JcuIח}Z*g%["/s]Pnя=a*P'aeT:pwF1Y;їߴYm~=sT1w`˓fZ5AP %Vbc󽂘n@gɶ̞ [:ԍKÈvsTŵg^)kV|]UK`z54##rCVv) *[٣E_zپ̖G>(t}lfekas[.i kQ#1Yy9%uT_B3'Ȓᬦԙh`7<])}F˯WvWׯd=r W_AӸIYw[*.5$"*4p(&ϤcN_\HdS"y+UB O$Nȡ,zm7&HnPTMMxxpimkl z,-l+KWb<2l4_w iD~3gZ]S.([DGH/UFw_PhH 0[*!OF %(徛nE7XHS36 uŒ=瑎9F-h!ɉn[AQ@X!WFԓ8P1A S+W_7)#*CAJ$`׌ N=g$)׬qzNEueH-WʡN[E-d];8Ke{i5J,V\ͥr2O"(vqr2T$>u\mJpɡ_H+om~ |šZ]MCXRd۞﮺ ̙Ɣ~l@8*A-$O^Hr 5"0U"%>nzKɒ#[Cf*NRi?8 )y^$>c+MtPEw u'rEp<0 AH2x1kq~x#ɵF4)TZְNi2'#Xå^Z* Êty8Q}<`Ra33ck7VzQ $r^Jp9LJkT뉔q^k~ V۳kȰV /|`q-vx;W? >g/.eUhɔ№zw_QzԞcXբ}1IĞ!bˢ&- rIVZ*X|E)SשAp*78?'' ڃF"0zIQ1F΀oLGMdtE]! aX.I8rYkj-noIIE[nX@2M@ s7Qg7tbsLgQb[3=~-]DC\Niq #Ǐ>6kϛTTEoN-Թ˸mStkSXAߜ14=>G4NfGogxlysG Kwp#tt+G9]y9LB2q!Չ0<>84Ck9kR[{P#dL'XIkA9 >HCo425BɱI\RY*3-e$kmyLl78Q{ ^ԑZ:Np-.eH#(+ksКiiDj׻ ~/LJ 9%d%`JtqW08a ?&ST:áXm<Ֆݿ)uoڴs$v_J]+~\ #"S\چв_yR|qGrG׶2#t ڏx.o>_Q8 LC2I3D{J h=IMƂz[(ɿDWdR2ZK~ KzG%C-,UAa&-fJp-m!~6 ]dХ6)u1Jq/gbn.p" vWͤ_-.!!#QV);Yԁ6Zm]HTד437?qX$]z:Ji'Kl#I3PNƁ0vnT^q'(㗗mG'7)X." 3zd ҹ+9[8$`?[gQo~mGߺ}7_*@#h,|;;5@^ 0 IT_jDR EEu5g[oDI$VIQlF_6}:7-!h*3K V (ex\_y'V )PᎾG=C_Tz[NTI{tTr{4]kwBw *U:IҘmmGJb%\ -B%GZ{-A WZ$tawJ}q@) B<C++#Ϥ-b.+EXu%#aBxeRJaH1$oC$2jmGt@4r?4^G?hdPbndH(qa>i(ӱ([Yfm>$kvMHbH>_mrÿ.2h/#m- 2`Zm_I4 (gWG _LmmީZmy!jڢEl9LVNENSԳ%k~e6ˁ16K_8Jpk.'<' DdT֙~|t@|'j$6*& W KBk^3׭r^BlmJ % Imv+ fudzַ;)mU $>U@|_j|Ls.R :@J]rwꎴ!uX a?t4^P8YjF$6U|$]ЦLnFD7r)֑D^Hr9_Xsk6bcmi5P-#Iڋȷ97}\&i^Je_eҲnIwԝ3IPlp!BN2ooz?1݄[Y8f_`K4_QKY1QAJJ VdCjӭt&Q1Gym e uJ/b|Пc^ZH{F>\>\XeXM߽ٷ|#$-6&TO+!|\BW=JՓEGI$1؏69J| TʪFK|~j])g P'p8u|9,/ gëX篻ᜒ;=o=4 GOonJV nd }xҹj? i; 7Zא V['#3}* qg̓.;޷̂`A,%R&2Y*R)ȊXq(RJEXlG\XV)QDqI @ `f0-q{9}}>z׷C1@mFEf8υy93vRw?;3{ ff:C [cmgG/)h$垂 x QCk?χЫah{ 2R#_q;' ?qʸ佩>0R//=Ga;\cejD=PVX~S#:t7^G16M+ҡ =H>+}Nz %JP*TE7ӊde%5ÐA':< ] R|͌ KIg2Rug`u{}SѬGwѦf |3 6خMzSse*fwc?y`/NɸTxS?]+߶ N3Cݞ.ҎxWD!7tcD͙E/8N"MZ]}zcA&-z`n22ՔDg]ڦ:^Hy)Jon^1R$DXh>3)`tx:N>$nv-b*, gpT:+@W%]4 o1Ȟm{2PHn9®,Il䙒6:~ReSZg($0l՟{ Obϼu 8ߘ_JCqjx+<#(A@-Jކ,x|4wm:xgL6wo/i bM(fgȑaOݨrR-17 #gJ'onN03 M7g# Xڽu)G:GAau"zq!zxկVYN~3n ul6q`JoԎW^r7.K:!zj$E7X{Jγ<Հ7;6evLE>Ws]j z86dKK"}#L@=gx΁MauU"/߉Gxa(CѤ`-P! 3í@jw0[dWf-U)Eh:`ODH/Ec/]W)%9m{ww9A3[gV_/S_d}pD(ZrQEi@! Z2tFL`!:x1Ή˻# DɦyO|U}8W*ua5   65pv6ȭe!T[_Q< qYKрqTLU27լyMWmddUW^hOsw`j9gd4bDz1 K,V$Fn(Pe'aY0LL쫋Դ){ChȠ!FkЪTsJY₩Cg`2փ/ N8"/#IkuN2uǁ1k] IDAT ;I4$AݑYH.c y䌰 Ȁgp!\Rg+G)BŽd6;t???޶u ~7;|蓟}쓊K?WN?i=m7D翃^ \w ~' =_uAミ x8 {#=WN[q᾽xW믅1&~C=_o:GOO}ח~ʉxI<黾_۶+3+g˫+kǞo_#?{0i[/s^~棏W~'w> |{rȣ#_ݷNsޠ^*aguF_xɗ`6GS %RdO694+nq{\Nq#Mby $R6 egN3 ,0`KkAd݁* Lg!ǡR3;F[-Vkނ1SeiIze>\Hԙ-)kb=)lޠͤg_[@t|y È {)n%ĆgԨ"hhZcA| ^e 6俧F6dRcB0- uN1&4X0 3 &>  x1a#И &B1ʇC\t`Pqw,}ZƶٵT'ȣǝ5pm~go/G)AΨn.|}/y"d?7llkh s -`ÉS)fօʶW,/#[my(׾N:}$rc>uݽGz9?Vr{GVWN> ڶU~(#Ks_ޙPv?䑓iٔѭMʤi\Yg3Y?Pzke(~i^OgU>)IzG 2&ׂ"`+TF#NO$RL~%yQˑb%=O< DQuGPn=|\Q}jpyz/i g;6vHk|66N^ ?{h`ϹGNMP,>4 iTo"j#C";N҃ "Nd%D7].g | ) ^G@KFk/RJEH2jC"{Ghw`Ή ;=Jv6s8jKx; O;~[ d^'w2h,ʡ /4P5FV2$z5/S+}]vb;ގO~XY]~-7ciaw_:JgϮs1VW|>wn07ᮯ܏'9=ƣ.QyQ,/Gqկo`>vow~< >k.;K%6[(h>|&H_$d!ʹI,Jrn$5[:R'v9O_yN1OB32N4 r%!yt:5 bۢ.HgF|kU=Se%,UȲ fϖlQMq~!tm9qTdkT"": i@$ZwS:EOI739yl7\Nmqͦ8gg}v9 OeF7",,4f6GN Mrɤ^ b !8F0~<κHۼg3[rbK-۝}D~WNYg ZqPI9A7Ng`NsX\lj~ĩW}^E9iʩWq)^^B'M^~;O<{$k7/1 } [+dC w ˊq0 I]]Z~+#{\)JiO!mbȕ }DџTȺ,Q4mt/匱| ) RǠ^e2FI?UM^*FqVihGkh񘳄6LJgg`^ΔFY:ĿtSo7[Ϟ%w 0 c⍓pHCh+o<Rˋ0d,݃b@pѼB(4&-HCwbwԞEVS"w C@ʷ13`L0L[ݜO_M.fw $CzFIZO.03р{ՒTЩDn8mȶ)jA{0p!ſaqa`-+{O;o_{ϻDBL&OdY^*kőcDmgޠ}s)Kn vRh1!rΥA1F/D{* \w O(ٴY\sE>ˢY\i[#%D>c/EoҼkq`w'#h){$C;GoOeI Ia ^׀<t1R͍qс}Ih胫kk£O>g>'NmKw: :ZZX ΍5 &k>ۢl]ZJyGz<<^:~OD{1˔vF5'uގzhSV r/N)tҼl23i=KNfoM >{VSV$*v 4E比+)4ͮ4Ky$3uVQ?  `"0}!1 <`pIfYlb5~NJ%koS`hƁhC ڨfyc y.{4Y h(g 9}sQpVImX'_mbhW]nnH[]qi% ;#aj +ڮ2gd[2xᵀ`@lR9-//j)7n:_Үj<9 N y")2vw(B3K<4ʮ> MFxw$B]ӥ9Mw1?}4p eZG{Vsvqb?Fci(ΐj,q&:'NMEA57~4:2 7k;QyP7ӥAY(*CX2$@cG/SIzN$ΨiG?z4^>Kw Ey۷W~o.O>̳SDa|ޯFy۷oOb]>?T^[^LD@aW<ÅHCI %L#FtƗ:ljEe n8~qay)DHa6.eIlGb[\hɪH*2/zQX>%N:X\Z łoٵ%&r}F +`G?#oADm.sVM/`ʚpȮUxESr MIYslji6tجw=_)#Ҝkg 1Zי$IW-x4lZRޥk4K"xb:9(2"Xۢ Jfls|Tל<-oʲK;1jwn ܝx7f9Ol磄G,3\1b!XqrK0 Q6 h2X1Ըh` 1ȶp=%߶6>pe)"|UT,ԓhԠ%Nܦޑ}+qT\j\> 8隿l&| Y!%ҁ:'>1|3ǻ~;]x# Y^Y[ZZ\DcL;/ߏ\{50,/1(+wN^~9+.~>XIv^uyyg*t_xxzXcXYYw1DrołR&}SA#cRj{<-]"eg\|2h,/򇗑TbMIJtƓ;Ia D>I²!qWd AJ-2JMq^Md Jy iO\W&5\<6V@6<(m0+i5^v+p*-[l(/]G(Y)*,6-leWr?~Eإil"@^*/GV"Vy,ʕ\߹5³)Ԙpmu+Q⚆Zf0'9Jlsi3t+OK5$o"=hm-7ѽX{G13w&/ ;A™G-n:h&7nL&)')av0C0Ğ&sYi \{E +5킧} $kߌ7zdqcN;N `IEЖ"R LkXpUȑS VH h77ը=z, 8>OeGR5Z~C\/V܏G|Y][?7yǎ{)/\o>Q۳Oy 娶КRoo={v#G¬I(.,kh$9{4Dh%RMPx̯L<ΛhOcV+T`,Mv== w`PYEJj(y (m"wP}ʦj"dTHV\iJ}⤤`-W&Oaq+푁q3N,rl)A/k{z̽E4Fg?Q"C B*_dW@S3{3DX ,օR[=lfv2N& Ю}=9 ],)SI L*C:!.v'^>_q4,0bD ʚpoUco#8K^XN&sގ] 1 PoRdLW#j= lrYq)ڙt3]sw׿xq~Hdsx0+%ف#c'{QFCjyTiaZct=>;1Y[[ ooJ73.`#Gԑxxɧg cOW\{Їr{os~nn/=+]y!|遇|'O_?y끲8bu]0]i* xO]ugC3cU}:}MѰ 8,n$3Xy֗yi`Sf,U6諼C@fDJv`/#q Æ{˧ŭ$q`J1e-C:|hT) Sŗ3LU=[œFIO~Ҁ4wьI>e޷n8Ž>l,.Q? IDATQ")=/!.s;e u2ѐ {}4PI{yt}w_CΣ.ﱦk ٿC+p#~O?>OClmVmwԛmgCK^< -D_F'ط[ܞqz0[/~t 1FMw^VdGӾJGhdz1>62Qe/Yg?w{ypA=pM7q^<~ǽ-7-^cǰei1r 3yn:\v(&ߊ.P黮7nZ\v?p-p!`)&IGtˠ,Pv>˴SySa{86\E_x!~E5,TdiҎHZ*oigPO$s0]9y"SE(܁LJd5 -࿫o@pIp U"A.ɽs./y `; T*K4XNQ^yk5q63hЧ"4[Pa >YjxiwX+AN(fZQ<l)t@ׄd9  %q1M㏰JJc"0~r6/'3{hι[. `9/^ix6DYLfiSVx{@$Q[l뚼3`2D^*@`h`N8:tU)cL#4C^DD9$ xN\Ӱ;{=v} S .UHd>;î3q")qމ'~+n㶛=oKGbljA\|p?~yVWW1aboO8>}=ܽc/px;.RVw!wd*dJ˖"dd/#v8׋ZF{}T.s=w&>J辕o]qgGVRI{_m5D`L N-7 `t;QNaW#eca& yIL-pX D0-a |Ź( #ilq rBq0!Uƫ Zrd6ۂ^54 -w`ۋm2ނ`cq0X LXK 4 p& 1`R5^18J 32b&:$_%1Htz-y>(;P.XHʞP9Ȭۃ&JŸ|nXT 'F|=&d+&3[@5YmeRܼjVKF7Rؤd(+ӿe^C.[M¾,|%ƯDӼjj=Zγ Fb.j<<䯷1 = |f:;jyO%ɲ=ӤJ3(A` ˒%%Jx,f幬َ&[Z˝J[7@;L%sfoT+)f=Q}qbR&j9BbR|t_&/ܧ֣TMA@]+ 7rc@4s)FE' ]uj1__h͢!sY(y.m1tiGHiT@(U^NHF}\H4!;^Lpb'X'$4cB?'];jZIQlxhM #ަw2PAOdl|! `b!b#4&mr98޻J p!‘^h QcJ`۝0h{aAvdЀт<ʑ޸vZڰ-GYy@$Kw48mdc9i( 5S]H=%-7S7 ;M)B #+_+ D)W4VyHEøX R$ײP;u>TyJ[bq+z8=7 _Y;5|u^} P5nž{[lFC>3s 1i_-pa&}ʭmk fP׫O,%i+u‴=pqkYw\[4QbֺC!I\jُ4qM:KXE.4ZiA4 F&HU,,L'ސe '@ M,Xs[L20ѤMcꀚV g;k? Lk`V;M7cCE0 4n-F@Kh`- ja&|Dc01Z2h<g3IhgD h2@S@ eݮ5@v_f!nZ0Ml;_&70; ֕yDY3k]}^ngb|{nw,فxMJX#Р;x`P]1-[&gw'xF .9h 1br<&Ǎ#Y=+$/ 9Ĝ0-"m" P>0*! f aT̼ zTuz4ʱwVO7 W}߅ifc*`#"5!jT ] +K{H< <- Fa$*`BsK)x{(%9ȐE*) +Zң ؕc)I֓6c^{qOOuxwQ ča4W@ ;u7qknԯN@g9<PN%@mzҀH2//t,>: TԙjLu̮PZ S*ͨ\h:ƣ4D$sBefe'/j^L%=rXeNJu!Y;Q%:7A"(Wo+DHOd an7ՄQ1c,4sd%X4 v7:Yk'x {50ОpbD#LWȑGҩL@Fhu\r5v.DÌG4 19ƂYDC.6L}5Vz~!t( ax.w-;Y1n/9]cc8վo2Bqފ3 vfKK[pXmNOaϰ5:c36kp]xcu{:cQieѩq3Ɩ-XʩLotǑoѰ"-bϾ=xlCN¸a{"9܎ÞqYƗLjs.ϴL,YӾtdWIkŴJY%_pB#qj[;f ؿm?Mpc&vNSG߾kg0D(4ₙ16s8޵n0-{wfGa aqÕ7+߸NVۖL3-m:2Zo_{A,;ݹC!JqdXcuD ڏXp!N5D0@;R4s;(MaDy)+dJLNtq6D6vHDdi0]C`(@M/ey٬4Ȅ*w1D/$ jlZɆm~B(iprRI(f&`Eӎ*?j]T,T yG3hj< Cw.Z)ioS]/2g(O)zʕ˜Q{9 K)cf#T!&Uڶ½S)]1m0t.~Y:"^Oc13Kc@ɳxfɣwkd:B6o,*>xjtM3t{23cwݱ57>›Ũ1,ahޯgo78;؞59lێcm㭘3c?,Mk:`M3–"o,h֘n L0[o]f24XkW0j vw Ac %lo@8F30fL`qky,aY3ҮaPpW1j y,5KF<4v=3}Ϟ| x5!l]dp%annO<-=yu3^v֋+.kG11gǃz@#zF~[̳GKϠNBgXW"ln\J\£8ūal:@O6AXĀ&ִel ӗQi{C?3uKP~_IdW,^)J~U]|K|V +;8*6;h7G.g3 |٧4[7Qʲ{d.mUR^v[@Ǹgm|Jwz ҷ^[y%$ % k rf8brr22;BO `_gMDfYtq֨Ҟrϓ ACgi-pXq[Z՞% wJ2D#(6EHN$652tV^3LKM=:?n6gMa ,!Fм R\6J9 Ѡžf٭'6A;n" a֐$+xOd,d,N30#MwXAn7_rοV5ޙGg-3Ѐhly2Zce2o;h0d+ B5dΙAaW6d57`mr4^X> ; Y/uE'5ؽ}.{9=;SϠ5~<㎉tۖaN\}px`l1\: Aq|voǎh@XC8LA'/G}-;p{krpFrƠ;nՍs`d:@}&bMcs//5BYyC ڂ q.*;UuFUSTs$5]3()YƬ Gg 簁^*iZx:*@:FqoJ_XCQ_[LӓE2K19e>uʴ\ռ4kuI]D&6;y8/k%ydm: 6NmvTCc[}cs$%f)4㲩GgP칸57jeg999iХuAS CmRw/d9]yL0DބFv:X]uw 7P\'`L$a䠀?a d({lp;24oM$FѣY[lGu*[1#NZj"mVAOWXXdXKP7^FWZ!rO8ʐ>vj?B%₸}\jM@./EaHGІj`벐;=vKaHi&Q濳/WQFX=Z2QFi8_Ŵq(˗חd!ۉ]4D+QGc%Lت/??:K:J)d!!{GuP^ήqIiӧ8","GDUk=sl ;#E&e[K}AlR!|\|(tMF4>0N Ssyu'+)bӨ5h'Xev Y<i[:1es-Om5<}xo`D#\*>xøũch1AKg:`p|aR Rl63C£[l]QX8pLpw߉fո۱sh1m|\ve8ƝO6،ppϥزp> uky'>n;#]6Nb_qȌAmnw㑧X:7+-x[ph霬-b~4c6&c1@k-sfc3ƞ]ta|0it0qf q'zRw 2NjFq8R2$&+/lz!ai}_X,G<]rbK"# w/ L1O,_rM4e2<Ƌa0;4Uxη t([r5;yޤ)ͯo3JkyH^Tki7;b/ՓdD3>M&eJYZ#|Piu=*}jCbQ"Os.!QYi0KJNyfeH{ Z(QI=S &+J)*$qJWLӯ)Yq:FVhn+MwH̦wjKYqPm8SW m(Y/{'] 9VYM&쵵L:˹F&nuԧaF+撉Sf&ڶ5F.|zI+l_+kǰbA@5d(lȂZ쏏˹1!b gzi֜D s bŜJbL0|{ D>0Lk7 odZ(7u,4N(Μ>xsh@h0^p_{l]Ѥ; ;d8ђoي+_o?ucMp0}vӠ5y{߁!3h[KJ06nf lxf(GvDžbԌ&y_ہ3'WIh.aw|!4`mE ce*/a%y4H-#59:`O9_j|uX.՗}<4Y_YmʒRI [jK@3-AM TMR[Q#yӌR^=jmЦldEÚ*/5Ӆ ,L8lZ?b_3)3-DFR´Ϫ\we#dtXFJ)EU\-u !բs!j;K#rӇ)zc6j:z!\]i9MA돲[of@iM9 H9`Ё6ldXGr t+Xjjw#Ài\`6/FCwimPk=d}| I]'m}#K!˃Z4 k﨤;Z, bQ2ڼ,1{m02à1#,`L hlc[wt !lۃ\zϝ Z47s[px%XhS!y6,-c]c`pYum㭸1\ ij[2㞑KU8 >͐F+?.)I35@BPSQˢ(W% +_?'VӅCr׍gҕ[Z7Ht$)QWOk*<J$ 8>1k2Iz¦ܓ5#cΫ\2`ED@s/hӒHqJJ!8(ϫ*H{eNd"V>mI/|jwBoqmN' ךqEBT 9)J[k։u}4I>' )qOimRT䕋CG|mLzQyPT;s2tA۔4vzN砵z%([4)ϸqom>\gVk{c2{qxV&,('^c};тW Laso܎mكs;kAE' Ff/_6-o6̙- a='< Ăt-/žAuaw!C#l_ڇSOJ ZB+Z4<ƖMrݕ)'=gzJG^'I_*Yа:f)*(?Y{DTVE%2弇X6vDO wEntP1+G|RFYYXQb$|)}7ɻLL[+i潇t>%n,eH 5hqV yu eT-dMiY Nջ ,_BJ=,DX*GRu_G$Ns53]sNGm2[J$}_a:6ۺt0H?)6=5)e|vܫJ<o> CʄEg=d̆H}9 r٢Se:/gpohKp[kp!Q̙15aWOw_%ctGv-Ij]SQl"#.E²II c-O|?~uCس<7(}\v7~Fw.{߇??tGxZXdVv ޯ~ޏ _T!M#lVXNsx1W?cx5W4$1!4Cמ}ܱ*1cFK:}Oz5l}E{?_\O\`џ| W‘c/]J|s?8?Kʷ8jIJIN羆2w[ibLh,kҲ]C ?]}Ұ{{(~"HQ$|0.J$Z21dJY\íؚ.zJL]Q{EDբw %wy} S޴R,ZKBy3˷ڦd.*/%.67)#e}uee굤(2?JQMsھϟ<5,1.Z4d4 vuւ1a,knǩNW߄][v0 cb4X_ĸ B݄24ZčWވyZvxv1F4g=-;o9~s @I0"EQEK^,lifliF5M[c{Dd)1(H ݍu~:t=U©xι JTz֩ڵ+ή>JKI SZm;x ®%[&n1E'I_[^>a_tON36{^|-C>K覲f Uc4ʉ~6:œ~vOi5Uim#͈ٮ<ۡRkQYl6r"s+;>[)j?=10)OkNKFS/gxLvT'aFZ / <2[_=D?t>V߱xQkU (W`c;Eͣ R^CמUn<.VkEeŀx FZc*K~A.B֌5/7xkm`kD92:TKJNv 6M hJϵ+S7EO b.q7pD;I/$ ZـIye)Gr,e !w^ 9k l海PiːQVV BKfe]t2ZU;65a WRs Ȥ`"2 eɧ2RC&rBf,0pr qtD"vGOGWLP}h@F9/Y`Aq:|FڝZ#9Xh3~`$!5 ~(/ #ض{?fX?WΛ7e'߅?0߇aŒNvgw$ϙ؂=ãl'ߌO˘7{c.~;,yܵ@|kO>7w'~oo'{:\4Ǟ "w݊~F1Sn73c=3V߅115Y&ѓgEw탘;{c/y ;^SjuB gSLqLk 3`haR, D9R19.ˣ BFXp5"g}?uH ,,d,SW{Cxb磸xaalZ+.{?$.OȱyϾ,wO|sqi|c ㆵ+rBlݱ'qyb28v">`/$053'v} 8v4>}A>O㱭5q)|S_s^ `F/}~Ċ ᇏ}O`hq3m|G pib />r,6>OmfRܵ=y=n`G=gm,]8SOgwTZs.Aܸf9V/[sGPg^/bQ z|k6>m{fbuF=y7sHö=zl< p hUDiVިէ.}?dbTU;].mrz5\PT 7=R@iÄ#KyEQ9__֩kx[@-d"aSYߞA#HD+1bΔ 贁I~D.Mbװ~OѲHizFH5 ).' k|S$itz^yK~D`^joW z{8`"!'5 !^Kٶ?"7ƦcPg^@N%z\bH|d /Y| ^_F.f} s[ pצ{{ބV&Μ??U^:.u@B`3AEy=WtqqbcG~ (GaxݝoO? ΁.-n7 &f.# & D.{JJc0FHv &=r@`>, |D |n~`ފ6 cXhu3k2 -84&*@"m v`; ywv;yX<{Hd|r=2@ k140ĤFOE[X(PkȉЏ>\ /En10>sE?av,ܸ&<4&e0 u8>7D|s^٫6ߊLb[`Iq:\9+6"eZ|ác'Qn[7yqYLMMcQ k@C-ƻ,~wߊ~kpלh~kWO~n?NE/-<}7zi-Ǫ6~k/# ǑSXh>>s?SӸ-=pƵx8uv _@ݺ>'Μhpx;ߌ-֪\[nވV+c[ض~4 w/bxhSƒ?㘘ݷZn=-ךM ~`_&xwu J <+ԭ;_ܼa ᧶a뎽x]H^Ә=<_>|ѧo?j(fC?V\[n0e|ؾl\sgc Ķع^-ƞ,#q8:Q p^s/.('CtMe\|W!OnJ9++l O)ջqq)D JvS!R4۴\J* DzWpdWХ`)RI5tWgA?cԕQt4Ad6<Ɲzi|wC1mwp:̖Z]nonC}qZWvKɉߦ.YHXV]ˑP}䤯΋t5OdɖtaP+]B#)Z}9ԆDb"[{JOy}qNV.y\VyeQd%!KݳNk~STxqL!녟~{c{ lŢK1hT0jæ[pv8X4w /ft1ѹGwb&@Wt}jaܼu\8~b֮؂Es@aEbڻ0>9Y7)&qq> Lmd< Tg 6b_qht,ȳV.Ywb8D)c᜵he D΍QLϜF  rf: _#%V\`l~ ! rg-ܰ,5/Ԗ׶@Ȉ)eGP"-u2{t"J ֭\>LMqq83ec,l^ gމFqi,|ѭ[mp̘[jA7Mk!~c[ڞ83ZsX| c8sN>5˗`yN's/: ? n!}kgoMdXGO' /i9w.@詳-k^yKۅ?_=q]SׯZd YO<g:1xFOܶy=7OmGqib#0zJٲq {o쀀}_k8;~GOz3fu -vclnܯ_N,e)8'V =Dw릵Be=kiD0M +8xB=Zo0nF)5m yfXL,|.'qUp Ԕ$4[wRۤPRm4;IL[`=zr1 V$:i`E8/)+ f7CJ t)!ZJ=}Xc$RG^Ҟ\88 !:S4@N>waͲe L^yA2dԂ : ܅g<&12 Ip$ Y2=m*'! @ t9Q <CK0Кs1N ,Y}L̜Gܠ'%(, mLup>l\u+f.Qa58}0.t 97sQ.:.v3)# b,Faܰr3X? ӗ0kxn~5`0c2C p㚛044dN(A#r^ rUw{9x[lk+E(YM|7_gw nZ=OoߋN#CXJ]oy n\~dhd(Vڻ|?nXqd֐?UWM<3Gvw޴wܴ-@xw+mFaեJxf [,SOm-SWl[mkkum8 -!q0Oz- &N`b8ɑ!~rjK]t$܇G{NB0tQLHbd:4L{@6N9d9wcoab%@]]DNR`rv{>vqImLi)v 8P`$Fqat aM ,2bo `쟫@۝3GdZܶpMo+0z(`͊Y?З5`q̴v`T`sϿ$.N8u~{Fw2At1=3 .' g9Xr,+F.8}$Z-垷❯1vf %P[7݉Y&@ 4c "F8Ǚf1jbG1+<.FpFys=MvRn7_ׯƅK8:z\;U"4ffhB_Df&*+@0zLOOcajYDR+:\…Sxzc=EƢB& P@+7 y%;9ff.Xd=dYunĎ&!I<,YY֧p\ũsx[7g j'q~֬ Ã+hrYYKqiΧ~6,(Ҧc<86MǶOnO`lԅ$vg 3P2yhPބ0nY@.OCbXh! /œ/qflt=E5rE`&[$΍kͳ^؏?_cQ_ī|tǟ|#'z̒ywΌ]\ϡ/_-ez ֑ &OCASBuHk$Ћw_ y@&jB>QZpabÁ;?1Vv | &O@i0]\t{ \̠@NƩ76]>˗CĤژ9Bcva8v02c8ziZU9spyb3iF gǏg 8 v4^8 1 p"$O̥CG0Lu/. Ufb@ K'SœwrfN2n|72dxzXh!T` x//r BL+_0 2@ ɖ 좔*R_a񊇕b.\E x7mX=]}_cu+·ž ?lXZ1A[ߋ/>(996^~ղ]t/Y0o~+o݌_|[~Nã[w'm܋/1vx0=}Gzb-^Z9>soLJ?)o_4&:7Ǟفmݎ[nX|ǭFм5W#lX % vݺE 9c䖍kB{W݉_'_}S{~ϟ}лq8{v'ٺnZn|o`{?g Ff/mz;Am/b(GXܽޑs `'"B#HTn),ȞD O Ҵc)\ z"QM=}?*Qt32x}wԝ2({;w3zysNW һH~>6 s5jyIqbvZ #ʘ{v1 A\@ȤQ/qȨ -d"G-(0 fU؛T?7HλI@P ;k2)< ~\lj t]p686%r. ar&qTehYR[Rppʼn( @Y9al X f:u1FbRVd7-Π=!b׷-&.M_DڀОsPFpQH0B`53"tDӝi\>]ppl C:'O 0E?--V&0]\3(sa)H)W4 sVꇖ| >췽ul3&=;tFa7c/0A<%4ժpGjmGl]x4B^o1ϹGƩwwJ w qJ1>։oFی(fwlp(R>;'t q8勳׍t ! RnTʫJLpl⷟7iǫ͈A|wH` X&qc/#˵Zvu3(VM {ϕo47,c>e~{p`~ͷ("B ;p $4Dz C}̀Zj-(,[LbN6D=ͮ|'Gl &)7dC&A х]p>v[:쀢!8/yTM`o^u!8(7O_K^7=; 9iF>tiL HY/mW2k]1K3Z`)"&f8nd*ENM|(!S$ I]Ӫ eLLQ0b|h'\lk&ѿh_d|.$'Ct4N8u%]! 0+PGOccyV 0N))y^ 7Z5G`gz;N[1Qu_}o0!%T+nT|J7yMx2{r-{@AdP[H+lĬAls;,ku+1y^\}8yv Λ7`xpzpe\|<*6bٝN}w#krh ^_ᚖ0]d[1(jU|F0R_Y֛ pnX옊v3R-B/s~c0s d`Pr CTC-r]8ʴ562+c/M?u8V ׽pc$mՔ$EZ"<*SUWduS2CxkKCzڎB/6H,~i9v ۻZ_~OT'B2\ Y'?LP%PO9e>ڹ]V]$%Bv=2 đŏ,!3W9I"%$$%"Zu8Cn (%[**K2pA@j=K(i LdbsM F9xKYq *dq\Ч~㟾`Λz0 ,O@X'Tֱɮl|?{-p myH Pc]+|DNuc Q s"q*=kbĵ9|hlx ic.=r?-JJ/7j>EŪ59POwe 'ڌ]IǓIK,]!ޭƠQ`ab~b}ڐ`x})Jq2n_b$ڎNdNnbS1/u gC_fʊ& Džox3FDij 7 .xW"Q6r =M㮝C~t FBB|SZS XSv&bZ$&?uU8C\S Ϥ38 (AJrɧZ\j!xXLlq2ޛJ>QRM2+ E~cly 8jf&%3ZmPt3t /7#c2K-q.ە8`b'DqBy&3Ҟ ]f> .-eLr +ȑ8qxɳ\zur!ǁ h+⅂3֢6MLyCrS{?Jk.޾e0ȎvRM"k ps["r(\֒&YkYde7RեHeU݈*'W>'*FvJxwz)/1(L:%Qu tD4N{X@#J%cGhcI?)apmy;pmthndH52/aTe&^LTa+,E<5t4Y_Ѫyߤ˩Yb{ajZ>#O+M$miG. Z)%h[pp tG+`HSf@=r&lg_ (.4D(;blw= 1S2"d nv jΖEBOhHHl.S 9"Y`y92RW0*]>[03m(J!@ڢ˙<酆+52. ݎv_ J)ܼe/iPWZ ˁdy'mj]V#}|?8wRlc|q'Ξy YpO`d@.v +E0SD&$ܓגՖ+u8Du24_+)zL @\@+#RI%b $35U ^-wI"` )] su; d1I ?4f ۩$֘l%1 Ɗ+ ?6N/֎Վ8'+1=s5A M㐘+xo6&N3Nݭ}?TTT ~h/ROҖ+dɟJ^]}eha1@Ih˯NL$8RZ))@(iR>!bkZ{;ES-g=iOĥfph'+P-u%S9[kYoϪW\5!Z'r>2J ^ܨMT׽_岱QD&,Z$f^ I;z|8ڵe/ ~!MiBSO.bXc$oy̕]f$G#crBKE M=]X,A0 bj =SprAP[jIK o{!w)Ƥf$f6uTz LO̹8z0:Lw-BFJTڀBDʉlFyN iMX:x ̸A%\?-x !I[l6r0峾Ct|DHņu$,zStpM&S_~k η"rw$eڊpvf!Uj}xW}կ`: nGƯRدU+=yuTn]ʆ7[3i?B-ԁڥAG} BkM>Fȟz p"-n/'O׾QuK'Sy }5v<#OK,iZ@Eʔe Evzcž;d?RphJrenFȁlU)ˈg,qԅzmٱK9@H? Վ~7rJEhנwyaZK.c$"C:q$4n:TagGDUESd#uS tN=`} n2tI01uW:>3]g:(SD^ߚ8ԂUJ ˹B=4PWSi"4&`$$1²O mM@˦K戫#8#lߵccqmp>e`KgZweyI=r݄Tk(Ap)0EG&M?*K7, SL:$.k=Wv#g$(͛ח0);m2“-=.OtBM 깮kiV^:7ĕ@U3!م>D7G/`5髨zI'NFRSWGeBM 4vJ:ݏ@fwػ&h*Z?bV;!?Q/{hIB0/CgkWT(B%1Zn(5g ݹk:7C(L(ޞE(jy T\ Ѝy N\ia{`Z"f MhEFWSG~Aqkc楱|0ؤd[ʂK][S`ZKϡ-R5"ZZS MBYikPH2U0E'n4u REw'&"Ǵ/#*l I}9ΤG^b8 KpH -mD<Ny* IDATȆ+;07S|/ Մz]yCCy\"'`X_]= )GEWjHԴRD$=wx\Yosm"FތW aRLg}"@Z)Ӓy9K OˆhR``ܢc_ tb[j/rWvHYx_kX]_pu: `Uٺ"y\t!Q%>տz d='M8`؈"`wSr3&h}x0עt'_p]e]L/_Hi])pvv| t4u~w8exصR3k4rC[^=%0j2_Ef(;soaČD +]U_`Ef d)CF-0uX),}Jl@BfZs976I`U^Ѽ3ƗYTDhPW&(£^Ө=9.9,DŽq;ZUi9 凘hƅ0w{7JaA񮍽FA Yt6!;5E3J!QjـMGCADd#߻d7b`:`4Θ z?]q.rJkl@FfʎOݦ? &,J8A ,El&Si9dQ̩R$58c XY5nh|8Ng"ԏj:))~kɻL)hő "tVGēpD\/9 i+l <_rcBFm<84ң-sEx@6*FJ.RA˸Z+6}z IAvZkIOl?K[jmzˋn$4ύq5u{h z}GoO&H 4MetTJUd2z V ,\ !U[&xMzhxi |uKXYA$L|,"<AS% EW%bG?M>,RX5n#3YV ~tNnћҾk*(٠)e*DYz2u?i@kKY%צ=JONo*5×<(m>{f _9l/q;~UL5LAP+] ՁO !&:OY_t4}-gEke|IXscU۵$5 Rlue`rX.tA ؒrQ'"y]Sug *N 9 m&9^(JdӳA:tT d`,%mq"yDHLҧl,@%qXoH/]}ՙr9r#1`0'Xj#>"d-8Zov ZCPr(r P0Tf([Cȍ(Cdƃ~N; &7Wm+z dj7(r,_y& ת!-D7+o1pdJQ؜El˛˳+F&6pmGXoȣK'h9iR 6ؖ\tcZT׿Hi~j#H:~5ͣp|sׂxRuO0,]R7pĘҦL@ @Ծ@l ^T`Τ EM`u|$*w mJ)#4_\(IY2:UNhR%e0tԪK){|0Y ]hqBeMMsX<כ3"g3.c 1l!ȺdFBu]ǵ zOD\S7PR.\ .k'/~iG/~ŏNB'r.*2B$R{`<’v'ڣ0I 9t(ʒq2b{Z(5R@疾Z,\6R{ u,m1u%( nr Bnpv VƔgf2VjRE9(H~z`l)Dp%!#o$&$:.t[B;Q`-@ r-fެGb KA3K]Ee;Pcx\垐d}ul{!+Ɵ_@+:#'Ǘ+6vú]?DB5XVɿiK!M9'1zʋ:?>xxݢߍ;nܐ>RPeDފ~p7F'`Lʺpy_ضX<.{n9O> \o⻝Z)|㟉_z7nX4~͡#Om7&qUO6~d ~n&S_wcӚ#D,y#ZIt|IRfU_gi^27݃b'+ڴCcX]#`Ev(1R8[U7" /Rb˵%1[& oȗeC ^)htPӬN=CUڄ.<pH%}>=,ؿ,>7ˮ܊0< 2dz QWmKϓx%d86U̹l$ѼȢ"9'lW'>ZKr[1\?ʵ|<+Bx{KA*HjE Kg6@sUQ̑ۦP&ht*oH%6vqY9\p]2;o'ѤN[ /Xƀ`: "H.2YPir g\ړ#fgJ"Kl0hkj@hZ|+'KjȨ68Uĕ`. [zeJkR)K(}9 DK92Bi%U3b”#B,tTAU-Hh{zأɨl9 ) evK@aɓ 2#iuayCqWsCaD` DA(8f\j+7F;QdBHt(ر  /nn\̛3oل% :k\5 c1AUp5iZD],_#{?Uܼa~ވVcCO|xn=lbu(Ei,D{0߇1wx{q_ 7 s$T %ڲ%Kk?~~dK%Q)1Y$E10 D {93Ǥ9炔+TU]S]/lngg]C3n"[~ǥ?o X}rfZD~n~i'_6yXy͛ƍw/X}?pʍs*vv14s=(Pv2.JU%AEJf=ifat@H\0籤b.X@(uQw.g%cnqX~fU4/Jt:kQS^Q*X9J_T;ڥ¥JUlI2֗TٗX7GaNN,CM@+p6xq׼Y7[p6Nq3/V*$-oٖq!㚥NȊ}L okEo*WygpQ\KqDIs%1(r"I`Aʹ[Wsr IM8An֬meqh6íNNdTȄ=l(vY{7&N)=RiRE5Hƅ^&Im2 |OJ_ ]wS#Dk}:xudNh}$ \}*#{2- ZjT ظ~!:˦St:ĪOc#& DMtt]$I"8pT-dLnGzTB07s]S/e2w?VB_=ə'Y%xG}o=|A^tv(L15j=DOͮRNstuG޷^;PK߹@\3EC?+zedkG]ٱ{Oo68tb|_~ËS0<l^c OCt.XY߷xED [^J$v{Te܄88Sqƻ1#۳Fww[7b&J<U͖.QU?>ǧYq:vl$NM*:2p%WyպnՂZ XѰ'08d)S^AnebJ )ʝN}j1 l\Md6:~"gp*cN[g=x t@J d| ƍV@s{||.RJJޕq+T,_w9LSU{bk<e(i]5.9YљYJ|{٣.ΚUyVk^J@2)]U<Ѻ׳;HAp!8j2@ GDQTy(HZFVV͚G;c˺404Ik!1ek>ދoФx$!Jong2Rg(Zr҆D,BQcc>Db/S kLLLtPѕXB{ Ef.m}N#:U*(@+cm[R6L8O|n!ᗌA"xD(hHL>Eӱr1 $RKXAmЄ :AiKJϝyJ057v{_M7gľ)F2ɥS5\z\rΉ=٧󏿛|0T,t՛;l79U{55L0&C7pmnF9cܓ3x,^0_RZ 8xR)f7cnMNl?w)U8=vyqN d Kr'u}{K|:5&S% υ?IsNMÿ^{#36Rg;Y~7o+/)A!O<}w?{JQ䍢Ԣq⶗׏d*ʷrXIeJbLavn8et4,/5c~p>$AT+TC8U+{-XHwe֋]hN~3KK<gJ8t|…Rim^?ILZeKv LR#ԄP6)ZbN($ X%>cО!G{ !+_@ӱJ0_ú.$ALKD O+2 8<Ā9(;iO&e_B +C5TxR!45 5OА$iꞦ&uQjBPOHg.ͣN>>LVд;!RkÓ>BzBQjH<x|&s8_g9އ/;knvOr䞇eX2^'W"{ȲE?~ko!dYD=|_Y?}zxnxnQ 㬓/~ٯrq9y;%O|\pƉ\w]lܲ?gk>?N?X>ӹГO095ͧr-+>{ysh5 IDATO#cV~i׳|bK"% [k瑰 &O۔;g}|fXxsA03A}eKDf,ZT%g_+ucu_Ykn5r,"fEKW/bg,xL'l\Ҋ)Z}/Kek?R."{Luwrar-apr.x_m!߆LzodkҎnuFDŽ1F<^w'2:Vs,z:KKK@'ѫ`3+?hpz /^!ZEWlCjuZ^FOCSĄθz(G%=0g3Ci$424ꮌ!%#H):H"dH(8үqHp2|f!mȌbEXPiOj<M[F)Fx h1}-<~7mz('~&sXP0^}]U5"2ʋA?.d~gDe6isl߅VFe2k=D|Y=*&NRtZ_JMQ~lEHQc!:z@GBګF]S:PU7ůfr=|xOC` '\ϛ:>uG𦳎{^dKM朓As"\'gx4KF 7ڍ{B&[ p[Ć/qU 0whB_?7n}, ?t-w=՗ R":w2 هl }^[p*!|sNMq(+W,g =W0gx9al|sCX<}c_m?z~>֋R F?kR:n6m% !? oLk>k%?w O_V;{⪋cg< `ZC G/7v`aמeD6ll?/__1cedh0EW̞p#Yw*4OZ>γ/legh~u~ұGѺ0tx7ogQ Xz%s;<'>>˭>֗vt0pgFTho5A osb"ל <}cWr_(>O0Y_p J ,hùQhv7@Ok};?U_^2a|jXZO`[ɹ-kh?uX2* icȞa*t@ 6$]Tԧ^:Nr򱫬^#jqq<;sߣO[c+{yϟK:xin\奝߲kryW\po:qY.0H^Hٯ˻vk~+ddh7v;9+/aޜᴡF Cŭ=֗vk8[`ᡜ:Gga|>}1^ ;e]cY}8|Ǯ^*eŲ,]'H=iZpwֱIRhkvez>qQ ^v=~YBfEJ]hN/aY.TtUOwPW"i*į=kS`%"vp) Э3E\d`3HAc\Ss4zZ,dbրԕ/xUV%pqq`)+T$a i2 @8)uw쥔kY1lF@suLT[W53A;]Hgr#o:6oy'AL n 9jL'&kHYYx- Bs8i*.g >3ʅܓqhÏ^͠id}VșZP,V]1D3Q^ܝL5"?G*_N&x;Wc3Ty^"0*);]{'RlM UNj9h=pn:/xo y`FYrc'aӞ~LS´ ѱfI2J 9сB{<1uK2R䄱G u";ܦJXٓ(Ǥ|5& Co@`aM}%v"TɘYdb4><]'fM LLcrP2$IcSyMܕX3|i U z/hu{}zc"1BD},XY G h+E'oxr-33xv˽X2P=q\b>jKpM|kΐIfCZHc5( Jh"GHaLXfACDlɪ"^/fMPU`PŁFJZpQ]D|XAbkW*FT DQRaI-j B[ͺ]_,\ʃ+ߘ˿wp׃eJ$*L379Cw~m9`Z̴) C-dIv2΂ё3q̪y2CƔ~SWgݑ25vQt}[/]3/l弓M=i+EWqhtkf-^=C.LQ{-͍,Z4ƽ=^%Gi~3EcwW\x܋9|bJ &&#Cqd+Rvsr)هOS}>xcI:h<_3KaxNZe푇Ү=|SWC-Yd$kk7o!K즭|uGqkG׾ϥgľiZNl6tJۙ72ȪJe yGsۏo>w-rFg^1瞲)zO]׾z%s/rMww^FpjS CrԅH7_' IX$@*i -vר!Jj2':)H}OD4u?6T*d2>ɮ0LX* < _g/G,t_>6z~# d9ͮ&M)u0n^Wͯ/DS}1B/c埡TH:-%o8E`hZڏ "@ oI`tB-;frbTejzF6ČꬉZkѡ$lGA?j} 7ز~[&7Ѣ#GFW49  +vut)!qWӡ0d%ׅ`5*^\RqԎZ~GO!`XU|㞇ӨX{d?_cs'Ybqlwam-(xR{'9TVk߻v? [o~۴;+W,>;PG<~#kc:{֮>O;o܄Rkﺌ:,5G̯{{SN!O_9Y^x}M~ݼwFuGA{ _yÃ/_{4uГSkK-g^o>MޗZk1>[~gq#Ny#\q\pںt\~4uq݌dQ>xœ8:nݥ% /\7:AEw\??_~=o|2:O]nY')Zss'rCJ _<./&>_ɩp٘bso{[7A_>7}FS;?$o:jaoB+.[{RtT.wG9ݞAC I崭(,l(8 *KmY近Wl+l&ل,;Qa(lLK$56)|^dwHnV|ks C+>:wv'1X2XVN"?7:A¥sqku-V{_]T7lG*V{foiU])U[ھzTS>[#"ܸxeҀKB3U<};ygͯv1W (Sr/CH3DV YGn6}edA&=+z,D.aTt ˜E]mQ8Q4n0Q*'л[}r3Z^noGϰz.<Ь5xM~'"uA #@)bIEžP$XQ3JIDjϋk FKyl9Oxt3w˖!k(:j\U)Et3ConVL#v$( I_BN}Dh&>S09-PZFc4HC(>ɶ'yWr2ŋM3t7Gash/ N' 7`DS:}Xס2ZeTT^G3t3 $1:V,}-XiMmdHG c{W;3#7ʅ.{9Wlّ: :);^s հ?!,7ze w<->_LJzr|A͕t(rhG?̚g7mWY~~.㭱17?aR|߲ ٥5XXeJwSXURȋ- `dh-sM}LaSJk2?cv[.(S|~, k_|Us |?EўQ>4E`g=VRkln $,{e66 IDATM^ 0y?蝶2t1?g oިq@cYnEjz6ezJkKha-RP|)$((bk*[()PAFH9e|ie"U}I+P1ψv/@H4 ѾZ'`̝|#3]ACEsk:% 4@Ii eb8#$J2͸,H #K8E=!'"fݏW_Ŵ tf_hL) ZGOf&=es,\ُafCjS,RFf|M Rx飑Hա9?+S-~$O޹g#4\lYyaYNDbt B]C Dh-4j2 X3H L+f+G*tB?ul JH*]i\훲i:G^C;0E-XbN&rձhضcw0EӋhAFOt!J"S Z3-^|i_ޝr9 {8zr`irlE]\$"A(0lsExXT8Ƹ!K-=3kG]],t{%fs55I 07.KmG!0Zl  B#׾Ar,]Fd7D`;hZ6JwEL„g'/]wA(+a q7 a_Jw^7W{K$5E̅ȭ9kTE#܆]FJqz-I#eҖ$sq QC\)?ueXA8Vk%ɧ4jH3"HQh(Z#Bi# lwhx(z0Xl294|ɴP11H:]猤 ZEm{oc/F h^xqۚ$+ih| DZz -"q;ZGJID|MX Q`"A)5X "TFhVo D!6*V*P"L>yy~sr ϼo5T J G:wD[On=Js~p(0}X*14R>Tgڟbٽlٻ$wxShზt:r{ZBrҏꢎX"EK1ұ" R(Ele\{~q Rzag]p^vf^U2QOccO)CYY'+k7=wsOʓNCPJ&6"3tW-;ʳ2 8=F>8ॼ㒳 _ڵ7uBOF$>\J,\km7g'Lt[ 'vmn~fz7re܅e(q[=Le]> ffnҢ='caqD(щ[ަ~ճDqufmkŜRN)\J\78qs߹~jSSzU *(Q$[el(b. 8Stژ<4+0B`])\}w6)L`4yf]fEV>Y}jv帕L3^*(E\5Ӗa7i_RRS޻\S oUǁKU•CjdU|U{[+ʾQ_u4QRyr:i1GiHCAi"eRxJ)Bċ*VQh/s&ɡAvm _:޸D9nDgc݈`ِO;g7zy~Dv}^i1y(QC*IA@WxhrGb* pZר8PFOLƒ-R(ŏ;j4'ƨw0;՘}0<7Hl7F~)mRz=a,z&h-FQ$u 5qK)1Y"PJ0Dδ 5JFQ^>ޥ/$M_(BE$ N KH5`)kR xs,mJ3 4#!QjfE5M(6t&LMz rN}ʋJ⨳83@_FVRFB Gz>aΝ-t-;N D3S{ؿ}hdμ1 n)mA1H hmb`yH)*q*-TE3R@)}!"Di;u^xp6M4:Bs 09& |uE([0Ӧ]wR?> M2iY6ӭA\Af_Q@tЖa?Bv%3~v_Ѭe5q1E8_UrʉBq'|rJfX*H;dB}JEmIǰ~(B밖CjG!V^FWLJVXni{SrNDe(ߖkT\jI NHQ6:پ/u/eN x3q)?ʹpZJ1p>q*.FRe8N؎eu}*w$B}W$KΨ+,su,~TKlg*3p9]N R0t^Dg.ݜ(y]\:ڐwnl(g³?jkaVvҲKN9 cl`%㔮3l9 ͵RKs})o7@ےTVfOY 9N]lѲ+T兲]9Y|j6fsoi:LO%?R<[;|{Ư:b/|VU@d (uQ@k'@AeW#j^8&DUQ%~b(HjU`<LG WgʣhZbzj$@{ 5:M}f?}"[!: "Ѩ12L%"yJ82q#+qp/<}W v2LFdK3()xI;`eh݇ EGә╩5Ι8T=FŊdY82бg9: (c!W [M=m:dg_E82n6*7iqg{l{a(;Ɨ0=QR٦'%Td0<}QRw|ZK2ȏ("_T%y Fle19`ד9c_Y;yqU)+SgFK֥ ~qE/k:D_GV*½/PAGPv\ +?)Uq{oQ=s]G @©d>%QmBhҕUWTCJċ,SZ} e),PR1A5#, MNO1ۯ8h^цm5wnΟa-Z\EyʚKf#c\SՍmd4)D˦]et۽OֺeyQgYrpzQS Hy Wrb\^Zv]z"! 4LRaxh ֱ%WdNE5 ,Ri-d-"R!"5 7)XRhb !ؿcEoQyP%Ԅf\}:iC㜵Fn9A@-xA"@ IC5I8ËN^ԄF% ߦ&jhF:"l vjdي,uv6Ekj :f!8h ʾ z )|95{,X<+!:ukvle)RGzZj xыGb%B/TM {`9h2Cȗ uqnED4)R7 ZLؠ[VEѮO!huOТ>R%*:3߆qtc_ijA+tj5BQG_B.u\M '+FSYȑYϫb^:oU%諯p1 xV\QgPYFMЮ@cu`W^uzu#>#d]NE;PQWlƼX'ǃpQSSg7̢$Sf/q ̭{+]%tIF^D }oMuLb[I|alS&klKA /\*n9kIrZa.@P6?2e/uv9c.3y /~>> ue*Le(L゜*[FnIn_L[EիpɵkTkm}b/+V9Rc,S0`9.8 Ll1kN(=Ss{*AVɤI6ST\q`bjGMw|Tȴ%{BS{[I"ULZoCƙ~8DB^g oMh" J6^g_p`1l!s6H4+jRV>}y%~M_B,c'G?Oo59IJ#b28/XDzeC7Q>4߼֬;#֞ϣ?0Z(*Dx6 "DU-W*tdckG-:rCJMO(߻ 95Ao |DF/EGJ?62Ǐ/XP1)D2q8CGxz#-"E6dI*S0%HT BDAjhKI_d/d|fyi ml ifdC+TCE֚,mryx`Q3gt}s"}(Ň2Ѿ/D0+-g@+FeT-Q"?DBG㯻uL/R$fbG5#0<-FьČ0M;hQ/<^"R!FLon0HM}>uJVJ&EEPH(?9kа(g/ӑ>' &^}dl˲aF Mv+ұ(ҽ73򡅞zri;t7uD0)Qw ] TfɽM,? d YR0d'js*('fEjA!! qWN)BxT(9QX}rC,=9,\א]LYf=1_]u3HA [[n<.u 0"S yf!\Lim[W'6RsCǾj0ycϢ`lI\Z;F/BڑIME0T0nY)5$ )\b0e6cӤš)XFYAlJNLr {&=Z܍jHпҞBB,S^J2;_Z`8%8:Ǘ)RQ!BMH0yO, R}0z- )Ob;?4ї# ^W/8H%ф5`ׄ֨Eu#%@̄ T=j4ͳO>ŮiMdtWq^>x[ndT=h\DIt1N8~5:ī5X06Ǝia%Xu"$hO30VH  e4Cj!%O+H{cV}lxd0bx" fb5I+lQA΄OVxjg(C<@*? ݯlZ3g 蠅DHРYʘԺ0z2 ;!A)(! h+dMI <HSe+Ͳ=S%zzʽ*ӵnq*nP9NEa莫}0ǡ`:3KY-s3{+GnSǶl m\UllΓ?ki˺_kq0\3iHW ݮMf-z ͝U1e0q+qw$vC"Ɔ(D}w.Xgcg*1p38derUXʟ,KO%ÖpЩA IDATJX pT @G6uOWV3dvQP؛OI{G% T$83V \C]`uЅ_VJvK倢"vPKE=G*џJ]z]*\#X]eITN)I2a~`!P" B9꘱erxIH'ѓ2q`_@] :qpH F6e\Yogao[eh`_LK1dtGVPj4iKTEާНMO2oV9lt?b'UHNo{KOc>2d<>(_lxb^ɛ^ŗ͂)LL{uo)z|3๜}֑,[Y57=> -wn4Jh?_& Am<}HQGᣂ) ~LьNH32NOTPd|™9l~Y(~ {oWUM'!$@PiAGQPPbAg:]Q@ҋ XF*EjH!=m瞶Z?>z 2^^g=RrpB4e)d ߎX%A9nU<J ЊOch4QjQs=WiRŪjJ\J4 c{?wQi7I7rcF%HfL!dafMvTp'p&vPݵ TuWD{g`{0ߵƭVNSڵM $͖ Ճi $5J;v0i6`#)QtJpx:RN7 "\6Oǽ*bO/70b/I" k.&"/ vaab(?2*m ?Qc9>Q%}Fi;uKǓB0iЮrR7DJ( W (}3k0kTfzNFKMe6 sFR륫aXu37H@&6jԪOyݓwlc5aƮػ'àbivRf&g 0m}rղ s;C rwmgd:.㫞fYa IqYj]{3 p鯠'xBqwTvw!zfZmm[i"wk^+۶=@ZYdow"*[VS@ 7  /vlF{߅deg;o1ϬmS@ l!3v͜MŘ=& !Ylaf/ZĦfǦ-diAQ# Q7:*$4l)@ҠތߢVE(}  jB ;!ZL`K<~+0gj΄&Ԃ(굋&{)͋7;}1j^ȏ= h:"HXfW >ٚ >Ȕd0]c?k(ŅmE苀b 4,VѺ5tĉC?hT"AaPڍƄ}sG;PAO.-gliǐd[N80M$ѡ+M3\6K>6Mnlτ LBTo :S*iH4.T!%uqgֆOWrͼnr{;=Z cH*?; kHe!`)pƧ.1] KWW @0}yzy2Q?V%cņ~J.K{L(=4{dZ8U\-Y7K[L,Z@\џ!+}=30s]=>u)NNwtuq6T8BIociHl;[sp ˬQTpx7c۩mA^GVMptHLMd;_"wD3);w7M1ၐs&RU,=oȸ(PZpE _&a.2lb6q&-J;ڬy;i}pk&%%J^kRSZóY;3 mugH7vK\>Sd^Bkb9;IZYrPXL Kb{WEF& =ZX $<" {KϬwfkw'b$MP^!iOӝIևJh jHEFS2L!R)!̷G*оt0KtD |Iq-ca^P=R$lFe}+91 Lbiu$buّ%=Z$cz죨W\Fn(EP"!뀤#sue8ޫIc :=z%7X {kg$P0X'eVfX:arM{񹠹f1=]%ՌMp,3\7[wg)B&r%鯔\0iO @`;*n( UŶo㯞} M zZW}SBܦ֕` `H3k)5!6֢A2=[vNe2lR(g룫P [Ȓ͚- -Ak ڥ8G%qse Jbdkbd,*2\WCjuWbDp&f [Ð6ZK<p'-f 3kyu2,K<`c;pE.m(K!bIW+2yO%y [Wf)8e @ `F#p8U4Utsg7j"gzb3M uV(V8kpDD JiKvM,RYJ"ZBCjmgrD˳-)7\`7\JVSພ·5K!|nix\4>&Nmu HҥQxO#&FLq=Vok܁8RH#aDãMK,rE<~'%pEY[J6o}JItLSF_r2?b+@cy|8MeĐUI_댂Q)A9>@ 34ߘۢ/xT9`y$Ϡ٬ %h #BOwcC6qF6G:}bo~ѱɢ} m ~]bC~uNugZ Em%Ik9hіŸ-b,Űx"$07YSSD>km+=Stٝd`MJ̶ E9Ô ^T7'_2pgkPRwRzvM2$0jݒBaqi&'&W{PeA32c饕RԞ QRfHNt G*P@6W} Y N xIjͥ\ifPEyfNlشWs0fPӰslw2Bb`gb4(`˖MT̙KZƲ2\Lm I*ddBeW;ZizmzHn9i2drӌEZ=R"%)FJ!:1{0\!T.vgIF+VZ΢J5 +L2(00Dു.+ %oHlU3z BKҸwZYƇ6B'CMj={SCa:9/wsH:E֑*4Mx MBf:& wM98ΝZK8vA.i)];;At2 GbMtI@Va,5ÅD .yǀ@ʄxM 4p:|?Ij#zÉyʈK\J?o{2UIkdI Km*~Ҫ1HTVfD8N7ZJm-ԥSbMv%`ە%Bo=!v#`z6xmA?o 0B]6y׻μysZRfdo]M$Nmٲ^c=L75~k׭Dt?6ꝷw X׾NwW^za(Lkio9i~biy?K;{,|͚?{~7/f֬Wg2E]…{׾9s΢5@RNp#4r +*=Gt5֖NY:}z/iJ]bgEH3/:kL{5T8GtUljzk~94yE`-;A=|KkpcS?%hۘ:=LG;LlhjQLFYcjhy@*D਱>ٖ%@+CJL÷'>hH,C ULib RbE̙`͌WM S*Td]P(ضsKhg5T˜LeZd{zav`w m{WdӮ\ɒƥTC}Hm5relt 5:lk)Pw[)V+l߾lדs Ttٍr(a|D !|\BMNR堭x*Sp%5$BK4 GN3Z3ga[Np ty`PL;SLqs04G61v*iFǭ)m:hikݠ=P={5Go7 Q|@;NLpWnHi3C9QI ◾a>!{ .bV\U~ȓO=}q.?~u{mΝxz5|vۗ}iEW\y 6mi>/_v7o_s^OƧ|af˴I$,V즣yS(|c +W=׾uϲ`AXsptt|K]eǎ\կ+^qsL>Gg:yͫ_ կ~뺉`5W]׶~=\}7C,ė˲K24{VH0A QGN )A-6D@7i&&L$Q*bҿ?sE75u(EۆD'YR ]Tl\L>sGi< hK-"¶@-h:# = o3c'M [:4v2uA@.OZ$5c[m?;1,"\ 0o /eXс"PE13"3oB}Gѓȣ%\F|? SDah·:Βd)<.Xxl3~Y =;qCZ^)8^4۞0($1[$iX#RN~eO?'m|$t0 Ga{4ᔎ |64E25\԰X4fj^'&hjֿȺ {_te:*OcШ;ihk!<%)0ӥ,6J /dEYvT*ʰhL<׽.&F7y~D` ,^m<|]'җ)2 )]i?H0mfBxASEGw~ O)kb|&˟V=LEpi( *8r !4 P-<΃jD(&°H&'\)PKd6TY?[q4@-c}['ɌN~&iLŴ rfQtFz( 6cBW Wî5*9XUYyk cUm8JŒZ\5ScIr)(4RHW{  I빌lRϟKG2^`pծ:Fa05qf oxl#^peݺ f:;hgɺuS;ù׷@n[-⦛~;Xt ~=?ض̓ifmgƏ~߼e'qqApNm6̞vm@5{Rӭ^q9Lpqpmwp֙[ 3gs ^{zG?D4 wM7JkN|K80 uᆛ׷QT9q0 \zOoWI-سI>罜sx jn. IDATXp֭gťa&Ν.zx?.Yq?Ë_|dRĊKOOOoy˩ */g:77Iyn27"%e8H GXqkD@LogQLJQ҅_V@svJeJt3l@ 53:>:u#Q A!8z!; CQ:$}mHp$D̮`Qa\}G:5@xry&L jAjy$9Wt4лI;fOϠuP|ˡ$F!V`arX-=Dk/%x)Bm"0FS6$SB*?kQw{hI9҄q5ڃ)F@"< 틂hiev3}1z7ѽqN?^fpx S;Nj*R{'>٘NAtuPhP$>!0@3CzϤC`1~~&j%,;,}+WaYK^>3bl~QQʟ EgYo9Ӝx ^Y){s9ʴ4&0&a+Bm#. Ƥ"V-pJe2IJӓL(LOwa&U0,ϫJ |Q4Q=erw9`.sCأlY#pD`k'޹{+"H"ǘFp bF{akO 0cZѽ@1`)J+)ua=jiYoVkwT[k;1t;Y~ Lx,=k`N 3M~d]cl޼ Ç.?;ﺇ]ؾ}8dA-[ɉIxƳ[ocyq~||o1{߻wfᢽkV=_vbK kqnjaeYtHX0]40r4͐t6a3bq,ه)l6 c}]wW._+O+?c?\y Y_n&lk/O~3\ 9眳b}g).qWP.W碋Vp.-gwLWOJ*XtUW]_~gώU5yUs0g ROp+ʗ?b.b^zK;Ws҉'_zojg>E=(nr0FƕH!o?_ͪU,/ =fhyC"NҮ(Bf"䕮#JѸIMo/'JI_trcEEGYԤ mݢ) K`?i[BO8ѼSf䲒NjEP צ⧵+yb2WښϟF:ǒbE2߈$^P>"۬CHK:{SϝPZv=LM I6at`0k5d89f MD 쒋- (liK`BN8`֍.B 3tLrCx8M÷h0>a7tgHZL@dr= Ŕ˗ʲePg i$5Vlyf=O>{r.`_i(\CP3$5)Q8[F:]u0%Cy#5yjv2(&&pu4ʵ=/UA&eTIShD+-MpAԐBa 80.3c"Gb( AHe@ Yj)bpNE/1c۶m ;7ofΜYg}gFnCV?>p.7n7߲}9ZjLNMqh_io~#RJy_]wa-a&۷X,rI'4qT¶l^wk8/~@Z7˵^F>gr'~Z^YL "Gn%z~!h!r8 ~^Jյ r $2I]WL53Zb?!D5JDH#yFa:hSD(]rHzMh6 [;GD+ZtCFڌܣJ~I@/]9/!vc'ў F)qn.)}@Q:0|G }C~4\LWB"-mh2}܃5$_!@Hi RJ4ha.֬eNaޢŘvۙNur':ٌM6ixHWS5O8ނeiryE-&* !14=Iwn) t.;l޾ULŭQ,1;vYLNaX=d }zz0Sh$l)סZ)S)1tVY ͢$iRjaMtUh[-Yj9K^3bXTvxud054(ʔ}.XB˴2QqXzQ ̙a2k=?uؾ,?y1l=*2,SU2;2lJ}`፟mAj TE,QZ{iX"[е=Vj7”.ޤym)|$5_pB /\Y#y(첫kyϹuI'?8[o?ڬkV㪫H@===(ugC9ů$N?9{p3tӟC.| sCCmӶ"!sv`oIe/0_E|[70s0z56uo? ֬Y%\FR-+W>ʕR(`\+X;R\V7GBSNy 'RFGw2{֬@#f2::ٳRZtwwя~G\xѥrAs ![j}*w&jmܸ[~}_+ \tїRk!D(9@(fCG"V LI&Oot^)T&tq#u--" ҜIQsk1iQT[xh?9U$7xL4=7e'Hz[XNdJQ%6,&̤$`_BzW&emKNM"0DbZƵg9,T#Ah Dlxā-;t|O!>WFK^}sk 50]Ȕjup2Bu0֏p` ,WFʀw`6%OSl\:)ذf%v/ RbǶ;9Bm4Suvya\,̓Oc UԸBGAP>XZi.JFia5}yfsΉi6ɶml\zzH0 Jk.ZB6E r961 > VTJA+(cZ#cژ@e$-+, 3bH[͓d5fJ razJn"SbL8Uʖ͌y`,^}ݛ9e{jʟodl*OmOd,Y;>պ?֫|46DA>niȗr;)ɕF*mMڐ$͎䨜.zj0[kW\q cԧ>8~ϊ_;׽~K-Ay2o\{Su{xj|b6\s7?T5 fo]e΅Bs=s=GYſg9g˖6j͖-[hqqLOOsɊ˹o>ߩV N$~6ng?wŢg3񴷜_-|C[nK_L,?)4lݺ)x ͛7׏.?/kْr[ټe+KCOO7ap c[FHXLO#d `a;a(Q-8ʣq<ϖ޸!+A JB<-=n4hTM? kT$0wbݓNmtV |KKCD-@R^_w%"¦  v"/MD&`tƠn>'4A`L45#CPu G:^Hp22AXJ("IփZ xF4N En#m1&13WG_^ c[#7-h59Qoq*HA,Z[O8yZǫuz܎%'/u*ߪ.?h ى?6|JK_Z0ۇu`NICO Ўp"UH(fb^m `)'f {HGKe9#9pa/{Ϩ2Fi3,]c.6]ŦM8$R.yb?ík׭v*d!$T1,Qt ]= 44Bz`ui%5T/h0]~lk6Zc}`j )\v}I{{3C{ݘnCy0s(#Bz_MF(mh& &DZi[Z;3f.ץVv(N8U Ɣ}uy LW?)|5O95,[/?yW wK\fݺ{3>0 &l_FR~S\`gd2rŕ2==ͮ]?eyi451v$aEatbjNZX? eNk uHE B LkC$Ai$a1JW\OXEBϯmw,8]<%ű[4EwDIZƓ^G/ڭ"өE("ZhnBS3iY."iXp9 rUNA PP\jѷ%SV/oR uߴvՍ=ɦaÔ}pZ-8~ "GnŒ $;q>(oR9}#:eۚE~i-!I}5@.Qٍ$SGjƨ[ُj||! _lM^9+&^͍nIoh .FZT5;"=;yQR6&yk8Hk?;u*MT&U?/Ҋ|*,c%V6*Ȭd-riuk:sl YKaXY\P*]er=0Ra@j v['=&E(p, K.rdmN, 1!,6i+ `dFT-dxBk@zz9ol#\t};׾t?w6TJp&cP#+.9s?LWW!w9ӹضm;=={эc/;DZrsoo}_%wEyeo|cyϹ4~%+.cǎQ쳘O~NZΝǿ~^=ߏ]-Ӕv݋J7sd%m /RƳB3g0k,t7Ho =/188?s 5 ox]>+;v0<߱Km_cXq98yKi7y%g\2 w4zHhlh.M 章@DCx#Iuhi$F%>+HKϵIuĉDHX\_mV 1(p{TuPm^QPSDS/Y B",;o!Í֚̚^d%wufSU.Q 1*DN=5vѶƏ7W:ę IDATqݶ`(dZ?zQBkծ:"%PMl-jPc@2Y!X~y'#,Wj @m#ZJDV'Вۑ<'KJCq#I+u^f䭈hx;Ng sZ-J[cy%wM_VzfhI#X՝E^wwI>gѿzx~mDO򋇪ZƜA pOIiR:{b46A"-Mۂ1ql e(K&66-C{v5@&rU!iy6izBLUvl`E v-"H JMv8h;ih[%,Y /1dlr[qFЕs `2M l\w]C333 Wh\R- h$ ]l26*mT+5\6ieFMIQJSs *Nnaf"՚KR\,2>U\M UӘ@iD48%yZrdzL8xJYQp14LOUٲn]Q;t۽>2RL`  Ȳ {׍efqöR %E{3w!D .je~wˏo]7ϲ temޟRV(n+I(e`8`Td]rbkSkH%PRy}`WML~KDy(}3\nl/HiHL?~Wai/;iu~uO"Rfn=;:|$os}T-Wx{Y*&Iw)▎L)N.Byf"8%S ^ E$: '(4r_4#jD9D]HJ_/ڂhck_(و0[yh0PHK| @FK|@i`hV'v x8DhGuHR Y&0a%58;sH%Bo&?&F.5$ -(2\?ݡ qI( ӑd vFeڢo`\u'ʪ!򒁹C T\0ZfV-zLDiib[|`f?Ǧ^2wi9Ffư,08c f?$aDd{֮ާgp䈋D h ۲=o7 ~4` ڒhJK3wֵ|mw?[_uϘ35FF8-#α(x7_y/|lelcxT,bKtfѺmjHk]PXMO)Wtćo=T,V cBYEi-Zg^S 䜟.YP-rY-$Mޛp)g̣3z 䚗o^Wvg\h^{sW(`sQԁ?h]mLQHT%T+2[;>glIF9=0JU-BA;mA+G]l:}LW^T>n;ӻC(>O\f~fore QQPwdf:g|?$ɓG\?.2r5wgJ@edzzǵQ}Mf”y6ͯ_dug󏹘SOO88#B)t3?_2ɧ|q}&T(mN T@cHJבJkJ\aK g:H.8[M؝#ȩXrxº:oa.pE`_gm%&2G›/2,FeZ. (1YҬ/PUeP(v%{O읯UX"SYggN/`mޕTr)fj3CgL哏Y{/Vw3C`oÖۯX۔~?G'[ +nд6`RmػĻK*OS+_r\#aJ̵ٰ?M^86 _"~a6B 6جjR"ydN`I@YXY"cBU WxR=|k~)EE8gMEQsNWOwxk7XU_7 G.Jla_GY}BќѤn!YA@(*:tY;_[֮ \ 1lxBmz!]fJVr;?xd%ŧR>mN9JWWgu)[_DSj''6S9?)i\{ރKܲārI~q}pd]!s( >'ͦ{aL]?0~390)k/6$yF9y^52;:d$a(=\+Yx@ )xdPAғRY:=:' C_< 39j֍{*ܣ)dӿnDZx!͎O!+Jvil7oioqAJLWH" ۯJRmDURngl!}4Oa!o 1.]nD$2rka.Dw״slc?KϫP(I!0I=3] ncg>َљ&RS J֐i\cjpk͈E5W,jCj ,g*7+k`6AU` inښڮ_%4bkKcrx8RPV 3d2z^m7w,͉@*rm~6 0h^~& ZX%;)ց+0i>ƍx*{SJew 3&$,jf0Z [ i9),Ţ.sXU(<8c8˿sۿ}̓'a] -)fs98X1/~/#&6.6mĹ(gα/ܸ5AR #`+,ҌXj|4`YAQYL*dUUu4cӞtcZۨ I {.n<;K Q_ۜ==@Bv#$Zl,NƿaWwɯ>= ?v?d-z#hOi)Ng{pk7M~3&k-՚3=N14icsٛqvb /ՉS}ވG_5 a裊\eBpto9ރduSB@^@/`: ruN NEmuAǘc`+dun{̾!ζ_{ܠB[5pi*yZS9s.~q?ֳ۾,r);,Q}>z+lz〝ڐMJlɵ[S.XXa%j-j]Gͭ1 PM9dȤmPܸrOqG]z.JD+^*symbP|/΋G"n"R!ܽ Wnbau[$_kdI!`ڂ*,yŖ|]2]J[6L(% nq" ]o)k4$8I)CHJhV;b~OBL>-10zP%Ĩ ^i+:V382̞546t )^P6RcݫhM3N6ȜFcPR}nS+LDn)@ߗƧqT"ޑdܟmLT;Pa\n  N$ʷվǙ\C䫐?j+#)ks3@Ns߹{<4yiD^/.6 4R_CI' 4^AvgcʠstDhw&!vOBZ+V`ڵZBgWLhyC֠t+T%Tb)0snx+S^FSuY{\k(b: ̝![(ʂn 6N[7&͸KsR+,-as[z?cB&l"exB _ΘFOBrwcn=.RC`斆n=)a؍:9ncN$W;lw&ϸrW_ʕ+vb6)*+7Oؙev W,ekL}m8\61&5rQ~zݝC^y{L'bZ3͙k$ GS^}ȯ|lŻw?x[Rܲk Zم?1?^1)(sL dYk,T@|l8L?kOcVXen޸|>c=^O}p_aVΘM.D0ݲ3l+Fce-/^煯&F@[ d,;{%6(SϞ([EaK`){HaEaAccmz]Isf<>-$,0nR.\i:%ori3N)EgЫH [kԝX]" ^yPEO__J]ӞpG` Z=喴T&ՠݠIz9 '%,U.q2P ^GPT,$O pQrA@4nH< % AmhMMq:cjR ~# IDAT7h ~4|?(GLF )[UOmW! ` 5^yu.'xW:ʈ0rϸ`wfdsHnN29àap6˰L6dۃ2Ø 5nO F1qXNqHI[20[beiㄧ}595Cy;>(C$mSm q!s7(Y d7ƿP&G_$?UYQJAQa~ܲ =Eձ=`BB$+_} 8X kV%'8vdYGs?9Eg9GWqݙցHb Z1YrD{j-ԒN}%#ӝ.j~BRG)NSX-XWQӧA} o@ſ++ "Psޫ0xBeWzRSB%UCzf -hfɏrpOٶ{M/Dȡm\QI\-Iw\8b߲c#(_ 1cud讂!~ Ƿ!tx/2q|caL03j~?xn#&%S؅%OF1~<">2@r7K@E; j5`C} z:Rm;+abb[ūgt_|Η?q]G߯y-OÌprf0Mnĩmҟh=m`4АmWTt`GMlub!%ƨDSC7:}5u(IxǤrOSzNmJ,_z%"lX"@\Br|r k 0|RRq^ A3"ywjz#L^tppI r sch9UЗ_?Ў'SW@48;⎀nڨӉ67A.hle݁aijMf<)k#N>- $U7&!41_E3@lE$x}%絟'!6/6< /f֍NJxgg$1UFK DMWW\U}@|t"0=n?]MpiDzBp4p!)ھI|53h$mk(7]ḶC?wA":usY J*1w!7fHkk \ 2&h%}qG5^W{6@ֵnKZi )8!*Q3=UCr^y3N/X/P%b-f]rV쭧\DM 5Y" T䕡*{D%b4rQa* mOۜp_[_iXSERdw~P:t2T{ S_*< KԴwRɒ]ך8pLb"h `nmHgbl$!a*[(ѡknK\vR? '+mRJ ~k$I7yL a .W믅HtNoAw2|N+^+/sJN[|ؗ~8v8RÆ|Я+w?v“Ԑ;Sݏih?]a A g=98!( 9` F a$;H``N<:e]Yv(f0"SK;wjII^"2K)lS8úpT0O;OÔ p>Q(pox$ܡqB(Ñ#Df|]2] -H,HY^)_]zN= x'VаD,Jè, Ƙh\iHcWQ}y6Z՛VRH׷EjNSIP(5 -9 yp=&V!LPRK Y0F7^ŚD((ek6CH% YL5ӌdk=ךyiX *S[1u&pZȔ3.ιzZ*\.S^prwʧ,0jgs!N0s}džddpdQ5_gy{fd;+Hl#{9L?3nJ#|<i$ $oآU*}oՂmO `c,ee:? T9YC Z(т–UFQ`BبT1"_Nw OiDt=*-1P ]L;,]ڰmv'[P(:Ŕ1?5dydg"bddґ8Ayo3a(Xcs &;T`LsfS!Y 0+.)) vV%Cil!1TDL&P Q;V kK,Yw(#,+c92 8\`o3{EZ*,4rIVYT5%UU"5vB1"`lN.5kdݼsL~'+SZ?q龀?gM༡ pu0l=Sr"=37ׇ?ꤴ|/[=[9v6FeŠ@ĉ mE7 vG N/lCo,αxU=(ڕ]ʰ\9>9(+&]LQ"Gte2qxxč7QXJ(J|2goz ;;Z1~°.(*(EU΢?ɘ?8RFãX>SS DkZR?9+\ڄ}?R)ꓚFi0X.+bWɽWB0jT\ln{ս5n}?5һ,~>I',;,]ZbӐK!6c$$"íoNqNT挘._4čE%2F<ְ8r2}Wny:{,Tul OlN^.6~K.:7:S/Y=,(#/r)0I.'0>8^o0ҥdؘzߋC i`KKPBo Ia`*3yc{_56/{o \p MAa<]⁛^mԮ'?92jt4E=G_"m/%G .@5 1:dCY%5ID(m8ՏzۨVz rMC[dǟ\{z+o I#{N!XU*+BU ?m-ʀ2-ô pXlmB%V՜C J?tT˓ UhPƝ 6JQkdLx|| P3PrhT5RU6bQq-IC ڹhSٍ:(Dj`eJ*;cqQ_rNk>{^$PjqRUt6rz~+hZ9,c쪫e.ǿKe&ېEa)˜0ւ)Y,/X;VɄGfdRcnU s7OflA rEŭXD+d9xӫO9r_E۲k(ɉ [Pq^cl#/ki~_~;?q~J137v6Űs"ٲmWM!]!x}JQr9Xu@CZre }ͭčv9<e !y6r<)5w?$x#Ar:R8AemMK]TK׍U4>m~3#y)ө6"cOPbBf2[E3qormb/у_wKª՚6GN q1n+q k/Uhp؝XنRK!&y/yJ?eDhN#q6uܡԾfZ8,|`K٠˃$01e |ۊlL#|YF6ZNn}[tG GSeR3p\RV"H.hQFff!+id6cQ(+(["ZC$,Z*Aj]_tm Ԫ*S4,u` +g*ChOwݺb7В+6oc 2PYX>=/aw6OOx1;7;uH+[#PjO[KFa&.XJ`.g.4GJ#)Ucm59' N} mAMɭѽ4T=l[EQ˅m7*꧃qP?Th Ce0;eR)1,xme >V;Q01%rG. _#Obc$^7c-?ԴL<׿l]Sikzi>w" ٵ+}cI2ѐXP M "f;K6bayѻgrpU vi d&&>*/Yڌ*FJlImD%hq ^xe*FwW-X-TJAew1oCvfs_׸ *?ozκS!TVfŪ\^)WS]a}>c6)~0XTa]nuM,%UUPUV[#TV:ٽ-HD- XQU-+z̺6Z "LʬU׆Mƴ e!mMbpm%$aumHA?L-l<^5xٔPinH@_'i--*mt1W"s7I)> B=8J /KzܕA\H6|TlX~SS&`7}nn'XW˒K *[Tpm­E4ЦҸɥ%LC+2Pn-5nlk:Oij&?u;V?>_"or:ۈ4ʻmxE47)ִg{ `/2!`B\%H4+%dͶsKV@Mj&hbZ9i+{o?+0bMܨ/ Mp?6CԻ (ciǩinϱ Ձ:HMED OϱO8& [T:l4IYǷ]wNl +bͷ *S7i67I-A#~"&`d@FiQ9Bps Ow;g\<(2Ɨy7O!%ek#[蟳wZ0dA3 As]n~aD`ҌG3>oe݇S޻֯r|lx.w>= p8;Ym|s`ԓh(% ^bL%+kQ^U0%۬:WO3P.15PQ5S,\- fdkŸO@Z55Zc+bMY1AZb*V=VU {FFneaG cj5, SXh*-cP]lel=V5[(QazیH 3q6|'7Q!!1b% PhDR[1BRq@+GKW~"gCd _dva7[flxiKDi{\[iwSh)]"%>`Ge0%F1Ve/osQ&$%o٤(yN]9'_BS[Hf,ev/qh5I0DC;eHh@C[ 2ѺDvyA:C`[%muغtqxܰ1 Z*u} >|zZXFp ẗHBM &nӇؔx7Gf\m$|KƩd>[>.qh7Ȥn2hSKEא.t|el'pyQ]e+lXq\xOQFV-}> "%z\V$ugm}.vG`i#Q*>(By>A A۞TRA(+[8cIZOY*\}%}f?, Wf +lط9{L+!'Up?_ [1h|5|]eev tàjՔ5 cq6UXA4 XeXpm<)Ȧ;֢1?#KWx_3bNJcYWeI\|:奯e[Yll L|*,X vfl+Ж^g2h,! Uee IN3 *, zPTٜ(_iRgp%6R,C5HhqöwHtaIʎ[31X)S6)EPǯ؆FT^Pc\V`plQu%zKt/pEK: ^{C859&\ߏ6vwX\w))(ܻRN&=JuG2{ p0UU` ll\$QJ쫭8vH'[vv{%7l rNViVCAy2F! 33>{ٕ*S׭'Ϣ- &at6Tm؈2ppqH91"7Z|fX"u8(J -5&$X`ʤ;GcFOv#Fq^iͦ67ԡpރx9[\Ez=k!gpny"f#;tf89kpM;]B#O 0¼xn<#ׄ7Z޺s?GeΥƻY 㖘qb?C47EPɫua5[PWjqOF& W*iZx$ڡZ!73G( Iqm$X/ 꺟;В/ #tƹY 6|;E(5euEO F mZJY2DDDQGU Rb%cp;<8Yq7+_cde*˒Y~iD-'gn`戀=5(!KSիK]PYt߸*.1Ʋ(&ៜ]lb^R2T9Jm*FWS;zlhl5/W9_rUyB,kL+;3 ʩ%oogb[(;)rT90hXM&L(ؽܽłt:8 Ri0JW% ^ ͷo=>FX b־ +i *ַtkv}-ݵe#ubKnέtWoJC d π|t zGxLG=,`5Ht!05Ig2ȦkZ<}p4,/3 y#..:7L&h}nMnyyp1xq9 Gmב4vnnn~llWvbgJS;4扇$ڔѰk)5Cׂ% e%6rưa=ӝk؀86z!]4{{3o`;r?qCtݡ׈Ӛ~_'Ŏ\8vIkCzp90~֨I!B#!t=urm ;BIfkڌRW`obrfl-c 9Ih - Ɇ"@ V` Lx[#.^bna PFRdE͟kOJ(0rx9 vr0+'l○PetQdr[єJFqTf)uKr2]eTӺqRRUTՔwG?-tNis/B,Eɣ?;?cvbf*fh>yLtVpw>l&b wp7P*UjE^qQ,W]A!ͨ*S W7}50u?<ɧ`+%Uq5_‹Tܽ!׮*T5EUPU9eQZ\vt+b7|rQ.V ).YegܮL2 ZLf{L'  Gfzbʗ~k|xa~,֢|X*gzq7]^:^!劉-XS*Skum$c,cC`kԾ:M| q4e Q"N95XD0MXؖ-Tb簒E`P—[ێ @!yN/ޔghH.Ji1O+CVxvW|ZVj&uNth6|[>5xO ?V`l2h Fmi"9on.}v"Θh5I? J[)߂#Qrl^ƾvY3׈!`s=vt~; `7??.T\tk8n 38oNbN8R_7Jp'Haܓc)}ȕV?0I7ݴTADKAnX ann:&6Yߌf ;K5Y~ԭ!W!B[ f臲RoIok}=ld^ۮl1Do2=F@b?337_l}?Bl }i6"ZaLIf`&L9]½ŜXf:㍣Cn)ZV(%(P6CIVA[B&<~zwffek_f[G"O[{aR5I`yb)x)C>]b_˷wrfT)dkE'g~3,'x5ޗ&{ëXYUԕx_b".ktAYloƮ9Z/8y ᥗo0|[/o, 8;[Gujrq1W_CDaJj>#Kqms/d}1NXXSRsvKȋ EYtԄzbaRyA_Lo‡>A aɭ=MAQvս;<ƓMW qMEd`RQJDŽѲDc$[XP)Rʚ|6R7l(e0"0wgO?aGHuW]@Xы9uzMc5@~cP) l0>IHR) S|N2Sd V)^yM kqڨFJ:\(մEk&ggњ2"߃sRO4N+ F1L3ϨИ䐕d+T3B`.|pr=&:'Ͼ$ªJҤX(p֫w&, 3lea{7)-P!%#ٿ^>̮1wl4㊴ #\빤AcYJu;fNcXps(-'k[u(Fm/)OG[(B[)V<q~3/1YRi mY@.||*+  },] %ɤX Ǹ5OLVcp:K^dksҿbDWhɆz@7M%6t'K9|NIWk gpP:XBQ|Q ,̀2 paW@јv~z2J`p!D1}|G¨sa/ "(Ekfh~T KmJCZٟ=3vR¦ ffd_>=eE[5T%"]3Qbi9iL!,239mA*a >)P呖\e :+Xp 87oBϭ035[Y@RvK`)#-M:e!LzYκ T'e.6T =EaR[< ehsVez:B.7+љ'TنZuֺ֧*PwH@l}Gl'{4dPl"h1Mr ,-RK5cCSm )23GDbJƶh":1 &qG`2V1m#a5,hpDlXq+UGM; iMiS]r4O˔ѺK,gߡw˺ 40D a'M}qb:Bt*4_%ɨE'VHz0]}6LN6#`5D8ZJx8SNf Q5I֨Q $5#ݲ M|# qEx[,ZdP]^#Z@ 6:)>(wKRs4 l5&=] -d[Z!Amz)35GFeꦑ4&\ߝ *vtzHhM 38! xQ ӊ7^(8?üXN be  'Žэ [0e:D7xDЏ+uL4D%!+ ?[dvSpiflTv(Vtmg..;Gڪ!>Tq#ON7^(r$[0]rۯ*]CM) 4,-{?PRh$ *8XZgi[܎GaUA5:ea@5'R<=PժG8v eO`b*x%CQ9'VEBVV(/MqseR) OIe!Y.P).y J!<>gu7A l[v]r62t3,:UUJ!Zu3ʗ#N%O;{&_JTDveqql.G:nĩ";ZHʆ 5|#A݁F@1Y2SrN-*@=,dVC GqI3ik;ET`Y}$OQuԆf 3ǵ5N4#I =!/T&`?.%6&i`ѝd"W#y}5S-xB2[+AgbU$#RGMlQ[58мxyy9`iAY[@cE/֞ʤ+KtMN9%Bwgl#'5²AH\-9zhwyAUU j.wHe Jb:|r܆-Фh)$UG3rzuJK#\[i L') r4͂ ϗƹ3nxR{%:-уVafȄsxb^)hfFz|2Jkn5b2dsو_G W.a? ̧]%+JhOfBՑ轆M ~7 څ.=><-7dkeI6ꢕ<,Z{RseFfJy᫩GvِFIV$ޔ_{iOD'jkSZCܤǦ& W0iU\= ;joPjh1: `2j~]6 g/E} S4͊!" N|~A-`,9MLb͠OR6مqnp{*);M "Y2;3)Iv%j d ]HKp}H<<oj \/4No +v֒k9G*j d|ɡj92xf\2.nٿV{.Z 씋B*Ph)k"|5HKIKo•<&Ǐ(Oۏ̀EgWW}=OyMREqΌ"E(]BL/Zr,0>w) ӰX,S^)r\++m 2aӱ2z64R 5J\#PAE15;/grcco;^ͳ[&gUZ6.;[uNzs*Q`wb]R2%h)h)*οw^KGﺵ2ef]Դ/[(YqRcxE6OմuaCd:Pźh b-gX$Ȕ@󙹏mJݒj)h!(vULԐH TشÛUVO:Kcwf̬A{_cע2Pv@O%n31\شO2̺lR ^n[RRo e@won|3]ZvEUw%eGa L Uդ% 2"ec eI4ZrY>XRuMu]bR>US=OQ]\SkLm"E<,B T\ U8p ,X݌cLUEDuNYyBSu*x5BiURJR)kLU^ եhlKɤ]./2Q)35~L.Ogw7=tJa )BiaI,OM}mKGWifmLg)- uu,!%+ˌe`Wn[sai"C&ƏJ,eWXBJkіy ַ嘙fY2nY8:9mJLЀemyvu w ^ *$ s7iƬi\Q<XsRH+9ZEmȶj9k2qO6ՋAO&ѿ~.KI@[y4xT:5[k@ɔ&"v]tp]rѐꃈ'Aj7#J!$lϖmyrT?co+n-$ 0z838<)naH P42Fx7۰UuYKvQqV+Y u`>tf-|trCa0JQ/DŦ ⢣bסhHF҈Х@,!b`+k"Z^SzI|u #P!$B;:ۏJ쨿8N"F|wRh,@j?Ba ߂+]L.P4-,0XƕlisSdUNҦp=~6FiOE<ҖXT{z% nٌm[hkԂ'alqBjAv&-ز%8E{,ۂWx>C&i],ijUS)".)<U?Rhk(CieXF{{1K.歿.R nRv8,Lc}G.ne5\,UU&` fq%x}o}U^f~LL V抨 Յ%xXC%=hm٥ʕ i; S,C\~u?=ϴ4avv2{|+E@^]3>BRPU~.tvKF@oc6h &#l|T{X$WxN0 !x^gW_#y[ HI9~l/Nk/kPQC.E|rJ f < ,xl=kLA/!%|fQ4+#ɠ0D T*.3hQL9$E,s(TFHx6ErhX`i|!yrc/ tR pD4l"=y5A*IQCy_MjafZ B~h"7HHcq-^{YkLy&d)ڶ&Icǜv=Z/+zI:m>p'HXVi>0YN4$#'Ki ;c@f fY*wn|;;4a LV,Ə2g}{HJmY:wŖ#J7*oV9d M ԏ8?SLkXC,o\e:c?#6d}D~)ROҊ|S ֛cjbaɦz8뼚"VKan0NL&uD֘@8D%DY값6k$ HfX(v,/&YZ# x[#DS;б/ngɫP)kZCр{m9$ߩlkkjq(XuQ}* 18ڏ8@2UV; EX͓p1{T7w0=jȤ.H QVh%aLL }sA.z^7,=r ;p>47L+16o&{A6NhѡCK~äM~&̓+40)zQ-%rާ5mDIu򸆄[D}e`QYOA()cǦǏiRl?m+K|wN#nci!8QF?JuCi*"K/e`x3mPJ29dtX"+i<|v*~ RTe)[R,9 ;vtcXXƒhv㯇r%`YVCR6o֊}Xeee jVJ^4gJiYW ש2}8-NegUBQ:ܪ石9Hj[(1cfHSmspd;)UJ ұ2vMAwB#8Z蝥\\AIFH!QV*maem7l/Pdda6:64n6 5 sT]8k%6 #lЪv/F͗хFoNjaf#>Țvg46d@czT\9}/iQO}M6h^"\suӗo}J 67v9wԵFؾu[ho tCMf0uU9.hG ŏ,#yHHX L6EG arL) o(ې_:%QcMj:dױHunm(!r]vY'Ť'F : & uqjyؚo~C##u)y[BPIDoWqp]Ǘ/+Cz Q\+POuP'AͭP?3_Mhnie"QtˋrӆF _$UWiѓٷca(fo̷ܚ'a싉G'O h؏(W{c%h}W[,6(Z$L^%>ڒCXxOEd\:6pkF\ce$3RB$H!dմ`X/)\Fߕ D4;ˠ uyw7 8"=Ѱ. #e}7 %I kfSM F'y{h #%%}߿cSx+G) ]i[XsS3YEiV i~~(!ۀƲϐh(P)WZ|\r ]ؖGرcvXҿCy.S F vutnis/vretm܌No}H {TE& BJDh4mL`gq*Mal҉L E6Cd6t7#B+2i͆ch-f_<Kd2i.җES|;PhO{~!7JC O|(0giJsXSҝ 6 ܞ/^q*mYIs| J:t)Z;ڄG PXdrݬoF{H5eutնP[HRm# eozo6;:o&ЖT2U 4'F-{tvRz{dh[= )Kuq߃,l}xdvz~d*hKUF'ffH )PE v;=^&<Ł2C[ xR;HmE2tm=W oCnHi'@ƍ>e-_ֳ>80*%j@vhIVm4oEEr|2IQHIȣQ.:_wfDA?wӍǯgS}TVkԧ>xy]Jqx|~8|_&~~ms-7hߟG;q|k-/.y{ JI-[+xGp=/;?1ވy-3ݿOOe]LL#d:J7oevvK޻y]\^uë ^k#'bX@h~~ou~kf:; Teo?<*_+lϭ&!J}Sߺr䭍8(ygR p<]~]Oѣض _r _qeOG/>@!085D .EU:eu%uj;܄ƍ 3H.M0h\֦'f`1j |:*HVM?&`2w5s_0"nD=~T'UY2شڏ8jj_Q վꤺi^ϰjka$#pk˫6ֆV[mcmm5;7A/koS sF-dEo!pj-%M\'C'fh}m}T1o{Yf{rRShϢ"4Z+R> XW]O{_a5nefte!R%dn)`&-ybC7gRmIڲ:`dEmZfN,%=yeОTU4.J x2v*Ȉ3bH _VU4>N;}`³8B|u6~[|_g si{><*kz uxtw,.c mmrn=5U P]~-pm1ԍ>aR £)y٫[7Ix0&.eAkҚ: I)Z"qzO`Ϟ.>u|KQ~~>[f~oko~m\wݵd2PÌC)]{fSi_kxG>!sZs`ǎx!x<;Q|[: / /ȣIkZn pb \Gwx~z{z*p#g<o.D ^+rûp;y˯g.*+%KpCQ'un v]$8i}cǎ5B9|}_sa u]RkϠf|!9~CŭV֭[͖k 9:ȧ5 E%|ЎƩV 5H FX5(4RJxiYy W{??`f^}tvx9ӹWs=wo;Ua8=MoGtJ[{ *2et\>K&EJBO/ :ҊrG\`h;=6zN#vxE&:Hwa-8Y85YKMP]ϿWyƒ>@'kNgꠖDe9ڐb9$%PNQ_ usa@{/\"aЙlDuS1"њ|Zwֵ$4?W9~|s9Oh^~/_ yફEgG>򻡰9^9?NK_SĖ[=2 k_'`R5k^y-S9@.;#])o8=(׼򺖦dzGxͫo.?]O>Σ=–-Yn_\%h!oDDYS;Gqǝuu?_7oVv8o{;~u==z{{m;?snx aH믿+T~ǟɟg^~?_~ /|K|cff77n{c#ߓ)7[6FFOo|v|===]k_\J^ۿ;Ї>@WWת7,;;y&?{sxӛ?Bro?g~uzSzaUm۶wojc>/o}&&&_{9>OQ:qikuC J!]\m6/3~8?ɏկ r7o|p+ <Ҁ:@:/IJ|?]O>;/߰_#F<We6~䓏s7޽Bp;W5b}ˁ/8U8:/ط)yAffgho3ꫯ#6V{L6CiO1w=;/ 9cGǰmM^˷o= 'w]?Gz[_F;=߿#Z3u+o؀pwC>-{qy[9ק/8N㌍FROy:ԟ֢=h>񏇢k{m'_şk*Fha\lt`p& #ɀDd p 6w.xIh]a5Κk5D SlF@}kkЂGqeh1i2zHIGtU򋀁-E $ѮEAFȍoQpuy!0 6o0ךg@ su8ra0s")"-L oazxag bKI#@"&m. Ƶ%7oqTʿÂYdsr=Xdfj6!vFǗg%5ZJ7nv: B О9L-026'㡕v9!>'rÃᦡ-M)OW9cY>gsRidA;PvgyE6!-K:]")-%Q(-R nӞCqeg|wl•㝿:.,gn.X o9/!%rZBzzzdž-mtwH{G\'LګKԒ6Kr Y=[O&Bl0S]m'l|c|04k'͟ɟ;']\.׈я 3::Ƈ?Qv8F[?\.G?aUeݲeÇ{^nxbc{x+_XwPClh-wWfffK{~>!+.|s_``7 <3qǝLMMO~R;cY C|ٹUy uuw)oNkt͛{ [30&2Qڑ˯}eݺ!:9t6 7=cة}?~G};o'j|R(dt0鶷r;ؽ N2 m?i{a&''xP%}챇I)z{9vl)=\pETU1;3Cww78txoT^Weǎ9 ٳI6mfp|'gI줧X7yjnr۶mglt}|=?7H)9Q.ym6oi;/iq>ןu]6n>ˡy{ǺOB*b`p#pߏK/|۶pN<ccc|C+$C"td39bx ~[hCX;9u3U pUc2a׮]ܹ]yd5,~iP0!#a 0PA`h8a<69t>r,VZЁ di쯍6Ln$,N#SG.^erdjUx1 `Wo0 eH Z6 4'oAG38)-?r7]3{~JWG/ f<dOShpqv\gZvzSKj^%۲c9^`'NgC a`L @ y11y=]x-˒޻ZUuUvz>V:oy< LMM122ܰ#5z l__'dӦҗ"]w>5Pg:tÇv3דS9|/Ⱦ}qŗK/0=5E?_ĶSOp}wpo}p|> R1׽n9<>H:8}/-!?ϰrlӧ寿Zk O|t:úgfgg?|K/{+s3 Oľzu|ӟF`+;yOt#m>/`wxس{7oJ썎~ ) ^ ^LU}h[%o'H'Osn6Ŷ1r[V#ߺKCRS32SiF6Q]4hqjSgLpbŵC|Q@EU`TnV4{L++ZTU_W$a ]W:m$wR֣h}DX2[+NF醡J `^B1<b \*HY/lCZ+6k5c:- %ӛl'1{h< u6pݧ_c(pXch-a t W8m`)BJC.lT\BQTiuk0狀]JQ[8 {y1gŽS)bH gQ)d8}b*g* x5&+GP&e$%\}N?*9,hC" FiM)1 V.hV]Z HmU:@#eW!,)%Ǧ<*%#}=@>W13W&0]߽g9f 0!q.C#lh%BU9ib6B5?s yW-Cz,Y94F݋i6S"NYBczL.Nj*!CɘE/?UÜ<2J2ɐ2fX~VNM45IPYP1& : @cԗ-2 {t㙜@/FX۠/T:у?79?oxg?ws;a4|5=rXckKvgS)4e%lr \_v۷[395Y[?Ҭ /X+W0q/wYg7Eo|!w7 /׷, ;R4GbC#]cryv{Ifgga3^i}땝]vmV矣RpަMw]=z/fժ1֮_[/ڥf1](xMf>G|:{e2 ch4M/ 3F^-Z/|ݘ54\(?ZcmyO@`M/]UI'zA *6Ώ`r £㪑HAH|^ϼ'¼@@tI(i'k2/|Ґ b#wtf* s>͡?<ξ}G:CïSHAAEm$&}W~%~[ r_/ʒ _>'β-vkZp_+(dXoQkJGc ۴EV 0"@7'Xq_T^,P7m>&1]Ixo"Gh 55n2NyNVpPq~ŋ/-~[~^v xQ1RȽh[3nRhnkw@2l@`v2 tg@hDoR0G`1㠱lXnk.q@`B ݮ lDlXJڏpL NVg8ͥ\0ʔ WLM)R}?| Ο !%ru#}imlwbsj@.NMS^2Г!kڡ޽/xHָBqҀC,UJ˳pmЛS^<i).B3\̚`HBi]u\DJ+J{jK H9r](%nFq>󘙞`v|f9 e`hLJqH Hiko;sE7j7-\2 4Laf-==Q\`YYYNajGϱq4 /ʤ9:?K۟ڸ5+V" 0J`I0$H K pL K>eW)r@I(-002-:}4i* KG6ZVxRDP?\";Ncq ?&HE0|Or5,|LMMя~bȓO6on!T?*my[.f^u[~zQ(7?L& v[u#+;t-[poo=z%`MP(pw~ ޽|Cʯ|Ç?Ɓ8y˝w#p%#d=l}.Үx,?\NɻOt׿T+l95O+Vbǎٿ5*m+;}x!K63`*LMMrQVZS_wV^"\2风HADujMG[6F=qSϋFG$uC%;4sEĊT/U&I$ "9`,m4VGZk ^pH?a0xT}Cp )0{rn.,8;E%_`CQ^:sRLfOa l#ћeq0S̔IiXPiNb_c,u=잀Jv1G1z`e*ʕX:S9H frU7k2뱰CT%jQ]6 XW(Z=<~"m zcJc읹kz?N>3 I:8O*`%2e,+i[~t^2)2K3dXϓѶ4gat9a)>/P0pH[b~Khwb0W,qjfɓ/LW5) bI{H-"'ggM_=V}Y{W3!96q 6nb^ZE(؀!o5H0 x`~۷l޺ĴZkZ~˒jooOLjIJ/cmc8qkV5_XWg{}7-)':묍o?ť^ΝpQmqNGAʺmwm۶꫸[ٵk7g}VUn]?t0[__O ? G'*';=5\8fjVͭ~;^?ƍxﳰH&⋷t:qd2aw}|)/P[}v?rhxٰᬨrk׬!n-󽸎C\ಭro]-[.gcG喿dphenیE}YN\p})ff7eD)͊@Hm]w6baGz9o$Y >E[.駟`zjWYlCco -`zzn;.b.0_ -o|kqd0Rkmч<}5i` {v|?٢ױ{+|iZ;2>eYڨ&''mlZ2;3ilظ1Aӭi;Jt%- l8TX`˖WkgӭO (hZAQ$'uEDD $ bw MĤkX$EɈ\ n[j׺M+,29 AD!zdn8,`#={-'ZH`T';fYܮh&ż^`w= ]콸2QքOg"TÃ˾}{?|Qj/aޛ>w$Z*G>0/F_2ǸZx ﹉j}{y٧];.r1+;_LOMV/qwqdwy9odtC5n 4yx1M9Gb"IwlR4i5k&5Zf5GƏGGrnͲxyǝLNNrJ檶PJ4eR[SVV7onJ7헨DXZ ZO 2THAy;d͊$;n@[6p-%w(YtP 5e !Js0_Q O-*?N1QC~k|7|e )atj&PE?łi^%nF))]hvsPǺq3Jott/nwޓ{4̎k#rmF}; +cCG8w3(&j \}I@hNP,Nw#јzEq(,ptkfz}n %ݗ yhb|!HKȉYzTؘBQᕓ36 ٔGʓ\]1ҝɞ* Eif~?KjS]1SʦZN&CV5 Yyh_R}2BMLK!VXks&N?堬1AT IDAT*pUb4&ɑJei0 ib ,'%L]b~qa+Ǯbvtr7n3hvhe*V/e?IobtdBxAiA$*q~^gn>QFlO=[.w^XUuje G ZfE-,舽y?l+B¥p"4y'@D>6"0'h5'x/Hϣ|Ew]@1#ĴMjbx"klQRJ1??$s/'_#,}}}Ҿ|"> h__d~~_gQ5ׁW^/Dd7|fH(uDd4|@Θo旎ދP3M,ڠnyܳg=СTa@1I(Ȋ𠵬82cdi+C4adj (Ӎ"r.XD8' ]VI'{q#aß .(XSFyə{B{>#]CǤӰz(O=LٕW^q?¼m[|6Cѿv,xQ1&Si7%tn,DY`:&M'A9[F}na2SE3,#|O?l&T-{eQMvQ蠟uO1jXa[`h+C4Ѻ²dp֬f_s'8ؽ&-ʸM-a 9Ue}\z-O($JNVjCR*F4q@(G25TwnZ) վ qEBࡑ.и^C$,gs)ї|rf U V;) S(p\Ȃ@J=vĘcr8Ӱ0Ks@#QhTEs0]nj"#ۋm(T^[ajOp4֎2=Kz+eZ7 [А*I{u~_n0S&o-Nccc~(~tmw`Y&'E:Cobz֨qBbg߿/mۏ)g}:7wm$$}l]a0o .qqV.u~,л1YR;nYaFܯ}'> 'Ou]V^˶romZv,2V ӹKn_JǺ\vl7 F2hT$Y46g}wCUmj-D k4 V t.Yf~d߀ W80Hk}b5apFn4 -ݎ> c#HsnȲ$;F2IuK_ TDUĥJ_MD~W|:&};ImOqP:c!ɾBY#^%(zSQ -NAjY$HW<@ ZԢMSȀTIaFD N0qt֮YΨ\8sֱBִI Rae{az S>-}˴Иn)գ(&paeMϾyIn_|C3:q$/<RǷ0 V|w]nn{wُ:֯;w"j(KUZP4G xׁD\]c7V-]K{!hT*Ց]*GǍamlv[ qqEL{*/D҂wܳ1??˫[/n2) LH"x)hh ܫ )15 )i%ּ=WQDv-buk$B{tX%^hb3Djq5b7 Bu_{KNwOnCb "t%(K9!b95 II2LV73kY`Ips{ 1n-3a) ,cE㋅ι~6ZJBcuBep0Iv(t  s|-볁 ʣ킐JRl(,(9ETՠ(>unWۂWLr /Ζpb@pM*̦zv,i]A*R Oj㷕e ,CB@ ZŸVTJ hie)U2#L*RU$).Fgr%f9hEh|6P)!Q([4&M_g[ b9?&Yp1{7%cd14 kæbpy/GgPeAu L!P cT\**R"S1T` K=1du')h]pЮA0J!L˶,4@.T#D9@E|!77 ~ ,emP -1z~Hⶭ HY*цdsr9w#nBkC=[&m+Y^v?PWbw.+WbSVPZ'ǘvGhVzUyPWyk7r5ŎhIv8,+ߚi;T)^n:.`FKxo&mTX+ 0Mnz/76v i䋍a#:p/((~#:?~ciA~#ם7*U!{:XIBDY.iל7oB(e8XثD'in;#ZDOxoC a9J̣! uD}h}AZtW4jnʋJ,2Y`30@Szk2o2TDge4 ֝F`}3J yf&TGHbNrfi>Y ZҘw,x@xt@JME(R&2B =I˨ۣ]gV»d3Փ%lqM8¥G٭`rɲ4bP^0J v==bSl^b,e) )5k,Y3G'[ b pVЩ9rӜE+ukbj\9fO "[!*)#rt{^-@{hPzy+@= tY*Ϫpp9)Y!f| ܒWRD&ړxUr +|+=O(t,j-Lta@6{[[4}9ƌ*{Bj!3F`&.AyאZF1t M Ո?vF] mhlJd6JG7ʡn1ͦ:Ziv=>:CgGKy''NVR|i;}m^#2%E1[g XL?A93enM-©tτE{i2j &q!}q<"UI!]aec${ճށpK&q}?wh kKEt';tpHbόh:Z3Cg@6 b|n X2ϸ^׎5\0ͣhr)\ES^dNe.s|c7#bZdM-0 P0V`Uu=tW-#Ra#kV[RWg(W(ӢR.!\E6#X{Zu bjA,(ʕ2r!Say2UL kzV9e8s` g1&®]J<,qITkVԮd(VT<-va<ːXRK/2h#*R\)pA(ez4cv%eyhR-фV~EhR/<$=>͂;M=y BiLsIY w y*EeTY}0'Q]+PW5PU 灇9d{,XGx*s~\f\E9-$咟8BͲ8YXRHRiѫȏo%s;ʚy[E M؍[Cpr)Z>MQfJyeHr EC{tu?:Cg 5qw@CX.SSUX: t0R58Š7b&ҙO@A@*?~8f1 V6 L6KT NW:(ۓ0\|b۲ !%<${dZEaaG!X&a0^f}u8OEw](OPj/Lۦhy[-LL蓡b"&eX_R[⑯T*˗X@Ak8Qj)C1HvVyc`ѭ2"pfꥶ;AC<Qەi;uK{{,YB8qrԡ8:Ɲ+"E~ӁwWZ鰩]_oEh HCXS> *9Η_4=6_Ap3R.J8ߙОx\9A-H!.%W|4OYLN)?q(݇][vK Nkł9lĶBKҩ k2<8e<;^F9\L@xCil&CO.!$Jjmhg8}4|8Y5>4ǁa,:7LG?*((Wk Obb](Y Kg81YdV8X<=d `0 !4vH\Z U_͵6|߈Z:(%@ ih2ťϦqKG941O\-p+%a#>ږS@ i2R9d2? (%(U5'*<G'L*2f(삇]%I暭Ue*kFI< a*)-LzYÂWdrig8EIqrlpWrd#[^i :UbYǪiҖ)ެA_*rY:ОsL<|(UKk7$FĮIq7`I,#@ dRX,y <͑=/qxWehZzaZ3Dž!HkM\avfOr`A?GOJ?ߺZp2uK@Lָ*k_}N􂼃HZ̸Gs~KM szXk/룸K5ڨA%!},xC2,)ێP:FJ8ܞZ'ml\Do+Kh[_N`ҡL&P4 IDATSCIdJyl$"6&SCvb4ke`=jpEbtD^X\+H5XuDu] I"eǽ˝ޖgKcw7K6y$>mk"YC2Hjʺi3n7򵙛:i:#-q^Sp=Z١%8zs"fc ~ .P%f 5KBP{|Ir}Nf~}`0K.wE IUpF(JRH Ŋ.A b3?_S&3Pu-uuMgDVUɓY|+3ɓP"bMa4ጓO8]78˻䧖ҳ, .ce5brr˜9`rh8u 8p& (Fy /}*n.RWS\M"N?3?e?Va&id$Wcb*V9k~5g yٻ2NchڅhtB'!;/s΄?+7OxxoFrzJ$d@;\N)G ΅X#"~-NOwf;pt/k~/~k79x27Z/vF &}}6Z\ N~<s=V*k#(F'LHo*\}#>w"mM( 'Iq$',ˋΖޢ(VeɌ9 cĠ<᣿a9S (:Da8֜|3v)o^}pǎɔ7brCY9v=Gw~lpహeKai -(,Zr SаpRȥ ˗"v3hv8zt[?rtr|c`sHsE2[m03Ͱ&!P7$1?fgq)>ðQAVui>E7cɛQ)7…PŖlŁul?gABeCyVlc)N%Ľ./ 5.Ll>c7*kX b cu k309⊳9lyF|+sv~;*bnW\R j8ME5՛3ő!Y/Jޝs Fш4͘R4-,KU,U^ iᑗ>si^9^V񵚛܊g {|FD줅Ҹ_]Iܒu<ߖa˼BC,0\ڛ,|68SzL?;pfPBF.@nGQN ګ5P̳BGowTMp)Wh pr[=H ݠN}\5ڋ?m`9㤞Vnm=е_Tue?[HW&_6u'-riQ& @k& м>kC<S<s9%9'~a_ d ΃ɹE բ= a,q7_MR5k: 2`H^j_KCm=W_75 Ҹh[)%sϗi]g|wn~Y554ˬH-I\Fe跗I:\ʊR,K֯%w%\M_r~ڪ9BZ8#jy-JUanNqv2G 7 H#:~7=_=Ӝ)Vq=~n g#ҳS.#[CCt1F5ұr&Ŋ$G.0hkP+ B_i$o#trH">7a:,./ ]sm1A XS;g 8kQ.Aˌ<?{<_#?Sv/ؿ| N9<[NN%FaX9@q\$qٔ(ag l}0BFdGkMwJ=#ͅ8.El򌽅_m)sl@dVf|zԑ&0Ր$%L@#CD+rc1a9 (K fb_^csu8[g]H;ULuzD:PPF(.Y@+Yt\Ŏ,02н~egmMul %.V}좗]P ljE&xTi[!^p9ږۊk^r4n sJ6nW!Us~v>kRTV.VJ%,WwmLɳ ~hiW4wݺq˼-u)inc^R_Cɒ%.|~jt6iNMUfڮَ}\ 5w˼Ej~K:M岉{[MJ)t"S?""7}$x%V_M4o^]WgQ%WAk4_ۂ{Ɔ4sҺ306iC]G{]["~yiN\u*W̭IVH#iX^nr\- AG[Z&șjҮֺlT~/nsgVkn ~spvGLebcD \7 &G-lLA 8#DZ)ֵL!׶y?$za!\G֐d2{0 #^Gl]%="MI g!z\xa0y6f"5lMǜ<&p)Y2$00 !q4~\DJCB_-F_Vec A v($êg#$1<&?kXdӺ.S}) <~q5FmHBi=>2|u%lW˘n·q?x&5s%ov=߹^Q6Vmy'X5JZJD5xXɜNw*6U j3/>F7:~Zw` oin;h.5yM5cF߻/Qf<ŗ2=Tn/솋8UDAe9ʀRF+֐h{v0}5DW}eUx!vR&O a $Ÿ?!GG$[?)L(A0T!=4)`DᔐTRfrGɟϿk'|)'gC d|rH@o"nF `&B&\_|o pp0 D>ab0b/ #$diBvpztɹcgL&PHk7n0f8#tYGo0Dc13n<7Dd)jdAOU49iqz|J('3f0tjI&ĒLIbRs%-{OgdyN/V|WxKzcD[8 ϕBy{XT "RLܖuP=묔snC MfjW,_8Rkt]Ry"oG|6ץ2Wp([_=7\c5b6 i9>~9qݖޞ m)}0ڸ`u9/ns>bw9оYk3kF(\F~6;HŹ*ﻭgꔘ-[Yqӳ|/(@0q W/`Ac*kMF?'6khzt[moy܇sEpTEpg߱fG/I@/#Y j<36W(hW7^A\s`zO#RqRRWK -OW{x׵]kn;bgoyEΜy)i /OzIuc|k1eoF;\y*YDq8rewu5_{${IosrWI^Hz|ʃFy#%M.mos8t/)!Rvg~ͽZ3 (G<$ U bhJ8r%Xe$'ƍw4]֝F)?l46wkO#snr^ZZȨnuYZ$7rC'S lΟ\hVT{8g+ڍZKv\34չj|:UiaUZe3l0gmTf7ߊVw@pL{G]ݧɖjqǷq&[g{@ʨ _fV^xu[-B<Y]?9Aڟ ZD h4 Qܽ3%FX!_웯vz=ziYf<>_xs|tx`NNyr>Q1*bqiְO\Uqo@/1: шHL)7_oW V9΢l!nB?13= qC+e)V.*%co猗'-vӘ;a9KAtP[ggbr03\aSML  +*ugK  5p NDB(yE`t?)Q)pYTP:[+ϠZ16%#_N!U8>פ&,>[o|d5JDEPr׿ן-0]e߶ #p *we>}sNP7~ iVH/?}qիU1IZ?KrF9bq-<)+yK ߈pț4]\#WP6[WOۘt-۱W+^ X[E0+}~{ğj{v 6c{kX$\vٕ~] Y\FB9e e2*P>Z~" @k }\6i/}|MlbqrR! )PDs3'(Wl* ,|xS^_f7PYFgDwG\q߾>8ť&ЂN3\,XcsC']ɰV ?ar^X IDATa"r;g J0s\rʒTgd".qݘ2T!#ȉ޻Ko }& H}r׮M&\%s  #g8=F^l,0N+W1VahZ̜B bi>#e4LN1NRLԌAoƍpޙs%/![luHN@Ts.%9;r>&l,æ3qidɭ-@< qs0x8Rf|/^eʠ( )e_@X\F |PvC΢UjCZ#WhZ<+5@\76;v6gWڛΉ :Vl^7K@k#nοo:wvV  Z?-q٪*fwj|,k_OwAOKWMNpC'ϞYV9\IT cqj?w*Y G(oYӝ>p RTu~>lSvkv~4Ug.цҷ SVn `Xmksu2NWu롙 F*Cu5^{5]ivOZHCg!nF-d TV%y謘#{NYk2xVViv-yzn Tzy:TGsP^)oA@n"rHBJ2P=N3Ni#4Bnr,'Mㄣ?FSNmH!W_g T/"0&3N"A\FiEH8nZK?& a( N諈!X@*DYR)W o~>w߻G#Mv-W^8 rMww '.LfBrAF@khDܑ$1&Ú[u6ZxiExQ a#BPh3l6[ ABMc.\8CɌIąouqQ'm! lPQWQok#ort?%?SB.!O-63 v*yVoEW)*>o_e|%Y*ۀU .Wg- AW:Pض*ZV{~ébY=[k6m.W7|/ (:oQ|h䚲U > MFn[> r̲>p͗-o0M m`zT84r6D+"fVMLquvMc[w핷R4kU:ՐJk+vos۳xT˷V6͐ʃz7rR[y\}5479˚T3"׏BU2i1P1L0(dpE J 0eAeI,.7'G]."Y?FO9NHeeW^!^~cƒ>&1'ؾ•`Lh[*n863>p"Xl X4Xr )Xf*#Sk! ,zK՘_(}F4N T_F)o~5޹ǥˆ|w? Qyы5QXP6' QL٘<1%OXSbs V )3 FU@D>p@4FtFpfJ| 3^~a̅K8,m]FAzΖDR.n` ʯ,јGHτ|q@iMC"p@-Gu+KʕQ`ѝ17?}ocw~b{J%(%s m]Rh?:cr獱QҺ!{]|uu<җ[+oAYۇXlⷽ{S>~&xz>W|s/*7;-UX˚~jDVqsF E]=q\;Wf/HWFnݖG[o{do!qqR2XXRjfO*%E3*ߟlkpu횚i;0G5=^[AeGjGRA-(eM[w^zs RXmߵFJi*8)S DeFyOɕϏ ƾoT:QRםLVPY *'A<fiUU0XI᧟2upp?k;w.9 ~&g%W&N&M3nV$/R?psZ9**k J҅kɥuCtI{Һd=Z3C4N+A,[M=u_=jM ןU- &.WJeOK)~mQF^ȲM[VHlT峳<ۋ;:mqn׵#fa-'P5aSȷ3;mu1+I|~L3T,ֿH4g^EHݠnIz>:UVW8|骃L9Q0P&Fll=)(Y~UFOE=3rL;p.';jNw#Aqp!GSܽGȞpvtFzzĻ~;8E3>ND/|k=O0yNO(g , (WгcR\m53đJȴ%,nd]x˿῿Ko&e[VD"Yq_tVz0v:e:IPZ#PRlR\nIWpl 85Ţw uTfxu\ xh'_G*E<$˻xbqYNdyqkӄ٤|xӳYbH4e4:/k@+a幆Va)YoV+h8;e| ܻy+Lj3KTO· [J x{ ~kV$_gQldthzK&5m_ճrηҡꖂ1.ZM)i7ڶƑtrv7i{ p}rN|C ~3vb{*Rm<{_yBfu|^G/憫=cUDӥ*~ Z_ys%8zI 5tZS@Yc|ͼ`_Wյ?U?ډ_4_ ī[PKS;oU5جXEQhy^JxZ@:UvuHЍD&6魥P֥;ߨjߊmY{v#nyZ[zuL(w@Nu4^]_qq.:Vː:*J+kZL `+uy<+泥_ɵ8PV-,aPbpƠ#H,.-P(8ޏBͿ;qJ& i&?[p6Aa9y %4jjk_8z{!a5(q!A?P;@qf L,2Xb.7zx_<{߾FD[x+#;ўA 1qXt!A |W /:`w{)' C ؎ OEkAkAvtv)q;S0lւ".E#(D%D*}|{)+WуoF֌nZ.*k_7Mـ Fi&4,cj y`ɰ.ƚ,aw2Hr {8% OSL)8U߯`ph*_>)j~~-GzY[ [n VZPƉ)gnY"c-'+65Rϛkuy7=wĻMuKu Bz6Y5&M^cYnyZ1R?Z_dzSOtYz{h&> VUq0 Mb^kp{j|Eϗ/_z]+U*=9|_ MVګz~ -k/0\^ WMm|_}qk"$w [kc׋o~;%j@k/k=-]7G*b—of64LyWemkfrdY XuguK9[\i_krB "|[oqO޷sL8 V;bŐj`++h*[||9@|t2iHԻ/s+9 8JvPd4Mr32MJ2uh |x£\ݣ8o1G\"Ƣ\5*8>N7rV.99s[J̓ZJoәѨ ae> uᄴ~V?i1έ=l E>r~vs:Ct^#Ys}! z;FO_7jZK=gJu-z}MyO1tkgd}Qװש['w뮿+r]AZ:xmO `mkV `Im\`U+ml) kkku۟OeX Nuy'SUKLюe0  {dVp|1p4Kɏ,cQNc-ǝc=K;W\K=F9&:FyE9cɁ|%L :v.ih ̑$rCfg)8dWHdWR~Qc&nq{o3G4E%Mg8P- -|^eFXWL;;\A`$_7E"MR }axrV,QH@NzݮP۩5|NjMJDV?waYρ[VpOi33|_<]vc2bl=MA55o7-ڔtX_#_ΰy_Ϟ M]%_t i+xzmeXGs رou nIn&k=;aoUϫ`tVx2>MHsXtc?l8o3mpNlsevTQQ#r +K\>pGnA}]f}5U_> WTe˷ۼIjM;DziK-KװrI3=צ신}@<+F*-HXD INR D~L<lF:RHԲ.;#+곎@,ʂsAь7~/q !K1 r=~7'q̌b7ѐ_ wy{9'>Al8#9ON0\{7@Y9Nb8ҍ32><%O,!a PJa(qZN|MNYk0%#q4WƢ?@B-j F Bx%>: yw~o7v5G rb-A:W &󃿻)\C$DKXn? $A"8d<X`U.~O{;paf&QCePƑO2ݙq>APe)ޅ2t,FůX;yL[V+pYn֌L'B <7QMѢdh}~>:rZPĭ8j˷I:4q_VgwSm[-_]IYM-a)HXz卍L_XwWܔD-o{oxx}Ǯ^*gOzyuitvI5I/nf ^^Ǽ:Xѭ=[ckxզx7ݧӔ6PtpjLA}ӝ\]ZeuSXYVZ BcL4WeS'v,ctV\yu뼜Gκ- zCEߕq^& s63|J嘭"b]xeHmFyb2Ta]N|e\M5N)@NA.̕θHͶQFR oZNHȭvț.w>QUFl4Hgo/~cpr{Om˰nk]h?`eހK8{3 cfSpgؽw{\Lx|?ǸYX+ 6a EC'S1yqWtHs A0VtBkhazsYG!W/~_zhG*C$787)Ul]vɝS~/q]tb09il2l̾V8]l#v5FS"Ŗ( ZY߻bv5 ;&x/gMi\\Y=>vTюm%,4c$[V[q'7?"XmIJNKZBlpq.OWVV]8<^*ĺI_ۿXnSK$zn3/4֩j&/<-3wVcwZ' bck`lgR~4&m1uͳ'Vaz'ɜ|>mu`[mU-a)'>Iru^Ӿne|Sd -pSbT:N~ZǦjv ˭1c' ;ʤ|`|):R%O&g)J@c`؞ieD#j)qv+ 9dyF<gcf {8yNdu`1Θ%3p_k1w8㓻 wq۾°o2p*aG1S0 Y>;x09s0\xut*фhɓ8 *G{^\DǕH3-()N3RXN-=%XT4B`]JFF 0@ȇLxw9 w;(6eby&,:yƇi!* pRk#!{/]s!KWw @M/~2bAaQ2mC/8>PXgQJ$,+o/ӛ;䯿?}YB89eN1I{v6CkZ-a,Fžv4ךZKVUS3WC^dC}[Yo6[jEЪnnY>omJ9Fm_/^3#x}u%>w]bA~>=kG@&cY!Շy4 u`Ԇau>UĹu!|~ќxjsմQ*Nw|yI7zU׶v5_%Ae=:gmNϹ{!-^a:.?VuXB [Ȱvyxy&&J64AmV=eli,uruq*XooiQkYcD2S\<"|ҢSMqRc[֬[KmVZϕemfcn,FWVyȊ1!nǪҞF|OmՃH̳:6tn=Y 7y3g;WB>L:! 0|U &ԃuۖW-}yXm{Sn(hC@sRZik=ڽ玲 l׭Q2iN]2tV϶ΰ+UX ?+i(~T>yütcpiҞ-!B =}Î]^Lڗwf֤~ nv/ gk:cTl1[bSbb&_"wuʼn="ŬB.$k{µ~kGc\6G]"wdiNS|HAx7qZ q#LJdw%}3hz W&łޙṾtę&33n$2YΏIcçM~}r%oS W40#dX/gW*\1=@-6JX xĘwO=O#toY<أIqu# !#?v|\9xaYI_O}?C/O[i9bl6 '1K#>'RzGHcø =vYf9><.gj$ã7{QsxA~ly[ob$blyJd &lqr1[f֊#ݭ%dV,4]'MfZ*)K7 M!Y8*%-6e8ºɶ,8o{zHS*.H- Og1} iiKF/$}8Kgp{`߆M/}/^Ykrn`w=+ (CoVP}rկ5a'R_ C'u.v[mRjk K`fe^WOu׾zo-g{R" Ǩ@[g91ԃwxYɳ4]`DYX(q$qee~X~i5Œ(5~O~g,,H9Y>CLp.7x W6,:̾wf{Cd0J,]EvƯK)N`DȍxK*ϟbs&iF4˧'B?yd-#8>?|p­( ̸L3 CnYx;qCO@i[35€6z2Nukiv@_W=zcl/;e/4'%`մnBaUXo{qrz\:Ԏ`MY66o* IZ7( )kM~|vhRUTslQP%ϷfN߂;\o&mij_#j #ZϳypMq/3i8H"Ӕ<\q1X`U~J%`q 'x#n޽;׸}*WǸ>'s4'nN £O藟!Δ'G9<2س$#cylGssxI>93xS{)מ WFy`>g1/~wob$E%G5b9fnшnȇO/^ݿ?8ͻܞ -1)1y3}}N3<llp3_>}C&. bV8Pٜkbw!cP5_a8) B?ϧ3))|Ydp-Ϙ;a*T`.0T",b7g-XP4j8ę#\1w^Ast z+2. Z1 R\B;VeohclatVF4~’*L郷Dzg;m&W6ȧ|qxŏ(Á~JQB`)oC/vU71x~uPԫ ގexWn}}_7֠aԆ0/tTi[*as%0 ~uP})KɁRiDCt׶'áz֘jxT7Fjt e~ bim ۥSr<Jޚ©.dz[P:Hy u.KU(.\--'p>4RR(!8w['Vޖm}eo:J -nҷJK  m6Z9+?>LPSmA"m̤2VCigue-ŀ ^hnF߂SkZR_Z}.KJ2Z|Aa?,- |>azla/N,G o:OgLOΈQ,%zg8y׹{&dH2x󜝞Hge dhȓOxCxDC0pCaf!2k{y<硃OҌZ2[(2%'aH/vO39ud<~''썆X8XGvSc0$^Q_;wǧdɉc4G%@jBZ eXT V_ `t֡K|'0˯rY٢y_']9/mW{=Ь׷t[!;[*IԀ9):(f5vo@eв̶z{TG Z@h?zŵ(`UX*Oo$OM/\uI@I-ϫwﴳTP3Wc+7nNXu^Ml}?/>uDUk>Vuuehy[˦s/Iw%-muҘmW:E]U[ܒ,뇅]X׍~Wj`^{:iWL]B_8X-TjV[ז+wf7Rt@m2TqKV֫uMs+{^nzCI9MG/]Z +`)8\Yrq5rU, Rm .P(rZ]x5g*9UVm[R_GMnpbAv9j۞)W9qƤgzx(f1 ~1?ٯ[wv{s39;zq4b1 #|xb;X)I`22/>L&7!3˧c/eWTPAXs)fYN']n'DO2?{?e?~{{~sqD7˞1CxɋDz`vN3sۤx8ƵXSW`#oe7}&!%.j% [ŷ`Ssg?9iF g9 ' ဗGI&?HH㈹&"d/+5o_7eY츢L@Tcz;(!\?h(pXDf~:sϱ$ MnKvc{c33TXM|qĝ81 >OgDw0#^jLqCbW8|\}zc,t xbx/ 3'O9;>gedy̹4ɐѐaB6HIDEd6ER^Ԙb">dDuUGQW>XF(ݳ&Xf:;ng Osxkjcq ,^J~Ke3Z0@'̀XJS۬ --ѫmq,Crg|uWdK]zW~Trkjmr=[VNj-[C!WYt\£FuetJA]'Z F..\擕i(eyx_5j}etKߦ SmVe*x`ūY!|ji4%dT׬ۗ!B]6qO֌m·؂Gw-oBUUv}k_hBCij?h.tG{^ԲRk'a%n\ .ho} N%˲_xpFX5hn[ef~2Ƹ\nrsڐ:\?G ~:ܹfy|,o}@p~5y^t@6{Mlqjp$VY&QhrɔD<=&~zL<{~bHx! ϒϒ '{Gl8 btlWQrop&+@u|m-V/8YbrRGdRS޶›pr$3 ͑u( .AH-9zK#Xu/I*mG0c_I v]h]@γomuw/2"AKjyY:KUޡ  {/տ[g5eV 6{ˮ`v(oIK䫼Px{n[Èx5jV^EgmzulX_< ^ϻBuJ[:G)8b(B FO0Ƣ9cy,ǥ9fqqQ爽'2+@ . U>.5%!#eſt9`1~oO1s kc )C}0V~{IL|8 DŌ>x/_0 ȣOoVU XKثvJbjB4bRZ4Dxx1Ż4gH7E?+Ɍ@"S8{jO@bAUea9c#`V\S,M+P߸6A_UHW\s x pUߊ߸ hםN@xTUd%na˰`84ep\6lhmϷ9JZ!M8P l *w&x׮Aߑs ݯAy0ǫ|q7KbhYj.Okdj)fv.tc}zx=+w l-w9S=nZ p)q[UVڻGn:0p~Z7bM%{J } E?j%*/b)2Z%ט,:! U8b:#6'cl\ 0H5'QÍ cE bDđD γ(OҜ'sNR )Fas)QDb 60"6bo $f82(o>8o_% F{#n>9xyel0u> Os424孷1D8~b6ct0&3~yYޏ'$c@(tNCbk1 $# xy)zX8Oye<&<;:7X ɢdE܀tHnr&-fLDEҦ_.e YkV|4t^]X\ۺ] z Qk ewDQEH(i?%dJ}kԿD#i86iQqwհ a}ˡY[Y%ֱւRz֖*ٗ ]dfbƮtRh/}uEl(O@Z0ջ>|wl&ڤ6AKZ\#wBBkZt(T?C,7K"'m_5-u@ԕTRNOn2zx[[}3h([gR;˶hݚ[H`xiW>gR{^T++$C84ҷ `'}szJK2cejQY-MpzH~D%FN0r"Qj\i y[,XCcDDn^ 3cY #əql c0a2~džQ  րD9"d0"RFx`}_Oz?yGuYxD4O1#^DӜA1Ǽv;߽BM_u,S}1v(kIjX3>1bx/.6X`)E928>'~p|󖇙 cNcq:ЎYe1O1 b, g`sL chr30=+WF $gǼ/b~[`齒=I<y8PS'djYZgUW ^ܨmu@.N.z+2}Xg4B*v -7BPn^P'^ICZУJ}\e&H϶~hA9{t뮮J"nyA ^jM>١{zQ_۹ٰ:RUj[l}4e&J)ho7 W^E9m= ˬCQH'gR.MP*zltV'!wfIqXaC>S?'~Z˄ck5nl yiB6*lMB+뫴v}Z}[5aKm":QزВ̾kUj͢.lۖ,p=d1ĥӷ `_j=㷮V洤t6P3H0]kGi:$scWb Sb@ԣ&/SUYFo ffLgC\& 363@)(#=.%-\= Ah8$,(U0 a42$` $CK2d,$# &&^;cʋgSy-޺s+'ԥ|L;~ 0Lu1 <1w;bc33GwȬE!r0!^,Ǐ8|tƵgs/y<9?trhhȒ~~+to:TmR@Lij?]^n˽cTLNbSH<+ֱoq3Ir"ǵX3pEghˣ v9y$/%R-fόʺ.}y@Ք|[M֒Y[>,-W0&s3Tג[ɦ,A< 'jl6Nm:϶硴!ЮqpgđfJھt%C.tw9}`[/BeXnmőxBs~^yYz K ^Ц,¨:) >]5\~Ot[ (է]bmޝN"tykևZ 0)aS/ |5 ђXj?j(:x*҆]2UgIђ[k@ސ粵&o5m9,D@E =/߫=>7l1)7f7bdQpget3I߂_u~y>.P<*Tt1j!!3"?p2GP,X]K7=){ղa+fœ "&Őr-KƐ0bQ(+B$( 9 # h0Dbi3b C͓g/yc޻ʓGo=&,1S'0OC~G Iԝ18<- >yxa?18y6<=l2&!Kǽ8‹ٹ״YT3~rIÈ'Xfur#N:r4Zp=q`1ynxy3{Wz".i~i)c@Sf{}ɷꌅL/M#T-~,6j'KXUMWSv#$wiIhkP]_d/UUiS*(V?[,ocʯ;CM +Yyߒ{+HK\//o .aWGpY@\6[TKK!`A[{0g6;+*ȍ6nxm *Z,ZC 5Y%45I^u>5U!VI^hH62i}2HOlDSuT_X6I'"v>_B&ㆹR,^5 UgU0Qā:]ԷToA/.!٘ nˁ%bu@^X51OL2B`1(̍-/̰-ΑGS_LB1f0=ę`QJ)ÅCqHHbFBqcXZ_ )7_;<9hqG/p' h K %?͸s0>bhJxtO7nrrOD=@|w)բ\@ErGZ@=Fd񔻑Nrs48D;ɹ'\u|9W 2Ԕ*C1ӵ!bD(K=>ˎ73Yk5[uyec2(dv+R2 ˇH{QړFjihtϚrF!Xh(ȺkWUZ;N ml!eyg@'ScjWC 8`5ڼ]v&HZCش6m-7{R;u_!!N{&Yܕi. Rf&[`i.@P eց]%Ӧ'K Tv-jlD>ruGRUv[jC8YHe1lp^isۙҦ-[ Rn/ڗׯ,ݶƸq]fhCl_!@u?+RmM]ﻅ ~݁_ḱE3I jF̍xʱ8 DD}i14y, b #C'DO$j0>FӀRTBqlbfbQ/) &B%h1#:;<<}svn)8xn8p9ӿcn b2#xoBsSnAONϹ19ο{@Hcp8CY.^7l=-wz_;StF7*@ԡ.Gc],|/ι)AΝs\qwl7=t泌ÙcxtuBYth\6\ŊU3wxekmfzIJLj~#@: vw 7cK24J I 62-wvi]^ʎMvqR~P_UFW)M[u4|liNԼԼmSyiay؎bmRg숎&\5Y\ 38DmyZpב ֭H2cl7Ϻ=pcnBS+5 PJrPo շݷZ@C%ݔiw$VϙB}mxa]g:"tV-buw$oxRop]סˎ-o$XfH5$[;<՜ȿ/gϭFt=I}B ULM8Cg)sN+eBl1lo_9t$J{WD=F=f/1PgmۊYicD8,g_`X"䊟-0:cN˹Nysޕ;~O_/ ғI8ix L8C8)@<Ż*)lk Ʊjr^6#pTӵ>r&ςLC;}e Uud;T_zSYg+~][rHuukoE(*zRZG>B>WWkW\]:1VSۭf)h ݫ2*(}, A6@%jC-o0cM57ӓL?je.ϩU9/{}vUU7-fjA-j-v  5vomV;gf\0b/諶Q5G}vnELl>7TZ n1k*ڧ/fBnyaw l2]_ujM'oG#TA53GB-N,5ͱ2Û&/?Ow?}^  9QÃyx򌔔q n~:sSޙʩ-gx9b9U8xbQ"X5i1W8Tx%@(" =<9gWpW7ɉe¹(!y{s{2d}>)x_o ^de VVTwoV2E~W,@+p]%ZWw[mjmoӗt\В<üSvV~\{LU+,a^{ Cwe@XS>5j[q*[qOև]~ I/l2u+O,O\ &EJJK6FYr<' 8qr/=53gLY l08b~e8qffsC\ӿ{iNq.GEɍ [8}6cX 쉬 Jdtd,%$v]\,%BIbD"$\2?7ﰸ2axY[\ ovIDC1|w CsO|a0YNl#AMoOjV,7Nll'8F<ށ΄3NN< rDbD=^]6a'go#GyR_ .G}Mivi횚*5 j ʳRm~^ͺKl*wu˶"RKWy=l{Xjr}ATTmV( ݡ5n k+:@؋7gӵh}A>@`_4.[JzQVa)φ]6̷&R/{}UӋՌuTjnϟk']ȍʯWSR%tekF+(%Y*ܙBpEt=<ؼf{h`}W_to]Ê+JNv5~bY431Ʉ\d~rCi IDATp}x¿{ !WqOd;&,E'JFL1 `ɡe7xϕ{YU2QxHf VeV3'2̱HXǰ-jSVb  Sxh|optϹf,R4#%Zq*]ݡ0 ˯2xrf{{9I <.НsEECIBcO5:8|*+/fu *xysԥX$gDsXnMLWu21Ә~?0-+t bo$ `b# di01 D0|*'9{qvfxr8 b` Ѽ6Ԕ1~&mTl՝懁~uV%+ YlIlYOM6E{{'Wi@^.`Ej'8rЫ5:[p;dzm#fIx__[rIGW vԆmqHgzEώ@&7`X;f f k[7Zc3+@`Y_r%Sϳl)Uh!y X+M*Kx"w_n5 mZE&L`ߦVq6~z 봁9Xczw֍&%%~C?FĮR|A@(izEX1Ť x|q"^9#3 < X &gOE6@shL}| U&&{ᄅd|1o ͘l:g{"D6'kD[Gd<(D' X11"&TMP[1DCa>~ϲ9r&xH#AC}oܼmu} s<d`i\̺g$73nr/s(W/sEG1ū7pts\+?疿=\q D*}Нs#θuspʛ?2}2sqJs| 8L'6ûgb7bYmXe5U@Lb'$qxq7wg9p3ezk8Dei%d:WO /;QZ![B0*sI{'a la\QV{Yv?&C_}n׉7 y+y/vX\@퐭ơ7溅EdC@h|%A Y߻Ȧ6kO [eXZƾ=n]\OB׏.e+VZFuu=jg- W n;ct:Llfw?L{q&Anrj0!Ձw`%(Dv f&`#0֠Y7OF@ ^,|2Ky7L#҅g!Ls&.!1^fxl|='cZ"eyǡ9hē K ~<18 Qo!>-}o,?|]{ wb̜H2CI9,xrf}=;x}_deaBEq ?Ϟ *XQ43\b| JTT<`.{t"N4_pl@b_/ԡ m~\[u@mw;7!o:"mp^[ۨqDŵR{}Beʿ ӝ\w *@A^W6*fgr[2ږwHT Y€KG@m]sNpg R^l)Uk}tsy2]*/$HVШv~xZ9_>5Z;4!6XڢhFg&9el>uK:>ң=pN6vg;7n< [ mL=%5zjjڻ*?ؽ[Fo 0 ܫҬ-BMVIo}AN ]Y 2Yo SR#TQkS d@fbc~K03"3 oN?Ո19z2zwN|0F07;ϰ#x"Aq$X_qX뉭Gc ,gFV0:Nh9`⮡&bo~t3E+| ;e:b sf1g3?<O-'c6anT =8-p)stgȞgIx]!zcS1S>:zrI-WsŌ>a9O \žxΡ!.G})sbM،89_}Uξk1oGc> r|ơ:8% >6t0~' ֌"YlAxbO_18TF;bS`` @yar` l+Qy5݊AUU>%s K*镽ypOʇ^DdY,"xP7Ij: /Ժ(u%heEFMuIn]GWl@ 'UCuZ vQ~Og !^n ˢ ⶺ.z$0}m_w.Q;*`_cݯZ$7mRoĐOWG;DQ*Ε8Ћj: mN:ƚ~mґhqA>4OÔt`4sWLi Ty7LrqBPוxBR} X^r ]Jf8f}|/{?z\LeH2*W|HTŠ3(#OPsz9zur1wNh8%v'Ñ{1 tosL~GP"<>R%X fkӂ#X14D E!Bk F˃W ?%<7#1B;%]䘗S'/xs̕~',7kH~g[ +&9챙 %e̤G},=U/$hdi(#)q_h4*ֻ-3#\y< h s3"<<"#nI E%Ii953{핳7;~ĎFߦ|4I2bWɀ>].y9ԧԥOc5&G:c+L23E)wKxޟHz @%&~٘ӿ] ܳĂ[Hހ pd0!xvZfXDBe.{ZCl^= ˮWNFm5Qт>7̻<]sѰv> T]ʑvkw\BBæK_u Ps}_k&y`zYK]}cG8KA@J%s"VN{f\jWxРfAGVY*]WjÂLEVȕ_ ~1 4ל&u10tѦ%q%k(v 3mTzTKS$J.ռ'>9L*{m%o4eUU]:-FZK@_=qJ֥{Cs![sp O ml) Jdy)1׭M*^ FA ;7GLn92ܔ(PB$BEJh\vOcc3@0 %\cd';}=Id^!怿?&ƈ8駟 s v>8B>='<9Oyd{fX0fFGbp"!``D grgxk}ZoÇLO8(Io1r G *ޛ;MQo'cC: K1艣/ Af߱rcsw?p{ϳ=ꡱ yXl*5tQ44ȝ -WL(`.@1V1UYd $Gfslq D3Ž {*vGQ9CKZd[Z-i>X@дŀn{lUVPR.ʀ\}4CK]e9}Ue ֿyyU<纪礜YIԫֺԆZD'_<uu}9ggXEgב)Ǩ^&GU=Ҝ֕>}-@_JTTGՊqe\5RJǮ'ˏWK\JɊ)Oa}|_Hk?]N囬 fᵇ{Z=zҠe4u6T]ފeTW-)P+sy{2c1߯ZAƤm)C( Z> Gl1a7N|ƻ`\^DxXV`xt~̣us  JπXGͰMnXP0 !C ȶTgBWQ^Ę;H ᔇ!G ??怩:£CO>FLGn< A4z0]nJ$17nڽ׹M6d:5$4ǧ9Cs0፛(L7796}9 7vEb%ƃq)9*^=xnq VzvzvBex:׮9N N91מ |*^,lWCCp48lFwL1zLZFZEw6,@1[@-نG9%I-OؔgpsxɎJ<"@U`Үf=)U796R;dP.י*,͕uӵO=zNw_WX׆c&卢½(wkPKƷT@*t9 Wnim_>UGZ5|h5zw}j _,vTŢc<V_:^fj3߆"TQust᫶C_d/WMz+*kByp#j~UQe&M%iO4- -yVOolV|l|k^ta4K^ҥŧ,ʲPTWYkHը^KX<5UYՐdjI)ֆ(!XPBGj!77 F6 pg@?08S 1E4qE4:#)bk=XUL辪X(l0`̀LG6L@l6ym6{; #`NI@SR;~ yzAĆxk){KE!3[nw0t|ȓ)i<6\?dg`o0L9 9ޟ}:f' lx4 fNzSíx '<}:aKQ0NLg8hc W(^f4goЗ Aĵ #z&9;i&0RL,/2}E޶ nI^ ? `8x$\ 625Y ]`PFASAn. )$1F!nxw6xMkDl [bܕPM.M~uܖxk|ӹ$ڛ=&)Vrw. O `uhX]cbUV(=4H%7Ec=9{HO0)3Tzr AdŤrl{8h8b{+9z>6l 1aX;`%'#候ԾAlo}6 aRp=>1OYJt92/8 ΃!@lSD]tV-V=2{n`sw&1G'gx'l1[sMsfnH"Sz%JɖΎ9OTOa M 'l.w( fD%ypл.4۲n c-g:=)X;0ae_ 0IahdUP$k/.ҳ+-@yEE/gr-rr.;"9NI@,ByG`ن֖?KNiR'sS[5 꼹nv5b e3lb V0>k;0c܃Өalw)+524&d*ک$`XgJ@KIʽ|EFK>{*+^sEu#\RI/,xM*ֵe;]$gWzW+z a1EBkgTAs^S5e\[k*P^Saqy*,uT{̭M ,u\I%5𬾽^cJw-O_85v@mUr˕x7" +'*ꅁ~hG?ʪ-K^]ʺ…I\hd8eژ૲l-L)XulyaXS^_PW+.žjFJéX^R)tJR)U읊͘{#it덓&XYu/Y*WY V=z h&B DŽ[Qa$e3ll D #]P5?yØycg›mn~]Q h}kJhxM\7{:I*yY h$$rX{wO&d!^ Pq٢4%H,JevrhB*ְo w黐|mؼΧNO>{m76 ˜}\pcs#as}AaB48p){}d\bI=%\9DҘ0CKHyFP+^ŶK!GeLEP}=B4d'`tOf\\, 835cT:DRPyթBʲH5ZR? IDAT5ڤj|\Ւ^C~Q#3y'e¶jxyPU)TKP0srrd9 mfO)JɁ6W:)w$x9 Jj:[W˺nBΎX-@)!Pk NO\* 㢘c5ʳL*6M1CUVFu :f*ڹ0JKh2<[{uM2we_CZgrJgYNJե#5i:,sAV+KU]zGT)ջꂓ|IRrE[CvZK< #r)DRi/A/Oa6&jmADSlBQxs숮ޞkqXB1"GʼnE%ělz}7pWѫIp^c.LL [ sE1I

    `![l7SM,n bݜA`'|6 &b>{R^Mn^A=# {X 5ǼE =|2fwp{8mΔ3FDHx΀;azQ>y3L 6L`bzf`Iv# L@MҰG('sl?;꫁bbWH1R,0 g)Ix9A VGrf4W[JwQjK&QeBC3͕V6̠:]uhGȁ '>R^ PD)^|/K NJYB;,S_ԦUn[y^VtrO(Vxwq0Jeò_IvE滻jUF V^ Ʋ5[BeiU -"YV6?S4VPcҵT% ;V30H-$67BJ%g}KL],۬wQ8twR_4" ~[^cbx&9f3G+f"CtH qs%!GC~ ysa#:T,ʯ "g-^]0DmnCᅧ$>sg.}&c.cUf}EM@aCdN=\?bSbd8{ ;n aO~M2`X;Bc= fxRNki.D9'2Px{P%0.nA  )~)ٽ}{6½؝r~v2}vܹ߰Cg<>g-8|9>df@ɢ j1]] wFDGxYxN, |Jlo17A& -Yp\1jP]}$RY~%DjniǴ}Ȕ3D8JJ)8Uh[>3+Z8YMta 7ZGIeCshb5ei ʮc|f1n{ՏTja^ڞs]z+ezEZ4.`qͻ5b);&]]pQ*-Ԍ}oxo(mJ8\*Ʀ(Ȥ7HW2;[7tɉpqv09.Iy-mЍÈ0{e6{d=|6 PHBD?ПmS4Qdѽ!o E|1xCLQlvt$x]$l)O3 v.&t+&cdT+}+)QǤIo k)imV{̑PcpkmRڑf >(ZxVھG.Xyh%'ZE߫??>(meRU; GGz ! QsJՔ5䵩 ~*IUw#|ԭk[:V~_Y^04j[˱S+XXnGfW@ɮii W?Kuζ$vV_WWme㽆z%H^e]{y&z%=W JJue\~ ~%h)H3=;CGcaUP" \Pk;sj-#B;cU>oAI<Ċ$16w&8I4d@,:^='=Fي~ۯwn@yސA1aplnrg*G>ሽ F sĥxAl d;xd;g`XABC"bT qbC+^=曯/4ePrqK~:Jx0-l[jb*ҳ> ޥ_Qǣ^tPtS;VDE]IۼZrFu/\Kt:tdR1 |IחK"dم2ʣ0e@دC jIJ^}Vũ=r&?V˖ͧ&붳«I60ȶ\_uZ() }er/i$n\왏{ -yB1 ,V sph cfǠfTP-ZFqIzWf1#KD,BoqǛ\}D6@M8R5$!Va`a&'bcP#H%cI9H1 7CN;|?h3Npx?{{;!zhx̌dyi78FcxMO0"4H0E1#\X!@D& gdbF&e32G(~g|!oޭ%}!'ೇ?7lܺq>)6PQDH:C9cslsHV3D-`"ǸM³!a2«G\Dah!pNb PsK%ٽ>!.Ƥ3fh?eFW F5Y?X(`E!0+)5” yG̓_p tDqstsk;ƌs`L !%ΎP3'?g0ڹY{b|nY jb'G xI,=С!$Pu>O 㐣S܌0o3#Ktc?`| Ϧ#p`$ۆ SqN֩AÀ/,Uص)V79˧]vLVndQcw-_UN_mki\乵YPs)-VKծ+SM^_{mw#_!_!7[!U^X.5$u嫄{4+NWvizA`kuPE)Ar]%V@`dI*_oejJ4քf_V~\su)q FAwkڦGKQW›u8kyr i˩LPZCwﱋV0R /' -_ZdDՇݘ]\ 0>My1񧄃-lĆpOf'G F ' b1"` ,V &Q&ɓG$s?=wvxGO~H.iISYs*(%5(^H,5g^ `yWIzqg'dgk7oϮO17<7nI?oV`BR.4'H4)onM7}}ijHA!ĜOG} kQ)a ;`k3b+60 &f=Y~75F?7<=3 A(􆜝){Qer̐81d|q);o"Z &Xb %c< qn?@phIO`σ=ns:;!~wsd!=fh,ܠO8L v1; 8p-+NMQCU]k.p-MKY2Θ|=Zk į;ߥf.wjGkZǧ)6yY~6$E*|`#Kc1jŲwt:<]H{ˡ` e3F,jR2Sґ]K>k\զj+hW䊁j_'F+vv)Az+A 0WU 5LB *+RZuY=Z˛h~U@Vyw~-gRrHE |>>_1{_[o)yqĉl&3>|cPx&S1Y\fj״S uv@G#CnUk篢&[a KDK'i]p3omݙR 1 "mݑڡK8͑FC]jwO'vL5_,~ >-vw/+15Y6V/_UI.KtG1h]j7Jr^%֙V2ߪ#֯bHyb^+*o ujn -hyobC_bS5ɻ@Ssֺ._Y!Ƿ>rg#]Kt,^#Sܔvh9sev^Rc~|!@r5M]*m'3;E>F)Cp&OǸ8MSͻ9ᵏ7Y 9G'x 1(8iȷ;}BqT QdG{ŀZc 7xs$&}3$3I8l;׶װF|zx8` *O3P9f;b\C7Sw˛xWs>?s>q$ǻziJ@Jh'OX?o8QR7![+OH z$ Vx 6G!w_Ƨ|~xȻ?xx>^O|9m|!"L1^P3*&åJfjCpSz՛-³G.E$sNS>bg6{zʻ#ѷIM[ٜ?G>d#H}pxr|ʃ'83O#`l5kqvlKB98'fX !~sC0CGǚФ#0j AaØ?{g,E$`74ή D&9x>[w9yͽ{ 짜9fڅ IDAT1$MCĥK96~[mAi+Ȍtu0Fxp]Ο<%uL23NdYË#.QY\0.ޝ A`czsr2#Br vzh&X;dBG(b"|2gXWfny<+//X'g\kAmKJW~ ;k2h/owNFz~:oIn]d\a5]uibJ/ib_?WXu۹轐Š[t4^Wo "%ZޫXҴu ʯ;[Ϫ87:kEJ]xU6 YTP4-&Lՙ__ |wҽtQqDC6m_ yravf#)w)Sԏ@11LdJ`Ł Pc0b"U,!V{  P'$&>3ObD4H]sa4's)߼>?Mv6} k#lo89g@Yxu xa{'oO"zJ⼢:ys5$0zOp}&>{c>}#d #9o׃?F:ă:Ǥ7W|(fv/YjFhFŁQ5x H).`Cs9?aG&?|`D,O@F'Fl`2?a[ű:iD50;\^ʯŻce-yg]kEdP^.+_aN=#o2r;JiK~fsoj\/jS׭;% )YE౺Kr\wY4$uZVRkoEWm05r@JR;V) u7h 5+f{^Uc]kпnmb2ki; `"di݉!Ch@*&Q ?|u?{|ܑnx\'$?#`%Tg&ܸ.<0 -(]ۢϔQ;C aF` Ks9V lH1`L!ȆZ SZA6t1WoH!3Ɗ $3$ ܜ 3~c&l7[D>3 ?[w3B3L8#>by$c>yF}v$sC))YG9  Gs9cé9Ga`>9boxvγARNhl[{T3BE,#8P~dJ hx16FDcn?AɄgء%!S6e`@#;b!ųٔYz{l]~:U?_.Om`GQE*Q-W緂Z|1,Rym{īl0}[o{-2umvbUi,}w2(uR;5+di]PԏUwV_PKȨشN6n-jA|-V:Z7sVvuDiqbKKW~혶WgG,"ȥxkYfjmee )O2-9TO`r .1bREm$OfG}@;S]fɔs;&Ozsn\0>4ow[_to}H`# ?0 # 3 1X#$ dQoBf^ ,"*81"!>Ӑ?GH-016c~xtޛ|ma0,~-p8OP, ;94"SLJ|v>66JPO 6>?чL2!ec c>Oܼo*+7ŧ?Qj@rOT "/Y4` cA#ZFp$ +5:3q>;g!8]YIM아y :5Φb Uͫ]9o69%Qͮ_[z^RP2BD5CYU0SbA~$sŞoW?la- y|ƈ4I'N!-w}'yp ğ裿c>9/Mǧ ?a$Ru)FF!SNg}=33&o""!Ͼ ADN10! =Ï|OfX7ǚQ2f~wosPؽN`cgQ'q0'8AcSI9=b(Y6z|Hzq}_1~!ipr4g2 E;h?G?bsxEt"nIL|xV?/usl,V̨PQ8糣ӤDx࡜3xpm83MB->oNM=2?gל)pBprssZ몴&*UoSղ//*P[1wg٪95fk@<t9 <*T_:!F7} k.jwe:9z]x/ll#/Uu\[ |-%QMr]-/^ςj`Qrġi@(gd8?bE ;$`2;>{!)3ޛ=[r̬:rn)HJmK$;<σ3zL&ycd{4#TX$!."!э~SKfCNUs h"_r~\\M%[VлGccȆ8{iL Tm|9%{X/-~^H[OtWWT3ْH#\= @Aɑ}˿[x 6 lkW7,_,u^}VC`1F֮rewL-G|sc0^m5 g*._<X"#p.D}>x&7who>è/vBWoƠ?cn_ذ\\Usp&@G[cAXƷDkqfvDPV& |(SetHAnNGr0Q%:;#h=+5z\|&\R[\VF#b/(s~lAz1D+Ewn{l_!]}<-Vq;2Lm*dx} +{cg$Ҭp'N؄86'B3c|Y)]֭K%\eд-ydl͢\haݜo&@$ *{b5\ H'%&E2"f@*S|SP_]%+XԨ^'B,ObyZ;~k<מDeF yĀ@1+E x-}J>)͇qc$ghx&PWV۟XuW%& dHZBh VhGs1_~xd*HϥRuq⠔ ˊ}ΘBw vKl%%hR ʮk ѸVv U5~n䈣~\8lqP|0Bub)Vdž`%V )Amn?{ֈ%#٤j\߰gk/Tx7.\h5xgx!Lb{G?Gl\bc;5T~}M}5.^t0m0`?4hth1t(ﲹh{^y7u^يi>gH`NJ}mz TUó~r#4-N\I74UגYT߮`֯!BT323<;YyLN5Xײeq AODW9eZK\%?We[A<2]64LػyH~{K"mS,)z45Ӈ"eXlGUW `Rش!ƮqV}Nj,,[߂oyMH=CLh=ήkD}xE2Zm:G!MJ8" aBG*H+0VZRScon?}QFYnpk KtQU@;tU~>އ߼KOձ?x]Zc5G61@JPH>L $4Nw~w<8yاe}j˥-7\߹L݅vvS6i]3(1ס6"wu~t/Ri=Cu`ȋ/yMAT[1*Cm  `G>Jt 'nAXX(i^8{+-C kxUX]J 1pi{D>u}].h Hy o]> }C0-AO25vheRAh&T'/I*6IN1.mV b@,I^U/IejQ@Y[(Rx|;KZw,gGW;G2sb١c"9;K 369f O!Ah4gY[vy<3$a/]i QkTKe@XiG|wP}*eC/he\.NwHӑcW*:*|s@w_-l4+̥6;ob8 >-R&_ cu7u|3–*l-s7_v-rhr̋l4" *UI0B5q1o񷿼O؂jt<(wxB5Ԅ =mvaڛ,\a 8c}T8 <#ߣ>Sa}U:m-+Usk{+` a {T-`B5#ܱe|S@r?`dž%^yQ':goq%0 -c-1nk֐oxo=u,LJ.04GW۹ "7CVkd(RU - "dS^şGkk)faevf,s2=6Ncf[iEf=i~ fPJLPcU+)( @"& r-FLL/`,iF|keK㽻<2KjQwMD 4ղ؂NQIӓz)䩗66xƧ\ryfP#?S08VK^{"_{:+khUrʼ kHB HY#wJ|}族Yo~i<Oov%48fW1 Fj u#~=޾uQUō*˖KW9bQkjneױȠBH;9xϚHUYCFCC!zlCGt;-.w٨Uy:ǃ{6xg*<%=B!&"%Hu0J\j69OoAwy/qʀaK38>D>IHBYgKwwmJpW߹Ԩ\l?`4se>|ă2x(x:sou@P`L$Ԗ0tz۷UŭAE]T\Nvlp(;mU(ELiifh*~ 0M]R+ Nڹs^Ʀ86HNEnKFDQ8eW IDAT,E3hu 9ȩzahi~%Х0Χv}Ŏy^ ֦j7{+ҟΆ;EXLМ mɂ>@" R@],HyH$\HV BL_e@9UiЭx@}HgkϹmp1f|sw;_`'7ۂ 5* :`FuF^[!/!a{G3 t8wgo׈.Z 2.64(q2쇼wGl촸[epUt@5+q:wMU"u9D,xMN9sXnr>'=BN&C<}ASdōO0ʷgɻxo74˂7sأ,"D By!N"h`IMHR%b]k67ozb`"6eqmƺ7Ar4Zu,wQ퍐v, fYWĘrQWye?@#Ncɻwo~}*rn\qB (9TQ#*M C(7 Lykӏ2/lT$WRsw(5ԩl5Qf#lhVk. r׿RQ2`Vb{..oܖ|p_Ȇ\鈧/ש7Zd@E+@ 1& Fae:C.o~OV};Mu._ڦ]vqQB>(h_,B\RbG{ AyaB(p7At|޼I\|LRQ 17r?9Ƶb뾏k!,֓-Q"H 0*iS^sU]c9*cQtQ0dJpyZ n?`nt] qM9֤!@ pƆ!11WzV%UT!A:hݤ2Cy~e"F ,I7[5(Rc9Qe9OJEyN ݴ`WVytiq/=c͟T/$M&ys\FbP?b80OY[KrX 2gƤ3RK/摄5_/pە6ʻ }^%?1O2qXt}fEc1j6:KNY;?P~e{ixZ,Lr-,lf8hf8k!Ӈx 19_ul.p7RN.JYƘf|%!3dyO}闘&8,)sݗ􄂀iJOFG?ޭ}uAkONe6\  h $+[C쏐X8567TVJ>oߺoG<{.MR{78:E[\z2 w~0`Ѣsûh#=A9j" AM.VF$(Zª^XcpjV١F%|e ]bEMs8! !fxp45X;d }T ! #whl)UT0k* Eps9ϵeG4ah*%Jz.g·㧾/!AǏrnVpJuA8ku> ut2ǽc\PeDC@r,^oxTؠB 60-0&Z($ 9=lU.l5fVc4gP٬/$#̃q3.>Y̟Trw8M1 1"4w,f8e. qWGEq&}lمVd[3Kəё 7fn^UVebӉO8˚'eoQ"fnQ+QQJQ+e$ʉ-8!NN֘?:6%G0M"Rkh*%ԃ 2[qjWb#/ =r*U:&_\+1Uղ_9f7 gήe-Ug1數$#S]L.²h 1!5e)Ec4=)\nUf0 (2R&DGЏcgQ~ `|%<`Gz|0>7 u6U2RYnDV/Ƅ A8,ѣUECؒdJFLO*o_翄oT!2NJYC0 XmQAI`E80}.?Gt.<h㐒-^H Xk^l1OjK{hnkylظ]ez~1Q_87iYV1=AR$ XV'R|s/imbmb29ѳhd]3%-x#+{-淢V4+`Pւߙ`N+]Y5-~-V^lj3殐{Rv™4½&EW%%Ψz謽WZw֙d]+ŧM)WAB'dx6:I,9;s׵g(Vґ 6yކH:O` h?e1,9gd,) igF`Dt)mhR B3٥*c!bA % |Q7 s fJ#B46JCpEh1eUƭ@jB\hR**t+O;z\79w#M8x.]ci$%<\`(RMV`Pb (p=5(G!Kedq$6 F*1AH­6(N7 4[T#KJAKo!c12ڢxA'h.gj^u :p0XH% QvM 5"q2q '8؀QJ$1W7i.hj}h,0m±D`#ð;1}g ˁE' ,fZBP)9ƌ=>[T]:͡Bx'8R2PH8K[@GgDZՑ`plxtԀɴ'Y@(]0+6~>9qd΄)]9yfвvh`S0_A`1ˤJ.bAӛc>)C6E=/2M}7/0,)wXO{ n'KOEkXg,1 dYRMg`6 DZ|agv@[ 6YԭmJ+,VDhmTF8HjF1|GxJtw@V׶.8Ď=|^ߤdJ8H@t-6>{h*DPv|PcC"Z#)+(##zrk.&jGgYFa 0ѺCPVhP 90idɗ~.p1E[E*]•4 $' 7nWZ6l^ƴjyVF䃑\:txdoTcmrA8ޡx 0cPDEmѲUU(GAKGx1=ǭJ*UZ٥6mA+`0"i ,ahc,'#:0khb*3Nb 'TE銾eKC) ?5~:RY9IG3Au q)ʜf' I~l[g 0;紴)_^U3sg啖H *܊i%:MV=N+:ҭ :1gpB焟1XEƵ'#,LPe#(Zv`!ޜxz(vrXL;gL絖5ya8gBj@`oS9ϤC07`4˥*OvO:]5Tس"˜1brƟ@YZ2i@iD3%6nՖu*s^/2 [W.(7%u폹\mO᷐pCzv=~q6УWQr DB0*$.MJA2+a&T(9 tG=)G(W)ttKC<N(ڂmvrh:(+fGظS/ sYy2emYɖV3͚mD(FMhP:1>v.9eOT,MJgąy`\ ?0.՗9$E)&~B&Ż}9.;?6z7!oo%Fڨ痞LОڇ]28e%#E 'K?i6EZ¥r5W ƢlPh hɢ=i:Α&-d[2aAZ<Rv1CL'KFfh))P5K 6Ņ ViaJѯTߦש\zG`}|}>GZ-Qt6׿Re#>p:8RRxS }.{w)^e엹z ל8 #:.ѐ ^2fYc IDATV߽~tp&nೱR z=D{F&)k-FI g"@aN'{\<XJYL-[M{w`]6he;yVHa-Zϰ *fAyB؅1{@|[K0p ֝)5CX־Le[kX}º‰d"ȖIx ѧ \=OVqx" f5|Ѕ*0$vE1~p<(ho[$s<<'3ɪ)ȖC W')W˳rvn}7 JCȽ[ f֟2eie6/|˺8eC!'`7 E7ƙ/n؟F]vɛq@/q0貋j@ǥ-Ͽ\?}2\xZepϡoе2mP @" & Q^Aj_c@6)x$M׏M' Ji**fr)8h'+ ѳ::i-{ B`dT7>*UF Zܽ1pm*U{k>=vMu&hqK\ʥ Nwėڒ{C¾aC6o~k CZ[5B]4R.W&uZJ=zD$Oo=K:}j~!/.%C*@ @_@c,B%װۉ&d;xb|l]iɢJE:+{"8üf%ǦSbr/hEFP *n2Yecn9`_N{jqɅ9E8ubN8ЖW~]''HKh8"-r5O$ï߷ePWa Oi,'H'9@QIe2ub,y+q Yb@ݪJ~1h IM]RY+lPk=VbB90iQZY &bb7WʈZ\d~]^ǹzDj @| ,ޚN`W'9)_A&"ENWUT&ږ*BK];݆ e*A?dH|9l%H0%{? 9">;0G<+ڨc~ˣ֫%zTǘN@, R1bOg ~ʯl:TVhu>8E39-#]BTomt1L.`5=mt3wPh#!BfB`akϲB]x@6}t =;=Sǵg\&>o j8! AJ[6;˻#v*mc<`מ{?HzGGahF^xh4?8ܹ(%Q%IuQG.zqK;W<{>t煱~4a-@Nd'g/I{2=cqlNӒM$eV;IPLc [;+oɈgӿSl$| Sr!Ts-1'зJx6'=>۫V.瑁)m 9ت~"$قItD6HW2@rfNd,cmu+ Lr+ \dyH?d9%M|4?b(R @[v3qT3OT9X8lF~)`6P4OߟG/GuH=ǰ;ѲH3 I"ݥc _>E2u FYbLMpӎykDIX)ȅKJ6Le\_0. \9JfܪHـB`F#vZx=R@) ӺWjEq}Gƈ*|QE^b$[ԃ WvJ\eP+3 9 iFH@qB*ң5e=Y,Jh!-S ;Y-7F" B M@IT)q!gVB`%~˯"/Q+N822YNU_a* 5/N: Z&0n&k J;RAPȞ1;cu0xE 9<.4|'# UW&N%g(V܉"8ՒWҧ}ĞXYѩ9}3兓in'L"LާyD4rıƸ)RِUcWLfteAV1k1!R-'B0¶黹dzjNL'#ӝc9qI'hpNMVhEae4)}闓UkƘT AJgVj:|"&A}>Q;REhU^BS 'e+Ǫu(H&Y{;r*ۥc:X}yOn/%ddM2""fUJ̩w,Mz2 L NfYaq`sL9Y+%vCQ!Łd- Mf'l8M'?:ă2-Re@ "J:-uVPMuSgŬ]ΓyTߟrEI" ٘ 3JٻEyz%Ju @*,#2:n?+trP>>p`L;Rᵆ-5 ;p:i]T7< #6:PL-)p%?Xзu0 qa$P qOݠu65ʕqKW 2O G939 wl[Z@cc \]*\q }j\khVBktlnQo4QJ"!|ߟBF[yP-uT+uJe+p5$2_buRO?c0wnn"'"f7,tX(RзR4e#T.pmw,I. f.e1MtE0 "ǔguwsv|*dk);x1yW';N7G2O!?/Ɓ$OK6Cug|XE*d'v-W{6up LCIYpCr` ,1pq@,fؗs3͊bKOm&ʙ Ϭr1gd$bP$o[0 s(Ns4An̜s=;}|A'-`WO ]TH툈\m 'F.=c\|rE|_,F_gI+MΎ""'LG a+mt5&9F 'cU+8+ZR!ز d` ͭ(X@ At lHZǼDž*#$j( ?{o,IrGdݪnuuWu @l9qdj4zԓ-2W}ɴ̃L&*aIA6k{fFClPfݕ7,p$g/~W]cGn8REWvg\¯80_qq7+hR{bqC=HN:^w!w:X60uL !>'Chͽ;Q>]kW :c](Σ/Om體m46v腈^4 y2J8xF>Ut/1!%CkцhG)ZDoU: LQsH䣕Ej&ZPHCP,Ϩ>3լ5Ҕ~nPg3I>$IߢӹYl;997^t[ H 0TTb)IU)&bDS TpJ@_b9IIapAzb`{,q)lj.ɭ!ak3޿Cvp vk3K8bQfS'r׹rpCZ@B+,2(8|߁os|O|YrȊ=&KNج45zu̽oO/zv_l|tsIBQ(W~ナ[<r{B" Ξ೭׶$=MrPjex~?F|`c°|@{X=~^y?.8/[&1a_2+0S)HQg{:LR0T G+ ~~w~x~j~EOqpӟ#_#7&?$-pAv|l?~͝D(.8Z-yp`'|7^m݄d{o''|~ƿ{zo6&'xmǣb _`e˫KW,lٶ<|u삇GYwKݐvdBH09Sp@D 0# SCIW0MKyZGm;!Z)&0 4džw_[1CsH3?9P+KcjSji~% eN߀J y"ݮQ᠊J(X+4HʋW+Gw Cz P5yu_5; ~sYޙhsɓca}@-(|CEHRHrdMVd8/Hb7 6EAu\Xx.x/._y{e/.?^}3*Ν_r IDAT!/7ܑ}.>>O/ycൂԮqc[LNRiRn5Le FH EJe+!{ow_Kyv1Xñg7oq[sRdeXwyOl[_dV <{DC\ya,kȕ,w\ Ο\S9.8(`%%O4MYV+8 l_|!,[ ,M+wRnbp^?,Uܫviyk6B K{7Ј_Bĝ.)t7y'թ/`{֐:zo.i:!iugDb[Ĥ@45v=g943f\sf9)$}y4>WFnTmOa57uׅ27 @,`~ӑ>+1v@7K8HH>؅JvS?RY[&ݾ΂ T%^&\6OC]kFPotL' wieqם%L߀M_2}4 'VS1[-mfy|~=Wҥ,SVw}wU\ܓI|F(iXn-0(F .y9 8$c{R ˅8x :]r_srWswő;ŋK>:yğk~[p ˿[ז.0a MQq$}'"@*)` l$gGFU"\mR EZ9=TLN#kky^(yۜ yW|ݔ lJlŸD }B;[˜bCH :w˧g' D q4I vKf 2[ɶ#p'|gvKa*UQ!qA;U[QiH;G34¨ xK!`v3OU/5a4saYفĈ=cdNAn4ihh*Kmy>8܌p`Yc-/U஻&P6ݴmPfԿnEXG.8 [ٽ3/޶886Wg_Mo?;EFhzҲM!Bi=%qlRylWCu͐S=C0{'e9is [MD}/e{LlhQ#bzL#R&ze3 x;_&@7v(qFrG`E%%G+LRvK͸o|/^?N8 <\zaXc`ٯxc {ZVGC; l.{{9ZUwҔwxK\q/}rN|{%)4c_o(eFl1͎3SHuT*?cm&(Iy ,kKfv+V!Og \yosU2 R#b*GL( G[6ۜ r?:f[PK`\y'>u9{<~Ub1l5Y.% RcpYRpN Mȶ596U|׮,;Xʕ4P8WއI{Bs!b?yAa{G(@?v 8wL#8.4#~Fu7<Ξ115 :3z \ۻL45؜~Ȏ6!|DW{:SGbS?ݒx .lb=Y$g _x }m﨓b$&ud`)b딕!7p=`n2tAuҙywf;5h[X!4~~>@h}tmۥ \R$?kxǤ5\#Lul^y&񲂀t 2Ki m*®炖+a+Y9Hyso[[W$.Z[8,'™c4MAR| 1U-ڂ4?gR$?ITe]qwyJUD26c̊9 c]Xp{?с%)sY 6vPiP^yVÿwSScvAM@!#}0JQ}FPjUX^-0|3zC4w*nc.8& czZ39G,ڻ w zc9fїY4ww4_4~s)38EoN1UozWA}Sv2j=w^[ez)A~Y]4HSpn@ivJMmV[W,cy\}ᠰ wse){t `[fk\ȒM@#q:g'aҘ˫YM% 3Q.#1sPhyO_a(EaU@s'COwz.a{r!c'+%~]˽9JŢA@-JaZI#K9fj]ںoۏXmՋ"J`9%!1UN+'^}..y\<`c:+ W"lձ)EQ{+GSX)٦ K)pyaa1yFnV58%%8ɟ8>C6wX]_ $Eξ`nɂ?`}e|Czz9{YcĖ@J ^GRXR& +ˢ[+^Mlw|{>0,LyZ(=B 0q/I{x]b,dv:Ms3 %ւ+ƖUv.n#SR**m4iV9`s}o?`CȻ?q~j[&]oYP'_ms_""Ui@>U%(\Q_1Ag@ Aq7FغΛJ.rO T?u6[?%U,>`e3x<lm:};k&8|>nvqgcN5UOС6 zG·&vzum>Sܴ qaySQ71":M9??'?էO8(6\R ڲ-,`Ȕlm\l-e`-TIV{ی)[ ")gJ&pu9X\qݔs~q<78Y/\}^q.G?'aGep N)zHU[3%fڨ~ܬQC]Qs4j܆ 6:G~eztZWoPPΣ_m =<_:o4@n2<`?/3vT(p0WC_a7mϻ5fvngxlDƩߜN^Ah(7îTg-V2,B! {wxwmv~oF]&5ǰ3$A9ϱ.H-i{ EێulEjJ:CB*][:e! hFg0H!w9G`HfC,mo8AqgIEK}~`nԓw=]טw yO9| (zb*?uGa\2O Xԭ96nBX>z;⹻?iḺgfK(} vxBLj‹T~u R?&R]HSþkD`i)[TTaj 3LAm-0gk5$ZOX%DmtФ @'T_ql/p[R\\`u˷,e䏯88["M>[Dz(/ˮHmXHek5.h/ T/xivR|f!6p`C.T5t5e G vrֻ;2L"3qo ^~>!.vlӰp6k A1dжW!' T}4JGihfƁF.Ȑ8 ijg yk>zXAiwIW~Ўa3snҋpeJdN7H{Y+5?7--)7ároctKhlcznN}JHPvY!"IcSQ'S`tus3oG{ %cw.Vxz|EtB$M.v_wϧ׫C!]zm䂵f&r͔|J *'[l3GA‡{Ky4ZVW Jy`䞡_lҲ]#}5'?%}x,'x_?:HXX-{\wυO9)|^Pkh<[N@m#W*(邱(W#`|kh]hS!;3b@m5`Uz9үZU76}vdyG:l/7ҲN=Af{FP{?#;>W#1p,o_+f-߾R `] o354wcuv[Qw@mμ'+RE(X*mv}nE^W9{oO?Ҙqϣt_n]vƒ4B|kӴǔw/ryn 99w?|{/r>}w:3ٻO|Qxz@>gb2( Ep6L=ZC~ A:p={Ғ Dq}z]3b:ݝs>d.*e^~ҒN>>?E~G'v-3=3x.0H"t{ƀ!X[#t^A؞@[ `B}_/;MٲGaca~n1i4:f .w We}0h׮)@149w$#6K{$BIc]{<{AbSp'l|ԕіSZ~_껯:6Ŋg1Ys7wgq_wu. A)A>U)TCTt~RvoJj2/S&Xws=iՑ@%;P͠B3?Y"P kkW̲)^4_t X݌(M=߹gRt1Uo ,QLpp008CDq_#_35Ԯ(}dGW,M:T׾\Ɵs2E7~!껅F @?rGWpbwkp&N- I؛*C~vҟP:`? JOQ^ư8 BO޶dm}$cbdO4z2M +5TFa NNG:زXz@3sÉg}ui1cﺼ[^NN;j%u r8O1*4sUJopʕs.BjQۉ%@l 69.UY^=M󢼖ہ uG QQV-PVRF*6aCN#f˥=SFگIj[.WLB!KBnVKUr'I6lפ&%WP 6); A"dvl@`+Bh!YݕLf r U2gqg|?읷PYCS-{.A]sE ^.~')H1'W}_(G (RavtoxuE\ j C|[,*\CbMQ†)зտ3]LDmʾs.4:Y@iJЋ\WFz x b+_tzwRxMoi9T=)`f}.~u55U>z{\txߧh˘^n6:n2F3R:_4Q$s,E}W7E~:k<2RVD{󪃠H0lT:*繰0ʺ juEF-2R$qT)ڒ N,8e*mBs`2͒ /%52eh@ " +)04j(ceO}-GfkcX?ȐWyrB/98ʽԬJwjI=[A25 WrXBKJ7xʰj:E@!Z4̔ͭw"GQf7_襕ȕrRyByak(##8+y`jPcJGƦ5.oH`p9P[U cʠ,=dWN-֖Ǣ̓jg_UԈ:X*PS dRgIMU8Os +)8XTeYiœ$갴Q(T[ݶdj9O B.?[)-y.J]oיnq`uM<:0#6NiWwc)%nF:vc%0t>p>HQ^{譵(}ZS>=0(3_ X `tƷ_?;c> < ZcR 2._ _)s LVRG孎S  U6>_jc 3j\ /tKDjW«,ɪ4זr7Y) %H "%dv5q3E."r/#hLy#Ε)3T/6hrn3$ܾfNcuwWViMoo@wտ-!U-lb72KRbsMp^rW ` *^#oDńTm/KE2$ҪBNn!0O`IIO:_ĥ"R5k۪B"*+|Z*TjR dZu.riyT<u9Z&W5ՈViZc)qڡid5>-קQ1à ]ի*ArJ*;;>BC/ l;oWWL+%_+ByGXh'#e>Z/B!×52wvD%BDzgN}q]ڃ3Mh4g^QӐЗ'2(ݹ~+CזZ^R4C=oڣ 5hv۩ɞjZ0tÝ*5zĉ,/{|3b9!#tDw/ߟ=סo `tH߾}׆=F#3JzmfZ-IfcvmRoSG:ow}p\QLI|2Kc>~ҷy7_v k/]Np^8rfWT%lhTkcpx2ՋفY+JЭ$߸S=]Rө@ňbɼJVFIpm3Z%UmS=?%{ڧ%3QP>/p^C`9Bt}%ӕ܃b{L*|,, ؽ:wH7.z0M3tvg+1j3{C YsNQx)0}һߡ]'[fhthQ|WQ߅y+3×__+sH7:<=j qK@y7' F4j3=ƮlWq_HjI&=k3gLK'O{GmJ>K矾:)0&Qz^M 3- /u NVWYFV]YR}5nw5{ [qz`_ w2pGmzm/W T#+` 1r#,phg{ĕZaFG=xV(Bi8ӄB RDv(&V# *FFx*[1긯\vvUT41X5ԫ3#Ե7*8S2 |-7[b1`Ašߡ=PCwVE>8TmNd3: ]&.ƀ!}>o3k =&0As37qb<;d%9ЖVCpǐa?wF myc vySF<&td mO]a,ږ3Y'm xx#}9klIھ}<|"tҽ5;2:xqKKuhOWP,D~1o,׼  xj1r^ õ?n\74`Ӎ9L ԉUeS(YI ]yjcnA6 y.2E0"$;NXa:X/T$\y|bU*+X u:~^ ִй0ĵa]kF, cHD(\TU4h5h\'amʹr^LUܗ+!"SSPt6tiwVf)6hDp[bǏyRԔأ 3v~A!5Nr7vʽ΂>ΔN4 ϘV SMQWc" p1K{ׅ0ϡq~BiNVgbhƃt6{9a|sh}͂_S;4i9w'z7 R 7Bx;ـhiZL x#iA찃PDf IXFE$A5$LǝfiGƶ(ѹ 4 V$@}k&:s &Ya| ZH#eT{ced UTұ{_/%OCsH#Zq=1:pjQm q5F~F֞w:}c>~v2ڔx5|lNlb1Ct5aoH&dzkx} ׎a n!l_ o ZꛞI4)HWFyدyRjDCO^^{7T׆F(3am]ЌN/!KMKk IDATO}ȃ!d KІ A1 u1~B|t.ffsg+< =d;<()D؁.$猙=Y.͋[w3>`sMdıa;@ehz]17;.Sjy42my>* ,A{)6LJ)A@/:@` uuE0LJبܱls[Ӛ^.Bl,`x[le:\sB;4u> 7wx4@F!?mzw3ߠH:_bW7.־$ZFsm0?RDީsPȸiM{2Py\t<ϱX&ug0]xsltE_L)Y6+-Zϝ ;[F)o)_V |KcϠjb!ݻYr3FA/ì.dK!Ez vY]Yӑ\#@nvJm5O=1eIGzKoJU0g.N/чh##< Ǧ /U]m [Jr >+?]tE(&Wǁ4?+s{cu{Dѫh{yogXJwq"mkF#^K>@G~i;=5K +X 9~NO2/cH=&׮(zkkg>>.N^2̴/fFiL$JB ?ք#y=V{Gv{х1pe.f̪[,agWfTBHW'K7HN]~6W2!Es]y|i ,yhGR PԦeM'[mk|Erƛi;V4qT] ~F驪?6DV) ڟ%0KO^?ܭO0|yc,'38K3c<bK*ڴ /\$*Z-72v1=ddssLN{ b(OÛ:rWFJ ~bo{'fع8)=zOD~:NdQO X2XzGk?~π<~/2g:?w?6NJHrod^57t?>&v`z]=!9+lj|KWUl?EuS_ i1rk/G V:9#:q2=W~ϺMu$E~K+Gi??VU7)r:WBLIBjL<<+̽=*B!ѝe֠(l0yH)P@CWʿ.O߻[Κe+߀]uYt޺Q÷ʼnu2,ۖh&P&;O{ux&p?rtVs77;'|"aR6[DX7T/3<ҺXĆQ#B%8+?>]2[?^椓@ <*} íyu@}O7X">,Qh_Wc~G[Zڸ=X.nH-n~@?_G5 NJ"y OEt TmmuqhO/핹VWBE˕H&F W_8ZMĜUkD,YbO[9=gʦl9?r2X{ 8F:S\X"և~VNFi#$h^q(kY*3(N ,/8LsO9b-ScdY"YƠ{"䅩$1X?f+%gaJ%SU_ a]I~E . 'NNes<8Ԩ05\zyL=8M괓!16yL's\/c ZGm; xkXLpt~RmbDՃBΌySkՄ1"AlT6~J ݢpnHga8&Nk`d X1s鵰z3ٯ`8rirھCC uwM̓ `H0M{n2c>`/4[\_X~?CFj4scSK997NUx7eW`3<\~ҿp'ޜ=8OoGC͗*~72e[eqe`nAYY\rJ/xjh]7Sו&򩙌c]\܉X ;jmˬ]Ojb}(wGV\Kudc %/ =TVEu@Ӷ #s_|dS: c2C W_+,Wc_vβ/=}ϸa334/s8]>Kt\A/xɍ3>d$'Ұq눂ύ =ܟ}_r@}i:>aطH_UН2"fBa@Qg/>BM,ܢ l. ?S\Ghe:h3 y 6+]*ِHpj+Ind/ZDxnDul:<\+GSʑ_! :%ϏN; I_ncC|>U>nLZl`Bji/ϭNVۄ#\(>x_޼%Iubmއt_>"f˾>Ѹl@`}NJJFPw$DI3Uۖ8yJ,E'g[ ]%x+C.Ah*sA#&NY޹/Hc Xcs<ճm`wB1ԂC 6mv̒:tc̭t fnP~jZ_1&4p]aba HWIIx{|K) ݵަ)2VEzZL@3s7N^$ſh?>rt :Bz#rtj{8/HUߎétţ4W#v9g)?k&S8 VabHT/fԋZk`vf}O_%"LYe2~V̓خ+Y֧ zu(9w†/lv";&ɾ=}*.c5} ZnСߙOk/s O*}fB Pja-$ugq+cY&G&&tEf.dniDO K.! o={'74ަU8Lp% 5E2uY.~+Hx/W%İ*݄WHN,ٲKk B@aYc߿_8\bIǁhgPug3g$i'3JCm $</@6PA#!M-WУ0o >OB}U"lםWckKpV>󱺪lK+=V2*{="A!Ϭ-$$@f߃${sI\;E _t}@`u);kO{FgoEqPk<%yE$+l^kێXEHTj j@c֫9ݵDU@'*N5vܛ,G%%\ bq:Gog6ܟN7O2..jyj_ԙ1'JUE3 GC6w BeX*sYúm9V`-`Q%u9'gev@ouh;p5#aܨv f(]s8i@<>.vk.h~݁qnOA{dV[k0Jҿ}^Roo>7c=ϭπ_Z3u|K®AЇ# '?ב h\~7aTʹxZݲ0v  p;AA}p&z*͂0ȻF>ҙ-*XcXϭr=nƷu`S!,2=5 b G:,/+CGTővQrMĐ72nx'-̙XipwM *W󮴧%W&oN7v! I7#QrZI_|_Z Pa,>@}5_ ofMȇuL0gQIA.lQށn˸aY*1)M2ly F%Aq]!uKͫDmc4>)q雊3U{ؙ$ormm 2mv\9sJ|"<(prhҰ#|jtfkgc9|l~gۧçsQ^XSP5#zęƦs{!0p̉`C%ӧb[zWWjydUvscΦӟ5u2IfW,k~={WLϑ4ʨ>Ilv'viDra/:Azo4,42 0-"MȞG#Zt':zp >4p^&=觷tѰB12{%=U<'sd,ӇM2`-1>n6>Q)KǘBy{@tlbQ?P:rjP-1M}ƛ{a3&TŪ5.-d1 x]{QF;%:ݒòDu%ҫZgYRWrdQ#\+N _ҫȥ`[fp4 &s'DC7ŽG^8y\+ncCk.)Lj2,@2yY_k}3|6C*, W;Ǫ7*.ޖVu2 "2Kcg5l)G]k_w}9#DV= tEp; - /34D:OEKP{!]-!=ʍC;"c~`|̬SkN|3Y## )Yjg>h{0-9<#3AʐNt+Ņ6usQa'ZRRgIeW=C.dckc?+II4p&C :LusemEW-OZjbG2e@M3B Jً\BW]%7 =m'ivO -qG{9 IDATeFvE^dTƅ.r?R|,KL(*D٧ eFNdi6DJ(hbS YaRwh:ZpCz^ɤnj| ^@_C)Y60mP0ӿa ΀ wmA䉼WW˦ޜIpl9+.`VIpEs_}n',էKiɊrrݠ+ջ̢)w^|'dc(c qWr⁻>vjZW.kVÓmMݑe#Q'8^fo^Niuc+vhc_v5_s޵Y?W\qKUr6]4]tlQ{ixێGifuВ\c].ptT;M7S"pb-xp yfēHWV-MA,f!BA*;'񾄍Hy?W8G`Tf]0^1DMyWwo{FEu ~x+01$ޔq~K_&>q|=NoXӝvv@:X8Ȅ:IAF$ "[71͉\#:$=}kcvC SQ'jPpPeY2SB :IDdyu,ʼK+X $SBn9FNFf6 Ay3&+K'ݫ#v o#Ӝ~Lna+Bq&m֧4(6 ֕,C'$!K6ȹX>PλV 4H pb |SeL_2xaf-@>@/%N UYY~[";!ˬ**DuQَ{gXfYƒjϤJY"7 f¤T[|ߍ $}_<6:ot,Y'->>EUpjv;&p& TOYSSǷSz(rd %=;g[Vܕ+|y)A1.k9[rP؉T=:uYr5mó%N|=KJP+H4r/D3W}`1cz. eo_Wf0˗y7 /c"9,E~fgL'ѳޚvM\_1H4)7tvN]99{~^'`z9Qc>Vq(L'ۣ/$|L̺g}vO~/5bmaF;ٮW`츯pޡ.4Βs DrΙ9l\bߟڃN7dFB[|Q DF7s.ҙ76ќ@2՟h4@.gAe>71[7 s" 4n\!dH5ɤY1(m{ 4@V-&c}ujaUttz:" nCD36Z% -b "]oi [U0b(ljġj1|Hp0Y' {4{ btY=[A#.8LC]>,;Oo 6tkCAt|ہ&3ĺ8ڱ4__rߒyZ_5@CwN]^ƺRwL` nrks-Pфm}٠V~zSe<g h,yLϽhE+Po&Omֲ#zX1g9iD3^}Fg!Y&$+cMWA>S6p/W䑚ԯT/x?38{~3GՓiQ]2nto: Vm҇ʏlxDۃ-)j:AрfWx lt'j4o[ $%lZ?PB1t#zlje<%ֶ6&Â1j*$_ʒ[WV$e= H X1]@db3Ȫ_*mU|3 J}\$XYWJcg;k3SK]H2yd`(Շ]95^}ΩƊq&?lO i.#HnJ,X2:'uU܇Tjc@PHQ :gd5mpذIݖbS?HM}޼IʛLjk<&O]M?b 1`,Grd_GhDVJ3\n5mY  "'ܼZ!e;H$NoȫW*2ߋ٩26]X{ GϞ}@Gd@ 8#Ju:U4TStmLuY&ۣxVLL{xT35 ٹ(P6Rꞡ<_Aw$~ ` V $о=^lZ"pA2!sld;ca,TPY S@sݯ2{TMRJKF=0dЪjX')Nx<Ʉ=l*y:lg1E({.݄#Һ^#3j  x-Qe!Ю*|^,O,#(QxP.lu]=t[@`<قҟ)?:2LMv#IŐvޥ IEx/-\0W &Fw擼EPuNt+Z刬ǂy]|VeYpi*ߙyMPz@j=HP^``\R'e*Q?>}+;92=X_r pqӟg}i_RP ZO8TvJmI?eVf]8W gM\<5r"phHG((6Si-́|:V@mI> Y==[VS4M ILFּ{ i싕^+ h $/4 ?8 W>qK̴qǁYQ{=k'K䓵VN_AȱHFL?$%c3NztCwE>9NQyOTsDaQ&m G6VtjjZ 0 c̮0"!{}= nA8؅ v&[}{?4~kҢ}##[:%)" cٮ32\V1 :#Vֶ9.ЇD̙Ӆ3H18R-tY܈kő9Qhษ2p|+ν8%/Qe+ڎ$(@T'ˬo_Ŕ}z "~%"՝݅.Jk0s=9 dY(EWעe_H۠a Odr?h.o5 rgiԹ%;9jUGoVJ"#@ǠbtDKMyk&  U?XN% @au$7#".?:\="mz۱F~Hp;F/ᪿTꎠuF6;V/*U:{e>_gݻ-Waoo4-)YiTG⦸dkkr4٨ʳȩXiLD ^!,.\٧j^mOK 6;?V۵x][<eTFdCPVF| 9e8 5WnSa1nqBiRd?'GX|y:~8cٰbFIY7,gD]-tCS K"j͓M=>* ɒio!ި~ۂc!*?AnlyQ$SY 2WvJ%_[Hm#fXuLpi'-l7/zo_/Ǒ)Zaf0wív*K {UN!SI_˳~lR6>_א#CL YEU?87qSbwjq̝>3*rÝw.|kw*Y3OiK!f  %@L8/q,y!XGF5h.ʍyC?}qluײ^țSo-ho[^V}4o ˓7͒;J9IZmBg\\δu(vw2i(G0!υz*InJMĕ+%]|VrҨ/U9ӜzMz?5A6,ư2}"?|-(^~~Opd&'DQsȂ$,'+8.Eb bzZMe9em9/b ;h֚8=] .!~,W]*i)+>mFu`4eқ26 Pr+tu<Ⱥ{xF$xB{{$<^/ܼxŵ"dCzO3ML1j.}HLz}?N:J#;>PmO^YC5tD^V¥,W%DdGdlЅ:9/j$mD;>V@jmm89?)2yDؾQu/% "g8:,⻼G`F!=ZfYY2roL+'e}{0,lbB[|rD^;t&.W_4ls쁛U"("9,;ٶ` 5CWDlo18,8a-`E2(@O9M'.h{us2 l&a gֵ? rͱjԽ 'ɶBAպq)l=ښ×չ.`_$ G?ƞ coɾSS !  T 1jVFϲ߲{eei.kAЩL9R9G\]{!%z e/2rp1Jcʏ P((نdr,W S/Y^nz؊v꓆wmJĶN7YٖFclNXWN|u B¿ si,J`/nA pM~҃7q_GˤLxV!4oԆLtۅδJƵq p.Gs[ V /91秅jE_w=ot߻_hНJy>ʿ7`n'JkQPS23G?|Nv &TJkŷ|񖑚ؤZ=Ejt2̶`zn͸is ;XQ\wk;gQ݋,`h}XV S_$ԧQf/B%WO-d<+'̒{!ff?鿁Hfd1U*#!χ5ٙa*N"r1[$m,ppxWaTx>ٽ F.M^2I"ڗ{΅xdVzȞOZϵ'ծS7g )K}2?O?&zrnܙd)}{{ԑ;l?_/YmX~S:u^b8尢>E?ۉl|p,?S6RmF _ftTNuAy"1; IDAT5}`Hf fna& ]Ꞃ#s0Wo׃gKZqOoAxyk00t֘ՁC-dpBS>2J@u_IYAkg}ovW_oo50'Wm?Ux󋴾 ?cԟ؛d 8FRAiy  =: E/%KZ du *n9RE=cp!Ճ?FZ՜.J#z) DbIL?+JB.4R@ݰq>@Wjʝb< 䂜^QLؽG_`SQडȞ"`R~83= 4?iYuw}{Vc}"Z`k>3}!֥odyBXo/c lWt ӯtDDxߙAE6NG,wHFF6M͸j_`G㿁@K u֎NtsAW&>g;љ_PdNZܑ!3~zSU"p0w9H[s'#`ĕt6wnԚpف }V&r*9~\ޙŤgsoQ>Bz3F`76 b^žZr|"_C t=VtzT-yJo<QpXq`[[ % :ǂ1(avU`܃YC[۱+{.g'-0tdXuRH.πLn}[>]v-$G g쐧 nr[RH~/PY+fR^ ]ƾaI`U!Q(66S`VlƦhuQ&v=jPD*7z,WNH a=_ {@xtŹV&'@T2Q7| 87!rbҁIIx h7t@nP&_cg>-i8O25|ұ@NơwCL ~*^O=x!lF ԃD(V:~TV% 0iXr򥣯M.b?zH>W2hkI+0tRd,n1M)ވv;W`@ͻ\5dlc&ʅ>)L`O[}D?i;]ZqzUN(Xžu/HoPS7;?fSuxzTTH(r[} џ}KYJge3X+ݳ$KN.;wYr5 -ʿ/e g9sR|!1\۹ v6J#):CVXhHO AۈDZP= vݑ} %W%-6]rWIOTQ>l B7@7"`A(MVFF:QF ݜAB,7a::ɽ{Uy0hm"|打:`fu*Y(oKPWmBbR<5,T}?!ۥZȐId1<_,JK`E?>zRf>0B{z;bi5*!=a~\bG$ ’;7y^SuQD3bZFdOOy(2у [8.E!a0LN׼I 8e͔ͅ׆УOp9t](tj"/-;{Gj弡BzP"B+PFv>.;K.~2l}>lhdgA O#aO_84$y#Jy %rХ@',`/&J 9 M-hq^dsy$S|(]qF3YvnƦ6Ex}90gC啕OG(*lW`zd% TՓ1BhE(( ǀN5!oUh^giz->;^Z!w[M\sʝMCU#0l/<$esrVS/9&y<Cd@Z@* W5 XHG~jhk6~U[MN7q+Y Dyl`RcTt O ^OQb,RR2i-睴XCqDP%{EhtssN)q1;T ԯ*vOlyQ(jb M"v.ȪЛo z!PM*{0N#Hr, ˋ{+nOn^c[ ^,Yܻ& []Yx=F V|0"K[I琘Wu,pRΕ,tyF}~,*X4Y)fB3ng7l"cl+} me#l=-BNܠ`<6.&FJd?L`d99`ƂnM #L= \μrn.r1m9ްRsͭԺMec {VY ) 0?IlH-B)_U GڸURqiSXp[FaQ9^qб7{C[149䮲XdW>͓ AAaogC3.Tk#+WFxV5] *v6E]/?;-\'1MI")]C!k-3{1G$sl]VuE*f`]_?e+NPm׊}O_7-7, EGۗdnT/+Sk|\ٵ|+xnZsV|?q`蝀>ZocY<+odH3{dnk} & A2/K``>SLcwٟE5;C7}|z ooԢُKZ6'^,IûK_i=T)S7U"XS nB u3vNtNۨV#훉*{20:/A8tr6t5eyP/Wvd,{iwF:TX/ph0q:O! }o1FC9hF!\Eu)o{&b4-K W[#f7F_4`iN@z˟#V?V{^& |H>'ݥGѡOkW-=r=/d0yju^Gnwgl.ٕ{o]Hߣ_A"=ɨ#?@_*69Ű2| ]D%9%vubYtH+Q+g/7_c<)Fn^. z/ J'SȖܫ:ULo }B6h{ 0i>țT2bV`Qp2fm7렷A=GxHh.2p{xgZAJTt|Vx*-5&tKu޺0U*.NBeۥ "[8{4%(Vuur/I~+w+{4^ࢽWC7?R{S.YDOwQ|/rP]3ԩ[烏*ȠFf+:sBֆjpnZB<.$d4۸63HX-"p>'e*SD'00-ui<=ޓz|b9?Z/MLVjX'oug[_8$Tt'+R"xxJT7>LB 9V@9h=2A=7&ۄkm?QU1#ŏP#UG't)O@u[ҧapwi<3`ܜ,v}A(K|f*7y=;<6U ʵv^$6c-!LݣF.Jѣ;z.e@ht/)|9R.u@q|{&ѩ/} iqRۤ9V>נoCэ㵰GϖǸl;<+u F&8,JbwL x/ޙ1 x q`ÌNņB>Be_F:x$".bhl{u@yz?VAG;pel1 &6>OQ𥵶:c<|d ϶QDܡ{8vOm$4(h#pr&.( PԼMe,i|o uryb!ҌGPXe8S eЯ&ܑ=D-|P>ˀ[sC/ /}Fa=o4?:E D3!j!%w1&:#(Ie=.ݵVňHvMƋwc[l"o5Vt[Uz׼fF4[\ϩ,rxoϐZu?)䊌u>|vw7q?-w4RZW^|w9ticplA^j174n*,9NW9X3nr8x5-vLP! t C˧~e@CW9l:˓z#Ν5Oȟo;]5Y 0{*(Oab7 s5_7ִȤ9U `= vϳ88ٯfYz=5$z/1r_\#Z18Pb/;+8=s˰8Oq f @tD=y*I@̔m#4z*7e#XW IDATGh`fP{ +-'pyn`Yp&N- -ssOQ:~ NݮYt%Bs<&'*@~HWYXKc66,Xw0w0t|>85ٷՆ=)`-LE؛ԭ'=ϔPZ2X=<99B% {Fύ|nϖ@G{Ҹ&,/5+,SDn r-Nw=d^R.Y!v^oh Dc9 C ݶ!QX{mH}Cy6I)&r#B~$;aQp)0mTNkyx=<>NNMⶭMV}|; YKdl;#Waʅ!Qk>t >Ͽ*yE=+F)}Qi6~6o^] OqFYsB}0drћ۷S:)u2gANXőKF'jaalrmd)hsStj=S1/4چN>qfp!2hߑO ^rF#x<ε)5eBͱXc@E2EM@Km7E#Ӱ%*d~D4#ņέSz5n( Wpϳ4KGA}Ct3;ALJUd>!%k@gdIaZ>9az: ~=@%:#~ܓFͼ]# J(@O6ƶ$Uὥǣ&`99jݚ=(++PCZYE}, mAB Io Z1gVg4f}e`1Dw0'rUBH_߅*N:hhp&zV(VwiPdJ X'{ϖOC ne89cC}ez0ɾem'ƿ5^m< $8OrǴ'ih -Yh<~䗁%_]A~5|NWlVEݠjl..3 JgGx]3_ѐLO&yYw aCU;Ug;Bs5)߂_iZQ#+L2.VM Ui5KZ4f;T,ͼ{Qc~/ !g^;ЍF3u@ .m#w<h`P԰M*+e8OgZ y[h*Un9SuީDi^]}Lt,I({,(PƼG%ڂuVv0><m֎65Ox'a!H>g'o*!^-t֥W1mMF#pypm|+\gQ" <5W@&8 Jg.`šOe2'x`RŁt܆n<@;N7zq8Aa(eħ\A$8M2bI *bt1<(uQXx;O<7\氡^:OpfC5Ϋ<89+  G面[`puOuB- 9xCi:zWe]fv!➰M F41|$>>jۤɮ%֟.x'ϕgG\iu*߶|ȯ~UhNȏB ~zM#k#RmV& Jʂ (+ ˺l.dWlg9m? {,^y ƧLc\O, Ty /t?@tJF" N.UlGʬD XWE~p̳.{pvn j[#yH6z?%txؽF:Si˘P?7޲B}y PM9 ;BI=ѩ2m'#^p8FMD2@I-ڏ0IOuJtyzpV#q1y«hOtb!/Yǭ2E~yGC$XfE%#2Ȣ [O$zwECy=@2]6RԘxɅ\C_j^R>kQo5}yVɡҰJP-/` JY)¤le-LQɜi-N9r٫72+1N<@`nX,R{&o$|t|Ќly±_<8,'b"Ub}`$UwJwhz Gj%_a~z{hМ9b"#͵Ȥ]4i:~+ ֍L?_EM  J16/q|g]|m|.GJRvBhY֏=:XZor3+ _FE,)0z^>c>fXЗ^W6_>ſX<$Z Eݜay2N;POH:GrLbAgzH:Pn0X+KS ԸDN{3 :I %ύeT d( YbY1P7AV]e-[/?7GrcwI~4EyϜu ]7|@S0gtV, )!(2ohD?)>HQ˂D=,ld=r;%}me]Sf>^F7{TeVtς+#1o++luMYi@g5S5h7Sg[ ;/h7%ć?|dJ, R!>+a\Q:b@(If'ZpҝB+YH"CO".nh j SIێw:@>G`-%-w6gKFL6kd: -Rdv{YP>DL '. xJ5'S8V{s]|>4D|pwGzJ]Sv[|;,-(< |54"H'^a_ +9{\R)MtNbo=b |uyT@.SZ!\8P}n ᙡ͞ f"D#tkPtDNuv&ldUAW.XXTRP{{%|F\3ۋ9+L컱rɘne?2(5+`OhGR`>ش|e?!;o2Ul[Ch`t!(Qf^S瘬 -~fz[Af>ߑ4J7\N,9awUnFLswAQGQ]_\'`ᏜSo Y\Ax-ϡR)/Cv%qMl5XSEکW4 P3^%]QPp''pB/_?K(&Tc5D[\ 5T.UuրB3Rij" cG #̦_E@UM|'lo/"ʧ6G'ϻiUOH.<pYO~xSGx}y; &oso15 ^=RMOHM mƢ$%]c~}fp roqNgP&O޼;5]9f-iA]{_eOvy}Վn6]ݩbM|C=F"ΫјJc~oϣ`͎gc²8H$/s@lO_VQ9)u[#=93!1y5w=VpAН6#$ 폼< _$+g`#.&8s$өNȌSEN}(L;}HM_Lq2qྚңͫYq2A.wA `vYdd ՉSiAN:7w1Ov1UQ.j+REfV>e t];u,x:"kjJ638J=d2;*0`_`Nr)]^c8ϩ2 4${񻁤P|"aK2BjYL6ܕo3`^lW_I|JuɜvKxzN<%Kl+6hyMϖ۩Dt餒J.Q6F6+4UrJUwĔD4VyeNFle}N[;%QHbQsKz2Z1Y_Dk,\7ǑײLWTYUf5mnʰ<epiuign&\9ȦD_qΒ򂸑7LJ2}^'mX rHJAs1>`Y7p[>uѠ<"c`GD9\풻FuLvAX3,$+IGK#I4ώ^ad=K=89QՂjV_pŒdz*̺<ct՘-5~eǜ̯KM|R,A}cI9%ܓRVۘ*sv5hn=,QO&W[? V>]sup V1_$і! \I%(ʷWI%)]Yyw CX)NgzCv؊2JXdI#9,4aT8^6Yh/~lb1iz`I+- BHCsLKE ǝ& sTLb\,ȴj->.@̂;،b|_ַ-j ǖ37Aнe+6-ؗr'K!ؼr /8XE[NbG z~lQ5sX锑۹g^QfH jEqJ_ob{ tzq|rlfo? oZHGwIpD5gW̴y"jR,M}ҿΫ@ݕ%guĬ` "EV# 8l}r> ],'oE>Os@X=t\cx:B%}N,T@ܒ,י@\/v}=vQ1P P|& rĖ66ȧj1p.|UN44l/:8(a'VEj WL@ SԻ1?O+?"=k`|")oĻ]hf*eܖ 1o6kY Zi-T5sbTq$ZQj鞷2}C?}SV V.le_H32}U~3A=!l6|M?O9oG| FBvډ *S!eQȤK'CW!$xSjnwY՝sg$؃L 4Q5bcNʨi{G O0B\ܟE?(ݬE̺FV8-6d4ӑnMK*4#LFs/?orbvKt2"UA6 wΚAQ~%IAnP| `q`]]6\ԁݷ/<)REo6 [dOH58ܷgLL7#G"n̢KhA!h8Mq']qlfV8 <4X8x=vh~ߩtD ^E5?4"K`}g2ZN <ֈ F~2 πk|h}NuSd׈_m9NA KogxCK6XtM~L]hX l:e7|]u.ND9J7W ƥ*i62{B IW(r 2ֺKʂm#äZXl=fQ2ʕ6{@V( 7"C5GŊ<7 1g>,:%22b>ȧ*=5乴>cU`KҵZ]S0_lXLAWzʿA@H{}N*|U@0f?o$7h Z$iLyPƅHb҅H3ORkz0 x Ss"|u'Fg)rF o}U m ?hE+ QmsHTUf~.%|<{v'81YTLN* )۲ Jl>HBrMwϪm%xJ,CE=Xk.TAЋ'j=p鍜(}mҷ}ܥ|QBU)Os5?-_g$> V k\PJ> Gk4H8.t0JU-$f:t y0q7oXF7m1v§L h2<JE2YMa@#OKwg(9_aw{fyIqj~7禋FJNjj<ܴH+JvʣEUY v~*2F[%_,ex)`25#`,ا$!$xzhFDUpf'_EMfF^gX,JC3͈͛4H<6e>Yhߤp޶+=B+|0˧UQޒ_ cv|r@ BK׀280CLu#I+Vi KPL]*jAcKk^y8b4`خLRzpǔ*7kG_cV jp}kGGT]B]) '*3}>˘7nqNƔbi4| SfR@DC!&XHu\gh)9ټʡs!^{\x"eC Pꭡw0 o|;߂pT~+D/q-pr-y`|Wg(-!hiȵC.<}m&c1РWue4s%c2YP "9h (xxRKJ@5vrA*fSܣ@0ʚ`p!tAm.Ϯp>IqM N _vjRy;}GdxA'Q5+bx. jvgD#94W%,0w̒'U(8dֳM6%]F)@a+-}@ZxfݧECbK,!\/,C}q%+|lzD^pɟ[[Y60l|VA24^!5)GQ6"q/GttIw]5Kk5}d[@ a@Y2Xe`V 9jM6a H J跮 ">,LS\CU5>m о,򜚥B@-PTE#?IT1Ӈ(D  37zĹ[^( ^4lݮ`Џ"()6L٠YV7%S4[FgjՑH`T+O Qw'5Ӵ!cC#4SR: 0a@悬GT Y5LwB@6gu`g Yq)24B?l J%?5 8`\ha/#$oT2e Y˲$cQHYXȍX Љf4:1EͷO;7\-fw3h9<_N IK- 03ٽOZYj[@@_ii mcDO3|cdjL2:sCVן|~9CdM'?b)ީ~37A-q[íg!1Ϳ)]۪g}9`u,Ҫpcp)gu2Ex^O[',]'He@Y M!|)u6i?m PZq =(*+_A;枒Bt bJڵkkJQ.,"+?ߞv!mto ÞG5VX ,Jِ , XtOxJ];逰qQbC;5z.㒂񙙝$y%39p z4a3"O?%S. 0yp(ٖ|3Mt|6j1n4km-wYomy2.CSȯL}RqTڨKtfN Cbds>'K,3O8mVW4(q ǎ˻'IF!Oama>Jp{d$XB1vѣo*;RB~ | e hWJ$|ѸkDv+?o 160JKp9i%PNe/XH3PfT^xʁKoCy(h"c;}Bx0VM!7tqLoX#5$BmnSfɉtdփa|1#sØԭ׺8_,}Fr\u**fZak|I2JVzioVӂ0d̓Y75TEQpz蛝h5]VO?'HjAGq4iVY|CzJ*m I{Vi(>NEKV)Ѯ'z 9`*וnq}xi$b] /,uT}X"Khi盤<$*Jy-QVn̡*`l҆gayPOByVHdo7dP;]gV:xo#jU5S;) s7oeIs|JqF0eD#XWFԺ2ȭ@ ,˞|y+Kto˖Ts>[+i~$K6i2Clڠ:~ WLy-]mGG+1<ܨQO:5ð ;|MGL#tɨϨAR-Q/(4DQSǰYu]l[ ]|E\6h"t$U NJ&·dmfqk2>UE\zHmʛ$eڪ'\|dmgO1fg( |llm% HxPm"&yT:!HjDB̕"d4xr(B(.fgt8=TD0!:n8P(ղHYk@u]uUJ(Kː0 Zd:V tXC o\VߨnVB<:YRL*3R:OL,FO 'e$$:L2mA\ֳٖBus2ed)$/;MpuR8[gHw?ͅfPexJBg&IʡRRBR]׋¼7& m8LVob=sґ*"#O*(m+Hvao)y-Rqtp`.t⟬%mϚŰ)eBYzZEЪE!qc)sHlZd;؆K(P7{2P'#CaGLt{uLtB%NOlz8e%ʈY)9BQz܊AI?s~ghs'Gj0#HNk \sLJoBfm)*c*i)< (4pcR Y]n:<(}[M6hR<2mUtRwL~vY^T8vo a4)IW.%ߐjm](Ќj xpv⻬mHs"~Pm{P*pB?X =?BXQhJ*Y e (Hq+^M*Ŏ7W e$(28X=6G] =7S"==44H6J137B$i`PQԉ>eJR hZ[' vJ5M3%][]WlOZZӜG(6UQȃ '?@#tTm`5 '>;5e[?9py2T>*f΢ۆ?r΃oۥotrd"'9 /ߓd~s&S:-vQIKgt@[l,¹ap>[ &MDfA}؈UH>tR*1<ƅxhQUVL@2E'dKs:hՃ{bT51F )M"5= W0XaHeKi"^1Iw#GUFzGLfW__;qz? $T46Bk~VcWq$$4R& U͵SD?m}QoaG3nI<0ʱ噾x|i9^ 4>s#~D0R!:ǼV~ʨ|{cR[ԓyD̋>;EVjĴD'rkeфbj\Nyn iP.\wC'HTV=[K|щ1MnY{{er_tdwȹ0Fx/O}yj*ٽoUd2R,nb%C[ڂi,ʚeu~H791HF`f;+v)5NJnڜ-:cM'lltIfm AdQ~x"LE(DF`V&g51ȗt‚qpYZn=(eńz_$W$EG/=miAeĶh3zI/@.ܾM87}}C{s@IPkˊu0^iEqT*_j*N*6 {0k3_jB+drW!1 lk$ Sq6 4E{ W?1`aa(_[XŨAFUtȶZBzj\sV?+vk%m*uE0'9,sQUB\OV\g#|%L !u]6hK¿Pm7H-I#/'*{m `Dl]'az++yܮM+ iv&)Bg8!_s6lxv6tlBi!LzmHzPDD!X&OV od،?oK\) Qh)y oj%5LR2x#;[*pkݦe[Des_nM䇐PPge{8eLkjtN9DP">ѣNb*sCYuBh)+I]XRBI ZO'eycnb(›J;՘j&N!OG)TVjWmRPV`ǹLL*|ߡ{h΅!*jS8Lz1HG'5k3L9-ʠްlb#H=;lۑ6pf!?+dh|A_ az!$,y.ʰ,I#߈CRξƠ:C4KW k&EK/Qr5"k?NIЀT0X­=cUtALEJF>Dl8A\*,l{' r.τ0#Wi|JA~Xȼĥ9<^J;~@TDڻPl&D>{S/]ZTϰ#3'L'I#3eS0:rdgMfM%KM>vTɵw/ƜH#$kc 7]HrK"&֩DBPz<> ; [ZēY{RG!8a/ ]MͶ &]zJ/_Д)$d̫ڰG؝X.~nq1UЛfziR/e``, fYV5"$ X=D U+5kMyuZ%rmXmY:֨ IDATnd KB&<+mċ0%ہk!<,~@̷IEO HO}Q Ha%M B\ɑzi~!N~R;n,}~Nwɍ-)KFR.8nuBZ#Hc u'ػ5,5T }US>YA@DW }Z;qG(J\vma)۽w($L6>`*$%Ӌ<%y uS hەP}iiӳS& ؀$JtQlh6#q6YḨY #S>nN U'm 2Ml-jР֫-Y.TTLɚԄ]*PZ?|rn +*s섛 11KZF^$@ȿ0]D4"JRX:Xʓ hQO2]Zk|T܄RBos8|;-D8UQbK͙'LG-.y`ʹ\P?:itӈ>ڧJHT@=-/\bY?f@]p!f8q,J},)sq$Xd^:X|4K+vT钳q >,Q A}z>K9v"C`vkYJ7565˽;oR>5x ntv5؊$\ D@3%+ LQU=K f3>euUP0KRw|\Å?TCߍT?E7I)ػ)1ۘh#ݡ Q}JkR[VRÛaI5Lɓ ac%~i2uCB2\m|.myTYjξ'L]}sܷLSFz?:]̂d[N)kouV RJ _LY-od{p≀x啗VU7~?5̙3**Рw@߾Ga--YƏ{ ʕ+QV-Nڵw6Neڵ0q>,]вE H|AU$L? hܸ17xG0o|(:\~Xr?'<oN ԩ[OHwQYYmaI{O+yq՗cŊ? <9.oڄq,TTTn}~]k|uXsELjFb_~c >Tկ!,^BDQL a(blVDXV|Yˎ0cr3(w|=dwGzos6l? `+;Q{v8*XNjkbynڏ1[ZQLv/CtMC>dHXQ.aϋExL-vyrBv1ݤ1tJ`ݏB? m|ʷE1o(wp#5}ظ6՜)_iK5sw[Pn~t[ xp)BMaJ'1O@p둎MczeKeeA$"s(#idA\CIjoj݌JeiܴvT0ւ"?b6,ԏ7pԻwy-9s&z fࡇM6W^g|3>ĩo~ =܅k.ZwkCF<`xϽwcr%_|_:M\~[C s͵]0>̘aO/>&? 7i* | 4Qiu)<G{Q&3w!PR!P.>:m,2dmܭaP0&=i@'wB"\V%A'y`2 5^(j?=(P |'L$p"y SY/R\CW6֤r`B s{A u'JguꡭPI3/*ƍQ1|r@+c}8y}t5,Z/`ӦMq)qء˖bkr?bPԪ.]aΛtj*̝7M6EmQޠ<7c欙P:j΁cR^{CziZh=;+V,oP8-wm0yޚ6S>_~4,/G}AqOƧsf+>\Gqg<*\qA0IR',1oVed?txK)~Y i&"&fa(a%O ۭVC6G4[Rث p\rBYgYqc-7%}54_,WAۡsz5s -~κ^, * 3yw\fKI^PGJC,u`)ʄs(رkY.oRAemMʘ}!GR&<䏖S8N6~%͸3"H]vi[eeeop7ŗ_`N{O$e" Υ\lu1wnD,SEor455dZb-V|@p6HTQ C2s$R( R:B YNigTP_T0;yi:}.We /2`vNj2!Ck"Dwş/yZO|^3Q#aQUL:Cc!chRR 2wV`|\ؖNt @))V~86u6+4IβA "ҥ+Ro"}rڞmE4nq.–`6!mH꩐A}*կ!uK]{3Dy_ع65EeM`]qd[xn;ŋ㗗-kw7|q՗mvhݺ5ܳvk[|N =+|ܱyfhX^NοSn%pp ݻuA@Xhܣ#]{޼=[Fu=z@@nݴiS Fԥ>(++֪6m?w ms4JRR/-Ԋ9;P S tf!) PHy7|}W`K0 SxX9DD-@ UuRPY)dhAha!xk{v_ h_=ou#Xo 3m2Lߐv#.?SR!D69iDRvR&&t ({lؐM:1Y6YdYIn-@ǁ"IŁ4xkGPLȱJ U.Z9Gpg#3wsC}5d,X/=-76auhP{^Ū ,f!vm M6͝3;Fh6mڄ+WIȹ$WDە7+哒PFI{X~Ab!6~QDX^8gʷdR2@}HW0={CjX1 QLB ig [ 9k*|ٕ4ejrjeKq{(4*WY%wj(NN6)xPR jô.Yyxl )MmcA]ρNar`+;n*ko$RRMe&BhuQJR_;LLcS29ӬV57_ȒY*&ѠT㓲;S\|nx0fȸc`(&<Æ- n w)J/[jMg_l?!׶];̚5'aԯ_[KвE+kM4w%%KpIq9&,^-lقvtyw>^?uָ&lz1M 8$@9M͏l2ׇبoFhcf!-Z-Z}\Xg#%Xm6(1\5Z,DEʼnB@тdZB;3IF*Ԇ@1H&368!2eWJQϥS0"Sv6%MiSڂg֓TfjeN=SRdϡko}_ =5%'zLc~*pq&AUh 5mBWi@p\T.]Ma*'y4QJl|4osԢi@ E f, c~-śɓ'❷BJlܸQӫC|p/77nw-]wݺ퇥K`˖-=xƽ6[ X`sjש3?yjjvG6m㗃<5k&6mڈ3gޝk‹1s,H?#*f Lk?Tӂ*ZխIWn[v޹.J4i<'ovgup௿/4oV O̿lύo~3xzS10ؠA1OϿ;#`Ke%>} ܽCwq{Dس'͟_|]6Ϳij޵[\gw GM4w>խXv-;4Ȍd' DQ, G~3OhRf q IDAT,[̕8݄CЍUwB )ccbDYA^-J3ebrAS;J<J[ϴ|sM}!B?S^!i|-` ⺓~dP>[N!>qTzOаEZa ZlcFn R64&liE#cV&ܟ;2̥gvu?6(̾M>0U5_!%[*yNm><+gBYZ޷sn]1HWmsz` 8OسuCcBvJ[ m; X4 vhܸ1v٥8'8'իoc4k &M9jUիVZWCq`σcC0nX|'Xrvqt/:h4U^.p7a„qxl2H)뮻>GCAZY1hS~r9h]#=TVV]vtt}qXr%4h)گ[wrÍ;~f} ***РAm7s8FjLE%3 cauBHUBp ^]DZUD}8 Rw^X>Ύ !i; HP_E`5t[MY*'IFXwN)릳ԧ-~~\/Ryck SP:ۙ5#S:r&L~G\G:E̤"R0Fu-,Wk"1mJ]L=d.s. EVmMT9Sڃ0>2)!+r29FS,7wt^gTamPFexlxbd5~;Bڐ'j>GrftIq$+l:-0>ﭮRY'9LlwN]dcWښ9ɬI \yrHK5Qh|U/{UXRQ(ߣmԵC0vFfj93hu_.nV~TDfE 3,O&nq?3,VZyW/S=GwTPo|Pżt.$22drFiLX8Rđskv|t`&|Fz/RJD@ry_;Lw] \pDL e/vT9_Z& Ku"pE< |K, 3,{q C̹qQ9a[$23H1֦Wk_e@U-siiK*t%rIT? +D/pߞ]`tiv eLYNꦐ'ٟ5M}aE'UW?pM${C"㾇 `256cFY!%T^Z>0F"'smE=tkLhVڣN yNಣnt< EE¬\,[K&c>*Y#ݔP|k'v*WVψK$0̀TWi4QjxN Is:n)eBҠYQIZaWbO:*HLyۜu9TPWamay]:Vi9ʋfJ!Y>X:1?;Vv$5fNOؓ[ +6;.֏$.`&0% tE xD8\8sq6,:F,JD"iE3rbw=MሚĚ.9MgNN)qQI;YFjH#ND4jx~%$̌(0YM%+O+>‡tOsFWѕ"UCN}e| w c (e(0"T]2&n# j9MPu=4'-.\5m՜q-[ 'ŕg #=I?Go7+CqsB.t|P;[Hn(J]"=H.w3\f\'5mtؙ tM'?l%X1Cnr =ǿznएksA& ]^PfIķRv}F*2)3ʔ\#ٞ,Ax:)x 6rSawaM|P^9(1J3:NSxW ]Բ"}I >-`K! 0(;NOz_1d+Y|N6|fH0#)R~қz|q RGmm.i+h1beJ֙Pi_n$rWK=,E@lU쨉[H mȁ+>y`_r/N3~N&Q܊clnCW΋?id:JXm40ac 4 OjiP!y$cf1h+6٭KQ9*h:TI@#Y]^;TPb(1i:K;=Q0 $Ԡ+6eL5w(2D Bc2 {LEe.2BD[FVFX*=gx+#E5%|PCz ~$iWD_Z mY1bi9^` ͍zfiSH-@Q4 8^J=~„% yuhZFoW8X[LD .{76Eͯb $¨Q6d Ɋ"%¥]-7N& -t* m4CW㝷F⎻ g?q<&M3+NHul(>'Kҋ.B{2 ذX~~yBMSUӦIlr4y <8ؽVwKcʕحEK>$١s.8"PIGVԜɋ!+g7hPV^y%6hq'/{l:]mg+WwߍA}ാ{ı3IKIᅬGǎ^5k0IϜXn7c:rOtQ*&N+ 5j$z#̵/VAf롇vZ\r/դQKzk׮:YI~&[!mqon޻@>Gׯ_Wo_~yg5*ЭKsкejŋq-[nEw}O9CB6m0sGШaCݱ#`>bw<[.v0q4t˭ Rކ k/ s0 m.DA]VZ_~>5O+jdh&M0#1rD_Ҵi1(_G cV$ZZQk;0ءqc|h~}2f<Bkv HԮU xJIkKsܣ#r^:8`|Ft QgW)!"Tl+'>7$$X'pg:hҨwꄝ6!5ݫ}{lظ!˽Tŀ 7o>dKv&G;ӇC][iS1nX|)`z%i\j٪tee鵰|)A|F`w ֯E\sյ??z:xw[q˭7c|,i=suhA$b]O;)H"f4F~5Io]`vu8ltk($TQtwowj<6F9 M'{mV3،?s0 fF7ZzH#|@d)פ]&ex`HRC`~?`*++CVc7PKMӶQ"q͛7c58gOth׶eBӦⰃ1أ]{,[ػcGH)1ꕗqB~8O@moƏEgdo5Q [~8{_TLKn1iݽ;:w+Lw]Q 0L~= e\uY,BuL;cKhT^ߟS|=v{t|w{{ֆBKD{j~d~^3.kv ?!Tu)ihӼ$6͛Qrǰpܥ+9Ҵq# ;x##=*@V|Л{ nYVB6 npQR)+!hXv-oi6w5aռ%ۣkQJW%Dz$kn!TR3s"0;"_-,N?-/ _+M4@Jh-͛7c58nhv74/|O@L &qz%C.l/"T Z5R[}:ekmz^I([" k%MRoh4n_D@&OcUh׾=>\ӎqG/ŋcv@>#B0M̝;/4_}jש]a!hР *++ 㭷a 8λ'M^xuխ}=(//E?RJ7_WFVp '˾]Sߚ_`s| thw.vq'N88v)qǠߑɦwwމvm`iaҥ5Kc`ժUxOc^{ b}Zb u}c>^aq0t`o9A8qG`~bh|W.gtRs^<Ukע1訣mo?x0줓/cEE:.:;.ҥ>OѵS'\r8qƺ}V8`kpqѱm 98\q]c6q'LkoM߮j/{Xf-9 w_kmnz<˘>s&H۵ðGwƔ>F[nA|_}6WnW^@bM8疛w׮ ]ԩ]?07럘1w.;zq4wK)›owcUh|8x[b.\rX_wՖV7]wE' 9spg`g][g'י>~,\t}X|yn?8 ._'&O#]zujrn~q4_+OET IDATϤ>Ĉ)oc?ǽkV}]qnǮ-?'K.q~&]z9/ð{/5/ÆM;'3rZq' >Pܣ#i٢xtD|d1vl??e0|^ G=:bHа .9`HKWB4 Xq#.<=1po>EYY}گ;=V-Ȑ譩{3a"9 Nvmc"k[\zܤI;kQK~*Vͷ߆.wxczMhܨ1/͚5SrswH|ᇨR]bQN]o_̙cӦMh۶-Z9{E=|r:%|6g66n؀:`Ah|WxILе[we%O㣏f@nقvljOBfEO>8*lAݺu{ 'Gé5Sbx x0N<n9=iL-Z1;wLF?<~;xϛOfB۷웜_f F> >dj׮9_uÆYf|2x㍸ТEoqEb};#W^SN9/0+WD۶mqgbwDU7K~=; 5r^<ѸqcHs/7og{6l뮻Ŀ~gy&C[жm[\ux,_??߄~ļy1s,_/<3 Zl3<Ç?,Z-nѾ}8}̘oM\n}y| l޼D˖nD޽駳1o|\{U3f,6l؀K.8i&\y54h?0[Fnڴ ڷé BVɝ. |ό—_-@gy 'xg1hР ݺuŀ'5݄OPVVGqٲq עe݌>Ƌ/o{s^ŗ_-@:ѭ˾r@7O4)x1nday\t9Ji?7ߚ}FTVV~9U/w Wǿ7м\?}_@N|#{#{a)sx ze̝4(C1~hX[W/N׷7͜88@ذ "\|m*6\m_>tK o:_QZvzYC⨕MòbmI/5k9?9TTTLJ~ nA'㥗^ċ/&%.Y{7Zl?10QOaڴ6t7h]#6A͛7aG3ⴊUtl{ /1cb!_?c':++0_^[?O,[t2_+~ @HTu]wEF K/Ňfg|{!.huW^֯ǰA0PV-mpq1&^{K/^|Wƞ+W㶿 pſgᮇʗxvXW>n2[ Kw7{cDի0cgsqɃЪy3thS{O+7qX5{n2<3n)On#EpO~[/u+VY:aۊ5kXr%`矣rt切Jo<+:cZ?5~<{u ;qӭ~iLmN"V[*֮ōF6mpI _,RJۮ=wzϻ۴žˮľm}`g],_}u5. b`5xa[ͩCc][V:4dnvn?l 4n;#hkx8Ѹ_cy°%+q3Oy&sp~c듰A+7>ol߰!nv6.?|~6^O|՗X6yRC7:,\f5x~?sQYvywgl{eVYY ] 0z)ʕcĈ9{vsOrڷ/xr@]1/rJF>s?_UTg9IH' I @5A(RD]z^`oEAz#餒F %i3sfNN߯yN2kZ{=z//s={Hٳ藒7, VnFpC=e2g:u~v 9]3`7D0=bl{QwI1ѡkFZz94-#GGG3 a!9ͩ3o<&Mıزe>} ߏNgw9Yx`O>ZHuUf>#_~97| xn~|%L#xŗ:l('QXXsqvq᝷dLv<#t]A6mZ/?8&Nf,_9~Ulڴ&O'HZie5Ͱaz;wgذ,_ grr D>sudH\lԎsz^1a9v^yeuƒ>z^ʊ … Ua=mNerI]FsלYdeeefR:wcԈarOǟ)x[næ[Y`8++/:4'}{&=3Vag.444p췓UUNϤOVqěx_;oW^G3ǯ۴o'DZ [e}~Rw/qңk'z^~^~F 釣=$#U/[3=o%=;?Z,mźtԑ>ceklQ)DE4ɳ\!d8esS&b%iEQl%k ȐС es57gg:9NQgNc,DQk%0a$F@PTA{=Ĵ'66ѣǒISSk׮a! 2`:uM7̶m[&^~iSFѽ;YY\a׮L8]:7MeÃΝ:w>sӡCjkkYqsf"SgB5b]:es&3fLPƌEZz:(^Gӡqk=nDʺ;s&]:u"$81#FХsg6mA$|}د7m߆+̙CT6ɓ|N^3.DSz%2ķoOjnddeLʿzDZsQ45 OOOjXy3s︃.Ʉ3vP&'iv jsjyωBWkqqvA.654޿?m˜8jAlVܴ{7n{tC3dd~465m;nFĎ2v uݻx{B fBEt载1m$&N#Mztƾcill 2vfΧHwNھBirr.(ٳ$"8SΣGtw'.2cFExFIxr4#h'V3ҊJ^='WX{'3For2mo?wO^0}pRڷ'U+Y^ q khH^zy酓#^nc Fǎ'St[54`x3tyy3s0|<=t*H0ޛ FsGdT ee\|777tކ[[7:dggܻ%*:POGGG:h./88OO(lQ sƎ=wQWWG]][nfIJJ&((!C܉;vXc4*a{ % :LeѦ wΜECc E5myMM"vAAA0|0232ij2dJLJ)… TVV2d`N7;OHlX^A t8;;ǫN獧x)Qc=ӥKgzoGppȮ`  #>.)'PgRܫW*5Ϗ\JJJ+UF)}zz&YY̝;X"""1c:'OԳgzN%88gggt=Yv3>>Ĵ$m$:7vgQf-;ǜ'LLtc y5֧G =R{3t@/B9m m2եLgنIcXϔ߬p Hs>ڨPZ I><%G/>zĦ&qtu%3#̌ veNSScQr, ٸi#^oR+--vQVVf~ӻ./_ӓ+ P\RB]],|pXBWXnnniHCC!Dϛ SǠ֍[Oԡ#tM: ,OL۶8Jau:ϧsRݴ666nf (+/L~>zUA!-3RJ& ъe~` 푕{ߐe;<2O͕:DQ =K3) z=Wogx -( &* G'>>t3z`旕Q[_}Wjjhlqt^^446ЈF?Gw7MݸrܙWhZ:t`EE"&ϼ&gd?ʃȒQ}l1r*:t`^ñ㙙tlۖƦFgd0kWed0GOCVG@Zyڋ_w`€rI0i t$DF>>,b5Wg_V+sِ. \E4Q wJ?|K+<~8:Y!\|mpye؂N1^mOcl9qn/; )MMM74XH?WNLHCZd9%deBWMTvQj{~:ҍ55?Ó TϔU\o&&?qowvͩ4V[O~'-ͮA`SZf&K=a瞽vc{)<{{ӧgOCCyU}=Ȁx/OOقnjaz> IDAT32zo ͗K~ + >0zoo_?(RZ^.;\TRAn ??. 1*QjC&:z]T_4E1͍ysMK9yzrq,m%x{ ` ,Zʪ*Nde12 ~>*(*/[BͶ0ၗ~B۞JADUU̖x)!*8A8q&nƣ&*aG 92_//v:IBxyee<5qj34"~h4zmkAr>ZVE.8WG|)e NJf@BG"yꛯTˑsA{ڵ΁Cpx{( |`b NM6[8\ tF&-%#M$>;}ذ Ε-;%$RgˮRN6Y8#럜={(,/\Ilciuޣ:uA4(K|ђA۪Ak,튕<<{&2YBV h-n1H6uws#c9JB\Gg葪tJԧCC!3;Lbc&zd:>AXuɥKyttBBB[\Nǃ=bEd@AucO) 8:n&јWFl؁ݧf$SHuXk||IH'==x4&?fE} MMMGՏݝN9p 9t0ߤH'yE4iQ$ի'mb}8Lf&ɲ9. 8;''1y+L2NE`ddfؑFvN.7P0>=zҮm4Eg,d֩uں:fM$Ia(srMce5=e4HI2+evV]]38:|K =5<$%GKEeجD~Ӟ8`6m hҥKBšC c]s׷q\r#(^zq!:HBqvvV_EEMՕ UUwQ53gUTߪw¬$pR:vdĉ 4"%m&̜DK})--#RrtHg֚wa`߾tݝ\tc'O2۸y(ͻ+M!AA8;SQYI=*+ ggBBe?opU;|GKp`d WgϡCHaϡCthbi]!pNVn<@ lݷBpqv\e%~~˹㐊s8U2E.+竫8Ħ&++]n= :{w[z:u&oX-ׯK bcYiL 8;9kT~~!h֚hjjbAzڲ3GOts籩xhdǶc4xyѵ},ml=uA`PR'fo):FDc(FK-MMdך:^]bb}WlEW]sY6}HsL-mI/*<2MDYz?wW*+lE,Ǘ8}ih./R?PՕ j@A1H#!<@]I^i++Whcܠ &e,/=GGŒkZ/JO`Z,eZn"asPQ9ml֩r epqv&P5RXR90"T }-D-,٭+38A}C=$DA!!srHёc8r$kҦ7aaaTWW<Μ9Cayxptstx( Cpp0yyM,WkjiH￟ԩӥKf;DDSUU9l,m۶*l7 vr1=Jjj:m[ek`$6ۨWaWTKV~j凛%%%89]zNfV]O;taC;NI%>=W4emuDzcqqǴ#jZyy!KHp..df[B^Cp=-J\]1h_=Yū,$-3V-;w:ƦFrϐKQ Fj&6IN^.Dv^c52t\t<%j685Wo9SX,+ۇn.ן/.e#e^ɧ6xD[|t:K)*-߶-dk޻4V$[b%;"`wׄ[hjlĨ@Bhb""xE"Y\|E->;wҩ}H й},v[|rm& cza57KKY{gҀAz8qL8V,'zbC+°b4ƖM(dV1xyy|j:'%GjJxDŽ7DѰ" ql߹6xVM-Юm;EdeeRTTK|%} JN``` M];)++O˚^ҥKrEڵ3ܣ٧NQQ!˖̗_~OEgYzgq!VXN>}qqqՕӒ8r0gٳ{ْ*Fٚq_MAA_/^LSSy edggΒ%?YW9$&&rQDQ$$ڡCnJdd˸PSz=99g(-5U3RiiiTVVd%} |%?hpwsjM y47"۷ۛKKa6:O> oYb,jE^ۻ3grIMaNھ} mF'AA~!Kee% [c3aRO~}p3yydO?gO?70Q#!֬HaY9Ƈ|AfΆ p JJؼmuwsݍs(-+7ڝ8L^=dm7.. ؗ-al۵1# _C/VлGW:O֙K}S<_g_ęBrUF$m3-(Q"FIU4 .H% ro}O}KzjlS4&ִi&SzNp hUҷ5 }:0o޽ZիWFjj/ƍ 50`X"×49b$;vZ.}:y .|\ZK==j4$_'::,v{rxyzeTTVi;ݵOJLGލ3f0qx1cRc2h hgFz|}4.V7rb `)15yDDn4 G2_ υ*>j1ؑ1#un+}8~$Ͼ2OtЁiƚ3q<=^P[$puex2:Հ}~-ͻh*ڜy,پmRBZ1OFuy8g/2xӏ?f:&a*#5`56ܜ]}`YIj p2{ ;Ykw̢=iWoI4kW_m}PxLLP^sh&+Zy?r4o\nNſ۷$6cǼnޓ/6oP;"-B8>\pifVFQc4}]h(itV("hhl"1:FǂHRt2e;wlNt M8ƖɪUGDo%KxcUyHU6LxNddG+,ƈ9[V> 7WWvC 80[iZ>;H-^|ټ!gK1d˖0ъ =ve͆:i7OP` NhHhYb鐐`!tA뮹WZz"Dr߂ew3umV 3Yb9׭!<"1cƱu`-R||<))]҅nerů|xWjкu <cz[`N}=fcdꕜח &ѵ{;&K`?-Y‡ᅬGxE*;x dʔ"111Ց)BNͤ1a-|w| =8V\M[x礄Xe vw/?^{:ύ$$->Lu~xxчBHoL[KD 3w6+׬euu ؏Ç0_.TW OF̎{6\J Nx?k/VDE!3+ IMӂcG_WSUuy+Eر l۵m,eLD#/yOijãQx{+pQ" B#HZAuG.c!%?«ihSHم nPĂ,7n$7zn,>-ӷ浃$LĎxvR_qP52?3Iz+[n=aJZj8y֩tE56K~?s&9dx%nSzM)k$V76Q;J!QHq)mA+mqyKђxsm4Lz)Zk#en\lV5j 25piZ)*_KU5e>R+HH˂$̚Dm:cLc=ՅOy0%,(*Ct͍IFZ`Kf zhyhצ7[xi5cU4-CcOKC^dSAPO"0C*GoPR]IYb*7]EQvo<ʻqAK/V LZA֨ƫM"bvUѢgn1kkj0-kKk(B1hA1b;\K-TcאߊU,XM0дY۠٢ίάL>R$g NQn*n%~ VPR+|R>KZL!2z-µ& Q.IZfVOc[ljUO D=UkuIKV&_;/iT:z/ ;*-]!ܳ– _jV?XZ`iXYͧ7)aQQ-5\# Vr uQeaG ^R0PH 5hoQ\ɳ9Dl H佖*۝E~mUQ<*6ʔMI*3MpT/^C-`:Ri5KͰqQֺQWGKRVq|pieTY3XWMf;֦n- *8E9RÛֈl%-E؍כoZ~[miiB3aʟV@mϺrDrqN@Keհ۶nO>f5gg+Lj{!ji /OکlzؽgFPOdYAµ\F$V5-Y Y ww7s"r"`5lohh%K9v{/en}ĢyOCDhhtl\["YᐄTP^Y]I轼-v6 DV7HqiZB~ݹ?%7d&ӧ&ѫCG^KTuXoO-%;wsTG" 6L }|5._P^n\'X9WU]oI8t"jU*t\,0 AF FzA+^+ U,9ze|u:‚+^0pj 1Q*w XG*jg0 6p VO=vNBWsK@*ܱ/](}= :dZK%P]V5aOFjM y7hJ@@?feB@@](G^CC+Wfjʜ|xyyF2{@1s-GnFgbKiL#M[Z`&x,"X*+Ydڊ%py~Ѡnn;@t}ВrՌju"Z)'jEiSI۞ګX$w)ȕ>Q?'8ؑoA!R\|?ȐaùPG~ÇtX%%̚;foY"viʯW2v|`j{HQ$ܺg{fw2gT:ҩCuR] ymmeA4a>էp[~ y{x}}YosL&}ͦvw칲ld^e=ˋnb񱛾?x-'EWstp۪FT!њ4IvAd<f37ZDRBavbR~ o 9' #)1W77;róO?={dxLϰg?Yƕo>+OIi).x.LJD[ّ>b- b}Ϟ7v /X@hH sKy7_CVR?eVG:u'_,if,1iQGDN:= 9C K+EaRBMhy$\6V斩m +RczxAy}jjW_8LC,lk зo?lUQhtfs A$.lѤ8ih(AC:bɰ[=Py\0'G[m]Kne籣t@&Bl?vw~oFLx87_©\ٸ ]r~&prt{\Hfn..ܫ76qEֱ/MMMtC `_t0<iA奋LH=Rx_l[&HM=zQTľ4]\̴pt08h!C:s< xYDq0;voV:#:0:7{A_BnYԅ={yǺcYy窫0۵7ӯ%·GR|<> I-zWWqg͓eΔ3kPD˫釼1c6|n5:=c3t855|~-_=3E,޺B<\]Ӟɽaᾏ?`PR'NVXK3fSStNΔa|j/tiM,H+(`).ёs!(/dTϞp<; 7WFɈ=kjk~&DlD "4/Vbc⋌ݛSW_Ϫ];{$U.:z_ogDެؾv<&:<\;vA^}!u3cx4%f-y)!C<`g_}}ҿWO>;1,s|]Cߌ1zRRV/+WI:2jP3=ܙ9}aXqtzzAFZ~]+'NHw|UE'@znH[BM@^JU,P >ػ ("B轅"j*B 9z q>ܻgvvvvwvfΖb9H"6mbذ[z7-[bʕ$$СiԨ_Xvb6l#x!ŕW3ѡCz[k׮s2 nBJJ A > w6n\ϻs3q m2‘ÇYf5}ޞ== ..gIeBNNsfmeKcfžݻع};yׯSV-=2޶-TΜfƍdffR> .;ӽ{w*Ξ=;ryTVh6nDff&ܹ ݻw#77ޚҥKYt)|1ǏgӦM<@/6ovL27ofZNǴ'rMd7w]/x~[n1e}l3 5N:rY3_o͞ÛF*!z:?7Yc"<9MsP6E`lnZ ؏>՗S}Kms\_ۆվg1D%ȞI(;Y J1zyq(QzA!\ƙtX K㶮0$*T.\K`fD%NHOQxw;?+5)W^00㕙lX-["8x0|v,a!'O)uFLK^<>Cx饗x'HOO/>mx7yjړ?q-۶ȭ]͑<y4._C?Pj|d-e8tcG3ol֔/ڵ,Tˡx}unܼ?l+ѣ,'w;oFYt/yBZ5ХC8nnnD;gΧSx;f\(.ŵ\^s^A2e|B2O||Ktzu>7dzg1}"w`Q) z\#B7G +7nb!|<-jרqmde_mZng5z?&WK~j5 E>qڶaK/2zCʈ2DE{x Ù/3a0VlBB,իAz-|hz\_'M#%3,\Hqq1[EmLl,=y&&J|>s&};u˥KYɳc̙-[+W]%vA|0}:4E8uMVׯsI^0OFa! `T^Ûo24pZyIѺAC>Wбi3ޙ<yS'hЃkb֏?PReޛwn񞽩_Vаju<9ghZӭqS>8ALL5ӭqS>zl`,ݿDȻyy,YZ|5I^0 ǣ{ cYs:wO14=oX͕CӞ|=>[ ܍9{y[Ou+Ɇ5ܺSdn[Q#IG/Ǚ1xGb.h̟,:wiRlYr }xg<7pSe|ES&wdB/rm.]gܾ "6q,梦%{J5Q6sIXs s* IDAT5lGӞf`N,ݾ[~b922x~H^Q<ʕc0wot튛;wA~ӌۗx桡|JrsͲrs&.gnjfCQbEjUӇNC nWt*2s ͛}Ȗ?/:-//?9ɣ&%CvPmG붴gs.m[z~>7???^xjK\B /y9'OG O?MXִiՊ;w>{F77/1 Ux,yf09?ԏ{isőYByt<3L&K-;8n$R"=<Hdf/]֬4kڌZl O&++_F Ϸlk9u?~_AN1-jV!Cxͷ^:K/[iۆ;Ew>msnn11 o^,ǓYnٲ-[ӇkV+yg<_|,(('<9myyy,[ ϳpBxeL ĦMذqþs.x漄̙lܸ͛ @7o<Ο?ԩS9r$X t&< Md>'5{ECZyHy޻ja=nq/O=¶u;wѮ][|c&%̙qo<1esIHHe,⻼xoByvΝ=?вe f d_RPp 7qzmژ3x{X4B~~_} 췘2i;vHQZjKϛSOjLJ~/>7I#%5["_~:?;3_nlnnQǎ̓Sxy&?[lf@к4jʇC:Ww<ΞS'1v0BB*Sfu9j):rhq r{, vk'+lE!~.sN{$j\IšR&H:"nPP|ӼC#:e9j ߕ jp6-/Ad|}}1`2[ع};#FmXPjUeei-,+BMuٽ{L46<5)f:34    ]8ϟ~ܺu-[ԩ6~}Ȏ;hb"j]_\9M o7C ~n]ܶq&RjUp5*6nu*j\qe|iբ9څx{#ܸqB!>b3q P\\̔r6Π~}ͷ{ ns ^*ٹ9,_Ftԑ׮c#(S HŎf#f>Г~́*eԟ2nn+q+i=x/?UCBxx`[iiܾ]D (0OߞcOi@y ?&?ʛL2GL #'vmD`ܐ!:JBJ aL<8l xyxWE&Mpwwgo oEnJn]y{WJJ\eeD$#/yc*"[dC<ԭ+-Z''P%O4 t BBC{[^xMqym߂ TeMפo+5׵EndlxZV0hҜ^n} hӎAmAduβ{ӱ+ܺsRdo'?e[-y97OO֩GrnފN ۞;nҬF-:&0ȓ9L#tJ*2u{ΐIê S-(;gsD']bHۇ>"l֯mu3I̤etmҌZ[i-vn͚s!%G&5lٚC& Ҭ97 ccKL~jt4>}v:~ y9̓cpp?oD`P.lܷT,Cqq1ަ[b͎2n$q*[WβRsϑ|}y|0<==<`#QT aC7`W$SJyAUah(&??0hy-**>Nhh(5koaFtуvpeV32e2r(]6v#3g66,o`G||,;Bj2_2d=JJJ uԡYU+s{;z? -+Uۮ]8ZFv}{xڵkAd2dd=4e*>>f۷_?~gqs{tRJ`ƍ j@3C*[+=\6nDa2Y'ZŌ^^^ŋ11k[]*Krr2va6SYp7ddd2ilτlp>%PBVVUBBcg#snnn`3QE.jyGDnm{|CժU ݻU>z+/…ʕ+ǔ) t,7/۴nՒ06*S֧d ̾ZƘȓS'xbbt)ޝc'<3ߘcbGǍlsӋB(⣒~PHX,fc%tΚ12eʐx)txZ2#]EI2,j|5]I9IuJ\[GGT4:^էr_Mzʵ}jKL_ ](*T222}6*խW{ r|Wҥ$֭k$L&+U"R- ϏKII2~+d7oڶ8m@b1EEE[ʩ_?.*ꇆsn}.f:͚6qVI$--bEE6N)A???޽Kѝ;-GJj;uխQg6J>Cw0 գrp%]vosMo,ǏH+$YVݱ(+ZHaZѬaҮeKyP#d~P#BP MЭ[HNO^2^Z۷n}xa\7lHzrngq..eVX@@#Pl|dPsR]M[GN֬~bj*kղ*W@|J 7Gv^P{[۶2yH777eRt젦^">XH$QXHJl}޽˝w)W!Ť$$ēz )3cF!3gψ7_KÃ{ӹYsv.'!#kħ'é`в&.=w䗟:[ddhygx!?DgmP?F!ߡ!U}רUneINLrNWDXU~a!5*T}h\3-j֦qtmh ujИǘ7]k $g]%=;KW.S% H$i떫 ?CLݹ7>3t&}ivhrN*u型|GTȅ :[D%"\&!#$ L&&o{_LLO^knq9;G[(q))t,Ү\̛鉗%he=i3VDFr:& pIլApݤ/._Nj2Tz5˖Rj)4=sk }F֭:'=:w ]̎nRj*Sxu;*YYרf 2*m,sE(((LJ oF7b 4Y5lmd\`iTAN$[^///%˔-cK`mVRluO3HOK#4lpA22ҹr*iiTvs>[souv:[le  ~~6NalDx{{[1SxxxKllBB<^pvt_Q@g#6兗--% `i:$%%# #x0x@uoBJ"Z%IZP`(AnvBy=5lHF hܨh $''. &_}xdX]&&6 hk9GUBBhٲ96$4.[R֩+@Rr uԖ4ϭ]T[oϕYxWl6S6{"u^2v[⏵>GM9t&b%UPG,@[LA$K; AűPEjm_PN+ꌮt3\QElML6ڣ5RE'5 _qjoͮ~ٶ\ߜ#c@XޘayZlQ"RA= 7b*f*oHIM[tОjU2rS&E4&Z9EX?|͚r( a+WZuӋ|f_oӆ͚RM_}eAxnd8u'Nfu<;i"m7\6ѷD"EhW^LL g.ư~oS10P1Eʕ-ǨB]o//n*fk ~Em/0agBC)ǁ'iXxqӧ#+hw^BRFѣukj0ۯ\l2|t˕?v3b4Y:hъ I8q\>|0 {ZziG\ ' >߾Sz~Xٯ[lYvF U󐏧'eq"1q1w/ JXP)DV9/{w򟱏QI@L_{0+WS*vuF0Τ"m/PN_zq5VЅ%jXx~6{&rHe݉KlFbjԨI||g'//˗Qjʕ+NֵkT }(-JY&+Cjle^"CFF&͚4Ù;g6h>z~>'OfG2?ڴɏ[dƳ.S-Wm< maB׾[>3g}6m؈שUײdܺu8"YټܳٝV͚p箆m\naa!qԮQ}sҲYۧWI}54u*UIHML!7lȘA+/#S}&$@չ}ϭ۷^P`916lnHMU#%8˽~We9H\mˑӧ9|4ֵqDR"eq%;ϕlC%+譒B^AΟg5/𲂏5L J }Z+ҨiF:uɿYR+wʖRO h Ԝ{ׯaP lמ֯VT)ɸ-GH@ zPrWro*7pn޾MLzu+0}'5uqZ~>iY]G&#"$g93yU&EM Bv~Qc i``U)˹9Tp'Znߒ&o )T¡s^Bϖ-iZY27oPLY*}3//iodL  `p׮5jmu(eKptl ѱq.C&MtV9$$+Sdkp5;'(<d^"&hxX1(jriN>-[WJeS|yvmp*:OSNVDHHL\ժGVV'!ZI!--U6^|TЍ:r]2d0چQfM iA kɓrԭWQ4dȲ(h֨Yk }nݺE~~KgլYkײKMzWI >>ʕJ?].R9Z> /'ϖvJ]64Anݯ^j.V kۆg[ ի/-.>ӧfHtO?k2ZnnnUzp Q} ӟYӦݻb+S[zu([lCaܹsի_P@re }RR\+Ve6GR>‰>{s(**m*\KfVA#= P-1y^#88ҲtҹTִGzIZA/k#ji9OQҩv4*(j;DQBƖ,"6CA.R6pw{YǏ%--۷o^:,8.k׮h"ᆬzj4mT5h4x#QQ{>s.oCp8{Y״'@b:Jjj*۶s>"C*UY*.p9~7;O>ӧId\ϧZ*z{c2{ ))ٷܜ)i3VzP1El&%5}aj5/}X<< ={Yy ɩi8_ݻ`ٺ{8uVLim'l۳˜8ML\<իÑl6q=;u"~Ĕ/\෵k-ۨtv<?ϝ%ev?Uup^l;pu78{ 132X};NɀnK#Rb.qMzwB^T %?Nv NʗZڅW?I`C4 IDAT{`2OLR_//Q.edp!,p JζF`|1%BVH9ԫWx -7fjSZu[ IH-|r۪@??rop15܂ kMa$Z>fGc=d3sWuε|V'9vse;ϻwзUk<$0}g"<Ϊt2Gbzek-!1Req4.i)Ԭ`hm=u+~X\,YYD>,IX&xaaܼɢ?Vι8Vn,;k0rY*.¥}&']ֱ"thӖ#OH{.ۓ˯NRJ ._Y~޶ ;qBq!zɱٶc>G޾%L$'U۷[ƙh̟޽{]O>2:g?%xd]Zujq1&~m)ײrR3IJHk֭'.> /l# A8YײEzOH`$%'yV h]nGl,a sn< 4o"5-L.:>اQGԴ48?g[(Z|^b?pimܹ WjO$>SvKfeN&.>v qI.葶GΝ(,,ǟ~Rr2.2E;p2eR^=j׬7-$Y" l\8HMK'=#[jH֮'6..ۊ: ~~X-e'/c-}e*(d km5T_E[Ի Dn%IK(mO5;[_"r:WCR9VM9jdyUET=H\B _CB%Iy,]5%re&LDV4E]Eobƌ|G+[f͛3jHٛQQWk <V]5qjTX0gb̨Yv-[REZaCVKH<9y2mZaO2~)ytblJc@edggSB&͚! ϳ`bf*T`!kϪ*mצ5S"X~u0S|HXnO<6ޒlFn޸!/<9U#Xq^tiA^ NUkXak`|{ymjqh(O=(lUSX#ݾ̈́f#s68,b@ >^۟}N`yWۡMXOZN8j-7R мa^8?"#Yy ^t kˈ:;]x|PlN\R6z WxyѯK^MN^C{bOu7+S֍3~ 9 Qs ku"싯7"#M4d4у ЩeK,\H-xjs777fOW+畯r` %e' ䷭[Xw߼Ku;tdud_gDnd_ "m7`Xl=e 5v-[3KwîU::t$ax{нI3t2Vsގ]5aL':<#(έ\GyG8^/u7uޙ-oG71j %ʖy :L{Uk㒟qժU瞥bŊ)W$$&1?aڷk |շTT1FQ[ ASvݸ-+z~yyy+_Hh+U~QF!\Ye)rxiPXA)H#sRD+]yk*hQzLL{W7BOk1 ; n4{;y[r(Lżn -;AO+k#DWͷc6EnБcLx 5ixfUyR\:DqkM+` %\<5MhNyqHuNС'3K\T-9;hjbwQ]ʂ`Xe;޳.JD:):&jFmO3X0d\.B[䒚Ύ{<>t.T ju W{B\-ڹؓ~j[gg*2OniY4ơa =Ę/Co^g٩ƾ&Fھm #c|+[lй8-Ƀ#8uN<:O) Z˗i&95AP){32t,cw//fa!}^4 S CJǖmS`idHbHpW䆩aCPN)iP3W:~2jų?D@[25-"pt47KVr< e#Wo"\KxANQA+K~-F FL޿p8p+}r2r=0zAT^f.oȋ24oGD%0jTƶ@`i:af0Q6o! ڷkCZEX΃ d锠_+$N`8$QM@P)WO5LL5 =Zu :QU3 Z6BOp]b;-= !/"p%YJdH .l\k![Xzg4 oRʷ:.h@4ʽʮte6 Ы[ v BuZ}^ʼ~ lrSN6gKnBUn7h%8 Xt;VZU+: F h rKk}ہAԷS+bLoyviJȲ8)3q8ae%<45ţ)fkPOT2EZ[wǔ72,qi>biCۃQ&uÑ\$ OW(>eNUCGUvdYǞ4CVo{/ߕ2Pz210w8y^U۷ɉcd2Qn=ߟ +:-ONZp8k ;FɥjKo7n0t;v=3j6sd#jQK*߷'s)KY~W\u`y3rEEnQTwF~e X%!jTJ:z]d@__:sk f\`C}{scy)Zj[ ,:-gu苪/@+ecY]KM!J`(PT+5NUJޔl|*fQQA:Ggfz$Hec*|zRmj+MkHg`tN(wa;8wCl zg:X[ڐ`XA]0?P*^m{܌WrVC+~#F6TP)7}oKϜVW#ժ̑٨(j&4}SNΎFvMo>V7,dF#GNد/MWS4vYxO?t"++'PZUE~uJP$Ӵ r5';TTI.EA%)zF_ wcVЉOZH;Z4MWiKsg!u=u' 'Z{uSw!-cIDq*d*8(=)t+*'@x H6uǐ=LւLQCbq'Z(: r(o@E\F9 TADžS*L'iVrR$K4 @6Kspܓ'H^ ٺϢ ԫk&$AI "X^MN^m$/Kٲcr4#zvdP9Av&:5Ja4u!gRе r_#JniJeczGA6cҳ dEʶSs.jgǷۥܢ+EEaurв P>@%VT}Q'+}^D'~y$i|fsޓ4 ЈVXA!I /vT~mhuL9YʿZtʗ/ϤS]_>͒E?[4鉢Y9g 1(K4Y]n7QzlJMfsEniSc.}bDq0T*P:)Y= *+KTh"]SuʺSί.f9I]y`E]CzΦe Q IDAT՜]4Ȏr[GUFLtt u,͉΂Q,!:A2$yP8hZ+g ב^+iYF7T-FGp%`S kLr@ ϣ4T"g2mlkmquޤ1! jXOS(BA²mQTI/@ҕZCʉ :G}^JT/=gZ Ԝ =deu.(T N5W5+@)Bf=5 _K]QEӰY4&v,Ƥ& Z\185RۓpXb_i5y%0zJͪ4eԒҴekXێO߆*vzF{TIz9Oaa!G=f,db̸q[ErssI  Oڵصk W\tukא;uc[Vݾ}:D~~>toO~_qYkǤ {.7sAX"ݻv[ KXl)))TZQGGDXjkN 8)yK-p'KQLDyIDQ"+AslAAϙjȆ[!})I/o8Y- #޹CM[|ǏìYe…DGGSJ6ih֮_"M9x֥~h(,pTAhޜX~[ x\>snܸI@@yʕ-ᅲT_G(W+džMECӤQ#Ϝ "D;@ḹ`z z'S9JD/`C*H[*ytƢzh8B\ \B*4E2)jܷp3k=_6}e5PxLzm~^9tr@*oSv>[]qވ+S] G13%u.s+LAΰ)\B̌IdiZ I~\Xiu QOb)Þ={p9w] lقopEo}+>O-oy ^{e =gq6nڄ===ȇ>+]=vލ;EN}~8\Ku]4>pͷbppgv*_knrYZ4%[[t^90ARw /$.XP}[(2F(8Dnr(A ΅љ֨E>9>73_DZz 1ЇsX\K@-m+tzolbWG#9gkEm~.UB">bqc"0߳iS vTqȪj{͏$O8mHO̲w Y"yyї./P<itmd@_[?S1SPô sR}NaB˷&Lر<hL39sVz p/o dӦMٳgcsaڵ{Zz5`pp-{ų<'7/e?~<;x˿`5-[_{5֮]AL:-ٽGq8l֯_>lذ7nĴi\z)N޽{ zCUiP#X52;᳊Ŧ+oX;TU*=-/;| I GJ;:{n#1MA9kD )չ6 jecC0{fn_vxѡGYCYE!mSծ往f'PSsyC˱v<)_ƌݻwƍw^yeP\es]Ǝ?X`>&O {9\}ϒxxzf?#NY^p[~?#?O^7o1)~3‹_8<3d=v_ӱr*g=̝3,_Nc)Sc![sroNМi$.#Dul8J̞~y[ǩ@:FnϢG(ơeP]h{vC/A0aD|^:8q?t)>gfM?GpGǟ+`||cšS⪫̙3q=`Æ xIzW`̙xʕ.ꢋۋ{k޽]psU&OX`>n݆]vnCJjSNI'6b&U]׼EhSNyک p'tO|9qW$Sq&;qOpf0ƱRN, Ȕ ίI4h08/6 qpӺhYzVy BLy6g)Vb;JPQY)wV3G j' %G$%T UɏDaϥVt*ѱJHZkc,H 'F~7vIyDpfVZpݶ2Ee;d5!n˳cVY촡~2Yu4m!vZ^ӬM=LYQ `Zt2K{m.ft ?ʦJwړϘ0L7!̂22CGAzQzӪ76*E_,fuؑ!kgm&=C.y'͎Yu6QjkMV6gOc97,!5hOSe{G%A&5fG~dw>oS1N't[\w|fNszf,}-VZ8%9[$Sʳ(M&+޵&"mVuq:;G)2i֎||\4IύOi~$ƷQs/6$Mn pE^=%}>x6\eMkDv~M &ۑLʈkHҹ:p[\̮@y;v[tT'F)+TPչAJ搖lV]v] 4;Ǹ#,V h /(@F|tOa>I-X`F|H606%A),jʖgVR+.2nN[:r}Z@S|6rH9"5+Ϥ &B9Dii:j 8jѐ)&Z'vd9ޠK9=YQ ָ} ms4Uxl*L2~8픓} !R!\ y%lK+e1'WHT/WmĒ A:@zo j7NpEʔ3$eۃdwRVJw( o=? [.Kڗ9g\pCV{*:u5T5/g$GfOU(2)OB߈eIJVJOQ犟&)HU_1$w.kd(GihH.C>jjxQZYW ,arsZR@C}. d,iϥab|lV iK kîs4b 逡Sͦ(>7_`LI+l*YNL͐{;B.%0Lpeu8%(&5mi_NBĠMX%!Yk8:UN7lloİrD2芢7qdh# ˅Cb}fjU^}<Сgm"&Բ eևv FS(CRYQdc+7+"j ]Y!!‰IzjrU px#eP2&u,ІR s_t&d rY]RT1aN֍,FEdžqCX(a2I9 W(Xe5o&sy//i)ӛ/|_RF>p7)ޞ&Px_zl 淎mUZcC ly>UAXsIyG$f^a.$ =6&8dO'%hРkeݱ2)⋅I^9i)-ЊҔʐ8B|Pȝ&yɣSCD2;+ԣ!24)Zepʮ tj圯$GB◔L-cPpy9e\%+-"cD`uK-%iٺ^r JWbȇoܢa='Oex[ϰR08'/ϸJ4$`7 +/&qO>/_$N ܉ƽދnO>$pxc)8'"s.wMgyŤI ']^3˔+؃V@۵+tu+OZ0no擌 LgP <5,kܪyCDWs]K T#0 nAIv[d]V|rg2W'#7$$ O ) 5r Fqq`q*7Xg uY:jXtoR6O,X֋tܨ$ UXxű$/&3K8eYׯWCp+0!r"\u乻==m9яbڴiw+4gw[4f_o~M*ydld R,5nVȪݍY:Z.;ͺBF*M@KeW}r"f;N͌gS|3;r| iɴeĕj ɺ@b?TꤨW'/V)IV~AV:'31?EXG;F3uUP K|8oM۬)} 3=vg?Fs;>ӧc9;p^cux䡇w3{x饗0s,p̒%-g>̟?fxއ?\r ;KZ_뮿;vo\|1^q9ظq#bժUÒŋq^P IDAT'~l~kM6u*>Lw@)g}g~zϱv:0}:cQGn.7_|O? ^q.}lX Ə _q.|Źy[nw{XA5kסz˛W)kr]iF4󒐡tH_ l(V5e(4%K<$.I;SEןjwU.D'5h݉%ѿSԛK (iѽ')N_KD靽$ޜNFZOGEq\a4W>%C扤~QvC% ؅HqI'7܀/== wy'.^cZ#yO^5GaŢ hBo~[{9>Sॗ^ϿÑGc]/}}===x\~%Xh!6n܄o~jlݶ^꼼Z\{cԩ5M/ƎCO͗_{a Ck7088U;v,gxbZ,YqC[eeǏyNP( L1  ?R~/HxX|E:JNGcI :-ŋ=jE :1ck,5F}_0\B.A 60A5G01Igq]b9$[t%ٞ +e,WC4|6Sii)W*0 /E(y30v`ڱLuNҩ5̂'.=۶mˡl۾˖-)|ބX|b̘9]tXf 1id&aĉ7n&MI&aI0vXi`0qbaΚ9 ^Z̝3'LM܊cx'9`q?x֮[+\ws+;3gq.%7|+{{/yͫ`|L2oxݥؾ}֬]Sw)K0ex9gaxG| ^xC{;h ~+՛zh&*sх_(ktN#嗶Zqk3F:xOIj]*ٕZWG)E )*̷Go2 P3Ud7d_yYpn;y;խ* 2xRt-c(%%:*>yIrHvX!͊KbYm^6]튖Q+|5Sr>WDݹu ͇Ajz!k'=h -t*IwD_F.@L=&I+ohDƩ# Dzr9 ( fv -h+4N^ɓ&ᨣƝߎŋ{ń qG㞻e*O<+W駟ƍ188{Q:u;0amf_5֯_ : ƴӬ:]/[}x0fh!]\_v{^ʎ;6a)1ihڵ0:,F&v"G׮'C1xCbw$qy [`0输=.%@5w D_:.IY9j+hd}ȭ Z4GbT;[S=femx:]J7EKRƃaޒlwm 5} n4ًm*LfQ^ٹ#X vz" nTR[y"ck"Cpmp tzSep[:I1 +/;tG`u[wɪP `LG#H*NC/$ӣ"D^)KB;)kH'syQBKݣQJP&TLTyx}'r*;v'-]vZ k|IvXd̞37_l҆C[|1yȣZW^=wŗ^WU;sy=f7f 8c= Ə]mBz Nd+L:Ebpp0r۾횜ŜṬ\oф4 K-٘liv|7ri;Tv_ӥ$byGG!ȵLPtrg]2.F;!;m  EfݥZ:mѹxd:niR`Jg<P2wsvwYBL)SpV?OVx9-DF*zad: l $*PE@Y"BfG (1>L޸cfRN!{O$y8bxC2F)ǡkEc„ SNlۺ+/f\pE81iIؽkWP6T8Snze<<0{lYƍYi㐃aO`pp0?-x8x\g{ӧO0}4ڽ [mI*T=s<‹w_U&v/cE'Ws[#2NTJ:\Z]dqJ`lB ]”-L٥zD|/Cvד (+ll׏q>]ը~ ;]4hX,"CTBqK2ya\QY/VW7;&Vٮ9Qr=5sbW(J@, S۠LWZ7f'`M^t)~C̙4'LO]w܉ɓ`]OHI&A)~}6m*&O[b՘>}:&'C矏o_}5XGuXbnvcܸqlU: x?{yصk~x57gNRW^x!o`8fB?=4$`+;nRb ~|oW~⋱ic VJEt3}ȥA!).xq}x֥6_gN[;zPQlJ?h.QOA`FϒdxnBICI9{b~ aȰw)똶tVd[e,ޥr;67uvfl~+K6 |4Ut-)@_0;kr1"?Jyy@\K'[b( e6k]EǴXrD)/Ww.*LU$|h>_%H^,FAO#g% yQ'ZH3(dcA_7};a8k*/O3R n:qL 5V>!q ɾcq]^_ `0~M "rmsP{Qم&V5,-bdRVG.32cЇOȅ/+4եA?X1"I2Ȫd} ѡ+WSdJ|#Ys0lS2~]AWl*>~m_5%( 3OF{<(&d$s<1Sr.1ux2G 0zC8kpX$9Tl !QOIW3I:O1Fщ$+U+Q3fY@Hʮ1qX, <D^]~f)OQlkz{?uW;wbw GyUM1,:D% K/d$ Ixlvp 4H;sAʰ@bRε c)Cl ](W(XQ;ڬr*u_(ߊ74NV\аqdPeѺ"ܛ qu*ݬXBr ]و6N`AtWh*AB V%NY!s&Q !~fNgh h_Fx"aPgԖ掶1Z4'>4/!s5 .8~ȼ9{ BJENF DA*ٽ̂5ϴS%$(C?9F̙;p]ϔx89Bw:6$k}3o Hr!bkaX$D5a>[!l[[n פ[n3p\cw<2X7naqd݅~f*R4~ESd f]~udZP  I X"|֝#{R$MS$@#I,H;x,;ÓN,DЉZЁl8 %}-sqxJ\?A&+AAODqCY٭ qq&beJ#Nc-.Lvhe(ΖGs2;/B͟O0JАuDT7ַD,QmF wɦo6g|IGn?C"0 1_5!ŷXD`,x4̴{)74-k'. P3O  Xa/11I:ե Q i{\H pm!nXL(QVG!d^Ao݌|$&xS#XQ2dȺrɎ-BO@:$K @m W\I>p\$LG)0֑/Ԥ0w nZ:đo͹Eki>k9jbA4ӡ팼![v8hP'eؤ\gGk'O2FS٠!!Zdy-x] c0n)Un [Jw@)2&QW)d'Zo[KT07&jg$w∄uWPkH>UV x0HiK@S.Tx@pP\nlh6u LBYѵ`.jHɈ*셶9'rV M}L*1L T 5s$jPqBW{O $ڑ+C;o %٦F^_1HʵɥʯHLURdh;l&x:w¬~dg>t"؂S"i"y>҂l~j/!%{2s|C$'ίcAC:E: RlBdn7LiqhL~ -Hؤa.ֆgWl1E3u9q, }mlSXbtN A ѠLS+`533`c*e^b`H!fw e.J5N+'GwY%>09G$uudEhFȹ=6LOԆłEt`I:r%$/r^;:#-eMG0GN9.q/Wh1-WyDZ)z2&D ul@t]#l R kUB/̌HլLv0wlK2dT~@,cg \Ǝb ?.Jw:*C9v?wa_ ]}ERu{epPuGVҗprfEphH@ ۉ!W?$|j ;3+Gޤ7 vCu(J|9F IDATdSZ\ !i%Ǘ$m]n3$P*lY7ežo_SÍ܄'tK8ZcE[δfʰ}+aMgGVORkO9]S[[h|gE˟s W9R' n*O%i렯ʥM)H0-+A8廛7yz-O9YU n- ȔvuL I tm>3 t3}d]FPk 9DV՞zr7 >; 2FKe~hC;m1T̀j:֓ե3M:ڮK٠A2t:;~ևi:JVX '>CN~cP[;BsZjMD9 +ú :K)c~[ Tj2էVXK!\9fKW U] D@U le:?ʌ S񙘅 I.f ]E7' Y9'^RPٮ ڜ B8GVhb0v,=F񵨿·nFC "ph:dCKa[ qKTc ʿgtw.S 2*8Dan啴 J0VH g ԣmiSܠ /ێsK^ufMҒ%xiS̺v[]y{X>J8=b4< 5:20d ;VĩB(IdH.2KN%& V$*h]2ھx }f2IxmPVţ|J9fPy̖<=*oD2Jyo=7ωS!H֕i&1v s=V_ !sn +-r\0s̚yA駱5i#f0oUr E኷uTYd(e.֔6m?.+R^6)X?y'8KksZH_7?Cf^7E|sIBnrRX*«t ~+K%$2q8@ >U V%&.?Mpy:n@;Nj܊k\eJC]Fӟ񜨗jK8{jt X|2-:sǜyUm΅6ūKs, ߝHՎJc4&H2?r&Œ`^r9Toc QYlj@jnX[k BTG ՁdڈRʪRȞ(<6"p9/+T GkYڴf3\:gpk(Hcs<0a*qEb2&bXIQ+1$ FTe4$`@hi\d+ʷ2̤:maE6Οv(y_ ׅG@**Z$Js4Tz:y`.x_ $vw߁T(ST^ИɛJ vI/9=UC#`߬2姒-6;vˇK,ÐM-]|)K@6M, O.֤] LהXҗv\4 U ]2%VK=L{ ܑDh"δ6pH!@&iWܪ.&"1$*[AP7id=<:rS &u|Ro6ur٧!FhD,}M}Wh*/j:yUR'J?;Uw.PZ#J~ulo4N{cvnqӂO0rtn$G/ĉAue˧ @' A"VAQ$F8#bw (DAF& mtib'ذ%b씑QFni򪽑\cKw2(.KPaI*IE`m"TW? JUP@i 4Jhb"nQl5A]ܪZ}5J^C.TS9ZB$MIu0e,_9<㠔 c):{^ErP׶lP!us=D}JT {ΝBĈ*4ٷ$&\S8aS?e`5|5JAf/P4:WXR\2ڮxvC5hР O4^AxHBա68Y]Hu9Wl[ p8?ޗ1]z@l)( %o*tfV,d#d*U8B6АQpDJ| yܸK󅝃W߆W=-[^˜1cqbɱ3D?[^n̘AwIM|f-D6ǓWI1W"0 Olr!^TRJ[f`˃:'.Z ,˘2#8r"<G,HAhu40 lq'uawsaupHx- 6, 3 tJ12I}? cƌo~iw.D˶?vr!0 ظe,#sax&!j.C;9B %VUx~VhSYˁPH oO0ti`4"u w[oȗMV*m* 06S; L Р> ؈q]Ǩb-ԙ 'V`/zI5aûC\[um}gnvU:ӂ{Q")$ֵȷSIa% Jw6h`2B_;Jhp:w{t]@ Ʃ/Oti;m01bvZ[,l[uguZ{i9(f"!I&KEnz7Qdΐ`|PsYow`t~%mb!s4$`E'Ϳϛ7t\xu­ނua,z1}t,9f 84L?ʕ[flݺcƌYpSOEOO5Elz)xxGҖ-?nΙ3N? K-l2gy_/x}9L<gq:= K;v[nW`bLya831k aS˿-<30nq\~Ju;3e @]- B:"do%A!4h0:*K֘ ˆ0xGQ^q31Ld&z QDr0N صaAʸU;J.r熀FW%&iJ_iw #+9lKb,dy*le[u%T\|`d8R(y3H_u, +^};w_*6=4?> ;ȝj VB;aqYJkpD+ [a\Jنam萧SV:<'#O<9ZQ-=1Qnv9ڽƹ"t7rljC.3ֳɲzN{Ja RILOH{3fAn8'3RoTV/iWSC/TpĊОIEjHojWy_7⇠\CT]|gEoؕ <T2uFi_f~R*bcʷ{ ]a6?0sp+.AmHL m}<~.1}xwUYB8d"&˗-ϯYvnխx "T|A|8p"ܹ[l^<#83ӃGXr%`y瞋͟7```;wŽq̢ZkI<׬ ޼ϝ</"c׮]c▜[֬]9gcm蕫Va̙3{}sfzsͷݎ{Mp9gԓNĶ /`pp6nęܺdCs}o0,y)g3<9Hg(/K*'_>v$ʑ HS.(SnCY]GRQKg"NqAXIMvF_K{Ib'\R|3){'\];wǷn݊{/fΚw^.t[nȿdo>/~!,Z}Y?<,X9g^|%y]uv܉;v;8~i4=P޽ p`]܍mUOY3gbp`/c oKO8Koin~cݻMxw.ƎY_? p:0 -mg}88d(mWw!f<$!ien&LHo:nРhVw$2Lq5zkM+ͩ$?^[k41y8Ns{g%|_NPS1Cs& U ۤ,w!?g:`{l; s k_&*?O;D] ?ӅTGr@[G4$Cw!8_lmu谍:;逸z;8,[Z qlyOu|ⓟD?w߅ヒ'h"̘13fuvZg6cj{0nx̘qjzV̛;őGٳfm̞Y3gzz{qcrp سg /9&?*oG\\p!_|sCٳCٳ0~8k;8wBӍE1,ٔ&VC}~գz~^1)αd{9Ɖ$1+r`^ 51j]\leJgS*v l$`6c 04;"_v]鴜-b;RZJE)` wb9\c0q"bzH;pϽ i_˗cزu 7W5k6nh=xrFlfΘ\9sKhC Og#_+.{]o}0007oƔIۼ  Fէ 渻#dUY =)mhH58q"=X׿z!3I_w/vڅyʕzzzO} cƌʼpQGѕtď1[lKŎSt|IoΝ;108/GO>9, $fك;[=rlNf4ׇY3H }`9~Ն:dc:n.bzfhw4hЍ72o7;V t;x4DRcQQѦþmU)Ʒ}[ѕ;?UH7N$3PXSsHѐQ>yo3uk[Ƌ/`[6?p̒%8-n]|/_fPK1}tvV>W݆_vʕYeM:\|1~Ck=0{Lyɓ'oz꫱{l߾g0

    k;k⡺#Vy&jNCIadu&#eɺb~Wp&尻AXTB~C܀m۶ӦN/9~쳽n\rpGoÆ}vL0/g};߉k˗-1}t{H@831g|-xbjl۶ 9c,^3O? c->ͷѕ+K/aq;g?/o_Oo~{0ip80y֦  (mS[#7ipwzsw{@;BvbXi_@6<4WQutK̮lkk񑏡A;;< _N^4I& *F7h#kƈ xIڻg9r*/ U@PE^o:G u[u<n1|;|s޿gϞDgiA󬃟'T?ŎڙI#B/Z$Ab.bBة"QS>F4LKڨ\9W7eW5R׽^JMuѺ}LTy=N`\;^&"YYU).EİYT_lRElI[֧z5uߢ@VR|_kG:p#,! L pe$QZ V^ ' 7q+IIBہE 2~2eF0^qR̙huT~\@֛51L~..?VH/*i+T;?3CwN^5dһ R_,MMçԣ@3wd-+&49B\k#+Vgv+!i֝u23errSQRez^$||wtH;K̤aB/0BׅxY:ݏ\PM|rvȶ;Mj7!H|3B`ҶvmK9}u":_Py'\ (/܄^}c4B'{5R7apTy2BVǸەݼAMs4}fLKB;mT ګUp7 Sr6iv*t/EoH@n^׽1 pWxވ 9`)/pJK0Fe<~ow-2M3+CB;eeCʛ R_,MgFS9ԣ@4$`0EXVy9,T/v3[v,_ 6U"o-(W5QPb~,}CRx$5z>7 )ә[`s8lѷ[)gdJ>LLr̂Mn7MCΌnLf.3 Nd2}tF"@QsjP%js˦Hؘav%Jv)MCN`oO$JA2׋}@3]:LV@Q %}!>P33DМXJ6׆ɦ5 wsH! l m'#;cnݲн&Hfvl#qCiC>lf ćsڪ)$ u灃yC|/1dGvyYl\mj鬼/ĹL32*ןy x '.7B*·e b5! ᫕%tԠ#H@JumNh|2kc[AS}aPS*А]Zc``zp(YkSs#jɲ\dظ`16.t̥'GHsᆐ ɟiSγC%Gpc*]]%@ant坈XDXB !;r 1$` WQ5729 AT*"J@bܥ9umV< BYLE;o"k< ؙR$Cy L! ':&#bꙫF%ҦGL˚L!ICC[Wͦ ڼga&|u@?c'OäDi rJmS R&(A@@w"냧8p$-uW5B- q)m(Y]]=>dw-mol2ƑV2p3AiYWdmu &y{Î- ,''IEQ]#B$;օkkh4 %sL}dҘ5WFWD\ *d\Q0FE56'8"UՅBm`T^$Z\eoANDA^@! hxֹqJ),l.ZQo~^?}Y`4hoRTY YyfA깈踐l eY4dQyĕ$C!uu.ـmTphub[S5 c{A3LTf.?_$ B.r340۶a6L6+OLy?LSx6 ǟ&3_,]îyHP9S'#ƗNd\V" YA큶k Lh!ɽF!e-qZm4TТ0b"0N882˪91C{EeE2S*_feNY/@'1`#tj@R$$+L-W=K4_4?nٍJ>:@zc5wq!u~mf0Y3QhC{ЄP=l09IR{Id`!ViP8.bI 'L3gC >pҮ?8u;YlG?,aS,D3#vVtR_Rw-&PZd21۬;@E%}y%2s]_!/N+ѧ0N}z9|TZenPZ "\F3@ٰeJq7 IDATS"ZK)}"$u?$GX$EqE.N5L%+N*`f0w/ ]*i!W Tx Xyn+^=fQiX j:_i+VDe1gЭ MF`N_@j"[0ԶaF 9T%;?QjO\.:?ohD/(P ւ7 O #&e -C z/ߗ ~[|dB0\gQr~ct }`^Ʒ'p0x6OРME1uBdDg*X= b( e'_L>>&Q^}p0V^~+xa'q<" >;󏗈ݑǗN0.z4ǭLB⶞ W-\K뜔t7UC+C{8ɧf*ۦA܉/뺳f;'lj>DI BwӐd !͛x S?unPo+y [ޮCb<uE&_7y0(-<3 uIR6x6spzLp/2#PJ@n/fD&tɎ0Ad^Id%Cr(E8qoP䭘f=O(0P:ZSH޼z8X@b]$$8 .|2sߧ N١+^TrҔ}U5ݝu]fu.˜ïl9vC8̓zIOoM R9𒮄ݽ|,`6]> .*UF }.Q\co8b)!AQ\$b'DtАW48Q3LģFN8`]8x{Uj&Mu>}?\SߑzW$_j|/"E MKʈePfxRձrCzEN=s\OnYVy&a&q(jTlHH@o( K2-w{I^Bhpo(aQ!)]zdܯE>pw3@Ix 3_H2_/n49. gģY۷usRϧ`b՟2x1} nW,uE4"T!IIزްRGBR›L5,JdgB"> 6iٚZ;WF%p"CK:@MNB6~`GDSƍWfXY+{R*^b3#å0'H3<}DUe#027sJ0[־:=D|K7E޼L]8$`HAP Ϫa"c2K$Xb!\W|*Gd%̱hOgu ʻ:OF|t&agaO΂Nϵ_A@0;LOtF(E Eb pZŃ k-3+',&*  3vKA@3F@O9ƂmNJ˯9ipf`ObEi[/q)J| \Ģ a(dm5F|% I)I' V"M%X0hG%qAŸLH%c !O(KN IzEnF] j0z $`# Ǟ7_XQ9Kt:2X/2Dc7hX{ ) ȃTj[zI Fva'q Ho1vղV?Np*gy"0Wxe&MȆNNпJ*j`2!!U2EOl|I98)v&R&lz~ O\_3 F1ݴj3*CZ%bJ͙sT~zAQ A(`4[ ݟF{rF{*BX3ǹ#/r/dW X E04DAs bŋn<1G+S!fbuSaƽ`!#F8 Ms#mA¶+exhe +qkn)E>PnغAS6PeQwN,IᔙF¶mlJ!F)A6fXJl `&}厠XI)(` ,tQC,(XK,'aAvXԄMNj# 6ʊ,A7E=,& A:`Cㆺ~!tG5xR/)-ԡ5=X]hs r ܽ@IAPC <4J1c1HoLӄm[[GHqkV L^ݱ\074Zn=R]S9;R@.&I~,Fm⥎^twDžScQA_#x&aF +- eY(PI `EM%d+Y7@IIJaCQwxU;9ܴCwݤSA"~ v#/C6U繬Bz!BUrF h+ 52)cF@Wx 'ĞCb/CzHP8-s:83#t\vqĐ/ca`l4@0Ճ΁APDX_Tg8 7#HCDzAiPJQeatn=X40P frظq ^\Q~,Y|sǏF \fJ xHcSXaOW &vf0MLC3XnZXR9@(vi{vv+EWH9 '2nyXl!{)zC<-HﶂG,cy '_Uh#RCCCCcdX B)(5@jXOStmTuG64 Jw_թO:/}oY*eTTph|>G}l 11RPjaj|'E>Μ>ZBH A0cޗP*͡h1NsL&ƳVdW/lǹ; Ëq,2^tbb(ۅ’e8ك$WZD} LeE)j'̋OWɌ̖z!1Eц0XA甂1Lj M( r:计$46 /Gn ~;"UhNo8V(P$@cKný$5agPZ H~d{pgh^\g9bΞ- eO, V@jQ_.7k@CdK:8$6AFP՘@UB1 yȹZp؈W|CZK-„$bc,%] |lwEQ_) ԶSA Ux&[Z1)#э*Bld]9n}B"n,R..6Mؕϊ0'P4ŕvq:x۬b}ИP[m Q :L;&vH&F!+6x"(3CJ@+r`:cP +mrlD JD6<(3 rsVY(4L R)QaXL`P6 Ȕa"gA1Qya0Ο8v6ƈLtS3Ә3=}(1P2 f $AϲA al#  :@S)LNMaLp Èz TqWa ;?zzF*Rbs=l5 ˗Fเ2+8@-7 tD~CHFAv ej;V-p6Ԋ>CT&QƵms@f4j^.2̫z, ҧU$}CD(A򳘙ۋsg;=J %̦2xw mdQDe@Z y):;{aQJ5Nb|| BTA:+,)t`rr l%bm!!b4F41]4>XՍEKpv Vd7 PwǗKͰL:b)Jt3$=+`;aД;~A XPKeGpFZt?hs$V=YXA9(v) I!NW#rYȰy2Bz,&7 bfaeX55kF:(G1x 7EYTm mHbh>ٙ-^ۇ. XK(Nfqzfr02f%v @'aTȂb]*PHE @ζ o F3k-P,(r0(5v * ,+g¶^J`U^Hb0l _YGE5v .˰+o)&H5ԣ䟶քv҃!^#wz ##uY"]~N:]:/>@AH'CEȁ^|T'2u*J 3*Y3IHTDԐqdHUNA,;FUKR?7F. WY ί6%W| QYLÊܳOd% b=eǼύ[ͅ{3ܟ:_OItC8۳v /yEJY`2ӓ(#4 g$4s9*twM3XndPEXyD rfx8z;uH:~H&+s]`An4@CVs"Q缞aRA샳5PNTMowƞX%lb,yqqbE a% q>~y} M _0 +~1SOאTu96,B gdK-lِNI"yI"tGVҀ b\1lslYi.;XuKdL4 Q&MA@2)dt ãc(KfёJQ`ޒ G r2S!,I8 adA9;&q: @544&TMerxeMQ(03='UKG / s6䋰EPۆkMnڄj(:TTѷ*#>3I0*ʿ^i]c\^>IYtnYИWc4.V]'GNUDɂp}GVpE9ϮPu~ yr ro ° KCcw"wxTId)9AA5qI61Z˟k˿Xˇ&x>ct6e=(PS%AR9,_ڃ]X* #<{ /݂. jXwa1sgF[mfɻKAPb1y"\NK NbJBrhhhh0S8%1Jʩ\!bPak=*$T4?h$oPY$2hR&CfEHI:eUKJSIy mz2[J,@acqEV-`h^?g,5}Ț@mE(K32\Mbj˘xi CG.-2#ytJP6dN*#$$8ƼAOËL 4 6ju՟&fHX|]".y}[p`TaKBJ-IG١X N0~tR07􃤪[w)R&2 E&ش 8=ZЄygIN[X%K uq!_z5tol 5XCCCc~M&9:ҡ "ϋA꣫^8xFr ~.d y "aCLwx$Z)}-  jp@eF(=4!f(EڤHwPv8Lx\ b~lXp3L3 8I̽t4P(:4n[gˏ&0X^wAQ޴6/Qo mjhhh$f7,j/O:9%*H1Be<e&H=4444>GG3=R?@lnrRhDƛs}U%Xam&:Ta`\kT5I‹A$ 驘^qk$`LL?_ <YF KJRs&!\uW_=9lZ;ˠ0)0i=:{axCw KKyW wm]{" ­ OrYf$:Q'Mʉq%ژLqaK$g\wtl"UL#9 a^7Jb\R}`x"*!56K 0chp Vj-akm0RH APvpZ81BS{x7ד(0'X}JL>l9 9ܔ$ >0&u_#^4]*|1-'ihh,^1?{B4<"-Xpq #.bI֥+NG]zT}({2JFI9p$`#1(P:6d׬FArz< m,zS84T©3Caq ],֯_Azbc⧏xqOT5퉟H[Bx1V6*D6 )"UEFRވAu+AS;C9+77zEIc"*,3A/WQÒ}Gb/ZAi`9Y*݄"@4 8g۠)ٰNL`ft^H @6 'X֛ɱ^>Ǟ026u{aUuYև7\?zcgQ,ڰ %A`虛Aʦln?͟P_k#K}'D{4`k0/@gA.&JqJcCUoLWm K =$h,DH6Gt!!; = >@ylV(YD9g&څɁqE*Fϲ6Uvu{/Ca dLI B!t }&N?ƉA\eK{Jt\q/Y?'16W@( 0`6;ȕ 0m;džX0 jL; .ڢR*+>žlB՘rT<0 OlFr75VJEuuAn% 5ynǽsӨo bb %˂_t.[VTb HQ[VX58o/ORgW\cc]|9 bLHH-ND$;yM2j0v•c\ΐ 6:R.!xgc#عu;-AWg)3ykr g&k% -^l/gNfYU[~^rSڶ6ez .~Ax=*ϔ_Z0V/9U[MU B3;{jv4 $,SӘРdGː g 1Y&esK=2E\+ 5/vgƈ%RY]81[$p<<{4M`S8Fd5Q8l9xIB]Lh)mZ3 W R3MAo2 h_,Ƚ0V𫖊Zx!\;-F6THePI@'8n`U'k$Aq5Yhxןs0 P371=ƹ"G0WqyfSغn(!G042W01Ջ\r=|VOِJ 0095fK?$=w 0>1uW}x6[[ wrhw~{x!tr[nAwgG95JVm7 ;/o܉|/<~t;ibEo:;r%cO?Yl\}X=8(;{0|ADZf3(w ̻J#r?.MFCH`ѬC[|g"d:cĴ z!HLwy[p0?Pq|s[V10ŋTs<]"0<a;txcQteΚ̎\vtbr`<[ի`HO0VaSR#(*)@˲P,*ۂy#@IQV$G4ߨ/jBW+̎/hv` 6R 7by)%/JR<,?<*;09 -{pE+Е3}vsgLp2<< ]^~X\ r 8s Zָif"p>Ad#_$ ;ve(DX)t|OBhO*bso %)QwƋmY ,'nۆ/<}h+ 3inƿds:3&.ڴãصB-aRE)`<ۉ7;R]Ig( K.oྟ?ַQ(q[܎5+WBE|mx[ߌم%/H?p .>xKkVe˱J/]/׻v몝^`= szplXnJ%F2m_!Վl[|5O:$m\ )6 qNlfb)otvתQ'κ mih&SB/yX{bOHV߆ma";_bOܓ:^VT J4 +Z1&ωL,(˧P<5{)uʍma4> ||Zm_#xå;.[a`ܡ}Xevcz] uMa(8*VNŒTׯ]}(Jxi>s~>˗tB6YN;G9W:p9PJ/u&&;/Ҳ,8r$ eRwu_|m݂?_hP5pROǓFM a\kiq#*.($eĤDz-YeT{wK?./FِGJH#.1UQ*QmWN3deK:-D{A޽h%$$EAGgac/ʍHm[ ʩCͼѕNΟʼn3X?J K6{sE\c,{nwqt8gן=w?^ٍcnlwt5(f] }r+m( f",9vQ6=+W֮^,~,GG.SCg2M\Lr3nE)bo*lrgg;qzBW_y'>x?PZBǗK[Y<~)3Vڀh+W^+ mr5v{%bbܚFpw-E8$Sہx'T WK=* chDZ>NhOXϔb7i,=)g'A'1ulE(n@jU2katgA UL`,҅9kg8qfN[W#$J'K(MMìnE -š0݋1مf *G$:;qoMcuOx|W_~y-l*7=7?~-k?Ɲx^˲p׏>l&f2Xf= IDAT5/ًo~ʥۊeSO_Ċe޽x'Y ّS'1:>Eoeo+2 /d1_qBnډA:^@6`5bpaH'Yb#Fݲ-alhW@ |xWʠz}xvkH2bV &1@ܲ](/OL~9Yn1>aX,f|]a>O.<~#o}.<#oy|DNWZ^CW|!-{?.8s,]9??|cǦ 㩐gWlټ+y׼J뭷G0:cGHI 4 hTv76S(0Yg0Ia[ vw n:(}=i\u"|4F& (o/ΦmXdꍫ}{yaXk@"H,l#%` yފ@j˗G_0#\[6mG^,鉶ew~Xz>>Ew,|777 ۦ-'~]݂\.oONbć?K.k 7ހ?X-7܀.=7_> 3ذf5>Cow海FmQ8bPW B$fʉI`^Q@3z-JJ^fL+-~3.N/5&{.1%O~TeL$"n/݃o~Ou}úuG{}7N uCg`5f$L֬#q xZ⊝eБL:k|ᅡE;l%@T1`]7D,!)i&,[څ_y=svdsݰA0`0|_w 5=0m2ZE/T*f7;dbM,7˗S+\!7Ƃ%Bpmnuɸ7Ծ_uN\uE==?.Sؒ)y}*Ƭ|J+ ĄX9q֮j  1caTha3/T1a2\o@ u3J/Pv\u# ֮u019uy_)<ԓbjzJ9Tӧqzh˗v? ɠP(-N%]\uy8t0V>8p~сCa6<QJ8BضWS 8"'ˉ'X{ֱ`I$ۃ}€7lAZ_Ssd u(Oʆ(q1}(L a ~vlY (MJl e|.|H NLm4l'O.Pk;.?OЮ]Jy7}pۛn<|ܼa^޻øcHRذnrzeH?w>ѱQ'Ug%WP,ǟ~ S[W7_Z=~ wc:zeaA|Íddjزi3OpI d28tt+cBOwwp1|╽{Q*0|9x㢋3O߾ugy}?]xW`jj w{^ڳB+.ھݕ3gq?űӃ[o ]rI;q?>9zL׭í7ߌ%Kv'xɧ@pee[scMx? ˶p핯A6e x'JxWLj!INR%5X/p\k(@-B &xjO7 =?GtE+]s'4 `M7\>s  +°gP91 =X~ӵX~[k1!C u'ޛħ;455\ &JW;YS٠_q% FKխܪ#&e2BIwI4NRqH!?`C;"c.|2D>Ğ. h< :;q[߆SBt=ܳCC8=4Lƿ#ůJ xhcCXM+99|y=4VK@d0=k.!1+:ǠceU=LL#L 1Gqe%](tXyo8o-Mc:f`ax[:X^ sQ̎2˖sӯ&`W]S\{kp핯Uf#@8oPLy7_{I&3+e4%Mz Rc%44.rnq1ԸD*ʃGbh*`TAAfqNbUi>?*۲y3 ٳ:{ϿR&n>Yߏ_/!y7~!F*ۂe=- _`9xn{LqEKv N㱧Ŀxqxͷ`\q%JV,[Tib^>zSVcݚ5x1Cf2)EWG'V\B}ƥ_Rӻ=x[ފ|r&xGa-Z@.cO=? 9.{^qex߻ލ|!?161}cҥP*q57bw^xڅx[o믹ss__5xpףCu׼L0GګC:Ye1V>jw0I@&*x,\VC?Y΄ XF),ja°`g 7" KJa&5='q\.XC`L@?/Azi?fB쩙䤭0$瘄g K 5^4e~OY\<[P% ,ц/i~ A4ƶ~xU/5bǐ8+OMV).8 k\я@Ka XBhEew-y뙓ov %$DSHSd[*ll.,UKLٖAUKKE$-% l/}7fI:O p͙{:|i/J움oR*g჏>5x ;59)֛x-nByU^{s+/>߹o wpy !Wqʕ{Xv?opp9t~A3'Oҕ+8za˗059 8u@ ?7o/"3P;OFe<Iaw9( 8xV:>i}ó=wMV^@T™S+FlJR'?y^ė>YPJ#>8\gN^x% 5LH0&Sc; B@Q#ѯD4K rUwPBg*;9)VV(xf .TP,bꮓ:~+o>]߄_ h|Tr8*L8No鉫/ |^Eڱ0~ks|sf~A]ooڮ|x4Pv/"Dg@QD'xOml1lw>CEp0*D$[㾎p 7~` 8чᅦ>^B!?O"a_~5?(x3ԉx5/=g{*q}?p"t =bc}o(;^xĘĨ~}< 0ŀD |$h8>|BAA ZG mn?Ƿ#g'Ѫx#q T_ڮPR4$"0 No 5L52Q~BjBٞ1k*jBS59q[ z-6T1c _w"۸{P*c{{}jWh~7%w~_ZF;|wÿKՕE\~ swK? 2~s=ޯ:}=>ӚCR-\`zj pqj5A S'Oy=Tk5<,e{~\^\DP5ya޵ _xg}Wn2(xO?{ B!D2jrg] :?KbqE{#d"A$O%6 j?M8\\|VOß\@I[iL 4uЭ ?7{SwN@ @IЉP8h!2?}R,f*XDltMVH"1/]2c@*b/\hk#S\jm`=$M 6 a#!O&Oub+E|+Ng so}[Kc= NC/|666/3wݍ;9ae7--4lnf&كWϾ+׮W~#av/,?;'qaa~~;>)89D;'OӋ8z0~~ G)|'QTp +xqp>PJ%A;ßxW|uǭewxcӧ2?S|G>ËW| {8zJp .5,`^}-T5կ=FÏ_|bgLJ.E|/!^&ǎxWoij?{ D_} 'ƙcp5S<#fOA/)VeHȆ*-~QGg\.G$=J1/4 JQPH9^W43ܸkh%$^ W߲ʜۋjj $iN(dJ8,_&v%d˳,Y617RM/e+mC([n6Ua??-qAy$,4V:to5fHv ͔&i֕Aa(~{ao@LQ ѷ{puYcE !-ۣ;*IUb- R$LJqL1]ȟ9:;r nw8^Ǯ3 go|tmq:ξMЭ@x! (Zg_xfJ.Tk j5||"{Aj5r8u3ڏ{Nh N89龻 Sq>67kv_|Qu̧/_2.99~._=Oc2єX~e83Ǐ݋p59v `ksZá}Lrḿ3 / vFJ6fuWDžqbMwHNbeLI)hpgҩ$})Y rhx " < ./Ll (] h XOKXrX{זz|tK˨~| _"d,~!hx>aJEN||bL?fC'?ŽrԹ_)'[߳wxseDg"/|G2SFXH|uۧ ?+N;U"@a} P\0ewH f ڮHMY"q 3i& Ar"xMISdyWՠlD [֒,1 0N=:f#UApZpsPANyn?J3q]o7{clvϝ٪Zwu;+Vր]e{ U5OMLvg/v쉰;)˝߄v[uQuqqlWK/GS'lkRM]Xh,LO} |G@)Ǘ.'/|G*#{b+D4 [{Xp Ao4:S퀓S=~6y^MzE:% \E>KaP{$bFgHr (w:H-82ܥ}o| ypkm-y+[b{S4o"J} @hz񃠕"kSuO( 8?^=&VVpAn4y<σ$p㏱Z~H|^@V8pu8:~z[[xpaуX@^[udٵ }~ VA)şi\v R\W|1'Nvٳ`"\ch7Ryj[4B[!qE}iO6,Acwb*rhp@b< GG?ƃv`~Hd}:#U"4W" $qOrG$ l}p (9(#Y)gpA9?uFH\ͳJ͈^C,}ҽLm%(ᰦy9q8[MVaѼ#tq5KA~Vܗ #&}OgL&ay؛J_L<2vDn\#YM4މẌȌ#f;{ⴎdGDx3}v,;fʹsJޫ}]e.#TCF7ƞ\ATLd'Ǜ{{( pq(Q)Nt6-pªP,35 ]Gc tTBgo./ yJHǢ:8n6`?ֿ~K  ]@<@kn@=A[Gzؗo?ܑ}Pҩٱ>ջeϾC$y;,ȌM7!c_~znj,V\_t}aAg"6aQӖZ bڝhgiǵ [3(&>Y eo-h{|( pi7?DÛ_@,]e% _u=A8hkl.ԉl^y[+-lP_{ ~s]#tIܟʗ*Wdq@mkA20^ 2Cb%BquXc 0+NE"}j^PFދΕ*h21 :c<&E}b mn C%oOፗ3=ZjTI2 2F)} rIR@&orݖB9ddޕaYYBP˜4:=ZL&+-#<+Boqn ;xj `"R)"{ 8 n4pvPv4|KX"5x+Zyn W$K"q,=(Z,рE| $:,W%F{?8ePg6{1ХctHȺ3 4Dj7aCFf$ +ftpՇېK! 7Tm`[hʶ7޲ҘHcx6]4vߖikUTdM;Pr56r`ܶ?M@;@a"j]%9{;‰yJTn ШmāS%zM+E [_.}3X{('_]ƭ뫨o4[ۇdE%^g<wՒLTĉH)H Ah3/H;u= 1-;[$xTj,ui7NVlmkݗqO=l0><)f0yl607GZGMS>*IwKge>)6 N"$ :GŅޔXCݴD*֫y ǁPs)|)8(x(9:]SGQ<tn|?]|+X>իKf Ikl)ȈT`}`}CQD,7y`m#K1ɏ~ Ɗ]m1Fo`؂nգZ7F+#'زEdWTkX0]Q?۟1bMAɎdSU[[kW(BY2}u'1.I@W4n$x,!%jH9ä!(V u,RS)s9zJ bAp+X߆Q.[^ݮ6|r?kIxncB=ӕL<2D`|J5y |^bB|)Mȶ18F?Tl7XE:Ds9/C5vE:e4o Uֱ}m YR$TM6pv'E6ܔI|!ŰHV\<5z 1JqCG^?Y,{Ol]-k6h( Md3#nD !&RHtLc ==`6T1XOdr(8&M.)<0E$;cꅭ;).'sDOo.3= |>_6lm p(sQ5Pq~n_Z  5>!rX)1[Dѧp;ze!(^sM!iB <%%k@=Gnv)8EP=g&+19Yd[Jlp61o&Y7bT(h]la1v(^Ī}& ~MOmDO/{5(~=0^w!c[α)R"ck4FxbكJWwkMoxc+  y?d*~ڣ n&pqj7+jl*ox%Ķ/aC,6 %{*P@(|t;_c^;g Dm!얟mQ[ U +cBp{*7oN+>o2"v d0b0&lzQClV,42{c+ʚ%)fJ,Q:Vh=PCWg]v c( H ޑt-v,BdV(㧇xET \; 0_ ~ M^[{;-]W';>nU^+J,No-[ ;paj _m!EB6q9.B0Y4=jB[JͣE<(<|ࡰ5\p 9]UJCŽ78:9hTV6MSj%3gzc2\͖9)Njh dNDGc~ '}ID14|QI̜TR`ϟL-db[:wCj*0)`LjM(uJBXW3^%O\Ucqr =Q><p(jmn^.NFy+|ŭwEupyjWp{.N/*&UL4(f( @JSsX.WPn\jnp4 qR,8xcAL6kuT.Z_Ǿ5.Fe V 7<p OknTrЀրd E<"f6U \ь݃@qT ϡ0!Nx<x!Kb4m9dz(KP! O2;h1Z ߝH=-מg(ZeKc'O hCPC=ޜΊ!?ۉ͔whӈk`Gx!L:.Y S#UQ_Nl1߈Y'k<7Ce0Rpn!k7 ٝ~+)7H Lx"%,&I?>I׉$yNJiD* Q'M\C<]~PSV+kl1MBfv|yRO]&UANEm-"{f9I1(@QnTf(@aXf޺Ӵs3v.KTCP`qmb նk+W%P4WA(:X.N#ꔂ>!4=B ھCX)VPu 9{viny|<78[}j#i7@"iB\jo ARXˮX8q|2Erue2ncG7ۉrC|Q"2%C鍇B'HEU#tL1s5h ',us%ժs]'<*IbIkX])jM(# ](R(l$a"(V-Ϫ 'gqV9 @YxHUMlWH$ة;L uSʱ E <҆/q7IG Dğk9gn{1 )3 pej[V;Vʨ.jnxEseqm@hm泌Nm'"܁mcYD I<3 lF;xO+#8\-]lky7h _:W`I@ luAuW&gp'OP5[MA T.cPjCl-r=#@'rM{n+~3rbq:O|bgn],MvcdNԵbYkJmrW}6x) ur&tX_yM⃊;з2% xxD1\@CWYx#+\e(ÊȮ!H$hYw۴Obs04ar)DBJQސl#K:0zE& F#id5`w%ZJ[# UќYL[d2w=fcW"=cY0XŶOClX0a۠oPЇq|堬&M[RpQ:5#o@ozS *Fl[NFBfeA%8Hcr:hK5o k"MPE1Iun%dO+y`a!s`a ܮ5A\"jr9\Pdb%),oM.m.;SySU% w)yҽAWӦbpHDjx|ߑF~gzC6KL1*&Wgd@'M,n*.hL<"0i)Wm;JETRڹ']EXN}S *2=C$u!B1]Eb%M䰲UR B)5\Y@#hEPtqrwo+ .4iC2;RyK "4k)bmly~k%֚l7\ʼn B)̻vT0%Qill}9 sjW_2BJ:Ӊ=ђx$*ʧrQ]T&H)e3*O42D:׺!LqН^NډbLs(D=Sf̞wyd}B(:V( c=9PNζ;W6;ܻ0}m)7QsېJϢh3g)w:9 +`H?][Ć7#AU䒌(L~  -U'+"!h"&UE݆V%r FT$9$=栔̻pe u:6%3v)|(,t{҆jv,6–!fމQM}\s0(ŭP>Vެ)>m1Y2Ƣ ._T=f{(MFg> 34kL|\Ns<{7 y1$`_(ť:5: +77Q}୥MLAk[u<`ހO+lۣA/KBP/V@64XHUN'6rft݌z>#F6 b.-.&,lF?Ҽ>ڡl˚Y)Ejuqt97ee eln7 =9> pqu; kD)RRB!A#f'r(Սj٭[U?Ǧm2ltm0GOK*#QoHa|$a-˕CD$Q:RW߈`pHָ! <.Uzɕz]rJ]J\cwFK0xA$c(!WmRlk H66fZM:XBwfCdcx0BvIHZ'/a$A z!ZXF"5f|m_K.7n0=UMWXW* av1$ e'޻ԋ HVhb/?].gatzLKI2=+fdXyDS˗1YJ^-K."%FB꠯5<)0~iɃHv'm]LS'˸Z`LspI➔]A mJ\86Ðe~魧WZ/gJK==DȥD[W b}Aey;v1$ RYS;VK/Cf@; Y ߜgҋ !`۝& #ruں5òO\S!;]HnKW[ywD^NX~wp,iښ)|Mյh6s_b:!H>C P|L9<$SF,okP,zبb'ݻEHRʰqO^4@񲠢粉.U4IedHRK`9~o Im)@QV1?sAZ" <߇)Sَšҳl ƒH]SO*堬 t(2^h6S%b<"̖&_;iz+P-IC@إ'tWq#F͓${vRc=usPz:beH53Mf1H5Q"}51IR8 ؞Q0 \㎽($ }(s QWڊ1v*UW|e](Y `Gnt,G`VKnJBO]k"Z0m["CEC-Hȉ.VWZL ȧ Q\ Д'2Nxa_ hq3`1/'QWo1Qؽp)L暠r1J)wШS4d%l֣A`AdY^ylWʚIᝈL WyMxET7(&I_m/,ߩEc9`NxLBE22?Ɗ1ȲXumF<5H Fo=(/ud!0Wb01QF IU~1zU[Զk()sS4X@l0jEn;^1$F& PN;HwתxDy8*R#S@:$ò+I>lH>/ I)_./],)jԞ3&BP8^.AB|DRz[ORuٰS2Br#cw&*,[nM.ef0[ ~OƼEzoi{.I\h ?~Jp1Vvi!A9/bȵQ}iTU +hHXmR^I93EoI0Ys}8sOsOC)@(vAk`s{|\F; V5Ԇ1\U#זe3TVÈXcZ"꺮[36?~R: C3Dy,[{SLQ[ IDATSV嚁Oը" @uKHEROXʠ"2Ndn?#$%:C,ɔ(\Lv_f4FArtH]6*WػFD6H`ڢfnTb-FCUsdVgGOEi|a ¹cC{)VR̉?Θ9~A; 9R2X_R12F;=l7ɑQ\b> J}3FL ^1+S$Nxv09Jhx<թaeul]z(5b4\)m1 e& u2$o;m\D`Cf MvmUdfYw!~H>c 4jY.CYϺ2l5`#?j‘ G9T&22ǰ6 )7IeQ>+܎,d cQ=-v.!_ׇ>oZ$ XG2$&)ZCY,V +" r-U‰TV.'v_`fІa1fN"È/0@0-/? (3"n{?_ 9LOz3\/d; B p ;K Anj`d) u)ac5NOsa/V"uYq+m-$7J6̒$cAk\VP h EDN Ix^=!m Ǿ&m ׳ʧu+HI\7蠃j@$Lk $U A|'GD(r-LABE-&>Sčt;mcBH[uǮs8[B'kBOE-ƐW[-ټDQ.2[VC@ K$TJ#PKv1" 4 S4CMi&)gh}<d$ )*زP$[~R<>gЯJgs͎KJYC$ Ϩ$$&{h @+S52R$ ^T-)@K*ܫ]s+=ƶΒ(˻Wg}i!y,K!yD A{Qx"/'<+w,+Or9>Ꞣ[U DjdwЧZKI 7cU/VsDצ)ǀLrA?bP^RYǩsYI글Qb% M@9d~ 13 4Ձ8lܝ'{=Ĉ2oم0:9o3ViDo^ ZCysm*.:wfBX 4+5lV1M6+4 /ٴ[nm6G/h[mIˈ~wYB5aF" t+kR?J1j  88#36}rSl,@?NQ3>#NJ%Du㴯2Ғ "K CAEF4OSzAb [m%$ƳIuA0@*NXFhKiG`M3F4$?zꐌ4PJABb_t#Be$"N LjfϚ@i>nv0E2ФUR/F A<>ChM6I8X%W~`{fI2Ǘ:llXWh}jEBFl^L!DP IrFH? Ra8m0}4Pq{?=FLB|:XUfV`8|utT5X2ھR qh|`֍ 1I-z_3:xU囍v!񣹕A h# - EcFO=DAEEH+ʢ{ic ]줜6JEI5bI*qH3ў潓6vM%'.r"MkJ3  j[!kNH$&9<|렳krֲղ~X낡[7;۱ձCTtDbrJ(!_?`$#0_CaIV+ +ޛ[\ȼzUւHXl4 c0/c37`y㏑EaAHZZ[2#c{-[̈sNDF8LU7c)JN(=$J=e}kW,N<=",n_NI4J,MDtICb=kQʛצFsmu'$Pjȗ`QjiEni^g63ҔjN++H܁$5i>Xa_فqs#8"$u`M`G0ȧ+\&rA`@2~Z؉C`A}/CqVՐ$[ A9۞ ppz]]z2"e WQ2|/m60X]o> ş@wR`"էJߥē, P[!3S\̠{3+.rEA7'PQ)0LݔّD8$pmTU<:ԼA$a &ےvJ^r0pG̑]qG$ɯ IJцgtRM|ZتL&cs.hs;%(SmJznQˋdu("Q$Dَqr&S8!qxnjZjuиT\e&"=h$j ϒX'LI^h!$(2ǣӜDLKOf^Snhe+\<̘۶: 1 Ưs);U/YcHb$`(`'</T'Z1 fc1AM4Dz8ՀTHIG';Ui_B[ؾ $D:$`TGhC$ DAP4f(<ԖZzIt\"ߥ1|2њ0%Ħ: {l]<]Z$U:"i 9W%d'$ Y␀fDgH@{DC9eIGDJ!dT6[LHjE"< 1K{ Y | LX44 K]fHDYK(BEلAId3K^BMxMd8ɽIOx3rKdޜjkO0*Ms$ra&zJ/r%~ `fDq&)yH,KhX;;<_2+4$PG|X3#S$*idе N3Ld Kz@7Pkt$5Ӯ%|&7➈`,3x'(ɳ}Ë~86`/AC$!$z2 gQ:0InSO':Dn”PEVXEQ!)USub G*eGc]if}_/ Ȕpu] Îgݕ6C@O8QK-,AӾP EmeSH^([eIT 頬y1Z~z~HkL4hjx؟;AA[c 5N "*pj$F`LQئOPJIRO[ۆJ*C!K56! ! `JMɬݏN{mp %֐ n'{Aɞ&" c)_N9/,q6(1ڕ91ӡlMۓ) I\2ytvAxmJ)&3^,%C³sJ>ַ+?ް`,˪9$}a-rv˪3*@Qp͵LC;$C#"+J@?`Ga CIAHK99Ր7YрmL,B|w#xJPLy=!)I,`hw#h z>aO}Ц4pF=ZDh0QUׂϊ@?f}+"c*n#z мY7~Ml[jdho 3VuYQBoPLiOɛeCG$*]{6R8^ ,Dy$Zyןs+M|8MC˗FTJtI57l ^5qLQ^aےxhC܁=c8fa?FrSL>*+h<;#7M`P4nS40MP ]"~H E]seۮC/ TVnh(Pqc~hd4vL朡sReL|6A΄&Qq2_4 :!ZvWNep@ uxb!#UEFOdZ?`B xIha0]::r."1C όN$0hfA?i(b╗/:'S JY*"/bz«/iLˮ8m '"B' (R EIOǒ{,g>b^#J">ʶ/ܓb94#\zzĊ)a_b(™E0 CDCqۆSp ,3"ܵ#CJ@?Iep Yv}AN:ҿX4tUǸ.`H ;5| 0й&VK!6b09hGu4PE|bҰ;OK7PTgB|%*?eT!}LQ;)sXQGDY2ŠbwDvFɼY0M+#=]*Tb^K)U!F4e,="Dr;)d^"gf&%!eZp5J?5ϟȥ, |MUnMHyIbQ2B_yEoE0e!#&^W!hMQ_7&d{TɊe";],LTmtr-M/k3GT&u^Ze6ň':H@߶ؑYjg0YTèV5{x+yWUCy)Rو $b+2bnX':{t n YۦeګE$Q.BNH 1++źtתmFaK xdzRDb$v=M$ً%\6k.; `}JTf7 $$Ȁ_JbBww dәOōDpYHڋ!J2RWugٵlÁ΄G$he IwΉHz z󕼗f$Hm;ZKlF62bnGr#IOU)QiM)$Qaf) hN; HʮڦHwNR}b\ɽƒؼA/2Nfw!'if(]oI&œ-' )"9 U%bwL#FCbO닐JV1A!ߡ'ѳr$/:KX:9T[,RP#$ }4c*I5f *B_l&,e4Б3mp@*aP3}PG(hnV8F(8#,MLxIP~JD d)İ䓑 zvy$p9$VQ~$5^쬾ނ]93U촰0H| i!5@DNh{oPGzҕv!s% [qt d &Y9rqෑ ZC'N C!y@p@sG?O?^zeZ-auhR^RAۧx ֚ xǮoᓯ§ 8km  )醪i ZNi-k%2:pRX鵁$ۼ(&*VGYΤDsNDa#Z: L9߆3=5\├Q װ8KK21R52t0حA=)wRi9 IDAT 0X-1V 2LVSZjzmLv*%I$ -K^6Ec!דd֏Ψ >jזoÿk 9E)ON>WW-833rsƅ15UA!)>rnwOMOx% Z6.>?kׯwʈ-B"2>A)'PX/5+ʘLP0&>b̕i3,Jy6$xvҸrᶤ6, )4r[u2Vj@_/i {}܌4Y/' /ŠTID4 t 4j&|iDA4x%P(IH@ $`jAh.<|l8gz 8sCҤk[:r9̔(:/xױiLsp AM|km8;Oc\ʿ‹v/&jLT=]6'ɑ LQ>k&p<EP=-<9ɗ([|ol3[$}8~WMpb7Mr~l6pSx8NBhEuRrՃ t@R*>}rUd׬YZD/2$H2cvnȺ XfAxm&@Yљ5;ط$ s#+7-=,b#?&o!u#`#GgcӘxfuϬVA(88s9E=E<uc"_tC@)E1,Kp&t`~cc<4SJQӟm{JC/c$w0Mr}JoJ4 z$|^-Ǭ<$>,",-i(>e `wq7ՍMI8m"kh|RV&?2Dêa-D'P43YU3Ef:fx x-%{oU&ܯb-G ۡؖ`ؖ))+o62SĔ;q:b2  Jc(/~_@qܼype\t nF~B:dgp8\y$-}?uNgh콧>:tȇE} 8p(@LZu|N Wwȹ9vnWZ*PE|9\y*h$Kqy߂8+`/56| H:׊ 眖b 4vaV4縉%zqBG\ӆ~g;TG;Tq^Ǯ%Y TK;dqjr)bp.Dh$-@vн+ϗ"k;Vyy|^nu[ I!-W'!OO8jY*U.gUx'2d}Lv%7Y/KKPG3G% T.alrAybGNk?V_<8rz63wjx6?R6wpTʘ-P&^ٮ'B]g >| nWkxP_[z.)ɗqcT^k|L!iɪQ*%w[CF p}99BfHkI9O? )_nBN!<D.}dÕQJ5n`)ɃzI^!(cZ?6%H;$U3b$aY#zҰ+e%E2䁈Y\NSccdh I-өms,<~dI49äjXӹ3ܥ9@r@Q>|َf/`sk _x |es8^pD&jm\g_{+S.Pt{:hz>6#xi\^g`D|JqumOss(:+ Sxhc++Xk';h3<&yfo@0v*@cn/ߐkʌrPlOU#+s"3 a#6TOGiI+(I<5xq~ljLⰑX]D @K[u/B0f7ӷ̴Df?)3hGQPJܨ`5_&@-֠ΎA*ն qJ| m#A:ʞ+EdF&/8T2nj7 bȆ0:ws@"nI~2&+Q*䰾0t0N:RhW"D k1srr$ib/|Dߴo j"WhpjɵFPg$9 Ҽd4rCw$&_;YLSH Ce ԋV-v;=\`ص>) _[Gj-.L>*W2#$ k_-"<gb0Q]ߵR(dƦbà<Ǘ/\_D]8p-L6xvoa Zmy\fgX(pGߎ+W~SxcK7v.x s-|Iʻ;Xp1< .mְVomny q?);XoέiQhB6;?L{}I1$.%[.W099 P;U4u:{B܃syE1;&:r6Z(:\KpG}4u c(*É3q7=  //O  _;>wıן- 7񥗯H{fE͍mCq(,NVR[-\Y[C.W@1W!X*pRZIN 0%0Ȉl)=/JQ9 #m!P$"IHr?TA_T#?V)jtx]:kF N 9'B7?7TͮhԫƄn`oHkvT R*"PDٷT,4ܟ9i ޥelSqaZIdF, +e4m& iJɆDP}_MPf@EZ6qZoc/\3N໏l|!9]_-u@@pvEm8CPvpucp{f1}րDuMa\H)'隥#cnBI$ 2IVo7 %V!CpzB}RfIZG2UHbbIhF]֯`p`Æ,yLOu}0r&Vb<~6si5hw| Z Z pMK]w*^_*>G={/\4^mP&'Q'? }Z>>zmiu!u<0tr<`]  "|Gqa ̗ (qNmR-F4|Ą@N /lwh">AC4߹&{F;,>ҿ21:VVY"Cɰ.@:;5mjHaӰpyrLIY6bfg$Iv؏`GѳcpYNRf]=9vH)fW+~BSgpi A]'a7n |3xi`ǣ(zzy.q@o."FEh9b'^:L*%p\|[8sh 3Dn67 tN68=񲃙r- TCJ`Ɨom޶y ^e >敷2-0X;#RӵWJ''g LbՕllz }&@cצ]w_{HPjC2*O8B8yi2&DQr<6zϞ cxbh؅`}b2FE&l:4GQ–-oFRRcIg|i] T}$9O#4|P딥Hߑjye{4E.,|':Jeg_ Yug+>EGhQY꼈ԬCn8yU+tPzJHqf1e|H8mDbDcx`^ qV}p o^K]Mnlamkk;U^__s;h;9rn(NCT@._@FV}]&@JZg*. |ꃂM=ԩc/@<>N _}9Tk ,u/6faM`ۣx+`wx7xvТwO)SK%l5j4zjNͳhNءFZesF3K:`a>gN mdH4G=Hi'(0k푤G㇇yh}<;M. -WX'fZlny虡-B!&k&CCmVS͡޺VISA*@Q>$P*\Gj<:t`0z1 V\TK6@~?xeOIN ;;X,'(Z>DžO)6k Fw|0]?cw@WӸPb ڞR@Sàhަ8#)cMq1s=8T(%?N0f8Sl\MNw蠂O$>Uӱ_7aXԹԎ 8/: Z {++gUt$訝:ij7~*M)$oNNׇ3p%FxV鶤!RF` ]Il!%A IDATȶGqP,.N@ANý;5b5b-5P/GL x4=6e9,,6X"@889\t՝ '8wuP9{-7o\OΡ]i^dG[`0Z #YD9їiҳkP2/Ǡͦv(V7ҳ/sar];U%%5S=<ɖX7tj~>6ī%y %GoVVpflHiXTTV4b1V`wD H>t؉NyK|\o5v S޴4C9"7w8B|VǾ4^y%W=L>ع|ج7A={;QÕ.Zx=g1_}򋘛ÛTQ[q =Wv~ h<;v!Z>IJ%Gqc9"-I8OIB/Ìc~s('oGDDCedV8ne*SZB0K}l4xY饚c oNw=PъOC`1i_ "#;U|~YT|.I3c8x姞Ep1 J=լ#W{ޏ3<y\g_K_<>8T9+mG;;GpGSëQ|. 4nX*ʵ iQUnp{/)j|4JNDI fD( Lxq_6NJQ"PnBT(ML ~]EEsfB{瘃&$L-yJs%<n@ k[E;x :vwk{dZK܅NjN) 1[Y`@E n-/6w(˃5Hr=]b)P䷰DxzEE\&'[qS1?5R,#O]Lx _vh6ԷcU-;(@S< v}_|s8rCNsqן%R rͩxjz ʼn)\[^l#;÷_e4EZCA5 -x~"x{d(_G4PA"B\S=ګ9d[1xJ_~% M=!"VSFk*ݹdBt{]-q5TZsoax-Yq"ws) HUA4nWm[zYp/}Gyť6k \]_GƘCQ)8tXQK*9$Ə>q-&Ez8>Xm(8Rp%e6Gq.~W<n](=Tk;Wpj:v󸹵Z |7vp.r459V~B Z rciS%B\pBDrR5J DC4TT37a.p4M\O-jcaVD, fQEVl垖5TSY*Fs TG%Cq65sdeBM+j+3u_xǃ9na"дj;ASWJgя>D}:شQmL6ޑF,Nk+Gq qtӎ+8L QS+l%_H4ԓ!p{'|dVYB1i@SN#ۛv٪\Bؗ$ ]bb0 R2fKb C!3<[]{ BIC\V"*FNYtq+- havعBQM_]K5|Wf;\VPQZ.:JV slH"Dv*A=CS'_mڰaӢwz2V2ZJ&Ah6 Gr7b*rREZ3 4 #gg/ ",NTf &CRd%ݮ4wb!O`C װqQ0?"D'{gd+duT~D[d()̓>4Zu>|8n'G Ip)U8><q՛c0;us[-%[70 KmCuqt-k5_$2 hߝ;-K_yLHն#rрEg7n쒒5l2t l:⽱15os%3>cZ{IW$EDA刅Sy8/)"75[VƐ ugpM$ o6]4n%6hZt#Dzd*F/u ñ&¸c%Ik‚/>vҡIFpc_uYkR Lq_I~WV ('(Dž;ysNq8 A"r.ګS*}B0YO mt%xhwVI-wc# ChRI9c M9ֱbM<ҁ,T姇4<+sG \!U.$܁rqزN&F?3ӮAj}, "ґRc q\;Rw;{xbhvbOCHௌed/^B wXdGEU b#  }ZL{Me+_Č roq@;Q>&%$rKVi>hō< "uԡ f`3>8(Qn&Y,(Vu ~' j 2 8( y|kyp7VѮ5A|˦HB*q cGX>;h{g@_9Í$kKҎH X ^C+_!-K }'iH7N"y%z: γÃAdllK#;hՃe`BDnh&Jʲe5lSC=i1(ⲱ053PGnm,f:QԳ9TG!rтMxPUtT|5iQR`d׾I8OɄQ9&̚{;*IZL+5?8cn( M%D) "F~Eus#QސEB30qtT@gT-Ԓ S Kx )q]Ϥn" CHY&j!,RS3 |=䱜`0w;yhyx9'p.AVى1کvIh{v ͫ@k0޹U?F NLP<QϞq2^"~]>\VM:"Ix!_p2P;. 2-#d\@ ^v@k4sk"/&ljzU!_6JQ ]\BG}=fu+Q'!ZՋl|5&S|aV V m}*ACqp hha&B/ ]d@+!۴18B"SEQF0[_@mw"#c''-4/T <a[ݤZ%3N;RL+0#]w _[8"zYZ{~^(¡- mO Fs2vǫ r(F<vB;#!SGƳWqoMp IDATOo ݚL;Q(Jcp hm  Euf $25DIcR(^ !+`r:)Iϩ@ zIsQ3)K$پN9eufZY;)&$?FC]['De/SJC{Dvu7 !KxAF&/d%;4L!ykhی4Y )Uܙw/qfHpR/U6o >mڃh>rJ"\WRL][0郟4!k!T``7L :+=V\udbai @ JC*q۫ãadYs#o n!hww(@J(} Pv}yRrS={p_G*hE%=u<167uyګ%zb| b  y|އٙA]u+4uȜ:W^~x#o3m3-;UJ=}q")LV[`ao&1b$SK U&тIBJW~-MdɅ eA\ ~s`lj)R: Rer<~ Z6UC3V, ddVml{mTr]adn5d2 l:r.! o>_Gio9ءil֯/ ![h핋*+GgVHHJ[~~;m\,اvvO<{;>ħ/_?ſJl)Yf \>3Q)۔#`6멳a:s,RJP>[3AmCӾl}28K`ğ 2ʖA8?udȳƐ@%lT2S8}F=Kfef AlW#**c FxtU²D` X~ ~/}m~q)i%0U,fnp>V~s(!-spƀOPt9Ņ)y 0q,Ho`uGpz[x_V.^ߩƧ?y;=w~_%ܸ6CVջ#crR>?JOʸcEV`{1p13҇޸-ܙ鿪h9xkŝH1ze$vp8q*G"c]@DZ[I@Yd*Z?h}ܼ.Mۓypaabڭ0! M'@@grx(ݴ$/|z.kl=Тt @w^v 8z13OÓ<#ЄLp][ۡcb@7xKJxCÿ?O ϣh|?^,O~j8}8|G:)g> w?`߮3;/_7J"]߉Ge{ BA&xHJ.:@L(I[J) =.*Y Yľvq //"IV2oZ 1,hs f (6 $[ه]v 6e!e@+5{Lwe&^A~aNZRǡreeSK[En$ έxsqՁ(F%aS(Q] t0yhiL:u ~|;ߎ'5ʯ__v$aLNLg_ /]¿w7};og/u]|/>I|~#Kn??co?7מ~&d3xCя.^-[<0%(.K٘KoTڔX(C{6?WBA+E WLG"*8e ܌ YgW@XiZZV"n듴H1h*: hLWz@y RsӢ r}eFM 9䗦!7ۿo+ӇPh׫5r@!:r<Jp2 }YLMN#O_|fQ;rΜOË/_+Wu,~o$:} Ǐ;NNS=isTX,ʫ`9g 'p{3>^x pgؘXlX%Vv ݕ6htL؞ 3v:w+҂@kYLP3N˗EQn[[jRL07]{5qv)*pÕc2{ض|z@'E3w`(jTcg_枑Lr!+pէ!*W$7)eFsYznbsL%kag)e `:F<O~ |minD|msf-vbeO-.AOA8=w2? 7E nDK)# Gk MEikӍ@0pSOo=``δ Y3ïĉ=w غ[/`N׌3ogiyq"uN~e뜝m̕C`T_wBD9ǹnwٟkɆU些7qUUFƈ!|Hz/ZTQ+k$xcӕW^ݻw$JJJpc)3ᾉ>(DO#DT !$ @kw{_+\PuP,8xptJ8!u.@QF7^)'s-8g, -AAaQƟn7,/#6mݎnlBw)-)n|Q^V-Œ~]0k&/_}q17k1aX|sq܄9c0ReiFI2 E41Y&hN2lzsHuO Z-KzTK0|o"[D\'!(X;sp߲YIN@ྃ?I󮬨;Ņs%MK| ng?N輏RZ1.GVFW%б}/GN,Zuuuص{ttNpQu1<..!P6EiE8=|B(l'tuĥ.)0e\L63\O?GO2@]$ @C;2+PXT+W SfDŘ1(`0/GOBZ^UkqÕ| Nc҄xGر5}S&N|jVr)ʍ?G@ 8h7FZA6Ʀx|6ժ;Lɼ ^*0с(9 Elhqs0:C!5eILwn)MgA54-2{iYx湵겕S{G~_Z˗V]N_!Uc舄Qy23˪|0B{ݷh&MI ϋ"TWAo_UUc<;5'5ɸd8, )\T;* >@|p@N5,kv +JkqF* BOɸډKXy(,-K(.):+kkCGG'fN.[k o ?+RCxϯ\G?} 5A*^{.\3- / !5>tֿ^czqUWw3|>/&[8Z-|w}(;hF"YB2=%Ѫ|,Y>˸_֝2ߐvdW_?+ 2F .̶U4.rp"S) tb!j<_;,id'rdN9Be*"TU5.XXPRim5ͯt@0/<[W!.ͷW4 [| %ܟ[6K|(Xn ~PC*|~.^hikw pߝ`e+s~3ly#~o?BsK cǜLGKVs^[qʕgf̈́P%,m@p7kx/g @ܮ" &%T!ˢ*PC"77xƎ@` 5(),DWO6 NĊiah*5zc@X(*Q]9O ؼ U4BEKdr S/\ˋ*}PT`0(,d e']s/^|5leY3P]U H |c?~*¹ra '>0cd}[;}b ~‹xg@o_MOp7„>eǽ%iV.:PĚx뽥T;1>iX-ɱbRQ!D1W\s,CEQ-Ӱ\*괌ôLm>ll19 i;ϾK3s |Oxd=; imZd>L<u Qx,Xw>x},x8`ڔIgs?PVVG/pҝ)c1;=kIdӘ V 9ief0N  8 e;x1mt|3!$$ܪ #胻ޠ kUx1(q:կ" dד WPBd܁ WH9HInP4h?{.F:n7nop3xjƏß~0~&EKqQҸxFeGO4 !p5-Մa_guBCi2yA6V!c],sr6_|hYR_r[aKhbǾeml+ gi+f%߬q0&rlqQ_;?7<;tY47g.yؼ}+^|ev<'ۍ&44f\ `׋@ RQnsfF]q?q<6i3r)E>{S(eP>$4Y5NvC"kY4JʌBx@칎eEWA5z!#/G7~,z{H(OBUT\0 Tp{ЅC.(* E›rgAJ5\T$P } g^ (%sGoY)\R@ @P\P:whC.zLZ$ Px?{r vXL(LlZ*v~Q[VIa-zJ88>=CD8 ]R"M Cx6,ka @getӞ6E0{olH"<E_څuP,Ϝp!ڻoMp8p`\xqKh8un3N-?&f-͸;qfw{ ~]ce트^{uؽ=ݨĊbN>_ h@(BpuX4a$0gl{s=zQw5jpIttsfttvWGa D͸+x"zw}~-_#;r tt/_ŁCĦ[xqֆĩ(-)^ƟjlĺĩSz>u*V_wTU⯽ @`Emm|$R;[ pE+beN.\vEsR\ ::{6E2G0nڀ9%uYDVU}Z/ro~cxoP0 ¢5%U !Ppp=|ڡP>  2'!@eA?uGzv _ @w>UK7aw֢[0v>ʟn~r l/S./$6'L۾ۙyն_7wl/' I;YZoFʺ/Z{ЬZN%ѿLu $Vj&MruY+TEmwsmMp௹-gx0cO4'c1u::q|\ڗ^ ~L49a==xW?Cߏ܀V$o~֣+j// O8t0f͘eKjq ~DɆciizka̘1xOaݔi8x^;x l|Ź}hmk o3gu>ujƍ{O?^@^6>ƞb3!^Pشe+qFlC{GG\뷑|3#C S &'͆Jt+rK(hg.. Rٶף_1 -xg&Tax: @(_`455aÎ "zm@(|Rb< ;{,bkk7BsrA 2!Ifԭ-*¸ mC}<߅%xߣ{x4f=rie?!қݩ{g7i|My+8Y׺z)T0)ԧEɌHCz8=Z$MZ!2ݫӝA:bbHJV0Ș=b*,zz{u8tΞEQւ3-xoP;UUG>‚B̞;:PpK,7|ޏ;H 3D۹]7Ejꭾ,]kxm6\bXf-˅gCh8y===)&c)ش7 wXXI&b w݃^,Y8س o~g은~ ۶l*+g>ڎnބ,7XpeC#=ή.;cn@0.uW]@/ ߇۶+֝a5._ x'O:Rj lܲ]绱i6\X~lCww7JKqIzOrY=IDAT*i@H I`׫Z0 (a`PđG~S$p^~ .UcPYUŅKAqu9Dѣؿe?C=P Q1"ڏ#^B'r8qWAj(E@Ϗ['~.nB>εvCؿqN@z.Y{eGCY!-[o1bhiv ˕ڪsX gLsxo41l%l9]TMyp\bI!c {t ϧfxLASs3Ě 2y -3<͙9©ӧ#1Yg`j󏓧O$3!jӀ\{;bdi9sQV.[_ysõ1^/&MήXn6ny'nֶpZ  0g,ؽ۴|>._u16nيc@)ո`48(?RE}]P?[//W`Ϫ6 W>\Y4Fb̛7uujdWU().ƙ3(/.G0V؛jj&U>n૞ )UBn *+$l8 (6"|*܁8._7W.pUvt0jSp2]g91u,A&fv'W aޑ%n5c@^H4#ld[}O>PLJn^Cy^O6%C{\Re|/^o- ~֌(-)EeE%PQ^N;3?`|̿Bc6֮J_y W_ӦDEE9kV2|U nv*oؠX;4``6 (> k,~]mO |oܹ >˅cǎgEOoN?W'<'|()BA )P](-S wa% ́p <q'诺޾V[ AJNGP!BC_[!;Tj㑢x} H!cͧ|w-R 7m׎wF9cZDxZCN<;G4zZ{0g[i5 ̳ OM0R:5?-<V0j|رg'h"t;]ˮDѼfLOĩ i|x3[nqiε歛 {/j/L9&M";F3%@kN ?t~?/'V_s}T8ֆ21Qʡ#mv|_&O`9}:{ۅpG{{/H1uӌť_btF F=Wuσ|JhSv[Fd|sK1R^h Ko3_(xQ9s&\ZR+ښ t7T@ ߼`pP o\Sr-;Q"}k;"(ZIc! PA4{ Mۏ կ­!)T PXR@&*UXk=TU͓-g˝zx%qrglȹzW.ݫk(F/rxnLZSe:"ǃ `mK++-himšџzS'Oâpغk;~"eKKJ!@{g~ra{{ *^z/B8|P Q=s{}}XpIlܬ3cNcnj,s8Hxvl{*+!Ӄ'*,_ ooٌmxaLU5*%tb˯āÇa8NjAΩS`LU5VomzxF{geMl|g2cpΝ←AIyÑ0aSw`;U/?`CG/O |on(cG4LeI0ƕW^o мPOEh>P$"<UT~砯d pyP6a_uYU"4Zߎtǻ?oC $Bh8|vC'؎-hihѽ;{=x>@z\8j['7!HGyK>TƏIH`tm$Q՟~KH~ddIZ1N鲺Y,@dM=2eW:nn5x~79/膗#X^uDBIDBG?guV̞{g`n#i]?FJyO@+jÝ6aޜ >ekӍ-;b swgǗ;n\Ey>~0~8ڻ͍;Ҍ?=k6;{vuV&657$_왳 ?.^\[vlµW\+o9nf 467⡿/]@'0iD|#'OOA̞9 'NG0m|oW_{-r /@% 0@׋/W_~i[rL`Ռ4eWB(x(|5$I\( 䢘7en7_ 8Mct U"]g%ץ~T 58P.jor -GLz1ezũN&y̙Xz5Bo3aKß U ./ictxlapuЗg۷FCj+!%Lvw4WHe1-ŚI| Sbn}ɶLee6?k#KP\ &Ljx͔Iↇ !r~Cġ?դTl bw;2 ws`]^*w2,>W`n6yí7G`@FoF#0d'K}+3˥  i1qs7㯻 (ډMJxJ! ƣ`,(B~ E((,Dw"\nOF5>§DpIA)ϞQ%ġԄӧu+T{z}׻h;{E91u/JǩEasuɵC N: _RUGf> S NY `6奈|G`vѴ֭k{iݺGK*.*gP5IM'?LHD%pG:4qUUU>A >.EEEEzj`;nyh"x݅PծJ !PZ᭪ ׯ‰)}ߩ=b@@[[]~E$.&4i&wCuU%l:enTc옪UTTk eea{.L8Ńg8X{RUE j.tv|(8ݴ 0hcb'cunf[|a057>Y4#en2.hE0nOÄ`I%hG>O]&`}a| h6Uj)Lƚ)5?Ifg GiT9'1xi-ڪ 6j)݀d*Nq҈BJAWi}B41٪ h=_x[A@GbɁz ܟ^@Ggg2WUT>hL`Fi{I&YyByS|K )G:.3 NF ht#j5ə}q sTjxJP\~}r<߳O}w>j'{7sj;=Y;+yEw4nIMm&ti֗9s:U C0y7 Fw22́nhğߵKM@wK3̥CB Qrɂ_f8hb9RY~0/ P%A@'A=DW>_m_mZ`4mP XM  q.F#ى;}S^}M@$(hOJ s&>phH`X0aD4yiN3HDDDDDDDN0Mƪ^`Z gT#PΪ)pqFʜ3@Xs`#fMã+ɨc3[Ӆ ͗cX3gձG&V9CY,ڀVƙ5OvU9bM?"""""""R 9lUb`Y9[aҧŻf#"""""""J\@L [g{2#.t~Fi34jZɂ %>(g4M&ϙ 33dMs9h>@ l)U!DDDDDDDDdL釖Ydy)LeNFR Z*qN4v_Vîov{M%g2ҎD+5ԁ@vjH7HDDDDDDDD`v߈ kgtsɂwd~َDDDDDDDDUNvkY|Ń< Ze6~@a*d3HDDDDDDDyFhǙ sس)Up2D`\fN)|Fdl''Y];deʋ r$(ɦQ+/ 1T^4ٵ[/R&cr!`Vɓ2#SMu:FtˈD/k~c𐈈Ft`v;W;.ӝ.cr)@`|FRiOK떈(_8}OQ:;=Ǎ r0P@`v{z˵ODDDDDDDM %: BStj4DDDDDDDDTϗjsa'$3@p*[@N;2'ٚ6+r97m Qve^:̈́Ss@Ij3DFT;H7Qʗ`T6:""""""""2T8 DY fDDDDDDDD;l2Gc@+SeD@I:""""""""J]g*h| `e %"""""""NNk~`t/,$"""""""gνL.|2BDDDDDDD4Ze#PֲuDDDDDDDD4Re+Hi댈( EpnD1ZC\#u=傡ƍ_H^ p߆{Y3ZTTV""""""""3P˧dFAѺDDDDDDDD4Q=6ڗh4u(q]<6W""""""""^q>,0 Q`&uHDDDDDDD} :&"""""""JA>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""")?j/]t uIENDB`ticketbooth-1.2.0/data/blank_poster.jpg000066400000000000000000000154371501006415200201330ustar00rootroot00000000000000JFIF``C     C   )" 82y nU@F=e/_?YE sY@f@pR/?P3`[-s7zi .2+f F Mt)JMUn  `-a,iJ,یYEY@`!A@Z&=qJ b81(?/I8TN/1@]%VyZQGm`Z S* $E`ZTw iMO"&E}>~$.m4ϾE8D6$ɽB%( 1ro`S.:XcK*0P @!"#341,c݊r78Ws y.k,4밼IOX4밼IO+.*("&T 9:N޵,j /u^&daи`/oPlF&tUb \X9ax+78b0FGEx_мLOّR'ƟC(xˮ1ź/2SWbcXz-۫8DTeG"-3ļb&zh3+%z&OTH=؉gt8iMId43%s "nZ*;h&Jơ{:ϣS1p=>TP*yL>[lTö|(2@P=؉gԫ2oҖ4@"{:ϮD)ľgʬ)ȪllNY x*NY x=tӖH++5Y4NjRM9d"H`ԥbaۊҦ:r@C4egM9d w[),r̈́ӖHFyɎ; ,\4Wu}i,$0bry$B0͐~`!_,QW?X?X1!01P"AQq 3@a2#RbB?q/{~襆u<^j߸`VӲ$'y~[vRLu'!]mm;)&NTE{)587VӅgX qe7uFTI[sz [O syӲS4fh皪]>nUe.?ey ~4e&mSͼsO_+n ׋n2=zW]mm;)58A=b3u:v;s8cte&h@R\}}O9AaS-&+iI ʁqge&C"L!=Թ<\3(5.3諓kpr`̠ֈH3듩ee@EyKx ANLVG h4;z8Ү?TXF.q"f}O& h4SɃ2Z *ϧA׏3(5 )?KɃ2Z 8$"gdqFvo0yglY4`̠ֈP }\S0fPkDZu“F(5\fpdqAp}NK1@{{$q@kE V>94P@kUl5$6FG"XgR+!1APQ 0aq@?!giHoBR$Fէ.;\^5OPl=0>M#kx2k>b`|F亼amʑ.">VZr~TԺ^hpX}M'Mm]К H@Rj6Δr]_ aQPɡJOs( Ka"QtcJ9E.>,ȥr-B@G}~PS};J MaQ)uxLEpfc/SºR[T\.jύ1Gu`d"?:X3GDRS\`ni1/3k =/8tE./DqSPpʃ7Ia(]^r[ Drf-Q@Ai*ȥϔ^@ ck/UI@2J2JHTdoGog݇*, %gTdN2.]w aʲ#HIXFI\Wʑh0i3IТO+eFhj+7Nq,7eeq_2g4JOQeAۏc +KI -LvH((`L5 F}QР 8X#Wv?K7D];Qq"uj=QРd` +rꎅ 5/G a@rWУdx2{oG g -acz <@kGΏ7t(Y $j0[:<*N0@kǓ4SؗM]ϊl'                                                                                                                                             !(        0        Ђ      * 0      !`p      8800      ! 0     . 0O" 1     0 0"@     0 0 8,0     0 0     * 0 0 1     0 0 0     ,2 0 0     0 x       C 0       ,0       %9                                                                                                                                                     /P@ 1`0?tc(T=EQGB~4P"q BF(F~+P1@ 0`?о]4.f/B=tйE31PSDiTf2[+!1AQaPq 0@?Jv T}uP Aڪ:3>d~2kgKa-ȲenxPH)4ȲenxtPH)<1Idձl'v.9*X1z&zxFpӧ"ƭz [.] v1W^*R>C&/57*'X\S4@9xijM>k`tMmn<1W^*R&ND%&EʡdEޟ~f蚳CXW}/)W_ 6 Mʜ& : }JπJ$eU;R <ǚC)qz۫T>*R2hDz~T`% #bS8Xv>aCBUE ƆzAMY|r:<ë,%|9NZVf,,.VL D'h`nOn5!CFBULj0"߁($m~  %A&YާL$$c)A0loڀ ;qW WWO64DҭbDL:x3>x|@C*76 X VY'/1 ٿj2Ā(R@rUQ !1Y ,Jʃ:j?A^ g_$x@&5"gJ%]_5KLW q):Q* Jח l/}U 6 ~3vH!D70ߓd L[.sw ڏ2FK͐v/_׿6~Np2\0'SCQ_H|"p/M~Gj #f) )4 v2\_/J-a҅2jݡ^q|˄m@2  Jm?.qlX:]6v`6|\#o.j6 vJdM_*6 %ɾKFA ep@S ~ /-7PH+6 %\#o.!7P&H+6 %\#o.ſd8HH\hS9ވjT`SAKticketbooth-1.2.0/data/blank_still.jpg000066400000000000000000000071651501006415200177450ustar00rootroot00000000000000JFIF``C     C   " 82(CHX8P%V>k6cۉ(]4A@nW3]);NP<8A.yϤ|J[` GG4J{]IiWh 1<ӑޛe.`ShKU@Q(]d,O%ސcu<î,5Pmq@@uՐ{LZ5uZ;|YKdFYDee?Ig( P04"1#*BPb'6I%0M{mY[m ٝ`Qv%6 9+~6~>*dw\tevsULcf` */T6)kˤ;.y q]meYv]#utf:{Nёz?d!G2;$aӲL"G_ !clq2k2jпag|;r%~㬻+.˲쬻(w z+lVf>J#|e |\gh{eOx(R>+mH'hHDFClAkZtgܽ?%n^r7/SjuD[/${WWbXV(Պ5bXV(Պ5bXPm+J????3 1!2PQ "03RqrAaB#b?iDԠؿ}M@( utmfx]ڤw4a+yv[U6~-g1iP6_E?V >^ᆗ;CeCXPh v^SW,g59YrkSTD6ǵhwp쎑Y-;JQoPӺ*+Uti GNª|4\QӢַaÕ+V+i|w⋝%:x5ޕ۲5Ԡ EII;QOvuSi+LN. z'q+Sy;|'ÿ{qpٚ3SfjlM56fٚG`/;+!1APQ a0q?!i ֑Ax Jl%t@iB!vR$0ףi%#͉m)eS 6kޚ3FMPNW O[HT'w%ߚ%;u=)k%퀩X##͓ p++,1[!]]]]V`R/˟y̹> Ki#fI$6î]һåwJ+:Wxt]ҡzQ@ ;                                   4       (0      (0      <,0      003     %C 2     %C 7C 0,     %8 0        0P      *N8                                    @P!1`p?ռtgPl\.*b)08,u ?@ P1`p?k|b845? B( =(5QE+!1AQa Pq0တ? J ֏ F!PH4j\^Ӑ\$WeA 7d-7j2W=G-8q`S=jX5guo-iy3PiЕ65 w a"%Z& D%ڭ )ƌlV'Py*0N^L:CC6Dp o80H!yZgJ @WQ;kkgUO? H8m Qɉ{ _n*e]"`t\h Po= AqG?hŎ'VPZFS,Y~ g柭ޓsө{ɮ7GRqfzP@:CiLUW^  ,79 (.I3.)aބQf(m^hu'RCGIGvK6ݩ_qQNMs>3-Jbxݟ͵wL:K}AB.᯶0'I2םPYB8A)eqLU֐L&%H~6H @`MR)bvq8󼿙f]0 ticketbooth-1.2.0/data/icons/hicolor/scalable/apps/me.iepure.Ticketbooth.svg000066400000000000000000000377141501006415200271230ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/hicolor/symbolic/000077500000000000000000000000001501006415200213275ustar00rootroot00000000000000ticketbooth-1.2.0/data/icons/hicolor/symbolic/apps/000077500000000000000000000000001501006415200222725ustar00rootroot00000000000000ticketbooth-1.2.0/data/icons/hicolor/symbolic/apps/me.iepure.Ticketbooth-symbolic.svg000066400000000000000000000045211501006415200310030ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/hicolor/symbolic/apps/me.iepure.Ticketbooth.Devel-symbolic.svg000066400000000000000000000045211501006415200320410ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/meson.build000066400000000000000000000007621501006415200202160ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later scalable_dir = join_paths('hicolor', 'scalable', 'apps') install_data( join_paths(scalable_dir, ('@0@.svg').format(app_id)), install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) ) symbolic_dir = join_paths('hicolor', 'symbolic', 'apps') install_data( join_paths(symbolic_dir, ('@0@-symbolic.svg').format(app_id)), install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) ) ticketbooth-1.2.0/data/icons/symbolic/000077500000000000000000000000001501006415200176705ustar00rootroot00000000000000ticketbooth-1.2.0/data/icons/symbolic/bell-outline-none-symbolic.svg000066400000000000000000000021771501006415200255670ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/bell-outline-symbolic.svg000066400000000000000000000047551501006415200246360ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/check-plain-symbolic.svg000066400000000000000000000013171501006415200244100ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/check-round-outline-symbolic.svg000066400000000000000000000062501501006415200261120ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/document-edit-symbolic.svg000066400000000000000000000010761501006415200247750ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/floppy-symbolic.svg000066400000000000000000000010621501006415200235400ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/hourglass-symbolic.svg000066400000000000000000000045341501006415200242450ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/loupe-symbolic.svg000066400000000000000000000015461501006415200233620ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/movies-symbolic.svg000066400000000000000000000053541501006415200235410ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/network-transmit-receive-symbolic.svg000066400000000000000000000021201501006415200271730ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/plus-symbolic.svg000066400000000000000000000003171501006415200232140ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/right-symbolic.svg000066400000000000000000000007331501006415200233500ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/series-symbolic.svg000066400000000000000000000067311501006415200235310ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/star-large-symbolic.svg000066400000000000000000000045031501006415200242730ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/update-symbolic.svg000066400000000000000000000024421501006415200235140ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/user-trash-symbolic.svg000066400000000000000000000020501501006415200243220ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/view-grid-symbolic.svg000066400000000000000000000013501501006415200241240ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/view-list-symbolic.svg000066400000000000000000000013121501006415200241500ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/warning-symbolic.svg000066400000000000000000000014511501006415200236760ustar00rootroot00000000000000 ticketbooth-1.2.0/data/icons/symbolic/watchlist-symbolic.svg000066400000000000000000000036101501006415200242320ustar00rootroot00000000000000 ticketbooth-1.2.0/data/me.iepure.Ticketbooth.desktop.in000066400000000000000000000005571501006415200231120ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later [Desktop Entry] # TRANSLATORS: do not translate Name=@app_name@ Exec=ticketbooth Icon=@app_id@ Terminal=false Type=Application Categories=AudioVideo;Video;TV;Utility; Keywords=Movies;Films;Shows;TV;Series;Anime;Watch;List;Library; StartupNotify=true X-GNOME-UsesNotifications=true ticketbooth-1.2.0/data/me.iepure.Ticketbooth.gschema.xml.in000066400000000000000000000072231501006415200236440ustar00rootroot00000000000000 1024

    Window width 600 Window height false Window maximized "movies" Active tab true Specifies if the app is run for the first time true Specifies if the database needs an update false Specifies if the app downloaded the required data "added-date-new" View sorting style true Separate watched content from unwatched false Hide watched content false Search bar visibility "title" Search mode '' Search query "auto" App color scheme "en" Language used by TMDB results false "week" Frequency to check for new data on TMDB "1970-01-01" Last autoupdate date "1970-01-01 00:00" Last notification autoupdate date true Clear cache on exit false Use the user's TMDB key '' User's TMDB key ticketbooth-1.2.0/data/me.iepure.Ticketbooth.metainfo.xml.in000066400000000000000000000124741501006415200240430ustar00rootroot00000000000000 @app_id@ CC0-1.0 GPL-3.0-or-later Ticket Booth @app_id@.desktop Keep track of your favorite shows Alessandro Iepure

    Ticket Booth allows you to build your watchlist of movies and TV Shows, keep track of watched titles, and find information about the latest releases.

    Ticket Booth does not allow you to watch or download content. This app uses the TMDB API but is not endorsed or certified by TMDB.

    https://github.com/aleiepure/ticketbooth https://github.com/aleiepure/ticketbooth/issues https://github.com/aleiepure/ticketbooth https://github.com/aleiepure/ticketbooth/blob/main/CONTRIBUTING.md #e28dad #9e4768 keyboard pointing touch 360 https://raw.githubusercontent.com/aleiepure/ticketbooth/main/data/appstream/new1.png Movie Library https://raw.githubusercontent.com/aleiepure/ticketbooth/main/data/appstream/new2.png Movie Details https://raw.githubusercontent.com/aleiepure/ticketbooth/main/data/appstream/new3.png TV Series Library https://raw.githubusercontent.com/aleiepure/ticketbooth/main/data/appstream/new4.png TV Series Details me.iepure.ticketbooth

    What's Changed

    • Added search functionality for notes, overview, and by ID
    • Resolved issue with background stretching during window resizing
    • Sorting now functions correctly when separating watched and unwatched content
    • Improved notification toggle appearance
    • Dialogs now appear after completing import or export
    • Updated to GNOME platform 48
    • UI uses new libadwaita 1.7 widgets
    • Updated translations

    What's Changed

    • Fixed a bug that prevented deleting content from your library (@farao)
    • Fixed a bug that prevented adding content on fresh installs without restarting the app first (@gnesterif)
    • Updated translations

    A huge thanks to all contributors and translators for making this release possible!

    What's Changed

    • Revamped UI with updated widgets, refined theming (@gnesterif), and a fully responsive design for use on smaller devices
    • Stay in the loop with notifications for new releases and updates (thanks to @gnesterif)
    • Find what you're looking by searching by title or genre
    • Keep your library organized by automatically separating watched and unwatched content
    • Take full control of your library with import and export functions
    • Personalize your experience by adding custom notes to your movies and shows
    • Updated translations

    A huge thanks to all contributors and translators for making this release possible!

    Fixed issue that prevented application start with version 1.0.3

    Stability improvements: fixed high peaks utilization and crashing.

    What's Changed

    • Stability improvements
    • Fix spelling errors by @librizzia
    • Translations update

    Fixes issue that prevented the addition of movies with large budgets and revenues.

    First release

    ticketbooth-1.2.0/data/meson.build000066400000000000000000000031441501006415200171000ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later desktop_file = i18n.merge_file( input: configure_file( input: 'me.iepure.Ticketbooth.desktop.in', output: app_id + '.desktop.in', configuration: conf ), output: app_id + '.desktop', type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'applications') ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file]) endif appstream_file = i18n.merge_file( input: configure_file( input: 'me.iepure.Ticketbooth.metainfo.xml.in', output: app_id + '.metainfo.xml.in', configuration: conf ), output: app_id + '.metainfo.xml', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo') ) appstreamcli = find_program('appstreamcli', required: false) if appstreamcli.found() test('Validate appstream file', appstreamcli, args: ['validate', appstream_file]) endif install_data( configure_file( input: 'me.iepure.Ticketbooth.gschema.xml.in', output: app_id + '.gschema.xml', configuration: conf ), install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') ) compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()]) endif subdir('icons') ticketbooth-1.2.0/install/000077500000000000000000000000001501006415200154715ustar00rootroot00000000000000ticketbooth-1.2.0/install/ticketbooth-run-script.in000066400000000000000000000002601501006415200224420ustar00rootroot00000000000000#! /bin/sh # Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later TMDB_KEY="3cea7ff23278a75460ead4d6e2cef9af" exec /app/bin/ticketbooth-bin "$@" ticketbooth-1.2.0/me.iepure.Ticketbooth.Devel.json000066400000000000000000000025401501006415200221240ustar00rootroot00000000000000{ "id": "me.iepure.Ticketbooth.Devel", "runtime": "org.gnome.Platform", "runtime-version": "48", "sdk": "org.gnome.Sdk", "command": "ticketbooth", "separate-locales": false, "finish-args": [ "--share=network", "--share=ipc", "--socket=fallback-x11", "--device=dri", "--socket=wayland", "--talk-name=org.gtk.vfs.*", "--filesystem=xdg-run/gvfsd" ], "cleanup": [ "/include", "/lib/pkgconfig", "/man", "/share/doc", "/share/gtk-doc", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules": [ "pypi-dependencies.json", { "name": "blueprint-compiler", "buildsystem": "meson", "cleanup": [ "*" ], "sources": [ { "type": "git", "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler", "tag": "v0.16.0" } ] }, { "name": "ticketbooth", "buildsystem": "meson", "config-opts": [ "-Dprerelease=true" ], "post-install": [ "mv /app/bin/ticketbooth /app/bin/ticketbooth-bin", "install -Dm755 /app/ticketbooth/ticketbooth-run-script /app/bin/ticketbooth" ], "sources": [ { "type": "git", "url": "https://github.com/aleiepure/ticketbooth", "branch": "main" } ] } ] }ticketbooth-1.2.0/meson.build000066400000000000000000000034011501006415200161630ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later project('ticketbooth', version: '1.2.0', meson_version: '>= 0.62.0', default_options: [ 'warning_level=2', 'werror=false', ], ) i18n = import('i18n') gnome = import('gnome') # Debug info if get_option('prerelease') name_suffix = ' (Development snapshot)' app_id = 'me.iepure.Ticketbooth.Devel' prefix = '/me/iepure/Ticketbooth/Devel' git = find_program('git', required : false) if git.found() git_commit = run_command('git', 'rev-parse', '--short', 'HEAD', check:false).stdout().strip() endif if git_commit == '' version_number = '-Devel' else version_number = 'Git-@0@'.format(git_commit) endif else name_suffix = '' app_id = 'me.iepure.Ticketbooth' prefix = '/me/iepure/Ticketbooth' version_number = meson.project_version() endif # Python setup python = import('python') # Config data conf = configuration_data() conf.set('python', python.find_installation('python3').full_path()) conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir'))) conf.set('pkgdatadir', join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())) conf.set('debug', get_option('prerelease')) conf.set('app_id', app_id) conf.set('version', version_number) conf.set('app_name', 'Ticket Booth@0@'.format(name_suffix)) conf.set('prefix', prefix) subdir('data') subdir('src') subdir('po') install_data( configure_file( input: 'install/ticketbooth-run-script.in', output: 'ticketbooth-run-script', configuration: conf ), install_dir: join_paths(get_option('prefix'), meson.project_name()) ) gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true, ) ticketbooth-1.2.0/meson_options.txt000066400000000000000000000002131501006415200174540ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later option('prerelease', type : 'boolean', value : true) ticketbooth-1.2.0/po/000077500000000000000000000000001501006415200144415ustar00rootroot00000000000000ticketbooth-1.2.0/po/LINGUAS000066400000000000000000000000771501006415200154720ustar00rootroot00000000000000de fr it nb_NO es eu pt pt_BR pl uk hi bg tr nl fa ta fi et ia ticketbooth-1.2.0/po/POTFILES000066400000000000000000000025741501006415200156210ustar00rootroot00000000000000data/me.iepure.Ticketbooth.desktop.in data/me.iepure.Ticketbooth.gschema.xml.in data/me.iepure.Ticketbooth.metainfo.xml.in src/background_queue.py src/main.py src/preferences.py src/window.py src/dialogs/add_manual_dialog.py src/dialogs/add_tmdb_dialog.py src/dialogs/edit_season_dialog.py src/pages/details_page.py src/pages/edit_episode_page.py src/ui/about_dialog.blp src/ui/dialogs/add_manual.blp src/ui/dialogs/add_tmdb.blp src/ui/dialogs/edit_season.blp src/ui/dialogs/message_dialogs.blp src/ui/gtk/help-overlay.blp src/ui/pages/details_page.blp src/ui/pages/edit_episode_page.blp src/ui/preferences.blp src/ui/views/content_view.blp src/ui/views/db_update_view.blp src/ui/views/first_run_view.blp src/ui/views/main_view.blp src/ui/widgets/background_activity_row.blp src/ui/widgets/background_indicator.blp src/ui/widgets/episode_row.blp src/ui/widgets/image_selector.blp src/ui/widgets/poster_button.blp src/ui/widgets/search_result_row.blp src/ui/widgets/season_expander.blp src/ui/widgets/theme_switcher.blp src/ui/window.blp src/views/content_view.py src/views/db_update_view.py src/views/first_run_view.py src/views/main_view.py src/widgets/background_activity_row.py src/widgets/background_indicator.py src/widgets/episode_row.py src/widgets/image_selector.py src/widgets/poster_button.py src/widgets/search_result_row.py src/widgets/season_expander.py src/widgets/theme_switcher.py ticketbooth-1.2.0/po/bg.po000066400000000000000000001150011501006415200153670ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # twlvnn , 2024. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2024-04-08 20:35+0000\n" "Last-Translator: twlvnn \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.5-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Широчина на прозореца" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Височина на прозореца" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Максимизиран прозорец" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Активен подпрозорец" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Дали приложението се изпълнява за първи път" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Дали приложението е свалило необходимите данни" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Дали приложението е свалило необходимите данни" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Показване на стила на сортиране" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Търсене на заглавие" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Цветова схема на приложението" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Език, използван от резултатите на TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Периодa na проверка за нови данни в TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Дата на последно автоматично обновяване" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Дата на последно автоматично обновяване" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Изчистване на кеша при спиране на програмата" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Следете любимите си предавания" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "„Ticket Booth“ ви позволява да съставите списък с филми и сериали, да ги " "следите, и да намирате информация за най-новите издания." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "„Ticket Booth“ не ви позволява да гледате или изтегляте съдържание. Това " "приложение използва програмния интерфейс (API) на „The Movie " "Database“ (TMDB), но не е одобрено от TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Филми" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Сериал" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Сериал" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Отказване" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "Добре" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Няма връзка с мрежата" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Свържете се с Интернет, за да завършите първоначалните настройки." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Изчистване на кеша" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} Заглавия" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Изтриване на всички филми" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Изтриване на всички сериали" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "„Ticket Booth“ в момента заема {total_space:.2f} МБ. Използвайте опциите по-" "долу, за да освободите пространство." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} МБ заети" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Дейности на фона се изпълняват" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Няколко дейности се изпълняват във фона и трябва да приключат преди спиране " "на програмата. Потърсете индикатора в лентата със заглавието, за да " "проверите кога са приключени." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Редактиране на филма" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Редактиране на сериала" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Сезон {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Добавяне на {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Обновяване на {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Сезон" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Гледано" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Маркирайте като гледано" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "Времетраеност (минути)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} Сезон" msgstr[1] "{num} Сезона" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} Сезон" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} Епизод" msgstr[1] "{num} Епизода" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Статус" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Оригинален език" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Оригинално заглавие" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Бюджет" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Приходи" #: src/pages/details_page.py:529 msgid "In Production" msgstr "В производство" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Да" #: src/pages/details_page.py:533 msgid "No" msgstr "Не" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}час(а) {m}мин" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}мин" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Обновява се {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Обновяване на {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Зареждане на метаданните…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Изтриване на {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Това заглавие ще бъде изтрито от списъка ви за гледане." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Отказване" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Изтриване" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Изтриване на {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "twlvnn " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Филм" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Сериал" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Отказване" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Запазване" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Общи" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Заглавие (задължителен)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Дата на издаване" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Жанрове (разделени със запетая)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Времетраеност (минути)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Слоган" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Създадено от" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Преглед" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Сезони (задължителен)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Използвайте бутона +, за да добавите сезони" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Добавяне" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Допълнителна информация" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Бюджет (US$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Приходи (US$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "В производство" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Търсене в „The Movie Database“…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Търсене на заглавие" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Започнете да пишете в лентата за търсене, за да видите списък със съвпадащи " "филми и сериали" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Няма намерени резултати" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Опитайте различно търсене" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Редактиране на сезона" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Епизоди (задължителен)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Използвайте бутона +, за да добавите епизоди" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Изчистване на кеша за данните от търсачката" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "Отказване" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Изчистване на данните" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Изчистване на данните" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Филми" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "Сериал" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Общи" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показване на клавишните комбинации" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Показване на настройките" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Вашият списък за гледане" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Спиране на програмата" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Управление на списъка" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Добавяне на заглавие от TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Добавяне на заглавие ръчно" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Обновяване на списъка" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Основно меню" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} Епизод" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Обновяване на метаданните" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Редактиране" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Изтриване" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Описание" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Сезони" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Настройки" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Относно „Ticket Booth“" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Редактиране на епизода" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Номер на епизода (задължителен)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Настройки" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Изтегляне по избор" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Необходимо е сваляне на 15 КБ. Първоначалното настройване не е свалило " "данните автоматично и затова е активиран режим „Изключен“. Той ще остане " "активен до приключване на първоначалното настройване." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Завършване на настройките" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Режим „Изключен“" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "„Ticket Booth“ може да работи изцяло в режим „Изключен“. Ако решите да " "работите в този режим, някой функции, които изискват достъп до Интернет или " "до програмни интерфейси (API) на трети лица, няма да бъдат достъпни." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Активиране на режим „Изключен“" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider
    contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB предоставя преведени метаданни за повечето съдържание. „Ticket Booth“ " "ще я изтели на предпочитания от вас език, който можете да изберете по-долу. " "В случай че той не е наличен, ще използва американски английски език и след " "това оригиналния език на съдържанието. Ако нито един от двата езика не е " "наличен, низа ще е празен. Моля, помислете дали да не допринесете за TMDB. Отделно се " "извършва автоматично обновяване през избран от вас период." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "TMDB език за резултатите" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Период на обновяване" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Рестартирайте „Ticket Booth“ след тази промяна" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Никога" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Ежедневно" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Ежеседмично" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Ежемесечно" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Запазване" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Съхранение на данни" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Изчистване на кеша при спиране на програмата" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Изчистване на кеша за данните от търсачката" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Изчистване на данните" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Вашият списък за гледане е празен" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "Добавете съдържание с бутона +." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Вашият списък за гледане" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "Гледано" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "Вече е в списъка за гледане" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Използване на режим „Изключен“" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Опитайте отново при следващото стартиране" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Активен подпрозорец" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Добавете заглавие в списъка ви" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Преглед" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "Вашият списък за гледане" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Режим на „Изключен“ е активиран" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Сортиране" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "А-Я" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Я-А" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Дата на добавяне (най-новите първо)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Дата на добавяне (най-старите първо)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Дата на издаване (най-новите първо)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Дата на издаване (най-старите първо)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "Гледано" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Презареждане" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "От „The Movie Database (TMDB)“" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Ръчно" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Дейности на фона" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Няма дейности на фона" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Редактиране на постера" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Изтриване на постера" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Добавяне в списъка за гледане" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Използване на системния стил" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Светъл стил" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Тъмен стил" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Изчаква се достъп до мрежата…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Необходимо е сваляне на 15 КБ. Ако обаче нямате връзка с Интернет или не " "искате да чакате, можете да пропуснете тази стъпка и да продължите в режим " "„Изключен“ без някой функции." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Подготвяне на нещата…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Сваляне на данни" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Филми" #: src/views/main_view.py:146 #, fuzzy msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Автоматично обновяване" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Автоматично обновяване" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "Изтриване на {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Изтриване на {title}?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Всички промени към този епизод ще бъдат изгубени." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "_Изтриване" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Вече е в списъка за гледане" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Този сезон съдържа незапазени метаданни." #, fuzzy #~ msgid "movie" #~ msgstr "Филм" #, fuzzy #~ msgid "movies" #~ msgstr "Филми" #, fuzzy #~ msgid "series" #~ msgstr "Сериал" ticketbooth-1.2.0/po/de.po000066400000000000000000001132471501006415200154010ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Philipp Kiemle , 2023. # Nitin Khalia , 2024. # Traladarer , 2024. # Leo , 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-02-24 12:03+0000\n" "Last-Translator: Leo \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10.1-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Fensterbreite" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Fensterhöhe" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Fenster maximiert" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Aktiver Reiter" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Legt fest, ob die App das erste Mal ausgeführt wird" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "Legt fest, ob die Datenbank eine Aktualisierung benötigt" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Legt fest, ob die App die erforderlichen Daten heruntergeladen hat" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Sortierstil anzeigen" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "Teile gesehene und ungesehene Inhalte" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "Verstehe gesehene Inhalte" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "Suchbarsichtbarkeit" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "Suchmodus" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "Suchanfrage" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Farbschema der Anwendung" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Sprache, die für TMDB-Ergebnisse verwendet wird" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Wie oft auf neue Daten bei TMDB überprüft wird" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Letzte automatische Aktualisierung" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "Letzte automatische Aktualisierung" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Zwischenspeicher beim Beenden löschen" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "Brauche den eigenen TMDB-Schlüssel" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "Eigener TMDB-Schlüssel" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Bleiben Sie auf dem Laufenden über Ihre liebsten Serien" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Ticket Booth ermöglicht Ihnen, eine Merkliste aus Filmen und Serien " "zusammenzustellen, angesehene Titel zu verwalten und Informationen zu " "neuesten Veröffentlichungen zu finden." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Booth erlaubt Ihnen nicht, Inhalte herunterzuladen oder anzusehen. " "Diese Anwendung nutzt die TMDB-Schnittstelle, wird aber nicht von TMDB " "unterstützt oder zertifiziert." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Filme" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Serien" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Serien" #: src/main.py:193 msgid "Confirm Export?" msgstr "Export bestätigen?" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" "Das Exportieren der Bibliothek, kreiert ein Archiv mit all Ihren Daten. Sie " "können diese Daten später wieder importieren, um Ihre Bibliothek " "wiederherzustellen." #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Abbrechen" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "_Exportieren" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "Bibliothek exportieren" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "_OK" #: src/main.py:273 #, fuzzy msgid "Export failed" msgstr "_Exportieren" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "Import bestätigen?" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" "Beim Importieren einer Bibliothek wird diese mit der aktuellen Bibliothek " "zusammengeführt. Dies kann nicht rückgängig gemacht werden. Falls Konflikte " "auftreten werden die neueren Daten behalten." #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "_Importieren" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "Bibliothek importieren" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 #, fuzzy msgid "Import failed" msgstr "_Importieren" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Kein Netzwerk" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "" "Stellen Sie eine Internetverbindung her, um die Einrichtung zu " "vervollständigen." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Zwischenspeicher löschen" # CHECK - Needs plural #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} Titel" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Alle Filme löschen" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Alle Serien löschen" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth benötigt aktuell {total_space:.2f} MB Speicher. Nutzen Sie die " "Optionen unten, um Speicherplatz freizugeben." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB belegt" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Laufende Hintergrundaktivitäten" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Einige Aktivitäten werden im Hintergrund ausgeführt und müssen vor dem " "Schließen beendet werden. Achten Sie auf den Indikator in der Fensterleiste, " "um zu sehen, wann diese abgeschlossen sind." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Film bearbeiten" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Serie bearbeiten" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Staffel {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "»{title}« hinzufügen" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "»{title}« aktualisieren" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Staffel" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Angesehen" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Als angesehen markieren" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "Laufzeit (Minuten)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} Staffel" msgstr[1] "{num} Staffeln" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "Anzahl Staffeln" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} Episode" msgstr[1] "{num} Episoden" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Status" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Originalsprache" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Originaltitel" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Budget" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Einnahmen" #: src/pages/details_page.py:529 msgid "In Production" msgstr "In Produktion" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Ja" #: src/pages/details_page.py:533 msgid "No" msgstr "Nein" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "TMDB ID" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h} h {m} min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m} min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "»{title}« wird aktualisiert" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "»{title}« aktualisieren" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Metadaten werden geladen …" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "»{title}« löschen?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Dieser Titel wird von Ihrer Merkliste gelöscht." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Abbrechen" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Löschen" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "»{title}« löschen" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Einige Icons sind unter dem Copyright des GNOME Project" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Philipp Kiemle " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Serien" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Abbrechen" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Speichern" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Allgemein" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Titel (erforderlich)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Erscheinungsdatum" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Genres (mit Komma getrennt)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Laufzeit (Minuten)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Schlagwort" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Erstellt von" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Übersicht" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Staffeln (erforderlich)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Nutzen Sie den »+«-Knopf, um Staffeln hinzuzufügen" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Hinzufügen" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Zusätzliche Informationen" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budget (US$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Einnahmen (US$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "In Produktion" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "The Movie Database durchsuchen …" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Einen Titel suchen" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Schreiben Sie etwas in die Suchleiste, um eine Liste passender Filme und " "Serien zu sehen" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Keine Ergebnisse gefunden" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Wählen Sie einen anderen Suchbegriff" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Staffel bearbeiten" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Episoden (erforderlich)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Nutzen Sie den »+«-Knopf, um Episoden hinzuzufügen" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Zwischengespeicherte Daten löschen" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" "Diese Aktion löscht alle zwischengespeicherte Daten. Diese werden vielleicht " "wieder heruntergeladen wenn Sie das nächste mal Inhalte von TMDB hinzufügen." #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "Abbrechen" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "Löschen" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Gespeicherte Daten löschen?" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" "Dieser Vorgang löscht die ausgewählten Daten dauerhaft, so dass alle Ihre " "Änderungen verloren gehen." #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "Filme" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "Serien" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Allgemein" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Tastenkürzel anzeigen" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Einstellungen anzeigen" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Durchsuchen Sie Ihre Merkliste" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Beenden" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Bibliotheksverwaltung" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Titel von TMDB hinzufügen" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Titel manuell hinzufügen" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Bibliothek aktualisieren" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Hauptmenü" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "{num} Episoden" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "Sendedatum der nächsten Episode" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Metadaten aktualisieren" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Bearbeiten" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Löschen" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Beschreibung" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Staffeln" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "Notizen" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Einstellungen" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Tastenkürzel" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Info zu Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Episode bearbeiten" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Episodennummer (erforderlich)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Einstellungen" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Optionaler Download" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Für eine vollständige Einrichtung ist ein Download von 15 KB notwendig. Die " "Ersteinrichtung konnte diese Daten nicht automatisch herunterladen, daher " "wurde der Offline-Modus aktiviert. Dieser bleibt aktiv, bis die Einrichtung " "abgeschlossen wird." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Einrichtung abschließen" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Offline-Modus" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth funktioniert auch komplett offline. Wenn Sie diesen Modus " "wählen, sind Funktionen, die eine Internetverbindung oder Zugriff auf " "Schnittstellen Dritter benötigen, nicht verfügbar." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Offline-Modus aktivieren" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB stellt für die meisten Inhalte übersetzte Metadaten bereit. Ticket " "Booth lädt diese in Ihrer bevorzugten Sprache (unten auszuwählen) herunter. " "Falls diese nicht verfügbar sein sollte, wird erst auf Englisch (US) und " "dann auf die Originalsprache des Inhalts zurückgegriffen. Wenn gar nichts " "verfügbar ist, wird eine leere Zeichenkette zurückgegeben. Denken Sie daran: " "Zu TMDB beitragen. Außerdem werden die Inhalte regelmäßig zu einem benutzerdefinierten " "Intervall aktualisiert." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Sprache der TMDB-Ergebnisse" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Aktualisierungsintervall" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Ticket Booth nach dem Ändern neu starten" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Nie" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Tägich" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Wöchentlich" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Monatlich" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "Verwenden Sie Ihren API Schlüssel" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" "Registrieren Sie ihrenhier" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "Ihr API-Schlüssel" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "Schlüssel speichern" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Haushaltung" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Zwischenspeicher beim Beenden löschen" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Zwischengespeicherte Suchdaten löschen" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Daten löschen" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Ihre Merkliste ist leer" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" "Fügen Sie mit dem »+«-Knopf Inhalte hinzu oder importiere eine alte " "Merkliste." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Ihre Merkliste" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "Ungeschaut" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "Aktualisiere die Merkliste" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" "Nach dem Update von Ticket Booth müssen wir ihre lokale Datenbank " "aktualisieren" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Offline-Modus verwenden" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Beim nächsten Mal erneut versuchen" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "Benachrichtigungen aktivieren?" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" "Möchten Sie für alle Serien, die noch in Produktion sind, und für alle " "Filme, die noch nicht erschienen sind, Benachrichtigungen aktivieren?" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "Aktivieren" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "Deaktivieren" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Fügen Sie einen Titel zu Ihrer Bibliothek hinzu" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "Zeige/Verstecke Suchleiste" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Übersicht" #: src/ui/views/main_view.blp:108 #, fuzzy msgctxt "Search mode" msgid "Notes" msgstr "Notizen" #: src/ui/views/main_view.blp:109 #, fuzzy msgctxt "Search mode" msgid "TMDB ID" msgstr "TMDB ID" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "Ihre Merkliste durchsuchen" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Offline-Modus aktiviert" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Sortieren" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Datum hinzugefügt (neueste zuerst)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Datum hinzugefügt (älteste zuerst)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Veröffentlichungsdatum (neueste zuerst)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Veröffentlichungsdatum (älteste zuerst)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "Separiere gesehene von ungesehenen" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "Gesehene verstecken" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Aktualisieren" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "_Importieren" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "_Exportieren" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Von The Movie Database (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manuell" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Hintergrundaktivitäten" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Keine Hintergrundaktivitäten" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Poster bearbeiten" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Poster löschen" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "Diese Serie hat eine Neuerscheinung" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "Diese Serien hat bald eine neue Veröffentlichung" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "Dieser Inhalt ist als gesehen markiert" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Zur Merkliste hinzufügen" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Systemstil folgen" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Heller Stil" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Dunkler Stil" #: src/views/content_view.py:362 msgid "Search results" msgstr "Suchresultate" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Auf Netzwerk warten …" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Für eine vollständige Einrichtung ist ein Download von 15 KB notwendig. Wenn " "Sie allerdings gerade nicht mit dem Internet verbunden sind oder nicht " "warten möchten, können Sie diesen Schritt überspringen und offline, mit " "etwas weniger Funktionen, fortfahren." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Alles wird vorbereitet …" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Daten werden heruntergeladen" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Filme" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Automatische Aktualisierung der Benachrichtigungsliste" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Automatische Aktualisierung" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "Neuerscheinung für {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "Eine neue Episode von {title} erschien vor {days} Tagen." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "Neuerscheinungen für {num} Serien aus ihrer Watchlist" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "Die Serien sind {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "{title} hat bald eine Veröffentlichung" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "Eine neue Folge erscheint in {days} Tagen." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "{num} Serien aus Ihrer Watchlist werden bald eine Neuerscheinung haben" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "{title} wurde eingestellt" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" "{title} ist zu Ende gegangen. Jetzt ist die perfekte Zeit, um deine " "Lieblingsmomente noch einmal zu sehen oder die nächste Folge zu finden!" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "{num} Serien aus Ihrer Watchlist sind eingestellt worden" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "{title} ist erschienen!" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "{title} ist vor {days} Tagen erschienen." #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "{num} Filme aus ihrer Watchlist sind erschienen." #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "Die Filme sind {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "{title} wird bald erscheinen!" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "{title} wird in {days} Tagen erscheinen." #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "{num} Filme aus ihrer Merkliste werden bald erscheinen" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "{num} Elemente aus ihrer Merkliste hatten Aktualisierungen" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "Die Aktualisierungen betreffen {count_movies} Filme" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr " und " #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr " {count_series} Serien" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "Die Aktualisierungen betreffen {count_series} Serien" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "{title} löschen?" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Alle Änderungen an dieser Episode gehen verloren." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "_Löschen" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Bereits auf Ihrer Merkliste" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Diese Staffel enthält ungesicherte Metadaten." #~ msgid "Notify me on new releases" #~ msgstr "Benachrichtige mich über Neuerscheinungen" #, fuzzy #~ msgid "movie" #~ msgstr "Film" #, fuzzy #~ msgid "movies" #~ msgstr "Filme" #, fuzzy #~ msgid "series" #~ msgstr "Serien" #~ msgid "" #~ "Fixes issue that prevented the addition of movies with large budgets and " #~ "revenues." #~ msgstr "" #~ "Behebt einen Fehler, der das Hinzufügen von Filmen mit großen Budgets " #~ "oder Einnahmen verhindert hat." #~ msgid "First release" #~ msgstr "Erste Veröffentlichung" ticketbooth-1.2.0/po/es.po000066400000000000000000001113351501006415200154140ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Óscar Fernández Díaz , 2023. # "Emilio S." , 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-04-14 23:01+0000\n" "Last-Translator: \"Emilio S.\" \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Anchura de la ventana" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Altura de la ventana" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Ventana maximizada" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Pestaña activa" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Especifica si la aplicación se ejecuta por primera vez" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Especifica si la aplicación ha descargado los datos necesarios" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Especifica si la aplicación ha descargado los datos necesarios" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Estilo de clasificación de la vista" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "Separa los contenidos vistos de los no vistos" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "Ocultar contenido ya visto" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "Visibilidad de la barra de búsqueda" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "Modo de búsqueda" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Esquema de colores de la aplicación" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Idioma usado por los resultados de TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Frecuencia de comprobación de datos nuevos en TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Última fecha de actualización automática" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "Última fecha de notificación de actualización automática" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Limpiar caché al salir" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "No pierda de vista sus programas favoritos" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Ticket Booth le permite crear su lista de películas y programas de TV, " "llevar un registro de los títulos vistos y encontrar información sobre los " "últimos estrenos." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Booth no permite ver ni descargar contenidos. Esta aplicación usa la " "API de TMDB, pero no está avalada ni certificada por TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Películas" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Series de TV" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Series de TV" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Cancelar" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "_Exportar" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "Exportar biblioteca" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "_Aceptar" #: src/main.py:273 #, fuzzy msgid "Export failed" msgstr "_Exportar" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "¿Confirmar la importación?" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 #, fuzzy msgid "Import failed" msgstr "_Importar" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Sin conexión a la red" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Conéctese a Internet para completar la configuración." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Limpiar caché" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} títulos" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Eliminar todas las películas" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Eliminar todas las series de TV" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth usa actualmente {total_space:.2f} MB. Use las opciones a " "continuación para liberar algo de espacio." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB ocupados" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Actividades en segundo plano en ejecución" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Algunas actividades se ejecutan en segundo plano y deben completarse antes " "de salir. Busque el indicador en la barra de cabecera para comprobar cuándo " "han terminado." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Editar película" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Editar serie de TV" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Temporada {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Añadir {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Actualizar {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Temporada" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Visto" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Marcar como visto" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "Duración de la película" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} temporada" msgstr[1] "{num} temporadas" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "Número de temporadas" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} episodio" msgstr[1] "{num} episodios" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Estado" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Idioma original" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Título original" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Presupuesto" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Ingresos" #: src/pages/details_page.py:529 msgid "In Production" msgstr "En producción" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Sí" #: src/pages/details_page.py:533 msgid "No" msgstr "No" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "ID de TMDB" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}h {m}min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Actualizando {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Actualizar {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Cargando metadatos…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "¿Eliminar {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Este título se eliminará de su lista de seguimiento." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Cancelar" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Eliminar" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Eliminar {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Algunos íconos están bajo el copyright del proyecto GNOME" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Óscar Fernández Díaz " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Película" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Series de TV" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Cancelar" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Guardar" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "General" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Título (requerido)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Fecha de lanzamiento" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Géneros (separados por comas)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Duración (minutos)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Eslogan" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Creado por" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Vista general" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Temporadas (requerido)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Use el botón + para añadir temporadas" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Añadir" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Información adicional" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Presupuesto (USD)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Ingresos (USD)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "En producción" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Buscar en The Movie Database…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Buscar un título" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Empiece a escribir en la barra de búsqueda para ver una lista de películas y " "series de TV coincidentes" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "No se han encontrado resultados" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Intente otra búsqueda" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Editar temporada" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Episodios (requerido)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Use el botón + para añadir episodios" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "¿Limpiar los datos en caché?" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "Cancelar" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "Limpiar" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "¿Limpiar los datos guardados?" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "Películas" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "Series de TV" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "General" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar atajos" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Mostrar preferencias" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Su lista de seguimiento" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Salir" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Gestión de la biblioteca" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Añadir título de TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Añadir título manualmente" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Refrescar biblioteca" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Menú principal" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} episodio" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "Fecha de emisión del próximo episodio" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Actualizar metadatos" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Editar" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Eliminar" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Descripción" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Temporadas" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "Notas" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Preferencias" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "Atajos del _teclado" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Acerca de Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Editar episodio" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Número de episodio (requerido)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Preferencias" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Descarga opcional" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Para una experiencia completa, se requiere una descarga de 15 KB. La " "configuración inicial no ha podido recuperar los datos automáticamente, por " "lo que se ha activado el modo sin conexión. Permanecerá activo hasta que " "finalice la configuración." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Completar la configuración" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Modo sin conexión" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth puede funcionar completamente sin conexión. Si elige funcionar " "en este modo, algunas funciones que requieren Internet y/o acceso a API de " "terceros no estarán disponibles." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Activar el modo sin conexión" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB proporciona metadatos localizados para la mayoría de los contenidos. " "Ticket Booth los descargará en su idioma preferido, que puede seleccionar a " "continuación. En caso de que no esté disponible, pasará al inglés de EE.UU. " "y, a continuación, al idioma original del contenido. Si ninguno de los dos " "está disponible, el resultado será una cadena en blanco. Por favor, " "considere contribuir " "a TMDB. Además, se realiza una actualización automática con la " "frecuencia que elija." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Idioma de los resultados de TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Frecuencia de actualización" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Reinicie Ticket Booth después de cambiar" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Nunca" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Diario" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Semanal" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Mensual" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "Usa tu clave API" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" "Registra la tuya aquí" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "Tu clave API" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "Guardar clave" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Servicio de limpieza" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Limpiar caché al salir" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Limpiar datos de búsqueda en caché" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Limpiar datos" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Su lista de seguimiento está vacía" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "Añada contenido con el botón +." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Su lista de seguimiento" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "No visto" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "Actualizando su lista de seguimiento" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" "Después de actualizar Ticket Booth necesitamos actualizar las entradas de la " "base de datos local" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Usar el modo sin conexión" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Inténtelo de nuevo en la próxima ejecución" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "¿Activar las notificaciones?" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "Activar" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "Desactivar" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Añada un título a su biblioteca" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "Mostrar/ocultar la barra de búsqueda" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Vista general" #: src/ui/views/main_view.blp:108 #, fuzzy msgctxt "Search mode" msgid "Notes" msgstr "Notas" #: src/ui/views/main_view.blp:109 #, fuzzy msgctxt "Search mode" msgid "TMDB ID" msgstr "ID de TMDB" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "Tu lista de seguimiento" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Modo sin conexión activado" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Ordenación" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Fecha de adición (la más reciente primero)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Fecha de adición (la más antigua primero)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Fecha de lanzamiento (la más reciente primero)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Fecha de lanzamiento (la más antigua primero)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "Separar contenidos vistos de los no vistos" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "Ocultar ya vistos" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Refrescar" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "_Importar" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "_Exportar" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "De The Movie Database (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manualmente" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Actividades en segundo plano" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Sin actividades de segundo plano" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Editar póster" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Eliminar póster" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Añadir a la lista de seguimiento" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Seguir el estilo del sistema" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Estilo claro" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Estilo oscuro" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Esperando a la red…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Para una experiencia completa, se requiere una descarga de 15 KB. Sin " "embargo, si no está conectado a Internet o no quiere esperar, puede omitir " "este paso y continuar sin conexión sin algunas funciones." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Preparando todo…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Descargando datos" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Películas" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Actualización automática de la lista de notificaciones" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Actualización automática" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "Nuevo estreno para {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "Las series de TV son {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "{title} próximamente tendrá un nuevo lanzamiento" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "Un nuevo episodio será estrenado en {days} días." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" "{num} series de TV en su lista de seguimiento tendrán próximamente un nuevo " "episodio" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "{title} ya no está en producción" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "¡{title} ha tenido su estreno!" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "{title} fue estrenado hace {days} días." #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "Las películas son {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "¡{title} se estrenará pronto!" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "{title} tendrá su estreno en {days} días." #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "Estas actualizaciones afectan a {count_movies} películas" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr " y " #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr " {count_series} serie(s) de TV" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "¿Eliminar {title}?" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Todos los cambios a este episodio se perderán." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "_Eliminar" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Ya está en su lista de seguimiento" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Esta temporada contiene metadatos no guardados." #~ msgid "Notify me on new releases" #~ msgstr "Notifícame de nuevos lanzamientos" #, fuzzy #~ msgid "movie" #~ msgstr "Película" #, fuzzy #~ msgid "movies" #~ msgstr "Películas" #, fuzzy #~ msgid "series" #~ msgstr "Series de TV" #~ msgid "" #~ "Fixes issue that prevented the addition of movies with large budgets and " #~ "revenues." #~ msgstr "" #~ "Soluciona un problema que impedía añadir películas con grandes " #~ "presupuestos e ingresos." #~ msgid "First release" #~ msgstr "Primera versión" #~ msgctxt "preferences" #~ msgid "" #~ "Ticket Booth can work entirelly offline. If you choose to run in this " #~ "mode, some features that require the Internet and/or access to third " #~ "party APIs will not be available." #~ msgstr "" #~ "Ticket Booth puede funcionar completamente sin conexión. Si elige " #~ "funcionar en este modo, algunas funciones que requieren Internet y/o " #~ "acceso a API de terceros no estarán disponibles." #~ msgctxt "message dialog body" #~ msgid "All cheanges to this episode will be lost." #~ msgstr "Todos los cambios de este episodio se perderán." #~ msgid "Already in your whatchlist" #~ msgstr "Ya está en su lista" ticketbooth-1.2.0/po/et.po000066400000000000000000000743121501006415200154200ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Priit Jõerüüt , 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-04-07 17:05+0000\n" "Last-Translator: Priit Jõerüüt \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Akna laius" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Akna kõrgus" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Aken on maksimaalses vaates" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Aktiivne vahekaart" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Määratleb, kas tegemist on rakenduse esimese käivitamisega" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "Määratleb, kas andmebaas vajab uuendamist" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Määratleb, kas rakendus laadis alla vajalikud andmed" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Vaate järjestusviis" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "Eralda vaadatud sisu mittevaadatust" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "Peida vaadatud sisu" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "Otsinguriba nähtavus" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "Otsinguviis" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "Otsingupäring" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Rakenduse kujundus" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "TMDB päringutulemuste keel" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Päringute sagedus uute andmete tuvastamiseks TMDB teenusest" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Viimase automaatse uuenduse kuupäev" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "Viimase teavituse automaatse uuenduse kuupäev" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Väljumisel kustuta puhverdatud andmed" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "Kasuta TMDB teenuses kasutaja oma võtit" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "Kasutaja võti TMDB teenuses" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Filmid" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Telesarjad" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Telesarjad" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Katkesta" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "_Ekspordi" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "Ekspordin meediakogu" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "S_obib" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "Kas kinnitad importimise?" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" "Meediakogu importimisel mestid ta senise meediakoguga. Seda tegevust ei saa " "tagasi pöörata ning kui uute ja vanade andmete vahel on vastuolu, siis " "säiluvad uued andmed." #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "_Impordi" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "Meediakogu on importimisel" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Võrguühendus puudub" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Paigaldamise lõpetamiseks loo internetiühendus." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Kustuta puhverdatud andmed" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Kustuta kõik filmid" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Kustuta kõik telesarjad" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Muuda filmi" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Muuda telesarja" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "{num}. hooaeg" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Lisa {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Uuenda: {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Hooaeg" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Vaadatud" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Märgi vaadatuks" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "Filmi kestus" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} hooaeg" msgstr[1] "{num} hooaega" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "Hooaegu" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} osa" msgstr[1] "{num} osa" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Olek" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Algne keel" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Algne pealkiri" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Eelarve" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Müügitulud" #: src/pages/details_page.py:529 msgid "In Production" msgstr "Tootmises" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Jah" #: src/pages/details_page.py:533 msgid "No" msgstr "Ei" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "TMDB tunnus" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h} t {m} min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m} min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Laadin metateavet…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Kas kustutame: {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "" #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Katkesta" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Kustuta" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "{title} kustutamine" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Telesarjad" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Katkesta" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Salvesta" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Üldised" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "Filmid" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "Telesarjad" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Üldised" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Näita kiirklahve" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Näita eelistusi" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 msgctxt "Search mode" msgid "Overview" msgstr "" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 #, fuzzy msgctxt "Search mode" msgid "TMDB ID" msgstr "TMDB tunnus" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "" #: src/views/content_view.py:362 msgid "Search results" msgstr "Otsingutulemused" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Filmid" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "Telesarjad on: {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "Filmid on: {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "Need uuendused mõjutavad {count_movies} filmi" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "" #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "" ticketbooth-1.2.0/po/eu.po000066400000000000000000000711651501006415200154240ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Sergio Varela , 2023. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2023-09-26 01:52+0000\n" "Last-Translator: Sergio Varela \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.1-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Leihoaren zabalera" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Leihoaren altuera" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Leiho maximizatua" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 msgid "Movie Details" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 msgid "TV Series Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 msgid "TV Series Details" msgstr "" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "" #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "" msgstr[1] "" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "" msgstr[1] "" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "" #: src/pages/details_page.py:509 msgid "Budget" msgstr "" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "" #: src/pages/details_page.py:529 msgid "In Production" msgstr "" #: src/pages/details_page.py:532 msgid "Yes" msgstr "" #: src/pages/details_page.py:533 msgid "No" msgstr "" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "" #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 msgctxt "Search mode" msgid "Overview" msgstr "" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "" #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "" ticketbooth-1.2.0/po/fa.po000066400000000000000000001106331501006415200153730ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Danial Behzadi , 2024, 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-02-23 09:02+0000\n" "Last-Translator: Danial Behzadi \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.10.1-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "گیشه" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "پهنای پنجره" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "بلندای پنجره" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "پنجره بیشینه شد" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "زبانهٔ فعّال" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "مشخّص می‌کند که آیا کاره برای نخستین بار اجرا می‌شود یا نه" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "مشخّص می‌کند که آیا پایگاه داده نیاز به به‌روز رسانی دارد یا نه" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "مشخّص می‌کند که آیا کاره داده‌های لازم را گرفته یا نه" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "دیدن سبک مرتّب سازی" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "جدا کردن محتوای دیده شده از دیده نشده" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "نهفتن محتوای دیده شده" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "نمایانی نوار جست‌وجو" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "حالت جست‌وجو" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "پرس‌وجوی جست‌وجو" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "طرخوارهٔ رنگ کاره" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "زبان استفاده شده برای نتیجه‌های TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "بسامد بررسی داده‌های جدید روی TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "آخرین داده‌های به‌روز شدهٔ خودکار" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "تاریخ آخرین به‌روز رسانی خودکار آگاهی" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "پاک سازی انباره در خروج" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "استفاده از کلید TMDB کاربر" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "کلید TMDB کاربر" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "نگه داشتن آمار نمایش‌های محبوبتان" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "فیلم‌ها" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "سریال‌ها" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "سریال‌ها" #: src/main.py:193 msgid "Confirm Export?" msgstr "تأیید برون‌ریزی؟" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "_لغو" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "_برون‌ریزی" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "برون‌ریزی کتابخانه" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "_تأیید" #: src/main.py:273 #, fuzzy msgid "Export failed" msgstr "_برون‌ریزی" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "تأیید درون‌ریزی؟" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "_درون‌ریزی" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "درون‌ریزی کتابخانه" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 #, fuzzy msgid "Import failed" msgstr "_درون‌ریزی" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "بدون شبکه" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "وصل شدن به اینترنت برای کامل کردن برپایی." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "پاک‌سازی انباره" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} عنوان" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "حذف همهٔ فیلم‌ها" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "حذف همهٔ سریال‌ها" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "گیشه دارد از {total_space:.2f} م‌ب استفاده می‌کند. استفاده از گزینه‌های زیر " "برای آزاد کردن کمی فضا." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} م‌ب اشغال شده" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "فعّالیت‌های پس‌زمینه در حال اجرا" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "ویرایش فیلم" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "ویرایش سریال" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "فصل {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "افزودن {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "به‌روز رسانی {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "فصل" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "دیده" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "علامت به دیده" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "زمان پخش فیلم" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} فصل" msgstr[1] "{num} فصل" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "شمار فصل‌ها" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} قسمت" msgstr[1] "{num} قسمت" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "وضعیت" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "زبان اصلی" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "عنوان اصلی" #: src/pages/details_page.py:509 msgid "Budget" msgstr "بودجه" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "درامد" #: src/pages/details_page.py:529 msgid "In Production" msgstr "در حال تولید" #: src/pages/details_page.py:532 msgid "Yes" msgstr "بله" #: src/pages/details_page.py:533 msgid "No" msgstr "نه" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "شناسهٔ TMDB" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}س {m}د" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}د" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "به‌روز رساندن {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "به‌روز رسانی {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "بار کردن فراداده…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "حذف {title}؟" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "از سیاههٔ تماشایتان حذف خواهد شد." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_لغو" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_حذف" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "حذف {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" "حق رونوشت © ۲۰۲۳ - ۲۰۲۵ الکساندرو له‌پور\n" "برخی نقشک‌ها زیر حق رونوشت پروژهٔ گنوم هستند" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "دانیال بهزادی " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "فیلم" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "سریال‌ها" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "لغو" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "ذخیره" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "عمومی" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "عنوان (لازم)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "تاریخ انتشار" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "سبک‌ها (جدا شده با کاما)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "مدّت پخش (دقیقه)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "شعار" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "ایجاد شده به دست" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "نمای کلی" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "فصل‌ها (لازم)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "استفاده از دکمهٔ + برای افزودن فصل" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "افزودن" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "اطّلاعات اضافی" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "بودجه ($ آمریکا)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "درامد ($ آمریکا)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "در حال تولید" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "جست‌وجوی پایگاه دادهٔ فیلم…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "جست‌وجو برای عنوان" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "آغزا به نوشتن در نوار جست‌وجو برای دیدن سیاهه‌ای از فیلم‌ها و سریال‌های مطابق" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "هیچ نتیجه‌ای پیدا نشد" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "آزمودن جست‌وجویی متفاوت" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "ویرایش فصل" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "قسمت‌ها (لازم)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "استفاده از دکمهٔ + برای افزودن قسمت" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "پاک سازی داده‌های انباشته؟" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "لغو" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "پاک سازی" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "پاک سازی داده‌های ذخیره شده؟" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "فیلم‌ها" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "سریال‌ها" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "عمومی" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "نمایش میان‌برها" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "نمایش ترجیحات" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "جست‌وجوی سیاههٔ تماشایتان" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "خروج" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "مدیریت کتابخانه" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "افزودن عنوان از TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "افزودن دستی عنوان" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "تازه سازی کتابخانه" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "فهرست اصلی" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "شمار قسمت‌ها" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "تاریخ پخش قسمت بعدی" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "به‌روز رسانی فراداده" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "ویرایش" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "حذف" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "شرح" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "فصل‌ها" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "یادداشت‌ها" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_ترجیحات" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_میان‌برهای صفحه‌کلید" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_دربارهٔ گیشه" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "ویرایش قسمت" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "شمارهٔ قسمت (لازم)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "ترجیحات" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "بارگیری اختیاری" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "تکمیل برپایی" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "حالت برون‌خط" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "به کار انداختن حالت برون‌خط" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "پایگاه دادهٔ فیلم (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "زبان نتیجهٔ TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "بسامد به‌روز رسانی" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "آغزا دوبارهٔ گیشه پس از تغییر" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "هرگز" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "روزانه" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "هفتگی" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "ماهانه" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "استفاده از کلید APIتان" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" "کلیدتان را از این‌جا " "ثبت کنید" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "کلید APIتان" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "ذخیرهٔ کلید" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "خانه‌تکانی" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "پاک سازی انباره در خروج" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "پاکسازی داده‌های جست‌وجوی انباشه" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "پاک سازی داده" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "سیاههٔ‌ تماشایتان خالیست" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "افزودن محتوا با دکمهٔ + یا درون‌ریزی از سیاههٔ تماشایی قدیمی‌تر." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "سیاههٔ‌ تماشایتان" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "دیده نشده" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "به‌روز رسانی سیاههٔ تماشایتان" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "استفاده از حالت برون‌خط" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "تلاش دوباره در اجرای بعدی" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "فعّال سازی آگاهی‌ها؟" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "فعّال سازی" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "غیرفعّال" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "افزودن عنوانی به کتابخانه‌ةان" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "نمایش یا نهفتن نوار جست‌وجو" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "نمای کلی" #: src/ui/views/main_view.blp:108 #, fuzzy msgctxt "Search mode" msgid "Notes" msgstr "یادداشت‌ها" #: src/ui/views/main_view.blp:109 #, fuzzy msgctxt "Search mode" msgid "TMDB ID" msgstr "شناسهٔ TMDB" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "جست‌وجوی سیاههٔ تماشایتان" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "حالت برون‌خط به کار افتاد" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_چینش" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "آ-ی" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "ی-آ" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "تاریخ افزودن (نخست جدیدترین)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "تاریخ افزودن (نخست قدیمی‌ترین)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "تاریخ انتشار (نخست جدیدترین)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "تاریخ انتشار (نخست قدیمی‌ترین)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "جدا کردن دیده شده از دیده نشده" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "نهفتن دیده شده‌ها" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_تازه‌سازی" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "_درون‌ریزی" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "_برون‌ریزی" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "از پایگاه دادهٔ فیلم (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "دستی" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "فعّالیت‌های پس‌زمینه" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "بدون فعّالیت پس‌زمینه" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "ویرایش پوستر" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "حذف پوستر" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "سریال ارائه‌ای جدید دارد" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "سریال به زودی ارائه‌ای جدید دارد" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "این عنوان به دیده شده علامت خورد" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "افزودن به سیاههٔ تماشا" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "پیروی از سبک سامانه" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "سبک روشن" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "سبک تیره" #: src/views/content_view.py:362 msgid "Search results" msgstr "نتایج جست‌وجو" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "منتظر شبکه…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "آماده کردن چیزها…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "بار گرفتن داده‌ها" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "فیلم‌ها" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "به‌روز رسانی خودکار سیاههٔ آگاهی" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "به‌روز رسانی خودکار" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "ارائه جدید برای {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "قسمتی جدید از {title} ‏{days} روز پیش پخش شد." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "پخش‌های جدید از {num} سریال در سیاههٔ تماشایتان" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "سریال‌ها این‌هایند: {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "{title} به زودی پخش می‌شود" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "قسمتی جدید {days} روز دیگر پخش می‌شود." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "{title} از تولید خارج شد" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "{title} پخش شد!" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "{title} ‏{days} پیش پخش شد." #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "{num} فیلم از سیاههٔ تماشایتان پخش شده‌اند." #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "فیلم‌ها این‌هایند: {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "{title} به زودی پخش می‌شود!" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "{title} ‏{days} روز دیگر پخش می‌شود." #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "{num} مورد از سیاههٔ تماشایتان به‌روز رسانی دارند" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "این به‌روز رسانی روی {count_movies} فیلم اثر می‌گذارد" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr " و " #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr " {count_series} سریال" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "این به‌روز رسانی روی {count_series} سریال اثر می‌گذارد" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "حذف {title}؟" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "همهٔ تغییرات این قسمت از دست خواهند رفت." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "_حذف" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "از پیش در سیاههٔ تماشایتان" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "این فصل فراداده‌های ذخیره نشده‌ای دارد." #~ msgid "Notify me on new releases" #~ msgstr "آگاهی از ارائه‌های جدید" ticketbooth-1.2.0/po/fi.po000066400000000000000000001076221501006415200154070ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Jiri Grönroos , 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-03-22 19:01+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Ikkunan leveys" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Ikkunan korkeus" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Ikkuna suurennettu" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Aktiivinen välilehti" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Määrittää suoritetaankoi sovellus ensimmäistä kertaa" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "Määrittää tarvitseeko tietokanta päivityksen" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Määrittää latasiko sovellus tarvittavan datan" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "Erota katsottu sisältö katsomattomasta sisällöstä" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "Piilota katsottu sisältö" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "Hakupalkin näkyvyys" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Sovelluksen väriteema" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "TMDB-tuloksissa käytettävä kieli" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Tyhjennä välimuisti lopettaessa" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "Käytä käyttäjän TMDB-avainta" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "Käyttäjän TMDB-avain" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Pidä kirjaa suosikkiohjelmistasi" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Ticket Boothin avulla voit rakentaa katselulistan elokuvista ja TV-" "sarjoista, pitää kirjaa katsotuista ohjelmista ja etsiä tietoja uusimmista " "julkaisuista." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Boothin avulla et voi katsoa tai ladata sisältöä. Sovellus käyttää " "TMDB:n rajapintaa, mutta ei ole TMDB:n tukema tai sertifioima." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Elokuvat" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "TV-sarjat" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "TV-sarjat" #: src/main.py:193 msgid "Confirm Export?" msgstr "Vahvistetaanko vienti?" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" "Kirjaston vienti luo arkiston sisältäen kaiken datan. Voit tuoda tämän " "arkiston myöhemmin palauttaaksesi kirjastosi." #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Peru" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "_Vie" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "Viedään kirjasto" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "_OK" #: src/main.py:273 #, fuzzy msgid "Export failed" msgstr "_Vie" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "Vahvistetaanko tuonti?" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" "Kirjaston tuominen yhdistää sen nykyisen kirjaston kanssa. Tätä toimintoa ei " "voi perua, ja mahdollisissa ristiriitatilanteissa uusi data säilytetään." #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "_Tuo" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "Tuodaan kirjasto" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 #, fuzzy msgid "Import failed" msgstr "_Tuo" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Ei verkkoyhteyttä" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Yhdistä Internetiin viimeistelläksesi määrityksen." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Tyhjennä välimuisti" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} nimikettä" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Poista kaikki elokuvat" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Poista kaikki TV-sarjat" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth käyttää tällä hetkellä {total_space:.2f} megatavua. Käytä alla " "olevia valintoja vapauttaaksesi tilaa." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} megatavua varattu" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Taustatoimenpiteitä käynnissä" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Joitain toimintoja on käynnissä taustalla, ja ne tulee suorittaa loppuun " "ennen lopettamista. Tarkista otsakepalkissa oleva ilmaisin nähdäksesi, " "milloin toiminnot ovat valmistuneet." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Muokkaa elokuvaa" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Muokkaa TV-sarjaa" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Kausi {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Lisää {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Päivitä {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Kausi" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Katsottu" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Merkitse katsotuksi" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "Elokuvan kesto" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} kausi" msgstr[1] "{num} kautta" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "Kausien määrä" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} jakso" msgstr[1] "{num} jaksoa" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Tila" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Alkuperäinen kieli" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Alkuperäinen nimi" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Budjetti" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Tuotto" #: src/pages/details_page.py:529 msgid "In Production" msgstr "Tuotannossa" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Kyllä" #: src/pages/details_page.py:533 msgid "No" msgstr "Ei" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "TMDB-tunniste" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h} h {m} min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m} min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Päivitetään {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Päivitä {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Ladataan metatietoja…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Poistetaanko {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Tämä nimike poistetaan katselulistaltasi." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Peru" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Poista" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Poista {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" "Tekijänoikeus © 2023 - 2025 Alessandro Iepure\n" "Joidenkin kuvakkeiden tekijänoikeus kuuluu GNOME-projektille" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Jiri Grönroos" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Elokuva" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "TV-sarjat" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Peru" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Tallenna" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Yleiset" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Nimi (vaadittu)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Julkaisupäivä" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Tyylilajit (pilkulla erotettu)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Kesto (minuuteissa)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Iskulause" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Luonut" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Yleiskatsaus" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Kaudet (vaadittu)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Käytä painiketta + lisätäksesi kausia" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Lisää" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Lisätiedot" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budjetti (Yhdysvaltain dollareissa)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Tuotto (Yhdysvaltain dollareissa)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "Tuotannossa" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Etsi elokuvatietokannasta…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Etsi nimikettä" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Aloita hakukenttään kirjoittaminen nähdäksesi hakua vastaavat elokuvat ja TV-" "sarjat" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Tuloksia ei löytynyt" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Kokeile eri hakuehtoja" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Muokkaa kautta" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Jaksot (vaadittu)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Käytä painiketta + lisätäksesi jaksoja" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Tyhjennetäänkö välimuistissa oleva data?" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" "Tämä toimenpide tyhjentää kaiken välimuistissa olevan datan. Data saatetaan " "ladata uudelleen, kun lisäät sisältöä TMDB:stä." #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "Peru" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "Tyhjennä" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Tyhjennetäänkö tallennetut tiedot?" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" "Tämä toimenpide poistaa pysyvästi valitun datan, ja kaikki muutokset " "katoavat." #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "Elokuvat" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "TV-sarjat" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Yleiset" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Näytä pikanäppäimet" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Näytä asetukset" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Etsi katselulistalta" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Lopeta" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Kirjaston hallinta" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Lisää nimike TMDB:stä" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Lisää nimike manuaalisesti" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Päivitä kirjasto" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Päävalikko" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "Jaksojen määrä" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "Seuraavan jakson esityspäivä" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Päivitä metatiedot" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Muokkaa" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Poista" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Kuvaus" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Kaudet" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "Muistiinpanot" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Asetukset" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Tietoja - Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Muokkaa jaksoa" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Jakson numero (vaadittu)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Asetukset" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Valinnainen lataus" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Täyden kokemuksen takaamiseksi 15 kilotavun lataus vaaditaan. Alkumääritys " "ei voinut noutaa dataa automaattisesti, joten yhteydetön tila on aktivoitu. " "Yhteydetön tila pysyy aktiivisena, kunnes määritys on saatettu loppuun." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Viimeistele määritys" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Yhteydetön tila" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth voi pysyä täysin yhteydettömässä tilassa. Jos päätät jatkaa " "tässä tilassa, jotkin Internet-yhteyden tai kolmannen osapuolen rajapintaa " "vaativat ominaisuudet eivät ole käytettävissä." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Ota yhteydetön tila käyttöön" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB tarjoaa lokalisoidut metatiedot suurimmalle osalle sisältöä. Ticket " "Booth lataa metatiedot kielellä, jonka voit valita alta. Jos metatiedot " "eivät ole saatavilla valitsemallasi kielellä, käytetään amerikanenglantia " "tai sisällön alkuperäistä kieltä. Jos kumpikaan ei ole saatavilla, näytetään " "tyhjä merkkijono. Harkitse osallistumista TMDB:n sisällöntuotantoon. Metatiedot " "päivitetään valitsemallasi päivitysvälillä." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "TMDB-tulosten kieli" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Päivitysväli" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Käynnistä Ticket Booth uudelleen muuttamisen jälkeen" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Ei koskaan" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Päivittäin" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Viikottain" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Kuukausittain" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "Käytä API-avaintasi" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" "Rekisteröi omasi täällä" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "API-avaimesi" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "Tallenna avain" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Siivous" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Tyhjennä välimuisti suljettaessa" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Tyhjennä välimuistissa oleva hakudata" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Tyhjennä tiedot" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Katselulistasi on tyhjä" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" "Lisää sisältöä painikkeella + tai tuo sisältöä aiemmasta katselulistasta." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Katselulistasi" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "Katsomatta" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "Päivitetään katselulista" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" "Ticket Boothin päivityksen jälkeen paikallisen tietokannan tietueet tulee " "päivittää" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Käytä yhteydetöntä tilaa" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Yritä uudelleen seuraavalla käynnistyskerralla" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "Otetaanko ilmoitukset käyttöön?" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" "Haluatko ottaa ilmoitukset käyttöön kaikkien yhä tuotannossa olevian " "sarjojen ja julkaisemattomien elokuvien osalta?" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "Ota käyttöön" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "Poista käytöstä" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Lisää nimike kirjastoon" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "Näytä/piilota hakupalkki" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Yleiskatsaus" #: src/ui/views/main_view.blp:108 #, fuzzy msgctxt "Search mode" msgid "Notes" msgstr "Muistiinpanot" #: src/ui/views/main_view.blp:109 #, fuzzy msgctxt "Search mode" msgid "TMDB ID" msgstr "TMDB-tunniste" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "Etsi katselulistaltasi" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Yhteydetön tila otettu käyttöön" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Järjestys" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Ö" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Ö-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Lisäyspäivä (uusin ensin)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Lisäyspäivä (vanhin ensin)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Julkaisupäivä (uusin ensin)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Julkaisupäivä (vanhin ensin)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "Erota katsotut katsomattomista" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "Piilota katsotut" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Päivitä" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "_Tuo" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "_Vie" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "The Movie Databasesta (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manuaalisesti" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Taustatoimenpiteet" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Ei taustatoimenpiteitä" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Muokkaa julistetta" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Poista juliste" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "Sarjassa on uusi julkaisu" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "Sarjassa on pian uusi julkaisu" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "Tämä nimike on merkitty katsotuksi" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Lisää katselulistalle" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Seuraa järjestelmän tyyliä" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Vaalea tyyli" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Tumma tyyli" #: src/views/content_view.py:362 msgid "Search results" msgstr "Hakutulokset" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Odotetaan verkkoyhteyttä…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Valmistellaan asioita…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Ladataan tietoja" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Elokuvat" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Ilmoitusluettelon automaattinen päivitys" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Automaattinen päivitys" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "Uusi nimikkeen {title} julkaisu" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "Uusi jakso sarjasta {title} julkaistiin {days} päivä(ä) sitten." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "Uusi julkaisu {num} TV-sarjalle katselulistallasi" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "TV-sarjat ovat {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "{title} saa pian uuden julkaisun" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "Uuden jakson julkaisuun on {days} päivä(ä)." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "{num} TV-sarjalla katselulistallasi on pian uusi jakso" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "Sarjan {title} tuotanto on loppunut" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "{num} TV-sarjaa katselulistallasi on poistunut tuotannosta" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "{title} on saanut julkaisun!" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "{title} julkaistiin {days} päivä(ä) sitten." #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "{num} elokuvaa katselulistallasi on saanut julkaisun." #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "Elokuvat ovat {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "{title} saa pian julkaisun!" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "{title} saa julkaisun {days} päivän kuluttua." #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "{num} elokuvaa katselulistallasi saa pian julkaisun" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "{num} nimikettä katselulistallasi on saanut päivityksen" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "Päivitykset kohdistuvat {count_movies} elokuvaan" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr " ja " #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr " {count_series} TV-sarja" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "Päivitykset kohdistuvat {count_series} TV-sarjaan" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Poistetaanko {title}?" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Kaikki muutokset tähän jaksoon katoavat." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "_Poista" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "On jo katselulistallasi" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Tämä kausi sisältää tallentamattomia metatietoja." #~ msgid "Notify me on new releases" #~ msgstr "Ilmoita uusista julkaisuista" ticketbooth-1.2.0/po/fr.po000066400000000000000000001151701501006415200154150ustar00rootroot00000000000000# French translations for ticketbooth package. # Copyright (C) 2023 THE ticketbooth'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Automatically generated, 2023. # # "J. Lavoie" , 2023. # Alessandro Iepure , 2023. # rene-coty , 2023, 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-02-19 08:46+0000\n" "Last-Translator: rene-coty \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.10.1-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Largeur de la fenêtre" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Hauteur de la fenêtre" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Fenêtre maximisée" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Onglet actif" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Spécifie si l’application est exécutée pour la première fois" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "Spécifie si la base de données nécessite une mise à jour" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Spécifie si l’application a téléchargé les données requises" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Type de tri de l’affichage" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "Séparer les contenus déjà vus et pas encore vus" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "Masquer les contenus déjà vus" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "Visibilité de la barre de recherche" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "Mode de recherche" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "Requête de recherche" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Thème de couleurs de l’appli" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Langue utilisée dans les résultats de recherche TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Fréquence de recherche de nouvelles données sur TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Date de la dernière mise à jour automatique" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "Date de mise à jour automatique de la dernière notification" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Vider le cache lors de la fermeture" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "Utiliser la clé TMDB de l’utilisateur" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "Clé TMDB de l’utilisateur" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Gardez la trace de vos émissions favorites" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Ticket Booth vous permet de créer votre liste de films et de séries " "télévisées, de conserver vos titres regardés et de trouver des informations " "sur les dernières sorties." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Booth ne vous permet pas de regarder ou de télécharger des contenus. " "Cette application utilise l’API TMDB mais n’est ni promue ni certifiée par " "TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Films" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Séries" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Séries" #: src/main.py:193 msgid "Confirm Export?" msgstr "Confirmer l’exportation ?" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" "L’exportation de votre bibliothèque créera une archive contenant toutes vos " "données. Vous pourrez importer cette archive plus tard pour restaurer votre " "bibliothèque." #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "A_nnuler" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "_Exporter" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "Export de la bibliothèque" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "_OK" #: src/main.py:273 #, fuzzy msgid "Export failed" msgstr "_Exporter" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "Confirmer l’importation ?" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" "La bibliothèque importée sera fusionnée avec l’actuelle. Cette action ne " "peut être annulée et en cas de conflit, les données nouvelles seront " "conservées." #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "_Importer" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "Importation de la bibliothèque" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 #, fuzzy msgid "Import failed" msgstr "_Importer" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Aucun réseau" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Connectez-vous à Internet pour compléter la configuration." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Effacer le cache" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} titres" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Supprimer tous les films" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Supprimer toutes les séries télé" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth utilise actuellement {total_space:.2f} Mo. Utilisez les options " "ci-dessous pour libérer de l’espace." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} Mo occupés" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Activités en cours en arrière-plan" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Certaines activités sont en cours d’exécution en arrière-plan et doivent " "être achevées avant de quitter l’application. Surveillez l’indicateur dans " "la barre supérieure pour vérifier si elles sont terminées." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Modifier le film" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Modifier la série télé" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Saison {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Ajouter {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Mettre à jour {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Saison" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Déjà vu" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Marquer comme vu" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "Durée du film" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} saison" msgstr[1] "{num} saisons" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "Nombre de saisons" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} épisode" msgstr[1] "{num} épisodes" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Statut" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Langue originale" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Titre original" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Budget" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Revenus" #: src/pages/details_page.py:529 msgid "In Production" msgstr "En production" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Oui" #: src/pages/details_page.py:533 msgid "No" msgstr "Non" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "Identifiant TMDB" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h} h {m} min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m} min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Mise à jour de {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Mettre à jour {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Chargement des métadonnées…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Supprimer {title} ?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Ce titre sera supprimé de votre liste de visionnage." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Annuler" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Supprimer" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Supprimer {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Certaines icônes sont couvertes par le droit d’auteur du Projet GNOME" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Irénée Thirion" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Séries TV" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Annuler" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Enregistrer" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Général" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Titre (requis)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Date de sortie" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Genres (séparés par une virgule)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Durée (en minutes)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Sous-titre" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Créé par" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Aperçu" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Saisons (requis)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Utilisez le bouton + pour ajouter des saisons" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Ajouter" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Informations supplémentaires" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budget ($ US)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Revenus ($ US)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "En production" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Rechercher sur The Movie Database…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Rechercher un titre" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Commencez à taper dans la barre de recherche pour voir une liste de films et " "séries TV" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Aucun résultat trouvé" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Essayez une recherche différente" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Modifier la saison" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Épisodes (requis)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Utilisez le bouton + pour ajouter des épisodes" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Effacer les données mises en cache ?" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" "Cette opération effacera toutes les données stockées mises en caches. Elles " "pourront être téléchargées à nouveau la prochaine fois que vous ajouterez " "des contenus depuis TMDB." #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "Annuler" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "Effacer" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Effacer les données stockées ?" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" "Cette opération supprimera définitivement les données sélectionnées, ce qui " "effacera toutes vos modifications." #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "Films" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "Séries" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Général" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Afficher les raccourcis" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Afficher les préférences" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Rechercher dans votre liste de visionnage" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Quitter" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Gestion de la bibliothèque" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Ajouter un titre depuis TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Ajouter un titre manuellement" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Mettre à jour la bibliothèque" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Menu principal" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "Nombre d’épisodes" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "Date de diffusion du prochain épisode" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Mettre à jour les métadonnées" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Modifier" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Supprimer" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Description" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Saisons" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "Notes" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Préférences" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "Raccourcis _clavier" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_ À propos de Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Modifier l’épisode" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Numéro de l’épisode (requis)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Préférences" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Téléchargement optionnel" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Pour une expérience d’utilisation complète, un téléchargement de 15 KB est " "requis. La configuration initiale n’a pas permis de récupérer les données " "automatiquement et le mode hors ligne a donc été activé. Il restera actif " "jusqu’à ce que la configuration soit terminée." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Terminer la configuration" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Mode hors-ligne" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth peut fonctionner entièrement hors-ligne. Si vous choisissez " "d’utiliser l’application avec ce mode, certaines fonctionnalités requérant " "un accès à Internet et/ou à des APIs tierces ne seront pas disponibles." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Activer le mode hors-ligne" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB permet d’obtenir des métadonnées localisées pour la plupart des " "contenus. Ticket Booth les téléchargera dans votre langue préférée, que vous " "pouvez sélectionner ci-dessous. Si un contenu n’est pas disponible dans " "votre langue, il sera affiché en anglais américain et ensuite dans sa langue " "d’origine. Si aucune langue n’est disponible, le résultat sera une chaîne " "vide. Nous vous invitons à contribuer à TMDB. En outre, une mise à jour automatique de " "la base de données est effectuée à la fréquence de votre choix." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Langues des résultats TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Fréquence de mise à jour" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Redémarrer Ticket Booth après les changements" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Jamais" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Quotidienne" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Hebdomadaire" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Mensuelle" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "Utiliser votre clé d’API" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" "Enregistrez la vôtre ici" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "Votre clé d’API" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "Enregistrer la clé" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Ménage" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Effacer le cache à la fermeture" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Effacer les données de recherche mises en cache" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Effacer les données" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Votre liste de visionnage est vide" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" "Ajoutez du contenu avec le bouton + ou importez-en depuis une liste de " "visionnage plus ancienne." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Votre liste de visionnage" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "Pas encore vu" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "Mise à jour de votre liste de visionnage" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" "Après la mise à jour de Ticket Booth nous devrons mettre à jour les entrées " "de la base de données locales" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Utiliser le mode hors-ligne" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Essayer au prochain lancement" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "Activer les notifications ?" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" "Souhaitez-vous activer les notifications pour toutes les séries encore en " "cours de production et pour les films qui ne sont pas encore sortis ?" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "Activer" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "Désactiver" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Ajouter un titre à votre bibliothèque" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "Afficher / masquer la barre de recherche" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Aperçu" #: src/ui/views/main_view.blp:108 #, fuzzy msgctxt "Search mode" msgid "Notes" msgstr "Notes" #: src/ui/views/main_view.blp:109 #, fuzzy msgctxt "Search mode" msgid "TMDB ID" msgstr "Identifiant TMDB" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "Rechercher dans votre liste de visionnage" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Mode hors-ligne activé" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Tri" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Date d’ajout (récents d’abord)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Date d’ajout (anciens d’abord)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Date de sortie (récentes d’abord)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Date de sortie (anciennes d’abord)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "Séparer les contenus déjà vus et ceux pas encore vus" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "Masquer les contenus vus" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Actualiser" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "_Importer" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "_Exporter" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Depuis The Movie Database (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manuellement" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Activités en arrière-plan" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Aucune activité en arrière-plan" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Modifier l’affiche" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Supprimer l’affiche" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "La série a une nouvelle sortie" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "La série aura bientôt une nouvelle sortie" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "Ce titre est marqué comme déjà vu" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Ajouter à la liste de visionnage" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Suivre le style du système" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Thème clair" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Thème sombre" #: src/views/content_view.py:362 msgid "Search results" msgstr "Résultats de recherche" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "En attente de réseau…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Pour une expérience complète, un téléchargement de 15 KB est requis. " "Cependant si vous n’êtes pas connecté à Internet ou ne souhaitez pas " "attendre, vous pouvez passer cette étape et continuer hors ligne sans " "certaines fonctionnalités." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Préparation…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Téléchargement des données" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Films" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Mise à jour automatique de la liste des notifications" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Mise à jour automatique" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "Nouvelle sortie pour {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "Un nouvel épisode de {title} est sorti il y a {days} jour(s)." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "Nouvelle sortie pour {num} séries dans votre liste de visionnage" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "Les séries sont {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "{title} aura bientôt une nouvelle sortie" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "Un nouvel épisode sortira dans {days} jour(s)." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" "{num} séries de votre liste de visionnage auront bientôt un nouvel épisode" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "{title} a cessé(e) d’être produit(e)" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" "{title} s’est achevé(e). C'est le moment idéal pour revoir vos moments " "préférés ou pour trouver le prochain épisode !" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "{num} séries de votre liste de visionnage ont cessé d’être produites" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "{title} est sorti !" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "{title} est sorti il y a {days} jour(s)." #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "{num} films de votre liste de visionnage sont sortis." #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "Les films sont {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "{title} sortira bientôt !" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "{title} sortira dans {days} jour(s)." #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "{num} films de votre liste de visionnage vont bientôt sortir" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "{num} éléments de votre liste de visionnage ont une mise à jour" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "Ces mises à jour concernent {count_movies} film(s)" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr " et " #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr " {count_series} série(s)" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "Ces mises à jour concernent {count_series} série(s)" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Supprimer {title} ?" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Tous les changements appliqués à cet épisode seront perdus." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "_Supprimer" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Déjà dans votre liste de visionnage" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Cette saison contient des métadonnées non enregistrées." #~ msgid "Notify me on new releases" #~ msgstr "Me notifier lors des nouvelles sorties" #~ msgid "Notify on new releases" #~ msgstr "Notifier les nouvelles sorties" #~ msgid "day" #~ msgstr "jour" #~ msgid "days" #~ msgstr "jours" #, python-brace-format #~ msgid "" #~ "We hope {out_of_production_series[0].title} has come to an satisfiying " #~ "ending." #~ msgstr "" #~ "Nous espérons que {out_of_production_series[0].title} est arrivé(e) à bon " #~ "terme." #~ msgid "movie" #~ msgstr "film" #~ msgid "movies" #~ msgstr "films" #~ msgid "serie" #~ msgstr "série" #~ msgid "series" #~ msgstr "séries" #~ msgid "and" #~ msgstr "et" #~ msgid "" #~ "Fixes issue that prevented the addition of movies with large budgets and " #~ "revenues." #~ msgstr "" #~ "Corrige un problème qui empêchait l’ajout de films avec des budgets et " #~ "des revenus importants." #~ msgid "First release" #~ msgstr "Première version" ticketbooth-1.2.0/po/hi.po000066400000000000000000001214471501006415200154120ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Scrambled777 , 2024. # Nitin Khalia , 2024. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2024-05-07 18:07+0000\n" "Last-Translator: Scrambled777 \n" "Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.5.4-rc\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "विंडो चौड़ाई" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "विंडो ऊंचाई" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "विंडो अधिकतम" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "सक्रिय टैब" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "निर्दिष्ट करता है कि क्या ऐप पहली बार चलाया गया है" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "निर्दिष्ट करता है कि क्या ऐप ने आवश्यक डेटा डाउनलोड किया है" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "निर्दिष्ट करता है कि क्या ऐप ने आवश्यक डेटा डाउनलोड किया है" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "श्रेणीकरण शैली देखें" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "शीर्षक खोजें" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "ऐप रंग योजना" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "TMDB परिणामों द्वारा प्रयुक्त भाषा" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "TMBD पर नए डेटा की जांच करने की आवृत्ति" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "अंतिम ऑटो-अपडेट तिथि" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "अंतिम ऑटो-अपडेट तिथि" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "बाहर निकलने पर कैशे साफ़ करें" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "अपने पसंदीदा शो पर नज़र रखें" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Ticket Booth आपको फिल्में और TV शो की अपनी निगरानी सूची बनाने, देखे गए शीर्षकों पर " "नज़र रखने और नवीनतम रिलीज़ के बारे में जानकारी प्राप्त करने देता है।" #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Booth आपको सामग्री देखने या डाउनलोड करने नहीं देता है। यह ऐप TMBD API का " "उपयोग करता है लेकिन TMDB द्वारा समर्थित या प्रमाणित नहीं है।" #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "फिल्में" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "TV श्रृंखला" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "TV श्रृंखला" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "रद्द (_C)" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "ठीक है" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "नेटवर्क नहीं" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "सेटअप पूरा करने के लिए इंटरनेट से कनेक्ट करें।" #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "कैशे साफ करें" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} शीर्षक" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "सभी फिल्में मिटाएं" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "सभी TV श्रंखलायें मिटाएं" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth वर्तमान में {total_space:.2f} MB का उपयोग कर रहा है। कुछ स्थान खाली " "करने के लिए नीचे दिए गए विकल्पों का उपयोग करें।" #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB घेरी गई" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "पृष्ठभूमि गतिविधियां चल रही हैं" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "कुछ गतिविधियां पृष्ठभूमि में चल रही हैं और बाहर निकलने से पहले उन्हें पूरा करना आवश्यक है। यह " "जांचने के लिए कि वे कब समाप्त हो गए हैं, शीर्षलेख पट्टी में संकेतक देखें।" #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "फिल्म संपादित करें" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "TV श्रृंखला संपादित करें" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "सीज़न {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "जोडें {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "{title} अपडेट करें" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "सीज़न" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "देखे गये" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "देखे गए चिह्नित करें" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "रनटाइम (मिनट)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} सीज़न" msgstr[1] "{num} सीजंस" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} सीज़न" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} एपिसोड" msgstr[1] "{num} एपिसोडस" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "स्थिति" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "मूल भाषा" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "मूल शीर्षक" #: src/pages/details_page.py:509 msgid "Budget" msgstr "बजट" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "राजस्व" #: src/pages/details_page.py:529 msgid "In Production" msgstr "उत्पादन में" #: src/pages/details_page.py:532 msgid "Yes" msgstr "हाँ" #: src/pages/details_page.py:533 msgid "No" msgstr "नहीं" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}h {m}min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "{title} अपडेट किया जा रहा है" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "अपडेट {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "मेटाडेटा लोड हो रहा है…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "{title} मिटाएं?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "यह शीर्षक आपकी निगरानी सूची से मिटा दिया जाएगा।" #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "रद्द (_C)" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "मिटाएं (_D)" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "{title} मिटाएं" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Scrambled777 " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "फिल्म" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "TV श्रृंखला" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "रद्द करें" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "सहेजें" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "सामान्य" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "शीर्षक (आवश्यक)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "रिलीज़ दिनांक" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "शैलियां (अल्पविराम से अलग)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "रनटाइम (मिनट)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "टैगलाइन" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "इनके द्वारा बनाई गई" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "अवलोकन" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "सीजंस (required)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "सीज़न जोड़ने के लिए + बटन का उपयोग करें" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "जोड़ें" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "अतिरिक्त जानकारी" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "बजट (US$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "राजस्व (US$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "उत्पादन में" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "The Movie Database खोजें…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "शीर्षक खोजें" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "मेल खाने वाली फिल्मों और TV श्रृंखलाओं की सूची देखने के लिए खोज बार में टाइप करना प्रारंभ करें" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "कोई परिणाम नहीं मिला" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "भिन्न खोज का प्रयास करें" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "सीज़न संपादित करें" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "एपिसोड (आवश्यक)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "एपिसोड जोड़ने के लिए + बटन का उपयोग करें" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "कैश्ड खोज डेटा साफ़ करें" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "रद्द करें" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "डेटा साफ़ करें" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "डेटा साफ़ करें" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "फिल्में" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "TV श्रृंखला" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "सामान्य" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "शॉर्टकट दिखाएं" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "प्राथमिकताएं दिखाएं" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "आपकी निगरानी सूची" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "छोड़ें" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "लाइब्रेरी प्रबंधन" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "TMDB से शीर्षक जोड़ें" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "शीर्षक मैन्युअल रूप से जोड़ें" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "लाइब्रेरी ताज़ा करें" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "मुख्य मेनू" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} एपिसोड" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "मेटाडेटा अपडेट करें" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "संपादित करें" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "मिटाएं" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "विवरण" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "सीजंस" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "प्राथमिकताएं (_P)" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "कीबोर्ड शॉर्टकट (_K)" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "Ticket Booth के बारे में (_A)" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "एपिसोड संपादन" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "एपिसोड नंबर (आवश्यक)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "प्राथमिकताएं" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "वैकल्पिक डाउनलोड" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "संपूर्ण अनुभव के लिए, 15KB का डाउनलोड आवश्यक है। प्रारंभिक सेटअप स्वचालित रूप से डेटा " "पुनर्प्राप्त नहीं कर सका और इस प्रकार ऑफ़लाइन मोड सक्रिय हो गया है। सेटअप पूरा होने तक " "यह सक्रिय रहेगा।" #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "सेटअप पूरा करें" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "ऑफ़लाइन मोड" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth पूरी तरह से ऑफ़लाइन काम कर सकता है। यदि आप इस मोड में चलना चुनते हैं, तो " "कुछ सुविधाएं जिनके लिए इंटरनेट और/या तृतीय पक्ष API तक पहुंच की आवश्यकता होती है, उपलब्ध " "नहीं होंगी।" #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "ऑफ़लाइन मोड सक्षम करें" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB अधिकांश सामग्री के लिए स्थानीयकृत मेटाडेटा प्रदान करता है। Ticket Booth इसे आपकी " "पसंदीदा भाषा में डाउनलोड करेगा, जिसे नीचे चुना जा सकता है। यदि यह उपलब्ध नहीं है, तो यह " "अंग्रेजी US और फिर सामग्री की मूल भाषा में वापस आ जाएगा। यदि इनमें से कोई भी उपलब्ध नहीं " "है, तो इसका परिणाम एक रिक्त स्ट्रिंग होगा। कृपया TMDB में योगदान करने पर विचार करें। इसके अतिरिक्त, आपके " "द्वारा चुनी गई आवृत्ति पर एक स्वचालित अपडेट किया जाता है।" #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "TMDB परिणाम भाषा" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "अपडेट आवृत्ति" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "बदलने के बाद Ticket Booth पुनः प्रारंभ करें" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "कभी नहीं" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "दैनिक" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "साप्ताहिक" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "मासिक" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "सहेजें" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "गृह व्यवस्था" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "बाहर निकलने पर कैशे साफ़ करें" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "कैश्ड खोज डेटा साफ़ करें" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "डेटा साफ़ करें" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "आपकी निगरानी सूची खाली है" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "+ बटन के साथ सामग्री जोड़ें।" #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "आपकी निगरानी सूची" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "देखे गये" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "पहले से ही आपकी निगरानी सूची में है" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "ऑफ़लाइन मोड का उपयोग करें" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "अगली शुरुआत पर पुनः प्रयास करें" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "सक्रिय टैब" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "अपनी लाइब्रेरी में एक शीर्षक जोड़ें" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "अवलोकन" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "आपकी निगरानी सूची" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "ऑफ़लाइन मोड सक्षम" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "छंटाई (_S)" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "तिथि जोड़ी गई (नवीनतम पहले)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "तिथि जोड़ी गई (सबसे पुरानी पहले)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "रिलीज की तारीख (नवीनतम पहले)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "रिलीज की तारीख (सबसे पुरानी पहले)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "देखे गये" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "ताज़ा करें (_R)" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "The Movie Database (TMDB) से" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "मैन्युअल" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "पृष्ठभूमि गतिविधियां" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "कोई पृष्ठभूमि गतिविधियां नहीं" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "पोस्टर संपादन" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "पोस्टर मिटाएं" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "निगरानी सूची में जोड़ें" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "सिस्टम शैली का पालन करें" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "हल्की शैली" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "गहरी शैली" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "नेटवर्क की प्रतीक्षा में…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "संपूर्ण अनुभव के लिए, 15KB का डाउनलोड आवश्यक है। हालाँकि, यदि आप इंटरनेट से कनेक्ट नहीं हैं " "या प्रतीक्षा नहीं करना चाहते हैं, तो आप इस चरण को छोड़ सकते हैं और कुछ सुविधाओं के बिना " "ऑफ़लाइन जारी रख सकते हैं।" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "चीजें तैयार हो रही हैं…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "डेटा डाउनलोड हो रहा है" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "फिल्में" #: src/views/main_view.py:146 #, fuzzy msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "स्वचालित अपडेट" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "स्वचालित अपडेट" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "{title} मिटाएं" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "{title} मिटाएं?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "इस एपिसोड के सभी परिवर्तन खो जाएंगे।" #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "मिटाएं (_D)" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "पहले से ही आपकी निगरानी सूची में है" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "इस सीज़न में न सहेजा गया मेटाडेटा शामिल है।" #, fuzzy #~ msgid "movie" #~ msgstr "फिल्म" #, fuzzy #~ msgid "movies" #~ msgstr "फिल्में" #, fuzzy #~ msgid "series" #~ msgstr "TV श्रृंखला" ticketbooth-1.2.0/po/ia.po000066400000000000000000000707041501006415200154020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # "Emilio S." , 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 msgid "Movie Details" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 msgid "TV Series Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 msgid "TV Series Details" msgstr "" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "" #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "" msgstr[1] "" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "" msgstr[1] "" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "" #: src/pages/details_page.py:509 msgid "Budget" msgstr "" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "" #: src/pages/details_page.py:529 msgid "In Production" msgstr "" #: src/pages/details_page.py:532 msgid "Yes" msgstr "" #: src/pages/details_page.py:533 msgid "No" msgstr "" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "" #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 msgctxt "Search mode" msgid "Overview" msgstr "" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "" #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "" ticketbooth-1.2.0/po/it.po000066400000000000000000001123751501006415200154260ustar00rootroot00000000000000# Italian translations for ticketbooth package. # Copyright (C) 2023 THE ticketbooth'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Automatically generated, 2023. # # Alessandro Iepure , 2023, 2025. # albanobattistella , 2023. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-05-11 08:47+0000\n" "Last-Translator: Alessandro Iepure \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.12-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "Film;Films;Programmi;TV;Serie;Anime;Guarda;Lista;Libreria;" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Larghezza finestra" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Altezza finestra" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Finestra massimizzata" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Scheda attiva" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Specifica se l'app è eseguita per la prima volta" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "Specifica se il database ha bisogno di essere aggiornato" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Specifica se l'app ha scaricato i dati richiesti" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Tipo di ordinamento" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "Separa i contenuti visti da quelli non visti" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "Nascondi contenuti visti" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "Visibilità barra di ricerca" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "Modalità di ricerca" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "Query di ricerca" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Tema dell'app" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Lingua usata dai risultati di TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Frequenza per cercare nuovi dati su TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Ultima data di autoaggiornamento" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "Ultima data notifica di auto-aggiornamento" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Elimina cache all'uscita" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "Usa la chiave TMDB dell'utente" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "Chiave TMDB dell'utente" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Tieni traccia dei tuoi show preferiti" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Ticket Booth ti permette di creare un elenco di film e serie TV, tenere " "traccia dei titoli visti e trovare informazioni sulle ultime uscite." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Booth non permette di vedere o scaricare contenuto. Questa app usa " "l'API di TMDB ma non è approvata né certificata da TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "Libreria Film" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 msgid "Movie Details" msgstr "Dettagli film" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 msgid "TV Series Library" msgstr "Libreria Serie TV" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 msgid "TV Series Details" msgstr "Dettagli Serie TV" #: src/main.py:193 msgid "Confirm Export?" msgstr "Conferma export?" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" "Esportando la tua libreria, verrà creato un archivio contenente tutti i tuoi " "dati. Puoi importare questo archivio per ripristinare la libreria in un " "secondo momento." #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Annulla" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "_Esporta" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "Esportando libreria" #: src/main.py:263 msgid "Export Completed" msgstr "Esportazione Completata" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "La libreria è stata esportata con successo." #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "_OK" #: src/main.py:273 msgid "Export failed" msgstr "Esportazione fallita" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "Si è verificato un errore durante l'esportazione della libreria." #: src/main.py:329 msgid "Confirm Import?" msgstr "Conferma import?" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" "Importando una libreria, essa verrà unità con quella corrente. Questa azione " "non può essere annullata e un caso di conflitti, i dati nuovi verranno " "mantenuti." #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "_Importa" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "Importando libreria" #: src/main.py:404 msgid "Import Completed" msgstr "Importazione completata" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "La libreria è stata importata con successo." #: src/main.py:413 msgid "Import failed" msgstr "Importazione fallita" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" "Si prega di controllare l'archivio selezionato e riprovare. Sono supportati " "solo gli archivi creati da Ticket Booth." #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Nessuna connessione" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Connettiti a Internet per completare la configurazione." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Elimina cache" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} titoli" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Elimina tutti i film" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Elimina tutte le serie TV" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth attualmente occupa {total_space:.2f} MB. Usa le opzioni sotto " "per liberare un po' di spazio." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB occupati" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Attività in background in esecuzione" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Alcune attività sono in esecuzione in background e devono essere completate " "prima di uscire. Guarda l'indicatore nella header bar per controllare quando " "sono finite." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Modifica film" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Modifica serie TV" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Stagione {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Aggiungo {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Aggiorno {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Stagione" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Visto" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Segna come visto" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "Durata del film" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} Stagione" msgstr[1] "{num} Stagioni" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "Numero di stagioni" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} Episodio" msgstr[1] "{num} Episodi" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Stato" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Lingua originale" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Titolo originale" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Budget" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Incasso" #: src/pages/details_page.py:529 msgid "In Production" msgstr "In produzione" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Sì" #: src/pages/details_page.py:533 msgid "No" msgstr "No" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "ID TMDB" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}h {m}min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Aggiornando {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Aggiorna {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Caricamento dei metadati…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Elimina {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Questo titolo verrà eliminato dalla tua lista." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Annulla" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Elimina" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Elimina {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Alcune icone sono copyright di GNOME Project" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Alessandro Iepure " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Serie TV" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Annulla" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Salva" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Generali" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Titolo (richiesto)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Data di rilascio" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Generi (separati da virgola)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Durata (minuti)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Slogan" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Creato da" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Trama" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Stagioni (richiesto)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Usa il pulsante + per aggiungere stagioni" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Aggiungi" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Informazioni aggiuntive" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budget ($ US)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Incasso ($ US)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "In produzione" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Cerca in The Movie Database…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Cerca un titolo" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Inizia a scrivere nella barra di ricerca per vedere una lista di film e " "serie TV corrispondenti" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Nessun risultato trovato" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Prova a cercare qualcos'altro" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Modifica stagione" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Episodi (richiesto)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Usa il pulsante + per aggiungere episodi" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Elimina dati in cache?" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" "Questa operazione eliminerà i dati presenti nella cache. Potrebbero essere " "scaricati di nuovo la prossima volta che aggiungi contenuti da TMDB." #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "Annulla" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "Elimina dati" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Elimina dati salvati?" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" "Questa operazione eliminerà permanentemente i dati selezionati, perdendo " "tutte le tue modifiche." #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "Film" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "Serie TV" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Generali" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra scorciatoie" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Mostra preferenze" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Cerca nella tua lista" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Esci" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Gestione libreria" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Aggiungi un titolo da TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Aggiungi un titolo manualmente" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Aggiorna libreria" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Menù principale" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "Numero di episodi" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "Data di messa in onda del prossimo episodio" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Aggiorna metadati" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Modifica" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Elimina" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Descrizione" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Stagioni" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "Note" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Preferenze" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Scorciatoie da tastiera" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Su Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Modifica episodio" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Numero episodio (richiesto)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Preferenze" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Download opzionale" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Per un'esperienza completa, un download di 15 KB è richiesto. La " "configurazione iniziale non ha potuto scaricare i dati in automatico e " "quindi la modalità offline è stata attivata. Resterà attiva finché la " "configurazione non sarà completata." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Completa configurazione" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Modalità offline" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth può funzionare completamente offline. Se scegli questa " "modalità, alcune funzionalità che richiedono Internet e/o accesso a API di " "terze parti non saranno disponibili." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Abilita modalità offline" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB fornisce metadati localizzati per la maggior parte dei contenuti. " "Ticket Booth scaricherà i dati nella lingua preferita, selezionabile sotto. " "Qualora essa non fosse disponibile, saranno scaricati in Inglese US oppure " "nella lingua originale del contenuto. Se nessuna fosse disponibile, il " "risultato sarà una stringa vuota. Per favore considera di contribuire a TMDB. In aggiunta, " "un aggiornamento automatico è eseguito con una frequenza selezionabile." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Lingua risultati TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Frequenza di aggiornamento" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Riavvia Ticket Booth dopo la modifica" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Mai" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Giornalmente" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Settimanalmente" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Mensilmente" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "Usa la tua chiave API" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" "Registra la tua qua" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "La tua chiave API" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "Salva chiave" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Pulizie" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Elimina la cache all'uscita" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Elimina cache di ricerca" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Elimina dati" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "La tua lista è vuota" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "Aggiungi contenuti con il pulsate + o importa da una lista vecchia." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "La tua lista" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "Non Visto" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "Aggiornando la tua lista" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" "Dopo l'aggiornamento di Ticket Booth dobbiamo aggiornare le voci del " "database locale" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Usa la modalità offline" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Riprova al prossimo avvio" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "Attiva notifiche?" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" "Vuoi attivare notifiche per tutte le serie ancora in produzione e per tutti " "i film che non sono ancora stati rilasciati?" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "Attiva" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "Disattiva" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Aggiungi un titolo alla tua lista" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "Mostra/Nascondi barra di ricerca" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "Titolo" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "Genere" #: src/ui/views/main_view.blp:107 msgctxt "Search mode" msgid "Overview" msgstr "Trama" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "Note" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "ID TMDB" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "Cerca nella tua lista" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Modalità offline attivata" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Ordina" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Data aggiunta (più recente prima)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Data aggiunta (più vecchio prima)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Data rilascio (più recente prima)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Data rilascio (più vecchio prima)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "Separa visti da non visti" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "Nascondi visti" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Aggiorna" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "_Importa" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "_Esporta" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Da The Movie Database (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manualmente" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Attività in background" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Nessuna attività in background" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Modifica poster" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Elimina poster" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "La serie ha una nuova uscita" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "La seria avrà una nuova uscita prossimamente" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "Questo titolo è marchiato come visto" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Aggiungi alla lista" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Segui tema di sistema" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Tema chiaro" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Tema scuro" #: src/views/content_view.py:362 msgid "Search results" msgstr "Risultati di ricerca" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "In attesa della rete…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Per un'esperienza completa, un download di 15 KB è richiesto. Se non sei " "connesso a Internet o non vuoi aspettare, è comunque possibile saltare " "questo passo e continuare offline senza alcune funzionalità." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Preparando per il primo avvio…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Scaricando i dati" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Film" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Aggiornamento automatico della lista di notifica" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Aggiornamento automatico" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "Nuova uscita per {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "Un nuovo episodio di {title} è stato rilasciato {days} giorno fa." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "Nuova uscita per {num} serie TV nella tua lista" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "Le serie sono {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "{title} avrà una nuova uscita prossimamente" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "Un nuovo episosio uscirà in {days} giorni." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "{num} Serie TV nella tua lista avranno un episodio prossimamente" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "{title} non è più in produzione" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" "{title} si è conclusa. È il momento perfetto per riguardare i tuoi momenti " "preferiti o trovare la prossima serie!" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "{num} serie TV nella tua lista sono andate fuori produzione" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "{title} è uscito!" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "{title} è stato rilasciato {days} giorni fa." #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "{num} film nella tua lista sono stati rilasciati." #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "I film sono {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "{title} sarà rilasciato presto!" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "{title} sarà rilasciato in {days} giorni." #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "{num} film nella tua lista saranno rilasciati presto" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "{num} elementi nella tua lista hanno un aggiornamento" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "Questi aggiornamenti sono per {count_movies} film" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr " e " #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr " {count_series} serie TV" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "Questi aggiornamenti sono per {count_series} serie TV" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Elimina {title}?" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Tutte le modifiche a questo episodio andranno perse." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "_Elimina" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Già nella tua lista" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Questa stagione contiene metadati non salvati." #~ msgid "Notify me on new releases" #~ msgstr "Avvisami delle nuove uscite" #~ msgid "Notify on new releases" #~ msgstr "Avvisami delle nuove uscite" #~ msgid "movie" #~ msgstr "Film" #~ msgid "movies" #~ msgstr "Film" #~ msgid "serie" #~ msgstr "serie" #, fuzzy #~ msgid "series" #~ msgstr "Serie TV" #~ msgid "" #~ "Fixes issue that prevented the addition of movies with large budgets and " #~ "revenues." #~ msgstr "" #~ "Risolto il problema che impediva l'aggiunta di film con budget e ricavi " #~ "elevati." #~ msgid "First release" #~ msgstr "Prima versione" ticketbooth-1.2.0/po/meson.build000066400000000000000000000002021501006415200165750ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later i18n.gettext('ticketbooth', preset: 'glib') ticketbooth-1.2.0/po/nb_NO.po000066400000000000000000000773701501006415200160120ustar00rootroot00000000000000# Norwegian Bokmal translations for ticketbooth package. # Copyright (C) 2023 THE ticketbooth'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Automatically generated, 2023. # # Allan Nordhøy , 2023. # Alessandro Iepure , 2023. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2023-09-12 15:22+0000\n" "Last-Translator: Alessandro Iepure \n" "Language-Team: Norwegian Bokmål \n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.0.1-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Vindusbredde" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Vindushøyde" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Vindu maksimert" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Aktiv fane" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Angir hvorvidt programmet kjøres for første gang" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Vis sorteringsstil" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Søk etter tittel" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Programfargedrakt" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Språk brukt i TMDB-resultater" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Frekvens for sjekk av ny data på TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Siste autospillingsdato" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Siste autospillingsdato" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Tøm hurtiglager ved programslutt" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Filmer" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "TV-serier" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "TV-serier" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Avbryt" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "" #: src/preferences.py:321 #, fuzzy msgctxt "Background activity title" msgid "Clear cache" msgstr "Tøm hurtiglager" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Kjørende bakgrunnsaktiviteter" #: src/window.py:233 #, fuzzy msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Noen aktiviteter som kjører i bakgrunnen må ferdigstilles før programslutt. " "En indikator i tittelfeltet snurrer til det er utført." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Rediger film" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Rediger TV-serie" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Sesong {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Oppdaterer {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Sesong" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Sett" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "Spilletid (minutter)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, fuzzy, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} sesonger" msgstr[1] "{num} sesonger" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} sesonger" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, fuzzy, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} episoder" msgstr[1] "{num} episoder" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Status" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Opprinnelig språk" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Originaltittel" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Budsjett" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Omsetning" #: src/pages/details_page.py:529 msgid "In Production" msgstr "I produksjon" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Ja" #: src/pages/details_page.py:533 msgid "No" msgstr "Nei" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}t {m}min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Oppdaterer {title}…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, fuzzy, python-brace-format msgid "Update {title}" msgstr "Oppdaterer {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Laster inn metadata…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Slett {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Denne tittelen vil bli slettet fra din oppsynsliste." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Avbryt" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Slett" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, fuzzy, python-brace-format msgid "Delete {title}" msgstr "Slett {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Allan Nordhøy, " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 #, fuzzy msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 #, fuzzy msgctxt "Category" msgid "TV Series" msgstr "TV-serier" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Avbryt" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Lagre" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Generelt" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Tittel (påkrevd)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Utgivelsesdato" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Sjangre (kommainndelt)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Spilletid (minutter)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Slogan" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Opprettet av" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Oversikt" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Sesonger (påkrevd)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Bruk «+»-knappen for å legge til sesonger" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Legg til" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Ytterligere info" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budsjett {US$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Omsetning (US$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "I produksjon" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Søk i «The Movie Database»…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Søk etter tittel" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "Skriv i søkefeltet for å vise en liste over filmer og TV-serier" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Resultatløst" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Prøv å søke etter noe annet" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Rediger sesong" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Episoder (påkrevd)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Bruk «+»-knappen for å legge til episoder" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Tøm data" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "Avbryt" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Tøm data" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Tøm data" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Filmer" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "TV-serier" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Generelt" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Vis snarveier" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Din oppsynsliste" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Avslutt" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Bibliotekshåndtering" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Legg til tittel fra TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Legg til tittel manuelt" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Gjenoppfrisk bibliotek" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Hovedmeny" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} episoder" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Oppdater metadata" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Rediger" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Slett" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Beskrivelse" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Sesonger" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Innstillinger" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Tastatursnarveier" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Om Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Rediger episode" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Episodenummer (påkrevd)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Innstillinger" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Frakoblet modus" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Skru på frakoblet modus" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Oppdateringsfrekvens" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Aldri" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Daglig" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Ukentlig" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Måndelig" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Lagre" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Tøm hurtiglager ved programslutt" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Tøm data" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Oppsynslisten din er tom" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Din oppsynsliste" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "Sett" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "Allerede i din oppsynsliste" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Bruk frakoblet modus" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Prøv igjen ved neste kjøring" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Aktiv fane" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Legg til en tittel i biblioteket ditt" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Oversikt" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "Din oppsynsliste" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "Sortering" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Å" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Å-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Dato tillagt (nyeste først)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Dato tillagt (eldste først)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Utgivelsesdato (nyeste først)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Utgivelsesdato (eldste først)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "Sett" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "Gjenoppfrisk" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manuelt" #: src/ui/widgets/background_indicator.blp:13 #, fuzzy msgid "Background Activities" msgstr "Bakgrunnsaktiviteter" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Rediger plakat" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Slett plakat" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Legg til på oppsynsliste" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Følg systemstil" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Lys stil" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Mørk stil" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Venter på nettverk…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Klargjør…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Laster ned data" #: src/views/main_view.py:57 #, fuzzy msgctxt "Category" msgid "Movies" msgstr "Filmer" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "Slett {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Slett {title}?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Alle endringer av denne episoden vil gå tapt." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "_Slett" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 #, fuzzy msgid "Already in your watchlist" msgstr "Allerede i din oppsynsliste" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Denne sesongen inneholder ulagret metadata." #, fuzzy #~ msgid "movie" #~ msgstr "Film" #, fuzzy #~ msgid "movies" #~ msgstr "Filmer" #, fuzzy #~ msgid "series" #~ msgstr "TV-serier" ticketbooth-1.2.0/po/nl.po000066400000000000000000001042521501006415200154160ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Heimen Stoffels , 2024. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2024-04-28 18:07+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.5.1\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Vensterbreedte" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Vensterhoogte" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Venster maximaliseren" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Actief tabblad" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Geef aan of de toepassing voor de eerste keer opstart" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Geef aan of de toepassing de vereiste gegevens heeft opgehaald" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Geef aan of de toepassing de vereiste gegevens heeft opgehaald" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Sorteervolgorde" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Zoeken naar titel" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Thema" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Taal van TMDB-resultaten" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Hoe vaak de TMDB-gegevens moeten worden vernieuwd" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Recentste automatische bijwerking" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Recentste automatische bijwerking" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Cache wissen na afsluiten" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Houd je favoriete series in de gaten" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Met Ticket Booth kun je een kijklijst met series en films aanleggen, ze " "volgen en meer informatie zoeken over de nieuwste afleveringen." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Let op: met Ticket Booth kun je geen inhoud bekijken of downloaden. Deze " "toepassing maakt gebruik van de TMDB-api, maar wordt niet gemaakt of erkend " "door TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Films" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Tv-serie" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Tv-serie" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Annuleren" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "Oké" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Geen internetverbinding" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Maak verbinding met het internet om de instelhulp te voltooien." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Cache wissen" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} items" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Alle films verwijderen" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Alle tv-series verwijderen" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth gebruikt momenteel {total_space:.2f} MB. Gebruik onderstaande " "opties om ruimte vrij te maken." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} mb in gebruik" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Achtergrondactiviteiten actief" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Enkele activiteiten worden op de achtergrond voortgezet en dienen te worden " "voltooid alvorens af te sluiten. Zoek de indicator op de bovenbalk en " "controleer of alles is afgerond." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Film bewerken" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Tv-serie bewerken" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Seizoen {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "{title} toevoegen" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "{title} bijwerken" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Seizoen" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Bekeken" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Markeren als bekeken" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "Duur (in minuten)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} seizoen" msgstr[1] "{num} seizoenen" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} seizoen" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} aflevering" msgstr[1] "{num} afleveringen" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Status" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Oorspronkelijke taal" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Oorspronkelijke titel" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Budget" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Opbrengst" #: src/pages/details_page.py:529 msgid "In Production" msgstr "In productie" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Ja" #: src/pages/details_page.py:533 msgid "No" msgstr "Nee" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h} uur, {m} min." #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m} min." #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "{title} bijwerken" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "{title} bijwerken" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Bezig met laden van gegevens…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Wil je “{title}” verwijderen?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Hierdoor wordt het item van je kijklijst gehaald." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Annuleren" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "Verwij_deren" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "“{title}” verwijderen" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Heimen Stoffels " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Tv-serie" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Annuleren" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Opslaan" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Algemeen" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Titel (vereist)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Verschenen op" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Genres (kommagescheiden)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Duur (in minuten)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Slagzin" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Gemaakt door" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Overzicht" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Aantal seizoenen (vereist)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Klik op de ‘+’-knop om seizoenen toe te voegen" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Toevoegen" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Aanvullende informatie" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budget (in VS$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Opbrengst (in VS$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "In productie" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Doorzoek The Movie Database…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Zoeken naar titel" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Typ een zoekopdracht in het zoekvak om een lijst met films en tv-series op " "te halen" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Er zijn geen zoekresultaten" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Probeer een andere zoekopdracht" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Seizoen bewerken" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Aantal afleveringen (vereist)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Klik op de ‘+’-knop om afleveringen toe te voegen" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Zoekgeschiedenis wissen" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "Annuleren" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Gegevens wissen" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Gegevens wissen" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Films" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "Tv-serie" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Algemeen" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Sneltoetsen tonen" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Voorkeuren openen" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Mijn kijklijst" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Afsluiten" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Verzamelingsbeheer" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "TMDB-item toevoegen" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Eigen item toevoegen" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Verzameling herladen" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Hoofdmenu" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} aflevering" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Gegevens bijwerken" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Bewerken" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Verwijderen" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Omschrijving" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Aantal seizoenen" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Voorkeuren" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Sneltoetsen" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Over Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Aflevering bewerken" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Afleveringsnummer (vereist)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Voorkeuren" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Optionele download" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Als je gebruik wilt maken van alle functies van Ticket Booth, dan is een " "aanvullende download van 15 KB vereist. Tijdens het instellen konden deze " "gegevens niet worden opgehaald. De offline-modus is ingeschakeld en blijft " "actief totdat je de functies downloadt." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Alle functies inschakelen" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Offline-modus" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth kan geheel offline werken. Als je deze modus inschakelt, kun je " "geen functies gebruiken die een internetverbinding en/of toegang tot " "bepaalde api's vereisen." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Offline-modus inschakelen" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB heeft van de meeste items vertalingen. Ticket Booth kan deze in een " "taal naar keuze tonen. Als de taal in kwestie niet beschikbaar is, wordt " "terugvallen op Amerikaans Engels of de oorspronkelijke taal van het item. " "Als geen van allen beschikbaar is, wordt een blanco veld getoond. Overweeg " "bij te dragen aan " "TMDB. Aanvullend kan naar eigen inzicht de inhoud automatisch worden " "bijgewerkt." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Taal van TMDB-resultaten" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Bijwerken, iedere" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Herstart Ticket Booth om de wijziging toe te passen" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Nooit" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Iedere dag" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Iedere week" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Iedere maand" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Opslaan" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Opruiming" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Cache wissen na afsluiten" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Zoekgeschiedenis wissen" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Gegevens wissen" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Je kijklijst is leeg" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "Klik op de ‘+’-knop om items toe te voegen." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Mijn kijklijst" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "Bekeken" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "Dit staat al op je kijklijst" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Offline-modus inschakelen" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Opnieuw proberen na volgende opstart" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Actief tabblad" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Voeg een item toe aan je verzameling" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Overzicht" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "Mijn kijklijst" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "De offline-modus is ingeschakeld" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Sorteren" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Datum van toevoegen (nieuwste eerst)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Datum van toevoegen (oudste eerst)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Datum van verschijnen (nieuwste eerst)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Datum van verschijnen (oudste eerst)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "Bekeken" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "He_rladen" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Van The Movie Database (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Handmatig" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Achtergrondactiviteiten" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Geen achtergrondactiviteiten" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Poster bewerken" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Poster verwijderen" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Toevoegen aan kijklijst" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Systeemthema" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Licht thema" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Donker thema" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Bezig met wachten op internetverbinding…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Om gebruik te kunnen maken van alle functies is een aanvullende download van " "15 KB vereist. Als je niet verbonden bent met het internet of niet wilt " "wachten, dan kun je deze stap overslaan en de beperktere offline-modus " "gebruiken." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Bezig met afstellen…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Bezig met ophalen van gegevens…" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Films" #: src/views/main_view.py:146 #, fuzzy msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Automatisch bijwerken" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Automatisch bijwerken" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "“{title}” verwijderen" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Wil je “{title}” verwijderen?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Alle aanpassingen aan deze aflevering worden gewist." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "Verwij_deren" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Dit staat al op je kijklijst" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Dit seizoen bevat niet-opgeslagen gegevens." #, fuzzy #~ msgid "movie" #~ msgstr "Film" #, fuzzy #~ msgid "movies" #~ msgstr "Films" #, fuzzy #~ msgid "series" #~ msgstr "Tv-serie" ticketbooth-1.2.0/po/pl.po000066400000000000000000001054441501006415200154240ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Robert Wolniak , 2023. # Robert Wolniak , 2023. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2023-11-20 05:06+0000\n" "Last-Translator: Robert Wolniak \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 5.2\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Szerokość okna" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Wysokość okna" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Okno zmaksymalizowane" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Aktywna karta" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Określa, czy aplikacja jest uruchamiana po raz pierwszy" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Określa, czy aplikacja pobrała niezbędne dane" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Określa, czy aplikacja pobrała niezbędne dane" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Zobacz styl sortowania" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Szukaj po tytule" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Schemat kolorystyczny aplikacji" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Język rezultatów z TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Częstotliwość sprawdzania TMDB pod kątem nowych danych" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Data najnowszej automatycznej aktualizacji" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Data najnowszej automatycznej aktualizacji" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Wyczyść ciasteczka przy wyłączaniu aplikacji" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Śledź swoje ulubione programy" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Dzięki Ticket Booth możesz stworzyć swoją listę filmów i seriali do " "obejrzenia, jak również śledzić na bieżąco postępy w oglądanych tytułach i " "znajdywać informacje o nowościach." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Booth nie zawiera funkcji oglądania czy pobierania zawartości. " "Aplikacja korzysta z TMDB API, ale nie jest wspierana ani w żaden sposób " "powiązana z TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Filmy" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Seriale" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Seriale" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Anuluj" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "OK" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Brak połączenia z siecią" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Aby ukończyć konfigurację, połącz się z internetem." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Wyczyść ciasteczka" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} tytułów" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Usuń wszystkie filmy" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Usuń wszystkie seriale" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth obecnie używa {total_space:.2f} MB przestrzeni na dysku. Użyj " "opcji poniżej by zwolnić nieco miejsca." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB używane" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Działające aktywności w tle" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Niektóre aktywności działają w tle i muszą zostać zakończone, zanim program " "zostanie zamknięty. Żeby zobaczyć kiedy aktywność zostanie zakończona, patrz " "na wskaźnik w pasku nagłówka." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Edytuj film" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Edytuj seriale" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Sezon {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Dodaj {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Zaktualizuj {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Sezon" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Obejrzane" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Oznacz jako obejrzane" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "Czas trwania (w minutach)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} sezon" msgstr[1] "{num} sezony" msgstr[2] "{num} sezonów" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} sezon" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} odcinek" msgstr[1] "{num} odcinki" msgstr[2] "{num} odcinków" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Status" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Język oryginału" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Oryginalny tytuł" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Budżet" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Dochód" #: src/pages/details_page.py:529 msgid "In Production" msgstr "W produkcji" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Tak" #: src/pages/details_page.py:533 msgid "No" msgstr "Nie" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}g {m}min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Aktualizowanie {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Aktualizuj {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Wczytywanie metadanych…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Usunąć {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Tytuł ten zostanie usunięty z twojej listy do obejrzenia." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Anuluj" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Usuń" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Usuń {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Robert Wolniak " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Seriale" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Anuluj" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Zapisz" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Ogólne" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Tytuł (wymagane)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Data premiery" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Gatunki (oddzielone przecinkiem)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Czas trwania (w minutach)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Słowa kluczowe" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Stworzony przez" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Streszczenie" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Ilość sezonów (wymagane)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Użyj przycisku + by dodać sezon" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Dodaj" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Dodatkowe informacje" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budżet (w dolarach amerykańskich)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Dochód (w dolarach amerykańskich)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "W produkcji" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Przeszukaj The Movie Database…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Szukaj po tytule" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Zacznij wpisywać w pasku wyszukiwania, aby wyświetlić listę pasujących " "filmów i seriali" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Brak wyników" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Spróbuj wyszukać inną frazę" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Edytuj sezon" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Ilość odcinków (wymagane)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Użyj przycisku + by dodać odcinki" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Wyczyść buforowane dane wyszukiwania" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "Anuluj" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Wyczyść dane" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Wyczyść dane" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Filmy" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "Seriale" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Ogólne" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Pokaż skróty klawiszowe" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Pokaż ustawienia" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Twoja lista do obejrzenia" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Wyjdź" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Zarządzanie biblioteką" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Dodaj tytuł z TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Dodaj tytuł ręcznie" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Odśwież bibliotekę" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Menu główne" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} odcinek" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Zaktualizuj metadane" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Edytuj" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Usuń" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Opis" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Sezony" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Ustawienia" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_O aplikacji Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Edytuj odcinek" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Numer odcinka (wymagane)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Ustawienia" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Opcjonalne pobieranie" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "W celu uzyskania pełniejszego doświadczenia z programu wymagane jest " "pobranie 15 KB danych. W trakcie wstępnej konfiguracji nie udało się pobrać " "tych danych automatycznie, w związku z czym został włączony tryb offline. " "Pozostanie on włączony, dopóki etap konfiguracji nie zostanie zakończony." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Ukończ konfigurację" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Tryb offline" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth ma możliwość działania bez dostępu do internetu. Jeśli " "zdecydujesz się na korzystanie z programu w tym trybie, niektóre funkcje " "wymagające połączenia z internetem i/lub dostępu do API stron trzecich nie " "będą dostępne." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Włącz tryb offline" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "The Movie Database (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB zapewnia zlokalizowane metadane dla większości treści. Ticket Booth " "pobierze je w wybranym przez ciebie języku, do wybrania poniżej. Jeżeli " "wybrany język nie byłby dostępny, program spróbuje pobrać dane w języku " "angielskim, lub w języku oryginału. Jeśli żaden z nich nie będzie dostępny, " "zostanie wyświetlony pusty ciąg znaków. Prosimy o rozważenie dodania nowych treści do " "bazy TMDB. Dodatkowo automatyczne aktualizacje będą wykonywane " "regularnie na podstawie wybranych preferencji." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Język wyników z TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Częstotliwość aktualizacji" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Po wykonaniu zmiany uruchom ponownie Ticket Booth" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Nigdy" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Codziennie" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Co tydzień" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Co miesiąc" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Zapisz" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Czyszczenie" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Wyczyść ciasteczka przy wyłączaniu programu" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Wyczyść buforowane dane wyszukiwania" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Wyczyść dane" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Twoja lista do obejrzenia jest pusta" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "Dodaj zawartość przy pomocy przycisku +." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Twoja lista do obejrzenia" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "Obejrzane" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "Jest już na twojej liście do obejrzenia" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Włącz tryb offline" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Spróbuj ponownie przy kolejnym uruchomieniu" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Aktywna karta" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Dodaj tytuł do swojej biblioteki" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Streszczenie" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "Twoja lista do obejrzenia" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Tryb offline włączony" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Sortowanie" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Data dodania (najnowsze jako pierwsze)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Data dodania (najstarsze jako pierwsze)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Data premiery (najnowsze jako pierwsze)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Data premiery (najstarsze jako pierwsze)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "Obejrzane" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Odśwież" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Z The Movie Database (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Ręcznie" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Aktywności w tle" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Bez aktywności w tle" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Edytuj plakat" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Usuń plakat" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Dodaj do listy do obejrzenia" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Ustaw styl systemu" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Styl jasny" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Styl ciemny" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Oczekiwanie na sieć…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "W celu uzyskania pełniejszego doświadczenia z programu wymagane jest " "pobranie 15 KB danych. Jeśli nie masz połączenia z internetem albo nie " "chcesz czekać, możesz pominąć ten krok i korzystać z programu w trybie " "offline, bez kilku jego funkcji." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Przygotowania programu…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Pobieranie danych" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Filmy" #: src/views/main_view.py:146 #, fuzzy msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Automatyczne aktualizacje" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Automatyczne aktualizacje" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "Usuń {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Usunąć {title}?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Wszystkie zmiany w tym odcinku zostaną utracone." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "_Usuń" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Jest już na twojej liście do obejrzenia" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Ten sezon zawiera niezapisane metadane." #, fuzzy #~ msgid "movie" #~ msgstr "Film" #, fuzzy #~ msgid "movies" #~ msgstr "Filmy" #, fuzzy #~ msgid "series" #~ msgstr "Seriale" ticketbooth-1.2.0/po/pt.po000066400000000000000000001036441501006415200154340ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Juliano Dorigão , 2023. # ssantos , 2023. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2023-12-19 16:08+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.3\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Largura da janela" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Altura da janela" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Janela maximizada" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Guia ativa" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Especifica se o aplicativo é executado pela primeira vez" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Especifica se o aplicativo baixou os dados necessários" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Especifica se o aplicativo baixou os dados necessários" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Ver estilo de classificação" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Pesquisar por Título" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Esquema de cores do aplicativo" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Linguagem usada pelos resultados do TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Frequência para verificar novos dados no TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Data da última atualização automática" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Data da última atualização automática" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Limpar cache ao sair" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Acompanhe seus programas favoritos" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "O Ticket Booth permite que você crie sua lista de filmes e programas de TV, " "acompanhe os títulos assistidos e encontre informações sobre os últimos " "lançamentos." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "O Ticket Booth não permite que você assista ou baixe conteúdo. Este " "aplicativo usa a API TMDB, mas não é endossado ou certificado pelo TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Filmes" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Série de TV" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Série de TV" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Cancelar" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "OK" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Sem rede" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Conecte-se à Internet para concluir a configuração." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Limpar cache" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} Títulos" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Apagar todos os filmes" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Apagar todas as séries de TV" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth usa atualmente {total_space:.2f} MB. Use as opções abaixo para " "liberar espaço." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB ocupado" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Atividades em segundo plano em execução" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Algumas atividades estão sendo executadas em segundo plano e precisam ser " "concluídas antes de sair. Procure o indicador na barra de cabeçalho para " "verificar quando terminar." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Editar filme" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Editar série de TV" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Temporada {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Adicionar {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Atualizar {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Temporada" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Assistido" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Marcar como assistido" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} Temporada" msgstr[1] "{num} Temporadas" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} Episódio" msgstr[1] "{num} Episódios" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Estado" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Idioma Original" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Título original" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Orçamento" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Receita" #: src/pages/details_page.py:529 msgid "In Production" msgstr "Em Produção" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Sim" #: src/pages/details_page.py:533 msgid "No" msgstr "Não" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}h {m}min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "A atualizar {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Atualizar {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "A carregar metadados…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Apagar {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Este título será apagado da sua lista de observação." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Cancelar" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Excluir" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Apagar {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Juliano Dorigão " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Filme" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Série de TV" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Cancelar" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Gravar" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Geral" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Título (obrigatório)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Data de lançamento" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Gêneros (separados por vírgula)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Duração (minutos)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Slogan" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Criado por" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Visão geral" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Temporadas (obrigatório)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Use o botão + para adicionar temporadas" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Adicionar" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Informações adicionais" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Orçamento (US$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Receita (US$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "Em produção" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Buscar no banco de dados de filmes…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Pesquisar por Título" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Comece a digitar na barra de pesquisa para ver uma lista de filmes e séries " "de TV correspondentes" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Nenhum resultado encontrado" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Tente uma pesquisa diferente" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Editar temporada" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Episódios (obrigatório)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Use o botão + para adicionar episódios" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Limpar dados de pesquisa em cache" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "Cancelar" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Apagar os dados" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Apagar os dados" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Filmes" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "Série de TV" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar atalhos" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Mostrar preferências" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "A sua lista" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Gestão de biblioteca" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Adicionar título do TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Adicionar título manualmente" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Atualizar biblioteca" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Menu principal" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Atualizar metadados" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Editar" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Apagar" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Descrição" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Temporadas" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Preferências" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Atalhos do teclado" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Sobre Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Editar episódio" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Número do episódio (obrigatório)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Preferências" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Descarregar opcional" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Para uma experiência completa uma descarga de 15 KB é necessária. A " "configuração inicial não conseguiu recuperar os dados automaticamente e, " "portanto, o modo offline foi ativado. Permanecerá ativo até que a " "configuração seja concluída." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Configuração completa" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Modo offline" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "O Ticket Booth pode funcionar totalmente offline. Se optar por executar " "neste modo, alguns recursos que exigem Internet e/ou acesso a APIs de " "terceiros não estarão disponíveis." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Ativar modo offline" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "O banco de dados de filmes (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "O TMDB fornece metadados localizados para a maioria dos conteúdos. O Ticket " "Booth descarguerá no idioma de sua preferência, selecionável abaixo. Caso " "não esteja disponível, o inglês dos EUA será usado e depois o idioma " "original do conteúdo. Se nenhum estiver disponível, resultará numa linha em " "branco. Por favor, considere contribuir para o TMDB. Além disso, uma atualização " "automática é realizada na frequência da sua escolha." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Idioma dos resultados TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Frequência de atualização" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Reinicie Ticket Booth após alterar" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Nunca" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Diário" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Semanalmente" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Mensal" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Gravar" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Serviço de limpeza" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Limpar Cache ao Sair" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Limpar dados de pesquisa em cache" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Apagar os dados" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "A sua lista está vazia" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "Adicione conteúdo com o botão +." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "A sua lista" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Usar o modo offline" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Tente novamente na próxima execução" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Guia ativa" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Adicione um título à sua biblioteca" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Visão geral" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "A sua lista" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Modo offline ativado" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Ordenação" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Data adicionada (mais recente primeiro)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Data adicionada (o mais antigo primeiro)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Data de lançamento (mais recente primeiro)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Data de lançamento (mais antigo primeiro)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Atualizar" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Do banco de dados de filmes (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manualmente" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Atividades em segundo plano" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Sem atividades em segundo plano" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Editar pôster" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Apagar pôster" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Adicionar à lista" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Seguir o estilo do sistema" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Estilo claro" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Estilo escuro" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "A aguardar rede…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Para uma experiência completa é necessária uma descarga de 15 KB. Porém, se " "não estiver conectado à Internet ou não quiser esperar, pode pular esta " "etapa e continuar offline sem alguns recursos." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "A preparar…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "A descarregar dados" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Filmes" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Atualização automática" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "Apagar {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Apagar {title}?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Todas as alterações neste episódio serão perdidas." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "_Excluir" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Já está na sua lista" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Esta temporada contém metadados não gravados." ticketbooth-1.2.0/po/pt_BR.po000066400000000000000000001044341501006415200160150ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Juliano Dorigão , 2023. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2023-11-07 11:33+0000\n" "Last-Translator: Juliano Dorigão \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.2-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Largura da janela" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Altura da janela" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Janela maximizada" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Guia ativa" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Especifica se o aplicativo é executado pela primeira vez" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Especifica se o aplicativo baixou os dados necessários" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Especifica se o aplicativo baixou os dados necessários" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Ver estilo de classificação" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Pesquisar por Título" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Esquema de cores do aplicativo" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Idioma usado pelos resultados do TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Frequência para verificar novos dados no TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Data da última atualização automática" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Data da última atualização automática" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Limpar cache ao sair" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Acompanhe seus programas favoritos" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "O Ticket Booth permite que você crie sua lista de filmes e programas de TV, " "acompanhe os títulos assistidos e encontre informações sobre os últimos " "lançamentos." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "O Ticket Booth não permite que você assista ou baixe conteúdo. Este " "aplicativo usa a API TMDB, mas não é endossado ou certificado pelo TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Filmes" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Série de TV" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Série de TV" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Cancelar" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "OK" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Sem rede" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Conecte-se à Internet para concluir a configuração." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Limpar cache" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} Títulos" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Excluir todos os filmes" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Excluir todas as séries de TV" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth está usando atualmente {total_space:.2f} MB. Use as opções " "abaixo para liberar espaço." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB ocupado" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Atividades em segundo plano em execução" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Algumas atividades estão sendo executadas em segundo plano e precisam ser " "concluídas antes de sair. Procure o indicador na barra de cabeçalho para " "verificar quando terminar." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Editar filme" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Editar série de TV" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Temporada {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Adicionar {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Atualizar {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Temporada" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Assistido" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Marcar como assistido" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "Duração (minutos)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} Temporada" msgstr[1] "{num} Temporadas" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} Temporada" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} Episódio" msgstr[1] "{num} Episódios" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Status" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Idioma Original" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Título original" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Orçamento" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Receita" #: src/pages/details_page.py:529 msgid "In Production" msgstr "Em Produção" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Sim" #: src/pages/details_page.py:533 msgid "No" msgstr "Não" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}h {m}min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}min" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Atualizando {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Atualizar {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Carregando metadados…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Excluir {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Este título será excluído da sua lista de observação." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Cancelar" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Excluir" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Excluir {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Juliano Dorigão " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Filme" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Série de TV" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Cancelar" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Salvar" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Geral" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Título (obrigatório)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Data de lançamento" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Gêneros (separados por vírgula)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Duração (minutos)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Slogan" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Criado por" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Visão geral" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Temporadas (obrigatório)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Use o botão + para adicionar temporadas" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Adicionar" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Informações adicionais" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Orçamento (US$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Receita (US$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "Em produção" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Buscar no banco de dados de filmes…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Pesquisar por Título" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Comece a digitar na barra de pesquisa para ver uma lista de filmes e séries " "de TV correspondentes" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Nenhum resultado encontrado" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Tente uma pesquisa diferente" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Editar temporada" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Episódios (obrigatório)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Use o botão + para adicionar episódios" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Limpar dados de pesquisa em cache" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "Cancelar" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Apagar os dados" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Apagar os dados" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Filmes" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "Série de TV" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Geral" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar atalhos" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Mostrar preferências" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Sua lista" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Sair" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Gestão de biblioteca" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Adicionar título do TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Adicionar título manualmente" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Atualizar biblioteca" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Menu principal" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} Episódio" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Atualizar metadados" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Editar" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Excluir" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Descrição" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Temporadas" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Preferências" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Atalhos do teclado" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Sobre Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Editar episódio" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Número do episódio (obrigatório)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Preferências" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Baixar opcional" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Para uma experiência completa é necessário um download de 15 KB. A " "configuração inicial não conseguiu recuperar os dados automaticamente e, " "portanto, o modo offline foi ativado. Ele permanecerá ativo até que a " "configuração seja concluída." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Configuração completa" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Modo offline" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "O Ticket Booth pode funcionar totalmente offline. Se você optar por executar " "neste modo, alguns recursos que exigem Internet e/ou acesso a APIs de " "terceiros não estarão disponíveis." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Ativar modo offline" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "O banco de dados de filmes (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "O TMDB fornece metadados localizados para a maioria dos conteúdos. O Ticket " "Booth fará o download no idioma de sua preferência, selecionável abaixo. " "Caso não esteja disponível, será usado o inglês dos EUA e depois o idioma " "original do conteúdo. Se nenhum estiver disponível, resultará em uma linha " "em branco. Por favor, considere contribuir para o TMDB. Além disso, uma atualização " "automática é realizada na frequência de sua escolha." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Idioma dos resultados TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Frequência de atualização" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Reinicie Ticket Booth após alterar" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Nunca" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Diário" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Semanalmente" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Mensal" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Salvar" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Serviço de limpeza" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Limpar Cache ao Sair" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Limpar dados de pesquisa em cache" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Apagar os dados" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Sua lista está vazia" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "Adicione conteúdo com o botão +." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Sua lista" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "Assistido" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "Já está na sua lista" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Usar o modo offline" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Tente novamente na próxima execução" #: src/ui/views/db_update_view.blp:66 #, fuzzy msgid "Activate Notifications?" msgstr "Atualização automática" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Guia ativa" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Adicione um título à sua biblioteca" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Visão geral" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "Sua lista" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Modo offline ativado" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Ordenação" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Data adicionada (mais recente primeiro)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Data adicionada (o mais antigo primeiro)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Data de lançamento (mais recente primeiro)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Data de lançamento (mais antigo primeiro)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "Assistido" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Atualizar" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Do banco de dados de filmes (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Manualmente" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Atividades em segundo plano" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Sem atividades em segundo plano" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Editar pôster" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Excluir pôster" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Adicionar à lista" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Seguir o estilo do sistema" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Estilo claro" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Estilo escuro" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Aguardando rede…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Para uma experiência completa é necessário um download de 15 KB. Porém, se " "você não estiver conectado à Internet ou não quiser esperar, você pode pular " "esta etapa e continuar offline sem alguns recursos." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Preparando…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Baixando dados" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Filmes" #: src/views/main_view.py:146 #, fuzzy msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Atualização automática" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Atualização automática" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "Excluir {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Excluir {title}?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Todas as alterações neste episódio serão perdidas." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "_Excluir" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Já está na sua lista" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Esta temporada contém metadados não salvos." #, fuzzy #~ msgid "movie" #~ msgstr "Filme" #, fuzzy #~ msgid "movies" #~ msgstr "Filmes" #, fuzzy #~ msgid "series" #~ msgstr "Série de TV" ticketbooth-1.2.0/po/ta.po000066400000000000000000001504711501006415200154150ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # தமிழ்நேரம் , 2025. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2025-04-20 23:01+0000\n" "Last-Translator: தமிழ்நேரம் \n" "Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11.1-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "சாளர அகலம்" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "விண்டர் உயரம்" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "சாளரம் அதிகரிக்கப்பட்டது" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "செயலில் உள்ள தாவல்" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "பயன்பாடு முதல் முறையாக இயக்கப்பட்டதா என்பதைக் குறிப்பிடுகிறது" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "தரவுத்தளத்திற்கு புதுப்பிப்பு தேவைப்பட்டால் குறிப்பிடுகிறது" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "பயன்பாடு தேவையான தரவை பதிவிறக்கம் செய்தால் குறிப்பிடுகிறது" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "வரிசையாக்க பாணியைக் காண்க" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "கவனிக்காத உள்ளடக்கத்தை தனித்தனியாகப் பார்த்தது" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "பார்த்த உள்ளடக்கத்தை மறைக்கவும்" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "தேடல் பார் தெரிவுநிலை" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "தேடல் பயன்முறை" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "தேடல் வினவல்" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "பயன்பாட்டு வண்ணத் திட்டம்" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "TMDB முடிவுகள் பயன்படுத்தும் மொழி" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "TMDB இல் புதிய தரவை சரிபார்க்க அதிர்வெண்" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "கடைசி தன்னியக்க தேதி" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "கடைசி அறிவிப்பு ஆட்டோப்டேட் தேதி" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "வெளியேறும்போது கேச் அழிக்கவும்" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "பயனரின் TMDB விசையைப் பயன்படுத்தவும்" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "பயனரின் TMDB விசை" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "உங்களுக்கு பிடித்த நிகழ்ச்சிகளைக் கண்காணிக்கவும்" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "திரைப்படங்கள் மற்றும் தொலைக்காட்சி நிகழ்ச்சிகளின் உங்கள் கண்காணிப்பு பட்டியலை உருவாக்கவும், " "பார்த்த தலைப்புகளைக் கண்காணிக்கவும், அண்மைக் கால வெளியீடுகளைப் பற்றிய தகவல்களைக் கண்டறியவும் " "டிக்கெட் பூத் உங்களை அனுமதிக்கிறது." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "டிக்கெட் பூத் உள்ளடக்கத்தைப் பார்க்க அல்லது பதிவிறக்கம் செய்ய உங்களை அனுமதிக்காது. இந்த " "பயன்பாடு TMDB பநிஇ ஐப் பயன்படுத்துகிறது, ஆனால் இது TMDB ஆல் அங்கீகரிக்கப்படவில்லை அல்லது " "சான்றளிக்கப்படவில்லை." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "திரைப்படங்கள்" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "தொலைக்காட்சி தொடர்" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "தொலைக்காட்சி தொடர்" #: src/main.py:193 msgid "Confirm Export?" msgstr "ஏற்றுமதியை உறுதிப்படுத்தவா?" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" "உங்கள் நூலகத்தை ஏற்றுமதி செய்வது உங்கள் எல்லா தரவையும் கொண்ட ஒரு காப்பகத்தை உருவாக்கும். " "உங்கள் நூலகத்தை மீட்டெடுக்க இந்த காப்பகத்தை பின்னர் இறக்குமதி செய்யலாம்." #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "_CANCEL" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "ஏற்றுமதி (_E)" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "ஏற்றுமதி நூலகம்" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "_Ok" #: src/main.py:273 #, fuzzy msgid "Export failed" msgstr "ஏற்றுமதி (_E)" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "இறக்குமதியை உறுதிப்படுத்தவா?" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" "ஒரு நூலகத்தை இறக்குமதி செய்வது தற்போதைய நூலகத்துடன் ஒன்றிணைக்கும். இந்த நடவடிக்கை " "செயல்தவிர்க்க முடியாது மற்றும் மோதல்கள் ஏற்பட்டால், புதிய தரவு வைக்கப்படும்." #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "_ முக்கிய நற்பொருத்தம்" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "இறக்குமதி நூலகம்" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 #, fuzzy msgid "Import failed" msgstr "_ முக்கிய நற்பொருத்தம்" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "பிணையம் இல்லை" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "அமைப்பை முடிக்க இணையத்துடன் இணைக்கவும்." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "தெளிவான தற்காலிக சேமிப்பு" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} தலைப்புகள்" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "எல்லா திரைப்படங்களையும் நீக்கு" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "அனைத்து தொலைக்காட்சி தொடர்களையும் நீக்கு" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "டிக்கெட் பூத் தற்போது {total_space:.2f} எம்பி பயன்படுத்துகிறது. சிறிது இடத்தை " "விடுவிக்க கீழே உள்ள விருப்பங்களைப் பயன்படுத்தவும்." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} mb ஆக்கிரமிக்கப்பட்டுள்ளது" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "பின்னணி செயல்பாடு இயங்கும்" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "சில நடவடிக்கைகள் பின்னணியில் இயங்குகின்றன, மேலும் வெளியேறுவதற்கு முன்பு முடிக்க " "வேண்டும். அவை முடிந்ததும் சரிபார்க்க தலைப்பு பட்டியில் உள்ள குறிகாட்டியைத் தேடுங்கள்." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "திரைப்படத்தைத் திருத்து" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "டிவி தொடரைத் திருத்து" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "சீசன் {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "{title} சேர்க்கவும்" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "புதுப்பிப்பு {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "சீசன்" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "பார்த்தேன்" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "பார்த்தபடி குறி" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "திரைப்படத்தின் இயக்க நேரம்" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} பருவம்" msgstr[1] "{num} பருவங்கள்" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "பருவங்களின் எண்ணிக்கை" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} அத்தியாயம்" msgstr[1] "{num} அத்தியாயங்கள்" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "நிலை" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "அசல் மொழி" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "அசல் தலைப்பு" #: src/pages/details_page.py:509 msgid "Budget" msgstr "பட்செட்" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "வருவாய்" #: src/pages/details_page.py:529 msgid "In Production" msgstr "உற்பத்தியில்" #: src/pages/details_page.py:532 msgid "Yes" msgstr "ஆம்" #: src/pages/details_page.py:533 msgid "No" msgstr "இல்லை" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "டி.எம்.டி.பி ஐடி" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h} h {m} min" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m} மணித்துளி" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "புதுப்பித்தல் {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "புதுப்பிப்பு {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "மெட்டாடேட்டாவை ஏற்றுகிறது…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "{title} நீக்கு?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "இந்த தலைப்பு உங்கள் கண்காணிப்பு பட்டியலிலிருந்து நீக்கப்படும்." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_CANCEL" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Delete" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "{title} நீக்கு" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" "பதிப்புரிமை © 2023 - 2025 அலெசாண்ட்ரோ IEPURE\n" " சில சின்னங்கள் க்னோம் திட்டத்தின் பதிப்புரிமை" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "மொழிபெயர்ப்பாளர்-வரவு" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "படம்" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "தொலைக்காட்சி தொடர்" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "ரத்துசெய்" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "சேமி" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "பொது" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "தலைப்பு (தேவை)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "வெளியீட்டு தேதி" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "வகைகள் (கமா பிரிக்கப்பட்டவை)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "இயக்க நேரம் (நிமிடங்கள்)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "ஒலி" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "உருவாக்கியது" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "கண்ணோட்டம்" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "பருவங்கள் (தேவை)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "பருவங்களைச் சேர்க்க + பொத்தானைப் பயன்படுத்தவும்" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "கூட்டு" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "கூடுதல் தகவல்" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "பட்செட் (அமெரிக்க $)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "வருவாய் (அமெரிக்க $)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "உற்பத்தியில்" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "திரைப்பட தரவுத்தளத்தைத் தேடுங்கள்…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "ஒரு தலைப்பைத் தேடுங்கள்" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "பொருந்தக்கூடிய திரைப்படங்கள் மற்றும் தொலைக்காட்சி தொடர்களின் பட்டியலைக் காண தேடல் பட்டியில் " "தட்டச்சு செய்யத் தொடங்குங்கள்" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "முடிவுகள் எதுவும் கிடைக்கவில்லை" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "வேறு தேடலை முயற்சிக்கவும்" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "பருவத்தைத் திருத்து" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "அத்தியாயங்கள் (தேவை)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "அத்தியாயங்களைச் சேர்க்க + பொத்தானைப் பயன்படுத்தவும்" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "தற்காலிக சேமிப்பு தரவை அழிக்கவா?" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" "இந்த செயல்பாடு சேமிக்கப்பட்ட அனைத்து கேச் தரவையும் அழிக்கும். அடுத்த முறை நீங்கள் TMDB " "இலிருந்து உள்ளடக்கத்தைச் சேர்க்கும்போது இது மீண்டும் பதிவிறக்கம் செய்யப்படலாம்." #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "ரத்துசெய்" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "தெளிவான" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "சேமிக்கப்பட்ட தரவை அழிக்கவா?" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" "இந்த செயல்பாடு தேர்ந்தெடுக்கப்பட்ட தரவை நிரந்தரமாக நீக்கி, உங்கள் எல்லா மாற்றங்களையும் " "இழக்கும்." #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "திரைப்படங்கள்" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "தொலைக்காட்சி தொடர்" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "பொது" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "குறுக்குவழிகளைக் காட்டு" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "விருப்பங்களைக் காட்டு" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "உங்கள் கண்காணிப்பு பட்டியலைத் தேடுங்கள்" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "வெளியேறு" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "நூலக மேலாண்மை" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "TMDB இலிருந்து தலைப்பைச் சேர்க்கவும்" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "தலைப்பை கைமுறையாக சேர்க்கவும்" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "நூலகத்தை புதுப்பிக்கவும்" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "பட்டியல் விளையாடுங்கள்" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "அத்தியாயங்களின் எண்ணிக்கை" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "அடுத்த அத்தியாயத்தின் காற்று தேதி" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "மெட்டாடேட்டாவைப் புதுப்பிக்கவும்" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "தொகு" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "நீக்கு" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "விவரம்" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "பருவங்கள்" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "குறிப்புகள்" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_ முனைகள்" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "விசைப்பலகை குறுக்குவழிகள்" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "டிக்கெட் சாவடி" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "அத்தியாயத்தைத் திருத்து" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "அத்தியாயம் எண் (தேவை)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "விருப்பத்தேர்வுகள்" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "விருப்ப பதிவிறக்க" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "ஒரு முழுமையான அனுபவத்திற்கு, 15 கி.பை. பதிவிறக்கம் தேவை. ஆரம்ப அமைப்பால் தரவை தானாக " "மீட்டெடுக்க முடியவில்லை, இதனால் இணைப்பில்லாத பயன்முறை செயல்படுத்தப்பட்டுள்ளது. அமைப்பு " "முடியும் வரை இது செயலில் இருக்கும்." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "முழுமையான அமைப்பு" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "இணைப்பில்லாத பயன்முறை" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "டிக்கெட் சாவடி முற்றிலும் ஆஃப்லைனில் வேலை செய்ய முடியும். இந்த பயன்முறையில் இயக்க நீங்கள் " "தேர்வுசெய்தால், இணையம் மற்றும்/அல்லது மூன்றாம் தரப்பு பநிஇ களுக்கான அணுகல் தேவைப்படும் சில " "நற்பொருத்தங்கள் கிடைக்காது." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "இணைப்பில்லாத பயன்முறையை இயக்கவும்" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "திரைப்பட தரவுத்தளம் (டிஎம்டிபி)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "டி.எம்.டி.பி பெரும்பாலான உள்ளடக்கங்களுக்கு உள்ளூர்மயமாக்கப்பட்ட மெட்டாடேட்டாவை " "வழங்குகிறது. டிக்கெட் பூத் அதை உங்கள் விருப்பமான மொழியில் பதிவிறக்கும், கீழே " "தேர்ந்தெடுக்கப்பட்டிருக்கும். இது கிடைக்கவில்லை எனில், அது ஆங்கிலம் எங்களுக்கும் பின்னர் " "உள்ளடக்கத்தின் அசல் மொழிக்கும் குறைகிறது. இரண்டுமே கிடைக்கவில்லை என்றால், அது ஒரு வெற்று " "சரத்தை ஏற்படுத்தும். தயவுசெய்து tmdb க்கு பங்களிப்பதைக் கவனியுங்கள். கூடுதலாக, நீங்கள் " "தேர்ந்தெடுக்கும் அதிர்வெண்ணில் தானியங்கி புதுப்பிப்பு செய்யப்படுகிறது." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "TMDB முடிவுகள் மொழி" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "புதுப்பிப்பு அதிர்வெண்" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "மாறிய பின் டிக்கெட் சாவடியை மறுதொடக்கம் செய்யுங்கள்" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "ஒருபோதும்" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "நாள்தோறும்" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "வாராந்திர" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "மாதாந்திர" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "உங்கள் பநிஇ விசையைப் பயன்படுத்தவும்" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" "உங்களுடைய இங்கே " "பதிவு செய்யுங்கள்" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "உங்கள் பநிஇ விசை" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "சாவியை சேமிக்கவும்" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "வீட்டு பராமரிப்பு" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "வெளியேறும்போது கேச் அழிக்கவும்" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "தற்காலிக சேமிப்பு தேடல் தரவை அழிக்கவும்" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "தரவை அழிக்கவும்" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "உங்கள் கண்காணிப்பு பட்டியல் காலியாக உள்ளது" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" "+ பொத்தானைக் கொண்டு உள்ளடக்கத்தைச் சேர்க்கவும் அல்லது பழைய கண்காணிப்பு பட்டியலிலிருந்து " "இறக்குமதி செய்யவும்." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "உங்கள் கண்காணிப்பு பட்டியல்" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "கவனிக்கப்படாதது" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "உங்கள் கண்காணிப்பு பட்டியலைப் புதுப்பித்தல்" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "டிக்கெட் சாவடியைப் புதுப்பித்த பிறகு உள்ளக தரவுத்தள உள்ளீடுகளை புதுப்பிக்க வேண்டும்" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "இணைப்பில்லாத பயன்முறையைப் பயன்படுத்தவும்" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "அடுத்த ஓட்டத்தில் மீண்டும் முயற்சிக்கவும்" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "அறிவிப்புகளை செயல்படுத்தவா?" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" "இன்னும் தயாரிப்பில் உள்ள அனைத்து தொடர்களுக்கும், இதுவரை வெளியிடப்படாத அனைத்து " "திரைப்படங்களுக்கும் அறிவிப்புகளை செயல்படுத்த விரும்புகிறீர்களா?" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "செயல்படுத்து" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "செயலிழக்கச் செய்யுங்கள்" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "உங்கள் நூலகத்தில் ஒரு தலைப்பைச் சேர்க்கவும்" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "தேடல் பட்டியைக் காட்டவும்/மறைக்கவும்" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "கண்ணோட்டம்" #: src/ui/views/main_view.blp:108 #, fuzzy msgctxt "Search mode" msgid "Notes" msgstr "குறிப்புகள்" #: src/ui/views/main_view.blp:109 #, fuzzy msgctxt "Search mode" msgid "TMDB ID" msgstr "டி.எம்.டி.பி ஐடி" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "உங்கள் கண்காணிப்பு பட்டியலைத் தேடுங்கள்" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "இணைப்பில்லாத பயன்முறை இயக்கப்பட்டது" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_சார்டிங்" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A." #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "தேதி சேர்க்கப்பட்டது (புதிய முதல்)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "தேதி சேர்க்கப்பட்டது (முதல் முதல்)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "வெளியீட்டு தேதி (புதிய முதல்)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "வெளியீட்டு தேதி (முதல் முதல்)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "பற்றாக்குறையிலிருந்து தனித்தனியாகப் பார்த்தேன்" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "பார்த்தை மறை" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "புத்துணர்வு" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "_ முக்கிய நற்பொருத்தம்" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "ஏற்றுமதி (_E)" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "மூவி தரவுத்தளத்திலிருந்து (டிஎம்டிபி)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "கைமுறையாக" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "பின்னணி நடவடிக்கைகள்" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "பின்னணி நடவடிக்கைகள் இல்லை" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "சுவரொட்டியைத் திருத்து" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "சுவரொட்டியை நீக்கு" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "தொடரில் புதிய வெளியீடு உள்ளது" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "இந்தத் தொடரில் விரைவில் புதிய வெளியீடு உள்ளது" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "இந்த தலைப்பு பார்த்தபடி குறிக்கப்பட்டுள்ளது" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "கண்காணிப்பு பட்டியலில் சேர்க்கவும்" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "கணினி பாணியைப் பின்பற்றுங்கள்" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "ஒளி நடை" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "இருண்ட நடை" #: src/views/content_view.py:362 msgid "Search results" msgstr "தேடல் முடிவுகள்" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "நெட்வொர்க்கிற்காக காத்திருக்கிறது…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "ஒரு முழுமையான அனுபவத்திற்கு, 15KB பதிவிறக்கம் தேவை. இருப்பினும், நீங்கள் இணையத்துடன் " "இணைக்கப்படவில்லை அல்லது காத்திருக்க விரும்பவில்லை என்றால், நீங்கள் இந்த படியைத் தவிர்த்து சில " "நற்பொருத்தங்கள் இல்லாமல் ஆஃப்லைனில் தொடரலாம்." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "விசயங்களை ஆயத்தம் செய்வது…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "தரவைப் பதிவிறக்குகிறது" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "திரைப்படங்கள்" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "அறிவிப்பு பட்டியலின் தானியங்கி புதுப்பிப்பு" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "தானியங்கி புதுப்பிப்பு" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "{title} க்கான புதிய வெளியீடு" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "{title} இன் புதிய அத்தியாயம் {days} நாள் முன்பு வெளியிடப்பட்டது." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "உங்கள் கண்காணிப்பு பட்டியலில் {num} டிவி தொடருக்கான புதிய வெளியீடு" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "டிவி தொடர் {series}." #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "{title} விரைவில் ஒரு வெளியீட்டைக் கொண்டிருக்கும்" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "ஒரு புதிய அத்தியாயம் {days} நாளில் வெளியிடும்." #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" "Your உங்கள் கண்காணிப்பு பட்டியலில் {num} டிவி தொடர்கள் விரைவில் ஒரு புதிய அத்தியாயத்தைக் " "கொண்டிருக்கும்" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "{title} உற்பத்தியிலிருந்து வெளியேறிவிட்டது" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" "{title} அதன் ஓட்டத்தை மூடியுள்ளது. உங்களுக்கு பிடித்த தருணங்களை மறுபரிசீலனை செய்ய " "அல்லது அடுத்த பிங்கைக் கண்டுபிடிப்பதற்கான சரியான நேரம் இது!" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" "Your உங்கள் கண்காணிப்புப் பட்டியலின் {num} டிவி தொடர் உற்பத்தியிலிருந்து வெளியேறிவிட்டது" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "{title} அதன் வெளியீட்டைக் கொண்டுள்ளது!" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "{title} {days} நாள் முன்பு வெளியிடப்பட்டது." #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" "Your உங்கள் கண்காணிப்பு பட்டியலில் உள்ள {num} திரைப்படங்கள் அவற்றின் வெளியீடுகளைக் " "கொண்டுள்ளன." #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "திரைப்படங்கள் {movies}." #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "{title} விரைவில் அதன் வெளியீட்டைக் கொண்டிருக்கும்!" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "{title} அதன் வெளியீடு {days} நாளில் இருக்கும்." #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" "Your உங்கள் கண்காணிப்பு பட்டியலில் உள்ள {num} திரைப்படங்கள் விரைவில் அவற்றின் வெளியீடுகளைக் " "கொண்டிருக்கும்" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "{num} உங்கள் கண்காணிப்பு பட்டியலின் உருப்படிகள் ஒரு புதுப்பிப்பைக் கொண்டுள்ளன" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "இந்த புதுப்பிப்புகள் {count_movies} திரைப்படத்தை பாதிக்கின்றன" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr " மற்றும் " #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr " {count_series} டிவி தொடர்" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "இந்த புதுப்பிப்புகள் {count_series} டிவி தொடரை பாதிக்கின்றன" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "{title} நீக்கு?" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "இந்த அத்தியாயத்தின் அனைத்து மாற்றங்களும் இழக்கப்படும்." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "_Delete" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "ஏற்கனவே உங்கள் கண்காணிப்பு பட்டியலில்" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "இந்த பருவத்தில் சேமிக்கப்படாத மேனிலை தரவு உள்ளது." #~ msgid "Notify me on new releases" #~ msgstr "புதிய வெளியீடுகளில் எனக்கு அறிவிக்கவும்" ticketbooth-1.2.0/po/ticketbooth.pot000066400000000000000000000707331501006415200175160ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 msgid "Specifies if the database needs an update" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 msgid "Search mode" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 msgid "Last notification autoupdate date" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 msgid "Movie Details" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 msgid "TV Series Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 msgid "TV Series Details" msgstr "" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 msgctxt "alert dialog action" msgid "_Cancel" msgstr "" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 msgctxt "alert dialog action" msgid "_OK" msgstr "" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "" #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "" #: src/pages/details_page.py:223 msgid "Runtime of Movie" msgstr "" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "" msgstr[1] "" #: src/pages/details_page.py:239 msgid "Number of Seasons" msgstr "" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "" msgstr[1] "" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "" #: src/pages/details_page.py:509 msgid "Budget" msgstr "" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "" #: src/pages/details_page.py:529 msgid "In Production" msgstr "" #: src/pages/details_page.py:532 msgid "Yes" msgstr "" #: src/pages/details_page.py:533 msgid "No" msgstr "" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "" #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "" #: src/ui/dialogs/message_dialogs.blp:9 msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 msgctxt "message dialog action" msgid "Cancel" msgstr "" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 msgctxt "message dialog action" msgid "Clear" msgstr "" #: src/ui/dialogs/message_dialogs.blp:19 msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 msgid "Movies" msgstr "" #: src/ui/dialogs/message_dialogs.blp:34 msgid "TV Series" msgstr "" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "" #: src/ui/gtk/help-overlay.blp:28 msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "" #: src/ui/pages/details_page.blp:146 msgid "Number of Episodes" msgstr "" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "" #: src/ui/preferences.blp:19 msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 msgctxt "preferences" msgid "Save Key" msgstr "" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "" #: src/ui/views/content_view.blp:15 msgid "Add content with the + button or import from an older watchlist." msgstr "" #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "" #: src/ui/views/content_view.blp:140 msgid "Unwatched" msgstr "" #: src/ui/views/db_update_view.blp:29 msgid "Updating your watchlist" msgstr "" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 msgid "Activate" msgstr "" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 msgctxt "Search mode" msgid "Overview" msgstr "" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 msgid "Search Your Watchlist" msgstr "" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 msgid "Hide watched" msgstr "" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "" #: src/views/main_view.py:146 msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, python-brace-format msgid "New release for {title}" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "" #: src/widgets/episode_row.py:270 msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "" #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 msgctxt "alert dialog action" msgid "_Delete" msgstr "" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "" #: src/widgets/season_expander.py:144 msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "" ticketbooth-1.2.0/po/tr.po000066400000000000000000001036651501006415200154410ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # Sabri Ünal , 2024. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2024-04-09 15:54+0000\n" "Last-Translator: Sabri Ünal \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.5-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Pencere genişliği" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Pencere yüksekliği" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Pencere büyültüldü" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Etkin sekme" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Uygulamanın ilk kez çalıştırılma durumunu belirtir" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Uygulamanın gerekli verileri indirme durumunu belirtir" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Uygulamanın gerekli verileri indirme durumunu belirtir" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Sıralama biçemini görüntüle" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Başlık Ara" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Uygulama renk şeması" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "TMDB sonuçları için kullanılan dil" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "TMDB yeni verilerini denetleme sıklığı" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Son kendiliğinden güncelleme tarihi" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Son kendiliğinden güncelleme tarihi" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Çıkışta önbelleği temizle" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Gözde programlarınızı takip edin" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Bilet Gişesi, film ve TV Şovları izleme listesi oluşturmanızı, izlenen " "başlıkları takip etmenizi ve en son yayınlar hakkında bilgi bulmanızı sağlar." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Bilet Gişesi içerik izlemenizi ya da indirmenizi sağlamaz. Bu uygulama TMDB " "API'sini kullanır ancak TMDB tarafından onaylanmamış veya " "sertifikalandırılmamıştır." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Filmler" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Diziler" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Diziler" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "İ_ptal" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "Tamam" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Ağ Yok" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Kurulumu tamamlamak için İnternete bağlan." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Önbelleği temizle" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} Başlık" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Tüm filmleri sil" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Tüm TV Dizilerini Sil" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Bilet gişesi {total_space:.2f} MB kullanıyor. Biraz yer açmak için aşağıdaki " "seçenekleri kullanın." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "{space:.2f} MB dolu" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Arka Plan Etkinlikleri Çalışıyor" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Kimi etkinlikler arka planda çalışır ve çıkmadan önce tamamlanması " "gerekiyor. Ne zaman bittiklerini denetlemek için başlık çubuğundaki " "göstergeye bakın." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Filmi Düzenle" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "TV Dizilerini Düzenle" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "{num}. Sezon" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "{title} Ekle" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "{title} Güncelle" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Sezon" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "İzlendi" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "İzlendi Olarak İmle" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "Yayın Süresi (dakika)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} Sezon" msgstr[1] "{num} Sezon" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} Sezon" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} Bölüm" msgstr[1] "{num} Bölüm" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Durum" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Özgün Dil" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Özgün Başlık" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Bütçe" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Gelir" #: src/pages/details_page.py:529 msgid "In Production" msgstr "Yapım Aşamasında" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Evet" #: src/pages/details_page.py:533 msgid "No" msgstr "Hayır" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}sa {m}dk" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}dk" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "{title} Güncelleniyor" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "{title} Güncelle" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Üst Veriler Yükleniyor…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "{title} Silinsin Mi?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Bu başlık izleme listenizden silinecek." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "İ_ptal" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Sil" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "{title} Sil" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "Sabri Ünal " #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Film" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Diziler" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "İptal" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Kaydet" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Genel" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Başlık (gerekli)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Yayınlanma Tarihi" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Türler (virgülle ayrılmış)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Yayın Süresi (dakika)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Etiket Satırı" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Oluşturan" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Genel Görünüm" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Sezon (gerekli)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Sezon eklemek için + düğmesini kullanın" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Ekle" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Ek Bilgi" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Budget (ABD Doları)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Gelir (ABD Doları)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "Yapım aşamasında" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Film Veritabanında Ara…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Başlık Ara" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "Eşleşen film ve dizilerin listesini görmek için arama çubuğuna yazın" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Sonuç Bulunamadı" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Başka arama deneyin" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Sezonu Düzenle" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Bölümler (gerekli)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Bölüm eklemek için + düğmesini kullanın" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Önbelleklenmiş Arama Verilerini Temizle" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "İptal" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Verileri Temizle" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Verileri Temizle" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Filmler" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "Diziler" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Genel" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Kısayolları Göster" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Tercihleri Göster" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "İzleme Listeniz" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Çık" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Kitaplık yönetimi" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "TMDB'den başlık ekle" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Başlığı elle ekle" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Kütüphaneyi yenile" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Ana Menü" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} Bölüm" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Meta Verileri Güncelle" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Düzenle" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Sil" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Açıklama" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Sezon" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Tercihler" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "Bilet Gişesi _Hakkında" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Bölümü Düzenle" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Bölüm Numarası (gerekli)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Tercihler" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "İsteğe Bağlı İndirme" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Tam deneyim için 15 KB'lık bir indirme gerekli. İlk kurulum verileri " "kendiliğinden alamadı ve bu nedenle çevrim dışı kip etkinleştirildi. Bu kip, " "kurulum tamamlanana kadar etkin olacak." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Kurulumu Tamamla" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Çevrim Dışı Kip" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Bilet Gişesi tamamen çevrim dışı çalışabilir. Bu kipte çalıştırmayı " "seçerseniz, İnternet ve/veya üçüncü taraf API'lerine erişim gerektiren " "özellikler kullanılamaz." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Çevrim Dışı Kipi Etkinleştir" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "Film Veritabanı (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB çoğu içerik için yerelleştirilmiş üst veri sağlar. Bilet Gişesi bu " "verileri tercih ettiğiniz dilde indirir. Olmaması durumunda, ABD İngilizcesi " "kullanılır, o da olmazsa içeriğin özgün diline geri dönülür. Her ikisi de " "yoksa boş dize döner. Lütfen TMDB'ye katkıda bulunmayı ihmal etmeyin. Ek olarak, " "seçtiğiniz sıklıkta kendiliğinden güncellenir." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "TMDB Sonuç Dili" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Güncelleme Sıklığı" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Değiştirdikten sonra Bilet Gişesini yeniden başlat" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Asla" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Günlük" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Haftalık" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Aylık" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Kaydet" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Temizlik" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Çıkışta Önbelleği Temizle" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Önbelleklenmiş Arama Verilerini Temizle" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Verileri Temizle" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "İzleme Listeniz Boş" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "+ düğmesi ile içerik ekleyin." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "İzleme Listeniz" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "İzlendi" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "Zaten izleme listenizde" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Çevrim Dışı Kipi Kullan" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Sonraki çalıştırmada tekrar dene" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Etkin sekme" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Kitaplığınıza başlık ekleyin" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Genel Görünüm" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "İzleme Listeniz" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Çevrim Dışı Kip Etkin" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Sıralama" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "A-Z" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Z-A" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Eklenme tarihi (yeniden > eskiye)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Eklenme tarihi (eskiden > yeniye)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Yayın tarihi (yeniden > eskiye)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Yayın tarihi (eskiden > yeniye)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "İzlendi" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Yenile" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "Film Veritabanından (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Elle" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Arka Plan Etkinlikleri" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Arka Plan Etkinliği Yok" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Posteri düzenle" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Posteri sil" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "İzleme listesine ekle" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Sistem biçemini izle" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Açık biçem" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Koyu biçem" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "Ağ Bekleniyor…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Tam bir deneyim için 15 KB'lık bir indirme gerekli. Ancak, internete bağlı " "değilseniz ya da beklemek istemiyorsanız, bu adımı atlayabilir ve bazı " "özellikler olmadan çevrim dışı olarak devam edebilirsiniz." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Her şey hazırlanıyor…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Veriler indiriliyor" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Filmler" #: src/views/main_view.py:146 #, fuzzy msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Kendiliğinden Güncelle" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Kendiliğinden Güncelle" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "{title} Sil" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "{title} Silinsin Mi?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Bu bölümdeki tüm değişiklikler kaybolacak." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "_Sil" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Zaten izleme listenizde" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Bu sezon kaydedilmemiş üst veriler içerir." #, fuzzy #~ msgid "movie" #~ msgstr "Film" #, fuzzy #~ msgid "movies" #~ msgstr "Filmler" #, fuzzy #~ msgid "series" #~ msgstr "Diziler" ticketbooth-1.2.0/po/uk.po000066400000000000000000001141511501006415200154230ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the ticketbooth package. # DartDeaDia , 2023. # Сергій , 2024. msgid "" msgstr "" "Project-Id-Version: ticketbooth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-11 10:41+0200\n" "PO-Revision-Date: 2024-01-07 19:06+0000\n" "Last-Translator: Сергій \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 5.4-dev\n" #. TRANSLATORS: do not translate #: data/me.iepure.Ticketbooth.desktop.in:8 msgid "@app_name@" msgstr "@app_name@" #: data/me.iepure.Ticketbooth.desktop.in:14 msgid "Movies;Films;Shows;TV;Series;Anime;Watch;List;Library;" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:15 msgid "Window width" msgstr "Ширина вікна" #: data/me.iepure.Ticketbooth.gschema.xml.in:19 msgid "Window height" msgstr "Висота вікна" #: data/me.iepure.Ticketbooth.gschema.xml.in:23 msgid "Window maximized" msgstr "Вікно розгорнуто" #: data/me.iepure.Ticketbooth.gschema.xml.in:31 msgid "Active tab" msgstr "Активна вкладка" #: data/me.iepure.Ticketbooth.gschema.xml.in:35 msgid "Specifies if the app is run for the first time" msgstr "Вказує, чи запускається програма вперше" #: data/me.iepure.Ticketbooth.gschema.xml.in:39 #, fuzzy msgid "Specifies if the database needs an update" msgstr "Вказує, чи завантажив застосунок необхідні дані" #: data/me.iepure.Ticketbooth.gschema.xml.in:43 msgid "Specifies if the app downloaded the required data" msgstr "Вказує, чи завантажив застосунок необхідні дані" #: data/me.iepure.Ticketbooth.gschema.xml.in:57 msgid "View sorting style" msgstr "Переглянути стиль упорядкування" #: data/me.iepure.Ticketbooth.gschema.xml.in:61 msgid "Separate watched content from unwatched" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:65 msgid "Hide watched content" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:71 msgid "Search bar visibility" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:82 #, fuzzy msgid "Search mode" msgstr "Пошук стрiчки" #: data/me.iepure.Ticketbooth.gschema.xml.in:86 msgid "Search query" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:98 msgid "App color scheme" msgstr "Колірна схема додатку" #: data/me.iepure.Ticketbooth.gschema.xml.in:102 msgid "Language used by TMDB results" msgstr "Мова, що використовується в результатах TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:115 msgid "Frequency to check for new data on TMDB" msgstr "Частота перевірки нових даних у TMDB" #: data/me.iepure.Ticketbooth.gschema.xml.in:119 msgid "Last autoupdate date" msgstr "Дата останнього автооновлення" #: data/me.iepure.Ticketbooth.gschema.xml.in:123 #, fuzzy msgid "Last notification autoupdate date" msgstr "Дата останнього автооновлення" #: data/me.iepure.Ticketbooth.gschema.xml.in:127 msgid "Clear cache on exit" msgstr "Очищення кешу при виході" #: data/me.iepure.Ticketbooth.gschema.xml.in:131 msgid "Use the user's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.gschema.xml.in:135 msgid "User's TMDB key" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:15 src/ui/about_dialog.blp:10 msgid "Keep track of your favorite shows" msgstr "Відстежуйте ваші улюблені шоу" #: data/me.iepure.Ticketbooth.metainfo.xml.in:20 msgid "" "Ticket Booth allows you to build your watchlist of movies and TV Shows, keep " "track of watched titles, and find information about the latest releases." msgstr "" "Ticket Booth дозволяє створювати список фільмів і серіалів для перегляду, " "відстежувати переглянуті стрічки та знаходити інформацію про найновіші " "випуски." #: data/me.iepure.Ticketbooth.metainfo.xml.in:22 msgid "" "Ticket Booth does not allow you to watch or download content. This app uses " "the TMDB API but is not endorsed or certified by TMDB." msgstr "" "Ticket Booth не дозволяє переглядати або завантажувати контент. Цей додаток " "використовує API TMDB, але не схвалений і не сертифікований TMDB." #: data/me.iepure.Ticketbooth.metainfo.xml.in:44 msgid "Movie Library" msgstr "" #: data/me.iepure.Ticketbooth.metainfo.xml.in:48 #, fuzzy msgid "Movie Details" msgstr "Фільми" #: data/me.iepure.Ticketbooth.metainfo.xml.in:52 #, fuzzy msgid "TV Series Library" msgstr "Серіали" #: data/me.iepure.Ticketbooth.metainfo.xml.in:56 #, fuzzy msgid "TV Series Details" msgstr "Серіали" #: src/main.py:193 msgid "Confirm Export?" msgstr "" #: src/main.py:194 msgid "" "Exporting your library will create an archive containing all your data. You " "can import this archive later to restore your library." msgstr "" #: src/main.py:196 src/main.py:332 src/widgets/episode_row.py:272 #: src/widgets/season_expander.py:146 #, fuzzy msgctxt "alert dialog action" msgid "_Cancel" msgstr "_Скасувати" #: src/main.py:197 msgctxt "alert dialog action" msgid "_Export" msgstr "" #: src/main.py:230 msgctxt "Background activity title" msgid "Exporting library" msgstr "" #: src/main.py:263 msgid "Export Completed" msgstr "" #: src/main.py:264 msgid "The library has been exported successfully." msgstr "" #: src/main.py:267 src/main.py:277 src/main.py:408 src/main.py:417 #: src/preferences.py:256 src/window.py:235 #, fuzzy msgctxt "alert dialog action" msgid "_OK" msgstr "ОК" #: src/main.py:273 msgid "Export failed" msgstr "" #: src/main.py:274 msgid "An error occurred while exporting the library." msgstr "" #: src/main.py:329 msgid "Confirm Import?" msgstr "" #: src/main.py:330 msgid "" "Importing a library will merge it with the current library. This action " "cannot be undone and in case of conflicts, the new data will be kept." msgstr "" #: src/main.py:333 msgctxt "alert dialog action" msgid "_Import" msgstr "" #: src/main.py:366 msgctxt "Background activity title" msgid "Importing library" msgstr "" #: src/main.py:404 msgid "Import Completed" msgstr "" #: src/main.py:405 msgid "The library has been imported successfully." msgstr "" #: src/main.py:413 msgid "Import failed" msgstr "" #: src/main.py:414 msgid "" "Please check the selected archive and try again. Only archives created by " "Ticket Booth are supported." msgstr "" #: src/preferences.py:253 msgctxt "message dialog heading" msgid "No Network" msgstr "Немає мережі" #: src/preferences.py:254 msgctxt "message dialog body" msgid "Connect to the Internet to complete the setup." msgstr "Підключіться до Інтернету, щоб завершити налаштування." #: src/preferences.py:321 msgctxt "Background activity title" msgid "Clear cache" msgstr "Очистити кеш" #. TRANSLATORS: {number} is the number of titles #: src/preferences.py:373 src/preferences.py:375 #, python-brace-format msgid "{number} Titles" msgstr "{number} Стрiчок" #: src/preferences.py:412 msgctxt "Background activity title" msgid "Delete all movies" msgstr "Видалити всі фільми" #: src/preferences.py:423 msgctxt "Background activity title" msgid "Delete all TV Series" msgstr "Видалити всі серіали" #. TRANSLATORS: {total_space:.2f} is the total occupied space #: src/preferences.py:498 #, python-brace-format msgid "" "Ticket Booth is currently using {total_space:.2f} MB. Use the options below " "to free some space." msgstr "" "Ticket Booth зараз використовує {total_space:.2f} МБ. Скористайтеся " "наведеними нижче опціями, щоб звільнити місце." #: src/preferences.py:502 src/preferences.py:504 #, python-brace-format msgid "{space:.2f} MB occupied" msgstr "Зайнято {space:.2f} МБ" #: src/window.py:232 msgctxt "message dialog heading" msgid "Background Activies Running" msgstr "Запуск фонових дій" #: src/window.py:233 msgctxt "message dialog body" msgid "" "Some activities are running in the background and need to be completed " "before exiting. Look for the indicator in the header bar to check when they " "are finished." msgstr "" "Деякі дії виконуються у фоновому режимі і мають бути завершені перед " "виходом. Щоб перевірити, коли дія завершиться, подивіться на індикатор у " "рядку заголовка." #: src/dialogs/add_manual_dialog.py:90 msgid "Edit Movie" msgstr "Редагувати фільм" #: src/dialogs/add_manual_dialog.py:93 msgid "Edit TV Series" msgstr "Редагувати серіал" #: src/dialogs/add_manual_dialog.py:296 #, python-brace-format msgid "Season {num}" msgstr "Сезон {num}" #: src/dialogs/add_manual_dialog.py:336 src/widgets/search_result_row.py:165 #, python-brace-format msgctxt "Background activity title" msgid "Add {title}" msgstr "Додати {title}" #: src/dialogs/add_manual_dialog.py:342 #, python-brace-format msgctxt "Background activity title" msgid "Update {title}" msgstr "Оновити {title}" #: src/dialogs/edit_season_dialog.py:44 src/widgets/season_expander.py:43 msgid "Season" msgstr "Сезон" #. type: ignore #: src/pages/details_page.py:213 src/pages/details_page.py:311 #: src/pages/details_page.py:373 src/pages/details_page.py:442 #: src/pages/details_page.py:588 src/ui/views/content_view.blp:163 #: src/ui/widgets/poster_button.blp:141 src/widgets/episode_row.py:129 #: src/widgets/episode_row.py:160 src/widgets/episode_row.py:330 msgid "Watched" msgstr "Переглянуте" #: src/pages/details_page.py:216 src/pages/details_page.py:314 #: src/pages/details_page.py:376 src/pages/details_page.py:445 #: src/pages/details_page.py:591 src/widgets/episode_row.py:132 #: src/widgets/episode_row.py:163 src/widgets/episode_row.py:333 msgid "Mark as Watched" msgstr "Позначити як переглянуте" #: src/pages/details_page.py:223 #, fuzzy msgid "Runtime of Movie" msgstr "Тривалість (хвилини)" #. TRANSLATORS: {num} is the total number of seasons #: src/pages/details_page.py:235 #, python-brace-format msgid "{num} Season" msgid_plural "{num} Seasons" msgstr[0] "{num} Сезон" msgstr[1] "{num} Сезонiв" msgstr[2] "{num} Сезонiв" #: src/pages/details_page.py:239 #, fuzzy msgid "Number of Seasons" msgstr "{num} Сезон" #. TRANSLATORS: {num} is the total number of episodes #: src/pages/details_page.py:244 src/pages/details_page.py:291 #, python-brace-format msgid "{num} Episode" msgid_plural "{num} Episodes" msgstr[0] "{num} Серія" msgstr[1] "{num} Серій" msgstr[2] "{num} Серій" #: src/pages/details_page.py:478 src/ui/dialogs/add_manual.blp:182 msgid "Status" msgstr "Статус" #: src/pages/details_page.py:486 src/ui/dialogs/add_manual.blp:186 msgid "Original Language" msgstr "Мова оригіналу" #: src/pages/details_page.py:496 src/ui/dialogs/add_manual.blp:192 msgid "Original Title" msgstr "Оригінальна назва" #: src/pages/details_page.py:509 msgid "Budget" msgstr "Кошторис" #: src/pages/details_page.py:519 msgid "Revenue" msgstr "Касові збори" #: src/pages/details_page.py:529 msgid "In Production" msgstr "У виробництві" #: src/pages/details_page.py:532 msgid "Yes" msgstr "Так" #: src/pages/details_page.py:533 msgid "No" msgstr "Ні" #: src/pages/details_page.py:538 msgid "TMDB ID" msgstr "" #. TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively #: src/pages/details_page.py:564 src/widgets/episode_row.py:185 #, python-brace-format msgid "{h}h {m}min" msgstr "{h}год {m}хв" #. TRANSLATORS: {m} is the runtime minutes #: src/pages/details_page.py:567 src/widgets/episode_row.py:189 #, python-brace-format msgid "{m}min" msgstr "{m}хв" #. TRANSLATORS: {title} is the showed content's title #: src/pages/details_page.py:650 #, python-brace-format msgid "Updating {title}" msgstr "Оновлення {title}" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:657 #, python-brace-format msgid "Update {title}" msgstr "Оновити {title}" #: src/pages/details_page.py:720 msgid "Loading Metadata…" msgstr "Завантаження метаданих…" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:740 #, python-brace-format msgctxt "message dialog heading" msgid "Delete {title}?" msgstr "Видалити {title}?" #. type: ignore #: src/pages/details_page.py:742 msgctxt "message dialog body" msgid "This title will be deleted from your watchlist." msgstr "Ця стрiчка буде видалена з вашого списку спостереження." #: src/pages/details_page.py:743 msgctxt "message dialog action" msgid "_Cancel" msgstr "_Скасувати" #: src/pages/details_page.py:744 msgctxt "message dialog action" msgid "_Delete" msgstr "_Видалити" #. TRANSLATORS: {title} is the content's title #: src/pages/details_page.py:777 #, python-brace-format msgid "Delete {title}" msgstr "Видалити {title}" #: src/ui/about_dialog.blp:9 msgid "" "Copyright © 2023 - 2025 Alessandro Iepure\n" "Some icons are copyright of the GNOME Project" msgstr "" #. TRANSLATORS: replace with your name (with optional email or website) #: src/ui/about_dialog.blp:16 msgid "translator-credits" msgstr "DartDeaDia" #: src/ui/dialogs/add_manual.blp:42 src/widgets/search_result_row.py:80 msgctxt "Category" msgid "Movie" msgstr "Кіно" #: src/ui/dialogs/add_manual.blp:47 src/views/main_view.py:63 #: src/widgets/search_result_row.py:82 msgctxt "Category" msgid "TV Series" msgstr "Серіали" #: src/ui/dialogs/add_manual.blp:55 src/ui/dialogs/edit_season.blp:24 msgid "Cancel" msgstr "Скасувати" #: src/ui/dialogs/add_manual.blp:61 src/ui/dialogs/edit_season.blp:30 #: src/ui/pages/edit_episode_page.blp:19 msgid "Save" msgstr "Зберегти" #: src/ui/dialogs/add_manual.blp:86 src/ui/dialogs/edit_season.blp:52 #: src/ui/pages/edit_episode_page.blp:41 msgid "General" msgstr "Загальне" #: src/ui/dialogs/add_manual.blp:89 src/ui/dialogs/edit_season.blp:55 #: src/ui/pages/edit_episode_page.blp:55 msgid "Title (required)" msgstr "Назва (обов'язково)" #: src/ui/dialogs/add_manual.blp:94 msgid "Release Date" msgstr "Дата випуску" #: src/ui/dialogs/add_manual.blp:113 msgid "Genres (comma separated)" msgstr "Жанри (через кому)" #: src/ui/dialogs/add_manual.blp:119 src/ui/pages/edit_episode_page.blp:60 msgid "Runtime (minutes)" msgstr "Тривалість (хвилини)" #: src/ui/dialogs/add_manual.blp:129 msgid "Tagline" msgstr "Слоган" #: src/ui/dialogs/add_manual.blp:135 src/ui/pages/details_page.blp:292 msgid "Created by" msgstr "Автор" #: src/ui/dialogs/add_manual.blp:140 src/ui/pages/edit_episode_page.blp:71 msgid "Overview" msgstr "Загальна інформація" #: src/ui/dialogs/add_manual.blp:160 msgid "Seasons (required)" msgstr "Сезони (обов'язково)" #: src/ui/dialogs/add_manual.blp:161 msgid "Use the + button to add seasons" msgstr "Використовуйте кнопку \"+\", щоб додати сезони" #: src/ui/dialogs/add_manual.blp:166 src/ui/dialogs/edit_season.blp:67 msgid "Add" msgstr "Додати" #: src/ui/dialogs/add_manual.blp:179 src/ui/pages/details_page.blp:351 msgid "Additional Information" msgstr "Додаткова інформація" #: src/ui/dialogs/add_manual.blp:198 msgid "Budget (US$)" msgstr "Кошторис (US$)" #: src/ui/dialogs/add_manual.blp:210 msgid "Revenue (US$)" msgstr "Касові збори (US$)" #: src/ui/dialogs/add_manual.blp:220 msgid "In production" msgstr "У виробництві" #: src/ui/dialogs/add_tmdb.blp:27 msgid "Search The Movie Database…" msgstr "Пошук у базі даних фільмів…" #: src/ui/dialogs/add_tmdb.blp:37 msgid "Search For a Title" msgstr "Пошук стрiчки" #: src/ui/dialogs/add_tmdb.blp:39 msgid "" "Start typing in the search bar to see a list of matching movies and TV series" msgstr "" "Почніть вводити текст у рядку пошуку, щоб побачити список відповідних " "фільмів і серіалів" #: src/ui/dialogs/add_tmdb.blp:46 msgid "No Results Found" msgstr "Нічого не знайдено" #: src/ui/dialogs/add_tmdb.blp:48 msgid "Try a different search" msgstr "Спробуйте інший варіант пошуку" #: src/ui/dialogs/edit_season.blp:14 msgid "Edit Season" msgstr "Редагувати сезон" #: src/ui/dialogs/edit_season.blp:61 msgid "Episodes (required)" msgstr "Серії (обов'язково)" #: src/ui/dialogs/edit_season.blp:62 msgid "Use the + button to add episodes" msgstr "Використовуйте кнопку \"+\", щоб додати серії" #: src/ui/dialogs/message_dialogs.blp:9 #, fuzzy msgctxt "message dialog heading" msgid "Clear Cached Data?" msgstr "Очистити кешовані дані пошуку" #: src/ui/dialogs/message_dialogs.blp:10 msgctxt "message dialog body" msgid "" "This operation will clear all stored cache data. It might get downloaded " "again next time you add content from TMDB." msgstr "" #: src/ui/dialogs/message_dialogs.blp:13 src/ui/dialogs/message_dialogs.blp:40 #, fuzzy msgctxt "message dialog action" msgid "Cancel" msgstr "Скасувати" #: src/ui/dialogs/message_dialogs.blp:14 src/ui/dialogs/message_dialogs.blp:41 #, fuzzy msgctxt "message dialog action" msgid "Clear" msgstr "Очистити дані" #: src/ui/dialogs/message_dialogs.blp:19 #, fuzzy msgctxt "message dialog heading" msgid "Clear Stored Data?" msgstr "Очистити дані" #: src/ui/dialogs/message_dialogs.blp:20 msgctxt "message dialog body" msgid "" "This operation will permanentlly delete the selected data, loosing all your " "changes." msgstr "" #: src/ui/dialogs/message_dialogs.blp:26 #, fuzzy msgid "Movies" msgstr "Фільми" #: src/ui/dialogs/message_dialogs.blp:34 #, fuzzy msgid "TV Series" msgstr "Серіали" #: src/ui/gtk/help-overlay.blp:15 msgctxt "shortcut window" msgid "General" msgstr "Загальне" #: src/ui/gtk/help-overlay.blp:18 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показати клавіатурні скорочення" #: src/ui/gtk/help-overlay.blp:23 msgctxt "shortcut window" msgid "Show Preferences" msgstr "Показати налаштування" #: src/ui/gtk/help-overlay.blp:28 #, fuzzy msgctxt "shortcut window" msgid "Search your Watchlist" msgstr "Ваш список спостереження" #: src/ui/gtk/help-overlay.blp:33 msgctxt "shortcut window" msgid "Quit" msgstr "Вийти" #: src/ui/gtk/help-overlay.blp:39 msgctxt "shortcut window" msgid "Library management" msgstr "Керування бібліотекою" #: src/ui/gtk/help-overlay.blp:42 msgctxt "shortcut window" msgid "Add title from TMDB" msgstr "Додати назву з бази даних TMDB" #: src/ui/gtk/help-overlay.blp:47 msgctxt "shortcut window" msgid "Add title manually" msgstr "Додати стрічку вручну" #: src/ui/gtk/help-overlay.blp:51 msgctxt "shortcut window" msgid "Refresh library" msgstr "Оновити бібліотеку" #: src/ui/pages/details_page.blp:30 src/ui/views/main_view.blp:84 msgid "Main Menu" msgstr "Головне меню" #: src/ui/pages/details_page.blp:146 #, fuzzy msgid "Number of Episodes" msgstr "{num} Серія" #: src/ui/pages/details_page.blp:156 msgid "Air Date of Next Episode" msgstr "" #: src/ui/pages/details_page.blp:209 msgid "Update Metadata" msgstr "Оновити метадані" #: src/ui/pages/details_page.blp:222 src/ui/widgets/episode_row.blp:87 #: src/ui/widgets/season_expander.blp:42 msgid "Edit" msgstr "Редагувати" #: src/ui/pages/details_page.blp:235 msgid "Delete" msgstr "Видалити" #: src/ui/pages/details_page.blp:264 msgid "Description" msgstr "Опис" #: src/ui/pages/details_page.blp:320 msgid "Seasons" msgstr "Сезони" #: src/ui/pages/details_page.blp:379 msgid "Notes" msgstr "" #: src/ui/pages/details_page.blp:483 src/ui/views/main_view.blp:234 msgid "_Preferences" msgstr "_Налаштування" #: src/ui/pages/details_page.blp:488 src/ui/views/main_view.blp:239 msgid "_Keyboard Shortcuts" msgstr "_Клавіатурні скорочення" #: src/ui/pages/details_page.blp:493 src/ui/views/main_view.blp:244 msgid "_About Ticket Booth" msgstr "_Про Ticket Booth" #: src/ui/pages/edit_episode_page.blp:9 msgid "Edit Episode" msgstr "Редагувати серію" #: src/ui/pages/edit_episode_page.blp:45 msgid "Episode Number (required)" msgstr "Номер серії (обов'язково)" #: src/ui/preferences.blp:15 src/ui/views/main_view.blp:131 msgid "Preferences" msgstr "Налаштування" #: src/ui/preferences.blp:18 msgctxt "preferences" msgid "Optional Download" msgstr "Необов'язкове завантаження" #: src/ui/preferences.blp:19 #, fuzzy msgctxt "preferences" msgid "" "For a complete experience, a download of 15 KB is required. The initial " "setup could not retrieve the data automatically and thus offline mode has " "been activated. It will remain active until the setup is completed." msgstr "" "Для повноцінної роботи необхідно завантажити 15 КБ. Під час початкового " "налаштування не вдалося отримати дані автоматично, тому було ввімкнено " "автономний режим. Він залишатиметься активним до завершення налаштування." #. TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. #: src/ui/preferences.blp:23 msgctxt "preferences" msgid "Complete Setup" msgstr "Завершити налаштування" #: src/ui/preferences.blp:34 msgctxt "preferences" msgid "Offline Mode" msgstr "Автономний режим" #: src/ui/preferences.blp:35 msgctxt "preferences" msgid "" "Ticket Booth can work entirely offline. If you choose to run in this mode, " "some features that require the Internet and/or access to third party APIs " "will not be available." msgstr "" "Ticket Booth може працювати повністю у автономному режимi. Якщо ви вирішите " "працювати в цьому режимі, деякі функції, які потребують Інтернету та/або " "доступу до сторонніх API, будуть недоступні." #: src/ui/preferences.blp:38 msgctxt "preferences" msgid "Enable Offline Mode" msgstr "Увімкнути автономний режим" #: src/ui/preferences.blp:43 msgctxt "preferences" msgid "The Movie Database (TMDB)" msgstr "База даних фільмів (TMDB)" #: src/ui/preferences.blp:44 msgctxt "preferences" msgid "" "TMDB provides localized metadata for most content. Ticket Booth will " "download it in your prefered language, selectable below. In case it is not " "available, it will fallback to English US and then to the content's original " "language. If neither are available, it will result in a blank string. Please " "consider contributing " "to TMDB. Additionally, an automatic update is performed on a frequency " "of your choosing." msgstr "" "TMDB надає локалізовані метадані для більшості матеріалів. Ticket Booth " "завантажить їх мовою, якій ви надаєте перевагу, яку можна вибрати нижче. " "Якщо вона недоступна, буде використано англійську (США), а потім мову " "оригіналу. Якщо жоден із них недоступний, це призведе до порожнього рядка. " "Будь ласка, розгляньте можливість зробити свій внесок до TMDB. Крім того, автоматичне " "оновлення виконується з частотою, яку ви виберете." #: src/ui/preferences.blp:47 msgctxt "preferences" msgid "TMDB Results Language" msgstr "Мова результатів TMDB" #: src/ui/preferences.blp:52 msgctxt "preferences" msgid "Update Frequency" msgstr "Частота оновлення" #: src/ui/preferences.blp:53 msgctxt "preferences" msgid "Restart Ticket Booth after changing" msgstr "Після внесення змін перезапустіть Ticket Booth" #: src/ui/preferences.blp:56 msgctxt "preferences" msgid "Never" msgstr "Ніколи" #: src/ui/preferences.blp:57 msgctxt "preferences" msgid "Daily" msgstr "Щодня" #: src/ui/preferences.blp:58 msgctxt "preferences" msgid "Weekly" msgstr "Щотижня" #: src/ui/preferences.blp:59 msgctxt "preferences" msgid "Monthly" msgstr "Щомісяця" #: src/ui/preferences.blp:65 msgctxt "preferences" msgid "Use Your API Key" msgstr "" #: src/ui/preferences.blp:66 msgctxt "preferences" msgid "" "Register yours here" msgstr "" #: src/ui/preferences.blp:70 msgctxt "preferences" msgid "Your API key" msgstr "" #: src/ui/preferences.blp:75 #, fuzzy msgctxt "preferences" msgid "Save Key" msgstr "Зберегти" #: src/ui/preferences.blp:86 msgctxt "preferences" msgid "Housekeeping" msgstr "Прибирання" #: src/ui/preferences.blp:90 msgctxt "preferences" msgid "Clear Cache on Exit" msgstr "Очищати кеш при виході" #: src/ui/preferences.blp:94 msgctxt "preferences" msgid "Clear Cached Search Data" msgstr "Очистити кешовані дані пошуку" #: src/ui/preferences.blp:104 msgctxt "preferences" msgid "Clear Data" msgstr "Очистити дані" #: src/ui/views/content_view.blp:14 msgid "Your Watchlist Is Empty" msgstr "Ваш список спостереження порожній" #: src/ui/views/content_view.blp:15 #, fuzzy msgid "Add content with the + button or import from an older watchlist." msgstr "Додайте контент за допомогою кнопки \"+\"." #: src/ui/views/content_view.blp:111 src/views/content_view.py:363 msgid "Your Watchlist" msgstr "Ваш список спостереження" #: src/ui/views/content_view.blp:140 #, fuzzy msgid "Unwatched" msgstr "Переглянуте" #: src/ui/views/db_update_view.blp:29 #, fuzzy msgid "Updating your watchlist" msgstr "Вже у вашому списку спостереження" #: src/ui/views/db_update_view.blp:30 msgid "" "After updating Ticket Booth we need to update the local database entries" msgstr "" #: src/ui/views/db_update_view.blp:49 src/ui/views/first_run_view.blp:55 msgid "Use Offline Mode" msgstr "Скористатися автономним режимом" #: src/ui/views/db_update_view.blp:55 src/ui/views/first_run_view.blp:61 msgid "Try again on next run" msgstr "Спробуйте ще раз під час наступного запуску" #: src/ui/views/db_update_view.blp:66 msgid "Activate Notifications?" msgstr "" #: src/ui/views/db_update_view.blp:67 msgid "" "Would you like to activate notifications for all series that are still in " "production and for all movies that have not yet released?" msgstr "" #: src/ui/views/db_update_view.blp:76 #, fuzzy msgid "Activate" msgstr "Активна вкладка" #: src/ui/views/db_update_view.blp:85 msgid "Deactivate" msgstr "" #: src/ui/views/main_view.blp:69 msgid "Add a title to your library" msgstr "Додайте стрічку до своєї бібліотеки" #: src/ui/views/main_view.blp:76 msgid "Show/Hide search bar" msgstr "" #: src/ui/views/main_view.blp:105 msgctxt "Search mode" msgid "Title" msgstr "" #: src/ui/views/main_view.blp:106 msgctxt "Search mode" msgid "Genre" msgstr "" #: src/ui/views/main_view.blp:107 #, fuzzy msgctxt "Search mode" msgid "Overview" msgstr "Загальна інформація" #: src/ui/views/main_view.blp:108 msgctxt "Search mode" msgid "Notes" msgstr "" #: src/ui/views/main_view.blp:109 msgctxt "Search mode" msgid "TMDB ID" msgstr "" #: src/ui/views/main_view.blp:119 #, fuzzy msgid "Search Your Watchlist" msgstr "Ваш список спостереження" #: src/ui/views/main_view.blp:130 msgid "Offline Mode Enabled" msgstr "Ввімкнено автономний режим" #: src/ui/views/main_view.blp:161 msgid "_Sorting" msgstr "_Упорядкування" #: src/ui/views/main_view.blp:165 msgid "A-Z" msgstr "А-Я" #: src/ui/views/main_view.blp:171 msgid "Z-A" msgstr "Я-А" #: src/ui/views/main_view.blp:177 msgid "Date added (newest first)" msgstr "Дата додавання (найновіші спочатку)" #: src/ui/views/main_view.blp:183 msgid "Date added (oldest first)" msgstr "Дата додавання (найстаріші спочатку)" #: src/ui/views/main_view.blp:189 msgid "Release date (newest first)" msgstr "Дата випуску (найновіші спочатку)" #: src/ui/views/main_view.blp:195 msgid "Release date (oldest first)" msgstr "Дата випуску (найстаріші спочатку)" #: src/ui/views/main_view.blp:203 msgid "Separate watched from unwatched" msgstr "" #: src/ui/views/main_view.blp:208 #, fuzzy msgid "Hide watched" msgstr "Переглянуте" #: src/ui/views/main_view.blp:215 msgid "_Refresh" msgstr "_Оновити" #: src/ui/views/main_view.blp:222 msgid "_Import" msgstr "" #: src/ui/views/main_view.blp:227 msgid "_Export" msgstr "" #: src/ui/views/main_view.blp:252 msgid "From The Movie Database (TMDB)" msgstr "З бази даних фільмів (TMDB)" #: src/ui/views/main_view.blp:257 msgid "Manually" msgstr "Вручну" #: src/ui/widgets/background_indicator.blp:13 msgid "Background Activities" msgstr "Фонові дії" #: src/ui/widgets/background_indicator.blp:34 msgid "No Background Activities" msgstr "Немає фонових дій" #: src/ui/widgets/image_selector.blp:30 msgid "Edit poster" msgstr "Редагувати постер" #: src/ui/widgets/image_selector.blp:48 msgid "Delete poster" msgstr "Видалити постер" #: src/ui/widgets/poster_button.blp:47 msgid "The series has a new release" msgstr "" #: src/ui/widgets/poster_button.blp:67 msgid "The series has a new release soon" msgstr "" #: src/ui/widgets/poster_button.blp:85 msgid "This title is marked as watched" msgstr "" #: src/ui/widgets/search_result_row.blp:89 msgid "Add to watchlist" msgstr "Додати до списку спостереження" #: src/ui/widgets/theme_switcher.blp:29 msgid "Follow system style" msgstr "Використовувати стиль системи" #: src/ui/widgets/theme_switcher.blp:43 msgid "Light style" msgstr "Світлий стиль" #: src/ui/widgets/theme_switcher.blp:57 msgid "Dark style" msgstr "Темний стиль" #: src/views/content_view.py:362 msgid "Search results" msgstr "" #: src/views/first_run_view.py:101 msgid "Waiting for Network…" msgstr "В очікуванні мережі…" #: src/views/first_run_view.py:103 msgid "" "For a complete experience, a download of 15 KB is required. However, if you " "are not connected to the Internet or don't want to wait, you can skip this " "step and continue offline without some features." msgstr "" "Для повноцінної роботи потрібно завантажити 15 КБ. Однак, якщо ви не " "підключені до Інтернету або не хочете чекати, ви можете пропустити цей крок " "і продовжити роботу в автономному режимі без деяких функцій." #: src/views/first_run_view.py:107 msgid "Getting things ready…" msgstr "Готуємо все необхідне…" #: src/views/first_run_view.py:108 msgid "Downloading data" msgstr "Завантаження даних" #: src/views/main_view.py:57 msgctxt "Category" msgid "Movies" msgstr "Фільми" #: src/views/main_view.py:146 #, fuzzy msgctxt "Notification List activity title" msgid "Automatic update of notification list" msgstr "Автоматичне оновлення" #: src/views/main_view.py:162 src/views/main_view.py:172 #: src/views/main_view.py:182 msgctxt "Background activity title" msgid "Automatic update" msgstr "Автоматичне оновлення" #. TRANSLATOR: {title} is the title of the series #: src/views/main_view.py:326 #, fuzzy, python-brace-format msgid "New release for {title}" msgstr "Видалити {title}" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:329 #, python-brace-format msgid "A new episode of {title} was released {days} day ago." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:333 #, python-brace-format msgid "New release for {num} TV series on your watchlist" msgstr "" #. TRANSLATOR: {series} is a list of TV series seperated by a comma #. TRANSLATOR: {series} is a list of all series affected seperated by a comma #: src/views/main_view.py:337 src/views/main_view.py:355 #: src/views/main_view.py:372 #, python-brace-format msgid "The TV Series are {series}." msgstr "" #. TRANSLATOR: {title} is the title of the series with a new episode soon #: src/views/main_view.py:343 #, python-brace-format msgid "{title} will have a release soon" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:346 #, python-brace-format msgid "A new episode will release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:350 #, python-brace-format msgid "{num} TV Series on your watchlist will have a new episode soon" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:361 #, python-brace-format msgid "{title} has gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the series that has gone out of production #: src/views/main_view.py:364 #, python-brace-format msgid "" "{title} has wrapped up its run. Now is the perfect time to revisit your " "favorite moments or find the next binge!" msgstr "" #. TRANSLATOR: {num} is the number of TV Series #: src/views/main_view.py:367 #, python-brace-format msgid "{num} TV Series of your watchlist have gone out of production" msgstr "" #. TRANSLATOR: {title} is the title of the movie that has had its release #: src/views/main_view.py:378 #, python-brace-format msgid "{title} has had its release!" msgstr "" #. TRANSLATOR: {title} is the title of the series and {days} the number of days #: src/views/main_view.py:381 #, python-brace-format msgid "{title} was released {days} day ago." msgstr "" #: src/views/main_view.py:384 #, python-brace-format msgid "{num} movies on your watchlist have had their releases." msgstr "" #. TRANSLATOR: {movies} is a list of all movies affected seperated by a comma #. TRANSLATOR: {movies} will be list of all series affected seperated by a comma #: src/views/main_view.py:388 src/views/main_view.py:403 #, python-brace-format msgid "The movies are {movies}." msgstr "" #. TRANSLATOR: {title} is the title of the movie that will have its release soon #: src/views/main_view.py:393 #, python-brace-format msgid "{title} will have its release soon!" msgstr "" #. TRANSLATOR: {title} is the title of the movie and {days} the number of days #: src/views/main_view.py:396 #, python-brace-format msgid "{title} will have its release in {days} day." msgstr "" #. TRANSLATOR: {num} is the number of movies #: src/views/main_view.py:400 #, python-brace-format msgid "{num} movies on your watchlist will have their releases soon" msgstr "" #. TRANSLATOR: {num} is the number of affected items #: src/views/main_view.py:413 #, python-brace-format msgid "{num} items of your watchlist have an update" msgstr "" #. TRANSLATOR: {count_movies} is the number of movies #: src/views/main_view.py:418 src/views/main_view.py:427 #, python-brace-format msgid "These updates affect {count_movies} movie" msgstr "" #. TRANSLATOR: the connector between the two parts of the sentence (foo and bar) #: src/views/main_view.py:420 msgid " and " msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:422 #, python-brace-format msgid " {count_series} TV serie" msgstr "" #. TRANSLATOR: {count_series} is the number of series #: src/views/main_view.py:430 #, python-brace-format msgid "These updates affect {count_series} TV serie" msgstr "" #: src/widgets/episode_row.py:267 src/widgets/season_expander.py:141 #, fuzzy, python-brace-format msgctxt "alert dialog heading" msgid "Delete {title}?" msgstr "Видалити {title}?" #: src/widgets/episode_row.py:270 #, fuzzy msgctxt "alert dialog body" msgid "All changes to this episode will be lost." msgstr "Всі зміни до цієї серії будуть втрачені." #: src/widgets/episode_row.py:273 src/widgets/season_expander.py:147 #, fuzzy msgctxt "alert dialog action" msgid "_Delete" msgstr "_Видалити" #: src/widgets/search_result_row.py:100 src/widgets/search_result_row.py:192 msgid "Already in your watchlist" msgstr "Вже у вашому списку спостереження" #: src/widgets/season_expander.py:144 #, fuzzy msgctxt "alert dialog body" msgid "This season contains unsaved metadata." msgstr "Цей сезон містить незбережені метадані." #, fuzzy #~ msgid "movie" #~ msgstr "Кіно" #, fuzzy #~ msgid "movies" #~ msgstr "Фільми" #, fuzzy #~ msgid "series" #~ msgstr "Серіали" ticketbooth-1.2.0/pypi-dependencies.json000066400000000000000000000061311501006415200203240ustar00rootroot00000000000000{ "name": "pypi-dependencies", "buildsystem": "simple", "build-commands": [], "modules": [ { "name": "python3-Pillow", "buildsystem": "simple", "build-commands": [ "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"Pillow\" --no-build-isolation" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", "sha256": "a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6" } ] }, { "name": "python3-tmdbsimple", "buildsystem": "simple", "build-commands": [ "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"tmdbsimple\" --no-build-isolation" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", "sha256": "30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", "sha256": "5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/6c/dd/ade05d202db728b23e54aa0959622d090776023917e7308c1b2469a07b76/tmdbsimple-2.9.1-py3-none-any.whl", "sha256": "b52387c667bad1dccf5f776a576a971622a111fc08b7f731e360fabcc9860616" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", "sha256": "4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813" } ] } ] }ticketbooth-1.2.0/requirements.txt000066400000000000000000000000221501006415200173010ustar00rootroot00000000000000Pillow tmdbsimple ticketbooth-1.2.0/src/000077500000000000000000000000001501006415200146125ustar00rootroot00000000000000ticketbooth-1.2.0/src/__init__.py000066400000000000000000000000001501006415200167110ustar00rootroot00000000000000ticketbooth-1.2.0/src/background_queue.py000066400000000000000000000104301501006415200205050ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from enum import Enum from typing import Callable from gi.repository import Gio, GLib, GObject import logging from . import shared # type: ignore class ActivityType(Enum): """ Enum for the types of background activities """ ADD = 0 REMOVE = 1 UPDATE = 2 class BackgroundActivity(GObject.GObject): """ An activity that is run in the background. Properties: title (str): a title activity_type (str): an activity type, name as in ActivityType callback (callable): a function to run in the background completed (bool): indicates if the activity is completed Methods: start(): runs self.callback in a separate thread end(): marks the activity as completed Signals: None """ __gtype_name__ = 'BackgroundActivity' title = GObject.Property(type=str, default='') activity_type = GObject.Property(type=str, default='') task_function = GObject.Property(type=object, default=None) completed = GObject.Property(type=bool, default=False) has_error = GObject.Property(type=bool, default=False) def __init__(self, activity_type: ActivityType, title: str = '', task_function: Callable | None = None): super().__init__() self.activity_type = activity_type.name self.title = title self.task_function = task_function self._cancellable = Gio.Cancellable() def start(self, on_done: Callable) -> None: """ Runs self.callback in a separate thread. The callback must call end() to mark the activity as completed. Args: None Returns: None """ task = Gio.Task.new(self, None, on_done, self._cancellable, self) task.set_return_on_cancel(True) task.run_in_thread(self._run_in_thread) def _run_in_thread(self, task: Gio.Task, source_object: GObject.Object, task_data: object | None, cancelable: Gio.Cancellable): """Callback to run self.task_function in a thread""" if task.return_error_if_cancelled(): return outcome = self.task_function(self) # type: ignore task.return_value(GLib.Variant('b', outcome)) def activity_finish(self, result: Gio.AsyncResult, caller: GObject.Object): """ Completes the async operation and marks the activity as completed. Args: None Returns: None """ if not Gio.Task.is_valid(result, caller): return -1 try: variant_value = result.propagate_value().value if isinstance(variant_value, GLib.Variant): return variant_value.get_boolean() return variant_value except GLib.Error as e: logging.error(f"Error in activity_finish: {e}") return False def end(self) -> None: """ Marks the activity as completed. Args: None Returns: None """ self.completed = True def error(self) -> None: """ Marks the activity with an error. Args: None Returns: None """ self.has_error = True class BackgroundQueue: """ A queue of background activities. Properties: None Methods: add(activity: BackgroundActivity): adds an activity to the queue get_queue(): returns the queue Signals: None """ _queue = Gio.ListStore.new(item_type=BackgroundActivity) @staticmethod def add(activity: BackgroundActivity, on_done: Callable) -> None: """ Adds an activity to the queue and starts its execution. Args: activity (BackgroundActivity): the activity to add Returns: None """ BackgroundQueue._queue.append(activity) activity.start(on_done) @staticmethod def get_queue() -> Gio.ListStore: """ Returns the queue Args: None Returns: the queue (a Gio.ListStore) """ return BackgroundQueue._queue ticketbooth-1.2.0/src/css/000077500000000000000000000000001501006415200154025ustar00rootroot00000000000000ticketbooth-1.2.0/src/css/style-dark.css000066400000000000000000000002361501006415200201740ustar00rootroot00000000000000/* * Copyright (C) 2023 Alessandro Iepure * * SPDX-License-Identifier: GPL-3.0-or-later */ /* Dark mode CSS */ .chip { background-color: @dark_3; } ticketbooth-1.2.0/src/css/style.css000066400000000000000000000047501501006415200172620ustar00rootroot00000000000000/* * Copyright (C) 2023 Alessandro Iepure * * SPDX-License-Identifier: GPL-3.0-or-later */ /* Light mode CSS - Main style */ .notes { border-radius: 12px; background-color: alpha(#dddddd, 0.2); } .chip { padding: 0 7px; line-height: 20px; border-radius: 25px; background-color: @light_3; } .poster { border-radius: 12px; } .light { color: @light_2; } .dark { color: @dark_3; } .still { border-radius: 6px; } .shadow { box-shadow: 0px 0px 4px 4px @accent_color; } .pulse { animation-name: breathing; animation-duration: 3s; animation-timing-function: ease-in-out; animation-iteration-count: infinite; animation-direction: normal; animation-delay: 0s; animation-fill-mode: none; animation-play-state: running; } @keyframes breathing { 0% { transform: scale(1); } 50% { transform: scale(0.95); } 100% { transform: scale(1); } } .groupcolor list { background-color: alpha(#dddddd, 0.2); } .progress_complete progress { background-color: @success_color; } .progress_error progress { background-color: @error_color; } /* Theme Switcher * Modified from https://gitlab.gnome.org/tijder/blueprintgtk * Original header below */ /* * Base on dialect-app * https://github.com/dialect-app/dialect/blob/c0b7ca0580d4c7cfb32ff7ed0a3a08c06bbe40e0/data/resources/style.css */ .themeswitcher { margin: 9px; } .themeswitcher checkbutton { min-height: 44px; min-width: 44px; padding: 1px; background-clip: content-box; border-radius: 9999px; box-shadow: inset 0 0 0 1px @borders; } .themeswitcher checkbutton.system:checked, .themeswitcher checkbutton.light:checked, .themeswitcher checkbutton.dark:checked { box-shadow: inset 0 0 0 2px @theme_selected_bg_color; } .themeswitcher checkbutton.system { background-image: linear-gradient(to bottom right, #fff 49.99%, #202020 50.01%); } .themeswitcher checkbutton.light { background-color: #fff; } .themeswitcher checkbutton.dark { background-color: #202020; } .themeswitcher checkbutton radio { -gtk-icon-source: none; border: none; background: none; box-shadow: none; min-width: 12px; min-height: 12px; transform: translate(27px, 14px); padding: 2px; } .themeswitcher checkbutton.theme-selector radio:checked { -gtk-icon-source: -gtk-icontheme("object-select-symbolic"); background-color: @theme_selected_bg_color; color: @theme_selected_fg_color; }ticketbooth-1.2.0/src/dialogs/000077500000000000000000000000001501006415200162345ustar00rootroot00000000000000ticketbooth-1.2.0/src/dialogs/__init__.py000066400000000000000000000001251501006415200203430ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later ticketbooth-1.2.0/src/dialogs/add_manual_dialog.py000066400000000000000000000623561501006415200222260ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import logging import os import shutil from datetime import date, datetime from gettext import gettext as _ from gettext import pgettext as C_ from typing import List, Tuple from urllib.parse import unquote from PIL import Image, ImageStat from pathlib import Path from gi.repository import Adw, Gio, GLib, GObject, Gtk from .. import shared # type: ignore from ..background_queue import (ActivityType, BackgroundActivity, BackgroundQueue) from ..dialogs.edit_season_dialog import EditSeasonDialog from ..models.episode_model import EpisodeModel from ..models.language_model import LanguageModel from ..models.movie_model import MovieModel from ..models.season_model import SeasonModel from ..models.series_model import SeriesModel from ..providers.local_provider import LocalProvider as local from ..widgets.season_expander import SeasonExpander @Gtk.Template(resource_path=shared.PREFIX + '/ui/dialogs/add_manual.ui') class AddManualDialog(Adw.Dialog): """ This class represents the dialog to manually add content to the db. Properties: edit_mode (bool): whether or not the window is in add/edit mode Methods: update_seasons_ui(): rebuilds the ui to reflect changes to seasons get_season(title: str, poster: str, episodes: list): returns the tuple with the provided data or an empty tuple Signals: edit-saved(SeriesModel or MovieModel): emited when the user clicks the save button """ __gtype_name__ = 'AddManualDialog' edit_mode = GObject.Property(type=bool, default=False) _toggle_group = Gtk.Template.Child() _movies_btn = Gtk.Template.Child() _series_btn = Gtk.Template.Child() _save_btn = Gtk.Template.Child() _poster = Gtk.Template.Child() _title_entry = Gtk.Template.Child() _release_date_menu_btn = Gtk.Template.Child() _calendar = Gtk.Template.Child() _genres_entry = Gtk.Template.Child() _runtime_spinrow = Gtk.Template.Child() _tagline_entry = Gtk.Template.Child() _creator_entry = Gtk.Template.Child() _overview_text = Gtk.Template.Child() _seasons_group = Gtk.Template.Child() _status_entry = Gtk.Template.Child() _original_language_comborow = Gtk.Template.Child() _language_model = Gtk.Template.Child() _original_title_entry = Gtk.Template.Child() _budget_spinrow = Gtk.Template.Child() _revenue_spinrow = Gtk.Template.Child() _production_checkbtn = Gtk.Template.Child() __gsignals__ = { 'edit-saved': (GObject.SIGNAL_RUN_FIRST, None, (object,)), } seasons: list = [] def __init__(self, edit_mode: bool = False, content: MovieModel | SeasonModel | None = None ): super().__init__() self.edit_mode = edit_mode self._content = content logging.info(f'Edit mode: {self.edit_mode}') if edit_mode and type(self._content) is MovieModel: self.set_title(_('Edit Movie')) logging.debug(f'Editing [Movie] {self._content.title}') elif edit_mode and type(self._content) is SeriesModel: self.set_title(_('Edit TV Series')) logging.debug(f'Editing [TV Series] {self._content.title}') @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for the "map" signal. Setup the window by selecting the initial view (movies or tv series), the image for the poster and populates the language dropdown and the selected date for the release. Args: user_data (object or None): user data passed to the callback. Returns: None """ self._overview_text.remove_css_class('view') languages = local.get_all_languages() # move 'no language' to 1st place languages.insert(0, languages.pop(len(languages)-6)) for language in languages: self._language_model.append(language.name) self._poster.set_blank_image( f'resource://{shared.PREFIX}/blank_poster.jpg') if not self._content: if shared.schema.get_string('win-tab') == 'movies': self._toggle_group.set_active(0) else: self._toggle_group.set_active(1) self._release_date_menu_btn.set_label( self._calendar.get_date().format('%x')) return # Both Movies and TV Series self._poster.set_image(self._content.poster_path) self._title_entry.set_text(self._content.title) self._title_entry.grab_focus() self._release_date_menu_btn.set_label( date.fromisoformat(self._content.release_date).strftime('%x')) self._calendar.select_day(GLib.DateTime.new_from_iso8601( datetime.fromisoformat(self._content.release_date).isoformat()+'Z')) self._genres_entry.set_text(', '.join(self._content.genres)) self._tagline_entry.set_text(self._content.tagline) self._overview_text.get_buffer().set_text(self._content.overview, -1) self._status_entry.set_text(self._content.status) self._original_language_comborow.set_selected( self._get_selected_language_index(self._content.original_language)) self._original_title_entry.set_text(self._content.original_title) # Movies specific if type(self._content) is MovieModel: self._movies_btn.set_active(True) self._runtime_spinrow.set_value(self._content.runtime) self._budget_spinrow.set_value(self._content.budget) self._revenue_spinrow.set_value(self._content.revenue) # TV Series specific if type(self._content) is SeriesModel: self._series_btn.set_active(True) self._creator_entry.set_text(','.join(self._content.created_by)) self._production_checkbtn.set_active(self._content.in_production) self.seasons = self._parse_seasons(self._content.seasons) self.update_seasons_ui() def _parse_seasons(self, seasons_as_model: List[SeasonModel]) -> List[tuple]: """ Parse seasons passed as a list of SeasonModels into a list of tuples. Args: seasons_as_model(List[SeasonModel]): a list of SeasonModels Returns: a list of tuples representing the same data """ seasons_as_tuple = [] for season in seasons_as_model: episodes_as_tuple = [] for episode in season.episodes: episodes_as_tuple.append(( episode.title, episode.number, episode.runtime, episode.overview, episode.still_path, episode.watched, episode.id )) seasons_as_tuple.append(( season.title, season.poster_path, episodes_as_tuple )) return seasons_as_tuple def _get_selected_language_index(self, language: LanguageModel) -> int: """ Loops languages looking for the index of the provided language. Args: language (LanguageModel): language to look for Returns: index (int) """ for idx in range(0, self._language_model.get_n_items()): if language.name == self._language_model.get_string(idx): return idx return -1 @Gtk.Template.Callback('_on_title_changed') def _on_title_changed(self, user_data: object | None) -> None: """ Callback for "changed" signal. Wrapper around self._enable_save_btn(). Args: user_data (object or None): user data passed to the callback. Returns: None """ self._enable_save_btn() @Gtk.Template.Callback() def _on_toggle_group_changed(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for "notify::active" signal. Wrapper around self._enable_save_btn(). Args: pspec (GObject.ParamSpec): the property spec user_data (object or None): user data passed to the callback. Returns: None """ self._enable_save_btn() def _enable_save_btn(self) -> None: """ Checks whether the "save" button should be active or not. Args: None Returns: None """ # Movies: title required if self._toggle_group.get_active_name() == "movies" and self._title_entry.get_text(): self._save_btn.set_sensitive(True) return # TV Series: title and at least a season required if self._toggle_group.get_active_name() == "series" and self._title_entry.get_text() and len(self.seasons) > 0: self._save_btn.set_sensitive(True) return self._save_btn.set_sensitive(False) @Gtk.Template.Callback('_on_calendar_day_selected') def _on_calendar_day_selected(self, user_data: object | None) -> None: """ Callback for the "day-selected" signal. Sets the button's label as the selected date (user locale format) Args: user_data (object or None): user data passed to the callback. Returns: None """ self._release_date_menu_btn.set_label( self._calendar.get_date().format('%x')) @Gtk.Template.Callback('_on_season_add_btn_clicked') def _on_season_add_btn_clicked(self, user_data: object | None) -> None: """ Callback for the "clicked" signal. Opens the "edit season" dialog. Args: user_data (object or None): user data passed to the callback. Returns: None """ # TRANSLATORS: {num} is the season number logging.debug('Edit season dialog open') dialog = EditSeasonDialog(self, title=_( 'Season {num}').format(num=len(self.seasons)+1)) dialog.connect('edit-saved', self._on_edit_saved) dialog.present(dialog.parent) def _on_edit_saved(self, source: Gtk.Widget, title: str, poster_uri: str, episodes: List[tuple]) -> None: """ Callback for the "edit-saved" signal. Appends the recieved data as a tuple in the seasons list and updates the ui. Args: source (Gtk.Widget): caller widget title (str): season title poster_uri (str): season poster uri episodes (List[tuple]): season episodes Returns: None """ logging.info(f'Updated {title}, {poster_uri}, {episodes}') self.seasons.append((title, poster_uri, episodes)) self.update_seasons_ui() @Gtk.Template.Callback('_on_done_btn_clicked') def _on_done_btn_clicked(self, user_data: object | None) -> None: """ Callback for the "clicked" signal. Adds a background activity to add/update the content and closes the window. Args: user_data (object or None): user data passed to the callback. Returns: None """ if not self.edit_mode: BackgroundQueue.add( activity=BackgroundActivity( # TRANSLATORS: {title} is the content's title activity_type=ActivityType.ADD, title=C_('Background activity title', 'Add {title}').format(title=self._title_entry.get_text()), task_function=self._add_content_to_db), on_done=self._on_add_done) else: BackgroundQueue.add( activity=BackgroundActivity( # TRANSLATORS: {title} is the content's title activity_type=ActivityType.UPDATE, title=C_('Background activity title', 'Update {title}').format(title=self._title_entry.get_text()), task_function=self._add_content_to_db), on_done=self._on_add_done) self.close() def _add_content_to_db(self, activity: BackgroundActivity) -> None: """ Copies the poster image to the data folder, saves the content, and refreshes the main window. Args: activity (BackgroundActivity): the calling activity Returns: None """ poster_uri, color = self._copy_image_to_data(self._poster.get_uri(), shared.poster_dir, self._title_entry.get_text() ) if not self.edit_mode else (self._content.poster_path, False) # type: ignore if self._toggle_group.get_active_name() == "movies": self._save_movie(poster_uri, color) else: self._save_series(poster_uri, color) def _on_add_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" self.get_ancestor(Adw.ApplicationWindow).activate_action('win.refresh', None) activity.end() def _save_movie(self, poster_uri: str, color: bool) -> None: """ Creates a MovieModel with the provided data and saves or updates the movie in the local db. Args: poster_uri (str): movie poster uri Returns: None """ buffer = self._overview_text.get_buffer() start_iter = buffer.get_start_iter() end_iter = buffer.get_end_iter() overview = buffer.get_text(start_iter, end_iter, False) movie = MovieModel(t={ "add_date": datetime.now(), # add date "backdrop_path": '', # background "budget":int(self._budget_spinrow.get_value()), # budget "color": color, "genres": ''.join(self._genres_entry.get_text().split()), # genres "id": local.get_next_manual_movie() if not self.edit_mode else self._content.id, # id "manual":True, # manual "original_language":local.get_language_by_name(self._original_language_comborow.get_selected_item( ).get_string()).iso_name, # original language "original_title": self._original_title_entry.get_text(), # original title "overview":overview, # overview "poster_path": poster_uri, # poster "release_date": self._calendar.get_date().format('%Y-%m-%d'), # release date "revenue":int(self._revenue_spinrow.get_value()), # revenue "runtime":int(self._runtime_spinrow.get_value()), # runtime "status":self._status_entry.get_text(), # status "tagline":self._tagline_entry.get_text(), # tagline "title":self._title_entry.get_text(), # title "watched": False if not self.edit_mode else self._content.watched, # watched "activate_notification": False, # activate notification "new_release": False, # new release flag "soon_release": False, # soon release flag "last_watched": datetime.now(), # last watched "notes": '', # notes "recent_change": False # recent change flag }) if not self.edit_mode: local.add_movie(movie=movie) else: local.update_movie(old=self._content, new=movie) self.emit('edit-saved', movie) def _save_series(self, series_poster_uri: str, color: bool) -> None: """ Creates a SeriesModel with associated SeasonModels/EpisodeModels with the provided data and saves or updates the TV series in the local db. Args: poster_uri (str): tv series poster uri Returns: None """ show_id = local.get_next_manual_series() base_season_id = local.get_next_manual_season() base_episode_id = local.get_next_manual_episode() seasons = [] for idx, season in enumerate(self.seasons): # Create folder to store the images, if needed if not os.path.exists(f"{shared.series_dir}/{show_id}/{self._increment_manual_id(base_season_id, idx)}"): os.makedirs( f"{shared.series_dir}/{show_id}/{self._increment_manual_id(base_season_id, idx)}") # Copy the season poster poster_uri, color = self._copy_image_to_data(season[1], f"{shared.series_dir}/{show_id}/{self._increment_manual_id(base_season_id, idx)}", season[0]) episodes = [] for jdx, episode in enumerate(season[2]): # Copy the episode still still_uri, color = self._copy_image_to_data(episode[4], f"{shared.series_dir}/{show_id}/{self._increment_manual_id(base_season_id, idx)}", episode[0] ) episode_id = self._increment_manual_id(base_episode_id, jdx) season_number = idx+1 watched = False episodes.append(EpisodeModel(t=( episode_id, # id episode[1], # episode number episode[3], # overview episode[2], # runtime season_number, # season number show_id, # show id still_uri, # still uri episode[0], # title watched # watched ))) base_episode_id = self._increment_manual_id( base_episode_id, len(episodes)+1) season_id = self._increment_manual_id(base_season_id, idx) season_number = idx+1 seasons.append(SeasonModel(t=( len(episodes), # episodes number season_id, # id season_number, # season number '', # overview poster_uri, # season poster season[0], # title show_id, # show id episodes # season episodes ))) buffer = self._overview_text.get_buffer() start_iter = buffer.get_start_iter() end_iter = buffer.get_end_iter() overview = buffer.get_text(start_iter, end_iter, False) serie = SeriesModel(t={ "activate_notification": False, # activate notification "add_date": datetime.now(), # add date "backdrop_path":'', # backgroud "color": color, # color "created_by": self._creator_entry.get_text(), # created by "episodes_number": self._compute_episode_number(seasons), # episode number "genres": ''.join(self._genres_entry.get_text().split()), # genres "id": show_id, # id "in_production": self._production_checkbtn.get_active(), # in production "last_air_date": '', # last air date "manual": True, # manual "new_release": False, # new release flag "next_air_date": '', # next air date "original_language": local.get_language_by_name(self._original_language_comborow.get_selected_item( ).get_string()).iso_name, # type: ignore # original language "original_title": self._original_title_entry.get_text(), # original title "overview": overview, # overview "poster_path": series_poster_uri, # poster "release_date": self._calendar.get_date().format('%Y-%m-%d'), # release date "seasons_number": len(seasons), # seasons number "soon_release" :False, # soon_release flag "status": self._status_entry.get_text(), # status "tagline": self._tagline_entry.get_text(), # tagline "title": self._title_entry.get_text(), # title "watched": False, # watched "last_episode_number": 0, # last episode number "recent_change": False, # recent change flag "notes": '', # notes "seasons": seasons # seasons }) if self.edit_mode: local.delete_series(self._content.id) # type: ignore local.add_series(serie=serie) self.emit('edit-saved', serie) else: local.add_series(serie=serie) def _increment_manual_id(self, id: str, amount: int = 1) -> str: """ Increments the integer part of a manual id by amount. Args: id (str): id to increment amount (int): how much to increment by Returns: the incremented id """ tmp = id.split('-') return f'M-{int(tmp[1]) + amount}' def _compute_badge_color(self, poster_path) -> bool: im = Image.open(poster_path) box = (im.size[0]-175, 0, im.size[0], 175) region = im.crop(box) median = ImageStat.Stat(region).median if sum(median) < 3 * 128: return True else: return False def _compute_episode_number(self, seasons: List[SeasonModel]) -> int: """ Counts the total number of episodes of a tv series. Args: seasons (List[SeasonModel]): seasons to loop on Returns: the total number of episodes """ num = 0 for season in seasons: for episode in season.episodes: num += 1 return num def _copy_image_to_data(self, src_uri: str, dest_folder: str, filename: str) -> Tuple[str,bool]: """ Copies src_uri to dest_folder as filename. If src_uri is a resource (empty poster/still) the operation is not carried out. dest_folder must already exist on file system. Args: src_uri (str): source file uri dest_folder (str): path to the destination folder filename (str): new name for the copied file Returns: uri of the copied file or src_uri if is a resource. """ if src_uri.startswith('file'): extension = src_uri[src_uri.rindex('.'):] dest_path = f"{dest_folder}/{unquote(filename)}{extension}" shutil.copy2(src_uri[7:], dest_path) return f"file://{dest_path}", self._compute_badge_color(Path(dest_path)) return src_uri, False def update_seasons_ui(self) -> None: """ Rebuilds the ui to reflect changes to seasons. Args: None Returns: None """ # Empty PreferencesGroup list_box = self._seasons_group.get_first_child( ).get_last_child().get_first_child() # ugly workaround list_box.remove_all() # Fill PreferencesGroup for season in self.seasons: self._seasons_group.add(SeasonExpander( season_title=season[0], poster_uri=season[1], episodes=season[2])) self._enable_save_btn() def get_season(self, title: str, uri: str, episodes: List[tuple]) -> tuple: """ Compares and retrieves the tuple containing the passed data. Args: title (str): a title uri (str): an uri episodes (List[tuple]): a list of tuples representing episodes Returns: tuple matching the passed data """ for season in self.seasons: if (season[0] == title and season[1] == uri and season[2] == episodes): return season return () @Gtk.Template.Callback() def _show_for_movies(self, source: Gtk.Widget, active_name: str) -> bool: """ Closure to show movie specific widgets. Args: None Returns: None """ if active_name == "movie": return True return False @Gtk.Template.Callback() def _show_for_series(self, source: Gtk.Widget, active_name: str) -> bool: """ Closure to show series specific widgets. Args: None Returns: None """ if active_name == "series": return True return False ticketbooth-1.2.0/src/dialogs/add_tmdb_dialog.py000066400000000000000000000042101501006415200216600ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import logging from gi.repository import Adw, Gio, GLib, GObject, Gtk from .. import shared # type: ignore from ..models.search_result_model import SearchResultModel from ..providers.tmdb_provider import TMDBProvider @Gtk.Template(resource_path=shared.PREFIX + '/ui/dialogs/add_tmdb.ui') class AddTMDBDialog(Adw.Dialog): """ This class represents the dialog used to search for movies and tv-series on TMDB. Properties: None Methods: None Signals: None """ __gtype_name__ = 'AddTMDBDialog' _search_entry = Gtk.Template.Child() _stack = Gtk.Template.Child() _model = Gtk.Template.Child() def __init__(self): super().__init__() @Gtk.Template.Callback('_on_searchentry_search_changed') def _on_searchentry_search_changed(self, user_data: object | None) -> None: """ Callback for the "seach-changed" signal. Updates the GtkListModel used by the factory to populate the GtkListView. Args: user_data (object or None): user data passed to the callback. Returns: None """ logging.info(f'Search query: "{self._search_entry.get_text()}"') if self._model.get_property('n-items') > 0: self._model.remove_all() if not self._search_entry.get_text(): self._stack.set_visible_child_name('empty') return response = TMDBProvider().search(query=self._search_entry.get_text()) if not response['results']: self._stack.set_visible_child_name('no-results') logging.info('No results for query') return for result in response['results']: if result['media_type'] in ['movie', 'tv']: search_result = SearchResultModel(result) logging.info( f'Found [{"movie" if search_result.media_type == "movie" else "TV series"}] {search_result.title}, {search_result.year}') self._model.append(search_result) self._stack.set_visible_child_name('results') ticketbooth-1.2.0/src/dialogs/edit_season_dialog.py000066400000000000000000000161571501006415200224340ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gettext import gettext as _ from typing import List from gi.repository import Adw, GObject, Gtk from .. import shared # type: ignore from ..pages.edit_episode_page import EditEpisodeNavigationPage from ..widgets.episode_row import EpisodeRow @Gtk.Template(resource_path=shared.PREFIX + '/ui/dialogs/edit_season.ui') class EditSeasonDialog(Adw.Dialog): """ This class represents the window to edit a season. Properties: None Methods: update_episodes_ui(): rebuilds the ui to reflect changes to episodes Signals: edit-saved (title: str, poster_uri: str, episodes: List[tuple]): emited when the user clicks the save button """ __gtype_name__ = 'EditSeasonDialog' _navigation_view = Gtk.Template.Child() _save_btn = Gtk.Template.Child() _poster = Gtk.Template.Child() _title_entry = Gtk.Template.Child() _episodes_group = Gtk.Template.Child() __gsignals__ = { 'edit-saved': (GObject.SIGNAL_RUN_FIRST, None, (str, str, object,)), } def __init__(self, parent: Gtk.Window, title: str = _('Season'), poster_uri: str = f'resource://{shared.PREFIX}/blank_poster.jpg', episodes: List[tuple] | None = None): super().__init__() self.parent = parent self._title = title self._poster_uri = poster_uri self._episodes = episodes if episodes else [] @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Sets the title text and poster image, populates the episode data. Args: user_data (object or None): user data passed to the callback. Returns: None """ self._title_entry.set_text(self._title) if self._poster_uri.startswith('file'): self._poster.set_image(self._poster_uri) self._title_entry.grab_focus() for episode in self._episodes: self._episodes_group.add(EpisodeRow(title=episode[0], episode_number=episode[1], runtime=episode[2], overview=episode[3], still_uri=episode[4], watched=episode[5], editable=True) ) @Gtk.Template.Callback('_on_title_entry_changed') def _on_title_entry_changed(self, user_data: object | None) -> None: """ Callback for "changed" signal. Wrapper around self._enable_save_btn(). Args: user_data (object or None): user data passed to the callback. Returns: None """ self._enable_save_btn() def _enable_save_btn(self) -> None: """ Checks whether the "save" button should be made active or not. Args: None Returns: None """ if self._title_entry.get_text() and len(self._episodes) > 0: self._save_btn.set_sensitive(True) return self._save_btn.set_sensitive(False) @Gtk.Template.Callback('_on_save_btn_clicked') def _on_save_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Emits the "edit-saved" signal and closes the window. Args: user_data (object or None): user data passed to the callback. Returns: None """ self.emit('edit-saved', self._title_entry.get_text(), self._poster.get_uri(), self._episodes) self.close() @Gtk.Template.Callback('_on_add_btn_clicked') def _on_add_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Shows the "edit episode" page. Args: user_data (object or None): user data passed to the callback. Returns: None """ edit_episode_page = EditEpisodeNavigationPage(episode_number=len(self._episodes)+1) edit_episode_page.connect('edit-saved', self._on_episode_saved) self._navigation_view.push(edit_episode_page) def _on_episode_saved(self, source: Gtk.Widget, title: str, episode_number: int, runtime: int, overview: str, still_uri: str, watched: bool) -> None: """ Callback for "edit-saved" signal. Appends the recieved data as a tuple in the episodes list and updates the ui. Args: source (Gtk.Widget): caller widget title (str): epiosode title episode_number (int): episode number runtime (int): episode runtime in minutes overview (str): episode overview still_uri (str): episode still uri Returns: None """ self._episodes.append((title, episode_number, runtime, overview, still_uri, watched)) self.update_episodes_ui() def update_episodes_ui(self) -> None: """ Rebuilds the ui to reflect changes to episodes. Args: None Returns: None """ # Empty PreferencesGroup list_box = self._episodes_group.get_first_child().get_last_child().get_first_child() # ugly workaround list_box.remove_all() # Fill PreferencesGroup for episode in self._episodes: self._episodes_group.add(EpisodeRow(title=episode[0], episode_number=episode[1], runtime=episode[2], overview=episode[3], still_uri=episode[4], watched=episode[5], editable=True)) self._enable_save_btn() def get_episode(self, title: str, episode_number: int, runtime: int, overview: str, still_uri: str) -> tuple: """ Compares and retrieves the tuple containing the passed data. Args: title (str): a title episode_number (int): an episode number runtime (int): a runtime in minutes overview (str): an overview still_uri (str): an uri Returns: tuple matching the passed data """ for episode in self._episodes: if (episode[0] == title and episode[1] == episode_number and episode[2] == runtime and episode[3] == overview and episode[4] == still_uri): return episode return () ticketbooth-1.2.0/src/dialogs/meson.build000066400000000000000000000006011501006415200203730ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) dialogsdir = join_paths(pkgdatadir, 'src/dialogs') sources = [ '__init__.py', 'add_manual_dialog.py', 'add_tmdb_dialog.py', 'edit_season_dialog.py', ] install_data(sources, install_dir: dialogsdir) ticketbooth-1.2.0/src/logging/000077500000000000000000000000001501006415200162405ustar00rootroot00000000000000ticketbooth-1.2.0/src/logging/__init__.py000066400000000000000000000000001501006415200203370ustar00rootroot00000000000000ticketbooth-1.2.0/src/logging/__pycache__/000077500000000000000000000000001501006415200204505ustar00rootroot00000000000000ticketbooth-1.2.0/src/logging/__pycache__/__init__.cpython-313.pyc000066400000000000000000000002371501006415200247150ustar00rootroot00000000000000 <eg)Nr>/home/ale/Development/ticketbooth/repo/src/logging/__init__.pyrsrticketbooth-1.2.0/src/logging/meson.build000066400000000000000000000005211501006415200204000ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) loggingdir = join_paths(pkgdatadir, 'src/logging') sources = [ '__init__.py', 'session_file_handler.py', ] install_data(sources, install_dir: loggingdir) ticketbooth-1.2.0/src/logging/session_file_handler.py000066400000000000000000000114611501006415200227740ustar00rootroot00000000000000# session_file_handler.py # # Copyright 2023 Geoffrey Coulaud # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # SPDX-License-Identifier: GPL-3.0-or-later import lzma from io import TextIOWrapper from logging import StreamHandler from lzma import FORMAT_XZ, PRESET_DEFAULT from os import PathLike from pathlib import Path from typing import Optional from .. import shared # type: ignore class SessionFileHandler(StreamHandler): """ A logging handler that writes to a new file on every app restart. The files are compressed and older sessions logs are kept up to a small limit. """ NUMBER_SUFFIX_POSITION = 1 backup_count: int filename: Path log_file: Optional[TextIOWrapper] = None def create_dir(self) -> None: """Create the log dir if needed""" self.filename.parent.mkdir(exist_ok=True, parents=True) def path_is_logfile(self, path: Path) -> bool: return path.is_file() and path.name.startswith(self.filename.stem) def path_has_number(self, path: Path) -> bool: try: int(path.suffixes[self.NUMBER_SUFFIX_POSITION][1:]) except (ValueError, IndexError): return False return True def get_path_number(self, path: Path) -> int: """Get the number extension in the filename as an int""" suffixes = path.suffixes number = ( 0 if not self.path_has_number(path) else int(suffixes[self.NUMBER_SUFFIX_POSITION][1:]) ) return number def set_path_number(self, path: Path, number: int) -> str: """Set or add the number extension in the filename""" suffixes = path.suffixes if self.path_has_number(path): suffixes.pop(self.NUMBER_SUFFIX_POSITION) suffixes.insert(self.NUMBER_SUFFIX_POSITION, f'.{number}') stem = path.name.split('.', maxsplit=1)[0] new_name = stem + ''.join(suffixes) return new_name def file_sort_key(self, path: Path) -> int: """Key function used to sort files""" return self.get_path_number(path) if self.path_has_number(path) else 0 def get_logfiles(self) -> list[Path]: """Get the log files""" logfiles = list(filter(self.path_is_logfile, self.filename.parent.iterdir())) logfiles.sort(key=self.file_sort_key, reverse=True) return logfiles def rotate_file(self, path: Path) -> None: """Rotate a file's number suffix and remove it if it's too old""" # If uncompressed, compress if not path.name.endswith('.xz'): try: with open(path, 'r', encoding='utf-8') as original_file: original_data = original_file.read() except UnicodeDecodeError: # If the file is corrupted, throw it away path.unlink() return # Compress the file compressed_path = path.with_suffix(path.suffix + '.xz') with lzma.open( compressed_path, 'wt', format=FORMAT_XZ, preset=PRESET_DEFAULT, encoding='utf-8', ) as lzma_file: lzma_file.write(original_data) path.unlink() path = compressed_path # Rename with new number suffix new_number = self.get_path_number(path) + 1 new_path_name = self.set_path_number(path, new_number) path = path.rename(path.with_name(new_path_name)) # Remove older files if new_number > self.backup_count: path.unlink() return def rotate(self) -> None: """Rotate the numbered suffix on the log files and remove old ones""" for path in self.get_logfiles(): self.rotate_file(path) def __init__(self, filename: PathLike, backup_count: int = 2) -> None: self.filename = Path(filename) self.backup_count = backup_count self.create_dir() self.rotate() self.log_file = open(self.filename, 'w', encoding='utf-8') shared.log_files = self.get_logfiles() super().__init__(self.log_file) def close(self) -> None: if self.log_file: self.log_file.close() super().close() ticketbooth-1.2.0/src/main.py000066400000000000000000000366241501006415200161230ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later # isort: off # autopep8: off import gi from src.background_queue import ActivityType, BackgroundActivity, BackgroundQueue gi.require_version('Gtk', '4.0') gi.require_version('Adw', '1') # isort: on # autopep: on import logging import os import platform import subprocess import sys from gettext import gettext as _ from gettext import pgettext as C_ from typing import Callable from datetime import datetime from gi.repository import Adw, Gio, GObject, Gtk, GLib from . import shared # type: ignore from .models.search_result_model import SearchResultModel from .preferences import PreferencesDialog from .views.content_view import ContentView from .pages.details_page import DetailsView from .views.first_run_view import FirstRunView from .views.db_update_view import DbUpdateView from .views.main_view import MainView from .widgets.background_activity_row import BackgroundActivityRow from .widgets.background_indicator import BackgroundIndicator from .widgets.episode_row import EpisodeRow from .widgets.image_selector import ImageSelector from .widgets.poster_button import PosterButton from .widgets.search_result_row import SearchResultRow from .window import TicketboothWindow from .providers.local_provider import LocalProvider as local class TicketboothApplication(Adw.Application): """The main application singleton class.""" # Types used in blueprint files _custom_widgets = [ SearchResultModel, PosterButton, SearchResultRow, DetailsView, DbUpdateView, FirstRunView, MainView, ContentView, EpisodeRow, ImageSelector, BackgroundIndicator, BackgroundActivityRow, ] def __init__(self): super().__init__(application_id=shared.APP_ID, flags=Gio.ApplicationFlags.DEFAULT_FLAGS) logging.info('Ticket Booth started') logging.info(f'Debug: {shared.DEBUG}') logging.debug('Python version: %s', sys.version) if os.getenv('FLATPAK_ID') == shared.APP_ID: process = subprocess.run( ('flatpak-spawn', '--host', 'flatpak', '--version'), capture_output=True, encoding='utf-8', check=False, ) logging.debug('Flatpak version: %s', process.stdout.rstrip()) logging.debug('Platform: %s', platform.platform()) if os.name == 'posix': for key, value in platform.uname()._asdict().items(): logging.debug('\t%s: %s', key.title(), value) logging.debug('─' * 37) self.create_action('quit', lambda *_: self.quit(), ['q']) self.create_action('about', self.on_about_action) self.create_action('preferences', self.on_preferences_action, ['comma']) self.create_action('export', self.do_export) self.create_action('import', self.do_import) for i in self._custom_widgets: GObject.type_ensure(i) def do_activate(self): """ Called when the application is activated. We raise the application's main window, creating it if necessary. """ win = self.props.active_window if not win: win = TicketboothWindow(application=self) logging.debug('Window open') win.present() def on_about_action(self, widget: Gtk.Widget, user_data: object | None): """Callback for the app.about action.""" builder = Gtk.Builder.new_from_resource(shared.PREFIX + '/ui/about_dialog.ui') about_dialog = builder.get_object('about_dialog') about_dialog.set_application_name(shared.APP_NAME) about_dialog.set_application_icon(shared.APP_ID) about_dialog.set_version(shared.VERSION) about_dialog.add_credit_section('Contributors', [ # your name # your name website ]) about_dialog.add_legal_section('Movie and TV Series Metadata', 'This product uses the TMDB API but is not endorsed or certified by TMDB.', Gtk.License.CUSTOM, 'All rights belong to their respective owners.') logging.debug('About window open') about_dialog.present(self.props.active_window) def on_preferences_action(self, widget: Gtk.Widget, user_data: object | None): """Callback for the app.preferences action.""" pref_dialog = PreferencesDialog() logging.debug('Preferences dialog open') pref_dialog.present(self.props.active_window) def create_action(self, name: Gtk.Widget, callback: Callable, shortcuts=None): """ Add an application action. Args: name: the name of the action callback: the function to be called when the action is activated shortcuts: an optional list of accelerators """ action = Gio.SimpleAction.new(name, None) action.connect('activate', callback) self.add_action(action) if shortcuts: self.set_accels_for_action(f'app.{name}', shortcuts) logging.debug(f'Created action app.{name} ({shortcuts})') def do_export(self, widget: Gtk.Widget, user_data: object | None): """ Callback for the app.export action Args: widget (Gtk.Widget): the widget that triggered the action user_data (object or None): additional data passed to the callback Returns: None """ logging.info('Export requested') logging.info('Opening file dialog to select export location') self.dialog = Gtk.FileDialog.new() self.dialog.set_modal(True) self.dialog.set_initial_name(f"ticketbooth-export-{datetime.now().strftime('%Y-%m-%d-%H:%M:%S')}.zip") file_filter_store = Gio.ListStore.new(Gtk.FileFilter) file_filter = Gtk.FileFilter() file_filter.add_suffix("zip") file_filter_store.append(file_filter) self.dialog.set_filters(file_filter_store) self.dialog.save(self.props.active_window, None, self._on_file_save_complete, None) def _on_file_save_complete(self, source: Gtk.Widget, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the file dialog. Finishes the file selection and, if successfull, asks for confirmation Args: source (Gtk.Widget): caller widget result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): additional data passed to the callback Returns: None """ try: self.archive = self.dialog.save_finish(result) dialog = Adw.AlertDialog.new( heading=_("Confirm Export?"), body=_("Exporting your library will create an archive containing all your data. You can import this archive later to restore your library."), ) dialog.add_response('cancel', C_('alert dialog action', '_Cancel')) dialog.add_response('export', C_('alert dialog action', '_Export')) dialog.set_default_response('export') dialog.set_close_response('cancel') dialog.set_response_appearance('export', Adw.ResponseAppearance.SUGGESTED) dialog.choose(self.props.active_window, None, self._on_export_alert_dialog_choose, None) except GLib.GError: logging.info("Export cancelled") def _on_export_alert_dialog_choose(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the export confirmation dialog. If the user confirms the export, the export process is started. Args: dialog (Adw.AlertDialog): the dialog that triggered the response response (int): the response code Returns: None """ result = Adw.AlertDialog.choose_finish(source, result) if result == 'cancel': logging.info("Export cancelled") return BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.ADD, title=C_('Background activity title', 'Exporting library'), task_function=self._export_content_from_db), on_done=self._on_export_done ) def _export_content_from_db(self, activity: BackgroundActivity) -> bool: """ Exports the library to the selected archive. Args: activity (BackgroundActivity): the calling activity Returns: bool: True if export succeeded, False otherwise """ result = local.export_data(self.archive.get_path()) if not result: activity.error() logging.info("Export failed") return result def _on_export_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" result = activity.activity_finish(result, activity) activity.end() if result: dialog = Adw.AlertDialog.new( heading=_("Export Completed"), body=_("The library has been exported successfully."), ) dialog.set_close_response('ok') dialog.add_response('ok', C_('alert dialog action', '_OK')) dialog.set_default_response('ok') dialog.present(self.props.active_window) logging.info("Export done") else: dialog = Adw.AlertDialog.new( heading=_("Export failed"), body=_("An error occurred while exporting the library."), ) dialog.set_close_response('ok') dialog.add_response('ok', C_('alert dialog action', '_OK')) dialog.set_default_response('ok') dialog.present(self.props.active_window) logging.info("Export failed") def do_import(self, new_state: None, source: Gtk.Widget) -> None: """ Callback for the app.import action Args: new_state (None): the new state of the action source (Gtk.Widget): the widget that triggered the action Returns: None """ logging.info('Import requested') logging.info('Opening file dialog to select import location') self.dialog = Gtk.FileDialog.new() self.dialog.set_modal(True) file_filter_store = Gio.ListStore.new(Gtk.FileFilter) file_filter = Gtk.FileFilter() file_filter.add_suffix("zip") file_filter_store.append(file_filter) self.dialog.set_filters(file_filter_store) self.dialog.open(self.props.active_window, None, self._on_file_open_complete, None) def _on_file_open_complete(self, source: Gtk.Widget, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the file dialog. Finishes the file selection and, if successfull, asks for confirmation Args: source (Gtk.Widget): caller widget result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): additional data passed to the callback Returns: None """ try: self.archive = self.dialog.open_finish(result) dialog = Adw.AlertDialog.new( heading=_("Confirm Import?"), body=_("Importing a library will merge it with the current library. This action cannot be undone and in case of conflicts, the new data will be kept."), ) dialog.add_response('cancel', C_('alert dialog action', '_Cancel')) dialog.add_response('import', C_('alert dialog action', '_Import')) dialog.set_default_response('import') dialog.set_close_response('cancel') dialog.set_response_appearance('import', Adw.ResponseAppearance.SUGGESTED) dialog.choose(self.props.active_window, None, self._on_import_alert_dialog_choose, None) except GLib.GError: logging.info("Import cancelled") def _on_import_alert_dialog_choose(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the import confirmation dialog. If the user confirms the import, the import process is started. Args: dialog (Adw.AlertDialog): the dialog that triggered the response response (int): the response code Returns: None """ result = Adw.AlertDialog.choose_finish(source, result) if result == 'cancel': logging.info("Import cancelled") return BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.ADD, title=C_('Background activity title', 'Importing library'), task_function=self._import_content_to_db), on_done=self._on_import_done ) def _import_content_to_db(self, activity: BackgroundActivity) -> bool: """ Imports the library from the selected archive. Args: activity (BackgroundActivity): the calling activity Returns: bool: True if the import was successful, False otherwise """ result = local.import_data(self.archive.get_path()) if not result: activity.error() logging.info("Import failed") return result def _on_import_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" result = activity.activity_finish(result, activity) activity.end() if result: self.props.active_window.activate_action('win.refresh') logging.info("Import completed successfully") dialog = Adw.AlertDialog.new( heading=_("Import Completed"), body=_("The library has been imported successfully."), ) dialog.set_close_response('ok') dialog.add_response('ok', C_('alert dialog action', '_OK')) dialog.set_default_response('ok') dialog.present(self.props.active_window) else: dialog = Adw.AlertDialog.new( heading=_("Import failed"), body=_("Please check the selected archive and try again. Only archives created by Ticket Booth are supported."), ) dialog.set_close_response('ok') dialog.add_response('ok', C_('alert dialog action', '_OK')) dialog.set_default_response('ok') dialog.present(self.props.active_window) def main(): """The application's entry point.""" app = TicketboothApplication() return app.run(sys.argv) ticketbooth-1.2.0/src/meson.build000066400000000000000000000040021501006415200167500ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) moduledir = join_paths(pkgdatadir, 'src') gnome = import('gnome') # Compile resources blueprints = custom_target('blueprints', input: files( 'ui/gtk/help-overlay.blp', 'ui/window.blp', 'ui/about_dialog.blp', 'ui/preferences.blp', 'ui/views/main_view.blp', 'ui/views/first_run_view.blp', 'ui/views/db_update_view.blp', 'ui/views/content_view.blp', 'ui/dialogs/add_manual.blp', 'ui/dialogs/add_tmdb.blp', 'ui/dialogs/edit_season.blp', 'ui/dialogs/message_dialogs.blp', 'ui/pages/edit_episode_page.blp', 'ui/pages/details_page.blp', 'ui/widgets/theme_switcher.blp', 'ui/widgets/poster_button.blp', 'ui/widgets/search_result_row.blp', 'ui/widgets/episode_row.blp', 'ui/widgets/image_selector.blp', 'ui/widgets/season_expander.blp', 'ui/widgets/background_indicator.blp', 'ui/widgets/background_activity_row.blp', ), output: '.', command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'] ) gnome.compile_resources('ticketbooth', configure_file( input: 'ticketbooth.gresource.xml.in', output: 'ticketbooth.gresource.xml', configuration: conf ), gresource_bundle: true, install: true, install_dir: pkgdatadir, dependencies: blueprints, ) configure_file( input: 'ticketbooth.in', output: 'ticketbooth', configuration: conf, install: true, install_dir: get_option('bindir') ) subdir('widgets') subdir('dialogs') subdir('providers') subdir('models') subdir('views') subdir('pages') subdir('logging') # Install sources ticketbooth_sources = [ '__init__.py', 'main.py', 'window.py', configure_file( input: 'shared.py.in', output: 'shared.py', configuration: conf ), 'preferences.py', 'background_queue.py', ] install_data(ticketbooth_sources, install_dir: moduledir) ticketbooth-1.2.0/src/models/000077500000000000000000000000001501006415200160755ustar00rootroot00000000000000ticketbooth-1.2.0/src/models/__init__.py000066400000000000000000000001251501006415200202040ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later ticketbooth-1.2.0/src/models/episode_model.py000066400000000000000000000077501501006415200212700ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import glob import os import re import requests from gi.repository import GObject from PIL import Image from .. import shared # type: ignore class EpisodeModel(GObject.GObject): """ This class represents an episode object stored in the db. Properties: id (str): episode id number (int): episode number in its season overview (str): episode overview runtime (int): episode runtime in minutes season_number (int): season the episode belongs to show_id (int): id of the show the episode belongs to still_path (str): uri of the episode still title (str): episode title watched (bool): whether the episode has been watched or not Methods: None Signals: None """ __gtype_name__ = 'EpisodeModel' id = GObject.Property(type=str, default='') number = GObject.Property(type=int, default=0) overview = GObject.Property(type=str, default='') runtime = GObject.Property(type=int, default=0) season_number = GObject.Property(type=int, default=0) show_id = GObject.Property(type=str, default='') still_path = GObject.Property(type=str, default='') title = GObject.Property(type=str, default='') watched = GObject.Property(type=bool, default=False) def __init__(self, d=None, t=None): super().__init__() if d is not None: self.id = d['id'] self.number = d['episode_number'] self.overview = re.sub(r'\s{2}', ' ', d['overview']) self.runtime = d['runtime'] if d['runtime'] else 0 self.season_number = d['season_number'] self.show_id = d['show_id'] self.still_path = self._download_still(d['still_path']) self.title = d['name'] self.watched = False else: self.id = t[0] # type: ignore self.number = t[1] # type: ignore self.overview = t[2] # type: ignore self.runtime = t[3] # type: ignore self.season_number = t[4] # type: ignore self.show_id = t[5] # type: ignore self.still_path = t[6] # type: ignore self.title = t[7] # type: ignore self.watched = t[8] # type: ignore def _download_still(self, path: str) -> str: """ Returns the uri of the still image on the local filesystem, downloading if necessary. Args: path (str): path to dowload from Returns: str with the uri of the still image """ if not path: return f'resource://{shared.PREFIX}/blank_still.jpg' if not os.path.exists(f'{shared.series_dir}/{self.show_id}/{self.season_number}'): os.makedirs( f'{shared.series_dir}/{self.show_id}/{self.season_number}') files = glob.glob( f'{path[1:-4]}.jpg', root_dir=f'{shared.series_dir}/{self.show_id}/{self.season_number}') if files: return f'file://{shared.series_dir}/{self.show_id}/{self.season_number}/{files[0]}' url = f'https://image.tmdb.org/t/p/w500{path}' try: r = requests.get(url) if r.status_code == 200: with open(f'{shared.series_dir}/{self.show_id}/{self.season_number}{path}', 'wb') as f: f.write(r.content) with Image.open(f'{shared.series_dir}/{self.show_id}/{self.season_number}{path}') as img: img = img.resize((500, 281)) img.save( f'{shared.series_dir}/{self.show_id}/{self.season_number}{path}', 'JPEG') return f'file://{shared.series_dir}/{self.show_id}/{self.season_number}{path}' else: return f'resource://{shared.PREFIX}/blank_still.jpg' except (requests.exceptions.ConnectionError, requests.exceptions.SSLError): return f'resource://{shared.PREFIX}/blank_still.jpg' ticketbooth-1.2.0/src/models/language_model.py000066400000000000000000000016201501006415200214110ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gi.repository import GObject class LanguageModel(GObject.GObject): """ This class represents a language object stored in the db. Properties: iso_name (str): ISO_639_1 code name (str): localized or English name Methods: None Signals: None """ __gtype_name__ = 'LanguageModel' iso_name = GObject.Property(type=str, default='') name = GObject.Property(type=str, default='') def __init__(self, d=None, t=None): super().__init__() if d is not None: self.iso_name = d['iso_639_1'] if d['name']: self.name = d['name'] else: self.name = d['english_name'] else: self.iso_name = t[0] # type: ignore self.name = t[1] # type: ignore ticketbooth-1.2.0/src/models/meson.build000066400000000000000000000006701501006415200202420ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) modelsdir = join_paths(pkgdatadir, 'src/models') sources = [ '__init__.py', 'search_result_model.py', 'language_model.py', 'movie_model.py', 'episode_model.py', 'season_model.py', 'series_model.py', ] install_data(sources, install_dir: modelsdir) ticketbooth-1.2.0/src/models/movie_model.py000066400000000000000000000240351501006415200207520ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import glob import re from datetime import datetime, timedelta from typing import List, Tuple from pathlib import Path import requests from gi.repository import GLib, GObject from PIL import Image, ImageFilter, ImageStat import src.providers.local_provider as local from .. import shared # type: ignore from ..models.language_model import LanguageModel class MovieModel(GObject.GObject): """ This class represents a movie object stored in the db. Properties: activate_notification (bool): Provide notification if the movie is added to the watchlist before its release date. add_date (str): date of addition to the db (ISO format) backdrop_path (str): path where the background image is stored budget (float): movie budget color (bool): color of the poster badges, False being dark genres (List[str]): list of genres id (str): movie id manual (bool): if movie is added manually new_release (bool): if the movie has had its release original_language (LanguageModel): LanguageModel of the original language original_title (str): movie title in original language overview (str): movie overview, usually the main plot poster_path (str): path where the backgroud poster is stored recent_change (bool): indicates that new/soon_release was changed during the last check release_date (str): release date in YYYY-MM-DD format revenue (float): movie revenue runtime (int): movie runtime in minutes tagline (str): movie tagline soon_release (bool): if the movie has its release soon status (str): movie status, usually released or planned title (str): movie title watched (bool): if the movie has been market as watched notes (str): additional notes added by the user Methods: None Signals: None """ __gtype_name__ = 'MovieModel' activate_notification = GObject.Property(type=bool, default=False) add_date = GObject.Property(type=str, default='') backdrop_path = GObject.Property(type=str, default='') budget = GObject.Property(type=float, default=0) color = GObject.Property(type=bool, default=False) genres = GObject.Property(type=GLib.strv_get_type()) id = GObject.Property(type=str, default='') manual = GObject.Property(type=bool, default=False) new_release = GObject.Property(type=bool, default=False) original_language = GObject.Property(type=LanguageModel) original_title = GObject.Property(type=str, default='') overview = GObject.Property(type=str, default='') poster_path = GObject.Property(type=str, default='') recent_change = GObject.Property(type=bool, default=False) release_date = GObject.Property(type=str, default='') revenue = GObject.Property(type=float, default=0) runtime = GObject.Property(type=int, default=0) soon_release = GObject.Property(type=bool, default=False) status = GObject.Property(type=str, default='') tagline = GObject.Property(type=str, default='') title = GObject.Property(type=str, default='') watched = GObject.Property(type=bool, default=False) notes = GObject.Property(type=str, default='') def __init__(self, d=None, t=None): super().__init__() if d is not None: self.add_date = datetime.now().date() self.backdrop_path = self._download_background( path=d['backdrop_path']) self.budget = d['budget'] self.genres = self._parse_genres(api_dict=d['genres']) self.id = d['id'] self.manual = False self.new_release = False self.original_language = local.LocalProvider.get_language_by_code( d['original_language']) # type: ignore self.original_title = d['original_title'] self.overview = re.sub(r'\s{2}', ' ', d['overview']) self.poster_path, self.color = self._download_poster( path=d['poster_path'], color=False) self.recent_change = False self.release_date = d['release_date'] if d['release_date'] else None self.revenue = d['revenue'] self.runtime = d['runtime'] self.soon_release = datetime.strptime(self.release_date, '%Y-%m-%d') < datetime.strptime(self.add_date, '%Y-%m-%d') + timedelta( days=14) and datetime.strptime(self.release_date, '%Y-%m-%d') > datetime.strptime(self.add_date, '%Y-%m-%d') if self.release_date and self.add_date else False self.status = d['status'] self.tagline = d['tagline'] self.title = d['title'] self.watched = False self.activate_notification = datetime.strptime(self.release_date, '%Y-%m-%d') > datetime.strptime( # if the release date is in the future activate notifications self.add_date, '%Y-%m-%d') if self.release_date and self.add_date else False self.notes = '' else: self.activate_notification = t["activate_notification"] # type: ignore self.add_date = t["add_date"] # type: ignore self.backdrop_path = t["backdrop_path"] # type: ignore self.budget = t["budget"] # type: ignore self.color = t["color"] # type: ignore self.genres = self._parse_genres( db_str=t["genres"]) # type: ignore self.id = t["id"] # type: ignore self.manual = t["manual"] # type:ignore self.new_release = t["new_release"] #type: ignore self.original_language = local.LocalProvider.get_language_by_code( t["original_language"]) # type: ignore self.original_title = t["original_title"] # type: ignore self.overview = t["overview"] # type: ignore self.poster_path = t["poster_path"] # type: ignore self.recent_change = t["recent_change"] # type: ignore self.release_date = t["release_date"] # type: ignore self.revenue = t["revenue"] # type: ignore self.runtime = t["runtime"] # type: ignore self.soon_release = t["soon_release"] # type: ignore self.status = t["status"] # type: ignore self.tagline = t["tagline"] # type: ignore self.title = t["title"] # type: ignore self.watched = t["watched"] # type:ignore self.notes = t["notes"] # type: ignore def _parse_genres(self, api_dict: dict = {}, db_str: str = '') -> List[str]: """ Function to parse genres into a list of strings. Genres are provided by the TMDB API as a dict and are stored in the local db as a comma-separated string. Providing both arguments is an error. Args: from_api (dict): dict from TMDB API from_db (str): string from local db Returns: list of strings """ genres = [] if api_dict: for genre in api_dict: genres.append(genre['name']) return genres if db_str: return db_str.split(',') return genres def _download_background(self, path: str) -> str: """ Returns the uri of the background image on the local filesystem, downloading if necessary. Args: path (str): path to dowload from Returns: str with the uri of the background image """ if not path: return '' files = glob.glob(f'{path[1:-4]}.jpg', root_dir=shared.background_dir) if files: return f'file://{shared.background_dir}/{files[0]}' url = f'https://image.tmdb.org/t/p/w500{path}' try: r = requests.get(url) if r.status_code == 200: with open(f'{shared.background_dir}{path}', 'wb') as f: f.write(r.content) with Image.open(f'{shared.background_dir}{path}') as image: image = ( image.convert('RGB') .filter(ImageFilter.GaussianBlur(20)) ) image.save(f'{shared.background_dir}{path}', 'JPEG') return f'file://{shared.background_dir}{path}' else: return '' except (requests.exceptions.ConnectionError, requests.exceptions.SSLError): return '' def _download_poster(self, path: str, color: bool) -> Tuple[str, bool]: """ Returns the uri of the poster image on the local filesystem, downloading if necessary. Args: path (str): path to dowload from Returns: str with the uri of the poster image """ if not path: return (f'resource://{shared.PREFIX}/blank_poster.jpg', False) files = glob.glob(f'{path[1:-4]}.jpg', root_dir=shared.poster_dir) if files: color = self._compute_badge_color(Path(f'{files[0]}')) return (f'file://{shared.poster_dir}/{files[0]}', color) url = f'https://image.tmdb.org/t/p/w500{path}' try: r = requests.get(url) if r.status_code == 200: with open(f'{shared.poster_dir}{path}', 'wb') as f: f.write(r.content) color = self._compute_badge_color(Path(f'{path}')) return f'file://{shared.poster_dir}{path}', color else: return f'resource://{shared.PREFIX}/blank_poster.jpg', False except (requests.exceptions.ConnectionError, requests.exceptions.SSLError): return f'resource://{shared.PREFIX}/blank_poster.jpg', False def _compute_badge_color(self, path: str) -> bool: color_light = False im = Image.open(Path(f'{shared.poster_dir}/{path}')) box = (im.size[0]-175, 0, im.size[0], 175) region = im.crop(box) median = ImageStat.Stat(region).median if sum(median) < 3 * 128: color_light = True return color_light ticketbooth-1.2.0/src/models/search_result_model.py000066400000000000000000000031051501006415200224710ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import re from gi.repository import GObject class SearchResultModel(GObject.GObject): """ This class represents the object returned from the TMDB search endpoint. Properties: title (str): content's title year (str): content's release year description (str): content's description poster_path (str): API endpoint for the content poster tmdb_id (int): content's unique id in the API media_type (str): content's media type Methods: None Signals: None """ __gtype_name__ = 'SearchResultModel' title = GObject.Property(type=str, default='') year = GObject.Property(type=str, default='') description = GObject.Property(type=str, default='') poster_path = GObject.Property(type=str, default='') tmdb_id = GObject.Property(type=int, default=0) media_type = GObject.Property(type=str, default='') def __init__(self, d=None): super().__init__() if d is not None: self.tmdb_id = d['id'] self.poster_path = d['poster_path'] self.description = re.sub(r'\s{2}', ' ', d['overview']) if d['media_type'] == 'movie': self.media_type = d['media_type'] self.title = d['title'] self.year = d['release_date'][0:4] elif d['media_type'] == 'tv': self.media_type = d['media_type'] self.title = d['name'] self.year = d['first_air_date'][0:4] ticketbooth-1.2.0/src/models/season_model.py000066400000000000000000000117231501006415200211230ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import glob import os import re from typing import List import requests from gi.repository import GObject import src.providers.local_provider as local import src.providers.tmdb_provider as tmdb from .. import shared # type: ignore from ..models.episode_model import EpisodeModel class SeasonModel(GObject.GObject): """ This class represents a season object stored in the db. Properties: episodes (List[EpisodeModel]): list of episodes in self episodes_number (int): number of episodes in self id (str): season id number (int): season number overview (str): season overview poster_path (str): uri of the season's poster show_id (int): id of the show the searies belongs to title (str): season title Methods: None Signals: None """ __gtype_name__ = 'SeasonModel' episodes = GObject.Property(type=object) episodes_number = GObject.Property(type=int, default=0) id = GObject.Property(type=str, default='') number = GObject.Property(type=int, default=0) overview = GObject.Property(type=str, default='') poster_path = GObject.Property(type=str, default='') show_id = GObject.Property(type=str, default='') title = GObject.Property(type=str, default='') def __eq__(self, other) -> bool: """ Custom comparing fuction, overrides '==' operator. Args: other: object to compare to Returns: bool result of the operation """ if type(other) is not SeasonModel: return False if (self.episodes_number == other.episodes_number and self.id == other.id and self.number == other.number and self.overview == other.overview and self.poster_path == other.poster_path and self.show_id == other.show_id and self.title == other.title): return True else: return False def __init__(self, show_id: int = 0, d=None, t=None): super().__init__() if d is not None: self.episodes_number = d['episode_count'] self.id = d['id'] self.number = d['season_number'] self.overview = re.sub(r'\s{2}', ' ', d['overview']) self.poster_path = self._download_poster(show_id, d['poster_path']) self.title = d['name'] self.show_id = show_id self.episodes = self._parse_episodes( tmdb.TMDBProvider.get_season_episodes(show_id, self.number)) else: self.episodes_number = t[0] # type: ignore self.id = t[1] # type: ignore self.number = t[2] # type: ignore self.overview = t[3] # type: ignore self.poster_path = t[4] # type: ignore self.title = t[5] # type: ignore self.show_id = t[6] # type: ignore if len(t) == 8: # type: ignore self.episodes = t[7] # type: ignore else: self.episodes = local.LocalProvider.get_season_episodes( self.show_id, self.number) # type: ignore def _download_poster(self, show_id: int, path: str) -> str: """ Returns the uri of the poster image on the local filesystem, downloading if necessary. Args: path (str): path to dowload from Returns: str with the uri of the poster image """ if not path: return f'resource://{shared.PREFIX}/blank_poster.jpg' if not os.path.exists(f'{shared.series_dir}/{show_id}/{self.number}'): os.makedirs(f'{shared.series_dir}/{show_id}/{self.number}') files = glob.glob( f'{path[1:-4]}.jpg', root_dir=f'{shared.series_dir}/{show_id}/{self.number}') if files: return f'file://{shared.series_dir}/{show_id}/{self.number}/{files[0]}' url = f'https://image.tmdb.org/t/p/w500{path}' try: r = requests.get(url) if r.status_code == 200: with open(f'{shared.series_dir}/{show_id}/{self.number}{path}', 'wb') as f: f.write(r.content) return f'file://{shared.series_dir}/{show_id}/{self.number}{path}' else: return f'resource://{shared.PREFIX}/blank_poster.jpg' except (requests.exceptions.ConnectionError, requests.exceptions.SSLError): return f'resource://{shared.PREFIX}/blank_poster.jpg' def _parse_episodes(self, episodes: dict) -> List[EpisodeModel]: """ Parses episode data comming from tmdb into a list of EpisodeModels. Args: episodes (dict): dict from the api Returns: List of EpisodeModels """ episode_list = [] for episode in episodes: episode_list.append(EpisodeModel(d=episode)) return episode_list ticketbooth-1.2.0/src/models/series_model.py000066400000000000000000000311411501006415200211210ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import glob import re from datetime import datetime, timedelta from typing import List, Tuple from pathlib import Path import requests from gi.repository import GLib, GObject from PIL import Image, ImageFilter, ImageStat import src.providers.local_provider as local from .. import shared # type: ignore from ..models.language_model import LanguageModel from ..models.season_model import SeasonModel class SeriesModel(GObject.GObject): """ This class represents a series object stored in the db. Properties: add_date (str): date of addition to the db (ISO format) backdrop_path (str): uri of the background image color (bool): color of the poster badges, False being dark created_by (List[str]): list of creators episodes_number (int): number of total episodes genres (List[str]): list of genres id (str): series id in_production (bool): whether the series is still in production last_air_date (str): the date of the last aired episode manual (bool): if the series is added manually new_release (bool): whether the has seen a new release since the last check next_air_date (str) : used to notify user on upcoming releases original_language (LanguageModel): LanguageModel of the original language original_title (str): series title in original language overview (str): series overview poster_path (str): uri of the poster image recent_change (bool): indicates that new/soon_release has chagned in the last check release_date (str): first air date in YYYY-MM-DD format seasons_number (int): number of total seasons seasons (List[SeasonModel]): list of SeasonModels status (str): series status tagline (str): series tagline title (str): series title watched (bool): whether the series has been watched completely or not activate_notification (bool): whether the series should be checked for new releases notes (str): user notes Methods: None Signals: None """ __gtype_name__ = 'SeriesModel' activate_notification = GObject.Property(type=bool, default=False) add_date = GObject.Property(type=str, default='') backdrop_path = GObject.Property(type=str, default='') color = GObject.Property(type=bool, default=True) created_by = GObject.Property(type=GLib.strv_get_type()) episodes_number = GObject.Property(type=int, default=0) genres = GObject.Property(type=GLib.strv_get_type()) id = GObject.Property(type=str, default='') in_production = GObject.Property(type=bool, default=True) last_air_date = GObject.Property(type=str, default='') last_episode_number = GObject.Property(type=str, default='') manual = GObject.Property(type=bool, default=False) new_release = GObject.Property(type=bool, default=False) next_air_date = release_date = GObject.Property(type=str, default='') original_language = GObject.Property(type=LanguageModel) original_title = GObject.Property(type=str, default='') overview = GObject.Property(type=str, default='') poster_path = GObject.Property(type=str, default='') recent_change = GObject.Property(type=bool, default=False) release_date = GObject.Property(type=str, default='') seasons_number = GObject.Property(type=int, default=0) seasons = GObject.Property(type=object) soon_release = GObject.Property(type=bool, default=False) status = GObject.Property(type=str, default='') tagline = GObject.Property(type=str, default='') title = GObject.Property(type=str, default='') watched = GObject.Property(type=bool, default=False) notes = GObject.Property(type=str, default='') def __init__(self, d=None, t=None): super().__init__() if d is not None: self.add_date = datetime.now() self.backdrop_path = self._download_background(d['backdrop_path']) self.created_by = self._parse_creators(api_dict=d['created_by']) self.episodes_number = d['number_of_episodes'] self.genres = self._parse_genres(api_dict=d['genres']) self.id = d['id'] self.in_production = d['in_production'] self.last_air_date = d['last_air_date'] self.last_episode_number = f"{d['last_episode_to_air']['season_number']}.{d['last_episode_to_air']['episode_number']}" self.manual = False self.new_release = False next_episode_to_air = d['next_episode_to_air'] if next_episode_to_air == None: self.next_air_date = "" else: self.next_air_date = next_episode_to_air['air_date'] self.original_language = local.LocalProvider.get_language_by_code( d['original_language']) # type: ignore self.original_title = d['original_name'] self.overview = re.sub(r'\s{2}', ' ', d['overview']) # Here the color is also set since it was easy to hook it into the poster download self.poster_path, self.color = self._download_poster( d['poster_path']) self.recent_change = False self.release_date = d['first_air_date'] self.seasons_number = d['number_of_seasons'] self.seasons = self._parse_seasons(d['seasons']) self.status = d['status'] self.tagline = d['tagline'] self.title = d['name'] self.watched = False self.activate_notification = self.in_production if self.next_air_date != '': self.soon_release = datetime.strptime( self.next_air_date, '%Y-%m-%d') < datetime.now() + timedelta(days=6) else: self.soon_release = False self.notes = '' else: self.activate_notification = t["activate_notification"] # type: ignore self.add_date = t["add_date"] # type: ignore self.backdrop_path = t["backdrop_path"] # type: ignore self.created_by = self._parse_creators( db_str=t["created_by"]) # type: ignore self.color = t["color"] # type: ignore self.episodes_number = t["episodes_number"] # type: ignore self.genres = self._parse_genres( db_str=t["genres"]) # type: ignore self.id = t["id"] # type: ignore self.in_production = t["in_production"] # type: ignore self.last_air_date = t["last_air_date"] # type: ignore self.last_episode_number = t["last_episode_number"] # type: ignore self.manual = t["manual"] # type: ignore self.new_release = t["new_release"] self.next_air_date = t["next_air_date"] self.original_language = local.LocalProvider.get_language_by_code( t["original_language"]) # type: ignore self.original_title = t["original_title"] # type: ignore self.overview = t["overview"] # type: ignore self.poster_path = t["poster_path"] # type: ignore self.recent_change = t["recent_change"] # type: ignore self.release_date = t["release_date"] # type: ignore self.seasons_number = t["seasons_number"] # type: ignore self.soon_release = t["soon_release"] # type: ignore self.status = t["status"] # type: ignore self.tagline = t["tagline"] # type: ignore self.title = t["title"] # type: ignore self.watched = t["watched"] # type: ignore if len(t) == 28: # type: ignore # TODO: increase this number every time a new field is added self.seasons = t["seasons"] # type: ignore else: self.seasons = local.LocalProvider.get_all_seasons( self.id) # type: ignore self.notes = t["notes"] # type: ignore def _parse_genres(self, api_dict: dict = {}, db_str: str = '') -> List[str]: """ Function to parse genres into a list of strings. Genres are provided by the TMDB API as a dict and are stored in the local db as a comma-separated string. Providing both arguments is an error. Args: from_api (dict): dict from TMDB API from_db (str): string from local db Returns: list of strings """ genres = [] if api_dict: for genre in api_dict: genres.append(genre['name']) return genres if db_str: return db_str.split(',') return genres def _parse_creators(self, api_dict: dict = {}, db_str: str = '') -> List[str]: """ Function to parse the creators into a list of strings. Creators are provided by the TMDB API as a dict and are stored in the local db as a comma-separated string. Providing both arguments is an error. Args: from_api (dict): dict from TMDB API from_db (str): string from local db Returns: list of strings """ creators = [] if api_dict: for creator in api_dict: creators.append(creator['name']) return creators if db_str: return db_str.split(',') return creators def _parse_seasons(self, api_dict: dict) -> List[SeasonModel]: """ Function to parse the seasons data into a list of SeasonModels. Args: api_dict (dict): dict from TMDB API Returns: list of SeasonModel """ seasons = [] for season in api_dict: seasons.append(SeasonModel(show_id=self.id, d=season)) return seasons def _download_background(self, path: str) -> str: """ Returns the uri of the background image on the local filesystem, downloading if necessary. Args: path (str): path to dowload from Returns: str with the uri of the background image """ if not path: return '' files = glob.glob(f'{path[1:-4]}.jpg', root_dir=shared.background_dir) if files: return f'file://{shared.background_dir}/{files[0]}' url = f'https://image.tmdb.org/t/p/w500{path}' try: r = requests.get(url) if r.status_code == 200: with open(f'{shared.background_dir}{path}', 'wb') as f: f.write(r.content) with Image.open(f'{shared.background_dir}{path}') as image: image = ( image.convert('RGB') .filter(ImageFilter.GaussianBlur(20)) ) image.save(f'{shared.background_dir}{path}', 'JPEG') return f'file://{shared.background_dir}{path}' else: return '' except (requests.exceptions.ConnectionError, requests.exceptions.SSLError): return '' def _download_poster(self, path: str) -> Tuple[str, bool]: """ Returns the uri of the poster image on the local filesystem, downloading if necessary. Args: path (str): path to dowload from Returns: str with the uri of the poster image """ if not path: return f'resource://{shared.PREFIX}/blank_poster.jpg', False files = glob.glob(f'{path[1:-4]}.jpg', root_dir=shared.poster_dir) if files: color = self._compute_badge_color(Path(f'{files[0]}')) return f'file://{shared.poster_dir}/{files[0]}', color url = f'https://image.tmdb.org/t/p/w500{path}' try: r = requests.get(url) if r.status_code == 200: with open(f'{shared.poster_dir}{path}', 'wb') as f: f.write(r.content) color = self._compute_badge_color(Path(f'{path}')) return f'file://{shared.poster_dir}{path}', color else: return f'resource://{shared.PREFIX}/blank_poster.jpg', color except (requests.exceptions.ConnectionError, requests.exceptions.SSLError): return f'resource://{shared.PREFIX}/blank_poster.jpg', False def _compute_badge_color(self, path: str) -> bool: color_light = False im = Image.open(Path(f'{shared.poster_dir}/{path}')) box = (im.size[0]-175, 0, im.size[0], 175) region = im.crop(box) median = ImageStat.Stat(region).median if sum(median) < 3 * 128: color_light = True return color_light ticketbooth-1.2.0/src/pages/000077500000000000000000000000001501006415200157115ustar00rootroot00000000000000ticketbooth-1.2.0/src/pages/__init__.py000066400000000000000000000001251501006415200200200ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later ticketbooth-1.2.0/src/pages/details_page.py000066400000000000000000001040341501006415200207060ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import logging from datetime import datetime, timedelta from datetime import date from gettext import gettext as _ from gettext import ngettext from gettext import pgettext as C_ from typing import List, Tuple from gi.repository import Adw, Gio, GObject, Gtk from PIL import Image, ImageStat from .. import shared # type: ignore from ..background_queue import (ActivityType, BackgroundActivity, BackgroundQueue) from ..dialogs.add_manual_dialog import AddManualDialog from ..models.movie_model import MovieModel from ..models.season_model import SeasonModel from ..models.series_model import SeriesModel from ..models.episode_model import EpisodeModel from ..providers.local_provider import LocalProvider as local from ..providers.tmdb_provider import TMDBProvider as tmdb from ..widgets.episode_row import EpisodeRow from ..widgets.theme_switcher import ThemeSwitcher @Gtk.Template(resource_path=shared.PREFIX + '/ui/pages/details_page.ui') class DetailsView(Adw.NavigationPage): """ Widget that represents the details view. Properties: content (MovieModel or SeriesModel): content associated to the information shown Methods: None Signals: deleted: emited when the user confirms the deletion of the content edited: emited when a user confirms the edits for manually added content """ __gtype_name__ = 'DetailsView' content = GObject.Property(type=object) __gsignals__ = { 'deleted': (GObject.SIGNAL_RUN_FIRST, None, ()), 'edited': (GObject.SIGNAL_RUN_FIRST, None, ()), } _view_stack = Gtk.Template.Child() _menu_btn = Gtk.Template.Child() _background_picture = Gtk.Template.Child() _poster_picture = Gtk.Template.Child() _title_lbl = Gtk.Template.Child() _tagline_lbl = Gtk.Template.Child() _genres_lbl = Gtk.Template.Child() _chip1_lbl = Gtk.Template.Child() _chip2_lbl = Gtk.Template.Child() _chip3_lbl = Gtk.Template.Child() _chip4_lbl = Gtk.Template.Child() _watched_btn = Gtk.Template.Child() _btn_content = Gtk.Template.Child() _notify_group = Gtk.Template.Child() _edit_btn = Gtk.Template.Child() _update_btn = Gtk.Template.Child() _description_box = Gtk.Template.Child() _overview_lbl = Gtk.Template.Child() _creator_box = Gtk.Template.Child() _creator_lbl = Gtk.Template.Child() _seasons_box = Gtk.Template.Child() _seasons_group = Gtk.Template.Child() _additional_info_box = Gtk.Template.Child() _flow_box = Gtk.Template.Child() _loading_lbl = Gtk.Template.Child() _notes_save_btn = Gtk.Template.Child() _notes_save_revealer = Gtk.Template.Child() _notes_textview = Gtk.Template.Child() def __init__(self, content: MovieModel | SeriesModel, content_view): super().__init__() self.content_view = content_view # Theme switcher (Adapted from https://gitlab.gnome.org/tijder/blueprintgtk/) themeswitcher = ThemeSwitcher() themeswitcher.connect( 'themer-clicked', self._on_themeswitcher_clicked,) self._menu_btn.get_popover().add_child(themeswitcher, 'themeswitcher') if type(content) is MovieModel: self.content = local.get_movie_by_id(content.id) else: self.content = local.get_series_by_id(content.id) logging.info( # type: ignore f'Loading info [{"movie" if type(content) is MovieModel else "TV Serie"}] {self.content.title}') local.set_recent_change_status(self.content.id, False, type( # type: ignore content) is MovieModel) # reset recent_change since it was clicked on self.content_view.refresh_view() self.set_title(self.content.title) # type: ignore self._view_stack.set_visible_child_name('loading') if shared.schema.get_int('win-width') >= 550: self.mobile = False else: self.mobile = True self._populate_data() @Gtk.Template.Callback() def _on_breakpoint_applied(self, breakpoint: Adw.Breakpoint) -> None: """ Callback for the "applied" signal. Sets the orientation of the page based on the breakpoint. Args: breakpoint (Adw.Breakpoint): the breakpoint that was applied Returns: None """ self.mobile = True if type(self.content) is SeriesModel: self._build_seasons_group() @Gtk.Template.Callback() def _on_breakpoint_unapplied(self, breakpoint: Adw.Breakpoint) -> None: """ Callback for the "unapplied" signal. Sets the orientation of the page based on the breakpoint. Args: breakpoint (Adw.Breakpoint): the breakpoint that was unapplied Returns: None """ self.mobile = False if type(self.content) is SeriesModel: self._build_seasons_group() def _populate_data(self) -> None: """ Populates the widgets with the available information. Args: None Returns: None """ # Both movies and tv series if self.content.backdrop_path: # type: ignore if not Adw.StyleManager.get_default().get_high_contrast(): self._background_picture.set_file(Gio.File.new_for_uri( self.content.backdrop_path)) # type: ignore with Image.open(self.content.backdrop_path[7:]) as image: stat = ImageStat.Stat(image.convert('L')) luminance = [ min((stat.mean[0] + stat.extrema[0][0]) / 510, 0.7), max((stat.mean[0] + stat.extrema[0][1]) / 510, 0.3), ] self._background_picture.set_opacity(1 - luminance[0] if Adw.StyleManager.get_default().get_dark() else luminance[1]) self._poster_picture.set_file(Gio.File.new_for_uri( self.content.poster_path)) # type: ignore self._title_lbl.set_text(self.content.title) # type: ignore if self.content.tagline: # type: ignore self._tagline_lbl.set_visible(True) self._tagline_lbl.set_text(self.content.tagline) # type: ignore if self.content.genres: # type: ignore self._genres_lbl.set_visible(True) self._genres_lbl.set_label( ', '.join(self.content.genres)) # type: ignore if self.content.release_date: # type: ignore self._chip1_lbl.set_visible(True) self._chip1_lbl.set_text(date.fromisoformat( # type: ignore self.content.release_date).strftime('%d %b. %Y')) if self.content.manual: # type: ignore self._edit_btn.set_visible(True) else: self._update_btn.set_visible(True) if self.content.overview: # type: ignore self._description_box.set_visible(True) self._overview_lbl.set_label(self.content.overview) # type: ignore # Movie specific if type(self.content) is MovieModel: self._watched_btn.set_visible(True) if self.content.watched: self._btn_content.set_label(_('Watched')) self._btn_content.set_icon_name('check-plain') else: self._btn_content.set_label(_('Mark as Watched')) self._btn_content.set_icon_name('watchlist') if self.content.runtime: self._chip2_lbl.set_visible(True) self._chip2_lbl.set_text( self._format_runtime(self.content.runtime)) self._chip2_lbl.set_tooltip_text(_("Runtime of Movie")) if not self.content.manual and datetime.strptime(self.content.release_date, '%Y-%m-%d') > datetime.now(): self._notify_group.set_visible(True) self._notify_group.set_active( 0 if local.get_notification_list_status(self.content.id, movie=True) else 1) # TV series specific if type(self.content) is SeriesModel: if self.content.seasons_number: self._chip2_lbl.set_visible(True) # TRANSLATORS: {num} is the total number of seasons self._chip2_lbl.set_text(ngettext('{num} Season'.format(num=self.content.seasons_number), '{num} Seasons'.format( num=self.content.seasons_number), self.content.seasons_number)) self._chip2_lbl.set_tooltip_text(_("Number of Seasons")) if self.content.episodes_number: self._chip3_lbl.set_visible(True) # TRANSLATORS: {num} is the total number of episodes self._chip3_lbl.set_text(ngettext('{num} Episode'.format(num=self.content.episodes_number), '{num} Episodes'.format( num=self.content.episodes_number), self.content.episodes_number)) if self.content.next_air_date: # type: ignore self._chip4_lbl.set_visible(True) self._chip4_lbl.set_text(date.fromisoformat( # type: ignore self.content.next_air_date).strftime('%d %b. %Y')) if not self.content.manual and self.content.in_production: self._notify_group.set_visible(True) self._notify_group.set_active( 0 if local.get_notification_list_status(self.content.id, movie=False) else 1) if self.content.created_by: self._creator_box.set_visible(True) self._creator_lbl.set_text(', '.join(self.content.created_by)) self._seasons_box.set_visible(True) self._build_seasons_group() self._build_flow_box() self._notes_textview.get_buffer().set_text(self.content.notes) # type: ignore self._notes_textview.get_buffer().connect( 'changed', self._on_notes_textview_changed) self._view_stack.set_visible_child_name('filled') def _build_seasons_group(self) -> None: """ Creates the widgets needed to show season and episodes metadata. Args: None Returns: None """ list_box = self._seasons_group.get_first_child().get_last_child().get_first_child() list_box.remove_all() self._episode_rows = [] for season in self.content.seasons: # type: ignore season_row = Adw.ExpanderRow(title=season.title, subtitle=ngettext('{num} Episode'.format(num=season.episodes_number), '{num} Episodes'.format( num=season.episodes_number), season.episodes_number)) poster = Gtk.Picture(height_request=112, width_request=75, content_fit=Gtk.ContentFit.FILL, margin_top=12, margin_bottom=12) poster.add_css_class('still') poster.set_file(Gio.File.new_for_uri(season.poster_path)) season_row.add_prefix(poster) button = Gtk.Button(valign=Gtk.Align.CENTER) if not self.mobile: btn_content = Adw.ButtonContent() if all(episode.watched for episode in season.episodes): btn_content.set_label(_('Watched')) btn_content.set_icon_name('check-plain') else: btn_content.set_label(_('Mark as Watched')) btn_content.set_icon_name('watchlist') button.set_child(btn_content) else: if all(episode.watched for episode in season.episodes): button.set_icon_name('check-plain') else: button.set_icon_name('watchlist') season_row.add_suffix(button) tmp = [] for episode in season.episodes: episode_row = EpisodeRow(episode, small_controls=self.mobile) episode_row.connect( 'watched-clicked', self._on_episode_watch_clicked, (button, season, episode)) episode_row.add_css_class("groupcolor") season_row.add_row(episode_row) tmp.append(episode_row) self._seasons_group.add(season_row) self._episode_rows.append((season, tmp)) button.connect('clicked', self._on_season_watched_clicked, (button, season, self._episode_rows)) def _on_episode_watch_clicked(self, source: Gtk.Widget, data: Tuple[Gtk.Button, SeasonModel, EpisodeModel]) -> None: """ Callback for "watched-clicked" signal. Called after an episode is (un)marked as watched, checks and updates, if needed, the watched button for the corresponding season. Args: source (Gtk.Widget): caller widget data(tuple[Gtk.Button, SeasonModel, EpisodeModel]): tuple with the Gtk.Button to change and the SeasonModel parent of the changed episode Returns: None """ self.content = local.get_series_by_id(self.content.id) # type: ignore season_idx = 0 for idx, season in enumerate(self.content.seasons): # type: ignore if season == data[1]: season_idx = idx # compare if the episode clicked was the newest released episode if this is the case set new_release to False if (season_idx+1) == int(self.content.last_episode_number.split('.')[0]) \ and data[2].number == int(self.content.last_episode_number.split('.')[1]): local.set_new_release_status(self.content.id, False) if not self.mobile: btn_content = data[0].get_child() # type: ignore if all(episode.watched for episode in self.content.seasons[season_idx].episodes): btn_content.set_label(_('Watched')) btn_content.set_icon_name('check-plain') else: btn_content.set_label(_('Mark as Watched')) btn_content.set_icon_name('watchlist') else: # type: ignore if all(episode.watched for episode in self.content.seasons[season_idx].episodes): data[0].set_icon_name('check-plain') else: data[0].set_icon_name('watchlist') # Update season status local.mark_watched_series(self.content.id, all( # type: ignore episode.watched for season in self.content.seasons for episode in season.episodes)) # type: ignore self.activate_action('win.refresh', None) def _on_season_watched_clicked(self, source: Gtk.Widget, data: Tuple[Gtk.Button, SeasonModel, List[Tuple[SeasonModel, List[EpisodeRow]]]]) -> None: """ Callback for "clicked" signal. Marks a whole season as (un)watched, making changes in the db and updating the ui. Args: source (Gtk.Widget): caller widget data (Tuple[Gtk.Button, SeasonModel, List[Tuple[SeasonModel, List[EpisodeRow]]]]): tuple with the Gtk.Button to change, the SeasonModel of the modified season, and a list of tuples of all SeasonModels and associated EpisodeRows. Returns: None """ self.content = local.get_series_by_id(self.content.id) # type: ignore season_idx = 0 for idx, season in enumerate(self.content.seasons): # type: ignore if season == data[1]: season_idx = idx episode_rows = [] for item in data[2]: if item[0] == self.content.seasons[season_idx]: # type: ignore episode_rows = item[1] # determine if we want to set all episodes to watched or to not watched if type(data[0].get_child()) is Adw.ButtonContent: set_to_watched = data[0].get_child().get_icon_name() == 'watchlist' else: set_to_watched = data[0].get_icon_name() == 'watchlist' # Make changes in db for episode in self.content.seasons[season_idx].episodes: local.mark_watched_episode( episode.id, set_to_watched) # type: ignore # if the season in which the last aired episode is in is clicked as watched remove new_release if season_idx == int(self.content.last_episode_number.split('.')[0]): local.set_new_release_status(self.content.id, False) # Update episode rows for episode_row in episode_rows: episode_row.set_watched_btn(set_to_watched) # type: ignore # Update season expander if not self.mobile: btn_content = data[0].get_child() if set_to_watched: # type: ignore btn_content.set_label(_('Watched')) btn_content.set_icon_name('check-plain') else: btn_content.set_label(_('Mark as Watched')) btn_content.set_icon_name('watchlist') else: if set_to_watched: # type: ignore data[0].set_icon_name('check-plain') else: data[0].set_icon_name('watchlist') # refetch data from db since we have changed episode.watched earlier self.content = local.get_series_by_id(self.content.id) # Update season status local.mark_watched_series(self.content.id, all( episode.watched for season in self.content.seasons for episode in season.episodes)) self.activate_action('win.refresh', None) def _build_flow_box(self) -> None: """ Adds the available metadata to the 'additional information' section. Args: None Returns: None """ if self._flow_box.get_child_at_index(0): return # Both movies and tv series if self.content.status: # type: ignore box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) label = Gtk.Label(label=_('Status')) label.add_css_class('heading') box.append(label) box.append(Gtk.Label(label=self.content.status)) # type: ignore self._flow_box.append(box) if self.content.original_language and self.content.original_language.iso_name != 'xx': # type: ignore box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) label = Gtk.Label(label=_('Original Language')) label.add_css_class('heading') box.append(label) # type: ignore box.append( Gtk.Label(label=self.content.original_language.name, lines=2, wrap=True)) self._flow_box.append(box) if self.content.original_title: # type: ignore box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) label = Gtk.Label(label=_('Original Title')) label.add_css_class('heading') box.append(label) # type: ignore box.append( Gtk.Label(label=self.content.original_title, lines=2, wrap=True)) self._flow_box.append(box) # Movie specific if type(self.content) is MovieModel: if self.content.budget: box = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL, spacing=6) label = Gtk.Label(label=_('Budget')) label.add_css_class('heading') box.append(label) box.append(Gtk.Label(label='US$ {budget:0.0f}'.format( budget=self.content.budget))) self._flow_box.append(box) if self.content.revenue: box = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL, spacing=6) label = Gtk.Label(label=_('Revenue')) label.add_css_class('heading') box.append(label) box.append(Gtk.Label(label='US$ {revenue:0.0f}'.format( revenue=self.content.revenue))) self._flow_box.append(box) # TV series specific if type(self.content) is SeriesModel: box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) label = Gtk.Label(label=_('In Production')) label.add_css_class('heading') box.append(label) box.append(Gtk.Label(label=_('Yes') if self.content.in_production else _('No'))) self._flow_box.append(box) if self.content.id and self.content.manual == False: box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) label = Gtk.Label(label=_('TMDB ID')) label.add_css_class('heading') box.append(label) url_str = ' {id} ' \ .format(category=("tv") if type(self.content) is SeriesModel else ("movie"), id=self.content.id) box.append(Gtk.Label(label=url_str, use_markup=True)) self._flow_box.append(box) if self._flow_box.get_child_at_index(0) is None: self._additional_info_box.set_visible(False) def _format_runtime(self, runtime: str) -> str: """ Formats the runtime in hours and minutes. Args: runtime (str): runtime in minutes Returns: formatted duration string in hours and minutes """ h, m = divmod(int(runtime), 60) if h > 0: # TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively return _('{h}h {m}min').format(h=h, m=m) else: # TRANSLATORS: {m} is the runtime minutes return _('{m}min').format(m=m) @Gtk.Template.Callback('_on_watched_btn_clicked') def _on_watched_btn_clicked(self, user_data: object | None) -> None: """ Callback for the "clicked" signal. Updates the watched flag for the content in the db and changes the button text accordingly. Args: user_data (object or None): additional data passed to the callback Returns: None """ if type(self.content) is MovieModel: local.mark_watched_movie(self.content.id, not self.content.watched) self.content.watched = not self.content.watched # type: ignore if self.content.watched: self._btn_content.set_label(_('Watched')) self._btn_content.set_icon_name('check-plain') else: self._btn_content.set_label(_('Mark as Watched')) self._btn_content.set_icon_name('watchlist') self.activate_action('win.refresh', None) @Gtk.Template.Callback('_on_edit_btn_clicked') def _on_edit_btn_clicked(self, user_data: object | None) -> None: """ Callback for the "clicked" signal. Opens the edit window to change the metadata of the content. Available only for manually added content. Args: user_data (object or None): additional data passed to the callback Returns: None """ logging.info( f'Editing [{"movie" if type(self.content) is MovieModel else "TV Serie"}] {self.content.title}') dialog = AddManualDialog(edit_mode=True, content=self.content) dialog.connect('edit-saved', self._on_edit_saved) dialog.present(self) def _on_edit_saved(self, source: Gtk.Widget, content: MovieModel | SeriesModel) -> None: """ Callback for "edit-saved" signal. Replaces the navigation stack with an updated top page resulting in a content refresh. Args: source (Gtk.Widget): caller widget content (MovieModel or SeriesModel): updated content to show Returns: None """ root_page = self.get_ancestor( Adw.NavigationView).get_previous_page(self) self.get_ancestor(Adw.NavigationView).replace( [root_page, DetailsView(content, self.content_view)]) @Gtk.Template.Callback('_on_update_btn_clicked') def _on_update_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Adds a background activity to start a manual update. Args: user_data (object or None): additional data passed to the callback Returns: None """ self._view_stack.set_visible_child_name('loading') # TRANSLATORS: {title} is the showed content's title self._loading_lbl.set_label(_('Updating {title}').format( title=self.content.title)) # type: ignore BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.UPDATE, # TRANSLATORS: {title} is the content's title title=_('Update {title}').format(title=self.content.title), task_function=self._update), on_done=self._on_update_done) @Gtk.Template.Callback() def _on_notify_group_toggled(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for "notify::active" signal. Adds the series to the notification list Args: user_data (object or None): additional data passed to the callback Returns: None """ movie = type(self.content) == MovieModel local.set_notification_list_status( self.content.id, self._notify_group.get_active() == 0, movie=movie) # if we remove the content from the notification_list then remove the new/soon_release flags and refresh the ContentView if not self._notify_group.get_active() == 0: local.set_new_release_status(self.content.id, False, movie=movie) local.set_soon_release_status(self.content.id, False, movie=movie) self.content_view.refresh_view() else: # if we add content we check if should set the soon_release flag compare_date = self.content.release_date if movie else self.content.next_air_date # TODO make this a variable and sync with main_view.py if len(compare_date) > 0 and datetime.strptime(compare_date, '%Y-%m-%d') < datetime.now() + timedelta(days=14 if movie else 7): local.set_soon_release_status( self.content.id, True, movie=movie) self.content_view.refresh_view() def _update(self, activity: BackgroundActivity) -> None: """ Fetches updated information and updates the stored copy. Additionally it handles ui updates. Args: activity (BackgroundActivity): the calling activity Returns: None """ if type(self.content) is MovieModel: self.new_content = MovieModel(tmdb.get_movie(self.content.id)) local.update_movie(old=self.content, new=self.new_content) self.new_content = local.get_movie_by_id(self.content.id) else: self.new_content = SeriesModel(tmdb.get_serie(self.content.id)) local.update_series(old=self.content, new=self.new_content) self.new_content = local.get_series_by_id(self.content.id) def _on_update_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" root_page = self.get_ancestor( Adw.NavigationView).get_previous_page(self) self.get_ancestor(Adw.NavigationView).replace( [root_page, DetailsView(self.new_content, self.content_view)]) self._loading_lbl.set_label(_('Loading Metadata…')) self._view_stack.set_visible_child_name('filled') activity.end() @Gtk.Template.Callback('_on_delete_btn_clicked') def _on_delete_btn_clicked(self, user_data: object | None) -> None: """ Callback for the "clicked" signal. Asks the user for a confirmation after a delete request. Args: user_data (object or None): additional data passed to the callback Returns: None """ logging.debug('Show delete dialog') # TRANSLATORS: {title} is the content's title dialog = Adw.AlertDialog.new(heading=C_('message dialog heading', 'Delete {title}?').format( title=self.content.title), # type: ignore body=C_('message dialog body', 'This title will be deleted from your watchlist.')) dialog.add_response('cancel', C_('message dialog action', '_Cancel')) dialog.add_response('delete', C_('message dialog action', '_Delete')) dialog.set_default_response('delete') dialog.set_close_response('cancel') dialog.set_response_appearance( 'delete', Adw.ResponseAppearance.DESTRUCTIVE) dialog.choose(self, None, self._on_message_dialog_choose, None) def _on_message_dialog_choose(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the message dialog. Finishes the async operation and retrieves the user response. If the later is positive, adds a background activity to delete the content. Args: source (Gtk.Widget): object that started the async operation result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): additional data passed to the callback Returns: None """ result = Adw.AlertDialog.choose_finish(source, result) if result == 'cancel': logging.debug('Delete dialog: cancel, aborting') return self.get_ancestor(Adw.NavigationView).pop() # type: ignore logging.debug(f'Delete dialog: confim, delete {self.content.title}') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.REMOVE, # TRANSLATORS: {title} is the content's title title=_('Delete {title}').format( title=self.content.title), # type: ignore task_function=self._delete), on_done=self._on_delete_done) def _delete(self, activity: BackgroundActivity) -> None: """ Deletes the content from the db. Args: activity (BackgroundActivity): the calling activity Returns: None """ if type(self.content) is MovieModel: local.delete_movie(self.content.id) else: local.delete_series(self.content.id) # type: ignore def _on_delete_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" self.emit('deleted') activity.end() def _on_themeswitcher_clicked(self, source: Gtk.Widget) -> None: """ Callback for "themer-clicked" signal. Called after an theme is switched changes background picture if needed Args: source (Gtk.Widget): caller widget Returns: None """ if self.content.backdrop_path: # type: ignore if not Adw.StyleManager.get_default().get_high_contrast(): self._background_picture.set_file(Gio.File.new_for_uri( self.content.backdrop_path)) # type: ignore # type: ignore with Image.open(self.content.backdrop_path[7:]) as image: stat = ImageStat.Stat(image.convert('L')) luminance = [ min((stat.mean[0] + stat.extrema[0][0]) / 510, 0.7), max((stat.mean[0] + stat.extrema[0][1]) / 510, 0.3), ] self._background_picture.set_opacity(1 - luminance[0] if Adw.StyleManager.get_default().get_dark() else luminance[1]) @Gtk.Template.Callback() def _on_notes_btn_clicked(self, user_data: GObject.GPointer | None) -> None: """ Callback for the "clicked" signal. Saves the notes for the content in the db. Args: user_data (GObject.GPointer or None): additional data passed to the callback Returns: None """ notes = self._notes_textview.get_buffer().get_text( self._notes_textview.get_buffer().get_start_iter(), self._notes_textview.get_buffer().get_end_iter(), True ) if type(self.content) is MovieModel: local.update_movie_notes(self.content.id, notes) # type: ignore if type(self.content) is SeriesModel: local.update_serie_notes(self.content.id, notes) # type: ignore self._notes_save_revealer.set_reveal_child(False) self.content.notes = notes # type: ignore self.activate_action('win.refresh', None) def _on_notes_textview_changed(self, user_data: GObject.GPointer | None) -> None: """ Callback for the "changed" signal. Shows the save button. Args: user_data (GObject.GPointer or None): additional data passed to the callback Returns: None """ self._notes_save_revealer.set_reveal_child(True) ticketbooth-1.2.0/src/pages/edit_episode_page.py000066400000000000000000000073551501006415200217260ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gi.repository import Adw, GObject, Gtk from .. import shared # type: ignore from ..models.episode_model import EpisodeModel @Gtk.Template(resource_path=shared.PREFIX + '/ui/pages/edit_episode_page.ui') class EditEpisodeNavigationPage(Adw.NavigationPage): """ This class represents the 'edit episode' NavigationPane. Properties: None Methods: None Signals: edit-saved (title: str, episode_number: int, runtime: int, overview: str, still_uri: str): emited when the user clicks the save button """ __gtype_name__ = 'EditEpisodeNavigationPage' _still = Gtk.Template.Child() _episode_spin_row = Gtk.Template.Child() _title_entry = Gtk.Template.Child() _runtime_spin_row = Gtk.Template.Child() _overview_text = Gtk.Template.Child() __gsignals__ = { 'edit-saved': (GObject.SIGNAL_RUN_LAST, None, (str, int, int, str, str, bool,)), } def __init__(self, title: str = '', episode_number: int = 0, runtime: int = 0, overview: str = '', still_uri: str = f'resource://{shared.PREFIX}/blank_still.jpg', watched: bool = False): super().__init__() self._title = title self._episode_number = episode_number self._runtime = runtime self._overview = overview self._still_uri = still_uri self._watched = watched @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Sets the fields/still image to the provided values Args: user_data (object or None): user data passed to the callback. Returns: None """ self._overview_text.remove_css_class('view') self._title_entry.set_text(self._title) self._runtime_spin_row.set_value(self._runtime) self._still.set_blank_image(f'resource://{shared.PREFIX}/blank_still.jpg') if self._still_uri.startswith('file'): self._still.set_image(self._still_uri) self._overview_text.get_buffer().set_text(self._overview, -1) self._episode_spin_row.set_value(self._episode_number) self._title_entry.grab_focus() @Gtk.Template.Callback('_enable_save') def _enable_save(self, source: Gtk.Widget, title: str, episode_number: int) -> bool: """ Closure to determine if the 'save' button should be enabled or not. Args: source (Gtk.Widget): caller widget title (str): title text episode_number (int): episode number Returns: bool """ return True if title and episode_number > 0 else False @Gtk.Template.Callback('_on_save_btn_clicked') def _on_save_btn_clicked(self, user_data: object | None) -> None: """ Callback for the "clicked" signal. Emits the "edit-saved" signal and pops the NavigationPage. Args: user_data (object or None): user data passed to the callback. Returns: None """ buffer = self._overview_text.get_buffer() start_iter = buffer.get_start_iter() end_iter = buffer.get_end_iter() overview = buffer.get_text(start_iter, end_iter, False) title = self._title_entry.get_text() episode_number = int(self._episode_spin_row.get_value()) runtime = int(self._runtime_spin_row.get_value()) still_uri = self._still.get_uri() self.emit('edit-saved', title, episode_number, runtime, overview, still_uri, self._watched) self.get_ancestor(Adw.NavigationView).pop() ticketbooth-1.2.0/src/pages/meson.build000066400000000000000000000005351501006415200200560ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) pagesdir = join_paths(pkgdatadir, 'src/pages') sources = [ '__init__.py', 'details_page.py', 'edit_episode_page.py', ] install_data(sources, install_dir: pagesdir) ticketbooth-1.2.0/src/preferences.py000066400000000000000000000506621501006415200174760ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import glob import logging import os from gettext import gettext as _ from gettext import pgettext as C_ from pathlib import Path import tmdbsimple from gi.repository import Adw, Gio, GLib, GObject, Gtk from requests import HTTPError from . import shared # type: ignore from .background_queue import ActivityType, BackgroundActivity, BackgroundQueue from .models.language_model import LanguageModel from .providers.local_provider import LocalProvider as local from .providers.tmdb_provider import TMDBProvider as tmdb @Gtk.Template(resource_path=shared.PREFIX + '/ui/preferences.ui') class PreferencesDialog(Adw.PreferencesDialog): __gtype_name__ = 'PreferencesDialog' _download_group = Gtk.Template.Child() _language_comborow = Gtk.Template.Child() _language_model = Gtk.Template.Child() _update_freq_comborow = Gtk.Template.Child() _offline_group = Gtk.Template.Child() _offline_switch = Gtk.Template.Child() _tmdb_group = Gtk.Template.Child() _use_own_key_switch = Gtk.Template.Child() _own_key_entryrow = Gtk.Template.Child() _housekeeping_group = Gtk.Template.Child() _exit_cache_switch = Gtk.Template.Child() _cache_row = Gtk.Template.Child() _data_row = Gtk.Template.Child() def __init__(self): super().__init__() self.language_change_handler = self._language_comborow.connect( 'notify::selected', self._on_language_changed) self._update_freq_comborow.connect( 'notify::selected', self._on_freq_changed) shared.schema.bind('onboard-complete', self._offline_group, 'sensitive', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('onboard-complete', self._download_group, 'visible', Gio.SettingsBindFlags.INVERT_BOOLEAN) shared.schema.bind('onboard-complete', self._tmdb_group, 'sensitive', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('offline-mode', self._offline_switch, 'active', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('use-own-tmdb-key', self._use_own_key_switch, 'active', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('exit-remove-cache', self._exit_cache_switch, 'active', Gio.SettingsBindFlags.DEFAULT) self._offline_switch.connect('notify::active', lambda pspec, user_data: logging.debug( f'Toggled offline mode: {self._offline_switch.get_active()}')) self._use_own_key_switch.connect( 'notify::active', self._on_use_own_key_switch_activated) self._exit_cache_switch.connect('notify::active', lambda pspec, user_data: logging.debug( f'Toggled clear cache on exit: {self._exit_cache_switch.get_active()}')) @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for the "map" signal. Populates dropdowns and checks if an automatic update of the content is due. Args: user_data (object or None): user data passed to the callback. Returns: None """ if shared.schema.get_boolean('onboard-complete'): self._setup_languages() # Update frequency dropdown match shared.schema.get_string('update-freq'): case 'never': self._update_freq_comborow.set_selected(0) case 'day': self._update_freq_comborow.set_selected(1) case 'week': self._update_freq_comborow.set_selected(2) case 'month': self._update_freq_comborow.set_selected(3) self._own_key_entryrow.set_text( shared.schema.get_string('own-tmdb-key')) # Update occupied space self._update_occupied_space() def _setup_languages(self): self._language_comborow.handler_block(self.language_change_handler) languages = local.get_all_languages() languages.pop(len(languages)-6) # remove 'no language' for language in languages: self._language_model.append(language.name) self._language_comborow.set_selected( self._get_selected_language_index(shared.schema.get_string('tmdb-lang'))) self._language_comborow.handler_unblock(self.language_change_handler) def _on_language_changed(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for "notify::selected" signal. Updates the prefered TMDB language in GSettings. Args: pspec (GObject.ParamSpec): The GParamSpec of the property which changed user_data (object or None): additional data passed to the callback Returns: None """ language = self._get_selected_language( self._language_comborow.get_selected_item().get_string()) shared.schema.set_string('tmdb-lang', language) logging.debug(f'Changed TMDB language to {language}') def _on_freq_changed(self, pspec, user_data: object | None) -> None: """ Callback for "notify::selected" signal. Updates the frequency for content updates in GSettings. Args: pspec (GObject.ParamSpec): The GParamSpec of the property which changed user_data (object or None): additional data passed to the callback Returns: None """ freq = self._update_freq_comborow.get_selected() match freq: case 0: shared.schema.set_string('update-freq', 'never') logging.debug(f'Changed update frequency to never') case 1: shared.schema.set_string('update-freq', 'day') logging.debug(f'Changed update frequency to day') case 2: shared.schema.set_string('update-freq', 'week') logging.debug(f'Changed update frequency to week') case 3: shared.schema.set_string('update-freq', 'month') logging.debug(f'Changed update frequency to month') def _get_selected_language_index(self, iso_name: str) -> int: """ Loops all available languages and returns the index of the one with the specified iso name. If a result is not found, it returns the index for English (37). Args: iso_name: a language's iso name Return: int with the index """ for idx, language in enumerate(local.get_all_languages()): if language.iso_name == iso_name: return idx return 37 def _get_selected_language(self, name: str) -> str: """ Loops all available languages and returns the iso name of the one with the specified name. If a result is not found, it returns the iso name for English (en). Args: name: a language's name Return: str with the iso name """ for language in local.get_all_languages(): if language.name == name: return language.iso_name return 'en' @Gtk.Template.Callback('_on_download_activate') def _on_download_activate(self, user_data: object | None) -> None: """ Completes the downlaod, stores the data in the db and sets the relevant GSettings. Args: None Results: None """ logging.info('Attempting first setup completetion') Gio.NetworkMonitor.get_default().can_reach_async( Gio.NetworkAddress.parse_uri('https://api.themoviedb.org', 80), None, self._on_reach_done, None ) def _on_reach_done(self, source: GObject.Object | None, result: Gio.AsyncResult, data: object | None) -> None: """ Callback for asynchronous network check, reached after the first call. If the network is available, proced with the download, otherwise keep checking every second until it becomes available or the user goes in offline mode. Args: source (GObject.Object or None): the object the asynchronous operation was started with. result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): user data passed to the callback. Returns: None """ try: network = Gio.NetworkMonitor.get_default().can_reach_finish(result) except GLib.Error: network = None if network: logging.error('Network ok, start download') languages = tmdb.get_languages() for lang in languages: local.add_language(LanguageModel(lang)) local.update_movies_table() local.update_series_table() shared.schema.set_boolean('first-run', False) shared.schema.set_boolean('offline-mode', False) shared.schema.set_boolean('onboard-complete', True) shared.schema.set_boolean('db-needs-update', False) self._setup_languages() Gio.NetworkMonitor.get_default().connect( 'network-changed', self._on_network_changed) else: logging.error('No network, aborting first setup completion') dialog = Adw.AlertDialog.new( heading=C_('message dialog heading', 'No Network'), body=C_('message dialog body', 'Connect to the Internet to complete the setup.') ) dialog.add_response('ok', C_('alert dialog action', '_OK')) dialog.choose(self, None, None, None) def _on_network_changed(self, network_monitor: Gio.NetworkMonitor, network_available: bool) -> None: """ Callback for "network-changed" signal. If no network is available, it turns on offline mode. Args: network_monitor (Gio.NetworkMonitor): the NetworkMonitor in use network_available (bool): whether or not the network is available Returns: None """ shared.schema.set_boolean( 'offline-mode', GLib.Variant.new_boolean(not network_available)) @Gtk.Template.Callback('_on_clear_cache_activate') def _on_clear_cache_activate(self, user_data: object | None) -> None: """ Callback for "activated" signal. Shows a confirmation dialog to the user. Args: user_data (object or None): additional data passed to the callback Returns: None """ logging.debug('Show cache clear dialog') builder = Gtk.Builder.new_from_resource( shared.PREFIX + '/ui/dialogs/message_dialogs.ui') _clear_cache_dialog = builder.get_object('_clear_cache_dialog') _clear_cache_dialog.choose(self, None, self._on_cache_message_dialog_choose, None) def _on_cache_message_dialog_choose(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the message dialog. Finishes the async operation and retrieves the user response. If the later is positive, adds a background activity to delete the cache. Args: source (Gtk.Widget): object that started the async operation result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): additional data passed to the callback Returns: None """ result = Adw.AlertDialog.choose_finish(source, result) if result == 'cache_cancel': logging.debug('Cache clear dialog: cancel, aborting') return logging.debug('Cache clear dialog: sel, aborting') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.REMOVE, title=C_('Background activity title', 'Clear cache'), task_function=self._clear_cache), on_done=self._on_cache_clear_done) def _clear_cache(self, activity: BackgroundActivity) -> None: """ Clears the cache. Args: activity (BackgroundActivity): the calling activity Returns: None """ logging.info('Deleting cache') files = glob.glob('*.jpg', root_dir=shared.cache_dir) for file in files: os.remove(shared.cache_dir / file) logging.debug(f'Deleted {shared.cache_dir / file}') def _on_cache_clear_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): self._update_occupied_space() activity.end() @Gtk.Template.Callback('_on_clear_activate') def _on_clear_btn_clicked(self, user_data: object | None) -> None: """ Callback for "activated" signal. Shows a confirmation dialog to the user. Args: user_data (object or None): additional data passed to the callback Returns: None """ logging.debug('Show data clear dialog') builder = Gtk.Builder.new_from_resource( shared.PREFIX + '/ui/dialogs/message_dialogs.ui') _clear_data_dialog = builder.get_object('_clear_data_dialog') _movies_row = builder.get_object('_movies_row') _series_row = builder.get_object('_series_row') self._movies_checkbtn = builder.get_object('_movies_checkbtn') self._series_checkbtn = builder.get_object('_series_checkbtn') # TRANSLATORS: {number} is the number of titles _movies_row.set_subtitle(_('{number} Titles').format( number=len(local.get_all_movies()))) _series_row.set_subtitle(_('{number} Titles').format( number=len(local.get_all_series()))) _clear_data_dialog.choose(self, None, self._on_data_message_dialog_choose, None) def _on_data_message_dialog_choose(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the message dialog. Finishes the async operation and retrieves the user response. If the later is positive, adds background activities to delete the selected data. Args: source (Gtk.Widget): object that started the async operation result (Gio.AsyncResult): a Gio.AsyncResultresult = Adw.AlertDialog.choose_finish(source, result) if result == 'data_cancel': return user_data (object or None): additional data passed to the callback Returns: None """ result = Adw.AlertDialog.choose_finish(source, result) if result == 'data_cancel': logging.debug('Data clear dialog: cancel, aborting') return # Movies if self._movies_checkbtn.get_active(): logging.debug('Data clear dialog: movies selected') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.REMOVE, title=C_('Background activity title', 'Delete all movies'), task_function=self._clear_movies), on_done=self._on_data_clear_done) # TV Series if self._series_checkbtn.get_active(): logging.debug('Data clear dialog: tv series selected') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.REMOVE, title=C_('Background activity title', 'Delete all TV Series'), task_function=self._clear_series), on_done=self._on_data_clear_done) def _clear_movies(self, activity: BackgroundActivity) -> None: """ Clears all movies. Args: activity (BackgroundActivity): the calling activity Returns: None """ logging.info('Deleting all movies') for movie in local.get_all_movies(): # type: ignore local.delete_movie(movie.id) logging.debug(f'Deleted ({movie.id}) {movie.title}') def _on_data_clear_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" self._update_occupied_space() self.get_parent().activate_action('win.refresh', None) activity.end() def _clear_series(self, activity: BackgroundActivity) -> None: """ Clears all TV series. Args: activity (BackgroundActivity): the calling activity Returns: None """ logging.info('Deleting all TV series') for serie in local.get_all_series(): # type: ignore local.delete_series(serie.id) logging.debug(f'Deleted ({serie.id}) {serie.title}') def _calculate_space(self, directory: Path) -> float: """ Given a directory, calculates the total space occupied on disk. Args: directory (Path): the directory to measure Returns: float with space occupied in MegaBytes (MB) """ return sum(file.stat().st_size for file in directory.rglob('*'))/1024.0/1024.0 def _update_occupied_space(self) -> None: """ After calculating space occupied by cache and data, updates the ui labels to reflect the values. Args: None Returns: None """ cache_space = self._calculate_space(shared.cache_dir) data_space = self._calculate_space(shared.data_dir) self._housekeeping_group.set_description( # TRANSLATORS: {total_space:.2f} is the total occupied space _('Ticket Booth is currently using {total_space:.2f} MB. Use the options below to free some space.').format(total_space=cache_space+data_space)) # TRANSLATORS: {space:.2f} is the occupied space self._cache_row.set_subtitle( _('{space:.2f} MB occupied').format(space=cache_space)) self._data_row.set_subtitle( _('{space:.2f} MB occupied').format(space=data_space)) @Gtk.Template.Callback('_on_own_key_changed') def _on_own_key_changed(self, user_data: object | None) -> None: """ Callback for 'changed' signal. Removes all CSS classes. Args: user_data (object or None): additional data passed to the callback Returns: None """ self._own_key_entryrow.remove_css_class('error') self._own_key_entryrow.remove_css_class('success') @Gtk.Template.Callback('_on_check_own_key_button_clicked') def _on_check_own_key_button_clicked(self, user_data: object | None) -> None: """ Callback for 'clicked' signal. Temporarelly changes the API key in use with the one provided and checks if it is valid. Args: user_data (object or None): additional data passed to the callback Returns: None """ tmdb.set_key(self._own_key_entryrow.get_text()) try: tmdb.get_movie(575264) shared.schema.set_string( 'own-tmdb-key', self._own_key_entryrow.get_text()) self._own_key_entryrow.add_css_class('success') except (tmdbsimple.base.APIKeyError, HTTPError): self._own_key_entryrow.add_css_class('error') tmdb.set_key(tmdb.get_builtin_key()) def _on_use_own_key_switch_activated(self, pspec, user_data: object | None) -> None: """ Callback for 'notify::active' signal. Sets the API key is use based on the state of the property. Args: pspec (GObject.ParamSpec): pspec of the changed property user_data (object or None): additional data passed to the callback Returns: None """ if self._use_own_key_switch.get_active(): tmdb.set_key(self._own_key_entryrow.get_text()) else: tmdb.set_key(tmdb.get_builtin_key()) ticketbooth-1.2.0/src/providers/000077500000000000000000000000001501006415200166275ustar00rootroot00000000000000ticketbooth-1.2.0/src/providers/__init__.py000066400000000000000000000001251501006415200207360ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later ticketbooth-1.2.0/src/providers/local_provider.py000066400000000000000000002226021501006415200222110ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import logging import os import shutil import sqlite3 import zipfile import shutil import json from typing import List, Dict, Any from pathlib import Path from PIL import Image, ImageStat from datetime import datetime, timedelta from .. import shared # type: ignore from ..models.episode_model import EpisodeModel from ..models.language_model import LanguageModel from ..models.movie_model import MovieModel from ..models.season_model import SeasonModel from ..models.series_model import SeriesModel from ..providers.tmdb_provider import TMDBProvider as tmdb class LocalProvider: """ This class provides methods to interface with the local db. Properties: None Methods: create_movies_table(): Creates the table used to store movie details in a local database create_series_table(): Creates the table used to store tv series details in a local database create_languages_table(): Creates the table used to store the available languages in a local database create_tables(): Convenience method to create all tables with a single call update_series_table(): Checks for missing and adds new columns to the database add_language(language: LanguageModel): Inserts the provided LanguageModel in the languages table add_movie(id: int, movie: MovieModel): Inserts a movie in the movies table, querying the data from TMDB if only id is provided. add_series(id: int, serie: SeriesModel): Inserts a tv series in the series table, querying the data from TMDB if only id is provided. add_content(id: int, media_type: str): Convenience method to add movies and series from TMDB without using separate methods get_language_by_code(iso_code: str): Retrieves a language from the db via its iso_639_1 code. get_movie_by_id(id: str): Retrieves a movie from the db via its id get_all_movies(): Retrieves all movies from the db mark_watched_movie(id: str, status: bool): Sets the watched flag on the movie with the provided id. delete_movie(id: str): Deletes the movie with the provided id, removing associated files too. get_all_seasons(show: str): Retrieves metadata for all seasons of a show. get_season_episodes(show: str, season_number: int): Retrieves the episodes for a season of a show get_series_by_id(id: str): Retrieves the series with the provided id. get_all_series(): Retrieves all tv series from the db. mark_watched_series(id: str, watched: bool): Sets the watched flag on all episodes in the series and the series itself. delete_series(id: str): Deletes the tv series with the provided id, removing associated files too. get_all_languages(): Retrieves all languages from the db. get_next_manual_movie(): Calculates the next id for a manually added movie. get_next_manual_series(): Calculates the next id for a manually added tv series. get_next_manual_season(): Calculates the next id for a manually added season. get_next_manual_episode(): Calculates the next id for a manually added episode. get_language_by_name(name: str): Retrieves a language from the db via its name. update_movie(old: MovieModel, new: MovieModel): Updates a movie with new data. mark_watched_episode(id: str, watched: bool): Sets the watched flag on the specified episode. get_episode_by_id(id: str): Retrieves an episode from the db via its id. set_notification_list_status(id: int, value: bool): Sets the activate_notification field of the given content to value get_notification_list_status(id: int): Returns if the content given by the id is on the notification list set_new_release_status(id: int, value: bool): Sets the new_release field of the given content to value get_new_release_status(id: int): Returns if the content given by the id has had a new release set_soon_release_status(id: int, value: bool): Sets the soon_release field of the given content to value get_soon_release_status(id: int): Returns if the content given by the id has a new release soon export_data(path: Path): Exports the database a zip archive to the given path """ @staticmethod def create_movies_table() -> None: """ Creates the table used to store movie details in a local database. Args: None Returns: None """ with sqlite3.connect(shared.db) as connection: logging.debug('[db] Create movie table') sql = """CREATE TABLE IF NOT EXISTS movies ( activate_notification BOOLEAN, add_date TEXT, backdrop_path TEXT, budget INTEGER, color BOOLEAN, genres TEXT, id TEXT PRIMARY KEY, manual BOOLEAN, notes TEXT, new_release BOOLEAN, original_language TEXT, original_title TEXT, overview TEXT, poster_path TEXT, recent_change BOOLEAN, release_date TEXT, revenue INTEGER, runtime INTEGER, soon_release BOOLEAN, status TEXT, tagline TEXT, title TEXT, watched BOOLEAN, FOREIGN KEY (original_language) REFERENCES languages (iso_639_1) );""" connection.cursor().execute(sql) connection.commit() @staticmethod def create_series_table() -> None: """ Creates the table used to store tv series details in a local database. Args: None Returns: None """ with sqlite3.connect(shared.db) as connection: logging.debug('[db] Create series, seasons, and episodes tables') series_sql = """CREATE TABLE IF NOT EXISTS series ( add_date TEXT, backdrop_path TEXT, color BOOLEAN, created_by TEXT, episodes_number INT, genres TEXT, id TEXT PRIMARY KEY, in_production BOOLEAN, last_air_date TEXT, last_episode_number TEXT, manual BOOLEAN, next_air_date TEXT, new_release BOOLEAN, notes TEXT, original_language TEXT, original_title TEXT, overview TEXT, poster_path TEXT, recent_change BOOLEAN, release_date TEXT, seasons_number INT, soon_release BOOLEAN, status TEXT, tagline TEXT, title TEXT, watched BOOLEAN, activate_notification BOOLEAN, FOREIGN KEY (original_language) REFERENCES languages (iso_639_1) );""" seasons_sql = """CREATE TABLE IF NOT EXISTS seasons ( episodes_number INTEGER, id TEXT PRIMARY KEY, number INTEGER, overview TEXT, poster_path TEXT, title TEXT, show_id INTERGER, FOREIGN KEY (show_id) REFERENCES series (id) ON DELETE CASCADE );""" episodes_sql = """CREATE TABLE IF NOT EXISTS episodes ( id TEXT PRIMARY KEY, number INTEGER, overview TEXT, runtime INTEGER, season_number INTEGER, show_id INTEGER, still_path TEXT, title TEXT, watched BOOLEAN, FOREIGN KEY (show_id) REFERENCES series (id) ON DELETE CASCADE );""" connection.cursor().execute(series_sql) connection.cursor().execute(seasons_sql) connection.cursor().execute(episodes_sql) connection.commit() @staticmethod def update_series_table() -> None: """ Update the series table to add new data needed for notifications Args: None Returns: None """ with sqlite3.connect(shared.db) as connection: sql = """pragma table_info(series)""" result = connection.cursor().execute(sql).fetchall() if not any(item[1] == "notes" for item in result): sql = """ALTER TABLE series ADD notes TEXT DEFAULT '';""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "last_air_date" for item in result): sql = """ALTER TABLE series ADD last_air_date TEXT DEFAULT '';""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "color" for item in result): sql = """ALTER TABLE series ADD color BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "new_release" for item in result): sql = """ALTER TABLE series ADD new_release BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "recent_change" for item in result): sql = """ALTER TABLE series ADD recent_change BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "next_air_date" for item in result): sql = """ALTER TABLE series ADD next_air_date TEXT DEFAULT '';""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "soon_release" for item in result): sql = """ALTER TABLE series ADD soon_release BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "activate_notification" for item in result): sql = """ALTER TABLE series ADD activate_notification BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "last_episode_number" for item in result): sql = """ALTER TABLE series ADD last_episode_number TEXT DEFAULT ('');""" connection.cursor().execute(sql) connection.commit() connection.cursor().close() sql = """SELECT * FROM series;""" connection.row_factory = sqlite3.Row result = connection.cursor().execute(sql) connection.cursor().close() for entry in result: backdrop = entry["backdrop_path"] poster = entry["poster_path"] new_watched = (all(episode.watched for season in LocalProvider.get_all_seasons( entry["id"]) for episode in season.episodes)) if shared.DEBUG: # if we are in debug build we add Devel to the path, this way we can copy release databases to the debug build to test. backdrop = backdrop.replace(".Devel", '') poster = poster.replace(".Devel", '') index = poster.find("/data") if index > 0: if shared.DEBUG: backdrop = backdrop[:index] + \ ".Devel" + backdrop[index:] poster = poster[:index] + ".Devel" + poster[index:] color = LocalProvider.compute_badge_color(Path(poster[7:])) else: color = False activate_notification = entry["in_production"] sql = """UPDATE series SET activate_notification = ?, backdrop_path = ?, poster_path = ?, color = ?, watched = ? WHERE id = ?;""" result = connection.cursor().execute(sql, ( activate_notification, backdrop, poster, color, new_watched, entry["id"], )) connection.commit() @staticmethod def update_movies_table() -> None: with sqlite3.connect(shared.db) as connection: sql = """pragma table_info(movies)""" result = connection.cursor().execute(sql).fetchall() if not any(item[1] == "notes" for item in result): sql = """ALTER TABLE movies ADD notes TEXT DEFAULT '';""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "color" for item in result): sql = """ALTER TABLE movies ADD color BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "recent_change" for item in result): sql = """ALTER TABLE movies ADD recent_change BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "activate_notification" for item in result): sql = """ALTER TABLE movies ADD activate_notification BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "new_release" for item in result): sql = """ALTER TABLE movies ADD new_release BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() if not any(item[1] == "soon_release" for item in result): sql = """ALTER TABLE movies ADD soon_release BOOLEAN DEFAULT (0);""" connection.cursor().execute(sql) connection.commit() sql = """SELECT * FROM movies;""" connection.row_factory = sqlite3.Row result = connection.cursor().execute(sql) connection.cursor().close() for entry in result: backdrop = entry["backdrop_path"] poster = entry["poster_path"] if shared.DEBUG: backdrop = backdrop.replace(".Devel", '') poster = poster.replace(".Devel", '') index = backdrop.find("/data") if index > 0: if shared.DEBUG: backdrop = backdrop[:index] + \ ".Devel" + backdrop[index:] poster = poster[:index] + ".Devel" + poster[index:] color = LocalProvider.compute_badge_color(Path(poster[7:])) else: color = False if entry["release_date"]: activate_notification = datetime.strptime( entry["release_date"], '%Y-%m-%d') > datetime.now() else: activate_notification = False sql = """UPDATE movies SET activate_notification = ?, backdrop_path = ?, poster_path = ?, color = ? WHERE id = ?;""" result = connection.cursor().execute(sql, ( activate_notification, backdrop, poster, color, entry["id"],)) connection.commit() @staticmethod def compute_badge_color(poster_path: Path) -> bool: im = Image.open(poster_path) box = (im.size[0]-175, 0, im.size[0], 175) region = im.crop(box) median = ImageStat.Stat(region).median if sum(median) < 3 * 128: return True else: return False @staticmethod def create_languages_table() -> None: """ Creates the table used to store the available languages in a local database. Not implemented yet. Args: None Returns: None """ with sqlite3.connect(shared.db) as connection: logging.debug('[db] Create languages table') sql = """CREATE TABLE IF NOT EXISTS languages ( iso_639_1 TEXT PRIMARY KEY, name TEXT NOT NULL );""" connection.cursor().execute(sql) connection.commit() @staticmethod def create_tables() -> None: """ Convenience method to create all tables with a single call. Args: None Returns: None """ LocalProvider.create_movies_table() LocalProvider.create_series_table() LocalProvider.create_languages_table() @staticmethod def add_language(language: LanguageModel) -> int | None: """ Inserts the provided LanguageModel in the languages table. Args: language: a LanguageModel to insert Returns: lastrowid: int or None containing the id of the last inserted row """ with sqlite3.connect(shared.db) as connection: sql = 'INSERT INTO languages VALUES (?,?);' result = connection.cursor().execute(sql, (language.iso_name, language.name)) connection.commit() logging.debug(f'[db] Add {language.name}: {result.lastrowid}') return result.lastrowid @staticmethod def add_movie(id: int = 0, movie: MovieModel | None = None) -> int | None: """ Inserts a movie in the movies table, querying the data from TMDB if only id is provided. Args: id (int): tmdb id to query movie (MovieModel or None): movie to add Returns: int or None containing the id of the last inserted row """ if not movie: movie = MovieModel(tmdb.get_movie(id)) with sqlite3.connect(shared.db) as connection: sql = """INSERT INTO movies ( activate_notification, add_date, backdrop_path, budget, color, genres, id, manual, new_release, original_language, original_title, overview, poster_path, recent_change, release_date, revenue, runtime, soon_release, status, tagline, title, watched, notes ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);""" result = connection.cursor().execute(sql, ( movie.activate_notification, movie.add_date, movie.backdrop_path, movie.budget, movie.color, ','.join(movie.genres), movie.id, movie.manual, movie.new_release, movie.original_language.iso_name, # type: ignore movie.original_title, movie.overview, movie.poster_path, movie.recent_change, movie.release_date, movie.revenue, movie.runtime, movie.soon_release, movie.status, movie.tagline, movie.title, movie.watched, movie.notes, )) connection.commit() logging.debug( f'[db] Add {movie.title}, {movie.release_date}: {result.lastrowid}') return result.lastrowid @staticmethod def add_series(id: int = 0, serie: SeriesModel | None = None) -> int | None: """ Inserts a tv series in the series table, querying the data from TMDB if only id is provided. Args: id (int): tmdb id to query serie (SeriesModel or None): tv series to add Returns: int or None containing the id of the last inserted row """ if not serie: serie = SeriesModel(tmdb.get_serie(id)) with sqlite3.connect(shared.db) as connection: sql = """INSERT INTO series ( activate_notification, add_date, backdrop_path, color, created_by, episodes_number, genres, id, in_production, last_air_date, last_episode_number, manual, next_air_date, new_release, original_language, original_title, overview, poster_path, recent_change, release_date, seasons_number, soon_release, status, tagline, title, watched, notes ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);""" result = connection.cursor().execute(sql, ( serie.activate_notification, serie.add_date, serie.backdrop_path, serie.color, ','.join(serie.created_by), serie.episodes_number, ','.join(serie.genres), serie.id, serie.in_production, serie.last_air_date, serie.last_episode_number, serie.manual, serie.next_air_date, serie.new_release, serie.original_language.iso_name, # type: ignore serie.original_title, serie.overview, serie.poster_path, serie.recent_change, serie.release_date, serie.seasons_number, serie.soon_release, serie.status, serie.tagline, serie.title, serie.watched, serie.notes, )) for season in serie.seasons: sql = 'INSERT INTO seasons VALUES (?,?,?,?,?,?,?);' connection.cursor().execute(sql, ( season.episodes_number, season.id, season.number, season.overview, season.poster_path, season.title, season.show_id )) for episode in season.episodes: sql = 'INSERT INTO episodes VALUES (?,?,?,?,?,?,?,?,?);' connection.cursor().execute(sql, ( episode.id, episode.number, episode.overview, episode.runtime, episode.season_number, episode.show_id, episode.still_path, episode.title, episode.watched )) connection.commit() connection.cursor().close() logging.debug( f'[db] Add {serie.title}, {serie.release_date}: {result.lastrowid}') return result.lastrowid @staticmethod def add_content(id: int, media_type: str) -> int | None: """ Convenience method to add movies and series from TDMB without using separate methods. Args: id (int): id of the content media_type (str): content's media type Returns: int or None containing the id of the last inserted row """ if media_type == 'movie': return LocalProvider.add_movie(id) else: return LocalProvider.add_series(id) @staticmethod def get_language_by_code(iso_code: str) -> LanguageModel | None: """ Retrieves a language from the db via its iso_639_1 code. Args: iso_code (str): iso_639_1 code of the language to look for Returns: LanguageModel of the requested language or None if not found in db """ with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM languages WHERE iso_639_1 = ?""" result = connection.cursor().execute(sql, (iso_code,)).fetchone() if result: language = LanguageModel(t=result) logging.debug( f'[db] Get language by code {iso_code}: {language.name}') return language else: logging.error(f'[db] Get language by code {iso_code}: {None}') return None @staticmethod def get_movie_by_id(id: str) -> MovieModel | None: """ Retrieves a movie from the db via its id. Args: id (str): id of the movie to look for Returns: MovieModel of the requested movie or None if not found in db """ with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM movies WHERE id = ?;""" connection.row_factory = sqlite3.Row result = connection.cursor().execute(sql, (id,)).fetchone() if result: movie = MovieModel(t=result) logging.debug( f'[db] Get movie id {id}: {movie.title}, {movie.release_date}') return movie else: logging.error(f'[db] Get movie id {id}: None') return None @staticmethod def get_all_movies() -> List[MovieModel]: """ Retrieves all movies from the db. Args: None Returns: List of MovieModel or None """ with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM movies;""" connection.row_factory = sqlite3.Row result = connection.cursor().execute(sql).fetchall() if result: logging.debug(f'[db] Get all movies: {result}') movies = [] for movie in result: movies.append(MovieModel(t=movie)) return movies else: logging.debug(f'[db] Get all movies: {[]}') return [] @staticmethod def mark_watched_movie(id: int, watched: bool) -> int | None: """ Sets the watched flag on the movie with the provided id. Args: id (str): movie id to change watched (bool): status to set the flag to Returns: int or None containing the id of the last modified row """ if watched: LocalProvider.set_new_release_status(id, False, movie=True) LocalProvider.set_soon_release_status(id, False, movie=True) with sqlite3.connect(shared.db) as connection: sql = """UPDATE movies SET watched = ? WHERE id = ?""" result = connection.cursor().execute(sql, (watched, id,)) connection.commit() logging.debug( f'[db] Mark movie {id} watched {watched}: {result.lastrowid}') return result.lastrowid @staticmethod def delete_movie(id: str) -> int | None: """ Deletes the movie with the provided id, removing associated files too. Args: id (str): movie id to delete Returns: int or None containing the id of the last modified row """ logging.debug(f'[db] Movie {id}, delete requested') movie = LocalProvider.get_movie_by_id(id) if movie.backdrop_path.startswith('file'): # type: ignore os.remove(movie.backdrop_path[7:]) # type: ignore logging.debug(f'[db] Movie {id}, deleted backdrop') if movie.poster_path.startswith('file'): # type: ignore os.remove(movie.poster_path[7:]) # type: ignore logging.debug(f'[db] Movie {id}, deleted poster') with sqlite3.connect(shared.db) as connection: sql = """DELETE FROM movies WHERE id = ?""" result = connection.cursor().execute(sql, (id,)) connection.commit() logging.debug(f'[db] Movie {id}, deleted: {result.lastrowid}') return result.lastrowid @staticmethod def get_all_seasons(show: str) -> List[SeasonModel]: """ Retrieves metadata for all seasons of a show. Args: show (str): id of the show Returns: list of SeasonModel """ seasons = [] with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM seasons WHERE show_id = ? ORDER BY number;""" results = connection.cursor().execute(sql, (show,)).fetchall() if results: logging.debug(f'[db] Get all seasons: {results}') for result in results: seasons.append(SeasonModel(t=result)) else: logging.debug(f'[db] Get all seasons: {[]}') return seasons @staticmethod def get_season_episodes(show: str, season_num: int) -> List[EpisodeModel]: """ Retrieves the episodes for a season of a show. Args: show (str): id of the show season_num (int): season number Returns: list of EpisodeModel """ episodes = [] with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM episodes WHERE show_id = ? AND season_number = ? ORDER BY number;""" results = connection.cursor().execute(sql, (show, season_num,)).fetchall() if results: logging.debug( f'[db] Get show {show} season {season_num}: {results}') for result in results: episodes.append(EpisodeModel(t=result)) else: logging.debug( f'[db] Get show {show} season {season_num}: {[]}') return episodes @staticmethod def get_series_by_id(id: str) -> SeriesModel | None: """ Retrieves the series with the provided id. Args: id (str): id of the series to retrieve Returns: SeriesModel for the requested series or None """ with sqlite3.connect(shared.db) as connection: connection.row_factory = sqlite3.Row sql = 'SELECT * FROM series WHERE id=?;' result = connection.cursor().execute(sql, (id,)).fetchone() if result: serie = SeriesModel(t=result) logging.debug( f'[db] Get tv serie id {id}: {serie.title}') return serie else: logging.error(f'[db] Get tv serie id {id}: None') return None @staticmethod def get_all_series() -> List[SeriesModel]: """ Retrieves all tv series from the db. Args: None Returns: List of SeriesModel or None """ with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM series;""" connection.row_factory = sqlite3.Row result = connection.cursor().execute(sql).fetchall() if result: logging.debug(f'[db] Get all tv series: {result}') series = [] for serie in result: series.append(SeriesModel(t=serie)) return series else: logging.debug(f'[db] Get all tv series: {[]}') return [] @staticmethod def get_all_series_notification_list() -> List[SeriesModel]: """ Retrieves all tv series from the notification_list. Args: None Returns: List of SeriesModel or None """ with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM series WHERE activate_notification = 1;""" connection.row_factory = sqlite3.Row result = connection.cursor().execute(sql).fetchall() if result: logging.debug( f'[db] Get all tv series in notification_list: {result}') series = [] for serie in result: series.append(SeriesModel(t=serie)) return series else: logging.debug( f'[db] Get all tv series in notification_list: {[]}') return [] @staticmethod def get_all_movies_notification_list() -> List[MovieModel]: """ Retrieves all tv series from the notification_list. Args: None Returns: List of SeriesModel or None """ with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM movies WHERE activate_notification = 1;""" connection.row_factory = sqlite3.Row result = connection.cursor().execute(sql).fetchall() if result: logging.debug( f'[db] Get all moviesin notification_list: {result}') movies = [] for movie in result: movies.append(MovieModel(t=movie)) return movies else: logging.debug( f'[db] Get all movies in notification_list: {[]}') return [] @staticmethod def mark_watched_series(id: str, watched: bool) -> int | None: """ Sets the watched flag on the specified series. Args: id (str): tv series id to change watched (bool): status to set the flag to Returns: int or None containing the id of the last modified row """ # if all episodes are watched remove soon/new_release flags if watched: LocalProvider.set_new_release_status(id, False) LocalProvider.set_soon_release_status(id, False) with sqlite3.connect(shared.db) as connection: sql = 'UPDATE series SET watched = ? WHERE id = ?;' result = connection.cursor().execute(sql, (watched, id,)) connection.commit() logging.debug( f'[db] Mark tv serie {id} watched {watched}: {result.lastrowid}') return result.lastrowid @staticmethod def delete_series(id: str) -> int | None: """ Deletes the tv series with the provided id, removing associated files too. Args: id (str): tv series id to delete Returns: int or None containing the id of the last modified row """ logging.debug(f'[db] TV series {id}, delete requested') series = LocalProvider.get_series_by_id(id) if series.backdrop_path and series.backdrop_path.startswith('file'): # type: ignore try: os.remove(series.backdrop_path[7:]) # type: ignore logging.debug(f'[db] TV series {id}, deleted backdrop') except FileNotFoundError: pass if series.poster_path.startswith('file'): # type: ignore try: os.remove(series.poster_path[7:]) # type: ignore logging.debug(f'[db] TV series {id}, deleted poster') except FileNotFoundError: pass if (shared.series_dir/id).is_dir(): shutil.rmtree(shared.series_dir / id) logging.debug( f'[db] TV series {id}, deleted folder {shared.series_dir / id}') with sqlite3.connect(shared.db) as connection: connection.cursor().execute('PRAGMA foreign_keys = ON;') sql = """DELETE FROM series WHERE id = ?""" result = connection.cursor().execute(sql, (id,)) connection.commit() logging.debug(f'[db] TV series {id}, deleted: {result.lastrowid}') return result.lastrowid @staticmethod def get_all_languages() -> List[LanguageModel]: """ Retrieves all languages from the db. Args: None Returns: List of LanguageModel """ with sqlite3.connect(shared.db) as connection: sql = 'SELECT * FROM languages ORDER BY iso_639_1' result = connection.cursor().execute(sql).fetchall() languages = [] for language in result: languages.append(LanguageModel(t=language)) logging.debug(f'[db] Get all languages: {result}') return languages @staticmethod def get_next_manual_movie() -> str: """ Calculates the next id for a manually added movie. Args: None Returns: string with calculated id """ with sqlite3.connect(shared.db) as connection: sql = "SELECT id FROM movies WHERE id LIKE 'M-%' ORDER BY id DESC;" result = connection.cursor().execute(sql).fetchone() if result: l = result[0].split('-') return f'{l[0]}-{int(l[1])+1}' else: return 'M-1' @staticmethod def get_next_manual_series() -> str: """ Calculates the next id for a manually added tv series. Args: None Returns: string with calculated id """ with sqlite3.connect(shared.db) as connection: sql = "SELECT id FROM series WHERE id LIKE 'M-%' ORDER BY id DESC;" result = connection.cursor().execute(sql).fetchone() if result: l = result[0].split('-') return f'{l[0]}-{int(l[1])+1}' else: return 'M-1' @staticmethod def get_next_manual_season() -> str: """ Calculates the next id for a manually added season. Args: None Returns: string with calculated id """ with sqlite3.connect(shared.db) as connection: sql = "SELECT id FROM seasons WHERE id LIKE 'M-%' ORDER BY id DESC;" result = connection.cursor().execute(sql).fetchone() if result: l = result[0].split('-') return f'{l[0]}-{int(l[1])+1}' else: return 'M-1' @staticmethod def get_next_manual_episode() -> str: """ Calculates the next id for a manually added episode. Args: None Returns: string with calculated id """ with sqlite3.connect(shared.db) as connection: sql = "SELECT id FROM episodes WHERE id LIKE 'M-%' ORDER BY id DESC;" result = connection.cursor().execute(sql).fetchone() if result: l = result[0].split('-') return f'{l[0]}-{int(l[1])+1}' else: return 'M-1' @staticmethod def get_language_by_name(name: str) -> LanguageModel | None: """ Retrieves a language from the db via its name. Args: name (str): Returns: LanguageModel of the requested language or None if not found in db """ with sqlite3.connect(shared.db) as connection: sql = 'SELECT * FROM languages WHERE name = ?;' result = connection.cursor().execute(sql, (name,)).fetchone() if result: language = LanguageModel(t=result) logging.debug( f'[db] Get language by name {name}: {language.iso_name}') return language else: logging.error(f'[db] Get language by name {name}: {None}') return None @staticmethod def update_movie(old: MovieModel, new: MovieModel) -> int | None: """ Updates a movie with new data. Args: old: movie to be updated new: new movie data Returns: int or None containing the id of the last modified row """ with sqlite3.connect(shared.db) as connection: sql = """UPDATE movies SET backdrop_path = ?, budget = ?, color = ?, genres = ?, manual = ?, original_language = ?, original_title = ?, overview = ?, poster_path = ?, release_date = ?, revenue = ?, runtime = ?, status = ?, tagline = ?, title = ?, notes = ? WHERE id = ?; """ result = connection.cursor().execute(sql, ( new.backdrop_path, new.budget, new.color, ','.join(new.genres), new.manual, new.original_language.iso_name, # type: ignore new.original_title, new.overview, new.poster_path, new.release_date, new.revenue, new.runtime, new.status, new.tagline, new.title, old.notes, old.id, )) connection.commit() logging.debug(f'[db] Update movie {old.id}: {(new.backdrop_path, new.budget, ",".join(new.genres), new.manual, new.original_language.iso_name, new.original_title, new.overview, new.poster_path, new.release_date, new.revenue, new.runtime, new.status, new.tagline, new.title, old.notes, old.id)}') return result.lastrowid @staticmethod def update_series(old: SeriesModel, new: SeriesModel) -> int | None: """ Updates a series with new data. Args: old: series to be updated new: new series data Returns: int or None containing the id of the last modified row """ # Save episodes statuses before delete watched_episodes = [] for season in old.seasons: # type: ignore for episode in season.episodes: if episode.watched: watched_episodes.append(episode.id) # remove series but not the posters, therefore not calling remove_series() # TODO Handle if the poster changes, the same problem in update_movie with sqlite3.connect(shared.db) as connection: connection.cursor().execute('PRAGMA foreign_keys = ON;') sql = """DELETE FROM series WHERE id = ?""" result = connection.cursor().execute(sql, (old.id,)) connection.commit() connection.cursor().close() logging.debug(f'[db] TV series {id}, deleted: {result.lastrowid}') # Copy all flags that get reset but are still needed from the old to the new soon_release is automatically set in SeriesModel new.activate_notification = old.activate_notification new.add_date = old.add_date new.new_release = old.new_release new.recent_change = old.recent_change new.watched = old.watched new.notes = old.notes # Restore episodes statuses if they match before addition for idx, season in enumerate(new.seasons): for jdx, episode in enumerate(season.episodes): try: watched_episodes.index(episode.id) new.seasons[idx].episodes[jdx].watched = True except ValueError: new.seasons[idx].episodes[jdx].watched = False # we have found a new episode therefore the watched flag needs to be set to false new.watched = False LocalProvider.add_series(serie=new) return result.lastrowid @staticmethod def mark_watched_episode(id: str, watched: bool) -> int | None: """ Sets the watched flag on the specified episode. Args: id (str): episode id to change watched (bool): status to set the flag to Returns: int or None containing the id of the last modified row """ with sqlite3.connect(shared.db, check_same_thread=False) as connection: sql = """UPDATE episodes SET watched = ? WHERE id = ?""" result = connection.cursor().execute(sql, (watched, id,)) connection.commit() logging.debug( f'[db] Mark episode {id} watched {watched}: {result.lastrowid}') return result.lastrowid @staticmethod def get_episode_by_id(id: str) -> EpisodeModel | None: """ Retrieves an episode from the db via its id. Args: id (str): id of the movie to look for Returns: EpisodeModel of the requested episode or None if not found in db """ with sqlite3.connect(shared.db) as connection: sql = """SELECT * FROM episodes WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() if result: episode = EpisodeModel(t=result) logging.debug(f'[db] Get episode id {id}: {episode.title}') return episode else: logging.error(f'[db] Get episode id {id}: None') return None @staticmethod def set_notification_list_status(id: int, value: bool, movie: bool = False) -> None: """ Sets notification_list status of the content with the id to value. Args: id (str): id of the movie to look for value (bool): the value to set Returns: None """ if not movie: logging.debug( f'[db] TV series {id}, set activation_notification field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE series SET activate_notification = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)).fetchone() connection.commit() else: logging.debug( f'[db] Movie {id}, set activation_notification field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE movies SET activate_notification = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)).fetchone() connection.commit() @staticmethod def get_notification_list_status(id: int, movie: bool = False) -> bool: """ Returns activate_notification status from the content with given id. Args: id (str): id of the content to look for Returns: Bool with the status """ if not movie: logging.debug(f'[db] TV series {id}, get notification_list status') with sqlite3.connect(shared.db) as connection: sql = """SELECT activate_notification FROM series WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] else: logging.debug(f'[db] Movie {id}, get notification_list status') with sqlite3.connect(shared.db) as connection: sql = """SELECT activate_notification FROM movies WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] @staticmethod def set_new_release_status(id: int, value: bool, movie: bool = False) -> None: """ Sets new_release status of the content with the id to value. Args: id (str): id of the content to look for value (bool): the value to set Returns: Success int or None if not found in db """ if not movie: logging.debug( f'[db] TV series {id}, set new_release field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE series SET new_release = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)).fetchone() connection.commit() else: logging.debug(f'[db] movie {id}, set new_release field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE movies SET new_release = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)).fetchone() connection.commit() @staticmethod def get_new_release_status(id: int, movie: bool = False) -> None: """ Returns new_release status from the content with given id. Args: id (str): id of the content to look for Returns: Success int or None if not found in db """ if not movie: logging.debug(f'[db] TV series {id}, get new_release status') with sqlite3.connect(shared.db) as connection: sql = """SELECT new_release FROM series WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] else: logging.debug(f'[db] movie {id}, get new_release status') with sqlite3.connect(shared.db) as connection: sql = """SELECT new_release FROM movies WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] @staticmethod def set_soon_release_status(id: int, value: bool, movie: bool = False) -> None: """ Sets soon_release status of the content with the id to value. Args: id (str): id of the content to look for value (bool): the value to set Returns: Success int or None if not found in db """ if not movie: logging.debug( f'[db] TV series {id}, set soon_release field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE series SET soon_release = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)).fetchone() connection.commit() else: logging.debug( f'[db] movie {id}, set soon_release field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE movies SET soon_release = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)).fetchone() connection.commit() @staticmethod def get_soon_release_status(id: int, value: bool, movie: bool = False) -> None: """ Returns soon_release status from the content with given id. Args: id (str): id of the content to look for Returns: Success int or None if not found in db """ if not movie: logging.debug(f'[db] TV series {id}, get soon_release status') with sqlite3.connect(shared.db) as connection: sql = """SELECT soon_release FROM series WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] else: logging.debug(f'[db] movie {id}, get soon_release status') with sqlite3.connect(shared.db) as connection: sql = """SELECT soon_release FROM movies WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] @staticmethod def set_recent_change_status(id: int, value: bool, movie: bool = False) -> None: """ Sets recent_change status of the content with the id to value. Args: id (str): id of the content to look for value (bool): the value to set Returns: Success int or None if not found in db """ if not movie: logging.debug( f'[db] TV series {id}, set recent_change field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE series SET recent_change = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)) connection.commit() else: logging.debug( f'[db] movie {id}, set recent_change field to {value}') with sqlite3.connect(shared.db) as connection: sql = """UPDATE movies SET recent_change = ? WHERE id = ?""" result = connection.cursor().execute(sql, (value, id,)) connection.commit() @staticmethod def get_recent_change_status(id: int, value: bool, movie: bool = False) -> None: """ Returns recent_change status from the content with given id. Args: id (str): id of the content to look for Returns: Success int or None if not found in db """ if not movie: logging.debug(f'[db] TV series {id}, get recent_change status') with sqlite3.connect(shared.db) as connection: sql = """SELECT recent_change FROM series WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] else: logging.debug(f'[db] movie {id}, get recent_change status') with sqlite3.connect(shared.db) as connection: sql = """SELECT recent_change FROM movies WHERE id = ?;""" result = connection.cursor().execute(sql, (id,)).fetchone() return result[0] @staticmethod def reset_recent_change() -> None: """ Sets recent change of all content to False, must be called on application exit Args: None Returns: None """ logging.debug(f'[db] All content, set recent_change to false') with sqlite3.connect(shared.db) as connection: sql = """UPDATE series SET recent_change = False;""" connection.cursor().execute(sql, ()) connection.commit() sql = """UPDATE movies SET recent_change = False;""" connection.cursor().execute(sql, ()) connection.commit() @staticmethod def reset_activate_notification() -> None: """ Sets activate_notification of all content to False Args: None Returns: None """ logging.debug(f'[db] All content, set activate_notification to false') with sqlite3.connect(shared.db) as connection: sql = """UPDATE series SET activate_notification = False;""" connection.cursor().execute(sql, ()) connection.commit() sql = """UPDATE movies SET activate_notification = False;""" connection.cursor().execute(sql, ()) connection.commit() @staticmethod def update_movie_notes(id: int, notes: str) -> int | None: """ Updates the notes on the movie with the provided id. Args: id (int): movie id to change notes (str): notes to save Returns: int or None containing the id of the last modified row """ with sqlite3.connect(shared.db) as connection: sql = """UPDATE movies SET notes = ? WHERE id = ?""" result = connection.cursor().execute(sql, (notes, id,)) connection.commit() logging.debug( f'[db] Save movie {id} notes {notes}: {result.lastrowid}') return result.lastrowid @staticmethod def update_serie_notes(id: int, notes: str) -> int | None: """ Updates the notes on the TV Series with the provided id. Args: id (int): serie id to change notes (str): notes to save Returns: int or None containing the id of the last modified row """ with sqlite3.connect(shared.db) as connection: sql = """UPDATE series SET notes = ? WHERE id = ?""" result = connection.cursor().execute(sql, (notes, id,)) connection.commit() logging.debug( f'[db] Save TV Serie {id} notes {notes}: {result.lastrowid}') return result.lastrowid @staticmethod def export_data(export_path: Path) -> bool: """ Exports all database content and associated images to a zip file. Args: export_path (Path): Path where to save the export zip file Returns: bool: True if export successful, False otherwise """ try: with zipfile.ZipFile(export_path, 'w') as archive: # Export database content data: Dict[str, Any] = { 'movies': [], 'series': [] } with sqlite3.connect(shared.db) as connection: connection.row_factory = sqlite3.Row # Export movies movies = connection.execute('SELECT * FROM movies').fetchall() for movie in movies: movie_dict = dict(movie) if movie_dict['poster_path'].startswith('file://'): poster_path = movie_dict['poster_path'][7:] if Path(poster_path).exists(): relative_path = str(Path(poster_path)).split('data/')[-1] archive.write(poster_path, f"images/{relative_path}") if movie_dict['backdrop_path'].startswith('file://'): backdrop_path = movie_dict['backdrop_path'][7:] if Path(backdrop_path).exists(): relative_path = str(Path(backdrop_path)).split('data/')[-1] archive.write(backdrop_path, f"images/{relative_path}") data['movies'].append(movie_dict) # Export series and related data series = connection.execute('SELECT * FROM series').fetchall() for serie in series: serie_dict = dict(serie) # Add series poster/backdrop if serie_dict['poster_path'].startswith('file://'): poster_path = serie_dict['poster_path'][7:] if Path(poster_path).exists(): relative_path = str(Path(poster_path)).split('data/')[-1] archive.write(poster_path, f"images/{relative_path}") if serie_dict['backdrop_path'].startswith('file://'): backdrop_path = serie_dict['backdrop_path'][7:] if Path(backdrop_path).exists(): relative_path = str(Path(backdrop_path)).split('data/')[-1] archive.write(backdrop_path, f"images/{relative_path}") # Add seasons seasons = connection.execute('SELECT * FROM seasons WHERE show_id = ?', (serie_dict['id'],)).fetchall() serie_dict['seasons'] = [] for season in seasons: season_dict = dict(season) # Add season poster with series/season folder structure if season_dict['poster_path'] and season_dict['poster_path'].startswith('file://'): poster_path = season_dict['poster_path'][7:] if Path(poster_path).exists(): filename = Path(poster_path).name archive.write(poster_path, f"images/series/{serie_dict['id']}/{season_dict['number']}/{filename}") # Add episodes episodes = connection.execute( 'SELECT * FROM episodes WHERE show_id = ? AND season_number = ?', (serie_dict['id'], season_dict['number'])).fetchall() season_dict['episodes'] = [] for episode in episodes: episode_dict = dict(episode) # Add episode still with series/season folder structure if episode_dict['still_path'] and episode_dict['still_path'].startswith('file://'): still_path = episode_dict['still_path'][7:] if Path(still_path).exists(): filename = Path(still_path).name archive.write(still_path, f"images/series/{serie_dict['id']}/{season_dict['number']}/{filename}") season_dict['episodes'].append(episode_dict) serie_dict['seasons'].append(season_dict) data['series'].append(serie_dict) # Write the JSON data archive.writestr('data.json', json.dumps(data, indent=2)) return True except Exception as e: logging.error(f'[db] Export failed: {str(e)}') return False @staticmethod def import_data(import_path: Path) -> bool: """ Imports database content and associated images from an export zip file. Restores images to their original locations and handles duplicate IDs. Overwrites existing entries if they have the same ID. Args: import_path (Path): Path to the zip file to import Returns: bool: True if import successful, False otherwise """ try: logging.debug(f'[db] Starting import from {import_path}') with zipfile.ZipFile(import_path, 'r') as archive: # Read the JSON data json_data = archive.read('data.json').decode('utf-8') logging.debug(f'[db] Read JSON data: {json_data[:100]}...') # Log first 100 chars data = json.loads(json_data) if not data or 'movies' not in data or 'series' not in data: logging.error(f'[db] Invalid JSON data in import file') return False logging.debug(f'[db] Found {len(data["movies"])} movies and {len(data["series"])} series') with sqlite3.connect(shared.db) as connection: # Import movies for movie in data['movies']: # Handle movie images if movie['poster_path'].startswith('file://'): poster_filename = Path(movie['poster_path'][7:]).name relative_path = str(Path(movie['poster_path'][7:])).split('data/')[-1] target_dir = Path(shared.data_dir) / Path(relative_path).parent target_dir.mkdir(parents=True, exist_ok=True) with archive.open(f"images/{relative_path}") as source, \ open(target_dir / poster_filename, 'wb') as target: shutil.copyfileobj(source, target) if movie['backdrop_path'].startswith('file://'): backdrop_filename = Path(movie['backdrop_path'][7:]).name relative_path = str(Path(movie['backdrop_path'][7:])).split('data/')[-1] target_dir = Path(shared.data_dir) / Path(relative_path).parent target_dir.mkdir(parents=True, exist_ok=True) with archive.open(f"images/{relative_path}") as source, \ open(target_dir / backdrop_filename, 'wb') as target: shutil.copyfileobj(source, target) # Delete existing movie if present cursor = connection.cursor() sql = "SELECT COUNT(*) FROM movies WHERE id = ?" if cursor.execute(sql, (movie['id'],)).fetchone()[0] > 0: sql = "DELETE FROM movies WHERE id = ?" connection.execute(sql, (movie['id'],)) # Handle manual movie IDs if movie['id'].startswith('M-'): movie['id'] = LocalProvider.get_next_manual_movie() # Insert movie columns = ', '.join(movie.keys()) placeholders = ', '.join(['?' for _ in movie]) sql = f"INSERT INTO movies ({columns}) VALUES ({placeholders})" connection.execute(sql, list(movie.values())) # Import series for serie in data['series']: seasons = serie.pop('seasons') # Handle series images if serie['poster_path'].startswith('file://'): poster_filename = Path(serie['poster_path'][7:]).name relative_path = str(Path(serie['poster_path'][7:])).split('data/')[-1] target_dir = Path(shared.data_dir) / Path(relative_path).parent target_dir.mkdir(parents=True, exist_ok=True) with archive.open(f"images/{relative_path}") as source, \ open(target_dir / poster_filename, 'wb') as target: shutil.copyfileobj(source, target) if serie['backdrop_path'].startswith('file://'): backdrop_filename = Path(serie['backdrop_path'][7:]).name relative_path = str(Path(serie['backdrop_path'][7:])).split('data/')[-1] target_dir = Path(shared.data_dir) / Path(relative_path).parent target_dir.mkdir(parents=True, exist_ok=True) with archive.open(f"images/{relative_path}") as source, \ open(target_dir / backdrop_filename, 'wb') as target: shutil.copyfileobj(source, target) # Delete existing series if present connection.execute('PRAGMA foreign_keys = ON;') cursor = connection.cursor() sql = "SELECT COUNT(*) FROM series WHERE id = ?" if cursor.execute(sql, (serie['id'],)).fetchone()[0] > 0: sql = "DELETE FROM episodes WHERE show_id = ?" connection.execute(sql, (serie['id'],)) sql = "DELETE FROM seasons WHERE show_id = ?" connection.execute(sql, (serie['id'],)) sql = "DELETE FROM series WHERE id = ?" connection.execute(sql, (serie['id'],)) # Handle manual series IDs if serie['id'].startswith('M-'): serie['id'] = LocalProvider.get_next_manual_series() series_id = serie['id'] # Insert series columns = ', '.join(serie.keys()) placeholders = ', '.join(['?' for _ in serie]) sql = f"INSERT INTO series ({columns}) VALUES ({placeholders})" connection.execute(sql, list(serie.values())) # Import seasons and episodes for season in seasons: episodes = season.pop('episodes') # Handle season images if season['poster_path'].startswith('file://'): poster_filename = Path(season['poster_path'][7:]).name target_dir = Path(shared.series_dir) / series_id / str(season['number']) target_dir.mkdir(parents=True, exist_ok=True) image_path = f"images/series/{series_id}/{season['number']}/{poster_filename}" with archive.open(image_path) as source, \ open(target_dir / poster_filename, 'wb') as target: shutil.copyfileobj(source, target) # Handle manual season IDs if season['id'].startswith('M-'): season['id'] = LocalProvider.get_next_manual_season() # Insert season columns = ', '.join(season.keys()) placeholders = ', '.join(['?' for _ in season]) sql = f"INSERT INTO seasons ({columns}) VALUES ({placeholders})" connection.execute(sql, list(season.values())) # Import episodes for episode in episodes: # Handle episode images if episode['still_path'].startswith('file://'): still_filename = Path(episode['still_path'][7:]).name target_dir = Path(shared.series_dir) / series_id / str(season['number']) target_dir.mkdir(parents=True, exist_ok=True) image_path = f"images/series/{series_id}/{season['number']}/{still_filename}" with archive.open(image_path) as source, \ open(target_dir / still_filename, 'wb') as target: shutil.copyfileobj(source, target) # Handle manual episode IDs if episode['id'].startswith('M-'): episode['id'] = LocalProvider.get_next_manual_episode() # Insert episode columns = ', '.join(episode.keys()) placeholders = ', '.join(['?' for _ in episode]) sql = f"INSERT INTO episodes ({columns}) VALUES ({placeholders})" connection.execute(sql, list(episode.values())) connection.commit() return True except Exception as e: logging.error(f'[db] Import failed: {str(e)}') return Falseticketbooth-1.2.0/src/providers/meson.build000066400000000000000000000005471501006415200207770ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) providersdir = join_paths(pkgdatadir, 'src/providers') sources = [ '__init__.py', 'tmdb_provider.py', 'local_provider.py', ] install_data(sources, install_dir: providersdir) ticketbooth-1.2.0/src/providers/tmdb_provider.py000066400000000000000000000077671501006415200220620ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import os import tmdbsimple as tmdb from .. import shared # type: ignore class TMDBProvider: """ This class provides methods to interface with the TMDB API. Properties: None Methods: search(query: str, lang: str or None): Searches the API for the given query get_languages(): Retrieves all available languages usable with the API get_movie(id: int, lang: str): Retrieves general information about a movie. get_serie(id: int, lang: str): Retrieves general information about a tv series. get_season_episodes(id: int, series:int, lang: str): Retrieves information about the episodes in a season. """ if shared.schema.get_boolean('use-own-tmdb-key'): tmdb.API_KEY = shared.schema.get_string('own-tmdb-key') else: tmdb.API_KEY = os.environ.get('TMDB_KEY') def __init__(self): super().__init__() @staticmethod def search(query: str, lang: str | None = None) -> dict: """ Searches the API for the given query. Args: query (str): a query to lookup lang (str or None): the prefered language for the results (ISO 639-1 format) Returns: dict containg the API result. """ if not lang: lang = shared.schema.get_string('tmdb-lang') return tmdb.Search().multi(query=query, language=lang, include_adult=False) @staticmethod def get_languages() -> dict: """ Retrieves all available languages usable with the API Args: None Returns: dict containg the API result. """ return tmdb.Configuration().languages() @staticmethod def get_movie(id: int, lang: str | None = None) -> dict: """ Retrieves general information about the movie with the provided id. Args: id (int): id of the movie lang (str): the prefered language for the results (optional) Returns: dict containg the API result. """ if not lang: lang = shared.schema.get_string('tmdb-lang') return tmdb.Movies(id).info(language=lang) @staticmethod def get_serie(id: int, lang: str | None = None) -> dict: """ Retrieves general information about the tv series with the provided id. Args: id (int): id of the tv series lang (str): the prefered language for the results (optional) Returns: dict containg the API result """ if not lang: lang = shared.schema.get_string('tmdb-lang') return tmdb.TV(id).info(language=lang) @staticmethod def get_season_episodes(id: int, season: int, lang: str | None = None) -> dict: """ Retrieves information about the episodes in a season for the specified tv series. Args: id (int): id of the tv series season (int): season number lang (str): the prefered language for the results (optional) Returns: dict containg the API result. """ if not lang: lang = shared.schema.get_string('tmdb-lang') return tmdb.TV_Seasons(id, season).info(language=lang)['episodes'] @staticmethod def set_key(key: str) -> None: """ Sets the API in use. Args: key (str): key to use Returns: None """ tmdb.API_KEY = key @staticmethod def get_key() -> str: """ Gets the API in use. Args: None Returns: str with the key in use """ return tmdb.API_KEY @staticmethod def get_builtin_key() -> str: """ Gets the builtin API key. Args: None Returns: str with the builtin key """ return os.environ.get('TMDB_KEY') # type: ignore ticketbooth-1.2.0/src/shared.py.in000066400000000000000000000026041501006415200170410ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gi.repository import Gdk, Gio, GLib from pathlib import Path import logging from .logging.session_file_handler import SessionFileHandler import faulthandler import os APP_ID = '@app_id@' VERSION = '@version@' PREFIX = '@prefix@' APP_NAME = '@app_name@' schema = Gio.Settings.new(APP_ID) data_dir = Path(GLib.get_user_data_dir()) cache_dir = Path(GLib.get_user_cache_dir()) poster_dir = data_dir / 'poster' background_dir = data_dir / 'background' series_dir = data_dir / 'series' db = data_dir / 'data.db' if not os.path.exists(data_dir/'logs'): os.makedirs(data_dir/'logs') faulthandler.enable(file=open(data_dir/'logs'/'crash.log',"w")) if '@debug@' == 'True': DEBUG = True logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s', filename=data_dir / 'logs' / 'ticketbooth.log') else: DEBUG = False logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', filename=data_dir / 'logs' / 'ticketbooth.log') handler = SessionFileHandler(filename=data_dir / 'logs' / 'ticketbooth.log') handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) logging.getLogger().addHandler(handler) log_files = None ticketbooth-1.2.0/src/ticketbooth.gresource.xml.in000066400000000000000000000114331501006415200222570ustar00rootroot00000000000000 css/style.css css/style-dark.css ui/widgets/theme_switcher.ui ui/widgets/poster_button.ui ui/widgets/search_result_row.ui ui/widgets/episode_row.ui ui/widgets/image_selector.ui ui/widgets/season_expander.ui ui/widgets/background_indicator.ui ui/widgets/background_activity_row.ui ui/dialogs/add_manual.ui ui/dialogs/add_tmdb.ui ui/dialogs/edit_season.ui ui/dialogs/message_dialogs.ui ui/gtk/help-overlay.ui ui/window.ui ui/about_dialog.ui ui/preferences.ui ui/views/db_update_view.ui ui/views/first_run_view.ui ui/views/main_view.ui ui/views/content_view.ui ui/pages/details_page.ui ui/pages/edit_episode_page.ui ../data/blank_poster.jpg ../data/blank_still.jpg ../data/icons/symbolic/series-symbolic.svg ../data/icons/symbolic/bell-outline-symbolic.svg ../data/icons/symbolic/check-round-outline-symbolic.svg ../data/icons/symbolic/movies-symbolic.svg ../data/icons/symbolic/network-transmit-receive-symbolic.svg ../data/icons/symbolic/view-grid-symbolic.svg ../data/icons/symbolic/view-list-symbolic.svg ../data/icons/symbolic/loupe-symbolic.svg ../data/icons/symbolic/plus-symbolic.svg ../data/icons/symbolic/document-edit-symbolic.svg ../data/icons/symbolic/user-trash-symbolic.svg ../data/icons/symbolic/check-plain-symbolic.svg ../data/icons/symbolic/watchlist-symbolic.svg ../data/icons/symbolic/star-large-symbolic.svg ../data/icons/symbolic/hourglass-symbolic.svg ../data/icons/symbolic/right-symbolic.svg ../data/icons/symbolic/update-symbolic.svg ../data/icons/symbolic/warning-symbolic.svg ../data/icons/symbolic/floppy-symbolic.svg ../data/icons/symbolic/bell-outline-none-symbolic.svg ticketbooth-1.2.0/src/ticketbooth.in000077500000000000000000000024641501006415200174720ustar00rootroot00000000000000#!@python@ # ticketbooth.in # # Copyright 2023 Ale # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # SPDX-License-Identifier: GPL-3.0-or-later import os import sys import signal import locale import gettext version = '@version@' pkgdatadir = '@pkgdatadir@' localedir = '@localedir@' debug = '@debug@' sys.path.insert(1, pkgdatadir) signal.signal(signal.SIGINT, signal.SIG_DFL) locale.bindtextdomain('ticketbooth', localedir) locale.textdomain('ticketbooth') gettext.install('ticketbooth', localedir) if __name__ == '__main__': import gi from gi.repository import Gio resource = Gio.Resource.load(os.path.join(pkgdatadir, 'ticketbooth.gresource')) resource._register() from src import main sys.exit(main.main()) ticketbooth-1.2.0/src/ui/000077500000000000000000000000001501006415200152275ustar00rootroot00000000000000ticketbooth-1.2.0/src/ui/about_dialog.blp000066400000000000000000000011761501006415200203640ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; Adw.AboutDialog about_dialog { copyright: _("Copyright © 2023 - 2025 Alessandro Iepure\nSome icons are copyright of the GNOME Project"); comments: _("Keep track of your favorite shows"); website: "https://github.com/aleiepure/ticketbooth"; issue-url: "https://github.com/aleiepure/ticketbooth/issues"; license-type: gpl_3_0; developer-name: "Alessandro Iepure"; // TRANSLATORS: replace with your name (with optional email or website) translator-credits: _("translator-credits"); }ticketbooth-1.2.0/src/ui/dialogs/000077500000000000000000000000001501006415200166515ustar00rootroot00000000000000ticketbooth-1.2.0/src/ui/dialogs/add_manual.blp000066400000000000000000000131461501006415200214420ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $AddManualDialog: Adw.Dialog { content-height: 670; content-width: 650; map => $_on_map(); Adw.ToolbarView { [top] Adw.HeaderBar { show-end-title-buttons: false; show-start-title-buttons: false; title-widget: Box { orientation: vertical; Adw.WindowTitle { valign: center; vexpand: true; visible: bind template.edit-mode; title: bind template.title; } Box { visible: bind template.edit-mode inverted; orientation: horizontal; valign: center; styles [ "linked" ] Adw.ToggleGroup _toggle_group { notify::active => $_on_toggle_group_changed(); Adw.Toggle _movies_btn { name: "movies"; label: C_("Category", "Movie"); } Adw.Toggle _series_btn { name: "series"; label: C_("Category", "TV Series"); } } } }; [start] Button { label: _("Cancel"); action-name: 'window.close'; } [end] Button _save_btn { label: _("Save"); sensitive: false; clicked => $_on_done_btn_clicked(); styles [ "suggested-action" ] } } content: ScrolledWindow { vexpand: true; hexpand: true; Box { orientation: vertical; margin-start: 20; margin-end: 20; margin-bottom: 20; margin-top: 20; $ImageSelector _poster {} Adw.PreferencesGroup { margin-bottom: 20; title: _("General"); Adw.EntryRow _title_entry { title: _("Title (required)"); changed => $_on_title_changed(); } Adw.ActionRow { title: _("Release Date"); activatable-widget: _release_date_menu_btn; MenuButton _release_date_menu_btn { valign: center; popover: Popover { Calendar _calendar { day-selected => $_on_calendar_day_selected(); } }; styles [ "flat" ] } } Adw.EntryRow _genres_entry { title: _("Genres (comma separated)"); } Adw.SpinRow _runtime_spinrow { // visible: bind _movies_btn.active; visible: bind $_show_for_movies(_toggle_group.active-name) as ; title: _("Runtime (minutes)"); adjustment: Adjustment { lower: 0; upper: 900; step-increment: 1; }; } Adw.EntryRow _tagline_entry { title: _("Tagline"); } Adw.EntryRow _creator_entry { // visible: bind _series_btn.active; visible: bind $_show_for_series(_toggle_group.active-name) as ; title: _("Created by"); } } Adw.PreferencesGroup { title: _("Overview"); margin-bottom: 20; Gtk.TextView _overview_text { height-request: 100; top-margin: 12; bottom-margin: 12; right-margin: 12; left-margin: 12; wrap-mode: word; styles [ "card" ] } } Adw.PreferencesGroup _seasons_group { // visible: bind _series_btn.active; visible: bind $_show_for_series(_toggle_group.active-name) as ; title: _("Seasons (required)"); description: _("Use the + button to add seasons"); [header-suffix] Button { Adw.ButtonContent { label: _("Add"); icon-name: "plus"; } clicked => $_on_season_add_btn_clicked(); styles [ "accent" ] } } Adw.PreferencesGroup { title: _("Additional Information"); Adw.EntryRow _status_entry { title: _("Status"); } Adw.ComboRow _original_language_comborow { title: _("Original Language"); model: StringList _language_model {}; } Adw.EntryRow _original_title_entry { title: _("Original Title"); } Adw.SpinRow _budget_spinrow { // visible: bind _movies_btn.active; visible: bind $_show_for_movies(_toggle_group.active-name) as ; title: _("Budget (US$)"); adjustment: Adjustment { lower: 0; upper: 9999999999999999999; step-increment: 1; }; } Adw.SpinRow _revenue_spinrow { // visible: bind _movies_btn.active; visible: bind $_show_for_movies(_toggle_group.active-name) as ; title: _("Revenue (US$)"); adjustment: Adjustment { lower: 0; upper: 9999999999999999999; step-increment: 1; }; } Adw.ActionRow { title: _("In production"); // visible: bind _series_btn.active; visible: bind $_show_for_series(_toggle_group.active-name) as ; activatable-widget: _production_checkbtn; [suffix] CheckButton _production_checkbtn { valign: center; } } } } }; } } ticketbooth-1.2.0/src/ui/dialogs/add_tmdb.blp000066400000000000000000000042731501006415200211140ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Gio 2.0; using Adw 1; template $AddTMDBDialog: Adw.Dialog { focus-widget: _search_entry; content-width: 700; content-height: 550; ShortcutController { Shortcut { trigger: "Escape"; action: "action(window.close)"; } } Adw.ToolbarView { [top] Adw.HeaderBar { title-widget: SearchEntry _search_entry { activates-default: true; placeholder-text: _("Search The Movie Database…"); search-delay: 500; search-changed => $_on_searchentry_search_changed(); }; } content: Adw.ViewStack _stack { Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { title: _("Search For a Title"); icon-name: "loupe"; description: _("Start typing in the search bar to see a list of matching movies and TV series"); }; } Adw.ViewStackPage { name: "no-results"; child: Adw.StatusPage { title: _("No Results Found"); icon-name: "loupe"; description: _("Try a different search"); }; } Adw.ViewStackPage { name: "results"; child: ScrolledWindow { vexpand: true; ListView _list_view { styles ["navigation-sidebar"] orientation: vertical; model: NoSelection { model: Gio.ListStore _model {}; }; factory: BuilderListItemFactory { template ListItem { child: $SearchResultRow { tmdb-id: bind template.item as < $SearchResultModel > .tmdb-id; title: bind template.item as < $SearchResultModel > .title; year: bind template.item as < $SearchResultModel > .year; media-type: bind template.item as < $SearchResultModel > .media-type; description: bind template.item as < $SearchResultModel > .description; poster-path: bind template.item as < $SearchResultModel > .poster-path; }; } }; } }; } }; } } ticketbooth-1.2.0/src/ui/dialogs/edit_season.blp000066400000000000000000000035051501006415200216500ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $EditSeasonDialog: Adw.Dialog { content-width: 600; content-height: 640; map => $_on_map(); Adw.NavigationView _navigation_view { Adw.NavigationPage { title: _("Edit Season"); child: Adw.ToolbarView { [top] Adw.HeaderBar { show-end-title-buttons: false; show-start-title-buttons: false; [start] Button _cancel_btn { label: _("Cancel"); action-name: 'window.close'; } [end] Button _save_btn { label: _("Save"); sensitive: false; clicked => $_on_save_btn_clicked(); styles [ "suggested-action" ] } } content: ScrolledWindow { Box { orientation: vertical; margin-start: 20; margin-end: 20; margin-bottom: 20; $ImageSelector _poster {} Adw.PreferencesGroup { margin-bottom: 20; title: _("General"); Adw.EntryRow _title_entry { title: _("Title (required)"); changed => $_on_title_entry_changed(); } } Adw.PreferencesGroup _episodes_group { title: _("Episodes (required)"); description: _("Use the + button to add episodes"); [header-suffix] Button { Adw.ButtonContent { label: _("Add"); icon-name: "plus"; } clicked => $_on_add_btn_clicked(); styles ["accent"] } } } }; }; } } } ticketbooth-1.2.0/src/ui/dialogs/message_dialogs.blp000066400000000000000000000023531501006415200225010ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; Adw.AlertDialog _clear_cache_dialog { heading: C_("message dialog heading", "Clear Cached Data?"); body: C_("message dialog body", "This operation will clear all stored cache data. It might get downloaded again next time you add content from TMDB."); responses[ cache_cancel: C_("message dialog action", "Cancel"), cache_clear: C_("message dialog action", "Clear") destructive ] } Adw.AlertDialog _clear_data_dialog { heading: C_("message dialog heading", "Clear Stored Data?"); body: C_("message dialog body", "This operation will permanentlly delete the selected data, loosing all your changes."); extra-child: Adw.PreferencesGroup { Adw.ActionRow _movies_row { [prefix] CheckButton _movies_checkbtn {} title: _("Movies"); activatable-widget: _movies_checkbtn; } Adw.ActionRow _series_row { [prefix] CheckButton _series_checkbtn {} title: _("TV Series"); activatable-widget: _series_checkbtn; } }; responses[ data_cancel: C_("message dialog action", "Cancel"), data_clear: C_("message dialog action", "Clear") destructive ] } ticketbooth-1.2.0/src/ui/gtk/000077500000000000000000000000001501006415200160145ustar00rootroot00000000000000ticketbooth-1.2.0/src/ui/gtk/help-overlay.blp000066400000000000000000000024261501006415200211260ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; ShortcutsWindow help_overlay { modal: true; ShortcutsSection { section-name: "shortcuts"; max-height: 10; ShortcutsGroup { title: C_("shortcut window", "General"); ShortcutsShortcut { title: C_("shortcut window", "Show Shortcuts"); action-name: "win.show-help-overlay"; } ShortcutsShortcut { title: C_("shortcut window", "Show Preferences"); action-name: "app.preferences"; } ShortcutsShortcut { title: C_("shortcut window", "Search your Watchlist"); accelerator: "f"; } ShortcutsShortcut { title: C_("shortcut window", "Quit"); action-name: "app.quit"; } } ShortcutsGroup { title: C_("shortcut window", "Library management"); ShortcutsShortcut { title: C_("shortcut window", "Add title from TMDB"); accelerator: "n"; } ShortcutsShortcut { title: C_("shortcut window", "Add title manually"); accelerator: "n"; } ShortcutsShortcut { title: C_("shortcut window", "Refresh library"); accelerator: "r"; } } } } ticketbooth-1.2.0/src/ui/pages/000077500000000000000000000000001501006415200163265ustar00rootroot00000000000000ticketbooth-1.2.0/src/ui/pages/details_page.blp000066400000000000000000000316141501006415200214530ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $DetailsView: Adw.NavigationPage { child: Adw.ViewStack _view_stack { Adw.ViewStackPage { name: "filled"; child: Overlay { Picture _background_picture { content-fit: cover; hexpand: true; } [overlay] Adw.ToolbarView { [top] Adw.HeaderBar { styles [ "flat" ] [end] MenuButton _menu_btn { icon-name: "open-menu"; menu-model: _primary_menu; tooltip-text: _("Main Menu"); } } content: Adw.BreakpointBin { width-request: 360; height-request: 200; Adw.Breakpoint _breakpoint { condition ("max-width: 550sp") setters { main-details.orientation: vertical; main-details.margin-start: 0; main-details.margin-end: 0; main-details.margin-bottom: 0; main-details.spacing: 0; _poster_picture.halign: center; _poster_picture.margin-bottom: 20; details.margin-start: 20; details.margin-end: 20; _description_box.margin-start: 20; _description_box.margin-end: 20; _creator_box.margin-start: 20; _creator_box.margin-end: 20; _seasons_box.margin-start: 20; _seasons_box.margin-end: 20; _additional_info_box.margin-start: 20; _additional_info_box.margin-end: 20; _notes_box.margin-start: 20; _notes_box.margin-end: 20; } apply => $_on_breakpoint_applied(); unapply => $_on_breakpoint_unapplied(); } child: ScrolledWindow scrolled-window { child: Box { orientation: vertical; Box main-details { orientation: horizontal; margin-start: 50; margin-top: 25; margin-bottom: 50; margin-end: 50; spacing: 50; Picture _poster_picture { height-request: 300; width-request: 200; content-fit: fill; styles [ "poster" ] } Box details { orientation: vertical; margin-end: 50; spacing: 6; Label _title_lbl { lines: 2; halign: start; wrap: true; styles [ "title-1" ] } Label _tagline_lbl { visible: false; halign: start; wrap: true; lines: 2; styles [ "heading" ] } Label _genres_lbl { visible: false; halign: start; wrap: true; lines: 2; } Box { orientation: horizontal; spacing: 6; Label _chip1_lbl { visible: false; styles [ "caption", "chip" ] } Label _chip2_lbl { visible: false; styles [ "caption", "chip" ] } Label _chip3_lbl { visible: false; tooltip-text: _("Number of Episodes"); styles [ "caption", "chip" ] } Label _chip4_lbl { visible: false; tooltip-text: _("Air Date of Next Episode"); styles [ "caption", "chip" ] } } Box { margin-top: 12; orientation: horizontal; Button _watched_btn { visible: false; child: Adw.ButtonContent _btn_content {}; valign: center; margin-end: 16; styles [ "pill" ] clicked => $_on_watched_btn_clicked(); } Box { orientation: horizontal; spacing: 6; Adw.ToggleGroup _notify_group { styles [ "round" ] visible: false; notify::active => $_on_notify_group_toggled(); Adw.Toggle { icon-name: "bell-outline"; label: "Notify me on new releases"; } Adw.Toggle { icon-name: "bell-outline-none"; label: "Silence notifications"; } } Button _update_btn { icon-name: "update"; tooltip-text: _("Update Metadata"); valign: center; visible: false; styles [ "circular" ] clicked => $_on_update_btn_clicked(); } Button _edit_btn { icon-name: "document-edit"; tooltip-text: _("Edit"); valign: center; visible: false; styles [ "circular" ] clicked => $_on_edit_btn_clicked(); } Button _delete_btn { icon-name: "user-trash-symbolic"; tooltip-text: _("Delete"); valign: center; styles [ "circular" ] clicked => $_on_delete_btn_clicked(); } } } } } Box _description_box { orientation: vertical; visible: false; margin-start: 50; margin-end: 50; Separator { margin-top: 12; styles [ "spacer" ] } Label { label: _("Description"); halign: start; styles [ "title-2" ] } Label _overview_lbl { halign: start; wrap: true; } } Separator { styles [ "spacer" ] } Box _creator_box { visible: false; halign: start; orientation: vertical; margin-start: 50; margin-end: 50; Label { label: _("Created by"); halign: start; styles [ "heading" ] } Label _creator_lbl { halign: start; } } Separator { margin-bottom: 16; styles [ "spacer" ] } Box _seasons_box { margin-start: 50; margin-end: 50; visible: false; orientation: vertical; Label { label: _("Seasons"); halign: start; margin-bottom: 6; styles [ "title-2" ] } Adw.PreferencesGroup _seasons_group { styles [ "groupcolor" ] } Separator { margin-bottom: 16; styles [ "spacer" ] } } Box _additional_info_box { valign: start; orientation: vertical; margin-start: 50; margin-end: 50; Label { label: _("Additional Information"); halign: start; styles [ "title-2" ] } FlowBox _flow_box { orientation: horizontal; hexpand: true; selection-mode: none; max-children-per-line: 12; } } Box _notes_box { orientation: vertical; margin-top: 10; margin-bottom: 20; margin-start: 50; margin-end: 50; Box { orientation: horizontal; spacing: 10; Label { label: _("Notes"); halign: start; styles [ "title-2" ] } Revealer _notes_save_revealer { reveal-child: false; transition-type: swing_right; child: Button _notes_save_btn { icon-name: "floppy"; styles [ "circular" ] clicked => $_on_notes_btn_clicked(); }; } } TextView _notes_textview { vexpand: true; wrap-mode: word; margin-top: 10; top-margin: 12; left-margin: 12; right-margin: 12; bottom-margin: 12; height-request: 100; styles [ "notes", "card" ] } } }; }; }; } }; } Adw.ViewStackPage { name: "loading"; child: Adw.ToolbarView { [top] Adw.HeaderBar { styles [ "flat" ] } content: Box { orientation: vertical; spacing: 12; valign: center; vexpand: true; Adw.Spinner {} Box { orientation: vertical; margin-start: 12; margin-end: 12; Label _loading_lbl { label: "Loading Content…"; wrap: true; halign: center; justify: center; styles [ "title-1" ] } Label _status_lbl { label: "Please wait, this might take a while."; halign: center; justify: center; wrap: true; } } }; }; } }; } menu _primary_menu { section { item { custom: "themeswitcher"; } } section { item { label: _("_Preferences"); action: "app.preferences"; } item { label: _("_Keyboard Shortcuts"); action: "win.show-help-overlay"; } item { label: _("_About Ticket Booth"); action: "app.about"; } } } ticketbooth-1.2.0/src/ui/pages/edit_episode_page.blp000066400000000000000000000036471501006415200224700ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $EditEpisodeNavigationPage: Adw.NavigationPage { map => $_on_map(); title: _("Edit Episode"); child: Adw.ToolbarView { [top] Adw.HeaderBar { show-end-title-buttons: false; show-start-title-buttons: false; [end] Button _save_btn { label: _("Save"); sensitive: bind $_enable_save(_title_entry.text,(_episode_spin_row.value) as ) as ; clicked => $_on_save_btn_clicked(); styles [ "suggested-action" ] } } content: ScrolledWindow { Box { orientation: vertical; margin-start: 20; margin-end: 20; margin-bottom: 20; $ImageSelector _still { content-fit: cover; } Adw.PreferencesGroup { title: _("General"); margin-bottom: 20; Adw.SpinRow _episode_spin_row { title: _("Episode Number (required)"); adjustment: Adjustment { lower: 0; upper: 900; step-increment: 1; }; } Adw.EntryRow _title_entry { title: _("Title (required)"); use-markup: true; } Adw.SpinRow _runtime_spin_row { title: _("Runtime (minutes)"); adjustment: Adjustment { lower: 0; upper: 900; step-increment: 1; }; } } Adw.PreferencesGroup { title: _("Overview"); Gtk.TextView _overview_text { height-request: 100; top-margin: 12; bottom-margin: 12; right-margin: 12; left-margin: 12; wrap-mode: word; styles [ "card" ] } } } }; }; } ticketbooth-1.2.0/src/ui/preferences.blp000066400000000000000000000075531501006415200202410ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $PreferencesDialog: Adw.PreferencesDialog { search-enabled: false; map => $_on_map(); Adw.PreferencesPage { name: "preferences"; title: _("Preferences"); Adw.PreferencesGroup _download_group { title: C_("preferences", "Optional Download"); description: C_("preferences", "For a complete experience, a download of 15 KB is required. The initial setup could not retrieve the data automatically and thus offline mode has been activated. It will remain active until the setup is completed."); Adw.ActionRow _download_row { // TRANSLATORS: When clicked, it completes the initial setup by downloading the optional data. title: C_("preferences", "Complete Setup"); activated => $_on_download_activate(); activatable: true; Image { icon-name: "right"; } } } Adw.PreferencesGroup _offline_group { title: C_("preferences", "Offline Mode"); description: C_("preferences", "Ticket Booth can work entirely offline. If you choose to run in this mode, some features that require the Internet and/or access to third party APIs will not be available."); Adw.SwitchRow _offline_switch { title: C_("preferences", "Enable Offline Mode"); } } Adw.PreferencesGroup _tmdb_group { title: C_("preferences", "The Movie Database (TMDB)"); description: C_("preferences", "TMDB provides localized metadata for most content. Ticket Booth will download it in your prefered language, selectable below. In case it is not available, it will fallback to English US and then to the content's original language. If neither are available, it will result in a blank string. Please consider contributing to TMDB. Additionally, an automatic update is performed on a frequency of your choosing."); Adw.ComboRow _language_comborow { title: C_("preferences", "TMDB Results Language"); model: StringList _language_model {}; } Adw.ComboRow _update_freq_comborow { title: C_("preferences", "Update Frequency"); subtitle: C_("preferences", "Restart Ticket Booth after changing"); model: StringList { strings[ C_("preferences", "Never"), C_("preferences", "Daily"), C_("preferences", "Weekly"), C_("preferences", "Monthly") ] }; } Adw.SwitchRow _use_own_key_switch { title: C_("preferences", "Use Your API Key"); subtitle: C_("preferences", "Register yours here"); } Adw.EntryRow _own_key_entryrow { title: C_("preferences", "Your API key"); visible: bind _use_own_key_switch.active; [suffix] Button _check_own_key_button { label: C_("preferences", "Save Key"); valign: center; clicked => $_on_check_own_key_button_clicked(); } changed => $_on_own_key_changed(); } } Adw.PreferencesGroup _housekeeping_group { title: C_("preferences", "Housekeeping"); Adw.PreferencesGroup { Adw.SwitchRow _exit_cache_switch { title: C_("preferences", "Clear Cache on Exit"); } Adw.ActionRow _cache_row { title: C_("preferences", "Clear Cached Search Data"); activated => $_on_clear_cache_activate(); activatable: true; Image { icon-name: "right"; } } Adw.ActionRow _data_row { title: C_("preferences", "Clear Data"); activated => $_on_clear_activate(); activatable: true; Image { icon-name: "right"; } } } } } } ticketbooth-1.2.0/src/ui/views/000077500000000000000000000000001501006415200163645ustar00rootroot00000000000000ticketbooth-1.2.0/src/ui/views/content_view.blp000066400000000000000000000077601501006415200216010ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $ContentView: Adw.Bin { Adw.ViewStack _stack { Adw.ViewStackPage { name: "empty"; child: Adw.StatusPage { icon-name: bind template.icon-name; title: _("Your Watchlist Is Empty"); description: _("Add content with the + button or import from an older watchlist."); }; } Adw.ViewStackPage { name: "updating"; child: Adw.StatusPage { child: Box { orientation: vertical; Adw.Spinner { height-request: 64; } Box { orientation: vertical; margin-start: 12; margin-end: 12; Label { label: "Updating your watchlist…"; wrap: true; halign: center; justify: center; styles [ "title-1" ] } Label _updating_status_lbl { halign: center; justify: center; wrap: true; } } }; }; } Adw.ViewStackPage { name: "loading"; child: Adw.StatusPage { child: Box { orientation: vertical; Adw.Spinner { height-request: 64; } Box { orientation: vertical; margin-start: 12; margin-end: 12; Label _heading_lbl { label: "Loading your watchlist…"; wrap: true; halign: center; justify: center; styles [ "title-1" ] } Label _status_lbl { label: "Get your popcorns ready"; halign: center; justify: center; wrap: true; } } }; }; } Adw.ViewStackPage { name: "filled"; child: ScrolledWindow { Box { orientation: vertical; Box _full_box { visible: false; orientation: vertical; spacing: 12; halign: start; Label _title_lbl { halign: start; margin-start: 12; margin-top: 12; label: _("Your Watchlist"); styles [ "title-1" ] } FlowBox _flow_box { orientation: horizontal; min-children-per-line: 2; max-children-per-line: 15; selection-mode: none; halign: start; } } Box _separated_box { visible: false; orientation: vertical; spacing: 12; halign: start; Box _unwatched_box { orientation: vertical; Label { halign: start; margin-start: 12; margin-top: 12; label: _("Unwatched"); styles [ "title-1" ] } FlowBox _unwatched_flow_box { orientation: horizontal; min-children-per-line: 2; max-children-per-line: 15; selection-mode: none; halign: start; } } Box _watched_box { orientation: vertical; Label { halign: start; margin-start: 12; margin-top: 12; label: _("Watched"); styles [ "title-1" ] } FlowBox _watched_flow_box { orientation: horizontal; min-children-per-line: 2; max-children-per-line: 15; selection-mode: none; halign: start; } } } } }; } } } ticketbooth-1.2.0/src/ui/views/db_update_view.blp000066400000000000000000000047541501006415200220560ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $DbUpdateView: Adw.Bin { map => $_on_map(); Box { orientation: vertical; Adw.HeaderBar { styles ["flat"] title-widget: Label {}; } Adw.Carousel _carousel { vexpand: true; hexpand: true; allow-scroll-wheel: false; allow-mouse-drag: false; allow-long-swipes: false; Adw.StatusPage _update_progress_page { margin-top: 64; title: _("Updating your watchlist"); description: _("After updating Ticket Booth we need to update the local database entries"); icon-name: "network-transmit-receive"; vexpand: true; hexpand: true; Box { margin-top: 42; orientation: vertical; halign: center; valign: center; ProgressBar _progress_bar{ fraction: 0.0; show-text: true; margin-bottom: 24; } Button _offline_btn { visible: true; halign: center; label: _("Use Offline Mode"); clicked => $_on_offline_btn_clicked(); styles ["suggested-action", "pill"] } CheckButton _retry_check_btn { label: _("Try again on next run"); visible: true; active: true; halign: center; } } } Adw.StatusPage _notification_question { margin-top: 64; margin-end: 20; title: _("Activate Notifications?"); description: _("Would you like to activate notifications for all series that are still in production and for all movies that have not yet released?"); icon-name: "bell-outline-symbolic"; vexpand: true; hexpand: true; Box { orientation: horizontal; halign: center; Button _activate_btn { margin-end: 8; label: _("Activate"); use-underline: true; halign: center; clicked => $_on_activate_btn_clicked(); styles ["suggested-action", "pill"] } Button _deactivate_btn { margin-end: 8; label: _("Deactivate"); use-underline: true; halign: center; clicked => $_on_deactivate_btn_clicked(); styles ["destructive-action", "pill" ] } } } } } } ticketbooth-1.2.0/src/ui/views/first_run_view.blp000066400000000000000000000024421501006415200221320ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $FirstRunView: Adw.Bin { map => $_on_map(); Box { orientation: vertical; vexpand: true; Adw.HeaderBar { styles ["flat"] title-widget: Label {}; } Box { orientation: vertical; spacing: 12; valign: center; vexpand: true; Adw.Spinner { height-request: 64; } Box { orientation: vertical; margin-start: 12; margin-end: 12; Label _heading_lbl { label: "Getting things ready…"; wrap: true; halign: center; justify: center; styles ["title-1"] } Label _status_lbl { label: "Please wait, this might take a while."; halign: center; justify: center; wrap: true; } } Button _offline_btn { visible: false; halign: center; label: _("Use Offline Mode"); clicked => $_on_offline_btn_clicked(); styles ["suggested-action", "pill"] } CheckButton _retry_check_btn { label: _("Try again on next run"); visible: false; active: true; halign: center; } } } } ticketbooth-1.2.0/src/ui/views/main_view.blp000066400000000000000000000126501501006415200210450ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $MainView: Adw.Bin { map => $_on_map(); ShortcutController { scope: global; Shortcut { trigger: "n"; action: "action(win.add-tmdb)"; } Shortcut { trigger: "n"; action: "action(win.add-manual)"; } Shortcut { trigger: "F5"; action: "action(win.refresh)"; } Shortcut { trigger: "r"; action: "action(win.refresh)"; } Shortcut { trigger: "f"; action: "action(win.search)"; } } Adw.NavigationView { Adw.NavigationPage { title: "Ticket Booth"; child: Adw.BreakpointBin { width-request: 400; height-request: 600; Adw.Breakpoint { condition("max-width: 550sp") setters { _header_bar.title-widget: null; _switcher_bar.reveal: true; _search_entry.width-request: -1; } } child: Adw.ToolbarView { [top] Adw.HeaderBar _header_bar { title-widget: Adw.InlineViewSwitcher _title { stack: _tab_stack; display-mode: both; }; [start] MenuButton _add_btn { icon-name: "plus"; tooltip-text: _("Add a title to your library"); menu-model: _add_menu; } [start] ToggleButton _show_search_btn { icon-name: "loupe"; tooltip-text: _("Show/Hide search bar"); toggled => $_on_search_btn_toggled(); } [end] MenuButton _menu_btn { icon-name: "open-menu"; menu-model: _primary_menu; tooltip-text: _("Main Menu"); } [end] $BackgroundIndicator _background_indicator { visible: true; } } [top] SearchBar _search_bar { search-mode-enabled: bind _show_search_btn.active; styles ["inline"] child: Box { orientation: horizontal; spacing: 6; DropDown _search_mode { model: StringList { strings [ C_("Search mode", "Title"), C_("Search mode", "Genre"), C_("Search mode", "Overview"), C_("Search mode", "Notes"), C_("Search mode", "TMDB ID") ] }; selected: 0; } SearchEntry _search_entry { halign: center; width-request: 430; activates-default: true; placeholder-text: _("Search Your Watchlist"); search-delay: 500; search-changed => $_on_searchentry_search_changed(); } }; } content: Box { orientation: vertical; Adw.Banner _banner { title: _("Offline Mode Enabled"); button-label: _("Preferences"); action-name: "app.preferences"; } Adw.ViewStack _tab_stack { vexpand: true; hexpand: true; } }; [bottom] Adw.ViewSwitcherBar _switcher_bar { stack: _tab_stack; } }; }; } } } menu _primary_menu { section { item { custom: "themeswitcher"; } } section { submenu { label: _("_Sorting"); section { item { label: _("A-Z"); action: "win.view-sorting"; target: "az"; } item { label: _("Z-A"); action: "win.view-sorting"; target: "za"; } item { label: _("Date added (newest first)"); action: "win.view-sorting"; target: "added-date-new"; } item { label: _("Date added (oldest first)"); action: "win.view-sorting"; target: "added-date-old"; } item { label: _("Release date (newest first)"); action: "win.view-sorting"; target: "released-date-new"; } item { label: _("Release date (oldest first)"); action: "win.view-sorting"; target: "released-date-old"; } } section { item { label: _("Separate watched from unwatched"); action: 'win.separate-watched'; } item { label: _("Hide watched"); action: 'win.hide-watched'; } } } item { label: _("_Refresh"); action: "win.refresh"; } } section { item { label: _("_Import"); action: "app.import"; } item { label: _("_Export"); action: "app.export"; } } section { item { label: _("_Preferences"); action: "app.preferences"; } item { label: _("_Keyboard Shortcuts"); action: "win.show-help-overlay"; } item { label: _("_About Ticket Booth"); action: "app.about"; } } } menu _add_menu { item { label: _("From The Movie Database (TMDB)"); action: "win.add-tmdb"; } item { label: _("Manually"); action: "win.add-manual"; } } ticketbooth-1.2.0/src/ui/widgets/000077500000000000000000000000001501006415200166755ustar00rootroot00000000000000ticketbooth-1.2.0/src/ui/widgets/background_activity_row.blp000066400000000000000000000012341501006415200243160ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $BackgroundActivityRow: Adw.Bin { tooltip-text: bind template.title; map => $_on_map(); Box { orientation: horizontal; spacing: 12; Image _icon { icon-name: 'check-plain'; pixel-size: 24; } Box { orientation: vertical; vexpand: true; valign: center; spacing: 6; Label { label: bind template.title; halign: start; max-width-chars: 30; ellipsize: end; } ProgressBar _progress_bar { hexpand: true; } } } } ticketbooth-1.2.0/src/ui/widgets/background_indicator.blp000066400000000000000000000030071501006415200235470ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Gio 2.0; using Adw 1; template $BackgroundIndicator: Adw.Bin { MenuButton _btn { styles ["flat"] tooltip-text: _("Background Activities"); child: Overlay { [overlay] Adw.Spinner _spinner { visible: false; } Image _image { icon-name: 'check-plain'; } }; popover: Popover { styles ["menu"] width-request: 300; child: Adw.ViewStack _stack { Adw.ViewStackPage { name: 'empty'; child: Adw.StatusPage { title: _("No Background Activities"); icon-name: 'check-plain'; }; } Adw.ViewStackPage { name: 'filled'; child: ScrolledWindow { vexpand: true; ListView _list_view { orientation: vertical; model: NoSelection { model: Gio.ListStore _model {}; }; factory: BuilderListItemFactory { template ListItem { child: $BackgroundActivityRow { title: bind template.item as < $BackgroundActivity > .title; activity-type: bind template.item as < $BackgroundActivity > .activity-type; completed: bind template.item as < $BackgroundActivity > .completed; }; } }; } }; } }; }; } } ticketbooth-1.2.0/src/ui/widgets/episode_row.blp000066400000000000000000000033161501006415200217160ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $EpisodeRow: Adw.PreferencesRow { map => $_on_map(); Box { margin-bottom: 12; margin-top: 12; margin-start: 12; margin-end: 12; orientation: horizontal; hexpand: true; spacing: 24; Picture _still_picture { height-request: 100; width-request: 56; content-fit: fill; styles ["still"] } Box { orientation: vertical; hexpand: true; Label _title_lbl { halign: start; lines: 2; wrap: true; styles ["heading"] } Label _runtime_lbl { halign: start; styles ["dimmed"] } Label _overview { margin-top: 3; halign: start; label: bind template.overview; wrap: true; lines: 3; wrap-mode: word; ellipsize: end; } } Box { visible: bind template.show-controls; Button _watched_btn { visible: bind template.editable inverted; valign: center; clicked => $_on_watched_btn_clicked(); } Box { styles ["linked"] orientation: horizontal; visible: bind template.editable; halign: end; hexpand: true; Button _delete_btn { valign: center; icon-name: "user-trash-symbolic"; clicked => $_on_delete_btn_clicked(); } Button _edit_btn { valign: center; child: Adw.ButtonContent { icon-name: "document-edit"; label: _("Edit"); }; clicked => $_on_edit_btn_clicked(); } } } } } ticketbooth-1.2.0/src/ui/widgets/image_selector.blp000066400000000000000000000024151501006415200223600ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $ImageSelector: Adw.Bin { halign: center; map => $_on_map(); Overlay { height-request: 250; valign: center; halign: center; [overlay] Adw.Spinner _spinner { visible: false; } Overlay { halign: center; valign: center; [overlay] Button _edit_btn { icon-name: "document-edit"; tooltip-text: _("Edit poster"); halign: end; valign: end; margin-bottom: 6; margin-end: 6; styles ["circular", "osd"] clicked => $_on_edit_btn_clicked(); } [overlay] Revealer _delete_revealer { reveal-child: false; transition-type: crossfade; margin-end: 40; Button _delete_btn { icon-name: "user-trash-symbolic"; tooltip-text: _("Delete poster"); halign: end; valign: end; margin-bottom: 6; margin-end: 6; styles ["circular", "osd"] clicked => $_on_delete_btn_clicked(); } } Picture _poster_picture { content-fit: bind template.content-fit; styles ["poster"] } } } } ticketbooth-1.2.0/src/ui/widgets/poster_button.blp000066400000000000000000000062001501006415200223010ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $PosterButton: Box { orientation: vertical; halign: center; valign: start; map => $_on_map(); Adw.Clamp { maximum-size: 200; Button _poster_btn { clicked => $_on_poster_btn_clicked(); styles ["flat"] overflow: hidden; accessibility { labelled-by: _title_lbl; } Box { orientation: vertical; Overlay _poster_box { halign: center; [overlay] Adw.Spinner _spinner { height-request: 32; valign: center; } [overlay] Box _new_release_badge { margin-top: 6; margin-end: 6; orientation: vertical; visible: false; tooltip-text:_("The series has a new release"); Overlay { halign: end; valign: start; Image{ icon-name: "star-large-symbolic"; icon-size: large; } } } [overlay] Box _soon_release_badge { margin-top: 6; margin-end: 6; orientation: vertical; visible: false; tooltip-text:_("The series has a new release soon"); Overlay { halign: end; valign: start; Image{ icon-name: "hourglass-symbolic"; icon-size: large; } } } [overlay] Box _watched_badge { margin-top: 6; margin-end: 6; orientation: vertical; visible: false; tooltip-text:_("This title is marked as watched"); Overlay { halign: end; valign: start; Image{ icon-name: "check-round-outline-symbolic"; icon-size: large; } } } Picture _picture { width-request: 150; height-request: 225; content-fit: fill; styles ["poster"] } } Box { orientation: vertical; spacing: 3; Label _title_lbl { ellipsize: end; hexpand: true; halign: start; margin-top: 6; label: bind template.title; lines: 2; wrap: true; } Box { orientation: horizontal; spacing: 6; Label _year_lbl { label: bind template.year; halign: start; styles ["caption", "chip"] } Label _status_lbl { label: bind template.status; halign: start; styles ["caption", "chip"] } Label _watched_lbl { halign: start; visible: false; label: _("Watched"); styles ["caption", "chip"] } } } } } } } ticketbooth-1.2.0/src/ui/widgets/search_result_row.blp000066400000000000000000000041031501006415200231240ustar00rootroot00000000000000// Copyright (C) 2022 - 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $SearchResultRow: ListBoxRow { map => $_on_map(); css-name: "search_result_row"; hexpand: true; vexpand: true; activatable: false; child: Box { valign: start; vexpand: true; spacing: 12; orientation: horizontal; margin-top: 6; margin-bottom: 6; Overlay { [overlay] Adw.Spinner _poster_spinner { height-request: 32; width-request: 32; valign: center; } Picture _poster_picture { width-request: 100; height-request: 150; styles ["poster"] } } Box { orientation: vertical; Label _title_lbl { halign: start; ellipsize: end; hexpand: true; label: bind template.title; styles ["heading"] } Box _caption_box { orientation: horizontal; spacing: 12; halign: start; Label _year_lbl { hexpand: true; halign: start; label: bind template.year; styles ["caption", "chip"] visible: bind template.year-visible; } Label _media_type_lbl { label: bind template.media_type; styles ["caption", "chip"] } } Label _description { hexpand: true; margin-top: 6; halign: start; wrap: true; wrap-mode: word; label: bind template.description; lines: 4; ellipsize: end; } Box { orientation: horizontal; spacing: 12; valign: end; Button { child: Adw.ButtonContent _add_btn { label: _("Add to watchlist"); icon-name: "plus"; }; halign: start; vexpand: true; valign: end; clicked => $_on_add_btn_clicked(); styles ["suggested-action"] } Adw.Spinner _add_spinner { height-request: 16; visible: false; } } } }; } ticketbooth-1.2.0/src/ui/widgets/season_expander.blp000066400000000000000000000014501501006415200225520ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $SeasonExpander: Adw.ExpanderRow { title: bind template.season_title; map => $_on_map(); [prefix] Picture _poster { height-request: 112; width-request: 75; content-fit: fill; margin-top: 12; margin-bottom: 12; styles ["still"] } [suffix] Box { orientation: horizontal; valign: center; styles ["linked"] Button _delete_btn { icon-name: "user-trash-symbolic"; clicked => $_on_delete_btn_clicked(); } Button _edit_btn { valign: center; child: Adw.ButtonContent { icon-name: "document-edit"; label: _("Edit"); }; clicked => $_on_edit_btn_clicked(); } } } ticketbooth-1.2.0/src/ui/widgets/theme_switcher.blp000066400000000000000000000021751501006415200224130ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; template $ThemeSwitcher : Box { styles [ "themeswitcher", ] hexpand: true; Box box { hexpand: true; orientation: horizontal; spacing: 12; CheckButton system { styles [ "theme-selector", "system", ] visible: bind template.show-system; hexpand: true; halign: center; focus-on-click: false; tooltip-text: _("Follow system style"); notify::active => $_on_color_scheme_changed(); } CheckButton light { styles [ "theme-selector", "light", ] hexpand: true; halign: center; group: system; focus-on-click: false; tooltip-text: _("Light style"); notify::active => $_on_color_scheme_changed(); } CheckButton dark { styles [ "theme-selector", "dark", ] hexpand: true; halign: center; group: system; focus-on-click: false; tooltip-text: _("Dark style"); notify::active => $_on_color_scheme_changed(); } } } ticketbooth-1.2.0/src/ui/window.blp000066400000000000000000000006171501006415200172410ustar00rootroot00000000000000// Copyright (C) 2023 Alessandro Iepure // // SPDX-License-Identifier: GPL-3.0-or-later using Gtk 4.0; using Adw 1; template $TicketboothWindow: Adw.ApplicationWindow { default-width: 1024; default-height: 600; width-request: 400; height-request: 600; map => $_on_map(); close-request => $_on_close_request(); Adw.ViewStack _win_stack { vexpand: true; hexpand: true; } } ticketbooth-1.2.0/src/views/000077500000000000000000000000001501006415200157475ustar00rootroot00000000000000ticketbooth-1.2.0/src/views/__init__.py000066400000000000000000000000001501006415200200460ustar00rootroot00000000000000ticketbooth-1.2.0/src/views/content_view.py000066400000000000000000000321171501006415200210310ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import logging from gettext import gettext as _ from typing import Callable from gi.repository import Adw, GObject, Gtk import src.providers.local_provider as local from .. import shared # type: ignore from ..models.movie_model import MovieModel from ..models.series_model import SeriesModel from ..pages.details_page import DetailsView from ..widgets.poster_button import PosterButton @Gtk.Template(resource_path=shared.PREFIX + '/ui/views/content_view.ui') class ContentView(Adw.Bin): """ This class represents the content grid view. Properties: None Methods: refresh(): Causes the view to update its contents Signals: None """ __gtype_name__ = 'ContentView' movie_view = GObject.Property(type=bool, default=True) icon_name = GObject.Property(type=str, default='movies') _stack = Gtk.Template.Child() _updating_status_lbl = Gtk.Template.Child() _title_lbl = Gtk.Template.Child() _flow_box = Gtk.Template.Child() _full_box = Gtk.Template.Child() _separated_box = Gtk.Template.Child() _unwatched_box = Gtk.Template.Child() _unwatched_flow_box = Gtk.Template.Child() _watched_box = Gtk.Template.Child() _watched_flow_box = Gtk.Template.Child() def __init__(self, movie_view: bool): super().__init__() self.movie_view = movie_view self.icon_name = 'movies' if self.movie_view else 'series' self._stack.set_visible_child_name('loading') self._load_content(self.movie_view) self._set_sorting_function() self._set_filter_function() shared.schema.connect('changed::view-sorting', self._on_sort_changed) shared.schema.connect('changed::separate-watched', self._on_separate_watched_changed) shared.schema.connect('changed::hide-watched', self._on_hide_watched_changed) shared.schema.connect('changed::search-query', self._on_search_enabled_changed) def _on_sort_changed(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for the "changed" signal. Calls the function to set the sorting function on the FlowBox. Args: pspec (GObject.ParamSpec): pspec of the changed property user_data (object or None): additional data passed to the callback Returns: None """ self._set_sorting_function() def _on_separate_watched_changed(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for the "changed" signal. Args: pspec (GObject.ParamSpec): pspec of the changed property user_data (object or None): additional data passed to the callback Returns: None """ self.refresh_view() def _on_hide_watched_changed(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for the "changed" signal. Args: pspec (GObject.ParamSpec): pspec of the changed property user_data (object or None): additional data passed to the callback Returns: None """ self._set_filter_function() def _load_content(self, movie_view: bool) -> None: """ For each title currently in the db, creates a PosterButton and adds it to the FlowBox. Args: movie_view (bool): if true it will load movies, otherwise it will load series Returns: None """ # self._stack.set_visible_child_name('loading') if movie_view: content = local.LocalProvider.get_all_movies() else: content = local.LocalProvider.get_all_series() if not content: self._stack.set_visible_child_name('empty') return else: self._stack.set_visible_child_name('filled') for item in content: logging.debug( f'Created poster button for [{"movie" if self.movie_view else "TV series"}] {item.title}') btn = PosterButton(content=item) btn.connect('clicked', self._on_clicked) if not shared.schema.get_boolean('search-enabled') and shared.schema.get_boolean('separate-watched'): if item.watched: self._watched_flow_box.insert(btn, -1) else: self._unwatched_flow_box.insert(btn, -1) else: self._flow_box.insert(btn, -1) idx = 0 while self._flow_box.get_child_at_index(idx): self._flow_box.get_child_at_index(idx).set_focusable(False) idx += 1 idx = 0 while self._watched_flow_box.get_child_at_index(idx): self._watched_flow_box.get_child_at_index(idx).set_focusable(False) idx += 1 idx = 0 while self._watched_flow_box.get_child_at_index(idx): self._watched_flow_box.get_child_at_index(idx).set_focusable(False) idx += 1 self._full_box.set_visible(False) self._separated_box.set_visible(False) self._unwatched_box.set_visible(False) self._watched_box.set_visible(False) if not shared.schema.get_boolean('search-enabled') and shared.schema.get_boolean('separate-watched'): self._separated_box.set_visible(True) if self._watched_flow_box.get_child_at_index(0) is not None: self._watched_box.set_visible(True) if self._unwatched_flow_box.get_child_at_index(0) is not None: self._unwatched_box.set_visible(True) else: self._full_box.set_visible(True) # self._stack.set_visible_child_name('filled') def refresh_view(self) -> None: """ Causes the view to refresh its contents by replacing the content of the FlowBox. Args: None Returns: None """ # self._stack.set_visible_child_name('loading') self._flow_box.remove_all() self._watched_flow_box.remove_all() self._unwatched_flow_box.remove_all() self._load_content(self.movie_view) def _on_clicked(self, source: Gtk.Widget, content: MovieModel | SeriesModel) -> None: """ Callback for the "clicked" signal. Opens the details view for the selected content. Args: source (Gtk.Widget): widget that emited the signal movie (MovieModel): associated movie Returns: None """ logging.info( f'Clicked on [{"movie" if self.movie_view else "TV series"}] {content.title}') page = DetailsView(content, self) page.connect('deleted', lambda *args: self.refresh_view()) self.get_ancestor(Adw.NavigationView).push(page) def _set_sorting_function(self) -> None: """ Based on the current setting, sets the sorting function of the FlowBox. Args: None Returns; None """ def get_sort_func(key: str) -> Callable | None: match key: case 'az': return lambda child1, child2, user_data: ( (child1.get_child().title > child2.get_child().title) - (child1.get_child().title < child2.get_child().title) ) case 'za': return lambda child1, child2, user_data: ( (child1.get_child().title < child2.get_child().title) - (child1.get_child().title > child2.get_child().title) ) case 'added-date-new': return lambda child1, child2, user_data: ( (child1.get_child().content.add_date < child2.get_child().content.add_date) - (child1.get_child().content.add_date > child2.get_child().content.add_date) ) case 'added-date-old': return lambda child1, child2, user_data: ( (child1.get_child().content.add_date > child2.get_child().content.add_date) - (child1.get_child().content.add_date < child2.get_child().content.add_date) ) case 'released-date-new': return lambda child1, child2, user_data: ( (child1.get_child().content.release_date < child2.get_child().content.release_date) - (child1.get_child().content.release_date > child2.get_child().content.release_date) ) case 'released-date-old': return lambda child1, child2, user_data: ( (child1.get_child().content.release_date > child2.get_child().content.release_date) - (child1.get_child().content.release_date < child2.get_child().content.release_date) ) return None sort_key = shared.schema.get_string('view-sorting') sort_func = get_sort_func(sort_key) if not shared.schema.get_boolean('search-enabled') and shared.schema.get_boolean('separate-watched'): # Apply sorting to both watched and unwatched flow boxes if sort_func: self._watched_flow_box.set_sort_func(sort_func, None) self._unwatched_flow_box.set_sort_func(sort_func, None) self._watched_flow_box.invalidate_sort() self._unwatched_flow_box.invalidate_sort() else: # Apply sorting to the main flow box if sort_func: self._flow_box.set_sort_func(sort_func, None) self._flow_box.invalidate_sort() def _set_filter_function(self) -> None: """ Based on the current setting, sets the filter function of the FlowBox. Args: None Returns; None """ if shared.schema.get_boolean('search-enabled'): if shared.schema.get_string('search-mode') == 'title': self._flow_box.set_filter_func( lambda child, user_data: ( shared.schema.get_string( 'search-query').lower() in child.get_child().content.title.lower() ), None) elif shared.schema.get_string('search-mode') == 'genre': self._flow_box.set_filter_func( lambda child, user_data: ( any( shared.schema.get_string( 'search-query').title() in genre for genre in child.get_child().content.genres) ), None) elif shared.schema.get_string('search-mode') == 'overview': self._flow_box.set_filter_func( lambda child, user_data: ( shared.schema.get_string( 'search-query').lower() in child.get_child().content.overview.lower() ), None) elif shared.schema.get_string('search-mode') == 'notes': self._flow_box.set_filter_func( lambda child, user_data: ( shared.schema.get_string( 'search-query').lower() in child.get_child().content.notes.lower() ), None) elif shared.schema.get_string('search-mode') == 'tmdb-id': self._flow_box.set_filter_func( lambda child, user_data: ( shared.schema.get_string( 'search-query').lower() in child.get_child().content.id.lower() ), None) self._flow_box.invalidate_filter() return if shared.schema.get_boolean('hide-watched'): self._flow_box.set_filter_func(lambda child, user_data: ( not child.get_child().content.watched), None) self._flow_box.invalidate_filter() return self._flow_box.set_filter_func(lambda child, user_data: True, None) self._flow_box.invalidate_filter() def _on_search_enabled_changed(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for the "changed" signal. Refreshes the view when the search is enabled or disabled. Args: pspec (GObject.ParamSpec): pspec of the changed property user_data (object or None): additional data passed to the callback Returns: None """ self._title_lbl.set_label(_("Search results") if shared.schema.get_boolean( 'search-enabled') else _("Your Watchlist")) self.refresh_view() self._set_filter_function() ticketbooth-1.2.0/src/views/db_update_view.py000066400000000000000000000146611501006415200213120ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import locale import logging import os import sqlite3 import time from datetime import datetime, timedelta from gettext import gettext as _ from gi.repository import Adw, Gio, GLib, GObject, Gtk from .. import shared # type: ignore from ..models.movie_model import MovieModel from ..models.series_model import SeriesModel from ..providers.local_provider import LocalProvider as local from ..providers.tmdb_provider import TMDBProvider as tmdb @Gtk.Template(resource_path=shared.PREFIX + '/ui/views/db_update_view.ui') class DbUpdateView(Adw.Bin): """ This class represents the initial setup the app needs to offer full fuctionality. Properties: None Methods: None Signals: exit: emited when the view has completed its operations, either the required data was successfully downloaded \ or the user requested "offline mode" """ __gtype_name__ = 'DbUpdateView' _progress_bar = Gtk.Template.Child() _update_progress_page = Gtk.Template.Child() _notification_question = Gtk.Template.Child() _activate_btn = Gtk.Template.Child() _deactivate_btn = Gtk.Template.Child() _carousel = Gtk.Template.Child() _offline_btn = Gtk.Template.Child() _retry_check_btn = Gtk.Template.Child() __gsignals__ = { 'exit': (GObject.SIGNAL_RUN_FIRST, None, ()), } _cancellable = Gio.Cancellable.new() def __init__(self): super().__init__() @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Creates the directories and tables in the local db, sets the tmdb results language based on the locale, and attempts to download required data if connected to the Internet. Args: user_data (object or None): user data passed to the callback. Returns: None """ logging.info('Updating Database...') local.update_movies_table() local.update_series_table() logging.info('Added new Columns to Database') if shared.schema.get_boolean('offline-mode'): self.emit('exit') logging.info('Refetching Data from TMDB...') self.task = Gio.Task.new() self.task.run_in_thread( lambda*_:self._fetch_data_from_tmdb() ) @Gtk.Template.Callback('_on_offline_btn_clicked') def _on_offline_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Stops the background network check and sets the app in offline mode. An option to retry on next launch is provided. Args: user_data (object or None): user data passed to the callback. Returns: None """ self._cancellable.cancel() shared.schema.set_boolean('offline-mode', True) logging.info('[Update] Offline mode enabled') if not self._retry_check_btn.get_active(): shared.schema.set_boolean('db-needs-update', False) logging.info('[Update] Database update partially complete') logging.info('[Update] Database update not completed, retrying on next run') self.emit('exit') def _fetch_data_from_tmdb(self) : with sqlite3.connect(shared.db) as connection: movies = local.get_all_movies() series = local.get_all_series() total = len(movies) + len(series) counter = 0 for movie in movies: if not movie.manual: new_movie = MovieModel(tmdb.get_movie(movie.id)) #Check if the soon_release flag should be set, that is the case if the movie is set to release in less than 14 days if len(movie.release_date) > 0 and datetime.strptime(movie.release_date, '%Y-%m-%d') < datetime.now() + timedelta(days=14): # TODO make this a variable and sync with main_view.py #Writing to the local db since update_movie updates entry of the local db local.set_soon_release_status(movie.id, True, True) local.update_movie(movie, new_movie) counter += 1 self._progress_bar.set_fraction(counter/total) for serie in series: if not serie.manual: new_serie = SeriesModel(tmdb.get_serie(serie.id)) #Check if the soon_release flag should be set, that is the case if the next episode is less than 7 days away compare_date = new_serie.next_air_date if len(compare_date) > 0 and datetime.strptime(compare_date, '%Y-%m-%d') < datetime.now() + timedelta(days=7): # TODO make this a variable and sync with main_view.py #Writing to variable since update_series deletes local db entry and creates a new entry with flags from argument serie.soon_release = True local.update_series(serie, new_serie) counter += 1 self._progress_bar.set_fraction(counter/total) logging.info('Fetched Data from TMDB.') #Go to next page in the carousel index = int(self._carousel.get_position()) next_page = self._carousel.get_nth_page(index + 1) self._carousel.scroll_to(next_page, True) @Gtk.Template.Callback('_on_deactivate_btn_clicked') def _on_btn_deactivate_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Sets all activate_notification to false in local db and exits carousel Args: user_data (object or None): user data passed to the callback. Returns: None """ local.reset_activate_notification() shared.schema.set_boolean('db-needs-update', False) logging.debug(f'db update dialog: confim, deactivate notifications') self.emit('exit') @Gtk.Template.Callback('_on_activate_btn_clicked') def _on_btn_activate_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Exits carousel. Args: user_data (object or None): user data passed to the callback. Returns: None """ shared.schema.set_boolean('db-needs-update', False) self.emit('exit')ticketbooth-1.2.0/src/views/first_run_view.py000066400000000000000000000202451501006415200213710ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import locale import logging import os from gettext import gettext as _ from gi.repository import Adw, Gio, GLib, GObject, Gtk from .. import shared # type: ignore from ..models.language_model import LanguageModel from ..providers.local_provider import LocalProvider as local from ..providers.tmdb_provider import TMDBProvider as tmdb @Gtk.Template(resource_path=shared.PREFIX + '/ui/views/first_run_view.ui') class FirstRunView(Adw.Bin): """ This class represents the initial setup the app needs to offer full fuctionality. Properties: None Methods: None Signals: exit: emited when the view has completed its operations, either the required data was successfully downloaded \ or the user requested "offline mode" """ __gtype_name__ = 'FirstRunView' _heading_lbl = Gtk.Template.Child() _status_lbl = Gtk.Template.Child() _offline_btn = Gtk.Template.Child() _retry_check_btn = Gtk.Template.Child() __gsignals__ = { 'exit': (GObject.SIGNAL_RUN_FIRST, None, ()), } _cancellable = Gio.Cancellable.new() def __init__(self): super().__init__() @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Creates the directories and tables in the local db, sets the tmdb results language based on the locale, and attempts to download required data if connected to the Internet. Args: user_data (object or None): user data passed to the callback. Returns: None """ logging.info('First run setup in progress...') for path in [shared.background_dir, shared.poster_dir, shared.series_dir]: if not os.path.exists(path): os.makedirs(path) logging.info(f'[setup] Created folder {path}') local.create_tables() logging.info('[setup] Created db tables') language = locale.getdefaultlocale()[0].lower()[:2] # type: ignore shared.schema.set_string('tmdb-lang', language) logging.info(f'[Setup] Set TMDB language to {language}') self._update_ui(need_download=True) Gio.NetworkMonitor.get_default().can_reach_async( Gio.NetworkAddress.parse_uri('https://api.themoviedb.org', 80), self._cancellable, self._on_first_reach_done, None ) logging.info('[Setup] Checking network connection...') def _update_ui(self, need_download: bool) -> None: """ Updates the UI strings to reflect its state: - if need_download is TRUE, the UI tells the user that the Internet is needed and some data will be downloaded. Additionally it shows options to proceed offline. - if need_download is FALSE, the UI tells the user a generic message. Args: need_download (bool): selected messages to be shown as stated above. Returns: None """ if need_download: self._heading_lbl.set_label(_('Waiting for Network…')) self._status_lbl.set_label( _("For a complete experience, a download of 15 KB is required. However, if you are not connected to the Internet or don't want to wait, you can skip this step and continue offline without some features.")) self._offline_btn.set_visible(True) self._retry_check_btn.set_visible(True) else: self._heading_lbl.set_label(_('Getting things ready…')) self._status_lbl.set_label(_('Downloading data')) self._offline_btn.set_visible(False) self._retry_check_btn.set_visible(False) def _on_first_reach_done(self, source: GObject.Object | None, result: Gio.AsyncResult, data: object | None) -> None: """ Callback for asynchronous network check, reached after the first call. If the network is available, proced with the download, otherwise keep checking every second until it becomes available or the user goes in offline mode. Args: source (GObject.Object or None): the object the asynchronous operation was started with. result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): user data passed to the callback. Returns: None """ try: network = Gio.NetworkMonitor.get_default().can_reach_finish(result) except GLib.Error: network = None if network: logging.info('[Setup] Network present, staring download') self._download_languages() else: self._has_network = False logging.error( '[Setup] Network not present, retrying in 10 seconds') # Continue checking in a separate thread GLib.Thread.new(None, self._loop_check_network) def _loop_check_network(self) -> None: """ Function run in a separate thread to continously check for network connection every second until the operation is cancelled or the network is restored. If the network is restored, the download is completed and the thread killed. Args: None Returns: None """ while not (self._cancellable.is_cancelled() or self._has_network): GLib.usleep(10000000) Gio.NetworkMonitor.get_default().can_reach_async( Gio.NetworkAddress.parse_uri('https://api.themoviedb.org', 80), self._cancellable, self._on_loop_reach_done, None ) if self._has_network: logging.info('[Setup] Network present, staring download') self._download_languages() GLib.Thread.exit() def _on_loop_reach_done(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for asynchronous network check, reached during the looped check. It sets the network presence flag based on the current condition. Args: source (GObject.Object or None): the object the asynchronous operation was started with. result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): user data passed to the callback. Returns: None """ try: self._has_network = Gio.NetworkMonitor.get_default().can_reach_finish(result) except GLib.Error: self._has_network = False logging.error( '[Setup] Network not present, retrying in 10 seconds') def _download_languages(self) -> None: """ Completes the downlaod, stores the data in the db and sets the relevant GSettings. Args: None Results: None """ self._update_ui(need_download=False) languages = tmdb.get_languages() for lang in languages: local.add_language(LanguageModel(lang)) shared.schema.set_boolean('first-run', False) shared.schema.set_boolean('offline-mode', False) shared.schema.set_boolean('onboard-complete', True) logging.info('[Setup] First setup complete') self.emit('exit') @Gtk.Template.Callback('_on_offline_btn_clicked') def _on_offline_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Stops the background network check and sets the app in offline mode. An option to retry on next launch is provided. Args: user_data (object or None): user data passed to the callback. Returns: None """ self._cancellable.cancel() shared.schema.set_boolean('offline-mode', True) logging.info('[Setup] Offline mode enabled') if not self._retry_check_btn.get_active(): shared.schema.set_boolean('first-run', False) logging.info('[Setup] First setup partially complete') logging.info('[Setup] Setup not completed, retrying on next run') self.emit('exit') ticketbooth-1.2.0/src/views/main_view.py000066400000000000000000000556431501006415200203140ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import logging from datetime import datetime, timedelta from gettext import gettext as _ from gettext import pgettext as C_ from gettext import ngettext as N_ from gi.repository import Adw, Gio, GObject, Gtk from .. import shared # type: ignore from ..background_queue import (ActivityType, BackgroundActivity, BackgroundQueue) from ..models.movie_model import MovieModel from ..models.series_model import SeriesModel from ..providers.local_provider import LocalProvider as local from ..providers.tmdb_provider import TMDBProvider as tmdb from ..views.content_view import ContentView from ..widgets.theme_switcher import ThemeSwitcher @Gtk.Template(resource_path=shared.PREFIX + '/ui/views/main_view.ui') class MainView(Adw.Bin): """ This class represents the main view of the app. Properties: None Methods: refresh(): Causes the window to update its contents Signals: None """ __gtype_name__ = 'MainView' _tab_stack = Gtk.Template.Child() _show_search_btn = Gtk.Template.Child() _menu_btn = Gtk.Template.Child() _banner = Gtk.Template.Child() _background_indicator = Gtk.Template.Child() _search_bar = Gtk.Template.Child() _search_mode = Gtk.Template.Child() _search_entry = Gtk.Template.Child() _needs_refresh = '' def __init__(self, window): super().__init__() self.app = window.app self._tab_stack.add_titled_with_icon(ContentView(movie_view=True), 'movies', C_('Category', 'Movies'), 'movies' ) self._tab_stack.add_titled_with_icon(ContentView(movie_view=False), 'series', C_('Category', 'TV Series'), 'series' ) shared.schema.bind('win-tab', self._tab_stack, 'visible-child-name', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('offline-mode', self._banner, 'revealed', Gio.SettingsBindFlags.GET) shared.schema.bind('search-enabled', self._search_bar, 'search-mode-enabled', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('search-enabled', self._show_search_btn, 'active', Gio.SettingsBindFlags.DEFAULT) self._search_mode.connect( 'notify::selected', self._on_search_mode_changed) self._tab_stack.connect( 'notify::visible-child-name', self._check_needs_refresh) # Theme switcher (Adapted from https://gitlab.gnome.org/tijder/blueprintgtk/) self._menu_btn.get_popover().add_child(ThemeSwitcher(), 'themeswitcher') def _check_needs_refresh(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Checks if the tab switched to is pending a refresh and does it if needed. Args: pspec (GObject.ParamSpec): pspec of the changed property user_data (object or None): additional data passed to the callback Returns: None """ if self._tab_stack.get_visible_child_name() == 'movies' and self._needs_refresh == 'movies': self._tab_stack.get_child_by_name('movies').refresh_view() logging.info('Refreshed movies tab') self._needs_refresh = '' elif self._tab_stack.get_visible_child_name() == 'series' and self._needs_refresh == 'series': self._tab_stack.get_child_by_name('series').refresh_view() logging.info('Refreshed TV Series tab') self._needs_refresh = '' @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Calls method to check if an automatic content update is due. Args: user_data (object or None): additional data passed to the callback Returns: None """ if not shared.schema.get_boolean('first-run'): self._check_update_content() def _check_update_content(self) -> None: """ Checks if a content update is due, triggering it by adding background activities, if necessary. Args: None Returns: None """ last_check = datetime.fromisoformat( shared.schema.get_string('last-update')) frequency = shared.schema.get_string('update-freq') last_notification_check = datetime.fromisoformat( shared.schema.get_string('last-notification-update')) if last_notification_check + timedelta(hours=12) < datetime.now(): shared.schema.set_string( 'last-notification-update', datetime.now().strftime('%Y-%m-%d %H:%M')) logging.info('Starting automatic notification list update...') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.UPDATE, title=C_('Notification List activity title', 'Automatic update of notification list'), task_function=self._update_notification_list), on_done=self._on_notification_list_done) logging.debug( f'Last update done on {last_check}, frequency {frequency}') run = True match frequency: case 'day': if last_check + timedelta(days=1) < datetime.now(): logging.info('Starting automatic update...') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.UPDATE, title=C_('Background activity title', 'Automatic update'), task_function=self._update_content), on_done=self._on_update_done) case 'week': if last_check + timedelta(days=7) < datetime.now(): logging.info('Starting automatic update...') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.UPDATE, title=C_('Background activity title', 'Automatic update'), task_function=self._update_content), on_done=self._on_update_done) case 'month': if last_check + timedelta(days=30) < datetime.now(): logging.info('Starting automatic update...') BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.UPDATE, title=C_('Background activity title', 'Automatic update'), task_function=self._update_content), on_done=self._on_update_done) case 'never': return shared.schema.set_string( 'last-update', datetime.now().strftime('%Y-%m-%d')) def _update_content(self, activity: BackgroundActivity) -> None: """ Performs a content update on content added from TMDB. Args: activity (BackgroundActivity): the calling activity Returns: None """ movies = local.get_all_movies() if movies: for movie in movies: # type: ignore if not movie.manual: new_movie = MovieModel(tmdb.get_movie(movie.id)) local.update_movie(old=movie, new=new_movie) series = local.get_all_series() if series: for serie in series: # type: ignore if not serie.manual: new_serie = SeriesModel(tmdb.get_serie(serie.id)) local.update_series(old=serie, new=new_serie) def _on_update_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" self.refresh() logging.info('Automatic update done') activity.end() def _update_notification_list(self, activity: BackgroundActivity) -> None: """ Performs a content update on the notification list. Args: activity (BackgroundActivity): the calling activity Returns: None """ series = local.get_all_series_notification_list() new_release_series = [] soon_release_series = [] out_of_production_series = [] for serie in series: last_air_date = datetime.strptime(serie.last_air_date, '%Y-%m-%d') # Get the latest info for the series from TMDB new_serie = SeriesModel(tmdb.get_serie(serie.id)) new_last_air_date = datetime.strptime( new_serie.last_air_date, '%Y-%m-%d') if new_serie.next_air_date != '': new_next_air_date = datetime.strptime( new_serie.next_air_date, '%Y-%m-%d') else: # create bogus next air date if it does not exist new_next_air_date = datetime.now() + timedelta(days=10) # Check if the latest release is newer than the last saved in the database -> new release has come out. if last_air_date < new_last_air_date: # Set the new release status and add the series to the new releases list and set soon_release to false local.set_new_release_status(serie.id, True) local.set_soon_release_status(serie.id, False) local.set_recent_change_status(serie.id, True) new_release_series.append(new_serie) # we only save one, since we do not use it if more than one series has a new release new_release_series_span = datetime.now() - new_last_air_date # Check if the next air date is set to soon (7 days in the future) if datetime.now() + timedelta(days=7) > new_next_air_date: local.set_soon_release_status(serie.id, True) # if we also detect a considerable amount of time bewteen epsidoe notify user that the series has new releases coming soon. # 3 weeks are chosen to include the new streaming release model of two chunks a month apart but not spam the user for weekly or bi-weekly releases if new_next_air_date - timedelta(days=20) > last_air_date: local.set_recent_change_status(serie.id, True) soon_release_series.append(new_serie) soon_release_series_span = new_next_air_date - datetime.now() # Check if the series went from in production to not in production if serie.in_production == 1 and new_serie.in_production == 0: local.set_recent_change_status(serie.id, True) out_of_production_series.append(new_serie) local.set_notification_list_status(serie.id, False) # refetch serie to get all the correct flags that we set from the database serie = local.get_series_by_id(serie.id) local.update_series(serie, new_serie) movies = local.get_all_movies_notification_list() new_release_movies = [] soon_release_movies = [] for movie in movies: # Get the latest info for the movie from TMDB new_movie = MovieModel(tmdb.get_movie(movie.id)) release_date = datetime.strptime( new_movie.release_date, '%Y-%m-%d') if release_date < datetime.now(): local.set_recent_change_status(movie.id, True, movie=True) local.set_new_release_status(movie.id, True, movie=True) local.set_soon_release_status(movie.id, False, movie=True) if not movie.new_release: # if new_release was not set send a notification new_release_movies_span = datetime.now() - release_date new_release_movies.append(new_movie) elif release_date < datetime.now() + timedelta(days=14): local.set_recent_change_status(movie.id, True, movie=True) local.set_soon_release_status(movie.id, True, movie=True) if not movie.soon_release: # if soon_release was not set send a notification soon_release_movies_span = release_date - datetime.now() soon_release_movies.append(new_movie) # For movies we do not need to refetch the movie from the local db since the new data gets inserted by SQL UPDATE local.update_movie(movie, new_movie) def length_check(x): return len(x) > 0 count = length_check(new_release_movies) + length_check(new_release_series) + length_check( soon_release_movies) + length_check(soon_release_series) + length_check(out_of_production_series) if count == 0: return elif count == 1: if new_release_series: if len(new_release_series) == 1: # TRANSLATOR: {title} is the title of the series title = _("New release for {title}").format( title=new_release_series[0].title) # TRANSLATOR: {title} is the title of the series and {days} the number of days body = N_("A new episode of {title} was released {days} day ago.", "A new episode of {title} was released {days} days ago.", new_release_series_span.days).format(title=new_release_series[0].title, days=new_release_series_span.days) else: # TRANSLATOR: {num} is the number of TV Series title = _("New release for {num} TV series on your watchlist").format( num=len(new_release_series)) series = ", ".join(new.title for new in new_release_series) # TRANSLATOR: {series} is a list of TV series seperated by a comma body = _("The TV Series are {series}.").format( series=series) if soon_release_series: if len(soon_release_series) == 1: # TRANSLATOR: {title} is the title of the series with a new episode soon title = _("{title} will have a release soon").format( title=soon_release_series[0].title) # TRANSLATOR: {title} is the title of the series and {days} the number of days body = N_("A new episode will release in {days} day.", "A new episode will release in {days} days.", soon_release_series_span.days).format( title=soon_release_series[0].title, days=soon_release_series_span.days) else: # TRANSLATOR: {num} is the number of TV Series title = _("{num} TV Series on your watchlist will have a new episode soon").format( num=len(soon_release_series)) series = ", ".join( soon.title for soon in soon_release_series) # TRANSLATOR: {series} is a list of all series affected seperated by a comma body = _("The TV Series are {series}.").format( series=series) if out_of_production_series: if len(out_of_production_series) == 1: # TRANSLATOR: {title} is the title of the series that has gone out of production title = _("{title} has gone out of production").format( title=out_of_production_series[0].title) # TRANSLATOR: {title} is the title of the series that has gone out of production body = _("{title} has wrapped up its run. Now is the perfect time to revisit your favorite moments or find the next binge!") else: # TRANSLATOR: {num} is the number of TV Series title = _("{num} TV Series of your watchlist have gone out of production").format( num=len(out_of_production_series)) series = ", ".join( out.title for out in out_of_production_series) # TRANSLATOR: {series} is a list of all series affected seperated by a comma body = _("The TV Series are {series}.").format( series=series) if new_release_movies: if len(new_release_movies) == 1: # TRANSLATOR: {title} is the title of the movie that has had its release title = _("{title} has had its release!").format( title=new_release_movies[0].title) # TRANSLATOR: {title} is the title of the series and {days} the number of days body = N_("{title} was released {days} day ago.", "{title} was released {days} days ago.", new_release_movies_span.days).format( title=new_release_movies[0].title, days=new_release_movies_span.days) else: title = _("{num} movies on your watchlist have had their releases.").format( num=len(new_release_movies)) movies = ", ".join(new.title for new in new_release_movies) # TRANSLATOR: {movies} is a list of all movies affected seperated by a comma body = _("The movies are {movies}.").format(movies=movies) if soon_release_movies: if len(soon_release_movies) == 1: # TRANSLATOR: {title} is the title of the movie that will have its release soon title = _("{title} will have its release soon!").format( title=soon_release_movies[0].title) # TRANSLATOR: {title} is the title of the movie and {days} the number of days body = N_("{title} will have its release in {days} day.", "{title} will have its release in {days} days.", soon_release_movies_span.days).format( title=soon_release_movies[0].title, days=soon_release_movies_span.days) else: # TRANSLATOR: {num} is the number of movies title = _("{num} movies on your watchlist will have their releases soon") movies = ", ".join(soon.title for soon in soon_release_movies) # TRANSLATOR: {movies} will be list of all series affected seperated by a comma body = _("The movies are {movies}.").format(movies=movies) notification = Gio.Notification.new(title) notification.set_body(body) self.app.send_notification(None, notification) else: count_movies = len(new_release_movies) + len(soon_release_movies) count_series = len( new_release_series) + len(soon_release_series) + len(out_of_production_series) # TRANSLATOR: {num} is the number of affected items title = _("{num} items of your watchlist have an update").format( num=count_movies + count_series) if count_movies > 0 and count_series > 0: # TRANSLATOR: {count_movies} is the number of movies movie = N_("These updates affect {count_movies} movie", "These updates affect {count_movies} movies", count_movies) # TRANSLATOR: the connector between the two parts of the sentence (foo and bar) connector = _(" and ") # TRANSLATOR: {count_series} is the number of series series = N_(" {count_series} TV serie", " {count_series} TV series", count_series) body = f"{movie}{connector}{series}." elif count_movies > 0: # TRANSLATOR: {count_movies} is the number of movies body = N_("These updates affect {count_movies} movie", "These updates affect {count_movies} movies", count_movies) elif count_series > 0: # TRANSLATOR: {count_series} is the number of series body = N_("These updates affect {count_series} TV serie", "These updates affect {count_series} TV series", count_series) notification = Gio.Notification.new(title) notification.set_body(body) self.app.send_notification(None, notification) def _on_notification_list_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" self.refresh() logging.info('Automatic notification list update done') activity.end() def refresh(self) -> None: """ Refreshes the visible window. Args: None Returns: None """ if self._tab_stack.get_visible_child_name() == 'movies': self._tab_stack.get_child_by_name('movies').refresh_view() logging.info('Refreshed movies tab') self._needs_refresh = 'series' else: self._tab_stack.get_child_by_name('series').refresh_view() logging.info('Refreshed TV series tab') self._needs_refresh = 'movies' @Gtk.Template.Callback() def _on_searchentry_search_changed(self, user_data: GObject.GPointer | None) -> None: shared.schema.set_string('search-query', self._search_entry.get_text()) @Gtk.Template.Callback() def _on_search_btn_toggled(self, user_data: GObject.GPointer | None) -> None: shared.schema.set_boolean( 'search-enabled', self._show_search_btn.get_active()) shared.schema.set_string('search-query', '') def _on_search_mode_changed(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: if self._search_mode.get_selected() == 0: shared.schema.set_string('search-mode', 'title') elif self._search_mode.get_selected() == 1: shared.schema.set_string('search-mode', 'genre') elif self._search_mode.get_selected() == 2: shared.schema.set_string('search-mode', 'overview') elif self._search_mode.get_selected() == 3: shared.schema.set_string('search-mode', 'notes') elif self._search_mode.get_selected() == 4: shared.schema.set_string('search-mode', 'tmdb-id') ticketbooth-1.2.0/src/views/meson.build000066400000000000000000000006031501006415200201100ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) viewsdir = join_paths(pkgdatadir, 'src/views') sources = [ '__init__.py', 'main_view.py', 'first_run_view.py', 'db_update_view.py', 'content_view.py', ] install_data(sources, install_dir: viewsdir) ticketbooth-1.2.0/src/widgets/000077500000000000000000000000001501006415200162605ustar00rootroot00000000000000ticketbooth-1.2.0/src/widgets/__init__.py000066400000000000000000000001251501006415200203670ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later ticketbooth-1.2.0/src/widgets/background_activity_row.py000066400000000000000000000066121501006415200235610ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gi.repository import Adw, GObject, Gtk from .. import shared # type: ignore @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/background_activity_row.ui') class BackgroundActivityRow(Adw.Bin): """ This class represents a row in the BackgroundIndicator popover. Properties: title (str): a title activity_type (str): an activity type, name as in ActivityType completed (bool): indicates if the activity is completed Methods: None Signals: None """ __gtype_name__ = 'BackgroundActivityRow' title = GObject.Property(type=str, default='') activity_type = GObject.Property(type=str, default='') completed = GObject.Property(type=bool, default=False) has_error = GObject.Property(type=bool, default=False) _icon = Gtk.Template.Child() _progress_bar = Gtk.Template.Child() def __init__(self): super().__init__() self.connect('notify::completed', self._on_complete) @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Sets the icon based on the completion status and activity type, and starts the progress bar. Args: user_data (object or None): additional data passed to the callback Returns: None """ if not self.completed: match self.activity_type: case 'ADD': self._icon.set_from_icon_name('plus') case 'REMOVE': self._icon.set_from_icon_name('user-trash-symbolic') case 'UPDATE': self._icon.set_from_icon_name('update') GObject.timeout_add(500, self._on_timeout, None) else: if self.has_error: self._progress_bar.add_css_class('progress_error') self._icon.set_from_icon_name('warning') else: self._progress_bar.add_css_class('progress_complete') self._icon.set_from_icon_name('check-plain') self._progress_bar.set_fraction(1) def _on_timeout(self, user_data: object | None) -> bool: """ Callback for GObject.timeout_add. Pulses the progress bar. Args: user_data (object or None): additional data passed to the callback Returns: True if the timeout should be called again, False otherwise """ if not self.completed: self._progress_bar.pulse() return True else: return False def _on_complete(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for "notify::completed" signal. Sets the icon and progres bar to show a completed status, updates the background indicator. Args: pspec (GObject.ParamSpec): The GParamSpec of the property which changed user_data (object or None): additional data passed to the callback Returns: None """ self._icon.set_from_icon_name('check-plain') self._progress_bar.set_fraction(1) if self.get_ancestor(Adw.ApplicationWindow): self.get_ancestor(Adw.ApplicationWindow).activate_action( 'win.update-backgroud-indicator') ticketbooth-1.2.0/src/widgets/background_indicator.py000066400000000000000000000042231501006415200230060ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gi.repository import Adw, Gio, GObject, Gtk from .. import shared # type: ignore from ..background_queue import BackgroundQueue @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/background_indicator.ui') class BackgroundIndicator(Adw.Bin): """ This class represents the indicator for background activities. Properties: queue (Gio.ListStore): the queue Methods: refresh(): updates the icon button Signals: None """ __gtype_name__ = 'BackgroundIndicator' queue = GObject.Property(type=Gio.ListStore) _stack = Gtk.Template.Child() _model = Gtk.Template.Child() _image = Gtk.Template.Child() _spinner = Gtk.Template.Child() _list_view = Gtk.Template.Child() def __init__(self): super().__init__() self.queue = BackgroundQueue.get_queue() self._spinner.bind_property('visible', self._image, 'visible', GObject.BindingFlags.INVERT_BOOLEAN) self.queue.connect('notify::n-items', self._on_queue_change) def _on_queue_change(self, pspec: GObject.ParamSpec, user_data: object | None) -> None: """ Callback for "notify::n-items" signal. Updates the model and refreshes the indicator. Args: pspec (GObject.ParamSpec): The GParamSpec of the property which changed user_data (object or None): additional data passed to the callback Returns: None """ if self.queue.get_property('n-items') > 0: self._model.remove_all() for activity in self.queue: self._model.append(activity) self._stack.set_visible_child_name('filled') self.refresh() def refresh(self) -> None: """ Checks the activities and shows a spinner as the button icon if at least one activity is running. If all activities are completed, the icon is set to a check mark. Args: None Returns: None """ self._spinner.set_visible(not all(activity.completed for activity in self.queue)) ticketbooth-1.2.0/src/widgets/episode_row.py000066400000000000000000000273741501006415200211660ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gettext import gettext as _ from gettext import pgettext as C_ from gi.repository import Adw, Gio, GObject, Gtk import src.dialogs.edit_season_dialog as dialog from .. import shared # type: ignore from ..models.episode_model import EpisodeModel from ..pages.edit_episode_page import EditEpisodeNavigationPage from ..providers.local_provider import LocalProvider as local @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/episode_row.ui') class EpisodeRow(Adw.PreferencesRow): """ Widget that represents an episode inside the season expander row. Properties: title (str): episode title episode_number (int): episode number in a season runtime (int): episode runtime in minutes overview (str): episode overview still_uri (str): episode still image uri editable (bool): whether or not to show delete and edit buttons instead of the "watched" checkbutton show_controls (bool): whether or not to show the suffix widgets Methods: None Signals: toggled(active: bool): emited when the user toggles the checkbox """ __gtype_name__ = 'EpisodeRow' id = GObject.Property(type=str, default='') title = GObject.Property(type=str, default='') episode_number = GObject.Property(type=int, default=0) runtime = GObject.Property(type=int, default=0) overview = GObject.Property(type=str, default='') still_uri = GObject.Property(type=str, default='') editable = GObject.Property(type=bool, default=False) show_controls = GObject.Property(type=bool, default=True) watched = GObject.Property(type=bool, default=False) small_controls = GObject.Property(type=bool, default=False) __gsignals__ = { 'watched-clicked': (GObject.SIGNAL_RUN_FIRST, None, ()), } _still_picture = Gtk.Template.Child() _runtime_lbl = Gtk.Template.Child() _title_lbl = Gtk.Template.Child() _watched_btn = Gtk.Template.Child() def __init__(self, episode: EpisodeModel | None = None, id: str = '', title: str = '', episode_number: int = 0, runtime: int = 0, overview: str = '', still_uri: str = '', watched: bool = False, editable: bool = False, show_controls: bool = True, small_controls: bool = False): super().__init__() if episode: self.id = episode.id self.title = episode.title self.episode_number = episode.number self.runtime = episode.runtime self.overview = episode.overview self.still_uri = episode.still_path self.watched = episode.watched else: self.id = id self.title = title self.episode_number = episode_number self.runtime = runtime self.overview = overview self.still_uri = still_uri self.watched = watched self.editable = editable self.show_controls = show_controls self.small_controls = small_controls @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Sets the still image and title/runtime entries. Args: user_data (object or None): additional data passed to the callback Returns: None """ if not self.editable and self.show_controls: self.watched = local.get_episode_by_id( self.id).watched # type: ignore if self.small_controls: self._still_picture.set_visible(False) else: self._still_picture.set_file(Gio.File.new_for_uri(self.still_uri)) self._title_lbl.set_text(f'{self.episode_number}. {self.title}') self._runtime_lbl.set_text(self._format_runtime(self.runtime)) if self.small_controls: if self.watched: self._watched_btn.set_icon_name('check-plain') else: self._watched_btn.set_icon_name('watchlist') else: btn_content = Adw.ButtonContent() if self.watched: btn_content.set_label(_('Watched')) btn_content.set_icon_name('check-plain') else: btn_content.set_label(_('Mark as Watched')) btn_content.set_icon_name('watchlist') self._watched_btn.set_child(btn_content) @Gtk.Template.Callback('_on_watched_btn_clicked') def _on_watched_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Toggles the watched property of the associated episode in the db. The "watched-clicked" signal is emited after this callback is completed. Args: user_data (object or None): additional data passed to the callback Returns: None """ local.mark_watched_episode(self.id, not self.watched) self.watched = not self.watched if self.small_controls: if self.watched: self._watched_btn.set_icon_name('check-plain') else: self._watched_btn.set_icon_name('watchlist') else: btn_content = Adw.ButtonContent() if self.watched: btn_content.set_label(_('Watched')) btn_content.set_icon_name('check-plain') else: btn_content.set_label(_('Mark as Watched')) btn_content.set_icon_name('watchlist') self._watched_btn.set_child(btn_content) self.emit('watched-clicked') def _format_runtime(self, runtime: int) -> str: """ Formats the runtime in hours and minutes. Args: runtime (str): runtime in minutes Returns: formatted duration string in hours and minutes """ h, m = divmod(runtime, 60) if h > 0: # TRANSLATORS: {h} and {m} are the runtime hours and minutes respectively return _('{h}h {m}min').format(h=h, m=m) else: # TRANSLATORS: {m} is the runtime minutes return _('{m}min').format(m=m) @Gtk.Template.Callback('_on_edit_btn_clicked') def _on_edit_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Shows the "edit episode" page. Args: user_data (object or None): user data passed to the callback. Returns: None """ edit_episode_page = EditEpisodeNavigationPage(title=self.title, episode_number=self.episode_number, runtime=self.runtime, overview=self.overview, still_uri=self.still_uri, watched=self.watched) edit_episode_page.connect('edit-saved', self._on_episode_saved) self.get_ancestor(Adw.NavigationView).push(edit_episode_page) def _on_episode_saved(self, source: Gtk.Widget, title: str, episode_number: int, runtime: int, overview: str, still_uri: str, watched: bool) -> None: """ Callback for "edit-saved" signal. Appends the recieved data as a tuple in the episodes list after removing the changed one and updates the ui. Args: source (Gtk.Widget): caller widget title (str): episode title episode_number (int): episode number runtime (int): episode runtime in minutes overview (str): episode overview still_uri (str): episode still uri Returns: None """ parent = self.get_ancestor(dialog.EditSeasonDialog) old_episode = parent.get_episode(self.title, self.episode_number, self.runtime, self.overview, self.still_uri) parent._episodes.remove(old_episode) parent.update_episodes_ui() parent._episodes.append( (title, episode_number, runtime, overview, still_uri, watched)) parent.update_episodes_ui() @Gtk.Template.Callback('_on_delete_btn_clicked') def _on_delete_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Asks the user for a confirmation after a delete request. Args: user_data (object or None): additional data passed to the callback Returns: None """ # TRANSLATORS: {title} is the showed content's title dialog = Adw.AlertDialog.new( heading=C_('alert dialog heading', 'Delete {title}?').format( title=f'{self.episode_number}. {self.title}'), body=C_('alert dialog body', 'All changes to this episode will be lost.') ) dialog.add_response('cancel', C_('alert dialog action', '_Cancel')) dialog.add_response('delete', C_('alert dialog action', '_Delete')) dialog.set_default_response('delete') dialog.set_close_response('cancel') dialog.set_response_appearance( 'delete', Adw.ResponseAppearance.DESTRUCTIVE) dialog.choose(self, None, self._on_alert_dialog_choose, None) def _on_alert_dialog_choose(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the alert dialog. Finishes the async operation and retrieves the user response. If the later is positive, deletes the episode from the list and updates the ui. Args: source (Gtk.Widget): object that started the async operation result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): additional data passed to the callback Returns: None """ result = Adw.AlertDialog.choose_finish(source, result) if result == 'cancel': return parent = self.get_ancestor(dialog.EditSeasonDialog) old_episode = parent.get_episode(self.title, self.episode_number, self.runtime, self.overview, self.still_uri) parent._episodes.remove(old_episode) parent.update_episodes_ui() def set_watched_btn(self, watched: bool) -> None: """ Updates the watched button label and icon. Args: watched (bool): status to set Returns: None """ if self.small_controls: if watched: self._watched_btn.set_icon_name('check-plain') else: self._watched_btn.set_icon_name('watchlist') else: btn_content = Adw.ButtonContent() if watched: btn_content.set_label(_('Watched')) btn_content.set_icon_name('check-plain') else: btn_content.set_label(_('Mark as Watched')) btn_content.set_icon_name('watchlist') self._watched_btn.set_child(btn_content) ticketbooth-1.2.0/src/widgets/image_selector.py000066400000000000000000000112441501006415200216160ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gi.repository import Adw, Gio, GLib, GObject, Gtk from .. import shared # type: ignore @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/image_selector.ui') class ImageSelector(Adw.Bin): """ This class represents the image selector and previewer with options to open a file and, if one is already opened, to delete the selection. Properties: content-fit (Gtk.ContentFit): content fit for the image Methods: set_file(file: Gio.File): sets the shown file get_uri(): gets the uri for the shown file Signals: None """ __gtype_name__ = 'ImageSelector' content_fit = GObject.Property(type=Gtk.ContentFit, default=Gtk.ContentFit.FILL) shown_image = GObject.Property(type=str, default=f'resource://{shared.PREFIX}/blank_poster.jpg') blank_image = GObject.Property(type=str, default=f'resource://{shared.PREFIX}/blank_poster.jpg') _poster_picture = Gtk.Template.Child() _edit_btn = Gtk.Template.Child() _spinner = Gtk.Template.Child() _delete_revealer = Gtk.Template.Child() def __init__(self): super().__init__() @Gtk.Template.Callback('_on_map') def _on_map(self, user_data): self._poster_picture.set_file(Gio.File.new_for_uri(self.shown_image)) @Gtk.Template.Callback('_on_edit_btn_clicked') def _on_edit_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Setups and shows a file chooser dialog to choose a new image. Args: user_data (object or None): additional data passed to the callback Returns: None """ self._edit_btn.set_sensitive(False) self._spinner.set_visible(True) file_filter_store = Gio.ListStore.new(Gtk.FileFilter) file_filter = Gtk.FileFilter() file_filter.add_pixbuf_formats() file_filter_store.append(file_filter) self.dialog = Gtk.FileDialog.new() self.dialog.set_modal(True) self.dialog.set_filters(file_filter_store) self.dialog.open(self.get_ancestor(Gtk.Window), None, self._on_file_open_complete, None) def _on_file_open_complete(self, source: Gtk.Widget, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the file dialog. Finishes the file selection and, if successfull, shows the new selected image. Args: source (Gtk.Widget): caller widget result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): additional data passed to the callback Returns: None """ try: poster_file = self.dialog.open_finish(result) except GLib.GError: poster_file = None if poster_file: self.shown_image = poster_file.get_uri() self._poster_picture.set_file(poster_file) self._delete_revealer.set_reveal_child(True) self._spinner.set_visible(False) self._edit_btn.set_sensitive(True) @Gtk.Template.Callback('_on_delete_btn_clicked') def _on_delete_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Restores the blank image and hides the delete button. Args: user_data (object or None): additional data passed to the callback Returns: None """ self.shown_image = self.blank_image self._poster_picture.set_file(Gio.File.new_for_uri(self.shown_image)) self._delete_revealer.set_reveal_child(False) def set_blank_image(self, image_uri: str) -> None: """ Sets the blank image and shows it. Args: image_uri (str): uri to use Returns: None """ self.blank_image = image_uri self.shown_image = self.blank_image self._poster_picture.set_file(Gio.File.new_for_uri(self.shown_image)) def set_image(self, image_uri: str) -> None: """ Sets the image. Args: image_uri (str): uri to use Returns: None """ self.shown_image = image_uri self._poster_picture.set_file(Gio.File.new_for_uri(self.shown_image)) self._delete_revealer.set_reveal_child(True) def get_uri(self) -> str: """ Returns the shown image uri. Args: None Returns: string with the uri """ return self._poster_picture.get_file().get_uri() ticketbooth-1.2.0/src/widgets/meson.build000066400000000000000000000007731501006415200204310ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) widgetsdir = join_paths(pkgdatadir, 'src/widgets') sources = [ '__init__.py', 'theme_switcher.py', 'poster_button.py', 'search_result_row.py', 'episode_row.py', 'image_selector.py', 'season_expander.py', 'background_indicator.py', 'background_activity_row.py', ] install_data(sources, install_dir: widgetsdir) ticketbooth-1.2.0/src/widgets/poster_button.py000066400000000000000000000102761501006415200215470ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gi.repository import Gio, GObject, Gtk from pathlib import Path from .. import shared # type: ignore from ..models.movie_model import MovieModel from ..models.series_model import SeriesModel @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/poster_button.ui') class PosterButton(Gtk.Box): """ Widget shown in the main view with poster, title, and release year. Properties: title (str): content's title year (str): content's release year tmdb_id (str): content's tmdb id poster_path (str): content's poster uri Methods: None Signals: clicked(content: MovieModel or SeriesModel): emited when the user clicks on the widget """ __gtype_name__ = 'PosterButton' _poster_box = Gtk.Template.Child() _picture = Gtk.Template.Child() _spinner = Gtk.Template.Child() _year_lbl = Gtk.Template.Child() _status_lbl = Gtk.Template.Child() _watched_lbl = Gtk.Template.Child() _new_release_badge = Gtk.Template.Child() _soon_release_badge = Gtk.Template.Child() _watched_badge = Gtk.Template.Child() # Properties title = GObject.Property(type=str, default='') year = GObject.Property(type=str, default='') status = GObject.Property(type=str, default='') tmdb_id = GObject.Property(type=str, default='') poster_path = GObject.Property(type=str, default='') watched = GObject.Property(type=bool, default=False) content = GObject.Property(type=object, default=None) __gsignals__ = { 'clicked': (GObject.SIGNAL_RUN_FIRST, None, (object,)), } def __init__(self, content: MovieModel | SeriesModel): super().__init__() self.activate_notification = content.activate_notification self.title = content.title self.badge_color_light = content.color self.year = content.release_date[0:4] if content.release_date else None self.tmdb_id = content.id self.poster_path = content.poster_path self.watched = content.watched self.status = content.status self.new_release = content.new_release self.soon_release = content.soon_release self.recent_change = content.recent_change self.content = content @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for the 'map' signal. Sets images and hides release year label if not present. Args: user_data (object or None): data passed to the callback Returns: None """ self._picture.set_file(Gio.File.new_for_uri(self.poster_path)) self._spinner.set_visible(False) badge_visible = False if self.activate_notification: if self.recent_change: self._poster_box.add_css_class("pulse") self._picture.add_css_class("shadow") if self.new_release: self._new_release_badge.set_visible(True) badge_visible = True if self.badge_color_light: self._new_release_badge.add_css_class("light") else: self._new_release_badge.add_css_class("dark") elif self.soon_release: self._soon_release_badge.set_visible(True) badge_visible = True if self.badge_color_light: self._soon_release_badge.add_css_class("light") else: self._soon_release_badge.add_css_class("dark") if not self.year: self._year_lbl.set_visible(False) if self.status == '': self._status_lbl.set_visible(False) if self.watched and not badge_visible: self._watched_badge.set_visible(True) if self.badge_color_light: self._watched_badge.add_css_class("light") else: self._watched_badge.add_css_class("dark") @Gtk.Template.Callback('_on_poster_btn_clicked') def _on_poster_btn_clicked(self, user_data: object | None) -> None: self.emit('clicked', self.content) ticketbooth-1.2.0/src/widgets/search_result_row.py000066400000000000000000000217501501006415200223710ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import glob import logging from gettext import gettext as _ from gettext import pgettext as C_ import requests from gi.repository import Adw, Gio, GLib, GObject, Gtk from .. import shared # type: ignore from ..background_queue import (ActivityType, BackgroundActivity, BackgroundQueue) from ..providers.local_provider import LocalProvider as local @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/search_result_row.ui') class SearchResultRow(Gtk.ListBoxRow): """ Widget used to show a search result from TMDB in the search window. Properties: title (str): a title year (str): a release year description (str): a description poster_path (str): an API endpoint for a poster tmdb_id (int): a TMDB id media_type (str): a media type year_visible (bool): whether or not to show the release year Methods: None Signals: None """ __gtype_name__ = 'SearchResultRow' _poster_picture = Gtk.Template.Child() _poster_spinner = Gtk.Template.Child() _media_type_lbl = Gtk.Template.Child() _add_btn = Gtk.Template.Child() _add_spinner = Gtk.Template.Child() tmdb_id = GObject.Property(type=int, default=0) title = GObject.Property(type=str, default='') year = GObject.Property(type=str, default='') description = GObject.Property(type=str, default='') poster_path = GObject.Property(type=str, default='') media_type = GObject.Property(type=str, default='') year_visible = GObject.Property(type=bool, default=False) def __init__(self): super().__init__() @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for the "map" signal. Sets the visibility of the release year, the media type label and the poster to show. Additionally calls method in another thread to check if the content is already in db. Args: user_data (object or None): user data passed to the callback Returns: None """ logging.debug( f'Result row for [{"movie" if self.media_type == "movie" else "TV series"}] {self.title}, {self.year} ({self.poster_path})') if self.year: self.year_visible = True if self.media_type == 'movie': self._media_type_lbl.set_label(C_('Category', 'Movie')) else: self._media_type_lbl.set_label(C_('Category', 'TV Series')) self._poster_spinner.set_visible(True) self._poster_picture.set_file(self._get_poster_file()) self._check_in_db() def _check_in_db(self) -> None: """ Checks if the content is already in db and disables the 'add' button. Args: thread_data (object or None): data passed to the thread Returns: None """ if local.get_movie_by_id(self.tmdb_id) or local.get_series_by_id(self.tmdb_id): self._add_btn.set_label(_('Already in your watchlist')) self._add_btn.set_icon_name('check-plain') self._add_btn.set_sensitive(False) def _get_poster_file(self) -> None | Gio.File: """ Get the associated poster image. Files can be retrieved from Internet or from local storage if already downloaded in the past. In case no image is found, a blank poster will be returned. The retrieval is done asynchronously. Args: None Returns: None or a Gio.File containing an image """ if self.poster_path: Gio.Task.new(self, None, self._on_get_poster_done, None).run_in_thread(self._get_poster_thread) else: self._poster_spinner.set_visible(False) return Gio.File.new_for_uri(f'resource://{shared.PREFIX}/blank_poster.jpg') def _on_get_poster_done(self, source_widget: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the async poster retrieval. Hides the spinner and shows the poster. Args: source (GObject.Object or None): the object the asynchronous operation was started with. result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): user data passed to the callback Returns: None """ poster = self._get_poster_file_finish(result, self) self._poster_spinner.set_visible(False) self._poster_picture.set_file(poster) @Gtk.Template.Callback('_on_add_btn_clicked') def _on_add_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Adds a background activity to add content to the local db. Args: user_data (object or None): user data passed to the callback Returns: None """ logging.info( f'Clicked result for [{"movie" if self.media_type == "movie" else "TV series"}] {self.title}, {self.year}') self._add_spinner.set_visible(True) self._add_btn.set_sensitive(False) BackgroundQueue.add( activity=BackgroundActivity( activity_type=ActivityType.ADD, title=C_('Background activity title', 'Add {title}').format(title=self.title), task_function=self._add_content_to_db), on_done=self._on_add_done) def _add_content_to_db(self, activity: BackgroundActivity) -> None: """ Adds the associated title to the corresponding table in the db. Disables the 'add' button when done. Args: activity (BackgroundActivity): the calling activity Returns: None """ try: local.add_content(id=self.tmdb_id, media_type=self.media_type) except ConnectionError: activity.set_error(True) def _on_add_done(self, source: GObject.Object, result: Gio.AsyncResult, cancellable: Gio.Cancellable, activity: BackgroundActivity): """Callback to complete async activity""" activity.activity_finish(result, self) self._add_btn.set_label(_('Already in your watchlist')) self._add_btn.set_icon_name('check-plain') self._add_spinner.set_visible(False) # Try getting root window and refreshing. If root is gone, use application instance if self.get_root(): self.get_root().activate_action('win.refresh', None) else: app = Gio.Application.get_default() if app: app.props.active_window.activate_action('win.refresh') activity.end() def _get_poster_thread(self, task: Gio.Task, source_object: GObject.Object, task_data: object | None, cancelable: Gio.Cancellable | None) -> None: """ Wraper around a blocking function to run it as a non-blocking. Args: task (Gio.Task): the Gio.Task source_object (GObject.Object): task's source object task_data (object or None): task's task data cancellable (Gio.Cancellable or None): task's Gio.Cancellable, or None Returns: None """ if task.return_error_if_cancelled(): return outcome = self._get_poster() task.return_value(outcome) def _get_poster(self) -> Gio.File: """ Returns the poster file from cached data, downloading it if necessary. Args: None Returns: Gio.File containing the poster """ files = glob.glob( f'{self.poster_path[1:-4]}.jpg', root_dir=shared.cache_dir) if files: logging.debug( f'{self.poster_path}, cache hit: {shared.cache_dir}/{files[0]}') return Gio.File.new_for_path(f'{shared.cache_dir}/{files[0]}') else: url = f'https://image.tmdb.org/t/p/w500{self.poster_path}' r = requests.get(url) if r.status_code == 200: with open(f'{shared.cache_dir}{self.poster_path}', 'wb') as f: f.write(r.content) logging.debug( f'{self.poster_path}, downloaded to {shared.cache_dir}{self.poster_path}') return Gio.File.new_for_path(f'{shared.cache_dir}{self.poster_path}') def _get_poster_file_finish(self, result: Gio.AsyncResult, caller: GObject.Object) -> int | Gio.File: """ Finishes the async operation returning the value. Args: result: a Gio.AsyncResult caller: the caller of the task Returns: int or Gio.File """ if not Gio.Task.is_valid(result, caller): return -1 return result.propagate_value().value ticketbooth-1.2.0/src/widgets/season_expander.py000066400000000000000000000135111501006415200220110ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later from gettext import gettext as _ from gettext import pgettext as C_ from typing import List from gi.repository import Adw, Gio, GObject, Gtk import src.dialogs.add_manual_dialog as dialog from .. import shared # type: ignore from ..dialogs.edit_season_dialog import EditSeasonDialog from ..widgets.episode_row import EpisodeRow @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/season_expander.ui') class SeasonExpander(Adw.ExpanderRow): """ This class represents a season in the manual add window. Properties: season_title (str): season title poster_uri (str): season poster uri Methods: None Signals: None """ __gtype_name__ = 'SeasonExpander' season_title = GObject.Property(type=str) poster_uri = GObject.Property(type=str) episodes = GObject.Property(type=object) _poster = Gtk.Template.Child() def __init__(self, season_title: str = _('Season'), poster_uri: str = f'resource://{shared.PREFIX}/blank_poster.jpg', episodes: List | None = None): super().__init__() self.season_title = season_title self.poster_uri = poster_uri self.episodes = episodes if episodes else [] @Gtk.Template.Callback('_on_map') def _on_map(self, user_data: object | None) -> None: """ Callback for "map" signal. Sets the poster image and populates the episode data. Args: user_data (object or None): user data passed to the callback. Returns: None """ self._poster.set_file(Gio.File.new_for_uri(self.poster_uri)) for episode in self.episodes: self.add_row(EpisodeRow(title=episode[0], episode_number=episode[1], runtime=episode[2], overview=episode[3], still_uri=episode[4], watched=episode[5], show_controls=False) ) @Gtk.Template.Callback('_on_edit_btn_clicked') def _on_edit_btn_clicked(self, user_data: object | None) -> None: """ Callback for "clicked" signal. Shows the "edit season" window. Args: user_data (object or None): user data passed to the callback. Returns: None """ dialog = EditSeasonDialog(self.get_ancestor(Gtk.Window), title=self.season_title, poster_uri=self.poster_uri, episodes=self.episodes) dialog.connect('edit-saved', self._on_edit_saved) dialog.present() def _on_edit_saved(self, source: Gtk.Widget, title: str, poster_uri: str, episodes: List[tuple]) -> None: """ Callback for "edit-saved" signal. Appends the recieved data as a tuple in the seasons list after removing the changed one and updates the ui. Args: source (Gtk.Widget): caller widget title (str): season title poster_uri (str): season poster uri episodes (List[tuple]): episodes in season Returns: None """ parent_dialog = self.get_ancestor(dialog.AddManualDialog) old_season = parent_dialog.get_season(self.season_title, self.poster_uri, self.episodes) parent_dialog.seasons.remove(old_season) parent_dialog.seasons.append((title, poster_uri, episodes)) parent_dialog.update_seasons_ui() @Gtk.Template.Callback('_on_delete_btn_clicked') def _on_delete_btn_clicked(self, user_data: object | None) -> None: """ Callback for the "clicked" signal. Asks the user for a confirmation after a delete request. Args: user_data (object or None): additional data passed to the callback Returns: None """ # TRANSLATORS: {title} is the showed content's title dialog = Adw.AlertDialog.new( heading=C_('alert dialog heading', 'Delete {title}?').format( title=self.season_title), body=C_('alert dialog body', 'This season contains unsaved metadata.') ) dialog.add_response('cancel', C_('alert dialog action', '_Cancel')) dialog.add_response('delete', C_('alert dialog action', '_Delete')) dialog.set_default_response('delete') dialog.set_close_response('cancel') dialog.set_response_appearance( 'delete', Adw.ResponseAppearance.DESTRUCTIVE) dialog.choose(self, None, self._on_alert_dialog_choose, None) def _on_alert_dialog_choose(self, source: GObject.Object | None, result: Gio.AsyncResult, user_data: object | None) -> None: """ Callback for the alert dialog. Finishes the async operation and retrieves the user response. If the later is positive, delete the content from the db. Args: source (Gtk.Widget): object that started the async operation result (Gio.AsyncResult): a Gio.AsyncResult user_data (object or None): additional data passed to the callback Returns: None """ result = Adw.AlertDialog.choose_finish(source, result) if result == 'cancel': return parent_dialog = self.get_ancestor(dialog.AddManualDialog) old_season = parent_dialog.get_season( self.season_title, self.poster_uri, self.episodes) parent_dialog.seasons.remove(old_season) parent_dialog.update_seasons_ui() ticketbooth-1.2.0/src/widgets/theme_switcher.py000066400000000000000000000053071501006415200216510ustar00rootroot00000000000000# Code modified from https://gitlab.gnome.org/tijder/blueprintgtk # Original header below # --------------------- # # Copyright 2020 Manuel Genovés # Copyright 2022 Mufeed Ali # Copyright 2022 Rafael Mardojai CM # SPDX-License-Identifier: GPL-3.0-or-later # # Code modified from Apostrophe # https://github.com/dialect-app/dialect/blob/c0b7ca0580d4c7cfb32ff7ed0a3a08c06bbe40e0/dialect/theme_switcher.py from gi.repository import Adw, Gdk, Gio, GObject, Gtk from .. import shared # type: ignore @Gtk.Template(resource_path=shared.PREFIX + '/ui/widgets/theme_switcher.ui') class ThemeSwitcher(Gtk.Box): __gtype_name__ = 'ThemeSwitcher' __gsignals__ = { 'themer-clicked': (GObject.SIGNAL_RUN_FIRST, None, ()), } show_system = GObject.property(type=bool, default=True) color_scheme = 'light' system = Gtk.Template.Child() light = Gtk.Template.Child() dark = Gtk.Template.Child() @GObject.Property(type=str) def selected_color_scheme(self): # type: ignore """Read-write integer property.""" return self.color_scheme @selected_color_scheme.setter def set_selected_color_scheme(self, color_scheme): self.color_scheme = color_scheme if color_scheme == 'auto': self.system.set_active(True) self.style_manager.set_color_scheme(Adw.ColorScheme.PREFER_LIGHT) if color_scheme == 'light': self.light.set_active(True) self.style_manager.set_color_scheme(Adw.ColorScheme.FORCE_LIGHT) if color_scheme == 'dark': self.dark.set_active(True) self.style_manager.set_color_scheme(Adw.ColorScheme.FORCE_DARK) def __init__(self, **kwargs): super().__init__(**kwargs) self.style_manager = Adw.StyleManager.get_default() self.style_manager.bind_property( 'system-supports-color-schemes', self, 'show_system', GObject.BindingFlags.SYNC_CREATE ) self.selected_color_scheme = shared.schema.get_string('style-scheme') @Gtk.Template.Callback() def _on_color_scheme_changed(self, _widget, _paramspec): if self.system.get_active(): self.selected_color_scheme = 'auto' # type: ignore shared.schema.set_string('style-scheme', 'auto') if self.light.get_active(): self.selected_color_scheme = 'light' # type: ignore shared.schema.set_string('style-scheme', 'light') if self.dark.get_active(): self.selected_color_scheme = 'dark' # type: ignore shared.schema.set_string('style-scheme', 'dark') # emit signal so we can change the background of details page if needed self.emit('themer-clicked') ticketbooth-1.2.0/src/window.py000066400000000000000000000266431501006415200165060ustar00rootroot00000000000000# Copyright (C) 2023 Alessandro Iepure # # SPDX-License-Identifier: GPL-3.0-or-later import glob import logging import os from gettext import gettext as _ from gettext import pgettext as C_ from gi.repository import Adw, Gio, GLib, Gtk from . import shared # type: ignore from .background_queue import BackgroundQueue from .dialogs.add_manual_dialog import AddManualDialog from .dialogs.add_tmdb_dialog import AddTMDBDialog from .views.first_run_view import FirstRunView from .views.db_update_view import DbUpdateView from .views.main_view import MainView from .providers.local_provider import LocalProvider as local @Gtk.Template(resource_path=shared.PREFIX + '/ui/window.ui') class TicketboothWindow(Adw.ApplicationWindow): """ This class reppresents the main application window. Properties: None Methods: None Signals: None """ __gtype_name__ = 'TicketboothWindow' _win_stack = Gtk.Template.Child() def _sort_on_changed(self, new_state: str, source: Gtk.Widget) -> None: """ Callback for the win.view-sorting action Args: new_state (str): new selected state source (Gtk.Widget): widget that caused the activation Returns: None """ self.set_state(new_state) logging.debug(f'Sort: {new_state}') shared.schema.set_string('view-sorting', str(new_state)[1:-1]) def _add_tmdb(self, new_state: None, source: Gtk.Widget) -> None: """ Callback for the win.add-tmdb action Args: new_state (None): stateless action, always None Returns: None """ dialog = AddTMDBDialog() logging.info('Add from TMDB dialog open') dialog.present(source) def _add_manual(self, new_state: None, source: Gtk.Widget) -> None: """ Callback for the win.add-manual action Args: new_state (None): stateless action, always None Returns: None """ dialog = AddManualDialog() logging.info('Add manual dialog open') dialog.present(source) def _refresh(self, new_state: None, source: Gtk.Widget) -> None: """ Callback for the win.refresh action Args: new_state (None): stateless action, always None source (Gtk.Widget): widget that caused the activation Returns: None """ logging.info('Refresh requested') source._win_stack.get_child_by_name('main').refresh() def _update_background_indicator(self, new_state: None, source: Gtk.Widget) -> None: """ Callback for the win.update-background-indicator Args: new_state (None): stateless action, always None source (Gtk.Widget): widget that caused the activation Returns: None """ source._win_stack.get_child_by_name( 'main')._background_indicator.refresh() def _unwatched_first_changed(self, new_state: GLib.Variant, source: Gtk.Widget) -> None: """ Callback for the win.unwatched-first action Args: new_state (bool): new selected state source (Gtk.Widget): widget that caused the activation Returns: None """ logging.debug(f'Sort unwatched first: {new_state.get_boolean()}') shared.schema.set_boolean('unwatched-first', new_state.get_boolean()) self.set_state(new_state) def _separate_watched_changed(self, new_state: GLib.Variant, source: Gtk.Widget) -> None: """ Callback for the win.separate-watched action Args: new_state (bool): new selected state source (Gtk.Widget): widget that caused the activation Returns: None """ logging.debug(f'Separate watched: {new_state.get_boolean()}') shared.schema.set_boolean('separate-watched', new_state.get_boolean()) self.set_state(new_state) def _hide_watched_changed(self, new_state: GLib.Variant, source: Gtk.Widget) -> None: """ Callback for the win.hide-watched action Args: new_state (bool): new selected state source (Gtk.Widget): widget that caused the activation Returns: None """ logging.debug(f'Hide watched: {new_state.get_boolean()}') shared.schema.set_boolean('hide-watched', new_state.get_boolean()) self.set_state(new_state) def _search(self, new_state: GLib.Variant, source: Gtk.Widget) -> None: """ Callback for the win.search action Args: new_state (bool): new selected state source (Gtk.Widget): widget that caused the activation Returns: None """ logging.debug(f'Search: {new_state.get_boolean()}') shared.schema.set_boolean('search-enabled', new_state.get_boolean()) self.set_state(new_state) _actions = { ('view-sorting', None, 's', f"'{shared.schema.get_string('view-sorting')}'", _sort_on_changed), ('separate-watched', None, None, 'true' if shared.schema.get_boolean( 'separate-watched') else 'false', _separate_watched_changed), ('hide-watched', None, None, 'true' if shared.schema.get_boolean('hide-watched') else 'false', _hide_watched_changed), ('add-tmdb', _add_tmdb), ('add-manual', _add_manual), ('refresh', _refresh), ('update-backgroud-indicator', _update_background_indicator), ('search', None, None, 'true' if shared.schema.get_boolean('search-enabled') else 'false', _search), } def __init__(self, **kwargs): super().__init__(**kwargs) self.add_action_entries(self._actions, self) self._restore_state() self.app = kwargs.get("application") if shared.DEBUG: self.add_css_class('devel') shared.schema.bind('offline-mode', self.lookup_action('add-tmdb'), 'enabled', Gio.SettingsBindFlags.INVERT_BOOLEAN) shared.schema.bind('separate-watched', self.lookup_action('hide-watched'), 'enabled', Gio.SettingsBindFlags.INVERT_BOOLEAN) if shared.schema.get_boolean('onboard-complete'): Gio.NetworkMonitor.get_default().connect( 'network-changed', self._on_network_changed) @Gtk.Template.Callback('_on_close_request') def _on_close_request(self, user_data: object | None) -> bool: """ Callback for "close-request" signal. Checks for background activities to prevent quiting and corruption, deletes cached data if enabled in settings. Args: user_data (object or None): additional data passed to the callback Returns: True to block quiting, False to allow it """ logging.info('Close requested') # Background activities if not all(activity.completed for activity in BackgroundQueue.get_queue()): dialog = Adw.AlertDialog.new( heading=C_('message dialog heading', 'Background Activies Running'), body=C_('message dialog body', 'Some activities are running in the background and need to be completed before exiting. Look for the indicator in the header bar to check when they are finished.') ) dialog.add_response('ok', C_('alert dialog action', '_OK')) dialog.choose(self, None, None, None) logging.error('Close inhibited, running activities in background') return True # Cache if shared.schema.get_boolean('exit-remove-cache'): files = glob.glob('*.jpg', root_dir=shared.cache_dir) for file in files: os.remove(shared.cache_dir / file) logging.info('Cache deleted') # recent_change reset local.reset_recent_change() logging.info('recent_change reseted') logging.info('Closing') return False @Gtk.Template.Callback('_on_map') def _on_map(self, widget: Gtk.Widget) -> None: """ Callback for the "map" signal. Determines what view to show on startup. Args: widget (Gtk.Widget): the object which received the signal Returns: None """ is_first_run = shared.schema.get_boolean('first-run') logging.info(f'is first run: {is_first_run}') if is_first_run: logging.info('Start first run setup') self.first_run_view = FirstRunView() self._win_stack.add_named(child=self.first_run_view, name='first-run') self._win_stack.set_visible_child_name('first-run') self.first_run_view.connect('exit', self._on_first_run_exit) shared.schema.set_boolean('db-needs-update', False) return db_needs_update = shared.schema.get_boolean('db-needs-update') if db_needs_update: logging.info('Start db update') self.db_update_view = DbUpdateView() self._win_stack.add_named(child=self.db_update_view, name='db-update') self._win_stack.set_visible_child_name('db-update') self.db_update_view.connect('exit', self._on_db_update_exit) return self._win_stack.add_named(child=MainView(self), name='main') self._win_stack.set_visible_child_name('main') return def _on_network_changed(self, network_monitor: Gio.NetworkMonitor, network_available: bool) -> None: """ Callback for "network-changed" signal. If no network is available, it turns on offline mode. Args: network_monitor (Gio.NetworkMonitor): the NetworkMonitor in use network_available (bool): whether or not the network is available Returns: None """ logging.warning(f'Network changed, current status {network_available}') logging.warning(f'Offline mode: {not network_available}') shared.schema.set_boolean( 'offline-mode', GLib.Variant.new_boolean(not network_available)) def _on_first_run_exit(self, source: Gtk.Widget) -> None: """ Callback for the "exit" signal. Changes the visible view. Args: None Returns: None """ logging.info('First setup done') self._win_stack.add_named(child=MainView(self), name='main') self._win_stack.set_visible_child_name('main') def _on_db_update_exit(self, source: Gtk.Widget) -> None: """ Callback for the "exit" of the db_update task. Changes the visible view. Args: None Returns: None """ logging.info('Database Update done') self._win_stack.add_named(child=MainView(self), name='main') self._win_stack.set_visible_child_name('main') def _restore_state(self) -> None: """ Restores the last known state of the window between runs. Args: None Returns: None """ shared.schema.bind('win-width', self, 'default-width', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('win-height', self, 'default-height', Gio.SettingsBindFlags.DEFAULT) shared.schema.bind('win-maximized', self, 'maximized', Gio.SettingsBindFlags.DEFAULT) ticketbooth-1.2.0/ticketbooth.doap000066400000000000000000000037201501006415200172110ustar00rootroot00000000000000 Ticket Booth Keep track of your favorite shows Ticket Booth allows you to build your watchlist of movies and TV Shows, keep track of watched titles, and find information about the latest releases. Ticket Booth does not allow you to watch or download content. This app uses the TMDB API but is not endorsed or certified by TMDB. Python GTK 4 Libadwaita Alessandro Iepure aleiepure aleiepure