From 4bed5102a93ce600cdd05cf8e59196e01fabb8aa Mon Sep 17 00:00:00 2001 From: Francesco Berardi Date: Sat, 8 Aug 2026 14:25:36 +0200 Subject: [PATCH] =?UTF-8?q?[GSoC=202026]=20blog:=20final=20work=20product?= =?UTF-8?q?=20=E2=80=94=20self-hosted=20LLM=20chatbot=20for=20IntelOwl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Blogs/gsoc26_llm_chatbot.md | 456 ++++++++++++++++++++++++++++++ public/images/chatbot_confirm.png | Bin 0 -> 52827 bytes public/images/chatbot_turn.png | Bin 0 -> 57141 bytes 3 files changed, 456 insertions(+) create mode 100644 Blogs/gsoc26_llm_chatbot.md create mode 100644 public/images/chatbot_confirm.png create mode 100644 public/images/chatbot_turn.png diff --git a/Blogs/gsoc26_llm_chatbot.md b/Blogs/gsoc26_llm_chatbot.md new file mode 100644 index 0000000..df3ddc2 --- /dev/null +++ b/Blogs/gsoc26_llm_chatbot.md @@ -0,0 +1,456 @@ +--- +title: Talking to Your Threat Intel — A Self-Hosted LLM Chatbot for IntelOwl +date: 2026-08-08 +cover: /images/gsoclogo.png +author: Francesco Berardi +--- + +An analyst opens IntelOwl, types *"is job #40 malicious?"*, and gets back: + +
Job #40 is classified as malicious with a reliability score of 7 out of 10. The verdict was supported by 2 analyzers and contradicted by 1 analyzer, while the remaining 3 analyzers did not provide an opinion (silent).
+ +No API key. No token bill. **No byte of that observable ever left the machine.** + +That is what I built for Google Summer of Code 2026 with The Honeynet Project: a conversational +interface embedded in IntelOwl, running entirely on a locally-hosted LLM. This post explains how it +works, what I measured, and what did not work. + +## Why a chatbot inside a threat intelligence platform + +IntelOwl already knows the answer to most questions an analyst asks. It runs 200+ analyzers, groups +their output into jobs, groups jobs into investigations, and normalizes every analyzer's findings into +a `DataModel`. The information is all there. What it costs is navigation: filter the job list, open +the right job, expand the raw results, read six analyzer reports, decide. A chat interface collapses +that into a sentence. + +But one constraint rules out the obvious implementation. **You cannot send a SOC's observables to a +third-party LLM API.** The domains, hashes and IPs an analyst investigates describe what an +organization is being attacked with, and often who it is. + +So the model runs **locally**, in an Ollama container beside the other IntelOwl services, and the +feature is opt-in. The default is `qwen2.5:3b`, small enough for a CPU-only box, which is the honest +deployment target for a self-hosted tool. Most of what follows is a consequence of that choice. A 3B +model is a very different engineering problem from a frontier model. + +Before GSoC I had been contributing to IntelOwl for a few months, which is how I learned the codebase +well enough to propose this project. Those earlier patches were an +[N+1 ORM fix](https://github.com/intelowlproject/IntelOwl/pull/3341), +[onboarding-guide fixes](https://github.com/intelowlproject/IntelOwl/pull/3355) including a React +crash on invalid date routing, and the +[password strength validation](https://github.com/intelowlproject/IntelOwl/pull/3356) that +`ChangePasswordView` was missing. + +## What an analyst can do today + +The chatbot ships in **IntelOwl v6.7.0**. It lives in a drawer available from any page and streams its +answers token by token over a WebSocket. It is also aware of where you are: ask "summarize this" while +looking at a job and it knows which job you mean. + +The IntelOwl chat panel answering a question about recent jobs + +*The chat panel answering "show my recent jobs", with context-aware quick actions below.* + +Behind the conversation are **ten tools** the agent can call. Each is a real query against the +platform, not a retrieval index over a documentation dump: + +| Tool | What it answers | +|---|---| +| `search_jobs` | "What jobs do I have?", filtered by observable, MD5 or status | +| `get_job_details` | Everything about one job by ID | +| `summarize_job` | A prose summary **plus IntelOwl's own verdict** on the observable | +| `get_data_model` | The normalized, analyzer-agnostic view of a job's findings | +| `list_investigations` | Investigations you own or that your organization shared | +| `get_investigation_tree` | The job tree inside an investigation | +| `summarize_investigation` | Status, job counts per status, TLP, tags | +| `list_analyzers` | Which analyzers are enabled, and which are actually runnable for you | +| `recommend_playbook` | Which playbooks can analyze a given observable | +| `analyze_observable` | **Previews** a new analysis (see the guardrail section below) | + +## Architecture + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Browser + React chat panel + Daphne + ChatConsumer (WS) + Redis + broker + channel layer + Celery + chatbot queue + LangChain agent + create_agent (LangGraph runtime) + Ollama + qwen2.5:3b — local + 10 LLM tools + built per request, scoped to the user + PostgreSQL + Jobs · Investigations · DataModels + + + streamed tokens flow back the same way + visible_for_user(user) + + +
+ +Three decisions in that diagram were not obvious. + +**Inference never happens in the request thread.** A turn on a CPU box takes tens of seconds. In a +Django view that would pin a worker and time out under any real load. So a message goes to a +**dedicated Celery queue** and the answer streams back through the Channels layer. The WebSocket +consumer mirrors IntelOwl's existing `JobConsumer` instead of inventing a pattern, so authentication, +group naming and reconnection behave like the rest of the platform. + +**The agent uses native tool calling, not a ReAct string parser.** The first implementation parsed +`Thought:/Action:` text, which a 3B model gets wrong often enough to be unusable. Switching to the +model's structured tool-calling interface +([#3762](https://github.com/intelowlproject/IntelOwl/pull/3762)) removed a whole class of failures. +The engine was later migrated from the deprecated `AgentExecutor` to LangChain 1.x's `create_agent` +on the LangGraph runtime ([#3842](https://github.com/intelowlproject/IntelOwl/pull/3842)). That was a +drop-in swap: the wire protocol, the memory backend and the guardrail were untouched. + +**Tools are a factory closing over the user, not a global registry.** This is the load-bearing +security decision of the whole project, and the next section is about why. + +## Multi-tenancy: the LLM is never trusted with scope + +IntelOwl is multi-tenant: users belong to organizations, jobs carry TLP levels, and what you can see +is not what your colleague can see. An agent that queries the database on a user's behalf is an +excellent way to leak all of that. + +The rule I settled on: **the requesting user is never an argument the model can supply.** Tools are +built per request by a factory that closes over the authenticated user, and every queryset goes +through IntelOwl's own `visible_for_user` manager, the same scoping the REST API and the UI use. +The model chooses *which tool* and *what to search for*. It cannot choose *whose data*. + +```python +def make_search_jobs_tool(user): + # Built per-request and closed over `user`: scoped with visible_for_user (owner + + # same-org AMBER/RED + globally-visible CLEAR/GREEN), matching the REST JobViewSet / UI. + # The LLM can never widen it. + @tool("search_jobs") + def search_jobs(query: Optional[str] = None, status: Optional[str] = None, limit: int = 10) -> str: + qs = Job.objects.select_related("analyzable").visible_for_user(user) + ... +``` + +Everything the model *does* control is treated as untrusted input. `limit` is clamped, `status` is +validated against IntelOwl's `Status` enum before it can reach the ORM, and a playbook name is +re-checked for visibility before anything happens with it. + +I did not want to take my own word for it, so I ran a **full security audit** of the subsystem: all +ten tools, the WebSocket and REST entry points, the rate limiter, error paths, prompt injection +through the page-context field, and markdown rendering on the frontend. It found zero data-isolation +leaks and nothing critical or high, but seven findings. Four were low-severity fixes that shipped +immediately. One I accepted as-is, with the reasoning written into the code. Two mattered more. + +The first was an **inconsistency worth arguing about**. The job tools used `filter(user=user)` +(owner-only) while the investigation tools used `visible_for_user` (owner + organization). Stricter, +but *inconsistent with the UI*: the chatbot would deny you a job the web interface happily shows. My +mentor's call was UI parity, and that is what shipped. The second finding changed the design, and it +is the one worth a section of its own. + +## Deep dive I — the model can propose, only a human can launch + +`analyze_observable` is the only tool with a side effect: it starts a real analysis, which sends the +observable to external analyzer services. That is precisely the egress the local-model architecture +exists to avoid. + +The original implementation had a `confirm` flag. The code was correct, in that only `confirm=True` +reached the launch path. But the flag was set **by the model**, so the safety property depended on a +3B model reading a prompt correctly. The fix removes the decision from the model entirely: + +1. The tool becomes **preview-only**. It validates, resolves the playbook, and returns a plan plus an + opaque `pending_id`. It has no code path that launches anything. +2. The plan is stored in a short-lived Redis record, scoped to the user, with a TTL. +3. The agent emits an `action_required` WebSocket frame; the frontend renders a Confirm/Cancel card. +4. Only `POST /api/chatbot/analysis/confirm` with that `pending_id` launches. It re-validates playbook + visibility too, because permissions could have changed between the preview and the click. + +The confirmation card listing the analyzers that would run, with Confirm and Cancel buttons + +*The model can describe the analysis. Only the Confirm button starts it.* + +The consume step is deliberately atomic, so a double-click cannot launch twice: + +```python +def consume_pending_analysis(user_id: int, pending_id: str) -> dict | None: + record = cache.get(key) + if not record or record.get("user_id") != user_id: + return None + # delete() reports whether the key still existed: under a concurrent double-submit only the + # caller whose delete actually removed it proceeds, keeping the launch strictly one-shot. + if not cache.delete(key): + return None + return record["payload"] +``` + +The point generalizes: **a safety property that depends on the prompt is not a safety property.** +There is now no sequence of tokens the model can emit that starts an analysis. + +## Deep dive II — "it works on my machine" is not a reliability claim + +The most valuable thing I learned this summer is that you cannot debug a small language model by +trying things until one works. Prompt changes are global: fixing one phrasing silently breaks another, +and a 3B model's tool choice is sensitive to state you would never think to control for. + +Here is the case that taught me that. *"What jobs do I have?"* consistently called the wrong tool +(`list_investigations` instead of `search_jobs`) and answered "there are no investigations", while +*"list my jobs"* worked fine. Same model, same temperature. + +So before changing anything I built a **reliability harness**: nine scenarios, each run eight times +warm (model resident, KV-prefix cache hot) and twice cold (model force-unloaded first), against a real +Ollama and a real database with nothing mocked. Warm and cold matter because at `temperature=0` the +only difference between them is the KV cache, and that alone is enough to flip a borderline +tool-selection argmax. + +Three things made the measurement trustworthy: + +- **Same-session A/B.** Run A (unmodified prompt) and Run B (modified) ran back-to-back in one + session, so the prompt was the only variable. This turned out to matter. In Run A one phrasing + flipped to failing that had passed 8/8 in the *recorded* baseline, and a cross-session comparison + would have credited that flip to my change. +- **A sanity gate.** Run A had to *reproduce* the failure first. If the baseline is green, a green + Run B proves nothing. +- **Collateral-damage controls.** Two unrelated scenarios were measured in every run, so a global + prompt edit could not silently break something else. + +The prompt fix passed the tool-selection gate cleanly: 0/10 to 10/10 on the broken phrasing, zero +regressions, all controls held. Then I measured what the gate had never asked about. Did the user +actually get their jobs back? + +| Phrasing | Right tool called | **Jobs actually returned** | +|---|---|---| +| "what jobs do I have?" | 0/10 → **10/10** | 0/10 → **0/10** | +| "show my recent jobs" | 0/8 warm → 8/8 | 2/10 → 10/10 | +| "show me my jobs" | 0/2 cold → 2/2 | 8/10 → 10/10 | + +The fixed phrasing now called the correct tool and *still returned nothing*. A diagnostic on the raw +tool-call arguments explained it: for that one interrogative phrasing the model emits +`search_jobs(query=None, status=None, limit=10)`. The signature was `query: str = ""`, so an explicit +`None` failed schema validation and the agent gave up. The working phrasings simply *omitted* the +arguments. + +So the residual bug was never about tool selection at all. It was a **tool schema too narrow for what +the model naturally emits**. Widening `query` and `status` to `Optional[str] = None` closed it, and +`list_investigations` had the identical latent gap. + +**Job delivery across all five phrasings: 30/50 → 50/50.** Had I stopped at the tool-selection gate, +I would have declared victory on a feature that was still handing the user an empty list. + +## Deep dive III — an objective verdict, not an LLM opinion + +In July my mentor reported a bug that became the final third of the project. *"Summarize job"* and +*"Evaluate job"* returned essentially the same text. The reason was structural: **no tool read the +findings at all.** Every job tool reported metadata such as status, TLP and which analyzers ran. +Asking whether a job was malicious got you a fluent paragraph inferred from analyzer *names*. + +The tempting fix is to feed the analyzer reports to the model and ask for a verdict. I deliberately +did not. A 3B model inventing a maliciousness score, in a security tool, next to a UI badge that says +something else, is worse than no feature. So the design rule became: **the verdict is IntelOwl's own +reconciled evaluation, and the chatbot only reads it.** It says exactly the word the job-page badge +shows, because it comes from the same `EvaluationEngineModule`. + +That required work in two places. IntelOwl's core reconciles per-analyzer `DataModel` evaluations into +one verdict, but a set of key-free analyzers (DNS malicious-detectors, Phishtank, PhishingArmy, +Phishstats, Tranco) were not populating theirs. There was nothing to reconcile for exactly the free +analyzers a self-hosted user runs. Fixing that was a **core** change +([#3893](https://github.com/intelowlproject/IntelOwl/pull/3893)) that benefits the platform whether or +not the chatbot is enabled. Only then could the chatbot read it +([#3898](https://github.com/intelowlproject/IntelOwl/pull/3898)). + +The reader partitions every analyzer that ran into **supporting**, **contradicting** and **silent**, +so "we don't know" is attributable to named analyzers and not an opaque shrug. A silent analyzer ran +and expressed no opinion: a blocklist miss, a timeout, a missing API key. Hiding those is how a tool +becomes confidently wrong. + +Every other test in the pull request mocks the LLM, so none of them prove that a 3B model *narrates* +that payload correctly. I gated the merge on a live smoke test against real Ollama, with five +acceptance criteria and a fixed seeded job. It caught two defects: + +1. **The model paraphrased the numbers away.** It copied the prose `summary` verbatim but reworded the + structured verdict, frequently dropping the reliability score. What pointed at the fix was noticing + that the best answers were always the ones that happened to quote the headline literally. So the + copy-ready headline is now written into the prose as well. +2. **Then a second defect took over.** With the headline reading "2 of 6 analyzers support it", five + of eight answers concluded *"there are no silent analyzers"*. The model had inferred that the other + four disagreed, which is the exact opposite of the honest-absence reporting the feature exists for. + The headline became self-contained, stating all three counts including a zero: + +``` +malicious (reliability 7/10) — 6 analyzers ran: 2 supporting, 1 contradicting, 3 silent +``` + +Both fixes are pinned by tests, with the reasoning in the code so nobody "simplifies" the headline +back into the bug. The answer quoted at the top of this post is a real, unedited one from that final +run. + +## The numbers + +Every figure below was measured on a CPU-only laptop (Intel Core Ultra 7 155U, no GPU) with +`qwen2.5:3b` on Ollama 0.30.7, driving the production code path with nothing mocked. + +**Latency**, warm (model resident, n=5 per scenario, median): + +| Question | Tool rounds | Time to first token | Total | +|---|---|---|---| +| "What can you help me with?" | 0 | 0.29 s | 6.4 s | +| "Analyze google.com with the Dns playbook" | 1 | 12.3 s | 27.2 s | +| "Summarize job 3" | 1 | 9.4 s | 27.9 s | + +Tokens stream at a steady ~8.8/s, so the user watches progress and not a spinner. Time to first token +for a tool-backed answer is dominated by the tool round: the model reading the prompt, picking a tool, +the tool running, the model re-reading the observation. Output length has very little to do with it. + +That last point killed a change I had planned. A 127-second turn in an early smoke test looked like +runaway generation, and capping `num_predict` was the obvious fix. The benchmark showed that turn was +a **cold** run taking the *correct* two-round path, and that the longest warm answers were ~160 +legitimate tokens. A cap large enough never to truncate a real answer would never trigger. One small +enough to bite would truncate a real multi-job listing. **Zero warm benefit, real correctness risk, so +no cap and no pull request.** + +What the same benchmark did surface was a real cost. Ollama unloads the model after five minutes of +idle, so the first query after a coffee break pays a reload: a few seconds if the weights are still in +the OS page cache, up to ~70 s if the load is genuinely disk-cold. I measured both and at first +mistook the difference for a contradiction. Keeping the model resident by default +([#3856](https://github.com/intelowlproject/IntelOwl/pull/3856)) removes the penalty in either case, +at the cost of 2.4 GB staying resident. That is why it is a setting and not a constant. + +## What did not work + +**The prompt lever is exhausted.** I made four serious attempts to fix narration by editing the system +prompt. Each one traded one failure for another. The second regressed two phrasings that already +passed and was reverted; the fourth produced the bug it was meant to prevent. The prompt sits at ~550 +words, and at that size a 3B model's attention is a zero-sum budget. Every durable fix I shipped moved +the problem into **code or data**: a schema widening, a copy-ready string, a populated `DataModel`. +None of them was a better instruction. + +**A residual failure I could not reproduce.** After the routing fix, two phrasings were documented as +occasionally flipping tools across cold-start states. I planned a prompt refinement, gated on the +harness reproducing the flip first. It did not reproduce: **40 independent cold model reloads, zero +flips.** With no reproducible failure the fix could not be validated, since a green result would have +been green with or without it. I shipped nothing and wrote up the negative result. + +**A criterion that genuinely does not hold.** On the terse phrasing *"is job #N malicious?"*, the +model names the supporting analyzers in only **3 runs out of 10**. I measured that at n=10 because +n=3 had suggested "never", and "never" would have been wrong in the pull request. The verdict itself +is correct 10/10, and no answer ever substitutes a placeholder name. It is a real limitation, and it +is written into the pull request description rather than rounded away. + +**A cosmetic bug I chose not to fix.** In roughly four of nine answers the model calls the analyzer +list "the playbooks used for this job". The names are right, the noun is wrong. The cause is known: +the prompt advertises a `recommend_playbook` tool, so the word sits in context and gets misapplied. +But the prompt has no headroom, and a prior edit proved that touching it regresses narration that +currently passes. + +**An open question.** The rule forbidding placeholder names (`[Analyzer 1]`) turned out to be +probabilistic and not a guarantee: one violation in ~40 measured answers, under a stricter prompt +variant that was discarded. I filed it as a report with two possible directions, a post-generation +guard or accept-and-document, and did not implement either. Which trade-off IntelOwl wants is a +maintainer's decision, not mine. +[Issue #3909](https://github.com/intelowlproject/IntelOwl/issues/3909) is still open. + +## How to extend this work + +The subsystem is shaped so the next contributor adds a tool without touching anything else. Everything +lives under `api_app/chatbot_manager/`: + +- `agent/tools/` — **one file per tool**, each exporting a `make__tool(user)` factory. Adding a + tool means writing that file and registering it in `build_tools()`; nothing else changes. +- `serializers/` — one DRF serializer per tool, all returning the same + `{"errors": [...], "": ...}` envelope so the model sees one consistent shape. +- `agent/system_prompt.txt` — the prompt as a file, with per-tool selection guidance. Watch the word + budget; see above for why. +- `tests/api_app/chatbot_manager/tools/` — one test module per tool, each with isolation tests + asserting another user's data stays invisible. **Treat those as the contract.** + +There are two mandatory rules for a new tool. Build it as a factory closing over `user` and scope it +with `visible_for_user`. And if it has a side effect, route it through the pending-action guardrail +instead of a flag the model sets. + +Two things were deliberately left unbuilt. LangChain's LangGraph checkpointer could replace the +Django-backed conversation memory, and its native interrupt mechanism could replace the pending-action +store. Both would rewrite working, reviewed, security-relevant code for tidiness alone, so both need a +concrete driver first. + +The user, deployment and prompt-tuning guides are at +[intelowlproject.github.io/docs/IntelOwl/chatbot](https://intelowlproject.github.io/docs/IntelOwl/chatbot/) +and [chatbot_tuning](https://intelowlproject.github.io/docs/IntelOwl/chatbot_tuning/), the latter +covering the model choice, the context budget, and how to swap in a larger model. The reliability and +latency harnesses are reproducible scripts with their raw output recorded alongside them. + +## Everything that shipped + +**38 pull requests** merged into `intelowlproject/IntelOwl` during the coding period, plus 4 on the +documentation repository. All work was developed in the organization repository, reviewed by +[@mlodic](https://github.com/mlodic), and released in **IntelOwl v6.7.0**. + +| Workstream | Pull requests | +|---|---| +| Foundations — Django app, Ollama container, retention, session API | [#3715](https://github.com/intelowlproject/IntelOwl/pull/3715), [#3719](https://github.com/intelowlproject/IntelOwl/pull/3719), [#3726](https://github.com/intelowlproject/IntelOwl/pull/3726), [#3727](https://github.com/intelowlproject/IntelOwl/pull/3727) | +| The agent and its ten tools | [#3722](https://github.com/intelowlproject/IntelOwl/pull/3722), [#3729](https://github.com/intelowlproject/IntelOwl/pull/3729), [#3731](https://github.com/intelowlproject/IntelOwl/pull/3731), [#3740](https://github.com/intelowlproject/IntelOwl/pull/3740), [#3742](https://github.com/intelowlproject/IntelOwl/pull/3742), [#3744](https://github.com/intelowlproject/IntelOwl/pull/3744), [#3762](https://github.com/intelowlproject/IntelOwl/pull/3762), [#3775](https://github.com/intelowlproject/IntelOwl/pull/3775) | +| Streaming, chat UI, sessions, health, page context, quick actions | [#3757](https://github.com/intelowlproject/IntelOwl/pull/3757), [#3765](https://github.com/intelowlproject/IntelOwl/pull/3765), [#3768](https://github.com/intelowlproject/IntelOwl/pull/3768), [#3769](https://github.com/intelowlproject/IntelOwl/pull/3769), [#3771](https://github.com/intelowlproject/IntelOwl/pull/3771), [#3773](https://github.com/intelowlproject/IntelOwl/pull/3773) | +| Security — audit follow-ups, rate limiting, UI parity, the guardrail | [#3777](https://github.com/intelowlproject/IntelOwl/pull/3777), [#3780](https://github.com/intelowlproject/IntelOwl/pull/3780), [#3783](https://github.com/intelowlproject/IntelOwl/pull/3783), [#3787](https://github.com/intelowlproject/IntelOwl/pull/3787), [#3792](https://github.com/intelowlproject/IntelOwl/pull/3792) | +| Testing, CI and robustness | [#3794](https://github.com/intelowlproject/IntelOwl/pull/3794), [#3797](https://github.com/intelowlproject/IntelOwl/pull/3797), [#3809](https://github.com/intelowlproject/IntelOwl/pull/3809), [#3830](https://github.com/intelowlproject/IntelOwl/pull/3830), [#3836](https://github.com/intelowlproject/IntelOwl/pull/3836), [#3837](https://github.com/intelowlproject/IntelOwl/pull/3837), [#3897](https://github.com/intelowlproject/IntelOwl/pull/3897) | +| Integration release into `develop` | [#3831](https://github.com/intelowlproject/IntelOwl/pull/3831) | +| Post-release: engine migration, reliability, performance | [#3842](https://github.com/intelowlproject/IntelOwl/pull/3842), [#3844](https://github.com/intelowlproject/IntelOwl/pull/3844), [#3856](https://github.com/intelowlproject/IntelOwl/pull/3856) | +| Result interpretation: defaults, core verdict, chatbot verdict | [#3881](https://github.com/intelowlproject/IntelOwl/pull/3881), [#3893](https://github.com/intelowlproject/IntelOwl/pull/3893), [#3898](https://github.com/intelowlproject/IntelOwl/pull/3898) | +| Documentation | [docs#65](https://github.com/intelowlproject/docs/pull/65), [docs#68](https://github.com/intelowlproject/docs/pull/68), [docs#69](https://github.com/intelowlproject/docs/pull/69), [docs#70](https://github.com/intelowlproject/docs/pull/70) *(open)* | + +*One more for completeness: [#3785](https://github.com/intelowlproject/IntelOwl/pull/3785) was the +guardrail backend, merged prematurely before review completed. I reverted it and reopened the work as +#3787. I am recording it here because leaving it out felt like cheating.* + +That is roughly 2,750 lines of Python across ten tools, eight React components plus a WebSocket hook +and API client, and **200 backend tests plus eleven frontend suites**. Those include query-count +guards that fail if a tool regresses into an N+1, and isolation tests on every tool. + +**Current status:** merged and released in v6.7.0. Two items remain open: documentation pull request +#70, waiting on a version marker, and issue #3909, waiting on a maintainer decision. + +## Acknowledgements + +Thank you to my mentor **Matteo Lodi**, whose reviews consistently made this better. That includes the +bug report that became the entire last third of the project, and the call to prioritize consistency +with the UI over a scope that was stricter but surprising. Thank you to **The Honeynet Project** and +to Google Summer of Code. + +What I take away is smaller than the feature itself: **a small model is a component with a measurable +failure rate, not a black box you negotiate with.** Every problem I actually solved this summer, I +solved by building a way to measure it first. The measurements that told me to ship nothing were worth +as much as the ones that told me to ship. + +I intend to keep contributing to IntelOwl. diff --git a/public/images/chatbot_confirm.png b/public/images/chatbot_confirm.png new file mode 100644 index 0000000000000000000000000000000000000000..019e6f889253075896837d171e4e6250b1304713 GIT binary patch literal 52827 zcmeF3Rd6KDww*Pi5i^dMnOPb!Gc%8vnQ2DM%*@Qp%p+!IW^S?E|FKVm!}fL9estV^ zs;JJY>deZ@+UwhEcbI~lI6TY`7!VK;cu5HnB@mEru^=E|gixTsJ^rBuBOoA1Ad(`2 zD(;yVSrG2?dYHrWZ5?%aIE*^%8=IS(x_lci`&YmZ^9DAfbvOdHliT)dmknWJ^(FVW zWCve)0`r87gQKIPNv>m4Kq=GfaAfm0VI=UlV@0Dt3pha}Z~_IRxuE~Lfm~R^0xpQ; z4MI-@jUkBiE)Yco<-Y@sL>q314Bm%0+D{DS&k<_?+{Tfp1%3lhssS!|1BpWGPv{Qz z&k>z}z#|Buwgmh|k-+T;`~GY553j^oR8|hN@N?+!Q^vs>DE<)^0;8a1A*>pW;88Cq z@N_L9Vd>y!OhzS4IO;)Gc2p>EI3j{Ph0zTtSq3>gqr$rRDBZ(5lW(G4ISdBw3 znDhOv6~SK5PK{AK1pdr|z2z|$fO`nlva+$_>vDfw-ClAfe2yHj>#jF3v(7N6kL#`8 z*=SGVaB@Eo-m+F1M%hP#+e8YBL3c2*>fHX^P|_qR`6P}wPXl-M6Z4K7Ys1)Lh= zs2I%4RW(=hwY{Cvz}A%5Ad&g~KF~l=c|s=gwn+EBIQaEdruuHXe$gu?d&BQNG5!!| zxoWe=>o`9MhPelxMHv-0U$$XbDp?&Fio3L%pk95{N>ptJvO_g zGTwFT%0w)dJ{R_RgV4%f<+q3;vc8xOx6mC31OZssIM}8Ov}#q6aPUF{{fclwNvp@( z1Z38;wV$s;PC1?KY<`RF(jiY`BBG0S+jMM~DYMus`of-oQk80%G8EUaFiAn8JUc$` z4Tqc2lA3L1-43^paV=H65czBmz%8n)oyn!N0LCsU28|9SGdDLO<;r2wdGkle_s27K zO9TC~vq_D{y$N&*Z|s>aSZiWf4RJBCS*ALDA0Na_PN&Bw-D=}SDRcxIO}FE``zc}Z zH`hy*xoV9*P>62td!NIrHrF>>+)z458cAtoiyUXa{-dAW{a(NQ-5h;#!eS83F?d|rr2TG;{^{=@2EmTU>QktuxvpPo6 zDV6J=vt4LbQJ-!fMh9kqImh;*Yra^zj3@LFC{J4hxf$om^!Z z-Q1(}n?v7;j3&X9y}5+cpTWffyj#1m@{Z5W`Da5$oH^5DCGCT1GERh=qyB zDB=3};C$7DV0GIqL&q@3A}O^pmCp?Q-bXLQ8&nFgJ|S;$rP^1wYf#>`dce+Wme(p7 zlom&&a)K%haHNevEx!1Im#SpI-%RW;3K8g?mb$LCX-u+mPhlV2_5c=L+B92zj>6i=U0jk=r zza(>J_h}NTTpX7%E?|<8NpfxnATb-8f86wpWorE~X($oqSbxAC{PcdC_1YSDp*foP z?a}(ti%kA~#X>8)K0`&YLxP*+JsI~$8iu}ljkD3m9j~kQMeNK?*GPS_ngAUfM&O^I_@X>D9yPiyUqIhu2jEyfi?C*;l8i=Pw|$(l zueQ7E=K2rn_P))u?xrD6Z>YIW%Tm?%nAIRoj`zRR5D|U~H@ox4NtzkRV7!ViEd-ry zWcYU5`va5*Ng-xEOsH)+=7%p8OTyY!RkXXLkRibi6?60RyWMq`L!l5R^H(1g$J5nX zWyA^SNV3;6_1Jr!Q`7oV^!(nhnJQ!VavZ^c^Pqk%WLmmEuS0wDmra#5;vER@^+AvE zwf6ZYI2ufqS}si0v)he=WLf#`)aldvT@2#g8%W-&qfnYg$D;2gK6!3lsSETqx>&`l z&9OKm{RDM9erld&1<^L=h|=O(tQAFO*D1KZ+APqZt}c(#DT~x6S!fT8PnUPSPLpudSCq`SRK3+gh_RFuRtt!yul6#h^TNr4==P=*jMXf*6TY#G&ibP~AR0O1M+}@|O28mB+ zGVohj_Sj}|^$Ed2&4Kt->U3WirC>7XYz~kVwBCg;n+`7C!^4%res{y;b?Up{d@Etl zry!$XS?youpBeApXqGUP?DKb)f_U!Q@-qFJJSxsvimr00 z-#7UE)9#Q}&{$F)9BFeA1sT#zDGf77>NOrAJI4@CZSV1b6%I@i{YJ)0*6DU_=qk_; zKD++AIW2a8)TBIe@n+O*X9kL@e9yyhe?YjErtEvOzHY8()d4M*5B=>{$N)j|OydvR zt;RTCE(z+!J3kD%f_apuz)e#C;%2AfT~EB$5>gYGA%OY}Ez58bImoK#1F^ilYqVC6 z+=Y(}A}i9KU1@QM8cfwDcn3!_+OWO9 zS`^l9=Ggwuc-jvfBT8k*qy-v9#aSk$^nGNqMy9lS zL~S<}H3XkQ&ZgS6|C+ExqkLwr^?#$-VLY@~Eo3*LNAiT8%o$_Sq5k zP3}EdeHhG-7ES`Y86r0g7y;i!Tx>a$6NESu(ZOAEZwM^R0+A`#l1+#PfUPK0LkEKdhHZ z6O$+BdK(%(qU)qx(eapO8VxD-E%l(g?XAI-h^akg!!VaI*w+?OSg`lx|4@$i;uGJ) z)R~ICnyGAtt0`zMb6cC1BO z&Ta*ID(#eE+0p1cOL&wj_~F2L1c)War&wHw^~L;_ zpQfm;JhbZy@8Uw<0X4L`6(3YT@Pq^^(z*j#Zwb*q|BFG4_u59OCCzZC0eQL>T#vLu z?RQeP(2wGHo<9v^zPIvW&#_n_%ax_YFC8L&E59^ORDLBd2;w<0);p8BSo$Mq9-=DlL zcf%yuk3s75d)pj8|MWe#*hZCOX-LRQv#_!I7xoAKkuh=(SeO4uU#w7_(!$N!pI0Zi zsFEPU@#0x`+sauHmPqor{(#18wfJbSXt_x2oWG%soufhjldBofe&YvxEln5$?^uKbNr9XNCX4$VPg|s_6Gv z@SUY)Ia8g3e)o$Ili?vcgBmG2{pZfu^{mNY!;T^`rCN_^RB!Cg;9#L1$p{{|3r1X% z5f3|`_baY8QRHH!VAtXVd?Dkp8YO>nUnJTX+-j--tIXkO*cvk4DiB|20;0KGb*`eGoIP(INPpOIwM|r;3zBc zZ3#(s^y8|}n(ZA^$E|ojz7Q=p&T?-#^!8I9hX{E1*tdrF=%uBG9OYbT%_^a7B_SI& z+I1{0dKgalk2M_6k^%>|QqugpP;JADnx;Hq@d8VepA-VW6(r41@_u~<6tqySSg4QE zRr)g>>UiE3th9tyx-pkWGmV&DV|GbCXk)t@maD#XJl#);wx5)lKeAW-Me4zpt3p!S zaykGnQKMB#Zvw1Hn&`QzqjpW2mtNRQ+IB55=89vAEkW^yoRH0p$TMYrZ?RfvTqXJb zP^CGP7wHpraDbLdahz36BIA1BZN8v$t3_o%gpl(S49qg=Zwih68b0^qRRQ30zl344 z_3>x`kc-m|m%-{YSDHr_j;^ds1G3oLFYASnE2Y4MZuA5$y&xj3 zE;cl1;N74C>FsnrlMaVDm*(`qY1#u;u%3q&MW>D4CoQYx4DP7C>d8ZT%Ej2UIyH zNHS9boMW?AYis>r20j8%xgt3C|Y9f*Gw$-oyX&Xe5}P9hFr!Mc0E0|bW`gI=3B z%Ja+eqvHfy0&8se>9sX$uaO#tRb4J}&8PSH9KStd`-(HRa;?^HVntxs-s-17WZL{v z$cxsa3VybExF+`$XQuu6>v}dJz77pRt-+pOsNvP+GE&01_-*1Y=cv(kjS}-a4D=9d zg}&SV+zZkYc0{uDnkMb$dP^FYFDvMMz_7f>#hub^^@+Sw{r3+Gxn^v(+?w+8@Sjb4 z1{Br;27neQjN1^4)zZFjE*4hSggbq_%v>0Gj_xp7XzK9`GYUD(no%guWa9!-{YSH9&(2q5KhJgZ@E53P#}n+Wp@U zk^Tmg%dq}A6xK%cVQvzl{d9A!4E=uTjT)}40syUjqF!b8H}+Wf7LRkplT@MYyb5IC1LW2 z1O2}8xlAG`Vg}{1ZwaDzcA+H(lEH+boiej`|7tJFpoc7iPjSvc^$%L}3#;5Ne2AXQ z*_X2EDl%zG?diKv(gK`+RJU9XV=jAdom{`K&X?b<*~&fxFx8u6R8V=am_(L{`r-u* zZ3G>~3!>1Qu!-&NiP$eiMScjsv&0&V88l`kyIFf)_y6!Lha>pI#MX7dzl&`5mHG2V z^yj~tNEVPAK%y_E9$;Lf=I}LQLG(irBMSPp5yLM~GmE;DQ7+0ccobG0t;I;jTam2& zaCMG8*Hb9SZqqWfNh;Yb)8-?~y8X&tS5!~Z)ROBcO7ax6NxCuKEvQ}K%7(TxnlD1Q zt&jVZ>`5%TMj^x0t0@3*(l(U^dD6}6U$p-g$$Lzq^k!1Sq@^j*9g%U?X(?@-_Z_qH zt->+4DRM1Krc_g1mVsxJlrv+U7Im~*$5bG&DmgW%{EHXI$9-~Sz+_- z(GjwI%fSL5tW?rUL0b6NoB)gsa2R=!^4TQjo4AEnpw>tA#D!NpS# zGNE!GtG{(~hFuzFOYN#ntBM@?SzVgV`YTEseS_E(TIwOos}(K8yUFYxK0Pc8Y}i89 zEzxF?+5Y|wRcTy*+)=5XnxtJg+r*rN3+bIXT=QJK9;BtJ(47>K)lOkfR^9f$x@jYX$s7?Oet}QhbYIY*tP5qm+8QY?R@u%UpNY1 zre0|y9oNxR5K=dhv#2U3w`A9%o+eg`@sZwoA>*1KubrIR@xAD0&IfhJ*N2lxyNW|f zpw85kg5||l|AuEbIWlM^SSFJlLQ88AjIp@!qUl@*@Rg*_B{MgnsyfY}K25cN8SWTP zX+wS_qbBrt2=a{Jslid^3`7HzU$WmWs#*L=Qn`C>T*l+031E zC!$bm^{m{sx-ei$>(umtbJ-pD%J?zIMfl;znfH#Bp?NU3Js9T);Am zvi?0$-C$GcWlnrB=KP7~Ns1GfzH&`m+v{tL*Iq8pLBW!jczBp&-B}Ov^jnc zc+VV*gR8}zwF2IlHnWF!1s(H}x6;x**<==GqGoHSNtCA-7b=WL1E8QZHF^{_HPBO> zj?HERXxO9r3Vai@j*|3qeqI~Rw|~0JP5C826&ScPO=j$weXb!&?($n>SffAvypj~2 zg-4C2P23o`Vvvj&w`{6Y>Op(nWX;eJI#1MRh9emJ6;gi27b9V06D26hO4|f}Xe%-j zCOmQ8m9SATKee>5evp+IJ4G3gl$^Vkm6{Tlf9Zpw^ntRclYy1EsD2wM8B)bMuGX-$ ziKQW<;dP)5gWqhI{)3fSy#w#=ZySK2Qc+94>EY4*De~!!R3A#hV}7C+AWr6qIag|4 zsC6X%2aInlR-&dDG9be8;?oeJH}vH4j`xQ3z{FdZC4gv%_3virYce4kha59p)E`kc zc0ZJ?=c?ER^%$d7HFyb`^C!|PE9n7GQ_Jrx8mPAN#n zf%jBQPR7i>r*G2Gub<>ZQ37l@)Htn-jEyMkL#La@=)2Y9em9i^3fQmM_-O}=NxDVs z!(Omt)d~Xsc`($Vq(~9@$|?3U24ZE+reDy~7(xQOL{gXFWJG)MuMy4Mua{;4&UK3X z>3O|O+XqwZ{8hCqpFONQ_n|7!Q{_5A9!TK3$(>=6;;d%g4zgnu@`E+yfxlCd$K6W6 zzWKkHG-_#;t23&oe(Z*pR*c$9?lAQ+QWetmMsfG6-K!dxR|M*D{wSMbDA@dTpmjUW zuq>6KDdVFXSjkCDr6zn`wrr4Y9MWCTQ7(!uORr6M$PhI9D7t1+8Q{`+W%IYY<@f3i zBJZbRh9N8*`iOjQB3GmmV(Vj&CXSyiL}G;7Ab*g zGTscfKO?J{1m&4M8u?@RXiU445*vM(Rz2x_98c+CVuG)jR?fU<8a6dUt5`OtE*OEh z1Pi?+Ka8h(vtGwOPKBG=C3@m zW+D41A#h`!{x)6b0bUiOGC#y}-#%!AotfCZ=X1syv;C{?J9#lbjC6$)1NnTs;n?Yt z*4(SM1aW?#=Qu6l;UzU*Ea#EQkUw}^kbuVXsf_Lw|JN?n5ugbK@-Y$zw8vqA4 zQpJ$l5Ik0u2G!+Hu{Vv^+c7B?!X|7utsf`E#$8mBGs;{bi|=J$$-B}k<}Bj}n{T9f z#RTtw|E$Vn{{lCKPXb<)Do%QZN&Ef0FBQ}u>EOEEX(`A}`7x^BaSY_zDr{;&_x1Zu zjx&g3EVH9QngK|fI5vR4Y(uT$G!;2|D?xA&NSwkNudSSfx$ZW_JSie$G#R&{K}`^r z{u34H(}aDm2;A_tp#$56HB5UbR3u-`@K?+o$#>^toh{mtbvs^o}eS7+UV6_N^e#r55*@uOq zpS^G^wSx%t>kRT%{DhUaGN@M5xgfwUWr`R#Up*EpJ>;(e_u^fYZgOUN_@e+aj9a}p z3o9XUOb>3|j#I`KM#Whf zYgw1upO+MB6^CnK1%th3Rpt0XiXgZ9ONSb=js03XCf<#8wU5?S7BrJK!IMQNm!*WM zjP@jZBfAc=LqVqRQ{dPmhutRajG64*pYlowg^?e!cjuZVAoUO{LG(qYaC)zs++Vpw zX!pW(F&H3XuD=q_*Z|+q*1jvG_5T1#9!$W433XtJFWx-{hmIK0Ix5=p+ z{#lUncEscUTDx<5xtB~Gv9Kw6 z%4_?UpKR~-sFHS+Y&EJguG*!kG|=^ z%g|M4uukelM6vivOZcH=s{!<6tZm^cKbEq-_G6_bkOsF&BIt=U|EDDT7r(^lzgfWl zBH{i&3ba@4{)?GKG2YT9LrtHyDmOMW$!x2%Qu4!*iC(U0pAT(i4gC+VvNmWkB3K$8 z?yt**B^ z9Y=5t;l;=X{tDdevx`B=9>hzhZ3+dp9;}z1<=e7TAq~_o30HGsenE_-9#NHY$}cQF z@gB0AvN8Y>`$wZ6{X~d3k{@J!ZMRcH^wxoXgL-ypwb${o_jg{{@(xzCHg%my3lk3; zLkbdj^dk#lAMZGr8X2m*u*15`sBE@{6tk&9SJre}hH=Hv$y*EhxR$2E?D4X*c0M|I z;Wey$=0iB&HjPc|1;yjh=HQ%k9Nd~>Z5*}Zc zI6j1sc|j6dS`w0_01#BTmLKH#Y2E{CSg%dYfrlFFD$SQ=730>Wr5|~1fyfyR}F0RwDajS}H&@ELu)#70w%U8Yz z_l!f1h$Mi$?q_H#c$_wdfwYuyl79SAoG)457NiSnnfcC^){o|<=znOfsIBd#p z#;x8eP89V>fO?sk-|Q`wt|4TlXMxSpwzfKIa*e_OQCv%plR~c}+Dj?%Ya{RXYd3Yf ze7~~QRuuLpwVrD4MsBV!f+W(!vCd2gYdl*FS2Ch%K=*2*SL9sC%$a;?b42Yw;S@#59WH6N6M^o9l^g zwNInzBqmaI6V}pQw1gK*_EP)#4GaTisbA?MHl}_IZ2?@S;EhSVy9k^N8sH$7FqRp02f!E_On-12UN%Ysxqk!a`RCNE1o~?zOFK?Hw-WLB_p{hc`k(g$ zE_B5-<74#qNJwfY27nR=nk@>SF!`PziEFo#8x^CCLnbWxG?IAAi`p)aYJL*LP2*Ov z20j$rNo^R3%()dtq%#lJ>Wy^?iB0| z3ezjoXvSm1WseN`c~AQaB-U&#eo{(DNVS%{`SZ5#+^^8W^;u1&CTKN>=B9Z^D&l@$ z%LhfQUM^b!{#X25yBR;L3YR)L!XO&Kn`9Q-`6D9a(W@&;16E-0k94hBBvcW3D3lia>UlTa7(s1sDv_9l9?1x~^!X(-gNJw-D<5QwOu6Rr;rM)zZ z%rbSaNBT@*4nlk;UGBy#aG|fi+Dwfl-HjNAWF}Ew!oJH&nNj|O_DU`haaw2D&KO}Z zbn?X+2M+DB@*<;Lv5}6W2qdW{~oO9nvOYm%P?f6nX861*jw${HrUjt zM4%=UKy-&fs?qa%=B=0bN05t(+*fG4!3w=D{aL8IW&*aa<=%bTyIFSKThJyfQmKS#a3z_9+Dy!oBB%vFEpE?aET-7_*8NhGnkJ!Sp}JHM7%dJ`}&M zNBUR#LsM?gsZUhcCxS%gMQjC`D)oCukuS1nzEPp9E{hVOm#%QVFlZonVfU29H(Q~C z!7Xkg%1&B_-@tyO!s6RjlB6J#bzk5RP3uW*!_Qos<#Kg_$eMK}?xA8-Y<(3bMxd+l z?vMG62`J&JA{fzwReF+l$_^@NYF6sekdA?G?+`C(^1*#0(;K$%4VTuwqjxaz$RgY0 zAHNTkv%6&+mR4(|nWtUN;3s>es;pbp)>1-t#<@-pbxQGo3M8D3WRbF{LW;rJf|j&# z=O4Znca{gHCgk2qSl{EF^MkARt4_>cX^K0)6}=EUMy(b#G7gfzFl)(SSyV7B$yH25 znFo)KC>)vjFIQ5QL=ho8FSA@WVRp$HKna05LWlhftfme)iIX z-lCBiWyYxgxl-WY^;915RO`5H2-r@)DQ~ZV#EOAZC&|A5`XyD@tJ5kS!Uj=pilk}<-}XP1ggs4%-EyUbzqi5$+u_@tVae~8uK z9~lQx@aTm)h&sqG`wJHpy+6>~sN0j-E{BOgpPB2302OGBe1@A`68P`@kpE+N_8-_M zM<-uufu_2J#l^;^Mio_6Y=6Sg4KdZ+>Nst`_X~|WZvcXgbP6p#W)2}5%swjRG^Zd^ zn`AX~a(cQ}&|J}vg=)nnrJ(vJGN7FYm`0M5DTL;S_8(<)l&uBYdW3}rvOC?2N(zi@ zO_eI`^MLK}e>zA?ODor^PDfv|(*kpXUS{5&F1FjHagbwX{A5l4C* zPW)6{X=7gR91fLjVPhGH1Zh2evo<(-?H(dxCR|-6)huRnUqHvBNwcsa&N*I1N_M+@ z5YZ>EBg+XsGJ4STmJ!8eI0p7?kK4;!kr@0%hwrhTd76LK6%T(#izQw+7B&{A3gvQ( zmAH}c0Non`b597vws*}|I}RSsUnKB84o7}yQ3HFZ>^U5_OJ!wcI`#2x!^?CjTP$om zpSRt8Q7iUlt633s@r)PVKv5APCE)P6kJ@=u5fL%nHcYp`F55O+tgSRl>>gL!0*xM0 zw&x#<6tq7<+0!$Y*OQz~w>rOW);8ZZ)~rSl8!uTnxyT@V`{p#2-Ee=dHEZt2yEfNm z$Yu6C+^hl)%Iqn(eBM=h=lb)!x$y8V#iz5cxt(dr>7$W(&?=55&)A(=yWPxJ;e2VD ztCXwCWxrJ{6~zq&cSPybwh~b*UkELU0k!R;wIe>X+1#^9+&Q2zai!y>%ROhJzu$vsYcR?fF?} zX+~S?BFbZQHyDo%luTdqIpXr*0u7Royc04qKexO1omR&Vn=(2vmgW`$v9+rl$udBb z3HW^40MDmsG;$kSs3Zf`HrlFXDnvj#-QxXZp0e2oXh3bJ=)kM)TJvDo;NWnV#~1SV z$J=`|`5wJV%TN$^zuUIA6X+Hi_Y}tJ47O4$3tQK-JymNS&sW?lO7rz5*kd?+eiwu3 z>btdXMw7yxZZ(=ieG3`~IQ`$fcaP$3oexxhkER%l|1?@+TXA{44EHvIT0?l6E&0sm zTB%@@jW;CW#lHt5SFY8A&CRshUM}97!ar{tb4H$7TK+Ya_dB@r23l3H9x7EAzj?)K z!f#kp(ChdfUMY^Qwd=RY3BNt))OmF5WeGC_y~52`Jm9KT8qE(kzFkD2>UP_QPtapd z9+xoEsGfuLW$Fc53KA!us3o_CDY;VnA@F=Yr_|l@Ke*7o=rvooI9V&(jf&Ft#in)Y zmGlU$-)jY-5UW<3|Bg)8$c&*phY@WysMpk4l|*CL9gl`(g+%{2IS2Y_jK?a=z`i&% zwY9A-Vm~WduDn0j@E*lW^}igp9CivhZ>#kV0W=)f_WXIANM-05&3!S!&;ed9w`;NlJ>KYS zLtP=?j(PB=7w&jD97^w9HQUs{@} z``@N0zhOG}eC#*`qJXK!?PY|&L4y^V=Lv1d|7>i#rYbAjMUG=^V!nFXKW4B%F#<*6 zL^UGurqW;gB$8-R`!@@?{BAcE&tURG0^+N`U7e+X4;r3x3mukrg$qoqxA^=mCbO|o zRTZ6%#H^m<2`NiWPljQE(Xuc!)#`6vxhSe=ZDRT4I2+y!0Xj%;yM)q|kP_jgj~uKF zn+uD^@J|E`8{xncwL$qkhg%hqm{|#ZxBTu@>VHP-<;hr3qS1EiTBYsI+<+S!nMJw{Un92C88I;X6sn=vjqIXK**u(0sGon80n4WM*I?V6uY%pDku zES03LoG`0a>wF}i)$06l1a!XclK0U$8?Oh;xFOub5BINKc4&%PY4yl8ygo8t;TEJ- zWw81iH`>jjJ&~07ba6KY#6Z?udT|l$KYk8G4$)wl^oCJ+`xch`)$6bxSh7S&l3K&C zT5R22m?Z(a1wU`^)t`6bdaBkqtOvUA4{Ka>}faMT~!=XL=3k#f;jh$M# zo|6QB4QH++gqg?h`lGDUM^d@2od^v+N5YgTbSHpf`bZZ4OA;5tXmB8+VK`>B{yNuB zfl(b!%jt5eOLU$BvzBpWdQUWhHiH*FPay40#L%3;6?7emUmCpyhqrcH-UyyqvEax0 zC#OT;n0*^^dp}t!=P#)8@uhFf-(E*mZ`$R=@27OHpzRSm#Vex8Q%(s96Fkm#NdsE2H_ixP{)gL_6gUs zNVy-!u?P{}JTo$e2y%muI^ftxL+0NNg`@T7#<#a~S5knhu{2$B5!%$^sZHlZnNi8G z1gawmtaeMWwjbXfZAJ%(AIafQza!sFh)Tw~}bBsFu9 zFWBo)uu6tyrQPgsJ|#TD2v_emK#kP^#h=sR`7s}p!ouv|Z(odHryCQeuz)S-26y0K zg;}*3S^#%43lR<(CP>n|6BQLPKfkEiu)|-9UOhXHS%a9v7t$Z2qi1ezzLPINdqeB- zaPb0kRiS5c;;!@Qa?@|O%BHz;I=*%WwVf`ZN8D5jo%k%pCuL%f64ihztVkV-+pS7j8H)QOeNH5)_{q*d_p8Yq?ml3=_Z%1q*vcW`a|(-!5Wf!TFf=k*Y?Flz zv@>`zBGkEENBo&D*F?R!*7CAl=`le7?)t5<3{ZM8>Ku|hdA3|h--NUV&SeDUpJU7) zS6&yl+l#MjI7f08Si(KrQ-|b=G4Z)GqYzov=hUacIUvud12S@UH@S|O-AYPMrkR#8 zox%KhF!Z+t|EH-h|4j_z9Aby*XCgGiCU10RTQ9IMYhYs9l$`v+ix&bGjnYCLuHa87 zvU{h`_2&^Cj_M&B8!ipv$yQOI&1~X=%HYM6j%&N~KKs46z^HZq4UrfmWau89Mi(F5 z2cqZ|6md+#yvifioA?GP8y$MFnxi8Os63QaKQB-+5jtjM!YobWL4!+m6G{Ou%tJMav5BHBM)@TK4dtY_g66tqT`3#dlTCZC@~StZ93&uqOdL;?$TpR>H9 zW}Img6&6Ux4ih%=eu`qK8O|?2nkbd%(~biB^6pEX!>~~4Z7H~~;sJpMtv0zwMJ43f zkVqKHFCMPYBzBADVTBHzEIjM1?xzd1aqh|QV&uXe#bqxZ3@KL;U5ms?P=9b-D~I(Or+84sF09wUneGw z9x{t0$Hw3U58UdhG|J1%m!E9t%=F)zmOBbCYt}Th7Mx30Ds-jQYVV-_HedHmzTdpi z1gpcP@%1F?&YmM?np9UQbx$;XXczqYm8IYA>GQr&?|XSwmGK=iWJ<3gjVSb8jvb=H zFsfXk0+!?YDVs4tH@~RN!q8HwGB#>GDd7Tz)2h#Kw>G$3jgrUaxtE#DT5+dB|M&dI zNCd}qq`ZXjAO>o;HMe`EdWV`@rY@m}D6E#zOF_chO-*4InbY+4w4kcX?BFcj*)lux zj9WXveCyRF4>?X_t3^0Nm4#wTugl`2o5Uo1y*iaCFVRL(*oW7SV7o&;ds?fDijFRd zr$C0L?S3Wg$|ijPItY}0wLYUN)xV1Ksaj*E$RuGYU}VGZDPFhUzQ6P~;Fa~1XJf73 z`@MGy$OFntOFQ2l4o8D3I-+wl84c0QjK(XU(l@^=-raNXUzBTZrkAu-Rv$|ErOUme z8nXnGA%&X$nOR&4E*qkkl##l-MGOs(UUlBlaJJUb5d!VL;B&yJC|9S}2Ue*9m0nJl z?{|);uU9}OmnBq7#hxgPO(qW>yQsOyV4qXUmb>3@zwj}=(S7UMI8L(5-59qJLD zP1RSMk(Ord=zo_6C~oX>5NukD18zJz0Z*T=HkW?N7vX5_m+u#6T_Fm_(k!SZ8w9I2!HN zK;p=~4Potgy-})v8AwoeYp17qa%NeoG*GwDNNo98wN!3cBNuo7KkOK`%!EBgk(oY|Mdo(fX}QdR1uZ z9m@B^+L%+0egMP1;7d5ccQ9k++M7(f4KoeE(xhjzm5F}k=t17c2>b9E)Z3Qd@RyQ9>2J8wuT?#*)$O@*yOwRTMQ8alms648t=AWZr%qzh2u z;-tieo=m@Xi4*4+B-N0@G+09Dd3Ku&B7exV>~VVTj_-{by}8+T9L|LC;b~KllH+kY zQPJ^Eaxj+Kjj*FjuMapnw*&0g*3I{HngSEY(Rb zuOZ^7ms@-vaRpW|zjBw$x1=Z07}K^nTs3;C;<*y=NBmZwc9=Jesl_LQedi=M8>IM* z#3l>vsray0;R>GC0uP|1WW@!%6cT-8>vMu)%DhMw7Zyt4At;srf9i_Qo{qKm&-{H( z^AF4DW4o=OD}loH=(PIdgSNzlg?3e%npD1Tv(ASVRTTyBZ??b*Rj4-DBg{@m8`vTa zxa@wMfp)iie)+stAB_B))YyO|Zitc)5C7;FJ-)t<4i5vb-RMElJ&+f$pZsd|E`g#U z`K&H4u06G;|CAX7gL6iL6~h2zn^tD>Vx<*ghcG&%lod%6XKFKvPRrL1r!$_XiC==J zNSbCT;-VvRn(Y|+GH~!yHu~S&%-}gp%A?GGWMeb%ZZU%2PRGjj2|XCUh6*NxJosH* zg_*k@G8a)N)s0ZTO@_$VJxz|tlZ9h!HF)!FbfwX7w03>WlndfLM?$ge7YD7>6}U6s zdS6HR9Y+zIz8-Bhy-jft@W$!TG?|HUJ-E2o;%^|MqdJ}6D!1xPo-g+IFaMg3CXr5> z7*?wdR>*Z3Xb&~x^|_2DYr>`GzFfaMXyPgS&PJ=-nW}G4d%zj6XUUMm?rR<+XFote zuQ!A=*dxdeVfB?30r~3r!QI>k*5kOUq<}q`r*^e5-A+r8>Y}PE8FYp)cF- zhd^c?K^{F^Ug1X2eRD(o%ZScyIs*Zp#@J@D$OJVN=d+JU$)BvrOoJm5WpJ2+cB|8= zKbMch(`9HHQQuqbTI(-@xTA4d{OSsfB73DM65cJXYuLzJ49*k5<#HMP6e}<9N6-k) zl9F=$8bQx%D5kFo)LxFDB1-s!&!1OiY8DaO-z!V^_u?>Gnrj>uIrp`Af(J&w)Vh_h z3AGbXVsiX=Doo{QEsdf^J;#2DE?x17Sc)R827{lsB&4US)ub1sr&B|MA6IXW12vrP zC>bdfv7I12ks#8`xBnos^nWaC+_eUCiPn%~yj53q4wdpo z@)+2KcALHP_7$^w60O?7=H$Ihw%K(!#GTykwNhE+M*_=tlj?GXa?)3jdvVSdo6Cz? zVe}NHnRy?lecBYJz#Y6*Oj;k^tcVVFxYH$vw^?NboAwqQ?yIeNOz~xg3=Ugx;dklC zvw5HOxP*!AqrpWSfUX`TJt`iK+uG^U41N|iP>1W+V#r_tQ(5zc*Ehfy@IXO6zt26d z_ow6iCrJq4Y_3?5H~87iT&rZb?c6Q3XEN?yy>(*^rq%n+7xwnz8Ju9u6i!-MxWFp| zBTHOPMoKPO=kxZwh3>mN+~wBk+~wN^iZsi7-G>)@wJIGK+2iiLI!*I+KqFJW%xD$x zaWzzLH86H=jL0~ChhN|J`-F+`IVvTJvQ%woX7sxow>ghXXu%Jw*Xp$j*ypnQSo)*O zD&i&&|)f#s783H25p`A^ic%U@BoVv0H zs_X^QY!Z^eQb_2EZf@f($?bzKb^3aT8*S&6Mu?a~PYQ6z-x@~zp&#n@VrAyvxw1({e=ex zH|IG2g|fGditFpLej^Zq2MBHfg1b8e4<6jz-KEe#kPs}mLr8FU3U~M5?(PuW-ktyR zbiduV$GxNPXKFCcsXBY_wdVZIb>4K!{?csxnAsZ0ksA7aH8-U2uY9g!78fNit(mJV%iB42EXrzd z{Oyd#+Y7X7l--TrCTJ-~$EcO4(P(|UtFsw90K3HW5zmi-JjoqWO3qTzV~JWVcBeH^ z&`7ac=v6q}IdL8Ze5>rTPUKzeU$8!@f^2FzbGux0mt;E?#xiys^-Ro||Nic?e?^p3 zZ@oBdl9dMB3#hOA6YO{A7Pii89mK5A9MUcK_*Q!~B)A#h#0oHeU5 zf7R%Cwc5rmZJ!{e;v-sG!arZ#>20+PeTW`v2y#A#d1!Yeerlc8waZ38-J3I5_`Kva zWt%^l{q&i-l5ilwV!7&hgOrZ!;ouaz0(1FdkBp1;JO(AyZqwiKvJ11+AL&r9dgtJR zm!0RrhTom;h%K=kR|`iT@nE$BJL8r=xE15-6ct)whLNmXF*v6YQ>aYE3)xL(8RD@O zbadP+dk$Mnhe?2!n1UC1IE^76_^r5}sLtNyVoTYqN#GfM`&kG9Wt&KSRhJ+DXwcinF@Z~?H>EQQ#AG-;IIrvZX ztrp9U!lJ&^seqU)Z#-?s8@~4`Sn(m5&tasuX!x$m;_pJt=(NSW;Nc?^>#ga3R_bVS zIQZMrL(d7QQDI%4aJyQ*M&l`uhhTbsi34cbuzRmr460-d}T>V zr?=DdGCnSGN0C+~!cxkBXPq5nbITAo=5?5gx)_)`=5;)LH1f(Cc2>@?{gN|eQuvkt z%g;kV;NpRKso2FSb>$D{{%l6@unvP-#q~@xf6$0-mOf^uL&xJUYo|=KsY7lU-WO&h zE(>7wx0`D=+c4fa^~EoehhlcwIw&5XR~ZMJh7-(R{6R))m(ODrxc=SXZ3PMLme;X4 z%w)xG9qw}LBsX|#Wnobvaf9`S%i)wJ!AT+!X+~WWCMduWGgMw?*niQqrUK9c@843Z;UfqGTQeKMxL6eMCaGp zwDAO7PUZ0;T{YqO?u}O{2*^tIA>^};JJ+-OwOyXBa?wS{s>=XpnzBrX4x9kS$cB*>*n8G`<;dBLb^m z_LOEuRDzL5vc%(dj_jAd0TounOd44OlpHIEA`?vz1Merfo=3C6q!c=AuxV%VKmn%o zXLT-UhL2yHW-?w`W>%vxAz^Xej(Ulq+VNwBujniFHsN`!a_Y|#Z)*{PzgV}`-K}{( z7hFYmEYyE4R7wnOywylrd4uumSY8M=K^%vxM&??jJc|_v5y; zSTTP6EpPuIpp8cjDkP_;GdQ7km@$UHpZnT>sTfBo_Ejrnd{P3uh5U5 z(b37t*&?i@DGV3W8N2x{NAKC$Wkq!8jc}yj^?E&-Yh^BwRq{STiYBTi*bY7#zEply zJY?(|LM|yMx7rNm5*6gV_9?FX{P%8+)OV^S7`1g+HhtYUq!=UyG36G(;R7XKoM+o^ z?l2VQo4<+M84F(8ay~{Y`lI?qoN=iFk(oN6o+h3lgr#5kSqgEJJuGvMpU(WU*PmGA z+xVJFvCmkB{XB8q=;_qv)6iz)nL^L~E$dgND4k&|bQ5{nehM$%il5|xE-Km#?keCR z;zV|y;(~kx)-5@7hCr!o4|J1-K`!qje^>aVg#~vLS#nbqY=|VNy{0E2jdu`%1P^nZ zo`%%(EO(g6>wqgQp{(=e3OT^8sbl)xUfkaC$}h`PK7&<5=#*R)9Vz-#XIifDQ}rvD z6p)MhQb^t0fi@Zlqb*o=*c(WDQUf(SOkvxZ&Zj3siF#*=kA(}{@*~z}?7}IB^s@8o z7bWP!n^oZ-8$h(^;Vk)}{c>PnK7p&!g&p5AuCD~cjF;0c%>J%qec6c9p7s-Nm^8~; zE7pcgMPqgLO|nLeJ@4x7w;h!j9`>mNf%nz&Fd8)ssa=*>mz9RMFrw8sW4+!(vbe&- zh#W_WoIWs(tl|e}`XWbl-UrbbhF<$mDgI+T_XIQ9{IMRpHT>VyiWllyWPf?sL&}J& zD8=Ck-Ul&qmB9g)Knz2o(nq%Nl?%gx_6U(j&)U&(T;b-3&lp~_0{j^T~9ZdCu!q)+>nY7beM_DDLFo8^L=A1 zkJdl8d-OvB2HR6E_enZv1v#Oflt@Nu#p+moNTU7#5#E%-!e=rW{ycnW8cC$s+D<^B za#gNmuqPqfgR{49WQ|y>ZK#MYzMytEGxGKBPilFG_Ap^k(F*R@Rr*eiO_gWfi~GN7 z%QH!YNe-ezYmZdu^`;K{B}*eS-ZU(F?(qc#(YAO@xB07LT}2*K+o&BZ<}&Jt%Xf#< zSIc)gzscu@dY~OqxqnDFTF|Q(dz&BFK2^N+P6ekv46P6&MHLT!XIL1S$-5=x%2b0-G>JjAjB(t@W8-zUb z@6@|zWw}VZ{oUwOLLbQXocB*FePYZ+5}`F|RqpIWA9KWm`lzWvJ(*l>X{3spdyP&j zIVLg;uWaMvIiaa>=G zxg5e{;>&dT||Y`c6MhuvwemK`XKJ-pcXlSOkbf8J8S>AzWtI6p^r z$}tGGzuJl<<~E;OC=!P}@@b)F;4D?rcEG*y-}(I$o`FE*1j7*?fOA@(3OxMZoxS{D z%{=_8t^@h-QQlT+sBhrw)8%BI;$p}bpi62M9CvCcS`iM!)p`E8OLYQlhc0m=af`E7 zwUeH`dcc~|#qmOk&iZY{<^W)<_MJR1oAhpffis!IhencAE~F$Bmy!kTgT7F*w`+lg`N$yTMZ?CYSiYaY zf9q`Sy>cKX&bHW|)J&*l#?w?A6vQL)MwDp9E&{!vFn_X0J1XsiWoztH))Y=L!K-HRDb^sg8$LWhALjKM}({Moj}?L-s&ML@S!G)v}D;^Bw#N0zPwjx zTSLmIs$v^KU3y&~nb`Dk=}o4;jNxqeLMK%0VGcBYiJ(2MW#Z>=QYXQ;wLH%?LzSG$ z+-x2Dqxn*31MM+S-{iK&@4YoeIap}y`+|y!6C2_C)E%H}W>~6c-1Iq8zhC}-lm-oW zePD$g#)UdrEW%6W3*-mFGpW(EA$js@`{6lyaI)8;9_MX-ibCsYymhg>+u3*wVlQBs zeep61Zdm)fCiHHjPWMo=pg<~@E^vt5s4EEQ_LY)_z=_zu$3jFju;)Pwn}6VcZ8MmFe?LE(dIaENdUH82{^I|~%KRV0OGPfttP;7P zc42o$m+Ma(Ta!&G6NV8*%gQ>j{h#(p4v}t(_Y^}!tg&F$MQL;j z#xXdE*D-kEip{&7ZcLbqPnMomE61o(!Hhe-18zOCfQ2)Ni9(_2XhHu+si@hJ;)$ zN2w*~=m({0ER<27o(;oaz-n=zqlT+Oz-n7^e_%ohEMSZ0Vgjda; z7K^@0P>g)dOgin4%FoQ;i0dFtnt;Hr>#@slP?pfr(o%8)Yn2?Y=FV;?ewaRaWf&Dc z5_+@K_xBM5MGMEtDXQ1qE@CtO-aZiZ41j84lH!KfVlNhVW|E0wUG7qutIVKfd2nw+ zj#sTyZnT^yu!yE_*clU*K3h*gLs0`1?g$&tcD2P?M-);#&OK@A>ks(-0-yMXvCv|P*5EZe;UKSDH+jrFlVdtQ zTgVBd699s55Y{1W$?5DY zHe;$4*#&dJb=AGVEyu04U%#A>%nKa&OO%Q!tj*&izmIVabEtxh0FfVLHrG z7p#7W;x^x^+e z_V5^7uT%B+9^5LvHXgG1Cn8*3@44g$L zCW-FzV54-c`$TnT|HAJbzs@Dkb22wfGK8e0qI7o1+3#xly-CY?s6dR%iVm>w_`DzZ zSJkDYzHQ7+RI#z2dZGfeYF7|s6?Kn+)pQIw`~#!|fVMbB62M~#i;ceXqATFAUh>`8 z(}4@X?aZl4qvwOFrQ2!nvv9Djs2*}dO5%;kXCxLiIYm0ZY1tZ@Kf4OQ3;Eb6Qm2Tj ztqZisdZ`fLAiTS_*X9#UJ#F{fIuAZ|yt- zfly#QJKXTZ`4M`>)0SG)@qZR1nX&@4ETk zU*fCcF~19uR9o>P*)_@dSeQ{ zeG49^Ms~R<>!m^xsLxt$T8W9x)){XxPPr{%^^sE(!AXl>)a4Eo8VwXbh z-Xhk7dt8dR?Yqd_G+Ub(re~Yad)~0?v05o+%F-HG2sm8;(T5P6^hc)&<6bI->b6%E zK)G`@0RDRCMje|Trc_)295x|7ujk;XcP=B?0^UfSxG7FzS5-irjJK!ZH5Cr$AFo$G}&!ho5TKU2+oewr{&uh(3SE z6HkkAeV__Xxh#$_uZItMYQYb>wFMog;k2KEKj(5D6E22Jcf7gznu?%$N*dTdi`~-# zHB0pB0qXFwyRWGkt}^-pH@2G%&RFF@ddzl#%g&<5Nh0w0jx+>XyvJV+E`KSWEF(&D zCEz_A&GEc5SkGv56|8h|DWT2Z4wk(t0rErIaf@ zkfoYvx2!D9dlv{$arn507op>MS7il8H%@h(cqN)!HWT7TMN zG&@5Re|1}oH<3SEw+x&Jn;a8?n zrv7%Ly*&x z6J!am4i*fSd!|>vvX|(j@xJjQJ~;e+6mDe}dUiyYb|yGYODU|k;0-y&*$aZJ_BYo1 z(%{l~dJ+=p+Zxw^`pRYZU0nfKy-f1W0?z*NnJ9p@JSa13h-X!`)t~(KvX+?>yYML{ zCE6Cn((`HND&$qlbfJsOvFUL`!s@m5OkFeB$Ij$nC=P4HDpy~%U(MFrW6`0B3uqUs zSFiQvsj@g#lp9;~TzdoiMg(?dpDRZXl|m%_kYtf}HO#*MWVriszt1==TkGma9o}R? z(D82jpTrp`^LhMQL0^@+in1~r`vflOQ#4uI-fT@*gS_67&+XYw$}%EqDNy=9mc%6> zN@odVG$SQ*)XG%KdCH~hv3geMtolder`Ng8cmLM@jfOMZFu!`9aFy2FdW(4NOw7yv zj>~u;6GOeh;K-TQsj_W+E6#3gb7B&|A%1w%)}(2U6l*hvkT3*cZFI#wR8S z=AZ70)$6SDM^Act7*KjE7u#G}JS~8$Y(@krV^ud*g8RL3$TxwFxP+%Y)n1!;TTuSF|h3{S6CyhQot8!Qh%VgaS78eDj&E~&! z^I7io$bV#Wrk`%pB;#VU4Eii#deE~ZcSkoTB@EEoMCvx0y1jrk?(A!Z_J91H<%+Dl zez|UT{rIQa^WW{%tgOVQ?e6X-$$cu< zHOxt~7?^gkaha|8By?@7Ncn<1TwW#sri@$xV$dC3sT+xIwdCj0mW^w#=h+p zdjYr|Nz?HpTwDQ<-93iky)As4fXIm@@R%~&EppUA()8-MBh&hg5#7h3Yu7(XKN)1; z0UNncx9)|%hU{JVcRI*}pHuMay2Rz~xUgm_Gg?8qCNru_gmExu#(wV*;N!(YDgMc%W zy=V|}(ldsrcI#$2;1k^DxH`q(*Pe<_a%N~~oakUzO-M_PvBbg3;r}bRT&%`qP&N!v zJ<)^@jqPkwulgAHod~Y9rK&7ZNinjf!Bcce%#QYT(XNVjeo}u`Y2CIB z97H7yzU}u3t?NgE7OvSWmz5HzaWr1Xv!O&!DW-d$eB0MluyVQqK_ynmBI-kOhlN#y zv!Jju8;yuoxpG7csVjR!J~lokRO<0`LrdnklVh^Ly|H_QkszeQTQuwa<`wMYrfM7O z@9{BHCwV5r8z+a013pW1vd|eQ*Aeg0Jja)wslu&K* zdiak6jShmuD@;)^TpN?it8PP$h}S~y<=W!+v^ZzA6nZ9c(fN_l1a&wQdZ8S zD{ZejwyXMk+3RXuNNobwS-^fzn;~SiW4n|#o`E`PMf&-7$}kI3aiwZ+#%a#u)%-rX zpv0pttt)bQTsqduc4=mh+A>WiUtN8ok5*gfx`X z`b**GQ{KL_=I27V63P|*pm-MWJvS@1pspe2hn>gT;xIfsK&LiBaNK>k(2DO&>s#hKxiXC^Yr+#>&c-6ca5tdVJM~C z@XLk+5OIFCg39C@R#o>1V0@T-62?RfIz?c{C6El20y4ov+O?Y9FLOEB;JyFSEXyo; z+53zjRS5^B(Dle}_Q!BpdK#`mtR^DX&#Vr1vqP)}!CI7~JW9E~FK0N5U&^trj22F| ze&w#iU7G4ScYac9Ax@__xjo5GnE5HR-g@J&(b>DUBbE!SbcS49an_XS;;!Pr1Q=9h zON<&-pq1$JD}AMl__t0Xg%y+VcO4Dk@f&|ga6K5c??_guW@G?@STf+P$r_99;Wert#cXyy=9*1APhhZDb|$*6LUap6FVc0aA&4>g3j z!#qofBXR%B5&|nZxHC$P8YR6UzyPmno?))4V{m5l?kIa7t_EmWryFtmXHtghWzG)s z4}ulSNIMHe255W=b<=n?jOZ>V3pk7m{5r#g-RQaATDqQ1=kCX84t6-*1zMAB=W`Zs zMe-2WL)-;A{9~jpVbS~~9p^RX#y;#U3Q|EmQ?_u3cX&L`zUu0fX8=W>>^g6zqz2X+7V~Tlxg;EZj$NB4g$PiZN{$^E+Oxj52IT zevqeR)S%y#*J*S)?(U$pRg?SaofC-zy_$f)%3jgGGdI7I^Bb`>ATc&<|EYolja|U+ zKA@n}hS(3SQB4PXs?pi|-U&Gr$xd)7^*GqocMOF^$_LQ)C#B+se2pODF?w!hi<-nt zj9N*LXl59&y_+P0c_7VpEQtQAFYFrgo`D{p6=no2&wM{;Kc!Fm3huWTwdvl;bAUxf z4cf{ZBfuB};NX)Dg?xqU<%XhbR~FXra@m8V>1j2A|40A&`da|T;gF8}q8dtIVvp-H zYL$oF|HkZ|04>;^{9`0Z#fum65Y^&mNX%PypI80Gk~WVh&IBM1H9-ZK1L-qWq$Jc9 z^Q$oniDa4YPcm^xU%t#8HhBFQgAHrdb?JTmw|8j~KL2Md>;F)`{@-5Pv%zLHOx#OA z9%#&x2fie(67%K&>&>`+BCyEn8$B`3J+HlDtVGX=y7xeykDH>LZ1#`IY;)6 z^&>?0;3E8V=H{_zdW{1y)a(}AAelctpeQ+-e37Yi?^_3DF8|zyxn;3_0me1gLL^XMQ6RB5k$~zRmqRgQ5x7y_-;&GA&5qbb966P#4 z9uOp%Li>wjwP!!*Vln!ElDRY^P+@U;OP2o8X}Y5BM1U_<&Q6Q10m!PZH_+!zN5u0O zCx3FT76+*GPs!9U?~@k?wq=Rto|eWIn?#U zW_0AH8_18K?Cv63TS@M+W`>;|#3>&MB&$yqble|}0QR)AB}4ysmvJ{hHBG~b=;~m$ zRP;aYXdRC%phILS;rF^Bn}NlM*6D)ln_WisOXaETQ(20R$osQ5bC1PBBeuL5JY_)Z zVX&CLA>7Z-Y5pS8Bd1GK>0J?EjKz4_II7B33O0`LgT*+sD>mr&i$d-rZJvZQ_t2<} z8DzFRUD#$yJ}d1gaH_4-@vzx^MXs)9YY}j6$DS&l8kUQU`NTP3rEdlmtmO&-JGXa5@Y{BWOCh<1KV{~IBXmaHZpJrDc%bBgVyJ?N zJ&7^%9guApOw^qJG-gloUN|^hb$T<5r1vz{U$#)oT@gvzB9fUb_{RYdLRC$vV+;V- z4UtKEGd0_F_->cQ+MkA-ug5~=K!|>m!!K4;yvO-z)!E#_at(%Y(dTo+S|4rgE&r?e z32Ok8nC8Rpsc)FDevw(fo85P_bl#iyIGGv!`f(;J44r_-t!tt;?=aFL!9Z7*V8LwZ z)+XBIEt`(`=xeju;*fCp9eyA2YLuoUJ_il(qATU3=Q?xY#510g!!LnWNyuuaF&pig zf<0)=B9e5e5N3>3iq=%WM$P5h!Ex7pm|(rcp5;logPs1>p5&O{li9i3%PR@0&c++w z*lBBi-mxFg0~9}wV|H5)FX47yqu|w_MjZj2S)?wSD+540R&ZQApoVrDZ8LVj7q(pi_!cS*6S zEar3C9C6er0T~NL>EFv7$wMO#=Z&rp#Nb0ha7gXF$&z^xcrzNEhgNI}-H3QQrfz^8 z&s851wc0g*HH(|1=kDIeCj^-tw6C<8@r@n&8mLn|@6=oKJ=|t>aQzeL4Nc}RhY7f^ ze{yl6{tPH9&f2O~8g<4MBKv@yL$BBKxZr#Hf-{7+C$X7-t7N|aHj`@{trEMb-uXrM zF1DU8tfy*@H%s8a8he#Qt^kH8AWR=lOv$Ou0 z+?yz=zCdk5PFr}owJNqTzF3q^DG?7Ae$va6-{;}R*Dpqb2&Ers%}x4D)x7S>UXn#k z_vYwRXK+ikzP?OrE_3V=$lnB>85$)Xhm+89NaYyWm>z#g+UgX=Q!*(XJ-e)mSk2Y# z+&-aziPVg+iF#YKOyG}qWK$snKTmoN*i!(G;3b|)f{8x$%O(^wxA7IU-8ro@F85(T z+5-iOQuSG*1DWbEPp|CIFbQKy(kCkAyQubbF&&*ag=ENnEkiont5d?)J+vcwj!Lw) z^#?`y2dUdrn%6dW+Yy_{%#azSuVPBF(Z1yjB z-V!Xo^cRtSOWj#)sa{!75b(yV!CM_lr#&a`MJ)FMnG@icYEHX(C{Bx z!1=*kMbZKP>+w2EBh;^u*{9wb#QIuWB6O@MW(Yg@EgwDArA#AuT>B)oq^&@rp{8#NVjhi=I8N9YIG4wyUa4-qx^Y!ylh^3~kC22}8FJa3*Vf47eGu^h;_)z9tjPHYe#Cned#A$q#MawCA!!8^yz##9@%Ht z5oyN&_Bb1QRaUa#{kkJYHb-Z!WM(bINZpP<_%Mb!6npRUskUn6k9H{ASIhFk7yiPQ zU-yG3fBJXY;y78){@@65P$2%p83yZQ;X%@1Jrb}S%>PdNFLuJ=fSU!Gt#Z(|)TK7g zktKV?n)O8u9U@@QlE?+c=sVpnlp9WNBVkFuMBxLTIFXI^zKXN1T@k%8`P>lDvpZp8 zC2yl~Nc5Jqo}T{$g~)FG z#v}cJSZnn~RQ>Ag@D6O(p0{&pXuNLr$Ww#K%I4!z%GXJSJrgGTIN5Cq9uX-KZP$dM zPo7UV```_O?+jcDd8k@~;TRZC`=ESkf?gLH zlL@3g1e*_g^ECwhh1}669E+}30?cP%E+-DEQ&3B=nkJ*dFIO1|P);8!N5bKTZ93O; zwF!ZPf>NRj(T) zowlDyix!*RIkHCQd#)nRS&!CAX1(q4<42OA+nwADz0>pQdV8w!=^?2FwoMM^&uSWeFnr zlz2vk*sV|!A5{C&9Ax6M-4zFpAs&Kl6j}Tl94Ze38ej7mng9IoWoahGCnXFP(W93w zXaAx@KrHN8ZP)&ns~;9lm@QMH8$whzn(6*@Ma#Y2FC|WaUC>MZzpknO>zgyZ`lWZg zuM~mej&thuPCJPAs8Wm%uFlx7dASFu`_T1U!8*u#YYnIqq=wPi9qjcI&Ly%a5Uq4e zr`DD3>N3F3O0W!Fdni7CE^oKQTki>A@Fb$E$ZFR>Me?Q+-;B3Rj8(33j_i)%ze)?g zOsS?)uh&wf4Svia4Eat9lo*C5z?y>C2bT51DvMEbl%LSUUW8dq$q}GX?S}lj(BBX! zRycTW9V;{$5d(4w$3Zw51n({^mg}|lO>KhjBU46dfwF};-V>=+CcL!;42zjs$5pUv zgNG?RC^npOcXAhy~ zR^x%=*|f+_0ob33FA=w|m;+v$Z)3F+t(s8|E7#LeRt&=T>8RI|kD|K5NlDLf9XMLI zw|)CUSnL+QVhTEPb>ygX8B73opoPEQ)p5Mvdhj;y-EpS!kuW3)BTjJojzr?GL?_7Y;cbf=5m1gnZsDyGSH4?8v0mSnI#vZ zHJNON!H*0RqIf%CZwsiYURsN%I(;8-NMim%a&Glol0vHv&mm$s7q#8J4W3B1ApqHs zDpFa((0J1_Hpzl{yAE&jf`Ec?)AIfh0>5eUYS6g@*(q0z&PdSo=y$~suZ^Gwo?CNz z1WF9%+im_0M{Jtj)I@R+g1baT$tPjLpJ{vsB0ytfQ|;&9`VbJJuOzn^l)rOF^^tzZq-9n3#_vbP8v5*& z!jojB9q}x@mbhjA-&BXg;r|d=IrinnecY^m!LDIo)D>T5G(W?&nTHa^VE*gtXQpC9 zN^bXQu|F@dS@lP@R0fA{bR!{6OdAt^9Uk(jJO=K6F!jJgXJz|OOOgCEs*g*QNe!QbwmORp zO%312rJ$Zp^hr-yCv&C^eIV;=GGjbxO8^J34B^z%Tyrs|mdhpuSHgx{Er;d@8i&>F z`73hR{nFYRmO4Cx5D+!#101qzEb`W8e?rsbHYU$HyfLFwdvA}+(M8G;JrDP^CLf9Z zP&M=#vWGtH@TALBzUabJ`3>^egqIBT{5mQ;PRmziayd!sEQGa+sg3e9ZkdCFAsVok zmEqZ4Vwqger1Zx9(UTbkSlfJLs!q#;y6W&*yXX_-*&!O6TI+Z)t>Hv({J zrwf<&EBu~=Os?m+WN>OU=MS>IcF+CXQJj+2S0w0Cx$qPW#4Tdwmna#XNPn>b^y9D5 z?QON1L&$>oW2;QyWM(72D3#d(05G7}X8QTL94j>~83l8AxpAOZGT=%}>+W9~p=}`` z(>O{CcMki*?#rj*6ADi+QryZuXk-?t&k?m*bloX@Z~IOL9?5d!ht&K7#3px+56L1G z=*}ZEQE$Q8Xa8qG(G0Ip!y_=JowX2{3Ji0A+!O~R$x%6|JM`aAZr(?MYQlJn{D8ys zTc)2tcMuvJ?qY3&v1#imqT1SSz~%@e0rSN4Jk9DGS*>Q25#&-UGo~NBMjJnb#<5X$I>&92wSI*D zjufq$hwV*b79#;XgMs!WuAOn#V49f(^CjQ+Y=LNzq0{*^X*!3sH5@g2|0sFPHSPL* z*7E=tWz|>(i=gLaLIMkGIw_9t`YJ{(EhQSE2$juo{`t474pXLs3Kvq`2?q6 zh2Iv-@c;sO@5J8Er_{$!b;KS0E|sUkZQ8o=Hiq`Ka+S;Y#gK8yUC%lCWATCClPM`* z|70&2QQCr9!~V0aS|JF0Wd}GQABRNUV+*4g^;gaob4v&H{OJG^aEA5wB}h@k|LgqS zzuu$W`$#M(Pq2_M@agU5?P$mDp9pd%nphfYjji(s+C@!Cc^ilIRt^UCn4F+)kgq!? zTEslNN4c~&ABtW>uXHWjF}G@JbT0ycIt%KM_Y8Lp(3UPX28HtZfs`X=$#cH!z`&u3 zg}*IlmWwGts4A1uDmyTwP?EI>fLZb<`#%BKc2?N}2N~^V$J&Vm+g;HzOD?wan%eJR z0|8Ha`#1%O8O(9&qko@5d$7sBJr0K*Mto6git_G}kGo&GcNi%=(xkfEXq*206cJkG z`DJ3`-s&mkr#{gmfXKjWmRSHY2r@t6$(7fk87;9gOly5v#4YaOMtyv2SKMBYEaz9l zVtQ(DYn#|_`ONoHqr>Ou7oZ)zAM|MAUQR$pzQIQ6pV@Bu*yCSI%iv+t-`Dh!0{}!yBLf zN{ced@JSmH(us+&&f6h~0`j^IB42EI1&z$43_39|0nkwDGeU9@AQZha*YTA~v)07f znt)6S{tBHqpM|ODpQ!r$vn~0kCMOGp7FTokjSAv(IGyJ6XW;JxIgcZUhj)NvWNyh= z=nu{2y1^k!S2sP~(ivQSMgv*h((&2~Bdjqvns~*}nvoQR10h16M*;Jg}02`2<=m`-C-3(}S<>!U9g`qQr!w*=hC3 zNLqFy-)?v#(tHjtP!=74az02bapUAi0uGP0wG!kqE0&`kkgWrNAz+`;F|hUK%N0=w zF-&^d7_ojaF{_E&`wiP_Vc=(sdftaw5_$;rPY)%Ls!-rV%5kDrxsU#<&bLJ;JKhU2 zCm#D_;~?sd!wo5qj*eLsUh=#&+zGq6Zl}18()j0wimGidWBW~{!_!)jwi^t4niah3 zjWV>0&pv`X6KBv;e@FFR*|FWx?}PnX{{IWlX;PxC085Z30Zop)U?V?3R zHLs3=Ut0THqk+H&Z#sP>Aiyer`V$DeO3Ap@GsCtXvvWiCVx=!>Rcg;ckP7=6w*2fr zv;ezhvvrS|yh&bUo=oa}YZN01c%u@y_f8~1k&ItoT9>=XDo~lvkJsw2% zq;i+e`+1l=yo6Q_QEs#b8#2oAUUma6+3AW~8>alu5u!&vo? zKEBRxtUHx=O z5bf~tV}%Tuo`9O(1Vb5R;Im#w)eCk5@G!rzk-6cAl)DlNuHQV81>FG9gAX(-lMN__ z2a$aUW&QZmB?2BtiW5S8jp_(erXD#9)F-5jssdyQI>McCR;nds4?DYIh1$!FB1k6v zWsjhyK^&6xf&b&t`1D%um7adeN0f7;XFH*#g3VN_wBo7w-FN%7z=HV5U_G7nSPd7M zvbo*Eta($Bb3B&rwXO&SDu`B>^f(RFed7 ztm-J#-TT{~x6L5b6N>*bjt8?pX24{DnL(W}F2eCm{uGb|9_%hY3Ddb+o`^}POj=Aa zx;T27vNg1`Tt_GhbGJ}#98n#3^Ei$@Tg?(ofGG6 zMkq_~Kxnp?Aw#@TLh4ULBhJAjgk1P;*r5CO=SY>tWQU$5Xh*-Eu&+4!Or z@Fob>dyDa=2$@Vc)ZpqM<^O0!-CItvYKm=1QYKS#t{d+YLQsA;TF-GM;dxOyYL_PGCDeV!L$?MMP?Em~Px3QA+qKl6Qk)mke|4CZN|MNz+g{tIRy zliL-j;}MVVjLGzYjg6wo??lQsv~8OX-rv57F4+e2QBvAFwry-+weEn+18+6V;ic!X zR^103ormn66mTM-_oe`sQBR<=75z#0IQU-cW?7 z3P=-?OFr^e`?9*sAFpI!&_Pkbpc0L|=}j!QCP1P#`u#6nl=5HZC6MG+vi~_=IGWf} z$vDzzh;rN;$$2+#J;yPVFyyfgP9>BrN;i6vsZ8LG<)g%y3NbZ`1 z^P}OW=^k%K`!4!JKmv|75jlu_+|+?ijpAgsIIPZ}R8MepdeWf9?3c!CQcp1WU{sIs zXpZTpSpq-hh|2zG!^H}7EfN1>rC0OBy(}bnkMORHRdI4>!fhn~8~{)~57bFKW&ema zo5QU-fD_+o2VNQ81(9mC_wiwm9PLNF?tAkLl0}g2_UO-)y#i;)qUY_}&aKHgOG+>K zd}0bt#$wH7-1a=6FE4R;Wz{6`d7^h!lQ+=!H@6-nP>v_F0SGo| zr~e`0l99g=gcETHuuef%DL|}{Zb+uS#nxd^f}y$0f6OT!dOfVNg-G5WP!Dh_5?;!nv#@(zIwvv5~yDB}x`F9u+z!V3Y^7Hb{E%RvW zoT}unIOt7F7QV-(($(FsPuppsq~pvz+{HScw7<{2wbpL9eK1;P#c#)Ns&}gd-t$Q> zh(hXRd*PO-kMppD)r8z~+?VtPNUQ67TvmvzwY9|WQLm=%q$}$+29n7q>Hd?fL^&Lj z%sEWWHYNE=5G~vGchUia3$m? z=VH76eS~aX1zUJos_A@rO9-Vb?y9V4lk0;z^*(ofTn&|fNEZQe5Zm8j0oaNPM2RF| zb_zRz&u|Q{cURDl(Gzc4tk*E$z2gbTd^^+S^zWfE4)ZcsVVCfcVUF?azT?1zqm84F z+a;2k#pLx}w=ER}tm{fY(l@yUVj96=O%pmX${wknDN7cXFf4La+h zqyLFnJY9}sbA^FgtJ}5Fqg5_2?8YaR2MDbcGCJ#r3-_}pa+Rnp6u*w zatd-#0PNJ9SB6RWrL3=Q)p^Y?eO`G3)s(I|@VT9PDPdfJVm#eHh@=Pe6JPt;m%OK} z*-KY3R`KMOSr;6ErJ2!{wveXbT$I)#qYF;y!aD}d3bk;u`c?As)Qn4VLnsaB2g{6 zF!e~VggjldK`O99u~JGngoOy!$VP=Ww#msD`>IV|a$Oh#;u~3KQh$jyP|SR!OjXKn zze;b~Ic>4XLAju$(={=$^s-r2?JEk5?zJM;H?lx05f#8Zz~vO={1*J#<2hoKf2(VQ z{eA+~Y8)|l{yT#-aXC7Ls*~}`V1dO30+3Yh;9#K`fJowM482$;R@BW8^X{$+>F50S zZ3O)s&9&;6lyCovj0KVWuHXB5vq<=vn5>};;XkSJ8;~l;0||8RevV_9ID?AU*3Wx; zfb124AJzt@bhIOWNh5W7;gV;$tq|jV{}RnHzRnEx5Tvdurv+JTvvYH$a~h{&dxhNr z3tn8I?_^&cbk=JcIkXo z8I4{DU>p3`cdku|ghZdhBPXFHZR$r^x;W2qL#~D{zO1b+w)Gp)jj<0UoVNy~Jcrlj zUlwYz7m?Lv#9!?9ENNA;L(dcbt&YKq0(H!)|4WPr-EF ztS|OSvI+SUn4f~y)NmvKiFm-pLD#IwBCL%cGU)KPCvwIR$G98+sF(3@_Iq8ndn!f) zP8*MFu7`n#SwqO7(i)hLuLy&9m3=k_`V}kRh@$j8S|I}jK&Z6I#a^Px^5@%aoWeaY zNDo++Yn|&sJq+9=Un@aAr06H|!Ed6%cv}o)KYGv{il~7JHm04NlXJ5%>lhfQ84dm! zv~EWdZ;{p`p*Hrk5yTTcLaJVPywg*^HQ5}h{L&f7+S+YVuE?dMLE&eJH3A*9BV0DP+&hgS? z+~8~aSzl|%v#!b2>8-aKhoJT;v=JOomOlzsaq(*TvNU=BTyel@dGzBSMWw+&h!82Yr}kc?gq>l0J_azW;LS7t&v3u5$QG{b6p(P1Yja* zi_3_=;+A$mK{^w%=&Q#}s7KcWEC}tdawgx;a=!q4F>2&#Xknao7T`JyFxjRBn3#xwp%J#S)yPb}RvO@^(6j1(xN^cg zT+4+UplMP8vXpomr4fsFY*Pk(IoZ0W4z|R)?2CY(&z{UB<{TLrLAUmWq*0|a+S)FC zX}fzqBD2|jOugA}II@gWTGa7&3J+na%s)H>N~r4}R=7Biy*qZ@OCF$=!?bd_476S9 zVT@_{*^d1tW0*Y*0~BLOko@uprB{YDeF8|M2Cm8`EnS=4nmNZJ4Z3no!eUnNqJsl&UYD7zHl_ZHNq#2U>E+Ah}zPq2QcyZgexfJ5bR3iC*7=n&R!g3b_PskYc{{fZ%6G;{$}q*ZYJN^ z^?E?JNnSuYkxK4%T5GXOo(ndM<*23lF8JbP;bFfBJ%{H3=xK&G?%y&B1qI_~*>&9n zqvn77L7Hr`(@VLJPh(2l{ueTfX6tEt_MHtUDNTmGF}1^hpSN8%EZ925X5HGx;`Opm zM<;B8_upE8nR@|2?(BnE!cV;X&;HuyuPo*h{UU#!ewcjdCOt(%qMJJhcKybmS&V=j zoy0~Zk$g0p3h7KbdDT7h)*6Kc zd+2=1f6aJQrV~zXgr9x(-`T`&=>HY7c_PSuV_IwDz3%LXnbcWfcA*n78pxV7r^1BS zUgP5;=G!RyGX%sKr8dZQ-@q5fGPT+yNYe=J&1Mar8u(AO5AN^Zp1r;%Td(%MmKq6; z|A=c6>|udd=X6?2P_w!7Kx`;pcDz3xkDLBBK^*sQ$xZBg7ulED zTJ2H5Xtm5`(`j^50c3-Ok}iGyJRE@JKn~l%?kK=2*h@0%n`I}~X`DNHH{_OYACQTW zlX$c}W#$%LLJgLT<6*o60z4Ts%{KR#j$zd|DchcEr%PNVaxSL{rSr#W2{yc~j<^Du z!+5MHNE&mcNWAXi6 zIaSevxjFM7V%WpH>~cw~!TMq>ZZoP(pC4ez$EUXci|0c4$tdjlBfz= zX96ADzo|%vgdYhWdU`GUPQ_$S=4dpg(iKAgWr1`1Ry{wvcn(^CLq-TW*g+Tz1SGev zD6x;{0$v*~J7s>_yhCfEI+8=!M1nxnDWEYT;b*6Q>)wwd!X`o>GaV@M{J&~&K~qE; zaHXl6B8mPUflwT z@8=8x(+k37jt8G!V|TDWu*;t1q-rzjLhgE9-zTGhp$Tl@woughr*GFI>mjalY=SfD zGQ=#0N6R9|7A31OnclB69J7#&he)s$QAdjqM36+8zh3SSc_rQDp<`N)$e|Y;%KBQM zS#Ox^lq;3bkJm%s;lETyEMabC{;?Xj=bf+A*^jt@f+8U6vNs#w(TvG*^S%TUr@_j( zjFjEhVEbYpPvLRau1_wN&`!X)yPE*24jyNMT5XkSkzwuX2_;jM}&12x(*!FyfXW5L;CF zdl6U`RIzPrH`t_5fjTX(6yPI~!(F(1ZN9s8J-QY3)+B$(h`Yw-p_R)hcx<>B@-IsR{CMp71{ zxhfNtVR`zN-TPmKTZ#3A+$~>M89LpVfnnw3=Bq700^#YhC?ch{ry!#6C#EaT-uuoq zS;1&bP-R!wY$53Rj$duP0B_Pw;w7ODX{kfo3lPXgQs`*$*!<~3T>k(nFBUNm`So)W z=v_*d4Tu8*vAT+7M#B;hWy7tx&&=DroVE;1ookK0U--agg8rD1)f47F?Wp0G{=Pl?dpDv!74nnDPJH*J?Qoi$q}I%OWa)k2AJbCSg5;nB`#}y zL?tpwf~9K%*h+mRODZ3PNICkPYSB=>4bg|O3??I47~&$|31yJG_q1=oEnBOLU|Rc) zY+(y8nN421RjJ@zt;Pe{?p^`o1tk+HcD^OlroL<<=ulFXrJMbA0yO6MqY+6Wo?Q*M zH#+j>j9HN63VTV2&=^2>BIx#O*43}>s+U{sNAoGNBT)9bp9zeG zNnF_)d%d8inaBljTSthuFg=jHj)39@GWF(!6Fq;Ozik9!Ln(exSoOTe_2+Li4ymkli ztmb9hL``jpX+_Z5&c`+Ng$-r*DDZF*k!xUVmwft(LxpQR3bT;`RvU~OlQ5Iqf4JSQfiUNP+1>V&FsY3) zn!K*8BuFbpKmIl)xc{jC;2TkcG-@id_I-yiSc_EdKkRMWEkD}5HBEl%yB6f-3yh%7 z_fP@$>A&pWAvm?YnKPK{PZe`H`3oZ_Y7C*?HM&zC+g@4DEl|bAd%Xwj0q!+|A!Dh6 zB`%GB<0{9PDNu%aeD50)@aVEToPryLi4yS8Ft!fwunxrpObbEg_wd6HA1t{7) ztzI$!S30-!a_`&kIE>}`YkW511YSv+_i=VrAKzCOi?jmKU2-?hPC~h-v;V`Fwcg1q zsTC<~JHX(g@V8mc|?dYGLsRuybqA!q( z1trGE5mLeI$`WF^`kb`w6fYOX;5xcJPys_$^AdXhq0v2drkwaaib~~z;WErZ6Mu`X zhFb)9B6cU)VevC;0L)^PZJW7FQQI6(2(X zD2Y96q?%S}f?iZqYWkT&sbIKUuc`b8i=PwQHuXf3aU9DIg_>4yQY39HP>od*V2ND| zg-J207)w|t7qW1fsNdH0#@FU7Sy0TMA1mbqfbms_fva=6!MDe0i>bC|GLyvd;%H#8QZrFazM|gR~e%LBMr8*45W@aF~{@$>-{~{#md( z0v;^S-Jp0A(^#cTB6p0wvHICmq<^*_KZnRquVY$ndIKb9;a>7o2C}qci{7;()dQ1& z!g2b|+`m}{XU3nJfXJElRBx1Qlqic_P*LD)a*|$@x^!+>z|(LR1`a^9w&JHGoKb>F zye}8U;p_{e{zi&RVaPM>er5#NKZMneA1_#`*QPi2oT39H{U*&+T_rY^O05sw48?(D zK;j?C14#(e6HxSl=11l@)F%6uhfoFB6vES;a*xQeJw2fueZvDr!_HoXdPc1(p(r}| zAH1K8v0Kkxk!EV?YKLnGSMKy?C#!~Qux0SeU8O)GUT=AOm}`HmCj5c3FY~g$j8hN~ zcQUMLpIAO}Oc$1BZQnp+g)=Z}<@F`iE;UDPRaVzv~0SHnY@JrBW*pnsOoHKLV2A zAk{5J?Rs+7lyM%wWf_B1Eys<^ z_%%oqC~cBtuQD(PI-r`dW#0NCRbT>qd=QtWjWA&U^T&%oZEYKH z*UV>6M>L)uPZvNXU{U;C6fEhK#FTCjU46hMbpZ#Z>~j$E-gZOh!CD$D~7Q@js|smOm9|GY;DZ^wJxOkyB1uik;w)E&7f|p4^Ktxd7+WBtj#iVTRmz>FBA%znb_NU={c`NfI=G(y ztpz}M7@|u3&pBg7q~H)4(`Q_8kjiL^Q>z2IH%*<#U(eQ8QmnkO9r;)WX&r~E&_mq5 z^~%#_NOK90RF7NvN_Cb(=#H{lQSU!Vi32y}Je)Q!aS6bdx~zhyJF9oOI{}UEkB41jWLL^idU+&PI5t z^cBoc3iS&aUtJ8ydu9?-JNaU=OA0DXtuzXpdtKy+gJFz5jX(maiv!GIvegoY+1ET( zLT*}E`y@)c#~fnBUBuL+An~0O^JDo&-R3$QxVsuvf}=H35h3w zK|oZJpF!Lc-PbAZ3?;1@GrXurA+$j!@?F~7%^y$b&5d343o7AXvfTeVO5IA+Q{hys zUQ~*b!EzTZbYUtwNBimgId*e9Z&NftCqPA6#g=%j8&y$V z_0ub1$~z6i**8)A1c+elc{8(5C3afr%q;x*xj7{jB_y`+$vI+vWXAOAm{kfYi=pty zh|kYQs{~x)G=D3fKXi&!Ac*`jST-VQvcGQj0dqWoMbENtIb_&kR*djCUfYhD067un z6}ubXy7WW6Lxj}o^XJcWVtKSC`2NmNbHpJL3=BY7{3`e{<(+aQhqAz6ezR!aXQ=#| zQMIH+Z`9;)8Nw)Kr#VO_@|ozD0?|Tvg{F?QbYFdTl{8LOi%s-EA_en(J^f-hk$A;r zq>GRO@dDV7k;*7u(x0;PXF96};5rk@c>EopOVr=l`R*iL@uMv(3v;PZ`C=sa&r{-K z$php#`{`8uH2THFnzTL>5M%jKf@7(yN~s8Yd0np8s9%xo)144x6qQ&G1cp4jwq3tm zLXXzpBI4iS9q;aECZbxZlm)gFsBZm6xyTd%NlTizSQ_dstW@O1ppBaAMEUQXHS3Us)qPu!?|f))O->^ZCbq2Ey@8!cz}=tO|3+5$>A zA;_bHDue>AUO6@GUPGQ3>%%U7l7^OCJy2U8y>PsC;3P9&f>+uRBNKuI1!GsxPKAxV zprHS=TX=|0>1R9MasOI z7e)edOifz;GdHiy0hgZUGz&lDPbGR1klc;;6FVI@*k-xanG;f^h^LourxzzXTjf$y zQn3@M&1#SFh$apb*7-#SE{;;2);|7Oi3JEYJ<4>#*75Zyn^L`?Y|wU{rl|PIz2Y#EzQ6=^F`YyjRJAFIMe{m9~4vI~F9z}IG!wp%3il#F=lLf)SpSO$HZ9xHUH(!pplEyO=3nhuoJ_a7X zGS__zTFI~&S>ouJXd}@D)#k(4FXALsrOK47+*?;^V~9sB(-R~VdB9iOM=SvV)T;=Qqvs7&KSrwh@e+T@b5Qdvy7I4GVk&@YV=4m(bF z*sJ>*dsI}#a2}(BcK9eQB?UcFIV^`=RcDKjPQ7qLAH+$%X+mO(Bb)d zd?n=|2@>TNL48VGi_!Ormj2qbt|bCRN?}9le;yEClwk?K5f+uLs=673E{&=iBZJlc z(6xsk(A*)fpunisNqZw=nXTlEJilEWhD5f03D#+AyM`7J6A`Uw5`sz+SXUN~wK(_o z{*V!R(yI~~g&4w(uc7`mB*?(_u}@rl+e1-{;qMRM+(9?6vvYtOUr;?BXPo!inS}x` zsA>o=@r9Gd) z`OBNRRY$88_K2mP)=Hs{`;_6O#3^w(#~00ApzUm`OndyEAG~c-_zr$0C91C0$Mc}- zcfe{=Mt%8wwVLmP2bPLTMtpuRgr}}fYZtJ)Q$8><_;yWcRrZ|-(ZZsVzL!@Hw1rFc zXKz3GDvR!HbsB^K}n7G&_pmf2#ecDAR{66K?IzlFW7V#pTLT_5dcX<Kc>Lw5;hRh6j0vkEvK>K0p-@ zg9OB4lXDO3mkx_X%K~ z5Cd19NTaGqSj16r$`72sQjW>l4`2G)+Wx#)RVgVbue3Fr$cW5~Bkc}jiPMQWkJUhP zONQsXs_YnvLZe471G@EE=M>p7lB9|%2Y!l-2}+7)6AS!PP!L z2jml{ycj^-71gHPzk+GTPA2Pq#;$Ol)wVX~CH~tz_fT8VyGUO-2a&t)?w!`QP<51S zV;<4O)4&3}UEf8X(3P2HLZG#aBW9ukVD*Z~aehwWAcgv^Z1A@$kKhA>E*7pST1wtf z_{eMjbP;5d;_Ubvc3Xw%S7)F#vKhsyv`ehgn%Xp1HIfw@JHk)(xfzb-LfDBqi@pyP zU@W3r@_N^DgxPkgGAY#?B;qh6v&dkiC(B7=l{7zFwmuzgZEoRu|55n}aA0u}-V(!s zhCr(w`elkD1jWiW)pd7i&0(N0Ts=G6-XdzJ7`dTGDky;-3sl28#QJ_cxfQN})q9IgQx9fe*Q|36`Z(Es6K`@dV>(h!n6(t?t-X=SXfwaJx& zhYI_|f~hI{pu9bCFt8bF!JGno5IJWAjVV{t3O%>Vz>ABDO3Y6P zu*z*8O2Ab(#5Ls(c=(hNl8YY?-lG!xAjKt=NPn9K_Bd+o z$5w7omMlm{hRMo?{#I4sdQ4H6VtI!TpHc3DdOW`OCw-^vXcB0oQ_ygLbAs@XoB#Wd zTEdVF=()decXY`FcoaomQs!FckYL4C2OsHa&=~^NX!WitNkMY6Y^-rw!t1_zMoy8P z;Oz@v{+krVDrb_Vf|^#kk)w81;)F|8IxcY|wdJA^y{3?Ar;oyh1(gw}Gx6 zslh33MoK6MNxuzS@_<)7vXfM-2H<_)m**)TZ$ct1Ih-8l+3TlvKpVXs;$GzR1d9YX z=(`4#DW#Scr6t9d$29nAC39u%UsU$z=WE9vi+&)Z&Dr)uO*~6nW@-AhxxCS$^YO1 z4D)9bZ23~=&dMglQ*^&C*#$YnSiWdFRmyIL89f&G$J^c=n{7IUh2F&YAu3kJrj@1^ zbb87LJ;LCE?Sm=|S`7|<==r+Zyjed`2SbBrWJWm5(4NmC9wG)$RVgj!W;r+5@8@EZsRjKi<4e4hLA@paSV zt*FyDjVH>BPZ!G5wf8K_gYFm~pCDDU+oDT2BDY@#0ehN*QzkSl8vgph<9FDV_B~{I zL<&n?%>oO%zY`wXWz>3ecuBg`Fspd-g2wZ6_4f9*w{AeEr;#@wQ9!3RNK%5inzpPY z2krbJ$~xHqnS%j-H5XJJu5vYOW{Op*fq-;<`l@hGExRyRP?Z_>%|Tcgq+Yej8>6cW zYGhE%3GXQWOhwymjIAhEJNH!AX<_-PeWqzfj3^)Xp zd9a^yF{#lg8N(KigmC3`f`)?^EVA@@ z0h6OlMqepIr|c)?@=)Xt-U!PvCL5+HwW#tkrT7Gq4tE%D&(Tc7f#*T-J#DD5xRf0K z(5?sBo@{%ic=To!Dkyl36b1rfytwoq2F9A`YCp9r%5BwKoDDHfgu_@^>=n=+{j+$2 zsYo{k49maeh^;gP@~GeQaj>3!#H$G#dggjk?LCV3|L+}qts1cOKSri ze2w2D$Z~D)KjQx&%`OtGFq zv#du#BnN-JwB4>LN`k<~rul|#9g!eBIbiIMk@5^<9c7SILXeIV8W9QmzQc%G zbc~ypm!H1{npIR7U^=%rT}e4d~}C?oI?`Eu7N?Xe^fa_lI4=3wkGx116xU8=_FPy zgKGR4^|iZyN7&~?SUK7s_<4gMzg;@UZbPeIwG-UzMt6W);_Mb-Q~ZC-1MLGti|15wNt9l6dW3bk&B)zwT97Ok7j=@j1bB9!(g8Y{_LM5)|L7dR7_}A0{3saGu?p)3F%fOJQ{PtZ~r}U$&3D#LJ}ij~lywLQY0|B`cfF zK+8mVFdfc%@KrN}uY_e1k}+0&O{KfsZ5^ZQZ*z0x6`&*3ouamuO5$Rar@5Tv9ST&b zMrSUY>eWX{$NVCAB@{4v0!I^;rMs>x3jJ*F5glQKsVjeio_{6rz10a1o6I|RwRUF| zm^hp_{#-gAd~ND@rZSo8@I}#a9qRuoHUdztToxV%5U&lH{JONqt5v?Ls|cJk87~Mj zC9LBn`(Cy9^frAFLU=R?77vnAqcPL{w6&|5I(zzj7)!Eni^Xr}|7u6Qs{q$646$83 z&_GM>4*AsGwZK*1_h6?>oT0eSUguQr=)}S9WVeV_uHIj#r+~>xuTDWLfGp=5iPars zIvL_s;la+hz8ojNH2&=xb{Hp<#fe#qYK>2tx-HZu)bylrIIf=_-5I-`+ zLper8=~HbX*kA#ovjTfJ#2 z7^gS1M_&V1|NO*>hGI&^CnKc{uspopJ+RWjf4+Czy*j47VwR%1JM=`4p)d5vP8@8nC*kaOKQ`imtq#xu7q4+-(LRSZbCE^kw z=n@3|V#}EET_^ZNR;mhC5nvRMip^kTtSQAVm3_Vb!GC$kDA=Dj0*Z0cyITaI^fprF z>UC87?a!yr`1?WTz9{6#Q+jo<)dWooWj~XWlLxR~(AwkKzT6nHjJd*Mzj|sB1>#klMt-9wi4!+wA{<*RUxYJTtZ>v1q4WLs3y)( zeIc?O-DI(|jnA7A@W^`au&(zc+}V}}{=aq&_0@WI8xmO2fIA+0n67Y6-=yPJ8yfgk z5wXFS0#31PR=DXnK%*e7;qyA;mv$sjWmwvR*kj`4o0}_`!clX246qXP>tl9s7nU;E zd7*x|Oci~Fb?O>?DCgzz?FkqS?X_D(>yW4pp9eNBFI_%aX-Q7z+8*nq@eez?9?3?A z-hV#n?d0~<>ip@H1bVB$u@ua{?GI`)!anyX8jJ3hrH6C%1xQP)5hL}zv)5Jid}pNs z<-Hve+RdRY_RVtlY~skxRoP|%yyOVA@+fb-gPXKrJfSSXY$Y;>;`~zT$+mb%Inp)d zreS-F(2T7F-@`9Pkk4kyRW#m4=9=;Jh_fFd+@?v%;JRv~8DmiPQ2xOCG+!CTe!8Di zR#9OqR&;c9P;3Jfv-6*2;5#mM6#a`c3z=`=E^yPTLtK$)u3VSPg6*!?&nr(Tlf*e6 zQ3>_mF)zDWo@6B_L-SkoMfc4kmXA#sf-8V{9?ZLjWE_}N;R%VhlL9Y_v*Fk zy~pUI(a(ShdkOQ;^sUB;obArPZt}nq5qF)+ePD%WGBeO(_XKfg9H(zGk%2x}d}P+@ z3MJlPZWVo_-v7Ou-~~2%LIHoy05w$VlS!Ge-apqu;-3vAtr8jr+uw_^h>lG~#Eo0H z`zZkA*`{L%hK!H-I!_P-!sTtE&|UBN>e=(!(cNk!iUXpMyQBwBBZwfz9m8DIZ372r zt%=0&uqL8h=3^XNW6r0Y=Qh{+mQayyhd?jnM&fhmTsl|e-WxhSwHC*9D%|L49L-Oz zQU=_#Q!gL=jg5~vf!=^G-W~CJA zRD#wE4yPpR`s`o@DhhFtEit#P>6_8*LgvCVv#)!nx9K`RbbDT>c_&Nc7 zX&kO>C%P#DnJ|op`y$Q&?jP-qe*G(J=mgHy42w<)%^Mn@(EY=@e%2cNCmJHsEFD35 zg?#7b=W%AB@)rl1zMo#yMAga__nnK$3g$soMg)O~zmZe}H-;VpfnIbf`wmt{N>%gf zCnbv8-DEA$rz!mU5>YB`;K?utNlMC&Iwld*y2$MUB5Fd^L8+kbAH=Sr586WLAi++? zB);)#G+=`#>vyBq-}&P4*jNdgKx4N06OhHkww8&O7}y<&ghm;JNGiT{a@U^n*woqM zf+($-LK7f_4SA8R8p-V)wvQ{=K>H0FnzKbXbg~eH5_rDz_R6AxqKWqnTV5WWx6cb) zvWJ9WV1oR$Gfd=2FypPaHUw8$c(o@s5WcFK@sCTUYgI2;_d6P)5GEYND(Ku#LG3i{ z#q8+KbCt+RM6+95JZUP@oVGYihu@go3{`jN6A@`BM3s$N1Kj zsn^tQQrR3yLV%f?>C9ZA97P85v=H{`Y z&S9Q>Jl|8d;nLmR4}!wUpaU&_UzuKPg7*sG#&FUbWuzxQ9tC|rf8QRxAg3GB)x;!W z^4$(i%oEkpC7xVN>j)QO{u8Q4YUGR3%XRtqW@tkq=cm@+@oj`@DMvhbh=-jRkZ=AK z>&rf@4{jQ=!%|VK^Fct=)8Eqi59t7so|Y7OR|)ZoDaTNc=FT+uzl4Lbu9%B(RXd|l zpRio4QfSXtW6z&0AG(K*aebh~ijNa8c7SK|aJ6C#Vyv|EAHwD%H!OC~j**els+E7{ z--6~|t>=*5jWHb~JNFbi^&v78AT?7_G3p zGp8W{S1n59C+-95zlHSwFsTgP=)Jz5Fc-%6CkYhb+W}7i~>)zo}?2=UXyc;ExfLQwF)6jPbd|H|oSm!^+v6ZV8QY zSYh zZ?q7}q}vJDL*a)SfbR^H2a#Hy_;YgBrc}gg7wNbRRFK`MJwArJ*(o02i-jqFq)&_q zi=wOtUJLD^^mTB6TeXa&F;+$4z?SsSR5&C(A1f;vT{ti+6htRN!^6U2^m*H4Q`#GR zz=BhC8XPGpDFNikC$zQo@D0To4!w8m=Yi{msfb^YLYM!k(Fp}Tm15RZX9_xjCm5Q@ z;cDipD;#7M3YFuFxIgG!gNZ{!&kjWQePO%tNafIvyjJr(PDR_7N-_fYzN7v@HatGZ zeG4)KEPb6aR-T>`>fF%jf5R#c->OP@RfUPml`A5HTX+(5yAnJPnx;V;5Ch8V`17fq zfjcIWGBWGm_a05NY$F}m%XJ&&Qlf#1?F&v?;%Oy}x&}qA=|_=^FM9=g#juceA1XFl zFygF3roq6Fd?iJNl(9Z4zrM1x*7Ze@nP%^7Fy`TBR&}XV3d3}TTf#m;qtrRP+)7MV=bG26k=bUZ z82pOfa4ufL)kXWDob8%N7uM|jbQ+JzW5Zhrguj1tkVQ!eY&xO9_xBU7O)KIQG?+Yi zoI1DjW7XbiA#E9_7e8_>77yOlj&+`G>FFM*46d@2CX&#%)kTN=vr^R(GehGr1Md%hix>Q`F^}gX zDlTPO^@>pBA|jp-D2Oc=ubA__F8$*@{#`p)-*E&(M{9rYT#u-j^kaiE@^ZCr z(K^#ZVJUq%itjJwRTj_qzHYxbS}(c}Kab-r z4)hOtw7J(eynbjHj3hR80U(SQq@Fg|UFQ)bF zp0Ce-PPm*S5GvlVKLS<6Tl%X^wfHs{)6%O0jhPiXwwH;!kO-Dp?VfKV>lmAYFMXzn z*07NN=Vz;1&5hIn*8L7UuapxY*Yo3wU%vt*mYF={(d-)c6L2a!Ja0aJ&W;(iRMY+A zOLcb=C?-n8ZJ(|k;nBrKVkbXY!L+uP7OYl>*YC#(=7M}{4(ue_T zb?z44zGihi5+d^TX5yUg828=`zRj2k=HKaTLSr*h49>#&1wDExyH;CBc)6kGBNf#VEasN)D1u4vfJntr}P{ zjTcQ7mwQj8z@C90fn@G08@9SsVTP8rO7=M4`WV-Z;JHdb8|WI@8S-X<$?c|-lcfAdRZ1ysIwxOB=9 zIQFyxo}#j$rtwejAP#u5egBoc=%AoN_q6zaw2|%PtvFZ$7`g#>Yp(P4khAp;F{M6m z@PGi_rj}n!H6N(3u#&vjTeC}r8cxHpy6N0P%rrV>r-h-=0`yWOnxUszW}NX1{T6rKRH;tU4AL5^yj14o@}6SR<>LReNo8>O7!^p*n+jBMlZeP0AhSPG`i| zNV!K^o-}6)T8C<=Yf4hdBN$Inq#`=h;e?-=77EsWKQpC-tg$9;{S`SHm3vKpxv*-9 zQNip*>&=&uJ+mE62RutMer=jNx?cyn*lueRa6Yl+J~hutEn!NzsT^&zPp+rxrjN~V6#)yUN`}fc=a0-L4=jLMP zNM7fr7YsV-XX7ZIA{e`PX95w)fX0j?x=1OWgoEFXJba3%V z9AJy?L^k$UkI|A)SOwY9muU?+okR7&HnQN=<=?Glx)y1BtSH#PcxT~^n@@h`AOAf0 zl==JNjeoN8hgd%ZQC6c3zC8+#i8+^ZV!;j)$p|broFvQ zQ*b!QX`5ZXVD}V-{cd*oJ^R<~tuEd3J8iOl#8h3j98O2!duwBedv2F1Baw@W7`snj zX7ojBc=Ewb!ECSW`c2fuS3gaRcY|wiuc_<*vQCI=5Gg>6Yd3Yn_aA@m0K;XKten*B-5w8r1(pkaq~sJpvA+f`?lKCX2-W_{=ylyDAvEdthvO?AS7KPV^`WE(r4F4GpQpv*hENQ{?BRJ`ctPVXhEqjn(%Z^mZIQ=$Xp`MaxZKU%3p9~@n5>MGhXj}eAP1A8Et5E zeIfkrpDX`h@HE5Rh(*BdepEIdQ`{CQO_DB>xH>%_6&-ATi-$Bx+JL*p%@C^ea!aOF zGLa_MkRGeo9N0RB)G^@qN{IVANl=FcU+rm<3eF%PCw=Y&aUfXot~H!L#vj4QCK)^A*;_k={CtpNi1k&6zWlb zvYMn(`>1@CN|~6F*|t4Ao!>?@R|V^0^`IV~tbMGYf#;l^Af?jEPu{(t+4zQ=J7p^p z?aoVS1FmhF+l&<+o0n&KN+ka!3iT2!J_cRgEbRJ~^M!}SVj8GE3&*7mDbj8_`buss zMXS%vStPJ=2F0rC0=n++hZ&Ul`Eb9wmyOY`yKYmAYauu-3 z?mvth( TOPVI|6);ILSazI{WG_$8wF?Hfqkw{KuX(4fGbfUx|bZ{Lu=Nr(t4 zyJwtd!tkQ&;SLQc<|(cg6qwHlr9Y}fCM1wZXeLOOsV1tTTO?x;qf(Q3k(1P0%+ZKa z6-F13+3bHXeO!69HPcscOg-&6rE?vPr?NPi`QGtPrCyRw&L?})6cJ?; zLkA#3_NP`szzZS=F%r?-KKu|y1}BE^CMWA5ffnLKHiHfz3Id157^ntbi8$N~+%zZp z_gDW{*HZ8L3gSGCYzqZp5rqii&f;wY`uGGTBcfW=^FFNMU7Ak;5Mm@a1xrDioZeBok#U z%ql45D)vnax`=iHN3ht(Z67^y4U+ zh!9NcPbNs1k3)Cs5v!xBl<9I_rrY0)rwy2nPl@>zsM4LJ(NrWt*a!$&4ZL$zXtA34 zVn-X}>SHPmp0FGgSSHfgXf}51q2D+{5sI>&vWRe@U@ycG(?pbnnFqeQ6l0y<&6KAt zl;sP4c)EyS`NMy8303D%Kb#Kh8x$0YRiv?{W{;lAtm*LithdL)Ec?oDZN?+qr?LG3 z9`ta!*h60*3XfXdQ4$umd7XRd<+>gL4`c7tyHzo)WZTvhi^W`mx0&h97DC0~JnQ?d zDSxPTv%Nw~e6WA`Td#6E2&_Udr1|0H-j83|e!==OSS&c%NAx-s8u_h%HmMGaQSmTp zES@@x8FZO@C6rzUL2TbRDz$0oDGnX`y*@`>A{VVWw@>KEsaqx-4{E>=qj6yw%>u4k zbX9-{x|FE~l#EpE`dmUC_30v$rmi+bSYec@Hdsk?je19$n$rRg^-Z!r{{88?XvHwF zsorFBfb2qNP78aM{A3~EN4w|kP%bR_^X8SKG9|T!w4=!44Y6;2lUiV}d zgPCoOG4#tQYw)UyY%nmFIt2y%1g7TNyCW8b1;;1N>D0Aoa$+L4^S$Sq9n0{c~TwZ%^Y- zmM-0Q=9i(dppTD7TYbG9(Nldxpg9aPOv#XsCv2ucNoqeCiv`zI=@8G?M+vU?>diQR zL8E={WwY;|Pgok|8)OU^ zFDE;|y$zS#&X3)MwM-WNl~&9*k`d_3Mi zmgL6uLV|uJu1^xg3Un#9vxE|V8mjZap=j}*5i3s9epi*Q`0dVzof>spkUNdTyKU@F zb{8*iu~8}|zCbCL9V(jLM}r6%5d4hTq%Xsc1;$tF#%J8Ll}INz?fEl1t6cHAiZ144 z|7LgBF#d=xL}myZOqwo5=(*1qzfs-DiHCAY>Ca3?MemfZyv>^D1;$!vES#vkWNq3D z-rP+qx04LT-8r<5PP5~Lb+C!7ZSE$qd)J($%$=!Bu?*v~X%`_m+99p^R%1hK9bapJ zNq@p*05-*KG!9NW-A)Pma=j&&vyxY@vg?DdV(r0Vrq-f*H?Om^K=1pv33B6DHobM- z+7q>+?U5rjyIZHXMRS&tqEds*P0O1xehhB|=scmHb=n=?>Jz=eG!zseX0C%}OO?6@ zN-fe_vTFoi)QLHIU86^sM@Z3p1VVneq*7C87h98vAb!sYP#%p z{f)v@VpkRBgt;Pwhs&=~sPFN}{84R}L)0+vr&3}0^E1#`R$~1_ zCF8(l?L4O<8fUauLfS8J8HCvN*AW0wn4SBBkI>>Xq6R3hIv))UoFp3^2iw#tjAo)s}2xMML|o zr}%|wDwv7QN$K9Z6AwBk#1PUTR_FbPMR?xmY?ZQhDiRPWrij?Z9lCn@JYBPcVlt8z z&tT~q2qE{Sx$pOPR$Jv#xY=(n*6 z9C#~Drs=K=`|$!DyxC5Ecagt|XYn)A((+VuEjzp$dMO*#%R%^YRsLwubF|t;FVd0k z+xq?DyQ8FxEGoi@2{tuAZ&ZPp zhYiE*od3aCT_HW8mci)*Ikqk)Kk&2O-M))IY{UbK;OM*OD@19fHn&ANfp|4CSODu! zLY}{kZSHLBkBga0cAJi?cU5$g6>U%YKOyiPAMfE>)8pJ;RqJ(8$)|U|KTA?KvIW>3KHgTw;Q;eiPe(@qU4#n!A`C_TfOhvlO5X}HNsXd_13J7CTuMdNKZNKG7W<>6-z$U z!?B)j9H(PzzHDpfswt~^nth^j>!o2~!Ht?Q`B#>wKmT9T}+6;({tMX+S(nih-t z>aL%mV5w%ypSkJ9S{1e`6(}MTd@QYj$}Eu~`7_N=9}Ds-Lq#luODFNSCxvpV(l#}x zCI4W=8$%o9uQSoAR`|k(!G?#2zh-g{&|z0&9?Gy>Znlu}vMpXaJYJ)sq0iy-f2YU# zln0F#uJ^hEc~YyYdtSoWI!UABF*TDGDe&_@;i!WB!w}Uo^Krd2+knf|%O-W$mss|L zH1MzVB~6xE-ll2S-pZqkYVL2qx-(3El!>HKBA>!4Q~2!gK6@YFnTBIgHY#wP6llFGguGc5=Q}f^H;YSHH&G)_FL1 zx?XcyrhynjajEG3y8+{7#Q7n#x=`-7Zv~O6^$(Rfg^W zGq!-k{wKR^Pj^Xp$!<&GY9YVg)NE2ON=|xr3!UtnF1*rr-#)z?$P^9rYEM3l9MZRS z-s|E;T?h=BbX7VrOUs|>`gP-4HAz78vNb>;J~pyxD-PA9ba#Tz0JIC%?!(UBP+(zK zS;M;ZBB0h_B&f4K1s$GHZ@VyL4JR|XvD=J%5ne>^3Q$!%wnTrMV=OJS=h=HL(5R$D zD9R^XTsR4i79Um0x&5j@{M1mB2W9w2WLpfv$TEFR*s1fC1(R^tkyr)w+9iuI0bntSDrDJyUMA!H{hVyM5dCfkRBG%$QKyp^oeh(r=(kPi9cZ+YWAslBMr`tIg|n zILPYwHDtC$puV$*P62O>Q-_=3`}%agS)uf@dyJ>3NSNPLB!lyVLrwCR ztbtq490d~>gkH7SSLfQrlhc-kJI3{KVoBIA@*Li)}MjBo12Ed@IjTxI+hFz&KoR*jo?c0 zVZnmMB(+yji6>lguIkh2R@OlTeLSBO?1w%i_bAMv^4!JQVQy~s#;tw2!kpO)oLCNV zla$#ka1qYF+L^kI46#OtAS!65_vCk{9P+zT>fhkd=gJ+m)CCS2Ao(r~0860V;#(%t z01DONb1!ZgjZ@Szchh}NjfRe%rk=(i?fDE13%VBi5$juSGt!j=m11qqKu`ZjfAo=0 zX(2DI?m_oG{jhzCZ~u<2HOd`>R}y>x_{eTZNIw8!y=OM@#CaGyoR&Oyd6!&e@FS=u zq~yu#lewctTlBLE+t9UmQe;mWvYCsVLZDo)>C&-G#*9H{$2R`!;YY6rU`cW`&UpxF z2R;Nd4TKq^e4zMz`vZR8ACueNscJT>yY|0BYBuo~9AbJ0(-1R9|7y2eJn)Fs@lI#B zvFzObb?6ZmoF$E=>?eBE-xT&mOvg*o z+Dff9o0a^-ek0mnMNeaTOTK3e=f2*kficXf ztW8A)1#NA_QvY5)sC6c?5-j-E)rNu{Z=3a&Vl&K!2pH8J>e`jp#|@rwJHQO#@%L?w zE&PWCP?MMstZ_Db{A}Q$)$s^Ns~g`FDV!PK7b# z0fhKBDzSMmm!LYie9-i{)~ZDMBUOri7GiX^uZPXMIRh=jVW|Je+|}o5hl~s|zIXwQ zfxE~GJ`1cIPkHGdBzB`;&?RnFo41=otO<7RpBLm<(#*DY%o4?}m@qRmDcJ2F#4aMU zMHRPb#S6IeDy3ZCFGkKCq$(v@le zw$M~wQ=-`b%X^IL;Kn3QO{}2O60C^SFj@YmS$~1s71UpVB&L)^=9uHpn0U{J8${$T z_HLCwxD@oyV;ld!Bhw%s#9A3bzt981+jI~eyBbHK{+LXhK)sJj^@Jxwco8!7>jnN= zz+n@RO1vVs-i;;FkP#|uV1DZy06fy=x)jycm#Zx`xn=PvGN@AASA+hJ4h3~G@h6Um z|Q9@|M!|E6d%zk^dBnsS9PY%K!4JEK+^1X2)|i*dCHEyr3 zj#6(xOy`=5(`WrFUexWXB+ZpcTC`wy`t4+7RrmuL;uPhzhV|rTdVc3vSF+el0Z;xClv2UhMBfT!wKT$ zgWakM$}4xpA$eoaNX)U6_3Z)HzFsDr|K?eU3X;W8-cJ_2oXam1Kc5v+AAX8KT%T8} zNKUN9TUY}gNj#|Q19vIMDTK%ul}tS#kFPpA|KYT(=@OAO&9>1tJ|*Q?Vu^2-4c1S` zvvt68IDTY#Mm=P``Ko&J>cH#r)P;J)Qi~R&)&0#vHmi_ZTHw9cWKHETKNNodo|>Ni zu*FH~JHSpv6@OTH_ebd^LcN4wo7yP+cnJ=3a2 z0$zi`L@hVhDjm}TmiB(8H=gB2tCjV^&BC&nKYHfvtbz#X-$Kt@gKfT{CB>u`3RjK>kH9ti^2Z8Jrqkk`S*KHcBk$Q8DcNR}s zJKwf;d|AvS$L*>x6lY*&=AcdUq20ePp2}{4;&rHZ4QzF3jlr3s02vy-qM-1)Ts?Q+ zUmlXn=A2NSOifBiE8_5CYP0NEdYPTz;n=-2SQ%U&pL`g8-H5SXxOfZaOp=j0%8vL< zDp1W;=-V`k-b00TntsjTMKD-xGC0^2-W+4UGRBqGX=MMb|B_F!DE4F3;uK^wHh}px z)Hr(WjQ9-hh}rrAiEz0QsKbxqacRE|qmJe&43$n>NBhi>&nsS`z8kNIGvb>J3999g zM9A;)y8j~OtkRtr_vyLLXEIQ<#JX27lQMmY|3gVB>7cgdCDq0iPbGR`xewvZT}9@3klKi4p)w)HwD z4I?aA5sPt_o?&*yiF#1O%otesz2E2SujFk5gG2ewRQuPP`6Pumj*P3O>o65&MH?<0 zj&yi*khCt>-56eoB~_;~XC4IZ3JjG|FzrZ|u1D@LGf;msM&hi9D?)R?QI^z z&@C$*bR;WIAp}oZJyTsbSf&AINE`Shg9vhH#xihf9B{n!Lr%>_`{8~x^*{FdhbO@Ap6+Ftq_fU;W>Y=g1ud8+aQ|N$v6$Tz?m9k**+k8Wrguv^P}J- zr{FnGcT&C5gCV$7YaX;);Fs!i7`)0!bs#ByH?f;h-dytKDf-gyG-ze%?X#%8gjUwD z-eB_^eXhWW)Te2*+koZK*?Y^E>orX!B*o++RXrWbfRsG++{P6N(ZVJ%9`@2n`18Yc%NiKLWp$ zO^MWv4S=qS7Z$Gz{Gg4K`h^@c{ga*;=z(Aw>cEQ;$o_}xy_b5>_06{QG*vXnIFf#c z@g}(d5^KdT>l+xfa{KZzAi<9U}2!gJ$aS^Y?9TJ~YH|6h_NQpKq zRjpQvw)c~}BVc#X_iwJ7U)?^hI2EDBXS^0%PCYY;?s5oYB;_pAvaQ*)ct8K{WGhqi zyFQlq;ARH%bY{zDO0Cebw9G)m+%xXb?A~m3Qx<(or;K6l0{EiZy!=Uc7se^+ILC^s z^&0o+oJMCZ?Hwi7eA`>T6Y+R9WNd0`*=M%o?L%~(C5=t$*6`KVUKfalIw&#FYRYen zfOU^Bo>belgjhfS#`=#1}lXzyR}BJHSvmv0XM-){x*B6Bfr=272A`>6T@}s;kq1b|1jX+x9)nm+iKE z2}EZ?@H~XEpM*CfrB|dtW}3jyCKA;^)T32j!)yD?FV=s^{%oNIj9ogMKh=Zp)irD? z7k|-uumWi2>)a=OnRbatSDQx!Fz^Zrwmlt~=Qx2P>Sk}F1M41gI|`4-^S%%3*qE^` zCfbp`3gv7p=sT|xBzOU1renB69W^f}!ZC0%oo@*4)|*vYX6i-e`kapH&%{GNhcX|G zE$hT5U{D+EHb(ngjfC8{_uz6tVj9<5G*k1uO_pI*+=M?6tu@rrY_QJTtv;W+T(3Ge zPWSz<9PN*-EVhxCg%MrWLLtruoS6P8RVfwmLeKJUjO%-+7UN`LsLB$gllvt8S5(kp z?9{hML`U4X40)7k=tL+*R@%$2UpQ2UMJBe02M8o8RNIf?*Q^D#T~=ozBtfiz6UQ=m zcvRQfJ2hHV4l8+4?)2=L1zT9pveZ>>gm+68h z7Y{EDwV2vPjjy@BnWL;9+JdSaFDjf7sWixm$M=>{Q25gpKGM=cD2{}!E-(LEK@cwO z$M6~Kd*BTxMmWuuq8;%&@5axkU(+L#q=Ogsu2(Y(=zIIN)?9w3O))g-_&PJ&zvQ72 zEw8xY8cPLrQjwQB8mtzzTWs7gGj9Zo^AB-xZ~9A{X!Xc?!?4om?%-jud1sV|oO{a3 zIm#njU61%5n{(I*`Monb4Ko)LRvcg?F4xLET`i|<5pR0kQ3?4LGh3$3a|Zy%@)^_k z&q67>09BU~N*wzn&AyTS6~P8~{T>Eq22c^TyIvtxph%n~ z4^m-M6vlrdP)dM*@vKgMx|x2Xj(xTZ_8NCQ;$L3_YW2<2&R+2~TynL6zWaAFqusnj zcf-D6SOG#7qXS4+v|qp5wFCKVb*}`xkhB`p|c z7Z7BydVWLEXvlz?ZY;MPT8A6P4Z_%Fcy4rN4?i**Wo-V; zKbh7pC*Z>l*^5AUJl&F^dmU|J_Fx58Sr#F?aYi|FTRpCDBT{{tT&)yxhbsK-;9;Sg7-*zG^fTVq$EgFm352oA3e_4kFNB(0H%0r?2qU>Kpe zQ5_#X3d)l^V1SmeE73W#4!=pB_gSt9GM9+UN|9EZ*9V1daYF3lMX*uVAX-NOh>d&^ zaii|&=eKp-PTzEVWDKrys$9gePm-o&Fj}HxxHnb7oAQ|yKo)(0^am(`%9uTaJ_L0; zB%j}Lu4+{nxk!w}*d(U^V5QFT!8w$;@!dWR(QAeWi_=-a2>)c#BjEG4(Z0wDd8ZiPBItV z$qLPeS(x5PP^(ukDB+TdkOiB?6VWH`NU%;Mv6g6sQj=TV*ClURYDh}|n2^cToDI`L zXHZi%hqr60Kc6Fag{VUQLxCl@TrEEI7>`*s`tfWrb{kyrJ)MGII(YOM&N?XIJmX5y z-VEcSzBPgDkp8-!D$5h2I9TRQ?46q?Q@`g8ju#&r_xxn{f@9(*(wNC>AaA#GM0?P; z2NidN5Ymt&Q&t<@#%~QhC^NVhI-8wdP!qf12ROes8Q)r4G`qV*Cl)COkp`JMi+%m8({D;rV5(hIW{u z*^E(()vH&19o{-z5zT`wkzHB=96vi%BRE!%YvnaVhP$3RgUpfhJn(wxhQ(~l*v!c- zObb8TU0zDLVw76MoG_chNIV}8E_1aZM4|id!2X8vhk{{V9<-5Qpz2k%I5Fs^w1K`C zafZ@mxPUDYJ=V9kreRAhoz&F~7>1w@?go`X5dt@_tn+D#*ZdZ>nq=RN`S(7O)PHKl z`ufecS_|!daVo)j=-qNYQowODv9Ryc`#X$IHVdl9D`tP6;-8oUgBtF?2|EtYuNTK` zwKlNMUAj>M{7^I@7wx$=e0kkJ;)%%&3Jv@GQsBCEor}oqT^v$2Cuv5ZNHCoEBbB|Y zrz7iIbaL=(@h#MruPK@vRywWpe=m=*^f&Uo3 zEOv-2UhjZKan?Pg^SRju1inyRV81uu(-ROhvhyIhXGHNr-DFx62yD4~uMxKrex)}D zaiQ%SA02y~A9jF)S0qg`4qAh08!2mCIJ9o>xmsVbQ!?m9!QQr7A13f!>Uy`&w;}yw zz>zw|7?R^`y9C)+y?N&SS@MJ1;SMgQ*}X+$PwcH+H6$zApl|I*E@7} z&*wi-8`vC%RPcSXuTL;AZmZ3j%F3)n=jpB@+Rg6|Rv?GZ7|8^-LnVjOcu%~0D%tdz zyr8n(VW!W!J|xb)$2*jW=Ymw%;{!jcJx~aLH#(ABJ`!xED0&0B{f1?xgWD~GQxn$- z^WT3;@TN0n7z>jck40>q6JJygvn@gJpkuP##>(Y6P}J$uN%>zKR>u=nry1PCnitmU z<+VFk5HSts1|8>yPV(&M_%YcnCkv+`}VatuK;H-r$7pB&&m&*GLIzohtv7a zeK+&NXQqf-&;xY#lqS|k+4hfD^bv(2;y-ST3yfAM#Tar#XB}@$f*u0A(;joH{o;Qo zwUzkL*GPN5ua>Hi!5ZTvS>cYpYkT}^!(w0YW@C*Z4uTzhm;Tqm5dSBx^-R2F1ucy1 z_dmLm|H-xd_x*b-gaiHloX_MBJ^#-OOCpFU>>C#DiRZIm!Z8(@oNa|Fz8gMur`)n!0X;grw zF$ARIu#62<;((2)@kQPX!-IMEImvE&odUVjJHe{;)KTi_a9x&H|!(pu+S95DsgNf`XMhjUSi9 zGnmT->ex$pqwA-q7j0p|Orq4v4ce1j~JOM<{!WgO$C(B|hn|*5n=kR5! z%(JrxlKbg5++#aoa>nE6_kI8ViDc^N`(p1Oe*zZ@t(1pq0saYfrlQxC^ryW^bdI8D zvMmJZ7;Z|TQt(4V>^0EqsTtWTkQiEsahSZE$TTTElf6skS4wqVSdQ}-=+G0nJ@gG@`$KmN6Dm? zs>w7pr*U65z{bz#)oCqh%&c1+oZtv6_J8d5)oo*UQtjG5ASV-ObrEog%(uGTtKY@1 zy#Sh)Gai4^3*G(cI`R0%j_+tbJt@MNHLXtmYdMV3oAXIQ={hq5!_{I(|J)Hn3*N(! z1CuBWcD&-;xQ*-gt!gjv1!$z=-2<=njwHL9J$fcQCg-k+)$mBw*U-!ziwsw$@hOwC4L!}5ft&E7lg)U z^AC_y7zx&TU4!51 zbhzhKQ|SnLR(NCbLm)Bnr`PH73=#of7PqUiLk}n#MkO@RWxs#Wx;)92Cf%8ddT>9n zq@)4BPWb&SP9LWK`mfVUuwX|U6!)d{ly`-#xndS#N z4?O`tWN4A!`4=1g`y*1SU0>J!N}W$}ZcC3BDcRr!+A1xgavc&&pt1Fe)}sS<*vup8}^@o}jF@boCwmWs(?opMtyn86@q}U-Ay8h8OZJ;VQ%YYm2tg zj6E#}rLLH9jViF?;^%HtIlLbe+7_9~L%jz=KQ6;uqjG5}VRXSb_n_=qlbdCNEmL ze_^C(1HN=4kN`civIuIvw4vBK-mb~XSYQ9#m`_N17f3xL)3Nbh^>PO^n&)lzrUhiH zBXOB54{X+ZKwb`!^b{FnXgxC?W5BoJQ^!#XvGe(96n*ccPE@-y8`Qa%ft`qa`j~I-nO3-AgjL*>eMQWd1Zg__wEwmxWD<507Eev9eAssQb|ddVe_Mfke^xf&MJxL$-vZJ{cCe_ z(|5gX*gccYFb(@|j8W74Pxcppvgwcb%&_x=C7KPMd}YJa?XEK~5VY>A&wdQ~$s1*4=;XR?oX9V>)DDKpS{&Hu{OukR}|>(x3fZxF)O zQO@%@wM&xw~jVxig`h(nk!_tYf;`HCJTCC z-?Yot(zPzH-JX_Qi^{Ael!#r6(7?qr;eD<>M+Col_>rYJx>hLDtz9xwe=g~%F5+Tp|*HdJ^ zqALdTm;ob@OVm1-^i){lt!lx9VmP;vg*CSc8`qzPrgB(br#XDux$jjk7g|lFB=m?k z0Z7B&R~$NtcTzz5eGs1*+3B-37B9C^ut;^*n%Z1$k3aUs7fMxwe|A&d@uByeVutoE zX|T=LY^RO7f;5+^l);~@DY*^jEZNoh$yXoB+@1K_ z{D%cF^SV5O#%h9yoaI$%XY*KShnu0cS~U9B9Zkyk=Ay*TW-;}5A$D-SvRG6SO(`j^ z`W;iFi8yVqJ0w@jZq3Rx+QXa05YE+9Fsm{dH5)Xcm8sIkh>ps3%^GG6$LO=3 zy3|SNwfPA=T&K9<@Q8qh6BZ_^`lVUtT?ML8>KX7nmaF^#E{N<0$V=cr0_6Yt8X}o? zcqWd;R3ec6(*VGK<8lWph4#*CImbs)U*z>rk9)GbJuhCqT)>R;_Gf^KEvLW?$3)I~ z5d9aVluUFkgY05iD&h8CvE0&SztfjamsjkI(|bZ7i7(4OYEmo^fP+6>pyRu90kUc# zk7pawohTpEg}>hu2*W98xDsAkyvG^wNGT{>$*v3Z%!8Vnmz}|ME?09t+ODUwI5pR1 zJRdHQvxhK+Hk!0t&T@JiS~h_>E?`xv>@qqC34WVCoF#03YqhBp60kb-N#0-Ru|$VG zlEc=^^D0~}U|K8hZ=a^M@2TDb8V&CSJ0B-n5GvkS(gEDet%|ks>5I}I@eB`FSlcYl zQH+?SnckRX1VI2y0i&Hsk2X{7$X17ST=CMP*(7R#q7b9$iw${!$*Q_np7WpK6N+`r zvC!k0te5@%e4Go^GnAlsHlgOtvP7!`58&;6e<=_1C#>n^jNGcSd}Bleu#iM zi5Z^)&RE0{a-E+oRnhZIXq)wR)1_1klZx;z)N@D97 zKCRBBnhlbp@x{?5xL7CVFXtPo-r{W=F^r-f>0GI)4r@_3%-b@LZGHa4>$>P~xI@5H zw782#x1Frlz>MlNIR6I4rYC~(*=1HwY z_7lg))3CU#@rv#)jGZnsw#!$Cr)y;L^ZfuWFJiN;$^7w5d=-YeF4<3JJ!IkoG;t_sDxLf*jDd~kc97) zJ~yUNOM+;oRF89~%(K;ji|Wua0QA7i{|%NdkZ17WY19x>O|EqBGClPtCk}|YZmZY$ z%_V8=5(rzH-~OWl;N$Ih%(S+@Ub|Z2^S?m};x?>eE`)r7xlM;XMuJ#7F^Pqrv<&I0fp17)re#H1 z<$kXuJ{gUNr7d%GM^oNU{7cK;GQPh2U!=W%(^+P=`-bF%qs^KKi?%$kOKO}ZjIR2N zVYdsC-R0l!jM@m``k!`H>(OtDOPm8#3=hpfnlj6I{-GZKc%p0R%gx*WJ?Kg5k=F78 zDLj*sSC0ZPWFtY18fq<*4hQ03$AZI*W7}`>2gqj#7D^4>&cy& zEV`d_D7kGhyct^Gu%(9Y*(DRX`ERfcocdfzt@(?#jpfSi#_c&@v zV<5E2plNUO;m5W_O_ll2ibkF`r&{b=e;M-3XR1Uc(1w7e5DA!IF$5{)j)Hkg{Loms ziasDsz_8IC82`Ti5}8lg3(l1X>2mfRA5p+7VowQ70YyO&@f7OL2(9b;=sT_X;ZdsC zmTlv1u8GKQ3&h#kQUI#g?@J=)%=kBh?4cR25$cy0J<5}q-$9AXSco&kUwh38D03F- z&Rew-M;gd*!mLM&9YLatUvhfNrn=@B&+-`uXn&4m@9`ngs&u3ZJ9T)@tPliKxR}V< zUL|S!FxeBG%S>gsG?ERldrpiZOuIT8Ze1D#`d;+OpE5Y zLNArWr$37&XE~$eKQKOXl6>!-WE8z~%UIHG(xB~~AwItQcgCC19np^>C=n``2}hpB zoUy6a5ZZ*0zH^sne1ZC=zN4m4JA9Ytm%SQv3XS@l;1!L~- ziU+*tUd>jMR51`YaDWn`=2SRB^~lOX`A)!Rx~yMBwL6AEvVYz<0UP*odob2hfy)`4 zY**7q_U)^En)j#PqdL8~`Io{f%X%s^ka~3Qbpl*MVzJ45VHt2*2olJGeI5&jl}|=N z0B9VTAbvBt(~MIa-K*zrC`?QnKH5K|uiaE#-T6Lcf?!&?eogc+(o=C(CM8+9-iVvD zVR&Z4DFF0iuVdLD`)e)|5dco!hCl#*Dog7LwM-dBO~p2xzpdUb^a>(|?ofD}Z7B3* zOG?sWPDr9Q4OkGn*@U<}|3Wl~CTG2D)s2;zf~Ua7Qvb9CfTlGdNbR+%edP8AgwBaej4bKa)mSOY7LoNif-0kDt; zG-c-KRX`{LSrb9Zlp#hPi-FfzH&lYC6jKa5l#iV`%H=42%DyCnvfd7 z3RJ?Pn5>pKA2)C?uRk}V=>eC1z_?8)IREGX7>X!I=a7Rj{#Fk)4lGkFaXZZ zD~Ko(hPi*h1PHm_Z~y;6iT@czg5JD4iiCHyBeq5}N61MUKnFZO0CXZq`|0b8(NTq8pLz)iYhwQ)pJ+zARtJ)V7kZfMAmRFuYnR5TIL{)*pks+MUKa1d+(`2;)6=xgTXez@^Q>RZ^5N)twg9)!wGvv77>Aq02yg%U@`=tjYNt>IW2bQ&B zviQxaw9U%KDS-7*zS-$A1|%|U2Pv%`oD22FNNAAm!F&ZmfnbBp_(TS8tc6@UCAo%8 z`+bCctjfasbS0nuEw*LTV$6W#+T%_NAo_RMUs1var>S@nm zdUtSQi5La&fl_oRGdsTu5b|O}@-RQ7+G<}!24-D{s(&LGJM%EmY7TgOwzQODeY#yly0~2S$S|Ygvq)NG`wCaz7U-nWsBHWx{dKSsR4fyl5IjT)y6}vIt@(Lp- zf}xgY%UNrCv%H93UjT@Gq-${QhZ*TGeV*M{wQ+>UYK6IYrPp0zhDIgfdGBz>EZsp|Yq}Smar~<^K zD)E)U*WZD8OvqjGT1xr^URCxD_m9I@x($uU%VJ)k1u?H9q-=fwIgEJTXqSuWg)gKr zzj=5<{`)Rb{?MR8Fe8jLAQYBThIQdds>uDn<^=ys`1&jbQP$`@aR@5|Wa$zg-$fNq zxUQZx&`mGEIu6bOn zj{l{jqH_Opa|*E6oNFpzk(A$FRrunk0_h7c*URZjle?o6?4zoUW%DbNVMgEsyIq1w z5+ZH!QT_2&;^Likb1LI1%i_^er3YtPSsMU;y+Xqv@U@!h?y4cJT(8u&IBvHOSU899 zk@HGm5QR6L|Krn{4JtOfi}wdlTYZIbLE)4q;qbU8E*8PTzDK!9T@mokvhG|jSX>=F zO)-R#MVLOhduGpz4bvOA26!Mdvl0wJIYk*%nyNg zzP&er4xk#;dqNv|>v$KFX4wPInVxT-{gBuE4-1I!^3|WRl@|R=Pu;R$h!T|?Wu?Fo z-R>cA?n9#pPul}lu16PDov00P+m#S45mSwTKYG0%_ zdHMWjO8bASey)kd%X+i9|Hj9nWGH)ic`( zp#z#>;k6oE(oR_Jnkp@UP3yJtJw(xa^@z;bQeuzUZoaZC7jO*4vB+NR_G^V>m$1M- zDZAJV$k2l6)rM!#Dk-csSjNa*>f;e27wa(&44eBy@T~np772gv2ryxGt$#qRW2(ax z*9)hsW8&qEVe22vVuVV5+abkZjsV6w6KRe(YVmP#cFVu1(>C_Llk^T~*s6Ew0^c=o zdw17@n-B@a@STB_J26@5Ic@P?JsU7lGilauArhBFPE74mu0E7w(&RE*9X`23)Q?g=uow3d!Hn-Vk)d(4;jT20qo{pX01UfqGT9bNRY}?Lc zz*g6IcL^xW&$R`zFmOu&ye(r)6UFSc)!G_=sdo?7RjxlFqp~~a=dlj{4|{JNmG!=^ zd#j{$NSBBTDj-O=h=K}&ND9&=UD73uARy9>Al=;{4bt7+-CgHq&Ary%bM3Wuy!)JY zyzdz2AO4tQ%sGwc`Tf4%>;7Dy`wdwuHOAZu{;w}4b@{#Q;l=QcoH=}ZFX%&=sok)4 zIlNHCv16<4!}C7*ez{m;Tpz9JD5JFM)Z4rO5DYl3%Ep7Xi$QX+kH{j=%TEx^CUSQ$ z__g#>7M19isz%LhEMC15S(Q1Oy`}!Ekb4h~Ky?3S=V6g4#xCynPx3yO`d;hQ1Jfpg(ramN7c!<%3|Z-`6gBn;?j*7DCj6_nAA`zVfB#Jf5rq0#vc^ z^_^yYQ+WIBlAyiXvHEzBO81qC6p4nse!H0ekYR1G=}-r9tBXNTylx;o zc}-d%+G&;whQsBi^bedR4B5q7wX`k~1x8s%OzXOjULe(%-iWq*miAVwT(4#ArbZ-N zh+Wvh+H_zt4!X=d;hOB<28&7~K6`(gEV>W2EEj=~rs}i^dv$WLy*$db$;Hgf+?3-X zTfidguU(Q@Aa>yURO4(oEH=H|x>s>#PZxS>nGW3%Gk^QGoSI$Vrok*3e8aLLV-zV| zEaNYpDht1?KTGXSb!z~QfS@?QW;7IMjlkLc&0yHp!t_9|KZ7~N>hNu`10Ybd{O_Qq zWcNugHs-jj)TJW8Pu3u35Z(ja#rnJSd@B8TxM2=wb z992c%zPFpa>QR+Vl7+Y)OfGNV9mu|rTbb2)tX$pBsBCvAI34&Q_m#%RGaX|A_lbyc z5s8mH&xwk)JlTJ1H+s+wF7+bBo@2g&Bvg)rRg&^&ewQBEYZG%)f0CQ}@#PzCFzgRL z(O);)t?#c`uzTg}^ez60H1=rKkGO?M&@-!t|pEV`xJzD7RqJ9`=$6$p}MW$7NB8Zn@^-sXtb_y z_??Pfj>?aDkCcTZfdUS%>9@~BmI&<8XzRC|b7vBi3LQG3jtFhI8nTigBKygq*>r$9ObzLsE%K(E@k~Pew9V-imEoo_ja|-`6()?y3 ziC|y?ZQan-h`27G-en@EhF64k3O$&I3A0!|>eI-|(CEu{;Q&8l zl;7UsyWjAvQ(1Gi>y+0oo_W;9V2qFc7azU3+tw?%_AhP&X*|h0WOJC1-1(JI;VMx7 z!E+sfl0WBh(%VO4cp*oop?pS7F2WsQk0G4XbVQFUUWE zQ2hKhZ^TXaC|WWww`Z>^dqVcJ5-vn(eRdt||R;&dup*St&dG z^0qCb=JJIJX?)!{27mOro;h^MP?hq{R5&YE-i;aJd5e>xr%R0uh#ZuY+Ye+&R#wo= zF^SuKtUIy5JMqY|%cD#GI~RA<8z{ zRNDIE>xiR;{U-|7rG6avncH-(-@1Cj8>8ZQ&?$q%aO<88l@g0n-~WsgJoS-qL&Co5 zVVQXxJ?#mWYh$5)YG1Lw&U14Exp3N~pLgV4N5Dp8dn^3qSWfYyR$yLA(gF0QmPg(0 z3r>}R4os0&=ELV*7$O)AbcvF`&n3*7B3_g2k~H#;5}HJ2BnF)|qXtK?I_{j^lZZY1{*H;( zYl>*$`lGIQKXS)>@AUdd1~p0CYFgg8g*NehD(TPh@vqE`!;Q<6{nd(B9;fUXnr|M; zGY9Sq$8dl2KWaVJ=KvDegmf^2vCwAN-jXC&bC<+j!jV^Uo2$Ud_$9_y8US_j2MsE0 zvbW5#;a=K}|3m)iTN;*C%niP?aj)vhgoKBLCBAHweu(b3GuTt)4#Q{nbJ0Y78JZBe z_$jbX$+38yDJL{TacreFC$yr9?w5a^IuE;}gHxj#qfJ0YjBZ~BGuK|0>U`7N^KT!~ zZ9;8p$}^s7p=nCs883lL)Ebk{?|hk^K-QyXXp5Q?LD=;rHCRNq^Wne~w)OXi;_Eh+ zeWIB(68UCubV>c0&Gst|@5~*Ua7@8EUOirK=A+@6sT}od^@7iX+0U=pJ?%7lZ=A2@ zQga~q(z=uS@m@}o8P{Em!F#VY^t9HR{Zcjm8OoV*g9OzbKIa|P(<`S)-F;AF*wj=NT|YNT!kHwP2laH`Lj zsA`UPnEI;ANA7zfj49esVK=N9HVd9oba-~ue+bBw(>eO(xa;f7&Qq4B90P;TuWcC= zjGjlu^|QZW;QF;ZP;#+&-O8VH?GwvlP{ zKR_wzvt1JZ#5seY^m)-e4m)Prt6DFzZ5B)O+Sswa!TR*5>(Iq^rRt+seLfK21XX%X!L3@Ht7(!S*ig*lyxD1AH=2$Y)2Q z5613!>@uhZsz+e=JeJ9f08pmQzedOHdNK_zUA^w&Fyg>u3JJQONK`bt_~F1Ss%nR# z@sV`;q6v={w4&=L&S@dTc+8yplu87o1Sf+fcTfCTY)+myoY%g86;N}qD);iGbbl1@ zDV(X`K7u8sjeSF}6bm31zv$o(SuFyqtiP@;8UU)*Tv_ z`BxE6OC$#zeU}Pwh3F5-YGHIbIXfP1{feH;!7)+}oz1A!`n$>esfy)Y*#7&G-MWd@-uv)jZeb~RGDs^(0&4_rdxWKV@kxd@p@YYc=)S|}9|hXVY8@Th+zL67IBIGfra1~oy4IEtc+d6bfS5Bl z;k_nAUt9O(!S9l~`wIq&LEj($?nP>aSj^P2Mx$hZW$Zdx((~B13Q7l_`o%7+Rk-22 zt#X=;P^5Jjy6d0?&Et)LUpT>+J#X^uYO*!ufA|2GE-57cJdxys^u-Q%3NXwn z-11Y;41Zw7ZSnV=yVid1_EU>hjMiJ27$R8c0&~PmCHXO8h6gEJg7F8LiZ(+=VyM{m z_SCGux(OXQtY~SF_nTx>%E(r%R9nk>4C+8o0Eb=k&=TWfZX4CdR$r<@kg=Tk=HMhN zpQFr6M3btJ__{!DxQAJCp50i77Fciclcui!q)?}a7V-Of(;dmghvi?lc0VDE(+JY?_!Ae`4OfbY z$i%p*0=H?onvyr%O@IlnimAARtkV$Fg#Ueox{FXrTpZSDlKRKr` zyq7NX$nmXX@|_`jefn?yHI;UsR=fNZr%W2pO1_gh2ag`A-h~^}vOotSdPLx*z)^Pu z!oH{O5Y>(>MH*atIe;{M9MHKHxi1@jIebo7^Nr_7D+#a-UJ*3oZNCjICW} z7Fi=z4rj#XR<@zph5d^<6lUgJtt2VgHum>S7PT-u0S+CW_Rg6>2X~alyWDUwtmD4- z-&GwjefNTnUAJw4kdNH@-7CR~$9rEtE9oArS^%jyTKCn|7Qr`3$UN6}Pm|d15&KZO z6GtJG@(pH5-@S8aB+YNd60z@Sn)n>xLX7jtvVV-^RjRJRLz|q@@m&~)yrtrpRApy) z^wKGqYw&yQW~o_60Zf{bv*kOpvPN==b}G#_J^_6t7Qm;zI+N>oSZrWmOtH=BRoK((q?1y9S{G+RNb{!t2E7m*pq z$JKDkzfEo(R_Eg!fX)0cxAJz&Oe<340kXu7?*a^CaQ7EApRp^I3TnhZc*Jf0Eg*!l zr+5+c9g3{_dA<8guOVt2^Q!KwoL(&+zOEKf*LQ02`oQkg)anL0>Pc;t%r)2UZ7*yq zhNRoTjs1$=jCmu}iIPH#=vS@@)BvCjFy^&1NFV!fUFdw{93hOCNy7UOL5>3)8pNO1 z(k8lUs*-D|YZ6%dhVcNt2sN5$9Be{G9&_5@&FBu*AZrM5kJ0Y;Mw-NW z?YO0d9xp~GQ~5M?<-PhW8vZ3i-bB(wCHfs6NP=sYiPICON$k_CH3YvmgrZuxy_BB2 zl(<#hg^GH8jXuA{L;n0^U*DvDxS!|1%pknybBO z8;NL|+6KrWZy}xT+hQ!KCA@)GcH7^R4~AQf3+Wrkw%#U(u+GRfv=R`I){Q#AI4iJ{ zq;?N#1$gBya$Ya-zuq<&O3*lM@sXQ%JS)&Tu7z+CpDO8@))^A}v+&xCZmzNP@E1Ip zjQ75jqVqDSs_qmt={k2jsn2$M*Dn&nk?>F~xmgtTt%^I5HmCYWUEx6Z+p|$^XGSGY zMr0(@A#tYVboJVQ#)#Y1-~F~pg<+XAW3}G%4HgRLa-SOU9pt9>FJ96uG#bk5*t2_T zv`Y1qs38o!7nAg}ejaCSq|_EQG4*@G?}(y~Xy^fp+a8o3f(}96Iiw z1vbpeHqlb{0bpi^hC9-f3=S5$rf12PnQFI8^q6fpWSoM+Qs`>syW;wJ(4+$IOts%a zE+VSsnvXe}MV_g>Z_+e*C*9COOV9j%1qTX@ZmRZ5@5;T^qy;L% zmRq_t7PW6`*Nskx0Rz-PTjZ0;p@18dRo=o-;J5T1z5I4-(_ zc{cW8mz6)SY#=!Fvj*ziju>~kfco@u`nFRTcWqY9TRHQid^Kgzt=8g=dwCw%RI2si znUia!=J@1oa6_2NUN_m^$|)SS`8BIK$K|yNnci{Z>?l_E`O#$ky|(b%v^>DgacthZ z{ju6sA0HooU2U>}W~O!?Mu1FB#U*%M0l5O&{HY$`;#$c8rg++CmJZE)b}kNnqUsB{%SG3}yE}Ge z#Gx!PZK=?pp3Wb%NB2(D(Z-B?BJwOgZL*5uunxh*=UL{!(8%sE5BV>WM+5%718zNU z1}JK7l_o|6>d4^|9TtoRIkG(&S$(ShI!&oN>YCK8V|I2G-)0K>F`uR}9FL~DI98#X zzY5!0ThX!n8+To$ymnnnaic1GiXwD$rLx7>MIAl0{iqV?Cc|*Ax!Q;V^*5TW5p1q5Xrlr9yY0HPuVh|2RL>L$t;seHqTEKnuj;3>;e zWU_lX83U=gPG!4asp+U*=S98eGFNLkzwA;{3%DWJC!?$Ey01J;~3?qmu%xMSb1jWQMAcUxF6w}UU zL=kzudmL=)a@+f=LDq7@Z#Y=Uvu$H@3`G@t_Lk00aEs*be=m*tpav6Fbi53-8|J#1 z;mb&|uExgEBC6<4AYzuOZ_Sa{$&kNfyVMUW7dq*0hGzm4HlQ(x=<%TzZKlZ3)#XE- z;pw$hs;r%XU1(RZ}YFux4Av#La5>ar=lRg8jC)YQx(zDoU zh(z{kPTv~b%rR>bQimJc9QJ6*^Xj+wGUs74)bwdk(nSYT{Iq~!!5T=fa%7;fG4@G% z;}UI!N!3LZlK{L7I7m{1A=jFeCo#ow!j}ezD4-U)mW* zOPg)v4yWO69um;Ks{1b*)1lyT8sn`BpFfPN7Te`*fTaHPQT^is`#<=34+q92eHn~0 z>is}XLNgIK>raw~JUW@ak;XU@2YdCsh9(0s=@v!wMRfrxMAExuSn6VWcxC1tu@*Tg`xcA}6P>&$^wrccz?D zr)cdcJb#U`zP?^WoMTp3wbD9EZxxO?Uz~v3cP?=}REGH_y>#ezgWeC@(0+rX(-7E2 zB#@TDgmDF9$bZYY-<{+h?`?+O?pXOro4&;2u`@0uzyoG&j&^Kc(x8Xs7men5RAi6_ zDvOw!tsm!2Z_f8r;)fkP9iV-u`Xj>a`J!d!;v06}^$jNNj_;t0;!=7eUvg*alcp|D zndzaUit7V=;U_sda!VtGO|BS{;a8=*X{p6LbXQv|>`!CiF~<>wNQkuSFSvE^;j@EM zl;NtBufN`NG5dS4lj^y!0{6$utRs{bsgNui7!OJr*-do;*eMVkL`e3;Vf%#P%x1(e zPk}d7F~{*6d|?Um#TX|`@Ez`jP(Q>B-lP4l_=qi1>!-iOg2cCjnfW{Enet0xS(pYm zNm2BXT=&kt&H6mTEfzm1F?x@!f$463pLDLi0g-2O#z^-k3%NT=vC%Ix5GwGCEw?!hJ_LDve40~ zLaipc+*YHyT>-{9B=J3ONs#p6i;G+S28OSm>jpV(XE!(Q38(E+H`6qC8f7>Ipzh^#%+MVN4NhfU{$ z?VR!E1@pPH8sxb?OTEE}WXs}tGjWDT`JC8|3+Z;B464mKSUpn6rOSv1KF262Rh)CB zcT7|v*jY3nlI)iMGUSr3>>P=Ip92lA*BIwP9$5>w?J0Q)!?q?r4~~qGt@`#Y^}0Sl zvydRqU{N*->T9qPC_H4G5ge<%Lp@T^T z{W+bh8fMQ;S~b*Mx=b2Q*gW1@X-DBigybCt-PWfa;%`ZC9mQG)({OuFfg>oDvKu%?3M|d)9c+?tS0o50zlxz{yb7qW}uypf9o>=aTzs@+XEA2+^k<3dF}@(v>I}0LA~=$&6p6plUMT$s zy*Bsxp6tko=+)`4_(LYLztq|;(k?5KX#}Z5(6upF`YF_`Gd2!S7B&FLeom)k_f`Nj z5Av2`lAIVFq)k0@*F+5$R}!J8*rr$<{zk98=AuhdjE8cl!e}M0@Qe)|rPYwiV)JL2 zL&Kf((uKC{>opm=gdxu2mP{J6fs}x2i{5j{I{hvn~pu)G?3rEPbC?v8!EB3 zR4jKD5yn`VEOaPWr1hVWaFou}lc}Fl3p$23-@cE~^lAp_iu@L@;|d^&V=^H8Dq|s{ z953J3o5BrExc)=u@xuH(=K7@Fg0;i*Dln=)T9+q$ZwNUKrbs`u(RcMZ?dHqc`9s-u z#a`uH7%nw*$G$R0vWfZLb0H)Ve)|LFqF=e2#Yu=!p1TI8`B@kUbi(hMQNx+KKB#@$^r79h^_Ay5usBs#-cwBAqcpH3%iH0)CA$uSc z<8?P1N4fbu(EE+h%3H1s*ZV7j!`=lLTrNqD{WMlsa6$Qc|IPispIaBG@1I*Vk0)&g**H%!J)BE>m9`^ zgSYSr*88&9cFCsClzA-2liX*3joMC5=dwOKn}0u?c##pEu*iI-M%`x!?mV|^07}hY z)lW9?;3RvBbsEJ_Ri~26KG@2S8uFHae&SnH-ZMc8X@w7Lrw^+y?Yjot6@$K8O z{7w_oW*@`0*Pv=06FstuA*}mPUvo%VXlxlZLZ)UN-AF{*N}oV zZ(!aB(k?cJ-|{kQ3vbxnN`t=br1&NYfHk8ow$_*^|wYqq^j1$kR|-Dz}& zoR60m6Tvg9=BM^XmL_jH+tfuv{yoLm^D9E}iek*wNBkKUTSIB}7_rp)9Tol`zhv(c z6Pw)q12_g9P_n#FFz%db8E(CMxhl6%O~3xd{~Z_14&7RELVuQ6}Ty zGIp5No$Lcz5)d2PIUe_+!0^Y<1mjnGpf4L*<{-e##EW)MYF~uf+h0`xoF&*>gO#3I+Psbh3%@KZv8IWx20pVjn5hcIL=38-^z@b|q8;}^tO1#SY_+Xx6M?^dj?0bf0CmjZedpw}zu3|G-NOcwC#cMz@T`K0Hofu` zx(e`13Y3jG&*qX0%|`kQmq z|3CawFo+s8o>%^HxK&H1tJ21VB-^enE9}B}ne$uZQ9}|CyxzPsXEU##k3CQU&kvY6 zy}Z0kNcUt{!|;jl$>v(l8ZyH8FkQ!r)wFam>9xb-oWa~9#??(ZgiWT5eUQfZphd|@ zj}v(w`lD)Yv2%U29J8A&^|7Bn)S5A=^=(C`x2L~)nUfCMy@(bLQs$Iu@LsvvEL`#N z&vCz5EWXjlTzsr^@d9kZQ~uN!h%jb+U5xe6Qa|Kb=9s-}!J7rP<-}pbpl;sQH=VsK zCl;#}4h`xaQ#ZJ)G*2`^S^Y3rI!EDOZW=XLq~Ei6z5ely7?=q@SE>pLj;4qWnz5xf zN!eb52lT8(fycpSyDr8R?B~j4<++z0;AOQ|^g&r7iCyvDeV{ImYhje9+#sA7BY?DN z*3K){;Q?Q@n*wvFPWYG~iZkTErkQH%$Tb6s(DU-t8f*uX`>5x2Eohb#4SX+YqNnM2 zODqt?1W?jtAd3_zzvagqwa*=w&gHe}brT;sHGLG#ARWq2 z&ptmGrFN&Co*oW#_TvF7_73@jj%3KRz&Nhq?>CTcdLwzo9}Vo8G%ih*{ptZ<3kq)2 z)DzFton;brGML_lZvjYPhO%`*^qFz|)g1yz0s(}z;l}&K$UBl#7Y7%ULS-uUSA0uhaIwWBEV{36C6~eCV|Lg4;#t2I)X{ zlf%!6a`wZeK7J^$!!Zn`SwpJXO8TJ|MuQ9QZIQ(v$8c=$WFV4EL)=P0%En3|kaWZp zHwfBef5hlDUiC37okL0r8PkxrRg=9$LhlTE!pd_&(Lp?ju`QDN$ptB0@23Yh$qYS_7E35QMb|Dy&h3g|W@3CD7djEdQXK)I` zzsoKbNQJ?KXNr{xct4~Kaz+i)_s4RYUR5pP6d3dI=gRjGKt3?*g4-e5_!}HbzP8&eB;S87Em(BfL~H?l5jB?rGk+xD6L10DD(v z);r%@92`)9XaT~lK=GU1axY)*X%;f z%^HX3bnlpDgD@zEarDZq^1y!x6E324!{;_Y9aNH2d4 z%%j`rO~282nNjv5{nr*9eSz+e`f=^ZKr&%JcgSkg@(3uinGQKTygI1tkr&rj_+K9%sL29(h;*mZ7YrEeMoEebs&18UevVpb@ z)81%ky~OI=8|K(k*y(R$K|Kb=n<0f1`E7X%fW5&ZJ~Z$7!LHOnU>n**L(i=*V!e1d zw8N0yzV|1seE-ffNbg>AZ!nJXzXI#A^%re9=@737ekzHqNzPX?%*q%l5FF>u7$d^U zF1uwF=@uW@Si5qIcj+>;qP0e+owUD|r}k2=rLXZ=u-QMEH{~Utn%HnyB#9sK3a-hs z(ymX2#(4$|bwqCWr#n$xH4G??^Q5Ju7QCqUE+4D2q)~S<8Ov&Fa5~$2|0dD*7(*k*&?k~5k%W_gY#Lm? zVCB>oqv!Ja;!t{wBr!nth5rp^6S#3zBDPG2iZ0^<7de{n#hHc9ZamcJau{b68Au}) zaN-I<8vAX#d6BJB-4Ur-VqEun;HL|LEBZ;Fpk2KR&dwG#Po3_E{Ib3Ut=(a*`tR*J zxA>0}9yiV42daD{CKidQN!HFDw%%2~fwtP0WwH01j_|}n3Ql{jcGylP@;JziH;Qu` z>%e5g`NY-MB9=>;Dm|xfXa~y>O=QVrXc4Todt3L*-MS)e4;i6?GpvPZ)Od@_l?l^2 zLdHOqervfgoI#@VY(v&FNGLO|;!)9t3zfHH7?tZK>b5khS)L-l`NK|G#~(Ui<=hy| zWU*3nEqfBBZ?(~HhRj>$9}bGc=b6m$i;*U70i-s zrUmR5CFwZ#m=%7l%H7fAiPI_0C?002Q9ZqVw_@=dk?oL1DLLK&NG$(_*z@0L7L}XS ztaeR6LqS8c2FKf_KEEcev$Fj4KM{MihR**TV$VjIXc?q+1jNKBV`UJVxkOq1a4JH) zW45Y%Lz@~>`tdhnMt2pd7#VgEwy3DvI-w1;znN9kGJWk()}+y@#M*jjWQ}*q^vMqS zeM4Nt`ho}dUzx~uUz-#)sedn@1kEIouW)j@0ilA~waqxsjpv>;{9Q=a%BUw(Bz|3a zMJ>F|m{y{Hqwo+;AN@h$O}pB+wDL^hqwc0bF>8$;vB8A)V%0g;7mzV~O}tXJP1`9v$Ov z9Os&gI%fV*N0|Mr@u9poro7&y3d!J|*skD7B1m9I%43h2kG?WN?Wo{pa^;aM*?M&G zrd1@z@YWv|%a@~I;>l3REjdAK<_NOb#nkqy{?}Tk@5PECEk)7Q1S|7jSF~J)e*52f z7#o5f?Ny&>zrZWv34JnuS(21 z3NY#c1K{hIHlMmUyaF}iLCXhcE(`8`4Y^)M50Va*ERIiaHyNWNnp>1B9f%l)KgsaE zd?l;M(pex8Dh{%!jeChv{7$;%K6XZu-bB)wicICj3Z8&sQ1RN@L(JbAeL7LuIlrb3 z>h3Zj6g9`G!j^MINPEtnM|bE*s7OnS**Bu@`Xsq1Po_h0wU z*nej;P$@0R5`!C`LBBAm^4H4wB143|ENhl*B}MQ!EiBn&Bpk@oO@Z?O(9Jvj^sgvD7VSl(jHDNjG{en1nxU9XhNem7Y4~J|9h0XI5S-u`pZ0qu9vf3*0 z88>1G@xdj8bv!2+9ynZ&3_<}~8;v0528i682u z_;0wvX$CgN2B8@&SXpLHi$8mRxm!d2=~^Cyi|h=ylKm(MY?dEdk-1JswY1(_Y`Z0qeZ#89GLggpR z3lcoFu{Y$2>vPMkIQ7}i^z_b4L$al%&jO>fD979nJSzm8j%yhqO!~J?cL&aNE2_Ks zdJQ*nRnb^5Jk4KEIsL#FZ?ufz7CJ8)LnCna~%x(R| z^{A?F+zsiyCVr<=)<1?nFd&2wAHTJ;Q)kqCFz-v8jr4<4B`o__mZbn-f^7Y1NgD8! zMQ$QEr7b5_u^hvfo1Q{&?txrCw8Z9%3{C=oS(lSKl9tw4KdOj`PB%_$b`O-cqw(q` z+~AMkGjV^`d!aI6i;ZXXweW^)(Cx}`M5ZN1q_95R8Ll(urQv=P)u(Tev^IAzEWV3BGOE&=K>Hdf4qQHx z{-MBi$x|QQaKDdVq(JYo-dkmn4(on8pOChiBJ?U(jBVIA8{a<)G2Az7Nxh2MXiLG_UEc{&@VX|gPx(u z8q0)Z`=XVD^Ll)g17bgNM08)Y{L0frs9o8b5A&x14%mQk!E;OpP?^(5EZes^P%G+(MP@IdVFbb(DBg znC3;^r|QDjb7;jAD-?%O7rrm^WEpCEVHJW zKfHgzc$L?jxdLbfi{S+@ZeA_(LinHjJg>l@wm-A3HT)B6edG7p(cnL4t-}%cueYg) zjWpzdws&|QdPD+t;V_e50Nw$F6D+}Dke*mL9iiZUnZ$lC@1maHXHY!91O2su4CV8h z1X@@KhOyM$Z{Mg{WSN?33M!DmeZA{;P^KhUHwMw!neBc04>cFfX6XC43y}sqMTQjf z%k-0PLyqw=R>se}OK}z?T$|e3WMrfI2RS;@QVX;kX{w$4FOlKtmfz^#-rCB+ zq(};$CB>A)iR1tS1Yzsu-yQq}4%4-TWRPblwncF3WMT^8JbQ7k@NdD(^-=i9++}18 zIbOgN$@~TDXF4X_Q^VBgGQ)Me-TxVET^8XwgsJBB!kUxWJyj+$j_+cGF!8{9=Tl7{ zm}{eywup^Dz5UDMK{qW+w#XzFv`Om96uXVTZA_Ld0HiN7AL2sZ`iHkvI!N&Z`F#Da zS%AqVQhDQT+=1aLGv>&aU?fT{fAMv>&S=x^FvZ3~I`Reu7Aag@TyccIhp$hE?f&Zv zPqxZSc}SR31d5*ZkH4*k24S!^88XjigfTB1c^u07VK!VUx>v|*g1ScSS+=g>-SbBM zE<_<;4j%Fz8&G>5OMNxbR#xV79eHsdzcl^l-E_l3dAHu3hwKj<2PqaawJjcqGnCZ| znieYM`&i1h(iT_x}L23HcpQ+zyUTx0a>CH9p=M zWa?_cs`{Cd(hPdru`z$Rf78>^{Yr^LYA2YpK)UF*BKLV7Ye*}ERvSGf4|8jWS!3slFc1{N?U<>+{;W8|MweX zo_0`eyng}9x^6j6W^pOT5B=P(qm{@t;oSQ9 z-K9chiR5}Y7&lfA&Yu@~LVp*T^o{3&`uVW zEiA}4FJ}^>6Ogv#?%uSmL!Ojy4BO==(yQuUzAbfE4P=0fd4zj|l@P}lCUvLDGVhGp3A{^EvMEnj#VtF@^t; z$)Gyg&cQhf4!ZbF*63;UKKvU^N_m~LAB_wBVCvQ?R??37Vf?CKeJw8?_BEWwpm`$t z_q^2+#VGJpF0&z1p`sx+xh$1h6jt#wgsa-(H(Yv2_U%V0p9udz2XZq1iVoZ`A|oU6 zuYNHw+E;ERsHsyUO~Xl{QOL^cDnVfU_0(`NBC(4I4$z#-==v{Tg_II)pa!HgU&hkG zyaVUP(0lDb%v@;M4NiIGr(3Pf4?Rh|t~O6E#JzdEESYq&vhU>yijCI2Dv#(V z=E3{RyUY#gpiUTa8y$;ih&G8t`OhHixVGoRM|m)Kt5JF+B^p8P81|d^lS*-GKw(;A zr;4AJAbSm;>u~%qe&dX`s%TI|b9!oln)jWhqqeq(_GiCa1{Mu^e!Q8!8&Ic4Av+2_;sr5l>b3sV%qRDEN=EZb{1=oPlp%H5 z#eUR=ipdamwONnwzVPV)gM(0Q_`BxQ?@hTJ@4LQ0Vr+HutCVG9W}Dk6@6-E!BF`nr z6Zy)zw9qxsEB#`7$hbeAHLIyDs;fo^^QKkUe@VM{`2LR8{ofvi{rTp0;tYSouKxm7 z$jX#rr2jki+S!+ek8#Z)&=mHBUP3C(Sn9zEP=l>;l?O6?8Nv z%A}=!Z;$;|!B@HVtIBuukG8H0M-88}$MA5})Yu0dU|ft~5n*F1MncXQU%vTJ8+Fqx&wP*95|S$ySy3HgjiT#W%xM`1oJw1!JVjQKAXpYgvQYwo z5e$a;l~=}5T5=-WbcluCLXF>5O@7mY->Huvy5ty1eh+-qrS|> z=v1uqCI*W9x=GxPp;95?CQi(E25MPUq?l4`B=*NM2xDLJ*7+)!6OUH*BWHEu?JPDp zA-!5){0j8qn-t;Qgs$>i3PRBc+q_486ivgU!yjeFschkx zrWfn}D6!9{V60E_olo-beKDQnz-Z7HRrkrq!bA}?H_prTCq$@@G-Zg7@p?7C-5l$I zJ)d(0)h6r6X=Y{upJa6ruDgd8sQKe>=#@~LxX0lpmrUT!A{b502Iw4~9qQe%9jcnd zJlrk3-PyLXr_EEdmE)xE1|f`-2E$!Q8#J3^l0*C`j&) z7SB3bUo(xW6LzOq+I(jXM!zwZkv-YM!gdrd#aaoN&EgXJxnFOMLe1=J4AQyuU1;ec7+`_xWVAX_Pt>q>Zv_nm6IEViVf zo9);#r$IlRY2IR#DN^Yy>l{DYx}WGH=-}M)F$|{QEKN_(#->hbP z;%78gIXS3`78?Lm7eQH3!}e{VtN0jE{iv^WtrjZL2ozRHI#t?+*K1zc1#}EQullj( z%&@9DxTa8Ea9Ogmzl#zO5P~&Q{pdn)Cn!<>Dwqu#rQ~D<&4QnTDMEOa^*P}MI2PYC z#I!QV3pB%0Ah1b=8jpRc!fV9|_IP~~xse$h(f*{TiFTLvrQNn!K))>g)wV5mR4MV0 z_9#5Z=Iw@HFF+swb@0sfsO7@PG@DU}IfZF4YY&NEt*au3YN^+qlO($6&VRFWcY?B54H49MKpL4G4#rPC_YYvvz z+#(>Aph_m2D#1sXT6TIlsSFE1Ayz4rTRh;Eq1(g2nwETY-TD09!-on=d8E6$VP&5% zrGkuoub_6Ib7lVI<>4kpxbTYZuP!H*y7k%V;EB*yrtK#^V_xk!*xNa7L3{gYR-cM~ zXe2FfA)9s*NXoac`4A+5zyAA;Bh()Mx^aYVjI|9f>?=ikzE6%h5zS*I%rD$d+b4!G zY4A!1C=DPuySGkaG@6SQi$T^yMw<9tW*4dmW_mn@`t4HXqh?&mA;IsXP+&DqqFlE%-axbIx z8=&N|Z%(7ILq|i?CS4{{2)IuBHjyumia+yULuYX(M+zndOe~xkPR5`l+ECK0=pbdz zw9hvPy23?QY!fuY;gOxT}Lq(Af zunj7-TlQLxW>cT7Ekhg$y$v-EU&<$2&*w^+>sY7mQf}R(%gB7>+6mR1n9N(Gt;{zN zT0V}xd-W~E3wy>t{{%*XeZN<&>8xOL-Q5EUcf1yx*w*9_GE~{eg?`{_vRiqh?&TEy zPj`=eK07=6wuCMo(^R5#SMb-`U04+L4_1$eQM6AzjOV3cN&oVp4zxfVGn?kd!BR1w zZ;27hn?Q4_6+;7t$W&OoEsP**C<-%tH&%1@<#w3Gb{LP#`$3~g28?F>OUB^sLJx~_ z@=AZtT6}Uy;f>9aOI7q!m|zG~YqmW2roCg|M6BB`%op$kHf5)Nr-|PG!s-!Z9bXMy zv(Je|=KDRcEN~%n6eD0hD^K9ltzJJA_UyBbD5jPFY;L`cIkk zBiyxMRc_nR(N9l|?agfvxy`rHtYl;@i#FQaK|ESXYF$77 z@#)gAkByCu(CJ|e466gOi-$K~^Mt&RRm?`QtCQS^dH5M=hjOV=ey0`?Uw9c#WVWVz zIz1l*W0HRsTy{y_N0qB9orODgRbr&UG;s&HKoY1GlbTD0az?+%JR)qO;qS!|rWtd* z@{-_)rxdkRFtieVrO0Zrj67np7|_$FEWF{ROhf1gdqqO!?WNxyPiWllWF;NVR$PR) z1+()t0v_07*uQa}J*mx-_$?+}OLs8`_MHeRjq;kdOCvRP z8vy+_s;i+TB+^fu{0e;3pq`|I${6zjdjtNy&sZA9?O%3T2 z6Wo)EnKZD$yatx9s(tbCp%^Rs;YdLOl}X8G;|C1jvcReKm|Vy6_F@9HFrc+wJG-YY z8%RhhyF0<%-QC@L<@w*|_O0%&e&6bZlAkqQl{`c*kWljD9Qvp2$Frj?1%T4m5~BRt*?9m3FomUx`5m zgewt>m=72b%rGT~apna}ig$Q|PF}?VE&I;}{dx_tdP9pnd{9s^t~6DGJT({Bk7t=? zV^u+0-m0J+Q;Lq{cB62dXn_P{HuGO!G48^)FLTY@B|9=mYokMv`dOnEP=CLK+`bte*tw&Xu2xxGs z=jyiyTu3^=dn~sA5^a!dVX1#IuGssBiCqt@>qRbZxgyAH%m@KK4>cshdfnRS55H(Z zla0>vTgKZAPh>vg_b$9f*LwEhZcP71s)s9v*f`s4V0Ub zBPp9Nz0cAvZ9Y)8K9R|kl?4DZ?%D88B+hw0(Y^4-!~C~e9T?43Yvx$)rfQ3$g$+p^ogSZFb>JOM?YCkjNj#EFr8K{ZXEvt<6Op#3eTr)3y_a> zybo}ovmF3{@}5!(SmYwMI)6}QnTazb^P8E)^1K6wQ6`(QhC!5;Z#y$52jn+0cxCmn_j|;x3Gso(m#l8)5P5wF< zrDe9h*7vC{+>!tgSsCV3@6tgjhDm>K3#W-TnC4onyFbnWeA|`_oTo8`w6*3_MSC(c zCyZ$PVQY1NGo~iu?efc4wM5c@vpX4`|7@1P2O38hu+r*2hFFF3{VhSyyXon_H%^Lw z3h^j|1ZF^B?oz3HAXRPtgme3=2-OY*YPFu^TVESJ*R0T$11ts7@e&ai!L?qqK?!Mu z99JvpFe~TZ5c$-*L)uTpD(Ow&j`vvT=L&SI0@BTTVgz5h+<%4^*QvTLPn>+D^tSP? zY3MgCD+>{BSe_({<6rP0Z%Ig#Y4ZABr?s6RcX53K`CZA1&)V=XnnOQ8GPBBOy>{Zc z0Hrh9)x)Dwj@6f5+xtg~@J5)D<(81>o+oE+r>i#tYq7Qx-kq5$)$51DOMb}O)?+s2|H4{4gdsl|>%8Y! zXT4RmRxe3pLt>%lC*Y~2u0={qiSAqyxENA*SBm>-kZsx&KHc?Y9@v#o5%dW@Xf`OB zXGyi~i6>Ed3m78=I94Aer(6Q2} zzQ!!U@S6bn zF2=Ta@1Xv0CDnY@(%~cNSS%Tv$+-NbLc4%u?q!d51p^5PPVqBzTqTuNyYI|o6osFg zg2UGHU8Bx|D+gaB*GK`l-sT`lb_xJ9(_QNjNsp!0;O>qO+fTM>egw9<+{m1_mbO?& zcHg@{9*Uje9i69sem+`5wJv-&P#L#}_yykUQ2GW4yDb)XnryGxomrAap!m#Yihe}G z+#Cf9DS|-qRICuGP9gb7vpS1bH;_-r>6>7~5R8V{HGm_VwbqEYGRm((Bf{7-R&ETDv)+2^C7j@8MIq* zbeY0}av+Yyv`Svfe%|m$(lOTkG4i@Y==t zT!7*{i)kw{9w8oC9&q@3KSdKn$rDExM49{KGO^)iynEhEI#wq{0p8+<6(gix0q?Ek zQ)Y+u7`VkDBU$#g%H#fG?$jZ^nlCjsr`MqHF2Eu#16Uho?=jVEByUXXIPM7{W}t8W2FbOhmK8qm^0hP7eU>pdKAg9Opkj(INp?CuEyy+VHVH5nmuYSwM|aBmuv zbK43(VZsB8BDEi`4yJZoLiBK(n(NH}?gbc;^MC7V(g^pwID8ZtDGO-xQXrJN{A5>J zKwT^J_(zZ)eZUZKj>06tePM%RlV2B9uN%AuUM^$Y@U@Z-L~=wIe`@G4?6AN+-D+#`R%XYrUioLdRtcgCefr0d#)AT$Rj z(ViYGd%8r)}rqIaXm=P2lNCt#(}ovz?AuO1BtEY_$q#PhzU!dp29V00N` z>g1XYg*8-CUG9MRXZbIdCMG*=kFQ|)Ru|fZ+c&1C2<334FjS1RJ-kTGPIP0vw7g$Q}XXo7@j+b=7gX_GTul;i9fc>>6W zxsw(0M1ngH)HoQb5q(%h9#`Ux7~n19b@TplciC5Wz8ch~z#d;4T8wX8gE^51hy{`g znn4BN8H!^$8+<-kR12v6%+0&aZV2+2bE?2mo*^UU(gx{%*p!W|M291jf*KbO6`|i4 z@&JI+^$S4ux{E~A#n$YXP4q}kzJYus{Dgc|)?-gFPnu=X zelAznFV0n!N<*}HfB zO2T-+GGrK>@vJ6q6nD#;v`UD;lahLePh||!3d<60`i3g2?!Jz1B)=pq9Z24rXM@SH{cqSXp=&aNp}?cDEnj!(j;q;J29WeDZy*4K<_Hy>qn zI_9vl3<){qM0tX)FX9=~`bpUa7{{AA9qT`1RT(i}&z1S!?WAj)t-_=pS)(%J!AP2h z_|O4oB8i_TN}&R(qs6#5BN_kdQ$U3J4N#@Bh60Oggow8yZG2MNU**37#K)1Wl{9qZ z|1(<7Kfm?t_wv{TzDQkx=~;hP!5o-XFi9|p+Y_7>B8L4gkLFb)d!CW`z>%=~(L=$1 z@dj`#qcg(+yI`npV4MB2=SpYX^~pie4ANiz zvXL&V&Hy1FCW3e)n(Wz9%dojV?veRwuhQ1S;XrF0NI~#KbeKE=c*c zszGxY9}L46N)anv#pt~IvkPN@^^s_^swiW;B?Q!CbXncVXriR6T99W0>`$6V{O7<6 z2rxb_(JfD9RI#8NJsq8&f`Q}Hy8b#5M7L)yfa+xSjd?nhjNbQ53yI4h5aC&V2S`Ia zM`)@->BgHnSJ5!nsXR@sUCaLYH*3dX*&tV)xQ5^)0A{s*zh$Yw0)gTf$$!zR1KD0X$(tssn zCE`rl!s_mn{9)yhiNF%|u+zlF`TCsagOm=uv0bxL~|i_VBh5ylx6e>`l9(7J+z)aREEP(0!S9LYWkEcverOO7$~@f^k!)mDHQWzUtvbidnfN|)8PV4xFS-k1 zp@Dyjrj&}`gfEsYe9n;g1sq(zTvV0fx22PGHtQhV_GMUC3__x$s@4C2c&i6AAr! zES#>T%Kc!8w~Eht@UA1%u~y2BlQN1M5f{NgMIPN}!pbgtwlY8?REW0~)s zUhy1wSuH2c;TQ4;6wW@zg+n`#v}dzF`z0z49>riQ*#smb0nJ)!v1YaY31DX_4X1?f zAf*lXH`*a0MhVD>m{Y@c!OkC%IQldE$XGKk(}p5Hy~Dx4==>tOG0Vir{Wg)$>9RE4 zguLE!Lkcy_FnIie-z&kU?*ujUo9_i)M&OEpt_QGa<1`07Q#)e$AIIzBHwM4^F1rsR z6k&hv5x+i!e`iC(V8j2id59%$JYtOKo%L-e+Um*kJTqVa(?!+=9kSCKqs8X<%owJM zvUQSo8|n+DUxcZkl@M?CLFT9$r&&K^r(XcG&CKxy_q=+sK0q1?#37*&R_g`HN|?NR z&@8Yn-N@x0fJpUnALDjEps>@OW@&{+Oj4v9rX?mgjl)|P^wb_*TJ9vUbOE&`{KS43 zQ5ci|(7QpwTDN-CcN6cO=IvjvMROCsMic0pql+DGVTbxWHcYj057YtR=m0Fh?a+{yzg=+RVGgh1sfT;s z9J$w$TQ=CS=9frDnhoma`l9eHlrF1kz#j&;@?Qe*;Ee)1IzAcX8>zz89j~6?D-f!I zV&@cDpmYSJ=8a3uI#aBzh^Ygi4EajZ-ek`kH*nKnYaY=GPvOua;S|)%D0Ffk5c~5V z7vtes-Zq4C9OY$u4WCuXge3g6>Y}eUeCTiR4(8n_=2zemj-;4)md4cQO#=Z{k5-h> zWI&OG@c@J%$!a6%sE@k8>%AWVdU3}C8L$cNdMiEO;XzI8;0AP;&f#H z-n`z9r0{n<>h67-^bn@U-r_j@?Om(u17nAx%J~oQiJ_Rw|RG zye9#-%k!n7YtY>^3v-=jkN(FFFJJ7{Z7vpEB&4l5vBQ*G5UN^PYM71(u^gYNQ%HFb zR;AsV@o8)`B~fAl^yjDZ7#*%0`DIbIo?5;G4&$`g-aML`cSnuIZ(oyXm*`$Q{21ps zcdo-a=fiLhNXSp7%o=u8+d=|vn5U1ODZPD!0_jXSsw`N11L7n*k0OU*!T-9nC8qGV z0%7@##!Q08A_Dm%YfPl!WvxY~8q>x7@bWFFM<5ACM_iIbPORxKN@7@zhPL zVLk{sUr)SkDZg&mxn|_wOoK!8hqg=Y8gLO?_E2%;#JnUsOy%5uDk`%{q3eXEQ z!IEIows52Hp&L2+mgezT;R-;*9!}TDJ8BWhUeOjO0%vxY$+cIa5}FF??mxtP~sd;Gr)<+|aoQCKb-4D zcBV1oV%3P>L%@Cr$hrmP-&Y`PfS+bz1EE}y>hNAq{cbnd8!Y5_BF?uS-dB=#5Ib8t zJ6kx<`xwuLUe9}0q>~ofXC%lkK7^-m@%8<|mG}2OsvN&+2CcF*s6J#H+NDM70v%ZN-bEiAd65cAe}Q}Vu0V-& zB#Cr2DmL!r$h7aljM&PT^pO(bAa@69`!&koqZRhF@^l9+%L-H4@@!M1=0fd7^-8#! z`Ff=>-9tzl;jMw@b{|dgTqzE6WvyE86@sz;>l#F-0czPeKv#gJvH)(Z#I6^+48Zs^ zZ0vso(U3jWd9Wx{$CusNKiD`|ocW!C9vtaHe>8s3mfR?sdF?n;W>W^ZdW;_xt0jJY zW5S^?^CJYgZ5^;S@p)S;f&U2Q?a$&D3TN|hwVguK9(rfWu|{-sls43Lf^A)XIf?{# znl!o0LCEMo*QZDxlywa*h`qt4(?+z~{dX@wWhEvA727jf=jk%Jjo&vVB1o22O2~SY zi~44xwwG15Wrfwv?A^jDfV_iYGK_3Ii+;EN;mrw|DNs<9R~s5>ZV%HC0jmV^g~;I$ zN6ocL-b6mh!W-R_|FN+?iX(&4^5A%RJZ@8)WbDS^fs^(M<7o__aB*91Q-VQPQP3Fc zoTbhw!jfp-CO1P!YW}1(CWD@?_M|-zkQv6klHssdWuIEhw}t+P>BFBC9Ae?L=cTD@ zV%`E?DX)M0Ys^L;UrF$hL2xp%)!GHc!~zZT`=n_;_WSh+<0mptDz9aVA{7~(R2l9* zg_!v4p%u}oWv#oBE+03Sd zM6{3RB%uiV*=F&tei zMm!qgv3slGb?o`Ou$?!vPPf#__+S7dT)`NZAg}gGzYRF-fupR+Gl>Wln@6g-EE*hb z!c$@OtG`3vP)XpnG`XcA*y(rVt^J$AZ9@|N-$mi-rSPJ4gX%PtfIzmb)8RCCovHv*TNZ9>GgQ za^^XnzkF<~<@L&jn0MQ&`!i8LS_d%+$dV=wl{*FhS@$F|-`G~y*hnv#Ro1n>8+9Wq z(5&aOnuq$43QqFSeGM9bB4m$lx8Z0a_<&$0S@Qbi70_O{#XuKzfIuFRRMhhTf)LO6 zjKeGt_wtr-y4k1T_Z;iCapW0qVHa9OLiX!nMF$$1<9XL=Gd4k=zsvD4D4`ZlYkO)AxE*A6dQaKi;a%6xj;HOxXH zWU-g19}tITZ+v6R|JHS#`e@9Lae)g5y`^k3ZJI&< z6c|-m7>MCu@v;=6iSOZdj##Y`RLv8^Rm+CL{~zzg`-;vMA})m0&Fz|1e`bCQ#QlCX zeT$;XQ)ajXsFu@*)b3(JkwpXD!gUf(yXj!qSUvgB#s%UBH2C?=Emqrg-_<#cEl>!e zTo1kZFo(wUm!`bFWqpjghHSGmkSJ-mj)5+qdui=b?>~xJ168S0#>CPa5UFIMzDAJ1 zWe8kJW{Qb0nb-{)7iLGgbM7P2wYFgjqRTgvccn_dOWo(z;Huu}nb^QGGCxd4W1 zPPK5;DEz79zwnk5FI+d{=R(Gobvyev^EPS(nm zc`Kyt|KG3PUcAIvgY*^9sDWR8wvx=1LhZ8hp{MsI_4Nk}y1&$@!jM`xn^j&{ry_Em zIkCfJF}rbjJ?+B6!ZKM=Z(uKl^FgDoX!3(+=3SGFh5Ae>T{NIqf_y1phz9T^)9ZsR zGws{XALbBiBib!xcidbIDJwt_S9c=M(9~k%I2*%bPMiqDdpUT!oKew3!+p}?E}Po~ zyAJ$-2_-UnEA36OA~$Vzvkg8V9IM6WL&F}RKUCvX6mls>_E<#+HE@>TO!9MJ8Tr7zZ|7t-Aoi%r+^LSbk-XJ&Y-M;wOB-aaQ4mrOVh zF~IuNP7nUIw8J`=Q)C-XV?ar~NTR+Vww_eK8A*?9$B;g7JT7G!yPP`U0%xomB~zs) zRV)IwpVen(=WiyH-YvD<98OIW%~u7V z+k!k&RFUU4H(SuI$dl)Eco+@RA$KCDZ5f7Dh7t9 z(x_qUxS?1e)b8lCLNA)-b22pj{BXFG2#{V!|Dtz36J7wvY39Dcaw19-PTfxFhS#G zv=A5jto)BD7Z=>yF#nej(f>h3|NjY@mWyK7CRu4Mq^0Qw!QaZ>3m5vseB0VtZ@sUs zx9s*@k-%GhmN1<%JEeTWyI}f?*6w<-o^QVda^+FID9Wgo`Kj9PBW6a%!S1kL3SGN% zU>uR)6%`Dtv_0|Z@6WI#m_)??{fFs*!&;{3k(%lDMoh$sU3`DLEC$%y0=1Ez)FA(#)tvqBJ>Q~p-ioaz7qLtC5}#*& znoRnVJ%6c46&&)2PH?_kETlq_G#82!-pU$8*x-`)*Wr*eA1i6y9x6*e48^(AZei{c z3|9G7Fn(pohcs4?;lfJJ;g=iB=p%vfg0O)S`srVb`$dn4xPbO4;A6wl(=B7;>VdNV ztrN{{VuaP*+7R7)d#a`ZsgWVi&isslbk@$Dj$87;^L(?pVie*6K=7`^!=5epU_{B5PVRzbLbM}Dh>8Cyuc4@Je`o|1c>5rQ`f|{Pm z0vl4BYBfC7P8W?cc#B(8rjtcqr6nX9u+uE6x7CCs!cR0t9$gCtCeg4kFwoF+JrTNF z<@oJ2zXP$p$aCLYR#r zyXp9yN~`xDpX+sWbdu*wKDVv)=R39pS>hJgpZ$-}?n4jg#}xqBeRR5W$tD=ly8rHln3h`Q3KR3UlI-zv-KJAKL;FUdDF=-Vqz2*9y&0!vv6|x7^S!4! zK4Xz{0k20Z^=xo|P5!b9?p-RRiuhTg)mA&}IcmM71u1hlAOCR8F`s_XK7q~OV)ta* zhUQqfte>mn`E)yswAk53&U-QtmsPlf#b;lvTI%_6zjMJ@W?K1MPWrg&#}b?E=-wN~ z+Ddf)g-q`0x0 z%%EX3%$1I7Q&KH9qP7p8g#?Ar-6+IaEaQi*+Aw{=gk-P)_)e>Fg2SFxpDs1z0B>iUB0rq&ROTR2-zFmFFS-mPuJSGYjk z$s4vAp~|GMJXZI)5!nHs#{Ey9=dVO>{XvhU?x!jHQ9{+yAU($($>cj21(~ zF*oxi%At2=;$F@-*HarYd{Mc~=-Y8WO26ytDU@pB^ePq#i)xUaXyvwwH@vL&ccURF zS2C>icsj=o=^K}?bPtUR;nh>xGQ_ZK_c~b#)VozWoCrI!2L}grj-E@5#Q(b&P)FcE zE69X0^NO%}HRZr2{;*~r!+83q1!mO}x;9L1XUj&8Z4u9P#pfn_rE+;?@C=zCq3jV$ z_4fO7eED#Y<#(TzaOm)L{@3?`^nBADe20Cn=lF;1JNXzo$9=6w1PeiD=ZR}g?i^}Y zdAU8`!pp15s!cPN0?2^vovi>KOCOrihMVs_{j?kh(@fOVf21VC1aY44O-$t#IW*qP zmVI78zSTdXKaL)Zu{E}l*$$I`U8kgr?A1TyVgF#NC&lg-+T9zG!s&3Yk&1jbv=tj??(j zH(PASQw`FI*KCPOxi%A%3*~8oo9nFW=2IHQRH+S-5$i;b_`L88g3TlCwgbmcll~F; zv@}<{+lqC~7Wc^hFkPGnIr_6Q9@N**+{cvia_PKsk`9sB{f!aC5k_ftb|lM9lw=e^ zLkrgvtM(<6^^M*Vy`jB*%yHbg&_;WeT_OXQV&lzjJLF)q)|JS0iCaeHhCRN>dXV~p zslOUiZ#}|;BuA$yd#x(sUi`+k?(;m#_(wA0H_{7*Yw78!w~1h%c{<-C2f+Hzk&5OC zSC4z0Ny@;&f94>XW0S?5eJC>i%Z|cwR#@LRrpkW)iMubc+S)&0SZiJ`e+#4`3V1n3 zEEEM;>L#;q^=uVQW8C0;_E7%SWQyIpri;95PL;0t&~rpkTb}H`GxAzKYcTE zp?tS^0M>(lWR~^|%h+~`+bSE!@qMH6-e{cXhIH9V?cNBP(6{e9sP|nHCAVn5oQ-Yp zS37$AejpVp6wm9P1|s8=OA-iP;K&Oj&~30Fjs=9NRZpqwUfj<`0;PAIT{*Pn82ZLDaL>YqV%R(m5cQq{e$-BME<&fSugot zGR{K6m1>SBArFKj$+YM{!+tHimkxb7&xe9}t^9fOw?~@Y$_C3+L)`sAZUi~OYnljmaO0Uo0OIwmichnOFHu4 z?B?4A5_DlFt)?Mzq36}aMBu3|RM(r)^;H%F7IH>}G}gfdH+w~^vS*?7H{XkT=`xiu zSeI(ST^hwh1f3@ONN;l~AE0@0BEG>X$aqh95%TdNshy3ab`<&qa?#HwiVXgUw`0Fu z#DrkIrghgYl13q0k~`MB6nYKDv3vx5C}G=KpuI+-#j#vd5Ggx+Nhg9$>?I0Td(nq( zC!wOv@M61Lo__V*Y{4tg-3-edI^o+`HWwlt?lvq>`*=GMvLeHgL|*PFVPS2Dw~n5j z)9?;L_i2pVbuTpbejTJ~AiBo#`(F2?tPY=-st_X6xhZ6yYV|9HQo0qyx3F|5DD|~? zOcMP1?#J}QeFm)%<+M~E=~a-DR;TyU$9rC8zOLaa32(MHJG0X`9%>b~6b0Xp)_A~d zq}JPQzf(_nrVirpID_W*vMx1xubPJfg;4p9r<85{*-apw_F-zkRZN}=JpU{gtjZLM zc{vRBSA$$B+A1gHQYdLtMsby|ABqNxj49%YZ%tLJA(+3BsaPWdsJWOd=OIoSN=dTW zSaHPH++$RFm5n;tuX_3t{LK7Da|6(50j3;TXE14gjjvPHGBWg3+KPYPtUP(0XmAT) zDNLOP(II**CaspgT$%mu^bSeAn7%#OF+nXdoyuNe^?vTf*}F%wHacZCn1X-TmHb0z zO8MI`T2Y2yN5H#O5>zH?lO@XFx~mAQ+dnbq_`1u{b5_zTclMN%9W1}qY9Nx zBWc#pEFJvq_G}wxwP`SI%G#$KB+8hDO0U#>dLdhg_;*q%7rQSYb*~n=tX3TjvvQie zE)u;)ZiB(4CX76LrM%Ouf7R|yhS*NqB-7QU6MbHfu0^@h`wPVm?*59549M5E?VP3sTeD?Jull_)_Dq_OVZr!(oC-p&XqZ`_PY^j^JFQ>%QMvs%|wOg%{<$_}i{VI!tsyBflvSaFZ=QG2aq%y_84BAx0k zK@43^MF=$tn}%&7NE%e62JjdxNh^?|nh5j{!B$a|!yymwkzVWlY|$*b9w7)CA&7O7~B3;pQ2I z@<83bb$Ar<4dLvMpXLJXc}ba@NXIh~(y#2m3bZxe2jm-s1njG=hvqM%o2&`84U&u} zUyGZEQ$v!Ha3LM~n4D=Dkt%Y%W4Kd3On(*c6_Zz1mIpTgWi=2`%Gi<%l(VAs->>bG1#L z(stN92JAkagjMaM#{f|c_Ltf!M3bN-zuk~sIE?LB^k4GC~VB3?5xY z)KJXuSY7j?+nPx-8k075efUzV;b#j=~b2tsAkP1iZ1AB5IQP-XHdX842g2@<8*yDRe0bC*j zq8FmJ0Yu}n#NNmdc!t;HNs;j?^Rv3#DEd;o6j&xMa56hwHuxV=&=9e+G$xhuVlp3c zN?Z-D{iSie*efe~UQv%{^JBe)ph2p5*?AB(NK2~o?PAK!vGnXSPh#9b5auBS&!>E4 z>3l7XzxLf0yT8g7zcc?L&HXh}DgOeNm}GGLb$jr;IReo7fJ@6iTt*63yLb zn;&bEQKrJ}n{f*cUt@mxi`IwXLh{jwE6u`1P#`98BVnt@+QDHl+E|O=FcvFZF7o4G zk|%u*xbZIulp|!I!!nJtTK&)+e5^M^^HaNCwyi6+L5(fQ;4+k_pQyC9CcRN45FQ#y zG&sRHq5wOo)zCy#{qBLm30GHFj%n-9@^*uoGX|_^9VaZgti_W!;{=*S)#Oad@-q!o z4BBs9R97|p{Sot*s`{4g9^DD72Abp;R`qrr&KAjv%Y8PhamDzYGC^@-{H<$sVT6de zE9u&M0hmM&c}?l

KFO-*p|_xSal!@8*z#@b|Cczw>+FmJ@FDW*RRB@MqKWRWeIE znFsE&dcGik5S>NP!x)JTe6R0h6(HI1O0Z{`3@&Z%Sv6OpisWI!5yNf(O}^vZwT#IZ z7#@oQi9wpsz`Fpc&a>h}qVh6kh97vyp*d@R`cb5`>){Q3271bHdamTcPUC}MoZ1n~ z;31E2@5FGt#Zmi_Cw#mop%_Dlq(_PPE+7f~FNZxXsOITk+sK(*Q{13!oE9zxgfTY% zOeM}fMSH}l;%4IzIEV3V+r3Da)Czq>Q-2;W!macsO|svmg8HP3CJW7^;>hu=EV$D# zTr9pW_v)70@|7l>*TA@c&H0Tw6a+>kqnmQr0V&I|=aC`jcUY}Dbm@b^>!C=6gfrCV z%K_{f$0)1T{$n`PnI-DMS0>vT#xEM`YEU;r_wVHtRv%)}DAud{2Bvo?w8RA}BChoB zeJBuv1JYQ`Lv?YoWWaZZw3#5H79EN~!@t~}zh-8JMJ$7JM!jlSv z60|C=ePPAo0PaJL)0OoZ$&XX!2M}Ech2qnpt4sgcM(}s8mDurCNEBaul#Zd*$$LiJ zD8b3JnCGRNYb-r^J5@J6*8c0*?Jh_@q=(gkrOdY{71ch`g)7z=7jTgmy0Lpy5xY%T zJ~}>Kx>!zvQ|+NhdFW9mk6~!@QPs7=cSb#LxF-JuE(9zGfX3jM5Hg5i$oz3q<9~nt z715YkkNF2(_(4g7@8EZxM8r(lRXdg9ao*$KP82S~9zI*lNb!&4{ zZxsxQ^n1^;nk+d7tb}$Q|6b;Ms208@o@9Ox{{Vm0x!HvqpVlw$j?p8j)Uv91Y>ca$ zEq)H_SZ7QyAG0(N0RrI%!5@}pq_7>|NdN0a5Q0}eLh^uKTId^F6)0g`q)jlPV8+M1 z(cRj@Vg@ZXPn0EYiN9A(L-xP^(LcIqP`d1qop1m1{~o0a*gDv{n(Rb@h6yc=lb{NK zVgY|3vM$R2hOcq6>XKohrBP}AptY^sMh|0~l}meis{5Ve;41qR+wbqca4M>zi@x-} zXzaGw*w1C08mBqC51{aw;U^UmB;tZM5mH%Pof$Ti6Ugy0_jvb1pUVD(Sr0v_Dlj3D zZMyrIRuf`+tY_WJNIBZMW_+z|wRn3Z;o@w#S+6`uPyfev@OG>0$t3hNSyg-O%#?`3 zg2&e?DH(M#MH6m`pXm%g!8D=|phuXhkHn$B#c&5{^MWt;Zh9CKmdaww!K9%{$Nr0c z*kRP06Uy43n`2ZJ)N)+p4ZO*77v-&>rKB*ahQf`d9q?x^#8gUOu14@&pyNt@!9s}y z7sKkcjb;l8w9lA@;IKKrdW9_W`Gc@ROl@zWRa3D`W*Ntz7sLUEt^92L68_BTQ(|B%lu?$dT4r5G_HspA`d#-X-)wPD_1dbo5W< z>jS!~g9mqHGYRoX@ef?4XkBek#YrcO6m$gB$|?(H>Y~qqe{bOby7puT@{jyWf=>?v zQdR=D7YOEd%~{|k58Y|JXap*p06ca5%BnaqV+`l zAi^HJtZZ$qa2(_Rh-jIprZ!M$X11RlN{SfpgJ?RruYKz3>i28?At~uuq1W&4+`QaV zuLM!07~)y{uFxK*#>t|eUby%w5JFT=R0Nm~=dS2fwI^y7O+&@Iyt_*%k#lZ#iD5-~ z>3_>HzvtGO8IyNFl4cXV-z8S{COsy*NRgg)OLS*%U+-QsdR_C@F^(l`SAhJRh?)9A zcHx~U;h~W%e0Z?*Ay1fimFL-${-cNaJ0+x{A+fDry^I=zOw*^R7@P!0J7L4B^OHpl zi*xOsinoMTPReF<1M~N9k_}(>>?~#$6l+y^owje$o-Jj<4HY>OT%aFhQw}^QFM5t8 zw}($1?W$|585v6@28Q3e3WTd;al1NqL9Q{iUX<_u9-T1S#wH98f7-x6d)5*y-@Nd8 zLRmsr|#pTh|WOvM!H6`9HH?@U4tI+`A#4Q$<(q?%g=7pr;v9y?9zr zM-$@l^Vyv*#R=s|F&~||CF)-{VGSZnHtbDFXlIQ_uprG03-a<`8%E&J!8$xXS>XV^^yl;NqZc@6!2%g7E6k0Os;Q2|T-+>B{l z2MHVl%L~_;wvf(0kX3hvGpR0uv8+CLueh7vt#7cL@gb*`RmKh`VqUIin!VihDd!D- z@m!AXjR@k$(^OH@wW4#;nZC@Op?{d6(w^a9KUWU{(V)$9{vop%u#;WeAN zn3}7@Zw!aaa=14&0GMWnf>;bEhl#AZ^zKy!LcfP1*_CKyk(fm=7>yvHG*DdQyQcbN z6#CEAHV4yj2X*gU>*|qh_~Y`dRc03W7;}t&n|uw z6{v%1UN0`k>cwe9q3-mx>oY;8LzvB&M~fLczwF*D^rP@{aTT@yDk1!tr-{mS8>O}J zjC(669*VnKkiX(u#P*|=tGTC44`m145wER;D*uN#D!p}<-!Cp>f7V*o9#l%pf2lOL z7`lD&d%G^$SYTy--<#7r_BlpzW^uMn?R*BMhC1n~-=z}GCplE!w==SjX-C`bEUJ2K zB9~O4`KMQLT@(5kk`fu?a)sGT5|bt2+7Vt{YM&*^Cv}2n@BDUo=G4j}__Q!wrTU@j z^Wg5voZoEnmgy6b3M}SGh~f?G@7wj?>aY=Y-)flsO3VA1Qu@mQ_m2&pRA-`~gYDOC ztZbU(a9R9~lLG_efuRoSPD<#vGZS@8U8T|oN}<!?*JC?;#RdemYquniUd`j?tOz6Iy9aEQkTl zjNsGq>PM)0Ml8NK!PG{@y+5T{5Cx@qQIX}9&uprC zq2SI>`L$9W8+iO7zZk^&rUB9&i&0GT^NWEi&T5KCTdA)1rqm(?TUBAzzk-5pqg$J^ zj+*2ld!M~wy<7F2e22aBGb(lFuT3o)ON?;iEli%ocnT*XCz*A?;uVw* z)Z)<4%Dt1Tqw)&+(<`#dgyyOO`|CFjzhYeoZd%0od=xF~d*;wi5jwx3=i0D{e1?E3 zxF<2ngAd$KTd6)O-i6_~23wDF0>qYJ&Y-uHpBw;~<4Td)X&TkO2r843H0V!zeF0?Y zmMdPql2l}j=4y>14g_ulX4TEsZR7o>QtUNV+_SToWwuk*j-2Q+G;t30i3tU**@NSY z$yfN!c~}=lqLqbtB}7L%7e_w`P9!H^n$8&^C0_;W_q&DDSeWncMn0_-qb%_8S}vWp zj0PbX`-|YORM4TD62%IM>D@p*dz)mI=XZ}U4lWKVOu^_*_m6ug9fy(Sj|Xt**xNg@ zP#h=U%og6^&k&XnIYE{WjA?c%$~1uj{jd#A?v8^BUf!MDDul_}f_$ z1yd@wh0*Uei|BQ1&U7CP#Mjg3tTY-QUuw+d4=z_jBT1VazZJ3y1f&)#AqG~6x{a7(wF12E?rOqCzh9nuiH%5HSDBIh zS6MB}^4)yLlqp;F)!IPC3>}I z!<_$SLuFy>SfloarLakQ1$p+>8!iTG{-2E@wSOX20zn(Li`2PfMX<@$=oBiDZ}&KT zRfp`&jFmZ++-Ah$W-3PR!u&kTY^fu)0n4q>Ahu&bLgXpVFs$Oj8@w(A0wsNMf*)9y z&ntqDI_|F6Z=A|#&lT9+U%x3vgKF2>kxsd7bfC-BL+9RVY|u)KNodyH6G3EdcQ=-X zU##*JtCT?h!Hnc`uwG^oxyjs>laGuk(&ro1xh(}39xN%xIC;^;D_n?-$A>=0E)#}P z&ZjpM6%G4#njsOzIGE0F@;NOjwT)d#w@EK60>{ZfgIj#2LI^qDtY|6PplT; z3RkE1+22*uZsouJEyUfw@*uIsA=Svohjj7P`Ri{vZp(P>{jEatQPNR+pRb>A8YOEv zPMas*3$i%Q*}Zh`V)Zq@dVg&;@*Wx^Lb|aFHe)3d_k4dp_;J^wHAtSr>TLF)2&c%J zOO>aJDu{D7EK~g@!-l0<>myU-knmQRa@!k|@j6{TuS zitHRmz`z(Ae=rhgIe!hilXg6t>5d*q`UbAtp#s@u=8iX^>PZV%kcYncyJQTBjl^Lr0|+qc*eP58`4dkV6%t`s zz4>}hsb{4p>Hhd?dR}&Dr;HH9-I?zSLwVzJTQBc>ae4Xdk<}<&*UYc*lN~l*N~Sxs zMU_hRncxjOI);)4zWz~A>+Qd#XB-!wSm1C_U{)miy|RFMwC3lCuEpH-(ZqpL-knFL%wlwSNC^MNM1h*LK(I6LZhzy!cQ(OZt%OG1(`b z8-B=$oj7+|-0<6bdzfqjeSMMIQ(@1%=W`aV+YUe=p z(l=qz$D*WX&XyOx`?vn>YaxS3>u%cvpMD(s^+T>M?2+k}zb|