From 3c14b15c8770a1cafba705b8a486f1c3316a28c9 Mon Sep 17 00:00:00 2001 From: tmwgsicp <2589462900@qq.com> Date: Tue, 24 Feb 2026 10:22:59 +0800 Subject: [PATCH] init: wechat-download-api v1.0.0 Co-authored-by: Cursor --- .gitattributes | 14 + .gitignore | 62 +++ LICENSE | 661 ++++++++++++++++++++++++++++++++ README.md | 352 +++++++++++++++++ app.py | 145 +++++++ assets/dashboard.jpg | Bin 0 -> 93601 bytes assets/qrcode/.gitkeep | 3 + assets/qrcode/sponsor.jpg | Bin 0 -> 99284 bytes assets/qrcode/wechat.jpg | Bin 0 -> 253456 bytes env.example | 24 ++ requirements.txt | 5 + routes/__init__.py | 14 + routes/admin.py | 51 +++ routes/article.py | 172 +++++++++ routes/articles.py | 237 ++++++++++++ routes/health.py | 35 ++ routes/image.py | 71 ++++ routes/login.py | 599 +++++++++++++++++++++++++++++ routes/search.py | 110 ++++++ routes/stats.py | 45 +++ start.bat | 217 +++++++++++ start.sh | 545 +++++++++++++++++++++++++++ static/admin.html | 770 ++++++++++++++++++++++++++++++++++++++ static/login.html | 282 ++++++++++++++ static/verify.html | 245 ++++++++++++ status.sh | 118 ++++++ stop.sh | 68 ++++ utils/__init__.py | 30 ++ utils/auth_manager.py | 194 ++++++++++ utils/helpers.py | 229 ++++++++++++ utils/rate_limiter.py | 124 ++++++ utils/webhook.py | 114 ++++++ 32 files changed, 5536 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app.py create mode 100644 assets/dashboard.jpg create mode 100644 assets/qrcode/.gitkeep create mode 100644 assets/qrcode/sponsor.jpg create mode 100644 assets/qrcode/wechat.jpg create mode 100644 env.example create mode 100644 requirements.txt create mode 100644 routes/__init__.py create mode 100644 routes/admin.py create mode 100644 routes/article.py create mode 100644 routes/articles.py create mode 100644 routes/health.py create mode 100644 routes/image.py create mode 100644 routes/login.py create mode 100644 routes/search.py create mode 100644 routes/stats.py create mode 100644 start.bat create mode 100644 start.sh create mode 100644 static/admin.html create mode 100644 static/login.html create mode 100644 static/verify.html create mode 100644 status.sh create mode 100644 stop.sh create mode 100644 utils/__init__.py create mode 100644 utils/auth_manager.py create mode 100644 utils/helpers.py create mode 100644 utils/rate_limiter.py create mode 100644 utils/webhook.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..241480b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,14 @@ +# Default: auto-detect +* text=auto + +# Force LF for shell scripts +*.sh text eol=lf +*.py text eol=lf + +# Force CRLF for Windows scripts +*.bat text eol=crlf + +# Binary files +*.jpg binary +*.png binary +*.ico binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ee527b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual Environment +venv/ +env/ +ENV/ +env.bak/ +venv.bak/ + +# Environment Variables +.env +.env.local + +# IDE +.vscode/ +.idea/ +.cursor/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Test files +test_qr.png +*.log + +# QR codes (generated dynamically) +static/qrcodes/ + +# Temporary files +*.tmp +*.bak + +# Example output files +articles*.json +fetch_progress.json + +# Logs +logs/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..be3f7b2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 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. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are 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. + + 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. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + 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 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 work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero 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 Affero 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 Affero 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 Affero 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 Affero 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + 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 AGPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..02b8d13 --- /dev/null +++ b/README.md @@ -0,0 +1,352 @@ +
+ +# WeChat Download API + +### 微信公众号文章获取 API 服务 + +**扫码登录 | 文章抓取 | 公众号搜索 | 一键部署** + +[![GitHub stars](https://img.shields.io/github/stars/tmwgsicp/wechat-download-api?style=for-the-badge&logo=github)](https://github.com/tmwgsicp/wechat-download-api/stargazers) +[![License](https://img.shields.io/badge/License-AGPL%203.0-blue?style=for-the-badge)](LICENSE) +[![Python](https://img.shields.io/badge/Python-3.8+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) +[![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) + +
+ +--- + +## 功能特性 + +- **文章内容获取** — 通过 URL 获取文章完整内容(标题、作者、正文、图片) +- **文章列表** — 获取任意公众号历史文章列表,支持分页 +- **文章搜索** — 在指定公众号文章中按关键词搜索 +- **公众号搜索** — 搜索公众号并获取 FakeID +- **图片代理** — 代理微信 CDN 图片,解决防盗链问题 +- **扫码登录** — 微信公众平台扫码登录,凭证自动保存 +- **自动限频** — 内置三层限频机制(全局/IP/文章间隔),防止触发微信风控 +- **Webhook 通知** — 登录过期、触发验证等事件自动推送 +- **API 文档** — 自动生成 Swagger UI,在线调试所有接口 + +
+ 管理面板 +

管理面板 — 登录状态、接口文档、在线测试一站式管理

+
+ +--- + +## 使用前提 + +> 本工具需要通过微信公众平台后台的登录凭证来调用接口,因此使用前需要: + +1. **拥有一个微信公众号**(订阅号、服务号均可) +2. 部署并启动服务后,访问登录页面用**公众号管理员微信**扫码登录 +3. 登录成功后凭证自动保存到 `.env` 文件,有效期约 **4 天**,过期后需重新扫码 + +登录后即可通过 API 获取**任意公众号**的公开文章(不限于自己的公众号)。 + +--- + +## 快速开始 + +### 方式一:一键启动(推荐) + +**Windows:** +```bash +start.bat +``` + +**Linux / macOS:** +```bash +chmod +x start.sh +./start.sh +``` + +脚本会自动完成环境检查、虚拟环境创建、依赖安装和服务启动。 + +> Linux 生产环境可使用 `sudo bash start.sh` 自动配置 systemd 服务和开机自启。 + +### 方式二:手动安装 + +```bash +# 创建虚拟环境 +python -m venv venv +source venv/bin/activate # Linux/macOS +# venv\Scripts\activate # Windows + +# 安装依赖 +pip install -r requirements.txt + +# 启动 +python app.py +``` + +### 访问服务 + +| 地址 | 说明 | +|------|------| +| http://localhost:5000 | 管理面板 | +| http://localhost:5000/login.html | 扫码登录 | +| http://localhost:5000/api/docs | Swagger API 文档 | +| http://localhost:5000/api/health | 健康检查 | + +--- + +## API 接口 + +### 获取文章内容 + +`POST /api/article` — 解析微信公众号文章,返回标题、正文、图片等结构化数据 + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `url` | string | 是 | 微信文章链接(`https://mp.weixin.qq.com/s/...`) | + +请求示例: + +```bash +curl -X POST http://localhost:5000/api/article \ + -H "Content-Type: application/json" \ + -d '{"url": "https://mp.weixin.qq.com/s/xxxxx"}' +``` + +返回字段:`title` 标题、`content` HTML 正文、`plain_content` 纯文本正文、`author` 作者、`publish_time` 发布时间戳、`images` 图片列表 + +### 搜索公众号 + +`GET /api/public/searchbiz` — 按关键词搜索微信公众号,获取 FakeID + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `query` | string | 是 | 搜索关键词(公众号名称) | + +请求示例: + +```bash +curl "http://localhost:5000/api/public/searchbiz?query=公众号名称" +``` + +返回字段:`list[]` 公众号列表,每项包含 `fakeid`、`nickname`、`alias`、`round_head_img` + +### 获取文章列表 + +`GET /api/public/articles` — 获取指定公众号的文章列表,支持分页 + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `fakeid` | string | 是 | 目标公众号的 FakeID(从搜索接口获取) | +| `begin` | int | 否 | 偏移量,默认 `0` | +| `count` | int | 否 | 获取数量,默认 `10`,最大 `100` | +| `keyword` | string | 否 | 在该公众号内搜索关键词 | + +请求示例: + +```bash +# 获取前 50 篇 +curl "http://localhost:5000/api/public/articles?fakeid=YOUR_FAKEID&begin=0&count=50" + +# 获取第 51-100 篇 +curl "http://localhost:5000/api/public/articles?fakeid=YOUR_FAKEID&begin=50&count=50" +``` + +### 搜索公众号文章 + +`GET /api/public/articles/search` — 在指定公众号内按关键词搜索文章 + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `fakeid` | string | 是 | 目标公众号的 FakeID | +| `query` | string | 是 | 搜索关键词 | +| `begin` | int | 否 | 偏移量,默认 `0` | +| `count` | int | 否 | 获取数量,默认 `10`,最大 `100` | + +请求示例: + +```bash +curl "http://localhost:5000/api/public/articles/search?fakeid=YOUR_FAKEID&query=关键词" +``` + +### 其他接口 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/image?url=IMG_URL` | 图片代理(仅限微信 CDN 域名) | +| `GET` | `/api/health` | 健康检查 | +| `GET` | `/api/stats` | 限频统计 | +| `POST` | `/api/login/session/{id}` | 初始化登录会话 | +| `GET` | `/api/login/getqrcode` | 获取登录二维码 | +| `GET` | `/api/login/scan` | 检查扫码状态 | +| `POST` | `/api/login/bizlogin` | 完成登录 | +| `GET` | `/api/login/info` | 获取登录信息 | +| `GET` | `/api/admin/status` | 查询登录状态 | +| `POST` | `/api/admin/logout` | 退出登录 | + +完整的接口文档请访问 http://localhost:5000/api/docs + +--- + +## 配置说明 + +复制 `env.example` 为 `.env`,登录后凭证会自动保存: + +```bash +cp env.example .env +``` + +| 配置项 | 说明 | 默认值 | +|--------|------|--------| +| `WECHAT_TOKEN` | 微信 Token(登录后自动填充) | - | +| `WECHAT_COOKIE` | 微信 Cookie(登录后自动填充) | - | +| `WECHAT_FAKEID` | 公众号 FakeID(登录后自动填充) | - | +| `WEBHOOK_URL` | Webhook 通知地址(可选) | 空 | +| `RATE_LIMIT_GLOBAL` | 全局每分钟请求上限 | 10 | +| `RATE_LIMIT_PER_IP` | 单 IP 每分钟请求上限 | 5 | +| `RATE_LIMIT_ARTICLE_INTERVAL` | 文章请求最小间隔(秒) | 3 | +| `PORT` | 服务端口 | 5000 | + +--- + +## 项目结构 + +``` +├── app.py # FastAPI 主应用 +├── requirements.txt # Python 依赖 +├── env.example # 环境变量示例 +├── routes/ # API 路由 +│ ├── article.py # 文章内容获取 +│ ├── articles.py # 文章列表 +│ ├── search.py # 公众号搜索 +│ ├── login.py # 扫码登录 +│ ├── admin.py # 管理接口 +│ ├── image.py # 图片代理 +│ ├── health.py # 健康检查 +│ └── stats.py # 统计信息 +├── utils/ # 工具模块 +│ ├── auth_manager.py # 认证管理 +│ ├── helpers.py # HTML 解析 +│ ├── rate_limiter.py # 限频器 +│ └── webhook.py # Webhook 通知 +└── static/ # 前端页面 +``` + +--- + +## 常见问题 + +
+提示"服务器未登录" + +访问 http://localhost:5000/login.html 扫码登录,凭证会自动保存到 `.env`。 +
+ +
+触发微信风控 / 需要验证 + +1. 在浏览器中打开提示的文章 URL 完成验证 +2. 等待 30 分钟后重试 +3. 降低请求频率(系统已内置自动限频) +
+ +
+如何获取公众号的 FakeID + +调用搜索接口:`GET /api/public/searchbiz?query=公众号名称`,从返回结果的 `fakeid` 字段获取。 +
+ +
+Token 多久过期 + +Cookie 登录有效期约 4 天,过期后需重新扫码登录。配置 `WEBHOOK_URL` 可以在过期时收到通知。 +
+ +
+可以同时登录多个公众号吗 + +当前版本不支持多账号。建议部署多个实例,每个登录不同公众号。 +
+ +--- + +## 技术栈 + +| 层级 | 技术 | +|------|------| +| **Web 框架** | FastAPI | +| **ASGI 服务器** | Uvicorn | +| **HTTP 客户端** | HTTPX | +| **配置管理** | python-dotenv | +| **运行环境** | Python 3.8+ | + +--- + +## 开源协议 + +本项目采用 **AGPL 3.0** 协议开源。 + +| 使用场景 | 是否允许 | +|---------|---------| +| 个人学习和研究 | 允许,免费使用 | +| 企业内部使用 | 允许,免费使用 | +| 修改代码内部使用 | 允许,免费使用 | +| 修改后对外提供网络服务 | 需开源修改后的代码 | +| 集成到产品中销售 | 需开源或取得商业授权 | + +> **AGPL 3.0 核心要求**:修改代码并通过网络提供服务时,必须公开源代码。 + +详见 [LICENSE](LICENSE) 文件。 + +### 免责声明 + +- 本软件按"原样"提供,不提供任何形式的担保 +- 本项目仅供学习和研究目的,请遵守微信公众平台相关服务条款 +- 使用者对自己的操作承担全部责任 +- 因使用本软件导致的任何损失,开发者不承担责任 + +--- + +## 参与贡献 + +由于个人精力有限,目前**暂不接受 PR**,但非常欢迎: + +- **提交 Issue** — 报告 Bug、提出功能建议 +- **Fork 项目** — 自由修改和定制 +- **Star 支持** — 给项目点 Star,让更多人看到 + +--- + +## 联系方式 + + + + + + +
+
+ 个人微信
+ 技术交流 · 商务合作 +
+
+ 赞赏支持
+ 开源不易,感谢支持 +
+ +- **GitHub Issues**: [提交问题](https://github.com/tmwgsicp/wechat-download-api/issues) + +--- + +## 致谢 + +- [FastAPI](https://fastapi.tiangolo.com/) — 高性能 Python Web 框架 +- [HTTPX](https://www.python-httpx.org/) — 现代化 HTTP 客户端 + +--- + +
+ +**如果觉得项目有用,请给个 Star 支持一下!** + +[![Star History Chart](https://api.star-history.com/svg?repos=tmwgsicp/wechat-download-api&type=Date)](https://star-history.com/#tmwgsicp/wechat-download-api&Date) + +Made with ❤️ by [tmwgsicp](https://github.com/tmwgsicp) + +
diff --git a/app.py b/app.py new file mode 100644 index 0000000..7e706e8 --- /dev/null +++ b/app.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +微信公众号文章API服务 - FastAPI版本 +主应用文件 +""" + +from fastapi import FastAPI +from fastapi.staticfiles import StaticFiles +from fastapi.responses import FileResponse, JSONResponse, HTMLResponse +from fastapi.middleware.cors import CORSMiddleware +import os +from pathlib import Path + +# 导入路由 +from routes import article, articles, search, admin, login, image, health, stats + +API_DESCRIPTION = """ +微信公众号文章下载 API,支持文章解析、公众号搜索、文章列表获取等功能。 + +## 快速开始 + +1. 访问 `/login.html` 扫码登录微信公众号后台 +2. 调用 `GET /api/public/searchbiz?query=公众号名称` 搜索目标公众号 +3. 从返回结果中取 `fakeid`,调用 `GET /api/public/articles?fakeid=xxx` 获取文章列表 +4. 对每篇文章调用 `POST /api/article` 获取完整内容 + +## 认证说明 + +所有核心接口都需要先登录。登录后凭证自动保存到 `.env` 文件,服务重启后无需重新登录(有效期约 4 天)。 +""" + +app = FastAPI( + title="WeChat Download API", + description=API_DESCRIPTION, + version="1.0.0", + docs_url="/api/docs", + redoc_url=None, + openapi_url="/api/openapi.json", + license_info={ + "name": "AGPL-3.0", + "url": "https://www.gnu.org/licenses/agpl-3.0.html", + }, +) + +# CORS配置 +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# 注册路由(注意:articles.router 必须在 search.router 之前注册,避免路由冲突) +app.include_router(health.router, prefix="/api", tags=["健康检查"]) +app.include_router(stats.router, prefix="/api", tags=["统计信息"]) +app.include_router(article.router, prefix="/api", tags=["文章内容"]) +app.include_router(articles.router, prefix="/api/public", tags=["文章列表"]) # 必须先注册 +app.include_router(search.router, prefix="/api/public", tags=["公众号搜索"]) # 后注册 +app.include_router(admin.router, prefix="/api/admin", tags=["管理"]) +app.include_router(login.router, prefix="/api/login", tags=["登录"]) +app.include_router(image.router, prefix="/api", tags=["图片代理"]) + +# 静态文件 +static_dir = Path(__file__).parent / "static" +if static_dir.exists(): + app.mount("/static", StaticFiles(directory=str(static_dir)), name="static") + +@app.get("/api/redoc", include_in_schema=False) +async def redoc_html(): + """ReDoc 文档(使用 cdnjs 加速)""" + return HTMLResponse(""" + +WeChat Download API - ReDoc + + + + + + + +""") + +# 静态页面路由 +@app.get("/", include_in_schema=False) +async def root(): + """首页 - 重定向到管理页面""" + return FileResponse(static_dir / "admin.html") + +@app.get("/admin.html", include_in_schema=False) +async def admin_page(): + """管理页面""" + return FileResponse(static_dir / "admin.html") + +@app.get("/login.html", include_in_schema=False) +async def login_page(): + """登录页面""" + return FileResponse(static_dir / "login.html") + +@app.get("/verify.html", include_in_schema=False) +async def verify_page(): + """验证页面""" + return FileResponse(static_dir / "verify.html") + +# 启动事件 +@app.on_event("startup") +async def startup_event(): + """启动时检查配置""" + env_file = Path(__file__).parent / ".env" + if not env_file.exists(): + print("\n" + "=" * 60) + print("[WARNING] .env file not found") + print("=" * 60) + print("Please configure .env file or login via admin page") + print("Visit: http://localhost:5000/admin.html") + print("=" * 60 + "\n") + else: + print("\n" + "=" * 60) + print("[OK] .env file loaded") + print("=" * 60 + "\n") + +if __name__ == "__main__": + import uvicorn + + print("=" * 60) + print("Wechat Article API Service - FastAPI Version") + print("=" * 60) + print("Admin Page: http://localhost:5000/admin.html") + print("API Docs: http://localhost:5000/api/docs") + print("ReDoc Docs: http://localhost:5000/api/redoc") + print("First time? Please login via admin page") + print("=" * 60) + + uvicorn.run( + "app:app", + host="0.0.0.0", + port=5000, + reload=True, + log_level="info" + ) diff --git a/assets/dashboard.jpg b/assets/dashboard.jpg new file mode 100644 index 0000000000000000000000000000000000000000..daea658eab43f99be5a2acc96876213669b11304 GIT binary patch literal 93601 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

-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 z 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 IjyR#e06tLKy#N3J literal 0 HcmV?d00001 diff --git a/assets/qrcode/wechat.jpg b/assets/qrcode/wechat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb2c5d765857f90935f3114b5c4ceda4ea3b0a01 GIT binary patch literal 253456 zcmeFZcT`i|wl^FE=|wuyq7+eSg7g+EhzN*EFHr$$LPP{XAVHAc1Oyb6pfstWcL^N@ z={-mZMMOXnO4yLXx1Z-d_q_MM-x%+>=lkz|mv3^@;hK$sznbUYAxuto=dAaufz<^V-UzO-v51mq#K0cALoN@LR!HB-sP{B{_)N98UkSg|6{nItgMto_rL0N z$LJy1|M9!hg$vnq|GUNPWB<`2Ls2&Uf7BUeavA?|4%pb=#7IZ~k6#%7bHC|0|98LX z1pZ6E>HecNI`L!wyvuplf3){s`h7HYGy{1B^6f7=1|Iasjvb?Cpa+TJIKy9bobmYI z#P|lB9?#B-&Y?y#sD5HjK>-O`TKvnax@F}nfa&{!p#hF>;*lY1mqYu9X&VQ zQ77FeaM;KH?%-eS{+qylf*oUGW?^MJ0XarTPk)So{y5lQ@XX-9n9jg`oaeOCWkz1J z2TT&)e9AAAJ~B&Qsc7TBGfa@W`0!~c3#)*j&`DwGGcsq-omWv+Q`gYcx_a%pzQGN{ zn|JS-TUc6I+c-KoKXP$(bN6}X>-XG0;6>Q0@QBE$=$Pb`H>qjqZ{KBn%E`^kFZf(o zR9RJBQ(ITx(AeJ5+11_i^;_@A=-BwgJ!rQm-J z2mJg08V@%(o?{FQ^bAaYjfd{obFk2JGaNsy#K?2mjOl?luY~eTX1*&)A1m5eBro0} z@IQPy%qk$If|n-#HKe~s^xqp$=>Mk?{c}M79M2IB!cI>IJ}`Q22n<4_o&D4>DCpnR zJ_jMRd|X0^{1!MgNz9%3GQP6;BbHBqaIGoJP^`QtCPyj@l8d{!;T`Ms_17=VpphaV zYe3z*niW^KH+;~WkFPd*+vG1Yv=P3 zB=kD66UG8_J%XGxUBrsG3m#5J=2?5567b7Z?-vbRHkVIo)Od+gdTp|xff+>ur%c;0 z9R5%mE4IiT$vjS*$+KCrSw7Kq;adHTzU<2qTk>D7;9KCmSbf+77$C8_=|<+JXw?GG zKia!BCePSqVrx*34OyEld34z!^mfcMmCn8joH0B)qz* zOO#p@)M6}lEPT6Kh4srixyN!f7`@RwdsX5k`r>z?wOXuZtFwP6X;3H2%Jc_gEnD4+G~X{ki+;%CGezgqQcqyG-hP~ z+pY$GJWqEA>vHzfZ`C^v&xw+x`_vYSGrm+ykrl{az0wql()z7Y;}M^4C>>QF|0<4l zg@Y{lTq=aqQd@S<$O^FYwav`T8!yAF-!197$`j^w;iFIMQmtNUo(}=AGf81Pc&*sMumS}wh(NkXdaB-76FXJNP zuw=M>MR8Dz$-RosS7OD77wvjpQM716qqZi2X^r3G&yWW6m)<`$rLTFm3o*OS_n!;h z(J+m6KBBP5EkiuhyJX#x+j<(OKWeHoP|?Nbsyy&#%G{h@>OJH<75Na==9ZhR2uNW! z`K7KEb3xYqCF4+^zCZ#aDLO7Rmdzu`^?Cd}jbGUG2qHBRk#Yn%PEQT3*)*BIHbhhR zXWZWYb3KC1U&ko#n_RLc?sHTfLzU73L^;rsAV$oZr!lvIL!G0BW1R;@g8Zl{4}gkA zbZiS#nBADFG?9b$_S%}Lo`+WP%@QZKr^n8pe`yErQDiuRw8_HUv4A8z7KVUMbCI6K zE?{FQl1sCKmtroL%(*8&PV+xGZDU|XSUWS4FBkX3m7c2J&HS~@#f*pvdltBq_ZwG} zTKaXG{H`D#x;ikJ`WBkWgb-bdq09qGOIRFwfxU&7njNH&f$fAxV(?TM{S^EWB%<0? zK^3tnTM#E^H{Yk@WZNcq__cQTpbCCG=qWXZ#t8Pz+IfU_!Breu31||_WY^i|x!oL8 ztArz3RP4_iMafMBtIeCmdoI0u`;7rONDt+@&-IG~DHEi6Uk!-7r3s0%?-(ldrr3`g zaosn)Y#$uInU?1wkdyyCU0^3WS<~_U*Iymydpkmze;M#ob|^~VY`ukQQ>QV}1_fJ0 ziRh4BcpRFKcGA^b?~5D$dDgsHbA80fqPEr2C}Z{!7zJ z9rxYT8~82XA=`3t)xa)}J5|(jyJOLm7dZvx*D)h21CgX*;H3a|@i-9vv6se-CFG~) zdmJABO1?v_JQS)4_m^ynQhalz?`3F3tv{egUchYddlPqPtT3`0at6)32z)t$u%f#y zlHCr2GQuaa$O`Wk{YR|C%%A%4SVQTa9EYGh&;%kHkg1~zq9ReiJvSI71%At)eo?(+ zK8D6$OPp-)4>TbvL1oXB;7rt| z7Ja0?QBj;qm~XSRY}C*B+*4$<_(A{R_EZ9$Qk(jW-o~kO>0h z+Yuzuazl1^yB-xC*-4L|Xbh6cwe>iBTV78-^Df|2%-l9Y?!a%mN%p*fBT$GFknQu8;5XJ4i;FOg&^rfQUx-qXozpuhVf?#5@;fxpCpw6b;MpW{+@$&?FdD)05}ZL;r$Hd`7O|xx_q^R_`}9pF4-`o z-oBHg-mFQLD)Jjut)EJa#9u{@qAL_%sX(K}&yLoZ;XQ3^Cxg$GdTuHNeR(L|RA0mM zwf5~Jt8u?umv906JNlVq2V~!zcE#wkz2Rovk3q+Xs$DIqgq^O#XS~5h2qC*c-R5%J zHPn4BNBQQWL9vJHWMmf6>l^|E!v=i1T3TfkYtjzGofFdEC%MUh07 z-;*#xGDVhf$L&xiX3oc@#8&8zh)aFU;T%hTU78boPRLQZs!r$^9YD!Y-1tDgOt~;Y z5m|zUiSq(tpdsLNpL`)0MU$`T3EvZ{-gLY*uCgQjVYV)5IjKg@Hv2U+kkTQvu^629LLW93q|#T-(=&3F#WOoXs;dJ z(rT>h8wDv5HO?@J5Ev8o;Z}^+*u1Eo7;OSx%ha*181s#YxJQ_a#BT}t$KEB}S8^vM z&lWaUHk4P#cr;~RyB#X!6}AkCIe2KA04tYH+++h4j|epu=7o+y6N+*G%#z5B4NUm^ z{W}}gE=jXI8Xq(~Ln3-Ox{$lbvH5DuMgy4(i4#Ud?v}cbcCvXFyQ-tT^^kW0>URRmbu4G$)q^o8N5vD!u9kD4D8%|3wCZsIVeH70>76fv zX?6J}=TLlRUa^B2wwek#cNjIp-*c)BF%kDcT{B2PQADU-iMB4DasvcR?FF-^FCy?Gic9G{wTAiVMV#!K7-2Is<90xrMa10 z1Uuxw$4mU-nI3ZQjcl%h&!1u-N28!F{-&qrZ`&oV0YDdzAdLRv4-h548&x;+;_?IJ zuh<#WOWksb+)sjZ2CeNVnmN=tz{r>V)%F*mt>}~fY{m_>RrM3qM(aYW%>j~i(FHG; zxMVvmuE+bNoxMs2D(IAXK7eacv5jkLe+e4V!ZoK?umofF_hLiD+0ehpV14-MQQ<(gZ3Q?ZN5mTx;xx_ zdWji%YI9@{%WLCKboFTyw!SXkY5KWJwX2yZ7mJW@P`aqRZSsT; zs*0d-fq3;UE37F)3!nQ=hwa8t-yRX0G%Fq9ql4DgeDy1 zL2a(#nh{yzY{;GW*ZMQqLG<_1=5V}S(@gs@?2{>BTO#c#^Aqn&P$t?p zXk{IR4|EQu3*kX1;J^hBKLOZG^xSA9dTtJ2O8jH3YAc5yE9y;9^%(MWG2#;1tnRLS%a_QVXbfUg8hGHs%*=eAR+rUYc4$ z?zZgB2xN%g))X=Px^@XV&b7gmjl>=HyrN0=ktO`$tu1E>)ks|;tMp(e<2d@RC2gp} zH7V%VORM-OHzCD7QmWlE)oB_IUE|WZ#qKZI2Cua2wtB2{n&>sUC>ZJ6SBzrdaG1RA z$+~ZwEP~i=a+=%e7Y_4bqpiLD@WXPOmta8SECZ$PE2f)^T``v8o#%nOm+_&*@`Z1A zbU~Nccb=P{iSOj`3HN%lPKuuJ0DVPl3k0})1aYsXVrU9$lP&T?3eVu2R%=KoA=5+9 zhMHC55hy*LpYz=1!TIadR5tEaO@|jSp=_=U)WT;6L28zcBgj<_LS2{+tQaVR3a``T z2ooO`-^O}5t8yFkV7t7!K->B58P+2EYcK+J0{aLxwbM1HM~#3v*~7cC zRDr_c(t?QUQtd^SF;y6QevWhAH*XISyQo)BaDAM{9X%Z_O#Dl54jo6LBaQ7GVIA+% zj*U*+w)QW;&lS2YVua@4Yc`XS&&X8eolU<`jdrlgu%Ue+zw$x~|%H4B&!C@*#) z6)vC?Oni=q#^_v>X`3;W_o{)hb|@5<`Zoqk>W?_xD3y0?$heIN8vO}*J1;1od>j&x zzR4E2FvA6$DcF==OpFvxYr*oU=)Mqv^B8%n74WwtmSIW$EmeduaJJT~B(;X0I$)*# zxd<dOPo__yBq09?5I>P%TT4p-!anw`2t-Bd} z_Rz)2PE7Qi0zsxnF>+3N=vm?`W!DrtAjf2UsH>zaFo2zB?H63nyzrH#Aoor4%1e;R z?Sx%k66JMxlL4W(v>q0SM*evwGWqXKe{R5xbCFs!@ zsHuDPw5EUIBHIuGRzPe=ow!1I=8a~fc+R0m!TOSHjMY(IrdbcR6~8xUefr|iJh-I0 zl8+`Nc1}*tNrOuyHKAus1;PFSaH5=fbaWGypoClqI)Z4(_UPPZ+MWa*6nY{CT#n~a z1gNPr5!zsu93Z`L1Yw$*clApF3OdT&GmzJ0WKR z3G-hiC62EUCO5tTSAG7o2sBtvJnk7>QDqM$%$~Li6}AW$!_ECv&8uh^UG|o?A%DpC}-XA zoL0}Ig8F0JC$BVkw%&i(bOhn|Uq<$$s)AQLU^85#>PFx>k-jI%21w{Wf;ebN*(8K{ zu-VAZrdF1)czUz;zm-aTy`$Kdm=>aEN3E&G@_?2?FG$ld8`*(Av5St-6D1y>OOamf zu(g*l8LL6mc;K?_uii_lk-vG8LAm%qp|D-~r%sma6h#oUE}ev$#8y~1tb7hllxf>X zo(I&IWKmIq6R+2pr9IS}GZrsoxQ?;cdY(>k|55cd{N-t`%RU{@@}7;^GUU{+BS?*9 zHx;&IkRa0T<1UZ|C8{OjNzJjh>@Uq(yL(q#6nn2&eZA7|v$E_ZsagZx@H?{yj_5g2xCCSSproU|=sfn=acp8`ubYwWohLqlBiZKD0ovn-M2NVf-wLd+ zgT~h9y9AGf6Kn<(T27BTeHq$2+k9`b)>7%6e1WbO*%+1M;a`^e2(r+C zs&k?6a&WFGdi%L*ZLee5!k2Jmf>Y-+ibDHMEB+HfF7FNPNVhC3*YM}^D zxc&h}W3ePw;lcQ%QW@MotW{iNQh4%Kx>W^jU|inou|kql=ueJLtx9gGi)RF`Y2un) z4tqeAn@O<(-VtPItUN*91ix*2sKq#iAFs>0{f9&F=9sv>7U|Hbp;meR_e6Z<^;V4# zzTYLYOvG@q530=uRKG_MKu&N|o6utqjJhG*s4sn89^|{)2pf}N)yB{A4VS`khU_~W zQOHMlh}~0JssIXs3dJ(e&QR_X2GYp}fax^=@v$>VjzGCLE;;NqZ$2i!#g&9Nt^9q$ z@ccVNX{WnMDOF4=bi^&ni7I@02X=aXVKNr$Q3`_(s~YRW87@s`agIJCi)q_ch8fm3 zC5bO|6wP1bS!TaALn zz2(G@$~M;amF`3~?a0Wd-JVM+{)6-;a!1Z^FbvFE07FKxGNZVq@jI(k3Fv$@1qQg_jIEuq-eq^bBvC_{n;L!%L!I z2aLy8S8E1e(CHD~EL(80bhn?!6n1BLQ)NcOOL|V^oBuvfPU`8WXXz`c83oh~nh3HL zT@z7EEWqnJr+N=TH`sgGN1E7T}JP)opTm`U$kxgA!bXiyh16dYH}};#@tWn z>BO?Z9?c7^IY<&p_g@K`5x1iDWMyTk%DM{rRZUIGw!KMRzJ8VZ#H3opg@CXRvGA-p zO(2nwNRj~T$+y9Xb**|R1y*V-_Uc_Y5$Vc--_``KM~W#!uS z3b~m#$0#w>x6}}rM<#Sec444^$Ywkw*Q|;7xPF)(DOo+bXKU{umSNX&r9R_3^H4ec zzDDn}Y_5j0e>vadph^!1&dW*b!#h542#`0o^0owvJ(pn_p3PYF0LzEWfZ4d)Obhdybf7LZ z1_D8CF-8!KL^;8xw`qNgCRK#)_N_}q_AD9noyz8jrJKVhA3YjvgVp^1IN(nN#Gk}{ zVT7+>LSZhZag*rkx}N^PMd^VC^-g#klLL_lfZ>r1C2)IxkJ}>!!aK^haQv2{;clyMHZhK*`r* z@v0Xg_`RD$fO1>>vP|+3#K&*IV^_TuUg@$42Gkh70h^1csQIdac$qF39R_qq&Z)wL z{0lv^G#+OC+`s+a`l{20REToXYr`ae`WT>KfnB&}ef#uuX5Y+t|G#{!>T1OWTkI_>d zr<}uURL_SA!XFS{<+PKrRR!B4#xDiF*7WpA>^znht9pIuK$~P%0klCkT?*aB`9_~9 z0@iH4AJx0Z8finI3xVt&e(ZHU%wH+@QaITTA$>gvMYaUBw{DOR9uo%>g1Mt{rnkKb z>Sp6LR2N$~%leBF+}g<2Zmg|_PAtP!FBe{eea&l$Kl$h?(S& zyW$(!hhjFCm)!poOZcJ360vP>(4jV|B~T#u-o4>HQmkcOhWZ)krH?wAVujIsC4(37z?EIe~bToPK#lsoc`-p{V>< zJMRqQ;LJR!7^ugxH%pRbf}Fx`jkG9R`5!?#aI`_@{0gqfnVa3dZ&VR>TFfaBcVi z6{D>RwqmvSVk6(gD!+DerL~-;Hrifkpk`Cfsc+ss{7}~&;Je8lq+d%YX#@!NiI(M)Dqp06v}3!{v`9JJiKfG6 z8oJ9WKb6+s&()~wUJChZUHAk5!_xvtc3PL3_*rUs&~d!6BWPO*aW-=R&%8}T^8^Yn zNjRKY!#>7-!3sNJJmix58$Kq{_x2Vb?6F{csg1kYP(23w2qEIZYcGPnxCo1>J%Z#L zzo@{>yp0-Ot*Lgt#>D!P^)p148y*b>HJc-sD0mqd@pYL`m={!GYj6ZU$V8Q$8ZKEG zulb;TCEmA~L*mc2TFgDShw;a_k6nFb!WRY~7Nqd3no`lbm=K!8D9j}`9{IDIOUNVX zcmJZmhkW5)yVNm(*#dJP_cKgibw~N=4voPCD$~&fsHGQCz&XJllsNJ`v>euT1i^{m zeJ(?zC@1l{rWT_%Kb7Q+d_27dx%~&|&)(-8ZNt>c?l95V%#R>v-%vjtK{hT;96@$d zf6*Uc!SEfp7OGf;Pxs&_LEYs;+5j#S+WQv0;u-7mtbn3HqtQR?yq{WzSFI(!-d2v> z-lkhp?V^ohYt$)%aMCU6+Zoc_5bCjF1oUJO|EKjszm#C6SG${9dk#hoBNus%ISSHp z8AT?)Te3dYwrqzI?r{M!mYa3tCm_>wU=QpOq+5V@5%7ER67Yae_*J88RBXVRgz+3p zE(z$ndr2=7WYu~|s?>rb$U_XEHnW%r`hd8cw&!3-%@-PzaeT8TD_fGs5b+aN@Rq@A z%D(mUfYyuKOnYSVbK6<)f(~e{daJBU129=)c7DdT>Lqg{&+=>Ko+wbz$e9@x;vb zXgr+B)_Se+4HrJM@UfzFV?FU&N-l{E#sACK%amv8DnVODr8;m%DRASrW zxy(mOYP#zyfR{ycYq-*Zltp=i>x8`w+;4H{nAdW$#_ka$oo>>-*MFr7o(SbZExc=C z01WZ+vY@5X@xUYE8<8oF>=}ELVHE8=p=Tc2x;!)?gkqLwfWTR=xcC*(_mA)U>_`4$ zYEKjbV5BJE0U^_BNbjsaisVnU+#ur5>FDOU&q>q_Bl>6Ne+igMQ{%YZ2hxUZWOzDG zr<{sYW4yt%;S$>{vxElDZpGI?j{);WO+zime_7VyWTI5$y?Q~THL<6Q&~FJ{G9BA( z`kJAOd!V$e)iNE@&6+{!1ZD_u8jBl&ZHW)fK@$&B1frL?POJ^D;rh$+@R{)lo6*x* z#x{$Kf~lKZCvW2B5rKJxnPj7_;kErcH#)w@ZuC4))4)XQ@l!4UZ1}%F%@G7j69iakvVG9#MxoJa&|GzpwyHDxuS?pSE#Ii#b%|M(qbz^k-Qfbx zK`Fc-ha14P`t%Xx60k%*Gv_baM#{N1j(JAaW0tQm46^34xr&>)o^KpjWYezK&vsG3 z^7I=@m%lrtA51#S1$j}^u?ug})$ne`SF9xQ^CLP2d3^;n6S2j!TxjEw2RWi$amg^v*LYc!J_9#)r-sAPRWL47|TM{Ug+swMkR1!4bq z!{xyT0Rt1niBl@jcQ}<4fSu&3H z6Q(P!F(ctDS`=a+vk3>JWZDvWC>&HY#Sx##4fvrrr1uk>jS8*WRO7#dWOV-_=GJCO z)iyR+OC;;?y=kmUxT$y(Lbdrj&iHYkC4 z`Rgz~)oC45!n)CLX*JMHS3ET}=lYX2V4gg0e#X@XQPatH9v_-e-yd|EXi8(YBt3c~{1Mk9 znmnL%ws-S*Bjg2L4?pN5b<+e!R*gK!HSxuJd|G*L=y_^_kIXR-5zC@rZLu8k!U&E1=qhLDx(1 zr2};G8CR^IFs$oAG4-89uun&Z3ggJx>R->+KE>JCbhG}DI{jYFdtaZ=@^`hK+|Z*@ zFiev3miqSCttO%Kn+wZJF`e+}Ii|oz%?W_YjhB54s74byay1=swHvf{E^Y7xShdS5 znrhIsn$bN|F2J(mF5np?6OgkuX%j@$A=+I&o#ra+-}0S!IzeOBu{SJ1c0n;36wWK; zBS;)g>j)AaO}x95Rla%@ivt#U(qU;1i%xtM- zSBv;0LTa?S_@&&?C++-+-oG3(H^PYfoAf?F`1lvm5J~Z+w5t5M;}E2?8;o!Z z!S8QCQX^PycoSBa1gh{~)H`_X!DtI;hVoiLGSx~#ppjt&cPnW1OTYKKlIjF)<)o5oB`s6-?95;ZUN zKsaT0YfYoXPsA*0>ouV9;dU zplJ=gMbQC<7uM&)=a1{?W0`|QN~ild>+oA#zif0G{fhniJxPHx^52HpUtbI=%&v0tlWd)*$C-r614t097Je) zvd(0Dboi1`t%K;$v$gR4@b|aBLPV0Tyg%D2>PH_F3TFWx1qfSjobvNy@67)8V2JAR z@l(i!GlaT`KT_5%6)&eb@4Y$6ge#kJ6Lv^bTPv5M7iwo`_x&Y%GY0Zk=l@>SPlJfu zO^C*ASHv@fk1OKIsf!91AR1Q;jsJpd{zZS+rT?y;7!!+|PJ~o4tc9?=-2kp2|3-x} z$}klDXH+Nz`hP`*9(6)${s$sM!EQtUujtUf#`QlDAvy!O3IUPDe}Rj^<2VQ}{$IFa zM&`d^#muaK1B#hh|3U136X##V^-ltk%2(;Y7C=xk6L_3pV_`e-FVo*ZW266ySfx@x zg9!O|`ET)n{%Gjm{Q4JUh5l&x-~9TQ_%-rxe*H`Q8vQrF{w02m{hMF^62Hd(&98rn zUlaf4*T2NC$$#_fU*gw)&;Oz)7?A*QUyYA?qAKDgoPN*xnf%2osU>@!Hp3+QAF~BK zZ45a-BQ!G4et+xtRnk8|77Dk8;>+z&{K@p01Mr`=5*fDM$!IreHABhu*31W z9%qjt`>q1(+8NnP>J1A@hk<)#Hp!KhxeI|8Fn3UuY z^yUgqus%udUFG-Z-#ZR0>Y`Mcog4Jbj!l}h>+{`L!J4{vCP~#)XeTImaatX6nXa1& zO-&nPVuR=RfRmdohD-Ng&o)eNxn%5O*;>=mg!8NC&tEG^;+*PnUyz6k=l!&RPSPvD ztT<#Awc`-sa=ULMoSKtvAMSiB${gt&FZ{j))uzsmx9AH*7Ep6;593qNT8=7V)122| zh?S5_YG&_o?N#zKO?$vvan1u3OPBNA)CPT@M#(S4D5VADwtt5EWbA@4U$(U@(Ey|f zkl7`CCaL(wpBdB*vcI z+TE5y4Z@bJ_uajMt``}KKrNU#d_B)P>LPA5 zw}f38^OBSC6;vCU=_P8_AH1}oZ!S8gMtz&vNAY?7nf6rqVlN`^K6fo=3bj||khl=txq9;$;%rT{eGE!Be2;)H`rNsmsjW!=i4-2G+Z}w|||_at0a`4&u~~|Npo^|C_5D zdcZq;=3aw(9TQbR;b|awY*Vx8`BD|y4+RIgr~-RJ@eg`?`Ds1jVIGFI zriKl!{*;N_A(cH>+fH27n_G()Ua&6set5n)IXYJ?)*DoRkGFLVUFxIHQRRF`8EFK! z{89IS^~Y?9XaAQdMMbjdy_M#`;{4`Q8}gOX>&aj)d;Q+1y>9+HffSFEJhM+XOyx{% zjJ2jrKbI(YBOW$Qrzc!@&o-Ta_lzGwZfvON3K;c2oiV{#%k!y3*8W`0SZg-*cAt}~ zs`cwsyD`$j^aR#jvhSWHk0#Mnz-r1Oi z$(eros9xRjm-C%fsrpNuJRUg&hdQpXAQ;2GU$HM=TUaqC((6@VVH@-&Ri%95RLjug z8W_hf!dJx{#^8$Oi&=(V1~8j}d~b{NCWialtQryPR+zn%21 zut_F=YR#B*)=9}7>7-*7^cp{A1A6e+U+WW1^6H5z>KI+wS(=9b1lxR6M@O2Ofu~1) zt9lRXrkO0~ThS-54?&x`eIzt5oUV1sU^4IF`c2Fi$)N;sKEAc9POmfc@)(nHLFjCY zOp;h&rGQLg>mH>dpFffw>}8(pUN7a1>o((bv5-XzK|~2GNqxI6)%dk#|JwJ zr!^v8X^Ofr5nYylzO-ntAJan%`1Mi#+UZk#aUj(z*W08^RqAC$t|<; zQ#I z^ePQ4hQOSWl0iOzE+K(2bI~;J*&tWBeY;5J8$nLk)Jwxuu#xi~imj+>!S=0aEW0W! zmUet>-kdOztaxj?MA_ghnKk`Qz@6hyZa#Q(f`vhRkAkOl!mF6TRIR&WoVWxby)*dX z;l$+CisVC=if222q-~?{r}~r)!?mMj9>|PY?(*W{(}VcLR(L4#0s-2-splapX3n5HdM z>v@#btfO!YCRXnq`Pa}KdKZF}fSx?NbvV0@q06GIwr1Ac^O~TyxmWbXnAty;-{iTl zzH{#UWlR?gkU~W^>n;UDmk=QoTW9gSoOQnp6-$eeRi_GQo$Rs848ec0LphmGf%6zX z&9(&JFki|Y|Oi#F?u@&eN?w*!KB zadE%HH0*_L*%zXAr&^16MN31%0E>cEqOzOGv5@TdT+N&DpR=n@WM`o9CJjp%o*=Cu z)%oZQQ3nyC?q-o;a6yOS`?PH|{)YiW9M3z?SDQbkegqkiN~uW{I`Tc>j+l0*vR>+< zn6wkEZ~TEs#%ykzQ?gEYn#_6ia~xf?KRaKY6m)E2j`2{&!Y?f zLd60yuns6rauNBFXxceP@2Zna8giboR2j^09ajP4NhG zDC@ut=0f)(!R&4hO&CRTKZ1O!!9yufD-`jN0;ZlKwJ9JP`Qv0K>;T-B)GhlHg_PehdK@t z1cxeT%-Y>_t3SKss6VB%NipTt4amZg~1ly!na+r1dbq>{<}vIBWX+l zO)JP3K#_I*8Fv<$I%NkXaH2h)p5h$+D{Tz9Cr(TH)N1M+Kl$kNWfi*bl*iN}BpY(@ z#a5&ajA&{Vtc>D0D5aND)anqGzMSkWzIyGEXHlEU4c#|MYoNydNLa$tQe4Wwtxt!D zNEPa(@H+IJ#)RQB51U9I-=)jfz324CVL_+x5h@a?MQuU3HErQc7so3S+mND-@r$*O zYno~r=H2o;>LJ5jNm8p&C7CCTc8Q;03l*sC8_i5dkO$vTe}QavMUmt1DoKbzS0d}q zdZ~3HwHO2oaoi;8)fJ8*y$h*JMl|P< z4bmgJ2QT{l@GCqCgbUX1qF9R<4W$SWe##`}1QA2wn_S8dD+F@zf-%0jh+DN^JOaVA^601Or)ExP zqy4_NU1@xM;_=DWRgHbj6x$Nl=5eCwQbD2~TaYs`oL1<`6uI{-3%9oP-gaJkyr#HP zc~#G0pU%AYsrULNXeEkJPvb@n5kG>8bYSub#BPHQd?H?u$|Ve?v2UV)6(l!wN}U9U z$0w3?42i{e;o`En9uHMCPugcq*)N!ce-wK4NBg}agD(j92W4FqP^85?0-Fo{1wIc5 zvh)bjz64x9f?VweXGoYfoTh1Cn^NK?OhXG`KEf}5p8Dan{YO5}`crU;d2J(40XwsX z&WYJ*RB=yxwbFSKN4Huj@HMt#Jb&c%i0ianT31-Qxl2x4|a*dr=d z=T0?D!CM65B4#iaXHhNA0lxmlP*ody=I7$YQx2>2r|2g0Z|rpiy(uuwftjRQOS>MT z+790M&OV^^h`+Bhl?$M|om7LOi0&LB);h+rxe&)L2)`_NBdC=tIcY+-QUN zI{sq1-W=Ql&4fbhxovQX}vTdPlL`EiJeWw`X~Ia z+1l6!^xlgt{(0&K-FgMzDiv=>d|tE1AN25}DNZlCvMi4*8+0YJ-9j*9H|+KnDxfn4XsyP+VooQD3 z#D_i(RGr52sadNTJH1&rV_oPnN*O6WuIj0`bUTy|Juh(TFk=-}Q&WeX@WfZ|;Fd9O zvzJ_PmsCeR8Xf8u&|?0v?KZC*?Eif5ky2(n#om2$Rccq`E2&Jm!)C11x9LFQn)0o% zCqL@j_XmOxb}`~CP*V%jj63!zl<>ORaRrLJ&x7-yL+78S$q((7aV;P2&<1whSiJ82^;`@1q?a?zd=dst` zNudThXIh_6&uXb3DBHf`CBu3mkGJnex?-&o2UECSMgcV8QOn9!xr zJM(Vo(IW%9(>qrZX1xKzPy6t(3d8em{PrCF-S7dn*q5zFh&Dv4hH@YRzFe;@?z)C`@kbV)?Hn?}yb5joSzs&46m zhy5!>A54bjcs3_w-TaCxzvg~4NI{tGmtSt}nVlzmK`oTRcBSV~3lUI434B^<2G2y{ zTkjF4Yk*hvl>Gq0Ov6p-zXiamO9v^e8kSHy%U}?mTL4TGF{By7emitJtTTDd1|Inb zZj!cm>P%IG^L_W=NaX$KXI4P zmP+fFi?um8`<&qtJ;zD}iWP7`0dg&o!e37V=1;d3{30f}FH7d%sL>DyU^l7dx37fs zc+;n>!_~pZagPjwvnv? zBRk?fq@bQa%C%-A^;dIj!)KOv=vj2$K7r`6?qNPs9Ek>abVqF+hzL>`(YY{r|E+!@ z3gP6;)^={S(F?NIg|tGoiDH*i!FT|z<2Gtdc@jiMwK*L@mIDBfBgp;rBM4PY41(+f z-=nZ_8j=|8aPrgS_d`brK8>_pf!3NK-BT*JmHq&!Nox~)Z|alE6+=wPzPTP#q}FqBh$lm z+#h|H$d`c#Q~97}8+?=Db#>baLg{+RV|Lel))j{?(L3_mTw|g3c);MMGugqPiDXSc<9r|4-|fnHbL-g`3AN4? z?o{4e28Z?h^>P6ZS+k`?Awf-KZ`#lc^$j0FYzK-S=CU8#(IVA&q9)hxYr-?C7K^&h zcPUO`qiDW-Cw91Ul~@P3^8{fpxP(c7IhnrFO6=46Uiq;k0vY(raVU zz;>zSMsiTQ!_iQmOSz{`NTLU3(8( zi8F61-LcpD9(%T=A|fd87ma}u(tMT4n>r*rnZLoB-Nq5*o7kLd|0s*bQmyV;dOVDd zHX=M95d>mqIZesp*6WpSHokc|?mTM>PR*{Tt@=B73mW9l*{}ZeGQB&|I0(4++tT9D zAh5ITDr&p7aSONwI_2nHI#V+76N=cogNi{_BPjgP1x!RrHvty z>Wz}#+^at?eAQo$^Nw4Nf&4}-q+|&Y{oWBH7a6f-{!h2ARkn-}xzk2$1HDf-=_~2m zU!mjxm%kpv-UFfA&;wOW44S0y8+IsNyuGzB*qsQRSL{05thnT<(5q|E_M&U-*1m^F zZm0OL%yz;3k~?N0WqN=7zYa2D&0zoK^3U{(ih$%K<+Z60YN}s`mSi(I0ID#>gBwg; zgNM6BL0Xo4@h|lMc?z6h>MeUmDo&=AMLXI7>8U{4ya!G`VY@Aklx zR;cFheL`HcKT)22cTw7+YMQvZej_O(>qW)7!DZlO_RGtif+kU9UOdQp#~C)2qsxPh zV5QLigND$*61ar_=kI|J@Gs%2;BP!CB%Jk6lO>*~SFT+8H*0SQin7Oy506NGGrR3{Th8grrO`WwJDX00UY}N;N?&l`PKHg^ ze6v!YE%C-gT?Pc%DBOiwX^I#wIB$$3c38Xij9&J5U92sX?px2Yq=gsE`owuYBnfkP zIxc9#*u3u5C;xff_^MR%&`^PQSw^>*=TrGyXv4>9#SZ5L3!8J-#OuZG%LISJAt7z# zA=UicTqLyvX5hiNO^oA$s6sVfcH5@nk3bGj6>{x2=1Rpeg3`iF;1&1x8Di(eD}JDW zy+!@dH^uFq`B#YDBgKF(o_8NiJ!^9Gaze0_veDE`dXD^{OOo%q7ccWO^J)`}uoV~Mn zGz-bA=N>Izc4tyx&xbc80P0X`U%U*d?&H>;$}weT*T^$t5R7wk*wc#x5^bS24j(N9 z-W^M)%$>1jyoMXf>@>S^J{44BN+b&yFq|o<)w76nZ_)UAk*vQVrd%&b{ju>>)1X|J z&nt9|{Og>H1cuL<&b))NBSSn4>{tpv47tLWwVi_zFqKS$nnYSe@voMLPg>i2%JyTcq9gNeD6`yA zfAKkZ{`C!#VOhA=G39M_hc7;H%-6bmbF;J0YutWpy8rt1py+h@c*yH_F$3Hp26Zx* z7X9oPepZ0d7iznk4rh81HFm1mHsZ2;! zCXAua^cBI!mG~S|WC4DgyeqWm52$8;Be@KtCG7t5kmma@x}i@SM;5NFAugJh7neD; zsCTtQqxME#eU~Q>T@&^N@5CN``q{XUwsi;H%#CdzUb|0P;qdiD2~Lo|jW9b^2yEeU z&ari)GT#UU+;$J$;$MY3U_G!rq%RI)MBqN ztP^38go&FTsA+8$KQNQk3VFbJ>Z|S^+#sOzLdVb%LgWbTlF~w;UL-$0B7NGkPT=I^ zEe7ez!P`ZAlgU`p+npS@AF=!m`JT!51=u&a|0;|q#IOF21!&T@1DMf4iKy}eGcdim z-BGNF36Ght>NvKqL@?DrNNu4z`2M8vN+}qn<2)z0GFa@3{<dRzv(X*U8slD3Dj&#-!Fjk2>LB~>OkA&F@QAp156P{)(ntQLkz}=z@Iep|qCRRT zg}teG2fHyngn7AqCCs$f`^tZzOmUZ^)7l{;dY~qO)S}Z(&P5QQ=#eUV7S;EHqu98| z_L#0$P}p%*Csr%*!E;USCx_0d+Iw8Q? zAxy)f`)|%!3ajgXEwxk+@T{-wnVlu8)cff(HZ z_OMQ&Hg=3W(s}O!{Sa=cIK??Gp(AP(rn#Ad{sUtBMQf-&cmNMoCH$BG;%V^*gl1P3 znBmh9q5xOqw4FrzZCjcpM0GGrm)mIHr(j-+Fh<7ZHREAu6?88U{r)WbN-4)lvd@tzk;1pgm7pul<6e{cRQ(Ah?bjlJ5Z?Yq&`gu3Y9c`0UoJlBZq++7wpp7- z5aqLx(NW@JjQZKeXp8EVvHen2>r&`}ReN1)V@>ts{-);31caGn_cx!9T&lrwpNo@u zS;)~l?M#r@OCNxF!f{|Aa3G}EX9JQyDv|>(GZDhpt<=O7vz&dF$EBS_`1BlAjn6Iw zfm?E=dOAoZXqHXxI`34T#@Ws(GxqA<#n-T7<4Y3BkLxxo3`E=oIeTTZRO+HYB!)n?du{rz;^T_4xsVpKb_t?>|J^vM2R^^ z%^6{=SA7<0_H|TDUpZFIjW90U8O!;U*w{%xmCzBQ3JOxhcq0q3wD)_OSmPsG#Ly4s z48}cW()=At0-rBx6h!tu6eQ8$`U9GR$_GtDDB7KXq9|6lehOl{bmtGq5u`l zE$XdBjoXE8U&M#tJovK^byoP~QswC(ykeGk6%rkUht>GeI2puXcYCPVe3$&DiCx;2 z>FOj`+QZtHS^U&L8Gg8QQ}nYth2w5oUp)%AjfuaKH}SDT{sF~Gj8N^=Gp*;ZEdE^Q zP2`B;Kkq}5&U{Xg?bT#B45rL#w}}r0a_u4i<>|0m*n3NHCg^*SR~a>PHj|t&aE2V^ zB`&pfl>{+RPI$e_<>{5?+^$z{rFUGJg0^UGNf(mrLu)ce{e0QCyKiIg)BA^Pf;#kD zpq1xcs)<_3R`M?{CFi@r-7M2ZxCu6f=@y48CG0~~dT8m~ld01{>NCXn!p*QWyH^4c zWVi8nC*LW96Je;whY0Uw^-j?bN<66P9tfQZ@>=WI!oT5V8gnFB$L}9%EE4)n*K03h zHsd~WHnwAU+N!@{;?FiP87r(z&NX(I-!jS<%(QEh1MctCRWLicFj#BIuu}n`hmpN_ z;Eo#{4bWK*v^+n{L2ZcNF$9`Y#-n9vn6Zyk{-m))K+%U)Sz9O|5u z_}UfhkVPKOTMeY`aDt*{L2TyCYRe#jN)Y&z`uMEs`eV%i*{A+CK8&MLKTC^X@f_nH zke94sFy!M6^ofzpv@TapxGWmr^N4YTkR*p zjM+UI%j1y#`dQo>{sq(Z!RH%MeE%(eDF6ID3^V?PL2ag8S$T_|Pf=%O)g6dHC6WXB z@V+XTdir9`WaS7Fy!>So&gpyd4e%;9czn9B+@ReyW zG2^lesDq)*(Rd{{PEyb;@cy$&`u=L`*Q${>LK@i#eOfHAZ@8_NN7~~!1f_YR}qh=)oz(f_E_&( zQW-Csr8al{@#N)5XO2{IFU?L<_Dan;LcwTbhU%*3ezV|xKR(9~ly8j-epXo9rzciq z_}@<%*4*(^s@B1MGJ~^O^1E&d~?XuP9m0(zavV29pKf!P~b1sZZpUIz2s8 zSouZVBO+wN%g3;e#JKrozSD~A?#b|)EW0w=Hb0K3pTDA?B)9GRvTdU9m22wJ;=AX@ ziE~w@NhMk{-dQ1x>5X{d=2o?Vgh0e%g}!d7*9VG;PmW{Hz6LtKq>4!7RJs4n?JL*8 zrN>5#d}k1SleQj}!?b&;^zXAR{gnMjk6DWuxKZ>BhfBpJxz*vl%|oybznn0U@g;+J z!{)eQO?rFX?}m**N={};zFY2=u?nghqct9taBY!7v)d_Ye?YD~xr}Z11JupNN-@;? z*72GR5$3&PsRr{qMB3z8n=Cgk1v_(T0}Lxn&1ecb9VCB-`&w?YzlMwfk!D*h} z)KBb+H}MlsRaDwAY(Y;h(mB^-$})bdM6lPVN!yvb5lIv6?n9-psu)DtbIG3eXdcQy zIfYS9NA7pM^Z3EbR8S3{Ps{3&3d*mTxyB ztI@vBzO1%#|9q~6d7pUs%y)vTISm9*Oe^VMv*-@&Cec%RJCX-a!O=zz?v zz^=jFw!K=Z>K!eZEz}g;r8H`GEu!IX|htzgCqdD=*&U6NjtKrr`y<9 z_7tG_2CK!s(HYngT&EQB4cX@2RD^{yj=VK)3gE=3JFG%M4ou_1FX-4^^>~u?#oJrQ2#ZD%6tRHF>%sBdx4} zVZZVkZ%mc;a`r;zFMyMAPcB{i3%%KaRlWFHNTj9oglMkW6gIb}wRSH-ZG$9<=RVH%aFgL#wgYe#&C`q8eAvmtBr#?3DCf3{t ziDDCZGpKTMPixRFp^HnG!o5z`SkIIv#QpFy`s*ZyGzhszc_6`8K>ejq^@<{>UreJ) zw2Oi}RhBtT4ICk&f_2!rQgoUPOlL>TX- zkh9VBi|;dK99Ha#7AuV^+~*3s(w%W&s%hhH&pGn0Nz$N*aG1&D#e2m07}Q<_r~a(h4xJGZK~VBVXa z+Tpx1uRqN3ff#eVnwWBY{8xPFH;*SoykRZUc|P)8m)@a(-Vs}N{x%&NftY)AFYzID zs4C-Tuv}L1WY+Hmz{tb=tQ{#z=2KjAhE__nD`DkX7k!JHx~X&KU({)kskpqK_>kq^ znoZP}?dKcqQVKdiiXsYuuc3q~UldJWk*rNgk6}T=#~A?4`;p zlUmr==t01dq_!8F@IBAqb%OYy zUgMZ5=&#P>e}^B~pTEcG!N=%B#a@%Efe!VWy^@d_L@JUYB9e@zsgW0Q!Sa(kOWP)Tm`Pfj)uF zH^tq3(f5l?5ULi{Zy52Jl-kJi{QU&+td_WJukV{LPR~0lhDPu&R!!n$re+X+kNW;>VV+2l`C z5jM36kbZtJ7olU9>^$C@_w``w?>){$iT)J+kJy=Q%%$=A^xp25?KbY~yf!6_yLN>6 zP`-m*iQQmX1a9g_*iHYCj*{ut=+38EtP*XjYqoDbMrb2i9V?|fN5a^oP}8w{3aZ7X z1CFnqsHH;9s8qRLlal4OsXrDi3raU7b>z^F{z97-ho_JXm3@dVAAmDmhX)soi+C(p z4)5?bXwu%ONLg-I<7L>C*|w}-v9K3g;qw@mCVRu|yG%{!@e&nHNvo43c;9FDck~3b zWA9MXZvTLeWNB?KsjxL*k#XsDFFqwS%MZqc~Q)?uI1o;dnY#?n ziQQcYE&s%m>SFb--fEqr?<%i3q1C`+q)kBBVa48o4&B3(>q(~OazxSgI?wfoyp4?h zxjF!}Xb^Q=p#as{k;S(Z9t8W!TpHHMJ=?dYel*xZ$Ku55_vTwcQdQ+89dqbCT^)n> zSjv(hFm93z38t{vs@@V`3d~bJe*T~=yQLD3q<<~T2-*ulJnI6a<69I9ZR7JsUI=~D zj1;F|e8TdA@UeT}W?8@lMR|^J;(|G>4MaagvO58o@Q z0Fa1k(h2P?^wXM~<4F8f>_+RC#m7^GfpyD4BWsFIvjud{j-0^vy7-@kFnB@6gQd30 z&AKeb#uQAPA(gLv2~%>+syPgKc?r$(h#47Vd&P+yih&esqc)ep$EIsq-(>gs2e0J8 z<|(MGVBZKn=rvWc=@P0+f%FeZrP=xFAXwgB5dR@sFC44631Ar)3pQu_sNaqZWUUsl zu&}U&)o%gquQFdx+SvT_YMX(2wZzJP#Cu+FD##Qtp(6A7s)G(nzpf|{iY7XXr!F%3 zwW@H#XQN3D#P|K&*egwH-!o9$tmESXcMKJgE|F#jBQI?%AS>h@3fYph{sVd^_6LME zz#APiKgZr(1Zo_gr_yl*KrN_8|9|%`gFR1H$g_xfyLx?#?y{N|-73Bpc)bRRSyVmd z|1A>B|44u-|NK1?BR<9%Mn0b&{WvDKrhI}|mmy{qcSEM^8)}d#`D4vF@7@x>(EY}6 z{9{F2ZHDt|Nwai=Pbp{4iYM3LEBH(IG%nsG_r;_ExLkH<>Dli@b?~R&<&p#vcJi!~ zkz=gVbAuA;#!FhcPbDnZxD02Ww%?y-)U--8e7QY@El$9Cy<3f zT-C3Z^qwDU$J%R0qdi3k^6@&MYea&L;Q)ZNqAV_xNBx5nx8@Hb-uF2~u5pTjeyFm7 z41>GsnZgAg9!r!rL^J&6C7TP=h?(q z{pNu2d;Mg`o*nx`FnQQ5K(a99m!Z&a#fdcDb^JV#_sL<7{Pf;5pu9}n*+zx2bIxBd zF@JPMxAUEdiHEuFU}=tVGz;r+J0Go7GHt;`BIw zn@0ETPiLx{FcD^I@JIK~UOD6RpuxraQ%VfD$s7pkc4W|yf+k@~ZWni2hZD(lmlN;K zebc@rdFjA)6efm-CR!aSfYVNMWs!TX5XeA5b0tUbLsmSO;BHpxFpxNFp=d$RzWU75( zsGt`9B81M{okY?z9Jt0zXKd&2PGA`w=-&sBpO+Q=TrVT}uo?u6~>MTr)Oz zr$f}JRq+=|A=I~*A`aSyFa7z4j|?_XONHHLUypg-)z$uqff!15o9!^gE`^@>o~nym zJTlN&5byCV|G5IY|JbAdBAF%k`MIb^z}l;?eCH4%tb=_HDLSpf<}E}2-N|NshTtF7 zNt$~a{qR;_rHcF>2N-qt{@vPHQ5vyXx|yg|udSd?%fhPIotmYAhjI0G3MYguRoxm4%1Q?yUPX}8sk=cn{n`@WgTopbqXB-fzpcD`=z(8O>T`d)lW0I9wt7)>e=@dt zQe<^1Y;=%NW;Vd~xG)!)b-`iE)3$mg`Xx&6-7tx`)S zL9G$Ynx{d0=&|b3H{u6cYjH<{@7T#5h6|nQQE3;A1j=gMb-bu|M8^)K@yfpNfoq){ zVvPPmi*NZf{sHynV%=J%J92M5gYyEyiBnFr61(v{bYL-=e%=jU)+Qt8Pzgary`Pui zkyzCV%UKmG7Y-%e?fVH0yo?HI@WNJ5pfQq_*=V#T_s8z@Pdn3WR?=A)!xJ&0gPNl~(-#$Y_lWH&8eLi(oGf#8^Vg@TvU*X^E%sPj%EIl+pElj}E|&q6NeNO&M3 z(*m89J7V#}EdUr^Ivi_R1X20cjDA6~hT#WbMZ5B(|bZ5|%k33bh#f_ljuSx%s`D=R#3}p*H6V)Cj z;V{to+2`2`?YOqcHo?8Qk(-tHLP3}1E=nx`SoR41VP*0qrt?+iw@)?&kA?HQr8pj` z2Gn;26ojoVZ3*u9fi70zau#9L=uce;r$Um3y3B#i2O1PL!(HDfp9qdakVXN3l-*|` zD4>vqHtcrzY#!hL0w5J>Ws16(H_sp2gvsPo)1h*(0!-;BP8||>UT-~gO36v#D8LyV9{Qd4DWGNj!Fm%IU8Rt-zXwpuiwjkg^Vn(gHk6D zKGQ32a#w}H%4oyZ+7`d)cXjtlwP-?AjNh{HFA}1a3YQ(#z~M@gs-fz1-t4&j_el>9 zWPT;N6c#B^Z9Bl*kBk(+7}(aEV8wXLafu;+&4%&X)FqpH&)DameR#3DK|mEk?02N- zfYj^i!%7zIAS^1qqJI0nN)%z8cH_FOKB&@3yN5^(Z7V69-%hvkkk)U}h0MCX$L?+} z;VqdXFuXlD@=3}|-EdX}5Lmw)>xBP!p@$`TLM)hvq3JSiCoOL=bafgkR;BF{%CQ2G zzkPuHyuZI~;rvdC5yNbVQjKdZo1+m*?B^b5%)Ue5#VErL0u^Gca2mqr*DlR}K%y6Q?8%Yewv&y>` zI&O=kW5e%|ilUm;V4U)bfIHrIm%H_iP6 z`zj}^V`*aSN*ZCK*heiZ*R^Tu{H+_2=}+YK3?cQ zK`QSI=N4}wS|)%BX%8hK#=oa2 zzROWmPY2a^9`@qbFY>+N!5NU->~7{|)JV6V>g3HO+t}AZr6!H|td%jYLxE0|vqd6r zDmDU!#cQp3?<~YqPT~jx6r&_{)2L3##KqQ5Rm67DQ;1G zvD`H#ySZ~nohV$;#1+1FAn-1@b2qb#Htwr#{);5U%$5w0(IPBYqn!O z*`;ye1Rg9Kb$2H_s*OdY5-+ADSC)Q2A96PZjAA=jqm~4zwznK0no|mK{ z2`FE$}NT;44auLs@-=Z>kW?q>1tf)-XErH z_4ez{zjR8s{q5!GR?6_BUO!ZRSZ1WKT#&{L6;%0k;B96W_3XU7qmunH)egzYNrfS5 zFw=2j4&h!abM@I~{wnj>TIZR!U#?kCBUW%MR?fezHO{QFUY9p&NAKq1PS8u4r@`+p zm`-%uj{GAGU!f%T-&utU6A|k@ojM4j8#Q~6_vb-%L-t zUHi0hD zX)>?OGCD>d)zz5}*nwc{m{N*`rv~@$U%XB=|6at%Zu3nO?gv`OQ7$ZPKig%)o9w#3 zb(9u~aqevM!`acbfYzoEO{W?>AZ4e?mJ|)MWN4@& z+MvDXBz7G0z#v3fh8;cfu*WS3+Le2GM-q0m4bVDU?O|bT?4t)84Vb`+wsdECC#j?m zG{2(OrVDmj=J2r`F+pZK0x#Hf>xEu_S|DG zTk`zX*sh}8-;Dz!VL_r30V>72N@UYddliiy3Kes{4jD89d%goD$KiGMctR<$6oE)h zPhoA-Hm0zz-{oq`@j#CKhyC1@Blxu-7r7A20rbxmMJdCu?NWwE2hFMGT}Mgs!4BV1 zlwH0jX4?veD;cGT>R?lt zRDc#@a(gdRTYql1yS}`FGqS(nX%%8f*L%)C9(d9K4|yG|`pc`(3d#2jSwEGEJ4tU~M)(m1aC zWzynm@3gq8K#HgHy%It4+bYQks-UMRI5xrT@Dd5&6Y^?}QSI*~MQOK`NE_2^!{WbP zR1Hz_4tgJ($BBj98kJkSVQ<@Z6Z3^awkATsl-o;$#Fm!j(L*=2F`j$=QzfE+1ouQ) z(yy*w_qn;Agv4HML-VXGJRV}6V5N6o8bk>&&~7CbhpzJ7@!bc@>g$o-L5EIztM1Z^ zeb|!L|7Jy@zo|TQaSP*mCAfQ8-tO(WT6A|@Vt_2;r3neC&=3u+g4O!txWeRZsK>Sv z@u-Ix;eDx*bHw zdb;|G z8fh-Yr&K(!)PP;|&1v(R-v?l|#5{zE~kanhv ztIJ3zvcDGiN*3@V#w+*MG4WQsB4!KVT)L+A?xGjAj z`^nw8?&1AAW12+cahhalT_Jezq1-aRirjC!H$U)if~<(XN@sfAqKcDU9d8mi8WOSU ziPbEYW-ENZ9Yl`_74A9vBDMYPz#!R5H{hJlmpPA_#-&fu-7@nM8sVA!bkX9?o3x*V z1aO6Y&-DEd0!7XK;PGa>BD?SS`!7gY8^5&`6!LOFk0jZKZ)xe+M;Qv3_FhsZv2zMK z&AdGK79m~}h#9kJv3e2vdOM3v_T(_L@w%`u0WY>n&9|=uTMVf=8Go0=6Xc_?dZBN~ z-|m~y*-*kA(1|Y5o4PwGButZnW<{-U?oUNfOxEah9z4`JzU{qSgMP zyyJQ}?B)*Bd5B1^POQ$C$HX>z843oZN`{KYhr3!{2qO6p6!iUFezoZoln!HFxOZ57UX8201ol>f zQvlKA?(=&Nekl!y#>u^I;>kc>7#(YlJEbP=>>SAL|t^8a6w?|=2t z{%dLIzsrL9ce=*^%CX@8P59!!a*Y2@-;Mt_0UQ5LWByl;1^;h$FaMQe{CE0p{J&e{ zT!zl2pRJ>ydwI)^9z)_Lr?7~o7Hf$iF%swM12FpB`?@a~W3Zn8>a)nuLGD0$Z#zP7 zRehhhw5<%S-97D>Z-(uA8&gHb{Dv=L$);ZDsqoyLx>0doiJ);9(`hb(a#cODjo*G4 zXH@LXUlpbkT2}ff#&Q3gljo41#G=Q|HQAE(zpfrT*gik2MaI4w0TQqF+{cqA7jzE( zC3Z~wd5O0S$0oy!i1UaglL5K|0@u}!G6ZU^>Zb3JOZ)OA<_=2CjfQb^7M}u#*0bhj zGsG<8wTWrzPQY~3U;V&u8r+lwHJnx#CYOsf> z5OcN%@8GK2ms8pqJ@ujhORKiruMTgIp+3~>C->!3uh*yq`rm&49tDabjuTni@0aBX zhG-Z4-%c6-;h6CszcCeOx!0{h__$x*zn{~`@wWV~-Tg^smnrv9ajHeto79GS;HFw( z41eIJ3x^iAYi$V==)BkS2lOC427;mi$meU9*pEPz2*?2RqcK;w2B6z_`L?cNfTipKUK-EJy)XkTdX`+zvCbpyhSNP(MYDa{$(dNGP z)mtp>b&}&rJ|)_pN~+K@)*raX=ms4?)u zm%*2-rLgU)jn?-#GN4n$3;hC{DFFIY1?e?-mw>hkW!d$|_N}MraNG^MKOk%_^l{K& zJ4zos`v-KEkJi}?QQ-6hQ#y=3;;FCxy&6K?sv9s;&0v$k_;tC8&Y1nc(AroK>oYwM zkm;5#6e~j8Pp^Q~K41C{-n9a50#*yq0V-zImFuV4xEFQYi=ebuBFTlN?)Efar6xGx zT)ibs$VhKbVmq?NFhS(VKTjdh4uv@oVx8Eqa$LU*aQ@NwCPH(NS}Trfq*gkT;{dzf2OxUY@+bY_Hl?gL+O zTq`|)S}OJ2F+tP$kR|t1f9wLiy@=_;>=P^I`YJ&fH@I>Mn+@wcykeGsUJFIF1BztJ z4edt~Sb&35A#C*rr1pH2cpNC{UoOo?<3dFlV9PwYz?DAT1MEiImy4FFZQ$(@M!6I< zGqphC;}<18vo_697lPPujWNqlFxRUyV&r2HsAPUfFHnX}H2x7Z0zHBTF#$yXudwa6 z26)#=xKUUQ>}UIIdMD*-e3V>bU6{_cjm?cnQPFRz3+raRS|NTn27g6q9eDPQY=&c% z>d#&QMHTH{Fov}759lb+ryWbri&KFT0b)dT03+%1%=Gc9GWa*7^AIBl2mzq|;Zi{a zR1R!ZIoNw4$L3+b$#_zzA~H>!-pmXoJ(Mw6UVqmCd5d)dyzF+*{4xGTSWQeuF&Tw; zCuKSlvfODCva`Rx+9xWQ1L`wmw6RtmgoIu5;vUpNPZ5x7662F>z^$zM4=9On8G6MS zj!QIuLInTkae6~2V9OQYs?BaF^R^Oc&VVJV{;cKaf+U6I;M z4u0!v&x3NUm~~uTT4 zp7m@o1e+l2FpLMTK{~K|lTV1xzb?aAFzPGDA5KPCFf<0?&qr$`jQq`tNclOXi`d0~ zD2U%9FTMGLfXc!m2p}hP3PRT43iy9O7Pax$vh&kho}fGZ+;I#DQxi^hp+PtZuOFzl zKHJ6b$vqNufSj(o0@{5Dz@8Nc+@PJ7f4O?*NKawu3FBH<-sL}j;rLLaz9y;H?heHY zea;TOr`j*N+1iM^WE@5c>i>L6U}6%$kkwIot2SLr2r}fxC$uQC{EKK!tBM+Cj?C3T z27j==A%>>Pq`#AqJw}{P%}A*lFu6jhQeH?cF#txYbHI4==?t$}|6ex^Fe`2nT2Bvn zq0LHq%t65;o+S=)pAs^S5`K*Mvv7DbuA5p%a>d_Oo=1MH?<>Wp#hl~7W>;dc(SlV< zEWyMd(1lXFIApm3a^x!)fBnv*{Ti?2_(m|K5(+$(H)&9mXT@mY!w@WkCj~LIE_yfw z{ydK4ZcD6h!W_e!43^$|rewr(X*UhcE9OtJfxyh&gRNcQfD>phfo*>~YX6}HxG1$u ztcrFsDA8c~(9Ye>pS+r*yX35=t{#S}zS;Ap%(Eje!)L-hT^ZbN zw+RU|B0E5SH@p7pl4jEqA?Canz!XX5qj`fRcMosbR|*O&Y@bt`>3-ia3{Da+#e1r< znO6=tNa2zIZ5>ezKO#VXYUHOLLgb7>zT4X|o689C17YEUSNk#fsIxfj3EE8=!DLt%(c-!ys3MW{m~g19tgO#i~GW=HZw2=8=DVeH(^+h6P%a zdD3dYP3Bqu2gLlD5_vNUcL@2Xe|*K!LVk{1(s(#y>CIs1CJ^rSR>i^bKfLwkN|f`1x!Fyw>4|H=6*{p0!U#-Y#m7Esc_dgcixz~pxNS=lvZ5+uw$?{O4QeX-Rq zq*Yp4`Z>dEmucka2$(+*nyeYX=-Y^>w zn{p<+uvx$9o}_$19efi9SU^U?j+9$G0gqiVfJ!LnhqHCK1V~{acY&Su273BB1`Y^6 zmu=yn`TbA&pdb>AAjaJkypjzX!YMk3ElM{`da~Lx`)oGo2#}Pg%?u<}K7MZdOT&N| zp}t_PxP^bPBX|^!19M#gtL8{x3TQ+~jmvIoW2nsHR;;WkZW!7#-g81jar^f@7(D`7N7D@C29ZncVRa8RI zQAANy*_Lp>wP&ybKb5-|Xa4;c3&pC}&>YzLP=dL!!`lN|2Ka28Ig0j}tns@AK z0amUiKSNwVLjluQ#y}zgg4qCiVA8p)92Q2bmRkimpIB??>!~GdwTFK^{w1Z}ASiQH zFbSgt!RRC}|DtR+Vcb{a>4T;%Z=-F(CF~A8pd|f@izPmvh3FD>93{jKz1Zo!UFakS zevo%+eWktD1jO&MfCoqsvh@InXny*20cD(&keebJ#L8H&>8j&L*QV>-9PMVmi zt73LfYF)14q^#hET0%1;9S^%K#G~mC$S)Wo1X->HlPkbH(V{=w>4iPCBe5KIc`5}X zMZNev6w57*$pb0;!fZwch`~IQx>4=dlwDf5If&g-d^@2MC;+0wiJ4np+)j5_zw_KB zjJYJba2_&cHu$Sz{rXJyLYcSruT8vb7;qDAKjHX`$EXMd-S8rO^w+bS7>Cu72ym@* z*QZ0Gt#rAvim=-2`%fn~BVq0~cFrzUEy-HloB@e-Q@rkpwfNGsmjJknunL%}SbI2f zvpbecE$6r^h%N4NLccYFSXZWNpDumMSs{Yw{&5%>Cg{WzD7;ZR#l)WL= zI`S-`%S}eWMVX7MXb1$mVR%xp_a3zg2UGv$3JKZ{A{;CHEh4e-rt4|*kus^XjkP;V z^^j1^15SYo!if1EeYd^uuqxO;tsFLwP-_PKgnQbV1pCnmb^W3O2|<>P>^O7JjKxMCsY~MqsSS(-}B-QK3)#?fxd6 zW*V@Vc{%J;CJtNi_HC`8X3e$QqI`*2D8JCt&pr#xA*H1x?B@i=GyrEl7in`%+9Zu5 zD{IFrfM8UAKqNtbJ*+F|@h9zs0g_`PlKb{6s);Xx@#-XAHfgf{%C~J~^tOJY!PrlG z{a0-D632pBg~O`jV!!*ytK}Nkqspr!h4uE9<>zLjeP7wd_%8O9?wA+J(~Hcgz5y3r zO1}%BK@L)IhfYk*=$d>g$cK3HP&nm?`9qgPMz1=61T#BN^hxZkxLkPzX(mN&H zp6HR+B9G)?PVF1O&pCZhiM_LmBi)8 zZJ-zkH~%UKo@zSI{m_0JONKT^4!>I+37e)e_whEYjol|O1BEIhUc8P;RsZmw`7=b2 z-*Ree@;`L|10YwAV4W&}%EoMN?>!79Jlz-(R)dQC_FgMY@T)yDp^?jkntq0cHN%>_ zGT22Qn(|Nc*|vI}({3jknp?9J0&Gaq7--Oh3QIg~PeGr?p`(RG3h9b^;HRI5y1q{- z{XpkUf~zpZv$Gux1pp}UGY)Ixwy<2-X(|-f>Jc3M^jtMt;cnTC=?udDp+m>H z(O5F~V}oSo<@JZ5BKUXaX)7*QxJPt+oY!s%yu{*8&BWKbkTYba z#NEx?k9TgUkr=s-HpQ=0gu?y@d2b$0b=S8KZ;>&{Jlke6mJEe#B~ua&ro=8orX(a3 zz9K`$P%338WVX$cVVh@}hbU|$v%RHlvxk1mb>GkPTzA)fKkxm#@ALlg9`AJ=`>JCd z*}lVCpLKrD^Za}k<~sswVzPGx1!2=lfE9OyYWEd@KUoCdc@K8bRfq#u6_(lWn*oY2 z8Gc&N9%yo{R^{dz2nX=T-_f+R_^S*~pl7%4W=Ch&>Ov!Ya|zC$2p!`tf<})pC1hn(vEJ!7xNDK;{46 z$e;e2sR0ApZ+RccpVa>!-Op-!kVa4k@<5O#f$e+KgI}=l!tI*7TUIkJSbg`?MO}Kj z&v-_49@Rd-dj@|}n3|CHu3l=Mu0`H$cD!|yEkFUskzkZdxU;@~%a5n-wgnBRUA_s; zeSz`Urc}uBO%mHY<-!$AI=LOajeCgfrL+=R z$ckuGXA~Lm%6}S#|7{c|`%eOkU8z{#T387!Yy_Pgg(1b)F> z(7UG;qv3efRrDTG1@e4OG6))P;29@L5lsUw4+j|9OQw4xo`7R%4E30-r>}Q;(u9J8 z;e9;UoTV#$GIa80e)>c{{c zqLUxH>7blMUDd#~jXlaaUh9V*<%V=GznA=w(A_J^V9A1J0a?H0rN#UUR(cWKq0y!r zt{HtBJzFJo1b2+kHH#J!R7Vo@XIgMB%{%aq#OuDkmn*C&Sbg(7R#1{kwH>hrUXc_M z`;gM!#|^$f6t!N4j)qToH&cXhChIQPd=?fu!66;Q2QJcb||rIdL}qOiA*tGLqGD z#+E01Q}XkTn#bKUYftv?3ia(Gc;EBTEt6f<%`iCrs55f!3^Q~@-S$wg`e}p)!sfL=YPtM6Ac<5JrtWJsu_mi88Gnf(_ zeHOYQO+B^*lp}%;h0)~~O!5>CLHV$Z-t(?R&3B{APz34taGy=?pmrqtJp{9rVeU+Q zYT+DD`1LlohaR3MsFo7+J_SBP&D%Urh&n0LefP|4h%{9tSuH^17wnl5c>ELDb3k~g zM=ctgrG@~;_bzN9(QPk}V1likV@8wMLXhDnmV6oJ3i=sW6IyaOg&x*_Ya1znorvj7 zls)`_RU6)&&GB77w%6;Z`IQj*CYt-ADO8$3drCz+D(;@6i$tuM;n0+bT#Fy<$WfEE zJnUwB7nm-EAF*OfKZ?=C1nV~V%`zDpFfm;N%ZyHEBDOv|o~>DHQ6ZtGui3clT(O*P z9r$8hD<0W$s4$0ybiJ3+;H0i6jX>M;Y6D{-I`IL zTainWRbTN6U-q{sgJVwBY115WxjHm0p`#ePL@^e#8@l!bblYFS#e&X-N$#NRDz+NFcg7J}I=U+eMxC(j=nP8F-gI{1 zM3;*j$}e$otKE?HVB5zjYwK6+K$h7&jGKv#OP3x9kCM}x(BEhn89&x7+P@Pet2SUt z*9fovPD(Rrizgle@8I1~0|NB{2u_(nM{sIk=-co}HCvJ4?9vF^diAjA&STYFi7fJt zI$w>%SehFIGFZmI?-rvYr3O|1g4qEfgpzD!5eYS2LM#v{V$c`Bv=}E>Zu^p0otmdb zK9b)BT$-1C$bdXITzBg9^R@~2$GEwTm9LnX^iB095ut9k7W8a^5D$*_3DMaPZ8dt^ zv8r@DWB5+tEzhm%I)cws*OmflO4Z>$%2c~;`$aHVLqNozM$tp#$tXbkpRo9TFz6is z+F}8`bE)?Ds-b|J?_J8TJ2wcGH}Hi`#(%ZuuQkkkdFxwB(69#hwoN*@2h{r)kYq03Yq~l)7-vdvoWUuX1#YQK)B|Ld1*OYlc z^{RuZ!6|WyFVtc|89{7Y1XzQkc6v4`8USL0XQPAjrL=$b2AfGXDt(E1iG|?$3pN=+ ziQ0^Yu>JtUbbz-Ojw0tmOT`2*`{`cHknT4??}D{JTK4;R{9k_9?K|kr^FR2~_t^OL zN}?q}@p@=0pHrK0(8k>1gca@|u3YQsn`iC~o%^bhhgy}wUn1<@B%TjAjNNS0a316D z>3q!h_)=!pCD$YQ(a$0clcmepI2IOsRY(RFKfz7Vgo8MyIt;Cy$cL8NGFXQ9fePXU ziXg8@N<~IMYbK>2k`nhwk*IO#k3oz5!Tk+!e-L!p$==)#K2H@v@acuNqo&a*e1FjA z>Hk2V!^mm-xC^C(t8PMu&ahQV`=m#v(G6;vK<@O_QS(=Zi#8<;bWTK$F6!NQ`znsA z-SG74uyY0r3_MIz@(YkEB>d6H@IHd%S|8dX#EI<)xhIP}F;MYPevV0lhi!6N z@px~1nRIjh#{F9-1rklJSZ|xs^`OCIxxM+h7Vk5Dn{*uK)Xuv6pmI&mu`+ym4(||S z&n$DT<7lL6kTJ#=cK$n^5a9S(u8<=TOF^%}6WU7$RjL+0JcxHpG{NC$9c|^Bv6B64 zuF|znPMWTm=5{MR=IA_`Zd-5nclnz{7(D+WdKT)b8mmIc1v*}7oujZcyy)0Q9aU9 zZk%aTG;tBUC-+idl=u5a7TH8xdax!l4sK{nH^&lD@e9VbT-sgDCfsvPL?#X@G z*EzJ7QO^Fd`nHn4bZym!d(9^$&yn$mx-jn`IjryFI{$aZ7!?0fm96lQ0;6)WFCO>R zx>m30X@yt8QJF^8geKno_K<&_Rg@^$kA7;BC}>~YZe2qW@YB%8R-^>$*0?J)Go4WC zNDR?oRG7_N_Y>2l(|bv(Fv- zox&(a6egMB-oLPa}kzzQ+R-GXIbu&344<|gIL1(vXbtygb@1EXE7<1d;dyl6%+lTN)`!HZYce@jks z@$h6)dM+Uzr{XAKNJsZpv_9_d7FyJy5$G2DbFIaQf{(ie#wl!5(ZkXIdzw4nCqu_% zJ-LmILAKsrL-99BT_|rb3r<`lzl3hBi7hUyu*gB{S&Go%H;axI<*;Uud(EPISoihRe zEqAm-l~N=&4+Cszc~l-=zmeICW#~#AND&%WPx9!*zX%bs*OhP^?6^Y7^^Vq^kLSbh^I|2 zf+He$-#*t7Pw0GHka_f=B^&)I&V@ZtSUXSDBA~2laokZ_e10AlqaHK8A8KodH}`fM(BBLedb;RqaE z;z0oFHVMZ6g7KjO&smO$!tyg)l9bEvSN;a5WBHt5ADHI=X+FOoYs3qAWv zU9FAT*MQLBj;VKRH&+tpi|tJlbiZbzDm_Z$;mcXry~*~7Ut!B$#{LHH`FId?!T|>n zq6H1mwIB$(eIRD2kh+cJ%DaE`E*gqUyn6ZVRlIoOgG5(#7zL}vO~}E3nWH5HngyX5 zH;NQU624B{csI*1qkGl56Qy#lbT7WSZ%vAFv|r7XmeJlt&&88CSnx)KQ}Y^|5flwv zxAkg@3zIi&NX7aqhyxnsyU9m%9)kiVGsHf=JsH8r{wb8kSWIdl~5J!R&&*qhu zpQJA7l3H=weKnGk^4+xNLrp?{zOc8QzDkpSd%;eAXEYi zuv2qRkF*s1G)!!jneMMC}BgX>H$Z?6f*O-`Q> zKFX4eKuG z`j&N~g5jts^|4DLXKC*X1SEj79|2yb2>^~PmT(9g4Ys$ZZa8ZSBef^k+N$*1&S=I8 zM_b%8ZcWW+HMo=(Dvm=6n$qFhhzbFh$S)}peo7=t&ydSq=W9Nni8jfv9my|met51Y zo;c9Kj!I!?61kw&Or>%7bbLEt&nW_=3l&wRgjh_VVjI`kMTZdii=X&gpG@2+lk09W z6kyY^_+bMs2btyw^y(>}gvTZrqeTarb-C)~8*J)qN}kI}$PsX`7ad6{Vhs&&aC|e8 zAO--*yxH1sljw z5tYzj4HG1`hjocwB$c?Myj=DLvcU$2GSAoEhF^MmnB^`rbOX$fKs0LZ+hPFDbGXV!+daRTd#5RM2uA6=hFAgM2H(FVlZV@`6j1$O73 z4VzL~Jy=9JVaVL3V6q|?`#ao%%!<-W6M0aq;^Y;5IPPnNaw52GA->D#01y@MRjr*)~m7<3$Jm4?Bz z0Gj?C8UMeBnE!nkzK#k-V@;8hIT*F5jBx};YoyM|VXFmSD}QIs_&meg*s@Mdyl?bf zajqu`^#o3Gpr2UVB%+mtcF9&9`=cTS8CmFF$z<*$-OiLdX4!Qmgu$GbE&R|6aw)f1iK#|CWCx2A@8#pMTA< z;6YZ9^p;QqJTrH||FVb1`+siJ{XLoT{!=pb4;PDC0k;U4KS_6hN++DIf=L{W?B;|l z&{zYH-4pI=los_IO3XDF83FF`cZT-wTelx8Mjwf91`neie zDLlS?!{~{JyY0!83+{(k`OET7iCD%_pO{kr-)I8;s+lPPX`%2 zvz^;icrxcauvTbkk>G@#?CDhmeVwt#oQAQMNBO5g@luW?*9OK5krOS4wL4CJa+{F; z(`3Xnh>^}?)tV9XwuGHIEfiNo#`3gf+KTB~zN04}th7Lbt(TV51f^{Z^HsKJg=4qi z6E7%H&tFguAfc_(57L2GaSDHrusU~?B!NwDA8QaET`!tkUZ0Pe<2sTlbAnp=QfNp^ zu;FG5wKiOD-@9copF`qG*Bw(){5;(JF)iKxbl>}=IqAi^l#`$5tD=lt-s(RO7U9gg zr)>=@KPd227OzmIc_zboT4tb<vYZ}9Ia-dZZUH*yN82aG%M_>28?$r9*N+K0P%wIrRBZVvopVZox9Hd_}KMR|TjLp`ecGW4ObwF(!ut&X?7W`aFy* zlD|nj{Uyj@_}Dp{{sZ~nB6;m#8_v{g=Z_{D3S6ofDlr(~x@8{>Xm697NWN7B))X}{ z)w0)y4=o@WmsO*OosuW#5aqU7T{rFGYLgFuWsH~n^=97sq`!#C29-y1wJc|3(>vN*&-bJ^vq^DSdLV=s1?K<{0U+<;mQ0AYfdW< zNtGha7dtV^XQc7nJ8-djl1bT1j>l}YZ`3CB zJoT~&xLYPv{}L$YD< zGsSgF?s};UdD{Yn$Dl@H^``g{oIswd0;i~G3v!cKef37S`#;CGT1>`18>^Z`J=wS; z55n%b4`J@|H(f;SU_NYmOIBWLvWGLGD7Wg2-mMA=;Ak^52qEo(YL`nsB=SeQy_^I| zAy2rW*j-*rA$nm}Ak?xp@v?@X1Th`tpl_zFm?eovA5q< zzM)wW4#1?|GdKRk0T73D7&agKHt!gI|B(XCJ2f%4mp#(A*{j7)yKO5{c-Zl(05zBZvV5i*n9x>N z6c72?w@{d{_*4vnaiZyGBAqpW9fxdI)zT#R7w8r_t3S2(@HygWG112V?QU__5kE&d^jX=;Ka>)dc_#{^ zNXBXkd_5K?W9(+~p~U#gCAH*mzm(&iw^vwiMV9c--_oOcA^coSlaKHo4cy`AaxmrN z(dBj_C$w-#X{iovTJA09fi_HaCQ_vZCE%#m6f{ve8!k6QP@7mYxUMTo{px1cfj=RQo% z$PugJw;aQYQvrFZ&n-FAMNgCFJy7BnjYw<~)WnVW9uIOzY5;8JuTt%rfkjq6SQ%)7 zpT;t8ymnL>ZFrVa)VBb{#$>E&syBV2x#?MvJQX`h0p;^1ia7$Ke(?U zr$3DC(*LE_?K@S_)ia-UD8>*5PL8?;r#x*#wsQWDfc{U=J?uC21u*0PyGZ}vJSygI zg$aMPN&KO-{Qm*z|Je|MNJJ83DAk24@T&Ca?bk$N^lL$x86%^U63?e)9bcGKC+ddr zJlEbZI%cZWn$#C`XMAa##Od0+H-(?X6|MJGBv?;dFU!-!guzF!+F|`A&slG5D zrP^&5$QB`2tfsFAO{Fo^REHSetgIfLb~2MIEpQp9XG&-e>E&Sm@@QoIXV-tJeUKIs zd;K)hJpKydN=EkD>U)#JdEOGa36EJcjSuL{>ZfK8I{28237>%7HHOYqlE7qa@{~ha z+YpR%3)%P$)+?P;Zshb>39f%OtvbdNW=HF#EmfMq()3^l{`s}VXa!Jcg>3*{zC{(K(4!?jVSFMj*d;J`O4OD}pc;kYxX6&8FO z4)FxSjPj}0l8b!F+4+Qr&C&io-@CqliEgX3ex&@m+CcJ9vvKPtP538cNby*Ud}|&J z{g9E^K{HdM6YRk-pgWyG4v()#XRV;I%VcU3BFBttId7q+heECbs`eCZ;BI-NeV!A4HwS3AgW@_{d=fgN|m$e#Vl%PwEPP8z>2zDE!G zEgS*KhhhbInb2jZ>_wEOF{t=@HBzTbM){Hp-uqd!H4km}C#{2Az)r2p{hLwk1Am!F z(Mi3=d~Wb-u1h3aee-|sEuIJ@0WYh4Vi_=i@U`qL*BR{6y8Q(r2T<~Av8b53mzq^S z9Dhub+DeZn|DZnb5`IjKw-fbkd2s%IoGv(aMHqWV@Jt5n_)jTt$=TyR^*VTw(FOE~ zf`avhQ5Cm`I&#H}(>&`L4soKbYr3~2%tj7X$aq;aRtI&{V-i%Sf zbf$@qY@e*$6=lzm4WlEG`S~ZBgXv%v$rjlpr;>(YEd|0*&*iGbA&g2i{&;to0A1>5 zLvtABS;*-#v~|EP0|A>zgnC2KF+%NIqlX&HRp^QFBa;;|H{x6q zL!`ySc*tbb_e~1Dr=#BsIFAZlh;HR8WrIY!EWIH;52klj$Ew8zAbS52&C`%*BZpGV)yNdiVyPk$$IyypHvVej<*&X=qhQ{m^FUs{c5N}zCXUj z3viE7SzQ&mx(+(s%cd(h>EdBK)nVdyZ?>wfHId%;!V=>7t*UqCdqNSZP*iB;D085u-&bt!|?z3@372xe--R zxX1c>cJkP#o~u8;ox2sMsMPIfyhh9IIqMJuR`oE5t2Zj^Z~eemCh63nKcrtAz8B41 zS(RwvEI)}kaWqQl{@bVdFJx%f4t+m>mUa6nOJOA645V9s=#y*WE`GoIn%0|=?#^>w zJOi8btv90r%Y^6j$tfoh+H??FcZcZbPXO5~ zAU~>vlO-SQmmB`p51F) zo!<Pcz!b#VL3z)k|ng`@uS zBfD1*?nMXcdhLS7^Nu36?Z&slkfS>!Hh#*5DG-%QJ^>jllPefuvX7c6w&>Xk^p;PM zAoxZtK=~MLu5O8KBND+&Q4?wug_0z22 zQ}EGH-PH6%?+dOU{&xl&y2K=`-3pF2&4#E)Q5Xt#rYQ7*bIe|D=%_UAy$(Fqrw|+ zI(Rf?UOD;zO6LFR%3A%3O*7c9=Ah`>Il58g@?pJsyy!DG%C(Z+ZE zL}mF`aOTL@=JIz16^?VaOffcw*S{ZP@kBP&2i1b`!y9m>_*&3#N`H6}>V5S2k-F19 zr~C42j`Yb_3`E)tzjbac=D>dmbf(_1$LA2diDHEDvxA!m*QIS|WujY>VAym)u4?kM zr=Fzvhd5`!M>f6o(-yH)UQ}>)s5uNwFJ;gv+@uMl_?9-%Rx?^2nk`I|!W}LmI{Ia{ zOr~X?9((oH+U3bjck!@yRaR^Ai_gyGgt3Tm-S!brAq{7+te?PJ5!{F(1Vz2kO8DpV zf^2i${=F9CDK@*K0!EemT@PPLrs?vZReL6&aCgef+m<+wikyZKZf5GwDMnJnhDpb> zdz7ZK$FjWzv*b?{D76cjo5`8+JbLq#B^#1OV-07HtfnB>Gcm^e7aLM0JFF^3Me4)V zWCdG2E&J8wqE6l@(~F~8>Sl2TFqj~(P+xSNG8Dv%9c^11axoX;t*)uARJd^5#K*_0 z+#qj2Ir`Ae_`A_d($qWY6n+-GDIice+o%X&<7?myurylM;vt|7ao3i^ zkKemjJK;e?>ppFn)O~9TZSUTHUEm%HBiaBmzz_#Qw9NppBEn%-OFKWTnhNW`rmmd( zW)A z24-h&2_H%`Z1d|NslwMlq|}W7YN>iTNY9@W0>Q3WfE2t>edPdN~7j@$KA{(J7{?^un%!FV>T_GKQiZD!mkQ zBN<-KtC*-eEk~gEm7Vm@-mTX*!31}n2~R;qcq|TkutX|PL8^4e(MdjcpI&$cZxO%P z+48Xzw3=z!SN``y0{Bpc&c!md1W91Yl!$pIS$BQCkC8bHX+mOmjH!@jsJql$(DdCZS{+|K7e+pwN!RnF3cRQ)3C)9Ab1$Qw+Za8mq!tjq*CT@{dcn zJJ!7tm&qvURz3dVMzH>Ja`t#$p1KbssNafkucq`@A=ym=hHd;qyJD;jABtYE!fICOF%RU?agtEO zgVR!0Vs?dDNAzic&3q>C>+|Hdj;g7UhhSfJuRBLc_oMklHGV5z%Ol;5vmwXyId>6r zP;ffd;LMz{rC;)DGuML;wdw0m;T&JCy(|uBS$z9QF~M$fm!I>h!Z8>%XF0B;BMof+ z5f|F#QR@Y0f`Jd5&d+DVgEU6G&=)B2##dtD)10HBAQItsoURCx$x0SaN_3{)OTczC znh?ZAaFU6dDn1ydzUyC`@F(e_?kL1mYu(s-s=f26Y$Jd=nK_Rmel2)qf*XpEW14O@l2cV5 zXA~WwbiV5#x%K#gzAgqn8B_+$ls2daOob`(lRDkP8MnQh7FloqJQIoD>5Ff3r*s$3 zw@o=5`;v93*sxhNKNq77WBe3PVTdL&>#d3g9FO;Us^?>KH74HPHx&8ck~YUS8DTOc zCtpz{Gbt-8dvb_J_z~C1cTvYUSy{Es%wXWZ!v_Og=1>GFleL@k2v#JapcT$6pEcrh z>cVgZ_heYs?e&pD)t%$5ueQ%oPd1DLS1dhvsyBmL;M*6j0HSmfaL$qzUmi$CWcs-o zRt^N5wx@mlej+1|$<298+V0HYB@P(ffO)o^U$TEu-KqR9Q#EmxMN;=1Ps;T03Wx6F zcOQ}mK@8k<<4BOSTS|QU4z}vmyjxD3`+5HKBSzVMi-v4Ub;+eR%~3-l7V;(B@^uTP zQr!s5S+F(oK}%AzKbWB}in!H{{yh>z?;t5z?s82jg=C12xCp+2DrV%(7` z^-lPk;}vA{J-1qS?$&D6s!QG9lBa1as{lqo_*^KforT!hr_rxaTz=6uIFBcl2sT0r z#ofegq*y#{aS_v-*e6>mx6#)Ht~VG_(NDOI09<7>%VRXw#|c=LWv91|J@jx2@%D3Y z7Nkzz@`Go`zg+ujZBW*tsg&!GsCL=x`LhuElcMNH4=8caY$Qc|{HJ0>I$Pc8Tvzt% zE-9z+Z^rI_`u46`?daWMo)K(qciwHE#tfFh{^;~l#9A$Gysc;+6=h2kYB_Gp@n|D) zWvg$&;755cS9xo3qkzW^YiFj^{0x7Hq``#e0sE(2Ize?5y{pu)158ny7>{O;2;@Oc zxcjVP*rb3Ke4xl?!N||3#zp*;Q=%d7Lc%B5m$eR{bP}Hi$W=*a{EE zFEe6B9$Y!l!OR}M)a(RDA33Vogz5UT=qQsZ3lPztAl%^5YJ6nUqZl|fjdOX63z#+38b|1OB^$(mT~V>|7wia$ z4yUH;!AercF-JV9$bO!ocFn!l*ObBZK-c0qD_>Y+!kd_=-En*#!HFo~_i0#n6yZv! zFmlG+k1(knRpA=SvZK27#3{~MNS8m_-!Ur0h$< zsL{3zFOlSj)&&mXdKbeot+E&&1h22S0W3S4-yl4$0!>|Me_)#vs51IKn)a2uBS)N- zJmw*fltYXVCz$R}5l^0MYQqa=uy4U8g4kxqLKH4;B&h`T0dkCwK$k%w0VfLjiPG=m zRpWjAt0=4I(e77#y7eCGO7tdOoOk8CDTK|uKbui1MaV@BZxY0zs5-;!pz)7t;mTjn z&rKPO-~LGrxe0{btWh0HGGs{!4d0sBxV{bcSD648;Ok(b4DuO=Kfxt6WBuaBjb8S< z+FBKT3;TS&>T^+6lxZPL@9U~kMgxhf@o&(W31mqJnH_LcO;ts}ef4~&o`dSgW|PTh z!V^5zG?GYk0FD`d4J)SLlOBG2Ia@BrG21pG5TJQK% zo3KCY9p3*p^o}f)b}{uo$Q>>q**ptU&OccqK-#{(vk!EWK>Zyc?UDh;%{p#@JBXax z+y|MGXmI*Ln>-6>hGUn(0{xM%Hj~kag{>etXyTR$nd|x1!N5nLJyq8N$r7ZUz3F@M zvh({SBpJ+@e@M37b`Shj1<7DR|IP{gInVu%zyF)fKmSz%{eWKMUEp$Y*URCF|6WRAf^Dx zW=&2pwws$btL7z+y_k{++heKAQTBsV7~F|)KknB16!A*zXnUzdwNaq?{Q6kz@Men) z=bhBm?bEDcX9RA@_P`#t^K+LKSq!4uUx&31 zLPj&#bLd@RTXk?lF9GetSq~|zkQJdOAc`(L@>`{}gYU>P-=-p--Y+CZw&bj<7oscD z+wQi|QP}$K{n&&+b*&FhzXKvjZLWVRy03Yzfr9#O9L$G6)frg_qY--nA^F$s2rXK+Fn-riWf1qSHR{`r=oGIP6coJKYA^Afcjdte|H(vZN z*b~RThjb*aK+B-fkNm7n*wk>Ap)EYx>ksq86yOPt-z->x$_ta#d#1bXK90=QM_l=! zZN|Sg;}TOY6Od1_^-QW2822aYP!5kZ zMXI#V#K3PsYU4ZHxJ|qd!Hj4~I32)=vp7!-e4|u2V9d(;)%xR8!|>Z&@pt*HJ*KaR zwgou;B^m@HQWYnbjeW){P@te4T(l$n;@)F`kv5jG`6T}pMcnQT5BOn2DPA>C}L_c4F_G5g~V~X&$Hek z2(PDBhOX&~T=k#Rl^Z-x*Q0bOpxEN%?ISFMGBV+Lz~>{B>Rsq&@pKu_KH=rMsbS;nfd{5^iyb5`A1kyYGq>|6O{*IwB}Bn>NP&~Q>etcKz)g6B zDFE-%Z`i1M?4J8Ygu>j|ibM)8$B`E4**uxXWAhw$YFY)jP*{5a0Xd}+^foAEoUFOCIBofY{DKpW1|=X-9!*1!*XJjt&6BzQ|{O1>G)GmSsKr2 zSWj%cw>T*B(7o@wY!ydGXzj@kWh(9t4v63#{^s>X%xpiyf_<7)Ngt&6lZ>d!RQ?=B})gH$GX z-~oaOanP9)RB%^pdk~c8FF3+{Fe^>6vc~9@PDp|>e}9T#N%k>c>KJb%%3M|Tn&UIR z`>6-6O-{aRorZeD3vSbu>sCEN83?u>BrdMJ^nr zM!b_tOGC8gm+6Ir&&-bMk~10()Y6zdvE>7fL)vl&Ln+E6n825G{gX>^<+I}vl^U_! zNZiJw_pV&AWo~Y%mxp-Yd6E?QJ9$k?4+Ni9Ezz{-4+DqMfA5~(FJSfuS*@~EqvGDt zAYKr6`(FHl38HMwElj(0WDkX$qTvJX!AP0&B~1dXhRAWy(t{vrv6hZQc0A~4MX);i zCO>#zqd2K><>E)x59xqOpp$(QV-kHqpLWNf=_mPXpD!5uJq+zV$68~? zTNK04%oQdK0V0)^p)E(O+woq3_H$0pZl>58CB1nwK$m~%Iy_42DCsy> zm-N6QRuh@I#9h`dX`sSZWR!Et#*;Z4g_-Msk@U!4uD(&BW}cXZJx?Wb-jG+O@rXWMu4scHfk-?^ z`Gly5j~2mow7PTojAcI7k!Vjxd=|o3P+j=Ot)!I8m>tj5I2VkFSs`bD87xr%H4|~e z_VENggZ|rO&uu~;r8Y2C z9r?O*^`HPFjB)|(0ai>|kn9GHlhxCh9e%b3E!3JlzKooLa8Qg%X%CxIoRr+_(H@n5 zn=(DL{8L&vuNZVkws-O>Qflpc&MR^#mb|yiP2o|bFnIrh>GZvza8}Kbyn?lWs26ff z7Cu>h{q|i=DX4#JtGf<#wTLQ2+)<3oilODZBm|gsxk}VB5`UGzPgD=!z~0YvC#rY3 zMS%Kb$RglkOl09xPR(*uBDX7Vr(c-pL+1Q- zFWW(^rGoChjs#f@8Enr^N7sHnbU(ioSZx}P7d-EwbaMPQvp27}40WBJ$-y4`#SE6B zrDBgZAth`?h#Wg8;H_f=FKJ`poJZmoUr zZxunABwK)+|5g!%G#US`aA<^zbZMWi-h`L+liqAL!-)dQEaa1CkY6Mq7U(ZyFwV|^ zvqPIIXc*yz?r>7?NA$3wJO;UGD5nsGVAJ&hCDvG-xpd|g3Nuc%2qPE-FJE~e@da-I zEOcHET@HCE&UU-eqRZ3c;U)2FUx~V_Ep5mn0qXW+mU$^V7d@Rky-N=$ri&^ptL8GQ z0RzptEyF*7J&M*$l8^MYYOHMQ4E6;;Y(ShRT6;<;Xvq@5RZkCu^l{^*HB zhYR~HTV7xU)uVr@7Xq~dKZzjpegL^S$G%_L6Ghgv9p5_mmo7}&aOh7W#eawuzyC?~ z@16(oAD+SA}!ba1`1kK_NN$y@yC2WgWq>NDnyZC z<@kzzO9Q-oXfx(!Rh!=nwJQ}jBdKr#gNauYl43S!Sb84(y-m|U=+ggfm!?1K{ScWvse!+?-Jt(i`rKxB4$WdVUxZn4-WMqXxEfzm@<$1uV{G}J%<6Qd8>|d|- zFzQNoN?6Jj9v)IVbm!A($9z!`3T)y0(87iy0(1v~wgZb`H=(9$6cNHOl3WCQ3$T^F z!fGKQY#pC3-seSksrH@18)@dv!B#2y_BB064pT9;1=)@-K_pHSib;IO%+C&ePzvY> zTEv>tErVuV79DBF2GDM37C+hZqmrR#aS~PUQ^H<~ynS=VQ4W__czDc8RHx={D|6Pm zIDCbIPEZ8BO-SkRU}!b26tsuzNuks_|0i990`ww5z9Wug^L~<~N_d#F;x$EhXk|@Y z?KwADaJnt?+|%+B{>U@381ITio)9wwG8Xkcn!*$f8Z3Z*9eZ12h;7FrSkMuRL39}c zd<}L7pFr>}B&c0^VO0BZY)wwm8J{3uw6;uxQ$HrtjjIueJIo6z=YKqZNVf(gT!|e_ z4moC0jgs7^4X;hdTC)iGwX{sr5IknrS+1sZ=;I_l3Q=9=2gn!7!3^5|#+ zmyvG}SToRTM+wOd&Pm)z00hneV3*DrN=YTUj>i7nc=3=n`~4?;_5I?qHaSp+aqpD5 zIgfCN5`F$NQ@WqAIMm!`s~bd+$S2uU{~zxDJFLlcZ6Ae06KSGU0WnHd5KyX035p1a z2%>Z)N-qKeB0)+71*8`Rl#Vo|h2A9~O$0%y5=tOcDUtw&K+5c!S?_w+S~K(h-nEYJ z+s8ik{)1zjnMj^IdG4#6*Lj`i=zLV?Ug7gc0zZ`)bw_nljQw@X(ofxuw9`wszwOp< z<_w9Or{Qq8O`KIzgQef1gP+*rGe6h7`uhCDGWFD5_Yfpd?4EK5x+T}~S+uxv)Z&4s z5_R?URrQfS2Tel|7SQ{3D8 z;qp&c^6oU4wqW$^lcIV=8+sKK>=F&Zl@+aY>e`~mQ~iA&~*5!sp#?koDM z8`gi>-fRtGP-K*aqFOJKTo{=TneC7;H?^*{!&6|hZ z?6aH`WbQ{Y>-Iv}W}1Zi^}TyqkJ7HY?qz~V1c1Yy+-YF?@eXLKM7cny)&RVPpk|hE za&c;Kf&R?fJ;Ta$UKtuhT&ahmdADD$qSP5Qne~c8kVzqCp|+U4(K#i zS~z+p9KI<#g6Q(zXZJ!Qm<%UVB8VCzD12c0MNcC=g^u^;($^8Fo5NhOm}yyd5_ zoq{4v+9uiztOstGFGNVTyMEO;13t?wKqCtSG_uo)&9tYmoB@)E3Wy-Z%Si43hW9I8 zlgol^KYSl6SGw8PrS7bszHqe*f9w*pHzPYllj(KVG%GCtITME7 z42I0`$8_BdfXWNt23ZoYQKd9BMAmGFWqNMA*&gFw^r)ok758;_H(aF2r!&vRHW{j) zjtd22>hU0&O6`CTfs>nH?$qEK_0e;G}`&|!M-(%%I~V) z)ev<~+Ck7|Ny5SO;d?%KaPyN*a8Ueh!(9#73+xW-e(VSF6*;zoqHsy#RAQ>-Fex`k z-uW(rZL?@@E4cnU^I6N&dDVcF1z%*$m8MG!)rT(ZnfZ(|4Zw){_lnfj| z{tnrkfO;L$8E~19SxnYz$Acl2NwOh_(?z$^k)&8&n^^y9>UOvj(|9dAzf85AEZqf4 zENTdRuK$+Zx+}NewFcb-`3OqkO6%4*gU7DFoQ1M2r>5678b;a-yZNZz4~twp^}w+) z`s}@jy=P9frEs*}S$AOG8%NEpg7r1VPi`SDS60%7zb~l<(_9 z03l|>YY>_|@(*N2BwRn}`?L~%paYIU;$Sh&LI@=ee$$csWXz0cmzZWz1KSDHW6y?J zcMJY+AUXbhMISITTqSj+S6G zwxtChDx@57y*#QoFy7lKSdil={-K}(ciN#UY4~~O`O?|Yan6U8q9;Y`MV`WJ_Gffb z)jPG1`?wYnI2(C}@>_A%E?R7;aYGKgHX$00Z?RFri)o^tbZ+x(DO-#&W z#U*y#`r9TqUp`g2;P{~G+zBWKN~}%!4FZb?TZ^4Q_oj}g;zo%19o?93ujZj0W_V8c z*8$2Azz2x+`6Aa1R_=XbtX&5<5H70HrON%r!fs+85|L_G4Ex?KFz_%tZ1x>kw9$ki z_9u+evnb3nA`3A0at2aW&eP{eQR1}FQq1Mib>FgBn|WjeCtM)kf1@N&T8rnLAip z;hQ>s6sH|?!-`IYtK0i9j~u}dUIoKng+*jus3I+uQY6C7(r8D7b#xm?#D`voJ+*Gd zU#ZG|uKc<}ngZTi zniuF?YGW*zt%gh>V3J^Xll&XR-f-_|^Znl-!9*w}7+yAP#N3rtCATJy=O^Aqw~T2( zt*lp`OfB2d21gbnaVtmfoN}@`r_Cyr*dXaZ)19iuwREQ9*zC4s#mrx&+kd*5_5OYF zZV|{Eg8_O3uyQBZtb~74iA^5f8_18QC7bF86T<^1C@8}Xb! z_{mn_LCpGu+`s{mA&Zce(N&nk8}W%T+XG#Jp72(apjc#^Op7F9qYYhC7^)^P`^Co9 zfUV2Rz_r+dUXbnGOl>OSO+qDOLL(&+BCK^Wg!lVl&ef3p4z$IOnul~iJ;zpW1jA<8 zNTqHfRuh0NJVq>wpSJj1$dr?O#fNVAmHi|86H7uNl~fKOV}}Q%l4;eik5G_+v)_Co zN}82$P8(%4s=6<9j%b62venG3YQ-<1Z|Wzj`Tl@iTGpd_kDg#Hr;=pV$wLv95-j zoM717B<+yZDQBs9%^WIEgHHYE`q`K4@BhMF$H!6O^i4&s!>wnTbEQw7aK9A{&&1*v z(BrpgVf+4afuK(~VYXVsL$}+2ccrnw$#RsVgoTt2;q$8+;va^d3Hb-Q;4rws3wlRW zdc!bW{q-jf*!&)|*EV9H%o@-D1j)CEqC!f!C-=zhnmk(wm#Z`XqTX!$vr66X2aGS> ziau*EZdf!nzXMDaaK5p$<3arwZ=}qW+PH~8`CaDphrcwih!G9k&Y(D7YxtO*Vh9y| z!guwv0zKUqWP3Wyj&o0_`4$+1tE=v78lg#`7GTV$CI$&3cCHdWBSf$1Tkm6iTo>oLe_mx3(mf%|T1g>quLeNXH_)71!( zP9YSAG)oisKVnisn%xStiWbRGP3^3|SveCy^xwXvIU4xnD3A&!`v zg{>vbaqUBz~k$Cnz2A~RcOt-W{kaX(fHtjryBPF_bqPisd*Mj zKft&_{Xk*i401lk6{uFTFp!V`5F}<4^^_r^%&k;k9xF`(0lfh z5<13X&orTci#CH|K}3C2v8Eq=l;)pxXxcLE^n+`3bam2oy{z>Z2)XH@86^6!^yY66 za7#lJXrBdR3w_^d6_biSs=m)lax2{^={Os1^YJ{TS28dnU3Sr-b^hg-Kq^^<)C4C0 zois8Y+pQtpKz67?k^HZ>d`K7RUYxvRC6=hs!CIUwHmk`{j&jN7>t{HLb00sXE(tV%lFG+avrrqnMpoX$rEDz^ zqDh7M*r&~dZI{DC4&CrhPt@yC8XS8bG<;lvz~7D@pTNOln?-$y!mgLUqEKg+zE}F) zYUh?$2HyeWBVYnR5&|V~2#nU9TF~&$<)&+k$hW~2oQ3JHMM+V0H9oMZy>2tlZbE2MTV*k&-Et8EtQSDk4dtd@6dSGz@Fkq*B!va`lHkc6?2WEG|s-yg& zhn$IT`-ON7zD7N4x_0)#2D=8~L2}O-Jqff@vjsR4PpB^`w{QkJ9Y)inmsbofJEW~y z2Cf%j+M0?wB&w4&8twO4nq`JfN!qbGvJ~=bC$PxlECmnCZ7POStpiY~qG(Abz! zr&>#26bxvjj8}|!4>K9@K+amqC>9tko%fs<&1t|AnaDwk#Qj4li+ zj;4ntvK=jz$&VHO4dR!qoD||N>2jZ+wTO8IG+S5xDv7>@(bMQDO4N)1W@r4)Y-|Qm zmCXl!(NEXExWVM1Lw!6G`TR#tvf@^2r<`ukOg%JN1g-KrLDs^bPp^6%LOP}2S@-B8%5?^>it`?f>f zP+mkFPNG7&BG56=vvA_g+4oHOCH)CtzD|GjsaC=I#*k1(9)sSyl|gM!-(xOKSI#Nky!;});=Dme#bn1l zP83km1vRsa;rHGd`1(!fd_BS?*+)%O3DdJHmUdq!?p9u$&Gt<_eRJ--X`4aoJ4`Dd z2LVO7&`#6@&VfyxaFW6hdiOvJE4Znh0VV|6d$MLbK61XYi(0Z}u9&1}br7# z{a{XDm&$ZFuqb840C{Q-t#{o8PfLhVz;(hvDB3lP9l>^aWU&^%6K%RDY}&1w-N0AN z&wsYz>L)H8G1pq{_Rup8m^IE{N&mz2s~=m_A6kOQBHknA&jKb?&pQ{(@Nl1_ZtJtg zoBE<3+e~hI>8XQ7+#|05QH^(JV2uj8C{b!Y%+Z6x0CZP}?mAD44hr>>)dc6c@30v> z4LRW?5scpzdX@q`H4*ELSK^`D+W?PgJ{6R;%Xa}u6@mpwNgx!z2gjgjp;%^c{y2Vv z0H9)Q9t__8k1rnhPhR{V{pSC}i|_pZcFq5X-~5lefdDR*Sdx_FI*icWra)r5{ZbF# zpMlVA4CKNfBpV`Ly$_xCkHCjtP^GWc+^vX5UObh}Bvx^zTWnJ=Z@)wPYs%=FA&n(J z$MyIz>WiSGKN{E5lT{23JsC)BRSEz-kNp__kK_$aTvz1ZPPjK>5ilce6?YuF^3 z^h!+WGA3{!SgycpD}!V7l-S3&MWxk|_$v_juD#%VqLpMSnA1D$JC7Vo!L!lAQQSd~ z;gmQX$^|*VjpDSHpsejH@4!;Q3>C~Z!o?}{;9ReEU^75BE&2^S;`;kTXRWaaw5l9U z2dJrsMS>;I*&ZYWz5IlrvSh!nt%ht*q|qV2{=#|mgG)S1P(zd|#dj1K7=Jfxf3$w%ky(d?q*N{?_y4G!i&WoBTeLvoXs#GgP zZU)_gz-*|P(G#v{&Kw>(3Mt?q=?H<17)1(o#A9baq)x7=NZBV_=$Xr88#5RvKy)>A zkI{QQF(bO+nP;Y-kzo`l9{mw^s6KU~eKd;aWvCs$is2hscV&eOh8G?Dl-*DI-s56| z9-skhC~DR=KYrsQj17Yb!rXi7Cvtbk?4-cB#y9Vi&IRA^*80UxTsm=2kSO>&L@iD7 zrWSy^J>LRY*AswL`y*h4+GV!r*bT5&apW4Au!K|J>FEA29B}fTOSby zKP|)~KK4jlrM_lwZK7Z6(}cZrp-zLR`gfBV@4uVOX#U}=U)^RVT2o(Y@X&gu4`qD> z&(Hew;*Qa)US!eq1J~7$ESsY`CPtz$H-=;Avll8pOuc6Kf!QCd($qjCEXdjnKyvSU zgQxA!5U3 za7UW!U9cuBUW&S3fbY*SCar;;)czcUY)J;_-@lvzxC8Aoth}x*Yy8AYW85>Qt~%68 zx9tihD|yFr0&>pdNX!w@=<+iYw-wSo&K#kC8VFD?Fe2+sq3|JTH_)JbtGEVouD+b> zUJNQ4?E;W>*O{etuT+DLn9!~mlv77HUunUv^J8LZqFcVabY4Q3>PxT0@W&sUun(CD zIdBhv@u(o@i7k9!aJG)6#ZQ{80_5^vPG(Cw6|7XJ!|0Lr*rRtyWUb__&f_PXo-6xW zqF;)dpB{KUx_ZnhO6(b{-HG};MdfA>TcO#v_p=p+fNb+b&O7h3^Q|qrY0)*P<;N{{ z)ORqujZjz(^4WcSU5AxfU32*>gZo7oM*UUgfepS30_I2Ot&gj)KVNri`X-xA!=FYLLpW?5q8&!*tDgB9< zcqkev#wo(ShOL)AJi}~qk8aQH_j?J-7AqLwa)Ss{@f!Jqw=-zKEIQx`i4DI*j3xQJ z3s5E{70N8ce8+k`%w|iIPWlaE=IJIOpLlwEcI?z_!W&&?{D}5GCH!AQ%TEmS1Xot2*)3bsF#R`BC%{)d{HYFD1KT3n&Jb1@JT6C<#n$4p=S4gw@Y z-8^;`Z4VUYubflkSFQsz&o4aB*kfZ^D-+rn z0kJnYQhLvG6g?9Ktt!Ybfx8GgMmB5bVeSlw#gDhkR3}VaUAxv1rzj^X#Zb-fU~@oE zQlbioC8y!(?pgpW)DaSLyXH0H6Hkv+$es#~1vH)#7iOS)>m|q^{flU=)fkdLp4^6J zZ5GN8fRT{-T5p#H&xo*DnIGW2?PU?Mn=uvP_*gt6!a+PjY21hoNE}4L=1oVDtA8Uo zKH@!Ap{-`fxGWZ{X_6FX@(O>684OxDXO2hG@-;+}ZO38YnGi-ym=S_rmbf10t{ZVs zh*7w%jO(A8q{s0l^V?kwDA#;k@HqQ6oeqdZe@K5EoFtKON}5MBdd&@__(3))YAi|! z?D0v?V%L7)=WdW3@e_tt>Kc6>nGTRi>&bF@{j~5dYn@i232P)T?`?l^2+#h~!$Bk; za{fK3m)33>M|;&{jf9T?I=&%E9J;m+CgQwH9p`0#K@Z$Y~~=a`a9UMf{!min&=7J@)h4v*0;X9>VoW5Mhz2X3}43|FG{AuCZI(c}7U#w4BD z&SHJiXeuic0GZ_m#KHotu3{~TBkB?R4Hga`-IMKNijmHv<&mKkO_|Ktkv zO9(DR`wR!DKpT2ogu{5LjYR{6a+w#ywB(8Uch*{KH{0`?p5F=RJ95d3KWIIoZtZV! z7BnOD3<|dCcQK9{{0L3u8`%wpkHgl@$Oi*>slcSk2hN|j$NxfcR20C&M|6DEm^|li z+!eOhy!=X*P2%9?oY&BpKZLSvy4`c&D1uSx%O#R6jRwZ01!8NzQN6Rwg9T-DL%*NY` z8JDPEI;sSQ|CHx6EUdyX0)XcOFU+P-4!VsZ!>v!YBvt#r(4upyT-2_7ea^N;{Ij&X zhE3U4bw=*iBKiZ07wEqOJXy9`dhV{sko7lINW|JkwtkwQ^4UjI$AVua`LO539;Lqk z8CzuTfRaSfYjrrPwYvVtor~SiP8__FJjySE$n)w*`GV{J?AJANQWMBy?ArZ*tw{TS zqOA34VFSg6Qc$1uvC)^t1ljjxh_Wvx!IjMo`iR#_C%A~t?9E&U+vh|xHlZg1@Kcy zFU6nqa(06c;W}d){0`}ea5NsgKk812`Qhma!xTo`oK#k;-ZXi|#Qa!K%o838$0w7D zY0p&9q$84~u~j664^6wF--afhwgTmD;Cj$`BW5fVZ@7VB!xgrpFy5_u$HPnYHB#o( zZ4C#NRP_t}06lrpL-Mf-{qb|sijLG_7Chw5Xo zHfz6dk4*!bNvhXqYVR0OU{Zoux-xR+SE)3-rS3y{s_F}Is|Xf7n|sUck^<~>i|7() z*l&<(REL{4jin#_sU@%0i}Z1zy|Hw;&x7cgbt4sbaD1q5+V`MI)*< zVf_-Wi_&+yF`oQIL$i|3G3P9xN!#M6tMU^rs}s?0Pj<={)8-h*1@rm>6> zR&kPD@No$bA&O>Wobl*3TN71X_FB3Bi?x|Z^J(PkpI&#uq^l1ffUF=B8fjVRnU}Cl z+i7vIJUa@$>%8P`I?6_XA?XJ}3%3;K0~B%2j=4ik#v~Q4olMr9jlL(P&E>9Y8$|Tf#u+z<8olfX`zkmS*8%y|)&V zho`;A+uazyvAnKe|F)aY^Hf9I=+cP_sv4>r`scFfZ*>H&n^;cGp-BbU0`c>>BP5hr zBLC3Of+07zwP{_q_4NnyPTxcg)~?Q_*y#0E9SMG_;rWM)YUGT9ZQiB;oZ)^cXl1Th z@3Xk_vPhzGUDy{I>UfV>psNc21+u;#-pc%rbESSmnaJHMlYZqXXD&rp9$r?SS7O(IB3dQt_0qW`5zs zaVyKJ4nh55-Jf=;#z%j~zlpTF_rT=nC$Lm^%Y+jA2V28xIs)^*9_hVt@W#>9Y?{Om zEc7G^Dw|9E4Z?<~klm0KX_Pw?KWS;HS`vTmAx}$(+2m2)o6*NoDc&f6zL3B>P%_7! z!&ZCEK)EUKj$v==f5D#q)1dp$uV?se=-S!lOY1r08$f!XEMd+{?gi#&g~ZGAuf|;(lcs*fd_HV~%Vf#7xAPHm47>C5su^oL zSss6*&Kn0m;G`kid?j|yq`amn!S<83AI{>atloL1`W{K)Wro7v?^Vk+YD16$qJ4&Q z4Lt{oJWhXB;zMD6>4%b(BfIa}tS38N91iN5B0BQFo|UfW_}rTW>v;hD+&I^zJr!T} z5a6Bn^K3d~8v=?Gy&e{yh4|A2YeFa0c`28du{Ck)7jj&PmQ!(^aPALZo_`w{Oya9%BAZ+#6vF^M|dmAfEuA9Ld!zK@B>DC@w4FUR}+InqFc4NXO%%Uit=y zTji>%blr~?>3;5SMe~@w3h*WTe2=f1LB-ON`Q+5q$Qk7_?&%_q^#Kn8n;P3}gdT?cBy zikMD%GZ$mkwUc%D*9VSYdeKp~c`jy;m6g8**NB82%x5i%g!J^*s;DY(buf^P-=f1| zBxf{6pBC8-%oP2RpeHKc15ILx83jp-BP?GXu^nm>B^kwSaaI*ePv0 z3Fap77$`RoyfJ(RJ5saTY>?-is+L-l-=DqViDWPKVK;zc?ndCF!*!26Z+!7oyCEF%#=?Z| zb}Qri`;F*x=vjd0Im_)yAD02wu)cpy$Fn(q%16>%U^B_snt|?8S7PK~3md7s(=1a8 zzZ98^PQF<@AhX`tJX-5Apg_sP?JT~z%>eZ<8T2C&>?q1QY6Fob*gqS zz`6c46}XYS%sK>+O1&yl25x|_ckY9hcCvJgEMK``0N>cT#4G)3S6Z_Q`GK`eeCNfp=R_5Q(+iHR zvo+oKxyOl-0_Y}Ki%J9jWy>XqI}7fL^Sb*6-l>VFfSfW(_(G5WZ=R&+S+5Wems z)o9sZE<))P$|IY}!#3>O3Az(0utw}sVt=+SYgw1IHw7G>b_3cVeA`qFRGiNy0MMuo zB7}VafqWzAOC}TbeGtDjMVU~$>L58Vw1G1k{BHeDmIKy+c_z`BhQym9n8 zaA}3nxB(KG%sWMq2WLeJ!TmAl;x~%k9QK7534LX#kb5AXL(D>Ey5IPM1o_VQ=vtL` z*DDt;8T)chG@hbM=t{U+aaH*(B>Pb7Lne)Xj5ipbkuvZTAL0BIhEj?WVWe=PT0Mw? zsqfzUg9C?R!_(E=i%?A?aX-b%lr}Mgs8&_+EQ<24OxqLbpW~r z4AtEL`NR9I)ym_SD?oK`vAH7F34=RWtrVtb!_M~hvq!q9{QQCM6Naic&cQ1$LffEW z*2hU#vgo&`xWw_sw>f}&= z^38pqe|wf@WWvbkFvk4V}L*cl**88hbXGPCD^+NByOrJqrgBd&ecshvQEB@ z;oP~dEw=B^ql=&3xtjK(|6980BP3o+|HO(N>5J$I(G!ROdL7TK^+VExB}-}v+Ib3T z-ZCaflOkov`moH`C%OIdZ*tQ5-1%CEU0&>Ff#GMM=zHD>LSOZgm`Tl>^GOJjCY2|h zh+a*Z_grEB4g_wJNt`o|?S|oS=F%3%WkKV*XS3yLHIVMUh@ibajM5dU^&dw?_j`_UDs|G>TznA zhCHc#ZetBSGY~=3aIzb#VQLClF&EuTcBpJj9=>KIT(o)cS-lazr>cn=B+yM08VtkF zsT%I>E6F^^@5}cEbq5?FvEWx{nA@d2LNy?jPTNj()m;vpGQ*YcEX3bDg*1giW)4A6 zP9Dae2@t1DNB~P_yoFbZZ1yfe#I;R=n$v3;J7mk*bniQB8BemP=PY`*>oI!U5(<`;0eiNWm6Az{B0JNDuv}`c z#fVWdPPrksr>M`4&(bvC$JW;UDU)tah=7U7O-+Fd4qZzQUVRAEACnt!g=3+=WMbjy!x;L>=v{;AO%wfdLUCVxc5A?O*OGP!+;iBq z19*}8kCgvF2=!wLI1w1GxC(grjxs9%0hj7)^z2;uwyaniFaRbX&&odrvsNA zK=K2oaMn4X45uS~p)k1>)5-Lwrrtw`uV2ZMH_uu>%VTj~{Gdmcw|hGi98gpKBE#%5 z6V<7)&CKKz2$8LJns8H~_uWxD3m*e(^XHu23wBz99Rig4Irhh8MAbJF=TC5=-u)BM zLHR;02VR$0@G!Y#3APhNuM>`CvJez|j#-9wJhs`B9u8H$`sGL}ePvPTUGgWXBIOWy z6RIi5bI0hX%>Qa|z{8gB~4^v;EcwkTKu#*E5~vVhY$PQ+SFltJEr zQpUpY*v*89!kG3~(e9Y2nj35NHt)VI*Kz4 zUOTp~if`}QgU6K6PP$sII#+u5bJ*T&L{~IK;|T`rmGLGiqF%FOMe^m0NN1yl_vz`zdUtu<0oQ!E!bE$JV{GFKnt zIP&x7NjYxjn_>#Ogimjv@)s-1XM-65MlijMIzWA`A?b=0Ks){hVFkz5ybl>62b9)DV1ZVf5%toc|;15I0d z>^>V-+Y8L;88?x@0u?M(?)ZaUIX%Z`$Tf~a z^3*F4S@Xn)+3bmir4aajk-61PV=dgD`OIzXt>*%Gt{;O=5TvaHDFqzIJ9ZC*UEKJH zgtnh)l>Kl}4*+Hbz}Z)i{ag85fN{~MoM$Jc7=TkV@(`Hega{*|znlc-O->bjstiB4 z_}DV#wLdY=p+JAbEKOFY2E*pRv~Yu=EFX-@vAQ{M75ts!E;m<*#)xoS^{pSSiViEP zcV*tzBN#Z(*(59_-26N*Eq|7o@%=HgpJSk$qC=R?`i5-Bg-;)>qz!znKE;O_#P<0G z)DORm*{o9a((AF+6pjI`5$O4#@5oIT=uzaF@hEyb){-VxOdcm7pM!IVWnH1M5bO&l zw(mX}bQPNL+JI(wJPfDMHMZ_?DwDV2-d(=STY0!#u8QtW+8Iq)rpxb&;Qwm*j^`wKjzuDu%Pf#H znT9ky)OXHt1>#-2FOW|tz|LYrmr{&AG`w6-Ev4iwZti|FnK$36J>P1S@OB#r3u-Lg z<1BRAZ#w_$hjt1GC420u?oTrnT#$R}#S441Oqk06No*{vMU`UIOv=UYbY|hhtz9ei zy^F0Ttv*l`ranzXe+&90C_i7}Gii1n!$Z&6hsMvLK-T$o2f#^fYFU(*f738A0vK>2 zSR#xxgYLoY;X`ggfk7Sca{gxk75+6$(UYx^jA(W&X&v>(t}7D>7{9l0DWQj7Vmd`- z`}@b?uZj{2xA}e#2{5oGEtLhgArcvest5d@3%{&QSKsZEdEbr;U71+cvfU+%H@hQAmqiNTIRJ1CB>3 zgw+1~NL8{Mj8x~qNVReiU5265QUP>5^G1V*noN0!8&_~e5PXC=B{$dpysZ~SZT(2N=BXo!z_~bNK-*@P6irMUr zZGp=@#cz4Hc(-O#v0lY_!CLgJjg4hO?!WGF&V_w=MtlMmhRFCKT9=y;;7-_}#y0-& zFg&8BgR6~8W&W5I*{IWD7?G)XT(0V?m{pT1o0Y{G9_*F2>_lg^B?sN_9tZQiW_`KR z5`aJ`jSUoZ|GJ-zT3aQ4qQ+8q$@dU^1Db$B{q5HjQ(=nku#Nb0t~*jC5og5K6D3az z+;6Ak+Ll?tULpVV06@bo8d5?ZpjWGrdxudQm1uU_AwbnsQ<;Sw|4ssBRm@l?h9lYT zqJ4f|@&Ug~LX1@`86AOM+^*cwX9bvd!jZe)N#YONUd1Che!)m57t8mO zCYG^$C&JqDz1>p;Z|TW@G+*Po*dN)?Pxr!vaT5Xz;AS$A2H1nh1$NLH6Hg;jekZIf zO@V{#S0a(`v^UWCLcH9MGsTbB$+JEB7~1xZKI zRRvl34S3jh$)UVzzePDQ742!SA&)Hv-Az@llCwAXLHh*=z0y0qmiv)*h0B$H5aElf zHr=~rc(OWnRo}Uci@v+p!cH$&=V3kj=SY?wR%YIG&^DsDJ>UwssW;c7gY$F`sm@V> zLai2ZCJD?GGC|o`hUuoI|8(8H*o>OVYQr7~peNnW36Q|E8+YeAos+*h^vOQeLd;ui zNVhv?^Hbj%k5tIRq9XdZ+u8KxY5+SDsjUJG7;tuFii3)$Fl~XZN=btoVY7lNcM_63 zL*y^a9|yW8OyA&N3p+eWA`V$4qzN+sXi~HcIT7wZZDleu{A_j-F}Y7I<b6kp{=}QqH)?>NOOdDsp3{2yE%m9l{EOh%x_uTXFW!sg$eSv%M!typ#^Zj5oPm}D zysb9gM{-<M@TBa&mHDJT<6%T%32^<1OX*pAt6=5)Kt7>i%VS(2-L(}H8xwn^)XK_ zh3|1E7k^-+{CAk@1;|(C(d~Uu@-Kdnr{H+AtX;JX9a?K6oc45o2tSHk-|tdz_>^^f zU=OPP)u(+HdbE{q`X^z|zsbM%%AKn*%&*gq%OB{voE_5EE}S0(>gYcOGsnN!;5A#2 zTm$77V+($1t&<=|u^=G9EPeJY;XnpY!jI$EIqf|h#*S3qy7pu7Lb8^SqH9AflY_Ya z1AD5~p9DoX!K7SfiIRv8%OVOk0eJmByq^Qy7UOv@&GkBW^vhsHj zld=oGRM3p|LUon$O3K zn%l>O6FQ~DB9HQlYx>xW1G-e9b`aqUxPcc50;yUa1eb3%XC5;Tik;zCqu(!|-nSN~ z!YGHgZpE2a1|o6I3O}OMK%L|!^EP9KU9B@xCsSKTI=oKmphnlck=zE5{3Leiv zY+(ZVOzX)Wt$rXp69RCv0Y)b*ry8%*gGcHIrrb(T%B$szTKoC2ofAv+QyTyJxAOk) zW&Z#CPv(EqLFM;sg^EObpfD<+_^)DKqxuk-+eU9%yYi1!IGb)L+?UB~j5M_%&TM?Q zg`RA^up+%~Ny!1XwFlXgI}VQPmqO%nR4P~<2AJX~wG6h5LZkuJJZ~_jF!_qOMI=(o z)TDv8Vuu#)aZM35d|_W}syENHL!@xsAcFiRmh}Ue!B+(rrj~4;teh5L?1wBSg23)(#Il zm2ZH4R9xk&TK^SH$HLpCZ)E?PLGJmms~f0Pxtw~ zX!JHOMQM!aPo@W+FaaQnm7hWGom*yD{h$18VDV@S1C3RbYzTzQbBp&aO=I(CGGsA2 z)wM&9(t1vYou5s>_nUdVIXNJEn+qab+zC!-4cawsPkLGcR8}CrQ%nNDqRGInU`^H@ zwH}mQF?XmCJ^qsE{pAlA8x+juyES zfyO(+euMDBOSACTI46YWU>(>9OKh8At}zTzR~|Xo^07o+&}sa(2N(k%uW4fFPZF zh3Bk3a&5V$sr2f{$6-Hbmy!{p;a)R&P9hGXl79E&mDy>VW19=0SDAyqwY%>T6WRpfU$t>Q_lu_W6kY0u z#Pk)l>mDRZO0@=WL2jKmC%Sd~&sAnN=MN#!c#>}i=u$H@gh}vrG`qc^d;VPE@X43A zbfneul${TXuyZEsD1?Zyvp$$PMxaps;)1B)MuaRNKS|GEfu$IFTS$-=0Gyz(!D#$V z4-9g)t|L&PBS?f0TR0bZCQD>Ve*|Tp%wn4mb}bpZP~UxsCthB4?ALD)cx&d%-ykQg z~wLj;kbfjxs^poyZ&hddREFVSPS@>sR_JkJEX+hPNYwC{ngR;qEFZ!B@ zbBhyoq8Ff_4-}KVgT^e&-uo4)bRrL1ruF2#ZudYc8eO%snGlUuKEi+A(yN>}L(-p)RG@L0)3MO;Zt*hf? zr1(d-OW7>Y^)<1V){Gf=Q=e~Uc`JKUJL9ADQ_7%phPJWc=ol1rFSE;Ip4u%K}qwkAq;r~ z(8t#ma9E5a(f%baCFVg6@K9)IuE@wyHU3dD8w*!)hxwv|Sfl3zdcGiqN2oAln*?&c zd;d<{F9l_cp3E`>!2{<=;gKX3lb+3euBhI z&vp->Ur#>4eMgR>j9v$&rM7fl@=&p|0X`ougiSYy%}NA8~&Q zk6-I3Tw}xnQaD*BKz3{!8F5{%#*jhJ-bqQqYsk9W^H`eYJso+uq%95HoeD`_O5WHu z;8`(V1Pdf)I4m`2`8UX(?8;M^@4J6$_V=59>D`au7y?ao?C}5@@+BAe0SzJ7ogj|E zfD_4~g+uPgg`&pG))Qwl%?$EHA}$}?6}UUzdk?8o^A}8wc_8;b%x zyd)Jk0JHYhmUh)q2a#jRC{Xw-7%@*E@g{N;x8`)(v5~b%h9LfxvEzqp2TNy$%Y1}2 zW^qkTuCMz)MV&HE=-#sT(n`#ma~fCxUvJ$XzTQI65&wbdstK({d$pN&lj{&)hGn@tu&?NBg#8xAPr^kO>Pc5BH{O~HV zx5oX1!&LMEw@+uG3q3;GL0V?R&ecknMRjSL<(re=Uf zSO7Gl-3+;RU3#}Io3ow<5TG_K01tbFA6Fj?xL-nAG9?6M-9M#r(e!=bnc6XVj zlf02HYlw;A>~x(-n{sp-mtM4ok>@X73d7jW4_7df2YI+2{rTyceK}3S()t)#6Ol#) zz7aK95!Q#QBUjD0X3A?7vZmU^ze!c`wqb#%XEo!KTR&N)iScaYz#2`V)9B~T_6 z?+JtF9b9TpnhTsL06xsNt=VR%CiE`Jl}G?ZsS1um6%PEOa>`tg<6GS-;~pONnHaZl zRq=?lLor{U4V(R<;-k8`C^twZGaE0qFdQ0&Jj+DETr26_D3<16iF4s6^_ixkXB-7u zQL}=7^0C$g9VI~HnL~nxp+`Mh=mMAs;hpO$Hw;Wy+mpZb3Iol)#H-1O8G(DHF)a>1 z)8~Y@;5|VVd~-b|(2Une?1kQa%uIvABM6$@!a{ivd`g4->j zPtd0|?>|b@=vXPpUQsu3mRk0}!)-&SGwa9=w|PCah8mVkmG9m)!?gl8&gyt}BF$hG z16>*3#4u_qg`42tQJY}l(m2U~`cZs(*O2+t7l+MLtr+pMyJ^Vq$6s&ABO^Zlg}oz$ zO#2^%Ch7m_zjOYZJ`#|(E#UbH38M{Vo}wme&>=tC&ZM0xQ(8yfjMJ{Ff4y)fFO#J} zMMCX}sL01Qo_H1cDtD7p*!~@g+8A*TlxtZkG`2?rv@4*-l5Yv57Q!5nVDA~s9BVj3 zr)84Xjm`L#&CVr%DP42=!QRQ6(#O)A82vc&7iEZ|2Hv4|VnDZ_b?8#(s{~cS=b6{wa65%C>-W(=>W!@els1RL9NP;BM zr-7PUVDUgrQL)KQxie{6Pe!Aad(F$Pu{w-DR$1!H)_VIfZum1$WwmhwzqSg+kcqA! z9;au*p-V07W@>h9@^szS21xBJR*F{^cZ&c*A9v-k;|(~^4`s{jT6w<$IzM`Yg%nIv z?a!|D-1Gg+*EWDIY~DBYOa%IP-pJa^4hpaf$JkH~|Ty!q{4iiux(S@^U3kJK* ztB38FL z-yBTTyV{~LR|ApRDMdm!C|vSSA=XaMSAzcteQq-5vNb7@dNb?S?`@` ztu~+1jwfa>yq8j)X{v)7)u^W0mqyg!IEw)+Vr+})eY5EKkvrX`UwhvDY}GjO@|kyf zFV^7==F{REdQdw0^aGWRc7-McA zuF@O5dO4EOE_wGw~VF;`xE7Z|^QPKCz6aaKqmfRuf96yPTsVlIVk z`sj-D?W(L0m~?*iBmEKU%!TQte?0c`l-~iQpclvnGECHNc;-%9-zM$fo-$E9&I{JoPYRxP>z}mitsk*p&?@TQDaS zj`o$dv^6+&oZ| zy%c@=iBY&URP7SlS=pxrB7tfs+NL@5V!IxyLw>Ktu<#JFa8J?Ei$Wj5k!l$&qfgPq zYg`hQc*Cx%ptgKP`Y4Z{6b#{v7@NgeBw+%_7iZ%_rE!%`aM~Y&oalzZ-0Dco*!qTG zYfvQY#m)NgOAXfM7vGIqV(MggCusH`yhSHLiT4ZE!3yYU`;xeR=8$6G)j2pAAcif# z*OlitIf6A8J|&rtYeAN-sy?xd*qHlxUoEe!Gma-XmhIG$@T?0?Ew4U7Z6#34Z3IyB z3{R&F&Il5B7obs)W7U?ptI2bX*b>FhrVca44`t-b-=&q_cq*}n(ADF=p!tF*vIP12 z=Yw*JH$s^*HH(AIo!diulFLiU9-i4tF7;YTXDOoON{ zkAH{${p^8Qq=p7knscu~om04;#v1(g~5`Y7jl=y+CSx`e%|V$pN@ZKiCMw+32-=443Ta9P#@^NUS;sM4CLZOJEX0}k5kBxyUJo{T%)hYxxyzj(KPg&UC**iR zB3{D@Yc<+_`_t=doX?YbkrQYNquYVeDpW939=E;FSp)&jczmAL_9mMp>+9kbA@8;F zGr6l{74CfD9UZNuYkekK{qW%TTd1IjQa(4I!l55GbI3dhY+Pj3_Afq{H{d~+YVc7w zT-Uv?_oms$T{@jl;>*@LtOKlv2tn*OLO}l;ApC$#Mgaw?MfoTs&yGBVgfr1fWcBb@w}swo6dyK0O8iD=t1C}7$OG=VSkh#OQb zBS7;P%<%mpodD0EKpZe2#=Tqli%KBWB-c}$qeA=MSmu@5$c1ks3FYa*-lQt6l$CFf zsOU7#QX>9c$p8Hl%-`OICuQcW4IXF{GZvO(fC$)%y>BvIvHJ18W7!*4;Tob$+e#v5 zZ|PW;@i5nSQ|%*SDd#~A%j>|8OEmQAiwkQi)5=MtXC=n;6vnuN+aBje6W=2j=ZmoR zCIS_9Q$NR;=z2wt3>x03P1H#|%9C4k9rtNl2QtbHVBQmi0C5wS+n&RqWj!F6wV>%M zmKR^ z?Zc6`r7{?Gq^=rlC%p&g3}lhsSn}nKeeA;Nve;#tWZBol_qI70*9;St#VVUe=$YzY zlxc{9M>qMIgVWu_Q2&zF9SilIk1po3_Ua^VH1>YDs_t{%k_P1^PO^n^@x;FH#^P=fQfzzz@cn}!`z@I$9TBi;)8;?26Nz#14m}HaqE`3$NfnC>|^9&F}%T=%21Lszu^wYbneGM32uJt(ibk-VD*8BCrhV)8%r&F;fuBf`di$i~ z5eAEQKc8!NalQUZ|BDINNVtt-ZIhoI!xFs0V1>cnRgEP|doN}*gqLC!PaQBgO)#(%!uzdduwe<|DYax(Vvo2aX&nyU}| z4o;H-MvxxzlbfwMJgNywvS&=k%ojAD3*E)-5&V0+MYC2xuN?VAJL zZ23Q>6TAKdcXDQ^$bl+}yOwzVjiXUvn~1S0d3fVefd8G?ly0`l``14dG8WMA3Z%jf zLD%JrTRRYTMzyad33}PU8AuMVvBb+Ekr`K`EYk6Ea}g9@aT7U)w);1q*=#ceP-oFT zJq!QSC+~X$M_N;I0@Rf(O}I*wcf&2u;5_X=F7+3B?z+Q!Gbxt3zLJhh`q43bxW@2J zDc)#Q_a@LW&>Ik3fwEP5!{*Sj_h9l2)4i@$)uXOW4q4ZiQW+$f=SR=c%hxwNmEIS6 z`|q#)w>y#mCkT?0s!)^k^Ce#%iS4hOBh?}j;YjZ8t7EO^ZJ~Q6 zNRJu$H%E^21u+RgJ``gEtYH=gs7YtWPPUvo^H^1Sn#X|UWA#$)UArq^KenU%nV-*e zUw%u+SU_9PA5Fj0rH2%R{|%_3Z-4^WY%O<(2}aXwyqS~ac*1kP=8-ezrTvhUL!XNA zo#Z{`OYAbbs7$p6+C9so*3R}o%k_|vBaI&?tb*NgV-*gZmH?b`m}OKYL-oe0ZQsOM z*N)oHU6RIj3MU39mi-4d$ic zOk(frn+5Z^Vu^LeFJEaHgmP zBzLoH!Kcmm;ey!w@$}`D0V_$CJc9GsbbfHAW^jszSyOp!gzGJ5yGTwQ?O1X%_%1Ki zk=5!k_Xc8+%)dfpSv$Jlj+;@2?{}1pevlKEayGiGrF)&4=eR)nbxWE(P-gx+e0-=5 zt|TQgx>+TZlbGd!GnpItIUlno^w_j%H2hM)`QE8FTXTj5F^dV@Dc_kt10z#r{_T?# zL5~Aa7#=hMeM`CqH^6-`rC*(0lLe{Ir*Ys&!x~4kNZ;`)Gd|a&!F~z=9NxA0hV?8 zbTY?t&|udcI8EoGxjP@tDE-^@nZyAFRgCso42>~S5uapc!aW)MQO+8(J|8|5!T=Pl z8>Zf3B!&!^Y+vx&1^Gy|e6qG7povo4>%({?Ap{@z825N?C)wQw6ZuLIDl(7qNGRw?=hkjWW59rCETvYeQz6h z^7g#6Jzh)p!G52ViCC4|R)qVTa7*`HLmj#)g=4mK%$HD$>VHDqu@o2NO$br4c3t%$ zez#ToII*Mzl~4uYUQv4>-J<%juN&fKW-WkSyc^Ewcle&?5kQbhW6NIeK9zxq@+Seu}+zMp`GY_*@AV*4K*& zmlX1Gy*2g0EKGa#PuZwbR2#Tdq;l3D&m(y~&h5s9+G{!F+F#+@gwa4+z5UaB=Z8OLm8XN&5l`~ zosUZAuN_>9ot9l+zMIUu32dSgmZX%-)t_lf2$h+?dG_iP&5wO);%*Lw(eL0+pGrzW zd%d%b^F_I=ck8Am7qZOnXx>cSv{6AG9=O_fo@4fDv+a=ev$AJ^yRw|hDm7iJeoLk# zvo*f^#3u~)lmqSh^*cKBzx?oS^T-H@ya{_0yE(4uT@8Vd@$G{DL%nPLpY^W3lc_q8 zE0X|3q1|saJqm#E1>0*{2*+efqO$dppo)54dURo5sD)0BBvzAYNJohp^8+9?o9B*1 zuoBH?yfxd>*Ll(}1{tdisqCI)`-}~p%nO=eU}|)qW29K$M$Z-G)R0S-xGh2rLkj1U zo!+Dx4?np}ry+rrO{=NBR1Ib^Syjneh#n;WCfa>=@_WlHZ-A59dEo!9UyYdlOcr;`so7ks1?}kl!@n+SU~Snt621Bj$FhEWLp-}3%N%E&X&v|mMqy* zkzOAv$uS0i@%tSdD;Yry0op_2sCWu!P_*!BpPvcF8a!Tztj_gl=1_iI*#BkX%(ZAk89a)Dmie%=Z8@2(X<sl2mL>-s?p=8LFu*SflV9oNN~{nMuh0FM>Fs6 z`aP^$ovTMCzhOGh=lBn?jvo@*C1`hO@&k6LY}z3>bI6_&JQn`zn+IrTkNqN$@0)b7 zKC!3o%8AexCK@foWo4aLZoea{)bHM1S&$)oB?4B2n!WJUa_Q!s`&5wDe$M?_u%UTD zhsnX)d}~&Jv`OP(L5E75ub=GFS0fdvcF`oZ@C*D(bI)e5MxBfCBV2HtJ_=Lg&@J3N z(xmQtdrKl+w>ev1SJdZvj+;~aah)mUVc{^)D42T=-*SO4Bd12uJL~u1A>(m~FW~mA zLQc-kbwyBEegqA#1U3tV>#D0$>!up}sbnatjZ#UyaP^MsvHB#_&ZRy4KjId=00D$= zLRaH+_8CxfSJ7y%X!B(T*`;nf%Qsz)3N0N-75GW$Ts%@>jpSd{hRbpoQiUAb>!|t} z04oUJ(P_J5G$wJ1sq0n5I5oab*v*}abn9^Q9LoSaNv1A1K^a08u0@4G=ljvsXc8qD z?69Mt-nAu*SVpwYR>Y7~w3(CWR?fX2ttR^{9++6)`&5&-zG(Q_dXYNb@2%8^GptPh z3G)dZXp#vRvU{}nP(%&LoOym`YGh499Y_df%r_ z(d3F~Ds&QMYGJ2(@kNdK<{sp5Z-Kho|K3}#SwVI>7m38L;&aKM4uh1vh~`6jp!YQ7 zZog`DJX<0F(WCOE0Gaudtn!s=wO0SP4^bD>X@8>O03)CfWTRiQ0MLi49+_PWT` z=%o#9d0_hkzV{CTDr0q@nOu&Zdj?@|7ALulX-kke#@5_w@UHE<`w=ze$~uH`f9++q zCbP4_6RBaA95i$}8W73fcSh2G-WhAqxmd{7-D^rfuH!PmhOo7wZy<_G762MN$PxC} z-+?iZiXpTQP?pZYnM@-IrXvA4(X%H4>QGG%C3b4hf$`a@w3o%X-p{T9Ht7b6`WL8= zu=HM9Qoyrf0q5Z{7=^3tjLV77Ia-}1UWXUf5AZr~f9uhW>@kVCg!QG^Gcrkha%Mmb ztY%9OfPq+|3LiWZ<7Q0qanFqR&^xuaY%gl{vm71x8Qh zjRKwn;DB`f=K-O*k0h~IQcRLQL4S4G9$NSOcF6vlDB*_h1UH2tW6^hVb0H7Phmc=Q zFDd%*-v4-3!OyF=9yO0rKU&WAIKelSy^0V`35(k{Z@O@zulhJXGyF)%A zv*RN==C=3A%S{y{FFQQMUiyj-!Z?z18w`^~iX@o@l%87Ln4u=sk7Ggq&v+KFA0p7d z4uSytL7j7l{vU@5RSmu2OB5S#mk)>XmS`)6x{no)!I_J+Q{D2exY=!-F^HL2Fmg67 z&%6CexYX|XsTH=OuuyR4)1eM$FmS%)SZlDF@DO++C)ozsqKlr(!3?a!1M))ki1&-T zTo+}zhR&5x&QV07bs>^zy%`a%H{p$WOs-kP1DCI2C&9E8Dw2h2ZY zvcX*~%|ym)i4Wz!RQImwT$%ZqI$*?Wm90Uoch9fxh8?48+iUtQ*tM2}^T?iuL=a(I z)Dl3LDYpSBB5rvW@DGt%;F5d{qQ@Rra~SzKxJw{hp_2HFHi`;ywB+a51J=k=;gQ@V zgE}t|i5l&=428vQ&0La#nb#x5EMGI)o(n@>s`?w+;M{8gYYYc#EQUvt5kDdOPArI| z@h~vlN)7S{mpN3lHtP!JCFb19s=(9f)}qsq%hT;;%DE4T?XittIc4gppS=uYT{s#` zKJ*{(UBAr}@e$W^Dv9s}oOo|93()rsS4Ir)+K(pGMpq}Xdh9z^cGlV`I2rrPD5O(Q zpH|Qpb#;82KYk{m4M?L$g!=tO^-S$2njn6N#0@5FwrSv4*2KdZK!)G}f^90nD#@a$ z>g&Q_aaEkxkW0$Xqp!ZHR;7f-CT+Jy>Tm|Jv|MICMq(NPZ!G~*t;?4-#b^C~zOPZ@ zTR`}IdGUyE(Tc~`c^(nC9N8PQ=;O1isQ1L+!$GZ(y-OflCdXa_had1LN#tSZ??14g zmd95L{(z>Wm|nK~rud76=(6LhypPn=9G^C3oQY4YKKM2-Kk3qf;3B6Z=bxpTH`n2I z8myKxROj8t)*}vjWWE&iO`x?($~ewC($s|;(&I1bA?m$AZ1=^)j@vfZd<{rCzQT9g zqC0(D*~!>j^lQ-xfuv*qi3AR-gZxl0^A*u%9ANH>dY(+7M`(Xm)`64*D(b+V;sA&T zAdT%zqvf}fKdvWdlv>9T7_ojC= zjMMSR=L;?yBmZXD{MSz#JokYUvS*a!3@*#IYhYdWiVp6fzV9A_v2Ym4jQALjY6oG0 zarME&FRvC>`(6Q9WBaP)TTN5rvpyyLLEQzzxJr(0^P&i`?kOE8wHE>T8wZH(0vsTd zLzb;YLH`iQz?rArAU{&gnbfFG5+v!2CJKi(c=^>7Zd#oEWDUx+zn^({Hx6I=G^ zf^>CKzYe5u1ng|ifAGAj$%ydM@lSJ zM_f1Z{+6h&X@B-B&!iDEZ|z)!DeE!@ZE$$>0W$ede>0TMA08N77_=0yCLY8hLI4ra zBY3stR~3vF&MSYZ9a_8hJ``&r4$g?3k7$b6EoXrzdQ4TN3;m6rVF)h}X09QZwgMmr zfB*m{Rkn|y3y?$!6VN^DfLEasiVR$!LJeVz{tAf2l}KopO+~nxae}Fv67eUg&Mm7_mrl>pHd=PcST_0Yf;C6+mMG0 zHL3jX1g~mPX8C8ZD1o{FK};~E5eenFHxLUI2xvU(jC)BK-*+mF(|A60O-~%>Bj|2( z+o;Ob3Z}hrN{#gCuoe58)l~pkU7yC0`{vU4qv&F=lo@McMU=4y>$n9J^~z6|MR}Gp zlO^jY2k(gf;-RC@ls_nU34gy^`}vqt)&=j?J^4RGiut5TH_FwZc~){FA3f!z5Nd-R zodcPKQ5eMV4xeWEwKVWdi`LZz_CF{m8*4{P<_9&Eg!U#i#>uo ziagBcc=!lB`7thaJTlJr(#EAOSWEpyrC=UUO}a4%2j#58Kr#EDfua!-1^!nbnl#?5 zJmgIg_j;iAVm|Qssf!QKEyJ=}7{fbmBpQl19VTcKS2m@vflpa~RL(<5DFa8r*a81l zaO7{Ibc&N$f7E32f4w(*d_wtSO@=p1vGHlT&v%3pU~E)pXkJn&W2%2pp#}h($CvcH zs~x_(<4e}GxA}2CIA~o22Q?(;QW%L@b7QrI#`zA!aETfx9nNgt^>?snfubX)Xv^R2 z^rl}abQM*gqMVXIje+uO0H=tM%B1{EYIIE!Lh&q|I{gY5go zqBHp@W1DDKc^WvSPx|0Y|9elGHrTt40;Z1OW^A;p-RLgQ=lk0nH*X&_1uUa!e}Sk5 zU59ypm~r@lsg07qM|_v;y&=|=$sitK`y_dR%~0f)BYPIs_wITHU2EfEXq& z36keU_gM@P{5>KkVni)YLlhj>Y3FRV6~Wu0vmw{! zXB!FOKeKhNU49J=T#n`8>eVLC{!HyhtRY)0K@p@&3$!Yns*q$2tj(5~4kWLEmBjg& zFgP604>cPLwev2vwV%?H?MVIkAXL(yT|u77h_f!4rclc6*o~KuGbyn^%%-aqgIs$7 zc%E+Lqz4#jk8)4x8wcoWXODC`i|w`fiIdw8XMre71<04%XSX7{k!yBF0A0--dH@NPTr#}YR>FLbZ>BkqD88V1>xgUPvwN3A76)}8L> zPGLO=`)Y4KOi$>Wy_?Rj8k`c;*5J3; zi^FmS_hpMuUMYL!{njNd8m8K4IB&rJJS8NPe3{4u3P&CQldYNHqbO;foTT=z^gm+3 zH?o5Iuzjjcx_+HiLDWVCynFD7a(G8u0#tGE*v7Zn0)3_ShR2^(P- zugiW#FJ{7lCGj;M<;-sb`0z_$g2@9-;2nkTIDe)8N&dT|1JK;6{!ZeQCOjEz)(XyQ z0q0s3R{-2+g0vF{`(53FWJgDz4RGu-4|hqLemSOR-PvKT<2*{19LIe>Fb4TtPbf&Y z%4?ktF;F4RPmsnw$T{RoUD|;X&j6MeAKDW+_X1s$6p!?TA0s|){fp|P%YjK;sE~8| z!^>wEBBlGhx}LT@e|zk`XbA5yOGZoSo8_Jqv(;Tt7y(r^5tELA{jEVj@O2%fLS8xq zGyg6CBDj$)`sle_I0uD^WPuEa&_XCD$R?m5?v`UQ^1ZgE;bdHqYxdb2i2-RB>C#|| zR^EM&(p2}r)3I9orW7GS5TM<61D|3Bwz>rX`-}KpvftsSO?tz#fsp7)WQ)e(M{t3z zlYP`&ROdLH?HcisPr-2YS)kQuTwh(QT&2`?L^o0?S%alICxi-dEvI3W6oYJ$hAt6F zG(bEcAc?HzIQ|R!FUy|f9GnFN+XgrXmFGK?aHx6RTWuYg(=YAcjONGkF4R^l_i(kx zUSAnfjCkyGh3>lL2C5tW_eE_E1DI<3aQTDPDIL;CviwI>7b6w9=g>HPt`L2y$qe77 zL-fYCu4~!73;wb{468}!hdF56_K_24Pobvuqt_2IQT7v+O3BrNG$H5SL25GMKrWGU z%w3S1=)pZna$2O3N#B2#+@YctICeYR??msZYX)+KZ=M#KcbyI&-!3`;70#YO&VR= ztGuys^}8~6rbI3X=+)FSuJk9ww;yTo!aw-a7}E+9g;DdsB{&N7rUTw$iGqEf@g@m; z1Sb9-PC@F z507WKoMaP*#S9tgro8;_oM-Zt-NC(6$zU7Y)&E?!RR9UOLMX9ywv zA_*(l$2e;g1`E7}Q;UK(+ZBQ{+6db;Aq7Y`TP%OHq0l241(71TAUU3!VGJ#*WCJ2i zCl{2hiD7;K;_yAb_69ZAimscTOa((O^9JNt zdv40pOFDwH|BkQM?&G}{#B*>-^GUJVXI93BX6%UYt92t{ku1%(V|*fd-!0^x5xDv2 zS`=IXftlTM2l`{^H9K(M?OZaY-%ed%B}%idzj?pfkeL6L2#jEcH%i6QXF62+7*fW# z@AfeE$Tk`-sGh#0A>)_gZwF3kixtv`F4>M0L{lh~M(G+pYVZzNA_pGc)iy1&m|P=b z#(@}W9riGHz}3q&cf~&K*ArKJ<9(gyj(K!hbarz{iE`TT#xj36@KpelAAeER9Isw@ zWnziTi18+!&vpFV?^RHmb>oig0)=Dy)}uUMbGw*b)W{*GHKSf&J>U%W1v>I8|GKD= zr1K_+oZL72V2}{7LlfYG8Ea7oW^D&oNYoG>xvHokpPfA)Z~66+Nd3C11ku1J-^F;& zcCHD0kGH`;gb(kM*xe{sLfX*;zA@xZ%1jtknIeg7aR4*dY{Ub*(Pkd6WTH)LrE!Ah z)rZ=hD~8u~IIpDiGbi2*_4R9txOMvKS7~q;{9{9Jw}OGNZs>I=Cd!=rfkM-^2stsC z<;(WN#=u}yl$uMrsPIOtg&*I$BQfk&GL4qf8;oj?fI%FnqRfGKT2&jZeR?GW$Orzq ziA##$BsEI&7R&g&n|Sg_w8EGpPcxp&^xK7>@HaXC8tvx=PAYzXpX`6l`W5;2iwhkL z2%yNCqt!s}TX7_-Q%xVj5v)-n8^E7uY3OTz?{4K=@gvIjZ#!N5@LouslN9xTn}Cwu zYa;`21@1e+CRIGP9nOlNpOueLNjf?+?ZJICL=#r;D_0_>2$S3fV!FQ8$2j6knW!dF zKeo`(Xv`|*Dr%7%~_NA(ERJoOrd@af+D`022g_Qnp(|R zg4_9*?2ZlHWug~yQ_jw&@IHP*MJMC6+kj3&{VgvhF#S*agYJJ}2M7(a1r)Em&cg|2 z#Pi4B&%>0}V@Ot_7(~Y1-XxZnt>-%z^g<&gjxU)P7k@g+?+<^3{5vEDJFCSPx|ANO z0*0$cXDO+SlsoP;zu@y{NStkiSGe!(r$nrX)g@=*w9W`L2C!(K((W8{i|8D4&x_>A z`g~hWj;7220jkEO1;}lB7!9a_4of$6`(?}P9a-B z9_{_pEyYmFpH{Jvy-+1VHC$3l&ba34xtrTIJMu)3a<1nWcs)S8DGqMHT9;MV#X7{D z8QLLQFLT@(I0U`-*d_i2dSBWsPXlx@8p=-0F9^L&G?_=nVvO@@xU$77VO8M|n{S51 z&^dVA7!i!he~=dX=)Wh?S6BD{N9yO_l0W~apMU*7+H)-+v8#j|qfk$DSSnGZEeLrF ze>^Tku>74!L!LUff}V`FZty1TwD_}obBS0J#0+Hx(0*Iq2Ui<5S z9PtbliN+b3U>dLCmt*os`nVl!K3w~*G&#ReuE0gJ zHaO1S7o#?Qt-KEJ8$nVp{P9yr-J0;!$==Zj;wLcRcP=;N`9z2*{ig4_1x^WyF_=@2 zrLgjEzcVSh#E*4E9&xho&ETTA^?vVF>U?XQ8`v7S9ZR|O9qb!R3Kril>KDw#U}hWP zSM>9>0)04jJ+0f+Ep!o@ia20IOq%m$4ZZNy+;(S{{U@Oztzt?lua9L4rsAw;?aIs< zImZ+B;G~l`6;d=)oy7i_Fg6kpBFzG8+>hp z&h%8-()&{2?z*|j>M-R3gyoU_;4h?&kK_Fr*ylda_3m#>+;1 zW$uB1fLXDw*)|feG4sTP`c3J_U+j&O`6*l!#sf@@jvu2Jeq8|;!UBQK;C|{bMHHVI z;=O5gKgVYHg^TrBxr>gFA!Z@APd)FZApFn@m_n)LpvPrVZh#7Z~n4 zXH-e+!GMIVdEox@!8gLIT%!4~U3txm#c;wY>rROc5sQdq^ZU8UmyYY)vpxj|^BM^c zh=aL^ud_#+0F~=Pd6sb%UVt4sS;|=Tw9i)=`#CEk(oDv+QBQa}pc?D`WZGAbZO2A>`Vl1FbV_Xq>zr(Q-d#RQ|erP>9-vr1gx`_5o4fE`6h? zzct@@>OQK#>lF}m**UB!!W{6~r4{EBAG`P?@05iNJuh+ga1?TWU2b)j_EGji*f}Zb zy_fh}5?9vZxAE9tlFfo(tbac!in*>L$}D_&W8K;GsB5}(v}q-q!x06JQ}wrfv{3&z zBJMQ%32%Wwcp}o%2?}Pg1<{<`MyYxqhfCiLS8IB=8g@)qnSEZT!P%=BnI^OtilT&$ z`gZ(96$8cDniOj-Q%eY}beOu zQ^vIL#n`(d9kPr=UF|i5&G&XrKMnDdJsu|vmtt+-r5G5UnBsH|JkAsTzEX~Q5sEWI z5znZ1pb{WlIg7q6$86fUn}r;L1J0idDGIUh@%A1%_AR17@pOFNr8{y1A1jW|#z?0sQ~G%Tt+T+O8$NCh-6?@kBY8(cSqJ8c8*hfIe)zm@NLhdt zGPB5(P^Zye5DR5lIT&GA`$e95iw5PkxwnS|S`JEYw&d4lo=}CaCGsTWhwhpA(=&xh zVlS=lYCY``@Vg}Hv!&Vj?Rmo!MylhE`mZ_yd@#842=K?6|7gaJ862UbCRd~&wz zuvpTSb4ptY6DmmTn_t(KBpDWG8ZXCjJT10i%e{=B>e3q8Fi5bCvZk}UxOV;EDGewm z05_1bq$IRQ$TaIhPOCm&Qml%@*`0co`hv(AjS||S%c3#gFmLrdp4aSANl}?Ppq6a@ zu{FjI=PVWx9boWlAZdn+xIRA+{TCI#j5Dq@X%4&UWX=&w7+VSHi*ws{PM~YN@*!Lo zu6*Czk`#4b8-%{_7nF_}Rr34LGxGx{N%DRH3j@cr%JmA2Rqp5oc?4VZV?`UST=jKt z)Q?`K7pNJ87mk?HZ-F&DUi`aOav=&_{(NqLsxm$}TaiR!M-yU)DH_3U9T2{IbtK7o z6pNGIho(XJGNp)yPSs+Pd0iTlhDni`$NUyzbjgA`+|# zS;LwmGz1I668QxR={fsI9dcadq29e|=gxf=3zPd-Cj=L0Q{?5GIk7GV(u?l&cN|~d zLcf9&1KbWPX&0HH#IvB1CXOx*xu3FpY(oSPj?NA^Ds;auq}kKP0h|CQd>q$u%J;aY zjQds_bx$*9|1mqgKP5hN7Z){woha$8T^u*W2K)UoyVPt(xQ21EY_bB zS%p2X#CxkNOVs*KvBW?Xb=?!%IqK~228_hNtz$Lvz@eqjBSV^TX?K`tO}k#@=2Ia}Ilt#{QBHxvAs2;*m^+_X-BytL`aMAYW^{07Hsi0Y8 zFTj#M@cap;Npju=>knI3)npsaH$_>MC2Bq&jJ7iqeH*$AlR$Q(Fu@M40LzP7KGw)4MVEH~)_D8+c?bEcD5Q(4q`3YU zuF1~9*@0o_vU4v~pbQn^N^}WxqCqVO9vxJO6%r3QU1c*8U7-T6m?#o8oL_y zLo6X2jBw4RnO{!2_nLJHMmc47$ff`Kn3Zx|WdNv@{-`8qkuyxd%+~pW)>9Ui=hEL4 z_W1`D8lU)VtUoACx)S>`vK zGMmSwKVti&8<#p48&&r~JfkI$Yvs|mS&w;*HOmaMbzC2Mns2v6V#TR-3H!z2eQt22biQV_lpK)9@?bE7NPfy`_ z=bpl_aH74mm|H9^UUA~;S8ANWKY|!)7Iy_b;m|c(DZPqjr^qx+1n0o3y){(o++yct z*R5SsLo4*^nd4oool+DSC$959+5_1oYYw>xQ1BS$!_wSF7Z z^{6T2jb1*n>q3p!o}3D-mJ6)&7mugHtj!&o{1v|f+2k=;QEt14> z&^cTAy`wMbG4z<$c^ALJA4W7Q8JJchnX9`B#XmWl6ksP>JAYh>CzZQS9Ek+h8Xu(h z?t+wefHDf|EVN*%nd%yH%Nr3!`2;HZtn8E_2pfEEx1;~)*l>Ghbmk(gX-Fh^osU1* z-p-{i(c@-->#@rXl}D#I-mXu55&**_ML-4_3}g%>?QF)QX&3mG%Y!%q`O>q__kS!* zlsLJotTW6rlGG&1a{Bf&sXAtZW#~VavlNOmg@S+@gS=(JZ%Yy*n!T}~A!eRk{5T@_ z%Y6o>Qu9KY<4zZId1IqMdY~&qEj1irvEBHOh*m|tGfq0$NMY!}qvpB09N_T)S*#7W zB@?arlh&|?zOtoxjrC0t>(A>Sy&=LQQyP|5M_-`iX`viC(tX77RC>vptM#V%4REYpkA0UKFT60JGBHbz}sn3b$N> z`m&f1^oMrf%tVN8oFzUZ=H$BCHv9B2IoJDBUx6JN|GP4GrVpLUkI{_H9b?8 zCaNk_Hk&VEzM3Ah4J)(_$s>Et)=gwd`s;`C`Yiphx`uKL)7qfQ*x@;r;Rqo zFR!C}Tuqm_uh***PyY#>{lbE4OKO%8IhO*hhD3)Vb3Nc3J7=3@=Z(%-6wY?Nx1EBW zYS>zkm`}N-RK{;1VX4SpRDd;!LRwmFjFfe;UNxzLP5 zzvMQJyHZu2yGRwm3<0Qnro`4_1YP&QW`Tco4{=Unh zrJ7C{`%tz7rcUeWy&It>L%W5 zc&7iko^e^7@#^Io1s&*HR5+9g6lB747@Fj91+d2S{qZ(6Blpz)+Rv#TqN&xE0cQk` zOOLEB^Mh;hQy`>bg)%xk0ncHsdBycs)=ES@>sH!zODy_UXeX~`^XBQ#*k3Z=9OS*{jUy9%PE zhy3Fxa1}!q(2rL?AYIgBWEW$6K3}^N^EOi>(&FyTlY+woyaQ)jfcg6mRFf*8!Xd#V z+{!r6tvLQ};g&JNx3`zf6V0xW&?oMrl!f>KQKL~+zQDky|5FNa0W z+x$K!^U(CzujuKtr$i4uvpy@sp=fo+eV;Fkaf=mm5;%jl zqYt&Bz9})GCXh9D6DI#loHhoCy&1T_YUzNqPCJOCx^T9!Dy&KrZv)x}5lYy~# z0_Q&eBKi;`Ma`RVdmrgt^gSTvH*}((XHq(l*L^1+x1%e$*VX_) z(Q++p3o2P1ALpyaIJ{T1>j|J$IL7&fIf9Gr^MqM_Y}my}-%q|VAb0o047W6Ej%jJk z4KNxlo@X3#mZ|o#D|wx`a+EqbQ}UfnqRuh)Gp8NdidSgZSihY6?G}LC(rF3+>>)+a zXP16JdIWHY4+RU~f%zhFa$TVEF1^nOw!*9W*v4zYL`d`1L!3vLmg7nA(t8h zS%;9s(>bIEBoNk-ZL@u*s98@EKyBgI5#2~Os4GCR#2iQBE15vdW@2^+7M65;?1U{t zD}yU-k>PUSR8g8~?s051eB|8!G&z78JotT}5RWIB9IBuDQnF;F4_Hv&!Q>TK653rN z8Baq9A8A%32@Rp=6^BVTpZ559({%W1=bV4lWQ~OkBy$ew>D>#s{ry2j*oQCFM5Eud zK>gW0&A0)uxgcbS7aR)Eb}iBywJ%nSCUU!gv&Fd&-Z*Uo8939BP7tF?fZ|M>doypE z%<_=TPR7mb1wTzanT+FjP5tE34om76&o{euJ~-0siXV3R4r@q&Y(RR2hylkuEsBzU zZ5%jzM?-Lys0sf?`7RT|VC15F%c>q;6z_p|ug$!ybjgpsO?0@+pTD<{KlgrdDU-A$ zL)F<^6V#-68!Tw@|Mx%v2lDUFyPH8e*+pTP2ikfNLf8;Ro&+BP!+gxcp}fr@A@^sb z;}R~0MCXMG9}{&o9JG5eoh7tprO*613^M5S_gfaB0C1T%bm>trH>DHsIPz>b56;5@ zGXZCYo($@kt%iImtdgg8>VQOR$=@fVJUkS@l#(u9wJsIf7--WrA_1*j1Fbr8U}!rxfBTFO+6+84zK4 z!~Uw`E6-+cFyPD45FBd$EdSArT2B6d#0CBrQGty$VmV1AjC_JNOj9ErFI`ppVwW%3 z5NC8lULg5uL%!a__Z^R;Z^ucg_MNq4yrNyOJZuAO&xW=yX-Bv2+P;f6xmlz;3BS^ znA7Q@fqLtwmm4ay|7hl%z{A!HV9~&8GRQJ>q}Tr&5pvB`d_JWEB}{^Qi5 zzw_tHDD^^u!=7EwQX8D#b9Ior*bP7UuV2^rfWt+?3W3Y?q&!@SM6NYd?=Y1$-wD+nowUcU}liQ9Z=vB<@2X!T}Sz;rGKB<%2RZA*^8p0{2F(`@nL{cQBw zJvkR;*wgFYZpkiRyr|cA<=M^%c`q~30w=1%W-1L(Idr@|NLnx^loo}(c#$<~9H3O3 zU8^}9pl*GLy-1hk&7hDejytcAp3t+WhqM@v+=7P#uYIKtcIikQgFK4(u0}S=oX~SgK7&_8c-WThdHbgwA=Ff$8U#Uo z1h6OIR^)mKA~Y;~_gXz_jfl<%)z!nm;~ZF8n(Qh_*^TW%-xt0^Y8&qM_G#2Ur+@p0 zwuYlq3ECj=xy6AOr!bvNAG%Mu8mj_H36~Og^MGa_Ta4x666T@D(e;}EGa+TCgP#<0j#>~3n9tE*TjG=D*riQt3 zP3hfEU{U{?Xjq@gGT3i7kQf7m0p%FA@YZHB zRA76UWW25q73*uLe}rpl8kc+BkTvPEqueKYqxi-8`fMZP+52klw3za}x+neK{7=+8 zvhTv)%+Y0EH1!A{=^lJsfWjw7R3_z-O{amB2dpC^r=c1fV)a{&+U&tb)k~*XvxJ&$uh?Y+Y#whO7!L9rnQ;4gP!NJfsL;NJ;^eT!H&wGuDBJji4er?K(h*2s)kJ z4Xc-1r-e%`CcY`0Y&~AyTRA;DXka-R#ri~h{wnhJV1}BhMAYi@*^7zg%!DPA2(T=_ z*rX@^8;v!H>_TekX*P=uKezY;pOqG-J^R{r3pZo$=X%!RLosh_N*70Yq3h%Fs~2T{ zqu+f-0-=O-Ee1_w8bfbCQh298-;u+OM@MfXITRPXg{|^l7yec?tnntit%_Gc+hpndtNe`r-6=TXkJ&~HL(8fBk6rAztmSPKnW~fUUT=P;$yUbWz~j${Dii=OyXdc&fWp?=8pr!5XwCHoecI~6G&tZl7PRv zfuicWOn#dL0UpD9YW>&E%XJyplDE&T4?W3oYJn-McJ14&x$Rdmj2qag3PeR`n&ty>|R^!Y6)- zXI`aeKbz|(MIF_m?4SHemF^bZ!pNT-(02LZ_M|6R*gYuccXT}MXx_&5@qK(b%S*{6 z*Tp6@>A3lIgU_`u>FV1(nfzs9f17THwGw!nYY2VqTEx64-Y%wS)T*oWtv|LkEV^+% z{E3Fy?Q(b4K+6|D&)sugak5R(#$PGDs#VJz7Vo8>W z9;I9Jz!AH~<|M9TyykSR4SK;U{c}d$NX|?u9Ep)ce|%fFKxSVp*j4kQ-`@Qz^YO~k z(gKAa-VFd28RcHkeXUx>t1d!g=o`e>SJ_YoIIP(Hl*EJh^;8imXt2!%1gFQxwG>+TMq8b**-=VYCJv_g-EHO- z^tk)@)fDYQa>;adz;TmsMluLaG0v^d_}(SuMj!xN7JDnt?i7B!#`{OMW0#Jpg%(?= zkTS!GBiJsl&dVQ)YZX*wPEFYTT_9x1dP4_<5;6ogTF+cCh*duoa*cpc0vNl@AI6UU zx2=D#B{ESPL8ZeNP!ss1t?h<8nk9#8u2D+@ywa6&G1oVVp@r(2_xC+Nm-+amhf+sP z0?kO_2bgUHanRqO{9#-hiQvF+zDpVZo$mieGh_@(Cnzl3$qUTONzB$cETiu~F8 znT$l5!`VPZ0JTScY6aQ^^a~(H^#fo6aFq+dVf;K|Z~_62!V8uQGw|L@dRc>9+&|QZxLorZTM-$TlrdbE{ySYFJ*jG<1Th{}3Z#IGSvQD^%mFwZ)vK|RK z?hV6P7-aCZCs;hS4Rw8N31+X7_)T|gu3f(A;Jfn})dXA2MQ??{*+79|6QI@ofkzPC ziwOQ-{-MXK?A>5gS4bHK&R1{E622c#%%~tCO#x4D);Ig8&7qtvZCABqw|uecXC07% z^!`EC^Yx1h|F8#_W4jA>Lm51ElRlLc>Jz8j=l@5{1XAVl(5 za<-kAmUc201Jz|sCey(Bj$@h1gF>uF+3N{9d+G#?*9dYQ)=9#RozSR!@iDCseKq}E zL|M=a^NnOAHFGU=a_7R29^76_FYRC*?9fV@?f1TsiE z@D_Kp(ZGr>!)IqEiOpm6PMH3Vr{_t$Zn3y1|c{#+l@qk!9cful{>+csw*X~E#ZRy|C= z8$gXlE|xV9Z$Js=6iHJ3lPRy}iE7c*rvt^^*CjJIib6|cTor4%d!#*0`%!OfmLK`P zM+fXBG;$R6le=bjDF=#Y*IaboFFI{y6Z)@Jt|ui6*X{%y(0KC(djdVssHob3W=AhR zgl&Pn#*SP7j4xxMaAWY2K>+{pv%VS#i!#e-*)H#xVt+O9@5Af9UBec;~`8umCwdd@QY(gC0!71BqMKU!dLphIsFN6%Qr2;bQO8 z*u(WEXmTW6aO1me7F*x!6z$CRVEcCrhW5*IX7ouP3GiXlMsQQrB>c=k=NKqR)vX(2j z#7k;n_xI}e`a;;-HN0~9k}*3TYVH9nj`;Fxo(xeM<96Ez@G46J(KHxE7QfQH$*lOS zBqV`3P3qC9zJo9O@zw|2*&lvN9=ndMesz;Yi=u4z4-x7+=7oRtf&XWa?B4@rfBlO5 zZ)J$T&C>R}lJ!F-iAmJQoU!;FtBFQz@)@z43Vc?ha7AuwdW_HqRkECN5xae9yN)XA zQy@)na}SmL^f+#q!aI*7Jg0#d=mVd*fI-$YcK8m*x2ak9=ao1qY4`KVY^p4qg<$7? zxH*@9{o3WqSN)1ufdI#KCm|g8fs-i%0G7oI#!MlIK#CSM3hfgRC$2xDFA|1dgX7;< zRotw$ezxl9(fzvQG3<^*aj3244mWQ_lfbn@ltBgZ0enmhO%R`-hM$7NMJdpK0-=}}3KEq1j{ zlZaA7k?U677auahT8`P4xmAA2x-*omQs9YX59T(fb0(a6GV-#WCsSfE(re#;<`4lo z-vo~!FRip&3x*#W(_$F?N-^;hy#cV;Ipyz$MHl%#JephHAa@E4`~2v~w#kH>;bS{s z^Z*gTLkSC`<`sUv!RlYe(^|rp=XRD?bCqG&{%=!hS!&-KA-p2ph$!1 zvaAah^cH?4mxk%$*wq`Wlg|n%hhrktJRdmr1wPlj&`Ot@HQMvQynOk( z!^J832ZAZ50Y}v(t02^6XEUr;-R&5Y1DcMtt%>5MxP*ySHoC|A+5zKQ9o?=cKAY%7 zV2(z+vVi%!h(Ox}4$rfAVnvyCNOeHUOoZ!KS=Z`Io7^JF_hadZA1{l;9u9NUy5RL? zu|WeH`;qr)QmyG7p3$YXW6H{v#fNV+A9-q;a`N~i`>12Wv}OvFY)DZdl(m0`dFAO` z2+`-=4eBY=8h`gje4fn;_tAp4Lf6Yt$CgEqx6Jjj5iBYH5O~BzXQQfxPAojyJGiKL zNJ+MJJV`+P1lOC(s38>XvA`gik z2cK>v-h4+BCG~vL{hpoWd}8%z`>dbRr^&F0{-LTX*Q)T>=M4FF&Y}Uc%t3#VHeQG5 z&19F;OW>5NAZ{+2^+NX{MqnI(F|HPb4n(^8W6dKNzxDKDnJI!M2hMJ+@w7A(}QbfOY+ zCSsqEp!S5UY<*Oa_p>j;;gj0mj5Qi`LJyr2iQ;s-`hkg6(A7l+99hA8D8mtPpi#;i z03*Fej8pu;QVfLzU|`$<6eWBCMyh*8JCB?_UiCGgHT=sgrY|XNHmah=qvIOKbF&nP^ku^sguDoOCt8#F+}aV_UAQv)}xp zZZs~J&OOCisUu&MPcO~r{DRwAW&$XJ{PO4^&cR3{J3eF=a2!pv4ey_dwMShs53;mt0ATsm_mv%H2V10BD%6k~zDMLQpsY`U+h{=a zL4^=9V47#LCpAWxZza)B#46RKrFzUSAGi8`V>u^eS*`cgyza>tB~h;XA-&2^+n!Mq zfox>{0RTD%{+f+qjqSz9CMw?_^Byrd(puM&z(Sc87@A2+kG8v}&M?zzfa6D>E2k%A z0BtJ0KM-H3A;5eY8Ve{sXd_U8&RM9o?tQICOdAETYa@Ic(AX5f?6XV{@;#!IPYjF8 zXNWqO?FP-9o*q}PdRG~>1|L)UH#9zkYeNhmK#ox#(!`v@4M}%z-6)V98WPp&Uhdpy zdvyH4v3(Bl5J>0{9pp!khtaDyXZ7+Gdh{L0W}s6<|Ni4UeLn)UbB42oYoVcSe53M{ z3#B-PW$g>Re{%!0H5kEo582YUapI+qj)4H)>C<6NU(48&A=jDw6Zjk+r8qsfz2YU! zUT|M*-uTs2^>;Z%)o!OGkAGOKRg?PAMZjVxDk*el9j^u(dBE7AF%d91~h`+)QbTvBO zd=X`FZLmfwvy(1$pmr7pM*poNTF)&(qq`bp>~6+NAW!PI2}L{eYs?Y+fJR=KQoW zs~c=3vvo-+lHbB#N!@&NF$D(+XLN-h{|EQe2(JS$E{)Ct4utHg3p2@X@jW5yQ4x+U z+4R$@C1Y5Z^r;6uuD8{CJHB4O-*oNB*%$M`tN-kLz6(%z?TF5#T)Z3xp-Ncj0#bG& z3nCVt9Br9FtO=`vn!iKz4xD-sESXv6!Be9E$$iDC@J$84=A!{>=(P$lm5`m#DzZqm z>uH82)$7gq%xnUO{^g3mnC1qbdu$)O8MjR+mOd+-)?HGJdABAB=0!Z^k}E3-F< z#v!@h#6SO%bo$x;;UAIIZqZSIkNnm3Ho))}@M$UBBxcUK zt3a^ruy?k&5beWDKjksYw#d$qi~hW(`6q9ROFoRdc#H8aC+9KR+=w9~-;Na71vu+-gVAQVV#UQMI2|XaR*mBfR z>J)%E9Kc%75Wm^sV~U6$95VY5Mm|n_VP-K8qf%-FEq- z3l1xQk>rQh{RjoUFn&dYqv7f!D&cOP6|63GJ1&Ydn|Clg#bLPFEy=AE&L(@6$8jPlt-#s?HH>b z<{bZ2P}V*+*M246q3EG$biPT(@a5ZOeYJ`R*VIC^n+gfULjbt!y&1OwsIF;(0NM%b zI(9!mHtplkWW$db2Jfr!1p}rjM#6Q8nNt_-1vu)RzF&=m#luK$=ovIE?nfdLZyEYK zq^DwIc#4^LkXjf3%n`{+`qqmO9H+27CGl^K*{1usbU3*MOP`Oi46%hPJ$z~VVO3C0 zBz90?_W_7X1YnDm1vRPN)=5Ml;#`48pJ^h9&I?7?kt^l!Csvld^%GIfJ9g%! zsVvWCXx=_ZaVGnvsOP@BXjG5&bT)1OW?{GoskWG+4yIX`@pnQJ?APnoW_`=rOwoBA zM(hL2rf+Jhr>dSr-fU?o{RFQ=UfZ0N!xU8ixVs)yd9}ycx66?{z@Jgt`s>IWP8b%3t%zaZ~vg83D@%ewoWjlT1d2e1JLybzlBiOeM~c4xK?=%xA?;?VUMQBGm^c~4?5 zDRA_+VS#_BNuYXE(4v!K@2agSZ{HkZvO@5!f=c0~<7bXLe%FLX za}SpSZ59XRAk%;GmD`W9@`+Zl$+tjm((?c*muEH9B&4sx+8f0pk}>Y#49+A;v)N?) z#jw5F%^%~9>1ke3YKr7960 z!$nE;i<>EE_ByUaak?CfZ5Vg^C}zdp0t4TgAs zwV2HCMJy|0roHl|=Z)VOK?d}l@Pig#287hDKwqP$oW6IB-1<|8nlwcUBumgn7I-N) zibw*Mc+Tq5555QDOy)~m13f(bBl*)EO0%>so;0+-n|004#8bYEY=}P-ABaUUc^Qbd z-b!CO^|HP$t*Fm5Y_S-&<&HjxUh5wNjiAc4joqDL zVgn%YR!KqEmL<0x02(r3e()~-YBT>Ir~6pEst!GjakrH^q|Pj6KE$j^M==|5S*oB7 zqU+AYR=9j_j_tJOVXHI-JL)+qy0|7U9AX5KUp`y*3otUfNNE55}JX=n&%#zdlv)2PU<;d#GIx3 z#)q^7$^+;f375T+|3gsn=X;F+O{mV};b1u7sW&cwasc4sLG|$wdNC78XK;wZM$JcY zb>&Kyz(YFE(WV+}0%;ime$qT9f=!oPrLX4_-D_g#I+{En(Ej1Sw=TaEVZEDEoy1g< z9l^{VKL%uHHH{_zcp}sF3JdwZ2azw&Tu!-W^rYj9LuNM0Czqfv|AFB7YnO?BhZo$@GtkTWJO4Blq*_tsv_7;b zD8P7GSuO=cx9Z&h1bZR%*9sHK@<)`v`jytzCNNpXNu6J7>Kd$ik|D@=Ppp0iyux4h zEbyFr*tr5Iz|N&q{|+e~$f33P?i7OGVMptSiEe`qu!1FN442A27vkILaxjHf1&0#V8YAZT-dN{y6*#dI1sZZS;Q%^c+`NN@gRASiBd*;37~L)hdoQp7#l3~MBS9wFg%t7P4Lz21 z54&+@clvioi`MJfH?fbmC2pgzuRgq4-*_J{M<`_aH=^J#>e7GXzWw=gyAp~73AMx( z1?SNWh<9OX3lqCw{_v>#%*ixy>G=2e6cnnA7(}m|vM_{}fKB|4!c0Pygx?^+u+|C9 zMn(d0*RJHBOj^FuMDNjM_^m+M;}%6>Vr|Qp#2!D>-5EPvS9K3BHQin79 z7)aKSe=QxaRH^f|Oe8xLwxrD=LW*R>IM1bZyi|CwpYQ6x@x#_NgVX@6FNyx+A^yCYDx!&74dzprHq$Fr0*k36 zPgE*;+e+UG7?|$@P0MhPxd?B{wR4Ob09fGwX|rMtYE>Hz@&IY*dN&~zgFMh`OsMS@ zW~Yg~%RW_L5+!D;)6n{=Dc?)>Y6|mN+|db9jkb4|?aT~<1oRKP9A3W`20V6gLOH`&^&fM4GX8#c@l5{x+#Dl^_( z$2;AppPd!x*v-*;vpiHpee-I&iH+{%Za#Eb^B<6L+I65%S+He86Gl!6gHqxt69hol z00aW#U20C7BE@=74UH6542#p;WS=!Ci15BzskJ5Y2xF1Xcz)DWFxoHoQD9S5`yh-J z`HPRbh8Tct1)^Dy>(}4Gwy}(eP9)}LbGXRwkftBBsmTs#H4HF-8HThFGw{kKuzTO3 zT;BNy->+*8kl$Vz4HM*_wSJXy`=olIx~1gVxH#4i?G5AXo!>J+*AxuMTp+z&L^6_= zuvNd!tRq+=%r=O&JHBIl_{bM8yHn?%3$l2ea36Sf(Y2|Z`J0f-U3@OE`+LZBtuo}7 zQ+7tbIHd{zKDY{aMi*b$Av+hisQETLvZh+Y$|ba>oh z|DdU_e)TMVpB|VH?|L~TskMYhnGFeqUL3aFhtAmi#ahK-@Y&71VwWr$pGxai;sOwX zE2yP!odq=u8zQ*8Fl+pLHh#8?E%e!$EP_a$Hg1A@OO#%E?5UaXZtcr+A0~;ucstCo z>`wT-HfB=ri?#Qyk+W+nsp5FhcEy^c5fh+vi_UMhmRVF=mJBk&Ug``BVMj!Se)eod{m+( z>+4bITl4%~Vi<C;D(}nuLA%*vATd_1Y8L+6So_k#Vc_7qK z_M-m;jz)xSCaAFc2T-8ku$7qj5e?j4V?Nt>tC6cKE;YLGjzOmW6J-_2_vv5FK|@`* z!_So~)mjZvPx&%p2wgCZuLO#VBQL^@3tddgy>lM(e3<#rj=|-y{szdjIfWd|B~l6} zN=aBtzdQ%jlZ zMv`ZT888k}144SvH?N1F0G{F3kQ0I^_{-T$N17w_(%1y>li1iUXETgABi_C3Sk35g zrgE8hnOHH`^%s~4?w6MWk_`nTI;GR<+~nS%u{(}-RGwF8d^nnN4<2QpxW|17ir1*w zRIsgw0q~`WEKQrpr>9mKK;MGC%YMTd+h?WbFIRJHY8A&E`XppEUY*EFF|4faSH`_i z>kjuLTL88~1eC%?s(cP)bQ|v#69&9a8byTh7iT@_y;HpNQi9tW-H&ySKQGOmi?~!! zfc(FZkbxkEk)2z0s9mW*$!eoz7Cuxn5E?YHpJxIY~(dWtX)9a8i$C+t3lsHo!tLULXaLkA<6O zV^d?pm1)Pu>)!P}>*FlUx;}G;McnYvk%2d8)d$?UEcA~F-(VD&!YN?CIyyA2Y{2R1 zyJbe400^!o((66bE(1CkGi`7n1?@@H0>aGVw5el=67S+Kqkt6Un0n}>%_x^^8jNGs|jC4OI*U!f#A|13QG_EVx!WA)A_D2i=8x03qG~P}}}>p8|BTD+pZ6 z_o!5>Egiuufvztp9ktO&>;yl5b`Sh`B@46?if>L5Wd0K|{uRpcfAu|dESSP$3@AQ( zU_|W?$S;hUh+ey;)IUFi|L3zm=d}T^Har91%K^zVc3~Z45C&u{GNx5dE(N7|<=v_s zkIxZLj@P52`uk66WP1(Sp5BmOtm4#wzsRJR{4|vTp@Py}?6Nm}+Z1>R%oc#6aUc>A zz0gMH&V^Ze<2FCxZos}2A*B*p^!9o-=gZBR3=;|a!L$cs%i(|{<|;gnCtT|t<>CnrJ+q_Hx@;65x^WT!Z%@O-)uD8Dc zPpMR(#eG;H8Ng{qr~$6oZ!~K;TrV{S0H#K~;Sy(=iCkns#DX{-^`&WT(Tuke7Ix69 z{mjgzNsC*awQh~WF@|Xx4B?9R2IzF;27_;OBc|Z^^XOP~O+nH|o9HwNVJ%F0a57_I zw)0L_+O%|Gov(EMrMI7Iu*8Fxq!ip&_;z%GVO$0aivpImejW{$dq5ueBa*xvNG!Sn z$kE6zH4~A0+_it-%>jrW5d58k#UksgD#}TxoFzyq-L{o&lV|e3E4R)1bGPVoEq4r# zY#`P4i9P3Q6q|y+`NydbL+HfD&!b>}{vCRh25`KScVQmL7#$=x#WT0%UbB*(Rf#6cut&o#~$(!iqOAVZA@OpVnq=zo^178vY zYIAgwb{y=C8^}zE{lDuNe}1LUBA}A>Rq&e~&8f-Z-sPRepPNr3{NBFpj9W^!*snfl z$oMc?NI#tsA>*@vzXW4<@@dT4)#-4m0JKiUPGRvuzeQO*v6Yk#i7t-P_P`u@-H?&o zD}(}z@^hJlgae9dE(0{S7TeJ5*N zA~|7SKZmc**p@K8m>67k&k?crY z%Ltbn{z1phof7qeuZP!am?+dp8614&{48(iBE2g0N_}&~>xKkkzfDtPlS#U+)aB2g zm*o39qgZqqt^>jYdieA)6lDjbLWo(4LNPwJ6D>me)-@A+k0MueY4uoJ<>9EAIVs8F z2SlOvFYtMgi7gk<>x)!Sj**lWVUUo!PyMVr@9^iA&It;(nub|=;WFH~i>sE8O0%cD zUk!Q_@}qa2iv$PVr`~yk_pT$i#Q6F1S62h0PrBSS9MG%oczRfQ{Y1H@wm2={F9O48akM~pU3UIJUrB-f)j5Y4~as9&*0*6ByPAL!u?7+px5koVG$}rb5l69A3NoC!Z8OMinvu0vlUfs4f z4p%MsE%xf8{yY5AO#dt&_7>;=7pan?cp1hdzXR|EptA8<1J09casB218^ z({(I0THmVZ!<0|+=}kZIpYld5g=YG1q&+Y}-kN76G)5apk*qBV!*{_1zS#>G76V9ytHSxAuYvLN@d90-lk&g}hMl+te>tJ}q$f+!VaI`EXY!UYMF?WpN6 zW4vdVlTG!6zrVj0f1|A;-Ym3!RQD#6j7v(9g!ui*In6)MFRe%CEMM(^4hSwG3S0MZ z!4!Ua;tf(LsH|ZeuL2lxv)CawV2O%OTEA^cbmdzP$O~KyFTcLuKu1cQyNmvNOacWs zoYr7(w)mMn?E&3HrIs}0_rN`IjX`6#Z? ziL42N?|jRpQ5#8i-z^D1Gh~E(H2e@@dF8I6;&&BcgU9Xc~JsiVD|FPID&eurEHxsm6FE|66(!K+YY7dTKBVOQ-@+dKHi2Hux4=R+|1 zs?2WB4o_Wvaq1=1_#HD|j+*iOcgXPLg&!N}4)jwl(xDX$TAXCvnXf~t$B95+el}2c zvb0itW1bc0D&66I!i{PlJjHp_!TvIYl{yF-Y!A3dha1}$;(&w%+WU8iAStoyj`uNm z@^`&CC(Bp&Zlw({)O?jc!z6xuRrD4E-YQ(?Z@;pwA58qM0drCXbKc2Cq~WgLA)-MM zn$sZ{&W)6e`pM?X|IlID5^xh<`Ym<+Yn6rIl|uT*sh`g$kl2XD;O7!49Mmj*C(lI~ zw{aLQfZLKM=j*V=R^B?#%PRsL3QraKSv?H9J0b_4II}?_$R>Nk)tws#bjWv!xPX2D z;!IcA;F>lgu8_3IPE{3di?uhNuFV)TWmt>@q)htM-Nd-ohFj^!r)_7tAKYy{d`ppz z81%=nY}bRXM{acE1Bs@I7IlPIO%qyk?%A;xW4Djb%qkmS>ieWFedB9~@+Zcj+e|EE zLxcXOXu+RcIN$b<^%f8vi;(!p=R=w|+Z_+u4Iy6)q3ylIGZnu>3<8l00ARDfO!|DstjvidJyi_Vm;A%S?tBWJt)RrV#AG6= zfOwr+K=BPWc!C>_6&HVxQa)Jm;nJ7eqi2kUDfM0h_lD1U(UYz{MVBumf{@K@czU>d z_YO1~6}0F}I+>iAA2wBX)4)h>#{IXa_o$eBUxG0)0hm|>X#LdYe(-Vp6g4k_AKyQU zyyh)2=cIU}FjU;;+=^iwCtH798AFueTS&O^|1u!Qygm14;^7ApkK{(^u8{}4`aNms zA3ptaf*bx2ErwpKfYqWg&^S9JC$4Th+%u^3X++hUsrHs*r=EMAxO+`uuu)XEj(o<; zyw!gF02j#&U3QoIvEQxuZpQsy%qX%vz zyHQ1banbeNQ9D8GT}awnBuI{GJ>)WwrOtkqYeHN{J{3wI zObfN(uF)1U_BUhO&V(TMA^(U0-u^2F_<^FabmL(-<$I`*f~A!DvWUcvnTf1j=cM%X znh&S5&(+q*>L##jD_SIyYyKUHRIRnwuIXgpKj$l?lyV5r^iow{T0F?y@ioQVa9Evmm#u=p+&QH3>)eYqh zzur1V>%*FB<|gyV<{thwZ+*PA`^u%8Qs(Fo3qj?FLud4@f!Yk-45tzUAP#fBxYu7F zj)l1O#JgWpUK~I@^7Z6veegzA`whFyOLc8N-98D#CZZqS@B=eEgPXL8ZQnFVtNOyA zxocWft-{fAy^-hsRST)Pt!mRNvHtj$v0xeUdGJKW2qr}T{GmF$XFTIV9K}Liu~8WD zn^fpE-1XCbdgfn*1$s_~wZ1K}ubMb-2zvlu&$FY2fBGGQ_M`FbE(6nwC2`R;Zqc{%y7jv}`vh$T`*3X^emz^KkTs}{4ZJ1sWz)E3 z0BavCmSPM*B+41j9~L#giUsfN7$oJ(p(IrgTjktf^=Nr>=Gj|+ErHn$6x0iB1mSau zXYh{=BuUXXf80s__SF6hf0)beXMValo`mPU!po25GDBuqZ$3wWL+q#X9drV|^X)tX zDwLS>Fi+6PVa6$ybskmx4rN)r^KjNxw)&&AK(LUA->7-<1H~$hmj>@P?w@zgv<3+i zYQqSau|576X&86$3$JsFiEEitAT3*}g=rbxNR_{B9dZP< z5atDoLDzbA4s6C1@Yd7$1?&U8;}gQGv_-CTwvgT0>UL@DS+Sx1!nBuN{#WuCxS(>A;? zLxc_`fD}qLpy-YxWGUw3>AjZK&eamSIbX3Dwb|J+2kCH8x{h+sD?AR7%vB@sBp9A- z9SPq)M9ST&0SNDeb(%O5a|P|mB|@4s$7fX*`5N#wyuZ4|Syo<&o>rQ^J9SlcK-(7YPwkTsOBdVa$uW$QZ{!U-=X*1PV$~Q;6Xa zD?lMH*HwE+ZU1V+Wk4ZMe`z1x+8d^-&kI1LaC-9G`}JE?vyS{jqm{~@2}e+}DKqAk zMYs2l9W&N=(;t~7$@lPXG{fRq=6Q4jC>I~3T%+c+2I0{d7mJDSv-anwF6pKm8o6Ym z#u!yCWFv87l71eYI2Qm|G4P*ik=TuZQ%$www_4);{4a;h-n!7fEN$8=WXm8-`}~oV ziKjvLrN)nv5-|F*eiLiti&awm2up503hwq|`oX~T1r-;Ct)gGjkG#F~gYSRR4~xI0 z9}t?)y1o{U9Os#_^(wT&95Z8U29F}eqNMP{Me3oj?5CSK#0Y_r}eNPa7u+b zm6X0NGYUOE$kN@K5fO1CB&}K^{BwqU(`Qj`R(d&{r3#qJUjGpo##ldmFWkbLy+&St zC@ZO2ft&56#dO@czWuD*43leScf*6Q(D;1r(bljh7*fUiIz>A=TGW$8)58h z8Jz{0%oy#N7$BTAe;EPZ_rHA4_1~(>{WE$5M9z4-)R;CMQX*N|!Fn-I)(=kO@w>BN zH_rPZAYDPQQn@hQRdDCA)ahtq)Wu-k4h0@cIjG0YZFV4cWb!${7~@{ay?A62k6ncA z3u(axC*3N5kho6g+E3QMnwTG*U>s=4w~%}K^e~|RmX}cMIxLM0+}pqv8*J?^!tcJD zQ!3u-ovv-nqi32`RDF81Kb=#M=K+xCK!LIf{kLA)eqg7vx=Wk88%3asGcxaU8GETJK8?0TD_g49Pg?9q#WM=z-iX0XY{S+ zsH#oM(Rcj8S0&^lE#&s0EBuhe2vRM08io$*>0J&1WXjSzCBHNIa2rpFvwk(9<(YSLN^<#}*KYTV1|6b$s{sGEA`?xGlie=5JdqwjmyM5rj3BhU z($63D^+|Pg^jBqnF}H-n<1H<(I-ZyJNoPbdOTT0OW6G=p)a(RFZnRI8fHcRqpFH2D zPmKfv;+G~5!$Oq909A_rf#b~7PDXvs&=jy8 znujy@58#6Iby?Lnm70mR^L67Nax1 z^84%V!D063z~$iw1-1;Shw9-3RDTBw&1aDk2$)Q36vTD?RXf^nD5(`}UCU z>jRkKj2)h>&zis|KNI!gvk9ZKEe8b4|1N?igh(_;Z+vxgxblF{{ko97 zIEw_{=oyIZyRBydZ;=%?Ky20*3arGl<5s|djj(6io{GfmA@$9Vje~^KE7JQMgkBa( z=t75NUl*ik`j-TxU&?;qOUfU=aPk=QO_F}A`UlmG3L;ex~jQ-+u;5F&7SSyI3&it zO^CGF39HYJqe-keY7%Lp1ozuqrK=*rPG|hqpERb!)NWQBYPEVe6+0W#vzN-K`EDZt zEj-w|^;oXmt@q$wVtgozs0o0mfpw(D9s9AN;7ag3JyM#{;UXBbJM%l_+%@SV$KMyn zi<;Y~s%`ZlWML7!g$P;J$5wq)i(% z-mE)9$1G>9qgm;<=7{g>hQ}O-ZyfcyU+9qrjpl4Wa`Rc8)HgXYqYz`hlZur$UO=REbv=2m$`Gzw8l zI)5rL%YHb0u`fB{c8mnbTqsL+h2gT`e0jFGK<4mX*u5YYN)20B@5T@G!ufzu#Q#Cr zcZM~&rR@gky@ND^Gz%cTmw-rhb_Ne1=>B=_3`m5*+?G{E5KQC@dT(^g7+{pf{-^lz-BZk1{eAeoQ+Zh4iLi-y=(UlQ`f7r7khE>-}<9 zqto9H7+X_3g;4Gd{ryDwe|&}ghw*9@d{$FM;X~cOOI*NEbo++*xy4E%z%dnvX4I}n=ACNyJoHlZz%n(}T*^xi?pqJ~L2UO7`2HNZ>VYab01Vq9-m`$C-~j-P>vCqa z?v=k^9^v{5X4CQhnm~_w-h!!=%g)NRdf7!PmySCgCdKztlZRWZ-W%v>T7>{>X5PI= z4?_I?=4s>hscJ>|N+zYc^qbd1xZ6DDKU}9!1*u_QmqCaG9vsQioV~3y1#79yOC{v2 z@=l@As-EBlDfxG9w}21lV>Y^N9i;|174Visf%O4IKP?qtef;P+dVMNaEWKO6M3U+X zb?)<3h?-dDIKz`*+I_$|6k}Y2lM>a($mu3JP@wN2GprNN<2idzN+ai`5jUSmxKb{A zPn&5Kr@Z!Oub+`^nVq|QmG!xxn{&Pi8LCA%j~M6dEx=O%cxbSJ*bGQZOGltBi0@#+ z_pUlhuBn8}^c5BE${nW-M^w^@+X10yDYIFqmmZ{K2h}3O%h}Dg7S_s9g#kPd13L@1XoPFkafaMw9N(1xynxk|R9w zymVwT!%J!++XOwgQ25ZJ-z+d4Qy#D|s0%=8HM5$!4?44R_pl-4K3~(nK@1y0Q9xG< z+nXWS5}~B>c8y>p@lty;$G2*ZA6+MBslPVjZV9Lt8AXGr$)ZLY73Y^WFTASdH{knsfA(k`hkY{5rv=IhZgkX7nyP%UGs4TR@j0?xgkKm=}X!as*NP91gTv zg|0m-c&Qoyo(-Ku;+#osznu@~BYPefM3VW%$>~+L4vEOx+W|EWS|b#V8eO-t-TkF= z^=K}x$X=vdw85j1pv3!Eb10$T2*VcZ0xQTkUS|by!!zXcVW4V8_@Wx2#Jt!(D1oa1 zNfOOQ#b5k$hm_n$;LjcHkzrn`^A6n|0#hO!Uh3@Rxi7k%G}EKcD&39w>^$UpX4M!r zaL5G7lgr@ROA+NFP4GTzD+zfq+3_KjONkniYp8Y~RS^ArrHZtoE^G7)P#Rp_J$*{; zI!osa&NekByTtRp5n(Pbnx#mn1JnW28|{u7rma&#fmQXU7bwf3oWih?B1w={>4~BYCEF= z(4%mJ*_$DF&Y_xmYsh%@nPf84E-v8l^$(#(hS!=?Z`J$cG7f*unvFO=EEK240O6tl zLH5G1+cH9-x~A+zChY!3YyD&HN}Ch??xc2E+8J5Q{cU|dT-FNdbvi4XIJ|M~UAk_Yn^}xNy77H@!Sm=(0ZC7GL49F|=(It3u|kQg zc=0#iR#^QO{`i26{yAq7!s(lLx=>e=YBh3`sVIb>bPbvD+xTJ55Nvl1$gV+6-in*b zud2K&kJPpBo^!qdHhdXM==HnG&BAHLS!dsSQ63B9m9R%^o*!3)=7Wwp`Fn6jX=!zZ zY5UFL?>*yx<_l1!PaY!o5$L7_ckEaeI~O^7OqtSEIty zJR%z&?37eDv7t^{P0jeSwFN^=N5Or5+r6~-0~fO%x?w-|GUvi3$bxYntLO>Kc>Oh* zZhMIW^e6{~PpP*x*52U?y@;x?E+}a@u782JWq46q=M7bt2)f%kr<(aZ$0AZfc`*b- z1Y6Kgr}voeIeZK=_Q@mG?=QH9GiB7i6T_$>UuZfI9+UgYOzf{r*WShlZzh4@l&qB!!7S~`5ZUT+MLxp&qT97N7)NQV_`KbB*rtK z1?Y571v{?I&&a>4G890~^IMfMPJ2X4P$!QAGYFKof9&A;L9`9WD{Zyq=@5tK*#a+& z$7$q-`Rm?^1LB8=xj?lp81Z4=e7nYUXzT9|yqN9^_MEvm}y@|j!b z1sQCbv+xF}3!ahuS@17C?GIO6D>z3h@V$Vv83RzTlAmU@hX5&M%_lvBZPTx<5FwzQ z-k2vO;`~Wv9USB-GG{?Ag7N!z*m$v=;~f0T+4jaeX&o-2Mp3F1&x+o6@^!AE;!a55 zT!|0|XMHGkhLm^?$mM*uDSz$aUXeb)JX7Zqdrtf#wZ+8AbyZFa4WAn)_HVWNc$wU> zem*L7vBOo8n!%P>diO>XOdip_hHxD_;rUa@F$^XDf$aHr)WcGOOxO&R8gcuTfOQA{ z`jPSjuZ%a2v+$4EGjf$5kMHltZx|TPe`MQ;K*{pm{ISwNyWdZMg$?Ib=b};ZeMgql zN~g)=jq1MjfeLz*JXYDJ>PG2SxweqgO?;9O^u#OR|3vh75+_QpWiQJrI z)6_K;QWxrQ&PN9d@|*Alvp>nvsX!uA+Yhd*Bsr|NmE14f+Y>DF9iubwwIL_0|nbjjl|P-u7@#Qp@- zmbI$M-crSgWq}}3&YO;(hCYcT$Xl6kTdR3ko&Ne%7#xxRf1nQOre#jA^ zScaPJftLJoKTu)X0UT>EYY#<%SS>-+9`u{W;o!`n;=bkE{GUn%3*0j;Ynz&4f;pLP z*$L;n2v*zrQ5aeL^n?JH%dBlEJ!+#2uR`ut4x1p!}}sngkM>qeBYUf2k${Va%}A3TQ2?hgE31gJE({ zsfy;nzM1E}(`_D}&-VR_;c?T3F>5w(x%c5wq7RsRE*X){fmY(+n~<1(hB8wn1(jd~ z>*Whywt(6gESBsb74paVKys!bV88w57jv;>m1Jgm(w`&eBJt*LbKmxLPE3fq3rC2W z=?e98KTd#@yxUP$*H1dhFI9K2cQ~72=cZxB{W!ztMS4$y&Uq?vkCYno zZF|3Tyzsi!OxGJaJCbAc6)KQ(zrr~wJP28Y_;=jP9T7l=rzQy9TwYjce7dHgD-{>x z{cu<|-A{G7*Ke*7X%T*1{glryc=s8J@la3ns6uZCZ~HYvqiN~2w)*B&4fhy#mLv*D zQsj8J;bjWsY6J?of)^hnJ}>Qt5t0$#)^OoKtN0tu{r~)<{Eq`^T3De$KfB;ennD#p zgns*H_6E^!E_=4N^SjUAsqjrXJ-6c-t`>DMMuY*>itZzeJUDlH58UC#)=d*`eAp$kZlGK%i$*i2MElK zC%^3v0=uCY3-D)j_dX`2#!6}W;hOlPBF=yPP}5S^XsyMRIm+J`x%8X?vHMr(OU6xuiHYyz9RUG4r_D|DwCY;23CKgc zSe}$&yb9FmJEc7^D)I%eBT-eGfB)967TcJzM%4xG9k@Q=-p}b;VOUsnXdM(x-_Ab2y?wv3@+=iwFx7n^Nv&I z`uY8mw$Yv1m%e3AkrBM_mZC@<2dR_g6Jxc<*C19aR%#?=Z>%$R=BrKkhXcyJ)d_o{ zPpeA&p#zj1AAl1wF_~IT*__^4nzr?fv0}fF`+c88MDl2;);HhEbYpH9_J`}=q^4DqU&Iq^bdsn%6HsmLWWXIG)zc$Gdf(`TX; z28UZP!)zA%rMfERT2MrX>Ad5Op0zB4qlL>LNj8Hp4%BK8l>;xi!PGgbe9@L@AGH9;efO;|6W)ZmM zYl{ZStj$C`EQmv}HW)P|)7nQ}^SwtuAX+5KQYIpMetXvKuNT?h2B4E9{w1k~$i0T5 z31^a4w0MSJtzV%qhi4jKM_id z)q#TIu#+p4d2IvVwk{J_>upgQ1NIGQrYY}8+pUl?f9Va|@s~Urx6(3RKWzfUJ=i7i z3znMT;xm)ywB@m9n%5KU6Iwv&>QHvc$pEZRc)npf$|n`f14BD^f$t>yDY(;YL39_z8H zH;vQgo(R3(NIly8MauaDTdwkf-0?O+#n*AR@2}3-JZIH6qrGRi1S5erw3{m0S9@ze`6ao7(k@o;yQrcc- z$EZXALO_OB2PKAFfc~IuXCK%&>3g;=`mMW_H`Cqn3-`-k*YF8b%$m_!{N^pfM}Ruu zMQ7N>Mm)G&snF54Lz)^0^zIXFfpLoH>U}>yw`>uEtM84|V^&p81#J1ao_JKldpqbb z@YKVe&zga+y~(1JMOmH>zE`Iu2du5At#t*5c23hc3-CeGe?NaV@IpAofA8iq@f-dbYh&2f) zU~QKy#^3TE5_noN+vz4D_kGsw2fNDt;=+TMZtG>QS>}HWPhZ0RyG{_e43cLNKW;-$ zBlgUvQHLq^AQ$4#3In+dqSwK0BVhstPo&?2r`FqKql%Msu=}bJb>JN2k)|+u_GoRE zsm-`XI%(WiNWN*PUq2Vc$;^M@esUj=5rV^(=6Uy!=yh}|qauH5kJfeS?1^bBc|(7$ zB+F~(%~4CfMOr$mkvdRa@@IHMPA6h6wi{VRH2z}ZB=m;)(ty;=5p^6??9M?SIL%?t|Y!d9QdYhm5}GC=0J zm@hH-NvV!{`vg&TUGh)@@S6SnXLE3ddFK+z+|ZcGyQ25My{9>|y1xro3IYLJ7YO1( zO*e8ZQWmT~3w53nQeUH!o;rymMiO@qH^C9_PX;gB$xRl)BmO9`#%ruQz_t3b7nW1nF5TW zi$ZDm=KJ~hkl#PGm#(dVrZ^fV6sj4jfOY7$&KIt;N_X*|PV~yshVshS*BDh6S4fIdrd?;z?WAI5MecUvvPi(N14cnK(&i++-dA*d z&^ygjL$Ce0@KT*tr94lDs@pT&3rXnqPCnsqbWIEu5u9txiJ(@?{O!g7Mh$rVRI=V{ z*55=A(I9AV>-AKuM!$W2j#71Gbz_!~YoIVg4yPTdq?A1(kS)UN$LzfEN3j^nAD+NQ zOC>RsonQ?N0l2?C@Gi2$@|2a?DTe#zfBLawT$pv5gU;=d>L-KW3K?<}!gDMhO5Jgu z2;$}RFbqDN=+jOPUcP(64o3UpdLPg}?v_8`TP$Yf8G_2P9}8X~ZnMs-;CS(Y>l!cy z@@I_K{7l?_)sdKrz5MSJL_$z9o$0O6YAnOO=FpGqqYwmCiSPn^E;9^ok~2Pe9Ujm5 zO+g=>d+1u)8@eiG?)apfPqTh-_|}bD9bq>ix{M3H_l&Y#)# z+?&HXtkU-S$KJaQtt*~?9OThwC!(y(GwdSu)tfKZt=>wHKD|kGF)~P_PZzxNr2>q( z47hQfsD}QO1_Y4(VFN2y#F~VRS(KPp}RR17Q`s zyZpSd2=9T1uN*A1`TXwq`YUElOEg8#SryNHy*gf5*-RD9Vz#cqq79fw|K@KUr|m^x z^pTYKMv$lx-yx!3G7_rdiY6qhJFK1Ry7b-8w>UxAnEH9~rR(FD*EjoYv;lTNeG>yq zd|pviSISRuD4uTUG)@)e+-JhGa5QBq_dHXoz*$#-QS4sN3Vd#DlT9e=LExi z%3bpbF_hOkQ|eB=b7fD~j_2Xs;uLy8u(%?xlFY%?*ALaiRyPqWy$je5KZtk})zED| z+YOB9r%W7<_E*yirF1Dk%T~BB_B45I=re0ih~GAR&-Yw|5LvrpWMmG5bmT+Zb?YiZtV$=u@!Vd)B2Z~b!`iDbs_5)6q#q!;y! z0Q-ewsU9nJ6rN3(7EV?g?Uq>DJP-IjQHyOuWsJ?9d|VXYEp4`FiCPF8c+UBT*r?~b#J z@)W=He@jlnco3bw?W}7{{#`3f?cT-S4;;5!spczHj^vn!?;QEu89xpW?X=Z9H=0~@ zT8u-1Q0kw#$5NImmy_;raKu&ReGz-ur9Kp1pP2TI_=A zDmbA>o#qH?c;4O>c5Rg)mF^CPiOnw!(0vVuOfKQj_X|U{CZY;#<>jw4j0IO&jJQb@ zi0$XFP97ho?kB<3R&{(J|hc`PYTwBXMW7+VBYP+cFqcKSsi`iZ>b zRTxW9!i@QpX4>gakH#D`zN=f}S2Be)bcF@e>p8S`(K$peSKL*6)A|z`^j2iM^OpT| zF`K<%p!+>f!8(=2c(+&VDlNx19%Q?4oigJ7W!f{w8^rlBA2QQ!hgII0AM2XtsTI;a zI91O~nJU#cFvq%?%^uacYF zSf5)v#=;aCMu7GJc2+cK$1)Iyl6V9-9l@Mu;L$e(Edu1gOQbYlWpqE2dA^;{M6R_R z=P_$zLsj!E#3uTNYy9Sy&4Tnl9HWs)rm7E52C0JaQ0 zFCp??l$R5TUtf?J8VH=aifJlIezSeO#@8$!L4)4fGASzBAN`Jg3Bj~yN-`vEuj21R^gNP z>gB2VX=STmCL6P%Ro;v3B61tJ^*pkSA86aF|7zQ%mx?mfxQdDjyCpAlQn5#{3eOzP z;f77YrSb|M#QDpN{tRT!cT(|NnmoOwopmg|hFAdo!3}_(U8*9r6$OP@O?Aw`=8?Qz zi9weDP66Tbg?j`0_l z2=dqcw;$6*K1})fy_TX-m0^0fU@EHWOefM|52QkHJXjmJsvKOvQ}nI|QXMAo08JgP zFM)0tc{@%ue>adrd0mbBWT|+k)#F3S+-{!uqRmM_5mTV@44Z1kg~D9DelfomrpjV& z;nm1=9sYl|DEPm9kN8icxUjoqM%xio9dFb})v?5ViX-UU(Jx|;%`XA4RppHWLd>qF4c#>ahCe9q zyJ~?@j47NVt%s)_gVFpo8ubOxiTMpG)|jowE|2ehol+7q@Y>(6daWlmc}TH2sh=V@UCAH3eWMW$(b^JMPDIdcfyQ)+sLluk`6SQF1%b>KUM#q4Pz0 z)1lW0ibM;{LF}EkQw`TlyVV;Ss;cUJr6xzED-+WD5*QW!yjnBZQ`=Y#Ly;_ZRe<2> zL*!9!S!bmI_|SQYc(*sjdbszw+P6f{UWCFg(q(d27(F(+l*p;qlSe(B7|c>q{cTw^ zuWN4gQQnTmf;B;*E6VTD3(?_=EC4x_LtNSuJaBIlLA2;%O}x>Rmw&Qo4Oft!gJah1bUuBTns!78{ekQkOxc?^Ft z$Pyp(G?avW%D*u6OOk%yR|&y3sP(M2Z%}CD#)2MW`yU2E)>qub+-S_zK?7E!_)oee z1Xn?0w*naY@CI_+Tk|zyItku~%h=37n*w7SR#?e1Fs_)k(y`K4dX6938-K2Q5qG`6 zdL+0l(rnxtdcT^I^+O91Hh}2l;zOZ}HQjR8$?R&Mw8$%-@JV+BKz1-!_GujuDa*=O zdE4s`<3d%$iUN)DEPndf`APpjY*Nlp6Rr^-j-xzHBhLuqi>fk4fqlFu1GS9O z#++@s9vh2V02S$rAJJw5PUI}Yg7NG%;&&wqK#DAB+DJh6IQd1NM(s9rc! zY`qbD_mtk*xLZ05*ARF~SP}^1LkV>7kcUo$TM3G_`tO!|PsM9)wPy~*=$n-^>2fS` zev&;FO&~SnZ(z3c@P?R$Zoq0)<1dMgm2$2#u(bSXFGjKH{F?bkhvO$T4~cLsnnK_e zQQwrYv!fq#+On-Jt-QQQEF%cQkk?L&E1L*4ttOAIa4I5bdbRo*f`Qqeq^+-2{+gZB zyiOTM>4;-IMZnMeXA~O&D9jE2*`1?4_8^g!HLi0v^3c9)FEo0iK7A6U-+X?G^*QOs zW!G1;$Oh@}(%<*Nm?X<1!rdn2iu1sB_n*!S8|>4lry-6SH&9a|6MOq5`M5Rx1l1di zMnB}{xh?P8=0koV_dRhM=J86pcMQN7VHxF_2*GF8*T#hkgIC+mIrePEte!#n^6#xYcNcu%9LOD}9AWS-}WB{Nr6zUFL{&2+Cl^?mEzYu1(yj<7{U9c@1= zkIYlDV9nxrz~ql^QK77a{KN}eDY%f7m$UNqvn zDUXgHfX)ep-3MEznKq4g0WYXvuh}^LSRnX(temgP?B&f>Onl!j-Mn+zxP`A~SxyH! z@OQhG|B;UmEhZ7`n@hfkAAFvHXne$CN($8q-hVvPU%-ry>_YGnecl8WTyLIep!?-B z$iKWJ5o4A)G||^9NEw@)_3X%;ZgnPOoc17=$Ts(U2XT5vlkOpB%3=dZUJjc{8YNf} zT^1jt^6nND=sr;j>p*m}Dl*@nXH9exZ+@SzC4t|@y?3m?Bb*(AXwdvz9Odho?4DE` znI>esBMAof6XQx_tN>l&srt1*e|UU}Xjt^7pQ

5s)9_J6XxQ}BQ=EWKoXQzIo-tK3yqZw@ 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 100 else f"🔍 [DEBUG] 创建Session - Cookie: {cookie_header}") + + # ⭐ 关键:调用bizlogin而不是scanloginqrcode! + body = { + "userlang": "zh_CN", + "redirect_url": "", + "login_type": 3, + "sessionid": sessionid, + "token": "", + "lang": "zh_CN", + "f": "json", + "ajax": 1 + } + + response = await proxy_wx_request( + request, + BIZ_LOGIN_ENDPOINT, # ⭐ 使用bizlogin + params={"action": "startlogin"}, + method="POST", + data=body # ⭐ 传递body + ) + + # 存储session + _sessions[sessionid] = { + "created_at": time.time(), + "status": "created" + } + + data = response.json() if response.headers.get("content-type", "").startswith("application/json") else {"base_resp": {"ret": 0}} + + # 🔍 调试:输出响应详情 + print(f"🔍 [DEBUG] Session响应状态码: {response.status_code}") + print(f"🔍 [DEBUG] Session响应数据: {data}") + print(f"🔍 [DEBUG] Session响应 Set-Cookie 数量: {len(response.headers.get_list('set-cookie'))}") + for i, cookie in enumerate(response.headers.get_list("set-cookie")): + print(f"🔍 [DEBUG] Cookie [{i}]: {cookie[:150]}..." if len(cookie) > 150 else f"🔍 [DEBUG] Cookie [{i}]: {cookie}") + + # 转发Set-Cookie(智能处理Secure标志) + response_obj = JSONResponse(content=data) + + # 🔍 检测是否使用 HTTPS(支持反向代理) + is_https = ( + request.url.scheme == "https" or + request.headers.get("x-forwarded-proto") == "https" or + request.headers.get("x-forwarded-ssl") == "on" + ) + + if is_https: + print(f"🔒 检测到HTTPS环境,Cookie将保留Secure标志(安全传输)") + else: + print(f"⚠️ 检测到HTTP环境,Cookie将移除Secure标志(兼容模式,生产环境建议使用HTTPS)") + + for cookie_str in response.headers.get_list("set-cookie"): + if not is_https: + # 🔧 HTTP模式:移除Secure标志以支持HTTP传输 + modified_cookie = cookie_str.replace("; Secure", "") + response_obj.headers.append("Set-Cookie", modified_cookie) + else: + # 🔒 HTTPS模式:保留Secure标志,保持安全性 + response_obj.headers.append("Set-Cookie", cookie_str) + + print(f"✅ 创建session: {sessionid}, 响应: {data}") + return response_obj + + except Exception as e: + print(f"❌ 创建session失败: {str(e)}") + import traceback + traceback.print_exc() + return JSONResponse(content={"base_resp": {"ret": 0}}) # 返回成功避免前端报错 + +@router.get("/getqrcode", summary="获取登录二维码", include_in_schema=True) +async def get_qrcode(request: Request): + """ + 获取微信公众号登录二维码图片,用微信扫码登录。 + + **返回:** 二维码图片(PNG/JPEG 格式) + """ + try: + # 🔍 调试:输出请求信息 + cookie_header = request.headers.get("cookie", "") + print(f"🔍 [DEBUG] 二维码请求 Cookie: {cookie_header[:100]}..." if len(cookie_header) > 100 else f"🔍 [DEBUG] 二维码请求 Cookie: {cookie_header}") + + # 代理请求到微信 + response = await proxy_wx_request( + request, + QR_ENDPOINT, + params={ + "action": "getqrcode", + "random": int(time.time() * 1000) + } + ) + + # 🔍 调试:输出响应信息 + print(f"🔍 [DEBUG] 微信响应状态码: {response.status_code}") + print(f"🔍 [DEBUG] 微信响应 Content-Type: {response.headers.get('content-type', 'N/A')}") + print(f"🔍 [DEBUG] 微信响应内容长度: {len(response.content)} 字节") + print(f"🔍 [DEBUG] 微信响应 Set-Cookie: {response.headers.get('set-cookie', 'N/A')}") + + # 检查响应类型 + content_type = response.headers.get("content-type", "") + content = response.content + + # 检查是否是图片格式 + is_png = content.startswith(b'\x89PNG') + is_jpeg = content.startswith(b'\xff\xd8\xff') or b'JFIF' in content[:20] + is_image = "image" in content_type or is_png or is_jpeg + + # 如果返回的是JSON或者不是图片,说明出错了 + if not is_image: + try: + error_data = response.json() + print(f"⚠️ 二维码接口返回JSON: {error_data}") + return JSONResponse( + status_code=400, + content={"error": "需要先调用 /session/{sessionid} 创建会话", "detail": error_data} + ) + except: + print(f"⚠️ 二维码接口返回非图片内容: {content_type}") + print(f"响应内容前20字节: {content[:20]}") + return JSONResponse( + status_code=400, + content={"error": "获取二维码失败,响应格式异常"} + ) + + # 确定正确的媒体类型 + if is_png: + media_type = "image/png" + print(f"✅ 获取到PNG格式二维码") + elif is_jpeg: + media_type = "image/jpeg" + print(f"✅ 获取到JPEG格式二维码") + else: + # 使用响应头中的类型 + media_type = content_type if "image" in content_type else "image/png" + print(f"✅ 获取到二维码,类型: {media_type}") + + # 可选:保存二维码到本地(用于调试) + import os + qrcode_dir = "static/qrcodes" + if not os.path.exists(qrcode_dir): + os.makedirs(qrcode_dir) + + # 根据格式确定文件扩展名 + ext = "png" if is_png else "jpg" + qrcode_path = f"{qrcode_dir}/login_qrcode.{ext}" + + with open(qrcode_path, "wb") as f: + f.write(content) + print(f"💾 二维码已保存到: {qrcode_path}") + + # 构建响应,转发Set-Cookie + response_obj = Response( + content=content, + media_type=media_type, + headers={ + "Cache-Control": "no-cache, no-store, must-revalidate", + "Pragma": "no-cache", + "Expires": "0" + } + ) + + # 转发Set-Cookie到浏览器(智能处理Secure标志) + is_https = ( + request.url.scheme == "https" or + request.headers.get("x-forwarded-proto") == "https" or + request.headers.get("x-forwarded-ssl") == "on" + ) + + for cookie_str in response.headers.get_list("set-cookie"): + if not is_https: + # 🔧 HTTP模式:移除Secure标志 + modified_cookie = cookie_str.replace("; Secure", "") + response_obj.headers.append("Set-Cookie", modified_cookie) + else: + # 🔒 HTTPS模式:保留Secure标志 + response_obj.headers.append("Set-Cookie", cookie_str) + + return response_obj + + except httpx.HTTPStatusError as e: + print(f"❌ HTTP错误: {e.response.status_code}, 内容: {e.response.text[:200]}") + raise HTTPException( + status_code=e.response.status_code, + detail=f"获取二维码失败: {e.response.status_code}" + ) + except Exception as e: + print(f"❌ 获取二维码异常: {str(e)}") + import traceback + traceback.print_exc() + raise HTTPException(status_code=500, detail=f"获取二维码失败: {str(e)}") + +@router.get("/scan", summary="检查扫码状态", include_in_schema=True) +async def check_scan_status(request: Request): + """ + 轮询检查二维码扫描状态。 + + **返回状态:** 等待扫码 / 已扫码待确认 / 确认成功 / 二维码过期 + """ + try: + # 代理请求到微信 + response = await proxy_wx_request( + request, + QR_ENDPOINT, + params={ + "action": "ask", + "token": "", + "lang": "zh_CN", + "f": "json", + "ajax": 1 + } + ) + response.raise_for_status() + + # 返回微信的响应 + data = response.json() + + # 记录状态用于调试 + if data.get("base_resp", {}).get("ret") != 0: + print(f"⚠️ 扫码状态检查失败: ret={data.get('base_resp', {}).get('ret')}") + else: + status = data.get("status", 0) + if status == 1: # 登录成功 + print(f"🎉 用户已确认登录! status=1") + elif status in [4, 6]: # 已扫码 + acct_size = data.get("acct_size", 0) + print(f"✅ 用户已扫码, status={status}, acct_size={acct_size}") + + # 转发Set-Cookie到浏览器(智能处理Secure标志) + response_obj = JSONResponse(content=data) + + is_https = ( + request.url.scheme == "https" or + request.headers.get("x-forwarded-proto") == "https" or + request.headers.get("x-forwarded-ssl") == "on" + ) + + for cookie_str in response.headers.get_list("set-cookie"): + if not is_https: + # 🔧 HTTP模式:移除Secure标志 + modified_cookie = cookie_str.replace("; Secure", "") + response_obj.headers.append("Set-Cookie", modified_cookie) + else: + # 🔒 HTTPS模式:保留Secure标志 + response_obj.headers.append("Set-Cookie", cookie_str) + + return response_obj + + except httpx.HTTPStatusError as e: + raise HTTPException( + status_code=e.response.status_code, + detail=f"检查扫码状态失败: {e.response.status_code}" + ) + except Exception as e: + print(f"❌ 检查扫码状态异常: {str(e)}") + raise HTTPException(status_code=500, detail=f"检查扫码状态失败: {str(e)}") + +@router.post("/bizlogin", summary="完成登录", include_in_schema=True) +async def biz_login(request: Request): + """ + 扫码确认后调用此接口完成登录,成功后凭证自动保存到 `.env`。 + + **返回:** Token、Cookie、FakeID、昵称等登录凭证 + """ + try: + # 准备登录请求数据 + login_data = { + "userlang": "zh_CN", + "redirect_url": "", + "cookie_forbidden": 0, + "cookie_cleaned": 0, + "plugin_used": 0, + "login_type": 3, + "token": "", + "lang": "zh_CN", + "f": "json", + "ajax": 1 + } + + # 发起登录请求 + response = await proxy_wx_request( + request, + BIZ_LOGIN_ENDPOINT, + params={"action": "login"}, + method="POST", + data=login_data # ⭐ 修复变量名 + ) + response.raise_for_status() + + # 解析响应 + result = response.json() + + print(f"📍 Bizlogin响应: base_resp.ret={result.get('base_resp', {}).get('ret')}") + + # 检查登录是否成功 + if result.get("base_resp", {}).get("ret") != 0: + error_msg = result.get("base_resp", {}).get("err_msg", "登录失败") + print(f"❌ 微信返回错误: {error_msg}") + return JSONResponse( + status_code=400, + content={"success": False, "error": error_msg} + ) + + # 获取redirect_url中的token + redirect_url = result.get("redirect_url", "") + if not redirect_url: + print(f"❌ 未获取到redirect_url,完整响应: {result}") + return JSONResponse( + status_code=400, + content={"success": False, "error": "未获取到登录凭证"} + ) + + # 从URL中提取token + from urllib.parse import urlparse, parse_qs + parsed = urlparse(f"http://localhost{redirect_url}") + token = parse_qs(parsed.query).get("token", [""])[0] + + if not token: + print(f"❌ 未获取到Token,redirect_url: {redirect_url}") + return JSONResponse( + status_code=400, + content={"success": False, "error": "未获取到Token"} + ) + + # 获取Cookie:合并浏览器已有的cookie和bizlogin响应新设的cookie + cookies = {} + + # 先解析浏览器在整个登录流程中累积的cookie + browser_cookie = request.headers.get("cookie", "") + for part in browser_cookie.split(";"): + part = part.strip() + if "=" in part: + key, _, value = part.partition("=") + cookies[key.strip()] = value.strip() + + # 再用bizlogin响应中新设的cookie覆盖(这些是最新的) + for cookie in response.cookies.jar: + cookies[cookie.name] = cookie.value + + cookie_str = "; ".join([f"{k}={v}" for k, v in cookies.items()]) + + # 获取公众号信息和FakeID(使用同一个客户端) + common_headers = { + "Cookie": cookie_str, + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" + } + + nickname = "公众号" + fakeid = "" + + async with httpx.AsyncClient(timeout=30.0) as client: + # 第一步:获取公众号昵称 + info_response = await client.get( + f"{MP_BASE_URL}/cgi-bin/home", + params={"t": "home/index", "token": token, "lang": "zh_CN"}, + headers=common_headers + ) + + html = info_response.text + import re + nick_match = re.search(r'nick_name\s*[:=]\s*["\']([^"\']+)["\']', html) + if nick_match: + nickname = nick_match.group(1) + + # 第二步:通过昵称搜索获取FakeID + print(f"🔍 开始获取FakeID,昵称: {nickname}") + + try: + search_response = await client.get( + f"{MP_BASE_URL}/cgi-bin/searchbiz", + params={ + "action": "search_biz", + "token": token, + "lang": "zh_CN", + "f": "json", + "ajax": 1, + "random": time.time(), + "query": nickname, + "begin": 0, + "count": 5 + }, + headers=common_headers + ) + + print(f"📡 搜索API响应状态: {search_response.status_code}") + search_result = search_response.json() + print(f"📡 搜索结果: {search_result}") + + if search_result.get("base_resp", {}).get("ret") == 0: + accounts = search_result.get("list", []) + print(f"📋 找到 {len(accounts)} 个公众号") + + for account in accounts: + acc_nickname = account.get("nickname", "") + acc_fakeid = account.get("fakeid", "") + print(f" - {acc_nickname} (fakeid: {acc_fakeid})") + + if acc_nickname == nickname: + fakeid = acc_fakeid + print(f"✅ 匹配成功,FakeID: {fakeid}") + break + + if not fakeid: + print(f"⚠️ 未找到完全匹配的公众号,尝试使用第一个结果") + if accounts: + fakeid = accounts[0].get("fakeid", "") + print(f"📝 使用第一个公众号的FakeID: {fakeid}") + else: + ret = search_result.get("base_resp", {}).get("ret") + err_msg = search_result.get("base_resp", {}).get("err_msg", "未知错误") + print(f"❌ 搜索API返回错误: ret={ret}, err_msg={err_msg}") + + except Exception as e: + print(f"❌ 获取FakeID失败: {str(e)}") + import traceback + traceback.print_exc() + + # 计算过期时间(30天后) + expire_time = int((time.time() + 30 * 24 * 3600) * 1000) + + # 保存凭证 + auth_manager.save_credentials( + token=token, + cookie=cookie_str, + fakeid=fakeid, + nickname=nickname, + expire_time=expire_time + ) + + print(f"✅ 登录成功: {nickname} (fakeid: {fakeid})") + print(f" Token: {token[:20]}...") + print(f" Cookie已保存到.env") + + await webhook.notify('login_success', { + 'nickname': nickname, + 'fakeid': fakeid, + }) + + return { + "success": True, + "message": "登录成功", + "data": { + "nickname": nickname, + "fakeid": fakeid, + "token": token, + "expire_time": expire_time + } + } + + except httpx.HTTPStatusError as e: + return JSONResponse( + status_code=e.response.status_code, + content={"success": False, "error": f"登录请求失败: {e.response.status_code}"} + ) + except Exception as e: + return JSONResponse( + status_code=500, + content={"success": False, "error": f"登录失败: {str(e)}"} + ) + +@router.post("/manual", response_model=LoginResponse, summary="手动配置登录凭证") +async def manual_login(request: LoginRequest): + """ + 手动提交登录凭证(适用于已通过其他方式获取凭证的场景)。 + + **请求体参数:** + - **token** (必填): 微信 Token + - **cookie** (必填): 微信 Cookie + - **fakeid** (可选): 公众号 FakeID + - **nickname** (可选): 公众号昵称 + - **expire_time** (可选): 过期时间戳 + """ + try: + success = auth_manager.save_credentials( + token=request.token, + cookie=request.cookie, + fakeid=request.fakeid, + nickname=request.nickname, + expire_time=request.expire_time + ) + + if success: + await webhook.notify('login_success', { + 'nickname': request.nickname or '', + 'fakeid': request.fakeid or '', + }) + return { + "success": True, + "message": "登录凭证已保存" + } + else: + return { + "success": False, + "message": "保存登录凭证失败" + } + except Exception as e: + raise HTTPException(status_code=500, detail=f"保存失败: {str(e)}") + +@router.get("/info", summary="获取登录信息") +async def get_login_info(): + """ + 获取当前登录用户的昵称、FakeID、过期时间等信息。 + """ + credentials = auth_manager.get_credentials() + if credentials: + return { + "success": True, + "data": { + "nickname": credentials.get("nickname"), + "fakeid": credentials.get("fakeid"), + "expire_time": credentials.get("expire_time") + } + } + return { + "success": False, + "error": "未登录" + } diff --git a/routes/search.py b/routes/search.py new file mode 100644 index 0000000..fa0d4c0 --- /dev/null +++ b/routes/search.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +搜索路由 - FastAPI版本 +""" + +from fastapi import APIRouter, Query +from pydantic import BaseModel +from typing import Optional, List +import time +import httpx +from utils.auth_manager import auth_manager + +router = APIRouter() + +class Account(BaseModel): + """公众号模型""" + id: str + name: str + round_head_img: str + +class SearchResponse(BaseModel): + """搜索响应模型""" + success: bool + data: Optional[dict] = None + error: Optional[str] = None + +@router.get("/searchbiz", response_model=SearchResponse, summary="搜索公众号") +async def search_accounts(query: str = Query(..., description="公众号名称或关键词", alias="query")): + """ + 按关键词搜索微信公众号,获取 FakeID。 + + **查询参数:** + - **query** (必填): 搜索关键词(公众号名称) + + **返回字段:** + - `list[]`: 匹配的公众号列表,每项包含 `fakeid`、`nickname`、`alias`、`round_head_img` + - `total`: 匹配数量 + """ + credentials = auth_manager.get_credentials() + if not credentials: + return SearchResponse( + success=False, + error="服务器未登录,请先访问管理页面扫码登录" + ) + + token = credentials.get("token") + cookie = credentials.get("cookie") + + try: + # 调用微信搜索公众号API + async with httpx.AsyncClient(timeout=10.0) as client: + response = await client.get( + "https://mp.weixin.qq.com/cgi-bin/searchbiz", + params={ + "action": "search_biz", + "token": token, + "lang": "zh_CN", + "f": "json", + "ajax": 1, + "random": time.time(), + "query": query, + "begin": 0, + "count": 5 + }, + headers={ + "Cookie": cookie, + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" + } + ) + + result = response.json() + + if result.get("base_resp", {}).get("ret") == 0: + accounts = result.get("list", []) + + # 格式化返回数据 + formatted_accounts = [] + for acc in accounts: + formatted_accounts.append({ + "fakeid": acc.get("fakeid", ""), + "nickname": acc.get("nickname", ""), + "alias": acc.get("alias", ""), + "round_head_img": acc.get("round_head_img", ""), + "service_type": acc.get("service_type", 0) + }) + + return SearchResponse( + success=True, + data={ + "list": formatted_accounts, + "total": len(formatted_accounts) + } + ) + else: + return SearchResponse( + success=False, + error=f"搜索失败: {result.get('base_resp', {}).get('err_msg', '未知错误')}" + ) + + except Exception as e: + print(f"❌ 搜索公众号失败: {str(e)}") + return SearchResponse( + success=False, + error=f"搜索请求失败: {str(e)}" + ) diff --git a/routes/stats.py b/routes/stats.py new file mode 100644 index 0000000..2757d78 --- /dev/null +++ b/routes/stats.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +统计信息路由 +""" + +from fastapi import APIRouter +from pydantic import BaseModel +from utils.rate_limiter import rate_limiter + +router = APIRouter() + +class StatsResponse(BaseModel): + """统计响应""" + rate_limit: dict + + class Config: + json_schema_extra = { + "example": { + "rate_limit": { + "global_requests": 5, + "global_limit": 10, + "active_ips": 2, + "article_requests": 3 + } + } + } + +@router.get("/stats", response_model=StatsResponse, summary="获取API统计信息") +async def get_stats(): + """ + 获取API统计信息 + + 包括: + - 限频统计 + - 请求统计 + """ + return { + "rate_limit": rate_limiter.get_stats() + } + diff --git a/start.bat b/start.bat new file mode 100644 index 0000000..0e9f928 --- /dev/null +++ b/start.bat @@ -0,0 +1,217 @@ +@echo off +chcp 65001 > nul + +:: 强制在持久cmd窗口中运行 +if "%1"=="" ( + cmd /k "%~f0" run + exit /b +) + +title WeChat Article API Service + +echo. +echo ======================================== +echo WeChat Article API Service v1.0.0 +echo FastAPI Edition - One-Click Startup +echo ======================================== +echo. + +:: Configuration variables +set PROJECT_NAME=wechat-article-api +set SERVICE_PORT=5000 +set PYTHON_VERSION=3.8 +set VENV_NAME=venv + +:: Step 1: Check Python environment +echo [94m[1/6] Checking Python environment...[0m +python --version >nul 2>&1 +if errorlevel 1 ( + echo [91mX Python is not installed or not in PATH[0m + echo Please install Python %PYTHON_VERSION%+ and add to PATH + echo Download from: https://www.python.org/downloads/ + pause + exit /b 1 +) + +for /f "tokens=2" %%i in ('python --version') do set INSTALLED_PYTHON=%%i +echo [92m+ Python version: %INSTALLED_PYTHON%[0m + +:: Check pip +pip --version >nul 2>&1 +if errorlevel 1 ( + echo [91mX pip is not installed[0m + echo Please install pip + pause + exit /b 1 +) +echo [92m+ pip is installed[0m + +:: Step 2: Create virtual environment +echo. +echo [94m[2/6] Creating Python virtual environment...[0m +if exist "%VENV_NAME%" ( + echo [93m! Virtual environment already exists, skipping creation[0m +) else ( + python -m venv %VENV_NAME% + if errorlevel 1 ( + echo [91mX Virtual environment creation failed[0m + pause + exit /b 1 + ) + echo [92m+ Virtual environment created successfully[0m +) + +:: Activate virtual environment +call %VENV_NAME%\Scripts\activate.bat +if errorlevel 1 ( + echo [91mX Virtual environment activation failed[0m + pause + exit /b 1 +) +echo [92m+ Virtual environment activated[0m + +:: Step 3: Install dependencies +echo. +echo [94m[3/6] Installing Python dependencies...[0m +if exist "requirements.txt" ( + pip install -r requirements.txt + if errorlevel 1 ( + echo [91mX Dependencies installation failed[0m + pause + exit /b 1 + ) + echo [92m+ Dependencies installed successfully[0m +) else ( + echo [93m! requirements.txt not found, installing core dependencies manually[0m + pip install fastapi uvicorn httpx python-dotenv + if errorlevel 1 ( + echo [91mX Core dependencies installation failed[0m + pause + exit /b 1 + ) + echo [92m+ Core dependencies installed successfully[0m +) + +:: Step 4: Check .env configuration +echo. +echo [94m[4/6] Checking configuration file...[0m +if not exist ".env" ( + echo [93m! .env file not found, creating from template...[0m + + if exist "env.example" ( + copy env.example .env >nul + echo [92m+ .env file created from env.example[0m + ) else ( + echo [93m! env.example not found, creating basic .env file...[0m + ( + echo # WeChat Article API Configuration + echo # Auto-generated by start.bat + echo. + echo # Authentication Info ^(Auto-filled after login^) + echo WECHAT_TOKEN= + echo WECHAT_COOKIE= + echo WECHAT_FAKEID= + echo WECHAT_NICKNAME= + echo WECHAT_EXPIRE_TIME= + echo. + echo # Service Configuration + echo PORT=5000 + echo HOST=0.0.0.0 + echo DEBUG=false + echo. + echo # Rate Limiting + echo RATE_LIMIT_GLOBAL=10 + echo RATE_LIMIT_PER_IP=5 + echo RATE_LIMIT_ARTICLE_INTERVAL=3 + ) > .env + echo [92m+ Basic .env file created[0m + ) + + echo. + echo [93m========================================[0m + echo [93m First-time Setup[0m + echo [93m========================================[0m + echo. + echo [92mNext Steps:[0m + echo 1. Service will start in a moment + echo 2. Visit: http://localhost:5000/login.html + echo 3. Scan QR code with WeChat + echo 4. Login credentials will be saved automatically + echo. + echo [93m========================================[0m + echo. +) else ( + echo [92m+ .env configuration file found[0m + + :: Check required configuration items + findstr /C:"WECHAT_TOKEN=" .env | findstr /V "WECHAT_TOKEN=$" | findstr /V "WECHAT_TOKEN= *$" >nul 2>nul + if errorlevel 1 ( + echo [93m! WeChat credentials not configured yet[0m + echo [93m Please visit http://localhost:5000/login.html to login[0m + ) else ( + echo [92m+ WeChat login credentials configured[0m + ) +) +echo. + +:: Step 5: Detect system configuration +echo [94m[5/6] Detecting system configuration...[0m + +:: Get CPU cores +for /f "tokens=2 delims==" %%a in ('wmic cpu get NumberOfLogicalProcessors /value ^| find "="') do set CPU_CORES=%%a +if not defined CPU_CORES set CPU_CORES=4 + +:: Get memory size (GB) +for /f "tokens=2 delims==" %%a in ('wmic computersystem get TotalPhysicalMemory /value ^| find "="') do set MEMORY_BYTES=%%a +if defined MEMORY_BYTES ( + set /a MEMORY_GB=MEMORY_BYTES/1073741824 +) else ( + set MEMORY_GB=8 +) + +echo [92m+ System configuration:[0m +echo CPU cores: %CPU_CORES% +echo Memory: %MEMORY_GB%GB +echo. + +:: Step 6: Start service +echo [94m[6/6] Starting FastAPI service...[0m +echo. +echo ======================================== +echo [92mService Startup Information[0m +echo ======================================== +echo. +echo [94mAccess URLs:[0m +echo - Admin Panel: http://localhost:%SERVICE_PORT%/admin.html +echo - Login Page: http://localhost:%SERVICE_PORT%/login.html +echo - API Docs: http://localhost:%SERVICE_PORT%/api/docs +echo - ReDoc: http://localhost:%SERVICE_PORT%/api/redoc +echo - Health: http://localhost:%SERVICE_PORT%/api/health +echo. +echo [94mCore Features:[0m +echo + Article Retrieval - POST /api/article +echo + Article List - GET /api/public/articles +echo + Article Search - GET /api/public/articles/search +echo + Account Search - GET /api/public/searchbiz +echo + Image Proxy - GET /api/image +echo + Auto Rate Limiting +echo + Webhook Notifications +echo. +echo [94mSystem Info:[0m +echo CPU: %CPU_CORES% cores +echo Memory: %MEMORY_GB%GB +echo. +echo ======================================== +echo. +echo [93mFirst time? Please visit login page to scan QR code:[0m +echo =^> http://localhost:%SERVICE_PORT%/login.html +echo. +echo [93mTip: Press Ctrl+C to stop service[0m +echo. + +:: Start service +python app.py + +echo. +echo [92mService stopped[0m +pause diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..638fc4a --- /dev/null +++ b/start.sh @@ -0,0 +1,545 @@ +#!/bin/bash + +# =============================================== +# WeChat Article API Service - Linux Deployment Script v2.0 +# =============================================== + +# Error handling +set -e # Exit on error +set -o pipefail # Catch errors in pipes + +# Trap errors +trap 'echo -e "\n${RED}Error: Deployment failed at line $LINENO${NC}" >&2; exit 1' ERR + +# Color definitions +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Configuration variables +PROJECT_NAME="wechat-article-api" +SERVICE_PORT=5000 +PYTHON_VERSION="3.8" +VENV_NAME="venv" +DEPLOY_USER="wechat-api" # Dedicated service user + +# Get current directory (compatible with different shells) +if [ -n "${BASH_SOURCE[0]}" ]; then + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +else + SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +fi +INSTALL_DIR="$SCRIPT_DIR" +LOG_DIR="$INSTALL_DIR/logs" + +# Get the actual user who ran sudo (if applicable) +if [ -n "$SUDO_USER" ]; then + REAL_USER="$SUDO_USER" +else + REAL_USER="$USER" +fi + +# =============================================== +# Show welcome message +# =============================================== +show_welcome() { + echo + echo "========================================" + echo " WeChat Article API Deployment Tool v1.0.0" + echo "========================================" + echo + echo -e "${BLUE}Installation directory: $INSTALL_DIR${NC}" + echo -e "${BLUE}Service port: $SERVICE_PORT${NC}" + echo -e "${BLUE}Service user: $DEPLOY_USER${NC}" + echo +} + +# =============================================== +# Check permissions +# =============================================== +check_permission() { + echo -e "${BLUE}Checking system and permissions...${NC}" + + # Detect OS + if [ -f /etc/os-release ]; then + . /etc/os-release 2>/dev/null || true + echo -e "${GREEN}+ OS: ${NAME:-Linux} ${VERSION_ID:-unknown}${NC}" + fi + + # Check if running in container + if [ -f /.dockerenv ] || grep -qa container /proc/1/environ 2>/dev/null; then + echo -e "${YELLOW}! Container environment detected${NC}" + fi + + if [ "$EUID" -ne 0 ]; then + echo -e "${YELLOW}! Running without root privileges${NC}" + echo -e "${YELLOW} - Dedicated service user will NOT be created${NC}" + echo -e "${YELLOW} - Systemd service will NOT be configured${NC}" + echo -e "${YELLOW} - For full deployment, run: sudo bash start.sh${NC}" + echo + echo -e "${YELLOW}Press Enter to continue or Ctrl+C to exit${NC}" + read -p "" + else + echo -e "${GREEN}+ Running with root privileges${NC}" + fi + echo +} + +# =============================================== +# Step 1: Check Python +# =============================================== +check_python() { + echo -e "${BLUE}[1/7] Checking Python environment...${NC}" + + if ! command -v python3 &> /dev/null; then + echo -e "${RED}X Python3 not found${NC}" + echo "Please install Python $PYTHON_VERSION or higher" + exit 1 + fi + + PYTHON_VER=$(python3 --version | cut -d' ' -f2) + echo -e "${GREEN}+ Python version: $PYTHON_VER${NC}" + + # Check venv module + if ! python3 -m venv --help &> /dev/null; then + echo -e "${YELLOW}! python3-venv not found${NC}" + + if [ "$EUID" -eq 0 ]; then + echo -e "${BLUE} Installing python3-venv...${NC}" + + # Detect package manager and install + if command -v apt &> /dev/null; then + # Debian/Ubuntu + apt update && apt install -y python3-venv python3-pip || { + echo -e "${RED}X Failed to install python3-venv${NC}" + echo "Please run: apt install python3-venv python3-pip" + exit 1 + } + elif command -v yum &> /dev/null; then + # RHEL/CentOS + yum install -y python3-venv python3-pip || { + echo -e "${RED}X Failed to install python3-venv${NC}" + echo "Please run: yum install python3-venv python3-pip" + exit 1 + } + elif command -v dnf &> /dev/null; then + # Fedora + dnf install -y python3-venv python3-pip || { + echo -e "${RED}X Failed to install python3-venv${NC}" + echo "Please run: dnf install python3-venv python3-pip" + exit 1 + } + else + echo -e "${RED}X Cannot determine package manager${NC}" + echo "Please install python3-venv manually" + exit 1 + fi + echo -e "${GREEN}+ python3-venv installed${NC}" + else + echo -e "${RED}X python3-venv is required but not installed${NC}" + echo + echo "Please run one of the following commands with sudo:" + echo " Debian/Ubuntu: sudo apt install python3-venv python3-pip" + echo " RHEL/CentOS: sudo yum install python3-venv python3-pip" + echo " Fedora: sudo dnf install python3-venv python3-pip" + echo + echo "Then run this script again" + exit 1 + fi + fi + + # Check pip + if ! command -v pip3 &> /dev/null && ! python3 -m pip --version &> /dev/null; then + echo -e "${YELLOW}! pip not found, attempting to install...${NC}" + python3 -m ensurepip --upgrade 2>/dev/null || { + if [ "$EUID" -eq 0 ]; then + if command -v apt &> /dev/null; then + apt install -y python3-pip + elif command -v yum &> /dev/null; then + yum install -y python3-pip + elif command -v dnf &> /dev/null; then + dnf install -y python3-pip + fi + fi + } + fi + echo -e "${GREEN}+ pip available${NC}" + echo +} + +# =============================================== +# Step 2: Create virtual environment +# =============================================== +create_venv() { + echo -e "${BLUE}[2/7] Creating Python virtual environment...${NC}" + + if [[ ! -d "$VENV_NAME" ]]; then + python3 -m venv "$VENV_NAME" + echo -e "${GREEN}+ Virtual environment created${NC}" + else + echo -e "${YELLOW}! Virtual environment already exists, skipping${NC}" + fi + + # Activate virtual environment + source "$VENV_NAME/bin/activate" + echo -e "${GREEN}+ Virtual environment activated${NC}" + echo +} + +# =============================================== +# Step 3: Install dependencies +# =============================================== +install_dependencies() { + echo -e "${BLUE}[3/7] Installing Python dependencies...${NC}" + + # Upgrade pip + python -m pip install --upgrade pip + + # Install requirements.txt + if [[ -f "requirements.txt" ]]; then + pip install -r requirements.txt + echo + # Verify installation + if ! python -c "import fastapi" 2>/dev/null; then + echo -e "${RED}X Dependencies installation failed${NC}" + exit 1 + fi + echo -e "${GREEN}+ Dependencies installed successfully${NC}" + else + echo -e "${YELLOW}! requirements.txt not found, installing core dependencies${NC}" + pip install fastapi uvicorn httpx python-dotenv + echo + # Verify installation + if ! python -c "import fastapi" 2>/dev/null; then + echo -e "${RED}X Core dependencies installation failed${NC}" + exit 1 + fi + echo -e "${GREEN}+ Core dependencies installed successfully${NC}" + fi + echo +} + +# =============================================== +# Step 4: Initialize project +# =============================================== +initialize_project() { + echo -e "${BLUE}[4/7] Initializing project...${NC}" + + # Create necessary directories + mkdir -p static logs + echo -e "${GREEN}+ Directory structure created${NC}" + + # Create .env file if not exists + if [[ ! -f ".env" ]]; then + echo -e "${YELLOW}! .env file not found, creating from template...${NC}" + + if [[ -f "env.example" ]]; then + cp env.example .env + echo -e "${GREEN}+ .env file created from env.example${NC}" + else + echo -e "${YELLOW}! env.example not found, creating basic .env file...${NC}" + cat > .env << 'EOF' +# WeChat Article API Configuration +# Auto-generated by start.sh + +# Authentication Info (Auto-filled after login) +WECHAT_TOKEN= +WECHAT_COOKIE= +WECHAT_FAKEID= +WECHAT_NICKNAME= +WECHAT_EXPIRE_TIME= + +# Webhook Configuration +WEBHOOK_URL= +WEBHOOK_NOTIFICATION_INTERVAL=300 + +# Rate Limiting +RATE_LIMIT_GLOBAL=10 +RATE_LIMIT_PER_IP=5 +RATE_LIMIT_ARTICLE_INTERVAL=3 +EOF + echo -e "${GREEN}+ Basic .env file created${NC}" + fi + + echo + echo -e "${YELLOW}========================================${NC}" + echo -e "${YELLOW} First-time Setup${NC}" + echo -e "${YELLOW}========================================${NC}" + echo + echo -e "${GREEN}Next Steps:${NC}" + echo " 1. Service will start after deployment" + echo " 2. Visit: http://localhost:$SERVICE_PORT/login.html" + echo " 3. Scan QR code with WeChat" + echo " 4. Login credentials will be saved automatically" + echo + echo -e "${YELLOW}========================================${NC}" + echo + else + echo -e "${GREEN}+ .env configuration file found${NC}" + + # Check if credentials are actually configured (not empty) + if grep -q "WECHAT_TOKEN=.\+" .env 2>/dev/null; then + echo -e "${GREEN}+ WeChat login credentials configured${NC}" + else + echo -e "${YELLOW}! WeChat credentials not configured yet${NC}" + echo -e "${YELLOW} Please visit http://localhost:$SERVICE_PORT/login.html to login${NC}" + fi + fi + echo +} + +# =============================================== +# Step 5: Start service (non-root mode) +# =============================================== +start_service() { + echo -e "${BLUE}[5/7] Starting service...${NC}" + + # If running with root, service will be started via systemd + if [ "$EUID" -eq 0 ]; then + echo -e "${YELLOW}! Service will be started via systemd (see step 7)${NC}" + echo + return + fi + + # For non-root users, start service directly in foreground + echo + echo "========================================" + echo -e "${GREEN}Service Startup Information${NC}" + echo "========================================" + echo + echo -e "${BLUE}Access URLs:${NC}" + echo " - Admin Panel: http://localhost:$SERVICE_PORT/admin.html" + echo " - Login Page: http://localhost:$SERVICE_PORT/login.html" + echo " - API Docs: http://localhost:$SERVICE_PORT/api/docs" + echo " - ReDoc: http://localhost:$SERVICE_PORT/api/redoc" + echo " - Health: http://localhost:$SERVICE_PORT/api/health" + echo + echo -e "${BLUE}Core Features:${NC}" + echo " + Article Retrieval - POST /api/article" + echo " + Article List - GET /api/public/articles" + echo " + Article Search - GET /api/public/articles/search" + echo " + Account Search - GET /api/public/searchbiz" + echo " + Image Proxy - GET /api/image" + echo " + Auto Rate Limiting" + echo " + Webhook Notifications" + echo + echo -e "${YELLOW}First time? Please visit login page to scan QR code:${NC}" + echo " => http://localhost:$SERVICE_PORT/login.html" + echo + echo -e "${YELLOW}Tip: Press Ctrl+C to stop service${NC}" + echo "========================================" + echo + + # Start the service + python app.py +} + +# =============================================== +# Step 6: Create dedicated service user (optional) +# =============================================== +create_service_user() { + echo -e "${BLUE}[6/7] Creating dedicated service user...${NC}" + + if [ "$EUID" -ne 0 ]; then + echo -e "${YELLOW}! Not running as root, skipping user creation${NC}" + echo -e "${YELLOW}! Service will run as: $REAL_USER${NC}" + DEPLOY_USER="$REAL_USER" + echo + return + fi + + # Check if user already exists + if id "$DEPLOY_USER" &>/dev/null; then + echo -e "${GREEN}+ Service user already exists: $DEPLOY_USER${NC}" + else + # Try to create system user + echo -e "${BLUE} Creating user $DEPLOY_USER...${NC}" + + # Try different methods depending on the system + if command -v useradd &>/dev/null; then + # Most Linux distributions + if useradd -r -s /usr/sbin/nologin -c "WeChat Article API Service" "$DEPLOY_USER" 2>/dev/null; then + echo -e "${GREEN}+ Created service user: $DEPLOY_USER${NC}" + elif useradd -r -s /bin/false -c "WeChat Article API Service" "$DEPLOY_USER" 2>/dev/null; then + echo -e "${GREEN}+ Created service user: $DEPLOY_USER${NC}" + else + echo -e "${YELLOW}! User creation failed, trying with adduser...${NC}" + if command -v adduser &>/dev/null; then + adduser --system --no-create-home --group "$DEPLOY_USER" 2>/dev/null || { + echo -e "${YELLOW}! All user creation methods failed, using current user: $REAL_USER${NC}" + DEPLOY_USER="$REAL_USER" + } + else + echo -e "${YELLOW}! Using current user: $REAL_USER${NC}" + DEPLOY_USER="$REAL_USER" + fi + fi + else + echo -e "${YELLOW}! useradd not found, using current user: $REAL_USER${NC}" + DEPLOY_USER="$REAL_USER" + fi + fi + + # Set proper ownership + if [ "$DEPLOY_USER" != "$REAL_USER" ]; then + echo -e "${BLUE} Setting file ownership...${NC}" + if chown -R "$DEPLOY_USER:$DEPLOY_USER" "$INSTALL_DIR" 2>/dev/null; then + echo -e "${GREEN}+ Ownership set to: $DEPLOY_USER${NC}" + else + echo -e "${YELLOW}! Warning: Could not set ownership, trying with group only...${NC}" + if getent group "$DEPLOY_USER" &>/dev/null; then + chown -R "$DEPLOY_USER:$DEPLOY_USER" "$INSTALL_DIR" 2>/dev/null || { + echo -e "${YELLOW}! Warning: File ownership not changed${NC}" + } + fi + fi + fi + + echo +} + +# =============================================== +# Step 7: Configure systemd service (optional) +# =============================================== +configure_systemd() { + echo -e "${BLUE}[7/7] Configuring systemd service...${NC}" + + if [ "$EUID" -ne 0 ]; then + echo -e "${YELLOW}! Not running as root, skipping systemd configuration${NC}" + echo -e "${YELLOW}! To configure systemd, run: sudo bash start.sh${NC}" + echo + return + fi + + # Create systemd service file + cat > /etc/systemd/system/wechat-article-api.service << EOF +[Unit] +Description=WeChat Article API Service +After=network.target + +[Service] +Type=simple +User=$DEPLOY_USER +Group=$DEPLOY_USER +WorkingDirectory=$INSTALL_DIR +Environment="PATH=$INSTALL_DIR/$VENV_NAME/bin" +ExecStart=$INSTALL_DIR/$VENV_NAME/bin/python $INSTALL_DIR/app.py +Restart=always +RestartSec=10 +StandardOutput=journal +StandardError=journal +SyslogIdentifier=wechat-article-api + +# Security hardening +NoNewPrivileges=true +PrivateTmp=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=$INSTALL_DIR/logs +ReadWritePaths=$INSTALL_DIR/.env +ReadWritePaths=$INSTALL_DIR/static/qrcodes + +[Install] +WantedBy=multi-user.target +EOF + + echo -e "${GREEN}+ systemd service file created${NC}" + + # Reload systemd configuration + systemctl daemon-reload + + # Ask if user wants to start service now + read -p "Enable and start systemd service now? (y/N): " START_SERVICE + if [[ "$START_SERVICE" =~ ^[Yy]$ ]]; then + systemctl enable wechat-article-api.service + systemctl start wechat-article-api.service + echo -e "${GREEN}+ Service started${NC}" + + # Show service status + echo + echo -e "${BLUE}Service status:${NC}" + systemctl status wechat-article-api --no-pager || true + else + echo -e "${YELLOW}! Service start skipped, you can start it manually later${NC}" + fi + echo +} + +# =============================================== +# Show deployment summary +# =============================================== +show_summary() { + echo + echo "========================================" + echo -e "${GREEN}Deployment completed!${NC}" + echo "========================================" + echo + echo -e "${GREEN}Deployment Information:${NC}" + echo " - Installation directory: $INSTALL_DIR" + echo " - Service port: $SERVICE_PORT" + echo " - Service user: $DEPLOY_USER" + echo " - Virtual environment: $VENV_NAME" + echo " - Log directory: $LOG_DIR" + echo + echo -e "${GREEN}Usage:${NC}" + if [ "$EUID" -ne 0 ]; then + echo " - Restart: ./start.sh" + echo " - Stop: Press Ctrl+C or use ./stop.sh" + echo " - Status: ./status.sh" + echo " - Activate venv: source venv/bin/activate" + fi + echo + + if [ "$EUID" -eq 0 ]; then + echo -e "${GREEN}systemd Commands:${NC}" + echo " - Start service: systemctl start wechat-article-api" + echo " - Stop service: systemctl stop wechat-article-api" + echo " - Restart service: systemctl restart wechat-article-api" + echo " - View status: systemctl status wechat-article-api" + echo " - View logs: journalctl -u wechat-article-api -f" + echo + fi + + echo -e "${GREEN}Access URLs:${NC}" + echo " - Admin Panel: http://localhost:$SERVICE_PORT/admin.html" + echo " - Login Page: http://localhost:$SERVICE_PORT/login.html" + echo " - API Documentation: http://localhost:$SERVICE_PORT/api/docs" + echo " - ReDoc: http://localhost:$SERVICE_PORT/api/redoc" + echo " - Health Check: http://localhost:$SERVICE_PORT/api/health" + echo + echo -e "${GREEN}Core Features:${NC}" + echo " + Article Retrieval - POST /api/article" + echo " + Article List - GET /api/public/articles" + echo " + Article Search - GET /api/public/articles/search" + echo " + Account Search - GET /api/public/searchbiz" + echo " + Image Proxy - GET /api/image" + echo " + Auto Rate Limiting" + echo " + Webhook Notifications" + echo + echo -e "${YELLOW}Notes:${NC}" + echo " - First-time login required via web interface" + echo " - Credentials saved in .env file" + echo " - Check port usage: netstat -tulpn | grep :$SERVICE_PORT" + echo +} + +# =============================================== +# Main function +# =============================================== +main() { + show_welcome + check_permission + check_python + create_venv + install_dependencies + initialize_project + start_service # Non-root: start service directly; Root: skip (use systemd) + create_service_user # Root only: create dedicated user + configure_systemd # Root only: configure systemd service + show_summary +} + +# Run main function +main diff --git a/static/admin.html b/static/admin.html new file mode 100644 index 0000000..4033791 --- /dev/null +++ b/static/admin.html @@ -0,0 +1,770 @@ + + + + + + WeChat Download API + + + +

+ +
+
+

WeChat Download API

+

微信公众号文章获取服务

+
+ v1.0.0 +
+ + +
+
+ + + + + +
+
+
登录状态
+
检查中...
+
+
+
+ +
+
+ + +
+ + + + +
+
+
+ + + + + + + +
+
+
接口文档
+
在线调试 API
+
+
+ +
+ + +
+
+
+ + + + + +
+
+
系统
+
监控与调试
+
+
+ +
+ + +
+
+
+ + + + +
+
+
接口测试
+
输入文章 URL 测试获取功能
+
+
+
+ + +
+
+
+ + +
+ +
+
+
+
+ + + +
+ + + + diff --git a/static/login.html b/static/login.html new file mode 100644 index 0000000..c293666 --- /dev/null +++ b/static/login.html @@ -0,0 +1,282 @@ + + + + + + 登录 - WeChat Download API + + + +
+

扫码登录

+

使用微信扫描二维码登录公众平台

+ +
+
+
+ +
正在加载二维码...
+ + + 返回管理面板 +
+ + + + diff --git a/static/verify.html b/static/verify.html new file mode 100644 index 0000000..cdf1151 --- /dev/null +++ b/static/verify.html @@ -0,0 +1,245 @@ + + + + + + 验证处理 - WeChat Download API + + + +
+

验证处理

+

在浏览器中完成微信安全验证

+ + + + + +
+
操作步骤
+
+ 1 + 粘贴链接 — 输入触发验证的文章 URL +
+
+ 2 + 打开页面 — 点击按钮在新窗口中打开 +
+
+ 3 + 完成验证 — 完成滑块或点击验证码 +
+
+ 4 + 等待恢复 — 验证通过后等待 5-10 分钟再使用 API +
+
+ +
+ 验证通过后,Cookie 会自动更新。建议等待几分钟再继续调用接口,让微信系统恢复稳定。 +
+ + 返回管理面板 +
+ + + + diff --git a/status.sh b/status.sh new file mode 100644 index 0000000..96f7ce7 --- /dev/null +++ b/status.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +# =============================================== +# WeChat Article API Service - Status Check Script +# =============================================== + +# Color definitions +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +SERVICE_PORT=5000 + +echo +echo "========================================" +echo " WeChat Article API Service - Status" +echo "========================================" +echo + +# Check if running as systemd service +if [ "$EUID" -eq 0 ] && systemctl list-unit-files | grep -q wechat-article-api; then + echo -e "${BLUE}systemd Service Status:${NC}" + systemctl status wechat-article-api --no-pager -l + echo +fi + +# Check process +echo -e "${BLUE}Process Status:${NC}" +PIDS=$(pgrep -f "python.*app.py") +if [ -z "$PIDS" ]; then + PIDS=$(pgrep -f "uvicorn.*app:app") +fi + +if [ -n "$PIDS" ]; then + echo -e "${GREEN}+ Service is running${NC}" + for PID in $PIDS; do + echo -e " PID: $PID" + ps -p "$PID" -o pid,ppid,user,%cpu,%mem,etime,cmd --no-headers + done +else + echo -e "${RED}X Service is not running${NC}" +fi +echo + +# Check port +echo -e "${BLUE}Port Status:${NC}" +if command -v netstat &> /dev/null; then + PORT_CHECK=$(netstat -tulpn 2>/dev/null | grep ":$SERVICE_PORT") +elif command -v ss &> /dev/null; then + PORT_CHECK=$(ss -tulpn 2>/dev/null | grep ":$SERVICE_PORT") +fi + +if [ -n "$PORT_CHECK" ]; then + echo -e "${GREEN}+ Port $SERVICE_PORT is listening${NC}" + echo "$PORT_CHECK" +else + echo -e "${YELLOW}! Port $SERVICE_PORT is not in use${NC}" +fi +echo + +# Check API health +echo -e "${BLUE}API Health Check:${NC}" +if command -v curl &> /dev/null; then + HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:$SERVICE_PORT/api/health 2>/dev/null || echo "000") + if [ "$HTTP_CODE" = "200" ]; then + RESPONSE=$(curl -s http://localhost:$SERVICE_PORT/api/health 2>/dev/null) + echo -e "${GREEN}+ API is healthy${NC}" + echo " Response: $RESPONSE" + else + echo -e "${RED}X API is not responding (HTTP $HTTP_CODE)${NC}" + fi +elif command -v wget &> /dev/null; then + if wget -q --spider http://localhost:$SERVICE_PORT/api/health 2>/dev/null; then + echo -e "${GREEN}+ API is healthy${NC}" + else + echo -e "${RED}X API is not responding${NC}" + fi +else + echo -e "${YELLOW}! curl/wget not available, skipping health check${NC}" +fi +echo + +# Check login status +echo -e "${BLUE}Login Status:${NC}" +if [ -f ".env" ]; then + if grep -q "WECHAT_TOKEN=.\+" .env 2>/dev/null; then + TOKEN_VALUE=$(grep "WECHAT_TOKEN=" .env | cut -d'=' -f2 | head -c 20) + echo -e "${GREEN}+ WeChat credentials configured${NC}" + echo " Token: ${TOKEN_VALUE}..." + + EXPIRE_TIME=$(grep "WECHAT_EXPIRE_TIME=" .env | cut -d'=' -f2) + if [ -n "$EXPIRE_TIME" ] && [ "$EXPIRE_TIME" != "0" ]; then + CURRENT_TIME=$(date +%s)000 + if [ "$EXPIRE_TIME" -gt "$CURRENT_TIME" ]; then + echo -e "${GREEN}+ Credentials are valid${NC}" + else + echo -e "${YELLOW}! Credentials may be expired${NC}" + fi + fi + else + echo -e "${YELLOW}! WeChat credentials not configured${NC}" + echo " Please visit http://localhost:$SERVICE_PORT/login.html to login" + fi +else + echo -e "${YELLOW}! .env file not found${NC}" +fi +echo + +# Show access URLs +echo -e "${BLUE}Access URLs:${NC}" +echo " - Admin Panel: http://localhost:$SERVICE_PORT/admin.html" +echo " - Login Page: http://localhost:$SERVICE_PORT/login.html" +echo " - API Docs: http://localhost:$SERVICE_PORT/api/docs" +echo " - Health: http://localhost:$SERVICE_PORT/api/health" +echo + diff --git a/stop.sh b/stop.sh new file mode 100644 index 0000000..24b61e1 --- /dev/null +++ b/stop.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +# =============================================== +# WeChat Article API Service - Stop Script +# =============================================== + +# Color definitions +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +echo +echo "========================================" +echo " WeChat Article API Service - Stop" +echo "========================================" +echo + +# Check if running as systemd service +if [ "$EUID" -eq 0 ] && systemctl is-active --quiet wechat-article-api; then + echo -e "${BLUE}Detected systemd service, stopping...${NC}" + systemctl stop wechat-article-api + echo -e "${GREEN}+ systemd service stopped${NC}" + echo + exit 0 +fi + +# Find and kill process +echo -e "${BLUE}Searching for running API service...${NC}" + +# Try to find by app.py +PIDS=$(pgrep -f "python.*app.py") + +if [ -z "$PIDS" ]; then + # Try to find by uvicorn + PIDS=$(pgrep -f "uvicorn.*app:app") +fi + +if [ -z "$PIDS" ]; then + echo -e "${YELLOW}! No running service found${NC}" + echo + exit 0 +fi + +echo -e "${BLUE}Found process(es): $PIDS${NC}" + +# Kill processes +for PID in $PIDS; do + echo -e "${BLUE}Stopping process $PID...${NC}" + kill "$PID" 2>/dev/null + + # Wait for graceful shutdown + sleep 2 + + # Force kill if still running + if ps -p "$PID" > /dev/null 2>&1; then + echo -e "${YELLOW}! Process still running, force killing...${NC}" + kill -9 "$PID" 2>/dev/null + fi + + echo -e "${GREEN}+ Process $PID stopped${NC}" +done + +echo +echo -e "${GREEN}Service stopped successfully${NC}" +echo + diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..7c432dd --- /dev/null +++ b/utils/__init__.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +工具模块初始化 +""" + +from .auth_manager import auth_manager +from .helpers import ( + parse_article_url, + extract_article_info, + is_article_deleted, + is_need_verification, + is_login_required, + time_str_to_microseconds, +) + +__all__ = [ + 'auth_manager', + 'parse_article_url', + 'extract_article_info', + 'is_article_deleted', + 'is_need_verification', + 'is_login_required', + 'time_str_to_microseconds', +] + diff --git a/utils/auth_manager.py b/utils/auth_manager.py new file mode 100644 index 0000000..235df2a --- /dev/null +++ b/utils/auth_manager.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +认证管理器 - FastAPI版本 +管理微信登录凭证(Token、Cookie等) +""" + +import os +import time +from pathlib import Path +from typing import Optional, Dict +from dotenv import load_dotenv, set_key, find_dotenv + +class AuthManager: + """认证管理单例类""" + + _instance = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super(AuthManager, cls).__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self): + if self._initialized: + return + + # 设置.env文件路径(python-api目录下) + self.base_dir = Path(__file__).parent.parent + self.env_path = self.base_dir / ".env" + + # 加载环境变量 + self._load_credentials() + self._initialized = True + + def _load_credentials(self): + """从.env文件加载凭证""" + if self.env_path.exists(): + load_dotenv(self.env_path, override=True) + + self.credentials = { + "token": os.getenv("WECHAT_TOKEN", ""), + "cookie": os.getenv("WECHAT_COOKIE", ""), + "fakeid": os.getenv("WECHAT_FAKEID", ""), + "nickname": os.getenv("WECHAT_NICKNAME", ""), + "expire_time": int(os.getenv("WECHAT_EXPIRE_TIME") or 0) + } + + def save_credentials(self, token: str, cookie: str, fakeid: str, + nickname: str, expire_time: int) -> bool: + """ + 保存凭证到.env文件 + + Args: + token: 微信Token + cookie: 微信Cookie + fakeid: 公众号ID + nickname: 公众号名称 + expire_time: 过期时间(毫秒时间戳) + + Returns: + 保存是否成功 + """ + try: + # 更新内存中的凭证 + self.credentials.update({ + "token": token, + "cookie": cookie, + "fakeid": fakeid, + "nickname": nickname, + "expire_time": expire_time + }) + + # 确保.env文件存在 + if not self.env_path.exists(): + self.env_path.touch() + + # 保存到.env文件 + env_file = str(self.env_path) + set_key(env_file, "WECHAT_TOKEN", token) + set_key(env_file, "WECHAT_COOKIE", cookie) + set_key(env_file, "WECHAT_FAKEID", fakeid) + set_key(env_file, "WECHAT_NICKNAME", nickname) + set_key(env_file, "WECHAT_EXPIRE_TIME", str(expire_time)) + + print(f"✅ 凭证已保存到: {self.env_path}") + return True + except Exception as e: + print(f"❌ 保存凭证失败: {e}") + return False + + def get_credentials(self) -> Optional[Dict[str, any]]: + """ + 获取有效的凭证 + + Returns: + 凭证字典,如果未登录则返回None + """ + # 重新加载以获取最新的凭证 + self._load_credentials() + + if not self.credentials.get("token") or not self.credentials.get("cookie"): + return None + + return self.credentials + + def get_token(self) -> Optional[str]: + """获取Token""" + creds = self.get_credentials() + return creds["token"] if creds else None + + def get_cookie(self) -> Optional[str]: + """获取Cookie""" + creds = self.get_credentials() + return creds["cookie"] if creds else None + + def get_status(self) -> Dict: + """ + 获取登录状态 + + Returns: + 状态字典 + """ + # 重新加载凭证 + self._load_credentials() + + if not self.credentials.get("token") or not self.credentials.get("cookie"): + return { + "authenticated": False, + "loggedIn": False, + "account": "", + "status": "未登录,请先扫码登录" + } + + # 检查是否过期 + expire_time = self.credentials.get("expire_time", 0) + current_time = int(time.time() * 1000) # 转换为毫秒 + is_expired = expire_time > 0 and current_time > expire_time + + return { + "authenticated": True, + "loggedIn": True, + "account": self.credentials.get("nickname", ""), + "nickname": self.credentials.get("nickname", ""), + "fakeid": self.credentials.get("fakeid", ""), + "expireTime": expire_time, + "isExpired": is_expired, + "status": "登录可能已过期,建议重新登录" if is_expired else "登录正常" + } + + def clear_credentials(self) -> bool: + """ + 清除凭证 + + Returns: + 清除是否成功 + """ + try: + # 清除内存中的凭证 + self.credentials = { + "token": "", + "cookie": "", + "fakeid": "", + "nickname": "", + "expire_time": 0 + } + + # 清除进程环境变量中残留的凭证 + env_keys = [ + "WECHAT_TOKEN", "WECHAT_COOKIE", "WECHAT_FAKEID", + "WECHAT_NICKNAME", "WECHAT_EXPIRE_TIME" + ] + for key in env_keys: + os.environ.pop(key, None) + + # 清空 .env 文件中的凭证字段(保留其他配置) + if self.env_path.exists(): + env_file = str(self.env_path) + for key in env_keys: + set_key(env_file, key, "") + print(f"✅ 凭证已清除: {self.env_path}") + + return True + except Exception as e: + print(f"❌ 清除凭证失败: {e}") + return False + +# 创建全局单例 +auth_manager = AuthManager() diff --git a/utils/helpers.py b/utils/helpers.py new file mode 100644 index 0000000..e17ae37 --- /dev/null +++ b/utils/helpers.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +辅助函数模块 +提供各种工具函数 +""" + +import re +from typing import Dict, Optional +from urllib.parse import urlparse, parse_qs + +def html_to_text(html: str) -> str: + """将 HTML 转为可读纯文本""" + import html as html_module + text = re.sub(r'', '\n', html, flags=re.IGNORECASE) + text = re.sub(r'', '\n', text, flags=re.IGNORECASE) + text = re.sub(r']*>', '\n---\n', text, flags=re.IGNORECASE) + text = re.sub(r'<[^>]+>', '', text) + text = html_module.unescape(text) + text = re.sub(r'[ \t]+', ' ', text) + text = re.sub(r'\n{3,}', '\n\n', text) + return text.strip() + + +def parse_article_url(url: str) -> Optional[Dict[str, str]]: + """ + 解析微信文章URL,提取参数 + + Args: + url: 微信文章URL + + Returns: + 包含__biz, mid, idx, sn的字典,如果解析失败返回None + """ + try: + # 确保是微信文章URL + if not url or 'mp.weixin.qq.com/s' not in url: + return None + + parsed = urlparse(str(url)) # 确保url是字符串 + params = parse_qs(parsed.query) + + __biz = params.get('__biz', [''])[0] + mid = params.get('mid', [''])[0] + idx = params.get('idx', [''])[0] + sn = params.get('sn', [''])[0] + + # 必须有这4个参数才返回 + if not all([__biz, mid, idx, sn]): + return None + + return { + '__biz': __biz, + 'mid': mid, + 'idx': idx, + 'sn': sn + } + except Exception: + return None + +def extract_article_info(html: str, params: Optional[Dict] = None) -> Dict: + """ + 从HTML中提取文章信息 + + Args: + html: 文章HTML内容 + params: URL参数(可选,用于返回__biz等信息) + + Returns: + 文章信息字典 + """ + + title = '' + title_match = ( + re.search(r']*class=[^>]*rich_media_title[^>]*>([\s\S]*?)', html, re.IGNORECASE) or + re.search(r']*class=[^>]*rich_media_title[^>]*>([\s\S]*?)', html, re.IGNORECASE) or + re.search(r"var\s+msg_title\s*=\s*'([^']+)'\.html\(false\)", html) or + re.search(r']+>', '', title) + title = title.replace('"', '"').replace('&', '&').strip() + + author = '' + author_match = ( + re.search(r']*id="js_name"[^>]*>([\s\S]*?)', html, re.IGNORECASE) or + re.search(r'var\s+nickname\s*=\s*"([^"]+)"', html) or + re.search(r']*class=[^>]*rich_media_meta_nickname[^>]*>([^<]+)', html, re.IGNORECASE) + ) + + if author_match: + author = author_match.group(1) + author = re.sub(r'<[^>]+>', '', author).strip() + + publish_time = 0 + time_match = ( + re.search(r'var\s+publish_time\s*=\s*"(\d+)"', html) or + re.search(r'var\s+ct\s*=\s*"(\d+)"', html) or + re.search(r']*id="publish_time"[^>]*>([^<]+)', html) + ) + + if time_match: + try: + publish_time = int(time_match.group(1)) + except (ValueError, TypeError): + pass + + content = '' + images = [] + + # 方法1: 匹配 id="js_content" + content_match = re.search(r']*id="js_content"[^>]*>([\s\S]*?)]*>[\s\S]*?', html, re.IGNORECASE) + + if not content_match: + # 方法2: 匹配 class包含rich_media_content + content_match = re.search(r']*class="[^"]*rich_media_content[^"]*"[^>]*>([\s\S]*?)', html, re.IGNORECASE) + + if content_match and content_match.group(1): + content = content_match.group(1).strip() + else: + # 方法3: 手动截取 + js_content_pos = html.find('id="js_content"') + if js_content_pos > 0: + start = html.find('>', js_content_pos) + 1 + script_pos = html.find(' start: + content = html[start:script_pos].strip() + if content: + # 提取data-src属性 + img_regex = re.compile(r']+data-src="([^"]+)"') + for img_match in img_regex.finditer(content): + img_url = img_match.group(1) + if img_url not in images: + images.append(img_url) + + # 提取src属性 + img_regex2 = re.compile(r']+src="([^"]+)"') + for img_match in img_regex2.finditer(content): + img_url = img_match.group(1) + if not img_url.startswith('data:') and img_url not in images: + images.append(img_url) + + content = re.sub(r']*>[\s\S]*?', '', content, flags=re.IGNORECASE) + + __biz = params.get('__biz', 'unknown') if params else 'unknown' + publish_time_str = '' + if publish_time > 0: + from datetime import datetime + dt = datetime.fromtimestamp(publish_time) + publish_time_str = dt.strftime('%Y-%m-%d %H:%M:%S') + + return { + 'title': title, + 'content': content, + 'plain_content': html_to_text(content) if content else '', + 'images': images, + 'author': author, + 'publish_time': publish_time, + 'publish_time_str': publish_time_str, + '__biz': __biz + } + +def is_article_deleted(html: str) -> bool: + """检查文章是否被删除""" + return '已删除' in html or 'deleted' in html.lower() + +def is_need_verification(html: str) -> bool: + """检查是否需要验证""" + return ('verify' in html.lower() or + '验证' in html or + '环境异常' in html) + +def is_login_required(html: str) -> bool: + """检查是否需要登录""" + return '请登录' in html or 'login' in html.lower() + +def time_str_to_microseconds(time_str: str) -> int: + """ + 将时间字符串转换为微秒 + + 支持格式: + - "5s" -> 5秒 + - "1m30s" -> 1分30秒 + - "1h30m" -> 1小时30分 + - "00:01:30" -> 1分30秒 + - 直接数字 -> 微秒 + """ + if isinstance(time_str, int): + return time_str + + # 尝试解析为整数(已经是微秒) + try: + return int(time_str) + except ValueError: + pass + + # 解析时间字符串 + total_seconds = 0 + + # 格式:HH:MM:SS 或 MM:SS + if ':' in time_str: + parts = time_str.split(':') + if len(parts) == 3: + total_seconds = int(parts[0]) * 3600 + int(parts[1]) * 60 + int(parts[2]) + elif len(parts) == 2: + total_seconds = int(parts[0]) * 60 + int(parts[1]) + else: + # 格式:1h30m45s + hours = re.search(r'(\d+)h', time_str) + minutes = re.search(r'(\d+)m', time_str) + seconds = re.search(r'(\d+)s', time_str) + + if hours: + total_seconds += int(hours.group(1)) * 3600 + if minutes: + total_seconds += int(minutes.group(1)) * 60 + if seconds: + total_seconds += int(seconds.group(1)) + + return total_seconds * 1000000 # 转换为微秒 + + diff --git a/utils/rate_limiter.py b/utils/rate_limiter.py new file mode 100644 index 0000000..1f44bc1 --- /dev/null +++ b/utils/rate_limiter.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +API限频模块 +防止触发微信风控 +""" + +import time +from typing import Dict, Optional +from collections import deque +import threading + +class RateLimiter: + """ + 智能限频器 + + 策略: + 1. 全局限制: 每分钟最多10个请求 + 2. 单IP限制: 每分钟最多5个请求 + 3. 文章获取: 每个文章间隔至少3秒 + """ + + def __init__(self): + self._global_requests = deque() # 全局请求记录 + self._ip_requests: Dict[str, deque] = {} # IP请求记录 + self._article_requests = deque() # 文章请求记录 + self._lock = threading.Lock() + + # 限制配置 + self.GLOBAL_WINDOW = 60 # 全局窗口60秒 + self.GLOBAL_LIMIT = 10 # 全局限制10个请求/分钟 + + self.IP_WINDOW = 60 # IP窗口60秒 + self.IP_LIMIT = 5 # 单IP限制5个请求/分钟 + + self.ARTICLE_INTERVAL = 3 # 文章获取间隔3秒 + + def check_rate_limit(self, ip: str, endpoint: str) -> tuple[bool, Optional[str]]: + """ + 检查是否超过限频 + + Args: + ip: 客户端IP + endpoint: 请求端点 + + Returns: + (是否允许, 错误消息) + """ + with self._lock: + current_time = time.time() + + # 清理过期记录 + self._cleanup_old_requests(current_time) + + # 检查全局限制 + if len(self._global_requests) >= self.GLOBAL_LIMIT: + oldest = self._global_requests[0] + wait_time = int(self.GLOBAL_WINDOW - (current_time - oldest) + 1) + return False, f"全局请求过多,请{wait_time}秒后重试" + + # 检查IP限制 + if ip not in self._ip_requests: + self._ip_requests[ip] = deque() + + if len(self._ip_requests[ip]) >= self.IP_LIMIT: + oldest = self._ip_requests[ip][0] + wait_time = int(self.IP_WINDOW - (current_time - oldest) + 1) + return False, f"请求过于频繁,请{wait_time}秒后重试" + + # 检查文章获取间隔 + if endpoint == "/api/article" and self._article_requests: + last_article = self._article_requests[-1] + if current_time - last_article < self.ARTICLE_INTERVAL: + wait_time = int(self.ARTICLE_INTERVAL - (current_time - last_article) + 1) + return False, f"文章获取过快,请{wait_time}秒后重试(防风控)" + + # 记录请求 + self._global_requests.append(current_time) + self._ip_requests[ip].append(current_time) + + if endpoint == "/api/article": + self._article_requests.append(current_time) + + return True, None + + def _cleanup_old_requests(self, current_time: float): + """清理过期的请求记录""" + # 清理全局请求 + while self._global_requests and current_time - self._global_requests[0] > self.GLOBAL_WINDOW: + self._global_requests.popleft() + + # 清理IP请求 + for ip in list(self._ip_requests.keys()): + while self._ip_requests[ip] and current_time - self._ip_requests[ip][0] > self.IP_WINDOW: + self._ip_requests[ip].popleft() + + # 删除空记录 + if not self._ip_requests[ip]: + del self._ip_requests[ip] + + # 清理文章请求(保留最近10条) + while len(self._article_requests) > 10: + self._article_requests.popleft() + + def get_stats(self) -> Dict: + """获取限频统计""" + with self._lock: + current_time = time.time() + self._cleanup_old_requests(current_time) + + return { + "global_requests": len(self._global_requests), + "global_limit": self.GLOBAL_LIMIT, + "active_ips": len(self._ip_requests), + "article_requests": len(self._article_requests) + } + +# 全局限频器实例 +rate_limiter = RateLimiter() + diff --git a/utils/webhook.py b/utils/webhook.py new file mode 100644 index 0000000..4b7685b --- /dev/null +++ b/utils/webhook.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright (C) 2026 tmwgsicp +# Licensed under the GNU Affero General Public License v3.0 +# See LICENSE file in the project root for full license text. +# SPDX-License-Identifier: AGPL-3.0-only +""" +Webhook 通知模块 +支持企业微信群机器人和通用 Webhook +""" + +import httpx +import time +import os +import logging +from typing import Optional, Dict +from datetime import datetime + +logger = logging.getLogger("webhook") + +EVENT_LABELS = { + "login_success": "登录成功", + "login_expired": "登录过期", + "verification_required": "触发验证", +} + + +class WebhookNotifier: + + def __init__(self): + self._last_notification: Dict[str, float] = {} + self._notification_interval = int( + os.getenv("WEBHOOK_NOTIFICATION_INTERVAL", "300") + ) + + @property + def webhook_url(self) -> str: + """每次读取时从 .env 刷新,确保运行中修改配置也能生效""" + from pathlib import Path + env_path = Path(__file__).resolve().parent.parent / ".env" + if env_path.exists(): + from dotenv import dotenv_values + vals = dotenv_values(env_path) + url = vals.get("WEBHOOK_URL", "") + else: + url = os.getenv("WEBHOOK_URL", "") + return (url or "").strip() + + @property + def enabled(self) -> bool: + return bool(self.webhook_url) + + def _is_wecom(self, url: str) -> bool: + return "qyapi.weixin.qq.com" in url + + def _build_payload(self, url: str, event: str, data: Dict) -> dict: + """根据 webhook 类型构造消息体""" + label = EVENT_LABELS.get(event, event) + ts = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + lines = [f"**{label}**", f"> {ts}"] + for k, v in (data or {}).items(): + if v: + lines.append(f"> {k}: {v}") + + if self._is_wecom(url): + return { + "msgtype": "markdown", + "markdown": {"content": "\n".join(lines)}, + } + + return { + "event": event, + "timestamp": int(time.time()), + "timestamp_str": ts, + "message": "\n".join(lines), + "data": data or {}, + } + + async def notify(self, event: str, data: Optional[Dict] = None) -> bool: + url = self.webhook_url + if not url: + return False + + now = time.time() + last = self._last_notification.get(event, 0) + if now - last < self._notification_interval: + logger.debug("Skip duplicate webhook: %s (%ds since last)", event, int(now - last)) + return False + + payload = self._build_payload(url, event, data or {}) + + try: + async with httpx.AsyncClient(timeout=10.0) as client: + resp = await client.post(url, json=payload) + resp.raise_for_status() + + ct = resp.headers.get("content-type", "") + body = resp.json() if "json" in ct else {} + errcode = body.get("errcode", 0) + if errcode != 0: + errmsg = body.get("errmsg", "unknown") + logger.error("Webhook errcode=%s: %s", errcode, errmsg) + return False + + self._last_notification[event] = now + logger.info("Webhook sent: %s", event) + return True + except Exception as e: + logger.error("Webhook failed: %s - %s", event, e) + return False + + +webhook = WebhookNotifier()