From 1a08a98c4e819a560232c1ae81e34a01aa4d2d88 Mon Sep 17 00:00:00 2001 From: Salem Sayed Abdel Gawad Date: Thu, 6 Aug 2026 00:57:32 +0300 Subject: [PATCH] Add salemsayed/codexbar-meter (#243) A bar widget and attached panel showing AI provider usage limits reported by the local CodexBar CLI. The bar keeps a configurable number of provider meters; the panel lists every provider, quota window, credit balance, and pace summary, and scrolls when the response is taller than the panel. Claude-Session: https://claude.ai/code/session_01BCNAY79YEoNxyubdt8Co9A Co-authored-by: Salem Sayed Abdel Gawad <283208+salemsayed@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) --- codexbar-meter/README.md | 88 +++++ codexbar-meter/bar_widget.luau | 493 ++++++++++++++++++++++++++++ codexbar-meter/panel.luau | 448 +++++++++++++++++++++++++ codexbar-meter/plugin.toml | 69 ++++ codexbar-meter/thumbnail.webp | Bin 0 -> 92096 bytes codexbar-meter/translations/en.json | 17 + 6 files changed, 1115 insertions(+) create mode 100644 codexbar-meter/README.md create mode 100644 codexbar-meter/bar_widget.luau create mode 100644 codexbar-meter/panel.luau create mode 100644 codexbar-meter/plugin.toml create mode 100644 codexbar-meter/thumbnail.webp create mode 100644 codexbar-meter/translations/en.json diff --git a/codexbar-meter/README.md b/codexbar-meter/README.md new file mode 100644 index 0000000..1c4f471 --- /dev/null +++ b/codexbar-meter/README.md @@ -0,0 +1,88 @@ +# CodexBar Meter + +CodexBar Meter is a native Noctalia v5 bar widget and attached panel for usage +limits reported by the local [CodexBar](https://github.com/steipete/CodexBar) +CLI. It discovers the providers enabled in CodexBar, keeps the bar compact, +and exposes every provider and quota window in a scrollable panel. + +## Plugin + +| Field | Value | +| --- | --- | +| ID | `salemsayed/codexbar-meter` | +| Entries | Bar widget: `bar`; panel entries: `panel-compact`, `panel`, `panel-tall` | + +## Requirements + +Install these commands on `PATH`: + +- `codexbar` 0.47 or newer, configured with at least one provider. +- `timeout` from GNU coreutils. + +CodexBar owns provider authentication, network access, and provider discovery. +The plugin does not read or store provider credentials. + +## Usage + +Add `salemsayed/codexbar-meter:bar` to a Noctalia bar. The bar shows up to two +provider meters by default, followed by a `+N` count when more providers are +enabled in CodexBar. The tooltip includes all returned providers. + +- Left-click opens the attached `CodexBar Meter` panel. The widget chooses a + compact, standard, or tall panel tier from the current provider payload; + each tier keeps scrolling as the safety net for unusually large responses. +- Right-click refreshes usage immediately. +- The panel refresh button requests a fresh CodexBar query. +- The panel close button dismisses the panel. + +To open the standard panel from a terminal: + +```sh +noctalia msg panel-toggle salemsayed/codexbar-meter:panel +``` + +The adaptive widget also uses these panel entries when opening from the bar: + +- `noctalia msg panel-toggle salemsayed/codexbar-meter:panel-compact` — 390 px +- `noctalia msg panel-toggle salemsayed/codexbar-meter:panel` — 560 px +- `noctalia msg panel-toggle salemsayed/codexbar-meter:panel-tall` — 720 px + +The panel renders all provider cards and scrolls when the response is taller +than the panel. It understands CodexBar's standard primary, secondary, and +tertiary windows, named `windows` and `extraRateWindows`, credits, pace +summaries, provider status, stale data, and per-provider errors. Unknown +providers receive a readable title, a neutral icon, and a theme-derived color. + +## Settings + +| Setting | Type | Default | Description | +| --- | --- | --- | --- | +| `codexbarPath` | `string` | `codexbar` | Command or absolute path used to query CodexBar. | +| `refreshIntervalSec` | `int` | `60` | Background refresh interval in seconds; allowed range is 30–3600. | +| `barProviderLimit` | `int` | `2` | Number of provider meters shown in the bar; allowed range is 1–4. The panel and tooltip always include all providers. | + +When no provider flag is supplied, CodexBar's configured enabled-provider list +is used. This lets the plugin work with any current or future CodexBar +provider without changing the Noctalia code. + +## IPC + +Refresh the widget and panel through the shared plugin state: + +```sh +noctalia msg plugin salemsayed/codexbar-meter:bar all refresh +``` + +## Notes + +- The plugin runs `timeout 30s usage --format json --json-only`. +- A provider-level error is kept as a card beside healthy providers. If a + refresh returns no usable JSON, the last successful response remains visible + with an explicit warning. +- The plugin is compositor-agnostic: it uses Noctalia's attached layer-shell + panels and theme roles rather than hard-coded light or dark colors, and calls + no compositor IPC of its own. Developed on Niri. +- The plugin writes no files and opens no network connections of its own. The + panel displays the account identity CodexBar reports for a provider, such as + the signed-in email address. CodexBar itself owns provider authentication, + credential storage, and all network access. diff --git a/codexbar-meter/bar_widget.luau b/codexbar-meter/bar_widget.luau new file mode 100644 index 0000000..0ab4f39 --- /dev/null +++ b/codexbar-meter/bar_widget.luau @@ -0,0 +1,493 @@ +--!nonstrict +-- CodexBar provider usage bar widget. +-- +-- CodexBar owns provider discovery, authentication, and quota fetching. This +-- widget only normalizes the shared JSON envelope and keeps the bar bounded: +-- the first configured providers are shown in the capsule, while the tooltip +-- and attached panel expose the complete response. + +local codexbarPath = noctalia.getConfig("codexbarPath") or "codexbar" +local refreshIntervalSec = tonumber(noctalia.getConfig("refreshIntervalSec")) or 60 +local barProviderLimit = tonumber(noctalia.getConfig("barProviderLimit")) or 2 + +local providers = {} +local errorMsg = "" +local requestInFlight = false + +-- Noctalia v5 panel surfaces have fixed manifest dimensions. Keep the +-- regular `panel` id as the compatibility/default entry, then choose a +-- nearby fixed tier when opening so the surface follows the current data +-- without relying on an unsupported runtime resize API. +local PANEL_IDS = { + compact = "salemsayed/codexbar-meter:panel-compact", + standard = "salemsayed/codexbar-meter:panel", + tall = "salemsayed/codexbar-meter:panel-tall", +} + +local PROVIDER_META = { + codex = { label = "Codex", glyph = "brand-openai", color = "primary" }, + openai = { label = "OpenAI", glyph = "brand-openai", color = "primary" }, + azureopenai = { label = "Azure OpenAI", glyph = "brand-openai", color = "primary" }, + claude = { label = "Claude", glyph = "message-chatbot", color = "tertiary" }, + gemini = { label = "Gemini", glyph = "brand-google", color = "secondary" }, + copilot = { label = "Copilot", glyph = "brand-github", color = "secondary" }, + cursor = { label = "Cursor", glyph = "cursor-text", color = "secondary" }, + opencode = { label = "OpenCode", glyph = "code", color = "secondary" }, + opencodego = { label = "OpenCode Go", glyph = "code", color = "secondary" }, + qwencloud = { label = "Qwen Cloud", glyph = "cloud", color = "secondary" }, + alibaba = { label = "Alibaba", glyph = "cloud", color = "secondary" }, + alibabatokenplan = { label = "Alibaba Token Plan", glyph = "cloud", color = "secondary" }, + antigravity = { label = "Antigravity", glyph = "sparkles", color = "tertiary" }, + kilo = { label = "Kilo", glyph = "robot", color = "secondary" }, + ollama = { label = "Ollama", glyph = "server", color = "secondary" }, + openrouter = { label = "OpenRouter", glyph = "route", color = "secondary" }, +} + +local FALLBACK_COLORS = { "secondary", "tertiary", "primary" } + +local function shellQuote(value) + return "'" .. string.gsub(tostring(value), "'", "'\\''") .. "'" +end + +local function commandPath() + local path = tostring(codexbarPath) + if string.sub(path, 1, 1) == "~" then + path = noctalia.expandPath(path) + end + return path +end + +local function providerId(provider) + return tostring(provider and (provider.provider or provider.id) or "unknown") +end + +local function providerAccount(provider) + if type(provider) ~= "table" then return "" end + if provider.account ~= nil and tostring(provider.account) ~= "" then + return tostring(provider.account) + end + local usage = provider.usage + local identity = type(usage) == "table" and usage.identity or nil + if type(identity) == "table" then + if identity.accountEmail ~= nil and tostring(identity.accountEmail) ~= "" then + return tostring(identity.accountEmail) + end + if identity.accountOrganization ~= nil and tostring(identity.accountOrganization) ~= "" then + return tostring(identity.accountOrganization) + end + end + return "" +end + +local function titleFromId(value) + local text = string.gsub(tostring(value or "unknown"), "[_%-]+", " ") + text = string.gsub(text, "(%a)([%w]*)", function(first, rest) + return string.upper(first) .. string.lower(rest) + end) + return text +end + +local function metaFor(provider, index) + local id = providerId(provider) + local known = PROVIDER_META[string.lower(id)] + if known ~= nil then return known end + local colorIndex = ((index - 1) % #FALLBACK_COLORS) + 1 + return { + label = titleFromId(id), + glyph = "chart-donut-3", + color = FALLBACK_COLORS[colorIndex], + } +end + +local function providerLabel(provider, index) + local meta = metaFor(provider, index) + local account = providerAccount(provider) + if account ~= "" then + return meta.label .. " · " .. account + end + return meta.label +end + +local function providerError(provider) + if type(provider) ~= "table" or provider.error == nil then return "" end + if type(provider.error) == "string" then return provider.error end + if type(provider.error) == "table" then + return tostring(provider.error.message or provider.error.description or provider.error.kind or "Provider unavailable") + end + return "Provider unavailable" +end + +local function windowLabel(window, fallback) + if type(window) ~= "table" then return fallback or "Limit" end + local named = window.title or window.name or window.label + if named ~= nil and tostring(named) ~= "" then return tostring(named) end + local minutes = tonumber(window.windowMinutes) or 0 + if minutes == 300 then return "5h" end + if minutes == 1440 then return "24h" end + if minutes == 10080 then return "7d" end + if minutes == 43200 then return "30d" end + if minutes >= 1440 then return string.format("%dd", math.floor(minutes / 1440)) end + if minutes >= 60 then return string.format("%dh", math.floor(minutes / 60)) end + if minutes > 0 then return string.format("%dm", minutes) end + return fallback or "limit" +end + +local function remainingPercent(window) + if type(window) ~= "table" or window.usedPercent == nil then return nil end + local used = tonumber(window.usedPercent) + if used == nil then return nil end + return math.max(0, math.min(100, 100 - used)) +end + +local function addWindow(windows, title, window, rank) + if type(window) ~= "table" or tonumber(window.usedPercent) == nil then return end + for _, item in ipairs(windows) do + if item.window == window then return end + end + windows[#windows + 1] = { + title = title or windowLabel(window), + window = window, + rank = rank or 99, + } +end + +local function windowsFor(provider) + local result = {} + local usage = type(provider) == "table" and provider.usage or nil + if type(usage) ~= "table" then return result end + + addWindow(result, windowLabel(usage.primary, "Session"), usage.primary, 1) + addWindow(result, windowLabel(usage.secondary, "Weekly"), usage.secondary, 2) + addWindow(result, windowLabel(usage.tertiary, "Monthly"), usage.tertiary, 3) + + if type(usage.extraRateWindows) == "table" then + for index, extra in ipairs(usage.extraRateWindows) do + if type(extra) == "table" then + addWindow(result, extra.title or extra.name or "Additional window", extra.window or extra, 10 + index) + end + end + end + + if type(usage.windows) == "table" then + for index, item in ipairs(usage.windows) do + if type(item) == "table" then + addWindow(result, item.title or item.name or "Usage window", item.window or item, 20 + index) + end + end + end + + -- Future providers may add another named rate window. Pick up any table + -- that carries the standard usedPercent field without treating identity, + -- status, or provider-specific metadata as a quota row. + for key, value in pairs(usage) do + if type(value) == "table" and tonumber(value.usedPercent) ~= nil then + addWindow(result, windowLabel(value, titleFromId(key)), value, 40) + end + end + + table.sort(result, function(a, b) + if a.rank ~= b.rank then return a.rank < b.rank end + return a.title < b.title + end) + return result +end + +local function creditsFor(provider) + if type(provider) ~= "table" then return nil end + if type(provider.credits) == "table" then return provider.credits end + if type(provider.usage) == "table" and type(provider.usage.credits) == "table" then + return provider.usage.credits + end + return nil +end + +local function summaryFor(provider) + local windows = windowsFor(provider) + if #windows > 0 then + local window = windows[1].window + return { + window = window, + label = windows[1].title .. " " .. string.format("%d%%", math.floor((remainingPercent(window) or 0) + 0.5)), + remaining = remainingPercent(window), + } + end + + local credits = creditsFor(provider) + if credits ~= nil and credits.remaining ~= nil then + local creditPercent = tonumber(credits.remainingPercent) + return { + label = tostring(credits.remaining), + remaining = creditPercent, + credits = true, + } + end + return { label = "—", remaining = nil } +end + +local function providerByIndex(index) + return providers[index] +end + +local function selectedEntries() + local entries = {} + local healthy = {} + for index, provider in ipairs(providers) do + local entry = { provider = provider, index = index, summary = summaryFor(provider) } + entries[#entries + 1] = entry + if providerError(provider) == "" then healthy[#healthy + 1] = entry end + end + + local pool = #healthy > 0 and healthy or entries + local limit = math.max(1, math.min(4, math.floor(barProviderLimit))) + local selected = {} + for index = 1, math.min(limit, #pool) do + selected[#selected + 1] = pool[index] + end + return selected +end + +local function percentText(value) + if value == nil then return "—" end + return string.format("%d%%", math.floor(value + 0.5)) +end + +local function providerSegment(entry) + local provider = entry.provider + local meta = metaFor(provider, entry.index) + local summary = entry.summary + local children = { + ui.glyph({ name = meta.glyph, size = 13, color = meta.color }), + } + + if summary.window ~= nil then + children[#children + 1] = ui.progress({ + progress = (summary.remaining or 0) / 100, + fill = meta.color, + track = "on_surface/0.16", + radius = 6, + width = 26, + height = 5, + }) + end + + children[#children + 1] = ui.label({ + text = summary.window ~= nil and (windowLabel(summary.window) .. " " .. percentText(summary.remaining)) or summary.label, + fontSize = 11, + fontWeight = "semibold", + color = "on_surface", + maxLines = 1, + }) + + return ui.row({ key = "provider-" .. tostring(entry.index), align = "center", gap = 5 }, children) +end + +local function tooltipFor(provider, index) + local meta = metaFor(provider, index) + local issue = providerError(provider) + if issue ~= "" then + return { key = providerLabel(provider, index), value = "Unavailable · " .. issue } + end + + local windows = windowsFor(provider) + local lines = {} + for _, item in ipairs(windows) do + lines[#lines + 1] = item.title .. ": " .. percentText(remainingPercent(item.window)) .. " left" + end + + local credits = creditsFor(provider) + if credits ~= nil and credits.remaining ~= nil then + lines[#lines + 1] = "Credits: " .. tostring(credits.remaining) + end + if #lines == 0 then lines[#lines + 1] = "No usage window reported" end + if provider.stale == true then lines[#lines + 1] = "Showing last known data" end + + return { key = meta.label, value = table.concat(lines, "\n") } +end + +local function hasProviderErrors() + for _, provider in ipairs(providers) do + if providerError(provider) ~= "" then return true end + end + return false +end + +local function hasProviderStatus(provider) + local status = type(provider) == "table" and provider.status or nil + return type(status) == "table" + and status.description ~= nil + and tostring(status.indicator or "none") ~= "none" +end + +local function hasPaceSummary(provider) + local pace = type(provider) == "table" and provider.pace or nil + if type(pace) ~= "table" then return false end + for _, key in ipairs({ "primary", "secondary", "tertiary" }) do + if type(pace[key]) == "table" and pace[key].summary ~= nil then return true end + end + for _, value in pairs(pace) do + if type(value) == "table" and value.summary ~= nil then return true end + end + return false +end + +local function estimatedProviderHeight(provider) + -- Approximate the panel card from semantic content, not provider names. + -- This deliberately errs upward; the scroll view remains the safety net + -- for providers with unusually verbose or future-specific payloads. + local height = 104 + height = height + (#windowsFor(provider) * 82) + if providerError(provider) ~= "" then height = height + 44 end + if hasPaceSummary(provider) then height = height + 34 end + if provider.stale == true then height = height + 34 end + + local credits = creditsFor(provider) + if credits ~= nil and credits.remaining ~= nil then height = height + 30 end + if hasProviderStatus(provider) then height = height + 34 end + return height +end + +local function panelEntryIdForCurrentData() + if #providers == 0 then return PANEL_IDS.compact end + + local estimate = 130 + for index, provider in ipairs(providers) do + estimate = estimate + estimatedProviderHeight(provider) + if index > 1 then estimate = estimate + 10 end + end + + if estimate <= 420 then return PANEL_IDS.compact end + if estimate <= 600 then return PANEL_IDS.standard end + return PANEL_IDS.tall +end + +local function render() + local selected = selectedEntries() + local rows = {} + + if #selected == 0 then + rows[#rows + 1] = ui.row({ align = "center", gap = 5 }, { + ui.glyph({ name = "chart-donut-3", size = 13, color = "primary" }), + ui.label({ text = "AI —", fontSize = 11, fontWeight = "semibold", color = "on_surface" }), + }) + else + for index, entry in ipairs(selected) do + if index > 1 then + rows[#rows + 1] = ui.box({ width = 1, height = 15, fill = "outline/0.35" }) + end + rows[#rows + 1] = providerSegment(entry) + end + if #providers > #selected then + rows[#rows + 1] = ui.label({ + text = "+" .. tostring(#providers - #selected), + fontSize = 10, + color = "on_surface_variant", + }) + end + end + + if errorMsg ~= "" or hasProviderErrors() then + rows[#rows + 1] = ui.glyph({ name = "alert-circle", size = 12, color = "error" }) + end + + barWidget.render(ui.row({ gap = 7, align = "center" }, rows)) + + local tooltip = {} + for index, provider in ipairs(providers) do + tooltip[#tooltip + 1] = tooltipFor(provider, index) + end + if #tooltip == 0 then + tooltip[#tooltip + 1] = { key = "CodexBar", value = "Waiting for provider data" } + end + if errorMsg ~= "" then + tooltip[#tooltip + 1] = { key = "Status", value = errorMsg } + end + barWidget.setTooltip(tooltip) +end + +local function decodeProviders(stdout) + local decoded = noctalia.json.decode(stdout or "") + if type(decoded) ~= "table" then return nil end + if type(decoded.providers) == "table" then return decoded.providers end + if decoded.provider ~= nil or decoded.error ~= nil then return { decoded } end + + local result = {} + for _, provider in ipairs(decoded) do + if type(provider) == "table" then result[#result + 1] = provider end + end + return result +end + +local function refresh() + if requestInFlight then return end + requestInFlight = true + + local command = "timeout 30s " .. shellQuote(commandPath()) + .. " usage --format json --json-only" + + noctalia.runAsync(command, function(result) + requestInFlight = false + local decoded = result ~= nil and decodeProviders(result.stdout) or nil + + -- CodexBar may return a non-zero exit code for a partial provider + -- response. Keep healthy rows and let each errored row explain itself. + if decoded ~= nil and #decoded > 0 then + providers = decoded + errorMsg = "" + noctalia.state.set("providers", providers) + noctalia.state.set("error", "") + noctalia.state.set("lastRefresh", os.time()) + render() + return + end + + errorMsg = result ~= nil and result.exitCode ~= 0 + and "CodexBar could not refresh" + or "CodexBar returned no provider data" + noctalia.state.set("error", errorMsg) + render() + end, 30000) +end + +noctalia.state.watch("command", function(value) + if type(value) == "table" and value.action == "refresh" then refresh() end +end) + +noctalia.state.watch("providers", function(value) + if type(value) == "table" then + providers = value + render() + end +end) + +noctalia.state.watch("error", function(value) + if type(value) == "string" then + errorMsg = value + render() + end +end) + +function update() + noctalia.setUpdateInterval(refreshIntervalSec * 1000) + refresh() +end + +function onClick() + noctalia.togglePanel(panelEntryIdForCurrentData()) +end + +function onRightClick() + refresh() +end + +function onIpc(event, _payload) + if event == "refresh" then refresh() end +end + +local existing = noctalia.state.get("providers") +if type(existing) == "table" then providers = existing end +local existingError = noctalia.state.get("error") +if type(existingError) == "string" then errorMsg = existingError end + +noctalia.setUpdateInterval(refreshIntervalSec * 1000) +render() +refresh() diff --git a/codexbar-meter/panel.luau b/codexbar-meter/panel.luau new file mode 100644 index 0000000..a60c104 --- /dev/null +++ b/codexbar-meter/panel.luau @@ -0,0 +1,448 @@ +--!nonstrict +-- CodexBar provider usage panel. +-- +-- The panel intentionally renders the provider array instead of naming a +-- fixed pair. CodexBar can add providers and provider-specific quota windows; +-- the standard usedPercent/reset envelope is enough for a useful generic card. + +local providers = {} +local errorMsg = "" +local panelOpen = false +local refreshIntervalSec = tonumber(noctalia.getConfig("refreshIntervalSec")) or 60 + +local PROVIDER_META = { + codex = { label = "Codex", glyph = "brand-openai", color = "primary", source = "OpenAI" }, + openai = { label = "OpenAI", glyph = "brand-openai", color = "primary", source = "OpenAI" }, + claude = { label = "Claude", glyph = "message-chatbot", color = "tertiary", source = "Anthropic" }, +} + +local FALLBACK_COLORS = { "secondary", "tertiary", "primary" } + +local function providerId(provider) + return tostring(provider and (provider.provider or provider.id) or "unknown") +end + +local function titleFromId(value) + local text = string.gsub(tostring(value or "unknown"), "[_%-]+", " ") + text = string.gsub(text, "(%a)([%w]*)", function(first, rest) + return string.upper(first) .. string.lower(rest) + end) + return text +end + +local function providerAccount(provider) + if type(provider) ~= "table" then return "" end + if provider.account ~= nil and tostring(provider.account) ~= "" then + return tostring(provider.account) + end + local usage = provider.usage + local identity = type(usage) == "table" and usage.identity or nil + if type(identity) == "table" then + if identity.accountEmail ~= nil and tostring(identity.accountEmail) ~= "" then + return tostring(identity.accountEmail) + end + if identity.accountOrganization ~= nil and tostring(identity.accountOrganization) ~= "" then + return tostring(identity.accountOrganization) + end + end + return "" +end + +local function metaFor(provider, index) + local id = providerId(provider) + local known = PROVIDER_META[string.lower(id)] + if known ~= nil then return known end + local colorIndex = ((index - 1) % #FALLBACK_COLORS) + 1 + return { + label = titleFromId(id), + glyph = "chart-donut-3", + color = FALLBACK_COLORS[colorIndex], + source = "CodexBar", + } +end + +local function providerLabel(provider, index) + local meta = metaFor(provider, index) + return meta.label +end + +local function providerError(provider) + if type(provider) ~= "table" or provider.error == nil then return "" end + if type(provider.error) == "string" then return provider.error end + if type(provider.error) == "table" then + return tostring(provider.error.message or provider.error.description or provider.error.kind or "Provider unavailable") + end + return "Provider unavailable" +end + +local function parseIso(value) + if type(value) ~= "string" then return nil end + local y, mo, d, h, mi, s = value:match("^(%d+)%-(%d+)%-(%d+)T(%d+):(%d+):(%d+)") + if y == nil then return nil end + + local localGuess = os.time({ + year = tonumber(y), month = tonumber(mo), day = tonumber(d), + hour = tonumber(h), min = tonumber(mi), sec = tonumber(s), + }) + local utcAsLocal = os.time(os.date("!*t", localGuess)) + return localGuess + (localGuess - utcAsLocal) +end + +local function windowLabel(window, fallback) + if type(window) ~= "table" then return fallback or "Usage window" end + local named = window.title or window.name or window.label + if named ~= nil and tostring(named) ~= "" then return tostring(named) end + local minutes = tonumber(window.windowMinutes) or 0 + if minutes == 300 then return "5-hour session" end + if minutes == 1440 then return "24-hour window" end + if minutes == 10080 then return "Weekly window" end + if minutes == 43200 then return "30-day window" end + if minutes >= 1440 then return string.format("%d-day window", math.floor(minutes / 1440)) end + if minutes >= 60 then return string.format("%d-hour window", math.floor(minutes / 60)) end + if minutes > 0 then return string.format("%d-minute window", minutes) end + return fallback or "Usage window" +end + +local function remainingPercent(window) + if type(window) ~= "table" or window.usedPercent == nil then return nil end + local used = tonumber(window.usedPercent) + if used == nil then return nil end + return math.max(0, math.min(100, 100 - used)) +end + +local function percentText(value) + if value == nil then return "—" end + return string.format("%d%%", math.floor(value + 0.5)) +end + +local function relativeReset(window) + if type(window) ~= "table" then return "Reset unavailable" end + local epoch = parseIso(window.resetsAt) + if epoch == nil then return window.resetDescription or "Reset unavailable" end + + local seconds = epoch - os.time() + if seconds <= 0 then return "Resetting now" end + local days = math.floor(seconds / 86400) + local hours = math.floor((seconds % 86400) / 3600) + local minutes = math.floor((seconds % 3600) / 60) + if days > 0 then return string.format("in %dd %dh", days, hours) end + if hours > 0 then return string.format("in %dh %dm", hours, minutes) end + return string.format("in %dm", math.max(1, minutes)) +end + +local function resetAt(window) + if type(window) ~= "table" then return "—" end + local epoch = parseIso(window.resetsAt) + if epoch ~= nil then return noctalia.formatTime("%a %I:%M %p", epoch) end + return window.resetDescription or "—" +end + +local function updatedAge(provider) + local usage = type(provider) == "table" and provider.usage or nil + local credits = type(provider) == "table" and provider.credits or nil + local value = type(usage) == "table" and usage.updatedAt or nil + if value == nil and type(credits) == "table" then value = credits.updatedAt end + if value == nil and type(provider) == "table" then value = provider.updatedAt end + + local epoch = parseIso(value) + if epoch == nil then return "not yet" end + local seconds = math.max(0, os.time() - epoch) + if seconds < 10 then return "just now" end + if seconds < 60 then return string.format("%ds ago", seconds) end + if seconds < 3600 then return string.format("%dm ago", math.floor(seconds / 60)) end + return string.format("%dh ago", math.floor(seconds / 3600)) +end + +local function addWindow(windows, title, window, rank, color) + if type(window) ~= "table" or tonumber(window.usedPercent) == nil then return end + for _, item in ipairs(windows) do + if item.window == window then return end + end + windows[#windows + 1] = { + title = title or windowLabel(window), + window = window, + rank = rank or 99, + color = color, + } +end + +local function windowsFor(provider) + local result = {} + local usage = type(provider) == "table" and provider.usage or nil + if type(usage) ~= "table" then return result end + local color = metaFor(provider, 1).color + + addWindow(result, windowLabel(usage.primary, "Session"), usage.primary, 1, color) + addWindow(result, windowLabel(usage.secondary, "Weekly"), usage.secondary, 2, color) + addWindow(result, windowLabel(usage.tertiary, "Monthly"), usage.tertiary, 3, color) + + if type(usage.extraRateWindows) == "table" then + for index, extra in ipairs(usage.extraRateWindows) do + if type(extra) == "table" then + addWindow(result, extra.title or extra.name or "Additional window", extra.window or extra, 10 + index, "secondary") + end + end + end + + if type(usage.windows) == "table" then + for index, item in ipairs(usage.windows) do + if type(item) == "table" then + addWindow(result, item.title or item.name or "Usage window", item.window or item, 20 + index, color) + end + end + end + + for key, value in pairs(usage) do + if type(value) == "table" and tonumber(value.usedPercent) ~= nil then + addWindow(result, windowLabel(value, titleFromId(key)), value, 40, color) + end + end + + table.sort(result, function(a, b) + if a.rank ~= b.rank then return a.rank < b.rank end + return a.title < b.title + end) + return result +end + +local function creditsFor(provider) + if type(provider) ~= "table" then return nil end + if type(provider.credits) == "table" then return provider.credits end + if type(provider.usage) == "table" and type(provider.usage.credits) == "table" then + return provider.usage.credits + end + return nil +end + +local function paceFor(provider) + local pace = type(provider) == "table" and provider.pace or nil + if type(pace) ~= "table" then return nil end + for _, key in ipairs({ "primary", "secondary", "tertiary" }) do + if type(pace[key]) == "table" and pace[key].summary ~= nil then return pace[key] end + end + for _, value in pairs(pace) do + if type(value) == "table" and value.summary ~= nil then return value end + end + return nil +end + +local function paceColor(pace) + if pace == nil then return "on_surface_variant" end + local stage = string.lower(tostring(pace.stage or "")) + local summary = string.lower(tostring(pace.summary or "")) + if string.find(stage, "risk") or string.find(stage, "exhaust") or string.find(stage, "deficit") or string.find(summary, "deficit") then + return "error" + end + if string.find(stage, "ahead") or string.find(stage, "reserve") or string.find(summary, "reserve") then + return "secondary" + end + return "on_surface_variant" +end + +local function windowRow(item) + local window = item.window + local remaining = remainingPercent(window) or 0 + local used = tonumber(window.usedPercent) or 0 + local color = item.color or "secondary" + + return ui.column({ key = item.title, gap = 5 }, { + ui.row({ align = "center", justify = "space_between" }, { + ui.row({ align = "center", gap = 7 }, { + ui.glyph({ name = "chart-donut-3", size = 14, color = color }), + ui.label({ text = item.title, fontSize = 13, fontWeight = "semibold", color = "on_surface", maxLines = 1 }), + }), + ui.label({ text = percentText(remaining) .. " left", fontSize = 13, fontWeight = "bold", color = color }), + }), + ui.progress({ + progress = remaining / 100, + fill = color, + track = "on_surface/0.14", + radius = 8, + height = 8, + }), + ui.row({ align = "center", justify = "space_between" }, { + ui.label({ text = string.format("%d%% used", math.floor(used + 0.5)), fontSize = 11, color = "on_surface_variant" }), + ui.label({ text = "Resets " .. relativeReset(window), fontSize = 11, color = "on_surface_variant" }), + }), + }) +end + +local function providerCard(provider, index) + local meta = metaFor(provider, index) + local windows = windowsFor(provider) + local children = {} + local source = tostring(provider.source or meta.source or "CodexBar") + local account = providerAccount(provider) + if account ~= "" then source = source .. " · " .. account end + + children[#children + 1] = ui.row({ align = "center", justify = "space_between" }, { + ui.row({ align = "center", gap = 9 }, { + ui.row({ align = "center", justify = "center", width = 34, height = 34, fill = meta.color .. "/0.16", radius = 10 }, { + ui.glyph({ name = meta.glyph, size = 18, color = meta.color }), + }), + ui.column({ gap = 1 }, { + ui.label({ text = providerLabel(provider, index), fontSize = 15, fontWeight = "semibold", color = "on_surface", maxLines = 1 }), + ui.label({ text = source, fontSize = 11, color = "on_surface_variant", maxLines = 1 }), + }), + }), + ui.label({ text = updatedAge(provider), fontSize = 11, color = "on_surface_variant" }), + }) + + children[#children + 1] = ui.separator({ spacing = 2, color = "outline", opacity = 0.18 }) + + local issue = providerError(provider) + if issue ~= "" then + children[#children + 1] = ui.row({ fill = "error/0.10", radius = 9, padding = 10, align = "center", gap = 8 }, { + ui.glyph({ name = "alert-circle", size = 14, color = "error" }), + ui.label({ text = issue, fontSize = 12, color = "error", maxLines = 2 }), + }) + end + + if #windows == 0 then + children[#children + 1] = ui.row({ fill = "on_surface/0.05", radius = 9, padding = 10, align = "center", gap = 8 }, { + ui.glyph({ name = "info-circle", size = 14, color = "on_surface_variant" }), + ui.label({ text = "No active usage window reported", fontSize = 12, color = "on_surface_variant" }), + }) + else + for _, item in ipairs(windows) do children[#children + 1] = windowRow(item) end + end + + local pace = paceFor(provider) + if pace ~= nil and pace.summary ~= nil then + local paceAccent = paceColor(pace) + children[#children + 1] = ui.row({ fill = paceAccent .. "/0.10", radius = 8, paddingH = 9, paddingV = 6, align = "center", gap = 7 }, { + ui.glyph({ name = "activity", size = 13, color = paceAccent }), + ui.label({ text = tostring(pace.summary), fontSize = 11, color = paceAccent, maxLines = 2 }), + }) + end + + local credits = creditsFor(provider) + if credits ~= nil and credits.remaining ~= nil then + children[#children + 1] = ui.row({ align = "center", justify = "space_between" }, { + ui.row({ align = "center", gap = 7 }, { + ui.glyph({ name = "coins", size = 14, color = "on_surface_variant" }), + ui.label({ text = "Credits", fontSize = 12, color = "on_surface_variant" }), + }), + ui.label({ text = tostring(credits.remaining) .. " available", fontSize = 12, color = "on_surface" }), + }) + end + + local status = provider.status + if type(status) == "table" and status.description ~= nil and tostring(status.indicator or "none") ~= "none" then + children[#children + 1] = ui.row({ fill = "on_surface/0.05", radius = 8, padding = 8, align = "center", gap = 7 }, { + ui.glyph({ name = "info-circle", size = 13, color = "on_surface_variant" }), + ui.label({ text = tostring(status.description), fontSize = 11, color = "on_surface_variant", maxLines = 2 }), + }) + end + + if provider.stale == true then + children[#children + 1] = ui.row({ fill = "tertiary/0.10", radius = 8, padding = 8, align = "center", gap = 7 }, { + ui.glyph({ name = "clock", size = 13, color = "tertiary" }), + ui.label({ text = "Showing cached provider data", fontSize = 11, color = "tertiary", maxLines = 2 }), + }) + end + + return ui.column({ key = "provider-card-" .. tostring(index), fill = "surface_variant/0.58", radius = 14, padding = 11, gap = 8 }, children) +end + +local function panelStatus() + if errorMsg ~= "" then + return #providers > 0 and "STALE" or "OFFLINE", "alert-circle", "error" + end + for _, provider in ipairs(providers) do + if provider.stale == true then return "STALE", "clock", "tertiary" end + end + if #providers == 0 then return "WAITING", "loader-2", "on_surface_variant" end + return "LIVE", "circle-filled", "primary" +end + +local function render() + if not panelOpen then return end + + local statusLabel, statusGlyph, statusColor = panelStatus() + + local header = ui.row({ align = "center", justify = "space_between" }, { + ui.row({ align = "center", gap = 10 }, { + ui.row({ align = "center", justify = "center", width = 36, height = 36, fill = "primary/0.15", radius = 11 }, { + ui.glyph({ name = "chart-donut-3", size = 19, color = "primary" }), + }), + ui.column({ gap = 1 }, { + ui.label({ text = "CodexBar Meter", fontSize = 17, fontWeight = "bold", color = "on_surface" }), + ui.label({ text = "Enabled provider limits", fontSize = 11, color = "on_surface_variant" }), + }), + }), + ui.row({ align = "center", gap = 2 }, { + ui.button({ glyph = "refresh", variant = "ghost", tooltip = "Refresh now", onClick = "onRefresh" }), + ui.button({ glyph = "x", variant = "ghost", tooltip = "Close", onClick = "onCloseClicked" }), + }), + }) + + local children = { header } + children[#children + 1] = ui.row({ align = "center", justify = "space_between", fill = statusColor .. "/0.08", radius = 8, paddingH = 9, paddingV = 6 }, { + ui.row({ align = "center", gap = 6 }, { + ui.glyph({ name = statusGlyph, size = 8, color = statusColor }), + ui.label({ text = statusLabel, fontSize = 10, fontWeight = "bold", color = statusColor }), + }), + ui.label({ text = "Updates every " .. tostring(refreshIntervalSec) .. " seconds", fontSize = 11, color = "on_surface_variant" }), + }) + children[#children + 1] = ui.separator({ spacing = 2, color = "outline", opacity = 0.20 }) + + if errorMsg ~= "" and #providers > 0 then + children[#children + 1] = ui.row({ fill = "error/0.10", radius = 8, padding = 8, align = "center", gap = 7 }, { + ui.glyph({ name = "alert-circle", size = 13, color = "error" }), + ui.label({ text = errorMsg .. " · showing last known data", fontSize = 11, color = "error", maxLines = 2 }), + }) + end + + local content = {} + if #providers == 0 then + content[#content + 1] = ui.column({ align = "center", paddingV = 40, gap = 10 }, { + ui.glyph({ name = errorMsg ~= "" and "alert-circle" or "loader-2", size = 28, color = errorMsg ~= "" and "error" or "primary" }), + ui.label({ text = errorMsg ~= "" and errorMsg or "Waiting for CodexBar…", fontSize = 13, color = errorMsg ~= "" and "error" or "on_surface_variant" }), + }) + else + for index, provider in ipairs(providers) do + content[#content + 1] = providerCard(provider, index) + end + end + + -- The root column and this scroll child both need flexGrow. This bounds + -- arbitrary provider counts instead of allowing the panel to clip. + children[#children + 1] = ui.scroll({ key = "usage-providers", flexGrow = 1, gap = 10 }, content) + panel.render(ui.column({ flexGrow = 1, padding = 14, gap = 8 }, children)) +end + +noctalia.state.watch("providers", function(value) + if type(value) == "table" then + providers = value + render() + end +end) + +noctalia.state.watch("error", function(value) + if type(value) == "string" then + errorMsg = value + render() + end +end) + +function onOpen(_context) + panelOpen = true + local existing = noctalia.state.get("providers") + if type(existing) == "table" then providers = existing end + local existingError = noctalia.state.get("error") + if type(existingError) == "string" then errorMsg = existingError end + render() +end + +function onClose() + panelOpen = false +end + +function onCloseClicked() + panel.close() +end + +function onRefresh() + noctalia.state.set("command", { action = "refresh" }) +end diff --git a/codexbar-meter/plugin.toml b/codexbar-meter/plugin.toml new file mode 100644 index 0000000..1b55e7b --- /dev/null +++ b/codexbar-meter/plugin.toml @@ -0,0 +1,69 @@ +id = "salemsayed/codexbar-meter" +name = "CodexBar Meter" +version = "1.0.0" +plugin_api = 8 +author = "salemsayed" +license = "MIT" +icon = "chart-donut-3" +description = "A native CodexBar-powered usage meter for enabled AI providers." +tags = ["bar", "panel", "ai", "indicator", "utility"] +dependencies = ["codexbar", "timeout"] + +[[setting]] +key = "codexbarPath" +type = "string" +label_key = "settings.codexbar_path.label" +description_key = "settings.codexbar_path.description" +default = "codexbar" + +[[setting]] +key = "refreshIntervalSec" +type = "int" +label_key = "settings.refresh_interval.label" +description_key = "settings.refresh_interval.description" +default = 60 +min = 30 +max = 3600 + +[[setting]] +key = "barProviderLimit" +type = "int" +label_key = "settings.bar_provider_limit.label" +description_key = "settings.bar_provider_limit.description" +default = 2 +min = 1 +max = 4 + +[[widget]] +id = "bar" +entry = "bar_widget.luau" + +[[panel]] +id = "panel-compact" +entry = "panel.luau" +width = 430 +height = 390 +placement = "attached" +position = "auto" +open_near_click = true +dismiss_on_outside_click = true + +[[panel]] +id = "panel" +entry = "panel.luau" +width = 430 +height = 560 +placement = "attached" +position = "auto" +open_near_click = true +dismiss_on_outside_click = true + +[[panel]] +id = "panel-tall" +entry = "panel.luau" +width = 430 +height = 720 +placement = "attached" +position = "auto" +open_near_click = true +dismiss_on_outside_click = true diff --git a/codexbar-meter/thumbnail.webp b/codexbar-meter/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..003b9184efc7bb0f0d85e67b7c4b8822ae259b15 GIT binary patch literal 92096 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

v_4 zy=FLnvxs?{iyqp?^o{N=}VTMqjF&}hrGe9pBw-3?P{p9v)!Jg&T1)lT+-iRvFepI&%b5$^@zN- zUOH`)^t~6dq31U^h4|gPTYYs(z~xPgKcA6XumA60+i$sDf13sEi@)vB%|Cf~p0em$ zvx=H0>)y_NBo{O5BirK(!tDRFcl0pmWIuVnpmKtcpx~B|ek-Q-U$0c&Y|e4-$HmFj zi4zvw-l;sLbHl}l)}1d;sH-tJ7{=UKEp#W#;-a6~O~p`##A&`?zA4`e4!wNibX|tc z?`7|+BU5Lcz1EXr-k9BZ)rs5Z!t&I^UzY97<#AwIVY#x@dZuI*QfQIwC=oHTi~$vT4%#q=9ovbcb(=G3;E2be0I)-6W4z~blCWR z*IkSFJv-LEYH-q7dN9lB;x=jf=x?XPb}MW5_w5ZV*<*j|CF9=2mXAx{v%eQPCI3I) zcSQo1X2-l+g&HT^8b5ovX?5xv@y_UZoYP3v1anzy>8xz4KHXFs3xwV}5Jd0(rVc^4mllpJ!ie=`V z(0j&g{dD)fTie$#F07k&_}VA7stabQkSmag8ea_rjy>*CCV88*Mo=Y&!Lu zPJg{3d(}RvKq%4eYM9ff^(vK-_S);j1J4Pa-v4kLn^&=GlIMqQvN`#FF`ikhT`RhB z)91gp*4@mpU}uy+(?zRYA8hS>*6e>4lo^Wp4$@J;&4PL zk-28!()F)dSoq#3)STVh^Xj95=fBdHUzs&~;tuTfb@ec8V=8(#VN&f2PVx2WPH*=) ze{m2w&Tw(gtFQxtH@;q*o+nAWJf*rQ=x^;5}mInhLx zz~ef}UcYAq+~kO_(0#VU%;K;7ioOK%z5MS^x!T1j+@6tb(mUW|>4PpMB>1^U=TJuil*kQXC(2_p^Blt`GEc%W4vGn5sDa zoq&_4{p;B`OG6#o4{?0WJN2GHvgB69hY*eXKe7&;s@k%0c0<>NSc)vkpo_e`;4aVzqe-A|6TJ|>YUzs?c;8VP$lI%kA&?SWzVQf$S)GtpK$z3iQcO~ zW8sesGecOH{wg~ozkgo;$DSQ4wB@|4J{WvDXZg!^`qn=W1{~F z3ed1w9x=c9%(|lM|H1-g8|&vjJ6*Q^osDi-m`b+1QnR{4%k17$e`7YAF3py+Jj`*b zQrVz1dB5_iU!qU0$1*cM*Qi@qY^Sf&7F+RuR^NG+DHfb=e71I1)E)TK1y9#Z{rA6Z z`U1)AZ2y03dHl9S{o+B{*1o><{VNYYbbGM5ny>l2kt=^!?CZK3-` ziVHq=wNzeP8zgn>L`ksAA|VNhMmCX9>o?ygI=?Uq`s%K9*>#}}x67Wj{i>&DENN1V zlRBAvGw+>;dAwU^#|M=yJDrPSh1hu4B155#q=zcjA(n6*fG%1I`}FQsQa zVjiwZDt>lS_4nDuS+PtHyo}CH;ZKw3sXj6|s$@d3+Zx+D@{iOW ziYz}j_3&?fu348|y`BFo?Y$ml?iAJ*`Rz%^3FfbE+dHklFP-A9{!CXa=#VmN>fK*e zT*51jmYSF>K5z9q;)S%%{ylY%15GTN*b`Oy?aglNpJA1=TzSsK?ECLFTr}>HI4zN+ zI4jLiGNQ3xOWvUAQMX=ROj)}4#p>IJvTJ0PwXS~j{b=C@&WV=W_|B-k3w>we`!8cD z^U}%(b!)#Iy&fRJ+jK%+c9C;a{;JZS&c)&NC$x^Psan*Yci>_0zE}h0gDyID@$D7W z>)Z4V&n#bkZuiGBIp??l!;+kXZ+A#9QGWh0Ao*;Q!kt_>`y*!<4Z_vfU%#2L=%?Xr zmj1knt12I;U(z=e%$N{pT7BwKGiTE3+B36*nB;SG_Kg?{#UbbgGVpd(mbs_OIRq_5le z+NXaTgV`SVHRLS+@i?GZ;CZRWm$+q7%TB9?F|*%1-D9udb#6Y-X8YaDJ8wZ3>-p+ONat-G=5F23}Kc zeoqcBTBpqzMLoY#RXF9FUn+m4?zb&& zf0fJ6+RCi|xHD>Xj*DlV`S(a)m%u0ip{bl7=Uk9i=UM5tWrk@2@0X{C-SkCQ%oAXk zzI#R}%a+QoA`cnqtxfnR z`boOhh#5Ub0^Qx$CBF%L0T}XhiBxu!vZ(rOf<7MCH7>O(yepwD@w( zP~Ll5v+36h$N1)|wJhsyzgMn~_Ay@lqsw)s!yNT|-t7hzpKs0ckec~S(PDAB-pryk z8#oRe^x_v3NejcrB_|_&px!>ze9M(KiEfQ+Fz~Fg1bz0AvuMyvke{?fev42_>U%n1;`D&p%T4Y%t@}<{ znGSL%{(l^?VP1Upuf2W3N(ZXT7Qer|bVJ)qS1FyoKiVhsSgt1;c!{?s@gJHNcUZ2? zX!gFHpHF{`ySL;!kI}WFX-QQw#%lTyA(pffK`QQI)z4^^`C8Q)|@dTc;r>=)B zv($gI?A@Eg2@R{GZd5lcEqy!p0Q*9H^Q7VvkBj?uopO+r4C-flVS1pz;-0|O1$v6l z3+#5yyw&wZZW3SP8BLW`^}PkI%6G1k`&h+iOZ}eVyriRh%>6N0vaLbKxnk)oy|NrGDm%IEbulYgqSWfAb-kW0Rc3A~Nch z3F~bCZBXCRQBc|zlo2VZ_0(s}#rXkej(dyGkAK|WbTT8VgDWOVM@H`;_fGeX|7M@@w>>LFemOWe_x3*Ni>-ylcq*F+EjWb8=r3?2X?!MT&u*hcXN#uXtv`zEt&ex_5_`k)?7T?) zj71*zRxkW(Ju$)J>6w%_wkvc_FG)G`C0g86;lFfu{k(jDrNYsCC$5x&#iu-H|F<=H zcv@a;PH(XDM3d%o3m;TZvJ}dyT6VRZJ4a(;WmeRj1}^q1yKhvd3;Rd$3D0BiP$^dF z+wx4lNYp)n$-8%BQ{jM|J;KtI+WT_pYe&C-8&_4GJhsc;Thz5|Rn8iV-A&j!p)+FQimb?eD(Ok4@4g;qn0eQ12~((3X2=xL?@P~iH||Wf z%2d1}pOw1hjltZFpV=oIohv>=YVNb?$L`MZ)4!{|z$YyGl9506+BrR@J05P%>{8v{ z`0wMxy|sr=O@DKY->K`vG&`}nLQr`7P{3NXguvV z;%S!E@L*%DRotqUC9#kr{5y~A?*so^h^ z@HlSiS+&iZRxO%3aV7tRh1aG|Hl8#6gM(;E4et5+OySs2}u!oRZcW8$Ihs<&&*`F1wWd+6BDeyfpT3bSGCrTdpd zbJQ}-{G{LhS*H5xp%+KK^{$VT=QHoWR#>3Cc13)-Tk(#b4fhr5zFnEQ{YYEor$2if zg=I=+`)$vX58eDYp+1E@dezgkMc4fp{sg3+nXx+Xz}|oltq%_G+a$7P+caT$F4yRl z!n+q7*~A$=Sz=G^Tmd%Q=)xxB2#yksJROEzeWEF*(-x}vN%L)eax#En@fL;ED;G7s z-X&S_k)tS6h12R3Cx5kx-L2)a-zLP|J(qBb^Q)1G-Y%2k{$t%;hvxSv)_?!By7a2Od+D^o zPPR<1pIJe(y(|MK>i*7+w38G*-=UY0&ALl{|J;nHQAN`ok~x)QREuT%4teRVEO@r= zZ28`@%Fnx%d>?W1|8?5zCi?M}{j-YeJSJ`$XSSK|W9ho!*?PsU@nr3~w_ENXkqe%* znS(p(#T!@OsyNG)RflSSvoEM=tl{CE*Eaoutgl=7D#srxqDvH?=UrXN`z7o{8!5js!&?0U=BXQuE)@3uPVlz%+u=zUX-PqQagrcVA`y1r=MpKZa5 z+FsqB_$h5QPrZ?@K{J0&<>~8zuKT}M*IK{je9t(wg)KE9 z7jyY-ca9ux!+_tqk33$!a=no9-{e7h3+r#u$GcP{jtLyyw^0mxLGp7kIso&b)z2)^PTM73?{WE5MJhk(E0FU7GgS(A4 zUGw~2{P?HD(m%`ZA7@&$v(@C=8Oi!@9Skd!|CeU$77mZ{{#Y#;QYn9SiN?d*w@l_g z3;ZV38uByfFyrG1`zKtAWxjF0V37S?;CgGdruK&lj?)emjrcdfD z*Q{4eI&U0X^Uyhc>F=v28|E@GIr|>u+xFQ=XUV|_YbM;Yd0OD?>~g8>)gtLNe~!q# zXj>-6|0dJ==FWU~pWhvCPu$zIL;vn$x#aa5BZB56ty}lRa_L9eN{8R?4DT9i&2INh z$X_05kna8EOdgk8pjhF{^(V?_N(=>%An%!v4Q`cr6|?!=l4&lY)0ygJ?6e@Xjpgxep1ZH4p8 zPD?R;-&Wz)-liXT@0D@zvJ3kdcdb5T;a-w-X^T`wyYN&_?KK@fsU9<5Z2QN%;_|-& z#v_I0di{GkHWV68UfN%=`H)vsK(ZGLE5Bpa(|=6)>)m65RsWi0q)ghDrzC#G!DXJ_ zgof;u&D(le>*mDIepy{xuYVxR^Hi3~;lq!kJ~H*c5Mi`mzFB=v^sLijuUYCZNM&{~ z2C;QE|9fS4w@UlavwJZfMH4yp`OJUa`E6b5j@YY=wXY0cPgY;!uCRH}VHc6-VdvEj z|FpRHuP@QOY`086YuuDYTf6@_Uc4?mb-Cmmn-%F-dfg;h|2`4f?~|B+=1;{8=gG%@ zeR}+{P2T3E!+qt73zJJ1o;shbINfVO+b>y`+&q*2$0mu`$^Nw$c&o;7gx(blPjH8#PHw@A99_ zm>p1;ebn~mnSd+)9v2P0pEvryFZBttzAhiN?{~`8iFcY@CDku4_l;NUKX=e5$MkB+ z=>>Tnn=UzCa+k0@`lwt_HLrILlLzZ-x&IyRt=H9Sr1$x_tvk0te0_JeoR<6UUsZFo zBYdkF+P<8)X(c8ek#VbFnn3A~*4#MfE|sl8W)@{9mz-p`xVK#Pjzc!jqV+c!+8;bl zc;nIL5*DcFnfgA%-q2cI`QbmAPru&34$nL!aI#U)O!Sq*{A`zpJobMo_xJo`s9+zO_iTE@j5+h4R)wcqOJzA3)Lz~RW0U)ib`CW`x23K_@W zT>MYH z>g~H+v}cK`hCjKIaN@0JkHndzL!W!km3)j7<2-Hd6mC>6QBcSAFGczQ_q&MQT#MQc zhpzkZhjTS&lTnOv`|NbjHYJYjnLj7In0C*sVc*QZFP}GE@3-(-G;i0;d2>BftZrRZ z|C-Fmd~xsTvNJo*3s_w55PW1Hp0-BAX3=5s#80f^^@}_BdCIbFz8v+ETji{?d|naX zf{Kpa$8=s*zkZ+iICvXfUj%rZ|tcdL4y=7uSc z&UW&4_Aj5deDC#jQ6(oFOWn2n;<{>fvmZXKUAO$8TkCCeuG!4XKmLgKs}_>FH?Q&P zC#~a0Bs<@f9lZHyXT_6x&HII+J_{f1?~*<37?8siwlM8`iTGWu@6Y~iOXMq`$i=xX z#2_;FddisxKN_|!VH9-zz?Yn`uShV@LU7d))@|2T2z<_AU2|f;*nOF@(z0h<*Jnq0 z{E4#TF_LwT@np#>`LpByl82L**-w^l^!U&IWB0p5&xKB(Is3GK)e~doXGW8`*fVCWlIZuF_`qYI>>0nX)&)%8r#!Bzi`&_l@oIJ- zkJ-b_9narnN7>EwWn+FO`fKJ-Y2OE0UGMcP4opzu-NInUaKd}TTBT#VPA@braQ}0c z(cR+Rl*zH(g33L4Yd%M5Grufr`k3*(*SJ<;<@3kOz0OTp>Ycvs+smIqyCyDX3p}&v zX0cXNYgwG4&q*GhJDZL@V=CEi)GD|*_hFA$YVNYxyY+7uX;lcs#8=nP zW-u=Eda(0^=DWjYrVF2aSP-SZmQlgUJAd=Poh^1jwo`W6&(E@-{3gX(b9s&55x+L= z6rGnm&6mqNk0-CG_;bwN#-rm?gIdlisiWyRX)Vzk?k8OKiv96u`5o1br+!pE?hk%H z)l6&NMNjYNlNKh-iwvl#VroA+qwtINZ<~r$x9a7#E?&EHP4Ucl2L+4$j+ws}>?HOCZ7p4J z{wRZ|&GqB=o?N`WL+bLjy?3<=V%HV;R+IB>mrOhsmciTc@u0+$ffy_Q-PahHJ{LbFTk>bLQjr z!xCGTJ`evJx@W?n-6e^xe)n(uK3&bQ(x>6zgUFwYZq1&RZ0KF*Y#@8Kw_^Rx2i2i( zZs*LkjMwFtoSc-Au%7$v`h_{ickam!V$yigvw|&B@mHp&@%%>@1+CX{X9xJt=x$JX z>D%y}J@wa_sjpW3P?cE+L=z^zK7@J-3_tEJXWS248OsQR!nbzym&!OjE8Mk%Y0o-s?WP%yv8V!?XSRru5CBTJH( ze5^Yl`-v%H>hv9#vbA0B#i|=IFWbmV3wj z^Qwp5?C#CmzB%p8rvoQCd*$=qgxI@&cfPatZ~;$+$swzCi{ullzX+PI(^;Pw$r`k9 zimBeA>j!6TsOC=%kI;N6^J9w0Q!dZ4GrxmN8$L~W$9d!6{zhAi)%^w9-ZlT@r1l*D zC~fiPmbZJvu97SNyuNn?}>)xhUWgQFW*tKHcGXHRP{r|IsE0Qg(59vxQ z{yy7~$NR%NW2f0I>m-tk{bX``R&hx2@4bC}($C0BvxF(R`;oMJRa@cuy(%+THh<+Vs@ydB^%i-B zgMXKP{rsUo=ew_NvTVlm`kVc{Y_FymH_4mFPE>xqWKJpD{hLv0qTCnuN$N1&&72q@ z6M9`%{lcZ~&+fiYIJx13%u=i8uENaBtxqdis`uoyf5=Ynny~r$Ymex;Z;Y((dVc3N zE&aK(qsb=k)bgDnv)-$^793gdxi2GvWj{-1GQ*DfM_WBBH&1cuQ!Whct$C;_cJI#l zuM1|UT9wOcmQ3B5Wb|Mm=k)b+8jXdT^5$PC`5o=A^zQ=Kp@mvUtkY|}Hn%z$F4((8 z>C{p-Cb_klLdBa>d)1y;X=@eauRr7V)3ER_r)OAjd-Ykj_5ol}#p@LA4AA^OcOmM5`4w&ne@eYDo+wT@x5 z(YbvGmp@q-kgs)O-~S%h)mJ_o_ITydd$yVXY{TucO`6%$(*ykf795Vx{ZQ&?-qQIs zrs`6L^65Jd*9Nz*TTttNa?{lN3qIUV{MPvN`>oTS3Q6x=%~!H3eT;g_{QR)-gr$oo z9uYamWPWf>lknd1JD=2^aH!iPO$$nT@_ioP z>;=WIypOy{b58hdo7{G0fzeC*_*l1#_s?@*iE#bct=qA_zVL?5@&=yt{xUWO<@Dz# zL|Z1z+u&msYT+%dAgcFrOTyv(Z>Bq#*yt?fkP-6@xNxUy(SzKROdflRj^$)NbI&}m zV?n=2q{@<{oqAjHStf9b%P)F;RQrPJ>%?ZW7yRj=pG&FzkGUbgP;5zcjAck8jA=nIHByQe*- z+tRkE%*`nAV4GIIapd|R5f7#N8lMK|PuzSX>&cm<&zD?toaSwr=JKsvr}*$iXIX(0 zDqH@U@`YUD?v{?o{9@8@!j=2~>wcfwG|m9IzRxSuV!5LC?l!m)a&H+MOU)BO zDmHpG&di$7Ui$XIxFh>Fh_nWXWZ*++THhvqE~yM7y#+O)?+ zA3QyUZB6h}f0M6{??aTby#Kv$H#y08Q={MC;HRu0ALpuAg~Y%660S?%Z#bp6deh;m z>n6Q7>$bTCJwNZ7f2J-sN`9K+!@LbsW@cn}Z9Sa7F7EErjVW6VAN&0}^6+Zjk2$A! zaw^-UUsu>H=Q2JO>?kXA<7n|?i)vM@@uU+FqB4=&pzkvAd`qypQr>^Mm z^PcX#Sm5z%mm~{q`~8pi89Ln%GdcLK@?!X@*tX{^8*0m>9@jgscluv;TG`szcJtq} zku%l`noY3cjjP?W_*X7x{DIsjdFu?y8SmcU0R zgo)r0r$81TZq}fKIenAf^X~jvwJ%7{;MW5m|Ei#j*_;a*D|l83uQUt~5*GUsqIPoC z>cHsTpEtVB-2apP_mfHM-R~P+ckbHNuq0Db>~(Zf+w!y@v;B3|N*ZS`oTM@{gK6&5 zUzLLHJoiqg1;21P=9gkJ=dG~ezG;pg$q%RKCQR2@pltU~rK)*x>rcJ86PnuOFCO=N z8=K!|*P8OJ*Dh6evGx~{qmlhG3YPJX(+-6%ro}t zhcE0iu2`idou4DOAXHQ*a_(kEO)cd~{)?MJ{GM=I$Y1^&cz7ORPyP7o^ zZP>*xac+%g6lz`fYD!I0^-lHxe(kYrmOIMAY&R zh8OKZEd||+om=h)Oz??1r>@f;_|r%J-?Ec}v+noq&EDbs%;=kZj^g2E=I1+@|1E!Z z_hMwP^QV7RJ~qqV3Cn3$+wbD+=K5r3S#N$fFG7vs%VCdCaYoz4Gc%^OPI2RrIAy?f zPr3HQ8orMqUNKMX=4A4930cPU&bSiP^`ibGtAnq%QCePK-=sXHRW^aDLeICHwdeh4 zTeft;+2h`PrUiA8@=a5}+!Ws8!0<9pRGPVb*W!oY!?ZK*@1J;*L(s4z%e(cW&FPhT zmfzPICbM)sZ29v2wU>AJou$`e{$34vbDl%prS{XL7ko$CvzVJi_iY0wIlIQ|sK-|S?p@hfTe{!o_?Gg~efF#+wsj9zui9q$HbKwLuj8%O7en9Q>OUrLv;X!YyWC-4{XtHFz4LiPZjc%;THSY%J?zd5gUsacT-&Ff-@MPKaN?YxP zpE{1@&y&5k&WS9xMyF!SGCS`MQAitcR<)KRfK_UGq*w*nxlJwhPy9?0&j=@uORNXP;8uv&N6^eOpFUp%2e(@&Eb6V zZO7797EdO#$6R$Srwhw26e(T|*crP@(_*I0B(I(GZii$D9{q6n*g?lTnhTXQ^Sa%C zRlooIp5@Q&+Cxo;{u$X%xwX1Sk->m9GyK7mpigzLEKLvm2}-#$WoKVp?s6%sxd*M; zR!r71I~ks#?!1DleeSm-GMnpe2yN8i)i!pWwC=*?P41=_46T3mP4j=ND*rRliKRnw z>nV;S5jH7(3c<}k5Bc()$)C4}f9sPvMU_t#E3-bwZSmUqI&_xPijRMP7hh3OKXj(^ zjmY=A=Fjh4@>FtWf47F$>FmO9bI$iWOi0qM*7rG^dsH|k{`>bog{!$<+Wh_LJ?lqX z^TNZb&StC=6j!#NoAM`CMRH{n_i@>P+UYyDW}Ln?KfR0Nk7&q*tLIV|XgS&ood0vs z@!|BR|9EDt60sW)E%8T000bmK1RIupAB&4-Ar7 zJ7Y@4dD)G!EXGTYe{^a!y?a3ANRB4kivM~=2F6O8nDX|{waNd-KK0(jbxV)!*t9YI zPUPW$5UD-y&2|SA^eno>xi9_$d$OFdgP)uk`>$BzrnP)_-wx!m%!>LZ`|@XSIop#+ z*R6jW)-Q0l`L*=TWu8qO+x>KwM@qdtXdAz7=i?_|S)QJWm0PQC9S{^%-XP_1Q8MfK z{`brL7Oe8lI+4^hVWq)GyZc)8>)w}FvF#Sl7FBRt7rH`e#rLN_wLkA%t@rtHsH^8m z?{#&o&x(zlf|*u|?z<{vlo0OgyDcp3L{%G(o!Mt6 zF3oh0y1wl01*ao1o7>k+aJcxz;8pUjgUe>=%{q5Y!To4ql9TR}Nd^DjFVxs%yD#Io z*w1MqPh+1<(Ki0iZ@YHW4AVbXtBh5yCCZsB-L_O)aoy)FNt^zEu2~dwX4h>?j-Mxw zR9`qW)yd}Ywey0B6+Ctk2mVfJmt|H|o>jRqz~)|3qifKO35gdjaOm(~TKwD2P37Nz zhUgjUr_~h?sl>(Hi3niVtI{$3k}x&n(!tdStyK1JFMIpWY}TRqWoA}OCAE*6o_jZK z&CP5VmelgM&R@31ds;NEOn8!}d{T0PmuS(gId(_=l*0e*=$KT$B$c~}k>l=S?$cI@ zN&?6IY~Id`dKUS_HI`lfK$cRf0*lVoD?uEVrp68nCwpZuw;$o0lG3v)=e|b%lGED` z{IF!y79z@e_QTKU*8wUl4E~~h<_;l zQ?++S*%Y0)RQqII=ZvnxoB4_IYNrd&&+!Y~vNLqn#XnE_XB>#U7hlus{WSi|`&u_0 zovVxV`5tMiXKhfJenUw8f7h1GeaQyw!96+m-e+j-OsG|OYV-HT`^?hQX@8k6iLG6~ zbLN$%gAF`;SDv+-a;Eo?a;*^OlG_$9gXh^<%$##Ovg+^O_2yHQjh0+tboeuY;pS13 zrN#3s7yosB@^|NqXF0mo`;{klS&E%7E?t#!obBz=-7PCE@|Lcdr8i~i(qmito=uA{ zc4~?_IG0oS+3R?;dmPv`fKpE`<_>T@sLm?z#AZC`I=dwh4{m5Av!Q@&WIz4^Q%#N9qBH9?~{ zv|KlWb^fU$=NX>I1OM-uX?y3ETcEn9fp@4#Ro6zo{~iA(dW)@mvcl!4a>?>}9ru^Z zHSaM|(wVjQ>{82B0+a0=zinCg<&%kOz{i`KeY{*^X&tA$mHZEixwmPoh)&(!Eq#Bp z*>P2tPe-jICzM7^p4H&0=&(GbO)_~lm&4TO?t6@nO*|F$o#V6S(wV9k1le{9n3dYU zT{TpvzZ zbi9>SxAQdlwRhVoX-Dg>AfcmkJ2%&ce$d>J7GIWhlV{beKZ}!|o$!w-$jv)t+qy{p zamV5Fdn$6dd+ODrUTxX4TKvkzKUIy>Y>lp*a@4kBFI%0qqvnUuUA@55=iNGYEm$U} zw~_r}_te`{r%!mAcICaG>sg7*(+)&iz1!%`FZ=d_Ye0-Z@zWJYqC!~2ZzeClY4zyv z58u?jU0uxXJa4u2pQ`g`MY-E;zh=JizTS@hxASZo94m_VUt6>Nh41IP$A0T;dG?4| z)h^cd%Xn1jv2reZvhr+MvC==THcN7KEbAY5?9MSe!S!p`E^f9yIk^vxKVjz{$;6?6aH=#u%5JPVR%EnxuCoJs;;MX zt2NeKSC`3PxaE0$qR~D3pehz+4xf;s6(t%=6;zH1FPW{Sc;{*1n|xzN4+o9p5DlKo zUh*=fdv9kHGR}N6Lqthrk$ytV<~Qr^9G$N9ee%cG{YP!H*PNTVO1tXLgJ}n<`jq~f zshIqq#`EUbB(s!9ram9v+)>C}d{pzcQFkAI?5;TtTFT2D{>!{GU|CY#7VW?;d~o5e z)u!$|kI!y()68fs6c_y3x;m@l_s6oM0zCH=X5UcSc(+SQ?)l2>I@54Fwdw@Ez02o5 z-r`iW>Ci6g$)6K5(k^WfV(C-awc^J-_nfAdHMwO@OP@G38~qaYc**kaArI4~(;JUS z_nr(gZ-#$U!W~1Qq+J)T z_BAbZ`FWpZ_WwFFoy}4-F&?Nx%>2bJ{60V9TyU`&tA`w$8Ixn7G~EKdrugIz!pCfVRm+>MMmWZdelazRyM? zd6T|~?!2YLN z3OfgV*l~vWQC8gqqs-SkFRZrxm8oYDJ!h_kWgKhJj_9-Qf99ySfBbV+fWP)vzeJ8~ zl=u3kwrcO)rg66V5wUEJnzx=$imgr3LB+j6V!-yKb4e z;nZHEmS3lM!<0{Nu{yjhWUlM(cXO8-p66XVh$h zW;^NBhaZlH-mr6S84tm9|BOm#e`=C(9)$)nuE zR^pZQx4vsN)y~r@V=?WP-*!%RS?G!vmH%_sCfvNWK;p}VSwUwf&b)reI5GIFLQq7| zHMi(BPgg(HWO3^WW)cWJrgd(mx^J?`YZ*}i{tXpx99HdJ%fmLI+ijWHv`zg>_dU?~ zrrNjW{Qlnp5V36y<=Ukw&F3B%tQv|)}2>`Meh1v zldK3|X3a6ZqrLd9pW4<8lX;6HdnZ)xn;F0?Ab9I<+7`)l z^N&ux*t`kFBB@!zcOO{n-L&||^Njo_)q*_7*T1re$hq?W*!n4Zma=>)nV2q?)>oRt zsQ5Da9sLW2k z_v3sDr`tpOzG~HpJp~K(ZoSCa*xD1QZt(W(!y>zxbE9kY4jO99>@+>T#)Z*pa?q_g znj9O1H|TYmXY2}FdDvyuwYCMtp<$=z%+Fgo=M3xQQ0wl%yBl=Gj2NG!9QnIa#9dj% z+I0B~u7ex0zRsK1vc)6EKF8~3k;l(Tw>gar?642W3SB&x6s&QT>c9M4YC#&?`eI1wRgv2%eXvo&Wu;Q&M!7IpPeRZ zVyw5LaKb9j>gPU}Urgb0u;osjp%~s?5Nh%%KwCsCOr@@LOE=Hr8@rARUs}?l^!%ic z@6pHU*V;~Z*GK!NHx|S^&^B*>`_r%ETR_M0%*$^+9q%kv{G+R`?_LmWsrLWO@`kVb zjg|lC*S=fvJ5^3H%z)?H3WbXbKaG99Zc9qFkgUG4q&#<5z2Kfdjs;;hhyRK_UmLya z=u^+GJwXiTcljUUHCnoVel~kyLPTt5;@9)84d3(^?ld@>l&$-H+p!CWdTvLyB*)vw z8s-<=54Nw+x)$u`^5pqpP0jQ92bX)=@OHGO9pUER%QU^_(d(e=hX%EtbE}s0jiA(DE9{pD*PH!&1&894P*{-+x*uB)3yziyj+$O|HKDpxeFZ7|2 zVpm!Hk^H4QZp9g0R8qKXT~n0wZpBqjG24p6UdzA7x|wl_y7;oa^qKDcW%~qwIPo+vO3P^G=;p+|~P%)#Triy9v({bviyyUgxf-=+$wRBjM4< zHPg?8+D|o(n|au*Y(lN_i^tn!1Ppe5y0otDXymLN0gd}h?ag~8ewHld*4XS9x@*$Y zwQWnbC_Q8N`ZzPGQLO*=j{8YxnmRife()UUV@_vf*lMzek#qO!#Uf0Zp8vjH(|NY3 zoPPq7irrMrfSId{_J{j-2|j&x>)?SYVXa9U9yy=7{jXrpcSflfpKoU!{&eKj2KBRT zui8GHUA92*q+ik(gHqSyMKgnbtlQ1IH-0A5M(f@R+po6{%Ez6QKRw63^Ir&Wq-5~x zPOZ>`)71H16qYZ%CbRt2%;3xHqK>=EDtMz?AG~cjVyX1(`-vAT#kWM1UA!3ST=7Pr z%C}Ro_|~~^`#uVAnmwJmu0}E_@W2VPi}hv`ng5zZCWqzCeN)!h6H#ZsD~Q3y^_fOu zh3n%jU0+)im1jdhML`}_U>W!{G6R}vQrENgl3!ih`u zi%C=My+kRePZx8-x|pZ9doS4-Qh3>~g>?@f|MA_~7dI)KNoU%W{`_h@t0Ei6q!(!d zPrENT8FGsqluCOsQ{|`1pC#V;CX<$N*qr7Knq1ob(&ogyvfz+O#mQptPu*K_YpKlS z#F{65?UQO5H_l(LeyqELQ((i(cH;u3&rg|j4ozvYmdz40)5>Me|2kpkx#lN_FDIU} zFqoO&Jt=a3wqL$K+vatOvUgA4d|LhY#yKA?H&zYf@3q3GTrVg0O%ywP#K6~9jA z1VqRlel#Um$yg=l{MV%t>jT?9ZvQFJe8X9$VwGuqboWtlpF`)ie|h`cZ^^p@C;ydA z{eF4Y<@>9*-qGS{`nqLzp-7XJagCpJ`K2{e|EMY+W51?8Ka;1mC#))oJ^3r+5}g|y zb^Z%aZ&r104iKE8GxOsch2_yM?>)G-B)??WU3kDc@FU~bnbxZ3qS*e-NOwvXD~rpL z51T9>v)R7*{hzZ%v!0~HZIh{*!_PfS=xE~Vd8<1=gXhW9aqhqFEDx0 zG-JR1W5-2qJ>7hn@$sAHABQ=YONQ9;-C5Kaq3rtXuD*rjuYhRVJ7$Nc^zY4oy>`mi z*n_6GFRuFLXYgm2-jm+Fi9c-3o)+BA{8|5Mk?wT4()VAJ6{N5H2vgYm_EdrsPfPwT zjhSsr?*FZBscyddw(#!Zv}-x4vD?npa|#}qAV2lASV4!q;Or*8(;3{$%1U|W*hVD& z{ygi*DMs1uf+r#ebhkTvy=f-gCHBmD`X!f&e9g3VPS>xb^4wT27};@U^3uHbC4rIA zX&d(K`xfv;K6B0b3!$ahU+orVPC&2pJ|@Jw|wJ{`N|Jod~wwKU=@|3d-f5p*Ya1n$Aitv z^ZIz^L?8I1`hrLH`q}BO^)3x-qF=og{mg8?YJp6k&Fz4%@> z+kBzA)8ALi6&uR0JUE9jdRBM1b{+d$js3?1mLEU)JxTghReH{{@-8RE}tG}^fo;|&~7eyW=5c7plX-A(HAUuz1__=P!SrT|Ym3 zQLk<2!{{5oLw)xw;N98f#9sBIQYn zKc>>ro0D%APRKp#z!v^meRgaT%gQ9Kkhq5XySv_Q{v%?jP$MxZzw6Kbb6Yf4xvHOZ z*`Ob5%O`xkv{v(|_!|-Pj+9f2E^9t)kN%ZxbJ{UV;kc8;Wu|98?o9soZ=*)rD@-K4Y`bcOinIu z+RoFL&U%DrpZvc0A4?34{+(;xcv)Lz`pjP;fvR2WR$g6sU4#2t#-vl4Ti%^~akcSJn&%#um&Wo(S3CM;{ z4F0iOepuG4Rr zBp^O>zfX!s&)v)a*4-8LI(|XD)=x6tPA`$qo|$p3;MMm%MhkrcixTW*o(X3}?(TBo zSTlRa<7Q38ziM0NJ?>#=>&(t5RA@T3|v4wk*$zkLBnT{Jb)E~HTSEWZ~!m_T# z&boJgZOO`Rc(pz1MY6$$Pc;+8TDaK!Wt4UtVNZ0N{^Q@F%H<6+%08ZY?DgZ))f@TK z?wy!yu2C`P)~UD0zVFHXyz51|y`A-XpB=}pD=)skTp{`;gU#ao2i#}fER)uO6msjlG0jfna7RYZ$(i48 zrY%UgDtd2AV)c~odIo;6(xS@)&=xJRvBOa;5C-vyE2RTmoV52Z=| z{+4Msp_427E9Z4~iBoGeR67p(X*6dA<(-!b+*tPKpN(>g?Fv=FBKz7DW$;N& zbHDV2ZEt|h-CD1UOBy1dY86-HFdSIQ$hUizM3@T8)|qRzpKadddvj{!=e06&(mlV- z?qvM_xZngoSLv%=36mLT3Vf?f=Q5wSu5VMZ&m+c77W)oXrsuj;9^!7DyY&2wCnli^ zr6#t;J7gxE2-)3J%_Zk1@-b-2+`6>yyKNSpHry z_q+CeVcoe~CqzB*vRasMU&Z;^jSZ^}1XpbOx-iHp*(CT;irpid<~P0tI)QH8|fIoI9rcf6}vl5D|F_7dkl(R~=j-u$IVI^Sax-{se@lPA%%{tuz+fAmzEq*9 zVM|o*f3f<$*$UCENv6WzKW~uovaUI4`E?J6w*EVzRL?~^nJhMYqM~2>|KpKJNqW`8 zK1tW%biysa7w`6Fr+LWz|DgKLEpXQ}tGg}hnlD~E{Nqqh^O5a|N2mYdUH{3j@++gm zHjkFYk9U5$k?`|rzIzA%_B@9@J=ur=XUD;lN$`n?*8|$T(u)x=kHF% z^GVVMp2t>Pke%O}Xrj0>wB@$({L5)uT{x9q{CO#v*|J4c`e~z)S5Hp*eM8Qpdg2?+ z4qM8d=(X1ue)#<5sSJw)d~GkSoGwPsxU8}D%k}LH)4GnIQV!|bUMv}NIP%KT8Ow}V zoBu_}FL)==x#G8CT7IMGvb^NvDgMsOWOT8s9Y+1Fyz@Z2p`Q zV$GnKSMqto`RJn7b7nzLRwx*I*UE37Y%03j$r1| zUTXopxT)_dk}vN$EMOXO@wUOjt3Rf(w_Wgk${EGK>~>`5+Z(@JrB>$K{=HN2UASXs z)9&wgxHiYVtf@H1?4ox=@yU4+JN3oQ9}LTPO^mJU)4#N-`A%cC_R$Rwx6Q0#|JoHK zl@rTzZ|+{^AZdn_?MEE?-zA@WH|?i6OMTv*m3-GdZJh&Er&-T+tJiQxZZv}YbGRPB(&*%e~#jUkDg*jLub!^GV|%u1&7T9+a=lOA30=Pd2``1 zNwsI8jbB_Ogt=YwPOxQ)oZYdbXW}(G?vQToh)i3J?Rm{{y8Nl1&(2hOzOHGu@cG{3 z?@jvO{SbY9_=5cQ;-;jXzk5sUAuXZIheWLSRh;`yn?jjo3c z=jTilZf#^-z!=_R$k%mxt@+}RLudc|;OcAs$#-;*kN=9cTMMkqv>r=8?o>09{J7-w z3dN7&I(7^4%u_WI^h^w|t=Q$V=~cu3`|TGiPURT2|2oDYdeKGw@2(PtymI@0Z>}(3 zTktcHM?G2cb|7=o1z%Cw!u^b=S?nSX>2S(iY;IWN^`b@e{(?6PAMR8CuGZjm#r{f+ zclgGuNj8rcM%`PQB)GBm*(G-Wzk9sr9LSH+StcMnx4-e0v`Fxr0vX59wVZMX?#(Sd zYI5YyVfUV`lNU-Sxd&9fN{gAg>*4#F^FIqXm^Um^uoAyAZ`!@LJ=0fj`X!S3=#B7| zJ_U&t`9HcYZctu*Oy~OFL-MR%Gxz)L2>Vz(2=wiOeg z>!t38E-PDE`$n4iCey?VDcsi21>AE_{NdzSx%b-i>hCiw`Gs5+WWMw+m#MgTU{Qvp zTdH`T#?$s|&p#cUahk7fUyQPdsNUhXM!ABHzOk{QA}!pDy|}N#xFT zO~rE=>o_Nc_6P0Rxxq!oVy2X>SHZ8G(^)lhD%rE9_Psxx`~Rx((Z-dlZ~Rc$xBq;U z(6VS2Y4L_DF|%~6rDlAe@vdprA>FcD|C93XdGy`BZn97G$d89dY+|;CFnU=XU-)K$ z_@2oU&vH!9m^{>5+wx^AOZLY35}!@nxOcq@3%J_7vi1MdR7Im-EH-OHq;Crn@a;(S4F{A%%| zELmTlmG&P>KP!Lu*^cG=o=p6;>2cSFrfW{7c6!{mBYW;&elK)|Uuip=68pKmCsR`= zb~vwByt1q=>-nlLc}p}j92@7mJ8#Zs5KLz|r>@Vuy4>vN&$d2`i~L26E>F&|RyQo? zU;X$chkvBPS(*7SeUdD%-PC;aW9958Z`BeDO0*X)xjV)G{|eoPx-(gUtM7f>k{vx= zxp8Jia^RO)LJV7&#RHaZRe2bG%2cj{bprG6C%($R9(FR8pK~wz!gJ!9;d#AnWlKew zikHmL;I>mT6!`Z@b8GRZYFD}YH_o3v6vQvW*w41&xM;}=>l0ZE^E>`6L zqSKr;vo)raMZqfmwbI9$_2RE2PBJ9gI>j#3Gk6~?_2E@bL`9V84-vcnNt>;iOEh<_ zZf=fUm~g2rNdE2uzNjlXJB53gW*eLl)Lt>`N5Y9J+fN=L`|5ZtV`n#1cmJtkTNilq zXW%4P=5>eder`45d{q*b`0K{J37Kj-Pwz-p)GjqQ`7bM`$@8c^oMnEt!9)44VRAiY zzFX%$nkyZvK2807h}-=uH#kkAU5j;YS~j&A_QXuzbpJ(;z+=N%SC-kuRdOGD?hyCE zc0=7w3)QM;Tt_XMJ!>sw{%neM?PFUz`N0|AlzDl_Ja6y0oX@jhsn6#Fr!9Bc?k{I6 z{qdgn%^USv>G|*up4n)So^+5HEt=RLQJe$>_@2?-s#g{xf)D=Dk<3| zTFp!3(|I?&E;NXDg?Rl%*XPI4GZKaqN&$PSzTh|Qn1(Iv>zq;KO4Ei_Y-_cuP z-)=G|&WNau+V)%e;o;xywHpJr+dlTZvFeWLKdl+2&SCsFVW^(-4_5~_w!uy4Kz4A}LE<9d5adp!L3#XnafeaP? ze6vj}ZoiLtwc!bSMeJ;a>eR&B7hYP+$^YMZ!C}I`nFsG3k$&kH#PU(o zgLj5gVC`9U{d?!HIy!AC&bL(i=&?$~>f-Y`@yAN;8(vY8WX&ybJg2+7$S)$U#KA5% zq`~l*hHIzw-(T<5@9qq`$~nVm$)tI$$LExKzAG;FxyWhbmzusm!^-F~vr(g{#G?KG zpMHzp`ljl{Y)g)=63IB>J!ivKE|&4>5S#eo#~rW8jtKP^{u^ZGZ#$Z55&Y@ZVhi^# z67JXbKK5XqEiiGd{o+6K&r4oCDlhfJ!zJ-IlSGv2ji``C#wRvPmULEjoL24psNp}c z_5AIx`f@GS5iHw&o>?Ip$6|2fd%8>5RKL!NVcU8u*DLY2&j?$y>C_8h%eQ~{g`agD zUmLz`O6u|O#CspQo}173yZia^wWuCV{BjPrI?#S__@-o9+VJl{Iw>&#sb<@_0wjoiOz@Lda% zRGh2fVLV?__OR5CrI(G`4Ay@TVp+w*pR|zCWOCku@W!iikGeVkJ;gh1s<`%d-hUS^ zK0EBYfvu4@y&-71s6bCq;RGeOe8r<@m>st)5_9ACQ?Y2&zO|xz8+ZF!O%DlnSxJAX zjoYOa%Fnz}VO5r&B{X|Sn(aIFd6QJmPCRIMpy&G$8@VXo?;W4s39o2Sp6GZaF|ART9;qvA`O>Rbem7e=o3pvBx>`&XcqCUJEuSsg;*aKR#!oa{SCEx96*@xKs0Z1DnD3 z8K3qheYI`fEWSjenR9{0pYCM6wIObKZ&=e*mN;kqIM?l}UNq733_G{a+~dy^4gP*m zjoG%PKxIO5$2R?z-~XQ+bD7}3C%yUCr}w=VQkJWDO!fU0{!{6UT&2v(#>GX6YI{`* zH}}jEp1W80X5z)N)ha;()hiz98NFT=SiWZZDuK{^`{&9ZWX$6hG%uENUd&hUd0Fh$ zlk0bVJ7QROu3w;b|2$dc(68*xCZG8?f4%p_Zkq1qSxd6H_*`|0d70Oi?pCzZ@n3W~ z?BcP7OpQIid6iFy^MtSS`*`WH%cc`YxEl|h-Ov*IkayZMeJADh)4$C#HJ_WoGIAs(-q;>*qx7Y|y^{^tWX5@g1rT2V_2l zX-nraJ}CJh(mQ(<+X0r0GuI^jxBXWiYvD^SLDY4Y;ZxeE5v zBYUJBub+9}GT*+1Vb5vas5M8wmi10Dl9OS#zO}fjA>=hj#_#*CRf>nrqV|iiY;(8o zm(Ue$xz-l;_G7ipizx~p_iCj2sBd_!;~DZ}?$#f#6AVg&MB_VO^em~&Xo;AjcKBfS zX;;pS|1V`1!6Dt-!)<3b|8)iJR(Nj44m%Z0Deq!pqxcQq5|H!TVv;2&X=g+V#HoNa9;|+K2k97Gb z`YL@+znC8X=07v@wkPlvIWIl+XUC@Feudq=HHRhZmhImCBzC#%wCX)s_msR0MIS=hS^%V$o}IK+`&X#6Ww z@U>o47kh!8+|0uDPlZ=yHJ((F?#RCEb1~Ma$Ki&y+3CL%JR7I~e{?7O^t<&M`{k1_ zJ$+#3^fWc-!%OQce@oHX^AvFCDtT+mMUXYaHlEv&?E zy9B*o&C|oU@itS>k1tO@SmZk7T`+rU8xsG%{BY*%MY+5FglN0ZT59K|=oYgf?v_p? zNA5(&?>j0YWBFQwCIv28ET^LWwu_geCit&}!p!;4{|M&AtGnIWFTCHC^Hb0LsZBFw zn;DAiWZsGTPtWLD@3zQ(-Tga-%d(@578_b^ooo}ZU$LW?pO5>xZD!Bv_T?|5HvV2d zWB#j{Gdk1WB;W4%^K8wYrNXPL*;03={wWIjs3B2lc{G3Bu8-5L->qwWaZzzgqyG8J zmsfQ*`d8nszWO92_SN>D8YSEC-xtKc%)Dzemw(aW*)~}v>>a$lm1pbX78@`2yzudT z<0J2qf5*RMN#$pKoV_h}+xsHNh|?=Hb-mUsKK$--yg;mjLVeANXvW1i?oT(6F?LXz z*Wdi?3j2dZ(RD@9348XXG+3@$u{C+m)@dwT=N3uu@6JtcbL4u;=egY0K;B-6?pTR%e1_N>Hoh@w*@|*_}Jz%>JNQv~thmY-?|QN#$EVKa`y8-}NN1_9b_i z*_9`1$G!;`zV>0@e=ayL@7Yy>4F7(g)RwEZPwH-4nv`-Z&|z5dC*ae2@Au~4r0$>P z{>d|uV-m~UKNfd#Ektt{d_61~x4id6)$?opyWGPvR^+pP5C}=N-RUIPTe|K{bS;-0 zoAk6BEnJOr{i0lUMT=~%*^=X|$!i&=;1?F##>eLtCEL92zU)T7lS0{sYBs%!;qFmC zWv9-UznZxIDw^%SYl$|jsFM#Gdr0{by_L+S+lwRyO1-3?Na&V#6`Cz+6ZmoX3z1q&;~d|P^(s9g#_-)wmD8}Tyzl3)J=PN$ zIrN(%54~D()g(se(&_*FP1ib4Gu$&+^EA7RNA}EeZYga$ud2yjNA_t?_AIbn`)yjr z+4Md=4iA1U-L=ntn7v76+8ml2Gi@uQ%z{d(-4_Zjt-H0G$y6cO`TvYi{ zI?r`&e$(N=X7xt@{)cI2HvQYTEqxV($k|g&thY^H; zX&>agS1r=cyJNp?;ykCxcE6bS3cLBOJJ+|!e#caWx=HD$3>)hCgX+Gv+b`&2XMJgO{;Twbo88;&-cPn(@$_Pt$+g{cF8j_e z|2XHJ*_?^DTkQ=hZ|3W#E_%B=XzRw68|#%f3wECP7{+mZ(aS^Lb3B!UEIvG9OOez2 zabVKY?1J!m-VXbRUb3=0|J3bE-zXmHWGXm6&1QDM|BK%~-%$JaI`Pr-uTce@W_%kD zoY6N>j+v2nyRgsD&aHb&bJ5+;YgigXPq>TSnYEDFg8%5*`$Ea)2OXwdS^MD`?Y7Lh*sH}0|~KSn|gUpuWGp@qoa2wt^7 z>dm=mA+a-E*2_U&Q<<&AJM3l8F{k~RRdchy8}BH&f1i1QzOd=XaD~{-XP-5!bm5NK z`(xFj7BDz6#$YP!QjGiFB@M`a0{+xqSaee!PZm+NX19hT`@xY$mQShHR1(aZ@M5jz+f z4=tZ1|5CIyprT#$+FA4S_Z<&AW^V9Z$(U`tAdAu2Q{vsR4G(?3?kilG#uT5swm;<8 zOr?VlvSMtS7PUY8wlS)RL6VonXFvBcj35KCw`?<|}-tv`pZeK9VRV=~hN?Yj4MI|=Rq8~rm^fvTXnvq;F z6OY;MWpZD4WK|0Ft*X=KkoNtQQm^|f@O$*EZ`?II-7rgWCxWwuY%P%d7 zQ@*>lujEVM$CCTcO15lP=%3~_q3x0&V|Pbp*`@y{D{NM3?>KkgpJBT6 zt*o>7gH^O%ExEt>mqtXD$i4OVqo;o;Z2K9!Jw5XMgvkor+lnOfW*rY;U9mLdG-u}H z*%ySjDW=W1EqwRmhC}NwW%T}kSUFuqP0iMxQ*pic^4+n-Um}hZk1*AL z{T#qs#ctoS&28s{(5DY>Hf=iknv+}d#XLr?#m_PxJiF7fuxNHe&^+1HuMJ(AI{t>e zN^TF5@0x6spSF`RuSg-Tq~k%G;=+!8*{0O6H#>P2imvl$)H`*DizBSQaruHgo(t`A zQ)~JXm`@yZ;+*ExE4w1>*1|)cozEDnHizA>kJ|9)YLn&q2&TrYm;bqs$4nNQoE5`h zQe$9bD^k2x_-%_}{!$j-{ikm)vH0v*$=ZBWJ15{%ms)bz<+61#Pyf#@y{3F-<5r(N z9c5;}R=?_e|MQov=BnM-`aIdISrvJE>I*cKf9?IKX&f&zD|OqUKXxjbEP3YD9cgta} zlR5HyR(LLGpDSVP?Jf89i}~UYUe4804y@l!d$8>)Q!MGaF-ObD%bk10?iCHKEP0p~CKA}?E0}4qIsUS%h|H-+ zXY^9lOj@qX3rvdi-)WhVV?E<~^`3v?+!34CKc2N*`S7cE(N!fOYj&LeG%NL4(Wx@= z6^jzOw{st9FjW?ntkbyH7u%)RwdMuqgKN8=&R%3UC(`?Cch>d#SEmx-gIyM?Z!)o(J5_N9qm@hLin_7*^p5aTcbCLF2nva6 z{JeihPd86V+~UQh`SU;ebPESWO2mJ9JGZ>tg44y%XA{e5m5+~4S52u7W6g3taF45L z<6?QK*|R++epM5HeL7b;JN~<2WKQ(aetRuZp#|bHHGG@<%;XoGNPSdm-8yye4ar$c zrW|!8QoC$S{#P>2+C-QwMPyfXAv1^xLaTd!D-e+%IoUDI87PzsD zOYgO-=GKi|%J2D4i_%M_%yzREGv zS$aO;*;MDcz{_8r1?YCQJexLq+H-DZr5jpvm8v&ymMN26RlLPaiT~xYN2f!czpXI1 zAwB*u}=Yi1ZfHahQgw&Ozl_uaw4n*x1JZfi+y5eqV&_iFdrRMQWqZp!XZYKzQH z644PBpZUV_ul~uIKR(wkG`RWSRD4QC`PriHJvN< z%RvjKy(ZE6!aRY~L)S?9@}9SS5W}GG_Vc0bORAXPmr6e|XKH`l6U)3kf^T-A{5|Pi z(;dtdOJ?uCl;~mV_g?Y(gn9Rcgo-XGzf_t%wdmNnM~4>f`5X2)_DgbnW6G@?dA+~# zIGu#If1DrlG|g4C#Q3wi)~k6NT#onDNx$m7B53+#TSe%vyDO*d6?j} zr(F`RC*PD-N-FMkHx9mfEmm;jkpt6eJ}L?L&*=N%$^LXhdC;Q^eS7a*SgdaH&gV(j z4E389>Jw)f$DjMWLa|SmEn0oyfughjWg36y8@Hb9otF9i?(y`pV+ymavig|qUPt+N zx`eBB_gr^;y+4w5fB34#P#uehH@vbRDXf~Jaec|2&Q6A>0zW0IT-uuXEqsLYcygpn zIM+%&XIL9!vdJJ{_~5b4%NOqW^(@ufCSpIvlyD!FF9(O>Fdt9$sz!rb{0+DZ?1@o6UNS+9xeU6oun>6CP{ zc2&h}!N|+O?B@c{nn|uY@*(^Dp6xSw=6x-nk$QyT+&!jtHTU+uokpuxrhloNP_*IB zZjcuh$+ta!=JxDc5#REK_FL_42w{volPcWy?%3iGneSSCf3%-Zy|?gExYGj*o*%32 z{uoK7J@7ae|8#e3!>79&XFU+t`cky}t<>scCstf4cQF&sQC<3AMah$jdmr*$CAPmi z8(`4uk^ZgkGY{+jPMhX^9{E*v{a<7D_5R#GqjdR^X`Tk}O{B%PmgY-6woJWudlAn` z-?*)!%PwYdsmdMYTrYp3H}Lh-iT4UK7L}_BsIr*${cKFKJN#i`fx`g}J(-O8$_AN> z7v&WhN&j}YaK0rZeC^I1zBi)pc(XWrAODc{;9DsBld+Jlni@z<`4A$9K9~>*S|L(Q+SEJAkzw#Fv)d?QvN59UBIr9I=RcE#kjjIcU ze?-5^diBI`FDHXaT=17mj%Sh+7TU;NsdsMWnD~8_=Fu5pUZw0-jxUbfTo|i7wX$*E zp2Fh{OG=Ykzpwka|1(px^WBGDF)t^nzmK^;?d6Vnk^k4Q@4M4Dm3QN+S&hGb%7)&2 zIPJ^c{Vx`6jJY8C%3sr#XX^K7Z;EepXoy-G+e`mnD!0||ovGP_>dh}~E-8Fi9MzVY zB|D>h?tg9F-TUS@RVPV{6-1W&e{BC+wkAjPvUb}%t1WpqBa9yH*kxlrr=+52!ugY# zIuQYi4<<;jfw;n901>KI**^Luli&N+$UA6a~CCC3Bni?**?<&W;>$lvdJ#e}; z!?UbCMRWPvxv{H{Y+I3PaJXobU-1Wi>1)2%1gB(NlP~m2JKXA)`!z@U+&(wCiLvUZ z*aPNTs~Ik3GC8otW8&_qi4xa7+Y7FYNxPPI$YrCvOu>P;8G$WkM&TT(S8&ir*bcXO=JcyIs){lD<|;paV#SGJoN=9N#_yhxb8e@WTV z>H>YHb>~w(XSW{N7xlw;{_Y){n=5$^?ta#*__=G@-^7{sH%~fg^(mZx>-HMc;)e@P z&Yr&E$~5-xt*>{#<+940^zYcD%!~dT(-zNpYF84<`(WM1mXE8Z2bo@6_0Mec$4h}# z3Om{Nc)rrS92lXn*=bFEL1E0V`0r0scgC@wG=09q{kFq~X>Gl8UickmKm04~eA|v? zSGSie317hxD7__j_mZ-zD&K=nZ%_75VqAQQ+xy$iYh`-;leVP1PQFvxAZ*{#=qViG zGylBXwvQWryMEbhEMvg1!S>Cxkl5nfq?_A**0A!5yPt7?*2ceR{+SBNstsS*rum3F z9=({~bv)sDadz@_yH`TXjt3lh!CJcXz|#Z&z6vE>wF;TbklcNFRwP&BD}kwn2W;1R zcYZNHaD891vG=?C`@_rk7*G4g{A%V2+eOnGYup&CayLnyyfULQ>!7`r{q*O?-BS;J zNpbOYi!3bmUSwKs6TZUj$F&oeq_?PlPt&S2XtVVAR>Pw7{87H?JK2XuOh0*Jf=e7P zWOU6o?BUpdKP6$mUFH4zYbQTWvb8hN*}UNQq%|w|r@p$^JGry3Oi?qZ?jiT&8*A*d z)@9ajo!#^N<jm`C(A@!EbFvYin&kZrKxjo$Jb{WfylnFgpAr zF~8!QS;iv)>(GXXo^|IARi&rN##pVq!0y>%5N`V2`Qu)@&NlTozb_o>AvJB#jr?1=H$qHsuJ zx&P@$4~0L@FkWhP@>Y{&dH-5zOQ*MUg5EjbbLx5eN5`IJW+~@(uGc3Gs>0(p2$>%I z)^7bM;PQbDhn5Gp%SoxZMAzy_+X{1>Obv}bdPKW2*i3?9Yrvzgw*oJn+5EzsrK7QF zTk7(ouO|d&mqmN z{33%HK^a>D%lW=f*tIU;XU5Kur6&8*`QIn3*|zJO7U)8N$*2=wwCZ(r!Z%>|a zX~O-?T?K5(4=-Et*6sM{l@sUa)9g4!VVc*E?l-*ZsdxSA{2j`-M!ufUX1h*4*Wtze zl^2*f7xC;$F6vl+oA*Oo_P5>hsz1bYZL^a)E>vZ)WpCQ@{HnEmAuW8pcb1!HYvsOa z(|f*lckQ#USr0e6Pra}2 zo^~+j<(A8Q&lcSaJaR_+!Nb@k3HSfJ&y0;R>VDPCzVb}j!ZqslZM~Nq)80ORmC&?e z?tQ+gxd!)k#+~8!T=LLkpFnY)w}9Bm17$AfkL`Q(B12L@D?8ym_vc3sjCDTUh{(*g zt9+nk=-GZq>}&tuOyNm8Z{8Su(?hC2Z*jpgPFE7#cQrSV|&c^L@xQMRc~AKhR)kr>`Mc8 z%r#v0_T$308>aWK*>b~KUn1A8=|gQ-pLlms=?s^x)<3VcFxm&aJT_@h;#GyWwl|;h zJ@%XS=WJz5LDsf)7VAza8BJQ-Vwm2%R#H_a;i_o*Z2x;YP0_3>#ue6XiyRg(TX&|H&6jTRc}doiW(CC-1?I zI|AQps?$hZKa>Sn`iOT zskjhJ1SN z?sQpZj`uE`)>6(h38DR4nYR2nbL@Qo)$}#19c#WlVmaR3uUB$A+uh~(>F2Xf?_@sp zq0U|D`ZcBE)EE1n8d)oKo<4HS^8U+Cqp$J%4O^c7j}16E)9(tuk>0Kjo#_sr5B7Vz z2d>)wX8IJNl%k;6ww-6=ZDz3UJvt}5yG0@Mz0#T6HWQL3&N}z@^W2anKiYn8_PXVI z#IN=hdgY(%v*#{Pv>PE;5Ja+mx+$@>{D%BnfV~zUf2n|GZ;w*6TFB6#mqyf4t&&$+D`VZPzBsUOT?2 zb5HQLOI&FTj7P4iYbaW~D{VfzBw}jYGL|_Dy_qJ49XGtI?k*ywc=lY^_UR!Zy~$s+ zIG7*Uz0|y(!cuwa)^m$Z&MzHn-fMI0dJ(-hD0=_Ya6eG{OOAZ| zHyJvK`wBbUem;3=6Y?#D?N{}Kw+bclJo&mI5Baw;U({M8zdG!&tg1n2w&?;9;gv@6 zoA&W_*WbGv%UcqYwQ1FECf!4anNHq3BDKn>)zET>$nlCVtN16D1lr#B;8tDM=6=;; zgY4FwA3r`XcdfX1n{kEb#L&n&^A1#O58u(AQEae>TVhFb*Lf*R2Uih8hx<-%=P${= z>7gKTFX8`^LpIawT^0m()*W&_s@(WhYKrtC6F%8DP4C;nQp3evC2cX#D)eN~i2e&}{8*3nDsgX3kz(vifDyGsCNIPTRS+y|~PB{u9&V ziowc;?~XbQ7x+ahi}q4{wR{y2YC&tu?(^{(*nrCaGNBv)biSJf12YffD8HGuNzdo*rGV6TfiR zYMC>sEWQ7pMON&{^u4gvh3}ZeuiO9ZbRs<2OWC`3I$JL83wQa(_M7Ku@rpm3Z@>H! zT-tO>Q*2Af@eL{A54meEtl^w5{QP@oz=rgYLgh&_H0O4A{Z4Q#*yE^lsZU((sJGbU znaj%V@}8R&T6X_j!CKxsNxSQ`mv6PXEqYh;{d|s{4N6A0`5#5wUN*jb)n560n`D3s zi&>6-z+G=8kqgJO3b~cPShuSl>#FWuq$kNazpT2F)5VBgT*dH=Q@z+F^9F}4LED#K z$oiH2Naxtwl4Kj#l4!RTiOc_PK9;zq;eeEr1^3i71=sv|P9)4$lC(O(YAWH;KQo=n zt7*nm`NM$~Tb~uJxM%77^vcnCj(T;&Nsn_ajC+kHwmi13R_ozv`uaepe7@rBm75X{ z#N7USlqpYrbu`D3rn#|xSrT&$WfwFu{fU14_uf=1<;yElS81=!Ji2%7PR_iJL%*7n zJX6<6O|aO@^;L0)-&UbNuei1^QdF9|ndkeA=FB!8*6UUsxivA=_0L4lUFRk}*dX^f>t6w%-?@cH zCQspdbk!#`L{dR3tf0ugR)5L)SJn|7M~-k*obUA5xLRV>i`1;ufeFkXuQ1$;)cs}Q z@KDicE7LN2x0%N_efM6r#A~Y0g$LRvgmX@{^7Q}6(GvXPWva8Edv+dEbaPn_uVLoi zUysxFf8KK7X6CZ{w}L$nXBPWjnRVvjj2CsLJTEynJ{32=!TfBMML_1d2+8&Pm@iLq z{wlulT8aw$cUdnv8Q0F)UF#Px2=6;^(1Ypi2ItH}oBzt*VY{*J_V%WmmoMC`{d2Y9 z`$L7CzuZP$zTH~0wHdatzS-Y(aP{UJzGrwZ&%f63Up4uIOX@d;3CmdzE6q;d@KEGj zF4wIuo^Qf-@bP6I-^8?gyIbpyFZo>3n^U8DU95S+x3jcAIko6$myNvFbge%T%Bl-O zZZDU<_-54?wUmP~jZ+^Lm~}0WGz^@WdT?!5pzpG5(XG}d;S=tfsa2chKfj@PUrY3( zetFyML=B0#c7k5$PsrQ-p;`0mt-F{Y4 zdB3wr&fYeOGgz+TQ&?hwxtO;3-}uj0SLe)cdK}ZEtJAzz%QMB}1b@ri*pNpqQhQIc z+;~29-(zt@#s_D4FD+JQy{!AnuCZzHp_YkdVb5AGZ;4vG?nh%}YGT@+_FEIS&c2#Z z=sKIph2inTwGOKf*X>K5_V{N)%R-ePR~KWOO|Eu1Y>Ku~VV9F)CY)M#I%^{TGX};3 z#%25dKFj?!<>_jDR(<1>Q#LA9Dr}p7Q_S$|&iPXW?@UsgXLECnRe93;TMNSMH737a zbSZ7)rv)dy*TwYO?_kGMvR{?EMs5gUKpuqc9>Z{f46o)hR^oG zISeukpT6n1^F=u-eBNLCUo`0Rl)?kvUAe2=IJZb!O21B=Bec7{f~m|SSmC+NouchE z{j4r{(+m-{>t@5vjU!a{2Zm%azZPx2jEkQrxv>^PvT@n|RsQ=^Xtca(BW>}n1Xe-qW3JC9>qe@su>xBKTQy|VauTR6%;cVT#scN!SPy1(-eTlL-e05RLPJy#Oa`yB1Yy7n8-P#}X>(cr? zw{HGPPp}f;ydme1z_w)Bc-$} zUTxs>eYi%TR_#f=*Cp+Pj%y~K7km=SsJ^J%HEh+KRYf-{wllPRPh6|zdAa24+jA@Z z_o!d(V82z(yQ9}=^NW?U-=}IVKk4@K(xGGGt&0p7|K!gO?kiT}oEY&+Qsq?T->d_^ z%M%%xeAgV)To{_*5-A*R@P*rc#eLr%dGQ~m@_~*kY}uI3X9h<7ogpPQfBv^ZdpoWR z{QcWcROi3HU-j&|)p^d-p?7v}-Nfw6BIRs5aex02xdOZU7k{cqEivnlWQ{mD;e8bE z-sqbO)2F!PZTtG|+O?AxUM<>w#?|!S#8X}N9y}K~zp-p=IIl4)6xLj7N6T= z_b=I(IQjOIvsxx@k1c&xWlC>luV1U#-E)i2WkqZJB$vgrCU0?3v(WWC)_TGHilA}k z&FVLix_K@yEO(V1F+Co&>BpY1HF@)PRg|sX&GFK8%C{3YV>n&@&ShJ-n&G!i(WBB+ z*IEx=PKz}3sPtvmS;VmL#xqm1{VOJVTo$=>Y+i`ep&u2g{3_ftZMM#QWW0Zl`K`|6 z4U@%pB&cYJ?tB03x|+^;e#uE+m!C^vwP^^kjN#a~|I+dcbNB6OT0POGH1%V51)tZv zjQvhmU#WR*TEMEhct^Y75qW9drO)<$i{9_Fc*^fJmcqUs+_Pl(iiCvs#>iZJ`@}fD zG*xN){W`Nh$_^E_+2Kz-y$(5~&Yk}8UPGRxrif0^w8Fye>7E`Ug3CBwc`j$~mH>kB6Hk9}d+Eq^`Z zUxQ`M*B5$szRJ1mKKy&j>nc;1EllSY7MywUMq-H}Q{CzEBMCS6aX*_Z$G-Y?)62S_ zIhXhScMm@~mnpBq!1dXG#-}oi-DF~%A`zN~TP(hH2sujy$%<(%>9&nY)`u{kEkOp=Z!MRw`b)HXa1d?Ip%MSH4a z*bkF$C6{{ky!j|Lt33U?k{!EudrQ`LA^Y#GdWlJLzr9XAUVGW%+mx7RYvUib=Xz$c z{Oq=7s5+}`7m^-fd)#E@?en}l;(s47s&GNqA$Nj*jL$f!j#b3=2?``Yb|EiXSA zr7sMNel9I+gJJ5_kI)-+R&uCEi}Geigoi&-@fCr#kr7x6{cpEE6~L~F*8xV3f4W-P4} zvlt&veZ%LUe6puGk4InSNpe@0lUmh_wUbvCyZ)SI_;bZSX{Xgw3^-2Z2!ENlA*+qK zskvj#Y@M3+mq*`x`)b@Oe{H>uhxO@PL#MyZCM%Bk98tX1Uc|Sdzx<7$!Zszwzi)%h zULV&ycFk;%XwmI{l`YO@wOg%e0A85!k+viMR z%wjstu;U(&&c4;3YR_%I>d5>va`_dW8*jcPyR|g$Rt$XfLvvE-NwA5oR-fUBb!gMD4luj z>^}R0#`d~n)7E>gY^Xf>h-vv=^-Y0+`Ud_}O<8JgG9TNXq&qR6aqe%X-*+O%B=#L|q(vdOmdAUuR=q_B zb}cxsA$X8`zl+9CwKKnGl-;cU9cFibf8XKbk!SZ`QTfmI#`*N+XX<`O=gd2M;?=S6 zfZSph_cq?GanrjNbH~{&3ZK)dd40kygPb)pLQK!?!ED^a$vkQ*U)`dN5nOQnME~`#_d@Xoo8*6KdBe&(#5t&Ki?(p_^qAY z)7F2=2@kaXxIkW|uF;L}^A0}#A3G-t9bSId@!IG4Hht-39{qWf&bX|Sx8#%OY;v+V zZ}PCk;P;)pU@_Y%zn;i#|KlE%f92PHGwc2*eFZ!d8BM%*bG(&(bo_dV=A%t7*ybM+ zTJ~#Jh)CpOYvr#gj%B+J)P-xk|m2 z-Y$7lGWqzjHVJ{bM|Ll|ID6aI6YG!sc3gbpyKmbbskAfF_2xXw_AXA;jEZ7dk)13N zCCRbldXtXAU!eqF#4&`AD1_?m+m@~eMe~CoXQ<6K~5Dj*L+uG z{n~VtNs-}w&U2Zc`hsmwcJRgR&k$JVn3mM~v}ay@y2Bww#pU@b7gn3E=G2{4<-oXM zqnzW{tOLwvWw^F{KGgeiQ@dgD=_EgW$HQy}OYUd)H;PE_+gpA#ldVZ}$%ZQ$_ipT- zpc-HodiBKlX>U|H+x>#u>$h(IvcL7DL%#X;Ze7RpioY}bzMp6MwkLh zzAdQq;7pxmsb^Px&-ZhTo3M7)`@WX>uboBqyb@SFOL=M9vfqzyZ8iyMRq$T0u=&GM zo@VogmL~`1X$hXNezK86R`_pzUHF=lC-$lcT+@5Du$jx)MncEnz3B{F=RfV*9CHtq zc-&0Rb1jv<<$dhw}BWULR~{m3*;SK)TgKuQki(?~&l|JG8%8_v~nQiBb94+su4^l2H(^ zlkfgM-d43!hm)$_{Etql*cAWq<&>-I%Fo{KIg@u(>_yR^Z(8O)=ge1$vm7gMsaW!M z2H*7XFe8t!Z@u!+oF4UD{)|ZnHn%j(U!8imqI9**zF(Z> z(Vw4ApYpu*n$A6m`I{9pSKa>pm~;K7rM2fSDO+W4x*?F{vG8K8&HBoi*h4P7hlQ_h ztCHB9^-Ljx=~}AH)>-R6OquvQveHZZ=uDP&p8x+Iop^d=sgY0N>p#7X$~?X?_^)CaQ@H!b!Q?^ zw>kCqthuphdST_mK>uELvv2ukRtn#%Zf-RwVy~=C|8B~Dx1^xJF`f19o?8xQ8Wj5% zS9!Z_ShrsA{{Q}-t#8_PrM1+s@s*x2$xyenRe9s|K(A~!lbG!8?fKVu{`x-tq!gz& zlWVQ)R?pP#ujgHC&2L)RM@xsuy?7;*o$udNVrS!R{c~#DvHLt50>rqg7x2Gc{5ARa zJgbjs-JEqgiOZKf`2TNTy24(ml|1O?$C$>{HK>mrC_u)k~6DkZp%go7^o4q_syEw=o@Z28#q`j9nW4I*S?Cp%D7A1flXzdb<~oS@2M6Sk4GpO&MTAeD?GGN?w)N_=Chg0=HE@t z4~)wDW^iGTol@cMt#fZ07MmtVxm|r%nyP4=t;(}_U8B@u<<%aO>^Ip3&W`)7_sl85 zLiNV<6X|^>S3XY(O?mNQ!lQ%(=hxeL2Aj|QxFzM3rRs!e-Tjjn+=+E%DiPZH(wot9 z!)xJ1Ugpd1gqbc=Vaoqtv`I2DQSr-p<_p=!xu))osZYMK_(@LLObL$Kr#%~1YQM<2 zlD}JOV^Dcxh|^2w`_4XXzP5YXlldErb&ll!%|B#qKA-=%o4)3!i6VWA*qrlKmrH+I z^C>sXSwi2$Pxg}jjgL2NeSPicf0f&N_3!kf>z~XwIIk_W`kbQZT;th)zda5)woCam zW8{UD@DI(FO`_jQl!aSwp4Z%|Uh^<4=i|y9GyZGFSH&Nca{Sl)v@cM)K;|7^Z$|XC zub;Hmn%TAAF<X?`h^ZOvYZ8*Jb04);yQP<` z%(|xJHM7TH;I+Z)zYmU2ezKvJph!doYv`|UJY^6I}@ zV2bbBdD&+^=6_{gz3lDcOq(N;`VEWRSNN!1L&)?NYe&sJpkzSRQe*Kth)BBmuJ3oAy zbG&!wo%yR)aZa87`siP7vuoQrKNYO7*cg!0bxT;|+vl|xCw$M#dg~z1sZ!u8;`gTf zeXdM9W0KZ(_SO5n#kV8{-Y8QujM?g$ypG{f%i&dfwBI${`E%JOT9EhNmlch%g^z5{ z#~r%V75v`C%6M7NqkEVB{ct>SE8R5U(b}EuE3a+6@hH$+L+98*#|N+f&d#`8U;Q>R zpqQudNq0IJDU6E=70a6Bfm0edU5_Pg=fM2y9$J*E{Yk= zEoQRhJiy<&@P6b{yFV(IxO43neO$jQ-XWw&Kwzn`*FKBP)h9Hg@;SG-cI}H5U*Ggc zFev+Tt?P2t)em0jcW7OICN($s><+PoD<{^JJ)ZF7*?ZTbnmZh?d2T#Z+$2`EFN5*W zZcj$JbKgxb^!~eHt{U`Ytwy4!HscoFy282U9B(#wX7x6?rROB48s%Kzt~SVBq9^t} z{*n5T10q-RjwJ+S$grl0zS1~ecB}G(*we!?j~qC4UZ)sNi7`%4Q`9gO17+Fk z(wX>k2)}BRQsH;|FgJzoOes@&p6@vYxb20b(iDT|GeYc)~@&y z*g88cV)69F=I16(I4J#T)~+Rj=l)Nx5jd;;Z}N&Wybxg+4U(W0NU1He7m{4uCn(r5%-}m)z8oTz^&3M@iuY(!fz-3 zZ?~ROV;r{mGAC1*^5P|?FXimx4ay&~UcU4EezW4A-6foNras+yap&)i_j~^8Zc#oR zznE)Pn8>OM|mdcA9t@a9SFf!^nytF3AO!qs*B{AG)q zU7S)I!~%RWjh6JKORvydC6#4eY9V#5(_2Nx+tQJ}`f>b`@bCU7)LImH%09+VsgPFq zUVdwV=DjBuO^Y6R2o_%5>HG9#oo=>wpV()~g%8XFHQe5-oU~bg*m_38k-dDYb{G|H ziQINGC!{rrTfrx-Bi7Pn#Ru7kfjRTV;+Ew+mk-xm(s_khuHaCw|F;_5t6dGDB70?v z|M$3B7FTgkJ9to-#c5vG>nWRBwy#`aSGYW?rb?vfN1XA!-!boVjx=uBt0W+2Gt01k zUKQuHgl2u)SzB6VpUR{J>RYydxVo9w)h4Ukf76VeFPFNoZ^N)rUA|;Z zrgmWJlKkDTgjBvUSbvRQpT;vCEk` zb!IvJZ}IHwOJ7*!aXmh{uE!eyKjEkRHssn{}LJRcJ}2-1Xg}*T+Dx1eEE}S zdaA#~ZtV^emu2+Sk9jUs6m>}IIfu#CA8SGxQs%vw_2Q}ZGV|;?U(c|7+4P4I0f@=ya4<(K@ia!!J%+=VI|1QkKP(C4Ran%(Lra*z$ zDlShxY2SS_Ei?1*`{f)b{hxdg^w{j#W%XT)*(HJP$f~oyJlYy{etU1es=}0_^hQK4 z#pRv1s8Czvt*HAMOD=V7|84d6tHa5j>RXHxp66M6$SwU5v|V?im_L{M+Mt+I`*On1 zI0w!1GWYxVJGgv9QZd8sL*Lr(99pIMTU3#;#wcy)sI<3oj4 zor?Az+Z%andTG$Q)RLq3ov&V4P-=TMJpH)i{~61dpU|p#!*lzc?z>ycd|79rq(WmV z8(-BI{&{_TqLhm7_r;p7T^AUqC|thTRh*QQ-NU#0`+H4Sr6+pd)!#Q;{S`?TirSnt zVd0l*hPf9#*jD}1nxU({pZovApr5Tz-{;DlWaw%{iq-pPylVQ&vgOQY3CWWIaYe5;8&#gtossRwKY5!) zh=AGNxImPs>M1Ya(TB+ARY`2N7VhPCIT=?*2y>7bR1dR@t|NAB8Pn^GxZCx(cii-+@lb%=iQ_qbS8e5+ncIo|wgx8%anh_(Nwm$V5m zF4^2;XS(<7@AO(}TPGF!@>}l{(|q+F*57(FZI;=VWg7g)#6_KZ^G+(~+?Cw0;yz=_ zrM7!bufE4!TzdAn#~0%hAK3TURjduT`q0!?Uv_#`+7!l`jYs-erGzFX9eI*}!1cw+ zIg?D6?_GG_y0)m-DX!=J-}^`B-L7MIUU_tnaL>Ec;!D@wayDjUw|~2vp<$49B9(*r zPV|P#3w<`*3Y#{V|6B8a=M62bgKL`~Ey^)Aa>$YR>as&<(+i7w9*sLZcJ)uA&-Gk= z7ojM>^3tOJ6|Xi*gq@!fKIMV;;|C!Z1jMuYWF<V>)NACms)#sn8SN6NA^PWE3 zaaecKl-vj3fA4YmrDoIg*m3XEW80Z;IlUIP472gq71%lP$N#vndV{Xs)ELo}vyDC9 zekrav*Yl@Lqq-Z+V=Fd;k4bYs75l;6vy3$TolWS!C`0cv?)a z3iBVw7nd%bz4dQX`~$7OMNegNcE~m7vM|1~T9@j1HteRJ!FQ(mX6<&Vgo_*+eJ?M$Dq;(2f8`uJ}6oUOFa zHIezg6rZVLCs)pG<&@&obzEK?7Dg?5??nG!GAI4)gP)6bCa(L{vS^z7wFjKJQRbC_ zTO*c4UOsx@Ede13&#?AB0w_b6feGUeFaDpTGp=Q-MXyy}2Yqk^SYV|VrW zIu+3=FMK3zM7LahWPDU+{a>y4qJQ)FKAslXXw_bG^GD>58I|uC&emF0+)Lc<=eiH_C0MBTPsFPi$J3Sf2V1Y2B~ZAbZ&CIu z-ca5jZdbB7p4y-0sxNd&=8-?oRW`UZZl_jd9%)+X*S&{~V*v zmn@uje!=YZA2&0+5LvtP5u4|?C!Nk#&)#4A;duK))G4K`g7+V%{_8Zm&nBhC&lU1R zUew!a)%xHITV;1`(3=!dx_V-<_BsXS+%>Y_%x8ALGb>NMwYAcvykDwe-{W2WOT)P0 zHm7(0^L%+MXWj8+FB22_yP7IXI0K$av_$@UR?*AraB0%Hg*UrHIMx2_=zAP3=cbYO z{6M3(lbpQbvK^OxS3UI0%z1jQxspxf6Vt?wJ(k;y!tr-j6_;XVp{6*W zw@cEOb?3Z)9uv_?a_~BKHrDK6u*EV1`HAbaylf>xE_}GzWW4>uewUZ$HoVNRN&B6t z@MhIgEvsgw#&63#9=7&47d;7=?MS>_;2SaTiJqKz{H&!9ENtt}@x9Do$@C62cr$1F zqba8Dl|AC~%NP4`s|p@3$dG@ZaQo?O&pS_aTgtxAkhT^nh*HqV<93=fwboUvNTKTV zg!}$4s-hWLkBgoyQGer{5TT~jb4p1j=E|GcsVp`R?WGxy%B&Ymeg0*hzJ38u|E5_2 z|G#c)3oO`H6WDv?p=0@*4@qoy+?@7*nZe+HsPX>IsF=!I^A4Wdy zEL6AAr7WRFio-=nbH?vz>86zIh(&^*M0S@~R`^M(bu9S9;rX)qg4Fx`sij^%4|s+2 zer88p(s?f$lD|BCduo~3{^_5^-`{1uwV?9FmmlqyX7az+dtb*Mvhms9D+ez7)YkLH ze7M9l(V|Faclx7ZD~F!)#FxvT9M0jLQ$vt zm6E)LmJZ=l|F>-CiJbXGW|!I8^bF1G-B(Lp3Jor`o%K3za9I1WMdjI!MJ>~BZSnsh z+-)2$ETMLkvtFjw)XpPLLHS(y`O{krYxj1ytt?j7h-m5gXs~h7I+aV$@9(RT>P%cI z6Z|sgya9U*>+##xm1|}#`Q&obVO3E%=Nt1vr*HI@MJ@OA+U9O$ zb8@5E?qja&F2u}apB?so-N&9KHxJ}w-n_e^&LZWt{F%pE4V=!RI*AXTo!r43$n+`G zl5=I)-!&Tq>c5>->HROb;Of5MQzs1fi@cBTo5_;8?Ct0Ow>RgB&Az|BXu(S1H~p{d zK7X0NQOYx?ESBZNrHTs)r}dvUU5mT5J#SAv2ocR5RZ91bizr_!9c+hP5b$A52#o_v&cd#0lBIgXXmUw?b@ z-|W2MH?QwXMO^-^Wt|%xR2Q#J>@zW$#?AfQQTpQ9PX=`+URR6f}9K#2BUS zKjvr@H|^rht#zHNH~Dt&Wxk!%o~m1jy+x1(w4`@7WZTZd|6WaDCJ40sL0Rn z`~`+CpG~(}rHX%C6_9(ZF3oiEx;dLC=qx;?vGwWh^5?;=+f7(yTct@~CfcKN-DV#D^%YPKn@4NljiHYUaQi%CwF3wd3=+j`f=Yk{Z5 zvo#*X@*hh-Ra9eGto2b(#mhf3Fcym)m*nOPz4(FfeK{k95Uws|YY&AvBdRTYcZ z?n`~@Iaw9|HoF?TBn8^cIbp1_;&HHu{*3?Z-a(HJ<{wu}om{_F;>xSHD;VF|pJd%4 zyZ6o1MKhZhY~TL4>a%6owUy`gA1f{9K5@X{e~K!j!KRT&80Sf z5?A)^mO4_Bu!-ICV2^QT&^5oNvht~=<~>_@PClBsvgYum6;tOXPjEgeEWf1h1Uo~X zTwveU(&VNjd$-)bi)Sl;_7-;B($o;h%d&dfB_{a`#->w#Y9F0r?8WqP$34pnyc4&% zdxi;l{SA72{k7rqBgbkJcU8}sz9#lbN{4c>_LBD%?a%MJE~_yO*!w(rk$!moI+@mE zoTra4>1BI{2yyIvkh?`aWy;6PIhA`|4LX-|rj?o9-p1IotcUylRQa5^k9Ofwt&D3q z^!Q~j)`s&Gf$u@hoEP8v`_Vh~O<;7(j2b|WdaIRS@qHL}9;Qd5? zU1Q_BwGZO%@jm_dxp2$k`@7cv29nDeb-(cZ5mRsZMTVpe_fYMlsMMos@C19rWXlY1{jO=p;S z-oaeauJ5pWOueW5UA@hmPhL7*TV3G0^U=H=y=$zO-&QhA=W$Qketx>ui8=C3SEto~ zTzB@X(9spud-YGWAG$1N@yPDF{M9~5tG#)K#gd#eyVquj=bdj&7O$Aoy>Ft@-%Tf8 ziT0LmP3%?caQ$WQPDZ2W&enfMK5rTYl}n8S8kb)E@nOT;Zao`U&V28mV(R9bkGc9q zWlI}38B2BFmGd@CaI5KGC7TwOw=TG<(ka#bgzFEEn=LEeoa{ZC8vD|9)_>hcDtm7j zeE;(^s4!{KQH?uUH{Z_izZ7V3%~~Pw;p*)rDl`5U91-T(+SlwMK5u!YVUjXWalrOv)Pc)_Zkyw0zZzg+p_^Crj^H`Go({%m*3 ztD8K%xiajBwpCXDd$-Epe%fz&C+QzY5@h#$5X)lDtau=JciW72Ij$yGPOdxWT;)5V zJ#&NQs+SVSP2?DF{}(UYdf2UO@%dF(4Q%JtEnRCs>#;sJxk>`|;epm+{dX_?Kk+O>=UcJI_Ue zb3RX z?*lWUAKf@^{`KLm^BNhyw-whOljoY1V=mcf{Fd>U<3a`ovFb3!UrdKjxNrV>k5hj} z@bg+_ZkcojffhMb{k}or;~p95ugh(7_HH&QTmqIEOElQ^noCm76D2 zNH4IyxK8Q_=eI@wKj$)88S-ux44<4Qmz6h#d#e(cg#C@ zwgq9Qr}RGa40_+UWU`HPS@xa>#ew&X^|B}3x?xqM6>7F@L-B4FtLM@m)Z|^lw|m${ zO!GhYwRUD{&^*sH&nbq=WNknUYFXlVn(WO$Jb51p&J_3M6fcS+t;6- z*?Lh@!$U?{Pws~r>%TKsH)?mv+-~3|7x>u1rs;_!Dq{Mt5_&ApdYRqh6_lTLZ#KS>g_7c8# z&GQN;`EAfVtu}wwEx#6%C%ik@Yi)n;*mtLI`p2^@{}%Ez_J=2kxqf{WcR6B5*sF{M znX5iuk&1PmrW+f(W4);GTonab+Qc1q6n;Jx5KuMan0aXhG!93zl; zeEmIxEymZpa}sT;c7N>HsFZ5|=D__K*DR;mJX}x{`e~>79p{u&hPO<2SxoWxEibf% z!Lz+(gKqq}O}jo+y!(4GOy*kj)%6?pJzL!$Tp z>z#WIBt>nO%Y>@l)fN}`>G^6hO-r%xRAZTV;c>6L-~X)ds`PY(XJvgajxPJU>BELC z3HF-=D|RyOp4hW$+0xD0zpv-q4gBrtudtG-%zW)Tg*hJXT0Rm5`(NvevTGWC_SiQ= z`?0g{F+TB&8oy^*J!g6}@rTMMwdds_`+r`^`0(yy=#u|`1ga0NC~yBJ#%yqLqhQAO z)QNI81+Q|h{Qdv4)@7aI(;K#YXY2NQ-^c!xFQv%X+`#SXj9d=sqCXn~H-Gt^d|lvp zu~f$4d)dn88a#J18f7G|d;MUJSitV`#tAX@0rj8W#{4?d+t*UPVaAyWU%EmSCi++X zt$%X8wax9oI>DRjA0m|RdH*=lW4`&f^ixH?&~<)#t@X2St@>`@yLqzz#V)Z6Zb|na zU8e(b-f8;mM z_}h4~Pu+G;0H6Gpi@ksENQExEa%%%qdc^*J#%^lMzHFLS_+sxH=a0rB6DD@AstDh4 zgK2LVf+MbzzN=4p!dT7u3Yqhuc+{pJn{v@_Ww!S%?dvWmc#qQk&{s}Wb zl-}Za|5-R|+1?{B{xB-&JN%wu?{LRnr~by*iIso;8MqjyPQUs~<=5Lcd92)T4U^r! zZ+&|^YW|VU`nx4AzFv}bnxny$rTbv1cI?Brv)0c8t|c;DO4ZrlJIDO(slT(gugU!S zxlrP?R}nvpm(x+dv^eXeLN3wAuKPA|3OXO%nH1b9_F-aPXimJVM;q7kg^Y30a?Z)| zb00N}Ckw5T_h5Xv$ztX)_KN#6FUoum@jf9lX^Bdg^3XA3~K4g3OuiF(H#%OodKyKfIoGe_m&!jFc z<8aXbn9aGXG^lCOyf0$^#Ma!6T_N*xy0NmHyiud|wHC$}y&bPylN>)}&tY3OCwhxA zLuSzbiLV zmzZ^bxM+1Y)jIrzsplz1*B6)mZ~icE*>9(6_U%osf1~d39sWMyifQZ=o1%sK+7-H~ z3j6fgmsRd6{-D;nO>^9mR66nwIXrr0U!bv`>|8%Hw z++|#UD|Knh(p_6a&U-1?%6sp8*1N^o%E)nD_3@uedAIIff8XjzS+x77MfLE$-0{`r!JZ`(XvyJ6|^Nh;wcTMvrxR2>%ka(j>6s!ltd z)!Tk7XyGYVKQ{TDhH+i>%Tt?FeKLR7ZIv^;xPOV|x~Ug)mYzIYB>g^f{h~mgTM1=O zhfm5b;4lmFWVk3`(;MvWGHv3aEx)Q+_Z_(;T%D%F>*^e-{pItf?#lLs`CLxTGuCMz z(rBEpr658vb|=#Tb?;h(O_hwI!mFpq@4pcdH-o**Y5iliJO-s#S?6A?y|?q3tfIuR zlnU-+v2HK+KD-m1v*h_4zMMZU3?*ehFYZ6;>T4#h8Ir(%+RB2ui(7$WKKOt#JaRlu?4wrifZ>Ih)FN~a$$CKbjh5meM{5%U%fWfknz@wetoL` zz+nlg)oG72{Qf#mjPneO?rve9+b&RlmBHi9DZgo%T>f(A6SG!VcbPWCm;RWzrd9Rr zMWyeS1|2VNc`U8a=3M-gx7MbtE%6Rlz4lrgiC5<|7aaBpJ$3D+d}B|xMpDGWbL}5r zOzTusIKddGda!iTk{LlyQa$%?a5&%C=w5qr$4vE;cW-FTopwLGD{;SonC)}5Rne!U zzNJeGJ03HB{_~F6W-i$kn=c)2ofX`s7sImc>Fs5AZknj4td~g5YBN-RvT0&O+M+s% zyYBP+{+ZUY8@=tF!!FLAKk>V8(agBQldHAv+IXr2U^`$3OJ{`&dwFXJ}#` z*e+|zvU7z8!?Bw#m8)dAX9t|n@Hcz1yJyO|ADh1(R(<(6fHD()&xr02U zjP5gT{S~vm+}(Ok*OlEoD|RL+DoVP&yJ2&UZCU;2${%LtFPXOq-RkC1SKYJz&Mlkt z$9#_IQn&s|2U#rF)0bMfQef9jSufkdeJO5w*{xZn3Xj`f%v@Npc1iB9S1*+EA01i4 z5W;7*Yvt-U+>D+dUVWMq8`yLyNOX3${Ar&1hecG~kFL0OGfOPsLtNfL^$SP6UgtK{ z2Tr%wPO5mLJ7d$_PufocKi)9Xl`-J1saxjkw|B?%x!uxFAC$8(Je(`6I@g`uT)xD+ zH8or(`t|wew+rSRn6TVzeQQ%k+?mK9T%XRCzw#`bdSQNLLcqccEY=Ll^Mq~k_e=_? zTe6d#aZini-%3GFTnX_4=e}QJ?BfcP$4bj2Vr+hRj zye_=5Of26x|2psPe|-Hv?VLGY+twF4KHl8k?|d>mYWdcK9|aeGe=oKtMZjrpu?Ky0so$e(2QnN6|_hYZ7d~OBP*SKW)-lsT&Df{U#sSak1{vlHXTS3a7pO zyt37&_Qb=LlGA$oPuy6}WoV-IUTM;0od-YvS{v3*st<~MW%+N{jVZYs5g0C<Z>VEVcB=Z~CzmFxY+;;T5<10|gsAF5kiMbAvC-6?Z3u1&SH zt^Z$2l6N87qiJ*YXQ?DUx|rB25_EM{Va)O5kgI}%u9lPKlDZe(bNusU=k89QXOYgDQtZM9<88okHvGhD1gZbJ|HhD$H z&2wCkadO$kr<7B^m zj#D2TWUUpkJM6y5_sq*ZJA~)$cilBxXY!)Ier|R%K1F-3Jhsf#aoT*97okbr*B+QW z(>s(ir4HFv%q(JiulW$g|L z8HR@Gs>_V#8ukmVyZq$W>l4Qd{%6dt^4b3INwMlY)&6c*?M2p?_*Y#^t8(a<+2h60 zoqjP)=)xaik$^>t<%e0@&#l{GzN~wOl8oP{DZB1W<(+@-Y~9|{fb$NaV$63IFTHf; zu0pdNyVc1;>-JkW5MIcH(` z{JHaV&uuJbeInm@^ih?Z(gcTvU7NP#KA9tPxONU_hsKGeOV|&jv^-aLt9BA;oO5S~ z5Ra4Yp_yW9cgq&(f3x_r=;08f)%3Hsm?y(8Q!um{FZ5=PwW{t-M16s z9v$*-Xz@6yk$m~{Wo|B`#3QpT0&hJ1kaoj<;Wv%E_9u-67UzF{%&{@;5^p@zXs~(F zbo1N4nAKfcOm-U%+tQ4jUY)h`e<9MD3M@ zYgrZF#V>D`wOPok|Lwt9vG=nbPLwo=%xylUf6dK_oik~UUVoZcZodEF`5!x8h2@)s z8B|R9|MFUFQ0Sb5o+TO`?9*oJPc3=Q6z94t*4e|F_qWV5m2>hww`Wgp+@F;Et^5CT zqseU-zrXie<-1EaUtMLNfsBYk>D1|ScbW03{$>02`;DGuSfVxquV}*0uljHPYig}N z$t$-aa`}({K&JJmp-#B(`dNNHd`_99}ja~-b3wzo1%>3ss4_nS%I{mV)lh4hQ z%9cV=S{7Qq@|)NATo%<7+;Hf5gHK2Lt&_S_(to^uEE1Ku^4O0*SN&%+Dy)&;>a*s{ zSDgtvj=HRfd+}M)UMsgElJW7eJ*;nwrr94*ef<1@t9-_`)|>nc2hC2MVqPU;>eA2u zb6#bRy3*Dx;@G;VH4YUH zIhp?1;hg19;@3x|Zx51|`12%Y!$b*xJ=qB_&sP6fSZVUhJJpa;&)lgi)is30H>a6F z;I1R%dY`SLr!5ouJ+B{e^N{JDe){>NZ$|vHs)KH`?q9fi&X)WCm)|@pt*l z=SF?hf7l-E+aoM5oqI|k?aIkB3mDAf+H3#s5>``JIQ_z^_%h?;m*(O1Kkl}_4r(+v z`KdMa)3dgNF%tyYJWs3;znSd8`Tpj4jSq<$Z=YWGe8Qo9^7(fy=Q)atdg6mi%GskN z+BSLVMC$xZws*NYcd6HcFMUxruJ1_`z3*mwK5_QB9Tz252`4T#f3Q^Nsp^S$?$a-n z3LJ8=yp~_D))Qi(wKJ#}K>biu05x`RJkVwLCru+P|et+#8k5aT(1!R00y zWgZc&t_r_m=O4={>gjabnY1C4$0_uP%hj5cxYrWxQ+{7vAjdKzK{DgU=Vw~iKh~{e zsp1WB-EpDJdu6fIjcY#l&hoRYkv$^Uq3h;+$MIm6+R2khd^jNbA$CuP@K;PpEvf zeeaadho&qQ@qWE;p**Wqq|&yd(OuVf7zNwp{A+ERT5!DKe<<&hE*~+i|DhesJGl?~ zivDVR|6B8k?kW=|<>cAsk4=ugTBy?ynX{i~ji0#c%78!nU-^BPGnEpZU;VP~qerHH zl3^t8wE8m>ciDd~`JTgd@2_q^yY5OMg{!p*7oui7{}ovCxHQb$pmo#J9d2*V%`6H2 zQ~HEKe%>eVPwRGEQH*`}ztsNMuftbGlfq|hw0p(JCZOgzTVdI^f9>2>+D~_|N~j)4 zKdt+|FGoIUW{|CD#(SPe6V;#Hn{(sKpEAXJjRNu?e;mvF-u~@&e3b8Hk#`NL4oiN% z=y?7?DJE=U)2b-8xAOv)?DNT!T&yzL?|t2D^$iy{WR!EBHFgWwHoy8Fv-?qoS)C{H zXZKg-J)AI4U1P$%4}!~?)>LyGXD_s}zjS+o_*{d6`DaQVovWB^+@*T!J^SN{auT)m ze6@F+^xwZfY3h>WAA2mO!DHVnT`gvI%avbQ?)gp&x&3e5i7T&pj;h2g>XOPT`k}nj zclnofS}_S<8$ZlUoMkU>IQiR4>k2P@ahvDYy1mkO16)|Mob~LsUeaEol6M(OWxk(yXDGaRnbw3CdilXQHnm;}H7B|D99VnZ=t_0+%H9NfmKf)6 z;oK4h!s;C?s}@gJy!-r*FL&o*ujR-8R~tM$Wp>1$RN>Klzw6@~Wf#j$a}C;5-~CxA9q8aI#Ixb&9pPm+z6go` zv0C1y^Lvup^K`Qvn<6jOrD}Me*b*`~K*mSkIZcY`wt$S^{Vna!iZf;ZCd@kVEol0( z<-cu3<+#o%-nME?x@jj|q#Df?Y8o{0?Z^A_ZgO8Tgnh0C9lRo1$z^DhaCy&+=?^EY zy|3@^E$^FfmVy0|>8G74795Zdu<6k%yzH}PIv?kqTb^hB$IoQRu6Xd~&cV;_>GpS@ zcT8KDX_zIpLM>bJ$#LOQ!_OWanRDkv$S(AJyS-lQ(RmNM(wVCw9{y1|{*TXNVRcE( zQ73i20~R;iJ|3EDQIH;`a(s@+<%%y3Jc?y3P9_H=S4xY9I<@~?aXv%Wo$HsOufc9> zM~{r(O@``wH?69x3z}Y*z2dFyM%(j3j+y=Ku}=;Zq%eJ2vatEvYH4Y9r@qMy_OEW) zMNe;d#nQ0q&;rYpXYst0Xt-BRp_0=veGpj#$GPFlq&uQK-m&LLl!+8G{J65rOzW6D5-^XPi zkLdl`Sotce;?VXuRnCO-uWl-Eupi5D6AQm|Ty4Xq2i`N3TY zZihcRJl|@lA?vdHar&Lbd%9UyH?O>5^{k&`&CO>*ul~(u6+FGdZnNDV%l9r93eU`& zc-g?wGw^WJQPpRhE=OjpRQ|TE%k{v=CdcCs-Z34wUitWk>$0+M^Xu>bPg~ZtWy!)H zw(V0)6dWs#3Nh`w{j*Le;amI`?oVazX%~}Ym}0{o!qc$%T{Ryb{G-d3q2o!`8YyPjW_*fqCqx9?hs z?>5)n1GapM%%~|p_PgZS?55D;Zn>~S_}ed^kbM7$=TGG$9&51`?A@R6 z>URTc?uC#2np-12u8zC6;9u&k-@LE&o#DHJ)UHF+iumldj_p%tDb)~QVP|yGcn_EudfP} z`1zvOvz_6(^=Fd^6`2L@?Juq6k9@njYm=MD)+hT4;^doRR>hV$9DL}vNv1k^*Oilh zPEEQgmt59vo9dtb{P{`S7K^rNGAx@ormW{#GOK8bkovTJo7FqhoxPl=e%Y0;rF=2* z;bw;*{amRF5BBa`b!W;P@j|ZEwNF*OHM3UoUQ>3Q)P2~G)w6Gxv@L_RUhx!<1czyy zzKrL;X|#65zdKU!$7e_FoGtcTF^_}1OZvTgJEa$VJCv~GmU4`7xyao~mKJ*r?mzhb zPv!9&4uNW$Q{|OYG!Hi%oA%|&5y#^F`s)t$C6zRt?AXe;bmau~t5XhH32m&42!H;7 zZ^d-p^VVl~r~i+ibh!Q0wakbss}fC_1J0@(f7r$N;rd1u=Y~n#>$5McO(`_6QIBn} zG}l?_{;D&<%LZDsJ}dJCki!^P&Fi43F}yRx+xO3PRT#8rumR>z|RI zD3w|ybC<8|;TduMiAK&jzYp%yoU|wT?8y*Dzs(a=3NKw>Q-4`UU`a-?klU6wj=E=i z7dbG_3R$?fhw=5!4(7A1PTOxCU8Y%EwUL`A{bb^qJBgVEivRnq*E_XLmMeChf4|!9 zwYa?3?{eEIiJA|&J|)cz@RU0A;>A4c_Socgo@ce&pPjepkgmT!BX*xO+ey!}D`&F) z>bk;t|ApQ5`+qxl%-^*HN7uY8E12E0$J#xBr$Jk?_b^j*^}3!=lL=z2>+HR+Rb_rS z?010S%JIWJ0yEZlizQEF{beHSqp)1v)2!*#d9%IlA1*|`e6{4!*@9;wTNomQ-Jd*d z-XSM?bCu$foec9Y8-)hW^F6K=z3)k&!tt!V+-vi$c5Ye~w&i8_)of!etE|v_S#mF} zH_G?T`8{X7$TkG`IOQ1s*8QjtsU>>6y46Sd2Dp=%5L)bCFaIa z(`hSlZ_d0@S8uEO6!9NMcb>F3+cnu+I~%WW6v&nBEqUEIOH{h*B>yRyZ?d8GsUE&M z)Ace9oD2lJ46jrjdmMb+b%V2to)>F8htIv=pM`hDh#uL&ez;CwE06V%Y0|VnuOPkv zZl~F`m;IEgSbyxlngz?*UJ&js5Jw3S53_+ehGXB_ot~*m-bL!neUDLZ^zaA(nbeKhF#ic0qIGPKqU40!NFIzGH z&G8I-Yk5btvHic-SW}uT~&LMo9kX(-60crfc0)*OX@F6gCbUB>j$g5@K1NLzG?aFZZpf_gryDp;$tg%yE4w1M*cDhy0QI3x0JHv6iepj z3f{H5FZDS75zg*a>65IOcg1h=>StkZH*dA*SYEmyw0MWSL)5CBiWB0t-S6o>XsP3E zk`R&cGkwYKv+Xs})07-9miN40-YUtWZ#uJJ_wTRTxo4$!&RN~X5LuVL`|SJY729^D ze6;K3F*#OiT< z(CfRU-zME+ZvQV6w`$vui+!P21sfJF^1L@|+Ww7~{0ut#m((`cycW6?Y`W2Rae=Ji z^F3D-be;b_{gju#P+)f>|MH!0>_nG0SN8AOwT)%Bq@u*#gfcOKS>BO)dpe?A3lHp( zoG?*G(DK{2Cmz2X`c|EaQBi-rw<>V`kxysm^y|hSn__5qZSK1q(X-4A9rv$Ue{@da z`+6<2AhveZgSW?GXXmjL9bR-#?|k&uy8%qr@+BMHxIC4lxi%bL^h?o5o~P7LrgqA` z^qGZKufM<8caJ3nlLFNU8`nBoZW(=WO12_Y!~Xs(FhpJH1m~{my5~q9f*B5*EMaO^8#H z2z5#GKGt?4SIlAuhgsrkY| zZvMyR5vQBj-g*1lt*|zA_ZXuk9}=~mT5dZOZJuK0Qlr`6Tod*87B@Z^i0d6#pV;(5{{k4^As?OcG=&YUUyXQh#!hN|eF7<0i{b%`{napAAYPO3-F4XGv_WjNx z*;~AJ{$+J~YjUl4Az!ZZrWpl$KW~!{%Wl3w2Re2JKHb zYS%{zMpWnu1TFH6|5vi5vA5AY#rS9W6v=fT{~mvF)V`sm_j|z7&F@a=f0y9-Z7b(; zz4`a6d?ucWn;Waj&&@u-k+Z17La=qMpWuby?=SW@PY6&u^5KxDB&);zEjN$8xcJLO z&`;D`x36Up`^kBwt9aYP)wv~jJ)ckFb@w^AM>()KIe;5f5AOkE7*9)GMPyYR8uJoV>T0Yetv>C&RywyZ;>dtC#n~u}^SoMbA}> zOShZ&`;@Ot(Y=;q@i*ddRPto!vJ8P$KF_%x^2^i|b?;YXH;$Yr$L{jxoc0#hXvI2Z zpTNsUIZK@izIT~zowzbt==vpn<84N5*=E@{-oLEdCCC$dQ^0LX&-S(;o2v5`3*FO~ zp1o}7|NVni`1I73%Oykl*m+IQJxx1(X{+I+b?bW)%S+pv$heeooIzRQip6UsRq_HNnKtemO^iZ_n2QPabmxRqQy>+U#z@Ss=uJ ztKwz%)6COsU(Z!fv3_Y?d?#c@;0Hw=#(4&Y{nwv4UrC8~a)|%7KV-VSg5O+5`)BvI z+MaD*KJ{zE;zuU2k&et9kF!5VFJUn>bK!CF{`jVxW3%Rr{A&tUhH72&R$cDV4&9u< zHKWYX#P?qGzJE`r?QShUpW`ies4RO*5VxmLp81tTk&j<1Cpw=i-9d_Z{ajtjpEfzVjjPVxf~tDlY3de;i&__~Y_9u3&cubynt}Yj11w`)(}w zdvl-O)j#$t-e&y2VDp{(S@Pi#oUhXa&yJciEj<;Xhrd>tXJ@WQVglO24<+ z6uo`Wx%$5Q*Pe}40jmshvx?ZmRn8@`r{VX`oxoMMawIp zsF|HPAJcQr7i+$e`26kcqC52+G5%Ke{emAdj&V<8cz8}oIAXro1%4I1#bM`bIXbV; zKeSLyCxg3ldP(Qh!WTza;%>+l9k3~7%bs6yar$Q?uV;5yazD##StRpj!n=J%26H)e zZ9cp*3vsNQS5~A@vT^d%ZMhvwe7NUn)*3V1OwN3@o7eq_QQzG5Yhs^ct{v7mIW7H` zY}dy(3@5@<;zVvWonvA=lfyL4XZ4+?q>72Qf>9s#W?1K?*zI_6`N~!E7e~x4{N-7* zQ1G!htCTL2P4FAZEk7S$TKz34KcztLcr^dhHJ(S=UT(@ec`9>jvd?wN|2Jbb?oY@x zkzvf^zQQ9Vb3^_5h&i5@cbJrO)@fP~btP%|WQhVv_sZ%#@Pe1n1I;p#tD|GKu>zJK0KHO}Y zy^`6D%a`X&>8|osEkDkvm>JBJm|6Kc=~mR58>ua^YD`TE+A4J~G(9ga=-O$c#JD1M zYdqtQ-D@qD_M8t%J9T&F`{NJX!WM7Pxm&3dQgCqZi*sR?)1CDf-!tK|Kd=2kYd5F8 zS)=TSdo@$DF8q!1HqblsiSywBe}}r|{(4$Bd7PTuW41^vlCA7dn67K3`b}+`y{_R~ zd+C>|DYK)zggcjCk~;h0aY~`-%ENOx1%7MzOCDLD|I$y^tt&$3yWM&9*9#Yj%+a6G ze8Mi0#m1if$AuFvwFwb>F08wH?*()2%D&85nfF$8?~XH(H2qm<7Q*V{ZMm;^5AUnZ zZ%^%dwCCgIe}@eOn6`_a*>mlo>4xU!84PN#9i)~E{V?yfeO&vT`{lOA2sZyKOr_p- zBCKtqlcJB9zL)>I;F1iJ(tgDk(T75RCtYeti=WfDe%@P~yN7kWziRT?^rd~1(p27% z8~ARuq}Pn?PG?hYZQPVN!(`3pqKWq9&x{f_ZDe5h6sV@Oz2O<>=en#A>xD&MOXM3C z_04~=WM^MsF8hI)egC!{mv7JAd_GvD%k6^hRugm6l7R=<^0kG@~-0lt(Hx! z`>FcZH&OV(g()-HqjEWaIV`o{;krLz^;X3sr&Vh1JU*N!_8;B$*Y5FUm6{Z{H)l1R zZJc^6mgTvh;rY6?U~$tvsa65D=}Y%6RxgUaArl>2UM(}5^V+(upJvN~zbW5;bV|6f z`D8%cjH29V!*d+Hr*GxVRbUE?)r|(aD$>kDc$$M(;a1M&X?; zWv^QsWPUGOX>spGYEhd`iJ;5>T}Hb<*i~I8`}AIM!P<-0G|PAB%I9`Q9P0dCzJF@v|GCdCC(pQPbINPSlruk7ygYv<_Ze|+ zPc9BRbiysa@1<|g2~HlKkM~)^6wiN3-0b^U^SF7`3xl&B3|m$mix$68?zWNbPUiZE zj_`Qy&d#0hI>oO?ZuvF0(I>6us8D0&>h6en%E5J^R|@8Q-El1l6*E6O%V znE5UKweijZmN~~-#eA*j&*$1@n-l3XS8qjPm}9%hiaJ@#KmQ)vxSG31|2_KbKuh*v zbNWSR7Cb5PLG`XUVS$@x)66P}>pSMO_vulHKy5h&8vU@+SGBCNa&aJ5^ zeChJP^O}#qt$_5OHfuR$q6M`&k2+{K>@Z!mCPUKMT5kCas}HL0*Ka)kw?(^nyMski z2hU&OD@%QIWEwA|yfzT$Q@JPEb#d<2g~z8p+9`KlFm~tK714UDnb@Hm3Bw#|4_00zT^e>$57Ab;o;Zg{7xk6 z7)_ehVzVSfKvv>5U(5HJ#Pvp-1Q;bn+PA$7Uv2e8=D<1mwVYu+X{(vH6ke^r z8ZD={`s8Vjl7kx+rX>5_V^LZaUf6hk?pBMxI!~K6HiKyG!{y{$&O2s9yh@A?AnP())D|XP6&0-aM#xukVkp zTFbcru9)*t_xNtS?KYa{?$KC!N71wP)jby-1 z3NDL>U-o*V*mrcpilfr3^>6=0++Mvh^2zLF^{W!Ee~WJmGdZ~J*QDm9va-?{)hhpH z{&X*pmSx$TFz3hd)r>J0*vkJceD&`L$M2vUh3tB5cW0JrDLr|%M9BDuh}nt!4xRNu z93^~5MeGkci+w0zTlnHzPTl*Ltrs^gu@Jne>AmT+M{ZI4VY9o@@$$bk7c|rQUQ&(YoI00S8tuw%c{hW?6K@hfVtzHav-3rN5f%0gKf22toc$ zZMsTRHYCQ_t8Lvrc!zWh3 zT*Iokueqo#`_Z)>YfiR@Z1ws6@@jg{e6{}%7wi#TwBgbeKYf#L&!%1dz44)VZoA~Y znH%4}<7D7-;Bd4#m+@}Z=UBa_3p03f|Li?+JXX2KTjsL5?HnE5wuiMpckhrruqVi7 zouq2PiXf(jd*_7oBw3p0O=;n<3lDpE`^L-1Au~QS&x|shefZ5O`R()P*uARQsw&c9 zz%ai-W?x3klMg30WhqXVeHNO2U|LJsbR}88Xwldl?ny$;FB@$O9nQ6f|8US@?cDp; zmgAyhK#lVfw=Y)}KUwbLyRI#J^`!rUV2j6JA|xAbI;=H(A5_}EhA-`X_)ANF4#IsE9voT41XtEc#^FDnIG+PqxYB|b;m;^$kD=D2e^ z8m-FaI?Eo(&)<{9bkyws=C3w}PTpnl9lO^0*WRv4THStsmCMcB{(s)Qk+7Fl)0~sW zV&y2y$Ne*r;Sl$G6S1yIKW9w17v*|lr z9nQNF%a=D4af`j$8**oY6#53=Xn>;X}Wy+TY zmh6_x*tD~YRb2uunk}8hOvz{4@5B2)Prq+j zBgN8n%j7iw=YqA<&HB~+*2_)L4LoPBv0(ZEcHz24H$g82&bvHQ7428?#McY?=HA+! zda-;lpVBYq6mQvOI7s3cvp0Wu!<#oJ~YiuztLft-*nUt#~hKM|7TxsX>)+({hIqXYnohppQhEeEOC&ZSBtc4IcgVW|yD0m}@NZeZDyU zP<@W_nKwsY-!>6w-#)GPmQlsM-tzogf?21d=3Izlk$pOI#melKlkwJP%*qqa-w0pE zG_P9swA-_kj-ZYW%i6A`H@!Ude_C6?lk($v2HUI+Ykq#?`_5M&eE;a(7uiiB6_*a2 zQ45fmw?e(@oxV|i`OBD?Sx;8KclmWo{?l*e*KZ~^@SDF{Y2CiA)b3(& zLGsFywDOBLfc`$gP#V`;Sz^t{>oySE}XFSW?5o?k9li!=T~P&v+uS} zCuUi`zIxd8^{0(x+tQW8b-O)5Gt5&UC}*xC9wy{;bD)m)^75 zHzQi@Li|Ge7dO+cwS*0#@?>%%yfWLBpvGr8L2X~SYyDs^Sg{gu~+tL}0?oOChgPC*4zSm&bI z-rDB#ebb*vx>eg~#M&|>H#JB<>dGx~o-lE_*ve%$Y%cShSm?`auOsUAg>!nCKD(0W ze1qNLt7N9IoR~1N;mnu6?_Zyv)4h2otjR&P1|_w(=PNAkakUpCUT;-39|=lW+xHn(kl-Fakm zg}Jyk-|<$wlTtP(Z$#BP2D2AxE_xzgpA;B)xT&tb6u(;3OqjLj|H)agUkkF>t3NPT zgsw=_5q=@_f1lB(FGdVY<(m#X+_o;|r_jM4=f3zzZhI>5NMeQ4(>qcxvX{3-Kf0;2 zeuGf_jOg3>Z;F#zSd8vguGN=5kWgItQ|_6)_MPV&u5CH5J>w+DgP8aC9eDn)2sXMG zWvkrstm^3hn;-Ux_nd!~f9gFy>(pKMZIZXmx%0S!qxkglxmAa={1sj;=YOxn%6jrb z?60lc(ziQsnms%=;WhD9>Y-fOAbqaue+S1u{bv= zG599e!#A>@YMuuwY(74Peb)l%9z#jnSwgqJ{+#tAvj5WD&Tr-(ng5P_XYLogDK;VW z{A89XQL?uKOjaMrHanwHbNRrVDr>ju#?pqT(MhIHF1HEJuMB#1;PKg{ zh=!PD5$8&OrDtTne#_^bqIMCvCpwg0qP)eA!9_^-_DerYIUd3MhW zcFDB60Un16=Wk=skIfF1($l-g!Yq=WWh7^j$)!*P9sMP$Ot6FNmwL(% z)mCJJGJJktz&ZWkwXS~4lP1&O{oT^Ck#WwmT=hAH8}w$c)OGu2I$hvX&$Wx2ro4S% z-5Ga~v*?JMT8TSfjQ8)CTl-mlrPc8qsL*0jo{;3Nd1A)ogi9qwPoGcx_N#tzD%XzN z_1hQer)8d7rmJ8wr`FImuu3%As!ck5E_0cz!;xcOKJJ=0_w1S!z2|pXWV#<8)Lr;x ziHvXcq{7)}k89M8}Ch)1IySJms2P6c_hJK0ilZ)}&8LCvB&ye=!gC`k?cM zXO8?!<3QmJlaD3u`?lqB72lR?b2_5szwDZ>yG(FT8LLTT#Ovb=chA_iLUVhW&^JDo z-d}Pp$CDR4PG_^XtTi}2RYXsyze6PN$I}C11@kxTjhfKA;>fHD>qiaJn(KD6Ji2h# zzaX-`OS^z~_C~pnGkLXN#$>C#x_sEN*DCT#-{Q;bo*h$mi+U-sn$_sT%Lh!Gzs_}< zmT<%D%f2ti?ClO#{VkMg&q^pTDS32!h5fk)iR-Hr_s@(7QEO10!V>yXw4^ZIdhz#t z=N~wv9-n^f%4C+%H)&H2Ge6{>`#;{UX8p|i^HKS0a+xNst)C&da@VS!Yqc$0OOnI7 zrc@PdE&9Ck%A(~db@p6UwlVPzrzCHB{J#HK^U$MPl07E>zb@j7y%%xFp>;!q>x)O$ zoO8uD%}qb^HG0RytzKswKUD5DDo(AMU)$iqS{D7>9VzKO#$nae)(0;{f9*ROw7&5-8l+;i&WzBf{C5ASGP{rFk=_Q}RV zTI39`-r=;@0u!^3AbMT5iLBt zc+KaGj%5e0&2v=B{W+x}SAK!wVRhdX_d|`|x!;`0C9Xb!{h;iP=WLZMb6P%2?bCg6 z^}=-PZC`G=%$K`(Nm`*V@N2EX%lQURcKd}%im7f}9-1K?$LSi*ZDet8k^AkIFVS1M zTq7S_N|)Kcv3i&oB>W?H!^twANr$ZF?%eug;r^LA`ZGQKwe}Xh^F4R+!ygOY{recR z#rUURIc+(m=GfndGduT*|LV!gT=Fuy@#(7Y&6nT(E4K_N(tG-TwMgOLd*+-ut7rdL zRkX`gUU1WO*|l8l5_enSt}K(MEP7&RuO0st8h-r9yE}K=cX8V+Z(a0B_<=~fzvR3O z<14?nKXT%{w%+<`)7{3-kFnc}!~9qkyOvDgSTW_tl2adxngSYGo9o^S*XCtJdR)3TdxuHPyv2Nx79I-?C(Wquk@mg5 zJAXz^`4joLeoX=951*nvmX_{g@9NL3yVS7lcW#lD&#b$_DktY?RGqJ~<$oMp+V?3k zxK`5rl6}XSl&KjxCTB|4yuYyEm&7hDiOI(&M&$o92osg_PcdS*h@4i;|D3ZpXlhKc z%EJV$bul>_e@)c6{ifLqoOctRykFz?Qi04;o!iHjXRO#azaaT=W}(Bi(#=X-;nDpJ z`zORM+su0EL&W@BUu#cmUpm-!Td&;ou;VwaYmNr~mWdR=k3H?JmJ$`afBY0p}Z|2aNCVsYTpw#PHhPMaP7^Ryf{vjOw( zmHhY1&I<0nZ27iv{fBiLeIu+QqTlczLKuM9A z;-f$AFLgKHnN!&z8a?r|x{5-kz*F8|Y3YY|zBT-7e_Zr}l)qiigT)Uc4|uP!T5+^! zX0v4TwG7?mq5}|U9`pahQ9nN+4RiYwu{O(uex>r*~W_1-*f-nKd_>}klWkr zn|b>Fi+rzNwQqfJGE@xIjLpOOy0gM zUwv`IM3e8@k)`VE)zmBhoHrK_`D^4+)cCdN&(YRgqwSxpqGOEucfM*-IB07karM{d zAAgt0?{_ZWm+w%h7ie&p*BRrzale zd%|k{oD$uSc|yxLrSJAKZwMB>_{Tn0bdvtRq%cppBYQ29D)Sd_T^kXeS2*t> z$@yAzeY@AK1=kAqZ3t#K$@gkcxb7W34mqwflQuDLNn$_79V@#uYY|I)NKMiIMO_&( zJ_jY#vwe3iJoUFguH83mUF`OCU-g(yM3*-1*t=}U33HD0pw>pE}n) zUXwrd^j4P>`9hk?nryV%H@Q?ie&v)Efzs}Zt^{__N=c`!K zbkE~&Z>XilO}eOKakotQ)MLx2X}VE5%dSt4J$m!ul%zuG(!ThU8ZRcf87=$i+Vo4` z<@SR~+0j+b`K{d&&R^uDTV_4Yd~q>-aW#+q?`2BQI6_JVR_!c)u_B#6sK`jFeT}%v z-E$5voiA``$g3%3-D}y}yy4F)$0NHIYo2~IW9|Hv&P>@<(6?bNH}%X!s9CE4y+GmD_AM?*#7K3GyAE8X@7TuYVbMRg@b9;aJI;Iu-xi3EdvZL&PmF;um!|E}L{xU~RZ}q=e z@n$j$o83O%%OB2a)(3B>Z|S)IExcfx@3yIZLVI+?+-?S>wH8k6&YYH4!SpIfeqGMD zTifDGHy5n4{~j7pIeqsQ#R#QE>+ZCkzqN$EQ~)sy|j4s?zx-(u6-?21s=); zPXC{jnHD_3KEZTHfra=Qwy*uiK7CrU;qb}1RX@I5y5@1Xcx{Yv1j`ql^y2oPJ16tZ z3%vPh)g;x+Ro^R|6;^y+opo*HBe~PMc6@Oe^YUN!-=25B*@xLZ`YWT})(LAnJJLN> zcz^xYn0aZMe%qX*vwnW&mY7&_kn@#UO!b<*6=4C-a+^1Xv=kZ~(>c6Y{hB~{Ap0Tr zzp_>$XJy|_tu-}qFl}w)Ub8UI!zS6bWsf3%`>yuga;15H_9%b6S|P(NR=DDG^|kz5 zu|+x){@pzuu4nebFki*5c+>gfd1BAbUtm(%p!fCU@sen%rkb#)lZ|k9~H{&((_X<7M;=S2`XACroQOKKHu#>CR<$3ss0Czk!-Vc?o-+hv&KzW3@1*_Z9c&EL1Pl*b zzdiQuQb>4m&Yx;YZj&meO~pcWk^9XTs-CcRco>$jc;>@R2c5i1UUxF2nQ48!So^-7 zdGq^pZ|%k(K2BecGbl9O4CDKp)$4inlf?5VF~fNZS&QGWKR<3-xYlUNW|dEx@*x-M z8cY}Z|M7U$DH^BxgyHgxaNV57o9-F^nO-c9U#Q65lqAq#<9h6IUUA6M=tsYtEt5N| z6K;RsKj)=V#y+!>hW)ko6O5+aoOPdT>vn@6?+p^-`J11-J8m_#JkWmA-`IW5Ulk1c zwd+o)SuI(9I7vm7#Xsu3)F%`Bx|4h#?ucJ?*L;|~IkPUcyyxTz<+trpWmnh(Jv0Rs z_nf-^`{m-DM~&8=NV{|PfzMy_txDg&9utt*5U#t9`Dy9g%UeFYuUHxPA&Y62^7pOZ z%nCM(`kwllGCkf>QAki}wo}8_Ig1bJeE<1pEx(NrXZ+Qox52kUSoH6B#XtQT(DJd# zeeVYouP^KCrt)*2X1=b$Znf3u)s}>xr^F?;raE4{bXY~j*;{IG(sdZx4 z#++)0W-c$ehezi*y~%KPKk^}TUCiG83!mJJDl`p$l}vsi`Jr`x-oZaUIy+cY8wJxl zw;x^*>hG00xsPK?(E{$TJ#N=s7?d||zgC(gmHsS&>+k|zJ#M~l1rtQ3xW+EIc8J4* z_r|~Z4ALP+GeZtAZTfVGw?=es%GssiJ4-YEJv8_%^jz~zn)mii$0`gMcUex2G28R# z({)bqpi7T#GJOAXBhu=j_4ItH^=sxyKCV&RAk6O0?YLcV*{2=8TNr}#K1eNob)L)B z;>gTj>yw#QpZfJlV>P4WGxJkgxvSIqHrZZu`EY;BiJIB-<$Bz6uGN^ouD3d-ayE}! z+5GkC1wQ3HZuc$o55&!o+MS?%7JSD^jrNYbvCm!AJWd*V?&PqDPz#(16Gw)fiF?H8Yz z?cFA`$$zgcZ({S_H9zL8+{ZoTzvmC-Q!iwHUArc*OUB0}>A?*-zOVE8v==XacIIEf za`rP-p&?eW3`g#t+Hq#hk9QY3ey90`Ty(d2XCS|p(@=NcCa2?*PxfuU6pT9Z3-|_y%mtxC3j<2dL{?DYza?1Sh)2>BE zlP^fEZ$5D*bDDh8&NUIc7M6$A<_5n%;Ag`*i+#n*tuvQ#o;|tbq>f5MkZ7XF|5kA1$` zoe;U@{)rmBKZ?K3%x);$5n5=eH1mj!z)9{5qpN2-@}6pck7Es*nDOW8bWf{g#m81& zlHDw36xha>x>tua=8aH`s(%U-$IaBFlkZznqpRGODo;9oOGJ_TFr1|96B> zWO%t{-hyc@0dJldt3G{ss>;N2Uzv%})i);|nf>Us3NG6i+U5QyLUixBnv(Rrh8-^J zza+*BikY$fXPKaLR(fGeeAlnD(us{>d3WBg`u-~arP)?Zfi(};eX(vy%0F6PzEUSA zdB4xLInxDpC~ETseRsUJg8g^(raAmp$8#!J_tl%{o``1ptGSgUx;1c3>8*QDfBa8n zKgP5FvEct2{ZFQnl^3}zn*Z@1tD5a{+*?y>C(rzEm%kYI#yk+q5_%^7wm8K3&w-6C z2abD47{8tPX!4RfaaV+OkG1UIb?MN?;&Zoe1)Tk}#X0!ykH$iH<PN{%bJNFis6P>-Hf@^2Bo=!1KTU=4OBvSc)^pt4}O&XOl zzd5Nzvz;vXG0l2fXxfB#yNJnlH0+~&D9ZR-hkYh}SDogZhgwdD9m zho8z|uv??EYg&tn>+3YT?heV{Gi!DjMFp(USe7c(C)OuS=tkhj*$!}N>t+W_w+Y)_MV10EXWd^`GEK6d|y?Gcf!CCjYBd*3pq ztyq}8PSuzznsw>J!yCjeJDSW}{=t#eHTAzx6H9T-y`{SgeVN4P9BwaMmVI|kLi`Gs zYYv;vy*2WeKE~i&zw2PsxvAuQ2tHjN?W9y}rmdCQc z>F(hEx+?SV@4XRCN{MauqE~X)dh2NjKDGPPwc&V1BO7b-yAH3Ss%!70H-740wsgnV zjY&qnF?S31hqi85)m6IX-0{_)lUfpNEe^%sIrXH^vd3XtDW9ZAKlbyZs)6y7Y) zz`EPlBTV^8z=n2-sR5^Z8^jYuw$$2LMH*;J!$YxL~4|CTk)ytny8x>)+lgOkOJuTJ`7nYi0reIHX<+GkCH@B=w6?xOmP z&i{%U-(2I`tmL;ylbJ)ou3Ez9ESr&vx3TF%zWy6e9z0l8ae+<6=_~8C-M&*grVHCo zJKIX3P~V&5X^7RP(!@}lQg7FEuP`f|(kiH-_KeYfa*rF_AE zaSb0Y*!P~9;{WJ`a-7$Kniog;cOJ@g>r!z`mh_8aetxHOQ~t@4Z!xcRt&Iz$qXKU%Jf2y7o`cmmBBL%zjs?Y0Yp?w&Px+ zQfRMZb(i0Jozf}i0~8kKYB89$m2+y&nR}~m=9(0a@UF!tXRZzYVem?{)GqX6oM!UJ z70jXBIjkl18=d2gp60rpJ>V6`7-RElet}hVY}MKq!CO?UzVx-;++q}J+TEQX#S~(2 z**f5ov{;((o)Zd(H$;5c@B1xF{fkxc+UD@xX^D4a`>$P*5^mBgVDqV6d)09c*Xt{l z|E3mPR|_a~{m;I*XSsH(%&x}tT`zcBRl@dFpEf*FJ8RFbCo1YTrn_&c7`9zd+iKy= zA@6L_5nRas_QuAklB{bynci9ob($COyBwT-?E7l{YKEIC)m*((PYUK1UKRflcSrCx z^GcOz(GtN7O|rYssdmLi8JpQjy>Ru76z6YMTK+74@mkH&8_W})^wqpPQ@~NgD$jTG zj(Er#wi>bUQ&A7Smj4rcwO)|hW{2txrKw7W>R$Vgacs>l`Z%4}^G1O5#fw5;oQ^pz z>UT4GVK?uX=RF%Wk$X;8b2#N!PyBdd{)bHsHE({G#r3^be3t9})Ly;&@BI9)U4Qo4 z-e6;Ct-h>sg>TLQyInoIRn5M8-CE-Py`$!wsBCIu(TBVTIXd+(Ja(k@J}cwB@$L|- z5N}p%&2rdj_NFIO?=*1mzP6ty^yrp(KLf|JJ)!M}3C~~NnD*lP<~x_# zn^tbUlot`p{AdSb(_@XFNUc=(ziw&i@lfXX~VvJkqq8(Y;zmr_Wu!x_NtCxeEA}`#O2=Gze41{uc=%@M&la0qC-ooUUE&y zk-mO&QINw&*^v3(&TQ{EIHyz|V&9kS^q*7B^UITeir&(vSdaUu=$GGnf6m9~#o?BV z@3SI#ERH12(TsQa{3OGE!Rc0s6ADrO+eCeYV_hHL|HHR(!hKcOu7@TY-2ZXUe$VNr zu~3cCs*@>2vA6!=obH2@pPuwr)vflKm+HLGAvNl4bbw%Q{`TLBCr*@|ep>0WaQ7F^ zA3Amd`9VSDc}uPuIJI4GdM7CHGvOxFPUr z@1o6@BfPlZsIPH}+nv2;m5skj?}?9U?782jy;yRr&#!dys%tXlg){y+DISgJY4{T4 zIqCC?_lp%iirh7oJDq>fN~(1~-%>S`$eVU99hzG_b-V(uI-Ixvm}w-oVwIY!#LX`% zGetgKa-Dm#&&VSyi#&Zo z^1v@gN%Oc$zU6i6SpH=$IxNG~ru%^HRabiylU&D|zP# ze@Wlyu+*es9gE8vMuiN^7M&A^Y|hLn(t9vv%fCxao_^_08{R&4y4B@kyUX#H%Erra zACeso-fwt>z;Ob8k#2)LN~1NhIDq zi=q8gT*ecr^^g8>OQW=v08b~Me$5e{W5l}Ww`Lop$_Plp~ z7KKWi?8mRhOjCZJ4|uFZS~$*O^5c%5Otm zoAga=_Qx$=q~Kn-t#5W-WKZOkSe-|lA}30G84^}pIpgtk&Iz61$n8x>*mD=XYk3^? zExytCv%weEGi5(CmY-#N(Vrt1eSLdF#g~&y;@E36LhN&TB@P8P)Ll$2_;lj%wzlgL zQtSCXxc(NY+0>)@U;ENdt0i6=-5pLG^IgfZ^B3RGz4zWfE`Cq2J91M*x%12snFwxX+ix*XP8GF=?btLq&wA;U@WV40&iuH4hV{3}7eSS9 z#a-s-7IYunrE^5{(}dqEBTarQ{?ihhq_S*XPbrG%K zG)(Olt9~ijT9m34k##vNmG9l9BgyO6u2HgWj$XyfDgMXJcPZ2BFMr--Whv}FHhaO5 zvU; z8Q1JrxpVd7n#X5$&F(fh$sjw=Lnf!jZF#=&Vw*#U=SR#)WDD7y%jYOF$6$v0r_AkH zZN|;)%$@gE-qJr>6aK!)I#!3ZYC+_GrsI=tue+7E`|Y(E!IG!W%)c~K*zudD(dqz^ zS$~4(Og8^2SaIW$S;zaw>wa^x{GPi0N7{|%yXS*G`5E&X**=+Iz9?mX`L}H@0h?YW z{MoEh)wuhA*`7rajPf@+{=Z?EB5+4x+P9loVLj&`=k)*l;<;LY>nX>(A4ahqs-KgC zH`Gl?5?GMKWKj0{<&2d7yEo)Eofc!L=u>wxx~uxEV(*b1)rnC{3+GRG?%{EJ`i(aV zHbFa;-bL`Wt6D15x<#KamY-;G!0LeG{f^8p+NRq!rfv~JRc&BL`Woy)klbbS=B>|fniN6L#UyGqpbGp8gg zioXrWC=llOyhnCpM@L_qhos~one)p&ZD0A8H{{>xBb;fo`mADVmmW3W^dsGIaVLv) z$@Grvc4jdf0#4O9Jh9DeDL`OKHujDN-6Q~UJzZRbyIt~$N#%h#;A^JLl@jkcTV>IgD;B{GB4-+TLPXQ1vI{%9)_6cT9 zzq+66&)$2*f6g}EM;tB{7Z0uaC9B4;&dS2{nL3a4q3hieaS4yqf^`x^+SdKhV?TKQ zqH@lu($rw<2~g-WE^0HPI*Uc6Vdm9M$-#_ZLWP6c@Ts`sSMEir9>U zRi)~4`XtUXXn(&GbWP}CgV{Z%6_ZmAJp1kSWbU0MN&4Rl^&@1%zDu4FP+FnZeW`@~ zTyg1UwwKEv`@Pw8INM=i;eYnEpE8!!^K3c2%i&VS?3tXqi_b4-G<)Ezw^OA^;G3Jt zDFeIsnY;DH`9iv8d{O%z%ObSEzT+TQ@Kt{1%yWBrBHyn%p0VrDIfM3#`Jux1w(d1E z+`s(cdzQdy(_OQkckB)cnksPc=$Y43-|c)D{pdy5tEUei1&SmbEqmp*EJL~C;PUK? zk)LijpWu2{d@uTw?Y6*6`>TCqtwk1xWqVgnHTiSI{KLv-<^1Iq=S;V)-1*_*W<^Hv zZRhzSlJ8vI%(1U1>vqQ4+xcr$R360ChnLJaxUcPS(BnA8-u2eXx5}ii7{9H3u=r`h z*)FlJvh~ab#oO*Vy%5!!`_`&i;Kr*?)`{Orzb`Ekxcgx7z4b}TJ9s(%SY9mRJ-^z} zM8oj;yFCY34yBhosXg63>+^Je&##q5_G!(}oNj5z&8pBpx$x&q$u4EhP4krXoxK2KltN|JNMVVX6v={-mX?@j>!J>k9$UZ{TIz>p`7E{+*AHo zWSiPPIGUZfMkjUJn&_bV$1gS3^qDrln0+F}U(2BP{8FX9io&%Gi9fbhdT#N&pOz8U zp?<;S?gypin_uoYGHJ?7Z#mAJR_A{8&)XS)!P9w3uF8a^Z(le&=FW4t5xcrI(Zk<8 z?EU`3wfA40e!F#=e(>@0%O~AfF=6@9f2J;<%65G@d&Obew!ho8Jr2aIZ=QQn8%HtoO_14u)?cerJq&rS;U)V&&g<68Mbeg12UuApg`9Nv) zUA5Os_V!l2KKU_hMaj=HW`WRr~Dsn{W|@t#Jig{E#2Q|N4A+b*`GPKHh#f;KcPw6-P`KbP0pCTJ6-rr zdEVYFoDEA%A69%Se?D!w@Ew!tDsID_cW%0MscPuxI~$AVrR;J4$Xb}tnx%VrZ(U%t z!^VUKH6`2Qceq|p_AWTMWIA(?)Kh`?i^U|2{Un!Ui1Ysm5w-1k@Y3VL#Joo_s=gT< z5;wN5`@QytPn`CrI*AXaHs{~7RM%Sl;LyC|@JIW-i`E3L^P0Ru0hJ01!~|3wN;a{z zF>X3?aP6y(U`~TD2g63D4&J$6SmSm-KJ@kXE}cc8-beOJ{$Pt;qHJcow{GelJyZQf zi(=ZpPT6@v;8o?Bz)iQ8Wv*Z1@a1{n zHpMByeI>EzBejXl}+7$ z&*{tJiSugKaai$xS(C}a`kiHg;SZrr51bl~8P}|ze_*xGi@gQ$vunfeUYuIBAWXl} zu9|bYudtsagZIQV@s|zLOf6V<-#5JZVEZX3pt(QxMjV=qGm@atBd$H6N8>`9b5OqzmD%X@;UVK zJslM@`P`(YNXD~02R(MokS$4XsBJRVA<?6Rh}Fltp9F4NuT5T3ZIIX390*gf{S;!kJjet%r@|Eqg2&&^#Prdmsu zKE0|_p)|jRMSD`7Fb4>l{O9$a}uVqM;zdvBEG z&N?;imDz9S;H8u;ceVfPqJn*Ux0E}6sr37O&Sd)Oi$4tya!bf_UVLyYyjXDa%|I7=N*WNI_@hhsGqb25v+Gc}I`bW>7^O?^4 z!{_uNFCq4X>;ir!Io5K+gH-4TbRjwKTI>Pl~Uj5evwl_2c zPfM)mOiWzW;OFwYdf5V_3)_^h`%hVY)beA6w3LdW^OVLWVxnf=@uKh&wu-j zzMYPXyM`Xd`*@}{?9g%8C+h!qnQ7^2)_Y$Xs#hv6>UFrtP`dc`twvMB z^b4#Fwzabx!d~4l)oy#p{waHrUxHJ-6WgVRxv>gtHaGW}IGKEV98la}Qv7%KYY+J+ z>uzky3h|C*eE;ll53`Akw8LAwl{GtLjw)=N5|z18@eONJHoNq7e$#gx*Hh2tCVbqi zs+c(EtgX?RKb2NOm1lM8nAdOJ%uo|DHRRA0H+2WmZ4$1w9!6C+W4S+ny8nxT;b2|h zZe2gSsFK--^D_2LH<%=Ut$v11ljBZFt0{lyrli`{W~|@7HS6}>TNhW0MMg|=xqt7# zE1B7c<}tEwx!dtkBR6PSR@Nqq_)vAv=Zxo?W2{fOaok(5{&;JB`EytG5TCAo-(wm) zIo?@ITM}0=yv)kbWDPs+%qC-H)}qMW`Adi~(;;(We#Zj?tq%FJfS+{^4eh+Qw2BM!C%c!TmYD7o3apzG*C}h%c!aEQ z`mf0p)X2H2`pA?6(Z58in$=lZ-KSZd<*Zk#xz%H#RDXY((MFwPn>btqHiv$idA9jP zw&1FoLo-ev7xg}qK6%ZL|DjWy`jtvJbUdb|D9#e!GWTzX(mwOnDsIyadJo^;IM6!Z@f%f+$Czi&|So|@{JUeQeOz=5RzA(x23qra@6_(oyZc;xLD08iMmB7!Q z+YkDm9#xtAHgd)6-CPz6W%hk~{AJ!j&4=IWZ5Kc4ayFgBF(Ea3>74`izb%~P-Ip$N z{qgN+w(hepYwSY{ZwotnojCQoa%*Dn*~eKt&xPZgs%3h#cIm$C{&nHagYGZ-%=1)Z z^?21Lo?37*XHLhd@}-mXZg75Qn6i>#%ho2|i8p5^2CDiz@+h8`%{Jv&!q*#CP3LPj zH63uA@#rsyq*$$3;_dlN74Mi1rQEkTSP-%_xIBxg?xpIhxZr!boGEqUmo+Q9YA3$B zX%|pBf3ul@@lnmTtPHkaEQ$f5DdlV42+J*!yKAv1w2LJ$d#c_13+InzDDD0fc1rr< zr@?JnLB0KZF6?} zB{fZ4>;<07r