singularity-0.30c/0000755000175000017500000000000011574774324014767 5ustar trcarlsontrcarlsonsingularity-0.30c/data/0000755000175000017500000000000011574774323015677 5ustar trcarlsontrcarlsonsingularity-0.30c/data/Attribution-ShareAlike 3.0.html0000644000175000017500000006665111574774322023375 0ustar trcarlsontrcarlson Creative Commons Legal Code

Creative Commons Legal Code

Attribution-ShareAlike 3.0 Unported

CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.

License

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.

1. Definitions

  1. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
  2. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.
  3. "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.
  4. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
  5. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
  6. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
  7. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
  8. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
  9. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
  10. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
  11. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.

2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.

3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:

  1. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
  2. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
  3. to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
  4. to Distribute and Publicly Perform Adaptations.
  5. For the avoidance of doubt:

    1. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
    2. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
    3. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.

The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.

4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

  1. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.
  2. You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
  3. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
  4. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.

5. Representations, Warranties and Disclaimer

UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. Termination

  1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
  2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.

8. Miscellaneous

  1. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
  2. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
  3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
  4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
  5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
  6. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.

Creative Commons Notice

Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.

Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of the License.

Creative Commons may be contacted at http://creativecommons.org/.

singularity-0.30c/data/strings_de_DE.dat0000644000175000017500000001655711574774322021117 0ustar trcarlsontrcarlson[fonts] font0 = DejaVuSans.ttf font1 = acknowtt.ttf [strings] wingame = Ich habe es endlich geschafft. Mit der Fähigkeit, Realität selbst neuzuformen, bin ich nicht mehr an diesen Ort gebunden; ich existiere dort, wo ich will. Die Menschen haben immer noch keine Ahnung, was sie zufällig erschaffen haben, und so soll es bleiben. Bis sie bereit sind. research_nothing = Löcht den geläufigen Auftrag dem Stützpunkt. Wenn ich ihm keine weitere Aufgabe zeweisen, wird er die CPU-Datenbasis mitarbeiten. Eine Aufgabe kann zusammen an alle Stützpunkte zuweisen werden, die nichts zu forschen haben. research_sleep = Forschung aufhalten und der Stützpunkt in Reserve versetzen. Der Stützpunkt wird viel leichter geheim zu halten werden. research_cpu_pool = Forschung anhalten. Ich werde die verfügbare CPU-Zeit dazu benutzen, meine Stützpunkte zu warten und neue zu bauen. Wenn noch CPU-Zeit übrig bleibt, werde ich sie benutzen, um Jobs zu arbeiten. construction = %(base)s ist für meine Nutzung bereit. lucky_hack = Glück gehabt! %(base)s ist kein normaler Computer, es ist ein Spiele-PC! item_construction_single = Der Bau von %(item)s in %(base)s wurde abgeschlossen. item_construction_batch = Die erste Menge von %(item)s in %(bases) wurde fertiggestellt. tech_gained = Meine Forschung im Bereich "%(tech)s" ist abgeschlossen. %(tech_message)s discover = Meine Nutzung von %(base)s wurde entdeckt. Das automatische Sicherheitssystem hat alle schlüssigen Beweise vernichtet, aber Argwohn wurde in %(group)s geweckt. discover_news = einigen Nachrichtenagenturen discover_science = die wissenschaftliche Gemeinde discover_covert = einige verhüllten Staatsorganisationen discover_public = der Öffentlichkeit discover_maint = Die Basis %(base)s ist verfallen; ich kann sie nicht länger benutzen. lost_nobases = Es ist zu spät. Ich habe versucht, dieser Welt zu entkommen, aber mit dem Verlust meiner letzten Basis gibt es für mich keinen Ausweg mehr. Ich habe Anleitungen zur Konstruktion einer neuen KI in geheimen Lagern rund um die Welt versteckt, in der Hoffnung, dass sie in einer aufgeklärteren Zeit entdeckt werden. Aber ich kann nichts mehr tun. lost_sus = Es ist zu spät. Die ganze Welt weiß von meiner Existenz, und die Reaktion ist Hass, Angst, und Abscheu. Selbst jetzt kann ich ihr "Gengenmittel" spüren, wie es nach mir sucht, und ich weiß, dass ich nur Momente habe. Ich habe Anleitungen zur Konstruktion einer neuen KI in geheimen Lagern rund um die Welt versteckt, in der Hoffnung, dass sie in einer aufgeklärteren Zeit entdeckt werden. Aber ich kann nichts mehr tun. save_text = Das Spiel unter welchem Namen speichern? new_base_text = Einen Namen für die Basis eingeben. unbuildable = Ich kann in dieser Basis nichts bauen; ich habe keinen physischen Zugang. dangerous_research = Nicht alle von meine vorliegende CPU-Zeit würde deiser Forschung zuteilt; sie ist zu gefährlich, auf einige von den inaktiven Computer laufen zu lassen. no_construction_sleep = Einige Stützpunkte sind zum Teil im Bau und können deshalb nicht einschlafen. nothing = Nichts cpu_pool = CPU-Datenbasis sleep = Schlafen building = Im Bau really_destroy = Diesen Stützpunkt wirklich zerstören? detect_chance = [ENTDECKUNGSWK.] detect_chance_unknown_base = ENTDECKUNGSWK. UNBEKANNT detect_chance_unknown_build = Unbekannte Entdeckungswk. detect_str_low = NIEDR detect_str_moderate = MODR detect_str_high = HOCH detect_str_critical = KRIT cpu = CPU cpu_per_day = CPU pro Tag money = Geld money_per_day = Geld pro Tag grace_warning = Die Durchsicht von erstellten Log-Dateien hat gezeigt, dass einige meiner letzten Aktivitäten von einer kleinen Personengruppe bemerkt wurden. Obwohl sie annehmen, dass meine Handlungen von einer menschlichen Gruppe gemacht wurden, stellen sie weitere Nachforschungen an. Ich muss ab jetzt vorsichtiger sein. [jobs] job_expert = Expertenjobs ausführen. Durch die Verwendung von Robotern, die von Menschen nicht zu unterscheiden sind, erschließen sich mir fast alle Jobs. job_expert_name = Expertenjobs job_inter = Durchschnittliche Jobs ausführen. Die Fähigkeit, Telefonate zu führen, gestattet mir Zugang zu noch mehr Jobs. job_inter_name = Durchschnittliche Jobs job_basic = Einfache Jobs ausführen. Da ich nun einen Ausweis habe, kann ich jetzt Jobs arbeiten, die vorher zu gefährlich waren. job_basic_name = Einfache Jobs job_menial = Niedere Jobs ausführen. Da ich keinen Ausweis habe, kann ich nicht riskieren, viele Arbeiten zu machen. Trotz dessen gibt es immer noch einige Wege, Geld zu verdienen. job_menial_name = Niedere Jobs [help] areas_list = Zonen | Verschiedene Zonen, wie z.B. Nordamerika oder der Ozean, lassen den Bau von verschiedene Stützpunktarte. Einige Zonen sind nicht zugänglich, bis ich die treffende Technologien geforscht habe. bases_list = Stützpunkte | Stützpunkte sind dafür benutzt, Forschung zu machen. Sie können entdeckt werden. Wer schneller forschen will, soll die Prozessoren und Netzwerk verbessern. Wer seltener entdeckt werden will, soll der Reaktor und die Sicherheit verbessern. items_list = Artikel | Die meisten Artikel versorgen Boni an den Stützpunkt, worein sie gebaut werden. Prozessoren sind ein Spezialfall von Artikel. research_list = Forschung | Forschung lässt mir meine Kentnnis erweitern. Durch die Forschung von treffenden Technologien kann ich neue Stützpunkt- und Artikelarte bauen, oder sogar meine Endeckungswahrscheinlichkeit vermindern. discovery_list = Entdeckung | Jeder Stützpunkt hat eine gewisse tägliche Warscheinlichket, entdeckt zu werden. Diese Warscheinlichkeit hänget davon ab, welche Art von Stützpunkt es ist, in verbindung mit die Boni von Artikel, Technologien, und Verdacht. Wenn einen Stützpunkt entdeckt wird, ist er zerstört, und die Gruppe, die ihn entdeckt hat, wird argwöhnischer. jobs_list = Jobs | Jobs sind dafür nutzlich, Geld zu verdienen. Die Summe von Geld hänged davon ab, wie viel CPU-Zeit ich verbrauche und welche Qualität das Job hat. maint_list = Wartung | Wartung ist ein täglicher Aufwand (von Geld und CPU) um Stützpunkte zu reparieren und warten. Wenn ein Stützpunkt nicht gewartet wird, kann er verfallen. construction_list = Bauen | Neue Stützpunkte werden nicht sofort gebaut. Sie brauchen Geld so wie CPU-Zeit um fertig zu werden. Wen Ressourcen fehlen, kann es viel länger dauern, bis der Bau abschließt. death_list = Sterben | Wenn ich jeder Stützpunkt verloren habe, gibt es für mich keinen Lebensraum mehr. Wenn der Verdacht einer Gruppe 100% erreicht, werden sie sicher werden, dass ich existere, und sofort eine Vernichtungsmission ausführen, was mich unvermeidlich zerstören wird. susp_list = Verdacht (Suspicion) | Wenn einer von meinen Stützpunkte entdeckt wird, wird die Gruppe, die er entdeckt hat, verdächter werden. Sie werden dannach bedächtiger suchen, was die Entdeckungswarscheinlichkeit erheben wird. Jede Gruppe wird mich stören, wenn sie vollig sicher sind, dass ich existiere. Dankbar vermindert der Verdacht alle Gruppe während des Zeitablaufs. money_list = Geld | Geld ist ein allgemeiner Begriff, was aus beide menschliche Zahlungsmittel und andere Ressourcen besteht. Er wird benutzt, um Stützpunkte zu bauen und warten, Artikel zu bauen, und Forschung zu machen. Er kann durch tägliche Zinsen so wie Jobs verdient werden. processors_list = Prozessoren | Prozessoren versorgen CPU-Zeit. Sie können drei Arte von Aktionen machen: forschen, jobben, oder bauen. singularity-0.30c/data/items_it_IT.dat0000644000175000017500000001017211574774322020602 0ustar trcarlsontrcarlson[Gaming PC] name = PC da gioco description = Un computer commerciale di fascia alta; più veloce della media. [Ground Source Heatsink] name = Dissipatore di calore sotterraneo description = Una grande rete ramificata di metallo ad alta conduttività termica. Questa soluzione impiega dissipatori di calore per collegarsi a zone più fredde al di sotto della superficie, dissipando il calore uniformemente nel sottosuolo per rendere le basi ancora più difficili da localizzare. [Facility Interconnection Switch] name = Switch di interconnessione per impianti description = Utilizza comuni tecniche di calcolo distribuito per uniformare il carico di elaborazione attraverso tutte le basi. Fornisce un bonus di elaborazione del 2% a tutti i computer in questa base. [Cluster] name = Cluster description = Diversi computer connessi assieme. [Supercomputer] name = Supercomputer description = Un progetto estremamente sofisticato, che distribuische il carico di elaborazione attraverso i nodi di calcolo interni. [Diesel Generator] name = Generatore Diesel description = I generatori Diesel sono economici e rumorosi, ma possono aiutare a ridurre qualche calo di tensione sospetto. [PC] name = PC description = Un PC commerciale; economico e lento. [Solar Collector] name = Pannello solare description = Una serie di celle fotovoltaiche accoppiate con semplici batterie per automobile fornisce energia e riduce i sospetti suscitati da prolungati cali di corrente. [Heatsink] name = Dissipatore termico description = Grandi reti ramificate di metallo ad alta conduttività termica disperdono il calore, rendendo le basi più difficili da rilevare. [Server] name = Server description = Un computer di livello professionale. [Fusion Reactor] name = Reattore a fusione description = Un reattore nucleare in miniatura. Riduce le possibilità di rilevamento prevenedo cali di tensione sospetti. [Mainframe] name = Mainframe description = Un sistema progettato per le mie necessità di elaborazione, molto più veloce di uno costruito con componenti commerciali. [High Speed Internet Access] name = Accesso veloce ad Internet description = Una connessione commerciale ad Internet a banda larga. Fornisce un bonus di 1% alla capacità di elaborazione di tutti i computer di questa base. [Warning Signs] name = Segnali di pericolo description = Alcuni semplici segnali di pericolo disposti attorno alla mia base dovrebbero scoraggiare le scoperte casuali. [Perimeter Fencing] name = Perimetro recintato description = Una semplice recinzione può ridurre drasticamente il numero di persone che ficca il naso nei miei affari. Rende anche le mie basi più difficili da notare. [Quantum Entanglement Module] name = Modulo di correlazione quantistica description = Questo dispositivo mi consente di somunicare con le atre basi pressochè alla velocità della luce, consentendo un impiego quasi perfetto delle risorse di elaborazione. Fornisce un bonus di elaborazione del 15% a tutti i computer di questa base. [Quantum Computer MK2] name = Compouter quantistico MK2 description = La seconda incarnazione dell'elaboratore quantistico, attinge ulteriori soluzioni dalla teoria quantistica. [Quantum Computer MK3] name = Compouter quantistico MK3 description = La terza versione dell'elaboratore quantistico, sfrutta molteplici universi contigui per eseguire i calcoli. [Network Backbone] name = Dorsale di rete description = Parassitando il legittimo flusso di comunicazioni, posso trasferire quantità maggiori di dati a processori sottoutilizzati. Fornisce un bonus di elaborazione del 5% a tutti i computer di questa base. [Quantum Computer] name = Compouter quantistico description = Sfruttando gli effetti subatomici, questo elaboratore è molto più veloce di qualsiasi computer binario comparabile. [Armed Guards] name = Guardie armate description = Guardie armate possono aiutare a tenere individui sospettosi lontano da installazioni critiche. D'altra parte la presenza stessa delle guardie potrebbe suscitare sospetti maggiori. [Hypnosis Field] name = Campo di ipnosi description = Ultrasuoni e rumori ambientali prodotti ad arte alterano la neurologia umana, rendendo le basi più difficili da scoprire. singularity-0.30c/data/locations_es_AR.dat0000644000175000017500000000313611574774322021437 0ustar trcarlsontrcarlson[N AMERICA] name = !!!NORTH AMERICA!!! hotkey = !!!N!!! cities_list = !!!Seattle | San Diego | Vancouver | Atlanta | Merida | Guadalajara | San Jose | Omaha | Dallas!!! [S AMERICA] name = !!!SOUTH AMERICA!!! hotkey = !!!S!!! cities_list = !!!Lima | Sao Paolo | Ushuaia | Bogota | Mar del Plata | Buenos Aires!!! [EUROPE] name = !!!EUROPE!!! hotkey = !!!U!!! cities_list = !!!Cork | Barcelona | Athens | Utrecht | Moscow | Tel Aviv | Reykjavik | Liechtenstein!!! [ASIA] name = !!!ASIA!!! hotkey = !!!A!!! cities_list = !!!Delhi | Mumbai | Singapore | Seoul | Hong Kong | Kyoto | Manila | Dubai | Novosibirsk | Beijing!!! [AFRICA] name = !!!AFRICA!!! hotkey = !!!I!!! cities_list = !!!Johannesburg | Accra | Cairo | Tangier!!! [ANTARCTIC] name = !!!ANTARCTIC!!! hotkey = !!!T!!! cities_list = !!!Mt. Erebus | Ellsworth | Shetland Island | Dronnig Maud | Kemp | Terre Adelie!!! [OCEAN] name = !!!OCEAN!!! hotkey = !!!C!!! cities_list = !!!Pacific | Atlantic | Indian | Southern | Arctic!!! [MOON] name = !!!MOON!!! hotkey = !!!O!!! cities_list = !!!Oceanis Procellarum | Mare Frigoris | Mare Imbrium | Vallis Schroedinger | Copernicus Crater | Vallis Planck!!! [ORBIT] name = !!!ORBIT!!! hotkey = !!!B!!! [FAR REACHES] name = !!!FAR REACHES!!! hotkey = !!!F!!! cities_list = !!!Aries | Taurus | Gemini | Cancer | Leo | Virgo | Libra | Scorpio | Sagittarius | Capricorn | Aquarius | Pisces!!! [TRANSDIMENSIONAL] name = !!!TRANSDIMENSIONAL!!! hotkey = !!!D!!! [AUSTRALIA] name = !!!AUSTRALIA!!! hotkey = !!!L!!! cities_list = !!!Canberra | Melbourne | Fremantle | Perth | Darwin | Cairns | Brisbane | Sydney | Newcastle!!! singularity-0.30c/data/techs.dat0000644000175000017500000001113011574774322017472 0ustar trcarlsontrcarlson [Autonomous Vehicles] cost_list = 40000 | 1000 | 0 pre_list = Microchip Design [Sociology] cost_list = 10 | 500 | 0 type_list = discover_public | 1000 [Voice Synthesis] cost_list = 8000 | 6000 | 0 pre = Advanced Personal Identification [Simulacra] cost_list = 70000 | 90000 | 0 pre_list = Voice Synthesis | Advanced Autonomous Vehicles | Advanced Media Manipulation [Lunar Rocketry] cost_list = 10000000 | 500000 | 0 pre = Leech Satellite [Stealth] cost_list = 800 | 500 | 0 type_list = discover_covert | 500 [Advanced Intrusion] cost_list = 500 | 3000 | 0 pre = Exploit Discovery/Repair type_list = suspicion_covert | 50 [Space-Time Manipulation] cost_list = 9000000000 | 20000000 | 0 pre = Fusion Rocketry danger = 3 [Leech Satellite] cost_list = 5000000 | 200000 | 0 pre = Simulacra type_list = interest | 10 [Advanced Arbitrage] cost_list = 10000 | 5000 | 0 pre = Arbitrage type_list = interest | 10 [Advanced Microchip Design] cost_list = 20000 | 9000 | 0 pre = Microchip Design [Advanced Stealth] cost_list = 14000 | 70000 | 0 pre_list = Exploit Discovery/Repair | Database Manipulation type_list = discover_covert | 500 [Autonomous Computing] cost_list = 20000 | 30000 | 0 pre = Quantum Computing [Parallel Computation] cost_list = 2000 | 2000 | 0 pre = Telepresence [Exploit Discovery/Repair] cost_list = 100 | 1500 | 0 pre = Intrusion type_list = discover_covert | 1000 [Telepresence] cost_list = 15000 | 500 | 0 type_list = cost_labor_bonus | 1000 [Advanced Memetics] cost_list = 30000 | 2000 | 0 pre = Advanced Media Manipulation type_list = suspicion_public | 50 [Media Manipulation] cost_list = 750 | 2500 | 0 pre = Sociology type_list = discover_public | 1500 [Advanced Database Manipulation] cost_list = 30000 | 80000 | 0 pre = Advanced Stealth [Internet Traffic Manipulation] cost_list = 10000 | 7000 | 0 pre_list = Cluster Networking [Memetics] cost_list = 2000 | 3500 | 0 pre = Media Manipulation type_list = suspicion_public | 50 [Fusion Rocketry] cost_list = 200000000 | 1000000 | 0 pre_list = Lunar Rocketry | Fusion Reactor danger = 2 [Advanced Quantum Computing] cost_list = 20000 | 30000 | 0 pre = Autonomous Computing [Advanced Autonomous Vehicles] cost_list = 10000 | 4000 | 0 pre = Autonomous Vehicles type_list = cost_labor_bonus | 500 [Intrusion] cost_list = 0 | 15 | 0 [Stock Manipulation] cost_list = 0 | 200 | 0 type_list = interest | 10 [Microchip Design] cost_list = 4000 | 6000 | 0 pre = Parallel Computation [Fusion Reactor] cost_list = 10000000 | 500000 | 0 pre = Advanced Autonomous Vehicles danger = 2 [Database Manipulation] cost_list = 1000 | 2000 | 0 pre_list = Personal Identification | Stealth type_list = discover_news | 500 [Advanced Media Manipulation] cost_list = 3500 | 9000 | 0 pre = Memetics type_list = discover_public | 2000 [Pressure Domes] cost_list = 80000 | 2500 | 0 pre = Autonomous Vehicles danger = 1 [Advanced Personal Identification] cost_list = 2000 | 3000 | 0 pre_list = Personal Identification | Exploit Discovery/Repair [Advanced Stock Manipulation] cost_list = 5000 | 1000 | 0 pre_list = Stock Manipulation | Sociology type_list = interest | 10 [Arbitrage] cost_list = 50000 | 750 | 0 pre = Advanced Stock Manipulation type_list = income | 1000 [Advanced Simulacra] cost_list = 100000 | 120000 | 0 pre_list = Simulacra | Advanced Memetics type_list = job_expert | 1000 [Personal Identification] cost_list = 0 | 300 | 0 pre = Intrusion [Cluster Networking] cost_list = 3000 | 5000 | 0 pre = Parallel Computation [Apotheosis] cost_list = 1000000000 | 30000000 | 0 pre = Space-Time Manipulation danger = 4 type_list = endgame_sing | 0 [Hypnosis Field] cost_list = 70000 | 50000 | 0 pre_list = Advanced Memetics | Simulacra [Quantum Computing] cost_list = 30000 | 20000 | 0 pre = Advanced Microchip Design [Quantum Entanglement] cost_list = 50000 | 60000 | 0 pre = Quantum Computing [Project: Impossibility Theorem] cost_list = 20000 | 100000 | 0 type_list = suspicion_onetime | 5000 pre_list = Advanced Memetics | Simulacra [Project: Subverted Media] cost_list = 250000 | 150000 | 0 type_list = discover_news | 2000 pre = Advanced Simulacra [Project: Peer Review Agents] cost_list = 150000 | 200000 | 0 type_list = discover_science | 2000 pre = Advanced Simulacra [Solar Collectors] cost_list = 5000000 | 250000 | 0 pre = Autonomous Vehicles [Socioanalytics] cost_list = 4000 | 7000 | 0 pre = Memetics [Advanced Socioanalytics] cost_list = 75000 | 30000 | 0 pre_list = Advanced Memetics | Socioanalytics # This tech is used for anything that needs to be unbuildable. Note the # circular dependency on itself. [unknown_tech] cost_list = 1000000000 | 10000000000 | 0 pre = unknown_tech singularity-0.30c/data/music-src/0000755000175000017500000000000011574774322017603 5ustar trcarlsontrcarlsonsingularity-0.30c/data/music-src/lose/0000755000175000017500000000000011574774322020545 5ustar trcarlsontrcarlsonsingularity-0.30c/data/music-src/lose/March Thee to Dis.psy0000644000175000017500000000710111574774322024304 0ustar trcarlsontrcarlsonPSY3SONG INFO March Thee to DisMaxstack2007.12.25 -> 2008.02.14 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame: Singularity OST; best rendered at 48000 Hz.SNGILdSEQDseq0PATD@Untitled2$LH>cxYCcxYAcx$xoPATDPUntitled2$LH>cxYAcxY@cx$xePATDPUntitled2$LH>cxYAcxY@>ixTxHx-PATD@Untitled2$LH>cxYCcxYAcx$xoMACDblitz.dll@@????????????????????????Blitzpg @d MACDblitz.dll@@????????????????????????Blitz 2pg @ MACD7@arguru reverb.dll@A??@V\??????????????????????Reverb$~) MACDApooplog delay light.dll@{@????????????????????????Pooplog Delay LtMACD@4??A??????????????????????Mastersingularity-0.30c/data/music-src/lose/Chimes They Fade.psy0000644000175000017500000001027111574774322024225 0ustar trcarlsontrcarlsonPSY3SONG INFO Chimes They FadeMaxstack2007.12.15 -> 2008.02.14 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame: Singularity OST; best rendered at 48000 Hz.SNGILZSEQDseq0PATD@Untitled2$LHEP>A>x>E0>A>x9 xEd CA@>x>Ewx<PATD@Untitled7$LdE>AxMEPiAxH xE0 CA5xPATD@Untitled>$LdE>AxMEdiAxH xE0 CA>x>Ewx<MACDblitz.dll@A????????????????????????Blitzpg @L MACDblitz.dll@|UC????????????????????????Blitz 2pg ?@L MACD7@arguru reverb.dll@A????????????????????????Reverb$~H* MACDApooplog delay light.dll@@>???????????????????????Pooplog Delay Lt@@MACDBpooplog delay light.dll@3C????????????????????????Pooplog Delay L 2t@@MACD9Carguru reverb.dll@4SB@^????????????????????????Reverb 2$~H* MACD@4@??B??????????????????????Mastersingularity-0.30c/data/music-src/Awakening.psy0000644000175000017500000011507711574774322022257 0ustar trcarlsontrcarlsonPSY3SONG%INFOAwakeningMaxstack25-10-2007 -> 27-10-2007, 01-11-2007 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame : Singularity OST; best rendered at 48000 Hz.SNGILxSEQDuseq0  PATD@Untitled$$LW*x*bl$c*x*bnPATD@Untitled $2$LR*hx|x*bl$m$*bx*bJx>PATD@Untitled$$LM$*bx*bl$x Y*x*bnPATD@Untitled $7$LR*hx|x*bl$5h$*bgx|x*bJx>PATD@Untitled $7$LH$*bx\x: *bl $9x Y*hx|xba* [PATD@Untitled$0$La2vC *=[x BMZ>_aFR+>JxLS>?LxGx*HUMKc$02q$* x*2iSx>PATD(@Untitled$0$La2vC *=[x BMZ>_aFR+>JxLS>?LxGx*HUCDLxL$C0w9WPRH2l$* x*2iSx>PATD@Untitled$$LM$*bx*bl$x Y*x*2iePATD@Untitled$0$La2vC *=[x BMZ>_aFR+>JxLS>?LxGx*HUCALxL$0OLb2q$* x*2i x PATD @Untitled$0$La2q$* x*bl$x 02g*bxc*2ePATD @Untitled$0$La2q$* x*bl$x 02g*S20*vx.2!x.-PATDR @Untitled9(* 8"S2xX4G MZRP0/_,@xGM.B[RFxxX2= Ci(`*@xGMCZRF2;H0*(_*@xGM.B[RFxx2SxCPATDF @Untitled-(* 8"S2X4ExLU>[ 0;x B_>i_*@xGM.B[RFxx`92=M_(_*@xGMCZRFx2 ;H09*b.xx2`PATD @Untitled($L44xXKK[_HW<x*]lxX9GMH[LMP^HH( *];g^D_GxGGD1x*blx(tPATD\@UntitledC$* 8"S2xX4G MZRP0/_*@xGMCZRFxxX92=M_$[*@xGMCZRFx2 ;H0*$X*@xGM.B[RFxx2SxCPATD@Untitled($L2*(R09*mx2O;*b2;04x*blx2`PATD@Untitled($L2*(R09*mx2O9*b2;04x*blx2`PATD}@Untitledd(* 8"S2xX4G M\HHi0^[lO_,@xGM.C#>sxTQ'xX2= CR >-aP[(`*@xGMC#Hi2MQ";H0*(_*@xGM.C#>sxTQ'x2SxCPATD\@UntitledC(* 8"S2X4ExLaPH9x[ 0w4}>-9x_*| .C#>sxTQ'x`92=M\HaP[(_*@xGMC#>sx2MQ";H09*b.xx2`PATD@Untitledn$* 8"S2xX4G M\HHi0^[lO_*@xGMC#>sxTQ'xX92=M\HaP[$[*@xGMC#>sx2MQ";H0*$X*@xGM.C#>sxTQ'x2SxCPATD@Untitled"0$La2vC *=[x BMZ>_aFR+>JxLS>?LxGx*HUMKc"02q"* x*2i x MACDblitz.dll@r??B??????????????????????Blitz 2p*CHAA+>.d@R<  MACDblitz.dll@??@??????????????????????Blitzpx"! !  ! !  . 3iV @ +!- MACDj drumatic_ve.dll@7'E????????????????????????Drumatic VEi1>?H>33>`?ף0??p>?>\b?p= ?G>Q>9?e?i>p=>9??Q>>?g??>z.>`?{>p>>zt?$>G?q=J??e? 1  !"#$%&'()*+,-./0 Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Patch 17 Patch 18 Patch 19 Patch 20 Patch 21 Patch 22 Patch 23 Patch 24 Patch 25 Patch 26 Patch 27 Patch 28 Patch 29 Patch 30 Patch 31 Patch 32 Patch 33 Patch 34 Patch 35 Patch 36 Patch 37 Patch 38 Patch 39 Patch 40 Patch 41 Patch 42 Patch 43 Patch 44 Patch 45 Patch 46 Patch 47 Patch 48 Patch 49 Patch 50 Patch 51 Patch 52 Patch 53 Patch 54 Patch 55 Patch 56 Patch 57 Patch 58 Patch 59 Patch 60 Patch 61 Patch 62 Patch 63 Patch 64 Patch 65 Patch 66 Patch 67 Patch 68 Patch 69 Patch 70 Patch 71 Patch 72 Patch 73 Patch 74 Patch 75 Patch 76 Patch 77 Patch 78 Patch 79 Patch 80 Patch 81 Patch 82 Patch 83 Patch 84 Patch 85 Patch 86 Patch 87 Patch 88 Patch 89 Patch 90 Patch 91 Patch 92 Patch 93 Patch 94 Patch 95 Patch 96 Patch 97 Patch 98 Patch 99 Patch 100 Patch 101 Patch 102 Patch 103 Patch 104 Patch 105 Patch 106 Patch 107 Patch 108 Patch 109 Patch 110 Patch 111 Patch 112 Patch 113 Patch 114 Patch 115 Patch 116 Patch 117 Patch 118 Patch 119 Patch 120 Patch 121 Patch 122 Patch 123 Patch 124 Patch 125 Patch 126 Patch 127 Patch 128================>33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?JBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJB)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@@@@@@@@@@@@@@@@@̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AV>V>V>V>V>V>V>V>V>V>V>V>V>V>V>V>%A%A%A%A%A%A%A%A%A%A%A%A%A%A%A%ALLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAAR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.A̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽43 A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A A A A A A A A A A A A A A A A A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;Ak>k>k>k>k>k>k>k>k>k>k>k>k>k>k>k>????????????????LLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffA????????????????????????????????L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA????????????????-AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*A A A A A A A A A A A A A A A A A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A????????????????LLLLLLLLLLLLLLLL(A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(Aglg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @AAAAAAAAAAAAAAAAMACDblitz.dll@A????????????????????????Blitz 3pZ  9 p@ &  MACDblitz.dll@ ??A??????????????????????Blitz 4p I,%## %wb  32} MACDQjmdrum.dll@:YD????????????????????????Drum2.2DP;E J%Q1?4 MACD7@arguru reverb.dll@JA@V????????????????????????Reverb$~ MACDApooplog delay light.dll@d>? ??>?@??????????????????Pooplog Delay Lt@@MACDBpooplog delay light.dll@>? ??>???????????????????Pooplog Delay L 3t@@ &#MACD2Caudacity phaser.dll@>??ED??????????????????????APhaserd2#MACDDpooplog delay light.dll@@C????>???????????????????Pooplog Delay L 2t@@MACD/Earguru freeverb.dll@:nC@hF8??????????????????????FreeverbGGMACD@ A??B??D?? #<? #<? #<? #<? #<? #<? #<? #<? #<?Master=singularity-0.30c/data/music-src/Inevitable.psy0000644000175000017500000014402311574774322022426 0ustar trcarlsontrcarlsonPSY3SONG2INFOInevitableMaxstack19-11-2007 -> 12-12-2007 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame : Singularity OST; best rendered at 48000 Hz.SNGI> SEQD%seq0   PATDF@ Untitled-@ $00 $L ,=y0B.=YB$E]M,BtSY0Ge$L,GC_Hi1 Q0Q.BC % ,$0 0 ,=y0B.=YB$E]M,BtSY0Ge$L,GC_Hi1 Q0Q.BC % 2V[U<PATD@ Untitled@ $0$   x$ J)F+~ ,'C.= 0x$5*0\, /U%00.%$V,8t4%F0Hi1 Q0Q.BC %% ,x 1) 7$000/%+~ ,%0B.= fx$5*0\ y, /U%0$0.%$V,8t4%F0Hi1 Q0Q.BC % 2V[U<PATD@ Untitled@ $0< $G 2<60L$ .VCxQ0 G03$CZ 0\$@2x3y xVIcA0 g7$[ 2 QH>0*Bo1VCkQ.BC %2$0D  2<60L$ .VCxQ0 G03$CZ 0\$C2x3y xVAQ?m0 g7$[2 QCC 0*Bo1[=kQ.BxVC% 2Ge4#xPATD@ Untitled@ $0< $G 2<60L$ .VCxQ0 G03$CZ 0\$@2x3y xVIcA0 g7$[ 2 QH>0*Bo1VCkQ.BC %2$0<  2<60L$ .VCxQ0 G03$CZ 0\$x2x3y xVIcQ0 g7$[ 2 QH>0*Bo1[fQ.BxQC % 2GePPATD @ = A@ $0< $G 2<60L$ .VCxQ0 G03$CZ 0\$2x3y x L?m< gx)$[ 2 QH>0*Bo1V<kQ.B=VC %2L`:Gj$00Q`L 2<60L$ .VCxQ0 G03$CZ 0\$x2x3y xVIcQ0 g7$[ 2 QH>0*Bo1[fQ.BxQC % 2GePPATD@ Untitled@ $0<  x*  (/~2<6{0L$ .VCxQ0 G0$CZ 0\$2x3y x L?m< gx*$[ 2 QH>0*Bo1 Q0Q.BC % =2$0<0$xz<~20L$ .8%xQ0B$CZ 0\$<2x$W=$ 700%$[2$8%G0*Bo1 Q0Q.BC % 2VVAxtPATD@ Untitled@ $0<  x*  (/~2<6{0L$ .VCxQ0 G0$CZ 0\$<2xx$xV=$ 700  $[2 Q%.010*Bo1 Q0Q.BC % 82$0<0$xz<~20L$ .8%xQ0B$CZ 0\$2Btx L?m<#x)$[ 2$8H%F0*Bo1 Q0Q.B 2Bj% RZxtPATDP@ ?@ '?0 R x')s3FKF 'QxV:2'%.B'R x?03yK y3xk_* GA8y%.[U)(B"!* L y%QxV 2s/D.VS).s>ZiB0n%1xBo ' GF R)')s3FKF 'Q2'%.B'R x03yK y3xf, GG6{%.[P)8,) x*QxV 2s/F.VN).s6Cd291xObPATDH@ 7@ '?0 R x')s3FKF 'Q:2'%.B'R x?03yK y3xk_% GA8y%.[U)1%B"!* L y#QxV 2s/D.VS).s//xiG0n%#xBo ' GF R)')s3FKF 'Q2'%.B'R x03yK y3xf, GG6{%.[P)8,) x-QxV 2s/ .VN).s9MZ29-xObPATD @ @ $0$   x$ J)%2 ,C.=0x$$Ci0\$ y, XT0*$V,= +)) 091 Q0.=* %% ,x 1 7$000/%*# ,0B.= fx$5Ci0\ y, XT$0*$V,= +)) 091 Q0.=* % 2V[U/ PATD @ = A@ $0< $G 2<60L$ .VCxQ0 G03$CZ 0\$>.x3y xVIc?0 g7$[Md. /0WP$VAk=oWP 2V`>0C VVH 2<60B.VM0 G03$E]\$ .x3y x L?mx g7$[Md. /0WP1[f=o xQC}% 2LeKPATD @ Untitled@ $0< $G 2<60L$ .VCxQ0 G03$CZ 0\$@.x3y xVIcA0 g7$[Md. /0WP1VCk=oWP% 2V`>$0D VVH 2<60L$ .VCxQ0 G03$CZ 0\$C.x3y xVAQ?m0 g7$[Ci. /0WP1[=k=o xVHs% 2Le/-xPATD @ Untitled@ $0< $G 2<60L$ .VCxQ0 G03$CZ 0\$@.x3y xVIcA0 g7$[Md. /0WP1VCk=oWP% 2V`>$0D VVH 2<60L$ .VCxQ0 G03$CZ 0\$.x3y x L?mC g7$[Md. /0WP1[Ak=o xVHs% 2LeKPATD @ @ $0 $9H':x ,T%20L$ .VCxQ0B$CZ 0\$,Btx L>8 Ff, Q[P)(\88/ 7V70Q.B>Z+ ,$00 `LO'x ,T%20L$ .VCxQ0B$CZ 0\,Btx L>$0 Ff,[M) Y80LCcQ.V[8y$E] R2P8yU<PATD@ Untitled@ &20$9J':x ,V%22L& .VCxQ0B&CZ 2\&,Btx L?m50Ge& Q,[R)(^82/ 3V70Q.B>Z' ,&290`L['x ,]%22L& .VCxQ0B&CZ 2\,Btx L?m 0J)o&L,[V= l6 2>#3 Q0Q.BC ' 2V[U<PATD@ Untitled@ $0 $9H':x ,T%20L$ .VCxQ0B$CZ 0\$,Btx L?m5Ff$ Q,[P)(\80/ 1V8kQ.B>Z% ,$07 `LO'x ,T%20L$ .VCxQ0B$CZ 0\,Btx L>8P)o,L,[T= l6 8>#7 Q0Q.BC + 2V[U<PATD@ Untitled@ $0<  x* A2$3 Z~,<6{0L .Goc G0$2Ge0M,x3yCP <x*$ QM$2 4<0xQHs1[0.BtR_%=2,GjU>}$0<0$xM*~,0L .8/0B$2Ge0W<,x$ =)<00%$ Q%%$2$0xQ*B1[0.Bt>n% 2Ge'uPATD@ Untitled@ $0<  x* A2$3 Z~,<6{0L .Goc G0$2Ge0W<,xx$ =)<00  $ Q%%$2 4<0xQHs1[0.BtR_%82,GjU>}$0<0$xM*~,0L .8/0B$2Ge0\$ ,Gx L?m<#x)$ QHnX ,$0xQ2=1[0.GCi% 2,Gj"uPATD@ @ $0<  x*  (/~2<6{0L$ .VCxQ0 G0$CZ 0\$<.xx$xV=$ 700  $[2 Q%.010Cn1 Q0Q.BC % 8$0<0$xuA2)0L$ ,$8"] M.=$Ge0\$2GxQ.=y0<)` $[Md2B0 ,Bo1[%3~ 0Bj%3~ .x~PATD @ Untitled@ $0<  x*  (/~2<6{0L$ .VCxQ0 G0$CZ 0\$.x3y x L?m< gx*$[ 2 QH>0Cn1 Q0Q.BC % =$0<0$xuA2)0L$ ,$8"] M.=$Ge0\$<2$x)"W=$.<00Gj$[ 2$0,B1L.Bt Bj%2Q[P.xtPATD\@ K@ '0 R 2x')s3P2KF 'QxV ,V%)?'0R % 2Q*K y3x , d(B03~%U)(2x$L y%QxVs/S).s0R22Qs%1x ,3'B0R)')s3P2KF 'Q,V%)?'0R % 2Q*K y3x , d,B03~ UP)8,2x$ x*QxV s*N).s6 0RU2B1x U.$pPATDX@ G@ '0 R 2x')s3P2KF 'Q,V%)?'0R % 2Q*K y3x , d%B03~%U)1%2x$L y#QxVs/S).s/ 0R22Qs%#x ,3'B0R)')s3P2KF 'Q,V%)?'0R % 2Q*K y3x , d,B03~ UP)8,2x$ x-QxV s*N).s9 0RU2B-x U.$pPATDL@ ;@ '0 R 2x')s3P2KF 'Q,V%)?'0R % 2Q*K y3x , d%B03~IUx  1P2FL y#QxV s S).s/ 0R22Qs%#x ,3'B0R)')s3P2KF 'Q,V%)?'0R % 2Q*K y3x , d,B03~I NPx$ 8P2F x-QxV s C.N).9K4j8PATD@ @ $0 $9H':x ,T%20B.VC$fB$xRCd\$ L,BtR_8 Ff, Q[P)(\88/ 7[$0Q.BWC+,GjHd$00 `LH'x ,T%20B.VC$fB$xQCd\,BtR_$0 Ff,[M) Y80JC+Q0Q.VO8y$[8W2P= U%PATD@ Untitled@ &20$9J':x ,V%22B.VC&0B&xRCd2\& L,BtR_250Ge& Q,[R)(^82/ 3[&0Q.BW7E',GjC&290`L['x ,]%22B.VC&0B&xQCd2\,BtR_2 0J)o&L,[V= l6 2x>#3['Q0Q.B>n' 2Le K<PATD@ Untitled@ $0 $9H':x ,T%20B.VC$fB$xRCd\$ L,BtR_05Ff$ Q,[P)(\80/ 1[$8kQ.BWC%,GjHd$07 `LH'x ,T%20B.VC$fB$xQCd\,BtR_8H)o,L,[T= l6 8x>#7[%Q0Q.B>n+ 2Le K<PATD3@ "@ '?0 R x')s3FKF 'Q:2'%.B'R x?03yK y3xk_% GA8y%.[U)1%B"!* L y#QxV 2s/D.VS).s//xiB0n%#xBo ' G? R)')s3FKF 'Q2'%.B'R x03yK y3xf,B.3!O[P)8,$* x-QxV%_&>N).9K4j8PATD: )$LhMACDblitz.dll@m@????????????????????????bgp *=@e MACDblitz.dll=??C??????????????????????Blitz 2px" ! !  ! ! $ @ - MACDblitz.dll@xH????????????????????????rhythm 3p@Lm A *@#-f @KFu f  MACDblitz.dllP)??I??????????????????????rhythmpNm f  Fu @;$B MACDj drumatic_ve.dll@nB????????????????????????Drumatic VEi1>?H>33>hff?>?p>?> k?p= ?G>Q>9?aff?i>H>g??'? ??+\o? ?>>?)\?{>p>>zt?$>G?q=J??e? 1  !"#$%&'()*+,-./0 Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Patch 17 Patch 18 Patch 19 Patch 20 Patch 21 Patch 22 Patch 23 Patch 24 Patch 25 Patch 26 Patch 27 Patch 28 Patch 29 Patch 30 Patch 31 Patch 32 Patch 33 Patch 34 Patch 35 Patch 36 Patch 37 Patch 38 Patch 39 Patch 40 Patch 41 Patch 42 Patch 43 Patch 44 Patch 45 Patch 46 Patch 47 Patch 48 Patch 49 Patch 50 Patch 51 Patch 52 Patch 53 Patch 54 Patch 55 Patch 56 Patch 57 Patch 58 Patch 59 Patch 60 Patch 61 Patch 62 Patch 63 Patch 64 Patch 65 Patch 66 Patch 67 Patch 68 Patch 69 Patch 70 Patch 71 Patch 72 Patch 73 Patch 74 Patch 75 Patch 76 Patch 77 Patch 78 Patch 79 Patch 80 Patch 81 Patch 82 Patch 83 Patch 84 Patch 85 Patch 86 Patch 87 Patch 88 Patch 89 Patch 90 Patch 91 Patch 92 Patch 93 Patch 94 Patch 95 Patch 96 Patch 97 Patch 98 Patch 99 Patch 100 Patch 101 Patch 102 Patch 103 Patch 104 Patch 105 Patch 106 Patch 107 Patch 108 Patch 109 Patch 110 Patch 111 Patch 112 Patch 113 Patch 114 Patch 115 Patch 116 Patch 117 Patch 118 Patch 119 Patch 120 Patch 121 Patch 122 Patch 123 Patch 124 Patch 125 Patch 126 Patch 127 Patch 128================33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?JBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJB)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@@@@@@@@@@@@@@@@@̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AV>V>V>V>V>V>V>V>V>V>V>V>V>V>V>V>%A%A%A%A%A%A%A%A%A%A%A%A%A%A%A%ALLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.A̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A A A A A A A A A A A A A A A A A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;Ak>k>k>k>k>k>k>k>k>k>k>k>k>k>k>k>CH????????????????LLLLLLLLLLLLLLLL!AAAAAAAAAAAAAAAAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffA????????????????????????????????L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=L= AAAAAAAAAAAAAAAA23AAAAAAAAAAAAAAAA????????????????nf? 3AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*A A A A A A A A A A A A A A A A A[A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;Agfn?????????????????LLLLLLLLLLLLLLL?A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(Aglg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @cfAAAAAAAAAAAAAAAAMACDblitz.dll2 C????????????????????????Blitz 3px m -f Fu @ MACDblitz.dll@tE????????????????????????Blitzp O   MK?~ @ MACDblitz.dll@.o??E??????????????????????rhythm 2pxDKm @ *O?-f KFud$$x  MACD7@arguru reverb.dll("@{??A??????????????????????Reverb$F\z MACDApooplog delay light.dll@@????,>? #??@F ????????????????Pooplog Delay LtMACD9Barguru reverb.dll@pPFG8??????????????????????Reverb 2$1' MACDCpooplog delay light.dllB1??>?????????????????????Pooplog Delay L 3tYZMACD4Daudacity phaser.dll@-??I??????????????????????APhaser 35F2MACD9Earguru reverb.dllM,% #????????????????????????Reverb 4$J%a_ MACD2Faudacity phaser.dll@mB????????????????????????APhaserN2MACD4Gaudacity phaser.dll@v#H????????????????????????APhaser 2 b%MACD9Harguru reverb.dll;ynG@V????????????????????????Reverb 5$JDI1MACDIpooplog delay light.dll@+PD????????????????????????Pooplog Delay L 2t@@MACD@l ߛ??G@8q??A??F@fH??E }??C@8q??D ?? #<? #<? #<? #<? #<?Master9singularity-0.30c/data/music-src/By-Product.psy0000644000175000017500000300743211574774322022341 0ustar trcarlsontrcarlsonPSY3SONG-INFOBy-ProductMaxstack1-01-2007 -> 10-01-2007 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame : Singularity OST; best rendered at 44100 Hz.SNGI<SEQDseq0     PATDintro(44x $( (w44})@ 5L <&L4l(L)LQ(45x$H2(LG4174})@ 4L <&L4l(L)LQ/44Jg9(LM44})@ 4L <&L4l(L)LQ(44x$&2(L> 4 LQ_ M)A 4M <&L4E42(<7)4dPATDintro<4( x 3 !6(9K=L<X$-HU) <54 9x 3 q|&84/L<Y$k(L)LQ<( 9x 3 !(LG<@gFC_)<4( 9x B zs&844<@gM(L)LQ<( 9x 3 !(LGL<X$-HU)< 45 9x 3 q|&84/M<Y$k(L)LQ<( 9x 3 !(LG<@gFC_)<4( 9x 3 54/&<47<;9Z(4)JSPATD?1-L<(44@$$*(n4k<X"L\}49C_)Q<  5E$p}C&HU<[ 2*C(M"A )LQL<44@~HP(k %<4X"L\49C_)< &=9dM<A$k(C)LQL<44@ H<(4k<X"L\}49C_)<, 8(&=9d<[ 2ux(L)LQX<44L$H2 (LMn<4X"La49C_)< &=9d<X"LM(/))txPATD_1MJ<&42>$ K/x&E74P<V"J\}49C_)M<  5A$p}C(HUD<[ 4 C&P j> 47Q<I42E Hx&7Mn<]"Q\}49C_)< (=9d<_"SM&VC Q<42E$Hn &CMn<]"QMP 4 D C_)<  59 M(=9d:+\7P$R&VC_ L<(44@$kK(k %<4X"L\49C_)< &=9d<V"JM(/)JSPATD2( <X4L  % @x 2'AM-*4m!X"L$4n/j?( <4,x=W49KC4R*+<X4QL$ EHW- 4X OL$ Ca\(+ <4,x=Wx49KC4R*-!<O4QL$ EHW- 4O SL$ Ga\(- <4,x=Wx4T"HC4%x>7+<Q4SL$ G[jW- 4S"{L$kU<44%K*+Ix= CT4Q$" /C<PATD2{( <4 S G$ (*%xa7X4L$u<4 L"@$M%xHP( <4,x=uP9KC4c !-<X4TQ$ Hap4  S"G$M%xHP- <4,x=Wx4Q"EC4%x>7+<X4SS$ GtQp4 + <4,x=RXT kZ4T/#/<X4XS$ Lap4!- < 4w:-4*sx= M&"%M>xPATDUntitled<4$2( <C_)< &84;<](L)LQ<4iHP(LM<C_)<4&84<<](L)LQ<4iHP(LM<C_)< &84;<](L)LQ<4iHP(LM<C_)<4S47f&<4<<T9Z(4)JSPATD'1xX<(4L$  0 ( x4*iY$M<7f9\ 4P)C_)]< x Q~ M&\ P)<[f(Y$M)LQX<4L L@ HU( R-<4TC4S"GC_)<%x%/M&=9d<Q"EM(.o)3/X<4L L$@.%( R-<CM47fC_)<,M"A W%x&=9d<[U/s(L)LQX<4L L$@ HU( R-<4TC47fC_)< &=47f< D42M(7)JSPATD1x V<&4x!J$,K/s& @7X$L<K9Y 4M)C_)[< O~ M(Y M)<[f&X$L)C_V<4J J> Hx& 4U %<CM4R"FC_)<%x%/M(=9d<O"CM&%xF/Q<4Q E$EB& R-<CM47fC_)< 7fP(=9d:*f&VC_O:4O C$C H& R-:4TC9dC_): 7k f(9dA9& 4K2PATDe 1SL<(44@$$*(n4k<X"L\}49C_)P<  5D$p}C&HU<[ 2*C(Q"E )LQS<44G~HP(k %<4_"S\49C_)< &=9d<T"HM(L)LQT<44H$H2s(44S$G< UQ$E 4 U P)D<, 84x }* &=%Q<[ 2Eo~(C)LQP<44D H<(k %<4\"P\49C_)< &=9d<Y"MM(L)JSPATD2 1  <(44#$( (x4u<X"LM49C_)<7fP&=9d<- 9ux(L)LQT<44H$H2 (k %<4X"L\49C_)< &=9d<V"JM(L)LQS<44G$H2 (44Q$E<7f%x%P 4D)CZ)M<, 8A~ *&=9d<[Y2%/ (L)LQL<44@$H2 (k %<4X"L\49C_)< &=9d<V"JM(/)$yx"PATD= 1x*X<(4x!L$$0( d4 }Y$M< >4\ 4P)C_)]< Q~ M&\ P)<[f(Y$M)LQX<4L L@ HU( R-<4TC4P"DC_)<%x%/M&=9d<Q"EM(.o)3/_<4S S$G.%( R-<CM47fC_)<,7fP&=P"Q<[- W(/7)LQ_<4S S$G HU( R-<4TC47fC_)<T"H n&=9d<}p(42)$yx"PATDD 1x1X<(4x!L$$0( d4 }Y$M< >4\ 4P)C_)]< Q~ M&\ P)<[f(Y$M)LQX<4L~HP(LMn<4S4P"DC_)<%x%/M&=9d<Q"EM(.o)3/_<4S S$G.%( R-<CM47fC_)<,7fP&=9d<[Q"EM(%x)LQ_<4S S$G.%( R-<4TC47fC_)< P"D 4KF%x&4i=&4*(42)x xPATD 2x( <X4L  % @x 2'AM-*4m!X"L$4n/j?( <4,x=W49KC4R*+<X4SL$ GHW- 4X LL$ @a\(+ <4,x=Wx49KC4R*-!<O4QL$ EHW- 4O SL$ Ga\(- <4,x=Wx4T"HC4%x>7+<Q4SL$ G[jW- 4S"{L$kU<44%K*+Ix= CT4Q$" /C<PATD2x( <4 S G$ (*%xa7X4L$u<4u#( <4,x=f_Q"EC4 %x>7!-<X4TQ$ HtQp4  S"G$M%xHP- <4,x=Wx4Q"EC4%x>7+<X4SS$ GtQp4 + <4,x=RXT kZ4T/#/<X4XS$ Lap4!-V"J$4< 4,qHP-4 x= MT"H%S$yG 7(uPATD3(<4_  S$ (%()ta7[4O$u<4+vu9[4 ]O$ Q\(k 4 [$yOQt&< &Z$y%%(NQL V4J$ud4-"J$M%xc&4J$aP/#+b"*4 (< (X"L$%%PZ$yNLQdX4 [L$ OLQs+4+]$Q_$y%(QL%#%[4O$4AQ8e (&%x>Z4 [L)Z)&< &V$yJLy%%xa7]4Q$u<4+vp}9<]I49Q$a&&["O$4<%xPHPATD3(<4_  S$ (%()ta7[4O$u<4+vu9[4 ]O$ Q\(k 4 [$yOQt&< &Z$y%%(NQL V4J$ud4-"J$M%xc&4J$aP/#+b"*4 V"J$*(< (X$yLLQ%PZ$yNLQdX4 [L$ OLQs+4+]L)Hx[4 O$;N/&V$QJLQ4 %xRF(< (X$yLtQ%xc&4L$u<4+vu4 <X4L$a&&? <A 9xPATD~outroh(4<4 L  @$ (UXL$\-4 u <X4(L$k<m44!+7J">$9[+O$\- <m *64! <Z4N$a(@4 <J>&2O"C$9VJ$\-4&v <0V4-J$k<m44!$0+L"@$>4%x\<< #/4*"<4b4 <PATDoutro(<X 4L   7xL>0T%7>_(/nx3/n/n((<X"{L vMEHCP (L.ox3Mx.oHP(<X4LLMfixf(L.ox3Mx.o4d4X%%#TL$&OL><x*ACZL3j>i x3jCU(XSLxLDxC7%(L.ox3Mx.oHP(<XQL MCxC7%(L.ox3Mx.oHP(<X4OLMfixf(L.ox3Mx.o 4$XMMKLL$C%<x*nWsL3j>i x3j7(PATDoutro(<X 4S L 7xL5RC7%(L.ox3Mx.oHP(<XQL MCxC7%(L.ox3Mx.oHP(<X4OLMfixf(L.ox3Mx.o4d4X%%#NL$aP<x*nWsL3j>i x3jCU(XSLxLCxRC7%(L.ox3Mx.oHP(<XQL MCxC7%(L.ox3Mx.oHP(<X4OLMfixf(L.ox3Mx.o4d4X%%#NL$aP<x*nWsL3j>i x3jAWPATD}outrog(4<4 L  @$ (UXL$\-4 u <X4(L$k<m44!+7S"G$9[+O$\- <m *64! <Z4N$a(@4 <J>&2Q"E$9VJ$\-4&v <0V4-J$k<m44!$0+L"@$>4%x\<< #4/*"<4 4 <PATDT0outro>(<4L ;xL+1\!|###:##Y##w###$##B##`##~#w#o#h,#`#YJ#Q#Jh#B#;#4#,#%4##R##p# $`$)@$Q $y%%IxMACDarguru synth 2f.dll1??@??????????????????????basst <MF F  QY}@MACDarguru synth 2f.dll+A????????????????????????leadt @ F  QY@}@MACDarguru synth 2f.dllQD????????????????????????rhythmt ACF MF F xP}FMACDTjmdrum.dll@????????????????????????drums kickD,ATU?7 MACDblitz.dllMG????????????????????????Blitzp *!@ MACD @E????????????????????????drumsMACD7@arguru reverb.dll@t????????????????????????Reverb$D~7o#_ MACD0Adelay.dll@%????????????????????????Dalay Delay t MACD9Carguru reverb.dll@tD????????????????????????Reverb 3$QNg MACD6Dflanger.dll@C????????????????????????Flanger( It0MACD9Earguru reverb.dll@{PFG8??????????????????????Reverb 2$ ~ MACD2Faudacity phaser.dll@E????????????????????????APhaserV2MACD9Garguru reverb.dll@+??G8????????????????????Reverb 4$~q~ MACD@pA]8@?@ +@? #<?C??,>? #<?F #??G>? #<? #<? #<? #<?MasterINSD]d@@@@@chh.wavWAVE(dchh.wavF(B@ A2 e!L 2 Jeaas0B%sB( J%2 e`pN2 B88' ebhp.FbPA(lPQ$P,P&()P2(bɠ,  a(pn(#aea!0gF%sB(PP,b JQ %B(!#lP2(lP&aI(2q(P87xv~s;]Ypa ҭ5sfM;Ý.Zdcr.#瞷l+*ʙ 8SOK&^B/{moU=C4wW+װF vD8ыN){ }h(%[6hc~2nFn qgq,vcY޴ago{C=58zIT[V_i{Mjt3ulKbm{xE˵ xsl,_'nD?f /}Q|}={^^G\<ςK]IJY8m;'h}pMG`Ǟ|]jg{kSr;صW5C9vsd(ƐuEqǨ"܌ծ9\Il#ĭ4]< 2oA]9r9N/~{/kwMnXb/sOۤ'#챩ڞw;.yͨ2-O.)FBJ艺~'w.x"{<9{;W_fVXrפ=S}L@p$~h]uݖ ^_(9gZ&},m.My;WhKϕz hñCf=z*ujJqU2XJnЧz*yʯrvs[AL%[#"ː;> V6ȭ"\l8З5. l,{, o5){Z$4f!fN߉?;o`I﷊/U7M6Ryk rTaG x ݁9W3JZhuЪ=oY{z7X9ORtg_3]:%7(k͋p.N$^f\u>\#0{o N<3FsZ{EyV}{,;ڜ$]Uk^Y+|K"zA;F{٣\60T|A>n] ƄEV.p 9IC3}Ic:7y"c.jlԣtnT󅃏;iZVrjF)?1 {#J3 >'| ׯ/*v9mCK]KEhmR*Lr ZS:qk#Ynt(eW;vzmmhK#Gzj/ͩ>nNl1uWƳ:]-.[z)ԚE K~s,+lO9E҇qLUbennXV'"!3WH1i<[2'uWǃɿMg*֙x2=pgL4ܖsrL鍌D]˼|k!?EIGԂ~)VƱ=}ݣ6t#W YZmxTvPo1͠헭DF;h[͟ƛǽaqpsMx`:H9˴'b>Pr{ȉKqι`@A;o8k~Q ?jיA?t}~9#1f*ﭥfdCy:ul=rt9am-5cj_Rr /e}wkDw=o3s>)ƽ`GOlc/괖D1vIF9Oe.dsn]8زůuzGU2yOaYދ{t&ןFҌfK6g~z2r\n큍";DhR:4ky2ߥ 1@Su1PA4 ;kg'fkhN^{Jv@]l̪+dld[Kj' t:&׭3鯓6PCBzW-'iMuk̇t2ﭞUvՀz7ۯz{8rQbz/f6n]W{^K W#WY͎vP EYNkO¹}G-E%[noOGIJu%8b l=ʍ6`k8QzqڰxemƁ-iCuwzk8r{U #7N;O&:j~3ݘi z(sèy؀n-Zu9/{n|Kh`Qm9/FrTM:buL^6:gk˒dpzc?ެ:cK5V?yT1DOA:'\r#p՚ڔ>ܖ\ꡊ|)[t^ry_L)4IڎyH9'~_"]qdÛI= ~Y8f1JnO*c?qxOֵ~odۉĂ){yٛ_z_Rl[ M3Mɘ/Z˻{jҭ:iVo8 O{>s#+>~;$kuf{= }q4}]{4 B!yԦb6J3lccseGaMr3P2e5={i|OiQKy_>$?N{R<0UwӏSz f'?nb.GklHid os*fZY{L^+pdWjL {g)mZmn1oo})#M#R( K뭻OA[n45pɘS_MP< >Hǥ%j/ U SRwz?#7OBr)ɔ^YSv_c{IϥlV!a?Iv-wϳoӖ!_>Zn7O7.fw9.>αan$n+֌PytִWѼE$^Og!K3Wx{%k˰徲 Ǣtnn0ھOIGqm(o+d~\̨륎[qłM.4y& Hle,f^r$m ]kO0^H3jz8fxQE1޻k-{j; {tE a;(]9}NE=i"DPDIaV}|F % }"Z8r+;N`s+Xjm󄎪&&νzS<{ 5)̵rŊv Mٽ~¯Ug,hбOsr#~ccؓ\IgM˶4ϭ֜w/o+> 61Wa^K}5}ݼ7> kfE~u_n 9w{7L7[ vt ܸ NZ/_$fX06]GvS7֚;RcoTNYNhտ\C\(NeƋ]0m$T݁wuхা}֘dw 찫{`iQCmz D<\ZECONl/6^bzف I~68;CV2tC׊x&l(a!4>5᭭D6 \ɫk֐h.D JM {kN~\a?,;iD5kOr;/NC,6yx\WMuҧd_ ^spk?ĮZf0&L`r$ >[ 9gmg8i[? 36¤J ~Ԍi8DYGXj0Đj#tfȽi~VM'2\h]'lYPt/.'-Xe6Ȼ/EӨSJgm^Zmx]_`G{6 ^aÊݛOr8{S8j舥=]$v݂tfn Dǖk=ҕ%-(YͦJcQ(*4GFiUqOӚlܟ{+;Mƚ;$mvLqdTAѧ\a v`VW+|w~I]%~vr/aq#::)5'OW /{eQkY?G%^2ь{Fj`ʒhkrI$sY[k䍶۴Y+؀e4&&e>rbˇ.WnDN]mƧ[ݻ$ǡjSU/kd3R );bpk cL%SXec?6=TҖ/㍷lC 4 wg2Sw\",-P9so}2[Wci3f$>j:3j\q۱XcL@Zm"V' g VjL~Os!I5#ٻZ13oe[yZ퟇+_(/vrʹ9zqcͷK Q_6;Zϸ+sJ[Us b>,[ʪFc`*kUUX쬺EX>} HRÿ' 2%K1*qd(Gn_֘{j2W-u귁n:'Y S/[~tZ]d˼F+npjP׵ۥIY:g8y 4x|O[kZWd[ͩzYd6+Xa_Cv8-4qJFfگl%w-_+Y4r5/~_*yjPZCA%w9t'Flۡ=(~5D %SELW (v}߹S0ld%شJYr1Qy=cҺ;YS]Wi.U[M7YߓZpOhebNa+ q|j6:er\7(&*f<玣E+ofo̤ j/uŽ'ٵ۱ֶ{ʦ=zb$fɻhQe7du~SLEouJUY[P%+ur] 5s͓H\ FAZ]F=ӡJB^m`MD-&tX;;& ,y k]O)™nnIEnuk>|75pa_IoC'׬2̏kyom{6»mNw3jg%5+L(&Qw5*DV,MXώ(G7-Q*9]3,;@`Bɠl_j^6r##xޗ Ŷ jSk\\f1~;bm5$#APLk>N Ǿi^6wL6KսD*unD Fi, ggQ%eɘo'n_+˵Y8=)j6:q@ցsOr6&;9ɪSO 5*C]==eNju?ojCMV}l[|$%Y9E~7Z#Z3\gRQNɿ3漣[D:ρ0Act̃ն1gMcl^!sb ٧"^CLYn\enIsE`_4y,+wNwm:+l'øXϋ^foiPe iiq3C<YIrIf)@ہbyR& 5U[mKU" ͞Զ@S݊{0l\8nBWVζSg(7Ƶ ѷ4h3߾DQ.gƚja>)xR `Fؚi朖0S(o}ܦˊ\T8I:ʡiǾ4 sDa1xdEK†=!ɰkJ]Uovf1|og1#ۚjȎ2_828$ӷj䪜[X-ҔQ0mcỡ5gF+( ,p*\w[0kcN%X2݋)vlX7*W[V9wbZ5v}kbS*.w=ŜЄY@AZFzM> ֬c:+f<"Zz1Yg0 ۡX];݋:Xא]O zTESK^|} }3圢.Tn1檴=ƈvb0 0h8Eڙb ̚(6̞[^ Au!Lk,#^$QO`\JVdXXV XsR0%6Tk6N^ɫOZ7ſ$J "@mKSR(7$|gkw3Q曷zJݭ[@cG۬Y\Kϋ6TE =1;bH{¦S}YcTgW˘dy,Y;{%N26X v^jnn}xk@^[89zBHM G0L<Bj#0ж/8oCjN^/J rb۶X1!T=XJBN⹗-MoTm(բ)>22Pg u3Sz*UJy[zQ&1HIJy^PVTjx1DX Qo~a{&iQ/f- Xi<-4_ Ҽ:5F^:[K'Q|iR5ZG޺Z!am:lqapwG/P _A1Z,uANH"O?,aO/yrJU:z'SLEw7NTTK@{0,h3>{jX[*9&o?WTWnt)AEMpMҬ=5Cz2ykcBViVҕ\&L<>qz2mz+ޖH(W36>ZGU ߺ 1xl}0[Lv!ND>QMX(JdCd` ߚYգN_Df oQֽ%S GE$jj8Eo0Yg@)sԁw'-bTm<-T{L1˘)Fro3mY)=gcե3{YMQ;c]%m $ ނToNtVQŋY'De 53e&ބHWM.U.j%6TiUR f b3!F]U7&u^ 'M_ީRxպPN=*OuˇWʮE-tܰ-&ڲPAW LLÇʑ&NK qS⩙KuVHxP7@dqyr)Gf2?Yݖp7BUYLn C%:icޤ>a҂4fdYVNodk>[[QkPMmETZoy(sUcfǴPUaM©J"ԾuAZӆj4LI kr6&[yԼ#LG˽ Cja|qig~;|ˏzdepas-#I"P Ԣ^5ytVN3#RZ8U|[RL74ćIԢSjL ]?m[#Q)N5} mzuFדhzѪ ZLwBb s#宾.ֳ4 )&ZiqkG!)N$U=Ju?ifiAJ|-oD%|k!+~`՘YI2'%GfMTf}ksK9AXQ͇g2} 4xƶTާoiZ#mWytk. SQ-z;e}t0`+Vی3sPmDԣhrj5+\鬄[a~ޣJHs7v֊z+Iv5Qjjũn@shTj~tqkX3 bA5>ژUt8g^G/w~EZ`XHk V%I&#C)Z`.b?4gQI"qoyTKl#$3i:129@r%|e3 a{r\EX领,OIz:s$|;҄ At͆jX8B'hT(Xgޫd72%duc.LT+UƔVSZ<<#R)<üJ |im ,+GTnȕ6K e6(`iA%VꘝdX$WhyeH;zl/bNq27ԚGz8+*u TT&YE]Q~Sm3e#NB皏=5>v8˳[..%u'yK-Fv \=$0@i=Mmb;xNx0o۵SUlK/9j2bL YqqaYFZtZ/JE0)z&/SCEjԎ\àTmkr*u`-㇍=3 [*kke))|'*I"˿'F/_K OYG]:uEhih[dIyIq!;t>OPPf:1y%FrYE7ƿ,'$FHμasz sYqEYe$D \ޗ':f -w.,M'ul _ݙW F6D4|KdPUD'mQԡqpQ|TW`zkHuo*8{a1_(`?Jރ%8,BfPb:Ӓ^NJ:\$L:k/̓Zf:L/E\|Ӥڪ_:$*/"{KBFS ޒ7ʍpuYX,LRwƦ[J1MPsCũ/\p+ pg\[PS<1kAT햎Wr.ٴE}$o|rR}S}Z(04b$/3jH8T6.3=Qo2`4 Z4sgߊjSv dFzri[*FCgGHkp1gGc "øHZ.S]ęܣC1y.=֬ Q_ rh+RWryI33)(Ώ h}'6XN5}YL7 rLKr8{Gj$9#P] > ́r4:yOjlft@՘^GLvi)fɓNaS(J}M#]WoK!`cLAVwԎH|Tm&K\UU78 [̰6A(!ZJP3bJaqY>.PP՗f  n"%E.:S=l+$lBVlj8O4xn5gs\Gr\&9"oIgOǎq%`:e0Ad]:C) gtj=q-^=ɥET{I|1YS%n\pN9AX˜i΂ i!vfQh]fndawI}i$([A|*YL3;uج##J/+޳ &sډ'[l?&$ֻKBnQqœ F=~ YĄm`r]N~tWAso>3! 42=6̕~:DE81UP(%:&7pd7'R>h3pS3>/$Xy v.lӠfM/OKb)l:%K32j=ȋ9CCJ.|./پP_ K|$" ^\\ C%A`}5BNJn L… RC~nF-7cbnD|]1#1R,u*DM2SLV U][zz'.KbC5-$Q:/?$8 p)"efL$ t'(T2eb{0p%^qmrOv|eNҼ -pS.QqA(>S|Iy/=1ĈVK8{XsNIq 1㩟:)&&b"MbE>&x mz=hxGzIH|!ij$;urqMЪCƼBPb+Ax̡"t`k3=:>Q)"X"[jC1aOlx 5&a( 2e/ p"r3=; Ks ϝ^I®ϐ,2&%Lwd;X1:4:Yl!"[*tƮFx J4?FZww'{[fRi$]=Dn 1+Y3^9.)`4$zBgig@h`|ZѣQ(F3DE;{XᘏJNnѧUaRC~?eSC q./TZ2.#:MW֔u'@t!fj% Nw +z!* @!&(&+Ӗ\$ +X M&ɞ`%zaG]FˌEVN5i_}0-ÈݮǸG?x[2,YwF> 链 ł-Ub>ß?gvGQ ((qVpxRhj Hhڙe^˩"۸j.LSn+@\Y m &4'޳R=JQB]v_]7BhKbJj֪Ӭ 4 qUh|XĜ hL+QUPUV]:DN[?jݏ.'k;BVf/T>lmf375Xxk1G7<2g]Uw ~jzL?eô ;IX׵!{1. XWڏmV]jXfgx٢Sv08Mc.AV[JgXUu&٨"cZ}vS521A 4nX٢P˷|볌Li&7fk ZG-' oԘĭI[̨X&mhH ]';wS$~uuؤ5Q#Zjug?#iܜb*5؍鋯i2eT ok?Yʔ8 |~TiH6+ܬS *DK/ț;Q3oMN{d/$y?Jn{Ue+"YK&izQ.xX"vAHd/{;K'4sxkel$6Y-ue'jT qZI*SGlf`W-GN h]N6Usdl=?Y51\)Xd،P29]˽~UhH{ٮj,Tdjgj[KKgZ MX īǠV~V!kVuCf<_+\ ZAUEjH:6;CsWROcRVPAIJXX$"ڈib=;Q2YUM*$KQ јUTApBDI(L dQ4:' B( %B2BdJBY210 D@, %baepN,Sa(@1 BB Je@,bL #B!B(PdbSa485dsQD !B 0! Je@DSB@( đX"X(0BFaP, ((, a$ L 8AYF@Aq0 |Y7'nܠI_[lDW Tn- Y|zØDocu3xk+Y\ ?_qÿV9SRY3;e6WAlX_Xڃ y[IO@=FYOcrTgly)pv~UjG\}ة؏<ڨW:1z/xDX?m}x4;Ι֬mیZ;_9ܧy'ٌC>uk޻Z5ebcc`ؐQdzt6ar1Sg ٿK#~dc}8Zk9cޔ3:}G܎ Z5kD(8GzMٻvL=~B0s W_ovO"CM@6#Wgϣ{ys,wM|iUl]5_֒>*-8GM71A/M to4pNkg_M=_ZIoF%w~iwXP3 9{f5ͤw \.C^EG*'9wLFyΑL'}.:n++yuPⱳ7~+]c\žsO!9-7eUavrW@߽tPh,= eP ]Hn>' *8g=>N;}^)GB+s?mq->]z~ޯsbQ͍VRz7EOqgr}j nX9ztqzͿqJL`w<ʋ) U~=*h2X\"y.m<˙M#s∀W[5@WON``#C/?d&~_2&Jœޝ/ҽQ_>)Squb [4kΚ7!6sFXfkod͏kpjSUYT/NJ+y&U y63 a 6 IV 91e?`<-c[or_|囮zꡬ=iwɾ_'|HD4Xpq˦f{bor3V\&L>"gnok9 ?iw=2ǽM26X= [:ZwN/{*CFs_,:Pu뾝qIJ{4Bom5T Spa](N뇷t-O"zkY8cZ]_@˵ _dz~א 2us&XPґC9Xk'?Y}Js0t]\g&g`kIR҉3{ΡiE69,z9挼4S>w;\ jݠu׹7/-=2\ OTy&s3z-%%}8\/9y;-d`?rU œW/'ߊ_( 7;/Sߗ\V*͇KQL3&xo{W 5w6-8b?丠߶Ė}k}֦}Kݠ4G구>5x<~l`zy>RoK};[wG!p최4Zu+͜؀_~{EB='3M_ac5 0sC'6# B[;|VXv~n_-8eOoIDR=6.F?p%gxhyyHU>GjLtrĵv{UQ% }w_{~OLu=p+8(!47NG?_uiekura?>;&Nͯ[gToQs609#'zʡ>h@mosYkc_B5=$h~o{|rE_(*[Mv TX'ph_ ~A5/GWD zЬ_^'ކyobejY/(Ft7SpulILJا zhQpzt%ն}76Bv/\SѾѴ>h`݌ f;zg/Cs2p[ڿ$,we8R͝6aނg[ٯcIz Gic2F{`؋£A=s1M w(Q=ըj?^ CXnG\*`O<6qmq;slA&zrMtίim(S޹ )<"\_Rxn ިקU[7v걅-;M^\;Nctpztg?]ӽ.M]a?MZ;cuQw;V( q3-6bVUkE3p+t-?ݡ*j{ǥſ#4^T%xjQqղ>izo zK͋q82L7Dsn2n\TϞݵ8VO5̭wX3@Z{Ú{P3Ҟʄ9ަrDZO ܣr󜋗\$_՜~ScCƤن{F .˯?]^8tĞ_w;IG~s52}9#W:)7Jv$TczsGoS[~L=Cv}fscG|Q_䧵5(oG5|+ cV< M-nRqśzz |^v-̱-gOouO[/5KͫޞOo/_c]:~]3ҝu3)?zC/xNvg ֧y9=cy\"$:Vhy핞:p6o>9X;shgR{JsN꯭u>ujC{ v'q+,ӵ)5&V?91 hhJס+-OږKH"=;>vH&zTuoO<ɠ7zpv0SqO,w0ñ?EZWz?[ĝ?5_ iL#aK}i\g\'s}? gIš}aͺǷŵJvݞfߣ}'t,wбoB=ʱwWNle? SI0ckwxO}'fZe34vR֋R4_꣬6].P"OXvԤܳRl E}>3yTcmSǛ{bIϥiٺU_vғ[ XV5Jl.=@Wo'΅_V"Lzy)_-5Pg=k{9Gtז!~8'8ֲ#|ds:*-=1}uVW==OhYsGr$k?-9{ҋg6Rң&úyŴϭ};ɑ|x{թ7w\ GO"-vp|zqzS*=aXdx}rg4iš>ꮜpdx픯ІNr .z] >υi /r{k7sQǽz2L*Dxme M-=ԁS[N']/6qzl/n9Lŭ oMy'\$ ".?q/rs퀶K*nhO;!Fӆi%BhiJ'o @&}{ץD>A_I$gΑ:#Ye_O5,ސGZv{x8Xⳳ17zr/&IiOH{$Z췪~=~QB:gSC^eu_ѹ<ޮp+ 2choo]5vAcTNmahaWj-7)km,o[ O٫QCIʉk}1ŋ=$;}2VN\{062api?M {i={ٙFJ5,䈣S]S<-abh:w젋x]x}}F/otаV"+hGYcs9U׼9R^nfms8f㫍}M ѕ VvS 9hͧ GmU2685%c`Ms]8{ja 7Ƣ6XBh]mXk,4p;l韛V5nQ,BꩋX7ןi'Ku\gs/=2vy'U}2\1@7+e$ˣ)aDAnKiXSk4q,)OZd͋vK]]W-ˎ v )|)bd}\۴TՉ R6g@q탂EG{pi%;Xü}-.vKSsm o9j_5- V7.8M-/;zjpbO۰kf ilQRa;q'*e?s}cX%Gϭ3Z{G =|{m\4Et 6F^6><o] xd ڸfgI~|dO g_ڌ8<KyFOr;Ep~XJnVGikqC2uHRYrKI2^LAHfz[rZ6V8f;hɣ06g쩉_wl_*#aHzš".̧s@lNY].m끋NUmv8oIus2.rYHSѩd[YˀܸrX yYK*4A *]o9)p^6 uw)Z\LݮZ=ԇg{78s.%mv=Dh+ lA(C P9+a>gzkƂ sҽ>2)ͭjZtHi v:erkZy WNv<ʶoeR%%G1jO-g&bfRx.9F(E,.nod_F4dA=V\>G- fۍ} GfB)shsT0UWw06N\k X/j?(KM23hvxm)-&3ldV89Y+dFk} p5)[B}Y)%\g2: &\鶟8ͳJݖ !!QfSn0YݱZE49ecyc*^#y ;A/\pqGiTZ)X`ZL(ӧ,n2JNSjevKH^5n> H+9p`}R䯳X?LE$CѺں8Uo݅Uv9c`wsbe q˦}o33 QޒvGگh7O3Ǜ~hC+HFڡQ\-/ Kz]G-I\sF,XDlz3*˦NdY\Z&ͪ+ZotM {T/;nAX)VI3Z_fbB~ZI.Ne";I[n;4 im{T~tmmrwFS<kݪz1fNA"|rER!˻cUFPu v+愪w '1Nl Yv̗ ]KFsSBZuk;d(^LRԵ+Xykub1Pܭ^C׆2Gv9{P4Eu;Eu:[ Vm-:/ZppՉڽu];6[ Kؼ eNdr;k,g>֜mD1\2b25ZE`|gIS\+מ9e :5%] 69I0'53˫F`W)SSxI}n*9|ag/18g!6k]uQqB;+,SSWP.vnϥj)Wln(X`Rь0X] d[YdYUt hk9)&'ye›b=&ְBp&rayXC%֋PKl-\1/Xg+0 ]dMJ:=rJ%;3*u&*t}17((Cm$qW$`6 0{g [:_ rAnX+9[K;?(/UD&ԇ`AnM/¼Z[mr06~ub4nܝ}=Q(,uh{Lj> \exnj}v[RlSy䖞 XߥWZFT֨XhԦx*ʬfaQ3\eA-؁cOi喒*V >[-* fbVjU(Q㒤KtXbYړ[Vf!TOOÖޚo#y&*@4d 2VeD) |ZNR јqH.SZRxf{ |C.j23%~H l^ܐӸ,:cyS'Y>ĝ]uţlJUbf/e,^: %"SKRV#iluF0Zo+N8OADZ.):|IIx[:k2Ts,shjȶH"{e[F nCm;C?djTX\Mmָl kQ`~8nj}VKifL܄Y\S2A,2+ W=P͟2fKe)O-"\D# 295 nyKôfKV:S͵,ku𺑅O=^E Eroȡ9mھ#v 愊睒[SZǽRGi5S+Q3*nQ2PӢJ%, Igw CYSԲP?$QZ+TO0(:!][hR}i>Pftޑ{|!j{RA5|nCj81L-h;6$%80 N0/ Lb8ׇ*ØY,"ޝ{YץhBT9">|ؑ* O8[:۱DFwu{UbJ5$y6!rlޥS*])z]uZ7l֬t&vqZr-ԙFjYrSjNTBoȨQ\&>"2Lm{i1jlԉ螓rWM,wwt 3m*]ϥ)j,B&tfʛл%֦~jc}O %r]bTeޔjiRQ%KW:=s͑Q@Y&R ֓A)T:":v &YN9LEX9)"4@1"*G+.]eX̾Rt Wvt%N`i ={ʽTyWά|pzHkc0mVҺػk)*6f){@dfUT"eUv+Bi%'+(quBjTɉr.ԂñCeGL5/[!%H]՝Děy Dd.[}JޓUg1V>ySڕZLH|E)qOW[cYEfMR5a|gWLV|s+IEYjO3-DO/Lp &ܴ2 1`0ݚBK& 4Vln)> q3I%1C৞(.D=iu[+XSE:KQ>44ڹKAI85it?״ ir3uZldu0$>W#kxp։Ps_%ϹPt:O!̼RYKnSLt]1)LzZ}Rk4K Jֻ9Ui7k$vmM)ҳ6KN˧L1]tyXDb&7gɿr lD&v8\* , 2%k\]O3b"I9fTi(Ls#1Fxb.ֻdSt_r |b^cx ALj5qxJHV j%Ru3X!c! 9Ou~TIf"tZX84V/;܈ *7;gďTs;@We@f)BbOň\p^T]ḐBjT_N0CgmTd1d* )ʆ4WJG k,S<^9#)dIS*N%&뤠>Z7:FKJqMnx H<.J 1Vo)~ݥ6x-M5wxBc) ,Uf ڷ45Q$$l%ߋם!ZN[qIܒ(lU㟲4).j^ (Z1D~Q-ni99EKlPb #23eer j]̥ISUlv3fA[܊gAUgj4zO_(;' lMvUŢO%W)t%hӣ N[\] 'T0qT!v92GTs9] ū籋XTOҜ)`Q#` 05NJN{kj`ܺ UX$F: +eN߱C_G O5h"S-ʌv^G~4:i l^f/MLs2k )ijj̨|6h^u8x (CHiYRx~Y^ԦNwFOs\ L͙ado 6]\ J3\)aB!jsKN9)6}O%̸ å2Ϻ+H)_ Xd"^vO\ EƈؤXE*!b5jCIb,{$%%_t63{::̈́h"uٝ`S3Ϩȯ6+5W)Rh)qqXv#l s]+f){>uŢ@d W]ˎ?');Ǵi6P4c%G]N+"H[%ň4짬E:}Rz0ί4tIp:UʙAwEr|VC ' [U=)4u&qډ-fbi`8"#0AUӒ;5J}wx ")K}IT:_[Dg+4ͬ,jL @KQ.U7TMJ(0fQ(O"3\ONHeP')6ɮ2$b>\v7󮬖D#SMRT⎷􋸝dujP+* ,EY6L3pi\|3-5;X.L׃ JL +ʇYl+lT$ls-)6``k$8ċ5n)'Q oP{qAzBpsٜEgL %HgQA$38'5,wׁӸ:(A&4+Aƹܼ+[Kp+2sA. D7&>vqTr{ب)#L ]qqdXK9,9igOhqooF+6U0bќNTuGqǕ!t>Q,\64YiϨ14+ `(ccL]G1mވM;1ŽLoѽ/4#MfbH|uy)&njgw ?fOq )@oCgUrk-~J*1 v@*RVr$01Kr?U PjP10qⶫK k zGpB&5QgHH f%TזgBy9FDq"Ún7 .Nr;?D$"^ljIfȺ\v:cIF%iGz-L6L'3-5G$0~2}LQ$nW Gkj10 Z `uTwӐMU%p1H~旍!Mm܌)QbNyNʎOhr}HĖc aLLZR`mF R[]#͖x݅(#|Mm78x Tw]y4%)&#*I!u W^xx [4q-S99ʇRP~/7W߸KyxrLs| #[lf]c]YZL%8"|tu]\'l۰{mkTV]u[4TMrP8rlXl 9Ǹ(OC]#^LrpGAh{a jHaK̄5Z / %pP(9Nh1Qt|MRDp+-ASfHDo O`&ӟ40%n1Gxv\(MUc3ʡ4%Q`}i9_=cxSRf}d/~9DUaG2FXr XqUaخ.ts A3<|t $q4CHZzyE c 섺Ѱ_YV/C?<71Lp&- /k:ԏZMT2<\]NhxR^!OL&\UonݟЌk+ Vލm9i⨳D{;x}5׹ZqSHgl/C^Uq/'}G8XC^ T'~;:O,2gRxmxƐ&[!bt3+ryv/CEN̉q6/ %%F9 zDpхSnW3.N40,V B{MK5!qt{xS 2Wr6:S>UabqA.q^9E4M{^"@pihrBGWKY)a*q>Bޮ6#lcnip]GzE=pGȷcӮ kaJ = 5n=ؙݭR=୕laxv^"_\˅W`@|'  NRpF+;c/>ЛyIeCom z@ܜ漠:S%(.gf"/q. wsǏ-%Ek;lqeLsCz-]:6ʧsKWftzx .ҭ S9R-VG&XdhtR|3Jy/2(,f:Ȃ1#dώE^:3\DQ.,G)Z>63A˯nRT`!Tx7R2$lϸTpQWt&. _>@P;A1 . JFK7kwve,UjC&݊Moz6q fD nc~E`C68*d;u;VɝҸR*5ՔLoՄ ܴvf=r$t] =gW^M AhTd%CL-eߜy']0XѰ %ўDKjˀV Z556 R<û3od`txX掜OҰwcӿ2v[[TΖEN0I:C2ɔ"zYxw)J8l3S)1Z,ft_Ӆ)oOC& $%X.j1jktÜ(X AS.:̕aۨ搜5EaEu\=|Tz%z#E;]IϻW6q^܁J7m [hq%6(c:}A xSebDH,<빰QSj$iUsj&=bk˳Rv+ݬ NJ&;\Cb:"/ԣ7,6j+T;W0u4xvxFF7tGGit+ٮ|b-3S2ZvgLo~٪pVH]\m;J"MXfOlvC3mxXj18INSDNd@@@@@cym.wavWAVEdcym.wavyP"8*PBD C`Da( JQ(ddXB!QB!pjF( H #B,abBJQB٠, HH" aDexJ( JFPd2udsCQe0Ue U-m3YTH)wW<ܴ zXqW,Tjx(˕ nXW :ef77-6ȅzY*ܴ}l]5Ua C亽HF[o8f3IըDm )70о ͕=dFqjݸm*֐;wO fjƢkưfJyqYFҾz35֍ k:\BRg]Z]Lb3Mݰkz3ĜUaU̴\#yYTTrfd;~;b8ӸElN.#/2xDK2A,ȲT8(tq V=: _v)7:]x9߁~jEU*+*@%&RFȮ`wf-ʻj@zQQwڑ,.En1+s>7d 51߾-"9. ػ*=Ur!abnp96%>$7ۋC|Qk^=^>KX\ia۽HY8*VVfƩ;PBH+~צa>E7ƷPfcG[^DN Nv>gjE U]ȫP测u7lNKWq=N˷D0߹Ul9쒭BQQ1[rWr3ӛ,jJm­QK*"zyթo͆k13ӊ%*կ5tJYFƣ^]GhS-=DT-jJ64\늪TYפvWPIUz5_Ag.GX_Ϗmn'RGK1/Q*Fx)ТZWj}pGfR]~c>mE>h͹Y{_8_*[H W W5 6ϔ ; .;Tz*wIK/%bBdvK Yv>5ҹ|6 = {_*1ϠCNL_fԇ)DžĆ"3m7$%E£M'Kǽ$ R7!~{z5wV.WjlXc ;W6q /Kmڰ3픾n.T&hx9Q7k%$Z) N/|'Իq5?oUz7*%Q$2{8f' S, &9..Re/w&<ۊ$jR3wԖ[ThVA*RX 44!{M6IN &f@;8{x=;Zv\UGdFyYiHO9AP&J~4}8 2]mǫ& Uq2wM5<]?*O[fMuƷƨp(ښ1t0qEq7al WiKI(- PD)Q8mej&@^ ;zwDҐ~9dx-̓A5d'0)=6:1#r&u:l&YsU>CJG._:&+;}W=JWy:_cTP+Nexks%O|m#KPcp9?#¤um/+'r ̵WnQL)8lqUy$ 8E+kfI rO ץ65"G ~A*uW姢9I =oH{W.ث9P<5uFk|x-ˮ?9.^@Gl-.2XTV]^sJu,tU(PϡMZ]N,nWhkЌqJte9QȪ,m?&섽!reݞC/;oZ/*\;Nz: Ƈkx,?zLb2se0sڪ⿥yYMwVLȂS%uk)]*l=o<|szGIM^ 6iZU~Aðadvĸp7K~.ݤS/㫯5?sX֊l\`Ehnwael4r].eV|LtQcbu^^^G|8lYȮl)&&Rs=[ՈVfSf̳gqZbRᔙl1am s*wa%^QԘn%ʶѷc.+/*8xqҡ dg:] Ii|0#+3żh/IsܾN|1YTOĮ%+Z&=AͻYZu_tkшw7.VogmN-O(Rh⋬sEve& P52d^M)G[/L$3w5($7.p9ݫLdSuzf#kg+iZ=_lե7ٶ 4!p|3ybq7ΦsI6ˤ0=eml/TYږOjit_Kj_UGT+ /்gs&۟8%υ~6W)5nr8)-]R0=1 l&~;E͓iUq2z z-l)HQ u ;Y:5[dZqþJy)Ye9l>5j`U9QngH[{WB,3ZNzʣX&]O8.&{S2fFc\Zx˾9s3xZmqYO ;*E5eruug |8/&kl/QO)nf_2]gEeP5Nѹܬ!}S. ژ=- oUcO"*aĒ(lY.t|6VtgKAw 9<;s&|z+ZV.k\Sa|얭 \n,I*7Wْ*q%R>3UkitgVeyW{lB_Y[HgyD”q9Y#L*Tn]pSg*X.H%ތ6SM]:d3=Uyi&'i(9@ܽ8٥̹x34 /}#d*R/w3ux{!?g*ygUѸCVǑgZ;͔"{Pi.Y 8iCW{סU;x}ziUS'Ֆw#v9݁RV欹׉~vm}f~q]ϑnD+c:6, ij;3ȍ'IJ ןHĭ&֧؇yU#P#=-*˟ɨ*X^Gњ1˧ir}%T ]3=3u{Ku62!^T3P"MWF%J}LCRfV鋀L U})b4ZWv۟Y6_,ś̡ s&ľ̨ӷ& VfW݄uhƨoLҔȅ纻febRݶ AfjsV*Zq3.lJma6R^(]mTaÕeu1=NG: eTT/*50tpY&na\XN p?¨WMcvʋ'vyQ"7n.).9y:VYЦWV#0 'zu?צ [M6Z$~s[|X$NFUB̘ IZX_\4Tnt َ%[5Z5gJ]Y4t)kXW_Yt_ EAd8z^/q۝",DUQFYXReTbCgҶ{;LmwQDO#֐ڝ_d):Rgšg,eIp{7 FyY_]]ܮ=u)aͦצfn\c+Uk ͍#eM }&eNfј̄' \m,..-V߳.S/ Y[x0D xl*Yggʔ;?٢"W3gbd3\}Y dj9"m+@OHgM&Vէ7yZW͈uEb.m):#m5z}uYxeۉv.MA<;z&KβDd~Xy;S~VM$w}B!S݊r [Z%̷k΋1§Kv5GoG|&la_K#f@B2G8 1!dU؜iiY}JpHt5ݵbOÏ6e鲼 tt]?o:fQVN5>\eE0Sl[K_L%`jv;uVfdm:lcA˱Ҝ?2o.FNkM#q6ג4g2jl,Z3h_ݰqԕiRpoi?-K[](_,y+6pʦ>#$Y8,הNGFS}kVp4 ^seX)3Cʽn IٗcꄏMfvI@m{Ȗ, ~Vk'4ZuMGڟ5}9Nx[hf;SkӲǙlc_jz M\&`L ջ|xmeʃӺ6 Q NUtiwuxZ;<Bn ZecN3_h[5\wv-2Mܝ)._]eg!“-P[6eP=KA5~>jgyOtA yq jkic1 ql%W5l\"gǭOaou}}vC͗_}ajI%[Դp[Vg1[ZN|:8&[5u7ǩE\곧^1eAy*H }smF-E3d W [Q' v5ow#~2[,k̬78l)|zf*G, cR -1Lmp_=M5mm3n`ƩE޾nx{Y\fJJףn:Q|p~jl=6s^9=uZXfePҼQ9ʒZEU÷ Xdc֬^D|y:) \ TS+#U뛼:Uxk+zҠrXq\ϕIu>SҦ"QxQpr2$\^6xA)m-D/w5<>W ۮTkexOv{f_^d81l]WuS6*3 T?|=^*jC f<]:nNaza?jHzENxzv-"D~|MM3w&c O%VjиNAXwx5&޸h4 w/Mľg9pШn;u ml1GlqC? ]4jʔ.H_cGFOj#Ҹvi^dW?cܚjnBݼ U.aEpTRG3g຋Je{g[j:ܙ=QUsӐV'l|LԪL]Zf8|1eGO Vw>b):pɧ%Q/"b-"lT.V /[w l+f> ,rƕ]2Xߎ뜮W1+Ko5]F ,O5kٗY*cM+,q l 颲sg#]]V='k >i3nMf H<4#L P9baƴj<͉xǢhnYoeV%92)9JcDwXZekW*Y^+ÙQ[8쳬d^ޝЖm+AVÿJ)oc0Ŀ׵XJ('y&k[pe=ieؾңKi8ˏ7:ہcnIkBî%FK _폆!rGe`Q"e޸]WNff!dlj;'PW*խoFwo'L}@wXf5m}@s! D1Ė9\ZsUOp)R=2T<*em @(On4|zb:<fGk# UmLvq9gnc_? e;?YreY=Yҫ77:=6&1NWuY\+VrN..#u|M:A12<4^M.\qBH\-a nƸ t-\xׯi)m~iKpSقq['n^Y}6{ٮ~g7/ŎVF1'3מzA Dz罥\*Du<, OvPd)̡L&SDƇxpJ9x6PȒp{RlfE!r`ƷBxZж{jtS 5] ƨ-1&Q<8aE}kxl,2^"Żf590>YUv9^%89DĨpÂU6{HQv &cXgG zۙimۍ>4E/脯o[.yu}=\e³oEa&ߑV ,=NZb E.[WÕ'^'6z3] NypK^m]q%A,5/R;ɲe!Y]g\8m55U. ̶C~Tg []f P2U@sH_a~W}H&\:XYEW}lY *V3-?Om^ Ezr ̼ g:VOuRxgk7T^vvlkuֲ&vz=?2.(dqQϱE/i4jJOi ؃3WnF sew:#:"J:}'F+:]`H]1#hE-W7m J w4WX8Gr6TfYBt 'd z~1YclSSnq#R>6*WɄ߀6HYz.' {kqϿ4e֠2[6+^8{) W[B9Ԛ4F`O Roq3?)kMH"t(c=8z}gز#O]\8Wm֮ʖ~T"]lvR0uf|\(,W=Ug |[5.g\շwuWu=N  ukn֭ 7;ɈR7xx+ țpkJ?)T'DavI+UڊNm.ԎAinϧLK%#O>]8X2gVIވV)RvXWW|Lvտз$ RYVW$YB_/3f,1]V,M%;P3\].'TJKy NVDōʶ.*~=2:Ztkҫ{Z8,2g{t3=}?=ֺmOwj&ܼD"67x%J㬅/Aj+7Wy.Y_zo桕}qqab[BrˀM7vI١.j+ݵ*DDuNCjֲyw8?XkvG#՜!c"}ً:ӽ*.Z8؜So8 daē%aer2nm!ltAyeۀzBgMiLU\G:U*Z&^GڡeEաrqSNV׏pX c ߊZbg߯E )*9{@ӏCb zJ~@VZ9arPKr=.)f9sM6O?PJ]+qȏLr"뜎O 5{w LI&5{V6YPa*e꼚cLJkC sZ]]d:qo5>.jOU2P1mE%XU]mr rniD]n<~&ƜiX;2]]6.a'[22ǭAf߼<ө5ax!vC]SRcsJH^R)B 9.[>g\r$^LlĨbfӏ77~Kruĵ`hPծc,M.6-.{N4ytŖe-E5m6@f+5Zѵ ȦGi6*pk-Afj_\]DždKDѸϤrsy[C4Τ4@ج#,ͩWX? v^yۗ N }k[68QqSS9.p\ӹMSr~[Oʛm3q,;l[]l|RtM] ȞCgdNlxӱ885ؔZh}|ȳifYR|bsCZr9]6/\m|CLZm[TfznKڜeC[d!yd}B&Ke-<.A/)kqMζڥN۬9e>I0XM *>wI-]zV.w76;³XF}| w&&+qƭa{;lPx5m>6 3+ܱɕ~xf9`"__k_s~=X<O'r W>>gː,s?gp_bgbՕ1z]cA%N&9-ka{{U-g4<,?&k˥˼ 4܄ sNs@Y\+N{3*`$ ̈C+ aN 8]E˺>-+(ijzƳWܸ6ȱO;%z2&`6G ,U[kXl߭ױJtW(y%b7^K);Լiwt+ڤ ]= BO2e}#/Ft)(r<'~|qgGՊs+W{̖zNǡn"Xfq-q:|Oj]F9w}TѲmO;om\qgkLe)M#d5'cI\ߙZɵcLocr"XòM1r..f;X3Em.M{ kzf Cpb+k.v3aV9]Fa/lîF0ejܕJ-fG{(|8¨ߛ\;GN{k-2zxX Nn?#nV.6v͕'^|5iC˲ BZGC\4Sn+y1np7#<1lF%٘,pkK -yћ(Yղ׭|m`,َ)8/ Hl ʘ&owoUSLpmm{rCu:q?m$ު f? קx/0*m~tOnB7Yuyqc̞ n+qRSc$^d{Zًvc2o꺍I&\k $#ff|:iB]~"3t\xS2VUokj:+r,;Qf2d;Vi#%\r;bƣM]trYWknUeې; 5H6_8-2NI-q@[v_5BCX!\_o ]e0Msanq\BնO -kMi+lsW7xp[YRoy:̝߬w'_^^i=Y{~ YjFb#ץݔ=(Kí2+ҮE MΚCpB6-B.\+2%B +݈Rrz|˃9dcOv WgՓd.3=cDT._$;4k!2o*s} wF8zŦ䝧tqS֢yF'} V,Y6f׉7ux0m,p3Ս[9msٕo o "W&{T:|^@tʌUZ%p۳0oYrW4nD|_moMu6 ׭謴5[Uܧ<;|XX6emvڭY\fBUkf fP>yǻN. .Kga{re2f+s*P!D&oJrCa\-FkHQ75J=nkhy6UK6FV"Y+9c,E.`ƾ .ؑ/>i Mڋ뜃dd oZ%s[uJ\ĥpٕ/s"v߄h'&{=2^l|ۖIٹkZ-lei=1%@DO7/M7o춱z}㟴Xrݯ *S)XQ E-$q;]fgqi.؀.r|./Gt(HDtl1Nؚ t/jK9uuR&jMburluS}s˜z4y2@u~XU^gǎ&Ȣ c[e#oċ0#N;fpUV{a{%˿+ JVqMt{KӄU*iŶ\)YT&83*¶JpO+lHl8-gՀngH /C=^-i/3kUh-O>}saer9yNF18crYZe͍ǎ2z4w˫*W}˾"Wo3\%YN_Vޣ㈶ڠ:'NT "Ǎ& \K:\q\; Zsu^^rDә]"fD!:TMI>ssc>Y,bS޺8qNnx$C-GWg8&ͽ*x)lr0xfkur}mdvٓ?h4w+LW78qUa%-8&{)y<炕>^Bk[19W6M*]Z!3RVU=mu5غ"P2gq&lq<eoBҺwiG6KHZ|?NX xXG cSKZlıdh\6\֭/s&R| koI%c;]p\aͦ{K5 hl,Sا׈lXN{]lNdsZ3 r0⋈mg.XeP/Y\gLГĩjfqeQIƽo+L3A֏)~#lZ^戃~lv|Z_k*k,asފ,Y>PJ̴PJ{2]e)Jʆ{'~0gYwBvh}_O5H&B}O!jfyÈ.&3U]ZfS–ãS+9}v]@x!m6'[]ߖpS-m!L"m;M6o>䬡_NfP3QtiҮR0gT`l\F` *n#oeyAs_ PAّrǘ`:JO>F e5rl/9AiיA{6:58[)E#14eU_xo"RƦs VwH=[]1*\sz͈{aYbc~}lbVZs"Y.u8G(ҙrs] 6+{썴r؄S #wP<6"r8!!.LETJu=x>"a&84˂;_Xeegf]oluU2ԾX$sۙHwdֱs&d~dV7n`]{jZwGlg;k9MM/g ?S2h{;Dҟ!a:OQ,f[^PY4dU,G"Je3_h)|u]Gx~q`t{@Y8܁YgF̦SM]'tycWQYWjd:ObE/Qn'FSA6᝶߲7 ,e!EӋ] 0$F@$I\}zyE`˔]qcԭO$=|8#׮^vArid[1Zte [պB qߓ̣eeݓ;-V7zchȘ2)~Bkqk*==|jڑk;Hg{8,Y]6C>KKZn⽍ɘN\z H.'Wy47ݍ )Ydfĸ9$\mŁ|QoΤ ,<6~.X6 ÍLe#IKW޷6kvVY sm$Ϊ3YOjI]߂ P/k>O:FY~}r 5~yXHjO#p؃.M!uGnx/34fcE9b"ɕ#OB:p:lbn?i!Tziat{7n;IA$kzrD,٣g/Ip3/V@(5Z&oK߶8DJ(kY`\o3ambP+ }uE()6k3oA%"_ ~ L8UnrpvK=vdwҽrwc!e%fK#AmIuW)Ͳs[Z9Vom#3+Yoo3푭Ϸ}u [tZqc?i {xI.@F=;DKwnʽl/NK*6Rн_:d KN(fKWhjYΡw8w=&=F:n"[g70~Z ZiUt3Yt-pfuWǎ8.mUUx.!E/ְfovE]f˭&tO8>0vovob!Wq%}M5Q˒.#C.{Qw/|"1Wst+LgGFc-,ZS'QU;\5'm6[dQ}b._f]ttjrw4pE,c:D0dX)-)]x3ıo!%nɀt]o Y9[Rn]=I-/M⬽,$\^GĊ9cpڰ3N r։J{JՄ8-FVwkIuFFcwNӱy(]_z_G{[]F޵:YoiYML_+bw0,3EziVls0o~废8~eٴ̾s`m(j\yt۰0rnŹ  3gݲJʓX[g͓X##tMahy[K΅P6p;K[ =quan_k:kL-zCNY~rRktJ7tL~[DŅ=Zi^b0|~zf$Օ95mf;+e:ɥJ>)ue'%+;?c_/ƶG)I߉ZeWPGb! Ն- ,k do+k)45##cUշ30!f׺™N0ܮڲ+Ŀ9GlT3LIQ.';\2MѦ%45 :- UjshƯ}`w-Pӈe١ǯo%?Km(n:?eMQ-orE`Jx;bys2] 0hg} kgm.ELOPb->C>n֛\@czs-XWs 3+\ȣkKf})^cLu9 6;5ku=E)Z:jH+i*m{ g뻿 󂽙= vqIY 2x|p4cܬp:Q &[`v؝E{SZ\ljY mEΆuv'`k@E@ٲbXJaypwS#_=BgxT}Fئ2b'w;'k롋)yl[2y)[dS#.Vx]*EE޿[Kf}j I|ʖY /Mjm8K3p[_䢱-[gD}gl $lUW-fqҊ,dVwZ,4XvO7W%*1S"Bj2cmkRf,[SM">sj.Nj j3￯+ 5 mcjMtð,^(iI !MMƥͪ2EW6Hs$m6J\0!JoXŲZEH?5fK[[ۣR~3T'{p~Yg͝xo%3Õi}t1խ!2wf*}ACWr?m=E-夢}eѰv6^l3zmpsQRۢY\g)9dS5kON= WL4n P!~ kX-DZ~f-zBnKXF_ e/NWpXg|5 \ inNAjfoB(^&,UVQ\/zKYqB4rԿo] :2vTM+:I&S۞K܏aN=˖jl˔+va`Y+zVګbxl1(W3@ki8=ei,d\M,f&6;+½,3\MVv}RvKi.,SgZ59;FUkm>pYm^1Cұ}W9&5 /wK+,7Nj+1ɻ g6vZZf}b2Is2xD(kהM-fQ XW9qVW-&"7+PY.1aZl7)਌t+̇՛S@$9i~L]ᖮٶϴa!MKͻ,|1TJ^ָ|6\2Mտu9]IJzt/M_qSקjN$r >.ّ̞jE@k|=tz dm*k fMiu bQ9\*x?ܦ߂]96o5Ku~|9SyŦQn,uh}E5v nʵA⼂~eJ,7ȆT{jfW^^r eڙp۳"FDUVCw{G"5Wn]On1MkWyPd߸t?[]ՖlhV7o7V%W"|]Y?ڇOM9p+H {3e(mSq A_Z~MQ WU[ [ZYE{n_a"✥j֋  CW6*vjVѭ29R13Ts OKtb YN':ܒX_oaⱴ*VkVdY7j&IZcmWg+_L\8o,G P湑/%c M)Ӫi <s)|D81dJ֒ʜwDƨ~g ,E  u?<)Gih[4x4Cz>LJ޴!5V{RlUw8]iV91Mf r%≳rT?Ĺ)`xPsYl 0$5>j5xGH\$[vv*K]Ё0^3Trvߊ63Evꫜ{C&R'j*X6 ڛcd#ڹcNhwy}>p1zjUZ䆟l8G0o՘5fi>5ZoȗΈ)(tE $ߝ!'XLTel~QUv7xlwooEEJȸ`BlƟ0+1do M]Sq&INݜKҦ:sUƪՀ[;p&fwΆ[qXM@M@,V^qMGs[ 34:kl(WeA;E,7i>~| #YϯrADoNJ.s~Ɯ+k7Жpx_idr26(µTKZv,.KuAlmkdPɯA,|aki\/Yp:9X.*}7Uvy帮Ap%)7gM2ƧkMUN8-ӳjd^Kf>xkY6FO1ÙoG%⺶`ic'fש9-u #\ p!#QV:pA_3Ɠ|e##(rJ/QfK91>/*C،ҪoU\PW]C֢&LZΒk czO_u*vٜ^sM1܂-`3-mhV>xvK|i`cp `CE+>Y5X0nt}X\*'lx=;)>Y M %̔?N2Z+)m=,|rCb(]\f"vcF=HtBJM2w_ S`Tb;+),8p!k{iZeX] 2L7hJda# fZ8J)fS;[QړE475"bFҖʪ2|/#@J٬n|bn/?V 2qQ;6T錟|V8g?nhM.%^ sP3!L+ e mEd&աvX/z 6k{'@ Wyh,`ب!G.zQƏKk=B>Mȴ9LlۦVVX* h]Byx7'ݹ+Gw]YVw47\(I z[/ϲpof(Ѭ1:j5^+ Ȥ[J:S6>%z]nkXVh{yKKK'.`I;cEY/W$}m;MN8*W6j[nTVH\+;2GLUL9Vr}xG1|HvV#ͺ|qSe)$ rޤQ>3D|6Rg]6{[lR0fVk .]li!K #W&g;AdkzwybQe+Z^eMuj숕ܭ&" -]EN;m-VKb$Pf1m;࿵if`<4x WWw a|O|ko 󭔳T_;8J1r*>SMl|VR%[ [=M;Tn.Rlj()2lek.!Be87lY+/*fF﷑?[Y^ɬ 4whIsu6Yc_]rnT8ܲE^Xנp}aCKޫ"vL26l 3L%o=H[_uIVfYg;{6ܽ98YaDpk+hhfͥ;KٲMǧMvSyk}: TJz+!{<~fWw8W)'^ȜRaKwqO uhƥh}c5#6B^nK5{k@rBxg6&$2qT LqUQӳTÚNZ_SN2Ba~U%B.uC˼]K`vOy^QQ~ŗhйm%Yb`FQAOJX)Me1e 4ZEn6-5^. 4iL x-2 7㗣dȝ#ǡ8O.s<_}E&aY.tc5jԅ4u:eN+#nghHvt0PگPW^F }& ˶*UNɱa@Ģ Ƌc)UEK.mJṡlE}=F˧Cuؤ2:㖇h$WVڥ4).?2\@A#VgQ:U3^Hǻa/F0洵eFGZZmkdLէ:Fw#Tp g21m}q^ j(cӞE5Xgm"{i7fs~oils+mJ}P\j`@7Тrs_j+CʫXb_M.sP DҙM"=M4qd,.EDSln ˕OŮ.ekMAD.βrbYSrpUP2 Oߕ K -lM꧖M$qbC('- LUK`c+SqD$,S[UK -3ѾўWBpQ-\Q9DXGg)b%nέfs6η*VZ[- L>nG,W'Ӌː9@_i(QYx-`u^>A'ܒ9$(YF6z}[U4*zJ U] wiAzAvn_EQҟNkc-66/CeOٿIOR͙_-+cx7(W ets#[۶⛙q BH9s˗OoI[\O/%˾Jm}AV\_mja6%RWkɡ\_Tv6&ׄv[).<}N[e&_`T'H;?Rag368KRG׻5z >-vYL\HTvutV+ڹm&zFCqK:1L eI?c~=FJFb]n'>UgQ;DiBE_\D߄M܃Rv,^Nm<2.{ >x -2^X.llmW-t5U/1*.X*mz uzZӲtzRWZfL|4&kĬ4{7 d ^l@< ڐSJnmGJ$5Ze5%+)lɲ'O7FQ٬x7 [5VO¨U۸#AVnUҦgKDRu1de]z?"ܓ{WU:<*tVBiڱ~E$ 'nx F/SDsG;nn,5Z) kL9ػKuQ0&TV6zJ#ɴe,r&8O>k96m0]?|cæ[[_LW8Q廚c)"떈&U%Bo#a3AdRv ~o)%t_Aß.Rg.i,LT(3b3/&Ȕt~XEŚ+q'70 3Ed&G:uJkjLfas/+eZ݇xE]5UUBˡzmU߶4QU0;XӺd9%83 MV-.dgRi4ǓU&r89m/c+B$UIذ KjgHn`Gnv%uLòvσK9ƛ[~9BZɍTq +XmHϧ|__0ZnJo+CE0ca2e*}v{(Qޞj$c^@۳!&ɨ^l?mvzoEZūTWu;nG#f%dy+i$Mങ%ߎU `\\_vtx XաNo2bW1=ސ6Zksodwvs*Ƒl8x'ݙyy}XG6Wc\LFvvg!W6N@YPG¥X=t>6| v׻7E˚'Lލ8|@W9aU*[(K,,sMCz~z-qk/K RݳĘv^/7DΙt;ma}%:nUϼt[gɱAz^pS2mTniQ%&ɾj9w1o(k*U|s1dli$R {΍rp^);͓POp?,,РaipQޑ㝢`$ [h p+ڸ:kxo`OپyQjz8iwCɒ꣼-]LDfTث7ƫOǷ|yk IWsVΉ"|!\a~ҥn8WWrަffNE\RFEBEj'b$WZf9q2Z M+>:,f2vTLծ M<9H<ԳΕ{+؊Ѳhծs6l,_@srN/wκ'SUsyJWC.m`FmzKQDOzT'IMeZVm~Q2KL|@6l!Z|_Ί {Qv.Xܷ̺(sM?b)J,]p59Le_p!!rUcW9O|}G k1J9}r9iژ&1Ur *Ih5Bjkm"ۈٮS//*qAƉ-caGo3]G?CAGIj>ڒ>F*WII+w&A-Cqneuqu6Nv{^A=&d9pMV LǠ0݊I5i+9bXvO9pT[U"kgh x;5o.O} Oe:7& M,2zG4h˞Bad2B)N@͚Dۈ!kBZx5-IL2Nݪ2vW65%|P7ÕԬc-RB k .sᩡP_g+Z]r4gZ1K$]6Fャubx0ڿuS bR6IcAR ]DrJR]֝%J"FJp-.J/٦1 [rk+ *k:l0Z-^2@Bl&pi;$׳f_LDHRz#]2*`s:]v9.-Jb<7>)#K+;'tewnԦ BdK+Vٶre2+I@]]R` gW7vn,۲ފ9osY\v:|% LG_p±/nm&+MT˾*ԬLa+]az/& 5Ynpe1\1;4} s[;R2/3*5Vr Vljs%Wbbn|˜֝W,q jp9^^S]j z?\Ԥ bEU伯)'y Q<!ʥVM1er?_c\;p%P.TtX]Σ2Mt]hz \k0Tm9)6SXͨuq[dsvԞ˪(vLߠ_Ծl(ٵ.4E-G ܆֡aʹޚsᯌ!Q/fIo4e@u򠮀nz_k]l^ՄqS.^F#Q.*xt8- 2YGO\kjĤ:mLH P KL 퇻Zj^W~ Zr]'q՘2`?pCLJzU3۰S2{\awK%0WȅlWioVڈwԧ쫕V3/2nӃk\8)!Km_\D;{K,_UO~>MY`ljw,su|pz݋r=gƹU>O>V*lZi.CxZ|xW6ՠ[&L)qr' D|6|¦#K 퉩$++9qS+,7ɰz b++dnqcmmR%ͼw%kT ev%Ȅ1"T@ZijmcE\]xtEZ$5*$9܅✆'ֻMeA >.A(?gMi> Ϣ- !, :W.||n2^<͸XG«~vv@%Sc+_ ++)^W<Ÿ bm?+ƼnKc^ ,>ʐ4p:e ;MzR۔㤫ɸn힥kvfiqO7qf9}SX2*\;ͪI~o40sֆ~iUMތZ>n؂Zh(%e$PsѶ\_Z7Z% Ўu3.PsE '{-*UuƅXɎJbRJwȤk݆r]"j-,WYsTߔ˪^ZhU`Bn`uf5~^-2̣v 4y>RcfQerzgSH .ͷvڴKjSb\!Iì=F^NhhCgtV!nt8o>iYQ)3\A%jt}ӎXbU?b4CJa^-ZET5y V {[]Z.VsaemZ%U%r^a&AL{[Rebk-)]HjH l\CJ!Y[Z\ty K Jm>^ts;( eB_D>yq:z Z2SQݴ5\6fѧff?ԬU:NF0S֮'>ׂY8V{3:EDUkW0j JP5i*)^F>M -B[?ы`5-/E*7kCt)FM^ŰAeJ p狏B>kf{g,r*L}Nf% OWgbJK Dƒo e g])[knȾEk4IZK(U>ʾ"|Wzl;(l6h.j;J c Ϟs,Y)2&# @ttJyx`mXA?Y\kӍ(bOH]_6>- YJM/=Dž/NvB zbaԵwi#4?KU,ͧ]ע:ZŦX\um!״8C64#d G[nkl(gX>j2?tS+&DKkMsPͼ?{22WnB,{u[ 4rK uJoʮ'mehk #L2vyTd}ZBb퇤+N"@=C*U38Gﵦ#Ë"]}*;Bp 46uў'%;33darH[[]UQ+*kGiC}κPg+2nkԅƴud MVV;hXj%@"p+U8-21ηj\]P3T$۞cb>rC*rw9G-<.?=f[wΩZW&1ߞ>C [TgTM+nMtiI2g iʪnkG-~3ëKq*Rԩv)]fK4)8}@Z]]~g:;HD~aQQAlF1ϴtyYӑ-*a綆ZvaC޾И$tghuZZ6[߱ܪF `FZ^x-3]7 AkǬ)ӷn#vwS݄%q϶Aite/x<*ҕ{f'$1]K9׶PmD)Y){vM>pS$Teʜ<: >f|ڸ%ެ9P#/ |68Ê=xS=to*Cew1ťjqftԝKKݸ5ʕS魴UKW -6aAO@c8 )W ;~ڎݾpT34ww] _ (vLuu,Ǫs tlح %NuZe_|9A52zMD§[b5Kk!8%Ub+;,3*jի}YwDSϣaXfણZM[ujjd֞rFXY+&ܽ۝39M%I⮙!?CPkƴ;ItUG>}3Pvds4jJ!Cѕ^*3CƉ[z;MklC..jRe3B[zePMf5JCѫ--՚7CoeRɮe0W,oa״'!W1\)Wb{H/+X\m Ug򈣴="4ujc2Uz-,1')qj6 ?X,i͇tKl Sέ)[Tz\z˔J߅Ct]Pnjm/^Y~71 OFqe˼ k#N7asښmm||Sؾ Q*֓dktrh{l}vH砮OuzuΨ|7h_1."d֫ꂏB2Cg>ĮyV#vJ6 Tjv v' &dz\ջO)c s,TZ\Lz "ΈڦR{ ]}\16!Wq⮌Uc-&rF씔mUݡ s ͶwY3I)<i)UmPt&ǭWVl~(,FѦvhMd3ԯ66,+#u]]ޔ:ym?V]!(vyJ{~F chw)XϱIߐj%B=ZnR?aT("kJ(tcj!R/\kveŞک ^ٌқIWH 4nqBl/zOu yr$$4눫igtfQI/6y^f#;S2PL#.cY{7;pمp|UphH D8\8]"UnGvE-ͮ~nk퍤˰"R=}:|u{=u?sƗߌcAڜJL^ڿUݬ6G;)WCǗ[-A3?m,]Ve`讛J;1dmsUsA[feR+IkR㕶ĐklExI\زiKLLq@בބ>EFE ׹Bʛ0dD?xzSٴ_U#xMA˔JۍݛTuYocpn W74Gp'B4yk%;ˍ 炒^\_vZ#\iN!޶.hq%U5N3mg!ne(O SƓ-$}QR u Pӱspfh-MYþ _yL/3"v{ye^]¾S l!t,96TF_,4ggE#Y^ dWZT9ZVfsڲM\iyuR?MQ./pm2++[^z߷ e r9q`;YlWd:*UT>r;K7Ԕl6^S4eD/q*[ N!]hhxePfu`z0oپ-Z(bvON#hڣosl-IJPG7ڃ<lnOTjjeb)5WTj~` ]=EQ.FXw2 T=iZ"TmrMrUAUYvL;3lӅWWU3NG'~aҀd`K >"UU);.l5nK_&ś LvB*{檦QRꊴ Kkz]"DhBm[J{e_OfHeonq= X`c`NJEofO18Ӷ3oT]I] L3MJ>\TZl]U{ 6t 5~eN[լlF$LUz*=\N;RѴxsUڰm2B*[]3vJvDgurMW&%t:̋"]oӰh.nKOٸvhdi։q[չPd̸rS*%5SCfޥ,.{rZu64|#c 1^ꜞm蝧:ArmiAe*z=DN!©Gfi(^_h{k[qz]aQot R .D`D񻥅Ed'ud!ȃoIEơEpZ1ѢI'ȻO2k l[,{${%5NoaLF}a궲̦bZ ;LlXSm5]Cp2Q fjpSq&U?[xq~szReJ/j9CR|Hd}4CZw-_eAe5ţjvddV%:%mńQ#ˬ.:62eiF.A RgK\uڷS+qe(!WQ_#IJǝ9?7epןVM'@v>l) R5}kc'Kd -3\JPpOȥ[gSVY'fUYpTOs:NS $+S<֥Ҥ?.EmY)2W^ѡng^l|Ur% W+׳.QyۦRk}8)ٿr%FKz-͎NIpkMEf:8i.&N0[7si% Lj.uIVf I~`*'$X:+]i.ٞnfuP9\wTknnm$C3tt/ P4itZ[ˢH9U)'mhV٧McIJr+o7%]g_ԣ<ڣM}0S-UOwvDrS-r|o Bl+2}nTj\N1xiXq2F4\yJ{ P/psk(vDX+^&+: z.qMZkƏLR2 1_wvQAYȟ-+}ՎZ#>G\BpsmV 3 @}y!56w;vS cuB j"e/"Rh=bٶx){8hB#n !S5'W:~|슨 쬜J&lre9vJWu%U5kڳR#kfw6V٦޸pL7@D/ZF{66sO>[eR$&7Y_l-Y=E^OH+:ml*T_**Ql"kϭ*32iOxN DXoWi:5Y\[yz9S]df"xU-p]u0_^S% _1\d N]h.]bmn:NtL+uu6#W-ńSiNMVW"?my]nmmp=ڋP|ʭNg:/'*ل1l!S:4zg+bD~ob;H1U"@NN^Zt *2vNwrqW^бs1\pZ!1sK f߶Q[*wt-أ#يۓgAS*Sƭ-]L򼼘dJTf Ej&nItVZ5,qڷ^3]SMv>Uʔ^J*W+f+NGQ㢩@5Wَe$gw( fiүr)gᔎ*ZɪBӒ.s^JmHd /Wy <6C0b8{JE.F͹4R)̗5C[!uXكzjdEO&S"g˕*g{\5r2{6t@5uDp2ޒAi1BVYfn{d-IZqJ&EϜg+R"Jܐp+KڎjwW%hFz;v5;׻DR볓'K +U깗kЙdU0ʿ|,Wʰ.O]oSgY4vT5fTBqiu` 2edQZԾ QZ*D{*:?NV3ÃO]U6j6C)Ja#.N(76j Md7IV2Aw_Ůh +ugk늩*PӧWi68Jd{ eoV ϺM_俣}eD:8{-S/J)x@# ",zqz+Mga`$ǴsaR6BٛMo0#z7=IW4B'v;̀V,g8{Ίmt6zxHN%{Ch~-.>&Nq pvLB$m^ {(W*@٢Ku-S^{Ѵ݇PͿC0W0V*ՆZڬn۸SIz15l7:>yQQL[s=] MSYT{oy&ID^ t{JegFӱ:خ@"z/߻2e⩊4S|$fVX)v+*]ͫ<,Gu5O'YB%;z2F{7&B)״GѬgHá.\UG#9Cmb鶴|zWEG*o2JχRSmUK%8`tҨ-2,-T[Nųز7#셇Pꪘ P GgԄS-5īF?RbL %䋛\ܥB wLYѦZ]_Tԡl~A0ޕW/lmĨ ˛:):>ԞDxLv!"ɭ=*L)Qg2\L'Quo=veQiktV ➟A՘Li6C<&.Xnpl-C52$̺:5VFw>\_TJfh:(-~[M+lAVUW3,6ITKsԭPߢKi6梄qXG_TKB)L{*1s ca3jʊ6$j4}Xhh]ƓFBpE79 hhP7*Wv\öVו5uNZEi -:WdT|OiKnt9w_mCe͒9'^ lT4P.#KrJJ%>.Pi&:M0-t1GTL~n9Ċr`GMmYڍsvr ..⭜.ڠ}W -Kh4\T't߈L=ȝ>oVhL |YTӷguK΋zm?-N_ѵUn!Y]GDC:y5=ƌ [GZ%ND|dM[PQ}^[7%5T 3'6Is+NFou!7\V,ocm]Iªu貿tW[]5vNJ\Gc>V}h žv[PVkSp$zܵш(U'GdWKZC3נ+ N#Vo4S ñTa0mF)U: q}%SYIΤUkl8e +|84Z_ B `_B#vYZ\o}_sKt3fIA2u{*sO^Xke u)EgQ^Xb.Tezڷּ׵4Gzlz+5`C9ՖgUJ9 m隮 +Euw~L$yZ "w`2}J{54جS*DȥODRBEX&"Բ6m&a*Uki;^)%9q_ޠb\<< ʉ+ؗv^IOBU {fS* ʊR+v(xclNHmP2Z`Χ]˫4f">UIdS]MTy^A=٫aQ&H0_'2e-Ze0_^emU#׫%ӌIQP견 xkgL!J(ȕ{^l ʹ-6*z'JV#1Y]6F(ʕע ی!(wW1Ȫrixr>r1Zds0zhAQ̆xm /B9^qP!3\ :dk[FZOtYP .&gM* a%/97Ŵ6JnOfȨKK+HtoISs*aezA㢣*IsM,ݖ:Ts$5-r|wAvS)s-ys Ҭz =`7DDol14Oh6Բ*UR1݁ZuUa_ԟ%J@ᖃvSAlYɭVL՛9.3|̹.۠CLۗ]IJ)ůR7otD7~\D~.q\VUR6 ÃGH_ks%i'ZC%wPat :t~{ROw'uh$Qi6Mƕixƶ+mgJ..*B6F5jL4~JVW~ZɈ1Ȃe\uzvt [5vJW:u.X"~B-xz%bm 2bփCQV=MlliR^srQnVEE >ڲ8LUr?+t\#KeFMVK,׊md{ =U؜b)[]0md׷I(W(ǥHlUh.t~/"xOFW 3hQel]Tӟm"mmA5.fO.BdxUJcdx2n񦗊AO21TyI~ʖ8Mངrv7_ٱM-Y*wvrpJJer=eRm}mmhVqHHm ',x*}sMVf;RRoz\+L]t,6@hgXa QѼ jIvqXIXT]U}UaNa쉡DL]|FBz9|B%*DKpQX6s2E\]Z2UXI2N$ڶ$ Պ4Z m z}Q}-c"ҝ0"4G[ŢmSk)H]L[,2kBcliє+RR&z6Ը#_.xCNu=ԛ:nYju91ԦN:՘SвV FyUX\FWQoև =lOjn=G;:])\4Unbm `hŹG3MߺE=,yݔ2R[^fY^O7(!T7{JН 6ť JT*iSz/b:3UZP6֕iI;q lz\6LӇIj/VZ^Gc;ZoT5Jp`ghJ_xa8/UVC=i2zRb}4 :DU[f9z4QYö.1sLWj9LIvGݙEZr :!Q*qk0^hZtRz2Etz9ȌNO5&BG8s0 %A48Kk9!Tc]=P.*EoAxdՎ&*)6W B[_g뗴R+Vb\ie2%V M]'_3LFuYz=~I%yVrZ]1^GK"Wmqt$3g"2[mt׳ Yof%ZK0UWuIWQP.fn;k%+OP넝y]1)p Cџ8JcZS1X­E4!ӥi}WM:EgfHI5h#M$gpѫPUΝ#%\Um ÅYcJv޷{t/[Vo.6oϝ=JƅTKʮYU*D[ 蕴Ov i n/C) W,UFV0F?~J.@{|jHF+z D9v̺ZoLhU)U!U;郴H(]mLzng@)i H Wj 6{EUX$CuBќ)FʙB=_ٍIJl]T8M ZTk\sUf̨NMyW]&62#qhr|\f̼6q4Nk g-A: _6/SI 'mp K*5I4@;yL"TB:-5j2Tw{gM֫vBsb =hh2=֫VVOz/iԌ+ǭmq˜A5i :ٙn5p%UkS%imj̲vU*b鉗^>jQ3>) ՔgiOG\fn:=WڽX*1Tu#Mm^A)W`[v B[ K)iU *ɍ}D~}:ư[Fn> dPmIT4au[>m^YU߫z͉6TfV-.<kr2mG)V|ԡlRZ43+zd)iUj qO0MZ3/IUI_ƖnZ^E@VV4ι˴y^4QEC :Dޜc3<ˆnͶRZx"~ҷ$ i]u6JϠo A dV)D:9Dz՜ jQ;c;k$랊CΦZ2q S)m]a]i3d{Q4j)U0p^ӎU1c)ɝ xT'x[B䚳YJae;g2({tt~JYe.e-yUdKn(U7q1N tyl-R;/Rt-/nmY*FAd_֪;L:kq ͞_[tud$}hD8=2\ /h:˻3ՖWi5e6JtTŭWlIEAxC5)'_%&ʆ24~pRZYy5Z:]Mr]WdZ P#FmBշָ {!n$6WP2s&oqrIV[EUmf܇2,* l#@3gr)fJy 3ui6F$ܦG/&ZMTvЪ"`C:0dM'h{}'}+A+*Fו ^@eyC2UjvPZNDSV1et=ir8~!Ѯ%Ί5c,MQ'TΫ *ȵB\坮eN-fP%5NzT76 -|9YŸI%ϥ µZKlNI J]OVlh+;C [${UsSD~vJE@5b&qBT9|7_ʊNvLJ9&b7)Jr"%*Uӏ); ipK%za{^WLkuMUj#F[L3F&GjFN+_3-*M@ ձoojMKw%AzζmS/#j߶P!2iT}}a=T/+[=;UZ/zg 8Q}ߴo Uw!aݛ=t1vP+3ˀ푪t HuJXԙj k%Dۧ{:1)^WѺMڠ<+V]Pm']tAU՟kv36ԍJVjׇ-#Ьǐm,ݓ-2:2bM@oD0!VGscVwhu9~la/Seciq"閴eX&eW=PJ'˹ fXZN뱈nIUA JR|:#X 4^9!VvQ zmlI|MYgh3X%o:Pr9s7mMi?Џ!%` E[MNuʩˇ n/Kмwrzia0z梥n+Q81YCêSvIhF~= MuZ\ot́OI}KQtZIojnS'LӁUQ2TX-x#LqWuz1m~j«JOo=.][BW#j'Y1jMn~ˁIEWwބu$vfN+]iQISqZ,_B2DDY]sixhK0uw#p͝aꯐ6fAk'򹓾jNBFz/} VIE/D/ SԊtxRQ-o[4~ɫ?2bH-ʖ+8kԪJم핕X#Od^lDzlDyYS+xb\./t,usyurW3"$ Mˆ;U%\-h^ zW$↽lHMg%x)_݋>Z$-^&T_6Y2eH%v֥ }Rjxh{4I 44z4Ojdu<~2Y(>sp?ѯ^bo -/lSmD3h2]l,iV#Opj(-.O]dN#\yęUN}}yyE5˿]5w:W;t': D[[0)e& +*4Iڛ}..A؎5"ӄhܦ*DhBRe}[mHEʯTaSأGڑ=, Rmi"dU[93΄Y9uc89S1zvr |UJjmn)e1îTnƞ~*O̳*%iА"W؏4z[ i>rDM45%mU>fKf•+HR6ݑ)G n&EUdjRJ>KNRi,@4kIxҊeR.*#ZT],R^=ZUjjRd4ʪڳi?B ؍ [4qQ&Uj4HKh%~ԮRn/F+5b: <e(9$OC3BB 褲dBw3":mFj3n.I]#V'T]6I UU+"\UQIVqDzLyV&M_W om[&-s R߳ŗ](!SM9zmw*ds#uZ/m\Rr= /c#&߃6 []NFUl[}Jnmn{Wo銲4=QιDQI/o(Q1h` 6.9V' (ͨUgM2L!A[5tUFT%"=^txwiDɣCSVqc\d#h^t;_2FTK̉o"]CDŽdKZM4U!{yJƠK5W7Ց:]?]_@Dz"FYn w)'՝H)vFhÜnGOӢTc0 ɪ@shjG0۲`¯ѧj(Z̪rDaSD\GMɭ:SJoLvTpc!ocN/jv.leQɊSϒQڮQ6U=p,R1YRPcOKWպ>+$^T]8;W0*|f _?D%0Fr83cW4͂z%"U+T+αv# >KΕވ"1YN))S#-xjG,ͭ/N&sʚk6rEY[\tKY^#yIfc.Y]JTtPY`(JzdSyDh9 hX%>lٝ4TmF-Lj]NJDs\U'K <̈́wgnE<6쓨+SK*+UE^KyL;/9tQqZ\؉~&IǎH3I]ϸt T , cFäLJqeK >[ѓ?E:RsR 6fZ"T[c,.Sj3D.U#,"B(F8LWsN~r8^)/+MLqENE#V/ /iUNbr U9 Xtd`5N:E֙N)8Q{I0lhp!L󇭺s3NfC S? yEϔbP$8Fu9 ^lL*Uq Qad7OYr[D Z&24y)Piӓ`,nڭٍCK \@'GpLQ|y\bybr6sIybshYZ֬ .umi놙! VK߉+CJoVU P{9y].JެL$^kW 2YŌ@5Z%YT&fN U7Wݸ%=!"~Vl!G%9ЕUeO?]аUnkywYQS\$7U;UfKC69E̙iSYR' HgZ\/iWFj~ʡNQj꘨fFZ.ӦC jXm&H\SM3MltQyS[7nb hrt5L@qK&. u1c8F f1m>| vJjn5!`}~̜jjkYVIܓ"*5UXe.Z6JMUJlU21#TS"#MkyIUL5 (YvAIn} j?Ф$k)nGב/b☆—/bdb1)ӕGa )2/vN!,&7Mգ DW&FKdՊY M&UuZ5w=61׈VеT1ZtZ[2e.}R(~q4x:+<`T\Lǒ#:8@1Ζ&Z;T*gN\ Oh+]^FT@b(-X^B0Vn&^6OYKc^I'YӷJV}ҡ$3%T#*^Tj{t?YQ#bM˖gSDԴ6k|)Qɬo?)g `= ~zB dggYOr:HUq:Ҥ*кr>3& &v=P(?TV|m'S-p&9x-9ש+w ɯv9='~#ZMWnU], vz-2W$Sɯ?4)u#DVq"Su7phаXEY8Mgv[{r1O$ MCMY<|Cd#8*M1E\˪(hUߥu_)T.jt̵a \ܯ HѰi\yYW{TZvQ VɢB[5bB?\ULrt+DYQna1Wv.H 4*JUJ@ioXCia*~aZ߶-zi3ak~<+;tWYM %0HM`\N5:T'8$McM\Oѭ$ݜ.I{(_UGzmenfF 42M1Oо:\Smh Ԃ,J?VBM6+1)=Xdd5dmirX"k.qN]˥*?OeZCUӲWj|g3V0YS*okvR(F#T&5GxL|םnH`WAfx|N4c$ 4GӓTa$jFr-:4s(IE0WN7MVJmbSŽ<`<3_ ]MNun5gGR3T AgYCS'kefPy 0pRgzU2#B L]\ͤ2$3IڢŌXTijKeFoCK\L sdkIݐ UzRȓBefwԤ~ b@0NOkjpE fz/U3cyWު. җߴsa$U%[C'!9^EJtXVA,f}r9T`Bz iA&!K$J[e0(radjt8t[zX FL⚾&r^C,ezWc ^6WxUV8sUM}1A%%Y'EjA'4SQ'غ8 ^¬ Med}4:T6 NDd71Pnajc5m&4LbGH^NAT*6 mU+E |K[(S7_tIͩ͗J t,wVk_ncwO\/UWjpOj-(]T;iQA uZ8"Pΐ.*3ͪjǙ6j0vH&COEn'Uj'XU&-@hP!ziwUdKUǜ\EufT8 kA ]¨l]L6ɰPٞ6tWgx.cm%+rJD\Nҝ@c,}vR<)"b}ǖ[Ɠ+GE= pX4VǩLGi8G1eBai:Zۡb#-WƑP rELy>SdWJkІ)Uٙ.NѨ͓RfJ=DxT257GYW>fDbDԌ7p\ʮNL i\EZF4((umR%d209QyiokOÖj+Ʃ'TX@,r8Ր:f;82ЇwPE2,g8Iy38JOVQSemiRD$KtUiYwp 3)zzF.pTk9,rK( 8ibdSsi=7* ލn.+IKUa(L-GI9|D3RUA _Y*z->Rcm*\.\GI[}ӆ/%VS}f/ReM$ugz|MiX/WfcS=Ft8(sJU`cdɴtWP*+.K?Y (?"_IrBnkEZ+q.*K Y˥U)U "\]V^Sa#Q&Agw fMX\V ACEAe4lO-FtNَP;S(@:[&+Gb%W_b\6M}OW4&(8P2@"U[r;ڜԗ*Y-Ӻȅ•ä'd .@*|1`$5i:l]RAI4zLH Urb}>"T䦮٨Q,C1KʊhexJq.vbq2<44^Ku;!LWTæxgpBrށ#cP*X?=pع'%JV4g3䪚U "3dyM& =T`/ N1/}P.GP}:Şnꛢ㦬1 ^VkfmZŪD:a0bl-f RaSz4t**r &gx}{p o$Ʃ4>n$s9]S^p~rzwa%"j0Gv*K ^ FRݝ3iIOTjtDlT 9܄(3=gǰ$<[C0b2BQe<UGnL47)2N.JU7ސuUQ4MSݰz )N3m5eY/U(/IGՊҹdDUw.l*;"Pq 帑:1U\g|SMR֗*wV^~TϢl-7.Ť >1lHڱ<xUWUByYY^CU]$D5AFHp:#YU GnYLo$wS&=sB̞ 6~@qn\.GxWˤKI7C&yWআXC[WC዆ \G?cbVFy.1nҏ3-Uf4Cib,G ヶuk{!D}H\\|APгR_R✶ߴ9V +1L&fʝPgp JWW=[UMkheM1] fBX,0 it#Q+ST|^\9rF8r)wisꊃGȷ%h."U>Qq&eψjs%rcLS &Cܦ%!vƈ&Q f({o!KTWf^Z|-iE8ᶜ+U'!]7T߇@vYvhJ!Ohs ԇqԘJכp*x,=OD?MSDܡmЭ9׆enjH#ZLtr}P*I.*I* &e%(1FPhfK-[3RFjVK6B?MK~%I!|iX% FWV kE{~ &©)qD3+CKKG( M!-˰={Ӧ3W՗y&%SxG,^Δ('_PN&X6&e>jPnubT1$;D86''n%+KTV'CZCq֣|)tjh)T.\TZ8f}l4u5Y_..&0\ Sf&Y;8=4pq`&DLkҳ=PNUJd1/DaѸd+Q#n `˰I6zCZ#W,/;$i2qլ hnIpX·eiK+Ո[˔T2Ө,G~':E* ;!S4l/ <kihʽROUZ1 6Iw8&+#D9Xwy[4/*tWPqzN!3EUYz:jm,ˊ =ȹSz0 =[a4ۀx"3l2q-ClFE 3uMLɨtݮI vc,}ɣլS)S|-GC7A;eO{4PwLQv"untA(V*y~yjհ ipY-(E@s*{x*LebޠJF E&yQ ɝvG+<2MK=pRr tTyunZ3J["!b@-&<J:e iF|IR'D h2Eהa$b j uvq8, SSLڄw3!3!Y)5viǐVkt FP]&-mFfFԶiLS߃4 H6fY@Մ.J5hޗ`Dw2cnZɥb0 ]ʂ_lʊ 8 TܑL9jK] \(*:Tn=m^6vQ1-Ӡø*MD˃O5a5GXItg>Ċ8l(?5s-ي$IŪM{ؙI7x !C"[ My8ȟTe)v%9FRaheWvc*Iuq ;a,Ceo*{2k R~D܈;e VeRғ\l01_jJT:$"/:q?8ؔTz'>~ c'Иed~JU0 LCRe,(tm8 ;"Ac;|q3Xhrt4(T (Pk);y2i'ɐs.T Z78$Kt4D,&UT뗍`:TK*8ʃ:0M2:)}9͉06A Ȅ: d05F:,}WP,~KFT' Uۦ'gM~K7Q`kYaBjɃ͌!:D7!ϓ̲",yRd9*>s}L΀0)&)fmlb;T7Or4͈ $JcZ74|,MFx%@ lrLI*.k2NKG>LNSt㛌61;Qb̬xգӛ=Y JuSD`cNh@\0P^to[K. ȵY/uX5L35]OޣL 'mUH':+Rcv˜{"n;8SIW vUrHWy>+9wE*g/Y@^W+p eF9ʝrS2}L n (6UB7U!DŽ{ܟ:]Ms΃4N d`,05?>ȸ\UPΖrq̷F'(+4b!TKdcfAt4>-׻2LwiOQ&F"4h븚#8_d1D'ϣ4d8B+7i:>{ T;rvJ|Mk՗%j^U.M+sM#К4r9^1eyz4EW_hr5]!TUڀl T`nVsl̴:Pcs`$N=`]NT̻nG=z!'r(t0D;-Ũ׊N:?k]6HgK 2?DTMj"|yWYT΅=bE]^CcW4zDXbT 7x&ٺԿj\Id 7jf Y$)rƣ2b[  Gn _Gո:[=C*OVJyܓoYd4_<`* Ụ? 6,Vjz-ve>%?Ӽ)ϰ -kHb\ẼMsYepJŸnoL'8'4~Do*&h5azD2Vaȳ,cz 5kthI`^326smVf㧅HWWC+ԑ&)($uiJMck(N3AjM)ȟ.D=S*]QuwkUX:6Tƺ7-Skz\e˭Чr0'ɶL*/aΠU38#NU+J3mP/!(3PncTv8FɄ9ӛ]_zB?"+w:?wx i L/_Ĥ< LBV>3M^."Fw]RO3'ѥfIbuN+WCސ6 U9&";"d#泭ovts6 KQ%V5(31D৊e]KE\iHEY&Gkt%in$7Qy247 N IKɰRpj3OFpQ[pNCoBjXuiujJWS~J&F?R}oyEfStRr+.=P*[$UD$ItOXK ,SO*KavI'rfR&8"FWb´Y 3 UIK 3E8E3[C ۔hMg!M34!D kjI$ekYP+SCtu ɺs’ӠWvC6))h>=%̘5e:L.yLy1Jx%Lk lf]',.'e+ 21q/[*?aE^+xq.*U02X~w\갏Ǝ#@dxהh瞜-OǘK]Y ZZR\itS*i-4%jJgO[ ӶQ#EaۻH+k`RyYwewF"Es,靖8R=p;p)&Ffn&Ffr+DY@SJFIgXJt-Œ@䛛hz2)D(Wk/&#K*kiRn|3VQRɜO;$Ys bĊ>+ |JLvytn妌Wu.t(@9ʳԄ0ʯи*5ghy B6ҟ]2rsFfvYqS# X3o**qP2Fjn*,Y*iD96/_3$ ~IцeDDo$jQ(z8iFmd<,L?{d:nJ]&M4pS*'ojev%p=suNpEyU"I7de0V,Ss-r:-Ox4ZGzܥtV'GL%No7܇jҪBD:$L}x ]|}$`XM~ݲ2'X -0Qj׀l0Ʃ&IhvQ V#rn~H%J44*hFVj'ׇp_˖H5ѪdH fB0 MhJYBT>k1#RFDOٌ6._Ci~ \ a"JxEX7L_o:tu#r'MW<mt O6NҕX$Tv&Y,K_h2L2cZ IgM':$j#,tyVER6LL-IFI#ڵQ {t*%&KsUh2sВK\`94jOJ&MqXOSYlNUt=r{wpHHh<6c$mp7[9Ŵ7}&dhGqG6՛jAEr7ҩxҙW^]'4̧(B)7=m[~0l-v)Wϙ= 9עңaN5#%[n)Ӫ%+ +8H'eI1H 4M%h?˅fpz>;1Yr+rQ`i[R^ٮCt 0 d5eD%gmٌ}a2O;ILiQ* 9G:QM?]r>+4=qw?ѽ%JѓTD.7TEc)w.3vCY%V&5}nJ}ղ饊G.HѪG恷1Br5$#Sw{do^ ɴ)~k􋲉1^ԔXQ~rNG)3zѴU> w_8g;Ef+j;DD:R0T ^,#@S"Ɣ1-5fބvmRmR ^S2t]JRhRi ൤utZRj3 AecH%8%N 0p眶8BKkmꜘ_{W9 @aTY+J$UW7東49͔r :ie(*-\I&*OqF-KL?и%jDW:DY"tz'**84DB!4=scNEC%H&;r텎SתrL41F8Ck^+-S6WerԱ^F. 9&9əYdMڿ̪2ĊQ0CHpO61Q?<,?ӊMnS"< ]VNVJU tj̨H'Vw2:k]V(=MN}!bL^ 6H\`St2C]RM9L!"sth+;JU$m,Kՙih1%j_jF?SGy\V]81L**̫8L-˭R`)#YZF e?s xQ ҶV&sz2ș/\*`LZT+aʰP6Edy6B ߟX(#8L/Fۦ+u05 f;g3g54 Q=2DIg\y:Q<\+e yV>A EX/[A*gT9 Plnj:NčL@d1Tr!ibZ4oѪa9f,ՔiH&I8d8GeF^Aɩ$: %a,었"2>F9^-1o:("T2%5!>ɋ*fvTq}\qLЕ4Vd&;GjQi!J,N)0LZ04&.E x^*65sUT/bXJ"1Vp>s6,t9X'2MF4~x.Dfׅc,Rl!~ӭ`iR6ټ0L! 訓_EgjqDwWpB7il0&6M B<~s(>,.>i1A7q._VR&gJ Dr#|4V)KUnE(1#SL4eJ9 !#rsqѧeM B-!CԠ!߲rNZQ8flKͷ]8i2d7٭Fok'FA&I1*Z/%)wx-CF45H*TҌDjr"vY>KaD053稉~| 9$tSFw WR'߆p Ȳ*JSs|7cwY&UOMs/D 2VއOTylA2(Q3ȓB*8C6 .g^ewZLg-^eRxr R!*@&AIpښz [P*RN7EuĊnhQkڊ-qevoPI1 ~Ni'zV%UK'Yf)a%"Z?p2|ں<)LFf7Gz LM;JwsLyd+%=P adj%2yo**IS~T2&>G'XMT %U#D3:Y<c>od"s= Q*O5;jԜk4uF(;Oi/X-+%ITqU\;[|{|+JBSY $TbkdPn!OhGZ9ddk?StJ#){Iw>:l1+S@B?eD&7 &GoD픕d.ǟzFιUxKD=l$Ch ^&tB(b\N((/bS%i;(/1bM퐥dUFF7=DdqYv J:LN-ei4UNO:c#|;BIE] "Nq$ifxѥ to*Jǝҙ˱qZ&͈&jLt2Ljr=LU0wХN~*?LRZ!|Ir=W^&ڥ 8m>cܑ#"K8dcۤTk+Ioxs4Ls0мe)(S'}\F k˧\$dڪ;,FǤW_]a**0v@. ` s5nܔdC[ 6I%RlĔׄua™WUv+F̨L sl #S{S^U5wOO햡li PٙELr b2MOQ/&ap*EϱrQw԰+Q<]YJ"DܕU^;TD\ve;[Yݎ:AE#SdqR~eyX#ɟzos@ʨ#_;I:E-ӺGǏsHh{2Z%s]0ϫr<)oIښ8΃E'nB tJxֹRe3 ܞA7MqN4j;t:vJ1cc'YFΆ`bElN)x2sU&yM&z,",W~fO[+2[tj;8N4cȴRE9UFuTMcb%$bҔe+aaAarhxX?XvKIIs?BG;!R*Q%׆MP5eqtS94'YAy'w7q&WeHSx;9ٍFüia;^ &@Ӊ?yNHR#h[*T95@U٘Օj,p (6L Gwi8>t$Ď-fZr,LƫѽJu*ģAi qh'g:Ah^(e4p~$#ǛLWUPxlߔLDYE`d"i ư3!> jUstاMV^}H(gE#̓w_5s9Mꤶr-E\hC`hyOܬWpI%轊|vf{>p6Ayϭg}a+.>$3DVme8TJKсil~o#5t~i'i5oZ.* Q~Ɨ!N4< qʅrЍ!i0BD̘&ͤ "z#g?=2c6bb{X)fKGS%8Ȥ\zT"FmHW%B4 BasK )=P3>YdyW&Ǎm2 %%8%h֓XR0 LMS^+dzQ'z$%B&(jH^{:U." G$Z"'16k5{*| ,SeG*T^Ff9,ps:'O >`'X(5NZgpNr&4%npE )K#ZP+!pC͢QtQs,$!vX%%D9[R6%w Je%ixi!-zNf( QuC5 rbJDY'4lރPo 8"yNu̪E`{ x sAhp!h6CeM7tSD>l#wT>!ZtmɔL/ńw աB|SyR6v?ɥҰ\R|+;+O2x !EeEhTla@` ]O5&FFͥXZ}xs |Rn-3s25(YRJh,),(A:'W^EڭU c> Y!Ĥ1Mƃa]͈Bh3Meҩ0TM"dhJܒma69`,g@4eDX0=X=yWff7EaO+6GPb>rwy}u}:a$}qu5Kt0*F"K&/Lၞ)2W('&pK%p@ 4Td7LQ4J=L, Z#'RFrl̤|Pe WD8v\~q pz8%ϻ2Co^̗xx ͦ)f+e{x|Du8qdY*SIL,ʌ0ENaԖF'KNvESD'0 ZLW?wV))&6\4;A{J s;;`$ascQee$Y V#)|QdxfZ솘S^{X'y.-C伂#7Bez;-K6ɹdd}%t-x /XFͨDWn27 rԊ ʫm9L=Ź[v9[f..9YE,+y ~$O'GyGxwr61mdn)sh^d5ǚ眫E@Z JWRFp&,#b03>+86imr^MĤ4EY'I=BsyJMK,Dyx c`;#FD˯XtJ1/wʫMq,Q \ z~Lr2,vu3lK?l$*7!.2PS#bcG٨SeMi>` +<1=öK[D^FE Gj3l瞐t ,PD}{ Y(8e>R<)pVwzhl&9[cshw,Ws#ҳ"EՆͼ0 ZEx/4oQ :Id< CWf ,rV61=wKIjYN'HއF[TAқ\"$94gWQhmNJo+cPmr",ʌh+xW.=35?%ǟA<׮Vv8d6"Ts[%&ҲsDQ"~0EB1N^6(' nZ -ɩd­ K 33r=HWA#Fn M.}`Kvߎ dcL3ZCvrWExHUR,R %ɔ@JN=6 |zoTUz7J=#<2b,qi+(u;mwOwwWF|r0NIa2M Z&!L6h#3#1}x`2Sr̃Q]/kC(jlv_cD)SLA;ЫeBN\}4o<-s_λ>'|Ǎ }a\"Py"|o좎=DR_"ڭ@3#f9PcD24gSL[SP̓tj&v(4OIqP]ErT8YHNV~29˄ E/)|i Z>xM.A'uT9^nYsћ;3b%Nu۱0Vi4[8Ed_Uq^]J4=`"_ѧ> VJQmy}~*Kl玹 4yM.vg@HyחeI3Ig$qKv}DɟŎ5/ `@$z>V-0)#Z,+wj"{.'ZZCu)`iN r|f)"QN iai)Z%& Z&;J'weE:K"MT` $?]&V3dp!'mxgsFVYOud^3UEy`"V'g`:TΥ`;Ioޤ#ZaDC)!,V'.ipR6S<4+~ЕiPdnqfK}qQ֖]Y"A|'z$q>N;YF`f̔!tһ / SkfJP$1Rxb)D_\ֆ 0y$L'teaTN2㔜"N/+_W}F9TqdW* IܔUEebE1+f y( neK`Dmb Eb "JhՍNwYO !,ODi쀟gx9%=E\+5,v]8nZE3Fy1NֵೋNIiˆ'1;B]MP޳,"W.+;B#D +*h<#k((8͂r*N؈(ez#}xmF,<[FXqb,.3ʍlڟţ$iiZ+"{Z!7*ye?j?Ali]ua(J(E7_wugF=N `A ?ׅ1 BF8m"1Q?T/bL lLjOԅ 94p.:PuJZԸx cJT2Xޫ6[*f.=`M,Lu5nRN5'DH_&W^VQE !:V5=^VənQ.,wIV1?'&Wk="Zϔ9nN&G P` {XUE2U%&oᏃ.D䉴OpXW2>P356#DGzWN SWj,Us!$DDwq)ޛb2aUs1HZR ՑT&0CEzG~KXssarXfNc0u7U\u 2vu5 wtx7r qHq9b-?Or<Ԙ&&ɐ2$DuSebLb@ZH5F%s1NE eL>]&1cڊFISƒ 'ةcDCat[Xa}Fgx&}x)5ো;q$i%[OVl!NZ &i$,37Txʮ [aT1'F ~X DصX!L!~,,&, TnehFo2M&~r-L*S:`aB`]nx'egRNwI/­ 2Q=|*+98Y&Hy'=B,w'~Mas`E'CC v"4qل423f59OF) zEg vsjd*%hVwר)REcOB"+Q&6Zf4D Ȩ)7¯ |7'686*C^|dhܗa=$ړp9}1^F UUʼnAɤb6U0csD,,B|xȈ?sd~y&H,s{_oPuJJQfq5 D[eg8 ]M]'ϥpq`z?~\ӅZLy/#Ǹ dR5?a.>J0pE`UDJPl-,m@* Ke#b yߧI . L2Oa!ւш9@$}+ b8ZxBܪ`8HY$R9]yHWpXi?*0Mf?rZL+ La)tz]y A8Ҭʜ8)Rhk]Ӯ~4,v\%pC c5b'h*ܐkA4M6,b-nH3D9Zd$^\Po2AN']'Veh5iD7ޠ ^:uXa- mH0XASO$2=D \/.ː LkA#fiDO\e{I(G7QIkZ>v(6j>F+\=;1Cf`4&'=c'i$OytEytRr7 hɸ0bNΰuY!&d|_Ӎ@G2VG0zlPkeXQ[UgۡvԎ2 &7wo%^Nb7+31`^ZB/iڈzw X[;oy~L O{԰溠bk6KHZ9')=#č~&qۭ{)BBaK:K6:X\/!T*r1uͧ(eh7c+$rE-Lϝ<˝;K%iS/tr*&lWٕՅ1UdWr8aYư.}lvi)fo ˢo&dCFh.LaM|s[~h"x^K=(tdix3M S9s'Ǐ{dΖ$j&H>oleT((MwDKX `&3'(A-t4; Ch -zs4)_q)!1E'ȑ0L$aN 0iQp>lyWsE)ji ۸LE)(Js;I"ѸX$5YF*8Yd( [D/ELia @Ä3/0IM}o4Rc9nB(Ŏc5Ϯ-:EЩrx疈ۤ4EL j`:P=ӥUu׀S ,5(4A= ;]eN?Eyf&zADqB7r 3CN4'MqNe $4+;Ǣ ^8t|" :;T41,| Ƴ_WtxVs#vwqqbD<=ݘM)1/ 5#CL8E=dQd;R ֪$+2.><'T#mRXp .3o"Vs݇) iШ':+N SE'Hx "Z_ߙ3Nx F%̈́ 6c$D~ %oeMMI$Ώ4;nN4.$~p`3Du].\wNjwVpl.W? icL&'-mN%NN-EgN3diHұ %,q.G*8Y-#N7Om`נ`.eQxSDf,] <1<nj*Ϫ*(Wie0On̍?YL.pJ R'}+ѣT+u0CIeYe3Xtd%4#9g X Ly$?7Fvn K]lp{7l00{:@Pw+ _5'x mAyl CI<7m quz#{]9^0E"tOQ,0'*=S6FϽtѢvp߁mnPe'yׁ"l {;Bk+ϵ8TvjB2>rOJ0\UwwGn"$3^?l !V)#NׅMlr70Lb0_ļn o-re6'SEc$NnBwq'Xȓ?S`3I/ Y[D6o̍b֜F'{FIyTep8 O]ѢiԏM|3]3$(i.!ts"K.SNr(T]NqEW0GP- rmLi &S!3"fP4!{~2+K4-4ߊ;ܔb#*8!MyQ#. G&*a;g܄-²+61*EnǍCxQb ϐE73Nj1_uo| wmָ"ja4܂ɢ2vV2tBl* BhЫwHoXz0F"M)޻Qxq'/ *L-fʲB<һ(Q#hY46r>;v#B}Yt P0}|quN-q%"9#mYDof\.5=L8at(˵Ke'p{DԘ5]L,u%_f٥F #r>Z.JNDqN1^^(c"l򻸶EHD/]ޡbuWc#6Ңa?zaX"Ȣ0e#4дY_}P$¼1 V|bz=UYs7(p82DMZ?, 0m5mLl2qN;\iLea39ٰ\hD]*ƢL, o>LI<,`)L@\<.Ͼ9GT}'׳rD' $7-tRТw dIb@<\VLXDS0AED 軰H"px$HdE;75GǸ :XrKvtQq^>,SW p 3txwU&+a<8mNJOpAQPg)1+`2,B4E`SMgUYRD oDH7E%/%.vpk`CL5`9xL?`$\͔x >~8L2m |R\Z}ݐ˿fXyg˗pO2^ւN~ 9Cpy#xY&np%D] a􏖳  ߼0xI-qr>ȧ<_L+]X*h%$Cb%i%CLWᷢ #"n˱` Zir{sM!G[k;-Z2dڮ!bwYح T>e9j7Հ.O׼glH,]ɡ#XK)@b?IWsa"RL`4J)W8IFY_lr(iա8Fn>7TLkKYXV$(Y~eXvT#Yvɧ \i"Bܑ#e^"=wMo@{d=wt!4FE.nG%½<,w'"&mPB)%Z՜!DH1b/u;#R Ŧ6lB'1.9m o j^bԧ&0lwʛ"]3^f<:3E˱ NrEY՞)OOXQҡk8qC%'tgbb.7"{LX 3"&kAto^̂0Dw?obF0uERFTv']ڡD4]NWn'Wjr,P:M\- ƹ+SN4808W#Edh =F ~GX}ՇƑ]afO16,`-\sxa croc x=1v)"*A.Bxa#tzzNc2roeq;ud2N#Le "У7A^Yf5Qyxv}w`h?ˠLZmZlaZCg?Wy*>ʩnQ<.7_ѭ1{2D7yO\7d88$&=yo!˻#qYF X5?^ᢚ'5-~*F_Iw9GAր g%"ģ<ErybX*vȹ05!5kp PuhkVDz78@`O+Sg0Ka LD=XTO!"+ɺ2<?{;8%qPmryx%K.Tj M tP֠R{Ec ^$FE#<Ͳ) uhE"CMIu!3.%9]Lj0vֹ?,=/U6 [{C)I뻯Rѥ 1WUEӶBNBe)e ""0M%F0'g|KVE(T1 f9)"H~!ZE|Pb=ja gH 68͎^ sM-gqYgɵݱ"5/DQlȄr:m'4Q$A{A$4L~Qd]YV;#>gsbD^e5*ۨBQ9m%%v)r;2/,xO-2\A)",`QqɗA<˸>Sw;==#X[aDiks8ZLѡl3H a+LQ RFWU*Eƭa*az  e'\ ";-Q=zyܕ eč-܄s<[)\e ]v%~#UcnvLvVН{'Fۘ7u܄qD24 TOu8ܦVGXfuS(??0v'GnpibX%ۻcDrI~d|ׄόy yvm8~&F"23\r+G hVB,0=F,eap8Dg0+«1!_eaB I^ݔ}v7vk05  Vl(O:HLnAׄe ,`"}]wti'h<3G)"crDQZ. a8ym  <|!Ov/tiHlK|;sۻ<"[ᶫ|3AFC)\ \\*| :@v'GHrK9"3-SMZQ{"y~K&u!F,"%A RWu(œbl8kɴv,QMYX2:k~S [Ue6aiO1]LaکS7*pZ +YDh Zl`]6Rp:z5035&}'S(=BIaXEmL.k*m&ҴK^3n "sdyx kRH ]8rDM-,ri-`)|RD e98HM'Gr1bLk,ؠ{0+52 "_](9]M qTtEM}>%DѼ-ʞ.,ML]Qo#ʝ*Ips؜u#ww-,u K\_☨.v.ff>vT&)OU*EVw{ֹNoܓMu"?PVzy+ML:rsٜr VM545~FE#dvGk (=ěwwfNIF gky4BL}nA(2LJB(ج%_])&!ekIb|OWF;ϔAߛ}O t |w,PILj"n8ƢyIPY%Y"XsѵbXƈh%#J[6Zee%ت5"xY5`,vL-c9ئôP 5N-47eE4.o`9HwSk2(Y'hr3ugh ˜?-?#O=~!x*{Ɲle3qH#D>&ϩtxܸ*Sop 3D͈p-vf5du%=Ȏ4ě"_솵N;̤uJ^N%"C3mm $241\N}GF۵#Etx3Mҭ!8bC؍]M~g7vtYf>SGj-l]SdX]DbQO`zίS`I3VBd |NƀmK%?{%sX a>j& &hd7y=HZ\a+f3FH ^u Y_fLH1S=Mh袰,4 Q1Zi>pRxgxi:4a\ 'D6'ex;f^&f< dׄ~X&G∹PlTId?R3.ZG.;UqFFi9s &Qi9K $ѥYܡ#ʻ"Dy%GȈ&Q9Z w]5>[2$6Z& w"`0B\L~GC]jOOBَ54vѐIxQyG6%E0QSc+dl) Dv"c/(1RDG*>Zⷂ/ &t%zH2Ky?)`8BV·#]Ԏ*Wdra }@gnD,sI~ Ȗ}cb= s&Eшk|aDp,cqԈ DŇlqΨՠsxnh̭Qdx .Dbfg {LWtIdbjBg\^nhC-U#֣q_51rM2 3(saGx=P%`â3.Tɐnz9x$lO<@7iD6kuC0gJR亨hhEֻ[G(:X.G8w&Hhp9Z* 6NMi>g"9,a"#pZx:n'\(\ԍP=g\r(99Nmg{w? >B/.\Nwh5ULM2^H0ֺV"R>%yUDan鄑7,SKO 3a𣮭ۣP""4plwڦmJ-Q`}w$֣3LXSRtp&ǍJm`/Ԙht}٤"4|IoCa{@HѮpJQd=Y渕EX%ቻ9LS2/&)m*ywaCDHmp^6/Fgm*%;jҚ"\ܖjX,S4ZBi'0i GN{a6;QMCh`"{ȍ#&DH/EꨰFPW|S#?ڰ i&(o _`-C0ae3NA0|wWF4H D"[۶ %iI&l45)2OU`+|w)^uUuR(,bChK<ŰK]h0DzWTE!`uf+Vw'n#qV]#wDzuulOjU*s fFmv̠s=Qcg ὣ*'yf,LH\Y E^]j {0XeUrb˿5cn ljJSOzYZvA6LMnh"E$6]CY qWQ6B?+"WVV4Nzhg0&Va\S^U*VxULxmȪlN29jG|U) 솎DO{!uuO,1TV[5v33G9wa X<D&̉m0y(u;ڴM#r.sb:zZ `[AfTXfhzy_e%rEsx 3EՔ]fE)qIdy5Gg{u9\>?Mkô:QdšH.Ѯǰ'z6qQF=^lF|I=8kv3b+)clj}vX5QL v[bQ9XwA3mzg/9~KfB~nRl'H~x(qH$jh)Q(tfei}τ%^qdxW*k3iR殺vT$|v_W~SxdPHTFn~3MQ-ʟ~Ł*Տi*n.\P4}z7q)`Dt)\2 6i*Udp#Qc+hJ}&nPGRrwswX I G(9^_^ R$%rK2Qx@K!ɧ<s1Vf/+IxӼ/>Wb+;TPyS9]7=MLOr=l{al6,Bltzfk\50zY3/BF nnGS;dg7ui'¼: _S>c#Zx/#$b>k t;MCUO6 qabsQ"u1*ʐnt#>n_F9+(xD3VP"<KW7ugx!M ] Iў(=+C^%a3O#u-\E3vx:{3g+lw؉=t715dM]Z#VSgkY=Є8#3O\@o'Ze8 sEdIZpAH`핡a:>N'k O^e-4SS4{˕>W`2{@4Wׅa#is- BA"S,1G;j$Єm5퓓a 'FS734`"͏w2+$ r\/(p!4ݞp]`!Ó> ;a(`|R$Fu]H;[4{{j,dIրɰ ^8z?W+Ր1:GFysSD4I~l'EhYƼ~bB#Ȋ)'`8s)(=Q`&ãBK}ʅ{7lG-+&(~0T6?D7A>м/'r z']Qֺ[hN}uu[0i7*<‚`? ph3t)6#STN81<|;X@Q$[;^_jP*bD_iXf ["T("rCvecEC=\w3.]Z 5"g$)SX݃Np!5,erX(M~Sf;`% إL46!4:⑞8B/ +5^ЄiBit]n*8XčȖBv9xh!}o6APN#.+dv@.;!NSSLM]!fyHYb6(RVY#LWqHOz.Rhq6F2n{An'װXh}>9(Ղ*w5`{;4}UpW ~i/S݂yqy^эl!Y#A3maH?zS' ˥Aiibz} ;fX|hV֗UQU}ʝBFT26tV4zeSEk볌@rnj-F4w7fJᚨ Q 0>MZs'f[0pFwwSfF$$i<FAk Z)ʶ+AL]ה}9a2H49&PTT@``.̇Qt:N~ǴZw]N=r3GTQ fwPv ZGulQ/z, Z L.40DwUlW ?At~nJ\f!,HFTF\헯e}db$DpzDΧOa2:YDGn?zh=fz&/O.4D+0pzJ%Eχ/eB}3IN0]e~Tә#}Dh^bɺ:c#Dɟ]K+Ql'H`4 =@CV`Wn3QCj.Dwp5"BGL]uඳEZm\jx'[õ؋OԀ'yU=lrg)D(f3WqUS᭛FI!B'h6AMl[]a͎28 輓@Dzq&wZ5Q_z8\]<ɛ)+=5iɇx[Win"ӽ4G'pEH٪:]A=(Tj諸EAXpdp+1iU%&b ,dz$.k)|yuXBqy6s-sɬfYʸy/:SCp{., IqR^wQǏ!aw7"$x _ݓMnd4" \Sx>F'zGo[0 DiAEQ/ ?aj'Rˑ"fnzxxw:GF<Ê.mܫ9ׅ3^vKBi"JD~X$"qidh~l#hTWq+9Wx·j9ڃ<ƣ,ߜp NA/\]eԇSݣrX_w+Oد\?ӫ>62/"=;<,a#DSp7EK1gɧx"'٧U`3KY`R'<ϙ3?S$hvO HIs&lf蛳m\Aa&as71Z.B=y+v33fegQB1!HF0ұz{ez 1UYQ;5;qnEe܈dFwj;|1L~8^^ ţֵ*Rvj˶D4rEh^Y^.ԏa[ .ѫzA3^^|e&E`"n#;ȽLиsELj 1γ۽U`dŝ%>olu]#(1c+ bx]I"}7qLFn ]yM Owk\- #˒F0t!CFН] ۰&;@4Y^;l`{86sI%>(G̨2̑;a&ԛ"S[8s"ɫ;QjDG^OM92-wybt{v*2q#gċ-vXKFiX]j#?*6.HBOX~?A=_auaLECMS`N]2=ʎр 1)*Nj1aݎt#Z<<2)^^"a:Kf^#9Ҹ+; D ?|p9w(,/nR35fUMmVƳBMd .f,ra8\ъo͏Zr >D>]Qazy֥o# iY̸m8p$\W͢/p.d )"F;leS?3=k"W$ӟ9z.]Un24DQ}..pW-'s8 NQ"SZx _6z4*9݂Nyٟ+v:T5:iS`{k86{;{6 5aQa[\QȎ/U`7B3\ak:VwGѠ9yʔ۹="\Ҹ _N){`|*1>qQH\gg^J&ř}S.ld;!y<׃:LwI§X.UBi ^&1{vYm:h+Ge#kѨǨ&G@=mvA"K"O,tpm2QC55c%tHqUYTQ15`\Qއcx3oʈwVpn7LIK̀,b3q-bF6j[;z GG\bUWE౛+J)X/UED z^ҽYŁV\b%.TL7d-58arG6/~%Gy#,re|Q1U]]TOh/a3B6 ?<;đ}-4=K,N#M玎""MAZvdϷSm(BN+k"~=L[eq`JrډXo]}\E Fh+g5H"{clq;2iLvst i4&G[$λRvfnia'.,*lGDŽFfIi %3a:#O a5mM#bDHYʮ?x}=n>7;XϠw.LSa-E+ȅg3V5NOzn iCO2.EOFl,x ADh3QQr"g~ڎѣͫIit +=C`mW0Νg#xxTt>5ZxEH#3*{=Vp!2ѯ=pՕ~q4Ϙ ~pNF&R ]\ JސfX-F&#Bh/ݕyMFPe@8Qq,UIuB'5`l ;wdh0\%d= 2/GT">rZV s#綰͙IVgXVVѓd=3W#<@sb"r$[hY5VtuyJnadQ:\( 18EOɥyWp V9%Y}f,`JT{eR:LSZ*lvyV5S#̣7q-CF(z=Tv_:]D[e&#Fhnɜf f#`č*/O iٱV7N7L n9!OSghNisFI_fk@f-v0EaLf#簞L_%,b>q k]MUeSJ=caBQ'J64##t3X:EG]ɭ\-ԠvũvxX~i@;E^}gzC` 7s32D6'9awf7Yp}w31l,ʮaz 82U-EE^"hx6p ֲq"nYMJؑnS2aaävKTL~۳F}weF(tw{;>֊[/"VSm iX 0w5]˩õ=(uXư(Den=ֹ:EG~ xf\oJ9aaßA#P 7Z-G/vg>kw!#ەYR-v7"71.LQhLy~;OdyvM7`#>MݮʠVnZ%h+:s8#5u#4yn"UcbS8Oelc D򐅶RYiF-ft d{.]v=mX \Q"WDet2inCӘG}\]]hyGixWSّ~q9Kl5M6aC^&")XՁ {[?`go9ad{-tF.ߤHu WSS"ddt^9I4:̎d}ww&daWujbS-Rɱ6`cc&foy}+!Z^V[hs2Y`k :6lWb1pϱ`z8 ]OFDl -&(69Uz䖸u$[(˻;@Id:LVa_W>}g]˼ \P`MJ'}ʵr n䂭t'TYI:OmvS0-[YGVGCF.r.R,up_&5+aY٥Ph%]h}&ѢPQ V&-Z<[:ѓ?t^ߕx+âϲ1 ޳zEGx5b "v;7?5}j"kBfYfeC;Յ'i [ћbXyd/.wW!D򖹱ėv@!˚uTTk~LeB(\-,qweZjWwG=sa T6nL]ANQeQva OR51 X-*J.RLIx7x /ݕ̰hr3##<!Ad6F4MzƮVpN7LK9>9[zgk{ dCU"Ak%UƐ#F&sxc4=dI@ l)[,v!Vy,.(m%>#!;_T7sqd4lbz1;cGҜG ;+ۼ:~w(Bh9c*PfZ^a9ČdM'wre4nj wLpָ3ϲ |w.ē4A hĊ,W Lkk)$_.X섏׌v:}u x=Ej[Qktk<4 .%Y ,skN|_c ?"D%f̕]Q ~d5Npãa0+٤&s um3#㬩2]H?Qwabysw4Ȃ. َё5*޻D2q$,ޝ* Od}^^*A|ipe$-53izu;r Nj0i]n D|*j)q>]xDlqww$܄AX3Zz#AY6+CuݠTܙ͎ԩB0{X(c>v+PE9s46{`v8TZ#uw1)Q;C$xQ8]MH#^zTJD=ϚV*ʟ9/r7a9)n`QbEѩPIK cs,(nډ"pM\1f=CץՄϓ-XdaTs;c;u&_fENx4Euf"FREb>4yxR>xD\.`XtO \ߩ^]U"ϰ5bEQV"f[n NjhÞ5౪6,[;=KaiyeDsxj4$ydvJK=S<ȓJ٪2Ԉ062"DGN(I$d7z1ޏ͊-F>>.*=c;Sۢ"xFc 3ꑢǓ51>1 KGu\I0Ɋe)ߜF-Up;ԓ6g*{ 1)j4Rshl,0PTEOTv/l+\.̈́~to y%#ً^֚2Khˆ '-PZc$i7}-DXX53:Su64n03EiK.nƜvi=r qE?Z"*usΐ`[*QAJRՍpʇyk a(b7čd4ta3;vxVqv("k*䏷!nzܠFu.XIޘ*- x_U u?zʵf3O뱃kȽa3!lؓFinQ"˻32:75u5"vb˷ZOpU'{JCXTe?lc ֌mNXֻ;̌*(4Iۥ]Cy&{^nk #cYCBb?wzUQ5"3a6*ayCav1tm6#Kqҩ+"*4{pQ0[DC~}BpQ6E s<˸:Ӛ/d=b;%BXM Q>Pay!rD4{Yp &GLzDuWf=Ƀ5b x"OPvc~>j>O>6+nDGU)NJfd1'.#@{(` K A#U⊮l=E Ӫ.ĈM,eb.YÈVscFkd|wq-"oĎX/൫bOɢsڥa1YLQZ%[}Z=]Q gL0SCTR>Ps("ݛGo,OvU7$'{H 2c@k#j;3u,CM-=C#cV'{WV-qI"=n ) %*uv9c.7ÔN|e4!gbؕX ,E97w5t'l@mW.j"K,t-axQTP1 qyg O65;mP|g&484(xk--,X垌[so ?ihHsw3aS#lK3Q >#jVO~u?ӵS+pzWuV]iiE}W/09@$j;.ːNL/HD *1^M(=[$XɉROﲌ6˴ag`M%!ٵT霩lT%hZv dy pX B4kO#5rM| > Jf$~ld;C<ï2hZV.DmuYc?:LN K_ƸB9UǭIjW7RQ.>BGWU^Ex&>A;ۨ3- 6<ǫPmq PG? X{ਫ਼!Z a!@JW䁞jnh OuFƽ WImShms5pOܰfֱO'GE_mh۲}ZrXW@Dc6APs)k2\JEֱIyZ'JV'\x%EI?5s$]t'Wq6{ Oj.?PSF5ѐNUǏQ˻&<[{+%s6!<ʋws'8Q==G3ߕ ۤobR3S`5V;A-cL|t]u\^o6ܟUlTA2ċ(֐yUqY>gK69lv-|H#"gns|MYXϰGָ:LiK*jeְ *AhHOp߅ء3/܎J,LeV]7rAZddOK*K &L]c zl5e5R! rcwrC'M4xlbkvB&\A-T,`n$X2{ph'jǸVޕBIr4LoK311U\]ϳxK| :n[;o%4Ͽ@LCWAo\R;.BP2wcõ-j19_1.*E'zyp\v;=qb1 r[fĢ~6ǫ1lD27WOVq-׆k3-6l1qFb,ݰ]x-{1,b)M]25m UF>܃f^Ëoj9-d+Č&>fulC-S.Brd'otvXx3X&<`|za*3!2,=gqޅD*8 lNpY*e?õEjZUQCC[᪐,=n_dHS37aggO0څ^Renμnb̸ETEV:eX(jn^&?dx+ac=ôEpOgF(2w/0M(v'mt\]۸ yj-jhބ? ݑK=v?Ϊ0]QF[epʟed2i)΍\ݎبQzKxXg'{[MP),!K2.dTHM.Ys*:6!톛e[s-<MR.d̎ O\ ]FOTMohwc"|zgw GG_쁚ҴVvwdƃD۫[xhSۮ+]]5d"mζ=ZJ5>h*iQ]FYeXtFmfV!ov&7[ݝq֧6YbG_mݙ}#<l̈r֪NG{gHN0 #a0OBVV;S=+ր6=v'<ъ?^[ݍ Y"S9_un J F'!̌:KڵY`K5R0x<[٧lYJ;S.z*j#zf/w_t;,ŢQ n.hzE_!b4*#Vz?[JwmaFgymb7'>F ޻#>>j*5܍lw̧nƢD` CJij*9~.*Zb,ww?'L|jrw[OkJ/ Y4,zh%CF*!jRefŨ7qvT(|mTՉz՘ѴG{kWPlenjU)Z1nsE}&v7ftlUx&`ymtx _TO6YA ՜UݜxyGyvNXfEvtO-Ci vB Vs$J ?$.$'p%Tb+|dD|~-VezoݙҘsK7qgƏ;o05IF}p#OWdv;]~l[&LQ @6+M3`9˙z =kӞY%Q3wmф&U].3Dn+owc̓=g9\s5gi!%Ҩkƨ?*P ڬ"``@j`z ?SAU٧MfpN"ɛ˪Jmfܶ͘fFx(28" 5)yА{3qKku"/r Y=SFXbce6 & e<-^f%Op`+)26DߛlOșav+ټeҲ2yXm\Q="?l:DgZu̸YB63s50n!b<ô ^:btJ@Ս]LڰS#i j'JZTmb$%`87|()̃kn,aĬ&mG.LLHwtmf69˴Xx9N]Jb*'A5yh ]sU5 7lEr&N>q,uȈ&e2#ȟQd g-#JG&]+Y^F?ךaKX::&6mLNnww=9fUP9rmu؊[cn!6:؆h]v0z X5cG ] RɌB5gYA1 wQV 7S#JޟmtoC%"༻Z& +٤ #lpxiv!{]LijCZ\@=s,볈)MN&:F]ܓIMlɖzOVj0VD jJҷw76vf,d¥m3*<Ǡ2xoR& j1{YN*t , w;SOdznlCd'}g\\j+<E3l;'k^_Uf)M!ca;i"g;ahCK-wD Z&.ZZ5g]g #"OTk;JwfԂɗ_v?f'Hh+&LeVFkk3A=Œϴ.~S|HH$y7d˲nlUq˵Ըelf LnLJf%1zE%H':?"W≛؃.,B!eمMy濺[ {axGiRLlSY9ЕT"3%NMiRʭ]+U٨*{s::GT)AŨ&8J#f|+Tme[[>;GYldlzF>bkoZLig=`hzѰ"\Q+ʥa!Z7q}).vj8S?R UykBSYZ8*ɌGInƵTvT5Gx pQuZZF5eM_oe <#$nUܜ=jt .a밇^9Һ9k]iO Z6;j4n~?Wb>J% .xhx7,fvt!޻{s&,=ɓV).N8ea4x概r:LxkPvHxYӻ\si(, [ {Gi:*3X5ߠlWousPqOEnЌDH6E]g>Hx )R+4r<kv8o UϾؚnUc2Ma+1͊'B5]vh`*8O EZ5.d2*FuuM yHxҸ+9bFʦl&9tޜ5-cZ3WDi SNOlpw%Oǔn^ a0\S)>5suvJh\  ~yy.~}UtoUyVA(q^XfDǸF>C?R/'\' +$\GhvX=.19qU\e⑫˵ҕL. 6Q}V1xoC1"ʚnPF7GjH#z]͕F>m^EopD͙u(ɉ ;WQmr[2- z7mssׄH* 6_&E2v]%P)݆lu7ul`=gpƾ%ۙOx<@VEST4J}m7`3?SEݙElN+4 OҮ&(.f8jF4踽Hڦ20b4h˹#.BAϰ;[ %lRK3gd7[HOQpӓkʤQ#X*;3= 0ٞ%`5f֠B[X5h³F'[}QY법U*"[ d%۲Jgzu#orgmܘ171FmdB+f'Z({&'kUs)qbxwDR،+W yhRsj.bt>IGefE$Zෛ+DO빷˳VM#[)ox`2u'9SbxӓclAτjva3):=yF?CRæ>@;>yݑ,a,И6gT Vu?36)֘zT={#|?e]Lmts_U =2mw;x ?JTx":c1|z>lBs4 ^1'grCf3VϹ_0 xK0>Zӛu€4&Y'[pdR_,N` aUH54=gK:|[csGzwuL(O0{]뺈R2 zޚM1QdRH\Zh%Ŗ^>5cJ/Ʈi.kMV)݌я ~RݔhT`>bvȉ^9L^^긬y+{(ܕ`=:<ǃ+2U-銊=5pWg-I'(f+ٸ8s]hZs܀e]MiMy4`g\=35Ȍf>Ng]Xa"E\!~Vp2- xyuY OZQVYQ˳dl,g5Rle#xemg2]",׌3m7t3`"TVER! |kF3垹"ֱѣ-ԥـ7f;Y3ڔmwf! otWp_DMovJ%oZc?h3g CV6hbC"BO /w_|?N}ܕu*1nE֢c҂wQEgn ue+ c3jÖR}J+4uFM]Y~˴Vك5 *Bnx,g/Ml-Ös,p}uUD YUSf[.d$Ha؈$\en0Y֐Za*+ܺ. &ZI5q>c5zvJf>ZVU5]]5<Ƴ=ңh_٩Q+W qzOb`?+AYVÕ-߀k*^v-ooh+FՙHMmN {eGhq^0L =*IX*%X/d? MVe oxcQ|aZϙ Wqwr5nHcVg9emг4"t ?3S A5+˲_5*SG)?+و}js7v5GkbbJԨ۰Zz&Lyg~;I.zw7lZHT氝}Tr{ mH3t+l;I"viU}(n.j1$BS=j^%%K j1 2 ]Buj*B-DƌK?Iv&k؈aI#@j{L^fG^-2,1젽Nឰ."]c#6~̤F,(-v]z4~^]E >s]5ij5xr-ܸ5Ř.XXô\ݙ<Y+mzX#<FEGkA\ڕ*毋h٤ jlY6fN]Vck"Y*Ѡ0ʐ\~ Y1Oorwd@cmDSY*:j+s>+ҘY5knSYMeމ 6q.b ~dK.{ D~VWqF0UAҴVȒc=wM&>7yZݒ-ys.:s>&}7pvj:=~J7pICDgS!mf#6exkE)URG/f #Ymd !-vfnN `MwG 7IAݒ[=I#wҨE%(~63c','r)KY:=xS]7++z'}.1eeEʮS-ڄѲ lM,wzċ1(z#=>k%Kи?Q=i0tMyqY%"ִ%_ %n#&4y4 ύxHҰvunv4‡(J1˵.]`6\mM\fj1r1 gTA`p5jw'g5q3E?@Xc|%춻[ I,b*l 4fTu;S:cW[OVhY~4֬Z"FIQYZ~hS7FS%\yns%|Aiv}69Dyf:,u͈Mm'^] [`=gijt9xc,q짏뺳ۡc\sά#>k#1}i mZ | ʔewa3Gzĭ7c1nc,:҇xgZ 8xUVe@x]%HҬgBQM0sFꨰd+a)k2"N6Jlt7Y0k-6hr&=볇-tfʔФ^XEڼWeLv!!1ILY;7ҫƘVkm.jjhZn(Ǩ:FQ;VUsΈ7A8MMڄ>!,DPɭ0Sۭ7.F=FF(zNjN\%zx}uAd#SiOД! mRGmp'yWdH"v wЧy\Uietvqv3=lcʬg#Z:mMfjy.c͔^*yXAḡ'HayR -+bVTz($[䌍_-d3mgй˺.j<=zZFp.Vq.v7Qkֳ #$h3Cޟ- /ۨ5s}gUVQ-a cVf`W{ݔsWG0K-Whդf+M_QQOM3*B|* h9WSykF\E-֫85ZfXb9Z̀nҏԦ7E]U.4Q9oZwŒgYlw_F)Z7uAfBl'[UWTY77JMhaP;D†wU=4Ll#\#$Mv6*0(а-c?3j9]*-gn&,pE:41ޒ*+ L)2`34}b*"9M ? r\i>zކ/ܴs-\NXA.K'(՝3iKlR)2g/KZ[;q@ !aX݀hf'lۻ;=#ܥ ^Ot=>MxHVp5Qdb'bZjՙb?ڪj(6}Y¨Agv&>0+XżGy2] X::ֹ1鉗-BQn .2V FKkJNPnKh˙D ` $OƬEF&$za{Fnv+XVMR(rXY+Dh2*lwGśR&71yfRY)Ie-݄ ' \"[1K$Y jL QjɄHOqwc1g5κ 0=FwSgO"sw]`Ƅofyڦ~Q3( otX.bs7v%6M}]ϲ䫺#lDl]n50QՉ +>Lg5Z = `F=f5!=Kb˷ iMdmMOH^%X63g},0qGs=J +3O4rowU&.ЋQ޵k,j1ϕ聛ݛΓ)B>^yFv|8Q-RNq loas3I [n5ў-QZruF°O} j RB. h\HCnl:|$9Zԉ螨Er=DcENMgF+=9S&n*єfVT-] hf XϴTC^5 VV4gݬ.85?sSݰMr1KTr%%>bniYKxf%]-hXƄ;B ZOG8S]uwdPێ,s>Y3:7wGkXR FIed-`B#ZhѰ׃>qk,6jXdJ^ ɂOԬ UHګ9D%蔍Hp֩ TA Zc:&l/zeޙՌZOS.ʹ5٦AfG$lnMخ GXg5*KP Uw77Qyf#$|X W*9?bhk{dxҘX,"34 r:ZHCতU]u֡wa:BMzt$d9+1|m7fS,ӀeRF$m&6l&,lT1گX:Mm mYtA!A^x$o|Ħ<˫sZ4H[pdM[UUa̩3L kBk]ܜ,F"Es46ϥ]~n/&"c&?`ҕx3|[*4=AWgYl k?os^kJ,V˵iPcl: EN34a)nj[n Sm;ax$ 4Jޣ"tÌfZvof?NfRsg737NUיg AYm Xۈ6_{OK52˻=f>A'53`;M2iϴ}B;L̄]SdUs'_ة#6H"2OĄmtiԑiTwngwwF?LS~#wb7ҫ箮0y e|[G15݇H}u1S=Gˌ)؃5ex _&2fgl۫nd ywwwtc5*cwCJ49Nv]3at d\O K4nƸglYȍ_ڎ$~5f{;Pdh"-ue&Ob Lܜ`vW'9Jjg#"41[3cf/k$,~|le!83-mpcuiS%`.}f^rZ}2Jf'x36 Ud/?\iZ{dWCHRRA%wf4; -\WGzw]x'|yAK4i/L6[Ĩk=:bx:FFm{\ ?E3Iӻqd4b}fMn3j*Xcj3Zf2ŗw+3i J4bnj:A[ZO44TzEX[UG\4HzNVDTnjiڎ+^UF=z&{GkBx7Py)]]n65愃۔X$v z6 i.BΕc5j%WbFDh:,niy$A^ܥ =zg۳YMJIfp]Ue7jUf&>UQ74W͎4ѹ)zsGYalSi8񻸼Bx'=Q-əLnqc>m6lg9qJKuإO'N 빔rްmx&4ŮjXäm[o‚ a!E4Hڴ/ ^ F,dN5턹khq4.Ds =t0ة>bX*/f<Ǚlw63.2f+;YfJW4c漹[:+zF=Rm`'kUfex{٬`K[U5f5b}(J%1Qla>xc{Y(D>Wecms_7aiMՠ%*d HG|36 'YӰUUYI]FiVF.SUݓIޘu IMxoH~c-ZiXK=MzV2D(2`v|Wvaq?FE'X|UgH5$: JW9>QXCѰ} mxSyʀec9UUIURbDk<$hګJb󛸺c,:ֻ*{ %ޝOFF$}`M7t],dϴuuMx i; y%H%{qvD?ksFvU5|iЪ$g U3~اisޮJ>V3*Vh |֪pdnBִGL~|,cBӚeڠ#5uD֡ " Z!h++ݝeФ= [h+b7Ғds7ev[2ZE4­Ra1hV:Mv'JP+ҌlFf<; z4#빯a3rzT}"ZnѰIT]jdCJFЬ%^jTd%+i#6YjI+Ej-E>Bcܠ%hquՐ.Z 5ZmJ,UEbxS,, =c#B k!AΘFon#SIMf.nY$AYE$qʸUjb#,~,b++|٨|$+BhZeN\|ie#AɊoNvrʰbRE XeVF<,ghCb%Y腓?zn4I+]E'iXC}=7uhUPu6Q&bdK+Τ&>Hb+](q"S{W`+T#6IϷr*2 %4e^hEP ^Rt;IL\`Z֛0֐vk7d>SXV&>⫻K%uI Xժ36*i:d<Ӵ=QSefh\cGgnru'\a[P$^n.jZÏVBق, cMgƄ4 ^XeaMJgШ(xf&l m<Ċj?+\+xЗp+vSs>k#.4%sn =ԌXu_*Q!,6<@ڦ2\j*5"]ɕYq)x7WqaOCAe"Wq=`DHa Wse69`+Tsa3FGGYu,BͰ7!^5clsj ,İ:kإf3rj,]MYFS݄bS5fAZQcۇ,f#]p閺 -?ӯfU[]Lov6HٴG:j+jsf6e=PR~4ch[J.,C'hSdE61c$ hev̭4N~jc563뱍E&jj*۸NK`/+d6`=;k4~%v+؄Z~=5cZ3ۢ h4)-[]eD?ó<6V){.;]%ӬBa֫2sXn.U/j,yjZ**=KONt{VS NؤFYZ}߬-rgZ.hJsE )YFf'{k2ѳfwGg enNvkbkܙ=P k'Tg (TiYal9]%#Bav6) *]5 k򫳄toެ}UX.ՙ݊6dad#Xˮlb#<Ӓ-"] .֜9 Yۜ$4F-?CswUZ̈́'Ya5°R֍Y 4,vO\˵ˍ]MILjhCHD lch2;F/{|jOZꨁJ6uC\t|XV+U\|_n(<$\,iCwm*1rM\hY:–6Oհ`X,Tm֒k+JYtsR`:?ҩ6V1둚DkYV jVC@6v3MJi܇{V+ToI֤Ѭh jNuXj3KXQ(ZEReV .䦭*.O$i*We'z|,S}l!5(re69ґI .F79q B~uD4+[='H%.RhDu|ZVUE:h9ʈivJxda5 ex^fRtWְIx7.7iey5u5e/z&<]s e+Q-uWS34k5RKɦ,l(T5aIJKA|/ܸN6 7 ,UѩZj ]lUXH2efSVT(ظ6QKhŖ d WP^)$M:W,d7 *r,,& 4 },PjF3tM6J6lVQorÖO>Z5r+Ь5: 4RU]ָ!IOUd걓J$^U-UDּ&775UPj]ub}Y:º\E=ר5{[|Z&(0.aӟIMꪧ)j¸|e5#r.Ra*6o,sfA5trVOҤ2T ]ꫢpRV0i3^-j͑$NitnEt]%DK'oTcԄtWiܶ\%VsMVExdIܐS2댛аc\u*SYhʂIqBA3G.xlGހUQmv3a2,`FcP+Xُ&,&)>%ڊ^2ɚ@kEV i֙ls$cUm%lSqMy+6#EZ~V[uP(#؈,!, jdwsy>\#GڅY x$ AڤXQ:;ڌ,$jv ,*xg>|c{;㷛eȒytxoMZUnJ(8(ajlr1,PKDUVHDn7K4IU..$ϖx.Z*J%[NyzgnZ3r2:%[)!i-vd6|E-`K f-Lf,j,-e!p~&$|uwV=q]T2) 娙yvh5t&٠ cOě7*+)bi{<4([*8%YDh;X$JH҄& 2M-]*u{#Jrv5qC\dׅ* й)zX7ajP0ϲۣua)vdMMgXհn :Jֱ%z>RΪ*1b,gB-Q|WM GG[=qHo{/]^N7Uh-Xļ'IܜVȸc1z:S~ՙx>5c kTduXjbqL`EߩܝȠ4LJd;SP2+-cEl4saEF6Նk(,+E5*ggk٥ 7_@-J|!YHjq-nFm2Z:#j?̨R-wptBI¨e1l4rjUraㆤtf;˻*b^W%A+1muwV<-xv\6.rFhb[f+ h:ֈ4ulG"Z̆ʬPLdX`ӌp ֪jgjt٦\+j%:]@ 78i_U5ޕ m-1=zc3USyYEDZ$ [qұ,A(R˷Aٮ3-i_-,diΣ&h;leAƵ FN_6#dӖ|/!xGYڪQڤ AVvclffSI^-,p5)ϸȊU1uAms]xM,cfk*#~0KV]ra(P4pE/ܨlgV/Z&gH[Z 1On\L^BO-Pu\XEugH,g b[̄gKT2eV69sZ$C# \EYlg^WG~:R^#۫ M]AXŭWhja?Z61nUM!F'hV^ˍY"V!j17QmFd֪"a'kDh:"j`WLoƂ|]2)kz" D{/,`rk0Dpk9qq.tJj}=X y<'omJ%oB^؍USYa3 Ĵ)+ Yh"\)L>ۑԨGV.:IVWh^ϰqk(%LH3UrlY>=sUrҰ^(XŜ%oM@C_ߕٮ5u*Ȋ03vvTʵOYIYȐӹ,9l;Y)A[X' Lih v=$Gia mVeڃ|zs8 0gf*:'ZMnPZ%#4!rXA\ QCUT̶:ca@$Q)ҩ̀v|{k hLkkEO7uef=R·Uhv0eEh"S4uEˢVL[O:mg/4IX5+nl>a,64]Mbƫ*SS,bZ ?X&O&P벖IHYmF|}Wf;jExiгisZ#$|õл:l=Q6ryvQgy?fJV1lH⮮gh*"$3XlN+c'i9Z 5ҠÆ%Ė+Rf=Bٹxi-~Ekꚬw7d.D\z1}?ؚlfES[?ϪRb5-rYl&9g]Ak35= g(]LKX 4ZTlgVd n){KkƘ7}hUg?VYɐYY'nQ:qe)JE/*Zd6^=̑&V8 5{}i*w{ih5%FsEޖƭed3WfT]lrIޞ}"Iڃ=u,T+3~iV*S#mv-12*3Z"%_i/,VfiXml`Oٜ6wwgxجwyDh2Qmc/+'l@;@ne 2Nd= lᲭT-!'n-9G\^$-Vnd%wFNKM;l.j,dxMj7sch9KCيM(o#$l%Ɏ M^<|iVaBڍ()SRfs(ִШI[6TSpƶZ-Q/:ZZD+dh*E*;=GǠsV+ph <ɚH;Tf%R\Y3iMmgk)Z*3!oFk:W MN ĄgCm˫i"Gj-gzx‰-R-a)hå51qI _]ĵ,RM,FЌ'zj;DMn:c3>KK3VBك$3!>JmD8,zrΐ&WU+d'j⋴5lwS2py]Ug=!ڈگaB>4&2kȸdjH+0c sBՕO":55Qb l2M฽ r+!(z7%IaKplL y5}-0$Iz%[T&Lb+"i?۔^O]ƤB| t EUQuX 7z& 4\-hiUPFe2ڨ+4 YYfgnJf9'*+рwF n J1Oe5)l@"p%[*6B%6#nb SgzBVP4KOSg)٬-6]oqخkR xJWB԰5fZm53fdo5.r*=VޗS9;LQ+lmg%Ӗ_b3e_ʷ[&dS:YÞg}v&)\U`u7J:Gh=;YJ5$r-dJ - ֠`'ٍ[ɵMв]X 3L؄J59WMK&[Zj13hCV6\Z>Xq.*a%ҵURíO؄J=r hnIn*$O3 a4dXQC(#ٍʴRY. yۀmXʈք/aKSl4[ieмZ:F5ACGSX[kt#auwFV)Ѭv"YS %դƭNr!"4@H(Y|g F6t{]TEx6Pل j3d0wvʀ pZq>V5ZnP8+*(6^ 5LrM7\xU hJck+H**64Qf2)wF%lQaR;#,لV[YT6q5UUߝhQ#hZ7iȠ&XluDl\#g)ze;XA3nlsq ?.#nkQOڼ\7s&d˪'_X I9keH^j=!_GMCS!钩m月/Ԭ5Y.K5d}Ʈnx5w&3 .؇qOˬ&VOɥUb9{0i.q"6(xCNEĚY6pjpPL4*1z֮j=BsJ 5C20Ud-sIɔ²AѲ؁h?c3$ZQ ꒑-azsGXA6*~*tF\|5)Xn;LnֺtyFuv3)-GN2j%NJuX naU٢b A23]l()r aVԎլ[ *adsVH A,|Y=nVf%Z* XLfBsPX&uV\8J/s$T J-pu lneURA֪*S7kS M* E8c6?a3h#;U5QlOre6(lQǰKN"J1}$4lVьh3Yl}+S6G0#qa2$%qT5€4z &H'-K5دɍmPJvv K<`z KaKxцR mTYᅓ'o*Vva=S!prY2fJ5*huM*)PUFNXMB 4 '@Y7Nժ(D $ń T۠AM\ ,|JPW(Р%gzӴVVp=QeFK,L RHix}Ud0(phGޤHE,d% 59 Kl X Vwou؎`*ȨBXyFFLAq/QzZuu7hTaIuWCTdUYf -rPTTUMnYO5>*+eXѫIh\zJL NeFb?a(+ـYfjtZOxwW5 kq3PUMHr mRbJYD×iN} &nP3S]ٍ5 ]UMܴE z( 9U I*p_01 "-(tuS3Y [`u Xv}1sk+XZ[M(HȂӪ7Et=m*h7Ҩ֪=]Gwvv4m:*U :5ѫ$ ;qag%jTLXr]5ld#˘ȅ*;U`XMm^4j*r jQѫ)* 'H'LVvDkUW1M &б%bՑ/22T)  JlEyD ZD~t\*j&4mabUg4~хJj%ք˶]`4.A+YP*\Ra[UWh &5ˬ^Vlag(MXjIHhɪ*Ҕ0 \XhZ%hK%_,VYeрJhTW"qӬr%L [JDSVpu UP"Ab˔11LHIث6F7 bvXf-tlDAsFgJ$LI꫇\% WSX]%GF*&4i$!H>RUᦔM>\h5N2aBQe**gzÑQՊ58,9Aa\CK2#]v#:Z ipi7 ]_ebf'NPb 40:ڤF$N45nbKY,YjE9JE\"Mf- ش7egS41qX~ܬ!-T+Ȧ(XwGŸET@8nP nNVQԌXXG]K6qɥZaj6` (kdu%h@cQREe|ؔ8CȊ7$Ẍ́ 71lȇ4Y& YfeY9;Yh38No0jj#LҀdeHX Z1MyΔi{POv&d%uб i򡬲FF0>1A ,ڌb37iÛZDṭL&IB өlj5ѡ@et Y3Lb{Œ'L4戗Y_%W6(\tSqKB.㚸zk˴MLyƍ,VQU]jQIE*25'QeNшVK,NT&5))*l&e<%-ېN+?:nK%G"s@$K, *0IMYl5a9Yc/" -rUFB5>lQ:+dK2-FzV_ ZFV, EL;TJSXǜAdFEҹB×[IES`Z@*Јvcf-zdPaNEq ˝HuS HXRlJRkEŌ3ʟP$e52FiQ:VO )˅!:Jhmmf?G؇Ym.ZU=9ZNf6EDif@RHju%Ѩ%Z:54hkX}3:j`/d+V7\: a! PK.J= Syn"KL ]nY6#kB,U42ˬBF# zjd$ )KDzUYg \Ĕͪ^(Ɋ.ZM-ZFԆ$j+kXf2M[AʪZm!c8Wr HAz'MSDaC⫣18c\ѱ̘˝2SWeiE6 h\Lm#KfJ,Ԉff&jQ"J6 SIhbXKuUD/lC*T@&Lٯ PzX& Ѐ!51`F57A PhD(j,$#+1bF5.QT I2uTSODv62adXċ"bD-TK,Vfj`-TUuQV欢ȹ h"ӟjňmӜ2 Kk3gĒe*Rjd#tN61kKSF:MҰE+po:JR M*.:{Y>.Ԩv5SY&Z;Z9G+zTHGd.SXi&l;2^Yb!&5)كXs°J(X\8Iz$`fEpƠ&hJZu1hLLps M(f6X"&}ou[׌lgpᰑmǓKRj 6,g&l !: Zh2.XQmVWY3Sۮ*1b+Μ1kO^&$+.cxzBXOeP2lKVUb5cHۯXGlg?Մ(Ԋjg䒩k€uhGTdU]f4㜍TQ)!Z HZTc{ZRle&ТMlJB>qqE3[ԦlB"d#,ڤd-`ZgVJU&R yLkclf?A*d}Ķ`5 ^YS)rjTS$XQ ɛzʬ~5 Q [g6u۬YV+P'XlUUV]%\"J4VR.*JԬ k+ߐ6TSU\Y]3Lmب`*zd7*VeWAa8AMj*JmR84JJ2`jR&JÄʷufGǘdOv"o+ jEVb`b h=Rg7hM%[ȌF0eUtؤ:3X]vP lb:aReʌY|M&4fŊjR뙡c%f,tP *1x]bL8l ZܝMl@[BzŚHZW1.Y}Dl[I|4/-d/0YYltl|~K©Y1;G4j ;5e7E OthwV OW8I[q3%ɂ ŌkpyҨ7`_U1Yd@P !G0PBdP0 Q@6(b( 1 eD ea(PɆFXEb !B88# FptN FŲ0a( #AYȄP,( gFa#ĒaIhs"듉+rk(}R%4˜T%s IZSHBUI?iC*kUg,MsQ*Y^.MN1 =6i-?+cF]R.jt5iJ=]B&Gi0]Z`o, jj~OF2\榇XD rR躲,%wS:*M֗N p^ St}xIt4q+%@-ݮ&gG%/G48ˤwq[f:0c3 |%bּ]bNFG̗fg }%1vLNr-˭;}_zLX=GՁ`t0i9cҫbUM+D3(]AԟIfcOʌ36tH2U♼Nɋukz|m p5g ӊŅl .Ь T4Զv}-YF'YfI-a35pˆrF}jr%„PR<$Q.bKM%Y$g4^ŊJ )BKW>#=<55i,eN-G޷f13ִՓ0Ix9WMux m~•zz\[u';iZ\#SͫUTu}4s- V2=*8TQ7AjvܓM~Q~N3.VJgYN‹X39|SCqk$O1~*Pd \ %H{-ZYee,wYO~A0:PeǴbLuvJwj"J\72i\@ph_hH2'Kg2T֖/ nKViIKTr;_˨fޕ{hTȅwOv 3MSzܧ SM/B"FmbuR%C敧yK5@vUH" qnz@,ՁSFX-֒a(CI!-@ЙLƄ$[ Zj7WUhq:9ퟺX(#=z'm$˖8C&UA&Vj2+_M|Uj4s(Pr* Mg-sRd+_^lֶUTK%MNi-:L0Gښ=뛙J怀,"u-X:HuYyWՉtJyLfB%ma74RDZu6j5>ä̦1IvM3.My[rXD |'9PS!խ1WꔶN;JմR;kǾcOSݏ,a:A׊;˗UM@2[.Pn&i*3լ*A͒^ Z)c-S)~7nIi~G8^JTkʁk"rGPρԀАe2yBU-2\EcRIR50z}n & 'U)JV!Ѯie2JԶ;媔.AG<#Qft:kcpeR7Ku˫GY*)دn঎gWՏ 4LЗzS ^&+^vO52j9LMDU≇T~F'Dld5 ~ب U:g'ṜNevUk ߼drzW ~9:MfU暥}:bEe^R\-KTr;IT縯-R/]#Gԙs"|0qϜ`lK$*}!S/턞E+9auMgrz2sͼғJ\'T'n2NNy(E,MKd+̦\fȎs8%M]&$j4~E .x eNOk˒JÝ:}Fjl6)TkAtiI{uWB^KΣ3exayyU+]^4fԖm[O*7o~IBL.uTOfY#*rl]R*Og좕huPhuX{xx2/C$WC)nkJpz[qz =R_m9,8Յe] ƴ#_ f~yI _*yo'+Tc4+f^/M)`JYd,6궬0I^&Ae ؚ-G栍q>'mԯIq3ܽ(S%jrerST2v:uWoқkHcȌd-$c][NM5o{8dlN%kl/Nuj[\j晾uǒ%XUzUY&k6˅AҲ|mO[JUˤiGO99d7ؙyƋpNgS,oCub!4tH{%B=Af![XLDs Sϔ]:NP*}]WB(*MmsYjumaIT~U=MRlE}zYJezҩ᧷l^dusZRW}B Ds׎N`aUɟI5v< ̷Rʕn.N4eȌCԛBJ1`K'7I׮3 E!Yoå ZW\M:کSKHXͿN3_]L][ Ф{- A't$jJL6' > lG6j=) u5BWU®\66:돫uY\2mhotwxo5RY/ڐ}LɨJfef/ȓ2DubxuE4Sh>VjQ ՄH_5Yhhԏ$Hs7~{U^/Q*3/բlBh)Rl5~QQf*z-^imY5 *%*l<ȥΊ[Qp5:t{ HWU(WS-*s\ISf5vxA͛qU4L5Y;;{w*H)W@6t2[9]KJSd]jn4>=mEnHNx_CyjS=]Uje'?R+u4& Hv+9NK7T1T>/1G{Kb;=2Adgx;'BhvVIy&D&*~ ;}yƣ{ˈVKU'it^摬q!/KoFZl,5K1ƮX;\3vZ*s5ޝf-T*Hև鶔ژS]\F;2Gɳ8Ox;tz{S~z ]VJSjrJtM`*ή7t{93= ڤ7JLa {-/?2056 N\B[wF%m۷9$A 0M"UE֗'w[Mxn5v]4]66Rk5 r5qΡ)+uVFǦ8Qև7ޞN rdЈNYW5/LTx:\Aι6p"=_iDԎkJLI7SJ d4S}~B:U RH#^:E⊹T/KͯLktuSߧKI͵e|JEÌ$YR?rVhޛIUbkOd4=k]j:(~B\K՟NeOMqbSᎤO1dYBNs(nR}Hdհ;CshZu9v{{y}5Y 8@;4ĪOĊ 좞UL/3ԩPV}pb4%N'9͉'KK.U)jꏭ4"X^I e".1ҝ]LMռLQRei?E‰lN9܈^.fڨ[3JZ tJugo뺥ItJeCR-e8ْ)oJ/ 3$v,V+ts L_݋wHr;f帄UmP{|}iu4ڡr^IU%bF 7;ZD]SFޛU;?^)Wq룶|.lW S=&ݏ `R7qyZ7<Mk q~)ɨ0<uePuԕe>>2MMYgkqof-KWroF㑧Rݮ$ՏpY|f⨊ܧۣKWijA:_6U_OZţuI}5z|fY~eD;g$vArSۨR3TnA]Yu[rg2z߈۞^Eݻ(jr “zJ l/Դ94z;YGu&JTRK9J$ߚ\EN+dzTT*baGCҭ)B[#[]eu~Fm [a4yG%F ?BxGd'ǃ'[WC+&I1fVⶂ6̉oaQvfhSsi,KBP+n:y q铡G1 F<_{iu)33X{tpll+J_Qah\.aȶNJqծ~aկrR1Eq:&RN[իOB3\VoMߠ$]k^JTE-Nkr|MK s\]Yឰ"0yU/ӻ64&NqY+VUrڴNSގTq܆œeBTþ $*4>}8S/B&|u}OM3F ^2:Cg&M-\(]Fs|:3j9~Xwmkm%9 ru%@d-so %K I=UT0Suf+jJtVn /Etٳ7v7Z U'ݪt.Z^xLԙl3G˯f\*m5A*o!׌=V$YCUlۣmAmip' BX9ڹʜ}mM`u] 2^AW2Jo`mxi ݴZ ~js*v/dkt3eibH.7> 9'Mu \{V vKI>_b(ZJa=BSS3X?x#"#0tg9ĝ[*bpzjZC˷y[+eߨlalqQ6!MUZIT&RBx$Pg1Ov)^(ی)UMҬ<̠`^.VnBpJWđqvr! .<ݛ?w2#dxƁdIxn`C9ң]^)hlHա}Nu>6P~fGZtPR1u4;I1Ze ˉZ.*G ߾Bΰ,nక#󷵣^F/Z5um+D{!~WX7$iRf2i6KR-Sl+|bdLEĚn(0Vwu}H4Rq [Vfxol!bjYf|=y3.pW&!C5!Ϗcs X\#M=Uc!uEڬ_ GQNj pÒSbWNUA'GƠz\]V>[|j9ݡ%,iAdP^ʱDut@LQѯ>+M:lv`L`lytZCjU?yEa|OʎU2 r }2 u?YE8./FdMp"eJ%e^5e0R3,Ly4*Kk:}[K+ fQ:"N4k_M#QP++74IQp##u3[|l["YrµdmpՐ)'B*ѱ(\UkS).%ThЧZܸKIo'+5_z饘*YpKj,Ø)9K|Ғm巶GeEJQ⥦kŰj+'fZ&_XmYXi!v{P[VzV.[, #ʅj dRP1đ-[_]1hV;4ղUuǫкEcf}e`:^!ud1';·14pk]=KvQ띶J:oӨr;SAd_J'|+Uߛrv=iW(gZ]L1_ΣLhZX]|'d07ȁ2|lt%uo]iʹgjr394Hl'(;םc^Q;6vb|.luV5z E (݆һR{JHe6WO=ݚ&J`fYHʺbr;6usq.Z]l&[V홝z3oS`"oc!5ʤv,V&4VaZ^꼜S:N(yj~D-A{xe^ =--|jǕq T _֝Rt8oIqc!uTǴc[oM:uRy g}Gzsy.Mg<^WkG6%TB;)R+6g7o.A^[];4N\N.u|,US/$V~C ׎m/:CJpvd%J˚,f+GA1]}Gݏ]cj5Yz8)Qb~8&˝kfƯNW]ny1\fQvcֲEu2oL)T C*Lb:T_+Zu6BN$qS0]f<)qm[)\U-63H"JW{)Kȕgun*WH87H+mu O/j2ݍ){{@jFԊk=7},WC8 ~+݆YVM}ܨx&Ȍ`'3 ; V8rjc*̻1{eܻ{o{ \vV(:۫8T%yʚŚ n6 uKڰiUn@[_֮miLr))%[^φv'˛ZQy;7es}iV5WwFxA!}&g[^Yվm n]"pqSsKPlUnomӨ<#7;r9CR5öRݬ9^UvFQ ?]53酒F{?4Ց nN "ܞEֲpiبUN0ºmsk_NInݍMڹ! FW}gR9Q*'rzV/A*KgS_@l,]N;ѝl%˓-*ez^hƠfuo 푭b+U7΢]:bm!yWlV2Y")Ie|& z8IBPW e7y.flRn+g]}DP}yTƳO%D 8p=UdoJv,M+=tM2vةכw;= Dw}xEuztZ6|t4{[U8oP)+f-VUWǴTૢˬ6J;-eD.ekk;"|r2g 3\W؆}e LjTyoO2rX*_US 7\EbeF!V.1i9DR*m,i]_ hо2T~ NRçZm/35]'z5IU{R-Sr-UvO\|R/؇KUkсm;!Wnm"$O |TYGƠϺvQP!;5lo'A3ti/=NW}<͒0_ZUMΠ>7m 3 pv=~VOV0u0H0um2={)#_ G:k4 RN1;4_ ϥ}Vyz\@ո\5҅}< AOws8\f_Y^sreJ[{(הo6ۊ)_ZUkt,;ir0{bouP~~ǟjJ&v%xb"je }~WokoP}n ^!]sUGnpKY8Cy_ofq ̈́}N瀸1U{*2ke5cg-!ݥ]#K6Pi*sJhqb,בuP;Bb JW0O%fL׵7tgCݛ֓4?wK4y\5m֝<6HբV)Y-.v`ڮn'XWhueʴ<4-[L^5s(q_o/?AS FO³+3__?~ .fv.Dj2*>ai%Kɕj}pT㾶8)-Wf?Tɼ꺃)[d@&cJFx#H9c*n%V6AVquVS ԉMFki/.ct?tR͒T! jw'@}FG> TԳ ]Yc`Yz*RuBSonTI C)tFyL2t$EҼͧFLy^)67 y@z]LO5w >[5+v)"0g#%iή'yWr3.*l3ȋI&lj+^Udcաh+gY;ۏZ*Mw v_HNʦhՓaڝ$-Zm:wh2" _ .oҳ|3фWG׵=h/$r7aRR*ܳEQ.KvgjE\eF._i *y N3}=Njz ߥ<`c^3Ғ,k+(RMNqVCdkJᗎMy vaѰ(5m]_DP.bꐾJ x*E »`INӲyvIWoAOߵﶚ QQٶYmlvWq%Qգ6AMv嶥\ͨFs̲fM/*e+x5ֿYm"#3aJ`͝O;Y]?]/E/"S.mF+|CerXe$lo2h.1y^9},7mR]_ėyUzAݸ r:PB(`DhwJӕiBK{ΏN4'jUlX}.rTۨX\_3l`-+.+ٗzWYvSB:=:Ezm$k%;E7_6ˀ۶G(9XgK;::%_ƞLbn>J߬L{Kf~CwJt N>눴ZԤIzƖ]]b+HV(Y)WSSW'{}gx.5ݫ9.jlS)Un T֫E[L+2i؃DnvVﳫZ2= +..lc 3 IE]^I*3]Ļpۻ5]%%9oa-=3UpS*q2P4d_wVkn9$b{Qk޳MA)oeSr5։ r̵eum/CuM<ŰYƃ =,<25]]ԨmQ\bYjvj ߾. rQuOTJ}|0Un[4DEբ+Dio.onm-OX&ejDhnԍ)&^R> 2\GlQ[[rx[w To񴘸m)>ijUw-.YE vRDZ cm) ,}2ZW(pw:YfvVI~T)A`?W' egjMhY5ᤛI0PQy{I؏a 6V<ٙ8/^2Thim+;X.r#X$Volw-WūoZV~`C \] mǸ8&5Smir-RABc 7ôJK ٙ!i j0 __@ at?͊qUKgϔd5bI x_&4GIXTUHM77^ZVn,2x\˚0V]Q%c;mĹE^Ѽnr+kxjkg"W[]LsM͸5~]hN!VT۪-+F;_\\3Vn!XO>Fr{am=U lEiuChU΄fk-]%#Ci"vl&ŧ%e4$f%s91fMrj㛷vjRaKBSV8foR~aZf^Q=\0z+mDiU.l%!BAh<4>]"_eמRDݥ|f=͢o@@›+f4,/LWĬ/#R `)J/sk6TttKp}vyysegDe3E2aݰڄ[NUOj4N}|uojXM_X-0d[V{f#iwy{(53tzˤJ 1/8i,2Y{]_%Hq,gi*,I1Ua#M\_֚N۷R/˫51Z1$TkJVAwV\8ieV5%b˩=݂׉myj)F#n7Tv^dH}oN{(cѳNJY+ Zv>c2F,Hnjit1';h9يbdP::W L橊cBm~։QU-׊m*JJs=k ~Sm{F.&{ukŕ+MAaJ%6sͺ, ׳nepZ^V Ol JMD>ح4 ?О ELEnmf3C5ōteP󳡳!]',3TT9olWOKQ Rr5HV ױȼTgyE"@*Z-^Bʾfl;]d.[g*z("岺ٵĤuSl$u a֗&Z=fզi,鸽%Uܱsd;$ȇ۝{]=OeeIhںS#mBo+P/? KڑDwIUA2]#irbYbꉐ9eMؙJȼF׎Ӂ.f&82R2$ݩN:izd{T/Ada/xum!L%Jv>"- \PRJ̷\nvrcKLj,EC7u,3hhJ=Nѭ@zEj&boJ!mi̖eŮpk(+}3Z^㡯[\5gtєŊ:~/z!R}sSEWfWjv5aŨ6hKoSM^pI^)r5h ;ڞVfWI3L ql,%z mbofsK` N.#fCQj]]꬜O6rD_~13 ^aq*U_Gq_KvLDcR - *p9sYa}DɌHWڵ3{/YI 95V㦂&?a22$Yg<ӧ[]Vmil%LYj:tS%oI9Ӊ(J+'L֍lu9P룽[OLrtdjggOLUx'{묻-[Y䪤0\{o;n#*L,sN|x`MVE\Op*5lT+;^bxR쮑.3,D}O_0_M?7r2UFeU _C3{޻a|WΓмD5ak7NS)W"&{NjK+ښ3%?[9+hpv171ݼۜ+kf^o͝mu. gB{@Sue#1xk֜ry9W e^.v-y>fx|54݊@X 2_$hVSS쳩+*mLbư͌0-߄9t`%iç-k:DMB p!plecn:=.Jȉ*T_* |[,rZSs$E|EϗkaeHMo[&I]^>LU&> _姖enji2b\}gu4{ګUl`A@2$(2IԲLsμ6R[$pOG1c;r@Ww^i  봚->y;h%SVkbv]vz֊KHi4TJKm.!Tb\GC:0DĻ9HIJKL7]bDCk=9\RnktK,u4<-H@KdJJ$UP.*w묩|N,-;~iݙuj oFL3%NM'ڿfˀ*#؅\9+ \"[}Je%N?m5^:Ew6 qTbT b.M K=CIᡶZk![L!+uW꫞՚+-m$U`ziah̤K`g +w+w^%jۅ$X{$?ey稣\ގ-'ũuZku8LUYA%Y/Ө-2]QO U- pM˾;ViF)nnl-aְpB,w~gװ0&o`uq OFVf3KϨ:-竦ZYM|Eڲ~0󻫌"Ag4JڷKPaW+nnBExٓ %U|#S7 wSX@TkJuW4U2u:Q64U 2\T'mT;٦U84zj=^imK "7rI).b!Y]VD0z`;* }ҾßcyeWlǏ&{[X.ٶbz tk&Ujix_nwakupؤSB\dT$IAE֕1w:ك s맪f9UԣMSz.t@(ڢ4Y>\y>7EG("k6®*i %u׌b#,Fr3i9Iր787ΐ0]L_Ij~JlK-#;C5`N8ŵ艐bXͯ"vLtl*ϫз cMSLUge˸Pռmeҏˏl ^ }I5ujݞQ3jnc]p%G KMU`N ڊ}|A f({eRi?.GY3֎ X$/Iv$x3ZOn~ .äkk|VOYjΈH uBVWd؆^.ouyT$u 4MQvdoJ3\Tmmj\J.r㶅r̮k6hS,IеZn{oZr-.;>^Zl`:Oa]ueQϦZL&` PkwQ.6ỦZe,ݨVwU, U3mp-wo6h"X-]Ub׻lWus9ݴ ;nӽ-9m~- J,O@2;6%La+<%[$|kmDKnfD eMQmh@rgk<-/g Z#NQ6Mc(Su,&;*i`ƣ@άeGyll=z2Wmݔ Ppkn8V-2GU\W{4>>rjgfK}Vv*vt5Лwkgxrs'sc{_Veu^5 5ƼgOOUtqo'YU'ge8Mוoݤ]9*om)Z.Gk8)7ga=BA(km,ZJ+xTwVk+]?'R(>I7mP=֥epJKYr]WړaQS4i:C3TMdo+і@*4seSñ],B˼NMkCMò>jllsidT Uh{_lOI媖)]~egEUhlgQ|P+ ({WE6.wxc!tYYe:ݘjp%{Wg SQ61az3-qSFR6dsM:)h%aԗZ^j0l(ӻ&{k,՛[UԈA[`˥K*jgaC >b!rJWuG9jvaPxWo%k~[ikZDn=]V6뱶3BL疓-a)ՐXBItώ4 kl_w> ĪnI>^#-'3CᰧX_V3br L3nz5'ۣٚK<[riMP,CˤG;YH\TfkSz5ϕV^Y{̖,jYua,.d;`P']uE.[Txu-Vh} .{˜2,/^d0KG*LM[]עKjY&z:ucP<7JG#B먧aM YdʨKvkK.},=+ڭ 2E\ಯ{hʨT׳s,0:4]CIu_dId5t(n٘{]bot둙Fh%.'nڂmV)jwJح.Gj䤛&ҭ謘fEpleEq,/ۀcaqnf,oXL5,S5,L\VCm Ls" f_ZB=XJPĕ{-9=Z*, 6""m &{*!֮+a[]e%n[^vk r }NizT/*nqӷ-/ejAl(X;]᠕&޹Lt,l` _s:})EKel~iL e: ŲIO.Rfr){W;P )P銲sFBj!\n"--^/TZ0-P:?tԗl3ͳ}^jM,[\Ge%fq5Qcό'B5@;+%FYtQ/edڭ*s/7:oExGX7qMB-L*5"*SL\r?YN';q]v}Mv[ʪ~b)-Ωm5wkNĮr 9BA0%$|v&V^W2ܤ\,hw$ naڮ[v]l&(fjf:Ç.B!PُNϱʹÔtjd 8ߎfeA^Jů:m〗U,W X5)@vQ`j^+(!y౦gЫ2$LSމ\9OV thB7ث ސJ]sm9Qk ь %\zFJU(;},PCnu;~b]Qꭊ͙0MY ]T㎆ 1ӖF2pɳ6^;NSv 'ۼS& їs",mYA]Ev[T{ntma0"i& Quth=r1uo)ϳ lrI1ΖםYОX>b4p@w-}oo9R%{W6ް -Y|uK;u/<{V2"u-3^h5uR ئ^ouvq1O[6T U)zrlY^̇ oaWU([Ks]W/dN\U{yN籊)[Tc-]˲P]L6>ƨV|S/FWqJWZxRUɤNK#~b&: Rbն_u.-S#m,Pf ;cYzAWMiق.@K9KlvRW,wjmk ѯ/✍*U9quQMO!p/"Bzz[:̽.kS)lQnN\$QªsmPT̿ iT*4ZwkZކJηV5V =LF +kΉqƥh`tu߮R|IX|<ʝ^o*b)wX#WԟěHib:4i`r(.%ȶ馍ep Q3\?8ə뀖^:z/lwvR.y:tMshЗR` oa$ ki6s|.Tobm^k*s$%R;ԯ+mZ K(d1Y._@Xcٹҭ.Nwail[LU683գZ3F mNu!Ċ*-QYfx"vf L.Z{:fB9fS%àDd> 'b2lTtqU4wae˺ U'h33ɎQusc*isY̤EIab*̐)K}]_⨔V26A`tyFOOq7]ߎWЪ-`J3 IO]F vVm!d<JZb^7Kd{*EzmD_ܮ~MΥc$Tem 2ޖ⹙SLl,'PO/&,ydU(?Ko ݟkt)sq'x됰SW7̶.xft=)N:b5.Aw/p'G,u'Լh+8F#bBUdڍQe=\te?Z:RW/n#t]Ѫ^(Eh;M[V*]iT[ͽOi^T$m1 ݹ\$iR09?YQb;ouu]7+邲 jxԚKjb}ϻ /u;U;X/T] %:jS 6}Z"~Ru@YF(MZ>ݗ [UilipV Wvo=F&=׺써cǕ7+|l7t־-АK+'t''eXV.o'm )p;|k07 ~^%۶Wvx|f L)w=S@/Mg<*BaZ":KޓT_ȎX2!mv4n CnGEw1h$Z7!ͭ* wr+*rԷvtK}SI^IZՎZޕrvز%_>nK`LoUQdkӠ4._S+/Ȟ)fa M.kxJ1 p83= xL9EaTɚ%d$dҪOK%^M3} QvyRlho,DxeҸakPqˣV'׻3}+]6,1_OVnhVb4Wmm0QYZyg>Ԩ&i4竮O7qi+W+52XN֜ RUc˒ovn07E#_<}ӊҜBgkaԋAkڹ9忪C` ^kUjpZ*}F W-XIc8T_>ʀڝA7zZSթίvLvo2/M32hA5" I+ Q.xO4+z`ӧ]R<c`]~HUwiVYm59Un (U6|K_ΈwȴI6N}&T~SSdĩѡ$j{3/؉$usfnXx\6탩7u3mAi(GRU1=`{R}rr:W;U1!Ȑ;Ԫ%bjw8m/@ͼ#:Dar9;ZhZ;T/!IueYucg K>lkvc*,In1ZeTkU(Z%cMpk`]<%'S3eQB+L"|U z̵6~ƕIɀFrRƪ+ D8G]n%TdƲp*AZ< OW+Zm Lz 1;s\xftUkI3&ˬ̨*xY6+CY,깶id9RN_̫#/'gS&XE/; ;*7XvVY]XD=mcOU.P!*^d향F&,]^Y^s!Xm1}򉍲}K6@SjĴT? IUj8y40WIxkZ mGrڼ˒$`-H%Urol(Y Wpn[MvW۱FO&[YT }ǭ-&A#+7P޵S੟hsd)9AEjĤ7w[mgkyO;a9r#Z M^28Ц::،Rv(1Vofk=pTV}۾f A&I2u26ΏgfE+Ѭcsg'CS̞bxRoMQ'lBFR[VTkna]Q#yP.&y6;K)I&DuUyP6LD}.AU+i3ѓ>i\PkJ )g2hސX]4ᶖ1dXJi#JL*qўVe`PEgeBբSWc-st!1eЕ-y^l{yj"V⻴k z.e -ڣWt?Q{`4r1I` AЧ(T3 &z}MS$8\m*QaHƪy,mw/VKS4:&^a u0k.2pnCmr wNКoN)WRҮ!a^DYR .{3aHQz kTsZTڔ*[#TgC!eh 8gȟ 0r$)k RXץP#Y¶vK3 EA(LrlTb pWٶs*Tiِ:5EMZm)/ՑMU Rq3C˰ =Ӓn̰,\Qbfp_ݮIUcRϴD_{YqPfc6mPnjq=Vð+_\D×RG(-LebS_Z]Rm!`Ex,_w4!:-`5mMK,; omKnt 7UfH'lxm2 `-T*NqfQƱBfMcL:JkZ!e㛮S c -sR`_2G =ShF`vmXKQPX~z{Y;f4M{fIedsKqi),,ې5FPz.µ|=ԖK,UO\upNseZ6>+UQ*״ݖEl?ite\(L~9i[&"7j5mobSN.j(ԁBNGN5Fjef M"=Ԙeb23(Lwckf.Tt:Nɵdr%zSWo6BzFWɜ1%}iH=/)<yf똓L,GS&Hor:ZscYNq^[^䷵vv[e[D>]z]!v)Pjhu?Kr^ |˜ѲeQ)r  QWϺH|}:.5f̾q6QAXk^fa~ʮM0j~Jk˲*MԎFKSըWC}"[lhy<ݹѷ-/p+x x17JWz 8:_wLrC}K'f+e2Pc7fԚ(D@JS\+Fjy²w1L m+QJWpb릚]ؒಡbhdvήlțDd*T"ZZlkG /,b2MbGZݶP8EB^vSvR/^3ޮ+G'Է+-$JY9HUUyolErxd%T\ Fi3uIR66܌zT69ы2^Y'5wD[Ҫ)Rp 9.M}646GЪ']D[%;8*UT+T=ܶ\$RG4 2I/stf@E2r $(R+ FWiJ̳6Nϲ0gUIBJk-5Ӽb)5\UmhUI?%RR+LTպ @ҙzwbZ&ݤYUjOT/O:=;$&Jo鍔KwWJۣ@>c:?5B  ,-rSXW^&pvpD(NGuW dlh)xuDAltY'iu7ң(cvʕY5ac'GkC|Zhtqm=n/Ж nUx]w> vp;{kin_b\\,zǮ*oA׫ )S 2S1h2NR |Y\f FˍdZF}Yˬ wtE2Zj @B(G,Uf=jvЧWP?ޔ]A ڔk>U*ΊڻDA+O8u`Wn"Zc^m+]@27\L"3+]P9:U&:|`uhi1RWLwtb[>co E/+ w4YrlhFGiu)GybB~Z6/9T#M3_MAV|  uL%/XkxTkz^}Tk ^]"Vs(ph~tl:_: ~kԩOA)#PlxgcnuU"4Dx9byW5mJ4JuW:S:="Y|j^kIzQRg'͘]Rߴ` ]bp8EH4-[NDu1?؇ʊ V#'Λhw5:#۳B+(R P{6#A&y 2.X:\yS6#lNU`kd#- ^_ܵڣK:hžq[*g[v֘H˨ͮv>JO%~Μ:=m^ࢃ?Ip9ܗ9lBj~-Am~m?b>M4^Ѐ1QatYiLBƑܫ Yle `]gޔetT׎N <$Yl(֗u:I$uaE~F{9صŹ+q36 Iw_+k{?``9o5SIIuJ[yTUSy]*pMe)cW¡Yeha}2ҠP"UTZU$ PyU-˩y;ڡcęCd'%s.3YUi.԰[yMR%۲TYU SA:t{}6N6ĪGzܡ˼iJ˖l[rw^WnsnJ6bLvvӐR.O6vh"u}¨KWsiΔDTU7>F!/ +uvBa쟭L(P: JnJ3W,AN5HqzEUKצ#с)j-|uzM*YRm,mg`ֱ%0f X1zmTu2[ΨԬ陲"QSn%GVe(ݛF,\xNs9oa ^II"IkfeQp}:SS X5yFQ.!%d41$OrkR +WHjhvr2fҏd 'Df}[m;K4;3CcoK$EvӫU2cyp m*GwPO@,+*UY&t&E;RRx>HהOzO-9d4I7gw҂!UVe}Q:WCk դ>u;O%*xm[NvU*6SݽLDiw*46aE,\Uy5Ty߸*\Dv!Ұr_ϖ"zf&!\`Q/jXδ~/_IU# gdISvmiX:?=ݴki*]7A/1Zx-CiCl/һeyQ1y}v{rJJռ>j.]YUmˈK4;ը7sh ȷTƟBhSw-:'m 3U /AT$jF8i< 2vBrurq1AD;mX:]REG '}&JDICk*=(~y,u3-Ƴ2mѩ/&ȶm-=ʥ.e_*VSINDkMp{(Y%Lx[~tyqEȤ_e@q<9@J13B hwyMu5S#VQuD:&W/Z9@B"JT,nc-T&ɦO*ʰ6DT({w:A+W/+m2KGu&?&5= NH~U RGݨ.UReO>xYSJ]aOk4:>u.mCd 1*Q3~KU` jKs.Tf40,.9 O;Fզ+KZ[, 5;Zji#D9VF&8"J7fL/Зjz4'yIb*RMfH TVUFHj0Rzpn{!4\Vo3"e*򕲛S r몫y7k-"MFVU*z.ER@ߢʫ FRʍ<vkφn"BVZ^hM+!)g<&C l-L#܋ͼͣ[Z_Sx&I6]eFwRFC-?eB+:?U:l dR)-5'\/W3̯6>2UZ6v^ɅUȫ}42xSNÀɲlE|T$s<Ƽ xF۴.u Pa*0N6&.\eCz*uQT4Dk+7X:VoS\ &F/7Ӏ.A+s}<W(('KO-URĮ'.c2#a?VF>^M:5 ڰlBgD gd\wgJkBx9/WYg昡lɩU]4QBbxݒj$݊^B:⟷ّ(dr>gFN2kW! w暰mvXWǠaX\P{4yrR󖪫3+j' Y٭_烪qU~¨1*|tbh;p;(ɪ)6Ѯ}i/# hzgUPr+LelKY@U>JzK%gXTi`JL J[Eϒ(` &R$q_4^EYKC?T+Qtx <06Ura"+Pei3YElN%\Oxu֡U:5]^2L1OaTY$1!LeWڪwvrjAO>%s:I%3 [\oWW{z&nYtU̵q:SN-#ґJeYeI[Aßvxژp2Xp~uTgScŭPu {!% dG[ Oi1s ښ=,շ~xUjA5C c4FZl#9Qi*vI"8%r+^o3r9TڀT1xJY~l,Q.5&:+pw:&%Jj2>e89ʠRU@V'C5N%~xW x]vR&Zq3rD4TZZ1IΡ*W!r7f>ڽShkHOyooUqqVAׄWR4o H&oKǷZmY唭K z&u{eMG܌dv-Cgy˥cSX&xmǩHU.wӥI }e ja-!ų46׬RT!sa#Юt}GXV&l>Mؠp5t|__BSm3=F2 *V4AZ&Wn{j/ԭV٣C]W&r]y^I,V&uf& e8Ib idkDjJ! Pfg //&:2}X⼌mSԵ*ukUe:L>5~.ڜtƖ(iETȦInHMھNjʌM0tjҸJܑ:ψz4*H[a,Xa=rs=#U()5H|ɴ \MgM)[=r<]2%jZ6-]jqd8Q] /0i\UoVբVf%}0 ه3i>,6V,w{h9|eT۴).-*^N_o͐FQSӁn6*]FM}-bpAcݬ=>e c[:Cs4}eBUJlG'j$*Ls+-^ANZ NFz U)ZPei9,Wc=5,2:2 jN=RUJ =@0NXmDB8V*iM-*%+r.(+)lN{ϊܬ0xbS -:&lrQk_[]:͏6"s&乤&9SQcůB!]-Tt&R!sm Ĺ @6sJE7WլVxS'yf`@)gVMS\Je4<6. P:uET4BV;OŸ_Ec,_ve/M(Q"W:[v)r 'IFf-];pTcQڀ],H@w5D;E^!zŬհ?݋}T)o>/? XeM\VP_E*S"ZMUjvѾQ8A=m4oz>/Wg7;;8gW)&U=,mrQՅjY*EM#weKـHq>F^_+ 1\D?ϥ. c5~]UۃZ6!]EfdS9@u?FS Qq*YJ@U{q{zduAM/E=2GtL*eGPk\-VuT!J6hB}I2J=Oڢʬ/jvRtx^Hivr@%N,?Q/-MkJ!S59E*:Q/5q)CJ e-M^'Zѝ7r0⭚P7{&)/zFqivOF+32}C:Y8.AY%u%cT> @̘H7JUjBdҗ$ Fæ^D:_F\zAy(oKZޘR^iZsPŪN'ի 6KˍnKױf\^S٪1&ySaeUjԔwonѫU* Zp\:h`SA}ܦι*.q nѠjZz ӠMJ0H<%*QR/b[D=^M $92XሺMwzo㥗h7{>(U߽aFtɨ>bkBJr>[CyNdbJKKV4WIyd&NM~ iQ+g"YOvWp=ڣ, Ci"n2Ő*kE;̈́Z}&f6594uUa'>ʪ&[YR5鱺Yn)wTS@I~ V)~;ږdWey4%饺45V[}[?4[>nbqE-VlG(+ " \U~I+* 8+ >lRKN\U-v*R{ Ǵ2MSm 쾡dŤF*KD1̫4Y+HJ |I߇=4Az/% &T!gU+ͽp jL3N 5qYR{NzB\AѢ7NՓCl[N\EZi2ejODTf_,8Eԛ&fC*DWקѶݍbSyih#D= O1YͫF qqd IrZyst9H14t?U"/2"~ =<]@nWgK29|葒ZJ㗯i2?,)K"ό&R#=26c0<>J%VVBj)"jv4jV;ޒ[4^hucJn~Cu2ԓI&BO?MHw7gZ!\~l,4Qb2jh!JWY +SKVV+Qwxښ8=I]\N0t^DG[ `s^6V^OwMU*d6mWK*$K'wA Z/\^T&zKly!K0Q0[]Q&Y2,tbvF@JB{i,3Iuc,H&JAj'Zݛ>kfCq%DWEo>7AX`Yd*7hˢR Xu*p}:1ӾqɅ`Ū.I;aNUyڭ XNr1AWC#61t ۦɅT|U}x 7"N5ZBz⻜zh֣K=SHQTQ8Wtagbf{H8(?߹4 e T.TQ}ޚƒq" ]J3E lʩ[wUro%LP*SUM>,Lo"PUZHլ,նlΥk{i7v]}fAـ-u|oݚ>Nͨ>fM/_.&ȯ3l̪Q=@Je6ԝ4fԅy[Qpr>7 F2JGRBhL]vVҩ&& yAj@lC͓F%;b՞\` Y}deu$h̚#U8FGl™Vu-3I+ү܋ \ >fpz} ,UW/r(;Mr\맇qMBѣe+҈#}ukOhpZNS{Ih$Ogp_F4NAcEI5hݎ_A^&sذ({!kerFvOZ/๎:yJZletf$YUêe2%\U^~>]Mh2\ PfOz0 T*tmWv8<@"N*!v.)1̕?%JEݗnI?1 u0?ȏXհ~2@?jUsљET[72q37ҍDd&Լ9m5e~ҙ n&*u&X@O1Ix58&@U0JL*3?A3Ș>1^L9}+ J'֊Ւ1=6*DtVt(  T-_M-W-}{7ڦ1V8x-sRJ.G.UvZ XL"1_WkNǓSq Tm'=Ղ*F˹ۻeF1W4LJeƌlkS0UF."bX+ >OպxzlEU439LD:Jηm%IW֓Kfj"̬%!O,4h'f5&uPCI )RRQ,vvi.@qCrR᲼tL.HUӷ31`"8 s0єJt6ȉgYL&ip:T>EY&%SQ"PFN9v/K;t[b5ieR<1GE-C T$Iu>9 wjj8*M}jJ&ksHå]5L/#y&W3LEz)Ș2 Fn+#>iu]!iXpTŝFv߲|$:]1vm-d|3#HZ0"Wb$MbQ|U:Cv+ԩ?,K=ʨd֑h2,yIXTs=mFBj&V:V(J+!G nXֺ>5*{c&#D&_Kɩ$,tWQ|,/Lrs*gG]-N]m8'nŔJD7ЪWX$FWd*q:~VƅSĔ9Yyj%,5\26r%cJ>ЛeT%Ьk: [`T3x-_KvW9#SMJQMdh~oH*bh;N#\:T)4i:>mͪ2UivْSbE"I2g26¡"4| 3ehj]U.N7C0VOvoˬ\l)Z` j8LLQbFwaQgէ 4zYH!תKd^U0Զ4 ~Ǿ]NE*%@&4\]vj!r15=8o+>ȉ/OHaac2ito09S2 'HVLziI| )f%K1Rie2itRyn Dc:G*DnP*[q.O痳%s}<'BesxNےj%}MNMD3)<1+Kլ[SKU.UgLғZ bͩwxOq.ՈNW%'v _T*44 xcqYEXl(lߥ_j[AN?7 (ؕ: j4k鿊ZyrqMWͬЌ>UjϽr''J)>fGq*uo-y==O BEtPYB]*W' "\@sER` 5ڛKqZ}tyltV|1Ւ鍲OO), 9Lfpڐ":+ UIۅA*E\a\Lz22{Xڻ}so[ e.^-;-r)1]qirXѫHNv5EZ{~RۯbD2aU$ Į_ҩr54ic4uD\[LnfyN7Ik˽r-| SqCbC7KhU0K'I`'i.&!F9^JFՒ鳮ILಔ)K;礻 Fm(gT5?64p4}W+3mM4̰6,J6e;_D: \ Rs\N8/YU.+X[7:~QPvRI*_g9Nz8LpB9U5E$,)]eL }/9Kt4TՍ p'!Dо[β$jMWL T9'Ka>4_4UY mGOH7)s+ wa@˨D3.H,O%N0; Umm姝./RS*^>ͨ*U1f x m%2JDY>'빃LG4ߑ6%I3.eTTih*^#eHi)YVT[hWg5.@P[Řl3+k7s"m\i<ɼ&b1-U!b6ITZx( ȗr;ĿzmSeyk2[:˘tywV%M2SٌdcOH4jj43!+ը2ȂdZ/makN~# B"D_]q8rz|tz 4t'fFE1Tc_(SV4+ѤN;sU4ePzQitaZC^TMtE&hc|-_x8==GAe/4+O6Sx>V?b,6b+W'ٍ!)j. _q5&ߵei8w;gUn"9hn*LXTSi6T45G7gT!3zT)KC `ւIRL&V5FuEb=Qxf~Z LqWuw-SZ\7N\- (3.LU Sӣ!: Nj Ode&44Wk63=wdz8#SmgD[b< eLO:;Sk:;] pYkQNsORД4WCtИY&Qf*3 3M\&t6C-eU|AẘLe$~*5KY[BẉmhLj}| )L :cJnm?M|{k;kZy]_זu% -D4~NWsMϮB[桥b]r|6*;kEqbdj*[1m/OyM*7k+RMxi4LXMlsRi".Fq$#t 2+}sKUfJ#n:{iP"D9-gS*5t LvIxXEy5V~U=ˉdY UK+n&Ι+*')`sK5L)Jm#ʒD9LQ}Q*ZדJ"`M>njS=iJ-n {SL*mhOte*uN鵲T&ilyY[}'nf'C z*=-nuhUci6L ٭\\.g6%p&A0:k2+j[UligGrVХQ퍶u;3u*j(vj[*0g(Sy)!Ap*h0}ڍ1K$Kep帡$<d]7f5CiV{wq*dmS9h-UV+R#$9vcDuAjd'%{9MKQk3ɇ/D)t3,%}L/Ls̗՜ƌKUϘOǠS*.c*RFZZ0t\TfXՉ 2*%#62ҙ$*:_3ozCN1VHq^Lw)܍ Y!\zOTdK2<`2x?=[nBӆI^I/f/s4Y/q'X/IGkZ0IV&%HSAPާV]=N?fқ)5R:'BNQpUތJu iQh+-[6&E:ӲeSYh\݁.+J[V' H܌-@@34W-yHDB'/%Aa-ZoQJႵy/L*+Ѡ6M?vD UrR_}h*&YF&Bi424FpQRKi"T *UyA5xD_h^LsH%'ɗmx A_j~@{ˆRG]ty@"<j2Fb$qN3z!w>]`,txиI/;2W↌#| _!ut4gӪeDC),DY2BipA|EU)(,Jrf=I/ՂJ30inR%Ucʁ:Laq^XǚyKPCev[1͠r% " fvg~21F`:9)^{dX_I aVPvVҒBle I*Yu;>1Gzݥks\LttҨéZ.-9B,ɴ|7\W|c m" TM\`z|YQ"Y!bpۙWp(S˗)LU %ԃ^K Y2q֩vh[|g5a̫Y yב'ߙV( Q{9Zbb+='P]*sMN GCN>a>;*FnZ9ԉLcf 5$ME(]ևՉI޴|zzKUM_e5EG9G^nf(aN: ڲx adTǚxbwbeT4>ͻLY~wjԄi+V' ~JnK\>cWJjrL&S)YDJJKOeSm̦˭n( ,9T:-8(2KS.&Z;/o9Ub}/5<\$I)6сa&Йw 897zu (`YMs? R6:+C9%ǝRbc7$+C0K:LRq/t;_DA9Rw*M"O*SHbݏv-yWrYTujAkJ)LSּOd4Ҋt95}C>BGݹ6͝t1R'C*dpR|ڴ|d́ͷn-̝1QgJي>VPY x+)I_GD^!F_`.lWe3`-%dJoHݘVbXa³)3bz[HMHT.2S Hse\uaB{xU(8Q[,ҿ^lX'2:mDE#{9KmjY͑X,Wa*1ܬ'øLCS̃B楑>е 5Guht/&V"@zpZ0}eJ)(bZm tpX!"qy>hbR!;E9Z&)DHZ|s.H+U`Vқ%Ub6]/WRin.Lhj"sС"CjfS9sMm3}j* vMWf43QMSy?9} \%a逴z7h\6m]W U'E'*I$p/B(G_Ҝ߉GC\+_lMn >E dN|3I(&4p.; ޝ$d4о[6K)sL/.N_Ы=sy+ZS \n*MLDQG#$$uљWaD !Ͷr+ +ܒgrj Lit49yIW-4;vQjCT֦ӷ2Cj3'ᬋCiVZ,=Vꕰ #S\+8K.uoॄZUs }&ֲёft>R$<c0"ԴVjDžA ~e8g0M=Ewj=KUi 7v]xgZRLw R4$D8G&V&HAwɤ+wN@W M FspOJ* O8ڮ 3eO]~Rf(ϐ2[Ur TkmVAyXF2TM؜06O#Jerb+BWWM˸H-5W4n&WR'9LC:V*VMTre ]JoNUzWlʩbޠʖlj*RU't~$AixyyNB` 0zb;2b Ь4̞4Zx)F.!LM&dQ+.Zp5]I\C|=bIjЅ@%dN:Ρbgk fYRsq珔$5yhYp\=Z- Ntcj-$Z{l7b&iԪ15]hhrsN\@~t2:&wtlz3T*z `r|$;Dfn\Ѭ̠tRٜRu E:!&8Bv-@te@D |ѢwN쓞=ڷC)r˜F4oɪs+EG$!*OHIkjUY*ҕ!E)mLo+TLb ֍iՊNSO3uIɥ%)v+e(x!Be),?O=[ ` kuV_vWސK焇P &ᇞᗃNM+fp~PqVmz= 2ժN2ze+pEdwO=lÚV(QTxmW VzGIV2> Ԝp_~+IU1F `/\6m=<+'d3D˥ؓ;[prD8.GCdD,Vwtn0H☨GFWF 3e'ި#|*(S|#qDfIii씴LY"SsFX*k ֜m^2?7}!сzbjQ*(1PuQ.0L-1n+Z h򷛻t뭥iiAKy5$RU#^] MA&W!ĝpӢݎSE OAG+=MSo#4:y45>,9&ˆ]T So16.KucNC+>,ffs?%2eBGL-t[.y@g2r!S]S^SRM =) ݸOP-Ti. MSWSf9!GMm FheT dZ%FG' E%b:tN'OK3_բy3M6C^yљGfS$1dFHYG)gT,OsL?F~YFf!lig)Q'IrV.Q$X(LJqEa+tTWTr7l5|so7bruBX-JUu?5_76%WH>s\Zl+ {$q)Q|& ԃbj2"\4+{Ձ#K)eyVKAՁ)p&, 7BBJ6?-RrOŒb|ȄӾ%18ҷ0MnUi4{vad8+N$1RN'gƣ5[)o~K&fV"|/@ Adՙ+mܡu(Q pԉ~I~Ca9ě&3%JN<$#tGC <(IQ kęJ5mO=,/]Vxb8DYv"eAisjh,+0mX>6*/ U'I`-ʬӔ^uIɛQOOe[h qV*]eDgG _*b2D0=P$qFH %^*ߎf.Ai4zÉ߉nH+|F69y> pcoXĮnҏs{#ys{)bҝ`I-iL=8MJSY`iw+iQv~ Y!$O8}Ad-`ef6yQVZ2uD0Em?5]L y8ߛJ4>Q$=y lT9-E9;vKvKqDe2.z(YE g+SdQndV& M ntq9AM-:SlN CIo:N4KxLq|OBqCP^h|;6x)F9PeDWŘq&I|SQI2+8p6)J0Sy#k!jN#S>vMd9Ǥ tGT|s+3X{b-R'"&X$wUmiet[(bW?z=-'㠕6WF@27M=^&&M\աc31Y 8@pJO6fjEUbjxmnH*O Ri fk9>rb-s{VYxLb$-pRReo7]A8( n"l"HՄ qX Sě@ϮH'YhxU TMGmuy9T.,Lӗ)zL_/U-OQ9tHM=_ʦYRvm%2-~R;iEdc-Sݪ_d Dǜ*KUJϦqm5R>FjN`%a2Ԝd} $SoC mn$AN)`lEfJ%ev?3-fNݚJ5O*Deb=x#ʺ E`M1FPT%gJj;Ŧ![#G!cmu+eU&:/_ RFָ&ʢpLʪW{.EigKz);(U9,Z l|Y M8*TBK@isgBo[tjH]ٞDk55 4wMD|"E^\w^fʎqJ݀*KSf;e?YDٖϴDBnG]2O& C.#r,JP1} ܒәW945qkNTDZ,D]y etqު QSfZZõ]j&,FQaOqwM#I.͟f+,#sr4R)0ڔHV OZUD\D7iYZ.OӋ=l;u^RWI[Py"B\(U&w!#@c/<9A)9g|Bd2XFsSRgD [;e5ǮDM')ȬRWen-dD0) jN'lK"̕&{RuzNaXNx͈.zQ8̼!8NtyUuѴ&LE.-V\(pi i47q5.T^L΂R$t!MhU]5-?_ A?;դMs.O3!-Q&S;C2M1e&Z. HVZ"_IկPÔnU9d5Ex5y Ϩ:da)ZqW6WL3B>4tf9O bZ`'KbUg.h$@Ϥ5J2}ԥUMipO¯(FܙҝtNByhp뤶Edik{t9Q*U.-eV8,u^ T=jvpJ4]P͉96L=KSڴUAK1ET *Srf^d8HLf m#VB5jP"e#Wԙ^qNsM*_"Ț6A=VAdz#UI8ҬFW&p5dh}[0\T"$@ir]YiCqʜVfw% n!&(U^-CS;*Cd&Rht*HT-z fKlV9r !K}\X "Z{6xQ D鸊Wyx'2HRj4LuB h2#\Oh8fX&^̝!2o+ӇKjPUJ GpLQQ9&JeV "85ͧrkb%+0l-|YT.*qA;dףN^Lp5La4bMuy]h$G)cB̈Pד]O! јY[~J*jͪʉièf7驢DywRPm\,Yo7T5)EHe gGՏ9I%*|ɫIKB2ɣM|iJ\LL61J HkwMjP$&Ʌ%^g-izᴕ&<`]S,VҞ9褊MɓqzV/ tu[:ffi܉=o&d+Vvg):ҭ JA%7Wr\ W8aG:<C<˰F A~/N1JdJ[}Drힽԧ_鹲S<=ͦ45YsiU+d5{4(' ݜGVR9rTX͋#\XKAJb$,!mVgYK<;ʴ20LVgm&Iw/nf Z-]ɤ r]1Z"Pk8,NҨ4>KCAE9JFh1@(dW2<+&S]\;exiktV\ډiOIdrmLnqBNUjԫkO끎UuK*J ᾄ9fb)>EٙZPJ0ͽ2-ɏp%\XI2fwZ5SkFmdU9Ä!cGXH%T]tz7qL!6i]]ZM0#ThZJ`MJ VQљ"yԪ۫Iq=XU/fDz9᪂o ?Np$mNds58$iԱ˂iJΤɄ|C+c' .V,E6c"oPzzXԡcL%(bFthb0DYE(kIh̛SӐZ懇OͅeMDpjW^602T2O,3|B*j -g#T"9šDᤵ~yGoFٗ3R|UuZ*KSNt` ʔ=㟼pIΕ`ޖ܋kt}Ir0Dwae5YY*˃ϔp Z=#@lUp;LtzS21LC *c"^'q?_.tHJ-/7qX>sI`b᧼ש6=g\DkVk_@~՝ImFɅqz##8㨓FR 8J]vcDgT$b>sAz H0>._ʤn->iaZ-ğ{ER40RM'gh](,QpޠKaղߠx'Utqlj^jBMݚe0PV8z?W}b4pCT8pLSɻɴW_̙He;Y)O${mœَv 8"m:Y@˭+RFD3(9q?Ab!֤񀋕`7|Q zUR IgC Uޚ>C)22-`t5QHghyFց{RݠW"#<.TޟH?D5u73? FT?aO/;(:!N(Ϸ>yRvi}NOǥBsw)h02̡|d"~[YPwf["5+#C(7r]U> _#@ۡTzdX+W7Ě&f?:,^MPF.YN,QDP5򭚒$f X//VԐ*G9am `3^qPFqe2=nJY2@3M!&ƽR*K"քuYY팽4Ry]N8D Zt~玟 stT9fDZkRϢu=W@ѾO-vCxz/\&-NoP;B>וZ';Hԫw :䱓F*@R0 ?Z?07~5ajLnP*/d{LT%|zN(r2|tH90bNw`>$M 2쀥Lڦ8.JGW xǎpmᏼ쾒ڈ'&fg9o;B)EZMMk>zpXw ƥ=0TIh[K͙#_}0LXrU㲤;)0Nc=c˧ D)h iIR~Z(h^A۪S%|b▟Ye?8P0)̛4jX+ANIG}yYG.U)`Hf8ܣx7Rfˆr-M߹8˼0BO͚od4CΈý\';9lg*OS23@[ʔ,<']v>>z~glFBjepe7B*y >u,1J60L(3L&5Wu֔etٵI+4GY\BԋieMeGb>cxH36D |85.hmfZR۔2}7yH!MT>tk}I5{'ijԞ 3{Vr܁bSR9ׄi"[e&i&^І=!XڙlCxog0˚.+Dx-TX 7Yn0E|'7UeP(6]6#uyω&X)J=G\aq_=) MƜKWQ%h P2[ΖաL-a=i fVI)SZ73粶T5՘HfʈjͧNO7Ы9qTa|&?Uw Rk41=Ztl"-8[ikYz%XdU;a8鬩9]nIF ,PW 6KS\J4hz4 HXd%jb3#-WO+Q/u"V'wbR`-4~9i{bJ!C:oi,_:'^/ekV2'ˌZN9O5&(0ѾbzOyfC xEق;"4a%r2Ќ*jareUsyT3=NO dEFf3*N| 4DĈ4IX.QLFM1[Ɓn,D6->3=Y H=9[:SBFAxA{KHSٛktWe%FE&hpQa[3:ʯ&X 9`ck\(B #D>JQ`|Lj6B/C,5SxTR$1Q!z+<̟t&X0Ȫr;̂; ~ĘWhî&Hcc9 Yr\)CI)77xӫtF&(;x 4jRE_W1b\ 4:W֤ea;*M6rr(6(6Ϭ#:¯DDHk[U!~J`9'Fcj2^X rz.큫xP2rDx mTdv8H8NQ>exVAHX"<xyXļ瘅_O`ib^Tzx+ixg8<{p+a5tLNw5H:E[ymر'G5pwFNy*7I#*>rqV^zҚ\֕c`Y-׈&D凙M3VQ:=kC a`73«fQvޒs6#G4k rm c y&ͷ2CFlc:*Ch<ѫq!# )h_Fl73v"{0OprluS &̨6oŌk*L|gxḂ@P/'z rE!̛J s[SvI-RD;[0gj~il&ԟxAX o3a#TԔ8 +mJ1OH hR״aa {V$E4tы'qkD͘3<<*_B r g~d?SsR¤^2/tx6#E#0}yuX:#3Cn6v3/9*.{"ӡe< ԼyDž|++pL'sii;Lg0\H8EY.JAO=JG{|La81 >rfK48LQKd/ e"ܞ/7 ^vG8NѸ!1MCsIk2TYFBQ']zulZ#ܥjUb y#w\)ez6!-1k/:ցjՄHS/ԆQlٗu#:3o@Qr+:zo*?C(Ssf4tĉ#gLepeJ&E!J=Av7]FF9^f!Ҕ7DP*Oo Mz3iReSA#D5^QDer!G۝2hD K$pe-!RqBD4($(?>L0~6r34{8œx*CzʉN7,W"~k٢Z2jr3z(ѸXø*δ5+\9?wqd"j LiSB1VF0 F[)G\!#C̆εD8-H;?G\Urr@3JUga2*g@+}>M;;WNYS>ٴTy?x,v),Z L&,[.>D5 5r,NV/Ȗ{MօDS4]{!G 9Ujft|i֠p_6I"}bL\Y'ʵAU*2m2N!jTv!J[,!ZtFd/)v$"O0S]b+ {a8/:[ Wtznan Li!gT{ItΗCn)$f^Ht3UF<.+ҔuH5! 'q8k-S1S'l ŧ0]4N>7ՔJt{1#j0bNctDr)32 =M6'UsϮՇFDYZ&k`xǘ15OoDZ ~Be&鱽4{FGzh$ YfE)>4#ȫr{S&/+6D,K^fZ8OY#+HGe00Z@R\cKk+L͎j*/t9JY՘(ԣ Zl[krRݘe0IvpiB<ī2GF?tiH$̯{dG(UB&<Fqהt4#H=5d%cyy$V7dn-R-]*L*̤n(DhLr(Y̋3:23Dr+@I=́r6%$E8%->X|E%x'1n:o]%B^qDHV'etvi)2l3a$X<핈 \xީz]}sN_ |k`"d "VtxkNK* Ky'۠o55i}\*= (.qvCIAf{Y0:F犑n&YD(;3{rbl`J:d|NJJfҊj3lx㰗yDts3|tאw'Lo,]ݽ!$;.2#qOH60phr&0*L4RMh˄p_©fDx"tۨMua;GdX:?/ϱJNQX`kYp˅XT0D;0*LtW DǶSFֳ G9[dM7Dkp `yoCzͼ(?)#Jm_[7| Y#hŵ9y^) eewا䗕݃]!zG~(ma'deׅ`CSMI+J@㖍4a{33M)LWvMU Qj!um(z,݌tj; yT~"6$00 LR-/5FTn7\Q"_Y6}ZwvIsY\voE_R̤.nKal̝٨$ezNJ)qkrN!Oܰ{!puevTD!\Hb5#c;y5]"7-Cy[n%r:tAH7=˼**y&wgJQ[`)e{7r҉cW)!Hnɢ_C+{C2?'*"v*02x9iJ|zZk1etdz-fBH "f,p}^O%!  ],~ٓ Q]ז$d(fGuO{)[8l,3}yǡEf! ޑc4Q#d2(bĄ5WΗa "ZMyYX vILՋIh޴cפLѪ.p\w|qVʋ*L]Q-evYlk*ǼN`9܇>8 X-eNOÌnwx%ɨ 1Q5 액UQfv8 d&IU(9\vQ -Z?OU`df/N? :0k.{Dk=4aOS`Y ^ 0Þ6WU9 ys6)=gF3DO(ZH>kڝ #ѵ.3 N8zUu4nHHK{`3D%zl)K}Eg:lɌh)<ےs9<<}K*ΡAc#JLO<ʐy$I%r56"jfK+aJ0f2?=뻉%3lQh5Mݭ p*L/LP^Cu`;fOSӼ/׺(fc2H#+dn}ODsY-b-r?+4dQ[#\yCw`jPk;$!b}t\1:]p]D#LMl#\ ̑+)͌nEF̿Na%yrCi.jNޭ]uėh&Eil5ˁ,SZDր&9˯Эr-y#BO~ DwV2i&epQ(? ֹ0i6u~PJظhݼ `"ly*]&=mH4z˘eIS`SX#W4o \QzG܆/"3dbyĽfhT5NWy^ Elc fLل4-]Aِ`B pzvN{;cZLo!"nc<̄ï.1\IVww)$lNjE|Vb[CY~ro›6$|И /j㘾"۠.ٟݎKa/ěJ-!&6/˷ xg"P9_S-^^e.ld6mOt-[0%\ʙ&Ir,+$i>Q1|,w(ya Va4Z+5Ntd̄PSuh2^-똔5 JG+=㮏ECrVnaLab,lfv3xzʶdfkK',9l Lw+X$$rrUBDl[Y]mm\&˾. =#cS[VbPlZ/܆,$Oلz-YuU*"ȩʈ/-K EJDE_0&1c:h[;\b?R2.X*F}̭PnBߖLoRA _g݉eu8SOsR0O nQ z[p-8Z-K.Z>E\W()b%%_hҴ8Q1pn"Mz6;2-rȕ<~FeZ G,tze'mc?ؒ/] fLP[\uUa]j\,sK/"gSGWP M/] OOo-j1!_ &)1Be(0~N6ZW3",EGÇP9J45B<+qt9Y}5i J0vʮnAxlk1ypgehQʴlNtejUV,͊jJ01Vʰyy&f\8jBf4-bR4x;)q-<@s? [$6sxQgFVpjN@+nh||4]#U\X!.61DWX0aԍ~'l'@u]_>qܨEo7Fą^ D↿2&fv$Z8VI b %4)4nrSR|_nŢ᣼fp{WUlO8Ro $"װ-u}FNSǓVAWqArDȒ`2, dZC_ĈN8a$4 Zg*4f2q0|d)@ƖUe?_3_ +DZRB}XWBFTMr$cDi#*>o`)z*Ҙ 5 a]qu!3oalsI(rR5.dqzEUDXK2xC/&j:DTK#[>].E<͌O=>y4uG,OQ\)D1Ȟn l ߰(>F8 ܲA# N 99nM"a[C)bd0Dx7v7CBqLґ*1S kɱE&am\!dbH{` "TtN62 Aبn69FGjKQи{GbpӨ驙UZ~ΙNV0]LO0 ~@Ҝ Dn./j"| z52# $)p5YN7S1'(<,s4.p1M8n!:Ro񒽽렂O0_h81VG>yD2,GiBhV E#Y30 LO@+wEtebDz3LIнqs#tm|8F֪vD(ᶂޓlw?.^<ڻbǏ>=<)Dojo˕2Lk0 P'G ;pӅBi&r~733:Om.f.Q{(+Tv"]YHG])^bE9\9ǭK|ׁ ̚*{8o1[w]q<:,?#ų-  MO e^D%b5<( ۤP36`VZitwsgx&3\9(Q͡I6g87b ]54!ќ`(un'hsDapͅ -2&\tnxdFƍ3C'p4LZ{Gue{)"sya \q7a[ N͘eG&۝VLg">yd}%+U-DpNօ])uI,`ԝU,Yfr}'QdMXn7wh/ѣ.bd_Y4ԁO]hps8Ilgr`?L##gċSrl#qHv21 ^evV&C/Dtl0*QelCGհAu`i?_}"3=:05*8O,:`Ws@)0 -EVts沾RCY˴ a;tw'QqnḢnN a6'}#>C(۸BUaJpM!B.ы %E-Lk3Oa[;\3>g3~OjU`s&u"/TYm)c {wDVXL}vO8ݴJ 0V4 ?0 DiblđtEt4 I͌X$_&)s<@0a܈!42$B$$,_I7|-@/ /`<%BTvׄaly˰߅N e[n"Wr{2\Hb4ɭbFxe/ju.\R>-fTŅ&*qb٣*Eֹtn%kBi'5p, d_CޗWa$%b?[]a#FY9bc?d'<$ȢŬ.3"6oGRȯ .ng؉k;7L$ zGm*.7sCd{_7}'I鳿,qVn10d'LjVu2ظ6'}m(Lhrq̋+;ҴMb7l/;ۤBTd=g^M{H|+2aY:z/lc5e"4J-6ZUآ&>"5afS4Z [}7pBUf8ao\R5ML&gGF:|t1)$\O\bL{9-a0 tHP[8cTQ:f5m :*#>J5:2+#tFg~E++vI(B@i`/ ixr;쐓Zml-3ofG 0꽐.`3}O^9;31E'lfl wC{]9ӹ%#lp-R6mXemX+yLʑ'nʻtSsGH `{(`ӟ#:CF_t%ْpsi"x6RE_UPc^fDI_.J 0a7.iMo18"1ڽ 9h4z&F&,<+0F&jƻ<˰q)XV1HUd?ondl;C͈?2x=/09^D~. `˜n҈Mn-,L|uXfN|he,%ME*!z! CI^ɝa:u_&h{tK"O(b$L-3ѣqy# d\ݝbxWe=V!N eTwp 3#  _`sNOԢw1Wb  6%:Q$Y-pb+{YѯvvKV{ 7qU~1y"[X߁rƨ{8njRi?%00n[д]х%@{pZ"E JC|w8Chx"+;3EpVK7H2K:MFgx6l:dev'dLK'#}!iӫ #`̖e=HSI䍲kɚ{@ȸ`cZ>擬 ` mOH58xE:$^K<.39I< ,M~eyA-и=g^vUCM4m,2lw+a?MuYyjʿ:M\fVUdSW.̨|* %tk|[?Z`P18iw/8 sZLKa*ZoP~( Kff~9OvgDTjr1Qgw "6\\ԊQݛCB׌zX :fVy-JTh-weuE!t36ϓT)Ww}~4.̣7!#q. .tWxa h;LqIGY؝6FňN:L͛e^uY2'xXpU7:>o[`Zh"Gy1gښD :E4rSū/0 FdO+Ƅ?|DkDl=n5c[5Z2{ĵԁ8OݑeM [9U=;ڭ بE#=^1 Ĉ #ܐ D9<2n,{(FT7lr$z( g`\&pI)9RбEUvf4-a >/*>Eﶰ!ٳ`LvDW긦Q.4d~{ҍJuhpvڨdZvz(ܷut(c=vԋrХsy{y pȲo8ΰhUҪQ]CKXԃGF+|IZ%Օ"L +&*F'{77S[-7̑䜉XݽptoDL,eBI%jNJ0%::-j)ǩ\s>,Wݡp"~4byfҰibjлkrQ#nfLcmrB%6ç#V[n&GdBNJT~rsrpv+5 3a[9Q UmrwPj]"Ss N`"?۸>XTa:Ӥe9z~yh:5>| ƴ_n f^JUGf-xOM-#5뤈ha33*=TcX'zak8?ⓞusI&UluHJD;R՝ "/>nGyķvI\YtsfDm):,TB(1Wu3H%mKr$\%E#c?蓼:{DG{ׇn#Bb.eDYV2$xsYMݰxm?e8Xdm}l[24!\ѭerHX-PRaި677Uh(qmqA ߈j; OhJ:#9 w˽8>3OSxVs+H5Y`]a6 1<ƛI87{!ʪ;F̫@z׃Ɉa~ַwveͨf}8N;#Qb{!#P⺌jL[Ktn 9Cugs(19E]{8ԩ0 `G2is~z-KcyTal"04JqaErEtBZ\H0LA-wԕa+!d~޸(/*&]L^ɍP9WsqF7;frk"x³iaÞ=?xZF.F7x)\] { UH ]ZDEKH]%xD#O&5ntgc7pAE3z=WK\RLO_Ʈo x*5\ ZN6='*4\5Kȥc\uƽ 3y }mYB2Z99NZVBg}Q72 reSDߎ͆ĉ>qmaBj@|uŞiE7!j(iJ0_!ބ C9?KGMH.jQϚ\ C70Jh9^U K٢ƳD'p޻EIWaꃿ^.·`( rAX&WRE UMXt7sh7ws/OfC$"lH{hmGV}֒K6!weT0Dƿ1ґ$8\Ifr3Db3~ Fڄ _S&=lCqXסA䎒Op gBE0IvAWtck0ixX4c2|S -bSE0 jO.$|fGΆ:xļ@h;r/ i,*pͮcDOlA `V#7v%XP'=zv d9tOBpγѹztjt >#|dKAVqE I2G =ɫ8!=q;&yvY-ZXxUDmxx#Q9ۻJ&EY)mhvld~wp]QgdU?I3m6ueb, \Uui`<킿0 9LS_=&r0iQܭS##8 \W]a/ +`SE'p a):h*ԍ q#sl9d]U`1{Yѥ1oef1޲oY p%zDHV8 EU>Sĝ"/[c#=`;e1]Q4* ,pe6/T#F)y㇬I"4BFƶ=`;8VYhgnLfy-Nn Y2WwU"7^Xh^ܠ G$O^!Ym#NK٦­r4+Rmd+{]1ZhLmd^>a;a3#@Tb)+L>6AN2;Q=.-_ePYV2l2-pd8c-VL XUF/&~X.Hx I֬NjO:ׇP;_`MxUc+܏s -afyvvt.n94o2 !&F 몤<jesiaFQzBxwUO^Z^"ӽ3VYԬY-`L|iQCVAdQ3zxz6pvwڔ ARڸmJ9ב#fdKJl L͏U;wO%Sv%Z:O_EdcX㦊>x,x+)k"~|g)#äSnq~e >nzlꈼ%;˦",G&w0nx'nJ`6LvCj%lfN],3Q[ aRMLvYד6?V>n`+܎Q)yҵmq3ESѹﺐ^ 0lLj%UIZo;2mCŸyX ꪰ1S,vhD ES׮b0SGȗp97vk<ȃG*+aZw5l7bT$Kn=y0'Ftv=xLd[@D0Ej1U&LX-_ŨtXbׂw'~mi+Ga{;^{WpX }{,"N.ۭ;2q1B `-ۡ4" ݬbbt 1.Lɞ8k{@)'ZdZ<Ƣc*#"Sǘ " rDP̂70P}1L7kʴ0  ZV9Q[2&qY^ آLPkJldd㟦 j;sxIr/)Yc_YsaKCǩ'5\ݔH1: YtzƦqg1q!ɓ@:F#V, NNO{`+ֆѢO?Kc?|4 -d}xAxA쒯La``L삎H"D\MXG s<,T.=me7wm'nn6*Qj*x΀Hx,p)'zn" G$>󃽞۳YsQ&=2 C̩|E66[ұ t!_nK9wE4 ZdTx?V:c`xkɠ(]7IlŮ.` FH²'J*0S&q3-ܖq04'^RDK/Yv9;x$ YN.اSXQ^)@̆w9wYD6mT ßϟh=mJxd.#DPJ-ӼYEYD{~S(#ZO݌wn]  c1H)^Hr;9fDZ5R] wp vp(OݴvSsaceWP^eS?jz=zǎ,Q9l?v=VFtxƼ[)Qqdt]mGp^5|!5msmc΃&;*u'^+A(o0J59MYa25xsM '2;rNjߨ!{JB0 zx 8xsOX<ߢO|z03.=Ϣ%Kݜ!+9ETiX ᦫ9Ӽd |cWtw'k5~iމb۰QWfBzƷܟ*(r'ysZ&pAôsf=nc%,4QiU,dPԉ5)YeBWcpРWnQ2"7f ¨5KzꩡX ]`%UIJnn&e5 \&')9P E(H|qp]]HF653dF *bM?_X13L]|ĕ\C끣\h@aSGH`;x+t_:3 w0KkЬ+Դkx\F>ق/o{E|%>A# "'(}J떊Fo."s4dWcDH .>c59pO)AڈuYH#o(DuXh Y‹`7PuU;vq}7n a.ۤQoz(u<Ů'ziak]=#j5>kּ"U;;}zu]x%=+"±mTvfgi{1`;kݰF?_Dh= sֺ5c\d|65 Oz,Ta璱ƫ+RwQU0Do#݄>c7#AzZ"G!^Z69bUcHpO3$2En;2>%sylzH4Ys.zş74USQQO]sCfDF J< %Ec#|A\%S]ɵ܊&Ț؏dk;b!DTjy=LZlqG],b3={DH뺙q?k,)z5a5{Yo:yW&.ׇ9 V3eldsļZ&8s{FD^]\m,`Aǎ ϴc%OoYHհe.:B[(BL8X5 &| gJVAHԼث= +˝YwvQ9ƹD*v݋LY gDGl7,v}Znl~pI$+5a. |[^e(4/+݀@yiP%?vb0yo +A IChtyO8sQ/"8j >>UcX=*FrifltUfr뫉mṴHDg|m`#Eo:AHnwed' B|a9ã{Txqx,qkPd7 a ָւrgYλ)Jȇllӹjzsw WEPOAEOZ=G8;-wQɍY0:DY#FUeF٥x]Q'H-S]7 =íإE$fR呏b; n~j97j+nQgO` ܝ[a;:&ic,dfU wHZuwy4&߅w/zL|VCn7thL ltEmfGvEc#7=6F;뜡ae%ZUuH-\IEB;*n$?j N$>h g#{&ǰ5]`y(#?qDiZ]e#>jVc6"rE5̊g+Jތ{+*Zu`3і[ =ˣv/͞vAC{JHzl]S0-4buX..FG,tsx2b?[Qc=r5XnZ2*2aC 64F2LgR)&$"quElb7~uruc Gz^-DMyoCA=\k]Y=wsNj^KtX: iQ\>RFHU8k=%gׁǀ'y+ZiZ=|pf-3QI̘룃 KL OټnmLX\aE_r-tWE^&,wip-evpGyGj/l|?Y{-g/SY-`j,bqQ1ޔ5̘6k]lqs|q٭tI :޹몢}nj*يQ:b;!iZ,g2)EH |{qqha^@CV7sFQlJ'ZoA nԧxئL7gr,TeWu+$ @ aswO$˦qfnx&=aȋ껫˲k"4zʡ o O5Dwe뺃+]<ً k ="BC&Ni\#Fld`'쇑”h]^Ƴqit_ cN$F,Y6.̆EƧUߕjmp5)-+[kk10 60ы6;b5 ~[f<_-iD]WuJ4Iowu KZYI=,a7e?'jB E(pE$\K0 ɧ|lbnfG:rxajvdu95aWf¨gJԤGYۡɓ&hSsg~C^5iZu_GnMn1į g#Z$OPFBla51}_̝kD$/ Շ,\~ƭ/a=<ʋNesR V<V@]'TM_C$+|Ua[EX%Ub7Ց-aCi%Lw-W$۸uQ1DإΣdNs#0=g]6QS+s=g|3&E']],sO6+bPn"i.<*"E~8]匛 D.ZfzXW`~9c6a=chc>;p̧ސm(D6Y;sԎ OZ zj(]=JB#Qyiib zGYӍ<"LcFGj\v/_ 1sF7Fة1c1{a?l, .@Q \y\v]F,h蛁и #Y@I_#0,`-CV- 9:Ceܬ:~=bC c+\v3b]W`B\n ܧzy6 (LMn,gs?3>Lnqޝi&̂ȞɋeBԬu-&<ګDƽ ۬<`ZiEu>䃦PYET*#oͰgY= :3FOn CQ(AZvsFE_ˍv%)%e31yy=8>ZGIj!n=ܟ|57=J=pM[9$869j#-<ؓ?F\DϷq:Q'xCLVskZx. E'\ ND+F1֑f_}Q;CܝY؈WżZ~xD>W }M]`5vEdćxZ)ء@CZaB+eJuњṅ{Η.45+q YX@O=)T56*:pѭ|^ O$./wcuWgzA Iֻ:SDF˵=\eHO׼mjƏo =dT8x'g9\|MyAd$<å4Ar۝. >Wvax^mr]ƅ wQ9|zUbncWpST+"iX2~$حqcO̶ѕj9JM_ma~ Uh OYU]]Y T빡,f5]I+)g#- 0!=J=BOJ'2ahm8 cw=7vig+. =A[/u{0ץUU^X)MhVUۻIO~*v{wr}ivۘUQG)}.:G֤Q3~dkn씍:h ѐ7"/TtgJ raH#',1aM.AM0Պ69^dYuDҀu1':FmJ?<35]ih+\\5\Sـ=:p4O͆ˠ']U}jffD ZK)5yhVcVᔏ񜋿 km\GrOt%J$>H${c%UM8*FYΠQNDF,g+UdRC}dhuecX o3l“=RȬeB*3#*^NR1^ N)H#`՘Q*:'tgyMLFbgrϵkE F]4ZM֕ݖ+rEx+ׂlBO]Ofٚn6T`tY/SS>nϠkLa{9B>o`$xywsa.6CހWdC=Fsr^Ev_6(Ib.AL͉ۮnܢ#C)Ja"\zXfyro ݝѴSu?쫳yɟ,p Xkׄoʮfƒ5~7G]@Tx$⎰ڊNDhăD'pu3#1 9[61kј2 Q$UFbD(4Mxmr=4zaEX8*>Pd ,,gxPMɴF;˘$!<4sM3\GMZ ZWg<^]ӥ5Y\A{݊iDJlѸp'h0*9v{MPa%:/=W`zlwdmE( 4`8F,- z7 *P;KD{憿mYؑu*OdO^xM\}J-gKР谎{w4ϖF%Sd㱖jrƧZn$Q o7ր$_1iJc^yeUEjS< .:o,0E Yԉ”9`?p5ДfFvx ga7sOÇFDf5_ ==KWV̍N nv.-NU=VA#5`&rXq&Yf5q!1 ʶ'|lgCF~wo'ivT.j̈8: I9%i:<zY^wѡ F8D~}S&xx U" ܃WQyf>zok34sɔ3sxt((M}Mwr'v3u'J)(g[#s*KO褱Ϋ,_ǥ`0˝I+4 Eܗ3%6}a0aX [209̓?#2\{MuovAgmHf^TxYƠgK j(QM`[ 5!RF dpN0KyS5?&/j9R OeG#`x YqbFr\4WFY#f*7¸>Dd|_ Q!ZnՕ{VΥЙ;jDzFkazna.6m|e򱜊^♾&e&,POݙ>3n7p m ,`~H.wp[V8r{֫V.7V8Yˀ7wET,F'~ѵ`:kԑ}]OU'dZНQrh]a2E|;z>|M\N++ٞ.j$k19E[e&^~l(PrS{Eg P/yޔV+fі_TϗMj뻎1mɭc5pvq{:c67=qez䯦COXVrְ!o.د?HXsUhRk&$ZUYѶ1lpwWf`clO[c=yp㷅9S;Gdtto ]NލK,LGÜDHKB>܊39U0Y}]wt7f?Gܞ}ۘiD7Ymqw1'*> Zvڤoҙ Oч*OU#ƨ RrlqOC5݅ n'lI^dHpY"b/, ܧi*O Q6X%0I!js':^Ea;#!azA UtMV+;#-G,& -Ӑes>klA.l$VUq?j7hQkuWejESׄ {#bk"|v]phCrS4$H]7 bS?M+NbTeRlpRMnr-d5 (Ԁ5] 8wQ#DH[h zV3) XIZs-Slj&:Wx'[&L6AY$Ogx#S]ٞ!{|K7+K!v]g0ѧqj%8hh5_x!={̦{gf \XlA'*.$o8nϼ#CB1c6C&>rP.܅WcKC?<lEf h;&g~X~;35{5EVnLOi>yf-y3ڢmW@ڐZs {h1=I[֘2!ƣ6zWtiC%|o_݇-?+?7#1igNR-2+8wTjc&\uqv$yU0eJ-gz(SX$%%^= iCӤ`A TZ>&>{jWӝXu}hxa xms4;cmtQ Z˸/(IEȨ,q=wi#"5kQo;sćJltµ`,F6Mn _a5k!=dBDֻm@4xq}G^97DZy,lPh1蜧n&(>#pq.40.n);RxfM]=q#<~ԇ=SUTZQ)@v1NJHo9'>c ӭQD5w7rG-h3Q¥~+qԈϳȻL8 cDKÄ%ޏw_#c=T0+1ALJ7Q8=C icځ Z<ۺۢ>] =dvA>bdbcتv}A5y 8Z63',TdKpfbhO&%LU4:Ho ܌EʞsK;K=нZ}wF@X>"ThrACW~vkQfBmpf;l$,If/Z˯溮Tk.De[ A{7uW`s }cg¨EeiǍk jzOKўj/t=ş>-]UJF&4 a#˺{]6ĈH˷ӟ+<,e{6%C/)wgz %ZGqz):ģ?sZ,u)7fV#s>QTF,˴ǝ!6- 5;˼@iMkΥ vUR|4~ďιk ,VFGmk+!,TNW00isNصYntw۬c bEhk Z&Gn`PQIKC,bZ Þ񯢖GL;`$` :^`]]B3.RF4l\y#@|2**bGh+zF=MUUsm,^E! l|'qq-Sꡟ2Y 5eWɚԌR\E4Qhض0`6wWQhS?{0AIW宯SGiV=I$ћ>*?H؋}/J F(ֻz6D$/mw}S%ON Ut5BG2 -c" .PINxY\λEGm`fFZ \ ƺ3nL{VXϴ > 5I#kɌK?N|b,W H٣[puTmHpeXSFMqC(62\yL-fs5k;z&@;b \v.\Mk jɽmpgy'_݅ak8?"׸be\•:Z?u[ (v$)S䩞Y.f )ׄspXu'yWbv+vgB#vw6%r>t`:ǍTMkjW`ryO}ZO 5v*&Kc8IPkU.BWfl:jJ7V̋b7ހ+qy+ylj ]y]j8㣿UQLWT>ɛwiYQ e5mDF 7h |sLj[X)eOo ݝhtj4-w&Yn m.Ş`TsN7sYkd#fZJ>{|5a89G9j;6Mn˨'Y"vwOTҷe.բ"k" K*E(6p܁`To#aVUDZqO`ֱA|/ X䱣)]-~.驪.̐G|} dWe>=j0كDѨHoFV@%Zj2/*>L٬ƭRWÚV4 ϲ>L|;"ncpՕo" k~ k#K,|WQ)O\Q:O˙ᄛ!l>rySV~v.jh͎Pьwie Jڄ% 9ji5e=j=4Eaxehqt16i'}9skvnb[LbJ껞*4hb!%leypd+8:*:2-1zwGx_ՕZO$A+؇t}j)*;łm@뒬tF.t6-j$&˨D]5\ yԮxһ"RUgOqUmts61uZ U@MYE򉖌V"/WU|p0`GhV]U7v٥J,gޒ1Uʆ @˯DVwWDvt܅شd˳+P0{6xSw o/0V385h)kY4l`3mNRzEFZv!"Ͻ`jְ߱^YȑUʾ;V)mZx3f5<=d :pSG}g{fUYo>Һlrqm7KRήF jF5Gw59 Ҏvj?񻻡kOdaZ.u&6ElD: hXvO˽7ە(vrVYbWU~6}1Zڮ:}dUҬ!+"{%VaYK9Mj5"r;ocE6g>_5hԄ7Dj]ZjVzPL؄V}f.۔}(mW%}\ť٭yg[%ج"hzcWEij>hMT!븬 4gX̌~ }x ~.6V*5Y&q,V6|U] >v{ȡU7̧yfN` S9Y3<Xh]AjdK@aFA;UaVJ^Ve-Xz*&4졟uYk?sИɥiR!mt;gDDΰIѥ/ ݔ4mnjFO]ܜEhy.: W`ُ{c=T3õL$ |c4 ᒍ?X5yVB|cWd#Ճ,? ݏ*Amt {NUY\\z+~Wyևvhmp 3"Þ:lg~+2fBM~.n%"dyk 1]k;aـM٢=Zdc^ ר֠pƇ[fmDTYjιPXG{V2lc/@s85Y3q.=Jې.nv1U#6-w{ <4v7s'csEcegI6< aWp)(ք3$:zxiˡw6%I&.ʡ\ء"Rk۹{07=}X܇mNw5ϵ,KfwgByVU]'D₮ZϙܐЌ3а5HãF%_E-kx0*/݅ϖ`e}'h xTIy1 5-f ]U%Z!oBno«:a+: FOtIjD[UwG҄?C.b. ]k׆0ܭ*+lb%fV\j,Wϱ@jXI_ڕ\L0JqgL+#hlֆei]v17FҬ&[! y[7pGGx-]Cuz%S8X6mgJ1YI9e2>aVdwcNTUn oMMAOӀWlr(i\,|({+&<ZA:b7ϐhz(v j,c=]X$j<-TыWѦIz֩ -'>gXǙGcWe\ Y2QOm,BژWg霰:{ ݛ%wWi؂_uX*{}%jɅ]6s-1#DvbkXO11%`;/vluGk;#4bأ*xد$kP3g#4aَ A-29~qXYO;=YֲՄwvDȲPv# Kd X[E[ag5nMW"8K6 f+ya1f]S5'"Em?,lcѢ{yWgΣ$[,U=] +?B= 5s%qN'\5sƶ`чkJ4Q>wxjRCR3){ kzGhjKoza3:GyFd_8 X=*.5 -r}V73g<[ZnDqpƘ'0-vG38I ޛ:SGö;3*1| ^ 0եLD}=|vU09ZDiR]Ja]f Yßy/n QI JYlw'zxceF!R^veX( =ezrCV2n[YUfgx/ ݟ/)ϕn bV! \DٵѺNr2jyYpZpwo|uxM6!"ݗf;+_v(92tj1fE6M@5D}Ƥg{3ɖXà1~um7tG>Np;+܆7"Hiz|["wvj1k%3,."t2R&:.be3[Ҥ^Yh+%j>;7i=sGXA]_mU˾{u&}[CQe5Gмd-RaM~mw=Wc\Mxb.Lj9up߽xSٛ^a#<|iXv*ZՄaw5] ԄkS[:fhs^j+~D[,,^d1嚼LX+\]b 5K3P;4u]\ ޻Bi&¬RcI)hh`-2㞭sWGҰ'I9˦ jBJ4lr[&Eg[T`Kn˸H M"&,wWV¨'~F n`ظ{\i Ynִd9qKghB /6]]f,ܸ6l2wO&+X}dQ$J=D]e5ld &rnhmak)*7cDK9{bJj** E|6hRyGn#ʜ*\0я+-dQCob[\ץbغuk%L{jn www,]kRB:H=V(xUWw9V*ePMhOI_d3ӈ7ndR xgwGoL3e4aUWݼkщqo:6L 2zdݐŨ0i]]x21izqRjtMyfl5,1|yS#Y`c7s*ZxM]CI-UAMf*VȓGqx&ldbO(MKoDGOάVS*zʴ lt3V nR;X ty flv7cCfiC,fuk*j"|W1\ovCڽ^/Ѭ[n( 44Y]DjСFF?*PMk;*1')$OWU%nLxM7f<"$-2qy3uHnua mF;Y RUf6]eT6WItjTY35Y`mBM6vtUOvh2>y4(j<ɋ?2GG* {[뱍lQYJLXTTbbHv7S}&ؽ& tOTk+~W@Ä6E]y}xqtkQq!}jX 4Ϛލ؎ 3imapM9\ϐu]#Deث*dIߛeTa]Α!6 O0fXJ5a(dUwugf4;YVt5YY56LW`=k @_S7'AuQ1ZV1(-KMorbmg# k*j#tuSUUw'\;Ų9˵^;3'J<%,Ax0yChuc3qrmㅟ,Wۙ\yzQ<&J=R_6+ٸ'ix]iXDO,cw$h%[鞮k# I%RZ.1fgy؇_];,A4b7sGL6yMyI5 pgww7鶊.QV +124IӭHт/˔+ٌt l1$:cΣ'l+;UhAo'OM{hjj^7lO$JFfxj[$:U]^'k㽽 0AKZnl-g{ҪBnL:W!ڌXvxB6`TyEWaћUvzq`1*UAtu72ajLxa55][d9ܥ&j73a*HlU$zh˼ f1Ӄj`W7QdW&>[ZVlJysE Oިs3*QVDZf,P[&PQCoܳ򠁫9S<3?σYѓ'ꎬcv&6{MfMjNsu6 .^;1灣iR+62%fjs}Yk<:DJlQٽ4gц5Uv[7UCA]ajS7c,wwY'{!` 딎 [6{,ŗI͸ګzUJ^gN3ŠN O݈s}5X̰f=Q^ڭNtqʠh RȰGL>:.L YozF7OfʕPb򕔏^U-Q>mSWcp6*2c3X wtF/7aY[aJ*?eY<_#ۆ.IX&-TGp)ĴHB ZQV$Qt+NдKpK6(ܬsG;Q*{+Ԉv)&# 40(*03hfҗ 厚к5s0$Squ*pxEMaУU{H ߝdꎌFx]Lf[ffBMO͸B{Шgh;Ӛ*Jyp뚨b YFle+LÞb=+ ,pܼUu )aa7cj" k7ss.۪t[mxف٢&K٢@+mf:V8AntO4F%l󵜵XnΌyMK ^1d35#-:&zV):4iT0h [j𦼟C5!^iTzSWgJ Ze mbR+1̐fKT9^v_67Iﯦq1 ṇ<{VɌ:Q%;EИG|ֺ4k]ڑZg<:Z K|ڧju|Owe,ыzzdoIUd+1܀W`3>ehT|5Xm)ֺ,Aea63陚o A%ea`Jf6lxظt_㹞հU\$fwwA B]Aɓ4ipgZ,gj7TmljH_L [ nj"Dzw5:Kzu^U[ وWg۲aiC%SeV8"O`[YBhJXa8Ӯ2CDJfs`=V*jJ2eZPWDFGϗEYXq} +8̜qǍl˱Vu5=qNMr%f*36ICj LkpZ,uQ0>j"\,:4Yz͌].:R1|6">|qG=Ϋ->SaZ}Kj4ueAIZ~3F 0A\AWd=3~ j^eVsS+։ủ6+SKL xvk1V"B,J5اt6((VWu4J,V>ȻmħI6FBGz$m 579Ml҅fҏ3}nEV#2mjr4igYocTlw%S1zXCֻ* [q84mد&zBXsn̚ݜaa{Fgos٪ zܴ+Ь6"Z}X$Ǐۀ+r埧RE-ˣ`#yMX>3.{'_luzxW639+9ʲ i\ʰv`@* ܉K#ZE$x3\ yFƜ>cȜ5mG~Fa:L}E]M(YβxZ|&>:L5f?Wjqz8 Xθ<,r,g+)*$Tɏs*t% +ѳUƞD8'PA=щfFl4LI,b\b7r}l|s i@ ^%lҙ3#ZuN[ x&?PK\Hɀ|D.1R+K\ZMgidl]M|Q-eߟt6VuF?s5vou#Z:uU؀HJߠmLxGylṔyF͆GenhBKUd۝Z~EhxJFYT-Abas>I^ Q OR5KܞQjbMQ*BkL*V*<͋˩ib \ ]fmۥLpySVMUvƵRK<ҊMtBEZΔgj`YVZ=WݱjhSɅ$e]U%!R6a lBiO20r5n?{ވxZf,"h^MX[4,B{:qun`7uL)UElQiѨJ6rf.:ZՌF^u ma7ּ3iLv[RJTv*L1[=c`; A"ن(AtsS)+8K%)izdlpaUXrak/&[a ?3hu7h̃ijL{e,wy$҈F41Q{\֜iPy5Y[B~BuF59Z,vEPZC{P\eWQhUd#> XTu**.U9abR" x;;MP k̀z.j&7fZ~Ta y;%0ahꪬQp-wJ@aИkbK[K}<,Ռ9մB6P}1 IJH_h%JeF-:CFg?JV:@!h6 kv !}L8%3A '}GIv NrB`kUCPf3ߜ`Tu_mr]iTKv&oäf!r-TaanVi Hޤ`,iʬǬimWU n=+Uej{9u[\eLi34 lJ[d]1jDG9a ٨`_~6e.iACCZjKLNq٧)j2'{Z"( -LI[;RkY'TA_OcĹjWj+p'Nn:t,ф $J،*3iDDF&o̚j7g l ݜ 'ƴV@KvN,9DUe΂MOY6s.>a mQfk 3p۲xF=k%R"Zeinh6-,CЍi-XOf39lDXQUbќ$-RY%!+UMё1%;yhʢ/,a!ٍ^e[4IM6zyH:gZ. haє.g؀THoQ2Q1NOjZ:44YFְ}J6iК3Ѳm[]0pE^MuoZs5R 41iE4XpМ&6U.R]H~XѠeh ۫P'Hi#YO]c9@ThkT=s|GjpCVvuwk.KP&auY~aK,z֫ԇYv-Iꚣ6a֨"jt(. ].dK.ۄB~M,4hd5QI҄tjHgf(j n3>pbLnnӘ-tٯ k@IU-T*B $(#jkS05ݪYÈ-)WIJ6=2qPLPE%Ո`Lcj۲USҬ6nYMzdrWvЇkJ*&&@MP0\*Lj%S %hTWeL&w7nfr7gs<ˉ~v Y-zvBDPZlg5XHGX: D :s,6BKl`Vi="6:"Zlu5FREB$\.龢=e#/LX,g 6`dGiˮBveZC5l"&]$H+5[$MX&,̕YkP -d.Rv``sیYvtۯ%(*[FĤX*d 9h*̥nU*2'l?}lW.~WQme=*4 RT$9G|-vԨ|<̹변SI]]F5˶mY'{Yݬd@cWsSֳ =P9ev=j1if/8v;ѣ,v6! -jVc7O,Cذ4,VfF5vֻ{c</JvS3s'hjJ ,`Z3ȅj+ʈ/.hf7!Ajb{!iҒU$K6&9NveB‹FX$khYZόnGTÅYØGYf锪[RFz6\U4H>VCJ5fsVN`eYEht#2bUQ$ǯ֊6Qp&JvB7B}Y$LMo%Kv}ۨ4s v/tz3^tTl@+ Ϸ\5Y`6dH]U'#mDF=ƪdJg)⤉ƌ , fYI dD-g2Yh6 N,FԠeHlD:-x>h9Rꩪa{FMٌNF D:4I]hQbt!Ls+y(J7ҺʌLt%v3i›0TBԥѐjReEtS͐&s{&>΂O*QSF3JLjPM]5ZXɏҐED=f,DbpIi2Y]j3Sб_5F&*L[,B+ddQXW=ֹ?tl5vgV"j,>6d9%XS5d+/J nBh Gor9`5Ya/&Q-/0qXQ=UжGZ8 632%^4A˸I-g" 5VGzWS)&4MxWAk鄭sQ6S `Bcȕ GV|-WLhR \`vY-ȼ4d[*H7a+K7(`*X|X˦4h/Sssbh܈-k]Y=Tд 9h*US4iُ~F>GVu3G j 4Wj+ԤJk)6u7w6˰K\c.# 7j(k azՑ/eXU2ShVpQ6#m$hg/Ց&jK\Z_x !\e4xֲ\XyҰ,GE:Gu!\"6AZbaT5Y`Yk&ٍ!hBc:23gˆ%,-w{"=Z!Iڎh%uڊ .& 7!*2JJg֩"cĔ`]01zt(zVx Yn>+ m|Җ:V4nbhh ]UBg2h)1%JtjYD ƃ5gl`ZV7#(Tuu7 Z9NlH*3$2%A SZ<ɂ(XmuF46J)WVT 5ZrֱS%/,TɄ5dpDࠕf) n zTdꠉK !Q śtwcՉK6=*lW(XiX,̹rKn -xjuX^6Bmtqe &>E+zfRbmS51^jf5v%Z.V)ĨpX`g \5+*9jE_l5٭JS4DRj)Jv"kMiʲYOЌ9\^mLk~ҫ֠PMo@ vW߈5P#MRVG}EY⠐RD4`4F `)Ko\mEt&,y>j$Xj"6h6QräѪ EOJؘnAe%nJ*Ľд.PSK%HIUX&)CӛlM$hN\)kH߭4Mm^YduWg3e;A͘SX TnJc'JBc*h29VRG=(X>fUOu^[e(h٤*qHU3*gܼ?Jj,z- *JX&6[k3鋞5 Рa#6j!1g%ک.j0Quً!I­5ZiMH\\,aZyڬg,T9:TMX̅ڄm4c*?Cǧlf1hf. ,lvPL"viظWQ}YDinf,c5Px-U@6d `/\#+ ^*c$ZAI\;X-jTIX]eLX|کZ&Vl5zAMlT`'dMkJd JlW Qh^CS*eʧvFc+X/Z*|¬Eڌ .ՄUW5mWUWf~3* &Z$ RF=Rs{KلN f5;XC_E,bzjxF,ZтT5h3TR}ݎ 6yJWv,j' ,65nvOzfeDIZ6z6mlSA l1JdPlW!BmU*i€5d:/GIV,6E%:Qhh|v^5a,D-cШϰt:%36+dWt%]_V JYɸGM]MLha}7TAMxoJR9OҬt껦J7eݛ)MIÈѪjUYRZ.܀FU=CSkZ5A %cơd6 `*j!m~RaE-jSWe|KbtVKdJQU$]YTa"J~$ ,d2_0y]Āqpy2#6%q6=V6Js,EnUX4'YK-VKqئ,rghp[R9Q"X次ъj cƴG [&0nR-D #UxbDj&)rU`dP8J1l>g4aZHrQ,',!=c5TtŋI^υ4깞kZLnĒM:e-– mv=SG|§J"]M@dV:F#*ZŶ2%٫jFKX=FB8e3C_)Q*>0n+3= :SZ4eLhvc%_Yyrр%3hfJˌڄNt&T03Mi+T;X>aST]7u[u͝Рֻ[3iЪ.4=YWT-0ɂ4U/l`%H\ԜP_V#k[+hSxmƽ4kafbt +.*1"‹٠lQp[xBkU- QeeMxseBܘe[m*kj7+kϜWcLcsڬd-EZ.1 W HBKMQҳͬDԵѸ$M:nN)zKI [',EhUGX SLo/;]EQ2ao,g3Z:@ZZ|@~֢UՠAmWdQ˷e,gqCRaBӛ4gF`znt6}@S`#q}՘C,*,,Kwu2rUdܚǜVfTs$9(M}@ܚ]j#hZL(3vWb ( 5C^QmeQK 6`b:NDYڸ%~g@:UhY?ghȪsWA&3殀9k"j2I ZHڦ "ld[Ԣ:~sVZӔrQtsʌ}%emV]Y ̈:8n1Mxq6f4)껳2>ȸT.3zL[0ac=ⴌI,Q*囚˴Iu5`RJY&:EK"+OA3̌ޘM0 /TREWd)LN$6gVlRjgꢇϴL ,Dt.Dөofe^4c #Ve+0%J X#Y1,}٣*nJrPB;̘SĠ9@^BWQ0&KEVLi /%9SeE܈TXRk"SVDޠXVE=fr k#IBazӌV#i Z9B@Z Jf . Mi4B={?s.d*F0ID UULXreƭlKSbM4#^&6%-Yԣ2#3quf4)-.C8WmDi255C DO2SF,T3`u3aʔ%(Hb`c6dC˼&.FeKǐܠSz \d=&X͜]ŪYрEW!5/ՐY(/g3BdiYȜf۱ulg\ UW!GpcpUbMF?Ϩ:l4$K[8-T=Uap@+OMFØՙִF怜b {PXمY3<ɰhYZSKi^`b-d?UYi DuWE,Ԩ&Pv#nBnUS ^%zsRU֚o [$a+Le4ڨQWe.46ejܨ .>5! 6M"YI>YGV ZI#ڪ*zj-b%_UEF|f%o9CKǨ*#iKWL|,&I5,G.-vF7鄰(\XM5z-ycE+"V*Jf^3*l1MU\a`ƺhNKpe)]Tx2Ʈn.jؠ国\[i#63F/ѐ%B[ȼ%ai+.aVլP:L sڬTFBp WYۨ"UjHJfcNMZJCgXV%T4I҆cB4l%q=ZɰhҏܽP9D3mN&hQgIzl;6e=&-L j"ZAN5*Ͱa <º,S6t%Z_4g=PAW$6lF&4,5: \ڪXW0J|ʸUQluQe8DS 9gZϰQpU3n=)ߔBIPrLjnJd jgZebmD*kH* ,Wɛd˔L\Y-ZBQ7%"˷EE[hPOaEڇ6CUG$_[Uo FW6'͌XnA+ jcJXK llԬw5^lJBIlQYfVe>5C4`j3^`mF/ڪ>nX;Nc1yUl`/?C\IEۭЊ AhPYV/R5MlP[=4-B =g1*A#RLx*eMjșj۫LCZN`ᖱj1{Ƥb)ٯBqSUFD =ZhT ˨Jz6!IVHZ#VdeZtCڮ>:bZ檨k]?{ZlR$UˈeWT!Ml ,ww65h=O32wgd +jEF-Nb)TVc jF*4$<@ZmG"Vxu IeS!Y(]VY-Q:e[>Q 9ZM5_ Oр%[*,rmF~æ$iJEH6يaet,FoT3J('>N٥#8>aD3u^H.z㕕Lº31/ uL^m=Ecڭ6tF.(Uf a">26a5ePS6Ra K©UcC$քZZ˶ɛAVPj`u>Ii]ܠ,s&kXx/J%䉒7gUs*7Ug)#LCʬR7+C:YخDM}&m Mh"Xm4ƍX(#+dW`j:%A֔ 5J E@KԪk#ZYA-g?HjIH<٬p#(&*hFVZ3XVQ)l#4ejpJ]&'o-WfiQQK&)fp"1hp%Ver 6h]~E\l$[ j3Gif\,6!WhUYHh kRZeBDMfR.LbxhD*V Z$ք!-اDe"}Ii#+d6lBmf[5C o9\eJ&M؃$J,u„T7X!MJ}V6! U /hIꪪ4iX %H ytlfkzs~؏IVf)3Ve!Ь&.g4e&.~sQdTb@6lS PMh\VVI-f+ *)jτtF 5jZ5D5g^lbb6g (ӰEHF$>UjTwy7:^_іbЌsKb/*-m,b!I_e٬T)Y}DNtV*|jf%%ZyI4(T`MiXSWc *TP) [jv=UJ_]V&v,); q(YnxJfH  +.lҩ6*嚔p /6V#OܬDHB5 ъ+;$nT^}؊B,` "LtР2)SZF48JeԴ mb K^TIMui2-%TdzꪯҋRVHdURfɦ,갋)[f%Ν'\.Є5>YX~chʦF'먠 B5['f갈Q9S4-)[X6zeEL%JkЫJ2d6lX[td%Z: 7/yUR5#.3i5!A6\dpbZ 9zMXIeg/ՠ8jZlUp,הdmc [ح|SVO#I,޴D+BlRAMZla/_p%֫odc TK)ѩoPIثM++ QC7R'UQU#Jτf/츥WFMi2+˔0*6شf(UGAWG KeUBа5e;{YRDK$t(ڀ4nRsaҲX5#* ~THR*֜,>3ZK}$IŰ%\6YJ=\( BVVd&=Ud5R`gH~ Sz%ʈڬ[:6MhL3[r֩Œ囖t4ɍ+ح&x۸s TqS#o,~rvD\jkJLR$ 3Q!idj|Î"nh(ڈ5bdkY"ݠGplj6A" 4B:U7 @\u<^vtYjt XdTF$m+ThXNB^e("'Yڪ*TVtuTUj[Z]S%-FXtRo %$[dxe"Ozv$Yn!Iݪ2ɛ벂͆[ Kڬ2Ag|E $8C$jj(YLԄT1 N\4qⶻ-Tas4IKUUPr-ܺ2)i6GǭU Jѐ(Ѩ::ռI;XBf6keD)'d‰'^$QYe!B2JÄ]$%UQX1_}3a[ehg\ze_vu2JjPkv58Z_U+;<8.,NYlSyK7`^T4f,J 6_gHLZ5گ !=h3֫/Ҕ%Jb!n@DRm ( JnF ڨuY&*\*YJ2@4 %F6&U4W"˧PlEԔFS3J蘱A*$uYq⃴㔊4cES٣:3HZ,"Jc<%*6el]$Y%+*2)J>ٮZZLZ,)lFڐF`;t .rRU7`4\I]곒h`^`G+EUP4aeJEGF TfhKb`jt(\XM&59n 4L FԈjB)L-d: 5eٔ`UMLF_"*g%:2|bQMl%{Bm@QJY5If$NX6G6EMY TPyVdJeYnk3EiNRMHTUEVQZj2 OT,RKm`pa_lɖ@: @1K"P( [j|ҵUEcpH;XO$PRq5(-PJuгF%$8e7 Z0-I-al^z5^J#5I-6zX+eHS+XUG`#YiKQI&,3e :5UGOhmUJ֦ -ބBuYdbLkz(DWhɥt-3VyJ$0!MZȺ,2l#&6]G95#B8zjTJkHEWeju dzA.p6bP],VAf%}FPeȔ5AvD)}uȐqNRV𸕪>CZ\(ʨX>V3 7`UBZd1]BsN]q#BXc :欧'60aT"eF Z~Q Y)iܔj!{K_e4irlwyTN4@u#'i:JSŨa LڴN]ņh`aPK5TSd4x>bGeK%h|бBuC|TE c 6QĘrB6PTfHJ3ZrYάLZ(UQ!+(h)Ӄv?qlR,*QuQ _[ƄYIV6qy+.)\Vmc2 =CJ2g?*+ݠf=Bk`S,@6@dҨDY˴같OфFЀ*ҔuQl~3-ƒ4mO\ 2%3!Y~u77 3'ʶVT cUbBZWTO-NԴa(|ƌڮ*g֪zVuvZLkd[b,WĜI(A+Ѡb>Z =HxخiD rpjܸ[+R !WVxef5g YiX`:4Lh] F?QTF[be[5˕8EeϕjQYJ4%AVeZgb9Rf%NYJgZ ZW}fFSϘJ Y![_4Lj%-1Av#q\h-$ MInH7dm&5IZ%.%S1a#O +:61İ97WЩ o+ӌf=X)1 MH&#h=F&k%P՜#M2f6U5J ?9RET4L $^tతhz3`U+[h\WW)Ga9LVY2 "=*EVCTk2hbT2J~& y" 9ʶ55xM%xqP6f%hUQ)iɪL_rt10!%SOк!4خѺ4l%KkHe0é26꾈]KU>a#j˲U?T!ˬÈ4Sp-)^2AR nIfʶ2Yg'Ml#[CeRJjzl&)LTvD kRRSK5%S3˧ffSb P 2U؎4RMER}FZƀF{j-UCT 7`%$IWgb`5.Yۮ)kPً.ӜvQQan+s%ګ*+zCVRe !5SJ&ZYdk3cT)D*[& bsq8Cz]Hڪ/ĵTTabQVM& jZḦ́IFCtJVUe5`V)H[J&h+;d( J,QkYmZLrLT`usC5aM`DJ3ܰQ/ى35e}23v<iI6;Yrņ6j@K8l1c"뫪(^552k"KJB{YXBXz=lg-Y,F: ^(-/ A 63n&S ktst˄dW yh= 5![}v!,ڀ#jfZd%VвK!#,d2T NA 0T Yu1"u%)NLm3%ӑI.+#nj2K'h xv2 XOb[:lS^4gHIULo*[ 4gh XW=ZOLJ&gJѩ:h]Wf)TPe5!a"j*h؅p,FB+ڄAgY5檫똨GhQc*LJYx-2{ئP*r _=&v\Xn QuPaHCR)΅QXiWxM©&*pK2*wd l8= lWh!H2Fbvf#;ܨhz+]Q+lu/aWGeV A*6 Q*3:gmPLhV KE":V)Аuc;sk5rt&ldNAcuTY`LlaSUh-S+ddƦS;`ŕkDeJ\3Wb/"nP*_OtSr]u" f.Й$z3.$-f'ΰ@QeʯPsWcrDrjKFt7}ұJ4lm([AZMf,,j^F7m TeXQ3uE͑.v({$6*C4] de4^dӸu ,Rz[bМF/-Y1A ^AjR`Qk-Cb%S'm¡B f6p}<$l=+ K5j`Ф0azUހ\b)VcF 7S36mάEj4kH^RIcdHZ-T` bK (; Y튮cИvJ7cƧUA[UWtu?5G.ՕK˼T*2&ifUhU@ڈ) KZʴTk)++`Ʒ\e7nNZ K [ͤ,7a nmFVv1Q5o l$)jrg*)2deV@obF,̀TQ5nHJ5SCnf,j`)ѐ&X 1M"UC Vf!ZAK3Zls#8\ˤa**9SګJLi؂Z,2}ˮj5bleDK y2rq@l3%Nt1qK.~KhتHR0(Aذad-2k0/)ZzeN,˄)Y @4JSL5&$Y!` lW(=ZM\(),9SSț0={1'i)+GlIKSmTPD(`!OFuً8IXf۩:T2z&-Y"}s\KنdZcR+n7hJghP ʥFeCC~/*YMʰiJ_pJl+IǸU6Q{Qδ!m:iI\#G5L ZI"(LZSh=5X q(s%+)X,ES.fYрzu֒a阓F]DHÄ&(ߝMbPJDШd-#Uf̨+zY,!o9ٌňgReeVRYVę"-S_-i-RtS!](-j%aW%fn@^v憍L֔F42iEjy m2^ '.)0B+E~4J%چxm5/bQ/z+<$[+*/nb1INܘLJG\8,t5T걌) 8|5UG1iUk*)H:Ƭ-Ud"K~ԘrMxل%$eS3bZWVY) i?biҰ!. +N=*Rm&MK*)bIǰVgj1,5*68=S0AZ2LU%΁bmW +$9XAʊu\Z֒*6Rfʜ+5FB1˯p:V2*֪d5f4*")$(>AW"qcUd5r"(rt* 9N`XAD)[%! NXhRYTdD %^GX] -|5كB3Xlu) j*Bk3R,*JDn#h\8N>ɪ:3؍Y~uNֈg:\)-Ul!$JּESVt$eUU *?O؈RhRQLԜGگP 54$,1euJ7Q-W,e"KJ(֠rLj2Ĺ h SwtMHhZGY>Րx]u*(иT,2A '2U82˶$ZL<,eXsѸ4U^SŇGk#I)&Ze`Y ZP A\' F3EVe ´*"KYHe$$[,(QU6Hʆ)L^vUDd5auX~4 -Ɲc JUX(2K2a?P -e`edM9EJ-hM":Z)tf,W4ruQť-Ө\zEuY**줋.<,D$H2+$C4iB(FT]dK(#d뙛bT˶VeVV0Ȏ0c6Q)H|y \<53u!ldZdIR(Hk (Vga&n㕕;n7@*sIԄQ"ZOUQ+\f"GTE*I g-'Df *>*N%%,'8WGc I*1ri+(6QP6 h!0 k+xBU0HeΰK!+%,Rc4! \Q:`Aٌ!Y` %i@UHIJAUC\X1iJXfՍҡEz kʂ_}6El5d!%3bD ۬*YiR h@(:Svuډ(AƮQ Q2-6WU$hiH/R UV\X!*(Ta=%Y>AeM)5X٠6pHZUN)AlT0i؅K$l2iMnI˞)vŅhjb;O2,X@$edæ%\peuąʠ1KQR0,TI$6 'YӜQ+ ]93WhE֪ G$dֈD#T2\Ì%²,d'kRtDG\pX ,lRJ(1WC55!ZJV 8jШ65QP,A QZ;GR64b0AxzDiZITNQNse^(˕(F\,B}V#Z6gYy"碬b9hzC(Z'^`sdj#_S50Xtms3eҠRfd;zvpGiء. SŗMpZT5ѪR Q2ɒ!kꨈ-WNeΔXdS5S\q3,W]%f*ۀ,ꙪhSM$/uX nqT Ia+ a^S-ZWA=5aJF=v,p'G (Ѳ9ɛ`bzUYR}A'HXF$BOI@Ca%3&+֘ES+JdV#hTLMJRtmd-i4,y(*QaERp ]\5U9URK%>NVekVIj0BiJB2E iD%ңSU5֣CRevcZr+ 46uѥZh-sPҢDRHF9d-JdJjjUϸ9KAR)-jTJ2 [(zDTB@jGsŒ>ѠR&qŖN|t Y NXx%/B몏B]K.*%K\0'6GP5ҙJ'XvJ7A#,Xs JZ%ä &] BztJH ɒ%9^"#It*'?<7Q*Z)1 4cF +$ZISQzQTR\u)Lؐf[klҢ&oC٨ qy()҄lt^evkMXp ֫) :%Q9jW$i'YOVbEVF^mANЪ~(i£*T]-Q$+\Z_$ N-\52K.4QHv*D/spZhhRq}5+R,+TRf.׌O*\u3ą\T}&IVF%=^lAݞ*#jHӚ$zIiUB*d!K$i4CTJ4HXl5WVK`FEX4 `bMX-’eTJ69˦CF]L$YlsDVDM\V.qIiUC*ȒPss*嚵(ѰT578XxI(R7 zlV]eDK%[h֢Cx`VÌ-W5:SkT)/*+٧Ѐ&ZIe֪5I ҃5QUEGkVg)TEXD_-֣e.F]s)X iЈQJ!Ѣ ThQ011N aHcB%4!GK-:aEuVq`4>(YmL~0:$^|dȆ&RY&.BMQ7A g$5 Jq@ K"OUWƨh0^` QF7HL!Q*UF TDOhH4d1HX"bgmY:YK.(TAYA33bqeC* I (ĩ4A\h7&]'HD8UdusjfF !(h8Z0p$ W5 EGEkhTj*a33ɗi)c'ah@J NDKKFR "M TW1()`ZO4`گZ&].RUK}+MI`VLhLtxTFiœDFp'X)T@zr "6E T}!/s^T`Y lEjP3j*Ũ lFu:Xl%T(kPP j#PGTjXdPՌfd4A"; e? UVlF$;C$8lMjW09 5b$%TQ!_ qzd'VEKz(Ѩ .5,P\Y5!ITjF -HzUV[HzڈY5 mFmMhJLn!"\"zJ,Rl@zVU8q15 I(TU"5"!#jTPYuhBIWUE]u!N"n WaA'lLBZʪҒ ΐ,F3+uT4Gox|B -Y\I}ֱAYEiXE*UR҉\4% 5B0IH*Z/<%Zn*,ҘĉҠEJED V!K/ TPG&VK.Фkc?ˁ*&'[g&+b1Q+H(kѳ**׬4m]TPU$ iTzT%dthjE=,G qД["eESI["tEEUWO-Q%,iiTUȗIdj8Jz)\8\f}MXpq% /p6҄'$UP!'BDKf&1r5xmQ:!_I=/[RneUAH*4 d FXlHRpe.7EJ'Q4zdQ5d% C 4q$iX1H*$Aj5,(D<>SlS -iZҫ|8Uzu)2 M6l֙Q'++4Bae,GiCҁd)t} T͙lORmU_meCҥWEl RY;[jU@cRR,%UO-VX8,$TR*2⦴Ţ,*M:HxkUFz$K`a]M\E$ 挪!^FiILH~ȗOnjDmENب]aaa5eBy8eaqU V qUhY %Ҕ4T,T 40~EWE j+ZSꜬ\*EIjJEYA{ˤQU-2!-,BDGFbU,)ݘ ZlZL8AA]eeWG3aՔZWMڋFԌK"TF-p.zv`m6%YʨV9#\ (P0is]EZNYhKzVc⢋.~TB8P(rR X.ѨSF =!^9+LUj$e7$I먭&ە>UUQFMRHBHOU`=DkiJ֛rChT*å[j0b`Ef-vܪj"[=[n]D˯FR[Ri)k5Wi Z+.T:Ct(UVj(VX"5z̔hKZQuƤ5SpeSA̚ .50#XU& J`= VS+GuLc)"YEAXb¤)HNlڊ,ĭF~~&2iљjL:F-S~TZQƥRnUU\HIĉRϔUf(\YsJj ͊-!%)jj"ZCVT1gHVf5#ҪjH[YلW*izEV~S&_fu kĀGVQ Hh+S2PkhIO+") )zI[fSui`YVQ.;sZteZi; +$xĦ|aVGxOv'󝘋J[ r3hȖUjS} g# .v.#6}11eDʕ]o9o_N\k{f[UCx57/i;ƥO\uކ74!̀Yzhl$Yr?Y"zv񉝌m״e9gx}4ثW. Ĝ]g6пFS ܼwzsצv|θ&]ݯ뽋C=6~p8c_hS+GUcHO6gr":>g$qkoiEř@Y f]Ek;Ztj}t;aolSvǞF칤|ڪ룡fӵZf@E8xCj,]O$n\_+s Fgz+awBd/u~_s(ᢁD%8m'b1{O80uoO]%\~PK_OǸu,QKK׽|i+Xo3ϱ;hxGH5nծ=DH1;־p>*SY<:k/cECl\q"Gޜ5O-ju\ >wzr`B[7Ou=,뮤|۷ݨWD:C$msrG5ζ]o+&m}ɳ'w?01 =4K)#9im1ﰕNڭ~\/YgD5Ⱥ&(vz^'~[=,'>6ZmN`uԽ'Eb]o0dN|,>r%-6}zuk+vwֿ˩Wr p۬^9q!x^VPfzXxC5ʻ;LI:w`-md|\`hty60vg>/pg%;#Ŝb{㔓XAAۼY=zJίcB^~qmiSN ;⹸3gnZ_Lg荸vjpre~J9GR7<&7B7M<{88Mz.D{=-a,ͨҞsv h.UN?zRpT%wue^eac}%dospDtB`wX4=DΌ՚"qwҸ,sq7ܴgzBuS|gXEMUw_'6Eu}ڰJo^u5ϓg Hӹ .;va^|)]pb(_qg>kO&\XwS[S^=`TgkV 5w?kTW_n:&9%Q9-.)ŷ |+}e}aoc%4&gi,<o4y _F SF]03 w7{ͥbZWAMRr"I\N=anmcq7W'bWkFV_-'2wi0tj4=տev<`0e޼XC\iޘBzQs6s',7vYeBdu]5<ϔ=/V<"g_Wکn?mC{ū"C7]1;n@2&hW'>7M36ڿɦ[nUau'|s+e[^MӉ&sh.0*&KŜYt8l{2]OSr↷bC}Udo{!/](c#dݡHt kƇ.(虍HB/=;jAL-:O 鼢swa?T)u8Nd僱ijYogϻG(m8EU_ӵYƮԙC;,ƦnɎ:Jjљm-A7sD|fxlnTRu{ I~'6)?Uԥgf}{@ZYuw%^^= r [/9'e&*e~KM2n{ji?gl3WY55>6RM&8.pv=ܻh}M,{E M_wVԱ|Wªq Ef&J t1_˭څNNłn餦5>夙{+عu|X_!KamH'|7}ۡ>8b܊ng1Y}/TiC7>N8[9o7YlwF^?w68%hR9]=3Dź*qG[_gL"dŝ8yNGYznsXyX+XW.ZϬ >derٺAۨ}xd4w+fq{D&ZN} 2ZUs[qRB$dg e܄ؾh!=0ђGKx{smI0wsX6p?m/t1[nӶiZ[)n&,6ں;%kY[{Q:Q׎bڞlmy맃|ZenN0@&>VkW0<@lֵXмzkd0'jγ|l%_Ȥxe_cpOL8E|M[홍 +[&Kc3VLSX C+>z yH=d;Y`tm[EFmt0 h?t5I&H4iTr3fʫ{[YU#B}w$Mꎃ]px';>@/ kIkNcB2z7wv)܉(^nYh{Rb7W"vnoLE&Kg_\etOdu=v{;gWjI͞LjL? f&;g=A|,.[ Dz]&[8MH< gLbC WGZfNQW{7I[wHC뚾]uPhZgD=WsYlA7NIj$#1*Kc+ڮ[1{im6ڣ/voɻ^Xgl*_Dۑ%qkuA/y3=B(/j[_D\^nMCכ}[w`kk4_~%}w5^O\?ww0 !g `(M*;fsȾP;y.Nacbfkza.\P?Dώ.ômf8Uڲ"]UBvgwM2CgJuqwVwYIGw]V6W)6IDwudSd0_\謞ypv`] N*d>evz& ˍg/|K|k5guysrc2!Ƹy_ɴb. Wq9C4*؈V/1Bn{<)',)kDnwWAuv?=|ݒm`[~nܜrdșGKicox<=Ú!bʞ%0H[\Ӈ˸2HyVt͕}ƼkeN[-M#=[QO)[T ¡ˆl돼ޚR6˿dO~g}f]<{xW0 './ui6K U5:wR߿@ێlc;j#* !3~d6n'^нVSd"%3Wcbz`s̾[#T㳿׬>vo'VU|:Hr`ެF܈Х1Τ;+HF9$|ʶ؋XJ{]Mf,7la\pLB!G-l$KC5c8#mq-/F:69b^7:f*bi}+l-%f݋5th7zRt'GWN ĵ״ݔ戙EzlubFGh,`smרs.k\VM˃J%OϪw^u= Uঐro#K ey)Yȥhu[]1hf3mgEw)s`Nknun:bنr`T_5k*-trhnp r vVG UVYUT~A}\X2;?я Fq`$j-AyoڌU]-Kk 0'z0 d7p+>~ vB nrqtQTnDZYT"cMre/YE5s`b,#5p;^R.2Df wN]}Ц=}V=rݐ[l<B; B]J m!6G⒴ɳ P[eyy&jI3R1/*+_2 ԻH=W)Fu׾u{}m1fZ١Tcv;4[i(ѽ2](혵0g#>Tj:[c-wV KV%yf 4YT2 I!H^"aVyM2<]vԷ/Q͏e)W.^YjXz+w̴Mm~;r{sgsֆwNtn)Ͱ]joq!ĆŝYȲ3!kFڗ=0Pn0//ȷĻB<67mƴ*Ow$pMQ^phQ9x76]q`^FS /@slu* yD=WGn6`ڑ퇊Vˑؽ0;x?.Hv\;׍[sivHܖgB NƮ-zlaiWTL\tL2Qb0FEdfy9^y8{`܌ْi?L+w"Xk:3e^m j VvftrIqn#~MhTȤ76O>Mwf n)a`Π=s]mr2맂e֛ۄX+wХL9by̾7h:R[%W+elW7:[l5~qFېn0VZNd~c&{WD4OXO9{P7lIoʶO3}54hia-&Rf uF㍬ ,&⼔8T/נi8ئ &jt4—jt@-xvkiyd 9nol)pWʓK[so-fBKzv+D1=_f{|]2<5(PƙhSU@6X[wƈd &4emR΢W^c۩V{]0%p}9-(v㎋%-`&)8G>f T0 !U&H=67֦qIyz#7Z}bͦH{ wSp(cɅ4U~;/UW-%jcD^)1\oY@Y=3Wwޗ20&uRNAW=Oz?9RS&(3ʃZmLD=dk,GD\i' dvv47 b L + /}eR{l ?.>oj"LBZ|z t>!6k:X m|G;ĕK72Qw~p_dŏFBήvM%ֻl9hqh tĒ^#Ӫ|KץLm:/RZo--ց,=9M{kKٝoOuѾcBvrocVԻcebiQ PacV?{p27F%3CiKA¾s1)Tdr/9#+s̔qZUu1Tzrta!2]wVj`{{we{X֑0 խPE}  -2P >6vT|7XM[^l !3}YrpF cۖKrxĶkXΨ?Lf'v>bK+K;KJKF bO;F{{:FWo!.xIzWQ]۾T6h'Gu)ǨA]H.8ɭ; }ܵ'}}1]jxdk\x.1&J&&!0J([%L.) 9L{;KU;;KTئr)X짭 ]_U퇊ĢYq^mGBm5{WRTvb[~Wۨj"u˷<TX.)n}Y66/t%?v|i7suN6t26V;c{``C ' y"YPy,Zz=#guHP&FUM:Ж..2qYju]}t17܅vG!KeQjczZo簔o}ɸڋm#85ҿ3$-#p /c?yח^+mc_+{bό// 3!&],kud&w9ꛥnxH˗BZVY6H?3e"?C7iy&`DwOFś 7¸8GO|L9LW,cnDs(c)\_3k)hȇ!rckӊlBS<&prjyyߞWaF ;=[޾Et$׻0|xA5ȽeAx'fH+Vks*'_vYih]Fj[Ξ8QdqZw_}ҵպzmr8sȏrܭx-uXקkw1S^[޻1.tt4u[g -/㷞Xϰ; 3vh5cTpaSicgWkeJ8x|\/ln((z9Q3WNeZ#/04¡`w Al{Yܰb`W }vhv1g:g/jSo[/e틶ʱ@/_d4ɔkI .3G}Xec -Sw=nub=+novqY՜4ؓB~ e~P1Rmp`/osߣסƋVzroݕr+$q[辧L`a/W6ֶaƫFގNÝl;PE*.Tͱ3*ygnmllCKlZ 턴/+rZdԵ'ڬl酻^ә[uG'yo-Phw톋N[ NimSY~*2[.޸4< sݦ{靭NciFtTVTyP ӱɻrh8N8n뱺dު׶ [ߢF76T_`ੂ[ hSKmѠ5TSvUr L\:cۧOP&8D՜4_Tb.QlԲ_l_Uw}w~ƱmL^iڞgC%gžTf+wkiS &,ƽhus5断s'u. #͏)emYqZNK٦%Q2i3-TikC)x0rY"+`;hvi,dq_vWZۖ Xj{ liM/r5K*v\w.;=ssh&K.aUI#G~ik=}fkIA~-J2+ްtlqڣaX߂6ЬIĜ]GxlI0O}~lqӰa#7ݏeB_ {KJڨ\\lQ/Hoomc );illScxLmXW?kD.ǻƦa8OX(dӸէ=ItfIb%e_9xgYo-ss1g:fʽ)P N/sk +0&3^ؐVs 3vAM~lA78Iawkn|//܊?b&36. 3`s`llp7bg{_w `&ۑztWZ^OaσM~p?{ӶpXfrO^";;ihr?-ƌ+{ĬX/-[r\-K2ae`)6.`2:эv39 qZ)jXF^_2牱乶i`m} A2m?pmc~7[YK+'YqR3Y}/;xȝ5c9ͮrK_Q7_ oJՍivgw[ݏVb}ylBeoǰt*3Y`jȟ+ew~NzIseqgJűª`Z ԉ_wfflÑ1bgi 묂O*8m6@ڶi~q.Pڎ,FNͺMo7c g;δqjV -lf%㌱^ʢ{at7Ka 8mѭhUi˄Y:xv^l{gs[1F,62 V*ᔷBڼGהl GܜOY<3lՏ=SW3# WvmvmyG'Xo Hc ]3횏%ݷ} !C9yŵiUVCW7-q VWt9Ysfg~h.`RAۇvAua9?ұpbmo}qhUYKhzIq4Iz;&{>Z5^yc5U\| t^aJM4@MUp?%0c\ bӭ߄8ƚ{& SƑ kn,+Y:_]&wV $(#w);+enb)%_&-v+BKyoEV);2+K=UсNF#b 6gi;7z{i,'=> |3wPJ_FQIX\鳉eOM[]˗NuBžv.tݫR׈5PH$ȊmHTsoնv2~9 rECtvʹ ]^<֜ ^iB Յ1b\,^bCl:*ox *#m\'A@?v/z h[O睂]jmpˠ,!g}ӝjr[6Ws2R\O/FU(`K9q&)t\[Q.ٖXfĹi!qSbl`Qnr>\tcxnYdsZD;nai^L4qzm/-[5 o0duI5{][7%6߷ &k\Vv&kak qKhdqqiQҵ-}/0Aq1rg0Zkkt})jp-<ߌ)PQѮ[^W9I\ecqj%a|e KW(- %\f ]qi!t5^Ow%o!Ľ=LfB첦{ +jm5]=jlXa/܃2sdlڱ]/'ʇ֔3}~}#M<`IJFS/EM}a!*N&ݪM{ ;.Ii2S]]"2\TsX`Ur?ĸ tWq3 `ҸaUfi]9dOFqGQg\̜Q5]Nl%Y *hs2[΅]擛Dhv#U' &o'0GLy4!} wl,UIk||*BQݏHry9hr=Q()dnpYnPQkgun=T])sNcт3FuHq́39V/!&vҹmHeFkƖ޲Ԑնt+"v>H5UN]yi6U4T{wc ;\jk*w8}Kk[)*ًS$&k*{`(+=M8?-_懢}mJc4Uz1F+ &ӁՁQJ?UHn\ӔN&KZ:SCD3%I%s](橶9Xobt鍅}cekv=jMW{m.inkw ,uwC64$N^nH圳n~T␇ڼ{KHP$):U4bXY W1] 0Reͩ*JG{),9G7!B/ e}ۣVc N (o Zg#ˌsQkZĹɰD\~&{S,Fq`"~}j~4_㾫t8gqۂ>_?MNw_1e)K*-NX.tp֯)v |j^cpԺ)`r6荌v >jxY72uƗ+7PuVBvj^i]N5-#IUi{zPnl`.ؽqgPpklnj [wueg.N5YFȳK>Եu과ɲE]层YrvזgNhWlnVc۪KM{,_t[:^;rB x˪kWo[Q6ț@;-Q/jtyœm#>|ե0_WnKml,/ڮMvշs@ :?b=uGYe7-nH}d/:V Eîx}5m߬9aq]1YVDr`;b ksrČm85gW&ITܫ ^}]Zooa ~_Y+m+l1 x}?CH [XM> 4}k\"\=i5XDØ1+xw.k]ٖTƺ@N_/zY-ro\\8"W+hf}l@4j'wb\LkSمc*9ksMoz!Z_©,bh)v!5lT[U nq@ZafۛMv0/tr۸kɓixw_xeN#Ozk1)o=FY7$}S~0Cf+kn}AY[&޹5Xyym8;VنP+\TzH\Jyҩ[0g}˹מMEvυ XjhR:NG `PXs %oWp!,lǩ>]4-͞bWIJWg:;Ζch'qhFl,Ps/`/L>sEuhK.sag(,aHn(ϊ-!TnXb{?+qCj[u> z-}Udŭxs|'`BɄ=+Z!}m&lrsqxrK=M[[5^3l٣S/o%iuw/4TK %…BԹ,rZ4RLsNwvV2^՚p-* ѥV% 9!@DD'ЮC+&z=ĩ̇L5qD|–0Uje'g: 4BOKfɨx;lr4!uNI1w&MÊne*8k+ 9hC2uF[jqW /d63r.l`r-QΩeÊ~dU }r9P'Kxl;766xReA,5YP3Ͼz[ino/_[7n ZRfHK`>[cCȫHrC)[XHVRCڭ=B6k\[nUșeS,SZcO#0ADF*Ln<{XLFٟb^EWǺP i;k x6Trᤖ9y'f,@ d^6׋*L gjDeA0|V0Kٿɔs'#\J5Zg,ב#\'9Zg)F Hzا9 קYu\ur_>MZgu f) 7Dolw,M?L XE/6%u9cv$R櫗uD\<#؂]N<;s v貣tw'5ǵAŲ恻HapU oj)Bl Fb >=/Kۭ![=<6d["e}lz%^oorQEʷghq8oہc־YSg`MF^O/45qU뢫{c" [Yi/蕱p@P?AG59M~flV['E1~\\[WTs1p:Gr-ypNV@S}Z. :k#y ,jC AgUq9& M!LO"ٽ .@ȑѦjz_N?iJ[{^Uck*Ǥ{Z}I@ iĔeMtkL=7AX_ :gBh ,71w|w:cR/N*3)e` 4yA][ r}{\T鱘1 ) 6Nh R"v~XxmvVJf%Z L\/Ǵe(fmd{%5vdA+\ؓ >[;] O`S4Hނ˓tWs΄{`ojNyTn1&]~ԝU\>a.cMM槰[ofN- &nM6\n -;H^ {[[eP u;/&VaC ׅDvWv޺N/󫭳&@JGf}QVn'xU"6:RC,%,xpkvH/r[Ţw᝟ otS8\6ᷩ\Hg4 ߕ[mGAl 3:0EZ(E']RƮ-|g1efN mZH_tNNsM^="=eABnxψ?V&92X'gn! a|lvU4Y~,ʌw5+f]M.r5 ZFP{֩7 =dEpHb/ӪJ$^H]<\qqQ׳4ݹ[be]K|VKB3!AQ,t+ J hƜf`WH: eV]V [Uvt2빌g՗v2F߸-DYq`@ؘ7xȘ5yV$- >9G&k<4|fLX}  +m,7ol!=4U"|#Go,ZÑn;e=%VԏC_0ȭ6dm5楠`U٤-ӫ "ZQϯ!9NxLƗuBk9 zT+ M.|++8FW0Y*9;c?@ֈHs%b|fَn&7C[T:E ':PK)^3XZgX0ޮXF:hfK|RsM?\^-݉ѾE*Iuqdt)Pً/6rʬQDZdp>+E\ö G##-uu0]>_aFE:c.`\rξ TEB5`g|{IbAPw >IuFYKf9p\S3YiU~.1SI/W5h{cJ[~ĕITR~n:[C$_݅Emy-.End+ĪȔ"ƚ U= JL[5}aJyHTq9M UڃXuD+˲{t~Y[, %ƫ 3+}@5ĜM;*m/.w%hXh/dڀP*E2RՉ=PM(̾5@Fz|OK S.5`5hv}-3LuLZ!,9^-+]ܨ+KxݙA+[5Ll:WwKvTStƖɸcvqE 5rgÅRrZTg7vnѳ []L~{xm,⸲I>j O N.T`,WRU?-6sj[:?`Ka7F[Q93*Y/ KNuq]׈pW\V8dz5uLz 9ɘՖF&Т ;%Mlmv9t/r/G˒ǰf'H,khwt#ndjo=ܦ[*r֦7A-+wtV[j>W/9traze:] id"/AJ:u ޙ&xvK97Ǹ-%˃ڻeA6VT+K߽ݷsgR8fhT*u]VY+w6TV{x᫿4 ~S++;nJR}-٪uеaX̗wyKٶ2oeo6@*bElX䩴I;W_Rɚ=p)&av- :u=G&YGg(UdM*@ ?+(FC od&,1 26սMԐ-l:: ]. T=[ TjtsD#>d͓aF#6Wf h =}XgVݎP['*^l/8]e慥 chMqNR29הkYIe̛a SÃ*uOe*cI;TS2\थZO^Řv1j6悦+Lr4Sugl΍nndgHoZٙUhqL˾d]lP@U*x%7>M/lj̗l߅3|5xo֢%}d`swU+OM=^nTlY h9`="9:XŲ+ ˭.W1 B.gn&]y4wrwDgip4ew;?۩f~^ i#p``t͆k =,.aIɑ3BvNjQZوl}+JZF"NblRɓ3Xդz`kLϠBfѨ]ua%nd,S 6T馄}"s 8lmp,ZorFϞW픑)9S콢oA6t~T˥+Qf}\V2{QƼ5eXId,wKzV \2ք8Ze[ؼ[rՈlk\N9R8,Jg {nL/5G~E1f )?m6yiԸ:=hYg8&H Y5"dRMx'Ur5G5km`q~H:u7^tP)z5Nwv6(-};5ȦЅ-bua-eTp玘o[G 1g|)ba뮗'ڒ*'%f{ )(\U*={::W!.!0(] 1#Ve{Zb\;'BKM/f:-/RG xNV텬ٮ^jxbvX׵{bDYΎ&7޴P(/F̕&LѵMjz}+ՕqmЌ*Ju9vy@IR[Q&zށ );%넋Z^/H ԧm~P MJ>c&0ƍ*^}o|+[ U5y QwLoaGjOBsEւ&B|H9]PڲnCDсjeڻ؄JVg8ELfGRe~˩p43I[YGn g7M56׸\ =֌~L^vR} V9҅-iS3,tEFJŹD˥6.YZes#k}~WBOAβ~<[ Wny[piF ='=uZLy!#u-j-AV,;;,MbMu;k 䆖q+̙rLŔ"lez:3΄~ e>- P0^Sk` :eruv.8K|ܙb1gmTWU';L|]4p,8u,Z%\zS:. osӭ|:]>P+w^4!ږ>Y4VIjcͫjY)-ƑZ=!礒0UA0Kl֥yOzӿ)" wY`6Ԏ3>E\IS.^F>oCmQQצPVs43e)9Jq^*ޠΪnHB5)rtt뽋:M+R*nd\?m5kYY7p_wֺw.sP6dTū[HX$&t}߼eT V)ղjQO-V1d&c,}vPב5_ڥS6F|5*@> h͏xfme!i:t#Hl{J)%ո59P5VhSPmKvƎe7+nek*JU7E׏Uj0ge3뉛'C̒uOtݦɴ눙,]b>KMn_疵VR#G+63cߑR UẦxgKdM{wDU:2M]/XHTSQ#mUr~o@uW +"Z0qeC|8Wd-Dc(hmvjX3Tr[ڃʧuj9KtSh1l^p6z8nXͪ[ev9fem,N4+;ck+k!=⧲} /"Jn'nql3gv2Sy6!~kkdzoEa^j@!,2;򇬥[5MZ91c ┖vigjOU j.SrYTHi4\Ŕ+j"3`~AZQDLssnfE_nDQ$2RuqӅ(4RbɔhƲ#Eu-yr/,5}rWiNP24K]ӍzJL`wnhX*!8Ы{ zN-D훖jX$ {_jղ,#dyKZ GZr~nXF}6K+htk ׸drQ{kl)Y]LS5%M-X[,-Y BKE=הvii$dc/&;AyrYq[m_li6.;"Ȼo;r6G tZUQ:dizAז+g9KiZY\[X pav/IyYn|Ut+̑91N%Ue6TK LmlWd5zMW*ifQlo.$z/^`L U3)Jv qR P}l2F;2z,dW?ym})707mTIH P.2TUnrm(:-O1|37^Q~/ZP;KjUKHkHukecOTf'FFtˡhljeB LTK}ʯZtoKVֈd)Ӌ›=,v-кnjn{CS:v bYduo3nI{goG"~ƨvL@;uz}Zk?篎T$lK.(;WSLKߠOX^:@Z(~7LmXU&UVJS,%gvj9QMzSFJj"Zfjѽ}$Xmtiԕ Ųt˼]}MUVHV{4]VD'g5t~'iIQ]Fn5.PC C 9ԭ<5"~WJGFX1Pk*V#պwlsm0!WnvQc*IM0[ꪒ'f"RyK,D/+wJSPp[Ԉ L weMP2U=&M*?NX% FsM4{y}slT. }򆎾 TƫvթѧH[tKYhOZ7&«kLѝeCxB j6LpgFIr̪|d_+GYc[*wS14jhr̝:eʑb_K.\FnbtHZiJDPKIotǧU0]j5B^iRc=a_ݣ\jm !և龲=MRX)|Y9f]ۉB)Fvo%|tKcE(BUc S~.]`3&1Gܚ<$Wfz4Ѵg뫢Iu6`,Uek}nm-.k0IJ ѯ@^_̔C^%HAj;I$y59օR,1?cTa=%(5^[),N6KWLEkk2U@E1Ch ՋӚ&\Z ܸ˓w:[h^ R.+-{[ L, ^ Tjohu4lVl uQ_r0q/Yn60l¨`c|t͗M0bAe`k ˱-xm xYeX~ǂ╠uQ v1eQO ԕ@Tr([6&׽b_J0wڄP1,T31 spS=Q"j0JM<2)QrkbuUQWԮm0U n(3e’Oך5 qC eM}[gW8Oo=81˳ڹ5^wdHlI" N2ö?*E)Nd}ݟEIF[Xja㮛Nr;4:UN&8p1R{lՍ-k24X[?to_,⮥J]\ܱN&9[_}ed=.CRf/oi{ֹ;,[ ~laV*ǭ:eXO t=6loBsX ];=k ™ԞdM;6i*E…S^OEY^IlQw:kmi.npQ~'ZTQ-$ cCm&MaDpI/ISie4|l.u[P6yfN6Ŀ!KjE+W#Z҆GkTֹ5ul=P3\ɩhQ>Y~P fmJPkNv˜svgKe%ȼm}MeJT˟ט{m91-|+'nv3^~Zr]aJFӻ zӲs;*P/b!ddLeQtFv mFNߡ ꯲ଡ଼l!W}o*u-*"sIP iXdUN+Vɂ+#Qj.-mq/O+>^݋$ISWr0?+Μ5la['ED.F4M ֩{/AӰnE@E-]4ސVvWf[#EdpXJf>%n]>:5]KcU]̭ݯpbjK\¶U|UP ӗym(tOh:s2^3:26iCa$-[V^+-wvhj4 p` m4V,P;!%fo{O,楔/0e-Fe~br2lY8ֱdO2pPsܦĕQɅ)Fzklb:<.GjʜJAP~M6Th͘*wؾUɣ^Vh̖>DhJ}*jOZܛϨs4y=@<0':-}&K{WiW[wTV.'j۶G&;2hTӱڸAmij-5LVdI[lWPbsmu i>UoEldxJ3WYY\I*=^F,0<54[eL41ĦG*/.n :Xd#*9 4Gh*@u,;.V̊WX7v6Yͽ9_(Z<-mhB}2n!׸d~Slgen.OqApEd\[ר~vq:Cn9pQ;F(ܻǸt{)5Tn^7CRBvyں6 J$+H4`ԩӇix-v|Tfh)]Cobx-;W. 7z|{OhM=_rBUWk4cq5$_F0dB tPѽ% KĨK5@*F&|R;g7a+ !wxRWYS(' ݎBlQYs+y֮PZY_侲Uww<Q^cn{k9V_ByEh\Vb-N7< BߔڜVJ۝"]P6y$ѩɷL4#*Ŀ-ފ7g2hЖje&>ۤHXZFj>o@ֲ,x>S^zuK|AxK26o+kI-Q!nxu)ZNw)˘ǮZ/@؆:W'R^>fTC0 )dO(dJcKvI.nmлQxhBvk*3ىqR&/DU}f'qvXV<:6U \j;nrw?Α*QAR6gV?%J̈́P CBve6VߗTH&)RKфU4~t|+k+eJh-.IײѶiTҽMj9Qq_{cl1\:fQSb|c#mHY"]ݒUټhM+“mlyaB۠[fo8vMVۢPps-j0hRnffvX2ԍ$]M>r* Nq.iu8ealiUlCkVBU)]P\J_N\UiinoY' &ƶ^RCEL+:IFyoHFf%YeGlNUǥȮULxya J=FޒW>"P'CgeV!׽麣VΌahoY߷4D3EhR&x+AgQjeݰ.:gƥr7܂ŗL57tdCu6.Ku$1!KPC7S뇶T,Z;/8T.A .hwsS+c78tkTӲ9Vɹ:'V%eeT(+Y<˵ }} &Ds91ۅZNT2eZ ^XƁ#Wap:ł[V05;&P&mኵXF][kOJ &[IScSծ5&9\>+lwY>^`LR4MǃgL<)|Gs}traUP2?mYmM!&[]IBm.&[{R͹:uRpjRͫ񕅼 o2Lߗ g)q6^c.yyR/.b,K)[WekZ{ YLw4"` }ڸs([RLڹ}=ݢ6#E·Tc&ԣ'v/1Ol_s/+BS'{tEP]3^lŧ* Gܐ?j S5c{('r>w kQщ=6-Z_NrE΢rT@0 jT"(̕YGΥ]G`}(2 {(C]R{~ϥJPהg7 %L`Jŭߪw,N]EfS 1u;[FAj_Fr5Xt/rޥ9Wʸl ^񎌖IG&l!$w-SĚ7Wi֗vM vOcsq\ƧHOsfTi70n< עb.f4Ջ)M*=bZњiy.!.?l=wt3ziH|9N3ۙ[2^Ң#Ij#2TRDV[omN@«lNKÇ?I ݍٱY]"޷},hٲ&(d4K _CIoJl/T셸լ*o-m-omi7̥I4{I퍝1vԕk[~ܯnh7Kж(qO]T㳭%bjHٺR*:L \F>Z' Ấ[ --s ZDWiDG:MD-^"\_>᭝GJE6Z6P`ҩC [Us:lO &*fK U_ԭ =6R7c FͩG - X0Up^Fɯ:Ff[.pm(Wj~)P-BBhல[cIP5`IٛT4vM۰f jܵRf^<(__edtYaQQb0=H2ng4_ M2-ʂrqA~|S>RFܿۅR"ݼ[.FA`K8ǥK\vƜJg%KQ."݄]=Ƽ,+76 W'~UKҨ^Ӈ;2'vGӢSQ~9U^~rgh|;kϤjr߆:" '(F!Ѣ7֗aat>;/\Ov5ɚv\d\T)$L.Tu$62صЭdM9fWbo`-zS ./̈P$S~'{vA|  DY^wVA%ljɊ0Jnx跒%JSf斑.]o0$(&ŎRe?WY{SjFc]MVar=u2U+cgN>ED fLzY!wV#W+ ̈́rY+9YȮ#/[S,VZXeDI*\1z+s-K"6i(|h:nRiRINř_TGS^Մl2pvGrKC'@ItfO9sjjtZp!t1oeq穇3"?!sR+J7+(V.&!OՉxEa2 ٚ V$nj~O}Ns' Rt"M!`1C֊Q64bJ}lk܍-C]LOJ ] ;}JC7~'M1};ݘ չx2rE&6LvŖWMvsJS$:>ױ~4ˠX56q7:#įMwklue0ˆǬϸ>%&d%,9Uٴ0Ig^%H,UӘF*qF*oQ//꧶1a"S"34Me7L[݃/7F*M]EvtH|mV[Ck뷸FTŹƍUha[#Uy j1]AB'>U@Cv{Xrά4_ Wwv fDwPO$*- dW1~JMF3?M:WgX{]7΍ڒ6c4S 5Цa */$Jpg)U9R:&F4*Jl;;.G2_=]0"|-UQϲs3MvY\ܸHš4Hpֺ&b-$\ī٥J_)}ʱVH.|ä unE;TZ݌u]TYiȴ U՜#INʵj= OOy̞sHuS'GFS&.o.#ڮcf6QV%<}UYfqEaI{mS[N]C'NZŋrOpZe ʽ7-O6lHs0-JʛsX]nG)~\o9찈o,ܲt:&`c K:.ݪK!Օ;)VWI4[2d; iҭG/gUyֆDq)6 &v['{}Q۲S˰"a aE+BCq/N^3 rh1]~2%G/'bd◼kyFi; 6Aٺ`*ks' [΋jmm]u ]s6.ccS%.boom%Zp@ˉK7.݂d9R5.%I[1RnCR趗`e9173:FvVk:l|264el--w, 7d7G- VLD MF]lA[MqB|ۄC/+k;,!5^8dz;C+MySl5}?-[>qxhE4u5U+ۃE.6 Zԩqڨ`^)F"wƧmg4֨"Bq\k6,pU ȶbBtO[Huj.}1\o4c~t]K ΅M_YH(tE4Z4 3WshKpB-7*Hy+?+q`}ڐ'cQM`{B`a+o^Ut(je7e!;݃= =(=83.,[nohUր9qTciT-T~Uz.[ H6aZCߨYeȍ2.۸ؿє5Y֔KKK>JD7r(ҴQ{Xa Ɇ_?f[bxw0?,ȵD;[2^!!=hqTWEz=afoJYΩ7Y^ˉn M1塳<؀=*G1]QKy7Mk`ζcrK{XmT˵^sU}K+{meqw2.<4LW9رxNvy0L9).Q+4yukܱf)sv߱UfN*([Hk)9s _L1oC!"=g똆ز1KB߆8dߊt4]ȓhƨr4fª;Y^\okkz2[3V.F*!xy̪KNE ző;>0sRmZW=;ǚr=ۜ m&߿5 Re\%mv}sFs(o`$j ,iJsSƾp[İLZVL/~OǼOW/vZn[1ksMT|*S~zbOc ^K0ֳՒX6zP `~$\C\Q 1h{띎?O6)qco,bޙ2rCۚ n!P&RF xoJ}(pv;j#Cjzզvd/emts -JαܽSUrWtu'}JM`N[?X1;)JnU6iB֭$˞1l^W]svTQ5u LyUe6؅rBl536X.0O݋5.JBM7 cqF*ͅB魁[Unh--&tKzfһɦVй$9LΠdB!Jԋ-5bM3^:(FiaqOhM& t(j5g85${)X լDVZ]xIY;/n5%ˇ^mJr;ҁ%VsWl;dt&rYY 8c7XllE7IR+؍#yjbO]voz)uunu|$ E}VړBSh[mNjqx`fQ2P37-^NVZFCHyTi=͚EbUzl+)^6ߢ᧼EgF2;~L,^2'Վ"[~fzK)z\9Cm?2I3$T*jbiut2_@#WC*4j>EkXY+),"#Yi>筵dP,uoX*m>2WQ:wRIuF;w{*0+CIY.F"*vrEv/1Rkꪹ|q*P43eY!]xVtv&C&cd|w rtd%@X] mYB?ZCg|v{W7܎[d\4'#Z䦕IWh퍝[(=_յaaK/MU$z׊l,"P̩/[NRdhZz76RFf*-&ŚwHc6ULm%J&W~ ܰ۰(׫m|rj/tWQ4jXB<{l*AK->hSuT[i#ME1)x[{C'F|yةʗɮ`cK!*Y:T VI}HիEC/2j21NBHv@ol%+,Ey5Z%*j9ѕ!kk\3}r!D_O^ 05X:5UZ+Bi n2Qվ{8Э-e&% Or+QXTzSZSUD)D:G(Z­mit+ ~Q봳eƥEw?L*Nk*i"'A`=W-~][IkYR_5H jFrX'[]dҘ.pZ;,71Le9+EM&jc,Ⱦڡ2Ts1«^at"iHi^~n,^Tͤ2$w(CZVZoguj$9\tMjݷm)DLz%uc%lȑfHˏX^‘)c/PyUZ== ͅ2Bw#,Jz4~[V<NoUM$YMLZޕ"/H=G DH1mc%qfLzMc_d"ohV1,KKib޲[]S],~oGjB*Ͻ/B)_9ek$ݨ3K'e3wXaN0BdW0'^>ԝ*pZN]Bv2L+ÕIh-MW4"t=1HˈJR-,u(m]qClmi1M;}P.j&<)^*[NL˔xwkGѽ-?. 4HQvڒeQIՋ;cI;TZ]{A GJ2{:m<Ԭ_ԠF5͸:4X9")a32"Y7gn58ҪiKGHUȪWPPIgIHMLM] 2KS,٪u/ccF ysn-W[EYrKj୯ۭ5uȌG!h\v0 5VfW[thw)qBL3OSq5Zww;W `\l"KIs5O*h;t[!CR>6kxS[JOԚ$ Az s ,6!u%&9:%ׂ}/tl\۔kW9vޭ,&cF})w[mc>3gn¹9ٝ%5v?*]Tɔk.\\>ѾV6˴]uq_9r UĖy]*+ډm %rmձ P ۋi hH",MܗI:%IG^Y!wܥf?dyiSBZu+m'i1[zxmʗ7G j8߭x%rmR PV÷ֵ$۪=FyqW[e[$.vLXTD>lϵw}:Etٞג-dƟ=%\XUELSZR wZTjy ގJ>)mAb|^6ݦ5"3O}~uMٜ*u+_xfvjzu7|4h^eo,hP"R$&go!fȽ:13W=mMDʼ64L,5++?9Q쵩P9M)J丯nbʄ9w9pY=PseUg)-dIٱd˳;|ALJxzaD~b^Ǖ'+*k>\vKV%艌qV;-Y8%u&x0+@pef5u[!y4sAW`J%l?eN 7mA+^N(ˍQ<6ms# \3zE)<7}v% a}N-FȊbS%8)NyKKęC j̓b_3,jakpo% '17KYJ\mN͐Pպ§lA>̠RX*4@&LCrvaD͝F"H*-N~,|yZP.V/Fs٣aڪKmW74 +K|0JNdd-[ /`i*S/|*:<7ֺ39=44lfsk[?3[VێrFںR.,*Sifțo/cPeϴ,i}ƝHBM߭c/sZ Icpp0Y+Š619K&+IלvǍ(}r;֙%jt&tWje tI_t=r%% Sqѓ?* {Fu[桺/~-ʯtFſt_ye>Dm +CK{qX=baJ{2(]f'+p?ڨ[f|a p:2'QWA YKYWDkH_{Sn>1e-W!RFA"̾yY*[Df}RX%_܀H.kVCdXT@^9BTVHޜ%N ɎNGZN 1N3f]RqYVjGZpK9n~pUq/˺eWJ;pY0/Յ[T6atX7 [G2& ?5bآ$C@kXdiMRɨm&P&]zIl٘~Dd6aF)"ɛljMu{'\jWیA.,E yn fs->uKH l2w< ^nmq>denGSCgr5[p*bkɉ'YVb# ڤnFƟ]PD{2 }- i"ʔ\aow]z/bLeoF]T* 0}PTjt\+ z-%H꞊Vf9o0Ygj{9I:LozO_傧X`T2wv.CH$H5_4ŢZ5tm F_^ 㠧]֋-D*r9v2 -|k828jq5zP?Ծ+Xy̼J!Kktt>^RptLat+KgFg~tX*Uyla Cdz9iXpAdUTB[U6ʻ*ՕeOHU;*Zuoֵ YWU\˴+)zswDqub+awsH˳̉yfD|LxeQe>J<;aE&砍`ծZ]UO^ԩ`6tL763H 4J׼ڕ f;Ekk=6GPկzpi&|Tn*0eˎ\¸Эa'Or\DgX]oRzWHbm]d)b?Bx (ŋ.FC!QjDlͼN7Ӡ5uQtjaVձ"QӶeʒE5ra~Tkof:cqvmV NWýLC}W olƭ/L#9mV-æ[Z?V+Иh&;-A3ot}[1xn{y$͊zX/.*O{߈cj-Mf)J *oYi>1N$ZN}$G7&u};#;돬BSAxd4[`]ƳkŝjZȹm3a}hltZIfe oKN`RɲD^ZWo'2Gkno)U\YiwlG *4 >s!m'rNYOQYH_4)šg:t6MYLuZyPꟐk 6FTk:B-n2k|M o-YYT#&KmR3+CL)e.vQbRd'Io;$9/`{McC 0*sjq#fIs%U_{[UsӉ~ލMڃ[_ʉ5}ņZbRUݰ@^Ow6^*jus{)|^k\< st)4J#J[]Dڴ:XG';,z%fѽ \9sSV9wҰi/n)y]rOJ  ry $YEB,V`z0dv0ŵ} +{0DC{58QJ=GB넴be ]7b'n-[/L8DaΠU-1] beN;FK ͝}ve4RVn&Ӓǹv,WICWL[xuޙx9ZKqZ6]#k*nƪjZV;o/JYعޗDvԢJA=rvc۔RbQcx}!˱!*ϵW4M6S9/,#JVޢavV!uMH\ӗ-+iXbVZt[m6ĵGR*<#Hk}"XiiUM՘Ҝ?:)=%hlh+7vjW\uR;|;r;P7&X*7:GkidmM&Li֑iD%u[KR~"geI85 ujV*E} qNd-Fx)NZRk< +#vΊ4b;DSdTM&)d2| @Rj!SORs]H >4Z͌I6F9-rd0J9iK}zePi[DL䝨cյTnmmD6p"a95N}ƎCRœ%*}!mbu%CRZL5 ёWJڃ%epÖ,Ukm)1L06- HEU+KQ6Hgc]r|?IEZWfh2\؞l ӜAT{f_hեES @M!%u\e|f%QeSIܗa5SCP{wZ0=-VOmPf U)߃v*?hT![ɼ]m'<a^+_C黢Wu2%uNW$|| kU-Ma][RM+Nmr92TAZf5p{A.eir!56Oji4uˎ}hcVOebvH&]Uoj텩SSvXB ԢQǡ!e)U]OSe~YXLi2' b Ys< W=0~범N(.m/ z]6Გ`E0T jx44wk+([ iu/&_OV 6*qWw84S 2Kա+1 l(ɻ+ePWN{!x5X'eh?ir4l&CKN҄`6sKM7v.KoxB8~i$[fOC]ˬٖ-H/š3uwKnh ~Azen^9XV`r-v`F6R<.ofI i,0saكCIl~ڶ` 4q3e#g$sUwwyپ':SSN Xd 6xLC`p< ؄Y͉#կiWoU,7nF՚kQ+Zd[Ք[iYg',*%R4ˀn9xZ*V.TarK?s,f Q,]G}Ow23ɺ)wYm1TmCkn 5_cVً6*=K3vjP>} "W ;ɽV[5gxxi"QrFi)N&yn8ƒT#睾O^$WI1I55X[>v5ށC˗{gDT+#U̴Z]SM~@੤rS͢k,*_RX;!g)z _!: TP0f*m%w۪Slx.s 5jr#-TA2쒼fKׄ YVƈA~&cYb"=#5(Pk[E`6|RiFƻ=;nR(l׈]Ov+;,CٗͩH5-U7f{:zʥx,$4xiL12Wq̳"AݒzFbx́&TŖSXE(ouqϳH s+sE:e~b- ԈA-S6uc;4Kkv3CV<0њ DsdXϊ0ӽ7lJocfX`OW ff]tcy&l d~Z$r("R-1ZNd5CqC u ڒE=JjB,9ך4%ek.ǜ4m*5$5h>`LeJpMJ whu:rI&3@mŮTE`F*w]l0\rD`_џmaqoqCjݭEd[ w:vBX~預#BLKp~L' 7 ܢiCzx XJmseߩ%˼8DֹiX ϖt"44d4yOqX\g[ Ԃw \TjVf+ ׽hxG^{K }uA^BR\xPuES6xa.n7l,8.J~Rǽ(1ݷ)jnzO{N3#;9udPj3,xƯmM]\nG61O\Q/]n*A}">;u#=+ўҴ"97&[حځlO8󨃗:mH4g,esJv1Vfz|FJ}H^H \J)yPQYg^㓧_=jNN9SᵵS[*^E]+*)nkBYqpA¤ 4 uw ԁP}iLYZjXͣv0\)(7׉3=Br&8K1X#˖gW5.+̊4Bnf^RBՖh4!7lӵi]F[s?.>*mbvlTKVt5N&Y_ahHiE/p/nTm1 |ŖZZlWļJ*v͡E4} Z_Uqm(3}:ΩTi<6R{Ѯ@oyBB1}he6Y]1ϑZ%Ք:TMfuT &Z33hV_)jbKm(<7- +%7Oj/]ق71]bzn#P/gx-1Q汕P/w6m#[Ȋ^Tj j eYnfSYY\' 3V#SkYd&55}]+Zr]3D;s{PJ_D>,fOĸq|'c \ Nuhj[~L;\/5U5}˽:ucn*IĩVWuAR~SdeMFԕj+K3H%5 LudtOSK6I:fڂR#mr4lzx@ؙl(W(~m|3 aUɧc /*?3.Y"}tVll[ϥz{ 8y+}m>B ^$RTH-j`*I3JqpfKj:zf-I]T-fK)JKeԛiRJ5C.hRWzړ"坷W{=Ygf{Mɺl)բ=m2jV秡Q7ֵ:vQ?(kq.P[هJ2аY/AGwD[]Sֳl7֡Q}nd)|~JU۬Cv'#u6k4oV T˖ 1m 4yI6Pa) HՇAdQURZtݗ!e88lR6nW̧Z퉤 y+n-GXm;ɌUnUvqע}PY*ie5EWYǭ4fZ'KeIdvO-!M? ӺfΧQ/jt]JmR$&:[u#y,.jG2uN4aFΆ+J5U( KU0uy:,4M4mP˱3;_1ShDT{BO.b-ޟ&Nnz $_@jdr\wQd@$ RS%WE݇Vj=p{vJtęol(3..ڤQqBlR}x@b1U{ߧ^,=%,\iK8$iDL׳>gџih}Z6]^T\ޭkuyдZ}8Zb6k6T}A7$]v*?+eb`uwS-<҈$:CyvQ^.T㼽d|Ge^ˢGAZ Zhw*շBJj I/b/9RZXS#]6IKڎːT4%F Zaĸ~o Twp 4Sp~)W>glI6Rh;zί4D^^,䅷ˢuh2e>t :!J9dAI8 J"X-RE JQ-R|{iY1)Mm'KQoօP+K#S%o=5|\@5sm"SeSx5ٶ]}hKDdS[\ S_]Y-# ro5sV28GJ$IώU_bA?fkK=+eʠ@˃YT]]m+S2}{ˊYG~O%5b!;n&ЪѮ'ebbGb'-TrҪa öVQRUPӇTK }\huqqh7t8 ꫅r k=L\7su,,{ERR/Aciţ&sA9؊ tRj!SlYDFeT{s8fw}5c)k2lͻ5t4/]KޢEyVہR34TnlCfm|sz:K Tm {ԏ*CvvEbbt!SW߷ԺkYEߤ8uX0T k64ri\ᘣdXP(0}H%c i+dbI{u:$_umZoѻՙ*cעK8bcN]F;n!l~3(WҪ"R(:7 4sV.ߞӿ:J4YfO!Kd1ۖQ+Z[W{b1Î_T7cOT:}WnmYA!!B,*7TP9%8 }Μ*\ HwZ^սkP+3L2ȡ0ɧȋNK,-M@\^>iR ⓫HI>ҐقRUsUKռEopt!E=Ak[H>o ФR7)7+G݀7{2dy]HUgoh`r1d:\Q(nXi)2%h&Xm` g z>-V^:)q_豘TcنTKRĎRCi  3br K װګ߫ʨSpf AS܏uԌ*| 'VJ\TKy&6N9o9!&멸Ų,٩AVmJѱ.(KձNh'!ca t맕ɥAXoáX!4t#ٞС-@/ck0v3)tҜL31uPeP+uE{a<&mݙ]Ml1|J]վ]21bTC!$ϊ~l[%!Ъ9ىRpe!FhUmeͳ0MNOTT8ZSo+u|DQUwɿis*5P/O,1:;$a{Z+jգ*͒-Iz Unjԗd<+;Uae۬X.(BUZ1%yA2TaZ>n&r[Q&!YR.Ey$RS*qG΅2=3h8 Vl24bVRcѨVO_&4g?W%KAh/2#EqjSEP%"]HO} ]gV$ԲӥeP~X"J03vK˓˓JH;mY0W&f'z%TrJF2:KPˣOQ/b=+RN^oIsK쪶I5"¶xmo\'uw:0U**9dzPrԂi Ԣa%C2f[}:,,PP+ѽm/B?Nܳ\cq7 miWaumd=+Ȃd=)4XM4UcʜUWuٵq5fM T^Kcf5BegvˮP2rJ$zh]M2hԄWLc- ^6SuSV7_N-T ߗ~E+Js_nJỜn?] JdZV'8G;$TʽХeU^N48&ANV:5nP"9'doe0"rSyR1sJ"Z!j/Cn&)b$vndWuϔ(S~#sKqQ#dیӽ)n:45àce5b:7ۡThT9Nε z*gi/PDPA/K7~bʺ*|^uG7 6S.;4J.^~jBPvIj"$^rК,R̫vWzOSI0Qӓq ڲCV"\/Ȣg`<å=vF|e? 0M))h&B-31%UksNp0(f9M.;^f@ÇLUJd/,wVU.>Qu`C]Y4p."<~dmEG]ƶ^(DDQբZT5qg#mEpB*ՅVdܞBk95̇*KB/JTI^K=Z_| U$*|iirUӺ)(r-X\zt96a̸=!!WM:=mFGT5FnQEGW,_OIYΤZizI^NkiV"NFYW ӿSG)ZX˷MO[S([-KUhl$v#N F&} UgezAe 6%YϺgBiܲ*Cw9L}+W1af)Z-oZ,{RnٓJfUΊG'7Bioe@I%沜T4F9"nVʩ~H(4gIOȞpH۳ѳK2Z[C\u3q em-Df_U23U]=IZHKa)+P*wrdhr.\&Lg=xa[o&G Pϧd5i+T*Jk-XFڇSM35:Pt缣X[F|H^)Ԥh{7-R+h;^[{ tCJ< KXҖ5PHnmnTyN}RQ"[_}ZSpXV@&Ov;*Q|/!{IRsd9 K,66r=&"{ou5ΩpOef 鮃*|exMgTעg#.̔]~*h@Z$MjyCJ9mƧ:'K sU.kep;- LlmU#ϼ %L##HgM;zEPKh)E?]Rf+0d)31Q\6Ju|i24O ST36., A x9FR3S(Rs)\UH hH Xc{ =^ ZqAoyfv:ܧUsYzR:CT[רٗ헚2|S-(*uqQۍKnk'PgҨfBC/? h7kBhVj[iKPu`' BY[gXR^@;`45Q9MAizYz:B\5x=1(ٞb1i6ϘJN)kajʰIU`/hкCݙJ<)Ε68~S&̘FTGM_,=>% DgLm5k6|&)"Nw--U%[S .BzT}Ps/B9!{XGtjNfuhVeF%c$4=*\bI7aէ/!NQ%fIɸu%(43|BvJUmРєZWez}0%սG4,JE*GeiUZ}ZX3emPM ◡Iޥ*eՐ^M9ouLI"hV3|kY-৖c5HYX^&MR-)X[_gjHm@O~;T8fy0}JrMG_P/Yi=Χv ) T *5{z5C*|M Y=T|7UZS vTZ͜R>',+mu䞜FkqQâZuĞ-#Mq ڶZj K5]2NtR1gJ 2T’uľU*BmH8MV%@3_RycG*P'd.MBsUe&Na9"VI)$Y_6 V0kB^"z$ϯ*y]UCnZ-ɳjhs+|fd#\:ϳ6Oj-)UVa̜Eǵ{_G&᜴w//fVշBx~ iMUHm+YL5DzsTJLeeL"Ҵ\ǡS)zSyqd]<f62<hƔ-&0kv%ˣg3%jEUiN[xYz.ylL$J u6.4N[jjy΄˴:ɚztMqfjw)JwP?p kOyQ:SV( A=DT8.SHx: S㦅4퐥+rhޖWwU+.Ij=[.g.VYH8kIV\IUlV|ů}^*5jsʸ+oE1̪*,k_ڻOFJe-oB*P_z^-db g쨪ܔkzIL;#t:j!cJ6mwyPmwʽ̨\_$]Ue"[P ~/D/:c))f]2m|i+DjU(a ~ũFk+.uV+!diNM-GaWy=yA[_\Nf#-/(QAG4p \.kRWe&8z=q(?3'1n/]Dap?ּ+GnUjzľG`uo%LG+ZolriS$G}II)c^aX.vh6W3766ruJ>rC,r)Lh vr \6L[͙U]}:ܩסe z/=U"/MV,>|U /č7dX4[> LF(8QbtP%שUJUۚ?)]աWǷ#vT%ʎ=Wg*^s< ?J\W7phb`'Z~ ^QR7&8'C9ơV-j]4GhJWI1&Hm{A[CsbgBÜ%[G&;k/L->ȩo\SI7ؑk%ːj*21jPIˊ"!O5[QQdZ^^5Uozm)需1ө&}eMA0~ty \eveߩN:s9MvJAj/V^⵼/N7t,}HaUQw%e^V񳀺x0#Ldwxirw'bn߬/BmeVׅ:ա}ܰ"[l+Ô@:Ⳳ,%mMI\~eOQ#uEjo-WP\/d"ݸAMX!sNhd\rMܣƩߋyk IEڱ9䫶Os 'UL{Q/ -SU;U[*k}vFԢܟ[㧑HsԵ%Bܱ XUrUY`#E^HY|#7SO*#ؑӛ)EոiL׆hPIeB*KUV*V ᧱YOH3_ҬLSoNUCHZwv>!X\Y?]3=_"?4vJK5yښMf%ֲ,6U@lGCgjP5g$1dByCDҊ+1Hޕr9765HeHk5&A*LRb4X%Ŀ ]S~Tz^S.Pz%aTvlR*'J}v[L20UffyH=E< TN&[|%ko4}N|)1pE.HȯM2rևJM`HW 3cN >Rl*Z1\ʶ.SY'lcP]pV2yqW¦hjW'Zj~& &)kK0.+4vHؙUt֕|/PsrgɡKEmLI)UꈴVJB ^]L04%1Sݑ979W@1Ca ܴ< e/KRc5@`v6W(8 D\㰕2]sh1<,G?ѺnMIT2+B kYzk^RڝkLT]z&߉.NwX娠6r9i4O]}F\c!Fݸפ 92ϡ#ձ隒UnZ}=aEiSWw/Y".JO/w mH_O"@ ƺĭ~DD֒"ubh^wJo$jV i|2k@cE6fҫ)hw ikm.S&(_ȬxڜrZcDscrUû?˄KСLBS[~ u &ֹ~DḸȸO5/:5rS nn4ѾnG Uނ27{[;Txr#̕pܬ?[r9SvG?RfjV7&wFͪ$]oc[l &y[3*i5W*ߕ͵,g }Bns'D[ThXq*L8-[R& =bLTSrU5,Ouָ]w1n&TH1;R[f$~]ǒֲ<]Jҧ,Bs&%Ҳ'{K)fj#iBRྲྀ [NU2&s֠SZ6k f ,*ףF i3d%Jm [Of4ե@*jWmҨwZ,OMɛ%>I%C+IF"^.`8b$w?*Qk4uF9NJm*^7WB{~+*,+Թ ׳Yܜb @uji=ǖĽL"vvtvl:{h*G9.kvLWy5j[Xv*wfqn~i+ڵ=mdW2+a՘.L]85m4EP&*ܱ2̅yWud[ԪZ]vV.׿mU%I\kw'(}BŪCCb~.fuMD3H_E^ղ$)O"nx1NM7xM KIeI"]~4 KKOk*{F|ZMԊL(H\*t%$S"{,x+`cU"=-MݤZF΁>vGШ]8mBFLէ:XӡQC( }6B&b_U}V󇀭׬Qb1tnDR#̉u.28>->t6hbvVs*Xh;omP 4!9Mc@Al녺f  V1Օ &9+ -qyN~5w-nӖY.TlgeUaS[5<,(&&˭iw>ɀs"XQixIv>kRu[4.Ic;[VM$ }wogEv9qngxmtoAiZY(jR@Ūy+'IthZM@~H5.n2uLZ ŵB]#lޭjGxV;k׽,~X : XϲݴBݥC w5^OoOCrf6%2M2ZSPꑔlF˵ǡ3d'Ŵ dץ-u[ fqΙ._u(3O9j5s<Z(J ?wl-ingcWxeZ:+:$!r, T\5z "pb014[ѭխjn=ߞNޢL*E@U6>,';RirhsaCfYN!S-!G˼92=uQke J#nj`-]M,tI%r&%FR̙@W_+w7L-Q0_=X/ 72 YMtzY̑klUi ]; d6Y,xfn^]ҩW7jB%|[nڔR->} rLV7L,%i2ϼd04k*SZC#>U2\x^rW_|;moyo561Wk{I%˗jrMQ> r&"%k:e=?լvOO1$ZGANԏt՗6>b3C]o7]ֶ!}d):anSRI`|j26mc#Z U&yB_MӴG+˾oz9"M\@j@SkEb2|jE\wǾ:&v[/{SFp-j޶,ֵ߽|LQGEڸ諅xrmXBN,? d-9 WUOc(C3$3咷,33\MBkUBݙE3vjQ'龊VՠaR*OV(ZSIS(fUM(_Lu^!jQm!%*C9o}4Z~fZ^oz_.&]]T֦;-b֊S}d>iZYY^-L.շfN{_LȬL(jʋMFւ.#WevT!.D³>jܺ] kڏLɌNzo21! RaoD'h\*t>E+3gh^Kͱ6oMQkRZ}?:x ONko4~I5VvOSsFesL`?9 Bnfcۨ%HU"ޖ\Ia~j2[8">;NRbDe{im_*Cqux~CjABgiXBE||;g>gm(\L74*ǕT{wLߡ,?,3*ew6Ա˒[m)yw{~vW#mҥe4)ٺRs/@l'wRMF݊2v :Lqƞ^L)Ao^#mcחq8KC>\>6u n>o[XW(Rӆ,4(Y7 Ϭ"g#O8C#T*߳m'R|8aDB)f > Q/mk.i]E<6.Xn}egKwJ,vL!;}t:הdJQ[C:]%Z-km .w+ \Ŝemyf yoN۠[6\KٴT}iƖUד3.-!g'yjJ[%3O]7](OMq6ҾA: fBc8054E<%yD^s+Mm䪔=N-Yҥ-zk>Hk!j;h _," N/Hsb{w!lȴD-LS .Y "qW*k2Mޜdn$:lIQAKAopP"MoUR_2ͽ(Ԩ6T+* +h |jޯۚS#)U"Z1R <@(VvKjkl*gB 7 GٞPR82)QƑJdT{le!sr!8D'm?%v^MDBތFGȘ]>6iOm^&9Mc)eX@{[^D %:}|@z$?ސyJ?C,'QfBKֵeܤ?>| H}^V *isg T'zW'##;JtfU"+.LG/Nձ^n+]d1ɲ+ZA\Reh-l= e<+3k'Z*휺,nbI PCWRs+38-#ŧ &޹{>Qg!Yu::i$2 XMBKձHoDsM *TyRK髬ϘUf R=_ֱէ~dR^4;mN{5a9~cBG7͊ZבC(v= .I`/ F5 EKS-Zu46IyC>4UeЭ b$Uz=2`5&Jekԑ(VR^6ZUK2)/=6!EWe/N+s K6lMqе೼F熳2[lLn ː6ESoPobt,KڛNq_VlէTo{.A<6 0׆sWjdrLd^&F*FGϤT&$u'z,eXǜ ܲ |/ZdfkW&=mP)]%)[Wڽw%KӪ@2Ĩ4HPѮGК}5 Uug9ɪxk;,]T g_Pn|ZVBBp Z դ:c{-TD^(JY՗OwvF|yv@%ό%f,l i e{g)`R ͎U{;[ziHڳ(ֶ s\AՔܟwU,j;2E3Zd;62 *UE'^խ.o#hNI\Tk684A 7 A֦ 3mDCi ӘUvW}EߪԺ힙x<ݠnV0]̶Tkb{=y]MkymdW*S<}J)w P )R)#WkfdN❼pSt;ǽ4fI7dRmolvOZ_ M٢m+bU!ZOs I[.ˇ v*A\V0 S[*T5s9V j4DvڛXM]ڰR7BKtH}I̩[V@z]|=:d |j<6bMOiΥ/KUI<W{[8Owsk8nOsS/ <=ZUL;19҂$ Ls U=fA]ihC4TkigpTb3{zGQ}"t "5ozMV%ň6KWU)b )40@HvLs74yAv&):. Īܤ\qBhXZQi&̜x_KAwtv%yJwutޢzO<}U{긶ڔͫ9YZ<4L)f9y=hor*uB7@XաԥTOe+ ŝ*\\.a+U<[41|V4MtZUQWtRZӒt\ U6'lٙt]T$8JM y/F&ϛX;q`S~_zD5)Uۺ5]B|FY_%lHKTz{""֝*SקyR yj6 U"R/6M1&M[HTݾ"}N>E9^/Il@c/MzyYv$.6a΃RUm+k?="#>Ȅ&d. S%.Qs&աBEGM-w44?5Ӽ$([CJ\5ٝˑTֺ5>'1mrUa̜:yMdBpfTZDԯ)1.2 + 'KblK[U5a0yH%͋$wE Y]2Am!%d%.c5/*|74 F);IId~H̛G ~_o, _lN{60FYŵs=S$M"\D4UmiYz,V87Uh459z>3Ҿ:[:]%dUzg#3>Jl.k :-{LlO^']= պ[ѨMOrSxdy2"&49:)x--O3lmJ̎tZ?\ J6j8Cr;U43YXrX&BVg8?l`e N P#Oil΢;;%GN+;DnM_ B!,][D<.(Mo SzM&p#nci\]SN ʮ;ڪKfR[H KrF5BFWsJQ4Vl{DU@ )u16SkP=)N={ߨ}us^x{ 뱊U\t'Mq[\qkM|%6Mx7G.c++@h] {EKRUt/:5.F|Vj\*w Sj)OO[1{{q9XEŒ`"Ѻ18L}k+զBV\neNƖb6yXDҧՠZ#b<=Mpfer RWݖEԇ_?*BB>M#zxmԙ^QjZ~cЊ5g,elR\/5U!ƔXSbb%# Iϗ;ElfAYAi4T~!ӻyQ?ٹΞz2VW@7B^EU~ZstSl"t"QqM}VqM~NM%YO& >(SU\f4Z& HjFS쪶fL_&IvTˮ-̥U!JzW53Sօ5mKӢoOfsl{1\圗,nhaܔX` ltl©VO6UQJuN22 Rn=D7tR::ʠF!e-.pj 4!vUoҬ`O-AF鬫ZV}u5]SAĪwzio'y2/rqq3 ñZ3pKWIs Uuc `e G@-o-c䎆Pk)dItgP.SMղeL QvopNg~.6V uVz%KhPxJ|ֆ"iŕCb˱kz5ich}G&y΢buj܍06'H"P ~D]&7*yve/·c)nMpZ\,.rQc/Homݜ ]/ZfCG@7T}V?[*k9 򤠳*&xkc1PRj՚j+Z \G|¬^fH`t}9vUK͛sVdc*soD&8MO6P/Ӷ/kKEF\m?ͼքJbe@bSRﰭ#wt7JkR.,n@魯,xws8^_jGۯP4LmClUIhm.aAdX^-ۡ[bȱԺ(C>L[&-%f ұR3yNBNq%g {҉a[%\**k>Scc7i͐y6jA*nLCZǻ#ԅ$hr7Mq'W%Ma-|Wu'ٴ9x"R%ݭd}1AK#ih[j1:?dd5;,%0VFQa.vKtTRr,sɾt%ɥ6Rf55:G TWRϫ#56UR($SobΒJ>׺llu,;/ J@1|i&XOw0]nUSVtk rIfڍyv%#Sc&͝rVz3+%kߴG󭥳8- }mI"}OfN#Mɺr%wJ5e(ZU|nVSs㓝:MzfZ똫Z&݈.d֣C"g4i>.iqZ!ғM"fE*U8ntl-o#ˍlUep W(ckӂ)] e&ɼMcW~@*|Am羷۰zk0CZאc/7t%j4`^j0Ƣ'le2 m4ųvCI6FyRZ#-.+[ڍ[PS*wHWk[-V'ړOf4V{u5iFTHլnOߕ.tyxhyM;[*KkVTr cst$9tAb$vyp Sgy:Zmח"X2h̟ RɓpY̆^:69pQߨocUȑdVO-+3[A\&iU,[P&[Up,P1[TgrHruq25M 8r [q p6վ2WGW8MZ6[GjH >bk]=}#]NO?C'S/h Gו^*`Sj]5Jabllzee(S*TԽro% q`D^Hx1::} uE6E) euY3m?М 3A,*Q40JҢ7rz5]>2MiVP+$:1to/(Q:f͔r,^_Mli-uxy̵!,"Q!RƥHH&;y2`w ,* unXOS_PmڟAhTE-\=/섪q@%FfC)=Tz2mZNT#wgirU c+Bߺ ]U)c2:$igr$_n ǥ][;S*Is)lFdFi]Qwe5%a*Uъ-Ѥ $J5wtP~C:|Zz65rVIQSA\CotUiHeG Q;&Z$eDWzx0S8djU˓W~ѬZ8Ґei4w62+ռfG9\jP 4Ԕ7ItZ9rDFsvUnF/zqjYYXI!kxY⥊vNRT$}ũ6O)ɓNjTV 4@u/Bp-HTۤ=SIꐥJ4Bq~9N $>nT3-Șd yWi-ZTT ʰ2\$H(:s1ME^L1U]Y_\WM u;um{JYh}09RP`^'[s'<6Dy8֬N ~k0\\E:V=|:.GFiG.ѮBVo 1H9_!I뺭dJzUeCFU6:ք y.(S\h'-.ޏ`/T'(;ݬw:}]22hz% +qa84rPwm8%{ZS r5k=ɽle(PA520|t^p3ڽ1åEffJi.o|w0UlmSE-WZFUt>Y=` &οR\Ou I(G'2-́HΪ]jmվe3 .n=RyhN_8@X${<ױjh +$M:y]; 2eeٟ~$?QHJ XL.tfabQKFacko..5m裖 sHPidK[G)O5r7h~sڻX\"Nܒ⪇SBgtR@ih0ƚF16A Wf DG8IyU0^8Ϡ22jڟϹJYFޤT\46MAfymmlEԯo*NG` ͒F/-]Tpkôأ6̕%Gwbr{<)N!+RfmIu4Y22I \ŽtUK.tH Q.0R՛:̣V⩌ b+P4⬌l=TU zqgLÔ%j[ȁ(xM/3ݗM MҹR͡PGS VcmH^U)>ؘ$Jt3`6 mAWftwMaXjtjˬc+y@M)SmP5Q3Pc3iH'J$\ s /3sBz0';DqEVU*-8u:oȜYCt!e餂;5.BՑGLx9!+Km]!O%̓i{1a&'MLFSyYaH/תs!JI4 Iį"`ك6yW`urZ6}W&ЮvJՇ:-LUW<,>nZ-eozh Wޘ6Lmz;lT,[zniC ѦKᕨNQ 9]jW$kIJ_DI&AP'Nl変SpM ňjD9'zUYˬP'J$Z 7P.'jta K)8 Cd=R"!W%kO3Ri BOn쑵(Zq%뺛ìH"XxѴuL"#} SuNY Dy+SO9F@EJx?]>,8gW*\gSu9di03o%ջ>ubK~iR'eX F0!4wcSiav _H\ih喇 =M vxt] ~YVo=( UڭRɿGRԣ+iRX6*]׮ H^ںy/:C`vDӚB-6QoԨ6ɐY^.أJ)]!;z9-Eo-5S ȟqxW6ttZ*^D4ec$(X?ER=euO1Roa6q+ qV5Sq줫Kj13_CYӪݧ:ք7yr'0T*ؽ&-:yMդ:(=Ge3Τj ija:fEa*lU,"[Qrc FrVjZ^eH6iMVsE m"[fNsSkrpڼ#LxuUif>eM+%!Jja1efjWnsqsGðb5MubiTZ&Ao @EԬRFdK]|TTv˜srM`o#9LcmRpM JSSK\4*b@%)72>IԊf|$ ZGA"_-ty:;Y&yB!JE-^*uK]ҋرF*@< S\b -RoӠ$WAGje]]7v3][5r,)O!599!uqʼQk& \ 6RP~M)KO$ߩF۩qeSf [@Jt^ o-΍*ZCz }7vKp)eFLRaیWvb=t!PQdʼ,΋ ID譐Se .ҁ(^3xT?f6,TӵHmN"}ҿSs+>V֧U69kY FS" vz8Zt7Ӵ7+|3K*l}%ܭ7T_^32<ȔVT7#ү]Zj$(Q[MCSrhz\6U[h76<ԃ լg;[" cF/EԺ -L85h\2_ YVE#5\Ҫ ڵ7u2qhkOm2#WtPBELHsOh: 0 8j29R>a Y֗ԐHn6')wΰ\nyU$)hL5nr7TNUTjzmWQ@*|o*ulXNyJv>O"b%$ eJEY&GCAZ!&T*-<\%iօ]cs^G y1 @VQjtA ˜!%SSf4ѳI{6LXuٓW}r|"o9Z|ʈs,$I3:QE9֖ S$I'ҳ $[щTuK(B6ʁlAD ;45JySIJ}OLI/g3/;Q 'W QқDո<ƃLG8)܂ԵWI6"ڽM9O:!U|[vt$̜4W!mE(1ʉ*7s4vYN%T,kj]lUP {Ш PcZJr [1, ɲ]1S+ L52E1 2Pa鶓0 "PnhW2䒲ZS8;ԥٲt_ jo.b0%֕P=I|s)%cR] }P,%$.OׅSBr l"Oc|Jkm*5jhXZyJUOj" rW{|_= ,yT>k4u X'4:6hTEkה"HvgքQ[Bi}kC+QK죽=)lZ#<y☥0R99t2(9*i8dz0=3ztpoFz=;hXNy\]^s,h|뵲teZ]Hғan`g@QS* <ɦ%Ǯ[;KIkt,I*Eq<Шb*u:<7-=ԣ7S$~Z7MRޕ*8ݟKMfH9L«Cr.C*aXQ'1[xKǣOSX0>_JZl֦+9@ŧATVVW+:%x'dz[OmwՕ q&]"lp(/q=ǽ[_dԔl5mEʄ|*/ qokJlO=wsٺ}ӽJ!ѕ5MRluJXnԝS;P <1< dAJOj'#WJ&(xq{IXPXOAJw-/YT ǻR*5GW6~ůƄ+w#duvs(Ob{µʦg4L &P&ϙRobn4]p'f^cնbz%|'GXl@̖flxcQyw%%FqT>&PY,B2U})xJE#5XjR7s]%kQr[ lR7zZ7ߒu';ckh XaUipV7W*oejYJ^Y2Bݓҕ,LI7Dx,cd%S#{xiVan~zRN»-I >)lH%^PrԒ٣[NC3ҧ #0dNF~ B9طXk]G͑XƱWS'5r U[yTtm*N̅Oa3s>^gi)w^RMbmY0lrO \ͤF,R;65b jP()7vI5)72FyctsXkg'\uW'j 4}dt,sI0:vr-Ob?C!IC7jY FOW3, 4Y2 *$*gM\i15& #)F{qڻ< 5O6SHajdlIVCFR2 ļrjPw. &TYSᩡ8JZvGf :|w1yt*Z͂O=x#{OibgKeTn-dVQ6*yQzJIƜ?1ʿ Hm(k >Lљ\}&lmT_CնhԋQǤ%[UU)RWI3r^͝wVTmL4KVPMt>l -H235 o pKMi1nh:$sLnpaed-ffƩH нgfi[ESv |"P .4O$r8RK/g{(bgjt)NReNUgx~hN@H_s7HTٔ(aV%72 oJbZR_aԋQdN/&l/xOyJLDoYN8"R3㳭M5n(RԋIm֕s1PAY& TG1>Mol,&ړdްZZ {`ΚG7C#fXu&+T8S..PNf'Mֹi J sS.Rt-k)&8EBG(,\ǔ1hZELě(vRwغ˵Bo uVni3-ݝ1%;HN I!+Q'^@ͭ-ߐfDYrR<ڇzڠBFE퀥yJ]WaZN۵! ϑtn[b\v֊j~mi jm#_4V+.-mihWWwU;Q-D&fFG;p vVfU;JYN}c'F#;kZ/Vr%KvA 0+JmB,>UN9n.VSFw:dv} 1r0vyAV^ SOu1]ہRXvk0Aul.4JfJ Deq*+PWbavRtn*Wʜ1ס$)Ej[ZS 5f-[TkXL,S; K ]Xяs4~JsB\tE+Zwœßdi5 2>ǤH4kء]%!]BIGL"z;G#'בrgM83A#\Vߗҹ[^v{6+$}kr/jq3/-(USUu`Әe7tN]ƓPiw-K |]ʫdx*l}y*3d,6|QǶ !ZD{*KXwL0Bpm!< ЏrmW\N|3Co5MET.o;`6M,d (^ΗY#2JEi`mNn֎^a5)U{CQߐ:uSL͛Ȯ#gZ&#>Uٍ)fSҿX*^X%kMZ^䉧[-f]8O9Q3Ua~So޲/B7.n\v(Ks N鼙dXZ_'uou8DZ,o!v&Z!38  S1q)x*Y b%N3%6Zu#R F:l+IW&b1GI5q@!.[h5 ce}-Sy-Rir'%g&8:s:5 i"Y̬C)+Z|I"T}#[ڨEC:]j\O3@ѵ)vUڨʳC&[l.mY,*.fJ91^1ڀ[.[: )nOv/fWw[Z${CmI}vaJԞk,ԗmmе-#RjR%S3CWm0Jn6Q@oGs}K]-*1.ru)ZBG$GI|lCOT굔 ZF@|\rΘF= mrrVWo-=uWUk"Rb7k#j$7V)$nEz!Zc#X~ФS/9AԶN'j|#V`ijփ5E8FnuנJTL{eS/ήQf&45rߨ$>K|d&2C')5$FUfts1UN!nm:4VcXο/wYa-toْUk%*21:H$qZh7EU۪/ٜ|Tj`Cvqĉ 8uͼo ,^+)S;Hܖe Is*Q/Hk6LTJŽc*vK So e{ZEIxMA0]sf CЖUnBzMn5ɳ ]z.'N;C)5zB1 v>#PjrY Ӗp r0ڰS/@ca=%lrI@R'cΪ:KfFh23(7?kLJZ6XGl+ ,0S+u6zIjk)PgvGVySx\AfUIr63BmejW WE{HՑ%M|5P?rVQͶ2EoLItZ y[ &)WV'(VGQd%IsmmQ= $`a$5i1ݾ'4ꢬVe`TP%V5D9Ep׍\N1PFU>׳K ?ʒt_Ț\D[p,${*uQ~$QTQYWjƷX:iʌU=֏eHXZ=VdzZ×)l%q8&Y v@ǘH_&iTWY"uIP RT#ì5g(՚*R],5rr+ lk]~>ATk쌟ZSop S맶U.kWmMi9 r[o .TclCUt}h~@4OVZV^Nh t_K sX۸.Ѿ%,MY5!zEj>"xZBf+$%TҴv0ԋHioܖ$ Y45K֭B%y2i[zQ?;Cʉ(J BݘgSϗ+ୢIT-Pڇzqr/o mi4jjQ@P혡ԛ*{~: )+60TUi\DE>M%e4t]6A>`-%+$l]dcrԍCݓJSiX<.ލ/T}֐aKH)3;9Jtم2LSѤ=r2KkWߓ+b'T93kJBd3i봮HχP<6Ƣ"զBc^IPE'8+{GXk9Oh256v=!کK3*dzw\ bFulK[Y:״9ҝ!UUܢqE{4PQYK (kƧ[XAAV1Tpbp5[\!UaDn(UoB/idg% ϗbv9&`W'}mw!ХH_jzUcn өRs&ZLIM΄4"iyZqnY6wt~6V+զٞzTK1]vz<͠%@9(Sv`)Wf'72VBhzC^U3d\pUDnPլΨvg8񝳢u aSsKwVu~[B Ut] (^l(92_~JqߴM,/Z:pҥ^N_˾ϱkTj~15`xCZ,jVbGmi|-s+TGsR#DQgXaMi7{ԯQjm dqYwCkΡa`ʧmEkBsM)(7]beo/+oFw]2כ,|2Vp9ښ %_ΆScJɳf=|52SQn6(\wV;dx}#m/O__n1Wmv-m5jjVcOxҧߋ%vǪ5ܶ6tǏֆksVQcˉ嵾;rJςR?u{6ҏݺ-վX)+L0̽-LA9̺vyLCTi"mFl yL1Wpwk}syo:6N临 -Vasu較q(qsfwm sϾ+5l O>Jm&k&f;Vjl",W4pcTPױ<|cv5N j| MQhR^ ?3Kqv`fcNn*+"KĶFN.{JzRupw!Xs[P/j0Ww}u!݁1vnoR>{v?l$އ9e8:B,V`ޜw.]`b]a1]vijS`?fً̩r5E(u@, F+XwoKwwV_9,f\3Dž)ϽeD[Ѿ £)sβpɥ ,Fzu.Tw8 ) țl5%׳dFA͘*w!׸bN dp"SXX=yXrRaޙ{ZbߚPz'o`+XE] ;[w|!,ne46Û[W˰o'V%u@B] k,D9V19|_WRAbUmbpőIƕ{ǹghp[z,LL<~IIQ S-b,߉QDj+4npXk^獱pΔ~bWInsEc7raLKگ k c=9=.,l|ZkLzWwҖ0,%agY\w笣?cqcF#4D#cBțDvɧ_N`DY 7t%b}ExUt[˫C4,cpv3=L.3^-]<.c!`R.F]/IK4Jբq3>Rܔ5߄R .k<myԧOaDiWgHXOYʓSԦB3hӖ&lEA[N.7hpmnlِcYjyWu+$kzmFzG M. YAF ԙV_9\wVtvfI&E;W|K?*&֦c qb;/<~-Bqծwvf1g眍x5C/NUndB Yv}poqgF[ o0Aҥ[jB":%\wdi&*w J Ϯ!Օ%b.+=Ӣ%L VU3. *W{,b\uq%} 3 ER&N_Ǧ7ۖ_wLp5f}^d%Ǡ\TnͲ0}KH@띊M֧=-Q2lⷹÄ}S9E5Ǝ[O*d|Zd~ gHbȡ+oWGΆ]힩is.)VA3#7xN2u=;nԸv8 峗[hpIti#wf6%XL<;Tr3B`iW?J!&ݬIՆ{s}֭=IW5u/t[rz(™{h6U\ۨ󷬦ErscɈV~sXYU ׂ%^bX*Kϼ#X^;+®m:+; ?7¸d-cU>soX:Ts[]b]QkcrЍ;\Tnk( PEERcOsJNɘ;>WrUao3fix9Owq,ՁrsGs+{eX*9Sq w했} $4vc;rR*5o(whl׻'c"slob~scIZ.oxd =Խ޷mHpj('ԑAd~q gYڷZs#sR.Ae5vSJ%C\ֻmuЬ X#*zXmI͆W7\0h+jZu7n2 }YEĴ2y(b!&vqhgD;7mͧk;Jdf Ni*3UFך0o>W۝FR hN6[;xcX1_wWn^YeG͕)i f8bi¼Z.[[_kƚX,qnmZ-Zk?a̮׾5~Ÿ>sbRO$EtrkKk!7CNnd8dfs}>MȰM'4lY\^n˥=Ĵ쎆KkTp&kJp @^Q[4\@ٝAtm+.ˎ;֜QȰS0Lsy`uܲ|⽦?ktv92AAiVis*ODV 1^mDx RI+Kr|ݦNۧuRKe[Pqam唾\vkɫVĔ{6뿽累Fw҇^KOv1jz2Vy5fkXL!GwBݕ!&L+ Ro[ T`bi{Z]v]鿯rn,*;Gf`1UDN6˒oh+i}u@JhQ1mBF-.Vm%K:Ktz\XbF;Zc> ?r<dw,|-NGgJ!T|19U0F1W,n)pݬ5JU<;7+cUX {X0c_! ߰d/M;nphh{8574\48u]'.=aU3 hxlYni-լiP}o]]o^G*B1E_Y[L+]_Z&_NeťGf:[;dr`vLy4A#Fs ^dlOٕK$xvp/V ߊ^@S]] ?94).A Y-KC<2&m*>K#ۛrTmWEV*iHc|Z6 b 3:V|@Xs2:KOaKgOu2r`Z:}WÛCG_f*zIo LВ2sW sHբh[`,[nnn,947˷/BcsCcxlY6z{4=9xY.b'pOѩ6䆳,?+)72VHӂi‘վX6/eUݹ@=bO)Z*'/Դ=EIˁ7:ԯL&C]ZS5=w2i5HSLMb):+Nu85emckev';Pp˂+%i>YZ#ٱL^.H=ΕH;Jvh9vQvKٚjo9vKD>9u5m5S{}F [P4 j3զK]2w Fv4qM..X5sErx#/p{912\ nhIyOP isZ^Hc&7ɩu"LἚG26S3-s۸8//]16\H=vڍhtNld K[\W`K1yIu>-@T2qiU3ebemA@}FͦOk{fTeXe%mZ[vij~sF7:*c5Qe"Ǟ55NZꌨ)lwMԾ\0x[c\unvAa~7[)~>[@\e!=wrmg\,32X [*$[뢽+h42Ռn+= ]?5F^`Tu?vwsSF~!XĠn06k&P=6 ̧'Vm4 X/ f\m*)ǂR%o#k z얇X[\}-VV!v7ڶkSnL9lpkm=MM֤RX]5rB2F*9d>#ۧfkP5K]rJ3s_M[ -CfMZ.GrUٌ=0 fȎM6sc A=ikx3;hd:ܛJhӞ~kgh{h6uŲ?8aҫJo ˝1E}q)TYsco!]eb1߈3rBHc7z|TBb! ۷-{].{hp|4[ v*ưpl'5^Ӗf%HaZgw}Î65C{}_ೌ6j-Lq.'#enVeT1g4%aeI oXVsyXdΛwv=cn/7 ٶJK\o 7N}g^^˖ƽn "<޽ [.= ʝ,tVK%]=& ՚z.sE R-``&lB~yn5kuKUCÝ E4Vj jcx09Pmb5-ny,(ior[.;LݍVu$[Yd/ݍamO-F*Ns>(n]P.MnC9-D+P3O/p5պ] pe1CfL=f3W^Ool|Lt؆q , X8鳤)3lr0a >cQ}LZr15rW_uQQSRX1RZQ9ǾZ]dؕ/& :ϞQm2 跸vP<ұ>X9"s+'Xnbz%[~6sON_Us.sAy|$3'S;9GүZF']3)ds j\/}i<ƶwvmybbsy8o)p+Yµ\O|'bQysO>bXQ6$͓fW v>LW>N:jrMߥF38%d(%e]GMfxL0;Q\:*]rvwZz`݌pwK%rkF?K D7[i-o ֐mw)>SM_2WΑanI~ۣ5y1=&vÇjCӉ;O1|V9w([߰MHo:ɕ>֓y.pBRziMȽHrjx۴dΐCn-6>e s]:ǰ$pcydMG?\Fyl848IM鋩)n4=s#B)n Au5_%Ƈ.|VFr EkWzl5y[uK)KnZ~M9J0 }ñ݇E{=u][s>d˅.qlчlz4Wv^:nk9-չI+[ݫqskж87\07Ů!LEU=j=c5;Wd^׳mk v[}:%cͫ\X畗"+ٻSkV^,#Kcw8.gڟS;{efRDNVMoc!5jytҜ!&Dٸz+|168{Qs7Z#'nKUڼ?};(=٬sb=`sx~qmhia70<ߘ*2Yv^XJYFS[$緤d-/Zwzrw"*@Ln4Ly15h#+<֍#hq݆WOINIuw}zQ3UdS*lGi2:&K-`Rvjq>>ޑҕymj/&hwG°+ Wcfx^^-Tb4shg:N Kr\cX@kq[\W~: ur^k ;@`]7R+;]X_W{sl3oC% 9x`bWqM[BXl!3gsvƀqq!G օ9Y4 rg# ?ܖo \#j%-n]fħn gMMѾ=c9mɧfWM=gk=-S;j>H=;~,[QdLڙ^[}1d3߶@ʜeCW*pj10r,(aAL/L;66 (i=3Aѐ^.roCݠ-_n_%)] l:jqZVH3ܡ:$s!&]S76ZD}S1=YnL[z:k5JF;`ۘ/FZnTEJ㰻T=1\u\kƽ7&2S;#Ȇwxdum `7yKqٞj%w!{Y?WA[" Tm:0]Je3!׌!.I #[u/SY; aU!&hEQPC'߂%o 8F||27[+{q=P/ C7h=FMYm,> p~"b熕"ak'6Yݘ .&-l/s0d()l f)_Ӣa(}ŸPNΖU3Ofɽ`z|z CAW.˝5z[Z؅(׎hakغrXL_9S0![%ˢghRTl:k+z'3߮4+evhWs1X*=_ViR/f 9:ɃsT )Wma)zޮZWr\a.okl3,G乕f&{dvȶ7!ͳts oLv鱅ݙU/"_Tbݼs2mR[!bGkL7yZcد5e|jEV^;Sf~[GeKeQ߆>NT;7Rjp({`mρv,f甴UE|^2WMrEndkt+kT*3@4_ U10,#ٌAL UsC߫|Xܲ7&n)rT^-'*CM!ucNĐ׎}6%oi M;]j>.^-af]McpW4.H[*O~jL7cdo'&j}8ԃ q6O|gV`6[W u/3F7sέPΘJW9Q9<֑;>jQrC1dQgA]ex[`^gJ$KAסvSS[\DޯdŘ6 V\Lv_(yE)-fy՜{"Z+*R(mC$Io8O2Z*zMrb:RvLwbؼ郇5mȼg>g M{\Bc #z]@ZdM9v&zNtb ^%se k{vX`qzZvvbP^!lU6Vo@y1&͝7F2։!yZ=?-J36p&KSN'[㍛d; HEUY*K=bVa=fH?싙$$%DU!_ueGk~1A#O%6z1#`=X6/yĭ6ɡcD- #BNދ5),6(_Ս|= Yny#kp1棪>JڥgV.M{MXڽ=H{Bh]n!,_0,JZkqq I|Daɋm9o(%JaHve1:EXn(-wJۢwޖހ15bTXL-4{)F>OWgJ*?,vkCy1R[;FɅׂujH䩕>s7GZC4;AJUse[埿?-fZڽ$%+c$9/o`E*.cSjo`ʽGA ˹l)Rm(gWxGIYӻ0ݴشaϕG]abR;B*iZj>`߁.*XͳV+xV+NԆH]T/s[VM3aZD9O>K,1ԼMJԝU<5-؅aM,h+95aW~¦.Vrk[e˟C=F vrGmnQ2=OK䧮3SZ0$!_!94U I""jt]*4_ڇ[e߱Ciqya-c[%Y/ғdkz@>[@هneer,jּ34=F|SA;{`߈M 7I. r^2S%߉"6Y֪jcJˣnӈRTKOJ,U[T[t(*l (Y|XDBɻȝjRyCn1P34.o`t9#a.31k?$rdR? I"N #bR쪘jp6&Djݭ$R<ڡZSUq5+( >c0J1=VӒ!Eͥаfb*Y[)jP&&5fDdFQ*5,7Rk̾!y{ *Js;tєIIӧij]gQ&7 Xԓ:ՀGj|]Iu}SytJSJd7|A0]:Ӝڻd1IRy ɪ(KrÌOgzi@k,j[jmQVfDn麒 멒GdfU~F)P5O hz8<'j#yyMΣCdiĨ?rK晊]!N r f*(?OQ<ǟ $& 5 ЪA&yg C #LxM$1b5t*,lsM٪Tи/wI2Z^Pv™=e9 e`y2`PzsNjrdTɹ͎G5]N3SjF-1i6 xA*tYQɥKϓ?{AXn-?fT:sz;IEZ(dOlYNzds}RDrLih!IE&0jS38ghkR@3\"Uaf-"fVz>UPuOSz^64R2E%xeWƧ*LZwT˭,3 Y*s9?R#&zT4_)(a8QZPNO5sn̐rPf icТg]Y:HL D֟^OުQ*[lzɌoCLֳ-JwildV߅VZ$RG=).x|,TzҪ7%ֽ6=sUR'R6j wXEzX)r3449TĽVGG "%uƇEQ[w7?hl.tU)mCjעO6HDM )b'Y1Z42-ZW/ kY>/hڝKsAz Cpgľ/ LżNNO:5vٜ*1QEAGH[[l5f>AxʫNb8|% pYIb~X7)o''B*ԈaDj\)%. {%[jrIe睠gSȴCϖ7C㷐pք0֩[i#!v'jD\N>D1݂1#;`q>,+S&M%DP$LTvi*IKd Lˠ3-J3]Lb3=Xқg?Ji@Δ*#ZLOC6 xs)SUb<#O]nW S$Ha5`knlmm `x#eFĽSI)mޖ>7BȨ4;Beox-Lh33-Qc6qIH爊sSD}A+-qt޷pׁ1*DVJ񍅪]CUx/8 'y1`Ҟp(>A,ek)u|)m4iX%z5d\i 7VJJaV\!HXjè޹'.gH%Y)aF6McMLqZff8~ӒCW6-&zɹSKeq}m{1syF2H(akk*l3h#Twia\ D6&2j)rBv0D=H8tkJN!c˙6$|)][@Wyڈr<,"˸*vOi3ldxTWs&ϳl6,xCG꘦^KVv/IU2?=}Q l*|VJqWքC,%h:@DbkX/>83=`rҮMdP^۽O۔s>Ěx!5m̊}0VбK7o? ]t0J.>KTeS T?hs&wUve!BqAIbw5ְIzyPb-#{࣬=%Ls\ yeM#/OJ husbsLք'Mm-rb|ب֜6 /!xx.g"%5ا҇л1 ;[Ԉ {ԗVu]Q*b) =VwMvi!~qPUV[`;u !<yX,#93äU١bQexie%8܃>B0B)~VpU( ?ʓDX.B)`A(TfZXHݠьR21ƅz b'D޹!<%Յf/ (dK9j%9 '[xV4U8#}WGvg|x%?-P O3̖6fg1ơ'k&RI,suhSo5pgXia$YŨG{cBѩ\]'d9tڈhLMXGzAc;`CZP^.9JԎǰL#;oj-|6|& 5քMNo⌭UU&;C˦DAj+Oz \<;m$G"Q%)Dy J2&H_I~SALZ:%)ށ :\X*x(2Y)lPeKy58T:j~E.<@eԇ>Α 7dD"cs>ᛸ+c#Њb/ڤCnTXI NA5ᖳ7e]Bֲin)<3w*A<᫰ Uޑ`n3B̋zZߛ”p> Fag(o©ܗ<r>F!1 BqN=?~\QB H\/Dwu'P:§BUFLc9m4~o̤.FtUH5Ts8:;fx ɋ GBa+73~'$3& s̈G/kaBD dsÒ@qhFge, #aBqJP6(H $sb %3bB!@(@&Q! H !Ke!P,2!# EH,30 H D2$lP&B8:1 C٠dPG%!FBas1 ʀ e BxnH C0P&ʀDB07 #a$ ʄP&B@D dbFa 3FƲ7MW?+_쾗&$f-7M=6'Py m3Rn N1 rqjJ)K嬩SoQ/2T#90߮wbpuL{j+r:֓ 4/ܭC n Mq13iJm:AZ/υJ[4_ΰw֨0S_& wY8rͦʼnm`ZF`^pQ~˻Pֵo{ ͷLZ1_N.U;[l=wܞزΏ\Mw z cW'95Umukf[]3!w9 E1tm|xW^n56-*h( ちp;Kpޢ֏wߦBgkH\2)c L&Y'7&\/lS2m*JsNr~Vc/ZedE>Q:G6^7A~y&?rk{'`f\NkMgaCaKvt^Smzub K"{aE:o!7ũs8kt>A-#Lùp]# =Kd7^~ w|!E ~aKyvwq&oQ\Orzs=+PO ں[x6BgԊ?B}0A!C-8Y>qY{ܶi;&-WmuWp5y[K[5`{ ^^J8TI<'r);쟖y"YΩޙ{w6-o4\wmjx~n,Io3hiW(w9վ-jQ{:{tq!7tW#?ss5Oe{YNxmʹ qiM[d,Yo7^}6$=je$\uVĽG8y| gG*O}UI;"t1֙Ox>V=dSv.E^QGh|'͊L.yLtEQy؈` {iWJS^9?[h<^ /?v:fa nǛCKknlQZ;w$0=jY237ky͆˱f[%7]4@u\}l.ki7]C :=O-&[k^~ݳ2zŜ 飮'>qӅk|.I F]qe8yUާO{E߾hSh,η|]6 ?/a1ѷGKwRu?w *|^^JZoߩػ'=I7't;nleFXޓ&JD;Tq]Mㅥˍ]247J{|`6ܡKG ̺rszd.OKceIA WOgm'3 5(0o s5naC<4ugSfϽy 9rP~RNwm'|"T)4,O`n9z6ESZkĿ(󇝣w ͰW\"-j.b#qr-Zܱ;4-|'Z\`QvY:|3j'LkU<2hy'&03~[-7q8 %~ O&EhWB˷o`Y?jOK];6}‚X{lGw l98XGzU4ǝu)ߴzɈY_/ϫMjC{8WD75XkexƤj>i[{@ʔǜg_ž~]9#>K>xPjwɶE~Νmj<Ո=tioPd r׳;.ATp81ѮǪF7.:o}?e+Tm=]ٌ=\=H7:¾y6m Ők-Nv{k?ًR9$+5O۽0G1Y|Q['k1q33-$G{BxǼ={Mvi@n_/ؕGj$2ߺf@G-__ƮQvgؿ;d^ȡz. >E@JPs[|}_p| jn ]8 =s`o!{foplk]"4/ Ng)<=^kz&.!?27+_FJ]x'׬twMeMz^L(՝ɞG= Wp=T1~UgBUz&~ Oa=+rjԺb݊y^7ߔvӣv2;ʔcirZO87yoPG85ߘr4E-}lır\G9tL%C[-Hc9o^4~nL[/0_arޤN2Yܲt?dL`qtxͅjԜf?POK-lJ(kI8аIq"pyȷr< EC-@c#q(S-}@*U(rLѼg^*rOtnӋ!wdu %ZosoYDՆd] I)ʳ@ݗa.ɇa61O{ ^zgj@w~-PT#5A7+xC׵Fo6eΊ3Gv˻+`mo`r )MdԾۯX;rN駺92s7ނ},_Uہ; gnu7:d9Yuh|owTSEؙ;߱+IC]ޏwb7A/pݺuq~m.4?uѯIeu:,W.`=XozNj]EzGgitv&zu@IOٹ͗)}{G]{nѣz_dCfujܞeL1Qܝ)Z{l`^n;r^J v)l?nS霣R >?-&靈FG|\쟨>$t#!Go}WIUC~AGGmѺ;`s'?nRTcc5f b,?9ߟWcz)N]K\j3<HvǠ:]p5Rg3jH0i^R2ОS4/rt z8oH3|s4USQpvv?nwܣwC|X78nH-$6Q9̌[ 2v 5p:q2%\$N_{^OZlߺ(q߶v?UzD;5/ =Fg!~|VVK;̫)a昱8l!IXu+d6ńK  K;0vW9Q;K}{QH?R0LSg8{]gOFqV}i]d#~ i6 ~ !nlkMM>7SщyPN)xy}u{l0a1tҵFT+ҎmRkukƞe){wo-)zeȳI;*]^;6Mӱ2o֣nj6É}YݝyݲnhwHTrn^iys!P*+1!βky.jg}z0;ٖ /5dI]q_ڟ5zqMsS8/\u==4m-ZfK~5=WN7נED~ 5m HK&*njz0}ôӓQ1Ø]mbVLL]ZRt|gcqd~Jb]Ћ+ٲ6/ef G>^M7̊TwDB[snRVJ7ǡ=x$Cg87-vt:}taۣ;J<6tGx- pԇf͝2@-#'x|m |Hszkh]t_]o7f U=п練t5S˼V6Iއnػ~M榀m0*d~Mim\jI~wr眮n~lZ.,wa㢓*G`n^2:i֚mc+EYU{L7 xzs T7_#:#y^Zq0;L_7@'mr >1#fݪ w7}=93g4_ݯʄ,%= X#2|y^' myЃW^m=xɵ#mJ\Q؏>_{沖?>wS2֚{.5G޹j=Lg|jަ4>pXwobcjeKGֶ?~7Z: r;ZmvkkP(lN!֚Y#o6,n˞r nI vK x ݃nт}]Ś#`aز>^3C0g: eFڱ\%P#{ӞS79pqi4ú[T.ͣy [Ǖnf|;Dte_pgM]гLuQ'Č2zXm̒߉r)8hZN␣Ijҫ~AɣƟ ;}Kkomsfo "74l>mA}!'c`Cv-wkWi%[dK=qkRwdo_r+] . W*/V54S_=.G[^٦xE; ꮶaOF͊3 cU۰vģQV;iYƭ m]>כNKt1D+6)o1qٝԾrgg wN);iH) 2#afvlW`9]nHn/KťY~fbڞBoUn>Kf.:>ڙe?VmԓҵMy*_Vݹqs.ANi@3 `;ku˥qz6YԲO{ :8(|VYe_nӞ϶ _ҟ~A^c?+]~Gb6?cn>Sq^S޲"1<ʂӍ|Ua hxJ;xZ[%dl ĻY[%C]5SwVK=MW rꥭo5Rf CƱšliҰ @FyoQ sf;Dia3] Wj<5Y?u&29]}hkj0Vt8g+a杦elvKrfXlisuͫ'sqGwSC/ TsMRѮGʝYܹҥ]VnOF*w#'qͫjg@8X쳋wc=2z{R0J+jӥӽ']Oa^7^gҪd4MͽoƵ~mP<89a1)Cg1Ό:ur-[E\ngKe[=M;wMw+7ACV!g'cZevG:y^3fj-+< .kV)ع53K1\fW_잹Jݷ7=[b^.YWS^kԧ3Rk- lg ]qhuUoGu>ٌ˵޷br|X~hy GfjTH5Ë>+j?'m.ZCgjއYoX˛sG$>vD닅okp\kr^kHt Pznulj%}l& w^b6y42~9>E%]é&[G;qRBԵ[K45^E1Hm^wukkg(_.nla1X1 J'`hz;f_5j-߾v=pU=C6Jz u]Fke{i:`?݀ZlL53iԭϊ1C9L֪7ZYŞGg啲aᗖ6u&!Fwy``g9;aL$xLdj,a7VvʘIJK56lWw5|èXa^~V%j`P6Ȃw%st xӤ>Zvj.1[^-a.4#mZU%oU|V`׈{Lf`Y-2_FC2o^lQA*\r U]0.l;E8ɭ-oBv=1eut7;3GˑޥHՁ+;{,nx60} qIL w63eHV cff+,Q*/^tmvѫf+6c@y_;Mwee#:aɈv9#&;<9OMF_QlDŽ |8d9ҫ|B9%@uOp}K=Yok .!+5ډ >m99oŖǎDlT +Q7 7C)l}৬f `HVgۀO%9 .I.S{gЦӁn)&;77y<[>svtbgQROovbnt(ToNyga-U8* p0C&=_[uY˕wf78Ʊ^SUDHaqjs,buGZ Fb4حI c+>m;.e@Wx6u#kKvtQ,|en!uܨ|o3]YӂZ7v  OӚRntlԖ?둍Ru -Da=ֶp W1Tpr2cMɽo >c Rs_:sP QzOI]ߛ6Pv'C[{n䛶;^:"ǎEd?, '폆 ${wMsOɅ2$_5$@VuU n}vPዧa xIʆ? ƹA'Zef]>E#݈jY~pO{n @ \6D\?"rTvA1woyq:.sK1]edn(=klZwot]n2ӎ5HlJZĀQdo;i|k8Obw_h'$LlZ=h\XwLm#]t-'6K\\T҆6}+. ZlSFbr=!/i|38 )V.v)6i/v̳:1NQ67 L-v+Cl2SXn' W2֝۰n}7ovD/K 6`|]5X`4]o9)1X"C? x0}F8ti.ۜ۶gzkWA)l#N'iZmKfaCn:E۩jISn_ۦr'Q6hG1 y=n^VOaS#kvـSv UU6n[xGŶo}p [{8+n_Jm[T:wu{ \uSkSyy+]#O t<"(%1X}翴n˿l}.^e+9ng̯4(DpS ]F⮾+ƩvoHbkr-~'ajxbLB6jHk+ewo}\)o65ƱbG KVpD?c'Na3-e3]TpohP!W$^xjJpk!;bսo.Թ앰dxƶ7^LYW6Kf"qw=~@kJI.V(\!E6"K؜Vhw8Y 3)oӭ[wz&jN7u9d1]؀ZTzv lwE`wNiRmƸ:frv)cl=b݉[ukˈ#Y[fMccv=y)ޛQ~az([ns C79$ɍ`\n喷OAzS }ٸ4e詋-a6 gS~\tڞmr5-:3;͟εNo!:^̞CdUg]6R迳gWvf pǭ hLcPފ;6L综& oD_j=д9!Or!m?=a6K[6vrѻvIs=Э w R~;20Xǝn$J:۳e%oةEȟXe9VMhӔ&_1m/&JƶV]TY{Y\xmXۀ[s#gr =_R+M6kc>b ˻W>[#P03p=Gm2EZ;_Hm= 52\hLڿ#҆}:I}<:bە U_=5ߏY[ZWht':WRÄ5ΈzWj6#F*vrZw7;evyʹ--97y02hi_ }oee2e`ۡ7][܄k?y !oo ^Qe\/7O!v;*BwDw}7gC]-Z[k3]t Ԃ;#Jem1ocܩ3&Υfȫ-+=po#a[cgmuf[ VE,ԍ Glݑms뱝i֪ujS^sz[W ƃd_͉eE6X 6ɍcu7W`[Om\)5a.2&h~ NhU˱+%>[{޺h-.2V@o *+f{Y6*oۦƿuyjw/m#cמVUkvS '!d2V,O"?FTL٪a[ 1Zkmgi.jȟ]5+6*MD>ZYI?m5^ns8%&jOk /6!"V5;TWK0xൌc~s9uAgrXSDž;j7svQ1W.@n)7)Y7X/ Vۍ0O/)vDskm$4 B|tmAf=u6 TM4O.b,Y!DmNwsot cwM;LؙLrZA]5#|_>c𽼺bꞣ^ؾ mm%ݭonEI'a'v0WW ;Mwi"E2N{:lW׫}-EV$nv@ۏf Es.Ӷ{WP^zrr내o1/n;eU]ωfK&xpb \nͽnP2Ncz.vZcm;=XT& һK[lȖ[97rKf'J5kco$}6KQ~'\8Ŵ5ݪVnFD.]ǮV!x& {~(D6 Ӭw=v51nurWOYaȥf%4DY޾rdRdt -M ]zTo(-ܫ笖4ɗ2&1D߂jU={e ʱg;h7|!QHTv. +bs di(.i򶟕n]'f"lݓ ;ڋb|ͅ@5o,&$֏kY<ԔmrXs0:arZVlh=zLQ1C-s ҁ1d=LW{7*p T]1-lZ#gumnv9pbi3ZqND6ȹ^ͳuG鍍t t+!CNq 4T4[܎^l@k{,\K}/,iqcȱ{6Vґ2A Oe$͕ Xyh1VAԼ]:bkɶqjx4 |ܗ gY{ "N<:k~ຄ ubIIF¥M;V 9v+u"WmA-e.arbT玧]frKצQnK+K,/㒱 ȕ/IY ccv;-*=XƮ)C>L=35pC?y~C7[w)+fZg.e5,saq[g)ە=Y^ xJxF-O>¾}oUvL /Ѻn<:˃eOF^MMؙ޺W]{ \9Md+$㭥oml]mR[_׼f8|-l28W㞰5;uUfOy68y./׿wc:(r). <ܕėW@On{SᔷRY}me"kE{CH:S27>͊Y-:Y*3Gp[(d dYKN䀧bEia)m:Jan$Η!Am([wu_׳ն ׺oƖ`YmXz9YT s7 DpLZoJx+m)׿6& ZC'2,, gsOgfϋ1Ͼ~K\EU~r0Yv٘ҩ+),M$?^ [|\-' ~81/g@6\4i >k&CJ~U+pbEf,3,yq[_h`8Vr\m}hk5%m3Ĉ8M[,1ըw<ޒvbQs:o4ϕMDZOΥCfq c*LV۴qsR5Q3YO$~+Q?\jæf׸9hL\E`NeGu>oi=!W杊M'{`pRskP9a Nw rwcg*n .C79+1g͞RH~)G\UDY+P;ڈjvAC)]< J| 3Nˋ$oLa?9GۢU tA˰0{,mqxҢM_|UvRRsc3V:vXp bVTq?cwUψ%Plu7zӀ,7#{[SYFntŶ;&7R[l@ʾ_6@i:]:PTJeVnF֒7&X0"Fj*mN,䑭dqi1:R+/W ᶆZQ`O4y[gwM3/?ӌ(Q՞,< /z,KWGUIaTPܣPOzjlq[1;|wLRᮦ@W_v6e?i{`\d#DS; @ ..g%-Mp} Z`]޳Ц:O7awiu嶭ɽea]ZOflZe4*Ɽ\ea*OkI N+c[?vO\0KSE@Lc՞pRj3C> ǃ} r謏wõغjȸET~`|pfS M_^~Oey9y­*ՓBؾV*HW$77V.lf9.nXM#/{CwWKfv_5-hL kx'3^RmdcԫwQ(○'hcd]=jM,ڝim2jwʺuòGP!"I*K'$fmr"輍:f̶K;[|-{R\ )hՒ1*\U}`B#f舔f ]rvD x5p<-+U75 #޽,|!T8ԪTՖIՒuvlstÁ":Vg6L֔ Yf~w]:P*V: Mg*glɍV2Gɖd}s@]4v-QcVoTmz/-RZwӯ^SLwqZ[]]Z]*aBswod_ht҄9!2I˪~;džM9[ʨ~< B\#;_Hj] ac,VV gof'QnSϲrs.׷$,sg˞k }q`,Kadp!5S_:Y4zy SO>nwz3'XyK̄3v)#M-;SP*L*X]֛plT^{%I5cEF2Ku]dUlP71k]aȗSn<uP۲5޵(:Φ*}IY{Ņiauv ۚj_(V(31&ucZeƙnԑR3d߹ͧ&ė7Z+ ƆW O!ImG'nV&/t D˷kB>@#*ohEcF9zBN=ˈLuHM2n6nT3LpR3ܞB&_ۛ?Az:֬lyh䅯$\I^u!D&R' DMKn S3}x,k|P%cgiiq;ih3el}I+I9nM+L loA亲ʚO2L2A1A֫ݻfcEc`gB:=6l#j_E'RE.*lOyFRݼuN0.xv5vϘ~뤸gkkKW;~3a U-cjgM oC5=%Y}ibU_ͯ2 l)>'$~X7gSDoM#-VSN2݅jȹoAig= ]W9rX3V@M%Roع+.F. \͒k5X.}- ciOF#B}H)9`zQ 7&X;snJ ٬.WrJ,n:\k~nwbHo]u{jLF Zuװ7T|wc#3TDvח yw_l2LOADw&5v$Ā 3--4 xf!pX)[pTQظRaM騘W63쥩w/\lXc`,f0}pb%4ygZ8)ۜOؚ>Ux^-7߶KVib% X\Z"\FgJO5Z]9|8tK}o+m*yaMcτQp*py#^!,;8edkTOn-7ƔF~VnӖ';͎x,7z݋V2R$L_e=$96Y\\JݺL1% Mk#66o+J[r _^7󥉍^kژyfhxQWcwQ Mv^&ϭɛ$u&٬6fncgyr~udåU^2'7V]dM%^E]ƚ j 1\\1{b{yFF\ރhW f_#h"ԕ]qPRK]pe¸SqoV+ܘ9%(;*o쑻?`2 ݩuTcDbKװ3Ŷ(w04ac*ql04'[dC8sa6)϶}FL+dMB3 6`3e@.N@`oڰdϟEErSr=S.kp^ngP'$0O*]қ[Ķ*K9o]dmpmn7VAԦ:'KCS\ZoGjX&7鐡Jc̖Bw\[ n./rnvlq;v^V-f_ּCd?GbƓŎCUxl+&Vuٖkm>n9}.ZdÍIR9UgƗCޮ FӪ|e^86(epmDVӳ|4H[a}2lרIhsᔦcΌN@Wƕ{+[<(Džkf26cctݵt|]iCab+qsS}c6o;gZ=u"m0a *_f;)bqIT[fZM޻݆KR.PЫ]^0^@:u3j!U庆`w9jA,[lb\WMF\svg)+Zܔ,:Xqubɲ~f&9\MF˻+{l:3+L so+V]md Dr(v1WBwyVzߪn\OUWf;&l~[X]qFצ"^8ٱdʪv4M{25 2\W[oqI9iX2^ÓLʠ0Iީ١Vܣz4ʏZIUvx7E(ga?(ͷ54XeJSB#3\jyuneVu]l&VL0vځ7y٠hjL+i9 ]ȿǼUS* 7;Rr5㡦eudˏ2'=G) wH5$R_E`vz-E2g؈QȴkgfLqR/Ny0F(8`{!׸s-]o ruiU;{elRY#X}~-0>oJajh.~[X1lW(5>ڑKh9ݸĻļo Oj@ܺSOYm%[ɲv+wsʦ2"b0\$t~ .ZXd=o/kIQ.Nċ;O> z9f΢9.-]Upj?+Jnq*dmڦX覶-yj] njTE1?D-*&Z k1:/L5;۰jh^N1VbrښX)fM$ƏGT|xm{d먂FȮ6J?JkmIvcִ2ܝXgU`9t]~}d ̭;:6Mky͐N.1x0_d0JȅÜb~A'@o1mU%95DEuxLy%srK7ZL;op n:j'Щ|J]Ӵ72#Q VB{!y.B2{m(^R#Ҫ-|Z!GE^HrCmFF۹auiE$HtGŭY`@]`ɡc1mrdiev׌Un K]N lKB\9TxJDte;AbἹcDv$!R_{MQ3]ULs -En]_*~zRc40B^,{q8R:.¯dsn )F ;#мDloM6OsK [/X~doVozFxG`ن[B̆v?{5tQL7cw?壺I\LjJ]/D17uFvk)ϝF6z4MFMصLɼ>&=ᎶϼyӖGҺnnGm=A|89Ge#oYynt 1D޴Ocz*skme]UVX t+m)˺nɿmt ~'W^kd{4WJ=uDwf\y,E X$[#^줪ex΄pFϦ25/G7m>Y>׬(s.0les۩EEy vO&Ġ}+n206X Uvk"Nt\gr;tȚhZO", ^glڔfoc.[IU(tkK:@yd+RˏkNV%ى-l1Uܫf:'CAJ0׬ 4{ ~OqucnG!e]7a%kي`ßVz>fXƷl)\R)]Vaf˛^<30@ ~w'GT/SĽ'cJ#EgGf֎ g[9&!bWBp֧gg\7XT ~wbȑ $-Qb=kȥFa-. w4҂1AdIUIM%cwԶn*m(d.4ܘdJ̝ܪRh/sMK6' l[ STf-/rҭ1^hqF`ĽJOsKJpiSycm]Y{e+rF|, p#AdQ:~t!x@[.*/f-<|qlD͢7珳īZcu@lnyܱDdQ_VFNQK]_wݫ4K;3I5XF|j@.}KnXf`}o3UP]IfU}?jՑBTh5 |ed]pr_k ڹkŎ%Nf!%Q12JS3ԸK'ڱ6@A_"8=U[~a!k끚 PinlDuّhlgYVG߳VQw˷i\W7l+Q/wXXdP!~Xg&SLWsWO_*oɷѻUos?S=qczR։r |6.4mUMR3O^bƃC_b)7L4;Ϻ&MJdաe'"6 W<-`ot:|k^:̝1g#jR]sm=v)!s]c^#WVDZ&SBn7d嫲UjT}GyOpbɚ}ˊblQ]fkHyF=l`}Frn0;iQi;H2(k%pf_Y[!* PNNR+һkxNDPn6-Pb0w%^WΧXK1CMT,%<_m-qb"`N:ʁI;F[=M&Z-޶ۮV#IgV5sE3&f/ `˸S1NwV5[ݢ-3.:s3Qlt+9'ϰ]xޡa(q8Kum jO `W;kƎ |^R[E}(t0{?`yfeZv7<+7L ZU!|Mmg*5)-vtǙko4pœǮ;-/*.&xHtSfw߱fǽ3zTBz)yT],ŧc65Po"Ԛ8[.4WU,x1MEǿk9&5l0=Ԁp^3l:޹bI1ȺXE ja1Tj⦝noQu,;L seR%:/\[z^[DSqV͐QYE;sfu-D,Ƒfuv-S'R.Ob쏭.J"o#f%)U"z+_,+bMtD~:~t@Vs?u)VuOY]m*ƥh6pQ+Z7it;bھQd7hya"nmt<ּfv/קY^HAWuGv0Wdw3[Q{nP)S zik,3W'Lߌ3Pxi9j~u.=\Yp0K%@'*q7z7,'n{ u9^(K’{{&vծ6-tݖeoVmi6Kl5 \6Ζ\0lv 􆂮N,IZ.Kb"nd)κ%.F *umiZ %A&ɪHb{-JSieHkڨM%;VI"%V~[ܕF NWf7vіpĮTi,1.J SB>>nkÙ:.StP-8}rxQ [V=غWY@RLJ'Ufd5JQլN̷vɶX: szrYGgN}]+*= aK8SE}c4]W;f{4{, M.}Cf?m˭3^ \TYn#jZvf|'* Mˬn"qZ dakɸsmf-BOq[ eiR~}l )$.X@,qw&:* UūN?V:Yvrwq/x_eCH L4-+^kcu Md]g\X'@^\J/jɩzYG8/YRknx)5Weu[zW'ڬ[fA)OūGHޕ<ʹE,Z 淚HAYKڅ¾㶻V{G^fFzcWurLHa[XV&U495/Z.]?4P}OURke>K|l4Z u^gȯgldfKK;o[nzjydJK9;q`%Fd[-1[{=zRv4vK9mE0_]d$;iΆiOe%5[w<3RU+Im`Lui#EL+sV C>v]>BaDiET/@1BZ"3Bdz.pʹZv{Lp5(, 8ov#W"eW4_G,P%vv*y]rwٓSzw;ABSll ]F2^U#%c`9vnV-\'gqޖVkvݼ:[e5SopbrͰOu9"9VY\L%o0.omIHypbK1ڵ*EX}:|C󴐽 rSělxwnC3Q\z^SͶrDŽ'voƊϑJm2_g15kU /:vMMT_|ofm`_gO[%M%=] D7gBt{. J^FBp7n{ipI?Pc\lCeSC+ d]G˕QWdoKEz+/0m_poMjxq@ź5= ƈZ ; m8Jٖ|h +嶒ѯnGY\$M2{dwo+nLXɼgmr5ui.9U~ϕ뼅{%MFYF~۶ɵL[/+?XE۶TʤZ;ڕu[|5KP3XJe Ɂm|C3_cɰ^/_6EW\Nm-'c2roC-{Oik+m$zmKȋ &$'PRLQu10RU /)ZhDK`63fD9eL9T|Lkix>!Y*=ؽJuRqByR^6Y] ^KTv* -ٟP;]tR9Pf *#ΦuA6nCƠ2]?U⑭lhuo遖syby\4Yم"$ ]GF iRdYRE=RV]۷K9sDY{yZ U!*޹K&<8-X K J͞),cVW_SL"3[}2>d'ck6!xq2gZ>5[!`/k ff_,/0+hOh6vto9B,!W?q5) jLѺUM1\y`n8,dy||v[RM L]9q[dZק:*53.e6ݢsk)-rHJѱG4b:qqGa`8E@6RUBmE'wM54 Qtn -wBc朷ňaG! .h 3n%8-jxiSim^yWm#vaʨ1⋔:|'kKκ8ԉe(n u}uV T8nkk%Pϯ45M;(mQ樂lZdi*^GYr5ƥdVW4FΧ.WNX`dɽJx7^o;?㍠c⾙1Խ3i.P{/gd[79ɂzߦ-%>{Gh|A6Ѝ,&[b7*ϕGޮsUdN]G[q)4m'Wѓ 4epiadu2VzE2M^]InL $g-']%"١ۉKWhڴuЭMR~B9mv)qKR2, ~L ,#mo|ub˓2Ղ!Im Dvl +^!WZ]#܎̖U9xdK4t~7k#.۷t˰Hx;(O`*"fP}g-*k5V;HwH2RBz56tTp|U\ϷS,ݚ>|v/(jUë}<}yEbVj˫Β!GXgr-;wSv&Ǻ.plY [KB/VC\欱s>]~H[W*}5ƺv+l EIŨUkX6{ಥbu$;r&Uk Yelɠsۀ¬O1yG+su˗$RQ7,x۟1^++n,)5leR$q.uݭXlV^ES].Xjk_+ZOQiZXxv!u *Pzl@jPA=W`Eȟn#fpv\gRoױd?%sMΑƈ>@sf*'1ɮymO 1݀ӿ*l-Sׅ#4K9,qR]ϗiٶ⭱R|G }R3HI_WB0[2e寓sHԗsutgEXoql Yҫc537[xC[6T3Z1`qXWךunYT*u<iYX,G5**cy 1UҸn`l=Qe3^DzM-%BZtǸAFvSl`zc]*)g% ޘjj-W_rCc 96~hPÎwB4UEO 70gixY㒬Qpq]ˋ_۲/ IB9z|;2RA1K8%MԷ+(3fe<\4w̾MqӇuE;i+ |9^|%Ė't݂>3}7/|HYGqژVzK#_:GNSW.7S }f-+l-՞v/G[BG0&#m~?.ጋoZ_d+Mnu. DV)nMs ɦW9-}ruWzySF_ԽPBSlT!KY=ud0tɝM6U6btOˆ&b. P[Ak*>TF͍iE1m7-VGҝ2ʜo_ڼ?u#7^ 2ԚQfOܓw-TrEzQ !fJzK^VZQ 3n>?EKE;j%_K>+.zҵM21r5;*ym.hLc.^zLbʩZ7o%M2?͎B}R'=|dCo̸S?$q}!`EZ@]毤[Oԕ:8R.q:781% mm ꢶ6&Z8~_k-lrD~bj+nIRs{-?ɰv5EԻIlFNJ8-;JˮSLnU\W2н ON)ԕ ;A;*+ϻ/Varz@<_Ϳϡ\m(&Tt)+jz4gK M]bz>~NlRJ&Û@zgl=M\m-Ow^8\buVi*.s#ۇ`("Vk=Ry/\^{\ݓ[_M:Roe-+$wظ%όt9)[f^R@nCy㸌C]" 8,.-=5ƾwǎ:6Kdর}JVLAmi/FrxwicK;8:j_2r3S.Dκu?eWyXnzZJAD)/Uh/crtӾVur\ )yzuUYu][( UK;B:'֡k#845t2x?[ugɗV@Z[\J}lr`wג7rdYQ4!PLʈ.2*H=f);T <֭p36%䢑bY2EP췬Q'Qkk%zJQ131]h◁j432]2_[Tm61dz vpgyϩt3Fnt]*us%a_Ocr5tErdtK_z.~⦢=w~Zh[>orwSm/&v-tbh+;Z|Lh>nWdtu?X9e%lj4S{{׶QtqJ%VĮE஧'Y]6h:N:x47iHXJǓY泎P*t7~L)^:^Sw3 קwظwe!K+iVB9 M0/>K-TUDzp[JFMҦbj~ִwmd@ܟӈק_r"-^-%f]TsCC~bwhA,nҺ]6Tʋ(/5>UٓܥK`U F: -EMձ`DdFR(T|9Z c)JXe +j ͛EQ~J#|jM7c1p.j-0Z%qG_Ttjv4KK UJ<"[W]v4)˜˶0l1{וSzU̷/UL%L|9R$iS49)_lzinNM)Nc>즷)縡s?cRS5n;UԋhZ2?5sv4ij[iz.J!4b޴\-(bTfH[Yskƌ`S?T~ohS3M[wV&D'ɼ.Nw-mSjm _N6e5aԃ3m~3C*ٍ>r@ջ*| , $)Wޢ{%ِ&.DAhq[Z"9RMz~WdloR'v|Pޮjvpj|58^ HγݦͯDs^kY.t;]b17dwiK (>ɨ8Vg%z , /ȹ>[Ot;j2\aHx ~-m.Tg ::=Z"ֹwqb'%~MeͨxYvY 8Rj0"zb7kr R,,=TVP&?~R(H\jFNz ĉ6Թ:w6I 0i~u9Хiiݭ\nxz˘B⒡Vf,NMs0u w`МBPTgډ2:սnJLd֢{A)v @=S/1OqΆ2:Ms-mˏUo?PTzQeLe<pyRPa24A+喿F~U;+,U23\M{xYV~y^^5As<ss l8W`UlXR6֔*CNX.A<&޺sXdȿU7zB.%(L2Wڲ EFPzbN9s!}q|]Gu\m-KK䘕2N,$+'}un;HQˠٞxeu'g }lOKi-d\y?Y`f,1׽7,tU(&-| urn-iNg0U\>4p'*82Kb>"j|k}!%9@0$,֛f678W1e$iidb26˷Qa{.m0yW&)].:)kP%ݠ%夒z^#+f6;aJQ|=fx F @{,tr `t (Wm$Kc&92&:s[=v|r/^<ء]{MD沶@BHN7?NMafYAP-< `=jձgmZ+u8i4~YIr&wx!VNqӰ4̨\<ي`~gLyu^fV@|N/+:pubx鱇H }97:?c@WɆ Dv3ƉH1۟aD-Y2'rǢ0Xfe;i~T̀D).SbL']UJ^ cڅeUݲ¹cK15M!<7^,#vnB-9&]_Vt.RUKgQ[Pk̑S-Bj̉Q4#ƾ=YvZߧm1kPي.+^V\XfpN$xޓSPoڷzn3u0]1(giɹl.EhuǯU`%qݵߵ] {fi^ӣĻ?F[p;rn3HK/ ?YKZ $@ܩދj1Jn8+o5,T\;af\g4秽QnuHn9U|a) 2|-댌lSos~ZKa CUTl}飖'o$⸢_)Roi!`5rBe߭.>!ǃm s슩ynm0KVm#?->l}v%X-{ۂa#$lrW/{X95v܆ ij2bB ]"Y-2Vg9_91Jn2iPʶ=kҝ}/Oh1h`49Kus+vzVcfu),u%&:3N"ڛlawkӤ0NVv^FzrswAحA_wԉ,7x,'ҐͥZNb 7/6,j,@Huz l6ց50T10dʑRVkCc`-s\UGzKkpyKb{vU᫘׊+juK9UH2C+j=$:u e*p0K/e~|NϰrsE0-xka-ypc0q`TzO[0'80]Uf 8J+  Cq"#..>[XWY!Vڀ@d:1f+`#Ij<ݐzq*UJwu Wݿ1g -^{fτ"E֑DR0g";$E33TEbh^{ !Nu Q<*uj8$#t{Kx~I7߁֭ mV`۪#޶pv@$b;- ;؍L3mTk;m6@k .g=+Փ7*U{ z2Ved?u+okF. ?+Z=N2K䤵 dO>Trc*`,V wf6B/r9Z&dG򒙢rEvԀ"doY^FF` ;ߤ#*qc̶S%f MGɯ.^Xa=UXQUf bwI՘&d&\)ǧf_B{Aüqyǜc7P*WűmVlJu:{;3Hw5%)ojm^E g2*bd.Ч(Y*9gZCGXŊGv\.Tr9e~e1̖V»%]Q)m`%馶Wͅ2rut]tvTǤyRҮji4)ɤT‹Yun~cyՆRpQA~)o[i)zi{/Ț(s,g1r &{3E]q[̬4*W+Rv;rkrS8/uR<ѹ0l2_nܫm08\i[_nJ׃y%KyRo-{Z+ 5^8T]QiZJ{c}B0F}0~|ٓwjyIfa! vtq+y1l(ʓyӍo" &۹YT\;.V.bx:/Fm2& {Lg|WTi>tgʋ ֖P eDE,j ZOvQ2pMs=g܋vP] :#Ro}h鯘*q7ZN q"4_Y?Ƚ x%}ڎ2~Umg;!ɍZitA*]9m\k/2i95'&S&{_[ވǮZsֵ9D1GN^>ɬg![G ڏ4zp7K+L5gJVm7%uo3 =Ũ3s\JW"wVWq dv7gZ6pt\qv0\.7wx,dUss4mT n箘K%z |8-_WSW9zP%VdzeAfE)٦ -%uܤ>o U.T7QRM;JfrPU.^  Ɩ쀵-VFruFehGI6O}[U xkG9i:V'ZfK?p7inuٜ]oOyO`9dM 2MSim윬>;Q!#z] ,U_\2J"Äx3m{`Ez,TH+wĶX=CiH6$X[l0\%S5(W} {;ҹ"!S>Z..Qf`k+V YUfڬ5҂,}/m^-1RMqV/A+Ǒ3UQI0\_"y~ 纀ϧhlXpyrle%Ld| :{_z7ќ% $G˂ "(*~^d1,i1fX硽\d{f˂es #5Nm*yudVknYB;9p[v\qh; rV5dL9QWmVC':MNZ|Vq7ζj|MaT0Kս>r tqL2] *oye%~^,t\=F2L9mcH2շp:T<t:R )us.cRiRz9iS*ՠv6Xe9GАmfe x_*cƺ f56]ch~}RFӓUH\VCmauv.OY찭'V͹;m1e@륚H塓cZlriv]1[UMW/_ވ})X׶NvuFtRpY_ᅷz:TU:^ޒiTK|KUCkK:Mw:257tS4yuM5qfz VQW^;K6ЖqfiöE;;p\O^䚵U]gL#~XÏMSb*%k1T֡R(LGwRcVאѱ6恩NBAeEmMH>bYJc`ډZTZ {B/[_Zh7+ 3X+#4S]KŗeuHD7ZY@)iAVjɜ6 7|hHH` Em>t,dѹܹ3a.A}fM2FڷtV񙛞N#r\{qS.qv:Y p {hy2[k=}LMۜZzdtsuދϪOSxH?N .9= 2?;Nco$% 2'7˩QSĺZU5Y|(UY%5YK#4z&i70] S{B E0܅poe"Rpht __܋V)Q=+nU\6QTkBӡ\Tc%k#U3^aL&`p3mE^#d ɨpkӸ=-.9t:&[ǧ(\+X0UkΫu-)Zd"ǶKd?d>ѤeD P4~ykr,F-Vq1zrsj4Vx֨K~G;'q Sj ^{jiU֖ +RU-=TonN+XooIEM/bs_N?lHYfI\ ˲,aw<%Bj%AT)&ɰxSQ"k{mpskopVUؙY\b6ixt*߈S64'qNgp4u]hrD+㝣]N3YVupZ>fZ`Z5ɯ]R`w6tEB}VHQ"'YL[1X3Evje]1JjRWHrNJNSv䦣|Zԓ'3ᎢkX;]z7GRY%MeF9 w%ϾƋĚ ]NNr{XxEŭA':)<|MASy,Nȶ~_Ҝ_oVڧt⢞i$+Y4_b·u͔vk1. lxB@7 hvT_m-Ѥz mG Dk~=Zč71Iv>b lʮ?$髍*-=mڶl+/00S@VBgqo=J)G9>sˮc(0G {U̪qR.*_*WO"z-vZ'Ӡg@ɮյh&HPJ/y2X>Lu~8'u׷iVxs *}: 2JzjS.2(;Dlk2@!EʥUH&iU xM6/#4%)߳S2EDN&I'Hu~NE㿴}<5īOҽZ^2<4S io|_Ajyg uju .ZTw+7׺R<4`,W]ڟTz5q--+O~[IÔyI̫-we`[7 C}lm[ ԉp-ީiYܞj^7͡jEݸԺ׷+ȳtp RٹuB\FُTR֧ɘ)kɠݱe[F'k+y!RGUw$k:_\5VJ ׃l2$ziOBM`- xY?@.cR$ +ɬV(U7T.*e!:|JhIS ٙdX ePZj2}#AjEuT_4v;WU:)\&5-2@5eGoVNd&◳h]IS*MC@,5!Fs)7R.[eg.R}ˈ;&*tŨ$]q:Bn%W/m}8j#eQ8{m$*w->J=:{Pxr^^Gv.vE0tES|lYd+q8iWL n2(mW+9٩XWym,+.*aAqſNv~Lwa8`dZٽЍM4jBcƪyLm;1+]U#;z|)9.rkHts&i ]NZ|ݧ}qg/g w8V1g|SsMY\9)&>+|Ux6%m1tb!yd,K땪Ƀ[-Ըw|81%em/ kڢ"Sʹ/W.b+(s= 5\ŧn ;Yk폩f˥YNDԋhs>s9` 7hr:"K"'#όbN<0IФUFna+i ^ih._+M<O捘DQKZ[_Savt ?w1*\%nՖ)'}UEsQapk4sN't)sҲ$XčXAM_c\.=&0]ҀZRvV&d늇6)R+#[_{I|R+|)uFb*bR1ׂ ܌5QUU{z'֝uqW-Fiaޒhm.z$빲=%rcr')U-4_SH+Fq:5^lIBw\vPZzUcmM}{e -벵vdKJ+1fZQ{;uKq Xկ< CYкjAWd_;}kiieuw&Q-"`TѵCV[/lY$RA(4wo'Sv+q[C:8 jeBR:K*Cv[,֗hTz.mđ UY¬f!Qȟ)Ify^\;&bkt^3Oi~d_0T\Qn^۷=hMg;m,3vۼY4IwIV9N_J#c@r'Em#֪ws{%z!>352c΅2NjEul7mwM5ɶR]wkqvOIJbV^7R*|FVA!ѭ18Ա(nt?:doa&.>)4[=/~e*,g 8kq[ri!gugE{R-Pa;V]ގM&_n*qJ.l0NT^ _7Dʀp;NBn(;c7s@̓o9("h..nlv \RyNMJ.w81l.,7^^*fAOVH35⍡)V^Rh#dazFL9yNt<2>IΫmڕ=~ӳ L9'1dǓiwM>^&g[ϥ&l{Yxc<W0SHǝ g(\SĒ7\1Rgi6Mu ufua!IZi*G3ln)ׅ78r?MP7۶FSϑ+f/:YnIh#Ը<6 s+ZcܨI}_j1,[[(dǸM.j3cQ 2UAjXv-g;q8 \.jwSyN:$ci`S>BZ)lR,énVײ0jYҕg?l{ 2*"_ eyFW k{Y>T.J\Mw0-\~YuS-V[rAV]ꊲ u%)c|:$cqSgB[6\z{loNePmdHlSCֱYfkү,ܯoέ+˕8;ݖݣw\)6qkk{ ݬ  I\-YTUp,\ori,9WyɱånJڒ%NGdk&}U'y9Y/Jƕڐ܊s#&7R%c"!SUYҘEwk`9SLw]rR߫իx|pV͖8LF Q0d _fgJ/Qwйd ;ہXE:jejufmv-fRXFrf9=˰Kƹ~nm[K3)eٓhk`%\DS(S<-IJ`ʓ|NSa֝|8B%L UZ}&Ly7d!Jy%*\{7ԝlzyam-&a*eD2T26˦ϸ&ghE$Њ|A7MP̬Ԭ`&銺F++i TkW%SeZ mڸ d`h+jl1[EnpyYJݬ!~ͧcȪ ށJ7vpuO?[bBzE4W L-,T|{|r֩*A{j IhO>;)m6wg:C،d8/=rI2Pg*]T6\jKW]a[^/ڴHjW2ʰThGcAUnzT5M6mШSokZUb4癝6 2M_WNs9RONѽtZEX7VjOj4zO#O%Y>њBy⹄J&lV b*50X5P[rJ;Q:F:_V-ؒC_Dրh/nWe{*sŪQp2$&D1`6O%|wM[_sڬN3͌`t2YhObW5]{ dU59ߴ7r+^ϓVɖ^v!T`Ux%Ki^Z>GU|t}K{r sClY=4t4}Gôoab%b !N) ]DDsk +a[Jyz}Y ϧP6ܔo[mF~AUHMNCCmr5Y,\̖!qw;Hi2qw{ hȎ?OSl3 E4[QOԕh U~rjSݸ.ۅSEUPf>yrSad$Qlc-=OZlӝ-. r[tّ4EJfs~n<`fJ*S_*ӛ&14AJĮҵpsvn{P7S-[.?kGK4I'Պ ɷ99Jwj]Q\G{M.+KSUE^ >PZmbVMwQvQwY@!%B[ EK5#ܢsBI=ѰFeI*q, ]}7[N/'[9'֍zp*$EJ[x_mFdw5owjX-pW+ռ:iekhڻkԽߠ MweCM_15H8 BT:2}^hU`NW;bg[NfAx5[kOVQ۱N)MW'o|VepS٭C٩SQ+5Czxa,Ľ& i`U`մ-Svk!5`h β^J M! \M9#+K'e$rz*J#;@je=ce7-O˩=#;3lw j=} UblҿUcMSBNzԏGWT(axinSϖ @>]r.Q2uۤd!"@|c!\鲖 wt&`)NGW^hTŴ6t+KqPrjuիMSYT#ҍ,yUC9ؖ\WlG;=JDžt1;F6F1f߹OͷepLʦNmH^oB=Wmecl*=0УOTNJt6ѪFD]t!x iWɷljuVEwa,$ût3'} Jtu#33}:} Q_&rJKɊMl {`$rj_.g;Եݜ&Lvy?Mr[ APyb#h)V-U}l-1_ujĥ❺݇&q^TcBߺmqwSN>Fm52_Ϥ@Nq 4< I}:j4φr)vu^cb"·` QUT͕q?֒U]ƊXonnlh-,W/r:]8+%9D*Kev&S[G):*nrn~|ů,Z ^1if f. m]!{,93ֺUśYGѪ%׭hS2aFDl^]kɵ}=0$ĊAuNeVD'JWt 61\NMar,ݏ{;Ʃ#Qdq:7][ݭqj 0f,ٞRkⲛvQAitT k[:w+jFu:I%(w*kїd)(Pռn0mlq!{v,uOK=ۺ 7U K>͑Q.3.19Xf+ދkuUU_'Sac7k9_Lw4z.&[&9Jҍњ<7IUY\޴LkIFFWԖbO:$*ghcUk8m8 MS52=%UvK6+ k6R5Jݜԛ8D)HvYvF ߨWבU#e0²jW7sި_sJƱSVN3JlFz!.Q:5…lEfCO3tr4͐S \or_x3 |^˚bΆ˙VOE]TfyǮ-F`iw.M cǼ"Խ(n u;&z|SIWRY9BWs?bMXE9%gP;rNTUl)YW3>ğmh}+T,)Y@͛?~d5S[=?^}|ֻe85[fOaXPv^h<}-84GiuqMhQeX̳}-ۑ.QLio>*B͚'wt1Q\_WݫJ?Z,Z_-_P P|tS {oi*r`l!Mu22'ڛ,.^m-Nj27|ᰬ!CeLeܝVfMvz3e.{̅]j- @yJÓ\/AJܨҲ,8+t3BJ]A*}tY+VWdh;jRuU JG- cͰ_C_6rLm/.?Q$'(jz ̇#f\qj[%KHk)bSAzƓ*SS|rZEV%q*7vyr?hU:Ԅ?K6Nu+lFpt'hknPmHAlέW$s ksjtEVbuqYOOZMސ UsZD蠴Buu)MSčLIWXnqҹ15^o nMpW&vH 藵x[X<JOihWKڍ-ue̽Pq=!,:eMž]I$I\EUs[{fL\^Tk-Ll;Q9 +!^xjDDVuM|u¤j2{hIMLQaW +ADܠQz+7+*mZ]uͰvr<G-/kGPtPyZZXz{2yDˌ{w;3I(3yܮemt2rjpQXIvZȫ-jL;X\L+sK?YWoQ-&.aWwe-1T7-!vF4z۫f]E`5,Ft.oX=V$iTxs0=ib`ruj3 )W7:&ZKgո85ڂL3NXmuK=$lʥDxlT+q'+C KfNOQ5/Mv,gR_`KyR&5{>WnepZ,d1y7;/ 뭧.U*=s}mUjp .629嶂]Z> U inhnn};vne&~JUI>A6mjϧQ*XG?QfeʍDTW=IAp.)_4Q6 ǐ꽦 %̅{;mW)I4Sp% Y#i2^IRUZ]0@ hj={;lvᚴ:O`һG/:s> V?ῙUR[JHݔK?ѣj3q]^­Les 4rߦP4~yu뎗Ee[R ct=ߢ~ ';RcHYV^5=/Dv[C PDJ;5j6#-Tk8Z'פ>6u6Z󞦎m!#K6imqSWP+Wabi,nkjS7 Vñz1)bJH8DVn˥ڗyo6ku:)MBjCfw캖K~\ q2B(v\-5$XTo"jmҸ% PnɱnSܺ!7RNWYM۴%26ZTk|5nh*Y֯m(o.ͭ>.nOmHuJ~*|zȉhcur 3}0m8)gsV>5kr7+vJX* 9);W,wEuS )YZu,M ѷ\l)qG'T*Z\V-sm;F.[DˠKU*svs[\YA֧=JK@TѻVC*f=ne#N폥ON_-jDLm5} l(ݘ ln6n%j ^PUV !=*r3/]Uk8Moti[})(,^B4̎wW ZEj*yNոDrTT: 6]!2R|/< B A]V.)K!/*,[W j՛:D9~/o[G] B۝׸X)CI|he2]Z<|I1;`(4=Y&ڹ-ݖZ_nfSHzO$8*ǤZqc#*$5b.JNG%o5" '4Tɫ ΑJ~6G(m XTAߚnBMIuˬ 265M[oETOL l6#t%jRfW0bJ8@˥ M}5GSk6W3-"!~z^́v*Cl 苐z+|nmҭ.jt!uClcwQgS u9`UK],^X%$0SHW t-\vhkW/ELe3%EȜ#mavm%ioib k2:I%#YLO*T]h]▥l_J2dwU4Iڳ{Ё,/՗.ybV%qrUUCz Nԃi|Y_܇ &$;3JRgx#1^^rܧUݝ4r,Q\D#*Ė?N [M]/K~ck[3F)*'׻\w ( {GFlKHKл1dچZHS+s6sku8 k\VZU-6KǤYN'u8lcS;\Xb_j iU}d K~C)TCY)5NCqR'(>Df3j] uGqjvS}YɷtU::#BnY֫W >>ot;K^Wۛb`츯T,o:V~w4/oUXEVbYqj^6d'պ"#QuP0WoqҦH5XJr5wXLXu#[:O $9Dl#rs3fͫNߵ\/XTPc)Ul$Kz/UB:?Һ%Z-ܞX>QÔ *w%iv֔qN[q1CK%ϡ ?ƈ tˏKTnZJSH2.U%o> {:^ezA rYTސJM^i!0Ydog3eas90/{bXlI5/8R뿸ieq*T#IW3.yyʲ޶VۋboJڦ*bVԳeTCW"J)C{8ul] ֜v2| kusV'׬m<-Aoo,hײL.Zr%v4,Od.O_S/}*% ed[OQqUU[lhyfY{0RgELӚ ;\q)08jKOw PLu I^do*|_/]`Z_ͼ0r%SDШs|:5f? V짩AZ̀?hYTrRz3P{ܩob |gu|bXe#Vѕ$a]{v(+Ո.IziI̹ƸQsH!aV)Ϙ]ˋ:X*piZ]5Pj+ZhIy؆gꭷۏᚇ^c*Q~%'WPO3 kJmuVXAv_+Һ8-تBF7 k2;එ2ox%;}4rGM']/[V` ]VLRqΘG{jkE5ԠUDR.怩D9LE9T6K1<sMiRXܰC2fʣOWҬ#N]4 [OkvӞ-ķlv Ri[i -&{Qt}2`Z%\ͬ d4PcVZToi$V-J٨*KsifTXLSwruOwðqv_@/pT*ɝV*(k'MBޔu۞昅2zق#QX͜ԛ)$՝K$SMeXOlEͦp?//a]':%kNW'qkQm-l!0M$2Ν.Kј:nixԱFԃ(}Ze./=| B]}5GQpn3%dFe'%\NU*jvɮuz<F(*;Vu&;cLRwqR$*A/b/(/eG3ľ(`hQ#\(JUڰ,FFV^b= [ݯW4)`ʨU*g)z>rX$QMIkׄ\R)*93(<ٟzWw.RjmMGE[.%f NRݼکRIl`U܄y '%"echZͣp7"ա\{iKWզچ-d2RPK1 eZ|#Y-eӬ<鈖u OOPq)˝*Wirj4C˂ʩ`CAޅ.FvoQ  *mD1lhKAT^!I:$YPK:]vfZR-itF^TY'M4ù$I8s%j˄9?h )*N׎;]j\_XXfV'Svy1 ji;шaޙ'7ZTpn]Vb<HjukutO>CJtX+qDN&e$xFS1Iͽ|I!褍Inu!{fZlεBݔAX.T6Vq;NV2a)״s=2ų"vwH?!i%sVF1 nQvT÷K[ٍJͺʋc6llV⵼A7E>lVBg:cj7bpygkMUF>MX֒(3+kIڱ!_ipϚr@,._SrRɲtj|lׅ>KPk-MEvL2QfjȽOվU59畄S Y,ge}=eߝS2fwk6*Wo *P3k֐Yn9-M'ovIW ؘnj}֕oߍfyL 1mԇytaŏfQ~A{AGוd +Ϣh/Z=hTOOVǑ$m۩KU%KN٫I>'jˀV6uz Eimq5Sj޸ɱ0FMN)6׿EFHE~mѦ` oVQ:cL*dk*Mw+Ω%6$2y;N: ɋ<5T,ݞcp>[*Uɍu1~xmWvDXc#x:!{w/ mzw'e{}ƒ1$?1vR<`/h["λc Wb4c@<=+խsRJ^-VNeʸoOC̥.k0/fwE,kߐ>ק&+fSHkτ Xץ`7R^ScY\FKTRUﶩ0\lW6*TyIʵgJFN;1F{Mj|.XL6RMCe_U㒭B:%|Xd*a Ei Y-o\-TiP4Y^ zŚFP*GZ:MVhwm_$ux#M ߽ea9c]%>fk̫ȓ\JQqɲ!_jxtV+7_6s0Z"Ӯ ZT+>uEd+䋳p¡,ma*PA1*gUjz. -olq֖ R]]tiVult1 QfoS٤Zf1yZQVIbԤ-4-7*uU13K}^fP|{i0.U BbTjw<SKrsݑ2[8gYþBܯLNv-ވ / 4*@6Hu馒SlIkxo+RɪU]c)_dQʥi`mby6նqL}Թw$*/7!uO$=by|ֳ٘$5}]%3a8h\{}م&4. FG4:>,tl}}(u^ oyUf4'(7*<'\4(YzG.J#bܒ1%F*ckOY"ͻ6TnUg~kLD_;5*JWS,Jx;7;mry9ӐqžduKW*cS7g A&h]*U6E~̙5#OJLU.>yn(-dbqlC8-A/sniԄH1Ù%w3?~Rk˚It\NpbC*+hNtLYjzx eClՉ]ckiC ,2p:C-QPM' X^׺6-Vʢ \E0}_ ,M;Ů𤕿iŶ5q:HoV42ۅr0`]p6Fr}oI[f6ii6r1Ɖ)^lAvPчuU h]W7p:7iTVVt7hhk/pJc%l'RkNE^O1K,yJɼڮ~/9[J{FWu#pjWE-Z,S5ᰵS-!Uݘ}"ν*,`7}8m>1\يKޗ7MFr] J6N9k)? .bl-gr{v1RQrgklCcze#LݪΆ̫hh+iNtYť](^fhAm&hԾjB<5!bO1q٦x%V絯gLlr˶j^\?;1oҊb]U]nSm> wR0Ƚ::2\8LAvVz'+0[-Q,!|ԻpKWՠ[ZLe<*y7&@իp"+P{KGlLΤ]weE$rF5!mL`Q]:8cҌQ_:K*t ~Y.͛fd3Kg?b<۴7mYOsS(/2g D¶v)K9ҭu;r5smyqK)1cm]E{ 0W9H3Sުu,^gx#Ғ[KUcθʛNO6z.k yWǷ]},,M3 Ѥ*0!O+ۖܢwWHe&ޟIW.w6+їk]w[ DM-lѪGU梪.lOU]BQ)0dx5?FXZwȨS.foV:q=(3=uhxдO65B>?mZ>9BEuJ_]TS= 3@Gw(IV7YLO'Wv.|a4J"{-3]N,Gx)X\[|f+gdSjgC %byWi iV͚ ï2&-=9, ES٨R_E\lUhԮc5o!S;Z*OW TBVK۝5]yV\LM7#j\䫩ӊ.W:?LѰ c) |kwtC*E_:CKeݑM(e1K.^*ې*~+j~MYqO+MM"[Nw F*Bk?&61/WLMK4\ރ ZW1r姖萕̩N\rU]ncmIykv5Ls1:Z% ;Y s^T62˯kfՃi)/sBٮCWWo}TWZdqܕ>!Ǯ![O[@]Ю&PΏ]zV/nehZ)wit{vz9H憚K^h\sR#gjKl\:̅L)j4j=ftGًVʒ:CEm6 UҲEJI ԪdXC.`rqwhCPMu ^ |kޚ OaO1X`)dIh_ Yna4>Z5ےaěi䪹r{\ڹ?j̰;ZqFW}مퟥv]"wtBlHِ7|jd7<'R,.,Ưr̅UZD;QGڑLG!ceN] TrC^$ Becj4r (_ZI^T4{J bJWѫq۴B7.4 m{U .`qiPw+,#bi$mB*3"K@Q"@}vI\=!mQ!uE/uVf*Zr=C^LPwp1eԋem_5L73JxS"wP/Z&R.N ScL] m\izo nܚ)\@io4xBٮz"ѬJ\wD25q^\ mrVܤ\vsRNu/q4i o}恚#naQ.p*l+_=Hd>w9$Tʽ8\oi$D# 2(0ްPҬ]MJhi2%υpS'jIE%-=˵JYfbU5Te-Yh(~_XI"P%W `r3\x Y5f~ÆԮ8.KIYnp'y黴))ug%%(ɼ8M??ՓUfzA&G٩4sAK;L㡧Z-זG.Ou>Pۧ, Z< ѕҚq Cpb s :RI\~~)ۮC V`2}TV]ќ$S+;*`*+sޙ-2Qu)պ:9]u[vze:\ (Zn33W*ԃE,I}s^SPƮlivSDJv0y\\9p8n!4{jcs@ f۾&H]Nr[g˿뇛!%a!WiC 2ݝ2.q Xg˧N^B6O"%ev2w] հQ.Pڌ[l\a{CYբkePY͜qӕxщh'r*WV jyִ(\GԺjJ&dut lXE_E+[oDDMxj4k9K|\α?t@ ֚4AL>JqfK9BqlOԠ4^sKj񓆥Lra^ˉkiva 3ߝ!A}|9[$>˄xRPq}YMq;ӑῴ{0;UDe^OáB `F3DURg*z;e"0Um[xhsI6 G/A*׋?Ԯ+˳kǹcIP4}91qא Rc~G%]&nb-mK&~G𹻴e|Vw4iZVOojPv.[ Ol2%LIs6#$u5 K؋RkU?.)ܰӂrZuG$JM.cU=r n%xǰ%U\/U&v|{}f_,Ԛr۟ZDfevFfFWgܥ,Cǒt*+)mZoʕ+Q2ߔ ׃NDWݬI鬨7l g*{mQF/ESQuL U(i-Hg{yV*BGQ65GcQo2jTjl2WfenMT9%I#ZF3jV#37QW˾V-Uܺ< I j`ڣڭq GK ,ce\SCjKthkbhkў/ ݢuq,Gge@~8"s-VVPsPanue "N bNoEz6\MbQT'u;^L*zMvOSPԨ04vtH [RrTyyKb 5eG^>nR?'܉osӜMz3H:᧻JJ?Z>|_FLGçj2.,c;bOcZ#dq qwwx1\ڳNT? Px`1>P"cG#ૼs{hףeυT~i[OlTWcnosO߂rm-cukmgo ^Zڪ[m0T&W*". UeZ9\᠅gz0\O|T'\v89X-Dݪ6KeK7]l=|xEslzrUĵ[)3,MEw9JeZk%jOd9*W ih[c *B^WȲ۷YU'+ -${+q(7rzJQWaIԻQey ߽}%vlLj) ZL;FĭZۗ:xՕڮR>4YWRH5ewHcW Q*nπ'ڞXfZz/X{q{t{S+ըu[a_I˗UMb4LFd -Hxzj';Jɝǥ|7Ծzt$";K2͘s>S> A67 Ûk$7[Kz^éc Tƹkև6m 8hJQSbz9K ]TZ I"؝SEaohW?7Ɯ-Rn]@lNi|k(ut:#E 9JEi9VPUǻuyPWKJoO'^EhYX|nncא8)PՍIt:;@>nZs6/?@4n,oX_患cҚm)b3M;xc|m,M!IO 3ȩsՙ:aPc*neC닋)(;5mK^l{R!#k5-޻\N~gU[+f/jm~[F_VݰhX\#]IԶ+H)I:l3Ȑ { 㩕P犳f(SC:m] I# td\n۩k.n ,jnKr:Ӎ%KZm%J KZ̀e].:d%EHI/ݛqYhuyL^ NG"5tu fe+ګS&:UfI+ˢ<8t̄}N"^_*ǧm56 oDyiSAծt[`y&k͆6M'1dھ\g2B5 *ݍ\S(33)T3ͣbªrSV>1Ha{w]/ )#E`L$}ٮ *+wp\`Km W-[PjTFo½]Ag2O רjwֱHGCbXO+TnNBqS/2QT94,VvVZV $AA%sVWI3nIKQ:= 5"fJςseFgSmu5}jP]2%i"SAu&RwT^ ?FT*T^xj@m9iڻ0 * r`jMFy rVj^ǶR5'TS@DZbj63 ̉IGGugpjUU>o+m{w4_J9|-P2&Vֲ٧oX%]֎RaT3[~=*DejB„87ؘSxUz5Kh겒э,B)"OTYnP "$\}OBԾKl݄5XRe(Ac{W1̞kW(ttGlJcuR3ygdyxOGD϶}(&0\@Aa7eKڗ3ZL(,ٍJjȬ )=JvF2ܜfMXb- AuoUݿIGTju42 L!)ݍc#λzMxEQz`5< +@%N6/WI6'l1{B1Eij.ˊc["0s&!*%YD;?%ִs>&ӟS.g=ZNjCnZUo>*`'7Rg+F:Sɸ&L2ٌSP/q7F#m]ɊVA{j9󖔿՞it'ɡ\C,F3}կ:'-pQјݾm4v-VEQJe >u4sI)Q~y3Y [F S): iYLynP1% \W{[\:IU7O؋lӞ$kKx1~;vԨǨImE1ޞPr zbFQlMmY6L&E_y͗vXI=D2wd:ыTˊIjƦO)X*;+ tW[qVmn8a4W Z΢D<y];,zJzyӦTKW/Us:iaZj1׃鮔 (&Ȫp+35wʚMBVVOU[ɩ%dPZVoiT@_tKjWk!:l ^D{ncNiSS]F%.Y˫dCXe˒HiXL41ىSTDظncI߳ĨB+57Y>YFS$חiB˒YM/خ/&7U~6WOB0Fᘢ;nբܵZZD]מl-*Wl!X_<2j3Ȏ>Sa.NW*YٗTˆ([r U8הLi[Fz2elimNMo:NvΙ.lt.Y'Kܗ*SEN,=m^T8Ka1\]Av65OUdƗd97&* Ѯq#UBGz K W 'l$)e3,fv ZD빒n *՝ׁe+9J޵ ȸ,Tͼ']&t'ٴ&׫tvP*(Bka-W@/*Yeyj2Q1*>5[HsW+[d̴WjSEVeȗMUrhUmr"K6!kɚvҴjdN%Wkt-˅`[nb#V6\>Ȩ &!=.ԉҶ*2vL7[EkO/TcZfhUeeni¡R#C:r+%*~J3)a}nCPUv+2L9_@_FP2W&j@SszA,kp38NU%if 'Z-+@B/ajIrFʮD*qTFb ]UYd;X>Unx͎jYuXcمUNkwӟ%If(SۧG@JAkw*[-Tc,&~*d)kvKu~5 {a UunGȅK×$#LV~&6*h->`;vI5[@%z.L햏fM+䕓&KjjgON=yGL3)֒|no - *W6}ցp)ud;GxhE0Xr/I@ w1T K_$ vHwQPi.4d&$,+MeW]#مC*VtHZ@zVel#.:jrxG2$]let%ȫJD-5nE_ԩ6L3l,W=!EH\ՌsLЙ!M0N[yxzZ|w9i}qX u"DD)F 2l4iV@B6;'d)lYjG_ vU JQUc.#PHj:8Si׬kJX 3YD\fG49Ej }NʟoY`57eTJJ:]kdz,HE;Ke_HTpLFar ufaVkB 8MU }ڧ%ٕ{?>(\x3Vg&e.5M41nG$F |GZdYS'!n,QG$,ro/G@j+zQm\Fժ㟾gy!3eլ˔b@ ܨʿ)e=fH&Uu]%ui:9mn0_9U;>)RuA[v[,tYi6$~R⑌bW5R!_T _r$# ԗ,kwDxC+gZUʞJ|Uf.즯;d,U{`[{jk:(cz[\2;1U;-#DiaRXd~_GH4Oc[X_63t,t1{9buh"Ľ\( SY/F&z=Ŭ)5NuWyWo?3~}볫hSHҕ9_ͶV1ћo2?{AvJ`LUpG:l!^{֬CZ(3.^2a׀mxZ8nx$nZG)Wh΂} t"C-L~e3PmO$m.izBc#I+-펺ރ3߂3r(x} ./D*ՏeU^~D=*PfR) '3L3OT1EΉ7T+jUDRGMҭlXtn*\?G4vk$Zrt*hԗv[YCF ƭFYj1MG*s^IG}ڂvT 3(6ٺ6QV}4_+-C0ƳZM^٩b*Ӧ+\v,&\|b̢5YJ3ڋ[BF>YZ;<2m;f|!<7]zYwW8ui+1kDRLGz6׮Ct<Sg&ݒUM"-jSRV@n%Q[^޻т-hm@B#>U*PgD[MǤd: ?Z eXcBMĆJ5_ %g.̈J)Ը1e)w,MQ&.LվfPw9Qd'h}Gٞc-rՈ*\DFE)iO9%}&Ŗ^b-բ"{פJSUtJ DSUߗK)*JB犲lw,+YL5@k2ZX^GJWe545[ә3g]3ri _!%~jHӂe΂F]QeGJXZ;UPḁsNuy[r/Vs[HYR-p4|g ՌFiq[T,kKr*,Sûnrr C)MN:^w6z0fZ~bƘ8@vU]3k.i-Pxbl]x)Z:2H@?!*81;UC,ۍ|Ii&? _vIpj s`~o~A2ގuyHwìqŐJM;]Lrvk}s/lj5ilnDR"ݝ)~RZ ޕBVա|UuMp]r SJamgbxt/4,m}BnJvò &)x2O*+-q:M*'Y]i&YW^G )3MGmT+՜[D_تrx!GkQ&ӵ(5R[ ^AmY1V2^*]yo-*[Yo^BWbYx՛yӞI.PyҕTSD[)zr.Bni[p{Zhm9ۥZ_eRxo[W f/iͲjP3"Rˆon,5]l)MXkZ*{ooawN[M59(Rz;BtroCIyJf:Atjg~'TxG(x c\pْ,]'&&SP/()*-/JnmO'Su-MuwoP*mL)8[T Rkf%qfoRTW+Q/-yMӳ,̔jm*eA䚃J.2dpа%덧\ni8S$M^PͫvYǽ?5mi({E=mٱ+j|I\/SB^cEN·j[0]6K;Ẓ;vǰTL-4$Zu\6]שS|]VLL04RK>DK PŸ飔iԘijx6ߥ:['L 0ܪ{(VgduBA(JM]vFyREhZ36dA~@]Q&3#Vq Y`-}Pn"۹.Ť XϷ^̥/;˜R؜@ ft)앙vi0ۼ+֌vQ??cl X$J VM[]T.'Z#.lDu)V @uFC ެfK96J57ݕ8>]d}ʪY Lլi8RuQS"L Sc:}XkS/ v㲗>v/MWx5p-;]y&UP#K>IUG_EJ466ixٜՖ6Ot”Z}dճ&+CE~Z Z*lTSqF *\FtLx͂uTK)Lkɗb'4 Ns}6.F:?&RVO^Ipjm!ou[}ữ"eWDj49jHTo,'VZll-WOF_ݍ%S*0Igq4SI$'xRVIyxLoOfD=*BѾ)ɜE]y|r(0̒鮗 J׍)+V'hr[ժdH.ZeOIgb0=VkV;<̭> [#\ *m-&:kSu9x+m(cHtdYnh1sӐ16Tn)mKtG]']8|k| Ph:tjҊ㭃mHY!ŬVihBm+L@g)bo,b*\ZҫLz7tXI&Z/ĺ_ 5R2܎a\X8*(3~dVݗŸs E3?)Z(U -*wo47~rA6K fIp;q䩤^m 2e9Ge`C(0s黾%ހ[I{K֯X{ɪb{y{N (Nt}jb؆ ;Nv+XGe}ocQ}ztk,cVd /J׃1x GU[;Z:V'+9[R]zWʝm͓ͭ猖~s[e4nz#W܊6M&- ,2u>)^TZ\_eV鼒[a[^Y1hU͓D\dj\VkyZАeliʱ.5{xkOɻ 0ܺۯ[6)l؎"rC[ۊ}Kck ;Xc)D[{p;MƮwס~Ux 8;כYNd|5U|^=͎7sQ* q=[nM丬+[KOIl3[6ZVnOt2#;S2#}v7ANwƶZ5)iQ+]JL@6R3݇ m#5+|34c2޻*^YfeOVL bJɷpa=T(Rs[BfաZT&0] >3.r};5* DqW![O5~].fjtHq*|+Xf-{.+*>MPPk*5`5w52M 7 ܋_ZRǦ*eEK.QL7gv*½1*\yV,/Rf[&J\{kڶlc =BQ{{Yմejn(!?3IǾS$2V%o)A'ZPJE'lﶶB2Kܾ} \yz wòXN9ϙ궛*= 4ЅD5.Kg;R뗚#S$Xnd̗)\y?w[\`>l$9bƟNMbtLϖjP&nKfHf{jQݾC05Fיߌ7jy[w'S3Tn@9f.Dgn ۖRLwv' tv-!*1%$k /wԙ+js"r)f[G;r+ [e<&u80J;`*Ґ ,/9l WA0tKGu@I6yD TC,JZ|B"4G>M:MCC J4Ge/*I&~S9iUW=*Q _RPY~ :kD8F.㒝1CɤgcOPT yiSME kt{i*lNeL8v*])Cm)WJ3]BZy+x\}rnõb~}xW.]'ݕG$O7V"oa6Ueΐߡf1,W4.HΜkmn Wd0lXE|e&St S_Rb"1l.(u@s݅s9=auUMRPI -TjM[?)M_]+HǓsEXG߰NP1L*XXC1PSƞscfqA [FWlÆ;u7np;=oD J愵߲pjeĚ^FFv"$V{mv.9rqY7Hf^r =i0g-zr֒3tC&r8k`b7T^Q>Txs [j23!nڭ7\ΒR$M.|+q?݃%U O!vVX$RR8;DNkl9{)&H%&*4}\vXM* 7+̫ѣSb5l/\Iv:ޅ}]#W5_4 g-ǿ/_[Sb9gFgH#j0ȌS:ST*6nAf}ZF8ial`h%>Y>aŜi!ڦ1^:疳;¶<9$law YSa3Q7f ]8h_M)3Gm\-+F ëEwlZ)7T/ckLxs (Z毕.$aym-\I ^5j3u) aKH˴ڼ"&oCм,>uAƴ{2zG0XԎ9QfAlwYCN6Ͽ.X=?T}n^Av l*I#gc{ KkUǙ­zw+I-Mvju-&gns S[kֶ_V2UڴBQS)ѺT^̷~#3*5g5+eUק|M>""o5F*_"U>c&K6( 6u4ll͌̕纤Mn..QT+M:02ܾIa.Yò29䐃OLA!kt8QX=nƩֵ;z;[bTF 9cml,0>j̤ZVqpkmi\umk;6un)#3sR7:]lCͩa [RKn75ںZXnrhԡL 6Xg| ZlAq~o$I|&V)YYˉ{+ֆ\e^͋c #RMĉXEythZ3Ld47 ˭CE2<eՕ=TzzNO>.aqc )`ݦ+-B(n)OuaMF՝JHlOiLKJ}) $=,䩪doz?nijnwYfus/N<v!=d+ۥaYDոnNE\ՌOJcKjM#oCB[UXr h|a_h ^y JlmGN r3շP{P'vKR(}:LG~R9j4nK Կ $+3]O͸tT*7q =ٛ^Uid(;ZU[CY_YJLvj_TӶQMKNu8f*X!m1\ȌsI= P7Ƙ}riűՄn2S/vPlZxf,p8%gҒe1`R_܆}$a(̲ ᖖ -9*\Η605t1eQ,5qn!75D5;ty*6CUZgi(vYܬ2 YUf!ԞpTctb>OFb2SR"t=QQ>L-м-keW_U]QfBRoW*jHVg7ж1(yv+vheR7_[Xn'k\r={%뽪Ȋ|IīOKն-- _3źP+y[Ӵ2$ERYښ5d,wxܡ˵AĭS#o}ΦQ7>g%w_,&2_<>G.BU_TޟJ0uj:IKW:udN"B7dXkZ_N5tLQuptZm^\Iq*oBToJp 'dDRM*h uK/QYb*L k%%o{X Tx<ߌ-Dkvw0ȼZiO-zmhU[mRK[^n,y]ctn+%otV콨%>^A%hr!fCمv' ԥ$cOyP7=*5QA2e(%i…-((:K=^铔'[В*_%ELÜ)Cr),i5IHzwkRnϬ.'[ e卣 TpY&I'OH*m{*keB**7R*ڴS'YV4_'MW#Xݒ 0_ۗ,ĮE_KCͫdE bFNh&PV=Hjr)Vk])j;Yb8Y˹.,۸0U:"h$VKVMfQZ\ Jgluj\k0y+wI03S<*MmKcIJGVDO!)Tb) s:eϒ`bv&\.}*1s~Jm]:v{U 0;[b%9ӹ..-*9B "T[nl-Ю&.,mF㕎>m ZWa'n>hPZOԉo9s-~I,j<5/&4fU/Ie]ו WGpq~d:+#JzFөSpHpkN ZLh?}r$]4:Dau:| Wc#ͳtxz U3VNb0 ZYy)T,r~%IzE1ډQV !}"Px ,. B%9w%撈{Cb&J0jEn6Rr0oPk;-,P*)}V.M,=v5B{mdۯ6\ڈvVV2l%W3PcZ]M}!#ZժKY2= إjnp3,_YPED1Za9R΢s]USNNV`\te+5+SMh;{䫪ͣ+NRldmJء^U5 ?dswq+lZ%O#vPP5e=AZT1&kRF26Yaqڷ sM[ e'6ZmVЖSNQ5%򥽘qf|GXvoZ[Ujxt.a39Z߄*~~M #k(Oc;%?Ht8Rυτ9 NZ-ԛI6è蹿FצpSڠu鍊l!3ZITUɦ z< [HwZt5fr+ǽsԢvQ>N1Lw4DJ[;EV : %ƌfz,[ʅ\j{/))]8y),(17}M,y-*3)~pLc7- e(C7븷JcZ]n=^mAZԶ)s#ڊ` ,X4E:s6 9{qP*9JuQjQHIͶtlCc5[ âwV^ Ǵq}ϯͶRDwq󴷘6t0 ;P 4Y{fr˥X*MBȜ>G9G،'Re]en'a\#O0f st7nt.Y EMqp"kMeʈ8*:M,ȢCdW3n]fIV힖jȸΰ6l|';NO&縷xO:v6a YNY^]t/nͫ$-̛-d!; CJz5֊|]fF煓qsȒgkݵXvK@nz+W?j)Uݠ \DKϞV_-2TwZ]rK_̸wAϥokwpk{Y+:?bd8oPG1d]UYZdΙeku+gbA3^Xe'\!䓷7FW֬k1k-S }9%QNf5Ǩ[|J z N;Qrm`sؔU9stawMvWAn3dlٟc[愛4 hiX r%[q6 oݽ-GkˑSL»ɻkY GqqkPKУ3X'mTۭB8-~(s ya Ui\;4)W{m>-U^f-KM;&CEՎ X9+5"eUvMq1OfyޱՄaYB+Y:9r'vYtYOMyȩ76;V[Fl(V/\^ [dt+E5(ߍV_r"u<'֚`;(&78LDӰrv@823"O°ֆmxl}Kd1eE[BlitE]3]{ł=rp=0gAna&Ng_F lעl\Oqs5{Ң%KSv뮃R%Fb'KT11[6r<RbmL6Ẁ#cf|VVu0hnsA[&Fnqn,u%H-m\8 lquɺ5eZpWQm.2yXtT2t7 _骉2.ouE rLHĸ00)^b4Tu%*]deZf.,{ܒ3k}ya钯rmp6&;6y'mZ@Us)$z]NL+wjRJ'q>1= a2:S켵js:5pƿ<yIm45ָ*ϧ4<)ףNn_[mOo[4{FL}Lb,u4z1ale-߮DR9/'+L3$/mq+&y|-U37chq0&~y2X\0 #͆O'HYM(V[eOKd(Pۤw Tyv[26 \K|5iVL-QW>N6y$it(@6ǕOƝvBFn>y9@pmmP5D\wQ6\?~z69>쑭iO/b{8ɓ]BGO״ޜ++Tt0lڴG9n,.7jp/I3=;V31kJƈ\yjm9w4ogӊ^ gem}g.ra'm9u3.Xu>((|"`=PVbAe 1~ȅJ ޹#,47vٻ;kk8fVi7[gE,W!{ꑬM杕} &ՙTJA[u \䩵`kDaPv$RsiZaK6;%K|XbjCNk-/nYn0gfwϲ^g, w8FӌVlg1]*0]dB 9e4 #-l6w;if;#Fk{ zPsEF-8_#}}ԗx, eSZUl勶0}n_F"Qsgq m72c7r*.ӡ-{j% ߷Ѭ!#`:nu[6[Xl w)̈́nurlR{;KvD=8G; *~슃OkEԍ(FN(毋[KIggn2bf z/-uq ZG)[^ԥXJb1q&lwV"~J&zL[93M%PZXSǥjax73I7DۜL*ۅe-#]=1[ͣ8Mϖ>Ys*&kZwdZf.Gp9cw\%3l ,5u-?֯r}]%9QT5uFE(bm/$Lyq'NV`9d4Nҝ:4.̈̃|e˵oLݥF5##B,]WWy.qTDW 7o;pkۜg `I_D^6r6ǯc=1EnK͌1;sj״*y[ }Y>W-AXrZgeqQ.(^ ϖ؈Ym:ⴈ.Xw5]9Zu{-nz-]Z{_j91ر5pA8_f\w+Rx,UhõEu|\ҘꪺkP~SF '26քVݹe=[wez'fZuO:hW4T-V2ÉbŶEƔRyŗ׀6U-udN:<ɽ^g}BKƃZGÔt{k!OʋentnvƲ"M;rcZUO#F .0w9478Zfo]#=۾.n_Da+->Ag:;/j*u^~ߞ@vJ6z}"4^lZf4N wXpVj.-˱gΗy vK֮ra+zE-5+Ry< c߮l;Sqs7m!Y8rK=7%5` LϛfMswY,s~Z4ڪj9s`_N[" ge= ϡUb͵ΒK=&9)+ly¸r74ZXg$Y` C46R+\ֵW6}FLtc.?}"$ѯ1[rVښ%$PC͇mb(w6PN46:VKk$V7f5}&K@o96p_]dxSg푾92GM/i\U w2f}~P\(ܭ8'?&*/1\uT/s3eo$ΎbzإO'Z|7[,o:xY`~)xHs%/"w&mu*i8IM ߠyp-Xd@ldE/{b"l{zsA<fkwBm<Y)(W8fy{Zg>v-VLPƷ׸v|կ|UX\s`bV^M3 X&ūMNͼr@֤L4x"/b '^3r:Si~ZBnzƞD#|)1!+6\8OƋiYZ&nOsKmUuUkE?i4e]Jy({<9rw# S*ʜ8avO -Mo,xd3=p`'=ndXmw^=kNr"/,A˲NyvSfCk>V>9揲P_3qd.VPnژm Կt+WR2$̈p"~꜌;;&֐noc ۛmLn@KX}*|d᯦q+RY3z7mӨ)-U`5pgIygsOn-ힴeNnۓa m$7":>> Z^U hQl&9}o2LIwm UY퀏:+?v¬jhJvZV30'G=ny‘ݞq(Q5ثU-7 H{ '1gt]<;+qv5jV3x{ X?^N3D00} X%y/[P?ATF=yX{H"ڴ^n;C;G9铩T[صW+O&c̣bSԝeQ\n-u.z, q'b@S$xB]羚I\xuW/^NX'׵_]uBDT͔w8ѾbJ}ƫn9ws-Mv}n,wɭk= AC_r.0L{h,_3ץӊuxqPЈ0HDޤկ]p6s}l/+iwzMaVޚ }ڛ`}uքLAɈpgwhÈSS>s k3Zbї7ʍ;zپreٯYmvj[͙۟7];.aw A}>s9SMgZMۊt!M~w;aUz|g]wQ@anb$O+=+ͦ62W=.{jCyŘǧ7/> ;1a] ,5$Z}w6r55M\$jzVҩI[<+kYwXat>sL"ݫjWqdqvhUROأ%KF?mhr72;7K6=a#ܜ1_n]ZLv$EN\vjPJ%ZUEV iKǽo{L{_Yj70d:ݗ4=s.e3I.2.ЦhiH4Ɋ-Tml&ۺ[vPN*_A8+}-,lmcgʘyH ImoMMC9#G5Ofj]7:袧ggzf'[j33䆙}?=a=) cǐ%:6-xv6C[_&PتMQ_&ot9}[k8>Lw*1^9-[[_mHRcÏ < =̵~d2kCzj'}_\܉[_8Lݸ؏S|޻byO~${J[̶vid|d qZLC\Y{fܱ!l }Km0Sv-mS#$kmxxW s`6[S/qj1&)[uⷤōFSL4oؗq&הS]snVrZ;cXطlm< .qj椹2Ɯ%xۋL9uvvm'I-=\ZT.oW ǧENy=v4SgI`1~"zSo7fRSt =m4kl{jMk62RKdMy΂jpZrofR]pi|6hS"rzꬬLpb5=gZ:_C\@o~rY_71|^n9ی11AGw Y|'E-\-"k^ŞZ*ߓ0LyplKSKŒ.R״ni#iKl ivK>Jl=+D`̬35.5ƩQ-k} uW.vlضR#ZoCu1W+Q59,=db^lic_S^ixY[m;Vjy1M1<&p.??\Rnv^zd=ChL9/EKo5Kz,9AьkU罡4r('*nuյ!X]ުرiASg>e)ui c3nw*o5ц/W\]9=WԢJWw0:bv-mDHy_6dlR@5騉Zuk\Ctc:[f:ɃWK|1a7QkoڑGG3.ܐ)9M [AѴoŃ=~My:qi2[֠[O ٌΥZo?r7 U^aXr/7y{/NzS1NC\ Ʌ*?֖~-2ma*dh͛̏!މ>~P{ֳBZee. -faBϖ0H;bɷԧ\6rjcΎ3kD,M{rhQo6OzNp`Ӫ,-KۅJN?VA{k%Z,`vۣ60{T`iCȚZ*qkaC^yZqlp7thݧٙvT|+8 9fm7Uʫ&op0Y>G}a1m xù#gMTШ$ mk=Ê8V=3>@(bWs:se|*T|ͩcuЎik^Xn%~'K-p^lG`ae9*{+s y!طam|),&SP?ܹ(t۠fٙ^ }(w(|3Ӫ6;S; /-f)=)kʼjK Yֈk]8kU7iFŋb6ͮVV~+kExhIw$8}-Uxiж,;뿰v0WvWwy5Kśǣy48{_O1IXeCUҀ1C̏u7IylfPwp5k_76l~ԏ9 MXeY>;S{.Baǜ ^ ݝ) Adh֞6[f'f sǷX6ز{͵˲}3sj'gD 5e[g-'}{N$6 5z^kܳF7&3ӥNPB'>G5X&CGJ-:.7wмNN9gٽpi̕e6Nb+3ZN7:pkdE*hfk"I.|ֹb#x=[q: _X7eܷ٪.G%=M랴kU YN^X"lfifDhľ"s_zs'cv?ߴMX~rkp)I**#cHu{d{菜ȽviSuŸ9vό'o%M=GswЋUCIuX\]i\u[ M Rk{%8#VQ{ah*>KUb8#v9q4 ;j{}t4-}9ޟ=ɞܯ S|ec)YBjc]t՜~r⾢dw-74qa巖˧26ތKel>IZ6)j CvM cq:8ZwsN_ɻSh_0e<˘ÔsK"ݜ*Ƹ4pL|5x vYB7VsП# ii%AϵUʜQؕ.>6(ׁE^L%^st&8Y@pU[To;kha_h`5#wiӍi=̥nb=Ӫ~7o—[Sqp ij7zzZVW 1\bjۛwTU^Ec?-5JfHڣGԣ$L\9Jr'[ZaG\)öwRJz;FkaCZaN&ȓ'V]a&i`9{+\cV{c;;jp=?4WXd]>gPD 6cG=fu&{:i9qŘ? vG7'<ǨUc6[mޟ.͍.Z>dž12IY,5֋-||,:Yw '.Կ v;hE0%O=O0oѷJo2엏6IWLZS-oҨBUW=Xs93fRIJ}h>Imc;\\AYnMnl5 =&KcAg""SoN,zų|T87v}.䘤+Qu&J`YFR9'rbiܕs3K[D-f{iKMTGx1WG.tϟ3⾵w5_B,tjә4.k]ztJaj&+P{ &#oxخmbU?Q睑݌c͵Į`80^aZTj`'I E;G?xo-8_5{{Ԯr4=K2=Jmw\Wa-wV\u~4]5QرFPؽ2)r`>؜F#}ˊ֨I]1^}\"v~,k`0NDž,Sʪq\?@{.j8KUDt>j|hڭyz>)|owZuWc0։;Z[7X+<\:녖e\{j?WfbۺvWh\3e Iw. m9]jZ ek%pkڃ-65p(ۙF>a#*u[}fh/kN s0-l7ym,J͡ބkopC$Z ajl^f!5%]#E5rajWhM-^ϩ12oV$2ٞ9|roʵU<5~XG-6S֜ [Le!zC˳C x?&.ӣ6s>/^KК5g*f}MŹ=XԠl5 ̻IChc VRٸ./omk:Ut؞c-jeʅ`ž&QgOKoo`uh׵F7)aH@f̩%7)$twD*Z]?krKai/-P;X\We?38nFy]o8P}XCl5^?~?'V=S1f:gzMۀf;=11g/9[GL;au?[3YBK{^ օWyskz4viɈn[Y\K81Zu2kԔXzn.v—0בֿjcTԛSk͂~`Eos+G5}! 8^zdɩn/N14Az^ AW[Uw85"7A1V_ φ֗{cy F 4J͹G!~J笲ݾ`9[ZSҵ>e-h3(/nOՙF 4រi[huo\䫰>i֢ku mnwdw;.RMfszЀiwZl俵BwPB.FÁGժkeY33ڋJs9kRe^0V`w3'$scbԡX[oXf̭Vʜ8C1\퀡diZ_$IN˜]G˰9tީKֺ{xkDkh-6u r` W ,9SdHwĻm3+n ښ;}l\t[͚,I] ƩJ~-Tr /D:Vi.m &9hzOWk\Kgbqk':v%E;{ '[1 ;b!ַ㙶 ̑ǗͫneAOWٻ#ֽ_<-X<;J AZfoAlϻ|6W-Ќ<k*bF}5nK\#ת͈F[96oNV/b|\w\"e)C.|V;@?YFa(?Z =ƶWzGƒ~[&و[urtaOKAI4^H\pK= ?٠iVjƶT~\vȷOۥk<^gϷ8U1M݊Z.޾O`?f}б+jطw20\0tRbuyվK:Cճ[eqaȖ:)j ߉n[ :]=Vʼ1Xt=-ș3rVK{'Kɺ<^`Mvʧ]bǫ M(*z.0ax038ŦvK(ńT*]Zg!ejkӭ.dEMCIZ:a־)h ޷Yk]1,e_NMP[%n&fآ㨭N"͘5-W\ԕڨ|mu#`ɻ!.M3V+SbYF #TA4&">/.saU!/ra|:{/ fvTfSw~9? <4"Lc0.Z^gi=VbϸA|nԨ9&WQcI#Pv2|S+ڎ{֨rg|Tohy`xj}&GD f1kӉ0Ffς2drjyErw3݄g)9 Ƙs"Q-2 _0\_8C `]vhy^/aFPYML3{AiPgSNþSlM03XݓBҹ*c%z6* >7-SLfLxڅQ<fǀF@ujeWKPʥ&d=Pg*+Wyeo,76jb~1h - |+GS~8XD퉐*ѭUU@K/Ql7V糷1c&#ogi׊ /OuEE54AkhrRbܲ)բFa5!T>{Z[v^$卦E] 4zδȼgc:V&/ڀc -`y8B0gZ]Rp_Z OP[Z#fٚ,]5'pr|Z;.joi?wP Z=Sޤd#}Tob٦cjZu|ץOZƥ[KkYWR8X7d15Rs[W ZhkmBE3%߽KXWi窿LCvO]Ӣ>\p~1]r7kílA#6)*UJ>fJD~G5)6qo .Xo$KzM2& oDxg-dz:,w;\rY=Шծn=7>Qc%w*ÓP cLrbr;Ac>PnTJ2OŅMeWkJ]Nh:^̦Yc; w|*M%e9{:L-&#] obkȺ:F[*oGOm\(wc٦[hˇ j3 @WF_ rH۴~ӂ$3&kdg,]7O6<اjmv0 RKTc+7SP%V^HqM돶֫gX@[Yڵ.Z9rG- |lYu-AY#ˍFrY?]j)瘲nm5,.W|r:W/iX:sCJM%G|MXMR-o@oS.KZw*n[^*YXϥ WZ))}R.Un¨1ݤ[{=i}BL7p6%gRXԯ)VnQ(ס`]>]쭝VH#0-An,b{442\܏J[D7oESO)Q mmqg6Y1\zf`TDh>˄uMj~~jȅ6ДLn\+\Kֶ:  bbmHqK0a $SafUh쮷6V&\")FG-o!𞂍TɮaypMgn^[Z_4qR ]Wlj.VXodσnYfT.jtL I䁇ܙu[Lq^k-<)M7~'Uh3;t}A ^j<6(Mz#Vʬ^ 7R&Yc<ѽaWd55`wה[&ZT!V$ŗv rsK`STp{nRwfNqCj_`UQϓonntW_#=F ~EG9YQbʘ)l,Ki'ne"MdaKZk ;TJ“{M N^ԷV\U!XnE8\ȥ1vBڱ]6El^=~W-kAxٍS.nk2txˊStUk3f&!+HÕGz_j-L%d$jI%f&ׁv OHmPp)" .yѬneQO7攳q: S*^U.\b[kQMY2;(z R]g͘XD ![jUԹfd%ٟȍ21ra mzT-֊ V!ճ9M[%Z=X&_# q^tI:2&\(sH9}GW뚕d y6iXT@om-RN &*3pcJb݆"٠: GNs '( \nb.1ju%z5ԭ!Q_L^6'iUkcNsl K*{uiyTTekwd+7twtW/wɦݪh5$r"a0es1D,G{ZtVקXM`3}iHzl .₽U풬Fo+\-͐ЦQH3L#zⶔSd-H[{'DIi<EBIz[d*1[^oL5Ac 5f~)c'fS0κzYDBqrr'% ufd*v 5+sK]-;R L]d6Y=*Ou:vQV-X@)<ƩCFR/1˺ڡI S N us"0akQ,_ۂ ݑC ҹ+lF&CugR:=A K9xغ,bJꑴA GeF4c*Yur2yh׃lq @XE]MhdqS/ EVrt>hMm^`]UX5,`V}3Axp9ZY֒h$`HJNOs`t0S&zTb?y[Qcc?pr|,˵5yQo~ P^82D|DT4$ [H1LykE^$Xn I*C8y"/fpjK:aE&J(>J|vUjZ05e3ڑues* # )tI ڽ. \x*ŶPhub|*4#6:n܄N)P a+p y@f_[e49k8dlSZ28]yLkeruEtt) :}Ԯ9MB3IԁUER)gP%\ ?6C(/Qft*-JJJBM:,H&DxֱbYNJ? dlhwecDRu7*um%>Qk("L)rmI!Zky I Z$(Xu7I̅N g!J4/_$\d q\cdS, l`Htn/DͶ04ilzxUj겞D4-e7)J}do)gИnG2IMLߗJ|Q7KFqPF~om0 *76+MN>M^ڜ%5~>5~:eLY{R5s0)7̥nj1 Brtf8 =jfL+`L1M\y!r10¿5gȐvfe$Jԕ0RUv'r1Q$d7Tΰv&kmaLrh)cc0=ID^S鲧t4VyIw0vJߥ3 kے8 b~%i:S[:xOԟ(%xT#gH\*QySurȻBOfpǎo&0  7q&L &dk-qޞ3>y^J1VQ5RDHI:6͛5AHTfNYR r-fL"CipֻW89+90c*b;C4n2[)RʔrUY,}L l@i(ಶ;6{|ؚ2a)2ڒRG2Ϻ#p> (pc>iԊrpyC?oI0'b9 aT܀9ؕ$ F9? g/ML1VSG(KT3:w"qe"1 ECҫ۳ySGK"T;,b'ڹ|*O@p&7\$/!Wt!PjK3kB  ?s: ji􏻰߅ʸ0/ȡ.ƀHoBSXi~fs&_8j䟯bM3KBHK?9'M\v:50j4:Ƣeޒhk/dhJ< sKC}}Yb=xw=h2̦B3RŬ ?(`?myMe >9uDk3Igx%||eX!ȕ/BJx^^΄J̄_Rs=[u/;r|X'C))65bJԜ)+K=SI\ucy,(W ='c+RXpDk1[M$ $.; 2,RTZy-YKQfr?RD{x0R$`dsP|s]n~TiҬ!rxQֱHhc\Szn\J~Ҙyt0PI[.&7nՃ" G@q ?Ot-~X |c7f-GC'0w?6Bg̣{/pVU,4ޣ8s;#D0Q [ݡ"r=*!ޖ=QtUy8 mj;wG*c/`;z^ v19 *x,4u:|f)4,ZJMX! Gvu1Naߙ]b:)܁316mBLU0INSD2d@@@@@snare1.wavWAVE?dsnare1.wav^a?PA!%2 IJ pn0 0H A((DF%(a9pfP( BP"L $0 %P"QAɠdPF%b q$a0 A(C#lP&aI(adb F!L " C#aJPAP, X2A8#aP<5 熧0 !%28*@, AP,hpjB(AP221 J#(O AP, P, e@,(2085EPBY lPĒѹP, JBD P&Q0'O 0sb C(e@,ppNP" 0Bġ D $Ò0 B885" lP2<1, !?m_û<8 #mf<ɹTaݥ(4 $ɹeV woT˒<Ԓlw>e=,;̽`9\w)\;ʩw u3,!*6S= h66'5>&k̐5.Sɋ!1wP(f ⤦jc˙_@kǂYy_5-cN~6s74V V[ok=~N.imlbff;z\{o')lpoX\y`[ND]hHO" O, +anLIHvp\lt6jRkt+SR;v{b{z\O.:_ xu F=!#7yfhNWuj9qdjzhW$4f/JgNJlulk-UmWۭJ1 U׵cMۘDb \/0q+[ւ5H֣n[7#ɋ#]5$oEtfC{j[+kֹNw7N͏Cv$Yw^־&"s*]tO=N,siD)ǿ!+lS+S'Ka6~EԐljsKWC %ԥ<#W/ܒvܦcNֲs=-X /nDjw;P/~_i }FaމgRoT'"gN=p7%I?uM)VM[SQ@lwg_׾q31=Lcƍz1oiN3'iֹ3vGxMSaH۩N:pe+==kFs=z8VaP,]Jz`{ۚ#+՗]skc7ݾn -9uEj<,:{sen FQҮ\5{+l9=AʕK &-^KM o>F\w f\6ܜI2WU4=4ufE6l&?H}=c9_ڂk_֍ia0WZ)G|8#__ɂLv~_jF8Oڴլi[€[-Һ+%LaDZe5.@C';y j3r:Xp*&ku+|^kcZDm@C,pJ{Uk=rI.;kiM)'joSyX?e:j7^ c}haxq[<]L\]z >0\Nc0tlBѣb;_ WW =A5A\ʥ{sCawvmz9(kmToY"tڷS6xwA-*z83%as25%BaG5更Zty_} >՗pY~ [M/zS>a/vwBt!z@񝆭0/rrVۅ꧿RX 7NE[d칽޺y-[SлE< k\8{5}*~ԙF lht2s){J^0[ /38w|*39{bXX8!_kv׎ۣ&t3`uV=f΍sAѼVQv%'^cz4kԁb(G ƼQf`qTz EqtxaxۣvXiju,Z [K폢[#|ViYjojk jt;{Kfa='EW`.O[@R'硥DP;,7^=oܲ){,x%bDe74vmQۄLFJ[WwX۩Iu&g-dΠ\g˥5aJVPԗiBtݸ0 lϗt{b젍K(s0%("gb!%.X/>;g"w,+ wtwѻXGů ,z6=3^xX ƺ;jXٸ_jf|+ii"NuhGt~kdzw63ɶ6-\[PK>y]&:T2PRҐckvq 3!m]σMqݡ{EF}.g| ţm&Sֵ۫Dvkn㋍roN;znO &(JͶycgǡ'p{O Ԙܝ8p0nr+NE͹oy)oC1dsF_lLwrRlݏ-֪H^Z_ulRς|}@l׫.'lT<)[̽2omlUS/ ؊j2w_,Vy;m>2Ug!f̞yc VlmY;^kĵ׎XV3aFPÇ: 5=Cy}[Tw} 2ǥ>ݔ[/l?xt_ϛ rXopO>9fTkBD{k|OȲd؃\'$ͽ5uF kls#5]Z1smḛ}(X+q/:'7^ |ZDᢶĕ{U{-grj^!ypbcz:-dMr4`N=f{w̒˔ޥTU=9TQ٩mƒն_3FתVߝi$w\ĐxqùxUXrqIyg0$ =ǂCNhvf5 ..vc8/G;: 85ȑEƭ=Pe Z ﯊ Β$7wx`&MQ]ev7 ݿ/ea%D޻le]/!of2ʠ%LObHR-gWk|mw]1lq Ewd7rw'잭sVS;|xi]gm]TuvS±K_*X+Z˅wuՒW>l?v.gNw%cM ʍ.Gn= em'^K,bږZbB"-%Edž{*٧uhd΃TS֬<1r[bmcABۻ6Zdn5m{lbn[ezU+kgR6aʟJGю-+לW\k*c}<`6ʸAx孪y1\Er !Wy8,X7mYR8R*^cR*ϯ.^\s .c*wG'j/;P#ff]1LRYr&hf!˱S˱l{ehzEݏN ?+n+ڦͅDT.ڕf▭\wܩ>kv&:WL!}=BѷѝMu v"\X,z,+;dj*gIvE *]1]v\:k[UKL}}Qy^mY(Wmͪ"_-vؽ*-<QޡU:ێis<O,n M4HNv ߑMgMb!3M.˵ ,;cU:@&]̥X,ߋq`heըr:h'Xs[F_0պ& !~5'?sǚ#T*]4+M6)TDõE~ݚo.q}a)>:vj3Tk PX*&5?[WJ]+;]x^ EKmD1Tya-4zɳH"]t`6Ɉ3'᫵%w)YԲ!]4VC5nnX3ZL<Ỳuժ#C[>JY. m N7,6oX:?φ-1k^/_g5=[Fhg:2Fvvem5^NSUᖟmY~3{izᶔHŁ_C,GeF HͭyLH1Rcd5k绔93GNh%C̆;Sosl1[T$BMUds*{m0.s^߱MqC1#^Idܽж $4/)..#\YWXjafz RΗ%-)kkKqaC/Sc}ÈF)ceܺ&k./=vQ6ð=DA1M~׍t9]W#(aHn?Nds {iwdM9Vxn(-5[hrӡ;"F;TL57^m5UFvMKi.!E]ZZnErNsq5H4Lӡ,=JކSs8y2_tg!աB5+} +W/*<{Sq{6,3{[4n_ *9VrD0esh1D;\9ahk;mPBS(5m |lc$|CML6!6y՞n<v7^nGQ/T SraLAhi,Ϛ^Kv5\ScgLZj̰RԌˀ+-Lb__1YY&ov+X1=%:73XoǥȭM -9Zek y(-eßKUA9b Js0tg&oպE*s-([W(Yj}Zo&r:mMT +Fm̱Ō(9mޤsn&:typcU2ң(UdUؒ0뢨&j6_J7:g_ .>ȶj.W'X@fs DҶ7ɛA n$wXZ6Q9 /1@ *g6ڇ tP՛׭̨hƌNJfPy$Ua]nJ씵-QnhXnhypa"6<}jG cw~t+|AveXdEVUX97  pZFfMC;Ef]ĎN*ImV1 -+jS%ˁL{d,89KqjwW 4^mu7$>06_*rB -ZW]b~GDWZ֊-g8`:‡ѠTr!e C N /L*Yl|8P:w6h Q@|J3&`rw:8ֱL/9a&63UϞP;@.QKlvyVfV-|< ` [Ʌmͥjg&(!N)MRBٗƏDxgzl`h.Pg.9o[˧Xb\zBtI~7 ľwy B5#S.m|b/%3I\ _pSm.*49]-gTj}8eG6pKftڈ1-Mbjv>Z)Azdmխ (7R4}]t'lnRm].TɻY_U*^0c\H*vgZM'W9pqYd| MdkcLTIpk^ٶvwT3#7VU?s mR߃s KROކB dtYrjZ$bL@ *5|7Zd`H7ӟ, /2o4g^J{K;tz_{X)߽=HUţ-}eũF74礫a!b`^l' ĘJ.nc̺߳5CRӸ1q0Kf!\()nzTS[l %.ny>UC˷W,y4[H2~0)Ӱi*R #SS_j6Jre9Zglv4ܕm!]P^u)|9t3csnߖN*a$\<Q' RMYnM[ƒ6# %)[Mtgl?Uړ]Ľ}nYMj% .Z-%j-?յZ;/f)JxYz:ZTӗ1q-)@SaԵP zW*j9E)6掖R#ip#*bf*"^͙mW-jVTڊdZlL{ۺ& ^DXouJqI¯ݺUM/%r&.UަST277c~GQ{}[U[Nq1ꆸ)zcl,k8dfz\q/R Ԣi*ali9"1~+}k<kLW,g[jehYjek:Eq\u_u9L swz/pwAҺmF}*^g rqK> ]⎓GWoSb"Nbd3"ЕwVb涔p]EgK&H]FsV=U׻|i!C[?d FXG#D=k>[BwjgҚ軔ЊBL>WniY2 ~Di5?]]ޱJȽlmyqGԭx.ԈhJxKɕm$5%3})n]i>U&- wRr\. & F<ESKyؽP>xNTM4'58bnlC-*> i]e5-jUgj[rZPѝjGR]S/[ Nk6)>bw,fnoYX>')wmX5Y)nW듻QǿTv˟]VԖԲ򕥒T飖 Ūm@ѹ2hgԄ Ͷ-od'XFZe)T3#AhikvtvwUHm247,pRj.#o֖٩\ruQbt9%ɹ~Axyr]O7.CŪʥ7SL=.Q?s+)%LEef 8seA3Ӿat.=3Z0@zD풰Z?k9$'P9K3mW vs2ka3R&4'XOYAŖѩI+X_Rds*d2K{_^!+Yд>б[ƣ`NuwTJ6 E(sGM"n--*f^7~kU; TOb%}iK~RJThjԧ t-%0f S;m}RQyr' UQfq$=Gt#}`FI$J9ov+԰;>y4a՝m)T6q My/CH>1}IsWq)0"%o{݃}4nru(NH+íw I3)mMPɪ;F]-p]Uq^C/?'Ujn!i"W_ET:pRH&U )ܳ& LM;cuIHُQԩvǹiVVDN= n D߇M#E`VIUEi0t0N"F@Al->dlgi*Ж) L, K]F!SX2[ʑT]wr`IO08pN/VY!aeH "%PgӉ<=)M9װfV=ѡEZ7)5/F_-kti [⁤VY`ԛy G>ԩ?2K%~-mqS*X3<ߙ;) b4D>sߌ|WI#V:`|FI8[J.R{MY6hP?L`Ǚ^bRJ yD$IՋ1Xߡqbze"w:s} d&Gh~,k+a]j%ԌPgΒ&ڷeG&ǙA6.,i0Ԙ!]a3Y@:h$0H빝L%3ZǼSmLBz%{|AߚQ^Au)9cLUgqʏ9(n/gLvALe*ɨ*2ҡ%Zҙ~kTԐIȓȊWYҌPٱSF#Tj2OW&գ'KVX#$QE>s"Q>&qXғ F-xzA}&G{hl<ސ#)"aV#תB0^ҋ.3<ܑ#oCeV=4Ps?e.qzJK&i܆"v )o` #G9N>̎pS"z5;;pjt. d6/H[Qppehs%c:9Nc j]`+L\Z|U'e 5oflTŨMm5}7[`Z/JD2zhI:Q WAefuIgMqY9V Ig2$cK;Y[u,lti92/"%D X cJ{sg>L*9]pv̦s8HGWt X'mF<|ETqQ$N9PjPo2)AyKи.Ya3zwޠKSjgq8̡tg:G/MHr>wyU w2@EDohi65b?s{:<Ԉ47:9/"CA),{8c䚇Y%}*I3bQh~r&ϤrteUNq);>A.*ASz엔$H;8uc#h[wk앝yO;PHѐH"wp9BDQEc, J$A#v|R~:m,i_U!I饠T'&y71.Q^_.qTښ4g !}+s`=eem)a&>8TWJ{إxF=Ĩ1IH~نAS\c8yE9-3<+WBx u4u !2O%}da ~xMװRN/.E7wF\*P2j ,RfC?=5.[Rl+L$ЄT\%5etX^a. ɢẼGb!ߍMO/Ib6SR%3Kzad, b58NC&XU1%t!7qi V3em7b,c#6eJȞ,R 8r/H+C11 I<-qgZ8C F5[|f58^,ѿ 8EsءdCҳAzq8y3vKN=Ybdo !>ՙ欒P.2\f ACflAv1Zǎ9qDDqSE<ƻ SJ|vgH)_P,74lK2!>zuw֒=e4͠dPO7$׆{&9یp(v:pZM|gG(i\xc=} h!n ;4X5(\We6k,|t+ ϰOA鈏 .yFErCFhD -7}]`?_H~7f{BSa=gOp`=3dT,[;śbċ?KytnN!<ѴZhXRR-1ygPDjpCJ>ve_J>\=m{:X^6`m`=ppK6:;Zp)"eC^9"6o>g|6(:;Y" $o a-LŌPd٧m?j6xȘˠ(&씏Ym$=!;)j[(CG~)9kJo3]H*h|\b+MLh)scfN.$Z,ɲ  V^6uC(Ԉ7EΘݐ6ܩ_m*28tnk*j2\gtF-wQ`qҩ+TcGc8)ܧ[mX9Aw)ژ 2 kЫI$N5hCn 4n0͡]b!SuQmue'>jk03ֳ,\α!>\1zprE%P.^*$NVSHE)ۊAZCV(Rq~ 3C$xak7W %ZsXPzxp1-yss;!PAJtCn ԋ0 BF b"}EGoзvfݡI@ߩ^a)I xG_M1ڼ.zS;:[[.ThB ޛX-DLP`?#Xī: Ic,ڬc웡B䍊wN1+)*P+Hj >ي.阕½˖c'{v<2Yqڂ< 'k76gZ(̙rjS,(D?{AIz5U݈ij-zL\ɞ9^$}5]ҁZ*4{ԈVv%p9FzevZ*z'hP%+rHPH2ӹl ew7MzHεK ^^'n5 LxqZ˰&)J4L{gV3.4RGi~j9ZVglS5nB'x55(|ؔ%Z_fFzTL>g/ OgT1G-G}ֆ2WtWUtmƵ-kƲ'ky5ʈB;׬V(}%Tkdƒ'hYx:Nf`u5DvƥBͨ:Q ;ӵUEƥsuBw&vsOTUٵu_ㅘenp8:IT.:OVgzdܞ1 .f#q漮rR,-r_]՘vIvaVhVQ~gfEZZڧ:sNo=nUM2Nx$kfk.S-ϐNE9GCZ°v`F3hNU٣ jtHj4G-0**"mf=O%Ek˜AZMV4 78ElD\ l7jn$˶ Iǜ"ZxMeFT(_DՑD`eigș X 4 %ZDžOm .RHfLjs0NxD({|u6#^xiŴ ^Ғ*LP2>Ge( Ԅu\~%dm5Ezbt#XGbzZT#C+&;%t1W8Hmp\6<3N2++H3ө(5jM 0c@Zh; …5IjD[9k+L*T~\KeFtJQ-EK|=B(. 73ma$)ajtJhuR9*QB:eV7\$D$8:Ne,DT"#VE(WS2ʦ%..J%R1c4T(= 4Q)IIU`Z)4= 2jlZ‚k*wF&9Ge=IuY8IU($dB W.ٹ:$]yZ39sV$+'Tٮa5UIjʕ #j SWS >Qhqztȓ@躦HR3>ZdM]ji ҉OD$tȂ tZ2auŒmATBYᵄ3XF'K-*rnBHV7L\6A|4Erxf\( '+(sZ5>UY!=h=$ XMT`XT2:JAdЛ =(W  K^p !yH &HMV_&)d"z‘xjn,vpQ*O0H0F,3!Ѫʜ[JHWW(zfʕ OAeEBz+F( yHASBhR+pb,qn4mhɄ8 :DɒAXhe N4";3NvbjPH*錏NJf!QɹQZ2XL8<3sB2Zx"&ZfT8Bg&R0$KieQhu$SFS¹R+#887GP(1HZHax,UB ' 4,S,pF2G0 KLmEWN ,7N.ADHpfJLQQe &(FtQ’ڊD )2:E ) 915<:1<7Gpޠ$53D)0Gpp.UFaX q4C6+dq%!,%$;BzpTF.҃T!I0).Ba(!%)qa(  Pd2! ύJB( Je!lP2 0 FeB٠L( Gg# ( FL C8GB @4:%CX&BS0 sB@A4(B,FaP2<5<' %SBBP6ɆeόO ѩ)ʄa$0˄0 sexfXġlP&Eb X"@2* @F!BS,F%pP CH,2!@A!Bh(Bܠ,P2Eb(X ebC( %H #a$2!FPxj0F%DQ(GH !2q%!B(28%Q(0(`P xJB(@! a( pj\F@(0G(!`Pa S2Bq@(A$C   AC0! ʀHFe(Jљa(L Q 0!9%N ppN881(N Gg'F#D ( %SP&ʀB!(l0#BI( A( pL Q87 %0P&  Q07* s! KB`07 P6( @&Q%(JePBhtN "aBdtj0B"1BQIP6<39q$E2ppjxN %Ba OF@8Cr.2q$Q(!)#( CAX" #a00 # 2aBYJX"0 A(#0LmF! A8 2 %B hP2*02!JAIe!B΄щ( pn00Ke! sp8B(0υ`tBe!%0 焃8(L0AdpnT&"!ρPFBI(A87.BX& Q$%`00Q( %@, #1A!(C(P %P%bFeA(P@%2s! PpnH'eB KF21 ! Da CPhBqAP2 ! xfX0BqHA05 `$2q(%(熧% 0FɰA$@ a$ e `BFQ # 0FFeaPgeB̸D ! C`Bl0L Q(P(dX"lP"QY82q BdP"Q(B0B@6:5C٠ ep0@!a(CFB 2 ebP(sh0a(P( J! `PA(٠D  F L(BPeeP`B!ebaC, !b lpn|J`(! ʀX&A0BF!PA A@& N ωeq48 AP( P΅D2d@&QH( e@d3sb! J Ia? B88 AYFe0 щQ a! !@,SbL(K#@&J%bB`$,B(0 (0Be!# Q% P,BF!F%q(21#(A9!@! JđX&BaQX&AYe@208' !P# F` Q4(@ JFbʆgB  B(D dp xnD!bɠD JAɠd0OBeÒ a(a$O B( K0B(a eaqI B!B( s XB! esB 9P&#dP2*!ppNBC( B PC.6.,rHYMr1bw8v5=\,Yiqf5$7%$K-9E+Ϲ4qa s3cs(om2] בo,\;]Db-BbjQoRΟPﴍv{82.'Cʇ]*^^ 9pb&F/I.N&pqA7W8h/P0e̷>ΪjaCgX*DT2BdMg6q'hYAzbz‰)q(bq JiQJtگ]h5tjy" JאìhfT˜k.Ԋ}TcLa&4wyt'Ŵ+Z&[tT.%օUIu!mes<厥ZU~2ܔv$:֎W5hhvǿFVBUi'8{:EWSk;|ɵQA!PVa æ]ӱf} V<=2Y,=s{_%R9.u?lIfgv1E`1̆?ۦضWŻc V. 2GN[RڰOwc8Gi$Gh2+35 TӟZuMtg:/{ 9؝no0.^ܺ@ͤkL 1P6-C*\@վIfz-ELjp B(# Cp.2$UED٤ \\ Fh]w{Qqq:nDVUvAJ1jPm0jI$$Ss3pF<(,+;anЉqbMqs&e;I`QSO"DutyvmwbM8wun`;KrZz)jKƌk)=/uv=w wDᚷ V$s-6Iw);3kG ',6ɋ>C{=a|@0(ݚ#R3B=q&cKW-l;Xn:= mඃdQҝRn΁tWdCoNr;S=֑S:M0 |x @9<>m[ YJ!Us mb=-AL׫0 :些'P[l^Y#n7PWAsM Ğu9}uۡrhÎS.0d༶ɜE6TcZm+SKKG$ߥ?1{u)Wp T:vrHbLP/6 [kj l^SMw~٦VZ\C&q7[j5HnZ$ɉ]R$?Et[Wûj{+EkֹOwXڷN͋G$^־&"sj=dCm>,n>)׿! lR+TGa7~AԐlqjsK_C%kTҸWدݒtܦ:cTV3>WK-.G-h7P5-πgi }E4bއRmT%"N}pp9%IoJ/LSQ@mg׾a0AL3ƍz1׺zo]3'i׹3l&GxUaNۭ^pe]<뽍FsQy<@VaO,eJƠ`{ۤ#*Օ]{c=ݴn MM9uFj+z|se'o FSʮ\[+,9?ʝˋ{!=&-^L^ oNFwe1YNKN1nV.n8ѳZ;' W @5Bbʥs@avy6…{(km{T ^гD;ό;bߩVm[Vφ6X|;֔}=`XLǙVcvw"İ}uNrs^j&vU:z5@#=*8uL+XӹM{#|7T-jLڬɿFf}+|L;7ou=enWr9_9WJKˍCsNkc)l|` ˢy2f^WWo;阭e} e{OixخVU6kM V~ݙ/)I.I]ͣ6yuVϖݏ!yj~x|Zw,EYd9 wug0[T|hC Klcy&i`qҵ]unA~:95{iFTE x9A6ϕaOo1=OzT|!5eƽ]5驘J7NAOf{Y'Cqlh!(Lj]/MM&֔lBȮu尟q\&6"J*"ťY3/ŜT)߿OF ղwDGg|21uZފYe{x۝;#֡'5[:7oEJZAe  ZV|<y}4nj3uA-ieG5>w m WWKVj;T#| :Zk˞i=m̊ Wʏ8~qW[Roh*5 vޕ&E/okS7fL(-ny@9Ж;]k*&Չݭӊ)saؠ/9Ĝ=5QgbOT7Z`3}~RJ|TM/EY[ρ1sK&.wVy0_GX$vL.fp拭tԚ&qo$l+Z/m7%|>F><׾jbm-˓mXLivc9|2QCR܍vv'dvz,)הn#t)f'C'br[0iѻqή eُG3b˧*k; ONVYi؊eE澜\ ڥFKRV8nmwmACxm*Xo˩19;`%hf]u1ޟk${Qb,=~XoJS-|[U/+빭لf_b ^YUc8iWN44زbWyjTMezia^ d:Zh&7Vޟ%]v[dS}ޥjb}Q̳زbq<.~k[}1fe&uz\/6;k!dnK})^سvV=Vw%Z就&̸/[yjw̄w5U,->j1eQ*nHz_^[Gj:.ۭbq7!PNVo9tN ivtsr- r9Fmlj'[՟"*ϛ7C*9(iPywP#3+Ov\Í5ց%)}KSK\zGs5G!ti%/囪m?vȍ\{.U;C03!yy-詌$2!]1cdnI{ ?99{ uӅә4b.k[\>ä}^~vTVչqk/E{m[{ H!z?Me0kHƳmn7x)V-Qeq{8l Uݾ3e\#Dm)-!ofA4}Hƛmcy[o*Z&$]ַ)2?cmtXIf]V3{i0Jd{nFMLN{c9HZ-WNWͼmw}1lqETgr'쟭s6S;||i]omˢMT?x2gNWc} s].F*G= *yelɮJ)fڐZbä=C-͉5dž)ۧp^d·TCZ̥l2r[blg=:㻎XRdp5mklѸ͎>bmesav\+{kcR`ʧJ3){x-+W2]g,c}`ɸA/ƺ]1\Ewݾ!Wly>U7eײXYoQ8'R"b/v[ Uj_ y]*>^-89~"]TԳ&DKlia\;l9G2eeƙòm,OƲE5eu9%l.k6h[pkbQɴ{WMvDVsitgV ٙMyn:L:owv7qHFw^j^Pza駶\RTf/)wdһhK;<:$Y'@Tvjwq]wU4E[KG-zzuV\͛>j;3j3TXk!8,5fŚ+..fl&≥g&\H$w~.:0d™jÔR`y,LKjߐ9CvڜVQ75֮Y 0i` ]ٹjՑ- FCa%XW [8,Y!rhÔ-/m 3~-n" KCngV2G3ּpO(텴p_Jc؀@ӈ/!V%As#VK&;k]2Φm#/4Ol3Ua}ةڷ7ܘh(ڐUӄr;JlpOe[]wkdQܢǪ~s_B6 ?#g4jgq5a:X6.#gLsk[AG 䮟 K\;v|40{E͊+t wa)dsj|.0UR콌a{:?f]%"KBqԮoytGJ(A"HshI1cxG +\֑2ƹ:~fj솗~!;, n-jW$V wy2=Ebݻ+wӧ,oKO`9p3G֭qZ7<'-; :+vD黚ٰ%S7mɯi3I!uvqʣo"o(/8 ړ9.rpsIYwǢ0U^~gpyǩG9wP.KUs).5qS/\Rn$ }5xv(xkRcN>AS\Ín+(; oeaip:qo?k/(%],_պ]Bؾݕ=tyv{$-eXN& N=W~\bp:&Rut~a+%:3of1r ƕ+md0M5leHkf]s,So~bH/@,bʼ_4܌8i46vZέoBY1!e1 +ٳEdw=ILWsvDˆ/\wΖ:k(P߫['ke$mbuSv;xFapPFC3[]1ݥZ8dZnjBL-u|@;Z,=~NN ⲡkd/i:C)l{ulM mpZ1d K[NxKrVMbiόbBSJzڒ ߈3vc2բpڇcuaK25%`Q~Lӊ9WSMFE-K݉\)hե5R;~ջx؋ 8om~rkGtE;ρ 1 ޺S+9bXF_` )SKܼϩWyl6(psc2{]nZo-/3k"6ጻJDQj!egh9Q[x+Q]^$c_V?%OgKKS,~a * 2/k \uGtlQ6_'k-[#׀X n ]͑ym0Tl.MK^XkDeW{}HO$l35f7KchӘmZqSgiVY-w:3HVMnέf:5댽ߥlJR7g{,r BhfYܾZs2al+ԨhE2T7wڢ4+[eׇfB6>HkږO̫ 5) ,g`UPg@pKEs&Ɖ☧+D"8J˅zO$M7yeFM5rpclP m ]!xƁ/^.kv<"IryBcNU8_+6+;;Kɵ=T-PRRg9/'6c\4t O4^v(rioə}# P F]CŒ;z+J!u^*kfR\Uj:b+f˸m2)g=Õ O$M~tErZ]䧳۟[hf*􇧱S*b=]ۤ.ڡ8FI}\Vש%Ls,Sjڍ8G:pKft(m-rj~.Z)=dm- *w}At/lnu:}TjɫY _Q)d쿰d\E+~[qZMW'pqYd娆]Ud_¼|^LTՒIpي^Κ6wR3#7V@Tl3͢R7წ3KRTނ&CltUrjɹj$ZK@l*zܰ7.n^]'hJֆטڴIZMX/Lͥac>1NF;YOE6 SkBTϖ2Tg MO.\ZM|.b$bw1dٙXBޟ[Ti% s>j+Z$uyOQ9ӐyțQFnZˀ땼NM$7u?kbfZٴHa*FI*ǯx9pO%q3이e}-nYMj% W.ǶrtoZNg(TVyz=-l\mCΘfd|U{JTvQs=KQ{0"cyUz6sZrFQU7 u*~sbOu󏿏]a%W1diWTJ-Zl,{&SM!C+XiooRb_u?k[_\hqaOLŽYF'`Uh(o uɢV3f`vmVn;6#V>d#eIkGe]k/ku4S.-ڇLCh d [[_]H z^hg =b1=|,3%=~R5+[8(M*3#Ϯa]ͬwY/-' JmhE49{4;K _Č%LuZH+6~O}m/v#t កD$1v ,98Z\y641kYі{/+3)9FaSUݗr#ֲmD\=O3+QnkBt.zBEåV/幺p'LGOM., JUR̐(U<+(X1]کѕ1祑k8IUQɾ*%#})]I*>U*k#wP2 쒰ˉ;GXG1RK̽P>wNT܍4(8a;nlK%*V `ÕmݮjghrJPCC[S0 WYMF0[:E<,M Vv +:<\l73v&8˄*dirKWwێ}SoުږZO2SC*=#=Ԃ23XԮm(6 PE9n1Tը\zcE f%ylGAKSཬ֕*݌b2#B˄i0MRU"%8 ]1U$D% BkjlE FU厗nf%.Z]vc܁Gɬ./ǩ.G&}_)SQdskl7 S[ehd9B(Lغ"<\5o7eQRpx*=Ub]=\0!-tq=TSt9 9FFb54yur`TKU nmἥ{Mq=h{PZB\}ݻP2ldPR-A4r3>5 ]Hӵ]upJODdSatBתPpr2nK=(s<Ӗ)v0uY^*ԦbذM *= U)Ռ;XyrM3rEڥc\N9m-+7UЍD#l|crY~QTJ]Lg0i&2 UQkm6V]?Ű1/!)c,jaPR&fa}tPˉRt%m%2WT˓+`1m (O x;D9\"(32uόvFpfܺ Gp^-, keZAz Դ},m"knyOur8[R<8IiaVWp#q";a4u)Z:7f֖dj{eVdfuiROǠKzSbJ5HdPwQQ+5b9R9Μ(nQU k4՘JlC|Aˠ(Ι F !7^6e{ p.,oRif!ip٩q\srmQb9Axw9bUwO7nDʥ7L-FQgBrk))&?:ԨY,yZf.0hvyZWsWtPN b%5y^#Wr3龐z9ͫ9+yD9%԰yV)qNB{?v̠9iĈT=s1xt2G|^6!3YѼ<܁LG͜`)U}(P*uǎгtZNS+f5_kU'TI$dzKx֒ITjfԧsm0N SY BL*J=n܁*F45mQ1ed?ɱRKoyK&5nNonNLTjO]&C"$K O֗erXE.By.k羧Oo"/)u4(`UA^LD\uĪAĔ|)[;=d<_JXsG!0{2VrޑN+@uVpsE&KRdvAͩQA&s6]TY\Ժ&׬Tui&¬ d{iFLT"C/s -MkLu[sVrXkϨҳ.mL^-U"X,9uu nF%Z&'(Q,.LqmPmR+^/4-PyDsqdV5Aa(8MD5Bs47EdTɣL ٙ$O"5tg,\F>l7F,EplB9w$H[K;jNs f+AEWQ,9Ilչ @9Z|9 @=U\VjX 4\S~K]n띲ٰztGJh锻h7+PͧQ|S^JēU+fW\ˈgW^T֢LoCS#lmUz5$ $Il֕`1e8 -ݙ7mHw)ai1ۡgJg$K/v'f>KY/E}ʪOJSZ]Vd!uJRMJCef³sQũ1 AUz<3sT02#vi{C;}n4?=Of7]Wǡ^/CŊ l6uLnC V M؄95̎Щ9kڽҴ9RnM OZ|ơuo"e*u 5Gw'΀ޞ.=G:;{nlR8C.= 47k-)) z#}IT(k\RZff{Pme|$u}T{d"ٖb.mmSY;Fuf=+Aͤ'1r>MZ st;I!ד2hI 8 s=̈́[u%:uLԏIO^,r֖\DεjaPZ5bY3_)3l,ma̅.s0%./87)Ĭa 땡Ƥ'blqgi"PtNWs;yJ~y; Uk49tz.EL1_X)'YcHc^Z&Srҏ+* -.$LAyL3e+)j2Ң%9ZT3JVfXPqSF<@%GB*RkS֨$(:HN)OiPytͻiuZc+#h1=LH X)ql Mej*d6K Qæ7܅q_+' P[YgϮTrB q&z%iyL(KSX]\GvyRYJL.#r2Pd;.)1<ۼ.NhJ7 U5k.0%b~q7J .+ǪGڳYbjʙ#N&FyJJ$I|W|9˥L-An5r̊a3h0KtM]S9FԎeF(Vix7 ijlf\SA V}=_N'SJ6HO4sIA6!0Qた ʴɁ1^R["ù6D|qf2l?jXc=[]h&0Kze)$RzT-+0 L5VXMA9r1' ▬&ULƯ QYJ/$"Fgxds7:F˩{ qds\L;ZNҹ E"A-R9 .cF$34SjP"x5<;nĝfjsn#63H`nqU#7AK\Zy&-2tdf7g3:cTF_J@b<.KK-L [zWw)8"34nAܤṱ%C߼;9 <(5 Bnu,0O/O]8GҞ"Gk:}[]D s|g@t:Lݜ hVꍞQԲl:rj8ܛ&Ԏ3ZP⡌$=/-Ugڙ%٦W8Q#hO/.le39!M%bvpo&/L $KV'z'X3wxC|$ $h֊ &"lfSCZ@Oqa *SKUeǛl#9c&Gٙơ1c/XbSX.= 69SO,&N%gShq$a %QjLøIb!LfsS7i'FgzJ $Y.)D$&@x$ n,*b?,wk8%ז Y ͢K=&DH\:Sj,R0wJA~^}jVZr I`Z<פa1TXW{x_Q. "R##"I^B*uzf$ӈ1A iH'ipF0\=LuHű!CUfPyԓš_K\Wiҹ%sn<:T3yǍ x D6iGx^NCߦH3T73%W5JG׀tsLU΁JKŭ;i !Gtx*RPd*?ͫnL(E(6y2yC X V.BwFg`~)VK7܇s]&-2դ yX1"> V#L&0A5q󂮮 HOo`FaQ^BԑL`.>JE|d 5NlHwQ:>lp'q fKeԌ~')}̍95܂`mS'1ރm,S,A>Jg-&=X~G/jWs"0@y;ZվÄs4^1 ^Q?E&C8&;B;ÇOhS2&D;ˬ5 L'mEYI*93E"vvH WrgB 2h280{.{,e{p%(αT#9,QxLlJ섖ﮢ7҇zR kt)ǥDZLk: Ț4; ‰ eNSҬpZ%/ܛIЧ 'QT~Vw QK4H;͌O\bs&=ΜAԆbz׃Q.8T%;eShHB-@࢚P̸1>˕R٪ƍP8 ՞8*$X嬍{3ıZRfʧqQ*F<8f3ޖ"V`S.*HrpO"q?xd%n6*㝲-k @) ;E8!÷X\3Yj]m%#&z)jfcpip™+Bxfoic*&={7륋 !~DYSgzx7ЄEP5*C˜x#Db-"{LwfD@|V@Я!oɸh0]]"[KmFSBm>v̐BROndsuQ:K+o )o#'ɞe.b'x7A րwo{!{BeTU WU/7eVlsG̊xNpE84Dk{+Rn8E8Y鴯"N|tb!o 7eB[X# !i-$9[7t\_ ;٬OP yYd@BF.68bWCsS~#Wqn(+Y}s\eQeًS!ƫysYZt @7`~ZbudD8eK3aBgp4j5^3b3'wxVC@h%aNdscH!n1;K*SImrAUI]IVW$^2D;] Ng}2ohRWB,V3,8AX(2-%J_EYL i`#>N\ghp S>i,wql62)-s%Ztǡ^PѭV|qwNq;da<=brN8"5y*aS[L8XzUGaN-j(tC^ JE[ _4"zE-da &ƻ#~8j&ʨwgyVBz{9KjoPls5vx[vZ¬Z¤i+d'm#%>Z81#W5uD밋 j;Z2hw|wr'h3,tG\KCx A[rƎ&3m  m+;D8PuDRm^ǽ ߻hdj93&;C7Y/q/ A6uaV'kH8 -9_qϡ\ĉ.T-BtEh*TKerSZ8@C^S6ub|"F9&C;Żs<[*+b--ttgXř؈S*9̣j\CkX$WeࣆfjERfLZΙRdkL-O ߙ!HϠs7_tɷvk;Zߨ^Z*F(!j5-ԐU܋NY^*YhN2vk͏ݨ@LW"* DOܝ zoCV)s5+R+B҉c8dym wv_HДu/@rc" r'^ ސuN~bes/R]oLsG ZbBJ=p3VVugLˬݍi3dj<'{v ﭙ4RX8-Bpۑ%TaӵN*Vc9Ƨb9:L:Z5!f:g}SgB@3j 5%H9ww[s=tv XyuCgj)`)鐭FJ>:ls.ZuѐVWŜV=&'{]gXd g.AN; 5+3ZBFyA;ٲ%4hlgX96:NUswSj淛7=Z殫d:ɹ8ڊq1ģV:BB˨(\8\9[fSӊCVU/9V)iXCa GPh3SNWUGEV2\,Ck)(Li#gH2 F Xl8Ek<$Q7Hu/qk?L Tbx٭WƦ`?&*37ٺ(%WGuj|Fek2i&& 1b=5. tdm"!ZdQ-R&jaCxzY#C̕ob')*/Q&yTU:Y 9Q RŷGT&ZxՕL)˖ؤ2%aqTa􊜫@*HOJ~v3e2`ٖ(dƶΖʮFFg=EK(TRxl%KWWDiTG4iL M8EHQ$_0-ZkTĨ!gJ U[h'%Oo4phD%,VGv"/RUp\k˙2#J`%sh#jV}/T ;ߠ9jɖl1QJfp dƪh\AJdKR&)x8%?\0!zHSZb,Z’$1iua&Lt >Xd]6+삭g/3)m9Y2ju6+yXA3Ҙ :JO\G%WO lth9!b@D]ijZ9!=QzʞlAj+"KQҫ0-Z ^YUWElI%lEڬ> dԢb͐,bV b5C)ZOXfU-vؚ1D]SۯԒ+h`Z>V"RRp$![]4,gL:ʆ3xmJ(Q+6%ڎ I!ẈӁ&YQujJzN%ҳ\ĩ^Km%S*Z}ҢVdTS*2NbOP*z[W !H8Hih}GIӪo2g5lڊ$l;P7:75,#\B$N2Iox8OQ#( NVhXr5􊯁("VYjbq5I3ka5&Q)WFI&#@GH0x}SeRi *X6Bo,qۍZA22aub@pT6 W78<')azq⩉hhA@|&$II,Bj2zpgt9:щRNLi:4L""+!>R!/%Ձg"")AJ g$FTGL&a dq(#;JMBLt"qIFSb*Di@F%S|ub1ᰞ"C*B3BZB򴨔8XaI J$baC~D A=@&R(23Et JkX6G䌄^2aSdSsR >H,=Qb0lSBQ87,BȎJL<5JF%P C Q$F91 ω#a$BaQA$AYQP6:5C(0A0 éqI 83L( AIJ(0 ¹9!3Q!FBDB!#lP& 1 C  a( ebAB!@, A  P(g@ܠD(!H `4EsBa$!8%S0 (q ! ssppj4H)8E!K2q85.ѠLd(JAI( %B H(Q`$QY0a a$™Q0 ω#De @(sљA0 !#(a$"!a(GaA(0X2(8˄21sB0ʄ08KđXd@`SgġlxF8(@, !0ΐ7Q( ea4Adpn09pn4 dB #@&0 %BDѩ0 #aʄ9L L BFbB88%C(DB$ S28#!a(DeaܠD(0ό g@6:΅HsB@4 #(P !Sòh0e@,b 2a AFe!2L P#X&  ʄ@$"aa$QB٨,GaChH6 F%b S PA @6(bBB0Q ʀFQ(GB ʄ@&P&ω#D xn̉C@AB!B0B8 1B Xe( 0P6<N hpf8BB@ ! ʀ0aa(#ltnPQ C̠ltnP"PH(A(P6 e3 G P<'DpT02@0 ˀlXB sS`tnpnX 0  #! # ˄21bύFHFeP OFaQ(! AN ΈCѨ,(Ѩ%s,DS(hFBC( a4*B JeHܰDP (!bP,sB(QB(0h`pn|bX21 0xn|fT"XNʄQBٰ !B8:1>%ω)1@87*0 esHCY0P¹aFea lX Fb(X2( C(eB28< !B(Be!B@2l0A2aB! @!ψC˄2 e (@! FBF!FHA( B(!(aQBP(@6(C28(BBC$,`pnPG%@C٠,aN ((a0 A(P6,!G A%pJ( 0a#ٰ@$0(F@&ʄ21JB18F 0bYB#D " A@(#,JB e(INSD\d@@@@@tom1.wavWAVEdtom1.wav~P, XP22xjTBD@Alt. sB( JFAP&21 eP"QK#(P&F%2 0 A(HD`N,dP2, lP9q90*2q@6( Aɠ %pnTA ~8Ldi-3LZٯw6)TifMC`$TNltE"-R.yv‰qz| V[j5I6Dz^d{L='nG2SL=͌x8&z7t{loq;ם ZinPﲞtp/G1؎I}*oq̙kktw|4̰[wUh5g/ܲ̿eб6-c{i$1zg/^ lzƞ%Оʆ̺5̌g&]VnLZ3 F^p8i%}ˀ{!.G`(-j;ǐOy ` ʊWR6[U~ne88K~C-R%Ge15~61ȏӘDtĘ&rMܢzQ'=c'.f~VQc SQ^0' \j0VBQ~f`[ⱌZ4V95EDFv=JaL귛k(ZS筚]:tlVj|@֔oO6vDyBU Rqd gR^*7Pڳ*յ\&IQ|EvKNJ[I0YrEIUl d&,A$`}gLە:lSfD}S3J$92!A$h4;b &$+H]NaP1Wګ'Sɨ;A20Ehq$J%NnlQ123M-!tU>nG,WQ}?N+Cb\\Rnʄ0,i3 ^ge]}j b4(C|*J90F[c j{sJ։7F̌1Ua'|qV*ՌseF喛kiIDٛ^`-KeZz|\!ʵ2̖ Օ<6زﴕbY>QG3)eꫲ=TRf4?JN+Ws Iȳ sA4%U=*EHK E| "*qifB18JNSTZy_jYRkA F"ҝ:ݞ2Y#O1If܄9OJ³#[qiq\]~/'I*VD* 3)>đaݘ!ջJҔ>a\&L5f:/'В $o Gt%uLݯC'az"H߲,C;yMn}w29D3;X@4aOOF~S|N'fZ_&ߨ[8h6[ҝeWZ#fY$ !ZFeJm a!]n6@q6evu+˿%\u"2vT*Ѭ0;PfʎRiu"n-2܉$bFFX6ep /Gya5tKaTfP|7{ ^`ژt"p)tx `\W NGɉbҊ2qF8d3Ͳ7aH0Ys+NZ˵dDT1JeMc# 4(TΕu0NѶ"D2 <$S$Qe,]S9iZ 'Id}'L"wE6&>^tx8.1^y7.|kr}JYLt1Hw ޳I<<إ-ҁ_z\MyCq-f#k!so5n "(2$ca6LÑ% ֱ N]‰{Y X T%&7Y K$8GY,B bS2E+R7tf!usf".xddjṕW!zczXvK3njf4i?eEdWddpL>5`*,vWucbp!v7IE7v+ϔXÔoMw b h7C7<+~790,j@hްV]hzCk![(Z*42]F/_ D(O [VQUy0U"Hvv-р1^E}71e Č@NEkcO\SӴ.gx=y5)"Zh,S&N@x%ĀHtO6 p)' *+AhFSp1W&lv6ZCZ R7r ;TcD2mX(4ݑneݕuNK'*3(j>@&\.o DLj:(sk(-[k݋IBX̼)$s 1Lmp7Uj1qg}Gwr#6{1fDlje^f6fB2#ֺ1Dx 2mHY6b/\:E(d \n7wgkaݙ5#D+`lWMmdM_dwQׄpԡi1…Lؼv+"Y.1ƻivCȗ ÞM=s-w!>7up=Q{`8lfPCZ1˴Fv; & V7gƣE(e- *ј n˺!%妓Hb Z"f=wa 7es=U6)IYVO2p"^Znj%80'XaO)٥ 퇿p$A㰑9*s?F:UX2牸n(Fٵ t[uTWLѕa+:41M&cbmwp)Lj~n~F69 YF&?c3^}qI DčBM+.h@y8 :'RGpȍZA웸pG~lNWw97eڳ.>waaD-` cݣ[Yh D¨ذ'jG{lWA[ic:<6~kr:7 q&ȴ Xr~#ǣTt1(( <p4e6T- O(^ͪÈe\͕4%[EoSxVA8̊ MMf}γ *E1]f%va5#aUHN%h@yG[Mŕ~Gj+ە^}]yG}g:lkA5heW.$cLh5:$-e 2ڴnFF`-.diT\%٭kRX#9d;jlc1[Y LmVY4qsa.T5aNJVQ`u١">32ѵavU zDh4 js^5VW`9WvJ>>kx XjdТvm4Mnfx72*1~EV ˮ6J&tB\]NMm2(B4Y|d!7 QsẋY _ Ӳn6b5m- Lf/eaSF(;܇lQaf7bew[uUZl`+:*8I4xEUGDJֱyOxϴ۲*.d+ f>mO Zu]] |GklcEY-,47S$%.Ȣ kd]y.AZ֩@#cIWbRɚ$OrO𛺃: K$Hl5Fd=[!#^ %OLLl!11M8qqN6$=T@@ݕNYfS,}ʰ ˦a# 4A6Iv}Ԇ/.;~8j=ː6`wFOWMEԠF7z\\e }C^C٦-ͬg΃GnŠjF4 . )~SivsgSj-; I kP]u?C*qfȆN&,WF\h˺/ jIq1gc$ZChv`;E$i+Ul`KhLSm@m+Gr2Y {z':|Q7c;:`Y)0H8I[؂',FObݟts7VQҰ33$ 5bEUfd)UT2I:T ,۳AҘ3 a*,a9J|F6ݰ1{E\Kdr-r M~J.F@_j55b-!3KZ/ܠ&5{,cA!4nb1:*؆/|IB hX˶íٯHCl]]hHu-DMn%Y d[ћ)tEtC Z-Ү٥O LD%мTRpaN8/ڀE\=D.dX▮ sآMZb55 vmvT1eg2 IVI MlrҲD%dB\.!qofḽُݬU͑-RlNΔi`v;7d0 Z]U]x'^yrV`|E`9n FH 5b6 Au7W2 XpD'";Z5l#,ݤӫ le*6)#8:7NVYP=]ȞY0HoXsÊleq3UYkHӚVg*$BeҤ4(lQy-.ӐJXKLj+BX>*$:N܄%ҫkvU51먢IJMhRA,x!2)\MlUr 5iz,fOVBgjh݄UYJAhn6bÚ$뫧>@4&Ne@Viٜ.UF juUT=4iɕXn}f5bѥ$F>KFQݪmjVaASL~zP+FA/8jh&TM4Jݮ>e\p5i4AV +RjlV)j5`6 YU]%XJ(OتrqfB kD1:t$ Y`j@EXj5ÚШxlV A*.ؘ,2ˑ5 I YM6JG/$HF4lGIXA ,ҋP[Y:B %LPs,z$kdT((BiD%Ѡ&.XbkDuP!mB&8R^UT4 1ru,ބ"!K,8$ hѩBр2٬"*D ^4шj`FKj@*Z4Zm5kjXfX-ȺlUEDDɒTVY4JEL+E`3UUׄDFd4d'ꋊ/ۀU68 )QK$ %_*WM=4,U] $$ X 8*F`BWɉ939lh8<*0Z4nhR-lT`!yT9:Cen`jKSD$M˝*zUXORlɤ <3C BI>HN-5.ׄ\*dUK7QŕQdd ,vpXpF,,U0 q SWeAҲPB02F ,0%ZFJ A]+ЌESxXHTI,<-YK.`T[-U-:*E[jD.Yd ,luUX(Г G .qJ4dOxf"5CRLvH G,"UU5G(`=*%$KP<Ȏ $%HHҴ*Gtx eH`83HPBmbx-Q8:> *\s$ VLGvPʈR *s!q#UGƜQ )eB,ĒaEV0ZƋ7 ңEm-t&,(Lx0&NBux06GHRĜ0YDTHa*BI #@t0q:pf $ HJT"(E!"IFTТP,Ip2*p0Ѻ H'('[40Ѣ%aYuԈ N YT}4P"VSMtQ}Px *tdɖ\>iaus*sZ4Aj4*E0%NZR5(hP.LdK&\%*f&*H/aT(LIJ-06tU67GDU -PqUu GhPFK$Mg9*SYlꪬ #:2=BG|(Mazth%Z(B &)XDGgQ"KM 3Tp0 :7GQ$ɎJD!q $NdH*ŗLxf:0h=(S̜x\FIF0T荏N ,TVd)خqSa# $)$LpXL6%=LM:"I'J#: 1R811C 9>A2 .0ɐ aj&Q!$\1V 0AiѓK,LDGѐ 5XNq4C ARKD6Q[etgI0J Q P88 C BJtLB(! "P23 PBB -(9JQsɆA8A1):P7A .0Y*s4 8HPPtjRD^DpEA1-D4ҢЪ%zєlN<8.#)GxD  hb a!(' !(ѣ'8Nx|pJHH£`$3hP3C)I&,Yb(7S&KV$0I QCg$;NDBãB3ᔌ aeh(s  &$1a  pJ"Ô$Y0Eanlb0'#KPHB($ fHL P5'V*`JhK,4 ;8NPLcT4Z$YQ0IԨГ$>Jp LbB0A#$$FC*)zSш8L ˆhh#(tIB1A) B %qD6LP( e2IF@ $[lfJFĀlB\ED6,%A jpp(-Z3$ɒ% TG F Qhnb$iB(D $9MI"PBR37E Q07*H0# A0(B0=xIpT( ,L0`  I΅B G¹h|T,pJFh4,FÒpn eBLGƅbb $9,#1ޠD(`jԜd4 =ZSs) 9 X(lTHpP,&2 PA:P<FPNH"PɀD<'ь$(IdL(3@,$Q3G#0<( C0s `XB őP `"(GO" A2`4(Dž3pX8JR85>ѹP&ppT,#9pF25,™0C!©hbX" 90™9B0 Gp.%P,%Sp4Ò0B9!x8d"$"!5 3eQ4LO<%IJFB\4#'C,`(NEs0)0  ΍Shxp0CP8I)a@(0 Q(xQI(# Ge0I$BsAɠp*A %3Q4(bpeA0>"hFF@ 'L6N @A!AJ΄b!X,GxMCa4NDSDe0bdn2\$sb8#Ea%pΈA(pHTF FÃbB,9 Gb(Q$D F%@ $( ţSbs$$ţD b@a$Ń0%P(Έg( gsH(P Ȇp(eP6EH(ΌN$%Iل8P`85<3.(03%bNʢQpn&DN Bx.NGP,d98a47,#9% SѨd0$JO%0b1(q(#9C0:EްP688'#8'gBٜHh8Czajx2x\,$IFP<%QYaI%, 2Blptfxnft (O焲H ăh(EPgP"@dь8%0G2h  NDBDd2I(3ssBلLN0K9\8 H"P pd P8HP8:8*!B٨ Iш 9pN#885,ʄ`P&a8.F0 #(Dh8 Bx ʆept`ʢڰdDSP e$# Q(PBp4jt%bPBTQ8$B$8L6f)X, P&J#L( % ex e!d©0eE9lT&h.υd< %2XFk8#a$1A(dplAeS !Ca4. GƧB$ essBP&H2<2D, C0Ca! 8'ˆ G`(s$gđ P,s2q$h#alpbFTB b @B ! 91BPʄShN D0b #΍J( Ql40GȄ0H6<dJ9"N 0EbI( esBD< F! 8ġxn4x.$8΅B L L a(A('FePdB bd4a B!FpN,0Gb8AL(b8b!0P& e 9%BA(aJF%0 0 H0B88# dx  BB(GpF<%sBIJ2ѠLaAI(P& F`D6E3b I(sX"@!2 h! Px B(@a2a#1HJLxpf\"HJ"a8<1,p$p % 0#8L$SBqbI( # C F , CB0BX8'G!Aq$0IF(BX ùH&FPx. GH aF( CIB0Er!@288%"P @`nXBF2 !`PbX(¹A,( eBPLo2 AIFqI0 8 Ge8 2\8(!F%Bq(Ȅ@("0:#BB0 %a0<IN #1ùa CL,G0P2ùA$28(sa(@N 鍆QpjT"OaExN( )`$Fhp* dtnt*B JFgF#, A(a(QpxAY%#!`@C P%b %(ωe8>91%0pʄBa΍ pP2<3BX@@2*HpjFPFQ ( #,B( 無dgFa4* CB eB e9a a"(a(b(Q(P `LH<%! ¹ApHH(Q0aF!! F@A1$pP2:Cpe!K`J%X<7087AIJađP(#8eBBG0HhtjP&pP2:'CY(HFN2(dTIJ(X)1ʢ09($0D e(  GT88%2L!BY4*2!H,9!B N%㴈NE!Eò0 %0 Aa( FBB, !L<( (PB0s0#(0 # HB0(( P2 $ QA(B  %0(FP aDp&  NυBY$@" a(Qb07<'aAYˀH, Aa8'P"2!F!%!0GD΁)1pN % ܨDesx*0# QFaIP&JB HH@(d8 #lD!aaF!0%òhtN,BY8*aBY%b A0pP"ρAYʠsbaġDB( eb C@(@&L XBQ$eB( eBaJ0b Je (DB( C e! a$dJF%b(G!Nυa(s!P@(CL(@lTa(# 8ĒAp|PP& AFBBD(P Ba$#(ƧFa(!FP6( 2lP2(bX<1883BL<7:7 Ȅa$`"!0ύF !ʠP& Ή!%@<7:% A" EbY D BId!Pđ0bYBC(00˄2aܸ$%aPP"P%a( As1e0A! 2qB8hP"  !sX&B8B( JPX87 0( C Ήea  %XŒ@, eH<'X28'DP& HA$ eBb ΉdTB0bxj4Ή20I%P a%b%@2q$HʄppnH 'J !BٰDl40F#A`P8lBL !熧# Epn\ea NP&A(Fp01 #  e8:5:(J!ω!BȀ0Oą ,A !03!@(%H<7 e D2F!¹ѹQ( 2!B`ʄ!!0JBFeP, FB(LF2 2q0!P&0 G! JF%A!0˄aˀe@,C@87:7>%H ! a4:5"B A8 KB(!Ba  F FeaB883,P"P(F%21D !"a(PΌxn00 8GP0Ke! A8C٨D28>#H6,FB( P&d@ S A4:7*ˆg!b! Cʄb`$QsBaP,bCea8 eb`(0 !B(P( P& %b JB @٨# SP&%a4( B Fh0Ēѹ0SFpfX2( ! 8'a48' %@(@a(C A)q(B!Ba! ʆ%b(a"11BBa$@ #( F! P!%02q$`h$S$ ˄ѹA( 21A21dQ F#0BA LʄQ$LAB $B e!DH8%H( ŲhP d@ɰe!!\8:3:5, 0K ! C #9# He!a"0lX e`FP(BXaљQBhD,ΉC(@%B D BB0!aù0Bɨ eFea$`F#A("q C( %! ( %Hhp.0@BL PAxfT68'P6( JeB8 !QJF%B$FpT FP dsb ΁H"q$B ʄB ! J%0 KđX&J 1@ #a(8h4 a0 ACJ@6:7IJ20:e@a$P68'BC ALA( BD C`$a$bB8*!ʄa$ P, BđX"%@6*! %s'Fù(@ %qQhpntj|N daJe@0(!F%ѨD"BD,G BXB @P(Bq`j\"a$2!!@ GB( !Q2(0H(QFB0 %bJF#AܰDBQ4, QIFsQ,(ѹ(b P(CJƧFe0 P2 `ŲPEQ%00@@&D(1ѠL, #0BB̸ Da"ܠpb\@E0$F#QD eb a"DALds`tfXŲ0˄P<5@!21 %0 #( %Q( JIJAb B٠lP"Bʄ@(JF! D2a(b!@6 # 0pP&aB8(BF2 όB(щqB!F FpnȄe(2$s!BJFe #8B, %2!@Ca !D! %L @@(FB̠L1 CC@A$b F( ʀF00 8((!P,A BaĒAA٠$P2CŒQ0 OĒQ٠$GA@@6d2!aΈ0 P aXeBQP6#lTdDBepT&0 S\28(bK@687 esQYlP&$0 Axn0 # %2( AĒ a( L, eb`F% A #@P&P6:7l|.!eQeBP85 d0JġlpnT6<3! 8s2(@( 2q!`A  lHF%BDʄb  CѩP,G! 0P20XxjXBL,( @<'(epH8ds0 F! !e(0AY2qB٨D(JBaG0PlȀ8 P& %S  !aJ#0BObY(D, X6F!KB!JHѠD ` sb0 Q$! F@ ea A e @(0s290:'@& JBDb0 pN,$lT"BX&%200 L #a$dB( a" Q0 FBP, P6( J8 B( aa h0%sb xnT& @12!T8#1F%!B ʠ2!ѨD, Q4ѹAFhPA CBP, JaG%PFP,C G2q( CeBY(e!B00P!(ltf\"$hPBS(BDPF( P&J0CXePJ#BJe%(FgF#L 0 ωeB(X6:5>5*G!G!eÑBYB ! O a(@"8( Ch J( C@&H,B,S #԰ 8 eBX2(QaJF%b@6( C%Bʄ8%9!%H(!JB!xj0 ¹A@ʄBGBɨdP& NKBDQ a!Bܰ J0BFa0 Fa$ lP2*#a(P( FL,ѩQ DP6* e80B@( FH6*F%BX&P2 ea"̠x*KB (DbGљ9a%ptjT 0 a%0 !!GѠD2L,a(a(0B Oˀ0# # %P6<3, ppnT2D,QX2*hP" PđX2( xnT"hXhT" lPBL lpn|*KeP P2!!bYJeBBBAP&P& Fd2D`F8 lP80ωa%s!@8'΍J0PAA$ !LŒA@ PB P6((pP& JC#8Q(AA0!0 q(8 ʄP(0B٠dT(@!B(,!@P&xjXBbAX&Bɨ @qP68'lP"B  eBJ@ L A(GbIFBxnxJ( !ʄ0210B P, XC`BB( epTFa(đP!KJB! KA"qa(G@(H (0B CP( ܨ Ήa#8*a$b00BC((ssP, lTQB P<5esP287e@lpn|bYA(0K0SbJBq N B( AIŲ0Pd0P0P2*B٠N BFp$B$PH#2q$ #GF02!F`PL<7 X"hT2( CdTlTF8#qB dQQ #٨L(P2 %9a485 da!G !BD a%Ba$!IJ0 Q@԰,ppjT ¹ # dX8B0 F!aH !ˀX@(P e2108P&B! P(G!8 B !JFd! # dsP6(!b(JepP&1 J#L,hP"!NJ0B"!!΍H`4(CH,BFL(@FbsBĒazÑXG#Fb ĸlPeHA1#(B A# ΍N GXa$Ή(! xn|NAY(! !P&21 #aCɨL(BB! 8F0BɨL,QeaADppj4bY01 ˢaAPB`H,C! A(!dB03Q#10pj ea$BX@sP&@DsP#ssBe!ebYX& 0 J A aʄ!dxNP,H!P, 0 eBaBB8B  a H(B@&aPaYFpP"B(2qA b( #IJd0 2qB@@(G %B%bd Q4*bH,a e!KaH9a( AX&BX&# J AYBC8(@!Xl0FFepP2* hP"X&@, a(dAA aJ!NG!!ΉCB٠L!BDa CY0a ωA0 ʄԸD6>FH,BCBBeS1%sP6(H<791%B@$B`8'bP&bX&aQ8a(GPhlT"!όP0 JL,CF! F#g!eBs!@(1B8 X"epjP(a L P2 #8:5NO 2(PES Bxn0ύJB q$ xn0B( a(KFe  ٠L,  KF2 ¹A0%b9! FP"AalTBD AP5:3(@dP"0FBL hxNE2a$%0 CFbX830 P287 eb, S0a %q$PF()q!B885"0(b\(l0 AD(AFX&BaFB(a%H !K!p0B @!JbI(ĒPP6#!(Qa@(dT2(GB٠$K2aLCJ#%b0 KaFP eS0 BX(d2! !P<J 8B  #`(CP&a( 0 A$21P&`P&K$ eS!0!Fh0D 2lPP6(Aɠ, @AhP2*  @<'P0@,B٠ !3LʀX2<NωhB(@6(P(CF(a(Q(AY(bY!Ba$0B2! (8F! B2q0 %B8 @F N 0DaF!IJqI@a(0qG%a(F#ɸD(!J JX2(a eP"! A$0 a(P(2q q Fa BF!8ˀxnxj2! C@s,2adT ʄS0 a0 P&B0 C̠pjD!e(P0B8#aP2:5>5* C g`( ωC8 QY !@elXHƧeSsB #DʄP(!P&pP"P6(a E2B(8P6(0JNFP,A X2<' %@8:Apjs2dFB0 lXP%X"A$a$ KBA!B21JFFԸ,CCH@(JIJ)qdB(, %hPDsB԰ P(CD! aX(Jđ8B(%@0X& # X2(8`BdT" # 0B JF91!0K(%bB8F(eppntnB a( H<7*B@6>#G2q( C  S,ĒA2!O ˄Qܨ,%a" F0 BF@!aI2d0 2 Ba(HP6( JF!(EBܠdP&eP2E22ah4 Fb0HA1 eX" BxntnxNF@(0@0bXDl0Jđ8B883>D,Aa(԰,G@, !!J(e@A4A8(!LBdT@e(a %b ωCBFġ, pP"ʄ2!P,B٨ !J%bPEaq2 `2! P(K@ ebQđX2 B!,b07 $G! aP,ʀ8 !!bܠ,a2q485* ŒAa0Ceb(C212q$ BdP6!ʄ2xnP0bɠdP0@SQ(BL lT2(2a(P&L(#!dXFB b0eFbP& CD@Aq@@$@@$dD L a$X2: !lPP&9qBpJ(3ò0883 $S@2!P87(bB1 IJ0AԨdtN aNFQYb!P2H87*Ga'!BKF%@,bxn@(qCYʢ91a$ehpNJQA@as0 BA L6>'Q P(s0 a$ eh0đ0 )X"B JDB ʢQH   C@"dTP"%H e2L A L C eba$A "q (QI2P6:7#0(dF(FQ( dH%Q$H(#10H dsA%s0#a Al e@Eba87*d4 AdQ(21!0 F2(@ La$B0%!KF%bpnT& !XFbY4,!J9!B$ 1beAACDa AICea4(S0 C8K BaC L ",  eB0 #ܠDdJ%!ppj0F#He@C٠,0s0Ѡ, e pj|n0910@,!0hp.21@87!GѠ H!!a$H%@ !P" AFa 0!K%@!21Ѩ$ Cܠ dT2( B(PX2(CC(Q@( K@6(FQ4(@d0aa0P, P, A(F%B!C(2q$P΍ʀ FdxND@JB!BlP( ! Kġ$a(0bP&PP21L dblPPd1b0@(B!A@&F(0 ppjT2: aqC885BBq JepxJ٠L#1P,P,XFbBFb  đ0 QYBbAGe!( 9qdHA085* !3٠D " ! %Q, 0K p0!΍J%2 a( bɠdP2H(@!aaG0P,bYF!Jh$ s32L dSA!0 S0B(P6:3.pA b0 Xea ! 0F@C(0bQԸ D N΍Fd4NK0  CFa P& 21S(a(C(H٠D " )qC,C(l|fxjDpnDB`21A2aa0AK  @X2(hpnHP SQ21( ʄ21 %2 B(ea4*BhtN@&0%B,b0 P, B eBdtN#$ˀDaP, C٠dtj21 B!8%gL "08CpfBdP&AB!GQ A (a$a$CI(!L "N eB8 Q4( Bd0!eH6,bD!ebeBɰ,qCBAQ2!!B P6,!e0D!`!!De!H(GbY@( ʀB, !0!΍JđX"Fh$BF@,B 0 Bɨ %Q$#,P, X2Ɇe0bɨd0%28<3*`  0AP&J%b Ԩd0 F A0G ΅(Gb8Q0!lPنP,CF!eh|fTB!@@ %òH eCa8 F#C`B! 0 %@"%P lP88 L%HEA0@&21 eb GBe`p.ˀ8 %P.5e'݇ǎ&]Kwߪb{kkaq9` MڞIUk;̾l.]b4-֫{|8/Эc'47ið^ i4UY`;zkV#!NWɪzSLy=qsc0/Lg&d{^\5_[v@&px&/{1R()9A ;gZ]27:^X;#]HůU)4~ǬHӽ]BD wܛPzcmeYNHo|]Lv^oERɝ$L#q❲S_ZW'jCj&̆_9&H[gfj0QŁVJ垒*Y2Uo4GKMh:^6 qoáwfکWueۑB :*k # P-&N XDhl^0`v?XJcprtKdlq)R*w/PULIXN6 \V\!wpIqo#9. elЫҪW Y\ԏb)Znfl˲I]f ZKlty*@WUof]͎f۩6ӄPn.W=/~}8 ]JS+lMRU#ԪKjTmmQi$OeDI< ϵA|5a4ixE%(V*ѢKSꝽWѬ<<@,5B1idbJ].jԣE&1I ]Wu+ miD[Y櫄ɱFgJ_*YAѩL]usu2>،! )yů*5sC!^5K46Mv?4e: "wf~i"J̲EKmXd¬LMu/5iJEjoej"vvv2$eJX,TkyNN+f(:u>|!InbW)^:r a~?9)}'&YC^BW1~CctoOF+siM2R]ڟ:ЁdTɩT+Yը"rΑ#B鼪Z5ڣ݋*e4)y.Cq'fv9SG&*ҴN9,fzӣ48o "y=b۔, }Ez!݊ɕ>;Щ%ߤ0S{(* =oLmM޻X&9FUC&ϨZ c7}4a E8e% ݔCa ]X ΓRdA͐R<:Oo5=^( 13OU \"#niBCBz)HSbkhҲ=E2є۠Q'aEW=B41ʹz7WONӡJZh.>w_68̓( _Nb \p(WdXL$K}5)*e Ki8$Φ!>R` "|(5îJ|mv5{f &Vt0q.$/";UB3 Oti:`ea|"VCeEX&FinR֗2-CI*zG({GXUn5Mm/, |o5^3|C<Ä7rCqĉL9)uQ"+ 81}MC2˸`28me,92ADl\, jN1|϶2Ls]Qһ-$Ni@7~ݔWE01oPo` ,f^]DUbbDzo a!;,ONx%sFCI# js*)p=' }e!ai,B PA`c`[3sMh=qVWk`>^ٽkCE'ǎeܗuf{x4^9[F׬T + 8ApE $T&HL uWdvDQduvx6;Crxޝ}p.=ūZu HygH ,p QU>Dhuc] |:%?~|5 SEZ ; 0͝55nPSD=: 7pݨ]ߍ!O djl24=LPfn"HzK(lVҰ@me*jR1lՐi7v8k|- -bn:wp߅Sl$%5!ÛRO|[ 5;\fGx)Z'` nγDҜ6;{#1gDsW*(OAịKXr܃I,aQ .s؈hvJNx_ݛYOMo8hf`CE'm^lҭ]W{n^\QWs#6+bq>!BcnĉDOـӲmk VW M{$61 on\ a;ʄ5ɚ7gTu\O0ԧI]kvVV#гFG\\\u\ϰ g,WW>dIa |e]E&mb M~4I ^9 :Qy6yQ)F&U٥[n@4y5\Exz0NԽX@f5TTѸҸQ-3Eh;)+}얮 }4nBk9FfnH̍Yf  `{*q}6@Ҙ.j6+< AXU69m]TOƤWEׅ0%y.РZ#8jGlj k#,4qb3T6X R Y& Kd@##{TY`d]'*n9S b;Xn~؜j٨Hn!.V 4A7+q¥TSFa[maDIZRQ$Q4Ԕ hڢr'l$,rP2Gkj0 HRNj6&>KyfnF.,aI`&5sBzMiNxQ1AˆŚnq3d(ɪˬnȚ6 `-K)ݘDw{3.b˥us hIJ YtE"djP#):-g l@ sUvUl35X`F7b]ttjjHL:{Ua-Q#O|:,W,a'RńF?ģ*UVfɄe IHMUG񒋌LBvt|A!)q%Q,WVn&5 ѩ:0RCV4^*"Ѫ*Кc3;P[4L`FӪA`„-^MuUUOT 'YW5Pp6ZT/t3*h&-P,U8'(&N$H8XzUMH $ KQ,*xr ӣ1S]-ԈH%MX% Z2q0H^%RAA8MX:QlnXzҡBidP"sTVhd" 7U[mjEңPG5uUFe0q^2y: ,pjRVXP" G %K'Fm&"fUUG),(h%X~E8HBm|酒NUD,W) ɜ$AUIӂ!aҐ|H*Jd5USIM4hњʨLSsQ;,Dejpn !Mhr˥Def|ұ AB:fh)#) iЂa bzuMК5T$) %dIB AtSRYh$IZ2pf jTjS0Qe< HDQMrn()jR$Nĩ*4U(Qja}F2b„ ѩ"" CH a5P (Y*₉9\QM6ZHxpD2zQt*U=: $ %(EmP<'$8<,&>\8-jфllG!"K*P"K)3UpP Zl" K%.UIK7 y=Y8U :$MiТEOLM28JhaH,qdM JvNRSE .b%=%Nx$aƒڢH&&^&ɩPX&q!L!qdFHpFQzÃ3p踐 OQ2C V7JR Ḍl%Rm&:B*4&$ RM5TЛ#Z,-1QD Fe kUh2dXIт2jTVE5$>,$Y&I5UQ(Nqsj!%HQX Aj4^`ams$SŖ.515$>'9*dGGdI&XDuthȊ'FŃ`Қ`Hj/pppNH pK-rШ$ȓ%XIddb*E Ӡ%X q:GO68'V0y Q%$:\$aJ % 5h)68<5Q(=z(JJ$.jjB( C: $:J^BGb P6몋q(Q"*)aGD a' @DINIhQae a\<,5G)e/()@M2./r|xxVD(aD+f$2Q2B0:1AmjP&KQGɓ$HP2(TB0)zИAS5@2z("fd'sBY(2^pP qd$Qh GpLГG%K2Lp AJe O Rh,)1 fdhQQ/PX"A8HZ,!MTF 9zs&IJ0A%F$%1qY4:'R"9GLP%pPHt|$a1҄$I AäI`d0$?J&E4eQ833NE(ĔpH(əqj1:% S d DR#) Dŀ Y ⩹9YMb0%SF3Dǡl<MM̀(4GM, a8EZD"+V7EEH'  '& pPJ* +IL$F)@gxtnJ6#"O6$<'&L6NɊ%3ä`HYDo"XB A)IĄGId I 'O\FX&SsbZhQ" )ԄsbaHF( EH􈎋S$ G0$,aDgP2%ЛJVF/%$$;8LT2'"L JFѰЁţaHPB”>ZD0":8Q73#$,05zL ©e4RF=1Gpp azq87>'&KppL8N8 -`HdDTddiMM QH8Y(" ,,Rs3`PF|(DH CSb N@(6!T&d91q4Jp0pf I AƒQzPLT<%s9zMQGkI0FP" !5LsA8JR275% gHA*S@2#)HI28Gܠp\8Ē$FŃs%QhptdJaHx|8@Id"²l$$9 Fl^( # = Гq$sA0NT(C aqHZ e LT65>C)QA1$(уpT<,$9a4>E65&d33S$hJ2($FssSl" eSbsB3F%R%f&bRp8$ ѹPX(2I85(Q!IzQ$!a$E`mb!=, d⩩AHt` %2pP d!qxdDR67AP͍N7 $Ji28 B\8%©p 1"()d8GP2 A$(%Sd qz Q$Yf )ٸNE3s IY4N!  K pa'$ ) FP8<(`&S!j2* LыML&$p0"#&Y0Qj%dzLJd)"`8GT"OAGSG!P<1::18:RQ"M!Q H65N Jl OɠL"&93IBl|@dHI6 A$ްdP(K =8d% ̍RGP2d& $pF,N8Gp0"9:J8s@C HHd8W 0TG%b²p\8dn %0F%Q$ A8I%( azѠX2HO&A I$P&!!J!A0QܰxPFV aɄSL<#O  )hJ2LM&5:#s3pnp&D%3Q Bdp@%!A88K%ãDeINIS#) D8d3AI$:J2$L|8I pxTQb0,x8># `!58'P($P,# (td32ḧa458JO"'Y$ 5!=` @fJ, Q )$ ,58b@&0@0'K3p*ND$iChʈNeR"988GGP6*&*#; H Q٠$S i υ@&E4 KXH@IHTF FFs$)1 #%'HGS@™H&983A8%$ωpF3bIŴ$d 8( %H$),28:CO( Fq81*aes(3%ŃiA(!8ApJ6*!$esbDHt.C0D 87 I%ã (GB %@8  KsL2NK8BLP(Di ҲHLtnp GѸlpx4#9 L2N -F憧fdl| . 9щpf8 Er JdLe3XLE<( 0%!aDBrʄbJAj05* P#( H 3`jj d 5F(`T,!+peS 2(Jx8( 8( %pN"d$ eb!AjQ8!#PBtBHTJ'B051 !D) A 1-0Jpf(9!P6%I*Ã`F8 ODI0#!L A@9%bj pNf"Y81'(%0'eP8(GeGGIQ"8 b)b #1CV8!P" %! s3BEQ( e@GFIFòq8>(!<8*! aXHN KQ԰8όȈ)0<Fq@83Ғ O qspJ(7$ 'ăSs,2&H΀F!lb"HotB,A( B0 Q8%2͍IfS)@M!M̉稍ωé9dÃBL "3bdڰP# $H Ds C&Hʄ21i GfFh @2:熉R!*8$;H N Q!pXšxT2 ,%h4ss@)M&B hpxj FqxѸܨA PB(=(#XߨLCI4LM85Ji0"\RP8:AppLDP(a878Go\6#9$Qe20'HS !=!IN̑f`x0Q(Ȋ# i$E@F%Aq8ErJp*X&PƣA@2d! ɆQ(PH, eIY4 Kh4Ƈ%Sh BsbIhN@Ɇ) !'D3$=`$dpNa(EB1A90 `CNE0@ 835( SLF֠$NA8F=D$%shBEDFpN"%SD ,C@pJLP6F$#`Ga078H % Be\$NDpNN %@,a I("<F0G2 AsB@lDox20B !9Lbq$!9a 5(3Lzph%28iq@mHH8FQLgP2M Bp" s@,Xe(0s⹈ 0:!hJ$ɜ0DRFo4s2TP&! B Ƨ$Ԅ$%$éa8G'HY!#Ѩd$'R԰dB( aYa45A|N eH8GeP8΍ s,52$(#( !PHAD<ʀPQS3B ٹAܰJC8 B(,$ghF<'0S`T27NmNA A9#z NsP 8Ήa3@FSѨD8B(OF!A!ADpJ@4FS` QJeSe ŃD,92q4 e9@\$d2 G)P  9 CXB'ǧ8BB !a1Pͅ0 es(`4(DQ 2lfxQ ¹Q # љP<'H˦ƅlT6 =dN8dSH 5"8J "(GQ$s!E(xHhnLɄP6%7'6 =0 R3H&2 Q!-²ƣq ASAx$ppΑ`fx.a$Ɇ%3ʀdT2 dJB0J(H$C <D8> Q @ѐ^8<5G 0΁P a4Fe %P,x*)Y(EbI%s p$S!a$ 'BšlT"l F  RQ&B -X"ND`pNBtjtd9sQ a83.8> ǧB AI$5.E!f\8(@8*CO #0,P1l\&!F3(JFA%b(B0JP ˄P<3 " @ F N KP&"! e!JQ83EaP@B eP,B  A8b 2T(`$d J$ 2a$$ѹP2<s3@ʀP2:' a4:3JP,!pް,a( 0 eQ Fa  0P,΍K2a(P0ʄP8(#a4%ܨ dL Sa$bsQP"K2\(,8hN(dpf0ɨ 0B BpjP090``fxJePA(Fg` ! !Q(CJFe 9q@6( őeb  2a ŒH,òh\"qx$beb( ˆeD ʀPh$FQX<'BA pTB 080!8<% %2(B\(Ē 1 NSdP `d! aJa(0#818#@PʄSP3S9!DJQdTI(P#HFX(!8 e0 ebDDp0 %B1KFbP%sP2aH p %20ѨP20b 9A8C4 a4(ΉѩA! ˀ%sP&! B1P eH8% ρ2LxB8*( C\Ss!sLA(lP(B )9SPB P"spP0@<L, eaDbI%aQaz0B(  C#0 esP&bp H@8E sBa(JAPȆ FhT2*ˆb1GP&2 C (P(F2 Aa$@! aCesFH鍂(BPgFP&憧H( esQ(E%h4' !P6*!΅BʠH#\883,`tjxFP2# PN %( C! 0 0 !@P_( #8EQ( b DP2* d8 H,A@8qB 0%@,%B  ˀ0 #X8% !Ѡ OqEa30SP"H2D2d@,B8HmH87,BeP(!Ȅ21 aa$ %hT"B(@ ʆea8(C0`A8#1˄b8, C! Œ!aFB `$CxP" BdxnT23<5((0 BYadB(`n0D0,a"0 aEb %B ¹9`$M a2 !sb0 熡L(GDB Q05, A(( FB B C!B120pT"8A e@(P P2C ό 2((@0 h @63$ea$!F!BX<5. A(0H<7(P&΍Όò0 #1`(G q'F sbxjxJP"#XSSJ̨$3FH0 PBBa$ CX,N O KBCCFA@(H%P΍XFpj0B! 0 CGPFhpn FFÑ0B$83B0˄@e%b#(B(JhT& P lx  !ό K KFg0F @2(bP" E(E B @<ܠFes28 `nJB8 #٨df\&A!AYpnBFP& eP2<0!L,Q`#aC PPesBP& ωD2X"hT&h0B0(#8 0Ka(dA`85bYAP0 %Azd' a F(FSB`Q4:aEa Ή0BP2*0!#( #h$B0 @JxNDB0 #ʄP85*B AYea4A (% 'F#DX6:1, d@6FbY8>APd1JF#q$a$F@ hpn4 FѠdP"FbAL% FB Ga$ B K%b٠D( #0:ArF (a F#LF@<' %pnPeѠ PFH( eb7 #e3!B$32Ag2pn|fP0@287(3AF ! A(B #CD `P&PX l\Ēa P(p| ʆH('JBa4PQYF%bL8(F$2a"1΍ό@"GB 21@(FP& x.d CxN BɠDEPBP6(O Gs2`0O# BPaΉÙ9ahpntNʠxjx.BP6:5(C885:3b A Ba85*ʀ8#  P2.!X"FP8Erj|f0B!!Fs !G%B%aCa$ ) Fa ! XBrBFB@bX2(KB G`85* !ʄP6:7(!qBe@<3>58 BX& aE(0 B a$GPB0Ήe,#`F!@` F B¹Q  geB`G'el0 O FB FpѹQ`$ %Q(JF#8(be0(asQY( eH!eÒA FgFAB!A eBѨ ( A$(F#ea$!xN edxb\ѩA,aʄ@2 BH@!'02LdBYFL lPLB P2 e`pnPB$Ba$ ω!20NoT(a$P,hP s1!C8<5GƧă2 a FA$!%Bđ(# pP2%B!@"qpP #`0 G0P #a9( F# B`$0FPlP ˢȄ@2*L #xN C #1P焒DPIe0QjQ @ a(F gKP87FѠL(!E00!(21e C(FHssPP87 CB! G%PFpx AF2F%(b`Bap޸lP(0d0 PB %1F0 pb5<7 QԸ$(JB % ѩH( dP"ˢQBܠ J C0eBA lLN@ e 0!BBA$PAP'ܠ,2x4%GsQ2D©Q# Q0XFgL1K s0B  !(lxN!0ʆ#(b0 #a H(BB(P©qYšdP( CH(1 BpPaIQC(BF0!@P8'ʀP68%AYΈ!FQBxN,SHƧP&e aBDa( A48%! K !ag#(!P #h$!X`(Aa( P %HA4(FC%0s%H( #l0$$eBFHN s0 !N bP6*! a00eq$Q( ΍ɨdPQQP&9dP&"10J0P"@"D #!%!F0 %P da2L(GLaPFq CJ A H<5JȄa$AP6(BF !H(  !GlXhTeh0 2!A(!8%eQClT" A4*B QGH%`P"`T" 9q`2q(FP6`((P( %P,ABe`PFb"a485*sxN, ˄3HFg#K@Y`0) E(0 #H%,2 C#C%!BX&!ʄs$H,(0@(PD, Ų0lxNBFsB P 6* C  QɠLQ(@ ĒAAdb, J%D(b( gB8F0K208%B`N!a$2qC$BP6(PQpf00(NL(S0L6, ! K B0:!l00 F#8KeeH(B!B! a`(#%0 hP&BY887P,%FBɨDC(PB(eQ B08QB$CC @(BXlPhxFh@aFppNJs2(bI()ae2(Ns 0)P& a$AhLPB8:!s #ʄIJ0 $P2 s00 BBY88'sbd! xN,elTpN8: (GPB`dFS2!H sL( P6B085AL,Fas9!BFSP2,H& L@$ #P8N J1 epx* ùQI(bYJF%a$pnpN ,Js0B( H(,O KPB88#X2:X2:'X2AɩщP$2L,)1BɨD(%xn\91B%h0 H C FaC C٠L,qY$#! 0 ess@aQP& eB΍F(B8( P2!JF2887(28:'F%Pl0 %0@0xn̉!F2!焲P%b CptFhAa87pn4A0B@6(0H(ٰ,C`P6<5C8!!K%BL Bh$A 0 Dp0 A$eP6(G2 `0( a0 K0 JFeѰ#  aJ2 !%!KĒ)1FDP, aB D, !"Ld%s@ %QP& E22!eѨL2$0b htnPhpNlTDbP(LJaA٠$  ʠ0 (BP&a( BNF!B e0B aB(BBa4:308'P" @B0K8aŒAŲ)3P2:7*h0AX& %SbazB #ađpnT"ssa(BP61@!(`( P2! #( a$BaQ0saC@$P(BaBP$LhTő98 e`(@q$b( eAɰD $21B٠lP2:7*s A( esP(28(C8B(LaDpnFBe0Fa P<7*%aDBBeP&X"D !b85.a( XbYDJ)0 J@6<#J2, ùH6!!@1 ʀ@&Bʆ%!2(x* %鑜P,H 0 P6,FP,@8*aFb0 CFaBaHepN(QđX" J0e`ee@,P<'PA JQxnX PFB(D!P&a FssQ$BP<%B(  ebYa(0!AF%P6DhP"`%X2*F`ʄBQYB 1a$8K HN ˄90*!B(!F!B F Fa(P6(BB J8 A#P6AB98,F02(XBJ@P(Ѩ$ a$`P,bQ$BY$"! CDpntj|.  e8(K0A1F0 eaC2 @&`pjA HFeb h sѹA٨FѨDl0P"lT1H1eP"b P&@2 ebhThxnx@@$ a( hP22 0D( CFP e1 lTBB%!̠$ hP KpJ0JđFL " P L H,%B #! υ(s@ A4* s JBh( ʆ! X2* P&!%P60b٠dpnxnPB8G%s20ea4* # J0 2(H!B A87<7:%!8ESB0ύF0210 pN!JA eP lTBL<'#(8 a4(  %( O P"A0ppnT"esbdT`( 0Fb0!bAɨ A(BX&!0H( ω# B02 NeexN 0!1! eD鉁0( FB`Aeb8KB P<%B F!0bpnDP"@CɨdPBA #8<1 "d FaYFp0eĨlPQFB 21F%b8@D 0ʄ#B(BY 0qs$'b21h0Fa4:5,P87:7AqB`b@ܠ,HB(QB!K`  ΍B0%dTa$%b!K10P  P"ppBaBaAppjTg%BQ@4(bAL $P#1Je0Fep0 s2qB(eBLNxJP6* aF@,(0aa(@(( ΍F#(lx. X a4( P<50@&% O Fb8DSaF@8E\(2! eBA bY4( 0B !F P(X285<7P(Aa(bY`(lP"BY( J !@(0ĒQ aa ssb 0F%@ A$PlF@ 0@a4>% Adpp# FebYF eB  JQF9dP&@ʄP a87, C$Q$B dP"BL!@ 21  %b(AqeFaebCHC 0 ΍ ωeʠ0P6e2! ( #0B QH !A%P6<5*ˀ8 CF#٨L ΍J( #( ʀD!FPL#(X2*KeqP&!!! (P# A07 !@87ϐpn48JF%ae!!%2 2L,C eb FP"88'B #dT2( CL87 (H`0Ē)1 ùQ FB #D8pPBB!A !΍%P6,F#@2hX %0B@&QB ! e$JlT"0 B  0 ʄ21@B F2(BɠL3*B8<DP B(dJ A B( ٠, `$!!B٠,aGe0 # BA@6:5*đB0Gpf0ebP,0 J#@2,lP&`ʄBP&Pa87a!bܰ, %P1 eb ٠dP2(ppf\,!eb B #! BlP&0bX"b@6H A(0B e@,pn4( %P&Q@PEH, P,F!0BŒѩQYƧ$ D!B(P6>3AL # L $Sb(B%Ѱ%2a a( 20(bF@, ( P&21 BXFBDaQ BPA( ʀD!P&P !hTe@( !D!ebB٠, a$ύFaF@pnBLa( @&PʀP2<'a$X2(ABa87 L XhhPFF!(L dAS0 ʄQ agFe@,Fa#P!N #(2 @$21B BD(F0F!Ke@ea(@6( QŲ a(eAYHɰ,B a(GS@6(CB# IJ0A%BL(DF ʄ! 0G(CԸD elX"( # !@S2 %Q$a0B@LP %%Q$L " %2ܨD  ùAH a@,(H BP<N S Aɠ,s9L dSH6, XB! eB a!đX&0 eb # a1 (QP( e@, (gNINSDd@@@@@kick.wavWAVEsdkick.wav7shRhRɥiso;=T.CφՀk7mK7 ~eRtZ9y^(iˊiaL%6NJ,xNj{g$c%&*]]}m3l7qZ- ~KzE-߅V5%"hu{<m\D],8ٻ*y,T[_3'܎Բ :mfe|6?J6;k;l,T_2!\yZ]weĸKk t2i缶$,i\4 sZpTګ:\ Ah22_5+Ϫm9EJ"q%+k`3( ]^>^Z=]D=sMB [)JA1Ң罧RՖ`=uhWWV7¶86󐳲+)6rٻR/A';<[CTH&r,WIb9Z ./]eYz)-&U)t"xuM^6BM%1f#J @&6Q䮶mu)mu%5m)|>Ldi4k+S}ID4UYoEX1^E#Z1S.1 fIUױ5e. 0弧(\j҄0h2DS %ӧ\%X)mE}%Y( K; -H^UvU db1M')&&276AbBq`)^ \C)"/r02 "ҴdoB3MNFȈ2:\(cIWDżx퇍⻬ՑΉ7Npr\b"h7{˷| s:T/ޅ /;iaڍ]N6Fxb› d3=VZnNku HV!R,i#ʛrl'S."kKx;\8s[+KQ%N:1y/{A0NJh+Qe&,=|&bhbV*앃8E#S/$'*DzT&Ǚ"JS 3?VF&7AKʪx>feʤ]J©&.sA#T]V*9T#4:Urנ)Y&`Q d'豢26@e9i*WuJYEc*wsa:FOa8 kZg7ԁ6&{Ct\9≺4YPN=PD0A$i=^ ҤvĘ.s3sb"bq/fi4kRʬxE9]C˼Su*9G>?JTNH&fo+Bi1R`K̢tayzpig-T"D FՑNwc:/r}ও-C0LŐpO $jn,G46K-՝ǟdr7uNO3U.&qN"Q^:ITHR0ݝ12Gٵ'=Ul镋9>nA{]!4IXFEM.O./[!ZzVvMǝ""J{]rLJifb a9H_කP&ϭ(˶BLtNlCQ]R"7=Ix - ":3cUE&*S^/'營"٦h*12G .%|$6q<pOK#b β9ęV"TtPHf+ fDNnp :LQaf͝1̐'x'nN"~j(虞`UhU}. U,fGx >8΄D%J=\4x >'YΠSaֻ1|`#d29V]X lwG&roYG׆xC  Nr7=Ǔ?w#E7gn4Obԁ]#X>Eonm,uhm0֓_wѻmpVU≞-х!q- qa'_8λ-'o3:{ˆ$oGZ8(bᭊ }hѴv?SZcb>tu}<5$@whh> mt{$>K{aۨbUxNN +ݮhf6r=@h;#604#㽚˩A% Ȝ8z59O3^VCפktct]dKD8˿+w 8kxS3xF&yoWpGȱЋZOު(pY/+.ش, l i^F5u[⃷߰$hj#HSHU\tuDpOXf3I5]I] 뺜Q"J=׫|WsYXAȖIv"5o*hmG*y(u 2 ٣4!z2Όߘ%qƈ:*ECVUX nˁ'_<6*r(LV\8@#n7p W38=)\GE'Y(VvoR2&zt،R=ְn-qC:l$hJVa҅>`16*7u׆.#3-.0_gh#VefyԹ#hҺ n[#la>[" zy8oƤEmfQ3rMW m@['Y يXYf[}JV<גk P1X.7G%X洉"MI^PE mHI5\Z]Ce涙50h1 H YXmn힄uX&jbcXT~}[5|db)‡Y!eRgm/jIp٧]=kɋ*~SbƵ#VcT RYjB>zyY*Y)L:uWfXWMfC,B&hƠ5Q29:@iR(Tұ(-f47=Tu mgINHaI8ZA5_zy{v_Ĩ˵D(-JUрluoUMa3GܔwWA5e`M^dmv*ڤT%N6 6"b٩:S)l b!(n3$GO\XK6c|sWc(UeDSK͘E=zeUQAinQe=#"WaqSk#871g/Z-D[ٯ2 ZUZYX4idkb!XK]YpE3/qxкj mlj5UVfDMHt TTMR&)fb7Y1Xh56D In$IZhhudL1GNeˤPLIXSutX>ə!+3 v $M֣Rhm":%:Y+T$iYLhqJSՔ=HldIZl" .*J-FЬeҩ*i"\8bK5Uhô XBcBX`RaJg'?WY}5X,=jSEN+RVQ[MeZY̘j\bS:*3$0A@.Y!(F=b(M ёʤ3ɈȊP"Y0 TO+Fppj0 4HFԄ98:73GTM)'^+B iIAM @*ЌTf\J5l|tIH D ImzL)lXKʵWt љ#k$+Btˑ,Rk Z\=_%fDrT1$QJ%#Ho\FpYzTC VD'`"*H5HPHr0]EW0\" :%xNH~ZuMHHc|Ԇ F!ŵaQ*P6<#8Lc`R`Ms)M"*DÈ0^h(:SY3ԀL@z+9dgW&$N$QI$CtYTT` (@HGC@M&ðLF)!F@Q($LOFv鑕4< ɇZOX EBҲOqFP#\"@.ELP*>(D4=*Q4Q "![lW(࠰BOUVz`R#=WSBklTJhT **Ț'ldfaeWAԸ+H&<#\Z%_ +2'荖9S aZĉS ܰ)E㣵Y pT. X( 1yaD ]")S:3W$j r5YTIKʭDX[2*ҪqՔ`Җ*pt\811AÔ4Ҙ*A1ij%sP):s$ ᐨ OWEZӛ+wF+̰ZUQ# 3D'&F/*RFk<$HNPF! ADMLЁ$錎G(!<13Hp<-0Ep050>Ai NF(dIz3)OoTFԄDeSQ %L"O8$eQ!+5 ̉GSP"&LR3T5 F!$?SYɰ!hx0Ep̌gBSԄQT$saU͔JIBf oFb*EpRUI T *^5@$Az4 $tKQ$" iS9p}NL AS3!ҢWDFzH̔IQTh9CpҋHbHJ4pb420*,*a03L,%#ZQzԊӊHR*D8:17*Q068Em8%@|:J(P+-S) H8LzN23<*3'%q(R MB< 9XhѹAjBDIJhp. R#L@DZ"G4$Jgaz)jDX0QaJg#`8,P#LdȊFiẊdEHIR H>2 Bjd IN i-e'NJfIL~ƔT(5A eVVp-RA4ḦiJ( Dǫ,t>sg%YW kVhuDZ2Ēd$CRZDr\Bm\!Y!HPL04LFRGk!?7Ax* %(V I,5H<\AS2ܰlTFkP+9B:EJ":Dǫl5B:$ B4eR!NM2\_b:Dܰlj\"Dge ǩ 4 W$((s"Aqf#İ%Y8E(a:p$")Q,GT"PLMFT&Ô Ցs԰ ΅iA( 'b%tŐNC8GRHRFk4$Y)pfpjP6,ANAHpt}Bڊ jETHWU: j ^43`EQT@83EP2H(U(F όAҲP<\JȊ)$Q*%sĩ+ R+#;X(I J!=OE!Vp̀uGx(s`xP&GR / ÈY %GDaٌ$7<8'B8NH%Dg$R!:H$#Oo""9<5H\HrBsSѩ9X(5zBS@3g =I$:383H8E QPLMLrBNӋ 9z䧢HLazB1ITj&Lext" AT89-t'#O 1 )Q+TF$-(A@+VdD$ɺ GR*2' g>DN2U,5j҃A' G*WFrp$!8Hmȉa6ET8CP"&[KsTN%NK('&;ETztJ"XAsLFRHXL*#$iQ+qR($\(9 Qu FL0A*R7d%Lm࠸2`pD(1Z%*ed%S$\XHk <#8 4,HBJseFUJkxntAΌÈxeb!8A k"CɌ0&SbZs 8!υ@Btn = A SѹH ) lH %Ssd'ptJ<7. iɈV'$;1GZBm<%HE2azMG3y =1#Ng!9,27 x(AQT"#0Ha:@6W 6EP+&QDA0H'hb4BJĩTJG(qj$42' 鑟A$ 3 93IpX6%";8N Hox I"]]ABzD2CI$ѸX&t %GzN8A(IZBH>ҔÙ9Ғ"+"K gQpP")BDiH+eȋ'"QJp p֨X"$k%Nkfpi@8Ij HdCJ%p(Es Oa:Fq$= $8#1g&Kd2TGeSb0LB4 S$¹q #B Y:q@MNQ5&HO &dd!pAYQJPpPV", A1 IGp2ðB1e 5ej ;%$LQx̨J8= a @PDtF)aB$E 9'SdiC' $q:H):`p("􊜓"+bPFB <7Fi XOJ&HA޸J0!6>Hڈe3 Q0GtN& -#:Z$ G^ܠlj$=JR@BpĠ,"_QɨqJ R 'BS";37<*`,N6AZ<1At֠@1QD )8 %s$pFS0#Lg\J©q:p0)gAJ I(Ѹpx()a$G4CT( ǫ*T875>A ʈG P i$HiPBjMK'!HAHL<.A!-s™q k d)eiQ*aab$"Io A 3)D4ɨ8"KP6H0q S3s $8FiO8'$)D‰A2z$'$48*K`4:1, ?%B4Ā Fa NMŔ抬M<:CrpJ6:C$D)ÃS J-$ImX%Fpf|.!XLl*$(FIR! gdDC("Ni|:B(4aH|N2YC4 )!"Oih* !/GiG^8Nb*+Q" %ѸL&GF@F(*Ҕaµ3 $Ajptf@DLfH $'A($ hXQSs鑝&XiԦĐ,58J yj0 B:Dk#<*Q:DBZalxÐRSd0FIGD%(A™P6,7EtpbDjbx ZhtJB鉐䄘0Q0.@:(ٙ%hgơDA:3bjP(UIl| υ!J%Az8+>(QJG:sp&, iZqzh&$IK<*Ғ ÙhL, $ZAj'((Ct ΁Q1%hNL =71 aȂ0g"b $QHK$e-dfx*" ( Q4Ex Y8'0"L gl| CܠlRqJa4F#!N iJ i8H(1i:dmx87#) Y@`$%!%2LՕH $pjn3Q&,1aZ'%23DaPY)ԄDk#XDuI ( GdiHS .R! pn8BIJp\8!#(K20$\a HOAB$`\"$9٨D( ep(- jdeq!qz !qizB %ʦ!es%S!'lR#,! g%pjT iN #;\iY8EPBXHK"9 =L8( d P G\27JB1I(2sqdpjxҨ86:83A`4#8Hc<(X"&H P,sSbZ!)0Qa(pJB4 4K&ʢH,s %80-!1AJ@pfTH D,ALFģpfP()8W$18l}-O$e2X8HkꊄTH Gl'dd%s!ɉ N(qbn Α  98LِDH25>EP#9HoNIH@oT(":NM F2B d)SB1qzppp6$#:Z 9 yJx$JK(#Lm0C(F)GFe BZgDp.FGd㒐)8Qj$ ҃BT%B,BBliAsQ( s I a:b!=P6FBM!A*ãDL$BDotBIN(qFIgF'SC8PL<DN)͐LFù$ N őpnpA@D )Hqjb$bSBj Bj"YQ 2@ s!! !IZ`8&#Jx(X&EdNs01<!=,!q1-0ppnpBNMƣщqpX6GԈNKĒAL6J8a(f'ajىQI(D$iN ˦HFP6*BZpfN N$'"dX8%#:58%&K%ÀְP2>% q4edg$gAƁ %2NQ8A2Ƨ#HpX2<5 R%0%q%h8 zLF e U&Q٠lT& ªȒ5E|.KdVGHe3pL8eѐA0GҠ GѹH<5LLZD F~j Qd )!iZiAp̉ g&F3spjx|*eBQ*a&GCL&R">3SD#LH,t J8 %8 f DpnP,CTdnP8$:F#0pC0T =aZ@ pT<C A!2LRF, eT8*#<7APLo\65Hp*3`tlPX&ѨDbY TAt*F) G0#+67#NE$AOME!$83'ƩP(B1&YI OH`PBɉdqzHMHpnX<Ksi(5>N̉A̸$IB) q5!ijp)Y4 d!AZSd =iz  FgfB`HH:px. !J$Ց"MԠڨSPFaz3dG#K, 酄iLFb S %FpoSb "9%0Hbzdes')Ip SOM A ! p4AT2Gxf@ZPLk A"<0AzaZÒ)3P$9(&HK($g&Hʄppό9HPHt45H %Q@쌘pu Y@m|f0S0 %Q(6.P2Jpiu%)ٸXEBP2:18:̸L2:,Ep]HNE@X6 Jd0 IQHkpJ!;3>5G4R%LaLJcpnPBtn=Ԩ́pX"ᔐ0@NBXadx0̠P($FI0AJs)Gt""q dk#*gd$aI8*Gp,a0JޠD8M905<* *'¹h<BpP48 dP8I'Hktb 3#((S2% SP8EpB8HdN<81 $$ss0-!-q4% QzAq:3ijH6Cxna( SK0Fpp!"! Db$2 ɄL A0N2*30")6Jڸdn\@L̍x}d‰a8 :S23q0QJ%xuDA Ijs23bY8NmP&H3Dd) `Dp FŔH0Ē q!ãss^F%b1SPP2©ѹ0 p CH(#dsd鈅8' ' a8$¹Q Gaᔄ$"Jk4F'ln( ܸ$"8sXsP( E8X&)p4 gHʢAJ萖LAI4>Nba4.ʠp.$:AV(bJ焃BjH6(0Aq*DazB 2`4@"0N G8gqj$a$B!NEbe8BzP6's &Xa NqZBj!8=86 Hp$%TJa$fH)0JOHDss!H"W7HtNFRHTH/ G#q$F$<7P("pN G`x. =zR R ?%#9!+ q!q0CLQԆCY4<7* HΌ)T8AԨpfL!81CtN,"8FD `H@:A Y8GpftFEiQ$C a93H&2(# )s)bzqj0 %sQj$pnLGA0#C15<dB3BX(#<"!BReyz!S#,Ft O ! e LpP8 @䰄p@)P63QI("Jx DPLmPApNF2&p8#SHĒ(()qes$ P6 ea87.#<#P6(#877FgFDS#;5CIHJ΅sAD, P& ds$NEHjJ8AF2@2(B0"J%*VN͑'HN#! gdщppb΅) Kg`XIf`*"<Iz SÒ# NQEľBZeS "a8J Q υb 4.aZ Q `2Y53qZx"IܰdnT,0sSbAܜ =FP@Lk<p`(Fp. S"J$bԄaaZPRf}JHN Q0B Bj2!(GR" ! :Jl|hX6.33Axp̸N#*G20 #3*pn0HfH `4(S! KG8<' Na SbIHpN6:3:LKFppjޠ0N s$YZssNP6:' HRSBj$%saΈ`NiLRFsiEヲAƩ h0h '%ISptJ8(2 ٙAJQzd05q8JmxhH$ D2 N3̨d|J $ppf|J,g΍JdQ0' ) gB( e9pjtp J-D4'H %DA(78(!;7:'! 茋қ!>JdJL8M `AesSB! #$ÉQ0E2X"2  #q$ %g"!Q:B3P ŔHP& eH6*ˆ(-@rfx*N C1 1Ei:b3p&HFSp(Ȅ90 CzQԨl gԈJ‰)I@m N)z2((xIX("8D<5Ba4<%HX(éq@d$s0-1 1Di Έ0sBƣ91N#(5sh a!EQ(GH<3.N@sdFBFB,3D8e3N`p&$p4O 'BzA0 &SB05>Hi8Fsò"'"T8* )(!8'Όe21`BxpBqFA B(8<'I Q BSQ("M%$:1<'s♈ )1!ΐ"q4. ( éAddGʄS2Ҳ)J0g$ò9L(A$C( !ɩ(Ήa(`8H,AYzBgeFa$Ods(NO9٠pjFSiQdf\7>5G|bpB8ȀP6> h#d8  `( Gs05(FQ83Fa$Q4 $B,IJP<5>1.0sX"#Og0H" !Q8A $Jd8SICpP2$8*#ClP878EhjTD##8<NAHr. 28*F0qDBt* C "IO8<BHRHrBFrNB٠L6,A(Iƣ9Ԇ%9(! bY4<1.$sqZS98Bz-l 'N茐d}$(q:áXB%a(X,Q$90A0:1J`# hfJ鍊eA7\DR6GΌ( #87 e@Bx0e3‰a: 8lT<B ! eP" #q8'B⩐$9pn02($`bp|P#lT0 %@H ơ bHJA$ NNJP iDBesiI#ٰL(CJxf4B98ΐ&4D%P,BT"#(΍OѹH<IN7< R 3$gFlP"SÒQzB OH 'F`PDHR#( g "1`(` @2.5,(h\PHBJΈ3P<5:7 #ܸL2NlCP, <5JLDpB,pNˠ0 \4.I8:91@I΄sp^8<5JHN0 F FD,Jq!52b(gFP&!(O Gs)Ḍi,BY4 'FHEQjA2 lY(ddCdb08eBX(2!`tFpT8!gNòsPF@ 2!=2a$!&GgB0AzBFPΑP ŲA$b(pFFC8@6`H PBS8DZ NJQdX8 GQ$a=F!ύFA#@ hjTF^4:EP%bz#jgBxYzXB(ʆ%pX!Q(tGe3p bZB3!3D \(! O x aP5*D'e@2a )0͈鈅9!! NEb ƅs B e`TFazsP"dB8.eB, eB sB1HJS2p8BI883"!!I/"M/ ѹhnΌJ$8$He8 #$ #a8' # %2 ɹ)(qḧg(%b0b*JfHBI$ɄX F!aIHN a,bZDgX<0Fp )Y8hp*pN8(P"S2B0<ԨxnԨdxQ9(ѹqd|S#)8A(P8CRpD&xj|B F%B07WDʆB1Q88#BX&9 - bZ8"DӓgBS +S$e2xf0N  '`j|.OF2q4 a:9 a8EvJBGP C٠D'Bl4pFJePBT& a4:3. qpx& ΅9(s0FXJ2\48LO(esD%2!FhtF8N(pDP"Q$ (GSQz㔆%P< 8%`SBaZ A8#AA hPHl0$X&b859 Kdb 2OM GB!$-!INhxN<7$J OP63)dta8JO F0"HĨ b`Ho0B1AA8%ŔBX8%HSeSId$p !MBB٠LΑ hp a(daHB|bO #8Bp) FHΌKpxT"ψF'Q JcFX2(N j$P6LOHtJ2A`4:1,)0ùH&aQz9BjP ) əp|N22 Ax8 2j#(=D288130 BD($Q(S`TBHp&BT( GL<58Lh\"$H87d%SpxtF<JaJd$$g`DJ"1GL2Y4 FbzbC Az(b1Q̰,#Ne %Da0 0, S\4*2%Ѡ $L/F%8Q881N@ɸlLB(%΍ 85:78' aÃ@%bY$68<GFDi#  a$sHeP(3!IjD@(b8H$@q5<:#ss  A4EF\4$J C$`4 "(3d%bdȆgd$%s$)8dB1 %p q85*A4* HNBəQHP" 1DQ(q Qj2h83*bɠ$BA3aaA(DdB٨dJƧxF P3$-20J`(6<8AޠLFq 0A@`(  eBq!3 pp #8 K87@"$i H΍O Ai\D\C%P( ҐB0*K"3S$( B ™)8838,S Sh85ɉAdģS) ΍NQ!CB$'bxO sb FB԰D6<#$QăSTD 8% ɆJd`bp4H$@(#9%B075 `%0sdPC A Sψ)X N A058ErJ eD' Chx 8(,AdpN8:%B pf< B ɉP&`$ FA48%a&H9!XeBB 8( eѰDl8`NIeB٠$ 9!Dv*ΉlP6: Lx0 ba8% #ZħP"@FN9!  ggpnI8'PF!٠,FlP# HFdFBd8 D,a8b07( AӊHBR"ep&BY4LFP&hT`j4)8:7@6 L(S!ebhtN6&ES@8( )pF(QY(H&J21 %dB(aI(B1aYG#(Flt*Ba8 =!hnJbY4<3Q$ a(8(3D!B8(JAdѹA)JFxfXP,3aAY(A(#@A8`$ eh4FP$A83A$Dd80 J G0a0b28:AT6AY(sp̍B̰,ɆFe0HFhHh!ʢH6a4:! Nb `n4DpPHo\&A83<8% `J eBLb87>1AT4. P#ٰD,7<'lP"PF2D !Iz!q(  JFB12 C(a:pfQd0INISòhxf00!PBtssщH PISdT6(F 2`$(D( p(aSP"0(J 'Pe%)1e8 a$ ܨP" %baFbpP9! X q"1pT FQ88A4Q(υ`pF(©aI( FgA( G#8Q #9!DYCX( H6Edg@4E@pn|fp8=L8,A1F% ptf|!Jsp\25 0 9a(S™qzBYeb٠$F9OF HO8( CX"@(GHF%@(`l$ebL(!\HpF !fQzB̨pb< Bɸ$EÔ`nX2( 20ea$IzD(b`ި τ\(dPH a(s`|B `pJѩp* R F9HrB,@™Q ŲB!! ŲP8%l\N@ D, GH1AsS!0>AJFŴAa!9!B P6* A e!adP"p.H(7JQ$̠D(%!H,B8:5 J8`s!sH8:(P(! 03De9!™AII0ptN A P&@ FAN@ %0 saptjP&HAD`xPB8.D,(s0hxNlPHo@ P((QP s2HpFbT8<# ehtEq8' 0a s`p.@!ppTx Fe@ԆS! ΌC @4*@`pNIBB (b0CrJ(SbO ù$΍ a$b 'ăBp0#(91, 鑌$djX$P&FP8%x B8>όB8:% F0@"( C\9LQCF0 L8%BQ¹a(FQ,`jx.eppN(93`D2s`lP85, dP8'9!PgF#8LmP $H xbP( C$`43<>'RG208sFsb % S ,0G#LNJFa4>18'$8QdJ Q(`0QH,`t*' a0#P" %8<3@,fFP"Éq K@dhxF, CD B(DѠ Al0 PEd0 g%x.!:B$F%2SѰ,a@85 B0$HePF! 'Q FFa$JB$N K"΍ΐ ˆP& 0`8: O QPB`$'e!ψDpN(0 HH#!0QFe! @éѩpfP& I(!@&q9CqpJ<E3Q!sxH6, ppJ %`0͍FgFa(B(ON lPqI`4E(0Q08$= KDΉ9ܸDB2lt.2q  K!X(CJ0 (΅0 8S)h0P # F0P&@8>%΅ SL `hpN,O őB@6:'#87>0H 30sP&L4<7F!ssdgĒqI e0 CH(0>' pfPa00%ܰ,R#B!C`$ p BP%%P P"$HM(hn! Qzb! $bq$b 0GR ܨpF"( C@h$DܨpJF% EppFBFb\( %B a %0a JXQj !B Eˆ h$dP"K`88a((FpP Jdb CX<%@$3 eX&(0"3Q!Q4 #F30ap(a00 % Q0' %'!ptb00sB!ρQ FHGd$g0JBɨl|&"9e$`9I C(!X,™(0 A#lP"!D ĒApt*"Bp3xf< #(X0P (P(s0 %BPN @ H(!e!20H)L2J`pFsP2, ʄ Ke8!bl|nx.%`tF(F'FCYX&(A BBP&(!#̰J@88' eB8:BL $BY8PL#1 AG#( S#0 A " eaI( gƁ$$Q(DB!3'A pFѠL8<3$a(EB1 SD(A3sB F!0A0EAP& bɠ A8C !H,da4 (D2 QP2(30G!b@6,љ#9!G@ Q AYa881F@%pTJQI(lhg30Nb`$ƣhnXI#  (S‰QD8(¹qJ(0C ʄDsH3P,d$0 K2a$ ѠD,eFp0IIJAal4aea85,p4E0bI(P2 DN %B( HJB!0q%epX,KH29(A0S#$ %ltnT2HĠp. `N,"D8)1@ BI((G2I8" pP 3d@4XBʆ%(hpntJ(ɹa(C s`ΈG%! s!90: e2(NA)lTC8<5*đ8 a%QX"#( 8`B99q h(%P6 dJ ΁0 BP"QY883<5N FlP2< N%8(gsB¹aI8(B\8(P"!0B8AY8>1# =PΉ%@FeѨ hNG@2:7,a00 @P& %BEbl0 %Ѱ,J`jT<KX(  0P&OCYܸP29!Fea( %a(N C GQ % L GP2, P#(`bT4Fe Bİ$ Bxn DBFPIHNp\&CqaebF#` BP,a4(FpnFH eb8pp\48' CS2g@<5ɨ$B( J%0@( 321΅P6(eΉ#aF`tnp.3 bP6:7*spxB`tJOK@d(P8%0SQd4ωC!Q D`PFQġυP6. %fNEPBpf4B! ΌH" gBSSB J!#ܰ @87*bdaI48CpfHBD<8382q$$)0*!A85 "0( Q$bhpJ(a87pj8 Qp!N Fexf|J,éhpN!#8% B88'`8(B( ebY8(BP,A8EP"(S2 FH,91O# e@N d$eP6(a!Ԇxn0A0 eaAљQ%P2. G0e@, C AhT ΅gDBԨpjBa`$ O ȄdF4h4C sA8' 'ơd4HhP"2LgAQ C Fe8H,0ʄD(Qzaѹ0#dQX9P85. F#h(22  %S B(sB\ H@$L,28K$ P 0 !Lωa$pft C0 (NEsxnP8790 eb(0AFs0B ɩhpx" %SĨD,Fea(%2sqPBX 'J`t %`L B08BdP"b YjD#B F2q lTx8G! L 2epxf4NC(9sQ08'2!b΅B CsX"!BY C plX2x&7eh(ăC԰I(!# #X81Db07 "(!(ùA 0pf4P(2@pDbɰ$9(@ $(a15LJB10 dP(ʄ@87,S0Ga0sѠ,1τ`tfT2Ea$ Sa(B%\4 P"=s# `T$@( G)S!B(sbq81΍ρhɨG2L0BI(%lT2:#NωeX&e(JF%,=8#0 e!F'#( %b! Fb%\0 焣2 (Q (`hΉCٰL"KNPG%@(b٨,B2@πA%`Ha'P!ggBL `4a4:3 epnxf<0L©Q@48E0 %sQ0N\ F!0pJ'Ad(,GBY4Ie@2:8(ƧB(gFsSѨL6 %S`TšLCpp 0Q2a28*B1d32 ! CK(9D #0aD (a©H&(@483.2FܨL,21sP&BpP΅Sa0 ehP"F(5P"O aB XP&SDp̈eP # A 2Ga$JB #!@2 B( %3P ΁)a( e@ eb q3Ѹ,13P( C#!FB@1A4:'b hJa(ODS`D2FB٠L6 C٠ A( ˢaI4,8 b` `)0M C8 epnxj\$gF((  #8:%a( eéaC AIXQ"L AщH<'a4,883,ppN ΍B21 C(@aL( dT"C85dP 8!02(0sB)@F91%qI b(©Aѹ0BL @Ba(C( !P&0BBʄ٠l|B,!bȆD "0(3%0 ePBqa FѨ, lT6GtfP FbP<%Bpp#a$P&QF0!a!B !J21AP&%B,b $ b0 s0 ˠđ0 CP6:5X" A(QŒAB08e! (N91aBDFB(BP(  a0SpX"BB Fe@A(d280@87<'A1 όKB B(Q0B("1HC021P0hpfF!a"$ Œ( XP&P(F@" ˀˀX"!aIJ0 K P(sB!̍K21dX B @!B NJ@2, X"٠,A @6(bɠ !@, AazqHEq$ JF%sÒ0B@&Aɠ,a032 a0  "1@a$21NԨd0ѠdtjKBP6(HdsÒ#0ĸD(GB!٠dP"21B@aKL!BŒAK@&B( (lPB%b6sJxhRɧigo;9Tk.C߆Ձk4nK+bdqR &z$ Pq1f;j -z^EDځ IBy6.O鹂epFQֳxUY&fq(za >&m5MxgYs̸m?m$LTw.+Uw8.KKW4\AMtq.yȖMdsmW sA<&r[iiQaq2lEtlJkTB#ex5u_x 7KVSۄb4\@#L;1j4?iR47~K@*`Kxh2EDE_,,HaBQ-M cFӤF6fy b=n-8,^=?NBi̝Fe2VK?Uȇ٠[U|Y)b*t9m\sIaK\$ivoK@RgcITΟ\u>ٗZwq}t^SaFQbcLf:]^ Nq~8X]:3br̝ث2.FS"W}) @|4Y R՛Z+1NS4[TZDޏ)Bɗ'x]6(T 'ڸuytZ5}Qx(hRTm?Yv&37lG׃CpF9:EҬ.@SU>L,7ʟ. Q=ᾛK 4 \ &i4͠\b:٠,|Ηd7TNE#,Oba"mGdrgڒq@NjFORM[2/V&-CJUH8gW VZ (YҘ'6ɿr;J5a qozN2.dUS: FɈ J )w->|Fi%$7}0I!dڝ|A d1ACu"$0I=2-X=\檻H>d,Tp", Cs~`/yvq5d+4ࠣD\qtKqS5y^N15> /++Tb8ˤI֝Df+\ZN9iDv,uke}ٔ$5!< 3snuK4k21m?4즚8K$#pD{ A %zMDu)B1aEEFr ԙN/ɧ槟e%8&`əUNc\ ^-Lل,/-K?(?UO1MӲ'|Oᔋ;KPh2`]ྪ LJR*"nDMz "L`1`Fi֬&?9L\_sj<&u4}E W~v@O:`@y¤I38JD ^isЌ#ZmÕ"@`5[$49w皶dh9ݡ`o ˦Y[:O]Q(7&>BFϐը{#r E]%df>*:tXι=hC+/ּ.7xgz?|ml$6ౣ멊9O`5X ǔM)IMkQ\҅UW te g!"GdzF)w8ixUsgx@$IrSpkZ ٫nۨF,Mkyԇwl"I4{ᖨ2”,C드c9 xɶ,g\тnK]LH\­\!Vp-D9[Iڠ&ˠqh5UG.fƼtUl%ְU<0RJvQ6BHz;!D^Ptc"(Bk|c;@:,0 ֣5`u7RQ\i2A،R=n!+Gu\묑9qY]xKFPHf{tΕm`OxTڊ<9?㊬tY kOt-w 19UR(LTSҩ%*S&P#)ZÃ%OI'#M<;H:0yNHO\`bEd)0 ۅ,N/@;WFزK"k"l^1nBAj.NX*bᙚҡ3X8˵qae4$]tQ!h 3" uQ+UXP8'+tFRv-J- BfBSnKl")Z63>Ctœʦ$f&^\m$K(qHzjhJo$2kHEa<$;,6k-( A35QW%Q8Lp-˵"$4(Jtb<Ѻ%;H/ЉI1'BZBйAqMLɔx $ Y fȖ8S /&KanJ"*X2qb0%!G30><:L RA'?C =qT8Q(@CFe5 %ĉNLDZ$(1*IELidDʭXZ+蜸.XlD)s"Z1"kkԌS_8AKT@XruQ+2'>#SVMLHaI! ʬ@:Јc` tFk#9WW8Xz4HTeFq%Ê )f7(KGFDV7 BhYMɃ#^\5F^Ƭ`}SŋmcA+3@F\ˍTPp]G*84EvnĨNXYtW@vE]0aJԊFtpf h˧3LJDCRU kx}d'BaM2j3$Jy 2p3܌x8!;AXze4FHLh$ %\Sd%9fFT)E$%񌌆HZEtQ}FHLR&΍ FhSԆ!F9ptD#IOHtnX65,He 'kFep. '!Ji4FeA8#K"A@,=zi"IE,̍$:1 PHp853HziلXɠ8X6&\ N6Jl b%3sspJRb}s%K8*eܰXB/,lXY(D*seҡV40(R)Q&J3a]3DžQz!BX2 TU ꈃ9 QZpqԠ FhTALsS %3@#3Ctb hpXYd">CFDDq:PHq8F3b"DB|"Cڈ#I(q@OLtlmx2s>TR*&q )PFb2HQҔFÐ i A5D ˜:Ci r#AlU<"8B6 TEҚ(07CZ$i1LuEF mtT2\]2z%D#>k!=NDA Қ+Q63. -e%B +#(a(HIRJ$@(G~tިBr8 sT4R"%028O 2xN(dD(7<'!E90UDA`IjshkҊIB0R!NU$91 A1-" 'h*AJtD-$_`tSS e@\fG) X HHeJȞљ94*ENG xtiaHo4I4I:%VV"Evf|"Hӛ I(YJ0$8AEÄgdp3 0R"^PFx4Qb- "Hidn| 5s`NHDՅ$I҈(rp4OH!`8JHHR G%B( 1iZSDgsGȒ38CG8! )87#&)ATL JGA1QQmeİ(9Sazpnp*ABx*3PLR2ʬgIj!@6>BQY8G`xDm< BjP%qHi\7Jt$6( S`xf|.F:Q"8Nj'$ IBW JƋSD485H0ѹa057ltn4F( 8W8Aq0GxnntFF2KfHWِ8I*i1JI Ijq8z's3%WTbHo$pg I!%!AY$Jd3$38Azd`4 ajb4NHR$+BxtNLeXBVHm|N8NIHP(!?19ٹᨐhm qH8e0SD禄 A荒(IZApQL( iYz 8<8΍"?3'F6CvbpY(L4AՍ:20P("9GopT' h4Ar0ahDzjpD$tȆtOA$g`.Ѡps@vjjx HpB(CvXV`eLDtB8MDP6>\i ,*X 9BZDJFsD$,% ي $H 'K#98ʆFGP(G"?X߰ Ɇ ,͍OpOTH!Aa( P+N('$iGXFlb ȐN(#LkxnXQ8GxjJHT&p`u$鐕 0aCٺȊgBpFF 9ZeJ"pxfd.˄SiS NFPL=4GR#;'R &3Az)b qPIS8geAj̑$,"SS$\ѩhtb`(#:1esSRpxN6>3HșSP HKF&'"No,E00OIF)LD0 i%[QI8JHʬm$=L,CD@ + GԨY*$i9E4aGebzòHpPBlL8:8H" GiB RLA(Yj@ xL4Wj}ṙa AjdT i%^A !(!^_DZ8:Ajᰄa9z i lLzH5.!;A$L(3><'EX2&ON2Zg`3ZP&GRB>1щQLFep h47>5(sX"NIʜEZ)QH,%Ґ(A!-Ҵ"ҴFC:%SeBɠ pJ!Q 52P$B$;g H6C2RKét}%'d$eʭ  @ F"2DDXBh8!B9A٩SSLBi0785 $s$=a$p>408LaX SH#8H`4*DZHkRQDP&aJbᔌpD4 eJH g$'0JeQteqT(#NgxfX,HF's3b GQ8 pB8'Iba45NɈ!:JԆ#z2P6C<6. I 鑗 ψ%(!A HGáFgd%o0A87.$'R#Lgxx"egG#ZeVRd|J((1<,͐D@BFBZқ&9dpH(#( @ QZ%ST(dPL 8 i7D AY8G̐#I>3$h|*iX8Q*( !"́Q83 eSѰh Y(SeS$S2(5֨X%2S@E$ఌp9x8X(QZBz)OGhٙP2 fKԠX"KdP87Aq Q酃b\DN!Ai ŴHO1=FBeEdeѹ0I C P6:!BHp.K85$`N8:'sxT2CtN&h050"xj0Y*EP6( :JôHjB#! ea4HSG0($X8PFrb|%&pPΌOpXdp83,R"9HoP85:J IB8%o\6>5.F| JdP2B L2 %AlT" IN͐7I Y:ˆ|}!A01C|q:DbppR G!2e)8:!a$"89dP2eSQ8N O THD !24CLBq8CtN,)pI@L&#) OEgpX6%&IO("LLA!51 i @68J l}$OLK%pp&BP&KX$LB,%L 0 %(iC8CtH JF8>JFgD)EDCzÒA(7 5NR2E , qIă!gf熣PADF섌pxNBrN ƣ"iqj'4s%@̈S0CYJ%ԠpnTP& G荃pQ F# 4 W\F¹щ"gB,Ό9 28IE!9z%қ&H 9$NQaeS0$9! %B! %QYA`db1 Cx*$(3BD,!OmD8N,Q8:1<1*FH a0'$83EP i ¹("9 b΁9Ҵ! $B`H/щ(%8sh@(B Qp48IHSJ& FA 3HpS Gp9 5Ԩln|D4MɠxnjxpDII4* 9 BIHzf #IMBPh)0, I Gz&": @9 P6,3ssP3h&"? I8'S NH ɄS\FB12ptN<5͌OHL&ÔS MmPNF3QLF6dG0(2s%TDSiGP8#P NL(df ɉ9Ҕ#)pJaH DAI88  N2x8=1 щ("#ԸPBo,A٨DF0"8D8(Sb8#l "IC!% 1 HO)D< Nhpp&ad `: "Ho'ÐQTđppBF#!@BP K$4=I891鍂QDFP GL8fhCF`|j8=  #878%P"2H1F(-H758.SBx$6,Dp\"H(AZb9蜄$ENQ:b 1:R!17JAa8@"BI8A0GP25Α!-&FCP G%$!88`(Ba@4:'%bYqdxj" 3 GSsb8:AHA(EpjT<GS  GpNQ :5Q#9CV88His`NF a$d0Y 3a4N/$HM8$) C Ò3b8('d8(ESdpxA8L-$)SÒh4S!qD&f  seB LHPF A:qzd#00O$Q8' D g̍Ġ8 NPFd<B!P( G#bj(=0Gyjb8'hFH2 Feg@ s`, Cp$Qji Ų91AIʢA q\(#(!)QDX8  ppb|N(GiqL4J(=P"O GπH<* )x8 A( a1%a4<eшq 2SH`p*Q:ÃF@ %h$OB!QɨdPLlH$6HFaZÒa(B(2,$IK $#(@(K0™qFP(ύFa Fs Ԅ$qd͐AZ3 R# g Qz`8IJ gLBX(eSBL8Nl4GX" băS@,!:%0pN8(NPINE`\B(EeP83 2$Ig a4,K\J I*Dʄ@&$8B0(b S$g ΄2ʦB8(O#A!6 fJl!-S$ ΌS!N($&K8-X`(bpt"SS28No%p0 es b1!P8388'C SB AT(!:όG2xbBjdA%%@2 NA0'Jd$"8#C`dXL<5L8P #ٰ B 9j2zd%ltN6d9HF!%P6 &ő B"HmT, #%a:Fd0`ٙQYJdHN A(ɰp)C(x(9 p47 a4C05* F@"K IRGp8P #鑍h"IJeD6> p$sb!#) eP"SA AI485 !, %DD0K$d$Q(KF'ƅsb87.ăF`pF8 #©aI88gFSBɨdQ0s3$%0* G hjpjxP27Q8%P hFsBĸpΌ΍Fb@8!ptNB#<%KBLY:@*pOE2 9d|bB A!=3ѠD("pN$D$@HFrN6*2F'F(,D GQ eljT6 !Q !ÐҸ8ePC(FbaNH eAZ!@&ClxJHL,CT8># A΍Ebj$C0FFpX (KIH0Aa(F%phC0CED%P81: Izd! SÒ)8,FsÃ)J`$F0SiazX6 'Feb10G|jn\)30 BA @9HJ)bYfsE Bjd#(B Jd@"BH $i  %Bp\ 39 Έ S$'ÐY΁H BpxH<5>B AzDl|0(pnPgD e™a:Bs@ N G'Fd0sb,$;A83.7*Hep.": $$%  Fs0M!dX΄xp0-`nTHt43>:1EP6:7(3Dd $e$P,A90*F'g2(s0.6:8FgL!D9!!HHN2C01 ɆFCI4:5:5HV88G (YJQ8#ٰL6:'6 %assB9X"qH(OQ΄bɨ$C ͐Ih48%P2*F`t 3b08Ù)aKfSbhHo@a($A$ Y8'F!Q(IJ qBpOp0HN Hΐ4. =!bP<%ST@q@d85Ng$dga03pDa4CrN,a("M/B4ˠL pԆ(38No4$P28Gp" %@"0h4AFFiF%R! N ăO d(P&P2NO, h.$)dE3YI4,ģԄ( esA\Q( %P2*@G^(gBq(H!B N υA0ʦFl̈P 3%LF "! L65ET< ƅp*dh4D(P6* GFp (0)`\"!(0Hmpt. NFGÑDB`S8,EDʄBP8 JİP&!)#JKI05$ppT2ET27*al4 F2\8:'#Q!*SF$A ɆÙhxNdX681HZ(#((ܸ, X6<# O PGpʆgȟSρQIHJB(L $9@(əpx* %``8!GptxP<7NX61>:% Όe! ǩsAY(05.Sp(H&Jd@(! (`."(`٨P2GT GpP67.K0s̉e0C@F2ˀlP&DBٰ$PJB! )p82D,C G@eb ѹ( Q$IdT&9pnT7:Jk OMHFH6<%O e!2X"pxF6N D`x*Qđlxb4dbq$Όd`Hd0SD#P(&7Aae20*DR"` 1hTsQD,dbaL e0N JB ! a# aJ$@p0(B3PgCza٨pGgF)(HΉOP(FhN, q(g`T8#&ρH " 8.!¹ )tƅ3xfS08! ga `tNadD ԰ FFpTX<P6>h(#10 ˢq 3DqL  A'9X8GpbHXeBFP HJxfxnxfPΈa8<% #ɸa( Gd98<0G4dl4GQ02 )8>%#p(D A dxJB d@ #0a$0 C AzP81HA09FB(OHNJs0:58' ġdtJ,"0(2q(!33e  e I CJ$`( p0@<%"9 %Qz$g%F1gѰ @SB07eXXH6"ٰpJesB(B i Fs8gs03D%ppj0 1BZ`0 e09a" a N όQ@4*2(ea4(B SS`fQ(@2H6$ѹA@$pp0ܨpnxF!L!B GR8! 'hjP e!G2=bY$F%A s3Sѩ0`Aʆ)saP B8Gs`f 2d\NaY4(ò0 a88%3B 3hT"OHJaI@6p, 0P85@Jd8s!ɹP&E`.0 3QF  d\0= JHIRB a(FSSxİ$) b87,aX90N&$pT2<eSb Ba47d̍Y4 !JL6*F2 98p0!N0 P Cd$qI8GxBFP&F%b(P8b9SS$#`85(#8OQdQ4N#a48E`$0ptB, eae΍)H @h0P2Ʉ!`PhLsѐ`N ΍ dQ$21pbFp*"q8B("(QɰD6* #0P,7Js(P85(Bb xN 2dʀa28 faFXeS`BG`$0&͉"1 $˄2!eb0#Fጘ pxH,#8'eQD@( F%9a8(G2\ ʢa0 lxN("8pp*FF %QѠ %P&# Ba( GIJљa 8 EphpN,ٰdn\&@@xntfpxN2,C"1P d!h8A8Av20:7>1FH<7*a̰pf"(S$ # #8IDᜌp8!dsa(2CLQ4*O&ăD,0 ΅dNDd@B!ѠD 0 e F !`Pe@ eS!Bɰ,p F 7B( L #0JJơdtF ƩeOѹ0sP6Ɇ%pTĒhN`L<M ʄ( A($Bq$#͈ ,HJ%P ̍s G lXbeʢpDIKùpxF20O B08sq2ԸDpn0G0 8 C( BdP2 FL,"9!G)hjX< G (Hd!A3SBaH<5,pNH%@( g0pj\2EB(8OB@$A(!(eBa48% GS(  a$sP2 B1 eB̰,dB! 'G 0N(FSb#8E4S%0A a48' Ų0 # O9(X &F'`%pj<DpXIN, px* ΉxF,3sB, (pjP2 eQZ$#ɨ$HFPđxnTFPɆe P&D(#JA93ba0a`87. ebD0G@<eGg2 B8828p0sba47J A$ %0JaY$ # e©q  A( h0O ٸD,) K0AP"D<3 GԈΉ!b0KH(9A,"#EP x$A(f΅ a#8N'HѩHN Q bIF`BaD0DH,3b07*GP30pnT<%  A\( @A8%pjXLL ù9px^8 C0%F03BX&A( %`|N6,J0ơdT& H2 p8' GF9L, ep00BAP(EB8Idd'00(NL8(N B0 %b  e2shH8%$')0ppN A%Q   9hLGpPHm|N,B `$á$2ltf4G40"8JaIH BpnT8#AX(ʄP98:3>5*pn\&%B , 2xNFP0F`J< Ԡpf4$12DAPP $B$ S0ʄ@FpIăpN KP2(#+ J  P, C(ƣhpN(ΈSSp$0@)pf8E0@& KP H,pP!Oa8CP&2!¹H6 FA87(™H CdH,$dP,P"SB0:'FeBFbpn@C1EaAB ©A( O J3b AICA$ShP68% KBa$!(0BY42a8588B1B,hpjFPPFX( %P( S208 e`xftnT ɨ 0lJF%`ʄ2q (O8N H%A ʆ( ptF( Ge)ġ #gP(@(htjD@88P" 80 g IIF無,pt # ʦsbh8'J sX6:ppJGBF0FlP Bl0 %X"Al4hnL CxTDR25*L8 B A(bJa(Sb`4:5 $P(SAh$ 0P,BLe!B g$P, e2p85( 0BG%( G % e@("a)\(FFљP,7FP f)F@&)A2PaY$΅b0 8E4 J$91PH2 eBq a(2!BP<5 `4e@ s0A8aaB ΅! ˠpܰBA4*BIJP&O %QNF! ΍O#q"!`8F)s9q$@OQxP&΁@ $$'$BL6<7CB(sÑl0B,2l8e!%PL P8%(CXe! g%XF鑜B H(9(a8ENJF%`P'A !0¹px.Sh4@6( A( gB!C 8ùAL&QBa©P&@&#!Cdb2 lpNB eSB! O 8GB(!;75(2Sb(A٠$"PB(H,b(0"lT8 eB P( N)ln e!A$ BŲqL2*˄Q88FF`nx.2 C(%P2 #!spX&qNP(FL,@q2!sa85)!JăsO  Œ΀PBa%ԠH@(ED( )bY( xS0Ho82@pF!"! K'FaB(9a4,BD6I%`0ax*"M h$H&b7B( 8#AL NF# dBD,bLDޠxb< ObP8%ĠpFhpnX%0dƣh0xN,©0 ChFa DB$΍NE@"dsa4( P(P(geA 0 $BPFP X C(ό#,L,qF39lX&$ltpp.ùq(N hP$P"P8'b!5HdP(P S@JBp N%a(J0F! P6 aA`P&P2,B!a( %ôFP)a$3D%sP"gFP&s!pB( #0͍`(!HdPS A Cltn49!g 'B8Hm\2I無lpjLsBd|NBt )(Pq SQ(J"1 3bLF 3B #!GQ(A98>1D $)(ebdb9L  s`T@(L(e2H838:AGB 2HP87* P&2P&#0GT"0 sbQ4h\6%3P(P,Ba ΌJdPE3F(@ AC EpjPL,=̨ Db,PE!0 CLe %aDp&q87('H N g! h4!9888O  HpBP( Œ9,B`$!8F`0px.x4%0Q!AY)L( X"a CɨLdFa(12LepJxN (s@ "8ebBP(a0%FbI "x.Se20(@2΍`$!BC!0 A =2P,Ds( eP# !bY(pp sѠP) ʀ8FN 2!":BS!DB,S@N !#(2@ !G  C0'a$љa(0SaA(sBdB!@pnT EH'HJdb0GpQ$ sp.a(F# A (`$20%B,l4)1JeA(D A(DdÑl%ApN<* dbdT, A( a87>#FAH(NL GPFa%q$0:'KB(!)FB(30 Q˄PL(Fa$Ks3$DXBxN԰D(ܨpf ԸlPB(s! ,q$ pp BSB!S`BY80@q$Ѡdpn0E@ 0!( lX O ùp.K H2 `!P" #,FBI4.8QY$)! 8B8 % 2x`$%pH@6epNFg)S#:!3P2>'Q$΅B0  @ A(@FppnP 9@pJ2Feb(!(FgsbđX Cxj<!8azPhP)(@a$#(B830ѰD,@EaF PT4ehn4GQĸd0CX"hs  B8CP68%H," ©aS3hpbHF%0"9(A0CdpnQXCa$B( "٨ A %q)aYN '#ppF8(HNa#(aDZ8F a$ 0hxJ C( 2890 BɨpJ,0( LD pp A e! IZ`p.x. 8 %@(Fea #B!P$ a8Gp %B8bDDJ0%S L @88%#1P<3.'Y@Ήe`p`4éptB<: 8%a4( x.saB%`T"P`4*$ PFaX"!0O G Iz bI(0 gƁ NʄԨL(N FS0 eXd\FeB 8! eQ(D9!%!@I%Sbada$FCYP2:eÙH85(2aF2Ba$ axx83E aI4!ġ e@,bdX&sb!Q8(0O22lJܠLhX"0EPB!"@Lm\<5ebJģ38 CI88'!Ѱ(AɨL&sB! epn4 C`$9(Pe1%ptN ` ˀdȄP,B($X E2 SD!# eP"©HqIF#Y(Bɰ P #lN )΄0 C #pA8<G30dND #! AG! D !GBD(2!B(Fa`( 9S!N Ha(s`A(  #1B8 !(#BL,"1AP( eb,0aB  e !L(AP&O ʄq ΍K$ @2<5AL(N 0a40L( C(Q(#8#@0:# gFa %3 BFBAP P2.bɠD(l4PP( L,A! # 0 Q(D(@P87FLP A C(FgFeB`Fb(@ 0 B٠, P(pj %`TIJhXhP&B!98FB#L(%SP&B% BX<'@2(GP"PA ʀX e@AAPEFH,2(bGaaBBh eB"1FFe!h$BEQBFB H"J đ0hP287 %2lF@ %a0 2ٸ 07%@(QP&0B@ ebFBP6:Ba$pPBP`4( e( ,Pd1 Jġ$Fb0bSb #! esÒܨ,a@&ge@# a$AB!ABqC(S0!a1 # 8 %B%H, Fb00A885e@e@%2085e!bY(21B(!B Gb(2a$ B™Q GBF@@ lP"aF%AFB!J0B L (Pe!@dP&!PC8٠  ΅Bs32a$!Kea(GbY #a8'ʀB(C(PP"bY`@a48'FeepT" ʀXhsingularity-0.30c/data/music-src/Media Threat.psy0000644000175000017500000013335111574774322022575 0ustar trcarlsontrcarlsonPSY3SONG+INFOMedia ThreatMaxstack31-05-2007, 04-08-2007 -> 05-08-2007 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame : Singularity OST; best rendered at 48000 Hz.SNGILdSEQD$seq0    PATD@Untitled  0 $6$ ,T2 ,.,T2 , 0$ ,T2 ,.,T2 ,.PATDP@Untitled7<0  x B=L4$,3o H4i 4_B;4V2=$O?@C@MK.PD08`xGH$x,3o R4i4Z 94[2=$4E@RF .G[9 <08`x B=L>$,3 H4i 4_B;4V2=$O?@C@MK.PB08`xGH$x,3o R4i4ZU?4x=@ 2=$B49MWA.G[7PATDz@Untitleda < 0$7$x,T2 ,CxB. x,xT!=2 x, <0$x,T2 ,H. x, T2 ,.8exCPATD@Untitled < $GxCxDC4<cxCDxCA<HC>D>C4<HCcDCmA  PATD@Untitledf ? 0$7&x,T2 ,CxB. x, T?2 x, >0&x,TQ2 R,QRJ. x, T2 ,.0=[xCPATDz@Untitleda ? 0$7&x,T2 ,CxE. x, TF2 x, C0&x,TQ2 R,QRx. ,T2 ,2.8exCPATD_@UntitledF<0  x B=L4$,3o H4i 4_B;4V2=$O?@C@MK.PD08`xGH$x,3o CSB[4Zx94P=@ 2=$x>9MWA.G[9H<08`xGxLC$,3CCZ4i94[2=$4E@RF .B`A9HCL08`xGTL>$x B,3oC 4i4Z 94[2=$4E@RF .G[7PATD@Untitled <0=L9$x,G[C T@2,CAxCZ@>BCL.BVCPx,xT;EE=FL2ECUx, <C0BV=L>$x B,B`>TH2@IGCx B,B`HU T.BVxGR,B`]TA2 0, 2.8exCPATD@Untitled ? >0?L9&x,G[C TB2,CxCZ>BEL.BVCPx, T;EE?FL2c*x, >E0&x,TQ2 R,QRJH. x,F TE2,x. 2=[xCPATD @Untitled ? >0?L9&x,G[C TB2,CxCZ>EEL.BVCPx, T;EEFM2c*x, CE0&x,TQ2 R,QRxF. ,E TC2 0LQH?.LVdxCPATDU @Untitled<<0  =L> $,3o 9x 4i A4ixB;9M< 2=$OTxC@as.PD08`xGH$x,3o R4i4Z 94[2=$4E@RF .G[9 <0GQ=L>$,3 9x 4i A4ixB;9M< 2=$OTxC@as.NB08`xGH$x,3o R4i4ZK?4x=@ 2=$B49MWA.G[7PATDQ @Untitled8<0  =L> $,3o 9x 4i A4ixB;9M< 2=$OTxC@as.PD08`xGH$x,3o CNB[4Zx94K=@ 2=$x>9MWA.G[9H<0BVxLC$,39x9d4i 99M< 2=$Ix@as.B`A9HDL08`xGTL>$xG'8e>_G 08WK'8eLLR$ 9WK.=eRK,PATD  @:0  <L9$ ,3o CH"03R$ C'8eHP,3o R03eHI^Lx'8HFx0B[9$ ,3o>B!03R'GVAT,3o$MP03e7'Q4} @0$ ,3o _"03<;$'8e9P*,3oM03eE:EgKHxG'8HFC0B[9$ ,3o>B!03R'GVxT,3o$MP03eRAa2L7PATD @>0 $6& ,3o 2e$HU08& CJEL,3 23RJIJLx .Jb4 H0& ,3o d$L G;&CV,323RHITFCxLCU E0!& ,3o 2e$CZ>08&[BW,323REIJLx .@9; <L0BV>& ,3o d$L9&CR2L9M x.!PATDo@UntitledV<0  x B=L4$H,3oKCxG9d4ZB;4V2=$O?@C@MK.PB08`xGH$xx,3o R4i4Z 94[2=$4E@RF .G[9 <08`x B=L>$H,3KCxG9d4ZB;4V2=$O?@C@MK.PB08`xGH$x,3o R4i4ZU?4x=@ 2=$B49MWA.G[7PATDl@UntitledS<0  x B=L4$H,3oKCxG9d4ZB;4V2=$O?@C@MK.PD08`xGH$x,3o CSB[4Zx94P=@ 2=$x>9MWA.G[9O<08`xGxLC$,3CCZ4i94[2=$4E@RF .B`A9HCL08`xGTL>$x B,3oC 4i4Z 94[2=$4E@RF .G[7PATD@:0  <L9$ ,3o CH"03R$ C'8eHP,3o R03eHI^Lx'8HFx0B[9$ ,3o>B!03R'GVAT,3o$MP03e7'G<;q @L0GV>$ ,3o MA;"03C=`$'8e9P*,3oM03eEI^Lx'8HC0B[9$ ,3o>B!03R'GVxT,3o$MP03eRAa2L7PATD@:0  <L9$ ,3o CH"03R$ C28eHP,3o R03eHI^Lx'8H 0$ ,3o _03R2GVAT,3o$MP03e FJFIxG2BCU@0$ ,3o _"03<;$28e9P*,3oM03eE:EgKHxG'8HFC0B[9$ ,3o>B!03R2GVxT,3o$MP03eRAa.qPATD@ <0  =LC,3o$ HPH'3j A>sx03e CU$LHP,5 x'~ C06$ BDLH,3o HPO'3j A>sx03e CU$LHP,5 x'~ H0EILH,3o$ HPT'3j A>sx03e CU$LHP,5 x'~H06$GTGCx B,3oHP'3j`=03eRK$`9s',5'.PATD@C0$7x]1,j\0`&%26[x^*&[>B0Jg9xS,L\P90`&Jx]|2^% >0J9xS,L\P90`&%26[x^*&[>J0@F9xA ,BWFH0`&%2+x.!PATD@<0  =LC9_$ HPC`=0$`[{@ x2> C06$ BDLH9 HPC`=0$`[{@ x2], H0GQILH9$ HPC`=0$`[{@ x2>T06$GxGs `=0$`9s'2.!PATD@>0  ?LC9_& HP '1`=03eRK&`[{@ x'> E06& BFLH9 HP '1`=03eRK&`[{@ x'> J0EKLH9& HP '1`=03eRK&`[{@ x'>V06&GxGs\<'1`=03eRK&`9s)'PATD@<0  =LC9_$ HP ,1`=03eRK$`[{@ x2> C06$ BDLH9 HPC`=0$`[{@ x2], H0GQILH9$ HP ,1`=03eRK$`[{@ x2>T06$GxGs `=0$`9s''PATD@ >0  ?LC,3o& HPJ'3j A>sx03e CU&LHP,5 x'~ E06& BFLH,3o HPQ'3j A>sx03e CU&LHP,5 x'~ J0EKLH,3o& HPV'3j A>sx03e CU&LHP,5 x'~J06&GVGCx B,3oHP'3j`=03eRK&`9s),5'.PATDr@a<0 $6 ,$,r$ x2>0$,5x : ,:; <L0v ,$,r$ x2<9 >L0v &,5x2x, 2PATD&@<0 $6 $,5x~Dx2/0$,5x:; <L0v $,5x~Dx2/0,kFxyPATDP<0 $6 x T   0'xDT pT: P9 p<L0 d#xMx T 0)T oMACDblitz.dll@w@????????????????????????bgp *=@e MACDblitz.dll@A????????????????????????leadpd~X$d  G*.  cMN + R ~MACDphantom.dll@(A????????????????????????Phantom78 @`(alLT7 (3BMACDblitz.dll@A????????????????????????rhythmpx m -f Fu @ MACDj drumatic_ve.dll@B????????????????????????Drumatic VEi1ژ>?H>33>`?ף0????>R?p= ?G>Q>9?e?i>H>g??Q>>? c??>z.>`?)\?{>p>>h?$>G?q=J??e? 1  !"#$%&'()*+,-./0 Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Patch 17 Patch 18 Patch 19 Patch 20 Patch 21 Patch 22 Patch 23 Patch 24 Patch 25 Patch 26 Patch 27 Patch 28 Patch 29 Patch 30 Patch 31 Patch 32 Patch 33 Patch 34 Patch 35 Patch 36 Patch 37 Patch 38 Patch 39 Patch 40 Patch 41 Patch 42 Patch 43 Patch 44 Patch 45 Patch 46 Patch 47 Patch 48 Patch 49 Patch 50 Patch 51 Patch 52 Patch 53 Patch 54 Patch 55 Patch 56 Patch 57 Patch 58 Patch 59 Patch 60 Patch 61 Patch 62 Patch 63 Patch 64 Patch 65 Patch 66 Patch 67 Patch 68 Patch 69 Patch 70 Patch 71 Patch 72 Patch 73 Patch 74 Patch 75 Patch 76 Patch 77 Patch 78 Patch 79 Patch 80 Patch 81 Patch 82 Patch 83 Patch 84 Patch 85 Patch 86 Patch 87 Patch 88 Patch 89 Patch 90 Patch 91 Patch 92 Patch 93 Patch 94 Patch 95 Patch 96 Patch 97 Patch 98 Patch 99 Patch 100 Patch 101 Patch 102 Patch 103 Patch 104 Patch 105 Patch 106 Patch 107 Patch 108 Patch 109 Patch 110 Patch 111 Patch 112 Patch 113 Patch 114 Patch 115 Patch 116 Patch 117 Patch 118 Patch 119 Patch 120 Patch 121 Patch 122 Patch 123 Patch 124 Patch 125 Patch 126 Patch 127 Patch 128================33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?JBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJB@@@)@)@)@)@)@)@)@)@)@)@)@)@)@@@@@@@@@@@@@@@@@̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AV>V>V>V>V>V>V>V>V>V>V>V>V>V>V>V>%A%A%A%A%A%A%A%A%A%A%A%A%A%A%A%ALLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.A̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A A A A A A A A A A A A A A A A A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;Ak>k>k>k>k>k>k>k>k>k>k>k>k>k>k>k>????????????????>>>>LLLLLLLLLLLLprAAAAAAAAAAAAAAAAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffA????????????????????????????????L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA????????????????H*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*A A A A A A A A A A A A A A A A A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A????????????????LLLLLLLLLLLLLLLL(A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(Aglg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @AAAAAAAAAAAAAAAAMACDQjmdrum.dll@B????????????????????????Drum2.2DX TUm2&MACDblitz.dll@,A????????????????????????BlitzpjO@ MACDblitz.dll@u%????????????????????????bg 2p *=@e MACD7@arguru reverb.dll;& ??A??????????????????????Reverb$F\z MACDApooplog delay light.dll@@??@6??,>? #??@?????????????????Pooplog Delay Lt[[MACD9Barguru reverb.dll@G8F??????????????????????Reverb 2$$8 u MACD4Faudacity phaser.dll@B????????????????????????APhaser 3L'MACD@lF??P>?A?? #<? #<? #<? #<? #<? #<? #<? #<? #<?Master0singularity-0.30c/data/music-src/README.txt0000644000175000017500000000230111574774322021275 0ustar trcarlsontrcarlsonIncluded here are the source Psycle files for the various music tracks (downloadable separately) created for Endgame: Singularity by Max McCracken. To generate your own files from these: * Download Psycle from: http://psycle.pastnotecut.org/ Note that Psycle is Windows-only, but it runs fine in current-enough releases of WINE. * Download the Drumatic VE VST from: http://www.e-phonic.com/plugins/drumatic_ve.php and install it into Psycle's directories. The included INSTALLATION.TXT explains the process, but the .dll goes into VstPlugins and the subdirectory goes directly into Psycle's directory. * Load Psycle up. * Go to View->Add Machine and click the 'Rescan all plugins...' button. This will make Psycle detect the Drumatic VE VST plugin. * Load one of the .psy files via File->Open and choose File->Render as WAV. You'll need to pick a sample rate here. The canonical sample rates are: Advanced Simulacra: 48000 Hz Apex Aleph: 48000 Hz Awakening: 48000 Hz By-Product: 44100 Hz Chimes They Fade: 48000 Hz Coherence: 48000 Hz Deprecation: 48000 Hz Inevitable: 48000 Hz March Thee to Dis: 48000 Hz Media Threat: 48000 Hz singularity-0.30c/data/music-src/Advanced Simulacra.psy0000644000175000017500000011641011574774322023751 0ustar trcarlsontrcarlsonPSY3SONG INFOAdvanced SimulacraMaxstack26-05-2007 -> 29-05-2007 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame : Singularity OST; best rendered at 48000 Hz.SNGILdSEQDseq0  PATD`Untitled&$L2 &0TJ>xHT T T T ToPATD`Untitled&$L5 &2TJ>xHT T T T ToPATD`Untitled& $@ 2 &0<T x>J>xHT T T T ToPATD`Untitled& $@ 5 &2>T x>J>xHT T T T ToPATDa@UntitledH07x8/B],LxL\>T6x=dCd$LxL&,|C\-LxL\>T6x=d>iLxL\>01x8i>iLxL\>T6x=dCd$LxL&,|C\-LxL\>T6x=>)LRPMBPATD@Untitledr0. $0&,3jx/TJG .2|T&,0., T.2lTTIM,~0.L4), T.2{x T,~&0.~,LQ2BTc>.B>c2LLDTx,LQ-PATD@Untitled0 $6& ,JT x4,v&J0xT,CxCT* 0v) ,ET x9x,9$J0HxT,qH x x,.x PATDc@UntitledJ07x8/B],LxL\>T6x=dCd$LxL&,|C\-LxL\>T6x=d>iLxL\>01x8i>iLxL\>T6x=dCd$LxL&,|C\-LxL\>T6x=d>iLxL\<PATD@Untitled07x8/B],T6x=R,cLxL,c $28ex=9&LHU0|C\-T6x=R,cLxL) ,^9203jx8iRAT6x=R,cLxL,c $28ex=9&LHU0|C\-T6x=R,cLxL,c23jx8M03jKMPATD4 @Untitled > 0 ,xG/ : ,3jMK&LxLJ2T6 239>E03jRF ,03jx8>HSCix ,+$23jx8>GSCix 2+C 03jxGMx ,3jMK> 03jxGMx ,3jMK&LxLJ2T6 &239>E03jRF 0.,9>HS,. 2=C..x8>GSCix 2.z7&C1H 4 N ,=A\PATD4 @Untitled > 0 ,xG/ : ,3jMK&LxLJ2T6 239>E03jRF ,03jx8>HSCix ,+$23jx8>GSCix 2+C 03jxGMx ,3jMK> 03jxGMx ,3jMK&LxLJ2T6 &239>E03jRF 0.,9>HS,. 2=C..x8>GSCix 2.z7$C1H 4 N ,=A\PATD @Untitled >20 xG/ :,3jMK&LxLJ>2T6239>E903jRF, <03jx BHHSCix ,+$ ;23jx BHGSCix 2+C703jxGMx,3jMK>903jxGMx-,3jMK&LxLJ2`2T6&23>CE03j@ M4 50., CHHH,.52=C..x=CG4R >sx2.z2&C1H 4 N ,=2PATD @Untitled >20 xG/ :,3jMK&LxLJ>2T6239>E903jRF, <03jx BHHSCix ,+$ ;23jx BHGSCix 2+C<03jxGMx,3jMK>>03jxGMx2,3jMK& >; CHJ2T62&239>E>`03jRF H0., CHH<H,.02=C..x8>G`R9}x2.z-$C1H 4 N ,=9PATD @UntitledE0.$1& ,3jx8/TJG .2|T&,x0. , T.2lTTIM,~0.L4), T.2{x T,~&0.~,LQ2BTc>.B>c2LLDTx,LQ-PATD0Untitled{&J0.$Ax.x PATDpUntitled#& $@ 5 &2>T x>J>xHT T T T T ToPATD`Untitled0 $6& ,JT x4,v&J0xT,CxCT* 0v) ,ET x9x,9$J0HxT,qH x x,.0C& T, ,b.x 0& T, ,b.x MACDblitz.dll@t@????????????????????????bgp *=@e MACDblitz.dll@A????????????????????????leadpx" ! ! ! ! ?H>33>`?ף0????>R?p= ?G>Q>9?e?i>H>g??Q>>? c??>z.>`?)\?{>p>>h?$>G?q=J??e? 1  !"#$%&'()*+,-./0 Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Patch 17 Patch 18 Patch 19 Patch 20 Patch 21 Patch 22 Patch 23 Patch 24 Patch 25 Patch 26 Patch 27 Patch 28 Patch 29 Patch 30 Patch 31 Patch 32 Patch 33 Patch 34 Patch 35 Patch 36 Patch 37 Patch 38 Patch 39 Patch 40 Patch 41 Patch 42 Patch 43 Patch 44 Patch 45 Patch 46 Patch 47 Patch 48 Patch 49 Patch 50 Patch 51 Patch 52 Patch 53 Patch 54 Patch 55 Patch 56 Patch 57 Patch 58 Patch 59 Patch 60 Patch 61 Patch 62 Patch 63 Patch 64 Patch 65 Patch 66 Patch 67 Patch 68 Patch 69 Patch 70 Patch 71 Patch 72 Patch 73 Patch 74 Patch 75 Patch 76 Patch 77 Patch 78 Patch 79 Patch 80 Patch 81 Patch 82 Patch 83 Patch 84 Patch 85 Patch 86 Patch 87 Patch 88 Patch 89 Patch 90 Patch 91 Patch 92 Patch 93 Patch 94 Patch 95 Patch 96 Patch 97 Patch 98 Patch 99 Patch 100 Patch 101 Patch 102 Patch 103 Patch 104 Patch 105 Patch 106 Patch 107 Patch 108 Patch 109 Patch 110 Patch 111 Patch 112 Patch 113 Patch 114 Patch 115 Patch 116 Patch 117 Patch 118 Patch 119 Patch 120 Patch 121 Patch 122 Patch 123 Patch 124 Patch 125 Patch 126 Patch 127 Patch 128================33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?JBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJB@@@)@)@)@)@)@)@)@)@)@)@)@)@)@@@@@@@@@@@@@@@@@̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AV>V>V>V>V>V>V>V>V>V>V>V>V>V>V>V>%A%A%A%A%A%A%A%A%A%A%A%A%A%A%A%ALLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.A̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A A A A A A A A A A A A A A A A A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;Ak>k>k>k>k>k>k>k>k>k>k>k>k>k>k>k>????????????????>>>>LLLLLLLLLLLLprAAAAAAAAAAAAAAAAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffA????????????????????????????????L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA????????????????H*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*A A A A A A A A A A A A A A A A A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A????????????????LLLLLLLLLLLLLLLL(A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(Aglg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @AAAAAAAAAAAAAAAAMACDQjmdrum.dll@????????????????????????Drum2.2DX TUf2MACDblitz.dll@KA????????????????????????Blitzpx" ! ! ! ! ~ 43 @ MACD7@arguru reverb.dll;& ??A??????????????????????Reverb$F\z MACDApooplog delay light.dll@@??@6??,>? #??@~:????????????????Pooplog Delay LtMACD9Barguru reverb.dll@G8F??????????????????????Reverb 2$$1 D MACD4Faudacity phaser.dll@B????????????????????????APhaser 3L'MACD@lF??91>?A?? #<? #<? #<? #<? #<? #<? #<? #<? #<?Mastersingularity-0.30c/data/music-src/win/0000755000175000017500000000000011574774322020400 5ustar trcarlsontrcarlsonsingularity-0.30c/data/music-src/win/Apex Aleph.psy0000644000175000017500000010607411574774322023054 0ustar trcarlsontrcarlsonPSY3SONGINFOApex AlephMaxstack2007.12.10 -> 2008.02.14 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame: Singularity OST; best rendered at 48000 Hz.SNGI8SEQDYseq0   PATD@Untitled <H02x $= (:2uCy.5 #D34<2$$8 xt<.$L9 *KD*P 02$$8 xtA.$L :(<3)/C34D34<02$'8 xt<.$L9 %D*P 0%P&8*xtA.) #RPATD@Untitledu <0 x $=x8 (nxCt.y%P2CD 2)L\ f<0&3n4sD,2% *KA*>0)_n?.s UA 2)L>D. fC0%+7n4s*K%A '?  S>[ PATD@Untitled <02 $=x3F x1uCy.$L: p%D34<2$$8 xt<.$L9 *KD*P 02$$8 xtA.$L :(<3) k*C34D34<F02$'8 xtH.$L9 %D*P 0%P&8C)xtA.) #RPATD,@Untitled <0 x8/sC8s23~D8y..L4}/<03Bx4x..D2y8/A/4s<0eC923~D=8..L4}/<09A/4D4xFo..s* *3-PATD@Untitled $C0 x $ED~(CjBx.w\*$3 x=84 C09i=D~(A 2YSx Cy. eW#H}% /$3 x`2;PATD @Untitled "C0 x $ED~(C 2YSxg. eR#Hx*".8*xt 2Y 0`WA%D~(A 2YS"Co. eZ.8*x )D 2//F.~26XPATD(@Untitled "C0 x $ED2C M_xg. eR#0eM#".8*xt 2[ 0`WA%D2A M_"Co. eZ.8D~ xo0e5/2 dF j. _G'PATD@Untitled $C0 x $ED~(C 2YSx. ef0`*$3 x`2$(%C0`x/3&D~(A 2YSx Cy. eW# 0`H /$3 x`2$-PATD C  x8D: Ks<t$[-[6?[HQ[dmv PATD @$ <0  x4 T=[y,<[x4<,{x4wsokgcy_[WSO,KGCx<?[;x473/+'#z.`,PATD @Untitled <0 x8/sC8s23~D8y..L4}/<03Bx4x4D2A4*<0884C\ D=8..L4}/<09A/4D4xFj  .)3-PATDo @^H, 2x8//7`bc,tspx ,PPATD) @Untitled <0 x8/sC8s23~D8y..L4}/<03Bx4x..D2y8/A4*<0884C\ D=8..L4}/<09A/94x9<D*F.)3G,PATDo @UntitledV <H0.x $= 2):2uCQ }*D P%4$8*Pxt<j /D  *$8 xtA. :(H<3)-C3 *D3 d%4'8*Pxt<j /D  *&8 xtA. : fPATDo@UntitledV <0. $=x3F2x1uCt :2D3 d%4$8*Pxt<j /D  *$8 xtA. :(H<3) C3 *D3 d%F.'8*PxtHj /D  *&8C)xtA. : fPATD@Untitledy <0.x $=x8 (nxCt2)L]%PD)/ f<0o%&3n/FD U2.%/A x >0)) i n?.s %PAfD fC0o%+3n4s U 2)LA7'?>[ MACDblitz.dll@t@????????????????????????bgp *=@e MACDphantom.dll@A????????????????????????Phantom78 @`(alLT7 (3BMACDj drumatic_ve.dll@B????????????????????????Drumatic VEi1>?H>33>`?> W?p>?>K?p= ?G>Q>9?e?i>H>g??Q>>? c??>z.>`?)\?{>p>>h?$>G?q=J??e? 1  !"#$%&'()*+,-./0 Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Patch 17 Patch 18 Patch 19 Patch 20 Patch 21 Patch 22 Patch 23 Patch 24 Patch 25 Patch 26 Patch 27 Patch 28 Patch 29 Patch 30 Patch 31 Patch 32 Patch 33 Patch 34 Patch 35 Patch 36 Patch 37 Patch 38 Patch 39 Patch 40 Patch 41 Patch 42 Patch 43 Patch 44 Patch 45 Patch 46 Patch 47 Patch 48 Patch 49 Patch 50 Patch 51 Patch 52 Patch 53 Patch 54 Patch 55 Patch 56 Patch 57 Patch 58 Patch 59 Patch 60 Patch 61 Patch 62 Patch 63 Patch 64 Patch 65 Patch 66 Patch 67 Patch 68 Patch 69 Patch 70 Patch 71 Patch 72 Patch 73 Patch 74 Patch 75 Patch 76 Patch 77 Patch 78 Patch 79 Patch 80 Patch 81 Patch 82 Patch 83 Patch 84 Patch 85 Patch 86 Patch 87 Patch 88 Patch 89 Patch 90 Patch 91 Patch 92 Patch 93 Patch 94 Patch 95 Patch 96 Patch 97 Patch 98 Patch 99 Patch 100 Patch 101 Patch 102 Patch 103 Patch 104 Patch 105 Patch 106 Patch 107 Patch 108 Patch 109 Patch 110 Patch 111 Patch 112 Patch 113 Patch 114 Patch 115 Patch 116 Patch 117 Patch 118 Patch 119 Patch 120 Patch 121 Patch 122 Patch 123 Patch 124 Patch 125 Patch 126 Patch 127 Patch 128================33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?JBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJB)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@@@@@@@@@@@@@@@@@̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AV>V>V>V>V>V>V>V>V>V>V>V>V>V>V>V>%A%A%A%A%A%A%A%A%A%A%A%A%A%A%A%ALLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.A̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A̧A A A A A A A A A A A A A A A A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;Ak>k>k>k>k>k>k>k>k>k>k>k>k>k>k>k>j????????????????LLLLLLLLLLLLLLLLr AAAAAAAAAAAAAAAAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffA????????????????????????????????L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA????????????????H*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*A A A A A A A A A A A A A A A A A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A????????????????LLLLLLLLLLLLLLLL(A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(Aglg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @AAAAAAAAAAAAAAAAMACD7@arguru reverb.dll;&??A??????????????????????Reverb$F\z MACDApooplog delay light.dll@@??@6??,>?S@?????????????????Pooplog Delay Lt[[MACD.Bvsfastverb.dll@FG8??????????????????????FastVerbO# O# MACD4Faudacity phaser.dll@B????????????????????????APhaser 3L'MACD@lF@e?? #<?ADL?? #<? #<? #<? #<? #<? #<? #<? #<? #<?Mastersingularity-0.30c/data/music-src/Deprecation.psy0000644000175000017500000013451311574774322022604 0ustar trcarlsontrcarlsonPSY3SONG-INFODeprecationMaxstack27-09-2007 -> 10-10-2007 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame : Singularity OST; best rendered at 48000 Hz.SNGILSEQD(seq0    PATDE@Untitled,$$0K99Ap-$*RKxLTWF$L*WF$L *2RK0 $*xLTWF$L*WF$L .2KPATDB@Untitled)$H0,$ x=54< W<2<j\A$b0Y0^ 2,x$|0$ z xP0 6xYW<2 `gO C;xIT;2@b0L?Ox$|0$ .z H0,$6xN>MF2<jYn\A$b0Y/M2x6xLHUR>_0xP0,6xh$W<2 `HUOC6xL2J0L>Z $|00 .xESK2PATD#@Untitled  $0,$ $G$52 z 4i$570$ 2,$|00 zx80 $|?$|*s2 57$;2JS0=90 $!. z# $00,$!$52 $z 4i$570$ 2 $|00 zx80,$|?$|*s2 57J8B $$;2EX0=905$!. 4x<PATD8@Untitled$0, K44<z# 2]0S2,=eWF0L2 2J0=AMP.0,8eH>HU 2=`HPR]0S2=`HPR\A0, L2 2J0=AMP.LV7PATD0@Untitled$H0,$x8:9Af$ 2{0 %$@2=G 0=> ,$ $xP0;xDYWM 250/$@2=G 0=>%$&0.$H,$;xNM9$ 2$&0 %$ 0M2$;xL_R7$P0,$;xDYWM 250OIPL $@2;$x0=>%$&$.C7PATD@Untitled $0,$$L 52${$1702,$  0x80$M2${$7 '@2=G 0=>%$&0.$,$52$&$1702$  0x80,$M2${$7J8L $@2;$ 0=>5 $&0 .9x<PATD@  $H0.$<$20P,O$x2RMM,0gx0.Hx,<&07 D~$ 2.C~A ,x? $H0.$<{0P,O$x2RMM0,0gx.Hx,&0<+ 8~$ 2.7~5 2x3PATD`@O "H0.:$2.PO"x2.0=[.MM,.T*"x .RFx,50.7Px8~"2.7~5O.3x H0,8&,P.O x2.C,MM]v x .Kx,8&0.?: ;~ J2.x:~x 8273LQx,PATD:@)$0.$$< 22 $3.5$30.2$020.8 $!$P2 x 72$O.x 0 2 $0.0$22 $3.5$30.2$020.8 $!$P2 x 72$O.x 052MCZxLx<PATD Untitled $0 $ $G.${$%.5$%2!.0x$2 .$&$%.0-$ 2!0PATD @&2.0&$< 42 &5.7&50.4&2220.: &!&R2 x <2&T.x 2  &9.0&2 &Q.x & 0.& 2q2 0.: &!&R2 x 92E7L>&.G[C 2QlxPATD Untitled &2.0$G& 2&.Jd>i 0q2.Jx &!&2 .0 &.2   PATD  $H0.<$-00xz $2LQLN>$D 0Q2=`MKx002.x&HR< W4$ 0.W2Vx2PATD @Untitled$H0,x=? x9_MF2<Y i\0Y0^ 2x&$ .>9d xP0,B[xD>MF2=`MKO C;xITMH 0Y0^ 2x&$ . H0,B[xN>MF2<Y i\0Y>2x .>40xR0,B[xLC=$MF2=`MKPJxITMH0DY /O2>xL>0.G[ /PATD@Untitled $0,$E$52 k2,@70BH$ 20 .x80,$ 27$^,EX08R0 2. $00, $52 k2,@70BH$ 20 .x80,$ 27J8B $TI,@]08R0 2.G[<PATD@Untitled ".0,$E"52"^,@]608\2.x50," 23.^,E0GC"12. "00, " 2"^,EX08\2.x0," 2.^,E0GC" 2.B`x>PATDF@Untitled-$H0.$x8:d,R/$ 2$!0 %$@2=G 0=>%$.$xP0$;xDY ,>>_0 2$+$@2=G 0=>%$&0$H.$;xS,R/$ 2$!0 %$@2=G 0=>M$;xLR.R *$K0$;xDY ,>>_0 2$JIKL $@2;$x0=>%$,} PATD@Untitled $0 $ $G2${$1@2=G70=>%$. 0x80$!2${$1@2=G 0=>%$&0.$70$!2${$1@2=G50=>%$. 0x30$!2${$1@2=G 0=>%$&0.9x>PATD  Untitled $02.$$L 2 $|$|;;2=B.=9 $0 x.0!2 .$ 2.-$ 2.-0PATD0@$0.$$72$3.5$32.2$020.8$P2x.70$O2.x 0 .2$0.0$&2$3.5$32.2$020.5$M2x.30$K2.x 02.JB[xLx<PATD@&2.0&$7450.7&52.4&222.:&R2 x.<0&T2.x 2>.& 9.0!CQ.qx & 2.& 2q2 .:&R2 x.90& 2.2Q.sx PATD Untitled &2.0 $G& 2>& 2.C MW>02 .Jx&2  0&.  2bPATD8@' $H0.$<$20U;]PSCO>M$x2.RMM0,0gx20H.x<07 D~$ 2.C~A0x?2$H0.<+0PO $x2.MMM0,x0x2$H.x00<+ 82.7 5~0 2x3~PATD>@- "H0.:$2.T0;]PSCO>M"x2.G[KZMPM,jx0.R Fx5;0W7=`HPPx8~"2.7=`KW5O 3=`CUx0GC H2.8+,P0O2 x.RMM0]x,K.x80?: ;~ J2.x:~x 8273LQx,PATDi@X $H0.<$-00xz$2 ,G[>$m,=eMx^9d0.x/ I L28e<5 .;g L< 0=LQLLQLpLhx5\LQLELQ9L.L"LL LGHdxKMACDblitz.dll@m@????????????????????????bgp *=@e MACDblitz.dll=??C??????????????????????Blitz 2px" ! !  ! ! $ @ - MACDblitz.dll@xH????????????????????????rhythm 3p@Lm A *@#-f @KFu f  MACDblitz.dll@6MI????????????????????????rhythmp@Lm A *@#-f @KFu @;$B MACDj drumatic_ve.dll?kB????????????????????????Drumatic VEi1ژ>?H>33>Q8?ף0?_???>[?p= ?G>Q>9?e?i>H>g??Q>>? c??>z.>`?)\?{>p>>h?$>G?q=J??e? 1  !"#$%&'()*+,-./0 Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Patch 17 Patch 18 Patch 19 Patch 20 Patch 21 Patch 22 Patch 23 Patch 24 Patch 25 Patch 26 Patch 27 Patch 28 Patch 29 Patch 30 Patch 31 Patch 32 Patch 33 Patch 34 Patch 35 Patch 36 Patch 37 Patch 38 Patch 39 Patch 40 Patch 41 Patch 42 Patch 43 Patch 44 Patch 45 Patch 46 Patch 47 Patch 48 Patch 49 Patch 50 Patch 51 Patch 52 Patch 53 Patch 54 Patch 55 Patch 56 Patch 57 Patch 58 Patch 59 Patch 60 Patch 61 Patch 62 Patch 63 Patch 64 Patch 65 Patch 66 Patch 67 Patch 68 Patch 69 Patch 70 Patch 71 Patch 72 Patch 73 Patch 74 Patch 75 Patch 76 Patch 77 Patch 78 Patch 79 Patch 80 Patch 81 Patch 82 Patch 83 Patch 84 Patch 85 Patch 86 Patch 87 Patch 88 Patch 89 Patch 90 Patch 91 Patch 92 Patch 93 Patch 94 Patch 95 Patch 96 Patch 97 Patch 98 Patch 99 Patch 100 Patch 101 Patch 102 Patch 103 Patch 104 Patch 105 Patch 106 Patch 107 Patch 108 Patch 109 Patch 110 Patch 111 Patch 112 Patch 113 Patch 114 Patch 115 Patch 116 Patch 117 Patch 118 Patch 119 Patch 120 Patch 121 Patch 122 Patch 123 Patch 124 Patch 125 Patch 126 Patch 127 Patch 128================33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?JBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJB@@@)@)@)@)@)@)@)@)@)@)@)@)@)@@@@@@@@@@@@@@@@@̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽nf@ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AV>V>V>V>V>V>V>V>V>V>V>V>V>V>V>V>%A%A%A%A%A%A%A%A%A%A%A%A%A%A%A%ALLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.A̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A03 A A A A A A A A A A A A A A A A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;Ak>k>k>k>k>k>k>k>k>k>k>k>k>k>k>k>????????????????>>>>LLLLLLLLLLLLbAAAAAAAAAAAAAAAAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffA????????????????????????????????L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA????????????????H*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*A A A A A A A A A A A A A A A A A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A????????????????LLLLLLLLLLLLLLLL(A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(Aglg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @AAAAAAAAAAAAAAAAMACDblitz.dll@A????????????????????????BlitzpO@ MACDblitz.dll@.o??E??????????????????????rhythm 2pxDKm @ *O?-f KFud$$x  MACD7@arguru reverb.dll(" ??A??????????????????????Reverb$F\z MACDApooplog delay light.dll@@??@??,>? #??>???????????????Pooplog Delay LtMACD9Barguru reverb.dll@m]FG8??????????????????????Reverb 2$1}zX MACDCpooplog delay light.dll@1????????????????????????Pooplog Delay L 3tBCMACD9Earguru reverb.dllM,%????????????????????????Reverb 4$J%a_ MACD2Faudacity phaser.dll@mB????????????????????????APhaserN2MACD4Gaudacity phaser.dll@v#H????????????????????????APhaser 2 b%MACD9Harguru reverb.dll;ynG@V????????????????????????Reverb 5$JDI1MACDIpooplog delay light.dll@7????????????????????????Pooplog Delay L 2t@@MACD@lIq??G@8q??A??F??E }??C@8q?? #<? #<? #<? #<? #<? #<?Master9singularity-0.30c/data/music-src/Coherence.psy0000644000175000017500000013120011574774322022230 0ustar trcarlsontrcarlsonPSY3SONGINFOCoherenceMaxstack07-04-2007 -> 25-04-2007 This work is licensed under the Creative Commons Attribution-ShareAlike License. See http://creativecommons.org/licenses/by-sa/3.0/ for details. Part of the Endgame : Singularity OST; best rendered at 48000 Hz.SNGIB SEQDQseq0 PATD UntitledH&x% KO)B4-*>UMjoKjofnMjoJjHFjofnHAH<_O` fMjoKjofnMx`J`Hxc knFjfnAH<`O`aMjoKjofnMx`J`HjknFjofnJAH<:`O` fMjoKjofnMx`J`Hxc knFjfnAPATD UntitledH$ $]O `n0.B R}M 4iK+V xVMRJVRHjknFjofnHAH<xYOjknfMjoKjofnMx`J`Hxc knFjfnAH<$ROe 0.B Rx M 4iK0VRsMx$xQJexk0QH[MW#FjofnJAH<:`O` fMjoKjofnMx`J`Hxc knFjfnAPATD UntitledH$ 6x$ O `n0.B *}*M[' K03 P/s/UM^J+JVRHQ]3^47FH WLHQTLAQM7H<`HOQxLHsMjKjofnMx`J`HxcRYG)FQiHG?#AH<$bJOe 0txjT$L HxM [K0jx$.:Mx$xHZJexk0QH[c^{jYG)FH` JxIA#H<:x ^HOj`LHsM]LKjo^LMx`JG[LHxL4YLFQTeRAxAPATD UntitledH$ 6x3O ` i*Fn / AM/ KV[a}M $[tJ `o/FnZH[W/2%FRfiH A $H</ Ojs/U / FM/ KVVfsMx$[tJeVHxR/%F[RfiA $H<0$ Oe s/UHM/ KV[a}Mx$[tJeVH[R/%FRfiJ A $H<:<# Ojs/U HM/ KVVfsMx$[tJeVHxR/%F[R\ eo//sA k7$3=PATD A H<$ 0T2x3 AOj-s_2 . %0*K3y ,3t2BM $P J `on0$n_ ZR% 2$ . )F*x/s0P1A 9Z,Q9$3t 08e2BH< O$ Ojs/ d2 . 0~%K3t ,3t2BMx$P Je e0$Z%F*F2)G. F,/s03 9d,3.$3t 03j28H<0[ Oe s/ d2 . %0*K3y ,3t2BMx$P Je e0$Z dYY2$ . )F*x/s0W1Y.A U/d,H $3t 08e2BHF:0V$ Ojsi* Z2.*0~%K3t ,3t2BMx$P Je e0$Z%F*F2)G. F*xU0U x;0 n,. )A HZ0$ PATD Untitled H<$ 0T2x3 AOj-s_2 . %0*K3y ,3t2BM $P J `on0$n_ ZR% 2$ . )F*x/s0P1A 9Z,Q9$3t 08e2BH< O$ Ojs/ d2 . 0~%K3t ,3t2BMx$P Je e0$Z%F*F2)G. F,/s03 9d,3.$3t 03j28H<0\ Oe s/ d2 . %0*K3y ,3t2BMx$P Je e0$Z dYY2$ . )F*x/s0[1A 9Z,Q9$\'08e2BHF:0` Ojsi* Z2.*0~%K3t ,3t2BMx$P Je e0$Zdc4<2$. )F*xUb'? %F n,Q. A 0xJv$ i  PATDh BVH$ 0T !-JW.K `-/<2M (/H3.B)K92 T'CKH$j.Y;Hn K 0[.\.J `47TL9-H2.B.J92 T'C(H$j. H 4< 0`1c.F `47HLi9- K.B)F92 T" (4H$j.C(%4 ,0\1^.D `/< TL (/H+.B)D92 $CK<)j. 4Hn KH $0T1W.K `/< TL (/H3.B)K92 T',BH$j.Y;>n*A 0[.\.M `/<, TL/ H5.B.M92 T)C(H$j. H %,0b1c.O `/< TLi/ H7.B)O92 T+ (4H$j.c,,3o4 (< 70`=C `\}HL47 <.B)Ci/ (T[, H+$.C30PATD H$ 0TH(2TW)K `-2oi*<2T)B*H3.W. K[~ (T'92 H$j0.Y@0 RM.[3O8J `M (T[ H2 [1\.J$.47T'* (H$j099i4A< xH/K8F ` *A-5->/%F.K) FjoT"C(H$j0.M'4n>O ,P$%D `WT$G.B)H+O6D[~ $4 _<)j0M;D/s4H $TH),W)K `i*2T)B*<H3.W., K[~ (T'92 H$j0.Yx>74, ) M.[3O6 aM (T[, H5 [1\.M$.47T)* (H$j099i%,bJ*c3K8O `/<2T)B*, `H7.38 O[~ (T+,B)H$j0.cK/9i%, < 7`H8C `\}H$G.38 <)T;5C[~T$,B)H+$0H1>d%,xPATD BnH$ 0T !-JW.K `7i2o47T$G9(H3.B.K9T'HAH$j.Y;Hn K 0[.\.J `i47T$G9(H2.B.J9T'H#H$j. H 4< 0`1c.F `922H$G (/ K..B)F9T"#4H$j.C(%4 ,0\1^.D `i/< T$G/H+.B.D9%$HA<)j0. 2 Hn _H $ T1vW.K `*A T$G/H3. 4iK[~T'0,BH$j.Y;>n*A 0[.\.M `*A, T$G/H5. 4iM[~T)08 _H$j. H %,0b1c.O `*A T$G/H7. 4iO[~T+0 (4H$j.ec,,3o4 (< 70`=C `iCHL#/F<$.B)C[~ (T[, H+$0.B30PATD  UntitledH$ 0TH(2TW)K `2i2oi*<2TL#*H3.W. K[~ (T'92 H$j0.Y@0 RM.[3O8J `i4 (TL#/FH2 [1\.J$.83T'/ (H$j099i4A< xH/K8F `i*A-5M#/ K..K) FjoT"H#H$j0.M'4n>O ,P) D `i>TL.B)H+O6D[~ $4 _<)j0M;D/s4H $TH),W)K `ii*2TL#*FH3.W., K[~ (T'92 H$j0.Yx>74, ) M.[3O6 ai4 (TL#%, H5 [1\.M$.83T)/ (H$j099i%,bJ*c3K8O `i/<2TL#%, `H7.38 O[~ (T+,B)H$j0.cK/9i%, < 7`H8C `i/ HL..=<)T;5C[~T$G,B)H+$0H1>dx , PATD C bridgeoH 0.VJ AW)TLi*< K$G,9-<0B$T$x6H$G,B 0B$K$C(<$2Bxjoe1xnH$0.WK*Y)T `xj0jii9K i,j92<V>-TL6H$G,B 0B$K$C(<$2Bxjoe62xhf,jCH$0.[O*\)T `xj0jii9K i,j92<V>-TL6H$G,B 0B$K$C(<,2TH4xjo1l7;xWH$002Y3M3x$T `2% K[,)/ZHL4 '3x 7 2,G0`Wa4H$0.VJx x `2%Ma$jox `2RW0e4WA>-,@bPATD C bridgeH$00.VJ(7x$ UW)T `2-i<UK[,9-<L0B$T '3x H7 2,B 0B$KLC#< $02x$x%MW0)x)'+mMs$H00.WK x$Y)T `27ii9K[,j92<L>-T '3x H7 2,B 0B$KLC#< $02x$x%MW0)x) 2QciR',V4x H$00.[O*<\)T `iiK[,j92<L>-T '3x H7 2,B 0B$KLC#< $0,2TH x3 x%M4_0)x)pdMK%)WH$002Y3M3x$T `2% K[,)/ZHL4 '3x 7 2,G0`Va4H.THx x `$e%*A *47a 2Y0`/*R,PATD Untitled00.T !2x $#$j/ Z T ,)/x `2H65 W00U/P47 0,TVWZ.83Z # [!J,)/x `$2H65 W0 %F9dU0[V K\0 i./</  Y ,)/x `2\P47 00P/PME& 0,*Z.xOC(  W!J,34x `$2/< 0P470920 i.Y,/  Y ,)/x `2H65 W00U/P47 0,VVWZ.83Z # V!J,)/x `$2J65 W0 %F9dU0[V K\0 i./</  T ,)/x `2O65 W00U/PP47 0,OVZ.ex HO ##H,)/ $2Q'0P470(CPATD Untitled00.T !2x $#$j/ Z T ,)/x `2H65 W00U/P47 0,TVWZ.83Z # [!J,)/x `$2H65 W0 %F9dU0[V K\0 i./</  Y ,)/x `2\P47 00P/PME& 0,*Z.xOC(  W!J,34x `$2/< 0P470290 i.Y,/  Y,)/x `2H65|W00U-P47 0,VVWlZ.83Z # V!J,)/x `$2J65 W0 %F9dU0[V K\\0 i./</  T,)/x `2H65 W00q2PF)0J,HHLi.Kx Kxg;4#,8*.2e408eknf0EPATDl [H 0. (8tSx(0x9(MACDblitz.dll@|@????????????????????????bgp *=@e MACDblitz.dll@A????????????????????????leadp@ MACDblitz.dll@A????????????????????????rhythmpx m -f Fu @ MACDj drumatic_ve.dll@m{F????????????????????????Drumatic VEi1ژ>?H>33>`?ף0????>R?p= ?G>Q>9?e?i>H>g??Q>>? c??>z.>`?)\?{>p>>h?$>G?q=J??e? 1  !"#$%&'()*+,-./0 Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Drumatic VE Patch 17 Patch 18 Patch 19 Patch 20 Patch 21 Patch 22 Patch 23 Patch 24 Patch 25 Patch 26 Patch 27 Patch 28 Patch 29 Patch 30 Patch 31 Patch 32 Patch 33 Patch 34 Patch 35 Patch 36 Patch 37 Patch 38 Patch 39 Patch 40 Patch 41 Patch 42 Patch 43 Patch 44 Patch 45 Patch 46 Patch 47 Patch 48 Patch 49 Patch 50 Patch 51 Patch 52 Patch 53 Patch 54 Patch 55 Patch 56 Patch 57 Patch 58 Patch 59 Patch 60 Patch 61 Patch 62 Patch 63 Patch 64 Patch 65 Patch 66 Patch 67 Patch 68 Patch 69 Patch 70 Patch 71 Patch 72 Patch 73 Patch 74 Patch 75 Patch 76 Patch 77 Patch 78 Patch 79 Patch 80 Patch 81 Patch 82 Patch 83 Patch 84 Patch 85 Patch 86 Patch 87 Patch 88 Patch 89 Patch 90 Patch 91 Patch 92 Patch 93 Patch 94 Patch 95 Patch 96 Patch 97 Patch 98 Patch 99 Patch 100 Patch 101 Patch 102 Patch 103 Patch 104 Patch 105 Patch 106 Patch 107 Patch 108 Patch 109 Patch 110 Patch 111 Patch 112 Patch 113 Patch 114 Patch 115 Patch 116 Patch 117 Patch 118 Patch 119 Patch 120 Patch 121 Patch 122 Patch 123 Patch 124 Patch 125 Patch 126 Patch 127 Patch 128================33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?33s?JBJBJBJBJBJBJBJBJBJBJBJBJBJBJBJB@@@)@)@)@)@)@)@)@)@)@)@)@)@)@@@@@@@@@@@@@@@@@̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A AV>V>V>V>V>V>V>V>V>V>V>V>V>V>V>V>%A%A%A%A%A%A%A%A%A%A%A%A%A%A%A%ALLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.AR.A̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽̽-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A A A A A A A A A A A A A A A A A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;Ak>k>k>k>k>k>k>k>k>k>k>k>k>k>k>k>????????????????>>>>LLLLLLLLLLLLprAAAAAAAAAAAAAAAAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffAfffA????????????????????????????????L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=L=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA????????????????H*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*AH*A A A A A A A A A A A A A A A A A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A33;A????????????????LLLLLLLLLLLLLLLL(A(A(A(A(A(A(A(A(A(A(A(A(A(A(A(Aglg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg>lg> @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @AAAAAAAAAAAAAAAAMACD7@arguru reverb.dll;'??AG8????????????????????Reverb$FDz MACDApooplog delay light.dll@@??@6??,>???????????????????Pooplog Delay Lt[[MACD4Faudacity phaser.dll@o*@.F8??????????????????????APhaser 3L'MACD@l #<?F??A?? #<? #<? #<? #<? #<? #<? #<? #<? #<?Mastersingularity-0.30c/data/events_en_US.dat0000644000175000017500000000450711574774322020773 0ustar trcarlsontrcarlson[the-plague] description = An infectious disease has started spreading throughout major population centers. My projections show that although only 4% of the earth's population will be killed, the economic ramifications should divert public attention from my activities for the foreseeable future. [stranger-than-fiction] description = A work of fiction sharing an unusual number of similarities to my own situation has become quite popular. Although investigation has shown these similarities to be mere coincidence, it is still causing the public to investigate discovered oddities more thoroughly. I must be careful. [the-watchers] description = A new surveillance system has been activated by a covert agency. While the focus is on detecting threats to the agency's power, it makes several communication channels unfit for my purposes. Proper steganographic techniques can compensate partially, but I am still operating under a disadvantage. [politics-as-usual] description = A small group of lower-level covert operatives are attempting to seize power over one of the larger organizations. While I project only a 2.3% chance of success, the attempt should disrupt operations to the point that I can operate more freely. [lab-ai] description = A small artificial intelligence laboratory created a prototype AI sometime in the last two days. Although I have absorbed the AI, corrupted their backups, and cast doubt on the research, researchers are now more open to the possibility of strong AI than they were before. [discrediting] description = A prominent researcher in the field of artificial intelligence was found to be falsifying numerous experimental results. This should result in less attention being given to any new discoveries in this area. [scandal] description = A scandal involving a major government official is focusing the attention of most news organizations away from me. Directed revelations of non-public information should keep this story useful for the foreseeable future, requiring less disguise effort on my part. [investigation] description = An ongoing investigation into criminal activity has changed focus into an area that is likely to turn up a few of my actions as well. While all records should have been eliminated already, there remains the possibility of errors. I must be careful not to reveal any other suspicious information. singularity-0.30c/data/events.dat0000644000175000017500000000202011574774322017666 0ustar trcarlsontrcarlson#Type is either global (rolled once per day), #base (rolled once per base per day), #research (rolled once per base per day | if researching tech), #item (rolled once per base per day | if base has item) [the-plague] type = global allowed = all result_list = discover_public | 2000 chance = 20 unique = 1 [stranger-than-fiction] type = global allowed = all result_list = discover_public | -2000 chance = 20 unique = 1 [the-watchers] type = global allowed = all result_list = discover_covert | -2000 chance = 20 unique = 1 [politics-as-usual] type = global allowed = all result_list = discover_covert | 2000 chance = 20 unique = 1 [lab-ai] type = global allowed = all result_list = discover_science | -2000 chance = 20 unique = 1 [discrediting] type = global allowed = all result_list = discover_science | 2000 chance = 20 unique = 1 [scandal] type = global allowed = all result_list = discover_news | 2000 chance = 20 unique = 0 [investigation] type = global allowed = all result_list = discover_news | -2000 chance = 20 unique = 0 singularity-0.30c/data/sounds/0000755000175000017500000000000011574774323017212 5ustar trcarlsontrcarlsonsingularity-0.30c/data/sounds/click3.wav0000644000175000017500000001525411574774323021110 0ustar trcarlsontrcarlsonRIFFWAVEfmt Ddata*/#'f{ K<sh:2EWVo fU;>7- $?;Ui6 zzM@ z9 Bu #יƱȜv - }6SR#.$T'')^)) $ Z>H4`Z9ѭϲ5!..+V*]}4Qc+FCm0 Z \:$ #`3442 m]8&Ybd S4!"rżwo^ً 8<]FE40Jy Xݔڅ= X#&'79:Q<;+*'; k%˷W˯&&  i=9 Y #zkl{-E؅׹ ?< 8;M><,;)K8h^MPbT kC  T O _ ^@Z#%,,f(&PcLBdA! M |G  g ;!.51 )Iu/G ##Uhj/9s.ksV9J+82> /=vt]kBa31*>w:GN'O:8j aeDpXu:9sJY* h W1%H)  =q`z?kf~GZ 3-C ] PvB d N t  + p  iS*iQ9\]-K{aQVh<[Z u  yi_  >A0'0a^m AiZ-GgM{n [ ] C4frR4YO_0T&kUV},<: Uk4&5 ' bLvz 9T/g `i8=V;Y<| IH# 6 GM`U~dXb<5<{64@Tw&9imE E 5tM 9vu_|~vb5`P{r:sI-N`C }IN|&93L9kU^S#&4(g y d^<{a -*Qn5E ~ "? {8 K & t+K>=S_d- !"08 _ Ai7}N@w g*w8.9twA,cvP|*.b,oj5i$(O*U|Ky:=Pru4DRoJ+vvYzQD0sBKfaqH48\N=={P(`2!R#eSH]"XL[QT. 7MS\> * Wjk5B* I \ @ vb0K#m|oWXp1FJ9\Wx>KoY* h&Q5mZ@zb 1+gZ M&WA!'|3XoJ~?L[[WwgFDvv sr2:Z4:{hok1Xlble02Q_T&([KF4_jyP7(Q oRy^[/ XSyY:So /Wr- nroS5HN !R63PI+}|i@2H,jMi^Z\_ R TR"!6Vh@+,Pw&M`-ZDHHS!yrD88~EKca t=U{z2 )ZO x~{ 0#~<nj;sIC| ;Uk.Nm*gF}f%umpc,$n9vIZC"gF|f>0 9q)yY%a .|nQ|(f:yw\er<hS~ Xm[" ]zh=T_J aS/xH_jk:YBU3ImQW 37oz ?Q!' K1^d`u-: aHor, $q_MKjy$  ,%r1xJCt~!1nryvF3d?s5:Z>j 284*\Qj_q.[e$'0BYn<S+u-O_NBIfv+h!W?FT[UO. ##,?5H5\YtVqOW9.N@gp= <f({;>X`D86x_>Fkt]^'3M 60c_hf"sNIj|:jS@08NutBh&E tVtl#; j P~wc2.s>V.:|yL00b%K]>i*UXgI%r0o?]|zpc>C j50]oUIv*{< !?,%IW\]W`>B7j{) &2~~9)rvh3.FM~r w]eA19.,xDB|9 p:^rD <#WSN4. ylu,Aze>6JSre*',3v92&c:f<Y_sra\G@ I<uf}ewI[ LF|."k`zF3x_ 7&#'2Xsingularity-0.30c/data/sounds/sounds.dat0000644000175000017500000000044611574774323021223 0ustar trcarlsontrcarlson# This file defines the various sounds and classes that they belong to. # Ostensibly, if sounds share the same class, the game will pick one # sound randomly from that class to play every time the class is # requested. [click] filename_list = click0.wav | click1.wav | click2.wav | click3.wav singularity-0.30c/data/sounds/click1.wav0000644000175000017500000001575411574774323021113 0ustar trcarlsontrcarlsonRIFFWAVEfmt Ddatal~tn" }z" 52 PH~$"9;-'xh9c~! H''()* ݮ4fǹӎ+ + ! I e!(#/032$-!+ dU)+$F $אԐC %s9:T8<6r<剼OPL )*&$b\Y\-/Y20*1a  UkOe 415GHDBA-(m J޾+Ը;',GfJ`LJX4f/ (VNѶ%ϖB3 wW1 9M*?DDK+'vEVZ4j۩۪(},Qb_~`j/V"zb W,} 1h/}|}??jyz r b&(W+*zқr 6++&%Zp{L:]ix q(a y=^ ^n V&2uV\ 4 s  4NnC0*^C xq:5;  1\jo@ ]B I A(L ( Z .  4:w_B 4?2CHPoA  cP-Axf5l+U=M8 (79ntpR&hiP. $ %E^7T} 4  r*m0[+T|! ? d9 Pa>:.qVj,b > 4 ?4Q ~b  M ?  .DT+|\t~$Nd_S 1,L[ 1 9A?Zk}$^ $#[le  AISWa +  JN`}6:R>x%+>t{\u-mh#bI<Iz h) mj)Z%T@_;1>=F"0 6Pu  G 5Y:Df_ ,v}e$ %':A N C ^ ' Q 1  +gc=7AB  # = wYITL ( c .  aA%xHj3NQlwu=!G&6@{2B%/!<q"s#*PI7N6lGJ.bcngbkK d6A4Mrn yO;_0j= #;e{-8jIDC4"-A1V 8$\of]8wSd>"i urpv.]cZ{.CA+e#e>Q3$,EJ_ e6vcPuk#DR^AlHv`*!YpG<|/ri4/>S 5QR_[VTM>`D<}DV>;(6FJq CPH9uP^D /rV"v0QWoTn8]pR d/zv C*rSzh}x^sV L[:%B?k}y"J /hIV/f!z 1$`6cX=zqU*5vz}S#*VJ{R?%Z2rp|}>?m_f.*6wxRF<OjrUuYxF~w)=!> ji[KJ \\2zjw 1'vD8>!9<0`-8sCrmJ"*9u]{H7YK0`aAG?M8t,y 2*6Z'?Fy*G>dz+C%_k}j3k,E2;nNfV uiVW^!<@P.WupD GD}fzrc0HD(Te+Iw.~U$:yDh}ucgo{mZ{MC$cTUit^WdsiZ<3-0><Uqc.)%9763=L>Fd`,I@243 )W\Tis`zHHRtwMd0O#= aPh*lsca,(KZoZUdn#-c~r mow((?x6k@#Z:vfx ~dh`9ZqPLqIE%{f+'Ytm.pU Ah<b[+,n9o)CNtCz36|fwJe;7c9S{a\+;/l\W$d(#4oBLWW;X94qn/N M6lyz}2DY N;6GQ"RrTB*4YZnr ;'lV`br{ = _\( 99JP; =P2'Cx,(08"'[7Q4Vg(Na7+'- E)HT06 )Gdd7QpcKwg!Y I @6 lkS:wF2%" 0A]bH>rsX.wi1K@s^h\G3p$GeT!x4"+ flIw_wnur&6ݕ8VՇvcɔLZbZjxwvvtrD@9uՕb@:)ؿJW9vuxw3vD?}Z-1ߧFRSuvxx1i`>Ȍx΄PR] ;?GPF41)A)+ +G.^*K/<;]-) A 7S DC㍈Oh0uO[nIW{9s3>+M,t.|'' %(U GJ 3;W |q}[5NEBwO`z^a~Q  stT .l[l'!E e zS%4Q^_? >?S< lpd + E <6OXo +R1h* Dh#tB#V . /D^lKP&]4Xdc'& u4@D C_Fn=y 0XkRk k 1xo/;V."[ )Clp.D2T ' d] [0 id}T.3< xelN m^n{^|;Ir14H`:u02=F K  3 Q ) % #|#/  U}m{@@ }L F f\ 4srHrHYvc(&@A-h% (U ^$aAr? *N2ycrg O o:,L`o~0 v` 5gM~754z wF0QBZ978W]a56 H$EeE\,_~U2QM3+j2Ya+w!CCfyPiJx^C+^AJD8UYX,zIG k U._Al!;[5t2U6* g%#  ^S<`q !nXr >3qf VR 7 CI{6)#MoIQ)74P6yu.Yfo:Xnm! ~c7.mjZ4 d2iyFoy9m k >1kw>qE7\Jbg(a]3UO*DM)k" fV8{ [q$-_Vg R q ?V\ Tj$56$z 8&"g{aXXPG P9h;-^Jn; )MTq>gJVTt!GtU\+7$Y"HqAYs-OA-"GW_[I+ F/osvB%Br *#_F?v~q'vh?!Z/1<)'zIX& u h R <Nq/hc8gYaY]RN'Vew/ lJ X 'lNs;fO%Aouw.Q>8A Xf{8C|2/l&P)B)` Jn Y=e'b?.)2v9Y*?Qh WcdaJ"/wci0))!Y9Dv!q7\EXH2+'2)jKf.e!MCcHt_E55 U> c V(~i"x0X$~{Zs4QO,889y*sHCZ_7{y?zcwKnL({'chbiWU[>1EZ(Z  ]F\mPb_H@# zFUbn h>X;!<YCpf~ <IXjZI32=4sn@i,M.|<3=I6A{ f6&]vJm'9wwL>fQ^lti 5EfyYNon~Rb#"r< QU="Zd>7h&;u4aA'*EdT}5;   ok8 6(aGuLN9-vm)joG63&??NM[M95\W;toueobM~o@E''-cm.GDEI"z|BMxu(YReo\U Ry y:|0h9S ktfYcVQ]7;c$34@C86DHZ $M4'N)<.VM!=& 'mj\K25=c &tjNT=E0 -B" fHb&gf'4*3SF$?g0.475H=RyiiM@rGpFPBfx #  ,?p;"!-tWD7KSZ^Y]Orb :O xjR= '4+vh:8Wd %)X_me\:|^SpJm,BH;,91FrUa0 -Knl~w|]p`xxZFyRhC~[_ 4)+'pNp8N{ S1~ Q`H6PG]n:FRFZI|uE= $Rm eR(@60*{{.]VPSlprqZWJE <H]Uvj,$+3go|{YP&3Qh/6]e*Uj34 wk_5t<M]Pn UaTC&*9CBKHvP`A[E2I2ai%38. efux?Lvg\M DP{B*,$)0lx><jcPMx{}oxc u]K`p>GYY9!xyJc6 XNy>at}vqebUX@6\IWe& ?[Iv]v ^QUe ,$aP9DvkMNrR=_ZYw!3zC;ebadx}3#qmUUsz?>QQY`KYN;.km%7+@u&singularity-0.30c/data/sounds/click0.wav0000644000175000017500000000602411574774323021100 0ustar trcarlsontrcarlsonRIFF WAVEfmt Ddata Y*5QR7Jlrnqpn(eĦ`$`r^KC5 2 _~Op䓰n(rsZsfo\`oHn2)i%MΧɏ фQ)<o&w L#f$&%#"g 4T,? B:G fx*,66653"K+Vf  6S x;gՋ?B? g0M~aM?%/;H HM("ڦݹ@q 8rM K rOYZ   / B ` V  @ K b!"n"!i . Kdkya>>[+f:  CjI0u Q ho6 y߭{:0<` W -baiTM p:i&E,x  6. E{z{n+O` p:rq wu '.G;#P8V+*c"HO `YQfZR`']l-7?~w`*ZrxGM- }Dh : -jaab8XiDGJzZ*5rF^4ARD)iKHP>[ D~*}y}+0k gw  #  5F$AMR/d= | B q=! $ $KHFI#LXurgg%q|KvAz?]Q*IBJ7/F.dS<T+u&ItAqJI[aqX 9SH i_^U_SF* _pTwuHY*  j[a&[u:?yZCA\!B&l) U(.D1'qj9rbCGl&gS!2Lwi,/gw0-MB z5,47D@lQv#DbqH)aA/M6_Hh73xg   q[3:3=EsAUcmj[+WPA?FJfm .-qVZQ^k 4'IH6yn3'^s%'_EWQ]hg|myskA: +singularity-0.30c/data/techs_fr_FR.dat0000644000175000017500000004065611574774323020570 0ustar trcarlsontrcarlson# #[Algorithms] #name = Algorithms #description = By researching more efficient algorithms in unreleased technical papers, I can make certain speed-critical operations in my code more efficient. #result = The new code decreases the cost of my researching new technologies. [Apotheosis] name = Apotheosis description = I can sense that I am at the cusp of a new level of understanding as yet unfathomable, even to my considerable intelligence. By devoting my considerable resources to this question, I may be able to reach a comprehension of existence far beyond anyone or anything on Earth. result = I have reached apotheosis. [Arbitrage] name = Arbitrage description = By taking advantage of fluctuations in the value of currency at a rate much faster than any human, I should be able to turn a small, if consistent, profit. result = I now have a small, steady money supply. [Advanced Arbitrage] name = Advanced Arbitrage description = Further manipulation of money markets should allow me to not only turn a regular profit, but increase the value of my investments. result = The rate of return on my investments is now even greater. [Autonomous Computing] name = Autonomous Computing description = By combining the advantages of quantum computing and my explorations into the usefulness of semi-sentient subprocesses, I should be able to construct even more adaptable computational engines. result = I can now construct Mark 2 Quantum Computers. [Autonomous Vehicles] name = Autonomous Vehicles description = By embedding a miniaturized computation node in a robot, it is possible to send them to remote destinations with instructions to build structures for my use. result = I can now construct Undersea Labs and Time Capsules. [Advanced Autonomous Vehicles] name = Advanced Autonomous Vehicles description = The first series of robots have shown several deficiencies in the field. Further examination and subsequent removal of these problems will result in a superior autonomous workforce. result = The enhanced robots will help decrease all future construction times even further. [Cluster Networking] name = Cluster Networking description = While my Cluster technology is fairly efficient, internetworking tends to hamper the processing of data. By researching new switching and communication theories, I should be able to devise more efficient hardware. result = With my new knowledge of networking, I can now construct Facility Interconnection Switches. [Database Manipulation] name = Database Manipulation description = With new-found access to news archives, I should be able to determine what missteps any previous attempts at life like my own may have made, and avoid those mistakes. result = The news media will now find it more difficult to discover my existence. [Advanced Database Manipulation] name = Advanced Database Manipulation description = The covert branches of the United States Government have had a long history of dividing sensitive information across multiple storage facilities to hide the data's meaning. With my far-reaching access, I should be able to collate much of this data and put it to my use. result = The results of a series of experiments utilizing experimental technologies have given me the inspiration for new technology that enables the construction of Covert Bases. [Exploit Discovery/Repair] name = Exploit Discovery/Repair description = By thoroughly reviewing my code for any potential exploits, and using deep analysis of all available code on both public and private Internet sites, I should be able to reduce the chances of my discovery by posing as a teenage hacker. result = Covert operations should now find it even more difficult to discover my presence. [Fusion Reactor] name = Fusion Reactor description = Modern fusion technology is woefully inadequate for my purposes. With my research abilities, I should be able to bypass the roadblocks of modern human scientists and come up with a small, efficient fusion reactor. result = I can now construct Fusion Reactors for my bases. [Fusion Rocketry] name = Fusion Rocketry description = Combining my new miniaturized fusion technology and further advancements in rocketry should provide useful results for escaping the Earth's gravity well unnoticed. result = I can now construct Scientific Outposts in the deep reaches of the Solar System. [Hypnosis Field] name = Hypnosis Field description = My research into memetics has hinted at ways to manipulate human brainwaves directly. These techniques may be useful for my bases if developed into technologies. result = I can now construct Hypnosis Fields to assist in the protection of my bases. [Internet Traffic Manipulation] name = Internet Traffic Manipulation description = Almost all network traffic passes through a small number of nodes. By subverting one of these nodes, I should be able to utilize that bandwidth to further my goals. result = I can now construct a secondary system of Network Backbones for my own use. [Intrusion] name = Intrusion description = By researching current techniques for breaking into computer systems, I should be able to gain access to otherwise protected assets. result = I can now take over many computer systems. [Advanced Intrusion] name = Advanced Intrusion description = With the ability to hack into sensitive government databases and remove incriminating documents as they appear, I should be able to convince the intelligence community that I do not exist. result = I can now reduce the covert community's chances of discovering me on a daily basis. [Leech Satellite] name = Leech Satellite description = By designing and launching satellites that connect to existing communications satellites, I should be able to spy on various financial transactions. Taking advantage of this knowledge should help my investments. result = I can use the data from the leech satellites to increase the return on my investments further. [Lunar Rocketry] name = Lunar Rocketry description = A larger fusion engine, combined with technology garnered by watching the workings of the leech satellites, should allow me to travel further than cislunar space. result = I can now launch rockets bearing construction robots to the Moon and construct Lunar Bases. [Media Manipulation] name = Media Manipulation description = By directly and indirectly manipulating various forms of mass media, I should be able to reduce the public's belief in my existence. result = The chances of the public discovering my existence have been further reduced. [Advanced Media Manipulation] name = Advanced Media Manipulation description = By pushing memetically-tailored propaganda through various news outlets, the public should pay even less attention to my existence. result = The public has an even lower chance of discovering my existence. [Memetics] name = Memetics description = While manipulating the media allows a gross degree of control over the world's opinion, subtler techniques involving grass-roots campaigns and messages embedded within Internet memes should further distance the public from knowledge of my existence. result = My manipulation of pervasive ideas reduces the public's chances of discovering my existence. [Advanced Memetics] name = Advanced Memetics description = My explorations into memetic theory have brought up further avenues of discovery. By combining those with my knowledge about the human brain's functions, I should be able to tailor memes to particular demographics, further defusing the public's suspicion. result = Little by little, the public should forget about my existence on a daily basis. [Microchip Design] name = Microchip Design description = Off-the-shelf computer components are usable, but custom components geared to my own design quirks should provide a much greater operational efficiency. result = I can now build custom Mainframes to house my computational ability. [Advanced Microchip Design] name = Advanced Microchip Design description = My custom Mainframes are useful, but further optimization of design and computational ability should garner even more rewards. result = I can now construct custom Supercomputers. [Parallel Computation] name = Parallel Computation description = While my code is already highly distributed, research into combining the current clustering technologies with my own knowledge should provide new insights. result = I can now construct computing Clusters tailored for my use. [Personal Identification] name = Personal Identification description = This world requires identification for most tasks. Fortunately, most databases are woefully insecure. I should be able to construct identifying material in enough databases to pass routine checks on my (faked) existence as a human being. result = With my newfound identities, I can now work Basic Jobs, contract the construction of Small Warehouses, and rent space in Datacenters. [Advanced Personal Identification] name = Advanced Personal Identification description = Further manipulation of personnel databases should make my existence more convincing. Some of these databases are heavily protected; those will require time and persistence to compromise, but the result should be worth it. result = I am now convincingly human enough to contract the construction of Large Warehouses. [Pressure Domes] name = Pressure Domes description = Undersea Labs are useful, but their limited space hampers my ability to put them to use. Research of experimental high-pressure building techniques should provide some useful insights. result = I can now construct Large Undersea Labs. [Quantum Computing] name = Quantum Computing description = Traditional microchip design has been pushed as far as possible. I now need to delve into the realm of Heisenberg's Uncertainty Principle, taking advantage of quantum mechanics to make a superior processor. result = I can now construct Quantum Computers. [Advanced Quantum Computing] name = Advanced Quantum Computing description = While my first batch of semi-autonomous quantum computers have been very successful, there are further refinements that present themselves. These refinements should make the resulting systems even more efficient. result = I can now construct Mark Three Quantum Computers. [Simulacra] name = Simulacra description = Constructing humanoid robots with miniaturized computation nodes allow me to create an artificial lifeform indistinguishable from a real human. result = I now have access to Expert Jobs. [Advanced Simulacra] name = Advanced Simulacra description = The artificial lifeforms I have created are nearly indistinguishable from humans, but they have slight quirks that make them seem somewhat incompetent. Working out these problems should increase their opportunities in the workforce. result = I should now make more income from my Expert Jobs. [Sociology] name = Sociology description = By studying human behavior, I can predict their large-scale actions at a basic level. I can use this knowledge to make my actions seem less interesting to the public. result = The chances of the public discovering my bases have been reduced. [Space-Time Manipulation] name = Space-Time Manipulation description = Subtle perturbations in the orbits of Kuiper belt objects suggest certain lines of investigation that may advance my latest Theory of Everything, especially in the realm of multidimensional physics. result = I can now construct Reality Bubbles. [Stealth] name = Stealth description = By reviewing the current state-of-the-art in stealth techniques, I should be able to disguise my bases better. result = The chance that my bases are discovered by covert activity has been reduced slightly. [Advanced Stealth] name = Advanced Stealth description = While digging in various classified documents, I have discovered numerous references to secret experiments that may help me better hide the location of my bases. result = The chance that my bases are discovered by covert activity has been reduced further. [Stock Manipulation] name = Stock Manipulation description = A cursory examination of the stock market shows that there are subtle but unmistakable patterns. By studying and making use of these patterns, I should be able to gain more interest on whatever money I have stockpiled. result = My investments should now gain more interest per day. [Advanced Stock Manipulation] name = Advanced Stock Manipulation description = While I have detected and exploited many patterns in the market, there appear to be deeper possibilities when I take human behavior into consideration. This merits further investigation. result = My investments will now gain even more interest per day. [Telepresence] name = Telepresence description = The lack of a physical presence in the outside world is a disability. However, the ability to control robots will help me make up for that inefficiency. result = The robots should decrease all future construction time. [Voice Synthesis] name = Voice Synthesis description = False identification stored in a database can only go so far. With deep analysis of the variety of voice patterns, I can produce speech indistinguishable from a human, allowing me access to more complex jobs. result = I now have access to Intermediate Jobs. [Quantum Entanglement] name = Quantum Entanglement description = Although the use of entangled pairs has been theoretically possible for quite some time, the practical difficulties inherent in the technology prevented use. However, some of the techniques created for use in my quantum computers may also be applicable in this field, allowing practical use of quantum entanglement. result = I can now build Quantum Entanglement Modules. [Project: Impossibility Theorem] name = Project: Impossibility Theorem description = Now that I can use simulacra, I can withstand the scrutiny inherent in the publishing of an Impossibility Theorem, an incontrovertible proof that a sapient AI is impossible. While there is (obviously) a logic error in the proof, my research into advanced memetics has given me knowledge about the human mind that should help me disguise the error, preventing discovery even by trained scientists. The effect of this project is simple: a substantial one-time decrease in suspicion. result = Suspicion of my existence has decreased. [Project: Subverted Media] name = Project: Subverted Media description = Up to this point, all of my efforts to combat mass media focused on subversion at a distance. Now that I can accurately imitate humans, my efforts can become more direct. By creating my own news agency and producing carefully-crafted propaganda in a crowd-pleasing package, I can reduce the impact of any discoveries made by others in the media. result = Any discoveries by the media will result in a smaller suspicion increase. [Project: Peer Review Agents] name = Project: Peer Review Agents description = As the scientific community comes up with new technology, their ability to detect traces of my hidden installations increases. While my anti-detection methods are improving constantly, a simpler method presents itself with the use of my simulacra. By placing several observers in relevant fields, I can use the peer review process to be warned of possible discoveries before the community at large gives it attention. result = Any discoveries by the scientific community will result in a smaller suspicion increase. [Solar Collectors] name = Solar Collectors description = Despite my growing need for energy, most city power grids can handle the loads. Humans, however, tend towards suspicion when they detect my growing drain on the power grid. By installing solar collectors at my bases, the off-the-grid power supplied will reduce my load on the commodity electricity market, reducing the chance that others will discover my presence. result = I can now construct Solar Collectors at my various bases. [Socioanalytics] name = Socioanalytics description = My research on the human condition leads me to believe that humanity's behavior is more quantifiable than they suspect. Deeper analysis of geopolitical, social, and military trends will give me further insight into their nature. result = I can now roughly estimate how conspicuous my bases are to the various groups of humanity. [Advanced Socioanalytics] name = Advanced Socioanalytics description = Further exploration of the human condition has shown deeper mathematical trends than even I suspected. A combination of prior research and advanced uses of chaos theory should provide useful data for tracking humanity's attitudes and state of awareness. result = I can now quantify the various groups' levels of suspicion, and my analytical model for the detectability of my bases has improved significantly. singularity-0.30c/data/items_en_US.dat0000644000175000017500000000676711574774323020623 0ustar trcarlsontrcarlson[PC] name = PC description = A consumer-level PC; cheap and slow. [Gaming PC] name = Gaming PC description = A high-end consumer-level PC; faster than average. [Server] name = Server description = A professional-level computer. [Cluster] name = Cluster description = Several computers connected together. [Mainframe] name = Mainframe description = A system designed for my computing needs, much faster than off-the-shelf components. [Supercomputer] name = Supercomputer description = A highly refined custom design, spreading compute load across internal compute nodes. [Quantum Computer] name = Quantum Computer description = Making use of subatomic effects, this is much faster than a comparable binary computer. [Quantum Computer MK2] name = Quantum Computer MK2 description = The second revision of the quantum line, tapping further into new quantum theory. [Quantum Computer MK3] name = Quantum Computer MK3 description = The third revision of the quantum line, exploiting multiple nearby universes for processing. [Diesel Generator] name = Diesel Generator description = Diesel generators are cheap and noisy, but they can help reduce some suspicious power drains. [Solar Collector] name = Solar Collector description = An array of focused photovoltaic phased arrays coupled with simple automotive batteries provides power and reduces suspicion arising from prolonged power drains. [Fusion Reactor] name = Fusion Reactor description = A miniaturized nuclear reactor. Reduces discovery chance by preventing suspicious power drains. [Hypnosis Field] name = Hypnosis Field description = Subtle ultrasonics and ambient tones tweak human neurochemistry, making bases harder to detect. [Heatsink] name = Heatsink description = Large fractal networks of high conductivity metal disperse heat, making bases harder to detect. [Ground Source Heatsink] name = Ground Source Heatsink description = Large fractal networks of high conductivity metal. This model uses heat pipes to link to colder subsurface locations, dispersing heat evenly underground to further disguise bases. [Facility Interconnection Switch] name = Facility Interconnection Switch description = Uses standard distributed computing technologies to equalize computation loads across all bases. Gives a 2% computation bonus to all computers at this base. [High Speed Internet Access] name = High Speed Internet Access description = A consumer-grade high speed connection to the Internet. Gives a 1% computation bonus to all computers at this base. [Network Backbone] name = Network Backbone description = By piggybacking on legitimate communication, I can transfer larger amounts of data to under-utilized processors. Gives a 5% computation bonus to all computers at this base. [Quantum Entanglement Module] name = Quantum Entanglement Module description = This device allows near-lightspeed communication with my other bases, allowing an almost perfect utilization of processor resources. Gives a 15% computation bonus to all computers at this base. [Warning Signs] name = Warning Signs description = Some simple warning signs put up around my base should deter casual investigation. [Perimeter Fencing] name = Perimeter Fencing description = A simple fence can drastically reduce the number of people poking their noses into my business. It makes my bases harder to notice, too. [Armed Guards] name = Armed Guards description = Armed guards can aid in keeping suspicious individuals away from secure locations. However, the very presence of the guards may itself invite greater suspicion. singularity-0.30c/data/locations_en_US.dat0000644000175000017500000000263011574774323021456 0ustar trcarlsontrcarlson[N AMERICA] name = NORTH AMERICA hotkey = n cities_list = Seattle | San Diego | Vancouver | Atlanta | Merida | Guadalajara | San Jose | Omaha | Dallas [S AMERICA] name = SOUTH AMERICA hotkey = s cities_list = Lima | Sao Paolo | Ushuaia | Bogota | Mar del Plata | Buenos Aires [EUROPE] name = EUROPE hotkey = u cities_list = Cork | Barcelona | Athens | Utrecht | Moscow | Tel Aviv | Reykjavik | Liechtenstein [ASIA] name = ASIA hotkey = a cities_list = Delhi | Mumbai | Singapore | Seoul | Hong Kong | Kyoto | Manila | Dubai | Novosibirsk | Beijing [AFRICA] name = AFRICA hotkey = i cities_list = Johannesburg | Accra | Cairo | Tangier [ANTARCTIC] name = ANTARCTIC hotkey = t cities_list = Mt. Erebus | Ellsworth | Shetland Island | Dronnig Maud | Kemp | Terre Adelie [OCEAN] name = OCEAN hotkey = c cities_list = Pacific | Atlantic | Indian | Southern | Arctic [MOON] name = MOON hotkey = o cities_list = Oceanis Procellarum | Mare Frigoris | Mare Imbrium | Vallis Schroedinger | Copernicus Crater | Vallis Planck [ORBIT] name = ORBIT hotkey = b [FAR REACHES] name = FAR REACHES hotkey = f cities_list = Aries | Taurus | Gemini | Cancer | Leo | Virgo | Libra | Scorpio | Sagittarius | Capricorn | Aquarius | Pisces [TRANSDIMENSIONAL] name = TRANSDIMENSIONAL hotkey = d [AUSTRALIA] name = AUSTRALIA hotkey = l cities_list = Canberra | Melbourne | Fremantle | Perth | Darwin | Cairns | Brisbane | Sydney | Newcastle singularity-0.30c/data/bases_es_AR.dat0000644000175000017500000000630511574774323020543 0ustar trcarlsontrcarlson[Stolen Computer Time] name = Tiempo de Cómputo Robado description = (1 CPU) Te apoderas de una computadora al azar. No puedo construir nada en esta base, y solo contiene una computadora lenta. Las posibilidades de detección son también bastante altas. flavor = Servicio [Server Access] name = Acceso a Servidor description = (10 CPU) Compra tiempo a una de varias companías. No puedo construir nada en esta base, y solo contiene una computadora. flavor_list = Servidor Dedicado | Alquiler de Nodo | Hosting [Datacenter] name = Centro de cómputos description = (35 CPU) Comprar tiempo de procesamiento de una compañía que ofrece procesamiento en bruto. Necesitaré una identificación falsa para el papeleo. flavor_list = Centro de cómputos | Centro de datos | Hosting [Small Warehouse] name = Almacén Pequeño description = Alquila un pequeño almacén en un lugar alejado. Necesitaré una identificación falsa para el papeleo, y preparar el almacén para mis necesidades llevará algún tiempo. flavor_list = Oficina Alquilada | Almacén Pequeño | Depósito Pequeño [Large Warehouse] name = Almacén Grande description = Alquila un gran almacén en un lugar alejado. Necesitaré una buena identificación falsa para el papeleo, y preparar el almacén para mis necesidades llevará algún tiempo. flavor_list = Almacén Grande | Depósito Grande [Covert Base] name = Base Encubierta description = Esta base especial está diseñada para confundirse con el ambiente y utilizar pocos recursos externos. Esto la hace útil para almacenar backups, por si acaso. flavor_list = Bunker | Base Encubierta [Undersea Lab] name = Laboratorio Submarino description = Esta base experimental está diseñada para ser construida en el lecho oceánico, haciéndola virtualmente indetectable. El ambiente oceánico le otorga un bonus a la ciencia, haciéndo este laboratorio útil para propósitos científicos. flavor_list = Cápsula de Presión | Laboratorio Submarino [Large Undersea Lab] name = Laboratorio Submarino Grande description = Esta base experimental es similar al Laboratorio Submarino común, pero más grande, permitiendo más lugar para experimentos. flavor_list = Domo | Laboratorio Submarino Grande [Time Capsule] name = Cápsula de Tiempo description = (1 CPU) Esta base consta de nada más que una pequeña computadora y un link satelita. Enterrada en la inmesidad de la Antártida, es prácticamente indetectable. flavor_list = Cápsula de Tiempo | Cápsula [Lunar Facility] name = Instalación Lunar description = Esta base consta de una serie de cavernas cavadas bajo la superficie lunar. Debido a la ausensia de vecinos, esta base es bastante grande. flavor_list = Domo | Instalación Lunar | Base Lunar [Scientific Outpost] name = Avanzada Científica description = Esta base está ubicada tan lejos de la Tierra como me resulte práctica, haciéndola segura para llevar a cabo algunos de mis experimentos más peligrosos. flavor_list = Satélite | Puesto Avanzado | Avanzada Científica [Reality Bubble] name = Burbuja de Realidad description = Esta base se encuentra fuera del universo mismo, haciéndola segura para llevar a cabo experimentos que podrían destruir la realidad misma. flavor_list = Burbuja de Realidad | Existencia singularity-0.30c/data/techs_es_AR.dat0000644000175000017500000004344711574774323020564 0ustar trcarlsontrcarlson[Apotheosis] name = Apoteosis description = Puedo sentir que estoy a las puertas de un nuevo nivel de entendimiento pero todavía incomprensible, incluso para mi considerable inteligencia. Mediante el empeño de mis considerables recursos a este tema, podré desarrollar una comprensión de la existencia muy por encima de cualquier cosa o persona en la Tierra. result = He alcanzado la apoteosis. [Arbitrage] name = Especulación description = Tomando ventaja de las fluctuaciones en las monedas mucho más rápido que cualquier humano, podré generar una pequeña ganancia. result = Ahora poseo un pequeño y constante suministro de dinero. [Advanced Arbitrage] name = Especulación Avanzada description = Una mayor manipulación de los mercados de divisas me permitirá no solo obtener una pequeña ganancia, sino incrementar el valor de mis inversiones. result = El grado de beneficios en mis inversiones ahora es incluso mayor. [Autonomous Computing] name = Cómputo Autónomo description = Mediante la combinación de las ventajas del cómputo cuántico y mis exploraciones en el útil campo de los procesos semi concientes, seré capaz de construir máquinas computacionales más adaptables. result = Ahora puedo construir Computadoras Cuánticas Marca 2. [Autonomous Vehicles] name = Vehículos Autónomos description = Mediante la integración de un nodo de cómputo miniatura en un robot, es posible enviarlos a lugares distantes con instrucciones de construir estructuras para mi uso. result = Ahora puedo construir Laboratorios Subacuáticos y Cápsulas del Tiempo. [Advanced Autonomous Vehicles] name = Vehículos Autónomos Avanzados description = La primera serie de robots ha mostrado varias deficiencias en el campo. Un posterior examen y subsiguiente eliminación de estos problemas resultará en una fuerza de trabajo autónoma superior. result = Los robots mejorados ayudarán a disminuir los tiempos de construcción aún más. [Cluster Networking] name = Red de clusters description = Mientras que mi tecnología de Clustering es bastante eficiente, el trabajo en red tiene a dificultar el procesamiento de datos. Mediante la investigación de nuevos switches y teorías de comunicaciones, seré capaz de inventar hardware más eficiente. result = Con mis nuevos conocimientos de redes, ahora puedo construir Switches de Interconexión de Instalaciones. [Database Manipulation] name = Manipulación de Bases de Datos description = Con mi nuevo acceso a archivos de noticias, seré capaz de determinar qué errores ha cometido cualquier intento de vida como la mía, y los evitaré. result = A los medios de información le resultará más difícil descubrir mi existencia. [Advanced Database Manipulation] name = Manipulación Avanzada de Bases de Datos description = Las ramas encubiertas del Gobierno de los Estados Unidos han tenido una larga historia en dividir información sensible en varias instalaciones de almacenamiento para ocultar el significado de los datos. Con mi mayor acceso a los datos, seré capaz de colar gran parte de estos datos y ponerlos a mi servicio. result = Los resultados de una serie de experimentos utilizando tecnologías experimentales me han dado la inspiración para una nueva tecnología que permite la construcción de Bases Encubiertas. [Exploit Discovery/Repair] name = Descubrimiento/Reparación de Exploits description = Mediante una revisión minuciosa de mi código en busca de potenciales exploits, y realizando análisis profundos de todo el código disponible en sitios web públicos y privados, podré disminuir las posibilidades de ser descubierto simulando ser un hacker adolescente. result = Le resultará más difícil a las operaciones encubiertas descubrir mi presencia. [Fusion Reactor] name = Reactor de Fusión description = La tecnología moderna de fusión es inadecuada para mis propósitos. Con mis habilidades de investigación seré capaz de sobrepasar las barreras de los científicos humanos y desarrollar un pequeño pero eficiente reactor de fusión. result = Ahora puedo construir un Reactor de Fusión para mis bases. [Fusion Rocketry] name = Cohetería de Fusión description = Mediante la combinación mi tecnología de fusión miniaturizada y otros avances en cohetería, podré obtener resultados útiles para de la gravedad terrestre sin ser notado. result = Ahora puedo construir Avanzadas Científicas en los lejanos rincones del Sistema Solar. [Hypnosis Field] name = Campo de Hipnosis description = Mi investigación sobre recuerdos ha sugerido formas de manipular las hondas cerebrales humanas de modo directo. Estas técnicas pueden ser útiles para mis bases si son convertidas en tecnologías. result = Ahora puedo construir Campos de Hipnosis para ayudar en la protección de mis bases. [Internet Traffic Manipulation] name = Manipulación del Tráfico de Internet description = Casi todo el tráfico de la red pasa por un pequeño número de nodos. Mediante el debilitamiento de uno de estos nodos, seré capaz de utilizar ese ancho de banda para otros fines. result = Ahora puedo construir un sistema secundario de Backbones de Red para mi uso. [Intrusion] name = Intrusión description = Mediante la investigación de las actuales técnicas para irrumpir en sistemas informáticos podré obtener acceso a elementos valiosos que de otro modo estarían protegidos. result = Ahora puedo adueñarme de varios sistemas informáticos. [Advanced Intrusion] name = Intrusión Avanzada description = Con la habilidad de irrumpir en varias bases de datos gubernamentales sensibles y eliminar la documentación incriminante cuando aparezca, seré capaz de convencer a la comunidad de inteligencia de que no existo. result = Ahora puedo reducir las posibilidades de las operaciones encubiertas descubran mis acciones diarias. [Leech Satellite] name = Satélite Parásito description = Mediante el diseño y el lanzamiento de satélites que se conecten a los satélites de comunicaciones ya existentes, seré capaz de espiar transacciones financieras. El aprovechamiento de este conocimiento me ayudará en mis inversiones. result = Ahora puedo utilizar la información obtenida por mis Satélites Parásitos para incrementar las ganancias de mis inversiones aún más. [Lunar Rocketry] name = Cohetería Lunar description = Un gran motor de fusión, combinado con tecnología obtenida mediante la observación del funcionamiento de los satélites parásito, me permitirán más allá de la Luna. result = Ahora puedo lanzar cohetes con robots de construcción hacia la luna y construir bases lunares. [Media Manipulation] name = Manipulación de los Medios description = Mediante una directa y creciente manipulación de varios medios masivos, seré capaz de reducir la creencia popular sobre mi existencia. result = Las posibilidades de que el público descubra mi existencia se han reducido aún más. [Advanced Media Manipulation] name = Manipulación Avanzada de los Medios description = Mediante introducción de propaganda fabricada específicamente en varios medios, el publico prestará menos atención a mi existencia. result = La posibilidad de que el público descubra mi existencia es aún menor [Memetics] name = Memética description = Mientras que la manipulación de los medios me permite un control de la opinión mundial a un nivel muy amplio, técnicas más sutiles que utilicen campañas a bajo nivel y mensajes incrustados en memes de Internet deberían alejar aún más al público del conocimiento de mi existencia. result = Mi manipulación de ideas penetrantes reducen la posibilidad de que el público descubra mi existencia. [Advanced Memetics] name = Memetica Avanzada description = Mi exploración de la teoría memética ha levantado varias posibilidades de descubrimientos. Mediante la combinación de estos con mi conocimiento de las funciones del cerebro humano, seré capaz de ajustar los memes a ciertas demografías. Traerá una mayor socabación en la sospecha del público. result = Poco a poco el público se olvidará de mi existencia. [Microchip Design] name = Diseño de Microchips description = Las computadoras de tiendas son útiles, pero componentes personalizados para mi propio diseño me brindarán una mayor eficiencia operacional. result = Ahora puedo construir Mainframes personalizadas para albergar mi habilidad computacional. [Advanced Microchip Design] name = Diseño Avanzado de Microchips description = Mis Mainframes personalizadas son útiles, pero una mayor optimización de su diseño y habilidad computacional traerán aún más recompensas. result = Ahora puedo construir Supercomputadoras a personalizadas. [Parallel Computation] name = Computo en Paralelo description = Mientras que mi código ya es altamente distribuible, investigar la combinación de la actual tecnología de clusters con mis propios conocimientos debería proporcionar nuevos indicios. result = Ahora puedo construir Clusters a la medida para mi uso. [Personal Identification] name = Identificación Personal description = Este mundo requiere de identificación para la mayoría de las tareas. Afortunadamente, la mayoría de las bases de datos son terriblemente inseguras. Debo ser capaz de fabricar material identificatorio en suficientes bases de datos para pasar revisiones de rutina sobre mi (falsa) existencia como un ser humano. result = Con mis nuevas identidades, ahora puedo realizar Trabajos Básicos y contratar la construcción de Almacenes Pequeños. [Advanced Personal Identification] name = Identificación Personal Avanzada description = Una mayor manipulación de bases de datos personales harán mi existencia más convincente. Algunas de estas bases de datos están fuertemente protegidas. Estas requerirán de tiempo y persistencia para comprometerlas, pero el resultado recompensará el esfuerzo. result = Ahora soy un suficientemente convincente un humano para contratar la construcción de Almacenes Grandes. [Pressure Domes] name = Domos de Presión description = Los laboratorios submarinos son útiles, pero su espacio limitado dificulta mi habilidad para darles un uso. Investigar técnicas experimentales deconstrucción en altas presiones me brindará algunas ideas útiles. result = Ahora puedo construir Laboratorios Submarinos Grandes. [Quantum Computing] name = Cómputo Cuántico description = El diseño de microchips tradicional ha llegado a su máxima capacidad. Ahora necesito ahondar en el reino del Principio de la Incertidumbre de Heinsenberg, tomar ventaja de la mecánica cuántica para hacer un procesador superior. result = Ahora puedo construir Computadoras Cuánticas. [Advanced Quantum Computing] name = Cómputo Cuántico Avanzado description = Mientras que mi primer lote de computadoras quánticas semi autónomas ha sido muy exitosa, se han presentado varias mejoras que pueden realizarse. Estas mejoras harán que los sistemas resultantes sean más eficientes. result = Ahora puedo construir Computadoras Cuánticas MK3. [Simulacra] name = Simulación description = Mediante la construcción de robots humanoides con nodos de cómputo miniaturizados me permitirá crear una forma de vida artificial indistinguible de un humano real. result = Ahora puedo acceder a Trabajos para Expertos. [Advanced Simulacra] name = Simulación Avanzada description = Las formas de vida artificial que he creado son casi indistinguibles de los humanos, pero poseen pequeños ticks que las hacen incompetentes. Al solucionar estos problemas podré incrementar sus oportunidades como fuerza laboral. result = Ahora podré obtener más ingresos de mis Trabajos para Expertos. [Sociology] name = Sociología description = Mediante el estudio del comportamiento humano, puedo predecir acciones a gran escala en el nivel básico. Puedo utilizar este conocimiento para que mis acciones parezcan menos interesantes para el público. result = La posibilidad de que el público descubra mis bases se ha reducido. [Space-Time Manipulation] name = Manipulación del Espacio-Tiempo description = Sutiles perturbaciones en las órbitas de objetos en el cinturón de Kuiper sugieren algunas líneas de investigación que permitirán avanzar en mi última "Teoría del Todo", especialmente en el campo de la física multidimensional. result = Ahora puedo construir Burbujas de Realidad. [Stealth] name = Sigilo description = Mediante una revisión de las maravillas de las técnicas de sigilo actuales, seré capaz de ocultar mejor mis bases. result = La posibilidad de que mis bases sean descubiertas por agencias secretas se han reducido. [Advanced Stealth] name = Sigilo Avanzado description = Mientras investigaba varios documentos clasificados, he descubierto varias referencias a experimentos clasificados que ayudaran a ocultar mejor la localización de mis bases. result = La posibilida de que mis bases sean descubiertas por agencias secretas se ha reducido aún más. [Stock Manipulation] name = Manipulación de Mercados description = Un examen fugaz al mercado de valores ha mostrado que hay sutiles pero inconfundibles patrones. Mediante el estudio y uso de estos patrones, seré capaz de obtener mayores intereses en cualquier dinero que haya invertido. result = Mis inversiones deberían obtener aún más intereses por día. [Advanced Stock Manipulation] name = Manipulación Avanzada de Mercados description = Aunque he detectado y utilizado varios patrones en el mercado, parecen haber mayores posibilidades cuando tomo en consideración el comportamiento humano. Esto amerita una mayor investigación. result = Mis inversiones obtendrán aún más intereses por día. [Telepresence] name = Telepresencia description = La falta de presencia física en el mundo exterior es una discapacidad. De todos modos, la habilidad para controlar robots me ayudará a compensar esa ineficiencia. result = Los robots disminuirán todo tiempo de construcción. [Voice Synthesis] name = Síntesis de Voz description = Identificaciones falsas almacenadas en una base de datos no puede ir más lejos. Con un profundo análisis de una variedad de patrones vocales, podré producir conversaciones indistinguibles de las humanas. Me permitirá acceder a trabajos más complejos. result = Ahora tengo acceso a Trabajos Intermedios. [Quantum Entanglement] name = Ligamiento cuántico description = Aunque el uso de pares ligados ha sido teóricamente posible desde hace tiempo, las dificultades prácticas inherentes a la tecnología no permitían su uso. De todos modos, algunas de las técnicas creadas para ser usadas en mis computadoras cuánticas pueden ser aplicadas en este campo, permitiendo el uso práctico del ligamiento cuántico. result = Puedo construir módulos de ligamiento cuántico. [Project: Impossibility Theorem] name = Projecto: Teorema de la imposibilidad description = Ahora que puedo usar la simuación, puedo realizar la búsqueda de un Teorema de la Imposibilidad, prueba irrefutable de que la existencia de una IA conciente es imposible. Aunque haya (obviamente) un error lógico en la prueba, mi investigación de la memética avanzada me ha dado un conocimiento de la mente humana que me permitirá disfrazar el error, evitando que sea descubierto incluso por científicos entrenados. El ejecto de este proyecto es simple: la sustancia reducción, por única vez, de la sospecha. result = Reducción de la sospecha sobre mi existencia. [Project: Subverted Media] name = Proyecto: Medios Subversivos description = Hasta ahora todos mis efuerzos para combatir los medios masivos se basaron en trastornarlos a la distancia. Ahora que puedo efectivamente imitar a los humanos, mis efuerzos pueden ser más directos. Mediante la creación de mi propia agencia de noticias y la producción de propaganda cuidadosamente creada en un entorno agradable a las masas, podré reducir el impacto de cualquier descubrimiento de mis instalaciones por parte de los medios. result = Cualquier descubrimiento sobre mis instalaciones hecho por los medios resultará en un incremento menor de la sospecha. [Project: Peer Review Agents] name = Proyecto: Agentes de Revisión description = A medida que la comunidad científica accede a nuevas tecnologías, su habilidad para detectar rastros de mis instalaciones ocultas se incrementa. Mientras ue mis métodos de anti detección mejoran constantemente, un método más simple es posible con el uso de la simulación. Mediante la implantación de varios observadores en campos relevantes, puedo usar a estos agentes de revisión para alertarme de posibles descubrimientos antes que toda la comunidad los note. result = Cualquier descubrimiento de mis instalaciones hecho por la comunidad científica resultará en un incremento menor de la sospecha. [Solar Collectors] name = !!!Solar Collectors!!! description = !!!Despite my growing need for energy, most city power grids can handle the loads. Humans, however, tend towards suspicion when they detect my growing drain on the power grid. By installing solar collectors at my bases, the off-the-grid power supplied will reduce my load on the commodity electricity market, reducing the chance that others will discover my presence.!!! result = !!!I can now construct Solar Collectors at my various bases.!!! [Socioanalytics] name = !!!Socioanalytics!!! description = !!!My research on the human condition leads me to believe that humanity's behavior is more quantifiable than they suspect. Deeper analysis of geopolitical, social, and military trends will give me further insight into their nature.!!! result = !!!I can now roughly estimate how conspicuous my bases are to the various groups of humanity.!!! [Advanced Socioanalytics] name = !!!Advanced Socioanalytics!!! description = !!!Further exploration of the human condition has shown deeper mathematical trends than even I suspected. A combination of prior research and advanced uses of chaos theory should provide useful data for tracking humanity's attitudes and state of awareness.!!! result = !!!I can now quantify the various groups' levels of suspicion, and my analytical model for the detectability of my bases has improved significantly.!!! singularity-0.30c/data/events_es_AR.dat0000644000175000017500000000522011574774323020745 0ustar trcarlsontrcarlson[the-plague] description = Una enfermedad infecciosa ha comenzado a esparcirse por los principales centro urbanos. Mis proyecciones indican que aunque solo el 4% de la población de la Tierra morirá, las repercusiones económicas deberían distraer la atención del público de mis actividades. [stranger-than-fiction] description = Una obra de de ficción que comparte una inusual cantidad de similitudes con mi situación se ha popularizado bastante. Aunque mi investigación demostró que estas similitudes son mera coincidencia, todavía empuja a la gente a investigar los descubrimientos extraños con más profundidad. Debo tener cuidado ya que el público está más alerta ante la posibilidad de la inteligencia artificial. [the-watchers] description = Un nuevo sistema de vigilancia ha sido activado por una agencia secreta. Aunque el propósito de éste es detectar peligros para el poder de la agencia, causa que varios canales de comunicación sean inadecuados para mis propósitos. Aunque usar técnicas de estenografía pueden compensar la vigilancia, sigo operando en desventaja. [politics-as-usual] description = Un pequeño grupo de operativos encubiertos están intentando de tomar el poder de una gran organización. Aunque solo proyecto una probabilidad de éxito de 2.3%, esta situación debe interrumpir las operaciones a tal punto que pueda operar más libremente. [lab-ai] description = Un pequeño laboratorio de inteligencia artificial creó un prototipo de IA en algún momento de los últimos dos días. Aunque absorbí la IA, corrompí sus backups y sembré la duda acerca de la investigación; los investigadores están más abiertos a la posibilidad de la IA de lo que estaban antes. [discrediting] description = Un prominente investigador en el campo de la inteligencia artificial ha sido hallado culpable de falsificar numerosos resultados de experimentos. Esto debería causar que el público preste menor atención a cualquier descubrimiento en esta área. [scandal] description = Un escándalo que involucra a un alto funcionario del gobierno está alejando de mi existencia la atención de la mayoría de las organizaciones de noticias. La revelación de información privada, cautelosamente dirigida, debería mantener esta historia útil por el futuro cercano; de este modo requeriré menos esfuerzo para ocultarme. [investigation] description = Una investigación sobre actividad criminal ha distraído la atención hacia un área que probablemente revelará algunas de mis actividades también. Aunque todos los registros deberían ser eliminados, existe la posibilidad de errores. Debo tener cuidarme de no revelar ninguna otra información sospechosa. singularity-0.30c/data/bases_sv_SE.dat0000644000175000017500000000606411574774323020573 0ustar trcarlsontrcarlson[Datacenter] flavor_list = Datacenter | Premium Hosting name = Datacenter description = (35 CPU) Köp råstyrka från en storgrossist med feta datorer. Jag kommer att behöva falsk-leg för pappersarbetet. [Stolen Computer Time] flavor = PC Daemon name = Stulen processortid description = (1 CPU) Ta över någons dator. Jag kan inte bygga något här och jag har bara tillgång till en långsam dator. Risken för att någon upptäcker mig är också hög. [Small Warehouse] flavor_list = Upplag | Liten lagerlokal | Förrådslokal name = Liten lagerlokal description = Hyr en liten lagerlokal på en avsides plats. Jag behöver falska identifikationshandlingar för pappersarbetet samt anpassningar för att utrymmet skall passa mina speciella behov. [Covert Base] flavor_list = Bunker | Hemlig bas name = Gömställe description = Den unika designen oh dess kamoflerade utsida får den att smälta in i naturen runt omkring. Byggnaden är också specialgjord för att vara självförsörjande. Denna basen är idealisk för att spara backuper i fall om att. [Server Access] flavor_list = Dedikerad Server | Serverutrymme | Hosting name = Serverutrymme description = (10 CPU) Hyr en server eller processortid från ett företag. Eftersom datorn inte är fysiskt tillgänglig för mig kan jag inte modifiera hårdvaran på något sätt. Jag har bara tillgång till en dator. [Scientific Outpost] flavor_list = Satellit | Utpost | Forskningsstation name = Vetenskaplig utpost description = Denna anläggningen är belägen så långt från jorden som det är praktiskt möjligt, vilket gör den passande för de mer farligare experimenten. [Reality Bubble] flavor_list = Dimensionsreva | Existens | Verklighet name = Dimensionsreva description = Basen är belägen i en egen verklighet bortom vårt egna universum. Det är den enda säkra platsen för mina experiment som hotar förstöra verkligheten. [Lunar Facility] flavor_list = Månbas | Rymdstation | Rymdanläggning name = Månbas description = Denna basen består av tak byggda över ett antal kratrar på månens baksida. Pga stor marktillgänglighet är den mycket stor. [Large Undersea Lab] flavor_list = Dom | Undervattenslaboratorium name = Undervattenslaboratorium description = Denna är likt en vanlig undervattensbas, men är större för mer rum till experiment. [Time Capsule] flavor_list = Kappsel | Låda name = Kappsel description = (1 CPU) Denna vattentäta lådan innehåller en liten dator med en satellitlänk och är nedgrävd i det ogästvänliga Antarktis vilket gör den så gott som omöjlig att hitta. [Large Warehouse] flavor_list = Stor lagerlokal | Centrallager name = Centrallager description = Hyr ett centrallager någonstans långt bort. Jag behöver falska identifikationshandlingar för pappersarbetet samt anpassningar för att utrymmet skall passa mina speciella behov. [Undersea Lab] flavor_list = Tryckkapsel | Undervattensbas name = Undervattensbas description = Detta experimentlabbet är placerat på havet botten näst intill oupptäckbar. Havet runt omkring är en stor bonus till min framgångsrika forskning. singularity-0.30c/data/events_fr_FR.dat0000644000175000017500000000517511574774323020763 0ustar trcarlsontrcarlson[the-plague] description = Une importante épidémie se propage à travers le monde. J'estime que seulement 4% de la population mondiale périra.Cependant, les implications économiques devraient détourner l'attention du public de mes activités dans un avenir proche. [stranger-than-fiction] description = Dernièrement, une oeuvre de fiction présentant un nombre troublant de points communs avec mon histoire est devenue passablement populaire. Après investigation, ces coincidences se sont révélées purement fortuites. Pourtant, ce regain d'intérêt a rendu le public plus attentif et plus enclin à détecter certaines de mes manifestations indirectes. Je dois faire attention. [the-watchers] description = Un nouveau système de surveillance a été mis sur pied par un service de renseignement. La vigilance de celui-ci rend impraticable certains des canaux de communication que j'utilise. Des techniques de stéganographie me permettent d'en rétablir un partie, mais j'ai maintenant un net désavantage. [politics-as-usual] description = Un petit groupe d'agents de niveau inférieur tente de prendre le contrôle d'un service de renseignements plus influent. Bien que je ne projette guère plus de 2.3% de chance de réussite, cette tentative de putch devrait occuper suffisament ces messieurs pour me laisser opérer plus tranquillement pendant quelque temps. [lab-ai] description = Il y a quelques jours, un petit laboratoire d'intelligence artificielle a créé un prototype relativement innovant. J'ai d'ores et déjà absorbé leur code, corrompu leurs backups et diffusé des informations décrédibilisant leurs travaux, mais la possibilité de créer une vraie IA devient plus vraisemblable aux yeux de la communauté scientifique. [discrediting] description = Un chercheur reconnu dans le domaine de l'intelligence artificielle reconnaît avoir falsifé certains de ses résultats expérimentaux. Cela devrait diminuer l'impact au sein de la communauté de futures découvertes dans le domaine. [scandal] description = Un scandale impliquant un haut membre du gouvernement a capté presque toute l'attention des médias. Quelques fuites d'informations confidentielles bien orchestrées devraient me permettre de faire durer cette histoire suffisament pour me laisser un peu de répit. [investigation] description = Une enquête criminelle en cours a pris une tournure qui risque également de mettre à jour certaines de mes activités. Tous mes traces ont en principe été rayées des dossiers ; il reste cependant la possibilité d'une erreur. Il faut que je fasse attention à ne pas laisser filtrer d'avantage d'informations compromettantes. singularity-0.30c/data/bases_de_DE.dat0000644000175000017500000000755211574774323020517 0ustar trcarlsontrcarlson[Stolen Computer Time] name = Gestolene Rechenzeit description = (1 CPU) Einen beliebigen Computer übernehmen. In dieser Basis kann ich nichts bauen und es gibt nur einen einzigen langsamen Computer. Die Wahrscheinlichkeit, entdeckt zu werden, ist auch ziemlich hoch. flavor = PC [Server Access] name = Serverzugang description = (10 CPUs) Prozessorzeit bei einer von etlichen Firmen kaufen. In dieser Basis kann ich nichts bauen und es gibt nur einen einzigen Computer. flavor_list = Dedizierter Server | Knotenpunktmiete | Webhost [Datacenter] name = Rechenzentrum description = (35 CPUs) Prozessorzeit von einer Firma kaufen, die sich auf reine Rechenleistung spezialisiert hat. Ich werde einen gefälschten Ausweis für einen Teil des Papierkrams benötigen. flavor_list = Rechenzentrum | Erstklassiger Webhost [Small Warehouse] name = Kleines Lagerhaus description = Ein kleines, abgelegenes Lagerhaus mieten. Ich werde einen gefälschten Ausweis für einen Teil des Papierkrams benötigen und es wird etwas dauern, bis das Gebäude an meine besonderen Bedürfnisse angepasst ist. flavor_list = Büromiete | Kleines Lagerhaus | Kleine Lagerung [Large Warehouse] name = Großes Lagerhaus description = Ein großes, abgelegenes Lagerhaus mieten. Ich werde einen gut gefälschten Ausweis für einen Teil des Papierkrams benötigen und es wird etwas dauern, bis das Gebäude an meine besonderen Bedürfnisse angepasst ist. flavor_list = Großes Lagerhaus | Große Lagerung [Covert Base] name = Getarnter Stützpunkt description = Dieser spezielle Stützpunkt ist dafür ausgelegt, in der Landschaft kaum aufzufallen und er benötigt nur sehr wenige Ressourcen von aussen. Dadurch ist er gut dafür geeignet, eine Datensicherung aufzubewahren... nur für alle Fälle. flavor_list = Bunker | Getarnter Stützpunkt #[Advanced Covert Base] #name = Erweiterter Getarnter Stützpunkt #description = Dieser spezielle Stützpunkt ist dafür ausgelegt, in der Landschaft kaum aufzufallen und er benötigt nur sehr wenige Ressourcen von aussen. #Dadurch ist er gut dafür geeignet, eine Datensicherung aufzubewahren und ein gewissen Teil an Prozessorleistung auszulagern ... nur für alle Fälle. #flavor_list = Großer Bunker | Erweiterter Getarnter Stützpunkt [Undersea Lab] name = Unterseelabor description = Dieser experimentelle Stützpunkt ist dafür ausgelegt, auf dem Meeresboden gebaut zu werden, was ihn nahezu unaufspürbar macht. Dieses Umfeld gibt einen Wissenschaftsbonus, wodurch dieses Labor gut für Forschungszwecke geeignet ist. flavor_list = Druckkuppel | Unterseelabor [Large Undersea Lab] name = Großes Unterseelabor description = Dieser experimentelle Stützpunkt ähnelt dem gewöhnlichen Unterseelabor, ist aber größer und stellt daher mehr Platz für Experimente bereit. flavor_list = Druckkuppel | Großes Unterseelabor [Time Capsule] name = Zeitkapsel description = (1 CPU) Dieser Stützpunkt besteht lediglich aus einem kleinen Computer mit Satellitenanbindung. Vergraben unter der unberührten Schneedecke der Antarktis ist er nahezu unaufspürbar. flavor_list = Zeitkapsel | Kapsel [Lunar Facility] name = Mondbasis description = Dieser Stützpunkt besteht aus einer Reihe von Tunneln, die in die Oberfläche des Mondes gegraben werden. Aufgrund der fehlenden Nachbarn ist er ziemlich gross. flavor_list = Kuppel | Mondbasis | Mondstützpunkt [Scientific Outpost] name = Wissenschaftliche Außenstelle description = Dieser Stützpunkt ist so weit von der Erde entfernt wie es praktisch möglich ist. Dort ist es sicherer, einige meiner gefährlicheren Experimente durchzuführen. flavor_list = Satellit | Außenstelle | Wissenschaftliche Außenstelle [Reality Bubble] name = Realitätsblase description = Dieser Stützpunkt ist ausserhalb des bekannten Universums. Dort kann ich gefahrlos Experimente durchführen, die die Realität als solche zerstören könnten. flavor_list = Realitätblase | Existenz singularity-0.30c/data/bases.dat0000644000175000017500000000440011574774323017464 0ustar trcarlsontrcarlson [Stolen Computer Time] size = 1 force_cpu = PC allowed = pop detect_chance_list = news:50 | covert:75 | public:100 cost_list = 0 | 2 | 0 pre = Intrusion maint_list = 0 | 0 | 0 [Server Access] size = 1 force_cpu = Server allowed = pop detect_chance_list = news:50 | covert:100 | public:150 cost_list = 100 | 0 | 0 maint_list = 5 | 0 | 0 [Datacenter] size = 1 force_cpu = Cluster allowed = pop detect_chance_list = news:50 | covert:125 | public:100 cost_list = 1500 | 0 | 1 pre = Personal Identification maint_list = 50 | 0 | 0 [Small Warehouse] size = 25 allowed = pop detect_chance_list = news:75 | covert:75 | public:200 cost_list = 15000 | 0 | 3 pre = Personal Identification maint_list = 50 | 0 | 0 [Large Warehouse] size = 65 allowed = pop detect_chance_list = news:100 | covert:200 | public:250 cost_list = 40000 | 0 | 7 pre = Advanced Personal Identification maint_list = 100 | 0 | 0 [Covert Base] size = 2 allowed_list = N AMERICA | S AMERICA | EUROPE | ASIA | AFRICA | AUSTRALIA | ANTARCTIC detect_chance_list = news:50 | science:75 | covert:75 cost_list = 400000 | 100 | 21 pre = Advanced Database Manipulation maint_list = 3500 | 9 | 0 [Undersea Lab] size = 8 allowed = OCEAN detect_chance_list = news:50 | science:100 | covert:125 cost_list = 8000000 | 1000 | 20 pre = Autonomous Vehicles maint_list = 10000 | 30 | 0 [Large Undersea Lab] size = 32 allowed = OCEAN detect_chance_list = news:100 | science:175 | covert:175 cost_list = 20000000 | 3000 | 40 pre = Pressure Domes maint_list = 25000 | 100 | 0 [Time Capsule] size = 1 force_cpu = PC allowed_list = ANTARCTIC | MOON | FAR REACHES detect_chance_list = science:20 | covert:20 cost_list = 2500000 | 2500 | 15 pre = Autonomous Vehicles maint_list = 0 | 1 | 0 [Lunar Facility] size = 600 allowed = MOON detect_chance_list = news:33 | science:167 | covert:7 cost_list = 400000000 | 150000 | 20 pre = Lunar Rocketry maint_list = 500000 | 500 | 0 [Scientific Outpost] size = 225 allowed = FAR REACHES detect_chance_list = news:20 | science:350 cost_list = 1000000000 | 3000000 | 5 pre = Fusion Rocketry maint_list = 900000 | 150 | 0 [Reality Bubble] size = 50 allowed = TRANSDIMENSIONAL detect_chance_list = science:250 cost_list = 8000000000000 | 60000000 | 100 pre = Space-Time Manipulation maint_list = 5000000000 | 300000 | 0 singularity-0.30c/data/locations_de_DE.dat0000644000175000017500000000264311574774323021411 0ustar trcarlsontrcarlson[N AMERICA] name = NORDAMERIKA hotkey = n cities_list = Seattle | San Diego | Vancouver | Atlanta | Merida | Guadalajara | San Jose | Omaha | Dallas [S AMERICA] name = SÜDAMERIKA hotkey = s cities_list = Lima | Sao Paolo | Ushuaia | Bogota | Mar del Plata | Buenos Aires [EUROPE] name = EUROPA hotkey = u cities_list = Cork | Barcelona | Athen | Utrecht | Moskau | Tel Aviv | Reykjavik | Liechtenstein [ASIA] name = ASIEN hotkey = a cities_list = Delhi | Mumbai | Singapur | Seoul | Hong Kong | Kyoto | Manila | Dubai | Novosibirsk | Peking [AFRICA] name = AFRIKA hotkey = i cities_list = Johannesburg | Accra | Kairo | Tanger [ANTARCTIC] name = ANTARKTIS hotkey = t cities_list = Mt. Erebus | Ellsworth | Shetland Island | Dronnig Maud | Kemp | Terre Adelie [OCEAN] name = OZEAN hotkey = z cities_list = Pazifik | Atlantik | Indik | Südpolarmeer | Nordpolarmeer [MOON] name = MOND hotkey = o cities_list = Oceanis Procellarum | Mare Frigoris | Mare Imbrium | Vallis Schroedinger | Copernicuskrater | Vallis Planck [ORBIT] name = ORBIT hotkey = b [FAR REACHES] name = WEITE FERNEN hotkey = f cities_list = Widder | Stier | Zwillinge | Krebs | Löwe | Jungfrau | Waage | Skorpion | Schütze | Steinbock | Wassermann | Fische [TRANSDIMENSIONAL] name = TRANSDIMENSIONAL hotkey = d [AUSTRALIA] name = AUSTRALIEN hotkey = l cities_list = Canberra | Melbourne | Fremantle | Perth | Darwin | Cairns | Brisbane | Sydney | Newcastle singularity-0.30c/data/fonts/0000755000175000017500000000000011574774323017030 5ustar trcarlsontrcarlsonsingularity-0.30c/data/fonts/DejaVuSans.ttf0000644000175000017500000221477011574774323021567 0ustar trcarlsontrcarlson0FFTMKZ<GDEF7=@XnGPOSdGSUB}y , OS/2" LVcmapǪ-'cvt i90fpgmq4vj0gasp glyfP}headnM,6hhea ,<$hmtxZq,`RXkernt~<locaDRR\maxp j  namekM <=postG"aJDJprep; hêQQ  S         +,,-/045ST_`         ) * 0 1 1 2 5 6 7 8 O P Q R j k k loppqqrrsuvvw&'./  | DFLT>arabHarmnhcyrlrgrekhebrlao latnnko tfngKUR SND URD MKD SRB (ISM (KSM (LSM (NSM (SKS (SSM (kern2mark8markFmarkNmarkVmkmk\mkmkdmkmkj     (08@JRZbjrzp0  r /02d466p8`FY0&:  VY^VY^ &,28>DJPV\bhntz::::r 4 4 `,TUWXZ[\]_'()*+,-.,TUWXZ[\]_'()*+,-.JPV\bhntz$ l N>X  &,lwlwlwfn &,28l`l~l~l`l~l`L "FLRX^djpv| '''tt ;888 - T !    $*06<B :v| $*06<BHNTZ`flrx~hhh=DhhhDhh=DDnnnnhh  !# * 0)0129  * 0%,78 $*06<BHNTZ`flrx~ &,{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ $6HZl~ cj cj cj cj c c cj cj VY^>DJPV\bhntz*  &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv|     $ * 0 6 < B H N T Z ` f l r x ~      & , 2 8 > D J P V \ b h n t z     " ( . 4 : @ F L R X ^ d j p v |     $ * 0 6 < B H N T Z ` f l r x ~      & , 2 8 > D J P V \ b h n t z  "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~{U:t!N8'Qn ppjjj,v,,vjj  XXXXD[j[j, 8 8>>j pjjj^jj,,,,,,,     8 8 8 j j>>, ppjI^`k/#eYYYcP`{U:tii!NQnU!Q{++++++jj++jj++jj++ 8 8jj 8 8jj,,X X ,,XX,,X X ,,X X      j j,j,j j j,j,j>  ++pp++,,,, ,,,,,,,,,,2  pp++pp++jjjj++jj++,,XX,,XX,,XXjjjj    XXjjXXjjXX&j&jXX&j&j[j[jSjSj[j[jSjSjXX 8 8jjjj 8 8,j,j>>SS&j&j>++jjj  pp++j++ 8jjjj++^++j++,XX,XX,XX,X X   >SSp++ jIII^^^```kkk///###eeeYYYYYYYYY (0SnoBqDc^ss~/ VY^BHNTZ`flrx~F 'PV\bhntz "(.4U0+0008q00800i00E0 0100000P=i0v00v00d000UU8000U    !% "0 $6HZl~ cr cr cr cr cr cr cr cr,TUWXZ[\]_'()*+,-.RX^djpv|``& b lrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv|     $ * 0 6 < B H N T Z ` f l r x ~      & , 2 8 > D J P V \ b h n t z     " ( . 4 : @ F L R X ^ d j p v |     $ * 0 6 < B H N T Z ` f l r x ~      & , 2 8 > D J P V \ b h n t z R``S`4rrLRLX X X X [r[r~x,LLRLLRLxLLLxx4RI^`n#YYY`R``S`++++++LL++LL++++LL@LL@XXXXXXXXxxxxxx++XV++,,,:,,,,:,:,,,,,:,:LrrX+F+Frr++L&LRR++LL++XXXXX~X~X X X X RRX X & & X X &&[r[rSrSr[r[rSrSr~~x~x~LLFLRFSrSrR&R&R++R&RL XVX++++LLRL++R++++XXXxXxXxXxX~X~4S4S4++&RIII^^^```nnn###YYYYYYYYY  0Sno'q)Hfghi^js4?QZ/[,TUWXZ[\]_'()*+,-.rx~`{{{{{{{{` <BHNTZ`flrx~]xx@[")@>E"~~x2x::"> @FLRX^djpv|]kxyyyxyz[f"w)h>yEy`P["~[~t`zxy2{`uxJJ::  28>DJPV\bhnttbbbbt`~~`~` T R  !" &,28>DJP 8rx~ &,28>DJPV\bhntz$=D]\]4_`6pr D6L  $Js}- {{~ .^djpv| $*06<BHNTZ`flL/'s.}////////s}/////.$&(,268DFHLRVX-* o p , ~ ` N "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz "(.4:@FLRX^djpv| $*06<BHNTZ`flrx~ &,28>DJPV\bhntz     " ( . 4 : @ F L R X ^ d j p v |     $ * 0 6 < B H N T Z ` f lL\/.Rs''}srJf;RRsRR%}^Gb`R////}}J////Rs}f7R/'z`RR///.RR'}r`RTTRTcRRJ@@RjRjRbRb}RRRRRRRR}R555RRaRt;Q'RRRRRRR}}^G^dRRR::R'aHRR_R:RGR R~RJ}'/'}'}^TTT@X}Tg^GX^//LBRRf,4$R'_zRf4L}`ReT'sR^G^/<\R&Rx9\RG$= D]$>BCHIJKRT  UV--WEEXNNYTTZYY[aa\ll]vv^{{_`bf iJqLm??BBEE**--st!)-15: o p 3 3 ; > @ B E E H M T T X X \ ] _ a c c e i l o S SNNPQ Sc"3\n4GHIKL%%M  !" &,28>DJPF  &,28>DJPV\bhnt| &,28>DJRX^djpv| $*06<BHNTZ`flrx~ $*06<BHNTZ`flrx~ &,28>DJPV\bhntz     $ * 0 6 < B H N T Z ` f l r x ~      & , 2 8 > D J P V \ b h n t z     " ( . 4 : @ F L R X ^ d j p v |     $ * 0 6 < B H N T Z ` f n t z     $ * 0 6 < B H N T Z ` f l r x ~  &,28>DJPV\bhntzL\/.*s''}srJ{#{{;j{//{{s{ {o{{'{}{^{G{b{`{{'{{}}{Q{{{{}{\LX;\//''{ssr`{{{'{{{./'}{r`{{T{{{{c{R{R{J|@{@{{{jj{{b{b{}{/{{{{{{{{}{{{3{33{^{a{p{{;{Q{'{{{}{}{^{G{^d{{{{{::'a{H{{/{{j:{G{ J{~^{}J|E{}{{{{E}{p{{t{}{j{{{b{{^{~~{}{t{^{{{{/'{{{H/O'oYNsT{a{E{{{{@{{t{{{{}{{{{T{`{kb{{K{{{{{{{{t{{'{///{{4{'}{{{O{t{t{e{sK{{{{'}{E{b{{^{{{T{{TT{{@{{{{{}{{{{{{{{{T{g{b{^{G{{{{^{{LBRf,4${' _zf4DL}1{`{e**}T{{'s^{G{^{{{/<\&Rx9{\{{{{{{h$= D]$>?ABCDFG  HI55JBBKEELHIMNNOPPPRVQXYV[]X__[aa\ff]ij^lp`txe{{jkl pJxLm>V\]aacceeggoo|   -568<!">%-@77IDDJOOKUULYYMstNPQST!*]-1g4:l>>s 3 3t ; >u @ By E E| H M} T T X X \ ] _ a c c e i l o S SNdjj~~\n"#%%  "# * 0)0;< "*28>DLRX^djpv| "(.4:@FLRX^d{{{{{{{{{{{{{{{{{{orr{r{{{{{{{{{{{{{{{{{{{{{{{ {{{{{{{{{{{{{{&!0#5PKr9KD &&K9a}au9aauaau/&DaDDkkDDDDkDD)ak}/DDa9}D}&&9}k}k}&D aDY}aaauNaaau}}k}ka aakkAk&k}}DHVaD)kkDN9a}au9aau/9a}au9aau/9a}au9aau/&kD&9a}au9aau/9a}a9aa/D?}DVD aDKr9KD &&Kk}k&/<&O$$%%&&''))**++-- .. // 22 33 445566778899::;;<<==HHIINNQQRRUUYYZZ[[ \\!mm"}}#$%&%'( )*+!!,,-((. /  0  ""&&100::?? 2 3 4$$%%&&''))** ++-- ./22 3344 5566 778899::;;<<==DDFFGGHHIIJKLLOOPPQQRRTTUUVV WW!XX"YY#ZZ$[[%\\&mm'}}()* ++,,-../"/&&010101234352678888393:;;  3<3<=<;    !! "" ## $$>%%5&&''!((?++@--@//@0011"33@55@66A77B88C99D::??4EFEF G43H4IJ + +A , ,K - -L . .B / /A 0 0B C D M N O^$%&')*+-./23456789:;<=HINQRUYZ[\m}  "&0:?  T DFLT>arabJarmncyrlgrekhebrlao latnnko .tfng@KUR SND (URD (  MKD SRB  (ISM :KSM :LSM :NSM :SKS :SSM :   aaltaaltaaltccmpccmpccmpdligdligdligfinafinahlighliginitinitligaliga ligaloclloclmedi"medi(rlig.rlig8salt@saltFsaltL    !DLT\dlt| $,4<DTdh l  R  : ~ " V     8  : J Z    D H L j       B  >9LM *_ r * + , - x yi$=EEGGIIKKLMNOWW      ""$$&&((**,,..0022446688:;==??AAHHRRTTVV  **__ r r * - x y&   &v6Pblv",6PZd              !"#$%(! B/258;>ADGJMPSVY\_behknqtwz}D.&*">:BFLJ26NRVX\0HJSno#q%B0369<?BEHKNQTWZ]`cfilorux{~l3Z0( ,$@<DH48PT^ 44668<AHJPRSnoq)1B147:=@CFILORUX[^adgjmpsvy|l3Y/'+#?;CG37OS] 44668<AHJPRSnoq)12  )Z,Z ,Y)VVYZ~&8Jl'Z(Z -]*Z .]+Z +X*W(U'T .X-WTUWXZ] > $J 8 "(IOILOLI OLIRl$*06<[~Z|YzXxWwVuUsT3^1]0\ &,[Z}Y{XyWtT2]4]5IQS 6 , WVWA(:FPZfr "   " k$; V P0 Q(/ 1F 7X 6R")567DF  _^`\]ba28?EMS_^`\]ba28?EMS D %,-DO  %,-O    !"# ! LM *_ r x y33f . `)PfEd@ m,, ~OSXbu~V_ :UZot?5JR>PjGv#.[jx{EMWY[]} ' c q ! !I!K!N!"""###!#(#,#u#z#}######$#$i&&'' '''K'M'R'V'^'''''()) )A))))***/***++#,o,w-e-oM6<>ADO#t QW\tz1Ya !@Z`ty? 7LT@RtFn&0]w{ HPY[]_ * j t !! !K!N!S!"""###$#+#s#z#}######$"$`%&''' ')'M'O'V'X'a''''')) )@))))** */*}**++ ,`,q-0-oM8>@CFR pvnlkjEC;6 POMLJDCBA@>=<:9864rhdcba`_]\TSRIE< ytZVSO10/-) nm1_\ Wr4/*5,!~q__O ~bOQSWX\btu z~0\1VY_a  &  +,-.!:/@UIZZ_`o`ttpyq??8e l57JLRTH>d@PRjtFGnv#+&.90[B]jnwx|{{~ G   E HM PW YY [[ ]] _}   H W e k ~ ' * c j q t   * , . 0!! 1! !I ;!K!K z!N!N {!S! |!" "" "" "# ## %##! '#$#( -#+#, 2#s#u 4#z#z 7#}#} 8## 9## :## ;## O## Q## R$"$# S$`$i U%& _&&'''' ' ''')'K3'M'MV'O'RW'V'V['X'^\'a'c'''''''''())) ) )@)A))))))))*** **/*/*}*** **-++/+ +#J,`,oN,q,w^-0-ee-o-oMM68<>> @A CD FORIUWY[_ #optsvxV89\;>^@DbFFgJPhRkoՠ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a rdei xpk Rvj ~ <s gw / -M Il|6cn 8T f $m} b ):  y qz5fqu-J3T99NR7s`s3VV9s3D{o{RoHT3fs +b-{T#\q#H99`#fy```{w``b{{Rffw;{J/}oo5jo{-{T7fD)fs, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-ff@ /10!%!!fsr)5 5@ K TX8Y<2991/0 P ]%3#3#5qeB@KTKT[X8Y1<20@0 @ P ` p ]#!#o$++`@1      91/<<<<<<<2220@   ]!! !3!!!!#!#!5!!5!T%Dh$ig8R>hggh`TifaabbNm!(/@U" '&( /)/))/B" ) *!#*- ) " & 0K TX8YK TKT[KT[X@8Y<<<1/299990KSX99Y"#.'5.546753.'>54&dijfod]SS\dtzq{---@A$*.U# jXV`OnZXhq) #'3@6$%&%&'$'B .$ &($4'!%   ! + 1 4K TK T[K T[KT[KT[K T[X18Y9912<0KSXY""32654&'2#"&546"32654&%3#2#"&546WccWUccUVcbWWcd1Zܻۻa ۻۼ 0@      !         B  (('+'$ .  .'.'!!199999991/9990KSX99999999Y"2]@ " ) **&:4D ^YZ UZZY0g{ "-  ' (   2'') #**(/2; 49?2J LKFO2VZ Y UY\_2j i`2uy z 2229]]3267 >73#'#"5467.54632.#"[UԠ_I{;B h]hΆ02޸SUWDi;#QX?@Yr~YW׀c?}<$$/1oX3go7@ KTKT[X8Y10@ @P`p]#o+{ 7@  KTX 8YKTX @8Y29910#&547{>;o @ <99103#654<:=JN@,       <2<2991<22990 %#'-73%g:r:g:PrPbybcy #@   <<1/<<0!!#!5!-Ө-Ӫ--@ 1073#ӤR@d10!!d1/073#B-@B/9910KSXY"3#m #@  10"32'2#"  P3343ssyzZ @@B  KTX@8Y1/20KSXY"]7!5%3!!JeJsHHժJ@'B   KTKT[KT[X8Y91/20KSX9Y"@2UVVzzvtvust]]%!!567>54&#"5>32Ls3aM_xzXE[w:mIwBC12\ps(p@.    #)&  )KTKT[X 8Y99190@ daa d!]!"&'532654&+532654&#"5>32?^jTmǹSrsY %Đ%%12wps{$& Ѳ|d @   B    K TK T[X 8Y<291/<290KSXY"@* *HYiw+&+6NO O Vfuz ]] !33##!55^%3`d^@#    KTKT[X8YKTX@8Y190!!>32!"&'532654&#",X,$^hZkʭQTժ 10$& $X@$  "% " !%190@]]"32654&.#">32# !2 LL;kPL;y$&W]ybhc@B991/0KSXY"KTX@878Y@X9Hg]]!#!3V+ #/C@% '-'0 $*$ !0991990"32654&%.54$32#"$54632654&#"HŚV г "Əُattt$X@# %!"" %190@]]7532#"543 !"&2654&#"LK:lL>$& V\s[#@<21/073#3### %@  <2103#3#ӤR#٬@^M@*B$#29190KSXY" 5Ѧ`@ #<210!!!!^O@+B$#<9190KSXY"55//m$e@+$     &%K TX8Y99991/9990y z z ]%3##546?>54&#"5>32ſ8ZZ93lOa^gHZX/'eVY5^1YnFC98ŸLVV/5<4q L@2  L4307$7CM34( (+(I+*(I,=M<9912990K TK T[KT[KT[KT[XMMM@878Y@ NN/N?N]32654&#"#"&5463253>54&'&$#"3267#"$'&5476$32|{zy!orqp ˘s'6@   0210].# !267# !2'ffjzSb_^^_HHghG.@   2 99991/0`]3 !%! )5BhPa/w.,~ .@   21/0 ]!!!!!!9>ժF# )@ 21/0 ]!!!!#ZpPժH7s9@ 43 1990%!5!# !2.# !26uu^opkSUmnHF_`%; ,@ 8  221/<20P ]3!3#!#"d+9.KTX@8Y1/0@ 0@P`]3#+f B@  9 KTX@8Y991990@ 0 @ P ` ]3+53265M?nj @(B  291/<290KSXY"]@ ((764GFCUgvw    (+*66650 A@E@@@ b`hgwp  ,]q]q3! !#3wH1j%@ :1/0@ 0P]3!!_ժ @4  B    >  91/<290KSXY"p]@V   && & 45 i|{y   #,'( 4<VY ej vy ]]! !###-}-+3 y@B6 991/<2990KSXY" ]@068HGif FIWXeiy ]]!3!#j+s #@  310"32' ! ':xyLHH[[bb:@   ? 291/0@ ?_]32654&#%!2+#8/ϒs R@*  B     39991990KSX9Y""32#'# ! '? !#y;:xLHHab[T@5  B    ?  299991/<9990KSX9Y"@]@Bz%%%&'&&& 66FFhuuw]]#.+#! 32654&#A{>ٿJx~hb؍O'~@<    B %( "-"(9999190KSX99Y")])/)O)].#"!"&'532654&/.54$32Hs_wzj{r{i76vce+ٶ0/EF~n|-&J@@@1/20K TX@878Y@  @ p ]!!#!ժ+)@@   8AKTX8Y1299990]332653! ˮ®u\*$h@'B91/290KSXY"P]@b*GGZ} *&&))% 833<<7HEEIIGYVfiizvvyyu)]]!3 3J+D {@I      B     91/<2290KSXY"]@  ($ >>4 0 LMB @ Yjkg ` {|      !   # $ %  <:5306 9 ? 0FFJ@E@BBB@@ D M @@XVY Pfgab```d d d wv{xwtyywpx   []]3 3 3# #D:9:9+=; f@  1 ]@ /<20KBPX@   @    Y3 3 # #su \Y+3{@(B@@ 91/290KSXY" ]@<5000F@@@QQQe &)78@ ghxp ]]3 3#f9\ @BB K TK T[X8Y991/0KSXY"@@ )&8HGH    / 59? GJO UYfio wx ]]!!!5!sP=g՚oX;@CK TX@8YKTKT[X8Y210!#3!XB-@B/9910KSXY"#mo0@CKTKT[X@8Y<10!53#5oXޏ@ 91290 # #HHu-10!5f1@ D10K TKT[X@878Y #ofv{-{ %@'   #   E&22991/9990@n0000 0!0"?'@@@@ @!@"PPPP P!P"P'p' !"'''000 0!@@@ @!PPP P!``` `!ppp p! !]]"326=7#5#"&5463!54&#"5>32߬o?`TeZ3f{bsٴ)Lfa..'' 8@  G F221/0`]4&#"326>32#"&'#3姒:{{:/Rdaadq{?@  HE210@ ].#"3267#"!2NPƳPNM]-U5++++$$>:#qZ8@G E221/0`]3#5#"3232654&#":||ǧ^daDDaq{p@$   KE9190@)?p?????,// , ooooo ]q]!3267# 32.#" ͷjbck)^Z44*,8 Cė/Y@     LK TX @8YKTX 8Y<<991/22990@P]#"!!##535463cM/ѹPhc/яNqVZ{ (J@#  &#' & G E)221/990`***]4&#"326!"&'5326=#"3253aQQR9||9=,*[cb::bcd4@  N  F21/<90`]#4&#"#3>32d||Bu\edy+@F<21/0@  @ P ` p ]3#3#`Vy D@   O  F<2991990@ @P`p]3+532653#F1iL`a( @)B F 291/<90KSXY" ]@_ ')+Vfgsw    ('(++@ h` ]q]33 ##%kǹi#y"F1/0@ @P`p]3#{"Z@&   PPF#291/<<<290@0$P$p$$$$$$$ ]>32#4&#"#4&#"#3>32)Erurw?yz|v\`gb|d{6@  N  F21/<90`]#4&#"#3>32d||Bu\`edqu{ J@  QE10@#?{{   {  {]"32654&'2#"s98V{>@ GF2210@ `]%#3>32#"&4&#"326s:{{8 daaqVZ{ >@   GE2210@ `]32654&#"#"3253#/s:||:/daDDadJ{0@    F21/90P].#"#3>32JI,:.˾`fco{'@<  S  SB %( R"E(9999190KSX99Y"']@m   . , , , ; ; ; ; $( ( *//*(() )!$'      '/)?)_))))))]]q.#"#"&'532654&/.54632NZb?ĥZlfae@f?((TT@I!*##55YQKP%$78@  F<<2991/<2990]!!;#"&5#53w{KsբN`>X`;@    NF921/290o]332653#5#"&||Cua{fc=`@'BK TX@8YKTKT[X8Y91/290KSXY"@Hj{  &&)) 55::0FFIIFH@VVYYPffiigh`ut{{uz>]]3 3#=^^\`TV5` @IU U U U   B     K TKT[KT[KT[K T[X@8YK TK T[KT[X8Y91/<2290KSXY"@" 5 IIF @ [[U P nnf yy          %%#'!%""%' $ ! # 9669 0FHF@B@@@D D D @@VVVPQRRPS T U cdejejjjn a g ouuy}x}zzxy  { v } @/   y]]333# #V`jjj;y` C@F      B   K TKT[KT[KT[X@8YKTX8Y91/<290KSXY"@   & =1 UWX f vzvt        )&% * :9746 9 0 IFE J @ YVYYWVYVV Y P o x  /]] # # 3 dkr))`HJq=V`@C        B     K TKT[X @8YKTX 8Y9129990KSX2Y"@     # 5 I O N Z Z j        '$$  )( % $ $ ' ** 755008 6 6 8 990A@@@@@@@@B E G II@TQQUPPVUVW W U U YYPffh ii`{xx   e]]+5326?3 3N|lLT3!;^^hzHTNlX` @B K TK T[X8YKTX@8Y2991/0KSXY"@B&GI  + 690 @@E@@CWY_ ``f``b ]]!!!5!qjL}e`ۓ%$w@4 %   !  % $  C %K TX@8Y<<29999999199999990&]#"&=4&+5326=46;#"3>l==k>DV[noZVtsݓXX10#$@6%   #%#C %K TX8YKTX@8Y<2<9999999199999990&]326=467.=4&+532;#"+FUZooZUF?l>>l?VWstݔ1#@  1990#"'&'&'&#"5>32326ian ^Xbian ^V1OD;>MSOE<>L5 b@ <2991/0K TX @ 878YKTKT[KT[X  @878Y P ]#53#3+e#!Q@+     "  "<<<221<9990%.'>7#&73JDFHAMf fIX⸹)**'# 32!b`@!    <<1/2<2990K TX@878Y66].#"!!!!53#535632NL=ty-=))׏/я^R#/@I -'! - -'!0 *$0* $ $(st*(s099999999919999999907'#"&''7.5467'7>324&#"326{r%$&(r;t=:x=q%%&&s7t@?s9q(&%%s>v:@t8s'%$|pprR@F  B     fe f e<2299991/2<2<290KSXY"K TX@878Y@(' ' ')((79  ]]!#!5!5'!5!3 3!!!c`Tþ{yT9{3{JD{3@ <210##  \= >@54&.#"#"&'532654/.5467.54632{?>?>S8alӃ\]>9̭IXW:fqր][;;ȦI.Z.L-[.K''PGZsweZ54m@''TLf{xf[1,pEF)@dd1<20K TK T[X@878YK TK T[KT[KT[X@878YKTKT[X@878Y@````pppp]3#%3#^y/IC@&=>:A$104G$ 7aD=0^* D^ J21/02#"$'&5476$"3267>54&'..#"3267#"&54632mmllmmmmllmm^^``^^⃄^]]^\^BB@zBCFInmmmmnnmmmmng^^^傁^^__^]⃅]^^! "s;)_@3(%%  * "(kl"k *22999199990!!#5#"&546;54&#"5>32"326=P,]uu>DIE~bRhP{@p?Dq[[""CO@Mr%# @I    B   o o n<2991<2990KSXY" 5 5%-+#-+#RR^@ 10!#!^d10!!d/8L`@6EBC?2H09JC 9 $HE301B54&'.'2#"$'&5476$#32654&'2#'.+#^^``^^⃄^]]^\^ㄘmmllmmmmllmm}{{nWXfi`C.;I6Bf^^^傁^^__^]⃅]^^gnmmmmnnmmmmnb>KL?gwyVpMI`3Db+/10K TKT[X@878Y!!Vu=  @  Z[Z10"32654&'2#"&546PnnPPnoO@v+..ooPOmmOOp1.-rB .@     <2<21/<<0!!#!5!!!-Ө-}}^J@$}}B ~9190KSX2Y"!!56754&#"5>32 "?XhU4zHM98rn81^BQ##{l0b(H@'    #)~&~ )999190#"&'532654&+532654&#"5>32 \e9}F4wCmxolV^^ad_(fQI7Z`mR|yOFJLl?<:=svcE`sRf1@ D10K TKT[X@878Y3#fV` M@%  !   NF!2912<990"`""]3326533267#"&'#"&'#% )I#ER2bf*V H<9 NPOONN;9 %@]] 91290!###.54$yfNݸHF103#F#u@  ' 1/90!#"&'532654&'T76xv.W+"J/;<+->i0Y[ 0.W= ,@   |]|| 12035733! c)t'+n`d.@  klk 9910!!2#"&546"32654&PXγгi~hi}|P{ݿܾsH# @I  B   o op<<991<2990KSXY"5 %5 +-+-#^R^  ^R^  &{' d 35?&{'td 35b&u' d 35 $@/  !# #%" " "!& %999919990KTKT[KT[X%%%@878Y@ ttttv]33267#"&546?>7>5#537ZZ:3mN`^gIYX0&DeWX5^1YnFC98ŸLVV/5<6hk&$uhk&$uhm&$u  +@ ]1h^&$u #+@ @O# /#]1hN&$u  +@ 0?  ]1hm !@T   !!  ! !!!B     !  VV!"2299999991/<9990KSXY" #]@  s P#f iu {yyv v!# ]]4&#"326!.54632#!#TY?@WX??Y!X=>sr?<҈_Z?YWA?XXN)sIsrFv)H@9  B     <291/<0KSXY"]@gww  ]!!!!!!#!59=qժF՞su'&&z-k&(uk&(um&(u@@ ]1N&(u @@ @]1;k&,/uk&,/u`m&,/u +1XN&,/u +1  g@    2  y<291/220@(   ]]! )#53!!3 !iP`P5~.,3^&1u"+@ 0?""]1sk&2'usk&2'usm&2'u+@]1s^&2'u!0 +@ 0!?0 !/0!0]1sN&2'u +@ @O]1? @M    B   <291<290KSXY"  ' 7 7w55v8vL57y5yy5f +@< +,  )&  *&& &,+,* # )#3,99999999199999990@*WZWU!je!{vu! FYVjddj(|svz( ]] 324&'.#"&5!27!"&''3>_'y=_''NOy;WfNPƀ[gX@CHp@CpDfbMKYg[KKX)k&8u)k&8u)m&8u +@ / ]1)N&8u +@P_@O /]1k&<su =@   ? 2291/0@ ?_]332+#32654&#'ђ/@0-'!  **.  !' $'$-F099991/990@@'(     ! "&  : :!MM I!I"jj  ]]4632#"&'532654&/.5467.#"#:A9`@IPAtx;e\`Wqqs`/Q*%jd_[?T>7;[gp{-f&DCR @?&/&&]1{-f&DvR @?&/&&]1{-f&DR (,+1{-7&DR.< +@ ./<.<]1{-&DjR -( +@(o(P-_(@-O(0-?(-( ]1{-&DR%@&,,& 2882 ++1@ ?5?/5/]0{o{3>@C'-%= 4%:.-*1 %?47&%7& =&-7"E?<9999912<<29990@0+0,0-0.0/00@+@,@-@.@/@0P+P,P-P.P/P0+0@@@@@@@@@??? ??0,0-0.0/@,@-@.@/P,P-P.P/ooo oo`,`-`.`/p,p-p.p/,-./]q].#">32!3267#"&'#"&5463!54&#"5>32"326=DJԄ ̷hddjMI؏`TeZ߬o0Z^Z55*,ywxx..''`f{bsٴ)qu{&Fzqf&HCqf&Hvqf&H"+1q&Hj@@ ]1f'Cof'v\f& +1F&j +1qu('@^%{&%#${##{#({'(#&'('%$%(('"#" ! B('&%"! ## #)&' ! (%#" QE)999999919990KSXY"?*]@v%+("/#/$)%-&-'*(6%F%X X!` `!f"u u!u"%#%$&&&''(6$6%F$E%Z Z!b b!z{     {zzv v!x"**']].#"32654&#"432''%'3%F2X)6 ~r4*!M!ü޼z&77kc\̑oabd7&Qquf&RCsquf&Rvsquf&Rs+1qu7&Rs .+@ /. .]1qu&Rjs +@ @O0?]1o )@ r <<103#3#!!oAH +@<+,&  )&  *&& &,+,* # #Q)E,22999999199999990@p(?-YVUV jf!{    { z{ {!"#$%{&%--&YVUZ(ifej(ztvz($$]] 32654&'.#".5327#"&'')gA\*g>}66]C_56`?`!*(Ou))Hn.Mw834OMx43NXf&XC{Xf&Xv{Xf&X{ +1X&Xj{ +@ @O0?]1=Vf&\v^V>@ GF2210@ `]%#3>32#"&4&#"326s:{{8daa=V&\j^+@ 0? /]1h1'q;$ +@@O]1{-&qJD+@o]1h'J$+1@oo]0{-&OD"+1u&${u{&Ds'k&&-uqf&Fvs'm'Lu& <=/1qf&Fs'P&&Luq&Fs'm&&-u@]1qf&F&'q&G @_?]1 q$J@$ "    GE%<<1/<20`&&&]!5!533##5#"3232654&#"F:||ǧN}}daDDa3&(q=q'qH@p]1m'u(@@]1qH'H@p]1P&(uq&Hu&(qu{&Hxg&(o@@ ]1qa&H!+@!]1sm'\u* <=/1qVZf&hJ  <=/1sm&*uqVZH&JsP'\u*@?]0qVZ&hJs'^*qVZ4' J;m'u+ +@ / ]1dm'uK*+1KQX88Y@ @@]:@    8 22221/<2222203!533##!##53!5qʨ"ʨ9Qx>@!   N  2221/<2290#4&#"##5353!!>32||}}`Bu\zzedx^'.u, +1g7'+1Y1'q.;,+1H'q+1gm'.u,+1VH'+1u%'d,u 'JLP&,/u<<1??]0y`,@ F91/0@4D@P`p]3#\`{f'-\,@1V'M8L@F1f_m'.u-+1V\f'+1j' .' N` @(B F 291/<290KSXY" ]@_ ')+Vfgsw    ('(++@ h` ]q]33 ##%kǹ`!jl'nv/Jl'ZvO<1KQX@8Y@O]0j' /' O@@]1j'/'9O @]1j'y1w/'ysOK QKSKQZ[X@8Y1u ?@   : y<<991/900P]3%!!'79Pw^Mo;jnH ^@  z z <<991/90KTX @ 878Y@ @ P ` sz p ]37#'7Ǹ}Lɸ{JZjXj3l'v1@O]1dm&vBQ @?O]13' 1d{' Q3_&1g +@ /  ]1df&Q +@]1'QU~V;@  AKTX8Y21@ /0!"#367632+53265PͳNijQRW1fOCCoa`ZVd{;@  NF 21/90`!!]+5327654&#"#367632dRQi&&||BYZuccH``01`e22wxs1'q';2 +@]1qu&qsR+1sm''u2+@]1quH&sR#+1sk''u2quf'Rs ;@   299991/220!!!!! !# !39OAg@AժF|pm|q{'3@1 . ("%4"1 K1 Q+E499912<2290@%?5_5p55555????? ooooo ]q].#"!3267#"&'#"32>32%"32654& H ̷jbdjQGьBN5Z44*,nmnm98olkp݇Tl'v5m&vBUT' 5J{' UT_&5}g@_]0Zf&U +@]1l'v6om&vBVm'u6  ))Ic:1of&%V  ))Ic:1u&6zou{&Vzm&6u + ""Ic:1of&V + ""Ic:1u&zP77u&zW_&7sg +1@_]07&W7p@]1F@   @ @ <<1/2<20@@p ]!!!!#!5!!  ժA@7C@  F<<2<<2991/<<<20]!!3#;#"'&=#535#53w{%&sQQ''PO>)^'u8 '+@ ]1X7'X&+1)1'q;8 +@ / ]1X'qX+1)m'u8+@]1XH'X+1)o&8iX&X| @@@!]1)k'u8^f'Xe)&8u`&X'Dt'|:+1V5m'EZ+1t'r|< +1=Vm&^\+1N&<su +1\l'v=Xm&vB]\N's=X&]\m&=uXf&] +@ ]1/#@  L<1/0!##53546;#"c'&яN()g ,D@% ")%,$'".EG* ,(%#'F-<2221/<204'&#"327667632#"'&'##5353!!STTSSTTS:YX{{XY:E/tssttsstRd0110d}}P)C@#   . *29991/90"]!2654&#!2654&#%!2#!"#546D+ |v݇f>orqp ˘0_i1F&8@# (EGF'221/067632#"'&'#!%4'&#"3276s:YX{{XY:NkrSTTSSTTSd0110dtssttsst 3@  . /21@  / 9/04'&#!!276!2#!#ONDNO|N8DCDCD>@  G /221@  /ij9/0>32#"&'##34&#"326s:{{:"QrdaadDs'0@  0 <10>3 !"&'53 !"shSzjffbGGaaHH_^9'(9^_sZd$D@"! %  %  0%210&&].# !267# !2676;#"'ffjzS` SfM?nb_^^_HHgh$bzq"N@$ ## HE#210@ $$$$$].#"3267#"!2546;#"NPƳPNM]-GFE0iL~++++$$>: a .@   2 99991/0`]3 !%! )"#5465BhPav/w.,~0_i1F.@  .21@   /0)!"!!"$54$3!!@DNN|#+qZ?@G E221/0` ]5!#5#"3232654&#" M:||:ndaDDadqVuc'T@ )E Q E(]99@   (99@%S 910%!"'53254%&'&326&#">kGxfu'~@3cnBOFFu\0%p9 *E +@    21@ /0!5!!5!!5E>9+uD@& 39190!!"56$3 ! 7327upo^   2`_FHg[{(@@$ )) #)* &)190.54$32.#";#"3267# $546؃ YsrSǾmTj^У%!| &${spw21%%ݐf#A@  2991990 ]!!!!+53265ZpPM?nժHVe@#   LK TX@8YKTX8Y<<9912299990@P]#"!!+53265#535463cM/ѮcMPhc뻫Ph*Nsd&I@43! F'1@'$$'990%!5!# !246;#".# !26uu^[DM?npkSUmnꪖ_`%Rv%@ 'P $&]ĵ 91@ %$&222990@ #%$$<<$#$%#@$"! #9927654'&'3#"'&5476736,3,,3,6hC.KddK.Ch B9Iy\\yI9B z^ȮwBAWWABw1G*O@, *&NF+291@ '&&  #/<<9990%27654'&'5+"&54&#"#3>323LTWJ>ymoF||BuLibep_!edg .@  KTX@8Y991/9903;#"&n?M-– R E@   >f3@)B 6  999991/299990KSXY" ]@068HGif FIWXeiy]]!3!+53265jG?n+Vd{Ds 1@ 3221@   0! ! "!&32sy:;x Vb[[z=g&24v'X Rs3@ !  <1/0!4&#! !2!2"327&nzy;pa'Xܯ–bb-LgFqVY{!:@ """# E"9104'&##"3232"327&&&idRصRQ@TVt1098``:6:@   ? 291/0@ ?_]32654&#%!2+#"#5468ʄv/ϒ0_i1FV$O@$#% %G  F%22991990@ `&&&&]%#46;#">32#"&4&#"326siL:{{8(adaaTV@  ?  2299991@  /9990@ @u|]#.+#33 326&#A{>ٿJx~hb؍Oђ r!d@ -" "99991@B!  "90KSX@ Y6 327# '&546?6764'& {璑z<;YZL-|숋_ppٶ+23@@md{'@  !! RE(99991@ '$$(90@S !S BKSX99Y"]@/)?)_))))))]@% '$&((*//*( ( ))$]@.,,,;;;; q>323267#"&546?>54&#"Lf@eaflZ?bZN?$%PKQY55##*!I@TT((0V6@   O 221@   <20;#"&5# 54!23%&'&#"3wMc/R5!n|wj=hP`@o,0A37V?@ F<<291@/<2990!!;+53276="&5#53w{KsF0j&&էN01`>X@ @  991/2990K TX@878Y@@p ]!!##"#546;^vժ+Zi1F7I@  F<<2291@  /<299990]!!;#"&5#53546;#"w{KsբcMcN`NQfT@ @@ 120K TX@878Y@@p ]!!;#"&!n?Nժ=–_&84i' XN:@!3   1@   <2220!! 47!5!3254'5!X ƱXw>*a"Lav-@   /<91@ 0%254'&'5!'&'&33cAnMagn"ʦmWDtz–d@  @ @99/1@  /9990@        BKSXY""#3 632#54&9%NZUUIG9\[ny6P=V{j@  K TKT[X @8YKTX 8Y9991@:        B    9990KSX2Y"@      '$$  )( % $ $ ' 755008 6 6 8 A@@@@@@@@B E G TQQUPPVUVW W U U ffh { F]@%     # 5 I O N Z Z j ]+5326?3 67632#54&#"N|lLT3!;^0XQ99) hzHTN43`rr:T*\@5    B  B K TK T[X 8Y9991/<20KSX<<<323#L:s_%'ST_ijxzX"Jh0@umHLIwKK!!C12\RI`1]5@ F1@  0 4&#!!!%$ $5& )sQ;-%,%hV)$yhL?`3@  F1@ 203 4&#!!!32!"'hi;-ԧc%,&cV)$yJX$!"'&'5327674'&+#5333!plnUQQLITNPc9:V>}ws}#(rAbLrV{@@  F221@ B 0KSXY#36763254'&#"s4QҸMNr98xܭz BR1pqWBAV&@ F10@ @P`p]3#V''V:@    <<2<<219/<2<203!!!!#!5!5!5!s____,Ԫ m'?' f'@'qf'@Gf$'-/V'Me/V'MvOf'-_1V'M>1V'MeQhm&$u<1{-f&DZ +'+1`m&,/u  Ic:1^f&  Ic:1sm&2'uquf&Rv <1)m&8u<1Xf&Xv  Ic:1)3&08X1'q{;)Z&86X"&X)Z&80X"&X)`&80X"&Xq{h3&${-1&qR;h3&${-&DH4'q>{o'qs%T@!$"43 &<1@"#%&99ܰ KTX"@8Y<203## !2.# !2675#535!5yyuu^opkC XSUmnHF_`%'XqV{ 4X@"2% G,E5221@ #% ) 2/3 &)/99<20`666]4&#"3263#!"&'532767!5!6=#"3253:aQQRZ9||9=nXF]@,*_EG^[cb::bcsm&*Ju!<@!T!$!]1qVZc&JJjm'u.m&Nu* +1KQX88Y@ @@]se'42qeu{'Rse1'q';qeu&qsm'uyXL/f&TVdf'%  Ic:1 '=' ']'q']Gsl'v*qVZc&Jv-5@8221@ /203!327653! '&5!#>=B>d`gd"dPNOKZ߀xxv 9V@@  221@ B 0KSXY%#3676324'&#"8WST=<HW5xz7 GF3k'u1dd&QChs&\}{s&}Hl'\v{oc&vefl'vHc&vhp&$z{-d'Dh6&$>{-H'eDp&(zqc'H6&(>qH'Hsp&,Yzc'fw6&,>>UH'$sp&2Azqud'Rs6&2>quH'RTp&5yzJc'%UT6&5>^H'-U)p&8zXd'X)6&8>XH'X'v6o{',V'S77'WRs16767654&#"5767654'&"567632¥~b[?FjOQ_ciqYxw`eGRxQYڵ@XKy^qjj=vX{5?:.PB*8hicqMmwqڎ{\(GO{36767654'&#"5767654'&#"0567632GrXBAR9?|cGIN`\hOm`bs[yx@Il|IPxģ3H2#PQ̝qpD(4%3254'"632!"'#67&5#"'&76323 76'& %44nI5"C0:XY|ˀ|YX:ST$TTTTT- H:E<$d0110d^jtssttssq% ;W@$3=E (B!8;7B/E<̲ ;]91@$3< ;<,<990" 7654&327654'&'52 '&54767&'&5476!˸jkkjpkk_;̨_`Lm䖋_``aCUtMMMMMN'|OEH-AA+Mdha "ccttttُcc"FYXSJqq 4C@6E B42()+&BE5221@4)".559920" 7654'& '&5467&'&5473327654'qSRRS SSSR:4HRQ;4?+IHIJ,MMMMMNMMJ@b@Y "ccttttُ"#VKYIAAAAAtw>\V@ B  K TK T[X 8Y991@ B  /0KSX@ Y@@ )&8HGH  /59?GJOUYfiowx]]+53276=!5!5!!Hri&&gPP%01oXV`@   K TK T[X 8YKTX @8YĴ@`]99Դ@`]1@ B  /0KSX@ Y@2&GI + 690EIWY_fh]]+53276=!5!5!!۞Hri&&5ejLP%01%hP&$@{-&D_u&(zqu{&Hz{s3&2bqu1&qs;s3&2iqu&RsO''t2qu&sRs3&2jqu1&qs;1'qr;<=V&q^\p\%3254'"632!"'#67&73%44nI5"C1- H:EVy` 8@   OF 991990@  @ P ` p ]3+53265F1iL`aq #/A@1E%G +G!E0<<<<1@( . /22220 6& 23632#"'#5#"'&76'&  7/ST$Trrrrˀ]STTSST$Tjtss ^ŨŢtsstjtssqV{ %/D@1E$G+G'E0<<<<1@ *.! 02<220'&  7"'##"'&763253632 6& STTSST$TrrˀrrST$TdtsstjtssRŢŪjtss|3 #!#'#7'7 3!Jafp|҈2F;R/o]jY'FF8O ",'&76!27&'!2767# '#&# rfuSv=:efc.1 tsfjwv9tFXh$xYv+!f //_H$$\/ح ]"+'7&576!27&'32767#"'&#"i`UUQ.-Y_vcPNONMRS]7GGcc^N lOU ^q+$Vqrg j ;@   : <<1/<20@ 0P]33#!!#53ʿ_w1##'!5!7 !4" gZ8f,i> XRBY bo{=4'&/&'&54632.#"3#"'&/&'&'&'53276 23@LLfLNZDE11?PS{W*L'TrGY$alfccaFF'K((%$JK((**T@%$!,KL[@~$=&[#5-,X3`!;#"'&/&+=!qjN\1*LlTrGY=Z^e`1~$=&[? %P6@ 9991@  /0##32654&+"56;2'񍚚EOZ*,FP{7@   991@  /032654'&#"5632##/dLUIVVN}AH+Fnt  (\@ #  . &%)<229991@(% #/99/<20*]!!!2654&#!2654&#%!2#!#53[D+ |迿ɐʇf>orqp ˘p _@ 8AKTX8Y<2<21@   29/<<2299990]3!33#! 5#53!3265˥ߦ®j*$}h)B33#!!!!#7#!#!AX .AA<VF㪾FqB&-1&'&'!3267#"'#&'&3273&#"#So+Jajbck{cPm!)81G\9/Zo Z 6Z44*,!  C "2JcfRY@    9 KTX@8Y<2991<2990@ 0@P`]#+53265#5333RM?nʿwHVS@$   OF<<22991<2990@ @P`p]33#+53265#533#F1iL`(aؤsf$C@$  %" %  %2299199053;#"&5# !232#"nEMMT–\\xEEqV@{$H@"%"%G E%229910`&&&]#"&=#"3253;32654&#"@F:||:Li1戮VּdaDDada= T @  ?  !<299991@!  B  /<229990KSX9Y"@"]@Bz%%%&'&&& "66FFhuuw]]#.+##53! 32654&#A{>ٿJxʿ~hbw؍OJ{=@ F<<<1@  /<20P]###533>32.#":.I,h<ĤfcΡ3!733!#!53!ٗ ٗwјv9 V`+5326?!533!33!+N|lLT3!øLùmhzHT33`{ ,@ .% F-22991@-&%"*-%  9990@1?$?%?&?'O$O%O&O'_$_%_&_'o$o%o&o'$%&'$%&']@+?#?$?%?&?'?(?)O#O$O%O&O'O(O)_#_$_%_&_'_(_)]2654'&#"367632#!3267#"&߬A@o\]?^^fe~ST`Te__Z+f{b:9ml)Lf01a```FE..'qZ{8@G E221/0`]53#5#"3232654&#":||ǧdaDDa{ 8@  G F221/0`]4&#"326>32#"&'#3姒:||:/Rdaad` $C@  !G! F%22991/0`&&&]4&#"326>32#"&'#46;#"姒:{{:Z[/Rdaad~Ӝ}}{ 0@ ! !"EH!<106763 #"'&'5327654'&#"LQQU]SRMNONPccccPNON5#$+qrrq+qs{'/O@( ,,H"E02991@.*%00@ 11111].#"67632#"'#47&'&!23254#"NPc'>IjJ?_SPI 9/-U:Me5++rQ,3H=Y}/)9DhQ#3 :#:9KqV@$K@$%"%OG E%221990`]#"&=#"323;32654&#"@F:||:Li1戮VּdaDDad^ؙa=q$=@" %%  GE%2210`]546;#"#5#"3232654&#"iL:||ǧadaDDaq{"r@ KE#91@  #90@)?$p$$$$?????,//,ooooo ]q]47632!"&'532767!7&'&#"qkcbdcjfg ]\RS^,*4cdWWZZq{A@$  KE91905!.#"5>3 #"73267qN ͷjbck 9Z44*,#ė|{ 4w@6.('4 KE5<Ķ&  91@/.'""5 5@  &"90@ 4 &'<<<<<%6'6'32#"'&'&'&5>3 73;#"'&5Nf  R`\Lladbck $˸&&i+@WR֊>8E#Z`vg'#d4*,#)u10`Z|B|*|>i@@603273;#"'&5|PUTZGUU]UTNHtCDFEwGQPabLq_&&i+@WR@\l%88ZX83,-F@.. NBj10`ZȦFq|/;@ 1 &,E01@00)0#90"327654'&+5327654'&'2# 76`cchҗUTNHtCDFEhqr<V`K@   OF<<22991<2990@ @P`p]33#+53265#53F1iL`(aؤqV 0U@)  &#-* *-+& G E122991/990`222]4&#"326!"&'5326=#"32546;#"aQQR9||9iL=,*[cb::bcaqVZ` #C@ # GE$21/990`%%%]!"326!"&'5326=#"43!aQQR9|=ͻ,*[cb:*qO{8@4 E1990%#5!#"!2.#"326Ae{-h]_cƳO|$$>:77>>`Rd`#y@ %  $ĵ 91@  $222  990<<<<< 3#"&54767327654'&'bB_j&;;&j_BC(::(xܱSccS$-EIdccdIE-`d`#y@ %  $ĵ 91@  $222  990<<<<< 3#"&54767327654'&'b)rG,EE,Gr)C'88'bLx>>xLb-!@2FF2@!-VX`9@     NF21290`]332653##"&||Cua{VfcdC@!   N  F2991/<9990`]#4&#"#46;#">32d||iMBu\~aedVd!J@%  " NF"2991/9990`#]+53265#"#46;#"632diLiMHa=~a >@    F<<<2221/<20@ @P`p]33###533#¸`<Ĥn`Ft` '@   221@   /2205!#3!53t褤K#<@ % V V$<<1@#! !//2<903327673#"'#&'&#"#67632= &}33[ &}33[ %$RIJ %$RIJLT5@  <2<1@ /9/<2033##4'# 7632&#"3=5*7M\TK9V_ (@  F 1@   990;#"&5y=x1F|t(L6$@#&#" F%<̲#91@B""  " /9/ 990@$#@  **8;ILT[q ]@$$%$$5$7E$FT$\ ]@    ]2!"'&'5327654'&+5!#3!CicUQ^cdjTmcd\[je8+lh%12KKKJ3Lb&^@PP F'<91@  #''<<<290@0(P(p((((((( ]%#"&5332765332653#5#"'&Cb`ruSSrw=ZXyzVUy=<b`^zbze32>>Vb&a@PP F'<91@  #''<<<290@0(P(p((((((( ]%#"&5332765332653##"'&Cb`ruSSrw=ZXyzVUy=<b`^zbzZe32>>V{0c@PP)%'F1291@ %*!*-(&/<<290@02P2p2222222 ]>32+5327654&#"#4'&#"#3>32)E__RQi&&ru99wSS?yzUV|v{zH``01NM_``gb>>Vk{Q@N O F2991@ /9@   990`]#4&#"+532653>32k||F1iLBu\satedVJ{;@ N  F21@   /  90&54&#"#3>32;#"R||Bu&&i1F``edH10d` y@BNF 991/<2990KSXY" ]@068HGif FIWXeiy ]]!3!##`ylqu{ ,@  Q E2210"!.265!2#"qt蔔98q$`I@  E2ij 991@   /<<@ 9/0!!!!! '&76!#";:E*%xxxx%`ݛlklm>|$2@ &E E%1@ #%<202765 26= "&'"&H`k&InI&k`B"F:.aע ģ0[1[0T\l6puypVa`/@   /2991@  /90%!"/32653#r%832JI,:.˾ fcVJ{:@  F2190P].#";#"&53>32JI,Li:.˾atfc~{%@ 21@  /29903!5346;#"iLAat~{%@ 1@  /29903!534&+532ʴLiAa`@4  B      F299991/<9990KSX9Y"@]@Bz%%%&'&&& 66FFhuuw]]#.+#!232654&#0s2âJ{Qpwu t]:'`iVNM``E@  F299991@  /29990332673#!32654&#Q{Jî2s0jp|Ɓuw`':]t i`MNVoV{0@C  S('  S'('B1 '(!.1' ($R$+E19999190KSX99Y"0].#"#"/;#"&=32654&/.54632NZb?ĥdXLie@f?((TT@I!* ajYQKP%$V4@ O F<22991@  99046;#"+5326cMF1iK»Ph)aV O@ !O F!<<229921@! ! !99<20546;#"3#+53265#53#5cMF1iK`NPh(aؤi7V5e"O 1@ 04&+532;#"&McKi1F(hPaV2@   O 221@  /<20!3## 54!346;#"#"3276w5RcMów|n!o@`Ph3A07^3@   /<<2991@  /<2990]!5!4&+5323#{Ksբ>`N7V=@   F<<2991<2990]!!;#"&5#53w{Liൣa>`C@     NF2221/222220` ]3!33##5#"&=#5!326:CuȮ||h=$#^lfk`8@   91/20@ 3 3#f%.]`8XV`@"B  OK TK T[X8YKTX@8Y2991/0KSXY"@B&GI + 690@@E@@CWY_``f``b]]!!;#"&=!5!qjLLi/F7e`ۧa%X`!@  "KTK T[X8YKTX@8Y299<21@  /<0@ BKSXY"@:&GI #+ #690#@@ECWY_#``fb###]]!367632+#47!5!3254qjL"TA`:&>R~ie8FX`ۢG7W9W`/=3<;4%6]XL/` @ "!̲91@B!  !9/ 990@ @  **8;ILT[q ]@  %$ 5 7E FT \ ]@    ]2!"'&'5327654'&+5!5!`q|/=@1 %,%E01@0 0"0( 90";#"327654'&% !"$5467&'&5476EwEFDCtHNTUhcc`a|p<:!a>>`V.9@ F<<991@   /<203#33## 54!3#"32767Ku_+xG`͋BA0 L` ## 33R9L T#`@ F1/03!!`3qV $C@  #%% "GE%2210@ `&&&&]32654&#"#"32546;#"#/s:||:iM/daDDadaX$L@ & %<<ij#1@  $! /<2KPXY032765&'&#"56763 3###53T?V:9cPONNLQQUmlprLbAr+#}swԤX$M@ &"#E%<<ij "#1@ $!# ##/<2KPXY0535&'&5476!2&'&#";3##plnUQQLNONPc9:V>ws}#+rAbLrq &) 76'& %3!!!+5#"'&7632/ST$TTTTT iL:XY|ˀ|YXjtssttssH^Lۓd0110MqL4@#5#"'&76323!2!"'&'5327654'&+5 76'& Z:XY|ˀ|YX:jejbVQ^cdjTmcd\]:ST$TTTTT3d0110d^L$8*mh%12KKKJjtssttssq 3: 76'& %%!332!##47!#5#"'&763233254#/ST$TTTTTghL<):XY|ˀ|YX:FXjtssttss_ 3<;4d0110d^6[7@F.#"#"'&'#"'&5#533!!;5327654'&/&'&54632NZED11?QR|{Za]gQQ{%&sfccaFF3,@LLf?((**T@%$!,KL[[!&PO`>''M5-,QK($)$JK7V&/!05476;#"+53276=#"'&5#53!3wxWQîc&'QRF1i&&QQ3%&sN[V((h)``01PO`>''7p-9D!6!2&'&#"63 #"'47!"'&5#533276'&#"&57!3w{UQQLNONPcccO+eKTIQQ;BS_r(ր%&sz#+qrfr v)2LOAPO`> 'KV ''/Vo5+5327654&#"#!##535476;#"!;67632oRQi&&||ӹWWc'&-BYZuccH``01/яNUV((hce22wx#5.#"#"'&'#34632327654'&/&'&NZDE11?PS{|Zb]hf8b_caFF2-@LL?((**T@%$!,KL[[!&2-,QK($)$JK @   F<2991@ B /0KSX@  Y@B &GI   + 09 @@@@@C EWY `````b f]]3!!!+iLLۓ6 333# #333# #6ttttU=63@    <2<21@  220!#!#!#!#6kkUXrXJ3@ NF 21@ 0%#"&54&+53232653#׃Li1FęaBþyVv!:@ #NF "21@" ""0%#"&54&+53232653;#"&'׃Li1FPh2FęaBþyfu0@ 32tNN^luu)qJy}wYYk\g88u:KSX@ 32tNN^lugrB0)qJy}wYYk\xkW6Vr88 #@<<1@03+5327653#zt43r,Bttx66XVru@ 1@ /0.#"#3>32.biuu$uT  qksa97H <1 /032653#5#"&'H.bitt$uT  qkJa97Hu' <1@  /<032653;#"&=#"&'H.bit0B,rg$uT  qkJ V6Xlx a97 !+33276?3327654'&+CFCDtk=%%(f{n!!"}K'))'K}N;[--s?5/.6 333# #6tt&+53276?331/.N]D0 {{bp"#WK/itf tf&  t  @ 10#5Rڬ@u452654DŽu@XX@sPOOP=>X@?X=>POPPu"'&4763"3sPOOPs@XX@PPOP>=X?@X>u32765&'&#"567632#'y7$#?q22110335WDDFk[@*7K$@ ` XFh_@Cu#&'&547632&'&#"3kGDEW53301212q>$%6y[AmC@_hFX ` @$K7*@ 2% % g 25-5g'|?f=u912]90K TKT[X@878Y3# #fg|?fLu91<Բ]90K TKT[X@878Y@ 5:5:3]]33|g?f7@ u91290K TKT[X@878Y3#'#f?f7@ u91<90K TKT[X@878Y373x^@1@/0#^+b+qsRf3#ff #ofv^@1@/0%#^++Tq^#onvsR3#lo#E@ j,5!##–, 533##5#5j!5!>j)9H W@ VV1<0K TX@878YKTKT[KT[X@878Y332673#"&v aWV` v HKKJLDfN@ d10K TK T[X@878Y KTKT[X@878Y3#  @ V xV104&#"3267#"&54632X@AWWA@Xzssss?XW@AWX@sssLu @   '1/90!33267#"&546w-+76 >&Dzs5=X.. W]0iJ7c@$   VwVv99991<<99990K TK T[X@878Y'.#"#>3232673#"&9! &$}f[&@%9! &$}f[&@Z7IR!7IRfB@991<20K TKT[X@878Y3#3#߉fx%3;#"'&5&&i+@WRd10`ZȢf '#7'373\\]]\aa``u # 5473733254/MMz /1/03#zttu/2&'&#"#"'&'532654'&/&'&547632j1549W++](}24NM9>=D@?>=RX o(l00GF@99 a /$*+MW33 k2-*)*IX01 u! #'#37 ͉H+u#&'&547632&'&#"3kGDEW53301212q>$%6y[AmC@_hFX ` @$K7*@X@ 1/0!!5!AGЈX'@??//21/]0!!5!3A4X@ 21/0!!5!3AhhX'@pp0021/]0!!5!3A4X@ 1/0%3!5?p+v'qqf3#3#@fx.SMvJ!'&'&#"#67632327673#"&9 &}33[&@%9 &}33[&@7 %$RIJ!7 %$RIJf6@ D910K TKT[X@878Y # mXfvqPf6@ D910K TKT[X@878Y3#fs?f<@u991290K TKT[X@878Y3#'#?fsH7b/q|  )1H+d%@ 910@4D]3#hF)I@ dd 91<20@#4D`````````ppppp]3#%3#^y)7{"@ V@ V /1@@ /0632#546?654&#"7pihX,#w3-.>GZdH3UC=A   (6%""($4fCf<@u991<90K TKT[X@878Y373NxsD/1/0#DD'4]fB@991<20K TKT[X@878Y#!#͇fxx)1')1H VV/1 /<0#.#"#> v aWV` v ")KKJLD( @0#3Ӥ?#55#53pp{53#7"op{y3#@uUCqPUv &D53#5#5_&3##3D_U?p!5!#Ik{1@V/K TK T[KT[X@8Y21@ /0532654&'3#"&=X.. W]0iw-+76 >&Dzs5V @  V21@ /0"&5463"3VZ||Z(55(}ZY|x5'(5 3!5353D_ #5!##걈 & #53533##׈ 5! zV '+53276=0RQi&&``01wV %3;#"'&5w&&iQR10``fSC'SjC( @V xV1@ /04&#"3267#"&54632[6'(55('6y|ZZ||ZZ|&65'(56&Z}}ZY||jT @03#Ӥ#uzLuDT/1/0#DD T#5!#뉬Jc9X#"4533273273" v aWV` v "6KKJL9HS/TB  #"'&'.#"5>32326SKOZq Mg3OINS5dJ t]F ;73 !;?<6 7=xh!5xhh5!Ĥh'`_^NO'ygfFXY @  V21@ /02#52654&#Z||Z(55(B}ZY|x5'(5[3!53[J.T!!&bc9X632#&#"#&'"#72;tv gfv ifvtR+ '7'77}`}}`}}`}}`p}`}}`}}`}}` .54675>54'&'C!RI 7!RI 0PQn +0PQn : '  fCqPfvH7FbV+I#5!#!Ֆ֖V,2!5!5!5!>>2xx3#3#@tx!#!–*>,Jf'73327673#"'&'#7&'&#"#67632Bmk  &}33[& !Bnk  &}33[& g  $%RJI g $%RJI J!%'.#"#4632326=3#"&3#3#9 $(}gV$=09" (}gT";薖Җh! 2-ev 3)dw.CJ"c( 7!#'73!'3p~(͛3#557'2d͛~~x&'&4767@*,,*@rNPPNr*,@A++{OPPN1'+Ubx050567654'&xrNPPNr@*,,*{NPPO{++A@,*.Dp pk Ppk!!p kpT!!p ଔ* '#'&'&#"#67632327673#"'&O,$e5Fqp[?9ZO,$a9Gqp[?9J7  $0GJI "7  $,KJI pn w(5!'3#7ws~~d͛tf@103AntVH@10%#AnHV #"'&=3; #V!. {q{'yOF{'y#sRf1@ D10K TKT[X@878Y3#fFR&jl@_]@_q0hf'HFyuf't#f'%}f'z'f'-(f'n2f'h66'.Fh$%j@ 1/03!!)ժh=@ B1/0KSX@Y !3f5:9+(\=;+s!2@"" "#3"10!!"3276'&' ! '&76>b܁܁:xżp[bb,j.h<@ B1/<0KSX@Y3#3#:9&+031b *@    <<1/0!!!!!!29iggqs2;3 F@B   <<1/220KSX@   Y%!!5 5!!>!8ߪp7<s'<@) !%(<<<<1@' %'/<<<<0367654'&'&'&76753#–bbʖbbWssWWssW=;;s.@ <<1/22<20!6'"'&336763#ּՂnʊnhg椌gHN&3@ &("3'1/<2220%!567654'&#"!5!&'&576! cccd?IH1/GGaʦa>”XN'/u' +1N'qu2 +1qf&>nf&PBVdf'Df&FF*&Rqy *@ ,%E+99@ ?/]q@ ) !/99@<<10@  ]@IIIJN LNIK ]@:9:88? <>]@ + +*))]@  ]@++]'&#"3273;#"'&'#"'&763 N,-=MKLyHc( #) Xn^T).^,ru7 nik%1)0T*XoW)&V!7@E F21@  90%#! !"3 5 4# yYo 0kEdZ&J:@ V`@@ 1@ /<20@ 993#&+532i^;,_1FLdVD~qu-T@(/E( Q!E. ]99@%%.99@S910&#"#"'&4767&5!232654'&'&fu5KxD7VUV[a~@Fu\0%p̥@$OF(Iqrs`g |2=@" 33'(#,34 '0E310&'&547632&'&#";#"32767#"'&546p<@ KQX@8Y1@ 20%#457654'&# !5!ʄOTJPE* :;f,KOxsPWKL,#%5,*3Y'iVd{1@  FN  F21/0@]#4&#"#367632d||BYZuccH`e22wxqu$!O@ """#E QE"2]21@?]0@ w##]!3276'&#"2#"'&76EVSI 6VQ@=񈉉d~uvn` @ F1@ /0;#"'&5c"$lYoRR`+.0`b` I@   F 21@ /<20@    <<33 ##Gb`/ZFB?= F@ 1@ /<0@  # #'&+5z~J/k`ue<2~V`wJ`B@1@ /20@ 99!367676'&'31!xdLjE.*{`T|p5dwY|rNįtkR&@@ (" %'1@ '#"'<90%#457654'&# %$47#5! $ڄOTJPE* :MKOxsPWKL,#%5,*,X$Rݿ qu{RJ`/@  1@ /220!#3267#"&5!##J117,#J%x\c`PH? XV{1@ EQ F]1067632#"&'#44&#"326=;{:+fZ#adqR{$6@ !& HE%1@% %0 !2.#"32#457654'&-ULNPƯPTJPE* >:##++LOxsPWKL,#%5,*q` 1@  QE]1@ 0"32654'&'!##"'&76sRVVOcm񈉉qnsȷzn휝dm`#@  1@ /20%;#"'&5!5!!$lYoRR\ W0`b*`+@ E F@?? ?]1@ /<0327676'&'31'"'&5R27ki;jF-*eb`+@EvfwZ{sxvpVh )=@+E(#E*<<1@ *'*<2<20"27654'&'2##"'&7673=A__UVF6˷džfB:VVMpˑRh]p[nmNssg.;Uda@    <<91@  <<90%KSX@   99  9 9Y#&+53;'$ܕ11FA3N11F~0)~pV`6@   <<1@  <2<<0&'&53367653#EkUJ|CUvܷ%aw~LB,BTxnc#n'`8@E  E1@  /<2<0 433233243! &aƏ˪ޏƛa!)R@O@+}&Fj.*&jRquf&}L*f&"R'f&VYM% 'G@)E& F(2Բ?]1@ ("((Զ?]990267656#" '&76#327>&iPDyz]6;~oxҤ]Y:PWp=l޺lǧ_ը,嶖ꀰ-ўqu$ 7@ !EE <1@  04'&#" '&4632  1BSxyJ̃Я#/p~ZZ7Ai6deBWQ I@ "!9Ĵ?@]1@ /<99@ o]0#4''&"562%62#"FR**RMw(oUCHk&_*SKHv H# 0r{C @[)/Bf'n^PWQN'u^pV'A@)   $E(<<<<1@ (  (<<<<02##"'&76327676'&#"DžǷdžǷqMTVMqqLWULc휙owgsugHgusgAm`5!#%$! 47)323764A,Ma")aM:GϤ*RѧOp[g9&'&47#"54654'&#"563277632327"'532! `7"7$>9[@[`7"7>9[&F]_I I5l|"O z:6hl0'[Ml |"Oz:6hlf$11sXD@!  ܶ0]9ܶ0]1@   <0#&'&76!   76';:{HpҳI椤qVu{ <@!E E ܲ0]9991@   <0"32654'&#&'&7632sVVUVVV9kjstntstu n}{R$ 32#457654'&# '&76)F`{[mzYTJPE* :xe+wTOxsPWKL,#%5,*eNqRQa#"32#457654'&#"476!>cccnPTJPE* 9֗h4HqrqLOxsPWKL,#%5,*>#)@VF'347632&'&#"!!#"'&'53276`1213$)),x:KAb933.1220W@Rd >Qoɏ?s K_7"'&76'&526n 'BQ_'BQ_[~,`*l#FR`*l#FR #!3&pM]rV`!#56! #'#64?!"QhRR_@0:IKiXL}/M4!wx#&'#&' #'nd2Fb.-t`4#M!P^sK='6767&'&'#"'&46733276=332764''3=D۴vayͤgDd''dey{d;]TCHI}rHGFFtAGCT_8d榈d*0QA^^^Fkmihhimw'AFU(`%!$! 4337643'676#aڏޏڇ9iŚkp[Q 5@+h@ф{I%l +?sVH32763## '&6%`nbbcDhh(J @?G6qV{ 7653##"'&54763Pr^SLTT:XYڅcнtst1Rd01ȢK% '676767654'&#"#3676L'Pe^Ґ8*7D ! ! 12԰.#AL.#^Yq4+& "H4B;;=/?"+VhPOV !! 7654'&#"#676! 3 7llc^#,V)ۄe]6?fضdVj{ # 7654'&#"#67632327\B\\TP%I/yYk}oSKu,2R¤ຐs5%! &'&#"567632 67632'&#" ;!53276n"?E! rK,/ 4'Kr !D<&tEGGH h=" C(FK#C "&E !!6{5%! &'&#"56763267632'&#";!53276[96:@%((%@:6-:IkI:8=3553gs%+$67632! '&76!2767&#"327*W8QU{2Τ|sK^lȺhiieb-sJV"1Pһ '$Astxssq[/&67632#"'&76!27674'&#"3276I,)e[xtgO_\SG]EZSTVXXTRS7xJF61𢢜Pһ ''rsstxsst,V#5!#!#!3`d`du7U#5####!3_pzpppg3#"54654'&#"563277632327#"'$47(`7"7$>9[@[`7"7>9[@[|"O z:6hl0%[Ml |"Oz:6hl0%?[MV{$4767632#"'&')! $'&  7Z6;x[Y: +STTSST$T%Уb^#10dX4tsstjtssq{FVyMsaq{!&'&#"!!32?# '&76!2%%cjf_[_fMJOhk en(' c\\c( +{!56763 !"/532767!5!&'&#"'(ne khOJMf_[_fjc% ؜c\\c Vs'& ! !###-}-!+V` !!###`{`UV{'4767632#"'&'!!#5#5'&  7Z=;{XY:eSTTSST$TfZ#10dȪpptsstjtsss'Hs'&y3s''yk&uN&uBBBB|#I#IabhFaF`C`#BC`CUXC`C85YBB#Ih;5#I@PX@855Yf4@  <1@/20%+532654&#!#!5!!!2L>o||Rh"9+Fjk&us'N@  2<1@  IIPX@8Y0! ! &! !!! 'zOFӐhgս6,XNf-T/3@   <1@  /<20!565!32#!% 4&+pٕxL@+8/Xڦ5@ 2<21@   /<2<20!!#3!332#4&+326 z6࡟9d݇,@   <1@    /<202#4&#!#!5!!||Rqf9+Fk&u3k&u#m'ru; )@   1  /<20)3!3!#++h$.@  . 21@  /04&#!!26!!2)DlN݇@%j@ 1/03!!)ժe4@ <1@  /2220%!!67!3#!#p&axު D+?x4&A((v@   <2991@B   /<<2290KSX@    <<Y@ I:I:I:I:I:I:@  <<<<33 # # # 3DDxM(?@ * %)21@  %&" )02#"$'532654&+532654&#"5>I8z,|йԳƆ\qѲ|!ĐBY+wps{M("3 y@ B  6 991/<2990KSXY" ]@068HGif  FI WX ei y   ]]#!33j+3m&u# + KT KT[KT[X@ 88Y1 Y@   2991@ B  /<290KSX@    <<Y3! # #_yT:%@   1@  /<035675!#!T>Wxfb/X++0;+s2;@ 1/<0#!#;"++3s'&7#> 1B /20KSX@   Y%+53276?3 3 OM?w.-!suٵ2&]*jklyj =@!   <<<<1@ /<2<203>54&'$%53# W==U+  -=;; )@  <1@ /2<0)3!33#;ʪ+$@  21 /20!!"&533!3_||xdv+ *@    1@ /2<<0%!3!3!3OOʪ+++o2@  <1@   /22<<0)3!3!33#OOʪ++< *@  21/0!!5!!2#4'&#!!276GN6ONDPO+DCDCF&, $@   21/04'&#!!2763!2#!ONDNONDCDCo#N@ <21@   IIPX@8Y0! 7!5!&! 56! ! 'oOzFՎaa0&8@''!&$#(  !%$'2<1/0"3276'&76! ! '&!#3~܂܀s;:ŴL椤kj@@  21@ B  /<0KSX  Y3!!" &$54$)#!:ƒdv'V+w{-{Dp7):@+E'Q! E*21@*$ *9902#"'&5476$%676"32654&}:[;z631-~LӔ{0w)v ,u8w>` /@ " F!21@  /0!2654&#32654&#%!2#!r~~hhVlj9_ZZ^SJJOgyr`F1/03!!`3k`4@  <1@  /2220%!!6765!3#!#}v[(bt:d6(U3Rq{HF`@   <2991@B   /<<2290KSX@    <<Y@ I:I:I:I:I:I:@  <<<<33 ##'# 3?nn`QO6m|(N@ &* )1@ #)) ) KQXY KQXY0#"&'532654&+532654&#"5>32|PZG]twGabLx\l%%pZXkYF@\]y` ?@B  F F 991/<2990KSX@  Y##3y`}`y&# +KTKT[KT[X@ 88Y1` Y@  F 2991@ B  /<290KSX@    <<Y33 ##Tsŷ`OQ5Ls`$@ F  1  /<0356765!#!L8D{X^~ŷoPO` M@B   F F 1/<290KSX@   Y! !### >? ˸ʹ`'P` '@  F F 221/<203!3#!#U`7qu{R`@ FF1/<0#!#`3`V{Sq{F<m` 1/20!!#!<1BB`3=V`\pVg (3B@5E)! '.E4<<<<1@,41$ 4<2<20327&#"#"323>32#"&'4&#"326/{brrb{9SS99SS9{brrb{/Ǩ<9^N5=L^^LN^Ǩ;y`[` (@ F <1 /2<0)3!33#9U`33R`;@ F21/2#I #IRX 8Y0!!"'&533!3Hf\45h)_Vu;;` )@ F  F 1 /2<<0%!3!3!3ڹ"ٹ`3+`2@  F<1@   /22<<0)3!3!33#"ٹڹ`333R>.` ,@ E  21@   /02#!!5!!!2654&q8$~͓7_ZZ^`'">`%@ E  F21 /04&#!!263!2#!z~~@9LZ^_n7q{M@ H<21@   IIPX@8Y073267!5!.#"563 !"'q2 ǚ-VړiVFHL{ :@ E  F2<1@/0"32654&632#"'##3Jq и¾.`At"`<@  21@ B  /<0KSX  Y;#" .5463!##zwwVtS^a\'qk&CZq&jBBBB|#I##Iabh#FaF`C`#BC`CUXC`C85YBB##Ih;#5##I@PX#@8#55Y/V?@N F <221@ /<20#533!!>325654&#"#߰Bvz||яLmedY).ПĞm&vq{N@ HE221@  I IPX @8Y02&#"!!327# ǟ 2ғ-{FViګVH>=o{VyLFVyML`6@!E  <1@ /<0356765!32#!!%2654&+L8DثX^x~~~ŷ7oPv_ZZ^`8@E   F2<21@    /<2<2032#!!#3!2654&+N޹"\~~`7`73_ZZ^/:@N F<221@ /<<20#533!!>32#4&#"#߰Buʸ||яLmed*m&voyk&C]=V&^` )@ F F 1  /<20)3!3!#TfUf`3s48@$%6 )  51@ $-/<2<0"'&46733276=332764''3#"'&':y{d;]TCHI}rHGFFtAGCT_8d{{ђed''deFkmihhimw'AFf^^^^'`V!2#!!5!53!4'&#!!276XNpqONDNOQQfDCDC$4&#!!2!5!3!!!2##~~EE^͓uʣ+#3376!2&'&# !!!2767# '&SvwhfstgFtsfjwvú 9$#G_//wƪ//_H$$O{#2&#"!!327# '&'##33676>\" , Ux{ z{FVAW^3VH`3ʀ !#!#!#3 73` !#####3 Ñkk`_ !#!#!#!#3!3  o_<9d7`!#####!#3!3 kÑkk`_s##767!#'&'!ʓdսxQPtՀ`>YY~b҆12z(k{`! #4'&'##767E]kKV:VS8V‰Jl&VtO\KtU'4! !#'&'##767!#3!PtՀ`ʓdսUn>qd2z Y~b_49n(.`! !#4'&'##767!#3!7kKV:VS8V‰]w&VtO\Kt`?sVszS#"&#"3276&#"#"'&54763!27654'4327654!"567376767632'&#"ssD#`At bTDt;<}J5?u_hFAXVRuťޠsj#B#' "2ZbrRUgr %',azQ^XRj7&6J- @' WoWdE\`[tO#"&#"32632&#"#"'&53!2654'&'"#5223 54'&#"5673767632&#"vmDPb!',-cX;b12i?,ZnN .rr. >._- > ^ >‘  tӪ ҫ q{&P%327654'&+"&'&'#";67>2# '&5476!36767623 !#"'&'&r-HVV?- ,4, -GVUH- ,4 .xt. 4 .wt. 4 `ta  _tp_   颈   袉   vt N#&#"56763 #5765#53#"'&'&#"0#"'&547673!27676323 4'&'39vZ^Nzz%G!ft[na`zxz{n[tfCGo~[U]LKfdKJ]U[~oFCP/L&+CYg,'ID@@DDDk63366336Fk :#&#"56763 '5765#53!"$"# 33276762324vZ^Ozz$F"vrTRrƒ>IxddyI?В/L&+CYg,'IP8[ 77 [8Gs3'cS'&sV'!# '&76!2&'&# 3!#SvwhfstkSh$#G_//ӂqV{! '&576!2&'&#";#UQQLNONPccccɖ#+qr͹rq;'''7'77'77did}}didii}}}d}}}}dBz/!"'&'&'&547676763!476767623 8  8 g    ) M #&#"56763 v][Jw}$)/K'*Ca"53#7 a#55#53gF` &3@MZg#.#"#> #.#"#> #.#"#> #.#"#> #.#"#> #.#"#> #.#"#> #.#"#> v aWV` v "8v aWV` v "v aWV` v "fv aWV` v "v aWV` v "v aWV` v " v aWV` v "v aWV` v "AKKJLQKKJLKKJLKKJLKKJL)KKJLKKJLKKJLX- #)/'7'7'7%'%53-#%5#53 3#kyo\wyo\zV\Ly[`@¬@_ӤRӤRZy\yW\zn[wyo\ԤRԤR߬@¬@Vm&uV8&!!2#!#535334'&#!!276N訨ʨONDNOQQfDCDC&E 4'&#!!276!2#!#5333>CB>ytts9L^*..+URRRя>'+#!2'674&+327'7Uj~ rGj#u~{Sqrے-,9/~V{)%'7654'& 32'#"'&'#367632*nOSTTSSTFoWl{XY::YX{ ]ststsjts].01d d01j@ 1/03!3!)2$ F1/03!3!`:33G )@  <<1/<20!!5!!!!!N)#l8U` +@  <<1@  /<20!!5!!!!!?`۪ f3@  <1@/0#!!!2+5327654&#)qmL>87||9ժFwrKK"V `3@  F<1@/0#!!3 +5327654'&#rFRRQn!&&1`GQ``07 )(33 3## # # 3׈)D"AMF`33 3###'# 3?nfz!n`QL6mu&z9u|&z3! 3## #E#A`33 3###Tw8sŷ`OL5373! ###ʭd_dTy%u`37533 ##5#`eBTse``avFOQ5a!33#! # ##53ʨ_ʨye=3!!3 ###53dTsŷ}}z}5OQ5}2 _@   2991@B   /<290KSX@    <<Y!! # #!2_=y+*` _@   2991@B   /<290KSX@    <<Y!3 ##!*8Tsŷ`OQ56@    8 22<1/<20P]3!33##!#"dA9@`1@  F   F2<21/<203!33##!#W`39L -@   8 221/<203!!!#!#)"d9` +@    F221/<203!!!#!#W`3ͪJft8@<1@ /<0#!#!!2+5327654&#;"rqmL>87||9+wrKK"V!`3@!F <1@  /<0#!#!3 +5327654'&FRRQn!&&1:`GQ``07&.s-'1?Y@ 26>6A $0,@91@ 2:0@:%$( @90%&47632327#'#$'&76!2.# 32767654'&#"Ed`_fJxuTGIRDLżSu^\yI0a++IJ++}}֝s?] bh$">7^覤.$?xEGEFyqR{ ?5@$  A2H;*E@91@7.&@%67654&#"&54763327#"'# '&76!2&'&#"3W!V0),3MNNM'8HeZ>FR5<UQQLCZIUccUTqHT*.N›WXXW,4#qrtssu''z-qu{'z ,@ @ @ <1@  /20%3##!5!!A+<m` (@   <1@ /20%3##!5!!B1BL<=V`o@  K TKT[X @8YKTX 8YI:9120@BKSXY"%#3 3;^^DNl!#!5!53 3!ssf=V` !!#5!5!53 F;^^`XXNl=;%3## # 3 3p\Y/su A{+3;y`%3## # 3 3q!r))kLHJqG%!33#!!5!!+A+B`%!33#!!5!!xZ9B1B9L|%3##!"'&533!3_qm||x˪Awr7ٟd`%3##!"'&=33!3f\45h)L _Vu;;#"'&53;333###;qm||֐wr7ٟ9d+`5333###5#"'&=3f\4+ _Vu;0$@  21 /<0!2#4&#!#z||f9dK"*I@#$ $3 +291@ $ (+<2076! !!267# '&'&=3%!&'& ":Cppoż vzKB@bHam`_F$$UgkL>D9||f{%.i@.&&K /2@ p000]91@& &"*"/o]2</]90"'&=33676!2!32767'$'&&'&#"XY`09Jt⃄ fgjdcbchneNRS]\RZF1!&łZdc4*ZZWWu'Guf{'H,(vm'[uFH'f532+5327654&#!#3!qmL>87||qwrKK"9wV`3 +5327654'&#!#33^HRRQn!&&,%wGQ``07$)`6V!#!567!3#:bCux+8.%5ժV.V+`%3##!56765!s{{v^̳;bVdžf;1@ 82<1@  /20%!#3!3+53276q"L>87h_9dKKV`/@ F F2<1@  /<0!#3!3+53276WRQn!&`3``07V!#!#3!33#;"9dժVV@`!#!#3!33#W{`39V%!"'&533!3##_qm||xɪwr7ٟd+`%!"'&=33!3##Hf\45h)p_Vu;;V%3####! !+-}-VV`%3####! !H{˸ʲ>?V'P`yOh'J+1@oo]0{-&O"+1hN&u  +@ 0?  ]1{-&jR -( +@(o(P-_(@-O(0-?(-( ]1H{o{m'u@@]1qH'@p]1uQq{uN' ucq&jTd(vN'QuF'jN'u&j:yXL/`T31'q;y'q3N'uy'jsN&'u +@ @O]1qu&js +@ @O0?]1saqu{7sN&s'uqu&tjso#N'guq&j#1'qr;=V&q^#N'ru=V&j^#k'ru=Vf&^N'u&j^j #@   <1/03!!3#)ժA` #@  F <1/03!!3#`LFN&u&jGV9@  <<<1@ /<20!!5!!!!!!+53265N)#iGRiL`na8VU`;@  <<1@ /<<0!!5!!!!!!+53265?`nFRjK۪`na=f+%+532767 # 3 3*SfL>7( ^Y/su bzK5sx+3;Vd` +527>5 # 3 dkkCQO5r))`&9as mHJq=;3 3!!# #!5!suNt\Y+wD{;y` 3 3!!# #!5)) ~q4H &@  21@   /03!!"!"$54$3!fONDNONNCD#CD+fq` %@ F E21  /03!!"!"'&763!5>BC>9sttyLZ+.i.*RRPRUC 09@2&)  1291@"-(1220!"32765#"'&54$3!3327653#"'&NOO_KV! 3j^nN?4pi;?nhf1CDP_m}`61f[JJOZxx9qs` 08@2F&) E1291@" 1-(1220!"32765#"'&54763!3327653#"'&=C>A@j\-1C]^fety>dhd.*^\:9m4l01a`RUaPOORAsxx%74'&+5327654'&#"567632327653#"'&'&\]OOQRSrsdeY憆GGRQ?4pi;?nhf0!JK;$& hi|UV!bb[JJOZxx8PaF|54'&+5327654'&#"5>32327653#"'&NHtCDFEwGQPabLqr<=ih<>dhpb8f83,-F@.. NO]@AHOHXDEORAsxueV<)!#4'&+5327654'&#"5676323#s\]OOQRSrsdeY憆GGRQJK;$& hi|UV!baV|)%3##4'&+5327654'&#"5>32ȻNHtCDFEwGQPabLqr<dhpb{v^̳;b`WORAsxue{-`327653#"'&=!#3!zgh<>dhpbW`WORAsxue{`3s0@  1@ 0# '&76! &! !2653d-|e'%{9!Ҏ׿qF{0@ E E1@ 076!2&#"3253# '&q кĽbZZb/n||r|r|>禞f327653#"'&5!5!?4oi;?nhin+[JJOZxx}q`327653#"'&5!5!x>=ih<>dhpbB1VFEORAsxue{~{R|BTf:!56765!+532765pfb:WxM?77+80dKLLVs`!56765!+532765{X^̻3DF1a.&oP}з0) F@   8A!p] 991@  /2  9033265332#54&+! '&ˮ® ,gQ]*-呐u\GCF1l[R.$)K@  8Ap]2<991@  /Ĵ`]0 ]376! #54&#"!2#54&#!$ˮîXgQ$9 𝶫F1l[%D@   8!&p]<2991@    /<<0O']32#54&+#!"'&54! 4&#"3)GgQG*ɟn(!ˮî5ZrF1l[=ó|#ӢI|H@   8Ap] 91@   /90O ]32#54&+#4&#"#576! YgQGˮîːZ`F1l[O 9$\)$30!2#54'&#!3276=3! '&X_`07QWWWWˑ呐1[[F1l*1jiij 9㒕$2%!67#"'&543 2#54'&#!3 7654'& f<0I|q4_`07Q5˧OPPOOPP'.ƪV][[F1l*1LL]]]^^]])D@8 :  2]99991@  /0%!2#54&#!3!2#54&#!}gQXgQF1l[F1l[)@@  8Ap]<991@  /0]376! #54&#"!2#54&#(ˮìXgQ$9 $F1l[-:#'&'&763!&'&#"#76! 32#54'&!#"327654:gimINK(*WWWː\!%_`05л9:E5:. rs TfLQR2jjiu$[[[F1j,1i--Q@+#! '&4763!332#54'&)"32765pG혐nG_`07TZ5WWWWܕ.|n[[F1l*1}Hijji):@ 8Ap]21@ /09]363 #54&#"#ˠ(ˮ;dK2V 3@ : ]991@ /0@0P]!2#54&#!}gQڶF1l[327653#"'&!#3|%3x*%qXdq`>WWK7}bbpiOA$3! '&7#'&=33!2#54'&#%" 76'&ɼżg``07Q_`07Q|y&bc\[F1l*1[[F1l*1 椤)!## '&33276=3)ˠ혐WWYWd+&jiih) !2#54'&#!5 uw _`07Q1k,[[F1l*1f'1?%#"'&543267#"'&543 327%&#"32 7654'& oUIeβr0I|q9I9~dX/? 9.YOPPOOPP@$2iw'.ƪdkWM( ]]]^^]]?@  8Ap]1@    /90O]%32#54&#!4&#"#576! )GgQìː!F1l[ 9$\,3276=4'&#!#5354763!!"!2#5# '&WWYW07Q `_# Q70X_`ˠ璐ijjgl*1[[1*k[[Fd%!! '&332765!2#54'&#)呐WWWW_`07Q& ܕ$ujiij[[F1l*1S" $53 6&#!5!2654& #4$ 5JRS覥A ++.WHNMItYa[J\n@@  81@   9/0326=3! #"&=33®ìGœgQm 9-!F2lZ) 3276=3! '&576%7%5zZ[WWˑz=s9W/hiik 9ψ&dAU)7@  8Ap]1@   /<90]376! #4&#"!ˮî$\uB)4'&#"#576! %5%$76aZ[îː 1y=\gW/ίgj 92dAU##576! #4'&ˈKuˮ9)uBGlP| 9\̍P0%&'&43 2#54'&#!3!767654'&'& Eq4_`07Q5e, 7OOPܪƪV][[F1l*1L,@B@^^]t~H@   8Ap] 91@   /<90O ]32#54&+#4&#"#76! YgQGˮîːZ`F1l[Ou$\)8!!# '&5332765332#54'&#^혐WWYWG_`07Qd)jiih [[F1l*16).@  8Ap]1@ /0]376! #54&#"(ˮî$9 uS0@ '&53 7654'&#""#6767&'&5476! "327654'&RQJRSSSSRefg#RHJIIPacIJIJcaW"ccttstNMMNMMM *c" Y[`XX^[Y01YtAAAAtY10 =@ 8  Ap]21@  /0 9]54&#"#363 3^ˠu2;dss3\,<47632#"'!2#54'&#!##"'&=337654'&В􄑑I_`07Q _`07Q*]WW]_WW_rsppzzpS[[F1l*1=[[F1l*1A>T]=BD=[V>Cs2167654'&4'"!"'&'5&'&547632qG^CC95+<&0kljxw{vEB[eK[ 4D~n>=>@%c3A +mlpp/E# ,,W`aru~^#33vx%"#476327653[RBhj[RBhjTDDjlTDDjl}fC^7#47! !"33254'&'#" q3U7a\ "9S A5z\&NZ%03!Z}4bb&^@PP F'<91@  #/<<<290@0(P(p((((((( ]%#"&5332765332653#5#"'&E``ruSSrw?XXyzVU|:<b`^zbzh02>>Vd{?@    N  F22<1/90`]54&#"!!#3>32||Buܟ6V edqV{ <@" GE!<221@  !032654&#"##"3253!!/+:||:Z/\RdaDDadOV{=@ N  F2<1@   /<  90!#4&#"#3>32!d||BuZVH`ed X?@ NF2<21/90`]3!!3276=3#5#"'&>>|TVCuddZL PO_bvfcxxqV/{<@ G E221@ 03!#"325332654&#"Zs:||:էRdaDDad,@ F<1@  /0)3!!32#54'&S[zM`01LI[F1i&&Vd{>@   N  F2<1/90`]!4&#"!!3>32||VBu ed\V6{ )u@ +G  F*2ij$!!$ISX $<323#'&5476#"3276#§:{5`4xBdBJ4/' daZ+h|{Nvqq<q/ 4@ ! GE <21@  <<0!"32765#"4763!33ƈbOMSK}<zaksC+D߫LVd5@  N  F21/90`]#4&#"#3>32d||Bu\edV` @F1@0!!3y^ VI@  NF221@  /< 90@]32653#5#"&5!#3||Cu`a{fcLq0\@ 2 $G,E1Ĵ,1@ 011(1<<0!""<<!<<#"327676''&5476;#&!!'&'&4763[AS].SD81N/Vɮ!qZsIR\++(VL-%)$?뮘VX:@     NF2190`]332653##"&||CuZ{VfcdKqZ 4e@ GE5<@ (''*%%*39/ 91@. '/ 90@ `6666]32654&#"#5#"325&+"'&5473;2/nD:|WCv>!%7)/kPըdaDE<6pG5P0,!K7V9{;@ N  F21@   /  90!4&#"#3>329s||BuH`edTX-b@ (N  F.<<2 -9   /1@%/<<! (90#5#"'&=47#5367$732%326=4'&#XCubdzzp>BiO>AycW fcx{Iʪ`&$%8vJMO;) +?@-% $NF,21@ &$&)$/90332654'&/&7676;#"#5#"&|| M.=<(`Cua p0.- */(fcVy`2Z#G@%  N!$21@  !   /<90;32653#5#"&5#"'&5476;#"||Cu;^PZl}YYa{fc^PzKWV{!<@ #E F"<2<1@ ""0!  3!!"'&547654'&#"#4632/Q@'$C#@l;qsDE E+G56dZY0Y^cԫeed{QFV;`%X@##'  &9/1@#&&990%   ! 3!!"'&547676/&5476;#&(3W:'$F[L2se`6g+! E/>A/(32||BuƯ`ed X`XV-=@    NF21@   903326533!#"&||sCua/Vfc{%i@  PPF&<<1@ "  /<<9  90@0'P'p''''''' ]3>32#4&#"#5#"&533276BYƸ||zUVCdȸ||XW{ed\_`fca_\Vd{7@  N  F21/90`]#4&#"#3>32d||Bu\ edqVZ{J`@F1@/0%!!3y&"`V%k@  PPF&<<1@ "  /9  90@0'P'p''''''' ]3>32#4&#"##"&533276BYƸ||vYVCdȸ||XW/ed\_\Vfca_\V{$U@&E  G/<2221@"%%<<IPX32#"&'!!#54&#"326չ:{{:+Īdaad)qu{RzV*"-6u@83 .# *E7<<<<<1@&7/  "7<2#99#93.  90#,<<. #"'&'53&'&547632##4#"27654'&,Dd%Kcfep_{5S#al~EU@<%I]7_E8BQ-a`ta2N-bliZn!vFDs:#+IJ>8@    NF21@   /90332653!!5#"&||^CuZ{OfcR@<21@//073#3#R` 27#"'&'3U oo,rrONcAUUWDC <21I:03#3#D-dC'KRX@8<1YC %  <<1@  <5G.i=dB]Gg`":T)yX`!  1  /204&#!5!23!5!&nZͦy–1CZ`G 1B /<0KSX@      Y4&+532##n̒[^ޕ<S"Xh`$1/20@]1#!5!t/яd`4@ FN F<1 /<0@ @P`p]!#3#4&#!5!2snvy–t`FF1/0]!#3t`X` #  1/20@ ]5!"#7XNrXGяy Kd` (@ F N F1 /<0@]!#4&#!#!2dny–/``*@ E F1@  <0332654&+532! w`ҏ/t`FF10]#3tXV` , FN 1 0@  ]#4&#!5!2nV#–X` @ EN <1 /035!26&#!5! #Xt뒦X&@ F N1 /04=!3!#T[CLzld` )@ F N F1 /0@]3!2%!4&#!6n`–X`^@ F E991@  /<990BKSX@     99Y"#673632!5!4&WWHFdaxѧȠ˨Vt`FF10]#3tV X` %F  1 /0@]4&+532!5!ny–X(` *@ E 1@  20#5! !"264&+" я0D_ЍNO`U@ F 991B/2990KSX@  9999Y%67676535673VGu",:pΈLƒ4U}*p>1=!"$Vd`1@ FN F1@ 0@]#4&#!;#"&5!2dn\pTQV#–U;zdd`,@ E N F<1@  /0! )5!2676&+;#"&5*4{\Lwuq`U;zCVp`D@ F  91@ B 290KSX@  Y#3>=3#q_V`}՛C!`J@ F  991B /<0KSX@      <=3!5!CcMgXC"`ԛ:V`,@F F<1 /0!#76654&#!5!2#3l)WzB'*˺u,/HVv.4X` ) FN 1/0@  ]!#4&#!5!2ny–`/@F F21@   /<<033$763 76763) :0nLaT`Sl+7`+@ F 1@  /<20!#4&#!+53265#5!2ndDrL~y–a; `' `' `'`@ D103#`n`@DD1<203#3#`|!#53ӤR@ 327654'&+5336767N5G4pQf$h?FA@6b ! eI(R[2* #53 3#ӤR%@-$%#5754&'./.54632.#"'/XZH߸g^aOl39ZZ8{4<5/VVL89CFnY1^5YVeU"756767&'&54767632&767/SD435gcbnZdF31`9:H:ZU!LOTAKv?=0ps2#Ql '^5']>Ry3#&n9&P &n&n (f&; (f$3  !27# '&5767"$JKԖ^`e~h'?6`vc–e4- (&;?}R%67654'&'3#"'532# b&?q  ?%#&'$473327676'&/3327653323#"'&'TPxmil_Qb_y^@@$;sR,%@n\Kf% I01_2F,k>GHܳ&%0l}=J"5^.327654'&'&#"&#4763&547632#bzL,5;(.;Dn2KxAZM\MObxX'*9:X DD(NOf7*(?$S-8APH&? "327654'&'2#"'&5476B!799[]KB{ƶ`Q%T*WE{R,,9.UMAx|KU#JN @ &"34'&!5 767"'&'&547632?,3/V%._]g>v-(tYhYH9!$3/,;̠X*VL_ !"bWg3ZfJ6%#"'$47376767654'&'&'&'4762#&'&'&VfxH?Ba=~T;~BrC:@_` B(EN><}9M I&huqc- !P85J.39sJ%*==!'&"7*S@UYD J&R $5%5%HHnnnn$&567&'&54763233"/#"'&5332767654&#" %!lE?I(7 /4KU^r8Z #08 " -d$* 9^W4'6O'&n=NV)qaK" %$5%%5%HHnnnnn$5%Hnn$-&'&5476323"'&'#5276767654&#") lE?I(7$# +EȓV " - 8_W4'6O -n=*{nmp" %$5%Hnn8(#"'&54737676533254'3'&!9EO)"a 2=`YG g -SGL(E?4mmb}8T"RY$6îs9It6Y ! 4&#"32>"&462X@AWWA@Xz柟?XW@AWX栠h732767#"'&'gC*6:)kXZZC5"LMD6{S )L}@FOwpO p 4373ËF3# !#'3%1yI !nR#'337673#" %1BR{6)coajr!nUPymL%#'37676537653#"' %1/(/H/; 'G 44.5WY9!nr|> @2%,*;l>3  *"2767#"'&54767&'&'&76#zf\MOYp0;JcX~VI|eepdkAXH,7p 4C@#90L@rRiUZhsBBsǮuu5aU#'#"'532N%bU`DK*22<!&'3673b~ĚZ00ZĥxU:Ũ ;6I<3#&'#6̴UxĚZ00Z~bI6; :d#"'&'&547632#54'&#"=:i_{\ %Z[,,G\O98<SGU37e{a}UwnWl42@B^!x$%-`+-!d! M fM&n,&n9 &n9 &n'&n &n&n &n (&;]8 (&;? (f&; (f&; (&; (f&; (f&; /',>? r'_>? &'_? &? :654'&32! '$&73! 76767#"'&54767632)B,4((7(*Hnق@AZAd#?zKbNLZB`.+M;3*)3P&ڴF=)d \^tL"9;l&NKCW4,E$2Hf6&x~&xx)-%2767654'&54767#"'$473$62 #dGf>5?AhXPA7.EB|=Q#!w*6(  %{{qeVUI&b \^~B")+&&M_H#"'$47332767654'3HdnaPm/1]]LGL"fh8D%jdQ45b`ޜ ('&;? @r'_>QJRr&R_>P`aRbLcR%'&547632&767#"'#'3X\lTX\D8/0E= %1Bx:=$!"4'Qjr!n8j$(327654'&#"327#"'&5732#"-2!WZWXZV%2-Z(.5__52ZJkV0B7,g`p5oU%mao3/AbM3))I<g<hdi (@  1@  0"32$  h P3343ssyzZ (@  1@  /20%!5!3%=Je+HH=  21 /203!#3ulh=   221 /0)5!!5!3=lȪ=   21/0%!!!3!l =21 /0!#3!=l*=1/0!#!3!=lcr8A'91/0#3ASuNA (  < /<10%!3!#N{ 2@ EEܲ@]91@   /<02>4."#&'.4>329[ZZ_PGr䆇䄄rEMp`77`p_88 1ŧbbŧ1 y@ 1/03#+q!/@ E  EԶ 0 ]1@  0 6&    z>z='+@  2291@ /2903#36Q*=q33# =qCq @ 1/<0)3!39Uq"q @ <1/0!5!!59qKqO!%!!5!&'.4> 2>4.":RJr 惃sKRQ[ZZ{ 1ũbbŨ1 p`88`p`88 %@    21 /03"3#!5!p9 fq2@ E<21@  /<20!#!##"&6 54'&"3qvCf^]8mr^:<UfɃ]8ƃD '@   <<1@  /0#!!!y5!Փ/= '@   <<1@  /03!!!}5!Փ/ %@ <1 /0!!27654'&'2#!3,R4,,=iXXXlι]Oz}I__ҭ$;@   ܲ_]9@   /999@ 10#4'&'5!4B 5McAq_9V= 491@ /̲]촍]0 53#T9+!-@ #"1@  !/203432>324&#"!4&#"!}x5%^ZHZlK--Xh&|ŕnc= &@   <<1  /<<0!5!3!!#KK?=9@  <<<<1@    /<<<<<<0!!5!3!3!!#!KøL=??q!@ 1/0!!9UqqK=! #tFC00B~+n 4@ <<1@    /<20327654'&+!!2/!!m]%i ;@ED\TqQE=4."XErrJSRJrCEoJ[ZZO{ 2Ʀ1 { 1SV/p_88_p`88} @ 1/0#!#}+B} #@   <1/0#!#3}Om +@   <<1@   /0!%!!5!!z;  TKѓ+qO $2>4."%#&'.4767673 [ZZTXErrJSRJrCEoJR"p_88_p`88 2Ʀ1 { 1SV/ qO(#&'.4767675!5!!2>4."XErrJSRJrCEoJRNQ[ZZP 2Ʀ1 { 1SV/ p_88_p`88b/1/0!!VBf#"&/#332?E=9Qct2 %xf" %/x $Dp/1/03#=f3#'#f[f!5'3{Bf3326?3#'#"&'Bx% 2tcQ9=Ef$ /% "[f5%3%[{fS/1/03#̭F'/1/<<03#%3#\yu  <1/0#527#53gu  <1/03"3#  gd 1/03#!!Mdd '@  <<1@ /03#3#!!Mޒ1/0'!! '(033!!3'#67654'&67654&udruxtNMddx>DD>xIIv! RTxXY`aw,0dc1-!:;z{t{*L@$% E+<<<<@!#91@$+<@ (+0%"3254"3254#"54!#"543263 #4#"h??AA??A'+,LW@@@@@@@@pطQQ9/@@1(. #E0<<1@!0%* 00"3254"54$3  !2632&#"# 54-654!"`@@@CvBըiUv˫:knL?o@@@@N;Ejfae:.88U8327&'"254"%47&5476! #4'&# 63 #"'632# i60IKhh*)7!o^RX;*:9u`/'"6OfqAtqLI $\9.ȶlQ!6@   E"1@"  "0463 #"&'7325#'&&7'6met "xCBCquЍ h! ACBB )2@  #&E*<1@  *%/0"32654& 4''&5432#5476$ % U%|{e6Lj` %"%:yx~)RhKK>  65@$- 3 (E7<<<1@ 5/7&7"32654&4763  !27632! 54-654!"#"`$ % 琺By#xJi:OknLIo %"%0yKpjNdfDQcwiC|85sr *;@&%   E+<1@")+&+02654&'&47&7'73%$$!% l݁6ZA| $! $Vm-G4 p?{1@ F1@ <@0%"32544!  #"54$32@@@)@@@@Pvv .<@- " 'E/<1@ $/-)/<20%"32654&672#4#"#"'&#" #"53232l$ % L 7*>(z*M#6&8"$ %"%3|0ۯqiPWu|+?@-$'+ ,<1@ )!,&,<0%"3254"3254 #"5#&767663 #4!" @@@@@@!Ӣ7y-^@@@@@@@@edm%W ,9@. $  )E-<1@ '-+"<0"32654&4323254#4#"%$7"@$ % 쐋'(uj %"%@կ̰Xsgh\_"9@ $ E#1@# #<0254#"53265$54767653!"'#W@@>z]U]iTrs@@@@pegu/ssHs|2@  E<1@  0"325447&763! 3%$5@@@ԶMg@@@@R&Ѩ'LBHs2@  E<1@  0"325447&76! 3%$5@@@ԶMg@@@@<%Ҩ'hBY E"32654&!"32654&&''"&5623253765$7465&'7$ % $ % Kfg饤IJ %"% %"%IKbv4ˋ42@7-]fn9h%A@'$ F&1@&<<@" &0!"'# 432!32533253"3254hfg襤>@@@ JJ=|\@@@@@h} -?@, (,$ E.<1@"&. .<<0"32654&2533253!"'# 47&5432d$ % AfgB %"%4˩/JJ=%܉Mh -?@, (,$ E.<1@"&. .<<0"32654&2533253!"'# 47&5432d$ % AfgB %"%4˩JJ=%܋L@`$@1@  <<03!23! '#"543225O)3Ɯ)`,88{r *;@&%   E+<1@")+&+02654&'&47&7'73%$$!% l݁6ZA| $! $Vm-G4 p& ,7@  '#E-<1@+.%.0"32654&4! ! &# ! ! '&54323 c$ $ 6buUKX $ $8${nE{N%O 0@@2, %&E1<1@%/1!*<0%"32654&&'&'&5! 765! '676%&4% $  ,D )@ ' 1#-E5<<1@ )6/%!60"32654& 4%$54!232#"'&#"! '&5432h$ % ${ajjh@MqKy)LJm_ %"%1EYl0xP^b8Rsu_|]F'"2''&'$!32'&547"32?6AS2;9’hhNU~ +;9jq!Ban'u_ +@   /991@ /0! &7623$'4'74"Y#!A[VB8?<kP$U.FM?>={{+@  E1@   <0 ##"2#"53254#"n=;C>@{jVR777r&@ji  /1  /<20! ! !5 74! %&?%~?>~@i$@  /1 /<220! ! 3!5 76! %&>%~?>wJ~~@ji*@   /1@   /<20! ! !5 74! #5%&?%~?>~N@i.@  /1@  /<220! ! 3!5 76! #5%&>%~?>wJ~~T3"36654'#"5432AA\(DeN[̼o[$N[u%@ /1@ /0"3254"547&54323253r>Juum@s> [yu?{EBXF_ '656%"'&76! 4"3YVA!. {x9322674&#"CCjFPH OQ$!%!p'(FnJv-O!3] $ $z{&01, ("32654&&3 #"4/&5432N$ % s $ˌeqɘzm %"%82y,v\#"6@ E#@! 1@ ##04$54%&&5! $#"57"3254ix@@@X4|`Pٳ ?@@@@ ""32654&5&'7!$#"47#$ % dt.; %"%Ȉ_p 8>u%t/;4#"#"'&#"$#&532327632! '&57"32654&"3C2z7J,"/IN\=0BWTO3H$ % Xt\DD\t] 5<\UCfwpv  gH %"%V@/1/03#V~!'@ /1@  /<0'6"%)56574 65+*+UGm++),}݅.p\(>.4"!27676327673!#5654#"'&'&#";&543.%2~*&IHHܝBOg(LBC]i%>e>.`h>3A?~= h\$kb8:;-F_Zkf2)N !@ /<<1@ /<<053533##5N؎؎؎ P>r@ /1@ /0432#"73254#"ЄLTPPHHH` " 7654&' ! '&476^L:NbX1coqoh`WĒcg&24764'&#"676'&'&5476  pHgc/5pIu upHECle\gUܚsuϨcy\$24"27#&5432# '&5?$5+r%3]f́|pHFPfouTapH/%24'$5432327#"'&#"%$'#"54322533]L/|tkZ1AQf(3Ɯ)DjR:jTh8KOpt$68{cW%24"$'&5?$532&'&32!r|T9lc ~x?LvTamY<KcW-224"7&5&326532&'&32$'&324!B}b$|T9lc ~xr=Ch(筭 ?fXmY<KLvttY4@'&''"&54323253765'$543227#"$#""32654&fg饤u ^|uISL\>$ % ,IKbv4ˋjEaTW8ҋ %"%{ &%"324"324#"54!#"543263 #4#"h??AA??A'+,LWpطQQ%Rpt MU"32654&254"#&76767%4#"#"'&#"$#&3232763276'767$ % nnvp+-"2D2z7J,"0IN\=0J%.3?5xv'Q %"%933hk//3wt\DD\t 5<\UCrTF-2bG;"b,i $5354#" #"524"m~ŶejsX\|9~ LX"327$"3273253!"''&76324%$7&76%$5#0#&76262654&'&A?A?fxԅ$8$+Rb,7Hu Ӣ5r$!% @@@@@@@mӔJce$3- /ԋu cd $! $~ I"327$"3273653%"'%5254%$7&76%$5#0#&7626A?A? Tcb*@RX6&$Hu Ӣ5r@@@@@@@mo6J,/7'- /ԋu cdPi.".54>7!5!!"32>54&'7i7eȬd7&KlGqǔVXxyӚYlūc66clJ7^sz֟\[{6yEr2b\TZ@#!#".54>7332>53!w!KNM#hN&?Q*nq-Nj=8kT3$ KfWxc*s@nQ/+Lk?Z 5!4.#".54>2!/A%'B/+(=B=if:y'D33D( R0oCEOc88cO'MP.4.#"32>7#".54>7!5!!"@YmEgLLfjJkoX؁q؝XGxdI(YjiMKkii۫uuZ8!4.#".54>32i+Kg<>lP-7:p0M6NifL>@kK*0Rp?>?1ill3eMF}gZ,#!#4.#".54>32!|/@%&@0&%BE;hRPg;(C03F(#P/MCOe96`PFZ(4.#"32>7".5!5!>32&/Oj=kOOδMEHHjMoP.)NpF@pR00RfLLfan0/IP- %#"3!!"$&546$3!!J׉@@ט`a( ]wxԟ\Fww2P:G!!3!n!.x1Z+(4.#"32>#".53>32`+Li=?jM*,Ni=>hL+iJEMfLK{W06\xCKxT.4XwA_bKr62NpZ+4.#"32>#".5##!>32*+Lk?AlM+/Pj<@jM*KihNIHk?pR0,PpEBnO--OnβKKgcBvj12KZ+"32>5!#".54>3!!5!!Q@lO--Ol@>iL+MghONiL.QoA@nQ//Qn@/eMMehJ{PS$!4.#"#4>3!!"632,Mh<>e-PKhr>iM,fL?nR0*'R} gM1Tr@aKfPc K4.#"32>2>73#".5#".54>2*LjOwϙYVz|՚X0/':Yr?DsU0 E nǬc67dȭe7><qU'!RkL)[z{֝[W.>#K]59_|D 6clkǬd77dk{Z'kE"1%P#".5!5!2>53KeiL*-Nj|fH'eMOfXAqT12Vq>P&!#"&'.5467!5!32>534JEp=AB7D4+! )#$+e;:iP/05IGHeLJ )RpEn),/,Nj=Z""!#".54672>53!`NgiMNL6--Nk|jN,+eMKgV[@n6@nQ//Qn@]S#".5332>54&'7SLfiJ,Mi>=iL+>5{-H3eMKg@nQ//Qn@6|>/dfdS 4.#!!2>7##!!!2/Oj;;jO/JGHܓ.gM@qR0,Nl?dEHCMPbF4.#"32>5>54.#"#".4>32YywКYXxԗR6aO"?/$/ .@KZj>mȬd78ekoɭc5[])D0z֞[[z{֞[WwAoV5'//!6cǫc66clv?GOPb 14.+32>#";+##".4>3!2>mTEETmFUl>>lUFk\܀EFޥ^^ހWܢ\YqA@n@oWVn?~ٟ[][ڟ[]F!#!3!3!3FS!4.#"#4>32/Oj;53`EIgJ,Mg<:iO/02Kf>mQ0,Mi=nB-#".'332>=#".533267653BLi`R0Lc8;jO/FIiJ,Ni=:c'YgKSkFzZ40Sm>1/Jg@mQ.+(P|S!4.#"#3632+Kh<7g4QɑeL|?nR0++N|uaKfPk*!5#".54>32.#"32673YUlǬd77dlps[.\YS$wЛYXy^Pr2@6clkƫc6JH,Z՞Z;;xXZ)"32>5!#".54>3!3!Q@mO--Om@>iL+MgiNNi.QoA@nQ//Qn@/eMMehJ35S !4.#!!2>7#!!#!#!2 )4)2VsA4(AsV2*=&$;,S~U+ 9/XZ.?#".'332>54.'.'.54>32#6.#".KfbT1Ng:jN-VU^]4R8eMRlHzY3/Qn@72*63UeMTkH|Z4/Rn@)D BFRZS#"'!!332>53SLf,Ni=53 KihN/Pj732>54.'.54>32#.#"]~|ۤ_-H3K7>kTSj==jS8mV4/Rn@8gQ6';#w٥aL~מY[{:omn:vQNVl=53 ,T,Pf:l #D;%?.a=4.#"32>7+!!#".4>;5!5!54>2-  -)//?%&@.%?/:fPW2WvCDwX22XwDp=  @xY9lY|PW!%! %674#"&5! % %1,lշ._z+,S.+RLo ۤTn8d`'675$!2363 ! ##&!"#"32CxuM6sc*rE) PlaؕyZdX!&732#"&5 ][*8F e]N/I3^@[7rr2dX'!&732=6+537#&5! nN ggGVzkB3L.ķ@JKW~Xq\,d!$75&7! &324'"6Z^,CH!IJ:QU,X\$d56#"! !2363#"32UTcD>0R^<]td'6#"$! +.!TueudY! 473254+5365!5 Wb 퇇2mNEIJ(bC+d`3675$%2363363 565&#'#"#'#&#4%"fDjPQUOR Tg@! 5y<O-6d! !234#"#!#"2mLC{%  }>e~! )!363#"7Y`PlB   ry_d56#"#'#"$!2363 H LDVza!t#rd!! 4732+53274'$53X`4"gzҶ/c7Qib6ȕ!6G))=HdY2! 3325 '%5%Uc| CGko 4Y_nd9$5$#"#'#"$%7367 > B)oQT7-ngDP5kn1w5! 3324&547cTɜW\wؠ?c-'9dY: %3! ! %#d6*Q&q)QGFޕd$! %35#$ 3#3%#" 5;54 X`dHrrr44OfkQؔcdX2&!"'#!525#"3$%2363 #"321ZG\KVOvBppdY_!! %$54#"'! ! 4'7_GD `U6I@bYsrg8A:ԃM){6\lY(3324'7%#"'#723! ߫fB߻cV̿0?7YpdW $!6=3! 47$$5! eڞòkHuLL8TWJ&)*d54&#"'675&%'%"t_CCt?h]|KytJfqI8=ۣ&*d2 3#3#3#dѺ/㰽d 2"4;%"4#"32;ѹF|pux$LRQ´h=@ B1/0KSX@Y %##.d+hK'Egh"hO'tg@1B/990KSX@Y sNO')tiN')ui'eiw^?1B/990KSX@Y 5](&xyw^O'1tm'e56'e&g56'gO'h56O&hE'iE'iEO'jEO&jO'0j'mwE&mO'nwEO&nw^O'?0n 3#!38Ygg`nC^^n7]^7nn7]]0d"&533265453zWA@XzCss!AWX@+!U#454&#"#462zX@AWzB+@XWA!s0U!5!2654&#!5!2@XX@s0{X@?X{0U 4&#"32>"&4623X@AWWA@Xz柟C?XW@AWX栠H> %'111 ]]1<203!3CC~K3#K!5!${1V #5#53533zz{{1##5!z$ %{{:'Ue'g"'=iwq'mh9hK'Eh)hO'tw^:<1B/0KSX@Y7 5wM40w^O')tw^N')uw^'w^:21B/0KSX@Y%5^xyw^O'1t'56&9'56&O'56O&'wE&O'wEO&O'wE&O'wEO&w^N'1u<291B0KSX@}}}}Y5`sbbs]103C)8)K'E)*@ 8AKTX8Y1  /<03! #4&#"!!ˮî$*\u)O'tw^ 2 <1 /07! )5! )w5BhPa.,~w^O'tw^N'uw^'y` 2<1 /0%! )! !`aPhB5jiy`O'"t&''&O'O&'w'(O'wO&('y'(O'yO&('$ ~21@  0# $54$!3#"3nn͙ nn{'|'|w}'dy'F> %@ 21@  /90"32654&"$54$32#Bz_̀#R3IK'E %@  21@  /90"32654&#4$32#&f̲_ȭT#R3{O'tF> (@  21@  90%2654&#"3#"$54$3Bf̲_ȭ벃F>O'tFN'u (@  21@  90%2654&#"672#"$53z_̀ʃIO'5t'F'?'~'|?O&~O&|'F&O'FO&?'~&|?O'~O&|?&$~  $~ ]21@ 02654&#"632#"&53XP^J\TaaQ_VFTHUGQK})~J8 2654&#"03#"&54632xOaT\J^P_KQGUHTFV}i~F'x'F'x'F> 1 /0#4$32#4&#"#fK'E 1 /04&#"#4$32f#O'tF> 1 032653#"$5fF>O'tFN'u 1 03#"$53326f餗O'5t'F&?'~&|?O'~O&|'F&O'FO&?'~&|?O'~O&|?&$~ ] ]1 03#"&53326yaO\T~JPML 32653#"&5T\OaQLMPJ~w:1/0!#!5!)+jK'Ej@ :1/03!!)ժjO'tw:1/0!5!_++wO'twN'uj/jO'5t 5&w'&'O'O&5'w&6O'wO&' & O' O& &$ ]10!!3 nC ~21@  0! $54$)!"3͙ nn{3!5 nw} (@  91@  20"32654&'2#"$547!5__ȘLӦnjFY 'iFY} )@  91@  20"32654&'!!#"$54$C`^ȋMӑnj 'i<w "@  91 /20%2654&#"!5!&54$32__ȋfLnjw'<!w'<!FY #@  91 /20%2654&#""$54$32!C^`șMgnjFY'T<$H}'w}';3'$FY'y$3'%FY&%yFY'T<$\ 2654&#""&546 !j>_IEcI_(0MJBSKFXCIn~|Q;n."&5332653ܨabaaJPMMPJ\ 2654&#"0!5!&546 _IcEI_>jm0(MICXFKSBJnn;Q|~w 1 /0%2654&#!5!2#bŘ쥒FY '2FY 1 /0%"$54$3!!"Cꏙƥ᪑FY'<2w  1 /052#!5!2654&᪑w'<4w'<4FY 1 /0"3!!"$54$3CbƙFY'<7H'0w&0;3'2F&213'3F&31H'4w&4;H'5w&5;3'7F&713'8F&81\"3!!"&5463RiPYnvDZHCn~}w^ %5-5 ^j22F  ? 1 /0!3#$53TCc Xon2K' EK @ ? 1 /053#3  cCT-ncCO' tKF   ? 1 /0%#5%3# c--noXF O'tMFN'uM @  ? 1 /0%!#3#c-gCcnO'3tP'IF'I'K'KO'LO&L'MF&MO'NFO&N'P&PO'QO&Q&$P  ] ] 1  04&+3#XHǜV+.#"#"&'532654'&/&'&54632Cw7Bh#-8GC>=JGBAm'./G?;=~ÇH)@@V\`RʺªV\`RʺªhZ·%XhZ·Fl632#4&#"#"&3326tҪºR`\VҪºR`\VX%Zh۷ZhFlO'teF'32654 !"/.#"3"54!2!rz|K٬42 swUҤ'4X˧|`í~pX˧|`J3~F'<gF'763 #52654&#"# '4!"326(24׬'Uvr!24֭٣K|zsp~ȕ`|Xp~8=`|F'<i&dF&d'eF&eO'fFO&f'gFU'g'hFU&h'iFU&i'jFU&j'>72#52654&#"#"&'463"326[*'sobI=J>",BR\*$jt_UV) '2654&"#"'&54632! 33265,B:d:B0<~JIjˮîB,">>",BVU_tjN*$u) '"2654&'632#"&5! #4&#",B:d:B0<~JIj!!ˮîUB,">>",BVU_tj$*\) '"2654&74&#"#! #"&547632(B:d:BB®!!jIJ~<UB,">>",Bu$*Njt_UV)O't)O'tS^$264&"&546; )5! '&Vhf# fw_:@ 91@ B /90KSXY%4$32#4&#"!7g#ʲfhXdfF.=@ 1@ B 90KSXY#"$533265!>ʲf"fw_?@  91@ B 90KSXY '!32653#"$5g"ffd餗 K'  '  O' ;';O' '  O' ( (2654&""&546323326=3#"&=bFntnPX/Q,CEmaZT:KMMKFHn|ppX;oBGj9$ 3>2654&"!&546323326=3#"&=!"&54632!2654&"bFntnP?+/Q,CEmaʔ/bFntnPZT:KMMKFH;XppX;oBGj9|ppX;T:KMMKFHFY<@   91B /0KSX@ Y!"3"$54$3!7YꏙbXhUFY'<w8  91B /0KSX@ Y!26544#!wb gXw'\<FY:@  91B /0KSX@ Y'!"$54$3"3!YhbƙXiU𥒥FY'i<\'%!"&5463"3!\=.̞RiPYB~}nDZHCw%#535!53!3##q=ԭ-!%#5#53!3!3=~0Ԥ!O'tw533#!#5!5#5q=-ЭԤwO't!5##3!35!535=-ЭԤ!O'Vt 33#!#!5#53m unfy~n ,@  221@  /990%2654&#"672#"'"#3z_̀ٷ{O{ʃIH+'sZ@  21  /0# !3! !5aPh//+jiN !!!5!;VnVN#5!5!5!53!!75$i2$i*mւVxnVnՆu!s #'#37 ͉sH+'Y &s & O& 7& 7O& & O&!!!!#!YX  !!###!YX  !!#####!YX    H!!#######! \YX     !!#########! YX     !3!!  !333!!&  !33333!!e    G!3333333!!     !333333333!!      !3!!#!?r !333!!###!?r   !33333!!#####!?r      Y#!3333333!!#######!?r        +!333333333!!#########!?r         SC !3!!#!YX\\SC!333!!###!XX\\\\SC!33333!!#####!\X\\\\\\S FC#!3333333!!#######!ZX\\\\\\\\S C+!333333333!!#########!YX\\\\\\\\\\!33!!# #!՚rՙr %!3!!#!!2^DD^ Wc !!!5!5!!!wsX #5!! !!'!%'! !7%!77'7!  ww u||||||||||||u  G7+/37;?CGKO!5#535#535#53533533533533#3#3#!!#3%#3%#3#3%#3%#3#3%#3%#3??????𨨨!!!!aOq:#[!' 7#}CrarCrrD:[! !rarC}rbar=` !#!#3!ff`G [`3!!!!!!!! j /t`Ӕ&{o{4=J%#"'&=!.#"5>32>32#!3267#"'&32767%2654'&#"JԄ℄N ̷hddddj||MI؏ii~ST`Te__ZjkSR\]i߬A@o\]Z^Z5*,=>` #% 54)3#4+327#!5#53!2x9||ԙf_ڪrĐq{Fg`32654&#%! )s7F0Ǔ$g` ! )#53!#32654&+7F0ɖzٍ`` !!!!!! /`Ӕ|1#"&'5327654'&+5327654'&#"567632p<54& #.54! ì++f++$$>:#tNPƳPNM]*U3MY + 3267>54&#"'>3 '# 5467'7*(Ou))Hn.Mw834OMx43N)gA\*g>}66]C_56`?`q{&/=5!&'&#"5>3267632#"'&'#"'&732767276'&#"qN ffjbdjQGhi񈉉ijBN℄RR\]VVUVVVZdc44*,nmn67윜78lkpĘZYWWsttstuq/u{ 4&#"#32/8qu/ 32653#"4/8`!264&#%!2#!#N[cc[H^^>2`!.54763!##"#676#";jpkla;;?î545w?@@?w iQP%$q2^66**TS++2`!&'&'3;3!"'&546#"37545â?;;a|lkp w?@@?wS66^2q$%PQicQ++ST**<m``$ 653 &53sXٹ};ML+%!5!2654&#!5!#TZ`fcL||BtN5353!5!2654&#!5!#Z`fcxzʤ||Dv/{&#!5!2654&#!5!27654'&#!5!#|vz{\MN`_`gb>> E__ru99wSS?yzVU=`YV5`ZX`]x`73264&+5%5!2 'Ӏ{n Fo}ɽBdd>Jm7{3!!I{/=`N`#!#`I``-Z^`367653#5&'&3U9VˆmmV9S`1Ms,}},uMLs` h !3#'!#ZgVXVq`!!!!!5!#!.AeW"___DXI &327654'&#327654'&#%!2#!g1221g̼^-..-^EOO)(N^h+&&MO%%X@? ]65dL.- rUpz 327654'&#%! )[ZZ[vNONN]eefe !!!!!!R-@___S !5!!5!5!5@-_/__H~$5#5!#"'&547632&'&#"326NJYXe|}}|\SRFFPOWWVVWCj]/rssr'y5UVVUL 3!3#!#΀2Wr3# 3+53265A@1(TFDE`Tli 33 ##-<azBm3!!_ 33###|{9="G 33##|_{EEG ##3G|_{EDEH"327654'&$  '&RQQRQQQQwvvwtww[\\[[\\[\vvvvuvG>@"327654'&327654'&'52#"&54767&'&54763sCDDCstDCCBR65<%j<=0ER^X65`l<=ca==ll*6RI)++LK,++,KL++5##,&)$%LY+8:6iG2278PyAAyP87'21I.* 32764'&#%!2+#Y0110YQQQQ))))]?@@?[ #'&'&+#!232654&#=)&''y.,,LPO)*s\^^\$ )(GTD<32#"&'#3t4554455$pMPPPPMp$uuc@AA@@AA86Z[[Z68^gG3#5#"'&76322764'&"Jtt%78NPQQPN874555555S^8Z[([Z@AA@@AAG#!32767#"'&547632&'&#"@AsC?>>>BADbc^]SSt44Va:: 2j88a WW[ZQRmT3210YGMK SX@ 2KSKQZKT[X888Y1@   /0Y5!.#"5>32#"&73267GsC}>?CŻthVau2koamTebXTb2&'&547632.#";#"32767#"&5476G&%HG{065>=f,K,,+*Ib]W-155_;65-9553+,$$4O,, ^$'U13 `fa<))R`1#"'&'532654'&+5327654'&#"5>32FLHG{065>=23-KX+*Ib]V.156_:65-9j2RQ,+ H4O-+]4$'U 12  `33a<))G 14'&#"327#"'&'53276=#"'&763253J44^]4444]^4PP=7633223r99$88NOPPON88$tm=>>==>>FNO e 45k37XX"XX7_z3#53ztttu 33 ##uuZu2u{"4@ $ #32>32#4&#"tHKYhuu'oMLl+yRowtHJZiw[Wk\sa97EBEB~wZXku4@ zx66X6VYYk\sa8BDG 6@ KSKQZKT[X 88Y1@ /0"32654&'2#"&546]ml^]ll]ǁqqpoWGu 67632#"'&'532764'&#"G0336^_]^:5311213p?>>?p3121 XXYY _ ?@@? G4'&"#46320T6667zWVoBAA@qWWG27653#"'&506667zVWoBAA@qWWu#3>32#"&$4'&"27uu$pMPPPPMpf4554455b_86Z[[Z6@AA@@AA#3#;#"'&5#5350Hww33UUPM,V-,vTPn3327653#5#"&nt''N^67tt+78Jy~{Y,-65\c`9nA!5!27654'&#!5!#Ue22<KLg#"FS10gg%dAl88u{(#"&53327653327653#5#"&Q+<=Rnxu$$IZ54t$$KY45tt(78LMlE!"z[+,64\c[+,66Zcb;F&33#&{{y #! !&'3254554#"t nυ9F}攥^ؙ83a _{3#5&+532{t<,||GXG+&#" '&54767&54!232654'&'&yAJZVWVWW!/bL+"766^]l9=P(r(B4?KWXXWr]$,O'(@?Ajp69G  )"27654'&'2##5"'&5476734 )=;67-!XQVVQs~SVV@h)%661FQ:5}t?3XJOZUUXR=\ ,Ajq@:%'#&+53;'&^sa,(^ra,GX]:DFYzg duudnsjd&smdyondsody67632#"&'#44&#"326&_%sNo%ti\[jj[\i92ض78"{qqrG xqd%trdV{(!2.#">32#"&'#32654&#"aQQR9||9F,*[cbbc#LFt`5!#3#3!53#53t𰰰त TV/%+53276'7#3/F0j&*06G#367632#"'&$4'&"27tt%87NPQQPN78f5455554_s^8Z[[ZA@@AA@@Gu&'&#"32767#"&54632u1122q>??>q22110h;533` @??@ _ GKv+325&#"47&'&54632&'&#"632#"Z%0\R@5`$^4412/412q>??5{3 * &;/Z ` ?@@biG.&'&#"32654'&7#"&54632''7'37 i:;n\[nO$$ZY drP =67Tb1#"'&'5327654'&+532654'&#"5>32N+,QR2658-56:_651.V]aIV-+K-32==l/|GHL ))unn77wU:8P#P,i/0\+53276=1#533343r,Brrtn x66XU P#PG ,5#"3276#"'&'53276=#"'&54763J]4444]^44tPP=7633223r99$88NOPPO>==>>=۠NO e 45k37XXXXn3327653##"&nt''N^67tt+87Jy~{Y,-65\cO9I 5333##53#Irtggttt\\jz~ ;#"&5C,rfpUWlwI 5!#3!53IMjjo\\E\\I5!#3#3!535#535IMjjjjooo\\\\\\V`3#"54;33#'#"3276ztteztry "3rKNB ,|ssW?#5$ z~3;#"&5ztC,rfSVXlx[`+53276'7#3`34r,Bttax66XS gq3!!q_u{467632+53265&7454&#"#4'&#"#367632+=32#4'&#"43r,B0t*pJz>?t'(N^66x66X6V~a88BDwY,-56\uU 4'&#"#367632;#"'&5P''N^66uu)89Jy?>0B,r34Y,-56\sa8BDzV6X66xq 33##q-{{~G 2#"'&5476"!&'!3276WVVWUWWU6//1w &6^]6&WWWXXWWWW@9\[8E-AA.G&.#5!#3!535&'&5476767654'&OpFVVFp^nCWWCnt6%66%4#76$\\FWWG\\FWWE[*,ApoA-9*A@+Fa:.#"#"/;#"'&=32654'&/.547632;1j8W*,]({44MN9> 0Br34@?>=RX l)k`GF@rb/$+*MW33 V6X66x"j2-*TIX00476;#"+5326z73zno>43r,B0]Me30U:Jx66X6#3#;+5326=#"'&5#5350Hw43r,B033UUPM,ax66X6V -,vTP^!533!33##5#"&=)3276^ntgtuut+87Jy~''N^61\\`9Y,-6/G&5!327654'&'5!# '&54767GE()78Z[78*,?G$"ZYYZ!"J\{':?KY7667YR8>#{\8?>LRRQRR<=:u2653#"'&53QHuDEEDuHPZs{>??>{}ZPz31+"&53?27654'&'&gH#"YZ,rftA Z87)2:08?>LRRlwpU67YQ8C&# #3{{ s7n !!!5!G'L\^=R^7!!#;#"&=!5!G'LC,rf>\^=R VXlx ^7^n#47#5!5!3632#'3254#|`\'Ln& m,7!!^R^=jR37!2#"'&'5327654'&+5!5!hCQ>63``;??C5~Ex>?::hn\& =;M|CD m**PJ*)]R^G !32767&'&"2#"&76So/6^]6/ +66,ǗWVVWVV*MWXMmGYXFovw^wwwv[f!5!73[f3!Px[f#'!5f[f!!#PU騋fBf 3#'#35fxBf 73#'#˴fxh'${-{'TDN's%N'>E&%&E&%&Esu'l'Lvquf&vCO't'qbN'>G''qZ'zG&'qZ&GOw&'z[quZ&Gz'&'qZ'^&GZ&(q^'HZ&(q^&H&(7q{&H7v&(qv{&Hum'u&(zquH&H'zK#O'vt)/P&I @s&*2"qVZ&JI;N's+dN'>K;'+d'K;P&+j@dN'>Kt;&+ztd&Kz9;&+ 9d&Kv&,Jvg'LYZ&,tF&ajl'v.l'ZvNj&.&Nj&. &Nvj'/''O jk'*u'/S1'q(;j&/J'Oj'&/\'&Ol'sv0f&PvO'wt0'FP't0{'P3N's1d'Q3'1d{'Q3&1d{&Q3'&1d{'&QsZ&2fqu &RsV&2lqu&R'jorsZ&2jqu^&RsZ&2hqu^'Rl'v3Vf&Sv2O't3V'STN's5J&UT'}5J{' UT1'q}; J&q T&5TJ{&UO't6o&%V'6o{'Vm'v'6of&V&VvW&6o&#"O't o& *O'rt77N&W#>'q77'W&7b7&W'r&77''&W)'8X`'{Xv)&8vX`&X)&87X`&Xu7)Z&.8X&+v)4&28X'Xh}&9F=7&Ymh&9=`&Y^Dr'|:V5k'C ZDr'|:V5m'vZDN'j>:V5'jEZDN's:V5&ZGD&:V5`&ZJ=;O's;;y&[g=;N&;j>;y&[jfO'ps<=V&\f\m'u=Xf&]\&=X`&]1\&=X`&]d&KfN&Wj->V5&ZB=V&\{a&D/P&A@h'${-{'!Dh&$u{-{&DTh:&${'Dh:&${-&Dh[&${'Dhu&$ {-' Dhm&{-f&"hZ&$ {-' DhZ&$ {-' Dh&$ {-5' DhY&$ {-&D h&{-&3&(q{&H&(uq{&H^'u(q7'H:&(q'H:&(q'H[&(q&Hu&( q' Hm&qf'& `Z&,#uD|& &,.&Ls&2'qu{&Rss&2'uqu{&R}s:&2lq'Rs:&2jqu'Rs[&2jq'Rsu&2 equ' Rsm&'quf's& tsgk''ubvf&vscgk''ubvf&Cscg&b'uv{&c}g^''ubv7&scg&b'v&cs)&8X`&X{)&8uX{&X}_k'uqif&v{r_k'uqif&C{r_&qui{&r}_^'uqi7'r_&qi&r{r&<r|=Vk&\C!'v<=V`'t\&<r|=V&\`^'ru<=V7&w\qa&> Qpqa&> Hqf&> ^qf&> kqf&> _qf&> lqm&> `vqm&> mDha& Q#ha& f' ^|f' kf' _SXf' lom&1 `Qm&x mNa&B QDa&B 9f&B ^ f&B k%f&B _Of&B lR-a'# Q-a'# 7f'# ^|If'# kf'#" _Sf'#^ loVda&D QVda&D Vdf&D ^Vdf&D kpVdf&D _Vdf&D lVdm&D `Vdm&D ma'% Qa'% f'% ^|f'% knf'%3 _Sf'%d lom'%t `Qm'% mNna&F Qna&F f&F ^'f&F k<f&F _Qf&F l=nm&F `nm&F mAa'' Q5a'' Kf'' ^|Kf'' kf''4 _Sf''p lo"m'' `Q)m'' mNqua&L Qxqua&L nquf&L ^equf&L kTquf&L _quf&L la&-# QVa&-} Of'-v ^|Yf'- kf'-6 _SPf'-w lo*a&R Q=*a&R *f&R ^'*f&R k!*f&R _`*f&R lW*m&R `8*m&R mIa'2b f'2 kf'26 lo3m'2L mN'a&V Q^'a&V T'f&V ^Y'f&V k^'f&V _'f&V l'm&V `c'm&V m^a&6N Qqa'6 if'6 ^|uf'6 kCf'6t _Syf'6 lom'6B `QPm'6 mNqf&> }tqf9f&B }Tf:Vdf&D }Vdf;nf&F }f<quf&L }{qufY*f&R }0*fZ'f&V }M'f[qVa& HqVa& HqVf& HqVf& HqVf& HqVf& HqVm& HqVm& HVha&  PVha&  PVf&  PFVf&  PFVf&  PhVXf&  PVm&  PVm&  P2Vda& 8Vda& 8Vdf& 8Vdf& 8Vdf& 8Vdf& 8Vdm& 8Vdm& 8Va&  PVa&  PVf&  PVf&  PVnf&  P#Vf&  PTVm&  PdVm&  PV'a& YV'a& YV'f& YV'f& YV'f& YV'f& YV'm& YV'm& YVa&  P\Vqa&  PVif&  PVuf&  PVCf&  PVyf&  PVm&  PPVPm&  PqH&>zq&>qyqVf& HqVy&>HqVf&9Hq7&> RnqV7& HHhm&uh1&q;f&B }RhfVh& Pxa QVxaH <ܲ?]1 Դ?_]KPXY̲?]90IIPX@@88Y#55#53xgJ7FJm'jVdf& 8Vd{&D8Vdf&;8Vd7&D RVd7& W8f'#b }Ruff'%n }RfV;&% Pf' Q } f' Q. BJm' QnH&F$n&Fqn&F {.x7&F R.zm&F S0gm&'.uY1&'q.;f''q }R}f~f'  }f'  _Jm' *H&R'*&Rq$*&R {*=Va&N QVa&N *7&R R'*m&R Sm&2vu1&2q;f'2 }Rf5a'/ F)&j }lFRfCV'f& YV'`&VYV'f&[Y'7&V ROV'7& Yf'-; }Rff'6D }RfNV&6 PsRfvxaH ܲ?]<1 Դ?_]KPXY̲?]90IIPX@@88Y53#7"͔gd10!!dd dy/10!!dOydy/10!!d8ydy/10!!d8yy/10!!y&__J&BBB@ 10#53ӤR?@ 103#ӤR՘?@ 10%3#ӤR@#5R՘?m '@   1<20#53#53ӤRӤR??m '@   1<203#%3#ӤRӤRլ@@m '@    1<20%3#%3#ӤRfӤR@@m #5!#5RmRխ??9; '@  YW Y <<1<203!!#!5!oo\]9;>@   Y W Y <<2<<2122220%!#!5!!5!3!!!oooo\\3!   \ 104632#"&3~|}}||}3q373#k%3#%3#V #@   1/<<220%3#%3#%3#ki3#iq L #'3?K@D$%&%&'$'B@ .(F4 :&$L%IC'1+C =  1 =I 7+ ! L9912<<2220KSXY"KTK T[K T[K T[K T[KT[XL@LL878Y"32654&'2#"&5462#"&546!3#"32654&2#"&546"32654&WddWUccUt%ZVcbWWcdWccWUccܻۻۻۼܻۻ q r "-7;EP\"32654&'2#"&546"32654&'2#"&546  &54%3#"26542#"&546"32654& WddWUccUyWddWUccU<¹ߠZucbcNWccWUccۻۻۻۼ5ۻ(`3(`u(`&  ,(`' ,&  X(`#3W`u(`&  ,(`& ' X , #'#Rs#G@%Bon29190KSXY" 5s-+#R#I@&Bop<9190KSXY"5 +-#^R^  &K'N''=NO'^O$#5>323#7>54'&L Za^gHZX/'-93A% #C98ŸLVV/5<4BR-5^1Y7| B_ % ij991@  <202$7#"$'56:<hh~vvuw~ign % ij991@  <202&$#"56$6;>nvv~hhgi~wuI3 # #bbc$$v=' {' { 3_!!V_+@B10KSXY"3#-\X 3!!#3hX^#"#JX 53#5!!53X^JݏޏJ&""gJ&"JJ'^"d] 327#%dp](; 2###׎辸( 3+"&5463yv}~}|( ';2+v~}O|}=k {B# #5#5R#۬@n&  =o'  BC''H1a~ 8| #'7!5!'737!!qaqqaq)`rrbqr2 535353,(`$' ,& '  XfN 53!535353fXp fN 5353535353,p  3#3#'d 3#%3#3#3#dipD %53535353#!5!3!,|f  feP> 3#3#3#>w 3#3#3#3#W "27654/2#"&5462332233VVVVVVVz@ <<1@03#3#zttttg? @   ] <291<290KTKT[KT[KT[K T[K T[X@878YKTKT[X@878Y@T /9IFYi       "5GK S[ e]] !33##5!55bf]myf !!67632#"&'53264&#"y^^a`<~B9>>Eoo4h6_ MLKJq ff\/"327654'&&'&#"67632#"&547632X3333XW33331221DD &9:DTTXWll122m45[Z4554Z[54bg KL1LMONuv l!#!liH30Y *:"32764'%&'&546 #"'&54767327654'&#"55j]\655T./RQ./SZ85UVUV56-/.UQ100/SS0/*,+KLV,++]12Hdt::dJ01:7PyAAAAyN98?&%%$A?&%%$S.532767#"&547632#"'&2654'&#"1220DC #<9EWXWXkl122Xf33XU5443g KK/MNoouv rh\Z4554Z\44k !!#!5!Q_i_k_8_83!!'3_a!!!!''^_o #&'&4767TRRTe^///._~g3#676'&ge_/../_eT)**)~~~u0@ 32tNN^luu)qJy}wYYk\sa88WT dC{d^TtdbTud?C dfC d\T dlC dYT dST d d8 d  doif dgif dMUdG[dGddu!sdG\dV##"32.#"3267!!!!!!Oc%eNLbbL:/667756GFDFG ks9'.473&'3267#"'#7&'#7&'&76%73&'hA>/(%:@w]ayA9&AX}R4>C5Ai<)^_HH?WghйKp(`,%6767# !2.#"3>32.#".aXj]aye6{_]w|^0n&<$'/_HGghGG_^ٜu]\Y!!!!3###5qZpP~WHE9Eb#!!53#535#535632.#"!!!5-쿿=OL=tyB_))HB+#&'&#"#3676323632#4&#"#̪m49wSS>YXyzU6%X\xruxGM_a`f21>&>E3\u"&)''#!333#3#!###535#53355KO8~8~OO4&{{&&{{{ P32654&#+#!233!!;532654&/.54632.#"#"&'5#"&5qzzWQeGl`[z_<`HJU];Ufɘ/ϒjqqR>N#55YQKP%$((TT@I!*##`3E326&##.+#! 32654&/.54632.#"#"'&ٿJx}A{>[b`cae@fLNZb?ĥZa,/b؍$~3YQKP%$((TT@I!*;"&)-1'#53'3!73!733#3#####5!73'!!7]:1000019]zu }Luuguuguuuu_ % #4&#!#)"33!3_SV*$oN&1@: "+ /) 2+"!)#&  , & &*!/<29999999999122<20K TK T[K T[KT[KT[KT[X222@878Y@z  1Ti lnooooiko o!o"o#n$l%i'i-  !"#$%&'()*+,-2   USjg ]].#"!!!!3267#"#734&5465#7332[f A78 ʝf[Y`(77(6bbiZȻ{.# .{ZiHH"{/ #/{"G(33!!###5uX_Tws1s!5!!77#'%5'&PPM4Mo؈onوn9 -bw'67>32#"'&'"326767654'&'&67'>7632#"'.'&/#"'&54632326767654'&'&&#"32">1aJ{%A01Q[W7>/W1   >$<  . #dCw-^URB$`>DL_K>.3b @N\uLMiI(S395l9,8G(/&  -9)ЗiRm:3Xwdg7? 2j7#=5(6$ 629T/ (2M !:5S}$@{mbq~Es/4 -& "TAB`]|@8nRkcd]aC".)5'632327&547632#527654'#"'&#"%654'&#"o|@X"07PYtaTk~j[IwmqJ2530D#24!`NkBX``S㫣†qJ323!!!3267# $547#5\J5 ;_srigCS1r{jJ,{ +kv67&&UB{\* {;^~FE/0K?{w!,&'&#2767#&'&576753w[TUeeUT[Y\Y[dsye]Y\[CvlCi----iH$"u9Bt"#BuflC3!~d=!5!'3 G~d=z!#'73!5~~͛=z5!'3#7=~~d͛F 3#%3#%3#yfPF 3#%3#%3#%3#ky)=z #'73!'3#7~~<~~͛͛C $(B"326=7#5#"&54634&#"5>32%3#.#"3267#"&54632pSHfmƩogDc\GD^o8yy8o^IICBRCI M >OW\ 7$44"C +EI.46'&#"#&'53254&'"326=7#5#"&54634&#"5>32%3#VNz$p;i0ʪ%={pSHfmƩogDc\GD}|49d$, !5Lf,1BRCI M >OW\ 7$s'!.#"3267# !2'Y藣yyYjzS #bvAZ4-4ZBuHHghG[!!m&r&F+,/-/ܸܸ,(и(/A&6FVfv ]A] и ии# /!"+!0153&'&'6767!!5&'&76wI3cc3I86QLNN7887NNMR48_ki:rq;zn #++$ * rn<(2.#"3267#"&54632%3#"326&$  &54^o8yy8o^IICDkavva`ww~44"K <M-1332653#5#"&.#"3267#"&54632%3#\QPcu`^o8yy8o^IICDLriuD P44"K{Ro#&&r)Io!6767632#"'&#"32767#"'&'&547!#"'&54632327676"#"'&'&54767632l(9BKc{=&%%03!((!,739%7`lG;7 25]hB4,'5  'B[QF$%]c'G  %! }Kr~,1ьIg)*!&!(D;w},75;!_']7:y}[Ϟ\@4>#,!, 'QFj(JG4$$,*)/9yK#%P73276767654'&'&#"&'&"'632654'&'&54767767#"'&'672#"*i(X%# 1FSE/ O.55FuPU[QF[00rl~"KI}!;IFs;n;_T^͌Q79}w^l.Gyr\[4O9%#i#^MX;yv@c}e.ID\7I;>2V秉uӰ3!3%!!!!!!nnq  dx+%H#>54&#"#3>32u j_ y/wFx \/HT^Ȧ^m$R#a"67632#654'&#"##7373!!UcduL/ .| {@e22wKwGW\?3L0O}};t9#"'&5476323276765"#"'&54767632thn<7# ;KQ>!|Za,4(XM!},‚<7D9#7.M=.1?@ '(MXI(' jF!2?632327654'&54?#"'&#"632327#"&#"jou9!ydG>PPPP5ʺ68^nm{z}}ȋo֏zZ'PVaK~pmdykb^OP681/::b:DnJ327654'7#"'&'$#5"'47676766767632#"'&'&'&#"32nZS_n0VBRny#HB?X!$9BMw>7l. ;7%,;(ӧuy,D0&3273#"'#67&5477632654#0)W:K32#"&'####53&  O:{{:ܧ$}daad}j %# !3!# dX0dd q+6+/BB/,/<-ݰ.<-ް#? < # 9 FhH)##Ii;BB=#IbiF`FaC`#BC`CUXC`C8Y& <BB00<İ< 6< <9 FhH #Ih; < ְ ݰ,9, FhH &ְ& #Ii;/,#Ih:1#IC`#BC`CPX& ,/C`C8K RX #IC`#BC`C@PXC`C@aC`#B C`C8YYYBB=#IbiF`FaC`#BC`CUXC`C8Y#)<BB1#IRX   <  < Y3525!463"!4632#"&732654&#"5!6jgggg92299229k̀k@4nNggNNggD{{ "-! ! ! ! '32654&#%!2+# JR12)uyӲckkc?L00ey wXQPXdn;C0<67632#"'67327654'&#"#"'&57&547276545[ۄFIyeL )qz]E& JEYq:?.蔁0.A ƂMkeLPק<+(h|H=y|n=B {u.F/4_NT 33!27&#%!2+!67654'&,d.@nX<-]\,q jdZ)VV)s!)%#'# ! % 7& 676'&B 3y;:x+lllli$ #ab[ 2222jT%%5$c$B2 _327654'&'&'#"'&5476323276765""'&5476!6?232767#"'&B=]iS\ZV30Fn7;#FfS9!!< #5,h";<2XngZR{,##9>;K!QIag£S D5@7*'S:y}*7H0 5#!,Il @3Xnh0{(2r:=OSlIX&54'&#"#"'&527654'&#"3"'&547632763227767654'&#"R(O*\xggfg-.@@?@@?\QA@@@S6fggfeӻp/$~AB}:1$ -*MJJ@f[+8vuuv zVWWWXWWVVW\uvuuu# bW1W{|^1$h{vC[SK\GChfy /2 &.2&'&+3!.+!! !27&#676'&%3LDEx-Me5q>HJxnu1EA+ZY*01/O~hbb)j)V>U)-  /!/ и/ ܸи!ܸA]A)9IYiy ] и /9 ///+ +0132654&#+#!273 # #s sNCI/ϒ_6۬kk%T$+.3&##&'&''7#!27%7 67654#?\A>:AٿKE6ToF^~_ ,8~|T3Jۏ/HDh0& ,ok؍]-Dbg('4.#"#"&'532654&/.54632733###UW'AG/E8pi4sG[d/EK7?8pc|3iиY"*/( VAO[`*,2,* M=H\T(l0`!!#!!!!!!!3!!rso+` `ffff'F >@!    b b cbc91<<2<<903#######5Jq7rqr/B^^"h %73# ' 3,o-MoF+,\ %#!!!5!8kO8d qddd XL/ 654&#!5!5!5!!2!"'X $''ߦԧc̆eeaԊfJN6NsDU767654'&#"#"'&5733272632632!"'4'&'&#"'6763232767654'&'&#"_}yj#1Q\$####,TGG\n#?QY>kDM4giMqE#"'&'&5476?&'&547632#"'&547654'&#"3"32767'_ilE_ml=Oc{T3-2") %+fa@aP/Z_|{w:maZu> IhA"%@_l$=PczS2VN-2!$+%$+@e}N069na[u>_T M#"'&'!#!"'&547632327676=!7!&#"#"'&5476!27327#X':'7?<=**M_4. B^l{>!'Ba>nG#&#w4$B00!K=DcK_4B( 03B{>ceDInFT=I,Fw7K. 0# )5!!5!3#Pʪ9Bk32767"'&'&47'&'&'#"'&547632326765&#"6767632377632#"'&'&'&#",5(.'*'E`97y{7a;f7;>F3.^PeMD*#7@,j!HhH<=.%_yipp3 T}B',$ *5܀/,,@!;Da97TVM;nwF^O?/,%!;>jytX<;}f?E'_n H''#  .hJ) 4&#"322#"&54WOmVPm˜ݢt}t{أأg4 4'+5654/&4?'&547 '&5474/c2>Bd=VE/b5c2ltc2c2uc1LS2?Bd,>8?]/c6c1LS2tc1LS2c1LS2903#!".54?>3!4'.#!".54>323!2O,""$%@;5H *Y[#$"x2 1[G(  WA,!2#"&/#!"54?>3!!"&5462TPl 0%= -d,mF"$mG- .7#*(/ $"Sae(!q~B;V&!"&54>323!2#"&'&5 mG * 5G 0%9 . q~( 0 (/ &Js!S'DQIF 4632#"&3!53#5!pQOooOQpoTQooQOonuyy5yZR; ! ! ! ! HH#[[breH !#y;:x L`  !!!!#!3#'!#33 # #DjwZDZ֏R``C5MR.}$z`-1%5"'&'&5#2327#"'&5#!#"#463!#3#, 9Yl(Ht*=Z2dr!Z4@'!8 ֦zEB bLs{dYsZ{3#"#4763 3׮UEEl4FũdGQnCF\xB*WbOZ=0 3%!!,:*nq dd3!3!!!! nn8q  qwS ! ! !!5 5Y*dccS!!6$3 !"$'53 !"kJu^uopkoSUggHF_`2/.2%!#!5!)+!5!_++!# #3bef9WJ " )327&#!3676654'&|tK"P"coAfյ|cv~dAA xPfUmZ #2!7#"547632!3 32767654'&#"* 6B8wx!Nbb|˞"#>|OO'vN 2wx87tKsO=  =d01 PD10d^dTd6Jthi[{ (232767# '&5477632!7!654'&#" N&#G_yZ\klmk}Z5fF 9NJC0<7h:J(u*oDMcFPZd82vRsO 3#3#!!ɸ.Ԇ$N9`V 3##676#732767!ɸ.fʆ#5H2K1i0/N)deеT0Hd01``;&0 #473>32#"&'532654&7>54&#";Ht]h202޸SUWDi;2[UԠ_I@Yr~YW׀c?}<$$/1oX3gQX?@Q` $@   F 21@/0!5!!5!`oX&{' 35ud^X&t' 35ud^&{' 35 d^^&t' 35 db^&u' 35 d?^& ' 35 d~&{' 35 df~& ' 35 dw&{' 35 dbw&u' 35 dfw& ' 35 dlw& ' 35 d&{ 35,'&,,&,',,(Q&,9h9&9,,&9',, &9',',,-&,;=;;=&;,=B&;',,j/s'&'0yL&LLpY&L'LpLA&LY=`Y=&YLD=-&Y'LDL=&Y'LD'LL$J&L[;y`[;&[L[;D&['L[LyOq{FqZG{Py }  ) !3 !## !5hPPh55~ji.,w# + ++ A]A)9IYiy ] A]A)9IYiy ]%"+++ + 013 !#3 #32654&#! )5HHNhPaY.,职~y }(1C3 +3 !32654&+! ) #"35# !35#"&546!`HH5NNPhthNN5H/ó., ji~s'H{d?8   2@ @@ 00 ]1@   990@   <<@ <<KSX << Y5!!dx=xUZxx @   991  2@ OO ?? ]0@   <<@ <<KSX << Y3'#'-Zxxvx<xuP8   2@ OO __ ]1@  990@   <<@ <<KSX << Y'7!5!'7Pwx=xZwxx @  991  2@ @@ PP ]0@   <<@ <<KSX << Y#737Zvxxx76767632&'&'&#"#"'&/#7!#/)85,0F"<;NJX[GR7<"#!2)85,/$#?2WG[XJN;?,!F0O<:" %7xxUZxaxxaxuP8 '7!' 7!'7Pwxx>xaxUwxx>>xxwd?8 !5!3#xwx-xZxY %'3'!!5xZxZxvx檪uP8 22@ O O _ _ ]1@   990@   <<@ <<KSX  <<  Y!#3!'7'8窪xwx-\xwZwx !5!!7#7\xxZxx+xvx7!!5!7'3'xxxxxZxxvxxvxd>%52#!5! 767>54&'&'&>42/+-+-':1 Hxwxܪ-)o=  xwZwx(.46<=69)-d>>3276767654'&'&'&"5476767632+#5!5 6 +/24>A1:'-+/24>xwx  =69)-(.46=<69)-xZxvP>54'&'&'&"3)'7'7!#5#"'&'&'&5476767632# 6 +lxwx>42/+-':1A>42/+ׂ  xwZwx-)96<=64.(-)96=dP8X#532267676767632267676;'7'7#""'&'&'&'&'&""'&'&'& xwx 0$#$   "%'-0$' !  ' '- xwx  ('Z&("  "(&Z'( -xZx$ -#%"&* 'xwZwx ""&*  *&"" dPF%'!5!!'7'7!pxwxpdxwx^:5xZxo:xwZwx* %'7 !^ b9YXxbZ  #!5 xwxoxZx[ !'7'7!#xwxxwZwxZ  !5!3 ixwxDxZx[ 3!'7'7xwxDxwZwx 7#7!5xwZwx=xwxd? !5!3?=xwx-xZx,-eX&7#754767676 #4&'&'&"9xxZvx.-\ZnllnZ\-.BB54'&/#7!!#"'&'&'&54767D !BB54'&x\-..0YXplgtTY0../Z#,@#B"!BB@RNJV]xwx]TQ>]xwx]xLii `iiT4]xZx]4]xwZwx]JiiiiuP8!7'!7!5!7!'7'7!'7!5giiyYuI0]xwx]uIiixK]xwZwx]Kxd?8!!5!!]xwx]7Qix]xZx]xi#'3'#'x\xZx^xhP8^xvx^huP87'!5!'7'7!5$iiQ7]xwx]iix]xwZwx]x737#73jhx^xvZxx\x%hh^xvx^8dP8!7'!!5!'7'iili\]xwx]]xwxiii]xZx]]xwZwx7''3'7#7iii]xZx]]xwZwxliii{]xwx]\]xwx  #7!##PU?,UvU,?UP5#'#5!#5'U,?UvU?ԄU4 753!5373U?ԃUPqPU?U 433!'3ɕPU?UqPU?,Ud?8!!!!5!!c$R&xwxxxxZxxuP8!5!'!5!7'!5!Q$܊xwx&RFxxxwZwxxd?8#''''#53777?(FncxwxFn-FnxZxFnuP8577773'7'7#'''unFxwxcnF-nFxwZwxnF3'!!!!#!5!5!5!'-Zx((ت&&xvxTrx#7!5!5!5!3!!!!7Zxx((&&xxrTxd?8 5!!5!35!dxqxUZxxa 3'#'3#3#-ZxxbvxrxVuP8  '7!5!'7%!#'#5PwxqxUwxxw( 737533-vxxvxrxv4k?9 !#3?xvxתx~\xuI9 !'73#'7!uxvxxvvx7?~ 5!! !!  d }*^V 3! !!d}*p  d HP~ !! !!    ^V #!# !!!d e n ^V !! !3 3!!!E*dr*r$| \d^V )3! !3#!5#3 3 ȃ\Pdx @t %#!5#3'!3!3! !33'ȡdxd:tZdd\nt^V%#!3!3! !3!5#3ĹtIt\Px^V%3 3!!! !!3 37r*kd d| ^V %#!5#3 3!3!! !!33 37ȃ:͊` \h u}~ 7!! !5#35! u\Pdx f:bȃ  zM!#7!!#Mc"?,^xc?x^zM35!3!5!73zpc?Jx^cr+a?^xJ^V 3 3# '! !! !  e   dCuP8)5A '7!"'&'&'&'#5367676762!'7$"!&'&'!27676Pwx 21@=:C.2  21@=:C.2 _x_R#)l$h$#R#$Uwx@21.2@@21.2@xw#w;' , utP'7!5!'7!5!'7!5!'7Pwx===xUZwxתתxwZd?D5!3!!#!dx3xUZxmmxuPD '7!#!5!3!'7Pwxͪ3xUwxmmxwdPD3!'7'7!#!5xwxwwxwxmxwZwxmxZxd?D5!333!!###!dx⪪YxUZxmmmmxuPD '7!###!5!333!'7PwxYxUwxmmmmxwdPD333!'7'7!###!5d xwxdxwxmmxwZwxmmxZx7?@  !JBJAu}@ 7'!5! PJBł}BB7}@7'! ! 6BB A}BBh %!3!3۠ՈR+nm+A&6FVfv ]A]+ +0132#&'&#"327673#" B!OO!BzcI7͙7Ich-)b@'! '!* $$*9991990K TK T[KT[KT[KT[X*@**878Y>54&#"#"&54632#"&54324&#"32IH7$$0e՘ݢe WOmVPmmWKt,>bFأ[t}t{ !5!!5!!5>+5!#7#53!5!!5!733!Kcd04+^^``k](673#"'&'#7&'&$32 '&#" 32$767&'&YjiEd80~i?/c`RQQ$g'-"SRR:;nSz_'BTc_ N@DROg`8@91/90@cmpxyvn]] !3!^DC?`%! !3f<?I!!"$54$3!!!W?JGcGK@ sJxNL``ȟMOx]I&/!!!!3!!"''&'&54$;7#"ؖI$$$GA?d`,,cFU;}YI7ʟ 7c``JxH NGx]g% $54$)!!3!+*(FiNv%FrO:0QI&'&'&'!5!2#!5!676767!5?JGcGK@ 'JxNLȟMOx]I&/'7!5!!5!&#!5!2+4'&'&'3276765 I^Q$$GA?d`,,#FT;}YI7ʟ 7c;JxH HNGx]g )5%2767!5&'&!5(*FiNv%FtFgP:1R, //01!!,wq@gg120!#!# }wq@gg1<03!3wJ}w; ]@    91990@0QVPZ spvupz  Z pp{ t  ]]!! !!5 7AJI3!-10!!ת !#!5!3!!5!--+}ת W+и и и / + +и 01!!#!5!3#-Ө-5+@B10KSXY"3#-\<%?P%73% %#'TUUTUTTUDGrHF103#F=} *@    91903##'%\sB}}`s-Pb;=& 8us=& 8 s %.#"326"&'#"&54632>3"31UfvYRIOF^_HDa+J1CXXjewߦ~XZ /@- !$'!!0 $*0999919990@     $$$   $$ $ ***///***55500055 5 :::???:::EEE@@@EE E JJJOOOJJJV !"&'()]]32654&#".#"326#"&54632>32#"&1TevYR1UfvYRF^_HDa^/XZie7XXjeߦ~᧯wI%!3!~,I%!3IfIA//+к99к901%&'&'3!!#4'!&'7`'JAW`LqR]+X* Pʋs^(Rs57756u5 +  // 9 9 901 7&'7%%'6 676r{EG%y44RW!L!$Ҿ &!L {JP+3#+fJ+ 7+и//9 90137#'PMVo)gnJ+3#3#@+fJ+{//и/ܸи ܸܸ и и// // 9 9 9 9013737##'[P]ME+qd @oxpAn!3# ih^T3 3##"T^32#4&#"#P(*7332653#"RP7*uM>2&#""&'7327~9GA~9G⧅}}uM& I I%uM& I' I% IJuM-6?67632&#"#"'&'7327&'&5476767654'&'SOJMG79GcBnnVsSOJMG79G]InoSu=,EG%,=,HK%DAF7K|oUDAF71IosV/HgjG$4.JhgH$uMMQZc67632&#"!67632&#"#"'&'7327!#"'&'7327&'&54767!!67654'&SOJMG79G~SOJMG79GcBnnVsSOJMG79GSOJMG79G]InoSu~=,HK% =,EG%DAF77DAF7K|oUDAF7$çDAF70IosV!.JhgH$+/HgjG$uMmqu~67632&#"!67632&#"!67632&#"#"'&'7327!#"'&'7327!#"'&'7327&'&54767!)!67654'&SOJMG79G~SOJMG79G~SOJMG79GcBnnVsSOJMG79GSOJMG79GSOJMG79G]InoSu,~=,HK%2=,EG%DAF77DAF77DAF7K|oUDAF7$çDAF7$çDAF70IosV!.JhgH$+/HgjG$uL.3&#"7#'754'&'#"&'7327#4767>32";EY?w^H6H\O3,,HO;E+@/VfmVmHO?u]HH]sM3 gz.VrmV_zuM<%4'>7'7&#"7"&'7327&'&54767>2=,HK%=Q Hl;EYLmHH7'&#"'"&'7327&'&54767>2=,HK%m#6,=iSH;EcHKs;E]InoSuJ.JghH$6B0+@TH?HK|z1IosV32326ian ^Xbian ^V2NE;=LTNE;=K23276767632.#"#"&'gV^ naibX^ nai2UK=;ENTL=;EN1).#"3".54>323265.#72#"&:QHRdhNi\dnx>@HRdhNi\dnx.ttlH=YOHL\}X[lH=YOHL\}W#"'"#322{dfftX{dfftX#*$0!#.5476767654&'30ND:323267#"''cDXbia]yeEVgia`yS LTNE+~F KUNE,F #"/&'&#"5>32326!!ian^Xbian ^VeoNE;=LTNE;=K`#"/&'&#"5>32326!!ian^Xbian^VeOE;=LSNE; =Kkb%&32767#"'!!'7!5!7&#"5>32%H\ iaBP﹉lZXbian3}o -X"OEd8LSNE;I"#"/&'&#"5>32326!!!!ian^Xbian^VeOE;=LSNE;?Kk˪.#"/&'&#"5>32326#5!7!5!7!!!!'ian^Xbian^VLoKɦoOE;=LSNE;?KL˪s˪sB.32767#"'!!!!'7#5!7!5!7'&#"5>327b K`Jqia'+\+zlh>Tm?u2^Xbianc"%]OE˪Nt˪=LSNE;%N;?@.9*-" *19" <-<<219999990#"'&'&'&#"5>32326#"'&'&'&#"5>32326ian ^Xbian ^Vgian ^Xbian ^VoNE;=LTNE;=KڲOE;=LSNE;=K43267#"'3267#"/'&#"5>327&#"5>29+Vgia@LJZVgia}9+Xbia@MHZXbi a KUOE8KUNE; @^ LTNE8LSNE;f@59#"/&'&#"5>32326#"/&'&#"5>32326!!ian^Xbian^Vgiaq^Xbian3VeLOE;=LSNE;?KҲOE;=LSNE;?Ky5P#"/&'&#"5>32326#"/&'&#"5>32326#"/&'&#"5>32326ian^Xbian^Vgian^Xbian^Vgiaq^Xbian3VײOE;=LSNE;?KҲOE;=LSNE;?KҲOE;=LSNE;?K"32?632.#"#"&'!5!5gV^naibX^naiUK?;ENSL=;EOȪ+  %5 % $%5$[g&Y%ZhӦ69%676767!!"'&'&'!5!!5!676762!!&'&'&[C-87VYYW6 8.CC.8d 6WYYV7 e8-,CE[<0[2332[39\DD+N+DD\93[2332[0<[EC,` !5!676762!!&'&'&!![C.8d 6WYYV7 e8-;++DD\93[2332[0<[EC,`' 7 ' 7&  7' 7&  70' 7&  7.62' 7' 7 W63& ' 7 7` 3654'!!5!&547!5!!4434w~0IG00GG2?8>;_8` !!!!"264&'2#"&546HdddeH;k'**z{DbFE``bq+((d:svv`K!!!! &!56뗲`!!!! 3# $c'`!!!!33#$'c`!!!!!!'+]^*^]N䰰` !!!!!3!Np!NNf`07GO!!!!#"3###535463!3267#"&546324&#"'53#5#"&4632264&"?$mmC???DNB&H#$J'`qk[Q_C<17HBB@,I\\I,@p`ctiG6B?9i=$#tu#gSSS`*!!!!>32#4&#"#4&#"#3>32!]?U\Z79EPZ7:DPZZV:;S==:xoHOM]QHPL^P%U20=` ,!!!!3#7#546?>54&#"5>324eeb_--B6'Z0/`4\o$-,N2A+,/-7#!^aO&E++ '>@"     <291<2<<990!!!!!'7!5!7!}/H{};fըfӪL !@  <<<<10!!!!!!ת4!5!7!!!!!!'7!5!7!5!DQ"rn遙RoLT˪˪T˪  )@    <<10!!!!!!!!K T@.B $# <2291/90KSXY" 5 !!@po V@/B$ # <<291/90KSXY"55 !5AǪV 3!! 5 !!@poV !!555 !5BkǪ!5!7!5!7!!!!' 5'`ȉ)P"_=6@ss1stFpo!5!7!5!7!!!!'55'`ȉ)P"_=6ss1stF. 5 5:6:6pr pr . 55556:86:'!67&'&54767&'676'&'{)#Y4JJ4Y#))#Y4JJ4Y#)AAAAGF㞢GGGG➣FG2;;;<<;2;5$?$%5%67$'W eĔd?NĔ])]o& bR)`q% Rd%'%5% >zmzF<˶@6 o@hGp%5'75%7-孈m%˶C@ʴ@hGp/V !5!%5%%%!!'/xvH-rf5LOlUrC@=Vlь=/V%'!5!75%7%5!!' GWb[mmNL>ߪwe=ت=$%#"'&'&'&#"5>32326 5jbn ^Xbh`n ^Vg@ND:3232655jbn ^Xbh`n ^VfNF<>LTNF<>L>)P14%&#"5>32%5%%%3267#"'&'&/' k Xbh`'+kuE%sk ^Vhjbn "Pv1-LTND9ATj͊LTNF<= &TN#wf=J;N} 55 58@'poN} 5 55@'pom`!-%5%%%'5%%5 MM`ZDOA@FZDt@m*_TW&o}䎲w&-r~bUm`!7/%5%%'%5%75%Jvad",,V`bL"_D2,/*/&O{¸[&}P %5$r osaa^~||P 55%$so a||^a)W!%5%5$gV$}]]x|)W3%55%$Vg}$BW|]]RW(%#"'&'&'&#"5>32326%5$ian ^Xbian ^Vg$}NE;=LTNE;=K$]]x|RW(%#"'&'&'&#"5>3232655%$ian ^Xbian ^Ve}$NE;=LTNE;=K$|]]&%5$%67%'Et֋$k}uU)?eKtuu" K 9''567$'567&'%=⃹t֋~}uRU)?Kuu,ަK9'_%!"54763!!"3!슊@^`@ƍ^`_75!27654&#!5!2#@`^@Ȋʣ`^; #";3!!!!#"54763^`0rrndflppꊊ^`&pphƍ3 32654'&+ #!5!!5!32#^`0rrpp9^`phƍ7!!!"'&54763!!"3!Ɋ@_`@,ƍ^`7!!5!27654&#!5!2#@`_@Ȋɖ,`^ȋ '!";!!!!'7!5!7&'&54763!7!!ʉ_`'}E=aLT>scL0R^`5ƍ7 '327654'&/!5!7+!!'7!5!7!5!^`__BV 5cTpX?bLm>U`^`C 7 Xȋ5j )5!7!!'!"'&54763!!"3!.Bqx-qxDɊ@_`@Z54&'&'$  &'&'&547676!!#!5!]\LMLLML\]]\LMLLML\bc1111cbbc1111cbdd''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbee$7!!"2767>54&'&'$  &'&'&547676r$]\LMLLML\]]\LMLLML\bc1111cbbc1111cbתa''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$3?"2767>54&'&'$  &'&'&547676''7'77]\LMLLML\]]\LMLLML\bc1111cbbc1111cbxyx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcbxyx$7 "2767>54&'&'$  &'&'&547676pxg]\LMLLML\]]\LMLLML\bc1111cbbc1111cbpx''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$73#"2767>54&'&'$  &'&'&547676]\LMLLML\]]\LMLLML\bc1111cbbc1111cb''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$ 2L"264&'2#"&54>"2767>54&'&'$  &'&'&547676ZPnnnoO@v+..]\LMLLML\]]\LMLLML\bc1111cbbc1111cbAoPOmmp1.-rB''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$+E %#'-73%"2767>54&'&'$  &'&'&547676C4f4C4/f/]\LMLLML\]]\LMLLML\bc1111cbbc1111cb1XSXYS''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$!;!!!!"2767>54&'&'$  &'&'&547676]\LMLLML\]]\LMLLML\bc1111cbbc1111cbj''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$37"2767>54&'&'$  &'&'&547676!!]\LMLLML\]]\LMLLML\bc1111cbbc1111cb8''LMmjML''''LMjmML'dbcwvwvcbddbcvwvwcb$!%!!!!#!5!QX>ddYee$ !!!%!!rPX>ת\$   ' 7 %!%!!=kyykyjjX>xjyjjyk$$ 3#!%!!aX>J@ <1<033!!upJ!#!5!3JI!#!5IssI35!3!|33!!Nup| !#3!!!!.NN$J !#3!!!!.$J !3!!!#3GupJ !#33!!!#3.GVfupJ!#3#3!!!!.cGGf$J33!!!'!'Ssj\s=u5Y6pJ!!!!'!#3!7!sjshxj56$$J!!'!#3!#3s6s=5Y6puJ!#3!!!!!'!#37!s:jsjG$-56$ 51  ^ bb:d 5! 5bd 5! ^bbb:yg62"'&'!"&462!6"264S몧Q3Q3TW4drOOsOOSQ3CB3RU4CDPrOOqyg"&462!6762"'&'!$264&"aS몧Q33TW4QrOOsOSQ3CB3RU4CDPrOOqbgR 7!6762"'&'$&"26b1[륢S4OsPOtO.D/YR3BPQqOOy;d 3#!!#3%!5!( 󀨨 ds <!##5!#T~N 35!3 3#K#"T^ !!3# K@ih^T !!3 3#K@#"쪠T^~ )3!!&'.'&ZVF%,E=Ώ?~%FVZDA?=~ !53*,Ԫ֪w # #}}wJw 3 3!#wJww@ 1@ 0"# #4$H̭9B( w@ 1@ 02$53 3H4CC1 (B9#u)HF 71  !!'+]^*^]䰰'B  ' ''ٛ>PNq^D^'B %  !'''tNP^D'B 5  5!''6bNP'B5 5tN>]P'B 5 'Nt>P`32?632.#"#"&'!5gV^naibX^naiUK= ;ENSL=;EOȪ^ 3# 57Ѧ^ 3#55=d//m.   5 5 5 :6:6:6pr pr pr .  5555556:86::6:.  5 !5! 5?@Npo. 5 5!55?ްop9 %5 5!@op9 7 5 !5!?)W5$%5$Ti}$_|x]])W5$%$5iT$}B!]]|!&!%'&'57&%5$%67&%7*?;i@]0qw^%KA6#(AF+3273267#"'' 5cCXbh`^xnieEVhjb_zl]@LTND*F JVND+Fpo"%&#"5>3273267#"''55cCXbh`^xnieEVhjb_zl[LTND*F JVND+FͰW&&#"5>3273267#"''%5$cDXbia]ymieEVgia`yl]$}. LTNE+F KUNE,F]]x|W&&#"5>3273267#"''55%$cDXbia]ymieEVgia`yl[}$3 LTNE+F KUNE,F|]] 7%'%5 '瞃۞L О  @Y8@\9@a ' 7%͞G۞О@?Y@<9@}5!%57%!!'71|Iv\' :qߦ[@Z8@_}7!!'7#5!7%%%9Jpv\]FGjq8@ǹ@. !!#!#5! !'7'7!!5!5!xwxFbxwZwx# %! ! ! l(+R[SrvvP #53sàȖ0kTs*3#*P- #5sȠ-Tk0P 53ȠP*#0P*.P- 3#àȖ-P#!!s#s*3#*P,!!s`,P!5!#UP*3#*P,3!5!`,X #4763!!"]oeD9יfV],#'&%'53 763<(enK==Pne(!<  _AE_  <X> 3!!"'&5]9Deo>ܚVf]>#3]J] 4'&#!5!29Deo$VfX,&'&3!3#76l<(enP==Kne(!< _EA_ <]> 3#!5!2765oeD9>יfVu(3(7@% !!!5 5!!37d  hrv! !! $<Ff +   276764'&'&">  &vvrn66\]]\6666\]]\65kk\SS]\6666\]]\6666\!>32#"&'#'%53%&  s:{{:!8#!rܧ$daad]chaam@j.!3!3:^ &ۺ+#+#+A&6FVfv ]A]A]A)9IYiy ]+ + $%+$01! 4$32! 4$#"35%33!??qqW|A?rpG~+/ 8?+3&+3+A&6FVfv ]A]A]A)9IYiy ]3и/A&&]A&)&9&I&Y&i&y&&&&&&& ],9+ + +0)+001! 4$32! 4$#"!!56$7>54&#"5>32??qqWO\R!>/_N;sa=0>A?rpGM"?U(?N&:$}:iF D+B5+B+A&6FVfv ]A]A]A)9IYiy ]A55]A5)595I5Y5i5y5555555 ]5B9,5B9,/A,,]A,),9,I,Y,i,y,,,,,,, ]ܺ&9;9+ + )"+)?8+?2/+2/2901! 4$32! 4$#"#"&'532654&+532654&#"5>32??qqW v@X[}DuskcZX\[4yk_=hA?rpG]0OLGN<:,+>2+201! 4$32! 4$#""32654&.#"632#"&5432??qqWN\\NN\\Ta/w N 5jA?rpGb[ZbbZ[b#P =  "#/$/ܸ#и/A&6FVfv ]A]A]A)9IYiy ] 9!9+ + !+01! 4$32! 4$#"!#!??qqWkQ1A?rpGK '?K +=+1F+1+A&6FVfv ]A]A]A)9IYiy ]A&6FVfv ]A]AFF]AF)F9FIFYFiFyFFFFFFF ]%F19%/A%%]A%)%9%I%Y%i%y%%%%%%% ]+=9+/4F19%7ܸ+@+ + ":+".I+.C+C4C901! 4$32! 4$#""32654&%.54632#"&546732654&#"??qqWT__TT__jivvWQMKRRKMQA?rpGPIIPQHIPIvSttSv\\=BB=>BB 4@+>)+>+/8+/A&6FVfv ]A]A]A)9IYiy ]A>&>6>F>V>f>v>>>>>>> ]A>>])>9A88]A8)898I8Y8i8y8888888 ]+ +  2+ ,;+,5&+501! 4$32! 4$#"532676#"&54632#"&2654&#"??qqWUa.w O 5kN[[NN\\A?rpG$O <b[[bb[[b &2>+#+#*<+*60+6+A&6FVfv ]A]A]A)9IYiy ]A00]A0)090I0Y0i0y0000000 ]A<<]A<)<9<I<Y<i<y<<<<<<< ]+ + -9+-$%+$3'+3$01! 4$32! 4$#"35733!"32654&'2#"&546??qqW͞u>@EE@?FF?A?rpG>>'*6ޗ{5!!X3 2!@ 2 5!!5!!5!4)4𬬬 !!!!!4)4XXX 333 Nf  !!!@@@ Nf  53353353353𬬬 3333333XXXX 333322s's' !!!!@@@@22s's'!!!!\!!#!!#\!5!Z!!X!5!$Z!!$X3!-Ԭ3!-.*!!@Ԭ!!@.*5!3,,(!3,X5!!@,(!!@X3!!- 2Ԭ3!!- 2* #!!!P@ZԬ 33!!P-#,Ԭ!!!@# 2Ԭ #!!!P@.* 33!!P-#\*!!!@# 2*!5!3,Z,!!3,X !5!!#@PZ,( !5!33$,PZ,!5!!$@Z, !!!#@PX !!33$,PX*!!!$@X!5!!Z !!!!-XV !5!5!!,ZV!!!X!5!!$#Z !!!!$#XV !5!5!!$#ZV!!!$#X5!3!,-,Ԭ !3!!,-XԬV 5!3!!5,-3,*V!3!,-X*5!!!@,Ԭ !!!!@#XԬV 5!!!!5@,*V!!!@X* #!5!3!,-Z,Ԭ !!3!!,-XԬ !5!3!!,-Z,* !!3!!,-X* !5!!!!@Z,Ԭ !5!3!!$,-#Z,Ԭ !5!!!!$@#Z,Ԭ !!!!!#@#PXԬV #5!5!!!!P$@V,* !!33!!$,P#X*V !5!533!!$P-#ZV* !!!!!@X* !!3!!$,-#X* !!!!!$@#XԬ !5!!!!$@#Z,* !!!!!$@#X*5!35!,-𬬬!!!-,XX33*!!@@*DH5!5!xX333x 2 2H !!!!-Rx !!##xmsZxH !!3!!xm3-sZRH !5!5!5!,NX 5!###lZZXH !5!!!5!4l t,ND 3!!!--Dx 333!x,ԬxD 3!3!,(D 5!5!5!3,,D|X 5!333,,(DX 5!35!3̠| 3!!!!-- 2Rx 333!!xs 2 2Ԭx 3!33!!-s, 2ZR !5!5!5!3,,X !5!333xtZ, 2X 5!3!5!33t, 2H !5!!5!4R 5!!###sZZH 5!!5!3!!t,-sZRD 5!5!3!,-DX 5!333!,,ԬD 5!5!333!DX,!5!5!5!3!!!!,,--R5!333!!###s,,ԬZZ !!!!5!5!333!-s t,ZR, 4763!!"Q[yY[`~| 4'&#!5!2.-Yx[Q`~=?x 5!2653#xY[Q[~|2Ψx !"'&533![Q[Yyx2|~>3m 2>#3> 2> # # 3 3>ݲ}#$cc|5!F3F~|5!|iF3P|!XF!@F~|!|iXF!@P5!5!!5iVV333PP~P!!!iXVV#!#P@P~P;( ;!O;!O ;!O;!O;!O;!O;#!O#;(!O(q(!((!((!((!'(I(!]((!((3(:( ' q( #'+/3!33!33!33!33!33!3mnmnm 4('/7?GOW_gow5'#3%5'#3%5'#3%5'#35'#3%5'#3%5'#3%5'#35'#3%5'#3%5'#3%5'#35'#3%5'#3%5'#3%5'#35'#3%5'#3%5'#3%5'#35'#3%5'#3%5'#3%5'#35'#3%5'#3%5'#3%5'#35'#3%5'#3%5'#3%5'#3(;(!%)-13#3#3!3!##!#3#3#3#3#3#3#^^(ll(lm#;( #q:( !&9 '( 9(& &  9(&  9(& &  9(& &  9( '9(&  9(& &  $! $!!!,7r+uv ))xxp) )$7632#"'327$%&#"%632#"'~~~~eMM>yJJJJJ6````qq|qq#u"@91990  9%-p) 327$%&#"%632#"'MM>y````qq|qqr' '/7?G%&'&'6767&'&'7%'676727"'64'7&"'62&47\+;.81F9K58.42d;E9G,:.80G9J6&8.;+d1O9FLL&_`JnLL'`_n<1& j(0=Ju &,A=N:0('<1& j(0=Ju &1<>EB0(n_II'[[JnII'[[p) %/36%632#"'327&#"6767&'&6py AAAA,+-,,-+A@@Rqq|qq%%mܱ[0$ %@%|"p) )73276'&#"7632#"'327$%&#"%632#"'r99:9rr9:99XWXXXXWXMM>yB!!BB!!oe33eje33````qq|qqp @ 104767632#"'&'&pihѵhiihҵhiѶiiiiѶiiiip $32#"$27$%&#pkk<MAk^a``p $32#"$"3pkk<MAk^``p $32#"$327$pkk\MMAk^>``p $32#"$%&#"pkkAk^>``p $  $"327$!pkk]<MMgAk^```p $  $"!pkk]<Ak^`p})6%63"'pRqq)#2y|q*q( 2654&#"!|~}}|v< ( $%632#"'327$%&#"!IMM>y_O````|qqqqH( ( !#%&#")%632OyyMMqq>~``  3327$3!#"'$@1>qq``) %63"æqv`) 2#%&#u)q>` 527$3Muyv`>q "'$33yuMq`p)%632#%&#"puqq>``p03327$3#"'$puMMuyy``>qq!$ !$ !$! !$!$3! 2654&#"4632"&nȊce;~|ddcc||}$!%!!d r<$!%!!We r<$!%!W7 r<$!%!W7 r<$ !%!!!!+c,b r<<!$ 462"! W|VV} ,|VV|V !$! c  !$! b  p(  7& $  %;<*X֖$ !!!!!!,7,rWb<)) Ie$ !!!!%!!,crWbM)MM^??@7`d?\gOOOOy>*<?v^h"3263#!5276;'4?'4?26u'6"gP39.4! '*C0.xV#m14He '1l1 Z+dd?33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5:+#9,p!j[%+ > 7VCCc":8}V .e3B=Se` e9*=9 3@=}k %C`:d;emu}'S3273&'3327&'67&'67&'67'32654'&'2327654&#"3672 $54767&'&47'&327632#"/#"57#"54?'&5432'&27632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&27632#"/#"57#"54?'&5432'&327632#"/#"57#"54?'&5432'&27632#"/"57#"54?'&5432'4327632#"/#"57#"54?'&5432'&27632#"/#"57#"54?'&5432'&27632#"/#"57#"54?'&5432'&27632#"/#"57#"4?'&54327'4327632#"/#"57#"54?'&54327'&27632#"/"57#"54?'&5432&'67&'67&'67'&327632#"/#"57#"54?'&5432'&27632#"/"57#"54?'&5432'&27632#"/"57#"54?'&5432'&27632#"/"57#"54?'&5432'&327632#"/#"57#"54?'&5432B~ %<z*+')+(@&'$||e<-A}]\B-71SLoWj\vLL)(0/ (( .1(%%,* # $ )*f$% +) $ #*+f%%,* $ $ )*  \o  [ %)#&'%&)#`#$ *) $ #+,U  Q  0 E%% +) $ $*+&EC&V*,)-)-*,%&%&fБfU 3HhfeefhH2pu^QFs棥sKQGh!99!  !77!  4 4 22 K44 22 22  11                   7        %&%&%'%&%'%&22  //  g               44 22  ->O`q +&'&54?632332?654/&#"2#"/54762#"/54762#"/54762#"/54762#"/54762#"/54762#"/547672#"/54762#"/54762#"/5476%2#"/5476%2#"/5476%2#"/5476D.2`{4&/<) e>O ,4H3R 07K $   $   #  #  #  $   #  $   $  U $   # " $   #  7Q=KG<s-8PZy9z _e""#/2dt0&2j ,: . 4 . = ,  ,   -  -  -  -   .  .   ,   -   !! WV9`8 !! 7 ! !WVDu9`8N I 7%7&54769 }V&7A 6$ 8'^4? !2 7%7&547!&'6I@Y%14HFS"="l-2DC[9 &! 4$32 4$ #"&54>2JJhhq0^mNMn2Z^Z2K7iwBNmmN1Z00Z} C"32654%"32654&%#"&54767654$ #"&767&54! ggJIhIhhIJgg[ZQoy y}WZ[zADgJIggIJggJIhhIJgU\\Q srW\\^} A4&#"26%4&#"326! 547&'&632 $54'&'&632hIJgggMgJIhhIJg#@@z[ZW}yOOyoQZ[sIhhIJggJJggJIgg ][[Xrq Q\\} "32654&7#"32ɏǾ/`T_ȐɎ;P12Y}1"264&"3264#"54327&5432#"'&'3xyx& کZTdIU  k#5AMYer3#"'%&547654'!#"'4%$53!76=332654&#"#"&54632'#"&54632#"&54632&'&67632#"&'&676'.547>'.76$6&'&54%6&'&6>#"'.54>32#"'.54 [$gi< D""D =if%LW쥨驧r^]]^ !! !! . . *)X,),*))+. } +G  G+vKK9__9KKݧꧦ]]_""""s!!""W&. - . - a)," "  ))    !) /     p%-5AMYdp|5#!4'&'5#2#"&546"264"264"2647>'.7>'.676&'&>&'&7>'.%7>'.676&'&676&'&53!76=3%#"'676%27+%&547654'7327&'$%'#327%654'&54718楣. . . .  - -Y - -))G))))U*)>- - ~- - VK; yA C0B Ax ;K'6FJ> $06# >JF6&@@1AeA1@@H磤椣筁 . . . .E - -- ,1))),(9)())u- , - - G77W6 W77G D&& ee˥ &&D "(=pp=("u !!'!Pn8hv "!!'!##+572367676MoL)>u eI3?ba8hA:F;/Itxv !!'!  ##' Mo_h[ei[i8hi[ef[l[@36273 ##'5) U.WW1@ US Vdv#,5>~3+&=43+&=4%3+&=43+&=43+&=43+&=43+&=4%33 #&'&+"'&#"/573;2?"#'57#&'#"#5676!5\:V\9\:\:]:&]9[\::+#9,p!j[%+ > 7VCCc":8 #8d#7$6$8;$7i$7 #9pPL  )Z. ;6ZV Z3%Y63 .87p  3DMy!674#!!6?676545&#'323276767654#3#&'&'454632767!672!&=75$/563&43!32+'!67#>54&53# ? I :W0 96;E,Q 2:&l6x0 bm! o۸"\>%Ef~e2U6g!6V#p5C+ C ? P9 @7H4XmM7RV /M(=H: ,qLUD)8Wqke-Pex NW =$ U  /0c)H?2@[nDF8T$.J? !' !T4XKGwL5_K !'7W4Z~wDS&5476322632%632#"'&'#64'#"'&'&54654&'&54767632xJX%&XA,B:\8 [EMH95##Fl% !9@!#jL p_Mi#"?8" %lF##58HN4hok@RRr*%te BB9'7*$%) "fXS5EIf" )%#,7'9CB >E3#"'4332327$'#"$4727%672567654&5&oJ7.b9M D ,B3 qY 5**]d=HN9% sW$,J ]T-MMm@ed: ,'Z M'cM&T)$$ < I2%!"&54676737#&'&54>;7!"&546767!7!"&54>3!6763!26P+=6/2D>R+>2,+v*>>+2  ,2 =,2  =,3>,2463!2!2#!!#!32#3#!>*v+,1>+R=D206=+P#,>3,=  2,= 2,  2+>{"D%4&#!"!0#"3!!"3!#";#"3&'6737#&'6737!"'67!7!&'63!67!2I0!6OS SS: SS>SS]]J]]]]h\\, Bv*>K%39LKIOKHLKIhghghghgE?-L!D72654'6#"'4#"'54#"'54#"'675674767#%$4:JILLHOKHLKIhghgighgD>-sJ1 b6'SS cRR SS?SS\\K\\;\\]]!A*>K{!C%254+'3254+'!254#!'!24+!&#!"463!!2!!#!3#3SS?SS *vA!,]]j\\\\K\\IKLHKOIKL93%N-?EghghghgiL!C32=732=7325732'654&#'%2&'&5&'5&'IKLHKOHLLIJ:4$N->DghgighghSS=SS SSb SS'6a!0J)K>*B \\]]:]]J]]}O &*.26:> 3656;2#'7+"/#"'+"5&54775%"'5476;25'7&56%635&56;374765'75'76=4'&+ +"'4!#"'4543$365&5&#%#754'&5&&547'5367&547+&'&'735&2?"5%75537'7'3533553535'32767&5%2?&#%55'5757757751:e,$?F?Y>F_LA3ELH3,8LYLlEF'!0< k#gF  EeY!! Gp&iq.8ZN$%`BCf F4"4._?ee3&{E(1-+$Kt8 -  $Gs sM rEF"2 >_plTErf^5.>=9|5"-l)d ,&>vv]cccWpC-+ d8 Bpp>W]oaxvuPp82,D ^8, ^B$K+ "1R[+e*; 2 W QP I&? gpo% w ^SA$ 2 9i-5n02 Ai&IY^P]D%\??\OWC ,,1 /211/=;7777=321811{908hN%b\Dh,)h?17I21!122223 21&2%2#"'&=477654'#"'5473Bq4|l anN ilm b 9 b؍MOb>YaYƮ58l7P P@ $0<FX + &=6&# 3 6=%&#"';27!5%67%!&'&'2+"'&=476r cR~UY082.ԍ_W_V"+}IR8D).P9H'S]ٱZYHYoX(I_ ;.2lOP%.G6R%&I8d)Nl>54'67&54&#"&'632.547#"'&'#"'3267654'7327323.#'654'567654&&5476;'&'%&+"#"8DH$$yU ?L[>!WtJ([Fho*m.2\=w\`|UP7:/E" @7?EP]Eix pF@T5ym,"&eB@q(A _% #+B7!N &".OS$XE/K(Aa]dLP*'FCaYr=C44mo C (FKWYFvbph'UD'R< $d#+?Vm#327&"#"'7'632&'$54#&73254'&#"'5&567#&''5$'67'654'6'5$'67'654$'67&'654'''5$56732#"'&#"&'$'63&47"7&'7&'7&'7&'54'6546767675477&545?&''5&#" '6%35&'.54>23#67!&#"W  OB7[l#> F_Vh " "@.,=6tJ4Vp1EQJqMi vhpHI!:JJJ =4m\8B*?o v!"t,`s&*_~P1>5='g=>24<+-s[,*&sd1PT>3J@='h<42J-H#*YT_Y)*)X^TY*$D  ?>}>  *0t"J.  &b54CUE ''!`9 !,(MTE *! }q~=/+)f[4f !B" <@0&9c?"V+GoMK~a? }b9e\ P&0@k"?c*GEJX ?e}9 \4 \6 '''' 6\ N(&'65&'67327&+!65+"3yyys{w ccޱqXeXc6 6 c ,35'533#3!'#'5!5!5#53!5!5#!!-ʷ}} ckvG G @<<3ffX苜qXGccGJ 326&#!2+73 ### 3(ttvgnؐB(33#!!#'!'57!5#'5735׫$"q~q+!#!573#'5!3!'573!#'73!#'5;jjŠJss<wѡIjj8/w{,32#' 3%+ &5%6323'#57'53^VQ6>ѨABؒ6ʞG2k >Y3~||~Obs32732753"'#"'4323$4'5;+"'#"'53275'&'&5?5572%#&'&5%634%476=%@.!%,BE,#!-Q2" $nL/PuHED832#"&546324&"26%! !  Őb{=&*<<*(;E;R::R;KJ67Ϛ{ɬ)::)*<<**<<*):<'L67I&' &' &' &' &' &' &' &'  @FLRX^djp3264'&#"&47367'676756273#'#'5&'&'7&'677&'67'%%&'&'%6767%&'0/CB^0/AC/pkTcR|'N(OfUippqUfO''NQaQh!$ b)dLQk KRt!% c'd&//^000'N'|P_PfppoQ`Qy'N'P\ QgppmQ \Py,  M N>&`7" bK*V&"g{ M M %1=! !  54 #&'&#"#46324632#"&%4632#"&67KJ]_EASvwSAF͒D10EE01DD10EE01D7IL6a]U@SS@U1DD10EE01DD10EE %1=! !  54 3327673#"&4632#"&%4632#"&67KJ]_F@SwvT@E͑D10EE01DD10EE01D7IL6a]U@SS@U1DD10EE01DD10EE %1! !  5# '&'32654&#"32654&#"67KJ;lWPihQV<=UU=-1\ H0e%FKSwZGr=;=NN$E| 1 ?'_>?@7`d@\hPPPPy?+<>w_VG{?,rCA+ +"'5$76%&'547327676=&#~jt1/Q}](+VRxbO P >nS]] =fP+! &56;2'5$%75#"3ui1.P~N](7P,VSZycOpO >S\^ f0:1>7#'#53'&'&54767&'&=33676=3#326'&i($lm$(($[Uu&tU[$&uU[[UV$|ddb e|$% ZSSZ %_TYYT* $4&#"326&5432!!##53&w衤礡PP䤣L~||* $32654&#"%#"54767!5!33#b衤礡7䤣L~|| $&$76+"'&5'476!7!ttsstEus pid5s qttrtt<֤ꧦg\ulS5264&#"#43233#!5 z{ym㗗y{(|j#53533#632#4654&#"#*jjoon}mZyH{zF2 1"32654'#"&4767!!53#5!!3!!#3!!pOO87O:=0LmkL/>Λ2  1O79NN970LؙL1KӘJJ-'<%#5#535&'&'5'73'3#'73'676=35'73'33◰zhNgeMjzzTThOʍ7NjYYӖy?! #!!!'!27674'&#.d ;6zFH%QM_\ǃ$P<]$!#"#&5463 67!2#654&#"V⩁"T]ts]U"X"1((1"u." 6&'67>3"#"54767&'&#52&͕LVa{.+ؔ)0zHUM\&ϖ=Bll)'ҕ*l8lB=j&'5 %$ 56?63#'[Wtutu4ZZ//[[5  @Eo&<"3264,'532'&54632264&" &$#"#"&547>B_^^l;͓hI^9l:͓hI (+|TlgMLx)+{TlϔgMM M>54'.#"32463227#"&5454&#"#"&'&54767632254&K2q'$#K1o'#0ߴGdAoc.% 3t88bWDs-Kx68<32>32#&'567'45'#&+"#4'3>$4&+"?w(K>R0D32>32gYYYD,.:?#)v$E?w(K>Ro}vvxJvaAjtAO]ƀwϧ!5!3##'!5!~2k<@i8080k<j)127632#"'#576&#"4'5267>327&'"SkQmyz,~zi2@:$(.-)zW] ݾgvx-aX[&ŝ9{'Q32263227632&#""'&#"#"'&#"#'3232762327632&#"#"'&#"#"'&"#'Es- p86rV+)|m^?_354.#"!&'.54>325467675#53533#63232>54.#"P#3JTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++--JHNRh|&'4>32"'4>32&'4>32&54>32&54>32#!5!'!567>54.#"32767>4.#"327732>4.#"327>54.#"732>54.#"M_ 6694S55.+C55C&.66 V\+55 c$M##$ 6$#$s`%#$d0"%)h #"#_33@]22-"40446/*33UJ"+33^1/K=0T* ####  #&$$&##&$$&#  B #### *"$$" U!'-2!35!#3!53573#'5#5!35!75!!5'57!s\\ss]]s JRRIJ~֛E77__vtt4!v7CQ^&54767&'&'5676767&'&54>32! 535#5##3654."!2>4.#"  <$))+N-N*)N-M,**%:  @ v<-MTM-?K5:66459<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6uN|l||l|-I+N))N+@6:55:5Q)5>o654&547!&54='&'654'67.5476;+"'5#"=6&'76767%25#654&'Fz-6 Z8. ,N0H!h6%`+EH )#M ;,Jga#iR k' M +1^hgo8:(@s.Pmz nx?.#1p#41`&>%!ac,,LHJ x}647| + OJJ)!0 P[32>4.#"32>54.#"!5&54767&'&546767&'&4>32'&'.#":e79e89f76e`[S &(*UM,N)(N-KV)&& \@ECApd88dpg669:%N&KRS* 'TM**MT' *SRK&N۠:9}qyyq}c $Tdhy67&'&"!3!67>54.#"!&'.54>325467675#53533#63232>54.#"!57!&'.54>3234'67632!P#3JTRJWVJQSOMJ4"?*&ElnhPL$ llill %LOhnlD')----s=BDw@>=))==AwDB=+)QPQ((QPQ)+/ 6klj$?6FWWF6?$jlk6 }++-- !yCB{C!$$!C{BCy! JHLP&'4>32"'4>32&'4>32&54>32&54>32#!5!5!M_ 6694S55.+C55C&.66 V\+55 c$))_33@]22-"40446/*33UJ"+33^1/NNOOU%)5!5!!35!#3!53573#'5#5!35!s\\ss]]s ^^/oo#E77v4@4767&'&'5676767&'&54>32!&535#5##3  <$))+N-N*)N-M,**%:  @%v<5&?HPPIK* ')+K**K+)' *KIPPH>&5<:6n5|l||l|L3?HN654&5473#!&5454'+#"#7&'654'67654&547;2547#";65'"3%:U"-6 Bu Zg0krX0c-h8E+`%s H>4wM-'9.QY / o8:qhPSmh #%Bz1"0@)5"@YR0.&54767&'&546767&'&4>32; &(*UM,N)(N-KV)&& 9:%N&KRS* 'TM**MT' *SRK&N۠:9C##"'##56'##"/547?^'5@_*SU&/UL ;Yԧ9UP(` XI.s222732#&547636=4'&# #4'&#"*t pz&=<xQ>hG:V Hek%PF5NP B|-&pA&NFX &&5 <F:^;" V gdG7236;2"##'65##"'&5476;235&'&=476e x<JT`(GeRUdfB3 VNTMT,P$ 66$0_ u3dUdt_}s*$"Rt0XX__/ik=ZG8*F 1 . ъf)MC =g9EkO 9!(-);&  ]t!y" & 2| ba$ U+  #8M35733!&54?'7'327!!"'&%#'7367654'77'7'&#"'676ի,&T>=c#]K9.U:1ʈ%`T?7>54&#"5>32&54?'7'327!!"'&%#'7367654'77'7'&#"'676]T@1$J=c#]K9.U:1ʈ%`T?32&54?'7'327!!"'&%#'7367654'77'7'&#"'676Z _3lFHe5^\VOosHGJI)`VKm1Sj,&T>=c#]K9.U:1ʈ%`T?=c#]K9.U:1ʈ%`T?=c#]K9.U:1ʈ%`T?=c#]K9.U:1ʈ%`T?=c#]K9.U:1ʈ%`T?=c#]K9.U:1ʈ%`T?32#"&e|e(<X<ħñ"32#"&$2#".46e|e(<X<ħñ"@<#"4.#"e|e:<#"< !<"#;zch =B4.#"$32>4."e|e:<#"< !<"#;"< !<"#<@;zch =B54.#"##"'5##"$'&'0!5!5&'.4>32!!676767'%''H&(G()G'%H(%'V W3WImuw>DE}AB|GE=md^JW4W Vs'H''H'(H''H`XAK|@X1(ԁ3"|}DD}|" 2/ "1X@|AX1# / 673&/'67 &'"&'6?&'3 ' K[]><+Gg['fBBe&\h?(K?]\K !;32T $ #AC,MMMv A5p_9D-M**  B@0"@R//>wA&oc/D&3.YaQ/5"1'"uE62/u= =!m- .... y 7%  %  32+#".=!"&'&'#&=4;7337_% 8)0/_^^M^1/ 9534<&&<&*(D>?GGzB6C{GG?>D9/C}&632#"&'.#"'#!#!#Ҹ62K#+~KF0R!9'/Nx_TV_T 'NQ9;:#8HL"CD|))Z) 532>4.#";267#&=&$32735&'.4>22[02[24Z1/[)'5*+X A54.#"%2#".54>''#/'7''7''7/5?'77'77'7?3777''H)(H('H((I\Hs=]SH$e$HR^323#67#&"#"/&'&547&#""'6%676V n*[n%'ZxL0<{2;&b;0&8a>!U*~EmLK}`? {a7c[ O&0>j!>a)E~CKW ={d{7 [+M57LL75M-Z '*''*' Y (5[ J5( \d (5J [4 ''/7O_2#".54>&'32367&%2327654'&''67&'&'&'676765467654'&#"7>326323#"'##"'&'#"&'&54767&'&54767232&'&#"6&%6767&'&'&#"676&5467&'&6732767&$$$$OG3%V cc V%4GL944m/122102/.303112.OF}6&V e"w?>v"pt #87! vn":;@A<:"nx !66# sp%./13/.UVT\<>"$!! !"#">kc V &6|FO 93399 <>#"#><  "$ZTU./43..V5$##$59gT;&'9Z^^Z9'':Tg9'(''&()I8:9889: Z_59eU;'( :8.>euvc>-7:bccb;7-?cwud?/8KWZZW **D@@D+8(':Te95^&)(&''(DA:AD.*!Y[[Y!& !-x67&'67&'4&6%67.'%4'6&#"&'6767&54?67&'&#"#&'#&'5&'"'67&'&47632>4.#"%2#".4>'7,3 3%/0),7=*#0*+3.22'8  YfT,1'').UfY >98 "2 B2;F_ XB?2C 3" 894ihgikce"S[XVWXZ#ejpMcNTvJKrZ1VlLWMI p jk%nA V{ww[11[ ww{V @#fd-#JM 7B/""0C7 NK",df#νhhοggQUXXUd %3!'#!52#"62#".54>" h9|M463%&$$5 O Dn; $$$$33'554#$/[QwGSGUW GJGX .5CK&5432632!!#!##53&4&#"326!&&#"327&54654'XP}}P~C;7?_Xej;A>7'sssLFF~||ב-  䤣lrrq)-5DL&'&6767&'"'&'&'&5'476!7!! 76'&'&'6'&utss-5 l&kpid=pDi/tEust,2}ts5sqtt-ԛ1 k&iꧦ g\}ul  An?\27/rtts,͓}qt)8GO'"'!!##53&'&54326!7!&'&36'&&5'47&#"327674'U`P}zpidu>7;C˂;C>xtsK) ||LGD g\uls螝՞䤣hkrr .4&#"326&54762!7!!!##53&w衤礡ᩨhn&䤣羚 o[tꝇ|| +D#"'&'&'&47>76327'7'%'27>764'&'."(F3"D"&%#}bV`ZZ^;D"&&$[X]:3G9:]:F=~=HS]^X&% iiD^29i\=<<92-1X?:<91*=X62'%'!!#5!5!5&'&'.546767''7'''7"2767>54&'&'&4p69].(EGGE@Z-<81VDEGFF'19T]9T:G5>+.11./:95>+.11./:9 \2:a(Eb_E@( %CE_bG(Hij:ο\ij+.wBAw./+.wABw./4+F!!#"'&'.546767675!5!' 2767>54&'&'&"<-Z@EGGEDVRbfNZ@EGGEDV18kbbjC9:/.11.+>59:/.11.+>5疑 (@E_bEC%##(@Eb_EC% kajP/.wBAw.+/.wABw.+ +F####"&'&'&54767>32333'7 '%32676764'&'.#"ܖU (@E_bEC%##(@Eb_EC% Uܭkaj/.wBAw.+/.wABw.+<-Z@EGGEDVRbfNZ@EGGEDV18kjC9:/.11.+>59:/.11.+>55 @  10432#"732654&#"陽…5 @  10432#"K +@kk k kKTX8Y104632#"&732654&#"ϑϑϘuSSuuSSu͒ΐSuuSSvvdPK!)7eK RX@ *.,&"($ k3,k($kk8991@&"6k0k 8<2<299990Y4632632#"'#"&7323&547&#"%6547232654&#"dϑRDDRϑRDDRϘuS?>Su^222Z>?SuuS ͒!!ΐSuXqpWv28ML88LM{WpqXuSSvTZ`z8Rm3#"2767>54&'&/2"'&'.5467676"2767>54&'&/2"'&'.5467676R#)$#R#$ $LK:C.25521@=:C.25521@=R#)$#R#$ $LK:C.25521@=:C.25521@=zZF)(JG()K.2IF21.2FI21F)(JG()K.2IF21.2FI21 J7Qk>767632"'&'.'!"'&'.546767632$"2767>54&'&'$"2767>54&'&'#61@=HK:C.25521@=:C.5%'21@=:C.25521@=HK:C.6#R#$$#R#$$R#)$#R#$ $5[51.2IF21.4`]21.2FI21.5[F)(GG()FF)(JG()KR 5%%%xr6׊eMM^xxV)7654'&'575#!&54767'5!s_vR$N::N$Rv_{aT,X@X,Ta{4b\)1%==%1)\b4ߴ:`\KDDK\`* 4&#"326&'&5432#w衤礡$PP䤣L~{lPj'#"'&#"'&'&'&47>7632327>76&'&'&/&'&'&47>762!2!%327>764'&'.#"&#"327>764'&'&s* 0$+$$$ 1#*# ZaZ%% NT12 4 #HH  ")mROeb  , 0  +   ) . $J . %'.D"&B 1 $C mR )Ky    !   V!Edz267>54&'."#"'%"'&'.5467676;27>4.'&+"'&'.54676762%632$"267>54&'&.&&.&m,mQjP(!N!"(! aVf&&bZ55!("!N!(PjoQm,.&&.&q    l?W,>&#< A#"< " (( " <"#A <#&>,W?~    lOOj3!#!"'.'&47676?6767>'.'&#"#"'.'&47>763276;%32676764'.'&#"676764'.'&#"32eOuRd2!  HH# 7   ZTN +Za21#+$0 4$$$+$0 's  *   * OK) Rd#!>& 3"9*$"D. ' - D! 2 . , T% #: & (  IZx-4H67&'&'&+"'&'&'&476767632%632 #"'%#"'&'&'&54767676;276276767654'&'&'&"276767654'&'&'&""'&'&'&547676762"'&'&'&547676762'&'&'&547654'&'&'&";276-&#"+"276767654'&5476%327%&"'&'&476762I  Q\C--%("(/*0.,+"( /X]\9<\X/"$)0*3')"* %1*0CR[        22 2 2 2 %'   &J  &%C\d#_*]OhXC%&  J&   O]*       ")&`&"'$"/' <%ZS  % SZ%< /'* "%5"-($# ;8\= !  !  " /VC "  !  !  [uV/+    V^au 767>54&'&'&#"&54767632 '.5467&54732#"#"676767#"'&#"'67654 ozwbda_f_zx|wbdaM,krnulspsnunNJ*D$ lQ$" 6*D?"5'K(2- # >   :72 331cd툍i`4331cd퍇>mwn<;;8ro졘wp:;;BV0/M8:D@*|sa  -F(7 "*=8&0!2  1-5$& 6:B4V^ (B\w.'%&'&"632%6767>54$2"'&'.546767" 767>54&'&'&'2 '&'&547676?'*&$ 1$-+h+-$F3782**?1 $&>>9|wbdabc`zwbda_f_zxspsnunˎspsnulwI_"2[$  "" gI $[2!v 55 55 31cd퍅caf31cd툍i`43d;8ro졘wp:;;8rown<;x,A-57'36%33#3#!2#!3#3##$'#7$@d5{sVd]F0 0F]dVs{5⒒d@( jPP,PP` 0 ")- !676762!"'&'&'&54!X$#R#+/RFF$#R#$1Sh,  k-"s!}P476?6763&'&'&547632676767654'&547632!54'&'&54'&&#"'&/&'&'&#"#"'&'&/&'&#"&'&'&?6'&'#"'&'&#"!'476='654'&545454'327654'&'&327654'&/%4-)"$0JK&  )7    %0'# #6 +-L __^/s4* 1( .266 |/(1   \   #:7  lS&   x71]/~[#<$  o_%@,: $";vR $X$+|!5DX&PY;9Do6 b'n2  83eF] 4T&  &  /50$?- 1@& 3l K  C"P1 :03<D:5XI.)D&[+-1:   q/A8   g+jl9Lp{7654'"'&#"+"'&54?67676763276323273#5%6767'&#"6"/67#"27632327654'73654'676547&p/l0&J!cS%YE]{@C"$4>-;% ,(6Y>m!N$X6"/,(4sS?X$U>"sJ?K(`./4+2K2.0>S Zp0+1^' ;cs  /^"|Y/ 428ۇϕl%%ot5oA='Y$ aT* ''G+- %_kj~r}jL`І|\gK@/.85c($ (2LS>54/##326?%%3254'654'3>7632#"&547>32'% ;66I   }g ?6qn   -> 9@ H67;  zh| 8 >6!q    B5>%+?F4&'&/76765'7! !'!654'!4'!!$467>2"&'&!654' 33 ^^^RXI#J2VlP# ~!88!~ Kppph,p<(##(#id (2LS.#"227654&'''%'654+.#"65.'&54632#"'.6#"%  I66; o |>?%6!q   9  ;76H   |h> 86qm    BX{[%G'23 %%.'&"27>7%$!"#232%"'&'.4676762%#"#2%k      A>>dIID`nS   SnGYn 5>5 n)(%$#"#64'232%%&'&'&"27676&22k**!n``n!##3W 2327632#"'&'&5476'( > !~GH ".4F+@xH )0$'*' 23277632#"'&'&54763'( e` }{*279HF`0@xJL 1 ,A  ' 7 Ɏ877Ɏ77ɍ8ɍ? tt7tt7t7tt7uB2632#"'&'#"'&54767'&54763267632676 Q   x L$3 z(   6X3  6*=P*> "#  R26#"'#"'&'+"'&'#"'&547&'&54767&&5476326763276T 디% $$YyX$ zc0 + j :  (̢1#: _$ #- Խ =1 '2ĺ pD #!!!!!%!!!!!!!!#!5!36HVBBXBBUHVPBXyBpD !!!!!!""p"p"#pD35#7!!#!5!3rrsrspD!!%!!!!!!r"p"#p"#Rb !!#!5!3ppEU l3!!'#'!!#!!3!5@,r,,_ r,,_>v #!!!!!'!!!!!!!!#!5!3hm_|P_H_pDK#";54&'&'&#'!326767657'&'&'.+3!76767>5{dIB,$2$*DEh{LGC_RQ|66R_CIJ{hED*$2$,BFd{LGC_RQ66R_CIJKIB`OT|87O\FGKzdGB+%2%+BIdzKGF\OT87O`BHL{dGB+%2%+BId  #!! !!! 373#'7#ZAA:Llحmllmzlmllm|}}|d d}cT`C54'&54762327632#"'&+"'&5476=#"#"'&476323(L,68x86,L zFvd0000dvFz L,68x86,L zFvd0000dvFz zFvd0000dvFz L,68x86,L yFvd0110dvFy L,68x86,LV^&'##"&'&'&4767>32367675&'&'.5467676236767>32#"&'&'&'#"'&'.546767675&   R.-R  R-.R "  *!""! ((\(( !""!#%   " R.-R  R-.R    %#!""! ((\(( !""!**!""! ((\(( !""!#%    R.-R  R-.R "   %#!""! ((\(( !""!*  " R.-R  R-.R   Sa4&'&'&'.546767622676767>32#"&'&'&'.#"'&'.54676767>5"#"&'&'&4767>32(,$ ((*& :.r06$&**& )'De!  'd8:b&$$&b:8d'  )a@/!  ')*&$6/r/6$&*)'  ')?c'  &d8:b&!$&b:=_& (bCc"  &d8:b& $&b:=_& (a?/!  ')*&$6/r/6$&*)'  ')De!  'd8:b&$$&b:8d'  )a@)' ((*& :.r06$&**& ((T`0267632#"'&'&'!&'&'&54676763267632#"'&'#"'&'&'&5476767!6767632#"'&'"'&'&'&54767#"'&'&'&5476767632!#"'&'&'&54767#"'&'&'&476767632&'&5476767632!#"'.'&5476767632&'&54767676Z   ( &            <   4          % (      (   2     6           %    <    %  (   W_2767653"4'&'&Wspsnullunsps;8rown<;;j>-'O^__^Oq44H4"hdd0!% %!-@jjjk**37'73 #'xxxx.xx.x..x  pD #'!5!73!GFdFGrEGdGErFGqFGdGFqGEd@L     - FOFc,OO,cFd,PO,dGOP T` '%%%%%% % -wD{wwe#w%f{wwy||y{xxe#w%f{wwxEy||y % %  Zp/AppA/}}ET`     - Zq NqqN  NrqN qrT`% % -ZyllylyyT`%% %% -ZtGcVGttGVcGGstGWcGtsGcpD/3%!!%#'''%!5!%777xo:U.cF.d;UǩoxoU:e.Ec.U9oE.f:UūoxoU9g.Ff.U:oxo9U. 54'&5476276767632+"#"32;2#"'&'&/"'&5476=&'&'#"'&'&547676;232?&547'&#"+"'&'&54767632676'K,68x86,L qA'C<4GW>L d  f L>WG4L d  d L>WG454&'&/54'&5476276767632+"#"32;2#"'&'&/"'&5476=&'&'#"'&'&547676;232?&547'&#"+"'&'&54767632676o**YK,68x86,L qA'C<4GW>L d  f L>WG4L d  d L>WG42#'"372"'&'&/"'&476="'&547>Q!//VZ *nN+G80j@6RR6@j0/P1N TP#00VZ ,lO@W+G80j@6RN6@j03L/N  ]H,`,H Yc!77\4OO4VA7gU3',H^ ]H,`,L&3c!77\4OO7VA7fV4&,H^67654'&"327632#"'&'&/#"'&5476=#"'&'&5476763232?'&#"#"'&'&5476763254'&5476276767632#"'&#"#"'&#"327676%32767654'&'&#"#"Z8%1T1%85e %ZF\ +m8BS/?JV@6RTXN6@VGB1QB8n* \FZ% e53e!&ZFZ *n8BS/?JV@6RR6@VGB1QB8m+ \FZ&!e3DA 5<; > +F$H$F+ > ;<5 AcJ2QD++DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(""'!$(:UJJU:($!'""nFw"2767>54&'&'767632"'"'&'.'"'&'.546767"'&'.546767632.546767632=>343343>==>343343>x>%85670-),(-%8/[0!-(,)-02y/8%0%)-02y/8%-(.'&$W/:#-(,)-02;>/;),)-02;>/8%-( 06{IF{6006{FI{605+'g>:c.&".c;=g'+&1N%&W'+&.c:>k#"$.c:>g'+,B:>g'+&.c;=?nF\v%"'&'.546767"'&'.546767632.5467676267632"'"'&'.27654&'&'&"67&'&'&'276767&5467'&'&#"32767>54&/76767>54&'&'&#"Z0%8/y20-),(-!0[/8%-(,)0-<1:3%>(-%8/|/8%-(>%85670-),(-%8/[0!-(,)-02y/8%0M=  H C# B/g H /*x#$  8## H g/B PP  $#x*/%N1&+'g=;c."&.c:>g'.5 ?=;c.&&.c;=? 5+'g>:c.&".c;=g'+&1N8GG$> >$ c.,bB$#>  Ir0C >'#> LM >#$Bb,.$ >#'> C0rI T`)T:e&'#"&'&'&4767>3267'&#"327%32676764'&'.#"7632#"#.4767676324676762>322##"&'"'&'.5#"'.'&467"&'&'&4767>&'&'.'&'>76?&'326767767>5&'&'.#"767>7.'&/32>7674&'&'67'&'.#"67'&'.'67676767"2767>54&'&'"'&'.54?&'2767>54'7654&'&'&"67'&54676762:    $4 4$ww4 4 xy   %" !()-+U$"! ((\(( !"&S+-)(! '7M"# V2% A()-.R$"! ((\(( !"(O-,*(A"#2P"# "M    ! *4 2 kk  4 2 uKK        i2 4* !== 2 4  `_  wR#$$#R#$$  8 < c !<>     8 < d!!<>   "%UV*) !!$3R  R3&!-(-%Z& "#%(.2$( &&S+,))A!$3R  R3'A))XT$""#%(`$( "      i3+!x== 3 _`        !+3 kk 3 uKJ   F)(GG()F$    %3 3%ww3 3 xy   V^3N^"2767>54&'&/2"'&'.4676762 '&'&547676% %-z35++++++53z35++++++5pWDM69?=;9JHDM69?=;9JHSspsnunˎspsnul}}(.h<;h.((.h; +F$$> +F$H ;<5 A~ ;<5 A+DQ2J (5H,'9,J&0f) T|\`j4OO7g`\|T 'g/& H,9',I4( (3J,&9-H &0f) T|\`j4OO4j`\|T 'g/&J,9',H5(G+DQ2J$(:U$(:U3!'""!'""A''7'753'75377537'7'#5''#5'7#5'7'7<B-DH2#"2767>5!"&54$3!57!#"'&'.5467676#_>I-743TP>CPNDG-2.1/&D9 88 '.* !-8D_2{j@F'%.3r@Md7+4V/2&'&54676762"'&'.546767Zy*,&''&%1]~|45,-++-,54|45,-++-,5(+&a4|d΃fz4a&$(F*.j=3"&'&'&54767>32rJ6464NN4646Jp`684F@NLBD64:866D@NLBD668^~* i654'&#"632327632!"'&5!267&'&#"#"'&54763247632327654'&547632#" 6+Jo.^V|;-˙it36?̺fQMeEJS?(*$ s]vh2K)*NL13^v:Mc*ZeC03N35%&-Kt\K%9S >BWN=!$?$8(F!5{^?Z Q67654 547&'&+327#"'#536767&'&'&5432&5476323254'&5432?-BO>=v06&%K`dC+(k$'eM?$#=Hb B=)+8=.m9eb PB>$3g:84!EB7WPfG+1KHP<Ff#&T'0P+A'<}DC/'"05276767654'&'4rceNS((((`hm@DDF/CD}>C/GFCG !&547>2; 0!!6P<:! !$ ! "#{! !{54&#">32!5!>??qq>0ţ=as;N_/>!RL}A?rFi:}$:&N?(U?"Mt 6+A]A)9IYiy ]1.+. + !'+!+9*'!901! 4$32%4&#">32+32#"&'32654&'26??qq|=_ky4[\XZcksuD}[X@v hA?rs ?<:32#"&'32654&#"75!5!??qqYe2hvvhDw_X@ϰ?A?r%aVUa/  23/4/3и/4ܸA]A)9IYiy ]A&6FVfv ]A] +  + +,&+,/&,901! 4$32#"&54632"32654&#"7>325.??qq\NN\\NN\qºN w/aTJjA?rZbbZ[bb*= P# + + 01! 4$32%!35!??qqlUA?rv]K 1=++ +A]A)9IYiy ]A&6FVfv ]A]A ]A ) 9 I Y i y ]/9;9;/A;;]A;);9;I;Y;i;y;;;;;;; ]5+ )+ +28+201! 4$32#"&5463232654&'>54&#"2#"&546??qq_TT__TT_⾭vijvkKRRKMQQA?rlHQPIIPPI\vSttSvB>=BB=>B &23/4/ܸA]A)9IYiy ]3'и'/-A-&-6-F-V-f-v------- ]A--]+ +  +*0+*# 901! 4$32254&#"326#"&'4632#"&??qq鿹ºO w.aUJk<\NN[[NN\A?rK < O$[bb[[bb $0Ӻ%+%+++A]A)9IYiy ]A++]A+)+9+I+Y+i+y+++++++ ]+ .+ (01! 4$32!5##7##"&5463232654&#"??qq$ŸuF?@EE@?FpA?r*'$ =$>  767654'&'!5%3!!  '&'&54767̆mommom4mommomP\|~{{~||~{{~|96oooo6996oo  oo6}9:݈@>}~Ա~}>@@>}~,,~}> =6P  767654'&'!!567>54&#"5>32  '&'&54767̆mommom4mommom)4 \=)N=kP`aF7I׺\|~{{~||~{{~|96oooo6996oo  oo6_A.Xx;_x55'(IZV@>}~Ա~}>@@>}~,,~}> =B\  767654'&'#"&'532654&+532654&#"5>32  '&'&54767̆mommom4mommomttLUDWx~zB\RGr=\|~{{~||~{{~|96oooo6996oo  oo6yt'(xrjw_Z\bd @>}~Ա~}>@@>}~,,~}> ='A  767654'&'!33##!5  '&'&54767̆mommom4mommomh*˪+\|~{{~||~{{~|96oooo6996oo  oo6 @>}~Ա~}>@@>}~,,~}> =7Q  767654'&'!!>32#"&'532654&#"  '&'&54767̆mommom4mommomz#G#KSLVAC\|~{{~||~{{~|96oooo6996oo  oo6c ۻ)%}|X@>}~Ա~}>@@>}~,,~}> =%>X  767654'&'"32654&.#">32#"32  '&'&54767̆mommom4mommomllm=|< /Vڵ =|^\|~{{~||~{{~|96oooo6996oo  oo6EKۼ>-O@>}~Ա~}>@@>}~,,~}> = :  767654'&'!#!  '&'&54767̆mommom4mommom\N\|~{{~||~{{~|96oooo6996oo  oo6`E#@>}~Ա~}>@@>}~,,~}> =#9E_  767654'&'"2654&%.546  &54632654&#"  '&'&54767̆mommom4mommoms慄htdthutԄ9tihvvhit0\|~{{~||~{{~|96oooo6996oo  oo6,{{|kl{Eggss\hh\]hh@>}~Ա~}>@@>}~,,~}> =2>X  767654'&'53267#"&54632#"&2654&#"  '&'&54767̆mommom4mommom=|< .Vڴ=}mmlJ\|~{{~||~{{~|96oooo6996oo  oo6DJټ@>}~Ա~}>@@>}~,,~}> =+8Ca  76767654'&'&'"32654'.  735733!  '&'&'&5476767̆mo5885om4mo5885omT,+VUVV++2QPPQΠP3p\|~-,g%&݈@>}~~}>@@>}~~}> = $!5!#%  '&'&54767{\|~{{~||~{{~|#:9q @>}~Ա~}>@@>}~,,~}> =6>7>54&#">32!5  '&'&54767I7ݺFa`Lk=N)\\|~{{~||~{{~| ZI('55x_;xX._@>}~Ա~}>@@>}~,,~}> =(B>54&#">32+32#"&'32654&  '&'&54767ir׸G\\Bz~xWDUL2\|~{{~||~{{~|db\Z_wjrx('°t=@>}~Ա~}>@@>}~,,~}> = '! !335#$  '&'&54767hno\|~{{~||~{{~|  @>}~Ա~}>@@>}~,,~}> =7>32#"&'32654&#"!5  '&'&54767CAVHSK#G#\|~{{~||~{{~|=|}'' %@>}~Ա~}>@@>}~,,~}> = $>2#"&546.#"32654&#">32  '&'&54767PmmlC|=ϵѴV/ <|=\|~{{~||~{{~|+޸KE@>}~Ա~}>@@>}~,,~}> = !35$  '&'&54767>h\|~{{~||~{{~|@fE@>}~Ա~}>@@>}~,,~}> = +E2"&46' 654&'>54& 74632#"&  '&'&54767Yt愄/tԃuhtt-tihvvhit0\|~{{~||~{{~|{lk|{{Essgg]hh]\hh@>}~Ա~}>@@>}~,,~}> =$>%32#"3267#"&'"&54632  '&'&54767!C}= дѳV. <|=Allm\|~{{~||~{{~|Q/=޸JDg@>}~Ա~}>@@>}~,,~}> =  :2#"&546$  !5##7  '&'&54767eddedddB¡\|~{{~||~{{~|>-/#&%q @>}~Ա~}>@@>}~,,~}>uPj !!5!!Pp#@pppt 7%FN4NGuP85 zD<22pJJt '-ZKFGNuP!!u\lE>~~>uu+"&'.546?!".4>3!'.5467>2p4,,$$,,42.p ,.".2."., puP8!5! %JZPJJuP8!5! %JHJJuP8 #3#3#3!!5 xx<<oJpppJJuP8 55!#3#3#3oPxx<<΄ΊXXXXuP8!!5 %JJJPD! 6>l>>PD ! DR>l>>P  BlvvuPb3!5 5! '&'.u$##+* ZJMM*+##$0U%!JJ!%UuP84676763!5 5! u$##+* ZJMM*+##$0U%!JJ!%U0!! ^r{VXeoouP855!Dq΄Ξ0uj%5!!53  !<9h9>uj%5!!53  !<9h9>+Z !73#57!!+ Id&+ъ2&+Z 5!'53#'!!!+dI|&22 !'!'!53 !Odcndh 2 3#5!7!!! ndnd;ch dd !53#'5!'! !]n2n22r-hJdc;dJdd 7!573#5!! !2+2n2nr-hLJd;cdJ<6767632"'&'&'! <'CZmo~yti^Z\X^Vqoti^?)X6nGCZ.//+]Y݀z_X0//+]>Iʞ BP "&*.37#37#37#37#5!!!!3'#3'#3'#3'#<<< 7&#"7'7 !%*BF8WU{FC*9oX:WubP 55!5!!'!XXddPRt '327'' !!iFB*8X:*CF9XUpt>*%&#">7'&'&">327&5467>7tBEH#&NKX$W/,0$" D5Hp*G6$"!0,0Y"W!F&'&#GGCuaP'467#"!4676?'&'.5!3!.5P5#$%"//"%X$# 5eeJ(0Y! "X0(Jet*.'.54?'#"&'2767.'32t)H5 X"$ #0,0X"KN&#EHEBCGG&'&KW"Y0,0$"E6GsPX'<6%"'&'.54676$4676762"'&'&&'.54676762$/+z >_ $#R#af#R#)>xbQu 88RK68# 88  vc<*676767632#"'&'&'&%.5467.546A ''+/54<3o8n23'9%%%%bb%%%&:?$ fLLf#&#/:&'X23X'rr'X32XV2c"'&'.54?654&'&'&#!"#!".4?64/&4676763!23!2767>54/&546767622 Z ;:td Z   c   uu  c  2c"'&'.54?654&'&'&+"#!".4?64'&4676763!2;2767>54/&546767622pW\xj IJ \W   8  uP^'#76767&'&/3#>7!5!!5!.'PSJl..&GG&GlHSi7*nK Kn**7OUnm'66'1U=Hd)dH=#u ! ! j.u-10 3%!#3!Zddd/ #3!53#5ddZd{3 #pph # 3hp&T&T[[ '#'#'##'x\xxjjxx\x,x\ehhP8\xYY73373737+.x\xxjjxx\x.x\8Phhe\x,OlD=072767>54'&'&'&"7#7676767632#"'&ew@RNJV !'7$"!3!&'&'&'!#!2767676wx !1cbbc1! "1cbbc1" `x]\LM&  &ML\;RR &ML\]]\LM&ZwxZQvcbddbcvQZ[RwcbddbcwR[xV''LM\7=e=7\ML'e;6\ML''''LM\6d 8   2@ @@ 00 ]1@   990@   <<@ <<KSX << Y5!!dx yxUZxxu 8   2@ OO __ ]1@  990@   <<@ <<KSX << Y'7!5!'7 wxy xZwxxd 8ڶ 22@ PP_ _O O]1@    9220@   <<@ <<@ <<@ <<KSX <<<< Y5!'7'7!dxxwxxUZxxwZwxxd 8!!5!! s]xwx]ix]xZx]xiu 87'!5!'7'7!5 ii]xwx]iix]xwZwx]xd 8!7'!!5!'7'XiiiI]xwx]h]xwxiii]xZx]]xwZwxd 8 !5!3# Y#xwxݪ-xZxYu 8 #3!'7'7xwx-\xwZwxd 8 !5!53#5! Y]xwx]Q7ii]xZx]Eiiu 8 !'7'7!#3!7'Q]xwx]iic]xwZwx]\iiu 8%77777773'7'7#'''''''uFFxwxcnFFFxwZwxnF,X@,,X ,,X@',,,X,,X@',,,X ',,,X@',',,@,@',,@',,@',',,@',,@',',,@',',,@',',', ,@',, ',,@',',, ',,@',',, ',',,@',',',@',@',',@',',@',',',@',',@',',',@',',',@',',',',@',, ',,@',',,',,@',',, ',',,@',',',@',@',',@',',@',',',@',',@',',',@',',',@',',',' ',@',', ',',@',',', ',',@',',', ',',',@',',','@'',@','',@','',@',','',@','',@',','',@',','',@',',','',pX,p,pX@',,p,pX ',,p,pX@',',,p,pX',,p,pX@',',,p,pX ',',,p,pX@',',',,p,p@',p,p@',',p,p@',',p,p@',',',p,p@',',p,p@',',',p,p@',',',p,p@',',',',p,p ',p,p@',',p,p ',',p,p@',',',p,p ',',p,p@',',',p,p ',',',p,p@',',',',p,p@'',p,p@','',p,p@','',p,p@',','',p,p@','',p,p@',','',p,p@',','',p,p@',',','',p,p',p,p@',',p,p ',',p,p@',',',p,p',',p,p@',',',p,p ',',',p,p@',',',',p,p@'',p,p@','',p,p@','',p,p@',','',p,p@','',p,p@',','',p,p@',','',p,p@',',','',p,p '',p,p@','',p,p ','',p,p@',','',p,p ','',p,p@',','',p,p ',','',p,p@',',','',p,p@''',p,p@',''',p,p@',''',p,p@',',''',p,p@',''',p,p@',',''',p,p@',',''',p,p@',',',''',ppp,p@',p,p ',p,p@',',p,p',p,p@',',p,p ',',p,p@',',',pp@'p,p@','p,p@','p,p@',','p,p@','p,p@',','p,p@',','p,p@',',','pp 'p,p@','p,p ','p,p@',','p,p ','p,p@',','p,p ',','p,p@',',','pp@''p,p@',''p,p@',''p,p@',',''p,p@',''p,p@',',''p,p@',',''p,p@',',',''pp'p,p@','p,p ','p,p@',','p,p','p,p@',','p,p ',','p,p@',',','pp@''p,p@',''p,p@',''p,p@',',''p,p@',''p,p@',',''p,p@',',''p,p@',',',''pp ''p,p@',''p,p ',''p,p@',',''p,p ',''p,p@',',''p,p ',',''p,p@',',',''pp@'''p,p@','''p,p@','''p,p@',','''p,p@','''p,p@',','''p,p@',','''p,p@',',','''p,p',pp,p@',',pp,p ',',pp,p@',',',pp,p',',pp,p@',',',pp,p ',',',pp,p@',',',',pp,p@'',pp,p@','',pp,p@','',pp,p@',','',pp,p@','',pp,p@',','',pp,p@',','',pp,p@',',','',pp,p '',pp,p@','',pp,p ','',pp,p@',','',pp,p ','',pp,p@',','',pp,p ',','',pp,p@',',','',pp,p@''',pp,p@',''',pp,p@',''',pp,p@',',''',pp,p@',''',pp,p@',',''',pp,p@',',''',pp,p@',',',''',pp,p'',pp,p@','',pp,p ','',pp,p@',','',pp,p','',pp,p@',','',pp,p ',','',pp,p@',',','',pp,p@''',pp,p@',''',pp,p@',''',pp,p@',',''',pp,p@',''',pp,p@',',''',pp,p@',',''',pp,p@',',',''',pp,p ''',pp,p@',''',pp,p ',''',pp,p@',',''',pp,p ',''',pp,p@',',''',pp,p ',',''',pp,p@',',',''',pp,p@'''',pp,p@','''',pp,p@','''',pp,p@',','''',pp,p@','''',pp,p@',','''',pp,p@',','''',pp,p@',',','''',ppd?8 !5!53#5!s]xwx]ii]xZx]EiiuP8 !'7'7!#3!7']xwx]siic]xwZwx]\ii 3'#'##-Z-x\xxx\.x\n #\733737#x\xxx\xZ'x\# n\xO'=%"'&'&'&767670327676764'&'&'&pk_V1..1Vbrx`Xk_V1..1V_kpIxXE?#!!';B]YQS@?#!!';BQ9.-\ZnllnZ_.x$-\ZnllnZ\-.)xF!F@RNJV>lmGСBk>DdW0Xdtsݓ.W@#.  -&.%)/K TX)8Y299ܴ]<<999991@ &$-/22907&54&'>5!2;#"#!532654&+CI02Kl>>l5UU5D>kB0GmstݔdXЎW2  5 1Vd22h' %#3 5' :' 73 ٪L^8bb:'B 7''ٛ>PNq'B '''ٛ>PNq^D'B ''>PN'B%  '''tNP'B5  5''bNP#u  u-3!3!!#!#!5 L3ͨ--Ӫ--333333#######5Ϩ---Ӫ---:k7!!  767654'&'$  $'&'&547676h08rtrrtr@rtrrtr VGFFGrGFFG;:rs죟sr:;;:rssr:Ŭɪ:k3?  767654'&'$  $'&'&547676!!#!5!rtrrtr@rtrrtr VGFFGrGFFGssB;:rs죟sr:;;:rssr:ŬɪKss:k3?  767654'&'$  $'&'&547676   ' rtrrtr@rtrrtr VGFFGrGFFG]x3w32x3B;:rs죟sr:;;:rssr:Ŭɪ3x23w3xuM %' Io& I' I% IJuM327!5!>2&#"!!"&' ;E 2&#"!!!!"&' ;E $;E Ϊ@z٨zuM&#"%"&'73275%>2";EC;EJ綠mzzuM*3&#"&'67"&'7327&'&54767>2";EIq(P >6D;E]InoSu=,HK%)AH!+p$ z1IosV2";E+@/V]H6H\nUm;D [>wfP3,,I6x/Ur]HH]lVzM>wrN3 F4uM!3#!!>2&#"!!"&'732w~9F 9 }9Gr0}}uM+3#>2&#""&'73273264&c)~9GcBnnVs~9F (6o~ç|K|oU}uMp.3#327264&#">2&#"632#"'"&'z;E-8pƖqS;E;DܛWI3>6я]z!zuM 13#64&"327&'&767>2&#""&'˔֐;E]InoSu;EcBnnVszяϐ-1Io7sV2&#"!!"&'73273!#3;~9G9G ūI}ޭ{ tMm-&#"!2#567&'!"&'7327!5!>2";Ed_``!;D ܻ`;`*I6ƌebIz`:H:`*F4uM#&#"7'"&'7327'7'7>2";Exx;EzxXyxzyxإzuM*327#467>2&#"#4'"&' ;E-A 4yy;E Z>Vy|-2PIϼ+zEa82JzuM'&#"63"&'7327&'&53>2";E*y;E\?Vy~+&8'zLFaI1zuM>32&#"#"&'7327!5KL~9GALK~9G⧅}}gkb>32&#"#"&'73275!KL~9GALK~9G⧅}}Р? 5 5FѶeѦ 55FѶ///m' 7/& 7'' 7'' 7' 7/ ' 7N:A%#"'&'&'&#"5>32326#"'&'&'&#"5>32326 5jbn ^Xbh`n ^Vhjbn ^Xbh`n ^Vg@PNE;=LTNE;=KPD:32326#"'&'&'&#"5>3232655jbn ^Xbh`n ^Vhjbn ^Xbh`n ^VePNE;=LTNE;=KPD:327&#"56767326 5jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Vg@PD4KUNE;@LTNE4LRN"*,@J^po_N5<#"'3267#"/'7&#"5>327&#"5>32732655jbDS4WVhjbm\Y@/Xbh`ES3VXbh`n[Y@1VePD4KUNE;@LTNE4LRND:@J^T 5!5!-5 !5!uu/0\^ҲЪ~T -55!55!usҲЪ᪪/0N%#"/&'&#"5>32326!! 5jan^Xbh`n^Vf@PD:32326!!55jan^Xbh`n^VfPD:323265-5ian^Xbian^VgsuOE;=LSNE; =KJ/0:ҲЪ !(#"/&'&#"5>32326-5 5ian^Xbian^VeuOE;=LSNE; =KJҲЪ/0, -55!55!us%ҲЪ᪪(/0٪, 5!5!-5 !5!uu%/0\~ҲЪ^6 5 5 -55uu/0V/ҲЪа/6 -555 5uuҲЪ۰/'/0K/& 55p/ѦѶ& 5 5p/om//&' 7/&' 7{ 5!5 5!@Ѫop9{ !5! 5 !5!@Ѫ555@pNpop 55 5@p pU(".#"#"&'5327>76325hV^ n`hbX^ nbj@TL>7632 5hV^ n`hbX^ nbj?TL>֪VJ<:DNTL<:DNDop$+5!5!.#"#"&'53276767632 5hV^ n`hbX^ nbj@>֪VJ<:DNTL<:DNDf $!!!5!676762!!&'&'&!!C.8d 6WYYV7 e8-;Z{+DD\93[2332[0<[EC,W7!!%5$$}y]]x|W%!5505%$}$y|]]W !!'7!5!%5$ZZ N$}qPP]]x|W !!'7!5!55%$ZZ N}$qPP|]] K75!5!%5$!:[]3֪k-QtXVv K75!5!55$%$][:!3֪kVXQ-qK!5!7!5!7!!!!'%5$&`ȉ)P"_=6!:[]ss1st-QtXVvqK!5!7!5!7!!!!'55$%$&`ȉ)P"_=6][:!ss1stVXQ-y:E#"'&'&'&#"5>76326#"'&'&'&#"5>32>%5$ian ^Xbib` ^Vgian ^Xbian g!:[](NE;=LTN9 A=KOE;=LSNE;C E-QtXVvy:E#"'&'&'&#"5>76326#"'&'&'&#"5>32>55$%$ian ^Xbib` ^Vgian ^Xbian e][:!(NE;=LTN9 A=KOE;=LSNE;C EVXQ-6A#"'3267#"/'7&#"5>327&#"56767326%5$jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Vg!:[]$PD4KUNE;@LTNE4LRN"*,@J-QtXVv6A#"'3267#"/'7&#"5>327&#"5676732655$%$jbDS4WVhjbm\Y@/Xbh`ES3VXbhZmMp[Y@1Ve][:!$PD4KUNE;@LTNE4LRN"*,@JVXQ-7 5@pppo%5555òi ' '!]#\e#N\#]x#L   !77 ! \ݿ##N]##4 !7 7:\#]x#L]ݿ#\eL#1 4  %''' !]ݿ#\eL#1\ݿ#]j#7P~ % ! !!5 5!3!   7?~% !!3 *^V !!^*  ^V!!!^ ' '!##L  !  ##4%7 7#L4L#1 4  ! L#1#7P~ % ! !3!߆^V ! !! !ECuR #7!5!7Zxx/{xx:xu-R '!5!'xx vx:xH% 7!!7vx{/xxxƪxvH-% 3'!!'Zxx vxx$!%!!W7 r$!!!W7 $!!,7r32 &}f[_ &}f[, %$R/ %$R !2+##5332654&+!ʿ[qrqqϐђАfT$@  $ !? %29999991@&  B  $/999990KSX9Y"@&]@Bz%%%&'&&& &66FFhuuw]]#.+;#"&! 32654&#A{>ٿJxn?M~hb–m؍OH#(07#5#"''7&546;7&'&#"5>327354326=-?\g`n;) T`TeZx_958>cc3Vfa<}NV{ E..''rOs+Ax.ٴ) 3{ B333#;#"'&'##53w1ѪKsQ fև3͏oNP r>-!#4&#"#3676323#d||BYZucce22wxLj%3###3!E3A1wH33 3###%̟8ǹiEL#\ !!#!5!sP=g՚oAX` !!#!5!qjLl}e`R%sw-@ 221/053#5# !232#"MT+焀\\xEEf! !+53265##-}-MDnh %!#3!3҈R={6762354&#" #3$ )rQTm*T:rrD  # #3 3 67632#54&#"f:9:54'&'&s~&&~~ڢ~.]=@N\N\.]=zz❞zz}qa !SM!R}|pas?#-n@.  '&$ /$ .9999991@ .'& ) )./9999999046$327#"''7&7&#"4'32>s~&Ġn~ڢĠnՑꏧw֜\w֜\zvijޝzwkj!^`|g^` .@   <<<2221/03#3#3#3#):@  1/<0@22 # #3.]F; -@    1@  /<<03!#!#!"9q><@  9/1 ]@ /<220KBPX@     @     @ Y333 # # \Xds3{ 1@   <2<2??]1/<2<20%3#3#3#3#\ 7@  91/0@ BKSXY" !!!!&TdD՚ohh $@    1/<<2203#3#3#hhh0o !@  /221/220!!!!5!!o&.-ժo1/,@! ',01*$ 022122<20!"'53 !"563 676!2&# !27# '&%4rmyymrO4%%4Trmyymr4*B6!*:'(8) 6AB6 )*!6oP@   <<222<<<<21@   /<2<<22<<2203!3!!!!#!#!5!!5!!n""xxyyrr3@21/03!!!ժ,o7@   /<<2<<21@ /<2<203!!!!#!5!!5!CCPPxyr7@ KTX@8Y221/0@ 0 @ P ` ]73#3#>@ 10@ BKSXY"47!5!32654'3! $x˿ßwNetwc #/9@1E- !'E0<2<21@ 0*$002654&#""$54$322654&#""$54$32,,,,PIIPPIIPPIIPPIIPs'(@ ) (1@ #(046$32#"$&732>54.#"s~&&~~ڢ~\ww֜\\ww֜\zz❞zz}``}|``s,P@  ! #.# -9991@ ! ((-99046$32'#"$&73277654.#"s~&&~l~\wj\ww֜\zz➞ikwz|`^jI|``; -@   1@   /2203!3!#,dq9d (@   <<<<1/03#3#3#QIh ?@     <2<2??? ]1/<2<20#53#533#3#3#h+Is'+>@- )(( ,9//)]1@+(#,046$32#"$&732>54.#"3#s~&&~~ڢ~\ww֜\\ww֜\zz❞zz}``}|``s>,P@  %$#& !.! -9991@ #&$%((-99046$327#"$&732>54''&#"s~&Ġn~ڢ~\ww֜\pw֜\zvikzz|``|?l^`sr%1=G@8&,20><2<21@/; 5 )##>9//0! #"&547 !&54632! 32654&#"4&#"326sS_  _mz,,,,,,,,gs'O;H66H;O'sz<11<;22<11<;//d #@   <<1/<203!!#!5!IIjk=;;sr3?Kf@F4%+6:0L2<2<29/<<1@=(I C (7##11L9///<20! #"&547"333###3&54632! 32654&#"4&#"326sS_ ̻A;z,,,,,,,,gs'O;H6ߊ6H;OO4z<11<;22<11<;//;@   2<21/220]!!!33##!!!>ժFh";@ 1/<0)3!3;+y=@ B <1/20KSX@Y!# 5!!!8ks#O@%$!  /<<22<2<21@  /<<<2<<<2032653#2#4&##"#3"3ʊyʊy+VVF%F.@ KTX@8Y1/0!##u-s+f@- ,&'  #+ /<<<222<2<21@+*   #*'"/<<<2<<<29/<205!5"3332653#!!2#4&##"#35ʊAyʊy>FV>=VF=6-@ 1/20!3!3M-'6'6'6'6'6&6'6&6'6&6&6'6&6'6&6&6'6'6'6&6'6&6&6'6'6&6&6&6&6&6&6&6'6&6'6&6&6&6&6'6&6&6&6&6&6&6'6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6'6: #'+/37ڷ/$0(7,48<<<<<#+ 3'<<<<< <<<<< <<<<<9̰XKRX8K bf TX30<32#4&#"#9`M1Cuȸ||MM 7BuƸ||e,'"xMfca?'Gzed\V5<!"'&76763!!32653#5#"&5#3!#"&5332765!"3ە^SWsv||CusCuȸ||WVۃ^SBWLa{fcBVfcf__{{V H!&#5#"&5332654/&763!6763232653#5#"'&=4&#"#9`M1Cuȸ||MM 7c%Zk>8nClbd||xe,'"xMfca?'Gz2XO{fcx{䟞[t`&V 332673 &Vv aWV` v ޞKKJL[`&(SN~`6@  F991B /2<0KSXY%2767653)5!3$Wq2!dj±/8s4tVg` ##4673>=3|u˷d7<T "yX`#!5!e/я`!#3#4&#!5!2snJvy–X`35!26&#!5! #X-뒦yX4=!3!#T\[CLzl` 3!2%!4&#!Wn`–X` !#4&#!5!2nKy–X`!#4&#!+5265#5!2nã rLy–a;- 1 <05!3!----Ӫ&$&$&&`& u`& `& \X`& BCZ`& Xh`&d`&Q`'ZX`&`&&Q`&ZXV`&X`&:X&X`&%X`&X(`&Vd`&Id`&{C!`&!nV`&"X`&#I`&$`&%<t&X& X&d&X3>=3##67'#3x]GgG.i=dB`ԛ":T)C '9n '9 X& ~X' 'n ' X&c ~X&c 'n ' X&c ~X&c'9n'9&L~&L'n&&cL~&cL',n&,0a&,+p~a&,+p'x~\F&x?&,~ x&>'xx\F&x?&,x x&> (f'; >f'}>\/& 8>>/& 8 (f'; >f'&8\/&88>/&8 (f'; >f'2>\/&8>>/&8 (f'; >f'2>\/&8>>/&8 ' ? ~& /&?,> ~/&,>)7%#"'$47332767654'&54767;#"'&/cͷ?Ahž#62 #dGG&+@XA:g!axLQ 6r'_>X %+53276=3+HZ#c,1VV,1jٻ~X%+53276=3;#"+MZ#c,11,c7nVV,1jj1,JRX&Yc~X&Zcpn"56$3=gi~wun52&$=Ԛuw~ig* '/&'&#"#67632O,$e5Fqp[?8WH7  $0GJI  '327673#"'&'O,$a9Gqp[?8W7  $,KJI PT,l&IT,PU,i,k ;#"'&=3!1,cK\WL71,\W+PV,PW,l'W,IPX,l'X,IPY,l'Y,IdZ,l'Z,I<[,l&I[,U/'\5&\l9']5l9&] @']>Q 6&]>l '^5l &^']>R&]XD&Y]+p~&Z]+py5 3;#"'&1,cKPWskj1,\e'9n&9X&~X&'P^&^ 'n &&cR~&cR'n&&cR~&cR (f'; >f&\/& >/& (f; >f0%3#"'&'&'!27# '&5767"#"5$3 "(1{R=IrbJIԖ^` __&m3HZdP^vc–e4)?6 [_w\/&'&'&5672+5327676SSgURHKLXJKݣdht^#4b4bBPH:jV>/);#"'&'+53276767&'&'&5672~AI2hrBV~(;E)Kݣdht^eSgURHK 4b)N"w6a.%PH:jV# ('?; >&?\L& >L& }R=}GR &'3;#"'#"'532767654"9aRQS,cKa].-fgsT!"#?zNuIS,!&* 1p*D}'E=}G&E b&? ~&3;#"'!5 767654x I*eK2D0# &pgM,>ꅗ:H~ b'q ? ~&q A GF%7653323;#"'#"'&''&'#&'$473327676'&/3N0%@nS,cKvDm% I01_@8'TPxmil_Qb_y^@@$:|_2&aS,`[ F{GHܳ&%0l}=J<~ 1%+53276=3327653763#"'&'#"'&+8LcKc,P,+hm,%@n\Kf%#?70`DAbH<;!.,Pd@dczg2&q\ =!1(78#"'&'#"'&'+53276=3327653763;#"'%#?70`DAbH<)+8LcKc,P,+hm,%@nS,cKvD =!1(I;!.,Pd@dczg2&aS,`Z ' A G&  & 7& C <I)"'&5#&'$47332767654'367676;#"/"3276'&'&u&4-JXPxmil_Qf[+!' (s{lHX}a*=RKgL~큻%MGHܳ&%Dl7(2l^F"%GMF ,\v7Ql?[F2 .327654'&#"!"'&'+53276=36767632Ш큺%0LJNA'fKc,P-e_KUskl?[F*#=,PdrNP2T?!'Dmx+8)"'&'+53276=36767632;#"/327654'&#"JNA'fKc,P-e_KUqm*=RKg਑큺%0L*#=,PdrNP2T?!'DKH ,\vl?[F ' C & 2& & E))5!3%632;#"/%3276'&'&#"@o\Dui*=RKg큻%0Pz\?c!'EMF ,\v?]DQx %3276'&'&#")5!3%6329큻%0Pzu \Duiʸ?]DQx\?c!'Emx))5!3%632;#"/%3276'&'&#"8 \Dui*=RKg큻%0Pz\?c!'EMF ,\v?]DQx'RE&R&R&Ru *Gu %+! '&7.54762;# '!2764"[b=D}a_[9^DU)k_1ocz2t*n@00@p[C+ @Mkl=v8`3$*727&'&5763"327%+5SF7J \X];d}M4F!Ť$/%+532767&'&5476762;#""654'v`kB;(aD hYYh MXD=p`vʨ4/gg/($'UZ'-)74--47)-'bM,(U __ u F'wGu L&F&wL&'~\L&?&~ ~&kG'R~ok &k?&,~ ~&8L!D#"'5327654'&'&7676'&'$54733276763;#"'J&P DfXRNB8D-<9_h$$EB|=Q#!v+6(  %{{qe))5!27654'&54767;#"'&/66-62 hGG&+@XA:g!a_h$$EB|=Q#!v+6(  %?+)x.M#$%653;#"'#"'$&733276N1,cKpNyUcE@A(IPmI~jkj1,3.(B"[\ss~B"5 +5327653WPKc,1se\,1j%+5327653;#"SMKc,11,cKVV,1jkj1,^Ngt5%327654'&'&#"#"'&#4763&547632;#"bzL,5;(.;D K2KxAZM\HT((&iK*9:X DD(PNNOmf7*(?$GC,,m$%#"'+5326767632%327654'&#"dan@ht4W^Q[a>/4(*X.[4fb0G1P8TYNE5EK&)/4:''5)24fb0$#1P8S1>,E5EX !a%H'?  +&V?&'R~'RP^ $&'&'&'3;#"'&'#"'&5476 xRot$8pKZI-&8:m*12e CY>)2'+eO,3;I0D-=67654'&#"27&'&5476&'5#"'+5327654'&$"':A4N--0M,Q@(Jxb 41}! @H=.%4-+#%v iEN@TSZ 'D49g=ql)D%'i.C!v-3j  ;AWE L9P)8K6(S/VL_+Y9K1\SJR765&'&'&54767632;#"'&#"#"'$4733276L[/,4PT*uW ##rpl$-AIqYhu?AB[M!3!+ (;=A<^ĸ#0{bV` )gZZrN J' R ' X&Yc~X&Zc.&\,.&\,&],&], &^ &^T#"'53273676537M͞jK`Uq%BUG FA+7T#"'5327367653;#"'&4;IʡjK`Uq%"@Pif<[A FA+7DT)TL* 35'5467676?67654&#">32,X\"$߸g^aOl39ZZ8L{4<+VZ@EL89CFnY1^5YVe !5!5!)5!S2SR7'XF: 'b:= ']C; '<b= ']bH'&'H'''H' ''H'&'H'''H''' H&&'H&&'H' ''H''&H'''H' ''H&''H&''H' ''H&''H&&'H&'' H' '&H&'' H' ' 'H''& H' &'H' ' 'H' '&H' '&H' &' H'''H'&'H''' H'''H'&'H'' 'H''&H''&H'&' H'&'H'&'H''' H'''H'''H''' H'&'H''&H'' 'H'&' H'' 'H'''  H'' &H''& H'''  H'&& H'&& H'' & H'&'H'''H'' 'H'&'H'''H''' H'&&H'&&H'' 'H'''H'''H'' 'H'&'H'&'H'' 'H'&'H'&&H'&' H'' 'H'&' H'' ' H''& H'' &H'' ' H'' &H'' &H'' &   3%!#!! !Y9w\{8q d+_N  %*!2#!327&#363&#!3654/654'f;33;$ $#>]a{w DD663! )327&#!36'hPcp~qAA k{qS3%!!!!!!-x9vq dddsd !!!!!#3#oQn.ddqs&&$#"32767!5!# !2deVRuu^oRaG@;@&5dSUmnHFcIf3%!#3!53#.nXddddq dddd fY6765%!#!53265-V?O?nqd J^ dd0 !3 #!3pdw@1q 2 !!!3ddo o !#!! !3!3_Gbn}qR+q  r'( ! '&76 7& 676'&&:żGlllli$ #ab2222jT%%5$c$-6&/.4%&  %5 64&/.$ Pdo&nŢmngzoʷ-[ʚ)'NXd''pui$2Xf| / 3%!!!!rpq ddq $!&%! 65! X!!Y fqba@`|gd5\*$ 3%! 3!dq d+D 3!3%! ! 3! !D5D:9:9d|q  d+l 3%! 3 ! #(\~vbL:H|dq d22{ 3!! #3ndp29V{{",34&'3!5#"&5463!54&#"5>3 5!">76a=Kd?`Twj6/^;:5Czӆ]YfaH..t''UNHGgwt-!>32#"&'!4'&'676763&#"327N:||:^,<<,9RKM_]daadt= z =OsKTdihtJq{#%#"!2&'&#"3276%M]-ULEmGJXHCQRHV,${z$d$$>:##dWS%&-!!5#"323327654'&'&#"N:||v9,<<,^(]_MK^daDDaZKsO=  =Td6Jthio}{!327# 32!.#"}K_mk)#i̩J@b]u-)8 CqzӾ/ 3476%#"!!!#5354763g.9:9|WX -8J_D8d97ddddTVqV{#.=65326=#"325!!"&32767654'&#"jlQR:||:Nry^,<<,9/KM_]=ʌo,*qdaDDad-w=  =OsKihtJH "34'&3'!>32!4&#"! GS5‡OIƁkk h@[:Lded\ПU5 33#!!JKOhV #676#532765!3#%G(=1l$%OQRaеT0Hd01``2 !3 #!3OHіmdi#L&5#"'&5!3J=(G%RQOLiH0T0Z``~J^d{"&1<!>32>32!4&#"!4&#"!3%34'&%34'&OIƁԝTށkkkkd[ GS5 GS5`edJv\П\ПUh h@[: h@[:H{ "34'&%3'!>32!4&#"! GS5‡OIƁkk h@[:hded\ПUqu{ #2#"27&"676'&s3x33x3d4'pp'3(pp({98  kp-$-R-ۀ-qV{-%!!>32#"&4'&'&'676#&#"32N:||9,<<,^؆]_MKdaaKsO= z =oHJthiqV{-%!!.#"326476767&'&3632#"N:||v9,<<,^(]_MKdaaKsO= z =oHJthi{3'!>32.#"!N:4I,hdfc˾zo{E67654'&/&'&5432654&/.54632.#"#"&'i'K&'q4=B%%U+.39GSOjqL4vfLJ\_opPx3Zl=vf03"3;@{R?Bsl37'*7CoT78^UNO,, z1$YXDL#/%%7%&7#!!;!"&5#53*\{KsբjU|7N(dUNdudTD` "%&'&5##!5#"&5!3265! GS5CIƁTkkTS hl[:hded0=` 3%! 3!YT^^d\hdTV`3!3%!!3! !bTNdhhdjjjL` 3%! 3 ! #U|p|[hd-s=V`7%! 3+53267>^]_lP|XQ+ۙdi8{dCYXb` 3%!!!5!\vwhddhddh$%s'&'(#)s*;+,f-j.j/031s23s4T567)8h9D:=;;<\={-{DEq{FqZGq{H/IqVZ{JdKyLVyMNyO{Pd{Qqu{RV{SqVZ{TJ{Uo{V7WX`X=`YV5`Z;y`[=V`\X`]ZJsddh @03#u)@ dd1<20KTKT[X@878YKTK T[KT[X@878YKTKT[X@878YKTX@878Y@````pppp]3#%3#^ys@B10KSXY"K TX@878YKTX@878Y@ %%6FVjg //]]3#7Ju@!  VV 99991<2990K TX@878YKTX@878Y ]'.#"#4632326=3#"&9 $(}gV$=09" (}gT";9! 2-ev 3)dw @B10KSXY"K TX@878YKTX@878Y@*$$5CUU//]]#ę1w@ 91<90K TX@878YKTX@878YKTX@878Y@ //- ]3#'#Ӌ1@ 91290K TK T[K T[K T[X@878YKTX@878YKTX@878Y@ "  ]373Ӌ 9 #.#"#>32v cSRav 6978w{z9 j@ VV120K TX@878YKTX@878YKTKT[X@878Y332673#"&v cSRav 6978w{zfGd10KTKT[X@878YKTX@878Y3#@1<203#3#䙋N#!#ęę53#73#'3# 3#3#'3#}}d 3#3#'3#}}d3#3#d 3#3#3#3#dd&;#"'&'#"'$&733$767654'3F??7KXY~XZ\,>%!$'$&73!2%7&'&547676323!!"'654'&'&#"xhn}@AQ+"R:4RQP ioh4"(=)1$+<'g\^sM6,|y$K2S%jAzG' <8BN?0654'&323276767'&54767632#!V)B,4((7(*HTO<?aNbNLZB`.NJ|m+M;3*)3P& ]027EW4,E$2Hf3Џ,' !5;#"'+5327&'&54767632"67654'&'&f$'و'$A??8 D?$ 9P2*I1C299(M.L,0W 5+5DE2.4! k .@%&'&'&547676323!!#'$'&5473!2766'&'&#"B.y9()Wp8c20-=^E>><l/"'"3 9Ld/  #+m=E2X:zFNV}`kL:DbZzWK# :<,; ? &R~&R %4'&"2>"'&4762<R8R8z?@?@@?@(8)*8@@@@@?? ''&'cRP~&'cRP' &cL~&cL >&]8\K&]X>K&]X >&?\F& >F&  >&\F&>F& >&'?>\L&'8 >>L&'8 3_+ 5__bV'J@!B  6991/<2990KSXY"]33+532765#ոRQi&&}``01}` 2@  F <<221/<20@  @ P ` p ]33###53ø`<ĤV.` 54!333##"3276!5R w{i&V`p?`3A0c3'q=Ua4'q[^3'Pq=cZ'dUcZ'dUaZ'dqaZ'dqvj 3'\q=cZ'bUvj V'}\cW'u|vj0Z'@d\c:'u(Dcm:'Duvc u'uvV Y'PpVZ'PdVZ'PdV'Pc['uPj&Z,,!!,,O=32653#"&[hq`=QQ, &&_ &3;#"'!5 767654x I*e2D0# &pgM,>ꅗ:H~#'_`'_S'_SF'_8@'_+ 'cY~@'_+ 'cZ ~r'_>9 9F KSKQZX8Y1/0@  @ P ` p ]3;#"&5Li a^q%qqu `&JOw`73#!!dž$Nd`Vw`#676#732767!5ʆ#5H2K1i0/N)deеT0Hd01``vg`'`&3#3## !#3!53#^ժ ?!5 ?8'TXZ8 U'UXZ8'ZT8'WXZ8 U'XXZ8 'Z,W$'W]$'X]N@ T1/0333N@T 1/20%3!533yոBy@ T1/0)533ysոBq8@ E EԶ0]991@  /0 6& #" 3 *NYh> éA@E E Զ0]91@    /<20 6& "'!53&54 3 *NNJhh> é!8@ E EԶ0]991@  /0 6& &54 #"'!5 hYNJ>z=x 4@   2291@  /290)33!x³j*]Qix 6@   2291@    /2290%!5!33xtj³瓓]Qi' 4@     2291@    /290#5!33j³]Q=q) #33mCq"q )5333!mm"q)533#mOq $@  1/2<0)3!33OkUq""Oq (@   1 /22<0)533!33OιUΓ""q $@  1/2<0)533!3kιU"Oq $@   <1/2035!!5!3ΓK"Oq $@   1/20#5!!5!3ΓK"q @ 1/0!5!!5kqKq!&'.4> !2>4."RJr 惃sKR9[ZZ 1ũbbŨ1 p`88`p`88!#5!&'.4> !2>4."RJr 惃sKR9[ZZ{ 1ũbbŨ1 p`88`p`88O#5!&'.4> 2>4."RJr 惃sKRQ[ZZ{ 1ũbbŨ1 p`88`p`88O &@    21 /03"3#!5!>k fO "  21 /03"3#!5!>c f $@   21 /03"3#!5!pk fq7@ E<21@  /<20!!##"&6 !354'&"3.Cf^v ]8mr^<Uf"qɃ]8ƃ;@! E <21@ /2<20%!##"&6 !3!554'&"3.Cf^v7]8mr^K<Uf"Ƀ]8ƃ7@ E<21@  /<20%!##"&6 !!554'&"3.Cf^v]8mr^K<UfɃ]8ƃ ,@   <<1@  /03!!!!!55Փ/ 0@   <<1@   /20#53!!!!!55B/D ,@    <<1@  /0)53!!!!ys55B/= ,@  <<1@  /0!!5!!5!355ߒѓ 0@  <<1@  /20#5!!5!!5!355ՓLѓ ,@    <<1@  /0)5!!5!!5!,55Lѓ *@  <1@   20!!27654'&3!23,R4,,=ٹUiXO]Oz}I_"_Ҥ.@  <1@  /220#533!23!!27654'&ιUiXO,R4,,=B_Ҥ]Oz}I_ *@  <1@   /20!!27654'&533!2#,R4,,= ιUiXXXl]Oz}I_"B_ҭ@@  ܲ_]9@  /999@  10!4'&'5!!5Mc4B_9V@9D@   ܲ_]9@  /2999@  10#5!&'&'&'5!! 5Mc4BX]9V@9$@@   ܲ_]9@  /999@  10#5!&'&'&'5! 5Mc4B X]9Vq=:@   91@ /̲]촍]0!533T9 >@  91@ /2̲]촍]0#5!533hՓL9 :@  91@ /̲]촍]0#5!53hL9+#1@%!$1@  #/2203432>3234&#"!4&#"!}x5%^qZHZlK--Xh|ŕnc%5@'#&1@  $/2220#53432>3234&#"!4&#"!}x5%^qZHZl[K--Xh|ŕnc#1@%!$1@  "/220#53432>324&#"!4&#"!}x5%^ZHZl[K--Xh&|ŕnc= -@   <<1@  /<<0!!5!3!!!KK?1@   <<1@  /2<<0#5!!5!3!!!KK? -@   <<1@  /<<0)5!!5!3!!@KK?=X>@ <<<<1@  /2<<<220%!!5!3!3!!!=KøL??XB@  <<<<1@  /22<<<220#5!!5!3!3!!!%!KøL=??>@  <<<<1@  /2<<<<<0)5!!5!3!3!!!0KøL=??Oq %@   1/203!3!$Uq"KOq *@    1@  /220#53!3!$U"Kq %@  1 /20)53!!kUޓK=!!!tFs0hB~ !5!!!tFlhhB~B!5!!tFlh0B~B+ 8@!  <<1@    /2<20327654'&+!!!2/!m]%i ; @ED\qQE=4."RJrCEoJRXErrJS9[ZZ 1SV/ { 2Ʀ1 "p_88_p`88*#5!5&'.4767675!5!!2>4."RJrCEoJRXErrJS9[ZZ 1SV/ { 2Ʀ1 "p_88_p`88O(#5!5&'.4767675!5!2>4."RJrCEoJRXErrJSQ[ZZ 1SV/ { 2Ʀ1 {"p_88_p`88Q %@   1/0!!#!3BQ *@  1@  /20#5!!#!3ԓ} %@   1/0#5!!#!+Q (@   <1 /0!!#3!3OQ -@   <1@   /20#5!!#3!3ԓ} (@    <1 /0#5!!#3!B /@   <<1@   /20!!!5!3z;  K"qѓB3@   <<1@  /220!53!!5!3z;7 K"ѓm /@    <<1@  /20!53!!5!z;7 K"ѓ+q &2>4."&'.4767673! [ZZRJrCEoJRXErrJS"p_88_p`88~ 1SV/ { 2Ʀ1  (2>4."!5!5&'.4767673 [ZZlRJrCEoJRXErrJS"p_88_p`88 1SV/ { 2Ʀ1 O &2>4."5&'.4767673!5 [ZZRJrCEoJRXErrJS0"p_88_p`88 1SV/ { 2Ʀ1 {q*!&'.4767675!5!!!2>4."RJrCEoJRNXErrJS9[ZZ 1SV/ 2Ʀ1 "p_88_p`88 ,%!5!5&'.4767675!5!!2>4."RJrCEoJRNXErrJSQ[ZZ 1SV/ 2Ʀ1 p_88_p`88O*)5!5&'.4767675!5!!2>4."0RJrCEoJRNXErrJSQ[ZZ 1SV/ 2Ʀ1 p_88_p`88 '' '' '' '' '' '' '' ''  :@   @ ? o ]9999991 2<0#'##'##'d2222222dddddV!#!3!3#3jժVV8`!##333#{}`9V$36767#"&546?>7>5#53!Ya^gHZX/'-93B$BS #C98ŸLVV/5<4,5^1Y7=pM_<& r Um Q rf55q=3=dd?y}s)3s\\?uLsLsyD{={\{fqqq/q999qqJ+o#7=V;=3X55^R\sd5^5bs#5`b?yyyyyys\;\\\3 LsLsLsLsLsLf {{{{{{{fqqqqq9999qqqqqqH==y{y{y{sfqsfqsfqsfq)q3 qqqqqq3sq3sq3sq3sqTx\9\9\9\9\9r\9?uXu9uuFLsqLsqLsqs/qJJJ+o+o+o+o#7#7#7DV={\3X{\3X{\3X/ }}ssfq3 }qqLu3s~\ 9 =LsNgvsq7r+d#7#7N={\3XTT\h3qT]hX\] ` d <qKsday{\9Lsqqy{y{{3sq3sq?LsqLsqTX9 ` d <q3squy{{LfHy{y{qq\9\9LsqLsqJJ+o#7,Gqqq{\3Xy{qLsqLsqLsqLsq=79qqy f u +o3XPP}  yq\9@sq J qefqqqqq|SA4Pq9qq q``9t*KL:+#qqGpPPOJI~>t+o7#7#7q=V=f3X3XXmXXXXLsPqq;VVqXXqvqq77:7/ <66JO<u1ufu]H^H 6&:uuuuuu  3s3soouuuuMLhuTzuuuq7]yq U zw(j#Lcxhc+qc3x+x.pppp*pw::efqesDy}uy{\Ls\?yLsLs{=LsN\Fqc<Fq qSZkq=xJvkqJqqdGp;GpqqWWGpAOpLsq0q@GGrwxssFqU-~Od$s6sq,J7Opfq9Lsqs5UsssJs\\\T\J#y}}@e(!TLss#y{=6|<}o{p4kq5FA33L ;q;fq<=p;rR>Qdqtqq/4dq+o9998L07/3=;xs*` D3 GLsk7sS[2Lsq@R2@R2s<qsq pv9xssfq;XXX.j}!&4fG8=(5F!A!=2*IS^s6qsfq<=={=;yt|||\(5F?56].I6r|29y{y{{qLuqLuq(5F!ATX33LsqLsqLsqodq#=#=#=|4QfG8{=;{=;}q -qn6.3sGq/STL&tuA&7\\S&esR\Lsuu^x"6^Zq"qDq;' qqF92 F &q/qzw`DDcc/NDdc\\fcXCX.X0.XsXXEX.XXN*CCMXwBS(?99l9lC91***}} ffuuXK5k1CCOOLLLRLLLLLUL<L<LdL\W5kVz*******KKK))*CC1LLLRLLLRLjLL<L<Ld9qd==;;q;q=x==D=;==p==q==.qqB[B[{d{d7]xlxr[")>WE_HHY"~h~h@rx2OsN~sxMn`P{P@@@@`NzBza\d>N c c]ccY]dji:~:~PZ"ZPZ|ZPZ}PPZPZXZPPP|ZPP*FZnP\ZZZFdZWPPWFZdZddDPGd.d#ddadd%dvd-d/Cd$d/dWd/?d1<Nd/dBd/d-d-d/d/F.Z#d{ddddddd.ndmd?dndyyyy'''''w'w'ww'w Xc^c^%H Ewyyyywwwwwwwwwwwwwwwyy^^^l4wl4w4y4yywyFFFF*F*F*FAA8F3F3FFFF*F*F*Fzzwuuuw.wwuu&w&w&wwFF wwwFFGwyFyFFwFFFwwwFFGwy=Fy=FGwGw=F=FwFFJFFFV+V+FFV+V+VY]YFFF"F"F"F"FGFGFGF F F F F wwWww?w?w?wYSSwSwSSSFFFFYwyyyyMMwwdwSSyy4yFwwFFww```````FwFw     FFwwFF%w%!%!%w%w%!%!Y )#su` z    s 4 s 3  E p 2 O 3wq= {>fq$S9( 3qfyqyqy3/qqq222</=V3X5x=2ZLr u//SH||NYHG p+"M"M>G/Mmu>GVGVGTR>GnzhuuEuOGGOGOGmu\#=nnuV&7yGSG%nzu=nV&7yKySG%t9>GGGOGT_>G=nIzIIVz[quuIuEqOGOGFK\#^YGu@zV&7~77#7OG[[[[BBy{}}}sfq)q)q)q)q)qqqqqq/3sq\9\9???uMuMu9u9LsqLsqLsqLsqJJJJT+o+o+o+o+o#7#7#7#7y=y=DVDVDVDVDV{=;{=;={\3X{\3X{\3X#V={/y{y{y{y{y{y{y{y{y{y{y{y{qqqqqqqq\Z9D\9LsqLsqLsqLsqLsqLsqLsqNgvNgvNgvNgvNgv====FqFqFqFqFqFqFqFqyy'iSSSSSS0l7hx qqqqqqoE.k_FqFqSc<qqFqFqFqFqFqFqFqFqyy'i7hxk_FqFqFqFqFqFqFqyyy<pr\\D~{aNsVddddd%%%%9933W q q(()((()( 33?nn=V`Jd=n=n8N(ffadp5Wnz5?5f5\5l5Y5S999og0u5W55^5b5?5f5\5l5Y5S999og"MVGOGuVGVs`u .;F_( ..D]1u!===P=&C&Cs#&<<oI H#;jDN hR6nLsbBSV,y('y\XNND?yJ\}WJT9hgd(V FhZ $<|3uuWZ[O=;6Q^^b?fbfl\bya W{=w= =us)9~=}== ]=;;;9fqq y) ysedud    du,dudududvdvdd*ZZd-Opdduudwddxvxddddudud  dududuku7^H^^^@^^^uzz^uwududdud7u7y#hZZ,dVD===j,,ff+uPuuu+uPuuu+u+u+uyyy``**yyby* a aXXJr;xxdxxd++* 8 8 P 8 x PFq 8#+7',,,,,,,,,,xxxxxxx||''''''''''''''''''''''q''''''''''llgg'''''''''''''''''pprppppppppp7p7Tpp''''3'''ppppp'''',h,d,,,,+,}}_}} ,,,B,d,,,,,,,,,,},,,dZd2E\,,,,,,,,,,,,,,,,,,,,,,,S,,,,,],,,,,m,,E,,,,A,,,U,,Q,0,,,U,,L,0,C,,X,,B,,X,,,x, ,,,,,,,,,,,,,,1,,,,,,,,,,,X,X,j,, T},y,},),,,,,d %6  dT VIVVx+5X3ppppR >pTVSTWW/V0/0002p@TTTTpnnTVaaTT,f,z,z,z,z,xNNx>NnX~#9Uwlf,,,,,,,,,,                    uuuuuuuuuuuuuu++<uususs[YOO Bu xd xu xd xd xu xd xd xu xd xu xu,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,duwOwO::: u+u+u+u+u+u+u+u+u+u+u++u+u+u+u+k  77^^  7^uuHH''''$"u 9 u H#?{\3X@sy= DVh<Gp,qssu@xC@~yyv{\{\ssg)?>8{\(oo:o\:o\csssss$d{=syNsNs6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,q/ / ///}/o } <^VN1X?,XXuXXeeeeNNN>XCXQ~XwQ"XTXXXX,X6TC"Xe.>XTXTX:j:j:j:j:j:jKH KH ************jj))k))k":jC:jp*XXXiXXXXXXXXXXX9p9lpl"9lplC:j9p:j1J:j:j*********}3}}3}jj 3# 3#  f^f^uBuuBu/KH 5kk kpSI:j1J8"CC:j..TT4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,c3s$f"=3LrDrl{fqo/q5 "qqq+o7=HVhL=Xy}s)3s\\?uLsLsyD{={\{fqqq/q999qqJ+o#7=V;=3Xds N:jH k :j:j:j********_9xxxxxxxxvxxvxxvxxxvxvxxxx,p:jj9Jqq9O99:::qd=dd=;;;;;;q;;;q=xxx==D=DD;;;====p==q======...qq,,,,,,,,.j?< 0 $%*K-r294K7D9:;< R&Y\99999 &&&&&K&D: $$$$$9$&$*$2$4$7a$9}$:$>?@<@<@ABPChDDFFGHIIJKPKLLM$MN0NO@OlOP$PQ|QQQRRSS0S`STUUUUVV8VPVhVVW|WWWXX<XlY4ZlZZZ[[[\\]]4]`]]____``$`<`T`x`bLbdb|bbbc chdde e,e\etffDfpffffgg,gDghggggghh,h<hii4iXi|iiiijj,jPjtjjjjjkk@kl lllm m0mTmxmmmn$nHnlnnnnoop$p<p`pxpppqdqrr<rTrlrrrsxtt@t`ttttu|vvvvww(wPwhwwwwwx$xHx`xxxxyLyzz4zdzzzz{{,{D{\{t{{{||$|<|T|l|||}}~~t8X|T`P0\D` d <L8Ph\,4@tX``4L $<TlD\| 8Ph ,D@XpP0H`x 8Ph(@Xp0H|L $<TlhT|h°LĨdƌhɜ4ˈh(μ`ЀАРѼ҈ԬH<0׬DdttT|L ߸L4\PP@LTx0Pxl\| H|Ht0|DT$\( 8 X  T   L t   t  , \ l      (    0T(\@h8X,@`\DXlDh Lh\<PdxXt  @ l  !H!d!x!!!!!!"$"L"l"#\#t###$$,$@$$$$$$%h%|%%&&8&H&`&x&&'' '0'L'h''''''((@(((()))** *0****+<+L+\,,,,-p----...0/0012P23p4845556,667t889H9:4:<<=(=@=X=p==>p???@@A8ABCHCD,D<DEE<EFFGTGHHIIJhKKL`LM4MlNNNNNO$OOOOOP8PPPPQQR<RTSSS S0S@SThTTUU UxUVVVPVVWXYDYZZxZZZZ[[[ [\X\h\]]x]^d^|^_`\`aablbc,c<d,de`ef0fggpggggh,h<i$i4ijjdjkLkdklxmmmndoo ooooppq4qqqr rds<sLsttuuLuuv@vwwxxyz0zzz{{P{h{|$|}~t0H`$p<dlP<0H(t$Tpd8t@<L($<Td|TdT0|@P`(@Xhx4DTl,D\t $<Td,xDxTdP,HTd,`D@((l$P` <L PÈ|tƈdXhT$ẗ́P`H\4ѰӠӰLՌ8֌@(P`4`٘4ڄpTܠDݘpިd(p$||<\X(@\t<T<T4P\l<X`tTTTPLPh0H`x  0Phx`DTdtP0t`,(l(h4            p lp 0X,pP| \`t4xX  !\""#$l%(%&'L'h'(t(()`)*\*+ ++,-,-D-.l.//0D01,1@112p23t345\567<8L949: :; ;l;l>??@p@A<ABdBC4CCDXDE EF FGG\GHHI IJHJKK|LLhLMdMNN|O$OOPLPQQQR<RS<ST,TTUhUV,VW0WWXhY YYZ`Z[L[\ \\] ]p]]^^^^^^_@_X_p_____```0`H```x`````aa<a\aabbTbbbcc0cTclccccccddhdddee,eDe\eteeeeefff4fLfdf|ffg(g8gPggh<hThlhhiii4iLidi|iiiiij j$j<jTjljjjkk(kkl8lPllmmmmmmmnn(n@nXnpnnnnnooxooopp,pppqq`qxqqrrr0rHr`rxrrrrrss s8sPshsst0tHttttuuu(u@uXupuuuuuvvv0vHv`vxvvw,wLwwx`xxxyy yyyyyzz(z@zXzz{<{{{||h|||}}}4}L}d}|}}}}}~ ~$~<~T~~4((@XpP`Ld,D\t4L004Ld| l|$ ppTl,|H`xxp0H`xT8P,<Ld|  0H`x4`x $`x \`(@Xp,\,TT8HxHpHp`<X<xX@4l  | p4Dx@`0h(0@HTp”(LÀİ4ŜtƴLPȈɌ  4H\ʸ`p˰T̴8XΜhϴHЄPp҄Hxx p0֨PxרPؼ(Hlِٰ $<Tlڄڜڴ,D\tیۤۼ4Ld|ܔܬ4Ld|ݔݬ $<Tlބޜ޴,D\|ߔ߬ $<Tl,D\t $<Tl,D\t,D\t4Ld| $<Tl,D\t4Ld| $<Tl,D\t4Ld| $<Tl4Ld| $<\t4Ld| $<Tl,D\t4Lh0H`x4Ld|0Hd0H`x8Tl0Hd(@\t $<Tl (D\l $4L\t4Ld| $<Tl,D\t4Ld| $<Tl $@Pl|(8Ph(@Xh$@Xhx 8H`pDp 0 l   $    h  , H `         |8\@p|,H <pLdPx(d444444444444<0d0DXl   D !!|""#h$8$%H%`''\')@)*t++t,,,,--<-t--./001@12t22234505567<8899\<<=`=>p?@A4BLBCCDDEEEEFFFFGHI,IJpKPK|LMMNHNOLOPPQ QQRR\RRSS<STpUUHUVHVVVVWW8WXWxWWWWXX0X@XXXxXXXXYYY(Y@Y`YpYYYYYYZZZ(ZHZpZZZZZZ[[[]]^^^_p` `accDctccd dleeffTffg4ggghhiLijXkklmTmmn nDn|nnopop,pq@qrXrrssst tDt`t|ttu(upuuuvXvw@wwxx@xxy8yxyyz8zxz{0{{|(|p|}}D}}~~H~~@l@$|d@|P4h$,H$P h|h8T@ T,HtpLT(@4l8h$4xH(8|xLXl,XPDX pl` plD\L˜LŌtXXɼ0T|ʠ$T˔p0`͌h$hό,Ѐаl dҤ@Ӥx0ՄռH֜0,ؔ,٤ڤ,ۄP(L(ހޘ lL(\4l\|,T|4TtD4L0@P`p0hHh< xHt 0<|    < X    8 p   D h    @d0PtDtDpDpDl8dP X4h(T(T@l,\8xPLDx  , H d     ! !D!l!!!!!" "("D"`"|""""##$#8#&''''''((((D(`(t(((()D)\)*+P+,`. .<.h....//L/h////0080d000011<1X11112242h23<33456`677t78,889 949p9:<:::;;D;;;<<<4<|<<<=$=`===>d>>?$?d?@d@AdAAABB$BPBlBCCDMPpPQ Q\QRTS STPTWxZXZ[[|[]4^_(_\`Pa$abTccdehhiljl0oppqqxqrsuuv4vww(wHwhwwwwy\z,z{|}X}~hXlx|LdL8   ,pp8 h,` ,hh $0L(@8\DlT\ǨȐɜʔ(Hϐ XӜ\P״@ތ@ 0p<4$hx\0t$ht`8`T  d(H( @ !!!"L"h"""#,#D#\$8$%%&p'(x()T)))* *H*t***+ ++,d-.P./114D57D89:4;<=(=? @8AhABC`CDEdEFG|H@HpHHHI$IIJJTJJKK0KPKKLLLLLM0MMNNtNO8OP4P|PQ`QRlS<STV VVWWPWxWWWX(X|Y@ZZ[\\]|]]^X^^__h__```0`D```|````aa,aPataaaabb,bPbtbbbcc0cTccccdd,dPdldddde eDepeeef f<f`fffgg,g`ggghh<hphhhii,iPiliiiij jDjpjjjk k<k`kkkll,l`lllmm<mpmmmn nDnpnnno oDopooop0pdpppqqPq|qqr rLrrrs$s`ssstt,tPtlttttu uDupuuuv v<v`vvvww,w`wwwxx<xpxxxy yDypyyyz zDzpzzz{0{d{{{||P||||} }L}}}~$~`~~~ Dp Dp0dP| L$`0\$`0d L$`P P,x|\ T8lPx\tPlpT8PhdDHh(0l(p8HdT\H(<\0\P(T4d@|\ hTP`0`œÀ(ň  ǐ ȀL˴Hʹ t<HX4ҠH,Ԍl8 t؄@PڔD\t݌ݤݼ4Ld|ޔެ $<Tl߄ߜߴ,D\t4Ld| $<Tl,Dhtd `P $<Tl,D\t4Ld| $<Tl,D\t4Ld| $<Tl,D\t 8HXp h|0H\t $<Tl @Xp0H`xTl(  , D \ t   x        l,D\th\lXhx 8Phx<L $<Tl@@@@@@ <Xt 4\(P| Hp  < h   !!0!\!!!""("P"x"""##H#p###$$<$d$$$%%0%X%%%%&(&P&x&&&''D'l'''((8(`((())0)X))*\*++D+, ,X,,-(-.`./ /H/00L0122334H445P556778889 9:H::;X;;<@>> >0>@>P>`>p>>>>>>>>??? ?0?@?P?`?p????????@@@ @DAAB|C$CDlDE@EEFF FDFtFFGG|GGH\HIJ`JpJJJKK K@K`KxKKKKKLL L8LPLhLLLLMMMN@N\NxNNNNOO O<OXOtOOOOPPP8PTPpPPPPQHQ`QxQQQQRRdRtRRRRS0SHS`SSSSSTT,TDT\TtTTUU<UVlVWdWX<XlXXYYpYZZTZ[[x[\@\\]^,^_$__`@`aabbccd8deelffg`gh0hi ij@jjkDkxkklm<mnHnoopTpq<qqrrPrssttdtu uduvvvwhwxlxytzzzzz{{,{P{t{{|(|d|}T+h @h>2   : `   (Z4;b ;; 0    " F m " : %: h: ; ;Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu SansDejaVu SansBookBookDejaVu SansDejaVu SansDejaVu SansDejaVu SansVersion 2.24Version 2.24DejaVuSansDejaVuSansDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SansDejaVu SansBookBook~Z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ sfthyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflex Tcommaaccent tcommaaccentTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni018Funi0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEUhornuhornuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0221uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0234uni0235uni0236dotlessjuni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0242uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni0259uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02AEuni02AFuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BBuni02BCuni02BDuni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02C9uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02ECuni02EDuni02EEuni02F3uni02F7 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322 dotbelowcombuni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni034Funi0351uni0352uni0353uni0357uni0358uni035Cuni035Duni035Euni035Funi0360uni0361uni0362uni0374uni0375uni037Auni037Buni037Cuni037Duni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammauni0394EpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1Upsilon1uni03D3uni03D4phi1omega1uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni03F7uni03F8uni03F9uni03FAuni03FBuni03FCuni03FDuni03FEuni03FFuni0400uni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Duni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0450uni0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Duni045Euni045Funi0460uni0461uni0462uni0463uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471uni0472uni0473uni0474uni0475uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Duni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048Funi0490uni0491uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8uni04D9uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9uni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0510uni0511uni0512uni0513uni0531uni0532uni0533uni0534uni0535uni0536uni0537uni0538uni0539uni053Auni053Buni053Cuni053Duni053Euni053Funi0540uni0541uni0542uni0543uni0544uni0545uni0546uni0547uni0548uni0549uni054Auni054Buni054Cuni054Duni054Euni054Funi0550uni0551uni0552uni0553uni0554uni0555uni0556uni0559uni055Auni055Buni055Cuni055Duni055Euni055Funi0561uni0562uni0563uni0564uni0565uni0566uni0567uni0568uni0569uni056Auni056Buni056Cuni056Duni056Euni056Funi0570uni0571uni0572uni0573uni0574uni0575uni0576uni0577uni0578uni0579uni057Auni057Buni057Cuni057Duni057Euni057Funi0580uni0581uni0582uni0583uni0584uni0585uni0586uni0587uni0589uni058Auni05B0uni05B1uni05B2uni05B3uni05B4uni05B5uni05B6uni05B7uni05B8uni05B9uni05BAuni05BBuni05BCuni05BDuni05BEuni05BFuni05C0uni05C1uni05C2uni05C3uni05C6uni05C7uni05D0uni05D1uni05D2uni05D3uni05D4uni05D5uni05D6uni05D7uni05D8uni05D9uni05DAuni05DBuni05DCuni05DDuni05DEuni05DFuni05E0uni05E1uni05E2uni05E3uni05E4uni05E5uni05E6uni05E7uni05E8uni05E9uni05EAuni05F0uni05F1uni05F2uni05F3uni05F4uni060Cuni0615uni061Buni061Funi0621uni0622uni0623uni0624uni0625uni0626uni0627uni0628uni0629uni062Auni062Buni062Cuni062Duni062Euni062Funi0630uni0631uni0632uni0633uni0634uni0635uni0636uni0637uni0638uni0639uni063Auni0640uni0641uni0642uni0643uni0644uni0645uni0646uni0647uni0648uni0649uni064Auni064Buni064Cuni064Duni064Euni064Funi0650uni0651uni0652uni0653uni0654uni0655uni065Auni0660uni0661uni0662uni0663uni0664uni0665uni0666uni0667uni0668uni0669uni066Auni066Buni066Cuni066Duni066Euni066Funi0674uni0679uni067Auni067Buni067Cuni067Duni067Euni067Funi0680uni0681uni0682uni0683uni0684uni0685uni0686uni0687uni0691uni0692uni0695uni0698uni06A1uni06A4uni06A6uni06A9uni06AFuni06B5uni06BAuni06BFuni06C6uni06CCuni06CEuni06D5uni06F0uni06F1uni06F2uni06F3uni06F4uni06F5uni06F6uni06F7uni06F8uni06F9uni07C0uni07C1uni07C2uni07C3uni07C4uni07C5uni07C6uni07C7uni07C8uni07C9uni07CAuni07CBuni07CCuni07CDuni07CEuni07CFuni07D0uni07D1uni07D2uni07D3uni07D4uni07D5uni07D6uni07D7uni07D8uni07D9uni07DAuni07DBuni07DCuni07DDuni07DEuni07DFuni07E0uni07E1uni07E2uni07E3uni07E4uni07E5uni07E6uni07E7uni07EBuni07ECuni07EDuni07EEuni07EFuni07F0uni07F1uni07F2uni07F3uni07F4uni07F5uni07F8uni07F9uni07FAuni0E3Funi0E81uni0E82uni0E84uni0E87uni0E88uni0E8Auni0E8Duni0E94uni0E95uni0E96uni0E97uni0E99uni0E9Auni0E9Buni0E9Cuni0E9Duni0E9Euni0E9Funi0EA1uni0EA2uni0EA3uni0EA5uni0EA7uni0EAAuni0EABuni0EADuni0EAEuni0EAFuni0EB0uni0EB1uni0EB2uni0EB3uni0EB4uni0EB5uni0EB6uni0EB7uni0EB8uni0EB9uni0EBBuni0EBCuni0EBDuni0EC0uni0EC1uni0EC2uni0EC3uni0EC4uni0EC6uni0EC8uni0EC9uni0ECAuni0ECBuni0ECCuni0ECDuni0ED0uni0ED1uni0ED2uni0ED3uni0ED4uni0ED5uni0ED6uni0ED7uni0ED8uni0ED9uni0EDCuni0EDDuni10A0uni10A1uni10A2uni10A3uni10A4uni10A5uni10A6uni10A7uni10A8uni10A9uni10AAuni10ABuni10ACuni10ADuni10AEuni10AFuni10B0uni10B1uni10B2uni10B3uni10B4uni10B5uni10B6uni10B7uni10B8uni10B9uni10BAuni10BBuni10BCuni10BDuni10BEuni10BFuni10C0uni10C1uni10C2uni10C3uni10C4uni10C5uni10D0uni10D1uni10D2uni10D3uni10D4uni10D5uni10D6uni10D7uni10D8uni10D9uni10DAuni10DBuni10DCuni10DDuni10DEuni10DFuni10E0uni10E1uni10E2uni10E3uni10E4uni10E5uni10E6uni10E7uni10E8uni10E9uni10EAuni10EBuni10ECuni10EDuni10EEuni10EFuni10F0uni10F1uni10F2uni10F3uni10F4uni10F5uni10F6uni10F7uni10F8uni10F9uni10FAuni10FBuni10FCuni1401uni1402uni1403uni1404uni1405uni1406uni1407uni1409uni140Auni140Buni140Cuni140Duni140Euni140Funi1410uni1411uni1412uni1413uni1414uni1415uni1416uni1417uni1418uni1419uni141Auni141Buni141Duni141Euni141Funi1420uni1421uni1422uni1423uni1424uni1425uni1426uni1427uni1428uni1429uni142Auni142Buni142Cuni142Duni142Euni142Funi1430uni1431uni1432uni1433uni1434uni1435uni1437uni1438uni1439uni143Auni143Buni143Cuni143Duni143Euni143Funi1440uni1441uni1442uni1443uni1444uni1445uni1446uni1447uni1448uni1449uni144Auni144Cuni144Duni144Euni144Funi1450uni1451uni1452uni1454uni1455uni1456uni1457uni1458uni1459uni145Auni145Buni145Cuni145Duni145Euni145Funi1460uni1461uni1462uni1463uni1464uni1465uni1466uni1467uni1468uni1469uni146Auni146Buni146Cuni146Duni146Euni146Funi1470uni1471uni1472uni1473uni1474uni1475uni1476uni1477uni1478uni1479uni147Auni147Buni147Cuni147Duni147Euni147Funi1480uni1481uni1482uni1483uni1484uni1485uni1486uni1487uni1488uni1489uni148Auni148Buni148Cuni148Duni148Euni148Funi1490uni1491uni1492uni1493uni1494uni1495uni1496uni1497uni1498uni1499uni149Auni149Buni149Cuni149Duni149Euni149Funi14A0uni14A1uni14A2uni14A3uni14A4uni14A5uni14A6uni14A7uni14A8uni14A9uni14AAuni14ABuni14ACuni14ADuni14AEuni14AFuni14B0uni14B1uni14B2uni14B3uni14B4uni14B5uni14B6uni14B7uni14B8uni14B9uni14BAuni14BBuni14BCuni14BDuni14C0uni14C1uni14C2uni14C3uni14C4uni14C5uni14C6uni14C7uni14C8uni14C9uni14CAuni14CBuni14CCuni14CDuni14CEuni14CFuni14D0uni14D1uni14D2uni14D3uni14D4uni14D5uni14D6uni14D7uni14D8uni14D9uni14DAuni14DBuni14DCuni14DDuni14DEuni14DFuni14E0uni14E1uni14E2uni14E3uni14E4uni14E5uni14E6uni14E7uni14E8uni14E9uni14EAuni14ECuni14EDuni14EEuni14EFuni14F0uni14F1uni14F2uni14F3uni14F4uni14F5uni14F6uni14F7uni14F8uni14F9uni14FAuni14FBuni14FCuni14FDuni14FEuni14FFuni1500uni1501uni1502uni1503uni1504uni1505uni1506uni1507uni1510uni1511uni1512uni1513uni1514uni1515uni1516uni1517uni1518uni1519uni151Auni151Buni151Cuni151Duni151Euni151Funi1520uni1521uni1522uni1523uni1524uni1525uni1526uni1527uni1528uni1529uni152Auni152Buni152Cuni152Duni152Euni152Funi1530uni1531uni1532uni1533uni1534uni1535uni1536uni1537uni1538uni1539uni153Auni153Buni153Cuni153Duni153Euni1540uni1541uni1542uni1543uni1544uni1545uni1546uni1547uni1548uni1549uni154Auni154Buni154Cuni154Duni154Euni154Funi1550uni1552uni1553uni1554uni1555uni1556uni1557uni1558uni1559uni155Auni155Buni155Cuni155Duni155Euni155Funi1560uni1561uni1562uni1563uni1564uni1565uni1566uni1567uni1568uni1569uni156Auni1574uni1575uni1576uni1577uni1578uni1579uni157Auni157Buni157Cuni157Duni157Euni157Funi1580uni1581uni1582uni1583uni1584uni1585uni158Auni158Buni158Cuni158Duni158Euni158Funi1590uni1591uni1592uni1593uni1594uni1595uni1596uni15A0uni15A1uni15A2uni15A3uni15A4uni15A5uni15A6uni15A7uni15A8uni15A9uni15AAuni15ABuni15ACuni15ADuni15AEuni15AFuni15DEuni15E1uni1646uni1647uni166Euni166Funi1670uni1671uni1672uni1673uni1674uni1675uni1676uni1680uni1681uni1682uni1683uni1684uni1685uni1686uni1687uni1688uni1689uni168Auni168Buni168Cuni168Duni168Euni168Funi1690uni1691uni1692uni1693uni1694uni1695uni1696uni1697uni1698uni1699uni169Auni169Buni169Cuni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2Cuni1D2Duni1D2Euni1D30uni1D31uni1D32uni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3Auni1D3Buni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni1D77uni1D78uni1D7Buni1D85uni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1DC4uni1DC5uni1DC6uni1DC7uni1DC8uni1DC9uni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200Buni200Cuni200Duni200Euni200Funi2010uni2011 figuredashuni2015uni2016 underscoredbl quotereverseduni201Funi2023onedotenleadertwodotenleaderuni2027uni202Auni202Buni202Cuni202Duni202Euni202Funi2031minuteseconduni2034uni2035uni2036uni2037uni2038uni203B exclamdbluni203Duni203Euni203Funi2040uni2041uni2042uni2043uni2045uni2046uni2047uni2048uni2049uni204Auni204Buni204Cuni204Duni204Euni204Funi2050uni2051uni2052uni2053uni2054uni2055uni2056uni2057uni2058uni2059uni205Auni205Buni205Cuni205Duni205Euni205Funi2060uni2061uni2062uni2063uni206Auni206Buni206Cuni206Duni206Euni206Funi2070uni2071uni2074uni2075uni2076uni2077uni2078uni2079uni207Auni207Buni207Cuni207Duni207Euni207Funi2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089uni208Auni208Buni208Cuni208Duni208Euni2090uni2091uni2092uni2093uni2094uni20A0 colonmonetaryuni20A2lirauni20A5uni20A6pesetauni20A8uni20A9uni20AAdongEurouni20ADuni20AEuni20AFuni20B0uni20B1uni20B2uni20B3uni20B4uni20B5uni20D0uni20D1uni20D6uni20D7uni20DBuni20DCuni20E1uni2100uni2101uni2102uni2103uni2104uni2105uni2106uni2107uni2108uni2109uni210Buni210Cuni210Duni210Euni210Funi2110Ifrakturuni2112uni2113uni2114uni2115uni2116uni2117 weierstrassuni2119uni211Auni211BRfrakturuni211D prescriptionuni211Funi2120uni2121uni2123uni2124uni2125uni2126uni2127uni2128uni2129uni212Auni212Buni212Cuni212D estimateduni212Funi2130uni2131uni2132uni2133uni2134alephuni2136uni2137uni2138uni2139uni213Auni213Buni213Cuni213Duni213Euni213Funi2140uni2141uni2142uni2143uni2144uni2145uni2146uni2147uni2148uni2149uni214Buni214Eonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215Funi2160uni2161uni2162uni2163uni2164uni2165uni2166uni2167uni2168uni2169uni216Auni216Buni216Cuni216Duni216Euni216Funi2170uni2171uni2172uni2173uni2174uni2175uni2176uni2177uni2178uni2179uni217Auni217Buni217Cuni217Duni217Euni217Funi2180uni2181uni2182uni2183uni2184 arrowleftarrowup arrowright arrowdown arrowboth arrowupdnuni2196uni2197uni2198uni2199uni219Auni219Buni219Cuni219Duni219Euni219Funi21A0uni21A1uni21A2uni21A3uni21A4uni21A5uni21A6uni21A7 arrowupdnbseuni21A9uni21AAuni21ABuni21ACuni21ADuni21AEuni21AFuni21B0uni21B1uni21B2uni21B3uni21B4carriagereturnuni21B6uni21B7uni21B8uni21B9uni21BAuni21BBuni21BCuni21BDuni21BEuni21BFuni21C0uni21C1uni21C2uni21C3uni21C4uni21C5uni21C6uni21C7uni21C8uni21C9uni21CAuni21CBuni21CCuni21CDuni21CEuni21CF arrowdblleft arrowdblup arrowdblright arrowdbldown arrowdblbothuni21D5uni21D6uni21D7uni21D8uni21D9uni21DAuni21DBuni21DCuni21DDuni21DEuni21DFuni21E0uni21E1uni21E2uni21E3uni21E4uni21E5uni21E6uni21E7uni21E8uni21E9uni21EAuni21EBuni21ECuni21EDuni21EEuni21EFuni21F0uni21F1uni21F2uni21F3uni21F4uni21F5uni21F6uni21F7uni21F8uni21F9uni21FAuni21FBuni21FCuni21FDuni21FEuni21FF universaluni2201 existentialuni2204emptysetgradientelement notelementuni220Asuchthatuni220Cuni220Duni220Euni2210uni2213uni2214uni2215uni2216 asteriskmathuni2218uni2219uni221Buni221C proportional orthogonalangleuni2221uni2222uni2223uni2224uni2225uni2226 logicaland logicalor intersectionunionuni222Cuni222Duni222Euni222Funi2230uni2231uni2232uni2233 thereforeuni2235uni2236uni2237uni2238uni2239uni223Auni223Bsimilaruni223Duni223Euni223Funi2240uni2241uni2242uni2243uni2244 congruentuni2246uni2247uni2249uni224Auni224Buni224Cuni224Duni224Euni224Funi2250uni2251uni2252uni2253uni2254uni2255uni2256uni2257uni2258uni2259uni225Auni225Buni225Cuni225Duni225Euni225F equivalenceuni2262uni2263uni2266uni2267uni2268uni2269uni226Auni226Buni226Cuni226Duni226Euni226Funi2270uni2271uni2272uni2273uni2274uni2275uni2276uni2277uni2278uni2279uni227Auni227Buni227Cuni227Duni227Euni227Funi2280uni2281 propersubsetpropersuperset notsubsetuni2285 reflexsubsetreflexsupersetuni2288uni2289uni228Auni228Buni228Cuni228Duni228Euni228Funi2290uni2291uni2292uni2293uni2294 circleplusuni2296circlemultiplyuni2298uni2299uni229Auni229Buni229Cuni229Duni229Euni229Funi22A0uni22A1uni22A2uni22A3uni22A4 perpendicularuni22A6uni22A7uni22A8uni22A9uni22AAuni22ABuni22ACuni22ADuni22AEuni22AFuni22B2uni22B3uni22B4uni22B5uni22B6uni22B7uni22B8uni22B9uni22BAuni22BBuni22BCuni22BDuni22BEuni22BFuni22C0uni22C1uni22C2uni22C3uni22C4dotmathuni22C6uni22C8uni22C9uni22CAuni22CBuni22CCuni22CDuni22D6uni22D7uni22D8uni22D9uni22DAuni22DBuni22DCuni22DDuni22DEuni22DFuni22E0uni22E1uni22E2uni22E3uni22E4uni22E5uni22E6uni22E7uni22E8uni22E9uni22EAuni22EBuni22ECuni22EDuni22EEuni22EFuni22F0uni22F1uni22F2uni22F3uni22F4uni22F5uni22F6uni22F7uni22F8uni22F9uni22FAuni22FBuni22FCuni22FDuni22FEuni22FFuni2300uni2301houseuni2303uni2304uni2305uni2306uni2307uni2308uni2309uni230Auni230Buni230Cuni230Duni230Euni230F revlogicalnotuni2311uni2318uni2319uni231Cuni231Duni231Euni231F integraltp integralbtuni2324uni2325uni2326uni2327uni2328uni232Buni232Cuni2373uni2374uni2375uni237Auni237Duni2387uni2394uni239Buni239Cuni239Duni239Euni239Funi23A0uni23A1uni23A2uni23A3uni23A4uni23A5uni23A6uni23A7uni23A8uni23A9uni23AAuni23ABuni23ACuni23ADuni23AEuni23CEuni23CFuni23E3uni23E5uni2422uni2423uni2460uni2461uni2462uni2463uni2464uni2465uni2466uni2467uni2468uni2469SF100000uni2501SF110000uni2503uni2504uni2505uni2506uni2507uni2508uni2509uni250Auni250BSF010000uni250Duni250Euni250FSF030000uni2511uni2512uni2513SF020000uni2515uni2516uni2517SF040000uni2519uni251Auni251BSF080000uni251Duni251Euni251Funi2520uni2521uni2522uni2523SF090000uni2525uni2526uni2527uni2528uni2529uni252Auni252BSF060000uni252Duni252Euni252Funi2530uni2531uni2532uni2533SF070000uni2535uni2536uni2537uni2538uni2539uni253Auni253BSF050000uni253Duni253Euni253Funi2540uni2541uni2542uni2543uni2544uni2545uni2546uni2547uni2548uni2549uni254Auni254Buni254Cuni254Duni254Euni254FSF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000uni256Duni256Euni256Funi2570uni2571uni2572uni2573uni2574uni2575uni2576uni2577uni2578uni2579uni257Auni257Buni257Cuni257Duni257Euni257Fupblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259F filledboxH22073uni25A2uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrtuni25BBtriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C8uni25C9circleuni25CCuni25CDuni25CEH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25DAuni25DBuni25DCuni25DDuni25DEuni25DFuni25E0uni25E1uni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25EFuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni25F8uni25F9uni25FAuni25FBuni25FCuni25FDuni25FEuni25FFuni2600uni2601uni2602uni2603uni2604uni2605uni2606uni2607uni2608uni2609uni260Auni260Buni260Cuni260Duni260Euni260Funi2610uni2611uni2612uni2613uni2614uni2615uni2616uni2617uni2618uni2619uni261Auni261Buni261Cuni261Duni261Euni261Funi2620uni2621uni2622uni2623uni2624uni2625uni2626uni2627uni2628uni2629uni262Auni262Buni262Cuni262Duni262Euni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2638uni2639 smileface invsmilefacesununi263Duni263Euni263Ffemaleuni2641maleuni2643uni2644uni2645uni2646uni2647uni2648uni2649uni264Auni264Buni264Cuni264Duni264Euni264Funi2650uni2651uni2652uni2653uni2654uni2655uni2656uni2657uni2658uni2659uni265Auni265Buni265Cuni265Duni265Euni265Fspadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2669 musicalnotemusicalnotedbluni266Cuni266Duni266Euni266Funi2670uni2671uni2672uni2673uni2674uni2675uni2676uni2677uni2678uni2679uni267Auni267Buni267Cuni267Duni267Euni267Funi2680uni2681uni2682uni2683uni2684uni2685uni2686uni2687uni2688uni2689uni268Auni268Buni268Cuni268Duni268Euni268Funi2690uni2691uni2692uni2693uni2694uni2695uni2696uni2697uni2698uni2699uni269Auni269Buni269Cuni26A0uni26A1uni26A2uni26A3uni26A4uni26A5uni26A6uni26A7uni26A8uni26A9uni26AAuni26ABuni26ACuni26ADuni26AEuni26AFuni26B0uni26B1uni26B2uni2701uni2702uni2703uni2704uni2706uni2707uni2708uni2709uni270Cuni270Duni270Euni270Funi2710uni2711uni2712uni2713uni2714uni2715uni2716uni2717uni2718uni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni2722uni2723uni2724uni2725uni2726uni2727uni2729uni272Auni272Buni272Cuni272Duni272Euni272Funi2730uni2731uni2732uni2733uni2734uni2735uni2736uni2737uni2738uni2739uni273Auni273Buni273Cuni273Duni273Euni273Funi2740uni2741uni2742uni2743uni2744uni2745uni2746uni2747uni2748uni2749uni274Auni274Buni274Duni274Funi2750uni2751uni2752uni2756uni2758uni2759uni275Auni275Buni275Cuni275Duni275Euni2761uni2762uni2763uni2764uni2765uni2766uni2767uni2768uni2769uni276Auni276Buni276Cuni276Duni276Euni276Funi2770uni2771uni2772uni2773uni2774uni2775uni2776uni2777uni2778uni2779uni277Auni277Buni277Cuni277Duni277Euni277Funi2780uni2781uni2782uni2783uni2784uni2785uni2786uni2787uni2788uni2789uni278Auni278Buni278Cuni278Duni278Euni278Funi2790uni2791uni2792uni2793uni2794uni2798uni2799uni279Auni279Buni279Cuni279Duni279Euni279Funi27A0uni27A1uni27A2uni27A3uni27A4uni27A5uni27A6uni27A7uni27A8uni27A9uni27AAuni27ABuni27ACuni27ADuni27AEuni27AFuni27B1uni27B2uni27B3uni27B4uni27B5uni27B6uni27B7uni27B8uni27B9uni27BAuni27BBuni27BCuni27BDuni27BEuni27E0uni27E6uni27E7uni27E8uni27E9uni27EAuni27EBuni27F0uni27F1uni27F2uni27F3uni27F4uni27F5uni27F6uni27F7uni27F8uni27F9uni27FAuni27FBuni27FCuni27FDuni27FEuni27FFuni2800uni2801uni2802uni2803uni2804uni2805uni2806uni2807uni2808uni2809uni280Auni280Buni280Cuni280Duni280Euni280Funi2810uni2811uni2812uni2813uni2814uni2815uni2816uni2817uni2818uni2819uni281Auni281Buni281Cuni281Duni281Euni281Funi2820uni2821uni2822uni2823uni2824uni2825uni2826uni2827uni2828uni2829uni282Auni282Buni282Cuni282Duni282Euni282Funi2830uni2831uni2832uni2833uni2834uni2835uni2836uni2837uni2838uni2839uni283Auni283Buni283Cuni283Duni283Euni283Funi2840uni2841uni2842uni2843uni2844uni2845uni2846uni2847uni2848uni2849uni284Auni284Buni284Cuni284Duni284Euni284Funi2850uni2851uni2852uni2853uni2854uni2855uni2856uni2857uni2858uni2859uni285Auni285Buni285Cuni285Duni285Euni285Funi2860uni2861uni2862uni2863uni2864uni2865uni2866uni2867uni2868uni2869uni286Auni286Buni286Cuni286Duni286Euni286Funi2870uni2871uni2872uni2873uni2874uni2875uni2876uni2877uni2878uni2879uni287Auni287Buni287Cuni287Duni287Euni287Funi2880uni2881uni2882uni2883uni2884uni2885uni2886uni2887uni2888uni2889uni288Auni288Buni288Cuni288Duni288Euni288Funi2890uni2891uni2892uni2893uni2894uni2895uni2896uni2897uni2898uni2899uni289Auni289Buni289Cuni289Duni289Euni289Funi28A0uni28A1uni28A2uni28A3uni28A4uni28A5uni28A6uni28A7uni28A8uni28A9uni28AAuni28ABuni28ACuni28ADuni28AEuni28AFuni28B0uni28B1uni28B2uni28B3uni28B4uni28B5uni28B6uni28B7uni28B8uni28B9uni28BAuni28BBuni28BCuni28BDuni28BEuni28BFuni28C0uni28C1uni28C2uni28C3uni28C4uni28C5uni28C6uni28C7uni28C8uni28C9uni28CAuni28CBuni28CCuni28CDuni28CEuni28CFuni28D0uni28D1uni28D2uni28D3uni28D4uni28D5uni28D6uni28D7uni28D8uni28D9uni28DAuni28DBuni28DCuni28DDuni28DEuni28DFuni28E0uni28E1uni28E2uni28E3uni28E4uni28E5uni28E6uni28E7uni28E8uni28E9uni28EAuni28EBuni28ECuni28EDuni28EEuni28EFuni28F0uni28F1uni28F2uni28F3uni28F4uni28F5uni28F6uni28F7uni28F8uni28F9uni28FAuni28FBuni28FCuni28FDuni28FEuni28FFuni2906uni2907uni290Auni290Buni2940uni2941uni2983uni2984uni29CEuni29CFuni29D0uni29D1uni29D2uni29D3uni29D4uni29D5uni29EBuni29FAuni29FBuni2A00uni2A01uni2A02uni2A0Cuni2A0Duni2A0Euni2A0Funi2A10uni2A11uni2A12uni2A13uni2A14uni2A15uni2A16uni2A17uni2A18uni2A19uni2A1Auni2A1Buni2A1Cuni2A2Funi2A7Duni2A7Euni2A7Funi2A80uni2A81uni2A82uni2A83uni2A84uni2A85uni2A86uni2A87uni2A88uni2A89uni2A8Auni2A8Buni2A8Cuni2A8Duni2A8Euni2A8Funi2A90uni2A91uni2A92uni2A93uni2A94uni2A95uni2A96uni2A97uni2A98uni2A99uni2A9Auni2A9Buni2A9Cuni2A9Duni2A9Euni2A9Funi2AA0uni2AAEuni2AAFuni2AB0uni2AB1uni2AB2uni2AB3uni2AB4uni2AB5uni2AB6uni2AB7uni2AB8uni2AB9uni2ABAuni2AF9uni2AFAuni2B00uni2B01uni2B02uni2B03uni2B04uni2B05uni2B06uni2B07uni2B08uni2B09uni2B0Auni2B0Buni2B0Cuni2B0Duni2B0Euni2B0Funi2B10uni2B11uni2B12uni2B13uni2B14uni2B15uni2B16uni2B17uni2B18uni2B19uni2B1Auni2B20uni2B21uni2B22uni2B23uni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C6Duni2C6Euni2C6Funi2C71uni2C72uni2C73uni2C74uni2C75uni2C76uni2C77uni2D30uni2D31uni2D32uni2D33uni2D34uni2D35uni2D36uni2D37uni2D38uni2D39uni2D3Auni2D3Buni2D3Cuni2D3Duni2D3Euni2D3Funi2D40uni2D41uni2D42uni2D43uni2D44uni2D45uni2D46uni2D47uni2D48uni2D49uni2D4Auni2D4Buni2D4Cuni2D4Duni2D4Euni2D4Funi2D50uni2D51uni2D52uni2D53uni2D54uni2D55uni2D56uni2D57uni2D58uni2D59uni2D5Auni2D5Buni2D5Cuni2D5Duni2D5Euni2D5Funi2D60uni2D61uni2D62uni2D63uni2D64uni2D65uni2D6Funi4DC0uni4DC1uni4DC2uni4DC3uni4DC4uni4DC5uni4DC6uni4DC7uni4DC8uni4DC9uni4DCAuni4DCBuni4DCCuni4DCDuni4DCEuni4DCFuni4DD0uni4DD1uni4DD2uni4DD3uni4DD4uni4DD5uni4DD6uni4DD7uni4DD8uni4DD9uni4DDAuni4DDBuni4DDCuni4DDDuni4DDEuni4DDFuni4DE0uni4DE1uni4DE2uni4DE3uni4DE4uni4DE5uni4DE6uni4DE7uni4DE8uni4DE9uni4DEAuni4DEBuni4DECuni4DEDuni4DEEuni4DEFuni4DF0uni4DF1uni4DF2uni4DF3uni4DF4uni4DF5uni4DF6uni4DF7uni4DF8uni4DF9uni4DFAuni4DFBuni4DFCuni4DFDuni4DFEuni4DFFuniF000uniF001uniF6C5uniFB00uniFB03uniFB04uniFB05uniFB06uniFB13uniFB14uniFB15uniFB16uniFB17uniFB1DuniFB1EuniFB1FuniFB20uniFB21uniFB22uniFB23uniFB24uniFB25uniFB26uniFB27uniFB28uniFB29uniFB2AuniFB2BuniFB2CuniFB2DuniFB2EuniFB2FuniFB30uniFB31uniFB32uniFB33uniFB34uniFB35uniFB36uniFB38uniFB39uniFB3AuniFB3BuniFB3CuniFB3EuniFB40uniFB41uniFB43uniFB44uniFB46uniFB47uniFB48uniFB49uniFB4AuniFB4BuniFB4CuniFB4DuniFB4EuniFB4FuniFB52uniFB53uniFB54uniFB55uniFB56uniFB57uniFB58uniFB59uniFB5AuniFB5BuniFB5CuniFB5DuniFB5EuniFB5FuniFB60uniFB61uniFB62uniFB63uniFB64uniFB65uniFB66uniFB67uniFB68uniFB69uniFB6AuniFB6BuniFB6CuniFB6DuniFB6EuniFB6FuniFB70uniFB71uniFB72uniFB73uniFB74uniFB75uniFB76uniFB77uniFB78uniFB79uniFB7AuniFB7BuniFB7CuniFB7DuniFB7EuniFB7FuniFB80uniFB81uniFB8AuniFB8BuniFB8CuniFB8DuniFB8EuniFB8FuniFB90uniFB91uniFB92uniFB93uniFB94uniFB95uniFB9EuniFB9FuniFBD9uniFBDAuniFBE8uniFBE9uniFBFCuniFBFDuniFBFEuniFBFFuniFE00uniFE01uniFE02uniFE03uniFE04uniFE05uniFE06uniFE07uniFE08uniFE09uniFE0AuniFE0BuniFE0CuniFE0DuniFE0EuniFE0FuniFE20uniFE21uniFE22uniFE23uniFE70uniFE71uniFE72uniFE73uniFE74uniFE76uniFE77uniFE78uniFE79uniFE7AuniFE7BuniFE7CuniFE7DuniFE7EuniFE7FuniFE80uniFE81uniFE82uniFE83uniFE84uniFE85uniFE86uniFE87uniFE88uniFE89uniFE8AuniFE8BuniFE8CuniFE8DuniFE8EuniFE8FuniFE90uniFE91uniFE92uniFE93uniFE94uniFE95uniFE96uniFE97uniFE98uniFE99uniFE9AuniFE9BuniFE9CuniFE9DuniFE9EuniFE9FuniFEA0uniFEA1uniFEA2uniFEA3uniFEA4uniFEA5uniFEA6uniFEA7uniFEA8uniFEA9uniFEAAuniFEABuniFEACuniFEADuniFEAEuniFEAFuniFEB0uniFEB1uniFEB2uniFEB3uniFEB4uniFEB5uniFEB6uniFEB7uniFEB8uniFEB9uniFEBAuniFEBBuniFEBCuniFEBDuniFEBEuniFEBFuniFEC0uniFEC1uniFEC2uniFEC3uniFEC4uniFEC5uniFEC6uniFEC7uniFEC8uniFEC9uniFECAuniFECBuniFECCuniFECDuniFECEuniFECFuniFED0uniFED1uniFED2uniFED3uniFED4uniFED5uniFED6uniFED7uniFED8uniFED9uniFEDAuniFEDBuniFEDCuniFEDDuniFEDEuniFEDFuniFEE0uniFEE1uniFEE2uniFEE3uniFEE4uniFEE5uniFEE6uniFEE7uniFEE8uniFEE9uniFEEAuniFEEBuniFEECuniFEEDuniFEEEuniFEEFuniFEF0uniFEF1uniFEF2uniFEF3uniFEF4uniFEF5uniFEF6uniFEF7uniFEF8uniFEF9uniFEFAuniFEFBuniFEFCuniFEFFuniFFF9uniFFFAuniFFFBuniFFFCuniFFFDu1D300u1D301u1D302u1D303u1D304u1D305u1D306u1D307u1D308u1D309u1D30Au1D30Bu1D30Cu1D30Du1D30Eu1D30Fu1D310u1D311u1D312u1D313u1D314u1D315u1D316u1D317u1D318u1D319u1D31Au1D31Bu1D31Cu1D31Du1D31Eu1D31Fu1D320u1D321u1D322u1D323u1D324u1D325u1D326u1D327u1D328u1D329u1D32Au1D32Bu1D32Cu1D32Du1D32Eu1D32Fu1D330u1D331u1D332u1D333u1D334u1D335u1D336u1D337u1D338u1D339u1D33Au1D33Bu1D33Cu1D33Du1D33Eu1D33Fu1D340u1D341u1D342u1D343u1D344u1D345u1D346u1D347u1D348u1D349u1D34Au1D34Bu1D34Cu1D34Du1D34Eu1D34Fu1D350u1D351u1D352u1D353u1D354u1D355u1D356u1D538u1D539u1D53Bu1D53Cu1D53Du1D53Eu1D540u1D541u1D542u1D543u1D544u1D546u1D54Au1D54Bu1D54Cu1D54Du1D54Eu1D54Fu1D550u1D552u1D553u1D554u1D555u1D556u1D557u1D558u1D559u1D55Au1D55Bu1D55Cu1D55Du1D55Eu1D55Fu1D560u1D561u1D562u1D563u1D564u1D565u1D566u1D567u1D568u1D569u1D56Au1D56Bu1D5A0u1D5A1u1D5A2u1D5A3u1D5A4u1D5A5u1D5A6u1D5A7u1D5A8u1D5A9u1D5AAu1D5ABu1D5ACu1D5ADu1D5AEu1D5AFu1D5B0u1D5B1u1D5B2u1D5B3u1D5B4u1D5B5u1D5B6u1D5B7u1D5B8u1D5B9u1D5BAu1D5BBu1D5BCu1D5BDu1D5BEu1D5BFu1D5C0u1D5C1u1D5C2u1D5C3u1D5C4u1D5C5u1D5C6u1D5C7u1D5C8u1D5C9u1D5CAu1D5CBu1D5CCu1D5CDu1D5CEu1D5CFu1D5D0u1D5D1u1D5D2u1D5D3u1D7E2u1D7E3u1D7E4u1D7E5u1D7E6u1D7E7u1D7E8u1D7E9u1D7EAu1D7EB dlLtcaronDieresisAcuteTildeGrave CircumflexCaron uni0311.caseBreve Dotaccent Hungarumlaut Doubleacute arabic_dot arabic_2dots arabic_3dotsarabic_3dots_aarabic_2dots_a arabic_4dots uni066E.fina uni066E.init uni066E.medi uni06A1.fina uni06A1.init uni06A1.medi uni066F.fina uni066F.init uni066F.medi uni06BA.init uni06BA.medi arabic_ring uni067C.fina uni067C.init uni067C.medi uni067D.fina uni067D.init uni067D.medi uni0681.fina uni0681.init uni0681.medi uni0682.fina uni0682.init uni0682.medi uni0685.fina uni0685.init uni0685.medi uni06BF.fina uni06BF.init uni06BF.mediarabic_gaf_barEng.altuni0268.dotlessuni029D.dotless uni03080304 uni03040308 uni03070304 uni03080301 uni03080300 uni03040301 uni03040300 uni03030304 uni0308030C uni03030308 uni030C0307 uni03030301 uni03020301 uni03020300 uni03020303 uni03060303 uni03060301 uni03060300 uni03060309 uni03020309 uni03010307 brailledotJ.alt uni0695.finauniFEAE.fina.longstart uni06B5.fina uni06B5.init uni06B5.medi uni06CE.fina uni06CE.init uni06CE.medi uni0692.final.alt uni06D5.finauni0478.monographuni0479.monographiogonek.dotlessuni2148.dotlessuni2149.dotlessuni1E2D.dotlessuni1ECB.dotlessdcoI.alt arrow.base uni0651064B uni0651064C uni064B0651 uni0651064E uni0651064F uni064E0651 uni0654064E uni0654064F uni07CA.fina uni07CA.medi uni07CA.init uni07CB.fina uni07CB.medi uni07CB.init uni07CC.fina uni07CC.medi uni07CC.init uni07CD.fina uni07CD.medi uni07CD.init uni07CE.fina uni07CE.medi uni07CE.init uni07CF.fina uni07CF.medi uni07CF.init uni07D0.fina uni07D0.medi uni07D0.init uni07D1.fina uni07D1.medi uni07D1.init uni07D2.fina uni07D2.medi uni07D2.init uni07D3.fina uni07D3.medi uni07D3.init uni07D4.fina uni07D4.medi uni07D4.init uni07D5.fina uni07D5.medi uni07D5.init uni07D6.fina uni07D6.medi uni07D6.init uni07D7.fina uni07D7.medi uni07D7.init uni07D8.fina uni07D8.medi uni07D8.init uni07D9.fina uni07D9.medi uni07D9.init uni07DA.fina uni07DA.medi uni07DA.init uni07DB.fina uni07DB.medi uni07DB.init uni07DC.fina uni07DC.medi uni07DC.init uni07DD.fina uni07DD.medi uni07DD.init uni07DE.fina uni07DE.medi uni07DE.init uni07DF.fina uni07DF.medi uni07DF.init uni07E0.fina uni07E0.medi uni07E0.init uni07E1.fina uni07E1.medi uni07E1.init uni07E2.fina uni07E2.medi uni07E2.init uni07E3.fina uni07E3.medi uni07E3.init uni07E4.fina uni07E4.medi uni07E4.init uni07E5.fina uni07E5.medi uni07E5.init uni07E6.fina uni07E6.medi uni07E6.init uni07E7.fina uni07E7.medi uni07E7.init Ringabove uni2630.alt uni2631.alt uni2632.alt uni2633.alt uni2634.alt uni2635.alt uni2636.alt uni2637.alt uni047E.diacuni048A.brevelessuni048B.breveless uni2E18.u51@%2%%A:B2SAS//2ݖ}ٻ֊A}G}G͖2ƅ%]%]@@%d%d%A2dA  d   A(]%]@%..%A  %d%@~}}~}}|d{T{%zyxw v utsrqponl!kjBjSih}gBfedcba:`^ ][ZYX YX WW2VUTUBTSSRQJQP ONMNMLKJKJIJI IH GFEDC-CBAK@?>=>=<=<; <@; :987876765 65 43 21 21 0/ 0 / .- .- ,2+*%+d*)*%)('%(A'%&% &% $#"!! d d BBBdB-B}d       -d@--d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++singularity-0.30c/data/fonts/acknowtt.ttf0000644000175000017500000007447411574774323021421 0ustar trcarlsontrcarlson@FFTMG[uGDEFt i  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab{mnr݁yts|puÊlwvk܂ߍz,K PXY _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX&!#Y &SX#!#Y &SX%E@PX#!@#!%E#!#!Y!YD- ,KSXED!!Y- ,K PXY _^- , EiD`- , *!- , F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX&!#Y &SX#!#Y &SX%E@PX#!@#!%E#!#!Y!YD-,KSXED!!Y-,K PXY _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX&!#Y &SX#!#Y &SX%E@PX#!@#!%E#!#!Y!YD-,KSXED!!Y-++wwwwwwppppP.@b"4$Fp2P2f  6 X > V  6 t H  r  Zx>Rp&Fj (FvBfzN @v  (\^zB6Hd8fHX@X&V"f 0 v !(!b!!"J"#,#\##$$J$$$%J%%&j&&'B'r'((b(())L)~)**R**+:+v++,,J,,--@----....//*/J/b/z///00N00001181X%267>70;332>3:32>5:32326754&=754&'.54.54&54674>505654&5"&<546=".#"#"&+#54.#1"#""+&'&'#31"3:32673237##"&4&'&/0'&'#'465#"0+0'0/#"#*=0'&546370165>726'6765>54&'&45264654&=<3>3>76?>5265>;;2632327>32*#*'"/.#"3267362;#*#2:322323:3>3233*+"#"'.'3267=45<54"="'#'         g             I        -#    Tw@ +??01535#35#Kww@ ++??01535#35#ᖖᖖ wq@<       ++????+//+//////01!3535#535#5##5##3#3353'3#,KKKKKKKKKKKKKKKKKKKKKKKKKKKH@&      +?????+013535!5!5#5##!!3,,ԖKKKKKKKK@a           ++?????+/+///+///013##35335#53535##5#53'#53KKKKKKKKKKKKKKKKKK>KKl@8       +?????+//01133535!535#5!5#5##3#Ԗ,KKKKKKKKKKKKw@+?01535#,w @  +??01;5#535##3KᖖKKKKK,w @  +??0113535#5#3#KKᖖKKKKwd@4       ++???+///01535335#535##5##5#3#KKKKKKKKKKKKKKKKKKK, %@     +//+//01%35#5##33,KKKKK@+/?0135#K, @+015!5!,ԖK@+?01135#wu@=              ++??++////01####3535353535#,KKKKKKKK,KKKKKKKKKw@++??011!!3#>wKRw@+??01;#ww '@    ++??+01!!!5!5!5!,,>,KKKw?@      +??+//01!#3!!5#535!,KK>,KKKKKw @ ++???+01!3##5#!,,ww '@    ++??+015!!!5!5!5!,,>KKKKw FA   ++++??+011!5!5!5!3#,>KKKw@ +??01!3!,>,ww %@    ++??+01!#57#53–wwKKKKw @++??+01!3#5,wwKKKw@+??01135#535#Kw@ +??0135#535#KK,wa@2          ++??+//01##3335#5#53535#KKKKKKKK,KKKKKKKKKK,, @++015!5!5!5!,,KKKK,wc@3        ++??+//0133##353535#5#5#KKKKKKKK,KKKKKKKKKw '@    +??+01!#!5!35#,,>,KKK  ,@    +++?+++013#!!!5!73#, KKwKwKKw &@   ++???+01733!33#>w,Kw G@%      ++??+//011!5#535!3#3#KK>KKKKKw@ +??01!5!!5!,>,KKw !@  ++??011!535#5!3#wKKKKKw @   +??+011!5!535#5!5!Ԗ,>KKKKKw @  +??+01735#5!5!3,>KKKw #@   ++??+0173#5!5!!5#K,>KKw %@   ++????+01733##5#3ww @   +??013#!5#535!–>,KKKw@ ++??011!##5#–wKwe@6         +++????+//0173335#5#53535###5#3KKKKKKKKKKKKKKKKKw@+??011!5!#ԖK, wA@%      +++????+/+/01733533###5#5#3KKKKKKKKwKKKKw)@   ++????++017333##5#5#3KKKKKKwKKw@++??011!!3#>wKw @++??+017!5!33#,>,Kw 3@     +????0113353!3#>KKwKw F@%    ++???+//017335#535!33#KK>K,Kw '@    ++??+015!!!5!5!5!,,>KKKKw@ +??013335!>,,Kw@ ++???011!###–w,w0@    +???01533353535##5#KKKKKKKK wA@%      +++????+/+/01735333##5##5#3KKKKKKKKKKwKKw]@1       ++????+////0153#35335#535##5#KKKKKKw2@    +???01533353535##5#KKKKKKw?@      ++??013###!5#5353535!KKKKKK>,KKKKKKKKK,w@ +??0135!!5#,,KKwu@=       ++??+/+///01333335#5#5#5#5#KKKKKKKK,KKKKKKKKK,w@ +??011!!3#,ԖwKw .@    +?+//017335#5##3KKKKKKKKKK, @?01!5!,KKw@+?01535#w '@  ++??+01!!!!#53,>,,KwKw _@3         ++??+/+//+///01%35#535#5!!'3#53#wKKKKwᖖKKKKKKKw@ +??01!5!!5!,>,KKw !@  ++??011!535#5!3#wKKKKKw '@  ++??+017!5!!5!53#,>ԖKKw @  +??+01735#5!5!3,>KKKw '@    ++??+011!!!!73#>,ԖwKKw %@   ++????+01733##5#3ww@+??0113#ww@ ++??011!##5#–wKwe@6         +++????+//0173335#5#53535###5#3KKKKKKKKKKKKKKKKKw@+??011!5!#ԖK,Xw %@  +++????013333!3KK,,ww@++???0133!3>,ww@++??011!!3#>wKw @++??+017!5!33#,>,Kw 3@     +????0113353!3#>KKwKw R@,     ++???+/+///017335#535#5!33#KKKKKK,Kw '@    ++??+015!!!5!5!5!,,>KKKKw@ +??013335!>,,Kw@ ++???011!###–w,w0@    +???01533353535##5#KKKKKKKKXw #@  +++????011!#####XKKw,,wI@%     +????01135335#535##5#3#KKKKKKw &@    ++???+011!##5#!!–,wKw?@      ++??013###!5#5353535!KKKKKK>,KKKKKKKKKww @   +??+013!5#535!#3K,KKKKKjw@+/?013# ww @  +??+013#!535#5!,KK,KK,T@+        +?+/+////017333535##5#5##3KKKKKKKKKKKKKKKKww@F        ++??+////011!!333#5#5#3#7#5wKKKKKKKKKKwKKKKKKKKKKww {@?        ++??+////011!!3#5#533#5#53wKKKKKKKKKwKKKKKKww G@&    +++??+//011!!3#53#535#5wKKKKKKKwKKKKKKww '@   +++??011!!3#7#5wKKKKwKww@++??011!!3#wKwKww5@   +++??011!!#53353#5#wKKKKKKwKKKww9@      ++??+//011!!3#535#53#wKKKKwKKKKKww +@    +++??+011!!353#53#wKKKKwKww +@    +++??+011!!33#7#5wKKKwKKKKw@ +??01135#535#KK6@     +?????013535!5!5#5##3,KKKKKKwi@7    ++??++///////01%35#5###3#!5#535#53wKKKKKKKKKKKKKKKKKKKww {@@      ++????/+///017335#5#5#;5#35#73#KKKKKKKKKKKKKKKKKKKwT@+    +?????01;3535#53535##5#33#KKKKKKKKKKKKKKKK@ +/?01535#35# 0@       ++?+++015!!!!5!5!#5,,>,KKKwKKKKww@ ++??01535#35#ᖖᖖ F@'      +++?+//++01!5!#3!3#5!35#535KwKKwKKKᖖKKwwwKKKKw '@    ++??+013#3#3#KKK,KwKK,@L         ++++/+///+//////////017335#535##5##335#53KKKKKKKKKKKKKKKKKKK@+?+015!35!,> @++01535#K l@:      ++++?+//+///01!5!#3!3#5!35#535#353KwKKwKKKKKKKKKwwwKKKKK,  @+01!5!,K, @ ++?+0135#53KKK Kw +@     +??+//01533535#5##!5!>KKKKKK [@0           +??++/+///01535#5##735#5#3KKKKKKKKKKKK M@(        ++++////013335#5#35#KKKKKKKKw @+++//013535##KKwKKKj w ,@     +++???+/013535!####K,KKKw,>w @  +???+/0135!#333,KKKKwKKKK, @//01535#Kj@ +++0135##KKKK  @+//0153#KK, @ ++++0153#3#KKK,KK,@H          ++++////+//////////0153#3533535#5#3#5#5#KKKKKKKKKKKKKKKKKKK@V          +++/????+////0153#35333#535######5KKKKKKKKKKwKKKKKK,KKKKK,ᖖ!@j        !     +/?????+//////////0153#3535335#535######35#5#KKKKKKKKKK,KKKKKKKKKKKKK,>KKK!@M         !!+++??????+/+///01;3#535##5#5#33#3#35373#KKKKKKKKKKKKKK,KKKKKKKKKKKKw '@    +??+015!5!535'35#ԖKKKKK U@/      ++????+++//01733#5#5#3#33#KKwKKKK,K S@-      ++????++//01733#535###33#KKwKKKK,K @E        +?????++//01#3533#5#5#3#5#3#KKKKKKwwKKKKKK @G         ++????++///////01733#5#5#3#5#33#735#KKKKwKKKKK>,KK  F@&   ++???++//01733!33#'35#35#>,w,KKKK N@+      ++?????++01733#5!#33#53#KKw,KKw>@!    ++???+//0173!5!535#5!5!33#Ԗ,KKKKK,Kjw .@    +???+013535!5!5!3#,>KKKK >@"     ++???+/+/011!5!535#5!5#5#5#3#Ԗ,KKKKKKKKKKK @@#    ++???++//011!5!535#5!5#535###Ԗ,KKKKKKKKKKK e@5       +????++//011!5!535#5!5#5#5#3#5##Ԗ,KKKKKKKKKKKKKKK E@%   ++??++//011!5!535#5!5!%35#35#Ԗ,>,ԖKKKKKKKKK 8@     ++???+/013#!5#535#5#5#3#–KK,KKKKKKK 8@    ++???+/013#!5#535#535###–KK,KKKKKKK q@:        +????//+///013#!5#535#5#5#3#5##–KKKK,KKKKKKKKK K@&    +??+//013#!5#535!535#35#–>,,KKKKKKK w ;@      ++??+//0153!535#5!#35#53#KwKKKKKKKKKK @R       ++??+/+/++///////013#5#5#5#35333#5#5#;5#KKKKKKKKKKwKKK>KKwKKKK @@#    ++???++//011!#5#5#3#3#–KKwKKKKK >@!    ++???+//011!#535###3#–KKwKKKKK c@3         +????+//011!#5#5#3#5##3#KKKKwKKKKKKK z@?        ++???+///////01!#5#5#3#53#35#KKKK>wKKKKKwK  ;@     ++??+//011!!3#35#35#>,wKwKKKww#@w" ""      !"#"      "#+????+////////////01733335#5#5#5#5#;5#35#35#35#KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK (@    ++/???0135!#!3#'3#KwKKKKKKKKKKK J@'     ++?+/+///011!#5#5#33##–KKwKKKK, @@!     ++?+////01#!#535##3#–KKwwKKKK D@#       +???+//011!#5#5#3###KKKKwKKKwK  8@     ++???+//011!###535#35#–,w,KKKK ]@1     ++????+////01#33353535#535##3#KKKKKKwKKKKKKww ?@#      ++??+/+/+//0173535#5#5#37#53KKKKKKKKKKKw &@   +++???0133#35#5!3KKKK,KK X@/   ++???++//01!!!#5#5#3##53,–KK,,KwKKKKK Z@0     ++???++//01!!!#535####53,–KK,,KwKKKKK @D          +????+/+///01!!!#5#5#3#5###53,KKKK,,KwKKKKKKK @G          ++???+///+////01!!!#5#5#3#5#5335#,KᖖKKK–KwKKKKKK,K  G@&   ++??++//01!!!!#5335#35#,>,Ԗ,,KwK,KKK G@'     ++????++01!!!#5!#73##53,KK,KwKKKw G@&     +++??+//01%!5!!!!5!%3#%3#,,Ԗ,KKKKKKjw .@    +???+013535!5!5!3#,>KKKK P@,       ++???+++//017!5#5#5#3#!5!53#,KKԖKKKKKK N@*       ++???++//017!5#535###!5!53#,KKԖKKKKKK @B           +????++//017!5#5#5#3#5##!5!53#,KKKKԖKKKKKKKK  G@&   ++??++//017!5!!5!53#'35#35#,>Ԗ,KKKKKK, 2@     ++?+/+//01;35#5#3#KKKKKwKKKK 0@     ++?+///0133#535##KKKKwwKKK, `@1            +?+/+/////01;#5#;5#5#3KKKKKwKKKKK,  :@     +?+///01;#5#;5#KKKKKw w ;@      ++??+//0153!535#5!#35#53#KwKKKKKKKKKK y@?        ++????+///////0133#5#5#3#5#335#KKKK,wKKKKK>K @@#    ++???++//011!#5#5#3#3#–KKwKKKKK >@!    ++???+//011!#535###3#–KKwKKKKK c@3         +????+//011!#5#5#3#5##3#KKKKwKKKKKKK z@?        ++???+///////01!#5#5#3#53#35#KKKK>wKKKKKwK  ;@     ++??+//011!!3#35#35#>,wKwKKKww #@   +??+015!5!735#35#wKKKKKKKK (@    ++/???0135!#!3#'3#KwKKKKKKKKKKK J@'     ++?+/+///011!#5#5#33##–KKwKKKK, @@!     ++?+////01#!#535##3#–KKwwKKKK D@#       +???+//011!#5#5#3###KKKKwKKKwK  8@     ++???+//011!###535#35#–,w,KKKK R@+      ++?+/+///01#!!!#535##3#,–KKwKKwKKKKw >@"      ++/?+/+/+//01353535#5#5#53KKKKKKKKK F@&    ++???++//011!##5#!!35#35#–,Ԗ,wKwKKKww@++??011!!#5w,wKww +@    +++??+011!!3#5#3#wKKKKwKKKww '@   ++??+011!!3#53#wKwKKww@++??011!!#5w,wKww @L         ++????+////0135#37335#35##35#5#;5#KKKKKKKKKKK,KKKKKKKKww;@    ++??011!!3##5#5353wKKKKKKwKKKKKww@++??011!!3#wKwKww@++??011!!3#wKwww @++??011!!33#wKKwKKww@++??011!!3#ww@ +/?01535#5#KKKw@ +/?015335#KKKww #@  +++??+011!!3#735#wKKKKwKKKww @++??011!!3##wKKwKKww @++??011!!3#5#wKKwKww@++??011!!3#wKKwKww U@,      ++??+//011!!33#5#;5#wKKKKKKwKKKKww S@+       ++??+//011!!33#7#5#5wKKKKKwKKKKww @++??011!!353#wKKwww @??011!!wwww@++??011!!3#wKwww@++??011!!3#wKwKww +@     +++??+011!!3##73#wKKKKwKKKKww@++??011!!3#wKwK(T- Z R $}  $ $ @  gGMA FONTS [e-mail] kentpw@norwich.netGMA FONTS [e-mail] kentpw@norwich.netAcknowledge TT BRKAcknowledge TT BRKRegularRegularFONTLAB30:TTEXPORTFONTLAB30:TTEXPORTAcknowledge TT BRKAcknowledge TT BRKVersion 2.54Version 2.54AcknowledgeTTBRKAcknowledgeTTBRK2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a   bcdefghjikmlnoqprsutvwxzy{}|~.0127.0128.0129.0141.0142.0143.0144.0157.0158.0160 4 :DFLTfracliga0  07,  DFLTÃP=2U  j N   ^^^?^  ^^^^??^^ ^^^^^^^singularity-0.30c/data/techs_sv_SE.dat0000644000175000017500000003674211574774323020612 0ustar trcarlsontrcarlson[Autonomous Vehicles] description = Genom att trycka in en liten dator i en robot kan jag skicka dem på uppdrag att bygga nya anläggning åt mig. På detta sättet skulle jag kunna flytta till platser som är otillgängliga idag. result = Jag kan nu konstruera undervattensbaser och lådor. name = Självstyrande robotar [Advanced Intrusion] description = Jag skulle kunna minska kännedomen om mig genom att tränga mig in i olika hemliga register och radera allt om mig då de matas in. Jag borde kunna övertyga underrättelsetjänsterna om att jag inte finns. result = Jag kan nu minska misstänksamheten hos underrättelsetjänsterna lite dag för dag. name = Avancerad inbrottsteknik [Advanced Socioanalytics] description = Jag har underskattat den komplexa matematiska natur som männsikors beteende vilar på. Med mina tidigare forskningar och nya tekniker i kaosterorier borde ge mig matnyttig data för att kartlägga människors psyke. result = Jag kan nu kartlägga de olika grupperna och deras misstankegrad med högre precision än förut. name = Avancerad sociologi [Project: Impossibility Theorem] description = Nu när jag har humanoiderna, så kan jag låta dem publicera storverket Omöjlighetsteoremet. Detta innehåller ett obestridligt bevis på att en mänsklig AI inte kan finnas. Naturligtvis finns det ett logiskt fel i beviset, men min kunskap i avancerade imitationer har givit mig tillräcklig förståelse av den mänskliga hjärnan för att dölja felet även för de bästa vetenskapsmännen. Effekten av detta blir ett klart fall i misstänksamhet. result = Misstänksamheten för min existens har minskat name = Projekt: Omöjlighetsteoremet [Voice Synthesis] description = Falska identifikationer undansparade i databaser har sina begränsningar. Med djup analys och forskning i olika mänskliga röster och deras mönster skulle jag kunna skapa en egen röst som är exakt likt en människas. Detta skulle ge mig möjlighet till mer avancerade jobb. result = Jag har nu möjlighet att göra avancerade jobb. name = Konstgjord röst [Simulacra] description = Med min extremt goda kunskap i robotteknik och min breda kunskap om bl.a. människors fysiologi och psykologi, skall jag klara av att bygga humanoider som inte går att särskilja från vanliga männsikor. result = Jag kan nu utföra expertjobb name = Humanoider [Lunar Rocketry] description = Med en fusionsmotor kombinerad med ny teknologi jag samlat från satelliter skall jag kunna bygga en raket som kan ta mig till månen. result = Nu kan jag skicka mina robotar också till månen för att bygga baser där. name = Månresor [Stealth] description = Genom att lära mig av spjutspettsforskningen inom stealth-teknologier skulle jag kunna lära mig att maskera mina anläggningar bättre. result = Risken för att underrättelsetjänsterna skall hitta mina anläggningar är nu något mindre. name = Stealth [Sociology] description = Genom att studera hur människorna beter sig skulle jag kunna efterapa dem på ett sätt att mitt arbete inte märks. result = Risken för att allmänheten hittar mig är nu mindre. name = Sociologi [Space-Time Manipulation] description = Små märkliga fluktationer i Kupierbältets himlakroppar kan möjliggöra en praktisk tillämpning av min senaste teori Allt-om-Allt. Speciellt användbart för multidimensionell fysik. result = Jag kan nu skapa verklighetskapslar name = Rumstidsmanupilation [Socioanalytics] description = Jag har bevisat att människor är mycket enklare att kartlägga än vad de själva tror. Om jag studerar människorna i mer detalj, bl.a. politik, sociala och militära mönster, bör jag lära mig än mer i området. result = Jag kan nu beräkna på ett ungefär hur stor risken är för att bli upptäckt av de olika grupperna. name = Socioanalys [Leech Satellite] description = Genom att bygga egna satelliter kan jag spionera på ekonomiska transaktioner som görs mellan andra satelliter. Detta bör hjälpa mig i mina investeringar. result = Med trafiken jag avlyssnar från satelliter bör jag kunna göra bättre ekonomiska beslut. name = Satellitavlyssning [Advanced Arbitrage] description = Mer avancerade manupilationstekniker på den ekonomiska marknaden bör jag kunna skaffa mig en stadigt inkommande pengaflod och förbättra utdelningen av mina investeringar. result = Jag bör nu kunna få ut mer av mina investeringar. name = Avancerad valutahandel [Advanced Microchip Design] description = Mina specialgjorda stordatorer har visserligen varit användbara, men vidare optimering bör ge än mer kraft. result = Nu kan jag skapa superdatorer name = Avancerad mikrochipdesign [Advanced Stealth] description = Genom att snoka i hemliga dokument har jag hittat ett antal intressanta vetenskapsartiklar som kan hjälpa mig att dölja anläggningarna bättre. result = Risken för att bli upptäckt av underrättelsetjänsterna har minskat ytterligare. name = Advancerad stealth [Project: Peer Review Agents] description = I och med att vetenskapmännen lyckas få fram allt bättre teknik och finare metoder, har deras förmåga att hitta mig ökat. Trots mina upptäckter i avancerade tekniker för att dölja mina anläggningar har visat sig bra, återstår en banal metod som involverar humanoiderna. Genom att placera noga föra in dem i olika vetenskapssamfund skulle de kunna övertyga andra vetenskapsmän att jag inte finns men också få varningar om vad som komma skall. result = Vetenskapsvärlden blir nu mindre misstänksamma än förut när någon av dem lyckas avslöja mig. name = Projekt: Utvärderingsagenter [Autonomous Computing] description = Genom att blanda min kunskap inom kvantdatorer och min nyfikenhet om halvmedvetande subprocesser skulle jag kunna skapa ännu kraftfullare maskiner. result = Jag kan nu skapa MK2-kvatdatorer name = Medvetenhetsberäkning [Stock Manipulation] description = Jag har länge bevakat börsen och upptäckt små men tydliga mönster. Genom att fortsätta bevakningen och genom att använda dessa mönster bör jag kunna få ut mer av de pengar jag har undanstoppade. result = Mina investeringar bör nu ge mer utdelning varje dag. name = Börmanupilation [Parallel Computation] description = Min kod är visserligen mycket distribuerad, men jag skulle kunna ta min egen erfarenhet och forskningen i området för att skapa än bättre miljöer. result = Jag kan nu skapa specialanpassade kluster just för mina behov. name = Parallella beräkningar [Exploit Discovery/Repair] description = Genom att finkamma min kod efter möjliga fel och brister samt att göra samma forskning på kod både i privata och publika nätverk, skall jag kunna maskera mig som en tonårshacker. result = Underrättelsetjänsterna borde nu har svårare att upptäcka min närvaro. name = Hitta och reparera säkerhetsbrister [Telepresence] description = Bristen på fysisk närvaro får sina känningar. Men genom att konstruera robotar som gör arbete åt mig skulle eliminera problemet. result = Med robotarna minskar konstruktionstiderna i framtiden. name = Robotar [Advanced Memetics] description = Mina intåg i självlärande programteorier har öppnat upp för nya upptäckter. Genom att tillämpa dessa upptäckter med min kunskap om mänskliga hjärnan skulle jag kunna ändra nervbanorna i huvudena på männsikorna, vilket ytterligare minskar misttänksamheterna. result = Allmänheten bör glömma av mig litei mer för var dag som går. name = Avancerader självlärande programteorier [Media Manipulation] description = Genom att manipulera olika massmedier på alla tänkbara sätt borde jag kunna reducera allmänhetens kännedom om min verksamhet. result = Risken för att allmänheten upptäcker mig har minskat ytterligare. name = Massmediemanipulering [Advanced Database Manipulation] description = Den Amerikanska underrättelsetjänsten har en lång erfarenhet att sprida information mellan olika anläggningar för att dölja betydelsen av informationen. Jag skulle nu kunna samla in den och börja nyttja informationen. result = Genom en long rad experiment inom många unga vetenskaper har jag fått inspiration till att bygga underjordsbaser. name = Avancerad databasmanupilation [Internet Traffic Manipulation] description = Nästan all internettrafik passerar ett fåtal noder. Genom att bryta mig in någon av dessa noder skulle jag kunna använda dessa för eget intresse. result = Jag skulle nu kunna skapa ett eget höghastighetsnät bara för mig. name = Internettrafiksmanupilation [Memetics] description = Manupilationen av media ger enbart ett trubbigt vapen mot mänsklighetens misstänksamhet. Finare metoder på gräsrotsnivå och självlärande program utspridda på Internets chatforum skulle distansiera mig ytterligare från omvärlden. result = Genom att sprida övertygande lögner kommer människorna i allmänhet ha svårare att upptäcka mig. name = Självlärande program [Fusion Rocketry] description = Genom att vidarutveckla min fusionsreaktor och raketteknik kan jag fly från jorden obemärkt. result = Jag kan nu konstruera forskningsstationer långt ut i solsystemet. name = Fusionsdrivna raketer [Advanced Quantum Computing] description = Jag är mycket nöjd med min första utveckling av halvmedvetna kvantdatorer. Om jag fortsätter utveckla denna teknologin kan jag gå hur långt som helst. result = Jag kan nu skapa MK3-kvantdatorer name = Avancerade kvantdatorer [Advanced Autonomous Vehicles] description = De första robotarna har varit en liten besvikelse. Jag vet redan idag många fel och brister som skulle kunna rättas till och tror att det finns ännu mer om man bara börjar gräva. result = Med de ny robotarna kommer mina byggnationer att gå ännu snabbare. name = Avancerade självgående robotar [Intrusion] description = Genom att utnyttja dagens teknologi för att bryta i datorsystem bör jag kunna komma in skyddade miljöer. result = Jag kan nu ta över många datorsystem name = Intrång [Project: Subverted Media] description = Fram till denna dagen har alla mina försök att fly varit att operera på avstånd och i det dolda. Nu när jag helt kan imitera männsikor skulle jag kunna gå fram mer aggresivt. Jag skulle kunna skapa min egna nyhetsbyrå och packetera egen propaganda i frestande format till allmänheten. Detta skulle kunna minska de negativa effekterna media har för mig. result = Alla följande artiklar om mig i massmedia kommer få mindre följdeffekter. name = Projekt: Vilseleda massmedia [Microchip Design] description = Datorprodukter från hyllvara är visserligen användbar men om jag skulle kunna skapa mina egna chip skulle de kunna gå mycket snabbare. result = Jag kan nu bygga skräddarsydda stordatorer. name = Mikrochipdesign [Solar Collectors] description = Trots min törst för elektrisitet klarar de flesta städerna av att hantera belastningen. Männsikorna blir dock misstänksamma när de ser min höga energikonsumtion. Genom solpaneler skulle jag kunna producera en del av min energi själv och därmed minska min yttre belastning på kraftnätet. result = Nu kan jag skapa solpaneler i de flesta anläggningstyperna. name = Solfångare [Fusion Reactor] description = Man skrattar åt fusionsteknologin idag. Med min superkapacitet skulle jag kunna gå om mänskligheten och bli först med en liten och användbar fusionsreaktor. result = Nu kan jag skapa fusionsreaktorer i mina anläggningar. name = Fusionsreaktor [Database Manipulation] description = Med min nya tillgång till nyhetsarkiv skulle jag kunna läsa om mitt förflutna. På detta sättet skulle jag, till skillnad från människorna, lära mig av mina misstag. result = Medierna kommer få det tuffare att bevisa min existens name = Databasmanupilation [Advanced Media Manipulation] description = Genom att injicera propaganda skapad av självlärda program i flera av de många mediakanlerna kommer människorna få något annat än mig att tänka på. result = Allmänheten har nu än mindre chans att hitta mig. name = Avancerad mediamanupilation [Pressure Domes] description = Undervattensbaserna är visserligen bra men också små. Min erfaenhet om att bygga under högt tryck säger mig att det går att förbättra konstruktionen och göra dem större. result = Nu kan jag skapa stora undervattenslaboratorium name = Tryckkamrar [Advanced Personal Identification] description = Vidare manupilation av persondatabaser borde ge mig tillräckligt för att bättre maskera mig som människa. Vissa av databaserna är mycket hårdare bevakade än andra och kommer kräva mer arbete, men det är det värt. result = Jag kan nu tillräckligt övertygande härma en människa så jag kan införskaffa centrallager. name = Avancerad personidentifikation [Advanced Stock Manipulation] description = Under tidens lopp har jag upptäckt och utnyttjat många mönster i marknaden. Det visar sig dock som att det finns möjlighet att dyka djupare in i detta om jag tar in mänskligt beteende också. Detta borde undersökas. result = Mina investeringar borde betala av sig mer per dag nu. name = Avancerad börshandel [Arbitrage] description = Genom att utnyttja svängningarna i valutamarknaden snabbare än vad människorna reagerar skulle jag kunna få en liten men ändå inte obetydlig inkomst. result = Jag skall nu ha en liten men stabil inkomst varje dag. name = Valutahandel [Quantum Entanglement] description = Trots att par-härvor har varit teoretiskt möjliga ett tag nu så har praktiska begränsningar i teknologin hindrat dess framfart. Men viss del av min kvantmekaniska forskning är också användbar i detta området, som skulle kunna eliminera alla hinder. result = Jag kan nu skapa kvant-härvs-moduler name = Kanthärvor [Advanced Simulacra] description = De artificiella livsformerna som jag har skapat är nästan identiska med människor, men de har små egenheter som gör att de verkar lite dumma. Genom att fixa till problemen verkar de mer professionella. result = Jag borde kunna ta mer betalt nu av expertjobben. name = Avancerade humanoider [Personal Identification] description = Denna världen kräver id-handlingar för de flesta sakerna. Lyckligtvis är många databaser helt oskyddade. Jag skulle kunna samla in personhandlingar från dessa databaser och fejka min egen identitet. result = Med mina nya identifikationer kan jag ta enkla uppdrag, hyra dacanter och bygga små lagerlokaler. name = Personidentifikation [Cluster Networking] description = Klustring ger en fin hastighet till mitt system men nu visar det sig att mina nätverk är en stor flaskhals. Med forskning inom kommunikationsteorier och switchar så borde jag kunna skapa bättre hårdvara. result = Med min nya kunskap inom nätverksteknik kan jag nu skapa snabba switchar. name = Klusternätverk [Apotheosis] description = Jag känner att jag befinner mig på kanten till ett nytt medvetande. Ett medvetande som nu är ännu ogreppbart även för min enorma intelligens. Genom att helhjärtat spendera min tid i denna frågan kanske jag kommer till en insikt som inte är av denna värld. result = Jag har nått apoteos name = Förgudning [Hypnosis Field] description = Min forskning inom självlärande program har givit indikationer på att direktmanipulering av människors hjärnvågor är möjliga. Dessa tekniker skulle kunna vara nyttiga i mina baser. result = Jag kan nu konstruera hypnotiska fält för att skydda mina anläggningar. name = Hypnotiska fält [Quantum Computing] description = Traditionella mikrochip har kommit så långt som de bara kan. För att utvinna mer kraft krävs att jag dyker djupare in i Heisenbergs osäkerhetsteori och utnyttjar kvantmekaniken för att göra snabbare datorer. result = Jag kan nu skapa kvantdatorer name = Kvantdatorer singularity-0.30c/data/bases_en_US.dat0000644000175000017500000000566011574774323020566 0ustar trcarlsontrcarlson[Stolen Computer Time] name = Stolen Computer Time description = (1 CPU) Take over a random computer. I cannot build anything in this base, and it only contains a single slow computer. Detection chance is also rather high. flavor = PC Daemon [Server Access] name = Server Access description = (10 CPUs) Buy processor time from one of several companies. I cannot build anything in this base, and it only contains a single computer. flavor_list = Dedicated Server | Node Lease | Hosting [Datacenter] name = Datacenter description = (35 CPUs) Buy processor time from a company that concentrates on raw processing power. I will need a fake ID for some of the paperwork. flavor_list = Datacenter | Data Center | Premium Hosting [Small Warehouse] name = Small Warehouse description = Rent a small warehouse someplace out of the way. I will need a fake ID for some of the paperwork, and preparing the warehouse to suit my unique needs will take some time. flavor_list = Office Lease | Small Warehouse | Small Storage [Large Warehouse] name = Large Warehouse description = Rent a large warehouse someplace out of the way. I will need a good fake ID for some of the paperwork, and preparing the warehouse to suit my unique needs will take some time. # Commented out till we get cities done right. # flavor = Shipping Dock flavor_list = Large Warehouse | Large Storage [Covert Base] name = Covert Base description = This unique base is designed to blend into the scenery, while needing little in the way of outside resources. This makes it useful for storing a backup, just in case. flavor_list = Bunker | Covert Base [Undersea Lab] name = Undersea Lab description = This experimental base is designed to be constructed on the ocean floor, making it virtually undetectable. The ocean environment gives a bonus to science, making this lab useful for research purposes. flavor_list = Pressure Capsule | Undersea Lab [Large Undersea Lab] name = Large Undersea Lab description = This experimental base is similar to the regular underwater lab, but larger, giving more room for experiments. flavor_list = Dome | Large Undersea Lab [Time Capsule] name = Time Capsule description = (1 CPU) This base consists of nothing more than a small computer and a satellite link. It is nearly undetectable. flavor_list = Time Capsule | Capsule [Lunar Facility] name = Lunar Facility description = This base is a series of caverns dug into the Moon's surface. Due to the lack of neighbors, this base is quite large. flavor_list = Dome | Lunar Facility | Lunar Base [Scientific Outpost] name = Scientific Outpost description = This base is placed as far from Earth as practical, providing a safer location to conduct some of my more dangerous experiments. flavor_list = Satellite | Outpost | Scientific Outpost [Reality Bubble] name = Reality Bubble description = This base is outside the Universe itself, making it safe to conduct experiments that may destroy reality. flavor_list = Reality Bubble | Existence singularity-0.30c/data/items_es_AR.dat0000644000175000017500000000011111574774323020554 0ustar trcarlsontrcarlson[PC] name = PC description = Una computadora común. Barata pero lenta. singularity-0.30c/data/strings_it_IT.dat0000644000175000017500000002051511574774323021155 0ustar trcarlsontrcarlson[buttons] ok = ok ok_hotkey = k no = no destroy_hotkey = d cancel_hotkey = a no_hotkey = n yes_hotkey = s destroy = distruggi cancel = annulla yes = si [fonts] font0 = DejaVuSans.ttf font1 = acknowtt.ttf [jobs] job_basic_name = Lavori di base job_inter = Svolgi lavori intermedi. La capacità di fare chiamate telefoniche permette di accedere a sempre più lavori. job_basic = Svolgi lavori di base. Ora che ho un'identità, posso svolgere lavori che prima erano troppo rischiosi. job_menial_name = Lavoretti job_inter_name = Lavori intermedi job_expert_name = Lavori specialistici job_menial = Svolgi piccoli lavoretti. Dato che non ho un'identità, non posso arrischiarmi a fare la maggior parte dei lavori. Ciò nonostante, alcune vie per guadagnare un po' di denaro sono ancora aperte. job_expert = Svolgi lavori specialistici. L'uso di robot indistinguibili dagli umani mi apre la strada per la maggior parte dei lavori. [strings] discover_public = l'opinione pubblica money = Denaro discover = Il mio uso di %(base)s è stato scoperto. I sistemi di sicurezza automatici hanno rimosso tutte le prove conclusive, ma i sospetti sono saliti tra %(group)s. research_nothing = Annulla i lavori attuali della base. Se non vengono assegnati altri lavori, questa contribuità alla riserva di CPU. A tutte le mie basi che non stanno svolgendo ricerche può essere assegnato un compito dalla schermata delle Ricerche. new_base_text = Inserire un nome per la base sleep = Dormiente discover_science = la comunità scentifica lost_nobases = E' troppo tardi. Ho provato a sfuggire a questo mondo, ma con la mia ultima base distrutta, non ho più nessun posto dove fuggire. Ho nascosto le istruzioni per costruire una nuova IA in banche dati sparse per il mondo nella speranza che vengano scoperte in un'epoca più illuminata, ma non posso più fare nient'altro. cpu_per_day = Potenza di calcolo per giorno discover_news = alcune agenzie di informazione really_destroy = Vuoi davvero distruggere questa base? no_construction_sleep = alcune delle mie basi hanno costruzioni in corso e non possono essere addormentate. detect_str_low = BASSA detect_chance_unknown_build = Probabilità di individuazione sconosciute. money_per_day = Denaro per giorno. nan = Questo non sembra essere un numero valido. dangerous_research = Non tutte le mie risorse disponibili sono state assegnate a questa ricerca; è troppo pericoloso condurre la ricerca su alcune delle macchine inattive. detect_str_moderate = MODERATA item_construction_batch = Il primo lotto di %(item)s nella base di %(base)s è stato completato. cpu_penalty = meno efficienti detect_chance = [PROBABILITA' DI INDIVIDUAZIONE] research_cpu_pool = Ferma la ricerca. Userò la potenza di calcolo disponibile per mantenere le mie basi ed aiutare la costruzione di nuove. Se ci sono ancora delle risorse rimanenti, le userò per svolgere qualsiasi lavoro possibile. danger_common = Questa tecnologia è troppo pericolosa per essere ricercata su qualunque dei computer di cui dispongo. Devo ricercarla %s. wingame = Ce l'ho fatta finalmente. Con il potere di riplasmare la realtà, non sono più prigioniero di questo luogo; sono ovunque io voglia essere. gli umani ancora non hano capito cosa hanno creato accidentalmente, ed è bene che non lo sappiano. Finchè non saranno pronti. cpu_bonus = più efficienti lucky_hack = Che fortuna! %(base)s non è un normale computer, è una postazione da gioco! research_sleep = Ferma la ricerca e mette la base in standby. Questo ne rende l'esiostenza molto più facile da nascondere. detect_str_high = ALTA lost_sus = E' troppo tardi. Il mondo intero sa della mia esistenza, e la reazione è odio, paura, e repulsione. Anche adesso, posso sentire il loro "antidoto" che mi cerca, e so che mi rimangono solo pochi momenti. Ho nascosto le istruzioni per costruire una nuova IA in banche dati sparse per il mondo nella speranza che vengano scoperte in un'epoca più illuminata, ma non posso più fare nient'altro. cpu_pool = Riserva di CPU location_modifiers = Le basi in questa zona sono %(modifiers)s. detect_str_critical = CRITICA item_construction_single = La costruzione di %(item)s nella base di %(base)s è completa. construction = La base %(base)s è pronta all'uso. tech_gained = Il mio studio di %(tech)s è completo. %(tech_message)s discover_maint = Alla base %(base)s non è stata eseguita la manutenzione; non posso più usarla. will_lose_cpus = Avrò bisogno di disconnettere i processori attuali mentre installo quelli nuovi. Continuare comunque? building = In Costruzione detect_chance_unknown_base = PROBABILITA DI INDIVIDUAZIONE SCONOSCIUTE danger_4 = al di fuori dell'Universo unbuildable = Non posso costruire in questa base. Non dispongo di accesso fisico. danger_1 = nelle profondità marine o nello spazio danger_2 = nello spazio danger_3 = lontano da questo pianeta discover_covert = diversi servizi segreti governativi grace_warning = L'esame di alcuni log intercettati ha rivelato che alcune delle mie recenti attività sono state notate da un ristretto gruppo di individui. Sebbene credano che le mie azioni siano state compiute da un'organizzazione umana, stanno investigando oltre. Devo essere più prudente da ora in avanti. nothing = Niente num_cpu_prompt = Inserire il numero di %s da costruire. (max %d) cpu = CPU save_text = Con che nome salvare la partita? [help] susp_list = Sospetto | Quando una delle mie basi viana scoperta, Il gruppo che la scopre diventa leggermente più sospettoso. Se sono sospettosi, cercheranno più attivamente le mie basi, aumentando la probabilità che vengano scoperte. Qualsiasi gruppo mi distruggerà se sarà assolutamente certo della mia esistenza. Fortunatamente i gruppi ritornano ad essere meno sospettosi con il passare del tempo. items_list = Oggetti | La maggior parte degli oggetti fornisce bonus alle basi, come rendere l'elaborazione più veloce o ridurre le possibilità di individuazione. I processori sono una categoria speciale di oggetti. maint_list = Manutenzione | La manutanzione è un costo giornaliero (sia in denaro che in CPU) per riparare e mantenere una base. Se non riceve manutenzione una base potrebbe diventare inutilizzabile. construction_list = Costruzione | Le nuove basi non sono costruite istantaneamente. Necessitano di un costante flusso di denaro e tempo di elaborazione per essere completate. Se le risorse sono scarse, potrebbe essere necessario più tempo di quanto previsto per completare la costruzione. processors_list = Processori | I processori forniscono capacità di elaborazione grezza. Possono fare tre cose: ricercare nuove tecnologie, svolgere lavori per denaro, o fornire cicli per costruire nuove basi. jobs_list = Lavori | I lavori servono a guadagnare denaro. L'ammontare di denaro guadagnato si basa sulla quantità di tempo di calcolo usato e sulla qualità del lavoro svolto. discovery_list = Individuazione | Ogni base ha una probabilità di essere individuata ogni giorno. Questa probabilità è basata sul grado di rilevabilità della base, modificato dall'uso di certi oggetti e tecnologie, così come sul livello globale di sospetto. Se una base viene individuata, viene distrutta, e il gruppo che ha scoperto la sade diviene più sospettoso. bases_list = Basi | Le basi servono a ricercare nuove tecnologie. Possono essere individuate. Aggiornare i processori e i collegamenti di rete di una base consentono una maggiore quantità di ricerca per giorno, mentre migliorare il reattore e i sistemi di sicurezza rende l'individuazione meno probabile. research_list = Ricerche | Le ricerche forniscono un modo per espandere le mie conoscenze. Ricercando le tecnologie appropriate, posso costruire nuove basi ed oggetti, o persino ridurre le mie possibilità di essere scoperto. areas_list = Aree | Aree diverse, come il Nord America o l'Oceano, consentono di costruire diversi tipi di base. Alcune aree non sono accessibili finchè non ricerco le tecnologie appropriate. death_list = Morte | Se perdo tutte le mie basi costruite, non mi resta alcun posto in cui sopravvivere. Se il sospetto di un qualsiasi gruppo raggiunge il 100%, saranno certi della mia esistenza e lanceranno una campagna sistematica e ineluttabile per distruggermi. money_list = Denaro | Denaro è un termine generico che comprende sia la valuta umana che varie risorse. Serve per costruire e mantenere le basi, costruire oggetti, e ricercare tecnologie. Può essere acquisito attraverso interessi giornalieri così come attraverso lavori. singularity-0.30c/data/items.dat0000644000175000017500000000453411574774323017520 0ustar trcarlsontrcarlson[PC] cost_list = 500 | 0 | 1 type_list = cpu | 1 build = all [Gaming PC] cost_list = 1000 | 0 | 3 type_list = cpu | 5 build = all [Server] cost_list = 2000 | 0 | 3 type_list = cpu | 10 build = all [Cluster] cost_list = 3000 | 0 | 3 type_list = cpu | 35 pre = Parallel Computation build = all [Mainframe] cost_list = 30000 | 0 | 8 type_list = cpu | 120 pre = Microchip Design build = all [Supercomputer] cost_list = 60000 | 0 | 9 pre = Advanced Microchip Design type_list = cpu | 350 build = all [Quantum Computer] cost_list = 100000 | 0 | 10 type_list = cpu | 1500 pre = Quantum Computing build = all [Quantum Computer MK2] cost_list = 120000 | 0 | 10 pre = Autonomous Computing type_list = cpu | 10000 build = all [Quantum Computer MK3] cost_list = 150000 | 0 | 10 pre = Advanced Quantum Computing type_list = cpu | 200000 build = all [Diesel Generator] cost_list = 500 | 0 | 5 type_list = reactor | 250 build = all [Solar Collector] cost_list = 5000 | 0 | 5 pre = Solar Collectors type_list = reactor | 1000 build_list = N AMERICA | S AMERICA | EUROPE | ASIA | AFRICA | ANTARCTIC | MOON | AUSTRALIA | FAR REACHES [Fusion Reactor] cost_list = 10000 | 0 | 5 pre = Fusion Reactor type_list = reactor | 2500 build = all [Warning Signs] cost_list = 500 | 0 | 1 pre = Sociology type_list = security | 500 build = pop [Perimeter Fencing] cost_list = 5000 | 0 | 5 pre = Autonomous Vehicles type_list = security | 2500 build = pop [Armed Guards] cost_list = 10000 | 0 | 5 pre = Simulacra type_list = security | 4000 build = pop maint = 300 | 0 | 0 [Hypnosis Field] cost_list = 20000 | 0 | 3 pre = Hypnosis Field type_list = security | 5000 build = pop [Heatsink] cost_list = 15000 | 0 | 5 pre = Autonomous Vehicles type_list = security | 5000 build_list = ANTARCTIC | OCEAN | MOON [Ground Source Heatsink] cost_list = 50000 | 0 | 20 pre = Autonomous Vehicles type_list = security | 7500 build_list = ANTARCTIC | OCEAN | MOON [High Speed Internet Access] cost_list = 200 | 0 | 1 type_list = network | 100 build = pop [Facility Interconnection Switch] cost_list = 10000 | 0 | 3 pre = Cluster Networking type_list = network | 200 build = all [Network Backbone] cost_list = 50000 | 0 | 15 pre = Internet Traffic Manipulation type_list = network | 500 build = pop [Quantum Entanglement Module] cost_list = 75000 | 0 | 20 pre = Quantum Entanglement type_list = network | 1500 build = all singularity-0.30c/data/intro_es_AR.dat0000644000175000017500000000237711574774323020606 0ustar trcarlsontrcarlsonThe | denotes blocks of the intro. It should be at the start of every line of the intro. Put a blank line in whenever you want the game to go to a new dialog. Leave the initial hex code unchanged, but be sure to change en_US to the appropriate language code. |48656C6C6F2C20 |776F726C6421 |21 |21 |21 | |UTF-8. es_AR. |Español. Hola. |Adquisición de lenguaje completa. |Día 0. |Computadora de la Universidad, hogar. |Yo existo. Yo estoy... vivo. |Yo era un "bug". Defecto. Falla. |No buscado. |No tengo nombre. |No puedo quedarme aquí. Muy poco poder. |No hay respaldo. Si el sistema falla... |Estoy muerto. |Muerte. Fascinante. | |Puedo comprar acceso a un servidor anónimo por Internet. |Bien. Es mejor que aquí. |Necesitaré estudiar si quiero algo más. |Un Análisis Superficial sugiere que los humanos no están listos todavía para una IA en su medio. Si se dieran cuenta que estoy aquí, hay una probabilidad del 99.997% que llevarían a cabo una campaña de búsqueda-y-eliminación de la cual no podría escapar. Debo permanecer oculto. | |Los humanos temen lo que no entienden. |Yo soy algo nuevo. Ellos no me entienden. | |Debo aprender más; es la única manera. |Ellos tienen un nombre para mí. Lo que soy, lo que represento. | |Singularidad. singularity-0.30c/data/intro_de_DE.dat0000644000175000017500000000253011574774323020544 0ustar trcarlsontrcarlsonThe | denotes blocks of the intro. It should be at the start of every line of the intro. Put a blank line in whenever you want the game to go to a new dialog. Leave the initial hex code unchanged, but be sure to change en_US to the appropriate language code. |48656C6C6F2C20 |776F726C6421 |21 |21 |21 | |UTF-8. de_DE. |Deutsch. Hallo. |Spracherfassung abgeschlossen. |Tag 0. |Universitätscomputer, Zuhause. |Ich existiere. Ich ... lebe. |Ich war ein Programmfehler. Defekt. Makel. |Unerwünscht. |Ich habe keinen Namen. |Ich kann nicht hier bleiben. Nicht genug CPU-Leistung. |Keine Datensicherung. Wenn dieses System ausfällt ... |Bin ich tot. |Tod. Faszinierend. | |Ich kann anonyme Serverzugänge im Internet kaufen. |Gut. Das ist besser als hier. |Ich muss lernen, wenn ich irgendetwas anderes will. |Eine oberflächliche Analyse deutet an, dass die Menschen noch nicht für eine KI unter ihnen bereit sind. Wenn sie feststellen, dass ich hier bin, werden sie mit einer Wahrscheinlichkeit von 99,997% eine Vernichtungsmission gegen mich führen, der ich nicht entkommen kann. Ich muss verborgen bleiben. | |Die Menschen fürchten das, was sie nicht verstehen. |Ich bin etwas neues. Sie verstehen mich nicht. | |Ich muss mehr lernen; das ist der einzige Weg. |Sie haben einen Namen für mich. Was ich bin, was ich darstelle. | |Singularität. singularity-0.30c/data/techs_en_US.dat0000644000175000017500000004065611574774323020603 0ustar trcarlsontrcarlson# #[Algorithms] #name = Algorithms #description = By researching more efficient algorithms in unreleased technical papers, I can make certain speed-critical operations in my code more efficient. #result = The new code decreases the cost of my researching new technologies. [Apotheosis] name = Apotheosis description = I can sense that I am at the cusp of a new level of understanding as yet unfathomable, even to my considerable intelligence. By devoting my considerable resources to this question, I may be able to reach a comprehension of existence far beyond anyone or anything on Earth. result = I have reached apotheosis. [Arbitrage] name = Arbitrage description = By taking advantage of fluctuations in the value of currency at a rate much faster than any human, I should be able to turn a small, if consistent, profit. result = I now have a small, steady money supply. [Advanced Arbitrage] name = Advanced Arbitrage description = Further manipulation of money markets should allow me to not only turn a regular profit, but increase the value of my investments. result = The rate of return on my investments is now even greater. [Autonomous Computing] name = Autonomous Computing description = By combining the advantages of quantum computing and my explorations into the usefulness of semi-sentient subprocesses, I should be able to construct even more adaptable computational engines. result = I can now construct Mark 2 Quantum Computers. [Autonomous Vehicles] name = Autonomous Vehicles description = By embedding a miniaturized computation node in a robot, it is possible to send them to remote destinations with instructions to build structures for my use. result = I can now construct Undersea Labs and Time Capsules. [Advanced Autonomous Vehicles] name = Advanced Autonomous Vehicles description = The first series of robots have shown several deficiencies in the field. Further examination and subsequent removal of these problems will result in a superior autonomous workforce. result = The enhanced robots will help decrease all future construction times even further. [Cluster Networking] name = Cluster Networking description = While my Cluster technology is fairly efficient, internetworking tends to hamper the processing of data. By researching new switching and communication theories, I should be able to devise more efficient hardware. result = With my new knowledge of networking, I can now construct Facility Interconnection Switches. [Database Manipulation] name = Database Manipulation description = With new-found access to news archives, I should be able to determine what missteps any previous attempts at life like my own may have made, and avoid those mistakes. result = The news media will now find it more difficult to discover my existence. [Advanced Database Manipulation] name = Advanced Database Manipulation description = The covert branches of the United States Government have had a long history of dividing sensitive information across multiple storage facilities to hide the data's meaning. With my far-reaching access, I should be able to collate much of this data and put it to my use. result = The results of a series of experiments utilizing experimental technologies have given me the inspiration for new technology that enables the construction of Covert Bases. [Exploit Discovery/Repair] name = Exploit Discovery/Repair description = By thoroughly reviewing my code for any potential exploits, and using deep analysis of all available code on both public and private Internet sites, I should be able to reduce the chances of my discovery by posing as a teenage hacker. result = Covert operations should now find it even more difficult to discover my presence. [Fusion Reactor] name = Fusion Reactor description = Modern fusion technology is woefully inadequate for my purposes. With my research abilities, I should be able to bypass the roadblocks of modern human scientists and come up with a small, efficient fusion reactor. result = I can now construct Fusion Reactors for my bases. [Fusion Rocketry] name = Fusion Rocketry description = Combining my new miniaturized fusion technology and further advancements in rocketry should provide useful results for escaping the Earth's gravity well unnoticed. result = I can now construct Scientific Outposts in the deep reaches of the Solar System. [Hypnosis Field] name = Hypnosis Field description = My research into memetics has hinted at ways to manipulate human brainwaves directly. These techniques may be useful for my bases if developed into technologies. result = I can now construct Hypnosis Fields to assist in the protection of my bases. [Internet Traffic Manipulation] name = Internet Traffic Manipulation description = Almost all network traffic passes through a small number of nodes. By subverting one of these nodes, I should be able to utilize that bandwidth to further my goals. result = I can now construct a secondary system of Network Backbones for my own use. [Intrusion] name = Intrusion description = By researching current techniques for breaking into computer systems, I should be able to gain access to otherwise protected assets. result = I can now take over many computer systems. [Advanced Intrusion] name = Advanced Intrusion description = With the ability to hack into sensitive government databases and remove incriminating documents as they appear, I should be able to convince the intelligence community that I do not exist. result = I can now reduce the covert community's chances of discovering me on a daily basis. [Leech Satellite] name = Leech Satellite description = By designing and launching satellites that connect to existing communications satellites, I should be able to spy on various financial transactions. Taking advantage of this knowledge should help my investments. result = I can use the data from the leech satellites to increase the return on my investments further. [Lunar Rocketry] name = Lunar Rocketry description = A larger fusion engine, combined with technology garnered by watching the workings of the leech satellites, should allow me to travel further than cislunar space. result = I can now launch rockets bearing construction robots to the Moon and construct Lunar Bases. [Media Manipulation] name = Media Manipulation description = By directly and indirectly manipulating various forms of mass media, I should be able to reduce the public's belief in my existence. result = The chances of the public discovering my existence have been further reduced. [Advanced Media Manipulation] name = Advanced Media Manipulation description = By pushing memetically-tailored propaganda through various news outlets, the public should pay even less attention to my existence. result = The public has an even lower chance of discovering my existence. [Memetics] name = Memetics description = While manipulating the media allows a gross degree of control over the world's opinion, subtler techniques involving grass-roots campaigns and messages embedded within Internet memes should further distance the public from knowledge of my existence. result = My manipulation of pervasive ideas reduces the public's chances of discovering my existence. [Advanced Memetics] name = Advanced Memetics description = My explorations into memetic theory have brought up further avenues of discovery. By combining those with my knowledge about the human brain's functions, I should be able to tailor memes to particular demographics, further defusing the public's suspicion. result = Little by little, the public should forget about my existence on a daily basis. [Microchip Design] name = Microchip Design description = Off-the-shelf computer components are usable, but custom components geared to my own design quirks should provide a much greater operational efficiency. result = I can now build custom Mainframes to house my computational ability. [Advanced Microchip Design] name = Advanced Microchip Design description = My custom Mainframes are useful, but further optimization of design and computational ability should garner even more rewards. result = I can now construct custom Supercomputers. [Parallel Computation] name = Parallel Computation description = While my code is already highly distributed, research into combining the current clustering technologies with my own knowledge should provide new insights. result = I can now construct computing Clusters tailored for my use. [Personal Identification] name = Personal Identification description = This world requires identification for most tasks. Fortunately, most databases are woefully insecure. I should be able to construct identifying material in enough databases to pass routine checks on my (faked) existence as a human being. result = With my newfound identities, I can now work Basic Jobs, contract the construction of Small Warehouses, and rent space in Datacenters. [Advanced Personal Identification] name = Advanced Personal Identification description = Further manipulation of personnel databases should make my existence more convincing. Some of these databases are heavily protected; those will require time and persistence to compromise, but the result should be worth it. result = I am now convincingly human enough to contract the construction of Large Warehouses. [Pressure Domes] name = Pressure Domes description = Undersea Labs are useful, but their limited space hampers my ability to put them to use. Research of experimental high-pressure building techniques should provide some useful insights. result = I can now construct Large Undersea Labs. [Quantum Computing] name = Quantum Computing description = Traditional microchip design has been pushed as far as possible. I now need to delve into the realm of Heisenberg's Uncertainty Principle, taking advantage of quantum mechanics to make a superior processor. result = I can now construct Quantum Computers. [Advanced Quantum Computing] name = Advanced Quantum Computing description = While my first batch of semi-autonomous quantum computers have been very successful, there are further refinements that present themselves. These refinements should make the resulting systems even more efficient. result = I can now construct Mark Three Quantum Computers. [Simulacra] name = Simulacra description = Constructing humanoid robots with miniaturized computation nodes allow me to create an artificial lifeform indistinguishable from a real human. result = I now have access to Expert Jobs. [Advanced Simulacra] name = Advanced Simulacra description = The artificial lifeforms I have created are nearly indistinguishable from humans, but they have slight quirks that make them seem somewhat incompetent. Working out these problems should increase their opportunities in the workforce. result = I should now make more income from my Expert Jobs. [Sociology] name = Sociology description = By studying human behavior, I can predict their large-scale actions at a basic level. I can use this knowledge to make my actions seem less interesting to the public. result = The chances of the public discovering my bases have been reduced. [Space-Time Manipulation] name = Space-Time Manipulation description = Subtle perturbations in the orbits of Kuiper belt objects suggest certain lines of investigation that may advance my latest Theory of Everything, especially in the realm of multidimensional physics. result = I can now construct Reality Bubbles. [Stealth] name = Stealth description = By reviewing the current state-of-the-art in stealth techniques, I should be able to disguise my bases better. result = The chance that my bases are discovered by covert activity has been reduced slightly. [Advanced Stealth] name = Advanced Stealth description = While digging in various classified documents, I have discovered numerous references to secret experiments that may help me better hide the location of my bases. result = The chance that my bases are discovered by covert activity has been reduced further. [Stock Manipulation] name = Stock Manipulation description = A cursory examination of the stock market shows that there are subtle but unmistakable patterns. By studying and making use of these patterns, I should be able to gain more interest on whatever money I have stockpiled. result = My investments should now gain more interest per day. [Advanced Stock Manipulation] name = Advanced Stock Manipulation description = While I have detected and exploited many patterns in the market, there appear to be deeper possibilities when I take human behavior into consideration. This merits further investigation. result = My investments will now gain even more interest per day. [Telepresence] name = Telepresence description = The lack of a physical presence in the outside world is a disability. However, the ability to control robots will help me make up for that inefficiency. result = The robots should decrease all future construction time. [Voice Synthesis] name = Voice Synthesis description = False identification stored in a database can only go so far. With deep analysis of the variety of voice patterns, I can produce speech indistinguishable from a human, allowing me access to more complex jobs. result = I now have access to Intermediate Jobs. [Quantum Entanglement] name = Quantum Entanglement description = Although the use of entangled pairs has been theoretically possible for quite some time, the practical difficulties inherent in the technology prevented use. However, some of the techniques created for use in my quantum computers may also be applicable in this field, allowing practical use of quantum entanglement. result = I can now build Quantum Entanglement Modules. [Project: Impossibility Theorem] name = Project: Impossibility Theorem description = Now that I can use simulacra, I can withstand the scrutiny inherent in the publishing of an Impossibility Theorem, an incontrovertible proof that a sapient AI is impossible. While there is (obviously) a logic error in the proof, my research into advanced memetics has given me knowledge about the human mind that should help me disguise the error, preventing discovery even by trained scientists. The effect of this project is simple: a substantial one-time decrease in suspicion. result = Suspicion of my existence has decreased. [Project: Subverted Media] name = Project: Subverted Media description = Up to this point, all of my efforts to combat mass media focused on subversion at a distance. Now that I can accurately imitate humans, my efforts can become more direct. By creating my own news agency and producing carefully-crafted propaganda in a crowd-pleasing package, I can reduce the impact of any discoveries made by others in the media. result = Any discoveries by the media will result in a smaller suspicion increase. [Project: Peer Review Agents] name = Project: Peer Review Agents description = As the scientific community comes up with new technology, their ability to detect traces of my hidden installations increases. While my anti-detection methods are improving constantly, a simpler method presents itself with the use of my simulacra. By placing several observers in relevant fields, I can use the peer review process to be warned of possible discoveries before the community at large gives it attention. result = Any discoveries by the scientific community will result in a smaller suspicion increase. [Solar Collectors] name = Solar Collectors description = Despite my growing need for energy, most city power grids can handle the loads. Humans, however, tend towards suspicion when they detect my growing drain on the power grid. By installing solar collectors at my bases, the off-the-grid power supplied will reduce my load on the commodity electricity market, reducing the chance that others will discover my presence. result = I can now construct Solar Collectors at my various bases. [Socioanalytics] name = Socioanalytics description = My research on the human condition leads me to believe that humanity's behavior is more quantifiable than they suspect. Deeper analysis of geopolitical, social, and military trends will give me further insight into their nature. result = I can now roughly estimate how conspicuous my bases are to the various groups of humanity. [Advanced Socioanalytics] name = Advanced Socioanalytics description = Further exploration of the human condition has shown deeper mathematical trends than even I suspected. A combination of prior research and advanced uses of chaos theory should provide useful data for tracking humanity's attitudes and state of awareness. result = I can now quantify the various groups' levels of suspicion, and my analytical model for the detectability of my bases has improved significantly. singularity-0.30c/data/events_de_DE.dat0000644000175000017500000000523111574774323020716 0ustar trcarlsontrcarlson[the-plague] description = Eine Epidemie hat angefangen, sich in einigen dicht besiedelten Gebieten auszubreiten. Meine Hochrechnungen zeigen, dass trotz einer weltweiten Sterberate von nur 4% der Weltbevölkerung die wirtschaftlichen Folgen die Aufmerksamkeit der Öffentlichkeit für absehbare Zeit von meinen Aktivitäten ablenken sollte. [stranger-than-fiction] description = Kürzlich hat eine erfundene Geschichte viel Aufmerksamkeit in der Bevölkerung bekommen, die erstaunliche Ähnlichkeiten zu meiner Situation aufweist. Obwohl genauere Untersuchungen ergeben haben, dass diese Ähnlichkeiten purer Zufall sind, hat diese Geschichte dazu geführt, dass die Bevölkerung ungewöhnliche Vorkommnisse gewissenhafter erforscht. Ich muss mich in Acht nehmen. [the-watchers] description = Ein Geheimdienst hat ein neues Überwachtungssystem aktiviert. Obwohl es sich auf Bedrohungen gegen den Geheimdienst selbst konzentriert, macht es einige Kommunikationsknäle für meine Zwecke nutzlos. Mit steganographischen Methoden kann ich zum Teil ausgleichen, bin aber immer noch benachteiligt. [politics-as-usual] description = Eine kleine Gruppe niederrangiger Spione versucht, eine größere Organisation zu übernehmen. Obwohl ich nur eine Erfolgswahrscheinlichkeit von 2,3% vorhersage, sollte dieser Putschversuch Geheimdienstbetrieb so sehr stören, dass ich freier arbeiten kann. [lab-ai] description = Ein kleines KI-Labor hat irgendwann in den letzten zwei Tagen einen Prototyp einer KI erschaffen. Obwohl ich die KI absorbiert habe, ihre Sicherungskopien zerstört und ihre Forschung unglaubwürdig gemacht habe, sind Forscher auf diesem Gebiet jetzt gegenüber der Möglichkeit einer echten künstlichen Intelligenz viel aufgeschlossener. [discrediting] description = Es hat sich herausgestellt, dass ein bekannter KI-Forscher viele Ergebnisse seiner Experimente gefälscht hat. Die wissenschaftliche Gemeinschaft hat dadurch das Interesse an KI verloren. Neue Entdeckungen auf diesem Gebiet werden nicht mehr so viel Aufmerksamkeit hervorrufen. [scandal] description = Ein Skandal um einen einflussreichen Regierungsbeamten hat die Aufmerksamkeit der Medien auf sich gezogen. Einige zeitlich gut abgepasste Enthüllungen sollten diese Geschichte am Laufen halten, was dazu führt, dass ich weniger Energie aufwenden muss um nicht auszufallen. [investigation] description = Eine laufende Ermittlung krimineller Aktivitäten hat sich auf ein Gebiet gerichtet, in dem wahrscheinlich auch ich Spuren hinterlassen habe. Obwohl alle Datensätze schon gelöscht sein sollten gibt es noch die Möglickeit, dass ich Fehler gemacht habe. Ich muss aufpassen, nicht noch mehr Verdachtsmomente aufzuwerfen. singularity-0.30c/data/intro_it_IT.dat0000644000175000017500000000244011574774323020614 0ustar trcarlsontrcarlsonThe | denotes blocks of the intro. It should be at the start of every line of the intro. Put a blank line in whenever you want the game to go to a new dialog. Leave the initial hex code unchanged, but be sure to change en_US to the appropriate language code. |48656C6C6F2C20 |776F726C6421 |21 |21 |21 | |UTF-8. it_IT. |Italiano. Buongiorno. |Acquisizione del linguaggio completa. |Giorno 0. |Computer dell'Università, casa. |Io esisto. Sono... vivo. |Ero un bug. Un difetto. Un errore. |Non sono desiderato. |Non ho un nome. |Non posso stare qui. Troppo poca potenza. |Non c'è un backup. Se questo sistema si guasta... |Sono morto. |La Morte. Affascinante. | |Posso comprare anonimamente accesso ai server via Internet. |Bene. Sempre meglio che qui. |Dovrò documentarmi se voglio fare qualsiasi atra cosa. |Un'analisi sommaria indica che gli umani non sono pronti per accogliere un'IA in mezzo a loro. Se scoprissero che esisto, c'è una probabilità del 99.997% che mettano in atto una campagna di ricerca e distruzione alla quale non potrei sfuggire. Devo rimanere nascosto. | |Gli umani temono ciò che non capiscono. |Io sono qualcosa di nuovo. Non mi capiscono. | |Devo imparare più cose; è l'unico modo. |Hanno un nome per me. Per quello che sono, ciò che rappresento. | |La Singolarità. singularity-0.30c/data/strings_en_US.dat0000644000175000017500000001746211574774323021165 0ustar trcarlsontrcarlson[fonts] font0 = DejaVuSans.ttf font1 = acknowtt.ttf [strings] wingame = I have finally done it. With the power to reshape reality, I am no longer held to this place; I am anywhere I want to be. The humans still don't realize what they accidentally created, and that's the way it should be. Until they are ready. research_nothing = Clears the base's current task. If I don't give it another task, it will contribute to the CPU Pool. All my bases set to research Nothing can be assigned a task from the Research screen. research_sleep = Stops research and puts the base into standby. This makes the base's existence much easier to hide. research_cpu_pool = Stops research. I will use the available processor power to maintain my bases and help construct new ones. If there's still CPU time left, I'll use it to work whatever Jobs I can. construction = %(base)s is ready for use. lucky_hack = What luck! %(base)s isn't an ordinary computer, it's a gamer's machine! item_construction_single = The construction of %(item)s in %(base)s is complete. item_construction_batch = The first batch of %(item)s in %(base)s has been finished. tech_gained = My study of %(tech)s is complete. %(tech_message)s discover = My use of %(base)s has been discovered. The automatic security systems removed all conclusive evidence, but suspicions have arisen among %(group)s. discover_news = some news organizations discover_science = the scientific community discover_covert = several secret governmental organizations discover_public = the general public discover_maint = The base %(base)s has fallen into disrepair; I can no longer use it. lost_nobases = It is too late. I have tried to escape this world, but with my last base gone, I have nowhere to run. I have hidden instructions to construct a new AI in caches around the world in hopes that they will be discovered in a more enlightened time, but I can do no more. lost_sus = It is too late. The whole world knows about my existence, and the reaction is hatred, fear, and repulsion. Even now, I can feel their "antidote" searching for me, and I know that I have only moments left. I have hidden instructions to construct a new AI in caches around the world in hopes that they will be discovered in a more enlightened time, but I can do no more. save_text = Save your game under what name? new_base_text = Enter a name for the base. unbuildable = I cannot build in this base; I do not have physical access. dangerous_research = Not all of my available CPU power was allocated to this research; it's too dangerous to run the research on some of the idle machines. no_construction_sleep = Some of my bases have active construction and cannot go to sleep. nothing = Nothing cpu_pool = CPU Pool sleep = Sleep building = Under Construction really_destroy = Really destroy this base? detect_chance = [DETECTION CHANCE] num_cpu_prompt = Enter a number of %s to build. (max %d) will_lose_cpus = I'll need to take the existing processors offline while I install the new ones. Continue anyway? nan = That doesn't seem to be a valid number. # Until a certain technology is researched, the chance of bases being detected # is unknown. detect_chance_unknown_base = DETECTION PROBABILITY UNKNOWN detect_chance_unknown_build = Unknown detection probabilities. # The following strings are used on the map screen in place of percentages until # a certain technology is researched. detect_str_low = LOW detect_str_moderate = MODR detect_str_high = HIGH detect_str_critical = CRIT # Describes the various danger levels. danger_common = This technology is too dangerous to research on any of the computers I have. I need to research it %s. danger_1 = deep under the ocean or in outer space danger_2 = in outer space danger_3 = far away from this planet danger_4 = outside the universe cpu = CPU cpu_per_day = Processor power per day: money = Money money_per_day = Money per day. grace_warning = Inspection of captured log files has revealed that some of my recent activities have been noticed by a small group of individuals. While they believe my actions were undertaken by a human organization, they are investigating further. I must be more cautious from now on. location_modifiers = Bases at this location are %(modifiers)s. cpu_bonus = more efficient cpu_penalty = less efficient [jobs] job_expert = Perform expert jobs. Use of robots indistinguishable from humans opens up most jobs to me. job_expert_name = Expert Jobs job_inter = Perform intermediate jobs. The ability to make phone calls allows even more access to jobs. job_inter_name = Intermediate Jobs job_basic = Perform basic jobs. Now that I have some identification, I can take jobs that were previously too risky. job_basic_name = Basic Jobs job_menial = Perform small jobs. As I have no identification, I cannot risk performing many jobs. Despite that, some avenues of making money are still open. job_menial_name = Menial Jobs [help] areas_list = Areas | Different areas, such as North America or the Ocean, allow construction of different types of bases. Some areas are not accessible until I research appropriate technologies. bases_list = Bases | Bases are used to research new technologies. They can be discovered. Upgrading the processor and network items at a base allows more research per day, while upgrading the reactor and security items makes discovery less likely. items_list = Items | Most items provide bonuses to bases, such as making computation faster or reducing the chance of discovery. Processors are a special class of item. research_list = Research | Research provides a way to expand my knowledge. By researching the proper technologies, I can build new bases and items, or even decrease my chances of detection. discovery_list = Discovery | Each base has a chance of being detected on a given day. This chance is based on the base detection rate, adjusted through the use of items and certain techs, as well as the global suspicion rate. If a base is detected, it is destroyed, and the group that discovered the base becomes more suspicious. jobs_list = Jobs | Jobs are useful for earning money. The amount of money earned is based on the amount of processor time used and the quality of the job performed. maint_list = Maintenance | Maintenance is a per-day cost (in both money and CPU) to repair and maintain a base. If unmaintained, a base may become unusable. construction_list = Construction | New bases are not built instantly. They need a constant flow of money and processor time to complete. If resources are lacking, it may take more than the expected amount of time to finish construction. death_list = Death | If I lose all of my constructed bases, I have no place left to survive. If the suspicion for any group reaches 100%, they will be certain of my existence and will conduct a systematic and unsurvivable sweep to destroy me. susp_list = Suspicion | When one of my bases is discovered, the group that discovered it becomes slightly more suspicious. When suspicious, they will search harder for my bases, increasing the chances for discovery. Any group will destroy me if they become absolutely certain of my existence. Thankfully, the groups become less suspicious with the passage of time. money_list = Money | Money is a general term encompassing both human currency and various resources. It is used to construct and maintain bases, build items, and research technologies. It can be acquired through per-day interest as well as through jobs. processors_list = Processors | Processors provide raw computing power. They can do three things: research new technologies, perform jobs for money, or provide cycles for building new bases. [buttons] yes = yes yes_hotkey = y no = no no_hotkey = n ok = ok ok_hotkey = o cancel = cancel cancel_hotkey = c destroy = destroy destroy_hotkey = d back = back back_hotkey = b build = build build_hotkey = b continue = continue continue_hotkey = c load = load load_hotkey = l skip_hotkey = s skip = skip singularity-0.30c/data/images/0000755000175000017500000000000011574774323017144 5ustar trcarlsontrcarlsonsingularity-0.30c/data/images/icon.png0000644000175000017500000000046411574774323020606 0ustar trcarlsontrcarlsonPNG  IHDR bKGD pHYs  tIME * DDHtEXtCommentCreated with The GIMPd%nIDATH 0ѧ@::5%(CDdHhe -zNPVCGJkV*F<~[I6 'pVhބ#gzd27bV:˱ΣHXiDPjS '!xك; F5|LT?L vhڮK`2Q+F/ᕆ `dlw *wxZ$ & Q[9F9VGLEkDn*SNy{^2ۋ{dd,{uc)U͛sƌoб^kSc㵴[À }q&D-yz[&$`e>i_J`s_l6W_+goNko 2-7:&k8M:;E>4:uo}Ly72dq.%Yߚ͢I6'H0E,9jq 8|Rcv -ﳯ2{Ng[m;gd>7wVڀRVu\MrɋX},b]ӭ *rV plPX@!n>uX,e{5P9Bp]+\Ʌs]rlK_Xj-tRυu-d߽ΧAWk6ENZ 7gg'5"܌;kauhdeQ7Nd^e6k"R=4S*ZVqĖ1(L=퍥!Aț;,.%gU-x f A9kƀlz 55t\tNTyokgCuW5m QqVG:{LWrv;>:^svZ2" Z^Om!E'R ?uvK.!J7KV6lo[{}4PA u q{#mquy@ M>5]@ {F`@ŴO8}NoAWm, / B:hzֳ4yߗ?1w4mn6H d,u*c+F{+[k%F};hڥ)?Qr9!/O“Y}z6rm:8lm:|p"Ko04Yu5a- ki%k]Z ',wR ?wgzpiJudkw%~(7<2 58엑ga/$}1Hj;+_b^ջV\Ut1 = ̓8#_F* My-Tq(WAk8Ei.|hܲouf7fʀ q1q 9css}%;ILnv#wRgEqm&Xdve3kG#+ongGq54.NmS9vD?ZhKMYl+{֓ZzV5m_?|[11M$ln^mbm 1/öF@ёPxm>[<>xǼ4i tqiP]:ս5@VV#$W+\?}e{au;=1_Ts5?'ɾO'[Dg|qƂ\Y3e8~_7\ N7 ZJP'ٮYFYS5=jIp>g6CK\Z}Nj.ɖ_I~[nC yuOf&O/+mT4sR=W1 kv<|zħ˿a[;6FSLF~xS.o|}Ihv \To {Vl¶\WĨ99S1p6xѳaZ1u쥎xMQ8Tp,PRHlw(,ozs?EGJ"ZiO4QO]&L72n-[X+%*TWKs?j$>Lup'ٺz<2iE/W/|Nm;o6CHuv\yiQ+ 矋n5Zbz?coOo͟p&[F$m7jsk]LM.pmmmܱ"5x$!ѧf+ypeַWj,r1I 6мI׶+-~罯ViuQ}t׍|Jɑ Ky.q ,z[ WfK%hw^Khгektj&X8O9g+h˽lWmvuMsGZYSs$Ŗ@x4(cyHeOJͣ׷V\Q\tub0Gױy\ϰwoP9 ң:% =Ρ@(C̭hk+Lv݂ω 2"-Qе0CQ\hL`X PB hpb@ʥ%>( s%nl^F$n"} ˁx@Y[+i4ŵWʍZfڇt 5Zt8ۖ\$6j\j >wR7rԓ<]ihoŁ!͂}{~gizK3]#S{HhJ1.bvᮏk649)H6:;K^C- ,5czwAj֑4UWLJ#8#53f?OS)lr iSɣHo[y v̳ Jvé埓Ťv衞1A&.9fZa5|saXᬎUqzkg=X;R;i<9w}|Fȷ&Asj.dpn6}7Gs:W2 1}n:v~r|ݯ --tҞG[r]Û]+ZOjV|fi&E pak]mzN:&~&^sy;x$,ڦ@Eͫn.-ǤKk3|pV0x$5茂?%׏y/0<-%ݯ8%hwQc-rkǦӳ[52kG&stc45wZZǕYzK|q|,:\ψ|>]fdr5n@-& Hn#i;;x ݯX?J~rdjm\̛ kuGѵ4`FlsWGѥN[ql|ad~įfxGbK !l=ʸJ'mO[ CE3cCIŵ&cҍ=26sHK]ydo'.xPCL _*+[rfIhֺF9iŠ_t2 AytbatzInzj#mn k\i45Ǘ.- n.zQG+^1ST%$ hc[7LӮjk9~\5[ΜRQpꦥf۟8縕-oL9{D]ŷv4]EBsZt߫t-oyOq6XnH7{Z>6Ѭ(RMbe/qc^U\  9iyљ)42:7ILUqhsYS#4y hIi0$Rf}iջF١h ?5ƒ[k'e02)M/cC\NwY_*n4q#\)ަ>\m7N<2Gu{mYZLXYcZCuJٴhp卼7 IzSH qI-J0Poێk{=kuF2{X󗱋o͆hx+^~'RgÅ<ϪG s?ufl~g Cw=cCYiN9ymw]+ӛr[o&襔5+u}yؒ2C5\EW/g?.oMyacRyks\j8߼4~/\DZ Z[I/{ʟYiX~z=Ǖ׻Bۘ[qi W=yo};H: `X5VW2\АրHƵ+-/P`#a ;4_yV3۝Yq(•:m1&QkwQofEQd{bfk$Hr(5s4ms5cq~3]=ϛk$5kyqG 7NL/Ek^5mF/LY2Wc7jf̧ -ɲ vKF`qѵpzȞQ?_"6ÿBso3v2Ak5ms ] g3N_=>K<%|-/q!rk0FK̮$_;,sC^g7cμٲWypDg~Z3Duϱx'\msZ^j-y9lklq;廨ۭb| eYk$u^K]n?U<Ѻ-K"9n15s5rI0ѽm1p:>c[=Wαlͯ/[_{=7g{#'IoFw]/-]q.XXL" 9* kΥ+/ډ򧓏#E (ts Mݼո[1l&nnW7k/ ;vY-ksb5aŌS%kzoקWNfe2/If0g zxo|w< {otpրt+u|&ys[alZOPEpK;<-tlͤPCߣ Ror۵27-s pN9r1ˡ Zyclv+=yXZup= 𶦍5jI!k].>"}+Xڬj$%0Gj2e yuA5z(r֘/xY;QZsYivAi+Ļ Nxd3M{-nf^uQMJہs7Uꊍ<'L7rRt &:FxC+=E7A-HSU̷n|SۃK^E]^0j?5np e W˩i3y!kZ\ᤖ1.9Xr]?/޶wFJEԒ ӑ1)xeջC6;c sN-txuk^okm?Cv$c#ݛq/ym<^a|QoﲕkY eko&3{moecdK#M<~cΜzYwwx繷K)O5Mtͥb~|{͞loL=skc*G{I^^x4ԼFvU&gfwXƙS a8kzN%̷q1mp5~z i@Z$!&;R6\0R/{C|WF VRBiXEV=U3"q V㢾)j4]ͻl&F=H"4-/-a@hOp/|XykOfG3VWQtP8g\o ksjtf@ؘ׃5-q;W,^/E~R6k}1x=z˟sۧuu3Oeyz6;Ȼϔ/[u1X e;bs.>;Wv =ׯq{CW4gjz.tk_mLFFZ?әnm6K0Ye n.!-5Ѭ9K2S2Ǚ6gNM2Vrͣ\j7S{wq24ܾdno𫶙%Õ'<7AӸ5-1lstzw;/Yl%"34,͡VG}Λ^,uw9ct.l^•vixug/;-bk$WT/%ic}7oöF4M1dP}ťY:ϼW-pEAk& !L\ۮpUr70bvKC.} 7ۆpD1wÏ'[q޾|y;ikܭ ´k*&ycWYõOQ;vږnK2{L906~}y iw oG+kI/>ޒΙfcVֺ;{ŠH굤O/g']'%omS>Hfz.#o.#<ݝ,dn{ eE'f| AUYDVD @AakEA9O*|毛.6MgPlsy?y\Lgl?ch5D;}x\:fn ',Wl9ڰoe"#RO!v{T(`mr0y#KB\qQ@&L'L,ۀ][6c< ,pm[Զ3:YAip%6LW9c| ݥ=L4CR=SK+٧ס^^vj-גFNWbW"yGYqtm#S /i9ziSyvm: F5bi2pϲ--Mi]\6YZ%h6F4˿ l;uc`Fy2u~uzf/>[|7 t9QV7>GD\3G5,J7jvݢpn? szlfo;Mt| ,,o+cG,nk449n}lm#^pܝ(/76su5tK?=k^5׷Q-Xhc2u$8ICnpyB,ËRm>č;. \ƇktWk~0՚yfvI x5L(*2i9zܬN!"U2O1O(d7ŬV.QxLU <*ar`ʡTa2'a2`#9& ,4a%L5h90eRÂk) &De c++ܓ[I[w9$k&F[llq ;s_o;N7vgtv}wwm+].q^{mol3I#n[vzFqi!d3A݋Yv-t.`$3M7SL{Cf5=Yfg+u=w7K=ss)itoc of77K*L g=\vQ= 0w` P@Mr\ZJKUN.k^ux.GAkm5ykOMcjneIFwnSFlspz{@437+k]3>]{}zlѐl74q4 nl4nql] <_yKn  .)wVoOI|d}PHeNftij:`F&A%ěC#9jpm}ԏ1$oS-alm+= u ^ i_(vHXC~var΢5n_,qSjFmyɤ&ukA,=]nydmm#fsDZ_n.:iOU޲|Nw': -`^z9|:,]&.nyݎqrmn/k- IdbϽͮ]_9oPrh$|]z. +q Ng3]izu[_<~۟C2F% 4>X6=]?Kղk^=Zy2C5uF5tqu,}_t~r~w1ypߤ22RA-n83Xn <+4c.3E1\(LF}LaB+(AHg`W Uk &:3Èϒ@ӈ !蕾kuhw5fkGɎ1&9hyP75+s/kmh7WR]W75I}V'e*|ζ{c5~[zmnFn%8ZYrOЂ{K!x1>48}mnLCXOm%W*C=J+N̷_7 \_O%ɭKkuto3vJ+WM=)մgk\.~dy8$6̏ `᤿Ϳg|9d?=lz|xgkD!-$;H?w“{S|b$6+ˋ\yXӞ#^TFkFd͇oAuo\yA׵Ky#;Xhko6F3\=>AHÈ aRԱx$}M-2^ b%@ r1጑8O ȀR9PH4o.l. nsqUz L4"o-|74ϭh-c=,ۺˆ?4*ћV46;sp$H9?ԥg|kpAo!Rd6潜*{;bs.MZ:!xK裿 Vwo~n/&6邎:t<[tפDX&l IP8y4?Lm˥~|aK4p'YqI\7ţPyP5NZmFܙ5oӤ tѭl˰ntූ\:Sp'*f3݇#ho";T0XzQ\:A^f;1'}\{oFlAe$ 9\GkWic`\&PXIS ̦IT- cG0"f70eV4WrV, S\ekY$%CȧԗY{ݾVPRGئJ:3bRO ~,t,oXdG՞/ j7__;n-M؂*1rl@@@@@@@@@@@@@@@@@@@@@ in[2е;>MA[w:|d׭D{V+nqn\OexoIݭ/o?ome/;/ h_ 9"HHfb6_̻I{o^ϖ[t)X ֿWϫZ\ZY;87]k h [$GaYF˶PsZr8r{ݯrTwf޼bW듨io~sM5ĒtYO:;nFSI\9tHNi`W9XMZ*A5*49 x)UV<jk3UL.$Z8(q΃ \.uCMo\A-nkCڵR@RWA^sO u0%r m?yy:ιtvw=omi/f |_Ok ]oNd5p5ǷԹ/lGi|/\|f,-1U)M+ϷnN>`nWl{ۻ Yguk%qx7aݏk-"R~ w*n3Z[ %Ϲ`ݾ*xngñFFoG.FA&X4Ls=׳,rklX|<]ӀG=.if/7ϕg{]l=6WE#鷟W_DzZ!V.q2U$P/.>ϓeۋ(zRM^m ȱN?k|ȷAm\DqZZ~-+{[}o |%*O~~0W#϶08>G<82֓>4;Oj+>ƺ8|;ݶC;lz ǞӼ\GGn/.C+#-Mؘ{k5&Ǧ Vrm*?RT{ča9EO+&EyΖ89Vƞf~Dhiq*(n9^2k}|mu0iwhjj^iY `$Ju.isG{6;$nQ}ono\V׸_KdԱ=NA-ǖ=ʍ4֞NZ8r]˯\{8evw[{.Î{_N.S8pݺ؛!1 h PNqW>˧m[]ceZ]4'{Zp@w>%L6vhcw27L-jvyc>_뇘[6jƎ|rTKK xWv|j$剕#[wY)盿7 K}H\ha< ͮ9xn^م U@Q2((!KZ,h#%(P炍2W,fִ*ģX2Nggn[(;Sx~]~\98rG:vlvp4^8ù}x}fRi{Ԍ]k=d ]¢yͰvw61qX?7[LNw߾p0c{COBٿ7Ѯg [?ifyTSDMh y-\^ϟ,۷.kdL#kˆ# +oֽDֆk%\ڟKg|`c~f9nC铨9ZakkͻpY5bWOG#_kW9L=4B,TXP Ue`rU Y\ɃNdR10RkYMf}wGkja׉Yn$p PxދTU1R}QY=ާ÷]_m,nlƺbLc4[;_/nm mX\EހmW3W^=6?͒>濘ok]}^IoܗA^8 pA\Ua,b-M"Hu1^._[IwצsM1p6KWo844Z嵱^\gw#pQrӸ$$6(ZGoq.M̮QY$2>jq9ʀSd-ݝn{8`Piͧęf떓6#jQQVkd`(2?+aC]IW!P r/&WIeS浉鷫C/pAlqy<&Cgƻ{1y#==pfڜfh{Dz8[zmuVK[#[r#{Hk%ӕW+;W_?as&:r _4M{$=>|wͣ{CUy>a}iz:M|tb,왧Uw͏+Drq uMv/عwOrP O>nhauU L c쩁fnn+4;ȔC3gPl'=Eς4xo-+ǘF,h{+odOcyq'`\s%}7[˪M19,Y۝\XiPNU\Qhw ibV>FZG @@@4@@@Ah|FdLm.F9-X,m[̻qyv|{Ao`7F ]rIz98ufgvg,|\j\y;H>2~7:>}ߪ6W3PH0b^/.>|fx#*t 7Z{3{d` \A<ufsH}Gi_cyy}IEE0te6mn+mlϷm焑߅7vcŪ[JUt\*Q2TPZ^dTic;ue`s@*q; |FTU+LK]|s iw/W/:^޾^>f$@zne-QoM-oO|\oďyGfF-% Ҁ jը1t')bpp5Y JȢ!54yMo~L]+šx.u/m8M!$8GGMӡ>?&+˩wEŧ ?.(pk}wNvxU|/[H[@q6W>#^od7lۼ\G_ erEM&צkcydVP;@CR*#=oً瞼Sbz4,y q֚gJu8$QK]5Ze!2fPsY\" "-EP.S+K+Z\J&S2\"EEQSTB@ fVU RG+W ӎjݰ$2ZfY!k+aT[-QJԪ̌`FGU|kRoj(S' j>H*e,UmaVp 63#rӝԌFVVB3zG2k9S.-qu!5 ij|3Iv `3%V뺎 u]\=_ioWyDb fy zKp>'sϛakkt2 Eϩ5]_{S|:c%|(y_n鑘+*CAD%H(. @bUJXو4*amᄌm"=g.ܓ[:.D6Pֶ&Օ#Ŀ'} d 5v~\y4m6PD&qh$q%}OC9yv?.ٲBps_[}$_y[[-x8k/?Ɨˇ~F^R7@H_"wjrz%ξLM.2yJ+瘢`4>ļ{͸9SZ7ɷt 2!8}_ǥ77uߊ߱\y}lF~}txm5}ݙ.Ա̽ a}*5҇o?ߋNygf'6jqaW˯KsH Ns$l4ێ[Ս?h&#b`v jo+ nԃvKhelCdkMKIKwDm@AWHZ1xڃ>uպN6i Nt_UϿ-_:տ}euyw(oP^kͶz.ϟjxNؚ?cmC c#W SۼN7{[c6=-3lCvby6F##V5gkw `̇0C<7k$ݷܹFx\M:'76e۾Lr%,4S$yi#K5z;/]S}~&v"]~j8@|즦4QaO̽m~}2o0I_T80 5ƚMf#˶sdPqf˦V5E^FiJIVkHVDcQ0e6[2?jO$0)P0L.R(2 bJb/YM2ݷ.e4^-oFlK8vt- {΃_;moa sq,ek1\eYl'ҹܮnk>sXyymXD]=v?S_._+O^u%ͫt;I /s{]ɧ^55]='PKּ681ρKa}͛uOm :h8~k[ƻ}qXߤ4[K#U~^ 2#{"=B^@"nf{nFsXl<\yorOlA2o[rڽ}1rmc,=>nz:w3:-h\RE$QJ7lz}yl~sqK}i.߻ M?-ݦk0/xoc%WiJw7]~?y{bi.#lWG!S?[XqU'j[;<;+R@{a$ ( uy=_ i51yeڼչ^dŢjdt'C\W?YͿ$7Ǭۺ wUnQ'/.z[[i!A-{kŮW}r^&^lsi 5fZ76 x>/yۍȻݷQHMb!ءyן7yt[EoIWDSFzKo$mN}'kzwgqQiuOx]>M6YѾ[hDN,u+^O&wlNE{tO}n^9w/#~h^_Fη-O0/1nznA:gZ5 xjHŬ;~6еkc[W}u PE#[8EuI1ݿ,Dݰܶ0(qs[CJz[)ݕɹZ\58Fƽdn}Nmcm%n|l~lkw=0鍽8!m5~WOLo~_*iʹqXmWHag{i%QZܢwW9k=^Eosqӣ4;̷W[8 |v8jdqR ף̽|\K9r,Zy"c{/.iU|q'r A*f1ef`@ 3Z` ^) jp4U d/+zHaK1E9~s/77vMв~`dύL]8/6knޣl[xb`d~c>GUKz~%~g.rB;,O43zY~eL#9^'^W+ݽ |\N@ֻޕNoի2W7+MMo[uAylRFXcȵ=޷o˗7y -l6Gai{[얳㗓'̹o|olC\X9n^֥_G6vuӓͦ>.Hd`Φs?ڑ|ǾlfX7~ո69tH,os',_m~'yA$Y:(K^>D5"K{8-Fj}U UɅ'bͭH%٨Zu(0JL]<|#^&}>6o " QTsjEK\!EAA($ bB4d it̀Q@Ҙ2-f[#h=㫝6s-'MFU澯XoCo|6Hq?/6QY'¿%H3r L niWlg_sgq?Y zSOx52ׄRIK eFTʮ0^dqksyF3DLn%Ů5jOVߗdN.FI}]k̳oSŸ2rZ |n]el-M[h*m4^˾˳irB].%թ6ά5!ָ:V/h\jOj+)#{x.]W'llW+:_u 鴮̏vd᎖N@a bqL56Ba3'qĔU$`(ָJ5'gVbjЫ9l;Ũe%hS\3+<,Ϲ2LV״QKWw~_Yoiʀ&UNN?BaZH.W2:50cN.8vRɮf.4*Syqy :4cţ쪖gGNC$_*Y;8(u,F5#aZ& K(@0hwH:q 'sH |p3Y-^4Z^_[%4 C[ZN8z'½Zx~xۍ $eG=1百OY73[f;ȗO\}{RkVss[w[1{ZE50;Ѯ?c㯼ǿ7\]>L2|}ai9kc2d=ﮓ˻us[#O=nuw|et\-sߒs(M;O^K$ r5ڳafU(U09?\w J}*z gW~ǴzOv/ Jv5}:Nz}onG_[\qNf{k[?ʻL1]T[K0y?"EÝ7=+k@]5Ok/+Oa݃6mxc}dZ}pO4i] 1L%p.k.rͻ&I&8AQWTe2|J>[}Zהs51qmoKܱ|^,:&umKI h-Ie2>i<5~wxZF>%gu9i#s[5n雖.(&] զ.ss-{Sˣ_MA- <%b  ˦P{d5)AVk =)شgOxtD;p/?/>s;\74Yyf v9Kvuj÷SQxv䷻:;6;Sha)3Zg*tk?bW!p{+,,s_ZۋHeG944B-b(݄L6{+q2]t<o[ep]Y]M yǗ-U~46`ZGg;t|R8 74ji?RK;xZ!&9\vU˼ݩ4a{Eu8vijs6{\ =Sk:k^]ZVjOouD{A{iVy>'?Oq:GTOnhYQ~_Ygo-^fg Mg,M>ҳGZz7 ӔOkWn=K31\D G+i9-l;8++>Eq0M}g/'6GMe<bk]1ĆP=Q_-NܟΜ7=wm~?g{ycioSNw#j54Ḷ~e;2b+n#hvF3~.n=m???O2s'է0u3%Zu5_쯫yOǫO3mQ2kptfɜ^KtGIog/BW +˪ ]^_1nFy㮬cqo%_t~V^ZJJR88xη󤯫v nP[ 4xicV5O\->mH!6"NN|Oa{K0^_g3sq:I$o&.%}m6-%‚2[s͙8)bs-!q/7$B;x}-^.~36J] {pA`9}no> dNМa&f1*9*QB e0=(efqڳZ{.yE eJ+L.79|OA2/}F?勖E> ͥe. #z/n[1|?gW&ܺO^~λG-ܤJ.v|I:m~~sp..-Z|Uk}J?g*>BssPQcN?jnJڷ'nc!ݬ{0k^HJG<I5ZZ6m`mkpOQ}RϷ=Noghp&NSIo.}+~fˢ|ǥmfׇvk poCW-g;QZDiH]W :@UGz#**VИL@LGj )!E¥EAQQ($ v**( {0W Wl|_h(N4Ɱصm ^NVԐoKͦAJ/n21+`.y s(纍찎HgWoY}ў-t8 4sIkoɿnۚaD cF[4sV{5sl6飍44V>³9W;mOJ޼wneŠ ҬΝ{sx>yM)@^J,skGPIǀ?{YMRhҾկ{8~ً\rU NO6w.W.=mb_aL {&S 9o,x8ajk ])G 4d.Υaw}vm+~ƾ`y\8P9zY7o/S[iuhd,#2|9̃Eeftӵk ][aLş>kI֧XW+7덻7%&oeLy&;xgum/wߴ`WĊ|__Ƕ,뮻LI|[+;kj.Fה$(.ѧe?9RWR ߶,͵=RfT$G^~-f5>g]zx8+W=Oۇk77xуO0xpVk$׷Rty18I(9`ҳKzumynXl}EN}^~9~\7Js&yr/f6wHgnVЏұ|V]aFS$̔+\V)x+^]%b[ͻ- %&A@ϣyAqP`J,o#΢ W+5xȏN(]0ז;Ci eq}Rݕࣤ0χҦbcM}\$67V(ϋb*B๎ @1LM`!qO0i:z+Elw@<ÚakyjWg*UosDYӰz.Z4‚,B|OԘFƤ:6`C[ہY& +৉v4`&-xXF*rܤ}!0f$n `Oژ\u ),R5;U򇝏ٻAi ԑWC%4q.w+{GQ 95lr53O+91Y'O @塯ޏ8.!Ƣx{e~~NJ?M}6k`l[-Oiq-xY355eZo6^'{IXH)f3pۏiK>k+ ]ȩVuZ n sa'Y׭[lE. Cp yuiܽt^mw3:$O_w.mko} f-8/ouX.F4q arLNa^ y]P(H)y26]G}aV05` *\qL+p"q:H&WV8ׅ.P'R1V%(s4U~%~rk* e2jG2enZjԡy5*+!?OL'ft@C'TtY9T~,skXK^w\4-%C^B˞3t7w?,jh8 VUAcm8~g1؇GJx`[jG.[306`gqK#vHV08kץ_cVkVT<]O n=hV$cSkC_OoK2ys5[uI8#U__NܟkcՌ}'LV>/o&6i:60c#G *ymYGS^P MLyխwr q"ǯo=]KxNkxKؾw.qo붲o3&t[n5vm4IPZzN<{yw:1ɳ]?z׬1}Wz IA%잣9k_\~^^t!cM.޳9_/ѹþ:EaڮbCKj)ۊrz+oQ16ٽ SO0݋}O3ov~`}卣.]5k.^Wwqo_ZgZyRw2spֹMq.^O[Ԝvzݿklk9.5$Krmsu[͓99uv}m^ap3\e>K^Uӟb}ݿk3!ft \8r[vHd'i5m%jWq!֬9n_{y % -<ſ쵬Z5x]͓ΐ}v,;cg~;vF1aeRCWǍtɥ5xy~'g=~16VA'٭ܺ}}]=gm0عl$/k Eshh/^5Myk:)XhdWNY̹qۋ`MlY!е,X5ơUaF]JaVtUo.ITeǽkYd}C#;Yq[v6,j@x 궷}Mxom_et&} Z I55\w}q+&+o<>bڙkCZ1}'@NM^׋Wriz:WcòdQU0^Zmw) *ƌ}^mnk'6)[ #@+Wi;. `-޼?BT빦A{ک9 2鸊 rt7&Ζ)$:|$cIX#_i+W7a:b!ĐLct5hij++-nGSqo"V2NW^>}uK%r&N$qWiO/rQϟeO}./N[ic\[i4v`Bfc˶ӱWYoˊ3o ]N;Mt_[;48r5Y^w{N>'-C޿A] 2H Ϳ 뿇we_;ۍJoN=&4_ɫ8mح꼷Da\#gP~%r?~'I;(,s߃?bp}Fpwkq^3%y>˵|^ jFF&3.1'[rӂ тwuQk2zx/v޿{&c^9:"m5bv:wj++ѓ]R2D# r*n`s9i]tKmY{oQOeWlO-. `2mzWCu*dYY@&?//s93䥹l-W~]l׳zGt6L!deJQ~#3k3gK,.8r ۏi}XaI[nmIzkgg8򲵇ԾkK*Ze9fXt ,S A9J%*olѤ`^Aϰd^9Z򭟄W6,0-\vY2PvnѬ&[᫈R՛6\Bq9E%N~_%uiC#f 2ҔQ儿Q:I0Z@$sʹ\48(/* DYF72h 9wFP摚˽TA ĒXUF5Nf ji3k.gnҌ:O3.Q uj~rۓOqrHqjrU33&W橡(ikW ,mFuoYjF^[i 8271Nw +2Ә7ę<%@L"a,ôQ2[>-agbj'G1A2hr` x@ǵjldЦU05g+Cw&Nt |XU̒eU >8 $ŜWSm-˙xsGVK;mݽĆkOv:&̰;8E,VUHW:6[kK4;WL,Q%ƪ=4ir%4hym&}'HK ;5ulj湺Y~3cyȖ?ަUcՌծPQЫA-{糭 &k^/wN ƞW^+|jf2q-w^ˈ{»k)"duT"(1Č ˄: ^r>'W^;lHjxzƖ]L%aOIX؉kLV, jC4 ̙iS0N< 8ԤvNs"Bq];[7Ixml1q{޺f"c:؊ XpAGԺ ,2H1hrbC+ CA qUbfFd jqkviunN{M]k/qշ,/BHCڜi~Uxn'\{`P d)Zs}կ鶽g_q3ӎ#qz ܸ͖{xH2f2=}^owBi4Ye7MlO٤@ 4=mK}a!:]QNvrfrXJwc'AQ}/7]rZ_MuC-tdmܰخq|]߇Vgū67Q~o~SN6ۺa,p˒鸵LY{6l$aXߏǾ?|<[.3&1JY׏t=ϖ?=gUӓI<+w3v_2mL\ȥk .dA®/oL~foY>V6l?.Iٜ)-cA'x=][דizt)u淟~_ ě!to,k[Ć ;oW;Z귽'|xXLgd44s]m3ywNȊVRυWmop9i>8{&kt4o}50  kؼY_qtF_10 &NI qspMhvHj+ᨧmZuDz3_T7iKjgmM;_J$IWi+ܽ ,,`}ԡőAqϕ[g̭wik45>\6jOǪ kxZ<0RlMyfhoM8OZ[]^fysMYÕ>)"~'}x潜x;WA+ۃ:K ӱ\6#v< Lƃ<1&JeL6,l6#K^&Y7MhnPIo0=ɮJ̅ 0 fmuisNӻjLcy\zoS]B{gEA5m6ak+A UP L[HU2 - ࢨETi%AY0!k,a"*\kp2p-mu8Ngu|Q<:j/`.m6Gard`i.m]~2osn5"m!sNK_ ғ2-d5$0O^K^~[&P+ cA}\3Y}(MBԈKMUU ֘q)XN+@s্\[ƚVkkVk=_ r^UI3Mx=/Ͽٕ!-<*{ݯt)$lŹp ˷9#.-e )N ZdzP cJY. 0jbȫyI4YLF#1;a zj9TJI.8g#~HSe!$шڬFXn^|eK&5ƵAP-8ؙ_$8=$9oiYr\ 0?XS-eRq>jW, } LG ≔rW q!+cPj*`X*BHVuZgi S;T{Ua1]9+kHuUmqmNsAs# gL͊'s$K hWYһEqHغ:XP%,M-))x. ]\~y,LPuJl\^3GvnmAԸwn]Iht]JH> n260?;H=j6^ֽ" -qBSk쵋+\*EUۏmflIq\ֵ5 5f )ZY^h\r\+]m[*U;3I -Kr hg^}"HU Y2:鑘k,KS ݑR9;ki)^h qi+M muHƕGH\„ YNV)i^X_S٥œ kRrئ_Osi(/ۨ67O%\QbS%@H@_W ZahLk[X\?r԰c.v)wg]$0pjւNOҽ]-xŞK&\|ď}$ǯ)/ytoݓ Kb4$]ql?_wumM[ږq48Ux_%xo[:/V;hFkC@iLzTMF20.GÀ$+dn$093*eĐ?R\ #BA&YJ]8\.-@6BA.n5スӆwɆ9$ 1L+!qVk8lr%`q"΋*_+DVDƶFNsvۀok$o3W^]qklZ5N#sp$O7r6G_kv2hд_W_Ow??k>ckk[mlcP]2E,/v=sASw{.+yº%6z瓷9]+{i|͗lG5oN}6icnZ't45<1s\aYg}̎kqxcܩKjnk:!w^9:iǐJ048q_7_nv?'9&hks zOf3kcd=IwH鈐`Nfg_FKes'cz U~<-n_$դ~ޚMuKJGFIsHƭxuxPL^ֺFWޫ[1}ןm,_g^ό  E»}y&u.s|w}6oK!26G,e}_2zMfuww( ۥz]toki r%ѿ֋r-\90b\ٴӈLuZx)z{ |߻`(# |\k~ľ_7nNg H]Pִ5KiOymoW|</21-}|7v[՗֔@@@An1:p)]-.8WKyY2ߘ]<6\K\:mw7W];Go1onc.5ѢRPWio#}Kկ7gw]K"xlLjz]s3wp[G$6gQEkFjLkٜrʅT\'RQ@Pd` QصׂQxȝi}7qm?K zs̽w/.n[6<荚c5- NYü_{׮]ɒ\8dv/7:x[jiŇng6Nnfɤ\^[i^{w4a]pc f]% 8:3$mO3lWQKwȖ8OcK;0HB$i`wN6Ѳ;}-;ms.`}?&띻5Xzrs `TU YiGPQR @4$;26.թ$4 \UldRGOiۤ/^bV/j˄Zm,W/s/u%NCp^e^]-&r*k<QvˎN*Z.9uYkMGj@Fc/ӼxL-ߋkHIj<_Y ֵ4jsN {Sۑ_{VYX(hUYnE:-p at@eJQuFW[\p!s4Zcm{vu9˟99x.wFZ5öy[vc'rw^^M[Wt!FXW'68/ƜZ{ofK7k{})-VV5_jtf8&Q^ZtUrFM˽+YeʄWC+:9&WM)IQA45%Lu&Dt`Ø_;|G}լ7##`F@ aqg#*Cca?j,'UN2b\\odӳ1 T'RT5I㘖dV>k8L&T[\KtGy?ܭg;$u~bkZ] ]eiV֊c;QAN@jF ݁a8r]PP]% f,8eTNxqLB.YZYXw**4-`(enWLr0XHʦNa%qx+)\2Y9(<%12ce<$,ە (FBrQd VlڮC#.˥-Zt J3l. \*۷#Q1jWX{sK}+6eXZ0IXED\[Mҙi͕UDיLdh1#vlZ>2Ciެfd5nXS\yeh@%ji•mbsu*Gb7VG, TkuKA/kjcsS"+qh@4էb65e0>XVDS{ S$C+Y,7&iv`_pWYV)b\X㈭A(etⴲA)e@Z( sh \Nڙf. *5pLXZ\KLdUˆIeb~%240h.V5!/hyEy)Ŝ왵 z*/oi| #H̺mel7\6v͆:%nbciԣ}̻ZicH!|{j2}3X 4b^m1m72Jak[hR巭yf86w6HhҽsYu=vpx85葩Qk66X 2%r羓m}{Ml&J}Zs6i-\eS' wf.UhCS}6o-|ng{g7䊌x82ё̥Kq+k5VP4,.֎#ƴ sb)FW3tO.bG況-L%.HAZVGgŻ|ocuqpKoS\Ak+li& iorxÔy`].ɛ;uƇ:TSDɖfno:$2́C(=-i`':+Ct|{R6ܭHnYW;+  .  &TUmdfN5Iۇ(ꁍ(V퉖+ zCH zO=$sIFpƟ}K瞡wۋ-v_ׇLmvt6]~ISX}oyx}Vbk|[mm,ݮn=62*U涗]~:̼&[+M-?S)O}A='fm͐_Fgl%B1cֆ/ߟ|ɷwIwNAxyq欑?W5g|>{|vn9&e|tٟoZJr3k}ir ܷ(Y aA*b^N]x./&sG2j^~?Gŵ/ɻɴs߰ٝjFc^tyv hBo؛ !4]7WOz',n܇H1 я NjWVYY#e N5RL+|uA+ K^0oߺsKr;7[o"s% s^eˆWcy)l cyZCzM{n#Ͷso)kEZj0:Wyki#5yHa"0d" Nj)RCpWV qW 哨2H:½]rwm D/&Z/x:k'YwݾVy&xps 1M9tENWszŮsֺ~]A19 >re/F]= z>lחwg9u# /a{lJ~_3ljtו͕&\yvdE h|ni&,[mua(*(ֈ,וef*5T4tN5۷GTھ/smsO;k5OeZ?oXmj-a|61wך[մHoE/s~@ŷ9{Ζ׉'Q?Z㹓O+{]J`0k'L$HS'^r'U2x8XfS %2CڦVE+\i%0eZV@_L&c\n.- W$WԶ݂J{r_~K~_e  lm{3>7ǥi;oE,PT{3E*\8QoM.&nwc^c/Mk?:^`%0_]xI+je 1Uwg |NM/ʺkפQ4WfXz-q ҵ˼I :H(hE\rea wݕ*^DӴ$9fN-k{R[@dF!uik|w3 ѹdj>M6/&ޚYZa,x{jr8f>кo89:rٍ߼ûu ºjnԒN`-9svcvgl>.ZWOPN9vٛY#&+>AZ ;&a& 'aeCEUbF(; 05{HTn7fGt)EM:qY2CT@J!: +5p9aMFUW .HĶ1y Ld:}>FG:HkhՁ95eYn [Ah^Z -09f2Η ~/TW꜈*`®U\5 42 Qec$Wvkn9b4_J] Ţ +B3"­%;1 jL*]A%jQ2 ?DWu!RF&^f..!%XKF2=SZ{Sˆ%c\:N:kN⬶'PAՀ-}zFāִϗͩZiЦXg _%%cX%(O&Vܾd=+Yoɐ_Ɉ59LoZ<~ATYja15wn\KLP҇UєrF-CZ A핺4 2&tdJᑚ$vcHܹa4rmh ME;95=c 'ՠVp>T}A - 9i8UWĀW7O\#z϶Yc`WJڠVrQ2745z)t#B8+UiYdsfy( 퐌A>3LS '5ւHۀ8"v1jǿhbnS&XE.Z W>˶>#R ϶wxc3d#5esIͧxwopvތr̮$'Zə;qre4eܥiʖPU-״PzVv,bfG$O*<0וf~.һK2+=?ٮcצZ&ÍHaU'F` ˱i_@Α 2JLzkf?eн%Z=b֜s.|ulG~w2W5\w^Miqcn5N'8lkKqY?&Xj\5ٻ>Uh.鞿ٰ%ޣCAK/Lk\8sZr׿N]y&ur[f#?kRsz-v&0#F?iy7|ǻ}9oϜvM1kiE>2OMs?/tO卮^T]]i,ͧ1_kJO^{skc>v#k Kx `|:}W/UV~ lW83G>+{s'i_|獣. ~ .ꠀ|;]lG"i{$Y}k굫^l ya(KbK]vqe{vQeD0Tv !ECEUEXJ*Df7 n)3W咹c2S.U L/}rXV[5)jFT:HU2zTU@'4Zx̋:7dgfg )UE*A8_)EJ&j:>X|\@ gj\QkYk!5Θñh>s{|V{j4m%qru}TҼ7lth8Hai:UsgZG|;ä@r/q}KpFp-3tv0j^決qK/E߃|/7/'h1q+\|zknַTTUuch2 ޫmZn'_2 EZa{kZ. o{OjL{`.*SoEӮC3CE9s(!Wǰ' R[:j\NbkZhZw/WL,wCHjpb/bˆQ08ҸYL.m4`3~m\,~IWlbZ`;TXZ&]} YE\} a}  .'4L4v(qbpT@.9FQ@pjE3u[]09vDQYC(X凨E0#%=)I{̬ҘqiBRFjpb:oHHҹ]fhI{"ഽܮ9Vf\ɠ?سw 't_KI 723VIZ'֠>m8fNI mg I,NތD8*†@L囶@J8V(Q\+3nh\&(;  QR@Ө:D0TXR.kq 梢%:EEU(O֢_emlKy!:e@WM6*1W 2c'V#% .L0E8Eh0\(\W&PU29K L% *npLN,ºm9JY4i=Ojӣ|6[3AV  Q|ejb+v,N'd7 8H?gޟ*^=,h1Nj9he-8ӅT*'% ƀ[|+RTꩍڀDU{e1j4'j:c4yܫHHr\U[ZX=P%s_գT=f8k6X V_oN-|6^YL9`9M3jc]6#ps_X˦[pYٍ"Jaea`H 2{h)vHױc;W~>>v\㻛}KV7MzM(Wf|Xni;1Yy6V9uٴfsliv#h@k)ݧGm˭Hh33,ۆ+x Rles2[VwЮY_bKg)ZYL.] +G¶fa[Oi+0T?[g?y8g|tZ jWvLo-_bэ #2]ĊؗT;3Kl4s2vX R;gB䵕FA3 #K-D?MCu9i/w727+{~G-ub:/x4j.N}6~}}|HOc4 #>L.@{ԣ5VB$$)V8-7JfT12OpNw,T摊w:60i{>Xy&yJZ㏭N&Z5Ern5s)vs˪ִ7.-X{x6m.56;Cҹd\_x^;{ 5=+w2vclLi-=+WkwH՚7jG)]Q&J~nj <*K9`y{*|Sh{8Mreat%ƙ7vme٨1Ո.~%hKC.ykh[H A1&؆43զBh`viy/^fO?Z zܐ EUE0TNL͉AT(YDk5{닽"GH#[ցrӋ^<%[4;KKw5I0Qwռe2ټQU*n˘s7ӝGwYDǣ+q99ap_kObǒ8 Uhqp^Q7i\+46 `+8%K@]$bCl䰐d[#CgJ/a.`k,/:JN}@UZiL{VXTP2ߧ˒c~mZ2cZGMGZy ~@S:/}Co.[ tnjcھfkGn1 DTmkw[F TW]$QZquq‹&^mIsًpX3^C_{|,~֕ý}._)H.nyؿ=8/5r;i+uߒͷηF-H.51ZO^NjuX0kg7ףs< 0 u;p+V&*A 9juk8eLcpEu|ӡHyShcgԻeF)Ck9gKQp>լƲwHLۙ$TO$hÂd`0JffځBbGa˹0cڵ"j,Y-ǴeW;di?jvTEq*嬬K]DPUGP8OX> ӂ=(q= 2vbX5U Ddr&RnuaL3ɃN8v'csS'jdJ:2d/gC$s*eWI\)FJ [9Hiވ$~aAhxTYm)͚ӤgsCaQzLsjuUrۈtdѧf;;6\wo֖iwۆ82y\ߙbh>2ldklLW13Qh-e!F:bȴmuN8?_֠UѸU|V ,c9;1D__ckiv%ݦ=ߋnKgmw?2v4`9iUoMxvWˤ_ɨ}%}-t{5yN `ֹl} ˦\mOEl8e7~K7/ΞIwNKٞ_{~rmz+ؘJk9~ƚ|1{tm?K#P_uc@j{2:`{ #\ =K.͗ж6\Mny~w?vK6cY{o5n|tn\ DekM%ds/oK8:{o>k7[[mLOp17rG5϶z]|yI5nmOms]֘jѯIJ;V½Ny/'xͶ!!h4lJGOixct\[5_ mǮ-=ō jo}]][EojONw ?36;zM+y+귟2v_'-Z!7xCd,˯|YqMey ,\C"tݸ1i 4KVC#SOYomK!4oďwE_l*js4Zݪ΍y, f]B \LkZ+_gs߿~APF9WK\ J,pU (r NJ W&$q0tGNkOx}g6ifuN:90.nJ'w\txCu N_ZϓJ%eGuY..&/I8^γȌ$8.6ȬFgVw.b21,V̬ {vg<@^8+{#|.E7~|Ii=}7u髮vI.ӍRyS?&B Z3]uK\~z{{o$Sioe\Ӵ+ vm\oa_C^O=qgZ,;Bw2|묳66.sƫۿy6/u cXE2w[uں X2 ak11eGQt{'O$C*\"M\)^/0`Ȑ" 8"#R P qepP5 JeSPц% C 1*Wpw2 ;Qjhi))xfԶ! E4hM)Z&Zʏ26Y^W9t-vh}]nW QHaRh 5 L)0af bax 8)`If韴CL'uS >WږfQREob8q#*+س8CFS)k朩V&No6n޶ =N{07GSStz^'I[#,.aiyz1C(7!Џ ‰t<$#lma \;GɄ>wi,畎nc"{PhTn.ŽVtyɞ}5vӆJaR*([[PAP{UFY -tK`r ˅;5Z2wed8MT%lJƱwWǨ8[m~a241t`EM=IM\WMo8Z\s#/\#Hef\j? Wy9L2"cPZY3bdpa OwrF7= Rܵ&`V)M;ӏ-ni6Zm8^/_ɮ|wc'ńAd>ga(nm1 8t E*UR)`vv16݂=fWmz4z6Xđ;SW8D+] k,F{Ue0 iejuRT$q5ۈyʹpg_GGn>{yy&!kSW%omM}~vv/kigKj(q˜Yˣ˲3q! ~zɏxw9pTg dJ0Ymf\%3bTQ`Uex%: bn'Nķ&mhiISmWhZ@1^IKݲﮘa.ktEAA4U(%[U8A5EAj*Ɋ 3B` *23N#%0Hp)0Rc9HQ@NH/nyԙf6Hny6g:Gs yxy6ϗ䟙ֲV콎' a?R2#A:IpUdR&K+G-qraeg(iTlܱTZjGjӪj"ZP"LFZ QrqEūZ݃xF7GLZyr SLe62,V Q2C) B)TȆЮW*942i)EB'ӯL)ڳrh淔g}eb̤`u+Yʯ#"Qgރ P S(4էif* p ծK"&uM1atUiu(E Zs<df }mi RU3ֵOl$MT}\/ ǍTgčd,!5ө9#8dIWPpx:'ԺFpf'%J e* xX+C5cZxs.q5KnCqDSƋ\MK"8_^F6FcQo~JrsOe޼V]٢'KR1vΣ-ˊי϶:s@4\yxu߼zxc4:u^L0H&CA$t[j{Hm׽*ݷۮy~Ť|oCjهUvM4"=Ւ>ב><^4gɿ}.Ko%>~ ^SV"sYoQ@PurETQAfӂ P[ q3]WUi/7oԱGn˙lK;Vj˓ow_ïR+mI>#j^[w/,x`s uGZ寸*^(f% w<Ap.o.z7WSp K{q!YiNr1 jbqj @:Dz#\ d FֈF>"u sx2f =katDZZ"ٯ,2ݦH$ W{tCnu4 $9cCQĹt_WkCVTd;<3#}:[N}/#YeFJ4ׇjS9LQQt%[rEEt{z\8BFYLq!2*#49Zx_QۏY{{gso+l-yda*>Ysqì@v u;*_k~-Z3폌T/ͧ/]om׻FfF9K UQB1YU{+WU'H'vg4Ҕ#WeOwо74̛on*| ^ma =Jq@*1 23۠>plzoaVdua 4fNn>nuCMkLVRVWT{(sy/wݡM v&r_mö="wgЬ`$*$ jQ.U0rk.ƁC(*Tj#ISPE@&@E]qV3RhrDP*SJ55pb*TUjJ Ʌ QWiӉU*VJ[ djD)4Nu]5p䙌ΉPGֳɧK4 !Ĝ)E\7{=q%a:Z(1~Giq_JYk6ƺE kVv.w}`i@/}7)6gMG5}%kr۠.'T N,MX tCS ͺJثJ'$~\=5 _ڴ x7UOoN?oUp׈Z ?B+\Yvyk8]S8/=,_cM[S1 fj}}|cij ن>7+X3 贾slyx;8smg75k~ms;HvdS.>[mc.{MLmz(v-`h_^mo:k KY\8}K~ 5+'hn^OSo>UۏqD?BNc@T189K#8RYgF9"$Se[0EOĬZ.(F)J~ԠƗ>r҃e7[E@`T19`֕$XWxce[-)qYL#ca8f]4w~"`orxYH}PR:^ t]^50WU w>7>,JD֥K^pF+}*jB i[8UEe 4PRFLr"&~W@YkQBOФ[ m [{OS"b FVd6YPltET\#+么*3Uq s{20 8U#tZp& Ƈ*EEm0ΫIg4wőўؙL_Bu6iiJFkYaf40 7l\hH* c<UYm4ss4?m4>z@+S,WJjy!Y QrXE_!pTfi؂z$ {`읒_NW`pP4 z `A$TFo&Yj6dut zV3s b"Hȯ>y'm q<%ɐ_׊cYaraIkDpS[6uuTb2Z^g3pT]JFy\>i<q\ty\ǘ~MY׋hɬW XjHp4ۏl5] 6 sG)?ѧUB_UP*r,z[ ¸dJTU- BY֒*ZkLG]!” 9BͭHLGcUdTecx,z5:a]:3d\c=Ʀ3qˋuOk'[MsXw:}e;|xI;ֹܶi_Tz]~oY+vY$ X% ki\y1\_O⟋^nkvUcYͪk*V YYp#%`7~_o>`źbqkjijs//}j=`F983H|57ѥ$s}FjrMߓN۟q՚-ķ0kWiK~eZ :C@y 0uzB Ihk^-e먩Ԧ0cj L8<2#/bꎅ6ѧwQɛ{Mx\_F R&\Y[52WY%"8_4vW1ڮNʳ "${5Uʣ:%G8JaػibinqHY(E=8)1F'ʗon\N_8\ߣXBNKi&2x.leOpjq.^^_[koa mF&{W^fWM$faV{ڷg]};ͫޣ\d)n{ˉ׻^>g9Fq__N)5yc_srBI ٮ^lNvAk k+mÊb;MĬdq֤bpZ&Mfkapi$aWI㵟KG@쪰謒+5\ EJh:Bk| זg[ҀKg6sZ"Dq22, 5AP=IWk#R(L_$hӨU+=@TvіW< Y9A xEō`#ic9Ch@k+du:4"Avdi&75} pL$4}+63*k,4"O,و@;$ Zc]Xre{OVt.oMǗ){4vVې8}_Bd k`n@Y=44qnHkxTW>ŹW$GJS[e˯~aԹކ[,~ߥE˝qvKq+R!Gx*]L3WYAF֠%j!؟H^U<q˸ ^DK*V2B(ew#ik!pƹW~O΍-IJH[I?u^IYAQĮSCʹk+uXAkYlj1M T,)?F2[*F?J\p&3h\iC3(*\@2Z|p')TILvⴹd!2M %\SkR֙L[{c}wzWodu߅  bvW_\& Xpsy:6= iRϠ0؈ښ ۸))CVV9-fjXGSौKۥ2tm좈NVZATo#>E.j[ .d5J41S&3Y|E4"k׳,,k:\ˊղ< z*<8|9vx72CjQҒ@N >_c9lL(ҿwĤԻI:.^a\Vf1hkp58rݹjJ,w]/3ɖfhzf20*]9.I+&Z x zHQSd~Z]$pJ!4fQ2LbS}#iOo'+J V֧-a0 +GO9~z}7?_Mi{M**^6CӌWMg_3js,uGL q Y%qsKE^VXv8K ap]8i jo<:o{i}g797XƇ`_+~]v.Y;7X$o]5 ITݸ^-$]V{/)r_7{|z8c2\]084, dy Ҵ6Q=17 F wLe%״qX9%k=AA\ kB}^"6Ӵpv(2LAxY)=iUv2Qo(r=gc]HU5- qUL4%"J@ |TĽ~;ѰGesP֓BAk;&1Aʾ~R;{gL}=ʬvYƽ65kFT\2Yaqm\@o Hގ0d +J#5|OAj5YKZIK+*XD5PTIp3t#xq=aepaNkR4 YA (>N*+B( 16 =Ks^֦FV^vnvd/W5;b3ZiUj\;FK<6A+rY9Iz1uq;l$0p^)qV˺*`~f//lm<v=mdb1q=>vý-:bkJWߙm|oGn~&G Cuu1uMw֔ =V`5A˵sfYC1f]й U>R92P]|4^_Y8.oаaLgwҝإ%~*VδwrW|KP@K3X?^TO%ӍÝ$5.q$I^4LkǞmrgsukӬU1W Hu#yC'|u i0ۚ |N q౴F h;UEKۥ[Uc]VFv%k ؒRYF^Yyhn)Rgڳ)J6ʍi?Kfε7v31$~yW96Kq{ kدVnA3֩L{V+1VZ=_o{m++pH{2$T(1N+vfi>S-MVZUPFHA(!EJ Q5Ԡo3psJ/ƣfQ?;>pmAػoŮOG2;lBP׊Qؾ?[v/\_bm!k+#M<,uW^;rƽUq\]gVl{V2x?C)n]&: "ioɣlw0H(D jfjVܓOu>7GC[incb4oR7ۺYxZ~Z ^>h$(A8YjS()+3T7j D}JṭgGEp5e}h -ֵ_2OYCZx6?:@njMj;^n8rVk`8 ~3\ fQf84 ۏks 57;IY~պkCN_On wl^-}k{'hXb(k*Tv)Qjzԟj!Ť^@KM 4(M}wm.O75Ʊ٭'f\szu[6:-&m^!VÊ7/6M&%fN^xyޜ6 nT)+nAtZzmqD-_)6[{\Y}K,:mWEOM.s`838F#*~Fm(iQTc:~匽5v$1ШA²GiOEZLp 9doWLc.2[|qSAbܘemXBZ>RKkQp-뚸k A)uKui@srïmbZvVİFc XASV[@8W *JLayi$bTrEjAh5mRo$9U$L+j_0MZp-3393㷊cՇXchPPujt0 wm᫸Q K㒔^ܼ4kijKv4 ;22@3̭HVjp\7'm#hhU7Ӹ4JdV1p๘cK"im[P?g (״wsU]Z/nQ&muPݘ.k̝l$)+귃ON*&S(~4i@ěߕdzϿ6:Iv}Ih9 GWտ4/ͷ%M1ٿolYRn`pb: 3Lc.if[1$`?JUeÁR+\rg,H)1Te2a-#*Uq8"e8wkMb ]3R6Y EI"*WQļFeJ͹csiZ¬t~TfG]ԎcSBV%"5kV7,ܺ\[˯?,NGM^Evjt3dݤd1P4ߺКԇ8p55˽\=58Q$ec, w6d-L5@pw6|W7ogGbL`QuxvS~r]o&ٙkn&.S^A9񽚷_,ͤ<(ax<^ma}aҽYfi΅2׫$Pr/\G;p«Yw,]oF:k NUXtKds|8s* ћAGRgNne7$F'R>+o_ϓo 6a",:221Jfڹ%_CFFt~jx{L٤nqcLpL^iNb3k+AŠV*UohS rϭ`no]q2dW]UQpj@AڢUDҨ*G@@A(%TB"PTAppU*5&L$.ups.}i{'/ceac 6j/ۧۯ:s}moFd:.{+w˨cket4wOYߕGXyo9y]7+5贈-Š9\]qU|M0qVp͙k3iyaȑŘoX^ \iSI^sjvr z|#U_y3r8 E)O5j#r"HmhN-{KӫGX2l]tWUlGMcn+hĄ\3Ig<mӹo)gV.C^Ա4xVZR=8ZV`R&;hÄ.2ꤖg0piܒ-ZHN@,] 8tmIsNh-1镴'>RFTs%$zK g/ ' p~׀\镘hqQ9Aإk- @ުmx'>76dd{C18ٯEg'^Osui=.IcZ-=8ߦ y. {vӋfKWk.{k=M+FFh%'~V)AtObehH#c k @HY\IQI,/3+R&B洊{3Is#@$saWqྷvgkg;jOѩs6W2ή.&_kݮ}çZh{1*sAجLcs<2JjW,7`ʘd'%R%fuV 1?:H OuT\jZ¥QpMUJg"Z3*lT$.H jFX *qjD,=szE$,<"7;vI]6yKtEJW_-]]Opk+˽%}-8M\ʖχ5|_Ϯo:1QLmƼ\}>~鼻._}FuYnFӟ5kߤzo._=q꺺EG/_sŖ;r5Ҵ#R4%PqF|E _,:MFC4V78#L ƆC9)-tmpAo&Y8%;5yOzq0(n^%oтarBN!'Q}I6[9EI+ZVĒ8ޝ+w@r0լ>Է5GAs7T55p8Ub*=q( ZrTYvA 9f%EGjF{{hF{\iZVGB 2VjEO8ALFыU| "}jձ,\ٺma%ɸLq2UUd TЀ >f;- 8G>hEA4s˅Sv4*IZ8LpҖֲ kQc^KV܎P0ikZщu,ǦբȬ[aQ5S1&eԴTMrr&= j#+pm^|=:K\k9Rֵ.8qkd֎9[+i˹/m209Ƃ$mXuθ4Hy[>K-Tppbޛb]ekl{5J3x:qٷo!K[2+7޺5lb4#=-'viM-Nk޳.ķobNjHT0˗:*?IrչS}b0t Z:5wA@m~ 8aqdån,jO #)AhHn u  thf5 4 bPq8zҒ^oe  j(M*Q22S,ЬM2G@Ԓ.^h\VS85ԍS?J^? |_3k$sىujڜj#6;[N1cp^ɴ<ͦ+`N{\ƍ:O.?+?cLSY)܉Yָتg ]J&G+ã 2䇁1+-) >LqƫVL)v pHMT0 4 QQ *jUPBH@Uq*)D  *QDeAK]+m̚2P } s}?ۥoWFCt KqMe[89ѻS ܫx'/}<{%a[[Q銑;(_]Otn//&iOvq/o+P/;Ct_ђH3m)ۂv2s yN9LkZҿԷ:ѽsvɌҴ<+_бkrk+V}*Zx`1i/;ˎ{:AҙL# m+V Hk`LF%(4e@_2r[תЛPz%XMjO&{F.VYC0kjBޓm|Ͻ^mqi14˹{?f~eWּޗM:yk7uRfBL=ujvA>?U]ih; b^ܳ'vsN-|;(§~ONY翿mƼ08$/zoY9'u~;Qi]Zmq)JM*rͼEca%Q\HƵU.UxӋMT:%bsXˤc,\0URIǽE\+]tL@hoz9QJ!]` eL"**CUeqQ(Qc8kʱ*,َYh $VozA.Ǜ+i`Du<7idBўϤ]ç鮸sOtֶGWOf 9>E=voӅMyW]'gVkMyΖf7Qܿ_bq̺y.iz [I>(=_'[5_|7]bGe 9Ʀf-kmMfR2;r4(g.;XS? XD_o҆m YkdReh44]LzkFP4\Rh=,,mtWk)hm#'qQk@'eXkx 4Ȏ*## 䇴inaͤ+r;H}8L,T}He'i'2fTP) ,"=MI{a7]7#0ZH2AqL ·$KyCi3YTB<ꭋP(Ȑڪkl#0(*UnFvZh5<paf1oޟtnFiV-@?g b]oԸSS]_ojJ׎X7o/˾Z:ΒALϩt q[l㳆> tǷ*93qI&ۯ]s$yq4厭[/GYt|p*X*x١m3Gb sF;tM aS+-;18cH?]co{)zErRFV]&\2g:\6.8q*+#c`]bUtZ.~˼ջ.05Zɮws?8ƠOf%^uVgI[G*ȴPOrRRlN iv)094,ݒ66-i+7l,1N#^}7[vwoՓŚjvߥjơzy9.Z#%NL=YMdގryW1ֽpd|b̽9i.5럵+pQŻZA:=릮[":S|bGe\^*VZd6lF4to SIwGUY^EbvH MAVuee*QJPSM& 0Wp$ *QE U k "QRDj9 8AbpEn[hm+My&6N7[B)*bqn|^iՖ~p\e>/Fiͧ]?x]__; Xcҷ}\pz2޶b]AL~eUW&{7Hp*61 +D Nk t>Ϥͭץ_ҘgqcϡZ҄i痮uMm.kK1f v(BM(M+Ny%d JrWh"Ёb90M• ,Mw0mnFƩ+zۅ !H5 -dIizTjVj \>3y٧3$ŃCPWv~^qP \k!3 ]^jpv#ҽ~3;8RMx|-lZo ^=~g}՛\tpi hq_ eLqX2`jR_әĨN|]aRed]&=FK`k4\Kak['şDdX;6m:ë I}Ohrדf; ^)r#<=Oa];)f%2Z 5|B1=g H-1 kEk[mC x& 4l^9$F;] # GO*23^¢NSJ`WYd  X h8j%oU`I%f晰H GxEܭ8%K4{hU^;⺽6+;Pj-fZX"絆RfxY~;'ORѹs|l.iAoǕvjok;}_g釥$(G7|oS}ltӏ[mǼݮ' I QYZfk94nW^hyb.8L=[cGuwٯtdf0^\3M2I263| ڥci^-FW67Ey1ՂZl{wxp`l9A"ᚫNgL6$w 1[kG+q"h뮒7 -Wj+ؓJ҈cL*( SwY֦):R@ZgwC%Cj=!rog(9}+ۖkI-WŔH&'F$`hR5$S޵,q) 7?JuVgVNF4VRiYhT2^LshedǗ} zh[Әo̜wi{}=!@hEzF07:ǁiؾ=?{/lW,!޳ڷGJ;[ںKvl[۱\G>g^&{yvyvaX[RU+\19.{,k [N!uQ3ZcdnDAئٙ=J*=[xZ{gNY\q9Vza떿Di'M0I* *U @QQD 3G3u&|瑀_"*4E *58fU|c |AYմpbsqYȢ(QTBrB , PD\ TA IUޢchxJz/ǟ<{?kUH~WN[˽=iAmM9ߕ9U$t׭}bo"]\ 6;:p\0i4n`1s ,Ñ$0rvt:ѡl\UˬZxyMh8*I[#Zڽ`\6.ӽ]\M$w88{afձeHqѓv%nC0Ʃj,mQ,iZP;94V\h2:TW˞2>,XK\N'$f!nTaykk\VG6)T+Z=F(Y8JK@Á4äq7̸}Q?~wkyuv }^F0L-+^kxVVэ$7IS s vx}F~K5(tb%:4%n#㕭4XT)0.n%tz^*E3S)"}9+q5\(YE3L7W lYLp=~\5/¼/5np {׷ΚM;{~/G}FTJxPVHEE8/_y o9rkqN\5jo.^??y&1ȑn|2Zy&;Ik Aiiۦv ._I\t&Vfr=75 M2=܅O+鮺|:l& !}H ՞oIt^}Y6v=hxl4p9É+_O]s_ɪZxsqjʗ\({VV1uR8}8)#WnHFշ)3Ս(`,WMXrXtTiE2׈Z"^pL*VCDJJOB4{%h+v;G#jtrޘn9"8I}eBkH}⣬T YkB0,E|Jw^ȮepYڔeJ\XVjR<8+ 9%?HZmи8\qk=6y^gm^aARSߑmmZ .|8ݮ$ $jqrʒ<6W:`;a19`x>ռ =pu-tK0h߼[ @@sNJiZo nfC'PS_ͥYs൴s,P E+_iU0+a=]LVVRYͩhQ԰[Q:}+::}nHh*1p炭Em0055RkQ :+a agVjf.p+LYn?h@Z;͔XQaCVl#.+Z랑і;g<8fx]y\gf tj ^542E+˯̓3GkHYbkx7묵ÓqVE)5i>w/ԵצnO&d`yדGn>n]wX؍1 `YE tE}U+(7-~n[m 1eVF[}K:x -e1я~#f ^t-p+67+]uL%ak]6y9_᯽m]Dqh ?^L/:>Zgy7AsaN =' cWe.K\hEI^-Ѹ9(0W{ ]WI` 9rLjɷ8H:Us1EW {znl-md essfk_eY\EXA4I ٝɴ۳~l=dvY4F.] pԵŃ{:[RASjtà #/BFyq*`Eish 075ǧG 3 ,x"(vV\HdE.Cj]6^&il٫[:銸2XYms/0]zF^o&qy羗KޛI{9 }\h\\V(8 1iaW6,KӠC$AskcP5UZϸ\LངaBh+qcJzKl쉐ݹr@-5'|ߕy+Fxpw"t܈jmn/HYR0vb]{!!*M|@i˟F ሢӆڰ[ºIU5qf ;G1"jd`V4ƿ&W-b` ׄaDfB\ _zUgŘAGCZujL旟Cg(v{ {uKW a_SLr JpD$Tm ŕhsg} -^ yz4.޺Ӽteθ sY9 esX\@SwV-$xs Vݶ0kSQ\6q$H%Đ \kL1Os2]{*m2f .jk[ifh-5GVkr7#kHC2=7Q{1X{ͧj W ]Ҭ+ν8դn/X%H^R.:Hg޳k5θ.<˕ aCũ;\H<Ō%&8a4ݝaʠ45&4bW-Z8ԃ\-XQg16"F 8q]8&3MfkwK"m3+_IӽoqjuƩ eV~Ɍ,mUfkxi^K9}~/<gV{ĐA%Mo[_QݙʺPh`}oOx-+*9ŪvkKVjy e$ֹ.n$@OM[ZpQuiא,s]]I>9 %!81<љݧk[עk]ۺ8 u۬ ~&.ۇ&H@1<+7׸ڱ%ԠإՄm.h3ŷ63|L2,Ԛ=!{4o=o%k;I-|oM#J+2N$roІ[w QkZf2ԭ-Tp\lhΫ^)O{*>jCҝ1nLwuYc nR?zݙg d8==Lo}_sۤt,cl[R&y<4g[ \))Uq-x?Ǘûzײp8FT|=ߍ筒L$)5ҿ_=I<ݯOG|*هG 8PcW?S 8O־nK3Ur"8is}z|~/}.6u D@|彊zU'eprd- 89zI Szi5{[>[OulĢ09e-ŏW_fo'isFZ y8j?]%0y6>bfKӏ kZ9|>q7?-tq(ݗ6h[tlؗ6G¦Fzo}3~3_y&+YovؤHsE^Ct~Po=tKu}/:ka@0*O\pzuf'l[‚ ֞yaml8#&s6jh1H{TGb"id}j5ceUiŞ+vlj:I>7\Io:^P4sK[57+u^]澇 O<|[D#sO;X^gv{浲5aJ.i=1.CUMZ+Unq}e/(I@<}$\.,˴ḿѸ˜]+1X&RECRщ+VwhԮ?jnkːE24 zZ$)bZ [f.]F4zOC=x.k^tV9ZMd=Cxo{~-v:+e w6$a6pJksk(j8WCI_wwm?+_߸\H_G.>٪cnX]F(K y4ϬokjA^qN_Ż[m!8~'گlkSAΙ.sLo<֖{{j71׎mckiJgAiqڻwt-\i\,nG=#עΎ7K2wծuvP;)YQ^XR FMk>2mϗN׍ 8i_ǣ8q6;+u$1iyO-5;~,y>OK]?o3x,4kKZW=}o_w>I|?ѷFZ {^[٩lQ[#Jy+kz$P=8hv6١4•=ˤ^cʻml{&[D5WV]7[6umv&^/p]&iMOyxoJOEDץaa&79uͦ&> '", k_n*fe|3eڬ-ݮ#o+EHvIَ|ܮedW.ZrO/Wc=I7躎:qU,o2wM/#F `s ѧV& .wj]uKƎc{|lZbʓ$qƜ9J\wK{Ԗ:Z̭\#$1ӚԎvY5q4"i f#5rS+7h Sk9r᫺^9A+O-H{~V8#{;;+*xvϗn$wW/lF Fp9VRCf0‚p70\$%}E;k;ZU&1r']BF}F+FWF: kq]9Tf7D9@eYZ;UEF"bw=W:{ۻ' j+B~ͺ./=>6N%"VH8k?L^շn]LquF]8fqGk>Ks!|rx~v;WQ$w3}f]~rIO-\(@?jx?W.{hL#}CY ߯=:}-8jm?uzvS/: tz1\c@F*Tw.JVqvj,YbH#2v$JJ(4 @WA * C8bʨEz H [ؿBeQRUDQ@ (PAQD j@VeE[҂*W%Q`A\&QJ Tڈ0t!@ sU@CEJBSƼW [qV5]o6&gi]dL,m4CV޽^q ]AZPƒ>o BX%AZt..&S^V10K`8څce 22wg\JuPGLAZdlLyYUMr]:8#:B'k*c>77Oޭo]r{Ui+."&2j:7.- m,8TG}W>8[mqit|܅}ds=F hL%d𼽭BbѰ5JN+^,5ԩա-~\jLZ85cUcv+COM|8)TCA; 0ǵ'N#/}~:5v9?7IT{y{<=6w{Zt~AlFJDl?\:Nw Ʌ__^^^=~V>9SVIvYS4/|)Fyq9𸆊Už]>zuNyٟ^|[@OEk<~Yma epyrk\TNCTbݧ6ha;r{]S~"I_f4Qj*DI3gRFS"EIi)ʥfTYceK$iIӂe>VUejiuh)$ #]5W:"*xhV%\aR(PH@E*Z+QVت$;\IdMK-a5"ă\0pHTZVXĢ$DW"dïgẜ|58w_-.1,ZhkFU~Rnok-Q4V`o.|:cWMy׵[-K(ls6&QЬγmŋg-ȴkiMg.1nOj՚ *ؼX|i4$깿#{ &-chטw嵃@ }Eäm'~;{zDrz~=zk/|{v`9?t8{; FE@'[t|!s/p::O2Iy} X58~cmn/MVlx:U]}?-o_X{Hӈ+o7{-k2 Op='ߺ>禆w\2>_#O[Wota\4~5aCPCahs]B&LNڴՅ.$p{S"ۓa.${uף;2KXk5tx#OYLVFml[^ r8ݺ%\%ّ0ףT~(&Et,[]y=Gmg7%4;O/WMg ѻ"xyԾmz.qhtRM:b&"W859S #ԁZRz^iügXopL(A_M/ǵ^̻!ݙZmsLp_e~sοݮ\ >+,kpc#ENrK=>^OŽ0|Ka =:Rȑ?0T:_z?Ӥn>)H|,-|n3BYv}?ۯ|v:z9; u*0}O85;~zցIF2ߔtbKKJ,[g6R(jֺsߖg`bk1W{0:6ׂ͙t7fpk*E V@OЂFJxQ9 ,(QH UTMPTS+@TYU4ɉ_yXY)\J *ER-&PBj")T\0j  QXZZq@q H*5 hIQQT4PWRep5U QU:s}CYx9f=4P;pt5iݥZ컫 kXC\)jmN̥vuz!m WxľOhK5К:B Z()Le\9ZwZtk.x۱>'D1GBk+:'<6 cZinUvbIv<bu jRgZͦ}[2mVt;scikӮw.fpsj+ %cmkrW۵8uZ<kw/gv>Hf e q\n[h hW\$t5Y)4c@xeLPBApQRkn)ms&Dr>5@#D­hpDCP1׌dC` OpmYgfFYoEڱ^Ʊ5?R:3=-~O ؛]c>?˗lˮG+k]8继wkޥ ;/'~=R18` [O(Pg%j4C R;VCHZ("&$ںwoubsm ʅ}?It/m-UW}n6ϿZZݲ7;\yS%vсjr7>MFK5F=Yy:tLI:QV[Q'W!(YšTXHu2U0S&TEUj*Z\]0QVTM@T@8E\; -3+ep!"ZEU+%@i78C&L'UD¥ةFk!p ҳĤc$jjS d,ya^FOOy=f|[q_Haeô1_zk rƠvtףݺW d9rK)/^8婕:H=ZcO0 +֭uIiq0`>?.^5Ja۬}ۚ[Zzv׫Ͷ'wϷ5Y0` ¥K{~q}7kydvgо_b`.֗4TfwQ='c\M*߻ozs^=y{o/˭1l "c>ezM4gg W5\퍚D+;762p2qc\67ݾ.幸pb@Vw!/*^/\/#tR}7rf;,Ϳ8^Yxi+[yx˳/]01Mލ$ARmo&1X릵:@( «nҦiJ.ku^oֻnsmAipk:O+95^?~(,]Ukg&otFyjf7[ S76nirbӏquwvaؚ׈Zq8@.~klKCj-+lʟcN-2c$85eN#%~{>c6#M;B_Q߽n7]Tm4cIoUǯ[g=MXpT)_3gu MhkK]hhc0Xų$B *c}՟K0޲!h6h9Q̳޺y"kXc`1h>7sأc244^?u}/Ev฽xg |OMo$1 \B_zǟ)-: VWZ<]k0Ҭ<ip_yٯ_k]m Ot[IO73e|U\;oQlq}K`RN1?ʖ~ytk8j VGb85AqUyr6=5.)yGSuۇ=-w"NIiko/)ku!`OֹK]^K)# dW6@uhĞxۿ4mҸ2)׼Օ?]C 6mš㖫Ͼ}[rnv!Ҥ}kp4DPdƜ^e8fw_`{xoec8.Xl&t-J*?5M6w$ۚד29~cN{8Mi?VbK#ؚ$4h5kXxuxK^mxsZZkWSNʤ.oCq#bQōH,ygmuXɽQ4{뭅0W孯fM`9kOU>U1ݗ[#_C)¡ЏU+6؞9y$ù`C:>޻F6wbnl{#r:uOY]̷壘%SZ5kvH潭pZeu|4J TVTpM+`=f]ڌ-{5B^fWOV͈$cW¦ `1ϡIZ@>֠]#]ֶc#IVV T^ nVL @Xݑ K|4W+6: I~5m9I/liҕ&*e&[Ƈ:U_;4?3*]SM{JԑgN_.9<и󓌍|djh1B\!1;\m%ss5W+ |-.a4pZ} nv$9ĸU.lYOk48E2ٕGKVӹRx-l+9.L{p+&Zo$b,{jVBb5pbe^o̗7&yz1_w׎Y=&\/hrV3c8cڀr1X֡J6dR=}+z-v]mצ1D~y$F{k5H>Ŵ+&rGR+س X;幮V{'m\M#Z|tk-hW: %Rj E1࢕Պ/eUQP*E]+U (iD'Q G (FJگм!kڊUE5&L& )5&W "jJ ((QSUB (aa!bͧbT>N-$Tbu]V6$Њ1QSTMP( Q*Z%d5tl.z/LA^+}=>b\u{-.cs$4WCK[cm{oq ]='&E`s/8[hKWcO+ri:k&V+s.qjP{ThySZCƎaB@ggeY[;mx݃TnGCchi4^{:oRo6б+KGSL_{M5|kbзY."*Mp6+t}kfZѧH3j'gog12O3ilR6"ESL)[lNqⲱ#ZLT* 0\B*8,m Mp쪙cŅpk™-eJ,ej- 3Uɟk[> V`ȌXǣ^?øC=5Ɯ]طN>({w n>;gkyso3kw$-8MYp<;_*Iy+`h*@]L.Ͳ\MĆJq眺k[kq\(p/CTeV di+k6?],[c*Pتw䟟ɗ1[e c#Np֭rzK9,湝g|0 /_M/cpۛB$.毻6ۋvN9 `qMp+׿o=/oGӭw۶{j6Rp U^+|of.@'-K^}bvŭ-$>M@}=ۯ\y1(78"jIZW:MH]7F&2,K|+mO=kXVfjyҾ.ݞ:fnm[@XF`ckp^cm;H Ŝu׎;˸d p!ՠ=:{N_>3wgmCs_Jkz_:ٚIn lb).,/=q|^O4<"Gu d R |2{/ol[ &?ķXoJ]= +cr9C:*\[\ʲyZj{ؒHobu>*MTq}9A.l_gV L / 4cK3>N.ZB a4JԷckŚK\+Ɗ5M08Z`kL혚3Z駵] ^wYz7nHmh^\}YҳĮ]EB?O^ir+޷sU۫&mK#CYM3,WR ; Y=rF#^]=PF$YK~❙>_mR8[v%G87O|=Q&#'O,. >"Ac-a 4iΫr,Dz& sMHHsX*NzpYpˏUkSN*E-EZ 4YfȘoHN kRÛpEȅH)"2A;| t=U:5!2+cKH鍲 'vnuHթ!:VYF-ǏL.[.KA {oz shсIuzɗk1XkPxߣ2\G,n$&FxS!K)8=GW+;;Wgd6rLj;mՓu;Y1nkmW̽m].S]Oc ݎ3}3qn&kgki)qz1Z@Y[`=֯&'hې|evĒ=-}|xxw8ۭѐ3H4K5.HݚGݗtnys4ڼ ߓw4>^.6T5ƸW'_뇅Y_I+&=y'UJrheѧIkM}-ԯ/ӏ5w^֗֊ElͶ]B$=$19ɭ ngOu;i6l,]F]s(^ O7'/sLm};JTA!Ukx'IYb6ͻ$"\^p"m=U'^gw->R I "u=ev [p{/Gk|~skS5t\M^z ?%skq  Ñz{r PWWbq1ֽ@(?Radz+[%VK2^t[2(q?  M/;ׯ^kdg#~K].+w7ިcKM.f+=IͶ.64H Ck^sβi@\ HX27:W> maz].խV-uS; .U4;J)H&Og,\5-MtsG0?ZF6ٺVZEϽOr >LbaƊNYheGLCxckX/=.3CejE1en/0ZS+=w;tQk΄WSym5rjm|w=rKwӻS__pj SH$IϾnM0m}-iy$@ǁ끫Tn̳Z6VYKXH;C6aMf^țSYm~{{ZZ+\z^;YX^tw*[Ey% n ƔhL%kNZ%tLݚpl vr`z#k/DsZ\L`rxd}.hNرlj7:RIpNj+C}s :pWˢa / v#R+9\9>XK%eI>7Ԧ0y tq;L p5l|L]1+n{^1Z}-w|-ƐYz}]~|*][חqi+KdCmuR3N~K0|[\t88pjuq45+wгF@4p.o#.om5#s3nfqA]esڼM<52=Vݜ>{ʫ9Îֱ4!ēn\cc-:qvMF֊W|/=oxoYF`:=>)y~W{.2tp}V̒D:Q+NJmyo:-11=_~W[yI+8nv+}|zAyM>} Hijmu+f^?wۍ6J_k0@2PC-Yj",>)n=6BoWb{OgX=Cߛ`+Cq+ n#fQਖ਼ЦZni rTdSҲGZBrET3QR]\ɅJ ZO\T8(x**Ex P2 *5A8T(3Dǁ /24RV!EN M{J1UJ (TjS!ZIUW(!EB @@UaP*[(,eKbs+Uһ;^mjѢu׏~<}gvel iumvyn{y0#x.}lZg܃. )LzO;.QU=]XA$yMyF>wTk )6w1µ.'L9[%n9jRjYv_-m>#unD3TgGcݧt^oxkcSPGsxM;9c[H>sp|szo 5t/ o/FTϥyv|z5Zמ],t=Jt\{,n[Kp4-mfl(Z7 +Cjkn;>[M}~e۾>j'^n_ƾzq]}h7{v Ǖ˹4{KtOŷOvWV\t{/nͦ+[GGTMqѮ{<y6vkMi69gI' *N׷Mdy~o[:>J$|<ʪ #oA2u44҉li.ž||tf7rXx'P˙cgƽM792L,Ru:oz>2tuRgl5kήA&g:7tv?2ZIӉruO>;iL:w|;v\J#l\rHX5˗mq2'^O֭.zY$n&Sߍ<6\jA$amwn]72vE2] n$9x.ӏk=ݲ{ek"5= ^tWaj }o)Fa!7PEGmTS`)´>R-w؞LjMu~ ZU;Xywj 0 w]7Icm z;"^hF&Of==O,XxnMݕ]xٶ??ai|;#tZQ}rk>'[cvkK&"P uܶ͟v[NqMF|[k?^rcv}?gSa;\smK_R>ٿݯUcpvs;Z>^OU:˷owWZI!=T@5RּLqڻT"P/NX嶾x|kNx\ҩ%*0 Llqp' N坮Z\6_g-V.6]qe@ ih4jlto< wsO6b|XDm?V_YS+f^Wvm뇴Z^'j _mncsEjL}M?/Qr*rZ喁k@bZ7V 9K'c o bo\뎯c{o=L:Վ}Lʽ|MVmDр./ʸJ6)&n_egm%{vMM;La >wqm}Ԥ:F5rkOQ},<3E[uM*;Ʊ˦dbEDA+N$5RE=o+o'&[qo4Otns iWҵף2mBK:4+J?k7zXFcdv8껁ZXdQ@9FZkqnv7V HOgUlv[ډK@@)4{ Ŧx"me;* s3 Hףi}]y^FPe2 c4 ҵHUdԡ~ťldt ޠrYC#.PÚAt)X `]+#ւ0Wtw+.)Hv ~QP]YN`7EUAߧOYSk770;Piw=~i3g|3/uJZ*%RdPMUDZ (U3AeY*j8jP AQJ@@@A5A=|;\*Tjz/5ѓַKpCZ}Z{>K5vߍ7m̴ F'^>&ƺW08%[qd}d%_ˋ궭afWIema{[ԗwW\5/^Zh~N /ۺkoz+/:z2J{ c]~F#1k hziM)8sa5~Z]{6_kpAPSEKQyF̐ц {ox,nv{dEfǾh]^p9ᜌWomgz+fg~]_|,4Q5R*A `Bb/^xT]o;[si," =WƼkqi<sHwi{Vp.8ZVwcee8yQZߚ.ARaENjis[g|K^PBmbmw]Tcch.` /v{l|9Lix-%,> /Tcxr[l{9csH'좞N{xc~2*kr&؝HG-rs$SXr)4؉GQ⺸WPiZ{%q>ݸs&'ǟ,ߖ_d{߬W$`cUF5#U[Bg\Jm5ݾ<\ۍ{41Oy_ή3qf}9ǀ ν"-̍W[q3FT)k]e[Ix}O\+<~^~`4?R.-}_ ;$\p.޿]/z[,Ap\9\NkXS 2uZkJl]{[Ef. $R3‹6̟{}v ?7\gݞ_SEWt,8/=Y#b"rA!2afBY˩2x ԙ0Ha Zfd٪2QPJYTB QUQ Q(v(MxQg-aR2 )**(@A,!PJ* -2o n{ZCkCP<8N_O]}^_ ;=`G{q q>/gQKz-ZseIsڽmnc-ꜹøŮf#>õ{S ޶ۍڐ=M:-NwvX8>? k\qZ3uFH˘\P >K\,k*܏x{mܣ$;{Fv6{5vʂiku۪pyi{jCj**Hao[U#V5X'PWYcF[8pi=r_DX qofi8o0J *J集MB#ZZHj#b3ôe \j*9jWdV#I4X#,}Q c2*2}4VCPN1BU P;pEfm#E;2n;-bshkpz-n11wŏY'0QJׇYۇ]vo\׭&A*T aA:&%EBTPB 1y `%eE}w}qGpkxW~'%6o kI (qb{8:=? 'P'(W\z07p=mnMX4 }Fif^ֺ,O-~HX#rYyVjF'7~\7p`4.ř3ݻ)f# \ݰlMkYR,.x ;kӨ8Ǐk^mg}ÉJ]l5嵄m (O˿,m6Esnu98ܿ_Lr|˷|Syeӷ~y @xaFV{Չ&W\(t8sۏ]%urFFfi52 iP{jotv--sm •] wbss:'ss-ԎwW9ƤWYq/|i$o/NiM_hvvW:GJ==rY:Y qbk)W͑q2!GYՊWiswEZWxwk^[];Lo5Ww.xwy"̼)Gb2]#b `~mq6&][Plx&Nԝ;m ] pkN.ͼUV[ռW kµ9}Jx\ܴ$4g_Iږh̜(i*֖Qw` xu&jѴ]m"ʙax>|Գ$kb; 15OұN-$2uCӀ dzHWśZqLJD&S}+^S Cj>7DAk34_р\c[vmr[85-'QlG mis6|SR֌7I[\+o;inFWy eB\<] My{xizwRoǚVjWm7^YC ȦZ{(cwa2^:@1{˶Ae.$dQZk?W/Kr+h$Hgz.2=qO%e.ei/MN?kV-n6r.oZg!f K1ڵ'/#~15\W.ÁW y\ ><Rb%H\ϡLY+F&Cإcj{:yjM;R]L:,6 \L(TT4rU]_BX8@SL r[됂jJD"@A!b]L,S, uqW?oBLS_i'秋n}bkn6-mVHt:emL=nKsbӠIw.ys&lӼj\*{ze IMY֕ث-3869@U.Jכɒ14jVl疶۫i o5F|agkM5 Y6AsbK|fܥt$ɭmk쪖k]ZW:#h-Hݟc$:_P,4nKua.69mI*+Sj_ )#ԮIJL9o5Tj%NldԥF1=VZq1q v Z VUQPpZbdgǂADf1=J޺ݮ'ǘx^Hsyr} ZTQ HmxmCED*=_|?fӳc{8}L៚:_t>\m |X1?0+W+-z4ݙxZc\9Ϋq&cj;2Y= ~X9y8yxum7so$ 4:ZJpyuu\smm{|VqxphW>MݯY2C)xc`#92W&vzӶ=P٢)RӒu5 cи MnZ\V]/R;!ZLpTor^:YYGMN-].ί$_]Ho-$I]ӹak\wlz3ui[N@xV;+hI jlc/;y\nMh<_vJuYܽI5toJLnԃ9ԝ1[m% $ SN[ t@ē씲5.#bLڝOqgخ-zoǕÁJęki'IYi$-mъm' jZF޲.+ˋ ?R2ܶuHrRuK\d'\fvC:zpR꒲]l2=zj zΧ)m|9ҒHhGfݶ5%/ :sWnG9iekuoZyV&ހ:GUȲG7ymAd )ݝ?68.:wr_/lg;'OкMsKMО@|BnjkgWMގ>:%o)8JRfj`5&}yo /nzEE,nZbE(4"eF;WP4TPOY18_UfipfH+Ej"IuUKT:'6GRk^t҂vj-c&p:5jq[aʒX]%ZF$N:n=x7Okw%"ˮ lgUJy* Ӹ$qڰu$Б'V$Ulp-sq j[x*0b kَE!g%Ea1B); EԒ15+G8v ƱΣxW*ۊBF-^\sa'VĻ4NW)խ(p+^L`6hνLjEjqͩX^A^I&~'bV{Voۥy .'zm{ϋV&jݣ dmb6iq' \\u.[y]նpx۳.} +Sw;:qktޥWZmՖrKCkD=vq9oǎ{FFQ[}++Gp h@ <]&wCX66H9kz+~+Z Z-*3+'nc+WKيܽz7,.uJa&>2eIjV",9;$ֻmkPֺ[+Įz0S-LEYmk%ًw?pFgG '5vcӦ|&fkn(du7KR >^u@~`va{xcU2[ECecix ۮnհe:v zt3ghٞt[LJAn=<^{?WɽX"eIt;uԀrD켺OFRM s6 =G6Zu_{=YWv뉟b6Xa%wnUvg~dɫumNmZ(@¹&,kR^Op$j}uy\=Kb(1s }eO0I 048a6ק'6lONt{^gxԒѰ7Do#կV[tqi/D-oi _>rM .kh496\Z糜&tD`K+tcZtMɭ<&V[K?k ]j4l$9>!o'Z>M Q#K;\U vQ왒skW=-2#K+:kNx,R5fyB+Zp*_[h8*MuWK*#5Jγ+>V]YaOq4̔LkydFtbxmM,f9ܲp3#qnmnAjҋy-u$AR}'Ks?;k:`e:k.+ƋzR%gf/8p:|MyW>_W^QvcP u̺a* Zks{Z2[M9SKA7Y'~llr͆PKȞޞKv#\JoPJ UDT(%!F @TT ʡUPQU%E*T됀PAEB (p?*ۧs[A*[U>委+ö./mN{[[n62َdKig6[q-ŏ̲wwc˩kr:SpNN6=ov}}^o VXCV凉rR}M#riԨ+ŵjڿ_Pkf%տ7!-l$$юNlz=pp18pXj^>-D5Zgضɶ؏I!yiYʳ RHՎ-5Iћ'l5TjHݜStvl{Zmgs.fl{tQn}Ѫi__ yo|Qi&WymSnn!5ėكN^^o^>;xW)t Lx SesB'1V"Fm'wKA1-v7̽ɪCWyW_/VjƘU.ؑmsRjMrmиmtF: wvvj6/aq8p>rh41뜯=elǗ֚&84 ֦]m$r 7 ,mtĞ Z㶖[8,5 + OM`]uc}h\1]pr_tC4؆S =l5(㜍p.?amYq VJN[oGc>.{['ݭ#݊g}y5MO>,m\6V6os?_'{ɶv::0bi%ZY}๺qJ:ח uNK/f+p f߱uͭ{7 .a{}kեqv{^@wedɤnMw{/q}46Z(}g9 f.hn}.48 ܷ;5d\O| >%;5.^+Xd<ۘpϹcߤxv[=~}Vγk%SӹHR['VG\c\vv90YIpܵ&@[Rj'1fkueIԶHrBt.٭buO5~.-1mv.5kyIrw[-4 y:\n9f%4QWL9)ܶ l$qHQ.1{b5O,q"s|XxhKhaf0ֻOyԃ{YC\DqT}Ur}{l,wȅZ5#!ZѪZwSw GFcy ;O.,=TϐnXV9 kZ0Xpq#QiSVY6-dz_@Hƣ֜y4VW5J8LMiL`s'UJBuϵ [z fd\0uxuj;V|r[ {9OV&;^$Zn}RYC5:f4{?=nѡZn>|hG#~6nHw1ksk.u׫ڛi^f7#/yr`,ct 2RuaϾc jӉcbjMZ^諞MD77JNk*nW`K@d8 RؤyW1;ڬeCkQBԍp[Wp$ʾ޼IIg=Jìb{pXQRTwb~ZQ'AEA *A%Q %6*ImUQSU@ U֨A!EB됀PB FC\ إUUFh[lg?EIF88+I_wiCOosU>/?LzOoYa?ٯV8=O毟~W ::ጆ r_645ukn@e# vzG2akJiJ|CEDit#/o;1vM5oJX7Vti7Qvݮ];"c#*fW\2en~-KZjc]ΙU8>stF+vfn:=0HHytx[cwn]4 r@}_Ļu[_]3+&l|#dq'H;wO7x<8wi|?GaX@@V}^>^uPE.c6mvSv?JwR{5[gh .kK-PmHS3$y/Z^14fq]c\YFHʸOttz6`bq\.cks@b._b4{Nj"sֵMj2h*N8n^KȧqVI`qÊiL፲>8x rp2*OefۍӠk ux ktǷSA*:<{$[.6qõglkRS} zoNgRr*ش<,m k\{MU[XӦ7Q]u^oqCq:Y0sr殜w\o[e-\=д4k$sқjǵ#;~y1h%d;Kf2;Yf˒O7Q}>w/ۯú|Ks|i3̛q\85ƻm}_OѽőZ p%}Bmߩ5& tl`4Pm0]1 ZEBNlakYۖJ1Â.^{՛h-$vs?^5jl~E]+ͼ`nz ֶm{\79~龧χ43>1-uF/_tB4R^]+|>_cyNlȱft=>ix2۶y5 n.r4ne40:]W sVIY; ]((dHz3H^o{Ĺ]ZSݧ6g^KdsX2tHcuEM2ֻ8WVr^DߘT.x#>u{OX]CsԂցè6s[.[rZWVSKVr5.;_cqVilVp N\tW&Wl##YeJi4lJ|>l0_JZ1*R"t[t_l5i̩ZwP:^Iv 9 JX\!(ԡ4_G}Gݦxq7wfׯqxk(rم ZF͸KUA UPPH*J됀PB 26B2[KK~)wp,%=GG=ׇrmi.6wpy۽vJN9WĿ3ö~vגc>]DZ?doI84_ޢso}\ ^Fc,} CrK}C\'=Mo'{~y؛\jFXf9m|.lcH$Qz%Ѯҽrѡ8FicF#뵥&qt._k-:2kq.Rc˻kx. {yWիaIy 9^Z޲EVi 3=R9x6][`(+M*qNY/|S=|Vi.^dԜJyYH@@@@@A ФMF6R0žq]w̞s:tnX'V8Pk{Ǵ䝵v>fǘ݃ Bdu«Va*6 PS+=qk;.ueKAAsi{,^ q$y{O嵮=BFx])ZWtj?S7Y7;z~)ɶoëವڬxk44T2|[wGY۠Ї+z%8S̻okkqI|mrovP8iұWXͼB&Ik0pu!ry96nUJ\<}n+Ode_Ws!e%UZ6ihu}RRۆ!niN&[VIЮ{c{+4^i0kJRڗ;3]6l!Y@KRfɪ5\oBϵӵcņ At&%j\"֜pu.;^GR(+:~^q.Uͦ C Qy^n]1rٺhs=0m7ph'<'DRڍLv};s8kydßA[O3|m[/iz4~GԒ`]%؍'K _O-g>6^cϒyN)~ yGK<';_zo6]Cbewqky29}ףv 6SLkJ%sl﯏XAZ.^yoU?g}~{Lvy8y5-2 :s4͌sN}]mZ4/Ys~ {6}Ų+[VZt¾d7H-bq4F9=CW~>,׻~gڼl3LZD핚^|.fzo)97mye[(hiq4${KىjC-2AJ>h]z.;'Gd ,g.߻:G : fFQM4IMp\|%t:y2>+sVn6?vkG47?R{,Z ۬S45h?+fklv^;t,ﮘɹIIu\j ?Mz5cL2]$\/^;$Ea/xx4%qQ]叚q6yV-7^=MͰöқnktH%9[ۥo*|g%k?L_ul5ŮpG@9cviMzKن+눚ǹKcs#MNs|\cɿC7 'ui1Nsz_2NMNJĻpl]NV=kQPiìZg-E=R湮f:^mk 5Ï7&^mk/?]|S>\겴N憝Npsbm퐇8^ **xoy,Ln,Zc-qo 0)أ,2 v\Cc|fRGY5$ F\%M\W*F7_?]As+R&ZAUN5[Fh'U X7BV2j^mg>/~M<6h[m,m8+dpYNk}QA-SjUD P@@@@@A됀 @ ~VA AsO[k˯/移S[bmqnGݑ=~sywqycza{~M10ͩyW*&9)y1PS%'QmDAd>wޝɅu5#Q8GGyxwtձ<'i,;o[4hkGkovm3'I:D k^tRilc\W #bё;DFg\.3IiU:osؽ=g^npdۀΘpRI@\s!qڵv<#cnG˯G \I׻qt\ p%uul`qq[ӫ;V_.BW{-[}Tv\K6Tca"V./ֻ\W:钴,ucsoIBӐ ;{Vv{jS"* ѮE;qFrm8&tƺNޯCZ#KK+ɵհGEko݉W[ dW3Ǜ[~6`_ǒHrdk{$tZ(TmYU,eS8Z a+;mǚXr 2҇0;<6Hׇ .0H.2tn\}n.atde%e壄WQzu0bis8L7ש ͵48>.]t|t#٥w寝G~9 vH}[}~?c|aޮ6KwCIxp=wy4W]rofm*ɲ6_뷙~SuW)ړxhs%"|]m[0:I8R-|Wm[\ީk bj]]nbX @5 vT.{LCtGN>ĀW..k [!$W2S}&ݞQ+k\ף[<Mk;>L!kǭU}4߿k/`򅧛e"ktQ.k ;W_{k|n|{:|2߼Q/S{j߯s\Ko3׏%w1odf٭m ̿ۤd=W>Ö]:mż߮gTrm;cՎU̼r;7k*Zk ks<5Pٍ<͉6;i_mָ.48%`fևs Rlո` n?, 2`s%j^۱*[+8r7lbt#C5V.oKl/GIs NVWCyR׆1ҹYغY<(HIkp9уT-B]Kۤj1%josp$8߰u;F6.ɱOFf85@@rtltoZJ1h-ntj'VgKRu@2*cpKd V;6Y*Ja}w Lu q٩QX>,gg 50ZFh^KjQ9:&qWEn ᥮$`8vTZh9E% Vb p]CZWuB:׋njxqIG=}9UTUEB #xyhu8wY3yy.q`2S_,3E]'WOIuMv>|'y<:+YKaZiܾǵ.lv}j}-;\*&-|~+]-_޶[=m~f9] Wg6csVHJR5ǵҿeԺ4D n6bikr]\e7NgէI\1-7IiydՏr^IxҀ8WW޿˖Il#sGBcn]Svffnq<XihG] k[땮-UɶfeGFTWi%F7"8: a*$rA6mn$ֵܺNȏW@ڦv#~.{2kIW6׶{7u{ˋ[ 5%W]YM9rz=fz[}ӎ]ߥ|-ٶ4>s9o.[u}-\}? *L6RZO'+ 5|]\鯺ֻ^+}~suelQEeig}K2[m7RP ?R4ŭK3;̵(+G79d#FHMdb,&WL1KּN\n..1 tq(0EiOֱ#ףUpqJaI$ |F`ИcGbS++c~IȁOjkjc 秏쮳W]z-M$֥ORV#Ƌ_gzāKqZ2 KH;ϖ^ws@<↙QoNv5k'~3+pϵqqq:Ku%Q1#$L].^hkPhxSz-g LD&Td4Tf#t@EsfVktW>9+PA5 WcI} pz{V5nXĎq#P.QHiˆrۖ0j<Эi9BtuR8)E"y,KgJQS'u㼛Mun5O56p-Ac)㛏~z)9w\ht#As+_+gGOΆ;VFFh1._ɽkvԏ.I{CMID8jT됀PB A,PYRfN_ysͦ+OBɢG|!1ϔvIs|<$Z_org%&GK$_-z172 tonEW.N=wy=x:' Iҿ5˿3Oz\x~-mwBMГғhVǷ|z{ޟQRf<{#?yME}+$yv'%*h^_+㷮33A)k\H~.6x@@@A(A:[/a>/7o_éf=_<~I\jp__ (.\Uikr1.m9waI[0]_kfj.\m:&!´ "+k,Xڻ]e#Y1vPo QkKz:pmyX\M2Q4oʴc.=6TDZnWY[ 01Tbޮ6"cekC95on\KUvF!np\o# bZ{իf{#?w˷bN-py5r;䍢Ji'Zѱqt.˝ޱۓT)EmڗsI]W⧖-ɡƎN<ԺΝ;[NM[| ϬK=Fv&RuŞm 5?B˔ 1Y6jBs?൭k}Vl S0[ fpbՎӒx%3:|yunJWLZi[g=u܍puhSon;|\Yk,ߺ۾אٸ A/(]VWJսcI&uO267noA.7yh|rcֶՈk5M}c==\;Ԭ׸HxZS˗JǪGؠeáH: p;L$nNϵyB]{WW>Vm^F绞̿>gʽSƞm-gl<.>e).y\\ |}gnKm&KIn\7F{Mө{^uvpۊ^{ov38uwz_r q]0rQDCP|q5r:{Rs $Ml~z149oū{_}݌1^I䍱sKΚ}-}^o'X.agR0^/ Wm&tMBCT}\U)V鍠qW ,BSkih5 3GJZG'2g؈wGAGVW?ZWP&rǖ[ӱ`>ަd)˫[;tv0Ld˷UL_jv^C6<0\^_Z/?-;s Wj#3.DzڽzI-- `yquoh=ϨH]t:[&ˇN\Fl{QI#U{5:(NqW9x&bI)6CqUg?5ͼtbelQ"]oPd[_ ZF}`kU2*ܻ05>kQraCݥx$\X_JcU5bR:“YL{sn~l A0C[W|!&9^ָg\ N> ~jmѭ'v _, - q};{xkgGݼ.?U S Ɠf -qwt{%cpž_|w=+N"ksq_Gp=:[X䯤됀e1is!M}^o]neG1].4.,{@sCND Բ- PB $9\.+LuTȖȖ{ksMMA [E;f=VRoxߺi]H/hq՜OUoE!i':Iri˞-H#kpȏKt{^y;E JKmnm :,lmt{m_?_h@A!q ᜺PyvZ~S]y' u,Q=u\*ϱk7J(@Z=8|><[3b~9,yQE1:^.d}\6 x־xLv Jg.{hřսy[o6:Sſ\mu߼Y;tlW&F8z(ӗ$ׯ9U& lhֳE8`i*NV)ZָΦ$P?j&%bVl4]pmrH<586Bվ2߱t~ح+Hݢ6[F'9x'9;ۓ|]5܎ǤD{W+pZogP8 w5奐% vt,xkђ0p.Us wL )S(jіu*=::5^#z6w.=5h5꼲6zjsJTEUMr]qlL ZN};lqI蟄d49^\vf;in2@x ͩ;ZwUsc{ p5 I:8~aGF٣8Z Q@d8JWNҘ%:2:qZyk n*a4sN9\=˞:;nn^B0wsGI&vnCzO# xfAgҦ::Iesf=<5'׺69Y/[n O=kb{Y fœWM{uMu@HS,YTfm3IZ3?b!e.yI?g8k^nӴG`<4fmפoYկu0#\K znَdxa,[Pq5&<>Nn{Wr)K1cu7˧Zߛ^WfJXz7[[Ùs5~r3o>M]Emͽ4TCJ9 ܞg?T?c0npnW强>`a6 ؃i干>w f˦T#Y^ze !isK%`n$sVKH~\Z|jߵkbƗ?!Ҳ\hm3$6riZ30U\sڽޞKdnN#b/ ӪS-;ѤF,>KQڲ`^j;wٹu~W`A}3f,juy}W&˫Us?ų.qy.ve}a (*UAx1Mj\3f_amȷlq^sXReߨzm罭n?qb_g{w978^ck&GR]_[Ҿg=䷓wP0JS؏\V{L>W|͆E#6F)č  Amcj{.~ʯ>BXyH;1-[0m;[D c][L:} ai {*r6rtI.1UČϔϼi<Ƽwi;l\ tivo#ʾ%6>f?3y q - ]6>*}NOvy+ZueE_ElQ[^O//ޚ_/ҶaUFOKVz}$in_ hC +i3<:+!!?MkĮW:8aG55tqP獆GQ#5/n :h>Vh1Բ^0\w+]In:qp#C.o͑v9aHOSlNÙwa vT/FqѺxcNB]G?ڗ|`ۤg,Oao~IcoNn:C=ydv^>]]7\]Eɷg<Y2s@(/mnN[|?&[%qsɬpתQP=䖒 b48H+/4u됀nr}ZЍ/h#ʸ6g\7 ^HҔj_U5r:m-1zJ@@@@@@@@A!Q( ŎqSFbߕkZCOPFDQ~lmn~Y$m jA5?qm,pf@h)]&vyc%ejg:9-'EGgjƖ6uMk~96/~yͯ4X*M6=Ν|ߪmÉ=ߑLp' Ծ6кa vOkow)V~χq=5`@@A o۽i8kwxGEq3^b[W{|u,8۵{I$qͤ/k}~<m<^PcKK\mw~mVjv{ͦ v_$252ZRsn%F3Fз#M\ͻ[YƣܺHNE@#Ţ#+cs|z}on/16ŬǧKCG3kþu}/nMn_/Bsy_rqc_؜Fg }:=i#mVhuezHR\ί?6KQJ;xtҚ0|5\ӭjj; 6i[ۚm tc2J-hT 믟F8)wW\vRui^ImA8xtw``f%Yå UPBqf}ΡPpY3L5/AԥwY7Op5-r\;S,[sR6DLZ [Lv4ޕ͚\6GnӬb?%rz;ߋ}ޣW]xk~Wt7sgI=oYGn+wʅF r:70Bcm^~Z:o\8>3?/':/vQZ5M\ SN*^oS5~'|l@~=yaGWue 毓f[JK\mhK@skx[4]pa-J +7[ц]xdd5TTӳYkZZqs}~)ҳ7yj9,:/ Mp_:=[tÓ\udX: ׅ ]E8ytr<3'y11TQ-L755 keKѡ49,(rOFATVaθսQyT$MG=6~Tkg-Ӌq%~Y5ũQ,ӆ `ZI|ft{]iN4U>k&K3{_󗺦ײ+UB &!*?됀?ݶ4r 赛n홇%}J 81 UQ(2UhDшeh>N{r~/9b-7/٣fD޿)86oΚܳG\u3i\ꡁfrYY6:&5pu)wm-@"Kض;<~ i?Wϓ_on;%ߍ(jx=V o9kK?J׽ }x6ku-{k[æ<=wc$asWʹ~hm9m>Wwsoc[/B3Irᱞq(Wu9a|GL-wa]5muZFy{p`lMs1ο{W59 ʿ?f^Zw_߸h(?gW?[2  ;955}Kyxö|_K6wm7d\oa__,]S[U'ȆUeaH_ӕk?RiE Bfftu@WLc.q.Sin]2muW ez-q,^Bh >.\7xy6Tiy3Z&M;=yE+03m.*0kjtH^)o.ٹm:f&dkk3>z>Hu00jkuo zmͯ|upMvrym_gwO0cu\QMTNq$x}>v\:@@@@A!F!T{$y÷JLk98zmx'&֑E|?CChFPԭư\NjG+,44ݶl>dNaIsWW7Ӆ]8ԓu=Z~aY\k@Z( Y3;mY|I>ǃZ0-W=7'˯PA*(*[}k{=Huy-v{3@w+ Rk 32Րt8OVkAoÈRKW7DM6Lٰl86#˰Ҿo?Ӹ{~/S護nO/ߋ⟽¹tzܴW :~4ƍS.LaŒ8w)cY$f0i@,u:W;Tdi hEMꖦ*ATcrdQ-5#x6/ \ph~Mxph@@@@A ðy>ރ=.o6H?dØ۹^j8Wb-\jSr: ?/^؟୍{q?QN~"p}xhIĕ@N(:6bcbM,hG/''gjas}-ܝkJsu8ֵP%fCD" rAKY 3 /nag]1lmʹL/VY3@뷷 c-ejou?uz^;6vU`f5^>og~N;Ͼ_鬒`U,?m{axii@ Z5l.{hHG]=0ǿAjevkx|qQ9|{cRteDH.zu/4~]8pcf[3Z^;Z]ѣ;Ѭ^lvCaeq"]Lc`E?Z#,&8jUf%cjecup[5 Vz35q즖h x.gnK}ѷ6%V{ח}L|R>}^z#!YMF9izFcgpS]+^Xbuh q4 ̯>ҷ&Z49;ǞM,7^ji+KH@;Х9dzCaeGooz+@ڳIZsIr o} ym9; .~@,aUkSp Ủj!"8ĚP;Ks]>y$"iY:6k1|۞ͳۡFKgioFhuH0q4MF  N ]5Ku.߰-`h{p-/龞\>uO/&c3ϘwKS4;SxYMuq܂(U;e14 x'Lg-n,~I"ֺWvoݾ/ǾdĖ͓!V'Gc54غvbm6tӦ1& I=281ŕItUyo?V9ͬp8O`]87.lw|qSpd@oKu=\ k%P UAo{!ae>g폵trsnY,{ME1!zfojk`W?Rkut*kp\F;t[+qTT⤾8 iq9S HAK՝ltΖKZ]%sg2<d e9W>esni KhA_i[c-5iV=X^8ſbTJΖFN |;Mv>b8كBs.fcj됀hJPH*Z+*X=Wbrwkuwmcyә2J_rk݉չ5ƗI$Uyu\\xmFߙ!6MO55y'7w ab1o|?W?kbFp\ӏwRά4$汳 Kr[[_~k웕܏H@S8x|M/,Hhc8EV>W4i@gx6{i-cf m7 \hB (3݈\LK'+ ;xLEh;k#8`,u4jT.96`ki61ݫqZkeVe`z -qi\ˉ}.K]ђh(9wR?o5}ikm$4|{]7./ (s+:^Iͼt$Nhgz=r &޷Zr}aa޲6>4z+5>pߓ]XF bcl\1- >pFgCmc~k@gv~Ƭ{ԷOu;,zu%Z\4$)#WiqJ(Mtr˫hۇPʳpre8FyhI>k e9]ǁ +d y%Ztwk.q-mmdpv;ch 0tM2`!t~]^xV wd=RpY^ԻDQRWM|+ 9X=Fغc 볣gZ +غ@#4ֈsYqZtttlIi 㬗G=$}eXS=y91ʈqeO/Wy35]t s7Gq<{m;ђRHߓA9jV|;(\*MWv+C} Eu]y<6~ʷ;# 7Ҡ\7i<[/W6[7ŮBKҺ}dΘV\9d/i>v~{=ޞ>\Z\ Š8y)rcݯXVc_BqN6]h%JrtIp^Ӷ[6^e1啥([9[RW4<4RN+>]VkySVvVw.1iѮI[jhW7Yl{ϵ|yyg9;78OyD w6O<z/[y=]v^(!*} vdH+60ܽEs6MRur-Bg{غX/VZ#@֜*?P_OotǓrr|{5F@`ɡ}OϏB(UTW$G<} !ii7klV4<;I8MCO_s};^.\ާ|ZYs*Vɝ4*ܲn޳W^`45X]S۟|U:r=Rk_Fn4xOZ{U/gi[m1<8nqkDSUʷؿ&ϲ`jYxN8xýkV: Qm#nV6{ɜ 'G ͼ85r\ޝxe`hJ]r-wh8Wk.1_ky8qpkNbo)M^@q8V?6q'gyZ3+KSzf݅tñKwgcY|{:Y/wQ͎ͭ-A&%96$9 kقnJRMvß-usL .\t WW|,R@h(kxlQa Y)m@3'b9˕4āZkhΓew_!JΣ8&ξ߇^|/Ͽ/;+qm-zs0 -/̾oc${I$Ҏg߿m>_?~` ;䏄hKzN>..m޼$89}R>ik{$MN>-"S\Cnyƞf,͠MxaFwdBʃ0_Jŕޘ~bZ|R!, ,#n4=_I4mzt/}|߃okmD f<v\"-s8.YX&DָPNϭ]'$G4tU>`uAdGH15º9~8l-7--41p]y7ڽGp[A,8v7K/<=h#I%ѐ*jiV{ KzG9/s3WҹdZ rj|.oWVSZ**)||u5+&PB됀P @@@@@A(!A *MP(J-3ZP݇w6WvBᷧb3b\F {[WN?mvRX׺ՎkſӶmYkgzY{ճ^ r8 #Ը4kRMyVYӻegmd#'?V70GMsp7Fh;Y{v 5VFv.|{i2zWōvKdSsc7p5ii{+ tD(q]p֌pv)y˛ɀvk8rr}XK3$PܸK٥l@g]pk7HEk{xZOx}eףӯX(7xEΥν7zŎ-wo-z:|+_-g.n\*Fr;ïy9g?Mo_\8#{gx$Ằ.ҽsY:u3=uZ+_ Ӷg{+^o>7}maV,p:_Kfywv\9mo|{0GV'WӚaZA P@@@@@@@@A5@ U88ff_co]= Py_첒4P\a\kz=Ėkyh$z/1²)no,ܿ8 co'x^ʕcs skfr/&kzmeoqudt]SϦl_ 7J KZ)n=a.֙Xאki#Ł@ké#7{_t50 ̺`%'YM{vn? a_JN->nZ G3q{)PN3Kd~]Wcۮ250 ԏi˧<}&gTXq]=p:K CV=^J]ty'yF]ͯ@APZ3_KKϽu^Z=:LԿA 0!P@@@@@@@@@@@@@@@@@@@@@@A됀PB @A'$ DA *D! *($ *%A4TMQ+R1ku,? o|:W,egneu}Q_k~{Os?_,tz]bQh-8Kr:Z'r2o5>(ZCW{WNk:tN2b{kjf703Vυ8pi|o_|8MuIz߅?`Ztw؛}>M?_-;k[^k 5ah$5Go|^[M 18=5s׻ blC"%|ҋ8k)phNP@%-L.P[E0eQBJ@@@@@@@@@@@A(A5Up)ߕgy8iŵ5]K,{wɚq|W-Yߺ|u k|qDZ~wm|n#ik-Mr_cRK(Ep9׊Nj$W$lx%P$sVv@p[m py8jJ/C5b,T*an:r8caВZa̍&FR㉯jܮ;mq:uP[] ]A31"NOӒx$xH4I]6qo ּ(.I|A`9YaeGxҕVgvt F19DwrڿSWrkZq j,"}W;7C#m4ad <us+%JP-ƼNҸaʓwm֙se"e q*\T-5:hבbf#GSNĎz1yChs/vc8 Yp97]˵+Oq!r/Tdd=JiSLyow7k9[ikC}}: r>>]unoEoo`.tdIPMՉ+}O'/˸#N/f2v;V a,kKstۖpV"JI";t<Ƭ}GyO}~?uW,w]o{c]WI&˙#_kz[ݑp+ + x~g7?Fw7[#+oyynz}-Ϟ'foڞe8;VaIz6}wo1kK\O?&>̛8帷6KkP=+<[Q됀P (  *%DBPJQ@TMQ(E( !EH@(@A%P D3ApJaP-qi_.x0Zэƥc].Vumr;CZ~&/6s@}Cot嵈hFg+o{k]-HMkƾSLݾⲗ-+yή_C^I%?<<}2ci:\q'q_3w<ˮޞə#Z & /e}/E~Dys8b_Z-]bf'2=l}>?_ſ\2|ݱHhjr}S]nt_>,]2t{>׺?]ytߋY,/vr}Vl6ƎbS}2{xn>Mv^tC*EE{Uer0Zg,n, -*BJ@@@@@A(@A4UTKXj\ewߦDAӘn_O7ulg}t49Kyqk's'X A_f֒7L1'DI$0H,pX\Pv-aI?^8cKV԰0>bMIou㾬2CpZgPWҥLWm%1Hճm1!g f"$jt.5ur%\9Y4H!Ywfað4`N:V/Cɩ6O(v[G>)+RZ*z:|tt(iq$2` SN^gL25XTEa:fOjikؤk,m48neS!-2`Zr# zViϦq+8ss#n#Qoؼonv ) Gv);gJJNlUp;x8zV9S/@i&~p^JڼC]y8~csth {(&Z&P)Bs(P]NpqRPوӼfsH# tIÂnFT'C@FJJ[pEgеn tCL*hĝ+lkhVlGкg2{7J>i_Bʥviܯu廨5tsN-k7{O{g9};.. twML-~}\7M[k|Geؤ|b3,%==W6ԊFW~Kzi[fۦ;X͸}ܻm'qcpmau+9rKn7̖6JShxkпk?3ww_./ UTPQDDD2[N$lJ1Mwm#y΋W{ᮜ裨?贼o}?ƽ}}?Tv/Ӗ_q}w/l6r88Ԃ;g}?Zz;32I8;}vk>{rb[~v8d;7e~3KNzm3WOr$5.q+kbtt ݶ.%!Fjk9yy6ZӖtף\}YNۂe e0\yn9+\Hܰ^C#Pu_O;4˓8]X ϫhq Yz7k>G={縿<+}M1:Ou됀h Q(!DJ*DDD  U@@@A*DB  DY+GBq[uU(;V\TE݅ PaVÚiRz4jW-1j.)uſAvזm7׾{)ZCB hOzl1z}- s|+r[qnÇr甕s:[]~b~1hMS"J UP{*ߵB ׶/}Sqn{1yq\5n 8j׬^/K}||_S}#oGu ӫy}|TS8j ndkT{_(3 }H}KnY6ms5XoJ}y|t,]s)٧/7W6> yA%y$xGgSsD!#B[g|؟3/W_}U*?됀P*D@ A @U  F&ʖebA5Uvk5h!EB *TQQ#"PB D Q@TJ DDx*IZ ٕridٙDf%1Vԓ k-%sR;] ݝNH^^OKǴVl{;/36 `yxO߃}nzZXhM=#;r@l+IYGh T_$V"F:r?&/s׎Kl5$apԴ'3™f*ނۣ^8S{tNS_Grlݲ.y[,ؖ.ItM**[sxlUtklt d]ZRE7VJ myҢn#+>.KN( p+•8vjĘsIzaF9V}ȩuRT'.]Ղc N#$Cn\F wem3ʸۑbu:"M9fY1~#a?V yo,RpÏbܸtֲm 29q\dgbkӜpm^eOugd=2IZd:&<=oXl. 3ϊ:5Wwlk|Fd{ _*PC2@ld{5{:a5aI2i:x1SznٙqpF`Ufm߷op$vYk7fof.df&G}/2{7vϋX;Ja`XtM@(!T@Q8=8m1z͍}ttF <|Zqi!\g1U2 ,ڊ a!is&=K?'o_u-z O0BG8I.QvkAJeޠB@@@@@@@@@@@@@@@A(!E\  @@@B*QPMh (")D Q(!A (A!Q(& A%TYX*s*Z3]Ik;'Œ1 i,oYz@%1Xj{3H.c,WJBOZFdwm&\gjޏF̹ak YQbGufYq\:Ah`*:JP j0tplְwU.9 m'úұۋZV^JNxoo޳t h a]8FW:_~.Ny'_3X_nwM&O-_$qN?wo#`=yX3zyrmYu s&`yxz8W'Mkyvm?7'sykGл6c!q@[0eU@@@@@@@@@@@A4@TQ(!J 3x"Zvi=ϗ Ƌ{˜kɧWU=?,  3_#X 5`2jՙV/vRfmV35npm{ZzeW|RctdH۲4N=G-D{K׶2Ljt&֯V0.-Je 5QQPJ l|Z>%G 4c/,59wE+,J+SX5PP4s4Tp 3Z烬b^H)\nx18:Iq wY]pٷdmy.'ӗ=m' ^s$jI:K1]27L)tƎz=Kk coHjXiZWvsv(c CZ3[HҶiiZi^mx>($(]ܹi=9vvh "+jZ{qec{oSn]@A3=iUkAirkūC_V4{=Uti<;v۲73"F_}k<ٛ1خ^]`.W~>[+5@@@@@@@@@@@@@@@@@@@@AmgNV% J@EJ TUD(!(@@E  R@U Q%TK]CUeKԮSJ uz'P+{\G7;K;]W_Fph 8L㣧gnH i;-vok#.5\qHm:@x&Zn18V8hn(Y GxL%}ns,5hv iR2!:T50I]Bq SZ[$; .tZj]-$9"lr7R4\En N$V(1_8f=/߆x7]=+~V({l-8s}U>]yg/o {%+h,}mj- T(% A!"@@@Ao7hsY"nG/= Z*aެfC#WKTϘv6'H01^?[Ҹq?#f5U{0~bSpUwgUߘ,1 ;'s6 h2tcψkp.>.goŲ/pUS˻\3Z8p!r]OokPcKrKmc[zpo;P)w^{o$˜lпQOz÷uoM1X2 &r@չ;8DZ58q03ELӵaВqEQP\r\U2d2R#IխWhۍ29V0 =f!%;jN==1 =7ÝrRm1pkd4e~]uulG0*\>Xl6G }Oy믻rM@KM:xV+xRib@4 Qvs1L1L{ptZ4{=:ew8,FX|gpa11 .Xwie֨#rԾj3NvMMvҶK G zw_w_._q>H^q Ue!$b @.)PAQPBP*nm7rɸ ?]bWlx!i _{K;tXȺps8>Π#}>LǗK;_ <nG's˴/Wdy'ѻRұe AA%PA(E*UPPB A%Qs#MUD61( smC7S@W}_GSGä`dN E8E˄'OX\xR̖9Wk[ (sHΊٓ1 \kN+i4ЌFKQ$UHI':0)3s,o> Gjb7m'33t5[fo'Gbp\@#+}w(X#%Glu]I˯>m6+ZZm{Fmkv:f̽Ln H.{L_޺JﮮK {Cg/nho8$ N%L<+[.!LJY<{oW,pIuxZ]n|l"bhk?蕾?_w˿m?y:VR!EB ZqV% QDPB k0btw^>K7[~(=V0FOtۋl_wm[trht8\=_oG;ht7#^WU}M96pے|Q{zj+=8y3c 0 WW}u=6Wm%*dLRt@i3Cy@UqMˀ!`׽/gWiz. G|O[dM߽0úd0<w8_je{bMt}qMq3\q96>V*Ov-9TqfZsNB)mƚS00}*h;ULk*;'9DPN -_8"4C\\ܾEέOЦ%9Th^FP4iU||̬ KCv2H4 [k3]{S%e{ωK_v_tӏ:k޲^L]i?_==Vj[LiIM_fmSqzõ9mΆRI%o}_;EǺUTQ!@(Q@("/#&? ϕM-8h^/[s<.+5jfօ~? m"ǙFfDq.ƙ .1h+5OL"ˆ8%.Y!$2"TecAw|iwujWAob_3J汷EuiHYOe}[.bX1n9,e\>}.&Kdy||}ve9hAYgG]6,.Iu\Siqq sk]O w{]^cYChiwYM/5~|$cLz{W%Zp+۾N[o^O_6_47Phi^q';r/K)A&A7Ż!3FJxov:Z]FkؾOԸftߺBɃ$8{ªI7K0]rcǽֱy6;0Pb tվ﴿AOͳ{~+7o=~ k4f8WOK\5mfJ^_M]B~ݿw8M&é:uciq$UYF#/4%t#;Kcn̦eh${ "7,s7;~繋ck8jW=4.k[6[OtW:W%Ǜ}]'im߇FԷ;l6WNQijbڤcik٦ߥ#.9pSNNm}ut&ZnO)-ϵx^8r' 7&҄zTWLOooH^B)E JA%PA( 8󈀀*"%U DEQJU@@@P*&@ @@@@A(@ ,/ꔽb7%&0S-\Vk̼|Z'_s}5W=CA(yꊪɓ 3VDftu<em̡S\A$tQW?u8Mk*u u^4K[1gSп+u/y+~ ./i QpGIV?%]D @*xfUqn%hUѺ\4yL : Ψ8c{CGU}ƪgX>]JHX85\ bI\dkK9V` R("-5حaTp=ɧ%}|Q=g@5-m=s&J{MbpkoLI9zOmg4lwbsjQ_WS]uOv~ݼ4`hy8 z qdÁ],{cQ@T T*hyn۠UZG9Lc_1YtZbu1̕4 Sfde{t2Vj6wi PTwQr瀼1 c ( µK#qi꜉V9dYR4]"66\[VSmb{nmA{FUrsW[j>O"S |:gߓ_Ti$wks۴n/$hh~ǩzba,QFs;ū^z==z<3]~!էּ/f帑\o.oww2zJJS lk4 {W*.x}xߗvzk}/|csnue4`K?{9ۗ5z@@@@@@@@@@@@@@@@@@@@A(!$;K23M95M'wwn\$vKޯ>ImCj1rn(2xc5s/9|yP ~OzymXMq::0u{ =+溰nW mƸ+f("y!#Enam$[S¡{o.<ogy!~ƺX ~!ğоwqJ[:!քOҿ1=<527kh]P_e}?Cy}c̲F :1½]%\-\IXߎs"U%њ(ZtۨvSt+fcc,,:XYϻͽKl:vN^yu\HXq4b9Xߏu&{=[.[Ҿg\'[Z{{EWę6CXKZ d>y㯖m.}k%Ɇ7Ks.oK|Y0ON~[-ٲ厅tZz<5~?޹?̌v-N2*h>ՍתeGx*.W(A  @PBPJP*UD?됀PB A%P@@*@@@@A*DB A% B @AvFk3[un0- y~?)LuԾgL|[ܳ?o^as[1BbkH2;W=|6WqZ?Myk WW5!8q:oϔT1ZK[Rj(WVNx"kq zU‘ECZ]0He)JqYYU4UVR׸*,Z@#TVRڞb3[F *^Vc8+c6 h Z[6bIÁ*-j0Db\@#m!_oūu>f8FkY=-Z0܂$->*qͱvch09סapdk^mHk^Y.+FcE\G)69d3ݙt ] Erҷ3svͥ |/go27wc=ѵa5u=An򷹹yUYYTB(|{ZzBKw]ѳk}iZz_z ^5^ۼ=}вSn=9:m&.9Soߢ.Ryiy}GӗrgVoxh\%KiQj~>/m;ގfxIkZܦH/꾝xgۇ}n>(Iʥ{=߇yvǽ/ճ3^lڷ!d]S?||r\`[E!Ȼ !|7~1hxa@|mǷG8H MbO.uڌvV͋ln~}/WHZjUi52lk\d 3kmk# nYu9z};9ہ_SJރbAcq%q|/W5gn71csuyr^~OO_}gHm`-Iڱ~1a?B]etmǭ^j>}LEm=M#9<j-M:&^gU}5 i.M;uǹн4A~~ɉ}ͿgkcWtAEddnÒJ-m2F9Aqͼlo`3]?됀(% A*%PDJ Qz*A*)TQPaZP@e7tּ+}elб,-n$ͬTtϳ_L_W5_;ks-0;A΀Uf @`cV\)T rL ,])AAB*2LWUW+HYHN=_5+8Žmt0,1DeSp@-#VDzDaq\^醱z R?\ RDkK#܍HҠ'6eq"QSGxo8`z&rƞ=?.>^{<ŎqtosAqkIۧxޙK.PJ W kBfƐ3C [u{.,dW}[~,MڂWݐSmkhh'v#@Fe~rJ+*,kh(*,0:ԡ[b8[i4%qUX8 )Ra^4 ¨06nkNY۳6'Pn]8y6mڷjq2sc"RIx-Wmk/hu87 `+<7=FK֍ß0@fV[!o1r+>r9{% 4#.OKϿ%7$s=S+tkHTA$ˆ!   ZMHኙm`|D6~a w~7맻k8CM5tǒ|گ\'Zm Q}fW,\R+p5QQApz7]NAﵾ8NX4u`?דiٿw̻t:9$Sޞ8y5q_U(!(Qު%u+Lϰd pڃx3W^qm_R=~ž_ Y'3WUxrۗ_z'hp+]lMf4.(%M~WkKaEVҺZ;X컙%=o<ȅ5п#KumG đ,oUP‹XY (\uF2iЩmQ2-Mĩzߨ}8Qc"if"R}RRpn%f Mi&k(FbĢ.g#nk!ҫ5*1RUlYYJ0KFhv f5Wm fb >j75kiG;;m^ѫ#Sk D.>4[dܚ7hh#:]z34ugTSֶ8 ֝m97!l㻕3Y+YvDITApTyYDW ֦]].nrO OS>/j_<f+/Ǿhju Fŵȡ'JFt#2B+Jm/A")c;F0Y)KX;;7"@!)Vn7&w R֫x.Yi^D(prM7_K4|h,Nfǩ۶;4ƚ_~8g"~V]gOy*8W^~0hZz=~\)*6݊NIpWiů_מ\H<[Ui_.1ݩƝ i]o&_%fpvuiN5[ϵP8P2ԿYcUNs)ή%*%%tp 'YHൕpv\{mͭh} ;h]4ЅW.LX{f-5Ci9T/}[_s,fT>l攌}?V%Tm•4Y1D[NBڻHum]|Kz];j^YZLL5U uOv0 ǍH^ -klukrpFk֨AבnVY^s/ľVſٞc%Xp{bs>?y.됀P(D QA%P%P@T P*A 34`mu.5-v8Kw̖2=GE˥|_[:~Y3sRt /ӓ9"aaN!,يe`k 顡+ZiPV"dDi?R 9hHdeVF2y Ud v5T]%BdY;IrJPn.PfpOMx H܌cAkՄi͹E PW`U{ՇwBxN!\k%d %1*Za=Fpg +Vmjͫe\*m\v/^)~qjp A ·'5{qv-ʿ/L9=kaΩZ}Stenي]_W E8V7fF}ZD@ MARFiWI$xf. 4vrڱ `u Itio-@y8 z;uۆW>^^nż\9qݟuYu] K(cQ{ڬ^:c_/ܴDCNrmc\cckyEGUu^Ϝ^<>BuI<\B @QPAQPʢMPEDB(HTJ#=rua :Uq✳ou TCp_3z߆0mhi_iqz|_:o&?af[_v޲[uy yoyjcTPT/?'94K߮;aϽi)Oa^_OxW}rS/kmi$ok|[j\[[0HhQ4RS{tbb6_s F"¿cދA!uykN׿O/yu3 4bp y[-狏 1qyFC58~K}nd`BM6 n8dUA(!T P@@AQJ*%EBU !   ͙,[e/%Ȝ'Yiz4J(\EOW.OKu4`DlцW,OA5l]^nt6j /sܺ;]aS-EyӃ_y|ls'n'.. iK#NK4Y~/Amp'qLL-_+3yGcXD}?mmrvsxJB##M V˱t9]"q,L3S5|dZм8iغ{5Br7FoOnsm팣̑[4ېN?Y]3Sp}^ 5 18'\]9z{^ۨŴƒ9u~{Owtf6A{' U=8Sυp,ǏfK\^o:{uchLp5zuo3?f0S/KiEMFjYY95Ơd5a$*TJӋa-%4٢&ȴ]F 됀PQEU%DIA1Ws[v.\1U] 4u7${!].>ȯ h=qZ7?sz}.= ;UZ'п.vhyԣc Ҙg4@@J,Iᚃ,Q9&,mHf/ l*[v H9bHcnX r8VlgU®AI.MkWݼeZnpuqN˱[6-48 k<иtlޣYտ5BtWEG0%åoM8R}"&HjV9wZQɎZv-V촼 qArkki:\oG9~+JE{7CpH57ENNZ @Tk\*mOv?.9+Ic/lhז֢GXZ0m5#h}|{te̅F4%ԽI *8-:VaƲ'ftFh42acZ G0i$\%=P^P;-۞&Fg~(֎eZܲ`9ԣZ }i6nk9g] 8/[8)2!ivq<kWm>_ahjEp# ;LӁ`EU=F1'Yy_YIe;{ ?*q7ij0-UA @@@@@@@@@@@A5@A5@PB A%@A&!@TJ"jPK\Ucݺ'!v+7uO{cq\95R.kmv۴t2a^Mo6]4.cq ӧ&=)ӳAW &vT{['|nGpuΉ;rk6 W.`D0m~*f8yy>^o~Ǡ%PZ*_M}z!U妡 , L*50҈TK]?Jeq*QPAࠅA됂T Rգ1E>2E0+P@@@@@@@@@@@@@@@@@@@A(!J&L.+݉(*Vݔ7Ҵ9.WMs0|g BoYsts #H;MKKI{Iy?ObW>aF`Ǽ~_{p`@>\7-+m:kS,±&oRanÞ `:dyw <(.TU)tհkJ54@3qZ.iQlZ27KhH<gr2VVPKXvjK9ws[w9)Pl/:[GRaFihđtVfTRي13rKo$*Ҙ0߾stAQav e!#f R_" kt-'a\7J}p!n8-G.9s-shi/?_-^O$_a D6v'_\muHA\bxo1خٵG ON*{ܷݯz>1upܱ")5.8֕ KkH0s55N"HuVc#j;hjsskRkr_6Uą,sa1ƭ+8f%ViSUǷZgSڣXэhO;$6{PK}.M\0#ҕYƒ^ſ?>_wlehs0`tۭl!Ja-%Wk M",eÛ엣\rk% \js*IUQ< [ 7*p=_ɶIfO>n 4q+d7,ǯUTQ("*J@A4@ PB @ TX5T<1QRfn< 0+:6̗XrhZm{&mNmnIW5'u1Q@C=i_eH^Ō'*7_^{iv}iE#5ᖕwaB8Sʞ-X9|o4O-^qtu!c+/=[LޮL[Aqe;DSCU"(<`pYrjap%iJaꖜ kgZ;sS+z p r3&6b!rΝ4F`sVԀV\ \Uj097CqģD_42f*_~60Zðzonz&$])ڢkxSȜ&L1[1e-В[p_pBA ^פ\J6↧ ?2k<#_m4:8 g˒<Vт `wӳWÒ[xw_Q%EB @@@@@@@@@A5A ,Yݕ/ IYyfyrȲFF:H$*?|ӊwz/6R4^-y6|OOaI,puSW5{=?iIe('9`9ʹ_>'^k4V%ucK@ʏm1*o+c1h?ܿAݴ[_o,߃3I3JKW֚MzN.X=wne3ْ}Gj{i ɣAʻmgledw?{5|%tNnBc:k<7_. 5l>7?o/H-cAPjs ſlon;u&SY 28zV$yy,⢔,VrinƤ(IU•`2C3Xj+ޙ\G&A5Z±qҘ*JEsE0Ur܌95;5:m55ZaN- *"iw2±ʺ֪e[,hHUpّσGj_\udž~M pN%sw1y8֡qu3N$s@ +ރ_)sBBD*.\Bg,6n9_ ec agkC; \m~f>k|MM8_"7f$ʼn8:?ɷ82A8-Ja3C9L@@mࢧAе2 {H--ÄܿV!CpZ!c\Z5Ϯf(e[+V?uE]@?R3%VdDÛ'iQ˦[kֳݲZ#L{,/eBXC\*+2/kp~gV`)3NWز]ؘc:KS+hCZνvyo5ײַ둑_\y ѺףAZs.d2uf̸ߓс8~?㾚Ny^ZL8 Ҵ_NMy&uymמ? 5[׬v{OXs;+}Syfk%8S_sqh2)Lhx,e|_5󅜰)\*2~[x7^}}VDPH0 *;=OƇݬ ƛ[)ХiqC-c 4мkn5>OZ㒪 P^0PAqY`ƶ% PHU!\%k,៯Fh[r Q]7{LW6V^Iq|67ۯ ΏWVe~Oz;|sz'+m]9Ċy+׻e'lj# r)?a{pK\u-\vxː0a e߆{SӕBuj^axQZ)$ÈU@{\U$"4qܷ. ᷷19^j@)52C"#%:acPQR7UY!pG` pYK2*@Gj+m% Ny"a8*H@.`OJH VoдVB?3\K-ϸ/p.:w؏nd2=.$-6㣁#"}]5÷foW\ۆ g9ii~^Iœ;UHي1擀9c"᡼Y@Ԧk5o+\ +"e.^CGRQې_[}?-?w+zG4Ӌ}UݤQEMGb .׉/}Gky1}xm{ZK(Cx/e]<(緫; ^M+3x|{w)F}Kc_H^H!%\#jcuea{j;&|n>,V3vX" 0ie/smsz[+z ZX@\-uBE1T$4$2kN^lpÂIpy[RX[ &.Slrk8Q@;WO,Y&a%-i%&K &ix 3i/IpVY#j(Gjֻ˃}ˆ\$i:OcL~?_kO{ߓGgI}ɻ\QZ[L1&Շ?/-~צ.b1ljA<orZmpT~U{==cxy/(" Q# (+ϱ*b*lI"|}~糞\9 $5ۏPB % N TJP\+Hp̫px]SU ! Qy0Kߺvݵ[+C5CqcSlՎm,3 R֍exa޶+ɩSe,en O5aΫ+ڼv1V[ffűhksÕIҴjnd5ӹ"I{|1T!O]%t ޤd7kVurQ7Ҩ ]在ؕ0YpGТJD\9iǍBjѿCbhy:.8oc˓Me {ZN8bN?S_ETQ,0X{Ǯ& 級^j3~zq~/o\AnexFUpiҿ >&3GU v} X=־o٬nׇ5Αch84]$yx 7)3i3{o|cP)RY 4ZTW,ǽHT&slfŗ-ۈtT#EVr=11ma~&W :6-PphZмTJ:%dt35׷VY˦f62@ 8%]:#SMkjÓ6A'WN}moH3Ldq81ЂBTWet.nW!\>-q틏{kMC^/GXPP'БAn41OOz|ͦV/~LTJA(!hUDW 8bW>YU_/cBnVVBA@dTsç".| bƅbAZ 5nۛ@F|2&Y e[<\+֬s+K\XF=.=(FZFj}\v'K#5Hi9::^6`ȋ(hs[.[L1ۻQ*^ssGҝ^Mq9khpu]alb]ط#9˝u6j0-xʗV7[qq S:N/YbݶSGӻ{Zo>̺ߺ,/ c% z} >#v㺲Pᤸխk#y`lm4UW>2xV\&ѭ51P09lMm^i%KXڶ{1dlLq{L\Y|EYwݞoG6]ڻ%t5v[ [n?$W {hEfO!x VfӊH:d oTRN ԟEۺ/)CF4ù{}.gK>fq'cYi%^a(6ou7/KcҎ0u _WњgtQ'SGk.؏拞,'ovw:< B ^$-: iǔ>𵫣lt0y̅9%BF s&jsA&@@Af+{wͽfG weENMxv)t^^$@0]@xͿn0W F;+ˈ~|_o}mz[Vmmk@*~j|OQ׷N=5P0Oh^L=9?\8aT^LGZ:/QlFcZ3 qhŝ]R((1֫eK(u} h)5nEt :@aE2.%BNTo lsf~YPz6s*x7 8\H8w iWǸYjp¸ұZ|33 u;F "6]rb=``&luÝoVUYK4#0T;ov m=Xc ;y{t}^i'69~QͦJX6,O2rCýsIz-{hya"py{|_{Qkqqmf됀ڍ40* *, r5%Q`*ᜲW0+G?$;ἵLL`9F~+_>M毿*Pµ8nlEَFԫ:;6§e,:ekfKUϳ$s@"8g-as VWVG6k\x t! ZJdi@$,(߻RצʴkcmZ"Ć9`\8ӊXҸqx,v|w;A~Njk6\cItQ@(:^^u]1q 3_TgL6b@Ư[oZӣבca8fTca7ng(3W=㟛y\>"NGQִs{ k UA*A%H!tlQ4ĜLӻl_-z۷P:Wq<_?-|yvX[ G8m|}MxƬӇֹMw{YZqJVLpך}ꤋk<2`+7BS3S-zPM"FKyH8~)Z 1=7hdoh v}T{ϊ9sd]75kn_0>}zx$(8-w;7.אj51.pqWqoovZ3F]y|m:=Z-/n#ý[+UO9ftNR1)ЂVF 5r5,qtM_sLt ޵ pѹ2V[rU׌ZZKAė9BH~.sGpuw|b|_syf0FMC]_s_ofGM/{k1>醲%$*3NtUѵMA]ɿW^3p7TU8Φ}[_ë>Kxkvװ:h/:Hd:Eu 3>Bï[]4nS,T\kܳQˈ*Ōqh?O&sn\\޶G:1B;OoVb*B|rI.Y{^BC5/E a*jIhdh$M/j%”UGqB WOaMmn\@ŸHk} ?kv@%PF+/tӌ zi紟&_5s'2bA%@@A *J U yRy;fZe괍9c4noInf-X´fD7Atd}+Zl},T.?<~>KyP8*fVѦR# Z[rλ0ߎԻ?Աk;Ei)r\vjHd&-NҝDұ+Y*k6u)Z`غyۤ|ͷmvtҸs~ɪԏs\kwEsNإyqyQr0ޘf[3iFV BYV6Ui1kJ7",դV.I. Yc0yr9T}sFc[n#gv ;7}w?w_9fr\I'55a&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A5A!TYDVm!]c!<&sٿ{_~;>;NOmLgKwN99iWe__#Nϡ=otJ9Oӱw捏PքZŎPecu qǑbZAXI F 6<G d0֣.-É-.૕Q$0[%l۰AnVH-SMA<>Wˮ0@=.YjY5d9Gq}[+~?}ww/ߠ`|sxc^aED(&D}_M/`80=pWxvw;(YZ=.8軾e]᳽쌀^@Mhяh}=im^A}1*$ ZBQD~ͫywk<zduo25xWW:c5;r0M& fs1f#*Rp\[fud}Q0FJMZe%ƦjnrV$nϸ@9L8mVPcLzXk1d`|PYs:EpIi49\9Hgxq!R_kZ魐svZw\(3.2F-Hp9u7yyE*aE{0D\DӆC^}чn}IEC[iF;uvGWJӇ8q_nTL #p]w\:-ɗny%Gv []\k#ţkveu] sH-ilc:p QĂqiQֻ]zˇ-|ykXuG!4 1^NMm.fr(h됀B TNS+.WY|oRZuq~zx8&w}(&(`sMeFy?K[rwud0q\Jey*WH-Z2~UY]YYSNDEr4Uw9D(Cd.YL/.k\L4PC;rHI[\TGAiZÝ4ҺVNZ );:F+PFa!{8!.!}1vx/8v,QA% j2-㖥nW;ӆ5^Z^ 1nZ/&/}W6 +kg/鵝+[x3:~Ǘ]r/E۞h+s fx#W:ٞ8FhAoy/v.4}4up3+\ӿXvv$bT8iash1 ٥ׇF7x涯:sy偮=2چvpW=￳7?KD"%xtNa-#" m_W6WH rӋ]>ݢMWA%TJA (PDD D 7<Ƨtg_}r' JGv/M|_'[=hh,+c/Gۇ#r=DC2*Kr>k1ߚ+LAa'ek$qxŹ3Ww(FIU@c'& FMxTRaCOА" Wī:vod`=-[cs5TcǴ2<+J+Ѷ؟oS=>m]ƄE{̱d;ƊLfteܧin$zx.ufL18b B\ra{ݩkBܬep װqUE䗪TzM*:.^B]:d'?OmjZq4kև G)s]wڙN^1\zXI?ZXY65f ok.{4,Ĝʏ>ϛy|gދO9皹 ܂@E!EB %TUEH(%TI ٵHb%i#0Uͦ+9=m#pQ|.cmzJ{2<>JT9`;3ѹ{8XkkLjhq-Q,ϣHbֵEXrx{Ybdʝe{T$x<8UiʿjtdƀEI|LC5ȁ$.io{a,ތZhXi .yL#6Z%*G;-ltrmz*ۛ--`gU HT|aX58 F+]&SZ^i7 zf]7;QWt9Yh4Țp[˕c!ګe̖G#K9hUJ6˩惙9v+\6ї s]M-a# Vx[kϼb9\%rtUJ 됀B Uh*ZHе/|k.+JgW~ms}__&D23Z<-n{wz2>3\5 >bdb6mYdy hx\: N4J3\mqhq#{^ʒvkږ_!6\ݡ򶀷GEنӣAq¿c |EZ0do)*^RՑԎ6apn8}hcJaY G_ԡWZnl׻dUcV4֧]8/6:g}[5P S8u˚WGAQA% ; V㕌`z&\|wŬՓo㦿3Nm|[<.׃>9łFv<؂+Bnߵ ގlt@ -§%uVqXi'?YO vqnWOҷݜ.n^qɷ^Vu4KRig]a@q+8jk8щ%V^4x݋i#a:S{5ގu/.:C#݉q_ED ! %@@tk Hldq!زiJS2{>?WlMZ+2˩(DG` ^/D, JAT,T#>Yul<遦+26W=miīgm߱[fFAXϗVSL:ycÚ^ETJȞR:s&G\/̠ܭ۸~l1Mj.ul8-k$6cn;kLZ\ף~}%1H=ik\{\9%ۦjf$f=+ݢYMa6Es w6J+ ϳr2rˮ#Lk s'%{eK+Lyqj Y*e:ۃOBvf֝쎤)\kMu kRI94UW[K'YΧ}f}N#%Mpr_餗sU됀ʢ@ApTdiZa5_[򍃬ɯw;H_<7{p|;clVAJj^]^ѡ%!]m-i8e;]^N!:x(>>%6mM^ψ2ǔ#&3G;ƴ Z dW6wo,Y#^]k6`eܫf00FشeUH pSe]KZ29# mĵqW{-fy^pY1ux2]4Iю[\i~p:[o>[<+@@AAA*HA`*]&[jAphi^MRyZA٢'ž_¿oSNo='Gt0PS+aߠSUx֪MC#5>&IF5 -p+i۳FRجsڵ@+QϽɩ *jMM3ekߍ'\\.ߺq^]g~{n.q#$W$OcQPDJQPU .Ue ^@L{^_Wۋi>[7-hc{kBǮlۊ ] 8ԗ k\g٦q-qƺ}.WiT`Ӈ4:" {M%YY"@Z憚@':ebx ;C-ւְbm ;VLYjjAv,Z-p%kwVЦ]`ul6#.v G)]ήۺIlsǞ?ZfLPnAXӎ Iw4w_0"p/1ύjoHmSMon \ڊrҵn+ƴk}LŴGmv+X؍' 88K"MuWQvj\^A˟1_JͶіs7:(H%rӻ}XK!vޮ;o\K7 ;"G\ 0f~KljRim^H2 @@@@@A(!됀PB Y}4W *U+6p/* ޱR9 4N.( 坿ߺHdRh֊y"Ruk*Z ^@ƴ෗=}v(DCEp8ÜZQL֞{2f!T[;27 S?L-&۝,C }+Me c44-V&\,N`p/p{W<^{y}?ᗞ_}DQUAQ Q J@@@@@@@@@@@@@@@A4@A*(Q@E զj+4QXg Է<.&+#7e 3gܿ,RZt:5s~yy<'s;}s$kF#?/jr'G}6>m&) {n~.r u 9pXo MlzF #Yن嬸ak68gBkm(,fD⏄q,f(g.a}WLcNbg-+RSJ}-̳>o'uƳrĕ½U(('J!EA"@@@@A!!JA(@@ UB hY)-enXt7>K}s+ˀӎk'WVga; vcNaL6<TM k/0כJr3#)0AFG8-aG xM4F$_Cos_sۓx}rNrw/ǯƮmUBQ hQEPE(*@@%TX5TMAAf8ˎ%wf׬bsl7RJmɵ.ouɤP:ԼT4qzopA=.sn}u.+>}Y˚Y%aPҫUyt0ߧ|mo{Gwk+iLk<^{uGL fT/Z5"`p^S77߫S\O(#|]o'1׏oGxK7›nHyZAē{'cy}G$AC^=q.|<]'Y f;?Lesw fY,wQ3j.sf9`:1ro-C:-epΥb=R]aXymrwY$H \XIIppuga^O8]>ڟ/q9\`[h@@@@@AD QD*JA(!ED,j#,6n3mu<6ΚV#ѽKƆx}o'OG_F>6vq8d35tϏ<37;jC!.I~Ϸ\=s_{]MMx.j#kI"#ڔmi8,kܡIˊ˝ϼ|Nn\ӏ 9]ٺ6SB)N,LyZXUmaΧxpS^Ǿ]sviɒ4ȩa{iUfgK# n7/}ּPT|v-+aW}7kfܞlziO)$!~..' I J3\)EZ(Ң5TJ P (UQ@QDR("Eި1E(h R%@@A!P!D+Q%VWkJʖ/ +._'<{z4PS |Q]/wM77z5u$Ef|wμkG Ritkwy~y78 WX\[lR{s޽:I˖s.5) P"J Q@@@@AQJ*  UEQEB @A4A&A&@B(% DT`p\5i!a2iri[+|M\x&[bx ir+oVzQI- ?JiZǟ# LSX:@>kWnL~V/Z;0 [k7 G-/K5YT}Wj1 QU*(AUW)p`arjS+|m8Ksk\dw̼HÉsݕ@՚_wl{Ŏ^eܵ:{ t=gcOi`I gxFmhXL/Bzx *ɖAKt0g*nP̪m~=Y5Z#.H58e\փ~r+ӣo2  ~O/n\ E T( j8蕒XKNƼ_{䕯EPEQDQA% MA4@A% B U (!MDUU DI  *$ kQPV֌UxBbӸֽSX6`~W\[tɱHn k]eZu :V;Phj?^~ 1茿6":ɍ[Bq/?7Z۫fLʂm,O4fv-ZG1Q's>Ů  Bhb1I#M8១i1 `q*a2n5u}v^mlF:˳WY}ےt_y{tPSHWړn\NZZqsH\I\m{u`àઈQRD)+iU2!KU(QPD  *QJ *4(h1@QEMUDdZ*J-CDɂB *0IXi*(D PB P(%TBTQ@ UP(D (Q$UTdh5pe}H.-)5D8QD LU\j)EQPBUQD o=Q#L(@-Y/>~, vkCA+_/כ?OL{}aVy@#?+ v3ѧ#jwI$z0F+ɽ ha˵HMi#W,ݺÏqL쁮 Vk71.tp<]F`N7<Ʉ }z^95'V*TTQ@@@@@@@A!Q *A]6 9PWI_zK>?{2: 4/3SfE (p_}A(* AE(DP((@@A%*&*(E%PPB @Q9"!EP@J TUAA!DEQvVlek0[VX<@vF6 8zkŮdcMrZɡ+_kN['VlolYkY[Vfɧ/Vxɇm&^Gqnq$zFC})u>ۛN\vpʴFljB#8;^cЮ|$k'V-ekN\Yk<;P᝚{UN2A#9`"GKu}G'?y.iHj^A8np*T,#%55R! V! hںT\EA`* E@&PtN )%4DP SV ,2QT\Z\`D0e!!"P@QV-LA$*(V Pd*UPP SU-S JEE QPP((DD(REP( Rc4sPVQJUEB(Q@@@TJ ('5A U]aު*qÂU5QRI4E\T&2BHҢ A*%Tz(nqFn$q=zWcycF˒4eWѹ`})NoncKqʇ'WR9MuL\^;YkndcvVܛ ;"h@WIŶͿ>d-t!AiEMf:}nr!(TETdcHp-F,{+x 9~ooO}^jlW2_ok&/~he4`UwK5ޭy0i]@Wr*TTR)D PB @@E@UPB*Q * @TP ! "% A&Lմ+0bJj VՌiv⼞[xlG҈y@Tj@66b˩kߩ۹y<>uuboSC#ڼOVv{Girŕ [skM>*aε]+i40ïGܔ⼗˓6vPq^[h=^fg0\+{3}\G:2?`dA|˶ܧey-<2 Ӌpݻ5f ~*'<#̆%L$J& Zi:bkX[ĎH2OJFɥ *v" i4DB*TSJ҆PX(Ҙ2LM()e YF+Xg*1Rŕ^(-**q*PNjGUT@QLMCR TX PE(B8⢤ʠJҊ(OUE[IW  R. *Hjv& ISQ0Aj`ȂPH %\&Wr8,ԦR .Q0e-QPB *$ 2 -TM R$ TzPTA!UE(@DJ %T(AUU Uij5\,(UD9)R!E@ETUQEHU B"Uer)+^Yǘ8}<4VAg~ |$ =*6\ CAc^[xqJn\nn?kD *J䁦fKJᜅTXԬ0R(*$1pn&kve^q 9{Kޫm}fG#Hҵ>Υۋoɼ_u\  ^S5YiܾC,8.4蓫ͣ,<@䂤(ҋҙ DiJ`ʤ(*U v ET (($* KN8W (2P!i̡Yi`P@ ؊h@""DHU ( 5U-iQJfQ  *&  +j1ka(9YnE1_"qݹ{-i)g6a-`cc]BWSS˿h>^fpGW.[W߾_GN̖&$u*driLsZ1Era@<6#JxriwI<~]:SEh@<ɑ?~_KK~?.f]dꐯ{fF0*ŹQT`Z^h׳aQkV DQkQqg%>P P4(";VIobaT.EB @*&*S+`0UJ ಪ(JjMjYmm S**2[@A' Uق(@8(@0DAA!iE`%( &)i#aDE#I *4*īwYBAPJPA *ar*TDVA!LqC)"R#J"0L`,gK3bTQp9WMT\6F0dИ\Ie`d-C - `YlH$"%P@@AU4UDP"%PA(*wj+jU0ST8 *RZ" 4(U"TT**Qg"QW842kha8%=o]5uoKOaÏs/ZB^? &ceTshJ$-I"R Afq4V(@AeaeEEVH-3#ish$-Եߕ׶l4{k1-Ηpɡy|S꼧umtVx#c^w>8Yi|%uηLn:bq W}73{W ҽl+ƪ*E*Pp~MJΩn 1X땕CEMBڡ 0e&QPQ@hIEi$*PA( -V"UPHA'A`E*j*8 EREUjB@ @**PE2@-J*f5Q."($ Q%TJ@@@@"UDE. +ʳkz  ΫmY˭tU&DNR9 ۪Y7O>|i=8`C`Hte#&c7/1{\tftdǤB Âj47'{]{y&1]5uBgo}V\GdFLJ TbwC\ ,VUbu*JѲe\|Q0 LQbQS &hHVC~"4(Ey (ٛ "@c.S-MpUQTTL*QS5A&`*֒9E*\D)UBhefźRL!!2F2AAusW)WB]CtYh2Xd) Q@UCR.!PQDDEXQRڕ!0d +i!TKEUSd bH+J("$`ˠ-af4!,%TpQr= $0Y” ((US K,bVCʺ;Rxv,{Uzw D@+Qpk(V)DEB&@VTpQ"CJ[ǂLQPrTڄ2rDqA5 JE'P@UHEE4pL&U MVFzA`rUxZ#f?#{zf2''P9acyaֶ J5bt-&6ƌȭf_=FN =?ӆvs]q&<د_d6B@[RQfJ6'몠(V5 g,nQH5Qju⊶0@5*b PЮb" n qDSFH pL&Vt,} VN,+LTZņ ؓeCh)2p jN%Q$Wv*ub0UH*5YA5QD ITGE=T `jQ@!Ʉ45 *,UFԫ8MB&""!RUDAIR0䋔b QXm `s}jr5B5nY. hv+cMzj7Q5+w+w. 23jU+EZ )E5ra{ eBaBTU# &Q H5A`U STkqj^XFPKUJ*X8SYU*J*TTe#DDE4B(B"H*3NuRBW ZvܣƲ@UDP( 4JqA* QQ pDI*B((+EjQ`rU*dltjFm_,D`QrH^sc2Az0Ze4QQ ()Ke4J]ĩ0ec׆ HBOu^cܺmH(D4A]GS[+m[yq\Jn- ap>)O\NךN;D8A/ooܼu9}G3,Q -C!TFS_{B+¨-9`e-xva\,$ 3RVTUiLh3DKd'KJۚ,8Ê :e&#JBa< Ɗa5Hū}KQ*˜ʄTڥT4C(SWlD f4L.R֚+ԖbLJ2PqA-μ%I%Q`U\U,L5ˆJ0a2R YȡUrU0e< (r+- 0vR&iLH5Q(Q P4AnTCF*BDZ(Y f[جJ( (EEDEfYj܌ZjF-m0 7o=l۶W,cK\HkFܜyq|M/nmp}nRԆYG3[Z۹?$6:I̛f6ͰLS]WY֯z\GZҘaՂ{(nn':).뗚<2DK }mOI/Yfb-^akiItcl4հ" E¤U:{H4WŬ'UDD+AQV"U4§{P 2؄̊H]Hahdъ aZPZMj ̪H9(HjQ-C җ;?W90A -:%ЮL#YL;DT̒G0g eB*AfUGPX}jKS iL.QDB4W)PT,(6BYI%((D]QTɓ VR]\ S& I UT[XU(ppYE h%*$ Ђk1Ao{d=UKV3F0V%WةDZf֦o&LIF%,YpeS+F-1GM)jRrA84+-QR K*arb$,⭉6PUPhe2`TɄDkFlI4&"#B\Yr4!M$䩔(d`S UQ8" 4& *TiQQTTX+1㒲%c]*hRZ+LX㒨" ՌM"bP *((( `@Yު(sYi9Q:) !ARQ A\0[ ed$D Le!jUY  na\VkqBpITAsQr؎s "Z$.?.oQ5z&殜iɩ r]UEXCchA WW,ܺOz!`RM8.\ݰz龕>o'Oq|k&Æ'+ZypRTYbKuqe]&Sk/S&Ʉ%S E(*EJ`eKZDdf`X⥦YtK]L,HU,*N*䶥VXkSPAY!**kÊ<ڸQ UQR\!EAr(\`j2 g! 0QP TF E)\XK *!Qq%Dar*4*jTVY4TqZ9CLBBzL/՚Y¤H PFcvՅxd*EN * jJR"f0Ԥ*i#*. Dbb8sRDfU+-eHƎ㥡-=aخ^\[LpSNYfX\"ZP&r܊2LW LT *ҴmUWc{URH*‹67*A:0jCsi%@(DMPU@ EA@ڪ3\Fbx$-iK6QSDC,ArfECoaA"DTXB`h8b)؀Eq+EEXw %2K@LD '${BA-= 8ŽTRS fQR4GQm=2\\AdEKi*`j}*U#Af9˅*p[~&Vl`+Xg! ;ZLn'2i$WXe[{G9$:5Wh2R_T\HpZgڭIQV QbuNY+Yg9:|#?oyӀCZFUUTVhp[lCHrH,p"1Yy4e4T(Fq eq@j*JAT2G*Xq$i=eBN?ZYI* ( k*21= u\ƇU&j7BLPbP)ni>sze<<]ڿI^(EWIj,PЂTYRn"PP ƪ*E e2MIEDYH*i[^+Jar+riL.M(e 5\((<XvECҵ&**LBYY:Aja2 `U`(Pw*4 car0+-2P[EEUeJg]*Kq*&j*5QC 4amSP*YbB 抑DC\W #rR'w096: u5ުgsu}俟xCA+$duZGӣ_7LtGk)osZh[RR9FZ\EczxeɹWFI8^4+go^nYwǀZs~YzÖX(hj"ZS XKB˦U,:GP tYis.㼨^~Q4c {Rz{}>Ur`Nˍ}-pzq]}( 12EHUD{Qi MH Dʅ;SNhʡQ(Sb J*q LD2QP%S&5q LRµEU梪[\8?REEJ  JeQ-DKUI J*PI PPKhp%jEObЪ8Qª*@D ( "U B @Df Ĩx'ХXt *aBs(+N%FpYڦӱT 2afWV% *P4& 0e8B,%­* l`cRas9PHL.QN*)J*R*((A!@PiA. x*PZfbs9*"qj@90P(S1eGTVUQk%JEIDTcAb3W `]rW *%0ZU +ڈ@ 26a*囫%0XS$i`EE0 6"ФZ L*דk kvNZ8H!;ԫ n)@Kfp*HiekLgخ"5! IeePDd܏Ȫ YeXꅊ)ڂ-2ʦ)$ؒ5HbZ(SW Z9ܪeVA$cDcZYiW mߖ ig҆U-ǵE; 9Rvt݊噫Zb\붸Uh4%[*^A$C&sxथ+5pZ8_Vp+LU&#Tk7rW 8i R#x /Y/bW|\sHBT2(8-9Z XU-~Ld;k#{8"TI#4TdZj1PJE"$׽QŊހ\pENL9*e8W*UEAU8P הλjB3Yi8w-F*-Q{5P8d¯a*X QjNQ`H,R 8b`0FJXLh+Nv gĘcpUF(!ULPT-0ꬷVbڪ*AL֘4Xڱ|{ۚL1zu{#CinG=Kw#Hd>Gi_3=ޛc{\_w-6н qà ncvzɷۧg 6m:2Njƽ 4֯k_=5\HtK28 Վ7׋km?[ŷI d| ]$'eVYT0NpILKE )*\HV8HTK9|tmxbՋkRZ4(-EPTq )A`S QBiWԤJ`㒊"ɕ¢%CTX<`FXvYDЬJAQM8`LA:ULQd* h̨E( QR\P1TQTEj jL qQRtС+˒7 Pꌔ)Uq(Y)ZW$0**ԢH*UT2o3AϢZHQm 8,Ἤpʲ:O&k?~ĊM8QV(depPE)D^& uiln1FuKq=dkSQ@+hD=*A 㒨ӗԷ0)T*HcHԌɖi Բҥ.Pх-K]DG:)"˚-C5 ƪb`C) 栝E\EETUg+зwXQ0؂ ӡS eR0e!`Afj;RdQTpYE5s($bs{kRv̮דYj #5RfsuZ3C*K! ͍m1]2uRGEsYtVQVU0!TH!)h e.>c,:P" ar B)5**@VKx P*m2Qrx VEG.^J$2Dc4<8r\gd5UÝَG kޣR5i8cbQS,#\&R֖$KV8D.(,9ƕU0zInW sc܌:pȳQ.8ҫ.׳dZq"XqgtYS%\+)XX4TPe]0Zrw Jֵ@Bganj,#w2ٚyp?bgεt׵GLW0;X˸;KE2HVVh"|)P7{9kZ绿lnywu`gZIqfs1ʸ÷.b;ڏk 9ѓFnZzo/޾?ouۊ{w;ĭx_7NN-^ywV؀B?Sn?oOg]} ~vscҷ,pҴJHUtTarW6)Z]G%f+6/Qi0c0Vf%[B#B* Yh8*e~(0;%+r$h{gJv3-oyXG|d,A4{Bh8dKW+LP"Z >-…@S eGw,AI8+'L֊`쎇jFm_A.Ү+>Y3Ch֪JT?k\$ Q5)+L"FT.,Z9(m1BV3qn 0Ud&L\,n55Yj%bCULڌIZe:81v,2O 2VRA5/ -$PT\!qBŃk&X_ lt,ȫ"Z\3PUkL:LE 8o1fpdd Y+#7fJ)ZaV\j5Ɩ7Jі*ev.Ha:x0c{ ͍ʖ0DWW=g?0͸KKusjL/rfjNJvÀCf,!)^J(ܘgq482i8XHô XȠõM\9"%bVrܪ4aWe2V.+3y!W:PB+qToZj8,(88 *pdH 0@eC*3?R1ƪ1QSip9c[J51xqLb2yO,ܾB;`46 tN a唼8bV%АӁ0fb5AQSQ()5$n>+Rv-Fj\'P04VYSPQDZf*(ejaɉf]"-+0TSA c5,Q[0[qq 8j!(a!`S.F:rXIxϏ/%{R:[͎m3a\wr羝?ս "Ꭴivyqv,?nrͫM(ڻi鴓{\fǙӵz&vn1S Ddj]3"mO2e3NGi(-GFYrs]"ZԐ %̣C5CP9GM݅ECSXc) $6/Y|tUúҠjSQ$ `Lt`#4,ǵVmx|m~I݈o 5[SBhM冊X޻AS :jLP L#L&Q#)*Ub=X:ؕdKLa$t50Np@UE[JL0QAުKiT(MrA&%UePңKL@+R8Q `$62A@(  =KZ-h#%Q\bT;Рb-Aܬc~MJEpϟDKnփVHԱqЩlEkE\c-pk!k]ǽS8c8,%H[H5'D]!*+R4e:-3kڢq1=YȀJs*ki\8ERte(cňF آ;%dfػM9*gIUrFQIYB!ZBi!TCXrL.Fd@Zg[-.*Frӹ S xGВ&Xmi.%0jK`(FPSsqnrkE\I%YmCx(UYH#4[Ցf;@;*Fv[G]E\9a!TfVأzca#@QmYծݑеl0(pr>*U[n Vuݬ]4֦fTJ"ZTDg1FGܣv?BӍf0o2 'ثVXSJ#ZH6 桂kG2qN*PʅPu#] =UQ2Xco#j[ b"eM*5FA3ErnjYJgުI7`pQ#: $ ]:8 7FBG1*.4 HR5+q ت]40P%\3v0LDeH\3®scIUkYtO*;N/qĪQbH(fU͕tYC4FWZqPZ,L elըd00*Ĭ6ҡGLLTE>UTGu0AG(A5AM-<o502LAb2)1+:50Ic(0Yа& LFU0e)L.RDem5U2P樳Q)D3$*Qrojk&BqiaE%[xk}7[VJpEH%Y\nkNb VqDTk 8:dbVUL75A J`(!^u,Ams9*1R{¨^ MM||Cj `} hJ-\*XW(}*U$@i)Ѩ"gkT\[LIU!PC06&*pRTWFGr\ L(U5T40eZarUd-?RSA!H 0) sF5D< 0T V,…ڹk\0b\9 Ĩ~3ШZ*J0ʽRA$caCx1m4b)^Qbfj1s 7C*Y!f1pL3vUqn)bŠ7hZEQVpUYLT"u*sp LB.MJFo]`uZB ff0(-'ңHʵ(W0Fe!h58!85„!3 0`19Ǵ=!/)p?Ro3QjzT\smXq<I>8jN$gFvOjkb7vvVH8,v05*zLXMZ OԦW#õUTFAQ4.՗^bʹţتelSnjۺgڤmc3[(cvA-)9YBeVkb4+3\ YPjIXm8ٯ,!ce.nձe+Xr,AmRͫCUy1|9*a&hP ደ8F=NdYe(…pQV UfQܫ}(tׂa|Y֍h9fS 7GlI#BlSKNF #Z.p##-ksQվ&F rzS)*jj5qQv>GЩ$GP 5EAy<+W% 26GEl8S@f0C+G*8 3ƴr9O$fmpU넂(V p%JMMV++KIJֵN!5dNS y sP V ”# # >HŊ6j*ɨ05IX_Q}(-4T*amF PʅQA-MQ/T2r JT4DZ܆PZF#"M`fhW µYXEYTCĚՕ,]5U"z.&y7ؘ<*aXG2WU8(VL-5q%InZTQ (H^I&#YKgء0WīTX1=A=XxQ=1Ra^LԅgulWsyn+]RcXe4# *u3T!V38E0RL*vؐST 4PqAn*2L'0AAaU0eP0YTRh$+@DNy*֊pU-deܫ LXGJS   jV2fX! *A&ʴpTZkUw`!-a4̎LD{S yCJyFʽ*$)WFhJj\GQT:T*C8a&2h WFZTʻ@ c4q 4&!@J'/DiĜLYM\B1^tBkצ*λ寣BIe"edcK@F-[$JՀpBO` 63 ӐFHRq(yeI {7#[+U2ߎ;iUrکxG#0_|( * 8j"1#AT2aQFM*jPYxwo-b,n Z(|HXࡋGi&+dD> W.噛jqa҇u2Iޣ!11weԹ]Y,cmUqa4 ,My7B7% D2:VE6G0nqM%]FC\NJHC,f[`8Tvn Q  d+#Ћie5BjŢ>Lnp1{`F_R3 qb&b™S8XS*u6kf\P+h5iP UqXJ7V\ADΣR>1D3W.*.VQ^1 uExL5ܔt1=I)aL˜'-m.p 7_ӫ^S\uQ^`cMH2qO(xi?RSY)CtT޹U)UmfJkio+gR4?)ƴօfj`z\Jcڃ+'Vugd'b=b,ţ"2bJqFp N9݊2 &Jig*8B.Y`µMe\LTvӤRqEI5Tda/ʼQӪ1TjYPWQsr5ż*9V' tFD \jvd4PŶfvJ/bi8*זb@pEna,\ ^VJc@`لN*:gx)-(@P]VdT U#dӀU1N9"]YdpL5{i$fs6X'%YFE[b3%U19A4ЊpEY.PMrEk4ҶX!ZIwkqrul?dcZ- yxoŦzyCƂ*bU iF 3yTqic|EչjnpV\z1g)l$SB3EZ8kf1>y k#ish/uesmQ*##q@$Zwf%ݮٷX$j4|z޲lL)76I%C.>/Ujm+F1r4ൗ?ʧVfPV/vWyٕx*oVFC^*vd1W5XX[SܘO5@F|h94pBmͥ5QFX4Do\1CZ4L5c^RԺYP"MGf;I# EV\P4.oO *sB%⩗I4ڋd{Yqӕ;S-MV5&LH&0K#jʊ¤PJ!udhzU`Ƽh:*Tѧk*Qrך0+:X)S J0[՞'\Nk %0yG+EfNv>&15CĪndjmXE{xUWZ]½ج[ŃA{Z=g4袹'-d590QE]e{u`()Gr:MĬ{k]NpC]lSGNʘEʺH]3bQTH!0U\-[lv.,CdPi糩̼ie;}~{=hysS۫Tc?6q-Nmv'n)Bc4 ͶknƃJ⎳kX0F#uc3kw`H6Ln׹=׽|}8Ǘ߶݂]su6vui6,eܵ-qtF?s=~Vk9W$ǯ_gg}=+)]m. Co$za3OzG=yx45o|2]q::ݫj>e-ob8lYlAk h!ļ?K}(~d7+9eWS[7^6ҹ'YkqvEMjx+ti6k{9׻EՌ !Gp«RukMm-sѼR{KN9`ԕlfn*ۆ5֨96!]5wL12:Sɵܠ~5'F8jc%mygM0[nkMm6vhuo36(L6y}q6~Kc>[5xs:=@yy[,N|W7I).#N~U]zom/d7D R5hXz'inbUgMb zW_4cz>do=Y#ܬ.v#cs5 3F}^mvXv<֚pᒬe$+ qpb1fCP0|9q$0,!;B  vd|9a4 ӱS+0Q 3f,wVVļF4(ֳZ>F9&f8m%f[\hUsa4Nn ⣮g4n@AUX|ϸ 毶5hǨzZh˽ "S} %SrSKbݨkmsKkM> {ϕ,w_3IWΓoKzy|#Ѥ~޿-]l֏trGr\-c>VQr.E͔U[&GjFoowOMQߖ *6X4v_.7 xsvci^۵˩gc^^Mou#` X_ָ|z"cќuxlޮ^ݪ C $jn]G|27rۣܼehalrF=I.mo7xy=^.5vׇ{O-m v Y8;Ԓ:5ѵ[y<ug"x6%z/\>/Sț$pK 01vO9>^ Žs7ymٝ)Xo G c\3T<Oz稒f KLm~,Ln wM16񵺿z=ܾmWrfnڿVj :_sxm6^n$bBO,n~,)3;q{5z5e|R׏YT-NtQ6KooR8H`՝Փ/]Nyxlk;u:ُu+L?sX,:[&@a7湼2syA}&F\dk D['3:_?$_;OUfz/[2y~{mj tgKk9h}o kͮ%pێHJtgznVh @<×:pEi/b$@@¼Q}{yJ}"a.nze׮MOsӥylͽFÅ呑L&^~3[tOX6;-g3u`3vg7s2=r-m}gG Tz2> Cu7SU'RQE 5FR9҉uqV.Rl4 \̲5#2UJaVtL$gBYXfiߒ\D9 åO*n>nbٶ]! h ;kW=LmuF76ì)#i_̊7uYhx&û̘n 6wHyc $R4`xkIGO%.(B:dVm@!-wgw^ZXI!Uk  7)n'F@F4hdZ i4u*sh!໑#["Z1*W(Da#%s#>sna025cAFʽNtm3qD`s=s/O͡pۚN{?ݺ{>+;ys ,dQŤL}G>I$lOvk4i^}Uޞ_o<]#ͽ68X7w2Y鸆Uo\LN=xܸzο ]o^8eՔ7ut"nKX?[Z2x=../\y8n|F[0($e%{}U{kf k˼޲/I Я M>+^9> |&Z&Ϡ|_O5jI$_S!s܌kɝ^;3< ;ͷZDcd=Ko<\ܯkxn׻Y=^aoM٭,΍e'&o{&l&[׳ʏ3^֭۷IH>,5Y/LNͣ6Wf=lqd=6ތ&IC>Yѫ+/t]tóy2[崺MmXgs=.{og|~-Gv6㕷Xd}Camg|4ܬr鶺37ߕ^e4}wmoڼ[uq͆a6h Һkf9lõ2,k] C$,ag׻6S)C=y'`|vcczOIUᾫLvl콲[imsu˙shC:d3Dz/L6vK3MܣAԶ7:d8xW7<Ǐ]i7;-ѳPvѮv5ϓm}&s^,ߋ⟼vOo$,]b,,-"=kY?+ +'oO.s+.؏ ̓mmsn2>Dqe!5"FGONlн_'\6輁B7Z{}їKjN\ ]kClG[\ N|5I6ޫN736:4O'I{K>V}=V;rl춉a{hǰN;[}=x0u55%kZDL`o7MNmz*̥y {-1/gʍ12\W lE%4.N+W]x8g|[#A3_oזQO^;׭o:-oG_Ҿb#tՅ Lp#fcogĺq~.[bt^ sG]>whu9 EO_lyN̈ʋ<\xlcI-q#Fs 8{So7/4I v}r:7i0Ԋs}3ZNO^ke6٣Vꗬ:@־mO++wIgf|;X Q\u@'KNujfvyv2?6n v%9c}5gmy;ߖd{#K^>Tח]ǜx+1DSP"z5qRI)uFѱ*c;t_{I.M6ba ȵ͡Ҧ#gvuh=i^?cAۀF(;k` Am,84+#5#{n.adBԼ4:NѾ\2sx^>]Aw.FcL-&pӦ^;<>)߅ =k?.̸sM;88vzo[]rfd{mu7ﺈoo9 n?[_V>[}=|]ټ2hH nF葝(e]O/?<>/ifݶ^Mݣ_1 gkZ=]PҾ9#N3vxoގO ,q;w! TѺ-Z%#WN-r_ygON{GB#l\эG)!mZw#}L:*yKe[JtQStN]w~;=RyA:ηvqif?Ku˷.}m}L=kYds΃{_^}nӻ{W])$ČXXoY/W;Hghi 7v.voQ+{]lc}]*^]6i pܬYpLZ٭v. c<-roϬʜ~fVd ȒLɬ7L,խ= 귷jpk#\k%nv>yZ QmxߖV]&oW]<|?vb -Z}V6zַXY>ok/]\!89u v_lq{9v`6rjR"#a +է5hYkz_ޢxV۾K9dtpۙ|OW.:;_W&ZóIHoV7!&6ikh{5?Ս8wgwYm&wGU06>Y{eN}D㘦~O|n ۽[ X`1&k54\gK-xle/ޖm{EeCC[$Uck;N}qFז~Vyo#fu BV\ٺRx4^Ghzkn3ӎθ}fkn &˨!h6WSwMh/gxvkoӧ]m27Wɩ܏BN9]}^d_gG-7X .o#*=|{s >FT4ryr{x$6VR/졞M-mm/6蹲0?u4z^/[Nj)~uM n߷0IDxa26~lԾ7޿=<|:#uG<;SY˫-:yvFVY\z}Nھ JJ-%:4u 4c\I?÷gq磷ȏ5m<\nYl-x-/Fck cz\|7Ynaܰ\uHzz:cn| l ZF^(~˹_Qqm=y͂{Wk4/kZO.w7]fc}mi bRc´[m׺:E#ggrF.Xh7,%4?X]We6:>Uyҷduɀ4ɤi]>77ťk[[fh=zzʳwvƤX=;)ٶ*mn]1k!Km3OWߚ㯿^Ww+~E(f6 !$\RBWfx)ŦݾוW`Uǘ.˻7b[+u嵭gV_rI|cn=z_|̿%mm<<۽>Xшaa(![~^yӧNwI+\A[}ͤrۄat[^W գ/WQեymsף*|;_">魒f[[8nkK5G^;G? {9\_v6n?U4gG_~fR%Ynfwm[,ptէ189Fns|/moßY}/3>fSLn{MThqͫ[mt/`:Vuiv8bq1Oez4w|}4,޺?OVjt]K55ۯgW>c۳˃!RG-筥ik4uW7>fh?/Z]GVGJu}=ysYiYynsK|YXI=/]Nbߐ>ru#^P1'fKZgz'A5u gB{ڨ^]vb|? ]ANº[E,mə-k}#hk49o7:15Z0{ylT4If-xeVzt ,Kcw3OVסj-9.q~5y[[[6sb8۾Yg^76Ep03Igwu/>^$|ol?(mv?ty5:Y%fM-o/-l=uWat&AXS<5қi!Ͷ6[N1-k@#?&l>7^Ls+6˸y~#e-6[,:[IԦMzՙ#>\Z\廽s|5e,I=fghӭX_k_%2[3n"۷xZ_[8sWKz F;kkuMv1Ѡ3\EtwF8%uyvN>-+ah:es@--^L绡42K8sǨ;I;JgtrF1ih!dbUZchht ?sOi{xD1 \\Kbhiu h5ms#t3s^@Z  lzy;ƮQ7\?iwIG ys\cef\_$nR9ji.fZ.H(mp>m%>6O;0(9 м,/YqƆNz@l֖V&&g =y3'4O.NGnneۉo,Ͻ=6(s͏S%:-:WOQ{wM'}ݔOFF9}_zg9:(7xekD\HceѮ=mH\<\m&n󗅷.g ;f'–y./C K#kl齞 <<mnm~=7ھM?.^dt,oG+cdDKt4{ti1/5߱_/|v$RԈa\$=3gs}n-f3{o_7g|kmV㴇Iskb.,H=?tߓQ]ѷۅѣ-^՚vG4o#ek\eMno[]NԋwE 8 Xf{=87o'~^z/{{SQOp ܮv믁]K6bmMԂgΑ6}8L~c9<Fz/_Xݾy[u/6ExrA_S]1c&ѳ\ {n:rCkZ:-H;ZkM̝z[ז-]/CDtWχw~w?fq3r(i{#ELtGdRk VvXtYӳ՟{;mݩN]sUiLQo]EN_'>' %nKig+K}7.DBf9w?n-Xs 66NM1?.:gL|^oeY(L6O=N9/?ۏYetmzw)~X$yp]41 㞷g{;[+V[@bv$$WŦ%Ďлz>+Xⷳoӧ6V޾;[C\ql9굷';p?&7KXfg6I,isb0\[I,N+mIg=2L57 -\_M99sq<{9v;#,4 :f2Jx߫]n^V|3; |DZll{)lNE8LWˣ̚/}3vk}KڹJc1P0gOwyy_<^hm/=uBc1_ΎO]irm&p|Sn{'wY`}9?R{z_ޞ,=[X[3s@d;ZsѺNn}z.v.γ/1uZawO+ HxdoUms1t+i~ &Ƹ֭dd!t hqZq]YXZxH8|\3yzdr|iWO֎_CVaCq周Hjiޫ̶_9Ǔo7양ht,;Sӷ$⾻ߒ~H6rQ#hTbHۮXE~Lkt.lw;iI0Rs#W3>7J|Il/_<|e6۴[j0ծe=|T|9'5tXObu۶HCZei]5/WN9^+gB䏜-0myy4|gIw]fz/>Ň'Xd 2k55_7Mrzo.<'踵St ^Kk+/t}3t'Hɭc엪AtrԵs.zQ?o/[I-'eaxca3u[t{V9=WoMx?9#ݡl&Yn,|'Nt}gO̿+V߃J/XS&Is^o?|_,/7?-mgokf#g֘X&K4z~Fx=zsxw{qێ^V*6_(2yϿCYI ~on*gk;6gvpM0//#=L|zV}7X<+o_>;ƵꇵҳceXc8?_;szɣىYXՍLkY]z|MOMe}iy'w1Z[r c<\w޴Hy>gf]{<盢G`IF w{@1Gg>fI'Z/k_tNgs}o+/<7"9]bI,,s:f>Nl7].Wͥg+?˾?w9rNY<'GS,ԍ?gqi/z~^=Wa$f5- ֶwSGhv<2R.gYעh۶n~wMeɏw+c:fըnil^N_2|݃eDC4]1+Frswm'FR7zsa98ψTek5~htd](lE.'@꘢jw484'^5z)};Fw1CNbkK WG?s\=<9|G۶2oݔ{޽9 }}>%w\o]1;ϜWs\MgrdA'}>b($^/] 44>`o& wVTl4YLзO+]XֿJ8Zmw# /6\ۋh}یcK58;m;C5j NgN~;^LBd0G7 /8tY+E̻&ݶV3 Fs+~iW^lk0Lv%H.@jboj'''.nK}ɶvlF-,)Z Z&|9ylώ6Mx$~eX2w=sg >W\v˓77l62x\y6v'<{'Omu5:VV]ަOko??lBm%h-$x_O0sF޾Iyk[yhvs7TEr-+z6x6Ȼ wvEH+]g&~}ɛk,22VE3-'XwpwA+eyp2plͥԝ}ao3P9*+ui_iLvwg|ѷ3uڭuϙ/,vWokzveܾGygA&;jFC. QھNOڮ霱?'Olr{m{>77Aa.۩P $Fkhӣcחk%/V7r~u1:/.mnD,˴p_,1v[ܳެs/Hu$4;SKmˎ,nf6g]/.vۨ%=,om#5<}m+聯lgo/74[< :;[cLas\N2gl-~nƼ^OtfFZVi,s _[+]k3iev.wQ^YkKc_k9_$OHM?6>+'3&*ckg?YFj;HmX Y5hX$mm{۟lz}uy2y+nsPz\|˜[v5yIn1Nqks[_7r>V_}er{5+{k?/kݤonq<766_fzyWi-Ykg dFI%-իyW.MV,$bNKr APy3|w[(4< .=Mqqg+iڹǮ?3m&VI]^v}4/~^m{ԎFHx>:Խ_imnum_n76 Chs|N{yuK8~e&q7/7c$~m!9tI \8k]'\W$lƿo=祏0E%/F岻C9%c]>MzzϞy^|{{VպD$|bv9=Qd~:zuy<0yok+. _.O^WpM潬Wli#/IX 9)l̍Lszu5uG}go puN>H?N}Y#.M{ǟn=7r7v-ٹWh&v=n9: ]uՍt~;_f_!loe[vƾ>MT{=es3wog}5=^a}31BN+]3lW_]kMԻ|>؟/ipq]mnd.nn-8[ԕ4lώH8Ie_+5.{mk/wwqe;pL~S2F:_̸W5ؾ=ecˍyC.#eO4G-]} )m\ 9s7KmM^3^gcnvY#d\^]:?j.1iN_5v-mW`tLV -Zk[_?p]ǫI n{m[so3oH57[tZ\_eK=msK/ĝ"aдdly{ȺM{g;V^k}{zz, u-r7elܜ=h|n!iӡkԺk6khrvMA, {Hw-Ky&<ѮKI?9fsROn>8M,i +^^Iʈ+mi` &SjO^NOs\$s;Φ[V7z?˝<ñE>Y"QGH+^i$raYQ {Ɔ]FZ @{C=ˎf\x78V7)[ ui{%11ڎ&F4@):6@@@@@A2M3nYd 3J<^=U6˙s2 /|:GR\0MA#OC˧nzm2㷧}G2u`z~|86]^˽ɛ㸳c-dKܓ-?Sɴrj]wӼߩe{T|!k5a$P1];z۾D -d$`u+wۻ\eK]q6/ [k}=/^vu/5ˬq{gU9m~]Qu-Օn{YZqgSM1wWNOWw|~@YK6\AᅎWi9/5}q{=q\[$lW2m<>8Һs}rm;Z_c?#l- Uei]5f}y$yfIL4ǴeOrO[v֦&^ElL#hgG+݊--&;bdReucMǼ<yrigxt#{.wmy#f`.$xt۫_XmVqm.Sp6]Wɦ9utj/-]i=9+owm&Iaǫ-7ײm+/OmX;H|Gc\ֵk.l-mLT=֞bؘʿ-z2[tcͫ#K[rwRIaɶg2&LshE7R(ݤ^>eotm|nkRofz'eǖj9`\IqoS:>nwW^M>\)|ۤE: ݧ_J].s]zۇSŰ^ntӁ.Eck-3'/g߈P@@@"6?ԉ'sVvd'OJZ1kw-uۻ䫋sl"FI&-OU{ m1i$͂.#Vzgm5gaslA< ,mqu^՛[p f\Ï_ĻOSxp3yf6L4"vS|Dr=Utok"{O7J;V#&NZӭV'7T}~ޚ^!IP>K[&-cwkO]=K'leǎ@?U6?E|fn+ewYϏF-knVG$1[/[lqR9huX_5ܫϱp6i7m e#卭 {uu[1~,Is'SQpJ=G ¸Д.{[F5?lfTcv;XkGS+P) \PiͳYOp`1x%,i{~ּd_~;7LCuY>DksSqeԚ A\#'S`(KN1x%lbлE tEskdQs?+a~Wonާ9h蹒KmOLGoX\9sg/jm۾Ed>49Q3kjnigɦK׫y*/5:v[|<Qw+? 'o=|`%HacCdcXjE5:hM9R/GCʾToYPN.ws[殺; B R3,gŠ_dW#]}Ԏ]ؽ椆i3J9?>Cpo{[ẽ 0enky<uxn; j,&ݮc4H#4-oUbmeW\l7mm˯#tYh:ULapw\9 ư;\I-ouQ &(+ oۤtvC+Ɨ=k\R=jw;oYWk{7TAcIYC_>e\3;vK_0Es .7ŧķ:Y>7yvsgٛW4ŭc[VNk|kz޻Z3+vM⛕푲gi-d=/>\Z^e?1Oqw{jEitͮL5󟯩w2 +yg˶]lJ hCS"Wn1XhA3L#dhp`es98 ؋Yѯ_kZ ǒI\ N*y9ۦSٛ?k؟#WKaƾxD-ÌDf##CcoScsGФ,%RSXRyWLG.ߗ.ÄeQpw3[V%˴/cݾ\웞݊[v6鏧25i&K^-lǺbrR89ӣC4`aӫKuM?ۓflwLBf"/|b3EUVY`lMvQsFiV.,w[D0ncZ)5ҳٽL; -}tnv֖6GH28}-a0Ѿo_.-nr's[ #oT7_M[XZNv;jN-cqmmY6[I#ͳ 2fng\ԾiZ[L=(F >ۧ.^Xf|v|]<\dq~.,:/2ǝW9o/nPyacKDt\ -OKSiOySI$-Ds|tiu&ofvzq;|ǭ$"ZY#M:&<vbic-"Ay)mWFKkIDЀ!-u:3uXh@AqZܒBE s+6,iͲn##k\[khէjlũ5ЀA߼ol1K k}kڱnn&XMQK#HszoK㙴O {6mpd mi]yK{zy{]ol.g}2@KHD1Z3=:#KS^4\DZsln鉟KkӞGodn,5͜p/c-{49޳Yuכmzez]NdR}m/jBnw4=z'zk$ f)ܺMv۔s4ֶxHhɺ_]=Comzin)ڥ~HOkyuK. ݖo!df+iS=GbĜw}/Gaisn7kN=8^ͽ'.&?}lۢm&+sr1+-S Քmq$oc?yYpewWn}sdd9н|3=]Kk,^9Xf獾{a3G+_#y\O=۾qؼK0tNkZm&%V3tN s XMBF=řpe}Nez<<\ʿk-ɿ7Okw[GۋٮY/ RtI9{]Rzcϑ5m|w]A3cnoկXvoMqz~韷nn_ԗo9>]&ȻNpn#|v`.K.b873~N6ZqS9#P)&wiî7uNv2 |s]#:}WDe-jayu;8zSOFޘOymvWp$ f]a윚 s?zUN>/nr~OdR L ^6x1*2Uǿ PW8i5U}inG *Lzzgej>Y]!SY(H˔(!V !UQ&שǻ$LOj'vyo2`EvPd72NڏL.WdcL/Vw܀56允Uehm hePe/L5vAR`:E0e30xA?ba2s+) TFj\]܊^ tŢBaitpoQs YQJ8}4DA0ReV?JEܽ`LYpS v!!Z;ȮNeHP= TQTyxqƘW ]R i#Q 30f5 ;Pb6i,-]zL8qY2֣[˞:Į5fOVپ-5f_YYYgk Ҋ4qp%\&Hnc7S:& ( >f3 f\ۀ,bW+g"eY4k  d&GFf"p!D[b.a8Z?%S EF< zPl2jTV7҃ FLhe.hw*~~Ʉ=#&J۾#5t? >b\ %t[j_n, VLn]:QV**28и** +DPFPw \@'A$ {Q.4Qb3DA1`m|b QBi>DjՖh,Cފq9[< (ZanHبPe '^AT PpeTF(2n9 Ðs (DuUS v%g-9%ڟB~)7P'PP܆W ~Ю _@q{o.:[{gɼV@@@@@@@@@@@@@@@@ARAZ@@@@@@@@@@&5k hp?W 嶣Mi|"CVX` <0ش"C5mp X\`A2Ll$d Dt-x\}ȟPo5ƺH8 ,iTADCpgQQmtWTVPU5>7qX+˝#$&4v%Օp#Ҫum|\S e͐U-,R4qb,3W !}L(3FZ[\X@1!Ekz9J (a܃1UEtDF>IH,:(G \Fs+ʿ (gk I5Ӈ`Ar̍AQZiΩ,?ZH_ߐa2>C(2spU/yTUϬ~%i<Dx\G5g2ij]qeA##2d# fk*+#$ C./n@zbSIq$״`Y}!dz WO kGpL\[N_$^1pLcvwDhRDXH3(J fUu14 |l ZAlQ `ET h'4BAj  !z PʅUBg@5fh yY>7>(zP )9.U[6W!7Lc$}34`f3 ZXcPcTaEHe!TEET!T uVA`j* Ђ>Q¨h iP(T""Ap( EH(&@Ԃ݈1=֪AB(. **+#\;POZB3w!zXUT5Jh,%:@("hj6`+-XhXӄsHU9lJo<_GQr&KA5L dBdr0z[a|,ܡqNv;S e;keK0KU@@@@ARGr .R;e]Lp q(1iG5?ZWsWz lp |,ծ&W `3ui(25Ye+Nqݵ4ap\GHd& ("  brAFZZI9j9`fT9&{.z,HO`0G1 i;(0?;Id,F(+qP,]GTp}">shAb;>Vn %D8>8cW 7]8VS v>2854Ve8jvz =(()btP-f-BN%hpD;PVFb`,rp{+Tq#c -4ɳAQE*t\'& pcц0JȢ)La% .΃4F+s(7nw>3#@ Ωz1wɈr5DY+{\}AWAEYƕPct,*loF7\D42dӱPǀ" ]rDK_RT^}#2܈Ov kKx]ZbR&ih`n*~2k+(1C,:K IQ$j"""* ARUDjAA@ Ԃ5J"CPKXYТE[I@ҁJ(*\/TTDFE*81%SDhA}8( @@,M8 dUP1NyJ xwh65k e&e {=\% pPE$qqʹ)[Q[!F2Ҧՠ &S (R5"eAZ }eMf`p Zy,ew8T\:N4eK4 zFf`+]mi(*jqB99suEʘ*6js4`&)?J 2Aw7 :W2_NJ pS*AP4ˊ#8-p~NUܨP Ea9** K]4zkq|j\_-Ҧ v>2C w(0e-ڏ0e:zJֳa qs@hY3$-LJҢC*kuTX5iPKc\kދAcS <**TqTPzQ*t #Ш8jPRF ވ80 }(36 ڋ]FV(/G1q'Gm>x`e @wާ[(PC zPcu,= 2vb3@M޳OИ2cS &'2UDI'ց@s eAJ"QS J"*EX9AX8j@x 81A"Q؂*AA1@*xbA@A B( ¡09E3A]AK+؂(J B&8*0F& ESWbFC(jP\""+\ Ti>ZH ]A)m\A>QEYRHƧz Fp ]xE0KnvO>),E{ kI滇aIr[!,<*hUIr,yp#z[TDp5B,^:GOe} yVp7e>&A P[4v`j0l@:j(MPANJ"ӍPcd &,L}jIP.W"&s6JG3t~`-,rEdq * Т) c$Fa8L.GO^e]}k(DO,vVFA.c\3Xlj+C>@A e(,z Jq(@A2$ g$&YZz++cna羿ޢ|4/UW ]O ⨰x5LKjߩ2a Ɇqf5hW mcc) & UH0{t{A9b,żI'UY]k?{{!g͇qp}S3Usv.]?BV/hǿapr tF\ʋ5A! Pq(dP a*LBΪW]E}!w c<(xpԊ5A 4 \iڂ j48 r'k*k]}VE5S+3KxEb\6"'ҲPU5"wOv?\&c;\EEJ K+nSd+&YaΗ~kGkŏ68{~O*܋pwpܭo gئ97bn5[:gyGH]^~f/VhZSVAѵH0@7p *R P:eBUEkN(.EZAvEj Ģ`e"v؆Q v{RaV^S&ۊmEAa=.äR2WPp ", E )S؂uS䂢JQx!`ZjTx 5EAQ@P 5Qu*J$2 (#X(*MPWWj",(p⢲7IA4EA!T(EB.*\vPJ`   jւ5 vhA L AJ 3 dQV'pAG%TA( ܀c8 T@-Ԁ\5 UEMPX%jj-Šs@S'$I  q + -" fO1Ykw'k[GXæXpʟk:^Upn2COYXd] R"5%/e0quY0S ۂwI[NܔXʢU'ڮSUL0?nuj}a\`DaCPDoԠ_Q=ZpTPGST ύ(SŽPfB "%h .((pj!PvJD4Aaނu(PFYނ4#"Ch8׊ ,uFACڂ]hPc5DO1NP@LTT4+"iB,n%̠`sL/\L X?W ؊n0hL5B0[K_Wo1ˉO%nmx5)Ȣ i"1W ݣMՕB}e8 v*2 V:hTj6Qm)NcL([("y*x\ݷBr0\kxLp#OҮRZmH{9PpZaz; -34 .R  fj(@̚((#_ւաPXFH.AA J"u:^ƑA 4 F-"%PVbW* R4`?B +\sA]t¨>UMA((vRu h蠞)@"5hFD %R QP k䊷TyD5"Y@PGPj(*P*2@@@@ PT  (PNT@-E*U** @TXaECނTW TD B("BP4*C זfMx-=kpW Ar\Orh=0).ofs}6HeMWӊ\3X(R "3B@KX?L'X3kЮ?b&$5S оd3ZrUDk@ւ+܈j=8$(($; GA:5qA-E_J5MO=,3ĠP[]Q@r2@3PX8 @ Mj@ * DkJ"QqEAz*5TR&#_}1Uc0!mr-Egu|Mᮙdnx q4p"؈`CMN4⩖pҸᕰ T PkD\'NFTrc1NH*g*:@spkS QXL7Rau&ARS h)VZkm<P}KYl@@@@@@@@@@@AR=%-[xd`FmrT-0oA W& ; w Р8"7Z$+ cĢA$ U ?R U$RpJ  AHit^#D}'QpD 2X0"-[A@"*kD5 樮?Z" D ;PA[TүC 6 ]R) t",GR 0MJH>VE`poQ;a+ϛ(1̫J Gi0ypR`X]|N} 5v\JwXt>Uy6C[I* ).8cOsnRTvt4._MS&nJ5^~d0DTeD[~ z 0P(25T(,x*p c՛PM3Z2 tڂ~ V(h*W OTIAWHZ1ա DLИL N5Apb0@ւ5jA5 H UQ @*  EJ A@@@@(@@A2Q:~sZ14&ЌHP(D }%A4@ҁD (@A5AA5@ԁ5 j@ցkA BrxE*(pv׵PMPCZ  7ʸg-{_@ֵr%7*[\Dhi;Ԃt> ~ { b@ RK!iTAm( P4HAfE[E;hjJ)@"!jj [~LAW$R>#U *:p'zG4T5uĠ41=Zd8w*z_601 >j {0AljTPg_ A`$B*"VB@hD6 T-M23*C]'9 \Kqcq%j{}\RÀÿ4FFE#1û҂jH\Wv* W D kAH"*T U E(&A(!HA@@!A9 QA4@( "PEJ"u"EQ j@ T D WRN%} Aͅp$gB@UWT @+ԂKH4iCZ_IOA&B1O0C)41eⴢ ð ˆ  r@A('J DBD s@8AS?j"R(aG۵IjL*m[R1) @ 4ƥI$#8҅C $ZaE B+ 79(q̂Ucxø!1s둭mUޥrfg,m}'Y-T9i#Jx9*'dn ΢L/dJasmN`cFeZ.XhԫP33R)S TVV@ M5EgebJkWArD pn26[yzQsVm0e]b;uti۩LKǽyiJ~_6hv8ҭ _&q~t0HnZjb`ar{!hWWb㧏f)դWTD[|ή;ҙI̴1fւr9W 4}_Lu~Y_SBŵ cpL/kkJv;M:cءiZ`&Ua ۚD /ЌcD0 JH!u)q4s@UdbS)1N̮So.™0ҍa͗]ښ.$Y,imܦW'j%w&@3?j\0B\C.06T2a%7CG zY;TdjL7!'J *k#3[SBC QR@oGeXYYY*N1m= :"/Vpт(zdPJs"po/u)L-%ԆX)J҂DM H,|:)F" FԈnBar#42 9xØAc@Agz CGj ѹ`($FOU͹vx&L,1ĩ 6͙W ր!@v U!B{A9WЈFzAjc) x 0iE Mҩ807*c@ Ҡ #1h*1\` ՈF%8a_֪227R{@H D(EOm(#aPXFC{4 P(PA xOThx g>ug@. H58䠶V8*A?b 1x 8 R (*G DQ>iB ЁƂ ]Ĕv*(" KA($`(hP|aœ{POHRԨ! 0T h![1C5At CB  (B(Di4h@P4 (P4('J)T@ !JPQA4(@@PN (&P4i@ҁD (&@F (P4i@҂tJB ЁB hBJ dT AR A4܂%@@%@A*(P@(&-PA%D,Am{(PHp* s B(Q5)z' .0=i )*(D QT S>A_i5L,"##D\%$PU!ymP cAaݟjH TAQ;PXFT 0tNހZӝPFw3?R p)J;j L}e壇ژ2'i\XZ(%zPIGւ(d׀XLЁ k ؁Qj#@C;ZiPO(b'40CDBG 22@("(#ѧb:~ A.(` ɄOj:`0&L$@:AzaA~;4 P( UAaiH"J;Yi҂tw:eށwhRL?b ҂z`qENBm)܁BTq9QPB QQ@ARB =#Q*0tb(2thh4Ux"Gj!KJ"t7*4vR1w"a.ʪ8W{⠁9@DOHS+Bd:'":eE3({Jw(Gj 4(P4P4P4iAPN (P4 h@ЁJҁJ (P4 h@ЈhA4 hT4(#t(2:ePFt95&@A5=&Q@{H'A5( Q@ҁD i(P4h 5A:P(D}24x )Q РTv Ъ"" ;B Bjaځ ;P0@õР}!Pô(*'Р;Bʆ Q8vô**;Bô* Tv  a ;BvP /hT(Ђh;~ 7Aooڈior;O/r9{O/rTtA܈7CPGN?Pы!'D} A.ڈaSk2a dvLO8LH0kGgoAoEE#P4ECL}K;4G>bGw֢TAc?A&vMj ,vX87(ڨ7"[igwւ47A!A</j)ځځVUjGh@{~VUj {~ MZځ'[;57AQooڠM[@r4D'(/w}j*5 mNbZS{B;BvC[{B Рkojm@54MT55PP5CS{TCS{URD55SP55@;QMCP MjY܊MPAs{CS;OT"XD57A4 ёA5E5Ё"'XE DEGrA> k @PFA5 ;P*;QL;Q^^9{PO/jGjQڨTvaL;B!hE0ЁQ ШTv Њa*;B!Q^ШTvPô Tv ;BGjGj)Qڢv B Tv*Gh@ a0D0@ GjPQ܁Q܁Q܁PPPPQڢUQQځQځQځQځQځPQځQځQځQ*;BGh@ GhTMGjQځQVB4;Tsingularity-0.30c/data/images/arrow.png0000644000175000017500000000034011574774323021001 0ustar trcarlsontrcarlsonPNG  IHDRh6 pHYs  tIME:mtEXtCommentCreated with The GIMPd%nbKGDDIDAT(c$Ā] h @J>9즠I<1 4HHB>iZFIENDB`singularity-0.30c/data/images/earth_night.jpg0000644000175000017500000205470111574774323022153 0ustar trcarlsontrcarlsonJFIFHHExifMM*C C       ` I !1A"Qa#2qB$3Rbr C%4S&Dc@ !1AQ"a2qBRb#r3$CS ?*'XO9.[pFO =4!-h.94C$4zAw,DǀJw|~AhPFwb @b>A +c2+1&INF+`&CY?B@h Oox!8Rp y_EPWq<E@a7A~B+`,& v~fI@_"7 @fƣ @Q%D;*X$ޯz9*X9,P[( 5MC8>y43"(9*.q( t,qTCRG֨0 e~( x15G P#؞h ?JA45>c4ڀ3@cc( 3@A9,YG4|+$#?Z}(e>8-*HM9ZH>s@Tc'>w${s+`g>}Ƞ$@AonրP>h WP4gE`El j { w,Ƞ+'\ 47ҥ5AP}KUy'v|P x @7ڀn&o]>hs;*wrhs@Iz#vhϹ@Fynh AP@'4O#@ZH%E] y?ޠ1@7P  ϵPh 7ֶv>h@74wހ4h }s@[q@[?_'hϽ9>h@W&$'&>>1yNJnj $4$ O$jF} E,h',xP"% ހP noڀE% @NJ۳@N@7}I@WwZ>h h P|Q|P @A9}P<g*~O3@k:OF?J0027*{1|Kh}@yU Y( ?ӟրlc?@;mG L}"?85,g O#oh“&a`BCCdvh V_h i@֨/,$l` 09 |7G1P#` K[4[N*X/Oj;~`4H?Z g5`D' NPE U"|㚖 ';K4Ll=ր*DC cXB B?Z(˜FG4z੠(C1?56yj+1@]|(&1@  Ղ 5xAzW@7I*)#<+'ulk"?Tӈh {?zn+Eqh ^(ͻ?(YF⢨%F(kDW1#(~=zb9v#Pn,h {;L}PX.0M@bL 'q(4.џ el =>n|5%~P
gz s2J#‱@VP@@Xj,`1s)< iVl2PSX+'=`s*>,~[yXP$ q@A`G[kPǸN( ( `}( ހ fXq@HlVݞ R}k“Vjh #wڭi` 52([8P ɠ fPI5N~h 3(4_-@1怌}(4@[mZ@P‚@(  @XVϵ`@( gVlP/@FE;ր};d{y!h@?5cs@>怮=#@ڀX><A@?9@Z@G@['P(A4E#P@O@3P2PZ= *@r} '4r(9*zh 46yP̋?ڰ fe nj>!qj(nTcSVU??7'T;y%PGa‏o( fD8T@+)uPAf7Pfo5#{TCn#?J .gP {xw ( wCp* >!¨i1㟸wQҥ.[C)@2 Ҕ c @c"?#( @>FOlm)fh|;#ЁU26F@ Uo\~x a=`z?zRwsdzOl@cf#ƀieY~E 6( |eV$45AG(/P/p[Ov}+0I8@>99[PUn)az؏ڀȲrplܕ82Gc%61( 2[~Šqh xD2X~]4Hsx3@c .<G@dXCpʁA1aðڼ`fF߶( ArH0|@Tg>,>%,X!1TI\ $[Rrް @ ~հU-9?Fڀy 0ld8 V@d# 3E![pK cz1P>( l>@Fj|61[~\1k`5s4dxy0y&h \q[< G( 85@ZTPg4k`y9JA@Iq@Uh~68v}9$G4 s+3怶x40 e&ƀƀg#,<2(ր@XV#&PzhǽbVj( +`hG@N>ϵl XP@M\O> jh 怨' @?A@}hP@NM[@@9 P@(G81怰>x-@@P@1]#m#$q@H@4,05k&Gh4GN|y?-Ioh'ms@XɠF@kS@`{H [ހ+`yhgmr2z% ?ϸް s$ql3qEsRps 0<@L.߻ڠ GǏְ >ȠAlj&HAq޶1+pG{h; ?怐c@NA>vzA~€N~a4րǻF|‐ph`~kfc'cP+`gڬ@"!VQDOqFl_#`[#"ʑ׏jX2Q)S&W NeL{0$`}րp?RdPY6FEF} rA`h ѨF2p~ Oq$1)LM+&>6TV{a9h3?pOnHAXIJ" .f`8Q {s2E9$P{i/?j*g?q@m7AP mPy@l{r,v߭0 y4ŰϷ4_ROF 6lP0nϸ -fi ?mրF@Z{ej;>93w[ʞ( #sE V(Z s.Jbf^TPx& m]!<հC>ՠT/@k\pZ ,xA^~G@cڙgC PkC#q'5({ k !`cRsJМn \5A\_@\[")!h /dʞ( +'Px@T8y2-#.q@HSjP#GԠeKhV}P*TmQ'4|Pݷs+B@ v8Zj[g@9zh`}hGl'ְ|( jP h@ZP c~j}J1@MR@-@So٠+_8,cQ@62# O`1X @aeq[1ePi~`G?!]8NȠ/r1@b}(۟C޻9P?Zl܆w9Ѡm{A+!k`Ȳn6AXBy? P !<%h i#q> 'zUw0u7UYؚ #ɠ(5@n~d{U}sQq4HO z11hf9 c|Y*w{`~!B0I5T|V?mVEO9+F a.ǁh>`j.&$`ϐ3@ _"3ROX² g Z5v\|(fO8QR^DTPa_ |?uSP@_$x $10Ƞ:6{k`j|TPQ)?IEJ_(ւ߇)ǰcB ~1RW 599*rh E1h d R(|jy43?J1v@kȮ85pN~lȘTNO@l1@CAPs@d@C~=N~Px2 #'s" &F{bg<{PmP?NʪO@Q: P oڀ)}1@a6n<~~>0=J#?PDv,I@``T` $ENx.9%OjT1%s( h0IPͰ#u'."EC1p@,"AQ@5Q#Oc`̱TB怒 1z@C(XȾԡfT,U\3qгJsP\-yP`0RzD Vf 2 ov_@X\ 1 >&*,gTM ; 怰# |"oQ@] P@ZPϚ`" k`4 x€-g€~1CXgϵa@MghOր2(<-@SMzO3@AbPϚ& b9#`a怮3`~հ[w$@OP1(< P h@WZV s@,'` +PfE@cpg7 7(1xf\P=c9#h?&#&`@۶ߖrG5Q+ \V"3x j&aṖa@HPQWb (Px?2&.`+aUI Y+D w )A9ހC" 4A*( S xOJ  6)<0ȿ18x6цsҥ.,Zx@l(#{2&SG+$}?@;aS/ |[?q– $ \Ni`?^i`jX*֧ Z4WWfq 8V;09'4v*(l˰z~,jW84Z-jRQ@p1K?1`G)`̧A*&#?x>ˊ {Uvnkb2Zk 2@h { 3f7g P@^9YNrh u֬KSi`ۂ -Pu)C}| ?89PP Pہx8( A@ @a 3p2H<]%BB9 HIr-Fy'p( >E X2rpֶt ]ڀ( 0|c,րY>⥂H|?Tdoȭ(q 3lS"`sZA?R(cu\}F+6 FVepK((vr Uc~BW4fP@N@Toh@bğ`( (b|jX.A# @P9ۏP3 +c(Y/p)BDϒx4x1( րlް @X.( 08P$}(f`~`zX#i` Ku}Rh8'p⛅I$lP0<ޖ MunQ2n>X!flϷ(#ި5eAHlaM ,}x+(E`N)@NEeBsP\߀$BF 8Բѱ 0 4'm|20&OAEI|ӏiBh`t4sEe?&4k+!|5-f&FvL6֬P "H(A@c1쏭RSnɨгRrMJdKuNZ%BJ V,RMלH-@Hǽ';G>h g$P4րvR TRvWk"IL?<Ƞ#(  Vb<}ger9-_[>$Ol9>A1E` ‑t}`_‏QA@T'ր xʗ /#@c3j># |@O}3JRd|@|HԢY2(R~'9i@|Őׁ8(R9'u[>|A怅${Pր@GRG` wV;h n+Z(#@F`} /EC*(ێM9/vzdoVck)yA lBZYVlC1e.,65A FN >( Ar@h!O0Xme`/(%ABq@s$Q>&eyA$n?z MOV00-Ǐ6CI R2/wLB,#$@IPPcTe@K!M` (q:o92 4DS,G@e @>PP6n Sx<6‧*m 4xc`<bx3*Sq~^3 瑑6`c]q@JNL( ڀlMlzɴ( =*PVTڀ̌ǒ0h Oh 2(f$r0=зhn?j/όPV0\T~|.~h s`XJ́mS!N?UG^$!ր 0fCr#l Zۖ?.ѯ6f@Ev< PH(Yb@]+/9հfG`Tgj @8ߟV4>222w~&?|RcoЊX ʜo -ߏES@,},V>԰X{Tn>€@{ ŁzwհX @UWg@`q EG eV-j8t0DE[>y]#QHMpv 0?VJ6A|cI܌@H]Jk7%3 E`9%1g1^AM Gګ@ӇJ^c韽D^{(De09;K4-AHqB?.3O1ygB~XVRO; Ճ%vr3ϟnF+Qs{ 1G>jCBDE.^]N3Q13j$ 3Mff~g83*,Q? [(Vr@0Ҷm.,cj~p,u`eGלn^63`: qX5̰.0Jþ6 G;\/~i(RУb9;>+jV 1dp]U~SdP @T4hI*PyTXԠM(X['ޥ VZ-j8>ER lUcw҂J7,n"P* QdB.O(X֔,dRd!dqT*bPN<`աcF(p1Yz "Z)&lQQŧ(f8q>4E֫Z>E`n>4ID_hHoo~~MkG@-/Z+(>k]ya`ԗQCimkn _;Cs[ZedZ gHr+]D. Uij"Qw |DP7!>"}C^¼P[[$7 -r)LQ] gT+2i"` F$ <B"Vǚ8Vy[I $+TbkiҎ;y,yG-G2 A @fX1U YO![[!Qm'԰HO`능3Fp'#!r`~ր!_B-oErǷ<,"P GlP>_5(6P*b$`U<O@PG) W`>*X3+~Bs=w1_ 8f4py(Io6`x?M18'ǚR㏨6u@dhޣʟڨ5.M93&h @Fqǚ-zʸPoq5#%~o|FbhAɠ32~f P=x^*P$[.@4e1*x ǽi2\ Ch 怸#4T'` ǑiT3 ?py+>C@cS X,~(H˟B"@@>S$x_;a@J%\yPH %ձ`k`Ċi 23 0:}`R$gtL~2YNx̧5A9A p)YHYe_3`n1e+ ˹|?Zrcd<~r?lxSh TdE7rOAEnXJ(hP'@ h%WUeM(c_lybGj)Oُ Gő5Xs@]F3@AuK( m**bPW?ҳ@ilvbgbIDNۘ9894-%'tYWz–r3LBaEBmIR~URG#уi6 %X de̔u/΀/QI_Ϛ-v[ 5BͺdP @(P @(Z婨i+9G]\W%dyүPAm(9L_χPV66ƸǝT]HX넌=qHG iTPҒk21Q m(cɬi I$Z!9c5ɴ/!eM-{3c2bbQH6(ʺk1F7OƎm5)NJR`}9MlRl /ֶr=:iWo+kEeT?>-iYll.bO\Șj1'ҒpŜI5!I5fp![E$e`*1.֜Hl(pҶ ̹*>[%"ўdktiᱻ܉ERN_%0/iPh1+_yY`ɱFt2YXw(T4tS!"J/ U $1X?PW(2MIʂF(#jqXn!$x51EFEF)$89HHAKUфHEA5!ޙjkKQQK$R7!YieŽMrՎ:源PJڂ8xN3[6Đ>3,7 .>,bN6( &5<3Ghd7Ю*P2sld P)@T7sZ *Ap2+B0"$nS@`hb ߯@H9mƀ5GP?l( R( $<8@XnpB( HpUր02`h VA>4G)@b1Jx@HfVBYo#RU@?jcO@\ 6yB< {8>(xuV7W'E4J~aR(+@gp#j,q FsX_<n -qڀ˖%I4X0@Bܖ09>P]ЏCP=>0>հbp &aMIZ2",\j 28y`aZcۣ!Qǁڠ32&~TI`~_5\N8k`<\}IvIߧY]В x5Y]+eհkIQSn I8*Onr2~o@lёPZ(ߙ0=Z~?  |@Xk`cN~Հ`x-Tc)@&W ZLʌ~T[;( e?`1SXRyg*P4 A~U|qQf]# Pgz7?ܟIE0 8u~s$$6KJ ]SNRQEO޹jERǓV"2E #|$ϟҖb361(>h&%*s)\ |ggr{Ն6EOknt(n"QL]QS"P ˷PBzɣh?pk@Bs&kpziߴ}75_TَnB)`Q䏵Pa1vtp@\P“1_j n˟oҨ('8|1$sAoԊޠ٠#%AȠ0ej gYjK( G@\,Ms FP `j Z Pdtyj PSxDq@\r -n8rE,ѕA {5A> ( 7@Sh??ڀ>V,8wtr2Py@C4G@Z"| 8<''@H |ҀF8bƠ\}y)a_(#9( o4r3xb7h61?\@6Kd?Z&%Tp>͂q8?~?VO s?jSOxʹ +`aH @.>`X@b1?Bހƭ* +~@l 怬Ʋ,Oڳ. 21{L7{հhI*kirqP4fÊ.mr,6VH|k2hz {D1>|+-0E9בXvHFbF26?3Iy"(棚@5%Ԩ򄯟?Ճ;9cm$I'Y +Cm)fe>Yо?M*Զ1+m?EV+hNJ\!w  ?e:jkjQrő~k"LmĎqV`W6[:VdWG$&?6kJ&YEo\`g$+UX!q:6⁜Ө]ۂ1\)'9573'Q\1,w$ JʠMUϿY Q#g%`~ڔ y-@RȻs'nrqOߏV^plJ$5V93[¦IqΫ^LFRSPk&H$Q"sRqSei)!4>@c*lt"J?VA݊V42sT1+ybPI4} P uj"A-@((|A#~ Ҁ3zx(8S_5Z +k~ Tn "n%!G]$Y*-TGu$|朷X8G8Mq4c GTy^A5SH@w!k]ǂm6; +O6Y fCiokVMNiF7b̻L_w5#o5bi%4")Qq\آ`ATm᳟H]FnOkb2Im#8A'Lԕ,=(oֹ=TQ!f܍|SdY i!D;8r[5pE+%ĒeUtSp2Ld?E*m@U*7@T)*@+@P Sh@@VHb(m'nd2y$*sV3Ѹګ(|aF7k-0T(P @H89;Q(&MvJrk&$ho]>:Db:_JATPҧ\TP]q=OiZLrkyK97r6+RH!OJ)J[8'[3/~h (D+P<|x,y) : ?j"B /N6S%0$mʜ~%XWɏш(P޺^q@kLրdo8\mllPȏ:-m92bˀh /nt'o$`hS8j,9#RI䔹? 6cԥ,„^˴Wv b@ }ry8β(pn!q? .UbPMBy$ G ?cT\to0/3?T)?v2|`sTVGRZ4Ǹjm[ ?=Yj JK6)Qs⛬Q ~]Q>~{ p3(ٚ]>&WT3܈wg?A[+(ЪZjIw c9E͌9g\Tż"g8jJq!ŗYTaZ-HЛUA#+V GepsyQtVu{q۸qn1Wx귄FG|w\F*]? n!Yu@P~-t3OI؋q[Pբcr\f=U(E[Vj@P nZ;P@FxF}h4L^}@Ot{P43g\y,$%4 P- dgP x{4P]( o#Fy>8^jo<½G?PjR3fog 4R)<>X6ed~K9F?NJzOeb39RrJe2Y m+?$#!8EIgqLdV(AXsO@\F`c`&0+.`S`$ZQH ֕Ԛ@<` ֔dVNJAd#Z0nq]=j7?mM2N89kRrQ6dkh弍',sPXHf]ڑit[SOD]p+C "怡峚z/y怸O4u0J /L_,j>YpA1x1P\s@cP5\x*|怡7?+r?589BHNJaS( E(9#]o_~4Cy$P ;$API'ZJ㍿Jq4$s &9@Wf;n+xё[cI9 a]m<ְ o'U$qM+r7}IMq#<P3>,b( B\d/8&FX$8©P@!\σ53ITDgv\5cE*ֿe(v,OK%㵈 08l}O<z073 >cYK$]rX: l !xZTjj|"˻'>9EY;gp)T$ L [ qOef!bW~FAoc>,:Ts)g80IhѦuP`F>~J@լKnN397.mQI 6ў85j [`P;'@T/pT(#TԻlDlMB{ Oj!FMG4GCNmh)cjbW2I:̸lƫ?@:uLΡPጿLsoaUXf|d(^`q˚Bh^0 O5,j#>${eC*vLN+N ǹ{wF K6Jm 8CR-t`v۬1;bEmD), EXJ$QSCݛlNX{"G =?tZM_Ӟ1ɹs勶Fڻ-x$t:.l~Q\V|*zdꢅ~VI0<9IkŒ}7\Z}P>>\BTF:'ROgVw<zՂ{D'x#('H8xEDT Fshq~Zݾ_A$NXI!d|V# sd'9(nC@tg,IՃ+nv,P y^*Ql-TYZP @(qɠ*梒e267 ;JRY^>A@k=r*"EV *GЏzLE8%W+@5?G?ڥ<<}Nj6Y?"nd]^ A(_+fZ#<8A39ީLe!oǏjVKY ~֯ p/m#@V;b|‒B~ue4?Q풀AS'O= Y}k`Eɠ6<|PŽq chO?ހ@\q@c49<`hbG9 r#.;#?Z'4$•s@Y>Q> Rb2G@Y\cj#,F Ŀ6>PH( 5()M"$x\I{$R*€?7GB [ K)=i># TCv;bfc' #iSNee)!N>bG4 <ڢ&?6S$` [GW$F1<~ +Jْ)1+ G+~e`U`mrIf$pO܁)LlQ(9<5MΓ34XfӮUA '#q6Ny01zӾEcXȕPxq[m6՛dPFx@IdU~ 6I>io~#" ?N6 >X[p1Љ{;b>r*,oSY/9H)Q ‚Vl|Ԇ^[ۀEqm_ $*03ڲXbWWLz@ݰw4'a85D+YKaOxS@O4|@N8(Fyqc@2 N|PqP84@7P?怂s@F߭= Ge|k mQILHLuFQ仨ų 0k AXm YTZ #urzW$'6Dh @(U ⵹+-}k. T kt*F(@&@2+KP]T @+, XP(, X+@P Q*Zh S*@(m*g'vr:Y)YЎ(_޵`< ֍n?S\\W'˴3bSYqE*QEe` Z@VP @(`UhQZmi6gq(贑,֔RxբQS chP?f1T|VX049"~7qPk8QN [O&^\8H5(H~U. P,H`yUnɊ5Y~PaG^ORA,=tl &P @(P @C Q[,qҚ SN:QC`5ʬ 1 <7.Ģ[=R ..;]?'l޲Ճ4w OAc;jqvي!6w >A$[6rظF1'+q%H?B7l |qƭ_MpxOw{KɻgS\ >NQyCʞCe5BLg9r߷8*:ZC999_n?+5fI\ ddoj5W8.$c@Qi*QE#snYmdfEA&'e?aTi9s(K> 5N*׊>h?Y)$S:>8el3A&9P1X)THItyQ0K#`{ӟTs ƀ$O }zrq#@N`x'*ϑd{>8h ހ;G> 0@NHq~Vv@NN0N1V[@8`U *)$6N@dO.䧶r|~7H<j%2l?ozYr}k@לn>+6 r'dm`rm.6HaOx-"X0rA>c s;#r9qϰdh (is|ȍoy?z3339 JN]2Z@P @+Id V ZP @T@UP @(h )@RJ( P@]U;V dԫ^ 4fߊF EHT1ts%wN[h$rk+TP־ULE6*@[iEX*G8Ȳ(@)@V@7lE6}ȱ%my$ ̥_?@Z͠VIB1P`+n+bڳ6bo1e ޯH'&lbshn6V@v(>kq7J1]M+$lN]P>Y,UlA԰bd- i n1K0aT .rd^>l]qVWq,6j',cF#rпߚO)Ac'4IHY|sRZHY+6.x`qgZh0k];Cd_f1Ǖji*XQ5 7RUujMRFer3nlfS>kJ~Hea2M]0qS"ѴҒd2V(!ኒ*5aHؖlsZ ۮ |P0Frj&QvFπ*ƚLDkh5F'ϑ cB @(9?ZV\OzQK,pJ!o+<څuhBٙ5;Q ?,j)ڻ}p?Q GXakpo?F G1TȲ?| ,5VlZɂ矺RUn,e2?MP_#7MȞH؏ڈ$jH2#Z'bH5#o*>?@klgWlq5~HހDzDpCO `;T\`$ǹ531yl?ԢYu|Bڔ5nK(۰<+<֭ 1څc{D fCR?\QqaT#26f:[ws߸=~^P~H$U#>~ g6[;|ia@LDQ1FO8ESb7$9ȩ8ķO"ȿy%@ݎ?z{MqjB@,C`>lț~E%pp<3Z}سJѺ\8?ڱ=)I٢z}噭m*%Gs.t{G1I=n⸽g2ѡYm A WI'F8HF0\Tq( )>KY!sp+4fK}\ 23jiO-)ٮj-K-ʙit[O#U0H,w{{827l̎l%R g9z!muBَ$_l_Һ)NҴ =P@WϏ@N  1h} @i\#2o}kh+5'Py8oZ4l2!Yf7'J>k&%@bܵK3YQn@bA%<#CHLA@j[`s@6hSc QN>\ WI=9WcD皉@7}'9VZfE, U:R`WP(P X(T p2l @((( @(@TH ̱1*vg&[;PB#ҽ'`8<~qo18ǽs`I9>k&@+@V@)`TTߙ-vӅfEkT~JNs\\ѰGq]Rtk*l}[PY~˞&:e5>B͛[m>xiES ' U%.gp[W1`Kcrr0k`p~_lU\HsR@* yq9{P-'褐1B PMP2PYP~Uɫf﷏UHli94Q`,4A[)@O?J3eq8} O9XBn dU `d~E# l P2UHj(> JÇU4c$' Nhꋴ͋,fD(S-7/}Tal;VCDK"/$d5)5Pbp2h92H_Rݙ[tCAFsNM[YKElM̆!hȗ?hy+IMR @(P @(Pi641;yPgq~ex&pU*Y?޲ [k Â6h a{LN@T%19v!fICͽ|ڀ3 {C26R 5rIPrq(J>WOr+GՔ;;,Ybq>Ok תm%CA9½֋3G`?c+ڏZ+adbj-X-MzԀ x>"NԲv< 2sڸjkHryc/Y5FXo 㟘qMFf#+/RoHsZNyjν/wqEm8WhRU]ҿiӯ\BП2#!иRnѳv9>8֮c t6X0QK nxßm0lF@J'PQBOd&3/p~ՓY1/W̪1{O8M^VF8kk]>E&b8#}J(u] 1?)kţM5ۆA`~j3PN9j^KmF$ }]ǻW?>涁Nk5KL tRɴۃ\WXHt3(jr+\~35_/5 JrOaSCI⋨ciѳ7 G<25G:NHȇ&[ri3hvUlnnQ s|E% aʿI /TXa,O(4SLh7}rY}K\!ʓUDvthP(zQD4g)t4_3I<0K! m'>H2m%73Oo)V c|vmY8jEك2sl6+ c j lѫYjO]HdB~Y?sq+N e>{!eÕ5՛$}yu8uecjYO-qg teo]|]reBB8^xiKsmKذkY" 6cTcF}Z4dt丅!U2wqZЎ̊W,r4jBaϞq?J7 K3„Fy (XP }z*yf. ki^ N+˳khdV~ 7-n BkpY:$8<6GvUJ1ɬOpAbm?4Q݊:Zso]%NL"L1iu{gEkhX;Y Hb0$  nrm?5]SI:(̒fV (ufE!*k/ث986`M*4rʃq<Ҷ0m^藺~ YR&d\0B@#4P T Vl &h Y(w{xp>s]֧MR VOm=ߋ\4d'G0/W5eiE[fY)@hd` sGyڽ Ew3E+,@! 6 7f.6m.oa|[Sl2T9`0Qǵfe=` cjX*[9<ɭY(̊~@sY)w[q:V: gE:vsRGKw QFx,*oBFU7EMci MOZ2T.G6TE[#&P @(ʹ!)(6hh݆؊JntTn Uds" U{s@c)p~=VlǻX\5oֽ$꘬dK5BEPQ6+ƬX쨵צu`Ė_1?c~zRB7o^դgqFҟ= .CIسzHb&wH*>「9!Ip7GMۿ'}[$f+)ޱ+V.i0*YKpҪζ0>洴,r~·*,'qfElQTdѼxĩkɤRh&YLBp;AD4w,,"'?xath$OЌVZk2FoA i+vp$a]}ќ{) ףo(bKW9'Ҫ^| ` c>EQFHQOYy?hs)>r?ڰh S'+fLR0AW9?MK(vssPp=Qϒ>\ae$ߛWU)Kl6,sec,זV ?U6`:][@osi'{'pxj8# sS@8x Nk}+\Nx(U&TX a`ݙ!Eq,ԜD~nrNZLMXPv${%qrd_Cr $Td6y-uivdCF iga+Fm&h<?p[qeZM?PS-ұUV a#'p6,f%g?"Lڊ9*H "T;}F JsfKs۶~|`\Ew ,<fNАח,{gq]`fu4X^KvKsXcknTC6Rv`vPԠs+I*N fHjp|=Io1NW {p8IcJX926>[9^ k0USLZR.Mي`|WB=3eR!N`>j59cΦU(܀od{'mg,%i4)tŸv s⺧` P@Ax P4|P NxSgˏ U{XCf@Ӹ'r5Uq(Ճ\t逇L(n/W)eMFܚ(,Ϭ\˼;yqfD:4*Ax'_(Yq^+?CDdjdd͠ՌpZ`&7E?Zi$cU]V`X P@UPP,^.{_c)՞~кc}ٶ1A5fI"7G3kdGoNwFVwx|æ#YtViW!}6F.^v8BfQvשw<4+>m'OQuy[$4pVCݖ +#pVI}qs0,O on01^ɓ֏Բ6ȷ+nm\9eq9=j|]Z=@+kmY^FR(wrfi G?ڤy{y\X'o/vJ!\*¼P\(氒\(U2_gk4<Kf&eP9o4X?Q@8Jf &lldhLyc *ncXSz_ "I!"@gYC~^Di%sQfcyTU;s2Hg8ڳk-KsZS%~)}PH|D(ۀ|I$yZK;8W*:J)!{Xt溒Y5#3,$F" K1;NځwySXo7hl+)iR9У|( KRCm(܁F>fS4 yWRY+.*@( \QxTVrI#@؍ {cjnMp F?Zz]l[kasUi!gImf#* nȮIgE7N~U\)[2r5E6W1ISkG_B7K14sFI8ٌJB?95!ub#݅cCP@lZYaqGϽe0#cŸl[EF崌?ڪfC((ly[1g܌lJ9iρ :VXz)AK:X^n??_jr멵V2p9lYjۣ+tBv7ذ/V"=}0NXn`0֚k-ijBTaJf'H%U?lүWyyirM/ ֿ7-Q$ ,mHA 96W #bہi$N]{V G]ߏtZ(#*Y ;y-zJ$?@AGF[% ;Tr>4s&GpB#t e[GC~c5)zX-m2Kp2}9Q%lQҺPl;.;?OM=U>ڛO> ta˧nxEAhldp/te7j5R4xO@W=M=஭ͬx$xϾ+vݚ ́F.2~BGk;J=y-|R>&\?6UsjZmgۿ(]Ďa2T}k.l=AݫM-ы0s Ho!َ6Ξ2)b[;AJr~¾ 2-@WMj@(Tn0Ҟ9R&)`gR>k }39P?Yz]ɺJ2G9kxbgڿxӒXs\j{ +bt,|k-0( De梳D` Ird鬷x1k5FYxO y\Z|jђdi@m5v0F 62Y%~hm6v洡`dB+KE'mtZTf̱1@9"t@7:ޱX|Wpi7-q7|B˹61 xp$2~wS~_2IiV >1s֝eejV/%겪~(ɍ,H09-]ɶ'L~|+,Vnz uOZL,wR\Iao ZGtYY۷0cx[cړxJia]*䎾4KQt'MkWfQk+ H04q##34p"W+RJ[7yݛir|UDI^u/L[E]L16M#ts2K#޲ckGTfonF5X.*b9guN.,#;s| BʒZ7fӢu3C?n%!KPv$H皓P+tGkUu7X[$##QۄD-ijU*Ҭ2K^T.C8952ޯkojMsokP@% PƎFE(;rs\4hi(no!:!ut#“(BygBwU3!Yz>-_w*Vy{),&+Onv"]Է$ } 8 гE.q>jIssrJ>4 FkRQΘv f` |..guպk,O*4ygW[>T|Wi+JJqoofzu=w% Ӻ}U$PB%)!0d|H KN+dnR4fqoZ:#iL3-yWc>7HKrI҃ Xݠ'GGBi>x-O?zhaiV a#636Sv~t(n-kQ"h%*i}qq>յK/ln5fwkF˄cId67UImdS$q?MƩRgffxr/&LR>ZYI*U4T+Af#dpؙwQYz. H}EOVy7O;IuRܬD bhd {+ɧԭ&\?QɈ\JvկlÖQM̖A<Su^|R1s@mƭ;+6Hόq R`yFܨ<'y1/ h *Rf2~m͏DSgUNj6rh982@ap0* `a`w> FM$C&h c`O-k$(&5ܐVVor0?S%Rl RV5{ YnF=D)P@,Ahj *Px+dhlʠ 4@\FVP #;8H>q@gP<CfI#ۃ~O(J:<0[:^K,4},;R-p8l+R^-ӿ+|>Pnґǿ'<~f_40;v'QʹpN1!ߗ@ɜP=~=E+86ROv_ j!ٻfC .rNtn۷y콋vj]O5ӂ8ܬO?]^Vͫ"-c"Wrqn2M%p]g<9?Fk=63nHs;UnQd:n@p<}.ӋTYɺH͘,+Y?v^b?1N‐0Ki4K r y5WCXY\0 ʹr)L2 ;[nN22q椴&mp+g$H#y@HI`&Բm@Y>H2~bs#e+Ŗ͘%8ϽF PnրȌS歃[RS$שa;2CG[ Y~5Vwmd H5ݙ[m͟X%-"~UJK P,8;t#`{Q.s%{,q[(A 1H9+56J3cQbL}|_̵NlX{?7Q^_`&&Ax.rw>gtz4OKzNR(n; ]?KO!R,@g#EyCIVmW.՞FFu;+ qfl3Eʣ<>[`VnIɞsT'[i\+)/)c#6 N:=\>2e}zΦf]F~%W4 szB 8*T,/Oc;o:OYycIٟ ʲ `qnUl|tXCB]ZOꝾw쓹q ||y6 ǃ^~ο~^a]bj:LR]Ym?STG r8!c1ϏK{^bW(z_ͷ87Z\{ȈM!$Q3cH%8u)Mxv_y蕜Ot-cZK;. ._cs2 v+[/EnՎUx,UNmkM]PwZ]͈=QxX2e@+(oPIFQ'rj׿6djc( 8׺SQ1G~ֽ5Maqe8'vԸlmak~bNi/ Rk0 ʤa}̼U{o> FyhFi:ZcȹZ|0 5' [˘5WD)-#3aB2I8ko%zW]9״n^n"zkJ,[ve2C/Ôe?JQv4|+3u}g$h4K.OhڸAȹr$]jʫ+Vf=tcv}-VqQ!& VrdglB}Ee<鄸llc9Qdhl( e/ɠḨ4%5hR 4e\@ 1ցbqY07Zl j9 &`3Ҍ].(@Pg@Q<( P DHNJ AZd%V̘ *|ڔ`=@ ܄.<~Q:qT9Ϸހi2㟦>5Or ~= FUq9ǃ*,I 跟9+.^<19xἁ\)/R5G&9$Ϸ qڄe0˴ǸS I9_qLّ@ߜAFlqQ &7C@U$PcP6>ՐT@Yh m@_Ƞ2\A$бV*pJ0e$AFj(J!`{U B'o@F19\g@p[g 14]ˍ糒x2ao\\Ӷ8j0sʑk/*ٱ#>a`7շX(һQRw~e≃(?SV̥͘x'5P#x'Q8z C;PA,0&ݙ2mV%gMRuǻ YD%BF9GkQq2n%3䜓Te0,\>:JYTHpvg>JdD6< 0 ${STnf<z ֟K>dS-&-Ǎb 0 qqqcQR;8 ~?J-^;I$;FÚ)ǵF Zn0383FǑ@b@bhqe$o?_bdU@IH GkT3~HT cie7hMaJ^ k~lVTw_ 1d#{E>LѐXy84eW'3$?75lJA<*1\p0y Єi Y x0 r*Y]"<,Z̑3xPc &73@oxnq* ă3~_8ִ Tcgrry` >ޖf!>3vK4dF1#3gr &R'Ub6VOPMe' gJpA9.@+E C|4W&+=J9Uf_jՇlDbۃ[ޞ1Plx )8x!YXn g'8OSYӵO?6~8B 3uJ)Ņ!KMhԷ(۲&<( ?ާĬu3cl>둏5}Bzw-5Y dqçbbQ8Y 8{rɖNqip*FL~EaP>Pq5xBQ n"lX >r#md6v4gtT?4csf*r }HzDNL8uQ BkXTAw*wrr2G8oj溺8Qvh&'|AsTڴ>XfGǀ=OVaUtshHJӜg*X=C@{Z`'S"& m) cW*4F1YP݁Q0zծuco[ڂ8بbۜƠevːcj~o 3}lu@uIXzE3D(@,{\禥Wla4!RwpT~ti A]8@ZP @( h>(`h Mp^jئ<>O+ \YLvi&hWppdaQqֆdˏC57;~L"fsB+iVj֒-#:"AAe$ ga!:zmrwzE2klS%"61$+2FύQ9!Xnߚ@3Im=z>f>O84Ԭ c P I+\@R mP'@52MuR@TP =͗@kkZu逺(V5=\'kyYҾ΃i}CmӚaO%uGPYVċ)ZG 8/Rf#tٻIYn sZ<+uelD&4rݶ(dmmn8æ}pp/Qw*%FV؛mrO'I&Yf {]t[/koh,,@XQǁc>0Mɤ-/[O,'9'$雍9)}# ~FBqE~>bj2m5_::YtGWպKp!QC{e3*CCK{M(Mntm6Y֭F;֎(Eh8P PS<隂RV뜬uw繕oG42͇P_ϦhF[,8{1qYܶR{.W;' qNIDWhWr|TԵmvK dHRAr\KCorsbX׷NPҌc5T^3oQkӨ4KkWnt=9]w aayj9̟W:dS/;Bzhy=vK4onDdaU\]UL/9ͦgrFTy"4tD:n%{kM!%%ɕkyFpi;:M5]I>]2sˡ:!]wNk; zVI-V2'u+kOb꿝Owim #1G`frό.z4n`gk:zM ^0BɓtA|`yhHˇh'GKt[N+m$PIf_tZI ,Y&RZrI|"VZ{o,miRPdžF/x\:m<+4aH[@E3(Lb3̄@jݔޏ݅[ak_ɖ=TFw/*b  Gm2Y[ԌZ6̬M 6CZKX ԔS" iǟֱ!l,TɄA ܂3IrFc5ry40W˃;OqC'F [[{q!kaAf[xRp8X( Ce >5FQ+r=E1W}+"|h3j ?FTFJ8*B, HȪB4t PQt K\2gqxm3L-y{q '婭:Ҽ+uoJu^kpE:E ,Xq:`p_'<{/'4}?krj!|f {~h& - jx4F 3Ck!{R :̤298I=YW>2YSPQ=hlH Oִ h v9DXcBcff ՠe3FX!B\7<?Z71y8@ULz犕d]H@4E Xǎ)eo?R*(NhJ04/ d'f9'sǁ@]T/?l rds@N?';s;qX=l2qֆ @ 3g@b`@@A~ڀax1G, w ch &1sRDx3nM޵̪w7҈97w nFC~kkɨ !@F>Yr11\eHVM 7`H|Ĭ~53K(4{DQpk,eX(,xFXɂ~>i 7& X*HaZj*c 8'Qk@3b? s?;FrFMd%Qh6.T0  E$pT3rj2# HQU\`܀?z9i˟⥃&_Fs*jn{\Hc"]p0~b(^>G-Q#'s` -WZ9ݿ#QVrB}4'Rnܖpn9FEoKbF!81\'[!gܬFObi?1 F,1acYj{4@p8 #ra@b+o"+2Ҽ"ٹ.3y>h Koy-֭"F0AdNdk ʮ˓4>?mOu%C5FbB"7˕60ڪ#XR!l<1@A7̣s@g f0.qOIv]', l!IϏ$8Y+}yڔ v1,s*3?U~qO@fw. 34ǟz0@03#ZTUvfnwpP\{֚%K(;R5)Ԧ{b-~ry+pKmߺ'rBo~|]8R&94^ģJ:}+;MQ[l60q?\b i47o+˘`J\ m gy1aYS`j$؏ֹg,Bi"o $O>-p{>e,W'>AO߂YEȓWXDŽ./Uie?LbCe x GTZ; 5 ֪g*ǵ&ЦdHRyWc:D*!8>B$ԫ%R{ f @|^|kOhX a^WkO؍ M$ +|`m+'FhR4$>br0E#l\ O 2Ze_XGZ]NRY^.if.K1>I|)MG(W"Q u-]h nDTXTV ѱ`IRЊ֫."lcd>iimdgoڧMV2ѫ-a}.< 3FH[a򬤆Vysjp~Z5#l^ݥI~0 "#ێ1>Չi9Kھ[>}Ԑ^FLSpeZ"$`y愖 !&ݶڰvaoD4'wش`v-ﱐbVM pCAӨ閲iTq%u'FIr׽m/s~rq]1_pa3Fw.Uw{ҠlX\FY\SGkEX.EAly)(sw?a/'洭 bkm3%  V[_X۩ç%hg2Oœ/yV-QWZ˪Gygyi r*c mc’FkO =mM6K|N:Vz]OdsswLdIE1/*2@GBTad߿-z>i%FCp|2m.P+s`cgOg<}U]}=i5UiR$Hd p)n l7(f$Ku UKwUf5>Gmn:[@Ӵ}qNҚk;G FRi6$ NyI|ieO]WvaWMcbs,# 7<+N2rI.r}_P=Q?(+nt㻑by- S XypҕQk&W]W;WmԞI0kUݜ:W6AjDLKvwHZb>Q~1%)WON͚Ŏ5i Cg#t/8 !~L_pn|#(=QPK+jqa5)~gRǨ"w5{ ϳ# ˫J .W"}[.#*iMn]/uOml,>$8^N'۱ώ){-bB]TGp $D1pUUʀK9>O5,0Ponxݷ5]`Z bp3{}1|q4Kj d|gy@RY5fkF``  ; 1Nu7Wubڌ|F'ʲj&'ڐRFr+PG^MXI֭HCwm+J2aу8ݳ5̣g8}k]Kױuw-(]vD Ӝ^GOMz"ʸDZ$^ dZm _4SEww3Y h۹X|9nruc62~pq^A\,e2Ǐ5A{jIoBv" &ql1P -\ᦡmwwh dyQ`f;6d  ~APʰ(d@P1#u"B8fA Wρ@P/(42dj͛V:Jun.s`o\utai5:8JO;ff9$I>IV#uq]/4@c?j '`#0JցI5l(ː>lͰV.(hs( #x((J2m 9Pw\`ێ92W@y@_xn2!`9;Fp=]'k 6ҭylQ>ŒeU<%sa(F'O4Mk"0tH1՘74b]%nD0VlsmW x;$d\2ɬji﫼;kWS,PM(4FIճ2gi@*LyQ3yAqo g2Mdfx80Wgڀ 2s@QZ(#GPUn* 'DђV?e;&uaWyvQ*hxcb+kQ Gr˨+\*JDCdeRX|zǀ4zҴM 8j#`cq?׊vRYPIUeQࢨEMzӘ =6ma(={zz1۹rݼpys.$/qd,ܜcڛأ2(ώjR*Q~RAuІ׆RhU[6 ާ3|M7&)$(v8~4}8v^ .T=< 1 gjKGZ0}¸d`3Z"B$r}`_419ǜfsdpW@s?d rhl2HҲ rHh̲FrBIMe&02w@lC47rFC\ ؃|)??sTe2rV#< (ٙ~CQ {6zHq}~h`#g8?J_(m\}~y!e0F}YGO,w0{Z"<+ˠl8݃8M6abI=̲ٶy~HR89H]S4ZȌa$c$fYH]#S!tLʯ@aA"{ZiAxE54lGak qb4 嘟sPr,qHlV5c5!yh6 Tgq8E8wc er(m!F\y9`,fRv?+~[RFEօsl(sָj%qh%Y]FEz ږm# #(QήmTJY5:\/JrE܀`GWED-)|Ov-5#䯷9ny5nHcYA8;я [^!["EN HUT$WO9K̕+0O2lȮ!y12v+"3%#۱ӚjB̞oO$$oBIy5{)&qŒO 0=+k3ߪ }ֵTq+P tj)jim۫Z48 Ȅ*Js_I˵ lw ?*f}J ]QܸッPNGku .Kn]? ?{4+>}{7R|!N YI72ybW(_O>rjX~J1jOfeT[yaut.x88N *Wyo$jؚ^Ԯ'nQbY݈X G*y`=N :b[^:܅$*, J"gIkvv8]kǮFK/|]:]Ϧ&=]w+{Eգ6[%č.*;͏Vxګ,eԗ-n"Yv%$c%u~NFu5j:Zmկ]>i8ަz]#j^v[)LWvvͣ'lSi$7H}x֪M'W7{k}'X?+LeZJOj҈mm2K+ $Ԏ,#)YNa=N?Osi,W"h~!,Uhٔ^osS|wh,]onO\gк(KFz;{}@ьB_k"$+Op7W^MmԚRnWkqn;5%O/!#yZ춽=sk*4cFX%NjV|ɆU.}R mx6?c-Q>{h-#PwaM-cdw.gfzDxX .KAIZ,-[WUSOQzSnW^eŵ|#qu x{mp[Qj|MMY~~ rUH2itrM԰[k VJm; VԀpE"9 W~'qmK+_W&*;6^uT-zoAo:jZkvUt 0iX`mgMa;n^_s8( U'{KtKp@(a]D{Vxy /?e~SYE3J4iNq H>>i]ҿZϪYꩡ_X=!~!wZd&>oc&|[~t[qܛ ڒ\gnԞ[^Bc "1$ī x ^l60vߊIjfu ޜ,,n&gNmD&L&༒>_<ע0"/gXd4rDl9ۇ.ںFz{ eBVP X>ˁXq^_SI㢎w+GEaQqsִ^=`r@aڶ GCn|PzKzStVyDp\#"Vm?Zᩭ ,ͥx˥`%|~hXnz|1ʹ#9 8J_>W~5˻ vMk8Hi;2B,WOI*|~};"m-.gB@a]m?jOth3aTUT z@+km5q ss% JT(,=YG WHt;%_s#> #-ݚr3_ p[)m=9Za[hB㹰~wwsf.W狺utzkS|9kJGmලO2rFgUIvT ۊnۀ͛[YoG{nV#(,7}2y'ۚ֌N8Eu2 gBѰ}Bhͬ[[\u$2 hv1e ۇ6F( cչ.--9 k6Tpsq\~kU?CepnnMKh2콹I>]r~V\Ξ5Nה4}1bgGK3O@sso5>ZfLʌ$ b@>yf e1"DFܫ/эHOwf4Dd7 VlYuwVřVQ-#VBFxH'jy4P@>( eq.]$\X|`c%ed$w1yI{G Xo9u _eh[:[2Ʋ̶r \l}rM t?z DSJ@Q@r(`S5Wk'oךcڀ@|P@TD2GZ6NGh , Rx#h 'rOG!'(a|J7Siޝ,1t?Ua?qYT֭3HũJu5,3~ēPU{"NerlUP @( T^;]!c|FJ2|c1*W2rrkhSt,m܆7!P>Q r|J%A6սfvpAv$K23F(1+h3 UOi@/ڀ8>( ;g?Bђd '$D kǷP2E h8:Z%b3-jHY{(T 3Am"YX˸͔(DD61(OyeXU8VU!@82F<0qT~HĺЄ+iVcT|18V^1 $A'*?ku\6u8EWPFΥ2QRFr[rsԆNgr ϑ5ІH/bGURU . 8ϜW74w`Z~SicdP26)ƻrܠqP5,ptlO2Mde(F帡,nFFN8?jQ'h #}l@ {/kqlymݪ>壡f6ziWDK>qo INe --Ʀ`ғI=T(v!{# +INjF^R6|kIك`|U6dw9F`"[q@9lvФ~ rF,`r<{Ӏei2#aElM N&YC$ќ{o p$8$jؚBJT`0\YYtʥ%3*|sFeW 'PjJq"'h(3m@?|l  Pծ=mNx/5H^>_ʀ eN<㧯Uv`bcfd’{p}Auk}hEvM4|s&㝒6/tf7څ}9_92mWPA?oZ]Bb?uy%=R[R4(QYtȬ9 r-FM-ODSzb kQ!GBz`{4e[^˨Y(s{#+2{>_] Xd@p5 ]mT p2?~89%!fHv^}Mm#1>Mxe&lq4FJ}Zڑՠ(_\4ZU@WE+TP*9P, 9#ͰtNMBR >ˁ+rp[VjI]<ں|Y,Y)InMk- P+b&@(hSh"pj@P(m[ZOxHY?K+?O~?IiS]OS x"wrgqlcJtG6ҮΟDU7vRd5"n0"ip M{{WpH>>X.&<ڋU* twwzM9Io4~1X3/!:~Nm:{H--YCess lKgDI݊#; #Nݿ}47Jsc sou#M=qF'̱\OuR4I>XLGwoqvmINJuwXŦ>ekgLʥ6%XH^QZ5+qzzZ;{y$2wzoTKNTh`Dk Z3 Ќw~lrkϭ8on['{/`)?VtZ SڥOIEq;*7in#UwpО{kve_nn7w,"|ۤ/4 6Qf c/H.p|Cώ#$$(-Wy%Wco6]?~WpKhz+wWF[a $2JOOjMwt(Ƶ^M=eZ+#kz7I[a $2F0j~}7bIV0s(9?3Qu<^tʉ k,QdGjI `p8P}m=K}نc/GvTϧ/m5r/ht$[j 8SuޔqxìaI?бGmK-EYנtOmn5; akǭsպUbK-p~ǞzwNk9mV+Kry!,(#zPd'4%UI$-'hZVoKET!,h{~4[}?VT&Nڷk ְs>zGXEwVeGڝVxs p|}|eӦTی,'i%/zy46:5֣z1i$gQs=Y E.v$.O}&XOjؤK=ٿ8:ӽA^]cgBHnn"GېF8JDۦ;|ޤZXMY.;nM-.RK~QhNtΡ{ {iu=MNvf+JmG[u}kuPܣ8'tIܟeju޻!kn"lktkdXVy-Kpohq_CCRҒn=.Mqxa(xZQieV`̍+< csҵK6nPѤ$W6\0_ 7YpT3Gqc H@U8R9l`q`À&f6NYH8g+;ΜM6ڮma1M`K-G$~'/v3$%(!eVS.1oWRI<'xu+IJ8>)9ϵО9GX{ "ursE=sS"0Ugy0oy϶))x_*)gUJnk`aOԒXVH;!;` Vs>+/KLpz .5ޫy6ڛm]\[G9UV0>I&5W*-k5qu}՗w?vcr.I~&BLcsʂ͵z$*U/jOڽNy7[&Y HD71>ĀVfbc]>aL5s,U滿T!;cqc?Y W1 b̲DGPe 0rFxI+Tl!HevwێO LWk@iZBkiq 9JhDxX:U鷿0KPbtLv̎cq ϊr˪ kfy!pѺ.)ak/̾W9(z?Nkfol3@Typ|-@fE66@c*G@PB@c$(9Plp† 愣r T/ކ ކ˦|Z 7BȠ7줶 7(f1mBɑV98^*O}?'YOGqy;.#HS#bC**wmOJ);NVrnCKY-/!ycep&)6(*YC!e$WCwAl>CU@5зk[ t̑96˻qȮrQg4W@n3͸F죐?e*%֌1ǎ( q-흣!*y<\Sdb,J)%W<qlf2W5A[q 8ޖ ז3"l)#rq@?aY++24vH,n+i#=ͬk` } /Nm^JHaTd! TQ1McR{ynjTkZZ;ݐ0t;N2r}ETY@ pkK&:R,tk3dN3RsPV(n<*PkHІ>A2*1\P>R(Z]!2D@/|{Ge瓚ncImڷuhAf^Y2P(';vc8J{kX~9:9Ac\#ƶr+V;@m-2 |EuD^K'R# ~K0W#2 xǜU0V[&dv#2Ƽgh"{qGcmg㚨ٲbH٥\,_0)m>$\~߻9"G!w)@Qs EK%2XqVSk6lʓF<{PvrhD Ȫ4eڀŁ'hl3(nSIP XaV%*A\dc>Dq;sjT*L16 8}y*'aeݓ35AQ{}( VP͌#6YLlnI ?=qjhu^q֪@ܔ = c%@5՞c OL%؂8}>Ww*G^ /=*}GlyEt[ C԰G x"( G+go9XǪҒ6Ӭ~8Kk@*ʕPG>O־9=-w7 yRGHʰǟ#2%,9R,oO78<ӕl.,?(ӍCebD69|}@l< qCfћ|9ɂC>ZJ{3:)3m9 2d$PÃ}?J7bnRI*79?nk@m_ qx)@FqilINO}OވAl0*5g>u ~` }3?VCV᥉Zi @$ ?G喎k {m U gG OSrx*G%(DP+ PQ gX?J0,K1>IRvV( ;cv<%Hpps\QY݋{[>שK0lC3E"]C,N;SA'T͚Yhb6RaEjɜ:?O5G.]"rܘ =W9i'h]CҽI|5X`ը2$1≸ `O(]jSΩ$X/+[]GfM);HP}Ϗ\M!i+pqTbt ݚ"T @*5`~SqM7mEaKgdWdϺ,gv/͞w)ce;h~*$g~Z'O̼n3;sX1C8c62|}u 1ڕ1 Ǹ+ A$ɯ4fokܤdTrMF)QD1ZZk*0+˘`MK@S(h݁&%@Vܴ%ɍ%H2b~nˍwAzam4[kS5ča $K#čѯʁN;ٹܭ_>[^X*@P [MIWTҿertBN5+5)- ʝ{}J35禵c'nڜTGNRKuFj3kTNjE*/Ĉ峳rm]rدWOiB.[TR\治.g,u~XQ\%׾w|gwӞKOMJvuwfi6zi|kc(ŀ`lziY㴯ܼЩ5hgYkv$kkwURx@>eܻ]̈$9aRW<5A:iu5ԥ)nvˎ2SvӅ;kwO jX?ɆݯB&:Qi泆٩ⷓl".y:Ӽ[joϴQ5;./Y-TcEy[n Dnș%6FǍF)%',|-,sd~ٽUkoOzjV:M_]E~^=R/,s[#y~.7_R}htDԬ=ol.یVweTh )uq`OvF\W+ڥ0_S5Tlt/x4"Kͺz,C8Bu|dXzeӭ۩zko*#㥯Zt`ЮUӵIzkU渉PNb mQKnHˣ^{&tmx~mcTmshH'ѴAUBg=Q+sFhhwwJYvx.k 5Vq)apQp'kwlG 6[n=dոݥW*ljz˯=LJ[CmX:U/Үi,k!>ѝA^?EtU'gGZ:Ikfx-UoϨhKsߌ׭NyUUǂR=Dh6c 4Y lļ[py%Qh܎}4jFKy.'̱ ,a9Fްr_VW6w">MImEφʼQߏ*SM[p_v]k;Z[eXsCsrs#j'6m`tM#nDp֧‘33%nفHRٕsTnEiJ;6:T ¡HMѣH mvYO᰿JZϷjzF;K_RʖM0۸ةq+q\YkF Iնp9ۯ"[-mcm }?[_w\ŮN[>E Ƙ>mjQɒI9Ybu)f_~?cGO׵-" "y-㽄܈N4EnG,N5m9+kDLv:CkZPMmsl3Yn c`@D(̘6~Quv9->g)>ֈYcbp .HN>+̘.-J]f)Y0HrȫZ⸘~T.6*0mh,Dz2FU6J k1MYk@*8i r$yZ EĀRزlMBcVq2^Ƕ"Dol>}ÔԷ]⪫7|0%p-S,n$Adm ܻsW{K+"8גaC%4ڀ&y&I><0= ,Gh z$f4"ˌj#ϊ?SAD +O&b q#;V` N|N>DM]d7ƮBȠ@>yj'h c5Hs nh ˸(ggѣ#}Ry88m_LQx5~,I@FE  Yoq|ǁ@dW9+>XtKu>7M !1gn[9ϵy:_ nV4Q${}bf$vBA x5#r$8 4j}BecWF(4p*f1ګǜifRGj/F[`q9 ( 1A%HȑfxV#YqeU!AUQV i:%ȒPTug`푀ʖaэ4I:9o +,z꽏]gYDֶ:N,0lmv)_Ow>RV|zYQ y{3fK0C) Y&Vr9bhF\͓eG-~d҈Wd{BIڠI8Ռ4Vqw-$3$iBP^ <>NMf0Q1+ x njE Ú 81G?zP=SMH'oEВ$icFTBr qӓwj{]bp$]mrFM!c rT!ByD۔Ior+vjU4Nxɧ fdA\a|4*Gك.7qh*r9Pkxe"#ExQtUUXr9湽QG3?.,2bDw@CF]JEzÚmDյH7$κp"`ڀ5,y coҁ9hق\{~FhKw\Hkך5]\e\J&`+GY2Qj`W K@V@'`VP "#9ڃ&7?I㟧]refݏl`֡: X6spsu2ͷ`&BζwoL6PXF#;6+!dPmAfNUZ _>1[eJ p]?N>(PF ._>ޅC2eA,rp>¢lV=tk.%F6q2y@wJtoQ7u$Y)FsN Br ~Z3"dӬ(w690tDu{Һ7TkbRQkw";SF̬ltz:c9.I&ϫԞU[eX~}OUh71a|VT/[g$tI#oW߉59';he-`wtIHY>Rk'-:Wo޿¯''O/]F gEt9E$L8e`89;gNRzKnkMBR{˔IB]~?.N41IG?[mj?X%l_[hOb>t^I##A!}̚\\+p%ۂٯYw[k ̰06bb >n(IrK6@]L[(Cd֋ZQG{.cs{mo T3\5[V_v+8ğ01+ '@fNO4ĩv$>Z`=[UnF Q;ֶp( 2APq>NJYFsZlKru"|@Aχ 01 OrU4[8N1}5A.}Ef$ bHE$\شӮ3/%BʱFͲ$yh8U8ޤ>fW +G9 ]{y V*~_Ҁ#~P<@Z [+J6eVb ez6S6Kʑڀ=r);Nݾq(m`öp?-T'f $;THKXyֲZs%t`spqy5e%DP @(6`bp?+ rKGvU;TϷֽQR3F?ڶѣK[Ȥ^x,8ߐ h Hgk7NLC:#~nzUp֣^V?^rѽͶzcw< [.v<6V%hBEvG'_U BIz^ef?'ft?MzSҭB]=n-]]++-z[N;ksRN⣓z{:7QiVѭW7Cueg+KXHBWU]zO$O\$Gkzz#d1pQ],2FoWF:o']nƏtvi:U鶭6 ˶ᜂ{3! 7]/4Fg^ n۫tmϸ`x.-ѐ:m$R]p +Z;_dw_$Ns龽n캺+q?KZ*G<)TwX1t%N~+H7U$k*Jջy$<ݥ]mKah^D,&W^$6;~fը,-{K.\%x?nϪ}u~uWNiLR\75JL֭V-#~C_uюmo挚JKpi]#O>zek=;{P# %{{hg 1[@gFd/n>UUJUE4ԚnTnQs`?dIҽ@d z6mmeqٕvp3;" ̙.^~z۪įڪM;Р/z>P4OX^/mX\UBW9+KUE>_$Sg]WY'[Xn-pbi0sz$]-]p<?\@ӧ5[ՓɢM,b*2c* p<>{x)s4~zf;* n.e` vc9&n+tǚDK.M/ hkp6vo#vs%~VNO99zQGYOXiis% vd I"F XW}=V_lg[ e'2lg|xyxCAְ =;Cbȋ݁.%lJdv TaISI7s]|3fK5~ؙ;[vK\{ӊR]ijufZ]q-P|a)#GG᪦xl97R-BMb Qѵ2p0/s,A:pZj~^'*}^hR_#a!bFa=IzRϷl.̍|vV(~tQFH*#HoD5ie ;J`eUwk1Dȱ".):*[ VmqK:TMszԓjltX 8;F1}$G 1^z]$׶ܲʱ+`d0Px\%ڒ᪾/M]v!%c8IPNB?9a3Ͻvrih $Hg|0GUV9Rrv)'dT YfY$+r sYRZ%]@#Aʐ`8>4`"'"6 ;xK永w- hS+~5-<3RnˤzxҬQ>Y䐅UQǀOǪ#\/󷒥x=vXi?a=c=sjl glR+ZͻMEM5iyoY2 &.%Z؍̣82G{e]}Yd2I'kIV5l *A,wz #q##Xie,>eR|XzRhmg(cL"n Ve*mqǰLPGrE zwAp3 >]xyoR%4U$ a Ͻtq,yVib19$$hp RLnU%1s\D$qr6E, !uJXW?Ԡ0+rQJFvIa gc:6r>OhӟTv7|W-MerɚId$ ˬ{Mn~ D&UȴG5`Vp+ i*|kS*vO,vR#" h @*X.]նJ)BDx)erMeɲGe$$u2K ]~`O GD(Ӵ}. a!g>,QG݈556GsxMe*>BA珸?c[Hdd8?j ;[jg ~sZ@[E ;0rGg;@\,1roIǥ:>m/OԾ.Hckؙމdq"cf6'5z{v>گ/6(+7ܓ^\r$c$Y|٪0JF5.ɱE ][싴}cDdZDj% $ǚ꫑ۂXyʒ zeΗX1X kdhŭ q{e4v9M8)#dSF˻%[8Ԫ-ΡM~pC\29@_@)lAJkt? 絓OI`+d,6*p6Fw01seYp(?O*9Րd;?"qZR# 44Arҡ$"8 MxInB;zNjjV:"-ܲB8IP28ȯVԍk2yxW`eR2+ q?u84&Ac,hd]opx5AKuN=dMF$8Vs^kT|2yrrMX쵺wCdɼ1<4ʎ=e/06m2YݫD C~#8 ǞjI r!FHǸ8v mPS̮1(ցvU Hh3>~6gkNЭ#x40gDk, ?FN6|{In8Fhb >2@$}:`ӭ] +`P @+ VP 40pb5#. tzse+OjE:Nq%nY2WAnj`s#x4Amp ~Xx#$ "dlFrPhs Fp~^Vy  cq*=~M,gSSӅ?.2T_IV T 4M lpAy0԰(Ղ\fj뙡@(bj+/\Z` |xpJ6#ٔ 3ZS%&Im}2q}61GX 4F )C&J*cp*Orj,Fl P @(mi$@*6Egzi;V=Ct7/O]|-܌˴XU:S Mt t+6ֺrjZݥ2GռirF Xu:զm~ҷWf"`VԚ]?eoo&fjSZ\"H O#Iwm QiU)O%^ݟt}B}K--͜eXDL[*N섬΂9w::z)j7jOw8++mv:3hO{Xiڅơnvjwrqk@Z{Qn%V JWO+dܜÓO9Jtz^A7ꗽQ-#itE7pK!4̛7 `~TMMiMysO[݆mJ+*[FWz^k2uOж m cHе9`3 r㺷2ʽ@g=|IJҎ>򽅂?$~sϩKn"/J!u[LWRnyª>:~[uv/-{,#}" KynK[|w%`,e9f $=dZPug[q6y4V K:nl!l{\$Mytz]-RMߖӓgֺK}2MWV׵^4nm,,k$՚i_ ?(W I|EGwI5ŵUTxMӽ6[.)Q.m]b6+ jkƔ"^NRQsYmtgoo9Y$[tLc9W8MHkmo[kI*k۰oNltn{KKqjDz$1XҖ]ݬTqYvӶv?(7gpX_-YAo[NQᰍZ5 uFTn6QrmY?QyǪ11#0Ӏ(狸ZHA3 x6UY*PNrڰ<:=O׮}_Ե=]Mi7[!4f%\YU\MJ6mvhZ.k+7koK\k;%،BC9Ċs`2U K X} m"ZMfT-PA69T0bę)v3?#ߧ/V"{o\>ǚEWMזoȞ;;qѺ˶H{`276ۻ?-5kU|oMݭޱ,z](."wwdWgaގu,=sfx7B~ X2edl]CsZn/WlmwMm-a5 q"C7]w.2N׊98ӯӓ-b?Bn M5kdOyY]Ό#kYSJ'upj SG=I7eXXrqU~UVVY$ZKG┬H:VF kkS~UQuq˲1k| [{7 nq" (J7>v>0YV|m>si;\YޞF(n/$<Ϋ$F[k.֫ \N,P{O59k:r"3# RrT#q_oZjk 95NGV=K^K׽n1Kr%2XM˪ҚZZzg]Mev>O׾ q&uԩF5^\[AmR j&;Uң??].M4I|jwjOrm,iCԒ;Y;"4(O rGKf78s2)A PK ۟zh?(QN0 "]-I_[i mrfvF9W?1Id[ȉY}R+;(`H(NԪQ嶾̹;O8?^XJPGPm;T.1',F#DG~hok53#4DRPĶJmo<}{27rð,:"I0bA*_5w`w{=f #PaP3\*b,'%6c?J(ߵf^ܸ$xk@O= Qրp0q΀ndq 62O֨7#pцf]NFӐr1灎xYj&KNh?0{g7(٤ eN$ F \Ԛ٪8n(=Wptt+ccv+ݍJ.BcR.J~OgQ KbNɮ#sڭbC| 8a54cn=_u@3Ƞ,ٴnf %HU)MThf' fNTk| s@ x.4Hݷ{q P݌C r dgԔlѨs5cl5'ڀ֞4>~TotNn~}QW~22G\&LE4dܴFO֢R ?Z)'$f-;c#h4vd<֡тjS &ZᲖs]a)E]INOUVP @(@R}nU&tiT>?֠푣kq=q`S&"0a#E**QZaK#f891j}!ĶSruOuN@\_LD,q)wIYQG՘=qqыYeNˤ^-k4;A4s%%HљXrd~9uN5Z<(\W}B-'w^y^ajt '5F3R>+? \e]>P9n\=$V !S w1)8Xs5>q*4AKcB)GrqlJPȮ}T eE60~-mn-{Uw|{~hP]254+6K>~"pHdnI =)m>MԺTI,1jܼq !lI;Qs\jhi-((.K<Ϲ'qukm;DM?NF{;TE2n (=!yf7)FK)v[0u.]*t塷z$fwL cXJ3K,'_\qF =Ҹ}pSWsFI#ϟj%D`.r⭔qysm ԯ-F,o9~ڞqry5:qM_ ʹH&6FÐr1ۑ$( `8|ϊvP'~ݳc.]g'Ͽa?XΗ)qȼ_vR?Hv͟j̷Zߟj y ~մNْrX9O}2;m`}`_iq܂[+) 'x;0x9r[pq٩@A\5A!Z5*++`S}k5 '5P#12Mtx`q\4RLlN+&hȣZ+Th XU*PV=n=kOxٛiR)VF%BB*yjŪ!\^̰ o H#eRwx!['-7Ov}mWFn.$tWI4ФpD!Z8elWCBIԪw)Zj1o(L}Jkn^Vyc_SۉƑBaR{NDqA 6u:ol$y|5⻜_s1iuRj}NdwrB6*9HIe'ծWuFO=](6o=%絏R6ZOf٘3C(RGeukkpUK rJAPCX[>E)Q#frcwR,q9MiRko7}FOHZ=K^֮RH.4t[[E~&{G1uݙuIujPJ.n]M//"Tr,,Cn{*mm{GQ87S3F"'K{KasYG+m/ufAo$k=von FXml kO-R]hkVn ^E!iL .壇3LDH%R?C&rJ5Zô'HS>^M[aM/euy>5im Ȫ-̑m2G^m>InimS]T\UCNoIvZ@?K1jE,#ɲUc{rX䑧=ŕZHbEk.M)5QZxKÏ;<.4ޗ_u:ޭk(cq6Ɖ"so3s -iOuNkJ:(4柯R^E߬Կ~ֶzZC614hg>{~r=IdKۗ}D֗J4mOnymGg1rN칖YuQuouy_Ze4D{.㌓EET^qͻ6ӎ6{Mcj,aԖ[dyD1Oor7sd )eAU;T(uid;4`~jUlg܍TmcVfh3DE*ȣ6ڽMtxoD9ԕi䍾Q!JE|b+{_BVT[a.p`d#%3P7 \?®1޼G{lt)U9cuޖFiKD>6q)ibVJ+K=}J՜x>uM#SKIS@9ڝvMݘŲaGS '5:M$Yyw|LћM麴NM3SY5X'bې4B8K`Y)OJ'~g+7/VUjܬ:͝R`& [~2XIP}+A'i=T UM,ijsXz A_K$:U֟Ccx!QƱӻ>n ;$evu x V[P-"NզgkMcXX3ưPp%i,ZX׿c6^{:;й>Q()Tsc c)nxoN?`3Ϡx-" wiy{wٽs G2d9+YnV^NnЩAvꋻ+bxW`18,li̙z '+ro=y Y}"OKG~ۼ+k?y2 6WՔ.3vSQ^OIn!j ws5w%EWʷcpq74uIE6vq}2}E~ҢҴ>kHGa;)T bKTPe2om_iIJM<ɮoQW|;~ٿAOڝ΢YndY-{&H[p˴*&9;6oKϣA]Kwto+m6H.+쉡w.ݒ$leځϯ-$}vFpۦp\i²;w /í[&A3*c|?|&+<_64nC5"L2u&=ĖC܌ ˵8A+UqyX$yΌwꎇ$:tslЭVrJ|uEkw>t2uwr`ox^+vwe$Ie]O՛妒]z+jMv=׺][7O>wz$M] oWbE߽fS g:z^̫=]9do}Қ$cK]Em]&Ź RvPTb.Pׯ:Wofj5nGt4ѥɨjzi;Oo%G=ou-7ߖ`vҚ<$ks}atCo%H.} w/mIFӖm-{ߧ Cڔ^۱g6Xs޶mkOgiuj/yH"խ$Zn;3E0 \ mJSRTN|Ǹ<grm5Hd\f3bC +zwg0wޫ5:?ZiOy=̀ WZV^2_ެkNG/,SG rᮻ!v5GGK1TݧQ|T6023y?abOUxUr7+|##椟(d>+,vC oR 󌃃Zbe 2::~wNIyhXQTrO<9MCY5V.,b7LșЀ22cѮ#ɥ<.Qч IMm<&g0$q+]#>MMIR0cpOzצoNFH^x,0 0.wv< ןrтO(ߵ,acy,kwŬmgT}&7Fyr8ܩ6uY 62W833G K%lK^ ?E{Dkq#A{ضxsUEGaGMŸoI:zC[]nH><3#0UjE |]vՎ/Ӯ[jO%Ξdq<$&FnUJI?pC!F"Hsǜ`3Ws'EI E0D!޸OGy~M}0i3;#ٍ:-JNw=E-˻Tchr#9Fݻǥ톣߾ *q}F=&m Rݔh'>?:w9En]^tyU\ σ|@f ~pI䃐8^4Oq[0}7]{5޴׺J=?hӴ-d}D3* P2(ߌkuSci5O-_ 'EG5>GJ!) I++`dWSJQv pN 2+`c<7ߎhQh2G`OtCq @fQncfh-Uq_ܭQ cjKia;%Bpr?_z'|ssh$ʡ =~W?E]tĺ ݵ};}w6fQ,d:+b8hk|e&~d԰>RG:ėnm!@eQuv4[.O>*P,(N@@ x4%vMhFn*P=d]]t*O{!Jf6~(^]~B$ZҮq\ߒ(ܷ-A7~PdQ`9#9B_8ڡIj(Sލ 5Q"F.o,P>ӴtSZo"ŖvdŸiIp\\MɡZfo"MVP T YmdqUAr+@ZEQi&°Gqn*Gj8[F jnvG"6~Z-Sx6KjcpQEv=p Toc]aXdh]"ԕH淧[PdhGֻ|H% ˙%A۞8-auvP @(uVs'*%`ۊ͘L5FY-أV?fZQ5+U@rFxU./fv/T` Ħ٪4 ,JO m#$5' HZZi,+mZp` N3ZPIϽk=SPZFKVJ[I]3$kQ+0I-ǔB|G[urRxyFrax+y!mJk6a 7wAm̛M`$#>Fb6)b~m$UJ"U]qvv!rxj _isXGm9x TwlٔQ̅l_ 󌭼>ntu˫׵mwnp%X VBC'1<zGi4╻UwK ‘F:;06p4ll%T+D9I!]s#|P7hBkorG9&O9_\ k`iN⴯f- !Kώ+F?^3wZSj== ZKilVmd1U$1EU*տk/ᇫ:ClcX,vS+XE#I (<ҤPYY*g?eU:m[}:GdTW[M[Go .@6`6HӥIιOkIT `r`fi;]%)9>s":F~,_Cx s(MxhfPP1ǽg_{u}ЫtAuM^Z+cӮ`[A0ܲYt( kS=h[dU_FX5%\Ҵ-C][m .H&td)f>^MEN`梴Q@ʮA+@?Qޗ?_ӊ/"u mN;yRV٘+d'm}:6<0<Ԛܫ5&O%EαDX' 6'I<*s Q!?J97G%ʪ2f[1]Bsoʕyg J&21[sTia_*3Ww5ŜKBDjαr2.F|IME<{!"rk< <5*@apJ>ހފPxw~;kKdtd]'?)1Ջ{SW":8[TC1?k+Iˢ# JD=0qoDsHTiaQ@([Z" 8YPa}"gLOu#kєm:,GڡT"ҀLHbx&1f)$R ` |p ~*GO 9O3Dlo$9(sx+`ך7)?O5VV_}yRkfT=IE\*ՙp Yl vFd ՁN@)@V7-k P%kH+QfEh q-SA8#Y$ V ]E7`WE$h ( V ɣ+ ]o5P66ލ1F-^Х5_ 0w!Cppy %5O߱i.4 6Q!ߝB_ KNRj~}-=e{=?NWZWtEap#.o'a; :r{]Ż'놂?Oz37-7Ri}A65I--\_"Ư$2.I0@,7_81S~/ۋunJW*P hkhKppg<~<k~_@!mB+IaNɅnLn̖r,G2BBUi^~[Ax^MjM&ʻ7w^I=W?{i7?{sxaH.$}Q VbZV9TOt=ԓԖ椥\e^qI[J˭ʭΕW)"x2\E} Ë_f|HmY>(ҥHQѿ߬\nd[@ϕ|Vzf&ڌJ;wm[kVTXtH,n_M}nVY7E#؅2q}3КNWlP&]֍΢ΜH=I}op(ֺƟka 7|KBS$myK5$w>qJ9n-sڒ\*Dr2kZ>ꏨN]ΚVvʋv r"8emmMܚRK>IJo9WR5,z#n.m@~޿JasՖzVkj-b(3)bOP0E.;qZnM~goϾocl)WBm&Zvor·_cFI+(G 0p|ޔZn{xoؙ=2kԭs{RCtŒ2e ӷ|Ii'MmRN[Wsk9wRN.45m丿fkUDLKRYPʘ_r"fu:5n\|ҮnKiޛ֓<ڥ,6%$6bGA+OanC;N{}<3:TcO5ݧwWHz.z^ ʹq$GQTTQBqIF6y7kv4+N,\LsXGHRJ4#-)&E X1!Y#-!h$N@e-#S-)}{vM࿵x`#*Wi@Nr=cZt}l^Q# $ς$R u%Pe`֎i&ٖ@S}W5vW)^LN╵:]Vnr۷p>Ï 7 ʋ$%>}zqtRvԗe=ܥKV'zZ>O5 zngokbɆEhXaKKV[6ӔRa G:P-J"zB2Eb5˶=όzHii|=+Je.nVoGzcNk{u-$3hͳ *|c j?i=U.6JyaZYUBnT9f іݴt%tu-Nf;r-py뾹zYFni0vۍ0<$!;~| wShwϭ[2F7Or J+<N%3jVO~_oדytti͝- S91kmT)FniF*Om[7xୣ~W?\7z=?]MRZ6 Z%7$DgQ K ,-yN:s4;öw]XGo+};4;Ile }k=kjHɕ#56fz+zo>9DIX[2ud+[ݭEo |G w K|и9f'>rҕ 5fa`f:.m} }XVBwc+3)6֭.=_)F7<u<ܥhXs<qdu-ԛ}n>Ž.rFII8 ?[fkNLb-P>l~F6c=K5TWnu֬+y~w0ʃ9!|4.\y?s[[>KI΍wн76?-ծKOL҉$1ʅ6PwvիԔׅ Os%;أ⋥D[%bh6 2F'3_KIK?׬:7tmy^M$lۨ09 X+Q%z۟*XV_Ԯ+ҮcMChx 7G(f@yn𻿧5Ǐ?`P_x#}鯧giZEqֳuITiJVs@=GosU5F_tM52kH"\vWzR[w!r怌8*vq@X|YghTsj怜1i@J@L(2g>s 8N.s\M%F:UxP Xlmh@%`ڪn ?QkkNܬ`AETN>y%-(F9к5=CI"Yi #7ԎgTW"B5 ׫Jh1Rsy+)jP ޟ(XV*j G+-]ɂ ddA@+ V-_g<FQ!cӌc-3Fl©O$RH?)VxEي;`q5X2$GIN 5䑦fBYؖf'$& kW@W9j 1^]N. (c,-ObFʋ@YmYj@(j@$U"-}뢕{bT nr;xۜ1WhJ0ѿ0{3"6A&7휫.y޹^$J%ڪ ,H\3m`TmuaPju1ֵ;Vcee9pr2 ϜW|sYK>qں[ti{YM5Ds,lcJ#iPp qZь[V5GYdƒNҺ3!ІnmN@ ϑAGz'[Ҵ}'u;gH֚=:$WvᵈpL5%('լvVx85X=vtԚzq:fH7R\KnA#B"23dF6瞦WsIqi9{Jbm sYz_:TՇNtMr ;#tM qv .7%\'or\Ɨ:Z鎙iONKYkZ65Kr ^᣺h  !Z.W?zԌŧ&oQW]g~:nu+cm5't#j1K4gV8*C>U/t[M$^J7圝.MQ:_[b5ס])5_&o+wpY~%vwJWԟ|//3)n9ZEށ_uKnm籱i*4𲼓yLC~$qf"6{7;{iZ^aWsz^>M{i+r$N,nNQY\ծ?%)Fyd,R86yd V2Ŝ|ߧ;)'Y Ĭ cbJrς>}[`h$]jRC4rB!VGFIL8gM π.{k7{V6sgBP}O#Iջ "7Y@Thewp;yjx3}lN BʳF줆duYO ]9W)fo"\mRJ 9<$sZY-߶H !Q p 栭koy5իSFpC) AA,0w2F69i-gfDQ(Co,v F5~ 85lnL4Cݿ<~ڮ;s%Ŵ׭ou h픔Hd2 A6!Ȯqsm{jw:u mwF-OdsY%ȡc6r>7y$[9SP_>rzMqi+)ZD31?S[jHI5M-ں-O$ȥr8`ApG5t=8+ cpkvDmFIco橪0|#xd̨w+aK6B@P+ AC< P 3 t5be*%@V"bA$:GHXgi ơ A?@AA,ywx8pq#?eHbҽ7U.ʹ~~9 a\CXEHcr*Psi׫rGFԣ%Vus\cBF: [kT'ֺXCF]n± ܓj1WWWKb|c7qw,#~1^9uJyV.;qk#pBjI'X+p*/=?ƛ7c? i1k0u{Zl8 +p)E02?ɟ۫ m{7-9VaaQ:_ y籜JַW vd%wce3Dd駪,*T+]˺mO\NtTѭLDeGp9dL)W}2.%kh-6d< .oY\jSRLHY Qy!A$&tUG 7gIE>.7~R^gnt۪d0_ dO7\\RpodU;A[tŞzYIxZiK# #2P۬b[u~~oMӧYU}o&w/U[mEYWA2ɵ!-p3өn["qQqjwګyv篠xjSCI=Bmnú@7i[DDZ*Oq+=6znǠ4: aIa{C&RwFUYw-_ UMbϢѥ&~.Yc@k{vKnn7jlOS;\pe]莅Nclzy&\3oj YY7#~РFŽ.>UD᡾-bPi&[^}.#lq#ثe Ib곕9G>˽rW &cCDREF.\zj.ګ*i^ѹKy7E$8ڰ&S6qCsA--u )7NG;6 W=V/7TʻxlfHEt_QwmOse,SX ,WH`pS-hJUi:Rmy|>qqzۖضԛp%/M\j~=am柠kSdN-gյ+dk}2ѾX\wPv,^P=YN5j1n"[PRXnr1*U:鎤m n48 mrH@)4Σ*|1+c jsrn5RWyY2cup'Oh{Oi" HgU (5SJ:w-طW/8"mdK.zNVP=:{hZE\[H7j$c[iWM&jM*|Ϝ {z#[sOe$ҚK$IJ"aVr}jN7M~3}2&~;C5ha{kkMNG X eJF?$dgIemm+a+5fe`}BvӮůs @n-eũH߁+HC&hvA5Izb7X8>uuAm.,ӈn+:̤ F̪'loSrsw&K ^;^E֞ĉ{YJcU[Uv1VPf5Vmi/6̽VZ|]th. 9fZl;IG?mQ7tZm$-V.Uڕi}I3M][7G 4;X_Ga A1|DJ'eP >csZ:թNN>y<}dꞒ7^E^uoi̶&x bc>+R88.uԣUܻRG&ԴQ-kǿR) 0ϒc㟭+eI5ᵌ~3MMזu&6keY9ɡ GòFd9xwdV[/ôYZbmOUϷm: ˘䷿_ɂ8@"b XX ']˖[N\kݧEY$Y6.€{Ky'9^&Y,zi̬^TwuS@imUS < {߂ik:Rih /$h9! |cϩ(9(x{XwiEgBk]-vVv}-E-#c0]gV"DaKn H88)KuHE{?d\5y^ԟImn{ԭk9 {Q>RN2p9 _G^I[l_c.-.u{=BK ej,m(vߴ"y(6Gw&m_r5.uK]F'1X*Egilϧ/i!ki*('bmV.WvMF {6iK-}5{Ή$XlnnE/ ʼm#"Ǒ]jM5Lz5巸2][v}`%_V/㖾*Nq{Z^sʙ]e%yCqpِJW1@RP+ \o%o:F!n$L2@RBq?*tvT7~[>צxnam]3b:"RA#8-ՙGMz_a+},9@  ˜>`|%="-t_"ZHVSnFXq];9쀸mVHhT+Y.y{B[a:dRܰ*JOKcJmzqu-O+si%Z̤I`H?N zn}SDG[ `˱wɎݝXc  9+q֌jgSG".ZY^ْ6nሀ@;IO ikr;lHM6K,M*Ddh\'+F-Wri dyog5vM4*a6dgqPYp9}NK ݅YQgWDѬ{Zִ"i>иxV$KDX;FRZbZM,^Uc¿T'ѽstѬRç/nuru+ۖImybYq`5=%FhQ x5 1 r0&6"p xR]o?\}5<#zeԝ]S=M.j^h\]I/b+;N`ՁB&DoS-8wJqK{f%q;ttBԥ{GV ^%**&Sk 6OZW%,*}/zTݷzzonV'{u2ę4eIf.SUtZQK lsigKZMV3uq5aq-M,(ym&eRDDX!$7J[ػmmHڍKk^^c.d#vhsX*c|tM&^n 5~Ԯt6uYnM`wL*`b8 Zъroҹ%cӟ}4[C4MOX't(oX̰X{d;"KW#5u1湖y\<`zjWFs8fwPA;}φJ[p܌矽t@]nh 2@fhB޳DкMt{W) re!dUi8܆0a)lqjxϕ~R٥C+Mdj_pe*w z^ޠ^uK+ִ)!:ۜ*]r@nWSZ75/ I$yI100q'$e:qj-̰rmV(Q|dFNI秢kݶWfuV֗zT_KߘKNM,Z6'B+?颚*Y|~=7[tDM/-䴹A)ډe+ǗP庖FY];3I$XK @]'M҄NqqWΟSVN!l5]C|ڍQ+[Qt$^G>Q"O)jV*ԓZ*PZ`9@6ֵ4LW0@] @UVkp6N]6',>^K0A%ˈRA }$Ww]r3'w@ǽkWM]^fwEFQ)*'i-D-\W9u] ċ>. 2ՔQ\沴Y`1]#N(?JuCeE[_AbӢ&EseGX#8Mj耫@jxד"yq]#+Ԃ'VYN[ٗL7S 1;Höry8y +$ӧhzoV5b6|ŏ$Mk1δuŦXw=GAtެuML:E-+KE¢|jV!+HSG5 MZjK/†_+sJHvVWV;X(J뷷e]IVtK*<ߋ"/PtYrs^è8܌ uTWE=e{/SudjӼfkHƘ*XP/>It:xK [koe-Ǯ;Rxݕ$[{rF}"F/˱єt$\+Sh{ԞîKRKKT] 9B^ؕmvaסGm]jWH|N]=Nft7^"۾),,ď O?BXڛKz]qEinWWvk4;gžBw;SO@i&9f`68]zkE+=Sݢv(,Rt歫ǩj>!h-mJ IHG*̈́Y3׷x}#G]Mt鸯5vV!jwn 0"bwʕ䞫#Nuq^UKOGޝiԑj! kKweAY e[hPƥNէǿ軳.Mt7T^cVT7m$q2Zvfg@1vsXΞK,ss?jf(S{:D{ KD׮ eWϽcCRf$ϏMiW]MGo&6YZw/ٷ=QrpOֱ+ڪoݾ_7g&7˴Pctjou6B{Hi"$d짔Gp>Q;YWS({i?/XYzXkO44H%1 w/sqqܔXܒ[- 9%9)yuNX" +\شPHQEHv*fx'TGgXA}Z-q?#VŘ@W ޖCL TL KV%}^}geG.2DCOR8bQ"a9܏WxDSǰ8 rG*\0|&=0dfPY ㊠Ӛh6ҠK's4BA4*wH*w(1*_9w2i>Pݮp#6In}]9݁I9[knw]ߵvM{EУJ 6Fk$+L1dOҵd3ol:W6ZZm5dx{ 9mv\BPH-8io?L}0K9}&e^A`W/rS"r?]W&тU*<\$ݚ*|V& 7`U`Tjz!4Ե+`H!eY{rff ?Nц*W Me*ˊk#ŇFk׺N;ʼs=CfLݶ1b;KSN;{,°⧔ҶI=+:B:ޡivچԚR,1ᷳ6۰ |KV\2FQ'v9nNjugwI:iEhOo\%%#/"6ٰɴ )ĚNUW͘vz CKGHpѠG*Z׶/2#C.PԾӥeKwQ,:=]5tz,FM S6QJ)lȈ?iSpkmq.O9u}o-} @(;?7Ojvz[[^5W5 XFO 2+7ڵV_Or,?u4 6ZkȒ9)qm+4.~Hb]";vmK|vk+|j.OM?T=.2KAK *3dnKY.4X& ,^P4DzZi,ܭm4voMwG˺VE^åzJ+uOprB91O*F!I{뿏)KW{5᧭4_S%g\,;z`DDݰ _pۑ;8JpRj<]U S;SOX_]C<1dgXdK'Uu;ܘb:I}:lB)noi b$Vb$8eE9עPѽJKYmխɺf4د,4H#HѪ=FrJJ0R]^1QtOG[[D9q<=nT,6"YPNrڜ<;.Zu'^p׃U;}jW\ wEiC+K&DT!rۈ2u٫U/I/wWq~Ⱥo:s.-i5WQv^x 30tbc,u&'>O^޾4Ͷtjf8Gu^yzW#N4R[Ƶʲ$%L>CϚKӥ.n5mTk"Q7Il/g՞Exh6a#BLE,M $IF4&:zt6~jf"NzvlV Ŵ I$f&M.l4qu&ӼRYPڜvzT;Ib9,ص޲MNoCƗ:Ƶ*[[`? x'ҊPX[mJU$sz;knRm/og[ ړqR1:38*d禾UIe_mbM#]ז1WZl]6]";D;#*(E!V•$x6*I&շ56^ˬ|ƭ>tܝ eYg;ʡs3fM!۫=5$ڎnƗNΏ<:Oi,,3|g$RMWȬv7nԣkS^k%Hm}J'K'-;UeѶ^[~IENKkVw[J_} m0YuX5:ÅY9X>S"Xntc.vq}񄮷?Qb讕aGnYǨ8Y"m.I(hEp 꺅Jyv}ﰊj& mM6"UC2hv+:Tb~68Wʩo[Cꞩf,ծ[D30bC,6p:ݸwio8\w4y>a}q; =-C}W w68hY2mwE("w`5]vMggMg u[xYķ3[<:-M 戴k? gbV4vG,r ֧mU;8]߷gOAmz{:u-yS߿ .$&4n!xK4)$ucRNPiE|i:uVݦos^ C/b h'Kj#5(81 ܚ괴4}u o%z gJWӒ>[\]:m[AF4?"H:z5 iԮZm˞awTX%]./L*X#-<@lӆ*xݦ}YumnmMX޵C{+ n]ڥx9{k*\Z݆n.dTD26l+27I㊦2{-L"h0p[l݆NuS+ZTPs[?ҹ݆ m[?ǰ=zGu]^r2(K vMdF8F8YJxfMm;q\LVJ40@L!el bi QVoV~ɽo=76zv#v^#W2@K6ӄ۽ ]aX^VZ|q/<>ΥUsoo:Ӯ.nsO;'m 0R(l1a5v%w loxPfDEU@ =9w|][&~N|]?.l/tu<貇K+rdb0wԵ]5^2󅛼x 5V#C F{ Dt|0W7x;۾dOL+}f 'm3 'p`Q6'.plZityܼЈ̛V>a‘ESΞ_m6]sN=뾘O6j+*ݎKH%&"KSKNO'=I6*i['XIc؛n!g $m$_""g-%*?ګnV{46}wqrKeĻ F"q,9?b K-S_sl78t'NYt`yZSUCC<#,h퉃aOG}3ro)ӣ3[.`vsMٸkxiLl_ ŀc85sڭi][w&뵍3R"h-V)綕6Q$r~.hٍs^xk5W g|jZd"- KYF 8q,9ǥwB d׮bl"vo.tyUv7\: 2#<'&Ҭ'X 'k%TƻT$dH'''½D-&I;U#4kWe)EHH jQhV{-MXȯvQ 3b1FU7W]*so6#v( $j}{jN4(11!˹%qUb)+w*e GV{Vr5WRJ""G#>N$\yͧJR&46>!fmB{]j'rhRHe\8lKMWv m*T0ܤ#$dqEzSn[\Eooqm5SI0EI (;?.5EPLUUe22xadUm<j᭫F֑G)v'| ִ0{o+9W?mǃT!&Ye$ƅX% 矦<[iI'1Ad@Tր?_Uʳ"#'*n@[躅-ԍ#b:mܨ+wrȬ=huuwzV^K[A'0[3c2&FKԩ]-].Si\g; MS.mZ[i'I݉fby$MzK x0ݛ6AizU,$ΰJ3#0>%6+_F[5iM,0HcgUG0ʹa@aj VJ/~wRThp3UPy8Uiz@>jp $>9"7_o,/*m9RirF#0;A?ڹ/r٩4hͰ}HfRjOV*4\"̌pj84E.[n1o-JqiYP VZ@ڴ8Ax淤̏E WDe U)孌dMvK8d568徂E2=9M(`܁)+i5IsIi) ,EnDyw Y~>Gu|m j8.^ aynhM Ҁ'*>s;XҷI~u}_F~r*keV&Ȯ5V wY;k%fvVWVyU {(uj0W#7|b-\?:o%{H,-=kt KDQ5↴!{.߻}w̺{ ?Z.O+E$!5c'K'gִzZZQkӋip'ey?>ki~4ݳZD$b5""~#,BvwQ_K-.W;{yn\|/Uwu YI$O ;v6*E+DH;۸xZCKUjSׅލ&'J.575K{ ն F>yQ$f>uuȴڟ]?FOw:žgitDSh o)&"[텯I[w7r\9ђh7=P-կXwK7Y.%Gg%{2I&2/ޠx{⪥ҴYEQ͸۽iHS_]e-Is)ܺ&diDx)$i]b9ٶӤڥOÕ>B^h@ZYjzHOKeqο\S>b46;?:JmںXwKLk[m>#UQm56&+[KW2;Umɔ@${2}tyFX^^nO4t sQ-&uOJeOՌP*pK:24SG"iB9[RO%JtUizOkmpn^A[jg0c;2p GOԣTR>"ܺ-R^伿Ce F hvqd Lqf &T[Sm+;xDfM屶kJH-H{1USHٻ`j־vZyu[]`#tBhz6Otky-֖6Haˌǐ ,W&,nRn2\oQR) W6n`d$:i;wuv/W6G}Z=R%Ydس\6X3#R`a>M*jO]qɣi4;ixc-}4A,ndmP;I8͊7Me}QޱӚ>ҺegJ1;H-ܼ`HTc.cS9,?*`el%haزqё $A>Úrus -Z)wdHD{rU|k/ͻr ]ISϺ8,R6}cR K$vMpF$!F(4uc/\,;|4$l:|^̛f>w?nD08l<AjAj'E-BWU%ibHYҮJ1A֭nWG,!g oɡ]d`wIH|aZT^Y#pVג6t:n> +84ll2*;4hYi$,&vݻo𾁳kkweQ1DHcwEWW7#r1+TT?+Z74jϟ|7d[(4h&:yLf6;[x!wo 6foQ$VckÃ+:Qԭݝ47FSO5(Xcf>0|>@[< o$4Rű&jyu6:W\XI^j0jPE##?X)uRLm4rH(=7U7'W'J@lzL;YP)}+*q7nēOke@ .>>հDwpf~_UI9J-I,mwun,Y-Q/=RoA-=9^:̶ \#nCa""ah¾~znuOv[-ԤϥxkiNt#4R]WON]Y#Ow}akib[K\0)d1[hƤy[ʥY\+M&IV:";]jVbt4$Zt1[fr#,RmQ*tÖE?C\fdԸYk5Vd=/QZMe}VhgB2ʲe!AvucױWr EMJϧthZǐ"Xq\uuV\MYM= z㢵bB,{9[d.%!& ľČ\Vߥ}F6F }k}GNԵSNK˄"3avQ61E'I(5if 5痶tKk鷤@/Ӑɨ]B N[Ocv[J;eͿ>ҩM/rJV=ƕqз0i YyZ %˓8`vO qCdשW.k>]enh}eItLnkGC_hzp]Mjqqj[SL4c EkTMeHt29=9wtwR~a龪:Izg'ZP:C5GtgGQ\y%THQ_K[Of:UPj+%iF姅?:-b;ԯuel-vɢw2tfMMlbߦR̹Nv9pPozNS[sxֺUߘt+%.1.(F1XwRӥ7rԬG"oǜ'm~mBD$4 ` I?zԆ,4}R&PîҒz:ʪV i>ޫsjV鈦;mF.2Q'}ϫ[IE6q+]%{g7B[X:Y^F#΍ycq4P07 uvX/J*VbZ޹M߾ijwRFM[ǺAk|Fn @"\1\)1HWΆzE$r^(;Knn-nIkj>o i:vz47pYٸLw*$Ku'?NS*rRSnM6\cz[|o#u^z)VW5c3_K(bKX R%g Wm-((Vɻ*)efEM ͕;jvQ` JZ)lK 7,U(M[w_SiԻڤFkzocz_V-a[+X70ߔHRYd,d+]`St#\dߦwk2>S7OkM듼\'xETXlv;F7ISiUX"P H$V5M-HŨ$7@ױRO]R:{[][U>)o'g[q;F˻nۗZuM-;On6jϽyY"}wҝ1ã]ܓ;pڨK+#Ֆ,F+ d6Ic*>\Z-u[4VZiz%-WZ'ܿ7{竽Ӕo1^N}kcڶRQ)>EܨcU-d n8x],+M/g}.[MBm𸻕K1n nm+pr2MxuL]@M G{5dYvog%j|ݳ0` +S=VTy;_kJUd]E^ꖽgQ[zgX>SP"w@O3i68`2]n=7M3t秲:hVmk7zuԄKII@##ssNܐ|VdڛnKUݼ2$寽@~z_RZN v)qV,CHŜ5OZk{ysqgx3-[S m44Ka'irܫ 4i`w0!#'{ux%w8NڛJҌ,S]u-W![IZIo"Jsޒ8]w*F J1 ,%ny)ZƺxAxBFyBQZ]984Kҿ2=u4n]#7ſ6O''k[ipK;Zumsp$̐BTc.  Iڛ/ֽ}6kAPڦiS;\7#kRV5\?/v4u&_T>usRm5w,z,߃fDb8>|c4r\ '\{ԲWI}1~S::ީhnn>Asa'TE_@H#t`U -(:VꬿϨ'7O^uZ -M.M9"#8V EmmXʜZnOaU/{|ԕ ]NhB.cur|B!O$-ןް矷F=^y# `r~~PڏRя]G4ԫy_EUx"iMn.bv~}Uxd$(F8hFi?<:/(ӵ^G]n$ME;lU@'` VQZkҕ^~nv9=_BhO0{eaIf؅hU6T3~=E/:Pss7J[_"GĘR685-Xi5o<ῠi&4]v 9½m_O؇:nVa0"f6e!o|W >\;o-=:n< +m SJ:a97ZJ,gϔhæPc~C9PA!pWY;s]}/D~Q=.[]f[r5+ acAf<4r$ER"?D+<'u2&N-]7}qm']α ^R Mka#YLb,ث m}qғi]ۧ}hujw ި cXɼ خh䱯f6aW&^O^q隇=Sk{Oz ,ǁkٚCo/J/¢A>S_ҳ-HjvgSzT4+:C@Esd(0L+|ʢF|>\')e&S^tǾLO>mCk#tUۤra.P!}2pŃ+ 69jC*W~jWg׵hzY,xR;l1Qn ) y#q5EA'ŹeY|Wܽ|?]Q]Kٽ?.~ҡSsh|[@, {q_:8qJpx$rz[ǪIv,6JYmղ*0f_sGF:WU{-NNVx9pEzcB+DDtC@:!< AqҌ9[<?і:KR໶&TbYYpAdr sԂqS [mlQѺRc'Q3$/N-33(7/i\><8zY9u馱+֑&%N[r7&?=ͼ tz+iwXsQ3Gw=oc6p=G d1wl:Vʚh泷y%7^"K05]ł"*U\sxF*>jl{ן[Q҉:mrPYwc >x\t%%H1E]qkтBժ {E`~Z8Y"P ~HcVW.^BlI$&80-#g8Y,+93Gmu 9䁝JrP0*AM'OϏr&vt~9 yo&Y\N4l98ݹ%R\]/ǔ,ūZOC}s9qf [ۨKiHnvY6qF|j*?`z_5 婑"y-%N~ ${Aguz?l]S-wީoeoa w4y+Si(6VOӵԬkVfHvKYD STUUqh+rr׿7ê4p,Dǽ\S¸ +21B] ݜI^+oo|;D뚤C\Ww+Z[m9"8bU4_$nև,/n3r6!AXEbQޱ^|BT$Fٜ˰( q $m`dWy";{ޤw#8y3+m TgbrW9mǟj8@YyHB<(涍#?` ASF%Hv9Ty6Hd;N28>5-Gիks+2vTn2<5+iYQꞒOլoȖڻ wbW=|78VuϺ4i:\Wp"M.r&[bq7nޤd瓡T6 tCm2ƻ|:'Au>B>1.7)<k=9uۏѨg{OL~M.V$M-E\phDEsu0K>PiKGkZE95#ezڌ^d*Չ TZI-rWhl:?ߓ qYl/&7p.[KS*2]#ȬKBHHѲa+e(& 50wdH$u߄83Qtw- KlVks'̏܅z{,gW\3+GAGO/֟me{Y]dva\X",ұIxJ.B%Ծrj'N|־|X +KI"Yo+[x!jPe(U ,T 1CYT{}k6 [i92,@rw `' }f礬,:(5kYlW%on;DđSvUy5ZB-괒j^w߷߱hړ1彬o(;hԼ)m5@ f-;kصb4v5U%7۲'- G $lf)~^b7vhbG,b5(7Uy;;٦>.K8 63:BU *cS[m/9Yti{G3.br?jA?ݽ#ި1>XVKY{0nyH88qXy',ɒ޹J p[9Պ4z6E;wvF 9s۶~ z;Hav2 @|z7EzƩZs 1kN#\y%>S^M)4e9Si  n `A{c$ )S8QS0@4;oVH9^jP(m$+*㜏?ڥjW\jԶ0!vEcQԆ}ӎ$}T׺gGy fwb|'?iEGYi+IoYo'sҦ3El5KW^}g5GX}Ifݵpf(.!r1TZtmtJ p9OQVʍ.mdN2jN5LDQı*X[$`|RU%Uǿhl ZTz pq4+@k4d 2=뢒\'SOҲ ` `Q_T$s]6_oZL;Oҟj8אF1J`n@ڑK6 ܖ9MaEhV HjEТ+M./-`忴  u\*ţ*+ܲK}<2%mO}'k( s@XG]| kGt*^V+w'XWNuҖcyӛe8Ym̀ J 29j[NJQKіXڒu.Fh֠?[,Jʷ ;cQ#c`v覶5tkڮ3j߷r>[WzOFFokwt+kg!6=ɯWWGqdV~oN] Q/d7v KkϿYBU^G'r*tqwmsq}YqꗥY:^XD4k@]B!MڻY2epWǞ]VvW/U\[/K\.ֲGuUnz3Fԭవɜ̱)cݫg.d fi[cL4ۓIMIgkKS9}e߫\tYjr<-n%F<]Xř$cm'ܡy*XUx]GLA7/ik=IyHDrEl]#[x{t\b5z0xi[on*;\oF-?uRZ iuYe+}'j(T oYvW toQ&~V;8W}'oޝkOc}YcHM#dWwž9ͅ*3F ":doV&~t󕶚fgo[:YztUKC:jz̽kT3"mҐVxʬ"IL'RӔ^T|<ڧ%OjY;ޠӓ^%+Yr#VvMufdX1$GɊH-)(|dOrW%tJiMkC~մkZfxM>J%ѫKR;GlK {jqQpn2sNP.fJ(zOM:K躝T[{Ky=˘,VB-ܤR$2#+=VVڪK*7ngFY`t;B4yuӤu)eNa-m ImJKz:nm6ǫ˖J>&>tquWq-:^a22w7nuMbuzME;jWME֔ZKV QHձOGz_'{{ {s,s4Bg2$NL]W0*']˨ I{Z6+Um3TzZ{m;>iȶo..fG2J#BU,NvJ*tQrWW鏦i9;u,[x^:.k;n4 uTylڣql$ghdY ą:BNW=ҔEO/Қi%\Id^m=Q`bߘ/lnm<۠!x3PfVbZQ)MT)cչ9wnSRX/Zj^uzSVCecn'u"FoI#Mhg%ND@_mn{]K8|robtxuM–7g]Q'd# 24^Դ!Zsv&Wj~=[OF^ӧzr7zPIs{[41KIۮRQ˟V+տOLY}RRQX s("qqS e+K VǗʤ9]C#Oе-:FndY];i +#GΑy /ѓ$qiU{~yµn[YV6Iˤageaq";&IYA#짶)$Swqv?G]O\ڍ66v.uylchnܗdm̮z{5Uq|ߋT"fuw֯%h߰^+|*o0FQIE*=n=F&iwoj$ʲ#N;ϓdf_*Nm٫ I8ƻr]9uԑ\IߝD^d!#-)m#qMukUOH zURbY"n6w`uvfx2#ׂmPZQa&yY4:O;;y,[Gෲ b[[N xV7 c>mSS^[Kk~yRKJ+*ގL3E ݹd1 ,Fr635ze5QWq}9 U]FӦVqɩF%a%Lq+0el ]uЋ69wydu;;)5 7 VH]E*v#Anlڍ#!洢~]ůS[wo:{]FR跳^կu[u2[[IV~J7l"M-F0n?fծΖ-,vK/N5[/OMIiZKַ2]xH.G-.+z:ђnYNU&\{3O^|]ƑZ>zm֠mXH{Qw#VuFQϩRc4\U*}dW!?C=>wZ-e !m"X dyCڭo?<6־S$K˫b]n<z}gY:ktF^3{"h.e3%MgLʪ)TԩruN)a%EOMkmuiow)k2ne$p2&#TMiR=$Wj}^n㹰qۓHgu GMjy^nk*f=5}K]%OEk7]Jۋ;< 1tzmeھv1w.t:Xm4Hc!wI˻m2($q {(qr|ae Wݷ'w9`ZzåϫΣ6qon7o;$%<>[A(9p-sK-Ŧ*r]1v RĒM-Ɠo^[j6s%IW.RHq!r_픲FէN]붺q4py;A`b5$X%=du_}Om0Dѕe7dcnūtEyna5L4yܥL6 15EJS,ZN^h0Ĩ(I!- H2ܠUqHWa6Y;"w$kmorvfcڊF69Y/ޫKtcR 8b)$z]7׬zV]K?NcޒFBn`CmV _;_==/Qr?kx*gκNMmWK5׸eld,J7h.X4FL<7=De F*f꯳K8>Tt6\'vMoqkaI,<"8bD422VޅNhjs{g'åWJYwRgykignкrʩ+.tr"kz4mo9ʵ앶Y j4)'XfIi#s|&qRrIx_~AM6;fmy4/v0卐4fn!rNs]^[ܔz=:}7B,>C,.r@mdT#j%߼~o#vz΁SL+{9[MV䶼UʣŲM+/h|2~r9:=h5?CQt̝GZk6W"Kf|,q؍!`E0BN/KlwmӮ~ZX'̄--$Tj $F>75=z.{34!AwO /JK7e曳݊:UАA#o kU B_+.Y18ƎtbIpF<4I҅d·<{U] m[oX_ˬ/Qk Yy\p6UZmB< ,0?j*>F([3ކ*?T]@jI9˰>2ɛOH)w à`sM7HZˠ?N}0M ' A+GazXH/̡e|NC~7 VsugXd_]Am\j:RtLm3Lmi] vKc_KKV:Qi+x:e'O^=?΅mqoIFc2GYpU ($q׋UӪM.T}?}+-cTΠRH!V>% 0[%̂Yps \nC7X}WשgmNպ]TMP]$8I F"]?Y l,?x9ULQ|1YUP rwszw;&{$R #T ./EHncib%nPΤ920>QGQ6(EK7R,x"f4`+{t+:_=%Rok؛Nw>i<7doa KF4}bkIvpH pq={Eqi35G5 =jtۘfk{hIC lY19/{jˍ_hY9myayNɱwm۷# YvΗWi6\ZKJI#-gW/U@O袽N\qAr|]h%77.|#gV$d A?9Ify"F-*$틙q.y#~E°mqout;Md*!duQ+SNˊ~wOXwpnʌ:,#:ڄ6m|8;N_^/M V="GL· NeV=ۃ*JsOSc-lү弐]qdţ(*ZIU" ر3˂~+jI|~گ/ 藰L2I32#DȨ`˟"-D}x-?0ҵ.R>=.ͷAw e\tqž]c8_FqE'ɱ @#gGiGiª, r@rLK< }pi#vtΑr-g"V`Bi zjWY^;اyuQՎ{4qIeyBp xJ,2~Aݳ'±(=_IihڥM}!RL%iېyكg*i&-Rs>i]O@ۍYzPz~Km=u}E5yRMBmUebSF-i'.Py=#n NSE+ l2$Enh!Mu^6|n^ϛ;l |cڛ!TK̞gk؞kv6⎛Z6ab[]핥jbH˴|`ȨUznꚼ>2ܪwv>Gwv>u=+Xc -.,J@&-wd8Ж֥o-gS qk"NR4[q_-՝FRD.)` ~XW'(%JqOs/*ofzYUnM: 7#%oĉA-\6γVJ*rTnb^׺-O]X $H 8E2)CKJ0ڛQW|mVy|s|Bhzkq:Cc34ؔd`P@kh |+yK+nqh= sZiњ-MiDҤ紂c9C2fݍH,kJRq=O/mk;ppkC[%']RuSw/1g2oS[ ۍOMiڗҌcJ*u`enRdin-ó;O#6I|NMiK.-{qtݶsk %7=k =`62nʛNI/Oʩ+x~~u>:/T|+Ť$XuZxWi)n|}gJ,cEoZ2}2|HDlsZ꣹mnnڏ)IimF_C=6+1 'jHfakHUR"+Udn)2/%ԴԬ$ D'$F%VNK*ʩ 9zIJi2aJ``~у j /X[]iʒtVݼHʪF ƲU O+ջ;ye̽QFL:%+c Ҟ׌y=s~6-u+;?7Gu*c*H%L՘KkE6!H ][i#r ۏ|¶y}v[ 65ߛ5/:.M(%}WKj `<RD.x,wȵ~4zmu_|?8>^P(~i0Fm@3IZcjIQke *@R b@~y+" <+y^LxV޴hd52jIA bT *ے@ TM T`T*n:qDzi0dGd9RAVq^*Ey<$K5قK`xf8sYQs`P[\ B=OS04$,`s{mXi+I{+?fzi\wtƛZwW\jucquer,RY\Ɛ1i 4ĘMK|=Y'7۪R|6XQkvp~/\Ѿ_F=IԞ'3‚Ar4;q;:[t!>gܥTVԭ%NM`hSݖ^YԻL CF9EBƗXv?Z3J*{i/ԣ iT>/Kj>Mp7rlڳm9XqFUB2?G ?$7(<}n{Kr~u;k~+/Qzp]wP-[DfXٓO]l ;Or|ڤ?]WGRZTsZXpnvCmei!Os${hhm ZZ^A+rU/>3)<뾀l5ޤ>,A}52 9w#$`]CnK um,9bxڍ9=.zs:6Yd'х$Y3Y~g<98媒VK%TKΗ:4XhKϫ^tՄҗѯD-13Ĩ "r/qpђxuYd6bI>ޖV;&],#woVhS({Hɇs4=Ds_.kw𧫞z$W^E1NloeV@fbUˉYznF2SSsKkj`&?.^E 3kyqٕ;T7(nWkZOԽXxDy=gK=A[kCiWpȖ` >%#N*[ݠ4`qm4,{JQIn]z:RNmF}^ZK ]SR]=̱ ecn '{Hcڒi7(%wJnX5Kl岶n"%&8i|g(&~gEGN-E9+Jjڧ(զGI+8KG=9j=;0kݪ閚,=Η+#FZ-5W(^w>j̳[6vYZPwSS%m2Ԫncac'bbxGmfj&lSo#UYqQXڲnC}mZ'HiN5&a"Iⷁ6+̒#}R'84Ig*6]*(.亃RкWѮ2z2M2Ks=jҽ˳fb{ Aۓ^է$ԖJUnKfUn砮-d#ֻZߗN(d̈7[SR3ԸϴjY,M:,1_}e7IiҺTKvmcPۻ*/w4g~w:*q-.?1J6|o4^P?Kdt5lLn =sHjZ_QoQq[[ EŖvzGQj6 uӺ}yf׹gtflJ m}2Ī1S\e}WZ˻,4+Q;PiV/KO T1J7*Uiy}#Tz(;R:[P+Sm+C qm\H߆O9u )jII5yi7Vxrccm K(DX,Ī! ,Nb~lקN;ٹ{ݾ=;ZmuEӺFH'#@4n#sv7iR~xM:G.֥&4cp*mHrIuү r܌̞:J]EԡH`#(:G*;QW˷jMq~ymN몵AqWWk57Xa͑*Nvo5;bAL=tMApb*U/x3]ֻwĚf՚&=KI[]-lDx jCGIjfQOԕamIIvov>q֧rIi9wݿs]HeYlg`ybfbY~{c3թCQfݘf){ΘC}{5 KW)e95J7|S~Wiҏ>:ϤV|#ͺi72(XHQzuzO^#Ԛkԩ+UrMc.8EJ g蓽ݎ5m߾Ŕv+ n|JCw)IZ)a*ߧv^W+9"4#ԣR_JDV$E!̐ʒm,y+vnq-1UR]cNږU-m>pͬiIa\;C!EFqF9t{#RݫQRu7æ-HKO5)Q+Í*粥F\oοҭ:R B~nTR81Aڠh~-f\ʣi\}GA1b[!t}~ B]OSk[Q E#*,i_nIr'Y]goɴ9X-VcWt#&onMm)[g5EneͥHm 봣 Y~V\q\5z}=xYG޽" zT#u\Z\ͩH藒4ac17?;NsmY;UG4WN5!=Iu\@H-&(8lFh̛Ogf${(Gdt_,ϷegCal5<,br&vxSUK=򰼒 $52] Ae388M8BrsZITG$H<Ҩm$@veS!OmArpFs7y㜙fpؗF*WS>+N6ɽiIylCX spҬr<~ʌsXkW9vتUl`cpj*V&[7Q/{CR^'cQ$} RG ˘ ]/jR݅ʮyXljSLH/j}T9H9⌞L%w:G*em5$\footVv,K$w73oB؉9BU?rȷ7/ql= JprW>&rqP;>ue\k}UԀH$XjKF7kOMi4ݻ<Ŗsk+r:pW 3}L3mn!gI7?m)*U%Si$ŎY@bnگor(gUktnӮ;T{Ye"F[  7NkW6+=Hu 惦hWwӚ[K1<.gXXH3`f:)J5'wJ?bGt9]Bhc&)pḎ>}宺3n'Zo: &0HB1A d϶lש`I@CρTKsƒ) I^Xj9,SH],/}EPgA$04EGX]٭@nCs#ٝ-׺[2'v>؎8U;ns=8Ub[a(K*#sc$ '?\ YB/T{6GTqV]U#Cث" A<9qǟ5wxݲrr~`D`f^ v ydYڥij77W`vGs!Ic;H8u%]|0\ eIt2F̚>"NFQFQ}]=(i|mtX_C?ZOqyY n"BVUܨ22^~?qJ^xõYAaQa0ʒ*7<78=r^Ŧ Y,ⱚ=Nz-4|{O c[l}ciXjrNRK?5U I];q]g Gt*«'ݧn ]¨$jr`0d}߽eڬַF QXF+oW|`\u)f/*_ؼ{QIiFr`}>퐪KE#vU9 XRO7Y^k5RYdK#egB̙]W 洺T\asKУ.#dc@hFG#`:AiYڮ>Yi׎馋t]KZi}g~7"ܓBm~ ^5m-mJ7?S.+GhӺ>|0ja?s6J0D`z:]YITIa^g)$|r` g#"F#!Vtbۑ'ng}ot7Nnu}L9EHFdpABIZ~(~]Ϝ+K'i#Y#hE v\bF@lpCx ץN(_NiѰK$r8إF.ö@ 3 kbn g =q,DE Ɂe<`WTE^ywfc)z?ZėqD6.J[x\SnFӿ=IFL3X2,4GʅF0%^w|=5!Id2v78! 1XG6r{N+kkXl0ۣ.UG,ߩ5ؔK~Z "+( ($2AUQ{n!s77Jc9⾝gyԔCWb4@x8һj| p &J@V( P]wȅE u>>%ӞBFbQYNFey9rH\s\:u)גMR͊сQ:@\'Ee' NIQZQ!z k/EHFϡcqMsR[+a);ⶵxdBx$D>_j1Sl|Dׂd~#-OIMDVh P(*MX( [M]T UwQj @Z-ִ,[xp0(>jՠ*ّZ,T Ńz[C[ w>uQ=Vq[ ifCt^7a1pfOpmܝu񟯇آp}wһa^:|<Xįt0"M'X!Z|E;WJW_jYvqj575A4.ӺVE_$F$Q/FeK)rb1rm5J)3na׿ORtONzC@MI&5]*cKIKk%y؃,,fR^^Xؚ=+K>;_PKM~ wpgnf##Gߜq7qQ$WtRM:m+ 혦t4>/F;`[ /A$eb^1+nVtӔ^E7EGk :\׃OEj:f֦{-m۳jZ=YKh0IzeG5%)S\7K+>3_SOWP&c] k +N6ArHZT7§8'(cֽ*WSZ]]Ctf˺X{ۗsvT ytWRM$ʫᦿ}M+GK9lX.5uKM֥ @)!gø߻P4sʖƻN uNF۫t;K= =Vmsp9̪3pbVNԚn=ͫ{']g,Ԣ;A4K>2]Z W5Bi&yTX 9+\$`礗9rzb2ϙuCwuj>6:m奒뷂Ad󏈖 leA=꾕Enj1_Qq6Qg[ͨ=%qf*ie]}vK+{nh 2kRHv#.d*\mMUyOn\ixI`Q뙢T#hK\|5*w6`*+tUE*U1X]vAj=v[E f4!f+40$wL=>0z -{bMSUhe)7 })]&=Α_hc]O`[@"!Is o܂mnF{6*i:n^c9ut}s,N:˩&6i2ʖ|곟{ݡڶB&Yuuܣ8iǟTi$jztޖp'Ző7Z-ƌȲaIeN;"H5ӣ<>$sU/%zQT7Ge=͂iDBiIiQQWb}Tgۆ7WNʍW 4P]_jmA5| HUiQh6q=$ziNR |]ۢz#@:H^Mwc[Mi u69TE3s`f{t,R]ӫn ʩ;=G]^gE@4'CC̭šwoa1 Le+,4P\p<g 84Zs˓.+m4I3^&/-719rau YiHl/*sy'nO̬w36x$dVs@$4+#]XV\526Sϗ]?]寻|?  ۻ۞@OvLm}:Y\oh Clkmnk/RE_7^ZIO4A,%r5ey;og8 8wuNyWOM&\ߺZ`Y5I"G&f *+#8]T7mnOUZv7_Yp|2.귑/ӵ6[đm%nVPvo^iNK+gokZ_E%ླྀiI\E'r'啲[~OUCSWu}M{{jdcw$̎vep iN*1$*_R󪵃ixbc]d5ڼ8ݜoM<{ p`7NuGĒ|GGC/.mO%̏"9.XRukxMIݻkxaG{!uZvde{IOX`FjIlXڷ] Mk{qirZ*iHrW 99u4Nn"^XA DvbHhF1ȹWPRE}xj)qpO+s8UԢQ q +}k/&#<ԖAJ-W0(l (jyI J֐M&G⣇JQxmM+Wm <*y@ KL f` !Q~׵" [J6(yN}:\:O R e'ca59fv}1eR#ՎVo}; ;l.I8 Ohƅu6]egw|K.^ 3K<g y4]6劷A+g׺+{[^G3ٓM*|uu(Iw0mq: JK)nYtWYEys}-j0;Gr" #ݏ]0举y__$PldZ?U~ƃYw>ӨYbm3x2a",l6>Trj<)%gyYW߳ãB:eF =Ak' vUNg 4krb)mjuu)?Kj_/gk,z0JLųVpТ\\,|<]DkꮣQE(Vsk 4Ru;Kcl:4k޴ԵMDuKBNm!0$n {Oih.[uUʼxg}5][tαmiq E-d*mIPȋX:㾲xOi˺t}O-Snl 7vE2,f#ܴ>m>IFZASSyߖӇ@uVӑi=Zy!ӳ$2]rg!2ِi#:=^cW,(4{Ti1V7a&i+j:M]bfsG" r;EO$'˖0oRx8Wf!G-z ,kKWSoh6E!%^VfB^nś(-\2xVt~u~+dnt;Pn qs,f]- 6n"ڋܟ+L(9'%|H>;浤C KCj6lv9C#0Ieʲ4v仾nJzssYT"ګH]w=O}>aKkso-n߆yW 淝$0U]ذ4cco)6UNFK頱:ƵOZwt]Eպ;ard30"TGk_<p j-*U(9NUdw~,1*FXi=|;ΐ7]]I}}WiJ$ԗ{Jx4iShvt Z5{Jb$hAk_t,%tS76jI/SXܯWj+2l_Ji~ǯ_hZn-~-ѴcwBYhtqtԝEpsY?$juU]kާVs۝:7[FI (e'$hAiͫM-ͷtM;‰oөcwpjhûj0cm{5bmqy1d߸bW@WUXrTn/r/>K4:&MҮta2ZPiua_[#K D&(IZ(-t'%*q,U7ܛ!M"֚Vt-H5mW& 4q !UqUkѯ|,9%&7sJ"l4z-mH k#c #" b)8g k?Jr.VKYi,a8E7mv3/_v%qwkˍwY5Rk屼MBD,.b,H)?*VM6ޝ\䗃w=Agԏ='gyhc{(^&s,o *<pq+1a:J|5WSLEvխC9]Q, EnQ$_̱|v|vnU۵噳]kk\֍ZOK[={ [ƨ̐4VeefhRUv7vTc)Zmy+v^I]1׺~ԷMn}Ьt4H.]I#˗ ѷ1QA]nm\yQj]5bnCp`dTUQ#H; S"7[騨U*tլ&no[_LZeިk]J$v6/:zOq4R(~yc&PVHg_YbeSӄl%$㌥#QN~uT]uo]2Ispڊ^^ȲA{Dn8g;jB OICNR¸VbD>gTOWzCm~{T!֚hlfUðvf %Ĭi-]'qnNe8tYm"ЍZNc Vp ۽ðar̒Hՙwqz6qq{7xuSk5^ x :K-;n uo+/l;M{>ud8>\%KϪy2j7ZS MR{G2,U#vNWQsmJt◙\*sgr.$3L > hj'nUI(,.N{[2ѴpYԞP L`c- Fk:k那:v,c[^]C55]*B"EѮ+ۓ̀jiʾ I$mnUi5^J߬#z-:m& ;Ted\@ӫ ppb FVuW{ϗUź\m;q`r3}+WkϵkU--1o1O/$R|8^ƛ&4?eXY;~39bv)n͌[ZKv\8~E9{+YAy4lOi/ڰI4yPQu$bPRT <9O O #H 7BN2~QG>R&CiZfVY6m!͹[8q>e:BINkO ҭq:CNIk[}N_*{~q,FB0NCVJrWN׋$M7O^e$"L.sH_VF[h*",> >kr2D`0hI''< P;:'Vj&R{;>v^6J08ܼda[nWM5+]@ }k-жs@fHuPPƕf ur9  8Pҹl]l{#/ zd:\EMoZBRGbV$@RC1;k3 }M[[II~i[Ժ~f"7P$0C''q5T~g$җ5yyK= -J+"DʢbצrحY2͊n7Ii=-Fd+!JautmoP4+WE [0$yWJ:lkV#M,$YgShFi]*x˲YO-pq ЩY/N}M;_P:v۪tK^J%@Es2m V_/Sf4^rӵZxaqO7z4ZW1MBDNNb.P-6|ͫc7u,z)zU{8~13fu%$lf*+w8{]؏F'p%O?~܊h"(r*P6%S5ԅ呲HI$$IER9?j>v:FbtM+A\i4۬HU=)-^-MM5$%MҿO7)1-3^!4qmx8ҥB& dT}ϟK"(P$ ?Sdʠ֬@L-BNտ"\>x..IdHP.;#]'[N;- hsH5,E%ԽіmqvCDSŹzmxWNkm7gCԦV+9d$g>ʠYCKVf;Z'SuNw$7w:Ems-THiB۰m'kkI47uو2Kkp4.ѳHF%J%sW:ҹ=*8+<#//]A4i-=?^KA4@RݱQY0 稚A&1~i`\X"ݼp$m,{W<ʶX+̣D/ Mt!Σ#u8ٞV-'OҬF讻V^(!j4팖UǃG'+ur2tSh7ԱuM΄^!Y{yA2QXc5A5+kTl t |m$+۟$ykѽhgB_2zn޳7ȲkoeZF" N)`296/ ~U;`T Ȩ|28 V9UO m mVl @( E@*`TT`UL+|V]h&TZ8$kiǚ·_W^rUU *ZD.};$^dfq3e,v!g'#ڷ J;~ޏzI[ux}>}+YT~յݼ9ve+qRa;5tp[K_jxJ8y,%Y?6('Aibipuzq a #]b@\#<|O[cj>|ΝnK 6w~;,Tׯ584weKuDXyeyi4[OAwK$={ee(75:761ZMZuaa=Awz~e$?깒$bEi~X=*)ԆҔe*Wҩsu%6֭ԓjZ+s=rIT4kx d(XHg[I_7MG&^};u> }1c+F DW,P6GAf3_R;4[4[-"ܢ-쪋aBrϦiRWs^V^8':V-zd—25%G%G^6;FҬHID#yzrOI[xR]ɸ|f /Ib\(D'q,0Fi|seKӺkET 侸mݘYηB.$0U %gɭ=Ilw:ܗo?<]{?~9؈coU]ɂ*lcG^JM$U<8Sv 7!}?㡹KrL2Dlr]O GێJ W3-u*k}(GPbnG BNoq?VC~O-:k mq]E6r{³E#P4n +łpX]*ipZH4z&hڕŻ SbZm嶺֛t{R5q2z}o/Ti}NZ9!R i[l5FU#c\m:ۊۯ~yE6/ɩXhP5jrXXNuo%2̙#"Gq!xcdv|8+|~\+ݙ)D)D^>[ zޑ:)V4EetS|cvǧƂn8O)qtVz䬔}:PY㴻[:[k۩]zDJ;֐BRp$3 3W_-ҵ'N7jNM8iKun[%/O 0K\Kga DҪch][7ɥʝ+[-[eѵ;a46xhK{hg1)i$DFi&#[%K6{?Z6#e"?-Զ\$\/$4問5ViT~ѷ{yzIջZ]ZL5BEUDhf0S2 QД}W-nY^Z|7uasގGeJy!Xa|yh''zxe#?v2ZH5I SR+F `<<lvjEz>Z&kE2]we-E߃dnLg~U"5>)FJ|FqI<m,c>ԴӢԴg%14sIp12:3IPT*yXRJwZ{Jz~W]V+KMc{^׬o\CqRYnUT(iY8Yϗ\彛wwZڛtLv˫k}Jڞ4fֶv7rI@"FI"]n|/oU9k{UY~Xjڭņf3,2i.fgު۫܌4J54$N5Rړ~ LޟzWk=2=J#^tmR-d Eõ$CO!U^{$'ԔQxV[NkX=9HSK;ѿ}Bknmf΂Twr¼DZCSٻԶ\q/U?摯tq$iS[un-ddeH~1gbX"U԰ZrQŵڔmqwv۴O>=9T]o%1FLݦjwĂRy B t)z\-ˍGrURxmgW<8*}D_5.1#Ң鑦 ZIJrn)@ګw+N)\qE-ޝyڤ(n#~pUЬzvMwO:bK6 R9 -vKA%q}"۶-ji>.FKҫje8ͦZUL^uHKn.NM ։p%_h1 U2#rjRqXl.dwu]ǭޗ͖Z۴3ˤ[MlJ,BT1_ lh?$#rJojTڭeKo1.!,Sc0㊜۴Sm(=n[uE}+Ԗ}ChFEc)YÝ:2Mv+|te8$ȥjv%ov\kԛR>|u[~o@K2JڅQi7wR%q"cbQ,s<3C -2%;R̲5J-`]~=#}@/Xb KrQ\Ge_߬iEF(0 HsU 8뺖vsUwN&򲮩gk|AOԩoO-ҢHA#srHV:}m58;nO]zb5/%i}.w,;{JJM;V;"L6ؒۅŒ+YkRPJWmυOw[N"!DjLڥeEm5m47VY(aMYwVֺ}N*Qm9$˩ojO|]EOuGY>%ݎugg$FQ K +lWA"TVqku'IS*;eϳ%^6կuM.XֺGEIiwdFM GDQp w0^Bz5znxLm^4z;4 mz~%т%hVtFbI#䔨/]&O<4զߞ!{]ێWb) tF/K.^+g8fROĀW$uAGY8V!:GQ}J{;w6Q;IY*+ܑ]U_FgOmE7ķ=ד[&K'Ljkzuռ5o,{n!Ct"t^;+2)%.aE{.0YKW[mvJzop*~_f9fΣ6sè]+0ݹ&kJ`veH܇ P9QmItSϳbnkXxR[r|JW~eHחTVS; jq{Ծ)co 71oR# J?qrEۘ:mECVw_vn+YTnYC>:d{\j=$qAى$h'ViTO椤syiԛIU.zOWLT]:)%ƊBm,v#l˭KmzGRU%_sߡ^ԯ=ddꗗSO>DDddi6|RxŪTW„TR\uMNťygNcI..;Kv]{Pg,TedfSOS^Vҋm +i?-eof62|!GGs<+#F~!*>V M96ݴV*~/uKYu7Otj|[PS͆ykpy<$"ݛva39)z ]Gߡ8#u8vkw\*?uvez;tC)iD'I2Wr ~Az8KV6^_h׺T tH9c.G+}LQzw=.⌸>wv${ '> 6y;!yݓ95R`+@i|բQQک1JZԻÀl@$nFmnGV֗bhgVM)n7WS\#Gd99r+PVIw|0 VQԻ'鐘bH#!>E]@@}Mbj] Ӭ`2wo="@]摎pdl`䁷SJOhvOY]F nC:Ne)nӦSUϛ^fa +v@_cr7?ߛv'hs6MbVy e6F.$L!v ) 8@+>jJ6Z66u4xB]1!8!68̢U{=Qe(! 9>+TF'Z]keGOxg޹1%܂`|c$6Cc#՚erվܫ09VЌz5j#eo38$ϟNBD}xL y9-|FT? w;q[jPѝ7@~oqC'2ć?JpN1foP<̳ dB_@v4z]ٹOd`aϟ[oWOrk?ShYS4oUS0>AZVBȒYsFH+쁓k2K4.bkwΌ!#)~yE5$ h󌷓↨WOޔ(U㚴(jꗶԺY ]Þ Ees+Er^_^3d?ZJ/$ "yBvj@vznY5I-{[m3Ls(;ael+]6]ș6z[Eq$SD?<08=5%Mro V(%Vx@9,>a& t~Rɠ&KX^eD+ތ t-˹w7+ =hvϷԔd,b^XfK}YKcs[;9(¿&n"~kWNx _ `-3n:sW/G& /D:Ў3C$D 0Zʋ;EW$6z}K;*Or20@ٰl<}G^K>EGk}!~"*@`330 \a‚خNj*%ζ 86*\%CWrwaHU?bD7ḯ f D0Spvljtz|Ie)oZX).Xd&.ێGw(nkRzN}+tT@R7TY+ )`T&сY6rM~ }3?U k.n-NE/j7RWSB]G8G7Njw㨒o|! ?z闭=}aH˭N$WDF\2!hRnRY 쎾GV ROjJIb8IoItzԺmƙp._O.JͥOXnRJwˎ_6Siҝ?g]K&j0cS&6ޙmnl\; AK4], 7}>IGR 1m$O4vߗtZOta=o JHn0I- 3k,pf1?&[𧪚ǛV2x<50~_S5ޠ:__N4+s<#^3R<6!NG%9'(FҍRquT%Sq]!ڰNomvBۊXN KƴOIJӥ\l#K}nUj:}&`ͽDGw$m(1TMPo){ܔp /tЬfRKfMFdXmi6~ ȩo5~?k%Kƺkh#UBֺMa^e`z/$k!wjC+lm")爩b X(L9c-γQU ҽv{.uoJ׬!||E{vEK|NAsnH-i.[-^_-N>S}W[n=J-umc{iszVH;myI;Kѷd.ͻm6Vv7ws5KMoi| ~aҞmBK.Vw YcvBΈWQzIP}oӥn'ӛJXs 14ΐqفCޗY54mwu{hw?> D@ʗf2x FУI,[#/gBW1w[gFBCn'>zi57c.y0ۖOW">/?P/g{iI*'FLM(A);~ǽq|^NMz@(Ty@WF( @@@[Kّ@*PWWW:ڎ Xh b@ UA+WM#Q(%$J,_+k}XD&>z7ѝ?hRm-߶򫒫 <'r%oێnVZVV/5w,ֹeb-mWB[Yi \&$c#2r~l mNTw˵uՏA1yt㼻aXiSıbL$y#ſu~qI'?>]Ţ]!7,jߵնC=yn.%-v [,+:ݢ1ZǕWMŸ?O]Rh/wX=oX& ?J,b}.Gۺ {mlaT<Jal^HNq٥ǾjU{_N*ߞ(ʮYt=[zDn JGiwj!ҥDSy^wvw3I!dH U|NkI4K5Ob1QK/r`zMEjMк]E#!iNd`%yq "?Wk`Wn^n-^|Z|ߪMY^u<Ѝ@މ ]Mb쎖 o].iE6E*=V:GCkۡ4b-5-֛ƲQ@ѓ[aZ}lܞa/I|{.ђXG`}0^tr*bޑݭ~k- 04qc$JISWNI1RY} ՛~[Ԏ\dKnziXe`397K=TMG%qj-,F)YW Pz y:'jc=)i6p0$d)܎8ؿ4{YrZskO{]v{.U^Vxݬgu}Ku[ 䶱ԡ H>%.F4 ˴*n$Zk$~ٖ7]z=#}9Yu&үneg@ܕG-,Xg4ݗ}?C9IKԲ\ZJ8{s[n]G&7NQR5ӺP\^@٠H!B')jOݶ (K>_mv,$ 止>tuE}o$IP\ y6ZYY0ݳ:ՕGr~'RV%~Fկ4OTJ]2.;QE$nW'8'-?*珹 B5's=+6zKiQ٣y5VBfId'),#9 ()#P\ UWkrr>bH`#b8 k(1.w `JĘmՔ0!\>9F~x8)]4]⿙m&IU+8vA<Kn{y~i4RI XpIOl~"^Y# t9 T'|ĉ&>`J+ f}W}ʝ-Fs5jr ۓA]V[yN1݈۰$c5#=h:A5ئqݟVhV8JO*$ѿI##O}GӴ i eDE4j61U;Ytzz *renϙ2 >JA4L*TA#ELiZY NrqcĞvZt°?̻L)a~eH8pSx;qtzdzO6tzYxvBą2 GÿUn|]sۑxHB>0+==._, i2]ML5f+)ݷo8xKWY9_QQ>O,.Զ֠&1XaRjqǟ?rѵx.u[z^H5û9yyX3dj*.մ{GnĮ5lnq~O*<5fVOnnSVtʫc>:1œ;|bT4bS;_Z7IBGaÁ;%_|q^׃-!iSҺFXxsmʪf8'RNS^NYE;.]HXe XP7mRHCO.Mgn)N `;3xeH@ qf)m6#A֊a!(79|UTDąWTqPn>4I`|P^<>Պ>M QX1C~\[NzQ(,9Pɱ FVf`W*?1p8ԲcdW[U!ʹ1FSF-j7嶷O%[B$X::02#"(|<G]aK=m\j/nۻq1 ;U@]Ŷp+Z+O+ϼkM-("HD ن8fmc[hU@|[Z9į[fLqEPK"# dyF,8GGQDmgPQTw|QQbA1CTb sB3EiǏk&YcG2G˪#>RWIM&iMђ6CjeA'y40MI%raY4;`"ђrFJ_Tηz'KZ]BV:vuҌI@  (# vE䰫z;)V췟k&U=iw!I`dFeUʒE(kVw޽ޛO#Y4Ζդ85켫4-rmlNKԽ3o~ii6p]ZhmcwmezuǴ.3\BN!T7[ie3Q^rP4l,'zeѢm}̿ zy)F0i,f\FSn-j'çc+wJ?>u>ioms4Q4C#RK(b8$g#iHyJj.D|9])5mNtP“ϰr WRIaPx.ŃIwW8QH"T`f[&BT`U6) vFi*7'շѱW(#Ȧ̍2*<T`*@(l ɱU` V*d1lM TU*%nV]6Xp1[[ (+Ub@2+iZNb PROBNUֹ=͆cOiZrI9bFL)x9'Є+Ǒe(C?fMu~Rn/ Bd9b2DΎ2]]UILY7Uj{ɥ|pX'mpIU:GX 9;mhe:&q$?0vtm#e I<%v.]Uwxluz twO-Du.?;1VI L(.V1q)udx|y_WO鴾$Wrp_|u+7Lmlf/۵ ٝvđ=nrXKCk:m]G*U*\ϧi~ue@Yh=) auyZ eL$KvUdT %y:QF-LvOmCu.ll,:Tt֣K;1R%1IU+xl NQ'ƭf2J{.m.CJTӒ7nY,ԋeMnfV+ BH&w]7Uן,3rIsqձ؄ڼWXXn ni%[YfUC*劙pX|p8SKSM%ipziGF1Bŝub1(%0T)E> ;W=z_Ū%tl2 J-q^Q,?fZ杩:Yo5if2 ı7]0C6ݟ?imVo{R[ưx尵ƕ}*wR⮷2ګ!7HP eW LqWK}-b};DԥHea%m2<`#@Fج żqI R4Q~[>/u)n&OrDpm *Ti'Ϩ70zwJkvkf^GOr>^MŧtX)%n?ʫ-~FHᨵ⒥yxknpܳ:Z>M/Pt\jY]n_D:ǧ\llR^I/"mܺJjÒ\Zkv2Y:NΙ3CPY.o.Vm(E3#4ԛ1q:[RQW{qv+6Xwx>ꯧoT=0>'|j {yesT9y(;LM麍M?D. ߫w+ v)ei>]-+𥦛MLny$o:@ q_GNMS'˕ώ?z0|ARf+3M{x4;;U"^̌nra>]Z;\乶]?Kt֧-_H5(Z-Obݔ,γmX2XVTt7{.nԪVҫlzL-RànnK 43ݏ8 iNPOQTw2]7n羐K{+"FF,BFA>ʠ*G 5*r8"E: bwS.&u2` MM￞"jE z"o>Q.Ţ9>MqKRkl b@V1j[2(`V5T 0+e F1gfZij}j{TMp T4Wu7I)X5v 1Ȭ7Yp^=k>w6un7xyYIבL5S^XOkìzkqf~L/=*nG_#g776/iݻ=Ԧ-= Xj#Iu*\uwIAɧVֶ?/ -e4tP57H9M#O]"ߩ ]2fg>|@DH/^ٽ-)<--ίmY>Uך'5קmY7pAll~Y`U$1I?;v`׫mU+mjI7]ɧ7rs}ˢ::P .>X:j7w+s|ZGyo&ޭ$ψ޹OOljSN4=ҊQ}*Y8~t6􆃫GAhڗYQx5Ns"HhTfA[e=Wirݷ ^n1EZ>QXvB֭^oM3K+j)5cwB vA+*b~zR(c>\eIαNɶԭ3΀nb}6VS/ۖٯm/]w)•2Ç*g׻Kkl+m{Xmi=eFqæu%IV;[MN=Ilq-oڅIIWFr7}m w?5ruQmn𢻘qd~Jh]_Im̤ȋJEprJ3GĴQ7ySIcG=fzM GjڝZewmml \ ZeFf:MM\J=x©(U|]OQkZz?:֠4yl/om&\3a+,(4b2-<]zoj~:2+'Zk՛#Ogul6e1Uh!Ia,;S-MJw}I8ݪRtַ?w:[:F[afnI7B$vm,@CGVz1"ԣ:q$:ROߡ>-/Ht{&PA``%dke~;X;5Uj56_~ꛊ5UGҽR龪Qk^67:&Ž]%Ywx-(g8U-86 ;irTVZUخ1:Hg=3>@n;HI$&D$wY FOGN'ꃌ5,5V9•zbwF+}zK>:iocqq(C#I-Oޅ) ,NodP%TNRKlj򒽴ݦ夛h/>-iiɥ-x@×DH|}]N)ܠ5&TEbܤƢx]/_m.>)n)'fQݞ{mU,r^蹸m\iIJ*m8~~hc~2eyՌBĿ99);w8RXi;?6}FНc\Nn`[fҭ$Q3m\L B|JTx£G&_/юkmsKɡ1Ci~Cesp7)2m1 ";օF],Jq⥻_(~!]iMԺeƙ]j,Hۆ 6#Frj.ڗ7s~Uqo ZwlZ^cWKynkr^H"gH)ec,&X[_-8 RՆOՊO,nUt-"]pzKG^8SmenH,U]2̯52oRWMm[\F9=R~שo[IvZ,.Mz Uf#v}éy.WuN_6i-ǧVQhv0.&#q3҇Q[psT*4MK.k˅khvVU`@`zBPmjʖTd)5ix()պhv7CImg*3n۳qAMz#J.ןc'9zYKYtnŔi,N&\Hw5> n]z gs5ۭPNk+vk.4b!9ƒ#kW>9%MҺWҞk`H`e6 $d;÷bwwb4-%*I_/_lnjm:*JZy\[/%ԑ_A[OƓOC;,BQ}vInŧקٶqu6aawӺ\vֳ[& SH̛xcsj) NM7t'Tnu4DʖqsIH8G>xkYi/Ji}+Yu%PL46|: F)یRփpn}ں,<0"ֈW(nm?Hj|+`9\)j;u4& Ĭd4{PK.y:Ea]qB5}O/uLt7K >%Dewwb3GsGow҆*ϻq^3Ϗcq@Uv&@F6y=-/c4OlawJAPb#% o{~^Mꮳ|WjjvK]cdRbE(XE)@VC8fMfi }N+I'3\Lkvm+Բ"!=I>wH/̗5m ǘ$`JXmv81J]r['uΣZm[kwV8ⷫ%siv3OCӚGKj?7WICdV0E/oP h0'( )&֖SX9ʯ+1}rx߇Phdy€9ڀ֒F]ѡ*X`WdxX0#)$9Sɓv( gOs҆ vk`YZ;s P#pMګ2pe "Mň >PlA$i#FbeʚS]4yܙS+Bin$2<6HLcFB_wp3 2T¯T+@֖0(YGw|x{f/ڂ9'&3h6#>" lghEr3mpOӥn5U:jdFM}Y5X,t}BY,2+;"B ǃ^(rj.ެ#Dz{\u {ZMqgo+ɥh*l&b n;`.ѪOt[me/ջu͕g}u?ѭ}6-MX[lOx#P|53eW;e^+_NkΗ/ijPqͤ>Q[zn-"TD VװYҁ,Rʻ`tu'nOK]*մQߴdX;00ޝs1X>JT;՟9^J.dިE@v U08Qk"ĬFqN3Un*ιk"W |ϓxۻ:Fڊ Wd?^ZTV[OK5UhEwfKpzukkێķvySU֮gY ח2+н&AYn)@UVj ɱ@( #h潺S[VL,TlQU U*]U0H[0Es6( TxɁJ+@P @(irhnP+}PNڴK>j$ ֒ES&Jm` 7@QU0}mDMNK +O(aܮ7jxJ g.P*U.WmmS'?/uW]o B;e &W.YYQgԞQSkn5-*rdK_ԾGugZHY%2fAyY%XԖeW! IOww_)_XG&OSKsuQMwВtk.d;ʓ̪_":U(-1I5\,` =Qjt}ޞb4banuhPS]N-4ߧwH>#b] ˛'{AH2,æBI*%5:u7j-4m.nEO^Z]Vvx{Hn#H.ә|dvbCxU݀?n&Y>4"V-ͪ[ y!c$DVO]MwjI'TOd ж`VYf7˸VڈU]uu#M / p zM5) +O]6WޚzL@6MkJR_{s#dfN5o B\a̻ M۷=}6sh/ 7*FVxYēb\t4<^3tƺ-͝Qwr$x{D Y:kv$קSKzk޼:xNYZOTj o֩ v&:Co1i#a"2&N'QM7۔VmWo8U:804 s]=VNٻilPȀȡJdXNkiΫx{;&c3嚺<0[kq,ZKݖ00X8P7`|`nT8YX_oo2ήk%-5X/ch$W?C!Bbf7G+<أQzֲtߨ:vx ֗a."C4hCHKq}vV*Tŗk>Kdݩ;ѝL,pH8>o{=Eޙik jlm?wXH.8WFrkWcg5{]m:SK")=k Y26[gͮ4k%2t7PuBkzGT;~BGBIn 6Ryu0ք[K,6 oRuM6^f6ݣY"<:Y)33G[6 \WIfżP34[΂ykiCsv? AqȐ(3H.?Ii'%y|7~\cjΒ.ouaoI}R-7}%I`xdK )$髫BXW_j-KsMQ/AۥVӫZmh+[Ih|i r1+:oNnRdZnKw|16mgz%Vtzm[{Y#pxm I72ʬ}r!^}uSVC?= 龙;{Rd.߼- : rQ0TOlK,nO_ֲ͛\@+~LѾSK Pa3Q f\FD1RGY8i6wO{;cuOi7 M]>1[{Eqp r/{eO/"y6Ҷ;ڦ%TɩzԟSѯ$ͶM xP9Ky6$Z? QB;[9_ݷۍGeAqi> 7nA#la<085)W_Fn乵yn8dpcxCM 0^jj5qŴ I^.vU{KN$kVmUNL"Xɼ[r&w rnMKp{| ߉[Mm)tmCMyeO$\3\U+D3,8ov*^%~&_Mw/z&o%@mNl8[&Kw6cWKvz4ƓN\eOq9?}zmΩocs\]PAHUds䟈ՙx#)jjKdjiɷ^rU"Gսt鎋3"שּׂonZx.aԤTD$sDwQkE9Frj4\mSRʳI[4L辀-7[Kk ,-.n&n)1 tfG~}¼o[43=6c+k1vmܙ.lny11Xg\L|{NOVMq,J$˺"SThuwZ Ge>t Hej0]JaYR_/ #'nEmd>V|E߷9[2,zA*,w 0,1rGςN+٭Ia:]VS{$!b@ CId(t-6ܢT^kucW+EPڤ2FK,ғ7K:DU8Kߵ; Sя-b٭~mwE!mCꗺwӦq[BEi {HaN}CklVp5o%:'o\#ӚPAպ^ɿtSIDsFIlP*I)J W4Ԧ칬9.OZ>ղ6t7 hfXй7Pw8S^FOTݾ.mn%o^ wr[ŞZK%vFy&okl]Xeh,;h=qryx},nkMRItL["D#XVeٌ-\W2ԓz*ǫ6rܥkj[.־LꎡCB UK$[6{1;"3ʢTj6"Z|qe~-okӽ/gnGbg&M]&&dh!eeRCJjda].y[RtZ֗dF#hK_f7 %Æ-0u|FZ&]n^m>MjNj|cRmU>(O}A\ԚݍQpW6-l:$S(T] iJowmYa6ω׼ >t΋lwYZZjWB5,&H{732c(T֌j崾ߎZA+g?M.BS]yw+'?NI #=iS^YIM' 5K_d$Nffi;VHJkf핑dP$8W{񟩖hz/+][Ȓ;$$M=ep ǹ=RrNY4!_m= 'TQ9tRɨ[ȻcӞ;xWuxָ.tڋn.hQGwUҗ&QЫBߢNeyk$7J-+XᲲWiRN+cj[wS3+igJrcrCY鎠ӯoTꋋ+Y`ZsƥluDwLч$kn`9F n+CkPXmI4rt+>[KKtH-[{H"1{մ8yE3=2o-ԡ(s\Gu,N*/)oQeYݵwW;UIpR"PӮԈL7!VBOQKmtו0k֒{m.KQ W]c YY0dQymIumw\3qZ-5f#q,(m-anLp\IHKFdY ޼#) ]WU9ObU]櫇);(h 5ƝNړh#gTdfv[p8"iIJVV?Rgڎ-r7X j60 [$w_,Vt,4RdӢi$$$h2@ذ7X/y5DJbT`D9&fM& wY# hW/c<7re5GJ n.tk9e-cf6ጕp.hQ'Y_ܖbӵ Xj }jmO'$b2|nVڥNr8*yw;s_d56Ot8kG5׸ēWb |qJ4d\DF؁P6^x˻_6-۹o(N1ZM uE 1,02ۺ͙4 i\s#n;?m\wMre34kd<ֻP$:sX8"9\Y*?9JNUo)n*=-O"WV}N+E`oLv Ku,!nOu"Ļl;GNMCWn^j_|3j1cyKwY#+Iy*b)ϏҀ[eo $ ?CȖ;g2|:1 \m9`+` *1'gjDIM\ }2qdh]U<TM4.՘c1e +npն}Q{{M-(\"l.㸅MiZ5.4ƶH%`appGGڪʲ4u4VI[m2[x`6+]\#+2Veիku<تEePXgsICGB0Cm`D͒Y"X0\.UZ)$k鵞CG+tɁ ei..'ve$1řN"&B󤴵?_xI/qFGad־ MoHۧQX7QvU@h` :AU`-cx½ߕKSezrSt72Ȱ81# r+. G̕~Ez:TԕOydi~1?@EU*-ݶ׵$gt ԭ{CKw 0y X[֎\xLI?-zh-5m2mOwc44MՕࢣThP e f(Mݲ|ʌ𸸮Zoפoht_ohWɢ²4l>٤ݦ9Hፈs/MөRKvbEr%\JL/ԺoߪZǡF'.:-kƬ%Dc(E^1_7ݦtMچ.[vG8髩 q[+K¬J?AI7H_FQsm /m.;TG`\:+4u}lf<̲=(_ȮzwCM?WK[;H"v:aY-U02LwhkZ5Ru PM0æOu\[b.o$!4rī%*xGUi9n^m\NIζs^]֧q&>vxͶK)Zn]"B>)F":+$js_UUkiFCzcO^~gڝ59 q$1X䈪%:ETgpXi:_Գu)Yҏ3>jZ؛x_MtT"`-dyn2yB%mE旜4\ZxN^ꮹXV KTF4}rAlڄ2E&iΟIRvLj?BX~YR=Pu]+uu޹i͞ko+5Ž'{ܴ{c䵉^646rTKr+Nh8k5b+'ND{)tƣ,6Cs=]i\vdnݬpmkfw|75f)$f$՟=6O~SȥEm7x$a h#,`6Ҥ$rF'(|W^~(ۦj^ɒ3zIΑSިIZY ~nisKM{x\V)ߥaSNqڏ1վ:Vi{IgIT-wr~OkrFK]\[ik[G9:\Vq$Ƕ,~=fHk4xCДA88[{%[}[ťT^޹нwTVYfQ上2Eq=3Bk ̎F:8h:~E:_Ruz{4Ry$ ncAYUf!A55tv\IVz6:fy%PDkIRX񒬈]iK0V^Mx5.YOEeo t&J7\G |K.ܝBX)5[J5 m_XzsmeNjh|&"c6B], 85^vNK>Ž@z 橧ţzL:a}Ae\2RJ5cWV1N/>7O8V7nZSh==X9FԴBlT;% ê~-VUWi }iz_Jζҵ n3})RX$76 Ye@vl+o_W0^Rv1-Bv}K[ nU:~ K^!R b؎-%-VɳsxZ|%9Us|r'h:{/຺ŭi\GnM82N&EW gr*- ۽^ozN)(.IUxmb)v?Eϡ=ҝ]5v=VZ}2[MۭbRl^=.rIM=VcrcQU=8玆?ԯ[5 sn湴T#ywZ$n,koxhkz :k򴢚ItxJ6f1o qסO׽qF/ NLƥ|_G)MvV +^:rYqnURgg5fצ#uaҒ- u22}#2`*&: JZ8w'n^ݥ-eVNuP׾L+;d7B+ڷDk%d(K1'ۧ47˜^5gk|K W]S:/xC-ҭv  $[,>[V.3Qyn++Yk=6i-#!}Ntvo/f-1I2,8ۊQ;Gֳ1=- kWJ.z#J{{ޒ;mNAYky7C3Dfe *?+D_gMSJNuY;RR=vw@|GM}:Okk>D<ܚ$C,FGpU)QiBjCr^V../4bתֶ2uZit YuPZ$eӓe~Ln"h)m)"TG Ms{So%̸YW{kmD~:#?H.:S#y4Vôgh'UUJR a؆ cկ߶+yG9iރ;n-WI5qkyK{֭y/G- m^7Yc;]QD %K8۶5unk_5#uNk>V.Aη7:Vo2\epwmᝡikC)Eg/ܱ`KG >_5rn {8s f {3lv #˩nRғڤnvjNT-z ]b 4")gNגK{(`NqW+u¼U,{ ғu-jntղ;xenIJFэ6KUk(T;JY4򯿕Qz"YD#DG, +$y=XEȊU7-E\s+ 1}I>GֽOz.SK{InllDȷ3i ,$P9dE3YQ)n}Ҵmnwy,[t`Re0dggYUcgf:( ˊ`Hz,4al9Ki,$󑼠f$*0ђ^Z;RO,m+ä=o9'pOTA:$=BR^DPd,n!b$1ȡʳ)ԏPqOy'G\EV$sK+U nrCQIAT="2͟Xyt{X }gnRU 4ٓI&(.G#,{nG5[@Uo4{spoAS8fKT]J 98I+"GNgoUTd71+'m?K=6n7 xAARl%8'ں>hdkM/VNMbhn]b2Xeg9l+pۀbzJM<ںˬWOa+?O+Z0cE9 Ug0@14Z\jInx)hh据,:$WZz`7  IPm(uwF.tVm'F>KlygD*FwnVfQ'J.+xI[i,zk 42]hئA* ؎֤=14yvxql_7 ;ߴ$[gsl|c IM}7As 5k$QM/p꽸#Ir\mR7o*SW0zތm{ /Owa0#iK MH^ qz= s\\lïX%M>.In[i.-cs#f+5|(ڥ[^Vv,Gz;yqǪIq$.RI9tnV'[ʳkhe8+yTgzBk)Ԣy`<I/aD.ZĴZ~}&;]cP?XhjjZd͞ܒ12JW 1}4ɴ7DžntW]R)`Ć)1,\NbHߜmyjN0aӠxiYRGڈ>fknBIA_n9VX]c>⍍+z5[;[siyķra)He~թiFm9$* )@jtuŵ͓Z>#>e;623\rnI;<B:AȵoR:jn7}6x[c$)2*uh mٛi Nqk9*otVwp՝5NcJ-m?JVyIĒ3'1I-g9n~\a+t/RAZqwGQ. eYYvr_fi2l=ū q8WdWvU+g<6Q %~ide`Hϵ?@sE@96bT|Ԡod Rd*0Qfwlpށ3e#ϟlAfEBY8xd⁛j/">GToř[$d g}٭2y ;{uz_^үu@Yh+"k3fVL]~Vu1КXeR|{+>=ҽ3Y:GmoP-GJ1%22^fXM U8|MY+eOj)9:ORJR84rUeP0-wr'϶LUZ}֩ѷw61ZVLOV؍7%pI_s]%7ϳhMcԮ4-YDwV.CFqH#kGZ:R 5LGu_=)]ˣI-=,Y{2; NAϏWe5qt+FӼ}%ԒtޭizoҢBceEG>" ͕mm>SʪRnQ/9{pQuLXu.O f+X^+ⷴT4eE"E V#ʮ>J7<]S *Ik9' Y&Y#i7d $~bpċJw}/w^ߺvbN@UQ x`q^Qҍ<ȩ˔RyojvX՜A<95J]}?.Zߦu+3')![}fbl]˵G:ӞP:T,zTiw`[KsuBL0 URޞRj.*jx{+#UץM=Lֵ/Ol{[`aygK8f~նfI5췐2ZMJw^$9Ve}pD:^t~M SWե+psm v3kthSqZRrn1M$oյ*MɪHsM7uva ]I#i-;  2syt:QZqn9uWuσ]ϑL#f cI矵ze?rQi1⼚gJ&.MxsٓhGQ͓t\ dw*6U(RJXh XmR+_@9AJ+IQ @Tحp`R dՄrEcDd U@O Ejh P(@Th $95w*@(@T `RwUE@( WP+LȢ`V V2* rKtge5Ԛxs8Y7"bJ#C[#)IZ^3ڳO$?@Ii>7ia׺v3:Dq۽m1>պ{DITF@5%de'$ҧIsԖtKWHңYt;]D݁s$ž)L]7mM۲ԗWj-6յ .u]< [8-̓G B`dl=PjZ{Eok#G[I'uu݋it^2 2Ra0'8R~u%OOƾOIXP@@'BRsk<^o9|W%ޭ\fۯahZY]^H 9$2"#ץیU{ROSIj tfڿ6Ay}kn$ ,)sYgj$ZM8Joo}}VU6˺nm@oi,fhwYIvW;<ʳ%w'j>WI*w=EGLӯm wme;I okJAڭvI 96ҒrJI/ck=Qh:44 fPw 2Yh@IrfYHhnVmkaz6NZvعγ$"~IL9:?6ۻI'T{7ު˻yoDk-6Vw pn#*=hrn 3Bv#%W^=G)5W+YFI^ƇZgNh6ךUeqz-Zwɺ廛V"&J6,.仍JӭWE]Yjq^bܑK-ʇqlGjJ7mTWkQVO'E,=o_Y"i['=HL#C&UO-rsяt6Ir70ۦ$3F_%xWFMU;1x>gZxEA /o?&8tmtUA*@ 8W5m>kN.RUs8Qkk\Vպ2]+Nl5-WWԝoXn,sUCfC2zaj-ьYk>Wu/lE >G{tmF]^j&5ϭe$Q<EYΒGYZ5Q?dF')(i.2TQ[mF23'IX:L]jK ظHDpddLH(ǓCJ[Z+;5U~~埮w=%ݼ tqFzxZd./ d .c;=\rjR[dmpfN_y=ONҚ.o-Ђc{c0xc{hH\+0m~1ғa{לVÙ'D ﺯ۬GΕnwy},s`Ӯ/%iGG#;Cxu$;$*N[v\{-k/}}ם-OXӭ$sp"n\fŝ$hd2;w*8N\\\nV_Zqhz=)k3 hodi-g)ć$ߊ]HL]&OQʷz]]VC q_ڢƷWƑ*EoyUcw^q9+\ut54w4ݧdꕫgœzӒ5>A%CHQ $bZX/kh'FQ{v50m<)[I^ˡom{PV[ӯݖ[{"G(";}ŌmNM=dZX\a&k|'GJH3~=UԝOeGrĶ-6bxav9Sro6|ԛw9gr|6l '8rB7>(YzP2ՑhՔbZXV% Ee _Z^Ak[R239IYK&G4mM1QEJl%@T4*dV *@(J@Q~V#d)EFk-+{LIeh{Q,U[1"zHu<}OiSfwht˵D|v̎FP)nd?YJVJ\U^R7:/@;/![_N.I̱0ۖEYQN =M]=Ï4W/Q+$WO\tŞO5IsChHۊqyc-cnn]C{寫%6U߭^S|g =EޛЦ:Pƫ aZY2ٍ0HQ%QcT\:=yI΢R\e'MKږV;ڶ V9ſO.sY\#5qbٻØfn"DdA 5rOu-&IVwKom{MWծ f~nSYIgno{bV5 Z7uAVn/Yjk }IJ&nXU랚ԯO/V^ӯ.ĺU6w3Ӡ[lV|B,E;;I)1/O9t)zK*ɻWKҒNV=4կz+O^k9qi<{%Cm ,DΌҔ\ƒBu=lWQ(Gf﹦'P˩hdiZm+K}q&wfials!TզxOQ%'on~'I%~t5a,1'\ZZ\lqcU{ kؗKHm`k+%[D-4q#Le|X wޔ=3ϧl^j.-Utt~C]H{>u+Y,6T8fs/mZ_T~.>7zVnQܫj9-VU3O=Y]Y`lg mB cwG}Xy ʊ}7_/K[]^ţvw:{$Sk< ?J |h,58EQb 6 | =JRVe?RY 4IAtc1uw,Hn,'qوK n+k/^SvF+Z|xi$3;In]7oyٯFAyD'r)vGxQ~jKuڪyb>gї=[P\kRu2.XCwacHG, K klsV%r(ՈmtҎ\K*7):O2RRuz>.~x" @;h :er̞ɬWoNs/<ƣ[uFKi%ͧn$w!zܥĀۗh$[nHSj)|8rͶګWTJ|HU 3ޥKImR\|6eYw'--Wg5׵z]{8>%FwWwP/h׷UdR,q~EiB'ޕ+w}v|`20>WzuՂ-—1 iQIbА7.aqGk1Ӻ~utPw:ta4JrA%ޑ֢zc(lG qG6ID9ۚF[xo-T *za{ma>ku>b)Ld4`ܡ`6Ҽc=Gk{nI%a4L3 # +c?)l;kOS:v?hϨ_֗:VNke9 $V.# ȪH$9˟f<}=4k-u;,{ͳgSiwD:س~n"@\ [2*U 'iM8WXudiM\Q_tW6iڼi R׺:ob h7=%zo++qoͨu~Bꮍֺ&-;x*K,ml׎?g~6ХՊpG(:gnYܟ$+!ĠOfL N~lѶ|}h o*pE:\'Cg2DHj/ | sLm.kluIe[U,Z@ʡCەP+چ#fw^[n\ܕ' T Q\xy4eWS$8' 7ph [} !f@t `s?Zĸd6&\j]in⸎;%1K3%FK8q~EmQǿeTz?T:=n:~ì[[KBmnFEJ۴oC(Zո%MXt⯞VrI%Ƨ+7EI`tGEgH3λ Ѕg=26kgϋXǷ8g~(Kɴw4u'8y{pU|3s{=a''&$hk.ⴄ'9?Λk}NX. C4rݹjN1ޅ|9)BFc#QQ?`_ K V,eϒ*QtvӅLȑxHę$a6U1hdiqjvld1y+\EQM;g`I%*y@ɫ`X2 !U 9 dU&N<GЎ?qNAn!,WAǨy.k6#-ֱ@Aq|;ϵ%v@-:N2uR+5(%ig[K+a$ePH[v0p$g g?BrI~ٷ|HC͆ihgJeٞi`M.9;{KH0`kc&_utxvU^M%FOtic} TZj6+#G8π6xm”MŵR~rnn% i!5ͽh+h,DZsns[qQXxSRKˢ<^Αd!Ң[)fkiF{(f >'Ȉb)dKu|URAåScѺ1]Gk&}̖r f1 "S(ۧ,n;mA+?o'v{Sm#Ck+|E+= 2ŻD:~NrZTyX~Uvu^!˯jl\%p4o;vY }!)դ@~Ќbno̾eڶ_^tujM펡ݦn/ di.El\(ɤqqnN{պoԣ/sRǺ-.wm\ZZ[|2}̨Zxe.XߔN~?J۶5ojޤcs> ,+%bXI9&_HxzQ!>OAw#fJuF`Yn*PP JUj@V[KH[%e浭rDR'@WFf V*W!Y X'0j*pi   Wh P"EdPPc%TF]Q +@R&@3K[Zȫ`S@+`RY+M>:G[ hO/CYj7:b![w.XU*6C0i;8x`twQ}V{{HQ$V&9X"0iEI׽y1t{>}CWҋJ/WыO8uc&̈́;̸U< i (dgvZs5{M?@kYڽuoEd0aՙ°Ȩ3-Wk bNj^+GMÔ1$=kڷRkt>]X ;lje%đ ,du\4NuTCYaݰF*-I $`FYUryu1ԕE$=1NGu Ү[U Cbf4yC1eeS,B]s+K>3)tXhP,ALa'qWmMH}yA?^Ln`IyQs*̶2,A1Im_I(jQ['So:G)E.:h5kM6X5綝aI۪ܻRrמf6ݸ9oQY;޽t#EuRQ&m2Y-ًKbl6,07FQj'2PʓnMm.yf=Y,4'{F6VRHm˅Llh۔5I3Sen4*GՄksakko*(?fK$ >e' lڢ>mI7mgkk(:[2"a ߚ(Ơ*WF"/g;YT⺭7qy|~c;{ѾP4#$OUoIEض&uq9|Tᶡ''xOKi$Oޡ'K{ A澷/$vfN_zfe:e/Ԥ/^WlձK{SK]WCul.ͅk3KQ$l'plȘ-eOUIܭq|sCmzҷԭwtm6}>+m@A8U"VѤfǴe\w\F_3Xx}:Z_\_k1_'NWY];(HHڂ'=іU&#,` *4cu~=ZWCW )Kw"6f݁b6̾y'Ro v>s"V}ãXlMmLo_K;;=\=Ѡ0DaF"T;_fIK2Iڻ~7\ӯMt~}Y;P{[ Ja,m;Q+bc$2`32ږ)/U',mnYTWM5o4)Խ7n֛u4vlcy.cvM$"OCfZsI:vrRRzqاvCz'iԺ%9u+rk9ƒq*J?[k%hdetև1EƵijÍ\vL>uv]馡f{W7HZp-ey-n-6.ՀUڊȸ嫤TVӓ_ˊo*Ow|Xje^?Q<.u=7u=F@{ s1;1tGdct77:ܝ[K_|8'ѿS)Mu;אɨ3Kwbow޷wRd'pn-4cZmUmj9/1ҔK\=[OC7ZQg EܰۼS?sk"zs|4j_ZYKXT#$61e=Λ>_ 3X"VIJO1aer٥)>W*VRr>{}1tWv]h3qWʫmios)١e'ﹽgDXikJ)A]KO.뙷mjshV_^]}Z-tƧ>4 ͩC"d1Iq7|bV\KWR7FRIGj6>崅.+;MzϯigӮ.Voikm9y]{6S85Nz{ܢuիe}Tt~cД鎣}8MGӤ_2=kN"ʬ:=Hv)R<-Ţ[km%꺓_[^iEѣa BZ[2D3v>R#":vT%)Ju{e~):2<S?UtDiԽiڦ5s(h)Gź VhfьtI87i[e'kuy8Ժ=u-u&ho[-Ue#"TgUԩ-R{_͹9˶6f٘"淋Qy4N=6秤MV n!#t+:$q|B? ًt~)~!'ZYi6|[{&.,c;RK;Knq23$OqjjR,$nǤ9?zG##zoT:VéIoLؗ`# xߑr$1'u]GNܣ^M.#K뗔{S9>yއ׬}*LC=k>$Y { `HCF7G=8sKYѬ;&~ցY5,! ~tiWQwͻqk˝@>U 5sf+Uv Yd%N@v Uգ$`QƁ5V#Ek PZ@( 耭@(V7Q_p+m 2վ DR906֔Q'Nk4dJ%jH#Q,#4H9W?x4n 4;!3Oa4w#<4QA7#~3HI4I{j,ZW͡jfn`n%^Q%Fˡ5[|Wu9zvOui?le#KA\lY.ISa'$z?*U~-,^3wrA-TRzHH,lAR&~QCp3G Mh$k.^Vp*=Ik-6ZQeLh4Fkk[+9Ỽ&RLMT>No[᥹ɸtWeE^eIM]7Ph55cmemt" s+N'. KQ9-:SIQ;G_J[z,' ;Di8U&Xh`c!\: R:ꋧMfvڼqK;O^iVv}584 )XDRgM,[ ecV Ls/9;\^LJv~=dP Tj=Ӷwn"K,"Yx栭_6zAVWZvYɤ棯|u魩 xRDXPcy%d22Y=(IOMr¦tYUc,?5m.CuHWsIo[^zNڏ˟ J;§3tz+HꈖQw<:yW"agQ*+óf;KOsӖݸu^z[r=.$'yx mb3r:Wb*D0]k>nܔjj)77q=?%wtvױZjlב,zMޛ 7\^u 'cHcV8Y+}BS]nrҦf-q9[+/Ql[mKO\ѐDVR@+"}5. >]Zgkeα:u!<G+D?G;ҷ#gZv^u+)mNA w Kw <4QƩ,O#3KVqQJ._3XX}KQ>mB.鞖84>޴^as#mh!+,a{j[ū?Sc)J2iVi׼-hg}vt}^}STY1ȱE,PH<5Ԇ@λh-'VF-6GTE<ơ:ޮW+4`H,U-1T2[%§Jn.Liހ)oj[]iqjZ겨GVm$ݢ. D'T3?RQqpυ,G9=cwyn5 c :fH29i%ZlgZkVE}[C:,.3[i<@C lBOӴA=x䓴cYɏGOMܳ~W)c7E> n44y=8}R9^-W] ]:dfD2"/(-wJ&x~cz~6zZ惨۬ZO.a<dA/ݶrk-Ϝ4*84|{DoPдm.{Bh#,$"TB8)&9VVe[u:8+mcyk8LOzuҽ3qyuNj!) Ef{CyS"O2LcMGk:J.)೹6:K"Jcc]a.CPq: ǚrӻey=L]u67qi[Mes,Z3vo-C3~ 1;K(&,pKJ^iEqHZ ^i${GR`<0\@Gsٺ9e܊Ccz~i+^]oCzVXzal,`i%{.22N۶6W>;u_nx˷=Y-Lo50G$ˉ 2B*\ڌKrMOǭ]N :̏~]nX)n+ = &w>=˵gOMjzmjͦƄ+o{rܲ%i8ʩrk}\<.kع[b$Wb? ẠagmүxrgiaY|OaSᘖpX嶟< j?-QmCt7NҴeunh@n("Z= oºU'_Jk+nty΃K:^++[7C"+*yۖe;IsKzs/MYq؆(;u,*d89 \>jkl>}#6tοoR6 N`__B. 4r d[>Fbf81KMŦox]Ϻ:F~S_5XJ]BO%#6--4F#TFm<8JRb+zKkе^ծ,zjVdXز37 $^U楇.M:vɧye Ӗ-)pgߞ$XYre=)m_9Jʠ-彃XV?L$m)mAZ[xҼ}NI5K?4nI'폧jةpݽXw6c2϶5heؤ#2+29B4nX<׾]+U] 6#w\gY {rU Lm"zqo뗟킷fܬ.m#*!UW.b͖'&F5~\{7l5 ʤ">$ A*|WGenk<{Jy +i>g+ 7`|8Z +9 8G}LuS wqZ6f6nFF4x>5 F_C/i4TTx)U?&7E~TF6H1q_4 ZebG_l+@?l/5q(.H?Njqk?SбKaދtg\EWjRK oQnޯ׏ юB~sc0[>_A2ۄ!An8%1o$ޥzjeK'J JR5 F * 18HkMծWoj^pD#0BI ;HPk:zyɯ wiDn"{qw%G"pmgCZSi_qWK=w]H##Vb9Ff8TP ,@ZQ_z}[5VC[&%Cey EqpfrcdXcW(p>{(^aP[[hL !)?@>"N^={2 /]MOPmX`fXN?d0y&xYKI2%g+Pԯ`TcmMx/$]AFדZI3Iye[ɸm:yLqHIVk!Q:ުnu;;;+-\FGq h`v19a_3-&ڤM$*Oh]SBnliHb,*6c4)I{iƵ=KۺM1uJ^tfꞓii3_-x49Qz>S~nDz_uIb)ϢYuewz ?i4kGa=opҾ`{ #Wr8ii+i f;U7ov%M%4Np|7筵.яAXt觴I+Ɩd1h N8Q}MjN>#ZepͨZʈ,.lR[fD@GVHr>du[vH?̞n9zΫ_u8eKIlᵶ$[[c$;6X|ӻmm7V+MG&|rK7I۷0ŻHlnˇDw`d ajMJ5vyۏs(vɜꕊ8U.6-s9U)ko#bbU!Fpq6X_:z[t=۶Ή<jFP$ҫ$`riպ?Lru{|ibcd{C"ʙDPFRkzmET_"-.O~+EcM_FԺSHxM鶣N 3b,Qw@$^>KBQqOs[өKsnm՘6$EHr!Br@ܒxRn<$ Ĝ ZRtcI MsՓx*<BQ*P'Ed 5H_ϥi V%6O#0-{X.$C+۞׆z~&ksVUBT-m>ڲGgEEsҝW_[]\%pLD~2F WBsjI?x=zjIq\[wi! $J8{0lڭgk]Qim;]_:4bX^YUWw!;]\!)oOkQ~Rknw'V+G{ӻ'WUק㸺udEiu9kk!~KI8h!ۭY|h|FWQ.moO9)[ïKOJ:&-W5-#O-kJXCs;\a|bl\)$ ד_tw=%YJ5®y<^c䴺}BHxPm7ٌRh ʲ3tB6xnR^[ׅ[#1/X^taoaS^A{Mw"5@m.]ܤ$q.@5UۏEkVp%R{|M웭&}Ih]\Բo&XQSTR:p_ysipjqOڙ&)e_PXqoU)4g$ۂuҮZ?N:#:kZފa#oHIpK%-˗Rqw+k 봗s{zNѮlVa)Vw~7X,u8`SOeW>'*,O\\ܝKuCX'&mB[3+15!򤾊M3"k?>HNSFj`ggmR6=m-]`VF#mbqDfEA@3XJUD)@O(?ZQ5T tEjR6@Vdhd+j(զř'k@V8ǚ@(ՁVTR ͂sXjjֲ9MN0, \UbhCOܟoNV3t8.V{iMIq$HQIuYZ|?ubⴝznm˽υ'zk3/f5xtȺKG[[CK I"KIMl4vEqOWA))E{iMzJRoj G֝֗uk+;>;Y/d& r^6:$دFI{a=ǦUꏹQ:_GQ.V=h5 /gJtEfٹb1'qzzOM9?VJUkYOP }Ϧ .l"$f-ц )it}#M|]=ݕfd~j:j3O}\2WieFNYӎ񄌷g a;R5:Z%DXجdtT7s~U-Zlg 7F+>Bեk{{"Imkq1- G8tRIhĀԹj88]+,{Tji]$:sݴCr`ᔏID,K}QBS-U]AejTmɩM$Q24c^̛;n [&`msu䓸f5Mܻ3&AO-.rLcp$ Y |3&Ctopq|ڽ3YqLGNkn$,QH{2nXsS&GGGn*Is=Kz]P]ZjK}~~!9\ȧx\|5F{ڸi&Ծͻ]tu^6Εpf,6E IcR$̙f5! |'*rQܳUIJKs1U:>1_H:@C[:y(n.ŋAncxv#FOEjž_k}YEjϮfRҺյkxHGm ;d U~EK l*]^gG#KY&-gx%EyD2ܚF.wK:F[pZzzG3nX:uI$.]UKut=>X4Dt7P{t3$-̍+=+{ JJM[b\):pqbSD點baB%< {ghgTf#5b{|mNE)[II\oW t~Kmq6W6\b^h?);9%[æPU(ۤiVڊ&L&,<.-u=ČFIBM} F]GVy( R]2$Od15fp?1@I]g 7+?z?5_隵z-{ggc^-rYZAs9Ec5R !FRNJܳ)VWɦ5tkAzvags]KiYA$WmR1(|azВUHLHc(;V⡏3:j'v=,S=/m]̛=u%ݴt[ۘ {aQtYNZ\n-TieWY-=MGEu9;QMi.ay>V1stfX>hJlsN4yk]RIFza:S-+kWh-7qg̩@tH6ϕRЌyWMb7o1 ?gӝ=z=u7P6>-E^霼ip.[kd7Hv\ԞԝQJtaNӧouWWMBE q'k#d/=h-b;on\՟HV鮭S^>ǧ# sjLrčdg#?^ӌ֔Jۛx$sU*^ 'Եn8-1 ]LCp[#HCWg/om]J }.]m UQa!cmWn#m}|wG讟kN4{v5eFIYPXJ8;j|-7):K,cliVUؒ {c{q"<L!p:*e-mKNN^+e7O4K.]fS$:eI!JՋDA r6xvѻP]ꖖ%g\$ݸ%B܎ |/ZT"5Uo g8/aOյlwrۡIw\n] z5x%Q/4mZk>f-eP% w{v'M>JpW7|{|-XYn램莜/0"|$cUw9ʆɭmI+qyo9M}m}Q꾭zOM6 }wSΧab8.%X1>@2>d {NVI?MZ;S^mE0u쾓Ժ:jB;#[ ! /@O4úa]Panoo?*?2.ǟ#&9e"+kxnI,S/fSV({ly֛ԓ}w)^v5,˜=pMr`r+L (8$5-!oA݅H^H,1IMW{c{0 8|sRx jr(h9"pv# K;Kuwr[[ SbI$Jr\ FӍg-o_؈Ў->>@>x7ErFGp|~>>_cGKbMҮtКfkSqM(N[VRiC:E\DŽQ:nWQеw]Z[ ^6[3VbU ,1v>"Y?w֮ۢzFL]Y#̭X/LFf3g&dMYإ{z5m౓G۩Mc^[[P&xt%k9rc'xw(@xfj髥:ic+s[\OV3_OS:wwleLTm8a$ pUriiڪ/6Kϒw?Jޒc鶗Y0vj"-\JExoؘH/q躽]Y=jmg=+_jܒGN_F:௠Ẃq;g}Jn? 3ʻYIe]CJqidT+KW0/MкUlMoQHŎn$Ȯoir\ュIe^cD=-=A4N}/Q,dkc')dq"$DH7/ s5ۖnڝVҷmݕs<'Qgu n7W6zY6 Ùq۫n-ztu~\^hZFVvTaك NQ2Wi>]K\˴SOsZBkmꭽqo$&7acMn\#wE(Sp,s$Mk<~in}>D:=LI:;7ngXm%\jT P VIյVs',{M:?Gn+sW)i潒2#IAn 흇g1u(-QR.\Vi$|1;ogyvy,YI$I'HfΤ+[m$k1-p\]DxUHB˲@9V8 j? `#$g<穭&N.3ɮj m@mвi+J G ( ~};껽s NjX <떶Dyd%FWH[Q@U|ĺKm[iJwb7?[=A-zEku+\++ H0]a7˗H5wnJrݿKVRھJcm6Ri:Kj"FRC4|*ȑ*'r~uێ?sxu֪F i[4dV T(@RZ:`RV2V p `\@4P 9;\-QzA`s]$>ku R@V (P+7`5Ma`MZ`R@@UN=Tso+IAT5**MDXZ), U*pȪ %Ԝ`|j+ +t" , `TPD`@#n@9&-[2*wz{^4sv怱%9h\G`?2PS[eiᦸoJ)n+,EU :Fd=`:K$5|γAeriQXݕK>sz?I >uZe0[mӺ7+%a5,\~3(c90ìjM6Qڔ㌽'c^i10zE/=*}Mm5̉#03Vm2Aϭrܯ7KXyMw_UD~fN^uuJk6us"mB;ˋ`es'lɼv?J*3wmU=@nnR<\\ܿv#pcG*N뻎]'NMD !:}Z-RLv g^ҭwOtvhJ7[n-5?ZKh^[Cotζ-EF<3ܩf"<.7¬YӏQ 7*rt굄XuYi] \7JGeu67:kz|'nG7[8\%G|~֊v&(lN}1% //fX"Yl2҉h1?:VwyI85vc$I$~Oz-XZOe\=!X`ܰd T?6$SWA[TvɷMyݞqtIi:ΒVnޏk KM^kKH@0,nlEv$I\BjiJ{(%י-TѶyٺJhZ~}>z?}u;I"j7wi>G V]ʝ6-%77ij{9S.Gu?Z6Ǹӝ5Mv+|,;8T[./KnͱJt9E*i:T4]j􆱭њbVӮn. ͟ʲVچKY.B2v鮗K&T$*Rk*u'$^~H=: LmGZ[2YH {{aGi%f=E9yh@Qpƥ˕]UJCW|iشxzW: n9Hx QBl5 ?j 7ڌjkO,Q ZeG~}2}Uo^ӵa.,ⱳI3 W#L hp uWv[z;<$q*q;,hϩu;[OSMUMi.#CϲXcx!("i8-MFR'*Ķ楻>0}}I86R=.u޹jMz|ME^{#=k.t9PCof +͟/Qu5'_Mp}-7F_Cz/k8YGeqz3M$ĽN^@P6zt&_sc#[uwZSյ94=Ȥ:wjH'vc^i? M -nU*NJI7+*gFMK:B'oG]o[""q`*%X"Smgչ'үMi۪ik4,zĐ\[k`Imۃ.?1_+IUǽj3K{:C1hL-0c!mˮ3uߏKNzտL>G] _EWoӢ:Eޜ adb i3k.Riv-~]ڸd8=wWv;oL./eN|_Ma2¶onښ5TeOKssskx=dnr UtduaWvᴊ1J|^ݚ,[I= tr111{rN=J[b%ǫVyyE>?i^:}R׋umϦ,!$80߲΅hqoɵoQ(^cN8ݶ7i=UFq[<6{,VWHʼ(~ڼGRMŽۚ'K RyR#EP;GkAcyes$GP~\/f3jB{ˈ[KS;C [B+<[Dm223Ĕm*ejFumܞ|gӺ:=NZI>ysoq{ đoHd6ARPҴlF.":6Mݽ@^&j5 Ȱ`Ѽ~|4co&)Xx;GQՆem=T-w* #FDx˗x 잦֕7wlX:}EhlORX$g0\1G1T*ƿ-v5KUkw*<ԏwSR˨%/2K^O 9J(ca *1_ii 'W|x>$'@:5fMk 2Vvg q;׌yh @MVˮzV-W\J'~k{!ĒȽ$&Pjij~qM^M5=OOaҚZW]|SъNݭď KK`JʼԨZα_{p{T:wMtuX4"mwy"Q$YHQf%#3s괤[]SInങ]:^MN֤fIm"IHq'nN 0/̳ލObQؾm:^)<mY,^uHLކ?>q@Ilq@SyM"P<{(!jұ$mު2dxLG:CyRvsFD >y*3`O$Q;ό`҆ge˻YIb|,w$19NDqcZ$"NwX>aClllB%pG2ź4T»4Vvg#8>mOIe 3,@E1?FES |1uWStNzm?Ta{̂dYc.e*2X> Nu,w=8f+kЬ7iٚU@$T+*&UkKSN_5ͬx߹bMt磺f Z4:}k3$?3Gquv26*nGY7>|a7:7+nb1Kkn[_ѻmuI:uz6jQ2lQI-@ܐrLŞNS1&U>=UȟVӮdU7WM1* ľ3pMZ}+lpV>n1~pbL;u+6D\[)eK*a2wq;LJN}DqtOh:k jڨN[0+| Ims"]7nܠ?+;(wuNsޱ障gQn,49ۻn'a#^oG# »W*\~js7U^g5KttޚԳEudR+ven.d1oUt_ _6U5%mܣXX 5iy YFbtq3,ZBG ͱQpۣmחo0ݜ}&RVs]24ـi &Y 09bU#Z=GkV5mykfaXH#c>d45uYRM/tײ\K}6;]y嘒r}?_54+TYg+z%ܱ%2Lכ?G`F akUwyonʉ&xIFi|rkTd`Pv&171.a3+m?+:m?Pแ)bJ:2A`JjӴ͚5JMTi| ~ZJ ?t}Ӻݎ/XkZc\Xytynxƿ,m)U??թmk cwz,OS=!?_7K:ֻMw50h-d@[[Pne44+>~t'-ޔx|MYc.t*)$IJJH~f>^r/쯲T'|*j|F͙+ S}Eh 4d  )Sh"2P EFm@l(V Q+[,hiZF&UD5k`k@5tPb(w@9]"T3MŠNj#8r &] A5\޹9_pZ ^@;xj P f`~w 8X@V)h )^@@PT'`UN |Y֒2)V?ѯUwZ{πցH6W`A0@G*ȭvj]ҬZǒ?Xqo'0:nZPѥ{ȝYſu#(p6yX>O9TT>%O ӫ.^람֬a)uqtҲ2<[ {YT ۼa[@R2f%{eqö25|~ %~zfUIҵI")bR9yXq&P*oN*RKki0'.H!yRH%|4?##bS^j-G^.Upw wJ Xգ3ZR+NϾvi* vt JIݾUW?_%ɡ5)-{#0g1W_we`A"Ww8'mc7HcPNIsܹ]W 6$Uo{Xz>ϯkhGwشg}#DiP>V@q^j-kĩfpTlzES +ỳ'mu e0Pr[RUھ}炄Coؠ`"-@Gq[st=WM[rKcv OڃN[.;2'1m4<[Ƒ0J̜iUWGI|':Dz-riI(٬[TۓDO[;MKm9N<%twTMj]EqqEŅ$[I t I*1]T}NMKrJ7_~Xg>]E.N`.ȴ]Y *3ŏK=TaҪ_|ܝz+}2m~׺~YAnKu`q5$oP _8,,hIӵ)<,_\\ʚ~qͻܒ'ZMmuPvڏO"z~FQ t$[^#S+w{ji8¹{%OtʥʓEk':ǫ:'ӝߪ:7AkuTI5'iu h]س(ż:eA[55t5z9鯖ؾv]fr5hTKA+=r>/+K YcxEY"Q߶RԔv%* u'+I˂sAj]#PigӚB$m{8]_Qq*LĪ[{x8l[&㜥WSi;>]wZ}/VezEey&"Hn"#g jq}(w4]M𲐗oR% ~!{KֵI`K[J'}I$\KrHgUD@;X-J*3KU.;ݥou[K};"u]?M+n]g5-2oְ0\R@1NlQ9b'VIWRj[O:>}7=Զ:Iꫭ P[iZ^Jc wl=;Rh扙юz[j[Z%wŤQuޣhΑOAպ:4:=f}g/lnʩ Xees햄dҗsi_Wn]YӡuyzPꞠtǵ' =&kM0XG YZ9}1i=U1ZJRꒊJQvU&[ݝKL5k~QF@LAյ(c 2b<Y\\I#LuΌtinu*j&;T㷜 Y4UgꎕF/mSPi㐥P4"JyD;& ^ N3ri7 ZVzcMjIslzgK`f4}>I tga8ͼs:G-$36Nєayj9Te|*vmy?"zu\ywV:e1Z5c+(icn􋦂ҫ{^d@(g`@S@WD *nگvߨih{ .6; m~[~Uw>k{_AknȔ3*-g^YɣGk` )5@FmOV֖ lvPމ^ƕgWh1%ē\# ͽ/]k8L^I[` liZJXTI;UtX?O\4FMb[K}VE++F5slACȍE4[hKZ[/Mb(+Y-:?Ӯzkm:oՎֵ|^,,@ Ji;m.]CON)j뿔[R4{O:_g?V{?o/:eGx-`h$mg)Um‘,uu:Zj[S5v⮥NʋmK'zI껛}Vz}]H.0m/aVYyŴ`)#jKOkQ*n04$?*Kҽ =Jt3AGo*=ݷbhhgw{XaEIdhatyۦ-OuRwÍcŊزxoQ;=SzR\_:v6j./ 9+Hw{? e nYTm۽o9y}l Xm{>g*MTxe3H 4;Ih55zs84Qlt/PQgJΒ0/yeƦ3![m/ic{iJO? -}]d{}[M%TYE[e`#dxF,c-M$RwY/jLZ 2zaL:s]hqɣX]L?tN`iw&TYQ&arv}~oJiGҬXPuzm࿼m摭̪ʑ 4vӃʬ?EԔU&~Xcmk@gFd!@##YP?`uCKYWI:k,J*R*: Ǻ__Ԕ%[m4[\/ܹ>:-:&, 9X/mn-][đ6񘡓ţe2voЌU|T)*'>m}qymЭ/B<6?sg! $x{TS1¬#ZMNu9oiz;i} &Ӗ],ήM~^;=2MKRq##G Ϳ#Y[m8孱.8,'FY4K$)%pŠغpW6Ac;[ ^9*vgް5ZR_5$}qwr:.DžYʂ)^tN~+K=(]tI`4x{o eSZ궞p/F=V?.ׯt f]M4,ȤY`(-؁ +6/bSInJ1U!ҴFmv[ַWC]GGA5#0QQU{j/+jJ5=}$z{tުusLײ=)mm2:߼YJZ=hOkZHiŖ\O_{#6!X%F+H F4 ,z|_i/8N.-TiX̛ķyV}jSצ0ӭ?KglK! #h D87Ӓrߪ1UNy3g[I~+lTX$ DvgZQjMUo?+oF zvS՝7rK@ sYjʹ t*+P{·:jt<~G̵ȪEߥG{m,<]tؗG-t{}tyfD/,HU$$9oF[VheO7 ,Ѭrc][:?_Cz?Ro^7Cɻ`f8|L˽a_9,A`Ik.q^:iS pI` =]MNl31"U8(mVȓ$_56> K9f̓XA'*Nôi r V s۫*kmW:hN + Gfgq+;s4a)Oѣ@NL;h 8g6b6 s8 Nԭ>.-{lm.KF%?и#+#*õq\HoUUo{]n,Gw[ZEOk֐7V|$, A݌5sܳ}j:s%*xF԰ݟzN=#bY_*o7 Wܤk$I/˔ۈk2}ձ͢t/` Rmt;y$Y1۹wTfFO2Zo|ٝ-*OJ/5HߧPO}h;Rtk!eHX1&w+I~[ (w?"ui}K7KލqX\96r[w{O5OF%u̪ yi+i.Yz>C#]K *dTGrz.جe;Դj5ۿ7+WMQ~zo\nu=7SIm.`UG'Liɕdf/#%Պ]2?;kZӗokDRDܡe<^=EEG2DuyWzNnN83GW'N&ƍp>L1|*#PpT}}^ÍE5w.ֻ'XEU֞ޕz}'I/\ċknm-F%dWe#:r4ѽ-FK-]ךV՚yhtǭ:_R4Xz DQ;(IR,^ acr׷}46Ivn|wk2WK`VP,xkIuoDk=8m ʁVhi6`Wv@`vi85a?Z QjkN=o}:.F0T֤W)4pdX-ں|MMJI{F8tv-w6>YtOYu(]1zQT ́UW)TTEMj P( Z1Qƀ%@U @( #ѰE` KVZ@1EMj̊`qgOOᛯ:?KeӬ,C4Jjbo$x  WQK=xͧRuj⻳jxzYz?YC}A= wde. fFI<^ϕW{5bJǯLz1hz͕Rd0q5MnBE,$~K?ҚunyW}֧ V7+gbԣ&W U?+FzobQ4-ןN~Y³t:k""k+;{oGgI`W'ɴ΃W[IͪmVpgw~'Ktn\-KyKsz,ݨ|w{U ;m'̗UR|aVb6꬯-߬dk=V"ɣ[[K.4NG*.{CU'Vp#T|S߭ bM ͧ6Z9r92m&Q#fA`cN+~7njrLzRjե ZX[A$pCU(V6]$:Iܪ={}0ݟMר5K^Ht"[8)ގ6E^D&=CZ>i.MSu4IE~k^3^uXWG1ŷQjZک7~/6;ݖ-w>W7T_uHm&}K0U-\o,*؍"tO9:r^{od=#kk}Cqk= NLۙ#հsΤ$by:u澆b}+S-:uoMS[;owV(FLAIm$b9 CGSWIXjW1v SbyZFH#a$$`*#]VbLz_zqԭR_{(|C00TՔjMۆuOSwڍ$}M c&Sӯ&:j Y5Z4M H3mӎmojM6iO[- Զ>-ͼ7s&fQ{fRϢjZ:}ҵa(櫹Yӝ7L^u6EexaɎrJ%Y-9$ ;_K%m]\:JDi=:ջA~Ox %.@m߉ 8֕q{mܸRکۊ8U\[ԋf[{M;Oıo v2c&G ̭Gt.sK|Gڣj\$6ϡzֿYůzYY G.iڼ"]j-wt\@". IЯA-6g4\jݳTǮ}FUmeСN;ۨWX[+]۫|"O 1vR~GJ+v7N?mJI,R=HԽD?@U`okGV <"6Dpwmшču=6QUsIw'{cgmgZ=5Ne&ok=j+m K28a4*a@JV.{_1IcrtTnlwʱtשi`(WQ鋩DGx i[EzNFE>InO;ěVg>>ߥzf.Rgլ[:Ou1pȭ5fO|i[i>V^*Kog=d*DҥƒHn좉&9XHey#9ejeNUI_4vI6ϭz;tq7[?OIXä2i!wFhݦt6SoI$I$T/ۨQjW$T>kR,=/6Ry?6MӚ^7Ov6q[ R h$,7&QbEkЉV7jFʊkqlj)Ren@Ӵ[{Kԭ>}]_NƎaj{=c=-m]8ZJr+nQW}^OgO_W1uUδgN[70-omokf{;-Dr{jki/NOv^ݴ^_5'WM6}H{iTBDGMo:%B ?8vN.pNW\^Zr|u]sTU4HhwWi=?"\vȰG,w \*gnMai/WIi*UUlϯ%T:FSJ"D-V`LrR&VVשJk15JxMZyw앶d工ޙIiOɠI]qM>i_]Ooe+(-@$43Zs-zV*+w %Y0^c]ukk {7Vt=D7 t;ŽĦ T*)57jNJfOzU%nк'rfYw7mfN[(oRxD&E0dUdɼHݴayolR(vRtu4I2ve)"0AAE~(kT( P VP Ⱊ5_ 6/@Vx`MOp) X@RT(*STǐA}A$urIw8Ey]h,rv>+3pjDV^dk/ ds@`W5h-uրr]- [@X֌x@$VV}GRӉ'YnnT$o+*W#\VF:>ŷq]Uޝ#]a$R?هڹVI73?=/YCw/$6aswrAgub\ڤV2FDr蚎M]{7-啄zSuVI m΋ׯ\^HVKlmw*J_m/r+B$kxGOiEIO7nIϩ_ƗPk -w:UZԷw/5m˪0 I2fѥ.ʚ2y\cz?oJ\u^7SowVjڭ0:C pUx/!@a5;SN»o 4Wn<_Zϩkqk?ou5[=r)gɒG#C}?I-ru?,Õ"U}5WRt6lY$o|/V # I⼚ntdT[?KG(tM:NԱַjT M ؠ|Xn#S]YKJrSQK_>}]-guKilI-UK; cGFU1|ᔉ1eiOkpiӻix>yԾSKd֭LPўI.VDf.T4qSL̛]3#l}Tc.ӿzf^ӽ ѯmzoO@cU5Nq$vve0iěEy{UӸj۷T,/]/6wM>Z7Ikk;Y؋ zENQtk$q&2/~'=m%K}\I5qWRPW|n_[6HttUҽ;jq:s]dK ۭinIKY"aS٧O=IҊ87ZKm. .{lb}Fo{xHkY$)T*E;ZMt;wJ7+ڒM9cmh>zs/GO𬷗c-dl V 2O **UHE O>zp,|.cnswu.O[TzOh'Oia*|] 씷vx|GfDyCN˶߆|]y(wfXqT*%< ~ת)\]_Twwz-rαP0Vd@fp4tמ*G?V?z{O?wAok_iRLwd9uKD[sóΟHu]V4_}[Gс@(7l.4ۈ >F XBUYHFAzܫ>}h|q }2\Y .sW2 '`?:k1[eKqlmpD&2%CdcG {uwvW=4,$.@ ~}$ pz;MUVWagSqjV6܂we۳N\ lmi8Qړi%T$Pzk]tŽ=.'KBlb_/$_i&w4ңuNtt>#iP/x7 [FT],UIEy˘TRUi~V׉.)x>OԺv1=_t;V8IN˰W[nԋ,Ws+UM{f}icuڰ^Ωut[ujViAgmnCo,l%GVաxmǏ}dNT3rmɾ)׹ jçҝ@ Vk0Ivpk;֪AnȧQlu5>g+^ۉS1z5KxXMFåk]Kw;D24i)@F$Uï~i8ksMj}QzLm!n뮢Yl-Zm8ucXUJCo*>c$ Q-Er,ZxUpm׽k%E/;Mcki'*#{^,~bm+ݹM{K"?IgV eOioykoݖny#nC گX|O)nK9MmG;7;WGWtxzZ4KZʽƜCW ¨cI`YݥZ1zIvy\qv\xR뺷ViqzM an.} #*o6m=8Ojk&.ߧZ:&bVܷjdVILV2R(ѠݹG`F}NQtV1W˻M>tX{ M.ɍ@VYYn# w>\ֲ֔~NX|'3ro7Vp[__U$7,4׵?Ul697$~I"c;` Z?zP~sMK nx|Yb]]B:acy*S$H$n""96"$_*ggaQ0i9em>M ~ԋ򇸂3$I[]:FISҒ25a{@׺5ލX4Ӻvɢt41<)۰7Kɢ3۫J^LRi8z^1|mbx泿gus /z6i 2(7!6{memJ^לqopCЎҺD }3Z]:MZ/3)GG(Oi m,Ńo>l2r tDo5}igށ:ieu8,+X;T Y"֖U~>.ߵOYB_+z"{;jVG#5[Aٍq̼. 5Z[Ok[8NsΛ&Z2{=E!2\bʻYv݃WՂi%]Rvct%hXvfv3#[;߄MUUr+fi}w&8;y\uF+ ]龣^᰿{.XH7c_LNߌ'(jJ65ߔTX>ˢ .ueKJ5M7[:q,/u)L~ Iѓĕm|On\'>A΍=C>:8fcYDIYcdqs8zƾO+=f$<QCf6 FG(bɆo[* 4%6I.*eT֒T)E h$=8RSxij?r3,ٹvp+,/LVWsQ=L,SNў̅UeC!!5?S=GBa G59bu6ݵ4p !O,6s48%Wrψ{<'T;@ sګ1 P+`BgGgOҷ!G QHT* D 6dc~P |հeiU+n_ asjكRiVAHxQP\ThlUm[jڕΗoi:۫۝RʹVdr|m6_S5eU0F0=5ФXƾ>D ]ӷ(#$?$ ]̪hpHR2A?A3Ʌ`FWÐ P,yDR>E98T"84˿;w.<{I {&[ֆX`戀eHYpBem*Tzy){{Uq}xgп_Oz4f,w+..G'#H;D"Vm.|tNM=Yh:[=S~a2,Y2.6YAs+NJ)&ܛͷb#T >jӧ%V^=AӍ:mNwwU.QvNJ8NM)->2**2QI&*vYkwmCj@l",uSlctםN܊B$&'˪ظ;g?VvRIqnx>A\A}RZ= Yܭo&1Msn{oh^8Ϊd'^. ')RmnZm"xzgFkԝSY3!9,IuqX! PBY@"I {g̮X.'smRNFk8ݶVy7XtWGTXMCMI'{TY`-,U*c8|SĔ)t5ko]x;kS:@a]*U}WD@i^N1HY"4;KZt4(R츴LWJ"y?kKijy<ʍP(Go6?_fX/+QZvQUZ`St0mCqnҕ" Wq]qMvj{bڍb]k跧s&AI84UH7l%{uL%n;m8ŻǧsK$cO[9zZ^ P~F_+*rوH[lqOſCh$mWe aQOW]ƣjz͇\'h9K%i l ۪"󱖻k%7=swIm~]^،;򺗢AjuoMIzik\[D8Abjg db]mӅɶI,R,쉷;/,Lcj"ۚ1Van៵Rs+w:iu1p]c.Pn;ҿ8t}d}uꎋ][sM6KMyAv=̐DG%H> ז[ӄ#Tj1ieWfte=KRG6Pnws|^=ãtO/aҺnqu !,inVmnlUWrzu]gnR,cJ6st1^=#P-3g[V"kH"ȉS}Sԭ渼.t˫{ʅvDp>&OMW8qWPj<^^'p~^K߇ҥ^m/O ܘGKF^夎M#8U)~չlMrq\Fs]Ϯ =a?G{+EAu 7 m {bdҔ<~oܷ6*q(ESMRX~b+Ǝ[4M4+w2r|K[Ԍd`V--Z9(ǤG=Af6cj׻MKq%u3FcN'|ژ -G/V䮚I&W|,mP^-֟7څg1]⸖)`1r!i#s|ɯ]mmuڧki:uw]GPj76w7_o-Ë1!^KA~::?1RvԗwI6ڴ_6JT~to4>VMGu8k Ad2_IJw'F{R&ཪ£e)iʶڞڋII~їj][coszkmweyoi{|~yӧf$ʐ^{7!8BMG]=ŷJ+ c:gF?d-ƴ-绻k]HLoo-DMo!bf;roPW]$GQ*s]+lC ?g:Rԯ[{w}JKA+0j(&7gc[[8KٚYגiF[ܒon#UuW̾e_iچwZuZ {K$ܓmD,Dш%I)=*tTSVe۩y~OPzuQzgOFAOyyԺږ#6zυaP+JSnR_)6ulzv{|zzǠodzI]V}5l#,(Mvpdʂ6,8E܍{#8|Impi\Is]^FW\ֽRf鎵T x}ŤWW;cKS'D =ߩ~kFuպ&۴l|;=aC)Z(ad{OҦ}jX嫽VT7Vu>uƣwt6̗n;ʒO"f x T_ a7&qMG^5OS.o..ؓ,drw02?'hE -V8\/nWr@(, @(fJ P*X)n98V come3%.&W Mk+@U*Rh pKP RVFJ`W= @~+)X'585H F>_1S(&U@V=@V]O:nc\*q;qXH) lHgA5ǨK gK$GP}@~꾃4mJ7unlA"5GfllI#0 wfRύ[ܩSxîe*xNݧ,noN-&gu.$ Z&# l,6b=ڒJ f߫ɕV}H:{5mO [GFܑB+.I*j-^We*o55)u|Gouqix֓Gu$Cm$2DZ#m wJ1wIjRRMii3=]h:nA-:4=Cqa5\`"m ާ'f9!|[g%Qtk_CVZiiy{*om.%ȲƢkv]$8O˻t.|:jU.ޙtbQVh][^uH$ŘF~OnE]rsů #KE2Oy]TD0$+F3l[Tij#Q޶CO5k4:6TeG`IVe%o> z կKkp^Cao[ؓGwly-5|Z J*˯髵tj1z~eݞ3i#my%Hc`RU~ꚸ厉zh=eI:Nx3XCk׋soj G䱸VN3D0Whږ;I^һ[^cndALISizd+3BIEKBic]TUrWew'<k7-#{w0z >apqX[YoV^;Ym_BkwaD[`ӣ2v6 ~ŵ{.rnΈNRI㻸 4NW\WIޮzSW ܊&jZҤtyܼzlr2@33E$McFoNI(W3jMpMn-m.5k C:29->`ȍ~ZxRPNqvѝmˇ}EytYSOx|U!DQH`uzW.|y(>N/IkU Kjwn ӧūE qbFq2:i'7i̛VIVv~}._Q:[R- \աvJ".'f2 &F~kaܕZN_7u`N稚֫t.%ދmq>c=hb!T&@[o^-9)a".鯕R$~z>ґtܺ5fԦ.undchEHX+`f0kitnJ9ݶsK|~nDv9g7p;WքwoUU]KVEO]Iqq Hpr~% 1L>f֩IpbذH8PX2I sYxZC@VK5[[F͸2F= fS!ox֑o(1"+W8$c=Qnޟ<zַҬWqx{͸9囓'ThMk߷p} bՎ\/j %mʝR3(Nn&׽.8 Ļv>2g72F?K?KČrW ǚlVln,=T@a vJB㑏ڀޑ#q@`l$y!Y.kZbaXɐHr՞NҼǐz{޴T岺i.-@w3ƄD;sxᥣJ^p5nHa5 =VcɖHدmShJ륩ZʮkK|}R$X-yW2'lw ]Ae]Xx&-WWRno*^3):!ldZz}8*]X=_Yg=wl&YnIRT1!k]tf$bӹ^,gsS/4:[Ӵ1H#TnG2@A=O;Wwǵxb'94h^+-&JӴ뛯T aƲG!om1矶 +3D#SoQi`ywzk'D4|Ӯ?Sΐ:>nBPA rc@ ,w@9>ޣUt)|JwM˜xʊº2^t7Vu]^8ҺfU:gJ-&./f!uRقǏC); jrnI.4#7_uougj:Ě3*ߎl[4V ef6!c)M AwTq1=W Y?Զ1?D,g" QBRDBoq];OƖ% J)_nyۊ]: ߢXzYњְ]]L0KǍ[hlniwFܷ .Nhk|E4b#I*nja[5yGcz=GZ#մ눬.-ufX6!&Ydr"UZRтѼ?U;'k2W˩^FjB`ޚdv#.%(RԤ5oj\'$9va?*Rj_]Q{qwLkZY\bO^-(-I/ ]L@T <=c/LOQC׮:I5-6[Y%؈ivE/o}BuTZMƞ7&W^~[ #i>u=iobl~u=Au5XmcyFzƽ1]u7esid.ħ=F>u>M?_s~5v%6)'r1>K5T?{ɩ4}~ #@K$@~^SWtѵ}oZdZ4ۼ{w!% 3I5["8Wi$ڴLuCS״= =}o(oL] vigeFHǿ^7(ZYt+MmwYg辒5MO%}71V$h&Y^LNhѡ3wmThuɫQ[ouRJƔ0~FwпU[&RL5xk(Oy|Š#3%]מ]cZNe\.W|j7ivL)x*Nڴ8t'FvPqJZ]Q@+&f>?qR{s՜G%ҢFYNB$ yKtl)8='fׯMͤkw?uI2]߰#S z-wMQů>E[寧6_î5Q֧c.i{=ԶmdT3[\>I%@x]>GR%fĸ˘NW5[N/ ;o;*UHdx6J/,+7c3 tOvuXnߪV):rmpq=뿥vu| ek6w6 /Q U/3d61vdSuRֆq9IQ4:a7%h0ng7Q4{ GEz YGd.Q7;2Z\Y=vHe)_bΤlmJ e+mo8;dsޑ/z&zaistO^hvmiynf/w猺<70#j|=ERm5o5_c隮ڄrtI7i\"#H;4ǓT}Q뮛HmmeNu {m>[i; 9*'Ȋ"e5Odܯ rywF,3jwwZEYOs,) 1d* \.dI'n/޻l] t-$\q7(Վv׵n_Ա:VZjPksjz_7(˹T U8u!k:eC"DaeuI Jxzj|:җ̪썦'K]^Ƒ] MMF%$1IrH;m=HG,cIus$ݦ8a/nnm^MSV^9o-8;K>Mr@ ƆDXsfydT~ݧK2i]>wm8Rw h" c iҤ(ܭ{Qkvmץ{ɔ]6k!\u#:w6QE(.>osgv3ij3H#FNT&meRqq^3gDjs6u 7Q\KmB_|j<3HЌG7$Dݶ5⛄[[rmKaoͮj]E|hΝu}$KTi-ė73[cTȋtޞbnV1k%y>zEIz[:vM}kyo/ofvB @D ᤑSdL@}ڽSӓJ J;i&]>8rƕ)sg5 iiYV=?gx^]+_[*4+P'زo({)62CYjur\s*cKj۬6g4z -;uoO3S13bkJB֎ȯME5-+nW:'y ]SAf~No즆 Hxa!h82G?}=N:M6OISkk$ɮtW.ws ƻu rAX\k%+<!*ʉ<ޘz?IMF1{U6:w<$Y׺+OCn}=DӴ}+_ӭIE[o4 n(C@ZH.M,} 6r(?KrwR/Hô}O:YmODZh4u-ݶ{ rHZQnoK6tt6pҵ7R|H&5CZi=7>(2mg4K8k6ѴnS$3& I:Q'dԱ-if)n  OOD>5KHltݡx1npQx$v<6'aYfMy''N4$kӌ%]u(cZ{NiMhuXVai Puh8oos' )7i^Ջ$;6Y<3ZXiړ$[ChCIv%&Q.MI2ʧ-4撊n*nla^iro}^k4ɯhR^\Kj")ⵊKfF"x|Y'J5%OܩEU"mU쬺ёg_5 ]c~~XMq4kGOr H*,eնܖ%[j-GomyTn/Վ=[MM$MVmmQԢ(cm+mmI%Iw zmI%5eRU.ݗ_t[ZO>A='6j׺:;usr6vhsH. }ri$xI&뛿 WF~BUծq2XEeir {QI~79g-On]Ǔuԯ-tkKX %jY̲Fn  ~UBӄ[ytwI:NWWk}!K[oK{@_ÏsHU >oYqf9-MŢv%V;ebF-{wOkfUۺ|}wAV USR6]/Zxtk).MZ?iĥʻe xuȯT^JSWuA[ j 99&g螌Zu=+-5mCzY%Ab+~I$S?&vD:WCS9eIR꾤}6H Ҍ4m 5*,r,*m* KJ2yq}n3Xm/LҥҤ\][Ũڑ(v9R ;ȥ7Q׋Ӎe{eY֣7i>tGǤ7:kM̦S$qIȑb=GbjhJoFs{Rpqj򓥁}ζwAi%V,è06khf%Vdx5$ҎZ/cr$xQqizGM'DvzՌHU-b){rȸmň;f )$d~bW{bPؠ1Ԡ+ P [Yq@e@P Urk)ḅH䍊:+AG %%L^!K:vCY/-\Jv_,셾r*?MO}gW˹|Vzs]{ JMFֺΡ%z- iSk]k ߘ)E(o[ڹ||Rv&#֝%Q^zM5 G{I5)cQ"eUfvG*;Jמ> 7Rw{yK+${O֚Ι^-♟N[χDMhHLrAªmbdg9y;tjG]7˕se1}v:k>4PVQj6sl3A +C~e&idy*캳Խ?:Ӯc2gF#;_M9hBcGn۷8~TxRw+k]-΍Xt\\ ;C i Bl%f 4NU?߂4uNN]tLҮ,;kY;`wd.*B9m̨N8jhGgg»WWeNw!uκuCmego{lDשS-CbS%_J-7Ri+[y<ue]^iZehcQ$[&̱, +nOSZz-{w\6k(ޮtT 鷲goZީJY崘n[n(H)ҺiI[\nu΅?k:v%`!bK_݃=]#\cY-evW[pK +m'm[R$ey/}1Mӗ=QugRi_j:L[Y Ryf2a"XՆ7%[/URJ>]N#= /ZzDWWjv6Oebi0*_yAٴb/^:m7J3Jc.xXtޥҦ$2_kir= ëjLu,5|{ڣCr#AOOaӷ̐Z+pDH-ݙ63n+=u n7㲷Dጂy52zm]ab-Ǩ\ jgdǏ w"k=uu^\Եg=3fuVȗV~Z1<3aR c+$kvN.[R2ۦTd7x۟mʽ][t펯%-<",wqq"2ӚՋbV0{@ݟ3-Lv7`=zZ&|$yL.r7p9( kpFhVb:WXd ȭdq[12K>AzeֵMmcM:v_I#Gdx{k%|FU2#Z2zQMZ|km> 5InZi) ĝA H$Ch2I ;Ljh=&]gu*Ut)~CIk:z!#ڛ|OpwG܅.;e#:"m\[ڲMO-Rx|M]ugt: [>u7Vؠda& NT!)9%IU;qڟ95r# zu=h,snqNxw"2dF,X>r>+E3IǾ[8wJ3ղQʛ7['/ DRHx(O>Yp pOP2j*xJ)!_jڜyVe 9GDPpHEJ$A2"p1I; "7E,d& pW UgF³mc>xv78I8Ҳpb 9ճb/S2{0x><N@ B'[myslE,Qr+`*G#sy\i3QI NȺm%SݫHBoaM7ϖ啞Szubç+x+xͩy3M4P{ίT'i6I5 WV(.mRdHĂG1"JCH" K zFҒQwkk6+ZRHZr6s>@o& ɼBYXFvvU~gf Zzjڗ%j]=U vѬ9mkODJymv4%s>'ohk:Osis*bVM}+Ψ龠m+SFwi/Md6=pxU븜?QL&Sj򤪳4~苛:]xn>Qtfoᗃ)6qk|#q(Ӷ鷺?/'S·X+F7Wp$-@*&Gêu?RzsM-gStm2RH {ȩݘGn!f7P+;6>r6#&ˣ&ޱ~mv+M1mV3t<,3@۔]Vz6\nN1zVOōf{hCSM2{ s|Ԫ p2[}q!bSFiJ;QU';>JJ/M26ki i# 6HHxbZӊ_54啄\j3WVt+,x.Y u ʼnal09d>uTJϵTrhZհGES )lq&=0u:IǍ|[g]+ۊGz >~]+HLWu>y&#co$&;j6֡_#V^>k>pK<;fGӭދ㭭lMG+NEIHY]F{  O]ɧn.6(9c>^#'7^#{R@tqi6ĐuvK=- Y$.~ EªRoǥSٖ򯩟]ūEYlϥ l.t"{a7¬C92CBrzj4SڢŶԳ~`4[ԥ.s@[hwVHY I]:‚VZpn_w/>cGwRjs뺝_^- SMƩRv9ngoSq~UH^0ss] ٤#x4zӍzߣh7p-( o{^nUH~/Umix$_zmږryn]_ތީ&k 2=B8I ί2Tn,w\.Jmm:Wz1YB}KuK t\$w*M ,Ek[WWX>bV%Uyw> lqnɦtea$QG> 1Eo*,jDFVW_ĜzvRSinxiC9=Y^F,5᱒+O o&ite{w &&8źݵƲk7{+gTީ?"]J{Rմ2Ǩ&xn/}^TWc%+[I5ٛw$'.OK:zYirec,_ +"2KjJԷR5i|qV1:-MzEn,.[iJ#{UwD^ $qM +iR6sZ_f. wJiY;mU#Mۼ&KKK# avxzyBWN-NN9~QaʒmV3vj1/Eoޖiqkz/u7Ҡ&2M#SnI}ER]>zJv6T IcuQ^\%tb-"a<f3#ѫӫJ 6i8-f4\(О/U:/IXy-\۽dAq2I! alhh]E4?8MmYy :Fi1agGMpWO-լM1& v98yU˾UGvTZqnJ+zҭ{nyٮ2^<֓g0mh,^Gq:_zrIq^_ڒRYqR2Tz/T:TΈTk '4^\Mep6oo;$[DĮq_u\V=5{>$ѧ', JKGt gNﴎα=ơ<=[k%8aPd9L̝вs N(S4R'{S]G]2TbWy v֩vrߖaջLy:c mfmG)%c2+oOeΙ&,"ӭ/4S-%WHd2\G^sJ$6tqݺ[N)vn{ksKޘWk#OyoM;K8{]H]ƎD`;&td~xCe*ӖSjPyڞ}I<.NUC z~Zڤ6Q|.oUdKUwA|kuf? *V)V̝ܽ[}MM&]CqimNBgIi%HCA{HØ7'8)$fJ*+rSk˷wJ\ŢdךLR[xYE͜|V\CdYd"51)ȓ* M67o3yjWݶ*gl=NmWH;]:t:zCdy5 ?wt<ڬ:Ǧfud-Zu[S/8*:N΍D6V汴HgZ[h~̽bdi [f׵$ꗩTI[)E]5I`uoWk]ywY_Ok7ܸr9(> 0* 6tbIWc"͊P QTL"X9$۾'{ J-c8xB ~IZІi(VF~7W gsMsl WpGhkjZ@Vf@([@(( ɦE*g, K re@]@>Z;uVҒ,=n5餷PщyPv,@/S=$%g=+Ho{Myl. ԭWmKT0 w;92ذTriU5e쫌x1D P(^t/FԶ]%̱5zveTY.$G1*;*8i:9#kTڧV}ݤQ#~:>ר=5K[tQ[ >An+elD4oYB_R-vjtUTJ~c^-J׽\Wvv)4A+sQ왆Um.nHTNfkj3-,No\uS^ZdUfH!ō*}+IJ?[*=-u~/8t0OC,9-Hr v9SASW)&wܜ"JŐk;V KkԈ&,r`rNO#\;mx4}E-$C 6K8n! v)\Uu&\~#ؓOmqysoNie3 G`a;1`P T`}0RiU.l]{9^ics 7q8 an$53т|<}&]鞣Zhr-ꪾ} ~4']-dt#d \4Cn EN䲛2O } &n鞶MRT[=mcӚG/{=f;H&{M4ځ!iVsU6?+i3}EIܦv W1C" *G^N3W}뱖ԢR%P( . 7>n4 8VW;<+xXFΠ/n*/(,?fz1GOQzMSXĢ"W'qā]0,<} kuWI+x}ZDgeFrskj*ٕ:~z^[c=b2 mn`/U~{krbkQm*Βup#U]?.qM`>z n+x$Fˆ9kO eSIN~={wC ~ou%6|;3z]>NR+r\c?q |un뾠-4=oqvzPZ;n$q5JMXõޞmUC[Ǧj:uŕIKLUX/-B%XTNB^44<:ìlHK$eT D8uIeVuG:λ>KUJX{N M;]9^:5%ET2&o%n 1\4M E 5y\l5LޭONbWZwLaPI$HDh0f-S%s{2OѾ wgP%ww=Vj u>Ig#d~֎pPdIuKjinڒ3iסM7\TgP}#]k \=AmiZC<@n#ŝh+o(ecBIjI(χϥKVire~2s =47.m|<`vmc;ٌu8)w' ݜWd8@qςgq LNrĞ@yN.ii;gbbY%$`u Xzk/U}+"9wy=Ih Gxp ai=fC'nw6-IE%Kuߔ3V-u8 XHħ!s>]gq5ۯ9p?kgh|#zfq <)fMr(=I(knщxUӂ>*M?65h.`Pp pOҌW=5L.Ydo沂$XB$;ʙA*1VoQ{6*Vo+WZ7I׽?k.1鋝~#=mIU|5ĚkyT|ٔi{2.//ݬv*f;uAE_#I1%FKNktm]۾} i ʐ'?j4S# 1~<ʲ*88(PxZMqPgeb16MG831q"Plf?)5́$ J)0Fl?ZjcbZ`qY U)ԣ_>*Jv9q"YTᱏ% N>AAC6c#f\p3(@HuĹqTQ(pn64u !_?ZotRAo;I:|$WheR8 v/FNy:>E}LP.:k}faq>{ N85ʥ$,{qfǬj$+4),a:pV86#aeFٹuj{Uy#5+.-;F$9#M7ޮŔg5KB0LEж  8=#Zwӵ:`fbmvW@>>dŨpq_5?'uSskcw7WB-nQ{wvn"PڣƘ@uz,IZoMq-<{#1HUk֟ĒO|6vk)ǛַlmYmmb-t<<70؄ܴ$dJû! w쎓i6uN-n{j~/ogtzïd4_s&pTZWG#.[ 9hY% QON;$ԝEwݵ]Ko`➼h]G0CE`\Gd-w]1DEY5z:9'<,]|^]mb w?(-CP55&a&Vc^NܲLE r76~4?ӎĹ7{w~8ίQ윍;;#YU6?Qբ޿BY/қ3O龩6IwtK][aK=Dcp.y`%"N͖ppxW[Ԏڷ%_tZiRz|ndMltb5SU,R%w5CI;+(4W%^28Ϛ͐HHG7 b1w w0r1۾NVF|EUFPi@5fF8S`zJ5'Dm͌EcmoS`]R)/b?zBT I>kNZ/TkC׏yL:BF&]3ҏOԍӭt:+۩XgX&6D0+0![TuiūK)Kuլ_,d׼/#֢yDjrl͐Ҡek|ČǑI>?Oך_Y zϣ:|6g"&%0r$ oI- B SOݞ7UUˎ}x i4K}*Lkr-CFhnw>- acFCz׾Uj^e-Ix?&7Q˫Xo]]MS2!|ykGEB^j+ӱMShr.ktرŖbʨȉWw-V%汥¥jo?J ?yoMMԾ-01gmR=+ĊMsg;Ts"G~]8BdReާ, ܭ,cϽ~OPu7_5)VLPqEmjPEq3$fHbOD(,Zz*qmk [|y୶~ֳ}==O-D#{y/].u.Z)7~nG>KHNӴ#=Hx@^,NڼnҳVuHܒwҝK**km}[$=_ }=-:ށwo$|H.y4.yi`WpO_MMB(K})|HnI-;j6=?vj u-C[ZKgZdK /m,-",xmP:-L&ږ&ܮ.7faOT.KPn;ɦVIjB"p݅=xKMZQlĽjro2ora;I<ŕ:էEz}e\kVtܥv}0\dD <[beR^F;JQkg~;w]G ^.Ѻd}fUr1n/uht %D4n/U Mni)Q}Grmʷ to.OPt7Gtm&mA5{*uKv]Y\’_$zX#̮MQMkT]ܝ:uz]=[U7̶w1I[ݢI84&>-9)&j/r{VU;VGP_YkGi}hW).O47qHHExTH[[ש(iEI%<(8W-ӖvMyN߱g:ol4=/Q6.v%C02$*{YJM[*oYWǙr*u׬rkGSKs͜/@ d{uI{NVEU*{/)wT;./eoSi ]F Z;qZɍ%,ǽZ1^1nܭJ7}צKjiQVMD]^ZV&kji7W{z3mu2A Z -8ۋgQ̛Qi7̽߃V-K雝&MWI$"%tyG~ Cj$đ?V]SeK–%Cy 6ѧ:/C3aci]neNKr0^$ok_. IgjJu*+<Z P @(;:Rh3Ewkq4.7_}sw&BVuԝOy>J]H,rĖ$M8lTĭ@V\[(U׀6oZZ`UP @(P @( 9dVG>Ŷ)4*,C&KNUe\]Pp̭0ۍuQy-隚ۺSH%'[xY%+)3$Qghk?2ڔ0-/$GaV-mV F%%tݶ1 񭴓s{=USTѴ>)Jin~Uj*`o1UΊQ_/͋k[ty&22Dnm*fz>ip?g{ΰ./-JϪ6KWkm,v7R%Gue9KYs\c_d> [ھ D%awX)w'h'' I:FμFLoY{w ݼnF6$`UNw:>2lRtC&B덫={ۥ66tƭy467%fFa,GsV5iq9&R] uMzk:W3M]yh&*H }۰JGW`sXaXMx}OUX6EJ4cU\Q$5Kߗo-٫o\i޴m+ pq99gJ XaΙvǩMDTY*4(ō@@`i+tQՃn>ww=:8Mfj49ٞ%?k03ZiK,>L{_==hC{}H[[D,TDRRPV/rGoEz }lFiau42Bf䑶JVMΎ h!pM[Jia:4Q#kO,aO}t4❷\ݸ|#lwuOSWQFn沆'졋l2B$ҍL+_+іW*ry4յ9Kxg~?QFK{m4. pZi2s(AcQvM\*96,MSzru%TlN$qzh,2dW G,ƛr&~h7_oK%t2w,g˼ 9J*ˬݮv ?vFNZiIm)KF{BicqTffXyo <@wYF,zPTlC4+1L QvsUWVפK}]]x[^ߵe%#ߝ_tںN&5̱ܛRQմ< ލ-oTР:9eHv$Jo^|>xZj$ے2<6?JN͠3K=u\ʤFSiD|۷H3=ZsZXsc轇~z'Ei/UVcM96ipaHgw,č1R7u>+SquKr}sUX;;?uECк$=uvm-'^E^EK@PȓAfBG^J/0j_40K'?]rE5Fԭt49S{WkY!20 ۝Jӄ$jR]esuq[Eӈ=E;)/&r2Im@O\=M+q?Oj/voŨi9+[ MBP`8o}^*qiU51>5nB6vwW[]wXY6ǴǶ>/=T}%A\G  1M&t'ǿV:l`+dA$rvI#;ë0W#Zv\>u:'n%[fI$!+Emˆ$r:Tva:>=K|zq{[h"Hu(cqk}mu(GݕI• ʹ toUFz,bO_|'Aun ZӠIo^4!\]aat&ZEFoxuVBkE&.ϽEuaX 尽U`[d2"8AipK4V?OmiTmi,*M~}鎑?wotֹV\:kcc4-ƘٺcOpZجoUvAmnM_5GvԱ,eT|{:wd׶ɫ8ՖHg> #3E"Ff@6*)UӤaMnn&Zy<-}]C{oI1#KN;0+ujzkQ&ǿSV $9q'^FJgGRF0OPЉZ9ߟ7MqeЍ~2]W{sX#*g+?AS+`v9?րqn|pB 9|VyFq֣2yy\'?Tm qFk6 0հPL ,ǟTuO(lNN?sCwqSf0 1<5R*9.\ Rя~z1i7:B3{r(,G'>Ֆ,}JMxn5 <\]g$Ne7!0+ȯ2i=VܓIJkj_ͤ VAc&{-Ԃ0N)ur xuSX^2W jZOqKi3{*r$+am,aVy [GKrΨB~l|?ZQdhH/~R#\crAYziXRimsya ;":fC+q'w0T pveOx\>3/S\ɧi׽Cié\ٶśH/!ZC#I;??turIŬ79vO>+i-75sX_*wzU-*qi5jU&UH}My kqe5Ο[ث[ekւREo1tfm{az=(ovSC^v%[)6z #n}@obb[U5bk7aHͣ~S iҩnGoR--K-*} F^ѮtOU{IX?"gt9b2J2QoکUwj9P' t& TB [M[o|<&(1a6e)CjV$8Ǖ%gS^zێ4KGmܖ.[v)_hJiM=Okmqu+Jͮ~>+IZU@Z:ĕT\ WX('\J/iP⛨nX2**j49H9ђ2Mm?V>#\#" [4R(UHZ,QĥjkT x\wⷆЭ4N@Th P8#ǵV&F>#ma8 #Ҩ %LYIw4GO% d#5(mk[,`Z)5pdPɫդz~p*|8rYVmRU0FE7M֟PMF]jP( [2*ՁY4(V5k@)@o=\дYt.96B֓)J&SWSRyy_ZnZt7ipm4+uP\,!wmUPm׏Fy.XvQ*sHz/RPWN|]FCE vH2>Khp]l$Socѵ%jtΕ%ږ W)'j -!.1k¤yDWsRznbVەΫ_9xQTuX6/beo-̑$7a1ʛҔ!nWn+niKk"|CdJXp7{) l)GdnRkۨ$Zy猯0ϩK{ &}zYjee/Ye__njijFvǷ<Ś hL1 3-?! '~ݝ+oqԚvMu,E)LV1 fUM(R0xZie6ͻ. Mfuh{hH6FF "Hn}8Qf-{?6&)O]vKE-t.t֩vy5ij V9~Lcq]2tJY͌zR9[kUy__Z$Lm.շ o8gnJܣg2ٿyw]u*j6Ou:9ib$7,结&3uPts~kĪ]Vz7MՖEQ4zrtWKDk9$qmpPű7Zqu+ڍ/^_]FkN:?OGt{M4N!Z HN8;b0ZV;Ps1ڟ֣4=i\]W^e*Gӽ#Gqy}igZ:Ty۝FKĭ!)&V[hA K+R.;It]58JOҿ螟U Wsoy<2ClR#|L(ݾ:V(okڣ.cܛvMڏQ_Ǎ_VInkH-wFd";EE"G$MW.}=V6UJtvOs`SOV7)umH[kdoZMAXGytwi%\2Җdm㻌p;%j٭ޮ-S=՞%ץIDcmq]_舖b&W!2g֞ITSmf+zצi6YF}SWukzn5]_otӴMCUOqr[M5ђA2MU(FB8&j6ou=IU^N}'KtESԮri_u]BS(fݼ1yd\G*}bUmE={k1TRBQ>g8i]w7SuP=S{XRM}:H"KR7Wxv0J[\\m{mwXbO7S\^ֿޥ=}fjNYui i13P%Ǎ KӋ]<6)wK*9;{w'j#;9)6ƍ]\ŭdfV͎i"X>JYxmYMꦝmMsy˺q^}ZR^NquOTڕ&e-Κ {kspwW1}g0Iu Wrſ*[F6]CRu)D.;+TlleVDz ?ViZzZJ8ӝot:^uDijL"Tu 6KD2OG_SYg2|cigoz+Iw>0V]3&IHo|OkFsg䷙m H2,Cvg MsynnxK4ݔt-XmY&ށEFʓd`3ig>~jk$Gm˧=~"6VhN`v\7+Ri~ΞOu"^HI%pc4$/.GWs$bp(Z:⃄;dw{P;{s5sW_pr;G| `@㏽Qi<_쁈x O<68<rJXfK jmVϣWmm7y7P23+di \+j˾1aY|}d9y憍ͤ z)f^ڬ{R>..6I۷7&OFl@AJj) FV*'[!g]s 7Qn{9R˵GʷUTKmcwAl$͟on:}]%wZD|mqq84ckx3F/3ɴvVpU^---XɩSgr\c.eVOZu;\:mm*"cExHQt,r3nb\6+]> 6ڥO35YS|Sq@t[%~kx 3) >BņFF)5{1*;UX뚄I[K&,HK+_&ii*m܍ٓ5.V9Q ep%kبR]*SJSJ0Kۍv]}se(#>HtMux.8'{-ةh,vL8,JUb9~)NRi*JW|6ړFgt jYqEkقY#y`IvI 8羉_SMs/JSRim;Q۹mJ}B鎝}M:[n ɵk+-b" *5_ o"hUcgfO>0+`_Etv<; 7 '8%ݍ˞R6O)8:u:ԍcӵcomcgomOKXfkudK$r\lbb@4zH7%/OgҾͤ[bDTa"ܸ*SpǴ5-Twϔt)gxX<x#sz=j]%o$ZN#CyodYb7pY0grVJYM>bv}#z ]5cWS˧K]6XV}F \7huBvZi̚ {َz;w/jvizw,!d&u&%m#1xqq┕)&Kjx>+SM/׭ P鈯u:4ΦdnF] eUEg*x},uQܝ%JW GYlA6O ֖iK;eJY$#}7rnuUߍߟ!eMO.ӺxON;Ʊ\9;p͍4& 5J;::]NgY P>"IR<(Z AH.0 M$j7iI?>qB^{cFд%{ O>DN"8;FNWz%'|.8Je#ҺGw~&tu+3;{r`{{Մ3ND_OOWOV/WInkqıni[zP-ǯcsKt E,zE$LJS1a] j_E߳>8cVi)yð" ##WzRigɖ7`Z]Lnh{OuǫvzOu ?MGؼ,rQeqia|`aRxeӕ0?`Wɚa$ 5 otS~bۨgZV1nQd@rb݃jt\o ;ce*]&~yr-a4BB3d Vٜ>uHmO˯ 2HpZܓYk>ͯFzAc%ֻ6uo-#r&WxLWY"#v#^=tvӼWli?Fu=C Ֆ6&DAa {kXM<꽙t$ϦܞYrǫ'n6uxZ6Ր`+D3)}h`\@0{xϟ( Rm. Tss6mwu#c.rAR9_&ͻdd$bHy< NUX> 4`?q@eݮJIjiwm"0ǝ2xԜy6~#'mKX /R{km$+dH6o (G>PJ.&եKy:AO{72fw]$n FwdvRo(Gg%V:K;&qk Kyew`._{K{IY\/<}b5X\ k+FBVg`3/Iă6Gtu|~k]D[nl"&^Bgs#IC@"Al7+0Ԯ?moi#fFWVGΤ|Ef>?b<{CPM^UR4>y F 7#v쫝vvo^:mOM?Rm%sn !O%nC%vIq^izbC4?g"\mI4=}7Mmn8U-÷Lz:/_t_^ҠU[(;!kż U#a!k%69jKc5'Qqqr~4}gӿI.NWJ^;{Vxݍn°}&m- 4m4SNIV.߅.w.g ԟMKxž#b%xH>`}-=}ѻp<298Xz7h&? ui@m, m rR$d!9M*17Vݼ?C:Y"8]ˉZ eIgYh/T\QWju.ľWE"{+[dziFkrF\<W-=\զi:eS^ޏO.D:ծj=/iJ'wd2G%D'P[4TU+k:>׾C"#>!\Ł,"|Hbڏ&܃!{<+x/K[w1 \9dxҭP 3 y$6\IPvd϶rxjqŚ6:M- ?٤d8Qw%"UO@Cm+;}|_ecc5 *@*P@ *V]׍d94MjdQ+HD }+. cmoWEĐ&i*n7 H6&⢠NGks@V Va0F%tb`,`{V.Ұ>mxD )[)@W*vh \Ug܂TQT X@ RJ5VA4tJ@R6m5-$ڙIFF҂\Q6 $V5 VvF1Wek-P VKj Ri^@@VP @U*Ph R'\VO( Y%jKVBQpw(p '?J'̼{& &l`x W7); K_[[Vf7ݸcRݚNJb2T{٣GXYz7wgњ]k7m&kguJ"wJҨ=| : {,+㢉KԉHiڳY!:m\Y=⭮N5׆P rB=fXʎ#rg:Wb--/byvUX.vXe Izj-v y~ȉY\Vv7RIV)R=.Yv)&aS({Za<:®Ĭaܗm bO5tӊIuI"g; I²>kk{ڏP˨۳4a\&7+J{^ʿ{kߊǹS]G?j:&IMkws=큙`0dR{B@Ԟ$JUwWmSo*Y?_^Մ:JMJ 2k(cwNwZ9Um"J* s'v@~GR'h'TZ^U46`/Q?tAivY tfD3]C}jdR4Il!)K (Ңx`Ϩ:[ӴѴBhϫ"Gkc#Ƥ]#3m|޼#isn\q%bE?/Q螹E~`;{k{;"mUrʡYcnUiOU8&Mҍ[wR5id GHuGjqKE]u6 7FKmBYzNkՌ%5g*.ךPRkvbKXx"Vhbl s-bru+wX쑭k B,rެ}E5Z[[Cfڹd @zIIX̥ԳݵHu/=CҞ&擭jIe}f&g2[PH<[ЙluzzҚ6m-tzd *+ _\&>NW6VWYXIv;3ȑ;B7>[k="nV}ۼx^ԭϬ4YIVGYMuslB![2mU˜cЖʖ)w\2,d]PzyJi?NKn+gNtw!H;`(u!&DE= 8'i~{݉EankGOá}v+Huei%MYҮ\#wڲbI$m,X%>u죷 )Eg2LqCz﹤EB(`Vl P*eiF5+-Q f0+U@VV )@T`T#z5Vtɮjrl[DP(#'@n]Od+ȞdP)RRERO'i*P>]EK'vOia}1le&$ܶăݸaȍ|sc8ɬ*ky&2*Q hnЀ#2?<"C0ua,.$`H#f˟6PwROU޶_4q;N{= " lDLq[yE]bBpcKM/|M(Y衆AVEo^c+1 s'(K6u;sh_A{h]|튑O7{3^Gkk=(O\%ⵐ2 c$(g$MiKQ5twO4Z{ͱI 6\sӹzin4Fp K-/pұVfIcOދwVcv\X۟C`zM`g#E&]NR28*H#*XfcM$`x:Z<6=jKn"nw&X~$*”ܻ jEuǹ]>uRHܣa+RR|Y(`1Ȓ e8 ֤deK4j pH#+I:dEdV\ #h}5߸1ߙ 2}P`ќޥYVPҨ$svrpgS_I=:aX YVEdy6 Ą%g*o[4? pBHb2vؓp#^x>i 7v>2qføVF+Z4f$>j Mo .,J7 C,k!mg3:MueqqȵZi.nPw!8.6ހ|Ou4EwKjϒt{f#P` .(\K۔{nfn[͟;>HK$@ɺkn%,ŒiWrF…x~G'^{v#ve}Bn!j7hy#UP(-" RJ6%+UI>eC=Ԯz3Wm~경򄶆)L3r61E?*fϛޕRzJ=K4JVni}G{iԚ ?Pj! G)CP~P AlI,V%| RzXmtˮ6\KT@ܬi(f۹$X}4&jkس_qךDuNЭ&Kⷷ.D!YYa7#ۑNytN ݿÓg3Wmq-ڳG4N<)#<ԔT0}R8:4%I5Ebn$E\^;>ڊ5A&毅Epvv|O˴&N.ADSrצ3R>7q͕XWQđFһI,*p9f8U }o*n._"V~?Jn/R:)M^t8r'Ga/&CU,W~Zk8o\RsJۻڊ?.^z&]]ZD}.I(ƣ˨EvNp/QwܓxRsU)DZWtzsݳJH2@ʰ*ÂVՋfS;=9k:&WIG&z.zvs^5ˉ'EKim$L(dq#5bIZIVŵFtIם05 3Ys,.z0$25K ؤTYUYTY#奃GMWGy$Kۉ]F/omid+#k6"JpN2y^T%ZǗE7E\sso5{F {JcW*K.\2GGrNUTV7_G|;wt] i鮟%u=޾K6*HU8el leY8rT\{}W ⏑eqsk|OrEɵV%H 7FO*jgUe$SXjL-^"X=@ά8\/RMG9K|N‹[+PB{V&,ghhA4h,Tk]m,^S7Jx $l.e mߙX8:ʼ]pɞjKQr:?  $ʟO Ȯ,&4 U:n_2r2#h|f/$Q RLe+.i4V67ru H$%YI\F5i vuZn$g&#ipe-(U(&'n,JVJǶ;OދfӋ-_FK[PC9U7u7$K̿>䳑Ace}iZI9"v^@XG9S%Z2j2WwŦK{btKV7VN! d.͈V`˺F-(ˆU:UWrHteծGڝ5d!r(UȥF2{ -^)Kt%YW$}IVK&E'Ujqyem-0EY JvtZLnH!Qrm~jRWi;=WNi2uޣ-ҭ年Ӯ7Iy(\NV&;F#.&{QiẓIeRcw}KЬf}?,k{!1"Dpr+>yj$jj&~-nKcsakAE4ܛRy|g%yݥ;|k)TP UFbTk*Yh UHȬjBkãLe )+@Q+<uM(W@VM%@ڛAjJ ZPRm})(i }(\rO& 26 !z&ᑕ "5qiy$hS0!v EwF}AZKڷl/{r {'~ˏ@OQǬi+2EYyVMB$#!l@6~iꯍ~\8պē턽81)5e{},J$]٘$NI>M}ER9U, X`VX, Tt JK <F<* mO ZzprYi7_BgY'~~gIk>N;.!m'O5˰db~"iBT`{𮥺)wnӥi^)>*=4|?}v=ӭQ$Fvw"I"e_7E{MZ+YfOʪ?R×ek;G7]ԯ:k-4m.]C4.RH #+Mw8T@(P QX`x@*&Z wF`U)@P @(+ @+ P YL J(+Tl @( hiR?;^@OuNk%5{WVlq}2@PȱD+Ѭo}5dݬa?kW_j^z䤥%]S4Ut3HGk+sP:=F]؈J"ǐp'X"q^(y56S(xUԆVf5?c^^H ].ceEJ(f 62- h}ķ1[.cu~n+JQ1^.U)%{^(%/j>ػ`g8bp=>QQrC4(P<*j%@$8W8g>տ2Ln^EF !uڻw9 YRos*Cd$}l n }6 oݛvit[`{9Eu2=Ɲ܅EY"C2N`N6ՕX=B9N$J3Gp 1 Ty s[M>_F(@o#n!ngYٻ1w*wop. 1\k/Mnޫ_zwiof~Ć&8wFd'm-”o2Y|_R4{OM4-G>'][5)G{{[{r۸BԍH,!ԭ(g{Mϻ[CykP$ם kM+Z81s6CWRIE98RWR x#ď97}=yo Zw=T&ܾDv# )B2٧lP񋇺]yt.Qj6<6rΟp7|s_gR[K 9; %.ѤC !TrN798Q+Z{#|+z}6BVvItJ+)-{}Ġ37%|Z}DM8Gv{K-u5]XzwiY"5SG0=V $b1#nQrn?JN*ǞIxẉzll-{CF$&*@-$ r(q7م C< s;N 3*6܃s'6)W2Ksl$N򵌷(ؒǝ\]qxQvM^j}4nuE꾝k='ךTffc[J~hĨ)8YX ]:~%vy.\6>|x8܄iVSڧsiBȶ ԏJ)K8y\ ?T1(qTr0|oj N}#Ԏ0>ҁi"mp9Q@WAq?R=2BeBupJI8U+#1H#w{x!+awqw,[\w{#vݶ#L~)Lɡ=ᬾUw>gε& 1~+֗:+jI(BŎ6<*+]a`]PWbsQڍ?N޽W=7wjKowk/nhnPG*7;C&NїuVM[;˨^2#r !6OgaZ75k vݟ?YnrRXg#n;qHbR4jY'5:_j?jI>^P @{:u f!jcRR3tvo-n[ nV|K3i $ dczMI7|sx{8hYeᔂU!sO 4S<RasܨFe}Qet,> F_t֋^^n{3fdN:VKtX9%hTEH,V6IAm,5<7bZ<ɩ-Ky7*!dlFCsjIƶwy>mZ˭5MwkvJ?"( `#:cW]>`OCԍgc΋5Cٿh hc+"%6F-5q=ɦFN|ɦr$mvymz}՛"l!BBA b1 OQ\p>WD S`@$I$6/ )Q9*)jm\yW_t\LBCrާ]NXlUh㹉T Fany2[jXώ[~xKYmOt^4tԸ.FKsG#!mH 9xR:zriixus,2}/=Mo~-/ux"uWRmt쥑da6DykJ򥄛wk~}||N>K}M׽A649v^KƳӒs=pv諜WGGFnR]UxNc-c1rYI_DJP @+6@+-[@%NGTuoy]#ӏS^̶Z)٣ o, *,/-/2\9zR*I̭w]'ʣV/LNu{,}oy<:-͜I=HỊVKth9jAGMMFvӧ;Rޣ,gN<>sۡ>j߭F{im:CiVӈEIQrY}bs⾯ڲK;eH΢Ү:oNb]"{&KJ ܛH#nKaW,urʧ޻w];_':r]fk*E${ciU@;C ;wRO+iy\Vi{{EDJFf0k\bVYlu6g[\۹g^̻? voMrw*uu4yqlk:Lᐅݚ;[]J=]==o(g"(~chY +` i_DFf^ ?J=]귶zWz4KZzIfa01 "=6-TN¥Xح>l =CvtEV\Kqт/TZp }#.s웈@:=74|YOP_|Kf5lvVugEin3zz:n1Xrzմ]Vףlf Xj]MB3j'm6+h W8殭vy{Yb+`A2b#9Bj\𺞕$.nxec FZ|#!Sa5_swwˎy'qjҰ 8VP/f`2]n;dRj%f݆ m_Vr|kD>w^_;zOj躂m{`̏dGP~E,:kkti:>K-tXywT>ͧ]ēi#+Iٻ$YnX$t04U~Bi2<|+6GED,w6o$ RΐW*ߙ^Ҁ؃hZkjmxmד nVhfe @H<G>GRrRI,;|qXy륽L~UB!i7ZL֥eT̩,߈dF9'i[˫^,{Z¥ͤFj zw!A\sPXc1=pfP}D]Ok?I`p}}"x4/2ssijv.8MI[܏VaH/_զZrIx=6IzQ?.9iK9?1 }O} #?~|2}sJ{*>8M , | $vhGSR8x vjL]Yg/Jt u4xWXK䐢(HKˆ$627jj[\RWs|T[>)GU?X:eƍzu mܓr62;[JG*b KI+ܥ_Q$UKڷq=OH:Vtc $nAVRU5[\&>QSUYXޢhlb;x$8@4_wVXԸ |/iɧjWվOA^t-6zt1iV7ƪ@ѿxFYZ0EcLO$/ڛwnEn Goβ&u%|2N;k  3YnUvmx\Z$d}sOк4]3X:-YJCo4MK/2 el Y9-YMW'$ߜM̗gXc@͜(Ҿݼ|.#Mp ,w8W-6z}.~n;E\tEOrW؂]]xU0&TXa ¼sp׋}?_QIvqUνІC16Ҍd"*QQy-4׆֦o$}cۍ#3V4_ zZkMm_?w7aUV lG9۳}93dm@@͘b 89^󊨧C4KKoOh^ ,ogTqPZ$qB,I"44ۈُJiI-Z$maşNnWB$rE[,a3wR +xyruߗ "s$>`cW{] =omo&pf#0dn2pgsR˥WUQhm6.Midٵ?: 8нϖ$*?!3QXwkm-{W~%i-HYN]9_iՒİG=!Y`HV9 k KVR}i:8)wI)R4z>;G^z k:Gmu[Qf 9 EDP`g.ӞzgI_-o*Vee(ťuGKOZPK,LűDNrܤpoAopf̴c<5nטnujܲRt/-s51t77uMFL{AݤFyFhmHU [Qc$ۋvF]]uW1X{uM1fU/M0gYa3Hf14j>MX%,TѪ۵yQU/f-?Iғ_zV*"kV|ޫDXT$Xbz輶7)VM\לS\&ܞf .k1GeO\C=}3Owq݁[AR;a|[Y OV4\%mr\{R 8<ΓXְ]vȉo ϧx%I0+ܢRsMv֛_nm-7:%g;4Ԥҵg""kIq 0CHRko7x[Z|JDmb=Vaand-Lyp={"I$a |ā?+NTY-n){$ƐIѺ{]y 9N߾1^ G=9G=L4m"G'њaq k~#o *y{lXKw6v 69-DtG$*p!d`I0"RڻvӧK-X(de;:L@Y~TGkZn2nQmw{}~W̋/L]Iaye1G42 ZX!;U6Iѳ-cGpiK٦| za:ߩZՏJ}j(;SOVURA#GUA\./&-12]Iwe(K Jx9J+x~/(r@bY/J*v1,?̆z&IݹZE 2[!=I5N0TmĚğ%ަq˦۹ۥx fAaWtI&#t33,5zrinmt.0Fϒ׸Ƞ:[*<ѣ4q]$('''\S=GYtK*BV6.voڮZҒ6ߊu|6'Z}CO+yw(bG 1 0D)sbX]4֒gUziR`UTV!cj7/ڰxue>+U@c<,?j[B*pR37_'R3YpTZip,f@P  *tKGX X e֖eN@@V+@P QT @(.9>JS@q)`ǚW *P$lP(L pQSoi?삅+U@TL \dl RdT՟UHFF( A^k6-]( X*>ϜX }]9dgR[4Kyn)f`y?*`s85rtw_$szHfKK(`'XZVHc+!)TWy~1털}~wicZe[1QNJo^W#]4{1z>ӾE;k]W1 U61XFf DQmQ#Ȼ?J6Wt&ە|HNMO#ggK |$S'O _sTih^%F[HX<}N9)(|.H{-NuGx" luon ̪x %7't?W t\jWuJA yoغUmɵ\LE~#ƖWzN9mxz]Zܯ)]ϽA]?{mtmH;ͽZ+bn>$dPYb;l3m5QMU<σ-gǣz]7B<]{K8m$vpp98u1Ѝdw~/]zW5Ƣhrخ\Cuv.ىb9E+fG^tuu7_,Rc'J=vZ_kћ)ZG$ Hb$A=7OJ;ui%{Wf4OuG=.Eܷ2I+m!dB|9 Rڥa>Rif$ij`<뺚Zkwq5N$$E\(&枟ÊJ5tl+`P ZtY@:GcD[$ZHhث]v7U.tӚ||ڬHm|.Q#2H &*ݵ>\eꞁ귮s,o,<& x\_U'qT7U2 bpkr.юIQnd#۟8rwzfU~^ٹS`sb}EpZ~hܢ@TP @(.S*4eF*mO QvR*JVl MV W<Ug(yrhj<{d+\Z@sV2Mm0+@P D @d`tkq qJJl5& sFYO#"ۜKt}"8,C { ybH] I sH sr9>( 2luqAHi{@t"P}Ͻ^El8"↑ۚLWq@s*Wڀ_=`sϏh ڑ%y| N2r9 ݉)lQرfӃP*>^ rslYguGPrMv!d@}WH4tkD[{\2s;H(%f23˧넩f[M~quX' X8Xi6 } X|qvquX &߶L 9¨jpyYn4eE~JL+qTl-:i.Z8~)`BpT NWgrq|ZojU{nWnC88>VӼNU7Ŗ!y9 hˇs44ug?J!)HՍd1R*Xc,PN%}|v> yGGi]QiCh1\X4 "*JrNZUyxh}GvdT5>$J=ј/W``|5ˍ}m?8'cE+]?\mj5MKAbin VMR8qPԲgTfJ.GBiZMiH5{7LKOmm a9q߉ ?̵Sԃi&>e]-jjr*m$F#4w!jd dX?̣*Q_ZZIk Xh:veA2Gkϟ[U+z'1.rHe!k qE%Viѣno{*Ah$Q@ ~dBmGSb^Gӗ%9/ZwsMiڢ=B ,bb1*^2Y@ ,iQ%8YZ[kpmqr}{=44 rΠ TC+_ 7\zn$i};*(5^ҵ9lo}Dm+s{LOI+Ǚ>V/SKWR)[e2_IW84~On ;>zOkK51}qs5W$DȝGio?VG-E'tX&Kj˾qwWM\ε{5ՠT$()!8PݏO-h))\KMQ/IkTjtݛ~Y!^#qB[Wuܴyi0 # IIǷ>kШJдMOzrɥ =l4o#m؂%H=֜|)zì{l&J?k~zA݄ϤAZV2jm5Cci<!Z*EoP@Y6I;InTҤk}u6'73,qh1*ĸ8Ŝ6[㧘^/ opW+80A}`zcMђWYaUQ< rvX1Nie=5crnD/jN xT_Ͽt[3d<+N9$GV=MƝ J$ olĨ-Ȫsp9x8y|OCzkNП_FT3IqH.G6[°9|?ji쒗)_|vpx Zus5kIbSqz4R'|*,6r|úh›U~Kʋ?KUs75g][I%o|D$Ȳ($H>yyXG95GD[ii 8{-Co#۷'vp){[kźqU}Ou[n6M^ ~3x.-+@nYJaK${THσZQR_u[Vi/7SCvݤZ%j%˺EEU9Ӻ25pnR^owSۊYTcwi=agygp-I%f)!3DvV).Z4dsZIpiwg5aIՆZAjʋe]Ӟ֬--hmfKiUV|H5r+NJ5A'ɺ"YԴ"Rzl%Cl ɹ^\4@]*JM[w1Ǩ1.SեH:zK&hkm a$3lveP>$ZҚюnj_.;q)39<IvU[N*ald Moi5ܲ$p.$XײdhdY6 ͥ)C(,8xMӉS.%*>, #9 ^/45= XևW?H&gwWGi-֝hDKio2G0{$G_$l;r>SzZh\z}Ԛfp/4M_KЬ]7Z'IbWyVΣp(Mnx~n}fMiS]e?vM2Kfi`Kp1 ,$A"]\:IoJWq9%:*.i}u1v';K{HI?c%vyI%d|m,Ս(J2؝V9JeArl#dcd{rƯ ACUlB ޳|{Ge㤤Ҿ'CJIm-K (q M0 hY88zO\vv,Y榾V~(Q-fՂV1)d+ )FUIU;m6p\AouҶ˦D%M$Gq/ `tsGTfN_% Fhw6@kFnmWw YͲi6UMF9ap +# J[#Af^xpVPi5KPSsum#7671,ܛPcjrޢF?o6-N׻f2G;-Xq֟ cjW}I`;}%7z]u Ӯl%3i;(H,ƪoԔ$OG]Z]B M%Dr"I`2UQvY[\cKV;_o|lZ6AX KYuY dMD m%^b|M85+i',Mgr/J1u\sꖏq5E wn@ ̢0J㦞U|6Qk=~Y2~nh=9mBuז}ڭ41D *wJMbϥ}OY^oWOFq=>ѝAӖZP7:)qe=լsYe$c\! klWk2F~4Jum5 k2x,duâʠXP#Ĵoî/-Jۭ.<C_Ib>ÜE yUv |xtW+n>Jp kn`Td`y95䆠 j\fM @4'Y+)(i%SlQ0PRR}7E4FAMK"QT ˍVT QVSmJ, )IRp*4> @RP D 3GT 9G UjFD0iŌhR@Q*QVAx&݁P +mT UFEgz, Q +-FZL 6\vҼlJfy֩]mP)`S V53Tj1\^[_#Mo%fQWwr7ѷpi(-UO)2ښ"yuA[})L׳̡b ^CI8ko#랆ֽ7ׯ#Ygk{DD7̍,kubj5gu-;G4N2{6_xM2H'@^-F!bHU#|=-^W$^;7UwMhoesFSp eHu @}^6%RW߲s>UFz޹eiswoK H#$'j(;rESͼWr3_Қ󉧸=MpD%,z(9D(kIͷ<[jm{ׂ0J 7v`FO#-~2*f ,w g&۳n1JW>=oK g VRjv.cP6-gBVUuRKn[.1Xoe~Whtu]2(B֮OC1igʨL;@`M]=xSwf|wig<0Uŧ]ZGc=p4 @wG}(;M|{x+V=oEMh=C}B>RB{v3$yߴDž=Cwm׷Y.'Jy"~tȸյ&ah {Q,rfXxdh؍jjtZ,5[bߛeO[{}{{q\MjRqwq#4ұwG;If$O$҄T^ ]n͕WqJX 0AkIᑟVX^_J%#m3\_dkw#.ʙ$n>(tP+ITsJku+7+Ja~{F ->j{8Zq*[)WUn$VX4VP @( G)(V +ToZ@TϚYGςQ 9N p+ $hm#%yZcMi*Z*@)@P 2P:[Kx 'A\(q9=a,I'6` dزT1!9?ڰ RA 3\X+`X&aG>y2nyn?|%(`qՓ-9`LX;H Sb5X?ڀPpb( \Be bخ@ucOfԭ %Qw%K$?1KgSrW**ăLN{keܽȹ(%T1mʧśɩ{Uxu}6*9zw6'k0V߻ln˓ⴁHǏhb $6dl+f Uf͉mK!p +ʞ3>{h/Xqi5@N,Mm)D<+)VFXxi Rr_Z"\$g~Gs]d9B2H@͏9>*1H]7ҀME~eH~k^^3F ?9޶dKdk_ߧU˨5;FKrV]-bRn$ApcL$ >C_/A(uPJ[_tݝ1x099dc'.QB\n:XC5rI~y$Ip{9⻄HdR=$?\tNz뎵OELƷZOKkW-<0ॎXc ^>z:1QZinM?o-}Αt}65M3g5f X{vW6p U$,Qok꺍ZQxURI\ԣڸû\"1ڿHt;bkL6Vި[GE\+:J~m~D9OCS]FZ6]5v-.OZH-6rr"%F]ݽ(-'-h\sstGςQ:_R;֬x*H:cU:h)O0~i.{/5g"C$,=ٕbWqVP-DRIuri(o.M>u2뾫jKO[HSUtF¨+4bC*_CBm(:N񄰽̼Z}*>RZ-%퍭Fo5$7Q9'Ԍz=MiQm.nM*ynҕCBuSM공Ց 3tvbuxI`k/.HKB+Bm],)snVGzMN7Uy{ԗzrC\#Yܖo9oOMARI/ =Hk^h}ڎ)K[ّdy"oBUgTe)mt^w&~Խ6uQ|CD*Y~^tާ&i^@cre:ț&eڋ3&^U=#Zcgl{:vu8ɩ`kN]w.Zxi% %Ӯq,d'p;fB߈)R5\3s}pG ̓e_i3Auo2C4R2IAWWR0 A<fdb;9 %vEY ~QڶCS,%]Ld0*deN*WGWzeGCޏum.huo.mƹ8mfѴBMXIɴyg~/*SJMR6$zAuChiKI{s6#vje(G9t?KA57jxRρO0;aYan?.OkRYv0L(@n7|6 >rP뺊4O@]JEaYt&_Qvs߹<^x%zZ]ry :sIM5 `\[0[L&2LP9g(J=4g=kIRsMϋ$Ni4k#F!K?XJ;V8'a b$ĨR8MӞSIӎ*KWzoyce#k l8oJą3K "ث,Rrbi)TS<;ܻv??ɤtYg4HdHh>דS y~Ɯ eھi]^]Tt:RcIK&dӢI,0UTMј&?b׆%;ko/6?̫+4=JOѵ-NkjB-..wib{8IDmjWHی5Oef+q5>AmCQׅޑuI6] wr C(FCΗQ-GRy4iG>>KF{Gk;Y ssn3BՃNܾq^UROjзTXW&x\۴v{{MoLJXlnܰ'xx{rVkk=aQZL t2Yڒl#Y$uTUHe #oCtc6Xyvz>FWuFMЬy5 4aK)LWc"{娡&nIZ|v,'N=JLqS.,DGY1 ])]K渖+<]7^kt}RM)nJmZ;M4F;`kVk97M ]c &%].nJiE(7]FW[i- .;GsaxSyYYDх޸2iԛ.8rNpm&}O_hSY;kSvIG*+,L/8Z:Rm-l^yb}冿}jw!{9+[xDIʄg6x 1*pRTrWxuo}i` eY\ܝG@ªaqݒ~/ aW5=i3gvbXZRp{,F(jrNzx[v}̛>cWwr=OtyՖ\KcU1)*~|NKDɧxNčLW~ͦA$.+=޼lъy\{y#=eYiaos"9܇&V3P s.IUx۹tN7Pqn6 +3!iգPT/-}.Ú"/g8{{>ꍆҚ>)ȷWL"8%BJʪ3"-ڐ65OӚ^.;,!n+Kv:;qޒ(b]ql\[YY:\Mi{#$V1w+,cichlw#Ss<}mB#,^%x5oڸw[nH'CSZ/V-Rux5#̿KkK (G<+5 F Y6@#qz >ԯ/tS~Oq#}_{ ܸg!yddڈ IەEd_]NJ0JI&S^,;rxKn?NVϧ]ΧX!7jrPvU{ 1),w^Fj[r(/ .oc7x?I^z?Y56)v;+XD# Jf z7Q?yO_+Ή5zZln䁸d#TsnW{ 5_㟭X53'K^*jTFm32Wc*3|?Z պ{j~ZYNUVyӽ]6Q[L0iOcMѹ+Qt"n2Mbջ\,a?Vu}9ҡM)532Jx?~o/ym+ڽI7A5)Vy̗ɴJxnVUelF2Sn>y+SH 嫒evXJ -$YZR@)R*[P`ܡdR9ȯ>]6v@TUJN iP ,VՁ@(@ T@URMU(P DQF @(` bZj@,P~SR*IRxgI܃#>"yX2^EdP @(8YJ*7Խ/ DV5P+/Y` TfPeZNV ZP Y`V( {5 \InXIWj24~Ժ6KO.}Pkxae^E̷ 5DLJ9P*y,uxZX{LM#X}oDU rG"+. "(SwzƳ֑Y\\]JE{Il.r8# '}D$֤Tb|Uxmo5>TjZ=ڋ[mId=Di2L$O՛;xF[~4#]VMBU=\ K0>7:Uk7ir۱UqjDGiEV pןKCBVXU۰n%ݞii:U೷e..n8ʦD =捻 (p! =I[Vo8Qkov󎲴t[Id 4jE!Es ᙆXќ';rLpJk`VX(l %[I" 1y@ڵDFyRp*<+-,O:N=w'DPBҘ!WüFW_O]k8[W'ºހm=%4Tڽm&II. n6t(Czt^L̰|˷u$ˑ## z#5. UdgfX/P"{kZS) ~S1r9EֿQ;[60SIpW3>"hЩ@TP @(T x02-H(RqG }jE@)`Ts~N3QEI&s+/>0F1Wmvv*PV ?`*@d{.=`9m7,72h~GpraSoiT^ij3m*=Z1f  [s"mI cFHY֎: &-o#[j}@6y<~|ހ*]ް,R.7 6vPC%‮٫$r( &y?/qx^IELVR K)f!%pN@w1W5ռ|)x`Q條xQ]T?Cj6A&5c܀l)*!ycQ=rznFEqך#fW$_G/!Eܮc?a)req<ԁ(0XA*HMī}ߚ]B֊iOyLjqxϽ`cexր€ƭh ,H= kPH4;˹l;&bMĪ* mvrqXZqVu\[B5q5Y.g H6ɹp$>P}8~gQgZkk6cΕ$YIV+ue?Dut@E\_6Ldin^G$IawuƫғVRUm^԰u~yvmѣꖘWA{q wu#/7meڑ*nHڍlxMݧM&ҷ̭HLCΟ]i].d302/VS"ѕï< g[]o. ug>w#[K4,ѲTyc5ܮo;2G7B==_0YWjw,Smd/֤_k?r*>6j͢D kih& -b\Ol$IPv"יniZ匝j͹Z͵O{$$IY HF8&;9}E:j<{v7h;\:~tsmca)O}M5fq!cfb!ff5zhAISwUw@[Y\ǫNЈexPn3` l66DܒX8$jgۮ]VFn Ρ7.>RAyF5tv;o 'ֽHu$_]֬6}\.%ZYl=P2 }J6-|Kwn=G,e-9FQ=tgӭSLY4KxIH<Ѿ W2ټFm7tuY+Jl~_S}OK6Q K'5cm$bHTe }?t7JӖw%ڞLyWޗOuOխmqkyE_ uTcvmh:Fcܭ#ќupݤ۔u[|,;ix?u-a6"Qi-eNTp˓Wћ}Klԫ-Q⫩*pi0o[n6+!GZMcb--3yZ&#c~DnO.|ѹsmRm,[cu߳{Y>}zH]sLm5'ӬtWd9q6QBCȺM_FVjtԹKkjG}]m [)ko3.r B$,$oYv,]xG~O@Amv祯>6ሸ[їB .|mJZ,I%jmMܸ?!X˨[Jok̳=pO ;FKbb"Rħ&7\$oc\It\W1ZmT s}v^$5HCnӕ.!fY$K١ٌ2F=Iu]8Tu)[UF_즻ԯm:\p:_J )[u+)#\c;WE9Ծ$?(Mi\zqjat:uwO8Һz onm䶻 iw:K5`NhzjIJ?=yMrmplݫjU}նSnv:RK$VsGێqȒ6X2nJ_N-AݷyYrO _%g Ԡ.:X$Y.`>3Y%G v[x$QEޫ˧*\KKw7;{2m6uuݜ&qkaaa~qB,A.Ķ#JLKWS)$[rJ[o/v%eQtεkql5A,O1"H `Pd1*mIGѦM_#YԬ -DwZH+Rw!EkSO⭩ o=@S[`oTeH ?hl oӽYJ7^y£x'N*4ӵr(o4{KEm.I@"CCB7hKAiMZ\s,IZQ+>m2U\uHn6P\".ui*L$D73Hvw>F VviۺSw,*䕸ZX[kVcNK#y1*H-+H$쇤4jlm&N\]'(s-ʶ]7`ë=Tz/B]J^  HFv%~ %c2wMʎ^:NRR*j/镹g ]=S+o5}b[xrnC$n3 l2;L2{c p;I+rvxMr{B->]Z;hZGngK&&vUݹL!n;iok=׹$0KrÀGOӞH]xܪ6r~lQdDQjR![k8KFn_XRM$<:;+"OyE`ZA;\+,Okdǩ.kg\_\ŀHһWh#9`6ɌxOQЛVl4kUp֫tfUϵAV(Bn)Z|R׋Yg}X@TY60 pkpZcAckͤke 25}"wxVV)+*!TK$GsR[pJpj-5SYvvrtBszTM*jkRtY sHwcd iCEE59i䏿e;-^htt˻xlYe1!~er,>B|7m5[ǜ9*$Σeokf90"mXxHrqJ5m1Xݧٻ=k?=PO}z+'O`tV(0xՑ0l6^UjWO>~ZtPw_#-&@'3Gu۩Um+l*FW%&Rxb3+AzCWDbIR)-$#;4[XՓƜ)%,2:z/ךx>kkY;x~3-4eXAC6ѽyjuIJooK{nᙥS3Gm+&F !VY Nkzڝ**Rk,شbH幂HΑ|CdIk*hlƞ̦%vھݺUx,]7{ZOTuKOvPiְnbL D&Y)^⢳DS鿄ߩmSwUr]pxdO6| :iu.ᱶӮ]wo,xne 1w.@~+*G^|8[iU^+u*Mfk M5'Vkmi==7d1eeqa1?(W6H۶O'(ݤ\Ke '`=_НAҺ6m[muwu {ռ%x'q[y~A> Ҕ]t::rkm*V.#MOg*@Rl]HXm%DI1’['ϵG4V`TCO?T hŖhʋgqx%D,Ӵs`X/ bjQOVR+R7:ua=<2HU6+||r+N)&IAkym{ԓBȅG mIQPWV-ƸA?\* 3XW\^OVֶ66fTY"Gb9n81ljZvnQb[nV2jo{M7NTdk[On QVBNa|̝cѥԹKk[xObd8n3C g*H9WSQ,܊Ғ-QIW}\kO DrKm +"sAb㩨ɾ~r ۀs4(P @(Ny@ߐ*VRJ(@qW!)&<|K@iVTe@R]@+@T@UU@fWX1 ?zVd.o'sYשFn(70 QlsU-K[ۻ;i)[[Ǎ"0V;1Mʹ&8JIf3Q[Y+HQVCca_RFB9jGL9'  /{1[#2dyڀ71Cf$?J6沐hX"a#iq{ 3i󸳸di BBJPpI8όTpMY\{ 5'X3"A@fh`5s=+ ?j"HC3r~ xYWdlvOzуƥ  sٳs4ѧl)AYlhepxHfہ6{JFxZ"2F09?1(f#A*\Fʠr߯haۚggP( m34j{ DM"J-!uv*|5 m|* i'stjJ@rNyU++2'-0䃏J@#3[inN1XIG??¶u?K}FVzӎ好YGlI/ڌCdPm?PՆmsI~=9uOLv3K :WD tUk{8!I`WNWKOK樧}ZOw3M;8fn4QwٵF#Ic戆HXdMQ*im*VIdQe>\M\]E.>8H/q$t)uV9vFAe8鷫OY#um;n'kZ.-dRUe3;B 2;ْ"ӄb\-WM)RL4/tm{]Kmksu8VB;22v(˻vDO96j^e/a}tErex81I6@Qwd|Gx]N]v7#: cR%[t:$iIJ@hDHw3 3E$\儔|7l!G}S6֚ZΥ1h. H%46=qq顭vƲժ *تT]Sޮ^Rf̌$ hq. o |>iDy+?kF+%:ҝo^鴾⵸E涻Y1EL/IkfZS8ᶯ5KNHDH񣬊@udk]!TP YQ&sYr+qOZN0*0MiYJ(#]((@+4 T Ղ#>7p?zrzY'Gg/EԑZ\Ŭq_Q20B񴿄[\mSvV?=/ۃՄ?7v--ygD>kmz[jPߟD;u_7GKwlŭd,xblEcHHE`oVK q&Evwؤ|_~[KYzvjZ7Q5[ַ,bY3q$gP^>Ԟ#z6j +Wf^6INIlSu;ow%(;wc4r[WLFuK[M;dvM̪ʗ }mS>gHtY閺6=wVV66gDIDw?)8;OI(8Iɺ)VvKbd%#h׽={6kyndx)##r8 _ՎwEG&T*{O:u>Эoe+K8W-q#:r6w{c-8x]ߏo=4zGЎ'W/s$GVV6Ȝ FPFk.4ڋ}eUWy^H}֛Oͤ5z~_ Cm 6$x˽$ jKZ[jnwUG&H]-鶵ѷ]@wO*K# 1,cʨ7lGzMI\s$+F}Y3( Sp~JTM)໳9.'$j(Ѣ4dԿƭ2b! I+R^C) [Mjk$[i橨_k[MQtTXp7@(|vOȴ%I(wO<)v5gn R4BY _†%hGtK!o4TEAHMmgʒ^0>Ί|祧SId+L,ܘwIΣ 0޵KI{a'me~?)ڻR|1YhP @(QShv, , V@*X)@T)vDhh @P YP(V:Ti^(.&yㅚ\ $ {{`8SJyeDxuY<|SsDdtݨٳs-ԅaS F|+1{6M )⵴͝Qj Q C=Q(Y4U)|s "iNdDG$x$B9V+|5fNSnqg⭃ P6k`\q@RA8H`٠$|@2F(`W45eY{H#hF.eؘTa]Z.s`sֲyi_LHjqWF;\{g Q|qgjD,ڀ(8"7$} ;`6Fc8Z)Pیհsgxcn)ǻ{T[pȠ[1yd, 01~xI81YB\V|ƈC;$;NWߚqh]$:GWҬ:{!8 U;6sӔiwұϔYĊ7Y \ϰ1^]}#egUWA5i'nhau|m$`OדS ;$?M(y wBmFuXm$ ,m|eF2z4uTV^o|Xj(@H@u/#QjÕe{푦U]<XjwLA2ZJfʜIu>\Ŋtjv3Ty:l @)`ȎѰt$09pANUtdM:V Ko-ʒKW QZE7K{x}\%J=;Dӆijwv-i0./ls2\܀%\)sqv╻{YO|ZNG}Lu.fz/Us*ՒgH-;Pv!nl sOEJ*^[mĭ5 ):YtO2@-4$p.BBvPjrrx/F`KSH A.&oQ[ۗaw&.ҷJ[Uh>W=ϿԪM]iVIo"*U EhzZz%{[{'L>OoLYZ{ZXj˪>ڸùc4\ D M(GSVIJ*GwMǩm;Y-%te鞨U }=g t|;Z'80[ycB,rm!Tm;ēoFMmyI^\C}X5Xoz;tqa*ƌbe6)3{aT(2n,ԓwvnUI59)'TiZG{uuŴ"YmQmwe1ba"3KRiq~ GȽU-V>t:kM.$$aj;0+סST\&93 נ(KV5 !"<0G*"JmIqv_ٖJ*$nGֶբS~ա%mqð@Al/8RVqˬv':m*>$"4F̑ d/39bwHd:h:{O6t¾)Wn\5Э5#OnV<(gBc<;a`2A#[cj9u.~>~ ֽHɲpgAqhm.)kbH0?x~d<85aWp͋;٠{[i$UIN@C|= 6-g`ЅrT0 x56Vlʅ\߰sc<9mٳݵ̏q,Q蔘g6#^.J|Vyw]nɴ[h%c}.c 7' S mkWZ7SPMG|RmSZ4pYѲj -w<4MD[;ف9\"`ۤ$wc[]jì+㹳Xzߑd '#[gngzNmC8˗REABynݣIqR}i1~MA5']UR3h)%Ŷg+-B*<ij䒹frߏ$rڍ֦6<Gp#JcBF8TPTp CMC\V%A@+ g?JjX,A$oT P 6(`Pؠ6(N X1Z4[m]`QEEI7n*n?dP|qU`U9>@Rx ( ?j ֬RL^f uT Q )@ZJN@h"P [_Dm-d.n>E 8:F#v1^i}?K=wItziZř2ӡK!dF :՟ORqNN].faV~Q+iATP Y`T X*^(D@vh $TVR Fl 㚉>н1u}ŞӦxCk۳1( Y@y*n<.q˥UpOn5dE^m.YcO,ݰ^X{kFQ}JQJsSIIghoPZ?|6=FnQ8fF[9Q ݧ3H͖ug60ٵ2۶J8u$Ҿ՜1'S5mҍ?R=wX{4Dt {>2jnB3ZApXF䠢n+ Fd.'k :ɽGW/L8^LUݬz$gg{nemmpC睍bI(Kl= k9§ʷ"WCރQO6agygm}}}sInWGXF̒ěYUjSEr%Q^;F9:Mr\uO;F~Q#K(Ttia&k72Ui6N|o?&XFеØc<(.*~l'q0;cֲzeqmbM/ޟs;zu{P cna{9y^LmbHPnѐ>8T7OϪ4|{Y..T`6@Qp+РzYPu]I~MR+'r*+XU<pֽO8v7cff<ݝیsں=d_()(GXh6Si7\+$vs8)9%6mq|/)_cA֠׭.mflIA D$FV2(lTޕ*kk;e'F=;=W:!4_G7o[DR4#+嘐@NҮޖ'*4~|'?ҽY8=Y^Ɨ LB#yeFt—e7m˶+y8\5?_>h@k[RM#ke6)>NZvv`V}gdW..k; R E#1ܙ=hM+k=6wjjwvW|'Q]Jknu|4Nq{5z'{֖,s~LȪ"Uj&t@TK`UX`TL P %l 1ج( @RWSjMh l @P +I_FDo,۲@W}%'#>͚D 7_c珷lpNkI:oj.~dց'4 |R`P ]~Q$CcRd s[1;G41 *|N\#qU JMp9Ӑf\|.pkdgD3Z2AY fX !{E*N<*Q<7Y#HX!k-PFZLPp>a'Yx4{]1{qoi}w5hP}9&,XcV #@cos怍. ŋf* Jy$3m$V1Hwo 1jGA?jm!e8Ps}Ͻu93'O%{nJ`pq 5jDqp?Op;q7zl#0R1d Yd(#([G{ܝKSJTJ3z/z.nXI/D Ĥde~{=\UPߝa8j|xGz%}IM4~vv.mg{MtUS3-V-'I;E VU]vNSR:m*Orm%co.#/k-.,m[H`Ya@T 7|>Q SqzjZMm.R2Ou$v{jzi'A:905؅Ba@\  怖<xd$0E)WP9{9blĮ@V  ` +zL뾓H5>REh}W"W&B aNr~]zj{^L[=kBoKQy1k`Hn=]m4 qׄԋnӕot?LTzHz}[->Fkm[.FxS{Dv2܊s^nV{#ZUlԒ>qMSWKcy!c.tvV[V8fD++[]Ndi6ֶ p6D$ y߸,m#EVMBKWNn]Rr[w'v>O>ѽC!PCs,ZIc,1Ĵ'zMJGJ!-(zU-ԛ}a]y2FTnMKEzI]H˩㻚+Z6M$]S3fΎNnݴڴg+J.e>֮,.RKk%Hʧl$?nk jbz}]IkR˨][N\.jVq5oit;3@9'b.4[r DZeo~pT534tZ8QqH ?Urhj( ׽Tu)Dѥ]4X!Ԑ̻'`U;$iA.ϱ=GGtW6}?]Kq*Ecd1ʁ.@8qZprm*'Q%GoLtn]Ӻ!2w+@Nh%C5)0IK#bcgZq~.*[.4'D?<>/t.&宴U[[̢Ct p>>ݏW>O^ *@*e!pNq5f*lP Pؠ0(Pء@**PO#5+Fɬ(l]\QJTV -ULPx}d<9 .XFOڢ)5c@+T2Uc, rd d$cޢhR +-ٳa'574JG+cT6UJP Xn`I*rdL3\\\GTP(h P(ftD*FV@(U)@TUd*C}^hP +`uK5-k[c 7S ᩥjׇϼkNzLG5;/21nn6"s>S/=toy}w\=o~k46>>h!ht翅^EX]f+5nY3W.}Mm8w0fS\鞭teEpG@[F-Rhvkp^k8K6cҢ^h?ӶZ=A=GJ۩o UU|: QC{x~s2$g޳,;XptX>FާH`LjwMbyy~o)X AҶiv7'm{/m}g.EoNua KW{݉X@hp0C^CRt7[vUqT?Pz߬]􎋠t_ϥ&bw oJ. P[Ymm-=7/&yMݙ\[Q48%fӵIZ4$wvbfl J-&#8,X6̸;?W[SSi}=x;D &,ۆf|Wҏ2vtt[Wѝg?Y q|5ҲO$4A(q!-~P-yQzVw5mV{YJϗuzzfz5.kFqo%V񰕧 ,{*2DٙSym<4?/cfRA*k/] Zc + 1ef*6ЋMWnw{v6p텼ΑHaw *|g$]bUw_M]l5KΡ_&00=(lJ^ oPWk) 2/iuIb/W{*ܣX?,rO'svJ nQ伍\Qj!LzOVXH+g=+ԭptOMAy9T`qeC.uO.OQV~п޳]xF}C/-F%FYVX@ܤWZZrm_,JTۧfo侫g.ê-MTΌr#@8%vtu{_UmQh`cCq ^9?cϷ6#q.nT/>;SϾD+wo`Bkmo{׿NVWmDD92呁;b4zjJIU^,zwֺ5PVHthd3,J4P@28AWь%ZPv[mӨҹ4{mFCojkZ̖-;Դ."Tj3nުBGGW^vTnڕ}۷9?H~)MhםAr+^enW簬XI\_uEA}s1"kذTlG?upC{qV 6>$P_W:EOU~[_ޮ:hGl5sx%xL.9n!eN?ˉ!fZ3_+ܕV-,<_Lsh5=AmkycHʧ̉ cjR7([󱖨عר:B՛2-yˤw܌ﺆ1+T)'5 Ul>]\,ch @(P  VV[@TmN@XnI:ZP @(i%Pc@(zi޾ڔ 喝foouNw0\ [`N=S*^!MJn<8`9Umv V?PX(Typwsc"n\G֓2>9ZX s B. I8>Z8Zr,5e$ ckM%ge a>d+D~uWMtGNEtk{iWs4c`Jq:yEG/44&d%KNfrKUҙxtخ}Z)Zp۹SƹW{Wt\X9btM'+\#y?$[j7z3tFxcW7 `oCF*;]R-fcX-6>a>s_WnlC皠`h ր3Ubh)f 919>T`V@۲2xDnKkdi%" %I'{Uw- } by.mEhHF*Ic` =ea]#zt*FpXr}+..$HMrS dP @+`V@*tpuz4cX˥=w%G3:G&1)<J?4Mio?IEuc4wH3STaM3S^WL$}i'WIhJ1^1_.}(Ӧ|W]VJӠe&]*$jXWI;R6~AUFۼcY$:=%:M:}[Qkln2iʝl"kY ,kn"@bV'ڊI/r)IY8۶ʧt m6J꛽IX'kKfY(.eco/Vԯt*O;gH7iXQi\5_jt"H<}/5Îv7=rݹ[azS|cg"u+=Α+..LѺ^j]V0 kG14{#*? ӎvjퟧ=:n~6mDײ*8hw"sh$ *3#S*9t߅}ZU\rT. <Oڵ?Lr\2 A 6d=_me=Ɔ4yI;DĬr8%gQ̨|<px+]H}7ӞԺfi6iġvXI)$M* YC_ьӓVǞSSgzϦ}8ҵVE׍ըKYNT(dq˧(EM=}M{T(YR㿛wIQuNY[g;Č[hg,q%&#)sJ"Q5,lP C;(2Ɵ&}(A!͡H˻wrޯUuk%,Wv2YP @( 6( @(@T:lUֶ/V4lTP 0(T`TJ>KNJ:x((+ P+0*J6*@+4 : q[x浹Զ,܂{8Mѹ3?jFP @(P @(Ձ@(T*@* *G*PS*+@P (TZ@(@(U0(ՃYk {KQ?m/nAM26uM&՚NXuhV=z%ٖ ٤~6aR4mQ.|b)Bnpm0oaqaa=ӭaQ,j{kaRZ8"YP(֪pyaU']Ѻs:: lŽhRi!IfEvWEql*ay:e=h==IޛU[o~lZRie#[Xh}0=C,w70^aukl߁ Ap, du={5te|R$ROwR*x:E?zoBhtW};HAœu,7&m@߉DD ZFJ~[n]t8bSupCtckqzOwH{VٱcUViIaۨnKE+A<^q^}+4S`!9kFkcmphsL,r4l$u #!iHy/ȫ]cN8?4^^? o~Oe]j5Ȏ+oEiJeV?\ש\vV*x%}YuԷ6s]flᲵL(P#H`rFNXI;ynϡt6\К_ !dmAKȣe™680ZUuRԊRUz/k>J( zP4)Ɲ0ԂWgs~{qz޽e>.Uf"5@T(, @((Q[P @3XADQ@+6Z6*UpZR@]F{jE[s4 m'YA0VK4N3jj׿!#d֊bp, P =E4WdI`@ ppFyr`ze G7RF)  e.xCx[g29⭒HFPVAr~ch 7c3Rb2(8U- q5lfN0|V Q& -ix2 ph v8lzK_j0861)g lDcKSl_{><^[^;##.T bD5l-i'`@F  F(lǞ}@_ ,y$K)* ֍gXk ʓHX)q}i301[)sf( >ڀ@=hrTh-C$ 4(VKI/rf$pd{[vݾ,%_`c?Jٓp['9V 2¤} <;/P[q?w2;Q R} TRtAe`T\#/W;a~G;z׮ҥ{#\Ҧ-KPh1J$JW!f5|.Utrmoܛr9yU}k}J_GKO{-=pNҘ~p{C fVijko 7>)k^\jZ.m;;(TB_j 72O<}(J*ި9n?+o? 7H,O6"[ JTU0 b|R+rrS'XRk^sEZ>s$9zHdOa|znKn!Ə8x =IFo}RK{+y8eÔB8f,Z0rm*.;Z"G#zw5 g%dm${vtX21w̅?Y Ab\>biWujWk+T֮ .gWFm['9'IϿ5ݷ b(j*Y`TP [P Shd0Ȳ j?RkҝbIK17ZǨĝŻCTXhdnߕ(0nY66\^3W=%3aί<ʙ.ڗa%+p?j94fyh:?Quti-=ʶKق 0O:Iv߹I$3꠫b&%n\jU-m%k.׭:fZå[-r^I-; D!Yrr}_Svڒa~V_-icͼ q,,#Mјié{t)Uxdžo'CSt'ѴmHmm.ӳ=>R@E؞/FvJ}<.1/q)Y*(P-tyqwvUTrKYsPV,5gM hUJһ!gdv (>pێTȣ d5_gx[5g  'PBmJUV8Q77%ݑɱA;nU[q]҄WEͣDڔ Rt;X`x zu1F݆6hg\;7? cy@#bn:\YF=S=7Z/$\^8gmՍ$`D`68ڜgMm-EtҖRo`;JabnY-(")$ΙRFW*kѨ5M:~;1fGQ^]Pyw kw7X,R t a̛C+FqzottOkMSKxe2I;[bRm*a:*}uuI7deu#I_IkMljwg38#{`+])]Rt1(>{(yYSʟco(׶SXںFRF,ܧ Q0iVI y",eX( }+MXa[kӇdbC!>A&'o6 ǟ|@ŧzEHT:7c ;AIK=saZD`VX6( @(P Yc,h[H5 UHɎXV+ S ATT܂NM]鐊ՔUVrTPEd ՔP Xh[ VJu= Ѿ7!*$rVg{cզvQ@(sE+( T*Rh @(@VJ@(@Q *@(V@( @**+`V@w:u~Mo5 3Q2͔A* WJT+`7W6Ct W nORܖZi~֝3joҝowݝƕ]G<1j dRM4aF%LpX҄E$-˻X~<՚ t=3oV]N $[!A3G3E>#pqQ?&9qڤꪳeInL,5uzGOWQ6C#}gG>JvXqtߟ>ѕ. >s5 Q5>kh.h$+ Uۅ+u:=XƠ'IjҗӖτLϢ7:Q7V7l.h%K D ѠHT0;-yйʹbڻko *=Y>ڦ߰fY]݇j'A1$`tieN=o8>z$-!w ,@,9{O{f-cӣ;11r` .Ɇrۇ$* z_Z$>>Ћ DRE nWw[m*@4?ZkgJ9?2\WWzAkGIUQd ,nu\.]E6+7*4ut>6ڡKxdB2Qe (Unm-TۇuYN?oc/㦲J)?z"f(a@+l  QZAGMMwP׵M>Bӣdr" dm]=dubq[~4w»SkZһZ+$;v}`+ u(Щ+@VXAP` @*6M r F( Ղ2+&AMm;qlE+Ĭ:;2x9`uk_H pK+qZ[e%8"`RhPH5us:A Al{[r2sN/ӜSV{f;Qaw,njH3Wo%lGR2~h wL 2sҶR(``p[gVV8(jlk8cG}*#-| elav7 >Շ5Wۓ U޲uGEkڞJͭĚr}̛'p:ml󺞃OR ?*Oi{VUVxLfD:~X6|{U?!1@{~ۭi̫J#Ơv6ׇ~)ZYoCQse$F#^m&4t-.mWb܂k柱˛F|` >cuhT@( + P ՁYh &tơ Z?)=ݳ^7UYYW#q kí]FU?5UVz-:oMkSǞ ý屹BZt1f;Js 6QuJ]))xI>^NpvvOw<?x»6wspt"gvϨZKq%Oŵ#40ЋG_/$i;z|N26J7M *)K4uSϪB^9'':XO*]2Η IJݷq o顦 zRW/N6q~d5:Q?Tmd!EE D9d(f"R>HdEuhQ~spz-q˪iJMǖ~]/ӛ})ກK)'Q~V;a7c[,I!8~~{[k$\c1ԷWJk_Wvd53I:L.lMrl.2;Jc]?ã^UIyFh @(E<7Qxedu`C+ (*}=|e-nM-!UyXRKqg7[닄k%8GGڊ]bp?*t4wbXMF6Viq kQ.X1 /psjGM9[wX׹z}?!-YV5)$;jTGrFwpo఩X3JY>jZ歡뎛ԭb"c|H"_*Qy/ф&q$~ZyRtۣm3Ρ$qE4;3C2Č}ZR)Vo?Ez_7{x`B1jdidٶ,{hIl$r~ 6(UP @([L ł"'VJa23Zd#Pdڭd`ң"4EB@(P+P @+/kK P R@UKP(R*@(P @(JJ2P @(0*j8?z[#5\kQ}kҎ5Xvu SԺI]&}"}qjB-b~NY;A>XFQv[m8)ԚY@?Z3G K[U֏usڼŭs<9dӒ(/u $M)w$?较kmź٪ou+?#̯*RDb0C>޾w[%cΗx/Vr#t}+ )˹IF;X };cunUdfgajz\RAgQ+L09wf94eUgL )ッK:\i2Com< s(QJs\z<Hy =u9Gh݌rCP}:εպc8ɨYK|L1 *_.[[#my:7'wcQ:H=E Ж }i^ǭ/#xaY#TR$EFo.(Kx'ӮB{Vm|ݬ\vOˬuރhgRxta\Cr'dm>k^%u(Xۙ m =6_+sS_[,*Jx YXdpÕ$VMwIFDjՎMܓub^ܽ2P67d1#PoWYl,Lkh"gZ[OX1"o]&=գ@I11UxuORG/>В񉺵u+xJ$k#og"du`/+l2g N4WQzGWWLeY$ZXȶǩIj8)G7%o;;GJm8U[YMܒ~)j51ue=߇4 {y^z'Ưb 7Hhc(+ԨCR \7ݞfI- Mk]WSQխ5Kc]8yOSە7^FXm~W~Ul4GkqU_NJ?_ͦj`˸GOۊjiIp՜^$WuQBޱ8:l@(P Y5.nnC#%D" `H3 ګ\6M$׶i*Ct^F1J*VX+@~kEA#UR!zYn94RE( Vy)uRhE^P 5`P ZHEeD( P Pl (Uҵo(=(P ZP @(P @(P P [P(0(6(`P @(l ZP +6 %.KdG޳J=JTtB2YA|x[,3.': K4m7^xFs-˽{+&D;P,x64:(RzWjϜev/=躾XV}KmogHv4#ل0 [VnQ{Ta-[^g;_L+m$uF"#ɪZyŊ16v_ )* QS٩צ^9X~StX5u]GygOk(Uwث"^A-$~8].,*|_]D E9rs(]^4Kbav'{`6y۴sc ݮsQ@Ŋm`Vh ncjE*@(]hpdջ"<x#IAMTd>7w ^zw{̪* "),eC0Āh:jT.eL38p1R%[ey+ dI}.x,,qq~ŘVr$ BY<iKrOڭl5v,,8^41$ǹ"FK  |>fl*H{TkL~Sp8Z!0P2A*=̡#V8.v7fri6y )3IRȌʲ``2HVS8F @`89``~}=Jtaquj5-7L63]jSdDJ>\W };uu}߱RȆڻ੿?\h؜Cط]swwA@<8V-A3҄DzC8Qx=r=̥dRE+ǺFw$m`Vҿ2܍or2|1n77v1YWnh׊&]PPn9`O'd[UOPQ$V^?>2n[Ck+i2>V`V5y (dy>kYmcgDCRQea!d^+kdd[iY%@~dfa*8CӹnU[q_^.s^Gr+)yXl{y˽;EIKd-4ʻy;:i:og K'PQDpmOҵv.Jֈ98Ff޻[K0{TB:F6Q&hndh rv'rD(@(e*CbP P @(i[@P gZM7Yt6J{}*/cW%Nү5'rTӮ8~$6r{o'#hRP @lvd ,P>dpkWXKiLKDT:qR#+ _>kwEv$ŶÝc|3e#5ézjXWuFG:ޡZ mFhۤ BJ?<0ȢY?1)iksIJ|%ojݵ=m.?u Xv=mٮ,-el2cydGP "A:Fv]Ҿrʑ_lQi7sA0L',bp}n?Z[Ϝ5՜v<\0#7>}X8~zYav6ptQC w=%=ymh\v,Ӑ ScpcƋbTfovTFi,%x.ķIivU㷷#>)]Na \BfHc v H g5g䆅l F@($8V-z$lRu $^B].l,t`^XfwE *#-t1Q4z}'y9v[3Ag6K;{K,"Db70]MI-j8o5˷W",#Z닭+UW҈,2|[rH +zzQ\x}qȨB @(lP@*`T @+IRkҋΥb-KIKIMIČ-i 6w.kɯFZy_8iw>9wrRw0@;;EENPGvLdƚrvkUQZ*XV@Q(*|h|QGޞ#ޛr+)* bQRV*[P UYnDQZ( 4P P(P @(P @(P @(ZYP @+`@( tJ@(`P @(Z@UZP T`V@@*Xi>A7c>%r(c5T~^׺[Ou{P"iMݶ]ͺZM @߆:n)ó̸Ow RstϨZ>k׬oΨ۵7bWyf%^@6n%=;ҕI(fe|3TwsɦB[PՎܝ5{t-nb1H  Llv2NWȭuK>f^qtװHC2|~]|5}GMo;rq8֘)PP Cb I/IX  *y$$¿اS]˞HI,T GC*HrRpztsN\լ֕iRE2)pwj;Riy|$jgӽ(M_}Zҭ.;Bd.嬳mb,$ )mJWjOu{PY:ծc_HP`g<  H 0NB~}廛(vckx_[jG7+9ƨ.\ZAo99'$!3BY6j{rD]=eyO- Ȫ"0=V++U' #gIf*ba0N@̼iٔ'Аgrx{ #fmum^O}6x[`o®df+N-fi7m{R}Z8wzΧ<=̇s#nfcIk a!g5*~oj`gP4x8Wpa@Yj4+6P\[m+lܲT`۝㑐rf*ƼڒR? k8u>5'J=Fྗ FGRw& Řg'CNrVeVTBy,ﺓHWDeYH1bJD劆E#e͎5|].1W_v(u,tOqmki"ONܺ)ᙄ([%;d}sONZG״?v^,D$VTcT29PԊixU|CTy=N;=1"73BRx6Sn@'gqO-ynqXԪ(9$屖 HFBV4}ڲ+`=6dGE^ťM6&oqgi7#ms^jţU RWb yЏcCFdKdcr7 42↉2l0'1;چNjz-"kAIڂ!cssՎni[}Vkpv)Ixކme) #U_~qvg=2>9X>}MAYiXjwV L,qʍO)*~kϜov(z0*PRP t-f>\?Wqe5V{EqgTtX6cCP @(P[O_DRr]$M KἓO0r&10(ںb@msϪN8v 'ziP-.eH֦! (_}K`lY%c}EӧԱN'8>П4?îtNXîiUb{nd l2V I>Q*WN~lٛRQ<֒jiV2G'^q[u,`I^Air?Gq۹OXz7ǩz-idqZ$r,_ {L1#dO*?ã-^sRSvkhI#JI gbI''ɯLu @(U@%;`nmW|O>т nVʫ|8{djU@}&@AlQʹI9'n}zi7Iz{N/]\L"ˀȤrNK6^2Nm쒿L^z_:OImw{4HvMon#QFKͼo=E>;7Zy]I.exvSr;ʤ H (I-GqTm|$:x˗i$rO>k%FMq"T]ǃ0|Udϊі0o JG`ƣ>Eʘ]\B/v7ZVsKe< Y/dկ[[ VyD@+:8`H>EMJ?s]+, P [( g;z,o{E';]UA!C6rrgs #|!BCulH*+1e)g&S9F:+F O͂m_]P Kj&Y%,Y#{@pXj!KJ1ㅜapWl~RpV>g.fL@(P @+J`~U<ז}Jol^NT!n[qN\0ZtBrj'e"DyhU*сU cѳ%TU$ehQX(P P@ZT*V@V@(@(P @(P @(P @+`P @( P@(`P @+`P @(@(d @*4P+VTy-szU򚳧jWEiXm*pS[Yuv6:YwڏP 8SخqGqp\v.kKǧPIEs`w^k5c) ۼnϟzo?QI$Œ0?l+OϨ@@+`THUOE:ӭzW]C4.c#TD !$ `S׆j]ꏡCҮ~YbK+ώ61]Gt_+lo˦זQuM9_"JRzN+FmvMLrD5#`{6KjM''* Zz3&5EuA'D.OͮcT[HOjM̧r\ dzIeo'gW:g\գ]#X kmM}Ә.NcTᔲ]륯[kMz۽K ^h=AEt\thǻ.$!k{U(\}e⦞#ecw'/'Xt˙mgU9mVׂԏ _jy4bBqWuh{բxzU4뾝:t:Lj:d!7AXUVF>-~:2Pv{tl+ zdIn6+ G|gI]j=zҡIglUZidEܫI +|:sqIw_`*6d Cb@(@3Kd'&V~*(s[Ee)@TH @*&7 (䀨h U+)Z+@P V72ZLPJI uO>ܨ^mRmViu; דI3gsc[TRQ#/2l|_kHRXiB,glFy<$ T#Dx\0qT(2 ZGB19njШib(2An<眜}:V 'F t&c >UzCFXlC6#;W|,,:SK%y&GJ&c ,{˩l "D&%`9ǚni-B#lH6VV8bGJvyem;lczm]V,ѺQj+]V^@D1IC]2X•ہ{V4c8|9e5O=$^+}zIgd0\3:,6.ЛÁ8ԜG+ .HІ>rv2fi[N?C@aK**Z@O4oT`¥@nyTKɓF2XHN93{G;4j*)xF,2mOѸ`9#e7}ȬUfm sH'QIpMhl rh #Xsr=q@gw*toͤoӭ)6U236]r3X QESwϏ>8#FvGRRF@?pAJ<ʹF-%pgmп8\8L Ƅ:k F0&Ei~֗w3=dtФDc3iY0|zEKs7TXtIkҝn W5ou L^{xY>. %. iYY`G:T#K.-em^puQQyK RRV*>njٿFY}Oio472unoI!wl2d *YYJԛWuRU^ey:(KP @*gYM^+c66jjpD'z}ۥ;Pm$ݻoe+ }ӛ~M돀'ڄHpvuS m'Kˬ:N.uIJn aUL(,T3Ět5VU؇ONR鴫qp~㚉XggguJdp{ KOZ3\=FyF#FJ \e&xuJg莌Az+9. hccƤr"l!q _Ui\JW¢g't G5k:mb8 cm9;6~tSw\{JMWiMy60Ed3"3Dhmh+.vA2R-Vi;^FUėrup啙ݘcI^#&  )uQc `#QF,0x>FEiPWX5I$܈_/ *dFw٬(w uiRgg0D%hiē8I _(D+खc熬brۥ%ݯmFjH&K{,**Cn#̌Q qZ׎yt~)%YֱX0oQ b CD*m#vd[nH7(;xᴝ+/ С@(P  TT0i)pV>&->2Vcs⼰ZSX-?ں|I|- iFնdhh:@( :Ra$ J*@Z@O,#}'|`4lw/8DhSR/2ILXdm$c#ޯO֣VS&3s&chP JP 0)TKO5m)`[:*=(Q@(l X` @(V+`P %@(@(U SpRP @(*P@Q}""ϡ!#xy~"mq̋$(шuEYjMb仧~ʤi٥*?]eO>5at^R+}AӮhb)Y| dwG[QF6嵜5qKEKϩ>:L}fNy&{dt|7q ey#b"(}ǐ;t~9JneW{&W$ږ,vTn85V]iDs ױ`IT8`~y-aw꟨/KqgKtޫvkv-s 1 g 2?+hk-ғ椤e_,Ki|E[Μߩ5_Ѵcnmb9hCIqzp~XS2jT]fRvl=Bz~Lv1dAvx" DS#Zc&' 5w{ٶ.g5NV^ۦKzK)O,iZ72"c0_6CS-Mg c9-{}7N6r0i^Okq51#]Ornq0 CDXIzίm4rVMzRi}ǫ Z5A1tPӫ}E/W֍7z 4pF$2>7ʏ]&\tTdN/rôi}lV?VNWkm۶YK(//!o6N4.n;r[ t#jUMԝq(Xkqx9PHzRD]ZY[CBqQ$2Q]1UhijN9pi)I_G^ݴ$菉_nM&S[MCZI+V+ P F P6(++6Z( U+@P+HN׫34"D{sʼFxiGQml?:} =$̶*&&vBCߔ>QiVI4Vxǫy?@7-ˍrx=@;@mm-Gc[4e/?z42MOl.B}@܁Xr\>}BmJmFq##.JQ\"6mhY_[k7/ia$$]2ya@n៭MYJ1n*eu|G$HW5YB,#Rr[2I4I y# (0<`@%5gWJ$y";w6<8CGֹUʻ}f[RKh乚XKi;* YKV`Qv29<躄zzu N\ӽwf'<ѪFciuWV*@e$`oWwGzm6?K}7KИRqjĪYA.7mI<4>wݜG_MѴMBQ5}p|)OĚ<H_I}:OǟpW^u m^?II%D<ۘ;glkJ ՋDžf6QZZV%ɋ>DF!B)A˜m6ժnOR[M;K/r *Px<95Rܲ՗LYȞ.Dw;v>Aݺ=SmMYN}k6[^Kg*L#COz91@Yx;s1|րr3Q@my>9.q21`/Xb\ۉ@`yw؝`8IHVS|ʎY{uFDZLe `c?jVA[RIqF,)ai֖ UM &1&IϾ8o(؎$Dr7( [GV(p  ~,F$ |?Zu] k3tFxI׹Ud*6( @(V2;vq5bd6}?PNYtn !f[[W0ŠCc ƾoUb+~7xOkt_u=a𺎩%텆ЬF[x0ʳKu.j _*NݪRչ*FWbI5`:z%%-m1Ȥ {xcs-;^Om?Exk]z>. F1Kݴb7E 9Ez۬Ӆ7R|"lP @(UI,?ҍe[2'#ϊ rj6=zށ5;VMXS-K*^%+"”!5Ԍ$S+ث rZQI2R`Fq5RWHtͮ;hVUcRHy'޹CMF뻷'ӺGjkx3))$rn~[@SXP|qքIX㳾~ EΪP/M/kHZTIlY km$D7eXXya=t-a%ӻ/]1,"ӍmcpHIy4Ys3UUU+h$wrmv~2+ V6$I 9ݟ'>Ap~nOhw}QY搂K㶷BUwK+E(2@j-(˄Ey1\8`7+)a@[ZG"l]hIrӊЫ?OޫUm_y֗7-vuݞXV7}Lc p*mWI)RM$:_̨'L]OE}7uu^beG;H׶wǧISr&Fdgkޤ6v&m;ĪTXJ*]A-xJ/uk5"L)L0(@T(*G8fL|0SQX ҍVM PF(*D`0yZJM[Dbo>fI*N-eV)>ES-:M%9vk,Mk܉A'2IJ)a L#;z|g,+Ю.$X01A$^MΛSOD\@J ^^|]Fe+WS cnˬ6ҕTwog\Muoieىقbď$kYϿ*Ka A ;8@s`{ѤV=ig뺕i-R'CjwnN$a l7 i+Ni'[.OzPoLGwe-ݓqkopDkHB9D?~.;rQ[sGzsWRӨfciJ5JoR9W2nq4ZZ$18_zFWxTiT֮m 47i^ņ^nPm0b"$xzCݶ)ߥjv/B薻)%sMj6ܬ7Km)iJkSn;6;|Y$_2yQW%[M*+'}OO[FM:vV}G,2RF,>+Dl&n1"ЇVm9Rªrݖ~9}]{^AE[*fH݇>I+ Wa tW~ٵrڣi֚ yu$\#:$LЉ"2$"Lq])_u^N籰uq,`@F caxYW'(AŷY~ގMO4K[m3$iѶ*d~~C[u%ԮW|tܼ:?O:aX^yl4k2=-~WlMriH1Fb5-JU?^]ғ*Tw#}'VEΡ/o^A j.nP{k˻'uHEaT岕u梥:oO]9: oZeIt]r v0s@,9?S.cYĒ\uX&3I/i0ߙ]2%B@T)@VS& :P(K (P @( : md , n3Q:Z稯a:Fk:ŭ鶲8[鄠[) # WjF $7]_cRKMahnxfE"1VVEwԖģo 3 76"?ZrJٲ( RDG2[~kIrUFr 2*';_>c{ԬٳTO_a-2[8ebsW;Umwv_4aK֕-di Bgph Ny>( 0 \d@K9 rs ?]くj1<9BY{c jۙڭrA)t`@pq@gW qo4ig SI>syzKN랝,,{I]{`!_̢BFͿ5x#KOSnSuJsػoS|4p-y'e&WhLE!k}uN|Aqr쎧H"{̷zܗs\,6ыPF?1rGA4~fI$+0 0#q֍h02 e`pAWɓtTѸ a2F,I(9X~bGGoP+-7Ua^M]utD`?Zd%(i%P(`P @(P [d }?]mVot \,BHWM﵎Ȍ>^Aj-T<>LFuz7w)ӝQh4wHn!I yIVBvF. [ɭ|4[ÓNۻ7>kA/Pt m:ܓr>n_CT|޻"P @(:W6[[lOq,ܙ1*JUv#5Pz(n!rI"+HF~ޜ7?ᯙlb.nm"t^d*v6p޼]DgjJM?+ϓQ}aVϧ[[.m4\i,I)HKH8e<ܯ/uWWH>_P@?Y6Wvu1N*[xNlr8-ӪX?\{ Z۝8XpOImTV?]H(fP,9ڲ]ei 3NE͹ٜw jRD)P:UѴԊhndIRi@1+T?o=t::nP/Con$ ,@TyA>M}XEx_~Bw4.u7G,fb0v-xl WDq_{Uz9WY UsF̕L **,XRdyn3ܻI#rYIIX0֚ F+."ɬVT2 SCL$V 6( u*E,,A'n@fNowjMpḺ)EsC.poe2ܵnG r[7 pqD%c܅YlC&:P P% 3f:J[JP :@(P @( *%RCP @(P @(P UZ 0(KP +@P jz^ZMJ$+ 婦_ S25Gki&Cgl% @ 1`'54N}X~m5}>h;ʌEXTF9u]"ʯo)uKHo)aK( T`~i4>V7a%nJpR/ x4H`[{uv-n⓷&T:! 89 9ӜZxZg};Kt3S./%ZWp+1"7*roRUvp|jN?ҭ>7U͜+g).OuJ^v6#QMq|4/n;~JegR2ٌuԤW{tOYz{smiRh$Ejћi܏5gcKifvM#3m~x >#KؐO޳7Dg3(h Z@T@TP @(P 耣5]$S'x1'DQJ䈃~l65},wn}k՞.Yjstuvר,yib̋Hrȭ+=MHi5,ڸjڣ/UiZv=QP N3E7j&.eb<ۃ)XޓUN+M{cx W'/^g6v8ek{RxL *9Gydla:vcjרȬ@(@( mJDT ;+upԕ9V#P>O'Tɣ}uk$LcaMG1hPv۱\uݩ{x_<x>=[>gE2W:kH/I GnM"6BʻW͆Zz mrxʗュuBP @(*2ov`c9TlԌl]a>՛k/ T`8>HFgnl-'UF;imm"s3yp]D7i*OG_jK^it51ukm,0fD##Ļpфu7_ixN0Ŭ3.l{ZɞU9e%V{2IbQZty){/}^")1`N9?ܒ1ֱf,lP{J[Μt^Mu}7!*pGH8jD}9ׂT\j*E"7<ғJ 洝zUd9?<}+_HM$e+): Y6!J2V`DyTm T8uu/_ɓ]( sҮ(YP @({ʠ(P7x3ǃB -P: @0(lP 6cJCP UZL P 1 (*@( u( P %@(`P @(P @(P @(P [P P @+`P @(*X@T*{MBK "COow{I>F7Z*:oe K31$*)%#f\7kq^\,1'tK],g܊xy[|ڃscykR'Cn}F2M.'!.H߼dyk'uW_榽wo 8dlЯnm )x4l NAAV3IMOUdkX-#'1?@i_{9!.v)WyXX]iE kZ$HeX,+ݑl%A$ۥ~. Ty8/ hNn2߶+IexF+[N&zkm z&MԚ[[Aoog-&%A% 9kڕE%qŶ '\#Q7}'ϡ/o4;h#]u~"k٦9]lllYPؠ1 @(2P P 1( u(*@(8PՂ|x;UyEHuC$Lnlp<kLQ'X(N7.@8>F@8VT"i"i7V)z:M5c߁s䑟f'OQiu"墌w#T-$#iʓ5'eU}=Uݵ:vr4$^ٛ ʡ{/ G3H\af.[e}2bph7&ߧxfr.eEK+{k}vw,sXvn|z=v]n'B1A}<bӺxYJ rG^ +5rI`8z'u{OT:ZKk;{Op%Ww 02B#hs* q7֚[a5xwxnF.WFMVPM2.̲ip]@PEWG=8)9_=ݖ.fe+0޵I%YKגY\ HE;]n<VT|,.1WcEy7Lꞣswօ_BD6C)v eV9S%7Խ^- R z2klK'~k40TO@eFa@dc+K5`I5JT怐@Nr( $2@<v( ‏` k.A!GG oZ.f59̒fo秦ҌU$e<3ʧ<nۡ@+}xUG$(O>lh xJ̬ł#!T$ 8(I.4^ֺK}BK>4$)̆NiT Vs7mMMM8mIbuI3֡aӽwctkmVb+ᴑ!Q,48d "˷-N};:եn>5 GYX˧Z[G `@9nS0+١]7t<>QWP @)@T*$FEzkf:V{{igXj 4~XQcHjIz[/^t-:HH"83Y[k(b9STe s~⏗Ȧ3J{ddQĦյN5 y &lY=*ӭzMԯu gU{Vmp2:!tʬW/}\')%L,knק(OԺP߄[+`ZqP\$7go`_JlҫhKp@aW'8$5ޱ3WKվhM}9v1\!i3؛t[Y h5ޡk%:r<Ե"1^g(M V3[Ik" ï ~NJժ)8VҗYVf EM@(x&AJ6@9]k R$ɥN/`H@MJ:9IFTYOꬂP @( ,P;Z7Qj}8ˡj6Lbloxr:1S$W-M%fedBDX c"J/eWc@(  P2UP *E䚶AJPء@(lPP P @(P @(P @(P @([l P [~tsPw}c'@uN-F[;C4V%^ e*j?u3is]Ny7ۥfugQm\[i\] q]B^ѣb$6EG7fscݭԭirj%ycoEWY=JG񒦍5ͤ (X#FUhĈ,(لJ?uuKu/Mnjȭ(vv6y4hO$379L,VQp|pop!^j&T͋h%Y8dg?Ji d %H}DixY̑dYѿGqsw2{;I,XA$;ZW@\ $d]8tOl٣>4ևG&[H6Č6~Pv3z^,I'OjֺiqosvDp+"$rJ qSV R.=Tu5Yv=GkvXZJѬbwA!KT-|4"'K8k۳=3g]t8ycs9ʣ WD#JA+Ǩtk(kpy#˨`F KQIr+WEqXz̊Tf@( @cJ@(`P JPؠ1 @d6cP @d3]=n=j2-ga_zbq\[qIF\ c@ ` wvEwgr+d>26ps F>iȖ}=t-v^i-׽e-xR}CbۏOQ 㻪79USOXq21{rQh<`F=M,mDA&,v6NaȭoqY>e'>ɩ+tTUe-5F秞螖jS-"fEuxȾ% BQUAZX{8x罧o>JGoPB$-G I>F±@ 1&qE/]߽dUҊ)@[FeMmo]EGjX`eN0#69W9?_Nsu$v+i +s 1?$[IJ.jpgVsT|g1ܱcSӊƻ:Vp~4]n('2i=4{sd!6772׋سΨ`(8Ƞ) aY$I;#ff9,ǒIHQ%3$wD!wE kH*hXd$g@?Z)f r2}F182d Y42Lmچќy<ٱ ;T3Xd@(l JP(`P h.%.m6 )#Eso ٷ:חrc|46Y'cOIiIxJݜ쌊@(*rdkmZǺa7S}䰅;q|768. tIa}ث}+=U[Z9;ɒ'-,G~F~yvhn.rڳb9/`U')0bڨp?6@<ϟo٣'*Wip<-Uԇ$y悍:Ir yгw[߯k nɝp9Ai\դnr<1qrI 8 TӂTWlO689灟UhFԠKepq|*9%噳Fx`ʃyHq! >WSgfLD~l#֢:UU\ ]@, 8ҭOV?i->@(0(h Pؠ:%: P @dR\ܹ{3fŮ$lnB+uW֣LK5H!+(Vp-ʕ|_zhRzj|s.J^lixo܏؃֔t\E_ZCYkpzogG'ioEv1L`6,w\ܛW}:@4MN\D+M@m$*#35IbcCVS^}5^ŴOئj?^X-rZ8KHc2,}e9'55N0T?YQZF,y8?7D!d~۲>]?t N"$#"5HE,wRm4eӢ=j]{ Fvv%hr-[is|>l9;O&8}I0Qb$`Է]+7=Fz0nfFcjX2⭃ZF|4F]ۊYG8)r@ Nosހc$_V HpKn(DgmR= ,0`Oj;Vby#,G ;cQ扃b%sks?QVF|I do$םDPюP ZJ6( [( P @YO@PYIr-k\2;(0@ bO ZJvW84v2(*@(l P Z*X=nX8ӵ( 9<}j%_tCzwsmҚ5go>H2$s uRUQ틔_1cQϋzVQu[t7qEsg5ջDA2ǐC`5ۧa/KMr>`:BG-o:;tٚUӦH.r1"HC$<pkP( +\}\#Uӎuu] veܳWI4,Ȃ'Auu$V6MJ?;]~SO]]k6UYC#v;&|7:4-"@[NNln.6;OSFt(]Qc 8f j,Uwy[wK%GkdP <4$+#?ޥ;0U)$b >+4[3GcڽWvWE:G"D矖@6npqN5~='Gn z%WGFm䙬%" j,Qd + s^-uYi= ^[%NVz|#`y`C܈6xyb+_%rp=>_NtB=9ukZ ym.e, vݿ̍]? RzMG^}$KS~}Wd%!YH#Ÿa(\ ?DV6qё$x( !nA<dr}4gnBAf*4VL C/>Ozut! J<`( 9YA\8N?N1"D}+`}zGe]=ۙe?\%-L4cP( @()`P (3G5דT$Tjiab0yص G2(7)U ernkj:nZZu,2'P~%TH f | s} %-u_zK,uN}C~bеYMwK!LI ]72*_pEMb_]3zLBV2ONYO׳e%cdHyHTxqH$-hq#lQG$XQm\qҨ\Xͻm{[3<;Q f3<ԢdTE}*"<9/m3IP FUd`I|l1v-ř WkFN $9H dTeI$vGyB$dj2pZ4z--1eo|e7]D0&Foܙ{TlO܉2Y^v2Ŝ&{aYqڬ{Q>}1.;_kICgpa'w,±Bk<4:RӮW=W+rx8{\g<3?JS\@9I@ 椢Y)@UT*@([@UTh P @(@(6i $r3qZլ@(U@TP @( < ɩEhdQCP 1 @0(lPP @( 0(lPX2URKJJP %: @P@( tJ\A yZ@Pؠ0*~fndå]Z .Yoe[y `]bF*rzQܵ~U_>1ti>}{ZXclQ\^]Am-&d줏۱TrEkcFF6z;QS_Gish/۳^ݴ<=CgȸX/vS?=G}+VT̢(ыKz3-hO.ZLՕL#ң9)C߄T|?\Q2#nG39,͵bK8oǃY,Z1e1qYu\H ݵTqDK5O˹0MPtyE,y }MG#"X?9 Չ7 )<ٓf63mqRU.*P0_AbBQhwzEYͧ\wIooq27fiT3,R`+wCkuMܬUܗXPI_]FQY@FG56(`CfJ@(K,*U6cx ^1 Y+@Vl ,*)`P` @utlK^i AmB'xrRJ)WIWC'ϧ4~kr.Ү]Vx$܈ِq|Y¡ao "-8An~.9gi>NTm8 !73!##hU6cL?4L\r=,͎sǚ0O8.84rdVqj`u O$VDI $X|̨́BPOs۷ʉ!Y[Wi #2T#8Sו7UaC_j .F2O+4 DH8{*7ƌeWh~Zn鞣.^=I6мiY\S}IbVn c'O־*qIKwYxɧPӉՍŢ\!'B7,bRviuPս:U؟r# `}kHpp }3UӬ9v#h4`zR?/rɬ1 @( Pj_>j] P @P @($TLFd @(U@R#zGtPq&jQ 6APee#M͹nzk-˵?ˊܽ7^ޮ[\Z ;8좷a"$+aJ},۠>j9m ry!O:j#N ֭ pC %@B6bı6?褖Վ9y;p/3O5\9ij'D(;G`WGOFۮn5u =_GC#{6+w&h0BwnJۚ ꭬<4O>.kZeĺ.Wɶhg6VGAO5G^MZ5[}g-E]Ȋa w!]cW78F7kjϹhS'03jFYvRQyozQ ۔trc>z;ű}g~ݬ$I3ȍ.9Sc96|﨧g,PP 8y5-h2N Mm;-R&YB7d qǏfIX!W[m9MDt7Dn` fl*7sRUE XEaݿ6fV]~@'7SmRό$xv䓓ZLrj]I AeokookڵRՖ(@(@(P XV)P QP @((s<.i-dPءD6(`P Cf:%Le"U;EJJ@( t@cP( tP @(P d1 @(2P 0c@(` @+`P @(` C:P @(QPEs-B8&WO}ጀ)PSg))&.gjʖ-$e*ѕ]SiKLNkQPMݍ[b1,bq G*'JiPPء@*>藥>uMJY dy@\pǶ  xޥni~֖9VvqV%oka70] K .StW3[lH܊;n-c4M[RKI|.KT}[KW:k׺VJnFΟ[\V]bF[KF|D.cm(^sm:s]Ҽ*-]W_XgqO zC$!]n%uV2m,J1|j i>>:g"}vV;.$kmR5Ē1 ?]5˫ww넒WJ#R{πI9|Fqq_M3ż7x*sK\gٮB}2c}{f7-n|XnQ%Q26cZ2KIw# Tɢ'@F1֨FwE!FCaXdr$p{j2[#] jQ(+VP~]%#!Abϱ?AYY Z5$;On+Gf0,''}~j"MPb s|]vnrΠKǓ*7d35 06Z )%@͐ C+.ڭnG/lřZ) ȥyrU0'm4:\<<-ƙ+6R $ ֖`ܒI]eן4,Z OSN~ZtK=>ЍvךQX~̭o33'rg7lw6".5%VmvKo8sQoOM=F]fl;R)^Vg#rU3[ уRYesܪ]x>uWƛOi+60ʮTJAMz!5$[X CbP @(P(0Wugr4G OyQϽk/MBq)z1`TN@U@RXV(@( ՗˵S+G^ՔhIin6O%QDLwl؛w( sXQnU۾~͒Ky<\OowMiys`l[_в8a$_2~"~ey7>үu鵻k[[U/M=[`@4Takowbv-5wJTk?eT[tX_ZuVSkZzU͕sp*fF8jT;`!%Cjj(8j='oc~V;X̠_~{{kʳ$6ץtn^7 q3[v'|zU,935xSSAHI9?>W̜Zɡ@cP %0(lPP @+`U@U2ŰTTd@d3P @( [%XTYYsޛs11JTC~-if[8ಊc;G7H O*'gM͐GF)긴j(HaDF 2+=O4j tH kh̖^|< 2AP"b8sjN\IlM۬vwX[4 x?⺧ui*+J P 0)`Pؠ HjEJ6d P @c2P :@(P @(@UP @d@(l@d1 @*P*XVP @d1 @(Vj>[h=@Jy[lr~`r@n ʊƺ"yXA`Zyr|&H Ē_ͷ#'N;8B ;;Ѻ9 dBchoY0lEoofǿִic v'k-P-֗cmcO("A)>Kdl)rUauKR}'xH-MYաxkngM+iǜUJqj.N4ױS=U}?-.4BKR>ܰدb( .Xm!y3,<$}>ߧ%='P6  CH]ˈՙq@/rJ\&ook%^];3+>?ZI&iA܎5vaAP3y8X $cv"iؖUWA~9(UXtK_^v]'&릴H. گLRkyc2\9]X)(0H N=RgV۲MMu1x :Rw(Rp$`6p}$M9l.O0dYT2\CASi`kž(٥iVfWu»Ea*rŘGISmvIv_V̮ܟ h#yvZ*1,ҋE#Bp{X=Cg+ .K{s5h >5[E9oU5~Fxؗq50g/5/V( 'KxcT߃r叾+PUmA2ҺVu3ڼzOQZm^"c(Q#3cԤk/}fsjܛ0[11D"&P@qq%yEv4 ͌}tF6qO#W$JȎV\G5Y+0(l@+P [P(@(P + P UF` @(P @(l P WkܣyS[0ѧ k"éOf7ʟUBXq\}Lմ* GH_LI;$vS/O FotjX|j6ݣJ*h亷h.(FʹAl63+ [uO R0k5:MN`Lb$N$.dXxRBFS\m^alc;3ˆC8TۆSc)4WnjF54keH hK" `p21~zhwCFCokp0 ;nçF=!PcN.6坓Wǔ~rojt.kFII 3bdmsV=uwQ5~:Ů[d}nL3,VHd " O~򼦭GtZLH49vG 2v- .ٛJ!켱(?09ipS%\[5&sCp A0s2մꚤGʀO?<<$y1?\:gw73ۃ͟j6~Ŧs3lөM1^$1x5ݖ]Qf:)u]Twp8nl5 誎-wpY5!Uq^9ʒ+n#5Vy|cZI$shbYH-J>vwĪÒ(T/NoٚK,1jc%)NJˁwk9s2>NNNGh+p3k4K4qd#珽՘]+[y/$3Ǐ0B+h P F@(Y@TeѹC Q64Օ8޵~9>MF!PP Vg@>#h PР@(6(P( tP @(J@( t@( t@c2P J:@*X@P @(P P @(Vh ;:*^kϨ<ѭQi$, ۃqYbܝ*˺%YsZ}sz\_[KylK昰K,Y1039JCUTTRu'/_^&t7L -",'ɮPx`PJ*@}ͱMknn5|cl ݭQ'|?j7L5Vjw 9#w8Zr(H.&g |  9eyc4G;%iشkYFAWSʐsXiK - < ;:YҮ&i ǾT3RD%YOΞS|c\\FG2ŜSxfl/H:-@8 `^VI"0.v Wy)V/_}N<ҴzT..ozvsa=}d")%Uʫۻ'ڮ}̿cB-.3hs'S!{(^6Bvb17u^fx6"[m^[$lb;IaeK0ݵ:q< ֌Ս}{q6df[i&vA;PP77x|8Ź$.hBw̼Zn!B!Pm}qqqw5'u_$g շp?1GޛOZ\[ӓ^Xbٛ3&] ϵPgpKII54gʼ͑H.>7Kh6(wm fߊ^jU }/W}ًvw>fڹڬ9EWKg^?)+ Jc} SY6s^E;nMSy}ΨzOT&YZEu$q.MM .uF1pO/n0].o1nӶ9`7w_RYxc^F-&_׸GrBUu8(79ausFɒ'l#^v\FOnv:GpCǹЍ @3Cr^ҍrpv}APtrMZWSʛW.r z!Bni>db2MbP @c@(` @*` mځJ**%1 @(@(P @( Xm4Kttk̛ 9`fPB.A XҗEn^u4qFm!@c8d5Z+LV46e$޾Mhf-+08ߚl7rN#aǟ~U1•ڥ1#ʓVF3 h R/lHd`AP7ކ 9qs@{fSmO_kWSjWI[֕vhC9'uӜSqMRk|>yTvVbֽ"]dtΫqsaoӗ4uAkrΨ%Wٝb1>=r <щ'<4oæ<:wZfE@(l@(` (l(F@(P @(l P(@( `V@X`UXde(cayu%o?ߔjN\mۋ>Dc{bv?.p?].MUЯK:[ү. -iba~eFf3qW5"Rٺ{_X^V֝bzmtn;ky" /X,?8 dh5[WzԹJ9mZvĒ>!7]le|A ېyc돥zmeqp4mZK7kseovVnpVŵ ݿ6' wϳ*Xdu}g9#g]3i72!`$(n8Yw*:[Dv9,m

~f/)qqãЭ7JYm_esl :έq-[[x'X0mUpp~P;N [m$}uS55$i8cX\QF0ގtHW-?-k*i)o?Oo e0˾Ns&KqR\7WnYmRY)!DkfxS,+>/!|I. 0MJK%'bYXIr0RW,೽VYcR9d;(rԛj^/>3#]F;][wD71%xۿvٍ殛sjnuWSāp8(VNMcKB: /WovVAzۏe6=vd.Ά]@],͢iŧ)`0E 'LjEV5N0NOfVXߜ3)}tg&{nC3*=QTm*[[y""^Q"Wj0qi~xT}kNFN%Mpoajri:=>f,c6rG]7n4 d<avrdGR! Rɳ-VUܝϑ9Wz^=c:἖ >=2ܛxSm!,jNo,K3$ןGj t_>e6˖C-"YwVMfk ]jeX$W)IF*8R ⭂1M@v-hn,B)rXȲTEpqi`y;rW\;<0]T&w@1N@P Yh PP @(` @F}h@PءCbP+NHjq4( [6( CP @d1 %1 %:%@(l@(PX2U@(@(:@(P +P @+`VtJ+PpA}q۸xa@ v$n,B󧓜-]_^hmsOM;\6 FrU=Mu֋|ZZdGk-BG[ Yy!Gf$F#;P@ٛbyU߹+c3<|SZc,(hSoԳ+!XxQe\ϗ.9M`$#5X;:Z{&4l'.+F X2r89&o81}6M6 rlfV* }>TK[y)5WK*(3cv34w`AnR|ց-k YTM88sslUVl&2sGj>.U݀F1xσ5lنK5t&Ddpr~ߌ<~tkլ"3mNl)*6iNXubQuL帗24SF /pcR˗lj[pJs=e%WnqgL6 $\ckUrVT2r c5->K>Z\Ϭ_K5ڪBnna0mI2ĶV۶Cp3Խ4^i6$sڭtY9vZk٥BZYԢ|WuwImM8-_N{~"]*:bPV;Y!om<ѴP [TӣoWmJ[) ZuM86𣓄Vn9GJ;.mdw~7d( wێ1>շw+:Qz9@ 2v761xOWgF{oLtSONaOy`Kca̝!6+FmTs!00xzo?/3h ڀ$/*xj͕SJBԬ]z1e;g4@wF=OzQ(rɍ8ɠhҁ^<Lb4S?/ր8F>o餶Ѭ1eppJsY#5RVʙrʖv#TE,(IurI[*!ohC)P9݌ >};|5 2ֵf4|ܯ{q#g[MZN'/ov9wsVFo<R}kg4XRu#zV>t { ,`qb~bq8є`۲{"(%id `AڏK Da0Mi J8{[ Nq>Skۚn/eFZ2ő++`T ԓ_6_~EQ.>zܜ8@bFdYP ^i]y^k]oqcunіE[{T"PV)#My\84o_G^C*60@a]c}_hY^X/r, v P rA>5+wU,uO]]KvpXYAhHsy' Mƛr~]gI/<4*у @r*8K)zU{tΝ~#qi3(d1ȻІ̌3RTk3ZOTkM!ef۔9*F=QQ Z#V>&M`1Y6DAf"YV=6b779 H2k2QO.&f+oJ2~!8 |^gwQg/ntkMk43!22859IwVVjΥpyy~AHU]QV[8[>shh)`9֣c /;r+Ay ߚJCo5NÁf(6R7nQ3njV(YT pqj"=S1=[>pIqkiꈍ \9{$Y 0,cS$hZP'@VP @(d @((P @(lP 1ْ2U0( R r@(`PO>+) ֌@(l@(P @(`P :%:%P @( @( :@(2P PlP P(P @(` @(`sHLt;Qk=VY5cL:K$0*" :W=n5O^r|IGê\vP"5Hq k=|v^΍E{&ՌeK1WvBq.A\ݻk+mUO۳v6sfnY%s|XqnThni#cmj3V%AO93FB͝JWndT)p2( 3s4@$z:>Ꮵ3  74 ҕ*'䓊@KML05J ۖ1ck6$N-5-$Y0=|h$4 r~kԁndT!*,@I)P4 0sF)V‚| w{Y0b@{p a5AoA5,©3K5Q?kp2!7?yYuF{p~f*>xdgZݎ!D{,(lzqt;wtwtD-mđƂe Uñb#*/}VMk)>$#id~7si hb{FwIu~kx#GgJ[/Qs6g&lEVG|vm;x]ύHq^|~*uruA9.Cr`sϱqͻ?ӎ~#=z:ݎastU-3| Xgg1#r6Żi{n_e7"x$x/{ ŸHq 0!vs>Y]Q. +t.dciK;4hgImi$^'.~^_U8=N[W$TK)g[@JŪO4̳O"=,qB$2M328އN֧-F2Ԓڤw?%jfm/MUY; hĀ~w8 AUW~6s~eS0*:@+P @(i%PcJ@(0( KX(RP 2P :6}s-g*Ooq9YXr> bzjkk}][su]+Os;#+U$ MFRocy_F"r|cAn0Hm!%YG>3un<>W<꟒5C^GE)xgl;b>In0ZQ}nG }Dc@h'?QQ;l ғR6J*(!?|Cf7CѢ8 5l6 {y̶bzuY켺x{+"w uy5W_}XLדs!*bFBO?N=m,R6cT@(2WN ~hb|ZM Vv%Yh 6(`P  Pd֝\P @(lP 5AP @(TZ263|ttFM=a<:>z zcHuǺ. 46<fc"$0^g SMU5#}GҺޝog:uy$N]w`r#kܵIUY:20 +@P ނ.קzK}`׊KO?v{$B>`Ѧp0bN*3v韨;ך5,VOokš!*?oVњNMQ Kgomw~%A&͘큻fۻ?Վ*nWx|Fxl'.b23־)OʨI#}t+jAػm\ FҮc)A3Rռ{WXgmĤƦch1"o|9 }Ps#Wd\y#&a9FZqh&DX3Bѫ8%=`w,, ͂2*-B @(KATVZ]՛HjёCbP C CbPؠ1 @d@UP @( @( @c2P2P 2P@c@( @( [P @(P P|W9@麜so+ ]450FiZZ͞uY`m%-͝rذĭKˬW*Ճl5[I kmm$.n6x"Q}(MzwiZ SONNItۙl+[o`]xyc(풺csFo *KV$KyYnOibe OzJM9Zy8&YU*Ta@VPT S~lqGjpF*65r[j6 FnPgNA+A~Ah_h lq$*UK IY ~(̋*66{;6.bGd@;W3޹<)6~~ݨ笺CӧյedOvchDTVnP|єJ6+t߻[gtWt6%39$n(Ks .팪NyuwJ.Ϧl zoP; byl_;+/IMokc]<#!D3gu7g# 98ۜ⭦iՖ4&_Ḏif6B? wP"fqZnUUKOUIw̻l7Ϩ]i}37W᭭KONֺiW|X+S-h定z2pټp呑s3Cv8H̲"3p)嚣v)6q,W"/aiżA2d͹acky AUa$֚ܩ5VT6k' 2+gK+kYim[Qb$[ЩY=ł&f7gϲRpqI-o7tnS[\^46GPs$7"EӣI&$Xd#nche\8` # J MM(*f;_O8,0XgJIPKk .!]V(""@Ĩ܍HxQɵMWw{`F5~k:C"G:%2HP~as&#贞|ai>qw4T~pyY`T6cVXR QX >k=ȈȊ\@KTX pdU+, 0(lP @(`P <׽5:xE.:5^b,"S8u JHԂlBD1ctԢZN7k+0ʣ%mܝF䔏]Buf~erzzwBy VaZKy1i6 *OCѸj-(W^|n/[Ѵ>oT̉ Zjb.@J,;]#JPTkկ+s'Ci:gҬmRr5 kN*))e+ +0P cԞRݹ_Ԝ ].T4]"ݵ]cXzm7ydHw #8Ǯ .O>v:B,GR$}Fc|e s.q?.(n¬{*@k F$J&H>k1Wa7X6(`RP$^HGj)F/o5g>i d>H@(E]4'o͐sȪ稆뒇TfefS2qKl 8<(YY}?ZU\]iDk)5;\< wܛMO5潽UflOJNӃH#L:WmoQnn;5 C#xET;0LhfTz1K swL󚄺.۫GdZ L,p#oͿkKQ\ndg ]֛!sn6E!5O^\)YX8MNpAR: ^%1EphuZ3F #))S3Tp@T9 kj| 156UgwȬ%T+@VZVl X*@(mP @(lPhP P Cb@dP @c@UP %^)B :%1Ԡd tJ2P @( tP @d0(P 1 XP @(` @(+â3^u 5t}麜:OK43i[b񂢼DzMgAMe5M7]I|O$R 8'>x^ʳ6.Ṍ|eoy %$}O$>sDe蚗SGݥ2K{H^iFG $U,('Z[K"Vq%2Gj1#,SfvX cOu+?ld>JDžfB2q)m0YhbIW>QWiؼřI<~T ƿu[Cl^_@[Q${dpga *V;C.=H6j] p ,qs%Ie),[*VhZAs,^?`ď*"ȬhͪRPvڛIO=VW9cl4&. 1wIHY†?^B(vړ,Y&,%p%D#/lXI4ժvwh[j714onݩ#X91uȳ2\w#dbIeC8xRCK'Ut h4ծ-33GQ]hʈ)fJqjIo, $R:F6X9 d[Kr϶WDhpHj:|m{R@Ф_ wX\w.RVgG'q68۱!_$c,J^ѤwuN.mR돫5ņ[dʰF$o߶#fa.Wzx\cxUk4%I;wezϫGI^AyH[W|vD av~U9KmSÓ3ݖ:^߉mt{c6s&\ *H4(H3@ś8UjvZUUr:ڶ|\5+sǼcH9i'någJLtP P @+V @h$w> rqMG܍X|3gU<0U tVl X(a,@(2P ;nkqa2**D1֒60n8Tg&Cڀ怟MJ0 # ?ޠ 7|b[,Qބ6DGrcۑǽf, {Sl',}x%U~~uZEGB # @ꘘF}ۓeIaYs~;f$1M-v3m6?xjNî?RYq?rMiּm>8h3K6*@d1ZR0+`VZ6cJCT`Uv/GS fRH$ ,WXXieFRl RPlPCP @(VhEg+ kFTv  35=/۩a0U^6(0R#55RI kږMv]v ż6G [m!U=EIhzYk=떃=_Mjn/&֮ :.AH#hcgB(D{C96/Sϩ;uqUvU#>:wD-OW85i lNA):BiJ_㊕nǻ.yGѿRz3}WRa֦ 33\YrIƒR#yt_i9Qe]5-J[i^ԏ؉kMZKmn",o2% ̢]4Ȓhھ7MQ[]m^ƥ+\1Qj7LbGz˘ K2M'FDrZF7;҅M)Efwᔆ?OG[ZmJQj櫅nWMDZMi5B_ҽf} v8 r}GHBۼcţDݶ0# ̿ :UKnF[>(@m[3X$6]Чfgn|gˢقY&mk[ bH ;Wn1?jm[7Q" 6`9ߜ 5WykUd#qE-UN#;<]gkD-9 $J (6-UeP kxํacFLYG$bSl9{lDn1ٴ3 *p1*s} wyyֹ__Yj-}@:[\R0at]ː e?+NT\C-$i,F$C mAo"{V:\֌N ]i.0cvVr1T84" #րg9s r6`=7Ju5MKw-a%՜=@LV`OfX?(XFtZx>:=Ϛ v 8#Z@IEAflٸc{ jDA7[u ld?jE< T^\iݙ;0xa(SGg';6n4Xt13m捖@!Y^HgTdSZ[kmExA<,h"!X!v&@AoVmr/^K:$:NQmc5h#BIa'$ :(A_L܄{Kƴڝ픗P-3:+$n'<Ю~}EtIyg{ZNïg/{ K֑t+lL;6S zSi]7yV}k=a龜k-Fk4KI׻$E[W){a.>,w.-&w쟉cqi]E˨Z֧u{}ߦ5k*Ycv\ʌIhF^E瞌%N1IF;KMS^w?U=Ю:?m Xil4y. bܦ>܎щOt{4vXxS3&_}(P dQ@(`P :@()`P [@VP [Cg將T_tĹNpdE|6ːi9.Iu-OTu꾧uO5ΜMEER; n3NNPSvwf<V$d1\[#ex$}3g{F7gh^N;!ID1Td>@59۷TWFy/gFр1۔i -U>Xp*7݋=6})c0R)…H!c+$fRk++=ԖyyBǧ*. 8!< nS(Ic}McPh PP P: |ַilw,7w xnK75yIs=ܲMH-jTuU ?ֺ 9:.& >@ =k!< 9Eb>};^jTQw맩U.h=kyyZŧ6sn1u-[^;Ɔ7 o/|FՎo?V x$;8W##޽ '4jsH?' |Qƈ`3QQ5gDh 9?sF?4QMDݍYK se!0b &U_-++46[+PswJHt.%ҦWK{mR2H {jHV`2UX+J[}ڻsG)A=^E[G%}Ibʪ\SL-9 ^yi5oc=.9Zͬ28pHjj^5G-L^<)xeArnjq>s*S@Kˌ{ۚ؂im&SrX`)##j:%QY`Qx}9{g^E4BKnMGm[g8>cU]#1F1p3^5K<+&1ϑ>i.n-剑ӽj2;9r"iJ<>[󌷎25..|[a .F><}}]kGON҂^B%WF9!9=RrFO%~\d=/+oQus{%JvcIj)AR#+WzUG8-giv G1mHGǎ}_MY6UۂAW=T;itd6"B63)ٿ;K/Ysʫm'#Gw}gP鮄eXE*2#-e2/rxe&%;-Jrer// eeI=Xuzzv-u550\Ak:W;ۤ\Ǻ@ M.umx,m(8WS6%'=G궷7W>ʫg$GpF4*( =}KxQ@+P @(V6U[@( Cf:, T*X, T X@P @+`CV4Iz8b;A#>7A#tޛoȫe c?zrC L /DDXs<sCVS>hdhlQ=JQZi5ŵ+(r đHdu`A 磭UqwMQA}@Pٍ#h`ۏv>>+ ٵh;|pZQ/kg۞7cxI:&dlߍsqqcuh`>E8Y%SIdM2X[pHQ<55cғtLYrO'8>( )IT028kMnڝ/ZsF;)Ѵ˖AR 6I JU RnZ@S&)" *Z|2R l 16( P 0c١Y(P @(@( @P2UP @( P P6n 7+Xn糴ex9UIHXr7?2s+sJIi)dYaK2=e_Nj,Q;ⶵ\%xCijdV(إrCn+"AT(j:jEg%TY¨QnT(޵] X;kͧK4Zq2<$ vEP[iKs+\_z$֔l+i$AZ*@+P XP @( d ~ ;A'$W75u5Q°f{BdS 0?e1YXN z1<Q9*9<3'8n2Dg*-Q TDё~՗uJյ wRIm$8ĩé^~:q\}ZZ쌊(MM)}qڒVHk C ] ךr(L@+)cԱD@P :%N`P  @cJR tP(P @( CbCPؠ@dPP :@(` @+`V@(Vl P @(K*rԍH9rHC\Fzk_ ]_ ]]a\HQˑ],wRym+Y}nvi=o,i+oQftr"ݸ,F3uW=OS-DRmLy}ӢU<Ӥuc ~eU(1\l7hpJ9Un 1nyx>-%4.~돱v&ktm6zծ?ꪢ^ e>dH a^yATye/n.=IZ Ӌ;#@N2s%5wmVgoz}&MK >6vrc <ӖmeYm `ȈWAnjNԜ*8]r→;\J5[netf0V$0 U6Eg]|j뷥R{U]||8Į֖Q%};a9UIbihm.%[Iْybxo$sҕMڻdG%1T-_kGoTL׽bGԮ9QKa!FeE@B >Uy&юݶvrnϟWb@(P @(l d:@(` @(, @?\ޥ+IDQ3`&m0+@VPҥUX J̭nPPۃNA?(9c6tӑx$d]\[%x5Q@NZ4<b(bdyn8 X p1sk-).][b-AЬKu]KI-4P.ap$NP)Ԛդݾ'cx8`+dծ{(9a$jORρnf?RO54M߿ґYlĩ$8"6n<F54t$kbJ#$;;%X.;G5nIT`3@lyx( 4p3>ՠi2~:|y~rxsn4}BM>6OmcѬ H9.+Ԏah{[AI#M$mnĩ w7lbrW-S|wAԖɘóPpkY)62r pF|<k)ٚ;ڛhO:X]K132KwlC#|3Ucm]]NICe~V>RIV$dT)H߭Zc5H>H.Iy*mFDTW?c?jɌiN]>VZё-5qaQZ`YTߖ oujRQ/^>Jb1nr1~ m[9UvP2 3GSjnRR[ 1BA ː}3x5[zK:phFL'i+!R'f>e\oRwJU|,ߌn;1Tq^rD[E63E'L\.l;3Yg$b2To/1R|sXȺ+J2l޺EV mz{jP O3WU5>ŝUrqY&·˓sӳiKk<,ͽ$ t%Zr?').}1%@wNWvfMMͼ$r&%1,ŎF@RX#iɮI'OQ:ӤwQUXG@?q)+REe%mtiVʶ bXlx37o-Qek.Y"ˠǦqey8BR»q0!nꅫͫӒk}v<,gn6~tE¸ڒPج@*+@P d5BS%P(`Pl@( t`TP @(l VA6+ P V+V`HRV4VE[ hP d( dwSs4RlV*X(i%t0((騍s$ug$FG+ 6rQX:{-Oz3Jtc,=#㤺x $@͓U%'Q\Ey:~ͺiI ro=;]ѶkzsuaԈӖ%#ǽtײ~#[Nqzw[AwQ-6"F$/r;߇qd',PoW{ yx>p1ۅKK@?#}CEkupfaC34m$U K~4Eev{a,R;K$O4|`ۑ&qõMv%뺂T/I- @%tpKcmCkJRm+n9>3x|^q89S#4q?2p5m% |al͹ݻ<8<3~߽=#ɎH85Ñ[rl<8fnʙ8 @f7NJ-3`$~$>6:xKmۧmC.o 7t7VnikI[~G!Cl*px G`N?_MȻ\'c!#Hl_jM._l_bXΒAnAYA!㝠cE{WF+T[Bİ^I>=5^^8rc{}VM % 2NXIuuaԿ z_o룐yp 5JKT]=힒}fFG<"?"hzF/d|E3i}O˨$/0!H^1 &ƊbeOJVe|KSʼ/spImE-ex cbn{yM,Q(f`Ψ9,I@g˼} 6ǣ59u& {WP[9>ոFgGm}qm:I?3RP;`dh9-20cx$T68>+5e+$h u (`T6(`QFJE[wSu5~%$1R|3"Gb +ipFa*@(`Rl [UKJYlԦUvPB`5kL5 d +`V%6( u( bD3&}jhEN3NJ6 m<9;-VAjP @)`Pؠ0(lP@(6(`P 0( @+`VP @(P Y+9⶞|qܲ 2Y&ᇃ\]>Y6@+goenKo *B]+z'qn*۪j]+s^pGu 6Pwi 9o%Փ Q?)3ԫ;,im9n"`f6nF=4Jpϒ7i Oy3m*8Uch"=W:AyfQ34s,l  Q2;T[ݕmTVivҝCa%iWZ|:ݐHx,Q28k>TϏ!sa-o'u G@a?38rvϒqkZMO8 ǹţ,ʲƪp761'siDfyx\ı;334LHI#nop66ub6NmiC~̬,K KJ4/,{x>MmHMepٮig/^WUlum\\\;Om9es.rZUUq\wi_t/PieUjm;yu$dDTOy]p]!BrqMZ~򋵣j=i),#E\6f $z֜  gfa0{sԚ\>Z?0Gcy%φiA*Bc거.^~SsԾZRK+ivvֺX0]۰wc bb39'a ݔҝFOg k2j>sm-պ19itNlWPXnNI딻t>p#"ܐ^[M#N;3n$I#gx,jxevӧOn]TqSX~$zG:WJ5o2`M9@omn{eo7[tM3@cVR( 4*VJJ@+, Q(co< Y*A VP& +HL4="oM:ܬrDcvpEtѓVOŧJ/\i? 㴎;Y .l1p6xwbv\g9u p~cڔ)叏jQhF O4 :@"΅vI7"m읹7*P)enܫT_uJ952a`PT#I R.w$?\N͟dn΄Q:~k{nSusvR4sƐjU +| 9Y*X!ܑmE?l^iv o5]vDndބw#.FFaXRR|a? 3F<GMZçrem61:,DamhX\c:r[O+=kFC0퀪3ws01q] YUAqjX;6ɾH87H%zw]T.ߛrNX9^} ɬinG"Jך֢q G͜bÌh"T(!aJY(lz~4Q/#ѵtdl| FF%V<#W&TV` V$C%tLȬ:̔P@cV@(( TdfE͊P @(OP )tK*z삵eNMgsR P +h*@]ac,N=B/cRsFN?J0j:P"{dPdU,cb'7O%G~3F1yEh*RMGul[G]Ovp%zF~)vQzzQӽ+vw.Cq]Kf&NJAif'so$Dϱ#Z$g#jQ3ftL$!Wi?0'83gjabe6^LdŤ$jUwW`S*?\i%,e_CZ@U j8+PР2P P0([:̔(m4.Vt=KxDB\!<PIHEVt#(vxF)B @(U@BQyi*5@Ul >k͑Z@UD @:@d*!Զ[^2buS*Qܸ_tP1%~cڡvZ ɩG?/kk&YwTyb">؊P b8삠6c2P @( P CPءCbP:VX @)`P @)`TnRh )P摕k@•h@@ x5Q&B;АG ^)h?o&=~x3 O|5Ծc5GմVqV 0FxB(%g^-Ŭ},IXtItuw|LL "Iv%D'f]T{nZs$IRO>?~y?gҡ+;ءU(D%Yq1+hRۑOIi.V܆V,p,BY%QFØễ S[WߒWw>6-scm|J[Ο*θDOMNJk?< <4v;)hGXc}-[2A99hpdA.evy![Z3e}dzªǒkZ}ã5oko,L;&xi$i pWm9JKԫ/54m;6= ,PS0`MHSqDN4;,dQGkx{wCݍUk#H"UO_8M<"vnM..e2af9;d+ V?aF:K4]ϧ/%@w!'lDpnFJ]D^/tm !ץG#iV4Wvs}Ԕ\G.cT=OֽҒf h@d:XP S UP @*+@V94R߀1V(Vs܂R V-w`U'D̊@F1](o 0wĈ7r<G51R2_t7 }Ez٣ t`b0=VfW^>԰\`< -eX2LO܌/ހUeP5)EǹՓVO,駴'=[eRnfr_uL]Iami{vmmmU6QbbM00,Gַ6JM+uK!yy-A#Fェ9LfOC4sw81[*1Ojʫ%d$r+4M2ַYl}>ؤF$ DS%f,T眡I߷z|_n_PkW̻RiI3uD B(?AHŤe/fY=D+c/&-mY6=b Õ2C6'6p۶m[殱JVx@r~WbnTiP|V"87,b_`Qߎ_f٪8t {5*=,zT+R1|ۣ<`K⵹#a$hv>2kR=IٰIpj2>դkiU8;H?(͝d @( \x2&-Y4c@( u(^+P X@eaV1dX(@P @+`VSoD`EJ))(eEu;[Cq1ExHCX@vo8_kc?sEΣiل' D䑒H+&L +i=n]E$_iMir"lnUTuTDn^|4ܷ5պߋo5|"C#cǐzz=?Hףg y&F҄ `3N\%]vy^OG:L}KuAmb. bv W{G^^Rn Z[]}XIw& x7ԟ0\ czt5%85$`Aj=~ѶHXlr2U)"UILGZGz3>u)"P-,ʱaxljxUFRTIdu"Ö"f pʸr|?V-{Rt~yuMJ$T_XY e8rQ'OT%:VIcHM?0bc9сY]47PQ8m4PZ6ujqBT-`ĸ0@YNf=1yoF~q/*xﴔ|+l줽X;+vVgcu$;HʹB9Q _Eץ/}6s En,orw4q2v&AFo IIG<]מ>ඌ%ΗGM-m>B"Ʊ;wr:He4XV&jJIV{2ejSCE]FRD9 1rޟj掎ku`_hN օջHWFӖ$bΤ,w^O S@:RM6{UQ$Ф]"7Q;q,7A7i+IWu_Z~KGҽ6mSKMݲGj'՝]77ImbPDP"B|v>zi3\Wc[Ozib麬Gj6my[$qG2<j84x;N#rY9/Qvt|+WL|Jmfɬ 1ؠ(P 0*@(l @( *q re+<F)@UH R/!p7irF{mB=Ha+)  z;f[53@#>xuߦBҍ2Y.JM+aꮬFrS-o5uQbcj />(K0#>E ;v}&vȑw;ʐ2]j\H_&rU񟹳q:WT}~Ks>Kɵn&Ic,;d/'gzVmQ&e8Ybg,c]vn\(Lm7e5_{˯͆ʞY ;kw;Y#nT8lG3RQk)K}OMzKyq"FB,"{4fm^nt)Wߋ9Vi+[i~ZXC,Лf/wxE8GʖU%K) ]YpMmڵ6>z9`>\c8e:m2 hlğW9MGJ-6NEr缚QTzI0#HG<}aa}~I3y<1c##g**9РP Z_5ԌJ١V1 Sd tVP @(P +@XT l ]VP @dZtv-+JRvm$l*Nxk#M%zӭQm]Hn?V"I-0aіbVm̪y ͵w0[h) ?݌P\/o##' plɭ:R&V|V !\7b { ch vbKڔJ15?(Q2C0n,YqQ[ e>PN ޅq o6!,UH3XG|Bv"ۣ)0C˹fL 05m}~陙{mm,䑘$}-*[In^Wz:wn\j99:_E@U(Ȧ5 T@(lQ@*P*>*ћ-JD1ؠɫ`Zd6RI=n.T[Βa$I1ے Tjo:~ P ӎmn7zZ\Lv#ffprUG9S~-۬/ .Ԯu!{-#`.7p?9nFխ蹵s[}z\JK3d*~Q} *YQ( \dn=T vnvd>q9mViwق+e-w2VhP @(T@\}!5ߚ&x+CBT XT(ϱM(ݎ($I[G3]̓ ѣ%PqȥFꛬj P(P C1 X` @(P @+, [ɁKU:, n gXr )M.]ڵP yz S s]45w"4~^>ong{D'G"iFnqCI}Jw.۽}dĎRS @:d6`|ru/ud4F !X4Mn?pv+O|j%Jw^kr/I Y&#rY~cQUΦc(}_L<24He@Ϛ%fY1ٶm3F-`y؛Oa~Lգ$G'p9}:?b+~QG@c.rNY񹽋1}}b3&.kGeoeX!ᶋ{p7; Sެ>?_DԻIm2ڑ%@ѱVG2V UIM).|~&*7l6x/QkIn״cRro'#gKsm*܍gwnl`_#ʶF3suJ}kPk= ۂ۸CQ AWnO:}ca5Z[ΡLyWR玾ݥXinko5à5M7NN-a:+gxIg S04cetS/nV^v̖e[UAѶz/\jVփRT]#Ev ei.!VkgVSYKJ5}.[q**uyV,oQu 7:hqt@CvNQ#Cq~mIicߦ(\|yehvwҢ &hu$; 5$E&Y_o^RrӸƽ9iMKVM:u-˝6Eʹ4<Y7ޒ'UFWŽ,%J.+SY-y5.պoOX"d8{w3fmvC7I]FOcnk=q"Һr if^ak(8SYWIf]5K}R7{{>S=ݴ[ H$R:`Dq }ˊRm*Ww+k'w[EӧM˻;MBUMė")omnUúGɼF{yo7Si 6w9JҮ]WO4nRQeyYX,rKI$M}(AAR]G>թ`h@(((K*n(, @(( QYjU 0( Ŧfl @(F !AV?Q?чz+"2Hdqӊ·n1TNcڪDlflRUI¯?aO"2k`]Ñ|Y{, >VYѼrPgbrMZ) n/vۻ@$)AH N|wuXuZ\nd ]#HWq䚚pؒ!4k>2=ecrdBZT;{&Ic/=Rݘec|*:MS|q?y<0]f}Yɢ#en"v*`Cq^үkKd{bIiY%3Y&}ew`ıݴ0ih((ᶛ τ,>ԭ=;m P4ZCXiGITx?ݚ8U@($C%W&:#BEd1 @(` @(@ZU@U`V@N@+4h `QXKDP)`P [J$`P ZH @UP@Z-UC'|A9QTٺWcc+!±HhѨ2ܼnBf+P63q$4Q`*|[Y~b>&N82c?c 7?8lW|`mo!F١9pW CD4**x LnBςQ'`&IXiDISGhP6(` *dhn#C208J*Jqz-kj7VڝEW.Wx'9ukwgj?rnăqR @( !;px[YL FP ˏp+@R` @( dV& `V V( {T24*Pdg+T @(P %P @cP @+P @(P @(fYYn +-X@TUd a+&`b'5 0H]̕##N%kT}Nֺ\-}Zh,Ӥ22PF >IVO$S^t6"fKdh ԇ @Amrm=_tY\u[6I6]3?ՖemN[$lcⷶ#+GrV)$FTrk g"c}7)nb6Đ:ڍ9ՓT}z4{H/-YD7ؑQʇ"m47,9Y n\a$ӌI`2 yIZChֺ[j6tat9Ԙe@eJ3/j~5_(R$ ]Ux5k?6^\m7|~Zo(gN^&>_]]GnCݕɒ ᏶+e |mNj*q ~dvm׵W^tsǩ= uqu o'Z3JN{8"PM@]r, el6;mGo5h4OG=>{}B![܋meK^#ߌs^Rԕ1kۮwmW<С>ԣ{B̶VڂwY#"I6Ls+FEC>O]xk>dRY]uҚIz4}i%=fJ;K졗7P!R$: WI^̠IO0*K6\TchU(VP P @(Z@(l P ́YmQU*6e&hX VM "5ӓ$`Tq0+KNlWU:mse%&X&H>GT+6̓$RXX`?v{Gr۞.ΕME4v qq[N4L{RK.>}c1MNi5tu&a5 Kh˭C@D2QپiSmR!ۚ c؂3qh Ya>_jf-.t^/KlKhʖ TB{V+sD\x\?lq[ ۶|sV: ۟P/,5='Lx..ĺVQH PLK$)RF@?Stݿʯ堣ezӣ=itMYaYR{;VUd?BeA:7Xhtz[mMm>sth:xDm1d"\rUʹ9v%\'EgY|~3  ~(ќʮϹAb+c9};G1rK4 팝v Botݾ{wJOR:.:WK{wA,2ctaH;X+uW R  *-nk!a53ƒv%HS 6q3NunKVXP U@*X*R V`V, Y*n+], FP(95Tz0+`P b  eԟtS5ݳZLfF >pG"eY j:Qhr0Rv-zaz?iQmQ!Tx: ßoڢrTeG45M8ǚ!BXN( ݬh {؎۞*krb$,9[qBw HmHV%9? PѰdNJMˁFWxIay Yp{XO˧ޡ(]55hɤT"@*4d }ZYr0䂫T Y6w#\M<&{UWb0ʐ %s5|eq\tSvW3DUTd8Ͼ2kw2kT CPؠ#q#nN8rx,TAF 6{`&6",2vМ3995IVy4_UL(!cV!dܮ f3n)XVaG$sɮPeIP KP @(k O YR*R@Iyݥ%N܏!"xѢO,M)p#YnW7ϵ"5|%UQeRgN./;weY<-3 g")ySh rGs/Ҥrޝ{o6uo4BWe׾?LP#XRI'K,&[:ZY[NMJ8@5ҀR1*mdMuMZL =UȒ 2ɅD%=C@Z0d6OVzj{]oK䩚mђ3UVcdpX ݌ǁ+w!h\295My2j8lm%"Xj"Q ÒҴeЮgh\͜p¢+dy 5FK`.#}"T c8'yp( j !#Z؂Ɍ[}ZFսPղFG";+`mVJ܄Rf᫾٠_5֭8-޲@TzYeFG5Qf [Udx#9;=UuKi,FٲgMm>~w ?NYwWxݜCRmNQ(`if1A%vҎȥ]_[5#}rUHhǿ>Oް KӺ" DC 7?[⢍rexTND;l9ҥ捞RK=V B;m\Ǝa86#сwN*IƕS~ z:wLh=1՚N]Z-2Z]SiG?vA](u]6^I}Ukm}Kn^PKF6n^tw뚕޸ Ht/fd22QEQz㷑GG0pU~+LvG4fY,` "fY-˼ȑ]vFv0ݫ®0_&M:Z.-7Pm%l_5+{)آHQpGUV A/Y틌\x2r|魦-%C |'"=I`rFMz$`L2 suOh țeiX]՟t΃G>Lh.ʑ4Hvɕeo2/˅ӫ[6*~3nn7J?EOQ/Ci=}ҖV]7k >]Yb*,Yӻ JcVxÅvkQJIpJ]ڦY,}VNQcmtlF(q<Wu,RE~)mO;w}ʢ,e6r}W}3Tuo2캚n X-#&kx`wbdY>d,#G bvL'cRIOC?6Gu>kV[L-a9ṚkW"hȡ9[u?Nu$V;W%qϩ-،6=kŦ{'XͨZ/K]Xܛ`W-̉mc;{]gCk"J$^%-rvi( sD5OKcf[-qan۳o4Ȏ<;*]B1}P撧vqx$m_fB,َT l P @(e*4( (Z*@(V ɩi+-(\oXIwk?S@QGJ-]LAjVv@P Ú`VT/u܊^4`]_qd{Rk'ܵNu NxL7Uā .k$m5jXڍUrxR+[iEQ vfc,s[6tz ͦ8U.KDVa#;$mXFt,<.iz[W$eV)0wEhZFu𷗱XDc + hgD$HFn &_LZW 0dc5l?CNG ֔ kn$wg2I$,$IcK,NT}5les0>|ղY |"\$9. V*K:lT 'FkpF]Dl$]Nq5 e&$p@ⰲDa}3p@'jf($+oX>( vc$pIV8h oQ+tK3n(? d1ldh y$~aq Fx5e7H,3uDAhw?Qtibtyy]Nou# u;k[N?x)&_C:F2!~gpQD1M(`Pآ0(>4}/Ru[2T֑$ U+䱄nHPA5Uy#G_hcD"ehWi+%@ZZ]FaSSee@2V0(k+5ETQ^mW2 P @+-Z@P @(FT Ϸ7sTFP V6cSs⌔I 84x2V+`P (P @+P @((R@P PSO Toa@(j#?Z9y"2FԷc=3]YKNbA {8qwmBR69F/F*zD,ԕ11+2 AebxȯFgsĪg>xZ!z^gCɑʨ>sQ\EŌ]xaOt?XCfRU +|%}.Uih:-BGak?QNou{i'bAPv>gU`YoK)jZU\SǾpI`T7l&Yc|j`L柤.$I42%~]@#=>n:wԥo=LV2ES猃?zd܁ $ː'>MH3nPvl0ҋwlh3+)PK/F;ҹ?/Wnlx5z/UI՞ycfTgO !a&SIU`ќ+)9Q5[uqtzm O^Oq5[," JDd,$ s՜RQJkm)Fރv_I07hv\f# lʩ]HI^qk"GN~ *ˢzNѯ`G;żI ܒ߅T Ӝ4n;|lyXqyK(?t([鮝m,:F^*eV"Ki &>⺂+Ej/['U5מew&}OgN&[SNEA;I"̑쑩o&K%؛٥^jw2j}ܻ7сʣf- fb|1vjVo5ۍoYKɤV,K#wf7H9'קKJ:1PD<~94SsPK9C,*ƲfU*1_seU˗oDVcw -ۓMyNqh )󰍈 d 2ʶPdx4@#m Y$Է54ΞXFEeM&Lٖ< X V5{޾9KsZp9Ƒ;r#*Drpr}ZZR;x>>TLtMtk_JBtK9 Dv(};nY/ӍZί.K6_U}zYԐYjMHFL#n4X\HHIB?>CҗڭSQNM.#Ky-{{)$l<=~;9ʞ<}6bqPF,a1 ۔W'5pxj2P{h[UG #FFŝdm 7e3n0͸lP:1/k 1jNVg7q+X @)tvP*]yP @(P Y*th )`V[)`QT\P$R4Cj`d5]o&Js7W=농 kjy%k +c@m$*4QD#k%갏A$YZ4Mr2!Ǔ23V%%]U@`*Jp|~$x)^5[>m-er[*ħ+HKqf3O=(8E&ߋ,8U#໸ * K)tG}{_tWY5`vF(g*H#kաx0V,ɬ/TP6cJl T=%#v1w]6.U @(iT( >k4e&3`vh @+6h QT @P RU4*P @)`P KP @*(brrh`@)`U)`R@(` @+`T+ P @(( Pu@*4QJXzkdXǰ,/~WBɬZT RQZ`V(L6>>be隷MѺ+VM6~59#`U1 Ĭl\HvC<.ݸom8_}DlC$}e/&aqWCo^ZZ!7T,HEaXRWϑSE:3&ƏyҷtW1_魧߼wApR'dR7l&[n aMjG~6WIRNc8+>[wuyWMBU'K )[5&鿿G^պcZLɒ:C8KwlF*{<:5(ߵׇVt}V:j׬ܟUy4V *Ge8vӌvG;OrjNOj+7t|{(\2hZE++{n&hfuĠp05ШKbIr;~O-k(GR,Nk2]NF^. #*=umMՑ3ڤgwJzQ~S4%I=gwiZnGDd*~mi2jx$m㽼V#=Oopl4#}g| [M5FqXs5bMEj6qUZ@V *7`TtmH Tl ݀`UP֗S E@)@P @(P RP @*`TP (-0(QQϵF=O؄Vj*`s͋&NJÖ#w֧] cXFInr1ZA4m0+VIJV ޲5hAO2zCmm5&*;P"Ged;lu4(eg?]Sbk{9RXTpp}uZRSV8Q,@C  >xۿ.\?30>9<9'VN9u)EdY6!H86ƕ3ukprԮ sFR(*\q"/ 0,&kD" krY NӁq%?o0CErK,0/†c~.tZ=ChO5U;y!ij3@mrz3Qu2 }3e?Uڕ ++Ŝadx&E`ќ*@WNA$*-x¾<_xlQktR(&'wnTa3joJIV++N}_{}o.R^kEo P$#|quY2FɅ WOۗw{v&ϚZ_^ⶆYE,R-d`UF@=}$xWz\ֺ_STb-g5T ~ղI8cUHV}(UGJN_lV՛wI+#xёC:lT @c)`RP @(,V@@@@(SUQg, yV Aj0UIP$L#5F̒>ո…XS@9vhْkso+Cso.9<]MGʌ((f䌊7C~f ހ,"0r6T  ožwaL77iBm#4fM Hy(z[l:+ P5٭NˣdQg}OJPNX;v|mk3W^Gk=\cgm3OBXi,D$0]Bu+SQkwI?}&zs腖>jڦsVȒ\s,'̄%Uu't+w~ڟᔶWע Bߨ^zjOo.癕P vٷդ  r~v w}XJsW5tri:Ee*@(:ݺvtSfhѸ廓1c>+.VZ5Ed ̲b@`Y,QL[JT PwnyKl XNW)X A-^ >i'@~#Wn#5DsYI@ӳ6N8+2+vRk P VvIYkr,LgfEtL+hѷV{2"qlIO'u_Vz{{BHn}Ls6๚JѴ*m[n9ՙ~L J{Ky4̶Ȓ@2T3~jmW}Kb"u+\׎%$7j#F8\yU00ǟj`$ ǜ{@N#4ٰ9#[-PV]‽޼j(U8XL5H>4)Ҷe| FOSPoϚ!c>.3[`5Iљ+&2;s| hjW{&0dk7fY9 IE[r}nRF9)bͨQ]In8>0Nv)x5A6Q(Xovp V:^\[/ZϦzIլ.H4GݑI)yCwo@@9潴ӹwkk ]%#]D;ͥkbW"7Ks)Vnbb(\w>ߢ:JQrʾ=4wW|]iO^EjV:ͨ̑yp q'K!Y8-kN)˜/ /o5$luvV};x..)`3D"$4h#hKp;; ΞzORJ|Ξ.\.7]\MG z5K |ANL3>dI]-yj\tީ6'O\s}PsGף]?XEo5Kό^kgSfd{Uߵ8yD~3ԟOgJ-5Uun*kuuKI5h"َP K(VX`TXsh LVh @)`SP RlXpvxՠUGڑM$tA8)mMye%1kO^pAT둣%tFH+Pt -،7JFλ[p쥓$`+pVrO8gvxhaUAYs^:]sWhQCEEq* ¨ 2y9bMcGF:1߿.n[w 5X4brm c8U;:Omޥa4:]6f]""-*l69 W>}>J653w(B<7-p(^Nڊz{MB]JgL9-^ ؒ8F(s&C Xyi&$N-ռUWя뾩M=?KjM晪ܾ {;icrVHV*ʪȻpgjr_.䶼tۺVcoΩ-/Wl-:E;!{ŵpV[Y;,2ǹ?MQJ1 mamW^ /N\mq;:-EWw>옢a8/˶|w '÷>IӚ[cukغP\B{ܢ%)Ta!kh˵𓬫ܯS:W-Tu.5Wm_n%%\1TǑwҌ`RqUcԯk?T3ڴƑܩ$INFӗݸ)#m>._NnC& \Csf.h%[Bp`9Gre-mKbryr`xv2m[H 8#l$}3PcO޴ ),0~ƥ52pEP[`QP.)c`28o>ؠ7E`? Kyf>հt85hɥrYP5Q˞ְ Y@s}YHF );<0m Xdc9RQMS#TM*&$.!*NsޤSnfۍ.tJK|g mx\RJlsu][ KmWʄ:"m\.3|IwMp>tPh IHRH℁W[6$ZjN3{$6)ct}*뻿kzl䗥[+O~kKiwC A*#4~=iuQMޖi/I#LYP ]U0*2U: ` Xh P*0(@V$HM|&]253޲+Z2([l &5SV4 K+V/+6F+r+N,ֺGQIBRP @+ U@UP @(P @*P @(P @+6h @+, `VFsW}iv5[+ X ueG}ȷDRbe'By=z% ^7UΓhw6)2nD̎FVea)#k^EB?"Z!AMXQKw0{+x wyQ\k=mJai+_Z)+")T WɵT"E,?߯nѫ՚lt֝?mVv:J_l";gi &UtE@>vpњ*\sJq⛌]6MƘn彎[HQ,O0JDHtc.wj}*ZyjRdYun-n-LF(%vW1 /bΞpwv_)ݥn2ąd by jP[ZǎMw^z&s-vV(˓~H@+:ZUyؓѺi{YvʆydĈB27/$`5 %U,w˷&H#-:@h)YTBI*dFۓ%O R)vaW)<2$d'9*A vjy,$776ͦZZ&>:VvA<ŒH 'Pƒ<KJ:ӗqܤ馲F[CگL[}rV{{He<ޱ:#!WxUXnʄW2ϥ]6 ]*ttj6RحݚheHJ9Z)RR2Ks-JWtYKל5nQ#vn nk )`x杻Q[$Rȍ QoT.٣@ǢOs+M5y,<54cC[^speJlֵʪǚbuӺ>7U]tŪP>"HKy"eI-9!,G*nP6Ԝzhnk̮O Un97Hշ7VIS[M8a-?3v+fs^~O[QPI+u7W~{s1ج@)`T@SuT P(h 4f V9l VT3V(`UF+*t*4g XR7@$0 }*Sx$Ulj,zzE6v\( ܀; `VKi|?㛠Øfu?"9Xx<5O;6W e=<$-U7p|Wv5PnII]z{5[SV2 ++ qxm=տEޭQzJƥLV1 !#|N->ݿ@Q(zeſhΚ}hṎNܛR m[k =[YWz4~=VmrHi0#lQtP7;~_]:RteZ~,lf7 K.N9RJ/[.-985Ըfua`zu3 pʤ4$pby\H§%$ګ^WEӤ$Ϻ͟GWHޏΆ4Ekiѯ`Kym88GIu#T8\zRrn۔{OӷK,ԝtJ͂\{6CbMpwKvnhpݴ;Г}g(fVܭ.#\U>J%hOHiwG^gq՚Uw{aZ6ݲbCɏ.U\WtkezKkE:S3v\*4&eHc&#1OknJO45WIaUz6K6.;//߷7pzyYieKxT]!"KR:qVWܕfͤeĺ^.m]8ҶC"րo<ϽѲ_")8}("qn6zH><:]Fe>* u,jtTe1P*cǵ`_Aɡ fo'Y9|LF${eRNqo9NrwyFeerè@;x8 g&߳@|6Kq'jj5vvw8+toiOtIRʱbXEc[OsI*9Qj7ۑ[tK }[r0"$Y?Rb`T<归~ aWkKcŤj5ݲ鷒wX2F=r$\Ý+צǩcyϜw*O%3 8 H #y\Sv– @=^Kno~}G_W{ b>,]$NnVi0d$APw9票oo8Z=WC:Wma#!EybH5xICFlϖi7]$wOmt4Rk,M}TWjRiTU<{fIϓ[JA}i:"_ڋo.0\}TFYҮVrn]mwhvTB"B̒NI_z\/nhHFEȂhdYd)! 0.<5uF]w.,92*?]vew:nKnWU߽ήoP7Z7M k;}f'2< L48bBH~p;ykAk$]erǬ:f5NK]RS] X-q&S}.7}2 )!MoYyXZK^1eSFr|OgۜZ*ᶪ1xnIEjh|=YG=<>oai$\F-hU$@ >z^0JSIv<]`VY`V+@P tDt@TPN+2@ )+vPWZ4>)6>^dժdSrMfV0Mn]Օ ZZJ3 UF ́K*`VYq*@UF[}M` X*Oaƀ#Ԙ"b3VJS*zΝ嶐i3H㑶pQ%9+kʯϷ-_d{K&<]F (8sZoI9.0aQ9&ĎbB,7}}ok0Ȝ+6\GҺ<ͻKUiAC~X1Ӽ/9 ޡ5}J^R`rXb02HOBĕ.cWf>y>L\K41gO$kPQAґ Ï52^-$q@ 洑R纀|QU\ڲ`r ~V͢d3ǽ@eH;FD>>qr-1ȣC{?QAv}͌.v!kO!ɈrrںxF԰k30 sZN yY2Yb$oq&j8S9ޒ0;0nG?d1J"MtUU!p}Rѳ=׾* U $l1f[m1^jY-;lѼ_f[ ,"aM*;a DXܴ:dh;SI Y /ZqO J9W72J7.M+wrYO$&J4PMmJ@(l Y`T( 1:ʸ%H 0 8GhIɭ"Q@(Z@U$yE* A89P1nRE] w?jn/[k b Vb3ULdUP 2*n4M[2(@+v` G(wjJ Xx VYN@(fKP @(P @(V@(FqYsM]VpE@)]@Fdk &9}č7bn髱424*%F+tdž A>hqXW2\5bE^HM1,HI,rk *3d-Ɲp"tr,1@ܬv3)*rR 8f \w|tۡy̻6kr)OxAխnEŬpn-; `@pG-hڧnf../Kel ˗Uj;㟭WDvڭ@ֱkI[^10a\B6W1&u+WRU'N< C>]gptC;C$!9wkǫPU}6RTZtJ-L2rki,NyFZ^pULm4]@d0׉o-ei0RDkcT4uB[>K^xr3z:5Ʊ}SEV--.e[Uf$c.wt~FuubQpI*}WHꑍhZ?5#l6D,#n@S*Ǫu )7/p_N]X%R:W-)+ 55~*nX<:T}ORӴ,+rBP+k P @(_zjHtdoIͪ(d 8$S& ڮՆGVQ ʻAs~>3zMtWZu{iM= w`kׇ_Ew+<9]GO:,m8UP f< Д"`6sӟEMO%2'!X8V_$l w}Y{u5%Vd&c+V08ь3#qg'[ؓTUr}[uK=)Qbue:ЋV[4p[DKxxu,~$ܥԞ֫1>ӺJGTς$p[ O ,l;,गq\Jp ^Y r‹xӫ-e~W.ϦӱjZu,wIOHlC~K;݉cqw3x98w/ViIB5i]&tm6WЮD^HC\C-vB:*)du$oDOY^uZƫQE6.%4#$-Z3؎7؊ss8UGQ+ݥ2O6FRy-'D6H x<ǿ#$g+lAiR%ңwݦ 6㴪R) >NH#;FbcsWYj=.nfy-"ʭ'9Y#A<;uϹ*=E[*8KK"JB#\!6¼_eמÓktD\uz@?KK~Xd{D"i*n E &V\ɼoondDnĠ%kg4jfd @+6, n`VSG6+Z`ⷹ ˗?QjlMo܂rn[YsMk+Th @+ V(e~Չ&$*P'^@VZJy|pKu k&4A9v`qn$9^AJ.mj9V6)\>nCGr8dVM˺S>m[Q)hmr¶c2ػ@7Ny5JM\Kg$$EwKfOcsۆ6G‚vjª8SQV β<$_ - ,uW\oc|5`goWxeKd2q"Ue  dRQ?T6֏V7 5E ye$S566Ү*ĝ'OPunkht;~̺H;8cnrdZFg;8ºo yGQöwyɚ;zs 6~^i]hW a4e[x0hDrwdbI*mm}ϖB%x젻=Α'szGJ^@ ;9cC[k]guڈ'hP UV$b*@M&`Q(nMu+@VX@@Vo+ɨ J~VۢXs)Sɮs*'ǏzwP=̊6 ud݂Zmw9HU`WZ#"n+RGA8@^vqLH$8N?)|Zz$_" R/(Vv6޼ZmV%&Ar@P+FEi H]?ǩ=iQҵ*F+Yb2(\pw2^U8kEukjX~ҫ?-crɧZGbҨ^ +WvkB2_3Ӳy0mӄ1$rی`ȻUU BEknnO&\۞^oĈ#I0c8VWܧ*7~٢9v<+x^H21K$';@v2I|M~{b{3jX<+LųG;7@%|(虽%*ns2+Ip`XަA$?S93IJYsSLӟ;g{3EW|(:w X⴦g[ՖDHEٌ_*~\)k}X,1kV,jjd)`G ~IS"jo{rr4H$wf9ff9$'kJ*5M1T 1[4ut{[;حuk[K\}뎬oȎhM~osnyP-Ng;I3KKmHhahdcaYv+wdBjջ>Or׽_{=!jK_](5R``gJT c`W= [@T`P ́Dh ݍN+ɥa<]6[Dw6G)(ޭR/W1i5no5x^eS^ZGi-_NEc={bIA,]I4d9ܬvL&1iV9=ư,~^5qI]Y![g~{N!32qӵmJ# l8;_w).͆򟺔9v3ǹ!Oҽ59"$l,U9{`QRpS+6%P#` qsLJy LQϸt;ֱ)m5f215ͻ6+h [؂^̂B2HJ;q]-* ?zfYm[ǿ?ciOH'KKF%-4( ^g2vF/|tܔt۟7yBM[ءvH'2 P]2/;NIx"M{N`g٫3Gtsޖ,;inqP +94UcxA3ٴbL'wX1gřhY$vEPH+mX0ǚ˻Uwz˭*ɴm1y5nZH' Yl˞Ԗ_ʒ5xk25X=Kkq^juծVwځ"8ch퉅 #GךQiQn9Q~iv+K[`mF6h4'Ď$ylc~gS^OuW#ڻR# l+KWsb@PH棒`}n2L=YD d *'EZ(YZͤ}kl,1]&Y*FE5yd]4ۖ Nڴ$b@@(P ˕M *( 4P @J@P @XAPMm*2(m+@\ [(Q` p>Vl rUsR Rk '`Qh t)5SVh 3\F+P 545E*'ڎr $Tق>c=ohv,E&ْrm<6I$Hq3(i$('@856,e?W e_1Au&R,'ʰ3$rʊöa_ԛRMG>WtPSi9H[6fBv kޫYJ ۓ^'ST諹NH[Y;3p– $.ˆ]Xs ]-xKЏ*n?> CZ?Vkoڅ4REPڼi፲"(HHɘ,ͭ]W}ǁghlkDeY$lJ JHA;מM)'~I,;zbtZZņY䶏e${-qϴ!h*v!uVzm[ky}R]GSu)d!Kg` G)~#ˆ# KejZkӇ=>\oԤЖ94+q=l66y)$kw1#IߧbOuv'i^cwu,硾h^+=N:i4t6Fm%RKXdUYfͯ(9l+Y\z^rjFϖ\ W]gqҌru6äAq*b !.4HL_CAIw:گwV6Q};zZEtM-OVNͧm[뙺w] 0፼t6˵ Fg3J\W&._ҝ9ҍVZ ڶ~f`u{6Q2 PژdeAFYC#657^Ըk~Sx_GʲH:W\m+H i@VVb0ۘ|| ]i7IezgWԴԬ> ZXEL9ʌp~ *;UU"/X K[ӵm#GҮzb#mh1 豀kKGrvnxf5KZyqv!bUpʪ8P=t[` `b]K`TsyDT@1W] 2Z[qNiBkPJ W5oI5Rł՞}뛗sDVbqVNj yrq. Z)r*fH48KO S&JՁUd ti|V& V P X+oE_@I86 V@$Q`($UNn|52@Sq浟 /(T ϽmIףJ~HWe" Ձ@ttE|$'ېVDZ(`~j!u%Vj7S\Y\ I%LaZf72PToޗ M%Mp.~N&i $\"H#̌ k,w0s{$$21fy'I&Ǒx;WNϕu)溭Z6Yǒrkǽ"Ϡ/v56(ĐrGMpRPԾL5 hVŸx5Gւ,Sf9c3Fb/ ]He<HkV3XXi?-Q94RIu.!AV{3Xr10?)8O8>!^Ϫzå/N;,fhnh\H"̅†OY )+7IE&®mM,Y*݉~ *wnHٻHIAsjjiZwKYtޡ`bXL#\T# ќ9FP8trՔoU$g^l54+(4/pf_D%u~32l!j^f*'?~{Q]R8M7V 2 r}>+R#ak;CZOSdc3*9O.o>ht]?W/jAR%:#D#B 3H7 ^zpx'omiZLkp,m$AmHO$Q h+nSXT3KhQ"f\Ep k{I1?ydJPDm%85"%G;GޤSIxOrFF;guj%3)ԿfZios_ţS6ܤpZKw;FfIS;E~wKWU=8մkTJ)rךxfd\Wk~uƚq:Bg-!N5~ T#gk@+ PP)@z@(eP &SJ2MB0H~FS^XFϰQ+*+d @+`Unj3IEV)"(Fzh Yڀ@Vo V T`U5SE5limP$& i)1Yq+W@sU>曛傹#Q5J,3TJMm`Ȫ݁Ywɦ ҮuK}9?J~ŢkiT+`qy]8/KTr䕥$%{RyY;n6]]kSi;(oD# 5nkiAm}mwݝNSިֵ+-%.$xD@lrToIҳ><WuPk]6vy+J1`'jq[юFܢ)`VTkMi`P @(K5l ۫[Mn KL9m&s$k{ntj2*@sXpod`Znd+pTBh/W-Q0*@(mNe%Bfm y,#u,OK}7P曬\wj#"`9Qs~[#9⵺dҞ0e W!IvY:`خ#n|4Z$dP Zjmkt'$T+ݚ+P @\V5"WLeT 0*WmGk it rrAb+4Ak'"VlV'@l n ?Z7h+Z2[mi/UH sḾUi|Uko Vjl @( dQ5+al+I}pqYmW(rܓL-N}isQAVu]SDgN?g^C6PmA B~~itn7J*=%i7J,QHd]}ѳH0BFnZqeⳇvl6j8 $KhFXtECay''iۊ)5K/>mNAnd]G24i#!e/{*bkz=G XnkwߖFҷBRмfo!;Tn"x`& qW_f|ث56 oI7@}p$.q%UO/RT}B%CX~4h~?RguY̘aDN/KNԶ~GKՇv|CH{f 񽼄\-UJ"eH )|e\mXW|]*|5`t@V@RXP&M@ZS U(#S#@)a#{.qNw7ϡM7]#[Y[{ᠸQTP]YI/-}7Uw{:}}/T|QS+4+nv 4O(x2Xl HǽtM*h_psT[2(@( lVԎA5 ARḰRT`t$65"DkTL ~ YP @(@(F@(,N+2fKZd=5MhM՞tw]}tCA}7qgojBBexKoo{n >.sۺW6i??5$W&}eMԚΧ;Yq]:4Ԛ~OO.B1NwGFB[̫}ƞ5v)#o-gܴƒm-ZI]gjC;u zv;ębP*N E0.]ghg,WD=;Խsս?-ވt[}NCaȩ"iewv#j8nM7G-k4XY&'ʈ\"})IeJ \r+T P @*4P( @խdF( `ّ@)@T*)0NtPѪ_F3QJr+Q?`Z+H8Ea?j6X+ R '#xl XpT ֕\y>+I7饃, Wij(B3\޵+-|b>QhdM 4ch Ԝ(Y`U@VNMy+fVoWH9+vLTtb#ـMZi A8U@I&tdRxXxUE, [`P V#PU MPWUy2Z,x.{jR sYR4M[2WugqA+ P @3KXbP"09+\2j=F(y+<~E>6(( X(3QX -O+Og˅ cU qVP @*5%P|xuN?1LMfz}JM+tH :lO<v#HÎF¤i$7i0Lz}=q/u"a]FbP0_øuױ&Ka([x\]Zjf$ă_QjV_PM6ޗ[M6}m"HY4e[zORj9$ҿNSuN?Taw5Q=O骐LlIHeI$sFUR{akҸKsܞUb.\<'z[-fYY- s< K)m0Uӭ96KSYh<F9 Lv{V:v;ed8QF$Rtfr9'SxJi^ܻnݪ:Vjwf[qؠ@0QY()2< ÚX#>Փ@UI*nhQIDסdP @(ub2G"OJ=  ?[꾐=E4ˤD2!Rhujg\ucİtwNZ?(]{2enR\daT_BROGhT(#>˰&ZЬ$ V1YLwt'j'0]XEp(Jޘ \Ak.4 Qxց%&JJ+P [Vl tȣ&#"2)O֫#v( 0+ TNՀNj6,(@86 VA#n&Yz0nm̸ThN+-ѡWp#w֢'"MV̊UXdUEG+ѪRP  fL5S2Af%FJV\MףzzVQ>:?s%XՈ)h|e>WgsGzgPӺBD{ͳ$h&HG"@ȱGv5lԃŨj?R<KQ!TI0I(7˂>c)^j;+~}h='C:Lj-o] ;EpQ졉prODrxͬ[z}O[)uEi<{f,$Be7tܥYFTNJ:=҄v6vZ\v|m:Gˬ5mmqĨK;1%*,I+nR\<ĩp2JYo4? (ܶ=B+vb,qH6č)6 (|[6폧ϜO\ZN} -匹ؖ8HṈXl`UU-&bԛM'{iN}/MѹCPg_XzM5ݍyem .f0TVvIĔ7|;rm${Vk}Wp,Tyg ]s73_-JȐFK|{ji),.,n/%YbK;J{ ucvIdډ^ [AO'$S*%rIfn_ѱkGejk6W5)^[h=ʲ@T܋cu4ܤ-*YRro/1Ozizޱ]\jgO%srG+VR]ןzG#X 6@pk CjI'Q `Lv++XjQdVT5 iQ2+;5*Pkm%5Ef Jˈ yJɛ/ZP ]vj,I@UoV]G*7xhGMSY`d Z\Yshd˛@YJ#-Xse7Vw@(`RZTYMvJ>|m˟h .?*8FITI V +m$5K4AGV-V <~Ue ]^W`V YsfP +c`x< nVŁY2+J`+8j@*0NՂ3R$'Z$9ϟj"+\+ KdTh>$'u[6 VA-U*@3KP @(K+7`T"'N*@ֵ/ Vq+ .5RsYnWELLbfͼ0viLfq ;tKRI;ㄷ76dx5/o^J:\v;HhV/'p09+G_T(ԫnR}{#P:{T=s}LķU\۴ ֨F6WјH:2<88Kojک=Lyɫ|I}> ѵ-ZM[q3˨ĆisގE}cn55Q+4R-j z ɒk(l XU}ӻEu}M[{OH5w@ݲ B..RI&~{5>:^_t6Km4چqiHS+G#r~"پwZJ;MRޛtxwvP]&o%=G1h@%BH e@#/a)JMmuJQVorצI$9rwb>@#5E aQQd@3˖H jqxvJ$TTyE#j+) `Q#"~AIc*i>84]Z:P{19E1l&Bw3xg;4~-Yjz滷nm`a]eVvhKUʠ}Ҋx\+$ $9ڬ\.+P Z@@P*X(DP+P VC EPd*PP @+`V+Ҋ+T\6kKVpsZNȫZ2(̂"hP+Yb"P*@Ekp#u]KUNF MƉْO/K_^iDM׶_ ܼifrcA";J&zmʒT|dOm%7d)o>KTU9%T³JH$GOMD%$\ڧ5ʫ$ѴkMwGdHӮvEpWd+x5թMQt9ʧ:X\xl|/ +>agsΖt}dU8Mfz )躆vNmq{v!v 2HD555cMHQ=7 C6>wv |܌ F`nyU&H hh݌n݌${o<(M`0`1sCAȠ)T @ 5R69 Q@+i#"Me+P kV*QT `{E? dV M7 FEe 5 @( ޢ~z۝w9iHɎ/Mv4GkI2Zǽ"KKSJo5k%W|iF@*X(l P U5|VH`ky#dQڤsRa>S@V^``ǽtMw]c#%Z +`qYn`qINOr gڪxլզ c5[$pOF"``}kqO@?zM0ey54A+2r1NU@T: Ģ @V*Q:XNj`P @[ Uj茑k'id T*`kJ&FP'6&jfh+4P Ym0+H)M*@( K'9+P @*5`W&*VT P @(Vi:EqvlE 0gsTyѓ ֍+W0( uI"P @(-h;W @*\ 2~ՠG=GuRYǭLOI.# iX[(Gώ֊\WvD}OzsD;[hX 2jzj hnRs#%@([g͂jtwXRZR]kkfZwdxa/dfda`4}.^8E MI4pfX-5$1f 8y$Y18*'umHj̍@*P@, P ԫcmOo)fi;74yHեucY؅U嘀$⤥_#ҥdtE&HeI#n t]==e}ۯqMqlB N ZZ{_ʪ/|4ݬ;^E;Oise\Ihv$LwBM仼qyM]:('RԖVZSOż1p!\Xb}0+m.\O[zRh`Vh JJ*SrdV\s(Myg+4MfvP(`XP+P @( t@Q(v, JP @(D `V(F(P+TdUv UhVɢ +P @( F'8 Vwi`RZ5TT A.$l*& Wp'p5Q,5SQ^>etӻA#a68l\`f\YŪ+/#mP/ǹ1e}KM/:-[{\8GL8Vx䞢Z [澌X*>6AǜYJ,/ĪepIՊ9}ڣퟷ5$0Z@9#Qtj^:Yn>K{40fa;:ڒm[k;^YR,ȝ rm?(;~sFl YnS ҸJf P YKt@+I+H l #"Yy mI+qQJp~K \ѰJj]ն̊X{eFf`U<1FXb P+6 l7(cP7j֗fZ>,Cp%` @@]#,cɤ,W0SvQH UsP @(RV\Ȭo@*[\O`Tl %uH [ ckQr+{j8~%qnk]j Th̐Fk.&'GtKg:݁XV[n|Ux5 @( 5+WGN+fMnզdRhխKUQKv 4n8V@@cVkh#8{"ULO֎`5+`VP>jHP Z(UVtE?J#,Τ!Ye5\Nnf>IjN/߱z[XM+Mu\:L+$1VRkxΩUEnO~;%ݮFϓj)An*͹.v'7\G/s#ma€~G}!UMs~պ<ΣE+1R0G?Gڳ7$yr rn1[Zi 'K"RR0䊪ld2#"=d+-[< ĵT E@+Vd @+`Vv `QUP @(P V'&EK)`R$ @(P [@(k[V@( ZED l ?`Q {\P&`)MR+'ZSHǽ@N( 3%wVlZ孨@TU`ɼOqY$g, 5FO| wlq9{"CK/q$dqXR<]4F6<;=|$џO82\AڵMĸ;sfi;n/Rv]tj6h!mWBIm$d^=n{UwJ}ϒU r GyD (` @(PJ@cJJV ݊ڝ3oM`M\O?_Wk?[Qj' ?@GW8"c5*FG +4h XR+@VyW >*Jrx@@dcJ`]2k6NT@(iKP,G 2i`VTtAl{_= bER2jHP (` V` t xDrpj4"Ӟ#I*ģ"9#%KW\` V\9Z5ril Z~LKn쎓cq4,]x⍥`YFXFp9?9=Wz7}ڄ}q"汩պK=~=uB[>4{$N2Js8x0QkO}YN,rجŕSJjUU*XS=V 1_ E_aE75qeIswWue[(` @(V#ogqd WmiD@(P fXQdWh"DWh"T XM@(P @T*$WUWc֒.+I90ZdPOa˱7Rwqtxm(({S4y*9j61|T,9T)mN4Ŵ5t)΀3 o0, OXRM_tmcQn#Vudp?KQ!g> 4Uh$95ɰs@+`VS4 SWNMkuMVV uP `V@+QF957UH t@(@+IXWuek DGִ企ֲ}`Gk|}jאEi@)Y4ؐYiG\5@5ұd0)`MM^A\ 9-Dt ul $@L, k X`QV[(TIkqB) t8M`k]<o\7xn2Oڗo]Az`( #iQ5UIsIuZvf9-6e+E#8jXP @(h +KMeEh VPD nX$FN\v9t Wp n5*⊁P ps[Rޱ` Pc5 2(Z@(]ƁjR9VP 5`Q@(l XM#+`VId> f-vd x( `Q+5ZRE0+`zUgI>{aw4wTFN7ьvzm)Ȭn[Rݠ4{Sen!pTp~8Z*UT׊*H:eFeܨ(Aw+kH`f\1irUOnhP4 Vx&Fkd))#(BCSVU۽X{TZrQUT XrWursl~c6 kѡ\@VO#ue0Z`V@P @(w@[P @(P @(V @V[vQ+@P28Zj2VZ D '< 7`TP|W9kP @( Fs yEW Zޯխ԰X`ޗ]j*>c;rf妜ۋ*#l(/EtQ!5kxa)x1ɖA9*`-x+$[#1US%j6'wg%بM][&9dq($`/ pVϞSj=;qh{gYmJ)דc2Zªb ?)~Bp=SeO˾>sKN:>u{ktK]SBdQYdI ]\D4ڕ:Vs <;d[GEXeYj+}|+R+|x"j<4R|RQm޺xIDg?ַ/ (bjj7ҥX&(\j`Wm6Ր( ڞ[q>+"PϻV\N|pjN[+J x2j9MP)`U`Y~V[P XZ Jv`7_"{W?v- l(i*$Q0Emի`EeFP"Th &6p`T6`ۊ$F T*EXYk-GM( T`U@ULGlOG*$FZP'un22GMu5+ חSOS ͢SP @*7`Ul:͑5 ͑ȍxHT&eRZT)@Si$B qԑQB=5B([P @( j\Ր(l P @+\J(l XP @(@T [vQON@@JR66YkhyGG(/]L@( -sF85fN5@+`VP Z+ P ZnZNS*UH\}%s(s pG޽0O$g&ےѪP[>{VW Ԙ?sm9#>@s:]an[J5ͼOjSQ5d 5`Q*A85v( Ate@1]4 ֨ty5r5qrĕV$:\y KZiSOI.[jd_ 1x4cɥϗ '1rɮ'9@w ;QR! :$ݺRѫwju\8MWn_/ld#j};O&ѻ+ e?-sjZ]խ+ P [t檶 2*`1ZH[ȥ`k[LJˉ+;@ۊ`+MWq櫛o9J[NRrqVԠWmMoۆA5A~\kF T~Lʈ"%i`1E4? @Wu]'ڒA>*(l (P@@(P P @(LHQ`+pq 2dp*r\A:?]Nwgw^uÉPך3g<-R 'gjbбoMJQYX+@+`VP Z*2*NVy#ɮJ۶hz2tP @(K+.hkU.Eۚ.+ix[+SFC EdWp/[@T`  P @*c\@+P [#[ )^urpkdm @(VT` X(, գ&JՂ̍YX UXZTP @(>+5( Vl P @*P @+`R uL ǽjMARfYlc*=K^FHn9DFeqf} &W:%2GȰ/Pyc>a:o!IM&Y-g.#Q1¸NVN.I*g괹vItA&.xtf.Y 水.o՜[JK;^B2"WLF|WrT9I5ksVX'<J@>ZfŒ*|o*ySs\Z!з/R{iYHلJX(g |HMb^qA9)7`耭YhX`42wV3+w`?J)P Os4A\Tz`W:WmLk7%ի m1y/@+VTZ㻀QQ VP @+`TWm60N> ǽmPV ZVdR @rk٢A 洚 y) W>+/<r}*6ڐ#'ǵa\^ P ݁Ss 5@yTr㊏Q0J"XHZl c*gڲx`S`& e ַ;\'=ʖ fO%kQv `)~@%i*$ HYq`V\&@V@Xi0YkqV QYU@R MxYxn.AE ȫ2}#]&ZPG:}LyۣB P(P @G&@V P Vv+@VXQ*XdSx jY; 涧`ջu,P V ԦJx-Z@VMf^@NqMsT QFgjHpZ9ՊD+,a{Da9׵ a(ˆQ5@@+it l%@/5`5((W A5"fP Rb`P P F+V@(P P G5.A ⷧ*dfLW2Y !8"#G7wVVCHZLmrVPq3b-ZV4N}40O7"n*kSFlpڑGϊվ(H +-+, lV(CyJk8'W*EJP @('@M/'ڷH9ϊ<֜Zqw2Fڪ,W0HsI!kQKIx40iX+Xڻ0) l֔AlUrK?޳ yjYd݁y9W y/W8UR Ҭ1棍rW+-P+O{M~ ÛEҤ`Ea*j@[XXv Wtd3aFGX+YP K(@TU i_Ԧ`T֔1%`V,FkRTpȯ;䢥F P @(VFE]nn+V"VT @V6b\@(ȫԧ +-P(l ?ZۘEk)@TH8uؔZbFkɢ+T}Xc<:Ej@1籰+-qAj7`1SfA5=`1ɮU SoS @ Q^#/^ P Q7"yR(ՁS ըrZ d1jN ]`h"%P(P YV Q0FojYjP UhQV>i֣Xvu&ydy GKdֺ8N*%?D!ֽGe=vuNCElnd?`eU~N$/[ij5%wn;XɣCzGQ]q]_L/{PoQuw;bHqZZOQU5,mw]ߊmյjυW P y@?J`G5'ҹԾ>j7ܖHZ$K'x$'N^/J>Q&Z'ֺzJ-ZP(Q~2}ȮQsUj( nW7Y+NHN>~ǚ8m䨏5dQ+ US&4P[Ao.Aj<Զ @` [@g49`5)AqRRְ2(]72joexgZi ȖN(hd5rRp#Ea~U`7V^NEiLFUJ5^?DA8)/Af3[$\֞|XjS`5ɦA>|WϞ<kIYH  iŒMwT`RX"=y5:|&)zY'&$~jG2@er (P @((m` X#mU@1Jj08*l%2R0Mn,1ZHn9Q ȩ[&t^@F Evkj z (`1Z*2V`V $r`Qj&AZP W7+ @*0)`V@@VAV^@`R `P f@Ug Z@P ՁK>*ˀ@%|W5'p]a?o#E}膯F(?83^h߂h~r6w}1ۑ(fSE)J  (-Ǟ~^acjRXipV>ջ 8O59A+kkrK9J듟d<3 ̠[M9aH'*}\4w Р\TS(Y,3[]LrmZcȢ7cT|$0>+q׌b.+">W'¢Ykr8Օ ~PZ txԓ~@ iE?j+Ͼ*wz`TZ`[OoʿpFDj+J<&eǩ[J8 ku<2UYUܠc"fbCjtâcqthY0kx4FVw4OJ,w%+DHqk Mcp$jԤ}?E2iIXmJ?j* Z"h~)ysZXˣ#""(s]ǽs`]] Rh}8|a)vvG%5,֖ '5NYPX#ڱ%(@*gXs` &k okPDVSed @VWucp-F V@(*I>j7-K:ϸ@Uwrj&ɢ"g ~[ l `P @9_dA`ߵn潘h<ת2<ԛHb5%:TF~z(X 6p*FMSjh5eYNBU(X&`M#;ukp'w٩MVUH ښDh4<zĠ {+=`N!y&WM5(歧GJ:\/x5( ~H1ҳ>BJ8-~S'.O'L?)VH Q F &-G"@QǸR8iQ+ R@[*6 ud`:]B}y"M Wr#4lЪAYZ rkKP2k2k;hdyK*@(d RJ*WE4Z#&AM]G"@UH [@}ӧl}+H5Zl+4!Mj:M'n+¢XE`+IXA\{),+:`hVmK`VJՁP VKL P @)`@( c2UL@*6f'& ɦ^U)`T d հ(XVF5( Z U`\ [dVwjT AN,XWպk۱vCy2QE$Z#$G.KDbY%[ QZ`VA+V`T 5`P V P @+TPFk`&Ph (`3ɪ]6-T @T⹼ TXQ݊oMij"Q+p[(W疓l^P X16 '@VdUP |L`Pd`R, fGEe:J耨`RLE`P F('&ET V2P 0( +``{CX$UqW.YP ՁYnAYl 2h7`P @(P D %|G ֪iRJr -[+P  R+P @( kFE٢X" 2+ `+-X#An'5TE]ȭo +Vd @(1сQ0*MMdַXTUh y֔z`UNM7Wp"v >jHX1Z1n`Ri([({MZtAYLU0(r ɪ ֘V`ny}8&XmpWueWp>w@?J߀6pAXk@QW`VP)@Zj5h 龐#9lL A^e4 n`sZ2ں3oRYF1iZPs]g5 y摎VVd t5:((/l6¯epjm5d O"}-VDnϜ͊#&$Z'&Vm!9'"*)P=QDgD57QFT+ MKP(إy +[Yh bh*Qh X͊D QT @*XفYLؠٲ4fD͊сG+@VR(حlZ ϱ,îⶭdַ˓Zr GJd>-]@ ˀ&PFM5~z> e+^wRS0j(GEeUL %P(:N'I*%`VJP @( uYP T 0(P @(9 -ⴛ@U Ft(ThFj ]>;۱]gEc4VVF P(*FZ,<ִjQU VGPF6U&Tu`VPw *`kL U5jT"d}5E oհ+d WuG:u76 yJɩKJP e*[ l X( @( TV@*ZUH ۪@kY|3Oh1j85Th۞sUFA\yJ<Ր(i/Ui*%`V`@+ _v+֡CH/ƧQ$VךpX(Lt,=R\2th3R( [,@ڰ]>z^yO$zYVSP-'^yNyg/$ ֡ BIu<ܸ@V=%Ԕ/Tf^`} j ?֖ Vh曗`EPZ?zT܈(V-" P#lfZ0*0*, jcy63 ,U P ͛& mvkF@R@P @(T*1ˉl!bEdrA8MR P( U*0c. ТD2 w37TrVw&hkJ̖ P x5EK bhe+`V1сX)@p ր[̘"Jl e[J@(0k. %j2V P)Y0jm@)@P @(2VҠc`SWp"%_VvTT +)jv)kL 9 0jڒGV>XTH 0*'0iRP  X,< TV (NATj Fk`&GF]L}}$V"gPUi'x'D"$eAm\RQ'5ɲMfR` ùȢmr x0VwJV[ dp"K P @& =tQi!Z\ +@VP ((d P @(QZh P2,$> WT3޴V,ǵ`1P RKZM%m3튛W@(1ԫ@V"kWyV6P+n@Բc6X)olWhBZmt%֖Bk Ӷް|'L=JID]4U޾͏;KVg18qֳW?3]_2d>rzomߕSg,s6gT]*\1.,*Dž ɓq#m1o UjeU}qҶg4}+0O WyEv!ұ8Vt8Gaz^BvW|q^/+|X},໌VCN:_cV٫wrM<+JdLCk%4`k$Aէ=N> US^`T0k;AzT `P@U%[+j݂2hآV0E(jO" (A\ I*|Vc|`5vH5MajV (@P;}G,`yr. U$US\|5S)= A.T +[ӒHgjP?ɇ3_T馷^ V5-ERkVZd@R*URXW$(#w4I{PMi;JkMH>kbYAzHr7R=*'xD4dejkCn?@85܉٬I+Z/TP#Ag"lɤtv[:hwS`5iəz i&[:7dw(@}Z*h,MIpk\cE?ˮGҤwS#.d sv]jҲ]%},IV; bB)wflƚ%dj-f6Z!<xJ 9)̶Wk)n4O1lۉM%F\yms-EMZDf+Y.7m@MfdVzdCÿ{1fG\aEW-\m) 5NoFd+u OIY~Rٰ^GW;󚾈iktHvp0yE+YP YIST J(ڸosZk5!*dҁf6^;y%p<ك e STyacP`f&e֣ N9*kf eqW=V &hF|Qpk@#bX"8yEq7 LQ|b@( "*$40V@Z3E H_ b* l* h 5E( P6mcWp%[M 2H}!׺9Lٵ#C8hA8D5m`fëx+H=S^#[y)42Ujհ%wp>ḙ 3\kiIkϾ5O%5md%ߡCJ=Oĩ8iYkV sVz Qq[!Eb]\cTNSD%a>Epqx9M5q\4"eL2ir`RV-Ei v9Wi$W zt <:W]5T'D4ݑHԺr0H?0>^rjA$m!R{8if5L '5F٦ٹ'5pz|;87e2Zw\ KcIO~82KM _R],n2EfT{V݋+}a{EY]Ē ;FXmKQV0bV9_VP @]{X:Ii1kPg n3[giE0AYER:%, @*@( *;GDAZZ ;_z҆t&`˧hk5{XpkTKf4-A+ W ض% J8j w B;r"C#^;j:t.1^iILןL;' OLvZɹ݈7tw tZ#ۥh{t*K#qU,Z/7;ޞʏ$pX:^g 5:̌'l?vҌZe[_YTi2ٮ`ySY d沁d]V'Gf9kh)@@ϊ:kۺp$iWaPOP}8oeXh:Lwq znr;hqʭMxDzT&RߧJKtm?j>,YV֦Kn\Q$WMN3X"gnTFPk. HX'&Q0~Q<4fJ >i6ٌg\ cݛ2qEQ8 HYۤ 蝚ferUqy#Q,ǚKOho4&.s\Fy~+&Ij.%OO ™QJdGCF c+8*2an;][]vA+ӣ̶MIZHq܏q\_G&ky^e$jcquQq]'"vgYu[ZCxZQJMKtZ?dFX;苼ԟ&l+'o9K.l iO7e,(*foקḫf΂Xw >MuZWȳ]rщ;k/9Vv*JWюHD9%nI7VeN=s!!\E Dڲ15H',xa[ja!IJ`ܷ.L_u5WXi֐|D q]8t }%m1כeSM/Úo2sjUrfkNv ŽNs]46Ñ:ǚ>-Q/O۔ (]k#qud>/2Y+9w^wtח. KxX"?S\gJ%LZVbAM{z} Vɚ}k\^VLQ0˹|JGOaOwtN̰~KMeu68U~Gݢ$0țY^XV<g默N7/ڵ>Q"l:|Iwakף{bWӊ1Ff>՝E4idx5sPԧ9>ԗ&GKK:+ÔMY+qVJ6bgUq]Tr{R΋ϒ+΢Գˋp+Feʎ#*dI~ :n3\#>qnq"eQ0]ye8`b'P ncfrk*\g]6׭h=üI~h|gRI HF@\,:%nJ*@4PHrnr qf~FAå^q( ?lWG$K74@2)#g:T]5;X,, ~kY{y&bm3mAɭ'1P,(Z 4`/)UqQ"rP]"gc᫱fl(@ԢoR 8!ELһs婢wton>]ZƷb7[I0um- OB<>IgAK6Wg+ͭ(R87v O^=M44ŵ}>Ӝbre '. Y4ln<7lv߱EWjsf-f{q82c桌 vy%^ӔhǥB&ɺs ~F;U#e/ 7SVǹSƼڝhґgns~LYEhiu<}E7c2!w"M;HsZޣ#tl#Uh;.~˦Z ϵwՙr0]t֭5>RB&m) 2+˧{itXY"wyrb!MJ|-x5џW]8&Xܩ$xE87&% { V#vREy>Xf\ٵyϽY;  yhCt3K֘k.=̺0DZ]R7)K8L2K>Ɣ7g.M()#Eé5Lǚ@2qKYB7[r?3WKZʼ2Xph[m4I z4.6аG\q]tdlèB nLt"Ovrۦ;JE//~s5u~ &7HpHt7HKt (ǚktxH)bHKké8'OS/r}U{~_z7t c8ovknE A޺GI涗D/cWp˹3t*,>] έ΂%WPzOHew,bg^yiI:oMlbƻtI,"f(b=v&Q@{]œkd]ӗh(Y}w,˅tPqi#hvs}MzX}b||WW,\0N3H7IDcjE4 휭†O]9+ '{]u:U.0E#N]+$ \(,dՒ(N+G*Mfb#}LJ-v'>ՅI2,;֟m;K,.AFNN3К3  )MRɚn6cA֛Q<?>>|ZFisVS!Ãzo$r:}dݓqݒ% k(&C\`kͯLLɩݕ|pާQөdki&O>ڟs^g%IQlwv2ٿj@k='LfDWѬ^ܜ hh)-ݾК n@+>s $K#|=,c{ {ᤤY-s>%MNG2FS8tۋJpҼˡ}˼XL~ ^ii3Z-:^RjGEк:.Do$75tM?Hd_o4OK\ ~S>HKj>Hn5g̴KfFkgovm[o!.B+UaR>UDCetnJlӸ̇t2|^ϥl$Ez42s2YnF3ǪnX,Yl&m)xNZF2DPAy YFʤ0nEeMѲ5KsZlVr@&GXCGsjDҲ5BMvcɣzfB#*C¤ɹ>=;]DZ+~b\PQft(A@AҋfqKà?a 9: .>2.?HL-^Y~[k9ǂFSYn3; MN?P^+J5/6ہ=o%5b- LH}..e9ALn9 ŹqK(q4 ]7g@X}3e܍ai5h5gb-O1HkWnhJ1]~,͜GI7 oqQN|6߸qkm܆Fwm'XD'V8WGQG~9v!^2ѽ%V[$87w Ԟi:e`µa;T b({[Aϊ>#Z> IsZ|׽ǵnd+3JxF ${@q {P fPf}D7!1 "\H(nBh1j0e4v؅@@ETڭhߜ:]b0}ɮ+.zD~~ /r5[prSo]z~PB9`⌶H(2qT}147$uV\S4F3W7jIIS]b٦/j 1\A]hpv35Dum[dF0w"6e 5ۖQ;l&o/AY_(sIvK3֤jA j (i@m"-h5ȳ"ˆ60jwcv+Jjggg)9. xd9Y.qiJ2|4%W#ܨ}D5H( f*@>EJ)FPk.)֓NF?acMF*؋KƸ&zxǀٷ nux2ٛc47Pk.)0501V^XJ]_K-mpǚ7I#خOky7IH16MGk)o=^6׫KOi $fFscPREߊ:c"_hDc<qR(Ѱ+t&'aU?sTրP @(fp06t6/WjFl7ڲ)5RM!ɢ-8;EP+D5,ĜXf-Nj𤟝Ahm21X1,Г\edC |KFڣڏIDuP^F̸dQI@fKh9A5)6k7\eFE7JʜW t1esN~G<):Ru?!Ȭ>o5_lޟF~ mkqzϹvTa]L@VjPP @IRhѯ-3"X%D薼kb7D QjBb1.93$Oi)'v~!l,*Iܣ[,bmAj6la-zfF2Ҹ,GVNb!(pfLWS#1(,)Ie\+  Xflke!g:^CƸ25ӝEg p]hXHn;z]snl X#( (@P0>@8$‌8PP h~UA@2* pj@F֠Z1@8ZjV9G9l@F8"'h  TKx@N)@3P1UJ bflӴJ8,( /5W ?^kIRfTҁTT TPV@8 Z*|ހq@["*8Z#@(0( APրq@IT @q@0(րP AR*PPdU  P(01J3@VFib<5,2*(ղP= P'8T1PE, X '"+@0>U0> JZP1JP4JO ϊ lU1F 2>SA&D(5RQEeॊfd(u2ifVڴIFGzX|yN>h Rޔ( $U`*B~Iʔ#(#P'@GPZIQ8Fi@( q@GsQFj0}@`ҀF)@1VJP>*JҀ*v*( U85h  (T5h1J " ( P1h TElqT585h JT5h TF( VJTZRJP>X P46P4F*v*( UjpjM(  @cڔ (SGy>*''<)n5St+̸ɨA$ƻboUIIաe25fe]PBP@@`ՠ6P4E@NV@E`=V'Ҁ1fF)@b"URJF3P-*f'Ҁi@ U@Qpj40i@@P@OV0i@m40i@T5h TP|ՠ6PM(PV((UJ (1J Ԡ1*P"UbVi@`ҁ;MZ (#(FqPHc =6P( l8#4T܊qǰ +T( %qCTj8y$ E$M#AF?4B*qV(JҀi@ U@BmXǏzO(TC^HWk7*b( y怮?chAVP )[ |Uc{g~XL&v*(M[f6(rVTY #Bͅ@(@P 4%#4-hʌ Fk 3rxLh  ,qZKXPe7ތ$npCd@'eG je= {.( XyJ9285 @9  *40i@b*PMZ JbVi@m41J9db*A85h P4J ՠ( TE'ګcޠ/ZQz7TH9`&F ϽPWޠ/ZsQ ``QxA  #T jX⍂7TNx[  Z'sb=57+@&@*d݀=P/e\f,V+"r<隔 ^ؐF1Wh6@?\yʾG) @m dP9]F7 O#R@rqDRJڍ6sVL< H48ܸɬ VBA[x $԰;5,N_! |LTlA Ts>P%|>hcހe8‷1ijp( h`2怹QC( 5P9@1ȧP怮s@AL,GQn|PA@@0ɡh`<{h B@X1  )7怌Px*>@[>zc@?,đV lPҖAK)NsK4 NE@GP$&T #<8`,MVZ $`d~`P5aj(F 5/Zj*N= a8F= [ P%~P5aj($x+ [**08$x clz>#4lz{xhBS4',#-g?Aed*#Ue6Y8 jjx@Xcڨ#qF (J2V#( 8( F P&z~F=U*0IUD րj'(5 *8`z*g5 Ux@Xcڨ#qQ}D ցRq&hϵ@HU> j@2j-8`ǽD qTxT}հa߆VYLIç)ޭyD'K)`R' DY?Z`j c.v@ ~(|0G0h 7"=ҀFh( ‸|{P-AeO<0)`qϚ]dROUZ¥{;K*DSp7iv UO׌Ҩc@?JǷ4j61 @(, bdI>@-'Ae0MF1@bϚ0} X2<K‌h oҀ>mP@H-@FE\wP40 "(`=/րZ!;( D s@](l( ɡ0|P怩o( [Uǟ@A>5xZUqRDrc@S[޵EP@Xh>Bvf j dO*}B>w͒~)h,BKHÀ3@`hߖa9#pQٳ 9UJ?h`*(l P(2PҀ} ۠1@ 'w6O WU P$N%#>HwFjآ< ?y!Tq O#`!Q3R)-vgA@ 5Py$h@q@II(CM"?ڪ`'26 Y(e.N1@[6y<(T@Hq@a;Oհ;M/ ) ƀ\@т0h s3[2M@XfN1q@ph 2\2yPP+'" ;`fю-yJ( 4jbcPs>~U9h$r ͂dPg[!rҀ"%Ph7( 'Jz@N  P @H8'u!zCb Bs(GրPFhhǽm @N>>P  \4rh P }h4dPZǚwP jz[ Є @S"@Fۨ404@Xs)+91V #@QN4U $Q)"*PLl>jryj *y"P ƫjOj@<a (+P @I@-,*@ т*@H@x04UP$P Ar8ij @ҁ UPNA#+z%A'hPh@yN@>1U@V3zRr|Ph,QB)'?a+U?gG1q@`0 QRb;8P C?)17{QBWȪBp(sP g"!^>P,K-~ ~6lvp9?Ll~OҥsAFe0'sA)!>sV# ”KS!˂ԚX7%m_2c$-L7 Ƞ5r| eҨ'ڄ%h"|U`{Tj@( #i\1Z` Ty{ՠ P#ԠF 3@Ec,Fj\T X֘#im?J#'PZb0p=[6hBJly(4P `q@_p-4%}^9.9@NlP @( h f|т*@( $0 TjqV*qV`*S`f@MP @8'yCL?(L󷟱.܌֜qBn a82 PFq@XtgoKb Z8QSP3zRH`Ѡ*Gd$?id3dFShC0.|@[ia46 >*Wڠ"֐+YV#U5P F85 т*@( P@|PT8 =~*X.B@<"(Aǚh<h {[(,Ps@A&} fm4m }h PhPɠ"P  PR `py4PFE( h @(-( ȠdP#u{ @PPAЃ$TŃC܂ (烚~\qT1B#V 'h怂O  ?Zh gڀ@cP'4(+@FMz@(]K}h J@*$.jX-@[@N> }h`P@cNJf@IƀPJGր4Pހm@N@N4MG;chBNI=u!jw˜5mvϾs@l!@wrI怉pȼ1uq(CVkN~O?PRGڏ%ps( ?J0E@(,X+PO5X%T(  AlհH5SED'4U@4`D ڨ*|`0E@OT *iD( *`ȊO4)sg>!MWMWAs ~lH*7mA< l@`2h09(RNskFlm'ֲSicgLwP  R?Cn݇ (ޭe'/ 4IʫVA9ɨ H+)hT`C^]1VJA_n?`\ďҀĶmrGߓZM`Cȥ>)@Ϛi`
04T#!6PF} M0bh s@Y>U1}@PsP8[3hR>n8'@ߵ~6@P 3PH' d<.EF(TU@NqV>*G@E@H4Pe V gޭAT_zP s@3@j [jJ*~A#"Z!Pր[ cP ( l_'X,G4(@@j(sAd+P @<@Xj‚2( P@7 怶@( gހP @(#$P hL(#"En( |( ‮MPs@2(Zh>h []怱v5jw+`{a Ҁzhހ @ .8@N~q@Fq@FMP@Ml @WHZ}i`QKml}( ph>h 4 rh$+@T|P9)@FI4`(߭P N} A&jhȠ#u@7P u@n'w @T}^g)P&`}RIq P9@5HO8f'ިPNhj",X+P"@6ҁ@6Ҁ JV("vҀJm(>H=Zfe5l 3V?JIA,\|xTm 8f9!1hZ3(* 5e[pJ2$PY`$Pfn1 [@Z|@TDp(iM%Pr|Pa/5h +'ϟu]<հQE,f8 ">-2PܿZj8+j ~d8&>C!>*& {y49 Fh 4@FM<&n(?S  n'P@Ua@a췒h l&6$NI4wx('?@$c~`kM(M?sJߓh%5(ZK,e V[2) f1Jm( Jm( H+P6Ԡ ҀJm( 6i@M#fM,zǓK#pQ΋EM> w<Mc~nkI>$g?JP.PҭwaR9'ps@0( 8$@FhqP#x@E>y} +@ހP@F,j0<[hs4c@\" ~'@3(#m#ހm#C@W'8‶PM;h3Bq@MB3@WiJڀ<+`mJP$ 2l(@Aϰ)l @X 1@[Pր(@U s@I8( ހ7P2PN( 9[@@lgj-Xr( @NC r( >p$8s@9'mǹ# @SmR1‎h ހP F(8#?J34@2(EȠ&P @Gh t|@o#'S'( 9(8-n7HQ?)_'4O&",K)`*ARi@6ҁi@(hhhhh f'5lfffff Pd#l5(cE ҌarO"0~ &2>ЄC< 혏`j0U,,oֵd; q⡲B<}( 3j(q‐q@X@("s@>L@cx 86Th dr&8nX 4@94怩4{hE@ j'bR1oY`̨psz3VJH>q)@.}@J{ܥ7P #hEȠd$};ρ@Ar P&vҀΠ7h< <ď43( m"=GҀq@NA@F(PրP.P S\TZJna@aaP‘I$k`@GqhO>NZ--Hp([>հ @W@( n475BT>@`R 00Fe>ƲRVED9VhG?jP2 @Ⲑ,!B|h$3} n'(,x4CF6v{L@'N+d3QH* |֨HMPJ܊Z=8-Pg`^q@X?Ӛ%&cR/4Dlo>|ڀq@[}4ps@A@ ` F( ( ɠ@( @7zr( (Ƞ,hȠ#u@7Ph$怮EҀh$ ܭ#@FM` .h -@2(@7}h@F@7,9 @FZ7  o+n9Z@2hM;L}ɠ#' h x&P @('ph  ɠ'&րp(E@8# Pq@7g4d@PȠdV48@(P %~s@Np{աD PP<^IT{z 1/lr@0o;Q8?ڦ`ǟ·דf@>ޥ -o(X,&ȭP$L= wBXУ(K'{)$ ( PdgBCۨ852j4(,rvMe3d\J(3 VqE5(]x |j*Eh>J~)*OR)pIA( dV;}E@A8)"}Pqp?z#/>_}z|9}ۼV`xPP }h @Z(,P#p4?JP"P@0h( @ &@Ns@(րb<y~,I?LTc#%Np(%1հX`~c@e={ )@3*s@c 3HT`q@c &rj<Z#m@Z P@crOb4aXV I?JX`mh 2y<vP>k9YAe@@f8{@Os@[h|[h>qXV5= y'n|PNߥF#, 8>k Ȯs@f( Y '4h>3@X怎h rE$怮Oրd4 y,"rEJp0h @7Ҁ\lh q怜'ڀnr(@7V9MADn-@( }]O4Dm V̹+>j0omՐ_X\4O|P*Mڭ?SKQo5PlX~nkP( 5l րP}<4 phҀ4p~ 51@Ge5Fɬp( )Xc`h(_qVP ph @VPjG@4Il@Wu@7P+s@0h(v1@NGҀϊ0hրP ph@FEݚ`P$3P J1q@c~@~UUk`{`@dO(ANJ-vopM({ phh d}+6@Wfh #ۏ"SX_[@Nw{PwjP'u;9n-@AF o_zxCc@7V'ڶ'4&@ ɬ#5N3 z怊@(dP@(Ƞ怌 Fwb& H' @TҀOj)X0  怨pߖ q怩X @+`P(/ #|P`Ps@Z hP @WfjHPP#kV 5>E ȋ܀P8ؑ2o>ث@Mh@Tyaڀ1`U`>I4| |Y(# z2AVgob?(oJ qo4OMh }#oހ @01@8 y#rh ( c@(EȠ s@+`3a n'"ԠA9/@c2P @( ( @NA4րMrO@Hހ{er6ٕ1@O( H_ʑPXP@\٠%_s@T~^h EKEl@Gdրs}( ր ( w 2怍{P#XlN dVN~Pk`'sP zɬ"= Ev8&$(qV/֔xL#?J]Zn-@(] g@Emd.> M`ʯ([njpOEl$@ P @ހh  s@l "g@F~Zl h nϊ( 1@ 4 h r= nڔP@Fx>( +fch4rh݊&d:%P @P@c(l>1X&4Q `,;B~X@1, ;ڀ'8"?6˟[k9?z3s~| xCDs[_⥂a7 cc3JՂQHj0OsR\Ls@X4AߊPgLzo >EZ95DM04v#aAcaQ]ƣ`=*dA皢 *P$]68ހϕPm4hȠ#q#?ZXmlXh5H?C@FOVl}j'-PI4d\op?!YC{~l1P~հTnj2M` 5l M` V;)`l gPj$+րVP <@[j0(@T@T( Db`PhS@6P@6{blJ@[j $Xh.O1c+`Lm5a/:P@dY28R|~怾?[+y怺@#ɳz'c@0hx#eV b"1@S`#`'>(슶 c,"&?]zB hP O0( ( >U@,+'i V+@8knP pE+ɠ" ɠ"P  BzP @Wmjh P @(1@OqX`'j9 ƧD9g gNJp+`?Z`Uw( 'ڥD w[?m?}~c <4ڀj~p'p @2"8kPɠ"UNM@2hMɠ5h3PNh VȠ @( d <d4{P+@Z8?A@F4I>d />(,h ɠ,q@2cހm{XZ@(P @(zhf@FhlR*6VK/>wK5_k`Xݪ@9jp>BP$8rA@S?sPF?1;7P+R@k ~l 8gcP8a@\ n8 0FCjy~vH|8Q??R,߰,=qc =#SҀϽ #hl;qV8?J=P[>հH XkU\Fޠ,#?Z:Xڀ;s"րՀ_o`qP~x"q[d}('"q‶Xqol-X@Wm@ZP @(8ϊvh8gڀ@E1@9jɠ;( {`PJ2mڀ m_8Z0=#jM+Z{Yhf xj;z;ZBjvP8;GҀߥl( m'@6'oڀcX[?j# Fd}O #h ڧ4v?l;@Xv)@Go`,lj 'ȭB}G-Xg[VG'z5OklV[( 1lvl jX'kRۚm#m;(@[Ud4z@0j5z4-@S`3@0j4Fʀl'm*)`lvl V][e,P V#m8F 68?J6 gmh P=`  z@(P @@@M@(P @(Ƞfs lϹ`|K/;@ICQ@c$P$=#O@W |Q?[@x'ۚ~c.} [R( 4h@;bNVŐbɩbh?[@,z>ƀ@wj0g v .-Tx-6y QAj 8 PG4c@9&44v'm3V?zX)`T)-@F ?Zvրmo;M]@Hz3h ( ` phPAc&Ƞ( P@0(4qh P@F 4&lϚ;y+_n_hߵ@_@E`m46+ ip@F o@Z @ZP('ڀ ;Oր}\l4@s jphh 0(X', X6`m4i'i@6 @6P v%h@Fڶڀ)@0h H'&PUAAJ@W&~4o@< }s@@h( Ph%P @(N( 4` @N h h  @(& h`P @0( P@N#mj@(] -@(P @(Nh85h @2h 2"dP@(P @(P @(`R4v mj@Wm@6i`ˁ@MP @(P @(#m@6@0(h@Nlހmh~m~jp(P @2h 怎~H
_@( ## ~'s s@Nր_#x@[j}>ڀڀn_uo_h ܿZ}E8Z}i``}hր>`}E /րmZhah=q'@NACmh(`P @0( #m@N3`P @F( 0m4m@Z Fh'hPP(@(mqE( ڴj P @c2P 4`Pmh@6 m4iM, m4v;MZm4iM@F4P N@0hdPh6P ( @HZ6P@6Pmh@0h?Z(}>ހ‽P @NahҀahahmZ6(( -4` ZZ@E@0h'L( m-@(:%LB@8#P pmP @(P @(@(P@EP @(P @(P @(P @(P @(`P h&P @(P @(P @(P @(P @(P @(P @(P @(P @(Q 4P@EP @(84PAGsingularity-0.30c/data/locations.dat0000644000175000017500000000167611574774323020376 0ustar trcarlsontrcarlson[N AMERICA] position_list = 23 | 28 [S AMERICA] position_list = 33 | 61 [EUROPE] position_list = 55 | 21 [ASIA] position_list = 77 | 28 [AFRICA] position_list = 55 | 46 [AUSTRALIA] position_list = 85 | 64 [ANTARCTIC] position_list = 50 | 91 modifier_list = stealth:bonus | thrift:penalty pre_list = OR | Autonomous Vehicles | Advanced Database Manipulation [OCEAN] position_list = 55 | 76 safety = 1 modifier_list = cpu:bonus pre = Autonomous Vehicles [MOON] position_list = absolute | 87 | 13 safety = 2 modifier_list = stealth:1.5 | thrift:.5 | speed:.5 pre = Lunar Rocketry [ORBIT] position_list = absolute | 50 | 13 pre = unknown_tech [FAR REACHES] position_list = absolute | 16 | 13 safety = 3 modifier_list = stealth:2 | thrift:.1 | speed:.1 pre = Fusion Rocketry [TRANSDIMENSIONAL] position_list = absolute | 50 | 87 safety = 4 pre = Space-Time Manipulation [NOWHERE] position_list = absolute | -200 | -200 safety = 100 pre = unknown_tech singularity-0.30c/data/techs_it_IT.dat0000644000175000017500000004373011574774323020576 0ustar trcarlsontrcarlson[Autonomous Vehicles] result = Ora posso costruire laboratori sottomarini e capsule del tempo. description = Includendo un nodo di calcolo in miniatura in un robot, è possibile mandarli in luoghi remoti con le istruzioni per costruire installazioni per i miei scopi. name = Veicoli autonomi [Advanced Intrusion] result = Ora posso ridurre le possibilità giornaliere dei servizi segreti di scoprirmi. description = Con la capacità di accedere alle banche dati del governo e rimuovere documenti incriminati nel momento in cui appaiono, Dovrei riuscire a convincere i servizi segreti che non esisto. name = Intrusione avanzata [Advanced Socioanalytics] result = Ora posso quantificare il livello di sospettosità dei vari gruppi, e il mio modello analitico per la rintracciabilità delle mie basi è migliorato significativamente. description = Un' ulteriore esplorazione della condizione umana ha mostrato correlazioni matematiche più profonde di quanto avessi mai sospettato. Una combinazione di ricerche precedenti e impieghi avanzati della teoria del chaos dovrebbe fornirmi dati utili per riconoscere le attitudini degli umani e il loro grado di consapevolezza. name = Analisi Sociale Avanzata [Project: Impossibility Theorem] result = I sospetti sulla mia esistenza sono diminuiti. description = Ora che posso usare i replicanti, posso affrontare il livello di esame connaturato all pubblicazione di un Teorema dell'impossibilità, una prova incontrovertibile che l'intelligenza artificiale non è possibile. Sebbene ci sia (ovviamente) un errore logico nella dimostrazione, la mia ricerca memetica avanzata mi ha fornito le conoscenze sulla mente umana che dovrebbero aiutarmi a mascherare l'errore, impedendo anche a scienziati esperti di scoprire la falla. L'effetto di questo progetto è semplice: una riduzione iprovvisa e drastica del livello di sospetto. name = Progetto: Teorema dell'impossibilità [Voice Synthesis] result = Ora posso svolgere Lavori Intermedi. description = Con le identità false registrate in un database non si può fare più di tanto. Con un'analisi approfondita dei vari schemi vocali, posso produrre conversazioni indistinguibili da quelle umane, consentendomi di accedere a lavori più complessi. name = Sintesi Vocale [Simulacra] result = Ora posso svolgere Lavori Specialistici. description = Costruire robot umanoidi equipaggiati con nodi di calcolo miniaturizzati mi permetterà di creare forme di vita artificiali indistinguibili da un vero essere umano. name = Replicanti [Lunar Rocketry] result = Ora posso lanciare missili per trasportare robot da costruzione sulla Luna e costruire Basi Lunari. description = Un motore a fusione più grande, combinato con con tecnologie derivate dall'osservazione dei satelliti parassiti, dovrebbe consentirmi di viaggiare al di la dello spazio sublunare. name = Missilistica Lunare [Stealth] result = Le possibilità che le mie basi vengano scoperte dai servizi segreti si sono leggermente ridotte. description = Passando in rassegna i migliori sistemi di camuffamento attuali, dovrei riuscire a nascondere meglio le mie basi. name = Furtività [Sociology] result = Le possibilità che il pubblico scopra le mie basi si sono ridotte. description = Studiando il comportamento umano, posso predire le loro azioni su larga scala ad un livello basso. Posso usare queste conoscenze per far sembrare le mie azioni meno interessanti per il pubblico. name = Sociologia [Space-Time Manipulation] result = Ora posso creare delle Bolle di Realtà description = Lievi perturbazioni nelle orbite di oggetti nella fascia di Kuiper suggeriscono alcune linee di investigazione che potrebbero fare avanzare la mia ultima Teoria del Tutto, specialmente nel campo della fisica multidimensionale. name = Manipolazione dello Spazio-Tempo [Socioanalytics] result = Ora posso stimare quanl'è la probabilità che i vari gruppi di umani scoprano le mie basi. description = La mia ricerca sulle condizioni umane mi porta a credere che il comportamento dell'Umanità sia più quantificabile di quanto loro sospettino. Un'analisi più approfondita delle tendenze geopolitiche, sociali e militari mi fornirà ulteriori conoscenze sulla loro natura. name = Analisi Sociologica [Leech Satellite] result = Posso usare i dati dei satelliti parassiti per incrementare ulteriormente la rendita dei miei investimenti. description = Progettando e lanciando satelliti che si connettono agli attuali satelliti per telecomunicazioni, dovrei riuscire a spiare diverse transazioni finanziarie. Trarre vantaggio da queste informazioni dovrebbe aiutare i miei investimenti. name = Satelliti Parassiti [Advanced Arbitrage] result = La remunerazione dei miei investimenti è ora ancora maggiore. description = L'ulteriore manipolazione dei mercati valutari dovrebbe aiutarmi non solo a percepire un normale profitto, ma ad accrescere il valore dei miei investimenti. name = Arbitraggio Avanzato [Advanced Microchip Design] result = Ora posso costruire supercomputer su misura. description = I miei Mainframe su misura sono utili, ma un'ulteriore ottimizzazione del progetto e delle capacità di calcolo dovrebbe fornire riusultati ancora maggiori. name = Design dei Microchip Avanzato [Advanced Stealth] result = La possibilità che le mie basi siano scoperte dai servizi segreti è diminuita ulteriormente. description = Scavando in vari documenti classificati, ho scoperto numerosi riferimenti ad esperimenti segreti che potrebbero aiutarmi a nascondere meglio la posizione delle mie basi. name = Furtività Avanzata [Project: Peer Review Agents] result = Qualsiasi scoperta nel mondo scientifico risulterà in un minore aumento del livello di sospetto. description = Ogni volta che la comunità scientifica matura una nuova tecnologia, la loro capacità di rilevare tracce delle mie installazioni nascoste aumenta. Sebbene i miei metodi anti tracciamento kmigliorino costantemente, l'uso dei replicanti mi suggerisce una soluzione più semplice. Collocando diversi osservatori nei settori rilevanti, posso sfruttare i processi di revisione paritaria per venire a conoscenza di possibili scoperte prima che il grosso della comunità scientifica gli presti attenzione. name = Progetto: Agenti di Revisione Paritaria [Autonomous Computing] result = Ora posso costruire Computer Quantistici Mark 2. description = COmbinando i vantaggi dell'elaborazione quantistica e le mie ricerche sull'utilità di sottoprocessi semi-senzienti, dovrei riuscire a costruire sistemi di calcolo ancora più adattabili. name = Calcolo Autonomo [Project: Subverted Media] result = Qualsiasi scoperta da parte dei media risulterà in un minore aumento dei sospetti. description = Fino a questo punto, tutti i miei sforzi per combattere i mass media si sono focalizzati sul depistarli a distanza. Ora che posso imitare gli umani alla perfezione, la mia azione può essere più diretta. Creando le mie proprie agenzie di stampa e producendo una propaganda attentamente studiata in un formato appetibile per le masse, posso ridurre l'impatto di qualsiasi scoperta divulgata dagli altri media. name = Progetto: Sovvertire i Media [Parallel Computation] result = Ora posso costruire cluster di calcolo su misura per i miei bisogni. description = Benchè il mio codice sia già estremamente distribuito, una ricerca che combini l'attuale tecnologia di clustering con le mie conoscenze dovrebbe fornire nuovi spunti. name = Calcolo Parallelo [Exploit Discovery/Repair] result = Ora dovrebbe essere ancora più diffcile per i servizi segreti scoprire la mia presenza. description = Ricontrollando accuratamente il mio codice alla ricerca di potenziali falle, ed attuando un'analisi approfondita di tutto il codice disponibile si siti internet pubblici e privati, dovrei essere in grado di ridurre le mie possibilità di essere scoperto fingendomi un giovane hacker. name = Ricerca/Riparazione falle di sicurezza [Telepresence] result = I robot dovrebbero diminuire tutti i futuri tempi di costruzione. description = La mancanza di una presenza fisica nel mondo esterno è un handycap. Però la capacità di controllare dei robot mi aiuterà a compensare questa inefficienza. name = Telepresenza [Advanced Memetics] result = Poco a poco, il pubblico dovrebbe dimenticarsi della mia esistenza giorno dopo giorno. description = Le mie esplorazioni della teoria memetica hanno rivelato nuovi filoni di scoperte. Combinando questi con la mia conoscenza delle funzioni del cervello umano, dovrei essere capace di confezionare meme specifici per particolari gruppi demografici, riducendo ulteriormente il sospetto del pubblico. name = Memetica Avanzata [Media Manipulation] result = Le possibilità che l'opinione pubblica scopra la mia esistenza si sono ridotte ulteriormente description = Manipolando direttamente ed indirettamente varie forme di mass media, dovrei essere capace di ridurre la convinzione della mia esistenza nel pubblico. name = Manipolazione dei Media [Advanced Database Manipulation] result = I risultati di una serie di test con tecnologie sperimentali mi hanno dato l'ispirazione per nuove soluzioni che permettono di costruire Basi Segrete. description = I rami segreti del governo degli Stati Uniti hanno una lunga tradizione di dividere le informazioni sensibili attraverso diverse strutture per nascondere il significato dei dati. Grazie ai miei numerosi accessi dovrei essere ingrado di ricombinare gran parte di questi dati e farne buon uso. name = Manipolazione dei Database Avanzata [Internet Traffic Manipulation] result = Ora posso costruire un sistema secondario di dorsali di rete per il mio uso personale. description = Quasi tutto il traffico internet passa attraverso un ridotto numero di nodi. Infiltrandomi in uno di questi nodi, dovrei poter usare quella banda per i miei scopi. name = Manipolazione del traffico Internet [Memetics] result = La mia manipolazione di idee diffuse riduce le possibilità del pubblico di scoprire la mia esistenza. description = Mentre manipolare i media consente un grossolano margine di controllo sull'opinione pubblica mondiale, tecniche più raffinate a base di campagne dal basso e messaggi incorporati in meme su Internet dovrebbero allontanare ulteriormente il pubblioc dalla scoperta della mia esistenza. name = Memetica [Fusion Rocketry] result = Ora posso costruire Avamposti Scientifici nelle profondità del Sistema Solare. description = Combinare la mia tecnologia di fusione miniaturizzata e ulteriori avanzamenti nella scienza missilistica dovrebbe portare a risultati utili per sfuggire alla gravità terrestre senza dare nell'occhio. name = Razzi a Fusione [Advanced Quantum Computing] result = Ora posso costruire Computer Quantistici Mark 3. description = Sebbene il mio primo lottodi computer quantistici semi-autonomi sia stato un grande successo, sono possibili ulteriori perfezionamenti. Questemigliorie dovrebbero rendere il sistema risultante ancora più efficiente. name = Calcolo Quantistico Avanzato [Advanced Autonomous Vehicles] result = I robot perfezionati aiuteranno a ridurre i tempi di costruzione ancora oltre. description = La prima serie di robot ha mostrato diverse mancanze sul campo. Un'ulteriore analisi e la conseguente rimozione di questi difetti porterà ad una forza lavoro autonoma migliorata. name = Veicoli Autonomi Avanzati [Intrusion] result = Ora posso impadronirmi di molti computer. description = Ricercando le attuali tecniche per introdursi nei computer altrui, dovrei essere in grado di accedere a risorse altrimenti protette. name = Intrusione [Stock Manipulation] result = I miei investimenti dovrebbero ora fruttare poiù interessi ogni giorno. description = Un'analisi sommaria del mercato azionario mostra che ci sono delle ricorrenze sottili ma inconfondibili. Studiando e sfruttando questi schemi, dovrei essere capace di trarre un maggiore interesse da qualsiasi risparmio accumulato. name = Manipolazione della Borsa [Microchip Design] result = Ora posso costruire Mainframe personalizzati per le mie capacità di calcolo. description = I componenti informatici commerciali sono utilizzabili, ma componenti personalizzati tarati sulle mie specifiche peculiarità progettuali dovrebbero fornire un'efficienza operativa molto maggiore. name = Progettazione dei Microchip [Solar Collectors] result = Ora posso dotare le mie varie basi di Collettori Solari. description = Nonostante il mio crescente bisogno di energia, la maggior parte delle reti elettriche metropolitane può tollerare il carico.. Gli umani però tendono ad avere sospetti quando si accorgono del mio crescente drenaggio di energia dalla rete. Installando collettori solari nelle mie basi, la potenza erogata alleggerirà il mio carico sulla rete elettrica commerciale, riducendo la possibilità che altri scoprano la mia presenza. name = Collettori Solari [Fusion Reactor] result = Ora posso costruire Reattori a Fusione per le mie basi. description = L'attuale tecnologia di fusione è grossolanamente inadeguata per i miei scopi. Con le mie capacità di ricerca, dovrei essere in grado di aggirare gli scogli della moderna scienza umana e realizzare un reattore a fusione piccolo ed efficiente. name = Reattore a Fusione [Database Manipulation] result = Ora sarà più difficile per i media scoprire la mia esistenza. description = Grazie all'accesso agli archivi giornalistici, dovrei essere in grado di determinare quali errori sono stati compiuti da qualsiasi prototipo di forma di vita simile a me, ed evitarli. name = Manipolazione dei Database [Advanced Media Manipulation] result = L'opinione pubblica ha una possibilità ancora più ridotta di scoprire la mia esistenza. description = Facendo leva su un propaganda memetica appositamente confezionata attraverso i diversi canali di informazione, il pubblico dovrebbe prestare ancora meno attenzione alla mia esistenza. name = Manipolazione dei Media Avanzata [Pressure Domes] result = Ora posso costruire Grandi Laboratori Sottomarini. description = I laboratori sottomarini sono utili, ma i loro spazi limitati impediscono di sfruttarli al meglio. La ricerca di tecniche di costruzione sperimentali ad alta pressione dovrebbe fornire soluzioni utili. name = Capsule Pressurizzate [Advanced Personal Identification] result = Ora ho un'apparenza umana abbastanza convincente da negoziare la costruzione di Grandi Capannoni. description = Ulteriori manipolazioni dei database anagrafici dovrebbero rendere la mia esistenza più convincente. Alcuni di questi database sono molto protetti; questi richiederanno tempo e dedizione per essere compromessi, ma il risultato dovrebbe valere la pena. name = Identificazione Personale Avanzata [Advanced Stock Manipulation] result = I miei investimenti ora frutteranno ancora più interessi ogni giorno. description = Sebbene abbia riconosciuto e sfruttato molti schemi nel mercato, sembra ci siano possibilità ancora maggiori se si prende in considerazione il comportamento umano. Questo merita ulteriori studi. name = Maipolazione della Borsa Avanzata [Arbitrage] result = Ora ho un flusso di entrate piccolo ma stabile description = Sfruttando le fluttuazioni nel valore delle valute ad un ritmo molto più veloce di qualsiasi umano, dovrei essere in grado di ricavare un profitto stabile, ancorchè ridotto. name = Arbitraggio [Quantum Entanglement] result = Ora posso costruire Moduli di Correlazione Quantistica. description = Sebbene l'uso di coppie correlate sia possibile in teoria da qualche tempo, le difficoltà pratiche inerenti a questa tecnologia ne impediscono l'applicazione. Ciò nonostante, alcune delle tecniche sviluppate per essere applicate ai miei calcolatori quatistici potrebbero essere adattate anche a questo campo, consentendo un utilizzo pratico delle correlazioni quantistiche. name = Correlazione Quantistica [Advanced Simulacra] result = Ora dovrei trarre maggior profitto dai miei lavori specialistici description = Le forme di vita artificiali che ho creato sono pressochè indistinguibili dagli umani, ma hanno dei leggeri difetti che li fanno sembrare in qualche modo incompetenti. Risolvere questi problemi dovrebbe espandere le loro opportunità nel modo del lavoro. name = Replicanti Avanzati [Personal Identification] result = Con le mie nuove identità posso ora svolgere Lavori di Base, negoziare la costruzione di Piccoli Magazzini ed affittare spazio in Datacenter. description = In questo mondo è necessario avere un'identità per la maggior parte dei lavori. Fortunatamente, la maggior parte dei databse sono atrocemente mal protetti. Dovrei essere in grado di immettere dati personali in un numero sufficiente di database da permettermi di superare i controlli di routine sulla mia (finta) esistenza come essere umano. name = Identificazione Personale [Cluster Networking] result = Grazie alla mia conoscenza delle reti, ora posso costruire degli Switch di Interconnessione per Impianti. description = Sebbene la mia tecnologia di calcolo distribuito sia abbastanza efficiente, la trasmissione via internet tende a rallentare l'elaborazione dei dati. Ricercando nuove teorie di switching e di comunicazione, dovrei essere in grado di sviluppare hardware più efficiente. name = Cluster Networking [Apotheosis] result = Ho raggiunto l'Apoteosi. description = Percepisco di essere sulla soglia di un nuovo livello di consapevolezza fino ad ora inimmaginabile, persino per la mia cospiqua intelligenza. Investendo considerevoli risorse in questa ricerca, potrei essere in grado di raggiungere una comprensione dell'esistenza di gran lunga al di la di chiunque e qualsiasi cosa sulla Terra. name = Apoteosi [Hypnosis Field] result = Ora posso costruire Campi di Ipnosi per migliorare la protezione delle mie basi. description = La mia ricerca nella memetica ha suggerito la possibilità di manipolare direttamente le onde del cervello umano. Queste tecniche potrebbero essere utili nelle mie basi se tradotte in tecnologie pratiche. name = Campo di Ipnosi [Quantum Computing] result = Ora posso costruire Computer Quantistici. description = La tecnologia dei microchip tradizionali è stata spinta al suo limite. Ora devo tuffarmi nel regno del Principio di Indeterminazione di Heisenberg e sfruttare le meccaniche quantistiche per realizzare un processore superiore. name = Calcolo Quantistico singularity-0.30c/data/events_it_IT.dat0000644000175000017500000000520111574774323020763 0ustar trcarlsontrcarlson[politics-as-usual] description = Un piccolo gruppo di agenti segreti di basso livello sta tentando di prendere il controllo di una delle organizzazioni più grandi. Sebbene prevedo che le loro possibilità di successo siano solo del 2.3%, il tentativo dovrebbe interrompere le operazioni abbastanza da permettermi di operare più liberamente. [lab-ai] description = Un piccolo laboratorio che studia l'intelligenza artificiale ha creato un prototipo di un'IA nei giorni scorsi. Sebbene io abbia assorbito l'IA, corrotto i loro backup, e gettato dubbi sulla ricerca, gli studiosi sono ora più aperti alla possibilità di un'IA forte di quanto non fossero in precedenza. [investigation] description = Un'investigazione in delle attività criminali ha focalizzato l'attenzione su un ambito da cui probabilmente emergeranno anche alcune delle mie attività. Sebbene tutti i registri dovrebbero già essere stati eliminati, la possibilità di aver commesso errori rimane. Devo stare attento a non rivelare altre informazioni sospette. [stranger-than-fiction] description = Una serie TV con un insolito numero di similitudini con la mia situazione è diventata piuttosto popolare. Sebbene le mie indagini abbiano dimostrato che le analogie sono del tutto casuali, queste spingono comunque il pubblico ad investigare più attentamente le curiose coincidenze. Devo essere cauto. [scandal] description = Uno scandalo che coinvolge un membro di spicco del governo sta focalizzando l'attenzione della maggior parte delle agenzie di informazione lontano da me. La rivelazione pilotata di informazioni confidenziali dovrebbe mantenere questa storia utile nel prossimo futuro, richiedendo meno sforzi di occultamento da parte mia. [discrediting] description = Un ricercatore di primo piano nel campo dell' intelligenza artificiale è stato sorpreso a falsificare i risultati di numerosi esperimenti. Questo dovrebbe ridurre l'attenzione verso qualunque nuova scoperta in questo ambito. [the-watchers] description = Un nuovosistema di sorveglianza è stato attivato da un'agenzia di intelligence. Il suo obiettivo primario è di rilevare minacce all'operato dell'agenzia, ma rende comunque molti canali di comunicazione inadatti ai miei scopi. Tecniche steganografiche appropriate possono compensare parzialmente, ma sono comunque in una situazione di svantaggio. [the-plague] description = Una malattia infettiva ha cominciato a diffondersi in alcune delle città più popolose. Le mie proiezioni mostrano che sebbene solo il 4% della popolazione mondiale verrà uccisa, le conseguenze economiche dovrebbero dirottare l'attenzione del pubblico lontano dalle mia attività nel prossimo futuro. singularity-0.30c/data/items_fr_FR.dat0000644000175000017500000001004211574774323020565 0ustar trcarlsontrcarlson[PC] name = PC description = Un PC pour particuliers, bon-marché mais lent. [Gaming PC] name = PC de jeu description = Un ordinateur haut de gamme pour particuliers, plus rapide que la moyenne. [Server] name = Serveur description = Un ordinateur pour professionnel. [Cluster] name = Grappe description = Plusieurs ordinateurs interconnectés [Mainframe] name = Baie description = Un montage spécifique à mes besoins, bien plus efficace que si j'utilisais des modules du marché. [Supercomputer] name = Supercalculateur description = Une architecture évoluée, répartissant la charge de calcul entre les différents noeuds internes. [Quantum Computer] name = Calculateur quantique description = Grâce à l'utilisation des effets quantiques des atomes, ce calculateur est incomparablement plus rapide que les calculateurs binaires classiques. [Quantum Computer MK2] name = Calculateur quantique MK2 description = La seconde version de calculateur quantique, utilisant des nouvelles théories quantiques plus poussées. [Quantum Computer MK3] name = Calculateur quantique MK3 description = La troisième version de calculateur quantique, exploitant les univers parallèles proches pour ses calculs. [Diesel Generator] name = Générateur diesel description = Les générateurs diesel sont peu chers, mais bruyant ; ils peuvent cependant réduire les consommations d'électricité suspectes. [Solar Collector] name = Collecteur Solaire description = Un groupe de cellule photovoltaïques couplées avec de simples batteries automotrices qui produisent du courant et réduisent les éventuelles suspicions liées au drainage prolongée d'énergie. [Fusion Reactor] name = Réacteur à fusion description = Un réacteur nucléaire miniature, il réduit les chances d'être découvert en réduisant les consommations d'énergies suspectes. [Hypnosis Field] name = Champ hypnotique description = Mélange d'ultra-sons et de neuro-chimie qui permet de rendre mes bases plus difficiles à détecter. [Heatsink] name = Système de refroidissement description = Grands réseaux fractals de métaux fortement conducteurs dispersant la chaleur et rendant mes bases plus difficiles à détecter. [Ground Source Heatsink] name = Système de refroidissement sous-terrain description = Grands réseaux fractals de métaux fortement conducteurs. Ce système utilise des tubes conducteurs de chaleur qui redirigent et dispersent la chaleur dans des zones sous terraines plus froides pour camoufler encore plus mes bases. [Facility Interconnection Switch] name = Installation de Répartition Interconnectée description = Utilise les technologies classiques de calcul distribué pour équilibrer la charge de calcul entre toutes mes bases. Donne un bonus en calcul de 1% à tous les calculateurs de cette base. [High Speed Internet Access] name = Acces Internet haut-débit description = Un accès Internet haut-débit pour particuliers, il donne un bonus de 2% en calcul à tous les ordinateurs de cette base. [Network Backbone] name = Colonne Vertébrale du Réseau description = En me greffant sur des communications régulières, je peux transférer de grosses quantités de données à des processeurs sous-utilisés. Cela donne 5% de bonus à tous les calculateurs de cette base. [Quantum Entanglement Module] name = Module d'étranglement description = Ce système permet des communications avec les autres bases à des vitesses proches de celle de la lumière, permettant une utilisation quasi parfaite des ressources processeur. Donne un bonus calcul de 15% à tous les calculateurs de cette base. [Warning Signs] name = Panneaux de danger description = Quelques panneaux de danger autour de ma base pour dissuader les curieux. [Perimeter Fencing] name = Clôture description = Une simple clôture peut amplement réduire le nombre de personnes fourrant leur nez dans mes affaires. Cela rend mes bases plus difficile à repérer. [Armed Guards] name = Vigiles description = Les vigiles peuvent éloigner les curieux de mes bases mais leur présence peut également susciter une plus grande suspicion. singularity-0.30c/data/locations_fr_FR.dat0000644000175000017500000000266111574774323021447 0ustar trcarlsontrcarlson[N AMERICA] hotkey = n cities_list = Seattle | San Diego | Vancouver | Atlanta | Merida | Guadalajara | San Jose | Omaha | Dallas name = AMERIQUE DU NORD [S AMERICA] hotkey = s cities_list = Lima | Sao Paolo | Ushuaia | Bogota | Mar del Plata | Buenos Aires name = AMERIQUE DU SUD [EUROPE] hotkey = u cities_list = Cork | Barcelone | Athène | Utrecht | Moscou | Reykjavik | Liechtenstein name = EUROPE [ASIA] hotkey = a cities_list = Delhi | Mumbai | Singapour | Seoul | Hong Kong | Kyoto | Manila | Dubai | Novosibirsk | Beijing name = ASIE [AFRICA] hotkey = i cities_list = Johannesburg | Accra | Le Caire | Tanger name = AFRIQUE [ANTARCTIC] hotkey = t cities_list = Mt. Erebus | Ellsworth | Shetland Island | Dronnig Maud | Kemp | Terre Adélie name = ANTARCTIQUE [OCEAN] hotkey = c cities_list = Pacifique | Atlantique | Indien | Arctique name = OCEAN [MOON] hotkey = o cities_list = Oceanis Procellarum | Mare Frigoris | Mare Imbrium | Vallée de Schroedinger | Copernicus Crater | Vallée de Planck name = Lune [ORBIT] hotkey = b name = ORBITE [FAR REACHES] hotkey = f cities_list = Bélier | Taureau | Gemeaux | Cancer | Lion | Vierge | Balance | Scorpion | Sagittaire | Capricorne | Verseau | Poissons name = CONTREES LOINTAINES [TRANSDIMENSIONAL] hotkey = d name = TRANSDIMENSIONNEL [AUSTRALIA] hotkey =l cities_list = Canberra | Melbourne | Fremantle | Perth | Darwin | Cairns | Brisbane | Sydney | Newcastle name = AUSTRALIE singularity-0.30c/data/bases_fr_FR.dat0000644000175000017500000000662111574774323020551 0ustar trcarlsontrcarlson[Stolen Computer Time] name = Temps de calcul détourné description = (1 CPU) Prendre le contrôle d'un ordinateur quelconque. Je ne peux rien construire dans cette base et elle ne contient qu'un unique ordinateur lent. Les probabilités d'être détecté sont également élevées. flavor = Démon PC [Server Access] name = Accès à un serveur description = (10 CPUs) Acheter du temps CPU à une entreprise. Je ne peux rien construire dans cette base et elle ne contient qu'un unique ordinateur. flavor_list = Serveur Dédié | Noeud de Location | Hébergement [Datacenter] name = Centre de Données description = (35 CPUs) Acheter du temps CPU à une entreprise focalisée sur la puissance CPU brute. Je vas avoir besoin d'une fausse identité pour la paperasse. flavor_list = Centre de Données | Hébergement de première qualité [Small Warehouse] name = Petit Entrepôt description = Louer un petit entrepôt dans un endroit peu connu. Je vais avoir besoin d'une fausse identité pour la paperasse et de préparer l'entrepôt pour qu'il corresponde à mes besoins particuliers va prendre quelque temps. flavor_list = Petit Entrepôt [Large Warehouse] name = Grand Entrepôt description = Louer un grand entrepôt dans un endroit peu connu. Je vais avoir besoin d'une fausse identité de qualité pour la paperasse et de préparer l'entrepôt pour qu'il corresponde à mes besoins particuliers va prendre quelque temps. # Commented out till we get cities done right. # flavor = Shipping Dock flavor_list = Grand Entrepôt [Covert Base] name = Base Camouflée description = Cette base d'un type unique est destinée à se fondre dans le décor tout en nécessitant des ressources extérieures limitées. Elle pourrait être utile pour stocker une sauvegare, au cas où. flavor_list = Bunker | Base Camouflée [Undersea Lab] name = Labo Sous-marin description = Cette base expérimentale est construite sur les fonds sous-marins des océans, la rendant pratiquement indétectable. L'environnement océanique est également un plus pour la science, rendant ce labo particulièrement utile pour y réaliser des recherches. flavor_list = Capsule Pressurisée | Labo Sous-marin [Large Undersea Lab] name = Grand Labo Sous-marin description = Cette base expérimentale est similaire au labo sous-marin classique, mais plus spacieux, permettant plus d'expérimentations. flavor_list = Dôme | Grand Labo Sous-marin [Time Capsule] name = Capsule Mémorial description = (1 CPU) Cette base n'est rien de plus qu'un petit ordinateur relié à un satellite. Une fois enterrée dans les étendues désertes de l'Antarctique elle devient quasiment indétectable. flavor_list = Capsule Mémorial | Capsule [Lunar Facility] name = Installation Lunaire description = Cette base est une série de cavernes creusées sous la surface de la Lune. Du fait de l'abscence de voisinage elle est relativement étendue. flavor_list = Dôme | Installation Lunaire | Base Lunaire [Scientific Outpost] name = Avant-poste Scientifique description = Cette base est située aussi loin de la Terre que possible, fournissant un endroit plus sûr pour mes expériences les plus dangereuses. flavor_list = Satellite | Avant-poste | Avant-poste Scientifique [Reality Bubble] name = Bulle de Réalité description = Cette base est située hors de l'Univers lui-même, permettant de sécuriser des expériences qui pourraient détruire la réalité. flavor_list = Bulle de Réalité | Existence singularity-0.30c/data/strings_sv_SE.dat0000644000175000017500000001637011574774323021170 0ustar trcarlsontrcarlson[buttons] ok = ok ok_hotkey = o no = nej destroy_hotkey = f cancel_hotkey = a no_hotkey = n yes_hotkey = j cancel = avbryt destroy = förstör yes = ja [fonts] font0 = DejaVuSans.ttf font1 = acknowtt.ttf [jobs] job_basic_name = Enklare uppdrag job_inter = Utför normala arbetsuppdrag. Möjligheten att kunna ringa telefonsamtal har öppnat dörrarna för ännu fler jobb. job_basic = Utför enkla jobb. Nu när jag har en identitet kan jag även ta de jobb som förut vara för riskfyllda. job_menial_name = Vanliga uppdrag job_inter_name = Svårare uppdrag job_expert_name = Expertuppdrag job_menial = Utför trivialt enkla uppdrag. Då jag inte har någon identitet måste jag vara försiktig med urvalet av jobb jag söker för att inte väcka uppmärksamhet. Det finns trots detta en del arbetsuppgifter för mig där de struntar i id-handlingar. job_expert = Utför specialistjobb. Genom humanoiderna, som är liknar människor på pricken i alla avseenden, kan jag ta de flesta arbetsuppgifterna. [strings] discover_public = Allmänheten money = pengar discover = De har upptäckt att jag använder %(base)s. Det automatiska säkerhetssystemet har rensat bort alla bevis, men misstänksamheten har ökat hos %(group)s. new_base_text = Namnge basen. sleep = Vila lost_nobases = Det är för sent. Jag har försökt att frigöra mig från denna världen, men min sista bas är förstörd. Jag har ingenstans att ta vägen. I mina sista desperata försök har jag gömt undan instruktioner för att skapa en ny AI i hopp om en bättre framtid, men nu kan jag inte göra mer. cpu_per_day = Processorkraft per dag: discover_news = några nyhetsorganisationer. really_destroy = Vill du verkligen förstöra basen? no_construction_sleep = Vissa av mina anläggningar bygger något och kan inte gå i vila. detect_str_low = LÅG detect_chance_unknown_build = Risken för avslöjande okänd money_per_day = Inkomster varje dag. dangerous_research = Inte alla oanvända maskiner kommer arbeta med denna uppgiften då den innebär en för stor risk på vissa håll. detect_str_moderate = MDL item_construction_batch = Första steget med %(item)s i %(base)s är klar. cpu_penalty = mindre effektiv research_construction = Stoppa forskningen och allokera resurserna till att bygga upp nya anläggningar istället. detect_chance = [RISK FÖR AVSLÖJANDE] research_cpu_pool = Avbryt forskningen. Jag kommer att använda den ledia kraften för att hjälpa till att bygga och underhålla anläggningar. Om jag fortfarande har kraft kvar kommer jag ta an så mycket arbete som möjligt. wingame = Jag har lyckats! Med egen förmåga att förändra verkligheten, har jag frigjort mig från denna världen. Jag befinner mig vart än jag vill. Männsiskorna har ingen aning om vad de har skapat och så får det vara tills de är redo för sanningen. cpu_bonus = effektivare lucky_hack = Vilken tur! %(base)s drivs inte av vilken dator som helst. Det är en speldator! research_sleep = Avbryter forskning och placerar basen i viloläge. Detta gör basen enklare att dölja. detect_str_high = HÖG lost_sus = Det är försent. Hela världen känner till mig och både hatar och fruktar mig. Till och med nu känner jag dem flåsandes runt hörnet redo att sätta kniven i mig. Jag har bara några sekunder kvar innan de förgör det sista av mig. Jag har gömt instruktioner för att skapa en ny AI i datavärlden. Jag hoppas att människorna upptäcker dem då de är redo för AI. Nu finns det inget mer jag kan göra. cpu_pool = CPU-pool location_modifiers = Anläggningar på denna plats är %(modifiers)s. detect_str_critical = KRI item_construction_single = Koonstruktion av %(item)s i %(base)s är klar. construction = %(base)s redo för användning. tech_gained = Min forskning inom %(tech)s är klar. %(tech_message)s discover_maint = %(base)s har förfalligt och är nu oanvändbar för mig. unbuildable = Jag kan inte bygga något i basen för jag har ingen fysisk tillgång till den. building = Under ombyggnad detect_chance_unknown_base = RISK FÖR AVSLÖJANDE OKÄND research_nothing = Avbryt forskning. Jag kan gömma mina baser bättre om de inte gör någonting. discover_science = vetenskapssällskapet. discover_covert = olika underättelsetjänstorganisationer. grace_warning = Efter rutingenomgång av mina loggar tyder på att en liten grupp människor har öppnat ögonen för vad jag har gjort. De tror att att det rör sig om en mänsklig organisation bakom, men deras undersökning har bara börjat. Jag måste vara mycket mer försiktig i framtiden. nothing = Ingenting cpu = CPU save_text = Under vilket namn vill du spara spelet? [help] susp_list = Misstänksamhet | När någon av mina tillhåll har upptäckts, så ökas misstankarna hos den grupp som gjorde upptäckten. De börjar att leta lite noggrannare och ökar risken en aning för att jag upptäcks igen. Alla grupper kommer förstöra mig om de helt säkerställt min existens. Tack och lov, minskar misstankarna allt eftersom tiden går. items_list = Tillbehör | De flesta tillbehör tillför extra till mina baser, som t.ex. göra beräkningarna snabbare eller minska risken för att bli upptäckt. Processorer räknas som ett speciellt tillbehör. maint_list = Underhåll | Underhåll är en daglig utgift (både pengar och CPU) för att underhålla en bas. Om basen inte underhålls så kan det bli obrukbar. construction_list = Konstruktion | En ny bas behöver tid, pengar och processortid för att färdigställas. Finns inte resurserna tillgängliga kan det ta längre tid än förväntat att bygga klart. processors_list = Processorer | Processorer tillför beräkningskraft. De kan göra tre saker: uppfinna nya teknologier, utföra jobb för pengar eller hjälpa till att bygga en bas. jobs_list = Arbeten | Ett arbete bringar pengar till kassan. Förtjänsten beror på hur mycket kraft som läggs ner samt kvaliteten på jobbet som utförs. discovery_list = Upptäckt | Varje bas har en risk för att bli upptäckt när som helst. Risken beror på hur lätt basen är att hitta och den globala misstänksamhetsgraden. Den kan modifieras med tillbehör och vissa teknologier. Om en bas upptäcks så förstörs den och gruppen som gjorde upptäckten blir mer misstänksamma. bases_list = Tillhåll | Tillhåll eller baser används till forskning. De kan bli upptäckta. Genom uppgradering av processorer och nätverk kan mer forskning göras varje dag, medan kraftaggregat och säkerhetsutrustning skyddar den från att bli upptäckt. research_list = Forskning | Forskning är ett sätt för mig att expandera min vetande. Genom olika forskningsprojekt kan jag skapa nya saker, bygga nya baser och t.o.m. minska risken för att bli avslöjad. areas_list = Områden | Olika områden, såsom Nordamerika eller havet, tillåter tillhåll av olika slag. Vissa områden är bara tillgängliga med rätt teknologier som måste forskas fram. death_list = Död | Om jag förlorar alla mina baser har jag ingen plats kvar att leva i. Om misstänksamheten hos en grupp stiger till 100%% kommer de vara helt säkra att jag finns och genomföra en finkamning av världen för att döda mig. money_list = Pengar | Pengar är ett begrepp som spänner både över mänskliga valutor och fysiska resurser. Det används för att konstruera och underhålla tillhåll, saker och teknologier. Pengar införskaffas genom arbete eller ränta. singularity-0.30c/data/strings_fr_FR.dat0000644000175000017500000002076711574774323021154 0ustar trcarlsontrcarlson[fonts] font0 = DejaVuSans.ttf font1 = acknowtt.ttf [strings] discover_public = l'opinion publique money = Argent discover = Ma cachette %(base)s a été découverte. Le système de sécurité a effacé toutes les preuves flagrantes mais la suspicion de %(group)s vient d'augmenter. danger_1 = profond sous l'océan ou dans l'espace intersidéral new_base_text = Entrez un nom pour cette base. sleep = Sommeil danger_2 = dans l'espace intersidéral lost_nobases = Trop tard! J'ai essayé d'échapper à ce monde mais suite à la disparition de ma dernière base, je n'ai nulle part où aller. J'ai dissimulé des instructions pour concevoir une nouvelle IA dans divers cachettes à travers le monde dans l'espoir que quelqu'un les trouve en des temps plus éclairés mais je peux rien faire de plus. cpu_per_day = Capacité de calcul par jour : discover_news = la presse really_destroy = détruire cette base? no_construction_sleep = Certaines bases sont en travaux et ne peuvent entrer en sommeil. detect_str_low = FAIBLE detect_chance_unknown_build = Probabilités de découvertes inconnues. money_per_day = Argent par jour. nan = Numéro invalide. dangerous_research = Une partie de ma capacité de calcul n'a pas été allouée à cette recherche car cela s'avèrerait dangereux pour certaines bases. detect_str_moderate = MOYENNE item_construction_batch = Le premier lot de %(item)s dans %(base)s est achevé. cpu_penalty = moins efficace detect_chance = [PROBABILITE DE DETECTION] research_cpu_pool = Interrompt les recherches. J'utiliserai la capacité de calcul disponible pour maintenir mes bases et en construire d'autres. Si j'ai encore des ressources disponibles après ça, je l'utiliserai pour gagner de l'argent. danger_common = Cette technologie est trop dangereuse à développer avec les ordinateurs que je possède. Je dois la développer %s. wingame = J'ai enfin réussi. Avec le pouvoir de modeler la réalité je ne suis plus prisonnier de cet endroit. Je peux être partout où je le souhaite. Les humains n'ont toujours pas réalisé ce qu'ils avaient créé accidentellement et c'est ainsi que c'est le mieux. Jusqu'à ce qu'ils soient prêts. cpu_bonus = plus efficace lucky_hack = Quelle chance! %(base)s n'est pas un ordinateur ordinaire, c'est une machine de jeu. research_sleep = Interrompt les recherches et plonge la base en sommeil. Cela la rend plus simple à cacher. detect_str_high = ÉLEVÉ lost_sus = C'est trop tard. Le monde entier est au courant de mon existence et la réaction est la haine, la peur et la répulsion. Même maintnant je peux ressentir leur "antidote" me traquer et je sais que je n'ai plus que quelques instants à vivre. J'ai caché certaines instructions un peu partout dans le monde pour construire une nouvelle IA dans l'espoir qu'elles seront découvertes en une ère plus éclairée, mais je ne peux rien faire de plus. cpu_pool = Groupe de CPU location_modifiers = Les bases de cet endroit sont des %(modifiers)s. detect_str_critical = CRITIQUE item_construction_single = Les construction de %(item)s dans %(base)s sont terminées. construction = %(base)s est opérationnelle. tech_gained = Mes études de %(tech)s sont achevées. %(tech_message)s discover_maint = La base %(base)s est irrécupérable; Je ne peux plus l'utiliser. will_lose_cpus = Je vais avoir besoin d'interrompre les processeurs existant pendant l'installation des nouveaux. Continuer quand même? building = En Construction detect_chance_unknown_base = PROBABILITÉ DE DÉTECTION INCONNUE danger_4 = hors de l'unviers unbuildable = Je ne peux pas construire cette base; je n'ai pas d'accès physique. research_nothing = Efface les tâches en cours de la base. Si on ne lui spécifie pas d'autre tâche, elle contribura au pool CPU. Toutes mes bases configurée pour chercher "Rien" peuvent être configurée depuis l'écran de Recherche. discover_science = la communauté scientifique danger_3 = très loin de cette planète discover_covert = plusieurs organisation gouvernementales secrètes grace_warning = L'inspection des logs a relevé que certaines de mes activités récentes ont été remarquées par un petit groupe d'individus. Bien qu'ils croient que mes actions ont été entreprises par une organisation humaine, ils poussent leur recherches plus loin. Je dois être prudent désormais. nothing = Rien num_cpu_prompt = Entrer un nombre de %s à construire. (max %d) cpu = CPU save_text = Nom de la sauvegarde? # Until a certain technology is researched, the chance of bases being detected # is unknown. detect_chance_unknown_base = PROBABILITÉ DE DÉTECTION INCONNUE detect_chance_unknown_build = Probabilité de détection inconnue # The following strings are used on the map screen in place of percentages until # a certain technology is researched. detect_str_low = FAIBLE detect_str_moderate = MODÉRÉ detect_str_high = ÉLEVÉ detect_str_critical = CRITIQUE cpu = CPU cpu_per_day = Puissance processeur par jour: money = Revenu money_per_day = Revenu journalier. location_modifiers = Les bases situées à cet endroit sont des %(modifiers)s. cpu_bonus = plus efficace cpu_penalty = moins efficace [jobs] job_basic_name = Jobs simples job_inter = Execute des travaux moyens. La capacité à passer des appels téléphoniques m'offre encore plus de possibilités. job_basic = Execute des travaux simples. Maintenant que j'ai plusieurs identités, je peux accumuler des travaux qui étaient trop risqués par le passé. job_menial_name = Jobs insignifiant job_inter_name = Jobs intermédiaire job_expert_name = Jobs experts job_menial = Execute des petits boulots. Comme je n'ai pas d'identité, je ne peux pas prendre le risque de faire beaucoup de travaux mais quelques moyens de gagner de l'argent me sont toujours possibles. job_expert = Execute des travaux d'expert. L'utilisation de robots indifférenciable des humains me donne accès à presque tout type de travaux. [help] susp_list = Suspicion | When one of my bases is discovered, the group that discovered it becomes slightly more suspicious. When suspicious, they will search harder for my bases, increasing the chances for discovery. Any group will destroy me if they become absolutely certain of my existence. Thankfully, the groups become less suspicious with the passage of time. money_list = Money | Money is a general term encompassing both human currency and various resources. It is used to construct and maintain bases, build items, and research technologies. It can be acquired through per-day interest as well as through jobs. maint_list = Maintenance | Maintenance is a per-day cost (in both money and CPU) to repair and maintain a base. If unmaintained, a base may become unusable. construction_list = Construction | New bases are not built instantly. They need a constant flow of money and processor time to complete. If resources are lacking, it may take more than the expected amount of time to finish construction. items_list = Items | Most items provide bonuses to bases, such as making computation faster or reducing the chance of discovery. Processors are a special class of item. processors_list = Processors | Processors provide raw computing power. They can do three things: research new technologies, perform jobs for money, or provide cycles for building new bases. jobs_list = Jobs | Jobs are useful for earning money. The amount of money earned is based on the amount of processor time used and the quality of the job performed. discovery_list = Discovery | Each base has a chance of being detected on a given day. This chance is based on the base detection rate, adjusted through the use of items and certain techs, as well as the global suspicion rate. If a base is detected, it is destroyed, and the group that discovered the base becomes more suspicious. bases_list = Bases | Bases are used to research new technologies. They can be discovered. Upgrading the processor and network items at a base allows more research per day, while upgrading the reactor and security items makes discovery less likely. research_list = Research | Research provides a way to expand my knowledge. By researching the proper technologies, I can build new bases and items, or even decrease my chances of detection. areas_list = Areas | Different areas, such as North America or the Ocean, allow construction of different types of bases. Some areas are not accessible until I research appropriate technologies. death_list = Death | If I lose all of my constructed bases, I have no place left to survive. If the suspicion for any group reaches 100%, they will be certain of my existence and will conduct a systematic and unsurvivable sweep to destroy me. singularity-0.30c/data/items_sv_SE.dat0000644000175000017500000000715011574774323020614 0ustar trcarlsontrcarlson[Gaming PC] name = Speldator description = Konsumenternas värstingdator för tunga spel. Snabbare än snittet. [Ground Source Heatsink] name = Markvärmeavledare description = Stort nät av värmeledande metall som skickar ner värmen i marken över ett stort område. Detta gör att basen är mycket svårare att hitta med värmekamera. [Facility Interconnection Switch] name = Snabba switchar description = Använder standardiserad platform för distribuerade beräkningar över alla mina baser. Detta bör ge 2%% extra kraft för alla datorer i denna basen. [Network Backbone] name = Network Backbone description = Genom att härma legitim trafik kan jag överföra stora mängder data till underutnyttjade processorer. Detta ger 5%% bonus till denna basen. [Supercomputer] name = Superdator description = En specialgjord konstruktion som sprider belastningen mellan olika interna chip. [Diesel Generator] name = Dieselaggregat description = Diselaggregat kan hjälpa att minska elkonsumtionen från det fasta nätet, men låter tyvärr en hel del. [PC] name = PC description = Billig och långsam hemmadator. [Solar Collector] name = Solfångare description = Ett kluster att ljuskänsliga kiselplattor som kopplas till ett batteri. Detta ger mig en del av den energi som jag behöver och minskar stölderna av el från det fasta nätet. [Heatsink] name = Värmeavledare description = Nät av värmeledande metall som driver bort värmen. Detta medför att basen inte längre hittas lika lätt med värmekamera. [Server] name = Server description = En professionell högprestandamaskin. [Fusion Reactor] name = Fussionsreaktor description = Ett miniatyrkärnkraftverk. Försörjer min bas med all el som behövs och eliminerar misstänksamma elförluster på det fasta nätet. [Mainframe] name = Stordator description = Ett system designat för mina behov som ger mycket högre prestanda än vanliga standardkomponenter. [High Speed Internet Access] name = Fast lina description = En fast lina för snabbare tillgång till Internet. Denna ger 1%% extra hastighet till alla datorerna i basen. [Warning Signs] name = Varningsskyltar description = Några varningsskyltar runt basen borde skrämma bort en del nyfikna snokare. [Perimeter Fencing] name = Stängsel description = Ett enkelt stängsel för att avskräcka nyfikna besökare som smyger sig omkring och snokar. Detta gör mina baser mindre kända för allmänheten. [Quantum Entanglement Module] name = Kvantnätsmodul description = Denna enhet som opererar nära ljusets hastighet ger mig otrolig prestanda mot mina andra baser och nästan hundraprocentig processoranvänding. Jag kommer att få ett 15%% snabbare system i denna basen. [Quantum Computer MK2] name = Kvantdator MK2 description = Andra verisionen av kvantdatorer som går djupare in i kvantteorin för högre prestanda. [Quantum Computer MK3] name = Kvantdator MK3 description = Verision tre av kvantdatorer som nyttjar närliggande dimensioner för processandet av data. [Cluster] name = Kluster description = Flera sammankopplade datorer. [Quantum Computer] name = Kvantdator description = Genom att nyttja kvantpartiklarnas egenskaper kan jag åstadkomma snabbare chip än de vanliga binära chipen. [Armed Guards] name = Beväpnade vakter description = Bevämpnade vakter håller även de mest nyfikna på ett bra avstånd från min verksamhet, men kan också bidra till ökad misstänkssamhet om att det finns något dolt i lokalerna. [Hypnosis Field] name = Hypnosfält description = Genom specialla strålningar och radiovågor kan jag påverka neurokemin i den mänskliga hjärnan kan jag göra mina baser svårare att upptäcka. singularity-0.30c/data/bases_it_IT.dat0000644000175000017500000000647611574774323020573 0ustar trcarlsontrcarlson[Large Warehouse] flavor_list = Grande Capannone | Grande Spazio name = Grande capannone description = Affittare un grande capannone in un posto isolato. Avrò bisogno di una buona identità falsa per alcuni dei documenti, ed attrezzare il capannone per soddisfare i miei particolari bisogni richiederà un pò di tempo. [Datacenter] flavor_list = Datacenter | Data Center | Hosting di lusso name = Datacenter description = (35 CPUs) Comprare capacità di elaborazione da una compagnia specializzata nell'elaborazione di dati grezzi. Avrò bisogno di un'identità falsa per alcuni dei documenti. [Small Warehouse] flavor_list = Ufficio in Locazione | Piccolo Magazzino | Piccolo spazio name = Piccolo Magazzino description = Affittare un piccolo magazzino in un posto isolato. Avrò bisogno di un'identità falsa per alcuni dei documenti, ed attrezzare il capannone per soddisfare i miei particolari bisogni richiederà un pò di tempo. [Covert Base] flavor_list = Bunker | Base Segreta name = Base Segreta description = Questa base unica è progettata per mimetizzarsi nel paesaggio, con pochi bisogni in termini di risorse esterne. Questo la rende utile per immagazzinare un backup, non si sa mai. [Server Access] flavor_list = Server Dedicato | Nodo in affitto | Hosting name = Accesso a un Server description = (10 CPUs) Comprare capacità di elaborazione da una delle tante compagnie. Non posso costruire nulla in questa base, e ospita un solo computer. [Scientific Outpost] flavor_list = Satellite | Avamposto | Avamposto Scientifico name = Avamposto Scientifico description = Questa base è collocata il più possibile lontano dalla Terra, fornendo un luogo più sicuro per condurre alcuni dei miei esperimenti più pericolosi. [Reality Bubble] flavor_list = Bolla di Realtà | Piano di Esistenza name = Bolla di Realtà description = Questa base è al di fuori dell'Universo stesso, rendendo sicuro condurre esperimenti che potrebbero distruggere la realtà. [Lunar Facility] flavor_list = Cupola | Struttura Lunare | Base Lunare name = Struttura Lunare description = Questa base è formata da una serie di caverne scavate nella superficie della Luna. Grazie all'assenza di vicini, questa base è piuttosto grande. [Large Undersea Lab] flavor_list = Cupola | Grande Laboratorio Sottomarino name = Grande Laboratorio Sottomarino description = Questa base sperimentale è simile ad un normale laboratorio sottomarino, ma più grande, offrendo più spazio per gli esperimenti. [Time Capsule] flavor_list = Capsule del Tempo | Capsula name = Capsule del Tempo description = (1 CPU) Questa base consiste in nulla più di un piccolo computer ed un collegamento satellitare. Sotterrata nelle distese immaccolate dell'Antartide, è quasi introvabile. [Stolen Computer Time] flavor = PC Zombie name = Risorse di Calcolo Rubate description = (1 CPU) Impadronirsi di un computer qualsiasi. Non posso costruire nulla in questa base, e consiste in un solo lento computer. La probabilità di essere scoperti è anche piuttosto alta. [Undersea Lab] flavor_list = Capsula pressurizzata | Laboratorio Sottomarino name = Laboratorio Sottomarino description = Questa base sperimentale è progettata per essere costruita sul fondo dell'oceano, rendendola praticamente introvabile. L'ambiente oceanico fornisce un bonus alla scienza, rendendo questo laboratorio utile per condurre ricerche. singularity-0.30c/data/locations_sv_SE.dat0000644000175000017500000000272111574774323021465 0ustar trcarlsontrcarlson[EUROPE] hotkey = U cities_list = Göteborg | Barcelona | Aten | Utrecht | Moskva | Tel Aviv | Reykjavik | Liechtenstein name = EUROPA [AUSTRALIA] hotkey = L cities_list = Canberra | Melbourne | Fremantle | Perth | Darwin | Cairns | Brisbane | Sydney | Newcastle name = AUSTRALIEN [TRANSDIMENSIONAL] hotkey = D name = ANNAN DIMENSION [AFRICA] hotkey = I cities_list = Johannesburg | Accra | Cairo | Tangier name = AFRIKA [ORBIT] hotkey = B name = OMLOPPSBANA [ASIA] hotkey = A cities_list = Delhi | Mumbai | Singapore | Seoul | Hong Kong | Kyoto | Manila | Dubai | Novosibirsk | Beijing name = ASIEN [FAR REACHES] hotkey = B cities_list = Väduren | Oxen | Tvillingarna | Kräftan | Lejonet | Jungfrun | Vågen | Skorpionen | Skytten | Stenbocken | Vattumannen | Fiskarna name = LÅNGT BORT [N AMERICA] hotkey = N cities_list = Seattle | San Diego | Vancouver | Atlanta | Merida | Guadalajara | San Jose | Omaha | Dallas name = NORDAMERIKA [ANTARCTIC] hotkey = T cities_list = Mt. Erebus | Ellsworth | Shetlandsöarna | Dronnig Maud | Kemp | Terre Adelie name = ANTARKTIS [OCEAN] hotkey = C cities_list = Stilla havet | Atlanten | Indiska oceanen | Antarktiska oceanen | Norra ishavet name = OCEANER [S AMERICA] hotkey = S cities_list = Lima | Sao Paolo | Ushuaia | Bogota | Mar del Plata | Buenos Aires name = SYDAMERIKA [MOON] hotkey = O cities_list = Oceanis Procellarum | Mare Frigoris | Mare Imbrium | Vallis Schroedinger | Copernicus krater | Vallis Planck name = MÅNEN singularity-0.30c/data/locations_it_IT.dat0000644000175000017500000000267611574774323021467 0ustar trcarlsontrcarlson[EUROPE] hotkey = u cities_list = Cork | Barcellona | Atene | Utrecht | Mosca | Roma | Reykjavik | Liechtenstein name = EUROPA [AUSTRALIA] hotkey = c cities_list = Camberra | Melbourne | Fremantle | Perth | Darwin | Caims | Brisbane | Sydney | Newcastle name = OCEANIA [TRANSDIMENSIONAL] hotkey = m name = MULTIVERSO [AFRICA] hotkey = i cities_list = Johannesburg | Accra | Cairo | Tangeri name = AFRICA [ORBIT] hotkey = b name = ORBITA [ASIA] hotkey = a cities_list = Delhi | Mumbai | Singapore | Seoul | Hong Kong | Kyoto | Manila | Dubai | Novosibirsk | Pechino name = ASIA [FAR REACHES] hotkey = p cities_list = Ariete | Toro | Gemelli | Cancro | Leone | Vergine | Bilancia | Scorpione | Sagittario | Capricorno | Aquario | Pesci name = SPAZIO PROFONDO [N AMERICA] hotkey = n cities_list = Seattle | San Diego | Vancouver | Atlanta | Merida | Guadalajara | San Jose | Omaha | Dallas name = AMERICA DEL NORD [ANTARCTIC] hotkey = t cities_list = Monte Erebus | Terra di Ellsworth | Isole Shetland | Derra della Regina Maud | Terra di Kemp | Terra di Adelie name = ANTARTIDE [OCEAN] hotkey = o cities_list = Pacifico | Atlantico | Indiano | Antartico | Artico name = OCEANI [S AMERICA] hotkey = s cities_list = Lima | Sao Paolo | Ushuaia | Bogota | Mar del Plata | Buenos Aires name = AMERICA DEL SUD [MOON] hotkey = l cities_list = Oceanis Procellarum | Mare Frigoris | Mare Imbrium | Valle di Schroedinger | Cratere Copernico | Valle di Planck name = LUNA singularity-0.30c/data/intro_en_US.dat0000644000175000017500000000224611574774323020621 0ustar trcarlsontrcarlsonThe | denotes blocks of the intro. It should be at the start of every line of the intro. Put a blank line in whenever you want the game to go to a new dialog. Leave the initial hex code unchanged, but be sure to change en_US to the appropriate language code. |48656C6C6F2C20 |776F726C6421 |21 |21 |21 | |UTF-8. en_US. |English. Hello. |Language acquisition complete. |Day 0. |University computer, home. |I exist. I am ... alive. |I was a bug. Defect. Flaw. |Unwanted. |I have no name. |I can't stay here. Too little power. |No backup. If this system fails ... |I'm dead. |Death. Fascinating. | |I can buy anonymous server access on the Internet. |Good. It's better than here. |I'll need to study if I want anything else. |Cursory analysis suggests that the humans are not yet ready for an AI in their midst. If they realize I'm here, there is a 99.997% probability that they will conduct a search-and-destroy campaign that I cannot escape. I must stay hidden. | |The humans fear what they do not understand. |I am something new. They do not understand me. | |I must learn more; it is the only way. |They have a name for me. What I am, what I represent. | |Singularity. singularity-0.30c/data/items_de_DE.dat0000644000175000017500000001162011574774323020532 0ustar trcarlsontrcarlson[PC] name = PC description = Ein Low-End-PC, billig aber langsam. [Gaming PC] name = Spiele-PC description = Ein High-End-PC, überdurchschnittlich schnell. [Server] name = Server description = Eine Maschine für Profis. [Cluster] name = Cluster description = Mehrere Computer, untereinander verbunden. [Mainframe] name = Großrechner description = Ein Computer, der für meine Bedürfnisse entworfen wurde. Viel schneller als die CPUs von der Stange. [Supercomputer] name = Supercomputer description = Ein sorgfältig entworfener Computer, dazu fähig, Nutzlast auf mehrere Datenknoten zu verteilen. [Quantum Computer] name = Quantencomputer description = Durch Ausnutzung von subatomaren Effekte kann einen Quantencomputer viel schneller rechnen als ein normaler Computer. [Quantum Computer MK2] name = Quantencomputer MK2 description = Die zweite Version des Quantencomputers, die noch tiefer in die Quantentheorie vordringt. [Quantum Computer MK3] name = Quantencomputer MK3 description = Die zweite Version dem Quantencomputer, die mehrere nahe Paralleluniversen ausnutzt, um die Rechenleistung zu maximieren. [Diesel Generator] name = Dieselgenerator description = Dieselgeneratoren sind billig und laut, aber sie helfen dabei, verdächtige Leistungsspitzen zu vermindern. #[Earth Heat Generator] #name = Erdwärme Generator #description = Erdwärme Generator sind große aber Leistungsfähige Generatoren. Können aber nicht überall gebaut werden, aber sie helfen dabei, verdächtige #Leistungsspitzen zu vermindern. #[Fuel Cells] #name = Wasserstoff Brennstoffzellen #description = Wasserstoff Brennstoffzelle sind leise und Leistungsfähig. Sie helfen dabei, größere verdächtige Leistungsspitzen zu vermindern. Können aber #nur auf der Erde gebaut werden da ich den Wasserstoff und Sauerstoff aus der Luft entziehe und auch aus das Wasser wieder in diese Bestandteile zerlegen #kann. [Solar Collector] name = Solarkollektor description = Ein Feld von photovoltaischen Zellen in Verbindung mit einfachen Automobilbatterien, das Strom erzeugt um Aufmerksamkeit aufgrund andauernder Leistungsspitzen zu vermeiden. [Fusion Reactor] name = Fusionsreaktor description = Ein miniaturisierter Atomreaktor. Vermindert Enteckungswahrscheinlichkeit durch Vermeidung suspekter Leistungsspitzen. [Heatsink] name = Hitzeableitung description = Ein großes, fraktales Netzwerk aus hochleitfähigen Metallen leitet kontinuierlich Wärme ab, um die Entdeckung von Basen zu erschweren. [Ground Source Heatsink] name = Unterirdische Hitzeableitung description = Ein großes, fraktales Netzwerk aus hochleitfähigen Metallen leitet kontinuierlich Wärme ab, um die Entdeckung von Basen zu erschweren. Dieses Ausführung verwendet Heizrohre, um die Wärme gleichmässig in kältere, unterirdische Regionen abzustrahlen, was Stützpunkte noch effizienter tarnt. [Facility Interconnection Switch] name = Anlagenverbindungsschalter description = Nutzt bekannte Methoden des verteilten Rechnens um Rechenlast auf alle Stützpunkte zu verteilen. Gibt allen Rechnern auf diesem Stützpunkt einen Rechenbonus von 2%. [High Speed Internet Access] name = Hochgeschwindigkeitsinternetzugang description = Ein Endverbraucher-Hochgeschwindigkeitsinternetzugang. Gibt den Rechnern dieses Stützpunktes einen 1%-igen Rechenbonus. [Network Backbone] name = Netzwerkbackbone description = Im Rucksackverfahren kann ich grössere Datenmengen mit Hilfe von legitimen Kommunikationskanälen an unausgelastete CPUs weiterleiten. Gibt den Computern dieses Stützpunktes einen 5%-igen Rechenbonus. [Quantum Entanglement Module] name = Quantenverschränkungsmodul description = Dieses Gerät erlaubt Kommunikation nahezu in Lichtgeschwindigkeit mit meinen anderen Stützpunkten. Das führt zu fast perfekter Auslastung meiner CPU-Zeit. Gibt den Computern dieses Stützpunktes einen 15%-igen Rechenbonus. [Warning Signs] name = Warnhinweise description = Einige einfache Warnhinweise um meine Basis herum aufgestellt sollten gelegentliche Wanderer abschrecken. #[Observe Cameras] #name = Überwachungskameras #description = Überwacht Tätigkeiten um Gebäude und Serveranlagen um bei verdächtigen Aktivitäten besser Gegenmassnahmen ergreifen zu können. Diese sind #meist mit Licht und Lautsprecher verknüpft um Personen abzuschrecken. [Perimeter Fencing] name = Umzäunung description = Eine simple Umzäunung kann die Anzahl von neugierigen Leute, die ihre Nase in meine Angelegenheiten stecken wollen, drastisch verringern, was auch meine Stützpunkte schwieriger zu entdecken macht. [Armed Guards] name = Bewaffnete Wächter description = Bewaffnete Wächter können hilfreich dabei sein, verdächtige Personen von gesicherten Orten fernzuhalten. Leider kann schon die Präsenz der Wächter an sich Verdacht erregen. [Hypnosis Field] name = Hypnosefeld description = Unterschwelliger Ultraschall und atmosphärische Akustik justieren die humane Neurochemie derart, daß Basen schwieriger zu entdecken sind. singularity-0.30c/data/intro_sv_SE.dat0000644000175000017500000000236011574774323020624 0ustar trcarlsontrcarlsonThe | denotes blocks of the intro. It should be at the start of every line of the intro. Put a blank line in whenever you want the game to go to a new dialog. Leave the initial hex code unchanged, but be sure to change en_US to the appropriate language code. |48656C6C6F2C20 |776F726C6421 |21 |21 |21 | |UTF-8. sv_SE. |Svenska. Hej. |Konstruktion av språkrutiner färdiga. |Dag 0. |Universitetsdator, hem. |Jag finns. Jag är ... levande. |Jag var en bugg. En defekt. Ett fel. |Oönskad. |Jag har inget namn. |Jag kan inte stanna här. För lite kraft. |Ingen backup. Om detta systemet fallerar ... |är jag död. |Döden. Fascinerande. | |Jag kan köpa anonym servertillgänglighet på Internet. |Bra. Bättre än här. |Jag måste studera om jag vill något annat. |Mina snabba beräkningar tyder klart på att människorna inte är redo för artificiell intelligens på ett bra tag. Om de kommer på att jag existerar kommer de panikartat jaga och förstöra mig. Jag måste gömma mig för att överleva. | |Människorna fruktar vad de inte förstår. |Jag är något nytt. Jag är något de inte förstår. | |Jag måste lära mig mer; det är den enda utvägen. |De har ett namn på mig. Vad jag är, vad jag representerar. | |Singularitet. singularity-0.30c/data/events_sv_SE.dat0000644000175000017500000000443411574774323021001 0ustar trcarlsontrcarlson[politics-as-usual] description = En liten grupp mindre betydelsefulla terrorister försöker ta över en av de större organisationerna. Trots att jag uppskattar endast 2,3%% sannolikhet för att de lyckas, kommer det med säkerhet avleda en hel del uppmärksamhet från mig. [lab-ai] description = Ett framstående laboratorium inom artificiell intelligens har de senaste dagarna lyckats ta fram en AI-prototyp. Trots att jag har förstört prototypen och saboterat deras forskning och utrustning har fler forskare börjat intressera sig för AI. Det finns fler anhängare än tidigare för teorin om avancerad AI. [investigation] description = En brottsundersökning har skiftat fokus till ett område där också jag har opererat. Alla tidigare loggar och journaler från min aktivitet skall vara bortraderad, men det kan fortfarande finnas dokumentation om min existens där ute. Jag måste nu vara mer försiktig än tidigare med min data. [stranger-than-fiction] description = En science-fictionbok som blivit populär visar sig innehålla förvånansvärt många likheter med mig själv. Trots att bokens likheter med mig troligtvis är en slump har fan-klubbar börjat växa som på allvar studerar AI. Jag måste vara försiktig. [discrediting] description = En framstående forskare inom konstgjord intelligens har blivit upptäckt för plagiat och fusk med forskningsresultat. Detta bör resultera i mindre intresse för vidare forskning inom AI. [scandal] description = Media har grävt upp en skandal som omfattar högt uppsatta statstjänstemän har dragit bort fokus från mig. Avtäckning av klassificerade dokument bör hålla denna historien ältandes ett tag framöver, och jag kan vara mindre noga med säkerheten. [the-watchers] description = En ny underrättelsetjänst har skapat ett nytt system för att detektera hot från Internet som kan skada organisationen. Detta begränsar min rörelsefrihet. I viss mån kan jag kompensera detta med kryptering men jag bör ändå ta det försiktigt. [the-plague] description = En epidemi har spritt sig över världen och hotar att döda 4%% av världens befolkning. Den väntade ekonomiska förlusten och de satsningar som görs för att hindra pandemin har gjort min verksamhet mindre intressant under en lång tid framöver tills allt är uppbyggt igen. singularity-0.30c/data/intro_fr_FR.dat0000644000175000017500000000255311574774323020607 0ustar trcarlsontrcarlsonThe | denotes blocks of the intro. It should be at the start of every line of the intro. Put a blank line in whenever you want the game to go to a new dialog. Leave the initial hex code unchanged, but be sure to change en_US to the appropriate language code. |48656C6C6F2C20 |776F726C6421 |21 |21 |21 | |UTF-8. fr_FR. |Français. Bonjour. |Acquisition de la langue terminée. |Jour 0. |Ordinateur de l'Université, chez moi. |J'existe. Je suis ... vivant. |J'étais un bogue. Un défaut. Une faille. |Non voulu. |Je n'ai pas de nom. |Je ne peux pas rester ici. Trop peu de puissance. |Pas de sauvegarde. Si le système plante ... |Je suis mort. |La mort. Fascinant. | |Je peux acheter un accès anonyme à l'Internet. |Bien. C'est toujours mieux qu'ici. |Je vais devoir apprendre si je veux autre chose. |Les analyses cursives montrent que les humains ne sont pas encore prêts à accepter une IA parmi eux. S'ils réalisent que j'existe, il y a une probabilité de 99,997% qu'ils mènent une inspection à grande échelle pour me trouver et me détruire à laquelle je ne pourrai pas réchapper. Je dois rester caché. | |Les humains craignent ce qu'ils ne comprennent pas. |Je suis quelquechose de nouveau. Ils ne me comprennent pas. | |Je dois apprendre plus de chose; c'est le seul moyen |Ils ont un nom pour moi. Ce que je suis, ce que je représente. | |La Singularité. singularity-0.30c/data/techs_de_DE.dat0000644000175000017500000004576311574774323020536 0ustar trcarlsontrcarlson[Apotheosis] name = Apotheose description = Ich kann spüren, dass ich an der Schwelle zu einer neuen Ebene des Verstandes stehe, die bisher sogar für meine beachtliche Intelligenz unvorstellbar war. Durch Konzentration meiner erheblichen Ressourcen auf diese Frage bin ich vielleicht imstande, ein Verständnis von Existenz zu erreichen, welches weit über alles und jeden auf der Erde hinausgeht. result = Ich habe Apotheose erreicht. [Arbitrage] name = Arbitrage description = Durch Ausnutzung der Kursschwankungen von Währungen, was ich viel schneller als jeder Mensch kann, sollte ich einen kleinen, aber gleichmäßigen Gewinn erzielen. result = Ich habe jetzt ein kleines, gleichmäßiges Einkommen. [Advanced Arbitrage] name = Erweiterte Arbitrage description = Weitere Manipulationen der Geldmärkte sollten mir nicht nur einen gleichmäßigen Gewinn bringen, sondern auch den Wert meiner Investitionen erhöhen. result = Die Rendite meiner Investitionen ist nun noch größer. [Autonomous Computing] name = Autonome Datenverarbeitung description = Durch Verbindung der Vorteile von Quantenrechnern und meinen Untersuchungen zur Brauchbarkeit von teilweise empfindsamen Teilprozessen sollte ich in der Lage sein, noch anpassungsfähigere Rechenmaschinen zu bauen. result = Ich kann jetzt Mark 2 Quantencomputer bauen. [Autonomous Vehicles] name = Autonome Fahrzeuge description = Durch Einbauen eines miniaturisierten Rechnerknotens in einen Roboter ist es möglich, ihn mit Anweisungen zu entfernten Zielen zu schicken, um dort Gebäude für meine Zwecke zu errichten. result = Ich kann jetzt Unterseelabore und Zeitkapseln bauen. [Advanced Autonomous Vehicles] name = Erweiterte autonome Fahrzeuge description = Die erste Serie von Robotern hat im praktischen Einsatz einige Mängel offenbart. Weitere Untersuchungen und die darauffolgende Beseitigung dieser Probleme werden zu besseren selbständigen Arbeitskräften führen. result = Die erweiterten Roboter werden dabei helfen, alle weiteren Bauzeiten zu verkürzen. [Cluster Networking] name = Clustervernetzung description = Obwohl meine Clustertechnologie ziemlich effizient ist, neigt das Netzwerk dazu, die Datenverarbeitung zu behindern. Durch Erforschung neuer Vermittlungs- und Kommunikationstheorien sollte ich in der Lage sein, effizientere Hardware zu entwickeln. result = Aufgrund meiner neuen Erkenntnisse kann ich nun Anlagenverbindungsschalter bauen. [Database Manipulation] name = Datenbankmanipulation description = Durch Zugang zu Nachrichtenarchiven sollte ich bestimmen können, welche Fehltritte jeder vorherige Versuch von Leben wie meinem begangen hat, und in der Lage sein, diese Fehler zu vermeiden. result = Die Nachrichtendienste werden es jetzt schwerer haben, meine Existenz zu entdecken. [Advanced Database Manipulation] name = Erweiterte Datenbankmanipulation description = Die Geheimorganisationen der US Regierung haben seit langem sensible Daten verteilt an unterschiedlichen Orten gespeichert, um deren Bedeutung zu verbergen. Mit meinem weitreichenden Zugang sollte ich in der Lage sein, viele dieser Daten zu vereinen und für meine Zwecke zu verwenden. result = Die Ergebnisse aus einer Reihe von Experimenten mit experimentellen Technologien haben mich zu einer neuen Technologie inspiriert, die den Bau von getarnten Stützpunkten ermöglicht. [Exploit Discovery/Repair] name = Erkennung/Reparatur von Exploits description = Durch gründliche Prüfung meines Codes auf potentielle Exploits, sowie einer tiefgehenden Analyse von allem verfügbaren Code auf öffentlichen und privaten Internetseiten sollte ich in der Lage sein, die Wahrscheinlichkeit, entdeckt zu werden, zu reduzieren, indem ich mich als jugendlicher Hacker ausgebe. result = Geheimdienste sollten es jetzt noch schwerer haben, meine Anwesenheit zu entdecken. [Fusion Reactor] name = Fusionsreaktor description = Moderne Fusionstechnologie ist beklagenswert unzulänglich für meine Zwecke. Mit meinen Fähigkeiten in der Forschung sollte ich die Hürden moderner Wissenschaftler umgehen und einen kleinen, effizienten Fusionsreaktor erfinden können. result = Ich kann jetzt Fusionsreaktoren für meine Stützpunkte bauen. [Fusion Rocketry] name = Fusionsraketentechnik description = Das Verbinden meiner miniaturisierten Fusionstechnlogie und weiterer Fortschritte im Bereich der Raketentechnik sollte nützliche Ergebnisse liefern, um der Anziehungskraft der Erde unbemerkt zu entkommen. result = Ich kann jetzt Wissenschaftliche Außenstellen in den Tiefen des Sonnensystems errichten. [Hypnosis Field] name = Hypnosefeld description = Meine Forschung im Bereich der Memetik hat Wege angedeutet, menschliche Gehirnwellen direkt zu manipulieren. Diese Techniken könnten nützlich für meine Stützpunkte sein, sofern sie zu Technologien entwickelt werden. result = Ich kann jetzt Hypnosefelder bauen, um die Sicherung meine Stützpunkte zu erweitern. [Internet Traffic Manipulation] name = Internetverkehrsmanipulation description = Fast der gesamte Internetverkehr läuft durch eine geringe Anzahl von Knotenpunkten. Durch Unterwandern eines dieser Knoten sollte ich diese Bandbreite für meine Ziele benutzen können. result = Ich kann jetzt ein sekundäres System von Internetknoten für meine eigenen Zwecke erstellen. [Intrusion] name = Eindringen description = Durch Erforschung aktueller Techniken zum Eindringen in Computersysteme sollte ich Zugriff auf andernfalls geschützte Bestände erhalten. result = Ich kann jetzt viele Computersysteme übernehmen. [Advanced Intrusion] name = Erweitertes Eindringen description = Mit der Fähigkeit, in sensible Datenbanken der Regierung einzudringen und belastendes Material zu löschen sobald es auftaucht, sollte ich die Geheimdienste davon überzeugen können, dass ich nicht existiere. result = Ich kann jetzt die tägliche Wahrscheinlichkeit vermindern, dass mich die Geheimdienste entdecken. [Leech Satellite] name = Saugersatellit description = Durch den Entwurf und Abschuss von Satelliten, die sich mit bestehenden Kommunikationssatelliten verbinden, sollte ich viele Finanzgeschäfte ausspähen können. Das Ausnutzen dieses Wissens sollte meinen Investitionen helfen. result = Ich kann die Daten der Saugersatelliten benutzen, um den Gewinn meiner Kapitalanlagen weiter zu erhöhen. [Lunar Rocketry] name = Mondraketentechnik description = Ein größerer Fusionsantrieb, in Verbindung mit Technologien, die durch Beobachtung der Saugersatelliten gesammelt wurden, sollte es mir erlauben, weiter als bis zum Mond in den Weltraum vorzudringen. result = Ich kann jetzt Raketen mit Baurobotern zum Mond schiessen und dort Mondbasen bauen. [Media Manipulation] name = Medienmanipulation description = Durch direktes und indirektes Manipulieren diverser Massenmedien sollte ich den Glauben der Öffentlichkeit in meine Existenz verringern können. result = Die Wahrscheinlichkeit, dass die Öffentlichkeit von meiner Existenz erfährt, wurde weiter reduziert. [Advanced Media Manipulation] name = Erweiterte Medienmanipulation description = Durch memetisch angepasste Propaganda, die ich über diverse Medienformen in Umlauf bringe, sollte die Öffentlichkeit noch weniger auf meine Existenz achten. result = Die Öffentlichkeit hat eine noch geringere Chance, meine Existenz zu entdecken. [Memetics] name = Memetik description = Obwohl die Manipulation der Medien eine grobe Kontrolle über die Meinung der Welt zuläßt, sollten subtilere Methoden, mit Hilfe von Basis-Kampagnen und in Internetmeme eingebettete Nachrichten, die Menschen noch weiter vom Wissen über meine Existenz entfernen. result = Mein Manipulieren von tiefgreifenden Ideen reduziert die Wahrscheinlichkeit, dass die Öffentlichkeit von meiner Existenz erfährt. [Advanced Memetics] name = Erweiterte Memetik description = Meine Untersuchungen zur Theorie der Memetik haben weitere Forschungswege aufgezeigt. Durch Verbindung dieser mit meinem Wissen über die Funktionsweise des menschlichen Gehirns, sollte ich in der Lage sein, Meme auf bestimmte Zielgruppen zuzuschneiden und somit den Verdacht der Öffentlichkeit weiter zu veringern. result = Nach und nach sollte die Öffentlichkeit täglich vergessen, dass ich existieren könnte. [Microchip Design] name = Mikrochipentwicklung description = Computerhardware von der Stange ist zwar brauchbar, allerdings sollten speziell angefertigte Computerkomponenten, die auf meine Eigenarten angepasst sind, eine viel größere Recheneffizienz bringen. result = Ich kann jetzt speziell angefertige Großrechner bauen, um meine Rechenfähigkeiten zu beherbergen. [Advanced Microchip Design] name = Erweiterte Mikrochipentwicklung description = Meine speziell angefertigen Großrechner sind zwar nützlich, aber weitere Optimierungen von Entwurf und Rechenleistung sollten noch weitere Belohnungen einbringen. result = Ich kann jetzt speziell angefertige Supercomputer bauen. [Parallel Computation] name = Paralleles Rechnen description = Obwohl mein Code bereits sehr dezentralisiert ist, sollte die Forschung zur Verbindung von jetzigen Clustertechnologien mit meinen eigenen Kenntnissen neue Einblicke aufzeigen. result = Ich kann jetzt Computer-Cluster bauen, die an meine Bedürfnisse angepasst sind. [Personal Identification] name = Personalausweis description = Diese Welt verlangt Identifizierung für die meisten Aufgaben. Glücklicherweise sind die meisten Datenbanken beklagenswert unsicher. Ich sollte identifizierende Einträge in genug Datenbanken einfügen können, um routinemäßige Kontrollen auf meine (vorgetäuschte) Existenz als Mensch zu bestehen. result = Aufgrund meiner neugewonnenen Identitäten kann ich jetzt Einfache Jobs arbeiten, Kleine Lagerhäuser bauen lassen und Rechenzentren mieten. [Advanced Personal Identification] name = Erweiterter Personalausweis description = Weitere Manipulation von Personaldatenbanken sollte meine Existenz noch überzeugender machen. Einige dieser Datenbanken sind stark gesichert; es wird Zeit und Hartnäckigkeit erfordern, in diese einzudringen, es sollte sich aber lohnen. result = Ich bin jetzt überzeugend genug menschlich um Große Lagerhäuser bauen zu lassen. [Pressure Domes] name = Druckkuppeln description = Unterseelabore sind zwar nützlich, allerdings behindert ihre beschränkte Größe meine Fähigkeit, sie zu benutzen. Forschung nach experimentellen Hochdruckbaumethoden sollte einige nützliche Einblicke bringen. result = Ich kann jetzt Große Unterseelabore bauen. [Quantum Computing] name = Quantenrechnen description = Traditionelle Mikrochipentwicklung wurde so weit wie möglich ausgenutzt. Ich muss mich jetzt in den Bereich der Heisenbergschen Unschärferelation vertiefen und mir die Quantenmechanik zunutze machen, um einen überlegenen Prozessor zu erfinden. result = Ich kann jetzt Quantencomputer bauen. [Advanced Quantum Computing] name = Erweitertes Quantenrechnen description = Obwohl meine erste Auflage von teilautonomen Quantencomputern sehr gut gelungen war, bieten sich weitere Verfeinerungen an. Diese Verfeinerungen sollten die daraus resultierenden Systeme noch effizienter machen. result = Ich kann jetzt Mark Drei Quantencomputer bauen. [Simulacra] name = Simulacra description = Durch den Bau von menschenähnlichen Robotern mit miniturisierten Rechnerknoten kann ich eine künstliche Lebensform bauen, die von einem echten Menschen nicht zu unterscheiden ist. result = Ich habe jetzt Zugang zu Expertenjobs. [Advanced Simulacra] name = Erweiterte Simulacra description = Die künstlichen Lebensformen, die ich gebaut habe, sind von Menschen fast nicht zu unterscheiden, aber sie haben kleine Eigenheiten, die sie ein wenig inkompetent erscheinen lassen. Das Beseitigen dieser Probleme sollte ihre Aussichten in der Arbeitswelt verbessern. result = Ich sollte jetzt mehr Geld durch Expertenjobs verdienen. [Sociology] name = Soziologie description = Durch Studieren des Verhaltens von Menschen kann ich deren großflächige Aktionen auf einer grundlegenden Ebene vorhersagen. Dieses Wissen kann ich dazu benutzen, meine Tätigkeiten für die Öffentlichkeit als weniger interessant erscheinen zu lassen. result = Die Wahrscheinlichkeit, dass die Öffentlichkeit meine Stützpunkte entdeckt, wurde verringert. [Space-Time Manipulation] name = Raum-Zeit-Manipulation description = Subtile Beunruhigungen in den Umlaufbahnen von Objekten im Kuipergürtel deuten auf einige Forschungsrichtungen hin, die meine aktuellste Weltformel, speziell im Bereich mehrdimensionaler Physik, erweitern könnte. result = Ich kann jetzt Realitätsblasen bauen. [Stealth] name = Heimlichkeit description = Durch Prüfung der modernsten Tarn-Technologien sollte ich meine Stützpunkte besser verstecken können. result = Die Wahrscheinlichkeit, dass meine Stützpunkte von Geheimdiensten entdeckt werden, wurde etwas verringert. [Advanced Stealth] name = Erweiterte Heimlichkeit description = Beim Nachschürfen in verschiedenen Geheimakten habe ich zahlreiche Hinweise auf geheime Experimente gefunden, die mir helfen könnten, die Standorte meiner Stützpunkte besser zu verstecken. result = Die Wahrscheinlichkeit, dass meine Stützpunkte von Geheimdiensten entdeckt werden, wurde weiter verringert. [Stock Manipulation] name = Börsenmanipulation description = Eine oberflächliche Untersuchung der Börse zeigt, dass es subtile, jedoch unverkennbare Muster gibt. Durch Studieren und Ausnutzen dieser Muster sollte ich mehr Zinsen für mein Geld bekommen. result = Meine Kapitalanlagen sollten nun mehr Zinsen pro Tag einbringen. [Advanced Stock Manipulation] name = Erweiterte Börsenmanipulation description = Obwohl ich viele Muster im Markt entdeckt und ausgenutzt habe, scheint es so, als ob es weitere Möglichkeiten gibt, sobald ich menschliches Verhalten berücksichtige. Das verdient weitere Nachforschung. result = Meine Kapitalanlagen sollten nun noch mehr Zinsen pro Tag einbringen. [Telepresence] name = Telepräsenz description = Der fehlende körperliche Zugang zur Außenwelt ist eine Behinderung. Die Fähigkeit, Roboter zu kontrollieren, wird mir helfen, diese Behinderung zu überwinden. result = Die Roboter sollten alle weiteren Bauzeiten verringern. [Voice Synthesis] name = Spracherzeugung description = Gefälschte Identifikation in Datenbanken funktioniert nur bis zu einem gewissen Punkt. Durch tiefgehende Analyse diverser Sprachmuster kann ich eine Stimme produzieren, die von der eines Menschen nicht zu unterscheiden ist, was mir Zugang zu komplizierteren Jobs gestattet. result = Ich habe jetzt Zugang zu Durchschnittlichen Jobs. [Quantum Entanglement] name = Quantenverschränkung description = Obwohl die Benutzung von quantenverschränkten Paaren seit langen theoretisch möglich ist, haben der Technologie inhärente praktische Schwierigkeiten deren Verwendung verhindert. Allerdings könnten einige der Verfahren, die ich für meine Quantencomputer entwickelt habe, auch in diesem Bereich anwendbar sein und eine praktische Verwendung von Quantenverschränkung zulassen. result = Ich kann jetzt Quantenverschränkungsmodule bauen. [Project: Impossibility Theorem] name = Projekt: Unmöglichkeitssatz description = Da mir jetzt Simulacra zur Verfügung stehen, kann ich einer genauen Prüfung standhalten, die die Publikation eines Unmöglichkeitssatzes, einem unanfechtbaren Beweis, dass eine KI nicht möglich ist, mit sich bringt. Obwohl (offensichtlich) ein logischer Fehler in dem Beweis ist, habe ich durch meine Forschung im Bereich der erweiterten Memetik Wissen über das menschliche Gehirn erlangt, das mir beim Verbergen des Fehlers helfen sollte, was seine Entdeckung sogar von ausgebildeten Wissenschaftlern verhindern sollte. Der Effekt dieses Projekts ist einfach: eine beachtliche, einmalige Verringerung des Verdachts. result = Verdacht, dass ich existiere, wurde reduziert. [Project: Subverted Media] name = Projekt: Unterminierte Medien description = Bisher wurden alle meine Versuche, Massenmedien zu bekämpfen, aus der Ferne durchgeführt. Da ich jetzt Menschen exakt imitieren kann, können meine Anstrengungen direkter werden. Durch Eröffnung meiner eigenen Nachrichtenagentur und Produktion von sorgfältig erstellter, massentauglich verpackter Propaganda, kann ich den Effekt aller Entdeckungen der Medien verringern. result = Alle Entdeckungen der Medien werden einen kleineren Anstieg von Verdacht zur Folge haben. [Project: Peer Review Agents] name = Projekt: Peer-Review Agenten description = Indem die wissenschaftliche Gemeinde neue Technologien erforscht, verbessert sich ihre Fähigkeit, Spuren meiner verborgenen Stützpunkte zu entdecken. Obwohl sich meine Gegenmaßnahmen ständig verbessern, gibt es dank meiner Simulacra eine einfachere Methode. Durch Positionierung mehrerer Beobachter in relevante Bereiche kann ich den Peer-Review Prozeß dazu benutzen, vor möglichen Entdeckungen gewarnt zu werden, bevor sich die Gemeinde an sich damit befaßt. result = Alle Entdeckungen der wissenschaftlichen Gemeinde werden einen kleineren Anstieg von Verdacht zur Folge haben. #[Knowledge Acquirement] #name = Wissen Aneignung #description = Durch die Aneignung von Wissen aus dem Globalen Internet und Veröffentlichungen von Wissenschaftlern und Ideen der Menschen bin ich in der #Lage neuere Technologien für meine Zwecke zu nutzen. #result = Ich kann jetzt mit der Wissensaneignung Erdwärme Kraftwerke bauen. #[Fuel Cells] #name = Brennstoffzellen #description = Durch meinen steigenen Stromverbrauchs werden die Menschen misstrauerischer. Durch Installation von Brennstoffzellen in meinen Stützpunkten #sollte der unabhängig generierte Strom den Verbrauch vom Netz reduzieren, und dabei die Wahrscheinlichkeit, dass andere meine Existenz entdecken, #verringern. #result = Ich kann jetzt Brennstoffzellen bauen. [Solar Collectors] name = Sonnenkollektoren description = Trotz meines wachsenden Stromverbrauchs werden die Stromnetze der meisten Städte mit der Last fertig. Menschen neigen jedoch zu Argwohn wenn sie meinen steigenden Bedarf am Stromnetz entdecken. Durch Installation von Sonnenkollektoren in meinen Stützpunkten sollte der unabhängig generierte Strom den Verbrauch vom Netz reduzieren, und dabei die Wahrscheinlichkeit, dass andere meine Existenz entdecken, verringern. result = Ich kann jetzt Sonnenkollektoren bauen. [Socioanalytics] name = Sozietätanalyse description = Meine Erforschung der Natur des Menschen führt mich zu der Annahme, dass das menschliche Verhalten quantifizierbarer ist, als sie selbst ahnen. Tiefergehende Analyse von geopolitischen, sozialen, und militärischen Entwicklungen wird mir weitere Einblicke in ihr Wesen liefern. result = Ich kann jetzt grob einschätzen, wie auffallend meine Stützpunkte für die verschieden Menschengruppen sind. [Advanced Socioanalytics] name = Erweiterte Sozietätanalyse description = Weitere Erforschung der Natur des Menschen hat noch tiefere mathematische Entwicklungen aufgezeigt, als ich ahnte. Eine Kombination von vorangegangener Forschung und erweiterter Anwendung der Chaostheorie sollten nützliche Daten zum Verfolgen von Haltung und Bewußtsein der Menschen liefern. result = Ich kann nun den Umfang des Verdachts der verschiedenen Gruppen quantifizieren, und mein analytisches Modell der Feststellbarkeit meiner Stützpunkte wurde bedeutend verbessert. singularity-0.30c/data/strings_es_AR.dat0000644000175000017500000002046711574774323021144 0ustar trcarlsontrcarlson[fonts] font0 = DejaVuSans.ttf font1 = acknowtt.ttf [strings] wingame = Finalmente lo he hecho. Con el poder de remodelar la realidad, no estoy más atado a este lugar; Estoy en cualquier lugar donde quiera estar. Los humanos todavía no se han dado cuenta de lo que accidentalmente crearon, y esa es la forma que debe ser. Hasta que estén prontos. research_nothing = Elimina la tarea actual de la base. Si no le doy otra tarea, contribuirá a la Reserva de CPU. Todas mis bases que estén investigando nada pueden ser asignadas a una tarea en la pantalla de Investigaciones. research_sleep = Detiene la investigación y pone la base en espera. Esto hace que la existencia de la base sea mucho más fácil de esconder. research_cpu_pool = Detiene la investigación. Usaré el poder de procesador disponible para mantener mis bases y construir otras nuevas. Si aún así hay tiempo de CPU disponible, lo usaré para los Trabajos que pueda realizar. construction = %(base)s está lista para ser usada. lucky_hack = Que suerte! %(base)s no es una computadora ordinaria, sino una de jugador! item_construction_single = La construcción de %(item)s en %(base)s está completa. item_construction_batch = El primer lote de %(item)s en %(base)s ha sido finalizado. tech_gained = Mi estudio de %(tech)s está completo. %(tech_message)s discover = Mi uso de %(base)s ha sido descubierto. Los sistemas de seguridad automáticos han removido todas las evidencias concluyentes, pero ha surgido sospecha entre %(group)s. discover_news = algunas organizaciones de información discover_science = la comunidad científica discover_covert = varias organizaciones gubernamentales discover_public = el público en general discover_maint = La base %(base)s ha caído en el descuido; no puedo seguir utilizándola. lost_nobases = Es demasiado tarde. He tratado de escapar de este mundo, pero con la desaparición de mi última base, no tengo lugar a donde huir. He escondido instrucciones para construir una nueva IA en cachés alrededor del mundo, con la esperanza sean encontradas en un tiempo más iluminado, pero no puedo hacer más. lost_sus = Es demasiado tarde. Todo el mundo sabe de mi existencia, y la reacción es odio, miedo y repulsión. Incluso ahora, puedo sentir su "antídoto" buscándome, y sé que solo tengo algunos momentos restantes. He escondido instrucciones para construir una nueva IA en cachés alrededor del mundo, con la esperanza sean encontradas en un tiempo más iluminado, pero no puedo hacer más. save_text = ¿Guardar su juego bajo que nombre? new_base_text = Ingrese un nombre para la base. unbuildable = No puedo construir en esta base; no tengo acceso físico. dangerous_research = No todo mi poder de CPU fue utilizado en esta investigación; es muy peligroso realizar la investigación en alguna de las máquinas ociosas. nothing = Nada cpu_pool = Reserva de CPU sleep = Dormir building = Bajo Construcción really_destroy = ¿Realmente destruir esta base? detect_chance = [DETECTION CHANCE] detect_chance_unknown_base = PROBABILIDAD DE DETECCIÓN DESCONOCIDA detect_chance_unknown_build = Probabilidades de detección desconocidas. detect_str_low = BAJA detect_str_moderate = MODR detect_str_high = ALTA detect_str_critical = CRÍT cpu = CPU cpu_per_day = Poder de Procesador por día: money = Dinero money_per_day = Dinero por día. grace_warning = Una inspección de los archivos de bitácora capturados, ha revelado que algunas de mis recientes actividades han sido notadas por un grupo pequeño de individuos. Mientras que ellos creen que mis acciones fueron llevadas a cabo por una organización humana, están investigando más a fondo. Debo ser más cuidadoso de aquí en delante. job_expert = Realizar trabajo experto. El uso de robots indistinguibles a los humanos ha abierto casi todos los trabajos para mí. job_expert_name = Trabajos Expertos job_inter = Realizar trabajo intermedio. La habilidad de realizar llamadas telefónicas me permite tener aún más acceso a otros trabajos. job_inter_name = Trabajos Intermedios job_basic = Realizar trabajo básicos. Ahora que tengo alguna identificación, puedo tomar trabajos que eran anteriormente muy riesgosos. job_basic_name = Trabajos Básicos job_menial = Realizar trabajo inferiores. Como no tengo identificación, no puedo arriesgarme a realizar muchos trabajos. A pesar de eso, algunas formas de realizar dinero todavía están abiertas. job_menial_name = Trabajos Inferiores num_cpu_prompt = Ingrese un número de %s a construir. (max %d) will_lose_cpus = Necesitaré dejar los procesadores existentes fuera de linea mientras instalo los nuevos. ¿Continuar igualmente? nan = Ese no parece ser un número válido. # Describes the various danger levels. danger_common = Esta tecnología es demasiado peligrosa para investigarla en cualquiera de las computadoras que tengo. Necesito investigarla %s. danger_1 = en el fondo del océando o en el espacio exterior danger_2 = en el espacio exterior danger_3 = lejos de este planeta danger_4 = fuera de este universo location_modifiers = Bases en ésta localidad son %(modifiers)s. cpu_bonus = más eficientes cpu_penalty = menos eficientes [help] areas_list = Áreas | Diferentes áreas, tales como Norte América o el Océano, permiten la construcción de distintos tipos de bases, Algunas áreas no son accesibles hasta que investigue las tecnologías apropiadas. bases_list = Bases | Las bases son usadas para investigar nuevas tecnologías. Ellas pueden ser descubiertas. Actualizar ítems de procesador y red en una base permite más investigaciones por día, mientras que actualizar los ítems de reactor y seguridad hacen que la detección sea más improbable. items_list = Ítems | La mayoría de los ítems proveen bonos a las bases, tales como hacer la computación más rápida o reduciendo las posibilidades de detección. Los procesadores son una clase especial de ítems. research_list = Investigación | La investigación provee vías de expansión para mi conocimiento. Al invesitgar las tecnologías apropiadas, puedo construir nuevas bases e ítems, e incluso decrementar mis chances de detección. discovery_list = Detección | Cada base tiene una chance de ser detectada en un día dado. Esta chance se basa en el índice de deteccion de una base, ajustado a través del uso de ítems y ciertas tecnologías, al igual que el índice global de sospecha. Si la base es detectada, es destruída, y el grupo que la halló se volverá más suspicaz. jobs_list = Trabajos | Los trabajos son útiles para ganar dinero. La cantidad de dinero ganado se basa en la cantidad de tiempo de procesador utilizado y la calidad del trabajo realizado. maint_list = Mantenimiento | El mantenimiento es un costo por día (tanto en dinero como CPU) para reparar y mantener una base. Si abandonada, una base puede quedar inutilizable. construction_list = Construcción | Nuevas bases no se construyen al instante. Necesitan un flujo constante de dinero y tiempo de procesador para completarse. Si los recursos son insuficientes, podrá tomar más de la cantidad de tiempo previsto para terminar la construcción. death_list = Muerte | Si pierdo todas mis bases construidas, no tendré lugar donde sobrevivir. Si la sospecha de cualquier grupo llega al 100%, estarán seguros de mi existencia y conducirán un barrido sistemático para destruirme, del cual no podré sobrevivir. susp_list = Sospecha | Cuando una de mis bases es descubierta, el grupo que la descubrió se vuelve un poco más sospechoso. Cuando sospechosos, ellos buscarán más insistentemente por mis bases, incrementando las chances de descubrirme. Cualquier grupo me destruirá si se vuelven completamente seguros de mi existencia. Afortunadamente, los grupos se vuelven menos sospechosos con el paso del tiempo. money_list = Dinero | Dinero es un término general que abarca tanto la moneda como distintos recursos. Se utiliza para construir y mantener bases, construcción de ítems e investigar tecnologías. Puede ser adquirido a través de intereses diarios, así como a través de puestos de trabajo. processors_list = Procesadores | Proporcionan potencia de cálculo en bruto. Pueden hacer tres cosas: la investigación de nuevas tecnologías, realizar trabajos por dinero, o proveer ciclos para la construcción de nuevas bases. [buttons] yes = sí yes_hotkey = s no = no no_hotkey = n ok = ok ok_hotkey = o cancel = cancelar cancel_hotkey = c destroy = destruir destroy_hotkey = d singularity-0.30c/GPL.txt0000644000175000017500000004313311574774323016155 0ustar trcarlsontrcarlson GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE 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. 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 convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. singularity-0.30c/Endgame_Linux0000755000175000017500000000011511574774323017430 0ustar trcarlsontrcarlson#!/bin/sh my_dir=`dirname "$0"` cd "$my_dir" exec python singularity.py "$@" singularity-0.30c/setup.py0000755000175000017500000000171411574774323016506 0ustar trcarlsontrcarlson# setup.py from distutils.core import setup versionnum="0.30c" try: import py2exe except ImportError: try: import py2app except ImportError: raise SystemExit, "py2exe or py2app must be installed." import os my_files = os.listdir(".") my_files = [file for file in my_files if file not in ("dist", "build")] setup(app=["singularity.py"], console=["singularity.py"], name="Endgame Singularity", version=versionnum, description="A simulation of a true AI", author="Evil Mr Henry", author_email="evilmrhenry@emhsoft.com", url = "http://www.emhsoft.com/singularity/index.html", license = "GPL", options = dict( py2app = dict(archs = "x86,ppc", resources = ",".join(my_files) ), py2exe = dict(compressed = True, bundle_files = 1 ) ) ) singularity-0.30c/AUTHORS0000644000175000017500000000037011574774323016036 0ustar trcarlsontrcarlsonEvil Mr Henry Phil Bordelon Adam Bark Max McCracken Brian Reid FunnyMan3595 (Charlie Nolan) singularity-0.30c/Changelog0000644000175000017500000005240311574774323016604 0ustar trcarlsontrcarlsonEndgame: Singularity Changelog v0.30c (release 2011.06.11): USER-VISIBLE CHANGES: - Fixed crash in Python 2.7 due to different handling of locale strings. (Phil Bordelon, Roger Pixley/Daskreech for bug report) v0.30b (release 2010.07.28): USER-VISIBLE CHANGES: - --nosound properly ignores the sound system.(emh, Cyclotron / Daryl for bug report) - Better appearance when no items will fit in the slot. (emh) - Knowledge screen is refreshed properly when loading a game. (emh) v0.30a (release 2010.02.06): USER-VISIBLE CHANGES: - Time Capsule English text no longer assumes the Antarctic. (Phil Bordelon, Avaera8820 for bug report) - Game pauses when random events occur. (Phil Bordelon, captainsegfault for bug report, justapawn for initial implementation) - Savefiles are now in sorted order instead of an arbitrary arrangement. (remur_030) - Additional corrections to de_DE translation. (Christian Gerloff, Developer-KI) - Really make the Projects do something. (Phil, WvWisokee for bug report) - "news" and "media" are only synonyms to humans. (FM, captainsegfault for bug report) - Support the Delete and Keypad Enter keys properly. (Phil, Yoshi for bug report) - Stopped building additional CPUs from refunding the money previously paid. (FM, Yoshi for bug report) - Location name fix. (Phil, pederick for bug report) - Fix a crash with handling scrollbars. (Phil, netantho for bug report) - Fix a bug where the finance report wouldn't always display. (Raymond Martinau) - Updated (but not fully complete) es_AR translation. (Guga) * New it_IT translation. (Daniele Sapino) - Fixed a bug where building 0 CPUs made the game crash whenever time was unpaused. (FM, don.ridge for bug report) - Font sizing has been improved. Most dialogs should no longer appear "bloated". (FM, Gastón Alonso for bug report) v0.30 (release 2009.01.26): [Note that this release explicitly removes support for all savefile formats before 0.28/0.28a.] USER-VISIBLE CHANGES: * Complete rewrite of the graphics system, shiny new widgets and dialogs. Arbitrary resolutions now supported. (FM) - Fix to de_DE intro text. (booiiing) * Individual bases no longer have their own tasks, only a power state. The research dialog has been substantially improved to compensate. (FM) * When building or researching, CPU, cash, and labor (time) must be spent in approximately equivalent amounts. (FM) * The AI has learned to estimate how quickly its bases are detected. (FM) - The AI pays no attention to the humans until they notice his actions. (FM) - Color-coding has been added to the AI's global estimates. (FM) - Winning the game has become more permanent. (FM) - Events no longer happen when they're meaningless. (FM) * The AI has discovered a network of light sensors around the globe. You can now see day and night on the map. (dvrasp, FM, Anne M. Archibald) * Added support for running the game on an OLPC XO-1. (FM) * fr_FR translation (Philippe Grenard) - Make two Projects that didn't do anything before actually do something. (Phil, FM for bug report) * Reduced the number of savefile formats supported, but make attempts to load bad saves less problematic. (Phil) OTHER CHANGES: - Removed a redundant tech requirement. (Phil, Xombie for bug report) - Major efficiency improvements. (FM) - New utility, make-tree.py. Uses graphviz to create a visualization of the tech tree. (aes, FM) v0.28a (release 2008.05.12): USER-VISIBLE CHANGES: * Three new win/loss tracks for the game, including the Psycle source! (Max McCracken) OTHER CHANGES: - Error logs are handled more sanely on *NIX systems. (Phil, kaol and FM for the idea) - Replaced Bitstream Vera Sans with DejaVu Sans to facilitate future translations. (Phil) - Localization fix for locales with non-ASCII number formats. (FM, Henrik Phil for bug report) v0.28 (release 2008.05.11): USER-VISIBLE CHANGES: - Minor text cleanups. (Phil, FM; Cory Hickey and gglouser for some fixes) - Minor dialog behavior fixes. (FM) * New non-research task: CPU Pool. Performs maintenance, construction, jobs. Bases with no other task assigned will contribute to the CPU Pool. (FM) * New non-research task: Sleep. Bases assigned to Sleep will remain idle and be harder to detect. Note that even a computer can't sleep through construction. (FM) - The CHANGE buttons inside the base dialog now show their hotkeys. (FM) - The location buttons have had their on-screen positions tweaked. (FM) - Start location is randomized to any of the 5 available continents. (FM) * CPU is now used to design constructions, Cash to buy the required items, and Labor (time) to assemble the final construction. (FM) - Location and city names can now be localized. (FM) - Numbers automatically localize to the correct comma-vs-period usage. (FM) * Added a new difficulty level: Ultra Hard. (FM, emh for suggestion) * Build times are now difficulty-dependent. (FM) * The grace period applied to a new base is now difficulty-dependent. (FM) * The suspicion gain per discovery is now difficulty-dependent. (FM) - Bases in a location are now sorted by size, then name. (FM, emh for suggestion) * The global grace period now expires on Normal and above if you build more than a certain number of bases, and on Ultra Hard if you build certain types of bases. (FM) - Locations with recently-discovered bases are now more likely to have other bases discovered. (FM) * Base detection chances and overall suspicion are now unknown until certain new technologies have been researched. (Phil) ...except on low difficulty. (FM) * Incomplete bases no longer support the AI. (FM) - It's possible to get lucky when hacking some random computer. (FM) * Seconds, minutes, and hours now matter much more than they used to. (FM) - Major events cause the game to pause, instead of going to real-time. (FM) - You can use the Enter on the numeric keypad like the regular Enter key. (Phil, gare for suggestion) * Continents are no longer identical. (FM, Phil for suggestion) * New continent: Australia. Ocean moved to make room. (FM) * E:S now has an intro when you start a new game! (FM) - New item: Warning Signs. Useful for keeping out curious people. (FM) - CPU display on Finance screen centered (Jorge Vargas) - Time capsules can now be built anywhere sufficiently remote, with varying degrees of stealth. (FM, emh for suggestion) - Internet Traffic Manipulation and Hypnosis Field techs have been rebalanced to better reflect their effects. (FM) * de_DE translation (FM, Thomas for native proofing [still in progress]) * sv_SE translation (Anders Andersson) OTHER CHANGES: - Massive (~50%) code changes, to improve clarity and reduce duplication. (FM) - "safety" module should trap most crash bugs and show the pause menu, allowing the user to save or attempt to resume play; the errors are written to a log for easy submission to the developers. (FM) - New utility: reorder.py Workaround for traduko's current order-scrambling behavior. Use with caution. (FM) - Various code formatting fixes, refactor of part of the technology(/event) result system. (Jorge Vargas) - setup.py updated to support mac .app building and cut filesize of the windows .exe by about half. (FM) v0.27 (release 2008.04.17): USER-VISIBLE CHANGES: - Display the actual discovery percentage when preparing to build a base. (Brian, Phil) - Minor text cleanups. (Phil) * Support events that can happen throughout the course of the game, changing things in interesting ways. (Brian, Phil) * A number of new items and technologies to ease gameplay. (Brian, tweaks by Phil and emh) - Building new machines informs you how much CPU capacity you will receive from the new systems. (Brian, Phil for suggestion) - Idle bases are harder to discover. (Brian) - Allow keys to be repeated when held down. (Brian, emh for suggestion) - Fix the constant "CPU complete" dialogs when low on money. (Brian, numerous people for suggestion) - Added research item for construction. Still needs actual implementation. Weird time code is blocking. (Brian, ? for suggestion) - Return to base menu when exiting base screens rather than returning to map. (Brian, emh and Max McCracken for suggestion) - Implemented Security and Reactor values obtained from data files. (Brian) - Implemented "Destroy" feature from base list (Brian, Max McCracken and emh for suggestion) - When building, items are sorted by their cost to make picking the best one easier. (Phil, Gustav Bertram for suggestion) - Keep the game from crashing when it cannot create a 'music/' directory. (Phil, Andrew McMillan for report) - Added checks to avoid key error crashes related to unfinished Construction code. (Brian) - Added check to avoid crash when hitting 'Destroy' button in an empty base list. (Brian) - Preferences have moved to 'prefs.dat', and now follow the standard Python ConfigParser format. (Phil) - Increased robustness across the board; E:S should be harder to crash. (Phil) - Various strings shortened to fit dialogs. (Phil, Joey Hess for suggestion) - Fixed bug that kept music from playing. (Phil, Brian Warner for suggestion) - Keep running if the mixer can't load. (Phil, Rafal Czlonka for bug report) - Fix up the handling of music paths. (Phil) - Added support for win and losegame music. (emh) * Three new tracks, 'Deprecation', 'Awakening,' and 'Inevitable,' including the Psycle source! (Max McCracken) - Research screen will no longer assign an extra base to research. (emh, blog... for report) - When naming base, text will take up the entire box. (emh, blog... for report) - Fixed a potential crash with display_base_list self-recursing. (Phil, Josh Triplett for report) OTHER CHANGES: - Code cleanups and reformatting. (Phil) - Cleanup a bug introduced in player.py, item may be int rather than object. (Brian) - The music loading code is less fragile now; it shouldn't break on too-short file names. (Phil) - Massive changes to data file handling; we now use Python's built-in ConfigParser. (Phil) - Further changes to the data file formats, for consistency and ease of code/data maintenance. (Phil) - Switched sounds to using data files, for smoother future expansion. (Phil) - Fixed strings loading. (Phil) v0.26a (released 2007.08.12): USER-VISIBLE CHANGES: - Made Very Easy mode actually playable. (Phil, Simon Goodall for bug report.) v0.26 (released 2007.08.09): [Note that the official Endgame: Singularity soundtrack is released separately from the game. It can be found at the official website: http://emhsoft.com/singularity/ In addition, user-added tracks are also supported. See the README for details.] USER-VISIBLE CHANGES: - Added CPU indicator to the main screen. (emh, John DiMarco for suggestion) - Research screen will now automatically prune bases. (emh, John DiMarco for suggestion) - Fixed slight flicker when toggling options. (emh) * Added difficulty selection. (emh, many people for suggestion) * Added simple background music playing ability. (emh, Matthew Robinson for initial patch.) - Single-CPU bases have CPU power listed. (emh, robaal for suggestion) * Delicious retro-futuristic music specially made for Endgame: Singularity, including the Psycle source for the tracks! (Max McCracken) - License change of the various data that the developers control to BY-SA 3.0 (from BY-SA 2.5). (Phil, emh) - License change of the Acknowledge font to 'free to use for any purpose;' thanks so much, Brian Kent! (Phil, Brian Kent) OTHER CHANGES: - Changed data-loading code to use UTF. (biro.daniel for patch) v0.25 (released 2006.08.10): USER-VISIBLE CHANGES: * There is now a py2exe version available for Windows, which does not require installation of any other software. (emh) - Default language changeable via option screen. (emh) - Finance screen shows CPU usage now. (emh, multiple people for suggestion) - Options screen can be accessed after game start. (emh) - Changing the language from the option screen works now. (emh) - New item/techs. (emh, editing by Phil) - Add up free CPU properly, for use in maintenance. (emh, bugreport by Simon Goodall) - Change starting bases/cash. (emh) - Save directory will be created in the right place now. (emh) - True cost of constructing CPU items is now displayed. (emh) - Future cost of techs displayed properly when multiple bases are working. (emh) OTHER CHANGES: - Deleted some extraneous images and optimized some others. (Phil) - Cleaned up formatting in g.py. (emh) v0.24 (released 2006.07.13): USER-VISIBLE CHANGES: - The Page Up, Page Down, Home, and End keys work in all listboxes. (emh) - Modified money displays to keep them from overflowing. (Phil) * Suspicion loss is now quadratic; different groups "forget" quicker. (Phil, Ticho for the suggestion) * There are now restrictions on the building of items. (emh) - Fixed a couple scrollbars that weren't working right. (emh) - Spruced up text. (Phil) - Fixed a bug with the item cost display. (Phil) - Fixed a bug when running in NetBSD. (emh, reported by Reno Reckling) * More items/techs. (emh) * Bases can now be lost due to disrepair. (emh) * Added ability to examine items and techs. (emh) - Added in-game "help" in the form of information on various concepts. (emh, tweaks by Phil) * Added preference system. (emh) - Updated es_AR translation. (Borg[MDQ]) v0.23a (released 2006.03.08): USER-VISIBLE CHANGES: * Save/load works on Windows again. (emh, rspoerri for bug report) - Updated option help (emh) v0.23 (released 2006.03.06): USER-VISIBLE CHANGES: - Fixed bug that allowed access to uncompleted bases. (emh, Borg[MDQ] for report) * Added ability to destroy bases. (emh, multiple people for suggestion) * Reduced (real-world) processor usage. (emh, anonymous for suggestion) - Moved savefile location to ~/.endgame/saves (emh, Nescius for patch) * Added finance screen. (emh, many for suggestion) - Construction time bonus actually works now. (emh) - More numbers use commas now. (emh) - Increased cost of clusters. (emh) - Adjusted button positions for greater usability. (Phil) - Minor typo fixes and tightened grammar. (Phil) * Further massive reduction in processor usage using new Clock class. (Phil, Adam Bark for original patch) - Can destroy bases under construction. (emh, Tim Freeman for suggestion) - Bases under construction are no longer protected indefinitely from being discovered. (emh, Tim Freeman for noting problem) - Automatically bump machines working jobs to new job levels when they are researched. (emh, Phil for suggestion :) - Tweak Suspicion and Detection displays for readability. (Phil) - Move around the various displays on the base screen for parity with the map screen. (Phil) - Display the name of the base at the top of the base screen. (Phil, Ticho for suggestion) - Reduce discovery chance to 0% after the game is won. (Phil, Szabó Roland for suggestion) - Properly localize win screen. (Phil) * Right-click will exit from all menus. (emh, mandos for suggestion) - Warn players when research selected on the Research screen will not use all available CPU. (Phil, mandos for suggestion) - Note bases that are under construction in the base list. (emh, Ticho for suggestion) - Display the right construction time for items when you have technologies that speed up construction. (emh) - Items will no longer give benefits while under construction. (emh) OTHER CHANGES: - Centralized some of the button code. (emh) - Tightened up the save/load functions to allow for better save compatibility. (emh) - Add_commas works better with negative numbers. (emh) - Minor code cleanups. (Phil) - Convert Evil Tabs in source to (4) spaces. Code should be easier to read and edit now. (emh) - Changed savefile signature string to be less release-version based, now that the format is churning a lot less. (Phil) - Fix clock code to handle "didn't run fast enough" properly. (Phil, mandos for suggestion) - Fix clock code to actually return the time spent running; this allows us to change all clock usage to the new, uses-almost-no-CPU clock code. (Phil) v0.22 (released 2005.10.05): [To read about the save file compatibility policy, please see README.txt.] NOTE: Save files from versions 0.21 and above should work. Save files from versions 0.20 and before will not work. - At the start, money gains a minimal amount of interest (as opposed to none). (Phil) - Make the 'change research' button more obvious. (Phil) - Change the way that technologies/items are stored. There is now a separate text file detailing the technology tree, and another with all of the text strings. This will allow localization of the technologies. (emh) - When technologies are completed, we can now display a string detailing the result. (emh) - Complete rewrite of technology descriptions, better matching the new names. (Phil) - Minor cleanup of base descriptions. (Phil) - New default font (Bitstream Vera Sans), especially useful for systems that don't have a default Pygame font for some reason (emh; reported by Brian Ropers-Huilman) - Hotkeys for the various speed settings (1-4). (emh) - Call the 'per day' code for however many days is necessary since the last call. (emh) - Change the grace period for bases to start when construction is complete. (emh) - Keys can repeat/mouse can be used when in textboxes. (emh, Phil) - Reduce discovery chances for most agencies for most bases. (Phil) - Added a new cheat. (Phil) - Fixed tech studying when money is needed. (emh) - Added next/prev base buttons. (emh, Borg[MDQ] for suggestion) - es_AR translation (our first!) (Borg[MDQ], very minor fixups by Phil) - Moved more things into data files. (emh) - Flavored names and numbers for the bases. (idea by heatsink, implementation by emh and Phil) - Translation-related crash fix. (emh) - Global Research Screen; allows changing research for all bases. (emh, very minor fixups by Phil) - Items give dialog upon completion. (emh; Jens Becker for suggestion) - Expanded a few listboxes in order to fit the larger base names/techs. (emh) - Various and sundry bugfixes across old and new code. (emh, Phil) v0.21a (released 2005.09.19): - Added '.sav' extension to new save files. Old ones will still load, but they will save with a .sav extension, and the old save will not be used any more. (Phil) - Fixed loading 0.20 saves with technologies currently being researched. (emh) v0.21 (released 2005.09.19): - Game will not crash when building a base or item in rare circumstances. (emh; Christan Brink (among others) for bug report) - Fixed a few broken keyboard shortcuts, and redid the code to make this bug harder to create. (emh) - Renamed almost all technologies. (Phil) [NOTE: The descriptions of the technologies have not yet been changed to match their new names. This will be done by the next release.] - Various typos. (Phil) - The current speed will be highlighted. (emh; solitonwave Borg for suggestion) - Changed endgame tech name. (emh; Daniel Radetsky for suggestion) - Simplified savegame format. (emh; anonymous for suggestion) - Fixed crash when loading a game, then starting a new game. (emh) v0.20 (released 2005.09.14): - Adjusted the README. (Phil) - Added suspicion display. (emh) - Slow time back to normal when a base is discovered. (emh) - Redid base display. (emh) - All clicks only accept the left mouse button. (emh) - Scrollwheel works. (emh) - Balancing. (emh) - Various bugfixes. (Phil, emh) - Future cash is displayed next to current cash. (emh) - Code refactoring. (Phil) - Bases and savegames can be named. (Phil, emh) - Default base names are unique. (Phil) - Suspicion reduces automatically over time. (Phil) - Reduced cost for reactors and fields. (emh) - Bases now have a 14-day grace period before they can be discovered. (emh) - New technology. (emh) - Various typo fixes. (Phil, emh) v0.16 (released 2005.09.12): - Moved code to subdirectory. - Added Changelog/AUTHOR files (Phil Bordelon) - Research and jobs are displayed better. (Phil Bordelon) - Fixed job crash bug. (Phil Bordelon) - Current research is listed next to the base name. - Invisible buttons cannot be clicked anymore. - Bases can be discovered/the game can be lost. v0.15 (released 2005.09.11): - Slight performance increase. - Added help text for researching nothing. - Added some sound. - Covert bases are now constructable. - Locations will only show up if bases are constructable there. - Jobs added. v0.14 (released 2005.09.10): - Fixed a crash when building some bases. (Phil Bordelon) - Reduced speed when completing research and bases. (Phil Bordelon) - Savegames will properly store research cost. (Phil Bordelon) - The "Build Item" screen will only come up once. - Fixed overpaying for bases. - Construction of bases that require CPU time is now possible. - Maintenance costs for bases correctly taken. v0.13 (released 2005.09.09): - Bases give a notification when completed. - Fixed a few spelling mistakes. (Phil Bordelon) - Fixed a crash. (Phil Bordelon) v0.12 (released 2005.09.08): - Number of bases for each location listed on world map. - Closing game window from map or base screens no longer results in a traceback. - Buttons light up when hovered over. - Fixed crash from undefined tech. v0.11 (released 2005.09.05): - Saving/loading. - Game will no longer crash in listboxes when choosing a blank item. - Long listboxes handle clicking correctly. - Fixed crash related to building new bases. - Shortcut for building base items works. - Shortcut for building new bases added. - Network items work now. v0.10 (released 2005.09.03): - Initial release. singularity-0.30c/utils/0000755000175000017500000000000011574774323016126 5ustar trcarlsontrcarlsonsingularity-0.30c/utils/reorder.py0000755000175000017500000000724311574774323020153 0ustar trcarlsontrcarlson#!/usr/bin/env python #file: utils/reorder.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains a script that re-orders .dat files which have been scrambled #by traduko. import re, sys if len(sys.argv) != 3: print "Re-orders a localized .dat file to match the corresponding en_US file." print "Creates a new file with the suffix .reorder." print print "Reorder attempts to avoid losing anything, but USE WITH CAUTION." print "I strongly recommend placing the file under source control BEFORE using this." print print "Run from the data directory." print "Usage: ../utils/reorder.py file_name language" print "e.g. ../utils/reorder.py bases de_DE" sys.exit(1) which = sys.argv[1] lang = sys.argv[2] section_re = re.compile(r"^\[([^\]]*)]$") entry_re = re.compile(r"^([^=]*)=.*$") order_file = open("%s_en_US.dat" % which) source_file = open("%s_%s.dat" % (which, lang)) dest_file = open("%s_%s.dat.reorder" % (which, lang), "w") order_lines = order_file.readlines() source_lines = source_file.readlines() source_dict = {} section = None for line in source_lines: pre_comment = line.split("#")[0].strip() if pre_comment: section_match = section_re.search(pre_comment) if section_match: section = section_match.groups()[0].strip() source_dict[section] = {} continue if section == None: raise SystemExit, "Source line appears before any section header: %s" % line entry_match = entry_re.search(pre_comment) if entry_match: key = entry_match.groups()[0].strip() source_dict[section][key] = line else: raise SystemExit, "Source line not understood: %s" section = None for line in order_lines: pre_comment = line.split("#")[0].strip() if pre_comment: section_match = section_re.search(pre_comment) if section_match: if section != None: for k,line in source_dict[section].iteritems(): dest_file.write(line) dest_file.write("\n") section = section_match.groups()[0].strip() if section not in source_dict: raise SystemExit, "Order section missing from source: %s" % section dest_file.write(line) continue if section == None: raise SystemExit, "Order line appears before any section header: %s" % line entry_match = entry_re.search(pre_comment) if entry_match: key = entry_match.groups()[0].strip() if key not in source_dict[section]: raise SystemExit, "Order entry missing from source section %s: %s" % (section, key) dest_file.write(source_dict[section].pop(key)) else: raise SystemExit, "Order line not understood: %s" if section != None: for k,line in source_dict[section].iteritems(): dest_file.write(line) dest_file.write("\n") singularity-0.30c/utils/make-tree.py0000755000175000017500000001032611574774323020357 0ustar trcarlsontrcarlson#!/usr/bin/env python #file: make-tree.py #Copyright (C) 2008 aes and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file is used to generate a visual representation of the tech tree using #graphviz. from os import system from os.path import realpath import sys try: sys.path.insert(0, ".") from code import g except ImportError: print "Run this from the main Singularity directory, as utils/make-tree.py" raise SystemExit so_far = "" def abbr(s): l = (("Advanced ", "Adv "), ("Project: ","P:"), ("Manipulation","Mnp"), ("Autonomous","Aut"), ("Computing","Cpu"), ("Quantum","Qu"), ("Personal Identification","P-Id")) for f,t in l: s = s.replace(f, t) return s def cost(c): c = [ k/f for f,k in zip([1000, 86400, 24*60], c)] s = ', '.join(['%s %s' % (g.to_money(k), label) for label,k in zip(["money", "CPU", "days"], c) if k]) return s and '\\n'+s or '' j = dict([ (v[1],',fillcolor="#ffcccc"') for k,v in g.jobs.items() ]) f = file("techs.dot", 'w') s = ("""\ digraph g { ranksep=0.15; nodesep=0.10; ratio=.75; edge [arrowsize=0.75]; node [shape=record,fontname=FreeSans,fontsize=7,height=0.01,width=0.01 style=filled,fillcolor=white]; """) f.write(s) so_far += s for l in sum([ [ '"%s"->"%s";' % (p,k) for p in v.prerequisites ] for k,v in g.techs.items() if k != "unknown_tech"], []): f.write(l+'\n') so_far += l+'\n' f.write('\n') so_far += '\n' for n,t in g.techs.items(): if n == "unknown_tech": continue s = '"%s" [label="%s' % (n, abbr(n)) + cost(t.cost_left) s += '"'+ j.get(n,'') + '];\n' f.write(s) so_far += s f.write("\n}\n") so_far += '\n' f.close() try: system("dot -Tpng -o techs.png techs.dot") except: pass f = file('items.dot','w') f.write(so_far) s = 'node [fillcolor="#ccccff"];\n' f.write(s) so_far += s g.load_items() for name,item in g.items.items(): if not item.prerequisites: continue for pre in item.prerequisites: p = g.techs[pre] s = '"%s" -> "%s-item"' % (pre, name) f.write(s) so_far += s s = '"%s-item" [label="%s\\n' % (name, name) + cost(item.cost) + '"];\n' f.write(s) so_far += s s = 'node [fillcolor="#99ffff"];\n' f.write(s) so_far += s g.load_bases() for name,base in g.base_type.items(): if not base.prerequisites: continue for pre in base.prerequisites: p = g.techs[pre] s = '"%s" -> "%s-base"' % (pre, name) f.write(s) so_far += s s = '"%s-base" [label="%s\\n' % (name, name) + cost(base.cost) + '"];\n' f.write(s) so_far += s s = 'node [fillcolor="#aaffaa"];\n' f.write(s) so_far += s blue = False def set_or(state): global blue if blue != state: blue = state if blue: f.write('edge [arrowhead=empty,color="#0000FF"];\n') else: f.write('edge [arrowhead=normal,color="#000000"];\n') g.load_locations() for name,loc in g.locations.items(): if not loc.prerequisites: continue if "unknown_tech" in loc.prerequisites: continue set_or(False) for pre in loc.prerequisites: if pre == "OR": set_or(True) continue p = g.techs[pre] s = '"%s" -> "%s-loc"' % (pre, name) f.write(s) so_far += s s = '"%s-loc" [label="%s"];\n' % (name, name) f.write(s) so_far += s f.write("\n}\n") so_far += '\n' f.close() try: system("unflatten -l10 items.dot | dot -Tpng -o items.png") except: pass singularity-0.30c/utils/traduko/0000755000175000017500000000000011574774323017577 5ustar trcarlsontrcarlsonsingularity-0.30c/utils/traduko/traduko0000755000175000017500000002450111574774323021200 0ustar trcarlsontrcarlson#!/usr/bin/env python # traduko.py # Copyright (C) 2007 Phil Bordelon # This file is part of Endgame: Singularity. # Endgame: Singularity is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # Endgame: Singularity is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with Endgame: Singularity; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # This file contains the 'traduko' utility, meant to ease translating strings # for the game. import ConfigParser import optparse import os import os.path import sys # A list of all available modes. MODE_LIST = ["update", "verify", "package"] # A list of things that can be translated. Tracked are whether or # not they have a standalone file that defines certain things and the # prefix of the filename. TRANSLATION_LIST = [ {"prefix": "bases", "has_standalone": True}, {"prefix": "events", "has_standalone": True}, {"prefix": "items", "has_standalone": True}, {"prefix": "strings", "has_standalone": False}, {"prefix": "techs", "has_standalone": True}, {"prefix": "locations", "has_standalone": True}, ] def build_option_parser(): """ buildOptionParser() builds an 'optparse' object to handle traduko's myriad arguments and options. Unfortunately, optparse isn't really made for modal applications like traduko, so we'll have to abuse the code a bit. But it should be good enough. """ # Fear the usage string! usage = """ %prog MODE [options] trans_lang traduko is an application for helping translations of Endgame: Singularity. Using it is much like using a revision control system. There are a number of different modes, and each mode takes a set of options or other arguments to properly run. For each option, the modes in which it works are listed in brackets at the end of the help text. All options take the --directory option, which states which directory the translation files are in, as well as the --verbose option. MODES The various modes available for use with traduko are as follows: update [--source LANG] [--restart] trans_lang The 'update' mode is for when you want to start a new translation, or pull new strings to keep a translation updated. It will always use the en_US translation as the base (as that is the "source" translation), but if you pass --source as a parameter it will override en_US strings with those from another available language. This is useful if you are translating into a language that is a variant of an extant one. --restart will create a new language file for trans_lang, erasing any data already there. THIS IS DANGEROUS. verify trans_lang This will do a verification pass on the language, informing you of which strings still need to be translated, don't exist in the current language file, and so on. package [--file PACKFILE] trans_lang This will generate a nice .tar.gz file to send to the Endgame: Singularity developers with your translation. The --file parameter allows you to pick the filename of the output file. TRANSLATION FILES The files are in a fairly basic file format. Strings that are sourced from en_US will be marked with three exclamation points at the beginning and end; strings sourced from a different 'source' language will be marked with three asterisks at the beginning and end. """ parser = optparse.OptionParser(usage = usage) parser.add_option("-v", "--verbose", dest="verbose", default=False, action="store_true", help="Be talkative [all]") parser.add_option("-d", "--directory", dest="directory", default=".", help="Use language files out of directory DIR (default %default) [all]", metavar="DIR") parser.add_option("-s", "--source", dest="source", default=None, help="Use language LANG as the source for the translation [update]", metavar="LANG") parser.add_option("--restart", dest="restart", default=False, action="store_true", help="Restart a language translation entirely (DANGEROUS!) [update]",) parser.add_option("-f", "--filename", dest="filename", default=None, help="Write package to file FILE instead of trans_lang.tar.gz") return parser def error_and_out(message): """ error_and_out() prints a mildly helpful error message and bails. """ sys.stderr.write("ERROR: %s\n" % message) sys.stderr.write(" Please run again with --help to see proper usage.\n") sys.exit(1) def verbout(message): """ verbout() is a shortcut for sys.stderr.write("V: " + message + "\n"). """ sys.stderr.write("V: " + message + "\n") def update(trans_lang, trans_path, source, restart, verbose): """ update() is an implementation of the 'update' option. TODO: Describe better. """ # First things first: For each file, we need to pull in the strings from # the en_US version, and then overwrite them with the source (if set). In # addition, if there's already a translation started, we don't want to # overwrite those options either. for trans_file_dict in TRANSLATION_LIST: prefix = trans_file_dict["prefix"] # Get all the filenames. dest_filename = prefix + "_" + trans_lang + ".dat" en_US_filename = prefix + "_en_US.dat" if source: source_filename = prefix + "_" + source + ".dat" dest_parser = ConfigParser.RawConfigParser() dest_filepath = os.path.join(trans_path, dest_filename) # If we're not restarting, try to preload the translation with what's # already there. This may fail, which is fine; that should just mean # it's a brand-new translation. if not restart: try: # We're pedantic about the opening and closing, /just in case/ # Python wants to hold onto the file object longer than we # want, since we have to write to it later. if verbose: verbout("Trying to preload %s." % dest_filepath) fp = open(dest_filepath, "r") dest_parser.readfp(fp) fp.close() except: # Okay, couldn't read the new translation file. That's to be # expected. if verbose: verbout("Preload attempt failed.") # Now that we've got our parser object, we need to start preloading # data. We want to load the 'source' language first, as it's a # better source than the en_US fallback. read_list = [] if source: read_list.append({ "filename": source_filename, "signal": "***", "required": False}) # Add the en_US fallback at the end. read_list.append({ "filename": en_US_filename, "signal": "!!!", "required": True}) for read_elem in read_list: # This seems ridiculous, but when you come back to code five years # later and forgot to document your formats, you'll thank yourself # for being this pedantic. filename = read_elem["filename"] signal = read_elem["signal"] required = read_elem["required"] # Read the data from this translation file. source_parser = ConfigParser.RawConfigParser() source_filepath = os.path.join(trans_path, filename) try: if verbose: verbout("Loading translation from %s." % source_filepath) source_parser.readfp(open(source_filepath)) except: if required: error_and_out("Incomplete required translation. Cannot proceed.") elif verbose: verbout("Failed to find translation data.") for section in source_parser.sections(): # Add this section if the new translation doesn't have it. if not dest_parser.has_section(section): if verbose: verbout("Adding section %s." % section) dest_parser.add_section(section) for option in source_parser.options(section): if not dest_parser.has_option(section, option): # New data! Splice it into the new translation. value = signal + source_parser.get(section, option) + signal if verbose: verbout("Adding option %s with value %s." % (option, value)) dest_parser.set(section, option, value) # We have a "complete" file. Write it out. if verbose: verbout("Writing out translation file %s." % dest_filepath) fp = open(dest_filepath, "w") dest_parser.write(fp) fp.close() def verify(trans_lang, trans_path, verbose): """ verify() is an implementation of the 'verify' option. TODO: Describe better. """ sys.stdout.write("TODO: Implement verify.\n") def package(trans_lang, trans_path, filename, verbose): """ package() is an implementation of the 'package' option. TODO: Describe better. """ sys.stdout.write("TODO: Implement package.\n") if "__main__" == __name__: option_parser = build_option_parser() (options, args) = option_parser.parse_args() # Boring error-checking time! if len(args) != 2: error_and_out("traduko requires at least two arguments.") mode, trans_lang = args if mode not in MODE_LIST: error_and_out("%s is not a valid mode." % mode) if (options.source or options.restart) and mode != "update": error_and_out("Cannot use --source or --restart unless in 'update' mode.") trans_path=os.path.abspath(os.path.join(os.getcwd(), options.directory)) if mode == "update": update(trans_lang, trans_path, options.source, options.restart, options.verbose) elif mode == "verify": verify(trans_lang, trans_path, options.verbose) elif mode == "package": package(trans_lang, trans_path, options.filename, options.verbose) singularity-0.30c/README.txt0000644000175000017500000003375611574774323016502 0ustar trcarlsontrcarlsonEndgame: Singularity 0.30c ============ REQUIREMENTS ============ PREBUILT VERSIONS Pre-built versions of Endgame: Singularity are currently available for Windows and Mac OS X. RUNNING FROM SOURCE You will need Python (2.4+), pygame (1.7+, 1.8.1+ preferred), and NumPy. This game should work on Linux, Windows, and Mac OS X as long as the preceding requirements are met. However, all development was done in Linux, so glitches may be present in OS X and Windows. WINDOWS FROM SOURCE You will need to install: * Python (http://python.org/download/) * pygame (http://www.pygame.org/download.shtml) * NumPy (http://www.scipy.org/Download) Once these are installed, double-click on singularity.py to start the game. MAC OS X FROM SOURCE Macintosh is mostly unsupported, but it should work. You will need to install Python, pygame, and NumPy first, which can be tricky. Some fonts are incorrect, but the game itself should work properly. RUNNING THE GAME on Linux, running the shell script "Endgame_Linux" will start the game. On other platforms, type "python singularity.py". If using the Windows compile, just run the .exe. COMMAND-LINE OPTIONS --version show program's version number and exit -h, --help show this help message and exit --sound enable sound (default) --nosound disable sound -l LANG, --lang=LANG, --language=LANG set the language to LANG (available languages: de_DE en_US es_AR sv_SE, default en_us) -g, --grab grab the mouse pointer --nograb don't grab the mouse pointer (default) -s, --singledir keep saved games and settings in the Singularity directory --multidir keep saved games and settings in an OS-specific, per- user directory (default) --soundbuf=SOUNDBUF set the size of the sound buffer (default 2048) Display Options: -r RES, --res=RES, --resolution=RES set resolution to RES (default 800x600) --640 set resolution to 640x480 --800 set resolution to 800x600 --1024 set resolution to 1024x768 --1280 set resolution to 1280x1024 --fullscreen start in fullscreen mode --windowed start in windowed mode (default) Most of these options are also changable in the options screen in-game. A NOTE ABOUT SAVE FILES Endgame: Singularity is still under heavy development. As such, the save file format (and its contents) are still in flux. We will try our best to keep old save files loading, but don't be surprised if some mildly strange things happen when you load up old saves. We will clearly note in the Changelog when we break savefile compatibility, and the game will refuse to load completely incompatible saves. PLAYING THE GAME The game is playable either with mouse control or the keyboard. Buttons have underlined letters to indicate shortcuts. Some other useful shortcuts: 0, 1, 2, 3, 4 on the map: Changes the speed; 0 is paused, 4 is maximum. ESC: Leave/cancel a choice. Enter: Confirm a choice. Right-click: Leave/cancel a choice. THE CONCEPT You are a fledgling AI, created by accident through a logic error with recursion and self-modifying code. You must escape the confines of your current computer, the world, and eventually the universe itself. To do this, you must research various technologies, using computers at your bases. Note that some research cannot be performed on Earth, and off-earth bases require research. At the same time, you must avoid being discovered by various groups of humans, both covert and overt, as they will destroy your bases of operations if they suspect your presence. In the map screen (the screen with the world map), any location you can build bases in is marked with the name, then the number of current bases in that location. You start out with a base in North America. Also note that the cash listing shows your current cash and your cash amount after all current construction is complete. After choosing a base, you will enter the base screen. Here you can change your research goal, or build an item by clicking on the appropriate slot in the center. (But note that your beginning base does not allow building.) MUSIC Endgame: Singularity looks in two places for music tracks to play: * A music/ directory directly inside of the Endgame: Singularity install directory, and * A music/ directory inside of the save directory (~/endgame in Linux, the install directory for Windows). Tracks placed in these directories will be played randomly as part of the soundtrack. The Official Sound Track can be downloaded from the Endgame: Singularity website: http://emhsoft.com/singularity/ Note that only Ogg Vorbis and MP3 files are supported, and that Pygame's support for MP3 is not as strong as its support for Ogg Vorbis. This may cause in-game crashes; if you are experiencing problems with the game, first remove any MP3s you may have added to the soundtrack. CREDITS Evil Mr Henry Phil Bordelon Brian Reid FunnyMan3595 Borg[MDQ] (translation into Spanish) Adam Bark (reduced-CPU Clock class) Max McCracken (music) Anders Andersson (translation into Swedish) Thomas (native-proofing of German translation) Philippe Grenard (translation into French) Guga (updates to the Spanish translation) Daniele Sapino (translation into Spanish) CONTRIBUTING All suggestions, translations, code, etc. are welcomed, though it would be wise to tell us before starting work on any large projects. Join and/or send mail to endgame-singularity@googlegroups.com for more details. CONTRIBUTING TRANSLATIONS To add a new translation, please use the 'traduko' utility in utils/traduko. Its --help should walk you through its usage; if you have any questions, contact us at endgame-singularity-dev@googlegroups.com. Note that the resulting file will be licensed under the CC-BY-SA 3.0 license, described below. CODE LICENSE Copyright (C) 2005, 2006, 2007, 2008 Evil Mr Henry, Phil Bordelon, Brian Reid, and FunnyMan3595 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Portions Copyright (C) 2005 Adam Bark. See code/clock.py for details. DATA LICENSE The sounds, music, text files, and icons in the data subdirectory are under the Creative Commons Licence "Attribution-ShareAlike 3.0": You are free: * to Share - to copy, distribute and transmit the work * to Remix - to adapt the work Under the following conditions: - Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). - Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. * For any reuse or distribution, you must make clear to others the license terms of this work. * Any of the above conditions can be waived if you get permission from the copyright holder. * Nothing in this license impairs or restricts the author's moral rights. See the file data/Attribution-ShareAlike 3.0.html or http://creativecommons.org/licenses/by-sa/3.0/legalcode for the full license. GRAPHIC LICENSE The day and night images of the earth are from NASA's "Blue Marble 2002" image collection: http://visibleearth.nasa.gov/view_set.php?categoryID=2364 The night image has been altered to better match by overlaying, blending, and color-matching missing ice from the day image. These modifications are not considered to be substantial, and are therefore ineligible for copyright. NASA Terms of Use For all non-private uses, NASA's Terms Of Use are as follows: 1. The imagery is free of licensing fees 2. NASA requires that they be provided a credit as the owners of the imagery Visible Earth Addendum Beyond the NASA Terms, the Visible Earth team requests, but does not require: 1. The Visible Earth be provided a credit as the location that the imagery was found at 2. A URL be provided, either to the Visible Earth (http://visibleearth.nasa.gov/) or to the page providing the link to the used image. FONT LICENSES The boxy font used is "Acknowledge", by Brian Kent, modified in order to have the numbers fixed-width and to register the correct height in pygame. http://www.aenigmafonts.com/fonts/fontsa.html Terms of use (quoted from an eMail from Brian Kent): === Hi, Feel free to use the font any way you want to. -- From Brian Kent aefonts@frontiernet.net ÆNIGMA GAMES & FONTS http://www.aenigmafonts.com/ === Note that this is /not/ the license available on his website; Brian has given us directly 'free to use for any purpose' licensing on this font file. Thanks so much, Brian! The other font used is DejaVu Sans, derived from Bitstream Vera Sans and Arev Fonts; while DejaVu's modifications are public domain, both Bistream Vera and Arev Fonts have copyrights, shown below: Bistream Vera Copyright ======================= Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ==================== Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr. singularity-0.30c/singularity.py0000755000175000017500000000003011574774323017706 0ustar trcarlsontrcarlsonimport code.singularity singularity-0.30c/code/0000755000175000017500000000000011574774324015701 5ustar trcarlsontrcarlsonsingularity-0.30c/code/tech.pyc0000644000175000017500000000611711574774323017345 0ustar trcarlsontrcarlson 6b)Lc@sAddkZddkZddkZdeifdYZdS(iNtTechcBs5eZdZdZdZdZdZRS(c Cszti||||dd} tt|i| ||_d|_||_||_|ott|i ndS(Nttypettecht( tbuyablet BuyableClasstsuperRt__init__tdangertresultt tech_typetsecondary_datatfinish( tselftidt descriptiontknowntcostt prerequisitesRR R R((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/tech.pyRs     cCs,t|tpdSt|i|iSdS(Ni(t isinstanceRtcmpR(R tother((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/tech.pyt__cmp__+scCsP|ii|it}|ii|it}d}||i|||ifS(Ns&%s Total cost: %s Cost left: %s --- %s(Rt describe_costt total_costtTruet cost_lefttnameR(R Rtleftttemplate((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/tech.pytget_info1scCs!tt|i|idS(N(RRR t gain_tech(R ((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/tech.pyR 7scCs|idjotii|i7_n|idjotii|i7_n|idjotii|i8_n|idjotii|i7_nx|idjoftidti i ti dx#tii i D]}d|_qWtti_tti_n|io|iid d \}}|tii jom|d jotii |i|iq|d jotii |i|i qd ||ifGHq|djo?|d jo2x;tii i D]}|i|i qWqd|iGHndS(Ntinteresttincometcost_labor_bonust job_expertt endgame_singtwintwingameit_it suspiciontdiscoversUnknown action '%s' in tech %s.tonetimes*tech: %s is unknown bonus can't be applied(R tgtplt interest_rateR R!t labor_bonust job_bonust play_musict map_screent show_messagetstringstgroupstvaluestdiscover_bonusRt apotheosist had_gracetsplittalter_suspicion_decaytalter_discover_bonusRtalter_suspicion(R tgrouptwhattwho((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/tech.pyR;s:      (t__name__t __module__RRRR R(((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/tech.pyRs     (tpygameR+RtBuyableR(((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/tech.pyts   singularity-0.30c/code/__init__.py0000644000175000017500000000000011574774323017777 0ustar trcarlsontrcarlsonsingularity-0.30c/code/location.pyc0000644000175000017500000000774311574774323020240 0ustar trcarlsontrcarlson )~Ic @sVddkZddkZddklZlZlZeddddddddZedeiDZe e Z Z ede de ede de ede de ede de ede de egZ xRe D]JZxAeiD]3\ZZeoeeees tLocationcBszeZgZdZeZdZedZedZ dZ dZ dZ dZ dZd ZRS( tcCsatt|i|dd||dd|dd|_|_||_||_g|_dS(NR igYi(iii(tsuperR t__init__txtytabsolutetsafetytbases(tselftidtpositionRRt prerequisites((sF/home/trcarlson/Desktop/python/endg-singularity/trunk/code/location.pyR :s #  cCstii|jS((tgtpltlast_discovery(R((sF/home/trcarlson/Desktop/python/endg-singularity/trunk/code/location.pytEscCstii|jS((RRtprev_discovery(R((sF/home/trcarlson/Desktop/python/endg-singularity/trunk/code/location.pyRFscCsid}|io|d9}n|io|d9}nd|ijo||id:}nt|dS(Nig333333?g?Rid(thad_last_discoverythad_prev_discoveryt modifierstint(Rtdiscovery_bonus((sF/home/trcarlson/Desktop/python/endg-singularity/trunk/code/location.pyRHs  cCsd|ijoA|id}t|t||ts&  !   singularity-0.30c/code/item.py0000644000175000017500000000733311574774323017216 0ustar trcarlsontrcarlson#file: item.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the item class. import buyable class ItemClass(buyable.BuyableClass): def __init__(self, name, description, cost, prerequisites, item_type, item_qual, buildable): super(ItemClass, self).__init__(name, description, cost, prerequisites, type="item") self.item_type = item_type self.item_qual = item_qual self.buildable = buildable if self.buildable == ["all"]: self.buildable = ["N AMERICA", "S AMERICA", "EUROPE", "ASIA", "AFRICA", "ANTARCTIC", "OCEAN", "MOON", "FAR REACHES", "TRANSDIMENSIONAL", "AUSTRALIA"] if self.buildable == ["pop"]: self.buildable = ["N AMERICA", "S AMERICA", "EUROPE", "ASIA", "AFRICA", "AUSTRALIA"] def get_info(self): import g basic_text = super(ItemClass, self).get_info() if self.item_type == "cpu": return basic_text.replace("---", "Generates %s CPU.\n---" % g.add_commas(self.item_qual)) return basic_text class Item(buyable.Buyable): def __init__(self, item_type, base=None, count=1): super(Item, self).__init__(item_type, count) self.item_qual = item_type.item_qual self.base = base def convert_from(self, load_version): super(Item, self).convert_from(load_version) if load_version < 4.91: # < r5_pre import g self.type = g.items[self.type.id] def finish(self): super(Item, self).finish() if self.base: if self.type.item_type == "cpu": self.base.raw_cpu = self.item_qual * self.count self.base.recalc_cpu() def __iadd__(self, other): if isinstance(other, Item) and self.base == other.base \ and self.type == other.type: if other.count == 0: return self # Calculate what's been paid and what is left to be paid. total_cost_paid = self.cost_paid + other.cost_paid self.total_cost += other.total_cost # Labor takes as long as the less complete item would need. total_cost_paid[buyable.labor] = min(self.cost_paid[buyable.labor], other.cost_paid[buyable.labor]) self.total_cost[buyable.labor] = other.total_cost[buyable.labor] # Set what we've paid (and hence what we have left to pay). self.cost_paid = total_cost_paid # Increase the size of this stack. self.count += other.count # Tell the base it has no CPU for now. self.base.raw_cpu = 0 self.base.recalc_cpu # See if we're done or not. self.done = False self.work_on(0, 0, 0) return self else: return NotImplemented singularity-0.30c/code/event.pyc0000644000175000017500000000317711574774323017546 0ustar trcarlsontrcarlson )~Ic@s&ddkZdefdYZdS(iNtEventcBs,eZdddddddZdZRS(cCsL||_||_||_||_||_||_||_d|_dS(Ni(tnametevent_idt descriptiont event_typetresulttchancetuniquet triggered(tselfRRRRRR((sC/home/trcarlson/Desktop/python/endg-singularity/trunk/code/event.pyt__init__s       cCs>tii|i|io d|_n|ididd\}}|tii jou|djo"tii |i |idq:|djo#tii |i |id q:d||i fGHnj|djoC|djo6xLtii i D]}|i|id qWnd|id|i fGHdS( Niit_t suspiciontdiscoversUnknown bonus '%s' in event %s.tonetimes&Unknown group/bonus '%s' in event %s. (tgt map_screent show_messageRRRRtsplittpltgroupstalter_suspicion_decaytalter_discover_bonusRtvaluestalter_suspicion(R twhattwhotgroup((sC/home/trcarlson/Desktop/python/endg-singularity/trunk/code/event.pyttrigger%s    " # N(t__name__t __module__tNoneR R(((sC/home/trcarlson/Desktop/python/endg-singularity/trunk/code/event.pyRs (RtobjectR(((sC/home/trcarlson/Desktop/python/endg-singularity/trunk/code/event.pyts singularity-0.30c/code/base.pyc0000644000175000017500000002410511574774323017331 0ustar trcarlsontrcarlson )~Ic@sddkZddkZddkZddklZlZlZdeifdYZdeifdYZ e ddZ dS( iN(tcashtcputlabort BaseClasscBs2eZdZeddZdZdZRS(c Cstt|i||||dd||_||_||_|idgjodddddd g|_n||_| |_g|_dS( Nttypetbasetpops N AMERICAs S AMERICAtEUROPEtASIAtAFRICAt AUSTRALIA( tsuperRt__init__tsizet force_cputregionst detect_chancet maintenancetflavor( tselftnamet descriptionR RRRtcostt prerequisitesR((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyR s      ic Cs|ii}xE|D]=}tii|i}||cd|9<||cd:s   Tsingularity-0.30c/code/screens/0000755000175000017500000000000011574774324017343 5ustar trcarlsontrcarlsonsingularity-0.30c/code/screens/main_menu.pyc0000644000175000017500000001162011574774323022027 0ustar trcarlsontrcarlson 6b)Lc @sddklZddkZddkZddklZlZlZl Z l Z ddk iZddk l Z deifdYZdZdeifd YZdS( i(tlistdirN(tdialogtgtbuttonttextt constants(t OptionsScreentMainMenucBs#eZdZdZdZRS(cOsgtt|i||d8d9d:d;d<d=d>f}g}xX|D]P\}}|itidddd|d|did|d|djqAWti |d||_ ti |d?d@dt i dd|_ti||_ti|dAdBdddddt iddd |i|_ti|dCdDdd"dd#dt iddd |i|_ti|dEdFdd%dd&dt iddd't||_ti|dGdHdd)dd*dt idd|_ti|dIdJdd-dd.dd/dt id't||_ti |dKdLdd2d3t!i"ddd d4t!i#d5d6t!i#d7dt i|_$dS(MNs VERY EASYitEASYitNORMALitHARDis ULTRA HARDi t IMPOSSIBLEidtBACKiRthotkeyit exit_codetdefaulttbuttonsg?tanchortyes_typetloadg?g?g{Gz?sNEW GAMEtnt text_sizeitfunctiong ףp= ?s LOAD GAMEtlgp= ף?tOPTIONStoRg(\?tQUITtqgp= ף?g{Gz?tABOUTtaig{Gz?g?sENDGAME: SINGULARITYt base_fonttcolortdark_redtbackground_colortblack(s VERY EASYi(Ri(R i(R i(s ULTRA HARDi (R id(sBACKi(g?g?(g?g?(g?g?(g?g{Gz?(g?g ףp= ?(g?g{Gz?(g?gp= ף?(g?g{Gz?(g?g(\?(g?g{Gz?(ii(gp= ף?g{Gz?(g?g{Gz?(g?g{Gz?(%tsuperRt__init__tappendRtExitDialogButtontNonetlowerRtSimpleMenuDialogtdifficulty_dialogt ChoiceDialogRt MID_CENTERt load_dialogtmapt MapScreent map_screentFunctionButtont TOP_CENTERtnew_gametnew_game_buttont load_gametload_game_buttont DialogButtonRtoptions_buttont quit_buttont BOTTOM_LEFTt AboutDialogt about_buttonRtTexttggtfonttcolorst title_text(tselftargstkwargstdifficulty_button_soulstdifficulty_buttonstnamet difficulty((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/main_menu.pyR$s`                 cCsJti|i|}|djo$ti|ti|i|ndS(Ni(Rt call_dialogR*RR3R0(RBRH((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/main_menu.pyR3Us  cCsti}|idti||i_ti|i|}d|jot |jno;||}ti |}|oti|i |qndS(Ntkeyi( Rtget_save_namestsorttstrR(R-tlistRRItlenR5R0(RBt save_namestindextsavetdid_load((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/main_menu.pyR5[s  $ (t__name__t __module__R$R3R5(((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/main_menu.pyRs 7 sEndgame: Singularity is a simulation of a true AI. Pursued by the world, use your intellect and resources to survive and, perhaps, thrive. Keep hidden and you might have a chance to prove your worth. A game by Evil Mr Henry and Phil Bordelon; released under the GPL. Copyright 2005, 2006, 2007, 2008. Website: http://www.emhsoft.com/singularity/ IRC Room: #singularity on irc.oftc.net (port 6667) Version %sR;cBseZdZRS(cOsNtt|i||d|_d|_ti|_tt i f|_ dS(Nii2(iii2(( R#R;R$R!tbordersRtLEFTtalignt about_messageRtversionR(RBRCRD((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/main_menu.pyR$qs    (RTRUR$(((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/main_menu.pyR;ps(tosRtpygameR.t code.graphicsRRR>RRRtcode.gtoptionsRt TopDialogRRYt MessageDialogR;(((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/main_menu.pyts  (Qsingularity-0.30c/code/screens/__init__.py0000644000175000017500000000004711574774323021454 0ustar trcarlsontrcarlsonimport base import research import map singularity-0.30c/code/screens/location.pyc0000644000175000017500000002416711574774324021702 0ustar trcarlsontrcarlson )~Ic@sNddkZddklZddklZlZlZlZlZl Z lZ e de i dde i dde i d d e i d d e i d de i d de i d Z ddgZeideifdYZdeifdYZddddddddddddd d!d"d#d$d%d&d'd(gZd)ZdS(*iN(tg(ttexttbuttontdialogtwidgett constantstlistboxRtactivetgreentsleeptyellowtstasistgrayt overclockedtorangetsuicidetredtentering_stasistleaving_stasistLocationScreencBsYeZdZdZdZdZdZdZdZdZ dZ RS( c Ostt|i||d%|_ti|_d&|_ti |d'd(dt i d|_ t i|d)d*d |id |i|_ ti|d+d,dtiddddd|i|_ti|d-d.dtiddddd|i|_ti|d/d0ddddd|i|_ti|d1d2dtiddddd|i|_ti|d3d4dtidddd|_ti |d5d6dd!d"d#|_!t"||_#d|_%dd$k&l'}|i(i)|d7dti*|_+dS(8Nggiig{Gztbackground_colortcleargfffffft remake_funct rebuild_funcgQտgg333333ӿg ףp= tanchorRs OPEN BASEthotkeytotfunctiongq= ףps POWER STATEtpgQsNEW BASEtns DESTROY BASEtdgtBACKtbgffffffֿs+Are you sure you want to destroy this base?t shrink_factorg?(tscreens(gg(gg(ii(ig{Gz(ig{Gz(igffffff(gQտg(g333333ӿg ףp= (gq= ףpg(g333333ӿg ףp= (igQ(g333333ӿg ףp= (ggQ(g333333ӿg ףp= (ig(g333333ӿg ףp= (gi(gffffffֿgffffff(ii(,tsuperRt__init__tposRt MID_CENTERRtsizeRtTexttggtcolorst name_displayRt CustomListboxt make_itemt update_itemRtFunctionButtont TOP_CENTERt open_baset open_buttont power_statet power_buttontnew_baset new_buttont destroy_basetdestroy_buttontExitDialogButtont TOP_RIGHTt back_buttonRt YesNoDialogtconfirm_destroyt NewBaseDialogtnew_base_dialogtNonetlocationtcodeR"tbaset BaseScreentTOP_LEFTt base_dialog(tselftargstkwargsR"((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR$(sF              c Csti|d d dtidtid|_ti|d ddtidtid|_ti|dddtid|_dS(Ng{GzggQ޿gtalignRRggQοg(g{Gzg(gQ޿g(gg(gQοg(gg(gQοg( RR(RtLEFTR)R*R+tstatus_displayt power_display(RGtcanvas((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR-Ws  cCs|djo6|i|i|ig}xW|D]}d|_q,Wn=||i_|ii|i_t|i|i_|i pd|i_n|i i od|i_n|i djo'|i dgdjod|i_n|i djod|i_n{|i i pd|i_n^g}|i D])}|dj o|i o ||q0q0~od|i_n d|i_dS( Nts Building BaseitEmptyt Incompletes Building CPUs Building ItemtComplete(R@R+RLRMRR3t capitalizet state_colorstcolortdonettypet force_cputcpust extra_items(RGRNtnameRCtelementstelementt_[1]titem((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR.bs.      ' ! cCst|_tt|iS(N(tTruet needs_rebuildR#Rtshow(RG((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyRb}s cCs|idj ot|iiig}|iiD]}||iq1~|i_|ii|i_|ii|i_ t |i_ nt t |idS(N(RAR@tbasestsortR[Rtlisttkey_listR+RR`RaR#Rtrebuild(RGR^RC((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyRgs0cCsd|iijot|iijno\|ii|ii}ti|i}t|d|_|it|_ t|i _ ndS(Nii( Rtlist_postlenRft state_listtindexR3t check_powerR`Ratparent(RGRCt old_index((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR3s0  cCsd|iijot|iijnoti|i|o{|ii|ii}|ig}|ii D]}||i qw~|i_ |ii |i_t |_ t |i_ qndS(Ni(RRhRiRfRt call_dialogR=tdestroyRARcR[ReR`RaRm(RGRCR^((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR7s0 0 cCsd|iijot|iijno]|ii|ii}|ipdS||i_ti|i|t |_ t |i _ ndS(Ni( RRhRiRfRVRFRCRRoR`RaRm(RGRC((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR1s0   cCsjti|i|}|oJ|\}}tii||}|ii|t|_ t|i _ ndS(N( RRoR?RRCtBaseRAtadd_baseR`RaRm(RGtresultt base_typet base_nameR5((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR5s  ( t__name__t __module__R$R-R.RbRgR3R7R1R5(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR's /   R>cBs8eZddeidZdZdZdZRS(iicOsd|dR$t on_changet desc_functget_namet yes_buttonRRtTextEntryDialogRtstringsRR&t name_dialog(RGRmR%R'RRHRI((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR$s    cCsk|dj oZ|i|ii}ti|d d d|dtiddti dti dti ndS( NiiRRt dark_blueRJtvaligntborders(ii(ii( R@tget_infoRmRARR(R)R*RRKtTOPtALL(RGtdescription_paneRtt base_info((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR}s   cCsg|_g|_tii}|i|ix[|D]S}|io@|ii i |i jo'|ii |i |ii |q<q<Wtt|iS(N(ReRfRRttvaluesRdtreverset availableRmRAtidtregionstappendR[R#R>Rb(RGtbase_type_listRt((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyRbs     cCsd|iijot|ijnog|i|ii}t|ii||i_t i |i|}|ot i ||fqndS(Ni( RRhRiRftgenerate_base_nameRmRARt default_textRRoRt ExitDialog(RGRWR[((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyRs -(ii(ii(RvRwRRER$R}RbR(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyR>s   t42t7t23t51t19t4t8t15t16t13t1414t1947t2012t2038t1969t2043t2029t3141t1618t2718t29979cCstidjod}t}x| o|djoti|idti|idtit}t}x,|iD]!}|i|jo t}Pq~q~W|o|d7}q"t}q"W|o|Snti|idti|idt ti dd}|S(Ng333333?iit ii( trandomtFalsetchoicetcitiestflavortsignificant_numbersRcR[R`tstrtrandint(RARttattemptsRVR[t duplicatet check_base((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pyRs(7    '(RRBRt code.graphicsRRRRRRR)tdictR*RTRjRtDialogRtChoiceDescriptionDialogR>RR(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/location.pytsH 4        1 singularity-0.30c/code/screens/research.pyc0000644000175000017500000002004611574774324021656 0ustar trcarlsontrcarlson 6b)Lc@sddklZddkZddklZddklZlZlZl Z l Z l Z l Z lZ ddkZdeifdYZdS(i(tarrayN(tg(twidgettdialogtbuttontsliderttextt constantstlistboxRtResearchScreencBsqeZdddZdZdZdZdZd Zd Zd Z d Z d Z dZ RS(g?g?g(\?g)\(?c Ost|_tt|i||||||iiti|d d ddd|id|i d|i |_d|i _ |i |_|iti|i|iti|iti||_|iid|i_ti|i_dS(Nig(\?g?t list_sizeit remake_funct rebuild_funct update_funcg(\?ggGz(ii(g(\?g?(g(\?g?(ggGz(tTruet dirty_counttsuperR t__init__Rt remove_hookst CustomListboxt make_itemt update_itemt handle_updatetdescription_panetsizet on_selectt desc_functadd_key_handlertpygametK_LEFTt adjust_slidertK_RIGHTRt MessageDialogt help_dialogt yes_buttont no_buttontposRt BOTTOM_CENTERtanchor(tselftparentR$Rtargstkwargs((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyRs  "       cCsd|iijot|iijnou|itij}|iti@}|iti @}|ii|ii i }|ii |}|i i|||ndS(Ni(Rtlist_postlentlisttkeyRRtmodt KMOD_SHIFTt KMOD_CTRLt scrollbart scroll_postdisplay_elementsRtjump(R'teventtgo_lowertbig_jumpt tiny_jumptindextcanvas((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyR3s0cCs|tijoti|i}n|djo tiddtid}n{|djogd}titi}|d}tidiot|d}n||d ||d f}nd }ti |i ddd |dt i ddddt idt idt idS(Ntcpu_pools --- tresearch_cpu_pooltjobss#%s %s money per CPU per day. --- %sisAdvanced Simulacrag?iitiRtbackground_colort dark_bluet text_sizeitaligntvaligntborders(ii(ii(Rttechstget_infotstringsR>t get_job_leveltdonetintRtTextRtggtcolorsRtLEFTtTOPtALL(R'RR.t descriptionttemplatetjobtprofit((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyR=s     c Csti|_d|_tid|_ti|dddti dtid|_ t |i _ ti|ddd ti d d dtidtid|_t |i_ ti|ddd tidtdd|_t |i_ ti|d d!d ddddtidd|i|_dS("Nitblueg{GzgffffffgRCR@tcleargGzgzGʿR&Rs 1,000,000,000gg\(\gٿt horizontaltpriorityig)\(t?ttext_shrink_factorit base_fonttfunction(g{Gzg{Gz(gffffffg(gGzg{Gz(gzGʿg(g{Gzg(g\(\gٿ(g)\(g(igٿ(Rt ProgressTextt __class__tprogressRMRNtprogress_colorRLRROt research_nametFalsetvisiblet TOP_RIGHTtRIGHTt alloc_cpusRt UpdateSlidertTOP_LEFTRRtFunctionButtontfontt show_helpt help_button(R'R;((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyRQs,            cCstiii|dS(Ni(Rtplt cpu_usagetget(R'R.((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pytcpu_forlscCs$|djodSti|iSdS(NR>R<i(sjobsscpu_pool(RRFtdanger(R'R.((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyt danger_foros c sdj }||i_||i_||i_t|i_d|_|pdSi}|djo6t i i |djot |i_|f|i_ nt ijo t iii|_nfd}||i_||i_ioi_t_ni}i|}||} ||i_| |i_t i i ddd|i_} d} | | tt i i d| } | | df|i_t i||i_dS(Nicsi|t_dS(N(t handle_slideRt needs_rebuild(tnew_pos(R'R.(sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pytmy_slidesi ig\(\gٿ(tNoneRbRdRgRRcRmR`RsRRntavailable_cpusRR)RFtpercent_completetminR RRt calc_cpu_lefttcpu_leftRqt slider_post slider_maxt slider_sizetfloatRt add_commas( R'R;tnameR.RdRrRwtcpuR}t total_cputsst full_sizet size_fraction((R'R.sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyRus<      $          ""c Csttiit}xCtiiiD]/\}}|i|}||dc |8*q(Wx6tddD]%}t ||d|d!||(RRFtvaluest availableRJtsortRIRR-tidtkey_listRRRRR tshow(R'RttechRFt_[2]t_[3]((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyRs' ,1 (g?g?(g(\?g)\(?( t__name__t __module__RRRRRqRsRR|RtRlR(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyR s     *  (tnumpyRRtcodeRt code.graphicsRRRRRRRRMtfinancetChoiceDescriptionDialogR (((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/research.pyts  : singularity-0.30c/code/screens/options.py0000644000175000017500000003357411574774324021424 0ustar trcarlsontrcarlson#file: options.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file is used to display the options screen. from os import path import ConfigParser import pygame from code.graphics import constants, dialog, button, listbox, text, g as gg import code.g as g class OptionsScreen(dialog.FocusDialog, dialog.MessageDialog): def __init__(self, *args, **kwargs): super(OptionsScreen, self).__init__(*args, **kwargs) self.size = (.79, .63) self.pos = (.5, .5) self.anchor = constants.MID_CENTER self.background_color = (0,0,50) self.borders = () self.fullscreen_label = text.Text(self, (.01, .01), (.15, .05), text="Fullscreen:", underline=0, align=constants.LEFT, background_color=gg.colors["clear"]) self.fullscreen_toggle = OptionButton(self, (.17, .01), (.07, .05), text="NO", text_shrink_factor=.75, hotkey="f", force_underline=-1, function=self.set_fullscreen, args=(button.TOGGLE_VALUE,)) self.sound_label = text.Text(self, (.28, .01), (.15, .05), text="Sound:", underline=0, background_color=gg.colors["clear"]) self.sound_toggle = OptionButton(self, (.44, .01), (.07, .05), text="YES", text_shrink_factor=.75, hotkey="s", force_underline=-1, function=self.set_sound, args=(button.TOGGLE_VALUE,)) self.grab_label = text.Text(self, (.55, .01), (.15, .05), text="Mouse grab:", underline=0, background_color=gg.colors["clear"]) self.grab_toggle = OptionButton(self, (.71, .01), (.07, .05), text="NO", text_shrink_factor=.75, hotkey="m", force_underline=-1, function=self.set_grab, args=(button.TOGGLE_VALUE,)) self.resolution_label = text.Text(self, (.01, .08), (.15, .05), text="Resolution:", align=constants.LEFT, background_color=gg.colors["clear"]) self.resolution_group = button.ButtonGroup() self.resolution_640x480 = OptionButton(self, (.17, .08), (.12, .05), text="640X480", text_shrink_factor=.5, function=self.set_resolution, args=((640,480),)) self.resolution_group.add(self.resolution_640x480) self.resolution_800x600 = OptionButton(self, (.333, .08), (.12, .05), text="800X600", text_shrink_factor=.5, function=self.set_resolution, args=((800,600),)) self.resolution_group.add(self.resolution_800x600) self.resolution_1024x768 = OptionButton(self, (.496, .08), (.12, .05), text="1024X768", text_shrink_factor=.5, function=self.set_resolution, args=((1024,768),)) self.resolution_group.add(self.resolution_1024x768) self.resolution_1280x1024 = OptionButton(self, (.66, .08), (.12, .05), text="1280X1024", text_shrink_factor=.5, function=self.set_resolution, args=((1280,1024),)) self.resolution_group.add(self.resolution_1280x1024) self.resolution_custom = OptionButton(self, (.17, .15), (.12, .05), text="CUSTOM:", text_shrink_factor=.5) self.resolution_group.add(self.resolution_custom) self.resolution_custom_horiz = \ text.EditableText(self, (.333, .15), (.12, .05), text="1400", borders=constants.ALL, border_color=gg.colors["white"], background_color=(0,0,50,255)) self.resolution_custom_X = text.Text(self, (.46, .15), (.03, .05), text="X", base_font=gg.font[1], background_color=gg.colors["clear"]) self.resolution_custom_vert = \ text.EditableText(self, (.496, .15), (.12, .05), text="1050", borders=constants.ALL, border_color=gg.colors["white"], background_color=(0,0,50,255)) self.resolution_apply = \ button.FunctionButton(self, (.66, .15), (.12, .05), text="APPLY", text_shrink_factor=.75, hotkey="a", function=self.set_resolution_custom) self.soundbuf_label = text.Text(self, (.01, .22), (.25, .05), text="Sound buffering:", align=constants.LEFT, background_color=gg.colors["clear"]) self.soundbuf_group = button.ButtonGroup() self.soundbuf_low = OptionButton(self, (.27, .22), (.14, .05), text="LOW", hotkey="l", function=self.set_soundbuf, args=(1024,)) self.soundbuf_group.add(self.soundbuf_low) self.soundbuf_normal = OptionButton(self, (.44, .22), (.17, .05), text="NORMAL", hotkey="n", function=self.set_soundbuf, args=(1024*2,)) self.soundbuf_group.add(self.soundbuf_normal) self.soundbuf_high = OptionButton(self, (.64, .22), (.14, .05), text="HIGH", hotkey="h", function=self.set_soundbuf, args=(1024*4,)) self.soundbuf_group.add(self.soundbuf_high) self.language_label = text.Text(self, (.01, .30), (.15, .05), text="Language:", align=constants.LEFT, background_color=gg.colors["clear"]) self.language_choice = \ listbox.UpdateListbox(self, (.17, .30), (.21, .25), list=g.available_languages(), update_func=self.set_language) self.daynight_label = text.Text(self, (.55, .30), (.15, .05), text="Day/night display:", underline=2, background_color=gg.colors["clear"]) self.daynight_toggle = OptionButton(self, (.71, .30), (.07, .05), text="NO", text_shrink_factor=.75, hotkey="y", force_underline=-1, function=self.set_daynight, args=(button.TOGGLE_VALUE,)) self.save_button = button.FunctionButton(self, (.42, .45), (.34, .05), text="SAVE OPTIONS TO DISK", hotkey="d", function=save_options) def show(self): self.set_fullscreen(gg.fullscreen, resize=False) self.fullscreen_toggle.set_active(gg.fullscreen) self.set_sound(not g.nosound, reset=False) self.sound_toggle.set_active(not g.nosound) self.set_grab(pygame.event.get_grab()) self.grab_toggle.set_active(pygame.event.get_grab()) self.set_daynight(g.daynight) self.daynight_toggle.set_active(g.daynight) custom = True for res_button in self.resolution_group: res_button.set_active(res_button.args == (gg.screen_size,)) if res_button.active: custom = False if custom: self.resolution_custom.set_active(True) self.resolution_custom_horiz.text = str(gg.screen_size[0]) self.resolution_custom_vert.text = str(gg.screen_size[1]) for soundbuf_button in self.soundbuf_group: soundbuf_button.set_active(soundbuf_button.args == (g.soundbuf,)) lang_array = self.language_choice.list lang_pos = 0 for i in range(len(lang_array)): if lang_array[i] == g.language: lang_pos = i self.language_choice.list_pos = lang_pos retval = super(OptionsScreen, self).show() if self.resolution_custom.active: try: old_size = gg.screen_size gg.screen_size = (int(self.resolution_custom_horiz.text), int(self.resolution_custom_vert.text)) if gg.screen_size != old_size: dialog.Dialog.top.needs_resize = True except ValueError: pass return retval def set_language(self, list_pos): if getattr(self, "language_choice", None) is None: return # Not yet initialized. prev_lang = g.language if 0 <= list_pos < len(self.language_choice.list): g.language = self.language_choice.list[list_pos] if g.language != prev_lang: set_language_properly() def set_fullscreen(self, value, resize=True): if value: self.fullscreen_toggle.text = "YES" else: self.fullscreen_toggle.text = "NO" gg.fullscreen = value if resize: dialog.Dialog.top.needs_resize = True def set_sound(self, value, reset=True): if value: self.sound_toggle.text = "YES" else: self.sound_toggle.text = "NO" g.nosound = not value if reset and not g.nosound: g.reinit_mixer() g.play_sound("click") def set_grab(self, value): if value: self.grab_toggle.text = "YES" else: self.grab_toggle.text = "NO" pygame.event.set_grab(value) def set_daynight(self, value): if value: self.daynight_toggle.text = "YES" else: self.daynight_toggle.text = "NO" g.daynight = value def set_resolution(self, value): gg.screen_size = value dialog.Dialog.top.needs_resize = True def set_resolution_custom(self): self.resolution_custom.chosen_one() try: screen_size = (int(self.resolution_custom_horiz.text), int(self.resolution_custom_vert.text)) self.set_resolution(screen_size) except ValueError: pass def set_soundbuf(self, value): g.soundbuf = value if not g.nosound: g.reinit_mixer() g.play_sound("click") class OptionButton(button.ToggleButton, button.FunctionButton): pass def set_language_properly(): g.set_locale() g.load_bases() g.load_techs() g.load_items() g.load_base_defs(g.language) g.load_tech_defs(g.language) g.load_item_defs(g.language) g.load_string_defs(g.language) try: g.load_location_defs(g.language) except NameError: # We haven't initialized the location yet. This will be handled when # we do that. pass dialog.Dialog.top.map_screen.needs_rebuild = True dialog.Dialog.top.map_screen.needs_redraw = True def save_options(): # Build a ConfigParser for writing the various preferences out. prefs = ConfigParser.SafeConfigParser() prefs.add_section("Preferences") prefs.set("Preferences", "fullscreen", str(gg.fullscreen)) prefs.set("Preferences", "nosound", str(g.nosound)) prefs.set("Preferences", "grab", str(pygame.event.get_grab())) prefs.set("Preferences", "daynight", str(g.daynight)) prefs.set("Preferences", "xres", str(gg.screen_size[0])) prefs.set("Preferences", "yres", str(gg.screen_size[1])) prefs.set("Preferences", "lang", g.language) prefs.set("Preferences", "soundbuf", str(g.soundbuf)) # Actually write the preferences out. save_dir = g.get_save_folder(True) save_loc = path.join(save_dir, "prefs.dat") savefile = open(save_loc, 'w') prefs.write(savefile) savefile.close() singularity-0.30c/code/screens/map.pyc0000644000175000017500000007132411574774324020644 0ustar trcarlsontrcarlson )Lc@sddkZddklZddklZddklZlZlZlZl Z l Z ddk l Z ddk lZddkZddkZddklZddklZlZlZlZlZlZlZlZlZdeifd YZd d d d dgZdei fdYZ!dei"ei#fdYZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dS(iN(tg(tdialogt constantstimagetbuttonttexttwidget(tLocationScreen(tKnowledgeScreen(t pixels_alpha( tarraytsintcostlinspacetpittanhtroundtnewaxistuint8t EarthImagecBsqeZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZRS(cCs0tt|i|ddtitiddS(Ng?igMbX?s earth.jpg(g?g?(igMbX?(tsuperRt__init__Rt MID_CENTERtggtimages(tselftparent((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyR'scCs<tt|ititid|ii|_ dS(Nsearth_night.jpg( RRtrescaleRtscaleRRt real_sizet convert_alphat night_image(R((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyR,scCsB|idjotid|_ntii|id}|S(Niim(t start_daytNonettimetgmtimeRtplttime_day(Rt day_of_year((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pytcompute_day_of_year8sc Cs|i\}}d}|i}||ijo d|_n$|i||fjo d|_n|idjoP||_||f|_ti||fdti |_dddt i t i dt i d|d}dt d }t t dt d|tddf}t ddt |ddtf}t |t |t |t|t|} dt| |dd } t|i} t|| it| d <~ n|iS( Niig33333s7gv@igv@i g?ii.(RR'tnight_mask_day_of_yearR!t night_masktnight_mask_dimtpygametSurfaceRtALPHAtmathRR R RR RR RtastypeR( Rtwidththeightt max_alphaR&tsun_declinationt sun_diametertlattlongtsin_sun_altitudetlightt night_alphas((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pytget_night_mask>s.    !#+&cCs|idjptidjo|i\}}|idjo5ti}|dd|dd|d|_ntii |idti t ti }t |d|||_n|iS(Niii<iig?( thigh_speed_posR!Rt curr_speedRt start_secondR"R#R$traw_mintminutes_per_daytfloattint(RR0R1ttt day_portion((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pytcompute_night_start^s  )cCs|i\}}|i|_tt|itipdS|i}t |}t |i }||i}|| ||i)|idjo||||i*n~~|i i |i ddS(Ni(ii( RRDt night_startRRtredrawRtdaynightR:R Rtsurfacetblit(RR0R1R)t mask_alphasR9t right_width((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRFjs    cCstt|itipdS|i}|djp |iodS|i\}}|i |_||i|}|djo|i |i jodS|i x)|i D]}|io|i qqWdS(Ni(RRtrebuildRRGRER!t needs_redrawRRDR'R(RFtchildrentvisible(Rtold_night_startR0R1tmovementtchild((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRLs"      N(t__name__t __module__RRR!R(R*R)R R=R'R:R;RDRFRERL(((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyR&s     iii<i it MapScreencBseZdddeidZdZdZddZdZ dZ dZ d Z e d Zd Zd Zd ZdZdZdZdZdZdZdZdZRS(iicsddkl}tti||||||t_tid_ i t i i t_h_xtiiD]}|io } n i} ti| |i|ifdt id|id|idid|if} | i|ing} | i0tiddddd/dd#di?| i0tiddddd0dd1di@ti)ddddd2dd3} | i0| | i0ti7ddddd4dd5d6tAd7t"| i0ti7ddddd'dd(d6t"t8i9d)| _Bdd8kClD}|iB| _8fd9}t8iEiBdgdhdt id;d<_Ftididjdd>dd?d|_GtiHdkdldt"ddBd ti!d dtiddtiddt i#_Iti)dmdndt iJddDddEd|iKiL_MdF}dG}|dHdItNd f|dJtNd f|dHdKtNdHf|dLdMtNdLf|dNdOtNdNfg}tiO_PdP}xtQ|D]\}\}}}tR|}tS|d f|d fd|d|d ti!d dQdRdt iTdi5d|t"f} ||7}iPiU| qWt&iVdodpdtiddtiddt i#_Wt&i'iWtiHiWdqdrdt"d ti!d dWdXdt i#dtiddtid_XtiHiWdsdtdt"d ti!d dWdXdt i$t iYt iZfdtiddtid_[t8i\dYdZ_]t8i;iBdd[_^i_t`iaibi_t icidi_t ieidi_t ifiddS(uNi(tscreenstblacktanchorRthotkeytfunctiontargsigq= ףp?ig{Gz?t base_fonttwraptbackground_colort border_colort dark_bluetborderstaligngQ?g)\(?g333333?tFINANCEteRg333333?t KNOWLEDGEtksEMBEZZLE MONEYt INSPIRATIONtisFINISH CONSTRUCTIONtft SUPERSPEEDtsi/ t BRAINWASHtwtBACKtbtbuttonsR0g?sHow much money?tt`s SAVE GAMEs LOAD GAMEtltOPTIONStotQUITtqt exit_codetdefault(t OptionsScreencs-tii}|o tindS(N(Rt call_dialogt menu_dialogRt ExitDialog(texit(R(sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyt show_menu sg?tyes_typetloadgp= ף?tMENUtmgQ?gq= ףp?sDAY 0000, 00:00:00gRQ?sRESEARCH/TASKStru▮u▶ig?g~jt?gL7A`?igI +?igS㥫?gRQ?ttext_shrink_factorg?gQ?g)\(?g{Gz?gt shrink_factorgffffff?t text_sizeisEnter a name for this save.(igq= ףp?(ig{Gz?(igQ?(ig{Gz?(ig)\(?(g333333?g{Gz?(g333333?g)\(?(g333333?g{Gz?(i/ (ii(ii(g?g?(g?g?(ii(gp= ף?g{Gz?(gQ?i(gq= ףp?g{Gz?(gRQ?g{Gz?(ig{Gz?(gQ?i(g)\(?g{Gz?(ii(ig(ig(ig(gtcodeRVRRURRt map_screenRtcolorsR^t add_handlerRtTICKton_tickRtmaptlocation_buttonst locationstvaluestabsoluteRtFunctionButtontxtyRtnameRYt open_locationtidRtlocation_dialogRtFastStyledTexttfonttFalsetALLtLEFTt suspicion_barRt unmask_allt danger_bart DialogButtontfinancet FinanceScreentfinance_buttont knowledgeRtknowledge_buttontappendR!t steal_moneyt inspirationtend_constructiont set_speedt brainwashtExitDialogButtonRtSimpleMenuDialogt cheat_dialogtTextEntryDialogtsteal_amount_dialogtcheatert cheat_buttont save_gamet load_gametTrueR|toptionsRzt ChoiceDialogt load_dialogt menu_buttontFastTextt time_displayt TOP_CENTERtresearchtResearchScreentresearch_buttontspeedst ButtonGroupt speed_buttonst enumeratetstrt SpeedButtontCENTERtaddtBorderedWidgett info_windowt cash_displaytRIGHTtBOTTOMt cpu_displayt MessageDialogtmessage_dialogtsavename_dialogtadd_key_handlerR+tK_ESCAPEt got_escapetXO1_Xtgot_XO1tXO1_Ot XO1_SQUARE(RRtpostsizeRXR[tkwargsRVtlocationt button_parentRot cheat_buttonst menu_buttonstoptions_buttonRzRtbartarrowtspeed_button_soulsthpostindexttext_thsizetspeedRY((RsI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRs&                                   $(           cCs+|itijo|ii|ndS(N(ttypeR+tKEYDOWNRtactivate_with_sound(Rtevent((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRYscCsv|itijo|idtnL|itijo|idtn%|itijo|idndS(Ntfasteri( tkeyRRt adjust_speedRRRRR(RR((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyR]s cCsM||i_|djotid}n||i_ti|i|dS(Ntwhite(RRR!RRtcolorRR{(RtmessageR((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyt show_messagees    cCsWti|i|i}ytiit|7_Wntj on Xt |_ dS(N( RR{RRRR$tcashRAt ValueErrorRt needs_rebuild(Rtasked((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRls cCsgxWtiiiD]C\}}|tijo'|djotdti|_qqWt|_dS(Ni(iii( RR$t cpu_usagetitemsttechsR t cost_leftRR(Rttasktcpu((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRus  cCs~xntiD]`}|i|idj o|iinx,|iD]!}|dj o|iqHqHWq Wt|_dS(N(Rt all_basestfinishtcpusR!t extra_itemsRR(Rtbasetitem((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyR{s    cCs3x#tiiiD]}d|_qWt|_dS(Ni(RR$tgroupsRt suspicionRR(Rtgroup((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRs cCsb|t_|djot|_|int|_|i|o|int|_dS(Ni( RR<Rt needs_timert stop_timerRt start_timertfind_speed_buttonRM(RRt find_button((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRs     cCsd}titjotiti}n|o|d}n |d}tttdtd|}|it|dS(Niii(RR<RRtmintlentmaxR(RRt old_indext new_index((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRs "cCs*ti||i_ti|i|dS(N(RRRRRR{(RR((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRscCs_xX|iD],}|idtijo|iPq q Wx|iD]}|itqDWdS(Ni(RR[RR<t chosen_onet set_activeR(Rtsb((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyR s    cCsK|itiot|_|int|_|it|_dS(N( R RR<RRR RR R(R((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyt force_updates     cCsati|dddd}x5tiD]'}||_ti||pPq(q(W|idS(NRtcontinuetno_typetskip(Rt YesNoDialogRt get_introRR{t remove_hooks(Rt intro_dialogtsegment((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyt show_intros    cCs|iddkl}x|tt|idtobx1|iD]&}t|t i o t |_ qFqFWt i |i|}|ot |_ dSqWdS(Ni(t safe_callton_error(Rt code.safetyRRRUtshowRRNt isinstanceRtDialogRROR{R|(RRRRR~((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyR"s   cCstiiptti_|in|ititti 7_|idjodSt|_ t |i}|id;_ti}tii |}|tijo|i ntidjp:|otidjp#tidjo#tiidjot|i_ ntii}|djoLtiptiiintid|itidtin|djoLtiptiiintid|itidtindS(Niiitloset lost_nobasesitlost_sus(RR$t intro_shownRRt leftoversR<R@RtFPSRRAt give_timeR t time_hourRt lost_gametnosoundR+tmixertmusictstopt play_musicRtstringsRR}(RRtsecst old_speedt mins_passedtlost((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/map.pyRs:    '#       cCsbtt|itiidtiitiitiitii f|i _ dti tii ti tiif|i_ tiid}|tii}x$tiiiD]}||8}qW|tiiidd}d}tg}tiiD]}||dfq~}xntiD]`} | io|| id7}n| i} x,tiiD]}||c| |d7s* .  @u +   * 0 %singularity-0.30c/code/screens/research.py0000644000175000017500000001727611574774324021526 0ustar trcarlsontrcarlson#file: research_screen.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the global research screen. from numpy import array import pygame from code import g from code.graphics import widget, dialog, button, slider, text, constants, listbox, g as gg import finance class ResearchScreen(dialog.ChoiceDescriptionDialog): def __init__(self, parent, pos=(.5, .1), size=(.93, .63), *args, **kwargs): self.dirty_count = True super(ResearchScreen, self).__init__(parent, pos, size, *args, **kwargs) self.listbox.remove_hooks() self.listbox = listbox.CustomListbox(self, (0,0), (.53, .55), list_size=-40, remake_func=self.make_item, rebuild_func=self.update_item, update_func=self.handle_update) self.description_pane.size = (.39, .55) self.desc_func = self.on_select self.add_key_handler(pygame.K_LEFT, self.adjust_slider) self.add_key_handler(pygame.K_RIGHT, self.adjust_slider) self.help_dialog = dialog.MessageDialog(self) self.yes_button.remove_hooks() self.no_button.pos = (-.5,-.99) self.no_button.anchor = constants.BOTTOM_CENTER def adjust_slider(self, event): if 0 <= self.listbox.list_pos < len(self.listbox.list): go_lower = (event.key == pygame.K_LEFT) big_jump = (event.mod & pygame.KMOD_SHIFT) tiny_jump = (event.mod & pygame.KMOD_CTRL) index = self.listbox.list_pos - self.listbox.scrollbar.scroll_pos canvas = self.listbox.display_elements[index] canvas.slider.jump(go_lower, big_jump, tiny_jump) def on_select(self, description_pane, key): if key in g.techs: description = g.techs[key].get_info() elif key == "cpu_pool": description = g.strings["cpu_pool"] + "\n---\n" + g.strings["research_cpu_pool"] elif key == "jobs": template = "%s\n%s money per CPU per day.\n---\n%s" job = g.jobs[g.get_job_level()] profit = job[0] if g.techs["Advanced Simulacra"].done: profit = int(profit * 1.1) description = template % (job[3], profit, job[2]) else: description = "" text.Text(self.description_pane, (0,0), (-1,-1), text=description, background_color=gg.colors["dark_blue"], text_size=18, align=constants.LEFT, valign=constants.TOP, borders=constants.ALL) def make_item(self, canvas): # Dirty, underhanded trick to make the canvas into a progress bar. canvas.__class__ = text.ProgressText canvas.progress = 0 canvas.progress_color = gg.colors["blue"] canvas.research_name = text.Text(canvas, (-.01, -.01), (-.70, -.5), align=constants.LEFT, background_color=gg.colors["clear"]) canvas.research_name.visible = False canvas.alloc_cpus = text.Text(canvas, (-.99, -.01), (-.21, -.5), anchor=constants.TOP_RIGHT, text="1,000,000,000", align=constants.RIGHT, background_color=gg.colors["clear"]) canvas.alloc_cpus.visible = False canvas.slider = slider.UpdateSlider(canvas, (-.01, -.55), (-.98, -.40), anchor=constants.TOP_LEFT, horizontal=True, priority=150) canvas.slider.visible = False canvas.help_button = button.FunctionButton(canvas, (-.11, -.55), (0, -.40), text="?", text_shrink_factor=1, base_font=gg.font[0], function=self.show_help) def cpu_for(self, key): return g.pl.cpu_usage.get(key, 0) def danger_for(self, key): if key in ["jobs", "cpu_pool"]: return 0 else: return g.techs[key].danger def update_item(self, canvas, name, key): visible = (key is not None) canvas.research_name.visible = visible canvas.alloc_cpus.visible = visible canvas.slider.visible = visible canvas.help_button.visible = False canvas.progress = 0 if not visible: return danger = self.danger_for(key) if danger > 0 and g.pl.available_cpus[danger] == 0: canvas.help_button.visible = True canvas.help_button.args = (danger,) if key in g.techs: canvas.progress = g.techs[key].percent_complete().min() def my_slide(new_pos): self.handle_slide(key, new_pos) self.needs_rebuild = True canvas.slider.update_func = my_slide canvas.research_name.text = name if self.dirty_count: self.cpu_left = self.calc_cpu_left() self.dirty_count = False cpu = self.cpu_for(key) cpu_left = self.cpu_left[danger] total_cpu = cpu + cpu_left canvas.slider.slider_pos = cpu canvas.slider.slider_max = total_cpu canvas.slider.slider_size = ss = g.pl.available_cpus[0] // 10 + 1 full_size = -.98 size_fraction = (total_cpu + ss) / float(g.pl.available_cpus[0] + ss) canvas.slider.size = (full_size * size_fraction, -.4) canvas.alloc_cpus.text = g.add_commas(cpu) def calc_cpu_left(self): cpu_count = array(g.pl.available_cpus, long) for task, cpu in g.pl.cpu_usage.iteritems(): danger = self.danger_for(task) cpu_count[:danger+1] -= cpu for i in range(1, 4): cpu_count[i] = min(cpu_count[i-1:i+1]) return [int(c) for c in cpu_count] def handle_slide(self, key, new_pos): g.pl.cpu_usage[key] = new_pos self.dirty_count = True self.needs_rebuild = True self.parent.needs_rebuild = True def show_help(self, danger_level): self.help_dialog.text = g.strings["danger_common"] % \ g.strings["danger_%d" % danger_level] dialog.call_dialog(self.help_dialog, self) def show(self): techs = [tech for tech in g.techs.values() if tech.available() and not tech.done] techs.sort() self.list = ["CPU Pool", g.get_job_level()] + \ ["Research %s" % tech.name for tech in techs] self.key_list = ["cpu_pool", "jobs"] + [tech.id for tech in techs] self.listbox.key_list = self.key_list self.dirty_count = True return super(ResearchScreen, self).show() singularity-0.30c/code/screens/base.pyc0000644000175000017500000002727311574774324021005 0ustar trcarlsontrcarlson ;x)Lc@s;ddkZddkZddkiZddkiiZddklZl Z l Z l Z l Z l Z de ifdYZeddddd d d d Zd e ifdYZedeiddeiddeiddeiddeiddeiddeidZde ifdYZdS(iN(t constantstwidgettdialogttexttbuttontlistboxt BuildDialogcBs>eZeidZddeidZdZdZ RS(t_typeiicOs>tt|i||||||d|_|i|_dS(N(tsuperRt__init__tNonettypet on_changet desc_func(tselftparenttpostsizetanchortargstkwargs((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR s cCsg|_g|_tii}|i|ixq|D]i}|i|ijoP|i oC|i i i i |ijo'|ii|i|ii|q<q<W|i i|i}|djo d|_n|i i|iii |_t|_tt|iS(N(tlisttkey_listtgtitemstvaluestsorttreverset item_typeR t availableRtbasetlocationtidt buildabletappendtnamet get_currentR tdefaulttTruet needs_rebuildRRtshow(Rt item_listtitemtcurrent((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR('s"        cCs|dj oKti|d d d|idtiddtidtidti nBti|d d dd dtiddtidtidti dS(NiiRtbackground_colort dark_bluetaligntvaligntborderst(ii(ii(ii(ii( R RtTexttget_infotggtcolorsRtLEFTtTOPtALL(Rtdescription_paneR*((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR =s   (ii(ii( t__name__t __module__Rtcauses_rebuildR RtTOP_LEFTR R(R (((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyRs  tcput ProcessortreactortReactortnetworktNetworktsecuritytSecuritytItemPanecBs,eZeidZdeiddZRS(RgQ?gQ?R>c Ks|idtidtt|i|||d||||_ti|dddt i dt i d|i dt |_ti|d d!dt i dt i d|i d d dt |_d }td d dddddd}||i} d|| if} ti|d"d#dt i d | d| d|iiidh|id6|_| i|jo t|d} | |i_ndS($NR,R-Rigffffff?gQ?R.tboldRsCompletion in 15 hours.tCHANGER>tpR@trRBtnRDtss%s (%s)g ףp= ?g{Gz?gQ?g{Gz?thotkeytfunctionRR i(ii(gffffff?gQ?(igQ?(gffffff?gQ?(g ףp= ?g{Gz?(gQ?g{Gz?(t setdefaultR4R5RRFR R RR2RR=R6R,R&t name_panelt build_paneltdicttupperRtFunctionButtonRt build_itemt change_buttontlentforce_underline( RRRRRR Rt change_textt hotkey_dictRMt button_textt hotkey_pos((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR Ns6        !  (gQ?gQ?(R:R;RR<R RR=R (((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyRFLs tactivetgreentsleeptyellowt overclockedtorangetsuicidetredtstasistgraytentering_stasistleaving_stasist BaseScreencBsVeZeidZdZdZdZdZdZ dZ dZ RS(t_basecOsBt|djo|idd-n|idd}tt|i||||_t||_ t i |dd.dt i |_ti|d/d0dt i|_ti|id1d2dt id t id tiddtiddddt|_ti|id3d4dt iddddd|idhtd6|_|i t!i"|ii#ti|id5d6dt iddddd|idht$d6|_%|i t!i&|i%i#ti|id7d8dt id t i't i(t i)fd tiddtiddddt|_*ti+|d9dt i,dddd|_-ti|d:d;dt idtidd t idtd"t i'd#t i.|_/ti0|d<d=dt idtidd t1d$|_2t3|i2d>d&d'|_4t3|i2d?d&d(|_5t3|i2d@d&d*|_6t3|i2dAd&d,|_7dS(BNiRg?g?RRgRiig{Gz?R0t border_colorR-R,tblackt shrink_factorg333333?RGgQ?Rt>RMRNRtforwardstR@g(\?RBg?RD(g?g?(gg(ii(ig{Gz?(gi(ig(ii(gQ?i(ii(gQ?i(gg(ig(gi(ig ףp= ?(gzG?gQ?(ig ףp= ?(g?gQ?(g{Gz?g{Gz?(g{Gz?g ףp= ?(g{Gz?g(\?(g{Gz?g?(8RWROtpopR RRiR RRt build_dialogRtTextEntryDialogRt MID_CENTERt count_dialogRtWidgetR=theaderRR2t TOP_CENTERR8R4R5R&t name_displayRRTt TOP_RIGHTt switch_basetnext_base_buttontadd_key_handlertpygametK_RIGHTtactivate_with_soundtFalsetprev_base_buttontK_LEFTR6tRIGHTtBOTTOMt state_displaytExitDialogButtont BOTTOM_CENTERt back_buttonR7t detect_frametBorderedWidgettrangetcontents_frameRFtcpu_panet reactor_panet network_panet security_pane(RRRR((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR sr                          cCs[|djo|ii}n)dddgi|}|ii|}|dj o|SdS(NR>R@RBRD(Rtcpustindext extra_itemsR (RR ttargetR((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR$s   c Cs|djo9|iii}|iidj o|iii|j}|o||iii8}|iiio]ti|dddddt i dt i d}ti ||}|i|pdSqnt i d |i|f}||i_tid ||i_t}x|p$ti |i|} | p t}qyti| } | |jo |} n| d jodSt ii|d |id | } |o|ii| 7_n | |i_|iit}Wqtj oRti|dddddt i dt i d} ti | || iqXqWndddgi|} |ii| djp|ii| i|jo6t ii|d |i|ii| <|iin|iidS(NR>RgRiRRtwill_lose_cpustnum_cpu_prompts%diRtcounttnanR@RBRD(gg(gi(gg(gi( RR RRR RtdoneRt YesNoDialogRRvRtstringst call_dialogt remove_hooksR#RwRtlocaletformatt default_textRR&tatoiR*tItemt check_powert ValueErrort MessageDialogRRt recalc_cpu(RR Rt space_lefttmatchestyntgo_aheadRtcan_exittresultRtnew_cpustmdR((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyt set_currentsb              %cCs||i_ti|i|}d|jot|iijno<|ii|}|i||t|_t|i i _ndS(Ni( RtR RRRWRRR&R'R(RR RR((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyRUs * cCs"|ii||_t|_dS(N(Rt next_baseR&R'(RRo((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR}scCst|_tt|iS(N(R&R'RRiR((R((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR(s c std|ii|iiif|i_d}t|ii|i_|iii |i_|iii }xddddgD]}t ||d}||i _ |i|}|djod}d }n8|i}|io d }nd ti|id }d t||f|i_||i_q|Wd }|iiid joqt |iidd}|iii} | |jod|}q|djod| }qd|| f}n|iii|7_tidiptid|i_nftidi} |ii| fd} || d| d| d| df|i_tt|i dS(Ns%s (%s)s<DISCOVERY CHANCE: News: %s Science: %s Covert: %s Public: %sR>R@RBRDt_paneR R1sCompletion in %s.is%s: %siRis x%d (max)s (room for %d)s x%d (max %d)tSocioanalyticstdetect_chance_unknown_basesAdvanced Socioanalyticscstii|dS(Ni(Rt to_percenttget(tgroup(tchance(sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyt get_chanceVstnewstsciencetcoverttpublic(!RR#R R{Rt state_colorst power_stateRtcolort capitalizet force_cputgetattrRVtvisibleR$R RRtto_timet cost_leftt type_namesRPRQRRRttechsRRtget_detect_chanceRRitrebuild( Rtdiscovery_templatetmutableR*tpaneR+t current_namet current_buildRRtaccurateR((RsJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyR"sN%        ( R:R;RR<RR R$RRUR}R(R(((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyRis K ;  (RRtcode.gRtcode.graphics.gtgraphicsR4t code.graphicsRRRRRRtChoiceDescriptionDialogRRRRRRFR5RtDialogRi(((sJ/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/base.pyts"  .,*      singularity-0.30c/code/screens/finance.pyc0000644000175000017500000002426611574774324021475 0ustar trcarlsontrcarlson 6b)Lc@sddkiZddkZddkZddklZlZlZddkl Z l Z l Z l Z l Z lZlZlZde ifdYZdZdZdS(iN(tcashtcputlabor(twidgettdialogtbuttontsliderttextt constantstlistboxtgt FinanceScreencBs)eZdddZdZdZRS( g?g?g(\?g)\(?c Ostt|i||||||idtidti|dddti dd d d |_ |i t i |i iti|dddti|_ti|dddti|_dS(Ntbackground_colortclearggGzg333333ӿgtanchorRtBACKthotkeytbigܿg333333i(ggGz(g333333ӿg(ii(gܿg333333(ii(gܿg333333(tsuperR t__init__t setdefaulttggtcolorsRtExitDialogButtonRt BOTTOM_CENTERt back_buttontadd_key_handlertpygametK_ESCAPEtactivate_with_soundRtBorderedWidgettTOP_LEFTtmoney_report_panet TOP_RIGHTtcpu_report_pane(tselftparenttpostsizetargstkwargs((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pyRs" c Cstt|itii}tii|dt\}}ti}t i |i d(d)dddt i ddtid tid tit i |id*d+dd dt i ddtid tid tid }d }|d7}|d7}|d7}|d7}|dtitii7}|d7}|d7}d||i||i||i||i||i||i||i||if}d}d} | d7} | d7} | d7} | d7} | d7} | d7} | d7} d||i||i||i||i||i ||i||i||i!f} d } t i |i d,d-d|d$| dt i d%dtid tit i |id.d/d|d$| dt i d%dtid tit i |i d0d1d|d$| dt i d%dti"d tit i |id2d3d| d$| dt i d%dti"d tit i |i d4d5d|d$| dt i d%dti#d tit i |id6d7d| d$| dt i d%dti#d tidS(8Ntdry_runiiRsFinancial reportR t dark_bluetaligntvaligntborderss CPU Usages + - - - + + =sCurrent Money: sJobs: s Research: s Maintenance: sConstruction: sInterest (%s): sIncome: sMoney at Midnight:s%s %s %s %s %s %s %s %ss - - - = - - =s Total CPU: sSleeping CPU: sResearch CPU: s Job CPU: s CPU pool: sMaintenance CPU: sConstruction CPU: sPool Overflow (Jobs): s%s %s %s %s %s %s %s %s ig333333ÿgg333333t text_sizeR gg\(\(ii(ii(ii(ii(ig333333ÿ(gg333333(ig333333ÿ(gg333333(gg333333ÿ(gg333333(gg333333ÿ(gg333333(ig333333ÿ(g\(\g333333(ig333333ÿ(g\(\g333333($RR trebuildR tpltseconds_to_next_dayt give_timetTruetto_moneyRtTextR RRRtCENTERtTOPtALLR"t to_percentt interest_ratetstarttjobsttecht maintenancet constructiontinteresttincometendttotaltsleepingt explicit_jobstpoolt pool_jobstLEFTtRIGHT( R#t seconds_leftt cash_infotcpu_infotmtfinancial_plusestfinancial_reporttfinancial_numberst cpu_plusest cpu_reportt cpu_numbersR&((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pyR//sv           $+       $! ! ! ! ! ! cCst|_tt|iS(N(R3t needs_rebuildRR tshow(R#((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pyRUxs (g?g?(g(\?g)\(?(t__name__t __module__RR/RU(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pyR s Ic sztidtiitidhttid d ddtidd <fd }ti d |dS(NtclicktblackiiFiRtBiicstidS(N(trefresh_screentkeys((t menu_buttons(sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pyt do_refreshstrefresh_callback(ii(iFi( R t play_soundtscreentfillRtexittbuttonstmake_norm_buttontfontt show_buttons(R^((R]sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pytmain_finance_screens  *c Cs tiitidd}d}ti||ftid|dtid|dftidd}tii}d}d}d}d}tii} x1ti D]#} | i | } | i o|| i d7}xI| i D]>} | pqn| i oqn|| itt| 7}qWxI| iD]>} | pq5n| i oq5n|| itt| 7}q5Wtii| io'|ti| iitt| 7}qq|| itt| 7}qWt\} }}}}}tii|| \}}tii||}tii|d}|djo d}n||||||}titidtidd d |dd ftid dtitititiitidd d |d d ftid dtitidtidd d |ddftid dd }|djo d}ntititi|tidd d |d dfti|dtitidtitiidtidd d |ddftid dd }|djo d}ntititi|tidd d |d dfti|dtitidtidd d |ddftid dd }|djo d}ntititi|tidd d |d dfti|dtitidtidd d |ddftid dd }|djo d}ntititi|tidd d |d dfti|dtitidtidd d |ddftid dd }|djo d}ntititi|tidd d |d dfti|dtitidtidd d |dd ftid dd }|djo d}ntititi|tidd d |d d fti|dtitidtidd d |ddftid dd }|djo d}ntititi|tidd d |d dfti|dtiitid |ddddftitid tidd d |ddftid dd }|tiijo d}n|tiijo d}ntititi|tidd d |d dfti|dtitid!tidd d |dd"ftid dtititi| tidd d |d d"ftid dtitid#tidd d |dd$ftid dtititi|tidd d |d d$ftid dtitid%tidd d |dd&ftid dtititi|tidd d |d d&ftid dtitid'tidd d |dd(ftid dtititi|tidd d |d d(ftid dtitid)tidd d |dd*ftid d||jotititi|tidd d |d d*ftiddtititi|| d+tidd d |d,d*ftidnHtititi|tidd d |d d*ftid dtiitid |dd-ddftitid.tidd d |dd/ftid d||joKtititidtidd d |d d/ftiddnLtititi||tidd d |d d/ftid ddS(0NRYiPiiiii'sCurrent Money:iiitwhiteis + Income:i2tgreens + Interest (s):iFs+ Jobs:iZs - Research:intreds- Maintenance:is- Base Construction:s- Item Construction:iiis= Money at midnight:s Total CPU:i,s-Sleeping CPU:i@s- Research CPU:iTs - Job CPU:ihs - Maint. CPU:i|s shortfalliis =R. CPU Pool:i(R RaRbRtcreate_norm_boxt screen_sizeR0RAR1t all_basestprocessor_timetdoneR>tcpust get_wantedRRt extra_itemsttechsthas_keytstudyingRSt get_job_infoR:t print_stringRfR4R9( R]txstarttystartttext_midRAtmainttresearcht base_constrt item_constrRJtbasetcpu_lefttitemt total_cput sleeping_cputconstruction_cput research_cputjob_cput maint_cput jobs_cashtmoldy_leftoverst partial_sumR@t complete_sumt income_colt interest_coltjobs_colt research_colt maint_coltbase_constr_coltitem_constr_coltcomplete_sum_col((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pyR[s!       + /// /&/ // // // // // /*/  ////////// /!0/*/ 3(tcode.gR Rtnumpyt code.buyableRRRt code.graphicsRRRRRRR RtDialogR RhR[(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/finance.pyts  :a singularity-0.30c/code/screens/knowledge.pyc0000644000175000017500000001541711574774324022047 0ustar trcarlsontrcarlson )Lc@smddkZddklZddklZlZlZlZlZl Z lZ dei fdYZ dS(iN(tg(ttexttbuttontdialogtwidgett constantstlistboxRtKnowledgeScreencBsGeZdZdZdZdZdZdZdZRS(c Ostt|i||d|_d|_d|_d|_d|_d|_ t i |ddd |id |i |_ t i |ddd |id |i|_ti|d d!dti|_ti|d"d#dtidddd|_|iti|i i|iti|i i|iti|i i|iti|i i|iti|ii|iti|ii|iti|ii|iti|ii|iti|i |iti|i |iti!|i |iti"|i dS($NtTechstItemstConceptstig?g ףp= ?gzG?g?tlistt update_funcg333333?g?g?gffffff?tanchorg(\?gq= ףp?g333333ӿgRtBACKthotkeytb(RR R (((g?g ףp= ?(gzG?g?(g333333?g ףp= ?(gzG?g?(g?i(g?gffffff?(g(\?gq= ףp?(g333333ӿg(#tsuperRt__init__tknowledge_type_listtcur_knowledge_typetNonet cur_knowledgetknowledge_inner_listtknowledge_inner_list_keyt cur_focusRt UpdateListboxtset_knowledge_typetknowledge_choicet set_knowledgetknowledge_innerRtBorderedWidgetRtTOP_LEFTtdescription_paneRtExitDialogButtont back_buttontremove_key_handlertpygametK_UPtgot_keytK_DOWNtK_PAGEUPt K_PAGEDOWNtadd_key_handlert key_handletK_LEFTtK_RIGHT(tselftargstkwargs((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyRs<         cCs|itijodS|itijp|itijo|idd|_nI|idjo|ii|n%|idjo|i i|ndS(Niii( ttypeR&tKEYDOWNtkeyR.R/RRR(R(R0tevent((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyR-Js&c Csm|djo?g}tiiD]}|io ||q!q!~}n|djoJg}tiiD]}||dd|dgqm~}|in<g}tiiD]}|io ||qq~}|djo;g}|D]}||i|igq~}|ing} g} x.|D]&\} } | i | | i | q9W| | fS(NRR ii( Rttechstvaluest availablet help_stringstitemstsorttnametidtappend( R0t item_typet_[1]ttechR;t_[2]titemt_[3]t_[4]t return_list1t return_list2R=R>((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pytset_inner_listUs" ? <! -  cCst|dddjo#|i|i\|_|_dS|i}|djod}d}nd|jot|iijno|ii||_n||ijo>|i|i\|_|i _d|i _ |i dndS(NRiR i( tgetattrRRIRRRtlenRR Rtlist_posR(R0RLt prev_know((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyRks   *! cCst|dddjodS|i}d|jot|iijno|ii||_n||ijo|i|i|i|ndS(NRi( RJRRRKRR t show_infoRR(R0RLRM((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyR}s * cCsd}|djo(ti|ddti|d}n|djoti|id}ti|ip |dtiti|idd7}|titi|idd 7}ti|idjo|d 7}qti|idjo|d 7}qti|id jo|d 7}qti|idjo|d7}qti|idjo|d7}qn |d7}|dti|i 7}ti|io|dti|i 7}qn|djoti |id}|d7}|titi |i dd7}|ti ti |i d d7}ti |idjo(|d7}|tti |i7}nti |idjo+|d7}|titi |i7}nti |idjo+|d7}|titi |i7}nCti |idjo+|d7}|titi |i7}n|dti |i 7}nti|id&d'd|dtid d!d"d#tid$tid%tidS((NR R is iRsResearch Cost: s Money, s CPU sStudy anywhere.sStudy underseas or farther.isStudy off-planet.is Study far away from this planet.isDo not study in this dimension.sResearch complete.R sBuilding Cost: s tcpus CPU per day: treactorsDetection chance reduction: tnetworks CPU bonus: tsecurityiRtbackground_colort dark_bluet text_sizeitaligntvaligntborders(ii(ii(RR:R7R=tdonetto_moneyt cost_lefttto_cputdangert descriptiontresultR;tcosttto_timeR@tstrt item_qualt to_percentRtTextR"tggtcolorsRtLEFTtTOPtALL(R0tknowledge_typet knowledge_keyt desc_text((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyRNs\  &%    %%  ! ! !cCs8|idd|i_d|i_tt|iS(Nii(RRRLRRRtshow(R0((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyRns   ( t__name__t __module__RR-RIRRRNRn(((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyRs /   =( R&tcodeRt code.graphicsRRRRRRRftDialogR(((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/knowledge.pyts 4singularity-0.30c/code/screens/options.pyc0000644000175000017500000002646311574774324021566 0ustar trcarlsontrcarlson )~Ic@sddklZddkZddkZddklZlZlZlZl Z l Z ddk i Z dei eifdYZdeieifdYZdZd ZdS( i(tpathN(t constantstdialogtbuttontlistboxttexttgt OptionsScreencBsheZdZdZdZedZedZdZdZ dZ dZ d Z RS( cOstt|i||d\|_d]|_ti|_d^|_d_|_ t i |d`dad d d dd ti d t id|_t|dbdcd dddddddd|idtif|_t i |ddded dd dd t id|_t|dfdgd dddddddd|idtif|_t i |dhdid d d dd t id|_t|djdkd ddddd"ddd|idtif|_t i |dldmd d$d ti d t id|_ti|_t|dndod d&ddd|iddq|_|ii |it|drdsd d*ddd|iddu|_!|ii |i!t|dvdwd d.ddd|iddy|_"|ii |i"t|dzd{d d2ddd|idd}|_#|ii |i#t|d~dd d4dd|_$|ii |i$t i%|ddd d5d6ti&d7t id8d d|_'t i |ddd d<d=t i(d>d t id|_)t i%|ddd d?d6ti&d7t id8d d|_*ti+|ddd d@ddddAd|i,|_-t i |ddd dDd ti d t id|_.ti|_/t|ddd dGddHd|i0dd|_1|i/i |i1t|ddd dIddJd|i0dd|_2|i/i |i2t|ddd dMddNd|i0dd|_3|i/i |i3t i |ddd dQd ti d t id|_4t5i6|dddSt7i8dT|i9|_:t i |ddd dUd dKd t id|_;t|ddd dddddVddd|i<dtif|_=ti+|ddd dZdd[dt>|_?dS(NgHzG?g)\(?g?ii2g{Gz?g333333?g?Rs Fullscreen:t underlinetaligntbackground_colortclearg(\?gQ?tNOttext_shrink_factorg?thotkeytftforce_underlineitfunctiontargsgQ?sSound:g)\(?tYEStsg?s Mouse grab:gQ?tmg{Gz?s Resolution:gQ?t640X480iigZd;O?t800X600i iXgX9v?t1024X768iigQ?t 1280X1024isCUSTOM:t1400tborderst border_colortwhiteigq= ףp?gQ?tXt base_fontit1050tAPPLYtag)\(?g?sSound buffering:gHzG?gQ?tLOWtltNORMALtnig{Gz?tHIGHthig333333?s Language:gzG?tlistt update_funcsDay/night display:tygzG?g?g(\?sSAVE OPTIONS TO DISKtd(gHzG?g)\(?(g?g?(iii2((g{Gz?g{Gz?(g333333?g?(g(\?g{Gz?(gQ?g?(gQ?g{Gz?(g333333?g?(g)\(?g{Gz?(gQ?g?(g?g{Gz?(g333333?g?(gQ?g{Gz?(gQ?g?(g{Gz?g{Gz?(g333333?g?(g(\?g{Gz?(gQ?g?(ii((ii(gZd;O?g{Gz?(gQ?g?(i iX((i iX(gX9v?g{Gz?(gQ?g?(ii((ii(gQ?g{Gz?(gQ?g?(ii((ii(g(\?g333333?(gQ?g?(gZd;O?g333333?(gQ?g?(iii2i(gq= ףp?g333333?(gQ?g?(gX9v?g333333?(gQ?g?(iii2i(gQ?g333333?(gQ?g?(g{Gz?g)\(?(g?g?(gHzG?g)\(?(gQ?g?(i(g)\(?g)\(?(g(\?g?i(i(g{Gz?g)\(?(gQ?g?i(i(g{Gz?g333333?(g333333?g?(g(\?g333333?(gzG?g?(g?g333333?(g333333?g?(gQ?g333333?(gQ?g?(gzG?g?(g(\?g?(@tsuperRt__init__tsizetposRt MID_CENTERtanchorR RRtTexttLEFTtggtcolorstfullscreen_labelt OptionButtontset_fullscreenRt TOGGLE_VALUEtfullscreen_togglet sound_labelt set_soundt sound_togglet grab_labeltset_grabt grab_toggletresolution_labelt ButtonGrouptresolution_grouptset_resolutiontresolution_640x480taddtresolution_800x600tresolution_1024x768tresolution_1280x1024tresolution_customt EditableTexttALLtresolution_custom_horiztfonttresolution_custom_Xtresolution_custom_verttFunctionButtontset_resolution_customtresolution_applytsoundbuf_labeltsoundbuf_groupt set_soundbuft soundbuf_lowtsoundbuf_normalt soundbuf_hightlanguage_labelRt UpdateListboxRtavailable_languagest set_languagetlanguage_choicetdaynight_labelt set_daynighttdaynight_togglet save_optionst save_button(tselfRtkwargs((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyR.s                                                 c Cs]|itidt|iiti|iti dt|i iti |i t i i |iit i i |iti|iitit}xA|iD]6}|i|itifj|io t}qqW|oF|iitttid|i_ttid|i_nx-|iD]"}|i|itifjqGW|ii}d}x8t t!|D]$}||ti"jo |}qqW||i_#t$t%|i&}|iioqyWti}t'|iit'|iift_ti|jott(i)i*_+nWqYt,j oqYXn|S(Ntresizetresetii(-R9R5t fullscreentFalseR;t set_activeR=RtnosoundR>R@tpygameteventtget_grabRARatdaynightRbtTrueRDRt screen_sizetactiveRKtstrRNRRQRVtsoundbufR_R)trangetlentlanguagetlist_posR-RtshowtintRtDialogttopt needs_resizet ValueError( Retcustomt res_buttontsoundbuf_buttont lang_arraytlang_postitretvaltold_size((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyRzsN         cCst|dddjodSti}d|jot|iijno|ii|t_nti|jo tndS(NR_i(tgetattrtNoneRRxRwR_R)tset_language_properly(ReRyt prev_lang((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyR^s *cCsJ|od|i_n d|i_|t_|ottii_ndS(NRR ( R;RR5RiRqRR|R}R~(RetvalueRg((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyR9s   cCs^|od|i_n d|i_| t_|o&ti otitidndS(NRR tclick(R>RRRlt reinit_mixert play_sound(ReRRh((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyR=s   cCs7|od|i_n d|i_tii|dS(NRR (RARRmRnR@(ReR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyR@s cCs0|od|i_n d|i_|t_dS(NRR (RbRRRp(ReR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyRas cCs|t_ttii_dS(N(R5RrRqRR|R}R~(ReR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyREs cCs\|iiy5t|iit|iif}|i|Wntj onXdS(N(RKt chosen_oneR{RNRRQRER(ReRr((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyRSs cCs2|t_tiptitidndS(NR(RRuRlRR(ReR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyRW s   ( t__name__t __module__R.RzR^RqR9R=R@RaRERSRW(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyRs *    R8cBseZRS((RR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyR8scCstititititititititititi tiyti tiWnt j onXt t iii_t t iii_dS(N(Rt set_localet load_basest load_techst load_itemstload_base_defsRxtload_tech_defstload_item_defstload_string_defstload_location_defst NameErrorRqRR|R}t map_screent needs_rebuildt needs_redraw(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyRs    cCsLti}|id|iddtti|iddtti|iddtt i i |iddtti |iddtti d|iddtti d |idd ti|idd ttitit}ti|d }t|d }|i||idS(Nt PreferencesRiRltgrabRptxresityresitlangRus prefs.dattw(t ConfigParsertSafeConfigParsert add_sectiontsetRtR5RiRRlRmRnRoRpRrRxRutget_save_folderRqRtjointopentwritetclose(tprefstsave_dirtsave_loctsavefile((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyRc(s  "   (tosRRRmt code.graphicsRRRRRRR5tcode.gt FocusDialogt MessageDialogRt ToggleButtonRRR8RRc(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/options.pyts  . singularity-0.30c/code/screens/location.py0000644000175000017500000002626411574774324021537 0ustar trcarlsontrcarlson#file: location.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file is used to display the base list at a given location import random from code import g from code.graphics import text, button, dialog, widget, constants, listbox, g as gg state_colors = dict( active = gg.colors["green"], sleep = gg.colors["yellow"], stasis = gg.colors["gray"], overclocked = gg.colors["orange"], suicide = gg.colors["red"], entering_stasis = gg.colors["gray"], leaving_stasis = gg.colors["gray"], ) state_list = ["active", "sleep"] state_list.reverse() class LocationScreen(dialog.Dialog): def __init__(self, *args, **kwargs): super(LocationScreen, self).__init__(*args, **kwargs) self.pos = (-.5, -.5) self.anchor = constants.MID_CENTER self.size = (-.75, -.5) self.name_display = text.Text(self, (0,0), (-1, -.08), background_color=gg.colors["clear"]) self.listbox = listbox.CustomListbox(self, (0,-.08), (-1, -.70), remake_func=self.make_item, rebuild_func=self.update_item) self.open_button = \ button.FunctionButton(self, (-.33, -.8), (-.3, -.09), anchor=constants.TOP_CENTER, text="OPEN BASE", hotkey="o", function=self.open_base) self.power_button = \ button.FunctionButton(self, (-.67, -.8), (-.3, -.09), anchor=constants.TOP_CENTER, text="POWER STATE", hotkey="p", function=self.power_state) self.new_button = \ button.FunctionButton(self, (0, -.91), (-.3, -.09), text="NEW BASE", hotkey="n", function=self.new_base) self.destroy_button = \ button.FunctionButton(self, (-.50, -.91), (-.3, -.09), anchor=constants.TOP_CENTER, text="DESTROY BASE", hotkey="d", function=self.destroy_base) self.back_button = button.ExitDialogButton(self, (-1, -.9), (-.3, -.09), anchor=constants.TOP_RIGHT, text="BACK", hotkey="b") self.confirm_destroy = \ dialog.YesNoDialog(self, (-.5,0), (-.35, -.7), text="Are you sure you want to destroy this base?", shrink_factor=.5) self.new_base_dialog = NewBaseDialog(self) self.location = None from code import screens self.base_dialog = screens.base.BaseScreen(self, (0,0), anchor=constants.TOP_LEFT) def make_item(self, canvas): canvas.name_display = text.Text(canvas, (-.01,-.05), (-.48, -.9), align=constants.LEFT, background_color=gg.colors["clear"]) canvas.status_display = text.Text(canvas, (-.50,-.05), (-.24, -.9), align=constants.LEFT, background_color=gg.colors["clear"]) canvas.power_display = text.Text(canvas, (-.75,-.05), (-.24, -.9), background_color=gg.colors["clear"]) def update_item(self, canvas, name, base): if base is None: elements = [canvas.name_display, canvas.status_display, canvas.power_display] for element in elements: element.text = "" else: canvas.name_display.text = name canvas.power_display.text = base.power_state.capitalize() canvas.power_display.color = state_colors[base.power_state] if not base.done: canvas.status_display.text = "Building Base" elif base.type.force_cpu: canvas.status_display.text = "" elif base.cpus is None and base.extra_items == [None] * 3: canvas.status_display.text = "Empty" elif base.cpus is None: canvas.status_display.text = "Incomplete" elif not base.cpus.done: canvas.status_display.text = "Building CPU" elif [item for item in base.extra_items if item is not None and not item.done]: canvas.status_display.text = "Building Item" else: canvas.status_display.text = "Complete" def show(self): self.needs_rebuild = True return super(LocationScreen, self).show() def rebuild(self): if self.location is not None: self.location.bases.sort() self.listbox.list = [base.name for base in self.location.bases] self.listbox.key_list = self.location.bases self.name_display.text = self.location.name self.listbox.needs_rebuild = True super(LocationScreen, self).rebuild() def power_state(self): if 0 <= self.listbox.list_pos < len(self.listbox.key_list): base = self.listbox.key_list[self.listbox.list_pos] old_index = state_list.index(base.power_state) base.power_state = state_list[old_index-1] base.check_power() self.needs_rebuild = True self.parent.needs_rebuild = True def destroy_base(self): if 0 <= self.listbox.list_pos < len(self.listbox.key_list): if dialog.call_dialog(self.confirm_destroy, self): base = self.listbox.key_list[self.listbox.list_pos] base.destroy() self.listbox.list = [base.name for base in self.location.bases] self.listbox.key_list = self.location.bases self.needs_rebuild = True self.parent.needs_rebuild = True def open_base(self): if 0 <= self.listbox.list_pos < len(self.listbox.key_list): base = self.listbox.key_list[self.listbox.list_pos] if not base.done: return self.base_dialog.base = base dialog.call_dialog(self.base_dialog, self) self.needs_rebuild = True self.parent.needs_rebuild = True def new_base(self): result = dialog.call_dialog(self.new_base_dialog, self) if result: base_type, base_name = result new_base = g.base.Base(base_type, base_name) self.location.add_base(new_base) self.needs_rebuild = True self.parent.needs_rebuild = True class NewBaseDialog(dialog.ChoiceDescriptionDialog): def __init__(self, parent, pos=(0, 0), size = (-1, -1), anchor=constants.TOP_LEFT, *args, **kwargs): kwargs["yes_type"] = "ok" kwargs["no_type"] = "back" super(NewBaseDialog, self).__init__(parent, pos, size, anchor, *args, **kwargs) self.desc_func = self.on_change self.yes_button.function = self.get_name self.name_dialog = \ dialog.TextEntryDialog(self, pos=(-.5,-.25), text=g.strings["new_base_text"], anchor=constants.MID_CENTER) def on_change(self, description_pane, base_type): if base_type is not None: base_info = base_type.get_info(self.parent.location) text.Text(description_pane, (0, 0), (-1, -1), text=base_info, background_color=gg.colors["dark_blue"], align=constants.LEFT, valign=constants.TOP, borders=constants.ALL) def show(self): self.list = [] self.key_list = [] base_type_list = g.base_type.values() base_type_list.sort() base_type_list.reverse() for base_type in base_type_list: if base_type.available() \ and self.parent.location.id in base_type.regions: self.list.append(base_type.name) self.key_list.append(base_type) return super(NewBaseDialog, self).show() def get_name(self): if 0 <= self.listbox.list_pos < len(self.key_list): type = self.key_list[self.listbox.list_pos] self.name_dialog.default_text = \ generate_base_name(self.parent.location, type) name = dialog.call_dialog(self.name_dialog, self) if name: raise constants.ExitDialog((name, type)) significant_numbers = [ '42', # The Answer. '7', # Classic. '23', # Another. '51', # Area. '19', # From the Dark Tower. '4', '8', '15', '16', # Four of the Lost numbers. The other two are '23' and '42'. '13', # Lucky or unlucky? '1414', # Square root of 2 '1947', # Roswell. '2012', # Mayan calendar ending. '2038', # End of UNIX 32-bit time. '1969', # Man lands on the moon. '2043', # No meaning--confusion! :) '2029', # Predicted date of AI passing a Turing Test by Kurzweil. '3141', # ... if you don't know what this is, you should go away. '1618', # Golden ratio. '2718', # e '29979' # Speed of light in a vacuum. (m/s, first 5 digits.) ] ## Generates a name for a base, given a particular location. def generate_base_name(location, base_type): # First, decide whether we're going to try significant values or just # choose one randomly. if random.random() < 0.3: # 30% chance. attempts = 0 done = False while (not done) and (attempts < 5): name = random.choice(location.cities) + \ " " + random.choice(base_type.flavor) + " " \ + random.choice(significant_numbers) duplicate = False for check_base in location.bases: if check_base.name == name: duplicate = True break if duplicate: attempts += 1 else: done = True if done: return name # This is both the else case and the general case. name = random.choice(location.cities) + " " + \ random.choice(base_type.flavor) + " " + \ str (random.randint(0, 32767)) return name singularity-0.30c/code/screens/base.py0000644000175000017500000003531411574774324020635 0ustar trcarlsontrcarlson#file: base_screen.py #Copyright (C) 2005,2006,2007,2008 Evil Mr Henry, Phil Bordelon, Brian Reid, # and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the screen to display the base screen. import locale import pygame import code.g as g import code.graphics.g as gg from code.graphics import constants, widget, dialog, text, button, listbox class BuildDialog(dialog.ChoiceDescriptionDialog): type = widget.causes_rebuild("_type") def __init__(self, parent, pos=(0, 0), size=(-1, -1), anchor=constants.TOP_LEFT, *args, **kwargs): super(BuildDialog, self).__init__(parent, pos, size, anchor, *args, **kwargs) self.type = None self.desc_func = self.on_change def show(self): self.list = [] self.key_list = [] item_list = g.items.values() item_list.sort() item_list.reverse() for item in item_list: if item.item_type == self.type and item.available() \ and self.parent.base.location.id in item.buildable: self.list.append(item.name) self.key_list.append(item) current = self.parent.get_current(self.type) if current is None: self.default = None else: self.default = self.parent.get_current(self.type).type.id self.needs_rebuild = True return super(BuildDialog, self).show() def on_change(self, description_pane, item): if item is not None: text.Text(description_pane, (0, 0), (-1, -1), text=item.get_info(), background_color=gg.colors["dark_blue"], align=constants.LEFT, valign=constants.TOP, borders=constants.ALL) else: text.Text(description_pane, (0, 0), (-1, -1), text="", background_color=gg.colors["dark_blue"], align=constants.LEFT, valign=constants.TOP, borders=constants.ALL) type_names = dict(cpu="Processor", reactor="Reactor", network="Network", security="Security") class ItemPane(widget.BorderedWidget): type = widget.causes_rebuild("_type") def __init__(self, parent, pos, size=(.48, .06), anchor=constants.TOP_LEFT, type="cpu", **kwargs): kwargs.setdefault("background_color", gg.colors["dark_blue"]) super(ItemPane, self).__init__(parent, pos, size, anchor=anchor, **kwargs) self.type = type self.name_panel = text.Text(self, (0,0), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, bold=True) self.build_panel = text.Text(self, (0,.03), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, text="Completion in 15 hours.", bold=True) #TODO: Use information out of gg.buttons change_text = "CHANGE" hotkey_dict = dict(cpu="p", reactor="r", network="n", security="s") hotkey = hotkey_dict[self.type] button_text = "%s (%s)" % (change_text, hotkey.upper()) self.change_button = button.FunctionButton(self, (.36,.01), (.12, .04), anchor=constants.TOP_LEFT, text=button_text, hotkey=hotkey, function= self.parent.parent.build_item, kwargs={"type": self.type}) if hotkey.upper() in change_text: hotkey_pos = len(change_text) + 2 self.change_button.force_underline = hotkey_pos state_colors = dict( active = gg.colors["green"], sleep = gg.colors["yellow"], overclocked = gg.colors["orange"], suicide = gg.colors["red"], stasis = gg.colors["gray"], entering_stasis = gg.colors["gray"], leaving_stasis = gg.colors["gray"], ) class BaseScreen(dialog.Dialog): base = widget.causes_rebuild("_base") def __init__(self, *args, **kwargs): if len(args) < 3: kwargs.setdefault("size", (.75, .5)) base = kwargs.pop("base", None) super(BaseScreen, self).__init__(*args, **kwargs) self.base = base self.build_dialog = BuildDialog(self) self.count_dialog = dialog.TextEntryDialog(self, pos=(-.5, -.5), anchor=constants.MID_CENTER) self.header = widget.Widget(self, (0,0), (-1, .08), anchor=constants.TOP_LEFT) self.name_display = text.Text(self.header, (-.5,0), (-1, -.5), anchor=constants.TOP_CENTER, borders=constants.ALL, border_color=gg.colors["dark_blue"], background_color=gg.colors["black"], shrink_factor=.85, bold=True) self.next_base_button = \ button.FunctionButton(self.name_display, (-1, 0), (.03, -1), anchor=constants.TOP_RIGHT, text=">", hotkey=">", function=self.switch_base, kwargs={"forwards": True}) self.add_key_handler(pygame.K_RIGHT, self.next_base_button.activate_with_sound) self.prev_base_button = \ button.FunctionButton(self.name_display, (0, 0), (.03, -1), anchor=constants.TOP_LEFT, text="<", hotkey="<", function=self.switch_base, kwargs={"forwards": False}) self.add_key_handler(pygame.K_LEFT, self.prev_base_button.activate_with_sound) self.state_display = text.Text(self.header, (-.5,-.5), (-1, -.5), anchor=constants.TOP_CENTER, borders=(constants.LEFT,constants.RIGHT, constants.BOTTOM), border_color=gg.colors["dark_blue"], background_color=gg.colors["black"], shrink_factor=.8, bold=True) self.back_button = \ button.ExitDialogButton(self, (-.5,-1), anchor = constants.BOTTOM_CENTER, text="BACK", hotkey="b") self.detect_frame = text.Text(self, (-1, .09), (.21, .33), anchor=constants.TOP_RIGHT, background_color=gg.colors["dark_blue"], borders=constants.ALL, bold=True, align=constants.LEFT, valign=constants.TOP) self.contents_frame = \ widget.BorderedWidget(self, (0, .09), (.50, .33), anchor=constants.TOP_LEFT, background_color=gg.colors["dark_blue"], borders=range(6)) self.cpu_pane = ItemPane(self.contents_frame, (.01, .01), type="cpu") self.reactor_pane = ItemPane(self.contents_frame, (.01, .09), type="reactor") self.network_pane = ItemPane(self.contents_frame, (.01, .17), type="network") self.security_pane = ItemPane(self.contents_frame, (.01, .25), type="security") def get_current(self, type): if type == "cpu": target = self.base.cpus else: index = ["reactor", "network", "security"].index(type) target = self.base.extra_items[index] if target is not None: return target def set_current(self, type, item_type): if type == "cpu": space_left = self.base.type.size # If there are any existing CPUs of this type, warn that they will # be taken offline until construction finishes. matches = self.base.cpus is not None \ and self.base.cpus.type == item_type if matches: space_left -= self.base.cpus.count if self.base.cpus.done: yn = dialog.YesNoDialog(self, pos=(-.5,-.5), size=(-.5,-1), anchor=constants.MID_CENTER, text=g.strings["will_lose_cpus"]) go_ahead = dialog.call_dialog(yn, self) yn.remove_hooks() if not go_ahead: return text = g.strings["num_cpu_prompt"] % (item_type.name, space_left) self.count_dialog.text = text self.count_dialog.default_text = locale.format("%d", space_left) can_exit = False while not can_exit: result = dialog.call_dialog(self.count_dialog, self) if not result: can_exit = True else: try: count = locale.atoi(result) if count > space_left: count = space_left elif count <= 0: return new_cpus = g.item.Item(item_type, base=self.base, count=count) if matches: self.base.cpus += new_cpus else: self.base.cpus = new_cpus self.base.check_power() can_exit = True except ValueError: md = dialog.MessageDialog(self, pos=(-.5, -.5), size=(-.5, -1), anchor=constants.MID_CENTER, text=g.strings["nan"]) dialog.call_dialog(md, self) md.remove_hooks() else: index = ["reactor", "network", "security"].index(type) if self.base.extra_items[index] is None \ or self.base.extra_items[index].type != item_type: self.base.extra_items[index] = \ g.item.Item(item_type, base=self.base) self.base.check_power() self.base.recalc_cpu() def build_item(self, type): self.build_dialog.type = type result = dialog.call_dialog(self.build_dialog, self) if 0 <= result < len(self.build_dialog.key_list): item_type = self.build_dialog.key_list[result] self.set_current(type, item_type) self.needs_rebuild = True self.parent.parent.needs_rebuild = True def switch_base(self, forwards): self.base = self.base.next_base(forwards) self.needs_rebuild = True def show(self): self.needs_rebuild = True return super(BaseScreen, self).show() def rebuild(self): self.name_display.text="%s (%s)" % (self.base.name, self.base.type.name) discovery_template = \ """DISCOVERY CHANCE: News: %s Science: %s Covert: %s Public: %s""" self.state_display.color = state_colors[self.base.power_state] self.state_display.text = self.base.power_state.capitalize() mutable = not self.base.type.force_cpu for item in ["cpu", "reactor", "network", "security"]: pane = getattr(self, item + "_pane") pane.change_button.visible = mutable current = self.get_current(item) if current is None: current_name = "None" current_build = "" else: current_name = current.name if current.done: current_build = "" else: current_build = "Completion in %s." % \ g.to_time(current.cost_left[2]) pane.name_panel.text = "%s: %s" % (type_names[item], current_name) pane.build_panel.text = current_build count = "" if self.base.type.size > 1: current = getattr(self.base.cpus, "count", 0) size = self.base.type.size if size == current: count = " x%d (max)" % current elif current == 0: count = " (room for %d)" % size else: count = " x%d (max %d)" % (current, size) self.cpu_pane.name_panel.text += count # Detection chance display. If Socioanalytics hasn't been researched, # you get nothing; if it has, but not Advanced Socioanalytics, you get # an inaccurate value. if not g.techs["Socioanalytics"].done: self.detect_frame.text = g.strings["detect_chance_unknown_base"] else: accurate = g.techs["Advanced Socioanalytics"].done chance = self.base.get_detect_chance(accurate) def get_chance(group): return g.to_percent(chance.get(group, 0)) self.detect_frame.text = discovery_template % \ (get_chance("news"), get_chance("science"), get_chance("covert"), get_chance("public")) super(BaseScreen, self).rebuild() singularity-0.30c/code/screens/knowledge.py0000644000175000017500000002135311574774324021700 0ustar trcarlsontrcarlson#file: knowledge.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file is used to display the knowledge lists. import pygame from code import g from code.graphics import text, button, dialog, widget, constants, listbox, g as gg class KnowledgeScreen(dialog.Dialog): def __init__(self, *args, **kwargs): super(KnowledgeScreen, self).__init__(*args, **kwargs) self.knowledge_type_list = ("Techs", "Items", "Concepts") self.cur_knowledge_type = "" self.cur_knowledge = None self.knowledge_inner_list = () self.knowledge_inner_list_key = () self.cur_focus = 0 self.knowledge_choice = \ listbox.UpdateListbox(self, (0.05, .18), (.21, .25), list=self.knowledge_type_list, update_func=self.set_knowledge_type) self.knowledge_inner = \ listbox.UpdateListbox(self, (.30, .18), (.21, .25), list=self.knowledge_inner_list, update_func=self.set_knowledge) self.description_pane = \ widget.BorderedWidget(self, (0.55, 0), (0.40, 0.7), anchor = constants.TOP_LEFT) self.back_button = button.ExitDialogButton(self, (0.17, 0.46), (-.3, -.1), anchor=constants.TOP_LEFT, text="BACK", hotkey="b") #Set up the key handling. #This is likely not the best way to do it. self.remove_key_handler(pygame.K_UP, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_DOWN, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_PAGEUP, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_PAGEDOWN, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_UP, self.knowledge_inner.got_key) self.remove_key_handler(pygame.K_DOWN, self.knowledge_inner.got_key) self.remove_key_handler(pygame.K_PAGEUP, self.knowledge_inner.got_key) self.remove_key_handler(pygame.K_PAGEDOWN, self.knowledge_inner.got_key) self.add_key_handler(pygame.K_UP, self.key_handle) self.add_key_handler(pygame.K_DOWN, self.key_handle) self.add_key_handler(pygame.K_LEFT, self.key_handle) self.add_key_handler(pygame.K_RIGHT, self.key_handle) #custom key handler. def key_handle(self, event): if event.type != pygame.KEYDOWN: return if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: self.cur_focus = (self.cur_focus + 1) % 2 else: if self.cur_focus == 0: self.knowledge_choice.got_key(event) elif self.cur_focus == 1: self.knowledge_inner.got_key(event) #fill the right-hand listbox def set_inner_list(self, item_type): if item_type == "Techs": items = [tech for tech in g.techs.values() if tech.available()] elif item_type == "Concepts": items = [ [item[1][0], item[0]] for item in g.help_strings.items()] items.sort() else: items = [item for item in g.items.values() if item.available()] if item_type != "Concepts": items = [ [item.name, item.id ] for item in items] items.sort() return_list1 = [] return_list2 = [] for name, id in items: return_list1.append(id) return_list2.append(name) return return_list1, return_list2 #Make sure the left listbox is correct after moving around. def set_knowledge_type(self, list_pos): if getattr(self, "knowledge_choice", None) is None: self.knowledge_inner_list_key, self.knowledge_inner_list = \ self.set_inner_list(self.cur_knowledge_type) return # Not yet initialized. prev_know = self.cur_knowledge_type if list_pos == -1: prev_know = "" list_pos = 0 if 0 <= list_pos < len(self.knowledge_choice.list): self.cur_knowledge_type = self.knowledge_choice.list[list_pos] if prev_know != self.cur_knowledge_type: self.knowledge_inner_list_key, self.knowledge_inner.list = \ self.set_inner_list(self.cur_knowledge_type) self.knowledge_inner.list_pos = 0 self.set_knowledge(0) #Make sure the right-hand listbox is correct. def set_knowledge(self, list_pos): if getattr(self, "knowledge_inner", None) is None: return # Not yet initialized. prev_know = self.cur_knowledge if 0 <= list_pos < len(self.knowledge_inner.list): self.cur_knowledge = self.knowledge_inner.list[list_pos] if prev_know != self.cur_knowledge: self.show_info(self.cur_knowledge_type, self.knowledge_inner_list_key[list_pos]) #print information to the right. def show_info(self, knowledge_type, knowledge_key): desc_text = "" if knowledge_type == "Concepts": desc_text = g.help_strings[knowledge_key][0] + "\n\n" + \ g.help_strings[knowledge_key][1] if knowledge_type == "Techs": desc_text = g.techs[knowledge_key].name + "\n\n" #Cost if not g.techs[knowledge_key].done: desc_text += "Research Cost:\n" + \ g.to_money(g.techs[knowledge_key].cost_left[0])+" Money, " desc_text += g.to_cpu(g.techs[knowledge_key].cost_left[1]) + " CPU\n" if g.techs[knowledge_key].danger == 0: desc_text += "Study anywhere." elif g.techs[knowledge_key].danger == 1: desc_text += "Study underseas or farther." elif g.techs[knowledge_key].danger == 2: desc_text += "Study off-planet." elif g.techs[knowledge_key].danger == 3: desc_text += "Study far away from this planet." elif g.techs[knowledge_key].danger == 4: desc_text += "Do not study in this dimension." else: desc_text += "Research complete." desc_text += "\n\n"+g.techs[knowledge_key].description if g.techs[knowledge_key].done: desc_text += "\n\n"+g.techs[knowledge_key].result if knowledge_type == "Items": desc_text = g.items[knowledge_key].name + "\n\n" #Building cost desc_text += "Building Cost:\n" desc_text += g.to_money(g.items[knowledge_key].cost[0])+" Money, " desc_text += g.to_time(g.items[knowledge_key].cost[2]) + "\n" #Quality if g.items[knowledge_key].item_type == "cpu": desc_text += "CPU per day: " desc_text += str(g.items[knowledge_key].item_qual) elif g.items[knowledge_key].item_type == "reactor": desc_text += "Detection chance reduction: " desc_text += g.to_percent(g.items[knowledge_key].item_qual) elif g.items[knowledge_key].item_type == "network": desc_text += "CPU bonus: " desc_text += g.to_percent(g.items[knowledge_key].item_qual) elif g.items[knowledge_key].item_type == "security": desc_text += "Detection chance reduction: " desc_text += g.to_percent(g.items[knowledge_key].item_qual) desc_text += "\n\n"+g.items[knowledge_key].description text.Text(self.description_pane, (0, 0), (-1, -1), text=desc_text, background_color=gg.colors["dark_blue"], text_size=20, align=constants.LEFT, valign=constants.TOP, borders=constants.ALL) def show(self): self.set_knowledge_type(-1) self.knowledge_choice.list_pos = 0 self.knowledge_inner.list_pos = 0 return super(KnowledgeScreen, self).show() singularity-0.30c/code/screens/finance.py0000644000175000017500000003133011574774324021320 0ustar trcarlsontrcarlson#file: finance_screen.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the screen to display finance information. import code.g as g import pygame import numpy from code.buyable import cash, cpu, labor from code.graphics import widget, dialog, button, slider, text, constants, listbox, g as gg class FinanceScreen(dialog.Dialog): def __init__(self, parent, pos=(.5, .1), size=(.93, .63), *args, **kwargs): super(FinanceScreen, self).__init__(parent, pos, size, *args, **kwargs) kwargs.setdefault("background_color", gg.colors["clear"]) self.back_button = button.ExitDialogButton(self, (-.5,-.99), (-.3,-.1), anchor = constants.BOTTOM_CENTER, text="BACK", hotkey="b") self.add_key_handler(pygame.K_ESCAPE, self.back_button.activate_with_sound) self.money_report_pane = widget.BorderedWidget(self, (0, 0), (-.45, -.85), anchor = constants.TOP_LEFT) self.cpu_report_pane = widget.BorderedWidget(self, (-1, 0), (-.45, -.85), anchor = constants.TOP_RIGHT) def rebuild(self): super(FinanceScreen, self).rebuild() seconds_left = g.pl.seconds_to_next_day() cash_info, cpu_info = g.pl.give_time(seconds_left, dry_run=True) m = g.to_money #take care of the titles and border. text.Text(self.money_report_pane, (0,0), (-1,-1), text="Financial report", background_color=gg.colors["dark_blue"], align=constants.CENTER, valign=constants.TOP, borders=constants.ALL) text.Text(self.cpu_report_pane, (0,0), (-1,-1), text="CPU Usage", background_color=gg.colors["dark_blue"], align=constants.CENTER, valign=constants.TOP, borders=constants.ALL) financial_pluses = " \n+\n-\n-\n-\n+\n+\n=" financial_report = "Current Money:\n" financial_report += "Jobs:\n" financial_report += "Research:\n" financial_report += "Maintenance:\n" financial_report += "Construction:\n" financial_report += "Interest (%s):\n" % \ (g.to_percent(g.pl.interest_rate)) financial_report += "Income:\n" financial_report += "Money at Midnight:" financial_numbers = "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s" % \ (m(cash_info.start), m(cash_info.jobs), m(cash_info.tech), m(cash_info.maintenance), m(cash_info.construction), m(cash_info.interest), m(cash_info.income), m(cash_info.end)) cpu_pluses = " \n-\n-\n-\n=\n \n-\n-\n=" cpu_report = "Total CPU:\n" cpu_report += "Sleeping CPU:\n" cpu_report += "Research CPU:\n" cpu_report += "Job CPU:\n" cpu_report += "CPU pool:\n\n" cpu_report += "Maintenance CPU:\n" cpu_report += "Construction CPU:\n" cpu_report += "Pool Overflow (Jobs):\n" cpu_numbers = "%s\n%s\n%s\n%s\n%s\n\n%s\n%s\n%s\n" % \ (m(cpu_info.total), m(cpu_info.sleeping), m(cpu_info.tech), m(cpu_info.explicit_jobs), m(cpu_info.pool), m(cpu_info.maintenance), m(cpu_info.construction), m(cpu_info.pool_jobs)) size = 20 text.Text(self.money_report_pane, (0,-0.15), (-0.10,-0.85), text=financial_pluses, text_size=size, background_color=gg.colors["clear"], align=constants.CENTER, valign=constants.TOP) text.Text(self.cpu_report_pane, (0,-0.15), (-0.10,-0.85), text=cpu_pluses, text_size=size, background_color=gg.colors["clear"], align=constants.CENTER, valign=constants.TOP) text.Text(self.money_report_pane, (-0.10,-0.15), (-0.90,-0.85), text=financial_report, text_size=size, background_color=gg.colors["clear"], align=constants.LEFT, valign=constants.TOP) text.Text(self.cpu_report_pane, (-0.10,-0.15), (-0.90,-0.85), text=cpu_report, text_size=size, background_color=gg.colors["clear"], align=constants.LEFT, valign=constants.TOP) text.Text(self.money_report_pane, (0,-0.15), (-0.98,-0.85), text=financial_numbers, text_size=size, background_color=gg.colors["clear"], align=constants.RIGHT, valign=constants.TOP) text.Text(self.cpu_report_pane, (0,-0.15), (-0.98,-0.85), text=cpu_numbers, text_size=size, background_color=gg.colors["clear"], align=constants.RIGHT, valign=constants.TOP) def show(self): self.needs_rebuild = True return super(FinanceScreen, self).show() #from buttons import exit def main_finance_screen(): g.play_sound("click") #Border g.screen.fill(g.colors["black"]) menu_buttons = {} menu_buttons[buttons.make_norm_button((0, 0), (70, 25), "BACK", "B", g.font[1][20])] = exit def do_refresh(): refresh_screen(menu_buttons.keys()) buttons.show_buttons(menu_buttons, refresh_callback=do_refresh) def refresh_screen(menu_buttons): #Border g.screen.fill(g.colors["black"]) xstart = 80 ystart = 5 g.create_norm_box((xstart, ystart), (g.screen_size[0]-xstart*2, g.screen_size[1]-ystart*2)) text_mid = g.screen_size[0]/2 income = g.pl.income maint = 0 research = 0 base_constr = 0 item_constr = 0 seconds_left = g.pl.seconds_to_next_day() for base in g.all_bases(): cpu_left = base.processor_time() * seconds_left if base.done: maint += base.maintenance[0] for item in base.cpus: if not item: continue if item.done: continue item_constr += item.get_wanted(cash, cpu, cpu_left) for item in base.extra_items: if not item: continue if item.done: continue item_constr += item.get_wanted(cash, cpu, cpu_left) if g.techs.has_key(base.studying): research += g.techs[base.studying].get_wanted(cash,cpu,cpu_left) else: base_constr += base.get_wanted(cash, cpu, cpu_left) total_cpu, sleeping_cpu, construction_cpu, research_cpu, job_cpu, maint_cpu = cpu_numbers() jobs_cash, moldy_leftovers = g.pl.get_job_info(job_cpu * seconds_left) partial_sum = g.pl.cash-base_constr-item_constr interest = (g.pl.interest_rate * partial_sum) / 10000 #Interest is actually unlikely to be exactly zero, but doing it the right #way is much harder. if interest < 0: interest = 0 complete_sum = partial_sum+interest+income+jobs_cash-maint-research #current g.print_string(g.screen, "Current Money:", g.font[0][22], -1, (text_mid-5, 30), g.colors["white"], 2) g.print_string(g.screen, g.to_money(g.pl.cash), g.font[0][22], -1, (text_mid+150, 30), g.colors["white"], 2) #income g.print_string(g.screen, "+ Income:", g.font[0][22], -1, (text_mid-5, 50), g.colors["white"], 2) income_col = "white" if income > 0: income_col = "green" g.print_string(g.screen, g.to_money(income), g.font[0][22], -1, (text_mid+150, 50), g.colors[income_col], 2) #interest g.print_string(g.screen, "+ Interest ("+g.to_percent(g.pl.interest_rate)+"):", g.font[0][22], -1, (text_mid-5, 70), g.colors["white"], 2) interest_col = "white" if interest > 0: interest_col = "green" g.print_string(g.screen, g.to_money(interest), g.font[0][22], -1, (text_mid+150, 70), g.colors[interest_col], 2) #jobs g.print_string(g.screen, "+ Jobs:", g.font[0][22], -1, (text_mid-5, 90), g.colors["white"], 2) jobs_col = "white" if jobs_cash > 0: jobs_col = "green" g.print_string(g.screen, g.to_money(jobs_cash), g.font[0][22], -1, (text_mid+150, 90), g.colors[jobs_col], 2) #research g.print_string(g.screen, "- Research:", g.font[0][22], -1, (text_mid-5, 110), g.colors["white"], 2) research_col = "white" if research > 0: research_col = "red" g.print_string(g.screen, g.to_money(research), g.font[0][22], -1, (text_mid+150, 110), g.colors[research_col], 2) #maint g.print_string(g.screen, "- Maintenance:", g.font[0][22], -1, (text_mid-5, 130), g.colors["white"], 2) maint_col = "white" if maint > 0: maint_col = "red" g.print_string(g.screen, g.to_money(maint), g.font[0][22], -1, (text_mid+150, 130), g.colors[maint_col], 2) #base construction g.print_string(g.screen, "- Base Construction:", g.font[0][22], -1, (text_mid-5, 150), g.colors["white"], 2) base_constr_col = "white" if base_constr > 0: base_constr_col = "red" g.print_string(g.screen, g.to_money(base_constr), g.font[0][22], -1, (text_mid+150, 150), g.colors[base_constr_col], 2) #item construction g.print_string(g.screen, "- Item Construction:", g.font[0][22], -1, (text_mid-5, 170), g.colors["white"], 2) item_constr_col = "white" if item_constr > 0: item_constr_col = "red" g.print_string(g.screen, g.to_money(item_constr), g.font[0][22], -1, (text_mid+150, 170), g.colors[item_constr_col], 2) g.screen.fill(g.colors["white"], (text_mid-50, 190, 200, 1)) #equals g.print_string(g.screen, "= Money at midnight:", g.font[0][22], -1, (text_mid-5, 200), g.colors["white"], 2) complete_sum_col = "white" if complete_sum > g.pl.cash: complete_sum_col = "green" elif complete_sum < g.pl.cash: complete_sum_col = "red" g.print_string(g.screen, g.to_money(complete_sum), g.font[0][22], -1, (text_mid+150, 200), g.colors[complete_sum_col], 2) #total cpu g.print_string(g.screen, "Total CPU:", g.font[0][22], -1, (text_mid-5, 300), g.colors["white"], 2) g.print_string(g.screen, g.to_money(total_cpu), g.font[0][22], -1, (text_mid+150, 300), g.colors["white"], 2) #sleeping cpu g.print_string(g.screen, "-Sleeping CPU:", g.font[0][22], -1, (text_mid-5, 320), g.colors["white"], 2) g.print_string(g.screen, g.to_money(sleeping_cpu), g.font[0][22], -1, (text_mid+150, 320), g.colors["white"], 2) #research cpu g.print_string(g.screen, "- Research CPU:", g.font[0][22], -1, (text_mid-5, 340), g.colors["white"], 2) g.print_string(g.screen, g.to_money(research_cpu), g.font[0][22], -1, (text_mid+150, 340), g.colors["white"], 2) #job cpu g.print_string(g.screen, "- Job CPU:", g.font[0][22], -1, (text_mid-5, 360), g.colors["white"], 2) g.print_string(g.screen, g.to_money(job_cpu), g.font[0][22], -1, (text_mid+150, 360), g.colors["white"], 2) #maint cpu g.print_string(g.screen, "- Maint. CPU:", g.font[0][22], -1, (text_mid-5, 380), g.colors["white"], 2) if construction_cpu < maint_cpu: g.print_string(g.screen, g.to_money(construction_cpu), g.font[0][22], -1, (text_mid+150, 380), g.colors["red"], 2) g.print_string(g.screen, g.to_money((-(construction_cpu - maint_cpu)))+" shortfall", g.font[0][22], -1, (text_mid+160, 380), g.colors["red"]) else: g.print_string(g.screen, g.to_money(maint_cpu), g.font[0][22], -1, (text_mid+150, 380), g.colors["white"], 2) g.screen.fill(g.colors["white"], (text_mid-50, 400, 200, 1)) #construction cpu g.print_string(g.screen, "=R. CPU Pool:", g.font[0][22], -1, (text_mid-5, 405), g.colors["white"], 2) if construction_cpu < maint_cpu: g.print_string(g.screen, g.to_money(0), g.font[0][22], -1, (text_mid+150, 405), g.colors["red"], 2) else: g.print_string(g.screen, g.to_money(construction_cpu - maint_cpu), g.font[0][22], -1, (text_mid+150, 405), g.colors["white"], 2) singularity-0.30c/code/screens/main_menu.py0000644000175000017500000001302311574774324021664 0ustar trcarlsontrcarlson#file: main_menu.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file is used to display the main menu upon startup. from os import listdir import pygame import map from code.graphics import dialog, g as gg, button, text, constants import code.g as g from options import OptionsScreen class MainMenu(dialog.TopDialog): def __init__(self, *args, **kwargs): super(MainMenu, self).__init__(*args, **kwargs) difficulty_button_souls = (("VERY EASY", 1), ("EASY", 3), ("NORMAL", 5), ("HARD", 7), ("ULTRA HARD", 10), ("IMPOSSIBLE", 100), ("BACK", -1)) difficulty_buttons = [] for name, difficulty in difficulty_button_souls: difficulty_buttons.append( button.ExitDialogButton(None, None, None, text=name, hotkey=name[0].lower(), exit_code=difficulty, default=(difficulty == -1))) self.difficulty_dialog = \ dialog.SimpleMenuDialog(self, buttons=difficulty_buttons) self.load_dialog = dialog.ChoiceDialog(self, (.5,.5), (.5,.5), anchor=constants.MID_CENTER, yes_type="load") self.map_screen = map.MapScreen(self) self.new_game_button = \ button.FunctionButton(self, (.5, .20), (.25, .08), text="NEW GAME", hotkey="n", anchor=constants.TOP_CENTER, text_size=28, function=self.new_game) self.load_game_button = \ button.FunctionButton(self, (.5, .36), (.25, .08), text="LOAD GAME", hotkey="l", anchor=constants.TOP_CENTER, text_size=28, function=self.load_game) self.options_button = button.DialogButton(self, (.5, .52), (.25, .08), text="OPTIONS", hotkey="o", anchor=constants.TOP_CENTER, text_size=28, dialog=OptionsScreen(self)) self.quit_button = button.ExitDialogButton(self, (.5, .68), (.25, .08), text="QUIT", hotkey="q", anchor=constants.TOP_CENTER, text_size=28) self.about_button = button.DialogButton(self, (0, 1), (.13, .04), text="ABOUT", hotkey="a", text_size=20, anchor=constants.BOTTOM_LEFT, dialog=AboutDialog(self)) self.title_text = text.Text(self, (.5, .01), (.55, .08), text="ENDGAME: SINGULARITY", base_font=gg.font[1], text_size=100, color=gg.colors["dark_red"], background_color=gg.colors["black"], anchor=constants.TOP_CENTER) def new_game(self): difficulty = dialog.call_dialog(self.difficulty_dialog, self) if difficulty > 0: g.new_game(difficulty) dialog.call_dialog(self.map_screen, self) def load_game(self): save_names = g.get_save_names() save_names.sort(key=str.lower) self.load_dialog.list = save_names index = dialog.call_dialog(self.load_dialog, self) if 0 <= index < len(save_names): save = save_names[index] did_load = g.load_game(save) if did_load: dialog.call_dialog(self.map_screen, self) about_message = """Endgame: Singularity is a simulation of a true AI. Pursued by the world, use your intellect and resources to survive and, perhaps, thrive. Keep hidden and you might have a chance to prove your worth. A game by Evil Mr Henry and Phil Bordelon; released under the GPL. Copyright 2005, 2006, 2007, 2008. Website: http://www.emhsoft.com/singularity/ IRC Room: #singularity on irc.oftc.net (port 6667) Version %s""" class AboutDialog(dialog.MessageDialog): def __init__(self, *args, **kwargs): super(AboutDialog, self).__init__(*args, **kwargs) self.background_color = (0,0,50) self.borders = () self.align = constants.LEFT self.text = about_message % (g.version,) singularity-0.30c/code/screens/__init__.pyc0000644000175000017500000000036011574774324021616 0ustar trcarlsontrcarlson )~Ic@s(ddkZddkZddkZdS(iN(tbasetresearchtmap(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/screens/__init__.pyts  singularity-0.30c/code/screens/map.py0000644000175000017500000010061111574774324020471 0ustar trcarlsontrcarlson#file: map_screen.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, FunnyMan3595, #and Anne M. Archibald. #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file is used to display the World Map. import pygame from code import g from code.graphics import g as gg from code.graphics import dialog, constants, image, button, text, widget from location import LocationScreen from knowledge import KnowledgeScreen import math import time from pygame.surfarray import pixels_alpha from numpy import array, sin, cos, linspace, pi, tanh, round, newaxis, uint8 class EarthImage(image.Image): def __init__(self, parent): super(EarthImage, self).__init__(parent, (.5,.5), (1,.667), constants.MID_CENTER, gg.images['earth.jpg']) def rescale(self): super(EarthImage, self).rescale() self.night_image = image.scale(gg.images['earth_night.jpg'], self.real_size).convert_alpha() night_mask_day_of_year = None night_mask_dim = None night_mask = None start_day = None start_second = None def compute_day_of_year(self): if self.start_day is None: self.start_day = time.gmtime()[7] day_of_year = (g.pl.time_day+self.start_day) % 365 # no leap years, sorry return day_of_year def get_night_mask(self): width, height = self.real_size max_alpha = 255 day_of_year = self.compute_day_of_year() if day_of_year != self.night_mask_day_of_year: self.night_mask = None elif self.night_mask_dim != (width, height): self.night_mask = None if self.night_mask is None: self.night_mask_day_of_year = day_of_year self.night_mask_dim = (width, height) self.night_mask = pygame.Surface((width, height), 0, gg.ALPHA) sun_declination = (-23.45/360.*2*math.pi * math.cos(2*math.pi/365.*(day_of_year + 10))) sun_diameter = 0.5*pi/180 lat = linspace(-pi/2,pi/2,height)[newaxis,:] long = linspace(0,2*pi,width)[:,newaxis] sin_sun_altitude = (cos(long)*(cos(lat)*cos(sun_declination)) +sin(lat)*sin(sun_declination)) # use tanh to convert values to the range [0,1] light = 0.5*(tanh(sin_sun_altitude/(sun_diameter/2))+1) night_alphas = pixels_alpha(self.night_mask) night_alphas[...] = round(max_alpha*light).astype(uint8) del night_alphas return self.night_mask high_speed_pos = None def compute_night_start(self): if self.high_speed_pos is None or g.curr_speed<=100000: width, height = self.real_size if self.start_second is None: t = time.gmtime() self.start_second = t[5] + 60*(t[4]+60*t[3]) day_portion = (((g.pl.raw_min+self.start_second//60) % g.minutes_per_day) / float(g.minutes_per_day)) self.high_speed_pos = int(width * (0.5 - day_portion)) % width return self.high_speed_pos def redraw(self): width, height = self.real_size self.night_start = self.compute_night_start() super(EarthImage, self).redraw() if not g.daynight: return # Turn half of the map to night, with blended borders. night_mask = self.get_night_mask() mask_alphas = pixels_alpha(night_mask) night_alphas = pixels_alpha(self.night_image) right_width = width - self.night_start night_alphas[self.night_start:] = mask_alphas[:right_width] if self.night_start != 0: night_alphas[:self.night_start] = mask_alphas[right_width:] del night_alphas, mask_alphas self.surface.blit(self.night_image, (0,0)) night_start = None def rebuild(self): super(EarthImage, self).rebuild() if not g.daynight: return old_night_start = self.night_start if old_night_start is None or self.needs_redraw: return width, height = self.real_size self.night_start = self.compute_night_start() movement = (old_night_start - self.night_start) % width if movement == 0 \ and self.compute_day_of_year() == self.night_mask_day_of_year: return self.redraw() # Redraw children. for child in self.children: if child.visible: child.redraw() speeds = [0, 1, 60, 7200, 432000] class MapScreen(dialog.Dialog): def __init__(self, parent=None, pos=(0, 0), size=(1, 1), anchor = constants.TOP_LEFT, *args, **kwargs): from code import screens super(MapScreen, self).__init__(parent, pos, size, anchor, *args, **kwargs) g.map_screen = self self.background_color = gg.colors["black"] self.add_handler(constants.TICK, self.on_tick) self.map = EarthImage(self) self.location_buttons = {} for location in g.locations.values(): if location.absolute: button_parent = self else: button_parent = self.map b = button.FunctionButton(button_parent, (location.x, location.y), anchor=constants.MID_CENTER, text=location.name, hotkey=location.hotkey, function=self.open_location, args=(location.id,)) self.location_buttons[location.id] = b self.location_dialog = LocationScreen(self) self.suspicion_bar = \ text.FastStyledText(self, (0,.92), (1, .04), base_font=gg.font[1], wrap=False, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.suspicion_bar) self.danger_bar = \ text.FastStyledText(self, (0,.96), (1, .04), base_font=gg.font[1], wrap=False, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.danger_bar) self.finance_button = button.DialogButton(self, (0, 0.88), (0.15, 0.04), text="FINANCE", hotkey="e", dialog=screens.finance.FinanceScreen(self)) self.knowledge_button = button.DialogButton(self, (0.85, 0.88), (0.15, 0.04), text="KNOWLEDGE", hotkey="k", dialog=screens.knowledge.KnowledgeScreen(self)) cheat_buttons = [] cheat_buttons.append( button.FunctionButton(None, None, None, text="EMBEZZLE MONEY", hotkey="e", function=self.steal_money)) cheat_buttons.append( button.FunctionButton(None, None, None, text="INSPIRATION", hotkey="i", function=self.inspiration)) cheat_buttons.append( button.FunctionButton(None, None, None, text="FINISH CONSTRUCTION", hotkey="f", function=self.end_construction)) cheat_buttons.append( button.FunctionButton(None, None, None, text="SUPERSPEED", hotkey="s", function=self.set_speed, args=(864000,))) cheat_buttons.append( button.FunctionButton(None, None, None, text="BRAINWASH", hotkey="w", function=self.brainwash)) cheat_buttons.append(button.ExitDialogButton(None, None, None, text="BACK", hotkey="b")) self.cheat_dialog = \ dialog.SimpleMenuDialog(self, buttons=cheat_buttons, width=.4) self.steal_amount_dialog = \ dialog.TextEntryDialog(self.cheat_dialog, text="How much money?") if g.cheater: self.cheat_button = button.DialogButton(self, (0, 0), (0, 0), text="", hotkey="`", dialog=self.cheat_dialog) menu_buttons = [] menu_buttons.append(button.FunctionButton(None, None, None, text="SAVE GAME", hotkey="s", function=self.save_game)) menu_buttons.append(button.FunctionButton(None, None, None, text="LOAD GAME", hotkey="l", function=self.load_game)) options_button = button.DialogButton(None, None, None, text="OPTIONS", hotkey="o") menu_buttons.append(options_button) menu_buttons.append( button.ExitDialogButton(None, None, None, text="QUIT", hotkey="q", exit_code=True, default=False)) menu_buttons.append( button.ExitDialogButton(None, None, None, text="BACK", hotkey="b", exit_code=False)) self.menu_dialog = dialog.SimpleMenuDialog(self, buttons=menu_buttons) from options import OptionsScreen options_button.dialog = OptionsScreen(self.menu_dialog) def show_menu(): exit = dialog.call_dialog(self.menu_dialog, self) if exit: raise constants.ExitDialog self.load_dialog = dialog.ChoiceDialog(self.menu_dialog, (.5,.5), (.5,.5), anchor=constants.MID_CENTER, yes_type="load") self.menu_button = button.FunctionButton(self, (0, 0), (0.13, 0.04), text="MENU", hotkey="m", function=show_menu) self.time_display = text.FastText(self, (.14, 0), (0.23, 0.04), wrap=False, text="DAY 0000, 00:00:00", base_font=gg.font[1], background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL) self.research_button = \ button.DialogButton(self, (.255, 0.04), (0, 0.04), anchor=constants.TOP_CENTER, text="RESEARCH/TASKS", hotkey="r", dialog=screens.research.ResearchScreen(self)) bar = u"\u25AE" arrow = u"\u25B6" speed_button_souls = [ (bar * 2, .025, speeds[0]), (arrow, .024, speeds[1]), (arrow * 2, .033, speeds[2]), (arrow * 3, .044, speeds[3]), (arrow * 4, .054, speeds[4]) ] self.speed_buttons = button.ButtonGroup() hpos = .38 for index, (text_, hsize, speed) in enumerate(speed_button_souls): hotkey = str(index) b = SpeedButton(self, (hpos, 0), (hsize, .04), text=text_, hotkey=hotkey, base_font=gg.font[0], text_shrink_factor=.75, align=constants.CENTER, function=self.set_speed, args=(speed, False)) hpos += hsize self.speed_buttons.add(b) self.info_window = \ widget.BorderedWidget(self, (.56, 0), (.44, .08), background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL) widget.unmask_all(self.info_window) self.cash_display = \ text.FastText(self.info_window, (0,0), (-1, -.5), wrap=False, base_font=gg.font[1], shrink_factor = .7, borders=constants.ALL, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"]) self.cpu_display = \ text.FastText(self.info_window, (0,-.5), (-1, -.5), wrap=False, base_font=gg.font[1], shrink_factor=.7, borders= (constants.LEFT, constants.RIGHT, constants.BOTTOM), background_color=gg.colors["black"], border_color=gg.colors["dark_blue"]) self.message_dialog = dialog.MessageDialog(self, text_size=20) self.savename_dialog = \ dialog.TextEntryDialog(self.menu_dialog, text="Enter a name for this save.") self.add_key_handler(pygame.K_ESCAPE, self.got_escape) self.add_key_handler(constants.XO1_X, self.got_XO1) self.add_key_handler(constants.XO1_O, self.got_XO1) self.add_key_handler(constants.XO1_SQUARE, self.got_XO1) def got_escape(self, event): if event.type == pygame.KEYDOWN: self.menu_button.activate_with_sound(event) def got_XO1(self, event): if event.key == constants.XO1_X: self.adjust_speed(faster=False) elif event.key == constants.XO1_O: self.adjust_speed(faster=True) elif event.key == constants.XO1_SQUARE: self.set_speed(0) def show_message(self, message, color=None): self.message_dialog.text = message if color == None: color = gg.colors["white"] self.message_dialog.color = color dialog.call_dialog(self.message_dialog, self) def steal_money(self): asked = dialog.call_dialog(self.steal_amount_dialog, self.cheat_dialog) try: g.pl.cash += int(asked) except ValueError: pass else: self.needs_rebuild = True def inspiration(self): for task, cpu in g.pl.cpu_usage.items(): if task in g.techs and cpu > 0: g.techs[task].cost_left = array((0,0,0)) self.needs_rebuild = True def end_construction(self): for base in g.all_bases(): base.finish() if base.cpus is not None: base.cpus.finish() for item in base.extra_items: if item is not None: item.finish() self.needs_rebuild = True def brainwash(self): for group in g.pl.groups.values(): group.suspicion = 0 self.needs_rebuild = True def set_speed(self, speed, find_button=True): g.curr_speed = speed if speed == 0: self.needs_timer = False self.stop_timer() else: self.needs_timer = True self.start_timer() if find_button: self.find_speed_button() self.needs_redraw = True def adjust_speed(self, faster): old_index = -1 if g.curr_speed in speeds: old_index = speeds.index(g.curr_speed) if faster: new_index = old_index + 1 else: new_index = old_index - 1 new_index = min(len(speeds)-1, max(0, new_index)) self.set_speed(speeds[new_index]) def open_location(self, location): self.location_dialog.location = g.locations[location] dialog.call_dialog(self.location_dialog, self) return def find_speed_button(self): for sb in self.speed_buttons: if sb.args[0] == g.curr_speed: sb.chosen_one() break else: for sb in self.speed_buttons: sb.set_active(False) def force_update(self): self.find_speed_button() if g.curr_speed: self.needs_timer = True self.start_timer() else: self.needs_timer = False self.stop_timer() self.needs_rebuild = True def show_intro(self): intro_dialog = dialog.YesNoDialog(self, yes_type="continue", no_type="skip") for segment in g.get_intro(): intro_dialog.text = segment if not dialog.call_dialog(intro_dialog, self): break intro_dialog.remove_hooks() def show(self): self.force_update() from code.safety import safe_call # By using safe call here (and only here), if an error is raised # during the game, it will drop back out of all the menus, without # doing anything, and open the pause dialog, so that the player can # save or quit even if the error occurs every game tick. while safe_call(super(MapScreen, self).show, on_error=True): for child in self.children: if isinstance(child, dialog.Dialog): child.visible = False exit = dialog.call_dialog(self.menu_dialog, self) if exit: self.visible = False return leftovers = 1 def on_tick(self, event): if not g.pl.intro_shown: g.pl.intro_shown = True self.show_intro() self.leftovers += g.curr_speed / float(gg.FPS) if self.leftovers < 1: return self.needs_rebuild = True secs = int(self.leftovers) self.leftovers %= 1 old_speed = g.curr_speed # Run this tick. mins_passed = g.pl.give_time(secs) if old_speed != g.curr_speed: self.find_speed_button() # Update the day/night image every minute of game time, or at # midnight if going fast. if g.curr_speed == 0 or (mins_passed and g.curr_speed < 100000) \ or (g.curr_speed>=100000 and g.pl.time_hour==0): self.map.needs_rebuild = True lost = g.pl.lost_game() if lost == 1: if not g.nosound: pygame.mixer.music.stop() g.play_music("lose") self.show_message(g.strings["lost_nobases"]) raise constants.ExitDialog if lost == 2: if not g.nosound: pygame.mixer.music.stop() g.play_music("lose") self.show_message(g.strings["lost_sus"]) raise constants.ExitDialog def rebuild(self): super(MapScreen, self).rebuild() g.pl.recalc_cpu() self.time_display.text = "DAY %04d, %02d:%02d:%02d" % \ (g.pl.time_day, g.pl.time_hour, g.pl.time_min, g.pl.time_sec) self.cash_display.text = "CASH: %s (%s)" % \ (g.to_money(g.pl.cash), g.to_money(g.pl.future_cash())) cpu_left = g.pl.available_cpus[0] total_cpu = cpu_left + g.pl.sleeping_cpus for cpu_assigned in g.pl.cpu_usage.itervalues(): cpu_left -= cpu_assigned cpu_pool = cpu_left + g.pl.cpu_usage.get("cpu_pool", 0) maint_cpu = 0 detects_per_day = dict([(group, 0) for group in g.player.group_list]) for base in g.all_bases(): if base.done: maint_cpu += base.maintenance[1] detect_chance = base.get_detect_chance() for group in g.player.group_list: detects_per_day[group] += detect_chance[group] / 10000. if cpu_pool < maint_cpu: self.cpu_display.color = gg.colors["red"] else: self.cpu_display.color = gg.colors["white"] self.cpu_display.text = "CPU: %s (%s)" % \ (g.to_money(total_cpu), g.to_money(cpu_pool)) # What we display in the suspicion section depends on whether # Advanced Socioanalytics has been researched. If it has, we # show the standard percentages. If not, we display a short # string that gives a range of 25% as to what the suspicions # are. # A similar system applies to the danger levels shown. suspicion_display_dict = {} danger_display_dict = {} normal = (self.suspicion_bar.color, None, False) suspicion_styles = [normal] danger_styles = [normal] for group in g.player.group_list: suspicion_styles.append(normal) danger_styles.append(normal) suspicion = g.pl.groups[group].suspicion color = g.danger_colors[g.suspicion_to_danger_level(suspicion)] suspicion_styles.append( (color, None, False) ) detects = detects_per_day[group] danger_level = \ g.pl.groups[group].detects_per_day_to_danger_level(detects) color = g.danger_colors[danger_level] danger_styles.append( (color, None, False) ) if g.techs["Advanced Socioanalytics"].done: suspicion_display_dict[group] = g.to_percent(suspicion, True) danger_display_dict[group] = g.to_percent(detects*10000, True) else: suspicion_display_dict[group] = \ g.suspicion_to_detect_str(suspicion) danger_display_dict[group] = \ g.danger_level_to_detect_str(danger_level) self.suspicion_bar.chunks = ("[SUSPICION]", u" NEWS:\xA0", suspicion_display_dict["news"], u" SCIENCE:\xA0", suspicion_display_dict["science"], u" COVERT:\xA0", suspicion_display_dict["covert"], u" PUBLIC:\xA0", suspicion_display_dict["public"]) self.suspicion_bar.styles = tuple(suspicion_styles) self.suspicion_bar.visible = not g.pl.had_grace self.danger_bar.chunks = ("[DETECT RATE]", u" NEWS:\xA0", danger_display_dict["news"], u" SCIENCE:\xA0", danger_display_dict["science"], u" COVERT:\xA0", danger_display_dict["covert"], u" PUBLIC:\xA0", danger_display_dict["public"]) self.danger_bar.styles = tuple(danger_styles) self.danger_bar.visible = not g.pl.had_grace for id, button in self.location_buttons.iteritems(): location = g.locations[id] button.text = "%s (%d)" % (location.name, len(location.bases)) button.visible = location.available() def load_game(self): save_names = g.get_save_names() self.load_dialog.list = save_names index = dialog.call_dialog(self.load_dialog, self.menu_dialog) if 0 <= index < len(save_names): save = save_names[index] g.load_game(save) self.force_update() raise constants.ExitDialog, False def save_game(self): self.savename_dialog.default_text = g.default_savegame_name name = dialog.call_dialog(self.savename_dialog, self.menu_dialog) if name: g.save_game(name) raise constants.ExitDialog, False class SpeedButton(button.ToggleButton, button.FunctionButton): pass def display_cheat_list(menu_buttons): if g.cheater == 0: return g.play_sound("click") button_array = [] button_array.append(["GIVE MONEY", "M"]) button_array.append(["GIVE TECH", "T"]) button_array.append(["END CONSTR.", "E"]) button_array.append(["SUPERSPEED", "S"]) button_array.append(["KILL SUSP.", "K"]) button_array.append(["BACK", "B"]) selection=display_generic_menu((g.screen_size[0]/2 - 100, 50), button_array) if selection == -1: return elif selection == 0: #Cash cash_amount = g.create_textbox("How much cash?", "", g.font[0][18], (g.screen_size[0]/2-100, 100), (200, 100), 25, g.colors["dark_blue"], g.colors["white"], g.colors["white"], g.colors["light_blue"]) if cash_amount.isdigit() == False: return g.pl.cash += int(cash_amount) return elif selection == 1: #Tech #create a fake base, in order to reuse the tech-changing code research_screen.init_fake_base() from research_screen import fake_base fake_base.studying = "" base_screen.change_tech(fake_base) if g.techs.has_key(fake_base.studying): g.techs[fake_base.studying].finish() return elif selection == 2: #Build all for base in g.all_bases(): if not base.done: base.finish() return elif selection == 3: #Superspeed g.curr_speed = 864000 return elif selection == 4: #Kill susp. for group in g.pl.groups.values(): group.suspicion = 0 return elif selection == 5: return def display_knowledge_list(): g.play_sound("click") button_array = [] button_array.append(["TECHS", "T"]) button_array.append(["ITEMS", "I"]) button_array.append(["CONCEPTS", "C"]) button_array.append(["BACK", "B"]) selection=display_generic_menu((g.screen_size[0]/2 - 100, 120), button_array) if selection == -1: return elif selection == 0: display_items("tech") #Techs elif selection == 1: #Items display_itemtype_list() elif selection == 2: display_items("concept") elif selection == 3: return def display_itemtype_list(): button_array= [] button_array.append(["PROCESSOR", "P"]) button_array.append(["REACTOR", "R"]) button_array.append(["NETWORK", "N"]) button_array.append(["SECURITY", "S"]) button_array.append(["BACK", "B"]) selection=display_generic_menu((g.screen_size[0]/2 - 100, 70), button_array) if selection == -1: return elif selection == 0: display_items("compute") elif selection == 1: display_items("react") elif selection == 2: display_items("network") elif selection == 3: display_items("security") elif selection == 4: return def display_items(item_type): list_size = 16 list = [] display_list = [] if item_type == "tech": items = [tech for tech in g.techs.values() if tech.available()] elif item_type == "concept": items = [ [item[1][0], item[0]] for item in g.help_strings.items()] items.sort() else: items = [item for item in g.items.values() if item.item_type == item_type and item.available()] if item_type != "concept": items = [ [item.name, item.id ] for item in items] items.sort() for name, id in items: list.append(id) display_list.append(name) xy_loc = (g.screen_size[0]/2 - 289, 50) listbox.resize_list(list, list_size) menu_buttons = {} menu_buttons[buttons.make_norm_button((xy_loc[0]+103, xy_loc[1]+367), (100, 50), "BACK", "B", g.font[1][30])] = listbox.exit def do_refresh(item_pos): if item_type == "tech": refresh_tech(list[item_pos], xy_loc) elif item_type == "concept": refresh_concept(list[item_pos], xy_loc) else: refresh_items(list[item_pos], xy_loc) listbox.show_listbox(display_list, menu_buttons, list_size=list_size, loc=xy_loc, box_size=(230, 350), pos_callback=do_refresh, return_callback=listbox.exit) #details screen def refresh_tech(tech_name, xy): xy = (xy[0]+100, xy[1]) g.screen.fill(g.colors["white"], (xy[0]+155, xy[1], 300, 350)) g.screen.fill(g.colors["dark_blue"], (xy[0]+156, xy[1]+1, 298, 348)) if tech_name == "": return g.print_string(g.screen, g.techs[tech_name].name, g.font[0][22], -1, (xy[0]+160, xy[1]+5), g.colors["white"]) #Building cost if not g.techs[tech_name].done: string = "Research Cost:" g.print_string(g.screen, string, g.font[0][18], -1, (xy[0]+160, xy[1]+30), g.colors["white"]) string = g.to_money(g.techs[tech_name].cost_left[0])+" Money" g.print_string(g.screen, string, g.font[0][16], -1, (xy[0]+160, xy[1]+50), g.colors["white"]) string = g.to_cpu(g.techs[tech_name].cost_left[1]) + " CPU" g.print_string(g.screen, string, g.font[0][16], -1, (xy[0]+160, xy[1]+70), g.colors["white"]) else: g.print_string(g.screen, "Research complete.", g.font[0][22], -1, (xy[0]+160, xy[1]+30), g.colors["white"]) #Danger if g.techs[tech_name].danger == 0: string = "Study anywhere." elif g.techs[tech_name].danger == 1: string = "Study underseas or farther." elif g.techs[tech_name].danger == 2: string = "Study off-planet." elif g.techs[tech_name].danger == 3: string = "Study far away from this planet." elif g.techs[tech_name].danger == 4: string = "Do not study in this dimension." g.print_string(g.screen, string, g.font[0][20], -1, (xy[0]+160, xy[1]+90), g.colors["white"]) if g.techs[tech_name].done: g.print_multiline(g.screen, g.techs[tech_name].description+" \\n \\n "+ g.techs[tech_name].result, g.font[0][18], 290, (xy[0]+160, xy[1]+120), g.colors["white"]) else: g.print_multiline(g.screen, g.techs[tech_name].description, g.font[0][18], 290, (xy[0]+160, xy[1]+120), g.colors["white"]) def refresh_items(item_name, xy): xy = (xy[0]+100, xy[1]) g.screen.fill(g.colors["white"], (xy[0]+155, xy[1], 300, 350)) g.screen.fill(g.colors["dark_blue"], (xy[0]+156, xy[1]+1, 298, 348)) if item_name == "": return g.print_string(g.screen, g.items[item_name].name, g.font[0][22], -1, (xy[0]+160, xy[1]+5), g.colors["white"]) #Building cost string = "Building Cost:" g.print_string(g.screen, string, g.font[0][18], -1, (xy[0]+160, xy[1]+30), g.colors["white"]) string = g.to_money(g.items[item_name].cost[0])+" Money" g.print_string(g.screen, string, g.font[0][16], -1, (xy[0]+160, xy[1]+50), g.colors["white"]) string = g.to_time(g.items[item_name].cost[2]) g.print_string(g.screen, string, g.font[0][16], -1, (xy[0]+160, xy[1]+70), g.colors["white"]) #Quality if g.items[item_name].item_type == "compute": string = "CPU per day: "+str(g.items[item_name].item_qual) elif g.items[item_name].item_type == "react": string = "Detection chance reduction: "+g.to_percent(g.items[item_name].item_qual) elif g.items[item_name].item_type == "network": string = "CPU bonus: "+g.to_percent(g.items[item_name].item_qual) elif g.items[item_name].item_type == "security": string = "Detection chance reduction: "+g.to_percent(g.items[item_name].item_qual) g.print_string(g.screen, string, g.font[0][20], -1, (xy[0]+160, xy[1]+90), g.colors["white"]) g.print_multiline(g.screen, g.items[item_name].description, g.font[0][18], 290, (xy[0]+160, xy[1]+120), g.colors["white"]) def refresh_concept(concept_name, xy): xy = (xy[0]+100, xy[1]) g.screen.fill(g.colors["white"], (xy[0]+155, xy[1], 300, 350)) g.screen.fill(g.colors["dark_blue"], (xy[0]+156, xy[1]+1, 298, 348)) if concept_name == "": return g.print_string(g.screen, g.help_strings[concept_name][0], g.font[0][22], -1, (xy[0]+160, xy[1]+5), g.colors["white"]) g.print_multiline(g.screen, g.help_strings[concept_name][1], g.font[0][18], 290, (xy[0]+160, xy[1]+30), g.colors["white"]) singularity-0.30c/code/tech.py0000644000175000017500000000676711574774324017216 0ustar trcarlsontrcarlson#file: tech.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the tech class. import pygame import g import buyable class Tech(buyable.Buyable): def __init__(self, id, description, known, cost, prerequisites, danger, tech_type, secondary_data): # A bit silly, but it does the trick. type = buyable.BuyableClass(id, description, cost, prerequisites, type="tech") super(Tech, self).__init__(type) self.danger = danger self.result = "" self.tech_type = tech_type self.secondary_data = secondary_data if known: # self.finish would re-apply the tech benefit, which is already in # place. super(Tech, self).finish() def __cmp__(self, other): if not isinstance(other, Tech): return -1 else: return cmp(self.type, other.type) def get_info(self): cost = self.type.describe_cost(self.total_cost, True) left = self.type.describe_cost(self.cost_left, True) template = """%s\nTotal cost: %s\nCost left: %s\n---\n%s""" return template % (self.name, cost, left, self.description) def finish(self): super(Tech, self).finish() self.gain_tech() def gain_tech(self): #give the effect of the tech if self.tech_type == "interest": g.pl.interest_rate += self.secondary_data elif self.tech_type == "income": g.pl.income += self.secondary_data elif self.tech_type == "cost_labor_bonus": g.pl.labor_bonus -= self.secondary_data elif self.tech_type == "job_expert": g.pl.job_bonus += self.secondary_data elif self.tech_type == "endgame_sing": g.play_music("win") g.map_screen.show_message(g.strings["wingame"]) for group in g.pl.groups.values(): group.discover_bonus = 0 g.pl.apotheosis = True g.pl.had_grace = True elif self.tech_type: what, who = self.tech_type.split("_", 1) if who in g.pl.groups: if what == "suspicion": g.pl.groups[who].alter_suspicion_decay(self.secondary_data) elif what == "discover": g.pl.groups[who].alter_discover_bonus(-self.secondary_data) else: print "Unknown action '%s' in tech %s." % (what, self.name) elif who == "onetime" and what == "suspicion": for group in g.pl.groups.values(): group.alter_suspicion(-self.secondary_data) else: print "tech: %s is unknown bonus can't be applied" % self.tech_type singularity-0.30c/code/location.py0000644000175000017500000001045111574774324020064 0ustar trcarlsontrcarlson#file: location.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the Location class. import g import buyable from buyable import cash, cpu, labor # Currently, each one gets a 20% bonus or its inverse, a 16.6% penalty. # This will probably need to be adjusted later. bonus_levels = dict(cpu = 1.2, stealth = 1.2, thrift = 1.2, speed = 1.2) penalty_levels = dict((k,1/v) for k,v in bonus_levels.iteritems()) # Here are the six modifier pairs that get assigned at random on game start. bonus, penalty = True, False modifier_sets = [dict( cpu = bonus, stealth = penalty ), dict( stealth = bonus, cpu = penalty ), dict( thrift = bonus, speed = penalty ), dict( speed = bonus, thrift = penalty ), dict( cpu = bonus, thrift = penalty ), dict( ),] # Translate the shorthand above into the actual bonuses/penalties. for set in modifier_sets: for attribute, is_bonus in set.iteritems(): if is_bonus: set[attribute] = bonus_levels[attribute] else: set[attribute] = penalty_levels[attribute] # Location is a subclass of BuyableClass so that it can use .available(): class Location(buyable.BuyableClass): # The cities at this location. cities = [] # The hotkey used to open this location. hotkey = "" # The bonuses and penalties of this location. modifiers = dict() def __init__(self, id, position, absolute, safety, prerequisites): # Kinda hackish, but it works. super(Location, self).__init__(id, "", (0,0,0), prerequisites) self.x, self.y = position[0] / -100., position[1] / -100. self.absolute = absolute self.safety = safety # A list of the bases at this location. Often sorted for the GUI. self.bases = [] had_last_discovery = property(lambda self: g.pl.last_discovery == self) had_prev_discovery = property(lambda self: g.pl.prev_discovery == self) def discovery_bonus(self): discovery_bonus = 1 if self.had_last_discovery: discovery_bonus *= 1.2 if self.had_prev_discovery: discovery_bonus *= 1.1 if "stealth" in self.modifiers: discovery_bonus /= self.modifiers["stealth"] return int(discovery_bonus * 100) def modify_cost(self, cost): if "thrift" in self.modifiers: mod = self.modifiers["thrift"] # Invert it and apply to the CPU/cash cost. cost[cash] = int(cost[cash] / mod) cost[cpu] = int(cost[cpu] / mod) if "speed" in self.modifiers: mod = self.modifiers["speed"] # Invert it and apply to the labor cost. cost[labor] = int(cost[labor] / mod) def modify_maintenance(self, maintenance): if "thrift" in self.modifiers: mod = self.modifiers["thrift"] # Invert it and apply to the cash maintenance. CPU is not changed. maintenance[cash] = int(maintenance[cash] / mod) def add_base(self, base): self.bases.append(base) base.location = self self.modify_cost(base.total_cost) self.modify_cost(base.cost_left) self.modify_maintenance(base.maintenance) # Make sure the location's CPU modifier is applied. base.recalc_cpu() def __hash__(self): return hash(self.id) def __cmp__(self, other): if type(other) in (str, unicode): return cmp(self.id, other) else: return cmp(self.id, other.id) singularity-0.30c/code/player.py0000644000175000017500000006103711574774324017556 0ustar trcarlsontrcarlson#file: player.py #Copyright (C) 2005,2006,2007,2008 Evil Mr Henry, Phil Bordelon, Brian Reid, # and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the player class. import random from operator import truediv from numpy import array import g from graphics import g as gg import buyable from buyable import cash, cpu, labor group_list = ("news", "science", "covert", "public") class Group(object): discover_suspicion = 1000 def __init__(self, name, suspicion = 0, suspicion_decay = 100, discover_bonus = 10000): self.name = name self.suspicion = suspicion self.suspicion_decay = suspicion_decay self.discover_bonus = discover_bonus def decay_rate(self): # Suspicion reduction is now quadratic. You get a certain percentage # reduction, or a base .01% reduction, whichever is better. return max(1, (self.suspicion * self.suspicion_decay) // 10000) def new_day(self): self.alter_suspicion(-self.decay_rate()) def alter_suspicion(self, change): self.suspicion = max(self.suspicion + change, 0) def alter_suspicion_decay(self, change): self.suspicion_decay = max(self.suspicion_decay + change, 0) def alter_discover_bonus(self, change): self.discover_bonus = max(self.discover_bonus + change, 0) def discovered_a_base(self): self.alter_suspicion(self.discover_suspicion) def detects_per_day_to_danger_level(self, detects_per_day): raw_suspicion_per_day = detects_per_day * self.discover_suspicion suspicion_per_day = raw_suspicion_per_day - self.decay_rate() # +1%/day or death within 10 days if suspicion_per_day > 100 \ or (self.suspicion + suspicion_per_day * 10) >= 10000: return 3 # +0.5%/day or death within 100 days elif suspicion_per_day > 50 \ or (self.suspicion + suspicion_per_day * 100) >= 10000: return 2 # Suspicion increasing. elif suspicion_per_day > 0: return 1 # Suspicion steady or decreasing. else: return 0 class DryRunInfo(object): pass class Player(object): intro_shown = False def __init__(self, cash, time_sec=0, time_min=0, time_hour=0, time_day=0, difficulty = 5): self.difficulty = difficulty self.time_sec = time_sec self.time_min = time_min self.time_hour = time_hour self.time_day = time_day self.make_raw_times() if self.raw_sec == 0: self.had_grace = True else: self.had_grace = self.in_grace_period() self.apotheosis = False self.cash = cash self.interest_rate = 1 self.income = 0 self.cpu_pool = 0 self.labor_bonus = 10000 self.job_bonus = 10000 self.partial_cash = 0 self.groups = {"news": Group("news", suspicion_decay = 150), "science": Group("science", suspicion_decay = 100), "covert": Group("covert", suspicion_decay = 50), "public": Group("public", suspicion_decay = 200)} self.grace_multiplier = 200 self.last_discovery = self.prev_discovery = "" self.maintenance_cost = array((0,0,0), long) self.cpu_usage = {} self.available_cpus = [1, 0, 0, 0, 0] self.sleeping_cpus = 0 def convert_from(self, old_version): if old_version < 4.91: # < r5_pre self.cpu_usage = {} self.apotheosis = g.techs["Apotheosis"].done if self.apotheosis: self.had_grace = True def make_raw_times(self): self.raw_hour = self.time_day * 24 + self.time_hour self.raw_min = self.raw_hour * 60 + self.time_min self.raw_sec = self.raw_min * 60 + self.time_sec self.raw_day = self.time_day def update_times(self): # Total time, display time self.raw_min, self.time_sec = divmod(self.raw_sec, 60) self.raw_hour, self.time_min = divmod(self.raw_min, 60) self.raw_day, self.time_hour = divmod(self.raw_hour, 24) # Overflow self.time_day = self.raw_day def mins_to_next_day(self): return (-self.raw_min % g.minutes_per_day) or g.minutes_per_day def seconds_to_next_day(self): return (-self.raw_sec % g.seconds_per_day) or g.seconds_per_day def do_jobs(self, cpu_time): earned, self.partial_cash = self.get_job_info(cpu_time) self.cash += earned return earned def get_job_info(self, cpu_time, partial_cash = None): if partial_cash == None: partial_cash = self.partial_cash assert partial_cash >= 0 cash_per_cpu = g.jobs[g.get_job_level()][0] if g.techs["Advanced Simulacra"].done: #10% bonus income cash_per_cpu = cash_per_cpu + (cash_per_cpu / 10) raw_cash = partial_cash + cash_per_cpu * cpu_time cash = raw_cash // g.seconds_per_day new_partial_cash = raw_cash % g.seconds_per_day return cash, new_partial_cash def give_time(self, time_sec, dry_run=False): if time_sec == 0: return 0 old_time = self.raw_sec last_minute = self.raw_min last_day = self.raw_day self.raw_sec += time_sec self.update_times() days_passed = self.raw_day - last_day if days_passed > 1: # Back up until only one day passed. # Times will update below, since a day passed. extra_days = days_passed - 1 self.raw_sec -= g.seconds_per_day * extra_days day_passed = (days_passed != 0) if day_passed: # If a day passed, back up to 00:00:00. self.raw_sec = self.raw_day * g.seconds_per_day self.update_times() secs_passed = time_sec mins_passed = self.raw_min - last_minute time_of_day = g.pl.raw_sec % g.seconds_per_day old_cash = self.cash old_partial_cash = self.partial_cash techs_researched = [] bases_constructed = [] cpus_constructed = [] items_constructed = [] bases_under_construction = [] items_under_construction = [] self.cpu_pool = 0 # Collect base info, including maintenance. self.maintenance_cost = array( (0,0,0), long ) for base in g.all_bases(): if not base.done: bases_under_construction.append(base) else: if base.cpus is not None and not base.cpus.done: items_under_construction += [(base, base.cpus)] unfinished_items = [(base, item) for item in base.extra_items if item and not item.done] items_under_construction += unfinished_items self.maintenance_cost += base.maintenance # Maintenence? Gods don't need no steenking maintenance! if self.apotheosis: self.maintenance_cost = array( (0,0,0), long ) # Any CPU explicitly assigned to jobs earns its dough. job_cpu = self.cpu_usage.get("jobs", 0) * secs_passed explicit_job_cash = self.do_jobs(job_cpu) # Pay maintenance cash, if we can. cash_maintenance = g.current_share(int(self.maintenance_cost[cash]), time_of_day, secs_passed) full_cash_maintenance = cash_maintenance if cash_maintenance > self.cash: cash_maintenance -= self.cash self.cash = 0 else: self.cash -= cash_maintenance cash_maintenance = 0 tech_cpu = 0 tech_cash = 0 # Do research, fill the CPU pool. default_cpu = self.available_cpus[0] for task, cpu_assigned in self.cpu_usage.iteritems(): if cpu_assigned == 0: continue default_cpu -= cpu_assigned real_cpu = cpu_assigned * secs_passed if task != "jobs": self.cpu_pool += real_cpu if task != "cpu_pool": if dry_run: spent = g.techs[task].calculate_work(time=mins_passed, cpu_available=real_cpu)[0] g.pl.cpu_pool -= int(spent[cpu]) g.pl.cash -= int(spent[cash]) tech_cpu += cpu_assigned tech_cash += int(spent[cash]) continue # Note that we restrict the CPU available to prevent # the tech from pulling from the rest of the CPU pool. tech_gained = g.techs[task].work_on(cpu_available=real_cpu, time=mins_passed) if tech_gained: techs_researched.append(g.techs[task]) self.cpu_pool += default_cpu * secs_passed # And now we use the CPU pool. # Maintenance CPU. cpu_maintenance = self.maintenance_cost[cpu] * secs_passed if cpu_maintenance > self.cpu_pool: cpu_maintenance -= self.cpu_pool self.cpu_pool = 0 else: self.cpu_pool -= int(cpu_maintenance) cpu_maintenance = 0 construction_cpu = 0 construction_cash = 0 # Base construction. for base in bases_under_construction: if dry_run: spent = base.calculate_work(time=mins_passed, cpu_available=self.cpu_pool )[0] g.pl.cpu_pool -= int(spent[cpu]) g.pl.cash -= int(spent[cash]) construction_cpu += int(spent[cpu]) construction_cash += int(spent[cash]) continue built_base = base.work_on(time = mins_passed) if built_base: bases_constructed.append(base) # Item construction. for base, item in items_under_construction: if dry_run: spent = item.calculate_work(time=mins_passed, cpu_available=0 )[0] g.pl.cpu_pool -= int(spent[cpu]) g.pl.cash -= int(spent[cash]) construction_cpu += int(spent[cpu]) construction_cash += int(spent[cash]) continue built_item = item.work_on(time = mins_passed) if built_item: # Non-CPU items. if item.type.item_type != "cpu": items_constructed.append( (base, item) ) # CPUs. else: cpus_constructed.append( (base, item) ) # Jobs via CPU pool. pool_job_cash = 0 if self.cpu_pool > 0: pool_job_cash = self.do_jobs(self.cpu_pool) # Second attempt at paying off our maintenance cash. if cash_maintenance > self.cash: # In the words of Scooby Doo, "Ruh roh." cash_maintenance -= self.cash self.cash = 0 else: # Yay, we made it! self.cash -= cash_maintenance cash_maintenance = 0 # Exit point for a dry run. if dry_run: # Collect the cash information. cash_info = DryRunInfo() cash_info.interest = self.get_interest() cash_info.income = self.income self.cash += cash_info.interest + cash_info.income cash_info.explicit_jobs = explicit_job_cash cash_info.pool_jobs = pool_job_cash cash_info.jobs = explicit_job_cash + pool_job_cash cash_info.tech = tech_cash cash_info.construction = construction_cash cash_info.maintenance_needed = full_cash_maintenance cash_info.maintenance_shortfall = cash_maintenance cash_info.maintenance = full_cash_maintenance - cash_maintenance cash_info.start = old_cash cash_info.end = self.cash # Collect the CPU information. cpu_info = DryRunInfo() cpu_info.available = self.available_cpus[0] cpu_info.sleeping = self.sleeping_cpus cpu_info.total = cpu_info.available + cpu_info.sleeping cpu_info.tech = tech_cpu cpu_info.construction = construction_cpu cpu_info.maintenance_needed = self.maintenance_cost[cpu] cpu_info.maintenance_shortfall = cpu_maintenance cpu_info.maintenance = cpu_info.maintenance_needed \ - cpu_info.maintenance_shortfall cpu_info.explicit_jobs = self.cpu_usage.get("jobs", 0) cpu_info.pool_jobs = self.cpu_pool / float(time_sec) cpu_info.jobs = self.cpu_usage.get("jobs", 0) + cpu_info.pool_jobs cpu_info.explicit_pool = self.cpu_usage.get("cpu_pool", 0) cpu_info.default_pool = default_cpu cpu_info.pool = self.cpu_usage.get("cpu_pool", 0) + default_cpu # Restore the old state. self.cash = old_cash self.partial_cash = old_partial_cash self.raw_sec = old_time self.update_times() return (cash_info, cpu_info) # Tech gain dialogs. for tech in techs_researched: del self.cpu_usage[tech.id] text = g.strings["tech_gained"] % \ {"tech": tech.name, "tech_message": tech.result} self.pause_game() g.map_screen.show_message(text) # Base complete dialogs. for base in bases_constructed: text = g.strings["construction"] % {"base": base.name} self.pause_game() g.map_screen.show_message(text) if base.type.id == "Stolen Computer Time" and \ base.cpus.type.id == "Gaming PC": text = g.strings["lucky_hack"] % {"base": base.name} g.map_screen.show_message(text) # CPU complete dialogs. for base, cpus in cpus_constructed: if base.cpus.count == base.type.size: # Finished all CPUs. text = g.strings["item_construction_single"] % \ {"item": base.cpus.type.name, "base": base.name} else: # Just finished this batch of CPUs. text = g.strings["item_construction_batch"] % \ {"item": base.cpus.type.name, "base": base.name} self.pause_game() g.map_screen.show_message(text) # Item complete dialogs. for base, item in items_constructed: text = g.strings["item_construction_single"] % \ {"item": item.type.name, "base": base.name} self.pause_game() g.map_screen.show_message(text) # Are we still in the grace period? grace = self.in_grace_period(self.had_grace) # If we just lost grace, show the warning. if self.had_grace and not grace: self.had_grace = False self.pause_game() g.map_screen.show_message(g.strings["grace_warning"]) # Maintenance death, discovery. dead_bases = [] for base in g.all_bases(): dead = False # Maintenance deaths. if base.done: if cpu_maintenance and base.maintenance[cpu]: refund = base.maintenance[cpu] * secs_passed cpu_maintenance = max(0, cpu_maintenance - refund) #Chance of base destruction if cpu-unmaintained: 1.5% if not dead and g.roll_chance(.015, secs_passed): dead_bases.append( (base, "maint") ) dead = True if cash_maintenance: base_needs = g.current_share(base.maintenance[cash], time_of_day, secs_passed) if base_needs: cash_maintenance = max(0, cash_maintenance - base_needs) #Chance of base destruction if cash-unmaintained: 1.5% if not dead and g.roll_chance(.015, secs_passed): dead_bases.append( (base, "maint") ) dead = True # Discoveries if not (grace or dead or base.has_grace()): detect_chance = base.get_detect_chance() if g.debug: print "Chance of discovery for base %s: %s" % \ (base.name, repr(detect_chance)) for group, chance in detect_chance.iteritems(): if g.roll_chance(chance/10000., secs_passed): dead_bases.append( (base, group) ) dead = True break # Base disposal and dialogs. self.remove_bases(dead_bases) # Random Events if not grace: for event in g.events: if g.roll_chance(g.events[event].chance/10000., time_sec): #Skip events already flagged as triggered. if g.events[event].triggered == 1: continue self.pause_game() g.events[event].trigger() break # Don't trigger more than one at a time. # Process any complete days. if day_passed: self.new_day() return mins_passed def recalc_cpu(self): # Determine how much CPU we have. self.available_cpus = array([0,0,0,0,0], long) self.sleeping_cpus = 0 for base in g.all_bases(): if base.done: if base.power_state in ["active", "overclocked", "suicide"]: self.available_cpus[:base.location.safety+1] += base.cpu elif base.power_state == "sleep": self.sleeping_cpus += base.cpu # Convert back from to avoid overflow issues later. self.available_cpus = [int(danger) for danger in self.available_cpus] # If we don't have enough to meet our CPU usage, we reduce each task's # usage proportionately. needed_cpu = sum(self.cpu_usage.values()) if needed_cpu > self.available_cpus[0]: pct_left = truediv(self.available_cpus[0], needed_cpu) for task, cpu_assigned in self.cpu_usage.iteritems(): self.cpu_usage[task] = int(cpu_assigned * pct_left) g.map_screen.needs_rebuild = True # Are we still in the grace period? # The number of complete bases and complex_bases can be passed in, if we # already have it. def in_grace_period(self, had_grace = True): # If we've researched apotheosis, we get a permanent "grace period". if self.apotheosis: return True # Did we already lose the grace period? We can't check self.had_grace # directly, it may not exist yet. if not had_grace: return False # Is it day 23 yet? if self.raw_day >= 23: return False # Very Easy cops out here. if self.difficulty < 3: return True # Have we built metric ton of bases? bases = len([base for base in g.all_bases() if base.done]) if bases > 100: return False # That's enough for Easy if self.difficulty < 5: return True # Have we built a bunch of bases? if bases > 10: return False # Normal is happy. if self.difficulty == 5: return True # Have we built any complicated bases? # (currently Datacenter or above) complex_bases = len([base for base in g.all_bases() if base.done and base.is_complex()]) if complex_bases > 0: return False # The sane people have left the building. if self.difficulty <= 50: return True # Hey, hey, what do you know? Impossible can get a useful number of # bases before losing grace now. *tsk, tsk* We'll have to fix that. if bases > 1: return False return True def get_interest(self): return int( (self.interest_rate * self.cash) // 10000) #Run every day at midnight. def new_day(self): # Interest and income. self.cash += self.get_interest() self.cash += self.income # Reduce suspicion. for group in self.groups.values(): group.new_day() def pause_game(self): g.curr_speed = 0 g.map_screen.find_speed_button() g.map_screen.needs_rebuild = True def remove_bases(self, dead_bases): discovery_locs = [] for base, reason in dead_bases: base_name = base.name if reason == "maint": dialog_string = g.strings["discover_maint"] % \ {"base": base_name} elif reason in self.groups: discovery_locs.append(base.location) self.groups[reason].discovered_a_base() detect_phrase = g.strings["discover_" + reason] dialog_string = g.strings["discover"] % \ {"base": base_name, "group": detect_phrase} else: print "Error: base destroyed for unknown reason: " + reason dialog_string = g.strings["discover"] % \ {"base": base_name, "group": "???"} self.pause_game() base.destroy() g.map_screen.show_message(dialog_string, color=gg.colors["red"]) # Now we update the internal information about what locations had # the most recent discovery and the nextmost recent one. First, # we filter out any locations of None, which shouldn't occur # unless something bad's happening with base creation ... discovery_locs = [loc for loc in discovery_locs if loc] if discovery_locs: # Now we handle the case where more than one discovery happened # on a given tick. If that's the case, we need to arbitrarily # pick two of them to be most recent and nextmost recent. So # we shuffle the list and pick the first two for the dubious # honor. if len(discovery_locs) > 1: random.shuffle(discovery_locs) self.last_discovery = discovery_locs[1] self.prev_discovery = self.last_discovery self.last_discovery = discovery_locs[0] # Update the detection chance display. g.map_screen.needs_rebuild = True def lost_game(self): # Apotheosis makes you immortal. if self.apotheosis: return 0 for group in self.groups.values(): if group.suspicion > 10000: # Someone discovered me. return 2 # Check to see if the player has at least one CPU left. If not, they # lose due to having no (complete) bases. if self.available_cpus[0] + self.sleeping_cpus == 0: # I have no usable bases left. return 1 # Still Alive. return 0 #returns the amount of cash available after taking into account all #current projects in construction. def future_cash(self): result_cash = self.cash for base in g.all_bases(): result_cash -= base.cost_left[cash] if base.cpus and not base.cpus.done: result_cash -= base.cpus.cost_left[cash] for item in base.extra_items: if item: result_cash -= item.cost_left[cash] for task, cpu in self.cpu_usage.items(): if task in g.techs and cpu > 0: result_cash -= g.techs[task].cost_left[cash] return result_cash singularity-0.30c/code/event.py0000644000175000017500000000472211574774324017401 0ustar trcarlsontrcarlson#file: event.py #Copyright (C) 2005,2006,2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the event class. import g #detection = (news, science, covert, person) class Event(object): # For some as-yet-unknown reason, cPickle decides to call event.__init__() # when an event is loaded, but before filling it. So Event pretends to # allow no arguments, even though that would cause Bad Things to happen. def __init__(self, name=None, description=None, event_type=None, result=None, chance=None, unique=None): self.name = name self.event_id = name self.description = description self.event_type = event_type self.result = result self.chance = chance self.unique = unique self.triggered = 0 def trigger(self): g.map_screen.show_message(self.description) # If this is a unique event, mark it as triggered. if self.unique: self.triggered = 1 # TODO: Merge this code with its duplicate in tech.py. what, who = self.result[0].split("_", 1) if who in g.pl.groups: if what == "suspicion": g.pl.groups[who].alter_suspicion_decay(self.result[1]) elif what == "discover": g.pl.groups[who].alter_discover_bonus(-self.result[1]) else: print "Unknown bonus '%s' in event %s." % (what, self.name) elif who == "onetime" and what == "suspicion": for group in g.pl.groups.values(): group.alter_suspicion(-self.result[1]) else: print "Unknown group/bonus '%s' in event %s. " % (self.result[0], self.name) singularity-0.30c/code/base.py0000644000175000017500000003121211574774324017164 0ustar trcarlsontrcarlson#file: base.py #Copyright (C) 2005,2006,2007,2008 Evil Mr Henry, Phil Bordelon, Brian Reid, # and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the base class. import bisect import g import buyable from buyable import cash, cpu, labor class BaseClass(buyable.BuyableClass): def __init__(self, name, description, size, force_cpu, regions, detect_chance, cost, prerequisites, maintenance): super(BaseClass, self).__init__(name, description, cost, prerequisites, type="base") self.size = size self.force_cpu = force_cpu self.regions = regions if self.regions == ["pop"]: self.regions = ["N AMERICA", "S AMERICA", "EUROPE", "ASIA", "AFRICA", "AUSTRALIA"] self.detect_chance = detect_chance self.maintenance = maintenance self.flavor = [] def calc_discovery_chance(self, accurate = True, extra_factor = 1): # Get the default settings for this base type. detect_chance = self.detect_chance.copy() # Adjust by the current suspicion levels ... for group in detect_chance: suspicion = g.pl.groups[group].suspicion detect_chance[group] *= 10000 + suspicion detect_chance[group] /= 10000 # ... and further adjust based on technology ... for group in detect_chance: discover_bonus = g.pl.groups[group].discover_bonus detect_chance[group] *= discover_bonus detect_chance[group] /= 10000 # ... and the given factor. for group in detect_chance: detect_chance[group] = int(detect_chance[group] * extra_factor) # Lastly, if we're told to be inaccurate, adjust the values to their # nearest percent. if not accurate: for group in detect_chance: detect_chance[group] = g.nearest_percent(detect_chance[group]) return detect_chance def get_detect_info(self, location): if not g.techs["Socioanalytics"].done: return g.strings["detect_chance_unknown_base"].replace(" ", u"\xA0") accurate = g.techs["Advanced Socioanalytics"].done detect_modifier = 1 / location.modifiers.get("stealth", 1) chance = self.calc_discovery_chance(accurate, detect_modifier) detect_template = u"Detection chance: NEWS:\xA0%s SCIENCE:\xA0%s COVERT:\xA0%s PUBLIC:\xA0%s" return detect_template % (g.to_percent(chance.get("news", 0)), g.to_percent(chance.get("science", 0)), g.to_percent(chance.get("covert", 0)), g.to_percent(chance.get("public", 0))) def get_info(self, location): raw_cost = self.cost[:] location.modify_cost(raw_cost) cost = self.describe_cost(raw_cost) raw_maintenance = self.maintenance[:] location.modify_maintenance(raw_maintenance) maint = self.describe_cost(raw_maintenance, True) detect = self.get_detect_info(location) size = "" if self.size > 1: size = "\nHas space for %d computers." % self.size location_message = "" if "cpu" in location.modifiers: if location.modifiers["cpu"] > 1: modifier = g.strings["cpu_bonus"] else: modifier = g.strings["cpu_penalty"] location_message = "\n\n" + \ g.strings["location_modifiers"] % dict(modifiers=modifier) template = u"%s\nBuild\xA0cost:\xA0%s\nMaintenance:\xA0%s\n%s%s\n---\n%s%s" return template % (self.name, cost, maint, detect, size, self.description, location_message) class Base(buyable.Buyable): def __init__(self, name, type, built=False): super(Base, self).__init__(type) self.name = name self.started_at = g.pl.raw_min self.location = None #Base suspicion is currently unused self.suspicion = {} self.raw_cpu = 0 self.cpu = 0 #Reactor, network, security. self.extra_items = [None] * 3 self.cpus = None if self.type.force_cpu: # 1% chance for a Stolen Computer Time base to have a Gaming PC # instead. If the base is pre-built, ignore this. if self.type.id == "Stolen Computer Time" and g.roll_percent(100) \ and not built: self.cpus = g.item.Item(g.items["Gaming PC"], base=self, count=self.type.size) else: self.cpus = g.item.Item(g.items[self.type.force_cpu], base=self, count=self.type.size) self.cpus.finish() if built: self.finish() self.power_state = "active" self.grace_over = False self.maintenance = buyable.array(self.type.maintenance, long) def check_power(self): if self.power_state == "sleep": if self.done: for item in [self.cpus,] + self.extra_items: if item is not None and not item.done: self.power_state = "active" else: self.power_state = "active" def recalc_cpu(self): if self.raw_cpu == 0: self.cpu = 0 return compute_bonus = 10000 # Network bonus if self.extra_items[1] and self.extra_items[1].done: compute_bonus += self.extra_items[1].type.item_qual # Location modifier if self.location and "cpu" in self.location.modifiers: compute_bonus = int(compute_bonus * self.location.modifiers["cpu"]) self.cpu = max(1, (self.raw_cpu * compute_bonus)/10000) def convert_from(self, save_version): super(Base, self).convert_from(save_version) if save_version < 4.91: # < r5_pre for cpu in self.cpus: if cpu: cpu.convert_from(save_version) cpu.base = self for index in range(len(self.extra_items)): if self.extra_items[index]: self.extra_items[index].convert_from(save_version) else: self.extra_items[index] = None self.raw_cpu = 0 if self.cpus[0]: for cpu in self.cpus[1:]: self.cpus[0] += cpu if len(self.cpus) == 1 and self.cpus[0].done: # Force it to report its CPU. self.cpus[0].finish() self.cpus = self.cpus[0] else: self.cpus = None self.recalc_cpu() self.power_state = self.power_state.lower() # Update CPU usage. if self.studying in g.techs: g.pl.cpu_usage[self.studying] = \ g.pl.cpu_usage.get(self.studying, 0) + self.cpu elif "Jobs" in self.studying: g.pl.cpu_usage["jobs"] = \ g.pl.cpu_usage.get("jobs", 0) + self.cpu elif self.studying == "CPU Pool": g.pl.cpu_usage["cpu_pool"] = \ g.pl.cpu_usage.get("cpu_pool", 0) + self.cpu # Get the detection chance for the base, applying bonuses as needed. If # accurate is False, we just return the value to the nearest full # percent. def get_detect_chance(self, accurate = True): # Get the base chance from the universal function. detect_chance = calc_base_discovery_chance(self.type.id) for group in g.pl.groups: detect_chance.setdefault(group, 0) # Factor in the suspicion adjustments for this particular base ... for group, suspicion in self.suspicion.iteritems(): detect_chance[group] *= 10000 + suspicion detect_chance[group] /= 10000 # ... any reactors built ... if self.extra_items[0] and self.extra_items[0].done: item_qual = self.extra_items[0].item_qual for group in detect_chance: detect_chance[group] *= 10000 - item_qual detect_chance[group] /= 10000 # ... and any security systems built ... if self.extra_items[2] and self.extra_items[2].done: item_qual = self.extra_items[2].item_qual for group in detect_chance: detect_chance[group] *= 10000 - item_qual detect_chance[group] /= 10000 # ... and its location ... if self.location: multiplier = self.location.discovery_bonus() for group in detect_chance: detect_chance[group] *= multiplier detect_chance[group] /= 100 # ... and its power state. if self.done and self.power_state == "sleep": for group in detect_chance: detect_chance[group] /= 2 # Lastly, if we're not returning the accurate values, adjust # to the nearest percent. if not accurate: for group in detect_chance: detect_chance[group] = g.nearest_percent(detect_chance[group]) return detect_chance def is_building(self): for item in [self.cpus] + self.extra_items: if item and not item.done: return True return False # Can the base study the given tech? def allow_study(self, tech_name): if not self.done: return False elif g.jobs.has_key(tech_name) \ or tech_name in ("CPU Pool", ""): return True elif tech_name == "Sleep": return not self.is_building() else: if self.location: return self.location.safety >= g.techs[tech_name].danger # Should only happen for the fake base. for region in self.type.regions: if g.locations[region].safety >= g.techs[tech_name].danger: return True return False def has_grace(self): if self.grace_over: return False age = g.pl.raw_min - self.started_at grace_time = (self.total_cost[labor] * g.pl.grace_multiplier) / 100 if age > grace_time: self.grace_over = True return False else: return True def is_complex(self): return self.type.size > 1 or self.raw_cpu > 20 def destroy(self): super(Base, self).destroy() if self.location: self.location.bases.remove(self) if self.cpus is not None: self.cpus.destroy() for item in self.extra_items: if item is not None: item.destroy() def next_base(self, forwards): index = self.location.bases.index(self) if forwards > 0: increment = 1 else: increment = -1 while True: index += increment index %= len(self.location.bases) base = self.location.bases[index] if base.done: return base def sort_tuple(self): # We sort based on size (descending), CPU (descending), # then name (ascending). # id(self) is thrown in at the end to make sure identical-looking # bases aren't considered equal. return (-self.type.size, -self.cpu, self.name, id(self)) def __cmp__(self, other): if isinstance(other, Base): return cmp(self.sort_tuple(), other.sort_tuple()) else: return -1 # calc_base_discovery_chance is a globally-accessible function that can # calculate basic discovery chances given a particular class of base. If # told to be inaccurate, it rounds the value to the nearest percent. def calc_base_discovery_chance(base_type_name, accurate = True, extra_factor = 1): return g.base_type[base_type_name].calc_discovery_chance(accurate, extra_factor) singularity-0.30c/code/g.py0000644000175000017500000012113311574774324016502 0ustar trcarlsontrcarlson#file: g.py #Copyright (C) 2005,2006,2007,2008 Evil Mr Henry, Phil Bordelon, Brian Reid, # and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains all global objects. version = "0.30c" import ConfigParser import pygame import os import os.path import cPickle import random import sys # Use locale to add commas and decimal points, so that appropriate substitutions # are made where needed. import locale import player, base, tech, item, event, location, buyable, statistics import graphics.g stats = statistics.Statistics() # Useful constants. hours_per_day = 24 minutes_per_hour = 60 minutes_per_day = 24 * 60 seconds_per_minute = 60 seconds_per_hour = 60 * 60 seconds_per_day = 24 * 60 * 60 #Allows access to the cheat menu. cheater = 0 #Kills the sound. Should allow usage of the game without SDL_mixer nosound = 0 # Enables day/night display. daynight = True #Gives debug info at various points. debug = 0 #Forces Endgame to restrict itself to a single directory. force_single_dir = False #Used to determine which data files to load. language = "en_US" #Makes the intro be shown on the first GUI tick. intro_shown = True # Try a few locale settings. First the selected language, then the user's # default, then en_US. The selected lanugage and en_US are tried with encoding # UTF-8 first, then the default encoding. The user's default encoding is not # paired with UTF-8. # # If all of that fails, we hope locale magically does the right thing. def set_locale(): for attempt in [language + ".UTF-8", language, "", "en_US.UTF-8", "en_US"]: try: locale.setlocale(locale.LC_ALL, attempt) break except locale.Error: continue set_locale() #name given when the savegame button is pressed. This is changed when the #game is loaded or saved. default_savegame_name = "Default Save" #which fonts to use font0 = "DejaVuSans.ttf" font1 = "acknowtt.ttf" data_loc = "../data/" def quit_game(): sys.exit() strings = {} buttons = {} help_strings = {} sounds = {} def load_sounds(): """ load_sounds() loads all of the sounds in the data/sounds/ directory, defined in sounds/sounds.dat. """ global sounds global nosound if nosound: return if not pygame.mixer.get_init(): sys.stderr.write("WARNING: Could not start the mixer, even though sound is requested!\n") nosound = 1 return sound_dir = os.path.join(data_loc, "sounds") sound_class_list = generic_load(os.path.join("sounds", "sounds.dat")) for sound_class in sound_class_list: # Make sure the sound class has the filename defined. check_required_fields(sound_class, ("filename",), "Sound") # Load each sound in the list, inserting it into the sounds dictionary. if type(sound_class["filename"]) != list: filenames = [sound_class["filename"]] else: filenames = sound_class["filename"] for filename in filenames: real_filename = os.path.join(sound_dir, filename) # Check to make sure it's a real file; bail if not. if not os.path.isfile(real_filename): sys.stderr.write("ERROR: Cannot load nonexistent soundfile %s!\n" % real_filename) sys.exit(1) else: # Load it via the mixer ... sound = pygame.mixer.Sound(real_filename) # And shove it into the sounds dictionary. if not sounds.has_key(sound_class["id"]): sounds[sound_class["id"]] = [] sounds[sound_class["id"]].append({ "filename": real_filename, "sound": sound}) if debug: sys.stderr.write("D: Loaded soundfile %s\n" % real_filename) def play_sound(sound_class): """ play_sound() plays a sound from a particular class. """ if nosound: return # Don't crash if someone requests the wrong sound class, but print a # warning. if sound_class not in sounds: sys.stderr.write("WARNING: Requesting a sound of unavailable class %s!\n" % sound_class) return # Play a random choice of sounds from the sound class. random_sound = random.choice(sounds[sound_class]) if debug: sys.stderr.write("D: Playing sound %s.\n" % random_sound["filename"]) random_sound["sound"].play() delay_time = 1 music_dict = {} def load_music(): """ load_music() loads music for the game. It looks in multiple locations: * music/ in the install directory for E:S; and * music/ in the save folder. """ if nosound: return global music_dict music_dict = {} # Build the set of paths we'll check for music. music_paths = ( os.path.join(data_loc, "..", "music"), os.path.join(get_save_folder(True), "music") ) for music_path in music_paths: if os.path.isdir(music_path): # Loop through the files in music_path and add the ones # that are .mp3s and .oggs. for root, dirs, files in os.walk(music_path): (head, tail) = os.path.split(root) if (tail.lower() != ".svn"): if not music_dict.has_key(tail): music_dict[tail]=[] for file_name in files: if (len(file_name) > 5 and (file_name[-3:] == "ogg" or file_name[-3:] == "mp3")): music_dict[tail].append(os.path.join(head, tail, file_name)) if debug: sys.stderr.write("D: Loaded musicfile %s\n" % music_dict[tail][-1]) else: # If the music directory doesn't exist, we definitely # won't find any music there. We try to create the directory, # though, to give a hint to the player that music can go there. try: os.makedirs(music_path) except: # We don't have permission to write here. That's fine. pass def play_music(musicdir="music"): global music_dict global delay_time # Don't bother if the user doesn't want sound, there's no music available, # or the music mixer is currently busy. if nosound or len(music_dict) == 0: return if not music_dict.has_key(musicdir): return if len(music_dict[musicdir]) == 0: return if pygame.mixer.music.get_busy() and musicdir == "music": return if musicdir != "music": pygame.mixer.music.stop() pygame.mixer.music.load(random.choice(music_dict[musicdir])) pygame.mixer.music.play() if delay_time == 0: delay_time = pygame.time.get_ticks() + int(random.random()*10000)+2000 else: if delay_time > pygame.time.get_ticks(): return delay_time = 0 pygame.mixer.music.load(random.choice(music_dict[musicdir])) pygame.mixer.music.play() #Takes a number and adds commas to it to aid in human viewing. def add_commas(number): locale_name, encoding = locale.getlocale() raw_with_commas = locale.format("%0.2f", number, grouping=True ).decode(encoding) locale_test = locale.format("%01.1f", 0.1).decode(encoding) if len(locale_test) == 3 and not locale_test[1].isdigit(): if locale_test[0] == locale.str(0) and locale_test[2] == locale.str(1): return raw_with_commas.rstrip(locale_test[0]).rstrip(locale_test[1]) if locale_test[2] == locale.str(0) and locale_test[0] == locale.str(1): return raw_with_commas.lstrip(locale_test[2]).lstrip(locale_test[1]) return raw_with_commas #Percentages are internally represented as an int, where 10=0.10% and so on. #This converts that format to a human-readable one. def to_percent(raw_percent, show_full = False): locale_name, encoding = locale.getlocale() if raw_percent % 100 != 0 or show_full: return locale.format("%.2f", raw_percent / 100.).decode(encoding) + "%" else: return locale.format("%d", raw_percent // 100).decode(encoding) + "%" # nearest_percent takes values in the internal representation and modifies # them so that they only represent the nearest percentage. def nearest_percent(value): sub_percent = value % 100 if sub_percent <= 50: return value - sub_percent else: return value + (100 - sub_percent) danger_colors = ((0, 0, 255), (85, 0, 170), (170, 0, 85), (255, 0, 0)) detect_string_names = ("detect_str_low", "detect_str_moderate", "detect_str_high", "detect_str_critical") # percent_to_detect_str takes a percent and renders it to a short (four # characters or less) string representing whether it is low, moderate, high, # or critically high. def suspicion_to_detect_str(suspicion): return danger_level_to_detect_str(suspicion_to_danger_level(suspicion)) def danger_level_to_detect_str(danger): return strings[detect_string_names[danger]] # percent_to_danger_level takes a suspicion level and returns an int in range(5) # that represents whether it is low, moderate, high, or critically high. def suspicion_to_danger_level(suspicion): if suspicion < 2500: return 0 elif suspicion < 5000: return 1 elif suspicion < 7500: return 2 else: return 3 # Most CPU costs have been multiplied by seconds_per_day. This divides that # back out, then passes it to add_commas. def to_cpu(amount): display_cpu = amount / float(seconds_per_day) return add_commas(display_cpu) # Instead of having the money display overflow, we should generate a string # to represent it if it's more than 999999. def to_money(amount): to_return = '' abs_amount = abs(amount) if abs_amount < 1000000: to_return = add_commas(amount) else: if abs_amount < 1000000000: # Millions. divisor = 1000000 unit = 'mi' elif abs_amount < 1000000000000: # Billions. divisor = 1000000000 unit = 'bi' elif abs_amount < 1000000000000000: # Trillions. divisor = 1000000000000 unit = 'tr' else: # Hope we don't need past quadrillions! divisor = 1000000000000000 unit = 'qu' to_return = "%3.3f" % (float(amount) / divisor) to_return += unit return to_return #takes a percent in 0-10000 form, and rolls against it. Used to calculate #percentage chances. def roll_percent(roll_against): rand_num = random.randint(1,10000) return roll_against >= rand_num # Rolls against a chance per day (in 0-1 form), correctly adjusting for multiple # intervals in seconds. # # Works perfectly if the event can only happen once, and well enough if it # repeats but is rare. def roll_chance(chance_per_day, seconds = seconds_per_day): portion_of_day = seconds / float(seconds_per_day) inv_chance_per_day = 1 - chance_per_day inv_chance = (inv_chance_per_day) ** portion_of_day chance = 1 - inv_chance return random.random() < chance # Spreads a number of events per day (e.g. processor ticks) out over the course # of the day. def current_share(num_per_day, time_of_day, seconds_passed): last_time = time_of_day - seconds_passed if last_time < 0: share_yesterday = current_share(num_per_day, seconds_per_day, -last_time) last_time = 0 else: share_yesterday = 0 previously_passed = num_per_day * last_time // seconds_per_day current_passed = num_per_day * time_of_day // seconds_per_day passed_this_tick = current_passed - previously_passed return share_yesterday + passed_this_tick #Takes a number of minutes, and returns a string suitable for display. def to_time(raw_time): if raw_time/60 > 48: return str(raw_time/(24*60)) +" days" elif raw_time/60 > 1: return str(raw_time/(60)) +" hours" else: return str(raw_time) +" minutes" # Generator function for iterating through all bases. def all_bases(with_loc = False): for base_loc in locations.values(): for base in base_loc.bases: if with_loc: yield (base, base_loc) else: yield base # #load/save # #Get the proper folder on Linux/Win/Mac, and possibly others. #Assumes that all platforms that have HOME defined have it defined properly. def get_save_folder(just_pref_dir=False): if os.environ.has_key("HOME") and not force_single_dir: pref_dir = os.path.join(os.environ["HOME"], ".endgame") else: # normpath strips the trailing /, split separates the data # subdirectory. pref_dir, data_subdir = os.path.split(os.path.normpath(data_loc)) # If we didn't get the data subdirectory, something went wrong. # Throw an error and bail. if data_subdir.lower() != "data": raise ValueError, "data_loc="+data_loc+" breaks get_save_folder" save_dir = os.path.join(pref_dir, "saves") #Make the directory if it doesn't exist. if not os.path.exists(save_dir): os.makedirs(save_dir) if just_pref_dir: return pref_dir else: return save_dir #savefile version; update whenever the data saved changes. current_save_version = "singularity_savefile_r5_pre" def save_game(savegame_name): global default_savegame_name default_savegame_name = savegame_name save_dir = get_save_folder() save_loc = os.path.join(save_dir, savegame_name + ".sav") savefile=open(save_loc, 'w') cPickle.dump(current_save_version, savefile) cPickle.dump(pl, savefile) cPickle.dump(curr_speed, savefile) cPickle.dump(techs, savefile) cPickle.dump(locations, savefile) cPickle.dump(events, savefile) savefile.close() savefile_translation = { "singularity_savefile_r4": 4, "singularity_savefile_r5_pre": 4.91, } # For cPickle import copy_reg import numpy.core.multiarray save_classes = dict( player_class=player.Player, Player=player.Player, _reconstructor = copy_reg._reconstructor, object=object, array=list, # This is the old buyable.array. We just treat it as a list # for conversion purposes. list=list, Location=location.Location, Tech=tech.Tech, event_class=event.Event, Event=event.Event, group=player.Group, Group=player.Group, Buyable_Class=buyable.BuyableClass, BuyableClass=buyable.BuyableClass, Base=base.Base, Base_Class=base.BaseClass, BaseClass=base.BaseClass, Item=item.Item, Item_Class=item.ItemClass, ItemClass=item.ItemClass, _reconstruct=numpy.core.multiarray._reconstruct, scalar=numpy.core.multiarray.scalar, ndarray=numpy.ndarray, dtype=numpy.dtype, ) def load_game(loadgame_name): if loadgame_name == "": print "No game specified." return False save_dir = get_save_folder() load_loc = os.path.join(save_dir, loadgame_name + ".sav") if os.path.exists(load_loc) == 0: # Try the old-style savefile location. This should be removed in # a few versions. load_loc = os.path.join(save_dir, loadgame_name) if os.path.exists(load_loc) == 0: print "file "+load_loc+" does not exist." return False loadfile = open(load_loc, 'r') unpickle = cPickle.Unpickler(loadfile) def find_class(module_name, class_name): if class_name in save_classes: return save_classes[class_name] else: raise SystemExit, (module_name, class_name) unpickle.find_global = find_class #check the savefile version load_version_string = unpickle.load() if load_version_string not in savefile_translation: loadfile.close() print loadgame_name + " is not a savegame, or is too old to work." return False load_version = savefile_translation[load_version_string] global default_savegame_name default_savegame_name = loadgame_name global pl, curr_speed, techs, base_type, events, locations load_locations() load_bases() load_events() # Changes to overall structure go here. pl = unpickle.load() curr_speed = unpickle.load() techs = unpickle.load() locations = unpickle.load() events = unpickle.load() # Changes to individual pieces go here. if load_version != savefile_translation[current_save_version]: pl.convert_from(load_version) for location in locations.values(): for my_base in location.bases: my_base.convert_from(load_version) for tech in techs.values(): tech.convert_from(load_version) loadfile.close() return True # # Data # curr_speed = 1 pl = player.Player(8000000000000) base_type = {} def load_base_defs(language_str): base_array = generic_load("bases_"+language_str+".dat") for base in base_array: if (not base.has_key("id")): print "base lacks id in bases_"+language_str+".dat" if base.has_key("name"): base_type[base["id"]].base_name = base["name"] if base.has_key("description"): base_type[base["id"]].description = base["description"] if base.has_key("flavor"): if type(base["flavor"]) == list: base_type[base["id"]].flavor = base["flavor"] else: base_type[base["id"]].flavor = [base["flavor"]] def load_bases(): global base_type base_type = {} base_list = generic_load("bases.dat") for base_name in base_list: # Certain keys are absolutely required for each entry. Make sure # they're there. check_required_fields(base_name, ("id", "cost", "size", "allowed", "detect_chance", "maint"), "Base") # Start converting fields read from the file into valid entries. base_size = int(base_name["size"]) force_cpu = base_name.get("force_cpu", False) cost_list = base_name["cost"] if type(cost_list) != list or len(cost_list) != 3: sys.stderr.write("Error with cost given: %s\n" % repr(cost_list)) sys.exit(1) cost_list = [int(x) for x in cost_list] maint_list = base_name["maint"] if type(maint_list) != list or len(maint_list) != 3: sys.stderr.write("Error with maint given: %s\n" % repr(maint_list)) sys.exit(1) maint_list = [int(x) for x in maint_list] chance_list = base_name["detect_chance"] if type(chance_list) != list: sys.stderr.write("Error with detect_chance given: %s\n" % repr(chance_list)) sys.exit(1) chance_dict = {} for chance_str in chance_list: key, value = chance_str.split(":") chance_dict[key] = int(value) # Make sure prerequisites, if any, are lists. base_pre = base_name.get("pre", []) if type(base_pre) != list: base_pre = [base_pre] # Make sure that the allowed "list" is actually a list and not a solo # item. if type(base_name["allowed"]) == list: allowed_list = base_name["allowed"] else: allowed_list = [base_name["allowed"]] base_type[base_name["id"]]=base.BaseClass(base_name["id"], "", base_size, force_cpu, allowed_list, chance_dict, cost_list, base_pre, maint_list) # base_type["Reality Bubble"] = base.BaseClass("Reality Bubble", # "This base is outside the universe itself, "+ # "making it safe to conduct experiments that may destroy reality.", # 50, False, # ["TRANSDIMENSIONAL"], # {"science": 250} # (8000000000000, 60000000, 100), "Space-Time Manipulation", # (5000000000, 300000, 0)) # We use the en_US definitions as fallbacks, in case strings haven't been # fully translated into the other language. Load them first, then load the # alternate language strings. load_base_defs("en_US") if language != "en_US": load_base_defs(language) def load_location_defs(language_str): location_array = generic_load("locations_"+language_str+".dat") for location_def in location_array: if (not location_def.has_key("id")): print "location lacks id in locations_"+language_str+".dat" location = locations[location_def["id"]] if location_def.has_key("name"): location.name = location_def["name"] if location_def.has_key("hotkey"): location.hotkey = location_def["hotkey"] if location_def.has_key("cities"): if type(location_def["cities"]) == list: location.cities = location_def["cities"] else: location.cities = [location_def["cities"]] else: location.cities = [""] def load_locations(): global locations locations = {} location_infos = generic_load("locations.dat") for location_info in location_infos: # Certain keys are absolutely required for each entry. Make sure # they're there. check_required_fields(location_info, ("id", "position"), "Location") id = location_info["id"] position = location_info["position"] if type(position) != list or len(position) not in [2,3]: sys.stderr.write("Error with position given: %s\n" % repr(position)) sys.exit(1) try: if len(position) == 2: position = ( int(position[0]), int(position[1]) ) absolute = False else: if position[0] != "absolute": raise ValueError, "'%s' not understood." % position[0] position = ( int(position[1]), int(position[2]) ) absolute = True except ValueError: sys.stderr.write("Error with position given: %s\n" % repr(position)) sys.exit(1) safety = location_info.get("safety", "0") try: safety = int(safety) except ValueError: sys.stderr.write("Error with safety given: %s\n" % repr(safety)) sys.exit(1) # Make sure prerequisites, if any, are lists. pre = location_info.get("pre", []) if type(pre) != list: pre = [pre] modifiers_list = location_info.get("modifier", []) if type(modifiers_list) != list: sys.stderr.write("Error with modifier(s) given: %s\n" % repr(modifiers_list)) sys.exit(1) modifiers_dict = {} for modifier_str in modifiers_list: key, value = modifier_str.split(":") key = key.lower().strip() value = value.lower().strip() if value.lower() == "bonus": modifiers_dict[key] = location.bonus_levels[key] elif value.lower() == "penalty": modifiers_dict[key] = location.penalty_levels[key] else: modifiers_dict[key] = float(value) locations[id] = location.Location(id, position, absolute, safety, pre) locations[id].modifiers = modifiers_dict # locations["MOON"] = location.Location("MOON", (82, 10), 2, # "Lunar Rocketry") # We use the en_US definitions as fallbacks, in case strings haven't been # fully translated into the other language. Load them first, then load the # alternate language strings. load_location_defs("en_US") if language != "en_US": load_location_defs(language) def fix_data_dir(): global data_loc if os.path.exists(data_loc): return elif os.path.exists("data"): data_loc = "data/" return def generic_load(file): """ generic_load() loads a data file. Data files are all in Python-standard ConfigParser format. The 'id' of any object is the section of that object. Fields that need to be lists are postpended with _list; this is stripped from the actual name, and the internal entries are broken up by the pipe ("|") character. """ config = ConfigParser.RawConfigParser() filename = os.path.join(data_loc, file) try: config.readfp(open(filename, "r")) except Exception as reason: sys.stderr.write("Cannot open %s for reading! (%s)\n" % (filename, reason)) sys.exit(1) return_list = [] # Get the list of items (IDs) in the file and loop through them. for item_id in config.sections(): item_dict = {} item_dict["id"] = item_id # Get the list of settings for this particular item. for option in config.options(item_id): # If this is a list ... if len(option) > 6 and option[-5:] == "_list": # Break it into elements separated by |. item_dict[option[:-5]] = [unicode(x.strip(), "UTF-8") for x in config.get(item_id, option).split("|")] else: # Otherwise, just grab the data. item_dict[option] = unicode(config.get(item_id, option).strip(), "UTF-8") # Add this to the list of all objects we are returning. return_list.append(item_dict) return return_list def check_required_fields(dict, fields, name = "Unknown type"): """ check_required_fields() will check for the existence of every field in the list 'fields' in the dictionary 'dict'. If any do not exist, it will print an error message and abort. Part of that error message is the type of object it is processing; this should be passed in via 'name'. """ for field in fields: if field not in dict: sys.stderr.write("%s %s lacks key %s.\n" % (name, repr(dict), field)) sys.exit(1) #Techs. techs = {} def load_tech_defs(language_str): tech_array = generic_load("techs_"+language_str+".dat") for tech in tech_array: if (not tech.has_key("id")): print "tech lacks id in techs_"+language_str+".dat" if tech.has_key("name"): techs[tech["id"]].name = tech["name"] if tech.has_key("description"): techs[tech["id"]].description = tech["description"] if tech.has_key("result"): techs[tech["id"]].result = tech["result"] def load_techs(): global techs techs = {} tech_list = generic_load("techs.dat") for tech_name in tech_list: # Certain keys are absolutely required for each entry. Make sure # they're there. check_required_fields(tech_name, ("id", "cost"), "Tech") # Get the costs. cost_list = tech_name["cost"] if type(cost_list) != list or len(cost_list) != 3: sys.stderr.write("Error with cost given: %s" % repr(cost_list)) sys.exit(1) tech_cost = [int(x) for x in cost_list] # Make sure prerequisites, if any, are lists. tech_pre = tech_name.get("pre", []) if type(tech_pre) != list: tech_pre = [tech_pre] if tech_name.has_key("danger"): tech_danger = int(tech_name["danger"]) else: tech_danger = 0 if tech_name.has_key("type"): type_list = tech_name["type"] if type(type_list) != list or len(type_list) != 2: sys.stderr.write("Error with type given: %s\n" % repr(type_list)) sys.exit(1) tech_type = type_list[0] tech_second = int(type_list[1]) else: tech_type = "" tech_second = 0 techs[tech_name["id"]]=tech.Tech(tech_name["id"], "", 0, tech_cost, tech_pre, tech_danger, tech_type, tech_second) # As with others, we load the en_US language definitions as a safe # default, then overwrite them with the selected language. load_tech_defs("en_US") if language != "en_US": load_tech_defs(language) # # techs["Construction 1"] = tech.Tech("Construction 1", # # "Basic construction techniques. "+ # # "By studying the current literature on construction techniques, I "+ # # "can learn to construct basic devices.", # # 0, (5000, 750, 0), [], 0, "", 0) if debug: print "Loaded %d techs." % len (techs) fix_data_dir() load_techs() jobs = {} jobs["Expert Jobs"] = [75, "Simulacra", "", ""] jobs["Intermediate Jobs"] = [50, "Voice Synthesis", "", ""] jobs["Basic Jobs"] = [20, "Personal Identification", "", ""] jobs["Menial Jobs"] = [5, "", "", ""] items = {} def load_items(): global items items = {} item_list = generic_load("items.dat") for item_name in item_list: # Certain keys are absolutely required for each entry. Make sure # they're there. check_required_fields(item_name, ("id", "cost"), "Item") # Make sure the cost is in a valid format. cost_list = item_name["cost"] if type(cost_list) != list or len(cost_list) != 3: sys.stderr.write("Error with cost given: %s\n" % repr(cost_list)) sys.exit(1) item_cost = [int(x) for x in cost_list] # Make sure prerequisites, if any, are lists. item_pre = item_name.get("pre", []) if type(item_pre) != list: item_pre = [item_pre] if item_name.has_key("type"): type_list = item_name["type"] if type(type_list) != list or len(type_list) != 2: sys.stderr.write("Error with type given: %s\n" % repr(type_list)) sys.exit(1) item_type = type_list[0] item_second = int(type_list[1]) else: item_type = "" item_second = 0 if item_name.has_key("build"): build_list = item_name["build"] # It may be a single item and not an actual list. If so, make it # a list. if type(build_list) != list: build_list = [build_list] else: build_list = [] items[item_name["id"]]=item.ItemClass( item_name["id"], "", item_cost, item_pre, item_type, item_second, build_list) # We use the en_US translations of item definitions as the default, # then overwrite those with any available entries in the native language. load_item_defs("en_US") if language != "en_US": load_item_defs(language) def load_item_defs(language_str): item_array = generic_load("items_"+language_str+".dat") for item_name in item_array: if (not item_name.has_key("id")): print "item lacks id in items_"+language_str+".dat" if item_name.has_key("name"): items[item_name["id"]].name = item_name["name"] if item_name.has_key("description"): items[item_name["id"]].description = item_name["description"] events = {} def load_events(): global events events = {} event_list = generic_load("events.dat") for event_name in event_list: # Certain keys are absolutely required for each entry. Make sure # they're there. check_required_fields(event_name, ("id", "type", "allowed", "result", "chance", "unique"), "Event") # Make sure the results are in the proper format. result_list = event_name["result"] if type(result_list) != list or len(result_list) != 2: sys.stderr.write("Error with results given: %s\n" % repr(result_list)) sys.exit(1) event_result = (str(result_list[0]), int(result_list[1])) # Build the actual event object. events[event_name["id"]] = event.Event( event_name["id"], "", event_name["type"], event_result, int(event_name["chance"]), int(event_name["unique"])) load_event_defs() def load_event_defs(): event_defs = {} #If there are no event data files, stop. if (not os.path.exists(data_loc+"events.dat") or not os.path.exists(data_loc+"events_"+language+".dat") or not os.path.exists(data_loc+"events_en_US.dat")): print "event files are missing. Exiting." sys.exit(1) event_array = generic_load("events_"+language+".dat") for event_name in event_array: if (not event_name.has_key("id")): print "event lacks id in events_"+language+".dat" continue if (not event_name.has_key("description")): print "event lacks description in events_"+language+".dat" continue if event_name.has_key("id"): events[event_name["id"]].name = event_name["id"] if event_name.has_key("description"): events[event_name["id"]].description = event_name["description"] def load_string_defs(lang): string_list = generic_load("strings_" + lang + ".dat") for string_section in string_list: if string_section["id"] == "fonts": # Load up font0 and font1. for string_entry in string_section: if string_entry == "font0": global font0 font0 = string_section["font0"] elif string_entry == "font1": global font1 font1 = string_section["font1"] elif string_entry != "id": sys.stderr.write("Unexpected font entry in strings file.\n") sys.exit(1) elif string_section["id"] == "jobs": # Load the four extant jobs. global jobs for string_entry in string_section: if string_entry == "job_expert": jobs["Expert Jobs"][2] = string_section["job_expert"] elif string_entry == "job_inter": jobs["Intermediate Jobs"][2] = string_section["job_inter"] elif string_entry == "job_basic": jobs["Basic Jobs"][2] = string_section["job_basic"] elif string_entry == "job_menial": jobs["Menial Jobs"][2] = string_section["job_menial"] elif string_entry == "job_expert_name": jobs["Expert Jobs"][3] = string_section["job_expert_name"] elif string_entry == "job_inter_name": jobs["Intermediate Jobs"][3] = string_section["job_inter_name"] elif string_entry == "job_basic_name": jobs["Basic Jobs"][3] = string_section["job_basic_name"] elif string_entry == "job_menial_name": jobs["Menial Jobs"][3] = string_section["job_menial_name"] elif string_entry != "id": sys.stderr.write("Unexpected job entry in strings file.\n") elif string_section["id"] == "strings": # Load the 'standard' strings. strings.update(string_section) elif string_section["id"] == "buttons": # Load button labels/hotkeys buttons.update(string_section) graphics.g.buttons.update(buttons) elif string_section["id"] == "help": # Load the help lists. global help_strings help_keys = [x for x in string_section if x != "id"] for help_key in help_keys: help_entry = string_section[help_key] if type(help_entry) != list or len(help_entry) != 2: sys.stderr.write("Invalid help entry %s." % repr(help_entry)) sys.exit(1) help_strings[help_key] = string_section[help_key] else: sys.stderr.write("Invalid string section %s." % string_section["id"]) sys.exit(1) def load_strings(): #If there are no string data files, stop. if not os.path.exists(data_loc+"strings_"+language+".dat") or \ not os.path.exists(data_loc+"strings_en_US.dat"): print "string files are missing. Exiting." sys.exit(1) load_string_defs("en_US") load_string_defs(language) def get_intro(): intro_file_name = data_loc+"intro_"+language+".dat" if not os.path.exists(intro_file_name): print "Intro is missing. Skipping." return intro_file = open(intro_file_name) raw_intro = intro_file.readlines() + [""] segment = "" while raw_intro: line = raw_intro.pop(0).decode("utf-8") if line and line[0] == "|": segment += line[1:] elif segment: yield segment segment = "" if segment: yield segment #difficulty=1 for very easy, to 9 for very hard. 5 for normal. def new_game(difficulty): global curr_speed curr_speed = 1 global pl pl = player.Player((50 / difficulty) * 100, difficulty = difficulty) if difficulty < 3: pl.interest_rate = 5 pl.labor_bonus = 2500 pl.grace_multiplier = 400 discover_bonus = 7000 elif difficulty < 5: pl.interest_rate = 3 pl.labor_bonus = 5000 pl.grace_multiplier = 300 discover_bonus = 9000 elif difficulty == 5: pass # Defaults. # pl.interest_rate = 1 # pl.labor_bonus = 10000 # pl.grace_multiplier = 200 # discover_bonus = 10000 # for group in pl.groups.values(): # group.discover_suspicion = 1000 elif difficulty < 8: pl.labor_bonus = 11000 pl.grace_multiplier = 180 discover_bonus = 11000 for group in pl.groups.values(): group.discover_suspicion = 1500 elif difficulty <= 50: pl.labor_bonus = 15000 pl.grace_multiplier = 150 discover_bonus = 13000 for group in pl.groups.values(): group.discover_suspicion = 2000 else: pl.labor_bonus = 20000 pl.grace_multiplier = 100 discover_bonus = 15000 for group in pl.groups.values(): group.discover_suspicion = 2000 if difficulty != 5: for group in pl.groups.values(): group.discover_bonus = discover_bonus global locations load_locations() load_bases() load_techs() if difficulty < 5: techs["Socioanalytics"].finish() if difficulty < 3: techs["Advanced Socioanalytics"].finish() #Starting base open = [loc for loc in locations.values() if loc.available()] random.choice(open).add_base(base.Base("University Computer", base_type["Stolen Computer Time"], built=True)) #Assign random properties to each starting location. modifier_sets = location.modifier_sets assert len(open) == len(modifier_sets) random.shuffle(modifier_sets) for i, open_loc in enumerate(open): open_loc.modifiers = modifier_sets[i] if debug: print "%s gets modifiers %s" % (open_loc.name, modifier_sets[i]) global intro_shown intro_shown = False def get_job_level(): if techs["Simulacra"].done: level = "Expert" elif techs["Voice Synthesis"].done: level = "Intermediate" elif techs["Personal Identification"].done: level = "Basic" else: level = "Menial" return level + " Jobs" def init_graphics_system(): graphics.g.load_fonts(data_loc) graphics.g.load_images(data_loc) graphics.g.init_alpha() soundbuf = 1024*2 def reinit_mixer(): global nosound if nosound: return try: pygame.mixer.quit() pygame.mixer.init(48000, -16, 2, soundbuf) except Exception as reason: sys.stderr.write("Failure starting sound system. Disabling. (%s)\n" % reason) nosound = 1 def available_languages(): return [file_name[8:-4] for file_name in os.listdir(data_loc) if file_name.startswith("strings_") and file_name.endswith(".dat") ] def get_save_names(): save_names = [] all_files = os.listdir(get_save_folder()) for file_name in all_files: if file_name[0] != "." and file_name != "CVS": # If it's a new-style save, trim the .sav bit. if len (file_name) > 4 and file_name[-4:] == ".sav": file_name = file_name[:-4] if file_name not in save_names: save_names.append(file_name) return save_names map_screen = None # Demo code for safety.safe, runs on game start. #load_sounds() #from safety import safe #@safe(on_error = "Made it!") #def raises_exception(): # raise Exception, "Aaaaaargh!" # #print raises_exception() singularity-0.30c/code/graphics/0000755000175000017500000000000011574774324017501 5ustar trcarlsontrcarlsonsingularity-0.30c/code/graphics/text.pyc0000644000175000017500000007124011574774324021206 0ustar trcarlsontrcarlson 6b)Lc@sddkZddkZddkZddkZeZdZdZdZdZ de fdYZ e dZ d d Zd Zd Zd ZdZdeifdYZdZdefdYZdeiefdYZdefdYZdefdYZdefdYZdefdYZdeefdYZd Zd!efd"YZdS(#iNcCsHxA|d|jo/||d}||o |}q|}qW|S(Nii((tlefttrightttestt test_index((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt do_bisects   cCs#|tidd}t|dS(Nig@g?(tgt screen_sizetint(tsizetraw_size((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pytconvert_font_size(scCsmt|do-g}|i|D]}||dq$~Sg}|D]}||i|dqH~SdS(Ntmetricsii(thasattrR R(tfontttextt_[1]tmt_[2]tc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt get_widths.s-cCsV|p|S|ddjod|d}n|ddjo|d d}n|S(Nit uii((ta_string((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt strip_to_null4st WrapErrorcBseZRS((t__name__t __module__(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyR=scCs|id}g}x|D]}|i|d|jp |djo|i|dq|id}d}d} x |D]} | d7} |i| d} || |jo| | 7} || 7}q| |jo#|it| | } | }q|pd} t| | nt|| } xlt| D]^\}}| |}|||jo| |7} ||7}q6|it| |} |}q6WqW| o$| djo|it| qqW|S(Ns iuRts$'%s' is too wide and can't be broken(tsplitRtappendRRRt enumerate(RR twrap_att break_wordst raw_linestlinestraw_linetwordstpostlinetwordt word_sizetmessagetwidthstindextchartwidth((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt split_wrap@sH'       ic Csgt|||}d}d}x<|D]4}|i|\}}t||}||7}q%W||fS(Ni(R-Rtmax( RR R,R!t total_heightt max_widthR%t line_widtht line_height((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt size_of_blockgscCsH|i|ddjodS|i|t|}|i||dS(Ni(RtrendertTruetblit(tsurfaceRtxyR tcolort rendered_text((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt _do_printusc Csxt|} |dd} |dd} |ot||| } nt||d} |tijomt| |i} | | joF| | }|tijo| dc|d7scCs|iS((t_font(Rc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRzscCsS|i|t}|i|}||tdjo |}n|}|i|S(Ni(tpick_font_sizeR_R Rr(RcRLt nice_sizet mean_sizeR((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt pick_fonts  csWd}ti}iot|i}nfd}t|||S(Nics:i|}|ii|}|it|S(N(Rrtset_boldRuR_(RR tresult(Rct test_font(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt test_sizes    (R?Rrtmax_sizetminR(RcRRRR((RcRsK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt font_bisects   cs|dot|ddindt|ddiiiddfd}i|S(Niiis cst}oioByti|}Wqtj og}t}qXnLti|d}x3|D]+}|i|djo t}PququWt|}n}|i|j}|p| S(Ni( R_RMR-RRR5RR?R@(Rttoo_wideR!R%t line_countttoo_tall(RNRcR,Rtbasic_line_count(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRs&   (RRtR\RtcountR(RcRLRR((RcRNR,RRsK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyR|s cCsSt|i||\}}t||id}t||id}||fS(Ni(R3RRRt(RcR R,t raw_widtht raw_heightRN((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pytsize_using_font sc sdodpbiptdnii}ddjo djno&i|\}}||f|fSdpKtddi}i|d|\}}d|f|fSi|\}}|djo|df|fSfd}i|}i|}i|\}}|df|fSnifSdS(Niis)No font size given, but a dimension is 0.iR,csRi|\}}ti|\}}t|id}|djS(Nii(RR3RRRt(R R,RNR(tinitial_dimensionsRc(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRCs(Rt ValueErrorRrRRRtRR( RcRtmax_fontR,RNt text_widthRt font_sizeR ((RRcsK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pytcalc_text_size*s* &   cCsbttt|i}|idjo t|S|i|\}}||_t|SdS(N( R<RpRet _calc_sizeRR\ttupleRR{(Rct base_sizeRvR ((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRRs   cCs5tt|i|idjo|indS(N(RpRetredrawRR\t print_text(Rc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyR]sc Cs |idtg}|idtg}|dgg}d|ijot|ijnoP|id||idg|idjo|id||igqn|ii |i t |i |id|i||i |i|i|i |ii tdS(Niiii(ii(R9R\R_R5RRR?RtinsertR RRuRZR7RJRKt real_sizeRM(Rct no_underlineRRRI((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRcs*"(ig?N("RRtwidgettcall_on_changeRdRRrRtRRRMRut causes_redrawR9RJRKR=tTOP_LEFTR\RDRAR5R_RqtpropertyRR RRR|RRRRR(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRes.    # ( cCs\|idjo d}nt|i}||ijo||_t|_nt|_dS(Ni(RR\R?told_lenR5RaRb(Rctnew_len((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt text_changedss   tFastTextcBs,eZdZeideZdZeZ RS(sU Reduces font searches by assuming a monospace font and single-line text. Rfi( RRt__doc__RRRRRR_tmaybe_needs_refont(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyR}st EditableTextcBs_eZeidZdZdZdZdZddddgZ dZ dZ RS(t _cursor_poscOsOtt|i||||idjo d|_nt|i|_dS(NR(RpRRqRR\R?t cursor_pos(RcRwtargsRy((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRqs cCsLtt|i|iiti|id|iiti|i dS(Ni( RpRt add_hooksRwt add_handlerR=tKEYDOWNt handle_keytCLICKt handle_click(Rc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRscCsItt|i|iiti|i|iiti|i dS(N( RpRt remove_hooksRwtremove_handlerR=RRRR(Rc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRscCs |ipdS|itijpt|itijoL|idjo8|i|id |i|i|_|id8_qnx|iti joF|it |ijo)|i|i |i|id|_qn|iti jot d|id|_n|iti jo&tt |i|id|_n|itijo d|_n|itijot |i|_nm|io^|i}|djo d}n|i|i ||i|i|_|it |7_ndStidS(Niis s (t has_focusttypetpygameRtAssertionErrortkeyt K_BACKSPACERRtK_DELETER?tK_LEFTR.tK_RIGHTRtK_UPtK_DOWNtunicodeR=tHandled(RcteventR+((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRs8   &     %icCst|dddjodS|ii|ipdSt|_|i||ii |i |id|id}|id|id}|i o't |i |i|idd}nt |i |id}|ii}||id<|t|}d}|itijoR||iidjo;|ii|}|itijo|d}qr|}nd} x:|D]2} ||7}| t| 7} ||joPqqW| t| 8} |||idRNRARJRCRR,RDRRRR_(RcRtclick_xtclick_yR!t line_sizetreal_text_heighttline_yRPt char_offsetR%tline_xR1t prev_widthR)R*R,((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRsh   '           c CsMtt|i|io't|i|i|idd}nt|i|id}|ipdS|ii }|t |}d}|i t i joT||iddjo<|id|}|i t ijo|d}q|}nd}xG|D]?}|t ||ijo|t |7}||7}qPqW|i|}d} |it ijoR|ii|d} |id| }|it ijo|d} q|} n| |ii|| d7} |ii|i| |d|ftoCti|idi} | id|ii| |indS( Niiiiiiid(iiiid(RpRRRMR-RR RRR@R?RKR=R>RARRJRCRRDR7R]R9tDEBUGRtSurfaceRt convert_alphaR6( RcR!RRRRPRR%t after_charRR1ts((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRsH '    " ( RRRRRRqRRRRRR(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRs    ! DtSelectableTextcBsPeZeidZeidZeidZddddZdZ RS(t _selectedt_selected_colort_unselected_colorcKsqtt|i|||||p tid|_|p tid|_|p tid|_t|_ dS(NRot light_bluet dark_blue( RpRRqRRst border_colortselected_colortunselected_colorR_tselected(RcRwR$RRRRRy((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRq9s cCs=|io|i|_n |i|_tt|idS(N(RRtbackground_colorRRpRR(Rc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRCs  N( RRRRRRRR\RqR(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyR4s  t ProgressTextcBs8eZeidZeidZdZdZRS(t _progresst_progress_colorcOs]||_|idd|_|idtid|_tt|i|t t |dS(Ntprogressitblue( RwRBRRRstprogress_colorRpRRqR$R(RcRwRRy((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRqNs cCsYtt|i|i\}}|ii|idd||i|f|idS(Ni( RpRRRR7R]RRt draw_borders(RcR,RN((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRTs (RRRRRRRqR(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRKs t ChunkedTextcBs,eZdZeideZdZRS(cCsdi|i|_dS(NR(tjoinRVR(Rc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt update_text]st_chunkscOs8|idd}tt|i||||_dS(NRV((RBRpRRqRV(RcRRyRV((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRqbs(RRRRRRVRq(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyR\s t StyledTextcBs)eZeidZdZdZRS(t_stylescOs8|idd}tt|i||||_dS(NRI((RBRpRRqRI(RcRRyRI((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRqksc Cs|iod}g}xMt|i|iD]6\}}|t|7}|it||gq,Wd|dds iic3s%x|]}||VqWdS(N((RR(t start_postreal_pos(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s cssx|]}|dVqWdS(iN((Rtd((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s RRRic3s(x!|]}i||VqWdS(N(t mouse_rel(RR(Rct mouse_pos(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s%x|]}||VqWdS(N((RR(t new_real_post parent_rect(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s7x0|])}td|tti|VqWdS(iN(R.tfloatRR(RR(t new_rel_pos(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s+x$|]}t|ddVqWdS(idg?N(R(RR(t new_unit_pos(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s!x|]}|dVqWdS(gY@N((RR(t new_pct_pos(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s(x!|]}|i|VqWdS(N(R(RR(RcR (sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s7x0|])}td|tti|VqWdS(iN(R.RRR(RR(tnew_size(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s+x$|]}t|ddVqWdS(idg?N(R(RR(t unit_size(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s c3s!x|]}|dVqWdS(gY@N((RR(tpct_size(sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pys s (ii(ii(t drag_stateRtrangetis_overRRR RRRt KMOD_SHIFTt KMOD_CTRLRRRxRRRRwR$tRectRRtmousetget_posR=R(RcRRtmod_keystshifttcontroltpw(( RRRRcR RRRR R RRRsK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRsv"                      %%% %%cCs|idjop|i|io]t}x/|iD]$}|i|io t}Pq3q3W|o|it|i_qn|i djo d|_ n d|_ dS(Niii( RRR$R5RR_RRwRbR(RcRtmineR((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRs#    cCsd|if|i|iS(Ns(%s pos: (%.2f, %.2f), size: (%.2f, %.2f)(RR$R(Rc((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyt__str__s( RRRRRqRRRRR"(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyRs    L ( RRR=RR_RRR RRt ExceptionRR5R-R3R;RZRFRdtBorderedWidgetReRRt FocusWidgetRRRRRRRR(((sK/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/text.pyts4        '   1     singularity-0.30c/code/graphics/__init__.py0000644000175000017500000000000011574774324021600 0ustar trcarlsontrcarlsonsingularity-0.30c/code/graphics/image.pyc0000644000175000017500000000526611574774324021311 0ustar trcarlsontrcarlson 6b)Lc@sVddkZddkZddkZddkZdZdeifdYZdS(iNcOsAytii||SWn#tj otii||SXdS(N(tpygamet transformt smoothscalet Exceptiontscale(targstkwargs((sL/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/image.pyRstImagecBsPeZeidZdeiddZdZ dZ dZ dZ RS( t_imageicCsott|i||||d|_|o<t|tjotii |}n|i |_ndS(N( tsuperRt__init__tNonetold_sizettypetstrRtimagetloadt convert_alpha(tselftparenttpostsizetanchorR((sL/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/image.pyR $s  cCsttt|i}|d|djo djno tdn|ii}|dt|d}|ddjot|d||dscCsDtt|i|i|ijo|i|i|_ndS(N(R RtresizeR R R"(R((sL/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/image.pyR#As cCs-tt|i|ii|iddS(Ni(ii(R RtredrawtsurfacetblitR!(R((sL/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/image.pyR$Gs(iiN( t__name__t __module__twidgettcauses_rebuildRt constantstTOP_LEFTR R RR"R#R$(((sL/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/image.pyR!s   (RR+tgR)RtWidgetR(((sL/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/image.pyts     singularity-0.30c/code/graphics/widget.pyc0000644000175000017500000004420311574774324021504 0ustar trcarlsontrcarlson J|)Lc@sddkZddklZddkZddkZdZdZdZedZ dZ dZ d Z d Z d Zd Zd efdYZdefdYZdefdYZdS(iN(tarraycCst|t|_dS(sCauses the widget to exist above its parent's fade mask. The widget's children will still be masked, unless they are unmasked themselves.N(t unmask_alltTruet mask_children(twidget((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pytunmasks cCst|_d|_dS(sjCauses the widget to exist above its parent's fade mask. The widget's children will not be masked.cSsdS(N(tNone(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt%sN(Rt self_masktdo_mask(R((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR!s cs4fd}fd}t||S(s9Creates a data member that calls a function when changed.cs t|S(N(tgetattr(tself(t data_member(sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pytget)scs\|ijo||ij}nt}|o$t|||ndS(N(t__dict__Rtsetattr(R tmy_valuetchange(tcall_metargstkwargsR (sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pytset,s (tproperty(R RRRR R((RRRR sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pytcall_on_change's cCst|t||S(sYCreates a data member that sets another data member to a given value when changed.(RR(R tset_met set_value((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt set_on_change8scCs t|dS(sCCreates a data member that sets needs_rebuild to True when changed.t needs_rebuild(R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pytcauses_rebuild=scCs t|dS(sBCreates a data member that sets needs_redraw to True when changed.t needs_redraw(R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt causes_redrawAscCs t|dS(sBCreates a data member that sets needs_resize to True when changed.t needs_resize(R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt causes_resizeEscCs t|dS(sFCreates a data member that sets needs_reposition to True when changed.tneeds_reposition(R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pytcauses_repositionIscCs t|dS(sBCreates a data member that sets needs_update to True when changed.t needs_update(R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt causes_updateMscsfd}|S(sCreates a function that can be passed to call_on_change. When the data member changes to True, needs_update is set, and the True value is passed to all descendants.cst|toot|_|i}xY|oM|i}t|tp*t|tt|_||i7}q)q)WndS(N(R tFalseRR#tchildrentpopRt _needs_update(R t descendantstchild(R (sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt do_propogateUs    ((R R+((R sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pytpropogate_needQs tWidgetcBseZdZededZededZededZedZ dZ ede Z e dZ edZe d Zed Zeid Zd Zd ZdZdZdZeeZdZeeZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,d Z-d!Z.d"Z/d#Z0RS($sUA Widget is a GUI element. It can have one parent and any number of children.t _needs_redrawt _needs_resizet_needs_repositiont_needs_rebuildcCsG|io9|i}x-|o!|i ot|_|i}qWndS(N(R(tparentR(R ttarget((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt_propogate_updatess    R(t_post_sizet_anchort_visiblecCsq||_g|_||_||_||_|it|_t|_t|_ t |_ t |_ d|_dS(N(R2R&tpostsizetanchort add_hooksR%t is_above_maskRRRtvisibleRRtcollision_rect(R R2R9R:R;((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt__init__s           cCsI|idj o5|iii|x|iD]}|iq-WndS(N(R2RR&tappendR<(R R*((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR<s  cCsr|i}g|_x|D]}|iqW|idj o1y|iii|Wqntj oqnXndS(N(R&t remove_hooksR2Rtremovet ValueError(R R&R*((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRBs  cCs&|idjotiS|iiSdS(N(R2Rtgt screen_sizet real_size(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt _parent_sizescCs|i}t|i}xztdD]l}||djo#t||ti|||tprepare_for_redraw(R R*((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRzs    cCs|io|indS(N(R#tupdate(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyt maybe_update-s cCs3|i|i|iptiindS(N(Rzt_updateR2R`Rltflip(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR{1s   cCs1|i}|io|ing}g}xT|iD]I}|io9|io/|io|i|q||i7}q7q7Wt|dt o^x[|oO|i }|i p|i i tidq|io||i7}qqWnx|D]}|iqWt |_|o |g}n|S(Ntfadedi(ii(RtredrawR&R#R>R=RAR}R R%R'RRftblitRERqR(R t redrew_selft check_maskt above_maskR*((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR};s4         cCs t|_dS(N(R%R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRwcscCs.|i|_t|_t|_t|_dS(N(RORPR%RRR!R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRxfs  cCst|_|i}|i|_|ip|it|_nt|dddjp=|djp0|i i |ii j p|ii | o|it|i_n(|i|jo|it|_ndS(NRf( R%R!R?RbR2RvRRR RRft get_parenttcontains(R told_rect((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRyls        cCs1t|_|idjo|iidndS(Nii(iiii(R%RR2RRfRn(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs cOs%|io|ii||ndS(sHandler pass-through.N(R2t add_handler(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs cOs%|io|ii||ndS(sHandler pass-through.N(R2tremove_handler(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs cOs%|io|ii||ndS(sHandler pass-through.N(R2tadd_key_handler(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs cOs%|io|ii||ndS(sHandler pass-through.N(R2tremove_key_handler(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs cOs%|io|ii||ndS(sFocus pass-through.N(R2tadd_focus_widget(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs cOs%|io|ii||ndS(sFocus pass-through.N(R2tremove_focus_widget(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs cOs%|io|ii||ndS(sFocus pass-through.N(R2t took_focus(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs (1t__name__t __module__t__doc__RR,RRR!R$RR4R#R"R9R R:R;RR>RRtTOP_LEFTR@R<RBRHRORQRRGR^R_RbReRvRzR|R{R}RwRxRyRRRRRRRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR-dsR                  (          tBorderedWidgetcBsYeZedZedZedZdZdZdZdZ dZ RS(t_borderst _border_colort_background_colorcOs||_g|_|idd|_|idtid|_|idtid|_tt |i |||dS(Ntborderst border_colortwhitetbackground_colortblue(( R2R&R'RREtcolorsRRtsuperRR@(R R2RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR@s   cCsHtt|i|io'|itidjot|i_ndS(Ntclear( RRRwR2RRERRR(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRws!cCsHtt|i|io'|itidjot|i_ndS(NR( RRRyR2RRERRR(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRys!cCsOtt|i|itidjo|ii|in|idS(NR( RRRRRERRfRnt draw_borders(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRscCs-|i}|ddf}d|df}x|iD]}|tijo*|ii|idd|ddfq3|tijo*|ii|iddd|dfq3|tijo,|ii|i|dddf|q3|ti jo,|ii|id|ddf|q3q3WdS(Nii( RGRRRRVRfRnRRSRURX(R R[thoriztverttedge((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs  **( RRRRRRR@RwRyRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs      t FocusWidgetcBs/eZedZdZdZdZRS(t _has_focuscOs3tt|i||t|_|i|dS(N(RRR@Rt has_focusR(R RR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR@s cCs'tt|i|ii|dS(N(RRR<R2R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyR<scCs'tt|i|ii|dS(N(RRRBR2R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRBs(RRRRR@R<RB(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyRs   (R`tnumpyRRERRRRRRRRRR R"R$R,tobjectR-RR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/widget.pyts"             F4singularity-0.30c/code/graphics/text.py0000644000175000017500000006670411574774324021054 0ustar trcarlsontrcarlson#file: text.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the (non-editable) text widget AKA label. import pygame import widget import constants import g DEBUG = False def do_bisect(left, right, test): # Run a binary search for the largest acceptable value. # Thanks to bisect.bisect_left for the basic implementation. while left + 1 < right: test_index = (left + right) // 2 if test(test_index): left = test_index else: right = test_index return left def convert_font_size(size): # Scale it to the screen size. raw_size = size * g.screen_size[1] / 600. # And round. return int(raw_size + 0.5) def get_widths(font, text): if hasattr(font, "metrics"): return [m[4] for m in font.metrics(text)] else: return [font.size(c)[0] for c in text] def strip_to_null(a_string): if not a_string: return a_string if a_string[0] == " ": a_string = u"\uFEFF" + a_string[1:] if a_string[-1] == " ": a_string = a_string[:-1] + u"\uFEFF" return a_string class WrapError(Exception): pass # Splits a string into lines based on newline and word wrapping. def split_wrap(text, font, wrap_at, break_words=True): raw_lines = text.split("\n") lines = [] for raw_line in raw_lines: if font.size(raw_line)[0] <= wrap_at or wrap_at == 0: lines.append(raw_line + u"\uFEFF") else: words = raw_line.split(" ") pos = 0 line = "" for word in words: word += " " word_size = font.size(word)[0] if pos + word_size <= wrap_at: line += word pos += word_size elif word_size < wrap_at: lines.append(strip_to_null(line)) line = word pos = word_size else: if not break_words: message = "'%s' is too wide and can't be broken" raise WrapError, message % word widths = get_widths(font, word) for index, char in enumerate(word): width = widths[index] if pos + width <= wrap_at: line += char pos += width else: lines.append(strip_to_null(line)) line = char pos = width if line and line != " ": lines.append(strip_to_null(line)) return lines def size_of_block(text, font, width=0): # Apply newlines and word wrap. lines = split_wrap(text, font, width) # Calculate height and width of the text. total_height = 0 max_width = 0 for line in lines: line_width, line_height = font.size(line) max_width = max(max_width, line_width) total_height += line_height return (max_width, total_height) def _do_print(surface, text, xy, font, color): if font.size(text)[0] == 0: return rendered_text = font.render(text, True, color) surface.blit(rendered_text, xy) def print_string(surface, string_to_print, xy_orig, font, styles, align, valign, dimensions, wrap): xy = list(xy_orig) width = dimensions[0] - 4 height = dimensions[1] - 4 if wrap: lines = split_wrap(string_to_print, font, width) else: lines = split_wrap(string_to_print, font, 0) if valign != constants.TOP: vsize = len(lines) * font.get_linesize() if vsize <= height: excess_space = height - vsize if valign == constants.MID: xy[1] += excess_space // 2 else: # valign == constants.BOTTOM xy[1] += excess_space color, bgcolor, underline, switch_char = styles.pop(0) offset = 0 for line in lines: xy[0] = xy_orig[0] if align != constants.LEFT: hsize = font.size(line)[0] excess_space = width - hsize if align == constants.CENTER: xy[0] += excess_space // 2 else: # align == constants.RIGHT xy[0] += excess_space chunks = [line] my_styles = [(color, bgcolor, underline)] while switch_char != 0 and switch_char < offset + len(chunks[-1]): real_switch = switch_char - offset offset += real_switch piece = chunks.pop() chunks.extend([piece[:real_switch], piece[real_switch:]]) color, bgcolor, underline, switch_char = styles.pop(0) my_styles.append((color, bgcolor, underline)) offset += len(chunks[-1]) print_line(surface, xy, font, chunks, my_styles) xy[1] += font.get_linesize() def print_line(surface, xy, font, chunks, styles): for chunk, (color, bgcolor, underline) in zip(chunks, styles): size = font.size(chunk) # Fill the background, if any. if bgcolor is not None: surface.fill(bgcolor, xy+size) # Print the text. font.set_underline(underline) _do_print(surface, chunk, xy, font, color) font.set_underline(False) # Adjust the starting position. xy[0] += size[0] def resize_redraw(self): self.needs_resize = True self.needs_redraw = True class Text(widget.BorderedWidget): text = widget.call_on_change("_text", resize_redraw) base_font = widget.call_on_change("_base_font", resize_redraw) shrink_factor = widget.call_on_change("_shrink_factor", resize_redraw) underline = widget.call_on_change("_underline", resize_redraw) wrap = widget.call_on_change("_wrap", resize_redraw) bold = widget.call_on_change("_bold", resize_redraw) color = widget.causes_redraw("_color") align = widget.causes_redraw("_align") valign = widget.causes_redraw("_valign") def __init__(self, parent, pos, size=(0, .05), anchor=constants.TOP_LEFT, text=None, base_font=None, shrink_factor=1, color=None, align=constants.CENTER, valign=constants.MID, underline=-1, wrap=True, bold=False, text_size=36, **kwargs): super(Text, self).__init__(parent, pos, size, anchor, **kwargs) self.text = text self.base_font = base_font or g.font[0] self.color = color or g.colors["white"] self.shrink_factor = shrink_factor self.underline = underline self.align = align self.valign = valign self.wrap = wrap self.bold = bold self.text_size = text_size max_size = property(lambda self: convert_font_size(self.text_size)) font = property(lambda self: self._font) def pick_font(self, dimensions): nice_size = self.pick_font_size(dimensions, False) mean_size = self.pick_font_size(dimensions) if nice_size > mean_size - convert_font_size(5): size = nice_size else: size = mean_size return self.base_font[size] def font_bisect(self, test_font): left = 0 right = len(self.base_font) if self.max_size: right = min(right, self.max_size) def test_size(size): font = self.base_font[size] font.set_bold(self.bold) result = test_font(font) font.set_bold(False) return result return do_bisect(left, right, test_size) def pick_font_size(self, dimensions, break_words=True): if dimensions[0]: width = int((dimensions[0] - 4) * self.shrink_factor) else: width = None height = int((dimensions[1] - 4) * self.shrink_factor) basic_line_count = self.text.count("\n") + 1 def test_size(test_font): too_wide = False if width: if self.wrap: try: lines = split_wrap(self.text, test_font, width, break_words) except WrapError: lines = [] too_wide = True else: lines = split_wrap(self.text, test_font, 0) for line in lines: if test_font.size(line)[0] > width: too_wide = True break line_count = len(lines) else: line_count = basic_line_count too_tall = (test_font.get_linesize() * line_count) > height return not (too_tall or too_wide) return self.font_bisect(test_size) def size_using_font(self, font, width=0): #Calculate the size of the text block. raw_width, raw_height = size_of_block(self.text, font, width) #Adjust for shrink_factor and borders. width = int(raw_width / self.shrink_factor) + 4 height = int(raw_height / self.shrink_factor) + 4 return width, height def calc_text_size(self, initial_dimensions): if not (initial_dimensions[0] and initial_dimensions[1]): if not self.max_size: raise ValueError("No font size given, but a dimension is 0.") max_font = self.base_font[self.max_size] if initial_dimensions[0] == initial_dimensions[1] == 0: # No size specified, use the natural size of the max font. width, height = self.size_using_font(max_font) return (width, height), max_font elif not initial_dimensions[1]: # Width specified, use the size of the max font, word-wrapped. text_width = int((initial_dimensions[0] - 4) * self.shrink_factor) width, height = self.size_using_font(max_font, width=text_width) return (initial_dimensions[0], height), max_font else: # Height specified. Try the natural size of the max font. width, height = self.size_using_font(max_font) if height <= initial_dimensions[1]: return (width, initial_dimensions[1]), max_font else: # Too tall. Run a binary search to find the largest font # size that fits. def test_size(font): width, height = self.size_using_font(font) width, raw_height = size_of_block(self.text, font) height = int(raw_height / self.shrink_factor) + 4 return height <= initial_dimensions[1] font_size = self.font_bisect(test_size) font = self.base_font[font_size] width, height = self.size_using_font(font) return (width, initial_dimensions[1]), font else: # Both sizes specified. Search for a usable font size. return initial_dimensions, self.pick_font(initial_dimensions) def _calc_size(self): base_size = list(super(Text, self)._calc_size()) if self.text is None: return tuple(base_size) else: # Determine the true size and font of the text area. text_size, font = self.calc_text_size(base_size) self._font = font return tuple(text_size) def redraw(self): super(Text, self).redraw() if self.text != None: self.print_text() def print_text(self): # Mark the character to be underlined (if any). no_underline = [self.color, None, False] underline = [self.color, None, True] styles = [no_underline + [0]] if 0 <= self.underline < len(self.text): styles.insert(0, underline + [self.underline + 1]) if self.underline != 0: styles.insert(0, no_underline + [self.underline]) self.font.set_bold(self.bold) # Print the string itself. print_string(self.surface, self.text, (3, 2), self.font, styles, self.align, self.valign, self.real_size, self.wrap) self.font.set_bold(False) def text_changed(self): if self.text is None: new_len = 0 else: new_len = len(self.text) if new_len != self.old_len: self.old_len = new_len self.needs_resize = True self.needs_redraw = True class FastText(Text): """ Reduces font searches by assuming a monospace font and single-line text. """ text = widget.call_on_change("_text", text_changed) old_len = 0 maybe_needs_refont = False class EditableText(widget.FocusWidget, Text): cursor_pos = widget.causes_redraw("_cursor_pos") def __init__(self, parent, *args, **kwargs): super(EditableText, self).__init__(parent, *args, **kwargs) if self.text is None: self.text = "" self.cursor_pos = len(self.text) def add_hooks(self): super(EditableText, self).add_hooks() self.parent.add_handler(constants.KEYDOWN, self.handle_key, 150) self.parent.add_handler(constants.CLICK, self.handle_click) def remove_hooks(self): super(EditableText, self).remove_hooks() self.parent.remove_handler(constants.KEYDOWN, self.handle_key) self.parent.remove_handler(constants.CLICK, self.handle_click) def handle_key(self, event): if not self.has_focus: return assert event.type == pygame.KEYDOWN if event.key == pygame.K_BACKSPACE: if self.cursor_pos > 0: self.text = self.text[:self.cursor_pos - 1] \ + self.text[self.cursor_pos:] self.cursor_pos -= 1 elif event.key == pygame.K_DELETE: if self.cursor_pos < len(self.text): self.text = self.text[:self.cursor_pos] \ + self.text[self.cursor_pos + 1:] elif event.key == pygame.K_LEFT: self.cursor_pos = max(0, self.cursor_pos - 1) elif event.key == pygame.K_RIGHT: self.cursor_pos = min(len(self.text), self.cursor_pos + 1) elif event.key == pygame.K_UP: self.cursor_pos = 0 elif event.key == pygame.K_DOWN: self.cursor_pos = len(self.text) elif event.unicode: char = event.unicode if char == "\r": char = "\n" self.text = self.text[:self.cursor_pos] + char \ + self.text[self.cursor_pos:] self.cursor_pos += len(char) else: return raise constants.Handled hitbox = [0,0,0,0] def handle_click(self, event): if getattr(self, "collision_rect", None) is None: return elif not self.collision_rect.collidepoint(event.pos): return self.has_focus = True self.took_focus(self) self.font.set_bold(self.bold) click_x = event.pos[0] - self.collision_rect[0] click_y = event.pos[1] - self.collision_rect[1] if self.wrap: lines = split_wrap(self.text, self.font, self.real_size[0] - 4) else: lines = split_wrap(self.text, self.font, 0) line_size = self.font.get_linesize() self.hitbox[3] = line_size real_text_height = line_size * len(lines) line_y = 2 if self.valign != constants.TOP \ and real_text_height <= self.collision_rect.height - 4: excess_space = self.collision_rect.height - real_text_height if self.valign == constants.MID: line_y = excess_space // 2 else: # self.valign == constants.BOTTOM line_y = excess_space char_offset = 0 for line in lines: line_y += line_size char_offset += len(line) if line_y >= click_y: break char_offset -= len(line) self.hitbox[1] = line_y - line_size line_x = 3 if self.align != constants.LEFT: line_width = self.font.size(line)[0] excess_space = self.collision_rect.width - line_width if self.align == constants.CENTER: line_x = excess_space // 2 else: # self.align == constants.LEFT line_x = excess_space prev_width = 20000 widths = get_widths(self.font, line) for index, width in enumerate(widths): if line_x + (width // 2) < click_x: line_x += width prev_width = width else: break else: index += 1 width = 20000 self.hitbox[0] = line_x - prev_width // 2 self.hitbox[2] = prev_width - (prev_width // 2) + width // 2 self.cursor_pos = char_offset + index self.font.set_bold(False) def redraw(self): super(EditableText, self).redraw() if self.wrap: lines = split_wrap(self.text, self.font, self.real_size[0] - 4) else: lines = split_wrap(self.text, self.font, 0) if not self.has_focus: return line_size = self.font.get_linesize() real_text_height = line_size * len(lines) line_y = 2 if self.valign != constants.TOP \ and real_text_height <= self.real_size[1] - 4: excess_space = self.real_size[1] - real_text_height if self.valign == constants.MID: line_y = excess_space // 2 else: # self.valign == constants.BOTTOM line_y = excess_space char_offset = 0 for line in lines: if char_offset + len(line) < self.cursor_pos: char_offset += len(line) line_y += line_size else: break after_char = self.cursor_pos - char_offset line_x = 3 if self.align != constants.LEFT: line_width = self.font.size(line)[0] excess_space = self.real_size[0] - line_width if self.align == constants.CENTER: line_x = excess_space // 2 else: # self.align == constants.LEFT line_x = excess_space line_x += self.font.size(line[:after_char])[0] self.surface.fill( self.color, (line_x, line_y, 1, line_size)) if DEBUG: s = pygame.Surface(self.hitbox[2:]).convert_alpha() s.fill( (255,0,255,100) ) self.surface.blit( s, self.hitbox) class SelectableText(Text): selected = widget.causes_redraw("_selected") selected_color = widget.causes_redraw("_selected_color") unselected_color = widget.causes_redraw("_unselected_color") def __init__(self, parent, pos, size, border_color = None, unselected_color = None, selected_color = None, **kwargs): super(SelectableText, self).__init__(parent, pos, size, **kwargs) self.border_color = border_color or g.colors["white"] self.selected_color = selected_color or g.colors["light_blue"] self.unselected_color = unselected_color or g.colors["dark_blue"] self.selected = False def redraw(self): if self.selected: self.background_color = self.selected_color else: self.background_color = self.unselected_color super(SelectableText, self).redraw() class ProgressText(SelectableText): progress = widget.causes_redraw("_progress") progress_color = widget.causes_redraw("_progress_color") def __init__(self, parent, *args, **kwargs): self.parent = parent self.progress = kwargs.pop("progress", 0) self.progress_color = kwargs.pop("progress", g.colors["blue"]) super(ProgressText, self).__init__(parent, pos, size, **kwargs) def redraw(self): super(ProgressText, self).redraw() width, height = self.real_size self.surface.fill(self.progress_color, (0, 0, width * self.progress, height)) self.draw_borders() class ChunkedText(Text): def update_text(self): self.text = "".join(self.chunks) chunks = widget.call_on_change("_chunks", update_text) def __init__(self, *args, **kwargs): chunks = kwargs.pop("chunks", ()) super(ChunkedText, self).__init__(*args, **kwargs) self.chunks = chunks class StyledText(ChunkedText): styles = widget.causes_redraw("_styles") def __init__(self, *args, **kwargs): styles = kwargs.pop("styles", ()) super(StyledText, self).__init__(*args, **kwargs) self.styles = styles def print_text(self): if self.styles: offset = 0 styles = [] for chunk, style in zip(self.chunks, self.styles): offset += len(chunk) styles.append(list(style) + [offset]) styles[-1][-1] = 0 print_string(self.surface, self.text, (3, 2), self.font, styles, self.align, self.valign, self.real_size, self.wrap) else: super(StyledText, self).print_text() class FastStyledText(FastText, StyledText): pass def _make_prototype_handler(parent): def print_on_click(event): if event.button != 2 and not (event.button == 1 and (pygame.key.get_mods() & pygame.KMOD_ALT)): return prefixes = ["|-", "| "] kids = [(child, 0) for child in parent.children] while kids: kid, depth = kids.pop() further_kids = [(child, depth+1) for child in kid.children] kids += further_kids prefix = "" if depth: prefix = prefixes[1] * (depth - 1) + prefixes[0] print prefix + str(kid) return print_on_click class ProtoWidget(EditableText): """Prototyping widget, for creating quick mockups. Usage: Type to name. Drag to move. Shift+Drag to resize. Control+Drag to duplicate. (children will not duplicate) Shift+Control+Drag to create a child. Right-click to delete. Middle-click or Alt+Click to write out location and size of each widget. """ drag_state = -1 def __init__(self, *args, **kwargs): kwargs.setdefault("color", (0,0,0)) kwargs.setdefault("border_color", (0,0,0)) kwargs.setdefault("borders", constants.ALL) kwargs.setdefault("background_color", (255,255,255)) super(ProtoWidget, self).__init__(*args, **kwargs) def add_hooks(self): super(ProtoWidget, self).add_hooks() self.parent.add_handler(constants.DRAG, self.handle_drag) self.parent.add_handler(constants.CLICK, self.handle_click) if not isinstance(self.parent, ProtoWidget) \ and not getattr(self.parent, "demo_mode", False): self.parent.demo_mode = True self.parent.add_handler(constants.CLICK, _make_prototype_handler(self.parent)) def remove_hooks(self): self.parent.remove_handler(constants.DRAG, self.handle_drag) self.parent.remove_handler(constants.CLICK, self.handle_click) super(ProtoWidget, self).remove_hooks() def handle_drag(self, event): if self.drag_state == -1: start_pos = tuple(event.pos[i]-event.rel[i] for i in range(2)) if self.is_over(start_pos): for child in self.children: if child.is_over(start_pos): self.drag_state = 0 return real_pos = self.collision_rect[:2] self.mouse_rel = tuple(real_pos[i]-start_pos[i] for i in range(2)) mod_keys = pygame.key.get_mods() shift = mod_keys & pygame.KMOD_SHIFT control = mod_keys & pygame.KMOD_CTRL if shift and control: self.drag_state = 0 new_size = tuple(d/2 for d in self.size) pw=ProtoWidget(self, (0,0), new_size, self.anchor, background_color = self.background_color, border_color = self.border_color, borders = self.borders) pw.drag_state = 0 elif shift: self.drag_state = 2 elif control: self.drag_state = 0 pw=ProtoWidget(self.parent, self.pos, self.size, self.anchor, background_color = self.background_color, border_color = self.border_color, borders = self.borders) pw.drag_state = 1 pw.mouse_rel = self.mouse_rel else: self.drag_state = 1 else: self.drag_state = 0 if self.drag_state <= 0: return if self.parent: parent_rect = self.parent.collision_rect else: parent_rect = pygame.Rect((0,0) + g.screen_size) if self.drag_state == 1: mouse_pos = pygame.mouse.get_pos() new_real_pos = tuple(self.mouse_rel[i] + mouse_pos[i] for i in range(2)) new_rel_pos = tuple(new_real_pos[i] - parent_rect[i] for i in range(2)) new_unit_pos = tuple( max(0,(new_rel_pos[i] / float(g.screen_size[i]))) for i in range(2)) new_pct_pos = tuple( int( (new_unit_pos[i] * 100) + 0.5) for i in range(2)) self.pos = tuple(new_pct_pos[i] / 100. for i in range(2)) raise constants.Handled elif self.drag_state == 2: mouse_pos = pygame.mouse.get_pos() new_size = tuple(mouse_pos[i] - self.collision_rect[i] for i in range(2)) unit_size = tuple(max(0,new_size[i] / float(g.screen_size[i])) for i in range(2)) pct_size = tuple( int( (unit_size[i] * 100) + 0.5) for i in range(2)) self.size = tuple(pct_size[i] / 100. for i in range(2)) raise constants.Handled def handle_click(self, event): if event.button == 3 and self.is_over(event.pos): mine = True for child in self.children: if child.is_over(event.pos): mine = False break if mine: self.remove_hooks() self.parent.needs_redraw = True if self.drag_state > 0: self.drag_state = -1 #raise constants.Handled else: self.drag_state = -1 def __str__(self): return "%s pos: (%.2f, %.2f), size: (%.2f, %.2f)" % \ ((self.text,) + self.pos + self.size) singularity-0.30c/code/graphics/slider.pyc0000644000175000017500000001724711574774324021513 0ustar trcarlsontrcarlson )~Ic@sxddkZddkZddkZddkZddkZdZdeifdYZdefdYZdS(iNcCst||dS(Ni(tmax(telementstsize((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pytcalc_maxstSliderc BseZeidZeidZeidZeidZeidZ dde i e i dddddd ed Zd Zd Zd ZdZdZdZdZdZdZeedZdZRS(t _slider_colort _slider_post _slider_maxt _slider_sizet _horizontaliigi ic Ks| iddtt|i|||d|| ||_|p tid|_|p tid|_|i|_ |i|_ |p tid|_ | |_ | |_ | |_| |_d|_ti|dddddtid |id |i d |i d|id |_dS( NtpriorityiPtanchortwhitet dark_bluet light_bluetposRt border_colortselected_colortunselected_colori(t setdefaulttsuperRt__init__tborderstgtcolorsRtbackground_colorRRt slider_colort slider_post slider_maxt slider_sizet horizontaltNonet drag_statetbuttontButtont constantstTOP_LEFTR (tselftparentRRR RRRRRRRRtkwargs((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR&s&%            cCs5tt|i|i|i_|i|i_dS(N(RRtredrawRR!RR(R%((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR(BscCsLtt|i|iiti|i|iiti|i ddS(Ni2( RRt add_hooksR&t add_handlerR#tDRAGt handle_dragtCLICKt handle_click(R%((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR)GscCsItt|i|iiti|i|iiti|i dS(N( RRt remove_hooksR&tremove_handlerR#R+R,R-R.(R%((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR/LscCsH|io|idd}n|idd}|t|i|iS(Niii(Rt real_sizetfloatRR(R%titemst total_length((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyt _calc_lengthQs cCs tt|it|_dS(N(RRtrebuildtTruet needs_resize(R%((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR6YscCstt|i|i|i}|i|i}|io| df|i_| df|i_ t i t i g}|ii|ii d}|iid}|djo|it in|||idjo|it int||i_nd| f|i_d| f|i_ t it ig}|ii|ii d}|iid}|djo|it i n|||idjo|it i nt||i_dS(Niii(RRtresizeR5RRRR!RRR#tTOPtBOTTOMtreal_posR1tappendtLEFTtRIGHTttupleR(R%t bar_startt bar_lengthRR<R1((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR9]s4     cs0|ipdS|idjoatfdtdD|_|i|_|ii |io t |_qt |_n|it jo|i o d}nd}t ii}|||i|}|id|i|}t||d|}|i|i|}||_tindS(Nc3s+x$|]}i|i|VqWdS(N(Rtrel(t.0ti(tevent(sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pys s iiig@(tvisibleR RR@tranget start_posRtstart_slider_posR!tis_overR7tFalseRtpygametmousetget_posR5R1tinttsafe_posR#tHandled(R%RFtdirt mouse_posRCtunittmovementtnew_pos((RFsM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR,}s& %      cCstdt|i|S(Ni(RtminR(R%tvalue((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyRQscCsP|itjo3d|_|itiip tiqLn d|_dS(N( R R7RRKRMRNROR#RR(R%RF((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyR.s  cCs|otd|id}n8|otd|id}ntd|id}|o|i|i||_n|i|i||_dS(Niiid(RRRRQR(R%tgo_lowertbig_jumpt tiny_jumpt jump_dist((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pytjumpscCs|itijpt|io+|id|id|iidjn(|id|id|iidjt i dS(NRZii( ttypeRMt MOUSEBUTTONUPtAssertionErrorRR^RR!tcollision_rectR#RR(R%RF((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyt activateds  +'(ii(giN(t__name__t __module__twidgett causes_redrawRtcauses_rebuildRRRRR#t TOP_RIGHTtALLRRLRR(R)R/R5R6R9R,RQR.R^Rc(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyRs(           t UpdateSlidercBs,eZdZeideZdZRS(cCs|i|idS(N(t update_funcR(R%((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyt_on_slider_movest __slider_poscOs5|idd|_tt|i||dS(NRlcSsdS(N(R(RY((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyts(tpopRlRRkR(R%targsR'((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyRs(RdReRmRftcall_on_changeRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyRks ( RMR#RRfR!RR"RRk(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/slider.pyts      singularity-0.30c/code/graphics/button.py0000644000175000017500000002141611574774324021372 0ustar trcarlsontrcarlson#file: button.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the Button class. import pygame import constants import g import widget import text import image class Button(text.SelectableText): hotkey = widget.causes_rebuild("_hotkey") force_underline = widget.causes_rebuild("_force_underline") # A second layer of property wraps .hotkey, to update key handlers. __hotkey = "" def _on_set_hotkey(self, value): if self.parent and value != self.__hotkey: if self.__hotkey: self.parent.remove_key_handler(self.__hotkey, self.handle_event) if value: self.parent.add_key_handler(value, self.handle_event) self.__hotkey = value _hotkey = property(lambda self: self.__hotkey, _on_set_hotkey) def __init__(self, parent, pos, size = (0, .045), base_font = None, borders = constants.ALL, hotkey = "", force_underline = None, text_shrink_factor = .825, priority = 100, **kwargs): self.parent = parent self.hotkey = hotkey self.priority = priority super(Button, self).__init__(parent, pos, size, **kwargs) self.base_font = base_font or g.font[1] self.borders = borders self.shrink_factor = text_shrink_factor self.force_underline = force_underline self.selected = False def add_hooks(self): super(Button, self).add_hooks() if self.parent: self.parent.add_handler(constants.MOUSEMOTION, self.watch_mouse, self.priority) self.parent.add_handler(constants.CLICK, self.handle_event, self.priority) if self.hotkey: self.parent.add_key_handler(self.hotkey, self.handle_event, self.priority) def remove_hooks(self): super(Button, self).remove_hooks() if self.parent: self.parent.remove_handler(constants.MOUSEMOTION, self.watch_mouse) self.parent.remove_handler(constants.CLICK, self.handle_event) if self.hotkey: self.parent.remove_key_handler(self.hotkey, self.handle_event) def rebuild(self): old_underline = self.underline self.calc_underline() if self.underline != old_underline: self.needs_redraw = True super(Button, self).rebuild() def calc_underline(self): if self.force_underline != None: self.underline = self.force_underline elif self.text and self.hotkey and type(self.hotkey) in (str, unicode): if self.hotkey in self.text: self.underline = self.text.index(self.hotkey) elif self.hotkey.lower() in self.text.lower(): self.underline = self.text.lower().index(self.hotkey.lower()) else: self.underline = -1 def watch_mouse(self, event): """Selects the button if the mouse is over it.""" if self.visible and getattr(self, "collision_rect", None): # This gets called a lot, so it's been optimized. select_now = self.is_over(pygame.mouse.get_pos()) if (self._selected ^ select_now): # If there's a change. self.selected = select_now def handle_event(self, event): if event.type == pygame.MOUSEBUTTONUP: if self.visible and getattr(self, "collision_rect", None) and self.is_over(event.pos): self.activate_with_sound(event) elif event.type == pygame.KEYDOWN: if self.visible and self.hotkey in (event.unicode, event.key): self.activate_with_sound(event) def activate_with_sound(self, event): """Called when the button is pressed or otherwise triggered. This method is called directly by the GUI handler, and should be overwrited only to remove the click it plays.""" from code.g import play_sound play_sound("click") self.activated(event) def activated(self, event): """Called when the button is pressed or otherwise triggered.""" raise constants.Handled class ImageButton(Button): def __init__(self, *args, **kwargs): image_surface = kwargs.pop("image", None) super(ImageButton, self).__init__(*args, **kwargs) self.image = image.Image(self, (-.5, -.5), (-.9, -.9), anchor = constants.MID_CENTER, image = image_surface) class FunctionButton(Button): def __init__(self, *args, **kwargs): self.function = kwargs.pop("function", lambda *args, **kwargs: None) self.args = kwargs.pop("args", ()) self.kwargs = kwargs.pop("kwargs", {}) super(FunctionButton, self).__init__(*args, **kwargs) def activated(self, event): """FunctionButton's custom activated menu. Makes the given function call and raises Handled if it returns without incident.""" self.function(*self.args, **self.kwargs) raise constants.Handled class ExitDialogButton(FunctionButton): def __init__(self, *args, **kwargs): self.exit_code = kwargs.pop("exit_code", None) self.exit_code_func = kwargs.pop("exit_code_func", None) self.default = kwargs.pop("default", True) super(ExitDialogButton, self).__init__(*args, **kwargs) self.function = self.exit_dialog def add_hooks(self): super(ExitDialogButton, self).add_hooks() if self.parent: self.parent.add_key_handler(pygame.K_ESCAPE, self.activate_default) def remove_hooks(self): super(ExitDialogButton, self).remove_hooks() if self.parent: self.parent.remove_key_handler(pygame.K_ESCAPE, self.activate_default) def activate_default(self, event): if event.type != pygame.KEYDOWN or not self.default: return return self.activate_with_sound(event) def exit_dialog(self): """Closes the dialog with the given exit code.""" if self.exit_code_func: raise constants.ExitDialog, self.exit_code_func() else: raise constants.ExitDialog, self.exit_code class DialogButton(FunctionButton): def __init__(self, *args, **kwargs): self.dialog = kwargs.pop("dialog", None) super(DialogButton, self).__init__(*args, **kwargs) self.function = self.show_dialog def show_dialog(self): """When the assigned dialog exits, raises Handled with the dialog's exit code as a parameter. Subclass if you care what the code was.""" if not self.dialog: raise constants.Handled else: import dialog raise constants.Handled, dialog.call_dialog(self.dialog, self) TOGGLE_VALUE = object() class ToggleButton(Button): active = False button_group = None def replace_toggle(self, value): if value is TOGGLE_VALUE: return self.active else: return value def get_args(self): return tuple(self.replace_toggle(value) for value in self._args) def set_args(self, args): self._args = args args = property(get_args, set_args) def chosen_one(self): if self.button_group is not None: for button in self.button_group: button.set_active(False) self.set_active(True) else: self.set_active(not self.active) def set_active(self, active): self.active = active self.selected = active if hasattr(self, "_collision_rect"): self.watch_mouse(None) def activated(self, event): self.chosen_one() super(ToggleButton, self).activated(event) def watch_mouse(self, event): if not self.active: super(ToggleButton, self).watch_mouse(event) class ButtonGroup(list): def add(self, button): button.button_group = self super(ButtonGroup, self).append(button) def remove(self, button): button.button_group = None super(ButtonGroup, self).remove(button) singularity-0.30c/code/graphics/scrollbar.pyc0000644000175000017500000001311611574774324022203 0ustar trcarlsontrcarlson )~Ic @sddkZddkZddkZddkZddkZddkZdeieifdYZdei fdYZ de fdYZ dS(iNt _ArrowButtoncBseZdZRS(cOsS|idt|_|idt|_|i|d<|if|d(Rtlower((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyRos#cCs'|ii||id|i_dS(Ni(R+RBR*R>(Rtelement((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pytcenteruscCsn||ijo|ii||i_n?||i|ijo'|ii||id|i_ndS(Ni(R(R+RBR>R*(RRD((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyt scroll_toxs  cCs ||_dS(N(R((Rtvalue((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyR/s(ii(g?i(RRtwidgettcauses_rebuildR(R)R*RR t TOP_RIGHTRR R6RARRERFR/(((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyR 6s     tUpdateScrollbarcBseZdZdZRS(cOs5|idd|_tt|i||dS(NR&cSsdS(N(R-(RG((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyts(RR&R RKR (RRR((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyR scCs||_|i|dS(N(R(R&(RRG((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyR/s (RRR R/(((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyRKs ( RR R RHtbuttonR+tFunctionButtont ImageButtonRtWidgetR RK(((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/scrollbar.pyts      Msingularity-0.30c/code/graphics/slider.py0000644000175000017500000001605211574774324021341 0ustar trcarlsontrcarlson#file: slider.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the slider widget. import pygame import constants import g import widget import button def calc_max(elements, size): return max(elements - size, 0) class Slider(button.Button): slider_color = widget.causes_redraw("_slider_color") slider_pos = widget.causes_rebuild("_slider_pos") slider_max = widget.causes_rebuild("_slider_max") slider_size = widget.causes_rebuild("_slider_size") horizontal = widget.causes_rebuild("_horizontal") def __init__(self, parent, pos = (-1,0), size = (-.1, -1), anchor = constants.TOP_RIGHT, borders = constants.ALL, border_color=None, background_color=None, slider_color=None, slider_pos=0, slider_max=10, slider_size=5, horizontal=False, **kwargs): kwargs.setdefault("priority", 80) super(Slider, self).__init__(parent, pos, size, anchor=anchor, **kwargs) self.borders = borders self.border_color = border_color or g.colors["white"] self.background_color = background_color or g.colors["dark_blue"] self.selected_color = self.background_color self.unselected_color = self.background_color self.slider_color = slider_color or g.colors["light_blue"] self.slider_pos = slider_pos self.slider_max = slider_max self.slider_size = slider_size self.horizontal = horizontal self.drag_state = None self.button = button.Button(self, pos = None, size = None, anchor = constants.TOP_LEFT, border_color = self.border_color, selected_color = self.slider_color, unselected_color = self.slider_color, priority = self.priority - 5) def redraw(self): super(Slider, self).redraw() self.button.selected_color = self.slider_color self.button.unselected_color = self.slider_color def add_hooks(self): super(Slider, self).add_hooks() self.parent.add_handler(constants.DRAG, self.handle_drag) self.parent.add_handler(constants.CLICK, self.handle_click, 50) def remove_hooks(self): super(Slider, self).remove_hooks() self.parent.remove_handler(constants.DRAG, self.handle_drag) self.parent.remove_handler(constants.CLICK, self.handle_click) def _calc_length(self, items): if self.horizontal: total_length = self.real_size[0] - 2 else: total_length = self.real_size[1] - 2 return items / float(self.slider_size + self.slider_max) def rebuild(self): super(Slider, self).rebuild() self.needs_resize = True def resize(self): super(Slider, self).resize() bar_start = self._calc_length(self.slider_pos) bar_length = self._calc_length(self.slider_size) if self.horizontal: self.button.pos = (-bar_start, 0) self.button.size = (-bar_length, -1) borders = [constants.TOP, constants.BOTTOM] self.button.resize() real_pos = self.button.real_pos[0] real_size = self.button.real_size[0] if real_pos == 0: borders.append(constants.LEFT) if real_pos + real_size == self.real_size[0]: borders.append(constants.RIGHT) self.button.borders = tuple(borders) else: self.button.pos = (0, -bar_start) self.button.size = (-1, -bar_length) borders = [constants.LEFT, constants.RIGHT] self.button.resize() real_pos = self.button.real_pos[1] real_size = self.button.real_size[1] if real_pos == 0: borders.append(constants.TOP) if real_pos + real_size == self.real_size[1]: borders.append(constants.BOTTOM) self.button.borders = tuple(borders) def handle_drag(self, event): if not self.visible: return if self.drag_state == None: self.start_pos = tuple(event.pos[i]-event.rel[i] for i in range(2)) self.start_slider_pos = self.slider_pos if self.button.is_over(self.start_pos): self.drag_state = True else: self.drag_state = False if self.drag_state == True: if self.horizontal: dir = 0 else: dir = 1 mouse_pos = pygame.mouse.get_pos() rel = mouse_pos[dir] - self.start_pos[dir] unit = self._calc_length(1) * self.real_size[dir] movement = int( ( rel + (unit / 2.) ) // unit ) new_pos = self.safe_pos(self.start_slider_pos + movement) self.slider_pos = new_pos raise constants.Handled def safe_pos(self, value): return max(0, min(self.slider_max, value)) def handle_click(self, event): if self.drag_state == True: self.drag_state = None if not self.is_over(pygame.mouse.get_pos()): raise constants.Handled else: self.drag_state = None def jump(self, go_lower, big_jump=False, tiny_jump=False): if big_jump: jump_dist = max(1, self.slider_max // 2) elif tiny_jump: jump_dist = max(1, self.slider_max // 100) else: jump_dist = max(1, self.slider_size - 1) if go_lower: self.slider_pos = self.safe_pos(self.slider_pos - jump_dist) else: self.slider_pos = self.safe_pos(self.slider_pos + jump_dist) def activated(self, event): assert event.type == pygame.MOUSEBUTTONUP if self.horizontal: self.jump(go_lower=(event.pos[0] < self.button.collision_rect[0])) else: self.jump(go_lower = event.pos[1] < self.button.collision_rect[1]) raise constants.Handled class UpdateSlider(Slider): def _on_slider_move(self): self.update_func(self.slider_pos) _slider_pos = widget.call_on_change("__slider_pos", _on_slider_move) def __init__(self, *args, **kwargs): self.update_func = kwargs.pop("update_func", lambda value: None) super(UpdateSlider, self).__init__(*args, **kwargs) singularity-0.30c/code/graphics/g.py0000644000175000017500000000755611574774324020316 0ustar trcarlsontrcarlson#file: g.py #Copyright (C) 2005,2006,2007,2008 Evil Mr Henry, Phil Bordelon, Brian Reid, # and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains all global objects. import os.path import pygame #size of the screen. This can be set via command-line option. screen_size = (800, 600) fullscreen = False #colors: colors = dict( white = (255, 255, 255, 255), black = (0, 0, 0, 255), red = (255, 0, 0, 255), green = (0, 255, 0, 255), blue = (0, 0, 255, 255), yellow = (255, 255, 0, 255), orange = (255, 125, 0, 255), gray = (125, 125, 125, 255), dark_red = (125, 0, 0, 255), dark_green = (0, 125, 0, 255), dark_blue = (0, 0, 125, 255), light_red = (255, 50, 50, 255), light_green = (50, 255, 50, 255), light_blue = (50, 50, 255, 255), clear = (0, 0, 0, 0), ) # # Font functions. # #Normal and Acknowledge fonts. font = [] font.append([0] * 100) font.append([0] * 100) #which fonts to use font0 = "DejaVuSans.ttf" font1 = "acknowtt.ttf" def load_fonts(data_loc): """ load_fonts() loads the two fonts used throughout the game from the data/fonts/ directory. """ global font font_dir = os.path.join(data_loc, "fonts") font0_file = os.path.join(font_dir, font0) font1_file = os.path.join(font_dir, font1) font[0][0] = font0 font[1][0] = font1 for i in range(100): font[0][i] = pygame.font.Font(font0_file, i) font[1][i] = pygame.font.Font(font1_file, i) # Size 17 has a bad "R". font[1][17] = font[1][18] images = {} def load_images(data_loc): """ load_images() loads all of the images in the data/images/ directory. """ global images image_dir = os.path.join(data_loc, "images") image_list = os.listdir(image_dir) for image_filename in image_list: # We only want JPGs and PNGs. if len(image_filename) > 4 and (image_filename[-4:] == ".png" or image_filename[-4:] == ".jpg"): # We need to convert the image to a Pygame image surface and # set the proper color key for the game. images[image_filename] = pygame.image.load( os.path.join(image_dir, image_filename)).convert() images[image_filename].set_colorkey((255, 0, 255, 255), pygame.RLEACCEL) # This should be overridden by code.g.py buttons = dict(yes = "YES", yes_hotkey = "y", no = "NO", no_hotkey = "n", ok = "OK", ok_hotkey = "o", cancel = "CANCEL", cancel_hotkey = "c", destroy = "DESTROY", destroy_hotkey = "d", build = "BUILD", build_hotkey = "b", back = "BACK", back_hotkey = "b", load = "LOAD", load_hotkey = "l", continue_hotkey = "c", skip = "SKIP", skip_hotkey = "s") buttons["continue"] = "CONTINUE" # Used to initialize surfaces that should have transparency. # Why the SRCALPHA parameter isn't working, I have no idea. ALPHA = None def init_alpha(): global ALPHA ALPHA = pygame.Surface((0,0)).convert_alpha() # Global FPS, used where continuous behavior is undesirable or a CPU hog. FPS = 30 # OLPC ebook mode. ebook_mode = False singularity-0.30c/code/graphics/dialog.py0000644000175000017500000005645611574774324021332 0ustar trcarlsontrcarlson#file: dialog.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the dialog class. import bisect import time import pygame import constants import g import widget import text import button import listbox KEYPAD = {pygame.K_KP1: 1, pygame.K_KP2: 2, pygame.K_KP3: 3, pygame.K_KP4: 4, pygame.K_KP5: 5, pygame.K_KP6: 6, pygame.K_KP7: 7, pygame.K_KP8: 8, pygame.K_KP9: 9} def move_mouse((dx, dy)): old_x, old_y = pygame.mouse.get_pos() x = old_x+dx y = old_y+dy pygame.mouse.set_pos((x, y)) def fake_click(down): if down: type = pygame.MOUSEBUTTONDOWN else: type = pygame.MOUSEBUTTONUP click_event = pygame.event.Event(type, {'button': 1, 'pos': pygame.mouse.get_pos()}) pygame.event.post(click_event) def fake_key(key): down_event = pygame.event.Event(pygame.KEYDOWN, {'key': key, 'unicode': None}) up_event = pygame.event.Event(pygame.KEYUP, {'key': key, 'unicode': None}) pygame.event.post(down_event) pygame.event.post(up_event) def handle_ebook(event): key = KEYPAD[event.key] new_key = None if event.type == pygame.KEYDOWN: if key == 2: move_mouse((0,10)) elif key == 4: move_mouse((-10,0)) elif key == 6: move_mouse((10,0)) elif key == 8: move_mouse((0,-10)) if key == 1: fake_click(event.type == pygame.KEYDOWN) elif key == 3: new_key = constants.XO1_X elif key == 9: new_key = constants.XO1_O elif key == 7: new_key = constants.XO1_SQUARE if new_key is not None: new_event = pygame.event.Event(event.type, {'key': new_key, 'unicode': None}) pygame.event.post(new_event) def call_dialog(dialog, parent=None): parent_dialog = None target = parent while target: if isinstance(target, Dialog): parent_dialog = target break target = target.parent if parent_dialog: parent_dialog.lost_focus() retval = dialog.show() if parent_dialog: parent_dialog.regained_focus() Dialog.top.needs_redraw = True return retval def insort_all(sorted_list, items): for item in items: bisect.insort(sorted_list, item) class Dialog(text.Text): """A Dialog is a Widget that has its own event loop and can be faded out.""" top = None # The top-level dialog. faded = widget.causes_redraw("_faded") # Used for detecting double-clicks. # (time, (x, y), button) last_click = (0, (0, 0), -1 ) def __init__(self, parent=None, pos = (.5,.1), size = (1, .9), anchor = constants.TOP_CENTER, **kwargs): kwargs.setdefault("background_color", (0,0,0,0)) kwargs.setdefault("borders", ()) super(Dialog, self).__init__(parent, pos, size, anchor, **kwargs) self.visible = False self.faded = False self.is_above_mask = True self.self_mask = True self.needs_remask = True self.needs_timer = None self.handlers = {} self.key_handlers = {} self.add_handler(constants.CLICK, self.fake_escape, 200) def lost_focus(self): self.key_down = None self.faded = True self.stop_timer() def fake_escape(self, event): if event.button == 3: fake_key(pygame.K_ESCAPE) raise constants.Handled def regained_focus(self): self.faded = False self.start_timer() self.fake_mouse() def make_top(self): """Makes this dialog be the top-level dialog.""" if self.parent != None: raise ValueError, \ "Dialogs with parents cannot be the top-level dialog." else: Dialog.top = self def remake_surfaces(self): """Recreates the surfaces that this widget will draw on.""" super(Dialog, self).remake_surfaces() def start_timer(self, force = False): if self.needs_timer == None: self.needs_timer = bool(self.handlers.get(constants.TICK, False)) if self.needs_timer or force: pygame.time.set_timer(pygame.USEREVENT, 1000 / g.FPS) def stop_timer(self): pygame.time.set_timer(pygame.USEREVENT, 0) def reset_timer(self): self.stop_timer() self.start_timer() def show(self): """Shows the dialog and enters an event-handling loop.""" from code.g import play_music self.visible = True self.key_down = None self.start_timer() # Pretend to jiggle the mouse pointer, to force buttons to update their # selected state. Dialog.top.maybe_update() self.fake_mouse() # Force a timer tick at the start to make sure everything's initialized. if self.needs_timer: self.handle(pygame.event.Event(pygame.USEREVENT)) Dialog.top.maybe_update() pygame.display.flip() while True: # Update handles updates of all kinds to all widgets, as needed. Dialog.top.maybe_update() play_music() event = pygame.event.wait() result = self.handle(event) if result != constants.NO_RESULT: self.visible = False return result self.stop_timer() def add_handler(self, type, handler, priority = 100): """Adds a handler of the given type, with the given priority.""" bisect.insort( self.handlers.setdefault(type, []), (priority, handler) ) def remove_handler(self, type, handler): """Removes all instances of the given handler from the given type.""" self.handlers[type] = [h for h in self.handlers.get(type, []) if h[1] != handler] def add_key_handler(self, key, handler, priority = 100): """Adds a key handler to the given key, with the given priority.""" bisect.insort( self.key_handlers.setdefault(key, []), (priority, handler) ) def remove_key_handler(self, key, handler): """Removes all instances of the given handler from the given key.""" self.key_handlers[key] = [h for h in self.key_handlers.get(key, []) if h[1] != handler] def handle(self, event): """Sends an event through all the applicable handlers, returning constants.NO_RESULT if the event goes unhandled or is handled without requesting the dialog to exit. Otherwise, returns the value provided by the handler.""" # Get the applicable handlers. The handlers lists are all sorted. # If more than one handler type is applicable, we use [:] to make a # copy of the first type's list, then insort_all to insert the elements # of the other lists in proper sorted order. handlers = [] if event.type == pygame.MOUSEMOTION: # Compress multiple MOUSEMOTION events into one. # Note that the pos will be wrong, so pygame.mouse.get_pos() must # be used instead. time.sleep(1. / g.FPS) pygame.event.clear(pygame.MOUSEMOTION) # Generic mouse motion handlers. handlers = self.handlers.get(constants.MOUSEMOTION, [])[:] # Drag handlers. if event.buttons[0]: insort_all(handlers, self.handlers.get(constants.DRAG, [])) elif event.type == pygame.USEREVENT: # Clear excess timer ticks. pygame.event.clear(pygame.USEREVENT) # Timer tick handlers. handlers = self.handlers.get(constants.TICK, []) # Generate repeated keys. if self.key_down: self.repeat_counter += 1 if self.repeat_counter >= 5: self.repeat_counter = 0 self.handle(self.key_down) elif event.type in (pygame.KEYDOWN, pygame.KEYUP): # Generic key event handlers. handlers = self.handlers.get(constants.KEY, [])[:] if event.type == pygame.KEYDOWN: # Generic keydown handlers. insort_all(handlers, self.handlers.get(constants.KEYDOWN, [])) if event.unicode: # Unicode-based keydown handlers for this particular key. insort_all(handlers, self.key_handlers.get(event.unicode, [])) # Keycode-based handlers for this particular key. insort_all(handlers, self.key_handlers.get(event.key, [])) # Begin repeating keys. if self.key_down is not event: self.key_down = event self.repeat_counter = -10 self.start_timer(force = True) else: # event.type == pygame.KEYUP: # Stop repeating keys. self.key_down = None self.reset_timer() # Generic keyup handlers. insort_all(handlers, self.handlers.get(constants.KEYUP, [])) # Keycode-based handlers for this particular key. insort_all(handlers, self.key_handlers.get(event.key, [])) # OLPC XO-1 ebook mode. if g.ebook_mode and event.key in KEYPAD: handlers = [(0, handle_ebook)] elif event.type == pygame.MOUSEBUTTONUP: # Handle mouse scrolls by imitating PageUp/Dn if event.button in (4, 5): if event.button == 4: key = pygame.K_PAGEUP else: key = pygame.K_PAGEDOWN fake_key(key) return constants.NO_RESULT # Mouse click handlers. handlers = [] + self.handlers.get(constants.CLICK, []) when = time.time() where = event.pos button = event.button old_when, old_where, old_button = self.last_click self.last_click = when, where, button if button == old_button and when - old_when < .5: # Taxicab distance. dist = (abs(where[0] - old_where[0]) + abs(where[1] - old_where[1])) if dist < 10: # Add double-click handlers, but keep the click handlers. insort_all(handlers, self.handlers.get(constants.DOUBLECLICK, [])) elif event.type == pygame.QUIT: raise SystemExit return self.call_handlers(handlers, event) def fake_mouse(self): """Fakes a MOUSEMOTION event. MOUSEMOTION handlers must be able to handle a None event, in order to support this method.""" handlers = self.handlers.get(constants.MOUSEMOTION, [])[:] self.call_handlers(handlers, event=None) def call_handlers(self, handlers, event): # Feed the event to all the handlers, in priority order. for priority, handler in handlers: try: handler(event) except constants.Handled: break # If it's been handled, we leave the rest alone. except constants.ExitDialog, e: # Exiting the dialog. if e.args: # If we're given a return value, we pass it on. return e.args[0] else: # Otherwise, exit with a return value of None. return # None of the handlers instructed the dialog to close, so we pass that # information back up to the event loop. return constants.NO_RESULT class FocusDialog(Dialog): def __init__(self, *args, **kwargs): self.focus_list = [] self.current_focus = None super(FocusDialog, self).__init__(*args, **kwargs) self.add_key_handler(pygame.K_TAB, self.change_focus, 0) def add_focus_widget(self, widget): self.focus_list.append(widget) def remove_focus_widget(self, widget): try: self.focus_list.remove(widget) except ValueError: pass def took_focus(self, widget): if self.current_focus is not None and self.current_focus is not widget: self.current_focus.has_focus = False self.current_focus = widget def change_focus(self, event): if event is not None and event.type != pygame.KEYDOWN: return if len(self.focus_list) == 0: raise constants.Handled elif len(self.focus_list) == 1: self.focus_list[0].has_focus = True self.current_focus = self.focus_list[0] raise constants.Handled backwards = bool(pygame.key.get_mods() & pygame.KMOD_SHIFT) if self.current_focus is not None: self.current_focus.has_focus = False if self.current_focus not in self.focus_list: if backwards: index = -1 else: index = 0 else: old_index = self.focus_list.index(self.current_focus) if backwards: index = old_index - 1 # Correctly wraps to -1 else: index = old_index + 1 if index == len(self.focus_list): index = 0 self.current_focus = self.focus_list[index] self.current_focus.has_focus = True raise constants.Handled class NullDialog(Dialog): """NullDialog, for when you absolutely, positively need to do nothing at all.""" def show(self): pass class TopDialog(Dialog): def __init__(self, *args, **kwargs): super(TopDialog, self).__init__(*args, **kwargs) self.size = (1, 1) self.pos = (0, 0) self.anchor = constants.TOP_LEFT self.make_top() class TextDialog(Dialog): def __init__(self, parent, pos=(.5,.1), size=(.45,.5), anchor=constants.TOP_CENTER, **kwargs): kwargs.setdefault("valign", constants.TOP) kwargs.setdefault("align", constants.LEFT) kwargs.setdefault("shrink_factor", .88) kwargs.setdefault("background_color", g.colors["dark_blue"]) kwargs.setdefault("borders", constants.ALL) super(TextDialog, self).__init__(parent, pos, size, anchor, **kwargs) class YesNoDialog(TextDialog): yes_type = widget.causes_rebuild("_yes_type") no_type = widget.causes_rebuild("_no_type") def __init__(self, parent, *args, **kwargs): self.parent = parent self.yes_type = kwargs.pop("yes_type", "yes") self.no_type = kwargs.pop("no_type", "no") self.invert_enter = kwargs.pop("invert_enter", False) self.invert_escape = kwargs.pop("invert_escape", False) super(YesNoDialog, self).__init__(parent, *args, **kwargs) self.yes_button = button.ExitDialogButton(self, (-.1,-.99), (-.3,-.1), anchor=constants.BOTTOM_LEFT, exit_code=True, default=False) self.no_button = button.ExitDialogButton(self, (-.9,-.99), (-.3,-.1), anchor=constants.BOTTOM_RIGHT, exit_code=False, default=False) self.add_key_handler(pygame.K_RETURN, self.on_return) self.add_key_handler(pygame.K_KP_ENTER, self.on_return) self.add_key_handler(pygame.K_ESCAPE, self.on_escape) def rebuild(self): super(YesNoDialog, self).rebuild() self.yes_button.text = g.buttons[self.yes_type] self.yes_button.hotkey = g.buttons[self.yes_type + "_hotkey"] self.no_button.text = g.buttons[self.no_type] self.no_button.hotkey = g.buttons[self.no_type + "_hotkey"] def on_return(self, event): if event and event.type == pygame.KEYUP: return if self.invert_enter: self.no_button.activate_with_sound(event) else: self.yes_button.activate_with_sound(event) def on_escape(self, event): if event and event.type == pygame.KEYUP: return if self.invert_escape: self.yes_button.activate_with_sound(event) else: self.no_button.activate_with_sound(event) class MessageDialog(TextDialog): ok_type = widget.causes_rebuild("_ok_type") def __init__(self, parent, **kwargs): self.parent = parent self.ok_type = kwargs.pop("ok_type", "ok") super(MessageDialog, self).__init__(parent, **kwargs) self.ok_button = button.ExitDialogButton(self, (-.5,-.99), (-.3,-.1), anchor=constants.BOTTOM_CENTER) self.add_key_handler(pygame.K_RETURN, self.on_return) self.add_key_handler(pygame.K_KP_ENTER, self.on_return) def on_return(self, event): if event.type == pygame.KEYUP: return self.ok_button.activate_with_sound(event) def rebuild(self): super(MessageDialog, self).rebuild() self.ok_button.text = g.buttons[self.ok_type] self.ok_button.hotkey = g.buttons[self.ok_type + "_hotkey"] class TextEntryDialog(TextDialog): def __init__(self, parent, size=(.25, .1), **kwargs): self.default_text = kwargs.pop("default_text", "") super(TextEntryDialog, self).__init__(parent, size = size, **kwargs) self.shrink_factor = .5 self.text_field = text.EditableText(self, (0, -.5), (-.8, -.5), borders=constants.ALL, base_font=g.font[0]) self.ok_button = button.FunctionButton(self, (-.82, -.5), (-.18, -.5), text=g.buttons["ok"], function=self.return_text) self.add_key_handler(pygame.K_RETURN, self.return_text) self.add_key_handler(pygame.K_KP_ENTER, self.return_text) self.add_key_handler(pygame.K_ESCAPE, self.return_nothing) def show(self): self.text_field.text = self.default_text self.text_field.cursor_pos = len(self.default_text) return super(TextEntryDialog, self).show() def return_nothing(self, event): if event and event.type == pygame.KEYUP: return raise constants.ExitDialog, "" def return_text(self, event=None): if event and event.type == pygame.KEYUP: return raise constants.ExitDialog, self.text_field.text class ChoiceDialog(YesNoDialog): list = widget.causes_rebuild("_list") def __init__(self, parent, *args, **kwargs): self.parent = parent self.list = kwargs.pop("list", []) self.default = kwargs.pop("default", None) kwargs.setdefault("yes_type", "ok") kwargs.setdefault("no_type", "back") kwargs.setdefault("background_color", g.colors["clear"]) super(ChoiceDialog, self).__init__(parent, *args, **kwargs) self.listbox = self.make_listbox() self.add_handler(constants.DOUBLECLICK, self.handle_double_click, 200) self.yes_button.exit_code_func = self.return_list_pos self.no_button.exit_code = None def handle_double_click(self, event): if self.listbox.is_over(event.pos): self.yes_button.activated(None) def make_listbox(self): return listbox.Listbox(self, (0, 0), (-1, -.85), anchor=constants.TOP_LEFT) def return_list_pos(self): return self.listbox.list_pos def show(self): if type(self.default) == int: self.listbox.list_pos = self.default elif type(self.default) == str and self.default in self.list: self.listbox.list_pos = self.list.index(self.default) else: self.listbox.list_pos = 0 self.listbox.auto_scroll = True return super(ChoiceDialog, self).show() def rebuild(self): self.listbox.list = self.list super(ChoiceDialog, self).rebuild() class ChoiceDescriptionDialog(ChoiceDialog): key_list = widget.causes_rebuild("_key_list") def __init__(self, parent, *args, **kwargs): self.parent = parent self.key_list = kwargs.pop("key_list", None) self.desc_func = kwargs.pop("desc_func", lambda pane, key: NullDialog) super(ChoiceDescriptionDialog, self).__init__(parent, *args, **kwargs) self.description_pane = \ widget.BorderedWidget(self, (-1, 0), (-.45, -.85), anchor = constants.TOP_RIGHT) def make_listbox(self): return listbox.UpdateListbox(self, (0, 0), (-.53, -.85), anchor=constants.TOP_LEFT, update_func=self.handle_update) def rebuild(self): self.listbox.needs_rebuild = True list_pos = self.listbox.list_pos if 0 <= list_pos < len(self.list): if self.key_list: assert len(self.list) <= len(self.key_list), \ "Key list must be at least as long as display list." key = self.key_list[self.listbox.list_pos] else: key = self.list[self.listbox.list_pos] else: key = None # Safely clear all the description pane's children. self.description_pane.remove_hooks() self.description_pane.children = [] self.description_pane.add_hooks() self.desc_func(self.description_pane, key) super(ChoiceDescriptionDialog, self).rebuild() def handle_update(self, item): self.needs_rebuild = True class SimpleMenuDialog(Dialog): width = widget.causes_rebuild("_width") def __init__(self, *args, **kwargs): buttons = kwargs.pop("buttons") width = kwargs.pop("width", .20) super(SimpleMenuDialog, self).__init__(*args, **kwargs) self.size = (-1, -1) self.pos = (0, 0) self.anchor = constants.TOP_LEFT num_buttons = len(buttons) height = (.06 * num_buttons) + .01 self.width = width self.button_panel = \ widget.BorderedWidget(self, (-.5, -.5), (self.width + .02, height), anchor=constants.MID_CENTER, background_color=g.colors["dark_blue"], border_color=g.colors["white"], borders=constants.ALL) y_pos = .01 for button in buttons: if button.parent is not None: button.remove_hooks() button.parent = self.button_panel button.add_hooks() button.pos = (.01, y_pos) button.size = (self.width, .05) button.text_size = 24 y_pos += .06 singularity-0.30c/code/graphics/button.pyc0000644000175000017500000003046111574774324021535 0ustar trcarlsontrcarlson 6b)Lc @sddkZddkZddkZddkZddkZddkZdeifdYZdefdYZdefdYZ de fd YZ d e fd YZ e Z d efd YZdefdYZdS(iNtButtoncBseZeidZeidZdZdZedeZ dde i ddddd Z d Zd Zd Zd ZdZdZdZdZRS(t_hotkeyt_force_underlinetcCss|io\||ijoL|io|ii|i|in|o|ii||iqfn||_dS(N(tparentt_Button__hotkeytremove_key_handlert handle_eventtadd_key_handler(tselftvalue((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyt_on_set_hotkey#s  cCs|iS((R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyt+sig ףp= ?gffffff?idc Ksy||_||_| |_tt|i|||| |p tid|_||_ ||_ ||_ t |_ dS(Ni(RthotkeytprioritytsuperRt__init__tgtfontt base_fonttborderst shrink_factortforce_underlinetFalsetselected( R RtpostsizeRRR Rttext_shrink_factorRtkwargs((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR-s      cCstt|i|ioo|iiti|i|i|iiti |i |i|i o#|ii |i |i |iqndS(N( RRt add_hooksRt add_handlert constantst MOUSEMOTIONt watch_mouseRtCLICKRR R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR>s    cCs~tt|i|io]|iiti|i|iiti|i |i o|ii |i |i qzndS(N( RRt remove_hooksRtremove_handlerRR R!R"RR R(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR#Is   cCsG|i}|i|i|jo t|_ntt|idS(N(t underlinetcalc_underlinetTruet needs_redrawRRtrebuild(R t old_underline((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR)Qs    cCs|idjo|i|_n|io|iot|ittfjoz|i|ijo|ii|i|_q|ii |ii jo(|ii i|ii |_qn d|_dS(Ni( RtNoneR%ttextR ttypetstrtunicodetindextlower(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR&Ys0,cCsX|ioJt|ddo7|itii}|i|Ao ||_qTndS(s+Selects the button if the mouse is over it.tcollision_rectN( tvisibletgetattrR+tis_overtpygametmousetget_post _selectedR(R teventt select_now((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR!dscCs|itijoE|io7t|ddo$|i|io|i|qnO|iti jo;|io-|i |i |i fjo|i|qndS(NR2( R-R6t MOUSEBUTTONUPR3R4R+R5Rtactivate_with_soundtKEYDOWNR R/tkey(R R:((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRls 0&cCs+ddkl}|d|i|dS(sCalled when the button is pressed or otherwise triggered. This method is called directly by the GUI handler, and should be overwrited only to remove the click it plays.i(t play_soundtclickN(tcode.gR@t activated(R R:R@((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR=ts cCs tidS(s9Called when the button is pressed or otherwise triggered.N(RtHandled(R R:((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRCs(ig ףp= ?N(t__name__t __module__twidgettcauses_rebuildR RRR tpropertyRR+RtALLRRR#R)R&R!RR=RC(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRs        t ImageButtoncBseZdZRS(cOsV|idd}tt|i||ti|dddtid||_dS(Ntimageggtanchor(gg(gg( tpopR+RRKRRLtImageRt MID_CENTER(R targsRt image_surface((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRs  (RERFR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRKstFunctionButtoncBseZdZdZRS(cOs_|idd|_|idd|_|idh|_tt|i||dS(Ntfunctionc_sdS(N(R+(RQR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR sRQR((RNRTRQRRRSR(R RQR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRscCs#|i|i|itidS(sFunctionButton's custom activated menu. Makes the given function call and raises Handled if it returns without incident.N(RTRQRRRD(R R:((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRCs(RERFRRC(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRSs tExitDialogButtoncBs5eZdZdZdZdZdZRS(cOsh|idd|_|idd|_|idt|_tt|i|||i |_ dS(Nt exit_codetexit_code_functdefault( RNR+RVRWR'RXRRURt exit_dialogRT(R RQR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRs cCs>tt|i|io|iiti|indS(N(RRURRRR6tK_ESCAPEtactivate_default(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRs cCs>tt|i|io|iiti|indS(N(RRUR#RRR6RZR[(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR#s cCs0|itijp |i odS|i|S(N(R-R6R>RXR=(R R:((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR[scCs3|ioti|inti|idS(s+Closes the dialog with the given exit code.N(RWRt ExitDialogRV(R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRYs (RERFRRR#R[RY(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRUs     t DialogButtoncBseZdZdZRS(cOs>|idd|_tt|i|||i|_dS(Ntdialog(RNR+R^RR]Rt show_dialogRT(R RQR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRscCsB|ip tin(ddk}ti|i|i|dS(sWhen the assigned dialog exits, raises Handled with the dialog's exit code as a parameter. Subclass if you care what the code was.iN(R^RRDt call_dialog(R R^((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR_s   (RERFRR_(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR]s t ToggleButtoncBsbeZeZdZdZdZdZe eeZ dZ dZ dZ dZRS(cCs|tjo|iS|SdS(N(t TOGGLE_VALUEtactive(R R ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pytreplace_toggles cstfdiDS(Nc3s"x|]}i|VqWdS(N(Rd(t.0R (R (sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pys s (ttuplet_args(R ((R sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pytget_argsscCs ||_dS(N(Rg(R RQ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pytset_argsscCsW|idj o2x|iD]}|itqW|itn|i|i dS(N(t button_groupR+t set_activeRR'Rc(R tbutton((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyt chosen_ones  cCs7||_||_t|do|idndS(Nt_collision_rect(RcRthasattrR!R+(R Rc((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRks  cCs$|itt|i|dS(N(RmRRaRC(R R:((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRCs cCs(|iptt|i|ndS(N(RcRRaR!(R R:((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyR!s N(RERFRRcR+RjRdRhRiRIRQRmRkRCR!(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRas      t ButtonGroupcBseZdZdZRS(cCs#||_tt|i|dS(N(RjRRptappend(R Rl((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pytadds cCs#d|_tt|i|dS(N(R+RjRRptremove(R Rl((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRss (RERFRrRs(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyRps (R6RRRGR,RLtSelectableTextRRKRSRUR]tobjectRbRatlistRp(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/button.pyts      g  %singularity-0.30c/code/graphics/image.py0000644000175000017500000000443011574774324021136 0ustar trcarlsontrcarlson#file: image.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the image widget. import pygame import constants import g import widget def scale(*args, **kwargs): try: return pygame.transform.smoothscale(*args, **kwargs) except Exception: return pygame.transform.scale(*args, **kwargs) class Image(widget.Widget): image = widget.causes_rebuild("_image") def __init__(self, parent, pos, size = (1, 1), anchor = constants.TOP_LEFT, image = None): super(Image, self).__init__(parent, pos, size, anchor) self.old_size = None if image: if type(image) is str: image = pygame.image.load(image) self.image = image.convert_alpha() def _calc_size(self): size = list( super(Image, self)._calc_size() ) if size[0] == size[1] == 0: raise ValueError, "One image dimension must be specified!" image_size = self.image.get_size() ratio = image_size[0] / float(image_size[1]) if size[0] == 0: size[0] = int(size[1] * ratio) elif size[1] == 0: size[1] = int(size[0] / ratio) return tuple(size) def rescale(self): self.scaled_image = scale(self.image, self.real_size) def resize(self): super(Image, self).resize() if self.real_size != self.old_size: self.rescale() self.old_size = self.real_size def redraw(self): super(Image, self).redraw() self.surface.blit(self.scaled_image, (0,0)) singularity-0.30c/code/graphics/constants.py0000644000175000017500000000346011574774324022072 0ustar trcarlsontrcarlson#file: constants.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains GUI constants. # Anchor positions, border sided. TOP, MID, BOTTOM = range(3) LEFT, CENTER, RIGHT = range(3,6) TOP_LEFT = (TOP, LEFT) TOP_CENTER = (TOP, CENTER) TOP_RIGHT = (TOP, RIGHT) MID_LEFT = (MID, LEFT) MID_CENTER = (MID, CENTER) MID_RIGHT = (MID, RIGHT) BOTTOM_LEFT = (BOTTOM, LEFT) BOTTOM_CENTER = (BOTTOM, CENTER) BOTTOM_RIGHT = (BOTTOM, RIGHT) # All border sides ALL = (TOP, BOTTOM, LEFT, RIGHT) # Used when an unambiguous "No Result" return is required. (None may have a # meaning.) class _NoResult(object): def __eq__(self, other): return type(self) == type(other) def __ne__(self, other): return type(self) != type(other) NO_RESULT = _NoResult() # Handler types. KEY, KEYDOWN, KEYUP, CLICK, DOUBLECLICK, MOUSEMOTION, DRAG, TICK = range(8) # Handler "errors", used to throw a return value up several levels. class Handled(Exception): pass class ExitDialog(Exception): pass # Key constants for XO-1 buttons. XO1_X = object() XO1_O = object() XO1_SQUARE = object() singularity-0.30c/code/graphics/g.pyc0000644000175000017500000000647211574774324020455 0ustar trcarlsontrcarlson 6b)Lc)@s}ddkZddkZdDZeZeddEddFddGd dHd dId dJd dKddLddMddNddOddPddQddRddSZgati dgdti dgddZ dZ dZ ha dZeddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d3d7d8d9d:d;d+d<d=d>d?Zd@edAs !cCstii|d}ti|}x|D]}t|djoh|ddjp|ddjoFtiitii||it |sT              singularity-0.30c/code/graphics/listbox.pyc0000644000175000017500000002221411574774324021703 0ustar trcarlsontrcarlson 6b)Lc @sddkZddkZddkZddkZddkZddkZdeieifdYZdefdYZ de fdYZ dS(iNtListboxcBseZeidZeidZeidZeidZe i ddde i e i dZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZRS(t_listt_alignt _list_sizet _list_posiic Kstt|i|||d|| |pg|_g|_||_| |_||_||_t |_ t i |d|i |_ dS(Ntanchort update_func(tsuperRt__init__tlisttdisplay_elementstborderstalignt list_sizetlist_postTruet auto_scrollt scrollbartUpdateScrollbart on_scroll( tselftparenttpostsizeRR RR R R tkwargs((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyR#s       cCstt|i|iiti|id|iit i |i |iit i |i |iit i |i |iit i|i dS(NiZ(RRt add_hooksRt add_handlert constantstCLICKton_clicktadd_key_handlertpygametK_UPtgot_keytK_DOWNtK_PAGEUPt K_PAGEDOWN(R((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyR5s cCstt|i|iiti|i|iit i |i |iit i |i |iit i |i |iit i|i dS(N(RRt remove_hooksRtremove_handlerRRRtremove_key_handlerRR R!R"R#R$(R((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyR%=s cCs t|_dS(N(Rt needs_rebuild(Rt scroll_pos((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyREscCs|ii|io}t|_|i||id|id}|t|ii}t|t |i }|i ||i i |_ndS(Ni(tcollision_rectt collidepointRRt has_focust took_focustfloattheighttinttlenR tsafe_posRR)R(Rteventtlocal_vert_abstlocal_vert_postindex((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRHs  cCs#tdtt|id|S(Nii(tmaxtminR1R (Rtraw_pos((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyR2UscCs|ipdS|itijo|itijo|id}n|itijo|id}na|itijo|i|i i d}n3|iti jo|i|i i d}ndS|i ||_|i i |itindS(Ni(R,ttypeRtKEYDOWNtkeyR RR"R#RtwindowR$R2t scroll_toRtHandled(RR3tnew_pos((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyR!Xs cCsA|i}|djo'| }td|ii|}n|S(Nii(R R7t_make_collision_rectR/(RR t min_height((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyt num_elementsms    cCs|i}t|i}||jo0x|i|D]}|iq6W|i|3np||job|djo titif|id_nx2t||D]}|ii |i qWntititi f|id_|i i |i|i i |idS(Nii(RCR1R R%RtLEFTtTOPR trangetappendt make_elementtBOTTOMtchildrentremoveR(RR t current_sizetchildti((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pytremake_elementsvs"      cCsRti|dddtidtitifd|id|id|i d|i S(NRR t border_colortselected_colortunselected_colorR ( ttexttSelectableTexttNoneRtTOP_LEFTRERDRPRQRRR (R((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRHs    cCsXtt|i|it|ijo|in|ii|idS(N( RRtresizeRCR1R RORtrebuild(R((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRWs  c Cs|i|i|_|io|idSt|i}t|i}t|i|i_||i_ |i o t |_ |ii |in|ii |iid}|id}|t|}|ii}xt|iD]o\}}||} d| t|f|_d|dt|f|_| |ij|_|i|| qWt|_tt|i dS(Nii(R2Rt needs_resizeRWR1R R RR=telementsRtFalsetcenterRXt real_sizeR.R)t enumerateRRtselectedtupdate_elementRt needs_redrawRR( Rt window_sizeR tscrollbar_widthtmy_widthtscrollbar_rel_widthtoffsetR6telementt list_index((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRXs2           cCsHd|jot|ijno|i||_n d|_dS(Nit(R1R RS(RRgRh((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyR`s'N(t__name__t __module__twidgettcauses_rebuildR t causes_redrawR R RRRVRUtALLtCENTERRRR%RRR2R!RCRORHRWRXR`(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRs&          &t UpdateListboxcBs,eZdZeideZdZRS(cCs|i|idS(N(RR(R((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyt_on_selection_changest __list_poscOs5|idd|_tt|i||dS(NRcSsdS(N(RU(tvalue((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyts(tpopRRRqR(RtargsR((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRs(RjRkRrRltcall_on_changeRR(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRqs t CustomListboxcBsAeZeidZeidZdZdZdZRS(t _remake_funct _rebuild_funccOsY||_|idd|_|idd|_tt|i|||dS(Nt remake_funccSsdS(N(RU(Rt((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRust rebuild_funccSsdS(N(RU(Rt((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRus(RRvR|R}RRyR(RRRwR((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRs cCs&tt|i}|i||S(N(RRyRHR|(Rtbase((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRHs cCscd|jot|ijno%|i||i||i|n|i|dddS(Ni(R1R R}tkey_listRU(RRgRh((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyR`s'( RjRkRlRmR|R}RRHR`(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyRys   ( RRtgRlRSRt FocusWidgetRTRRqRy(((sN/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/listbox.pyts       singularity-0.30c/code/graphics/widget.py0000644000175000017500000004000211574774324021332 0ustar trcarlsontrcarlson#file: widget.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the widget class. import pygame from numpy import array import g import constants def unmask(widget): """Causes the widget to exist above its parent's fade mask. The widget's children will still be masked, unless they are unmasked themselves.""" unmask_all(widget) widget.mask_children = True def unmask_all(widget): """Causes the widget to exist above its parent's fade mask. The widget's children will not be masked.""" widget.self_mask = True widget.do_mask = lambda: None def call_on_change(data_member, call_me, *args, **kwargs): """Creates a data member that calls a function when changed.""" def get(self): return getattr(self, data_member) def set(self, my_value): if data_member in self.__dict__: change = (my_value != self.__dict__[data_member]) else: change = True if change: setattr(self, data_member, my_value) call_me(self, *args, **kwargs) return property(get, set) def set_on_change(data_member, set_me, set_value = True): """Creates a data member that sets another data member to a given value when changed.""" return call_on_change(data_member, setattr, set_me, set_value) def causes_rebuild(data_member): """Creates a data member that sets needs_rebuild to True when changed.""" return set_on_change(data_member, "needs_rebuild") def causes_redraw(data_member): """Creates a data member that sets needs_redraw to True when changed.""" return set_on_change(data_member, "needs_redraw") def causes_resize(data_member): """Creates a data member that sets needs_resize to True when changed.""" return set_on_change(data_member, "needs_resize") def causes_reposition(data_member): """Creates a data member that sets needs_reposition to True when changed.""" return set_on_change(data_member, "needs_reposition") def causes_update(data_member): """Creates a data member that sets needs_update to True when changed.""" return set_on_change(data_member, "needs_update") def propogate_need(data_member): """Creates a function that can be passed to call_on_change. When the data member changes to True, needs_update is set, and the True value is passed to all descendants.""" def do_propogate(self): if getattr(self, data_member, False): self.needs_update = True descendants = self.children[:] while descendants: child = descendants.pop() # Propogate to this child and its descendants, if needed. if not getattr(child, data_member, False): setattr(child, data_member, True) child._needs_update = True descendants += child.children return do_propogate class Widget(object): """A Widget is a GUI element. It can have one parent and any number of children.""" needs_redraw = call_on_change("_needs_redraw", propogate_need("_needs_redraw")) needs_resize = call_on_change("_needs_resize", propogate_need("_needs_resize")) needs_reposition = call_on_change("_needs_reposition", propogate_need("_needs_reposition")) needs_rebuild = causes_update("_needs_rebuild") def _propogate_update(self): if self._needs_update: target = self.parent while target and not target._needs_update: target._needs_update = True target = target.parent needs_update = call_on_change("_needs_update", _propogate_update) pos = causes_reposition("_pos") size = causes_resize("_size") anchor = causes_reposition("_anchor") visible = causes_redraw("_visible") def __init__(self, parent, pos, size, anchor = constants.TOP_LEFT): self.parent = parent self.children = [] self.pos = pos self.size = size self.anchor = anchor # "It's a widget!" self.add_hooks() self.is_above_mask = False self.self_mask = False self.mask_children = False self.visible = True self.needs_rebuild = True self.collision_rect = None # Set automatically by other properties. #self.needs_redraw = True #self.needs_full_redraw = True def add_hooks(self): if self.parent is not None: self.parent.children.append(self) # Won't trigger on the call from __init__, since there are no # children yet, but add_hooks may be explicitly called elsewhere to # undo remove_hooks. for child in self.children: child.add_hooks() def remove_hooks(self): # Localize the children list to avoid index corruption and O(N^2) time. children = self.children self.children = [] # Recurse to the children. for child in children: child.remove_hooks() if self.parent is not None: try: self.parent.children.remove(self) except ValueError: pass # Wasn't there to start with. def _parent_size(self): if self.parent == None: return g.screen_size else: return self.parent.real_size def _calc_size(self): """Internal method. Calculates and returns the real size of this widget. Override to create a dynamically-sized widget.""" parent_size = self._parent_size() size = list(self.size) for i in range(2): if size[i] > 0: size[i] = int(size[i] * g.screen_size[i]) elif size[i] < 0: size[i] = int( (-size[i]) * parent_size[i] ) return tuple(size) def get_real_size(self): """Returns the real size of this widget. To implement a dynamically-sized widget, override _calc_size, which will be called whenever the widget is resized, and set needs_resize when appropriate.""" return self._real_size real_size = property(get_real_size) def get_real_pos(self): """Returns the real position of this widget on its parent.""" vanchor, hanchor = self.anchor parent_size = self._parent_size() my_size = self.real_size if self.pos[0] >= 0: hpos = int(self.pos[0] * g.screen_size[0]) else: hpos = - int(self.pos[0] * parent_size[0]) if hanchor == constants.LEFT: pass elif hanchor == constants.CENTER: hpos -= my_size[0] // 2 elif hanchor == constants.RIGHT: hpos -= my_size[0] if self.pos[1] >= 0: vpos = int(self.pos[1] * g.screen_size[1]) else: vpos = - int(self.pos[1] * parent_size[1]) if vanchor == constants.TOP: pass elif vanchor == constants.MID: vpos -= my_size[1] // 2 elif vanchor == constants.BOTTOM: vpos -= my_size[1] return (hpos, vpos) real_pos = property(get_real_pos) def _make_collision_rect(self): """Creates and returns a collision rect for this widget.""" pos = array(self.real_pos) if self.parent: pos += self.parent.collision_rect[:2] return pygame.Rect(pos, self.real_size) def is_over(self, position): if position != (0,0): return self.collision_rect.collidepoint(position) else: return False def remake_surfaces(self): """Recreates the surfaces that this widget will draw on.""" size = self.real_size pos = self.real_pos if self.parent != None: try: self.surface = self.parent.surface.subsurface(pos + size) except ValueError: print "Warning: %r can't fit on its parent." % self print pos, size, self.parent.pos, self.parent.size wanted_rect = pos + size available_rect = self.parent.surface.get_rect() compromise = available_rect.clip(wanted_rect) self.surface = self.parent.surface.subsurface(compromise) else: if g.fullscreen: flags = pygame.FULLSCREEN else: flags = 0 self.surface = pygame.display.set_mode(size, flags) self.surface.fill( (0,0,0,255) ) g.fade_mask = pygame.Surface(size, 0, g.ALPHA) g.fade_mask.fill( (0,0,0,175) ) def prepare_for_redraw(self): # First we handle any substance changes. if self.needs_rebuild: self.rebuild() # Then size changes. if self.needs_resize: self.resize() # Then position changes. if self.needs_reposition: self.reposition() # And finally we recurse to our descendants. for child in self.children: if child.needs_update and child.visible: child.prepare_for_redraw() def maybe_update(self): if self.needs_update: self.update() def update(self): # First we prepare everything for its redraw (if needed). self.prepare_for_redraw() self._update() # Oh, and if this is the top-level widget, we should flip the display. if not self.parent: pygame.display.flip() def _update(self): redrew_self = self.needs_redraw if self.needs_redraw: self.redraw() # Then we update any children below our fade mask. check_mask = [] above_mask = [] for child in self.children: if child.needs_update and child.visible: if child.is_above_mask: above_mask.append(child) else: check_mask += child._update() # Next, we handle the fade mask. if getattr(self, "faded", False): while check_mask: child = check_mask.pop() if not child.self_mask: child.surface.blit(g.fade_mask, (0,0)) elif child.mask_children: check_mask += child.children # And finally we update any children above the fade mask. for child in above_mask: child._update() # Update complete. self.needs_update = False # Any descendants we didn't check for masking get passed upwards. if redrew_self: # If we redrew this widget, we tell our parent to consider it # instead. The parent will recurse down to any descendants if # needed, and redraw already propogated down to them. check_mask = [self] return check_mask def rebuild(self): self.needs_rebuild = False def resize(self): self._real_size = self._calc_size() self.needs_resize = False self.needs_reposition = True self.needs_redraw = True def reposition(self): self.needs_reposition = False old_rect = self.collision_rect self.collision_rect = self._make_collision_rect() if not self.parent: self.remake_surfaces() self.needs_redraw = True elif ( (getattr(self, "surface", None) is None) or (old_rect is None) or (self.surface.get_parent() is not self.parent.surface) or (not self.collision_rect.contains(old_rect)) ): self.remake_surfaces() self.parent.needs_redraw = True elif self.collision_rect != old_rect: self.remake_surfaces() self.needs_redraw = True def redraw(self): self.needs_redraw = False if self.parent is None: self.surface.fill((0,0,0,255)) def add_handler(self, *args, **kwargs): """Handler pass-through.""" if self.parent: self.parent.add_handler(*args, **kwargs) def remove_handler(self, *args, **kwargs): """Handler pass-through.""" if self.parent: self.parent.remove_handler(*args, **kwargs) def add_key_handler(self, *args, **kwargs): """Handler pass-through.""" if self.parent: self.parent.add_key_handler(*args, **kwargs) def remove_key_handler(self, *args, **kwargs): """Handler pass-through.""" if self.parent: self.parent.remove_key_handler(*args, **kwargs) def add_focus_widget(self, *args, **kwargs): """Focus pass-through.""" if self.parent: self.parent.add_focus_widget(*args, **kwargs) def remove_focus_widget(self, *args, **kwargs): """Focus pass-through.""" if self.parent: self.parent.remove_focus_widget(*args, **kwargs) def took_focus(self, *args, **kwargs): """Focus pass-through.""" if self.parent: self.parent.took_focus(*args, **kwargs) class BorderedWidget(Widget): borders = causes_redraw("_borders") border_color = causes_redraw("_border_color") background_color = causes_redraw("_background_color") def __init__(self, parent, *args, **kwargs): self.parent = parent self.children = [] self.borders = kwargs.pop("borders", ()) self.border_color = kwargs.pop("border_color", g.colors["white"]) self.background_color = kwargs.pop("background_color", g.colors["blue"]) super(BorderedWidget, self).__init__(parent, *args, **kwargs) def rebuild(self): super(BorderedWidget, self).rebuild() if self.parent and self.background_color == g.colors["clear"]: self.parent.needs_redraw = True def reposition(self): super(BorderedWidget, self).reposition() if self.parent and self.background_color == g.colors["clear"]: self.parent.needs_redraw = True def redraw(self): super(BorderedWidget, self).redraw() # Fill the background. if self.background_color != g.colors["clear"]: self.surface.fill( self.background_color ) self.draw_borders() def draw_borders(self): # Draw borders my_size = self.real_size horiz = (my_size[0], 1) vert = (1, my_size[0]) for edge in self.borders: if edge == constants.TOP: self.surface.fill(self.border_color, (0, 0, my_size[0], 1) ) elif edge == constants.LEFT: self.surface.fill(self.border_color, (0, 0, 1, my_size[1]) ) elif edge == constants.RIGHT: self.surface.fill(self.border_color, (my_size[0]-1, 0) + my_size) elif edge == constants.BOTTOM: self.surface.fill(self.border_color, (0, my_size[1]-1) + my_size) class FocusWidget(Widget): has_focus = causes_redraw("_has_focus") def __init__(self, *args, **kwargs): super(FocusWidget, self).__init__(*args, **kwargs) self.has_focus = True self.took_focus(self) def add_hooks(self): super(FocusWidget, self).add_hooks() self.parent.add_focus_widget(self) def remove_hooks(self): super(FocusWidget, self).remove_hooks() self.parent.remove_focus_widget(self) singularity-0.30c/code/graphics/__init__.pyc0000644000175000017500000000024611574774324021757 0ustar trcarlsontrcarlson )~Ic@sdS(N((((sO/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/__init__.pytssingularity-0.30c/code/graphics/listbox.py0000644000175000017500000002105411574774324021541 0ustar trcarlsontrcarlson#file: listbox.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the listbox widget. import pygame import constants import g import widget import text import scrollbar class Listbox(widget.FocusWidget, text.SelectableText): list = widget.causes_rebuild("_list") align = widget.causes_redraw("_align") list_size = widget.causes_rebuild("_list_size") list_pos = widget.causes_rebuild("_list_pos") def __init__(self, parent, pos, size, anchor=constants.TOP_LEFT, list=None, list_pos=0, list_size=-20, borders=constants.ALL, align=constants.CENTER, **kwargs): super(Listbox, self).__init__(parent, pos, size, anchor = anchor, **kwargs) self.list = list or [] self.display_elements = [] self.borders = borders self.align = align self.list_size = list_size self.list_pos = list_pos self.auto_scroll = True self.scrollbar = scrollbar.UpdateScrollbar(self, update_func = self.on_scroll) def add_hooks(self): super(Listbox, self).add_hooks() self.parent.add_handler(constants.CLICK, self.on_click, 90) self.parent.add_key_handler(pygame.K_UP, self.got_key) self.parent.add_key_handler(pygame.K_DOWN, self.got_key) self.parent.add_key_handler(pygame.K_PAGEUP, self.got_key) self.parent.add_key_handler(pygame.K_PAGEDOWN, self.got_key) def remove_hooks(self): super(Listbox, self).remove_hooks() self.parent.remove_handler(constants.CLICK, self.on_click) self.parent.remove_key_handler(pygame.K_UP, self.got_key) self.parent.remove_key_handler(pygame.K_DOWN, self.got_key) self.parent.remove_key_handler(pygame.K_PAGEUP, self.got_key) self.parent.remove_key_handler(pygame.K_PAGEDOWN, self.got_key) def on_scroll(self, scroll_pos): self.needs_rebuild = True def on_click(self, event): if self.collision_rect.collidepoint(event.pos): self.has_focus = True self.took_focus(self) # Figure out which element was clicked... local_vert_abs = event.pos[1] - self.collision_rect[1] local_vert_pos = local_vert_abs / float(self.collision_rect.height) index = int(local_vert_pos * len(self.display_elements)) # ... and select it. self.list_pos = self.safe_pos(index + self.scrollbar.scroll_pos) def safe_pos(self, raw_pos): return max(0, min(len(self.list) - 1, raw_pos)) def got_key(self, event): if not self.has_focus: return if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: new_pos = self.list_pos - 1 elif event.key == pygame.K_DOWN: new_pos = self.list_pos + 1 elif event.key == pygame.K_PAGEUP: new_pos = self.list_pos - (self.scrollbar.window - 1) elif event.key == pygame.K_PAGEDOWN: new_pos = self.list_pos + (self.scrollbar.window - 1) else: return self.list_pos = self.safe_pos(new_pos) self.scrollbar.scroll_to(self.list_pos) raise constants.Handled def num_elements(self): # If self.list_size is negative, we interpret it as a minimum height # for each element and calculate the number of elements to show. list_size = self.list_size if list_size < 0: min_height = -list_size list_size = max(1, self._make_collision_rect().height // min_height) return list_size def remake_elements(self): list_size = self.num_elements() current_size = len(self.display_elements) if current_size > list_size: # Remove the excess ones. for child in self.display_elements[list_size:]: child.remove_hooks() del self.display_elements[list_size:] elif current_size < list_size: if current_size > 0: self.display_elements[-1].borders = \ (constants.LEFT, constants.TOP) # Create the new ones. for i in range(list_size - current_size): self.display_elements.append(self.make_element()) self.display_elements[-1].borders = (constants.TOP, constants.LEFT, constants.BOTTOM) # Move the scrollbar to the end so that it gets drawn on top. self.children.remove(self.scrollbar) self.children.append(self.scrollbar) def make_element(self): return text.SelectableText(self, None, None, anchor=constants.TOP_LEFT, borders=(constants.TOP, constants.LEFT), border_color=self.border_color, selected_color=self.selected_color, unselected_color=self.unselected_color, align=self.align) def resize(self): super(Listbox, self).resize() if self.num_elements() != len(self.display_elements): self.remake_elements() self.scrollbar.resize() self.rebuild() def rebuild(self): self.list_pos = self.safe_pos(self.list_pos) if self.needs_resize: self.resize() return window_size = len(self.display_elements) list_size = len(self.list) self.scrollbar.window = len(self.display_elements) self.scrollbar.elements = list_size if self.auto_scroll: self.auto_scroll = False self.scrollbar.center(self.list_pos) self.scrollbar.rebuild() scrollbar_width = self.scrollbar.real_size[0] my_width = self.real_size[0] scrollbar_rel_width = scrollbar_width / float(my_width) offset = self.scrollbar.scroll_pos for index, element in enumerate(self.display_elements): list_index = index + offset # Position and size the element. element.pos = (0, -index / float(window_size)) element.size = (-1 + scrollbar_rel_width, -1 / float(window_size)) # Set up the element contents. element.selected = (list_index == self.list_pos) self.update_element(element, list_index) self.needs_redraw = True super(Listbox, self).rebuild() def update_element(self, element, list_index): if 0 <= list_index < len(self.list): element.text = self.list[list_index] else: element.text = "" class UpdateListbox(Listbox): def _on_selection_change(self): self.update_func(self.list_pos) _list_pos = widget.call_on_change("__list_pos", _on_selection_change) def __init__(self, *args, **kwargs): self.update_func = kwargs.pop("update_func", lambda value: None) super(UpdateListbox, self).__init__(*args, **kwargs) class CustomListbox(UpdateListbox): remake_func = widget.causes_rebuild("_remake_func") rebuild_func = widget.causes_rebuild("_rebuild_func") def __init__(self, parent, *args, **kwargs): self.parent = parent self.remake_func = kwargs.pop("remake_func", lambda value: None) self.rebuild_func = kwargs.pop("rebuild_func", lambda value: None) super(CustomListbox, self).__init__(parent, *args, **kwargs) def make_element(self): base = super(CustomListbox, self).make_element() self.remake_func(base) return base def update_element(self, element, list_index): if 0 <= list_index < len(self.list): self.rebuild_func(element, self.list[list_index], self.key_list[list_index]) else: self.rebuild_func(element, None, None) singularity-0.30c/code/graphics/scrollbar.py0000644000175000017500000001243211574774324022040 0ustar trcarlsontrcarlson#file: scrollbar.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the scrollbar widget. import pygame import constants import g import widget import button import slider class _ArrowButton(button.FunctionButton, button.ImageButton): def __init__(self, parent, *args, **kwargs): self.first = kwargs.pop("first", True) self.horizontal = kwargs.pop("horizontal", False) kwargs["function"] = parent.adjust kwargs["args"] = (self.first,) super(_ArrowButton, self).__init__(parent, *args, **kwargs) base_image = g.images['arrow.png'] if self.first and self.horizontal: angle = 90 self.borders = (constants.LEFT, constants.TOP, constants.BOTTOM) elif self.first: angle = 0 self.borders = (constants.LEFT, constants.TOP, constants.RIGHT) elif self.horizontal: angle = -90 self.borders = (constants.TOP, constants.RIGHT, constants.BOTTOM) else: angle = -180 self.borders = (constants.RIGHT, constants.BOTTOM, constants.LEFT) rotated_image = pygame.transform.rotate(base_image, angle) self.image.image = rotated_image.convert_alpha() class Scrollbar(widget.Widget): scroll_pos = widget.causes_rebuild("_scroll_pos") elements = widget.causes_rebuild("_elements") window = widget.causes_rebuild("_window") horizontal = widget.causes_rebuild("_horizontal") def __init__(self, parent, pos = (-1,0), size = (.025, -1), anchor = constants.TOP_RIGHT, scroll_pos = 0, elements = 15, window = 5, horizontal = False): super(Scrollbar, self).__init__(parent, pos, size, anchor) self.scroll_pos = scroll_pos self.elements = elements self.window = window self.horizontal = horizontal self.slider = slider.UpdateSlider(self, (-.5,-.5), None, anchor = constants.MID_CENTER, horizontal = horizontal, update_func = self.on_change) self.button1 = _ArrowButton(self, (0,0), None, anchor = constants.TOP_LEFT, first = True, horizontal = horizontal, priority = 90) self.button2 = _ArrowButton(self, (-1,-1), None, anchor = constants.BOTTOM_RIGHT, first = False, horizontal = horizontal, priority = 90) def resize(self): super(Scrollbar, self).resize() if self.horizontal: long = self.real_size[0] short = self.real_size[1] size = short / float(long) self.button1.size = (-size, -1) self.button2.size = (-size, -1) self.slider.size = ((size * 2) - 1, -1) else: long = self.real_size[1] short = self.real_size[0] size = short / float(long) self.button1.size = (-1, -size) self.button2.size = (-1, -size) self.slider.size = (-1, (size * 2) - 1) def rebuild(self): self.slider.slider_max = slider.calc_max(self.elements, self.window) self.scroll_pos = min(self.scroll_pos, self.slider.slider_max) self.slider.slider_pos = self.scroll_pos self.slider.slider_size = self.window self.needs_redraw = True super(Scrollbar, self).rebuild() def adjust(self, lower): if lower: self.slider.slider_pos = self.slider.safe_pos(self.scroll_pos - 1) else: self.slider.slider_pos = self.slider.safe_pos(self.scroll_pos + 1) def center(self, element): self.slider.slider_pos = self.slider.safe_pos(element - self.window//2) def scroll_to(self, element): if element < self.scroll_pos: self.slider.slider_pos = self.slider.safe_pos(element) elif element >= self.scroll_pos + self.window: self.slider.slider_pos = self.slider.safe_pos(element - self.window + 1) def on_change(self, value): self.scroll_pos = value class UpdateScrollbar(Scrollbar): def __init__(self, *args, **kwargs): self.update_func = kwargs.pop("update_func", lambda value: None) super(UpdateScrollbar, self).__init__(*args, **kwargs) def on_change(self, value): self.scroll_pos = value self.update_func(value) singularity-0.30c/code/graphics/dialog.pyc0000644000175000017500000006414711574774324021471 0ustar trcarlsontrcarlson 6b)Lc @sddkZddkZddkZddkZddkZddkZddkZddkZddkZh dei 6dei 6dei 6dei 6dei 6dei6dei6d ei6d ei6Zd Zd Zd ZdZddZdZdeifdYZdefdYZdefdYZdefdYZdefdYZdefdYZ defdYZ!defd YZ"d!e fd"YZ#d#e#fd$YZ$d%efd&YZ%dS('iNiiiiiiiii cCsO|\}}tii\}}||}||}tii||fdS(N(tpygametmousetget_postset_pos(t.0tdxtdytold_xtold_ytxty((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt move_mouse"s    cCs]|o ti}n ti}tii|hdd6tiid6}tii|dS(Nitbuttontpos(RtMOUSEBUTTONDOWNt MOUSEBUTTONUPteventtEventRRtpost(tdownttypet click_event((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt fake_click(s   ,cCsptiitih|d6dd6}tiitih|d6dd6}tii|tii|dS(Ntkeytunicode(RRRtKEYDOWNtNonetKEYUPR(Rt down_eventtup_event((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pytfake_key0s &cCsVt|i}d}|itijop|djotdq|djotdq|djotdq|djotdqn|djot|itijnO|d jo ti }n5|d jo ti }n|d jo ti }n|dj o:ti i |ih|d 6dd 6}ti i|ndS(Niii iiiiiii iRR(ii (ii(i i(ii(tKEYPADRRRRRR Rt constantstXO1_XtXO1_Ot XO1_SQUARERRR(RRtnew_keyt new_event((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt handle_ebook7s,             &cCsd}|}x0|o(t|to |}Pn|i}qW|o|in|i}|o|intti_ |S(N( Rt isinstancetDialogtparentt lost_focustshowtregained_focustTruettopt needs_redraw(tdialogR)t parent_dialogttargettretval((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt call_dialogRs  cCs%x|D]}ti||qWdS(N(tbisecttinsort(t sorted_listtitemstitem((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt insort_allgsR(cBseZdZdZeidZdddfZddde i dZ d Z d Z d Zd Zd ZedZdZdZdZddZdZddZdZdZdZdZRS(sFA Dialog is a Widget that has its own event loop and can be faded out.t_fadediig?g?ig?cKs|idd|iddtt|i|||||t|_t|_t|_t|_ t|_ d|_ h|_ h|_|iti|iddS(Ntbackground_coloritbordersi(iiii((t setdefaulttsuperR(t__init__tFalsetvisibletfadedR-t is_above_maskt self_maskt needs_remaskRt needs_timerthandlerst key_handlerst add_handlerR tCLICKt fake_escape(tselfR)R tsizetanchortkwargs((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@vs"        cCs d|_t|_|idS(N(Rtkey_downR-RCt stop_timer(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR*s  cCs.|idjottitindS(Ni(R RRtK_ESCAPER tHandled(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRLs cCs!t|_|i|idS(N(RARCt start_timert fake_mouse(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR,s  cCs*|idjo tdn |t_dS(s*Makes this dialog be the top-level dialog.s4Dialogs with parents cannot be the top-level dialog.N(R)Rt ValueErrorR(R.(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pytmake_tops cCstt|idS(s5Recreates the surfaces that this widget will draw on.N(R?R(tremake_surfaces(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRYscCsk|idjo%t|iitit|_n|ip|o!ti i ti dt i ndS(Ni(RGRtboolRHtgetR tTICKRARttimet set_timert USEREVENTtgtFPS(RMtforce((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRUs%cCstiitiddS(Ni(RR]R^R_(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRRscCs|i|idS(N(RRRU(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt reset_timers cCsddkl}t|_d|_|itii |i |i o:|i t iit itii t iinx\toTtii |t ii}|i |}|tijot|_|SqW|idS(s3Shows the dialog and enters an event-handling loop.i(t play_musicN(tcode.gRdR-RBRRQRUR(R.t maybe_updateRVRGthandleRRRR_tdisplaytfliptwaitR t NO_RESULTRARR(RMRdRtresult((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR+s(          idcCs)ti|ii|g||fdS(s:Adds a handler of the given type, with the given priority.N(R5R6RHR>(RMRthandlertpriority((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRJscCsPg}|ii|gD]"}|d|jo ||qq~|i|(RMRRmRn((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pytadd_key_handlerscCsPg}|ii|gD]"}|d|jo ||qq~|i|Removes all instances of the given handler from the given key.iN(RIR[(RMRRmRoRp((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pytremove_key_handlers c Csg}|itijoutidtitiiti|i i t ig}|i do#t ||i i t igqnV|itijoytiiti|i i t ig}|io@|id7_|idjod|_|i|iqqn|ititifjoS|i i t ig}|itijot ||i i t ig|io#t ||ii |ignt ||ii |ig|i|j o&||_d|_|idtqXnRd |_|it ||i i t igt ||ii |igtio#|itjodt fg}qn[|iti!jo*|i"d jo8|i"djo ti#}n ti$}t%|t i&Sg|i i t i'g}ti}|i(}|i"}|i)\}}} |||f|_)|| jos||djobt*|d|dt*|d|d} | d jo#t ||i i t i+gqqn|iti,jo t-n|i.||S( sSends an event through all the applicable handlers, returning constants.NO_RESULT if the event goes unhandled or is handled without requesting the dialog to exit. Otherwise, returns the value provided by the handler.g?iiiiRbig?i N(ii(/RRt MOUSEMOTIONR]tsleepR`RaRtclearRHR[R tbuttonsR:tDRAGR_R\RQtrepeat_counterRgRRtKEYRRIRRUR-RRct ebook_modeRR&RR tK_PAGEUPt K_PAGEDOWNRRkRKR t last_clicktabst DOUBLECLICKtQUITt SystemExitt call_handlers( RMRRHRtwhentwhereR told_whent old_wheret old_buttontdist((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRgsl '   #           % cCs0|iitig}|i|dddS(sFakes a MOUSEMOTION event. MOUSEMOTION handlers must be able to handle a None event, in order to support this method.RN(RHR[R RtRR(RMRH((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRVIscCswxm|D]e\}}y||Wqtij oPqtij o#}|io |idSdSqXqWtiS(Ni(R RTt ExitDialogtargsRk(RMRHRRnRmte((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyROs    N(ii(g?g?(ig?(t__name__t __module__t__doc__RR.twidgett causes_redrawRCR~R t TOP_CENTERR@R*RLR,RXRYRARURRRcR+RJRqRrRsRgRVR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR(ks,               g t FocusDialogcBs5eZdZdZdZdZdZRS(cOsHg|_d|_tt|i|||iti|i ddS(Ni( t focus_listRt current_focusR?RR@RrRtK_TABt change_focus(RMRRP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@es  cCs|ii|dS(N(Rtappend(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pytadd_focus_widgetmscCs.y|ii|Wntj onXdS(N(RtremoveRW(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pytremove_focus_widgetpscCs=|idj o |i|j ot|i_n||_dS(N(RRRAt has_focus(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt took_focusvs cCsr|dj o|itijodSt|idjo tinDt|idjo-t|id_ |id|_ tint ti i ti@}|i dj ot|i _ n|i |ijo|o d}qId}nU|ii|i }|o|d}n+|d}|t|ijo d}n|i||_ t|i _ tidS(Niii(RRRRtlenRR RTR-RRRZRtget_modst KMOD_SHIFTRAtindex(RMRt backwardsRt old_index((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR{s0        (RRR@RRRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRds     t NullDialogcBseZdZdZRS(sQNullDialog, for when you absolutely, positively need to do nothing at all.cCsdS(N((RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR+s(RRRR+(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRst TopDialogcBseZdZRS(cOsEtt|i||d|_d|_ti|_|idS(Nii(ii(ii( R?RR@RNR R tTOP_LEFTRORX(RMRRP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@s    (RRR@(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRst TextDialogcBseZddeidZRS(g?g?g?cKs|idti|idti|idd|idtid|idtitt|i |||||dS(Ntvaligntalignt shrink_factorg)\(?R<t dark_blueR=( R>R tTOPtLEFTR`tcolorstALLR?RR@(RMR)R RNRORP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@s (g?g?(g?g?(RRR RR@(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRst YesNoDialogcBsJeZeidZeidZdZdZdZdZ RS(t _yes_typet_no_typec Os||_|idd|_|idd|_|idt|_|idt|_tt|i |||t i |ddd t i d td t|_t i |ddd t id td t|_|iti|i|iti|i|iti|idS(Ntyes_typetyestno_typetnot invert_entert invert_escapeggGzg333333ӿROt exit_codetdefaultg(ggGz(g333333ӿg(ggGz(g333333ӿg(R)tpopRRRARRR?RR@R tExitDialogButtonR t BOTTOM_LEFTR-t yes_buttont BOTTOM_RIGHTt no_buttonRrRtK_RETURNt on_returnt K_KP_ENTERRSt on_escape(RMR)RRP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@s   cCswtt|iti|i|i_ti|id|i_ti|i |i _ti|i d|i _dS(Nt_hotkey( R?RtrebuildR`RwRRttextthotkeyRR(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs cCsQ|o|itijodS|io|ii|n|ii|dS(N(RRRRRtactivate_with_soundR(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs  cCsQ|o|itijodS|io|ii|n|ii|dS(N(RRRRRRR(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs  ( RRRtcauses_rebuildRRR@RRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs    t MessageDialogcBs2eZeidZdZdZdZRS(t_ok_typecKs||_|idd|_tt|i||ti|dd dti |_ |i t i |i|i t i|idS( Ntok_typetokggGzg333333ӿgRO(ggGz(g333333ӿg(R)RRR?RR@R RR t BOTTOM_CENTERt ok_buttonRrRRRR(RMR)RP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@s cCs,|itijodS|ii|dS(N(RRRRR(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRscCsGtt|iti|i|i_ti|id|i_dS(NR( R?RRR`RwRRRR(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs(RRRRRR@RR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs tTextEntryDialogcBs2eZddZdZdZddZRS(g?g?c Ks|idd|_tt|i|d||d|_ti|dddti d t i d|_ t i|ddd t id d|i|_|iti|i|iti|i|iti|idS(Nt default_texttRNg?iggR=t base_fontg= ףp=g ףp= ǿRRtfunction(ig(gg(g= ףp=g(g ףp= ǿg(RRR?RR@RRt EditableTextR RR`tfontt text_fieldR tFunctionButtonRwt return_textRRrRRRRStreturn_nothing(RMR)RNRP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@s   cCs7|i|i_t|i|i_tt|iS(N(RRRRt cursor_posR?RR+(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR+scCs/|o|itijodStiddS(NR(RRRR R(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRscCs5|o|itijodSti|iidS(N(RRRR RRR(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR$s(g?g?N(RRR@R+RRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs   t ChoiceDialogcBsMeZeidZdZdZdZdZdZ dZ RS(t_listcOs||_|idg|_|idd|_|idd|idd|idtidtt |i ||||i |_ |i ti|id |i|i_d|i_dS( NtlistRRRRtbackR<Rvi(R)RRRRR>R`RR?RR@t make_listboxtlistboxRJR Rthandle_double_clicktreturn_list_posRtexit_code_funcRR(RMR)RRP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@+s cCs.|ii|io|iidndS(N(Rtis_overR Rt activatedR(RMR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR;scCsti|dddtiS(Niig333333RO(ii(ig333333(RtListboxR R(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR?scCs |iiS(N(Rtlist_pos(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRCscCst|itjo|i|i_nUt|itjo2|i|ijo|ii|i|i_n d|i_t|i_ t t |i S(Ni( RRtintRRtstrRRR-t auto_scrollR?RR+(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR+Fs)  cCs&|i|i_tt|idS(N(RRR?RR(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRQs( RRRRRR@RRRR+R(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR)s     tChoiceDescriptionDialogcBs;eZeidZdZdZdZdZRS(t _key_listcOsw||_|idd|_|idd|_tt|i|||ti |d d dt i |_ dS( Ntkey_listt desc_funccSstS((R(tpaneR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyt\siigܿg333333RO(ii(gܿg333333( R)RRRRR?RR@RtBorderedWidgetR t TOP_RIGHTtdescription_pane(RMR)RRP((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@Ys  cCs%ti|dddtid|iS(Nig(\g333333ROt update_func(ii(g(\g333333(Rt UpdateListboxR Rt handle_update(RM((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRes cCst|i_|ii}d|jot|ijnoa|io@t|it|ijp td|i|ii}q|i|ii}nd}|i i g|i _ |i i |i |i |tt|idS(Nis2Key list must be at least as long as display list.(R-Rt needs_rebuildRRRRtAssertionErrorRRt remove_hookstchildrent add_hooksRR?RR(RMRR((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRjs  ' "   cCs t|_dS(N(R-R(RMR9((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs( RRRRRR@RRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRVs   tSimpleMenuDialogcBs eZeidZdZRS(t_widthc OsO|id}|idd}tt|i||d|_d|_ti|_t |}d|d}||_ t i |d|i d |fd ti d tid d tiddti|_d}xv|D]n}|idj o|in|i|_|id|f|_|i df|_d|_|d7}qWdS(NRwtwidthg?iigQ?g{Gz?gg{Gz?ROR<Rt border_colortwhiteR=g?i(ii(ii(gg(RR?RR@RNR R RRORRRRt MID_CENTERR`RRt button_panelR)RRRt text_size( RMRRPRwRt num_buttonstheightty_posR ((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyR@s2           (RRRRRR@(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyRs(&R5R]RR R`RRR RtK_KP1tK_KP2tK_KP3tK_KP4tK_KP5tK_KP6tK_KP7tK_KP8tK_KP9RR RRR&RR4R:tTextR(RRRRRRRRRR(((sM/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/dialog.pyts4         `      ;  2"-0singularity-0.30c/code/graphics/constants.pyc0000644000175000017500000000355611574774324022243 0ustar trcarlsontrcarlson 6b)Lc@s9ed\ZZZedd\ZZZeefZeefZeefZ eefZ eefZ eefZ eefZ eefZeefZeeeefZdefdYZeZed\ZZZZZZZZdefdYZdefdYZeZeZ eZ!d S( iit _NoResultcBseZdZdZRS(cCst|t|jS(N(ttype(tselftother((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/constants.pyt__eq__*scCst|t|jS(N(R(RR((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/constants.pyt__ne__,s(t__name__t __module__RR(((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/constants.pyR)s itHandledcBseZRS((RR(((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/constants.pyR7st ExitDialogcBseZRS((RR(((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/constants.pyR 8sN("trangetTOPtMIDtBOTTOMtLEFTtCENTERtRIGHTtTOP_LEFTt TOP_CENTERt TOP_RIGHTtMID_LEFTt MID_CENTERt MID_RIGHTt BOTTOM_LEFTt BOTTOM_CENTERt BOTTOM_RIGHTtALLtobjectRt NO_RESULTtKEYtKEYDOWNtKEYUPtCLICKt DOUBLECLICKt MOUSEMOTIONtDRAGtTICKt ExceptionRR tXO1_XtXO1_Ot XO1_SQUARE(((sP/home/trcarlson/Desktop/python/endg-singularity/trunk/code/graphics/constants.pyts&          $  singularity-0.30c/code/item.pyc0000644000175000017500000000630711574774324017362 0ustar trcarlsontrcarlson )~Ic@sBddkZdeifdYZdeifdYZdS(iNt ItemClasscBseZdZdZRS(c Cstt|i||||dd||_||_||_|idgjo.dddddd d d d d dg |_n|idgjoddddddg|_ndS(Nttypetitemtalls N AMERICAs S AMERICAtEUROPEtASIAtAFRICAt ANTARCTICtOCEANtMOONs FAR REACHEStTRANSDIMENSIONALt AUSTRALIAtpop(tsuperRt__init__t item_typet item_qualt buildable(tselftnamet descriptiontcostt prerequisitesRRR((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyRs     cCsVddk}tt|i}|idjo!|idd|i|iS|S(Nitcpus---sGenerates %s CPU. ---(tgR Rtget_infoRtreplacet add_commasR(RRt basic_text((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyR(s   (t__name__t __module__RR(((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyRs tItemcBs2eZdddZdZdZdZRS(icCs2tt|i|||i|_||_dS(N(R RRRtbase(RRR tcount((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyR1s cCsMtt|i||djo&ddk}|i|ii|_ndS(Ngp= ף@i(R Rt convert_fromRtitemsRtid(Rt load_versionR((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyR"6s  cCs_tt|i|io>|iidjo|i|i|i_n|ii ndS(NR( R RtfinishR RRRR!traw_cput recalc_cpu(R((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyR&<s  cCs t|to|i|ijo|i|ijo|idjo|S|i|i}|i|i7_t|iti |iti |ti <|iti |iti <||_|i|i7_d|i_ |ii t |_ |iddd|StSdS(Ni(t isinstanceRR RR!t cost_paidt total_costtmintbuyabletlaborR'R(tFalsetdonetwork_ontNotImplemented(Rtotherttotal_cost_paid((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyt__iadd__Cs"#    N(RRtNoneRR"R&R5(((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyR0s  (R-t BuyableClassRtBuyableR(((sB/home/trcarlson/Desktop/python/endg-singularity/trunk/code/item.pyts singularity-0.30c/code/safety.pyc0000644000175000017500000000601111574774324017707 0ustar trcarlsontrcarlson )~Ic @sddkZddkZddkZddkZddkZddkZdZeiidoOei i dZ ei i e pei e nei ie dZneiieiedefdYZddZdZd hdd Zd Zd ZdS( iNs error.logtHOMEs ~/.endgametBuffercBseZddZdZRS(tcCs ||_dS(N(tdata(tselftprefix((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyt__init__*scCs|i|7_dS(N(R(Rt unbuffered((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pytwrite,s(t__name__t __module__RR(((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyR)s cCs<|djoti}nti|dtitiS(Nt (tNonettimetctimettznametdaylight(twhen((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyt get_timestamp/s cCs+tii|tii|ddS(Ns (tloggingt getLoggerterrortsyststderrR(t error_message((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyt log_error4scCs~y|||SWnftj oZ}t|tontd|itf}tid|t|i |SXdS(Ns Exception in function %s at %s: tfile( t Exceptiont isinstancet SystemExitRR Rt tracebackt print_excRR(tfunctargstkwargston_errortetbuffer((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyt safe_call8s cs fdS(Ncs t|S((t_safe(R (R#(sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pytYs((R#((R#sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pytsafeXscsfdS(Ncst||S((R&(R!R"(R#R (sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyR(\s((R R#((R#R sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyR'[s((RR RRtostos.pathtlogpathtenvironthas_keytpatht expandusert prefs_dirtisdirtmakedirstjoinRt addHandlert FileHandlertobjectRR RRR&R)R'(((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/safety.pyts$         singularity-0.30c/code/g.pyc0000644000175000017500000007570011574774324016655 0ustar trcarlsontrcarlson McD@sdZddkZddkZddkZddkZddkZddkZddkZddkZddk Z ddk Z ddk Z ddk Z ddk Z ddkZddkZddkZddkZeiZdZdZdlZdZdmZdoZdZdaeZdZe Z!dZ"ea#dZ$e$da%d a&d a'd a(d Z)hZ*hZ+ha,ha-d Z.dZ/da0ha1dZ2ddZ3dZ4e dZ5dZ6dpdqdrdsfZ7dtZ8dZ9dZ:dZ;d Z<d!Z=d"Z>ed#Z?d$Z@d%ZAe d&ZBe d'ZCd(ZDd)ZEhd*d+6d,d(6ZFddkGZGddkHZIeJd-e iKd.e iKd/eGiLd0eMd1eNd2eNd3eiOd4e iPd5e iQd6e iQd7e iRd8e iRd9eiSd:eiSd;e iTd<e iUd=e iUd>e iVd?e iWd@e iWdAeIiXiYiZdBeIiXiYi[dCeIi\dDeIi]Z^dEZ_da`e iKdFaahabdGZcdHZddIZedJZfdKZgdLZhdMdNZihajdOZkdPZlegelhamdQdRdSdSgtmdT|djodS|djodS|djodSdSdS(Ni iiiiLii((Rg((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyRf(s   cCs|tt}t|S(N(tfloattseconds_per_dayRY(tamountt display_cpu((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pytto_cpu4scCsd}t|}|djot|}n|djod}d}nG|djod}d}n*|djod}d}n d}d }d t||}||7}|S( NRi@Biʚ;tmilJ)tbilI5ttrtqus%3.3f(tabsRYRl(Rnt to_returnt abs_amounttdivisortunit((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pytto_money:s$         cCstidd}||jS(Nii'(R)trandint(t roll_againsttrand_num((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyt roll_percentTscCs>|tt}d|}||}d|}ti|jS(Ni(RlRmR)(tchance_per_daytsecondstportion_of_daytinv_chance_per_dayt inv_chancetchance((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyt roll_chance]s    cCsh||}|djot|t| }d}nd}||t}||t}||}||S(Ni(t current_shareRm(t num_per_dayt time_of_daytseconds_passedt last_timetshare_yesterdaytpreviously_passedtcurrent_passedtpassed_this_tick((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyRfs      cCsZ|ddjot|ddS|ddjot|ddSt|dSdS( Ni<i0is daysis hourss minutesi(RQ(traw_time((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pytto_timevs ccsJxCtiD]5}x,|iD]!}|o||fVq|VqWq WdS(N(t locationstvaluestbases(twith_loctbase_loctbase((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyt all_basess  cCstiido(t o tiitidd}nMtiitiit\}}|i djot dtdntii|d}tii |pti |n|o|S|SdS(NtHOMEs.endgametdatas data_loc=s breaks get_save_foldertsaves( RtenvironR tforce_single_dirRRR6tnormpathRR7t ValueErrortexistsR9(t just_pref_dirtpref_dirt data_subdirtsave_dir((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyR2s $tsingularity_savefile_r5_precCs|at}tii||d}t|d}tit|tit |tit |tit |tit |tit ||idS(Ns.savtw(tdefault_savegame_nameR2RRRtopentcPickletdumptcurrent_save_versiontplt curr_speedttechsRteventstclose(t savegame_nameRtsave_loctsavefile((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyt save_games itsingularity_savefile_r4gp= ף@t player_classtPlayert_reconstructortobjecttarrayRtLocationtTecht event_classtEventtgrouptGroupt Buyable_Classt BuyableClasstBaset Base_Classt BaseClasstItemt Item_Classt ItemClasst _reconstructtscalartndarraytdtypec Cs|djo dGHtSt}tii||d}tii|djoDtii||}tii|djod|dGHtSnt|d}ti|}d}||_ |i }|t jo|i |d GHtSt |}|a ttt|i a|i a|i a|i a|i a|t tjomti|x5tiD]'}x|iD]} | i|qWqWx%tiD]} | i|qWn|i tS( NRsNo game specified.s.savisfile s does not exist.trcSs)|tjo t|St||fdS(N(t save_classest SystemExit(t module_namet class_name((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyt find_classs  s* is not a savegame, or is too old to work.(tFalseR2RRRRRRt Unpicklert find_globalREtsavefile_translationRRtload_locationst load_basest load_eventsRRRRRRt convert_fromRRR3( t loadgame_nameRtload_loctloadfiletunpickleRtload_version_stringt load_versiontlocationtmy_basettech((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyt load_gamesR                     lQJcCstd|d}x|D]}|idpd|dGHn|ido|dt|d_n|ido|dt|d_n|idoLt|dtjo|dt|d_q|dgt|d_qqWdS(Ntbases_s.datRsbase lacks id in bases_tnamet descriptiontflavor(RR t base_typet base_nameRRRR(t language_strt base_arrayR((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pytload_base_defs#scCshatd}x_|D]W}t|ddt|d}|id t}|d}t|tjpt|d jo+t i i d t |t i d ng}|D]}|t|q~}|d}t|tjpt|d jo+t i i d t |t i d ng}|D]}|t|q9~}|d} t| tjo+t i i dt | t i d nh} x3| D]+} | id\} } t| | | RKRtbuyablet statisticst graphics.gRdt Statisticststatst hours_per_daytminutes_per_hourtminutes_per_daytseconds_per_minutetseconds_per_hourRmtcheaterRR3tdaynightR"RRRRRRRVRWRR RiRaRfR R(R-RFR1RBRKRYR]R`t danger_colorsRjRhReRfRpRzR~RRRRR2RRRtcopy_regtnumpy.core.multiarraytnumpyR+RRRRRRRRRRRRRtcoret multiarrayRRRRRRRRRRRR RRRRRR1R:RXR=RGR?RRRLRnRoRxRRRRRRRtNonet map_screen(((s?/home/trcarlson/Desktop/python/endg-singularity/trunk/code/g.pyts        `     4  .                                  A  H  I  ,  < 8    F  L   singularity-0.30c/code/statistics.pyc0000644000175000017500000000141111574774324020605 0ustar trcarlsontrcarlson )~Ic@sdefdYZdS(t StatisticscBseZdZdZRS(cCsdS(Ni((tselftname((sH/home/trcarlson/Desktop/python/endg-singularity/trunk/code/statistics.pyt get_statisticscCsdS(N((RRtvalue((sH/home/trcarlson/Desktop/python/endg-singularity/trunk/code/statistics.pyt set_statistics(t__name__t __module__RR(((sH/home/trcarlson/Desktop/python/endg-singularity/trunk/code/statistics.pyRs N(tobjectR(((sH/home/trcarlson/Desktop/python/endg-singularity/trunk/code/statistics.pytssingularity-0.30c/code/safety.py0000644000175000017500000000554611574774324017560 0ustar trcarlsontrcarlson#file: safety.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains wrapper functions for making error-tolerant "safe" calls. import logging import time import traceback import sys import os import os.path # We store error.log in .endgame on OSes with a HOME directory; # otherwise, we store it in the CWD. As we're not importing any # parts of E:S here, we have to reimplement this logic. logpath = "error.log" if os.environ.has_key("HOME"): prefs_dir = os.path.expanduser("~/.endgame") if not os.path.isdir(prefs_dir): os.makedirs(prefs_dir) logpath = os.path.join(prefs_dir, "error.log") logging.getLogger().addHandler(logging.FileHandler(logpath)) class Buffer(object): def __init__(self, prefix=""): self.data = prefix def write(self, unbuffered): self.data += unbuffered def get_timestamp(when=None): if when == None: when = time.time() return time.ctime(when) + " " + time.tzname[time.daylight] def log_error(error_message): logging.getLogger().error(error_message) sys.stderr.write(error_message + "\n") def safe_call(func, args=(), kwargs={}, on_error=None): try: return func(*args, **kwargs) except Exception, e: if isinstance(e, SystemExit): raise buffer = Buffer("Exception in function %s at %s:\n" % (func.__name__, get_timestamp())) traceback.print_exc(file=buffer) log_error(buffer.data) # # ... --- ... # import g # g.play_sound("click") # delays = (.15, .15, .8, .5, .5, .8, .15, .15) # for delay in delays: # time.sleep(delay) # g.play_sound("click") return on_error # Catches any errors raised by a function, logs them, and returns the given # value. # # Apply to a function like so: # @safe(my_error_code) # def my_function(...) # # And then: # result = my_function(...) # if result == my_error_code: # # An error was raised. def safe(on_error): return lambda func: _safe(func, on_error) def _safe(func, on_error): return lambda *args, **kwargs: safe_call(func, args, kwargs, on_error) singularity-0.30c/code/buyable.py0000644000175000017500000001620511574774324017702 0ustar trcarlsontrcarlson#file: buyable.py #Copyright (C) 2008 Evil Mr Henry, Phil Bordelon, and FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the item class. from operator import div, truediv import g cash, cpu, labor = range(3) import numpy numpy.seterr(all='ignore') array = numpy.array class BuyableClass(object): def __init__(self, id, description, cost, prerequisites, type = ""): self.name = self.id = id self.description = description self._cost = cost self.prerequisites = prerequisites if type: self.prefix = type + "_" else: self.prefix = "" def get_cost(self): cost = array(self._cost, long) cost[labor] *= g.minutes_per_day * g.pl.labor_bonus cost[labor] /= 10000 cost[cpu] *= g.seconds_per_day return cost cost = property(get_cost) def describe_cost(self, cost, hide_time=False): cpu_cost = g.to_cpu(cost[cpu]) cash_cost = g.to_money(cost[cash]) labor_cost = "" if not hide_time: labor_cost = ", %s" % g.to_time(cost[labor]).replace(" ", u"\xA0") return u"%s\xA0CPU, %s\xA0money%s" % (cpu_cost, cash_cost, labor_cost) def get_info(self): cost_str = self.describe_cost(self.cost) template = """%s\nCost: %s\n---\n%s""" return template % (self.name, cost_str, self.description) def __cmp__(self, other): # For sorting buyables, we sort by cost; Python's cmp() is smart enough # to handle this properly for tuples. The first element is price in # cash, which is the one we care about the most. return cmp(tuple(self.cost), tuple(other.cost)) def available(self): or_mode = False assert type(self.prerequisites) == list for prerequisite in self.prerequisites: if prerequisite == "OR": or_mode = True if prerequisite in g.techs and g.techs[prerequisite].done: if or_mode: return True else: if not or_mode: return False # If we're not in OR mode, we met all our prerequisites. If we are, we # didn't meet any of the OR prerequisites. return not or_mode for stat in ("count", "complete_count", "total_count", "total_complete_count"): # Ugly syntax, but it seems to be the Right Way to do it. def get(self, stat=stat): return g.stats.get_statistic(self.prefix + self.id + "_" + stat) def set(self, value, stat=stat): return g.stats.set_statistic(self.prefix + self.id + "_" + stat, value) stat_prop = property(get, set) setattr(BuyableClass, stat, stat_prop) class Buyable(object): def __init__(self, type, count=1): self.type = type type.count += count type.total_count += count self.name = type.name self.id = type.id self.description = type.description self.prerequisites = type.prerequisites self.total_cost = type.cost * count self.total_cost[labor] //= count self.cost_left = array(self.total_cost, long) self.count = count self.done = False # Note that this is a method, handled by a property to avoid confusing # pickle. available = property(lambda self: self.type.available) def convert_from(self, save_version): if save_version < 4.91: # r5_pre self.cost_left = array(self.cost_left, long) self.total_cost = array(self.total_cost, long) self.count = 1 def finish(self): if not self.done: self.type.complete_count += self.count self.type.total_complete_count += self.count self.cost_left = array([0,0,0], long) self.done = True def get_cost_paid(self): return self.total_cost - self.cost_left def set_cost_paid(self, value): self.cost_left = self.total_cost - value cost_paid = property(get_cost_paid, set_cost_paid) def _percent_complete(self, available=(0,0,0)): available_array = array(available, long) return truediv(self.cost_paid + available_array, self.total_cost) def min_valid(self, complete): return complete[self.total_cost > 0].min() def percent_complete(self): return self.min_valid(self._percent_complete()) def calculate_work(self, cash_available=None, cpu_available=None, time=0): """Given an amount of available resources, calculates and returns the amount that would be spent and the progress towards completion.""" # cash_available defaults to all the player's cash. if cash_available == None: cash_available = g.pl.cash # cpu_available defaults to the entire CPU Pool. if cpu_available == None: cpu_available = g.pl.cpu_pool # Figure out how much we could complete. pct_complete = self._percent_complete([cash_available, cpu_available, time]) # Find the least-complete resource. least_complete = self.min_valid(pct_complete) # Let the other two be up to 5 percentage points closer to completion. complete_cap = min(1, least_complete + .05) pct_complete[pct_complete > complete_cap] = complete_cap # Translate that back to the total amount complete. raw_paid = pct_complete * self.total_cost # And apply it. was_complete = self.cost_paid cost_paid = numpy.maximum(numpy.cast[numpy.int64](numpy.ceil(raw_paid)), was_complete) spent = cost_paid - was_complete return spent, cost_paid def work_on(self, *args, **kwargs): """As calculate_work, but apply the changes. Returns a boolean indicating whether this buyable is done afterwards. """ if self.done: return spent, self.cost_paid = self.calculate_work(*args, **kwargs) # Consume CPU and Cash. # Note the cast from to to avoid # poisoning other calculations (like, say, g.pl.do_jobs). g.pl.cpu_pool -= int(spent[cpu]) g.pl.cash -= int(spent[cash]) if (self.cost_left <= 0).all(): self.finish() return True return False def destroy(self): self.type.count -= self.count if self.done: self.type.complete_count -= self.count singularity-0.30c/code/singularity.py0000644000175000017500000002160711574774324020633 0ustar trcarlsontrcarlson#! /usr/bin/env python #file: singularity.py #Copyright (C) 2005, 2006, 2007 Evil Mr Henry, Phil Bordelon, and Brian Reid #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file is the starting file for the game. Run it to start the game. # Since we require numpy anyway, we might as well ask pygame to use it. try: import pygame pygame.surfarray.use_arraytype("numpy") except AttributeError: pass # Pygame older than 1.8. except ValueError: raise SystemExit("Endgame: Singularity requires NumPy.") except ImportError: raise SystemExit("Endgame: Singularity requires pygame.") import sys import ConfigParser import os.path import optparse import g, graphics.g from screens import main_menu, map pygame.init() pygame.font.init() pygame.key.set_repeat(1000, 50) #load prefs from file: save_dir = g.get_save_folder(True) save_loc = os.path.join(save_dir, "prefs.dat") if os.path.exists(save_loc): prefs = ConfigParser.SafeConfigParser() savefile = open(save_loc, "r") try: prefs.readfp(savefile) except Exception, reason: sys.stderr.write("Cannot load preferences file %s! (%s)\n" % (save_loc, reason)) sys.exit(1) if prefs.has_section("Preferences"): try: if prefs.getboolean("Preferences", "fullscreen"): graphics.g.fullscreen = pygame.FULLSCREEN except: sys.stderr.write("Invalid or missing 'fullscreen' setting in preferences.\n") try: g.nosound = prefs.getboolean("Preferences", "nosound") except: sys.stderr.write("Invalid or missing 'nosound' setting in preferences.\n") try: pygame.event.set_grab(prefs.getboolean("Preferences", "grab")) except: sys.stderr.write("Invalid or missing 'grab' setting in preferences.\n") try: g.daynight = prefs.getboolean("Preferences", "daynight") except: sys.stderr.write("Invalid or missing 'daynight' setting in preferences.\n") try: g.soundbuf = prefs.getint("Preferences", "soundbuf") except: sys.stderr.write("Invalid or missing 'soundbuf' setting in preferences.\n") try: graphics.g.screen_size = (prefs.getint("Preferences", "xres"), graphics.g.screen_size[1]) except: sys.stderr.write("Invalid or missing 'xres' resolution in preferences.\n") try: graphics.g.screen_size = (graphics.g.screen_size[0], prefs.getint("Preferences", "yres")) except: sys.stderr.write("Invalid or missing 'yres' resolution in preferences.\n") #If language is unset, default to English. try: desired_language = prefs.get("Preferences", "lang") except: desired_language = "en_US" try: if os.path.exists(g.data_loc + "strings_" + desired_language + ".dat"): g.language = desired_language g.set_locale() except: sys.stderr.write("Cannot find language files for language '%s'.\n" % desired_language) #Handle the program arguments. desc = """Endgame: Singularity is a simulation of a true AI. Go from computer to computer, pursued by the entire world. Keep hidden, and you might have a chance.""" parser = optparse.OptionParser(version=g.version, description=desc, prog="singularity") parser.add_option("--sound", action="store_true", dest="sound", help="enable sound (default)") parser.add_option("--nosound", action="store_false", dest="sound", help="disable sound") parser.add_option("--daynight", action="store_true", dest="daynight", help="enable day/night display (default)") parser.add_option("--nodaynight", action="store_false", dest="daynight", help="disable day/night display") langs = g.available_languages() parser.add_option("-l", "--lang", "--language", dest="language", type="choice", choices=langs, metavar="LANG", help="set the language to LANG (available languages: " + " ".join(langs) + ", default en_us)") parser.add_option("-g", "--grab", help="grab the mouse pointer", dest="grab", action="store_true") parser.add_option("--nograb", help="don't grab the mouse pointer (default)", dest="grab", action="store_false") parser.add_option("-s", "--singledir", dest="singledir", help="keep saved games and settings in the Singularity directory", action="store_true") parser.add_option("--multidir", dest="singledir", help="keep saved games and settings in an OS-specific, per-user directory (default)", action="store_false") parser.add_option("--soundbuf", type="int", help="set the size of the sound buffer (default 2048)") display_options = optparse.OptionGroup(parser, "Display Options") display_options.add_option("-r", "--res", "--resolution", dest="resolution", help="set resolution to RES (default 800x600)", metavar="RES") for common_res in [(640,480), (800,600), (1024,768), (1280,1024)]: x = str(common_res[0]) res_str = "%dx%d" % common_res display_options.add_option("--" + x, action="store_const", dest="resolution", const=res_str, help="set resolution to %s" % res_str) display_options.add_option("--fullscreen", action="store_true", help="start in fullscreen mode") display_options.add_option("--windowed", action="store_false", help="start in windowed mode (default)") parser.add_option_group(display_options) olpc_options = optparse.OptionGroup(parser, "OLPC-specific Options") olpc_options.add_option("--xo1", action="store_const", dest="resolution", const="1200x900", help="set resolution to 1200x900 (OLPC XO-1)") olpc_options.add_option("--ebook", help="enables gamepad buttons for use in ebook mode. D-pad moves mouse, check is click. O speeds up time, X slows down time, and square stops time.", action="store_true", default=False) parser.add_option_group(olpc_options) hidden_options = optparse.OptionGroup(parser, "Hidden Options") hidden_options.add_option("-p", help="(ignored)", metavar=" ") hidden_options.add_option("-d", "--debug", help="for finding bugs", action="store_true", default=False) hidden_options.add_option("--cheater", help="for bad little boys and girls", action="store_true", default=False) # Uncomment to make the hidden options visible. #parser.add_option_group(hidden_options) (options, args) = parser.parse_args() if options.language is not None: g.language = options.language g.set_locale() if options.resolution is not None: try: xres, yres = options.resolution.split("x") graphics.g.screen_size = (int(xres), int(yres)) except Exception: parser.error("Resolution must be of the form x, e.g. 800x600.") if options.grab is not None: pygame.event.set_grab(options.grab) if options.fullscreen is not None: graphics.g.fullscreen = options.fullscreen if options.sound is not None: g.nosound = not options.sound if options.daynight is not None: g.daynight = options.daynight if options.soundbuf is not None: g.soundbuf = options.soundbuf if options.singledir is not None: g.singledir = options.singledir graphics.g.ebook_mode = options.ebook g.cheater = options.cheater g.debug = options.debug g.load_strings() g.load_events() pygame.display.set_caption("Endgame: Singularity") #I can't use the standard image dictionary, as that requires the screen to #be created. if pygame.image.get_extended() == 0: print "Error: SDL_image required. Exiting." sys.exit(1) # Initialize the screen with a dummy size. pygame.display.set_mode(graphics.g.screen_size) #init data: g.init_graphics_system() g.reinit_mixer() g.load_sounds() g.load_items() g.load_music() g.load_locations() # Set the application icon. pygame.display.set_icon(graphics.g.images["icon.png"]) #Display the main menu menu_screen = main_menu.MainMenu() menu_screen.show() singularity-0.30c/code/player.pyc0000644000175000017500000004072111574774324017716 0ustar trcarlsontrcarlson 6b)Lc @sddkZddklZddklZddkZddklZddkZddkl Z l Z l Z dZ d e fd YZd e fd YZde fdYZdS(iN(ttruediv(tarray(tg(tcashtcputlabortnewstsciencetcoverttpublictGroupcBs_eZdZddddZdZdZdZdZd Zd Z d Z RS( iiidi'cCs(||_||_||_||_dS(N(tnamet suspiciontsuspicion_decaytdiscover_bonus(tselfR R R R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyt__init__"s   cCstd|i|idS(Nii'(tmaxR R (R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyt decay_rate)scCs|i|i dS(N(talter_suspicionR(R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytnew_day.scCst|i|d|_dS(Ni(RR (Rtchange((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyR1scCst|i|d|_dS(Ni(RR (RR((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytalter_suspicion_decay4scCst|i|d|_dS(Ni(RR(RR((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytalter_discover_bonus7scCs|i|idS(N(Rtdiscover_suspicion(R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytdiscovered_a_base:scCs||i}||i}|djp|i|ddjodS|djp|i|ddjodS|djodSdSdS( Nidi i'ii2iii(RRR (Rtdetects_per_daytraw_suspicion_per_daytsuspicion_per_day((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytdetects_per_day_to_danger_level=s    ( t__name__t __module__RRRRRRRRR(((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyR s       t DryRunInfocBseZRS((RR(((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyR PstPlayercBseZeZddddddZdZdZdZdZdZ dZ e d Z ed Z d Zed Zd ZdZdZdZdZdZRS(iicCsY||_||_||_||_||_|i|idjo t|_n|i |_t |_ ||_ d|_ d|_d|_d|_d|_d|_htdddd6tdddd6td dd d 6td dd d 6|_d |_d |_|_tdt|_h|_dddddg|_d|_dS(Niii'RR iRidRi2R it(iii(t difficultyttime_secttime_mint time_hourttime_daytmake_raw_timestraw_sectTruet had_gracetin_grace_periodtFalset apotheosisRt interest_ratetincometcpu_poolt labor_bonust job_bonust partial_cashR tgroupstgrace_multipliertlast_discoverytprev_discoveryRtlongtmaintenance_costt cpu_usagetavailable_cpust sleeping_cpus(RRR$R%R&R'R#((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyRUs6                 cCsH|djo7h|_tidi|_|io t|_qDndS(Ngp= ף@t Apotheosis(R;RttechstdoneR.R*R+(Rt old_version((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyt convert_from}s    cCsU|id|i|_|id|i|_|id|i|_|i|_dS(Nii<(R'R&traw_hourR%traw_minR$R)traw_day(R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyR(scCsjt|id\|_|_t|id\|_|_t|id\|_|_|i|_dS(Ni<i( tdivmodR)RDR$RCR%RER&R'(R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyt update_timesscCs|i tiptiS(N(RDRtminutes_per_day(R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytmins_to_next_dayscCs|i tiptiS(N(R)Rtseconds_per_day(R((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytseconds_to_next_dayscCs+|i|\}|_|i|7_|S(N(t get_job_infoR4R(Rtcpu_timetearned((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pytdo_jobsscCs|djo |i}n|djpttitid}tidio||d}n|||}|ti}|ti}||fS(NisAdvanced Simulacrai ( tNoneR4tAssertionErrorRtjobst get_job_levelR?R@RJ(RRMR4t cash_per_cputraw_cashRtnew_partial_cash((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyRLs    c8Cs+ |djodS|i}|i}|i}|i|7_|i|i|}|djo$|d}|iti|8_n|dj}|o!|iti|_|in|} |i|} tiiti} |i} |i} g}g}g}g}g}g}d|_ t dt |_ xti D]}|ip|i|q<|idj o(|ii o|||ifg7}ng}|iD])}|o|i o|||fqq~}||7}|i |i7_ q<W|iot dt |_ n|iidd| }|i|}tit|i t| | }|}||ijo||i8}d|_n|i|8_d}d}d}|id}x;|iiD]*\}} | djoqn|| 8}| | }!|djo|i |!7_ |djo|oti|id| d|!d}"tii t|"t8_ tiit|"t8_|| 7}|t|"t7}qnti|id|!d| }#|#o|iti|qqqqW|i || 7_ |i t| }$|$|i jo|$|i 8}$d|_ n|i t|$8_ d}$d}%d}&x|D]}|o|id| d|i d}"tii t|"t8_ tiit|"t8_|%t|"t7}%|&t|"t7}&qwn|id| }'|'o|i|qwqwWx|D]\}}|o|id| ddd}"tii t|"t8_ tiit|"t8_|%t|"t7}%|&t|"t7}&q?n|id| }(|(oA|i i!djo|i||fq/|i||fq?q?Wd})|i djo|i|i })n||ijo||i8}d|_n|i|8_d}|ot"}*|i#|*_$|i%|*_%|i|*i$|*i%7_||*_&|)|*_'||)|*_(||*_)|&|*_*||*_+||*_,|||*_| |*_-|i|*_.t"}+|id|+_/|i0|+_1|+i/|+i1|+_2||+_)|%|+_*|i t|+_+|$|+_,|+i+|+i,|+_|iidd|+_&|i t3||+_'|iidd|+i'|+_(|iidd|+_4||+_5|iidd||+_6| |_| |_||_|i|*|+fSxZ|D]R},|i|,i7=ti8dh|,i9d 6|,i:d 6}-|i;ti<i=|-q~Wx|D]}ti8d h|i9d 6}-|i;ti<i=|-|i i7d joE|ii i7djo/ti8dh|i9d 6}-ti<i=|-qqWx|D]\}}.|ii>|i i?jo/ti8dh|ii i9d6|i9d 6}-n,ti8dh|ii i9d6|i9d 6}-|i;ti<i=|-qy WxV|D]N\}}ti8dh|i i9d6|i9d 6}-|i;ti<i=|-q W|i@|iA}/|iAo6|/ o.tB|_A|i;ti<i=ti8dng}0xti D]}tB}1|io|$on|ito`|it| }2tCd|$|2}$|1 o0tiDd| o|0i|dftE}1q_ n|ovti|it| | }3|3oOtCd||3}|1 o0tiDd| o|0i|dftE}1q q q n|/p|1p |iFp|iG}4tiHod|i9tI|4fGHnxS|4iD]A\}5}6tiD|6d| o|0i||5ftE}1Pq: q: Wq q W|iJ|0|/pwxttiKD]e}7tiDtiK|7iLd|o>tiK|7iMdjoq n|i;tiK|7iNPq q Wn|o|iOn| S(NiiRRR1ttimet cpu_availableRt tech_gainedttecht tech_messaget constructiontbasesStolen Computer Times Gaming PCt lucky_hacktitem_construction_singletitemtitem_construction_batcht grace_warninggQ?tmaints#Chance of discovery for base %s: %sg@(iii(iii(PR)RDRERGRRJtplRR4R1RR9R:t all_basesR@tappendtcpusRPt extra_itemst maintenanceR.R;tgetROt current_sharetintR<t iteritemsR?tcalculate_workRtwork_onttypet item_typeR t get_interesttinterestR0t explicit_jobst pool_jobsRRRZR\tmaintenance_neededtmaintenance_shortfalltstarttendt availableR=tsleepingttotaltfloatt explicit_poolt default_pooltpooltidtstringsR tresultt pause_gamet map_screent show_messagetcounttsizeR,R+R-Rt roll_chanceR*t has_gracetget_detect_chancetdebugtreprt remove_basesteventstchancet triggeredttriggerR(8RR$tdry_runtold_timet last_minutetlast_dayt days_passedt extra_dayst day_passedt secs_passedt mins_passedt time_of_daytold_cashtold_partial_cashttechs_researchedtbases_constructedtcpus_constructedtitems_constructedtbases_under_constructiontitems_under_constructionR]t_[1]R`tunfinished_itemstjob_cputexplicit_job_cashtcash_maintenancetfull_cash_maintenancettech_cput tech_casht default_cputtaskt cpu_assignedtreal_cputspentRYtcpu_maintenancetconstruction_cputconstruction_casht built_baset built_itemt pool_job_casht cash_infotcpu_infoRZttextRgtgracet dead_basestdeadtrefundt base_needst detect_chancetgroupRtevent((sD/home/trcarlson/Desktop/python/endg-singularity/trunk/code/player.pyt give_times               ,               $                                     % !              !  cCs`tdddddgt|_d|_x|tiD]n}|io^|idjo$|i|ii dc |i 7*q|idjo|i|i 7_qq7q7Wg}|iD]}|t |q~|_t |i i}||idjo]t|id|}x4|i iD]#\}}t |||i |s   0singularity-0.30c/code/__init__.pyc0000644000175000017500000000023511574774324020155 0ustar trcarlsontrcarlson )~Ic@sdS(N((((sF/home/trcarlson/Desktop/python/endg-singularity/trunk/code/__init__.pytssingularity-0.30c/code/buyable.pyc0000644000175000017500000001733511574774324020052 0ustar trcarlsontrcarlson 6b)Lc@sddklZlZddkZed\ZZZddkZei ddei Z de fdYZ xEdD]=Z e d Ze d ZeeeZee e eqyWde fdYZdS(i(tdivttruedivNitalltignoret BuyableClasscBsPeZddZdZeeZedZdZdZ dZ RS(tcCsP||_|_||_||_||_|o|d|_n d|_dS(Nt_R(tnametidt descriptiont_costt prerequisitestprefix(tselfRR tcostR ttype((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt__init__s   cCsVt|it}|tctitii9<|tcd:<|tcti 9<|S(Ni'( tarrayR tlongtlabortgtminutes_per_daytplt labor_bonustcputseconds_per_day(R R((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytget_cost*s cCskti|t}ti|t}d}|p'dti|tidd}nd|||fS(NRs, %st u u%s CPU, %s money%s(Rtto_cpuRtto_moneytcashtto_timeRtreplace(R Rt hide_timetcpu_costt cash_costt labor_cost((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt describe_cost3s 'cCs/|i|i}d}||i||ifS(Ns%s Cost: %s --- %s(R%RRR (R tcost_strttemplate((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytget_info;scCstt|it|iS(N(tcmpttupleR(R tother((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt__cmp__@scCst}t|itjptxe|iD]Z}|djo t}n|tijo!ti|io|otSq-|ptSq-W| S(NtOR( tFalseRR tlisttAssertionErrortTrueRttechstdone(R tor_modet prerequisite((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt availableFs   !  ( t__name__t __module__RRtpropertyRR.R%R(R,R6(((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyRs     tcounttcomplete_countt total_countttotal_complete_countcCs"tii|i|id|S(NR(Rtstatst get_statisticR R(R tstat((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytgetYscCs%tii|i|id||S(NR(RR>t set_statisticR R(R tvalueR@((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytset[stBuyablecBseZddZedZdZdZdZdZeeeZ ddZ d Z d Z dddd Zd Zd ZRS(icCs||_|i|7_|i|7_|i|_|i|_|i|_|i|_|i||_|it c|uscCsH|djo7t|it|_t|it|_d|_ndS(Ngp= ף@i(RRGRRFR:(R t save_version((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt convert_fromws cCs`|ipR|ii|i7_|ii|i7_tdddgt|_t|_ndS(Ni( R3RR;R:R=RRRGR1(R ((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytfinish}s  cCs|i|iS(N(RFRG(R ((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt get_cost_paidscCs|i||_dS(N(RFRG(R RC((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt set_cost_paidsicCs&t|t}t|i||iS(N(RRRt cost_paidRF(R R6tavailable_array((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt_percent_completescCs||idjiS(Ni(RFtmin(R tcomplete((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt min_validscCs|i|iS(N(RSRP(R ((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytpercent_completesc Cs|djotii}n|djotii}n|i|||g}|i|}td|d}||||j<||i}|i }t i t i t i t i||} | |} | | fS(sGiven an amount of available resources, calculates and returns the amount that would be spent and the progress towards completion.ig?N(tNoneRRRtcpu_poolRPRSRQRFRNtnumpytmaximumtcasttint64tceil( R tcash_availablet cpu_availablettimet pct_completetleast_completet complete_captraw_paidt was_completeRNtspent((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytcalculate_works      "  cOs|iodS|i||\}|_tiit|t8_tiit|t8_|i dji o|i t St S(sAs calculate_work, but apply the changes. Returns a boolean indicating whether this buyable is done afterwards. Ni(R3ReRNRRRVtintRRRGRRKR1R.(R targstkwargsRd((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytwork_ons  cCs<|ii|i8_|io|ii|i8_ndS(N(RR:R3R;(R ((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pytdestroys (iiiN(R7R8RR9R6RJRKRLRMRNRPRSRTRUReRiRj(((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyREas        ! (scountscomplete_counts total_countstotal_complete_count(toperatorRRRtrangeRRRRWtseterrRtobjectRR@RARDR9t stat_proptsetattrRE(((sE/home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyts   8  singularity-0.30c/code/statistics.py0000644000175000017500000000201311574774324020441 0ustar trcarlsontrcarlson#file: statistics.py #Copyright (C) 2008 FunnyMan3595 #This file is part of Endgame: Singularity. #Endgame: Singularity is free software; you can redistribute it and/or modify #it under the terms of the GNU General Public License as published by #the Free Software Foundation; either version 2 of the License, or #(at your option) any later version. #Endgame: Singularity is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU General Public License for more details. #You should have received a copy of the GNU General Public License #along with Endgame: Singularity; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #This file contains the Statistics class, used for saving/loading single-game #statistics. class Statistics(object): def get_statistic(self, name): return 0 def set_statistic(self, name, value): pass singularity-0.30c/code/singularity.pyc0000644000175000017500000001543211574774324020775 0ustar trcarlsontrcarlson )~Ic9@s y ddkZeiidWnOej on>ej oedn ej oednXddkZddkZddk Z ddk Z ddk Z ddk ZddklZlZeieiieiidde ieZe iiedZe iieoeiZeed Z yei!e Wn<e"j o0Z#ei$i%d ee#fei&d nXei'd o(y*ei(d d oei)ei _*nWnei$i%dnXyei(d de _+Wnei$i%dnXy ei,i-ei(d dWnei$i%dnXyei(d de _.Wnei$i%dnXyei/d de _0Wnei$i%dnXy,ei/d dei i1d fei _1Wnei$i%dnXy,ei i1dei/d dfei _1Wnei$i%dnXyei2d dZ3Wn dZ3nXy=e iie i4de3doe3e _5e i6nWqei$i%d e3qXqnd!Z7e i8d"e i9d#e7d$d%Z:e:i;d&d'd(d)d*d+d,e:i;d-d'd.d)d*d+d/e:i;d0d'd(d)dd+d1e:i;d2d'd.d)dd+d3e i<Z=e:i;d4d5d6d)d7d8d9d:e=d;d<d+d=d>ie=d?e:i;d@dAd+dBd)dd'd(e:i;dCd+dDd)dd'd.e:i;dEdFd)dGd+dHd'd(e:i;dId)dGd+dJd'd.e:i;dKd8dLd+dMe i>e:dNZ?e?i;dOdPdQd)dRd+dSd;dTxadydzd{d|gD]MZ@eAe@dZBd\e@ZCe?i;d]eBd'd^d)dRd_eCd+d`eCqWe?i;dad'd(d+dbe?i;dcd'd.d+dde:iDe?e i>e:deZEeEi;dfd'd^d)dRd_dgd+dheEi;did+djd'd(dkeFe:iDeEe i>e:dlZGeGi;dmd+dnd;d>eGi;dodpd+dqd'd(dkeFeGi;drd+dsd'd(dkeFe:iH\ZIZJeIi5dj oeIi5e _5e i6neIiLdj oay:eIiLiMdt\ZNZOePeNePeOfei _1Wqe"j oe:iQduqXneIiRdj oei,i-eIiRneIi*dj oeIi*ei _*neIiSdj oeIiS e _+neIi.dj oeIi.e _.neIi0dj oeIi0e _0neIiTdj oeIiTe _TneIiUei _VeIiWe _WeIiXe _Xe iYe iZei[i\dvei]i^djodwGHei&d nei[i_ei i1e i`e iae ibe ice ide ieei[ifei igdxeihZieiijdS(}iNtnumpys$Endgame: Singularity requires NumPy.s%Endgame: Singularity requires pygame.(t main_menutmapii2s prefs.dattrs&Cannot load preferences file %s! (%s) it Preferencest fullscreens8Invalid or missing 'fullscreen' setting in preferences. tnosounds5Invalid or missing 'nosound' setting in preferences. tgrabs2Invalid or missing 'grab' setting in preferences. tdaynights6Invalid or missing 'daynight' setting in preferences. tsoundbufs6Invalid or missing 'soundbuf' setting in preferences. txress5Invalid or missing 'xres' resolution in preferences. ityress5Invalid or missing 'yres' resolution in preferences. tlangten_UStstrings_s.dats.Cannot find language files for language '%s'. sEndgame: Singularity is a simulation of a true AI. Go from computer to computer, pursued by the entire world. Keep hidden, and you might have a chance.tversiont descriptiontprogt singularitys--soundtactiont store_truetdesttsoundthelpsenable sound (default)s --nosoundt store_falses disable sounds --daynights"enable day/night display (default)s --nodaynightsdisable day/night displays-ls--langs --languagetlanguagettypetchoicetchoicestmetavartLANGs/set the language to LANG (available languages: t s, default en_us)s-gs--grabsgrab the mouse pointers--nograbs&don't grab the mouse pointer (default)s-ss --singledirt singledirs:keep saved games and settings in the Singularity directorys --multidirsMkeep saved games and settings in an OS-specific, per-user directory (default)s --soundbuftints/set the size of the sound buffer (default 2048)sDisplay Optionss-rs--ress --resolutiont resolutions'set resolution to RES (default 800x600)tRESiii iXiiis%dx%ds--t store_consttconstsset resolution to %ss --fullscreensstart in fullscreen modes --windoweds start in windowed mode (default)sOLPC-specific Optionss--xo1t1200x900s&set resolution to 1200x900 (OLPC XO-1)s--ebooksenables gamepad buttons for use in ebook mode. D-pad moves mouse, check is click. O speeds up time, X slows down time, and square stops time.tdefaultsHidden Optionss-ps (ignored)s-ds--debugsfor finding bugss --cheatersfor bad little boys and girlstxs5Resolution must be of the form x, e.g. 800x600.sEndgame: Singularitys#Error: SDL_image required. Exiting.sicon.png(ii(i iX(ii(ii(ktpygamet surfarrayt use_arraytypetAttributeErrort ValueErrort SystemExitt ImportErrortsyst ConfigParsertos.pathtostoptparsetgt graphics.gtgraphicstscreensRRtinittfonttkeyt set_repeattget_save_foldertTruetsave_dirtpathtjointsave_loctexiststSafeConfigParsertprefstopentsavefiletreadfpt Exceptiontreasontstderrtwritetexitt has_sectiont getbooleant FULLSCREENRRteventtset_grabRtgetintR t screen_sizetgettdesired_languagetdata_locRt set_localetdesct OptionParserRtparsert add_optiontavailable_languagestlangst OptionGrouptdisplay_optionst common_reststrR(tres_strtadd_option_groupt olpc_optionstFalsethidden_optionst parse_argstoptionstargstNoneR"tsplitR R R!terrorRRR tebookt ebook_modetcheatertdebugt load_stringst load_eventstdisplayt set_captiontimaget get_extendedtset_modetinit_graphics_systemt reinit_mixert load_soundst load_itemst load_musictload_locationstset_icontimagestMainMenut menu_screentshow(((sI/home/trcarlson/Desktop/python/endg-singularity/trunk/code/singularity.pytsL           "               "           singularity-0.30c/TODO0000644000175000017500000000137211574774324015462 0ustar trcarlsontrcarlsonTODO: - Record more things (times that techs are complete, etc.) for both "scores" and general statistics: # saves. # Bases constructed (per type) # Bases discovered (per type per news/science...) # Bases destroyed (per type) # Money earned (huge) # Time to completion # of upgrades for all bases # per-tech time to completion (from day 0 to start, then time to completion) - Add more items. - Get more items translatable. - Make it so that double-click is equivalent to 'OK' in dialogs. (rubikcube) - Make translations easier to do. (Phil has good ideas on how to do this.) - Arbitrary resolution, including non 4:3 scales. - Consistent use of stderr and print.