From 2456b50950b55f22bf930e67cb6cec7af7bba0c7 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Fri, 24 Jul 2026 17:08:12 -0400 Subject: [PATCH 01/24] Add a TTD Behavior sidebar showing the API calls a trace made Extraction is done out-of-process by a tool built on the TTD replay SDK, which sweeps the trace and decodes each call's arguments against Microsoft's Win32 API metadata: real arity, resolved strings, symbolic flag names, captured buffers, and [Out] parameters re-read at the call's return position. The sidebar loads that JSON report, or runs the extractor itself over the trace the current session is replaying. Double-clicking a call navigates the TTD session to its position. Part of #956. Co-Authored-By: Claude Opus 5 (1M context) --- debuggerui.qrc | 1 + ui/ttdbehaviorwidget.cpp | 779 +++++++++++++++++++++++++++++++++++++++ ui/ttdbehaviorwidget.h | 191 ++++++++++ ui/ui.cpp | 13 + 4 files changed, 984 insertions(+) create mode 100644 ui/ttdbehaviorwidget.cpp create mode 100644 ui/ttdbehaviorwidget.h diff --git a/debuggerui.qrc b/debuggerui.qrc index 4040671a..7bc275ca 100644 --- a/debuggerui.qrc +++ b/debuggerui.qrc @@ -26,6 +26,7 @@ icons/ttd-calls.png icons/ttd-timestamp.png icons/ttd-events.png + icons/ttd-analysis.png icons/ttd-back.png icons/ttd-forward.png diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp new file mode 100644 index 00000000..38adbdcd --- /dev/null +++ b/ui/ttdbehaviorwidget.cpp @@ -0,0 +1,779 @@ +/* +Copyright 2020-2026 Vector 35 Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Shows the Windows API calls a TTD trace made, with their parameters decoded against +// Microsoft's Win32 API metadata: real arity, resolved strings, symbolic flag names, +// captured buffers, and [Out] parameters re-read at the call's return position. +// +// The sweep itself is done out-of-process by an extractor built on the TTD replay SDK +// (https://github.com/HullaBrian/ttd-capa), which writes a JSON report this widget +// parses. Extraction takes seconds even on large traces, so it is not on the critical +// path of a debug session. + +#include "ttdbehaviorwidget.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fontsettings.h" +#include "theme.h" + +using namespace BinaryNinja; +using namespace BinaryNinjaDebuggerAPI; + +// Settings key holding the path of the extractor executable. Registered by +// GlobalDebuggerUI::InitializeUI(). +static const char* kExtractorSetting = "debugger.ttdBehaviorExtractorPath"; + +// Values wider than a table cell can usefully show get elided here rather than in the +// view, so the copied text matches what is on screen. +static const int kMaxStringDisplay = 96; +static const int kMaxBytesDisplay = 32; + + +namespace { + // QJsonValue stores anything that does not fit in a qint64 as a double, so pointer-sized + // sentinels such as 0xFFFFFFFFFFFFFFFE arrive rounded. Clamp instead of letting the + // conversion be undefined. + uint64_t jsonToUInt64(const QJsonValue& value) + { + if (value.isDouble()) + { + double d = value.toDouble(); + qint64 i = value.toInteger(0); + if (static_cast(i) == d) + return static_cast(i); + if (!std::isfinite(d) || d <= 0.0) + return 0; + if (d >= 18446744073709551616.0) + return UINT64_MAX; + return static_cast(d); + } + return 0; + } + + + QString formatHex(uint64_t value) + { + return QString("0x%1").arg(value, 0, 16); + } + + + QString escapeString(const QString& str) + { + QString out; + out.reserve(str.size()); + for (QChar c : str) + { + if (c == '\\') + out += "\\\\"; + else if (c == '"') + out += "\\\""; + else if (c == '\n') + out += "\\n"; + else if (c == '\r') + out += "\\r"; + else if (c == '\t') + out += "\\t"; + else if (c.unicode() < 0x20) + out += QString("\\x%1").arg(static_cast(c.unicode()), 2, 16, QChar('0')); + else + out += c; + } + return out; + } + + + QString elide(const QString& str, int limit) + { + if (str.size() <= limit) + return str; + return str.left(limit) + QString::fromUtf8("\xe2\x80\xa6"); + } + + + QString bytesPreview(const QByteArray& bytes) + { + QByteArray head = bytes.left(kMaxBytesDisplay); + QString hex = QString::fromLatin1(head.toHex(' ')); + if (bytes.size() > head.size()) + hex += QString::fromUtf8(" \xe2\x80\xa6"); + return hex; + } + + + // One parameter, rendered the way it reads best given what the decoder recovered: + // a resolved string beats symbolic flags, which beat a raw value. + QString formatParamValue(const TTDApiCallParam& param) + { + if (!param.str.isEmpty()) + return QString("\"%1\"").arg(elide(escapeString(param.str), kMaxStringDisplay)); + if (!param.flags.isEmpty()) + return param.flags.join('|'); + if (!param.bytes.isEmpty()) + return QString("%1 -> [%2]").arg(formatHex(param.value), bytesPreview(param.bytes)); + if (param.hasDeref) + return QString("%1 -> %2").arg(formatHex(param.value), formatHex(param.deref)); + return formatHex(param.value); + } + + + QString hexDump(const QByteArray& bytes) + { + QString out; + for (int offset = 0; offset < bytes.size(); offset += 16) + { + QByteArray line = bytes.mid(offset, 16); + QString ascii; + for (char c : line) + ascii += (c >= 0x20 && c < 0x7f) ? QChar(c) : QChar('.'); + out += QString(" %1 %2 %3\n") + .arg(offset, 4, 16, QChar('0')) + .arg(QString::fromLatin1(line.toHex(' ')), -47) + .arg(ascii); + } + return out; + } +} // namespace + + +void TTDBehaviorReport::clear() +{ + reportPath.clear(); + tracePath.clear(); + arch.clear(); + sampleName.clear(); + pid = 0; + calls.clear(); +} + + +bool TTDBehaviorReport::load(const QString& path, QString& error) +{ + clear(); + + QFile file(path); + if (!file.open(QIODevice::ReadOnly)) + { + error = QString("Cannot open %1: %2").arg(path, file.errorString()); + return false; + } + + QByteArray contents = file.readAll(); + file.close(); + + QJsonParseError parseError {}; + QJsonDocument doc = QJsonDocument::fromJson(contents, &parseError); + if (doc.isNull()) + { + error = QString("Not a valid JSON report: %1").arg(parseError.errorString()); + return false; + } + if (!doc.isObject()) + { + error = "Report root is not a JSON object"; + return false; + } + + QJsonObject root = doc.object(); + if (!root.contains("processes")) + { + error = "Report has no \"processes\" array; is this a TTD API call report?"; + return false; + } + + reportPath = path; + QJsonObject trace = root.value("trace").toObject(); + tracePath = trace.value("path").toString(); + arch = trace.value("arch").toString(); + sampleName = root.value("sample").toObject().value("name").toString(); + + for (const QJsonValue& processValue : root.value("processes").toArray()) + { + QJsonObject process = processValue.toObject(); + if (pid == 0) + pid = jsonToUInt64(process.value("pid")); + if (sampleName.isEmpty()) + sampleName = process.value("name").toString(); + + for (const QJsonValue& callValue : process.value("calls").toArray()) + { + QJsonObject callObject = callValue.toObject(); + TTDApiCall call; + call.seq = jsonToUInt64(callObject.value("seq")); + call.tid = jsonToUInt64(callObject.value("tid")); + call.position = callObject.value("position").toString(); + call.module = callObject.value("module").toString(); + call.api = callObject.value("api").toString(); + call.ret = jsonToUInt64(callObject.value("ret")); + + QStringList rendered; + if (callObject.contains("params")) + { + call.decoded = true; + for (const QJsonValue& paramValue : callObject.value("params").toArray()) + { + QJsonObject paramObject = paramValue.toObject(); + TTDApiCallParam param; + param.name = paramObject.value("name").toString(); + param.type = paramObject.value("type").toString(); + param.kind = paramObject.value("kind").toString(); + param.value = jsonToUInt64(paramObject.value("value")); + param.str = paramObject.value("str").toString(); + param.out = paramObject.value("out").toBool(); + param.atReturn = paramObject.value("at_return").toBool(); + if (paramObject.contains("deref")) + { + param.hasDeref = true; + param.deref = jsonToUInt64(paramObject.value("deref")); + } + for (const QJsonValue& flag : paramObject.value("flags").toArray()) + param.flags.append(flag.toString()); + if (paramObject.contains("bytes")) + param.bytes = QByteArray::fromHex(paramObject.value("bytes").toString().toLatin1()); + + rendered.append(QString("%1=%2").arg(param.name, formatParamValue(param))); + call.params.push_back(std::move(param)); + } + } + else + { + // No signature was available for this function, so the extractor fell + // back to capturing the four argument registers. Show them positionally. + for (const QJsonValue& argValue : callObject.value("args").toArray()) + { + if (argValue.isString()) + rendered.append( + QString("\"%1\"").arg(elide(escapeString(argValue.toString()), kMaxStringDisplay))); + else + rendered.append(formatHex(jsonToUInt64(argValue))); + } + } + + call.paramSummary = rendered.join(", "); + call.searchText = QString("%1!%2 %3").arg(call.module, call.api, call.paramSummary).toLower(); + calls.push_back(std::move(call)); + } + } + + return true; +} + + +TTDBehaviorCallModel::TTDBehaviorCallModel(QObject* parent) : QAbstractTableModel(parent) {} + + +void TTDBehaviorCallModel::setReport(std::shared_ptr report) +{ + beginResetModel(); + m_report = std::move(report); + endResetModel(); +} + + +const TTDApiCall* TTDBehaviorCallModel::callAt(int row) const +{ + if (!m_report || row < 0 || static_cast(row) >= m_report->calls.size()) + return nullptr; + return &m_report->calls[row]; +} + + +int TTDBehaviorCallModel::rowCount(const QModelIndex& parent) const +{ + if (parent.isValid() || !m_report) + return 0; + return static_cast(m_report->calls.size()); +} + + +int TTDBehaviorCallModel::columnCount(const QModelIndex& parent) const +{ + if (parent.isValid()) + return 0; + return ColumnCount; +} + + +QVariant TTDBehaviorCallModel::data(const QModelIndex& index, int role) const +{ + const TTDApiCall* call = callAt(index.row()); + if (!call) + return QVariant(); + + if (role == Qt::ToolTipRole) + return QString("%1!%2(%3)").arg(call->module, call->api, call->paramSummary); + + if (role != Qt::DisplayRole) + return QVariant(); + + switch (index.column()) + { + case SeqColumn: + return QString::number(call->seq); + case PositionColumn: + return call->position; + case ThreadColumn: + return QString::number(call->tid); + case ModuleColumn: + return call->module; + case ApiColumn: + return call->api; + case ParametersColumn: + return call->paramSummary; + case ReturnColumn: + return formatHex(call->ret); + default: + return QVariant(); + } +} + + +QVariant TTDBehaviorCallModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation != Qt::Horizontal || role != Qt::DisplayRole) + return QVariant(); + + switch (section) + { + case SeqColumn: + return "#"; + case PositionColumn: + return "Position"; + case ThreadColumn: + return "TID"; + case ModuleColumn: + return "Module"; + case ApiColumn: + return "Function"; + case ParametersColumn: + return "Parameters"; + case ReturnColumn: + return "Return"; + default: + return QVariant(); + } +} + + +TTDBehaviorFilterModel::TTDBehaviorFilterModel(QObject* parent) : QSortFilterProxyModel(parent) {} + + +void TTDBehaviorFilterModel::setFilterText(const QString& text) +{ + beginFilterChange(); + m_filter = text.trimmed().toLower(); + endFilterChange(); +} + + +bool TTDBehaviorFilterModel::filterAcceptsRow(int row, const QModelIndex& parent) const +{ + if (m_filter.isEmpty()) + return true; + + auto* model = qobject_cast(sourceModel()); + if (!model) + return true; + + const TTDApiCall* call = model->callAt(row); + if (!call) + return false; + + return call->searchText.contains(m_filter); +} + + +TTDBehaviorWidget::TTDBehaviorWidget(BinaryViewRef data) : SidebarWidget("TTD Behavior"), m_data(data) +{ + m_controller = DebuggerController::GetController(data); + m_report = std::make_shared(); + setupUI(); + updateStatus(); +} + + +TTDBehaviorWidget::~TTDBehaviorWidget() +{ + if (m_extractProcess && m_extractProcess->state() != QProcess::NotRunning) + { + m_extractProcess->kill(); + m_extractProcess->waitForFinished(1000); + } +} + + +void TTDBehaviorWidget::setupUI() +{ + auto* layout = new QVBoxLayout(); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(4); + + auto* toolbar = new QHBoxLayout(); + toolbar->setContentsMargins(4, 4, 4, 0); + + m_loadButton = new QPushButton("Load Report..."); + m_loadButton->setToolTip("Load a JSON report of API calls extracted from a TTD trace"); + toolbar->addWidget(m_loadButton); + + m_extractButton = new QPushButton("Extract..."); + m_extractButton->setToolTip("Run the extractor over a TTD trace and load the result"); + toolbar->addWidget(m_extractButton); + + m_filterEdit = new QLineEdit(); + m_filterEdit->setPlaceholderText("Filter by module, function, or parameter"); + m_filterEdit->setClearButtonEnabled(true); + toolbar->addWidget(m_filterEdit, 1); + + layout->addLayout(toolbar); + + m_model = new TTDBehaviorCallModel(this); + m_filterModel = new TTDBehaviorFilterModel(this); + m_filterModel->setSourceModel(m_model); + + m_table = new QTableView(); + m_table->setModel(m_filterModel); + m_table->setSelectionBehavior(QAbstractItemView::SelectRows); + m_table->setSelectionMode(QAbstractItemView::ExtendedSelection); + m_table->setAlternatingRowColors(true); + m_table->setSortingEnabled(false); + m_table->setWordWrap(false); + m_table->setContextMenuPolicy(Qt::CustomContextMenu); + m_table->verticalHeader()->setVisible(false); + m_table->verticalHeader()->setDefaultSectionSize(QFontMetrics(getMonospaceFont(this)).height() + 4); + m_table->horizontalHeader()->setStretchLastSection(false); + m_table->setFont(getMonospaceFont(this)); + + m_detail = new QTextEdit(); + m_detail->setReadOnly(true); + m_detail->setLineWrapMode(QTextEdit::NoWrap); + m_detail->setFont(getMonospaceFont(this)); + m_detail->setPlaceholderText("Select a call to see its decoded parameters"); + + auto* splitter = new QSplitter(Qt::Vertical); + splitter->addWidget(m_table); + splitter->addWidget(m_detail); + splitter->setStretchFactor(0, 3); + splitter->setStretchFactor(1, 1); + layout->addWidget(splitter, 1); + + m_statusLabel = new QLabel(); + m_statusLabel->setContentsMargins(4, 0, 4, 4); + layout->addWidget(m_statusLabel); + + setLayout(layout); + + connect(m_loadButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onLoadClicked); + connect(m_extractButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onExtractClicked); + connect(m_filterEdit, &QLineEdit::textChanged, this, &TTDBehaviorWidget::onFilterChanged); + connect(m_table, &QTableView::doubleClicked, this, &TTDBehaviorWidget::onDoubleClicked); + connect(m_table, &QTableView::customContextMenuRequested, this, &TTDBehaviorWidget::onContextMenu); + connect(m_table->selectionModel(), &QItemSelectionModel::selectionChanged, this, + &TTDBehaviorWidget::onSelectionChanged); +} + + +void TTDBehaviorWidget::updateStatus() +{ + if (m_report->calls.empty()) + { + m_statusLabel->setText("No report loaded"); + return; + } + + size_t decoded = 0; + for (const TTDApiCall& call : m_report->calls) + { + if (call.decoded) + ++decoded; + } + + int shown = m_filterModel->rowCount(); + QString name = QFileInfo(m_report->reportPath).fileName(); + m_statusLabel->setText(QString("%1: %2 of %3 calls shown, %4 with decoded parameters") + .arg(name) + .arg(shown) + .arg(m_report->calls.size()) + .arg(decoded)); +} + + +void TTDBehaviorWidget::loadReport(const QString& path) +{ + auto report = std::make_shared(); + QString error; + if (!report->load(path, error)) + { + QMessageBox::warning(this, "TTD Behavior", error); + return; + } + + m_report = report; + m_model->setReport(m_report); + m_detail->clear(); + m_table->resizeColumnsToContents(); + // The parameter rendering is long enough that fitting it would push every other + // column off screen; cap it and let the detail pane carry the full value. + if (m_table->columnWidth(TTDBehaviorCallModel::ParametersColumn) > 600) + m_table->setColumnWidth(TTDBehaviorCallModel::ParametersColumn, 600); + updateStatus(); +} + + +void TTDBehaviorWidget::onLoadClicked() +{ + QString path = QFileDialog::getOpenFileName( + this, "Load TTD API Call Report", QString(), "JSON reports (*.json);;All files (*)"); + if (!path.isEmpty()) + loadReport(path); +} + + +QString TTDBehaviorWidget::extractorPath(bool prompt) +{ + auto settings = Settings::Instance(); + QString path = QString::fromStdString(settings->Get(kExtractorSetting)); + if (!path.isEmpty() && QFileInfo(path).isExecutable()) + return path; + + if (!prompt) + return QString(); + + path = QFileDialog::getOpenFileName(this, "Locate the TTD API call extractor", QString(), +#ifdef WIN32 + "Executables (*.exe);;All files (*)"); +#else + "All files (*)"); +#endif + if (!path.isEmpty()) + settings->Set(kExtractorSetting, path.toStdString()); + return path; +} + + +void TTDBehaviorWidget::onExtractClicked() +{ + if (m_extractProcess && m_extractProcess->state() != QProcess::NotRunning) + { + QMessageBox::information(this, "TTD Behavior", "An extraction is already running."); + return; + } + + QString extractor = extractorPath(true); + if (extractor.isEmpty()) + return; + + // Prefer the trace the current session is replaying; fall back to asking. + QString trace; + if (m_controller && m_controller->IsTTD()) + { + auto adapterSettings = m_controller->GetAdapterSettings(); + if (adapterSettings) + { + BNSettingsScope scope = SettingsResourceScope; + trace = QString::fromStdString(adapterSettings->Get("launch.trace_path", m_data, &scope)); + } + } + if (trace.isEmpty() || !QFileInfo::exists(trace)) + { + trace = QFileDialog::getOpenFileName( + this, "Select TTD Trace", QString(), "TTD traces (*.run);;All files (*)"); + } + if (trace.isEmpty()) + return; + + QString output = QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)) + .filePath(QFileInfo(trace).completeBaseName() + ".ttd.json"); + + m_extractProcess = new QProcess(this); + // The extractor loads its API metadata index and the TTD replay DLLs from its own + // directory, so it has to run from there. + m_extractProcess->setWorkingDirectory(QFileInfo(extractor).absolutePath()); + connect(m_extractProcess, &QProcess::finished, this, + [this, output](int exitCode, QProcess::ExitStatus status) { + m_extractButton->setEnabled(true); + QString stderrText = QString::fromLocal8Bit(m_extractProcess->readAllStandardError()); + m_extractProcess->deleteLater(); + m_extractProcess = nullptr; + + if (status != QProcess::NormalExit || exitCode != 0) + { + QMessageBox::warning(this, "TTD Behavior", + QString("Extraction failed (exit %1):\n\n%2").arg(exitCode).arg(stderrText)); + updateStatus(); + return; + } + loadReport(output); + }); + + m_extractButton->setEnabled(false); + m_statusLabel->setText(QString("Extracting from %1...").arg(QFileInfo(trace).fileName())); + m_extractProcess->start(extractor, {trace, "-o", output}); +} + + +void TTDBehaviorWidget::onFilterChanged(const QString& text) +{ + m_filterModel->setFilterText(text); + updateStatus(); +} + + +void TTDBehaviorWidget::showDetail(const TTDApiCall* call) +{ + if (!call) + { + m_detail->clear(); + return; + } + + QString text; + text += QString("%1!%2 @ %3 tid %4 (#%5)\n") + .arg(call->module, call->api, call->position) + .arg(call->tid) + .arg(call->seq); + text += QString("returned %1\n\n").arg(formatHex(call->ret)); + + if (!call->decoded) + { + text += "No signature was available for this function; the values below are the\n"; + text += "raw argument registers captured heuristically.\n\n"; + text += QString(" %1\n").arg(call->paramSummary); + m_detail->setPlainText(text); + return; + } + + for (const TTDApiCallParam& param : call->params) + { + QString annotations; + if (param.out) + annotations += " [out]"; + if (param.atReturn) + annotations += " [read at return]"; + + text += QString("%1 : %2%3\n").arg(param.name, param.type, annotations); + text += QString(" value %1\n").arg(formatHex(param.value)); + if (!param.str.isEmpty()) + text += QString(" string \"%1\"\n").arg(escapeString(param.str)); + if (!param.flags.isEmpty()) + text += QString(" flags %1\n").arg(param.flags.join(" | ")); + if (param.hasDeref) + text += QString(" deref %1 (%2)\n").arg(formatHex(param.deref)).arg(param.deref); + if (!param.bytes.isEmpty()) + { + text += QString(" buffer %1 bytes\n").arg(param.bytes.size()); + text += hexDump(param.bytes); + } + text += "\n"; + } + + m_detail->setPlainText(text); +} + + +void TTDBehaviorWidget::onSelectionChanged() +{ + QModelIndexList selected = m_table->selectionModel()->selectedRows(); + if (selected.isEmpty()) + { + showDetail(nullptr); + return; + } + showDetail(m_model->callAt(m_filterModel->mapToSource(selected.first()).row())); +} + + +void TTDBehaviorWidget::onDoubleClicked(const QModelIndex& index) +{ + const TTDApiCall* call = m_model->callAt(m_filterModel->mapToSource(index).row()); + if (!call || !m_controller || !m_controller->IsTTD()) + return; + + QStringList parts = call->position.split(':'); + if (parts.size() != 2) + return; + + bool sequenceOk = false, stepOk = false; + uint64_t sequence = parts[0].toULongLong(&sequenceOk, 16); + uint64_t step = parts[1].toULongLong(&stepOk, 16); + if (!sequenceOk || !stepOk) + return; + + if (m_controller->SetTTDPosition(TTDPosition(sequence, step))) + m_statusLabel->setText(QString("Navigated to %1").arg(call->position)); + else + m_statusLabel->setText(QString("Failed to navigate to %1").arg(call->position)); +} + + +void TTDBehaviorWidget::copySelectedRows() +{ + QModelIndexList selected = m_table->selectionModel()->selectedRows(); + QStringList lines; + for (const QModelIndex& index : selected) + { + const TTDApiCall* call = m_model->callAt(m_filterModel->mapToSource(index).row()); + if (!call) + continue; + lines.append(QString("%1 %2!%3(%4) -> %5") + .arg(call->position, call->module, call->api, call->paramSummary, formatHex(call->ret))); + } + if (!lines.isEmpty()) + QApplication::clipboard()->setText(lines.join('\n')); +} + + +void TTDBehaviorWidget::onContextMenu(const QPoint& pos) +{ + if (m_table->selectionModel()->selectedRows().isEmpty()) + return; + + QMenu menu(this); + QAction* copyAction = menu.addAction("Copy"); + QAction* navigateAction = nullptr; + if (m_controller && m_controller->IsTTD()) + navigateAction = menu.addAction("Navigate to Position"); + + QAction* chosen = menu.exec(m_table->viewport()->mapToGlobal(pos)); + if (!chosen) + return; + if (chosen == copyAction) + copySelectedRows(); + else if (chosen == navigateAction) + onDoubleClicked(m_table->selectionModel()->selectedRows().first()); +} + + +TTDBehaviorWidgetType::TTDBehaviorWidgetType() : + SidebarWidgetType(QImage(":/debugger/ttd-analysis"), "TTD Behavior") +{} + + +SidebarWidget* TTDBehaviorWidgetType::createWidget(ViewFrame* frame, BinaryViewRef data) +{ + return new TTDBehaviorWidget(data); +} diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h new file mode 100644 index 00000000..76ee5d96 --- /dev/null +++ b/ui/ttdbehaviorwidget.h @@ -0,0 +1,191 @@ +/* +Copyright 2020-2026 Vector 35 Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "binaryninjaapi.h" +#include "debuggerapi.h" +#include "viewframe.h" +#include "debuggeruicommon.h" +#include "uitypes.h" + +using namespace BinaryNinja; +using namespace BinaryNinjaDebuggerAPI; + + +// One decoded parameter of an API call. Only `name`/`type`/`kind`/`value` are always +// present; the rest depend on what the Win32 API metadata said about the parameter. +struct TTDApiCallParam +{ + QString name; + QString type; + QString kind; + uint64_t value = 0; + QString str; // resolved ANSI/UTF-16 string, if the parameter is one + QStringList flags; // symbolic names for enum/flag parameters + QByteArray bytes; // captured buffer contents + uint64_t deref = 0; // pointed-to value for `int*`-like parameters + bool hasDeref = false; + bool out = false; // [Out] parameter + bool atReturn = false; // value was re-read at the call's return position +}; + + +// A single Windows API call observed during the trace. +struct TTDApiCall +{ + uint64_t seq = 0; + uint64_t tid = 0; + QString position; + QString module; + QString api; + uint64_t ret = 0; + std::vector params; + bool decoded = false; // true when a real signature was available for this call + QString paramSummary; // precomputed single-line rendering for the table + QString searchText; // lowercased haystack used by the filter +}; + + +// The set of API calls extracted from one trace, as parsed from an extractor report. +struct TTDBehaviorReport +{ + QString reportPath; + QString tracePath; + QString arch; + QString sampleName; + uint64_t pid = 0; + std::vector calls; + + bool load(const QString& path, QString& error); + void clear(); +}; + + +class TTDBehaviorCallModel : public QAbstractTableModel +{ + Q_OBJECT + +public: + enum Column + { + SeqColumn = 0, + PositionColumn, + ThreadColumn, + ModuleColumn, + ApiColumn, + ParametersColumn, + ReturnColumn, + ColumnCount + }; + + TTDBehaviorCallModel(QObject* parent); + + void setReport(std::shared_ptr report); + const TTDApiCall* callAt(int row) const; + + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + int columnCount(const QModelIndex& parent = QModelIndex()) const override; + QVariant data(const QModelIndex& index, int role) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + +private: + std::shared_ptr m_report; +}; + + +// Plain substring filter over the precomputed per-call haystack. A trace can hold +// ~100k calls, so filtering has to avoid re-rendering rows through the model. +class TTDBehaviorFilterModel : public QSortFilterProxyModel +{ + Q_OBJECT + +public: + TTDBehaviorFilterModel(QObject* parent); + void setFilterText(const QString& text); + +protected: + bool filterAcceptsRow(int row, const QModelIndex& parent) const override; + +private: + QString m_filter; +}; + + +class TTDBehaviorWidget : public SidebarWidget +{ + Q_OBJECT + +private: + BinaryViewRef m_data; + DbgRef m_controller; + + QLineEdit* m_filterEdit; + QPushButton* m_loadButton; + QPushButton* m_extractButton; + QLabel* m_statusLabel; + QTableView* m_table; + QTextEdit* m_detail; + + TTDBehaviorCallModel* m_model; + TTDBehaviorFilterModel* m_filterModel; + std::shared_ptr m_report; + QProcess* m_extractProcess = nullptr; + + void setupUI(); + void updateStatus(); + void showDetail(const TTDApiCall* call); + QString extractorPath(bool prompt); + +public: + TTDBehaviorWidget(BinaryViewRef data); + ~TTDBehaviorWidget(); + + void loadReport(const QString& path); + +private Q_SLOTS: + void onLoadClicked(); + void onExtractClicked(); + void onFilterChanged(const QString& text); + void onSelectionChanged(); + void onDoubleClicked(const QModelIndex& index); + void onContextMenu(const QPoint& pos); + void copySelectedRows(); +}; + + +class TTDBehaviorWidgetType : public SidebarWidgetType +{ +public: + TTDBehaviorWidgetType(); + SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override; + SidebarWidgetLocation defaultLocation() const override { return SidebarWidgetLocation::RightContent; } + SidebarContextSensitivity contextSensitivity() const override { return PerViewTypeSidebarContext; } + SidebarIconVisibility defaultIconVisibility() const override { return AlwaysShowSidebarIcon; } +}; diff --git a/ui/ui.cpp b/ui/ui.cpp index f85cc332..478a6561 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -50,6 +50,7 @@ limitations under the License. #include "ttdcallswidget.h" #include "ttdeventswidget.h" #include "ttdbookmarkwidget.h" +#include "ttdbehaviorwidget.h" #include "ttdanalysisdialog.h" #include "timestampnavigationdialog.h" #include "freeversion.h" @@ -2089,6 +2090,17 @@ void DebuggerUI::updateUI(const DebuggerEvent& event) void GlobalDebuggerUI::InitializeUI() { + // The TTD Behavior sidebar shells out to an extractor that is built and deployed + // separately from the debugger, so its location has to be configurable. + Settings::Instance()->RegisterSetting("debugger.ttdBehaviorExtractorPath", + R"({ + "title" : "TTD Behavior Extractor Path", + "type" : "string", + "default" : "", + "description" : "Path of the executable that extracts Windows API calls from a TTD trace, used by the TTD Behavior sidebar.", + "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] + })"); + Sidebar::addSidebarWidgetType(new DebuggerWidgetType(QImage(":/debugger/debugger"), "Debugger")); Sidebar::addSidebarWidgetType(new DebugModulesSidebarWidgetType()); Sidebar::addSidebarWidgetType(new DebugMemoryMapSidebarWidgetType()); @@ -2098,6 +2110,7 @@ void GlobalDebuggerUI::InitializeUI() Sidebar::addSidebarWidgetType(new TTDCallsWidgetType()); Sidebar::addSidebarWidgetType(new TTDEventsWidgetType()); Sidebar::addSidebarWidgetType(new TTDBookmarkWidgetType()); + Sidebar::addSidebarWidgetType(new TTDBehaviorWidgetType()); } From 11f31d9e06fe100f607ee5b131f134650e71862b Mon Sep 17 00:00:00 2001 From: Xusheng Date: Fri, 24 Jul 2026 17:20:32 -0400 Subject: [PATCH 02/24] Navigate to the instruction pointer after time traveling to a call SetTTDPosition drives the backend's !tt directly without posting a stop event, so nothing moved the code view. Read the IP back from the adapter and navigate there, defining a function first when analysis has none -- a call's position is the callee's entry, typically inside a system DLL. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 38adbdcd..547bf4f7 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -723,10 +723,34 @@ void TTDBehaviorWidget::onDoubleClicked(const QModelIndex& index) if (!sequenceOk || !stepOk) return; - if (m_controller->SetTTDPosition(TTDPosition(sequence, step))) - m_statusLabel->setText(QString("Navigated to %1").arg(call->position)); - else - m_statusLabel->setText(QString("Failed to navigate to %1").arg(call->position)); + if (!m_controller->SetTTDPosition(TTDPosition(sequence, step))) + { + m_statusLabel->setText(QString("Failed to travel to %1").arg(call->position)); + return; + } + + // SetTTDPosition drives the backend's !tt directly and posts no stop event, so + // nothing else moves the view. Read the instruction pointer back from the adapter -- + // it is queried live, so it reflects the position we just landed on -- and navigate + // there ourselves. + uint64_t ip = m_controller->IP(); + BinaryViewRef liveView = m_controller->GetData(); + ViewFrame* frame = ViewFrame::viewFrameForWidget(this); + if (frame && liveView) + { + // The position of a call is the callee's entry, which for a system DLL is + // usually somewhere analysis has not defined a function yet. + if (liveView->GetAnalysisFunctionsContainingAddress(ip).empty() + && !m_controller->FunctionExistsInOldView(ip)) + { + auto id = liveView->BeginUndoActions(); + liveView->CreateUserFunction(liveView->GetDefaultPlatform(), ip); + liveView->ForgetUndoActions(id); + } + frame->navigate(liveView, ip, true, true); + } + + m_statusLabel->setText(QString("Traveled to %1, IP 0x%2").arg(call->position).arg(ip, 0, 16)); } @@ -756,7 +780,7 @@ void TTDBehaviorWidget::onContextMenu(const QPoint& pos) QAction* copyAction = menu.addAction("Copy"); QAction* navigateAction = nullptr; if (m_controller && m_controller->IsTTD()) - navigateAction = menu.addAction("Navigate to Position"); + navigateAction = menu.addAction("Time Travel Here"); QAction* chosen = menu.exec(m_table->viewport()->mapToGlobal(pos)); if (!chosen) From 40a65e2eb336f1b214d820bda13b45578a490aa8 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Mon, 27 Jul 2026 13:22:39 -0400 Subject: [PATCH 03/24] Fix the TTD Behavior filter hanging on large reports Filtering a 3.4M-call report froze the UI. The substring search was never the problem -- measured on real data it is 60-190ms for a full pass over every call. QSortFilterProxyModel was: it maintains a bidirectional source/proxy row mapping, and updateStatus() called its rowCount(), which forces that entire mapping to be materialised. Every keystroke rebuilt it from scratch over 3.4M rows. Drop the proxy. The model now owns the filter and keeps a vector of visible source indices, rebuilt in one linear pass. Also: - Debounce input by 150ms so a burst of keystrokes is one pass rather than one per character. Enter applies immediately. A single pass is fast enough to stay synchronous, so no worker thread or progress bar. - The per-call filter haystack becomes a lowercased std::string instead of a QString: halves its footprint (~200MB less on this report) and searching 8-bit data beats a case-insensitive QString compare. - Count decoded calls once at load instead of walking all 3.4M on every status update. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 132 ++++++++++++++++++++++++--------------- ui/ttdbehaviorwidget.h | 54 +++++++++------- 2 files changed, 114 insertions(+), 72 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 547bf4f7..84c274ce 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -168,6 +168,7 @@ void TTDBehaviorReport::clear() arch.clear(); sampleName.clear(); pid = 0; + decodedCount = 0; calls.clear(); } @@ -275,7 +276,10 @@ bool TTDBehaviorReport::load(const QString& path, QString& error) } call.paramSummary = rendered.join(", "); - call.searchText = QString("%1!%2 %3").arg(call.module, call.api, call.paramSummary).toLower(); + call.searchText = + QString("%1!%2 %3").arg(call.module, call.api, call.paramSummary).toLower().toUtf8().toStdString(); + if (call.decoded) + ++decodedCount; calls.push_back(std::move(call)); } } @@ -291,15 +295,58 @@ void TTDBehaviorCallModel::setReport(std::shared_ptr report) { beginResetModel(); m_report = std::move(report); + rebuildVisible(); endResetModel(); } +void TTDBehaviorCallModel::setFilter(const QString& text) +{ + std::string filter = text.trimmed().toLower().toUtf8().toStdString(); + if (filter == m_filter) + return; + + beginResetModel(); + m_filter = std::move(filter); + rebuildVisible(); + endResetModel(); +} + + +void TTDBehaviorCallModel::rebuildVisible() +{ + m_visible.clear(); + m_visible.shrink_to_fit(); + m_filtered = !m_filter.empty(); + if (!m_filtered || !m_report) + return; + + // One linear pass of substring searches over 8-bit haystacks. No reserve() up + // front: a selective filter is the common case, and reserving for every call + // would dwarf the result. + const size_t count = m_report->calls.size(); + for (size_t i = 0; i < count; ++i) + { + if (m_report->calls[i].searchText.find(m_filter) != std::string::npos) + m_visible.push_back(static_cast(i)); + } +} + + const TTDApiCall* TTDBehaviorCallModel::callAt(int row) const { - if (!m_report || row < 0 || static_cast(row) >= m_report->calls.size()) + if (!m_report || row < 0) return nullptr; - return &m_report->calls[row]; + size_t index = static_cast(row); + if (m_filtered) + { + if (index >= m_visible.size()) + return nullptr; + index = m_visible[index]; + } + if (index >= m_report->calls.size()) + return nullptr; + return &m_report->calls[index]; } @@ -307,7 +354,7 @@ int TTDBehaviorCallModel::rowCount(const QModelIndex& parent) const { if (parent.isValid() || !m_report) return 0; - return static_cast(m_report->calls.size()); + return static_cast(m_filtered ? m_visible.size() : m_report->calls.size()); } @@ -380,34 +427,6 @@ QVariant TTDBehaviorCallModel::headerData(int section, Qt::Orientation orientati } -TTDBehaviorFilterModel::TTDBehaviorFilterModel(QObject* parent) : QSortFilterProxyModel(parent) {} - - -void TTDBehaviorFilterModel::setFilterText(const QString& text) -{ - beginFilterChange(); - m_filter = text.trimmed().toLower(); - endFilterChange(); -} - - -bool TTDBehaviorFilterModel::filterAcceptsRow(int row, const QModelIndex& parent) const -{ - if (m_filter.isEmpty()) - return true; - - auto* model = qobject_cast(sourceModel()); - if (!model) - return true; - - const TTDApiCall* call = model->callAt(row); - if (!call) - return false; - - return call->searchText.contains(m_filter); -} - - TTDBehaviorWidget::TTDBehaviorWidget(BinaryViewRef data) : SidebarWidget("TTD Behavior"), m_data(data) { m_controller = DebuggerController::GetController(data); @@ -452,11 +471,17 @@ void TTDBehaviorWidget::setupUI() layout->addLayout(toolbar); m_model = new TTDBehaviorCallModel(this); - m_filterModel = new TTDBehaviorFilterModel(this); - m_filterModel->setSourceModel(m_model); + + // A full scan of a 3.4M-call report measures 60-190ms, so filtering can run + // synchronously and appear immediate. The short debounce is only there to coalesce + // a burst of keystrokes into one pass; it is below the threshold where waiting is + // perceptible, so it costs nothing on smaller reports. + m_filterTimer = new QTimer(this); + m_filterTimer->setSingleShot(true); + m_filterTimer->setInterval(150); m_table = new QTableView(); - m_table->setModel(m_filterModel); + m_table->setModel(m_model); m_table->setSelectionBehavior(QAbstractItemView::SelectRows); m_table->setSelectionMode(QAbstractItemView::ExtendedSelection); m_table->setAlternatingRowColors(true); @@ -489,7 +514,10 @@ void TTDBehaviorWidget::setupUI() connect(m_loadButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onLoadClicked); connect(m_extractButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onExtractClicked); - connect(m_filterEdit, &QLineEdit::textChanged, this, &TTDBehaviorWidget::onFilterChanged); + connect(m_filterEdit, &QLineEdit::textChanged, this, &TTDBehaviorWidget::onFilterTextEdited); + // Enter applies immediately rather than waiting out the debounce. + connect(m_filterEdit, &QLineEdit::returnPressed, this, &TTDBehaviorWidget::applyFilter); + connect(m_filterTimer, &QTimer::timeout, this, &TTDBehaviorWidget::applyFilter); connect(m_table, &QTableView::doubleClicked, this, &TTDBehaviorWidget::onDoubleClicked); connect(m_table, &QTableView::customContextMenuRequested, this, &TTDBehaviorWidget::onContextMenu); connect(m_table->selectionModel(), &QItemSelectionModel::selectionChanged, this, @@ -505,20 +533,13 @@ void TTDBehaviorWidget::updateStatus() return; } - size_t decoded = 0; - for (const TTDApiCall& call : m_report->calls) - { - if (call.decoded) - ++decoded; - } - - int shown = m_filterModel->rowCount(); + int shown = m_model->rowCount(); QString name = QFileInfo(m_report->reportPath).fileName(); m_statusLabel->setText(QString("%1: %2 of %3 calls shown, %4 with decoded parameters") .arg(name) .arg(shown) .arg(m_report->calls.size()) - .arg(decoded)); + .arg(m_report->decodedCount)); } @@ -636,9 +657,20 @@ void TTDBehaviorWidget::onExtractClicked() } -void TTDBehaviorWidget::onFilterChanged(const QString& text) +void TTDBehaviorWidget::onFilterTextEdited() +{ + m_filterTimer->start(); + // Only worth saying on a report big enough for the pass to be visible; below that + // the label would flicker for no reason. + if (m_report->calls.size() > 250000) + m_statusLabel->setText("Filtering..."); +} + + +void TTDBehaviorWidget::applyFilter() { - m_filterModel->setFilterText(text); + m_filterTimer->stop(); + m_model->setFilter(m_filterEdit->text()); updateStatus(); } @@ -703,13 +735,13 @@ void TTDBehaviorWidget::onSelectionChanged() showDetail(nullptr); return; } - showDetail(m_model->callAt(m_filterModel->mapToSource(selected.first()).row())); + showDetail(m_model->callAt(selected.first().row())); } void TTDBehaviorWidget::onDoubleClicked(const QModelIndex& index) { - const TTDApiCall* call = m_model->callAt(m_filterModel->mapToSource(index).row()); + const TTDApiCall* call = m_model->callAt(index.row()); if (!call || !m_controller || !m_controller->IsTTD()) return; @@ -760,7 +792,7 @@ void TTDBehaviorWidget::copySelectedRows() QStringList lines; for (const QModelIndex& index : selected) { - const TTDApiCall* call = m_model->callAt(m_filterModel->mapToSource(index).row()); + const TTDApiCall* call = m_model->callAt(index.row()); if (!call) continue; lines.append(QString("%1 %2!%3(%4) -> %5") diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index 76ee5d96..02cf9124 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -17,8 +17,8 @@ limitations under the License. #pragma once #include -#include #include +#include #include #include #include @@ -69,7 +69,12 @@ struct TTDApiCall std::vector params; bool decoded = false; // true when a real signature was available for this call QString paramSummary; // precomputed single-line rendering for the table - QString searchText; // lowercased haystack used by the filter + + // Lowercased "module!api params" that the filter scans. Deliberately a byte + // string rather than a QString: a trace can hold millions of calls, so this + // halves the per-call footprint versus UTF-16, and searching 8-bit data is + // several times faster than a case-insensitive QString comparison. + std::string searchText; }; @@ -82,6 +87,7 @@ struct TTDBehaviorReport QString sampleName; uint64_t pid = 0; std::vector calls; + size_t decodedCount = 0; // counted once at load, not per status update bool load(const QString& path, QString& error); void clear(); @@ -108,6 +114,18 @@ class TTDBehaviorCallModel : public QAbstractTableModel TTDBehaviorCallModel(QObject* parent); void setReport(std::shared_ptr report); + + // Substring filter over the precomputed per-call haystack, applied by rebuilding + // the visible-row list in one linear pass. + // + // This is deliberately not a QSortFilterProxyModel. That class maintains a full + // bidirectional source/proxy row mapping, and any call to its rowCount() forces + // the whole mapping to be materialised -- which on a multi-million-call trace + // costs far more than scanning the haystacks, and made every keystroke look like + // a freeze. + void setFilter(const QString& text); + + // Row of the table -> the call it shows, or nullptr when out of range. const TTDApiCall* callAt(int row) const; int rowCount(const QModelIndex& parent = QModelIndex()) const override; @@ -116,25 +134,12 @@ class TTDBehaviorCallModel : public QAbstractTableModel QVariant headerData(int section, Qt::Orientation orientation, int role) const override; private: - std::shared_ptr m_report; -}; - - -// Plain substring filter over the precomputed per-call haystack. A trace can hold -// ~100k calls, so filtering has to avoid re-rendering rows through the model. -class TTDBehaviorFilterModel : public QSortFilterProxyModel -{ - Q_OBJECT - -public: - TTDBehaviorFilterModel(QObject* parent); - void setFilterText(const QString& text); - -protected: - bool filterAcceptsRow(int row, const QModelIndex& parent) const override; + void rebuildVisible(); -private: - QString m_filter; + std::shared_ptr m_report; + std::string m_filter; // lowercased, empty means show everything + std::vector m_visible; // indices into m_report->calls; empty when unfiltered + bool m_filtered = false; // whether m_visible is in use }; @@ -154,11 +159,16 @@ class TTDBehaviorWidget : public SidebarWidget QTextEdit* m_detail; TTDBehaviorCallModel* m_model; - TTDBehaviorFilterModel* m_filterModel; std::shared_ptr m_report; QProcess* m_extractProcess = nullptr; + // Filtering waits for a pause in typing rather than running on every keystroke: + // on a large trace each pass is real work, and eight of them while typing + // "kernel32" is eight times the work for seven results nobody looks at. + QTimer* m_filterTimer; + void setupUI(); + void applyFilter(); void updateStatus(); void showDetail(const TTDApiCall* call); QString extractorPath(bool prompt); @@ -172,7 +182,7 @@ class TTDBehaviorWidget : public SidebarWidget private Q_SLOTS: void onLoadClicked(); void onExtractClicked(); - void onFilterChanged(const QString& text); + void onFilterTextEdited(); void onSelectionChanged(); void onDoubleClicked(const QModelIndex& index); void onContextMenu(const QPoint& pos); From d172ddfa7f0fa196e43b93852f7863044afa0271 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Mon, 27 Jul 2026 13:45:50 -0400 Subject: [PATCH 04/24] Save extracted reports next to the trace, and show truncated buffers as such The report is the expensive artifact -- minutes of extraction -- so it no longer goes to a temp directory the OS will clean up. It lands beside the trace as .ttd.json. If that directory is not writable the user is asked where to put it rather than silently falling back to temp, and an existing report offers to be loaded instead of regenerated, since re-extraction is deterministic and would otherwise replace it. A capped buffer parameter also rendered as though its captured size were its real size: a 4096-byte WriteFile read as a 256-byte buffer. It now reads "first 256 of 4096 bytes" when the extractor reports the buffer was cut short, and the limit is exposed as debugger.ttdBehaviorMaxBuffer so it can be raised. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 64 ++++++++++++++++++++++++++++++++++++---- ui/ttdbehaviorwidget.h | 3 +- ui/ui.cpp | 11 +++++++ 3 files changed, 72 insertions(+), 6 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 84c274ce..ed489579 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -37,7 +37,6 @@ limitations under the License. #include #include #include -#include #include #include "fontsettings.h" #include "theme.h" @@ -256,6 +255,8 @@ bool TTDBehaviorReport::load(const QString& path, QString& error) param.flags.append(flag.toString()); if (paramObject.contains("bytes")) param.bytes = QByteArray::fromHex(paramObject.value("bytes").toString().toLatin1()); + // Present only when the extractor's --max-buffer cut the capture short. + param.bytesTotal = jsonToUInt64(paramObject.value("bytes_total")); rendered.append(QString("%1=%2").arg(param.name, formatParamValue(param))); call.params.push_back(std::move(param)); @@ -627,8 +628,45 @@ void TTDBehaviorWidget::onExtractClicked() if (trace.isEmpty()) return; - QString output = QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)) - .filePath(QFileInfo(trace).completeBaseName() + ".ttd.json"); + // Next to the trace, not in a temp directory: extraction takes minutes on a large + // trace, the report is the useful artifact, and it belongs with the trace it came + // from rather than somewhere the OS will eventually clean up. + QFileInfo traceInfo(trace); + QDir traceDir = traceInfo.absoluteDir(); + QString output = traceDir.filePath(traceInfo.completeBaseName() + ".ttd.json"); + + // A trace can sit somewhere unwritable -- a read-only share, or a mounted image. + // Ask rather than silently falling back to a temp file, which is the thing we are + // deliberately not doing. + if (!QFileInfo(traceDir.absolutePath()).isWritable()) + { + output = QFileDialog::getSaveFileName(this, "Save Extracted Report As", output, + "JSON reports (*.json);;All files (*)"); + if (output.isEmpty()) + return; + } + else if (QFileInfo::exists(output)) + { + // Re-extracting is deterministic, so the existing report is as good as a fresh + // one -- offer to just load it instead of spending the minutes again. + QMessageBox box(this); + box.setWindowTitle("TTD Behavior"); + box.setText(QString("%1 already exists.").arg(QFileInfo(output).fileName())); + box.setInformativeText("Load the existing report, or extract again and replace it?"); + QPushButton* loadButton = box.addButton("Load Existing", QMessageBox::AcceptRole); + QPushButton* replaceButton = box.addButton("Extract Again", QMessageBox::DestructiveRole); + box.addButton(QMessageBox::Cancel); + box.setDefaultButton(loadButton); + box.exec(); + + if (box.clickedButton() == loadButton) + { + loadReport(output); + return; + } + if (box.clickedButton() != replaceButton) + return; + } m_extractProcess = new QProcess(this); // The extractor loads its API metadata index and the TTD replay DLLs from its own @@ -651,9 +689,14 @@ void TTDBehaviorWidget::onExtractClicked() loadReport(output); }); + QStringList arguments {trace, "-o", output}; + int64_t maxBuffer = Settings::Instance()->Get("debugger.ttdBehaviorMaxBuffer"); + if (maxBuffer > 0) + arguments << "--max-buffer" << QString::number(maxBuffer); + m_extractButton->setEnabled(false); m_statusLabel->setText(QString("Extracting from %1...").arg(QFileInfo(trace).fileName())); - m_extractProcess->start(extractor, {trace, "-o", output}); + m_extractProcess->start(extractor, arguments); } @@ -717,7 +760,18 @@ void TTDBehaviorWidget::showDetail(const TTDApiCall* call) text += QString(" deref %1 (%2)\n").arg(formatHex(param.deref)).arg(param.deref); if (!param.bytes.isEmpty()) { - text += QString(" buffer %1 bytes\n").arg(param.bytes.size()); + // Say so when this is only the head of a larger buffer: reporting the + // captured size alone reads as the buffer's real size. + if (param.bytesTotal > static_cast(param.bytes.size())) + { + text += QString(" buffer first %1 of %2 bytes (raise the extractor's --max-buffer for more)\n") + .arg(param.bytes.size()) + .arg(param.bytesTotal); + } + else + { + text += QString(" buffer %1 bytes\n").arg(param.bytes.size()); + } text += hexDump(param.bytes); } text += "\n"; diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index 02cf9124..427aa4f5 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -49,7 +49,8 @@ struct TTDApiCallParam uint64_t value = 0; QString str; // resolved ANSI/UTF-16 string, if the parameter is one QStringList flags; // symbolic names for enum/flag parameters - QByteArray bytes; // captured buffer contents + QByteArray bytes; // captured buffer contents, possibly only a prefix + uint64_t bytesTotal = 0; // the buffer's real length when `bytes` was capped, else 0 uint64_t deref = 0; // pointed-to value for `int*`-like parameters bool hasDeref = false; bool out = false; // [Out] parameter diff --git a/ui/ui.cpp b/ui/ui.cpp index 478a6561..532b75f1 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -2101,6 +2101,17 @@ void GlobalDebuggerUI::InitializeUI() "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] })"); + Settings::Instance()->RegisterSetting("debugger.ttdBehaviorMaxBuffer", + R"({ + "title" : "TTD Behavior Buffer Capture Limit", + "type" : "number", + "default" : 256, + "minValue" : 0, + "maxValue" : 1048576, + "description" : "Bytes to keep from any one buffer parameter when extracting API calls from a TTD trace. Buffers longer than this are captured as a prefix and marked as truncated. Raising it recovers more of each buffer at the cost of a larger report.", + "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] + })"); + Sidebar::addSidebarWidgetType(new DebuggerWidgetType(QImage(":/debugger/debugger"), "Debugger")); Sidebar::addSidebarWidgetType(new DebugModulesSidebarWidgetType()); Sidebar::addSidebarWidgetType(new DebugMemoryMapSidebarWidgetType()); From 027e7e66df3caf20360d40ff19810aedf7b9946f Mon Sep 17 00:00:00 2001 From: Xusheng Date: Mon, 27 Jul 2026 13:55:42 -0400 Subject: [PATCH 05/24] Default the buffer capture limit to 64 KiB, and bound the hex dump Buffer parameters are a small fraction of the calls in a trace, so the capture limit costs far less report size than it appears; 256 bytes was cutting off ReadFile/WriteFile/RegGetValueW buffers for no real saving. A 64 KiB buffer is 4096 lines of hex dump though, which the detail pane can neither show usefully nor lay out quickly, so the rendering is clipped at 4 KiB with a note. The data is not clipped -- the full buffer stays in the report. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 14 +++++++++++++- ui/ui.cpp | 6 +++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index ed489579..c654558b 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -53,6 +53,11 @@ static const char* kExtractorSetting = "debugger.ttdBehaviorExtractorPath"; static const int kMaxStringDisplay = 96; static const int kMaxBytesDisplay = 32; +// The extractor captures up to 64 KiB per buffer, which is 4096 lines of hex dump -- +// more than the detail pane can usefully show or lay out quickly. Clip the rendering, +// not the data: the full bytes stay in the report. +static const int kMaxHexDumpBytes = 4096; + namespace { // QJsonValue stores anything that does not fit in a qint64 as a double, so pointer-sized @@ -772,7 +777,14 @@ void TTDBehaviorWidget::showDetail(const TTDApiCall* call) { text += QString(" buffer %1 bytes\n").arg(param.bytes.size()); } - text += hexDump(param.bytes); + + QByteArray shown = param.bytes.left(kMaxHexDumpBytes); + text += hexDump(shown); + if (shown.size() < param.bytes.size()) + { + text += QString(" ... %1 more captured bytes not shown\n") + .arg(param.bytes.size() - shown.size()); + } } text += "\n"; } diff --git a/ui/ui.cpp b/ui/ui.cpp index 532b75f1..4e7e991f 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -2105,10 +2105,10 @@ void GlobalDebuggerUI::InitializeUI() R"({ "title" : "TTD Behavior Buffer Capture Limit", "type" : "number", - "default" : 256, + "default" : 65536, "minValue" : 0, - "maxValue" : 1048576, - "description" : "Bytes to keep from any one buffer parameter when extracting API calls from a TTD trace. Buffers longer than this are captured as a prefix and marked as truncated. Raising it recovers more of each buffer at the cost of a larger report.", + "maxValue" : 16777216, + "description" : "Bytes to keep from any one buffer parameter when extracting API calls from a TTD trace. Buffers longer than this are captured as a prefix and marked as truncated. Buffer parameters are a small fraction of the calls in a typical trace, so this has far less effect on report size than it appears.", "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] })"); From 5fe38b93dbe866e1e8bd5f5129a2314909395967 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Mon, 27 Jul 2026 14:28:43 -0400 Subject: [PATCH 06/24] Keep the UI responsive during extraction, and size the narrow columns to fit Three things, all visible on a multi-million-call report. Columns: resizeColumnsToContents() only samples the leading rows, so "#" was sized for three digits when the last index has seven, and Position for its short early values when later ones are wider. Both are now sized from the widest value actually in the report. Blocking: extraction ran asynchronously already, but parsing the resulting 650MB report did not -- that was the freeze. Parsing now happens on a worker thread and the finished report is installed on the UI thread. Progress: a bar, elapsed time and a linear ETA sit at the bottom of the widget while an extraction or load is in flight, driven by the extractor's new --progress output. Writing the report has no measurable progress, so the bar goes indeterminate for that phase rather than pretending. Cancel asks the extractor to stop via --cancel-on-stdin, which keeps every call recorded up to that point -- killing the process would discard them. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 201 +++++++++++++++++++++++++++++++++++++-- ui/ttdbehaviorwidget.h | 28 ++++++ 2 files changed, 221 insertions(+), 8 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index c654558b..0a9c0c06 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -36,8 +36,12 @@ limitations under the License. #include #include #include +#include #include +#include +#include #include +#include #include "fontsettings.h" #include "theme.h" @@ -173,6 +177,8 @@ void TTDBehaviorReport::clear() sampleName.clear(); pid = 0; decodedCount = 0; + maxSeq = 0; + maxPositionChars = 0; calls.clear(); } @@ -286,6 +292,8 @@ bool TTDBehaviorReport::load(const QString& path, QString& error) QString("%1!%2 %3").arg(call.module, call.api, call.paramSummary).toLower().toUtf8().toStdString(); if (call.decoded) ++decodedCount; + maxSeq = std::max(maxSeq, call.seq); + maxPositionChars = std::max(maxPositionChars, static_cast(call.position.size())); calls.push_back(std::move(call)); } } @@ -512,12 +520,30 @@ void TTDBehaviorWidget::setupUI() splitter->setStretchFactor(1, 1); layout->addWidget(splitter, 1); + // Progress row: hidden until something long-running starts. + m_progressRow = new QWidget(); + auto* progressLayout = new QHBoxLayout(m_progressRow); + progressLayout->setContentsMargins(4, 0, 4, 0); + m_progressBar = new QProgressBar(); + m_progressBar->setRange(0, 100); + m_progressBar->setTextVisible(false); + progressLayout->addWidget(m_progressBar, 1); + m_progressLabel = new QLabel(); + progressLayout->addWidget(m_progressLabel); + m_cancelButton = new QPushButton("Cancel"); + m_cancelButton->setToolTip("Stop the extraction and keep the calls recorded so far"); + progressLayout->addWidget(m_cancelButton); + m_progressRow->setVisible(false); + layout->addWidget(m_progressRow); + m_statusLabel = new QLabel(); m_statusLabel->setContentsMargins(4, 0, 4, 4); layout->addWidget(m_statusLabel); setLayout(layout); + connect(m_cancelButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onCancelClicked); + connect(m_loadButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onLoadClicked); connect(m_extractButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onExtractClicked); connect(m_filterEdit, &QLineEdit::textChanged, this, &TTDBehaviorWidget::onFilterTextEdited); @@ -549,16 +575,139 @@ void TTDBehaviorWidget::updateStatus() } -void TTDBehaviorWidget::loadReport(const QString& path) +namespace { + // "1m 24s" / "12s" -- short enough to sit in a status row. + QString formatDuration(qint64 milliseconds) + { + qint64 seconds = milliseconds / 1000; + if (seconds < 60) + return QString("%1s").arg(seconds); + return QString("%1m %2s").arg(seconds / 60).arg(seconds % 60); + } +} // namespace + + +void TTDBehaviorWidget::beginOperation(const QString& what, bool cancellable) { - auto report = std::make_shared(); - QString error; - if (!report->load(path, error)) + m_operationTimer.start(); + m_progressBar->setRange(0, 100); + m_progressBar->setValue(0); + m_progressLabel->setText(what); + m_cancelButton->setVisible(cancellable); + m_cancelButton->setEnabled(cancellable); + m_progressRow->setVisible(true); + m_loadButton->setEnabled(false); + m_extractButton->setEnabled(false); +} + + +void TTDBehaviorWidget::endOperation() +{ + m_progressRow->setVisible(false); + m_loadButton->setEnabled(true); + m_extractButton->setEnabled(true); +} + + +void TTDBehaviorWidget::setProgress(double percent, const QString& detail) +{ + qint64 elapsed = m_operationTimer.elapsed(); + QString text = detail; + text += QString(" %1 elapsed").arg(formatDuration(elapsed)); + + if (percent > 0.0) + { + m_progressBar->setRange(0, 100); + m_progressBar->setValue(static_cast(percent)); + // Linear extrapolation from the work done so far. Crude, but the sweep rate is + // steady enough for it to be useful, and anything cleverer would still be a + // guess. + if (percent >= 1.0 && percent < 100.0) + { + qint64 remaining = static_cast(elapsed * (100.0 - percent) / percent); + text += QString(", ~%1 left").arg(formatDuration(remaining)); + } + } + else { - QMessageBox::warning(this, "TTD Behavior", error); + // No measurable progress to report: a busy indicator beats a bar stuck at zero. + m_progressBar->setRange(0, 0); + } + + m_progressLabel->setText(text); +} + + +void TTDBehaviorWidget::consumeExtractorStderr() +{ + if (!m_extractProcess) return; + + m_stderrTail += m_extractProcess->readAllStandardError(); + int newline = -1; + while ((newline = m_stderrTail.indexOf('\n')) >= 0) + { + QString line = QString::fromLocal8Bit(m_stderrTail.left(newline)).trimmed(); + m_stderrTail.remove(0, newline + 1); + + if (line.startsWith("[progress]")) + { + QStringList parts = line.split(' ', Qt::SkipEmptyParts); + if (parts.size() >= 3) + { + bool ok = false; + double percent = parts[1].toDouble(&ok); + if (ok) + setProgress(percent, QString("Sweeping trace: %1 calls").arg(parts[2])); + } + } + else if (line == "[phase] write") + { + // The report can be hundreds of MB; serialising it takes comparable time to + // the sweep, and there is no progress to be had from it. + setProgress(0.0, "Writing report"); + m_cancelButton->setEnabled(false); + } } +} + + +void TTDBehaviorWidget::loadReport(const QString& path) +{ + beginOperation(QString("Loading %1").arg(QFileInfo(path).fileName()), false); + setProgress(0.0, "Parsing report"); + + // Parsing a 650MB report takes tens of seconds; on the UI thread that is a freeze. + // The report is self-contained, so build it on a worker and hand the finished object + // back. QPointer guards the widget being destroyed while the worker runs. + QPointer self(this); + std::thread([self, path]() { + auto report = std::make_shared(); + QString error; + bool ok = report->load(path, error); + + // Back to the UI thread to install it. + QMetaObject::invokeMethod( + QCoreApplication::instance(), + [self, report, error, ok]() { + if (!self) + return; + self->endOperation(); + if (!ok) + { + QMessageBox::warning(self, "TTD Behavior", error); + self->updateStatus(); + return; + } + self->installReport(report); + }, + Qt::QueuedConnection); + }).detach(); +} + +void TTDBehaviorWidget::installReport(std::shared_ptr report) +{ m_report = report; m_model->setReport(m_report); m_detail->clear(); @@ -567,6 +716,19 @@ void TTDBehaviorWidget::loadReport(const QString& path) // column off screen; cap it and let the detail pane carry the full value. if (m_table->columnWidth(TTDBehaviorCallModel::ParametersColumn) > 600) m_table->setColumnWidth(TTDBehaviorCallModel::ParametersColumn, 600); + + // resizeColumnsToContents() samples only the leading rows, which is fine for the + // columns whose content is uniform but clips these two: the last call's index has + // far more digits than the first thousand, and positions grow as the trace advances. + // Size them from the widest value actually present. + QFontMetrics metrics(m_table->font()); + const int padding = 16; + int seqWidth = metrics.horizontalAdvance(QString::number(m_report->maxSeq)) + padding; + int positionWidth = metrics.horizontalAdvance(QString(m_report->maxPositionChars, 'M')) + padding; + if (seqWidth > m_table->columnWidth(TTDBehaviorCallModel::SeqColumn)) + m_table->setColumnWidth(TTDBehaviorCallModel::SeqColumn, seqWidth); + if (positionWidth > m_table->columnWidth(TTDBehaviorCallModel::PositionColumn)) + m_table->setColumnWidth(TTDBehaviorCallModel::PositionColumn, positionWidth); updateStatus(); } @@ -677,12 +839,17 @@ void TTDBehaviorWidget::onExtractClicked() // The extractor loads its API metadata index and the TTD replay DLLs from its own // directory, so it has to run from there. m_extractProcess->setWorkingDirectory(QFileInfo(extractor).absolutePath()); + m_stderrTail.clear(); + + connect(m_extractProcess, &QProcess::readyReadStandardError, this, + &TTDBehaviorWidget::consumeExtractorStderr); connect(m_extractProcess, &QProcess::finished, this, [this, output](int exitCode, QProcess::ExitStatus status) { - m_extractButton->setEnabled(true); + consumeExtractorStderr(); QString stderrText = QString::fromLocal8Bit(m_extractProcess->readAllStandardError()); m_extractProcess->deleteLater(); m_extractProcess = nullptr; + endOperation(); if (status != QProcess::NormalExit || exitCode != 0) { @@ -691,20 +858,38 @@ void TTDBehaviorWidget::onExtractClicked() updateStatus(); return; } + // A cancelled sweep still writes what it collected, so this path is the same + // whether the run completed or was stopped early. loadReport(output); }); - QStringList arguments {trace, "-o", output}; + // --progress drives the bar below; --cancel-on-stdin lets Cancel stop the sweep and + // still keep everything recorded up to that point. + QStringList arguments {trace, "-o", output, "--progress", "--cancel-on-stdin"}; int64_t maxBuffer = Settings::Instance()->Get("debugger.ttdBehaviorMaxBuffer"); if (maxBuffer > 0) arguments << "--max-buffer" << QString::number(maxBuffer); - m_extractButton->setEnabled(false); + beginOperation(QString("Extracting from %1").arg(QFileInfo(trace).fileName()), true); + setProgress(0.0, "Starting extractor"); m_statusLabel->setText(QString("Extracting from %1...").arg(QFileInfo(trace).fileName())); m_extractProcess->start(extractor, arguments); } +void TTDBehaviorWidget::onCancelClicked() +{ + if (!m_extractProcess || m_extractProcess->state() == QProcess::NotRunning) + return; + + // The extractor watches stdin for this and interrupts the replay, then writes out + // everything it recorded. Killing the process instead would throw that away. + m_extractProcess->write("cancel\n"); + m_cancelButton->setEnabled(false); + setProgress(0.0, "Finishing up the calls recorded so far"); +} + + void TTDBehaviorWidget::onFilterTextEdited() { m_filterTimer->start(); diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index 427aa4f5..37a309ea 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -17,6 +17,8 @@ limitations under the License. #pragma once #include +#include +#include #include #include #include @@ -90,6 +92,13 @@ struct TTDBehaviorReport std::vector calls; size_t decodedCount = 0; // counted once at load, not per status update + // Widest content in the two narrow columns, so they can be sized to fit exactly. + // QTableView::resizeColumnsToContents() only samples the first 1000 rows, which on a + // multi-million-call trace sizes "#" for three digits and Position for its shortest + // early values, then clips everything after. + uint64_t maxSeq = 0; + int maxPositionChars = 0; + bool load(const QString& path, QString& error); void clear(); }; @@ -159,6 +168,14 @@ class TTDBehaviorWidget : public SidebarWidget QTableView* m_table; QTextEdit* m_detail; + // Shown only while an extraction or a report load is in flight. + QWidget* m_progressRow; + QProgressBar* m_progressBar; + QLabel* m_progressLabel; + QPushButton* m_cancelButton; + QElapsedTimer m_operationTimer; + QByteArray m_stderrTail; // partial line left over between readyRead signals + TTDBehaviorCallModel* m_model; std::shared_ptr m_report; QProcess* m_extractProcess = nullptr; @@ -174,15 +191,26 @@ class TTDBehaviorWidget : public SidebarWidget void showDetail(const TTDApiCall* call); QString extractorPath(bool prompt); + void beginOperation(const QString& what, bool cancellable); + void endOperation(); + void setProgress(double percent, const QString& detail); + void consumeExtractorStderr(); + public: TTDBehaviorWidget(BinaryViewRef data); ~TTDBehaviorWidget(); + // Parses `path` on a worker thread -- a multi-hundred-MB report takes long enough + // that doing it inline freezes the UI -- and installs it when finished. void loadReport(const QString& path); + // Swap in a parsed report and refresh the view. Must run on the UI thread. + void installReport(std::shared_ptr report); + private Q_SLOTS: void onLoadClicked(); void onExtractClicked(); + void onCancelClicked(); void onFilterTextEdited(); void onSelectionChanged(); void onDoubleClicked(const QModelIndex& index); From 162ece73e34ef3d66594bd370467b1a854612d4f Mon Sep 17 00:00:00 2001 From: Xusheng Date: Mon, 27 Jul 2026 15:03:05 -0400 Subject: [PATCH 07/24] Read the binary report format, and show save and load times Extraction now asks for -b, so it writes the mappable format next to the trace as .ttdb instead of JSON. That was the missing half: the extractor could already write it, but the sidebar could not read it, so it kept requesting JSON. The report grew a second backend. The binary one memory-maps the file and decodes a call record straight out of the mapping when a row is asked for, so opening a 3.4M-call report is a header validation rather than ~17s of parsing and ~1.4GB of per-call objects. Parameters are decoded only for the selected row, and the filter matches against the prebuilt haystack in the mapping via string_view -- no copy, no allocation. A one-row cache keeps data() from decoding the same row once per column. JSON loading stays, dispatched on the file's magic, because reports already on disk are in that format and it is what capa consumes. The status line now reports how long the save and the load took, which is how the difference is visible at all: 3.6s to write and a memory map to load, against ~56s and ~17s before. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 347 ++++++++++++++++++++++++++++++++++++--- ui/ttdbehaviorwidget.h | 67 +++++++- 2 files changed, 386 insertions(+), 28 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 0a9c0c06..4544cb9e 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -169,6 +169,40 @@ namespace { } // namespace +// Mirrors ttd/src/binreport.hpp in the extractor. Any change there needs one here. +namespace binfmt { + constexpr char kMagic[8] = { 'T', 'T', 'D', 'B', 'E', 'H', 'V', '1' }; + constexpr uint32_t kVersion = 1; + constexpr int kHeaderSize = 128; + constexpr int kCallRecordSize = 40; + constexpr uint16_t kDecodedFlag = 0x8000; + + enum ParamBits : uint8_t + { + Out = 0x01, + AtReturn = 0x02, + HasDeref = 0x04, + HasStr = 0x08, + HasBytes = 0x10, + HasFlags = 0x20, + }; + + // The extractor writes ArgKind as a raw byte; these are the names the detail pane + // shows, indexed by that value. Order matches win32meta.hpp's ArgKind. + const char* const kKindNames[] = { "", "int", "bool", "handle", "enum", "float", "double", "str", + "wstr", "strbuf", "wstrbuf", "buf", "int*", "struct*", "fnptr", "guid", "ptr", "str*", + "wstr*" }; + + template + T read(const uint8_t* p) + { + T v {}; + std::memcpy(&v, p, sizeof(T)); + return v; + } +} // namespace binfmt + + void TTDBehaviorReport::clear() { reportPath.clear(); @@ -179,11 +213,252 @@ void TTDBehaviorReport::clear() decodedCount = 0; maxSeq = 0; maxPositionChars = 0; - calls.clear(); + m_calls.clear(); + m_calls.shrink_to_fit(); + m_map = nullptr; + m_mapSize = 0; + m_file.reset(); + m_callCount = 0; } bool TTDBehaviorReport::load(const QString& path, QString& error) +{ + QFile probe(path); + if (!probe.open(QIODevice::ReadOnly)) + { + error = QString("Cannot open %1: %2").arg(path, probe.errorString()); + return false; + } + QByteArray magic = probe.read(sizeof(binfmt::kMagic)); + probe.close(); + + if (magic.size() == static_cast(sizeof(binfmt::kMagic)) + && std::memcmp(magic.constData(), binfmt::kMagic, sizeof(binfmt::kMagic)) == 0) + { + return loadBinary(path, error); + } + return loadJson(path, error); +} + + +bool TTDBehaviorReport::loadBinary(const QString& path, QString& error) +{ + clear(); + + auto file = std::make_unique(path); + if (!file->open(QIODevice::ReadOnly)) + { + error = QString("Cannot open %1: %2").arg(path, file->errorString()); + return false; + } + qint64 size = file->size(); + if (size < binfmt::kHeaderSize) + { + error = "Report is too small to contain a header"; + return false; + } + + // Mapped read-only, so the pages are shared and evictable rather than counting + // against us as heap. + const uint8_t* map = file->map(0, size); + if (map == nullptr) + { + error = QString("Cannot map %1: %2").arg(path, file->errorString()); + return false; + } + + uint32_t version = binfmt::read(map + 8); + if (version != binfmt::kVersion) + { + error = QString("Report format version %1 is not supported (expected %2); re-extract it") + .arg(version) + .arg(binfmt::kVersion); + return false; + } + + uint32_t archId = binfmt::read(map + 12); + m_callCount = binfmt::read(map + 16); + pid = binfmt::read(map + 32); + m_callsOff = binfmt::read(map + 40); + m_paramsOff = binfmt::read(map + 48); + m_stringsOff = binfmt::read(map + 56); + m_stringsSize = binfmt::read(map + 64); + m_blobOff = binfmt::read(map + 72); + m_blobSize = binfmt::read(map + 80); + decodedCount = static_cast(binfmt::read(map + 88)); + maxSeq = binfmt::read(map + 96); + uint32_t tracePathStr = binfmt::read(map + 104); + uint32_t sampleNameStr = binfmt::read(map + 108); + maxPositionChars = static_cast(binfmt::read(map + 112)); + + // Refuse a file whose regions do not fit rather than trusting offsets from disk. + auto withinFile = [size](uint64_t off, uint64_t len) { + return off <= static_cast(size) && len <= static_cast(size) - off; + }; + if (!withinFile(m_callsOff, m_callCount * binfmt::kCallRecordSize) + || !withinFile(m_stringsOff, m_stringsSize) || !withinFile(m_blobOff, m_blobSize)) + { + error = "Report header describes regions outside the file; it may be truncated"; + return false; + } + + m_file = std::move(file); + m_map = map; + m_mapSize = size; + reportPath = path; + arch = archId == 1 ? "x86" : "x64"; + tracePath = mappedString(tracePathStr); + sampleName = mappedString(sampleNameStr); + return true; +} + + +size_t TTDBehaviorReport::callCount() const +{ + return m_map != nullptr ? static_cast(m_callCount) : m_calls.size(); +} + + +const uint8_t* TTDBehaviorReport::callRecord(size_t index) const +{ + return m_map + m_callsOff + index * binfmt::kCallRecordSize; +} + + +QString TTDBehaviorReport::mappedString(uint32_t offset) const +{ + if (m_map == nullptr || offset >= m_stringsSize) + return QString(); + const char* start = reinterpret_cast(m_map + m_stringsOff + offset); + // The table is NUL-terminated and bounded by the region, so this cannot run away. + size_t maxLen = static_cast(m_stringsSize - offset); + size_t len = 0; + while (len < maxLen && start[len] != '\0') + ++len; + return QString::fromUtf8(start, static_cast(len)); +} + + +bool TTDBehaviorReport::matches(size_t index, const std::string& needle) const +{ + if (m_map == nullptr) + { + if (index >= m_calls.size()) + return false; + return m_calls[index].searchText.find(needle) != std::string::npos; + } + if (index >= m_callCount) + return false; + + const uint8_t* rec = callRecord(index); + uint32_t searchOff = binfmt::read(rec + 32); + uint16_t searchLen = binfmt::read(rec + 38); + // searchOff is relative to the blob region, so it has to be bounded against the + // region's size rather than its position in the file. + if (static_cast(searchOff) + searchLen > m_blobSize) + return false; + + // std::string_view::find over the mapped bytes: no copy, no allocation. + std::string_view hay(reinterpret_cast(m_map + m_blobOff + searchOff), searchLen); + return hay.find(needle) != std::string_view::npos; +} + + +void TTDBehaviorReport::fillCall(size_t index, TTDApiCall& out, bool withParams) const +{ + if (m_map == nullptr) + { + if (index < m_calls.size()) + out = m_calls[index]; + return; + } + if (index >= m_callCount) + return; + + const uint8_t* rec = callRecord(index); + out.params.clear(); + out.seq = index; // recorded calls are numbered densely, so the row index is the seq + out.ret = binfmt::read(rec + 0); + out.tid = binfmt::read(rec + 8); + uint32_t posSequence = binfmt::read(rec + 12); + uint32_t posSteps = binfmt::read(rec + 16); + out.position = QString("%1:%2").arg(posSequence, 0, 16).arg(posSteps, 0, 16).toUpper(); + out.module = mappedString(binfmt::read(rec + 20)); + out.api = mappedString(binfmt::read(rec + 24)); + + uint32_t paramOff = binfmt::read(rec + 28); + uint16_t rawCount = binfmt::read(rec + 36); + out.decoded = (rawCount & binfmt::kDecodedFlag) != 0; + int paramCount = rawCount & ~binfmt::kDecodedFlag; + + // The parameter region is variable-length, so a call's parameters are decoded in + // sequence from its offset. Only ever done for rows that are on screen or selected. + const uint8_t* p = m_map + m_paramsOff + paramOff; + const uint8_t* blob = m_map + m_blobOff; + QStringList rendered; + for (int i = 0; i < paramCount; ++i) + { + uint8_t kind = *p++; + uint8_t bits = *p++; + uint32_t nameStr = binfmt::read(p); + p += 4; + uint32_t typeStr = binfmt::read(p); + p += 4; + + TTDApiCallParam param; + param.name = mappedString(nameStr); + param.type = mappedString(typeStr); + param.kind = kind < std::size(binfmt::kKindNames) ? binfmt::kKindNames[kind] : ""; + param.value = binfmt::read(p); + p += 8; + param.out = (bits & binfmt::Out) != 0; + param.atReturn = (bits & binfmt::AtReturn) != 0; + + if (bits & binfmt::HasDeref) + { + param.hasDeref = true; + param.deref = binfmt::read(p); + p += 8; + } + if (bits & binfmt::HasStr) + { + uint32_t off = binfmt::read(p); + uint32_t len = binfmt::read(p + 4); + p += 8; + param.str = QString::fromUtf8(reinterpret_cast(blob + off), static_cast(len)); + } + if (bits & binfmt::HasBytes) + { + uint32_t off = binfmt::read(p); + uint32_t len = binfmt::read(p + 4); + uint64_t total = binfmt::read(p + 8); + p += 16; + param.bytes = QByteArray(reinterpret_cast(blob + off), static_cast(len)); + param.bytesTotal = total; + } + if (bits & binfmt::HasFlags) + { + uint32_t off = binfmt::read(p); + uint32_t len = binfmt::read(p + 4); + p += 8; + param.flags = QString::fromUtf8(reinterpret_cast(blob + off), + static_cast(len)).split('|', Qt::SkipEmptyParts); + } + + if (out.decoded) + rendered.append(QString("%1=%2").arg(param.name, formatParamValue(param))); + else + rendered.append(formatParamValue(param)); + + if (withParams) + out.params.push_back(std::move(param)); + } + out.paramSummary = rendered.join(", "); +} + + +bool TTDBehaviorReport::loadJson(const QString& path, QString& error) { clear(); @@ -294,7 +569,7 @@ bool TTDBehaviorReport::load(const QString& path, QString& error) ++decodedCount; maxSeq = std::max(maxSeq, call.seq); maxPositionChars = std::max(maxPositionChars, static_cast(call.position.size())); - calls.push_back(std::move(call)); + m_calls.push_back(std::move(call)); } } @@ -329,6 +604,7 @@ void TTDBehaviorCallModel::setFilter(const QString& text) void TTDBehaviorCallModel::rebuildVisible() { + m_cachedIndex = static_cast(-1); m_visible.clear(); m_visible.shrink_to_fit(); m_filtered = !m_filter.empty(); @@ -338,16 +614,16 @@ void TTDBehaviorCallModel::rebuildVisible() // One linear pass of substring searches over 8-bit haystacks. No reserve() up // front: a selective filter is the common case, and reserving for every call // would dwarf the result. - const size_t count = m_report->calls.size(); + const size_t count = m_report->callCount(); for (size_t i = 0; i < count; ++i) { - if (m_report->calls[i].searchText.find(m_filter) != std::string::npos) + if (m_report->matches(i, m_filter)) m_visible.push_back(static_cast(i)); } } -const TTDApiCall* TTDBehaviorCallModel::callAt(int row) const +const TTDApiCall* TTDBehaviorCallModel::callAt(int row, bool withParams) const { if (!m_report || row < 0) return nullptr; @@ -358,9 +634,20 @@ const TTDApiCall* TTDBehaviorCallModel::callAt(int row) const return nullptr; index = m_visible[index]; } - if (index >= m_report->calls.size()) + if (index >= m_report->callCount()) return nullptr; - return &m_report->calls[index]; + + // With a mapped report there is no stored object to point at, so decode into a + // one-row cache. data() is called once per column, so without this a row would be + // decoded seven times per repaint. + if (m_cachedIndex != index || (withParams && !m_cachedHasParams)) + { + m_cached = TTDApiCall(); + m_report->fillCall(index, m_cached, withParams); + m_cachedIndex = index; + m_cachedHasParams = withParams; + } + return &m_cached; } @@ -368,7 +655,7 @@ int TTDBehaviorCallModel::rowCount(const QModelIndex& parent) const { if (parent.isValid() || !m_report) return 0; - return static_cast(m_filtered ? m_visible.size() : m_report->calls.size()); + return static_cast(m_filtered ? m_visible.size() : m_report->callCount()); } @@ -559,7 +846,7 @@ void TTDBehaviorWidget::setupUI() void TTDBehaviorWidget::updateStatus() { - if (m_report->calls.empty()) + if (m_report->callCount() == 0) { m_statusLabel->setText("No report loaded"); return; @@ -567,11 +854,19 @@ void TTDBehaviorWidget::updateStatus() int shown = m_model->rowCount(); QString name = QFileInfo(m_report->reportPath).fileName(); - m_statusLabel->setText(QString("%1: %2 of %3 calls shown, %4 with decoded parameters") - .arg(name) - .arg(shown) - .arg(m_report->calls.size()) - .arg(m_report->decodedCount)); + QString text = QString("%1: %2 of %3 calls shown, %4 with decoded parameters") + .arg(name) + .arg(shown) + .arg(m_report->callCount()) + .arg(m_report->decodedCount); + // Where the time actually went, since that is the thing worth knowing about a format. + if (m_lastWriteSeconds > 0.0) + text += QString(" | saved in %1s").arg(m_lastWriteSeconds, 0, 'f', 1); + if (m_lastLoadSeconds >= 0.0) + text += QString("%1loaded in %2s") + .arg(m_lastWriteSeconds > 0.0 ? ", " : " | ") + .arg(m_lastLoadSeconds, 0, 'f', 2); + m_statusLabel->setText(text); } @@ -661,6 +956,12 @@ void TTDBehaviorWidget::consumeExtractorStderr() setProgress(percent, QString("Sweeping trace: %1 calls").arg(parts[2])); } } + else if (line.startsWith("[timing] write")) + { + QStringList parts = line.split(' ', Qt::SkipEmptyParts); + if (parts.size() >= 3) + m_lastWriteSeconds = parts[2].toDouble(); + } else if (line == "[phase] write") { // The report can be hundreds of MB; serialising it takes comparable time to @@ -682,14 +983,17 @@ void TTDBehaviorWidget::loadReport(const QString& path) // back. QPointer guards the widget being destroyed while the worker runs. QPointer self(this); std::thread([self, path]() { + QElapsedTimer timer; + timer.start(); auto report = std::make_shared(); QString error; bool ok = report->load(path, error); + double loadSeconds = timer.elapsed() / 1000.0; // Back to the UI thread to install it. QMetaObject::invokeMethod( QCoreApplication::instance(), - [self, report, error, ok]() { + [self, report, error, ok, loadSeconds]() { if (!self) return; self->endOperation(); @@ -699,6 +1003,7 @@ void TTDBehaviorWidget::loadReport(const QString& path) self->updateStatus(); return; } + self->m_lastLoadSeconds = loadSeconds; self->installReport(report); }, Qt::QueuedConnection); @@ -736,7 +1041,7 @@ void TTDBehaviorWidget::installReport(std::shared_ptr report) void TTDBehaviorWidget::onLoadClicked() { QString path = QFileDialog::getOpenFileName( - this, "Load TTD API Call Report", QString(), "JSON reports (*.json);;All files (*)"); + this, "Load TTD API Call Report", QString(), "TTD behavior reports (*.ttdb *.json);;All files (*)"); if (!path.isEmpty()) loadReport(path); } @@ -800,7 +1105,7 @@ void TTDBehaviorWidget::onExtractClicked() // from rather than somewhere the OS will eventually clean up. QFileInfo traceInfo(trace); QDir traceDir = traceInfo.absoluteDir(); - QString output = traceDir.filePath(traceInfo.completeBaseName() + ".ttd.json"); + QString output = traceDir.filePath(traceInfo.completeBaseName() + ".ttdb"); // A trace can sit somewhere unwritable -- a read-only share, or a mounted image. // Ask rather than silently falling back to a temp file, which is the thing we are @@ -808,7 +1113,7 @@ void TTDBehaviorWidget::onExtractClicked() if (!QFileInfo(traceDir.absolutePath()).isWritable()) { output = QFileDialog::getSaveFileName(this, "Save Extracted Report As", output, - "JSON reports (*.json);;All files (*)"); + "TTD behavior reports (*.ttdb);;All files (*)"); if (output.isEmpty()) return; } @@ -865,7 +1170,7 @@ void TTDBehaviorWidget::onExtractClicked() // --progress drives the bar below; --cancel-on-stdin lets Cancel stop the sweep and // still keep everything recorded up to that point. - QStringList arguments {trace, "-o", output, "--progress", "--cancel-on-stdin"}; + QStringList arguments {trace, "-b", output, "--progress", "--cancel-on-stdin"}; int64_t maxBuffer = Settings::Instance()->Get("debugger.ttdBehaviorMaxBuffer"); if (maxBuffer > 0) arguments << "--max-buffer" << QString::number(maxBuffer); @@ -895,7 +1200,7 @@ void TTDBehaviorWidget::onFilterTextEdited() m_filterTimer->start(); // Only worth saying on a report big enough for the pass to be visible; below that // the label would flicker for no reason. - if (m_report->calls.size() > 250000) + if (m_report->callCount() > 250000) m_statusLabel->setText("Filtering..."); } @@ -986,7 +1291,7 @@ void TTDBehaviorWidget::onSelectionChanged() showDetail(nullptr); return; } - showDetail(m_model->callAt(selected.first().row())); + showDetail(m_model->callAt(selected.first().row(), true)); } diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index 37a309ea..d253288f 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -18,6 +18,8 @@ limitations under the License. #include #include +#include +#include #include #include #include @@ -71,25 +73,34 @@ struct TTDApiCall uint64_t ret = 0; std::vector params; bool decoded = false; // true when a real signature was available for this call - QString paramSummary; // precomputed single-line rendering for the table + QString paramSummary; // single-line rendering for the table // Lowercased "module!api params" that the filter scans. Deliberately a byte // string rather than a QString: a trace can hold millions of calls, so this // halves the per-call footprint versus UTF-16, and searching 8-bit data is // several times faster than a case-insensitive QString comparison. + // + // Only populated by the JSON backend. The binary one keeps the equivalent text in + // the mapped file and matches against it there, so nothing is built per call. std::string searchText; }; -// The set of API calls extracted from one trace, as parsed from an extractor report. -struct TTDBehaviorReport +// The set of API calls extracted from one trace. +// +// Two backends. The binary one memory-maps the extractor's compact format and decodes +// records straight out of the mapping when a row is asked for -- there is no per-call +// object, so opening a 3.4M-call report costs a header validation instead of the ~17s +// (and ~1.4GB) that parsing the JSON equivalent did. The JSON one is kept because +// reports already on disk are in that format, and because it is what capa consumes. +class TTDBehaviorReport { +public: QString reportPath; QString tracePath; QString arch; QString sampleName; uint64_t pid = 0; - std::vector calls; size_t decodedCount = 0; // counted once at load, not per status update // Widest content in the two narrow columns, so they can be sized to fit exactly. @@ -99,8 +110,39 @@ struct TTDBehaviorReport uint64_t maxSeq = 0; int maxPositionChars = 0; + // Dispatches on the file's magic, so the caller does not care which format it has. bool load(const QString& path, QString& error); void clear(); + + size_t callCount() const; + + // Decode one call. `withParams` is the expensive half, so the table omits it and only + // the detail pane asks for it. + void fillCall(size_t index, TTDApiCall& out, bool withParams) const; + + // Does this call's searchable text contain `needle` (already lowercased)? + bool matches(size_t index, const std::string& needle) const; + +private: + bool loadJson(const QString& path, QString& error); + bool loadBinary(const QString& path, QString& error); + const uint8_t* callRecord(size_t index) const; + QString mappedString(uint32_t offset) const; + + // JSON backend: everything materialised up front. + std::vector m_calls; + + // Binary backend: the mapping plus the header's region offsets. + std::unique_ptr m_file; + const uint8_t* m_map = nullptr; + qint64 m_mapSize = 0; + uint64_t m_callCount = 0; + uint64_t m_callsOff = 0; + uint64_t m_paramsOff = 0; + uint64_t m_stringsOff = 0; + uint64_t m_stringsSize = 0; + uint64_t m_blobOff = 0; + uint64_t m_blobSize = 0; }; @@ -135,8 +177,10 @@ class TTDBehaviorCallModel : public QAbstractTableModel // a freeze. void setFilter(const QString& text); - // Row of the table -> the call it shows, or nullptr when out of range. - const TTDApiCall* callAt(int row) const; + // Row of the table -> the call it shows, or nullptr when out of range. Decoded into a + // single-row cache, so asking for the same row repeatedly (as data() does, once per + // column) costs one decode. `withParams` is only needed by the detail pane. + const TTDApiCall* callAt(int row, bool withParams = false) const; int rowCount(const QModelIndex& parent = QModelIndex()) const override; int columnCount(const QModelIndex& parent = QModelIndex()) const override; @@ -148,8 +192,12 @@ class TTDBehaviorCallModel : public QAbstractTableModel std::shared_ptr m_report; std::string m_filter; // lowercased, empty means show everything - std::vector m_visible; // indices into m_report->calls; empty when unfiltered + std::vector m_visible; // source indices; empty when unfiltered bool m_filtered = false; // whether m_visible is in use + + mutable TTDApiCall m_cached; + mutable size_t m_cachedIndex = static_cast(-1); + mutable bool m_cachedHasParams = false; }; @@ -176,6 +224,11 @@ class TTDBehaviorWidget : public SidebarWidget QElapsedTimer m_operationTimer; QByteArray m_stderrTail; // partial line left over between readyRead signals + // Reported in the status line: serialising and loading a report are the two costs + // most worth seeing, since they dominated the wall clock before the binary format. + double m_lastWriteSeconds = 0.0; + double m_lastLoadSeconds = -1.0; + TTDBehaviorCallModel* m_model; std::shared_ptr m_report; QProcess* m_extractProcess = nullptr; From 68848d7ebb8071c13c0ba1be3cfe1a7fc134498f Mon Sep 17 00:00:00 2001 From: Xusheng Date: Tue, 28 Jul 2026 16:26:55 -0400 Subject: [PATCH 08/24] Show each call's return address in a new column Reads it from either backend and adds a Return Address column, plus the call site in the detail pane's header line alongside the return value. Tracks the binary format's bump to version 2, whose call record grew from 40 to 48 bytes; reports written before this need re-extracting, which the existing version check already tells the user. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 12 +++++++++--- ui/ttdbehaviorwidget.h | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 4544cb9e..27c9c799 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -172,9 +172,9 @@ namespace { // Mirrors ttd/src/binreport.hpp in the extractor. Any change there needs one here. namespace binfmt { constexpr char kMagic[8] = { 'T', 'T', 'D', 'B', 'E', 'H', 'V', '1' }; - constexpr uint32_t kVersion = 1; + constexpr uint32_t kVersion = 2; // 2 added returnAddress to the call record constexpr int kHeaderSize = 128; - constexpr int kCallRecordSize = 40; + constexpr int kCallRecordSize = 48; constexpr uint16_t kDecodedFlag = 0x8000; enum ParamBits : uint8_t @@ -384,6 +384,7 @@ void TTDBehaviorReport::fillCall(size_t index, TTDApiCall& out, bool withParams) uint32_t posSequence = binfmt::read(rec + 12); uint32_t posSteps = binfmt::read(rec + 16); out.position = QString("%1:%2").arg(posSequence, 0, 16).arg(posSteps, 0, 16).toUpper(); + out.returnAddress = binfmt::read(rec + 40); out.module = mappedString(binfmt::read(rec + 20)); out.api = mappedString(binfmt::read(rec + 24)); @@ -516,6 +517,7 @@ bool TTDBehaviorReport::loadJson(const QString& path, QString& error) call.module = callObject.value("module").toString(); call.api = callObject.value("api").toString(); call.ret = jsonToUInt64(callObject.value("ret")); + call.returnAddress = jsonToUInt64(callObject.value("return_address")); QStringList rendered; if (callObject.contains("params")) @@ -695,6 +697,8 @@ QVariant TTDBehaviorCallModel::data(const QModelIndex& index, int role) const return call->paramSummary; case ReturnColumn: return formatHex(call->ret); + case ReturnAddressColumn: + return formatHex(call->returnAddress); default: return QVariant(); } @@ -722,6 +726,8 @@ QVariant TTDBehaviorCallModel::headerData(int section, Qt::Orientation orientati return "Parameters"; case ReturnColumn: return "Return"; + case ReturnAddressColumn: + return "Return Address"; default: return QVariant(); } @@ -1226,7 +1232,7 @@ void TTDBehaviorWidget::showDetail(const TTDApiCall* call) .arg(call->module, call->api, call->position) .arg(call->tid) .arg(call->seq); - text += QString("returned %1\n\n").arg(formatHex(call->ret)); + text += QString("returned %1, to %2\n\n").arg(formatHex(call->ret), formatHex(call->returnAddress)); if (!call->decoded) { diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index d253288f..65f7c94e 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -71,6 +71,9 @@ struct TTDApiCall QString module; QString api; uint64_t ret = 0; + // Where the call returns to: the instruction after the CALL, so it names the call + // site and therefore which module made the call. + uint64_t returnAddress = 0; std::vector params; bool decoded = false; // true when a real signature was available for this call QString paramSummary; // single-line rendering for the table @@ -160,6 +163,7 @@ class TTDBehaviorCallModel : public QAbstractTableModel ApiColumn, ParametersColumn, ReturnColumn, + ReturnAddressColumn, ColumnCount }; From ce24e8cd3627dd3d673a00f810be144e0ccd33d4 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Tue, 28 Jul 2026 16:43:42 -0400 Subject: [PATCH 09/24] Let the filter scope terms to a field Searching WriteFile matched kernel32's and ntdll's alike, and there was no way to express a condition on the return address at all. The filter now takes whitespace-separated terms ANDed together: a bare word still matches anywhere, and field:value narrows. module:kernel32 api:WriteFile only kernel32's api:Reg* ret:!0 registry calls that failed retaddr:0x400000-0x500000 calls the sample made itself Chosen over a conditions grid or a full expression language because the format makes it the fast option, not merely the cheap one. module and api are deduplicated string-table offsets and tid/ret/retaddr are fixed record fields, so a scoped term resolves once against the few thousand distinct strings and then costs an integer compare per row -- less work than the substring scan it replaces. It also stays a single input, and a bare word keeps its old meaning, so nothing anyone already types breaks. Numeric fields take !=, >, >=, <, <=, and a-b ranges, decimal or 0x hex. Parsing never fails: an unrecognised prefix is treated as text, so a half-typed query narrows rather than erroring. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 369 +++++++++++++++++++++++++++++++++++++-- ui/ttdbehaviorwidget.h | 69 +++++++- 2 files changed, 417 insertions(+), 21 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 27c9c799..e80993ca 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -203,6 +203,252 @@ namespace binfmt { } // namespace binfmt +bool TTDBehaviorQuery::Numeric::test(uint64_t value) const +{ + switch (op) + { + case NotEqual: + return value != a; + case Greater: + return value > a; + case GreaterEqual: + return value >= a; + case Less: + return value < a; + case LessEqual: + return value <= a; + case Range: + return value >= a && value <= b; + case Equal: + default: + return value == a; + } +} + + +namespace { + // Accepts decimal or 0x-prefixed hex. + bool parseNumber(const QString& text, uint64_t& out) + { + QString trimmed = text.trimmed(); + if (trimmed.isEmpty()) + return false; + bool ok = false; + out = trimmed.startsWith("0x", Qt::CaseInsensitive) ? trimmed.mid(2).toULongLong(&ok, 16) + : trimmed.toULongLong(&ok, 10); + return ok; + } + + + // `!0`, `>0x1000`, `>=5`, `<10`, `<=10`, `0x400000-0x500000`, or a plain value. + bool parseNumeric(const QString& text, TTDBehaviorQuery::Numeric& out) + { + QString value = text; + if (value.startsWith("!")) + { + out.op = TTDBehaviorQuery::Numeric::NotEqual; + value = value.mid(1); + } + else if (value.startsWith(">=")) + { + out.op = TTDBehaviorQuery::Numeric::GreaterEqual; + value = value.mid(2); + } + else if (value.startsWith("<=")) + { + out.op = TTDBehaviorQuery::Numeric::LessEqual; + value = value.mid(2); + } + else if (value.startsWith(">")) + { + out.op = TTDBehaviorQuery::Numeric::Greater; + value = value.mid(1); + } + else if (value.startsWith("<")) + { + out.op = TTDBehaviorQuery::Numeric::Less; + value = value.mid(1); + } + else + { + // A '-' separating two numbers is a range. Checked after 0x so the hex digits + // of a lone value are not mistaken for one. + int dash = value.indexOf('-', value.startsWith("0x", Qt::CaseInsensitive) ? 2 : 1); + if (dash > 0) + { + if (!parseNumber(value.left(dash), out.a) || !parseNumber(value.mid(dash + 1), out.b)) + return false; + out.op = TTDBehaviorQuery::Numeric::Range; + return true; + } + } + return parseNumber(value, out.a); + } + + + // Split on whitespace, honouring double quotes so a phrase can contain spaces. + QStringList splitTerms(const QString& text) + { + QStringList terms; + QString current; + bool inQuotes = false; + for (QChar c : text) + { + if (c == '"') + inQuotes = !inQuotes; + else if (c.isSpace() && !inQuotes) + { + if (!current.isEmpty()) + terms.append(current); + current.clear(); + } + else + current += c; + } + if (!current.isEmpty()) + terms.append(current); + return terms; + } +} // namespace + + +void TTDBehaviorQuery::parse(const QString& text) +{ + m_terms.clear(); + for (const QString& raw : splitTerms(text.trimmed())) + { + Term term; + int colon = raw.indexOf(':'); + QString field = colon > 0 ? raw.left(colon).toLower() : QString(); + QString value = colon > 0 ? raw.mid(colon + 1) : raw; + + // An unknown prefix is not an error: "c:\windows" should search for that text, + // not complain about a field called "c". + bool numericField = false; + if (field == "module" || field == "mod") + term.field = Field::Module; + else if (field == "api" || field == "func" || field == "function") + term.field = Field::Api; + else if (field == "tid" || field == "thread") + { + term.field = Field::Tid; + numericField = true; + } + else if (field == "ret" || field == "return") + { + term.field = Field::Ret; + numericField = true; + } + else if (field == "retaddr" || field == "caller" || field == "from") + { + term.field = Field::RetAddr; + numericField = true; + } + else + { + term.field = Field::Text; + value = raw; + } + + if (numericField) + { + if (!parseNumeric(value, term.numeric)) + { + // Unparseable number: fall back to treating the whole thing as text so + // the row set does not silently become everything. + term.field = Field::Text; + term.text = raw.toLower().toUtf8().toStdString(); + m_terms.push_back(std::move(term)); + continue; + } + } + else + { + if (value.endsWith('*')) + { + term.prefix = true; + value.chop(1); + } + if (value.isEmpty()) + continue; + term.text = value.toLower().toUtf8().toStdString(); + } + m_terms.push_back(std::move(term)); + } +} + + +bool TTDBehaviorQuery::hasFieldTerms() const +{ + for (const Term& t : m_terms) + { + if (t.field != Field::Text) + return true; + } + return false; +} + + +void TTDBehaviorQuery::resolve(const TTDBehaviorReport& report) +{ + bool needsStrings = false; + for (Term& t : m_terms) + { + t.stringOffsets.clear(); + t.resolved = false; + if (t.field == Field::Module || t.field == Field::Api) + needsStrings = true; + } + if (!needsStrings || !report.isMapped()) + return; + + // One pass over the string table -- a few thousand entries, not a few million rows -- + // collecting the offsets each module/api term accepts. Matching a row afterwards is + // then an integer compare against that set. + report.forEachString([this](uint32_t offset, const char* text, size_t length) { + std::string lowered(text, length); + std::transform(lowered.begin(), lowered.end(), lowered.begin(), + [](unsigned char c) { return static_cast(std::tolower(c)); }); + for (Term& t : m_terms) + { + if (t.field != Field::Module && t.field != Field::Api) + continue; + bool hit = t.prefix ? lowered.rfind(t.text, 0) == 0 : lowered == t.text; + if (hit) + t.stringOffsets.push_back(offset); + } + }); + + for (Term& t : m_terms) + { + if (t.field == Field::Module || t.field == Field::Api) + { + std::sort(t.stringOffsets.begin(), t.stringOffsets.end()); + t.resolved = true; + } + } +} + + +void TTDBehaviorReport::forEachString( + const std::function& fn) const +{ + if (m_map == nullptr) + return; + const char* base = reinterpret_cast(m_map + m_stringsOff); + uint64_t offset = 0; + while (offset < m_stringsSize) + { + size_t length = 0; + while (offset + length < m_stringsSize && base[offset + length] != '\0') + ++length; + if (length != 0) + fn(static_cast(offset), base + offset, length); + offset += length + 1; + } +} + + void TTDBehaviorReport::clear() { reportPath.clear(); @@ -340,28 +586,96 @@ QString TTDBehaviorReport::mappedString(uint32_t offset) const } -bool TTDBehaviorReport::matches(size_t index, const std::string& needle) const +bool TTDBehaviorReport::matches(size_t index, const TTDBehaviorQuery& query) const { + if (query.isEmpty()) + return true; + + // JSON backend: no string table or fixed records to exploit, so fall back to the + // materialised objects. Correct, just not the fast path. if (m_map == nullptr) { if (index >= m_calls.size()) return false; - return m_calls[index].searchText.find(needle) != std::string::npos; + const TTDApiCall& call = m_calls[index]; + for (const TTDBehaviorQuery::Term& t : query.terms()) + { + bool ok = true; + switch (t.field) + { + case TTDBehaviorQuery::Field::Text: + ok = call.searchText.find(t.text) != std::string::npos; + break; + case TTDBehaviorQuery::Field::Module: + case TTDBehaviorQuery::Field::Api: + { + std::string value = + (t.field == TTDBehaviorQuery::Field::Module ? call.module : call.api).toLower().toStdString(); + ok = t.prefix ? value.rfind(t.text, 0) == 0 : value == t.text; + break; + } + case TTDBehaviorQuery::Field::Tid: + ok = t.numeric.test(call.tid); + break; + case TTDBehaviorQuery::Field::Ret: + ok = t.numeric.test(call.ret); + break; + case TTDBehaviorQuery::Field::RetAddr: + ok = t.numeric.test(call.returnAddress); + break; + } + if (!ok) + return false; + } + return true; } + if (index >= m_callCount) return false; - const uint8_t* rec = callRecord(index); - uint32_t searchOff = binfmt::read(rec + 32); - uint16_t searchLen = binfmt::read(rec + 38); - // searchOff is relative to the blob region, so it has to be bounded against the - // region's size rather than its position in the file. - if (static_cast(searchOff) + searchLen > m_blobSize) - return false; - // std::string_view::find over the mapped bytes: no copy, no allocation. - std::string_view hay(reinterpret_cast(m_map + m_blobOff + searchOff), searchLen); - return hay.find(needle) != std::string_view::npos; + for (const TTDBehaviorQuery::Term& t : query.terms()) + { + bool ok = true; + switch (t.field) + { + case TTDBehaviorQuery::Field::Text: + { + uint32_t searchOff = binfmt::read(rec + 32); + uint16_t searchLen = binfmt::read(rec + 38); + // searchOff is relative to the blob region, so it has to be bounded against + // the region's size rather than its position in the file. + if (static_cast(searchOff) + searchLen > m_blobSize) + return false; + std::string_view hay( + reinterpret_cast(m_map + m_blobOff + searchOff), searchLen); + ok = hay.find(t.text) != std::string_view::npos; + break; + } + case TTDBehaviorQuery::Field::Module: + case TTDBehaviorQuery::Field::Api: + { + // Resolved to a set of string-table offsets up front, so this is a lookup in + // a handful of integers rather than a string comparison. + uint32_t offset = + binfmt::read(rec + (t.field == TTDBehaviorQuery::Field::Module ? 20 : 24)); + ok = std::binary_search(t.stringOffsets.begin(), t.stringOffsets.end(), offset); + break; + } + case TTDBehaviorQuery::Field::Tid: + ok = t.numeric.test(binfmt::read(rec + 8)); + break; + case TTDBehaviorQuery::Field::Ret: + ok = t.numeric.test(binfmt::read(rec + 0)); + break; + case TTDBehaviorQuery::Field::RetAddr: + ok = t.numeric.test(binfmt::read(rec + 40)); + break; + } + if (!ok) + return false; + } + return true; } @@ -586,6 +900,8 @@ void TTDBehaviorCallModel::setReport(std::shared_ptr report) { beginResetModel(); m_report = std::move(report); + if (m_report) + m_query.resolve(*m_report); rebuildVisible(); endResetModel(); } @@ -593,12 +909,14 @@ void TTDBehaviorCallModel::setReport(std::shared_ptr report) void TTDBehaviorCallModel::setFilter(const QString& text) { - std::string filter = text.trimmed().toLower().toUtf8().toStdString(); - if (filter == m_filter) + if (text.trimmed() == m_filterText) return; beginResetModel(); - m_filter = std::move(filter); + m_filterText = text.trimmed(); + m_query.parse(m_filterText); + if (m_report) + m_query.resolve(*m_report); rebuildVisible(); endResetModel(); } @@ -609,7 +927,7 @@ void TTDBehaviorCallModel::rebuildVisible() m_cachedIndex = static_cast(-1); m_visible.clear(); m_visible.shrink_to_fit(); - m_filtered = !m_filter.empty(); + m_filtered = !m_query.isEmpty(); if (!m_filtered || !m_report) return; @@ -619,7 +937,7 @@ void TTDBehaviorCallModel::rebuildVisible() const size_t count = m_report->callCount(); for (size_t i = 0; i < count; ++i) { - if (m_report->matches(i, m_filter)) + if (m_report->matches(i, m_query)) m_visible.push_back(static_cast(i)); } } @@ -771,7 +1089,22 @@ void TTDBehaviorWidget::setupUI() toolbar->addWidget(m_extractButton); m_filterEdit = new QLineEdit(); - m_filterEdit->setPlaceholderText("Filter by module, function, or parameter"); + m_filterEdit->setPlaceholderText("Filter, e.g. module:kernel32 api:WriteFile ret:!0"); + // The syntax is the only part of this that is not self-evident, so spell it out + // where someone hovering the box will find it. + m_filterEdit->setToolTip(QStringList { + "Terms are combined with AND. A bare word matches anywhere, including buffer contents.", + "", + " module:kernel32 exact module, so ntdll!WriteFile is excluded", + " api:WriteFile exact function name", + " api:Reg* trailing * matches a prefix", + " tid:4 thread id", + " ret:!0 ret:>0x1000 return value; also >= <= < and 10-20 ranges", + " retaddr:0x400000-0x500000 call site, e.g. calls the sample made itself", + " \"c:\\\\windows\" quoted phrase", + "", + "Values may be decimal or 0x hex. An unrecognised prefix is treated as text.", + }.join('\n')); m_filterEdit->setClearButtonEnabled(true); toolbar->addWidget(m_filterEdit, 1); diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index 65f7c94e..b949193c 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -19,6 +19,7 @@ limitations under the License. #include #include #include +#include #include #include #include @@ -89,6 +90,61 @@ struct TTDApiCall }; +// A parsed filter expression. +// +// Whitespace-separated terms, ANDed together. A bare word (or "quoted phrase") is a +// substring match over everything searchable about a call; `field:value` narrows to one +// field. That keeps what people already type working, while giving them a way to say +// which WriteFile they meant. +// +// module:kernel32 api:WriteFile only kernel32's, not ntdll's +// api:Reg* ret:!0 registry calls that failed +// retaddr:0x400000-0x500000 calls made from the sample itself +// password anything mentioning it, buffers included +// +// module/api resolve against the report's deduplicated string table once per query, so +// evaluating them per row is an integer compare rather than a string search. +class TTDBehaviorQuery +{ +public: + // Comparison against one of the call's numeric fields. + struct Numeric + { + enum Op { Equal, NotEqual, Greater, GreaterEqual, Less, LessEqual, Range }; + Op op = Equal; + uint64_t a = 0; + uint64_t b = 0; + bool test(uint64_t value) const; + }; + + enum class Field { Text, Module, Api, Tid, Ret, RetAddr }; + + struct Term + { + Field field = Field::Text; + std::string text; // lowercased, for Text/Module/Api + bool prefix = false; // the term ended in '*' + Numeric numeric; // for Tid/Ret/RetAddr + std::vector stringOffsets; // resolved module/api matches + bool resolved = false; + }; + + // Never fails: anything that does not look like a field term is treated as text, so + // a half-typed query still does something sensible rather than erroring. + void parse(const QString& text); + bool isEmpty() const { return m_terms.empty(); } + bool hasFieldTerms() const; + + // Bind module/api terms to the report's string table. Call once per report per query. + void resolve(const class TTDBehaviorReport& report); + + const std::vector& terms() const { return m_terms; } + +private: + std::vector m_terms; +}; + + // The set of API calls extracted from one trace. // // Two backends. The binary one memory-maps the extractor's compact format and decodes @@ -123,8 +179,13 @@ class TTDBehaviorReport // the detail pane asks for it. void fillCall(size_t index, TTDApiCall& out, bool withParams) const; - // Does this call's searchable text contain `needle` (already lowercased)? - bool matches(size_t index, const std::string& needle) const; + // Does this call satisfy every term of `query`? + bool matches(size_t index, const TTDBehaviorQuery& query) const; + + // Every distinct string in the table, for a query to resolve module/api terms + // against. Empty for the JSON backend, which compares per row instead. + void forEachString(const std::function& fn) const; + bool isMapped() const { return m_map != nullptr; } private: bool loadJson(const QString& path, QString& error); @@ -180,6 +241,7 @@ class TTDBehaviorCallModel : public QAbstractTableModel // costs far more than scanning the haystacks, and made every keystroke look like // a freeze. void setFilter(const QString& text); + const TTDBehaviorQuery& query() const { return m_query; } // Row of the table -> the call it shows, or nullptr when out of range. Decoded into a // single-row cache, so asking for the same row repeatedly (as data() does, once per @@ -195,7 +257,8 @@ class TTDBehaviorCallModel : public QAbstractTableModel void rebuildVisible(); std::shared_ptr m_report; - std::string m_filter; // lowercased, empty means show everything + QString m_filterText; // as typed, so a repeat of the same text is a no-op + TTDBehaviorQuery m_query; std::vector m_visible; // source indices; empty when unfiltered bool m_filtered = false; // whether m_visible is in use From 5f22fc84a81c5f973b76974f5ae8272a70dbee57 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Tue, 28 Jul 2026 16:59:35 -0400 Subject: [PATCH 10/24] Give the TTD Behavior widget query tabs Matches the other TTD widgets: a tab bar with a + corner button and closable tabs, one query per tab. Split along the line that matters for cost. Loading and extracting act on the report as a whole, so they stay above the tabs together with the progress row, and every tab points at the same shared report -- opening a second query does not re-read anything. Each tab owns only what is actually per-query: its filter, its model's visible-row set, its selection and its detail pane. Two details that make several tabs worth having. A new tab is seeded with the current tab's filter, so refining a query is opening a tab and editing rather than retyping. And a tab is labelled with the query it is running rather than 'Query 3', which is what tells them apart once there are a few. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 287 ++++++++++++++++++++++++++++----------- ui/ttdbehaviorwidget.h | 92 ++++++++++--- 2 files changed, 279 insertions(+), 100 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index e80993ca..b1624ae6 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -1052,7 +1052,8 @@ QVariant TTDBehaviorCallModel::headerData(int section, Qt::Orientation orientati } -TTDBehaviorWidget::TTDBehaviorWidget(BinaryViewRef data) : SidebarWidget("TTD Behavior"), m_data(data) +TTDBehaviorQueryWidget::TTDBehaviorQueryWidget(QWidget* parent, BinaryViewRef data) : + QWidget(parent), m_data(data) { m_controller = DebuggerController::GetController(data); m_report = std::make_shared(); @@ -1061,33 +1062,12 @@ TTDBehaviorWidget::TTDBehaviorWidget(BinaryViewRef data) : SidebarWidget("TTD Be } -TTDBehaviorWidget::~TTDBehaviorWidget() -{ - if (m_extractProcess && m_extractProcess->state() != QProcess::NotRunning) - { - m_extractProcess->kill(); - m_extractProcess->waitForFinished(1000); - } -} - - -void TTDBehaviorWidget::setupUI() +void TTDBehaviorQueryWidget::setupUI() { auto* layout = new QVBoxLayout(); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(4); - auto* toolbar = new QHBoxLayout(); - toolbar->setContentsMargins(4, 4, 4, 0); - - m_loadButton = new QPushButton("Load Report..."); - m_loadButton->setToolTip("Load a JSON report of API calls extracted from a TTD trace"); - toolbar->addWidget(m_loadButton); - - m_extractButton = new QPushButton("Extract..."); - m_extractButton->setToolTip("Run the extractor over a TTD trace and load the result"); - toolbar->addWidget(m_extractButton); - m_filterEdit = new QLineEdit(); m_filterEdit->setPlaceholderText("Filter, e.g. module:kernel32 api:WriteFile ret:!0"); // The syntax is the only part of this that is not self-evident, so spell it out @@ -1101,14 +1081,13 @@ void TTDBehaviorWidget::setupUI() " tid:4 thread id", " ret:!0 ret:>0x1000 return value; also >= <= < and 10-20 ranges", " retaddr:0x400000-0x500000 call site, e.g. calls the sample made itself", - " \"c:\\\\windows\" quoted phrase", + " \"c:\\windows\" quoted phrase", "", "Values may be decimal or 0x hex. An unrecognised prefix is treated as text.", }.join('\n')); m_filterEdit->setClearButtonEnabled(true); - toolbar->addWidget(m_filterEdit, 1); - - layout->addLayout(toolbar); + m_filterEdit->setContentsMargins(4, 4, 4, 0); + layout->addWidget(m_filterEdit); m_model = new TTDBehaviorCallModel(this); @@ -1146,7 +1125,125 @@ void TTDBehaviorWidget::setupUI() splitter->setStretchFactor(1, 1); layout->addWidget(splitter, 1); - // Progress row: hidden until something long-running starts. + m_statusLabel = new QLabel(); + m_statusLabel->setContentsMargins(4, 0, 4, 4); + layout->addWidget(m_statusLabel); + + setLayout(layout); + + connect(m_filterEdit, &QLineEdit::textChanged, this, &TTDBehaviorQueryWidget::onFilterTextEdited); + // Enter applies immediately rather than waiting out the debounce. + connect(m_filterEdit, &QLineEdit::returnPressed, this, &TTDBehaviorQueryWidget::applyFilter); + connect(m_filterTimer, &QTimer::timeout, this, &TTDBehaviorQueryWidget::applyFilter); + connect(m_table, &QTableView::doubleClicked, this, &TTDBehaviorQueryWidget::onDoubleClicked); + connect(m_table, &QTableView::customContextMenuRequested, this, &TTDBehaviorQueryWidget::onContextMenu); + connect(m_table->selectionModel(), &QItemSelectionModel::selectionChanged, this, + &TTDBehaviorQueryWidget::onSelectionChanged); +} + + +QString TTDBehaviorQueryWidget::filterText() const +{ + return m_filterEdit->text(); +} + + +void TTDBehaviorQueryWidget::setFilterText(const QString& text) +{ + m_filterEdit->setText(text); + applyFilter(); +} + + +void TTDBehaviorQueryWidget::setTimings(double writeSeconds, double loadSeconds) +{ + m_writeSeconds = writeSeconds; + m_loadSeconds = loadSeconds; + updateStatus(); +} + + +void TTDBehaviorQueryWidget::setReport(std::shared_ptr report) +{ + m_report = std::move(report); + m_model->setReport(m_report); + m_detail->clear(); + m_table->resizeColumnsToContents(); + // The parameter rendering is long enough that fitting it would push every other + // column off screen; cap it and let the detail pane carry the full value. + if (m_table->columnWidth(TTDBehaviorCallModel::ParametersColumn) > 600) + m_table->setColumnWidth(TTDBehaviorCallModel::ParametersColumn, 600); + + // resizeColumnsToContents() samples only the leading rows, which is fine for the + // columns whose content is uniform but clips these two: the last call's index has + // far more digits than the first thousand, and positions grow as the trace advances. + // Size them from the widest value actually present. + QFontMetrics metrics(m_table->font()); + const int padding = 16; + int seqWidth = metrics.horizontalAdvance(QString::number(m_report->maxSeq)) + padding; + int positionWidth = metrics.horizontalAdvance(QString(m_report->maxPositionChars, 'M')) + padding; + if (seqWidth > m_table->columnWidth(TTDBehaviorCallModel::SeqColumn)) + m_table->setColumnWidth(TTDBehaviorCallModel::SeqColumn, seqWidth); + if (positionWidth > m_table->columnWidth(TTDBehaviorCallModel::PositionColumn)) + m_table->setColumnWidth(TTDBehaviorCallModel::PositionColumn, positionWidth); + + updateStatus(); +} + + +TTDBehaviorWidget::TTDBehaviorWidget(BinaryViewRef data) : SidebarWidget("TTD Behavior"), m_data(data) +{ + m_controller = DebuggerController::GetController(data); + m_report = std::make_shared(); + setupUI(); +} + + +TTDBehaviorWidget::~TTDBehaviorWidget() +{ + if (m_extractProcess && m_extractProcess->state() != QProcess::NotRunning) + { + m_extractProcess->kill(); + m_extractProcess->waitForFinished(1000); + } +} + + +void TTDBehaviorWidget::setupUI() +{ + auto* layout = new QVBoxLayout(); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(4); + + // Loading and extracting act on the report as a whole, so they live above the tabs + // rather than being repeated in each one. + auto* toolbar = new QHBoxLayout(); + toolbar->setContentsMargins(4, 4, 4, 0); + + m_loadButton = new QPushButton("Load Report..."); + m_loadButton->setToolTip("Load a report of API calls extracted from a TTD trace"); + toolbar->addWidget(m_loadButton); + + m_extractButton = new QPushButton("Extract..."); + m_extractButton->setToolTip("Run the extractor over a TTD trace and load the result"); + toolbar->addWidget(m_extractButton); + toolbar->addStretch(1); + + layout->addLayout(toolbar); + + m_tabWidget = new QTabWidget(); + m_tabWidget->setTabsClosable(true); + + m_newTabButton = new QToolButton(); + m_newTabButton->setText("+"); + m_newTabButton->setAutoRaise(true); + m_newTabButton->setToolTip("New query tab"); + m_tabWidget->setCornerWidget(m_newTabButton, Qt::TopRightCorner); + + layout->addWidget(m_tabWidget, 1); + + // Progress row: hidden until something long-running starts. Shared, because a load + // or an extraction affects every tab. m_progressRow = new QWidget(); auto* progressLayout = new QHBoxLayout(m_progressRow); progressLayout->setContentsMargins(4, 0, 4, 0); @@ -1162,28 +1259,71 @@ void TTDBehaviorWidget::setupUI() m_progressRow->setVisible(false); layout->addWidget(m_progressRow); - m_statusLabel = new QLabel(); - m_statusLabel->setContentsMargins(4, 0, 4, 4); - layout->addWidget(m_statusLabel); - setLayout(layout); - connect(m_cancelButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onCancelClicked); - connect(m_loadButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onLoadClicked); connect(m_extractButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onExtractClicked); - connect(m_filterEdit, &QLineEdit::textChanged, this, &TTDBehaviorWidget::onFilterTextEdited); - // Enter applies immediately rather than waiting out the debounce. - connect(m_filterEdit, &QLineEdit::returnPressed, this, &TTDBehaviorWidget::applyFilter); - connect(m_filterTimer, &QTimer::timeout, this, &TTDBehaviorWidget::applyFilter); - connect(m_table, &QTableView::doubleClicked, this, &TTDBehaviorWidget::onDoubleClicked); - connect(m_table, &QTableView::customContextMenuRequested, this, &TTDBehaviorWidget::onContextMenu); - connect(m_table->selectionModel(), &QItemSelectionModel::selectionChanged, this, - &TTDBehaviorWidget::onSelectionChanged); + connect(m_cancelButton, &QPushButton::clicked, this, &TTDBehaviorWidget::onCancelClicked); + connect(m_newTabButton, &QToolButton::clicked, this, &TTDBehaviorWidget::createNewTab); + connect(m_tabWidget, &QTabWidget::tabCloseRequested, this, &TTDBehaviorWidget::closeTab); + + createNewTab(); } -void TTDBehaviorWidget::updateStatus() +TTDBehaviorQueryWidget* TTDBehaviorWidget::currentQuery() const +{ + return qobject_cast(m_tabWidget->currentWidget()); +} + + +void TTDBehaviorWidget::createNewTab() +{ + // Seed from the current tab, so refining a query is a matter of opening a tab and + // editing rather than retyping it. + QString seed; + if (TTDBehaviorQueryWidget* current = currentQuery()) + seed = current->filterText(); + + auto* query = new TTDBehaviorQueryWidget(this, m_data); + int index = m_tabWidget->addTab(query, QString("Query %1").arg(m_tabWidget->count() + 1)); + + query->setReport(m_report); + query->setTimings(m_lastWriteSeconds, m_lastLoadSeconds); + if (!seed.isEmpty()) + query->setFilterText(seed); + + // Label the tab with what it is asking, which is far more use than "Query 3" once + // there are several. + connect(query, &TTDBehaviorQueryWidget::filterApplied, this, [this, query](const QString& text) { + int at = m_tabWidget->indexOf(query); + if (at < 0) + return; + QString label = text.trimmed(); + if (label.isEmpty()) + label = QString("Query %1").arg(at + 1); + else if (label.size() > 24) + label = label.left(24) + QString::fromUtf8("\xe2\x80\xa6"); + m_tabWidget->setTabText(at, label); + m_tabWidget->setTabToolTip(at, text.trimmed()); + }); + + m_tabWidget->setCurrentIndex(index); +} + + +void TTDBehaviorWidget::closeTab(int index) +{ + // Keep at least one, so the widget is never an empty frame. + if (m_tabWidget->count() <= 1) + return; + QWidget* widget = m_tabWidget->widget(index); + m_tabWidget->removeTab(index); + widget->deleteLater(); +} + + +void TTDBehaviorQueryWidget::updateStatus() { if (m_report->callCount() == 0) { @@ -1199,12 +1339,12 @@ void TTDBehaviorWidget::updateStatus() .arg(m_report->callCount()) .arg(m_report->decodedCount); // Where the time actually went, since that is the thing worth knowing about a format. - if (m_lastWriteSeconds > 0.0) - text += QString(" | saved in %1s").arg(m_lastWriteSeconds, 0, 'f', 1); - if (m_lastLoadSeconds >= 0.0) + if (m_writeSeconds > 0.0) + text += QString(" | saved in %1s").arg(m_writeSeconds, 0, 'f', 1); + if (m_loadSeconds >= 0.0) text += QString("%1loaded in %2s") - .arg(m_lastWriteSeconds > 0.0 ? ", " : " | ") - .arg(m_lastLoadSeconds, 0, 'f', 2); + .arg(m_writeSeconds > 0.0 ? ", " : " | ") + .arg(m_loadSeconds, 0, 'f', 2); m_statusLabel->setText(text); } @@ -1339,7 +1479,6 @@ void TTDBehaviorWidget::loadReport(const QString& path) if (!ok) { QMessageBox::warning(self, "TTD Behavior", error); - self->updateStatus(); return; } self->m_lastLoadSeconds = loadSeconds; @@ -1352,28 +1491,17 @@ void TTDBehaviorWidget::loadReport(const QString& path) void TTDBehaviorWidget::installReport(std::shared_ptr report) { - m_report = report; - m_model->setReport(m_report); - m_detail->clear(); - m_table->resizeColumnsToContents(); - // The parameter rendering is long enough that fitting it would push every other - // column off screen; cap it and let the detail pane carry the full value. - if (m_table->columnWidth(TTDBehaviorCallModel::ParametersColumn) > 600) - m_table->setColumnWidth(TTDBehaviorCallModel::ParametersColumn, 600); - - // resizeColumnsToContents() samples only the leading rows, which is fine for the - // columns whose content is uniform but clips these two: the last call's index has - // far more digits than the first thousand, and positions grow as the trace advances. - // Size them from the widest value actually present. - QFontMetrics metrics(m_table->font()); - const int padding = 16; - int seqWidth = metrics.horizontalAdvance(QString::number(m_report->maxSeq)) + padding; - int positionWidth = metrics.horizontalAdvance(QString(m_report->maxPositionChars, 'M')) + padding; - if (seqWidth > m_table->columnWidth(TTDBehaviorCallModel::SeqColumn)) - m_table->setColumnWidth(TTDBehaviorCallModel::SeqColumn, seqWidth); - if (positionWidth > m_table->columnWidth(TTDBehaviorCallModel::PositionColumn)) - m_table->setColumnWidth(TTDBehaviorCallModel::PositionColumn, positionWidth); - updateStatus(); + m_report = std::move(report); + // Every tab points at the same report -- that is the reason to have tabs at all -- + // but each keeps its own query, so each re-resolves and re-filters against it. + for (int i = 0; i < m_tabWidget->count(); ++i) + { + if (auto* query = qobject_cast(m_tabWidget->widget(i))) + { + query->setReport(m_report); + query->setTimings(m_lastWriteSeconds, m_lastLoadSeconds); + } + } } @@ -1499,7 +1627,6 @@ void TTDBehaviorWidget::onExtractClicked() { QMessageBox::warning(this, "TTD Behavior", QString("Extraction failed (exit %1):\n\n%2").arg(exitCode).arg(stderrText)); - updateStatus(); return; } // A cancelled sweep still writes what it collected, so this path is the same @@ -1516,7 +1643,6 @@ void TTDBehaviorWidget::onExtractClicked() beginOperation(QString("Extracting from %1").arg(QFileInfo(trace).fileName()), true); setProgress(0.0, "Starting extractor"); - m_statusLabel->setText(QString("Extracting from %1...").arg(QFileInfo(trace).fileName())); m_extractProcess->start(extractor, arguments); } @@ -1534,7 +1660,7 @@ void TTDBehaviorWidget::onCancelClicked() } -void TTDBehaviorWidget::onFilterTextEdited() +void TTDBehaviorQueryWidget::onFilterTextEdited() { m_filterTimer->start(); // Only worth saying on a report big enough for the pass to be visible; below that @@ -1544,15 +1670,16 @@ void TTDBehaviorWidget::onFilterTextEdited() } -void TTDBehaviorWidget::applyFilter() +void TTDBehaviorQueryWidget::applyFilter() { m_filterTimer->stop(); m_model->setFilter(m_filterEdit->text()); updateStatus(); + emit filterApplied(m_filterEdit->text()); } -void TTDBehaviorWidget::showDetail(const TTDApiCall* call) +void TTDBehaviorQueryWidget::showDetail(const TTDApiCall* call) { if (!call) { @@ -1622,7 +1749,7 @@ void TTDBehaviorWidget::showDetail(const TTDApiCall* call) } -void TTDBehaviorWidget::onSelectionChanged() +void TTDBehaviorQueryWidget::onSelectionChanged() { QModelIndexList selected = m_table->selectionModel()->selectedRows(); if (selected.isEmpty()) @@ -1634,7 +1761,7 @@ void TTDBehaviorWidget::onSelectionChanged() } -void TTDBehaviorWidget::onDoubleClicked(const QModelIndex& index) +void TTDBehaviorQueryWidget::onDoubleClicked(const QModelIndex& index) { const TTDApiCall* call = m_model->callAt(index.row()); if (!call || !m_controller || !m_controller->IsTTD()) @@ -1681,7 +1808,7 @@ void TTDBehaviorWidget::onDoubleClicked(const QModelIndex& index) } -void TTDBehaviorWidget::copySelectedRows() +void TTDBehaviorQueryWidget::copySelectedRows() { QModelIndexList selected = m_table->selectionModel()->selectedRows(); QStringList lines; @@ -1698,7 +1825,7 @@ void TTDBehaviorWidget::copySelectedRows() } -void TTDBehaviorWidget::onContextMenu(const QPoint& pos) +void TTDBehaviorQueryWidget::onContextMenu(const QPoint& pos) { if (m_table->selectionModel()->selectedRows().isEmpty()) return; diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index b949193c..e156615f 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -22,7 +22,9 @@ limitations under the License. #include #include #include +#include #include +#include #include #include #include @@ -268,7 +270,11 @@ class TTDBehaviorCallModel : public QAbstractTableModel }; -class TTDBehaviorWidget : public SidebarWidget +// One query over the loaded report: a filter, the rows it matches, and the detail pane +// for whichever of them is selected. Tabs of these share a single report, since the +// point of having several is to ask different questions of the same trace without +// paying to load it again. +class TTDBehaviorQueryWidget : public QWidget { Q_OBJECT @@ -277,12 +283,67 @@ class TTDBehaviorWidget : public SidebarWidget DbgRef m_controller; QLineEdit* m_filterEdit; - QPushButton* m_loadButton; - QPushButton* m_extractButton; QLabel* m_statusLabel; QTableView* m_table; QTextEdit* m_detail; + TTDBehaviorCallModel* m_model; + std::shared_ptr m_report; + + // Set by the container, which is what knows them; shown in this tab's status line. + double m_writeSeconds = 0.0; + double m_loadSeconds = -1.0; + + // Filtering waits for a pause in typing rather than running on every keystroke: + // on a large trace each pass is real work, and eight of them while typing + // "kernel32" is eight times the work for seven results nobody looks at. + QTimer* m_filterTimer; + + void setupUI(); + void showDetail(const TTDApiCall* call); + +public: + TTDBehaviorQueryWidget(QWidget* parent, BinaryViewRef data); + + // Point this tab at a report. Cheap: the model only takes a reference to it. + void setReport(std::shared_ptr report); + + QString filterText() const; + void setFilterText(const QString& text); + + // Appended to the status line by the container, which is what knows them. + void setTimings(double writeSeconds, double loadSeconds); + void updateStatus(); + +Q_SIGNALS: + // So the container can label the tab after whatever the tab is asking. + void filterApplied(const QString& text); + +private Q_SLOTS: + void applyFilter(); + void onFilterTextEdited(); + void onSelectionChanged(); + void onDoubleClicked(const QModelIndex& index); + void onContextMenu(const QPoint& pos); + void copySelectedRows(); +}; + + +// Holds the report and the things that act on it as a whole -- loading, extracting, +// progress -- above a tab bar of queries. +class TTDBehaviorWidget : public SidebarWidget +{ + Q_OBJECT + +private: + BinaryViewRef m_data; + DbgRef m_controller; + + QPushButton* m_loadButton; + QPushButton* m_extractButton; + QTabWidget* m_tabWidget; + QToolButton* m_newTabButton; + // Shown only while an extraction or a report load is in flight. QWidget* m_progressRow; QProgressBar* m_progressBar; @@ -291,24 +352,16 @@ class TTDBehaviorWidget : public SidebarWidget QElapsedTimer m_operationTimer; QByteArray m_stderrTail; // partial line left over between readyRead signals - // Reported in the status line: serialising and loading a report are the two costs - // most worth seeing, since they dominated the wall clock before the binary format. + // Reported in each tab's status line: serialising and loading a report are the two + // costs most worth seeing, since they dominated the wall clock before the binary + // format. double m_lastWriteSeconds = 0.0; double m_lastLoadSeconds = -1.0; - TTDBehaviorCallModel* m_model; std::shared_ptr m_report; QProcess* m_extractProcess = nullptr; - // Filtering waits for a pause in typing rather than running on every keystroke: - // on a large trace each pass is real work, and eight of them while typing - // "kernel32" is eight times the work for seven results nobody looks at. - QTimer* m_filterTimer; - void setupUI(); - void applyFilter(); - void updateStatus(); - void showDetail(const TTDApiCall* call); QString extractorPath(bool prompt); void beginOperation(const QString& what, bool cancellable); @@ -316,6 +369,8 @@ class TTDBehaviorWidget : public SidebarWidget void setProgress(double percent, const QString& detail); void consumeExtractorStderr(); + TTDBehaviorQueryWidget* currentQuery() const; + public: TTDBehaviorWidget(BinaryViewRef data); ~TTDBehaviorWidget(); @@ -324,18 +379,15 @@ class TTDBehaviorWidget : public SidebarWidget // that doing it inline freezes the UI -- and installs it when finished. void loadReport(const QString& path); - // Swap in a parsed report and refresh the view. Must run on the UI thread. + // Swap in a parsed report and hand it to every tab. Must run on the UI thread. void installReport(std::shared_ptr report); private Q_SLOTS: void onLoadClicked(); void onExtractClicked(); void onCancelClicked(); - void onFilterTextEdited(); - void onSelectionChanged(); - void onDoubleClicked(const QModelIndex& index); - void onContextMenu(const QPoint& pos); - void copySelectedRows(); + void createNewTab(); + void closeTab(int index); }; From 0338cca2d02e7a62952cbf2511dbd544b8a5bd66 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Wed, 29 Jul 2026 11:49:51 -0400 Subject: [PATCH 11/24] Move TTD behavior reports into core, with a Python binding The reader and query engine were UI-only, so nothing outside the sidebar could ask a trace anything. They now live in core/ttdbehavior.{h,cpp}, de-Qt'd and binary-only: the JSON path is gone, since it cost 16.6s to load where a memory map costs 0.4ms, and it only ever existed for capa, which talks to the extractor directly. The FFI boundary sits where the measurements said it had to. No loop over the call list crosses it: BNTTDBehaviorRunQuery filters all 3.4M calls core-side and returns matching row indices in one crossing, and callers then fetch only the rows they display. Crossing per row instead measured 30-50% worse, two thirds of that being marshalling rather than the call. Measured through the built debuggercore.dll on a 3.4M-call report: open (mmap + header validation) 0.38 ms query "writefile" (text scan) 69.3 ms query "module:kernel32 api:WriteFile" 8.1 ms query "ret:!0" (1.66M rows returned) 19.6 ms 40 visible rows per repaint 19.2 us one call with full parameters 1.9 us The text scan matches what the UI-resident version measured, so the move costs nothing observable. Structured queries are 8x faster than a text scan, because module and api resolve to string-table offsets once and then cost an integer compare per row -- moving to core made querying faster. Python bindings generate from ffi.h automatically; api/python/ttdbehavior.py is the wrapper over them, where report.query(...) yields decoded calls and parameters are decoded lazily. Co-Authored-By: Claude Opus 5 (1M context) --- api/ffi.h | 67 ++++ api/python/ttdbehavior.py | 257 +++++++++++++++ core/ffi.cpp | 188 +++++++++++ core/ttdbehavior.cpp | 679 ++++++++++++++++++++++++++++++++++++++ core/ttdbehavior.h | 188 +++++++++++ 5 files changed, 1379 insertions(+) create mode 100644 api/python/ttdbehavior.py create mode 100644 core/ttdbehavior.cpp create mode 100644 core/ttdbehavior.h diff --git a/api/ffi.h b/api/ffi.h index 61bfc333..06a52ffc 100644 --- a/api/ffi.h +++ b/api/ffi.h @@ -879,6 +879,73 @@ extern "C" DEBUGGER_FFI_API char* BNDebuggerGetWinDbgInstalledVersion(const char* installPath); DEBUGGER_FFI_API char* BNDebuggerGetWinDbgLatestVersion(void); + // TTD behavior reports: the Windows API calls extracted from a TTD trace. + // + // The boundary is drawn so that no loop over the call list crosses it. + // BNTTDBehaviorRunQuery evaluates a whole filter core-side and returns the matching + // row indices in one call, which measures within noise of filtering in-process; + // crossing per row instead costs 30-50%. Callers then fetch only the rows they show. + typedef struct BNTTDBehaviorReport BNTTDBehaviorReport; + + typedef struct BNTTDApiCallParam + { + char* m_name; + char* m_type; + char* m_kind; + uint64_t m_value; + char* m_str; // empty when the parameter is not a string + char** m_flags; // symbolic names for enum/flag parameters + size_t m_flagCount; + uint8_t* m_bytes; // captured buffer contents, possibly only a prefix + size_t m_byteCount; + uint64_t m_bytesTotal; // the buffer's real length when capped, else 0 + uint64_t m_deref; + bool m_hasDeref; + bool m_out; + bool m_atReturn; // re-read at the call's return position + } BNTTDApiCallParam; + + typedef struct BNTTDApiCall + { + uint64_t m_seq; + uint64_t m_tid; + uint64_t m_positionSequence; + uint64_t m_positionSteps; + char* m_module; + char* m_api; + uint64_t m_ret; + uint64_t m_returnAddress; // the instruction after the CALL, i.e. the call site + char* m_paramSummary; + bool m_decoded; + BNTTDApiCallParam* m_params; + size_t m_paramCount; + } BNTTDApiCall; + + // Returns NULL on failure, with *errorMessage set to a string the caller frees with + // BNDebuggerFreeString. + DEBUGGER_FFI_API BNTTDBehaviorReport* BNTTDBehaviorOpenReport(const char* path, char** errorMessage); + DEBUGGER_FFI_API void BNTTDBehaviorCloseReport(BNTTDBehaviorReport* report); + + DEBUGGER_FFI_API uint64_t BNTTDBehaviorGetCallCount(BNTTDBehaviorReport* report); + DEBUGGER_FFI_API uint64_t BNTTDBehaviorGetDecodedCount(BNTTDBehaviorReport* report); + DEBUGGER_FFI_API uint64_t BNTTDBehaviorGetProcessId(BNTTDBehaviorReport* report); + DEBUGGER_FFI_API uint64_t BNTTDBehaviorGetMaxSequence(BNTTDBehaviorReport* report); + DEBUGGER_FFI_API uint32_t BNTTDBehaviorGetMaxPositionChars(BNTTDBehaviorReport* report); + // Both must be freed with BNDebuggerFreeString. + DEBUGGER_FFI_API char* BNTTDBehaviorGetTracePath(BNTTDBehaviorReport* report); + DEBUGGER_FFI_API char* BNTTDBehaviorGetArchitecture(BNTTDBehaviorReport* report); + + // Row indices of every call matching `query`. Free with BNTTDBehaviorFreeQueryResult. + DEBUGGER_FFI_API uint64_t* BNTTDBehaviorRunQuery( + BNTTDBehaviorReport* report, const char* query, size_t* count); + DEBUGGER_FFI_API void BNTTDBehaviorFreeQueryResult(uint64_t* result); + + // Fills `out`, which the caller frees with BNTTDBehaviorFreeCall. Decoding the + // parameters is the expensive half, so a table can pass false and a detail view true. + DEBUGGER_FFI_API bool BNTTDBehaviorGetCall( + BNTTDBehaviorReport* report, uint64_t index, bool withParams, BNTTDApiCall* out); + DEBUGGER_FFI_API void BNTTDBehaviorFreeCall(BNTTDApiCall* call); + #ifdef __cplusplus } #endif diff --git a/api/python/ttdbehavior.py b/api/python/ttdbehavior.py new file mode 100644 index 00000000..1cf04f20 --- /dev/null +++ b/api/python/ttdbehavior.py @@ -0,0 +1,257 @@ +# Copyright 2020-2026 Vector 35 Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Query the Windows API calls extracted from a TTD trace. + +A report is produced by the external extractor (``ttdcapa-extract -b out.ttdb``) and is +memory-mapped rather than parsed, so opening one is effectively free no matter how many +calls it holds. + + >>> from debugger.ttdbehavior import TTDBehaviorReport + >>> with TTDBehaviorReport("NetacLockFile01.ttdb") as report: + ... print(report.call_count) + ... for call in report.query("module:kernel32 api:WriteFile ret:!0"): + ... print(call.position, call.api, call.param_summary) + +``query`` filters entirely inside the core, returning the matching row indices in a +single crossing of the FFI; rows are then decoded only as you touch them. Iterating a +whole multi-million-call report one call at a time from Python is possible but is the +slow way round -- narrow with a query first. +""" + +import ctypes +from dataclasses import dataclass, field +from typing import Iterator, List, Optional, Sequence + +from . import _debuggercore as dbgcore + + +@dataclass +class TTDApiCallParam: + """One decoded parameter. Which fields are meaningful depends on what the Win32 + metadata knew about the parameter.""" + + name: str = "" + type: str = "" + kind: str = "" + value: int = 0 + string: str = "" + flags: List[str] = field(default_factory=list) + data: bytes = b"" + #: The buffer's real length when ``data`` is only a prefix, else 0. + data_total: int = 0 + deref: Optional[int] = None + out: bool = False + #: The value was re-read at the call's return position, which is what makes an + #: [Out] parameter renderable at all. + at_return: bool = False + + @property + def truncated(self) -> bool: + return self.data_total > len(self.data) + + +@dataclass +class TTDApiCall: + """One Windows API call observed during the trace.""" + + index: int = 0 + tid: int = 0 + position_sequence: int = 0 + position_steps: int = 0 + module: str = "" + api: str = "" + ret: int = 0 + #: The instruction after the CALL, i.e. the call site -- which tells you whether the + #: sample made this call itself or something made it on the sample's behalf. + return_address: int = 0 + param_summary: str = "" + #: True when a real signature backed the parameters, rather than the four-register + #: heuristic fallback. + decoded: bool = False + params: List[TTDApiCallParam] = field(default_factory=list) + + @property + def position(self) -> str: + """The TTD position, in the ``Sequence:Steps`` form WinDbg and the debugger use.""" + return "%X:%X" % (self.position_sequence, self.position_steps) + + def __repr__(self) -> str: + return " 0x%x>" % ( + self.position, self.module, self.api, self.param_summary, self.ret) + + +class TTDBehaviorReport: + """A memory-mapped report of the API calls in a TTD trace.""" + + def __init__(self, path: str): + error = ctypes.c_char_p() + handle = dbgcore.BNTTDBehaviorOpenReport(path, ctypes.byref(error)) + if not handle: + message = dbgcore.pyNativeStr(error.value) if error.value else "unknown error" + if error.value: + dbgcore.BNDebuggerFreeString(error) + raise IOError("cannot open %s: %s" % (path, message)) + self.handle = handle + self.path = path + + def __del__(self): + self.close() + + def __enter__(self) -> "TTDBehaviorReport": + return self + + def __exit__(self, exc_type, exc_value, traceback) -> None: + self.close() + + def close(self) -> None: + handle = getattr(self, "handle", None) + if handle: + dbgcore.BNTTDBehaviorCloseReport(handle) + self.handle = None + + def __len__(self) -> int: + return self.call_count + + def __getitem__(self, index: int) -> TTDApiCall: + call = self.get_call(index) + if call is None: + raise IndexError(index) + return call + + def __iter__(self) -> Iterator[TTDApiCall]: + for index in range(self.call_count): + call = self.get_call(index) + if call is not None: + yield call + + def __repr__(self) -> str: + return "" % (self.path, self.call_count, self.architecture) + + @property + def call_count(self) -> int: + return dbgcore.BNTTDBehaviorGetCallCount(self.handle) + + @property + def decoded_count(self) -> int: + """Calls whose parameters came from a real signature rather than the heuristic.""" + return dbgcore.BNTTDBehaviorGetDecodedCount(self.handle) + + @property + def pid(self) -> int: + return dbgcore.BNTTDBehaviorGetProcessId(self.handle) + + @property + def trace_path(self) -> str: + return dbgcore.BNTTDBehaviorGetTracePath(self.handle) or "" + + @property + def architecture(self) -> str: + """``"x86"`` or ``"x64"``, from the traced process rather than the host.""" + return dbgcore.BNTTDBehaviorGetArchitecture(self.handle) or "" + + def query_indices(self, query: str) -> List[int]: + """Row indices matching ``query``, evaluated in one crossing of the FFI. + + The filter runs entirely in the core, so this costs about what filtering in + native code costs -- the boundary is not in the loop. + """ + count = ctypes.c_ulonglong() + result = dbgcore.BNTTDBehaviorRunQuery(self.handle, query, ctypes.byref(count)) + if not result: + return [] + try: + return [int(result[i]) for i in range(count.value)] + finally: + dbgcore.BNTTDBehaviorFreeQueryResult(result) + + def query(self, query: str, with_params: bool = False) -> Iterator[TTDApiCall]: + """Calls matching ``query``, decoded lazily as you iterate. + + Terms are ANDed; a bare word matches anywhere including buffer contents, and + ``field:value`` narrows:: + + module:kernel32 api:WriteFile only kernel32's, not ntdll's + api:Reg* ret:!0 registry calls that failed + retaddr:0x400000-0x500000 calls the sample made itself + tid:4 "c:\\\\windows" thread 4, mentioning that path + + Numeric fields (``tid``, ``ret``, ``retaddr``) take ``!=``, ``>``, ``>=``, + ``<``, ``<=`` and ``a-b`` ranges, decimal or ``0x`` hex. + + Pass ``with_params`` to decode each call's full parameter list; leaving it off + is markedly cheaper when you only need the summary. + """ + for index in self.query_indices(query): + call = self.get_call(index, with_params) + if call is not None: + yield call + + def get_call(self, index: int, with_params: bool = True) -> Optional[TTDApiCall]: + raw = dbgcore.BNTTDApiCall() + if not dbgcore.BNTTDBehaviorGetCall(self.handle, index, with_params, ctypes.byref(raw)): + return None + try: + call = TTDApiCall( + index=raw.m_seq, + tid=raw.m_tid, + position_sequence=raw.m_positionSequence, + position_steps=raw.m_positionSteps, + module=raw.m_module, + api=raw.m_api, + ret=raw.m_ret, + return_address=raw.m_returnAddress, + param_summary=raw.m_paramSummary, + decoded=raw.m_decoded, + ) + for i in range(raw.m_paramCount): + call.params.append(self._convert_param(raw.m_params[i])) + return call + finally: + dbgcore.BNTTDBehaviorFreeCall(ctypes.byref(raw)) + + @staticmethod + def _convert_param(raw) -> TTDApiCallParam: + param = TTDApiCallParam( + name=raw.m_name, + type=raw.m_type, + kind=raw.m_kind, + value=raw.m_value, + string=raw.m_str, + data_total=raw.m_bytesTotal, + deref=raw.m_deref if raw.m_hasDeref else None, + out=raw.m_out, + at_return=raw.m_atReturn, + ) + for f in range(raw.m_flagCount): + param.flags.append(dbgcore.pyNativeStr(raw.m_flags[f])) + if raw.m_byteCount: + param.data = bytes(bytearray(raw.m_bytes[i] for i in range(raw.m_byteCount))) + return param + + +def modules(report: TTDBehaviorReport) -> Sequence[str]: + """Every distinct module seen in the report, in first-call order. + + Convenience for the common "what did this touch?" question; walks the whole report, + so narrow with a query first if you only care about part of it. + """ + seen = [] + known = set() + for call in report: + if call.module not in known: + known.add(call.module) + seen.append(call.module) + return seen diff --git a/core/ffi.cpp b/core/ffi.cpp index f6fd65f6..71879fb8 100644 --- a/core/ffi.cpp +++ b/core/ffi.cpp @@ -20,6 +20,7 @@ limitations under the License. #include "highlevelilinstruction.h" #include "debuggercontroller.h" #include "debuggercommon.h" +#include "ttdbehavior.h" #include "../api/ffi.h" #include #include @@ -2287,3 +2288,190 @@ char* BNDebuggerGetWinDbgLatestVersion(void) } #endif // WIN32 + + +// --- TTD behavior reports --------------------------------------------------------- +// +// Plain open/close rather than the reference-counted handle the controller uses: a +// report is not shared between subsystems, and each consumer maps its own view. + +static TTDBehaviorReport* AsReport(BNTTDBehaviorReport* handle) +{ + return reinterpret_cast(handle); +} + + +BNTTDBehaviorReport* BNTTDBehaviorOpenReport(const char* path, char** errorMessage) +{ + auto* report = new TTDBehaviorReport(); + std::string error; + if (!report->Open(path ? path : "", error)) + { + delete report; + if (errorMessage) + *errorMessage = BNDebuggerAllocString(error.c_str()); + return nullptr; + } + if (errorMessage) + *errorMessage = nullptr; + return reinterpret_cast(report); +} + + +void BNTTDBehaviorCloseReport(BNTTDBehaviorReport* report) +{ + delete AsReport(report); +} + + +uint64_t BNTTDBehaviorGetCallCount(BNTTDBehaviorReport* report) +{ + return report ? AsReport(report)->GetCallCount() : 0; +} + + +uint64_t BNTTDBehaviorGetDecodedCount(BNTTDBehaviorReport* report) +{ + return report ? AsReport(report)->GetDecodedCount() : 0; +} + + +uint64_t BNTTDBehaviorGetProcessId(BNTTDBehaviorReport* report) +{ + return report ? AsReport(report)->GetProcessId() : 0; +} + + +uint64_t BNTTDBehaviorGetMaxSequence(BNTTDBehaviorReport* report) +{ + return report ? AsReport(report)->GetMaxSequence() : 0; +} + + +uint32_t BNTTDBehaviorGetMaxPositionChars(BNTTDBehaviorReport* report) +{ + return report ? AsReport(report)->GetMaxPositionChars() : 0; +} + + +char* BNTTDBehaviorGetTracePath(BNTTDBehaviorReport* report) +{ + return BNDebuggerAllocString(report ? AsReport(report)->GetTracePath().c_str() : ""); +} + + +char* BNTTDBehaviorGetArchitecture(BNTTDBehaviorReport* report) +{ + return BNDebuggerAllocString(report ? AsReport(report)->GetArchitecture().c_str() : ""); +} + + +uint64_t* BNTTDBehaviorRunQuery(BNTTDBehaviorReport* report, const char* query, size_t* count) +{ + *count = 0; + if (!report) + return nullptr; + + std::vector matches = AsReport(report)->RunQuery(query ? query : ""); + *count = matches.size(); + if (matches.empty()) + return nullptr; + + auto* result = new uint64_t[matches.size()]; + std::memcpy(result, matches.data(), matches.size() * sizeof(uint64_t)); + return result; +} + + +void BNTTDBehaviorFreeQueryResult(uint64_t* result) +{ + delete[] result; +} + + +bool BNTTDBehaviorGetCall(BNTTDBehaviorReport* report, uint64_t index, bool withParams, BNTTDApiCall* out) +{ + if (!report || !out) + return false; + + TTDApiCall call; + if (!AsReport(report)->GetCall(index, call, withParams)) + return false; + + out->m_seq = call.seq; + out->m_tid = call.tid; + out->m_positionSequence = call.positionSequence; + out->m_positionSteps = call.positionSteps; + out->m_module = BNDebuggerAllocString(call.module.c_str()); + out->m_api = BNDebuggerAllocString(call.api.c_str()); + out->m_ret = call.ret; + out->m_returnAddress = call.returnAddress; + out->m_paramSummary = BNDebuggerAllocString(call.paramSummary.c_str()); + out->m_decoded = call.decoded; + out->m_paramCount = call.params.size(); + out->m_params = nullptr; + + if (!call.params.empty()) + { + out->m_params = new BNTTDApiCallParam[call.params.size()]; + for (size_t i = 0; i < call.params.size(); ++i) + { + const TTDApiCallParam& src = call.params[i]; + BNTTDApiCallParam& dst = out->m_params[i]; + dst.m_name = BNDebuggerAllocString(src.name.c_str()); + dst.m_type = BNDebuggerAllocString(src.type.c_str()); + dst.m_kind = BNDebuggerAllocString(src.kind.c_str()); + dst.m_value = src.value; + dst.m_str = BNDebuggerAllocString(src.str.c_str()); + dst.m_flagCount = src.flags.size(); + dst.m_flags = nullptr; + if (!src.flags.empty()) + { + dst.m_flags = new char*[src.flags.size()]; + for (size_t f = 0; f < src.flags.size(); ++f) + dst.m_flags[f] = BNDebuggerAllocString(src.flags[f].c_str()); + } + dst.m_byteCount = src.bytes.size(); + dst.m_bytes = nullptr; + if (!src.bytes.empty()) + { + dst.m_bytes = new uint8_t[src.bytes.size()]; + std::memcpy(dst.m_bytes, src.bytes.data(), src.bytes.size()); + } + dst.m_bytesTotal = src.bytesTotal; + dst.m_deref = src.deref; + dst.m_hasDeref = src.hasDeref; + dst.m_out = src.out; + dst.m_atReturn = src.atReturn; + } + } + return true; +} + + +void BNTTDBehaviorFreeCall(BNTTDApiCall* call) +{ + if (!call) + return; + BNDebuggerFreeString(call->m_module); + BNDebuggerFreeString(call->m_api); + BNDebuggerFreeString(call->m_paramSummary); + for (size_t i = 0; i < call->m_paramCount; ++i) + { + BNTTDApiCallParam& p = call->m_params[i]; + BNDebuggerFreeString(p.m_name); + BNDebuggerFreeString(p.m_type); + BNDebuggerFreeString(p.m_kind); + BNDebuggerFreeString(p.m_str); + for (size_t f = 0; f < p.m_flagCount; ++f) + BNDebuggerFreeString(p.m_flags[f]); + delete[] p.m_flags; + delete[] p.m_bytes; + } + delete[] call->m_params; + call->m_params = nullptr; + call->m_paramCount = 0; + call->m_module = nullptr; + call->m_api = nullptr; + call->m_paramSummary = nullptr; +} diff --git a/core/ttdbehavior.cpp b/core/ttdbehavior.cpp new file mode 100644 index 00000000..41fc6da4 --- /dev/null +++ b/core/ttdbehavior.cpp @@ -0,0 +1,679 @@ +/* +Copyright 2020-2026 Vector 35 Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include "ttdbehavior.h" + +#include +#include +#include +#include +#include + +#ifdef WIN32 + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #include +#else + #include + #include + #include + #include +#endif + +using namespace BinaryNinjaDebugger; + +namespace { + // Mirrors ttd-capa's ttd/src/binreport.hpp. Any change there needs one here. + constexpr char kMagic[8] = { 'T', 'T', 'D', 'B', 'E', 'H', 'V', '1' }; + constexpr uint32_t kVersion = 2; // 2 added returnAddress to the call record + constexpr uint64_t kHeaderSize = 128; + constexpr uint64_t kCallRecordSize = 48; + constexpr uint16_t kDecodedFlag = 0x8000; + + enum ParamBits : uint8_t + { + ParamOut = 0x01, + ParamAtReturn = 0x02, + ParamHasDeref = 0x04, + ParamHasStr = 0x08, + ParamHasBytes = 0x10, + ParamHasFlags = 0x20, + }; + + // The extractor writes the parameter kind as a raw byte; these are the display names, + // indexed by that value. Order matches win32meta.hpp's ArgKind. + const char* const kKindNames[] = { "", "int", "bool", "handle", "enum", "float", "double", "str", + "wstr", "strbuf", "wstrbuf", "buf", "int*", "struct*", "fnptr", "guid", "ptr", "str*", "wstr*" }; + + template + T Read(const uint8_t* p) + { + T v {}; + std::memcpy(&v, p, sizeof(T)); + return v; + } + + std::string ToLower(std::string s) + { + std::transform(s.begin(), s.end(), s.begin(), + [](unsigned char c) { return static_cast(std::tolower(c)); }); + return s; + } + + std::string FormatHex(uint64_t value) + { + char buf[32]; + std::snprintf(buf, sizeof(buf), "0x%llx", static_cast(value)); + return buf; + } + + // Decimal, or hex when prefixed with 0x. + bool ParseNumber(const std::string& text, uint64_t& out) + { + if (text.empty()) + return false; + try + { + size_t consumed = 0; + bool hex = text.size() > 2 && text[0] == '0' && (text[1] == 'x' || text[1] == 'X'); + out = std::stoull(hex ? text.substr(2) : text, &consumed, hex ? 16 : 10); + return consumed == (hex ? text.size() - 2 : text.size()); + } + catch (...) + { + return false; + } + } + + // `!0`, `>0x1000`, `>=5`, `<10`, `<=10`, `0x400000-0x500000`, or a plain value. + bool ParseNumeric(const std::string& text, TTDBehaviorQuery::Numeric& out) + { + std::string value = text; + if (value.rfind("!", 0) == 0) + { + out.op = TTDBehaviorQuery::Numeric::NotEqual; + value = value.substr(1); + } + else if (value.rfind(">=", 0) == 0) + { + out.op = TTDBehaviorQuery::Numeric::GreaterEqual; + value = value.substr(2); + } + else if (value.rfind("<=", 0) == 0) + { + out.op = TTDBehaviorQuery::Numeric::LessEqual; + value = value.substr(2); + } + else if (value.rfind(">", 0) == 0) + { + out.op = TTDBehaviorQuery::Numeric::Greater; + value = value.substr(1); + } + else if (value.rfind("<", 0) == 0) + { + out.op = TTDBehaviorQuery::Numeric::Less; + value = value.substr(1); + } + else + { + // A '-' separating two numbers is a range. Searched past any 0x so the hex + // digits of a lone value are not mistaken for one. + size_t from = (value.size() > 2 && value[0] == '0' && (value[1] == 'x' || value[1] == 'X')) ? 2 : 1; + size_t dash = value.find('-', from); + if (dash != std::string::npos) + { + if (!ParseNumber(value.substr(0, dash), out.a) || !ParseNumber(value.substr(dash + 1), out.b)) + return false; + out.op = TTDBehaviorQuery::Numeric::Range; + return true; + } + } + return ParseNumber(value, out.a); + } + + // Split on whitespace, honouring double quotes so a phrase can contain spaces. + std::vector SplitTerms(const std::string& text) + { + std::vector terms; + std::string current; + bool inQuotes = false; + for (char c : text) + { + if (c == '"') + inQuotes = !inQuotes; + else if (std::isspace(static_cast(c)) && !inQuotes) + { + if (!current.empty()) + terms.push_back(current); + current.clear(); + } + else + current += c; + } + if (!current.empty()) + terms.push_back(current); + return terms; + } +} // namespace + + +bool TTDBehaviorQuery::Numeric::Test(uint64_t value) const +{ + switch (op) + { + case NotEqual: + return value != a; + case Greater: + return value > a; + case GreaterEqual: + return value >= a; + case Less: + return value < a; + case LessEqual: + return value <= a; + case Range: + return value >= a && value <= b; + case Equal: + default: + return value == a; + } +} + + +void TTDBehaviorQuery::Parse(const std::string& text) +{ + m_terms.clear(); + for (const std::string& raw : SplitTerms(text)) + { + Term term; + size_t colon = raw.find(':'); + std::string field = colon != std::string::npos && colon > 0 ? ToLower(raw.substr(0, colon)) : std::string(); + std::string value = colon != std::string::npos && colon > 0 ? raw.substr(colon + 1) : raw; + + // An unknown prefix is not an error: "c:\windows" should search for that text, + // not complain about a field called "c". + bool numericField = false; + if (field == "module" || field == "mod") + term.field = Field::Module; + else if (field == "api" || field == "func" || field == "function") + term.field = Field::Api; + else if (field == "tid" || field == "thread") + { + term.field = Field::Tid; + numericField = true; + } + else if (field == "ret" || field == "return") + { + term.field = Field::Ret; + numericField = true; + } + else if (field == "retaddr" || field == "caller" || field == "from") + { + term.field = Field::RetAddr; + numericField = true; + } + else + { + term.field = Field::Text; + value = raw; + } + + if (numericField) + { + if (!ParseNumeric(value, term.numeric)) + { + // Unparseable number: treat the whole thing as text so the row set does + // not silently become everything. + term.field = Field::Text; + term.text = ToLower(raw); + m_terms.push_back(std::move(term)); + continue; + } + } + else + { + if (!value.empty() && value.back() == '*') + { + term.prefix = true; + value.pop_back(); + } + if (value.empty()) + continue; + term.text = ToLower(value); + } + m_terms.push_back(std::move(term)); + } +} + + +TTDBehaviorReport::~TTDBehaviorReport() +{ + Close(); +} + + +void TTDBehaviorReport::Close() +{ +#ifdef WIN32 + if (m_map != nullptr) + ::UnmapViewOfFile(const_cast(m_map)); + if (m_mappingHandle != nullptr) + ::CloseHandle(m_mappingHandle); + if (m_fileHandle != nullptr && m_fileHandle != INVALID_HANDLE_VALUE) + ::CloseHandle(m_fileHandle); +#else + if (m_map != nullptr) + ::munmap(const_cast(m_map), static_cast(m_mapSize)); + if (m_fileHandle != nullptr) + ::close(static_cast(reinterpret_cast(m_fileHandle)) - 1); +#endif + m_map = nullptr; + m_mappingHandle = nullptr; + m_fileHandle = nullptr; + m_mapSize = 0; + m_callCount = 0; + m_decodedCount = 0; + m_maxSeq = 0; + m_pid = 0; + m_maxPositionChars = 0; + m_path.clear(); + m_tracePath.clear(); + m_arch.clear(); +} + + +bool TTDBehaviorReport::Open(const std::string& path, std::string& error) +{ + Close(); + + const uint8_t* map = nullptr; + uint64_t size = 0; + +#ifdef WIN32 + HANDLE file = ::CreateFileA( + path.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + if (file == INVALID_HANDLE_VALUE) + { + error = "cannot open " + path; + return false; + } + LARGE_INTEGER fileSize {}; + if (!::GetFileSizeEx(file, &fileSize) || static_cast(fileSize.QuadPart) < kHeaderSize) + { + ::CloseHandle(file); + error = "report is too small to contain a header"; + return false; + } + HANDLE mapping = ::CreateFileMappingA(file, nullptr, PAGE_READONLY, 0, 0, nullptr); + if (mapping == nullptr) + { + ::CloseHandle(file); + error = "cannot create a mapping for " + path; + return false; + } + map = static_cast(::MapViewOfFile(mapping, FILE_MAP_READ, 0, 0, 0)); + if (map == nullptr) + { + ::CloseHandle(mapping); + ::CloseHandle(file); + error = "cannot map " + path; + return false; + } + size = static_cast(fileSize.QuadPart); + m_fileHandle = file; + m_mappingHandle = mapping; +#else + int fd = ::open(path.c_str(), O_RDONLY); + if (fd < 0) + { + error = "cannot open " + path; + return false; + } + struct stat st {}; + if (::fstat(fd, &st) != 0 || static_cast(st.st_size) < kHeaderSize) + { + ::close(fd); + error = "report is too small to contain a header"; + return false; + } + void* addr = ::mmap(nullptr, static_cast(st.st_size), PROT_READ, MAP_PRIVATE, fd, 0); + if (addr == MAP_FAILED) + { + ::close(fd); + error = "cannot map " + path; + return false; + } + map = static_cast(addr); + size = static_cast(st.st_size); + // Stored offset by one so that fd 0 is distinguishable from "no handle". + m_fileHandle = reinterpret_cast(static_cast(fd) + 1); +#endif + + m_map = map; + m_mapSize = size; + + if (std::memcmp(map, kMagic, sizeof(kMagic)) != 0) + { + Close(); + error = "not a TTD behavior report"; + return false; + } + uint32_t version = Read(map + 8); + if (version != kVersion) + { + Close(); + error = "report format version " + std::to_string(version) + " is not supported (expected " + + std::to_string(kVersion) + "); re-extract it"; + return false; + } + + uint32_t archId = Read(map + 12); + m_callCount = Read(map + 16); + m_pid = Read(map + 32); + m_callsOff = Read(map + 40); + m_paramsOff = Read(map + 48); + m_stringsOff = Read(map + 56); + m_stringsSize = Read(map + 64); + m_blobOff = Read(map + 72); + m_blobSize = Read(map + 80); + m_decodedCount = Read(map + 88); + m_maxSeq = Read(map + 96); + uint32_t tracePathStr = Read(map + 104); + m_maxPositionChars = Read(map + 112); + + // Refuse a file whose regions do not fit rather than trusting offsets from disk. + auto withinFile = [size](uint64_t off, uint64_t len) { + return off <= size && len <= size - off; + }; + if (!withinFile(m_callsOff, m_callCount * kCallRecordSize) || !withinFile(m_stringsOff, m_stringsSize) + || !withinFile(m_blobOff, m_blobSize)) + { + Close(); + error = "report header describes regions outside the file; it may be truncated"; + return false; + } + + m_path = path; + m_arch = archId == 1 ? "x86" : "x64"; + m_tracePath = MappedString(tracePathStr); + return true; +} + + +const uint8_t* TTDBehaviorReport::CallRecord(uint64_t index) const +{ + return m_map + m_callsOff + index * kCallRecordSize; +} + + +std::string TTDBehaviorReport::MappedString(uint32_t offset) const +{ + if (m_map == nullptr || offset >= m_stringsSize) + return std::string(); + const char* start = reinterpret_cast(m_map + m_stringsOff + offset); + size_t maxLen = static_cast(m_stringsSize - offset); + size_t len = 0; + while (len < maxLen && start[len] != '\0') + ++len; + return std::string(start, len); +} + + +void TTDBehaviorReport::ForEachString(const std::function& fn) const +{ + if (m_map == nullptr) + return; + const char* base = reinterpret_cast(m_map + m_stringsOff); + uint64_t offset = 0; + while (offset < m_stringsSize) + { + size_t length = 0; + while (offset + length < m_stringsSize && base[offset + length] != '\0') + ++length; + if (length != 0) + fn(static_cast(offset), base + offset, length); + offset += length + 1; + } +} + + +void TTDBehaviorReport::ResolveQuery(TTDBehaviorQuery& query) const +{ + bool needsStrings = false; + for (TTDBehaviorQuery::Term& t : query.GetTerms()) + { + t.stringOffsets.clear(); + if (t.field == TTDBehaviorQuery::Field::Module || t.field == TTDBehaviorQuery::Field::Api) + needsStrings = true; + } + if (!needsStrings || m_map == nullptr) + return; + + // One pass over the string table -- a few thousand entries, not a few million rows -- + // collecting the offsets each module/api term accepts. Matching a row afterwards is + // then a lookup in a handful of integers. + ForEachString([&query](uint32_t offset, const char* text, size_t length) { + std::string lowered = ToLower(std::string(text, length)); + for (TTDBehaviorQuery::Term& t : query.GetTerms()) + { + if (t.field != TTDBehaviorQuery::Field::Module && t.field != TTDBehaviorQuery::Field::Api) + continue; + bool hit = t.prefix ? lowered.rfind(t.text, 0) == 0 : lowered == t.text; + if (hit) + t.stringOffsets.push_back(offset); + } + }); + + for (TTDBehaviorQuery::Term& t : query.GetTerms()) + std::sort(t.stringOffsets.begin(), t.stringOffsets.end()); +} + + +bool TTDBehaviorReport::Matches(uint64_t index, const TTDBehaviorQuery& query) const +{ + if (query.IsEmpty()) + return true; + if (m_map == nullptr || index >= m_callCount) + return false; + + const uint8_t* rec = CallRecord(index); + for (const TTDBehaviorQuery::Term& t : query.GetTerms()) + { + bool ok = true; + switch (t.field) + { + case TTDBehaviorQuery::Field::Text: + { + uint32_t searchOff = Read(rec + 32); + uint16_t searchLen = Read(rec + 38); + // searchOff is relative to the blob region, so it is bounded against the + // region's size rather than its position in the file. + if (static_cast(searchOff) + searchLen > m_blobSize) + return false; + std::string_view hay(reinterpret_cast(m_map + m_blobOff + searchOff), searchLen); + ok = hay.find(t.text) != std::string_view::npos; + break; + } + case TTDBehaviorQuery::Field::Module: + case TTDBehaviorQuery::Field::Api: + { + uint32_t offset = Read(rec + (t.field == TTDBehaviorQuery::Field::Module ? 20 : 24)); + ok = std::binary_search(t.stringOffsets.begin(), t.stringOffsets.end(), offset); + break; + } + case TTDBehaviorQuery::Field::Tid: + ok = t.numeric.Test(Read(rec + 8)); + break; + case TTDBehaviorQuery::Field::Ret: + ok = t.numeric.Test(Read(rec + 0)); + break; + case TTDBehaviorQuery::Field::RetAddr: + ok = t.numeric.Test(Read(rec + 40)); + break; + } + if (!ok) + return false; + } + return true; +} + + +std::vector TTDBehaviorReport::RunQuery(TTDBehaviorQuery& query) const +{ + std::vector result; + if (m_map == nullptr) + return result; + ResolveQuery(query); + if (query.IsEmpty()) + { + result.resize(static_cast(m_callCount)); + for (uint64_t i = 0; i < m_callCount; ++i) + result[static_cast(i)] = i; + return result; + } + for (uint64_t i = 0; i < m_callCount; ++i) + { + if (Matches(i, query)) + result.push_back(i); + } + return result; +} + + +std::vector TTDBehaviorReport::RunQuery(const std::string& query) const +{ + TTDBehaviorQuery parsed; + parsed.Parse(query); + return RunQuery(parsed); +} + + +bool TTDBehaviorReport::GetCall(uint64_t index, TTDApiCall& out, bool withParams) const +{ + if (m_map == nullptr || index >= m_callCount) + return false; + + const uint8_t* rec = CallRecord(index); + out.params.clear(); + out.seq = index; // recorded calls are numbered densely, so the row index is the seq + out.ret = Read(rec + 0); + out.tid = Read(rec + 8); + out.positionSequence = Read(rec + 12); + out.positionSteps = Read(rec + 16); + out.module = MappedString(Read(rec + 20)); + out.api = MappedString(Read(rec + 24)); + out.returnAddress = Read(rec + 40); + + uint32_t paramOff = Read(rec + 28); + uint16_t rawCount = Read(rec + 36); + out.decoded = (rawCount & kDecodedFlag) != 0; + int paramCount = rawCount & ~kDecodedFlag; + + // The parameter region is variable-length, so a call's parameters are decoded in + // sequence from its offset. Only ever done for rows something actually asked about. + const uint8_t* p = m_map + m_paramsOff + paramOff; + const uint8_t* blob = m_map + m_blobOff; + std::string summary; + for (int i = 0; i < paramCount; ++i) + { + uint8_t kind = *p++; + uint8_t bits = *p++; + uint32_t nameStr = Read(p); + p += 4; + uint32_t typeStr = Read(p); + p += 4; + + TTDApiCallParam param; + param.name = MappedString(nameStr); + param.type = MappedString(typeStr); + param.kind = kind < (sizeof(kKindNames) / sizeof(kKindNames[0])) ? kKindNames[kind] : ""; + param.value = Read(p); + p += 8; + param.out = (bits & ParamOut) != 0; + param.atReturn = (bits & ParamAtReturn) != 0; + + if (bits & ParamHasDeref) + { + param.hasDeref = true; + param.deref = Read(p); + p += 8; + } + if (bits & ParamHasStr) + { + uint32_t off = Read(p); + uint32_t len = Read(p + 4); + p += 8; + param.str.assign(reinterpret_cast(blob + off), len); + } + if (bits & ParamHasBytes) + { + uint32_t off = Read(p); + uint32_t len = Read(p + 4); + param.bytesTotal = Read(p + 8); + p += 16; + param.bytes.assign(blob + off, blob + off + len); + } + if (bits & ParamHasFlags) + { + uint32_t off = Read(p); + uint32_t len = Read(p + 4); + p += 8; + std::string joined(reinterpret_cast(blob + off), len); + size_t start = 0; + while (start <= joined.size()) + { + size_t bar = joined.find('|', start); + if (bar == std::string::npos) + { + if (start < joined.size()) + param.flags.push_back(joined.substr(start)); + break; + } + param.flags.push_back(joined.substr(start, bar - start)); + start = bar + 1; + } + } + + // Rendered the way it reads best given what the decoder recovered: a resolved + // string beats symbolic flags, which beat a raw value. + std::string rendered; + if (!param.str.empty()) + rendered = "\"" + param.str + "\""; + else if (!param.flags.empty()) + { + for (size_t f = 0; f < param.flags.size(); ++f) + { + if (f != 0) + rendered += "|"; + rendered += param.flags[f]; + } + } + else if (param.hasDeref) + rendered = FormatHex(param.value) + " -> " + FormatHex(param.deref); + else + rendered = FormatHex(param.value); + + if (!summary.empty()) + summary += ", "; + summary += out.decoded && !param.name.empty() ? param.name + "=" + rendered : rendered; + + if (withParams) + out.params.push_back(std::move(param)); + } + out.paramSummary = std::move(summary); + return true; +} diff --git a/core/ttdbehavior.h b/core/ttdbehavior.h new file mode 100644 index 00000000..da312a6f --- /dev/null +++ b/core/ttdbehavior.h @@ -0,0 +1,188 @@ +/* +Copyright 2020-2026 Vector 35 Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#pragma once + +// Reader and query engine for the Windows API calls extracted from a TTD trace. +// +// The report is written by an external extractor in a compact layout designed to be +// memory-mapped and read in place -- see ttd-capa's ttd/src/binreport.hpp for the format. +// Nothing is parsed on open and nothing is allocated per call: a 3.4M-call report costs +// a header validation instead of the ~17s and ~1.4GB that parsing the equivalent JSON +// did. Records are decoded out of the mapping only when something asks for a row. +// +// This lives in core rather than the UI so that queries are available over the FFI, and +// therefore from Python. The boundary is drawn so that no loop over the call list ever +// crosses it: RunQuery evaluates the whole filter here and hands back matching row +// indices in one call, which measures within noise of doing it in-process, where +// crossing per row costs 30-50%. + +#include +#include +#include +#include + +namespace BinaryNinjaDebugger { + + // One decoded parameter of an API call. Which fields are meaningful depends on what + // the Win32 metadata said about the parameter; `has*` flags say which. + struct TTDApiCallParam + { + std::string name; + std::string type; + std::string kind; + uint64_t value = 0; + std::string str; // resolved ANSI/UTF-16 string + std::vector flags; // symbolic names for enum/flag parameters + std::vector bytes; // captured buffer contents, possibly a prefix + uint64_t bytesTotal = 0; // real length when `bytes` was capped, else 0 + uint64_t deref = 0; // pointee, for int*-like parameters + bool hasDeref = false; + bool out = false; + bool atReturn = false; // re-read at the call's return position + }; + + + struct TTDApiCall + { + uint64_t seq = 0; + uint64_t tid = 0; + uint64_t positionSequence = 0; + uint64_t positionSteps = 0; + std::string module; + std::string api; + uint64_t ret = 0; + uint64_t returnAddress = 0; // the instruction after the CALL, i.e. the call site + std::vector params; + bool decoded = false; // a real signature backed this call's parameters + std::string paramSummary; // single-line rendering, for a table cell + }; + + + // A parsed filter expression: whitespace-separated terms, ANDed. A bare word (or + // "quoted phrase") matches anywhere in a call's searchable text; `field:value` + // narrows to one field. + // + // module:kernel32 api:WriteFile only kernel32's, not ntdll's + // api:Reg* ret:!0 registry calls that failed + // retaddr:0x400000-0x500000 calls the sample made itself + // + // module and api resolve against the report's deduplicated string table once per + // query, so evaluating them per row is an integer compare rather than a search. + class TTDBehaviorQuery + { + public: + struct Numeric + { + enum Op { Equal, NotEqual, Greater, GreaterEqual, Less, LessEqual, Range }; + Op op = Equal; + uint64_t a = 0; + uint64_t b = 0; + bool Test(uint64_t value) const; + }; + + enum class Field { Text, Module, Api, Tid, Ret, RetAddr }; + + struct Term + { + Field field = Field::Text; + std::string text; + bool prefix = false; + Numeric numeric; + std::vector stringOffsets; + }; + + // Never fails: anything that does not look like a field term is treated as text, + // so a half-typed query narrows rather than erroring. + void Parse(const std::string& text); + bool IsEmpty() const { return m_terms.empty(); } + const std::vector& GetTerms() const { return m_terms; } + std::vector& GetTerms() { return m_terms; } + + private: + std::vector m_terms; + }; + + + class TTDBehaviorReport + { + public: + TTDBehaviorReport() = default; + ~TTDBehaviorReport(); + TTDBehaviorReport(const TTDBehaviorReport&) = delete; + TTDBehaviorReport& operator=(const TTDBehaviorReport&) = delete; + + // Maps the report at `path`. Returns false with `error` set; the object is left + // closed and safe to destroy. + bool Open(const std::string& path, std::string& error); + void Close(); + bool IsOpen() const { return m_map != nullptr; } + + const std::string& GetPath() const { return m_path; } + const std::string& GetTracePath() const { return m_tracePath; } + const std::string& GetArchitecture() const { return m_arch; } + uint64_t GetProcessId() const { return m_pid; } + uint64_t GetCallCount() const { return m_callCount; } + uint64_t GetDecodedCount() const { return m_decodedCount; } + uint64_t GetMaxSequence() const { return m_maxSeq; } + uint32_t GetMaxPositionChars() const { return m_maxPositionChars; } + + // Decode one call. `withParams` is the expensive half, so a table can skip it and + // only a detail view asks for it. + bool GetCall(uint64_t index, TTDApiCall& out, bool withParams) const; + + // Evaluate `query` over every call and return the matching row indices. One call + // does the whole filter, which is what keeps this affordable across the FFI. + std::vector RunQuery(const std::string& query) const; + + // Same, for a query already parsed and resolved against this report. + std::vector RunQuery(TTDBehaviorQuery& query) const; + + // Bind a query's module/api terms to this report's string table. + void ResolveQuery(TTDBehaviorQuery& query) const; + + bool Matches(uint64_t index, const TTDBehaviorQuery& query) const; + + private: + const uint8_t* CallRecord(uint64_t index) const; + std::string MappedString(uint32_t offset) const; + void ForEachString(const std::function& fn) const; + + std::string m_path; + std::string m_tracePath; + std::string m_arch; + + // Platform handles for the mapping, opaque here to keep windows.h out of the + // header. + void* m_fileHandle = nullptr; + void* m_mappingHandle = nullptr; + const uint8_t* m_map = nullptr; + uint64_t m_mapSize = 0; + + uint64_t m_callCount = 0; + uint64_t m_decodedCount = 0; + uint64_t m_maxSeq = 0; + uint64_t m_pid = 0; + uint32_t m_maxPositionChars = 0; + uint64_t m_callsOff = 0; + uint64_t m_paramsOff = 0; + uint64_t m_stringsOff = 0; + uint64_t m_stringsSize = 0; + uint64_t m_blobOff = 0; + uint64_t m_blobSize = 0; + }; + +} // namespace BinaryNinjaDebugger From 20ae2232de63788dc4fae967687801c0c0e10048 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Wed, 29 Jul 2026 12:32:06 -0400 Subject: [PATCH 12/24] Drop the UI's copy of the report reader and use the core API The widget carried its own Qt implementation of the reader and query engine alongside core's, which is two of everything to keep in step. It now goes through BinaryNinjaDebuggerAPI::TTDBehaviorReport, so the sidebar and Python run the same code. The model gets simpler for it: filtering was a hand-rolled scan, and is now one RunQuery call that returns the matching rows. Rows are still decoded one at a time into a single-row cache, since nothing is held as objects. Also exports the report types from the debugger Python package, which is what was missing to make them reachable from the console, and adds the C++ API wrapper the UI needed. Co-Authored-By: Claude Opus 5 (1M context) --- api/debuggerapi.h | 66 +++ api/python/__init__.py | 2 + api/python/ttdbehavior.py | 2 + api/ttdbehavior.cpp | 168 ++++++++ ui/ttdbehaviorwidget.cpp | 864 ++++---------------------------------- ui/ttdbehaviorwidget.h | 193 +-------- 6 files changed, 335 insertions(+), 960 deletions(-) create mode 100644 api/ttdbehavior.cpp diff --git a/api/debuggerapi.h b/api/debuggerapi.h index 0ff27f12..63d59351 100644 --- a/api/debuggerapi.h +++ b/api/debuggerapi.h @@ -983,4 +983,70 @@ namespace BinaryNinjaDebuggerAPI { std::string GetWinDbgInstalledVersion(const std::string& installPath = ""); std::string GetWinDbgLatestVersion(); + // A memory-mapped report of the Windows API calls extracted from a TTD trace. + // + // Thin wrapper over the core reader: opening is a header validation, and rows are + // decoded out of the mapping only when asked for. RunQuery filters the whole report + // on the core side and hands back matching row indices in one crossing, which is + // what keeps filtering millions of calls affordable through the FFI. + struct TTDApiCallParam + { + std::string name; + std::string type; + std::string kind; + uint64_t value = 0; + std::string str; + std::vector flags; + std::vector bytes; + uint64_t bytesTotal = 0; // the buffer's real length when `bytes` was capped + uint64_t deref = 0; + bool hasDeref = false; + bool out = false; + bool atReturn = false; + }; + + struct TTDApiCall + { + uint64_t seq = 0; + uint64_t tid = 0; + uint64_t positionSequence = 0; + uint64_t positionSteps = 0; + std::string module; + std::string api; + uint64_t ret = 0; + uint64_t returnAddress = 0; + std::string paramSummary; + bool decoded = false; + std::vector params; + }; + + class TTDBehaviorReport + { + BNTTDBehaviorReport* m_object = nullptr; + + public: + TTDBehaviorReport() = default; + ~TTDBehaviorReport(); + TTDBehaviorReport(const TTDBehaviorReport&) = delete; + TTDBehaviorReport& operator=(const TTDBehaviorReport&) = delete; + + bool Open(const std::string& path, std::string& error); + void Close(); + bool IsOpen() const { return m_object != nullptr; } + + uint64_t GetCallCount() const; + uint64_t GetDecodedCount() const; + uint64_t GetProcessId() const; + uint64_t GetMaxSequence() const; + uint32_t GetMaxPositionChars() const; + std::string GetTracePath() const; + std::string GetArchitecture() const; + + // Row indices of every call matching `query`. + std::vector RunQuery(const std::string& query) const; + + // `withParams` is the expensive half, so a table can skip it. + bool GetCall(uint64_t index, TTDApiCall& out, bool withParams) const; + }; + }; // namespace BinaryNinjaDebuggerAPI diff --git a/api/python/__init__.py b/api/python/__init__.py index f60836d7..a963e9a0 100644 --- a/api/python/__init__.py +++ b/api/python/__init__.py @@ -25,8 +25,10 @@ from .debuggercontroller import * from .debugadaptertype import * from .debugger_enums import * + from .ttdbehavior import * else: if Settings().get_bool('corePlugins.debugger') and (os.environ.get('BN_DISABLE_CORE_DEBUGGER') is None): from .debuggercontroller import * from .debugadaptertype import * from .debugger_enums import * + from .ttdbehavior import * diff --git a/api/python/ttdbehavior.py b/api/python/ttdbehavior.py index 1cf04f20..04e5502b 100644 --- a/api/python/ttdbehavior.py +++ b/api/python/ttdbehavior.py @@ -37,6 +37,8 @@ from . import _debuggercore as dbgcore +__all__ = ["TTDBehaviorReport", "TTDApiCall", "TTDApiCallParam"] + @dataclass class TTDApiCallParam: diff --git a/api/ttdbehavior.cpp b/api/ttdbehavior.cpp new file mode 100644 index 00000000..1a947b0f --- /dev/null +++ b/api/ttdbehavior.cpp @@ -0,0 +1,168 @@ +/* +Copyright 2020-2026 Vector 35 Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include "debuggerapi.h" + +using namespace BinaryNinjaDebuggerAPI; + +namespace { + // Every char* the FFI hands back is ours to free. + std::string TakeString(char* raw) + { + if (raw == nullptr) + return std::string(); + std::string result(raw); + BNDebuggerFreeString(raw); + return result; + } +} // namespace + + +TTDBehaviorReport::~TTDBehaviorReport() +{ + Close(); +} + + +bool TTDBehaviorReport::Open(const std::string& path, std::string& error) +{ + Close(); + char* errorMessage = nullptr; + m_object = BNTTDBehaviorOpenReport(path.c_str(), &errorMessage); + if (m_object == nullptr) + { + error = TakeString(errorMessage); + return false; + } + return true; +} + + +void TTDBehaviorReport::Close() +{ + if (m_object != nullptr) + { + BNTTDBehaviorCloseReport(m_object); + m_object = nullptr; + } +} + + +uint64_t TTDBehaviorReport::GetCallCount() const +{ + return m_object ? BNTTDBehaviorGetCallCount(m_object) : 0; +} + + +uint64_t TTDBehaviorReport::GetDecodedCount() const +{ + return m_object ? BNTTDBehaviorGetDecodedCount(m_object) : 0; +} + + +uint64_t TTDBehaviorReport::GetProcessId() const +{ + return m_object ? BNTTDBehaviorGetProcessId(m_object) : 0; +} + + +uint64_t TTDBehaviorReport::GetMaxSequence() const +{ + return m_object ? BNTTDBehaviorGetMaxSequence(m_object) : 0; +} + + +uint32_t TTDBehaviorReport::GetMaxPositionChars() const +{ + return m_object ? BNTTDBehaviorGetMaxPositionChars(m_object) : 0; +} + + +std::string TTDBehaviorReport::GetTracePath() const +{ + return m_object ? TakeString(BNTTDBehaviorGetTracePath(m_object)) : std::string(); +} + + +std::string TTDBehaviorReport::GetArchitecture() const +{ + return m_object ? TakeString(BNTTDBehaviorGetArchitecture(m_object)) : std::string(); +} + + +std::vector TTDBehaviorReport::RunQuery(const std::string& query) const +{ + std::vector result; + if (m_object == nullptr) + return result; + + size_t count = 0; + uint64_t* rows = BNTTDBehaviorRunQuery(m_object, query.c_str(), &count); + if (rows == nullptr) + return result; + result.assign(rows, rows + count); + BNTTDBehaviorFreeQueryResult(rows); + return result; +} + + +bool TTDBehaviorReport::GetCall(uint64_t index, TTDApiCall& out, bool withParams) const +{ + if (m_object == nullptr) + return false; + + BNTTDApiCall raw {}; + if (!BNTTDBehaviorGetCall(m_object, index, withParams, &raw)) + return false; + + out.seq = raw.m_seq; + out.tid = raw.m_tid; + out.positionSequence = raw.m_positionSequence; + out.positionSteps = raw.m_positionSteps; + out.module = raw.m_module ? raw.m_module : ""; + out.api = raw.m_api ? raw.m_api : ""; + out.ret = raw.m_ret; + out.returnAddress = raw.m_returnAddress; + out.paramSummary = raw.m_paramSummary ? raw.m_paramSummary : ""; + out.decoded = raw.m_decoded; + + out.params.clear(); + out.params.reserve(raw.m_paramCount); + for (size_t i = 0; i < raw.m_paramCount; ++i) + { + const BNTTDApiCallParam& src = raw.m_params[i]; + TTDApiCallParam param; + param.name = src.m_name ? src.m_name : ""; + param.type = src.m_type ? src.m_type : ""; + param.kind = src.m_kind ? src.m_kind : ""; + param.value = src.m_value; + param.str = src.m_str ? src.m_str : ""; + for (size_t f = 0; f < src.m_flagCount; ++f) + param.flags.emplace_back(src.m_flags[f] ? src.m_flags[f] : ""); + if (src.m_byteCount != 0 && src.m_bytes != nullptr) + param.bytes.assign(src.m_bytes, src.m_bytes + src.m_byteCount); + param.bytesTotal = src.m_bytesTotal; + param.deref = src.m_deref; + param.hasDeref = src.m_hasDeref; + param.out = src.m_out; + param.atReturn = src.m_atReturn; + out.params.push_back(std::move(param)); + } + + // The strings and arrays above were copied, so the FFI's allocation goes back now. + BNTTDBehaviorFreeCall(&raw); + return true; +} diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index b1624ae6..7a5b0782 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -136,14 +136,32 @@ namespace { // One parameter, rendered the way it reads best given what the decoder recovered: // a resolved string beats symbolic flags, which beat a raw value. + QString formatPosition(const TTDApiCall& call) + { + return QString("%1:%2").arg(call.positionSequence, 0, 16).arg(call.positionSteps, 0, 16).toUpper(); + } + + + QByteArray toByteArray(const std::vector& bytes) + { + return QByteArray(reinterpret_cast(bytes.data()), static_cast(bytes.size())); + } + + QString formatParamValue(const TTDApiCallParam& param) { - if (!param.str.isEmpty()) - return QString("\"%1\"").arg(elide(escapeString(param.str), kMaxStringDisplay)); - if (!param.flags.isEmpty()) - return param.flags.join('|'); - if (!param.bytes.isEmpty()) - return QString("%1 -> [%2]").arg(formatHex(param.value), bytesPreview(param.bytes)); + if (!param.str.empty()) + return QString("\"%1\"").arg( + elide(escapeString(QString::fromStdString(param.str)), kMaxStringDisplay)); + if (!param.flags.empty()) + { + QStringList names; + for (const std::string& flag : param.flags) + names.append(QString::fromStdString(flag)); + return names.join('|'); + } + if (!param.bytes.empty()) + return QString("%1 -> [%2]").arg(formatHex(param.value), bytesPreview(toByteArray(param.bytes))); if (param.hasDeref) return QString("%1 -> %2").arg(formatHex(param.value), formatHex(param.deref)); return formatHex(param.value); @@ -169,730 +187,6 @@ namespace { } // namespace -// Mirrors ttd/src/binreport.hpp in the extractor. Any change there needs one here. -namespace binfmt { - constexpr char kMagic[8] = { 'T', 'T', 'D', 'B', 'E', 'H', 'V', '1' }; - constexpr uint32_t kVersion = 2; // 2 added returnAddress to the call record - constexpr int kHeaderSize = 128; - constexpr int kCallRecordSize = 48; - constexpr uint16_t kDecodedFlag = 0x8000; - - enum ParamBits : uint8_t - { - Out = 0x01, - AtReturn = 0x02, - HasDeref = 0x04, - HasStr = 0x08, - HasBytes = 0x10, - HasFlags = 0x20, - }; - - // The extractor writes ArgKind as a raw byte; these are the names the detail pane - // shows, indexed by that value. Order matches win32meta.hpp's ArgKind. - const char* const kKindNames[] = { "", "int", "bool", "handle", "enum", "float", "double", "str", - "wstr", "strbuf", "wstrbuf", "buf", "int*", "struct*", "fnptr", "guid", "ptr", "str*", - "wstr*" }; - - template - T read(const uint8_t* p) - { - T v {}; - std::memcpy(&v, p, sizeof(T)); - return v; - } -} // namespace binfmt - - -bool TTDBehaviorQuery::Numeric::test(uint64_t value) const -{ - switch (op) - { - case NotEqual: - return value != a; - case Greater: - return value > a; - case GreaterEqual: - return value >= a; - case Less: - return value < a; - case LessEqual: - return value <= a; - case Range: - return value >= a && value <= b; - case Equal: - default: - return value == a; - } -} - - -namespace { - // Accepts decimal or 0x-prefixed hex. - bool parseNumber(const QString& text, uint64_t& out) - { - QString trimmed = text.trimmed(); - if (trimmed.isEmpty()) - return false; - bool ok = false; - out = trimmed.startsWith("0x", Qt::CaseInsensitive) ? trimmed.mid(2).toULongLong(&ok, 16) - : trimmed.toULongLong(&ok, 10); - return ok; - } - - - // `!0`, `>0x1000`, `>=5`, `<10`, `<=10`, `0x400000-0x500000`, or a plain value. - bool parseNumeric(const QString& text, TTDBehaviorQuery::Numeric& out) - { - QString value = text; - if (value.startsWith("!")) - { - out.op = TTDBehaviorQuery::Numeric::NotEqual; - value = value.mid(1); - } - else if (value.startsWith(">=")) - { - out.op = TTDBehaviorQuery::Numeric::GreaterEqual; - value = value.mid(2); - } - else if (value.startsWith("<=")) - { - out.op = TTDBehaviorQuery::Numeric::LessEqual; - value = value.mid(2); - } - else if (value.startsWith(">")) - { - out.op = TTDBehaviorQuery::Numeric::Greater; - value = value.mid(1); - } - else if (value.startsWith("<")) - { - out.op = TTDBehaviorQuery::Numeric::Less; - value = value.mid(1); - } - else - { - // A '-' separating two numbers is a range. Checked after 0x so the hex digits - // of a lone value are not mistaken for one. - int dash = value.indexOf('-', value.startsWith("0x", Qt::CaseInsensitive) ? 2 : 1); - if (dash > 0) - { - if (!parseNumber(value.left(dash), out.a) || !parseNumber(value.mid(dash + 1), out.b)) - return false; - out.op = TTDBehaviorQuery::Numeric::Range; - return true; - } - } - return parseNumber(value, out.a); - } - - - // Split on whitespace, honouring double quotes so a phrase can contain spaces. - QStringList splitTerms(const QString& text) - { - QStringList terms; - QString current; - bool inQuotes = false; - for (QChar c : text) - { - if (c == '"') - inQuotes = !inQuotes; - else if (c.isSpace() && !inQuotes) - { - if (!current.isEmpty()) - terms.append(current); - current.clear(); - } - else - current += c; - } - if (!current.isEmpty()) - terms.append(current); - return terms; - } -} // namespace - - -void TTDBehaviorQuery::parse(const QString& text) -{ - m_terms.clear(); - for (const QString& raw : splitTerms(text.trimmed())) - { - Term term; - int colon = raw.indexOf(':'); - QString field = colon > 0 ? raw.left(colon).toLower() : QString(); - QString value = colon > 0 ? raw.mid(colon + 1) : raw; - - // An unknown prefix is not an error: "c:\windows" should search for that text, - // not complain about a field called "c". - bool numericField = false; - if (field == "module" || field == "mod") - term.field = Field::Module; - else if (field == "api" || field == "func" || field == "function") - term.field = Field::Api; - else if (field == "tid" || field == "thread") - { - term.field = Field::Tid; - numericField = true; - } - else if (field == "ret" || field == "return") - { - term.field = Field::Ret; - numericField = true; - } - else if (field == "retaddr" || field == "caller" || field == "from") - { - term.field = Field::RetAddr; - numericField = true; - } - else - { - term.field = Field::Text; - value = raw; - } - - if (numericField) - { - if (!parseNumeric(value, term.numeric)) - { - // Unparseable number: fall back to treating the whole thing as text so - // the row set does not silently become everything. - term.field = Field::Text; - term.text = raw.toLower().toUtf8().toStdString(); - m_terms.push_back(std::move(term)); - continue; - } - } - else - { - if (value.endsWith('*')) - { - term.prefix = true; - value.chop(1); - } - if (value.isEmpty()) - continue; - term.text = value.toLower().toUtf8().toStdString(); - } - m_terms.push_back(std::move(term)); - } -} - - -bool TTDBehaviorQuery::hasFieldTerms() const -{ - for (const Term& t : m_terms) - { - if (t.field != Field::Text) - return true; - } - return false; -} - - -void TTDBehaviorQuery::resolve(const TTDBehaviorReport& report) -{ - bool needsStrings = false; - for (Term& t : m_terms) - { - t.stringOffsets.clear(); - t.resolved = false; - if (t.field == Field::Module || t.field == Field::Api) - needsStrings = true; - } - if (!needsStrings || !report.isMapped()) - return; - - // One pass over the string table -- a few thousand entries, not a few million rows -- - // collecting the offsets each module/api term accepts. Matching a row afterwards is - // then an integer compare against that set. - report.forEachString([this](uint32_t offset, const char* text, size_t length) { - std::string lowered(text, length); - std::transform(lowered.begin(), lowered.end(), lowered.begin(), - [](unsigned char c) { return static_cast(std::tolower(c)); }); - for (Term& t : m_terms) - { - if (t.field != Field::Module && t.field != Field::Api) - continue; - bool hit = t.prefix ? lowered.rfind(t.text, 0) == 0 : lowered == t.text; - if (hit) - t.stringOffsets.push_back(offset); - } - }); - - for (Term& t : m_terms) - { - if (t.field == Field::Module || t.field == Field::Api) - { - std::sort(t.stringOffsets.begin(), t.stringOffsets.end()); - t.resolved = true; - } - } -} - - -void TTDBehaviorReport::forEachString( - const std::function& fn) const -{ - if (m_map == nullptr) - return; - const char* base = reinterpret_cast(m_map + m_stringsOff); - uint64_t offset = 0; - while (offset < m_stringsSize) - { - size_t length = 0; - while (offset + length < m_stringsSize && base[offset + length] != '\0') - ++length; - if (length != 0) - fn(static_cast(offset), base + offset, length); - offset += length + 1; - } -} - - -void TTDBehaviorReport::clear() -{ - reportPath.clear(); - tracePath.clear(); - arch.clear(); - sampleName.clear(); - pid = 0; - decodedCount = 0; - maxSeq = 0; - maxPositionChars = 0; - m_calls.clear(); - m_calls.shrink_to_fit(); - m_map = nullptr; - m_mapSize = 0; - m_file.reset(); - m_callCount = 0; -} - - -bool TTDBehaviorReport::load(const QString& path, QString& error) -{ - QFile probe(path); - if (!probe.open(QIODevice::ReadOnly)) - { - error = QString("Cannot open %1: %2").arg(path, probe.errorString()); - return false; - } - QByteArray magic = probe.read(sizeof(binfmt::kMagic)); - probe.close(); - - if (magic.size() == static_cast(sizeof(binfmt::kMagic)) - && std::memcmp(magic.constData(), binfmt::kMagic, sizeof(binfmt::kMagic)) == 0) - { - return loadBinary(path, error); - } - return loadJson(path, error); -} - - -bool TTDBehaviorReport::loadBinary(const QString& path, QString& error) -{ - clear(); - - auto file = std::make_unique(path); - if (!file->open(QIODevice::ReadOnly)) - { - error = QString("Cannot open %1: %2").arg(path, file->errorString()); - return false; - } - qint64 size = file->size(); - if (size < binfmt::kHeaderSize) - { - error = "Report is too small to contain a header"; - return false; - } - - // Mapped read-only, so the pages are shared and evictable rather than counting - // against us as heap. - const uint8_t* map = file->map(0, size); - if (map == nullptr) - { - error = QString("Cannot map %1: %2").arg(path, file->errorString()); - return false; - } - - uint32_t version = binfmt::read(map + 8); - if (version != binfmt::kVersion) - { - error = QString("Report format version %1 is not supported (expected %2); re-extract it") - .arg(version) - .arg(binfmt::kVersion); - return false; - } - - uint32_t archId = binfmt::read(map + 12); - m_callCount = binfmt::read(map + 16); - pid = binfmt::read(map + 32); - m_callsOff = binfmt::read(map + 40); - m_paramsOff = binfmt::read(map + 48); - m_stringsOff = binfmt::read(map + 56); - m_stringsSize = binfmt::read(map + 64); - m_blobOff = binfmt::read(map + 72); - m_blobSize = binfmt::read(map + 80); - decodedCount = static_cast(binfmt::read(map + 88)); - maxSeq = binfmt::read(map + 96); - uint32_t tracePathStr = binfmt::read(map + 104); - uint32_t sampleNameStr = binfmt::read(map + 108); - maxPositionChars = static_cast(binfmt::read(map + 112)); - - // Refuse a file whose regions do not fit rather than trusting offsets from disk. - auto withinFile = [size](uint64_t off, uint64_t len) { - return off <= static_cast(size) && len <= static_cast(size) - off; - }; - if (!withinFile(m_callsOff, m_callCount * binfmt::kCallRecordSize) - || !withinFile(m_stringsOff, m_stringsSize) || !withinFile(m_blobOff, m_blobSize)) - { - error = "Report header describes regions outside the file; it may be truncated"; - return false; - } - - m_file = std::move(file); - m_map = map; - m_mapSize = size; - reportPath = path; - arch = archId == 1 ? "x86" : "x64"; - tracePath = mappedString(tracePathStr); - sampleName = mappedString(sampleNameStr); - return true; -} - - -size_t TTDBehaviorReport::callCount() const -{ - return m_map != nullptr ? static_cast(m_callCount) : m_calls.size(); -} - - -const uint8_t* TTDBehaviorReport::callRecord(size_t index) const -{ - return m_map + m_callsOff + index * binfmt::kCallRecordSize; -} - - -QString TTDBehaviorReport::mappedString(uint32_t offset) const -{ - if (m_map == nullptr || offset >= m_stringsSize) - return QString(); - const char* start = reinterpret_cast(m_map + m_stringsOff + offset); - // The table is NUL-terminated and bounded by the region, so this cannot run away. - size_t maxLen = static_cast(m_stringsSize - offset); - size_t len = 0; - while (len < maxLen && start[len] != '\0') - ++len; - return QString::fromUtf8(start, static_cast(len)); -} - - -bool TTDBehaviorReport::matches(size_t index, const TTDBehaviorQuery& query) const -{ - if (query.isEmpty()) - return true; - - // JSON backend: no string table or fixed records to exploit, so fall back to the - // materialised objects. Correct, just not the fast path. - if (m_map == nullptr) - { - if (index >= m_calls.size()) - return false; - const TTDApiCall& call = m_calls[index]; - for (const TTDBehaviorQuery::Term& t : query.terms()) - { - bool ok = true; - switch (t.field) - { - case TTDBehaviorQuery::Field::Text: - ok = call.searchText.find(t.text) != std::string::npos; - break; - case TTDBehaviorQuery::Field::Module: - case TTDBehaviorQuery::Field::Api: - { - std::string value = - (t.field == TTDBehaviorQuery::Field::Module ? call.module : call.api).toLower().toStdString(); - ok = t.prefix ? value.rfind(t.text, 0) == 0 : value == t.text; - break; - } - case TTDBehaviorQuery::Field::Tid: - ok = t.numeric.test(call.tid); - break; - case TTDBehaviorQuery::Field::Ret: - ok = t.numeric.test(call.ret); - break; - case TTDBehaviorQuery::Field::RetAddr: - ok = t.numeric.test(call.returnAddress); - break; - } - if (!ok) - return false; - } - return true; - } - - if (index >= m_callCount) - return false; - const uint8_t* rec = callRecord(index); - - for (const TTDBehaviorQuery::Term& t : query.terms()) - { - bool ok = true; - switch (t.field) - { - case TTDBehaviorQuery::Field::Text: - { - uint32_t searchOff = binfmt::read(rec + 32); - uint16_t searchLen = binfmt::read(rec + 38); - // searchOff is relative to the blob region, so it has to be bounded against - // the region's size rather than its position in the file. - if (static_cast(searchOff) + searchLen > m_blobSize) - return false; - std::string_view hay( - reinterpret_cast(m_map + m_blobOff + searchOff), searchLen); - ok = hay.find(t.text) != std::string_view::npos; - break; - } - case TTDBehaviorQuery::Field::Module: - case TTDBehaviorQuery::Field::Api: - { - // Resolved to a set of string-table offsets up front, so this is a lookup in - // a handful of integers rather than a string comparison. - uint32_t offset = - binfmt::read(rec + (t.field == TTDBehaviorQuery::Field::Module ? 20 : 24)); - ok = std::binary_search(t.stringOffsets.begin(), t.stringOffsets.end(), offset); - break; - } - case TTDBehaviorQuery::Field::Tid: - ok = t.numeric.test(binfmt::read(rec + 8)); - break; - case TTDBehaviorQuery::Field::Ret: - ok = t.numeric.test(binfmt::read(rec + 0)); - break; - case TTDBehaviorQuery::Field::RetAddr: - ok = t.numeric.test(binfmt::read(rec + 40)); - break; - } - if (!ok) - return false; - } - return true; -} - - -void TTDBehaviorReport::fillCall(size_t index, TTDApiCall& out, bool withParams) const -{ - if (m_map == nullptr) - { - if (index < m_calls.size()) - out = m_calls[index]; - return; - } - if (index >= m_callCount) - return; - - const uint8_t* rec = callRecord(index); - out.params.clear(); - out.seq = index; // recorded calls are numbered densely, so the row index is the seq - out.ret = binfmt::read(rec + 0); - out.tid = binfmt::read(rec + 8); - uint32_t posSequence = binfmt::read(rec + 12); - uint32_t posSteps = binfmt::read(rec + 16); - out.position = QString("%1:%2").arg(posSequence, 0, 16).arg(posSteps, 0, 16).toUpper(); - out.returnAddress = binfmt::read(rec + 40); - out.module = mappedString(binfmt::read(rec + 20)); - out.api = mappedString(binfmt::read(rec + 24)); - - uint32_t paramOff = binfmt::read(rec + 28); - uint16_t rawCount = binfmt::read(rec + 36); - out.decoded = (rawCount & binfmt::kDecodedFlag) != 0; - int paramCount = rawCount & ~binfmt::kDecodedFlag; - - // The parameter region is variable-length, so a call's parameters are decoded in - // sequence from its offset. Only ever done for rows that are on screen or selected. - const uint8_t* p = m_map + m_paramsOff + paramOff; - const uint8_t* blob = m_map + m_blobOff; - QStringList rendered; - for (int i = 0; i < paramCount; ++i) - { - uint8_t kind = *p++; - uint8_t bits = *p++; - uint32_t nameStr = binfmt::read(p); - p += 4; - uint32_t typeStr = binfmt::read(p); - p += 4; - - TTDApiCallParam param; - param.name = mappedString(nameStr); - param.type = mappedString(typeStr); - param.kind = kind < std::size(binfmt::kKindNames) ? binfmt::kKindNames[kind] : ""; - param.value = binfmt::read(p); - p += 8; - param.out = (bits & binfmt::Out) != 0; - param.atReturn = (bits & binfmt::AtReturn) != 0; - - if (bits & binfmt::HasDeref) - { - param.hasDeref = true; - param.deref = binfmt::read(p); - p += 8; - } - if (bits & binfmt::HasStr) - { - uint32_t off = binfmt::read(p); - uint32_t len = binfmt::read(p + 4); - p += 8; - param.str = QString::fromUtf8(reinterpret_cast(blob + off), static_cast(len)); - } - if (bits & binfmt::HasBytes) - { - uint32_t off = binfmt::read(p); - uint32_t len = binfmt::read(p + 4); - uint64_t total = binfmt::read(p + 8); - p += 16; - param.bytes = QByteArray(reinterpret_cast(blob + off), static_cast(len)); - param.bytesTotal = total; - } - if (bits & binfmt::HasFlags) - { - uint32_t off = binfmt::read(p); - uint32_t len = binfmt::read(p + 4); - p += 8; - param.flags = QString::fromUtf8(reinterpret_cast(blob + off), - static_cast(len)).split('|', Qt::SkipEmptyParts); - } - - if (out.decoded) - rendered.append(QString("%1=%2").arg(param.name, formatParamValue(param))); - else - rendered.append(formatParamValue(param)); - - if (withParams) - out.params.push_back(std::move(param)); - } - out.paramSummary = rendered.join(", "); -} - - -bool TTDBehaviorReport::loadJson(const QString& path, QString& error) -{ - clear(); - - QFile file(path); - if (!file.open(QIODevice::ReadOnly)) - { - error = QString("Cannot open %1: %2").arg(path, file.errorString()); - return false; - } - - QByteArray contents = file.readAll(); - file.close(); - - QJsonParseError parseError {}; - QJsonDocument doc = QJsonDocument::fromJson(contents, &parseError); - if (doc.isNull()) - { - error = QString("Not a valid JSON report: %1").arg(parseError.errorString()); - return false; - } - if (!doc.isObject()) - { - error = "Report root is not a JSON object"; - return false; - } - - QJsonObject root = doc.object(); - if (!root.contains("processes")) - { - error = "Report has no \"processes\" array; is this a TTD API call report?"; - return false; - } - - reportPath = path; - QJsonObject trace = root.value("trace").toObject(); - tracePath = trace.value("path").toString(); - arch = trace.value("arch").toString(); - sampleName = root.value("sample").toObject().value("name").toString(); - - for (const QJsonValue& processValue : root.value("processes").toArray()) - { - QJsonObject process = processValue.toObject(); - if (pid == 0) - pid = jsonToUInt64(process.value("pid")); - if (sampleName.isEmpty()) - sampleName = process.value("name").toString(); - - for (const QJsonValue& callValue : process.value("calls").toArray()) - { - QJsonObject callObject = callValue.toObject(); - TTDApiCall call; - call.seq = jsonToUInt64(callObject.value("seq")); - call.tid = jsonToUInt64(callObject.value("tid")); - call.position = callObject.value("position").toString(); - call.module = callObject.value("module").toString(); - call.api = callObject.value("api").toString(); - call.ret = jsonToUInt64(callObject.value("ret")); - call.returnAddress = jsonToUInt64(callObject.value("return_address")); - - QStringList rendered; - if (callObject.contains("params")) - { - call.decoded = true; - for (const QJsonValue& paramValue : callObject.value("params").toArray()) - { - QJsonObject paramObject = paramValue.toObject(); - TTDApiCallParam param; - param.name = paramObject.value("name").toString(); - param.type = paramObject.value("type").toString(); - param.kind = paramObject.value("kind").toString(); - param.value = jsonToUInt64(paramObject.value("value")); - param.str = paramObject.value("str").toString(); - param.out = paramObject.value("out").toBool(); - param.atReturn = paramObject.value("at_return").toBool(); - if (paramObject.contains("deref")) - { - param.hasDeref = true; - param.deref = jsonToUInt64(paramObject.value("deref")); - } - for (const QJsonValue& flag : paramObject.value("flags").toArray()) - param.flags.append(flag.toString()); - if (paramObject.contains("bytes")) - param.bytes = QByteArray::fromHex(paramObject.value("bytes").toString().toLatin1()); - // Present only when the extractor's --max-buffer cut the capture short. - param.bytesTotal = jsonToUInt64(paramObject.value("bytes_total")); - - rendered.append(QString("%1=%2").arg(param.name, formatParamValue(param))); - call.params.push_back(std::move(param)); - } - } - else - { - // No signature was available for this function, so the extractor fell - // back to capturing the four argument registers. Show them positionally. - for (const QJsonValue& argValue : callObject.value("args").toArray()) - { - if (argValue.isString()) - rendered.append( - QString("\"%1\"").arg(elide(escapeString(argValue.toString()), kMaxStringDisplay))); - else - rendered.append(formatHex(jsonToUInt64(argValue))); - } - } - - call.paramSummary = rendered.join(", "); - call.searchText = - QString("%1!%2 %3").arg(call.module, call.api, call.paramSummary).toLower().toUtf8().toStdString(); - if (call.decoded) - ++decodedCount; - maxSeq = std::max(maxSeq, call.seq); - maxPositionChars = std::max(maxPositionChars, static_cast(call.position.size())); - m_calls.push_back(std::move(call)); - } - } - - return true; -} - - TTDBehaviorCallModel::TTDBehaviorCallModel(QObject* parent) : QAbstractTableModel(parent) {} @@ -900,8 +194,6 @@ void TTDBehaviorCallModel::setReport(std::shared_ptr report) { beginResetModel(); m_report = std::move(report); - if (m_report) - m_query.resolve(*m_report); rebuildVisible(); endResetModel(); } @@ -914,9 +206,6 @@ void TTDBehaviorCallModel::setFilter(const QString& text) beginResetModel(); m_filterText = text.trimmed(); - m_query.parse(m_filterText); - if (m_report) - m_query.resolve(*m_report); rebuildVisible(); endResetModel(); } @@ -927,43 +216,38 @@ void TTDBehaviorCallModel::rebuildVisible() m_cachedIndex = static_cast(-1); m_visible.clear(); m_visible.shrink_to_fit(); - m_filtered = !m_query.isEmpty(); - if (!m_filtered || !m_report) + m_filtered = !m_filterText.isEmpty(); + if (!m_filtered || !m_report || !m_report->IsOpen()) return; - // One linear pass of substring searches over 8-bit haystacks. No reserve() up - // front: a selective filter is the common case, and reserving for every call - // would dwarf the result. - const size_t count = m_report->callCount(); - for (size_t i = 0; i < count; ++i) - { - if (m_report->matches(i, m_query)) - m_visible.push_back(static_cast(i)); - } + // One call filters the whole report on the core side and returns the matching rows. + // Measured at 8-70ms over 3.4M calls depending on the query, against 30-50% more if + // the boundary were crossed per row. + m_visible = m_report->RunQuery(m_filterText.toStdString()); } const TTDApiCall* TTDBehaviorCallModel::callAt(int row, bool withParams) const { - if (!m_report || row < 0) + if (!m_report || !m_report->IsOpen() || row < 0) return nullptr; size_t index = static_cast(row); if (m_filtered) { if (index >= m_visible.size()) return nullptr; - index = m_visible[index]; + index = static_cast(m_visible[index]); } - if (index >= m_report->callCount()) + if (index >= m_report->GetCallCount()) return nullptr; - // With a mapped report there is no stored object to point at, so decode into a - // one-row cache. data() is called once per column, so without this a row would be - // decoded seven times per repaint. + // No stored objects to point at, so decode into a one-row cache. data() is called + // once per column, so without this a row would be decoded seven times per repaint. if (m_cachedIndex != index || (withParams && !m_cachedHasParams)) { m_cached = TTDApiCall(); - m_report->fillCall(index, m_cached, withParams); + if (!m_report->GetCall(index, m_cached, withParams)) + return nullptr; m_cachedIndex = index; m_cachedHasParams = withParams; } @@ -975,7 +259,7 @@ int TTDBehaviorCallModel::rowCount(const QModelIndex& parent) const { if (parent.isValid() || !m_report) return 0; - return static_cast(m_filtered ? m_visible.size() : m_report->callCount()); + return static_cast(m_filtered ? m_visible.size() : m_report->GetCallCount()); } @@ -1004,15 +288,15 @@ QVariant TTDBehaviorCallModel::data(const QModelIndex& index, int role) const case SeqColumn: return QString::number(call->seq); case PositionColumn: - return call->position; + return QString("%1:%2").arg(call->positionSequence, 0, 16).arg(call->positionSteps, 0, 16).toUpper(); case ThreadColumn: return QString::number(call->tid); case ModuleColumn: - return call->module; + return QString::fromStdString(call->module); case ApiColumn: - return call->api; + return QString::fromStdString(call->api); case ParametersColumn: - return call->paramSummary; + return QString::fromStdString(call->paramSummary); case ReturnColumn: return formatHex(call->ret); case ReturnAddressColumn: @@ -1163,9 +447,10 @@ void TTDBehaviorQueryWidget::setTimings(double writeSeconds, double loadSeconds) } -void TTDBehaviorQueryWidget::setReport(std::shared_ptr report) +void TTDBehaviorQueryWidget::setReport(std::shared_ptr report, const QString& path) { m_report = std::move(report); + m_reportPath = path; m_model->setReport(m_report); m_detail->clear(); m_table->resizeColumnsToContents(); @@ -1180,8 +465,8 @@ void TTDBehaviorQueryWidget::setReport(std::shared_ptr report // Size them from the widest value actually present. QFontMetrics metrics(m_table->font()); const int padding = 16; - int seqWidth = metrics.horizontalAdvance(QString::number(m_report->maxSeq)) + padding; - int positionWidth = metrics.horizontalAdvance(QString(m_report->maxPositionChars, 'M')) + padding; + int seqWidth = metrics.horizontalAdvance(QString::number(m_report->GetMaxSequence())) + padding; + int positionWidth = metrics.horizontalAdvance(QString(m_report->GetMaxPositionChars(), 'M')) + padding; if (seqWidth > m_table->columnWidth(TTDBehaviorCallModel::SeqColumn)) m_table->setColumnWidth(TTDBehaviorCallModel::SeqColumn, seqWidth); if (positionWidth > m_table->columnWidth(TTDBehaviorCallModel::PositionColumn)) @@ -1288,7 +573,7 @@ void TTDBehaviorWidget::createNewTab() auto* query = new TTDBehaviorQueryWidget(this, m_data); int index = m_tabWidget->addTab(query, QString("Query %1").arg(m_tabWidget->count() + 1)); - query->setReport(m_report); + query->setReport(m_report, m_reportPath); query->setTimings(m_lastWriteSeconds, m_lastLoadSeconds); if (!seed.isEmpty()) query->setFilterText(seed); @@ -1325,19 +610,19 @@ void TTDBehaviorWidget::closeTab(int index) void TTDBehaviorQueryWidget::updateStatus() { - if (m_report->callCount() == 0) + if (m_report->GetCallCount() == 0) { m_statusLabel->setText("No report loaded"); return; } int shown = m_model->rowCount(); - QString name = QFileInfo(m_report->reportPath).fileName(); + QString name = QFileInfo(m_reportPath).fileName(); QString text = QString("%1: %2 of %3 calls shown, %4 with decoded parameters") .arg(name) .arg(shown) - .arg(m_report->callCount()) - .arg(m_report->decodedCount); + .arg(m_report->GetCallCount()) + .arg(m_report->GetDecodedCount()); // Where the time actually went, since that is the thing worth knowing about a format. if (m_writeSeconds > 0.0) text += QString(" | saved in %1s").arg(m_writeSeconds, 0, 'f', 1); @@ -1465,14 +750,15 @@ void TTDBehaviorWidget::loadReport(const QString& path) QElapsedTimer timer; timer.start(); auto report = std::make_shared(); - QString error; - bool ok = report->load(path, error); + std::string loadError; + bool ok = report->Open(path.toStdString(), loadError); + QString error = QString::fromStdString(loadError); double loadSeconds = timer.elapsed() / 1000.0; // Back to the UI thread to install it. QMetaObject::invokeMethod( QCoreApplication::instance(), - [self, report, error, ok, loadSeconds]() { + [self, report, error, ok, loadSeconds, path]() { if (!self) return; self->endOperation(); @@ -1482,23 +768,24 @@ void TTDBehaviorWidget::loadReport(const QString& path) return; } self->m_lastLoadSeconds = loadSeconds; - self->installReport(report); + self->installReport(report, path); }, Qt::QueuedConnection); }).detach(); } -void TTDBehaviorWidget::installReport(std::shared_ptr report) +void TTDBehaviorWidget::installReport(std::shared_ptr report, const QString& path) { m_report = std::move(report); + m_reportPath = path; // Every tab points at the same report -- that is the reason to have tabs at all -- // but each keeps its own query, so each re-resolves and re-filters against it. for (int i = 0; i < m_tabWidget->count(); ++i) { if (auto* query = qobject_cast(m_tabWidget->widget(i))) { - query->setReport(m_report); + query->setReport(m_report, m_reportPath); query->setTimings(m_lastWriteSeconds, m_lastLoadSeconds); } } @@ -1665,7 +952,7 @@ void TTDBehaviorQueryWidget::onFilterTextEdited() m_filterTimer->start(); // Only worth saying on a report big enough for the pass to be visible; below that // the label would flicker for no reason. - if (m_report->callCount() > 250000) + if (m_report->GetCallCount() > 250000) m_statusLabel->setText("Filtering..."); } @@ -1689,7 +976,7 @@ void TTDBehaviorQueryWidget::showDetail(const TTDApiCall* call) QString text; text += QString("%1!%2 @ %3 tid %4 (#%5)\n") - .arg(call->module, call->api, call->position) + .arg(QString::fromStdString(call->module), QString::fromStdString(call->api), formatPosition(*call)) .arg(call->tid) .arg(call->seq); text += QString("returned %1, to %2\n\n").arg(formatHex(call->ret), formatHex(call->returnAddress)); @@ -1711,15 +998,21 @@ void TTDBehaviorQueryWidget::showDetail(const TTDApiCall* call) if (param.atReturn) annotations += " [read at return]"; - text += QString("%1 : %2%3\n").arg(param.name, param.type, annotations); + text += QString("%1 : %2%3\n") + .arg(QString::fromStdString(param.name), QString::fromStdString(param.type), annotations); text += QString(" value %1\n").arg(formatHex(param.value)); - if (!param.str.isEmpty()) - text += QString(" string \"%1\"\n").arg(escapeString(param.str)); - if (!param.flags.isEmpty()) - text += QString(" flags %1\n").arg(param.flags.join(" | ")); + if (!param.str.empty()) + text += QString(" string \"%1\"\n").arg(escapeString(QString::fromStdString(param.str))); + if (!param.flags.empty()) + { + QStringList names; + for (const std::string& flag : param.flags) + names.append(QString::fromStdString(flag)); + text += QString(" flags %1\n").arg(names.join(" | ")); + } if (param.hasDeref) text += QString(" deref %1 (%2)\n").arg(formatHex(param.deref)).arg(param.deref); - if (!param.bytes.isEmpty()) + if (!param.bytes.empty()) { // Say so when this is only the head of a larger buffer: reporting the // captured size alone reads as the buffer's real size. @@ -1734,7 +1027,7 @@ void TTDBehaviorQueryWidget::showDetail(const TTDApiCall* call) text += QString(" buffer %1 bytes\n").arg(param.bytes.size()); } - QByteArray shown = param.bytes.left(kMaxHexDumpBytes); + QByteArray shown = toByteArray(param.bytes).left(kMaxHexDumpBytes); text += hexDump(shown); if (shown.size() < param.bytes.size()) { @@ -1767,7 +1060,7 @@ void TTDBehaviorQueryWidget::onDoubleClicked(const QModelIndex& index) if (!call || !m_controller || !m_controller->IsTTD()) return; - QStringList parts = call->position.split(':'); + QStringList parts = formatPosition(*call).split(':'); if (parts.size() != 2) return; @@ -1779,7 +1072,7 @@ void TTDBehaviorQueryWidget::onDoubleClicked(const QModelIndex& index) if (!m_controller->SetTTDPosition(TTDPosition(sequence, step))) { - m_statusLabel->setText(QString("Failed to travel to %1").arg(call->position)); + m_statusLabel->setText(QString("Failed to travel to %1").arg(formatPosition(*call))); return; } @@ -1804,7 +1097,7 @@ void TTDBehaviorQueryWidget::onDoubleClicked(const QModelIndex& index) frame->navigate(liveView, ip, true, true); } - m_statusLabel->setText(QString("Traveled to %1, IP 0x%2").arg(call->position).arg(ip, 0, 16)); + m_statusLabel->setText(QString("Traveled to %1, IP 0x%2").arg(formatPosition(*call)).arg(ip, 0, 16)); } @@ -1818,7 +1111,8 @@ void TTDBehaviorQueryWidget::copySelectedRows() if (!call) continue; lines.append(QString("%1 %2!%3(%4) -> %5") - .arg(call->position, call->module, call->api, call->paramSummary, formatHex(call->ret))); + .arg(formatPosition(*call), QString::fromStdString(call->module), QString::fromStdString(call->api), + QString::fromStdString(call->paramSummary), formatHex(call->ret))); } if (!lines.isEmpty()) QApplication::clipboard()->setText(lines.join('\n')); diff --git a/ui/ttdbehaviorwidget.h b/ui/ttdbehaviorwidget.h index e156615f..35a57bff 100644 --- a/ui/ttdbehaviorwidget.h +++ b/ui/ttdbehaviorwidget.h @@ -46,170 +46,15 @@ using namespace BinaryNinja; using namespace BinaryNinjaDebuggerAPI; -// One decoded parameter of an API call. Only `name`/`type`/`kind`/`value` are always -// present; the rest depend on what the Win32 API metadata said about the parameter. -struct TTDApiCallParam -{ - QString name; - QString type; - QString kind; - uint64_t value = 0; - QString str; // resolved ANSI/UTF-16 string, if the parameter is one - QStringList flags; // symbolic names for enum/flag parameters - QByteArray bytes; // captured buffer contents, possibly only a prefix - uint64_t bytesTotal = 0; // the buffer's real length when `bytes` was capped, else 0 - uint64_t deref = 0; // pointed-to value for `int*`-like parameters - bool hasDeref = false; - bool out = false; // [Out] parameter - bool atReturn = false; // value was re-read at the call's return position -}; - - -// A single Windows API call observed during the trace. -struct TTDApiCall -{ - uint64_t seq = 0; - uint64_t tid = 0; - QString position; - QString module; - QString api; - uint64_t ret = 0; - // Where the call returns to: the instruction after the CALL, so it names the call - // site and therefore which module made the call. - uint64_t returnAddress = 0; - std::vector params; - bool decoded = false; // true when a real signature was available for this call - QString paramSummary; // single-line rendering for the table - - // Lowercased "module!api params" that the filter scans. Deliberately a byte - // string rather than a QString: a trace can hold millions of calls, so this - // halves the per-call footprint versus UTF-16, and searching 8-bit data is - // several times faster than a case-insensitive QString comparison. - // - // Only populated by the JSON backend. The binary one keeps the equivalent text in - // the mapped file and matches against it there, so nothing is built per call. - std::string searchText; -}; - - -// A parsed filter expression. -// -// Whitespace-separated terms, ANDed together. A bare word (or "quoted phrase") is a -// substring match over everything searchable about a call; `field:value` narrows to one -// field. That keeps what people already type working, while giving them a way to say -// which WriteFile they meant. -// -// module:kernel32 api:WriteFile only kernel32's, not ntdll's -// api:Reg* ret:!0 registry calls that failed -// retaddr:0x400000-0x500000 calls made from the sample itself -// password anything mentioning it, buffers included -// -// module/api resolve against the report's deduplicated string table once per query, so -// evaluating them per row is an integer compare rather than a string search. -class TTDBehaviorQuery -{ -public: - // Comparison against one of the call's numeric fields. - struct Numeric - { - enum Op { Equal, NotEqual, Greater, GreaterEqual, Less, LessEqual, Range }; - Op op = Equal; - uint64_t a = 0; - uint64_t b = 0; - bool test(uint64_t value) const; - }; - - enum class Field { Text, Module, Api, Tid, Ret, RetAddr }; - - struct Term - { - Field field = Field::Text; - std::string text; // lowercased, for Text/Module/Api - bool prefix = false; // the term ended in '*' - Numeric numeric; // for Tid/Ret/RetAddr - std::vector stringOffsets; // resolved module/api matches - bool resolved = false; - }; - - // Never fails: anything that does not look like a field term is treated as text, so - // a half-typed query still does something sensible rather than erroring. - void parse(const QString& text); - bool isEmpty() const { return m_terms.empty(); } - bool hasFieldTerms() const; - - // Bind module/api terms to the report's string table. Call once per report per query. - void resolve(const class TTDBehaviorReport& report); - - const std::vector& terms() const { return m_terms; } - -private: - std::vector m_terms; -}; - - -// The set of API calls extracted from one trace. +// The report reader and its query engine live in core (core/ttdbehavior.h), reachable +// here through the debugger API. That is what lets the same queries run from Python; +// this widget is now just a view over them. // -// Two backends. The binary one memory-maps the extractor's compact format and decodes -// records straight out of the mapping when a row is asked for -- there is no per-call -// object, so opening a 3.4M-call report costs a header validation instead of the ~17s -// (and ~1.4GB) that parsing the JSON equivalent did. The JSON one is kept because -// reports already on disk are in that format, and because it is what capa consumes. -class TTDBehaviorReport -{ -public: - QString reportPath; - QString tracePath; - QString arch; - QString sampleName; - uint64_t pid = 0; - size_t decodedCount = 0; // counted once at load, not per status update - - // Widest content in the two narrow columns, so they can be sized to fit exactly. - // QTableView::resizeColumnsToContents() only samples the first 1000 rows, which on a - // multi-million-call trace sizes "#" for three digits and Position for its shortest - // early values, then clips everything after. - uint64_t maxSeq = 0; - int maxPositionChars = 0; - - // Dispatches on the file's magic, so the caller does not care which format it has. - bool load(const QString& path, QString& error); - void clear(); - - size_t callCount() const; - - // Decode one call. `withParams` is the expensive half, so the table omits it and only - // the detail pane asks for it. - void fillCall(size_t index, TTDApiCall& out, bool withParams) const; - - // Does this call satisfy every term of `query`? - bool matches(size_t index, const TTDBehaviorQuery& query) const; - - // Every distinct string in the table, for a query to resolve module/api terms - // against. Empty for the JSON backend, which compares per row instead. - void forEachString(const std::function& fn) const; - bool isMapped() const { return m_map != nullptr; } - -private: - bool loadJson(const QString& path, QString& error); - bool loadBinary(const QString& path, QString& error); - const uint8_t* callRecord(size_t index) const; - QString mappedString(uint32_t offset) const; - - // JSON backend: everything materialised up front. - std::vector m_calls; - - // Binary backend: the mapping plus the header's region offsets. - std::unique_ptr m_file; - const uint8_t* m_map = nullptr; - qint64 m_mapSize = 0; - uint64_t m_callCount = 0; - uint64_t m_callsOff = 0; - uint64_t m_paramsOff = 0; - uint64_t m_stringsOff = 0; - uint64_t m_stringsSize = 0; - uint64_t m_blobOff = 0; - uint64_t m_blobSize = 0; -}; +// Rows are decoded from the mapped file on demand rather than held as objects, so the +// model asks the report for a row when it needs to paint one. +using TTDApiCall = BinaryNinjaDebuggerAPI::TTDApiCall; +using TTDApiCallParam = BinaryNinjaDebuggerAPI::TTDApiCallParam; +using TTDBehaviorReport = BinaryNinjaDebuggerAPI::TTDBehaviorReport; class TTDBehaviorCallModel : public QAbstractTableModel @@ -234,16 +79,13 @@ class TTDBehaviorCallModel : public QAbstractTableModel void setReport(std::shared_ptr report); - // Substring filter over the precomputed per-call haystack, applied by rebuilding - // the visible-row list in one linear pass. + // Runs `text` as a query against the report and keeps the rows it matched. // - // This is deliberately not a QSortFilterProxyModel. That class maintains a full - // bidirectional source/proxy row mapping, and any call to its rowCount() forces - // the whole mapping to be materialised -- which on a multi-million-call trace - // costs far more than scanning the haystacks, and made every keystroke look like - // a freeze. + // Deliberately not a QSortFilterProxyModel: that class maintains a bidirectional + // source/proxy row mapping, and any call to its rowCount() materialises the whole + // thing, which on a multi-million-call report made every keystroke look like a + // freeze. The core returns the matching indices in one call instead. void setFilter(const QString& text); - const TTDBehaviorQuery& query() const { return m_query; } // Row of the table -> the call it shows, or nullptr when out of range. Decoded into a // single-row cache, so asking for the same row repeatedly (as data() does, once per @@ -260,8 +102,7 @@ class TTDBehaviorCallModel : public QAbstractTableModel std::shared_ptr m_report; QString m_filterText; // as typed, so a repeat of the same text is a no-op - TTDBehaviorQuery m_query; - std::vector m_visible; // source indices; empty when unfiltered + std::vector m_visible; // source indices; empty when unfiltered bool m_filtered = false; // whether m_visible is in use mutable TTDApiCall m_cached; @@ -289,6 +130,7 @@ class TTDBehaviorQueryWidget : public QWidget TTDBehaviorCallModel* m_model; std::shared_ptr m_report; + QString m_reportPath; // the core report holds no display name of its own // Set by the container, which is what knows them; shown in this tab's status line. double m_writeSeconds = 0.0; @@ -306,7 +148,7 @@ class TTDBehaviorQueryWidget : public QWidget TTDBehaviorQueryWidget(QWidget* parent, BinaryViewRef data); // Point this tab at a report. Cheap: the model only takes a reference to it. - void setReport(std::shared_ptr report); + void setReport(std::shared_ptr report, const QString& path); QString filterText() const; void setFilterText(const QString& text); @@ -359,6 +201,7 @@ class TTDBehaviorWidget : public SidebarWidget double m_lastLoadSeconds = -1.0; std::shared_ptr m_report; + QString m_reportPath; QProcess* m_extractProcess = nullptr; void setupUI(); @@ -380,7 +223,7 @@ class TTDBehaviorWidget : public SidebarWidget void loadReport(const QString& path); // Swap in a parsed report and hand it to every tab. Must run on the UI thread. - void installReport(std::shared_ptr report); + void installReport(std::shared_ptr report, const QString& path); private Q_SLOTS: void onLoadClicked(); From 169a6c0dd41b2cb9b9c3a83720bb072dff893598 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Wed, 29 Jul 2026 13:22:31 -0400 Subject: [PATCH 13/24] Decode parameters by default when querying query() defaulted to summary-only while get_call() defaulted to the full parameter list, so the same call gave you different objects depending on how you reached it -- and the useful case, wanting to read a parameter, was the one that needed the extra argument. Both default to decoding now. with_params=False remains for sweeps over millions of rows, where it is about 4x cheaper per call and holds far less memory; that is the case worth opting into rather than the default. Co-Authored-By: Claude Opus 5 (1M context) --- api/python/ttdbehavior.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/api/python/ttdbehavior.py b/api/python/ttdbehavior.py index 04e5502b..dd25146e 100644 --- a/api/python/ttdbehavior.py +++ b/api/python/ttdbehavior.py @@ -29,6 +29,10 @@ single crossing of the FFI; rows are then decoded only as you touch them. Iterating a whole multi-million-call report one call at a time from Python is possible but is the slow way round -- narrow with a query first. + +Calls come back with their parameters decoded. On a query matching millions of rows that +is worth turning off with ``with_params=False``, which leaves ``param_summary`` but skips +building the structured list. """ import ctypes @@ -179,7 +183,7 @@ def query_indices(self, query: str) -> List[int]: finally: dbgcore.BNTTDBehaviorFreeQueryResult(result) - def query(self, query: str, with_params: bool = False) -> Iterator[TTDApiCall]: + def query(self, query: str, with_params: bool = True) -> Iterator[TTDApiCall]: """Calls matching ``query``, decoded lazily as you iterate. Terms are ANDed; a bare word matches anywhere including buffer contents, and @@ -193,8 +197,10 @@ def query(self, query: str, with_params: bool = False) -> Iterator[TTDApiCall]: Numeric fields (``tid``, ``ret``, ``retaddr``) take ``!=``, ``>``, ``>=``, ``<``, ``<=`` and ``a-b`` ranges, decimal or ``0x`` hex. - Pass ``with_params`` to decode each call's full parameter list; leaving it off - is markedly cheaper when you only need the summary. + Each call arrives with its full parameter list. Pass ``with_params=False`` to skip + that when you only need ``param_summary`` -- it is about 4x cheaper per call and + holds far less memory, which starts to matter once a query matches millions of + rows rather than hundreds. """ for index in self.query_indices(query): call = self.get_call(index, with_params) From 64f1c24b732623fd73f403fe36b5bcef01d77b3d Mon Sep 17 00:00:00 2001 From: Xusheng Date: Wed, 29 Jul 2026 14:27:32 -0400 Subject: [PATCH 14/24] Recover unread strings when extracting from the sidebar The extractor gained --recover-strings but the sidebar never passed it, so extracting from the UI still produced reports with a quarter of the string parameters missing -- the flag might as well not have existed for anyone who does not run the extractor by hand. On by default, since a report whose strings are absent is the wrong default whatever it costs, and exposed as debugger.ttdBehaviorRecoverStrings for when speed matters more. The recovery pass is slow enough to look like a hang, so the progress row now names it rather than sitting silent. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 9 +++++++++ ui/ui.cpp | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 7a5b0782..6306fd67 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -726,6 +726,11 @@ void TTDBehaviorWidget::consumeExtractorStderr() if (parts.size() >= 3) m_lastWriteSeconds = parts[2].toDouble(); } + else if (line == "[phase] strings") + { + setProgress(0.0, "Recovering strings the sweep could not read"); + m_cancelButton->setEnabled(false); + } else if (line == "[phase] write") { // The report can be hundreds of MB; serialising it takes comparable time to @@ -927,6 +932,10 @@ void TTDBehaviorWidget::onExtractClicked() int64_t maxBuffer = Settings::Instance()->Get("debugger.ttdBehaviorMaxBuffer"); if (maxBuffer > 0) arguments << "--max-buffer" << QString::number(maxBuffer); + // Without this a quarter of string parameters come back empty, because the sweep + // reads memory through an interface the SDK restricts to a fast, incomplete lookup. + if (Settings::Instance()->Get("debugger.ttdBehaviorRecoverStrings")) + arguments << "--recover-strings"; beginOperation(QString("Extracting from %1").arg(QFileInfo(trace).fileName()), true); setProgress(0.0, "Starting extractor"); diff --git a/ui/ui.cpp b/ui/ui.cpp index 4e7e991f..9c7bf52a 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -2112,6 +2112,15 @@ void GlobalDebuggerUI::InitializeUI() "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] })"); + Settings::Instance()->RegisterSetting("debugger.ttdBehaviorRecoverStrings", + R"({ + "title" : "TTD Behavior Recover Unread Strings", + "type" : "boolean", + "default" : true, + "description" : "After sweeping a trace, go back and recover string parameters the sweep could not read. The sweep reads memory through an interface the TTD SDK restricts to a fast, incomplete lookup, which loses roughly a quarter of string parameters; a second pass with a cursor recovers about three quarters of those. It is slow -- each seek replays from a keyframe, and on a large trace this can quadruple extraction time -- so turn it off when speed matters more than complete strings.", + "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] + })"); + Sidebar::addSidebarWidgetType(new DebuggerWidgetType(QImage(":/debugger/debugger"), "Debugger")); Sidebar::addSidebarWidgetType(new DebugModulesSidebarWidgetType()); Sidebar::addSidebarWidgetType(new DebugMemoryMapSidebarWidgetType()); From e3a6f60c1c496bbd514c9493ccf48bb5164626a9 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Wed, 29 Jul 2026 15:03:50 -0400 Subject: [PATCH 15/24] Default TTD Behavior string recovery to off Recovering the strings the sweep could not read quadruples extraction time on a large trace -- 33s to 132s -- to recover about three quarters of them. That is a deliberate choice, not something to impose on every extraction, so debugger.ttdBehaviorRecoverStrings now defaults to off and its description explains what is lost either way. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/ui.cpp b/ui/ui.cpp index 9c7bf52a..7a94c961 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -2116,8 +2116,8 @@ void GlobalDebuggerUI::InitializeUI() R"({ "title" : "TTD Behavior Recover Unread Strings", "type" : "boolean", - "default" : true, - "description" : "After sweeping a trace, go back and recover string parameters the sweep could not read. The sweep reads memory through an interface the TTD SDK restricts to a fast, incomplete lookup, which loses roughly a quarter of string parameters; a second pass with a cursor recovers about three quarters of those. It is slow -- each seek replays from a keyframe, and on a large trace this can quadruple extraction time -- so turn it off when speed matters more than complete strings.", + "default" : false, + "description" : "After sweeping a trace, go back and recover string parameters the sweep could not read. String arguments are missing from some calls because the TTD SDK restricts memory reads made from a replay callback to a fast, incomplete lookup that may return nothing even when the data is in the trace; a second pass re-reads those addresses with a cursor, which can look properly, and recovers about three quarters of them. It is off by default because each seek replays from a keyframe: on a 3.4M-call trace this took extraction from 33s to 132s.", "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] })"); From 980a25231a057cc13b2dfa1a5d7b2f2d76e40cbe Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 14:54:20 -0400 Subject: [PATCH 16/24] Tell the extractor where WinDbg's TTD replay DLLs are The extractor no longer needs TTDReplay.dll beside it; pass the folder the WinDbg install already provides, found the same way ttdrecord.cpp finds the recorder. When it cannot be found the flag is omitted and the extractor falls back to looking beside itself. Also drops the debugger.ttdBehaviorRecoverStrings setting, whose flag is no longer part of the extractor. Co-Authored-By: Claude Opus 5 (1M context) --- ui/ttdbehaviorwidget.cpp | 36 ++++++++++++++++++++++++++++++++++-- ui/ui.cpp | 9 --------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 6306fd67..f9addb42 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -40,6 +40,7 @@ limitations under the License. #include #include #include +#include #include #include #include "fontsettings.h" @@ -168,6 +169,34 @@ namespace { } + // Where TTDReplay.dll and TTDReplayCPU.dll live. They are Microsoft's, shipped with + // WinDbg rather than with us, so the extractor takes their location instead of + // requiring copies beside itself. This is the same folder ttdrecord.cpp uses to find + // the recorder. Returns empty when it cannot be found, in which case the extractor + // falls back to its own directory. + QString ttdReplayDirectory() + { + auto hasReplay = [](const QString& dir) { + return !dir.isEmpty() && QFileInfo::exists(QDir(dir).filePath("TTDReplay.dll")); + }; + + // A configured DbgEng path is authoritative: if it is set and wrong, fall through + // to the extractor's own search rather than silently using a different engine. + std::string configured = Settings::Instance()->Get("debugger.x64dbgEngPath"); + if (!configured.empty()) + { + QString path = QDir(QString::fromStdString(configured)).filePath("TTD"); + return hasReplay(path) ? path : QString(); + } + + std::string pluginRoot = getenv("BN_STANDALONE_DEBUGGER") != nullptr + ? GetUserPluginDirectory() + : GetBundledPluginDirectory(); + QString bundled = QDir(QString::fromStdString(pluginRoot)).filePath("dbgeng/amd64/TTD"); + return hasReplay(bundled) ? bundled : QString(); + } + + QString hexDump(const QByteArray& bytes) { QString out; @@ -934,8 +963,11 @@ void TTDBehaviorWidget::onExtractClicked() arguments << "--max-buffer" << QString::number(maxBuffer); // Without this a quarter of string parameters come back empty, because the sweep // reads memory through an interface the SDK restricts to a fast, incomplete lookup. - if (Settings::Instance()->Get("debugger.ttdBehaviorRecoverStrings")) - arguments << "--recover-strings"; + // Point the extractor at WinDbg's replay engine when we know where it is; otherwise + // let it fall back to looking beside itself. + QString ttdDlls = ttdReplayDirectory(); + if (!ttdDlls.isEmpty()) + arguments << "--ttd-dlls" << QDir::toNativeSeparators(ttdDlls); beginOperation(QString("Extracting from %1").arg(QFileInfo(trace).fileName()), true); setProgress(0.0, "Starting extractor"); diff --git a/ui/ui.cpp b/ui/ui.cpp index 7a94c961..4e7e991f 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -2112,15 +2112,6 @@ void GlobalDebuggerUI::InitializeUI() "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] })"); - Settings::Instance()->RegisterSetting("debugger.ttdBehaviorRecoverStrings", - R"({ - "title" : "TTD Behavior Recover Unread Strings", - "type" : "boolean", - "default" : false, - "description" : "After sweeping a trace, go back and recover string parameters the sweep could not read. String arguments are missing from some calls because the TTD SDK restricts memory reads made from a replay callback to a fast, incomplete lookup that may return nothing even when the data is in the trace; a second pass re-reads those addresses with a cursor, which can look properly, and recovers about three quarters of them. It is off by default because each seek replays from a keyframe: on a 3.4M-call trace this took extraction from 33s to 132s.", - "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] - })"); - Sidebar::addSidebarWidgetType(new DebuggerWidgetType(QImage(":/debugger/debugger"), "Debugger")); Sidebar::addSidebarWidgetType(new DebugModulesSidebarWidgetType()); Sidebar::addSidebarWidgetType(new DebugMemoryMapSidebarWidgetType()); From a695aba6ae57f8bfb615092d311fb4332bd42538 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 15:12:48 -0400 Subject: [PATCH 17/24] Ship the TTD behavior extractor and use it by default Extraction previously required building ttdcapa-extract yourself and pointing a setting at it, which is a wall in front of the first thing anyone wants to do with the sidebar. The CI-built extractor and its API metadata index now live in core/ttdbehavior/, staged to plugins/ttdbehavior/ beside debuggercore the same way the DbgEng DLLs already are. The sidebar uses it unless debugger.ttdBehaviorExtractorPath names another one, so a configured path still wins for anyone running their own build -- and if that path is set but wrong we say so rather than quietly falling back, which would report results from a different binary than they expect. Microsoft's replay DLLs are deliberately not vendored; the extractor takes their location and we pass the WinDbg install the debugger already manages. Provenance and update instructions are in core/ttdbehavior/README.md. Co-Authored-By: Claude Opus 5 (1M context) --- core/CMakeLists.txt | 9 + core/ttdbehavior/README.md | 36 +++ core/ttdbehavior/x64/ttdcapa-extract.exe | Bin 0 -> 222208 bytes core/ttdbehavior/x64/ttdcapa-extract.md | 286 +++++++++++++++++++++++ core/ttdbehavior/x64/win32-index.bin | Bin 0 -> 2814486 bytes ui/ttdbehaviorwidget.cpp | 33 ++- ui/ui.cpp | 2 +- 7 files changed, 361 insertions(+), 5 deletions(-) create mode 100644 core/ttdbehavior/README.md create mode 100644 core/ttdbehavior/x64/ttdcapa-extract.exe create mode 100644 core/ttdbehavior/x64/ttdcapa-extract.md create mode 100644 core/ttdbehavior/x64/win32-index.bin diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 840a6f36..24839bf4 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -219,6 +219,15 @@ if (WIN32) "${PROJECT_SOURCE_DIR}/adapters/dbgeng/" ${LIBRARY_OUTPUT_DIRECTORY_PATH}/dbgeng ) + + # The TTD behavior sidebar shells out to this rather than linking it in; see + # ttdbehavior/README.md for why, and for what it was built from. + add_custom_command(TARGET debuggercore PRE_LINK + COMMAND ${CMAKE_COMMAND} -E echo "Copying TTD behavior extractor" + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${PROJECT_SOURCE_DIR}/ttdbehavior/" + ${LIBRARY_OUTPUT_DIRECTORY_PATH}/ttdbehavior + ) endif() if(APPLE) diff --git a/core/ttdbehavior/README.md b/core/ttdbehavior/README.md new file mode 100644 index 00000000..f42511d6 --- /dev/null +++ b/core/ttdbehavior/README.md @@ -0,0 +1,36 @@ +# TTD behavior extractor + +`ttdcapa-extract.exe` sweeps a Time Travel Debugging trace and writes the `.ttdb` report the +TTD Behavior sidebar reads. It runs out of process rather than being linked in, so a fault +or hang while replaying a hostile trace costs an extraction rather than the whole +application, and so the several gigabytes it can use building a report are reclaimed on +exit. + +CMake copies this directory to `plugins/ttdbehavior/` next to `debuggercore`, which is where +the sidebar looks for it. Setting `debugger.ttdBehaviorExtractorPath` overrides that, for +running a build of your own. + +## Contents + +| File | | +| --- | --- | +| `x64/ttdcapa-extract.exe` | the extractor | +| `x64/win32-index.bin` | Win32 API metadata it decodes call arguments against; must sit beside the executable, or be named with `--win32-index` | +| `x64/ttdcapa-extract.md` | command-line reference and the `.ttdb` format specification | + +## Provenance + +Built by CI from [Vector35/ttd-capa](https://github.com/Vector35/ttd-capa), a fork of +[HullaBrian/ttd-capa](https://github.com/HullaBrian/ttd-capa) (Apache-2.0), from commit +`330b935` on branch `metadata-decoding`. + +To update: take the `ttdcapa-extract-x64` artifact from a green run of that repo's `build` +workflow, replace the files in `x64/`, and note the new commit here. + +## What is deliberately not here + +Microsoft's `TTDReplay.dll` and `TTDReplayCPU.dll`, which the extractor needs to replay a +trace. They ship with WinDbg and are not ours to redistribute. The extractor delay-loads +`TTDReplay.dll` and takes `--ttd-dlls `, so the sidebar passes the location of the +WinDbg install the debugger already manages -- the same folder `ui/ttdrecord.cpp` uses for +recording. Nothing needs copying. diff --git a/core/ttdbehavior/x64/ttdcapa-extract.exe b/core/ttdbehavior/x64/ttdcapa-extract.exe new file mode 100644 index 0000000000000000000000000000000000000000..4b8f7b4d1941a1e134a56616d9887cca356544b5 GIT binary patch literal 222208 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⪻KC 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 Yz2EZf3h(OORrO%UgZUEL|CrzZ1tDRKfdBvi literal 0 HcmV?d00001 diff --git a/core/ttdbehavior/x64/ttdcapa-extract.md b/core/ttdbehavior/x64/ttdcapa-extract.md new file mode 100644 index 00000000..acd6296c --- /dev/null +++ b/core/ttdbehavior/x64/ttdcapa-extract.md @@ -0,0 +1,286 @@ +# `ttdcapa-extract` + +Sweeps a Time Travel Debugging trace and records every Windows API call it made: when it +happened, which function was called, what its arguments were, and what it returned. +Arguments are decoded against Microsoft's Win32 API metadata where a signature exists, so +parameters come back named and typed rather than as four guessed registers. + +It writes either of two things, or both: + +- **`-o report.json`** -- the JSON report [capa](https://github.com/mandiant/capa) consumes. +- **`-b report.ttdb`** -- a compact binary layout meant to be memory-mapped and browsed. + On a 3.4M-call trace it takes 3.6s to write against ~56s for the JSON, and loading it is + a memory map rather than a 17s parse. The format is specified [below](#the-ttdb-format). + +## Usage + +``` +ttdcapa-extract [-o ] [-b ] [options] +ttdcapa-extract --dump-sig +``` + +### Output + +| Option | Effect | +| --- | --- | +| `-o`, `--output ` | write the JSON report | +| `-b`, `--binary ` | write the binary report | +| `--sample ` | hash this file and record its MD5/SHA1/SHA256 in the report | + +Giving neither `-o` nor `-b` sweeps the trace and writes nothing, which is only useful for +timing. + +### Finding the replay engine + +| Option | Effect | +| --- | --- | +| `--ttd-dlls ` | where `TTDReplay.dll` and `TTDReplayCPU.dll` live | + +Those DLLs are Microsoft's, shipped with WinDbg, and are not redistributed with this tool. +Point at the copy WinDbg already installed -- normally its `amd64 td` folder: + +```powershell +Join-Path (Get-AppxPackage Microsoft.WinDbg).InstallLocation 'amd64 td' +``` + +Without the flag the usual DLL search order applies, so copies placed beside the +executable work too. `TTDReplay.dll` is delay-loaded, which is what lets the location be +chosen at runtime; a missing engine is reported rather than crashing the process. + +### Argument decoding + +| Option | Effect | +| --- | --- | +| `--win32-index ` | use a specific `win32-index.bin` instead of the one beside the executable | +| `--no-metadata` | ignore the metadata entirely and use the register/stack heuristic everywhere | +| `--with-stack-args` | for calls with *no* signature, also grab four stack slots past the register arguments. Calls that have a signature always capture their true arity regardless | +| `--max-buffer N` | bytes to keep from any one captured buffer (default 65536). Buffers cut short at this limit carry their real length, so a consumer can tell a short buffer from a truncated one | +| `--max-calls N` | stop recording after N calls (default 0, unlimited). The sweep still runs to the end | +| `--dump-sig ` | print one function's decoded signature and exit. Needs only the metadata index, not a trace or the replay DLLs, which makes it a good smoke test | + +### Driving it from another program + +| Option | Effect | +| --- | --- | +| `--progress` | emit progress on stderr | +| `--cancel-on-stdin` | stop the sweep when a line reading `cancel` arrives on stdin | + +`--progress` writes `[phase] sweep` and `[phase] write` markers and, during the sweep, +`[progress] ` a few times a second. The phases matter because the sweep is +only part of the wall clock: on a 3.4M-call trace it takes about 30s while serialising the +report takes comparable time, so a caller tracking only the sweep would sit at 100% looking +wedged. Percentages are clamped to be non-decreasing, since positions read from different +threads are not perfectly ordered. + +`--cancel-on-stdin` interrupts the replay and then writes the report as usual: everything +recorded up to that point is kept, so a cancelled run yields a complete, valid report of a +shorter prefix of the trace. + +## Notes on what the data can and cannot tell you + +**A missing string argument is not evidence the argument was null.** The sweep reads guest +memory through the `IThreadView` the replay engine hands to a callback, and the SDK fixes +those reads to `QueryMemoryPolicy::ThreadLocal` -- a fast lookup explicitly allowed to +ignore memory observed by other threads or by this thread at another time. It returns +nothing for roughly a quarter of string parameters even though the data is in the trace; +reading the same address at the same position through a cursor returns the whole string. +The parameter's raw pointer value is still recorded, and is usually valid. + +**Calls without a signature have guessed arguments.** Coverage is the public Windows SDK, +so `ntdll` internals and CRT helpers fall back to capturing argument registers (x64) or +stack slots (x86). Their values are positional, unnamed, and the count is a guess. The +binary format flags these per call. + +## The `.ttdb` format + +Designed to be **memory-mapped and read in place**: nothing is parsed on open and nothing +is allocated per call, so opening a 3.4-million-call report costs a header validation. The +reference implementations are `ttd/src/binreport.cpp` (writer) and, in the Binary Ninja +debugger, `core/ttdbehavior.cpp` (reader). + +Format version 2. All integers are **little-endian**. All *file offsets* are byte offsets +from the start of the file, so a mapped view needs no fixups; *region offsets* (into the +string table or the blob) are relative to that region's start, and are noted as such. + +### Layout + +``` ++----------------------------+ 0 +| header | 128 bytes ++----------------------------+ callsOff +| call records | callCount * 48 bytes, in sweep order ++----------------------------+ paramsOff +| parameter records | variable length, referenced by call records ++----------------------------+ stringsOff +| string table | stringsSize bytes, NUL-terminated UTF-8 ++----------------------------+ blobOff +| blob | blobSize bytes: search text, strings, buffers ++----------------------------+ end of file +``` + +The split exists because the three kinds of data have different access patterns. Call +records are fixed size so row *N* is a multiply. The string table is deduplicated, which is +where the compression really comes from -- a trace has millions of calls but only thousands +of distinct module and function names, so every name in a 3.4M-call report fits in about +100 KB. Everything variable-length and unique to one call goes in the blob. + +### Header (128 bytes) + +| Offset | Type | Field | Notes | +| ---: | --- | --- | --- | +| 0 | `char[8]` | magic | `TTDBEHV1` | +| 8 | `u32` | version | 2 | +| 12 | `u32` | arch | 0 = x64, 1 = x86 | +| 16 | `u64` | callCount | number of call records | +| 24 | `u64` | paramBytes | size in bytes of the parameter region | +| 32 | `u64` | pid | process id of the traced process | +| 40 | `u64` | callsOff | file offset of the call records | +| 48 | `u64` | paramsOff | file offset of the parameter records | +| 56 | `u64` | stringsOff | file offset of the string table | +| 64 | `u64` | stringsSize | size in bytes of the string table | +| 72 | `u64` | blobOff | file offset of the blob | +| 80 | `u64` | blobSize | size in bytes of the blob | +| 88 | `u64` | decodedCount | calls whose parameters came from a real signature | +| 96 | `u64` | maxSeq | highest sequence number, i.e. `callCount - 1` | +| 104 | `u32` | tracePathStr | string-table offset of the source `.run` path | +| 108 | `u32` | sampleNameStr | string-table offset of the main module's name | +| 112 | `u32` | maxPositionChars | widest rendered position, for column sizing | +| 116 | | *(reserved)* | zero | + +`arch` describes the **traced process**, taken from the main module's PE format, not the +machine that recorded the trace. A reader should reject a file whose magic does not match, +whose version it does not know, or whose regions do not fit inside the file. + +### Call record (48 bytes) + +| Offset | Type | Field | Notes | +| ---: | --- | --- | --- | +| 0 | `u64` | ret | the call's return value | +| 8 | `u32` | tid | TTD unique thread id | +| 12 | `u32` | positionSequence | TTD position, sequence part | +| 16 | `u32` | positionSteps | TTD position, steps part | +| 20 | `u32` | moduleStr | string-table offset of the module name, e.g. `kernel32` | +| 24 | `u32` | apiStr | string-table offset of the function name, e.g. `CreateFileW` | +| 28 | `u32` | paramOff | offset into the parameter region; 0 when there are none | +| 32 | `u32` | searchOff | offset into the blob of this call's search text | +| 36 | `u16` | paramCount | low 15 bits; bit 15 (`0x8000`) set means *decoded* | +| 38 | `u16` | searchLen | length in bytes of the search text | +| 40 | `u64` | returnAddress | the instruction after the CALL, i.e. the call site | + +**There is no sequence number field.** Recorded calls are numbered densely from zero in +sweep order, so a record's index *is* its sequence number. + +**Position** is conventionally rendered `%X:%X` of sequence and steps -- `45905:15A5` -- +which is the form WinDbg and the Binary Ninja debugger accept for time travel. + +**`returnAddress`** identifies the caller, which is how you distinguish a call the sample +made itself from one a system DLL made on its behalf. + +**The decoded bit** matters for interpreting the parameters. When set, the extractor had a +real signature for the function from Microsoft's Win32 metadata, so the parameters have +correct arity, names, and types. When clear, it fell back to capturing argument registers +(x64) or stack slots (x86) heuristically: the values are positional, unnamed, and the count +is a guess. A decoded call may legitimately have zero parameters, which is why the flag is +separate from the count. + +### Parameter record (variable length) + +Parameters for one call are stored consecutively starting at `paramsOff + paramOff`, and +are decoded in sequence -- there is no index, so reading parameter *k* means walking the +*k* before it. That is deliberate: a viewer only decodes parameters for rows a user +actually looks at. + +Fixed part, 18 bytes: + +| Offset | Type | Field | +| ---: | --- | --- | +| 0 | `u8` | kind | +| 1 | `u8` | bits | +| 2 | `u32` | nameStr (string-table offset; 0 when unnamed) | +| 6 | `u32` | typeStr (string-table offset; 0 when untyped) | +| 10 | `u64` | value (the raw register or stack value) | + +Then, in this order, only the parts whose bit is set in `bits`: + +| Bit | Name | Adds | +| ---: | --- | --- | +| 0x01 | Out | *(nothing; marks an `[Out]` parameter)* | +| 0x02 | AtReturn | *(nothing; value was re-read at the call's return)* | +| 0x04 | HasDeref | `u64` deref -- the pointed-to value | +| 0x08 | HasStr | `u32` strOff, `u32` strLen -- blob offset and length | +| 0x10 | HasBytes | `u32` bytesOff, `u32` bytesLen, `u64` bytesTotal | +| 0x20 | HasFlags | `u32` flagsOff, `u32` flagsLen -- `|`-joined names in the blob | + +So a parameter's size is 18 bytes plus 8 for HasDeref, 8 for HasStr, 16 for HasBytes and 8 +for HasFlags, in that order. + +**`bytesTotal`** is the buffer's real length when only a prefix was captured (the capture +limit defaults to 64 KiB); `bytesLen` is what is actually in the file. `bytesTotal > +bytesLen` means truncated. + +**`AtReturn`** marks values re-read at the call's return position rather than at the call. +This is what makes `[Out]` parameters renderable at all -- at the moment of the call they +have not been written yet -- and it is the one thing a time-travel trace gives you that a +live debugger cannot easily. + +### Parameter kinds + +`kind` is an index into this list. It describes how the value should be interpreted, not +its C type, which is in `typeStr`. + +| # | Name | Meaning | +| ---: | --- | --- | +| 0 | *(unknown)* | unclassified, or a heuristic capture with no signature | +| 1 | `int` | plain scalar | +| 2 | `bool` | | +| 3 | `handle` | opaque, pointer-sized, never dereferenced | +| 4 | `enum` | scalar with a symbolic value table; see HasFlags | +| 5 | `float` | | +| 6 | `double` | | +| 7 | `str` | `char*`, NUL-terminated | +| 8 | `wstr` | `wchar_t*`, NUL-terminated | +| 9 | `strbuf` | `char[]`, length from a sibling parameter | +| 10 | `wstrbuf` | `wchar_t[]` | +| 11 | `buf` | `void*`/byte array | +| 12 | `int*` | pointer to a scalar; see HasDeref | +| 13 | `struct*` | pointer to a struct or union, not expanded | +| 14 | `fnptr` | | +| 15 | `guid` | pointer to a 16-byte GUID, rendered into HasStr | +| 16 | `ptr` | opaque pointer | +| 17 | `str*` | `char**`, an out-parameter receiving an allocated string | +| 18 | `wstr*` | `wchar_t**` | + +### String table + +A run of NUL-terminated UTF-8 strings, deduplicated. A string-table offset is relative to +`stringsOff`. **Offset 0 is the empty string**, so 0 doubles as "absent". + +Only repeated text lives here: module names, function names, parameter names, parameter +type names. + +### Blob + +Raw bytes, referenced by `(offset, length)` pairs relative to `blobOff`. It holds three +things, interleaved in whatever order the writer emitted them: + +- **Search text**, one per call, referenced by `searchOff`/`searchLen`. This is a + lowercased rendering of `module!api` followed by each parameter as it would be displayed, + including printable runs extracted from captured buffers. It exists so a text filter is a + substring scan over mapped pages with nothing to build first. +- **Parameter strings**, referenced by HasStr. +- **Captured buffer contents**, referenced by HasBytes. Raw bytes, not hex. + +### Reading a report + +Validate the magic and version, check the regions fit in the file, and map it. Then: + +- **Row *N***: read 48 bytes at `callsOff + N * 48`. +- **Its module and function**: NUL-terminated strings at `stringsOff + moduleStr` and + `stringsOff + apiStr`. +- **Its parameters**: walk `paramCount & 0x7FFF` records from `paramsOff + paramOff`, + decoding each per the bits. +- **Filtering**: for a text match, `memmem` the needle in the `searchLen` bytes at + `blobOff + searchOff`. For a match on module or function, resolve the name against the + string table once to a set of offsets, then compare `moduleStr`/`apiStr` as integers -- + that is far cheaper than a string search, which is why scoped queries are faster than + plain text ones. diff --git a/core/ttdbehavior/x64/win32-index.bin b/core/ttdbehavior/x64/win32-index.bin new file mode 100644 index 0000000000000000000000000000000000000000..9df5b2438631728c7d6df89a74f10c034a5b40df GIT binary patch literal 2814486 zcmZ792e^;*|HtvK!#OtD*(A!!4%uaI*|Us9w(MC_Rw6PpLu6+sAuBVIEwW0stdRJ> zUOvz3`n!JTa$nc|=>7h@KkL5l^F7})YFMaXmGX`97l;*!MAp9^iTrRX5{ZrziF{rt z5-I&rlF0Tqq9ez2_#;Y3mh!(om+^CzLi=1eAI>AYeI=Za zcwgD;QGobDdA*LpcsnkNAIXU-M@L@6X?1Rw!Z~qS*&kJ(vDae|E~j&kXAUlp*WpUC z^LOFOI`_wgXYBP(TqX2hUFWX%GOmS-;5TJ|bbiKe-yb*7xxElK!Rv7g+2c8Y-y;4e zZcV&O)i9nm#E0N^vd6a`cfiMRXW8`=RtxRB=-k)C>$s=ReNEQE{dDf@qYWOQbLV%) zLvSBF9Djm8lil9}JVxi9{{cK6pTU!4=SNi!#I6W0jiSt-ZW@e*FIbI+#+-iTY`EwbzP!&`Ok@lV0q zb?)|y@h+V^|3|!A=gxnG_v$>JjwCh1cn;~@?Q_ZnbsW>V+n2=0aV@!-juW`I&Og<0 z(pG^f_&0n&zN|x!wWsTsrdIG7yiY!&sTUtKl|%^ypCnE z{zYct<#<2-*7@q-lLpa|uXL=GJ-)R%|5?X6;>j9@dh2b)Tgcwu4RRc{?~gaTy}S-@ zm*dI@@m})(zz4{Gh!2xrx>2bA8}XX5=W|x}_0$lb!z0K)FUKhUCB7uP|7G~59AExP z_WT~uK0)K?$cs82%AQ|K{0I-ik8wd0Q-X*yq|qXF&L;fDDA79rk9_Wd#)x5T^gd$Q|Yz+G_5w?g|KvY*EbaesVS z_IeGGegEWmJB)uQ?O(woa7TH7j?ZLYFH7(^$K?~U@25%lq3rdTCVTy2S_aR={p2w^ zzH+|e-{{=yF<Mn~?+-tRg(_x18G@$s_9_a9!0pWut~BOS4{So%+q7vBx_ zV&kE*>qX0ce*S`vY$UM z2)@7er+~Gf0t-qmiDRMi;m>iQJ#23Tv7J= zcfghKHe6ZOKP80r)okTw!ZmRVTu1i&Kg132IN9sbRQB~X2RFmZWba>d**Dm3+0P5x z{e9Un?9bb>U%za^9o$}y>J-{{B)_9POh*^l>$Qe>583N^M)rR8p?!S@!3XFUdcOXUiIH zc)9HQIl6`Tx3b6kI$lG(0bYwg#Oq|wetCcyujoia9anHioqPP(W$))yd;_nO{rtQsdp%~@Li>C;BQ8SwVzS3mT=sg5ko|mrP1ckmt7YF$rDVVU`5jlpf5?8`*OEQ{ ze{mgLrhnM4y11F_^{+4cqyIB@`?2IVRNT*_g~S`Vy^e$OX&p^;?(rob5FL40M{`;K zBK>en!RxzTc79vp$MJiz=bLC?h<6}AJ?@H2;hwVBw;Aq_-^U-~k$4zhBOlc9Vi?q=SQJG2NY`S4EM0q-XNL%fgpIJ_S({3tr|y^ddG-=n362A|NmU(bxhXLRm+ z`Uw6*=N@mqk3;??oqNB^;Ty8ozdpXHb6>E%pRwb^@!vYP_u^YP-Y22{ZQ1?T#rJjY z^_YYI)w#!e5y#Ta;MbSY!$SLbcnwY}`|HK)IF0Q2_ZS}Xv&g<4YL5thL3aHy_+{Ds zZ^XIDuQ4*@=as!ay>S8ZcjCgtkKtmn$J1d{XkV86<$wAU^7biG^PhQz;?x9Dh$_u!`Fr}`|!o5`MEN&L3#@ifQp;6eC3 z+RwoqWUt>Q+?n`qST9qajxX()(4StGJk5U%>(lO2H^uri_H=%Iu^#bHJqznG{nS_G z=&^c@DC=J&ug-1Vc2A$@?XYf%r_Zk$SeMn){2#Ek@V+4py`FG9WFY2OB4ko~-0f-lnkSA0eGeB)_hyx!MjfBo`2 zzC-*Ke2?~(@k813ZH50O{vm#XC*jx{tm|*U31qi_fD_7|Pr`{|JjuvUjh~l2|NJzP?i7k@#gi8o!Fi;)-}YZj2}5&a&Ts zm?C?;OJ%>__|n#bZp72^B{}w&(UFD=S{OZMm6LbB)gx9s^1l&9#pCHs1eo)!ELu7)4UuGb6uV)p!I$=~USvK8Nh zE8FVYuRB0e2gm%To_aBbP^ z`6qr8XVND!uXjCL4GQB1vaiQ#xFH^h8`1tSZX!Q@J+UCvYhkPXK-`M<2XSlii|Z4o z`+t}Gk8lUP4R?{f{<#;1{O+>Xx1H?kt&i;e8jSneicclKAMLNaDnBgrq0N6Fs5A$Y9p=gTxa5wF41oUiz0`5zs# zW%rk6NqC-qC42leWxu~YSN8f0m;L;iPy9>#jqHylvY$7$+aJJ-X#XeqOJ(;Ly)@KY zM*Cc{pAWXLm-_fyx0gHPRd^U)OMZ)G(UGn?zLWiW<&e((yxuB%ed6ealf4rc!TaQ= z`;C9abMbN6^Z5av#3{awj^xpCO7{C7WAIryuDk>P<+$44!dLOE6=6I#WxsydhaccS zag-kZ?*9>vgBz|4?PFw*e-uuH|G>%Rr}JMG^3&jKID_o^#c(FPSoZq~S!9pz7|tns zKDT8*zw?qGcXe<+oDmn0ef<>1g>emB6t~2$;oi6u9*fK34YEI9yn!#`in8bX5Lc6Z zy=7Sw##deTeDmX)xF)WRr^yR-yeYfhA>2^*{0prO@usrZ=N;UJ_+Z=)pTr$y@7G=2 zU3UHa>q5QWvd32&_r)LM{<7C|5*{RbJd5!Vyaj(k{$V^q_Ig~$BXOqhLjR*=_g@N+ z#*O6OI>wMco%mSU^Vy3h${tUg^`YKW+3QmP&yoH9U1QnxmXhBGuaLbSlki&E^Zg31 z$4l@JwErIeh%e&pIM4T?zg@D&TLSNwb<0KG!AE4zzb`(97vU4K=eH4`#=qcmvd4cB zU&K)xLjPA~*UyTt<0AN`?D@9CxA7o+Pj>$c@k840#*gr2{FwHMe+d1@(q_1RejG=3 zy}CG_?Dgq_lgM75&u}W)EpC7-CE8#Y{1#TyM{(W#KJPvm!e;)3I*WrHT z|BMIYB0q-l4V8U;RL3J_ujd5(x$OBa#}jD(7oJLfye*;LY+L{@kiFie@gn)@{^Mn` z`yYx|MZ^4)GF7jh<4gK#Yo*5sJ-Cs$3LiTz#!@tvh5dH(t!dGPXza8Jg z(c40Q4`kO*kN=Zhzch~0ixX^!1-}cT$ub(xG3@cxP% z+?4zuaZ7v-zbkwE(LaU$I^dUa7un;hiF@E4xUcN-O~iv`@Avok6WR68;gPgYv@`TK zM)vx?fX9(v9#540{Aq+Ilivq_N&aVeCZ3Du$R7U>cmaNbm&oov->xv8<+ui3DSP~# z@mf3ue^34jypj0Ncnk6KcsubFyF-7wWRLG9{Il%!ER7G*zB)ci`{wv0?uLJtU2iPD zK>Kg-Me={fS7fhm@;zZZ*T}DoZ{qjxZQK{%lf6Ep@I%@EVd^vX*K-^2zvQ36Pw*2Q zTQ7$E`6S)mFrGNF$5#%=5O0j*67PZI%ihmnI1!$Tlgb|Na-0I6#%W~t_cu;UJbGUk zPe$4MlLlv#eZ5!2xn%d>0OzHBdt3m|#YJS-TZ>EJ-MF0W`e$%u9Qiqnrxy7saed;Y zaWmQ1Lo?hG_rq;z|0V8-AK>ofr`{j>>x~QH0p!=kLvVjQoct+xH1YL#yzKorh9{B# z08f*>AIT1c{%6Qu-;#K??Dc7e7m)uxUP%6EyoC6Cyo~rSc!li!xPjN<#J`08H_Gns z6}%nK#Cv7WXB|Eud;GicLD}Q~9UqpxKlkwooa|ue?|0eb$&3HMRqz$rAI+b!@1Gv{ zs^a#?_?qnTOu;v(w;bPn&*Zk$l|{43z3;;#|0x?E1BE8QJq~fy>Dr?}xa&?D0;*mGKf>UH15P z;5zts+(35yo4Aqe`f(12@imoQKLdV?`~tWo`BiWm;_Y!;JOZ~Pe=+WWui?(J_q+O$ z@cvjA+3#;nlNaddA^ZKq?Zo@Y9{(ZS50^X|-hUb(`~CWA_#<2SZDhY6JyQ1kw#dhI zd?tInUOyIo-ex>rDEsG0CdKKW&T|KS_i*+2ig3`d^`@#VJaCBfgyem^dc?EIDF zzae`*t7LyPA>VfUzIZkH)A1VF<6Do{k)QTtbflb)?_|HRJKVPlGe)|1&{1aY<_uzeaKTdoqwEq>qf{)@)@JZS4ul|nD;ulVb_7`zo zd`rSW-O zM)vwX_ebczoUQS^h~FSy2Uj5e4z5J}OI(HcOa`+4>;?o50I?qMtbH|{69zZ8Fk`U7RJM+rPw_WfEL549EV zfJeyQk3o1O{v40OJMpJD!KKjOX#5iX48M-Y;P>%Z+3PtEe}TWllX0rcq5d@4*IQmZ zm-u^l0saav#;5RdocBtow@UWhG1k z-X-uag%EY zUD@-?jsL-Q@dMf8X^a2Ei*YRdLaoPh8pp`azlRgZuAlx!=r572cyXLW_VZ#2PAdER z&ByTbvhR;iZie=mWbglR`M!=EviBqD-yxn;_I~8Sd2tn70C&bk@Nirle}zlQUcZC5 zEb%+IyzKcUx)u7b=(xs{T`s1hs_gwJkE`MOxH=w+Ysj9@23#9o#&vP=+o65~+5Pp$ zP4E=l0x!a?WRK?%ZY_I1uHbiwKYu6GZ!3E|)o^><4R@sd9o$*gTilVG*5n zTk#Uv`+X5Fm)&2Q`=R{`TtF_PW0manT!L52z90U<>t)}+10IC@&BV9i?Y26&hIh-Z zSNdVd-y^&K&UhbQj`zF0;@j~d+28McfKQU2`QK3Q6mEupm)+kidTfHKBm3vy@8blr$D8JHsGmsocyi;U#M|Ixvil!~Q{f3Xt?czn@g&qsC+jWb$V)hz z?EXHL{qy_TW#1oja9;e2?AOyp$p2IJ*AGQ;EL}x*aoOX2S$2L&;tgWiJ^uc(pPw`EK;rB1hq6CE?8if#ukoJ7L-95I3HkT&FkAU)^@E1)Z@BFB%Z^78 zuYf<5UB4mzOjh@i)_5H8-uMe!2{Z9T+3T|uPr*OnY2@$3Gi1;2S3J{k^>+@>#((2E zD zzR6`@FHLX?+4CDH`{y%LJFfPlWY0H^+bcd5r^VmM{(aE&vOmtt4|Ld1`_~WR+8J?f z+549nzlO8Q9!~|?zt8sqZbCep>EY5*b>IZ?{{v})v zzl`hSoVX9pWvjn2I5+XRvVZ?25AoyjB^`N*XGjzidBq3uIy!eeAMx(8*CRh3El<%= zK=$>rMCV@r!nEHid;g2zL&RUD{W;=AiN{ME>K7xPS@!-H$7N(czh5K2zU<#OErHv} z{&}d9xU1~`OX0<`>y^eo$o~D)GPd^X1o5)6ub+qbb@J0B3G;h{{35d3mv_GAUq|-O zr&T2XJ@PBzFJ$*$885_D@C{s5_If5y8uDupFNka6dbk$uiEHE8viGZwt@#|4y+3af zKS#VS@yECx&i7onUhB&qPbb_6kHSsyM%=>fmH!C8MLe;7klojRE8^8~YvQAETUo=6 zERucwzeju*?j(D?AK@G)0kX$)hWJ37C`HI0gfrv8vR|(h#lvLJ zf0*ogBV~U+n2yKb1LS{!AK@vo=aV31=x@60@npg?a68%cXUcxQO~+s1pUIy`ek4_> z_ceYV&zC*^Qh1r{@xF^!$sSKXypHzc@ppJBUN8H8c!D>`{`^-sb?AQ!`8DuX+5NY{ zdt~?52k$5U3w*#p=r~N8? zMfUpqgm0364*xBC{z>(V7rq{E6EBGG;41j8?C~|j|H-c35l88d$#}ejaE$EhVIq!; zm*aS{``?BW$e!P0oY+?TRB6Nbo+CdyPELMP+3TB1_IQ>PPbYgn@8T@7$5SF*sFzjt z{nj04lb_xXI0xQ@bJG4a&V`Go5A|}(uJV&IME2{i zfw&~`Nw_rr4wuDe@$0hJBPwI4UrBbo+PEh9U*g)b_iq)hhm&Ut?HkG7|DyP9+4bMS z@5o-inYf+o_1KEvBmNuiY1+SBRzbwPw%O3A3yoq?87ef6l#H-5w`Qjb2Ke|0*@7Jezr{bRP zTzRFAUF07mZae=Uya%Vqrv7y7lYKo@(z*LPK)eG!D7*fr_*dEUJ%NwOzJIUb)41}B zq22}A^}FGVvg>_}|H3ozCA<<}mOcLS_^RxB|Kc0uzmPr5=O!*Hdp>{T#`qTPyWzXC zKSn-dk8d)*M|{IG_IP4)g!=atx3lAixHNtwyIw>5pX~9s#}WNOM6c&o`J|3$**{Wq zjd)Vo?VsT1aQc@*|H)*36n)07-x{Y>-1pNUoI&>UWxnj|C7bN)aSwh;_IUmxKacEs zIbII^<&!<%M!10N{U3^p%C0vSmmq%*E`_(@GPJ*rE6DCIY0l7JW%A46s<J2Bq9{v;$!(;Jw{DtiK9LHbc zm{&r*ukZ`_8`<-#A^ZMXEPH*s;3asd?DbrVr^|lcEWJ0YU9Vgxb zpTwWyQ?l!w#ixlsz-MsQf}!3y@{8c}xGKIN`=jOmxYz%9>@#-%Kj1&8cNPC>Yr&%m zh5j#6Kjkxa`;z!C#l2oN@lEpkKV$FT7<|k1rKiT{BHjdICn6-Dww{^soogY&qIDzbXO>rXPV{ua1^Z6b>hkwJ# zaI#lJz2vwcPJz4Nl(PGukJHHR|0GUJe)6K>{i$^1zasnngpBgj=L7Mq#5)py5$~4$ ze#=X;?~k~}g7e~vxRC7i8H|h3el0FR{5M>d_AeF>&Wi^2yQ_93~ng9-UHki7kn+OM^oAT*THYeUf=g+zu(cyR>H^l9Xv_)`-|;l zf9#h1{)FxJ4`u)UR|naz7xR{giImjQ30J~ha7)?m$8@9pN5p%`{`ztP?uiSQjCuO^ zrFzN!{_8+ISoVG`#2*vCA;*-8iF_t2J(5D__BdQk=l*@kiMW^S`A?O-eoN#nI;Pe=*tP+ai1a zm&tyAZ>!s@-f8)oj$N|n7rSg&&waA%CC3MF9@*plRrdZ2mHqd94$B_@bn;I+E^i_K zl-n!+iR}G8gEN*3J}>+I?tJ(n{v2PiRc|J~fp5u~Ue_}~_IO{{x$nPw#QVtpd9H`D z$1@&3!b@e(=dtYd*@~aY?(mrGdbaz2Li^Y$L%p1Dg!<9AE{==4;P|q~Hwq^r{xwd5 z58&s>zlu}fc;!QXsmXs4KaXqUbhsVPfLF?1uS~MX^Gb!V{#j*TU#)Qt{58()_KN?2 z^WsN1pX~iBP%+digxlhxG){vF!0gR|)xV;big) zI^LmuL*ngZe}BFM?t%y7Ud~s1g6#SAmAxMGa6j4mvx)q{vgdb5_UES$@j3hvj#Lfx zKE|)fzW;{F?(ZGh>ot=29@)>+Pi5cF7x6e8yIQC>S@sR_(lhq;Q3g+SJ-MCi^_(Vq zK7;XeJWclN*%`Jtdve$2w?C0@2_&f6Z$sYfD=c~gn@CMp%CVwOO59PEqV<4-Mne0^{_JYV+b%S^KC?;xH9|Ak+``RavwFUo#i)Wf-KweKVk){&q5;kY3F z5*L;|-o3K#m!h)Q_dG5pd%W4|$3$M!QIhtRbneghrQKc$du0DT#d5O$hV>&{9mj7F z;tg>L+3V9v_V}CPcCvpytt0M=2jV{DZz%K7E}i@TSFr(?k==fyta6b?c#G`) zJ|cTQTV=2Rzr^>DpQLGMzaRIP{rdS=+55Lp_Ve_(?D?OPJ-**$*H70h)Ia6+iob-< z;#ct>xB|X}d&qwNUb9tiCh@;z_jdr_k-gv9n}_}$-~zJO|FNz1?TE)t9q!K_#1q(x zpO*jDkxcgMznY+W}{h-QQ50-Rk3LWiay`>r1sB_ov zE4zN2R^jvGFxl5%3E6*dWh8DVdp@J_VA<`*${x=I+1J?D6lC{r&%?vY(eX<)}6>kyYfs zs&hX-*2!M)xA7*&dne3)FYV{a{`rCfvaiQIvR|JZ zCjSmTg0r^`@uRpRK88EUp5JlV^BXODy?>Ma{Fs4H<6rO@@-x00e*WaV?CX0JzJ!al z3-KGWpAR3({(H**$YNxf?DhIr_Vv3NN2dw?OZMltq_Wo|Mf)(m=VY&EHk=Z-lzZrS zUiSSpj(A45msiT}FO%#6?2x_xw(B3knem^pUms+Vz27gq7y8d3`+CfWbIKl1X`C0= zzy-+v3>TKY9y4)CTlM$Jf9fbNdpy^4?)|AC`})n)A-EFpuCn*5GVyt`=TnvVDfzmN zYO=4Fe{pSGwPT3am)-wB+#D~!@8IuoC)yv7-CuXv{q@S1Zm;+`JX`jDX6hQ^-^hOcC+imKt&n|vXOZ20 zgY2Kzd;|Z48ibMM!`ve&Qh`(ZwhWnWLtwnng{ukr8_>%0`zX@fJ=b`NVOH4do zkKkmo$CFd``X`tD{A`cY%3j|=vcG=GO8zwbg6#U+@r$y@`vAX$TlCcYb>zZ3bne$9 zd1XH@-s=_ir=aZh9U^v1{R*XI#j0mtnf6G^9|itOi21D$(5Rf)fgYs$WU z`r&$bG;TuvTG`i23pug!ci;~AuKpv2?ENi|f$p23E^Lqu()juZks*csNzkgR-=U(rPZZEgNTV$_yH@s8!{tUspWH&hW zj6I$>146xhihH~T@d5l6{uTGYN2s^-8T)#EWnkEkQ;K^(tIHnmW!ax^N6X&ttG0%8 zO7``6U3U8fgM#nM9^V_X_v3-=^=^e9;Xbn8pLl{t;Hb1=eWu|UyhZkS63AYkKXF2w zW^lN^64~mnvFz(Bv8-RgjP#TJdMK@|=8>(k`_Cx*{<%s#o9yeW#0TN^z{|4l?|L{t z{s0$qzT(SpDcSXQ;5Ue$#Fb^QXWb9O`^{BlUmqXJvvkyzJ^o!f_k8QgUcb}0q3rSB z#Z7JfheSg{{#(wMUzfdKt%x_5eSNl-6Di&acgLULLF9jlhv0ScP92}f9#5)|f=9@n zZ!J6q_rMd#{}NA@J^t-@8onueytACIghzM|&Nno~zjnUjHSj|G9$t#a;uUxSUL$*b z58<`4_ao)Uq5gNW`>%{Q;4XL*?MLFx_&okmcD*}zD^BuBsJ~ry{p@%r?k@ZL5qoTn zZ-ab7$Ir5_uRrjwxWced@0jf8$D8;xehXiaya?OEe- z`})X*FFRlU5Z{pf`Faw*=k}_%MfUab556G#`oAxGyott#_`kB(E2r%Ef3oX$BOayy zA+A4P4*VkICy@PmVm(eHyZY{sxG(-4kD~nr+3WEQ@hij+5xr zeqP!A6_s7T9P!s=kGDSYvUn!(in8l3$5rt`TvPV=uHpK!=M#Ts7*7+~`&&`={F}MG zJcjt&vim=S+uDl9%nI#0%D$db;!Zd#?kv0h+qkRStKJCQ%lYyo+*|g1&f)&J=bN#=xl%ZR^; z*T{bVQSUYQr-$7O$hXoyeCUeAuQua`5n8eEsX zf9GVsev0>X@D)5<_Vs#4_V_m9$FkQy<^1sZ=85d_)xuF3Lw^Ht9NFX9f#ciCkG~+) zPa?a0KH0BFk`b>(Jhklp+7eGAd;H^xr=|TeoBw27n1$FoIw0F;`4E7+2i{TmnFUrm&a#uW%6S!4CAXR`+lE~>&kv! z|AU(ne{oS5e;e83Erj30qh;@3SJ~I&Vcc7Oy8eqpd;sxG_#@m*_TSSODL=hm@F>SM z|EMJ)K2G+0OXDwaV?0sz{eK2elYKp;UmDuaw$;8V{#tf_EAf2d+hkv_i)CNWw`9+6 zsqE_~NV+2c$0ZD@Z5H^sMP@8>Yt*XMma9Y4muk{>5i=)cK|m`Fz*iDa+$M>x6c`9!S@ z@f5P}_nJ6^?DhB>XQurboL$y%BG0V~?Q`PhI4|wL!1-nG&t_Z@U%`cOy49iHtGE#^ zCVRZ2adFw>JBUllp5JZ!y6o#Q#hOsB3i<7Db=luP=!xqQpC@~L8_FK*SC;dQO8%Z*LOVe zZ)C6Mx5U4dT|e!H(0)Db>*39^@AvQVcG>fLgm>b?KZN#s$ghSE$X>4z_!sh*;6r#P zK8i2k6SPmbG1NavJR3euygL3}_Iy9Vf092FU&34QRoX{w3iYqa-me$&-^9z|Tg2Pp zd$QN#6Z`#6%KrX)e_T)Y^|K2%mp$II zxTWm=U)UDvwZ;wcJF>5jnYgX&>vI$CEc^QV8NV-k{K>Y5dc9=t_nUYi?cc{A(|!mZ zN&9hlG+u?r;(d5LPPilVH&J$fHSu)f?d1MCX33uKQ2dqbj|u$ejB zOMDxCEc@f&Gxqx4$4_XVba$v9D@$1al5#a2QL^XX2*)M96UUQ%|K7*RWsf)Ap3pv( z?D6HsX=L|b9zTz(Igglf6D&ad+YaaS!63tIacmm!k`+8V}cgkL`4S2Wg_4yg^!8h<;9Q#n{ ze;>|(f5!Roe%uWokUhWs_>k=J^~$4QQa{J&(+e*(TP`+D7v?-8$Y zG~_>$y`IBx?5trtKjXOgI!=h|9SiM~%I>ctP9=N&KE-M9LYx-w!|CzAI3vz|Jk-xD zdp(Na7iIT10O!K1aDJThL}>piE{03Wz8-qvGP2iy8h(TL4qQ?8e3G3E^(xD;ZCr$hSz zvR@y5gNMsruV3+Jvd8-bkH__Y5A7$DzW~pWJ>J83f$Z0JiO+=mm9od56R)9tCA@+7 z0K7@|dQZYzi8neM>g|yI_0x2GME3j_<5RT%0iUIP#dD$k1@ar?E5v)?>$3ObYkX7o zdK|!aiT{oNkz*+y=X|JtpLhZM5Ld&GWPdb&#!u&qBQJ#Y`WDBQJ)UhiTK0T@#ffB( z?imm$9aejUGyE8wegyg&8%T=x1D)wx|u_Vw8jHzqy_ zzb$*cmdaanw39vlV>-XBqk|kJKi0W_-=LH1j~o~O-_GwY`|qK5C4VLEE<66(Um@O8 z_I?eMC+p}Z`~F+3^IbYVp#5RuLu9YVCHxUieJQjbD*O5=g@?=TZ-DH2qwr+npW!vc zKbKwq4?IqelH*!S$XE_*)J@lM#iA?39&{^R6l!>4dTd{&N9y^8oe z@%s3p?D_S^m+?4!O^#B0F}@*ty*A)GcrSh+dp(k05950%`~B9O_&;0m*Kj0T$ghfH z;lA=T9Z`4{j*V~PIC7Ng<-QT}V`Q&iADn>v)i@zed^6-H!tdk6co|NDkK&{_+ux!6 zb8>9;w-Be0eZQu-72;`$zlk%*9`6vG2_M2)$WMAZw9iJo10^WhA;G6Ok)t@f=`bhL|$o~qb!}IaWcropZbPuce8qI`dRK_Q zDZBku+yY-C|2^5ie|DYtK;k!Kuh)3|H~t3Sru`<_zwdCzam{BBzK4&>Uhn((k?h~k zc_^!VB;k{={*PtvM|%7O=f{y3L%br6g&X21+(q_yV#~2r?-SX7zc$A4IQn~AIIisZ zeU0N2-zEG0N+A3CJS2NP6FaVY=VjMV;<$VZC&P*KD#iIJ$xkbfX{nzV!3AtxZ>eRk zS3UeZ?k&51I@$F#vKg z{)WrGAG^w~Hyd}y>v0d~EB-U?iO=I+I1(M|^_D%Jw6f>dPxgKkl0ClxHk&#*I|a@tN$OA6Tz*$H&XwujKK<{XS9l&!6O#U2m%F{wm-vWk2w`%Km&| zi;=;2rtJLjvVWgx7G6R7*|r*NmfinX_!#jyID7oKPk;YtuI%xZkp26f^BtG#%O2kX z@>|OOeESXFfEUWX9{!Mhy)Gu6EP?9l^ZycC^>WD`?^0ad@t*qoYj}w4{+8oe_**-U zzJ90u3gR1OUoR_VkN>gk>vN5*{Nf42`h6#Re>&ms$zO~&68{BnCY~fw+{g<$w#pv= zZM;qP>(^Hk$Bop`u}}8djz+!l`_|5N-KUWGr$`()4O3w)9I zB>WGaiqoeG{ZE%Y{t9>|{s7O$bHA zaopGYP`nnO#T#+GG$DUGZjblMzW%4+BX}=9BYVAn!+*-YpRVH@IPLSH{(U)G@uv7c z+2fmxTTn6vLmE;(;zk+Mv zjOjzYy0UJ^NMYO%cfw6&@8@9L0`I^r$-j%=A)YZqsNW7(!X0oo+!_CbyU89;Ovcc@ zr|j$H72F%w#(i-Q+#ip}17(kY9{xa%k-x*A;A{9(+5JZ{h5pCN-rrPs5-uV=o`{#?&G=jVA6_N9{|s3|{WZ7%UPt}}{Jre^ zVFTVSd%lICi#B{|}rV|A~v?i?Y|JF1|#(6TU2a`~&edd{FlO-jrh$zl`t6{)m1t^l!U< zYJ6Yz^C2hx50}JIFNOZz#L;q$^54S=@fSFm?EP7cQ{f#rEk1)Y;%wQ&__NA>p1mRa z^KCBK`_mieCVv^uM|>~NFMEDZa6z0uN2pgAx5lr^UeAfRIPo*MgzWhgeJQjrBYVBx z$K~-CxC-r;<7)T@t|7a>%rA#}wQ(I>S9X8z;)cYB;wHrB;1+lrZY6vEM{pbb1h>U0 za)$of;g|4xxG3%@d%RU}7uoyY9QVW@;r_D6KM@a>#f2?iSNZFWY<57 zUnf7NKp0PDoDtWgeKGtd@v69y?D@CEO^DCJZxg?OTge`8&Vr%8wzB6}Np7s8gY1uY zpRu2>dvQm_y}xM+h5RnGZ;E@!o?jQ-Uv__&<%c>3%l`gA;=;inJ1%F!BXB-ETK4-9 zW$`#%7f*7&>bJ#T67Pd&Ij)3JcrIQlKYf3I{2h1+K8;u4>v%1GEc@qQH^^R}3`K%} zki8!*@Fv;oH56}=J>J#w4j;sC;axb{t0BIZ{Brn!?E3HFgXB-Zhw(;yjQp$e6CEdH z?{}f1aU<1r{7!xgd=5{=f6#sxzK9>-OXO!M7V2Hah42mXtKh$J?&2Z;w(Qq$O=Z7d z_aE_2viIkS?2n1Ezh1Zfe##CU$r;xFlJRCnSdw-AM46@fdWyz4AmHf=I=a*CV^^+gx z!rgFgJQ3%?X-dU?`u)4SvVT6kmh5^ZWcSw%m$fyZk8uS&1y?116RsuuemRQk;#j3a z{f0OhZi;Kk?RC5*dwqJ~R(L6XM}GP|!EJG*OlbeE?ENT*+Y|o~zlVRq9dLrOp?yc3 z9e2W|ac9}%n~1x~Ua$4Im+b!ImJ9Xz;Ow{`?R(*YvgdOW4J=7a2yMBHA z3GRW1%dWQ`kDz_^H$wYQWskS7?Cbe+$F*Ny;4jGk7EdDng!WTqe|}0+KGd6q3*xVF zBfMDlc-!NpcphF({$0FA_WGu-5bA$NJS*OW^Wp8dI^H9@zkYb1?0R$Y0onK0R(y!~ zIeb+1`aQr{?+>rTmt{X63RMdAuE>6Vb-;HWmuKO7 zwBLm96F-6<5Wj@~C7!u*sQ-v~0sPo;_1^_Qk-a|4aa67_-k)$B+4&c6wByRZhvVXe zRYHI9aXFk&_Vw}>PKNu*e!n`6?2iMo|6Y}??jo0D|Gq+c+5P>8GvXXo<3@_;$c%gI ze5j7Bv|pw313I!3zoK)$-}{p6@jStKarSEAekdgSerP89?>W6{D}SKu@f4Rmp3(Bt z=Ovy?yp-(y+d;gv?Ca$u@i%18?=r50|HIW}*MFgUs9%G4VO$5dlsoIFFZ=VyP~4pO z6x>pN`aHm`WdD5a4%~(KFSsl1&*2`#@8F*D(~laVf7|t6z`bOz*Q>a%?D^Ed{c#gK zkoE)cAmUSHukQ!4*K4)x?-vin+lUV*|2Q5={4)N`R)NwrL%ngbf8V%;?C;NfDSN!_ ziO-OIz0V{*)A@@3Mtp&sK)#4q;9KNxkUie0TA}`CoJ;n6w#mL8s^VR;ug3;>KW>E& zlRsMa|4;M;@kRIyJ}pmG{7>1}!+-d??AOx?YlrrCWzRRe?EL$($J+!yl0DyU2J)*u75y2t|K+^n>Y!Bk~Cwn~WaYh{f&A5?l zI&sI0&=fTxw*UO9B5`P5`#rg0Y+4ISdPv8Qw$NLZ$ zmOYxKMRiNA%56Q74m5Z{SQ6Hit@v@c7%7=D9zYg|G0eoezw@HSjS_I_Nz^<=Nt zV_aYMcoQ}V``3{8`|?m7jbvXxWAWSgwCtbfZ6~|`NW$e>bl-=J^{4u_TN6Q{>q)});1}DLv%dVFie<6E(Iq+osDxM~LycO_l`RV@p?QHZjjyUD@lq9{-2`!O?lb_>wmb{l&-CW$$-l+3VE~C&!C%8uE|h z^f;|IXktIA4oU?+w}eR}xpnRd5~I^KXIc;i0nchlaA(cP4Iz|0Tbr z?EXu<6|T2;Xx|FABmSA}>!qXY`An8Q-|n*4V?OSI6TTh#?CN`(jG%y_u${$InN z;&!t88!NkhZ#)ivjlYmR|L^f6{JZS=PsMlebo^Y)5TAv!<2m?s{I%@%U-Y3viElyzJPzmmu25i1>1!Fuh9Mtd;>R^UGKK+`E|i}@mKgC+1KYP z{0Jv~C$x{1H_R_1j)x24q_WqyE>13cy;|bbxDQSzdpy7446?7!8#ue{@#Jb7`p-qY z1TKUd;gYiZTY<~UUcb}0BEE^Mlb`b4P`|e9{&M2_xH4`+{@b_(?j!sDYbAR>#^Kho z*JBU)ZSfi09^b_sY5xRw!o}K!{p~D!e${Yy++KG7y~rPod*fNM_rH(q`K`nQak}<# zBZYJfk$wG^!6R^QJXZF4F2WOW?DxXYLrs%izo+c?8)mz`2K=$?*OLom@Aneo3-Q0S zUo89Uu~$2Uddp`c!TWzF5`{F6Lk#rHsM$BX7a1y zEwVqlKV#RMkGGM(AMe0%I)(Z>aV@-C_Vq9k?<0N~@0Y#5SMaa0=Nr>G)H{R=;lr}) zy@ij-9^YJig7`^%N_PFL_$>Jux`g`YiNA&~(!MvoO#T>rmHdtPCh;Tq7VWR&yTns= z4gLKidwzBCed1l^Avzw?{&W1F?D5a&7B{j+N32)E`ExjqG|an%?-1`Ldp-Bc?tg&n`DO1D;vdR>e)Pk`@frE4*xsKtc#-V&$=NT&m&mTS0)H!ed?)cb^8dr@WzVmB|ImIj`JdyT$X|?i z$$nmK!h2=EpKt{4BmZx_-}$N^Js{LSNIVBVBzwMP@NwDWZ!G)o+n;j2{zGT{yX<-& z$^QQbopW5Ci!acACH@Qlgs;k;?`eEXcD=vxT^wg%sDEE}{WSO?&L#W(nn$w7Ur_e@ zAF=WY8gDt-KW}WieS6}uW%t(y$H-p4(Ks$%F8lLIJX`sPWPkrBzU+Fp$WJJHKcWU{ zef54v65{FcbF{A{yIwL`>5&g)|2%Ih+2fBrI5?f`>$L>VCj0()Q}+CF%kF=myx>T5 zB(Lmxzu*GIt9=mSg=AlUi}7ptFfJ#1J?_XJUwPT{P5hz0zog%xsz5xe?09A3MP&c} zR2A9#SxWYNYB{a}RmHXckE^?Yva)*LK7NRy5do1#kq&93OS-!x6r@E_0claX5hSHU zQb1BdKmnpG2SbC{!L`}e;GHW{cYL%p}FH~|BvkVW8cQH`-RU(zk`#? z?yrUHf>O(FZ@Ya4+3j26eB{3?yS_@Y>ursj(7rACU1YCUJIB@kVB7&OBEKW~iTj7~ z-p+cz2B1KF|u!Ep0memh{w_2 zcs!B*=HY3yU-z87e%tYM#qCRY2EK!5;#dPieY0=|JX>}>HSpK6*XJGljjZL3e2BlL z{Y1Q6_VHSRR}$ZZSK(I&h4EL*e*7zjH_JXBtKeVAZ-jT?ws}s|NC%0 zd>FUICuASr{`ivY`sd<5WUuEMd>J3YS7?78-y+4D((v&*h08_q$zvh3fF$m6&UP%GKzLtgTG;C!;@_cJa)ev)A!zo6{* z*Q?75uTNdc?~J?SvA7pLE&J~ad`kOh zqk;$E(z5#-CTqAzYdi|i#$)kjJVEw)9m11||B0vJ=%Yjbv&gR|dwz3eAKy=9Utj0R zUf(5nG3__wWyH_nRrnrWM}F)tLVp`^61)Xxm3{sGN%r+GKi-9_lD}W}{MzF~cq;iv zWv|yS_@wOfgK=)z*Sp=gu9I2`QH|Dqw zKoR^IZX)~lYx+B1@qV(;_kprMpE45~<2KR&ddCVM}m!?R?c@8$4( z+!!x$zUI>hFPB~K7kHKIde-1|co*J8{&m^s-xk@wKlH+c;2pC6{&Yrs5EsR#$nPS1 z{+DF0$5i|WevGfkuCM&Wkbe#L!Z+|Hd>h}y_i)Zhq5a>o$7_Wj%3i;r_zCf;viCzI zUpW2;h{v#%A8&H#FP7}~xo|wI9KZfmxZb9ueFdBb z_rCwK2ITDiToesI|cMNT*+@dEsR%P z_VE~uYdbElkUhV8viti9H>Uj&+*J1SjXSuR?D}&~5AEN^WpE4Hcg3w_4Hx+ix5K+| zN7?;Hn-ThZpLja_k?iY#KHP(NS=>kV@n|6X_e=ZB?ynynAbb55%A0i`?Di^X7as0> z`6eDg{4xH5c;cC%{TN&lkCnZiP4IZx*NX-CE7_kAg3(4;=EA+pV_#nJW zcKtK(cjPa@-^;!}ZpT|?@3-=^Lw`TX9`eec9(+r7J*DtH{5Jka_Wax9Nd8do7dX1? z{wCqrvim!Vuir4)&(CVgKHtA5-ca`W{WESx`(wBz?f=59Y5x$vk5euPKcDDIetFzo_WYaU z-nbk7jQka{k9U9B_56T`;>+ZZCO^%>Fy2_%`!5Hch>PN> z@d4TWHNXdH-wz+b%VobGcwF{;w#YvIC-HTBO7?z;ED7=R#8cvnvd7DeFX3YNck&zH z%f!3jE3)UeT6R6x@Ev>uXIvWMw`JFxNA}~%UD@NmCHwrjN4y<=fcxTq$R8^E|1&<6 zz20->CAvQ$e=Uv_2;*(X(PfX9Xj#aQLA)A{!XMz+wg%{rgUi*w?r6`}uJI2X=? z-^BT3&$l`*h=<_9cr`ADFX581&+ogqoa}lcE5rB|Z~M|FKJhY_8oCu{1N^Pe}ccpz2s->jr-t# zabKKgP3Zq~+yeKPT~BX37=ML_%RU}I<5Bnq9wU4F_}_*8zr@M$c-j4D$CGg@JPi-V zv+!j6we0WL@$q;GUWk{GzeD!(>u()b{b%qB zoOoS$JXt0C`jiEKhd;pUWnYg6;4Szo{EO`UwORJ{X^-1$yi0hW?D6BR5Ag%IH9q9_ ziqFT#@m72qpOJn2z94%&ugQMCa#42u_lW<28*PXkX|4NJw^zIuz9IYknvL(t?r$%? zPy9Z9Ec)Kz6Ga~J-_2PqwIQa;%qqKrZ8SE+E>T9W!Kji=ab#v7+jeAMYssQgp0}^ z?-4GAGj0y!l_S3!E-$;w(RGF9c-n4Cj0s6d&FnTe*d+j?EQWecamLitRF+X3oa!4^C>-? zum0*2?@jy9abNPk#RKqm+7G4uec~fzKmUrmHH z3(t{#z5h-2-=|w>tG~O%ml03BE%d)y_IwND^|G&*Rq-a-ua8>cpYUkBTlV;KWM8lL z;!U#Gf1j*y-s5ymS_JiqMqE$a4) z*T5z4r?|AO4#wlMve#=Vu8gA@+;yl&X+%s<93gVbd!C4%qQN*R)g(wr#P`9{bi4T z1`ohj$RB7c{~tUEC*2($-v-M*er54c+4a@NBk|jK4Edd8KVE+6xW*qye4^v>Y&=d+z>CpUGQ=|2CtU=_%R=^mtD{I zvgfl=cD=vgO|-uv`+E1I<0{}^ycI|74e@O_HU3HV`WD37iC4$J;Es5Q?ET$O_UA)( zJFa>r<2|z1cM<-T_y*a3|8Ae-YJVRekbOK;{Tj}{BeLh8MfQA7%D$DBeSNgO9@X$^ z+=={ivilz;`}f~2*vj8d{F3bJ=RtfG-;%wbZ^-UH^}gWSxFo(Ot9hgu{)hN*+3)8( zCVowJ{gFZ;zrg*+cUPPmPnH+x zo(BJb)8b1w9eyIOji>+bgT* zz>j3_-;(6NdL;B$ns|2E=TjNk=VMvf^_L@FOZNJf$K7RreyIZPC;RcCBJIcHDtLkH z{;J~xvgcDv_IljMb?_5h563?m@*Bur@9elC@qD1c#4BX4$9s4c9*5V+p3fY-4zIx9lfM&h!f{XN z^YFU=Agg(#3Et-Ra(BGl`SNJI1JB31aMa1r-yYfX$&3%k?yo35jECc6vY-Dg$7f}) zckbUpe}BmCuPeSr`?2_j?E3cOTf}eSyTmh}3jN)e-Cra8i2P3YiR|%5;i$sl`Oh63 zUv~Qhr$c`)${xQlP9l3fKfy1{K0n6e+Oom}%`Osf0+5NZ1@5vs24DO6K;a>Ov?k{`1 zxEDfy17*)IBOXG$CLSic{*Uo!@(19tcp@GzyPh?8n(TV-;<@A}xfsTuFT0*{c%kg^ z+T*2o6kdr};(>llkUgJI z@Fm&vABV5W-oLx>ZQ5VM_hj$qn16)v{=sSRzqkO7RwU$qjH6`NGZDv;UC$aE4Tlj6- z$G#T&Zz;RJY`BB$`Uc~VXul1ALi_W$hwS=ZxgPrKMZ7rvl=yr2Guicw#{;Dz+l70T(lKpySzwFQZ zKE=Pu-v6m?h4>lS_2kEAaZP+q_I#Vk?R38&`!zPD2L=XVpz{`qj!-SGVWW!azSE-Cx<(W|oSuP?iO2HCeIvOgbad;gu1PxsRA zTga~W7JeN^-3zZLa?5@`SqbNp{rdeK`Ptuhaa`?t%O0&KGh-;@3N%65HG_k&9lukoC{{-5FU|I2?6ULRMKy*_DiZP~{oFRp`| z;kx7x#m!`u8;SpSSicsI>lGcY zlZnT86yj4HSNo!PrtJP2;kmN+Lw9+K?(^{@eeL-#qJ5^v!OL)A+1HCzvg?0G_WoE+ z`)nh{*dq_OB?CaMf;)P_-_g`BDG{jG3AHPmGda>Z%a;y@uB2lu(|Alxg+1KO0 zaROWI<3PL2xD@V+%i!_UPr!BYMBE-v!oBfi{3ZTM_Ij_v zQ)SniAXXS}hAc*2!*j^5kH40^pE}}2#0TMTWY_yGULyPYw+(+w{&Bp5{6}~t`3Yi& zde)Gi4zDG@IbJ7w{~pGhwd`H$@DU*>pWzdUqY z^;MF6J$>x<@<;e7@o6|(@sNK(zNvc*+4W|MAKJ$vUI@p*<#0S)4=0d)YxN(GmVN#? z?)ujfe}VSD;umGtdlM(ci4%l+UM4>)PJ!RVsmQO7)8cmcRr1Hk&whSEd;!jc50IZ# z_Ve4Qgkk)gv`>X|$-Wi*k83?=ACJ~J5B-h91!T{6J}xBtc>aJ3I7vgiFV2Jq z%AU^~c#!PzK9q|WixnASE53vHFxmSj{!5|1kvK2@g7y{gSlmbU&xgjz9&aulkJrh5 zJfDD%$iCi8r2SLb^P7zGCJUZ|tKw<+Z9GHPaFK!XRNd#uUhjj%7m$C2_#)Zs8+keO zzeM&ei|l%AuTNjuuP2w;8ek&%%gJ9R`}0S(kM~jHD~SL3AHSA7jOV!XC(C~RyHfV` zdI|A$wBIEA`TzfX{W(9|FDXKQ8^|y4oE@))H#)BRTghJkXV$lRK4%}VA$XJW?eTcC zt^6sn*XIYkiue}U>-jzLZL-JTj(;Zquv~R#tjKoq?-AcAYq&_tl%fBLm^O@;UiR~y**LT8$HO%^JKl+Nksp;V&a)4y8rR1;W$(|1vg<7-yWU2!Z#AB?<6p{ib#JV=>)oNRFX-Nk_HojO z_RVRZ;yJs0R{S>k6=bjHJGdThfm_Ox^?1}0FC_l1?DKI0?tm}ikDRY~ve&}n!^g7M zyNvA5M|H(*h7fzvSEQ|K$wfd>J5nzB%wf;??jF+!hbV zv+yW<5Rbt(@i<%aiz^+B_Q8KV@HxBxX?T|M z?Jct3&ztN1)qXGWdGvQu_T#bb^X*^ai=8jOm?@0E1Q*83aAmw4ca+EIzEbx5VrCBg zuadpq`SEwSlkEMxUiRbLNc;m{EAQ6*XW9MzrLUv1#EEQ|J)g?@x{2;PWR)8ksIR?V zdz`OtEW&$bug7NDpRe6-EB_?%L&R_5qq5gOVb;*!Nt_*@k=_3!d{*}3&p!OS?DdOe z3+*q{z8=1Ym*AVS&yNSPpD#SH)qF@9e*K5$WMg} z%09jsWFOxOIIFGvhO*b|b=mcPfOF$-a9-K#u}${pD+|hAzXP~1K1+Tv+3OQCXPih1 z-HX#cKQ1l1p31m9?trVvuBRWaCj0nJ#WnF7T!;LxVgghwTtXqYT1v^w%0!k?%{m73hpU;f4@!p z-n8#5`}v6N^QAZLhX=|&pN7cpZ;tHaJ5=_1timH@&*xV>7GK2^$&ZygJfE2&dw(av zvv4ulk3aKeAFm$rWZf6a9{+;A_V|lrkC!Y@@G{x;yoOg2uPeL1wX(7HQBHCt`KjH|HK1iug`Vz=g9v5#W!S+w^#P(D{qs3Q}%rC5`T&x z;6nMs^Rb7r>#KyH;P-I!QenP>a18t_jwyTm_yt0LvGE%?9&U~k%3l8-I0;^blgnP; zi?a7;3LLj!a7x+homTexrM5MJ;y5kwM)(yx!0q+_=F{WvZ1tZ(_ISVIjQAwZME<`x z3-JtZg!Wlw&%Y$jLA(miN&5wIjpI9xjEy zmp%W=vTsM_o4VVcPou)2zbdl(+bDa!)n%_=%_4E0ecrUD?CV2k+41_s7vY9@18$6? z7Y+GMWRI6q&beIgPY`cJyt(Z0Kf*0=KirD;>u_u0=W#pP^~Ng}#_K@-8~8oqRq*@7 zd*Tmdk3R)}ME*nEnRx!g z;kkG@o-ezejd%e*j~B|`ztKvDdKNn_r@-IfqIe0ekC)>2WxpS_O!o2ZDf{}iT=s3$ zb9VoWXurbk72imFCHbd`+m6R673bN{Ggry(zn1LvTO<4N$A%82bB6~hRliwC^mp%R`co!aof5o$8*LP5MJuC4MoV-k& zXP>V=F8lab!lxaVC*X6$&*9%?g(DAS*LPL+@l5n)@HLzT|0TOY^XKgR@9<5DIB z2gfWM`nxZCzOUeixF~)?epT78-=dY)c)E=sZu|IM#xZ2iH&wZ?-f@Vx!|@zf{vbJH z2K~Ph*~f3S?Ds2Pl-=L2ve!2W@k{dcQn4aQ@dMfG^OCLcUMwG+O!lpu?8krG{dFLo zTz39Q+50Vpt@u)$Qucam#A#*Ujy-4RKf&orhxJWeA@rAC_WEbR8Dx)F7-w`mqMvu+ z%(BNDfwSXpa4!74?9bQalihwl@dC2<-|x7P?Df5ei{n=-hWg6L9xo>@FZ)*dKd$i~ zH+#-*-(L3dsa!g&Ur$^`c0D6-b>fq84cYZC#gzBiZYjxKhY( zOgtlQiVNYl$sa8H=kxE#u75vn<@|`=kE|TxZDk+7_i=mjf5Gp|-rq&4g#3?jYuWp$ zo7+e9^IhBnZy~=I`N^w>_MhPnc%bvu|Btf!8%+GD?B|msWY?RfT6jDhEqgyUz+cE7 z|0CJg$Fal*;xF-RJPvQha1fk()GzB^m?^Yx!( z_qUMvCH#%8c(NKHzD)M~%i!gB7hWm*_4P%(-j3+~h?=4O7TL$A9{yQ&f1lxB@Ko79 zkJ)KQ^z$m&>$O{sBVWabaH?9N|KDVDO!oEXob36Hl9%az5ns{Q zem?hy?EYfb4!$hAzbg2u93>CMH;6Bky+3ZrK0X`qU7Wd2c>H-Fd%stfz5b76pFiDX ze;(km?D4+BPw*Yt?`K8Ig!Rl*H#iEvE4zI>+3iQj?mvO8{^#Qt@Dco??C~Gs#Kbe! z3+bK?cLpxZ0| z6fPutJ_#Cx{Zp8D9@)pYsN<@)rR?iZG2&Bj30v`9ve&Pa?AsyP`^)zJIfLJnqsiBC zS>jO*!}t|s*OyVgs`iy^t02UCU?bE@gUjzshaEs|3>!vL$>p`%Kra$)$vta z14nNZ@@wL>vS07i!Ug0Cy4S`-^|j|$NA~^W{0X13r&Gz{%eV?LWrdWM23amNr?BAbyh@PmR;XK;<@oq+4CtU z`}2w;a7*H&aaZDF@fhOc@pL>%c0EgE|GaaW?C}p0pCfy|=ka{nKO%n-@nlUyy-Q{H zS3>snX(jm$Wgm|<-=7lSKzxPl_1{eUbj^Z)l>PbaN_Y=$FZ=Hs9+RUf z-dlG6$8GgLM)vt}LiY7+IX-18|EBEqK1+Vm=Aqtm#M9u5#0$vo|B~$Up#%N{ufSK_ zUh$Z3hx}`}1ipa>;M=sHgYOdm2|tj%UmxK|#52AV`hP;a1&;n^7=ILwlHGnOjw`$V zjW|B}(OQK5UcjkvV)Aq1q{PePmx(vVDToijsfkaNy&uxb(X{>>Wxsw-hwtK7WR(|* z-7>^8$ljkBa5h{D=a#+ys^S8~o8Y3dAJ5;%WpH0yiTu&H2JzXrK3fX2;-+&X?23?k}_B%C98*{K+DFy;tF!viJKw+1IapJ$ zsK3&nu`ORg2p1+>#@z%)x z`ECQ**UzK4De*_L=hIw{p?Jwo;qkkLtnMNo$*#AxG# zpByNAyqU6}PY%Ls@nF1<{2}(WzRR!$H60s=f$IlH%6-=MvwH7Z5*z7t5Z1oGzjLH^g7Z z%VgL0Fo(0(M|gXiM?_&aFS4(9iDdU5=@HJKBz8>wydNjS zS!AzI3fc27Ap3kwX{-5o*}or_O7?oMCjJWX-)R4;<1sZx&(L2coCIgL)jk8xO}qdu zAbbCnm3_Vxmc5=eWdHrPqOxzziQBHP11^T=$evGe+2d`(WoWlYgJISuUqU`!s5w9eB{iF8|{a2Me-;}tf?EEaami%n~viqxpo8o%T zkE!RcxW41^0NKZ{p)5wG;wG~DKQ4QHn%YYE3pbNpPqscG-a>YNrSZG6+YiC5WY1@& zyjl0Q_#fgO$WQ!f=<5JYHU=duQ_Z;ZN{Y@_UdUqi-0m7cMD# z{rbq>4|Q=r+)noSGFbNcvViu(G`rn4j;9a;GJ|M?berJ3H55*_& zLVOx;#OLvT{JZS>PU9>1UwlpW`lae0>iY|~l>PbYo3iVlf*;^D_=)V>iRbL+TQLWO z_A$$c=U+Kw|9)aT+?@D}xHIvWKmH8u4#%UD_X(J-tEcscQL zvg_R~`}+Eo?DOjmo@y%|XGpjnO_zQBO^Ij7zP<4u*OA@d|KcD0$77$f`~MElV*I^$ z4&(ia=MpbBH1t1D_VuJOUL^b0{y9577%!#2$#@z4eT$d7KegY3SK|c3!g%XsKYnDu z-^+gfkPmN>eH$qI`I#MC@kzvgA^!D$yyrRl_1SNDuk!6{_z+GqJk)bS_VFl+Ps*3li%NS>b(PmS;4-1t7OBm3tm4`kQ(9{xx6`hA5X6+(Q4?8m?8vg`d#c70K@ zum9I@Ec_V9#tBA+{5Uubj*D~Rc(}Oi=lAht*H;xM#N%Y|_e8SSXS3|bqnBjYcNQm? zUEeL7!tLdxqeFfwToR|DeKXnpzv8(1pO4d%f1CUaIMElOzf7{nD~~f1?=AcFY*yLz zjg);nbI86edCrdifOC=mJI-sXp1Nbg?;{kzgK;5z0vDBiJ&rXtN{B5|t?DOLhZh|v@8TxM_dwpxlUcYy3<+sMIW#790$0MJ!^XK8V% zWgn0GcrJc(LU_G4kNl7EBD@eUmAxN-$IJ2PiD5pgWdFaLukrVIE8d2Wx$ME0y5Bw1SgCFDgUxj*~;A}Wj zF&v*aaSYrEe(FZ=w@Nc+RG&(AE5YrLyC z8;&_OtVa&oSC*asx*SXWzl-w|?|}=-u73!A!*O{sE{qr9qU3ME#fTrpB^=jymvBk) z@8eQ9*0fMxX`C9Dp?xO&Ch@$uEG~}A$vz%6aYft`S0TR>u8N1?YPRZKjH?s>0oRb- z|6W|1_;Fl^_P^u0_%^Ob{!?6^c(du@@uY$5$ES~RGrR`3lKpse8h5}AW`y=1%Dz5z zz}@jk{F&_IIS2Q{KjHzhA0H0jq4>Pq{saBJA=&#U$;`0-$H{&@kPc77rDXsAt$DJ# zi*%QLy;>yu`nm=$k$t_mAp8C56|(pL9lQ!h%?j}~v`>N8;n(r^xCGveYvLbqEBq7g zg@2Jf{s_Di&%nFMUx|OkJMaN~0w2cL@i81@c9_peoEo2&J$_bv78kxaA|x7m&Lbm1swHtm``P#23NzSa83Ey z@xZllYh0K7p11)XgB#;HxGDY)zm50emiQ0cTK4$&1~ zcqjZ8@sDu_;$3kc;@$BS`5WDP$sYd@?t}lpeaU}>`{Bg%L;HdFH9Q0t#KUn_JPJ>f z{d{JO?Ca-lJYM$o_q^=+Pmx{UO*{?j58ynD&yan+O^j#bjQDGu4==!P;>EZ=UWz-& z{`=+2Wj|jSDUZn%C$hrUc(Y~y{=!P~7t8+q^cvaoSw(!k?Cbw_`IzpTY5x@efU_

1O?Lmo@DADI&&PZ4M!X;I!-w%Xd|dW=-@zyGi;F^ir*LL`1{cBS za6NoM_VJmFe<%JUzD)cN{3njRIE?of&WCTwUjGL8Ht}}&9v+DQ##8Vkyc9pdn{l+t zq26C{Ond>y#&>Z%9OIi%Z$jDYpAIL+C2%s_7^lQjaaz0;rQ+?e@_k6@B;rw_hE`Sf=g7_kSLw3EXmxca{ z$gZyrE-Cx`9*oP;ejP54Z{Z5E>&x(M=&zFO{tC#hzdHHla1Gps{F=1?9M_gz-&*qP z$v$59aU+~|dFa2X{A|5tuTL}F1~-@8-zf51$gX!D@psAJh+E;)xHb8&t_c0NmEB)C z+=2W?_&wYicclG5`~mHM!XFX8i96$jE5mqQaXQ>h_I%6BUf=Gr>#2u($zHF)xG(X= zwC_iJ7am0XH#}7K`b4b?;}0jE3Xh_FIXo8E#S_SHk0;~L@Ko9TkHynv&u1Z?LH;>B zTlReZ#q)?KTOI0KD7(L$crp2J%3hykiGx2HS2k|A^U&EJWuTQ+S zq5W0jIq-GjW$_K!^$fswWM2;^;eTY$e<^+_yPj?MDedpce!U-~iuR{EOtUUHmh9Jm zIdL3Z49AoGc-|1lcYF2U0>421Q2e6f${&Z5(taL(iTE;{ocJA_LiX#;IO{`wX=O3; z5>9XH8(DBB+4WSyS#dp_Lw5adpFkWTZS-azReT`sAbWmu@CUU234bVi|Hj!A+J7Q@zrK%q$zIQK z_)|HKyaW%Deg56WBk>EHLx1DQe*;gIU0*BwHSy7S3GHX%RkG{ffY-{d?+D%~dp)k> z&9du_`XP+}qwMig;$5=mn;GwyJ)cteIIe@w(Y^z|N<7h)(En}O{T0A}6Ca2pRYSeg zWxpR8C42vG!m(t}@4Wo%=jpQR&HrPZNJ-t3(!MTEA$xv83iW&-dp(=tk7e(dez=?LdMD$avg^Hsd&%za zrJqB8{bbkoCLTij_waB$9*?5^GCW@Pe6Gn}pNX=MN8IhfGjK`S$9ul)`WoOxvd8~I z_RnX(l|8>@c$Mt={f*brKHe`O|9jcaPTh4bOtxE#JCdw%WlJ=x=Zh9AnVcP{=HpTLo7VZGkk9mbD^=i&si`#URp zK8avHbMZOZ^IwlI z${zoT?D=2Di4O-~qkS#>m+boH;yZX7{+sqk@MC;e_UGp#)kFQ2js!=O6RN+q_yyVP z)f2x&{sf$i_#B)Xufyr(7uEh0&PzOUG>lhB_WV=fqO$jAc3ejG{A%F}4PX+E2v8@LW8c{AG9~UN8Iq z2acA#pB~}~#FLx|@kz4xcXd2n_I%#Qv&f%==g8g+4#)R(5@-@MhX4|1I>lMRq;a@HX5XZ^yInPW(OIgJYix{q2)o&pY^#?DX=x?`xb^_W0ZJYxttOe6JC1!W#9x=)Us{|SzmD_Dz8;jq`G{A;1!VW%3Kt^&2`++1$cwMWiWHOG-)!Q= z@j6^Wc7Ho@Y1*Hn{hP#NpAYqymwmj_%I?3i?EVW7uR{AOxEk&*Pr4i{QbYFo4X1rw z+Hc17$iIvm;ItRQc#Uv*{Fdx`+TiBI7vXn^pTVt&KgDfuhKr&9cDNJnAbWil;`fQ~ z!=3Pb{1HxdDfHJFH^5!-XSf?)hI_~!?*#5mJjU;#zfWbacT(IJXT+c3BKUJ$7Wcz- zaev$v55S+}fwK4OS9q}O+p6d6dVa=3h!^}L)NA|rG{hrh=f8(Xl0WJ>JN^?MrMTDQ z93F%Jm0!3VCo+!yD(Y+R$MMA9!IN+=+4)ms&u0vthF6e3gZv|Sw(NSYl0OGOCO((; zNw0+Q=iy3tf$aKQ;>EP@g1^C^;w5-AUW%9FWwLMQp0nrkFJ4YO+tpBy?e(vOSL1eg zo$UE7#_REYya8wUGxYbp?D-VKn`MvR9d98%A8#Xm1OF`h{EvMt^tTJYg7?Y3{uaSU za9#YH>|5vmc;$2Ud=KNZUf<60r@Fr+`}NQgeeL(hQ{o?q zr^9z;KmW-f`*@_i5u6EE!&zka-v(!w{rLAe&MSNUr{Y4i{}va)=WsFE$200?7_T(W zhRfrcxQguY2jc3orWaX^YvVJr|Gs8@=PM!Et?>E%MvlvMa8udqGfj4W3w#W>AwT-< z5bq$nzk2w6;yq=5p5`ORRnKVL1^kUl8Aj$H+cj$M8hiuYaTNhI(d^p9asydGH+Bw>O`&>uZVUD(>-n z;CZs^9gY{`S@;{-?SI8fh~LBC%HD7B?uGik!+G&0+4Cubx5@6W7XC^0`nSM4WY_mG z-bH)>{#ACpGw}iPx8XzNpTozU_!RN7_$=|d_&o8}viIX9$5n7A*}s4C zhwSS|AL5sZuOWWb?G-hUIpdKy5Et#K6UXu+3V3B z|1GQgNKgD2566*O3hFlXIlKQwIGW;a{{xPa9Y2O+;XiO}`~=6r3H}cC#+7}0^*Ou0 zia4I)u74O#D0{!G#!2x`oKkjuhjChb7N?ipf3knV_^%N!j5Et#zdAT8?ufIKKNaVa zUEd0vm;4<#KmHvTr2SJ|1Q&Q1>M22fHC#$|z3<@CvgiK^u7D5VYO?FOf@{(~*`v^Z zE#g^mU0e(|kiCA@@LRYWZjJ}wma^-cgx|&UaVxwYx0YSs9^4KmcpU0`Pxk!s;g4_y z+)eg)4RLqb$Ey$SDZBsKxDVcnKO_G*?kBsyxc`Rn`x8%r2jVPvF!_1#5ZUWh8jrxW z@E7Da!DDcDJeK@{c!KQte2FI!pNpsB)p#cP+wpAK^FM*V#@F!z@?$&+^Ie2f;cswV zyj1q_=!jS0fp|Un)A0AQ$6tjv%U+)?cq{n_@K5+M-i{yR9r%T(q267xk5_8E8yCiV zWRF)B@5jw$|9-+@=PO~9?DwaR$i7}LBz}ze7JMB4Cj0L}pRm>cJ=wqCbP~U)pUS!a z-^hPe_WQf1i08wnaXHzaKRknn$OH6w^s}88~r|_?ESDr_IQ_M&u<&Pg0IN_ z{Q7m;Kaf4Yo3d|F(f*%Ze=^zi-BR5BcbB_#jTN~g`}xe*vj0Bk-?GR189$a?-#*#> zKgE}E^xC1ne`P;^jVXJ)_|etBo^M6Tz7>7Wj@Oh6YW}gv??^m0?k)TM)Ht+XE4zQ& zkC*#!0@;tJPjMpRNn?ckq_W3*Q~oDztjJ5wm*2(7aUYyY_WDeh{rBn85Z_7s6?_xF zMt<6uq5q7;E68r2g?KCC+3*OQgZ#xf7e0XV;%HH!{{lEWE`%H4qWD8xLiT(n;Znrc z;y3XzTpmY@6~?QCOX8}s`+HaR{;V$h*7H9eL%!o)?59|i?)WX)*N0xV_GdeJ zZM;~KPi61Nfw(W;FMEG~hNI#Je=d8!=fneLzaA=uhmqeJ50`y?8;(cH9)CXmg7)iV zpP%Dtzf<<_?@quM@I;&_UZ`i1?0PEUsl=P&Y4`)#`(wJCK=U1n7vW{H*Jq9FdUxZs zvg^Ggdp$Pbm*R)(&nEI;mtF4lLF; zm~SW9e}5>Z?DJ&+j)iB-&#srwSO2HvTe`=U#mEz!5NCWL?z7L&Cw6-!)R1FLiHanZ zef~DbFXP^_|9(#HGqJ#)xj&(CB( ze&w9_+cscHex8Xtf9v&w9ct=kf`X7y7#N%*zJlXA)-wsd1Q}HbF*Wr1xkI%1o0ltJ6 z$v*y>Ukc+daa?YRm&rcfWAL}M{{^p*J^vec4Nj0O^tT=t#+&e9{G;soPsQ71Umup^ zJ@{vQkoFhwQQ7+^@^TpO1kQ#}$(~PDdE%+FYy8Cc zCeDEG;5YGo+4a=Mf6Ly_{qaAJ%e(O-+57thj?@k7^CymlAL9hF^E0Ig^(B^le5&AN zvd8a)lM^3+Q{$iTEBFY`fUn{#IBv=?UJhIR=fJsfb(~-JdVPxDkbV5W#KmmI7vR!( zBQ8(-W4My7_SbP$93xezrv|QyYs>DxC2k;leY)be99MtC@Y{F>Zbkk^+)nm-p1~b( z-qd0Ij<_oR0Jp&(;?MENcn0o*H{nn41KeG9{Ylb<@p|K2_%mDu50IZ-Z}DK<2M@yw z@JQMF^EMtOd%T!w!+2wD%|9icfOExTU7?|b1$y5KeVW!axU`A+tH%F2E{xIuQk z17-jH)J^2imDlRN86VTv{(b)+WZy2z{=BB`@$blf{N7@F{ay+FQFi^w@HU(U|BQ>{ zUvM?N6F0@XaR+(M$XJoRxR>np-zR(gA$UKYiVxs#@j<*1AHqBFVSG~d@jPN{K9})P ze2@HNps!Y5>}M{@id@shG%|D7UUSN8L@GqR6Q7kr-h5ZTA$qU_t(ve)1C z{8!;i&X<3}e~|xBPLe)u#CANLzP7L6cl5RYpU$7M$NyaR`u^p(JQm-?bMS4vSN8L- zyZ8#ek7K?T>it`Gy{YAby8k2l)>&Ws|3lawZ>j9{c_h1@U9#(W;`Z_%vd4Q${3-G1 z^+G&RhL9fvr@%37jh{pI@r{ywD=Yi|o!K70ne6dn<1cVryjb@85AkK!^Bqorx5_?W z65_-71speHSnou*1bz`WkUihTxEW3&`_^0b@wa{bpDO$B(Il5$|0?1s-Cpr+vd{li z#LvsFKaJzczb<<}q$U4_OrigDvahe1Wv^Fy@(U1uP4<4OAiLg-vTt4GvAWyt|BAj& zlsRrB6E3Q+U4LfT{kN2R>7Gq?{TqqrApfZBpQgXXCo$ufp|Y*Z;HZ z`8Onf7B|9w%09mulmD;m|Igi&c*5+VeKXnhz9zfAw}}_U@8Ghy1+I%*;&<`8c!KQp zX(fCAuO!|^_U%{Vw&RI&g#320_j`KT^}Hv0{hP^teD5enso=ll$GU$c`{$*xat3$D zuj9V5x{H*-{c(LfSoV6h!^7}QJQ8ogU(o *6(HlgPh~r^v29?(3nxsj}C*Jf2Sb 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%0A-*k8O z`+3XdK|Y<|-WKG?cRRAZ{NICo>bIAI`~)5RkC*>2$m{+T^67lu`>m_P-_O#@Z>2gv zBlMU*m2cFq`k(qu^*{C7Y(Y=zwU@!c!vN%KVKUm%Sa{YL(0LOxe- zF9v=ij)Bqo8#BAa=W)p9@{P}1v;LLx`B#un{q{a^lTZEjWspz(*7;8_pZaY8a62DS zzOgSg@@nOvKh3Mng8p>< zWX~W^t%~DGK|Y<&l=$2h^rZR2^SfNUbbhCJ(VsfM6Q8sWJDMTiUM{rD=XvJZeK*Lf zUAFXjus6*Uo&TooPWFPIN2T`881U5pI)7KYl$am#mJhO*@0J5@{8Rsz&fnFKQa&2L zQa)Qjf9^bM=fFSZvk!3BucPPQP~%Yn*SJPp>tpIK>>*m`SAU_r)`wM}0T4{D8aJ6O-KUiAJ+ z^LaYpCjXy}cXI~)y8oAamI?a1-4hV~_^98<)N>9g&)?Iu`lja`vNG!W4nE-J{l8^s zH?5ys_sfkVdjeAaqq%Cn?jdQ$yb zw@mfl3%hm%C=j*_2->l@RvBY0~kRJM>BtPBDKE9GCpHdzUhkWk&W~^hm z{NZ|+;c5Qt1wD(RA)lYj7TR?raNA!kK7bo10MCsJC7zcAdFi44l046sbK@+}iw&n& zERKA~^WU6ZJkK>;ai=`bXAM`sAkOnv!__Z{mw1-^zuVe*|0pi0|9Kvov}xDbNZv_1k$cB&#cuAoyW;PoEM3I>K~q$8Gp^|TKTQx6+DL-F7Wd)KVHk9{I>e( z#E`cT}vJmIt02PuBvzJ`TU0Om9&Cwn2~lz;}BFJ?VVruplo#Q2sYTKAq282>db} z_4{rSy^Z$C)2}5yB|SmDdB|U*pbYELf_>}Z)1bcIN)$V@0?V-o@Q|peQf9)4= z3y-jt{8 zO?jsF9su38zs{Kz`n%$l=8y6!jf?mzE@XC8Aui&d@|2%bp318p1U49N2X#h?DseKGie7wb94{RbiMo~v-6{6Kl#zf5V>f9a7t^-TA=*ORvU zQ{ZkKG}yIE{wn}q8%KN}6Wcur*eN*b_xqIEy$G`QT!^&Y`++}^(eoy-&v3-g8JGp_ z4tS&4`1LS7f97#u`mL?(J)(38NOnxKd zA01xd(evJkZ|UW$3!jV^@tuIX^ZGvN^CI>IZu1l68~GpBtn^#6jt}*m5Bc2r1^K)C zEFyW@I|y~J9sD!svAD}#^7#(9oBwp^_p``n;G2HFl=iRLfamJ}yufW9rTy5{vtZD} zPs-Z^FU;%trPtro?>qCG8y57i-5ekCY=_UE3VQAZ{s@lxzDhpN(Bhl=^Bc$-?#vDS zi}u>{wS@DVGhfiznEoy5mmbFV=fG_Lzx>8;2ERqWPeh4!^&ATQldV2pI1il)VP-xY z5Bzl8SMGjh5R{nbWY$XlT6_ohOZIJ4^5mm+X?(zodieJt$htg?_5-lp=YSvW?q`?1 z#J>cd^Jn92Jm(EZ-V}nv;Aj2r9<{2!$X?k+{#!!-jz|7jdc{$J$XPOD4N zeZ-91?9h|DkEWHL+<02jqkKkVc(FdvF8SZV0WY;HJ!!rj1peE)Jh%KguFCULzb@&& z6nZSrQ~f19JNo(%jbHrcogpsDXGXMCA4+^=Z|a|~px^b=Xr4p;ysp>r?x^Dn^JJPE zSO<*H@s)oDLe|x>!D+o3+xkoPmi%9m4|ORTUzk^+E=Bh-5vL!va(*y-PpJG*(yzLd z=0oVG(Rv{Dm*S;yN_rTtjp6@oaCAreQh1J0>KBJYHa8BI_?P_2I^f2AJa&|xV1FdD z^L;)<^^iQ(ulY&iOHbPM>u7t9o_#AYX6OIP$ufJulAsm#=T7x>52Q_l>UuPWAP`5`HISw_Sn#+IW71zl;#& zAHx6Y&$TG&>GOWxuED^q&dV;on=0U{8^o6d{wo}H{-*&uCxbr>?6nNO&LehXQfzol^;??d1?;^%2>QTa0$mn9+V?<1rAKJKeh5AN%? z*?{`Xh5?t~7_V)C?}?+UBYmF#AAq?!AN{Tn@V~mBOMKpdtmVJ#^7Sp(AF1cZpHjc%Tk#BW zjON3Pqw<;Aq5iuKbpL%MpBJP!Qva?2PvcmMSEw8K-G?!$8^4GC3vtBj=R?r$X!WB2 zjfwtOq5C}?u*R?#xOlyX=Uwsx+nr#|&g}0CJhqKr_n;Q(Dd7h}e{S9N4B&2kFS;&9 z2A2TO#pOESxpi{tvA8%o&Mx}7T|JVQ9>zViTf4qclK%{Ra`PhTQU24<6MgB|vDGf) zvJh~44vcWh{|xxgaSW=h8 z^=}A0_PlrXYvP{{Xg0pVQ9X{xmCpbMxEPfZO#EJg5cV_x#raZgp6E z_-E-;aELJ6`@gbO@d~lA9yOf7yEW5@mPfGsmE&VHg-E0iU(bcEnX52ncHUyS?F4-2qbNy&+^DOD_t^PQ+ z^c)Yz95I;#s_J;(zsZyaS)^Y<#pORqgD{*!e&8*}4`$7{-;1KCS5 z@~;i?Jmr7dwevUlJxUyPJ|_dq^{*>|-+?3c=Pb~}=hVHQ(X-<^)qFDYCwb2QE#^PV zp&)FZIV)!Dj;W$x-GlfhWJM{{AuWTz}kZJwJbQ;x3M?1ApEW&y&Yd z&rkNFe-V$)6Zy>vHpA}%;K<1@NW3Or^4rMo^8I>-js1LBcJbYU=%cxKEw;JuFJxza zpnTZZQFR#BL;nATE&Oxf`N`z@cO>fnb~x(&>y`pfju#(J%<;l_zE+JF>@W8rck6oI z0)LlRQ9oh^9Eo|O;mQZTTg>CpbvokI>Exq0Qht(c@^y0BfT!)YD_`Q{Gpy4pHjaLezSCNbtZ{Rgfns_Jqu$VX8i37%v-)I$^XjBN9%8t4|<~g z>Z8+R`LA}#lX?tSzKxE*`7PBG{1f$GN|f^IbZ=Lt4p`m5m+|ucX;;t9&~NjrbpCc< zz&T2oe!e4rXII3ZekkP+`I{e7zqQ-$PAgXZJ=#x5zcul+66c3n-1iCcYM1iV2+ zC_z0AkMt0y9+Q_IzUwVN{2J}%#;uElr8b!r@gEbK0SU{>R%;7@*1Ufu2S zYT)8Awsm_I3H`iWCd&d)FG=;sMe-05K+z8P@oA^t(Y#fSK0 zeSMy%dP?hQt87}0%cef`FXE18gtMi-*dIGbpHavC`>?*3i|@L7b~g3_r+8lnnQ{O8 zL&bNOT^vlo0rAK}ye#O4| z^MYTD*Drg%ze_){vxfPz%{{`%_>);@P z7yAYMP&&^&Z;8r36U%S>UMWu|>Fk%iE;IimdH%$6JfB^+v+>P!`W>0|;Xe9pU+B-B z$E`EmU*9J?*>wWs&0hJR_Wl9*6uTjLqH&7fyRy1}N zbJs5pKCQDcS##9+?OBb=|4~08&(irt>AbA8o^UkUJbCL;f0yTe;JLUw3jB2(UD3X7 z`tvVK!6-^J@Y&*OaU0~~cerSsX+`r+=-ZS6uSUW^Olbt3SK*lx8U zjQIG7(PO}#Jpg%Lix=xm#{{GL=bT~9#vgIic`gpw+;z;2fp3}7qw_dNGvrDC&9TOY zqprVHS2@nErU*a(qrv* zcb_ii56I!=^J*@P*H142pH%ov_#geVEM#;3Ts`1vTs8x~7xiN!GXF#Uv*7R1L7rOG z?y3)W;#pCY*ZuE9@&6rx-vWFf=5Tyb5B)h3xaFtrE8+j2f$Xa|x}yCdl>ffjH9q#W zm_KC~J+i{`&BhS?ue)3K_0w2 zSU$`LjQKe}aH|`t4}3QnaI0@=eV76G|KRBER(;_9*p-4jKH%l+Ly*V5R*zGDr-JlE*NPY<9OZC6k>t27^#eRA|xY+zZt$Wu1za2-{1gih7`s3K-IwKp9{O6!(iZHs;T*smV%XQQ8%4*pEzwHELVam4Fm%%6vD%CD0g0$I0i zTwBjP3i#GXYyE9QG(-MNVsD+3kM_$klLF6ZA2MLquGK4kviOoQ+jV%7QD=)18xFZ@d-l=H}HO<2UL#za7xY8{>^9?fMpYuC8`HS;;rk=SWNr+~m`K zJ#wOI|0JF#!I!VMS7Q(3ZQRF*^#hOd?}ve>gM<9P1D^I@^$U7M`X?RK&-QcH_Lt5G z+||kGcfc9nWq~{XMnAN>0q|TLH^cf^&YwF%KDYjGlGjta?rMQV9ggnkdK@c7PxPGGOL`uu=}GLW`I&Y#CrabRbr{+;Iq_(JRAN_6kK&c)^GeX+ z&g+|sJN2vu-11g&VI;N;xZ=Whdj{MZ_WdsSxeY!p|D*en$&7p~zN7Lnd{jP$r+oN) z60-|R@fsb^S3|q0-@X9eF>&gD*8h^dt@O;;N>8o-t^nCJC?8!nTt03$BfnQoeznoa z|FI^&K@0guA)D)W&jEkk=}}&>znA<|%FoV8yng9nqz3}GJW)PSV)B41ABYD&)y6W$ z{d>))7ROS3TLJd2fg`SOJdY^(xl~W6XE*AJ>Ph0CHu#)X}v8A|_@^-X(YJR&1KC}6i>UmG{q2FYFd{lmt|0KY3 z^m2{FeIjw~#;9 z<%!k#*Q-1^3;3VNv-VuOyMX1^B_0iU!JjprA3^@#IO1^@O*h*0=OjPs*O(qhJ?@JE zvw27w_vHd!;5ml#s8IK6^C*pv>9`r}jq)?KH|42#r95S?&a;^3vX`G!|7EYv(~~+- zi;L=;`Y+{sV(C4|~NYwO9U6`^y!u>3SUg`OF+=Q~%RjIsd2jmg-Dz z`CoRWd}LS3M|LUSQoEFI)Tq2l^X-4DU5bkfZmVtujVJIe{|lVdJD4}-+;?_Q;j;04feL7-{$$!Pe1pT{*}RT9mg}(-!9K~^_0%{ zPXw3Ty7YO#uXa4sd<#5l`TQhgbL&@}kG0oqx9ClUpAnpLyEUQ?hGB z8+s0bY;N8A=zdRzuM^^Gygva*>`co&$(jWmi#l>G}!-%qbpih8J+x3+mzq1 z4f$5r1rBj~j3gICA98ADVrw{=XC+&qq_RN=2Pom@1FCR(fjvt`(n)si*cF(UM({LG~5bZtBlThxj~k=@ZUtO4rMR{#yOq7|%J+ z<=gfFPwVGUw7VRRcwf^{P*?+4ZoGT@AUqFbU7g>(30YQH)g{##;_C-Js>6Jz`mFv% zW?Mo2DyQH2*IU3SzcX-qepEA2#&L##r+nrGZv4&vp8t)z zRQK`qN&UamUY%9Ds&D)z?fMyXb>Ti*zWn;(4~hRK8UDutI~_-S{|MKAt^_vEdb;oI z9bohW^Z#^*oB!Xf@P9!5De5uzJOAKcji5imslSvb3(e54u{4fY59PN9wnq(L9{3-C z{i%j0`lGxW3i+=g>-zf`;w7Hy7pBPPRY|^7uS(}NV|%}i##uN8FTaiy>g~j47jgdo zxEXyvRlnoA-vd7vM|WTKJMJ^T2H0PSN6)WjT((C4vV9KfcYurIpz5mlFb_-qlwGO3 z^oT$8v^#$u=k3fD6)-T?Gu}R*xp+C0|vp4lWlG&d*TK%-t>JsbK4EtBV&(+cF!;zo$kUeb>S;8yqW0WV)y+s(J((36}0tOtBE9QEtqhXXqiM?9Xch4w?cwKz_GfS(tso{)c# zujMWEzv|kRJmcF+e&U~y=a|W>pQiF`cUh-L^?Y>g?vZKtQed{P5~T5BT&OWTA2`}? z#`xX<`JDgn0{)28uW^uk+SUJML4UuQeZEOQ`Ah1pqW4TF5z?$$wG_es%j?b=)7*=`=*7kDa9=pW|E6Zl_Tf0F&8wR~=+r|&GOp4Ff~ z@UQ79<*oE9Z#~ZioPPOvrWX38XH_}Jbb{ubjB?LXflwl~A4o&Drt-8-r?t?F25z8Cg;NAtb8W1h9RXq;8t znTOJ^xD#)8o*ei@^S$pipIRK{htxk|9vk@??s4m)JIu;FQNQ5)q0}!*{_m~*|AA-Z z|Ac3>e_&km%+15O&g}eI;#rGVus7#$od)f;n$uw{vdqs);XiPL3zcUS!44t;$eLznm_aZL4GhlW#q?jJxAv+ zX+8&g$1oqXE}G_p)`6wJ)p*D8eeT)Y8-LfW$!`yTl=y2sP<4K23;D1P8I9M=w~#Nb zV=MpVAI4XHlYb~t;@|GR7x9sPwktmTr2M%8`%?Y}f7X9*F6=|=NY}}=Zznx3?k)cB zfQwxh7<2w#_9p*K{mGqADK2Szwcju0&piL}9Q3pN&wdg1Ro3=Fg?+y@{|7&hMV@Q_ z0C;l$ z=}E?&T6|0Xryqv5q33wW=ITRl>A4B|Z*POoqi29TrFVhjA?VIm|br z{G`0{Pp(e}LZ%`zxY-J41n&@XeAI5rXR>+n=NBdY zC3{r|QvGUo%}`U%Gu!^NNLOB`Pe7k}cd#us;= z#Tbq+yTkv7;qcGt<@~%=y}dcaYt;DW_;X*%eNMml_on`idHuL7{mf^!I|%=a_rtK= z((`%thOE2JVrGTwafbsxo_eD7AMUp~57?g^u6S|YRnqgXf}S@EdcFj1^TX7xe)D;I zRX6x-E4HNT z_38PY+Jz8a%RfVgSHD{t^*hG>AaFkcNBwulP6Kw4vrB%M1@bonyO(%0z6^m& zG)|@de*v;?d~aIA-v1>&o%82^=SBL(hb>9J;zGQYewWYDx+pcat6zS@m+_)q^r!r$ zyrSR4NBk+Tc2oYcEA^-J;LCXVcEv~SrhL>c`Se!14}4wy9!KpthtjWh$0%M#f1KO( zL&?MNJD#Qq7G8RC6j@DHeuaf-#Kz4D;N8>o_ z!!Lm4_80Y*o*kjzc&hG^=V`z%S*Eiwp~0>Wa6CO5_=Py?cHMhMXX8;EgQD{+>e27= z-~(QM+<6E({@I3}2^K8#alc0s`Hk(a{F7$&J3gv=fV~a&(BXN z|Eo6Sie*AhAI&$li&jWY)5bblIKVJoI{!jfm_l(Ud zAJTd?V4+G+be=*zlLMa?$C&0-Nza;X>e(IghvTTnUC-NB-KL)?e_b2$C7!QA$J;pm zQ+o$2jOVxG7*joC+urrT#pOvYzB>h6{$$(_1^!#|kLm{N-ub|;cDVA2xPFf&&8yiq z&OZTBX+Qwhi8RFFA z#>YqxC8#GiZc>lo(!+NjJk{Cw1V_Ao7;xhki{d=`HjI&d^?Nc{s2i{T%-9P~JkkvGyL##%(j>_a%*H$irRtFUXVUX}~YQ5#JZa^X@+fJ@OCbZvt+9V5>O4#UH-A9k}sVzvllR1n$-onyG(Y z2Ag>>wY7S_;)wvZh(T~NAV?oC2(8cptQ+TMZsWe;1HiW;QAdL;vGNre(1s{>F*A>6-1vWzlDF?d6~H_ z^q1)&@9Jta&!os4L67{&b{7hG>d$3>A8^rls1KCFd;(`hWM?7C*{Tu;ovl{!5-eTN2{}jyQj)|F^)-uHlrw2AJ)Ow!~uo zGjw+Xe-KAK&wESHpbe^ZjN1Hm>ZP!r6XoqE;KDqg6S$j?S-3(!T?qJ+IO_N7Z3)cv z3mev)Jnag4qWq-DAzn`uN6r9#3;Yi_x})FYpg$k;`fWN8^gj>$J<3Pp6y-aYuJC@= zF#SyY#?EGA8vL)mzPczdt3PG{&lIB0c=(*w*s^+IdFI=mz$c2vyAOdeat8pnxJ#b+pjL&C{Ul4Ef1Mcc}bl%E3MnAZ9(dc?B@$Vy_T%L?8|11iB zy1Haxadn=4UOM247xDE1&QDgK`FB&`pS$O#n*0aAm{;2c-0HK(kMw$?@s4_q3wYY@ zNx&`criXQm@jX4@$`j((dp$L~+U5C#*Hh#9De&C-;bhC^{i!^cUGz`T6a8+2%UkHN zdM>*l?(#fW=l`#@`{aS0jqTv0xL(meM*%yLcvP?GPu44kNBKbfACS%U$L9jBcro){ z1Mcc)6fef{ZQvi^i1&wZ{__nmn}1Tu`U~~+UC!gG!^FD-uJs(^lLEJKLF+lxI5Tit zZ`AJ^)2=xJ-oJz2@cm^~;KOmmep?>@r#}y@;d28I{_H0|Q2#Z(q^A@Y^66MUzXc=SAU%)hbDXFtVv$g?N%xqL3^59d3z`Zmo9ex9JXr+k=|W)~$ieyLtjVs_}s z<^Np3ZGW2bpZa^k$Ltj!zUwVM$AITr%knxql;XuWGXH-I{2UyEqU%k>{{-xqA9KCY z_fc=4Vg%xcrRx zFka;2e&063$KhkhXX0P@{zcZtpZcc`xco!>shOIMg|H{GJ6d;Q+!qV-_<$Glgz`TR zc&cY*;A`Nhub%|}n0ScSE|9f+kREz`l3!H&Gi&mTV!zgXt8_N{)cV&c&~qk^dj5p{ zfi*psL)O-x)h_M59=OGqR+_!!^B3TD{ZVy{^0xuMczm=Q#f5l@&%;5#+NJ&rcg6D? zm+NfwZ+3LB1^Ss1PX>9lOZlGYxAhI_r-kk6{}OyA;dQjydQpg1tv`0HVIqR&c?e7ay&Kt=R!CAITYE~Uw5DMx^qc?2@ig&_0tOq?Oqb_)Nk@Ltyh1P zpHsgDKVyB-%hS)xtlX^D73DYn|BBEqqbmK^1U$X&sd%N=Jr%F?x~JlmUiU2dt%L`= zqJBra_C}uP>XpX#)Ssi(ALT#wm*h+Foor=a&(pjr>6r)e7a-sI*7{dTetF27y=gru z$(QiWpl3TAaUGi)_R21Nz{}Tx!y)VHRWzSxT{;^0R|~M7n7wBMW2T-!d?D4D^D4Zg z|6IuD_6b}P@YJ7I0C($YIKkk5$dewq6}Z(ye89`|e?Qbi`HlRaUDwx7Cm!UvZ#HM| zH^AqK>^%!#qrH!y-FN4gy=PWPe_?wff9_ zw(AbcTV??LY5i33r9XS3Kex_M(qGEYiB_%7_Xnuok>^yvbNyQOia-0^jF4Yp5!PW^ zgZ;ZWTIES-7sCiW#D3J9?amKAi{j|+RKJ)6?X>cPtz(D}dG(ebddw$^OKm-8j@=ZNwlaH}UN|8~!>!?<5t z4{uiw=LrwFeVA6C_dxp6&(g1a{%`nG^PlnDo$<`Ww7<)r>_{m-z{Kscem_X9{2&kEZ^_}FZz>y_ziGdPjhfM@6fza^EAp&cTQ*H zurB7aF7>4gMFOZ_;lI7371S>Vh2YrJf}rzXp!_`s(q(?0O1>@S;3Dbuw_9 zpU9uY7rLw2I6I@~3+%g|b_dQMsHM>ufWP$MQ;^M_cfS;H#f9>p0k_}PQd}tU4RE&~ zBid(3Kg%wBz>EBe4;$v!6CCVt>K_3-XV>N)kLnWJ-8tYXpCf^rAJROz8u(o};_IQ? zLr zL}z0wwj0eehd_QGU`~H@UJST#WSja!-HY_I?md4B?h9tS5r5XVzW~dfmjypW^EBEe zKd7Dqc5yd9r1kt!Zi9r z1LSk(r*i~capX4_@p!lD74emUTf9;~tn20b%MX;_EZ`c)iT8wm?);bh4Htjb0rGcv z#GiO8{-#I#DNp`}i$8JhotCN=k{|gS>_v$JiCy7k|pP%m2;b2YeYX-|u9v_|sm>=j<)XGf#5z zjF;ikPyW)wPs)>a^G$w}9_o{R`I&aL%d;o?bM;MmD?jjENx$+|{3$QHl;_^AvDvQj zP3@-rMfvIZw3835{9t{!c{GJT{E-;&) zKnO42ufGa-ns3du{r*7p7kY3a;C5f6_7(7()bIQsoiFp7)Ni=-6K|#8ts6)8%Tqr1 z$I{2~XZ~;>$cDe+d9LYS0Ds7HZSY+AMB>JO!3y6z;Fc#I*Zuoxp6mkoeQ*r!ujdJ{ z-GhN0gQKhV9E@?v)9n+^@VqR;GsLlfBg~iR!3QCmn_oQw+@0S=_k++=jJxf3O7r2x zAfNh^`C#($C)<5L$ZLMcZw_D5@2BeLJni%LTgbb0i6*0A`OHYuF1zk2yNLJ1E~lp{ zyQrs?T_!KPDBsF1lb2nTZ)I1mf0gW-cb$Cy{V8zQZmoX>p3!p~y#Gx;wQE`Ev2`KE zi~NU$b~P`ep7le!+Q&}$ErWczKWEn7QJkSN~;iGkLbF{;TsQN+{1Yo>E@@SHDY`_Fs+f zlvn?4hIM$#E6W8?zx5;Wr=C{)OYx(Ym3 zS04lJ&R=Tx=RO1c4IEw7{^9xIH1eT-$0yQHJ`V!#4gKN#D;j4RuP`r-_IDAVb4339 zYvF(^e|TOt6u8UJX#IzJ!g*8FF6|2E1yQ@id(y6}8&SK|Q?fU#^F-@i^#8%&e>9Hz zy8R!3+4`sKrF_Y*R{HPfK&a>oyzANSJo8i1$`9pc-38N~zhJwp*9QEIgDy=V(kIVn) zI#jEEL_Q`jK9q08XYULj`Yd-J<+;FJe`(4;wD4-+w^L744;e4kjr;Ih(SxJ=DTw!` z{)hQoubTdM!6i4IUbU6qubc8$9O*5KR~mQull|gTuRmHxrF`FC`+l8{rvrdbg`rFd%6CZyMCngTk&MvLtTyZP@;zxt@-y_`+VcQaC#8oT*$sMf^?x7Wx$C5@+O;?;uh>#=wOjJrjo@kVP1{v}PwjmG z^3UO@ud7eKem)Op2JYr99qE3sd4SvamFn020T_>$AJ?QmP>5$>&|*?m3NkFb%)K_)`Agz^xzYynz4j*uY=M;kQkGbav(XQCN?P>|(n;vCHL8 zFW6;uDYYxCBUxCSe<%_9W9|B*t~1ga^AEqO>w}6H@t){6e@Z{!>H3}Y6CaLv<;Kks zz@Irm>vjIThVrH#U&hPlLrMNn$mhh<%8R(f*zOg)#ip{M_bc|IJc+TlYzIX=|W4xdG#$J&*DnCB%wP~P;9 znfwcf=bxXixG0~gkJ(of5& z-*EYX?@IbLZbAqz&p(WtwRt1g!OULiCxgorbrM;>D=#2hweqFo%bv0z~#!=sQ^s2{e`xd?co|{*f#_KsZuJR;Wr()a}0q*8q z@DD2uJK9q=G%i6N4{GH^6TKJuQQbR90*yL4-p^c!*Rgfd}%E4xdQrc z!V#}K(cTw;nZ5Xc7yUrHJ_qjl%dB>RkU0G|!6ttGPu7y39=MaALDz#Q-%7vDE2N(q zTj_W5k$%dT@^%gIarGqfGx@ZV&&8!Ae?UQhXgA7RwtFPx?f0VKpm%YT_3b^bg{x$H&U($9Jho9rE({+vIlKj+Vq{_P+Np8S=3KKvuLmM&>GAaD?LYg zKGFP#mY)RN_P@zqj)Rv4`82+N4Y=kH)T6khd3ZPEt$wEG<675ZmDTuCieqotrFLZ( z8I;;B_3J*HRep>7Nxy}DJ%#+qNVMCp2SLB{+u+on(|Ej3>QCjB{MnPdZDp6s=g2O` zz1=zx?CLZ2?8^3cAFtYTX5=@;tCin2hn}4N*)I3@5v!h1&#sWS`#Pnc5jqffZXfCK zz)!)^ReMfpDL=_4SATkw&z)`XVSmZ-SqVDqcPr!{_Lp}3U+RzFL4U5E_uJgJEB~kM zst&Y@d&w@go2&D^*={c1O8#5|_U7j2rTi(`)vo>-aBa=yv$@&LlM&v=5#VF~;U}x} z%m7}Gm^T{V=dH#m>Ny10(YpF7PuO3shMqr1>(7f+@;Z-Zl{Ni*_gBa}zeV+#cq=`* zyrmw8M|#L?B-Y8@{&QP&<#94)S&#L4IIr4cX|FcEpqWC|Azu@_WJY0=YZ$x;mg2t_I?OF_ngeeNE=56bauL( zDPI3T;BH+j`duXY=l>edwc&@HKR2uVHYnP!2=_GPH_dP9w-X`n@+68c^W@BcE55`_ z@$D@>cl&m0>qU;=E_}m!TkRD zp65Qhd-na#oO$P+a_7#S0lpE|YUIzkdviqmyu3-UUwn!_pE?hG)bk6~gKF5Wx_%SF=_f7*0wpSP}znMNM*=Y<*1^579YVVtM-ZAk4OwHJ6K zuEcS+Ut1D;Bgy_qVY$E6zZ%_7X@Om}XTKz}((g4} zFGBvuVQcyk&z^cx_ETX0ZH~V;?3X^k>J0f;b-4PI`qu?6`PK3zz7KG-UzyiVvfdpE z{3u+u9$g5m$PahGcE_Gx{AczL0_QlB?{_oOZGZO+@K`&a^7EaeFkU@8JSVhB&teDK z^&z1jmIE&F6Z&Br;IaLDIxkgMSvsM^j7?elh~!!=#{^CIBaoJ9SaF7ffeZ(fpq z!yovJ!o_?&06bPtp9FsWR^Vx;>z`>q3HVf;ozu{+jfpJ!nfxh#ru>t#Z+#H<3EZ6f zc!c??18(+}_1ZV4+XZ-;@=ft8kNT~s+y^4vU2*yQw=Y}Zho6nxcC!|@*Sq{8F?{HM z>bwK^gI>M302uL<{X#3%viMX#)Bf+^k^Pg^4@Kqs5$wO|uJ!RxS-N$@<8hwCmxuit zxcv5WMQ|OtggqY|f8fLXvK0e_7iKB>9;lBk6rmg9_3e_ zkUt!s=sYJ?YPnp8Jl(>4dGSo12Y^j9`3?Es1SabSL;kOTOPsTml)v4<*?FDqw7+If zx&asaa6YY%Fd7#enC67y2+~CSx?X|pUpYs3P;EwtKGvMMM^*=p36S#RE=k0II zl2Jb$FabrIm;WB? zZm>_`Ja;d4K5q(7>A4eWPTGX$N{gQF@Pj%Z03Ivfr-2*)v!aC85gZ7@WfDUAdkTh}_N zPn<{Vua+az)%vUY87JBvs(#wDJv8;VozBCMQQJd}L)x=FH1=38%KuP5?X?{aNoPMPAzxh zsrr6eLeHOpn||MW{!2Y$fZu_uW7aQE2S^2)Zm37wPZ;6Dc8Pk*#*enQp&zup4defF zXskPu?Tq>%Y{xWys3#TY8qZ;QX*q^*?#dDK0Q?X0%Wn>VmfejW^$+JE)o-ekdNi)) zlFoLaPK`s=Nehj`P^acAY)>>_%%#S|T#pm)K9O4YKkLoAGF`1-5?77um&QL+O7U-aRJxsMj(UA2_+#^R*8`6|-*oTMc=!AC z=Y#~$n+g5@25z3W;=Cu;E7mW1s?*U~d3pDP%J^bxx;OF4-+aLb_QeY;oynSqFpVB$O*@x}VG~i|OrTQhV=(kXRm@n0@ z`3m)i?LeyB7dWP_^4s^-&ktvQUJ`ihIkM^u^{fW_*m!#r;4we%1iXx&wcJBLr}DM= z_ICYJXs`N1KPyfzYMi9Xy{sPfr|O{sO*hn&iXXLCo}&0{u6nfKv9=t;cuVO_rK|eG z{3^f370bb$&nVe-(N^3`=Q#=q#f59u(6C*YjEc{XW0?|SkM zb(LL^w*Nef?R?7q0`Omp=Q|y}`!(`k=J3!D%CCNyoBWSDongGC^#2~`vWee9{TIQX z@;fDg=M_a$CJ^l8O!^8M_%;D;P+CS~^(EnFfvh~ zJi0|#Pic{Q4*o9q4_lZzMgP~C&MCl;x=GKsJvzfvI#c%}sr)YY2RnZi>eqHM^k*N~ ziyySyncv%;AEY2zFNn{-iY*uAr~h{bkM!3e|1gIuKkW|#F3(expX1?se^slji+AMO zc>4%3-LsrM{=kQNX#Z!6d;6}0Jen?fu5x-bUFzwxa~1nRF&_ArwgWf8Ui_o&33={! zxZW=if7bEqeGnO613m>;LzPylU-N5V7yp`H^(XUn3VahAud05{7r&|cHD96rFkcPl z*l~{Li{I>WTwSFnu7;}St2gje{BHtVdG4?J$+IhPb3fv}H%g2BfSYv-wXhwYdWzMf zv(cHX&&oLj{$xrt_E+t{l)nI<<`Cy#>qp#WBzyL+b%5MXPtdmzGr-&^&{dQQ(n|H z8hC6!8MW8)qJ8TV?EA~g&-hn+T1kHS^V<%!%1m7TIycVStouWJoxsMxCBMo~4-N!w z;=Gk?bY;tZ5O68q(9e4Sm-#(ir%Ih&_NqqL6%&u$cmIGsYAX9Faf9(2+l}qvhgh7P zOZ@|Buli|!F>!NVMi?jifhU&kp}=GH{cPZ|`_@Yn_9JjkVj26pX2j10y9npA#MTSF zLOl(oMUJXhk%`{yBGPvY{QM-N24o_DyG3-O!p!8%)9{_~?Az+Zv=8-_>Y zllAliU|$$q>lfqsTZe0VOME8qx|66UY{$9-TMAcR|MI|k8(eiV9)1HX)(&h5+~n7* zk3oLD`7z>yoW0gZ;?57=`Jp|4J3n~i7W!c~@EAXM=bACU!+;OR)!@BfM*T-RT>E$8 zTjLzt?Qu0^=dLpT$$x^g51*%;30(Z3&r?_umjaKK`z^p@=U$C-xcZqqk2+laLws(< zmGh_f+<|`k2s%H*l@+gRH@L#qT;1t_lsUKKR7XcnCmlTicR37Sd z`StwS1GuZ#-g+C>>s67iX&=0GFXZXx^o0K0z~N#0c?Hg(j`c5tVK4Pvb+TNZM;jlT zZ~5c1)#x}s#s3HJn|-sTc`)V3U(ay3rb}GgbNqo1iWaOnrNJtu#MQ*HS&mzv*hz$IO6 zȖ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 mwzSh@X0r-*E90FWsj;)9ce1U;Plct;_Mh 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℘YL!+1Mmwq0OOikxm$s@7p|~AGT&Z9I@UEX zbzgqiub?KLzqTLgH(%)~?#31FU*Zp&pL6jX+sDhVoolo)_*3g6+kjriZScM)+IdgV z%lByDeE}?iIBCxV9Dgm&bMnsv|1WU4a|zynFv{QQ_GYounj?L`?yZXc(jm=arIK!X zy;;$>|A&ju*zfnEuVHbnxTSo_!54g-oF%a5D`kh?1*`YY1okI_oL;iC;dFjn(aAA5 zrQOJ}KIp0Xn9F-xf&c5c+<4j9|AQl{^JcABFJE$mhjt*pb*tem>2Yv9hL=sU0m2+QAQSVvVLs`n$0uF zzm&7&ZtguP)YA0g-9NE5xbD=9E6Yn4gPC-H9-YA~?Lhk3kYDOG!X9B@xn#Kv^c2pU zK(}>C#Ubm(??6xGf31tfINtz&nLmT}5n_rF3p=_2B_7hJ0{t%RC+rR0(@l=qJw3M1 zdQMKDFXe0odYLDKI4A!79Dm?n@?SZ9y1y#^80SB>srs?Ca&Lxw%O~P5?dIvRJ^$$G z(u@3ed^3H1@`@k1_ku}2B~G_Um2ZQ6>7*|Ly4fL?@9j27JBVN9LVR(`rj;FP{#_UC zNUHyHyvGyU!OO47@%6gaj@%D9srMgwf7Sdl`tvT%iCXn&VbD|Y>Gi6~Sp)nQ|FQ!k z{;QxbfU!;eyqBCD=_NU|$kATD>_hqIfNuK6ew?KIszbo~H5B;|_;OXR8K2LCUhP}J zH?^B@c>L-Y@s~cI2Y#gHa~##I>@Pb|Uf+?fe;eE3#Esm0#$^Zoa<(rxKME)1DE=+5 zXb0k774pmZrS2G~+6(pH9R5^)W+?bgj_^~%;l|InwLDL&DE=9@)p);j0PVvY*-iGR z-F!VYca`l6<#~Fo{$2sUq{^M}b=N;JLC!B5{?XCna&Lf~-{Kkw=B0b^)4#9QXYn&K z_WL8?eF4{)M(p=di}n|@;TnT|i2S&6R{(9}k}khf-*13+a7pJk@pn?MOCUegi+kXw zlwNAbt)kLCwCo%hhkgcEwan}7_FG`TkNAUmuzA6s8+R)pjOloO0M z*)JN3oc|`|w8H;8lwHT4B=Xh?+dy;SJ>!c z=3u>GNk@Th`AzwRzdQ@{OK}Z!#rfoV(C#Velq!2Z<>{(-Jb&YHmCu|+BpVIzgF^4e{dzHfdY~R{}!|(^w$=By_Fy3ciw%3ePZLV-a2BO>_ESt;pEi%4|jrI#%FC_V#9fw#bK9m zyk_xv7>q#q8)JM|#?Ls#C+WY3oGtFbd`K|=z<5~X^F76qxa!YIO;Uc4S6j(%EZJY& zdd9^25?_SB45#WB<%|LUOt?Zn66e-)Hj76RayI;4UvVj9O%=2k%x|mxs!`Ep2hxvQ z$BoNWPg$<;@SDXU?^Xtutx(25m;6OM?fT_wkhArr^q1i|wDQ-Epj&;9@$3ou_izn# z3lH%hk3F*&;2K%$hg<*~m>rZi$bST6*my0@8!n#f_3O@mxqfo&m!(Ex?`@)fc{>F4 zh#KC8a_=Vo+IabO&{FZ1a@ZAK@@kBoD(zv6@zmp$bd+Vg?$H7a|` zFN}vRQSP?5QuWB>$M*atcvI!(>gn0wPqkCRAItZ7V375+-TI|^6x&VpNOp_sQEWHw z-&%fq3i_6LBY1Bh?X0|H<+{B05Ag4DIL=?KJufdis9fI3&Y5~$i)WQM4Xc|{W8`3K;SR_a#l~59NrCuKb0pb-{_K0oRr@V|Bp5sZTCFeO=A0wA>OZxGS9`w6NKMQm_zXD(IarU_g^i;onDEujZQGP$pat@z| zb$Ht0KmTP{ANgzb1Br7=$oXr=p8xXnINr#g!byIki=P?}w|pNzL49Yrx%e3he=6Q6 z-{{hpce~Ego2-xR+M$)4cI=;%Lp%Im)hlJ6Ts*Y0&ymO{(^*OV95U@k?JzKUaGN<}$4vDPfj4 z*?zSv=UL!Mop;A|=l}eR=hc|qZbCcbXGP^na3w+VF`>|e&fu4F!f%45hlFwguO8(Z!x2f}R zb_AYOe*UJX3qLhf9*F(kO1{+#*@qG--{_LhyPSO1)6)JyKaCP|?Mtirp6c)A>U&Pk zQZKvpN`SzJekYz>|C#)${E+Jp=lWx}I=|G$3+mU!_Uxpb6n^3<=>Z-hP(N^DJe`o! z^IdlyGOaKBznrm;^0x5MUzC%=LpdqEl; zRJ_p}iqE0&r{Ys_DEZW!^4sB8`y#us{hd;B#$J-ntK7el+NZbIFGnZe$3!_PJG3iD z^9l5#{Matey{{Z?`%;29r=8oynUkY_Zwb@)V}1Mw^9GEV7ku0*et75Gseqr6L4LER z_(}KmF5q|duH>(^3-9fo-f!^XMQ%JO`Lxfdiyb|V&+&MkG1ZTn&C~g7^B3lb88(_PB;B03#ibdDpb3pd~?%VJi%E|3R zXx9!iEuZdBe#X;Tns7>A&9}$;#&%fP%Zcr zpjYoPC;gT$H;c^{qka1LwKy9W@yKp`N(1XyxJcg@^RBkOMylz>^`H%aC$(>|A7|C1 z_*cZbWNJK;>+iK&ZqC0s`r}tNil=c^)y0qR&Vyd5`NOL`J+2qGfL^YH2hW?(ZaZWC z`Rlmq{ga3P)Lp!e-_-Ykybt=cEAYG&)kk_-=Uk~=kc-!FMzWnp%5U<^3K(~k^k9CH z{#wJ+C5LqF6QdN9!*cflmVpE9Nq2z$Ag+Pn{Ti!-zV;Y5zK+K= zbArAgu7QD3eqZ;J;Q!V`jpA>RGp5?7%{V8{T|l>er>aLF7sZ#V=ZkCmMsj-12>wsw za_c4wK?MDn<6j%Rsr)RxWM|6pdi7$%I=&M>^~%XV5b{&&`^UR-Yx|Q`?%?cs^4X1Q zd>ZGa^C7>i*R|(yayWB#ko?#VSvfu)6hE=uw7;vB-A1n1Uo5^dd{@;Y=STlsq=_%> z5Azp)!udj}{dkK*PHOzVT|eqIu6nYE^|d=sUbfBDy+%N>-wQ_cyHQ}&00cp%4|2Q}y*CFL%z+|#dhBCYS&Lzx#ZYr%SOeodPl#|&eo2|&b-sU(74{^?B5EH;KpUiW(YnNqzuxIVi3Qx)o z#A9^XpAkbm6WYM@A$X@*nfQq=fj{Vv@&7qL=J3yh{mfq~V5-%MO$;`zsDx;cr!L%Kj|(#txL5vs=4y_zJL;d7~kHd8hiQI3!(htA1l_ zH;unq*{v1+l-+W1I~4pD=aYv&m-l8|rN3AZSN;4(#g*c%m3?yZbMdTlB|r9y{5vJf z)pL$6nl0ePUc&+zxX1q`n-zrnBuTiJX6k|9gvgr zFa3C4DPMSEKgz$YaJG{FSO?_);G*>NO2^+;?E?(v+nHI||G5hP8&lh#d_QP5Z!@^~ zWVvM=2J>396w58?LAj)}+?P63uB|sIPx5Xxybr6S2jx0_cftS01kc^jk6z!PpA2%g zKbg~)<>vG~xt(&sn>yFx&!AiXKh{@%SA3G=$g%FZ<2XM51v#nl?`xhOx0~D#^Qn9J zoQU;j&OtGZjO|vd#v@(okFi|Nm+p@LjcL%j>bGmYROZP)c53e^!3jL1$)SeADf_p=ITZPZe{k|oK%AuJ2Xgf>$FJx5 zr7z=3&+iKl=@&fHT`YVH^E0(Cil5@-^G5O{;v3aN&ofrLh;7C zv$6iQU4ZA53eT~>?yL3<#`_g{UT*3=O|9gl)+=*za&}l_jkLek2i?v;k^QOH)}Zf% zD|}vc-WGN~rcL>rXE?D9`8oW#e07teg=t0_?7=#;rI5h z7TDNtnH0a-XL#i2;=kScemeYnA+GTGZX7k3&7Zk)Dd+b!Irm`8Mh;J|Kl2u3{1;dK zoTZU#RsF!)^YVS58^7vr58`JU&#(GIdb@Z&Dg8H&k5c>LH-H^d{m+~oC@0mvv@0jq z-?(-zH;z;L!WzQ$Qyb4J|B!zF`)NxQ2x(B zH#^68uJCq_@!aU;Xg++XIIW*4oV=S-IN2|?eFe&IfK%lBD?h3q75h>3x0QWz<<7je z>(|LXlrKE;Bk95u`?1})YK6zzJK^CS@fclrNGBevcfvz@r|_uU7>~-8U*d8H=a+Wt z7wwihw~+c;y&Il#eVp{l{)~rnef+3g(uGs?n(c^i4o|%%POI<2Nxu-M#gA~3KBaJ~ zT;YuEBb>ZzH$Ug%*6+6o{75?}o``y=B;)?Sm#!su8zxa2^{FVm%yyZ2{@4^0d zmUNS&2m4D&=XuU2mh%HvUrvP@tQU8IKh>{z2y~kti1W|Wp1)bnKyy4o`7d~W&C^Ex z-UNQjC$bMMOZ*l;vNP{m;ZMa?EBwYU{FFaQ{07t8KR1q0{0KjP+U~qrEBPt=P<}h} zX1V<>ORk&lw=WO+H*V*Am&MO%P>=ERGzM*De=HcMgPe`?T)E7*o1l#Fe7}QQ$jQy$ za^8%1>gTihcC&UqTdqEy3@oYnx(h(JeX#OxtM-L*QgPm{oUx}>=a&Z0@v(l*gLl2A z+6B$SsC{G{Dz1oH>mUyUr;XQC-&^T5+<5+#!L!%%J;j^&-#~EAD$n!ezNVeHUe>Vu zb8Z!%Isdl8Z~l^hd8c_K*^~5~Jv)V8>x?K2AD3_ETF9t9McPh;p6lr zo|L{hJh`|!4{~gMPg3SAv|4aHaOQm|k(*{x9U5)d4)pGl~<|Uq4S6yw8Oee->qy{tDI| zNY_3?`GpdFds=%wQTwUnm$KdQ`gP7ob2jsH)#gcM%?xbFpx1|?7-AXUpPc=Mx z@m%ru;e&x-zw|-C^U^VHAGqQWS?gDGy)V^o@%B&fo82Uz$hO?T z)pw$kA9K&|c=;yA_mjQ-13NG>a{QBwhuS%oIXSsbnY0sLz{` zOVT;Mu<^3&z&ID4xV>wIC*>E}L3nsaJT{&c9@5*zBYp8>d|W?smy3Jsxy#`EUOp## zE$o(BufM_3YtR464zf=x{|nm6AW)dVO$xcX8@paK1;-k77Ii#HX8f zu65A9v)?lPvE9Y{N8>#aLA|>U^owC1lcPANoa-Gu*#A#D<$MlTDCbuEv|TwKe-Qta zzs_3S#YVW?ITf@s@$-C@c~@%`)iRy$&+I!}Z}R-%PVsNPLr+z%?8CcT@xF=FxeCi| zQsw6n@&3%UKu_i8EkOU(KXJZ&urHLEVrS1E$JPA5aPek|z{TN-;7{%U7r*dR;y>?j z?~9D{Qcf?*Sz|4pt7CHRf(**J4&^?%6zL}C!is)7=zqWky+FZuxT34vSg)7B`vI={ z`6vCGR_|-8o|~Y)ls6OTrQJq!cQHOlCxZDwxAUk;6@6(>*K-r(Uj_6HaSb$dju7MU zlVXS6fc<>*$@&93(6YmAha*w0jawC0ynA+Q_Z}a`Rp}QWKNb%Y$B)Is#PMTsK5_gs zQJV6t;z#pWi~z-t;(@8f9GJM|3s|Bb7Dj=@Ku+5Ri#6CxPc ztiKqKD_oapRWFtSuhnHPH-&>z8jk@}5X+JTXdfb=J_*9-De<$&m^&-Ge4Tl^5eLK4MX`(QEs4wH{tNS&I+vu<0 zxg`Fd{ws3Ui zG18~^bor6=IYEE+3XVgq;6w2?xXF8y7U zd*=z7SNU=k&nF*?{kpBi7R0Q!2k!u-$u8(V=^w)?^Ok@0+JM$V5tU2#Z$&5ylL&QhwP^1@igJPRXY|Q~3M0s?Ny_ z)?3*hlYfPu{`LFikgxb3SFb5Qg}+nsbM-nWe-Y?azAv@PV-BbElKo@7Y{#PGUk`Fp z?c)}pn}1`!ZwLC`xWe~G&kj5N5VVxv+x5$o0ooUTJ*w@i`8(e;$Z=#o)O-#<{0kIF$UPe;x1Z{3d== zU#FPi*wM-JnMa@5UCf9p?8j2h36PPB!*f74z2Z3hHR$)^8W^GTd)eOo6}0j>l%~cJ z)YsDk{G@xFK|UcK#>wnkqwHEghki-57mseyZTi;aYz-MZ+|T~G{o^87oAv0VmAi{Q zOZjoXE?4jFg`LZDdTa8ppp2E{_cc@g&7j|lYan=UIQ5zUT8TgKudCO8!TQ}_=6{RmuPf1c%>0@^vG2jd;me+in|EtdZq&~4sQ@kWmOJ)J15zL5Tur^`O1 zzvSuazmdK&=9tU={D|(Tzb890Dos91VjPz3#oWCk_#fJna{dGPOPq&#UCx?`o~w_H zhgr6T9fJN3EfkMS$s zs4wkP##L9d9CtCr!mf4e9i-YiwF4~@JoGD`Ii1NedBh#UHL1cT#GkG znd(u_?wlwy26-9JMgyLI(EMeV)4_wpHwL_VipH$qnZJpWv~^E7x<`;FBe znZ6UZM{)gC{fg^v&dxs1)aqBxKJD7!TU)s2lx1h$ZM41H->&!};`3p*)OdOG^WC{& zG5>=bU|t$N7#s8xC_lGf}^f?@2`yQ)5&sE z^Vqp^bNh>){D16y2e@TLvGtxAZko9lh72Myg32gLP{~Pj$T{a6hl~Uf$w5E_6flqn zafSyHM9CQmB1r+s0s`*=f+&(C^RLytyI1#~t~2*s&WQf+-S6AqJ-2S1s?}B1)wwtP zc*BOcH!0~q(Egp`pLK`+YKi&!FpiL4D4%-g#{c?9$iJ=ht_I$9@TBu#Y&YALBmNvu ztMZ=WaC-h7Pz~r&@;?B2b9`jcTj?#y8M!0I%T9idlXBd=cVf3zc;<$jnaf^uDlD?j2dJf%vJCc?_7p zIv)IfpTEb+ei4z$&cYeus$}PjA;<5dlbvZ1$(Ma7@z)*FYn7MyXGK3DJ=Y1fX1tN# zs=uZ34uyZ=3BASqP?EpgPGvt*uX}%D61T1VV#Uw7mxlGq+%J^x<1>#3D?U3_FWQx_ za(VorUZ`9-ew9n{%ukkHi+&sYQaTr7@ejMYx7fdW2Xa2dla4n(2|Vrck6FK~xQ=<_ z<6YGrOL4!VuaEE5dEH?cw1(C7?{Di#G zE`4*zasA20{KGzm{DUH0d4_&mV43=S1SjV3FXAD`(ct&<0E!1j%)a}E^5*gIap~Rj zyuRw!8*trO{XN=wLM$)-z)!IA`H?<2J3Km9*vF#%2DHPkA;-5DxgC}oANJD<4>^X6 zr!V(Qr|`&bnnw!xu(UsX=AG;DY@^@1IOto>r1`gBz^p8<_+@9>Z8`8?;rM<2xv=J6 z9dx&@-ItFO*8|wyHnr_mX}B?vW_XKb#MY zZohZZF1U6IbZ;MO6V6)=I^TO+vS+9G+m$oRZgpHGcB7}~0^Q@3-Dv;$B0Z1KMM3xd zkUT#>F>YkN-&J{o^8X!i`gsQ7WMp57cXj%CIsAbi#v$WmE0lK^Jn6WV|8K?ry#oIp zi1YpNr0c4Tt8>8X=*hYDR`GTV_}w~eW4v$K+2Vf%a!TcWAM{u6(Yn|#U>ruk$lb&H zD3vFPa~9A`>oQYY{zA~}&O0RUQ)m@$)jvXfD!;Yjx9YFt$PPo5v z2>w!DdS{b*owqS>`4Hsz{r31Weu5m!4&?Xv#ZQY^{6j9+u)&q9T|ZiJ_`&B#)#q`P z&xhh)#hc=UpDg)H?t%O0@TBiM=DPoQjCc0H)0}7HIOwXSHBNjVa2XHU&n&&9Yd^Ef zMf!N?bmNHW`Ip+|MYgHOr;Yao?+t$Ue&pGe|Cz^H;ViY|?c&ru62i&$<$J*M1KKSa zf6;EA{#tjjfAZQx_4-s--cSAjbdNK)TmQo~e`Ec3Hqbr4@bJ^Tp!*~K$n*P(az;n`;N(oVXMa(S>V<dC}^EiL*>Y&$;e}mq+qa1owao)3iS2Z(q zPm6b21UflB1KO7_M0u0*bfiCm^+Xr{KKz|ui1^#^%fWck`$NWn&UR|)-wea}-N(b% zK_kCq&!u6{17IWcW8-)h?A77XZi*|)`5x%6PokYYpuK84PXHDtXZSRkoKs*Q&+qLS z_?Q2B=yy?@+U4~kUH;{#8zJAfjg>;pxL-fEK^_J{E6umA^61_xb z>5cbQHtcp2@E>=j)NqZ!1n#jC8ek>ocw*@-o4e58=@Ud`r9nYruziC z>_GYw@U5Tk%I&Zs=-h-&_6I#ix&lD{KG$Z;OYiZHK3DZ;Y!iNxfiw8FuTa>Q($NosVTbRen~U zB>xVW``;Z;Ixj(fi@px-S$6rPq4%q}=cm-)SaR?FY6U#a{Vf}ScKNrN2Yh~B8L*g% z4hDVW{Ym$EX{DNe9Oz!Y@-s^^-_~8#E#D%)&r2)T{4;>=?;loPV!1ATzq`5xPg>rw zp#L87|A=SWq+I0R3GZEXcJA^2VEY1cb?tY$tDErPoC5!J`I*0`*(a=P^Dj>)$5Nn| z`U&GeUmH)_UQ_SJkuLe9ZwvZvc$()H_XW+bqbZ-0zf*e8hWxG9VqB>`h4||7NS9vH z?*P3tz7Wp59U;9G&lY_=_DgvA@(U4gpEKo*!h9+JLx1u2z`kKzBmCr_HPVHjpB4t) z$r#nE z?v;x7MD`>K@cC^+$fh4J0{^9W`Y{j0pYeD||393*pZ|aM^zG5Y-|DZH z##4&V(tME>pNd098SX>GlgFWt&nd;>|KVv}Pd_gESohjJzFAlGz?mF>Ik&rZgn9n9 zQ^R=;wX^*6KIq~6J~LcsA8$tt`t~u;do%oDWKH*RMSgzzpWAz@-B#;{UiIs!w-ugJ zKa+UEJpcg@+uwf$9$&vEw~wPI`#H&RKkogr?Bneq`wZ0%&OV7=+M$zrt@3_;0rZEH zcA5A)sn_!R)Yfa2*ZWcZb9#>D^?p?R57m#IlK-E8pYQQGZGVnyU_|^dKU@XV{suJf zchPC_`yyTSj`SxYU4G#wOTI<#`*t|jBfa$FvHuL`o}`z4|K@#N)pYpIw8{Q4^1p?3 zrO*FN>qNUCEXY6iv^~Z1CbNL<`-jSh>wPDEyY)7XN-%^|-??`CJEAx#TaF>qYSTb02v< zdMDCp6(1+WIn4oqUv?vXPSE|i404O#!nqvyz5RugnpOpUZ9L8MT$Y?~;7m_R&T4<_ zDxQBi0kU77oB7khjP36o2K@uj{kfH#-@-G~cY=LXF51W9mtVwBzbpVb51p>{<*n;@ zUIz4a@TBimq}}Al++SOP*ZU>+*J!K@`13(37eC4V!bAKP{{+bQ=kEr`FMHDnrh+MKB=35%==^UUr`y~6iiEP5k-PKm7(J%Z9`-5x0 z#BUyAfnj`pSGdWBPZbDXjRH*2Q?CjyJYPEU)CqZZ1yZe(%A_|J8Fn#rA8ugK)1bp3%wvbLzG1xh{E6 zWxeotHm~D(7tl-ljx0IHj4s=)UH)G~Z|S_}F8B1*blDljGRyTWVj;ZV>3neq+)t`+Nudx1J@v+t>0> z1l^x=%;V%V(0zHOmvLpuza9LyO_2PZYWa_X-hC0*J0u@sT>q`-5cc2rm--1)?l0y1 zpTXXx`M7^6S$}7IKCx20uPHg_OZtk?>HBFa7wN6)d+A*2cOl2kpC|Z<>_?!Vd=c)g zYS1nID}$V*UQ^C%m>=-t2>#{mLzV}@@8C!@x|srFTc*@$={2F~mdp`$YOj(>r{8y??do_c=!SeJ|b8OPuFJ z@9QH*W#cv4=MSJiiKjWfxbdN|e*;YTA%4nv>V;9&%XpgaXWZoBu4)TBO*!;eX}{2~ zmo4uT*!sW1yi<<({3u zom`4HOK;qdG<~jD@^ihCpX-h5?8$jL>R%gpO6!{!E*akIM=p<(2rN89;VGbK)nLw-0}d z-^&U7JM0qXSIH&6tNoQ;7l%jm`}2>Dan>x6F8`AMsmsE?N+;fxmyyAJ2w%i^2I>hc z#xpgYg?c?rHTnCn?tibV+J^jIe6$`_!o7y;~N)rI&G1I=6W9JLP(9(ci&*qU#qm z##!Vq`Ro42d#WA2JGnir`=D+FZ>c}IczAz((%!Kiopf{k-qoa@l77mYz12OCmF-Kx zKc=?)H=xt^WApaKy7yz&qeFR#T6uo%NLTwpj`=|^^^=zb-M<%L@OpiHlwNA0UQd@^ zeri|m`nU(x;hY{{#t-uzk^L}~D;Wn7!4GB%{SfIT{WS3Z?mXsypAh%1>sKrJ4u2w_ z5-H!)C7+)x`7v*J^TfPy$!ooSKX4=dZw1bo(3eg3eX(6Q_we58bB^xu(+;G^eZ^h! z7wLCJIr;qOd3TShuEJT7VfB8tV9)!(|0te;F3s~(BIgf>EyKJ-sW^XF+s!K1dyvs} z4CEyBYb|`w$|p;Jw=~bNW~9r`#IqgfrF*N60=-n?RFRDjeWUfPs(|v^7lH9>dNme`S9%W`-R^`xtO0vb$7X$7~-L(?qlnI4)$;I zC*a)n@H)?XIFY{dDRsV0;)E`8vDQ>fn2U&P&`a_+nK#tmyu6YlJhb3hQNHZSPZxsj`@M=!mTMBuv3tEl?cje zj;i}veAbLnns*2|(i~ zv^(#Ezm%V+JwCKYxgC@TCYN8zZ)x2yN~CClYKDbl5vpN@uJKfcKQML8w>lvBcQ z$@$Zq;r<^e!%wg$)umOt_3a=U!)W95Dt=_UM~>eqc8I7@lSs&}30@3pJfij!HfkJ{g_nBSlC zDbRhn@_J{*!%*au^4{LC=d5@qQrN$757HU)RlELem)|Ovg=dG^!n&198!m4UXXrmP z-^bK-cKN*a%_y($Kje8^>os}ao}%8yJxG>b$9sZs? zP89!>%XjrLk?+0LtLO(=ypr%bhFYRL)ihQ5PB%hx;Dc{#e$^SU+jaACuXqUH;^}B<)F@{$4WSXT6Ac3jE{0%W-JV&;1@QpCowbN1jV^ z`(TrL2eRAG(6Cab=CmFX+ z$v*AKndgmi|E>3js29A)pb>3ja&*a`06B49 zH>vN$ulEIrpY<;Cd$N;H{%e2GTg|)#?yqaCXIcA)4}#r%`y%vK@sB_7L%;L) zZI?5ABxY$>r|=em^fNe#W6C{{ZlR7jw{ccurCN3E*$XFKe$C z;#qiDUdztvuac`&Ue#-ITnaodY{Ge9$L{d+qgCEp!C$%$!Qy`e{623>{*>%r+6Q9E ze;4xodx9jN<(lT?K+pX<>5}r zxAJzU= z{}tG0X*}sTf_7R3v{Juu?MPRvhjYa{Aux9`OV^QH@``a{7alxeiMK0Un{>^{8oOm_^teA@mu-L z;xg3>?^mgS~{8m5B z;%^scyY{j2;U|7lwx^ZPEq<$iXz{n34<#q}mz592pZlHlu{4il@mu-O;Q%obw}VyQ{}jLcyWzC@A>Y~}oby%u@RQXKvG}cih{YfCYGd8j z;%~R#A~}kGmdomgh(EW3)eo`wt$v8bZ}megeybm1@pq~pBKfM}Sy}10;^8N&?UPS(6zX~JIsuz*JvH!uU7Z!iJ^+Iw~FZjvo&x>Dv zB)?TJEPktASo~JKu=uTdVexmWUP!*`1?^+i3-RanwCaV$Z`BKn-|C-R{8qjA&S~|1 zaY@{=MYrmO#c$OMi{Gjj7Js|-LUL3uST3txh+lprzcue?@mux6;HXEcxYI4&&&K|(RWB@lt6o_AR=u$J z+pQOpqk6$|S@lBv@+0}JdSUTfac=Qjac=Q{8pS> z{FAV+vb68?l1LYR6gSzAsyHFNQ*x~FpynlVJe|_}i8I3d152a%gilAh^fJG-JMQij z&UWq7F8``1@49%J>ld4Y=H~%q2Y%WPbUzQEc%Xga{o%S)FN?oZaW464zi1z;{Stp}Ppkd1_^tNK z;V?H`)eDRN8)t=mi~xt9unuCi zFROyz@7u}a%F0*Px|k)$>W5fz)ZY^xmZMYcuhu&#)!T=f4uBopxw#QKA5Bjm26}0I zO6yjNALdo9Tk$XTC#`jmRTu5^_w#pYJ&515^4r-e-sRL<su$wV%WJhS7QfYASoXB)1?NRe_aa*L!s55;g~e~x3yZ(qdLcQg z7p=yL;+J2@Z}p=re)^?!KHcKC;@sl5;@slzRGdq`;=I*3QT(|*tvI*%t@gs=x8hLq z)xyJi`s6wFe)Z&D5zc?U4SMNb0&6~8;~>QwC z?PvA6hF2TqoOafgRiw-BP;27f$Kd~Auv^2P7XM?o^TVwxHSoMUO}NiZcv!;S zj>LWJxbHXIE5-Q=(%Y4DH*l8bG3My)E8-c7e1D&b{K!v3k>lRSm(;tVme;RG3lH;B zyLg_sXk>LC@2^hq3`Gv@@9xn`b2&rg<|_pk1$PJ1@LPl@*nS@C%R?$hw~LV8=-;d8iC+}|s%`782&^OEr1 zBH<+cPRRFmR{m)v|F7VG6;E^jgXHA$t#Zu{JpMkwyj&LlP6yWSI~bndpQ-m93{LL? zKQH@nkw}*uezNdv0Q{wMj#j<94t}}W-S;lPFb+HAmmdPpPw;$HzuX8JrStEW9WI33 z{y3m}L?1yIF@F95IsV=-*^}k90#bG#e4KdY>>AvaIabKR_N-h z*1*#|?`hfj=nX~|@1uTc%X0f-$r(ARzwU3yzqG&Quakh$yWP=)Qz-V z>vSG_5STt{yY@b0l->jK%k{!Nc&JqP3GMPB=k-@NZ0O1r=`7d2`*u~6_T+fnk*mcJ z{EU-(PYdtSR{ZeO$&lmjTOLsTCH;&*?^AvteIn@oKL2Tk^Q0Q_kbW`fuAe+2KfiWO zTb+ zf64yD@9DzNPsCrcKk<9I@ROhTJze-oC;pQCE&MBizjR;a8lZbSsDDd4tRMM>pU7It z@pvSM-?ZcmoZaW&yjqkB2~ z)$~U}e-Y2LjrU$1KfbneBx{*EWLKgY8t zzJvFwtVO!)Px?0<==xE)TkIe|@~s zzpQtZ^9RIwDrXF!wJYbFo7C?g_vy{yf%xh`(Ea;2RbJ{n8F+U3jNVKBw>tjk+oHSr zwtHW>FW6sedaPfGe9DRMF;DIjpx!^-67=TfU29Tbt=G#Bde7cG*gyB<=XdL>mcld8 zqxTq6{_i7y9?$K=5@4!X% z`(he)m<#lhoCQF4?*mHqxv_s@$=}3~e{O&14+tmAH}Sl#YCOKv?B5EHuaBXBBKiEb zw-5bz4P=zwKQ;Z=Mpk#?f6e&{(x<(+AMxPCxco*r^MLjxJa}(=oJV4LR{*V4uh$3t zidVEB;C>X3h&Kb>y^p&ue;@bwC?{`szJG9!w{wyQsF&k~Py9pUg$HW+CqvGiH=~a- zp!ZRNy_yu|tNs$tt)P4V=JvGgV9~oS33kZikT^^BvE*3v%?{|QR)P-LpT&vo&h?W* z|3vXaf9(w3(tBDd-}~K(iT-V+_h$vY*F^cbUgGigl%0vklHV!2S#tOu^Vb~yJRa8m zc~9*Z;ba6@I2ZV37#GO?EEnU)*RR|T^!rk;EB+s>GgcH~(0wB%d%xe<2z9iDU?x*+gB4VsTnm5cTy-Q#2_73UWHrQ<_CL~{7OFJIbU zErn;GPkteNZP0dbborh1?}BzZ>B%`((mSR1PRM?`4ZXAd3h$MEjqyViRrSX@e&z+; z<leOoPXXQawfTW_V#?J#&Znletlttvs~!UpA_*Z z&iU!IfXB@ms~xxE>K5=+uA?uOI2T9X1Aidpv3VVmsch-cupN$A9kkvkkrHgYM%$x5Iym-kC1zujaa!o9^wCn=l$E)B7a`*R3G#Cv37C3vh1kpvzJqEUN62unwu}pTt-8-5S*InXCOEXSST_v`8M z3voUOx*uPEwD??R#Hd=1>_!B$Z`oD-6FS1Y7VSyBmS3#)=nGebIM3xj@C^1#uZ%HR zUml-djr_6$KUsR^U-dJIa~H@d#o>XVJ9~CZFZqvXQ?FHC;Zb=h|5C`m22Yi&i-BD2 z9qiD^OZP`S@_Q>gSaJ9&VzAq~lzkv#`dwmYjVc z+hBJtb#Q{f)*v z|G%uik?dDwc|Un=yvaH@9dWBm!sW!u7j`mH2ihot6kL^3t=Bu;xDjQ zTjK0ONzO*tGwbb{`|Ir4yZt`H9t@=MeU3*M0ZT)t9|y@_#J>gTCHZ@S?)FV3I4MVZ z6<3ray(8lKTCO*b2lAKpeOc#&EPMVu;7``UY3E;p-gj0P>@1x0%hiED>Ccnjl5hFz ze;~)(U-DT(>6M+S_wmiJpLqqYQ{xZ(gmL0+r(*oLBKL#kezf>4`Zw>xy49I1Z!Uk; z>v7)~p7h)Y@f-`l{jnR-VY&{v)8=(!z8zuus~T%gbRa(N%)tT)#EnPlG%54bfweL~!7UZw{*Rp(9?-KcxNco;F`TS(bKkT_~ zAJ0CW$9Pt`WaqqGlAo7L`15k*d83tHU*5^}mdd5_N^f4?!Rz&Y%=LcvdwyTUsA2iI z>?F{Ay^vmNlAUwC2fZHl>vp-8hk1jVz6ZLOqjrS-O> zM|yKPmR^hh-WfvwP4bx!XIiz~PJQ@d*awp9UH>Mmi{Z)k6+;f`Cl=^Yej{(Rl7BDd zc(pE0#@6!RDA28Py@2}S`ag|4%>8(!^|*gT{=A+}ZTT_I8*#`ucjrF3wSS2w`2y&^ zTzMSEI8Wq|gL2%tk3&x6V zJ;r&L?8!L49{e97ru&n1cE(jF^}6^Utls^~`GNV+#Z@v+WXZp9OP#NhaW3f>wUFcD zCy_%-QI4l8&+t>L{$$I3Z&x1AL+4X)q23Gn;&v1d5_7y6U29`%r_d^`VddVC)1 z_6=lc*IJdgG`@)a=Z~Sht{!!(y!2Nm%UklV`sa!h#@mS@4(pC!us{2~Te-aF+jpKh z<0tt`=dCD5`15g%{H1v|%4yeM8W#vZKM}u+{{%njt?+yM3qSeW#eWFi>9H)%4>sq8 zE(7gmo-0iHs}NruH)9z02|w*{1Mru|m3M>g?~U>H4{>hk{RjBpdLMg>yYqJc%^;^I z*ZTqJ{kLMDf0Ex=(>@8BI}g~{C%iD|PW~`Vd4Vs)$#S5V=8M(_eJeZzUDA6DzPLAN zzCBXEj`EHI-SPx&?Hw&LVdd`n+-q*1=lVx_Im7dOyY{T%exAHOwu|#M z%zxH6BYu`ddbQ7lbm`4;{-@~O{I+0!#Vt$nah3NV;PLiXJmmJz_xs8I`Fc&e_W!}! zJ;ig@ox)?~G2v8wVO~-_%KdUl^q1^If87Rp>HN{lKMm(rz=R*>G0L~_F#cWM>&x@% z?O*OK+Gmd2v0o9-K$2HSL;iw+p6mlBeQD6gIez(TEznnvbk$$dEu5Qzf4_fn-dJ`6 zdo><(mscD4|3J`vdw~~efG_0pV05!^=3~sFd&??=PNj;>Ds{= z)$S9Ih5tIp_i--#{B&ES%kQMCT)E#>F2BM*dAVd~mQdyD9>)I!ew9o3^K$Vo&(Ghj z%2n#Ovs|Tq`@dVc?z&-Qv7a-|Z|nGJ)QbVoeSbjyqMi3SxQ>UUUeIo{gMU6e(>D4W zmOcL%&xtEeC_nZ$l66@2H-;j|^&e6>D9Y@o)Z-2xZZ1x!_Y`2Cz%t`p49gSZrxpM2 z+vFd9M|<)YF7R7+*bcltPs*N*?7cug3{Se=w;<^6p4?Nv2ZyEg<)s~ZVITJQn*C4N zA&-Yva%lg-%9&!hl6xmuuDemD()}TpoYfPw#ko>Dgy8KJ}W}y52cJ7y*K>rS& zQN#0gp_B5@FUS{8fWr^#5pg~YUe_)(&Yf9t)k==bw}~8<+>&GYW&S&18+Wcj_M}G_ z1-%pxmYh|tu=^+%P9<$W3U`2bJqul+%v|Bdo`U;kZUzoqIs?LawS!v8+1oOK|h)Zez~ z7EY@^?hg4ZZ!<4-Qa_zaG^4M#jm-1Ne-Pl8iCtY`Do}UA>5+3%$OYQZ%;4j77mq9PxOS}>2ZohHT ze`EYBZzzw^Zps^ZeX;WJQILN+o>7fFd@X5(d&B++`g8nWa!!W`hTjv~<-DJu{F|^*A z+rLx%pO`=FI~|;Si(lg-T1WMf^N^)^zgGOEdBsl6%gLU(U#2KOnV+GhgkNz;k6Q9) zJFGrO(^qBZXnO7o@s`_v2GHHQFeW;QG}PbOB7ctmGobtNQ65*qljkcde)ibDr`j!P zzqSJ`N}Ow*@ZRuzU3dfNy?uSui=@BGdZByX{{O;rbnr{^J`qO1>7e`kHn@1O?B6N* zj{r|8ubzs1U!JabBjO)mKB_d%dSH=2&*M$_Lo2osX+U-dH1Hr#} zx#j`gXp4(}Hbe#W!KzkQS=e#$ug}ac=i` z{I7W){0z{}$CIv`Q*XO+?tzTQDW^;A0`DXG8)&6=L3))>hN5?t2m7nf;YsyU&R0Qe zNAI@aFWF6Yke!+5WlyyW)Vl}d97H^g^C_K@FFR{rXl`fOlb?h~`I$H^JiH(KYT$3i ziR_^A=63J_&Hh7f2jL-IcEca|3H-BOKeBqp*-dtC#V_PIna}PhDm=h&>Q>V<(E8uUI+hsc>0rjap{*&J zhg{cSd*|uGPx@QnE%ARC={f&wkJfRL$fw`;U88>QRU>Xc3;y}=r0GR>eV}ByfWWT6ur$Bq#(bXLwVR|n zI}8&4eBk#ubNs?7{5ei~+w0|T;S_%2Jnd-A>pGmm&-$_jXglFa^E2fv@kF`aalPBe zn{X1r-jH!J?u67=cmBi3BPv= z|Kh+?id&US`15kf?|Hf8clt$fqIrxwo*5mA=NKo0%s=hM{|+eczVug;uUJCiRQwZX z#N*T6CW%z8vR7TpO;tl z9pLa2`cbt1viMH({X3h2HXcu!PsZYVl9T)85b(PGZF0VkdMv;E6#TAU3ryO!P9YrnX+Iywg2d??X%SCu`u`p!@s5R9=1(PStnPWgo>M?XxcAY=bBD%VMDa z7&K@9MtoZSx^C4TpC^-j;}B!YpW1R{hdj=oLAiXKC~vf~gN1YA-r*i0$>*mTp9<}T zUzaqye{EFusf9^-&7f$v!gkSk5$FKed^IOE< z$Up7I;ZD*1IsUyscm2Bhy$Ni;ptd>?be~s+KaYnT|1seAahv0Bw_T3;GwJ6LPp9ng z+q=U!D7SiJ@Svz|<5_IK z@SYvnhxldZJlIFO!9gSaI3;<%d?)Qpy^G=b zsCpGwxjlFMO*k);+jC>++>v@4`=_{_s&G$e3)e2wde2$N| z8PLqIzDNFK+(C{x&K_B8H#;Tgz`g2uB%iK2-o9Av`>zfQ{Q;I#zR0oZgQ! zeVqq>e{xsxe$+j|@8^y4`qD|grGA2?*NT%Xfz$g-amY_MgZ})oDlhj>u_W!5*NQjl z_5PAxR-IOQ+bOU72%-21{qSSA?W@oEN-y)3?v--vj-Pa$GZKHRd?h*J&*k_85%9Dd z534*M{FU$jUmNt&ddG?H)c2nc%kNLvJn}1Vvs|;kG^#pzmM*k+K5xHJ`+eYqkpJ_% zJ?nh^)h>|L?{4R;s^@Ed<+1!8&Y_go$BD{I3$`k+=T~{j|L<1bPUY1pwrk0Lc*db+ z|DoV1<=b}g+>6+8@6STq@Q3w+IOF}FN&kxUKgGDs>(NV*?gfSV^&aS#<9vNzSAO4D zr}81&m%6>n&e>gp`#*hs%=3Sz@*(xs_K$jL5lgS-_a$Elc|-Y%h&KVf)Zeh?yLJWt z3!CtLH}VT5?hCrV|3Q8s2jzSG_ya%m7wMgnZ_TG!c35S6d7fv#i$gzF<)VF*=ZRi% zYsnYC?96yx_%G%8MoW&`HOV2KO(DnoOE}3Pe*A%-P%p$UIsBw`8Ofo13un7@z8C2b zH=go(XRO-`_A9QznW+8|(o6fq{!B9e(+baXutRA+mhVq=_L*Dl2oe1KsL-w{J}Lii zkW=cvS>=uLKb`Lzy!h=PU*)3w>0S)-bG??|zY6|Rxt0lX61!3U=+n#hSZ*+~x7rF% ze?1R2J9x>jdkKUSfQaZuIih3 z(sdt}>pEL3=Z#Vv)0Gt=&Y3@h*(r>%{x?%Dj3a%SI0$%5@#=hd;f4Zmo$_aXZ#Qbmy z?I69%1JwIGNq^l zX+CPt+P^!4KBJ@ia_v#mw@3Tv%bWZCaPWJ2KJO9ZcDU|&CS=PFQyb?6!0Gc(j?=>P zaOBVHOT^h|zk2>2?2z-%47&GM?#Hi#e#WvRv;4+=L2CwjvagKv%_3cLNFNV+DGtZ4 z6XG-X*F@+n`AhS1`TD|t3eKOw4nF_GDEJBW(eiKf<5a2_G5!Y>Z>{40h3LmTej?66 z#@no~1Uo2B7yRZ|j2Y+Z{hI8rq!`V!OlEO#a;*{I1;@-ZzZ@3HjOT z&mS1|=5{_Z(sR45_P5ag%@eqP9# zA(r=P(A|BTu9fw6pgo@1KH$&aBlEC<=N-s#?OnI*K*W+SJpT&$mOY2;$HqO|(aw$b z`q2B!@BJM25A4&!gKPYp1L!a2;X^?y?SJF_hb8(9crS2izRr^W3&{8Wm0xIo3+L}5 zzi^V@!t){c-8sr0-Qz_5<8iN-ucwm3d@|L=#eenDql$Pe`8PoJLW^}r`SdUG-*RNYDf@R)uZ6Ss zwXz*%1ie(>tvIy!Ej!T8KK~5PFBX1F{*QtGXLy1igPnJ~xZZb{oSSH6=UX7-{(>A! zZ@W0#<^TNa{nc96kHEOe+wDhnd~#hc zGM?adbR8s>ifH(`~0c;$WOg*1iIQO(k=P(gTIvD7LRnvXB@5# zdMPh$1bQj&?F72dCz8W_a@(CDp9m-ATR49TIljEAkCZ6AxqRuB{9G@!sUNl1WnI;6 z&@pY2&&mG}(7b&dyNg?XGqzuie(4-<);JsYZhbz|g_EC_ige*5UE`4)=L=ZV@Oad( zCdV3(vlX6cyVRc~{=GqCy&K)Qr~P2ief}hu`b(C7&j5eP{=%tp5sz@HTscmaE61sF z5tnf0<+AepvOfy@&-ra%F83SwOL6<5LEm(nus>h%M#L7sMc?(GA%1c>dxO5lLYT)+ z);EdsdeHB|lg|5n4fGd5bAC+LugOonrGAlx=M!&*eszv#o=DIAXvtX}{P$m@ymT_Y zM*B=WFW6slh_h3ES?=;M50m3R>gB$of8PeqQhu}e7kazQAL~)WUrU4k`zvz3F^_Xg zzU(0Uw2#G4JKuYq?0m`;>}<)|1@F}=*=R2ZQGO|NKk#vC4Hh_}w~SGM~mczZ-O4-u!-^ zr$P7S&GW`Ppga71)3_Uw0{)R727bj4@y`Xi$KUO479l?oF9^EFpYN};@NWLtNptrHVrFYl>?t~kF{XNc=YdPO}u(z7W(LK&pYx(h^u|3ldp^)z zP5K3K5=B+5R?C^~u)gZfn=u!U=|e_Pz{!4*vs+`IiDd`Q6CMmq>AVy5oZH`B_iq)S zq+4>XMtL{6K=usfmHb@JOUKv!nPgp?@_z{|zMbMm!VAB8{g6Xbttc!=9v?}nh4aK3{3c}jHND^hBIe+D@&KP2NF z>Yo<(9+dhOzccjS2l^t9sXv1&$z8cPju`zY>E8ZV*7TQy-a4*A{Am3#FYmM?%H`#K zbfx^(t{=xk{SYDt1FR#mc2xOm#C%tcq z?eztqUGM11Cu8v)jlc4C&B8hEp!&TGjsDg1ko|mO|Ep>|uYvCU;&BGQSn@wRP1*im z2K|o2@7L7wmjHcrJn8)^6JVh2LE8sU^BmvtpiNo<=Yx`Xpgm6o-NkLv{z64%;k*I- zrMP|dmfl(pzpZ+GMYNmR>sIogg#6z;t~kH8F0bU|@-3VnLe3EnOU`Ar9Qu9fCsbdq ztLZ&m1J%rUaIV(jzdqr=)5V)3S0SH_1Mk{+M)CWT4Q~Vb} zzVEk4KJ%U>{{irq=J(zLeI{o&U*2EWcIfIJsAj|y@+$L5tMV=d-cmkX8T5_ur1$P_ zG?$IDm7EhBa*p}*(B$0KkTYSv_T?y_z+m_Z?TZyxR(oW%FIGFUitE%L}2Cr zcJusj>!zK2u&E8@8cbpL)L-*~U+q{y$lP5x(l z5I>lg>-m!MHWB;-boaiA#=Y^M#(vJv;%Vl+Kh0U^tE62f&NX{Oe#0O534Yu%()03u zT>RG?c>W6dP4lB~;9*wNp$xR!hoHOspR7N!{`U9PEHaH*L~?bM^hj z&~GG{w-0|W0bbvK%l$?BxV)6~hxtv}li!w|w}YJZ79@UOfSK?=@@xNXUcYt&zZ+k4 z<>QNQf$sKmCihPg|6!oJ`GI6Uf&B#8&BxW`cGGw;w;TTwe%Z|j7UL(k+sMez53<{+ zNN0J^*}d-PcjKN#{De3py;L79`Y%ylzwWQN5XJ0klDD+zz^VnlR^YuvnrC+T05r1AEW#>G< zS#ngrB&U@hw+GIB@JyS`(=r}T0nOJJ=>^%uAMKFzW66If1#4YW7XLs>2<>S1>dFM>*~C-vb%GK2o}u&)<)MUK$6rE8p^O z_swA)Irr~s2b9kz#&}5jQCU1R+NqcylKu%b%?Q1vdBwRwck!9@dl^3#e&X@@KgS>A zGugjKdlHYY*NRVmQ~8IbnR5SRiD?I_Rq-_Q&-S3TlYgQ;ll(vgR(UPDWe1D@_rUpN z0ss3SBmPo9#L5pJSHGI}^!0IY{Xpw{<=mT&s*aeB@uPN%aef+TK7JIRjK_BKnDQIH zjrxX%aWymUaq|7N{5f_8OwA-j*d4H1m$uKZv94)-;2pOse|`y1DS?%(I4^)Dj+E$BY)<@g_tbm3>YEcxQk+rjN%AK(9! zeA;2RNSA!l_lx$FfBESU(2v1`_h82JdLUQljxOJC#{GLGJNyr1l;%-qJPT*XFVs28 z)lm%Uwf2v_xo3SZeX{P%5-vAGdB2wC_hbjkUmg4-Wb>Y*g>9Rf5bqzY#{f|7VuX?>f9|L-{XCepW z>T5HV<6#xhH^YNX3WGyr}#|iBW#i{*D2i>w~Vn zNcy+*Z>Qv60-WBD!cYI+1-fgO8~4cwkMevgJkjsTK4<#N!XM)y;U5G3=&y!7zch1s zJhC0=K7ZoN_~H17cAhwEUv;Ld*Iv*X_{H+>9{J^8e%e3MWgpU2fB9|o&sTofpBrlC z+f#y^#`@-&k)G?lFw%3qS4Fz?@|(AT?&@8=V8-&&FT}aWMXc|>f4F8{UMp|^1#*0S z_x7P2YWg73g_HDYX9@hmNqWq~UQEnaUj@ILA5PXo84p&wa3uC*jl*}E_u^XkN8-I{ zCHxluBCt!TpTEhx^*Nx%d*%MJnqRLU)jcBKN5mrP{p|7!KaKrEeO@^63+WM0!#)-s z%RX1YHl_MI%YSuyJ2dwH+zkGE@TB|w7$@<(TX)`H?cF`xx2*mu@jn9@f5p?^-8-CJ zsSs~HvxfSZ&ws{v@L>|;LGP!_<4tzX&v(ntdAvn?HsnV+IL61wB~EHOHNIajkLOEb z{QPU>%fE^r`eiNH)B9KXmK>`c;rn%?x^#}4<+AeRZje*zPaXz(>3)VYB0aamjiCGS zrf~Ap{h<4Om^seaj=Not-u`UIEr0!dnb1#DJb>LSm-4XqiN}&3`@NWG4)MU>R=@YD z`-7eH`u-y5-Y>Zw7M`u_uieou_;H`c>GZFKbAu=+FV{Aap2zK+;oM@M{6&s0M7nU2 zz8mED{;>Q7a?+pSU*2Er&&2xc*#}jB-Tu1dy}gvzb#}0ua1zL zebw9ePIJC%`q_j1bNjI0?(HwVw7(^P8OZVL>AC&ai1b|k7LhLbEY~iPF8lM-6TpAk zv$$U<8HchRJOTV}T!yr_4E|=mq9)S)I0b*;C(xsuq`yQt+-F$oe?9@azo$;+qWtG- z{!v|dzWqDsrS>JptrrvhqW+=e)6N#2`LXYD(Q|okhWIl)xSoU-WqHYA;aLoFe7m39 z+0q-%J2c;;s`$+PyL*(M`*+MI2C6UN3Hw*q0!SjT^llH{?UV6W;3uAT>Wd}6OW3EhPc^n9$@qxv$ki+MRS)Ak1Bc@e z{16Z0ZNwY{)dOepe3>Ih`r;!nzTN=!E{QjCEDZiqeOVs#()zx|zZ3ZP!P8t{!<97_}9l3pufedH2WPOTpwa>v_)y-=Hf3kkjN&NQ)y@}tc_o+XPtR~=&KNO7W zVmw%O_z-eRcAM>!VZK6fLVsCu)&jq?TjDPwu=peXgg@Zl8uz!S`{Gy*OU{|ldjX#G z+)XR~VRM$t`{*mZ#eE>7!C$&BRB@tveOX?`iP~$HE5=FEzarf#SG@nQ;m5mhue6;E2<>6dopd||F2UpQ&0uYx`f&wxAS;_bd49lzec9vJ| zk>ZVbI)!r)==A-8yk2w)r{ymzk10Rr{Zi%U9B0hWQ>h(~ct#8k&+f3N&tr@ZA3v?y zU&{`b-Pm52>Z8SP$yYvCy(41g^U`=E=5y@#qX$BMv-C=SUSA|X*DLvh%S&&=&Z9of zc0ux6<)4kgyK{q|exbig^}SQ|%gO_)*NPLsndv|CSSS{3gD zDxCM3Y3_P{yWSAbIAq?Q3v}nlWc`TtY*)^rkh46VbRCLvwg+uIp5{LMcIii6)Kxu( zwt1j|U+3xadhz|cx~m`HN!Ke|;kgJHufx-vxA{G2U%rt0A|#*jZ`tSZ&AO^{*2VbF zS1(uJ$$!{ydaHxsm;Pk`B4en>xao`LEE+~ry?FGTzkBVGB2 zc6fXDE`N?A*|#|qIlqJalO|z}JlW4i`Okyy=C1~HUl~369Q2m@nS7tSC8xB0XUXaP z%s@2@p0vNmc}vMxyG)#mrjJI@`s)Be&+JbwQM zzb*Rn^VoRi`D|zK`15oc@3iux;zT%Et{(!+`0q}Bj~xAe2L2cJ*#q^A0@e`Gq^c{|0DopI9=_Pm#msMXcdT z`-fve-|>CS7p=zgv-kr)@8CD>COQ5ej8A_024t*CIZ3-fIfsCD0-kxb%5m`q`fIBTf6%)h=-zHQ|5+E7@4wRh z@WR7yTKtnB-``6ke&W0w^t^thcVj30V#8_-=l zSifg2#8ta~mwl8Uh}V)Me#H;@PY0e~;AyrCmYheyTgng5f$rw9`||sQ{{gyR*OQ%d z|H{t9^DgCofq3$EFurfX!*}(O{1#5DzGyvNb|V7WM>r{eC1Bao;StW>f05o(+tB+k zcy~WU`yM|FJLTn4d0DO(!T*+%uksG1T(Vm(f3EoksxRVc-XqbjzqW;p-SG_6FD_zz zVSYORw4)AUc|HDl>hc~9x}Q&zzj8Y$u4sp!f`1a8{$zb&D0XN!kKGNO{@zaEq~0_B zQumX4gp(YPgWva`^E}h8J=?`O#rLN)>S?=ptoY&kVrKi|;Nxc;crX3F;(xw69@YbW zOUkLoabKwE-vZ6sKac-t=f-%U-Ey4``M;#zWE|QmuKo_*cgbImkLIm$UiNf-f6k0~ z{j%`W zUfHdc9O3bDCdV^4IhG&wz9Gq>9kxRrbN!`Z`FyhQc)LxGXK;Qz6}Bn$Lneam`XQJX zWr^uu{{AKCrFE7YB7N%kQRV$;_V1J&t6#+PYgZh_dg}c+7I0}1^@sELkNx4sdW8DJ z@+0M_Kb-I9RDU?%e|s0kO{MXa+6!+_`WND>$HDLGbsmSWfbQ?<75-Lvm~sB-!OB;k zsqG-Wl25(LW0KGE^8I3^b*Pxf>iaH29<%a*CY^ONBeo*ZW$=fWv}(LTcI z^Hsok;vC@~U`kc~T=u#!ZjxW9Y0m}f`O;70MOHOGEhu~DI4wK;2y!Ok8A$fkLyVa} zUj%O{KfDFH&ja!!arP~U`Bgm4`)W2hu5N!D=d6Wab|apJAfugr+UDT*cyhZ*zHm~$ zWgja}PJnzr{*oMinh@!-Kk3q|I2npwtDkvm&|4pHV*RCFjmxB$pPr2Nk)25w&cU^( zmVK=8#qfm&s*!jG5}dSy^a>~GmS3!VVzry2G3V{t&Az)I->{5}*siYt|udJlsQO7jwmPx+VMybABB^z~GD$RV70 z9G(dIzCFs@H7iamds_9Vl|B7D%+#@`h3Dsc_EZ<*Y2M3C`# zlD^skz16e$-$1w4$H#!){ndao$3GkBzFfK9l|c9R_u|X=3Gu%!=zbnP-=DvElyAuK zYNMPBgZu{l3efMslkN|ped4~IWF3mQ{tRA+zj1zii`&ZgYF>L>`F#+*3lCJ&<7uvI zkBj#u%Kp@A$sdUC-^}ey`AfGUe@pO|_6b|~zX|@5AMbv*eBbpC!SCX&u^)i)ot$Lf z1>BYw&mu}G*dc|4Db^c>Gjp!@y*MCbAFx22c-rSlH$#!0*Kr#AogC|4=} z9}c=7kJBp3Cl`P|{g(OuD0(8^AMV`}^Tvj!cU4d0J86D+1TM1ppF1|3FOz@ip?`qh zy(r`)^Nqyy70_IqCwfV@;(he#{y>)N2ax0QVP4vcT4ZQ;JpHE zaDQSqW@O85%fX%{y=w$NHrACay}LuNdw+eRm!aCO-WWe^=q=rwG`01zUVI$>o!a&B zpvAFI3D2~RJhRqQBYmDv?$d^Q^Do== z`387he_(_UpwRDK7xa>U{{lI$;z{?b(?0KlcE!frx8}<`13>cAwvglOQ*Q{SeA0IZ z-OJIu7Uc{dU!Tt%k-*^N2Y!N_Pi~t-E;72J@=hPoA8Eqx@M=PrQ97)ypBWJD(X@J&z~NV^@J5<0`Qak;V8)`ah({ zI7#?f-WU%FKj~3^691IbZrnz_i5$vrH$E?Yqpt7X{Lap_&(%wYah(4L?N9mdzZ2r0 ze|dZI(;eX7%jH|e;RMj<`dK+I{TcjM?9P1X<$nc2sQ2%nm-5nXXY>^J4-70dP<;YV zn$IDo`XXpvj__0d#VhqyUm<_;z6|nj3fi^>IV)ga+8&NBIpl9wj`(vqr$hG73wka7 zo56ce8~m1iEcq55*(b-}we&zW1D%ANjsEmk+T{$G<~<_|2?geVkO)_njff$Ajj9^LS7@%kM?}zPL_4={%=! zd;=%TYnAJK@Lty79|Qi2fwTIP%5_*>E|u5YZSwNw_co}!gDaPXlkX>bkT~m#M0<`U zPNTlO3*KrO@HgzkbA0|hk^cwfFc0^E*U$ebZ;&qed7R7){xJ>t#53;V-fBV6o9Fw! z4%+2-8Ccjqvtw<~IajXlYi*oMQrs#|^0<{fp|-N>5%FwEoJrh%4g4qJ-WXTjWZx{y zE4$_8{WfGALpcL_|0(CaPY2D#ZJ+QEvG6NybNr3|Va#LrGJfb6{+9jaFVa=t`Iq>m zSNyqN`Iq0b@=3dLti0E*9LtaG%9(Z9fjSScl-@qH!(5S`+vi2Rce2#3S@H12ASanO z$nC6np#F)E^!s+rtBwBs2IRQ*E}8cu|E8dCgQr=4_X2HyM;CtbD^7C%o&?_izK!*c zTvfF*eltGL0(~4_!WY{2oof0;pkGD#n7CvOU>q{e@7$u?kG&VX&p3Y7(=p&@e7*~M z^PGZks$PKIj6>nkd|-}8 zbmdaL%jHWi!pFtit!>C>etV(~`BuEqZtpq0gR|QlU$5JXWIr48`R71i0M9_5?8f>s z4zx}1Oq<-pMmwnf=JEC|@P6C%e|)>YLmgK~g6`)HdWUg{%KF6`dlKlrJ@Nxr(uv^g zntya({+_#ENB;ahcXxsQIG+CDde2?%FF!z~e2A}R{>DHx7oPqkACi9&(A@l9(vM;U zj01fGJk5HsD`+0S;(_?tPdE(!8*IIZ{;kLFleJ$pp3r`&JyLv*fnLVLc@C%EW0>W= z#J|LOEqHx9*yT<>(LUtACzPvC{v|*AEzh`esb81dnSZID7RyCv<0q6$IE}bX&Vf>| z;>z23^0>;!BZ@2KNy<@Nsa(XRxKg?D@~T{Uc@?*m!*b0xj&U-$Jj4FaIPjb8Y-7Bj zdPi-tGxcuk^cwa|=A~J#g?8zx4s?1Iw|Tk9CHZH8_dLq?=8XNiD?q!^(Y=EiKl~=~ zJWTo^`&Zw5x2Jjw{DZA8pIv^SnjcT|UfCrr1xIt&)G`%8^|WBl0gl$uG)#Ae-|-ohq*tCmoY-^c!P&eK^Ftq^>0LLH*Lq4qb|8%CYdPUGw${dSm=2e$VCS{)+X^i-~!a z_P-~w&o^uP$iE*g&sh1HdXK$Ze%ZUjdM$fe>n82yH^q;Shp^6~`0?>SdHg6I^7!c) z#!N>4(nX4&!R0rrytMOje~_K`?XaD#_LSrC^HKNGetVXe8hO={L;UO9C;a>Ui|}*Z z>Sf>`Y`dU(O0TMaGVjWvA4soy`WXCHKT!Qc7fI-A%#ZK%k5v6-1jKfyG49~~cpHL0 z9XEm9wMPSggx%_ShW$Hix1IOys*a;xU#yr<&b_qWhn9>B^1P(-5~n4He!qbD>-B|i zcNo9bA5*`5aQ>oy+ws>^;P>kwEWP67FQESoPya~i&HbL+&5F1FRdBxqp25~TOAhTn z@z1jVQ60AbhQPQZar)xM_@UlIAC}&OJFIuf@Anq_^VItQHrR)FJ7kD@V>{cZr>ei| z7t#OLID&YteiV4>`g`aQ@kp<4r$Yb18mCb2ga@VffDY@m>Rr2WYsn%0Upy;6ez(K; zt@>ik1H^bp=IiM9=~k`p^Gwb?vA%x-^iIqJED1U9CH<>?YCEg~y4!cuXnz$aYIlg! z>R0RvIWEuC@yWPq)xKMK{uIb5&HqdU{YpIPy_5?A&%L0P=1*kjJkC|Fyxv)Ud;{|L zzhCk5t=euo-GzNYyr;BreogXoyIJwsG5N;)$teL-pR*nxxX|n&daOuT3%k^RC%G+%&YSQ zV`;zQ$A#0f=gPq8=e6?v|7(Ko{jT_-zcvHi`%(7H{m8%6AGY-F4>|RF2HngD^A9y0 zZ0J3%LwZ?WcW!IA*5jC=rgnL+gx>#zcu<@xZ_}TaAKT@R?OL+mjP2Tcu+I!`-qpw3 zu615geev-&S-noqB@w6U_0*Ziv&w7ruVlB}o=dJVP_2Y#+NA%+%(yjZtdFA`>&w!c z*Dq_`L3nb#YL`{7^ZuUdHSIaI-YIn$P;o&-CslP2bvQH~H;?K)v>5b*82mH+2W2gXl-1=#< zua9)~w-r}IX)k73bD-MK?T7a`563UcnXoe2*3>`6bt*Q3eu$wyqz zl0DVWpW}$yh5nfG*hibUxAa=^yfW>er#1PuG4J`S?PHJTAce& z{C>Q_?eC5KlfJy4)^lap53Kq^`6^f5PgA+nFU`x9`>Wl&cM8h-UwHcaR4z*V4QRfe z%5KE@80h;Z>#7IV@%#ele!bO~Yx4Na%cVFO+`0qTAN_i(`rE{#c0v34@^(S{`oLaU z^VPj;4OFw@X^yA93fc;!H`==$L2IYIQ@chK%IDU4&73eMLGNCh<0O_GBL0A7wy(i{qDUKW8#eNWI!er#!$Cs@{>yq@{50UQ4aeiKT zl2TQVB7fuFgVT-uITpVa{}#X1548BLc_)kCnqRW`t#u8H-|~y%KljTj>x6SRs(18* z&TA-67#VxuY=J+o;o~Hn*HFFA<3w?#dY8wQ>K*l3_~pkO|DM3#PTn{I{H45cJm{so z(JB0v{gr=Yf7-{&d*>VYuQKq-}hcx8hCxZP_8u&uT9ihZg>}TW#w~g9dL?x26=CZ?34HZEx&6%Enn}`e464XucvBH zTg6qZFUh@#d42h4^5gnlBA=PDQ~0fQx+(gr-Tr4Iek^~^o?xXxby8NzopX~B4 z|I+wq$a?#7y*tAOeqWjN=5`odo)rE(4yQJL=@ow3$^iSFyzqf0Dt}B(sr;?-k(#nsP9F5B)hn8i3yPffu=6mz_XM5`J z-O@Z2ds=KyeScN+RCzrbTz|}}*D-H2`kAV~s@J(*A6Fb-(4J?`6V`Y5m(M3-@OxsU ztNxO1`DNh^!}~_TgdfUh2{#Ab_qQF{(TQM3(D%U8Kf=qO6L3j?W%Kequ{VR)z2~mx z5Aq)Y{Tq0PS@XRT!^&`aZm?LmKi>uInL(8tw+HGWIZ zrQrARAbYaBl<(H{f$Gr zkmKAFbbl|d>`cG!7wJTycsMB1g_Ha@;hs1D9>csIbqeQ~o(k_z6wX%mITtuf_qAGh zo(2EQcLNkvv-p~&vCwXH16lbQ*XzJ_2`RBl+VN7bY3`D zo6A2O_k6nfhsHhCM@PE+MZZP89)8rjB5mo&dV57d<)tiz2_~Nyu?Sa7o_1EJ+x30f`1-;soew1Fu zrzMB))w(K?^YdEHYj}6WVhuTCTF7}}`8rOfmpzGpTgceGA*U6dZ@=GDo$UA}hkmi} z{}Q~{l0TUrrrw7R@2MWglg1n6{0Y3JeE4*v%WjnO9O%xENxZd^Z|VKyQQ@9pm8+GU zWi|_W2_Wzj+KX?1UaHrpzufQN%hr|e7g`hizPx#T-29cAzp>wY)5x#4l4U z|NLL@zLMJQv7W|zq49cQdXjdd#jpB*>|F<(B}MU`y<_ig?{-&m5X3_eNs>eX6%Yiu zBctS;m7oYn20>6zf?y7yfCvHtqKI-xMsh}ih~g>10P6Wi6pa7+re60qHQP1&dhfm4 zMR`9SH&a{h>#wV-tHbon2!`rg|2E;2&&OVN_HaJ2-2{Ekc4hwt_&gf<*m&^xEH3X! zQT|qc=_t4L^2+^lX1Sg{f4gfsKYRRvld`9WbKHyx$$0qlE&atyk|U-}uzvZg$j_I3 zv;DPvyU5N1#WzkAxrTp?tEnQNEbq=4U&$NDOTU=bTdaDiea{QzFaI+1gSH*5AUN8- z&>A$}a5P%w?kIeAm2bTr?H764_&Gu3pG@d~L1bT*Z?)Z>EmglvWT}3?3FodFPQRoI z59d#!`*-=)-^Vd|m++iP@`qm*5P6Ev@*-bJzI8j$FBWHY2gkGLbANZnEgPrf=Z+|6 z{DA*%Qf?|fX-~^@Z-*!K1ynwvzhK-F2l07yCeBx)zQwsx)YqyG#FgWS_}b^NRf!j&hF2AfGDo z)HrEYb;q246V-1;53!H^ge07c=5KQqtE)1XH&VSI5=LpKg`sBKIm8M0K1`m z<=AtH_vhIs*Z$qsr(fU=uA_Q(Mqau~@={;LZun)iTje@$Qyc;(Ck~OvQu^fIUR)uM zrEt9ZvVUyPKFDJ!{9K;MV<{YuC-PWIKeybbJXVeeD)+m=zr=4Zk0GC=czX3hK1u1b z-1hvAe3HWP%0)iO(I=nw;skjkg}>W{lZ)H-mGOV&Is*2k<38MS-cf0HA}-%&)W6@* zao04FZ7SdD`UCWH<*-jV4ylw2zvKOGx5>4idcWr37*F}jRphC5>fztF zKzMI5dE)3l4*ui=^YFcSqQ{5zA|Kd|^|JBc;dplQ^gTNehvkAlaVo%S-5&9~LY(FICn7#LQ*Cyv#vE>kFKNMP9|3D*8?N z?eYW;?q^KNXNs<_PqMz?Gq0?druIcVFZwT)__lxa@ZWi`yk9jj{+}-L)V#^V$>j;V zT`pzJuH6bLF}9 zeO7pC{4h??PkH5f_@2He_i$)8+7o;{yB+$G;77I#9G&*HFs~#Ijy#-O96p}DCtvi)biLUBGQT07my7x~zr91`8b7e2##NI&y>dS& zI66L=y>gEdoUh8ar^j9g^z7i}ja>cQJmcYaTwYlhf*(D6uRTWn8qQHix7ulKedc2# z??m3acI%1B>zk2}Hpe(W_4voUTInD0(?^BpZRL6t(4E@L}cHUZ}mBcYe<|tA~GFEF+adkUi;0(?>jyZ--|bo zk0;NacX;jMipZb&q{%+dM195^j`;pu;*6xdEby@~4w-%+My(;%Vf-&Mb#sBf2 zO)M@Ioa%E(aGiR;pND;$L)&!jcIG|cd3NyRzZ9HQKk^%qr>=kfS>!s;V!4P1JSR}|GxKfePgC~v z%H3$w$t^zg3nJt5_qFzU*7AIAxxDVicmsc4cVoFtaqig@&j~E;Sy^vENnbuW*lqUk zy>erGR>}qcsWbaq`(tgnvmzhs$6S0oze3}O_^9uqpA2zDe8_Y0KXd)$;@~v=5GAyQta6lY8?%>=RD4cMk{sd&)j1pBm(B zN1(=X*^VG*xok&G^}@cUHCDuWyH)RJ9s<~h&Yz#&Y$UP z+1c{+>~K!Rv36j&7Qa(=ej=7@@o7)XpZ2tNrai5ldvBSj*LQ09dBW+f>pr#ds%IbC z!P+O*t|ERdPWG8OCAr@f`(~BD#c#q< zJ6N8d|8%fJdpI6`jFU<{qa^rip)+KDR9W}NxGUl)oj4xw{7ZcD#7`M-)}D+v>)%*z z&CXuABkl)l`+>=aan%(69v{Y=wFBdscChhAJHT$99lkieujMaw4EiJZtM|-d;-uzB z`inR?8a5tke(`vIT=<+K-|GFXQw5*%U)smmxrXoYM1Q3C!~uTfQ>*WY`>$GF>itZ} z+w_;=-)6bpjuX!go;^qG_gZ~D{BfTRd7J*iPrdO{<_(LUA=v=8k7ecH#i-`sL(HoCYN3j&oz9GldT=Ra>>)yD_5W8T03|+-u{12 zf7%xZik;+J-w)vFqrIg3#rn3#GZ%+;V0%+?OM;}8!Ad0wxtS$yRA)O9xxXS1(_aSrPRKYIFDhgZK? zeXQH3o`>M!bXy*;r&O-*fbm>k4g47oP4(?I&;M5Z@0}I)u`o{1Gj+SZT>oUbINIXu zfnrz^<_LmBjVJ`_1bSP z&cDT$IzO^}h)+J2r|lnC*l=R&K0aIDWxkfir(cK<2AszcALT|nRK~-Qd-lx5KQYb| zIqm|!=XYEu)%zAjNj@P?&`*`}%6J<%l$YvJpZ=m8cJRu5N$i;__n%R2{pjJaTRh4Zksrsz9--IoW9n+U-F0NJpE_o`6Q|S?mFS0+CS{!Y%k?*CC@Ub zKljPg_sV@q%2gc3zlpb+-TLIYH+yV0*_4Z4=9atKIdXlZ#9_HjIA=UCp(A$w>T80( zSZcy|7l)K_s>ZWGR(qF?U+soXEzq<{MT{aN~Wo^}rY)N|AK z59a#)oe_t2X!856qObc`XRm!79dTH0li$BC`qOrseZOB5aaeAX9}ky!)8~`0zD@bi zi?_c@xvA%zc>Y@WypYdXZWB*0Z{|^i!$*jUFHPF*P0=wx6o|QOZ4IqrO5O&tDEK!uTY&++q8vTDj<_?kpyl z^#PM-YWiM%hwZ0oIOwN3Vdr7{sam<{rye;B&nePBjMUD<_EWWT(NE>HQ_s%FpP%0E z>ct8AyH1q*GxxSfKU-ZAaFOmKoNjwkR|JMAA{x@}BiRTy3zr*&wwQ|w_ zuD#3b$MdlLZ>?PPzq)^ncE(X|eTVITYvs<8{iUhr&)|B5%58t@@mcnQbU(g^$Tgq0 zhr@ZRwFBqH?csPlbMZMZw&MqHz4TjBU)?`X{us~v$g#ukMgD?(Tj?{7Lp=HGE==dW z<)fVT0Rs=mlkY7!AChl9pL_aP$Nok_|3@Oz{)l`q?)7jyxrdMYzuxgJyS_c#I=}K1 z67mWC6ra07Iqb%Db@~xUSXaNTR_;`h$946}x`&9%>j?UM0GzSh?Jko0VdcG1t;=5} zAK;%S^6$vE`rN!_ME(zv4PI>JsPA4PJ4n9u_&HN#if{RUG0N!|XnaTH`rIVOIpjYS zxwc<;kNj_nIJ_tphx^guIXG5(wt9VCLzc zCc3HT&v^O|4X3Zg#`xLg+o8VthY(j0zorlSr{=$&KI4J-hzC#qAHt{aQp5@Mo8n{> z(aquWInmcRY!5%zKEK#6y`JFJm+?kEh%3e$;~ergUl#HbCHkp$L^}(p zeBgK38TL%IYuF(rM}1RrufE4z9@;7Ei=z`op6X{$7rElIzR>?##9_OJ{96%+?YgaY zs&r^KiStxmLi=5{d>)SeU`YF|;h_Dd#-E;j(0+6D=`Sr9e#DW7@5z~0Ee_+;#v$XA zerd8Z?D@U8S~P5N;^L!0{Eb$?th z&~i(fk*7EAdT}u9)3)~EeV4R9GeeRHlqYx_vR0Dp5zbvbekvbL!M3LcH6(?L;G}+&lW$B{b2H~=K=bccCh{> zAKQ-TFL77pIWwFOTL0qLIzDNtmlucRZ{v{sZ5%Q_ZM~QWSTFEme6n7aKkL=R-+SKU z>lY2{%;XOoJQq4OPJ8=?eXVsHu;aKcSMIeVFW+9aPHX;Hdyea|KMeh{wKMYVsq(kM z%6&{WPOP0hKDpxuKCcN@RQteR9)7OAXCJSh?RG!z;luu4xO%Al8PBvo?8EqHoWp*e z-8?(c?~G^oeXSW`ehO5!cf|S8^0!y&y4EdDy&j8l#vzXWC~|$Dnzhf1BEK!Mf7qL+ ztbR?fr^V-dhxqWXXJ_!y>-g{r{c=mhw{j21lfU&x^8Q(wtB3J?SO@U*AG&pNavjgr zch>PdeQ%x0(}x{W>t>$5x6bD2=koE^saCo!#Dn!0*FCJ9>kL-z@$}@m@sE87y8g`g zLB};SF|OXkoEa z%;%N$8Q2fkS@gNAIHNtWKVP5IZspjYuX2`)e14OZsn;>74~;uTp4y-AXwp$Z4YO+ zOdQ20AMiX`Fv@*^<7l72Kc(-z*Z7jhCh7WoFXJ5TI_#rz+6OfR zAC;32Wdd)OY#a1Aj5Dd_q6_y;}x~YvfzqPlA3N@(1PHuWpb1@AHoS-$g#* z#})_u)Vv}~?UP?fe zC(mtP=r6Qgl+`WypkAK*fd?lRUl&^pXtOBwR~G#P{?@V^UOXkAV7L3<6XdiTjt&$3 z5@&#M0-TR;Ke70M;P;PXJ4O5Y^DW^zg--nf{_0!xC-XC&&zZ^t+y^3{@(DOmKF;DZ zFOfg&v-+l!T6xUsuPbsb*XnN}@-qIH9#_^Zl)ID2HLh4+;O`&x=Nbo72mPa>zRgRU zzBl-hc?mef#z}4di~6SS(~S11<>8%g4fdD936DL9uD4fk@DjQ^XefVoLHPBeN}H| zp8$Tj%|YS4IVDWAGp@U(^l^Vss$G9s_>|+Q%D5f)=ZQQue&+o?w%p4$3H`5?|K`9n z&&LHnl|Lt69PZn)ICDoi;{-haBsf}M<_*YSjB?wK{t@NSqWybr4>-0RO%!=)hd#C= zFjz?BsebVFQEqv@CCbZUqrW`AAYY~I^KQY>=kT+>K-}u)DM>y%i@w^&mb-hDTb}Qa za^k~McU{)o!m;-3HvUP%NAIU2f8_s9$#^nVFSOrOoL?n4DS!P)Qz4P zLd_HNE$pUp+6_mro62c7$Z?-(xz1nDlcJxh7w}W}4+3B1#0O8{D}OnW5AsalpR!M` z-+})zv1xyWKjH!QN!c0rsXPh(Dkp#70Kd$K34Fbu5w+5K;g`Tq-RB5=l@lLFz%TE+ zui!%t{;BH)z)#%|1^m?d9`H3k2&jBQo(Fy^-hiKK*T7df`3L)GekOjfzwS4t9KQs9 zY9BK2RZe^yfq!|QLc%_sh=1e_#bMr<6YT=!YI|Y1bE3U?c@lQ+W;;T;+P+xd5I@~) zUnp1G9m@@I)y;N?ay~c+bPQpcJ5|7MY-C3S#Gei*M2*Z-#k07ac9U^ z%s;RL$ARz$$5(j1Q>wr4#yO|{D9j_6uYkX)l&j+(+5zQood;(um+L&15677npW{s8 zqg?XD8S%aGtv6pdDB8`IOa8W8^0(!Zza6h0FZgO_j#u%^vBr~jwmiw-uAAlZzc|{V zJ9h3ApIakO>vzV3^*iIi`knD$?MXXZd$OID;T-29-aKXU`$K!Q?Z}(Ic=Jkc-umrd z_b10=OWqa6z2u30eAy@`AIRS!^3=HN@=elm&klP|2>FWm@WlDw4gIW*D-Xw$6UX8+ z&sh8;q+Y4KN59iP;7Pw*{3SOJ^KpyMa%~)*5zA#9q9o5>%-fa^^EUYeoK%0E>qk7d zAvK?ZJT*UpJT*UpJT*@9@G-7S&DV0v1&;EeePD5qj~7>Od@;S=xMGxBzjq4f$h$+o zW8>$TC};fO$XiG9E~- z|Mm2Nuj6@(@A+}YQDGj0)~4eYk2~LX7 zPaMDFe%n-BHR-4JOEl@Ho?k&bi1XwV+Arem8o3S|_SHiU|6*NQ+heI7*T--@D3xzL zKeAjKS6-Zt1Se(x_uZS{?ox3+5}Z_=j|3-GFV8;SymiFm#@c<^x#iOD%p1r*^gH{b zro80Us|jE2)*e1_=4^a=_T+fL^6{<{as1DA3VU)qZ*e%Dr(f_(T$f3W!y!+N!@cV` zkeBgaS(gSM$W!Y`keB{S=%=nDKtHuU33+PW4D!@Gh3x{hXFklen>XL_=HtA6YRhFD zTKOww9Gg2n!9GtNpEC{-C%HH=pH%KA9SIKjXnf8-AB|^=^P2m^Jj?p`z;8}YUiZQJ zKx&@5vf!lp-_1pyYNwE=+N0Nxzh2&7nZoz-)d_;1nn!;k%4r9TE7-nle*UEBtNr0U zw#QG4TM8*hv&#+!{R+8^>JJ~{Pj;-fg^gCqK#d?3%A$9erxE{@k9 z<>Gk#Q7#Vnr1~R{GsRf)3GtlUk9gx8;@k1(M;-|KZCEZe4v%u`Xz6wZ&Fa^pH%CC`A_uk>KrPOja6 zulBU@&?$QYKd0ZxwKMQ@`khYM|MR= z{D^YZzbv<@eKFsb%{{hv_+9y1xt9mH@4~hV?z5sGRlz4)~~?_JJIHQt=EvD!2IHlj;}1N9EK91Mo@Z zEAUChIryZ;&)}nSi|@t%O0gdi67oSmh*eN#Nihd3yge25eHq~Z`bsW{BdC*Hmn>~Be3=k@&V z?Z?A?WGS8;@7elNUYbAV)vrCAUT6MBlv{gV6y+8l_w}U4jTncd@)h(`e)PsI-hD&R zPqlaGr`k32Q|-~?kN5s)y=Vu-VQ#&ElWIq~^#xAK@40pWPAb23%05Rr`KMEM1HRhR z#$l)I34FElQ2d;D^Xv@#R6o*f`{TV`sr=tpvFXTPM%O@z%+6alCc%TpVwmJa^v?_-H$# z{n0Pv;((9#kF$s4`D-M6blgrph__rE&tJJXp1(Z5d;5rQ_ctR%Q#Q$<8@fzb(=ruxt2fcW%;vSmOtx7{3edozh2_;FrKvYCXYY+FUz0(m+c3ymFGa}{iN&%QLj$%@$5;SmJfN74>ZV= z{W5rNA@%JMum$}LaNzj*Itil-MpUcGLM z{2346|4@|MdXc}4hbJR{TQ85l$J5jI+Mer z6mLDxKDQqXJe-(K3xAmpn7(YO~I_fiiAip8X?fz=ob28|} z>rma^2RK@J`&VKI%@4FQEcJYp)6S4j_<7KWb=V%KL^<0X^m%_b;{kHs-_3Y{Ja;^g z@r?4f_+Gyp^JL||Ld3&Lk-wbCCtUwsEy``Z){JsnF7mdnm)d$EZ>yYfj`~JEeY8I` z))sv2FRcCF9p#L3;7p5hoRPoRe!b_1;5jEb`HJm@^}>-C&$;>baH&^n{BwfHQ~kK7 ze{QD!7vu9V>37u2!+${V^}avqn+kAGhya>ciCwQ!U(uJFq@M0~~-(vY6+f<(Pa2^zUYW}f2 z<9wig)!V??c>3 zjfW7%ir|mK(U;Bfq@Tj z@b72uOF!@Wq@KQ3exUuKf11ek`T6$w;a?K@$%kUx%k~J1c=+EDedSMl99OBsBFT%Paagcwukh zCY-Y}aZ>lO-Ygim$#zAcP{x^A#Lp6Sy%3UksSp4lop1O~IrzodBjt~zg-ZNJ*SL?ke=ScXX z+&x4;70*YB{8;(c*MCkFS!!J2>3>o5%lNN6UmbkDBJy+O+h56(u;-k>(f2{nKJXCu zTsIOvmHRuI>h+Ld|Ek2dd1F?T!y9am3x24-)voRMWLW!*AwH@1H+go3eO@~g@i5dr zDj(bS87;pwmD^4GH6}3@F5>D|5xpk>^JY1+?Hw=UOYg*^h>4REF<7My~QOP4Smm-hl74( zME!NGA6fcWE&i4JVG)OzH)*{X=a74R;&`Bo_^G@H{wilX!V&nZoyi~aT>e`*_W8)v zmVNq&U)t^0lUncZW50&+EyoG$_c1QwIDzXDkaL{C`C40fre^${-wOazw~WKJD>;n_#ak-)i2#do4Rrq4NoAU2y)wkPzY{Kt^ z-J0-o=F71i&1SnGjs&-S!hEMmu6Ce4A|^MVBX8@th4D63aCUuWpqOV@d%Xbpp$R{g zZ-KAloc8c9J1ndlNMZ7U9ngMr+!TxhS8}ylH zz-KJtm+?^H4~u*Jy|~&V)|ca9)ORHMsrdBpz4rM0vf+Kum*G)OS@HgqP;Zn%&{AImh+u9d3y1-%x?yg^V7by2Z|NtZ|z>k9BVk+o8;<8WC6yHSFUHbZtHt-JN~x=#oY3(&O1;K&WqX4q9rrGF&{#ni_dir;v=uJ zT#LVwaMb-F%qKW{yU5p*Z~u7aTi|&1yzt4ee}?%VIC~35xxcQG|3%y}9M3*yNVzHd zv%a)XsIRUs(LU1}czW^Xt=D;Wn-e(N@36i&^6d5#S@%w@vw8IzO`KG{*4iOlZ$gx5 z-atf7yETjtZG1-k+WxU7eJ!_yFUP&Gr>Fm}-^KB5`GYWCZIYMxOIUm_e&Tqq(m$ex z2THk}*grE8oRWWq59|Y+PVArY_;4M7?YEQT$!O=={Bbn-XdE)0o9xW>ilO$&8BY!y zhh4JISS+`j_8+#smG<>YYVTfuvGVW3{sG1_j@FBEL^tz!r*QTZeBI~Ic7gH0XyT{h z3U*LA?SP}P$Un6{?D=sd{Kt}gn&KpfXA@42J?8{YPQ5rEMC;Y|JCboV=Ft;=jQJGf zziB?=jjP8Rj+f^>{&BpjX)>-qd*jcj-=*>G*PcsX|Gh}$sd>Z?L|(27O|X8vQRKQV z#5@fD-Ys%n-$qtu{vS!XtiFvsoXCE`;P=?l{F?5{j-U4j?^o4-_0c=*Z8+_epQq+&cQ$0XM$aaLA>28 zzv-_$pWL<=?)QU7bM4Sc{@-|^zvv%B{51~@wZF=T+JDLUCMWs-EyMm^yXJlj+wR`7 zbYC)l?!Ioa#!u}&h>qh=u=Z)fPvwm!{we!6;p=q=YoERTkZxZeigNOYN1r>rx0P?L ze~%FT^0^Jo3FSJ#9sH|x;OI`a5~Pvw(oQ_`KQLuu)oS_e;mR7rM$u)@+STopF{1h@=>yX zZGUnTe{JtW`K#RWf2G7p6VI^}4<1kNzRuPE7}nJpw`jldI#e(72F53t50=-JCNOV6 z?v=~=BlFud(cjQ1*UQ_xiGFGxy>FD0KT5)VPuJWc^UX@!V&B5yqOWmi`JWi&Hg1vM zw0~jT;+IW4Q}Fh2)bF$p^kJWUPm=jvoA&YAsds&OSbNT4|HkoHFY^!bZ5)sFa@+;^oBkBy z1ZTS5f;d?v%I)*MIDWIw`x@2`6+gBW=d&4CW6=(y5znwgng0{!BCKJZ#4U@&55zp1e}@%ke!NB=y(RbrS{8+fTnmz zjeigisqs&f9dy1hbo`+5*^dXkAHl}Muz7M0_ZQ6P)(*q+oWtXsk?CDGm;Y(A!u+L7lkvW!i$s2ndztu3w?` ziu)@nafL%~KgJPaAKh<8`(S?ENu1LD6+S2_myb6dyGZ!!b!{ym-1qnLhg$2pwf#99 zPjVdw?T+I~yH3@~a&>$%v|N?ja<@ESpm{ydprmK zFRU}mkL45gd(SI!y&sBpgB?bqU;4MQp9lU0etBKB^1RBX{N}aC|8)6z5oZfeU5A8q zxW4p_XgAsiN5|}tUjMu!>X$Il&L4YrLUG}H@cb*{zz)9<{nUPpPU58elFR2!FQo0W zN|du+h~W1|Iqd-Xc2REi_lk0xf2O`=a_c@Fwih7M{%kKe>XaWnoUaJa)b)jn9sb?M z`MH#<{-r%(L648;7mw%Uzl8WCKJ2`x$hEy#f2|PZ^jDK#y!e?O%eDAhJNQRNxsa1j z$p2oPe_Zs{kHkj}#~RKLg{O||XiwD7i~l=B|7Y?YsO%eAxP$c?O+Fgu^cRlC8Xv|R zyrgl6Jio?^p}p941;;!agZJp8dVN>e<2TABjW1!@s%x zqgU<^0~%)?`?-vl4cC)U4Szvqj}u#nF}`-&MZV@%hstf0d6ur^~aC z*B^abY?)g3n-T4A7|Kqy^ z-?Q5*1!sS$({Z(WVIG}ZFAt|v?fov{sCkV3MV|SY$e%6wGyhBz`Dm4!Yqv%IF7LyV zZ#Aw)V*gwmZ(e+Wa56J~kCuJB@#Nh994Ho*Z}quh>x&~tOMge<@_`y3#I48Y6w&=cO&@Xc zBax-XfgIP__ItbNKVIT+Trn1La`Qav%X*ke}QCpBO5`s;5=y|iDp_3D(q*T1k`+xUD;_@u@^Go$@& zzd-wQJp?uJ`2R2R(RiSJU~w0|p)+&+lsr z|LO9r_IKL}PPg^F{Q3JSeZ^O5e3lVDo6QL8LbNj?-s9=TGux5HVZX`zk35!(f2(lU z@tDPDzayaX3HkHaqW|YweNk?=^*#GDZW&jwGv{BnUhDp6px9Qv1C{3?G}-NV(M^qq zPZ9Z7OB~|k{ji?>c|DFiF@C;AFm9{iH1WyB@$ANNJNdwFFAJB{^H;|jj%VjJioxW% z(}qz_f1$o!y%^8dJ_icUaq_Ls%T^eJIP8~&oP0w2J#+r>o@>?%N1WGK`^*WPRKJkR zXIxM4ds*FB-$LGRI9a~+{at^QcODMNZw6cMFNS^45587psddPuBR-;r_Uu%->t>d_ zb>zeG0GRD1@?+&YP`Mumd^^cg{l$I<5#!k>m#5dRXTM*gV&466Z*Wa zN;m_7u(lJu1~Qav3!nq_?#K#md|-2PpzBf+UJgl zWBHJ$wGY=BET0DiN8j^K`yhWl75Uri*NhY1{{lp|NBmmzD%#_#_0sEZuM~fI?R{W; zXpc5;FD!EHXBmgkc$3I=eTH#}@$gv0Pvv2czt^vM^FH=Fv=7<~`#ahPcH1i2lkF7p z|Aul?;|^Q7`71E8x)1z#)HVaa_$fXT5O5an78_(Rd>tF!1`lkB$H%+wysd+?f0SFld-z^`&yG0OZWl*+d-&e%&O;`yZL zr|LT^;#i&&CI)@-gneEsa_xT^&rRiS7WFMpuRr?wQ(@k1^*O%=3-%Yd?y2`ZQ6GQz z{K)H2tQUUyO2XInLjLfamxq7k*#Dj=w|@6<+5EE`}~#*qW%>5 zHRH`|k6ce+9HPFt_M92Zwf6LIyz4=^hbB9Z7LM1B_MIH^k_3l*!aVWND7W?XaJ=@;b!OTJ zk;**4ct%O5#d2*te=f=y&(OF~8Iix<)-XIJCG0Rwdg>wkCh*~*+jiBdt8r+hebCJ>*v;PO*k44#KA8;9M7K9glBoZ zzVckDvL}}S__?lM!sXX5gc_8ZRw5j9|d%Ah!u}R6iae0*6ys?RtyQO^l z)x8lPeoXaipN;v4@c=%PcWL>()~@#!`Epy1E9PoFm-{E8YwD%pAIpt#C>uag!ieKg z{GN=@OnELJwre5Z;t%_LPi&mB=M0hm;P-f6$++>yxAal(8=^k_1-p6pzl{3KC(wVU zL-=01o-+4fF}Hl{d1GNu1A1uWu?2byql+O_8wuU$v|TDv}3 z>{E_IYIz{)d+nvCz4j7uYUOq+pFAKwd_=x;I-kUPdG={DpLjS?UbEY!PM(bVH9p+u zqkjnV8c#nr|7wZCeUhv-X`L}T#j=XV*=%(5)^FQ;F&Hwl{ z`+ekp#ZkkB`g%NLecK#|csQQ?LaEoKs9O#H`%Zm5oO?z8D#>qsEklQX>Zh4F9{xh} z4i<~bx9-O`i)=N>YjL=?$kvx{eIM6lI|uu-zlMi8h4U#XQ}-2@Zjb%=86y9ZeCu{T zAF@Qh(1dec298&+p9w}Pul~y6kiJ(E^e(8PAua52sMxOnn*jKUToKv z4{*xyd<6#@xj3F*zAUy`Ww^;Sk-lC^s2jsUqqMUYs+{6Eq z*deuUxyr6-f4%J3*~5?atmLt#cK7^xeaUz@^w7}080T|Iy`Z1+uczi2N7wt=?b1jL2UpILj^+;>6bL^y#g2_{wuvtlgMrV25=g4z$>BGEOYM zx37lxZ(986g1@zVtIvu0v6S<_R<0LUpB3Aro)hKiUmE>o{c^3y^}b!UFZkEPc_`{z z98aImQ=&fh-+FmwG;vaShVd+<n=RTjLQ{{H*`6LHOolcT(b$=%8(Mg`# zPU&|AWd5=7*~#Zo+*;a=>)yD}E0>QqPUzJ0D02Dqy*9K9+kVNDenej4 zcm`)|N8a-&<`sOM7ufq0ygcCL=Qu9yBhT3ym(F3FVaKHvKCmmt^Va^J-98-cY~%m1 zD5u@vx#L8x^F-p~mn_%%*DKe{!(VmE^>8ka`j-CB6VAuX{Y=HQ0IkDDN@yT>Ucy zNB7|r5eM};H_C|*`TVjDtnY`F6ZwD-c-2*PX1sF{wgPb9D%>e$sh7udvYCs_+Wr_kDT$t8m|j+Zu0}} z$?+lZ=`Y^z3_1M;Z_~f@7w>n5{;TzEZZGg}Dt_SKRQ!13!zTYK4*iQrVm#BokTag? zU&tBH^e^O#%k>4FU&x7kkROouJo&j2hu=gjj?+sF&_|qH9^(^d#JO4Iy1&TkbAOT5 zeacn=hhR9bxU&cSR`;y)v z^0NI_@+TNPEANF*^=lX1-MT+TX~urxQjse@`NJ={`hBa1ehR;){r480`^mTZo_GA+ zlbD1T9s5Bv-K%cR`Y{xnbDlRqOkOWoNMulH>!*p|QLIV;w;J)XDU z6Rx*{J^8a-#Si7KvVY5NmFECMsiPHk8cyMbJ1>KK>MrRg8gYv8_%B*>@!My{95a4@GJLM;_vYL#?LXXhV#qv zyQi;%-z8eF6qiVk81@4kE*Pje<3!_dIGiJei{>l& zv3y`R{E~dy!#P`U)Gw+J9Qfrtk*E48^3?bbJag;y;h&}L;K{xGLw)5R?CI&RvP77V zz-qLc#~%?Lms9+@L8_5qfjpUDN&M7@Vh7X?BLmr z@uT>`zaGx3aveXsYKPIa!{SS($KgvvIolUnls67xzsdd`?a>>b!0)=B%Hp5@-SjxW z2`4qK_HZ_c_0o14^7cki-X5P^yLo)rk61q5{H5DCO?Dm)e|h%Fjh{}9e=hiGe{x>- z%rjwq7*VhN3y#x3Sk8M8d2v404(mtr+jw0V(zSVV)4~zW6QBFHRP8`|+8eX1Z z|3VxvI9c#@J%l(o`i#gm|66-@8=vteB;*s~ljDEOpZVPKzuMuS8=tv+9*}Z%9f^Ek zXYfp|pOYu!0Y^WN{I$J=cJy?_=lUx2*}imrHMI9m@-OSvXXC-+Pd>K2j~1V?XwRH@ zm=pGVCG#1J{!Lv^$!#yW`F7`9!*yYsf6(r9{a=!We2`C&Nxi(%i4 zp5s8~Rn)gr?I@Seb#ELjZkKO$|3Cadp3L)>r(MT`-L!wfuQ?tbO+StXpH8;-vDPj| zgHI>zsq43lPh=u5K6Bd<+e`cHy3E5mY#eqx+3mdN&38DjQKDho%kiqs=eXXQvNP>z zalC%So9{R2r`CmX>y@jYTi?xOzO4O}jl(mR4)dM%?32sWyRJI_1Ys#ktomIFGh=?i7CyKel%btC-*3`lfW8zeD8vo+QsJt6fKi zeY9OOevn~vD9U z2lnB*ip7cRdzI_UVCG#HyGqJT*{4Zg^BehqLDa9TD?%gU*Y^LgKLtC^3%Y$h{ohjG z@_7rbeKlb|!gWhK?j0?j-nuUNa~%eDCV#sQ(<%O3zhyrHzjOVT<02f9r=4GrXLsz} zDW0@H?QHisSUYdMOe^ncvxxa{=P0-BC0Bp>b0+GzqK5CuPnUB0<=sBjearCI%^SAH zZ<;nD&qa1@jaw@16e^>|^8w-isC=vI(n6=mm2=*$h70SHm%l$;_W>%`dzn}1FT}G~ zF7`()z3kBICdk9rY=HfcYG~vcTp#gp*xxzjR`M$NMw~X~rwhl__&MTK`f=cUcJuVF zcJPU#b_n+OaDFB@IXHAFCdLq~OxAFPZR#RGX8z*}P{fZqBG5ZC1<$5mU%x@My+Ox*fldt=Mu-=R4 zEltKe4uf9)F&St zJ*f{e1$Z-P8MM;b|TkbPb z?r(R%{bIBme)%Vnk0_tl{5bID!Q$t)VBf6rdCxHXR}+1`Z-xAu>g&y0x$nZ(7wb#9 zkBIe!hG*xvZcyO!2ZzRRB-elI2nRdt8c`w$^R`pQ{(4JD~*tU4d1h~$H$Yy4om!)`~Np=*@5d7Y)3d^9%ehj z(Z;b}N;Je9?Fs9${YL**`~v*lA`Z*NFFRH4#{@rhU7%Cto-Fu!UxwBfc9>R0>)p0vN(GuS`s*Xngh z;8VjnBFgC(;76RAzGoluvGL~NEd8s2;`&=@=Z#x-z9iaN1o8=a=96=W`#LE{Nqn9L z`NLnl|BG>jqdOwL8YtjDCURY`X1fL=>t);ZzePWlXLui|@iV3y(6#cF^p4?L7wx0<3id(&d)6I@bH(3Wd}jUI9)9k4Ci=H# zfBMVXpYk%S;yB#H0iT7+dMVCkt$NYU)}HjQ);Gj$?){h^AL1*Yq4?y}WdHS7O}A?= z&uk?68gIl0gP5->^I~XhDf-%vFwa;%HqUtVh5fIXAJ1jd`kvUb|IvcKl|0kDe*KsJ zZ7<%aulU2Y>)bpR?Nf%^X^`S{IIZgCKYs-M|jYIg2axsOCX8i&DdKZ|nBhe7_UDChNJ{F3o(uNQmm zh;e1(+4GmzemS18?bpM3;|2p+dBDSAz1Y6Mfce4to%XTqYx-(~#isJDuggVwB|i&% zkt=6j!mo9_3dY{$#trk#{}xq_>4Qw|p)WY<<3&@(K3$$|VlV#V?6t?djow zf4L92@?0s5 rx^BjJ#u3YHpZ{8i549U{+UK9b;r>SAfM=)dKV|j7VgdP9{Vwpu z3L;C*zgCTM^1;zYQI218e6>TATYaqWX+KW;L*oF^Pt6M$hm2?Fb3dxabBKSAD|CDw z;_Z`ypQ`U?qntcZ5Aa;!!J+FIXUBRmPVh_cEcN@yGsK(PlRTk+k>HeZIG*zeSma8P z>;8FO&jrp6QI0dUGmh>KIDLIl4xC3tuIq}to{MsS9_4yH7j}c3cIz*3g5CIhr&3(b zbFDtkm{;j9t51Kae(=}wYlMD>@c;{wkJ>r#*;e#RKWcSLJ}4=+m&!gUAnqvoss15{iyvMkOeR9Xckx$M3oZs1a@bV1X7vll(%=X22 zfCl`l`JDWr&wS2yhhIJxbW|MTjd|(*2DR?@YK9v z?cm|?{uCiCpU{q?oojw!y%c{qK5t($vT3g$vKB^!5b*SKIUQ&6;w;vVx%zHRa*iQb8dJ*6H{SWVJy|1B< zIAB1Y*6$w9x14(A#xvT5jt9sGj9IR=kCz8><v+H zUcIJ?{(I%y?tbt6L|6MGEg12GJn8NCrv2?a-QyGUMrEFhnjmka_7xD{X?HdI@P1_4 z2XW%fLp^+tKkWJ4OnYh`n>~ASoG+D;PZ;MjPFP?3eJqauQ{#tjuZKtb)Y`9?hdsZ; zo;uH^ox}KF^OELIv=vw>{O{Fw)wSfl5Bb*DPqq`8j^`0I zoTu+2a_vW0UobvGzKEO}yC(qrF z9r0^vHvcL26yN#b~&rbDs-7XjTB-IacTx8qh#C6m6P4|mDHU3;E z>NB2!xLDL@ydkd8PE-9R^StdhV;)eLc%3CT9@ZB=`uu9v7tg7FY>5fQi|>}_Z&cQk zEl={tFZmpP+g`}W&bxP!a#QO_)K@+s4^u9M$tTE9igs3cn5TGtTv_t1jx*^O{F3-u zuYm8hyH4HrlzU&>rBdIg@8WpueZn0Uzdp*9e~|MzJoL*nQ(x~aW(e+rtCayoYe5YJ!wj@M5VvmT5JSQaGa)b7~;*dn|EI!`B)sU zzT25#owiF_4zyR zXV-WL`N7lY{wu40;gb`K)64svwO+_!sMo-|)AP{Ne>t&OO#U`lc`qc^!Q%7%`q-a} zxY*>6y{-O^*RO%Uj$o`W-|G6n%2j#AFOYlnjW{*^FLQmk6wLaxwUmUZ{3XeHvg<8eAbh1HU7cNlQVB< z``uS`Q4>%9z*t|~-if1j8x9BUUDtVtgQHk(C7wlG$+wp0ZNlen)OU>QKiePnd$7K+ z)I079>j{iE*q`=v{Oi^i*5Y_O+EZa-KYQSY;XUKzgCmZ^Gx^l;_ue4P7c4%m$EC(C zUVXWKRaUFy4@B=iAnxzAap>WEMtG*KAAM2eDW1f)e(~@||(2KyFT|yHi~qYtuIrz)Gk%Hq)b+91vvV#_@?kuH&!NIo$Bo_LNk4Wc9)2SH^?Hg_ zMm`~)4_`EWAMT7OryVd3{Ql3w{(0N({vi0N_tdk0wDt1%c=5x$G&IijIW1+iVqT@b zE%#~}SCr4SQ~ISo>b2sA;rS=35Bosw=|8;pK+B%g2ea)Xj{RsPbd^irYb{=bdrcN6ymX&YSK2oi0`*g}*xqQ5M zqknDOde?0|9IRiR`2gc~XR!_9miXGfLci?ccyhFhpZ=Wq9~dEi?)5T{k0;0dYpH$X zp1#-K7oVOUr?DNey}+{Gbt2l|wqK9WbSd}7hhb*{mCvs7g&*G+<@$#pXaBLs&1npWn+%x$Ap}3r`&{(atuWm4Aq5uUs!5k`L{M zBkwtQMw|+d_uiqoYZi<_KxREr1m8eUx9|hzhCUH&&$<# z8*co7b@ELs`QiOyOY5)p>h*6aH#JW1>=4H%m33_NcQGDncFS$=sF%*;6ezTdH*Xa3 zLwoUnyfnVju6JqKC)TS^1o8=X_Qp%hKQ?Zef5_9?UwH<IFP4j69w&0O8|{N%a=gJj0}Vcx+vXXLw{4z@{A+fjzVaWgz8((zb@1ct@Aedq zmZ!Btr*Qr+(=Xn-%DZ|6=3B?bY%xd6JK{n~huA&F))^cB{oFO1Au+HY>2k9MnEH$)`Sk8CeE!af$w|7`&+g|1vel4Ca-z2YJ@OVCuiSv8W|BHO< z*QXZQbg)=LzIA!jukeR|HW%I0_d{fL)m z*dE!Bpj@^`@&tq2`5@;D%5z`A01nr6W4>orGUJIr+4QgYj@` zKPqw5K7s#C;gY(qg!|cOXKRO{IC>ww+6Q?6Ek74$wCuojE%L{aC*O9nw4L{eavO)V zzv2h`$9YgKA9`}$r*Hj2eCwBpQ;ARbh59zGMyy}s&+9&!JZm_^^6a+$E5&XuPaALB zZ9Z7+Cg1w?eU3k^znI5tTzNQrju~;lz{BzKyyy2zh5HW^{C_O6d*s{SS`XPz%0#{z zJS04a&1;VuK%qT8Cm6GUUx_R5kMfG0As@d*Ucb-rp%#EV31;5B;}>6^Q1nR|1C{rU z&Mo>JU)g@MiDzoR9LG`CKHypE*WN=kCwS`mE#n8wns}zxspbUFSAsoxKmORZC-1K( zPaHM*eKg|pReS3EE;ldn`LW_u`5^BhKQoW1-$NeeeHo>CsgHfaQC`WzMqbI=Ba!32 zkJS6l$W!y=a6EJGYmW7*@dr*$p6L|MrdtjcTgtcI4@P;#{_v1@oz%0Nhm$Mk{wSL_ zI6q~-hNFw5PP+ca{@2DK&N#pG_;}@Fy+ZxPa>0yzSgz%xAglC${Krx%Y@YAC_-DA7cII zg@ion*YYIRTXda-?FIAkh2Pg&PpGVOBA%BPc`9GgkIWm0c&@*3oedhCPuclGw|UY& zC9{7(6X`%m93GRS`_GF`7@-bVa96>(^19K9fN zU2kMOh`3^Z8xNi0x$st@KO#@mkbKC~^0D!-VZ?zJuQzQGJLQ67Gr zkJRu#n~8sG;8}?i*ddl%!@t+Te^TVBeL<|3+B3u_*9l9r#qoA5x5lSa^?k$E!S5^= z^=13gI1fBMKJk4$HTz5x{2c#!`N4aRD9Y9K1kDdV4QSQyr@8o04 zwf6Vo>bV%7wp{k7v;&U3`GVK(a_funQYzjiZxiCYz53>si}6yb+?6uR_3WH0zgWsm z&0p|b6zwd{}IozW*Znx0Vklihe2| zGA~&^o*g=s|2_OQg=fm1?{fHi_Vn=MyrX6xwxjm^<>ANqMGc?rr9J%U$6EjEm3yXR zw{K+H4ddYx%5kp*t9(8vUzB`=r_c6Y(uwo>{_RF555#d=&A%%OpH%x= zTjZ(zpNw1EAF=@pwKh_Q}~- zAN^R_R}aSCK5#x?Nd1U$^)%5ZPa8kP7bW>X-{RB1_$9~Tv>T2%4rjU0=lX*!H+Nr$ zcOQX=!*)&n;K_DP{$NJ?*!cJGbM3}{mgRz3uD?7!xzE+XKB(0Eopx~irRFK)1nWGk z7wwEAk7u|2l8gWEH>K|rAJz_)@e=INDf^R;+8^x^_9P!WpT+Y=F56*fzlr`%pNpb? znJySW!y-w=!@t!Zla+PNo?|IKrY0@w4P~+M3+?$mC zSbP4@-aDq}Uk69I+6{36|I$9{->N-RapKtr<21eQ%zS0>ZJzY}?%DI3!ap?*VY#*+ zVZF3ngnHd5IJe2SzJF}b2@{gzlZTyhXGXa#7wO8|Bt79**bVT>bTS3gbPNizDu9vUc zO?r!Qf5f<5%RNYBO>xL_MNvK>PP#20EqmscJ6ig=`%maEjjP~Ck3Zkb%=Uta@vfV5 z9Lu=1@vM1fXuG!kug7Q1=AT-g`TWk|y$rM)+70cm?QS^xciX?6!e4yJkk3&|&UY4H zD)dLR10rCFsIPWFJm6^QsL%L;KIirA#g8|y@$Nh3yuwWj;J*TCKPimdt%NyiLK446q zv@?##ljDS@`;3}+rtXI#pE+;06rcE9tlIT5^6ZY?VmnI2TZ$+7v}ZTocSHY*d);|i zlOI#>(az<=xFR1LSM9ZHw8zx*B}R)6o~Lo+EUwcYEH*|BbDzV5`EMtlljHI6{EKpD zl-D&hzkR61pZQbcZAkvC#qC174i+!}g?9Kz3&(pe1Me$g`-0tAuExo51z3vx8rv!Kx$eaJ;+H3{G+4|d_li`X zPc@SMj?bmBeE3`%%ZJaUA)k@hzf^5OHwCaig^}<4Wy3BoEi@;N@Z1GgasYH>n+t?zL99~3_Nd`sE~p|i3xP0sFF3M|mV|%yda-M6;WqxzYt>Js+dUD36R8l@+Ji~I8 zXYdQ;76wWZG}qcwSB9ss7?U zBG>o!GB07AfPD^n-CXO7__6l4ah;gcuvElTQSseYkT_)T_B<@tB)Jy_hgFW&R0MA5(4_Ttz%H?F#^U$gUA%ZH=IhwGfu zsN@6xqJ43lllc>#{=K{xHMI}tR}v?>&dE5LCi;wj8z(4N+mR^A2j!w9;@fhG&pcr9 zwcOC&fv@pg!k73M4|EDY_WQNC9o%Ph@-WufQsXz;U+os`|kLn~Y~WUbXQY{q?_A-`ses*@y4FviXF5blOD% zrxW8|j7yh)zl=*O_tBs~<$EU?56E2P*!w{+;BR%6qx> z#kzs!XIo#6|80F&{6Oe`=`Yw}9g*w$iTW$}aU+pyJZnCO+}h1vfAstd{Qcw`o|7{a z-}0m#+KXFn+)fS6b|x={MRsCB9`$SEjUS3`YCe9K$W!zEnNgql2cCN_>NEe~ zh}Sikf1uCj6lwk$nwRW*Pdxs3FMMiU{qRdC7w5YE<_tE!$Fzh2zJD~kSpXJ&-=9T*f!AZ@3$%pm_KA#)Ua#0fbXt_iA*#6YxlDT;JxoV*A5<^ON3AAd9$89J^3?&GfTepanZnm zX}K5wo<80~l*(_!vF$G6)cTRP3ZEI3=j$FT?tvdY{cg)S&tg77O*pTy?Sl2S@tMn$ z{SnJ;vcs_YwfsPywp~P?ZR&g10T=#oXpfdZ*CA;)94#I7wcyZxnGaEWUhi8)^lyJ7 z;+gYb{GIi(>u=rWIZgOXTwC~5?ym=*T%Ml&N8G;J^rKgSZ_A~E357!4iDmH-U z=ocjv`cn^|c4Pd&p2X4k84ibjnLV6N*`IMpKBx)X3){s=?8f$G@!7uG!=Lw{@VqZr zUE3Z0Wj{rH@bvUwA8=~>Bt8A*j_pmZo2@B0sdY0CC--?B9!{tD93uQLk(t9>t?PG( zi_Ks+w3k%9xV~ZAi^tQ8EAGdze&_w&Hs7*+fgRUjymC>m)H>${j=y-n3CjgD@BP=b zgPqqzKDF_~>C1*VX)iuKoMGikKaRJfeocPp^z`#jJpEkxY6qvEdk}GI_VL>9ZV{(+ zd#u;qQBHe8!^6*QFP$nkx4n0&+&Na?T3mVde_8yM8i&I^sr3y!zewe5k7)U^UgI?n zU_6F)I{uJ=&v6$t*iP-Z%i{_8ih@yoa&g#? zSo;uP4IS`feJl0{<6-Sq(_iQ#!{oi1zE>{oZ0$ok+j@C8vAtBrIrybFZppPXo|BLo zCwP21Rj*TrvvaL~@z!&^eHY$(4(gT454mxYYX>hs3|nr^4$&_)dG7OnUJ(0#zno8L zKp!VDg?u=g_^EyDykFS1myz)ACVuXE&YFj&*Z-N{w0{iw4eNC~$Zx9snz*ajS7fPi zGN0FE?e@W_uYM2xFQ3<><%WKN<90hvZsL=&a}yucCm&?YPVxEV+^y#v*7BzpSD25d z`hD7=J-_6Zd#U*4YWTNuUjzI*l5$h__v$-Z<#x)>w2$_)L)uHNzh-@5U9LZP@tlkA z>Bn+wd3&_cae|#+kiVT@ zjD)AQJMu(CHt{U=d&m>|xje~Vek`Bi{BrHa6N}GJ?=9x8#UXiWI|})K;`(78#Cn0T zH@^DV;pyvur;9u_e>^+t6CVt&jQZBU_ljKeGwp^W-j757P7^up>3rD#)YY0xtFS$5d2+scF z`2NbHg$wL+jL1JO-}?2z`xcm#yk7kAU!|X0;_*S=c-ws3AA5YOT-h z;y-tu&OF2Tgy-0PZG2)rt9E95LW9qr)c8cZvvF(pRX!xPOx;KJh{#j-DS&56AN4Ke zl{m!xKC=Wz_fa#>VZj%pob|Qwru7YW_IP^o1&>Vge?yd$5B5Q=80F*x`5Gcu{x z*m6Cbr=?sSF9DV7y}A7P{w(@&B>c(8^7riKl{??jp}#1rRpw{p|JRB9ipqP&_ZFFr zH|uxmD^AeI^~9y-=XmCXVQ{wY5Fb95Qu(0Yft|T;&HC}g&xYrySbO4meVS(&hxp|Q z!c)f~#D{(O91_Z5&vQioJo(n2TXN`uy~X9FoaI7)d+8sqDdj8|a^6o$d>jG)_t3B1 ze+vA+mhz$aJ;y-b;!hP>s$Si;=hT_~$#%Vw@X_bGu)eSZ^N;#5P<(2#Z zoD&5UV1g^3ie;50+1RcIXrz`ip#UM1QdzK~8_!c9h%R|0?$RyL?;b zjQMcfMcgpyl@{KpJ590hakgeZasFdy9!&&X-f#T#tp)Ws{4{(rIR~DSN0&ASb zU(dmB!r37M=b6F4zob+0fjtl1Y+`XX#*O28WOYS(g7Tu9r{6!-gtPMoy~X4T4)8o2 z&u$C8X0Uki-SYgUN`DQWp8n0R8!RrJXQ;ov4_TAHG_0aup8I=xefW~cCaE8L*}mY% z%cGp_3-Tw$Cr`<@U&Axv!;h);=jTQDt4H<~1FiQfAx`EMoX>7Cu~n|cpS(*eu6kh= z#?{^;Uv5i`C$(Zfk-s(Bty6LC`6XAL%V+v=a-XJr>+RQ*d+q2Wf^npL2gYebh5c6( z+np@3RQxpIoLj@$ssX2|9gRkN^z0VfW5qs*D^Gv&@vZjTrv8$d`nl~r@~pM@lchbD zdB)>e(;qfJRNAk}54Cy3p;F(Yf~n+zf*R|#d%_<-eT2{4b6MEekI76#}J4A5_u|*0q2dI^$y9Oo*ei(o+Li!;`t<53+t`y6M#LRxouKQu89)kBFOJ~baJbm@_J$^ zm;Cun*nhlUPlW!$bHM)H=6~9DlUwtnq8urpUWl+8?hpG~8E>$|FU1C$2RL7V25@wK zL>y=|;T$6Kmr0fN4d^4@N_>Tnc?R*X<&qDMpkLxt^l=D%#iu^xovQD@mz|>PmX+~O zC+*yh*M#3;!7W$z~ETgv&AmJTLxGv$0h z&V&Bj1!%s?-w&4a1>_vIh5nUtzF_6=e~@#uL;0ut`=L_MYxS@^zjuYASX|Ce1%Uki zIXS;rj)VTHZ!U^&%enli{NI^!{vA0FeAig9D847>WtI@78|D0m75(K_DvBRf^gk}= z*H_N(mGhhAJe0SfEaKf#Ip0doZ>^j^BImcudEj%?Dn)U(oR?Wgg#VKBhvZ!TE0s1} zwJ3ffC*TMB|3uDzD(A2%&ZoXba-E#R2LRnw&i^3ia#;TT5;^~K<@{S~$X*3GU$>?I zpq#%=$On78Rvf;joDa7CzNwsVDCePmpOW+GmGfubDQkFgzF4cgW7jH*_se5+{QczoGC3EMm3U{% z`Q?@0|5VPesOZnLfyS_iO8t%H{Hm5d{PiU{|6%2Pt!sOV8FGF+3?zS__qv{9&DRvg zWI2WYx8(fYavuEqxSVe+=K+6V3C2w;=cmZ|=5mhu;P*S+*i&pJ=ki~9eukXyS<(NE zobN5?qFVla8wuupm2%@m-8bl`gh9tF>)UG zz98oxt(^Z{8q4u=9^!wAANLd|%Q^Vqf2Yg&sd665e?-ndT{&M<8rNqk`q#_(7vwzf z-(DKqSLJ+>7T%q5ex;m;@)o+Ir?{r_`?KWydN~jA`-GhTSk6QFOWoO1++I0w!NIAeZwDk=GdWf9`K)*^CK$f2S46Z94+VbwDg~p^V2GS$F=7(zA9Y~&-E0S$oZFB=f}(WdQw>6bAz03P&uFH z`JQ50<@^LW-?(y)XI*V3=b`-7BzbNj=b^lB$oW>4bG%D_yUIDJ$1_aUmGj$Mf5$UECJDKKhi3*%mh%vAxaVbVIS=;4-og3g zJoE==$@vnMzhe);QkCCdA?M4G z2R=tEG_F`n&OJjpxZ)r=5Apq!oF7&>-)-@6 z#nEz(_KN)Yu$+Hf&O`Ydy?$JAa^?JNIX^|t1OLCs`DvB&9p5mn__Umd@~@Ng3*{XC z0si$%jw>#cbMVLcx0f1MT-`bc-@8{HSKK1!N6FuD{*s)pHUIx}br;}qAhvF$Ir{Q~h}vHa-&azlJv ztoIE5FCQ73+AL zD*oj1PVslK#)z` zllYccrf`4zrDgH>itTNE!^Q8!cK@w^i9fiu&rwc}5BYXc)>QmiE#)(n_n5C@J-$uE z9=V~={+uE9xqMd~%H;$VWPTKDy!FK4UHR85dQ3#I_Gj`+9ur@z`)~gbD-roN{+Hqm zVjVB_t9VR4vDSY=T+p?BP*sm9>dGG@E+N+VlU9@Y&s9EGbvggVy1%PycuWnk9>14= zcuZrlj=w@RJ*JIV>zgWW=kir?2eGbq)70{qj$(~>gt&{#NovddD%SIBg}ArN_r(Lm z+Fq18GX7j{DIOx$`p1cfyYkPAN4oN}*OmEKtnFnAc(* zFF)mG?Xy_NN6D5R^INR@-(T#B{huF*1I5}OOkKv7K*h{xfkJ%G*jaw3GFM*v4z~_jd4@OyVTCVMmXtM0uNkTwGnO@dkDBn3^uP z6xR`J|J@eXbLFS#Ec2@?f3Uc*EC0H+ zT`t$`?J;}A(v|)%3&jV-wm#dx4g1LTS*+LF<>E80?UVQQm~&!1-b2Ng+1^%qqn})l z#d?0V?=Rz9tnFnO;4zO}Za7rNvsl;D+r&OuENJ}4N6LIH*7bDDQ67_2to3ai<1s14 zvgGx@_)MHjtm8lRSdYmq*8a*mPUd5=9-qYHW&U;fjJS+g&*#e%WPK&J@4whavrP1u zx?-)blemFc+q)@l=*n+2$zz&`wZ8I`Wju-P`ETp{JVnNfSnF>(Rpw8z9`8-!VPb9X z%?z0z#diH>w{JAlW0s4xKQ4+_yUN#?loL($l;r}x7wA|l{bv^x4 zTv)8}7d|iRIk8+~{pG7%kntqe`g&ZH`9ZAjzeKz&>oKujpI3={h_$^1S3IVVYx|5> zJ!Y_2+v_GCA=dp_FCOLcfNQdz5^H^zuFLgDtnuu;A?qozp5NxS$IKNcBmVB<{jTjV z-jVBtSjStjyK+5nmzhduE&zR^q4GS?VmT| z9OT;7QldVPft7?ElK~5ceQ|mDpa)Z2flop1&Eq(Fw&Vie!h#tV;j%QcwQ4ptnp8c z?={g~&Y8e#;)r$s3nuiMAhFJW)5Ph;T7UE)ugN6V_`ZsBh;4t__7WuVnu20oPnQx` z65IG~{wZ-~vBpy+sn^sHOO`)>v$!_4FZNFEHTA{z`fRs1DZHk+SmP-nZY9?7Q7xs{ zv=Qs^8zAl~*8Y1Y?#A}EzRjt;riWOscQ3^K#I`B>C4FkI86?)@+f+OR+x$o3VPcIZ zPZ}A2uJSe0dd+CD);}ww*Gv?rWq(p-@|s;@?avnCgJP}kX|UHE5$pN0IE&X@5bN=I zoy}|RiFG^#XZMJ_kJo8&fGqB` zzE-)s#wWJBz-#h|b^W$kTtuw#-V~Q)ds}JNLS9o^tk=WQg=M^nwLjAp@tT%mjc2L2 zjo8LxzeFwSH62{}J;j|}-X!iO*8Zp-1!BEkv=^@tYy3~d>%}&H+kVk9UbESi-$J}itmnri@pj7F zjjENE@#!j`y`0zV73+9iBR(S5{(de#Db{#DmiL;|V!eK)tl%}*#2Vjm@lCPDH?yMG z+!gEja!dSJtm7$BC9iqva!K)XvCc2!#4pIVm1eB$HLt|l-|NNivCaP|{>N3mTNRma z#Ts9ts&YPvHNN8FUt(>qz4*7wAH{ZXYWWt`<@^xq{+|&?7Hj>D|B&%7*5h|u9K`mv zl3F#rCaJ6ZLvae1%hd9k)UNW|#Obj;-VepWVm%&7YkN%=mz&q|nrvdd-#a8ODAxF@ z*Ol{0to=7mT++4u^!jo>iDioLkFU4l=9IVbH*O;5k2nMQQ=56s46$7=*!(NvO=6Aj zP;$_+rn#hi>0W){wCu6VvX;v_z?NFP??r;{U+b;|0wZEvDW`YeA<`-xj|T>v%5MR_0@DVI&r`MDh>wGx2m)BHtxma(nsUx<>-&XoS+(@kF(}F&7zPQ}8 zubeMp9slRVUBveI+T*#tzg%C$I-lemAnRYTjn6+m26@e3vCb#a27AqTv2I^ZJW*_q zpDn*iJjs>s8{#!nTplZ)Cf53oif4*-`*lOTW|mm@Cvce8%y(^{dW6?36zly{Q}H^n zZofpl-sK7-y=H@0+gl~xEY|q1j`EtVV*CDujlb;}uh}P-DcIk?5N1952@svEJ{!5`PnG`BIZ)z8A||fd29$Cd>LH$$#sGd*Wnbt?$DW zuSqG^`83Z|8P8%HziqFrIIGJi#o5J@<^M8!nv7?$j;A%#y{3>@?+4 zinacov%IFUSkI?PbG)Xt*p3I=$lkeL(_O6bC791D1KseX+)~P5eY`>$hLtuaN7%Sl3&DtG(ujIGfFvPHHI5l=Q#)hpv(S7i;+v zYvp_w>;6^V;58M+c7JUB^EY};Te0^48F7EHhy0|Qr9Z{GKfSle`Gy0e(ATYUK8W@I z-*Ru0@h;Z>PPkphJNdS~_TqzL-M@r8z2>Ocjz`;{ZNzt6`G>_1#9H6QzhwO+*8V%Y zTdqf99Z!|^$ok(^{-pSaSlb)5SFS%|dpvA=!TaQTlkC6#Zz2vS*78%tkzDy556bzWH$(&tiMLZTpABEyUVhv=cI4ioKL? zA#P8;E&p8HS*+uw!%10>W1D|W+(+zX`$DJWc)H3T6b}(=d(BRJ%?PoM&-dbSuJWzU z$ob$Z|F?KL`L@0J=Vd)FmRop#r716Y%?`1B|IOw%7oQb-aF5IK{)1S@;{)+^vBuN$ zioD+-w#V0QKkll`Z(@xv#x*$~#Jc~3#cy2>xb8I{UFA=Tzmae2i*iHeKe5L1Ol*?> z_x^E?n{xcc@~S_m7ZU5jcIsRguAM)Rk^@7;mZ`t}Y-j(&LSjXdo2QvSO<&^c; zm+z6>pNVz-}%O zPhRtq^0vKY;y0AHm6rTR-cJzg`L|E}$(3(Dd(CID?qAFwvYr)df1Ve|O!43N8x_T8 z;)x#;@4To!^HXe(hi!j$G@tRM{I7iK=spuxtoxHRuFpge2eW;ocs`R)917PH7jcz8 zATBP}_3fAhK2t&bzwwvQXX=Wz{g&dUV%^`@K|a$;tnX)4OXM@X#1g9i%NB7zv7Ue4 z#6B}rtm9>Xc(|*4&tyI`TAWHYxBGilyh*J4*D|@!Y!z!fGsSzvTHkK*KC$+9v=lzG z-<3aBd{C_M9~B=HYyEG;Ctc-JrSzH8uKf1mb1uISUlfO8f3u|Wnd`3nw&Gi2jqjTH zj#&H0r16;tVm&`|h+nzNhfnJ>Z^*a((O3LM9E$c{ivJbs{=`k^Gal(YZ7)Jb882d; zPuu74nZ)A8Y`;Z3$W^{bPM;Yf*7%l+M~Jn5;^&g%URGqc2@Ilhg=3ti=Nku0`(5(+&${pBx>cVcnrKe4W7FNx!dwS1HkK9j&zzM445OQkxtnIZIZxm~LgKEh6MtOUDUy1jLwfzi#$oVAJ z_Bx6Wx%^3dSZt5Kt+Y-}pE)7c{eMzR&L^?XAJ-fB%zbfI#>bR~J`+8SbA7b!KNSaw zZTr@R8~IEUvDWuVoJuTN{`?<}eI}hatk}LdzLn2p6KBFt+W1Tpv94Fcw)L6rV%@(M z;+|q#pZ&71gU|F8C$^SOtJ~3M=8D5wOa8ZBKC?{R5RdBPGojM{H(oRM^_duAt?#@z zjyQ~z_wP?X89!p}uR-DzVtagS{%&z9Y%7W1-)GW@wZ6LI3}Wq{d*WcR)|Y&+&tw7mM1shc4 zF+Q_gto1b!uXH)?Sf5!fw)=0(HyJ1Aw^*+~E5!#~48kNAiy z|C{)PSnC_OQq~J%8;>2I=fzjZx9+)0)(2u8?>kq^d?(iUUWi{)-p0RjjnBLj>-F%e z_@`Lo$*@+&pV%HBTYn3&FTIm*eN-Gutno!yC+kJAj*sf%NMb4K-~OIBnplr_tzr>lu8h^k6pUEt?_1SnkiL;3{ zo`>RG#7VCH@cwW}KVvV=T1)sSl*7GOUMVW8KHXi$Bx%i>WdoTIS zQ&;(vmt}n`*7)X$-@6>xj~vDP=^w#=vE`;LwlUVz&mpF&m9uFJu ziO_*2uUPNb%Z3d!<-}2_uWz_OQ&$|B@*Bl%#Cm)ah7UCD#ae%w2!W=XtNb$Y5V6j$ zr6LBJQIxmsuNF^qZGTxjLu`+y&959O(99C+^Q>^Q;lu-laZso=Sogn0v_NxNtmA8x z_`a+BhvLYFPJ2{=4x1r3qNKpMiCI`R^Qm(#?+WgZ9S-to`v2`_~V${J#$(KPATYe6}eV`|sz)a(erdo~Pxo|NSq?sfz9WyiE!#=zj2jXKm6uyo_(B2abqK;7GVO zj*PqFD0m2tif7|!crA{O_v0A&I*y5-;aK<^j*TO5BE-STa9msz$HNVAeB2i&z~iy~ zi~*Y#;2^vK+s_=Z={Qb|@8Kl)1Gb+@VAF4$49DWcwVzR7Q)Zk3m%}M>OPmV##i{Wu zY(L|`rZqS%{tKtWmvDOg9B06vuu1H%&V*-T3BW0_2baWN+!*_Ce;kOH;86Go4vin+ zFxXk>%6brIVqy!2tK;yv3yy%NB3D3CF;r za7?@u$HIqjY>8W zaR5GnJ@_{E;=i#EhvUK$h!f#ZI4cf~%iu7$DGrN!;c$2y4v!b(2zV=wh>zk(_!f?g z-{B}YkPBf{93Mx+@-g%N6djksF>pg16U)cR`%^4D701RaaU8r4$HljBJp2!ik7IJ7 zPJq+lgt!zA!Yy$kJP;?w3vm*>3n#_)vtVpWhV5s)*pwXWbtVPYc_}3>7{w`{3fID^ zaVwk#_rYoLG@K4^!Rhe{oB=<@8SxLC2}fWd6O7Z~%(x)Vg6rX|_)nY-kHR_dT$~ec z#kueqoEtyGd9aU#RbHG7=feeYeq0?Fz)f*M+zS`NQ*dFt5*NWoaZ!957sLPH;@E!n zicKYOGF%ep!KH9nTpG8)Ww8CM5}V56rMMj4jmzV!xB~tMSH#g+h*rXxaAjN;SHUfD zRXh?`!*g+UycgHNm+>F?8Lo+c<61Zl3**{2E3Sjf;<~sou7?NW`glHWfcN8u_yKN& zf8fU0epZA{O>j!w6c@qGa9!LS|B2h+vA8X^pG{y>JG>uvz!z~xZ2$J(rcT()jY4M} z3wOo#Z|`mDhD+n_xHJ9}Ps2U%4%`zzz`bxFHzvJt2HXc%!ToS|JOD4l1Myir7=Ok? za3XGehT^h#8196Jc%*LXCJ%8k?*TndlHz417_5Kq8o@I-9?w$Y|Z*#2#y zO_On3JQdHy)9@}l9bd&Wu!kGFnK(V3g=^#4co?38XW_Yc8=i+R;`#U!UVxKwBe@V) z!HaNDyco~JOYi}_6hFnwu>D&po0j85cm>XmSK_L86}EqiWYcOq2(Q62@mjnVufz6l zb8K3V?cd(mbPE5APvb<~IG@4xZ#!%{i#ygIb6Hmvt@N#?`@5FcTetZ|7!}suGd>?|;m1F<)yQ*S67ABV=7aTr_~hsBL> zINTA3$Ng~xJPAj{t8gTI2uH?uaTNR+N5x@MIq^rsDR6Y07stSzaZEe`$HMk^<7|qJ z&*M1w366_Hr*_K6!%1*_Tm&b;wQ)k+9S7lYI1yfh6Jz_kUp6Jd_i$4D2`9q|(m3Ul zpXT!g7b{sREQ(q384(G%La4u|r_r|8&xGT7DY0a4}pMcfm#QL|hcF#>Maz?9?iMFNOnnAyfv~mf=P!XHDF|BiKky;+@tdOX5mJ$_NK#uFE7 zJof+2ZPNZKh!gu?mCs7Yg>W@I0Nej7w@K?8fHl5xSlge2b^mu^rxyAD!Vu*zV6Fcl z*8TejYkh&)oSL*h;)HNIto>U6hbDk3SmSSr_4xF`;V3^LgqPs(+}4}$Ih=;L%{ECex5Xwa=C;$6!rUgBnm94>w!lenKb#bg!^!YcoE-1O zEUV2)%rezn$1EGoYn+{=rtXMDOMX_E+t79%(rXA+8Vus*g z+MkVe8s3DNHq2qnX=AQnhMjqXIZP%Xms2sjWfEYDnOvA}rW!xwCZ2XU5AKKa;u$y} z-iV>ujdlJwhIKx87NY!*5apu~h?Y-*b^geOb^fS`b^d69b-w71b-oyib-q}Hb-vh* zb-uWSb$)n`b$;;DQ93`Q#=8G`uty*&ouu|Lkw@@_+U> z`0+pc>yMP*|LuRjZv-Fbwf;L;>;HhY{^$jq znza7pSkIpVSkIq^SjX28tmn@Ptmn^utmn@Qtnq)s8ow#%V%-05`+h{!py#FT&dXeyr`^$Ijis@83b%5cTK9T7M0!^>@O0e8ymHZ#mZE za}ewCxr6oie8U=F+QR1lr7~FKX@@nQp;+Ttgf*TuSmQa3HJ*o9$^tnsuAQNC-4@`FN@pA(||<`Cs?gvfswBL7>6{7^-mz%;(pSofk>i2P>QLxG`K z`)?iA{&<76K3}o_-(FIz^_9k2zFP>746*%|5c&H;^piu^!L#SmQ5@y_Bzk zeYhhI#6xf>JQM5qUyJp4AHh0b-oQFvzQa0Snvzb%y55M1|F_=2djF9J>-|Rstn*`Y ztoIvzu-

zyd3hvVS)I4=Hy$2nkW*J~EVZAIr$6VITFIj-@LJp)@5L?fP23WH$E|SWa?TH}adO-S=fG`oY1|Ii!R>K7+yM{9 z9r0w`32(ri@oC%*Kf>MdZ~P~YRo?lb2hNOp;-a`0u7`W$j<^pVg8SlGxF24J`{P4+ z0KSO_;*WR`j#R<g@*l?oH z!7=e%oC43oIq-a30WZLf@j~1UFT$hn61)g6$6N3!ybrI&_wic%1+T+#Dmy=H!P)UP zTo!M~4e?*N7v6=(;oW#G-h&V0z4#8^hri+dI2se_0h|gS#3k_|+!!CmgYXeN6CcIv z@G*QEAIGoo2^@}z{3K3=PvHXi46cgL;`aC)9*)oBrT79qfG^@3_%eQqui}64H5{7@ z&2^j;-@x_oO*{(U#tZQsyc6HWXYf7z5Z}i?@dF%{3*AGU0zbhy@KanIKf~4WbKC^K zzLJjBj@Hhds&jq$A7{|aRa7kyB8fU>9aaMd1XTz^?b{vC+ zOAee3=fo9pF5C*|#-p(Q9pXxym;60AAHI+C<1e@Xj>y8PAWnu0;q16Du7Hc+mbfS$ zgp1+jxCB0hOXAnK6pmKgIUc2PMqCCL!)0*;Tn_id{b#ZrG50An1@p7zx zx4H{AB>yaKgkRvsIBY#9o+damZi=hoX1Et_j+fyU_#keH@8DMWGj5F&)OXr%gA3rc zxG`>rN8|Q*H|~J1)$A4%fmtzH4x5ycQS7>u>|S9uL7A z@KU@H|AjZ|joE3kP~Q{k^THICNFi7yRKhtuM`I32Ez z)8no<1D=F4;*B^HK8b_zW1JcPz*%vO&Q5&UaAuqxm%=%4Q=AhI!nyD~oEz`KdGIBi z7r(*zu&0X?PktO97r@zZL0k?O!mV&&JO~%TQ*cqd0T;uEadG?@m%u-9NgS)I6K^S; z7MI4AaT(kS>*vS}#pTGKhs)!=xB|Y8E8?%X5{}Z%iKjA7fve!cxGJuXtKnX_I$nrt z;O+Pid;!ZiaK?=C}%Oft%x&xHoQvr{UIk3vPqY;I{ZZZigfFaN=u^)8Y=eB<_ft;!d~^ z?u;klE_e;@ijU%M_#y6&f8jrI+@4N+J#aeQ6Boz5a0A>M_rQJdG~5?&$NlgH+#kQh z18~@0PCNr~B0LCZ!Gm#SJOsDE!|)(H9M8cc@Gd+O-^8P^>FvZb8b`xpa7H{9m%-z3 z8$2G5#uM;TJQ44}Gw~HX2fx8{@h?0NN9*InJ0GXT3vfxi5VypOa9_L_&%jIYTD%mW z#LMtAyc~bSD{!p7PJAnICcFw4z^id>yaso{Yw<+94zI=Q@fo}Uzrh=^x1STwCY%z> zV}$*wFy4ae;jOq6-iF8E?RYWXfp_7Z_!|BTzsI|9`2J2DyKyqS2j|CoaZS7rcg6eh zbbJ7>#|QBRd+ReX#D8{&WbPM3iuLkjW6S2_zGTxuj0-48a|D$<45=g4mHS$=O&JWZ{Za9 zHqL_Y;DY!rE|2fwruaVYgCF40_#vKyAK_K_F+PN!;0yREevhBwz`@S`J;(9!3mlAJ z;y>^!+y%eJ6Yv|n9>2w>@H_k*zsF{X6VC@675|M>uR6GMm!-sKn zd>hBW5l1-f>E}Eaz_G}0gJa_XI1ZkRo9=?X-?I^AeWFKKaut{22enPjHkmPC0ojls_fH&u}LE z0vE$Cac%qxcfzmnQ2YkZ$MV=Ff7*oK;p12y!{krb@CW<||Bc^cc`TDZ{l=egq_NKH z^4KMR3c~W(C4b6^^>arn;IHJjz~69x{2fok@|Y%nT7rM#UHD&o9sj~_aeSY%edKY@ z_XIctPKe9mAlw8e!UJ()JRc{)dvH>G87ISUadI4fyc16foF1pd#j$=4Ydf5p{1G?} zUWU`+LpUA2fz#tJI0KG0!HFj$PKPt$5;zz)$C+_&te+FBpSzQl{B7iC!}_@^*|C0( zM-Hr?1CbN!=K|!y6(&0I=Efay9y|)mV~qT1G0ung;&S)`E{|W}3fMErsiz{2i!0$^ zTp5?bRd5qr6%WAG@N8Ti@4z+iY5WJijrDVPKjB*BN1g1%TN|gsb#M_}7dOQ9a7SDp z562DgG~5ucz>V-;+!)`%P4G9|6vvq2#H*hhoC!B4zdUY%Tj7>?AZ~@H;MRCEZi7$Z zw)i3Lihtv7IKfmWzV0|P?uSca{aoYPcmVlb@jyHT55m*%V7wX+!GGbQ_$(fVU*O?5 zV44%}2%G?q#Ch>3TnmrJUGW$^6OY9^@Hl)9kH;_Z1pFOO#9^m9@lC=B@noD8Pr>E! zRNN3x#{=*Tyb$Z>NFTa^l^K zJK=|T0)B*7;K%p?euA&#r}!g&hGWii z;(d-&;1@VAeu*pLSGXyDjfdbjcpiR>x8isBBz})y;}1A+z7yXU91nlRx$rk!4}Zr) z@DDr_|HM1-zxX=-g@57SIOYN;9{m88G&ms8dA$JE&&{uez2x`6K0E=-V`ltm1rCMx zV0o;JKV8LP@E0tPnenGE3!U%sSQ&pxkL9s4{!|V}z%8&mCdQuzVR;OUKP|)Z7#Dxq zkL58g{&W@Va{+!}c}$BxgrtJRax93vnL27t3R8{OLND$JqGO zTP%;Q@ux7$obU438h=WL3*o|8pKH+&%VTT&sUI$iXW(LZGcJyg;}ZBWE{Q$Moq9{* zgt#=$h0EY7xGZjg%i-R*Jf4m#;4Qc!K7lLYhqyBSg{$CLE1Y=sxgMEuHS$a1>bM!M zfd}J1@ElwdZ^gCnIb0jR#C5P)>BLhP$H4V)DqJ5I#rhnQ`nVzaopB>P1~0 zH^pagGyE7g$KP=a9Bq{oe@mPJx58y`YupaE!GmyHJRP^gt8sgL7I(mpus(<7Gwwuw z*ws#aopCbU1sB3yaZTI}cf#HAK>R0OgnQtC z`{QnS0G@;g;!SuEK7$A2=XeMv0vl0k_2)@hH3rFTRDZCTc$A96@co!ancjF~^58jFQ;){46evWTr-)1MiJ2(j6#aZw@Tmj$5 zE${=}4@U~+)H@AF#_Mqud>R+VFL4nZu*IpTD2|Pb;S9JqE{gTJRJCwP@;l*Dcmytu z7vnN`7cPs>;&S*UE|0@(b>gjnlj4dvH?D-sl8xw{b)K9XG-Ww>$AQ##wO_TopIP z9dI)|9yiBJaSOa3x5W2xEBqU`#tC*f@wCCYaa&v)x5K?~dprww!0T{Fd=z)WPjF}a zFYbbq?{wnP=c*OO-N>(pyW_6-Pdpy?z)NvYydU?$H*jD44fn$d|8nB_igRLp4qGMs zo&47L2Of%l;zjshd<6f(H?aQ!q|)>!91z-xBit_My9cMoUR)LXaC01p2jft90S=A# z;4t_y4vXL6a5%zlC!X*)E!OAK6~+%L zcpyH2N8uZIG=7K2;OP6D_{QR#cpR>e^|^q9@dWZ$;fZ(;o`i4X$@mvOkK^ul+P{F) z;)}RAzJwd&%Xk33g6HC!cs;&_kKo(*2EK#e;k(#-!1$9s*DyW4Pku4{0N2A0aToju zkHL@e68r@3#ZU1y{0#rV`NBAH#XIPH&yNdZeGXzZe3JZ@xKUVVyPmi)o`jp?Wq3z; zr~E;@6W_&u;cs{sj(o`3ZZ}Sb_u#U4FYbi*;jwr>UV#tbqxc|xjP*H!-osA&hslqR zkKmm6D6WQ&;U4%no`X-|?f4|VgiqnG_%x1t#EIt&E{M5d2G%&@m;{N@I{;yU&2}NWn2bd z!Hw}%+yh_3 zZ^V!B8T$3i{lr#K7NS@;a7MjevP-_H~1oci=X3n*mvHE=RHn_ zKj5PHZ(Iw1#9i?xJPrSYSKwcG7ygZJVH4Gf<0npuV_k4wPla>h)VK;xgWKY?csNdn zm*Zf(A7{qba2EU)XT=dNI`L$~>2NVz0T;&|aS1#Dm&ChqDSQu?#y@cx9RHHjepy@u zm&1*5c{~kQz`Jop{1jKhkuN*-SH}5q6G@)80{>1|P$f@p1eoK7kkDllTNag}v9D`cLCb_zbR& z&*Gu@9A1yl;}iG-euHn~7}uTlZsBbBHg1UT;PLn_-i7bsyZAm1xZ%`4GP?6U3D)Pp z=EI}OuZzdv?szPog2&;FcsxFdC*TKoBL0OZ;dnQlxF+LFcnU6!r{V^98t#s#v49x0awHuaeKT8kH(wv zI=ls+!dvkxybVXZ>%_AiXTdvgCA<^=iT}dm@h-d$>vND#<2~fR!+UYWdrtfNaWZ@W z7sLl~J$wlF$A|GEd<5^uNAZ1p3ycyrd zXYn2U3g5+{A35#a!zu86TpmBbo$*6F4trud^=!rZ+~sT7NB%!J5XX7!Y!?a_#G!F3 z90rfYVevW~4xho{@oO9b$A03p7ZK;gk#Kb!84tx#@O&He@Iq`F(L5ycEa9r*J&{6vxMro;mF&z&UY3Tn7i?Q8*FagA?N`I0=4_li~=^ zo%WL9V4NJ+!6|SToDxsNsqlWB8b8BnaM%}4duef6oDNsP>2Z6U0WZV)9Pkr36ZubZ zFb?z5X)iNQhO^)jI4f?Av*FP=JKltI;2St6_Pui2%Y_r-+&DkZgInOdcr?z3H{ksE z0xp0b;xE`uN9 zve^69slOZ!!sT%ZTmiSk74ZyQ3Gc&|ahP{b{Z()dTou>A)$j;h9dE%k@FV;O4)@-v zza~zPYvJ;^HtvY);K{fy-hu1kJGefM`oU?h0nULN;wrci?t~lT1-J>`gPY=)xET)r zx6@v8oENviHE~Pa3Ae&yacjI2x4}cf?0?06Ia7Ma9i9H55&FjEZiG!$9?bx+!w#b{czZSoOt`=1b6_> zg9qZ~cn}_o2jiW12)>Vp;(*Uid&6*AJRFz6PjNHcI*zm57<@dgo74V19E9)Vy!ZjGk00Xx_z|9lALFI?3Eq#N;;Z-> zeuTpDM>t#B|NjWgr*I14_Dv*Ncn8xH@k z(|&fG0q4LKaZcP7=fV?lZoCWU!S`@p`~&C1@qan(=f^p40bC0g#C>rgybc$}CvXw` z5*NkMemm_I!`X0gTo0GPgK$Z_7MH@8acTS&m%*`2fWN`AI0v49tKx~c1)hWl;>mah zo{IP4Y4|ptj=$p>IAMSj&rDnh&%(X%Y`hZB!I$wo`~}a)F+5KF3vgPz5SPM>a9g|> z55i0E0=yLeg_q$=csc%zSK!26C!Uo!KVF5aso`bjI19%&LiMQi0flhlna0a{+m&AYJ)_4~lh~|_u`v) zAO3~+t@547bD0@g&>=Z@?|_Iot|A#O-lF zSf~9CI0f#A3*t_=Chm>9;J$ba?uQrQ0r&tOi0|S-_$wZQql9zf8;Y~yk+>8dg&X0~ zxHleyXXCMWHy(#? zk?~9%1#iJo@ktyFKgZFrHo$H!N20{jLi z#J-i=uUhkaB5r< z7sl;yZQLIB#2xSq+!1fbo$xi>8GplFaJ(2!JY8{K+zr>l-Emj^C!UOZ;8nOMK7xDU z2e>yjF`f4N;2_)==g0kUEj$2s#{=ZgYgAC1i!;Wanx8&Ji~BCJRBFrBXC_j z5_iX=@FYAMZ^2{mX*?D`!sD=s?Zh)4$HfzHE<6!e!IN-HJQ)weQ}ALu75{~&;hT6m z{(xuT$Z?$bX5ut>7A}ovK8(-dBlsmgio+yy;yH$s;p4anK7s4uleh;yg{R=tcq2Z8FX6NJ zIX;KIK~6m9aZ-E%=fM|oHGBzo!I$wAd+n5%3g5>s@dNBh?8NgBC&G_#9{d>B!cTAy{1i{c&+s<<9ACpP@JIX- z$4%nI^9tw0uW=px1`on-@f`dPZ^rNOW&8nuz<=W?NuBmT;;i@+E`|TWE%0aD6Mw;D z@mIVMf5SWQcYGQDz<=YPIBGH{zJGBr{)J27-?%Y0NsK=Y!U1?L_Tb&vi!Wjyeu)Ed zVDbQey`gYo92)1vVQ@_x7I(qn@OT^^ug4MaDI5_$#F6k%92rMT5#Wz63eJV2;s!Vx z9*m>oB{&A&iDTkxI2Qf~$Hp;I2Kd{LgR|nexGIi^`{DR_Hco)I`b$dYl$l#OZKnoE}fd z8Ss9b5#Ps|us2PBzrA3b6lccea2DJSXT{@jHoOLB$7gU3{1NBGDbfb`+s}my;@r3~ z&VvWzym$%DhY#WW_z5n6L#GSyw^tCS!-a4STo`x8Mesaa6raGw@OxYw$4?*NZ?6O{ zj!WXsxD;N3OXGvM41R{o;(!bR{`$+|gt$D;gDc=_xFT+gE8(%YGTwlz;0w4aeuAsv zAGkVBk}<#^UkzLY|AE`$ns^$ng?HiF_%5!4O{M^U{dI9VTn`t)^>IVo0QbcW@gm#^ z@57DpP22>(!%cDY-~fL-&2UcK99P6Ga0lEHPrtrsd$VxI7+*o8a+yG@gK$@H{*g z&&ONv&-fxOYwfZ3_rxb;()?lo_Nb~R{R?- zjaT57cqQ(MSK;w^HC~3-;JtV)zJ%A|XLvnMQpC%X-v(R|Z^RApCOiOd#?$c@yasQ@ zr|>rXKfE0$FY4uqzXKP=J8@II3;&3B;{|vR-i7z#>v$jj5AVkz#k@T658zDrAg+lI z;Q{z}JOdxbyYUfx7azqw#l1Z7j^S{892dt~(tEl&jj@sA^tRfE;jHvufV1H}I09e6 z+3`D^11BnB^2>=Ma4uXL=f;h39^4D(#ba?Hya*S@+i($l#`0Y}j`k0DJWg5C~wJ z@FM&aAHvV@KlnNRg#U-rR5tm&z(w(YxDI}W`{37j27ZHA>dRx|PU<3{)Z{sAAvtMMUx3E#l)@l707-OPUr7s0o2 zV|)h>!GGh0_#b>6-^KUwJ?vk@#Ji8v;s>}Ceux|3N4OvU7th2m@fQ3azKmbt_xLqV zThrw82A9KcaToj!kH_!vD*OQ-!XNQJ_!Ev(%f$PPGh!#Rxn3$^FWeh@>zeqdaX$P9u8+^)@9|kY8~=&7;B)vaK9Aqw3)of9#J`9u;7hn8zKqA? zD|jQmif`j_r-_LdjML%xxD*b-t#JZ85+}sVaUy&IC&rI)5**mn#7~MNa57v8C&%q^ z3Oov@#J}KFcs~xs*Klh52B*PEnwfmUa2}i%SHUja5vRk$aX4O#)8l4;0v`SDp?2mgtC;&XTcK9ASp3-}Lw5&sWg!U?;W_?K}mdK&;(Iu-n~8THXTT4z z8$ZO&@FV;KevB93CwLEjivPmT@F)Bnhjusl{0|q#FK}c0FCK(n;@S8=yb-^`7x8QS z5x>D{dYJfcaZ&sZx4`f582kaR!yoZk{0V=+pK-RHCZ1E!yl*$fUbsK@#&dBTycYZ5 zlh_wO#(p@cmxbUo^9SQhI6kg~LvS~o08haQ@mib+ zpT&vs3!DVU?_=U8#pQ4^+!iOt<8TVR7N^9=aVq>6hvKAtO}x~&2u_3R<1pL{r^U1J ztRiOrx8m9O4?G9I#&dD1ekT4;xG0{78{nUDZ@d6c#tZRwya->yi}8PW2~N}B#Qy~s z!%J~vybSlnzv2maIbMc;!+Y@xdZ}BReYJkaSHLiu%;6ZpTUW(V@BX~Xj2XDY$ z1I_#!u?ug)-{8%-1Kxs1;;ncE-iA-%?f5?4fxQQr_&ae{ybG7ZyKx(QACJKg@B;i0 z@4}DpdHfhZ!B23&V3W@WoDP4)h43d_2Y<#ru~XEX|2fzTZ^YjCERKUeVIQ3JJClze zZiM}DUmSp^;6S_@$Hjl(c=#R;!Xe+Ac)>U~j*qM25ZoRoz~ga3yc{ROr*Ja-04K*m zKbZJwaR%(d<#9UP8HeL(I6YpAGvJdrBYurD;oMOser8+;XTig8R=f#k!?$q+_8Vg6 z%Z@YS9Jn0LiQD5`cofc!m*YJ62F{BU4K?xd;SxAMZi6H71Y7{G#Rc&RTnInIEpXCd zCSFUN54XZCacevTx4}zrTf7Um!}oD}oM5<#HwEX!2XGa95VysL@L+ryFT+>xNqiMQ z#n*7s5hnh1oCp7f>){)CFwRoU+z)2stavNVhA-d<{0?WwsYjalIdCyN9yh?x@j(1P zJO{tPTk*g6CVq*XQ6}DhI1InSrSNOq4!^;J@LN0yzr#!Ld%O>Sz?bny{2qV8VWUlc zpK(#_6gTy*g}rbe?2X6bICvTM!M|f){2u$^&>u~Fe_R9y;1)O#e~;thm;4?TSeuq=x z;^WNxp|}lBjmP6Ocmoc@mvLGgG~UeT!Z~m{+#HAF$v8dUi8J7LI3vzJ!OWitx5An6 zM4Sch#aZ$Ha5fx1(aaZtE8^^UFwTKj;hgv~&V{o~GV|ret#BSZ1Lwt?aXx$v=g09U zoB1Mfe!Lae!rO2Uyd6)%JMc!l6JNl)@H@O4hfOi@_uvwEFK&+a;URcGUW5O)$5srhu$3A!&_QhAR9}b#r=J&_>aR6?Jy`21> z2X22Hk|6)ym>*2RiSRa@7+=BOPNb**I~)gx&N1NbqCZ7g4A8zQFe?g!YZb5r@+zn5_-SHaS10Tgb@hjX5r}){#?~RM$KDZ6; zi-+QVcn*%jo3N9>TrbD4ms8Ml{oKXg*n5GA9|tGLJ~$Hl;@a2`_rd;nE)KxEaUi~h z<6@tMCVo5|frD@@9E`i;_;@A`!CPJRifs0JML^u~tjH}`#xHnFUXX0e|AWn{- z;S@M%v5A)wXTqs)SsaSHcc<3M}?$Hi}OJe*>gi64Z^;$Ykg$H&8P2wsj8;6HFe{0t|;!M~b#iE#n!c$@k) z$I;h&RP^K38LM_5)4opa_z&4B8euJ~(WNS?PY`7qfz%_Ap+ym#pvv5wl z8|T7TaBln>=fMfrn)rEfZk!KS!ufG~9EnHc0(ccJh|l6e_%SYw*KIZ zCSC(v5;w#xaU(nuH^#r>Cip1!atcSq+`k`VZ>O;5{vEK{#EV0FF6`wL@w8XN-nd_E zf73n#`_R4y`{Hxh4}Ze`INKHzKLA(4fw&8fi)Y|?cmoc?Cvh--jN{{wttMUwE{qf4 zhBzS}h!f$-I5A#@li<@hDSn2N;Y8a^{N%VGPJvtFlz0+Og;(QHdjLt#=4^(LNa~|2=3XiRzBb2DDoMI>FzAR%4e%J{t{OFf35M!_Lz}cUoPw>UJa~zcEVA# zkHc)g^P5b-Loy4xi9;Cw5kJSN_OcQ>6qV`F18coeSnK=6@_MZN4_o6eV6ESGpJp}* zrNH`WW~_JxurK+S!+yAh)xR6oe1ov!|7^8yvBv*y^}mF*KCk^|X3d`fD_<9mLw>oi zuCGQi?Om|u`vGgdMOOdKR{u*@`(3O3lhvN&z}NZb#fn!KEB`K7^_zsXAM3I9<2hz| z&S$Lk1s*iNQ@q4j@$zGhuYfiFTWkE!_%pxOTI2Uy<8N90-&p=`_p!;`|&ZHkohj*MED*~jNjoTIPPInkEA#~PKFEM zVF-Rj`IjB{%5TC0Y^-W;^)R1UmRHM86m>w5SO>w1`Mc@Ea~u?Xw@ zufaP1`*8{i{3lL{Ut`rj;J8_t)|V1%eZ{frQy;fyg07ZFVLktTw!8&zdwm}zrTWYzrTldzki8! zzP(PFm9l+Ke5~^vigmxwigmv)h;`n}Vx9NeSoiyumV02`{|8`QAH%S&j|n&x8~PIt z#Y=H&ybh93jML(?*oFVb>F{eDj&q&XNije82J5H&to9$R_SsnHYoFEsg4O?( z)t=}N6G`zRu;#0RbzXa6o!6C^~?{&QlTe>c|o zZ;EyPdt;sdu~_GS1=jgLfOY<_VV(acSm*x}*7*-PYx39mPmgu}3u2xBDp=>gE!O!T zgmwPsV4e5%Sm*r|)_K2=b>4mcH2LYgC&xPPkyz)wCf0dxhjrd3ViyNs8BT`};q>@# zoB<~}XYzqg7}ig-V4a`*Sm&pt)m{ZhF<~RiUGNavqwr8X9S_6Hv7QGT@F#w72GiZS zik1I8to+|%-;yvI{&?}&i@#!^S=!1{2#(P|9@ef z|BqPbKg|V`zs`RI*7+}qb^aS*o&SDV=YKrb`CpB7{tscD|2tUc{{z-@LC+Q05t`!@t@|F&5D4_N&#Sp7d({ev%=nKge}toid}osaTZ=c6Uo`526KJ|<(G zkKeG)#|f;mewR(AIv=U9&PPtH^HCM+d^E>8AEUAAy+9_xJ^1ry)8oC` z84&l%*Y!(@RllrQ^>bs@uO3$YI$+hWFIN3VV%2XNR{i#1t>;gy{e5k_#CdVGg zSH`JuGaQP0;M905PJ@@?FuVt+#eZTK{uigi&fg}laGV%BUgqbSESJDuv^TLl5PQ=; z8^^)hun#_meepBwhXemHdH7=&4!{L*Ag+Yt;+8lb9)N@J6da6~;`n$w4#DSe0{j9e z#DRBBzKL)aoEVqKj<@O8#Bx{cMf+&%jThoLcmwvqzhhr~8T;Xv*dNEcXYvTZ5jYT+ z!Ete291nNGL3lV0#`CZf$Hdua`3Ux+{TlYhFK`?j|Gt^W2WP^*xES`sb+JG0j05lx z9EhjkxOf$ghxg+kd<_TVH#h_*dtmZSfV1O-xHL|L>)^z=D^7w(;-q*vc6>~neU{H* zFWMhtZ|w8XjEjTAu@5eSeQ_P^hr45cJP`-rby)eG#>(djRzC3_nS2~y^G}!Myx5EO zdTQr=rnTB}PptQw(N_OCR{s@N|Fc&AyH@}AR{xBT$)EVeuzuPcE1zjr|7BMH6IS~_ zR{IC6`BFYHk@Wsn6_bwB3M-%fSmVc7<9Au(PgvuxTjTFrQ((P+=Ei#e{08g&vjNuo zXCJKh&nZ~%pR2LnKaXL(e_qFW|9pY<{`nE>{WH~blfT|Sb7KAZMSZM4ujq>P=M@vN z{=8y2)}L2g#5zxpvG(&V)_(f`&$MVilVI&<2CV(ei?yF6vG%hn)_%6e+RuSl`#BD4 zKNn){=XR|9Jc+fR_p$cV`-NGL_A@2c`ZHnGr>y1HR{x<`^;&>cuZ>vsI*wJZ>sa-A ziB+$-|C-EHue4b8DvVXH23Ym#j#aPWSoNBVRj;*J_1cS7ufMR)zu!xfpU!`3tn;52 z>-<;3I{z)P&VPTb^FIOW^Vd?W&tJQ-K7XCZ`ur9ApLW*lXgJnS3u5hG6|DVhiM4GT7uI>Z zign%|VV$>ESm!Ot8?zprx2#y_tsvHUtBCb^zYW&s{lQqD_s3!V`NVwe;=ruK>F_=r zjxXT!_zup1Kj4fw=&e~#CY%Om#yM~nTmomsb#OM^5l7%*I6Iz>bKqq-C*Fp0;o~?r z{tM^94{=`n8Rx@k-kJ5~$3<}@Zioxuez+i>jtk+fxG+A5i{R_HD1L#9;h^^>pW-+i zm%v4FN!$#(@j$HS|5(d&vEB!kVZ9F=#(E#PiS<748vAm=#s6UP^~2%VA4lQu zoC4p%j>~M=N6Ya)nf#pGrajzpr0h2BB`w#&UbJ_?-Z%>T;91xgFUEd&7xu^3Z~%Uf z197U)CjYoNFAl<$a4>Fzo$ik3*I>&tF<)is8Hz3*Vv`z2PredCy!RPQ8M_0EV@ z??|kASHP-wL#%pt!m9TGta^{adf%CaJ;je+|8lJNolRKpI|s4ecmBkB-}xKsedi_C z`;M=VS-;+Q5@WsZq{VvQ$$|C0QxfZarzY0>PD`x!oo-m~J43PFcP3$1%;rb`nvc^N zI;(Lw-i6cS<2VDpf-~X=I1_$_^}gfhYwDr*op8&!u-<=)V7>oT!g~K{g!TT@0qgx| z0M`4@k67}VZHyn!FvBm>Sxxk_n%By?>~jH z-hZlKz5letdjIKz_5L#w>-}dA*89&2toNU7*v)>O#HH{x{0)A9OXJtL3{LHD)>jrs z;&Qk;E{{9o3ivx*5l_RF@Jd`6@55E_MO+m>#ntd9*n2r@9=v3JwAv%FB8!}JCCDi{}&Izae_?#Lvcbp42R+2I1e6yE8~&4DISHp z;?ekf{3D)#$KZK*EdC9T!&~uqd9{MNfd}K6cpRRE7vkA?4W5H{a2R;BNRAJPa?zQ}Hsq5dVrd;N|!L{tf?uSKzfPyOze->-~fCa2jahQT>J{h!|@WEe1dRV9E_`C=(ND9 z#{jH)tg-sw0R2bv+Hlx}GLrT~BkduBUZa*V9p~>*+dnqRfImU@x31rODSD zN8&iR1=jlesK1%cnXLYJJ=Xe>nL6Vx31fR{c9-XMq_oR9+3=g);Te+8`l>ws0i!C3n_3+sB?fOS2c$Ex=Otn0})or$dLDGk>3ln3j2s)Tht z)x)};+F)HzQCQd09IWeUGuHKT4yU8Q|Kf1$7jE)Rk5l0cI09$HHE<@}6>EP7VAX#p zR=vk#)o&KodVa-B?`*(&9-p+@FJr}jg%v+xdh%GWQ0`JK*dDy;nTVVzeu)_JXsbza+It#=UCd7XiEUbkY>bxvUA z`xGnR;EZ4A8-bN?MXY=~VC6d;E8m~7^4*S=?=`G^-(y{0sWO>-bbS@Vy1wdTU0;2$ zuCK{h=ixW3>uW#O^XdxL^Xd)O^_McU$w$wt5?IfxR#?xgVOY&;dl$y{o@auf%f}Y_YbeECLi5DQsT_?&x^C* z3OFlnhO^;bI0BEx+3{kW1MkB*@g1BC`(!iu<;Gz+501onab=tjx5D{xe;kP?;{tdY zE{J#GLikTy7~jW5@F!dpCyp@r7sC;_ICkR_xDGCfJ7PEf4wu4H@HcoFE{%W3W$Zmk z;gT*aXVZ9x5wpi2iyR6#2s-b9EHEdlW}Lf2zS97a94Z~ zcf;p#cYGK3!2jW%*e|zPZ!eq<55;-$FkBiB$91s2UyH)}er+Sx`_DzJ=kX(KvTz)~ zJmzi{xuuxeQBM{ z1jl5@amDn%`Nc7G-dGOFYX&M_W$fu3{XcE7^84B9zuam+idBzCR(~g-W-<{HVZ{%} z>XjGAA)#_u^{urZMe}Am`M`N9j88Qb|dVC^H zV67(@t9~i4)|Vcuo<*>kJ^Jte#G1dA<(^pahGNY>1*?9Gu<}`n_5QmVE1!K>@6RW! z_Dfd#-&pVK&#~Ue0}Ciqv%;iU>kGr`l>;l^0$A%Sg;lRASm&c2cG00Vj>4Tao`8d7 z0*sLvummgL)oLf;Htb^lLsSMkC_r&^q@*~#gkA>KAn*}b%s>eFDli&_H%Je^g_4(;IR(;N?KM7yMs?Qy)^Y9ew zyu~eKddAiVI|OiH<(p0IE|XtjnS3i^w`q3jtDS^8$$Y`yUnc+IGULa^+GOyPOhQX# z^Vjb>yJZ%1OeUeLvg7hZcz{)}7qRX9q_Fv?>Fqf2ag=AYD7(xA%Vi!&$75~UuVU55DQYs6lVQ?vvSBwrD2k(SMXdESz`DL#Vb!A# zb}@byR()1sT|c`q-JP>o^WC-D1B;m!wTEGi&x7@RDUB7c9@g`wBi8jj2&-P>vCh-a zSl($G&dm?rVbwQIakDZv?ZMcEvtz|`W39Iqrn}P$Ydzhu)-wvL zo{O;ZS%nqr_JKiP4c6iS$xHD3tU-)9jjv!Kja@$#yj`=2}3j%VUJU+l@C z!xwvI9QehaBQOqYy|ZH5qdfU8!#XeLuIQX}(lg`xk+AKX7BW zCmYA9j-zl3^=ARSWyj^|F)`L=z&xz={)!cU9oG5Zj+O6ztn1|%*7N@y*7uiJvDSYV z>-)*4Sl>s!#d`jGyG^G0zA*^v`^6Mk?-Suz-ycR`Q;q2Ve~>ubl*9Q3XTX(lCR`6^ z!Od_s+zw~Q-LSqN8Hn|L$Oznl{*!ShJP&uqOR>HW*ogIgzyaKy{(oY9A8-fj`+yf% z-v@Y=GWG4v__(+aPKo>CEVv(z#Qkv@JOFpVy1(?ox_-XLQS_gHbsm4lx}UAZI-mP6 z!=01ZtjcjNshxnIu;!2Zjp?cUl4G4u7uI|cSosvfT2EQ4y#`i(O|YI9?Xcc|yI@^! zeX-UXh4tqNld!J8`B>NAdYq614q#osXR-eL;V-P~^*Pq_J$Y$W!c3SQYyG9LdbP9K zdt2=juX8*I|GZfBD2`Rn3Rs^9 z>tda+=2+*o6V`d{k9Gb=W1ZgxSnmg`Vr?q2&GLS%`W(Zm#~G}8T*IozL#%qdz^aE= zIWv>$5g)4_p;*^TR;>LiER$d*nFJfkOwd7Qg1#~r=y2I(I!uwD8~-djX2Q)__1S|} zpHn!tJ~*~MSoL{>RiDpT^$9F*W>$TYW1W|9tn-o!>%0`eIxl6h&Pxrf^U@rv{@-HV z&w5)Pj#ZDTSoQb?YyE4m*0U39{y#9=;atORvmMSO9EIOweV-Uufyn$LnM?vMnFQQe z`B%WozdF`_*2h{;3#|R@h&5jit9=aqhWw}DrH*;REWiOyK2MJoI7^%|9&f~fj`|FigaXSBzcaVBr`Zv_91k2!li?N71GIpOguJkojU@n@XQF&Bt` zMN_H3xbHpf32-aN^YPwEg`*qYF~aa4?pW7WF~*7<0FRqxhV^&Mt;64rjrv&JvA z`fsuNAGi8n!^-cm<+znhi`r9R#m|A2Z#5jV_LyHyto9C8dv~n)2VmVVhFSf`VAXFL z*8Beg^(Ud#I4$06^*?|$-wBO3={py&^0|eT?_;aKe`V9+Vth&ros3xZ%8#}G^{w_U zSn(EH?Ypq{;~I|s`ss(5m`SQ=q{$#0D}Gtab+ASaw8l@d`Y*To@5ajKEY|w&VBJst z#j3A&RTEjyhhVJzNs0A*D1%ks+F0uwVYN@N+BaD3hpqM(R{LkGJwY{-uj-W(D}E)b zeK1zOldS&hvFdjktA2lD)$cP_{Zdx{x_)`E>Q@1)eoe8SuRXAyuOqOYuZysrue-6H zuTQbo_Zq7nacX>Buf$mE&4wMvoPc7nHZxX=wVAO|tj)X~Vr^y|7;Do$Cf25cv$679 zflY76*^X8J-?8d>8LOTzu%7p!HO)*e3Q__`;c8g#uMJ{to|kQ7ZRY8TefR?C2dw;m z#L9mrR=x{j$D0IJVCB0RJ1*0{54#PW<7(&oybG~59d5+h<@v$OSey0~wM=Hpw+L3g zJ+bNSI6qqb=UV+YV4a`K*7#@E_&BvqB*lxwiq{+~zx7u8eyja&tohzxotJ`j)M6sk z#G1c7RzRQy-x{pz|1j3|e-rEe`4MaXL+hGII)38=Bu~eZ{cmuZ9)BJ=XXc zR{xDw|5H}~2UziZ8=09@&%9XiD`Ca&fE9lj)_k*Y%%7*l{Mv>!-wCYwo?GosV>7eb z!?4CjTJ4o_Y(7^1(N_N@R{MIZeK*#8H?989tp1;@{t23xk*Y@;tol~KT2DQ!^|r@~ zKM-raiCFV3z&ihjvF1OIHUAr{JyBB=N$uZYjjwIBx53Jz#?U-Yr<`J%zR2+gSIv*I3Vs^es$ey)RbBdSC2~^}aY7>wWPjtoOwY zSl`DS$9kUJ!TNss6V~_d;Vo4OQ?CkG^%{WHYm3$Yg4O>&tAFBFW~AzwAFH0-u+GOI ztoY-x;%~P4AGG>kwE927+Fz&j*ZCyC$|oJx{+7YYrx8{@-Lcj;8f*U-V(rH^>|(*^ zu^T_fQ8;cJB9TBgnIBh?Nniq2esi(%S&nrc4{AK|&RgT-w$)6gLnu}~vSRgWX7z7p z^&f1tPq5loTkQ`m`?fQY6h94C{6bj!T?1=>I%DnkFs%Kahjl$~$Ex3Xtok|a71`7$ zC02fsSiLG@<<|}?zmZt^&Bw}bH&%YPu<{G)phza4)L8lC#_Cny>fhSx-^J=b+3LT{ z>c7?Me+p~8udMNY9Ze?6FBw*TS+K?z#Hv?Kta|msnr|W2eEY5O53%Z(u#@Sj>$NQA z@^G49&EFSm{xMkjZngTKwEEx1iuV?~2$a#N99u{J+17i;q`l#IX{wFGNF*J16)VXXRG!Y&iu3F@Mm z9Cyr*Dr4&kCPAhk>a zc`TQeNvMYGG69>&ZsYE9l<`oRgno*($zwyTO+v?FZ4$Z}Ym>mgv37X^_;pid-5w{4 zb(F{9u{H@rez9j@l`r-r(CUjl0lR*&D`vuxU+j+Y{4b7*@p>Hd*(b)Qu+GC{tgOAe zo8M{w(_`&_8SILgEc(|Vtof#6&9?^Y`oClKe`)m(>|sW#e-><_IgT4E-gv8hsnxz8 zE1$w7iU^Wi+!{5P@Ye;?a!e&W;HWL7fDj7WeZaB7?mXT~3KKDF<4Jikif`m{H~ zrqyw}VC6Fct3I2o{zt6-SFHZevFhW~$IPVqq`<0AHmvuJ5?JpWwXv?3PFU|l!>~Tz z%*OhBvj*$)%?Yf}H;=GB-^A%_^3~^?lvvkiL9EX=)v!L_^uem{1g!cl#j5Xqta@F; zs@E&5dd2T&Myg&}uh%Lwz2;)oYYSGru3**cGgiIQ^#8hEg|X_@6sukX zvFf!Nt6oR3>h(8Py*^>pE7<_kqI%`Ss#i^{dJVyfHyJD50<3szu;T5-igy|--UF=p zoPlO0&6gZ&f6CwmBvcbG#I5im+#4^(L+~$n3SNd+W973A)9jqF+HYay8$8JTPUBrz z>&=7JzYJErzQu|+7;C->*7yxr^*M}no-W`hCcK9=-zUr;cQ}a#lNl3a#@fHaYUc-) zu-4NTYyL@A`(}+NpQBd)J68YqSnEmjor$D>U$8J%y!u%A^u(&~G_3lrvBqDv#(%KJ z7yaJMta`M?+TT%F*Uw(8`^{6V`0;-*^C|!ASov4O%6~Z4_zl+ho7VVvQD!EMuYfiF zTdep~u;TBu#y`PYf7&6Yr`BH;YyCa3*1rJ9o>#22znz11-VR~?``S-%QVN=ExS3!7{&oqhzdxci*1yj& z1?#^L+ky4(ci+dM%39J3F)gFJOna}*M;}pa?FHN!bdmz?+ zPs7^pO<4PV8Ee1aV(oY2C=*%x-2rRA7h>)AQLO!binZT~N1OSy-$k+ZyF1o?&%xU7 zvpD+WiD!!EIQr9(XNq_~n)##u-yM3K8At!W1N68!jvk*jW>4zj=s*8MXX0u9U0C~H8EgOhVD0~O zto=WXRgX_t^$Hnp;;B6htKNmN`Zu=v|6uiBgtb2>vFiH_tG)>*d|h8RR=nm|`HjZP z?`N!dhp^(^#EKU<@#}c`u;Nw1iq{z{-UO_8Td?BYu*Sc&#s^I@GikmQSmU!}ou|@R z``Zw^NVq+A<9;{_kHY#sXpT$*zsV%9Uv?bN6pyj$5jgql{L^67qc$eI^MmEdSo3Yb zs>gk+|68kn@+n`(&xKXLvRL)&hGX-=ia!}E{x4YT*@SidAI7@=FJr}fj&=R}PBk;@ z`cI2>{TIQy{+nRs+Y2k-iCFor!piqgta`k{I{zWl%t);#Kh}C`VXdb-)_Nvkt!E3? zdTwH^Ct$iVH7iPiwVupay$WEhrwrD5>SC>@4_3WKVa-1eYySOK`&Fy`Emr&lGt5ZE z&xRGhG;Tuzjd5Gt8@I#baCVE*Me%G+-_X?|i z3Fm!XzjRpj%Z*jP@>uojj8(s>SoK?sRll8B^}CE!zc*O*OF94R`W3~hUk$AKb;kO< z7lrkCZ#vfJy_Hy>_l{zH-n)zSdG90E=e?vqoBZ^7FBjJ5y>eK8UtkNY|K4{L_I&t= z-t-+<`+o;(|Klw%@y!1^PF}42AA~i2D%SX|*7)<*_|I79C*49tGBXy!YHx3~55$T$ z18bI*So!Y9n(t3+?p~iizp%y!E;2J|{@j-9V8xq_Rgbk+|C3h#hgkXfFE%qNzc8%p zsW{g4)C}u>Gy^OC7OecwVC8!cE57%Vuj9M0;upe-Umq)e53K8X4%YR&1M7OejCDP~ z$GRSK{Gv?FiYjBRrvp~6;aKaLhgHvwSnD~5wVsz)>j_?JX4ZPLW38te)_S^Qt!D<- z{b@JW{plgre!a(9U%X`|zSb9twY~_f^%cZgUm2|R)x=s~Q>^uM##-M%to4n-THh?J z_5FgizV%r5-ve0p-}6}eeFy9L^&IQ|`x)#08~;~R8Qp)gVAZoYRy~_z)pImfJ=b8> z^NBS+?((nqBOBKEW;i;2RLnhPD2|Tr@v<-DJwEwmyvHwbbbOB!{$}Du@2AIkarAzA z+yiU9^Rd=@1Z%zj!^$^wg=x`xt6`m=fmr8f53WJLD|iP1Ut#5wYNeT9`4q%zZ-|x8 z0IYo0sXr5(!EPpaf}?QAs;}1*fpxyiVSS!&EIVd~F|jriZpF&~9#%aQuQtC^{%)-N zhvVqkJOL)kZZrQPnZK{`@E3bJ+{20=Z;gqk_}^eNo8vUY>fhh$KOHOIqu9j+_ploW ztTmCMa5z@|+%gMpCX?V`nGKjCbHT5aT_(UW*=_s*YduNUeZBr1*z|Us@>u=bSpCO+ z>FO8SVOFcTD?5%OAej6C&e!?S$Fi>R%i)-06gs&q%CM8?62pt^OaZ{$U%; zNbO%Ktn=0c>-wEywQt4B=OR`<@35|yd>c)R+p`+SsfE?Q6V`mgvBodPF2?V{%J(wX z{oiL3GczC!R(oN!JEmV39P{^$#rzt9jXr;#7u(+?un8;Qqgd;?iB;eKu=0(!+4NL> zU0C;k(zZEOLr&#j^ZT~ucPOSJ1u*Q$XTHiXX z_1(rgzn`(rZ@L|3X4Sh2jy=Cv=XV>{`F)S|epqm)nNRPBQ?S;z1gpM>t@ayM`zx&V z2k$b!)A}=Gt-n52yb)OOHek(n18cr`yG@Jc%Ys$Us#x{xjaAPjSoPeERnL1^_4M0g z;;Ek5u;Dec_ZkOmec$l{>-&yW`%OF-2cQy8hkN00 zJPoJE2XF>_182nVaVG3KVB%%QZkz>o##!+coDJ{55%_PM9Vb6%=FfqP;heZV&V|R~ z+;}z4gFj(i4@nN0`OW`2P6XEZFO7BnTVkF6D6H#eCf4<^8S8pDg>^n(V$yShe>a&Z zznob4RlthZ7AxPOSozMx%6AP`euuI0yMq-!^6=OB)WXWA8&*C)VXbF}HU5@0KIDjI zG9x0e;y19``&#YOv1U1KwcoVbpJ3(debkIp{gPwVFB4Y%3S-r;G1hwfVC6pvE5Ef^ z@o!nn=4SoKJDQa#O#xv}P}h}Ekr)_l{k z=G%f*->X>leUDY&&{Jk+)wdW{eOqAFcMMj2H{#g(V%7IOR((^PHt|&7!dUg~iuF8P zi1j=?hxI&sjrBZC{fC)f&%*{-_3VXJ&skXY+=Erm`&jjicgBoVJtMH{*$L}>48@8+ z2P^(&toWy~;@`!J@0|TQep0OXIkEP$4Ay?u#@f$TSo=8)EC1zK`Cr4zKklFAcgnvg zR{rg=@}GuPzb#n#|Am!*&U0pd#V?N)|68p1qp{-e#ahn|toeM-o0&9UR;>9-Va?YT zYdt?=t!ER~{3o#H{|9USPgwIOzhHW5{^D5kHN={4l+`}hYCmSRzp&ao#+&d0jn zuE4tA?!vm?p1``_Uc$QH-o?7#zQwxV#=C0jq5EwZ*5{8rSf4-2V153mkM;TETddC? z1F=4T{D}4WV-eQpkF{8zKXze#{y2tR9Du7h9e#kralkdRKAjI2Ha~ToB3S365!U$| ziJ8usjWyp&toin0&36uKzWZ3`?E}_%OL*PPr1O>u>%0}kI&amn&RZL-^EMFcyiLYB zZ@*%lw;fpL?IzZG-(amb(O>3wT5mS2_13|vUmvXb=3>pa4{N>$Sn~zkFg;bj^jP&P zg;l@ySoNEXRliMG^?QU>zqB_^Jk_r(R{eg!s^1>0_1?rqeFyB%x2m$BCC+%}Q4-ZWV2Erqq-URdj$jkVrCvDW(*>%4^BG4XVNDuZ=@>VAX{`D0W5rK&&-~8CfIL`#zg<U0e7CUjd1LjD|Im!o{*}P$UkPje`d0t8SnKPFb$&); z-QVV8ou^e;_1lSc9#3H1-!5a_-`-)JC;vyv)ciA5tWAd5Vr?Q8i?#U^+=f`|?}|0+ z_gL$lgq8nKSm$L8*8U#GZuaLYj>6Be{yf?Lv56eun13e1H*pwtaCV#mSBSL<(82OB z{F%S+dnwlX*J7=IC)Rm6fmM%-So{9~YyaP2?Z4j>tRxrJ>O1Xy?PpEdU=O+y(IphiKOc#JJ$750_%QL8S8p!h;_ZR#kyYlVO=jHu&$Ts zSl7!!tm|bL*7b4(>w39~b-nzDb-l!WVb-VXB@F9&$$@pfl*GDTYGGY3?Xj+xL0H$z zOswnWH>~SrH`euX0qc5siFLgs{MY2~;sE5px?U>baN1j8T`v=`u9wwV*UM$B>*XcZ z_2U21#Mku_igmq2VqGuQu&$R5Sl7!BSl7!etm|bh*7b4>>w3A5^RQm;|4e>)u?y$J zg>imd2S?%_xBwoF3*rU15I%|vy7(Nfhu`A*IKx|$PXk;AH^i-QBm4tyj2GZ0_%LpY zpW|jY;X4zrIgZ3Fa9!LI_rtC5c-$Hr|}gnU*8IO>)oU+S{+FZ`*R*^e_mnjPyRT{#}nRhV~wwiHNHL8s9sp-B?{}jOu*Xz1z6Y1TCD5k5Z3ka zC)V|G3+wvu_A!|#-^5t?X2x1?ajbmmVx7k>*k#J$jKFR@A4lPBSfB6D$Ru!2CV@9H z3B>cIk|Yo&yG(#WvfH@29A(^0CV}p;HVF)gwMk$`tW5%&Vr>#Q9BY>+z>QeDJ$@hS zD325P=_Hs0GJmlvrbD?ecE`B&7kdWu{(p|ic=7*pO#dBN`+Ej!fA3*sk-}fUiy7@W z*|El##2ViaYg8|+^D-Ih{zA z@=F+KW>$W=vGS{qm0uUE>v1gB^|&1C`E?ZQ`urQ~`t*)#;_Ld%g!TL?hjqPm!&?6o zta@$1s@G+#^}oYfe`vg~*IyoM{e7_3KND;HCvo)W-Kd!Ja~}`I0YPT|;W!hH?(FGb z2#>^7@DSV?tG*-fFxnU6nAkDDHsQgB&ULK!*%!Di?eT(5ejRao9F7a&PPieCUa#j@ zPptDZ8te1+O04(sBiKZBoa+#(LlX25Ud-V|{)fjCDRHV}1Tu zi}iWsFxL6HjCEdLV4dfX5R;$IM+DaAoyu6BZ(3oUpMhAPKc-@x*Oj;(^*)L9eamC4 z?>~|xF!?C|ELiKWh?&l5Vzqa`+Mn)N`SiuA_xD))KOF1&8H-h)pRm@y0_%M5!n%K) z#;W%{to;Z`s7%d@l47mjg_VC!tWm|W@~wv3P@uM0_3DQ;|BqPp{RwOS->~9u!m8g9 ztoq%=%I5`E{rnPXW|L8BtbFof-DRCla==3uRFJ=T1uvF7^+Yrc0_^QB3w7BgdE ztohnm?JF%`vHJTbG4m;YUi_JaqpQTHk+I z^XEx!W|Avn#cP8VZx~j*`B?FGVa2!7ZVb${+ta`S^s%I2dJ?COQ zU$$bse_X-FcvT7Oxr^^UjtFR}WcvHB-ZrOKHdE{Rp|u2}J=V~yH_6+bvs zEoQzEw{$+vc_Mu#y_#f`=&NCYyVSY?SEyg^W6$7-yT@`4#vuN z6jr`7vEnVlinjslydA_kZ)dR1+ik4#_7Us6g`_c==)7gdI&amm*3$xOJ-xBkvjnRi z>#XtntnsI<@z=5H@eHdTzF{Vk>fyr5FE3VpWwEY@7T86C{jfgYPLY{lgUkfSWhS^S z^WT35q&4|PF@FZEzkjzhR({Q~_HT&#^XK7V%trEpJW20cCj<$p9ibH zb+GEwNBs#fO?I0FZNShur*;A_~99qxfziUtGyOhuK`%|O}6?k!@3@KVy*8lto?e6y}00#Wm0`i zgxoj|?QOB*|AbYqtycRU1i8cQ)to@jeHUB|t{3)z>7qQ~q z#Hz1Pmap?mfz`jV)n4Cf?_st7A6NGsw^RMcas1d@b|Jd#Eqi5LHrYEnLPoZ1x$K0@ ztWqgkR+OKaq?D{=XOt)-5>YAquKRpm?{huw@BN27eaGkX9p`(_x!m36I^~}@<^MV5 zISR#(-^y_WE1z}Pi`WF8!kWJ%g{?o$Un%T`t^P3C=uHZ2GrS-W%BNP$vT0 zj9(6%*^lrDC-y9_OhxR!i8)^jW6!fYVAY`9M$jTCw2 z$o9aN@8Q7qME5IBM!t`Na=T+^E^7HF)AvsWwtQ<~kAJWJrNH(H$e5tMJwdz`*xIkd ziTU@7_XW1{AF$_T^yl}Vz?pofE@t^@|ChwtKdrI$%V=!9d*0hv*V}d+@_Ubdza&=w zkFfd=71#P&gPK_VcgE^}6juLhFyXwdSn&>E#XE;Bs^{Hs>L-5IN_75Z!5V)#tp00b z_1_%F{XC4goLyfDKsv|9~~#JE~8BbS21~3MH`eX{PdUTy)RtFGqZOuVdxA z7E|nfqxvNDA6EaFN?LriFM>6nHL%9h18Y8~V%>k%Vm%)p!dm~ESkK2#l(I;AJ}!&( zeB1=<`M3wx^YH|%_pu#V<2j9$|DRa-q$_RlwLTSb$fnopg2VWA9Kjo~o?nm4B=E0H z0{P1@vm{VkCV?(;$O24|!{$}^5#M044>K$;Wm)TA>-#j;_q*12%DZCC*91(K-d?Bt zN38iwTFz=}K1*Y*M<1+w#$(0X==d9_{yoQO%3D0eFNBqEU8lS|R=hb_`K)xxw_){n z-l=~dD}Lq*@yA~rvs_+1toUQF;xBi~FFWPQD_Z|*-w1mV+YjAk?nhGsdwvSrV)k3y zh&dG3LxoD#zw&8`6>l&O$5oDgec;sJ?bQDPYknSM?T@n0X=ZH%ZDS6{_5UtbJ{z#| z*{Aw`ZO=O)Q{f6${J&IA0!b?qKN1(s^YY6yD1pO%spo~U&WFZ0LV0_qeov?VaIEuT zoE)+a-joTj1XJvN?3C}5nV_>Wu4?(~{*oOlejcp*M{%tERtXnoJPok!KRvPXAB5Ha zYgoH>2G)G6#JV5ub$kS?zu&RqJ;M6_)Kt|hlFrYZI7I#>vF?ZUu*TZ~7p49{TpUlp z`n+-;&PDlhto!SBY)|u^w;$)H{tsC5dlNrPd9tvLrv!cm7r_lM^txls&j_sfn}M|+ z>#^43GpzMEfwkWEvGz-<>eiEYv$DN>y%H!A^QK&ss9;{P<{q0 zzdM-Qt@l)I%TMJ+akRPLML6bgT$eqt#`79h{`0WLw*#yH^H}G1iaPP~$u&$R1PWwh!`F3~OkH&hwd^fOVuqUwn`#tAk4#myKK+WS^@nFLzO z3~)GBe$%kVzsV{8!YRLw6*XBs{my#G7uaU3Mqpc!&Ven1DS>T;)&vg44bM9mIPCim znE|A$PkaW@K=x}#e|{v^c)MbacZ^eio>PClQ~w~=et6`x&-lFMqj*KI;?M6 z)L(`*%lok6Uvt`LY+yANuM}4ML73_BW?<#J+-d)r)BXpn`1i4{ha3$plFs`kSn=9m z#p{igZv-pfd06rGIqlCn?b9~0mLUS>z!6*$>v^lLOadKc0uGQlP$tM6D2rqQZjcGE zH?Rdb7uW)%Xl(iF=Z9v(r0eCtny-pZd1I{k8;mtyi?PnbGfw+kSpBDJV)>}Qd|3T8 z!|Jau*7>>yEC1bC{oioP6E?MYDldiA{sqUcI`!Xk%0G3=k714H53KQ|Z)Wi|p6Xcf z+hOI`539e4*n082#aR9C#Om)PR)1-l#~*)jtp1y0_5T)De`}rgUpVdm!OEv(3-x3@ zv~oPb@j|S8H)7>?2&@0ZE#vo}7pr|`toB{8+E2k+kF{9)>j(}p0l(oePTwksABp>; z5;z)vPn;X$XnfyeWA)>Ty#=xQzCVuD_kG2w|BqAu$<`KM<139dzJ^%i8-_K$4{^wk z7JYxfVSE`!aH2MhmkBN`lR#~m1O{Q{Hw|mnmSg3+59@sY9TVQm@Pf6}`c}Z|e+X9n z#ZLX*PW{JD{U_SS?>`S#|K+jr@8HxQ?9`u%mCrj^tN$@r`Mm3tuXFr4R=(dkzKE62ZO2JF#?Lo|m2WYu ze4oQ160GOAH4anW6G!kEtmlupGJmi*u#ISCU>m`vz?R{zz?R`Rf$bBEOM$JwzZ|FO zq@8Ew`2s)VXIv3$|2L8oSb0Z0)w92^>yNV}FptOYQ@$E&y|-Yk-(IY&j$*CfIjrj; zd1tGs{z6#&mBVV^5NkcV;}GjJ8i(;59Koxw*6(wffahca{v)%YGQP;jNT9GBvH*?b zu(^jEF;A9BU`b$0V0&Oo;9y`&;8I{q;6Y%k|5O*vyd_X2u;*vcDrUbz@0deg^lMzq zet<LcVOQl7iR<3W7C7X)d|(?-)4(>~eptPX!`d%zVeOYS zL3_V@Z&zSzaU!s__$@FIUQ#5R&uoD$pHhJ>-+F=VdKw+r;=h5F@7q}UuEL7C65kIumQy!Jz^&sXp!gZda8%zr}Zg^)xI&-_+P;x0#3tWyb|j?Iw@2B3s$_pvGPm) zvgM=v3SpXim9gqKbm|Xv>Q8s-uXXBwg)OS*-FE7y=@~zt0$BNX!pd(5R(?wz{|{?? zhp_rf(97bf{nJ?ew|CsjsXrX6|JhjM`v@!EL9G67IZo0$em?oI`mf@Yzl`<$6$529 z&?uP>CdpyT;7yqcSRjY2e5q{oR%7M!smdc(VGj;d|9e~l|AIsK0oHy`(q$O^>zyIkDmw!#a=KIqrcK zZva+*BeCL7!5Yt8tazU~dHcrCzbaP$ov`|wiIv}Cr~OK&{UN9RWv70Ie(~c! zixq!>Q$7}JKIUTOv(#z7&uM?rsh_TY{P=mX;+Mzjzb4jvw8Ofe_QzV^H?Z!n%dzgK zd$9K3HLQ5vfcW_p!YZ$i^?cqPKYDC6<~i-RJ3fdt-uqbnrydwTeo?IYJ+bOfa_WES zlwWYl|H0}n{UD2Hzj|IXto}P;?f2eT?O$`+Ps3WTWmxO;G1mI+##*n-Sn-n#jz1qQ zvC8{8~u zW3`{~X)-065ir*Y-zYf6KuWw_;+l&?OTda6j zu;L{d6@R?BvEsGF>aRame{-GoTd?NqYpnUYjg@cO(H39*m&5A69oBq|!RmiIR(}Vu z`n!(RU(zx0$D0eQzj9dlHozeQ^uS^K28P}m9K?6ZlfM>!yhX6`Yl$`92v&Y8vGO~G zLnM%Xto0wprEmmyzYv6MUxsnkpT<`M zYkZ?|hyXiq82^JKIOlllPvfgAlkg~+1iq1Je;q6T;uGkP^6ri&VAcP^DZl8HXP+3q zzsgwcyJOAoYN!4M$NxF)^Gve-)xHJRd{4ld@BNtJc^9$rd1`X}e9K^!x5kP$94p>p ztav-H*7q_FkwEGx7B7s;;0W%GwZ8LY68K6cfq!HYsP=mN@l165nd9?V<4rd;{`|g- zNza>%RezsTem=0(_&2Z(AnO~-&jwH?unnMDV4J~L0*Cw*UJq=axGW7^%`e{;xRmeT zu|BW)7wi6#Xqx4t&r8x`i{^Pbus)9|fc1G$Nv!9o=deBxYK-+f+y-m@x?p`?^eWc< zX*|}?mz;%j`=g6~|1HjgH)8G2U09zl9mKh)|2@`z{RwNo-@sb6zp*|qN;cg}^z$$? zV|~A7Zfu|aMgP5fte@{u6YKhEfc5h?T48;D)&=YHxd_&LF2xMb+w7DdRC(BH{EiEXv7PCL4?PB(~;E|Zi_V)nQ6nV9`8dpBl(iPFvt^7FSy;h6m` zQ72}93-rhT@eLx=@I$-?>))f@i}n2^r!dRo{e`tY>1J6z+Ryp0u8+!C`>!e1_0SE6 z2`~;v@OxP2^>&$n$7KTCl1U)tZ03uAx#W-qcuo$R+sYC1Fq!^l%JjEd4q5%Za@c$h zQ|#SWIX@6Q!<=9}{RqWl_D9qj|HFdx!4L3w{4ZXNwccB>*82d~dSAj?@4v8R?|G@_ zT7FvZJdP`1t$#zTQFX@J4}-DJ-?y;ht;UM?1y=tzocf98#m_GrR{i2w`P9V9ryW*4 z{cwbYrrTQ{uv8izGs8yz3R!Te#Z z_mhh)AC12fRz96@h=38S>v5?}`9Z9FZeYbv@pk<6Du@-o0apBeSn=oJF!6Ta2)>4u zU&ePVp1!}mmdpeUkV#+_R{p!N@;`+&fA_KS&%DIqDgRe3C!@lpRmS%9V`A{juX6ZnJAyMSovhd%BKKUKBchosfx8< z8ep9_?XmJ3fR*25toVzu`rCxH|GvT@Cg1`Nm z!{)DLqjv^t{(i&CH{o*2U-@Rl$~P}oz7;Utd(E->?}gR>1g!O0j1_Mq)_HOi>pbyR zsHH`G3M*bItauHuTD^=FZx&Ymi?RA!hSlFkSpDsG>YsM%CtPVY6|W%Hd{)Am&sJFb zt1k|b;2SuMSK;-CB1gz_nQh>^Bu;z-!#N}zHNo|eA^N0`L-w4^X*`) z=iAq?)^j4(^XxRN=h-<}-ygOJ>-)pr!#Yn_V13@X4(t5=1nc|5c42+q_chk%dq=Q7 z&pU_pdEhTtpI_d?`h4#Z*5`xC*VxMCwdM9Q;Cwg-&W{V>FfNO$<0`lYu8V8p=C~H_ zj%(wgxDK9#>*8s+9-fEm<5l=EFD##6`@bJO?=v}M4ZfDc=I`W)`8?L=jaOy*|HpBf zwYn0l{nJ?2PhqTD<*=@o>R8uHQ*6C?-ph^$2et?k0^4_R&5YUaVi8t8%doEJ%{WZJ zuW<={9*6KsWo&aY>&&aW2OqI+I%toY-w;xE98zYZ(@H(2q1#ftwA zR{YHCttXwIrLoS>dRXUYPptEEGS>OI4D0;dg>`$ezd z{nlZv-%hOc`vzR_#3GpzONgtdNsvDR+_ z*80uDTEDee^R*RgzD_yiH=XiiAKUmepEPXlCRp>?6>C0U#hTAaSo66A zYd*JP&F9xx^LZL;K7YZQ&&OEvS$wmNO!HF}Ykrzwjkgn4{)4gln}9G67$f>1H9;_%~pU|8uPIe~&f(U$Msj0EZY~ znolec>3DfD>3Ef}#@|FHfxcMzO~T6WJ*@opV&!)ME59V4T0ZxqA5g`mm<8X%1@WJ_ z7A`>t&2g9kbjD4?alLuoD|lAer#BRD44Eh3bd=A+xha1KcO~9xJSbxAcjLYIFusF- zz#rgi_!#~NUkZ8tSIVt69}&tcVk?dQdon8L4_aW&Zzrtvn2fbv3$XfIjkO*-aEJb7T7YZCX>JmvRB#fU{GM&QPTrkz@>q02L2b= zI{YrMJ?~wJIUE<@mzezqw`2CF?7x`(fJwG7KF^-l(#Px%s0`M8SI1h9rr1Uk{r9o4 z)-Qr}{w}~ezt`co+~dAZIQ|PO{?pqnU&XJEHHscs`MiO3|JaBX{}#6B(VvI1!+KJ@ zN?7qaV#S+;74IXgct^0}-Nm|JJ+;$%(tMT2ny(kI?pI^6?pJHD?pMEIjVJl8_~R*v zHJ)Br^(Q*@-*)PMj5YrAYR`oICx@)ZY`dw+0L#ftSTmXH!0R&t|NA_G0C86f2)| zSp8kc+J6tQ_FslQ)>8W~H`e|ug|+|cV(q_HSo^Ol*8b~{^}I9@>v?Gb*7MQ^%<_8& zu%17!V?BR9#(Mrt^SO;j?+-b!-XBU~y+2gPdVgqv_5RQm>-}LM*89UWtoMiavECoH zV0|8Q2o(SUWd6e9X@8W& zTECXqYI)ueOn7fL*8bUqwI9C4+Rs<9_EXAz*0c6^A*}se4{JXT$BI7%tN(Yf`rC}v z-vO+AFJkS#J2*suv|n0&VO$nRa1*TO%f2!R%#umqBbfyD%Or3?4q1S^a@d^yD^?<6 zE+LaZi@=t^kieF}?7)`5+Q62;p1>hL!1=&o-**B>d_TEgJHryFh@+3U{*rXUTAu}u zzrtFtdsyq0>uc*@QL16>_mS97Ci=^Cta$HY^}i9T|DT=mKb-P}-&kbrmwZ_9N@2yT zffcVMR=lB3{b^49r8rE0omlaYV)d8cfM&)Tq{GUm09HO#R6k<%TVnM$&Z)oHDgPL& z|DQ1FdVe|PDZjP+6#r?gtczpCZ;I7_U#Ih;{#a3F~=e7}ot@5!Um_R;=fd@3Edou3|lpBs^;Q>3QTStmlyuSkEKXv7SfT zU_FoY#d;oj1M7L@Q>^{7A8Y;2VXfZ-to2I!o#m_fFNHN9ZLs#wL>wmI5*)#su?9J%Ba=WwIb;F4%3*Uv=6&|vnEf6%$L#lbIA*`c-(vQAO!Yna@bg70 z#Ow!bfHl7(o$`fF`Btp?KaUmVKdkl0dfZBM{glJHe%fMPKl8B7hUcxr%I`C*_(yRN zKh{1H*GH-oR-)@88&-eCvGz+CYrnL_iuW?s_!eU2y9=xTD^B}NCoLc4TN$gr?pX7+ z9;^Q^u=+oVmESF_{u7_F->LrsSnVrewQq#gzLV4bRjmAGV&(T9R{vYD`u`fM|8rRR z-NEYriPQ1(uYuKnSFHZWVXfy%to6L$)W46_U)D1gPcDwte+{hsTVv(l4=ew%So{4g zto^hB&_ zKFNNtOq5R!to}-3_173{zFxtauTfa@H4|&TmSWAoEXpJ;q|? zGZSk)-o{#w^;qli8CL#>vDV`P)_UB)S`Y7nWuoVu>{!n`Va#-Tt+B>85NmvMu*SC; zYkViL#`hQ2_|jjrmKt9ktnt;v8edzi@%6v?WD*7Mw6tmnClSkH6!v7YCi{K@ju^IS2k=eaP}=S!Wj zK3^Jx_4(3btk0Le#JZjyV(o`#E?Io-hgw+sVF0#Tp0@~VKkUWY57)8w!;?Q-OYMi3 zu;P!xivJc?{54qd4`9W=juk(_Wvi+9xv}Ec!rG57VeQAsSo?7W)_(j3Yd`*uwI4HG zvH04L6|weXC#?M#!P<|@u=e9uSo`q;)_(MUv3S~#Rj}r_IoABXf;GRBvF7((tohxF zHNS_k=JzVr{3ia@deZzpgEhY$u=4ARmETCL{8l*Sd!6) z8ee&=@ioO7Uw^FpXJh66DOUdHu;P2y;>XW{6~7i%{N7mc=VHz8F0A>zjJ1E$UblGK zzm>7}ZyT)r`zqG{orkr5w_@$z@38joEv)^U?uNzJ{wpWe6wZ6-7u)bL9d&%)Vr+&ek7GM2U#G1dRSnK&R zR=iPI`}HlX_`96?r=0RfPI;zVmXF#O#>%n<*1sfd(iKlg`vwv0MqBpG8=$c4LkAN38KCyJIzV zUKPgr{@VsP0UN#_PKf8>M0h7ojIZD%IPG2H;c_?`?ue7)H*pGl5Nmy|V$DaoKdpbw zM_a7=5v=-OI_2k_^1E35rMhSRYd-T~UH_f2`k#(9-#=sJlkL9sr}{Op;`PH;%k!3C z#Xo@6|6Q#0%>I|P)cvO_R=ypv?muI(?mr)3-G7c^-G3fo-G6fZ&3IU^23Y%LIM#l7 z7i+(Kg|%Pq;iUAJ_aDZCTVm~(iCFvPW1N!uKjBn3*#qk@HLix!;GQ@wUWA{(pW$@) z7JkeFe93>Uf30^Dto0s%wcazZTCKub@9S9o{fE_G+W)Mj`U_$8R|>1YT3Gw1HP-&= ziM4-5V(p)4So`N4to^edYya%Q+CRsz_RnRk=a>6f&o9Xz+DMpgFB{hL%d=R|FJY|b zmu6VcFI};oUj}16zf8n>et8S)`DGQ>^UF4@=a++6&o39To?rgJdVWdt$i}Dl!OU3i zg9UJi4Nwv1!VPe4+!5!&{c&DA4(G#jaellU7r_6+1@U*d5WbEJ<3x{bJVo%+SofD_ zvF;AF@>%7>HbzYpsIxlWvofir1+w44@7g?~* zi^5pvMOCcxqB+)i@iI=&h8~SG;Mq7MUV$^=9XK;SinHJ=_(}W#KZT!4U?)LVTpoKN zTd?{#0q%ek;$b)ueiJ9g@8cwR8%~P9$I0+boE&=zEx!~v6HbW>;#9Z_PL12*GH=GftN@V$E!i8~WTpwq_J@J!x3VsT&z*+H^I2*o;@5D7LT{@#}aho`&DX)A4#d1AmU+ z#NXqY_$r=-AL7|KLki1(4laP_;s*FF+#S!yWAH+}2rt5G@nXCOCoJLlUng)P{5wvL zlcco#QsV456)uU>;JWw;+!d$8BXD{=3unM9aYnowXTm3NX8aq@f)k~(e4oVG@Kd-X z&Wh{dY`8Pdj)&r>@eG^;FT*+U4*U#0hC}!o&V{|ymTzwSB+i42w&WAhT{CF@f zfZxCc@%y+0{uGzO-{I2u7A}KRrLla=;{3QAu8zy&4!8myjw|8?xGLU=tKkFK3)_DE z0Vlw};e_}hPK48@wR{ufXK)f+0w=}QaWdQ-C&w@06nF?ui6`S!cp*-W*WfgGCr*nG z<0tTsI34~Ir^m^ku<>QUS#d^O2xr0-u-DY{zZ&5LxI0dWN8*fl4t^4^!P)Qu9PK<3 z{T|E5*Kh)yD4pe-5NF5HKlSU^#z}AwoD{!RC@be za>}2>>2PPPzYl&*ro&HV>i>)tKSPFKe146pSnmTvu-*rDs+|5VsvIZI7{9+dSn+y0 z*hS*8A|+SntEXV7(6~&SLTPKAaoteK?HuKHLfG zeRwq1`|#UX@59@%-iOa%y$}D5^*;RMla^12@l?XOa2K2#Pr`ZdBAgd*#rg0_oFCuA z1#qUPEPg>;8W+ONabY|V7s0b|QM>^c!-sKkd=o#5Q)jjKC2&~`y@puV!w{_N|7~o& zc-~&D{d^m1f91}mniiofR{!;I+}RfQ)z7Iv(y2cVE1x&8uFttxQI}v{pDVDg&rMj@ z=QgbI9Ky=?8dm&-*)5Xlhp@(91&5g64mga*;t2i#>%9CzCg86!15ENXzafF#G6~d_ zLl&T`95%m)HJ_3!*LOsIPMm6D6V`=%>D>wI$n;W)8m)#z|rh{9}VhTUN-{U z1pN~@5*N-(m?y~JpYhZ&`vVTe>{l!rv)^I)nEm)QV-Cml-!kS%oV&&BKT^$%Ij-1y z7i&N7!Yse{yXyPVJnw-V@|$}}^J+Xc-gJR&L7$PsR=>RLd43Od16x0x16xKBnf5c} zi1oKtHhMoe{vB(4&*f9T)}R4ad3&t!_rYp4D%Rf5U}4ODhpVvq+lJNOVb$jW;3u32 zKU6slQs*Z!|H&p3;8~gLr)FU5;Dx}}!O*}q{ux;LzKeCUVU?r{Zojcn5!tH{qgmun*6|KV$X(2rHi~1uZ|F&*iZFspqxE zdR`lXHQqT`^R*gle)eF!PyK}TK9#PJMN)qGu;RDEny=1I{XS0lYgpr(=aesV+HY~n zzrc!r!YRLvHNNbHRnsyog*BcqRz8if=DPz{FTJtmdln8e0n2fek+?tFjMe{stoUcK z`hO5>AJ^PVR>VqFKR@;hqrcR0%DZC48-_KWH?ZQZ!Wz$Uto`!{YyaddYArRtRk8NZ z3t0PS5Z3$n9IW^8^;qxYUtqnD|AO^C{x{~h_mUQ~eDpq^1?zdQ1lId_ZLIh4c3AJ@ zL$Th+=U}~$ug7{HKY;Z5=p z>vtP#{nC`Me6@asu-30S*7~)@TEBi+>o*B&{XW3@Jmqt&&r^>+_WBSf8gn#QHoXT`3!n zK2OPu^?Ay3Sf8h~!zGB{4VT0ta49?mm&R}7GI$d%i}&Ml_$)4uZ{P|zVQI_1B7Oo_ z!bS0OxH_(ko8l_?MO+n+!qxCh9LDeC>i82}1Al{S;#0U5zJ_b#)Macub#Pu>7gxsh zaC2NAcfil%fw%#F4L8K|a3j1FH^!ggCipaNif`a%_#tkN)0VaIw7>;%OI#MW!cB2& z{1R@1N8=apG~5=yhuh)*;r93>?tri3j`$(&gfo@1{5#{)_(j|dcfpgf?gvY-?gvLP z)xF=G`pL>$Jk`&Ob^mCE)&C%;{#2~~k2vjrbjt5x^_RRt{P-2I%Aa@2+hJ?vd3~_% zPwzYJw>a&8b;=((<=HD*&+5M%R{za#biDp8>9v^sDVXDU4c2&eW6k#ota!g;#Ye_}naW~*lL^}JdU>v{D>tofaQ^}Mv{DA*7NG$So4=MZ1FUIIk4utB-Z>@ z!kWLjSo7BcYyP@p&EH_G`I~?>e+#kZZw1!;ZNr+sgIM$TBi8)=fi-^#t6S!pzo)R~ zFE7^omBgCA8d%T!EwG;VyJJ1?55s!ipM-Ti&BJ=$Uyk*>zZvU!|4Xdr{WDn4`~PCC zZ>AdY*S8qf`nJNV-`lA_+wpd+^*D*O9uKhABTr3>uk~nxwI0K;*5hrg_1KNI9%r!D z<4>&h$WqJVX*~*Itw$rQ_2`Z@|0A&Ge-74sZ^4@H%UJJMiE3MXy0f{wiVhH^M2O=##*-T3hf zVa2b3)qh*8{0Ct5@;cUevjZ>Vz&VYV<3I5VoU)$vv=ZmXt8f^v#_jMLJRGmZGx0}w zC0>Vj;q~}9-hgl7jW|_(%Wo6TgFnV$ycxH|TW}xz2_B6<#c$%R_Ch@Nj$>&%sCVDtr|0!QbH@@G*Q3e~;5QwET|aBKQQZi%;U0@F_eD zpT;xr8Ta01@<7uUXT{@iHas6^#~bj|crVU@f5bWQ zpZFP^you!>!Z~p+TngvLb#Niv85hPwa1p!!7scCfZ+sH>!B_Ds_#qyFGd8t+N8;jm z6t0WM<1Tmt9)l<1#ds3_7*ECr@DzL*zmEUIQ*o|lmY?oN#jx&2HL>oW-JSX~o%)-w z?q7GD`U#p_JoTRetA2T`=c_tc`E|f0NT@ds;mO#dc;0-hc$=`EzrV$L{+<7dLDQUYkZ5bo=?BQ z49B~MmETjXES~az7OQ?Otom)S#xoj6XfPLRem7%%zVV$*hgWfk_DNb>K4F|4YkZ}! z;y1yX&pufB&c<}-ZFI_yVD*=*je4>c4IIzKs=vZ1--b1xhp~FSh?QTm7gS;+&K}s} z=f@g^#%<5>IsF4p^bnobs9@8?Ca-p}h{y`K-jdOx3n^?tq) z>;3#V*5@S;vEJ7+b+-6=UoVS8tXET<3lG4#@l34sU52CI=@5ylvQy=cAMc6tRUC;! z^y?nh`X+kOei!mfJuf5H{wRdCo@H>D`VFw=yFJ!^>yEj6y-_j=Oq2<@S*HIlvHCxO zl~3X>){)|+#oDjgvG!|jtnn4W+W%#+=BG0z9d8s?yro$E?RVOz>Z+cshi9I~YuXHb|C(Gwqtb7_`<^pM$2uQ!b+`E1PxY|QhaOnx!wjtRVLR6O za0=^ucz|_2WbI+`bUr+Xbw0d=bv{hMIv-YGeV+O`*5`XaVtu}s^ks{u&-e0UeZE%@ zhuF})aV|U;=f?lTdGKYN7pLxN@$%s^I6v-y3*d>kApQs!!pCu8{2wlY^Y*fMMR7x1 z3=eU<0#odLhPB@>V(s@Ny{&)k_uSb2)bpxh?e`b3_WK~L{XPwAzpumE@84kU_v={u zJy{=%to@!BYrogV+V5Sl_WM|@{k{}yzaMn`0M~C?vwGZ|J;sfi*RK=j#IIOBH5#>O z9_L&*?)PzDWwGYB4%Ym(!J6M!@kA=Ti5t?v3as~!-MHIii+4)pM(++*{PcY-->&>Y zVcY}P#659G+zXGy6Y*U90bYYY#QX3vd=9U`ckwEmvY+L*2j{|jaV5MDx4_@yKKM4C zjQ_wN;vUTJF0A=Jt#TIRu54*}>H6DmLTvaV_;)sB4ZM>L*cMlxWeYM8cUxnA1K-+X z-hxe@cL0;V_XF1cxrViW5)QEZNY_h;b$#Z;x;`slU7t;{{{DEBQ-3_T7&2WhF5m?U)@8h17Z^4uBVcZDc#tm`Cp_b25 zTm*lBYvU5Q9j=WB;*$7v{4!pOOW~ck96pOn;|I7r&N0mL)ALwWoQLu*I2Rs;b^l(7 z_58LASEK%~xB^Z#+~PICg|W_~8d&%D7jZ%AkHvZMB3uUVz-93ztmlb4xCZ5kM_4}3 z;w)Its}*o@$~$8{|GtLxeD(o;k@|i5TrHwA0|EX2BhY{a@Be~Go+uoR{rNc7{rF#;n*mpx zVEJf18eq+D7i_gWZy45ir(>u?zF!4Z54>+`*9G6^J@NM!z#T_%B2G6}Sl zLl$5Ne#{RnouYCA&JSz>*9NwLy8>Il?*d!ED}imtJv~V?W$~+H&F|}u=VQ(HdaPbP z!Jczs~!#vGN^?mG2^~e79od zdl)O@o{xTfv{_+;q^|%@9e7=e`KmTIQPoC)-xz(tG zRX*G)pW~FT#G2o2So8ZWR+Q6N^LrC(eiO~GnwsCzIFV;}kXl&r+Ta9~_Y7>~8RfK} z<+NYvl>g5u{}yXL&SU+2l0O4mM(N+wNbSEx0^1I$8`xHC9M<~H#ravVZCLRSV2%Gr zto?TvtG}c(EsqfW<-lQF4o7fftn;~xOu#WR!+b|3fn72Qe2aDeJFjvA+z4y|9tXAn z>1GkgvjBMlTYz$b?TY9V*akEetCyugxy|UAz*hej)_fpg zVC!KiR{y)Pp8tQqigy?PL51XVERx{D4#br&FHlEsL-A#j)Rc^q0C$c`vN-Pr@4i7N`9|r~MVD zy*JG)ug3a(WgmW-@}Kc!oM~bF^(ccio|ahiGXN{UwV3X_Ls;v33#-3^i`0{~cpj^M zAFTRsV9nPCtX@uH&EJ1m>lIpTHFf{2j+Orito+}=%I6)dd^Td`^95EuC$RGQ6RZC; zZ(B|EUj(cFMp*s##_E3|R(~I1^|uGBzbj6C@16MZb70l4iWR>jR{Tj=@mFKTKaSPk z?^yk%Ut&F}zgAfN4aDki23CI`V)geKR)1Hq`b+k%m8idhSp7A{>Tf7kfA32pVYkz)&b$|H{he)8n`)X-_Pz@_yC#-zNV2yV<6SD!P;v{%J4$=NYtoOzBH~|Z~ z4JX9=a3XvJC&oYEB=|bk`{zBJKpSwGRZNIeVg0?t@kU{t2lKJwzmFAvD^~pPu;Smry1omnP*0Z8vsn3*$I2&+l}|gTes`ySf2aNk ztf&*P@}Gf~{}QbHS7GJ)mZTk zIrYyt^>1M9_jIc*pAdiWG}if77<*x>P*#qZYhvZo7;8N3Ro|+6y|89sh{{7&VWHE0 z1y=vNoc4FI#-DhN^{o1tvGU39xV%%pzTicypZcPo4Isu=2Z#HU7s~`!DNS zE7AUY7Hj|2z`EYrV_k2N=;kof>(USJ#H-oRG>AlCSP!^;1@ zbUxzsDCpzula@sG)+8^7n=JOy9F~CPy<4wN7GFQIYvGOg7HD6(@ z@wUOb9{XYS|0-7hW3c+4>C}G@SK}{CH#+rqVvY9@{+fU%@i+J@ z!pS$f~Gx#k$n*~^b z=irTaF5Zb>V1d5GZSe`*4*!JPM>)8qR~K;k`;cfUb-i{w&<(Hg9RGt}U=71>RxQyd4 z9zp$vcqD!SkHS6iXgtViKi(;yjjQv(@E)##*W;Ra53Yref=oKd7KwFz-4hmTn{(GZE<7#GH!xL;HG#IZieUL=JC;(fRkK7m`~%eW1` zjbFeIaa)|6joA)|aC=+=cfil%j<^TzgoonJcs$m6&vwe+!zs7{e}q%wZ8#PF3a7^3 z<23k3te@9#13y9eeVh&_;6hA~Q{xQyN&FqokB{N9_44}KdT!SCP;cnQ9S-^GvcdpI=*)%!RvUW&`$4{#m)A#RJ8 z;huOo9)VZjsdy!R2d~1L@M^ppufd1#T6_tAg#X1|cp*v2!P^yQ#V_H4xErp5yWxCtJD z+v8X9%XlarjECW|csQPhN8oqxNW2k`!e8Lg_#_^Kuj1G6pLi@z$&E3BbK`NiI3ABH z;X=Hi*2CL)L2Zq<&)H^FOhXZ#WFi`U_Ccs*W( zH{eZpD*waL=lBhL0#C!2@pSw*o`KVSX5)Jk=f?y1hJ~uQE#F|?0*85@?~1GAp|}QK zg7ta9KFsT&cM9wCjcb_OsrMhYEIsduJ@z~Gmm7z8KQ4nKxGvWJui8c?Ku;W|{wS3b zV46$UAFGM53%;c7RO&XKIQm2)_gz2n(uU9T4EZ1Uaaw# z!6EXgi^I4Rj^J0Z@}1(8FT$FyjWP*-CNp10WfJ^Rj()3kT*zc!Sw)Q}2d24K20!L~ z>3OWr<6l%c=k=>t|32*;oQMfoj}zkqI0-(Blj0jV8GekD;|%*P(-b%lPKhhwRJbFC z-YBf^x1NXf{}ZjpC0L&?aZ`K&H^YD7<~Y^Ymfrwe2oJ--*x_5Bm?;DoIA z|FFJ);)dGO-vhPB8NRW6w4V!Ot#?(d{oERBzWQR@J)SoQb364`W6kFdtp7jh5Z2%K z{D{^6A6WCB?0{va?XfHFV(}HPG**6XvDNatSFxVQmSg4j71nru#p*xVQR_+l z7scwYF;@E#SnZcN?GIw*cN6pRx|iiUE8*i+uQFD=Zdmc=V#WI!E8lxg`_ji0*=FE* ztp567^*0+U{x+xnC8vI>@8i!`F|4S~vBoowX*95D-o>=`2$C{s+n8zLOL#*@T zQ>^>NVXW`J_!0B*lJ^JJ_d6vzX_@eGjh7kodhZp+JWhGlu+FPCSohaHSof=mSoh=Q zSpWa~v7YnC#c)$c6-Y*_u}!)jjw>w2q# z)ys?6dW-)1P+0v9#OiMXR)2G`uGi&Q*Xw4i>vccY{yBklz5arAy*|LYUZ42EGS~H* z8|!*4j&;3;v98xPSl4TJtm}0M*7Z68>w2Arb-ligb-k{}x?VrUx?cBSU9ZQme!jwQ zSU*o8!8seRex5=`te;G1Z#gD#)@|VE8Z=vc&RT~P4$-p zEB^vm{nx_kzdhFVFcj;0n2dEjtiue)+lm!`FIM~`Sn)34U_4mk@h)1;5CJmaFwTV| zxER*w7thHg&_pJImt_(dDwDtzIb;DA%3nw_#PG55||vbpTLrs{Xkn{_7gZ7v!B3~m_u;^{>9Pt4afP3pDf>K z=e`T#=>GCu6-R6NZh@ow%Xfbq-Cw>Z;^_YJ{T_}c=X(>5p0~cg!O>)WU%=7x(Dz?B zdLH^tcFFRMo`=4(;plnjyBLn1hrVmz=y~Y71CE}DzWd?mdFXpQj-H3U7vSi5=zA@W zo`=4_#L@H5_fI%_{`vj~N6$asX@9o-LpU$ag)8FRxCxG)e}4NeI4>TK^Wm8|KVFOr z;Ptp5{u~#=M{!~N3oe5H!9{WU%Ql{3I2SICtKnyHXIugg!X@!^TnewirST`Y3_gm> z;!C(Z{ufuknXXvA6>$Mv30KF@;TLiA=kNLRKN?rXGjKKh0ghJo>u<)@@jhGwpT;%u zFSr)Ihil`MzgYfta4uXIm&f&Rb6g+4f}h8eaYMWaH^QrNW4s49!AEgZ{3C9L|HjR6 zx?e5-7PuI0iL2sPxFv3ld*U{D1bzWe!)@^r+zxNR?eRg}0iVYm@qOG0C%cgETA zi}+dG1=q!0@k{t6JOX#avv7C34EMmF;Fs}NxF>JODSu z191;L2#>;p@oYQdFO$F~nFRLAByda) zS%9DAu=#-;F{i$zk=cyp3~ULM3~cqP2lo6wXdSbkQ7`;V1#3SN|2Qs*|H?W8M?V^f zZh6mJ5^L{g^l8j~f?r^*=Mk*+xqzel!~eRDqtA!_*L|E6C;8pR@ffGW_P5`j_q1HX zDioJlpjue{H^J(^7goMwvGSdb6>qH^v3Lh%@;i&w-wmvIe`EEZ;eqZEXHB#uftl;|EWFub3fK7e!!aV8>&x-k7OF8xof}C{wRqF?=`~euNPLn)3N6F z1FU>@V_iRIu=ewRIQstPe`WvET57x%a0<#_!1}ywAlBz)GqHd8MB99d^?BJ1tk28R z-m`f6ysRwNe00R=i9ZQP-w*w-bvPqFfurw-{?|jC8Rxri@$`9FBOHA{^uJ!k(f33D zYYC3NANpTk;^_OK|8)~*$C>}K{-4HGaP)oA|LTsT?~DG|4EzlK1c&f>oC_!U+xpLq zi{U)D70!#t;Cy&F&W{h_==-Aobq^QBIsUPDg>Y>geP8syCgbS)qW|?dE{ZSU==-95 zJ+S_w?~DFd9vppN^uOxj68IHd63@ob_eK9}D=v+H#nJag|106Y7OyNWip$}~IQstR ze@(#A_ecM0DUQBB`d?>o^!?HQO7)-h{~Rudb-mWbx?WphYvp){=& z>tUPI{#&R0S*QIqr+xB=%EU5w3M>EoSoxR7I&W%X_0j_Cyy=2<-t@ydZ^mMsH#4!$ znpJ6Q9X;E|0)=R+#2^C2_V^&P^xz6)br-xaW~ z?>acdg1>-uz4gYr9)@7;|M6J+e-76E{}5~cZ^qjHUt#V4Q&{`|64w6z18e^$er)rj z{htME|L4V(8DA+}1=qw?aSL1xcg0~m7+1$raSgl>*TgGuExZ-i#^2yN_zbR#ui<+5 zA6y@&@N8#4kF(+ixDalLE8#}C4vv1l;(xWkO>jrt6!*l<@Ic%gkHszUG~5y|z^(8a z+#2t~ZSXPt0=|md;=ge_oPr-b(;h#GJK(~&Bd&@&;YPSKZjWEYJ#ZI13U|eG@Jo0l z?uNJF?)WI~fq%s><9~5aoPr;u(+g+8y>VVV5tqS}aCJNxx5QI$cl>3AFd1fRsvyN(k?68L{#oK!y;D3Z{39-JUuBHz_iz9+Ho4ss-k?|y-k`W~+K zdy@HHEPKg)Z;-<&d>@fX@DkSj<{q|F$Mcf&gNx*BI63W$Vx8}maftFpID&g%eI77e zCV|&w0xpsX_>oM2oiYg=l?ix74qF0uWfFK4*b+#oAIxO0|6b0(mO!z<7O+}iOQ>mJ z3)nSq#7|&oU`t?P%zgq3WA<8{4TGUEiekJ3TMt z!0NvwR{u4y`fG``A9`Zl|7T!7`RFgJaX0>82Of?O;W79k*7f!Wo=@b!PsvP>Ku9Km$}$PGkV&8) z=ASF@=Bk`{Z)1&j1=e_XIQ92A^^ZFBFJi6lO|1F)4{LqXr?TH^eM@4}^QvOy*BC3m z4p{y7##)bwSnDwthX}9~hw%m+!Mm~6Bu=ilV?E zQ2Xq?&pEs9K6~%l%{}*GbGTF;;6l~C<*i#lVOL^@3TpJJF^TvHrZEXN!Pvx+A?PE~ zAx25wuzimgeTr=oH72%i@V;-(Z?5kD_bF0i)IEEye$6%4T(ev2*8qMaU=84p1J(c@ z@(9gT19(ipXS{<~2dw@M1;>1k1;>1^2#)!Ft>BpN|0X!*`%{9|{Laq_j`n|7aJ2vD zf}{P1KGMe@?LS^{w11soO=ssz1V?{w799P(RdDq8HG+d)-Yq!#|1QBnFYgr`^zuQ$ z(cjMtj{bft<$I6+CBZ(U|0y`;v-7Cv$y@kT!O`B61;_YbkjndrZx9^g9|#Woy}qgc zWlj0_2#)@Kpeg?wf@8kF-IV|Hru@Sm?emH8JXdhE|3bkrpPK~7dc3Nse;_#Kb0j$M zcc(k+CiqzJp9p@l;J+07Ho+ek{0_mtFZf#oNB{2?9R2^G;OPG+ z1xNq?PH^=9p9Dw$za=>Od&pxPKd~N95FG2ZD>!z+S;4X2zEE(i-y56y*91rV_Y02o zd6(dz$L|-sbH-cziGbC?&k4Ro@UIFEdi%X7uY|uAd`9IT`B{O=A}?Y&QMwEzCdSN)#|_>5Qh*?@0x_!k=ZHv_)k^Z!t=z?}y@zNVjt z3y$@8wBVrcCkc-Ae3szYPcIN0`{~7kL!Nz!;8_1x2o8C6S8&L)hl0Z%dS38@q_DhJ z@Q&aw7aZgNHo-BTe;nm+aeTZ#Uc6(hzf-W9+j)Dyn&3MF7Q((OU`^=z16Bh+ z60ipF!GOeyea?qC)eZoT){D(FBBZ(`Fli z;E+e&Blv$P|DOvE`Q&E=hy3yX3Klu+{5QdYzrPY3_U z;1?(O7K1Mcj`r^m9PQsFIQY*s!9kB-Avi|y4+a0U3jBazxdC?mwct2E|GnV*Z8SSO z9~JDg+1dFG!7;wy5*+;Y4+Y0~{z`C+|KU&bk)2Wdj}{!~!!rfTJh<~Yf^Sjz&lfCq zw6hT$?SE0!SNS^x$9V4)9Qb=@Q~!IK^4~95&F%cK;27`E2|l9&e;(y;@q|x#x>iC3 zo+w!0&hr}hrGoGG>N_LBG2fNoSg+R!j``me`AYaI!7<)_ z&k4Rodl`14eM zB=|Xkmx9ATdWT?T@7ygo;s@R?_>2mCqu_`K_)fv$?|-l0@Gt+U;Mi{;5*+;G7X`=u z`3=DlpY?IU!4Lji@O2u`L!RyU84G@-;E3;elHjQSe8J(Le!1XhtNu`M#AB=k2Y-02 z;E4Blli=s8{+9`k_^@{gj(CHAAUNU^en4=@!ygcQp!R-7aKuOavfyVZ|JMaaJjCw{ zzFzr%Dfqd9AO0N2SMblr3VxRIpDsA?@j}57-|=?@NBqa0;E3;73ZARI6Ty!cd{uCq zA73f>bCmyX!A}(YU4p}3|31MHfAAxMk5&F>1*dod!7ot$?+LzD@LvgjoZwG;uHz@- z30@%htnyze_|<|B1b?>RbAlgq#uMHkIO2cbCOG0L-YxiZRsXvMN4&%P1n(*TM+EPv z{SOJADF2rQNBqQZ3VxFE|3L6VRsXL9M?A*Ep6BzQs{E4#NBqdE1PA@xDmeD{Il-}C zZWkQ;`)^0RAO0V~!9V^|aO|(gT<1LpKmTmO zvEK)RWB;BP9Q1KTaM1JD3Xb#Oy9EdR{!77u{|^a%vhe%sf}bMzzY2b;;D>yckN0VU zpDsA~|4Ri2KR7Em`1k7s$Nql1;4^CP?+T9n{?7!*dGSHP!9RXQaGbY)Ecm(@@AG}U zao#;uaO{s81;>8BRdC1yuM-^m;q8Ls{C>CK;P3yt;5hGoSa9&a4+@U+>OTtJ)p$QH zcqsU<1&93bs2BKr#>#(=;Mk8h3y$;pR>8r)zff@O&pQPN|M_ac!C$^haO}T-DmeDv zPYRxCJU=fu`0aldyiopM2o8SpsL%HK1pmBFaL7Ne5FF>@ZGtyy?+t>3Uwnn&;J5D* z9Q@~d1P4F+5y26^_49&*-~OiHkWc=*;4fDH5C0q=f1C$T5qwekFKOUg1;=^yMS|lz zyDa!7)xTeGoM+!I_-5t5Pw>kG|ES=QfB&7}kjH*aaGcM7C^+Q3zZD$vz++zM^9%X# zvjm6y@N&U%{@g0~7LDhN1rG$@EjZ4{ZxH-i<-bSp>jeL6!M6+kh~PT}|Bm1j!GA0G z^@1P!xjz0k2!4U!HwwN*@Fl_L1;0t~U4q{%_#J}p6#VxE-zE583BD}&X9Zso{C^6* zTkyvPf2rWV6ns_iV_)Rszen)%1z!{VYQgskJ`(&E!B+&oRq!_mew*O$6?~uI4+ws{ z;ExFYGQqzq_{#-9?8QF5uMm8l;I9M}ogz@WVgP$M+3_pDp;Ef?qB88wG!{;BOLqpWts6{GEc|CHVb<-!1sV zg1<%ZuL}NF!G9q5+XVlO;J+*Qk=Ofp|DoU)3;tfgbHVQsd`a;43H}#h zhTvBUex~4+;AaWGB>0TrFBkl5!QU$QIfB1W@N)(Kkl^PD{*d771pg<&pC$Oe34Xrd z&$!9w^D4nl7yN3$FA{u<;6uR!!FLJX75q-YL&5J8d?5Ho1y2NjSn#caKPLFB;J*+& z75s>o`gjioKU?rj@Idff@I}E3!EYCQo8a#dymQ9)*AEMRkluQ}BV{#|XYC__2b&TJYlpzgO_%1^=YrCkXzi;3o?HeZfx>{0YHN z7W}lA`}m$B_+^5hDtIOMX@ai^e!Ady3Vw#*_X>Wd;GY!yEWsZYd`9pe34XTVhkd?} z=Q)C(BKWz2UnKZ>f?qB8I>A>2KWNAQdxzi$3;y;7{)pfwDF6Q!{Aj^{DERS$|F(f2 z@ppW@PgMR>1&iEwK3njoEB^}w$9NWkAEEr)1;_ZW36Al+LvW1eI~(|)2#)@LOz>mX z{{JEP(**yD;OOsn1V2srJFoEhJzelK1wTgciv&MX@GAvBO7LxhpDOsZfy@DSi z_?rbkPVhe#{A9uZO7N2ee@O5{1%E{FGX#H3@G}MfvEWY;{5OIH?tI1<_*oR%f_^<<4d9Og zR)>EPu-bd@En2xVp76MUmH)heZ}Ehe2dwG<~@f_y`M|{R> z1xI|wn*{%n2<&ZwBc9~z1V{VdAvoIm`%V3S+SLDm;26)Z2@ZPvUBR(G{)b>g2L5^0 zZkoR(y(q)?GvVe8-$MA+89qb!Y=&(C&Slt0`gIw$1-_bL8`3*6Y(xH*1b>jt?|e^! z?>G2;3BJYPA4>2Uga1u}ogO}%VBcZCoM5N7k0sbK^m_?*4E|YyJ^w+&z?bKLW`eEz zou_2j2K3wndw(xZ@Gn_~S2pl%34Z7OEb!U{@7zN8ir`q^ozda+c(@!7*5l*R_}pYT zKHi%S_K#=t*?3#tXuP}G-;%kq^gXnTEeUY6}wHpU!s&)A?dOna@_oo7MREXfiukuNVE9tMT&Oc)1!6H^kp!IUkN!tNF51 zm(r9_tr;)wnW1n3|5+*c~d0>p>+ zb78d}A8yvep491lh;=SX^Ec)`*dH(E)5-9{u{E)KA$sV`TWoew^z7Icxv#)zvJYzM zZ+gBOpC3*)Dx@yV={rpY?oxyaM@J z;rZ%#yj)^gkTKt^kLP>GhvUQf@&Xf9bBua@ygQkVa;eE|vMw4uns26~UEs;aFq^NB zCx?san56E#63=Kk+B=@F576`&O%A7+oR4fUIvy#KjVAG*15ciDR7eB}IJ^mS?^FZZret3xGv(>SYuGaI#0_Bg_2OK2J52n~F z<57`v9&8zFy9Wm4y$&|(gG3qzU_6}Wt=KbcV+Ly23=h!OV0p*{E*Pn4I^7)~VCk8* zT20H503sPg4ri*?SP+yq*)swfpI?ucv%$0&;Ba|iv7Tq730^NZvmp)>>rH9cF~^(P z;2h|Busa>IH`2zze6_ai2DmDTZK-18!v$D2>w_|PS#daDE;oxc(;_K|fyILVu_zaz z7_eje7~_k@QcA2xjLVsE)s%)enXRz(Cc_Cf#c?n(8+M|rec2kn~7o7t1RYoEamxw!3JEfO)sYu)iJH{ zpd<{OXB_(kr_*XNSc7!RYOCpBk@neQU;7<;Wn=EGN4gFhi8x*t(S2LDZ7ma##Juqo?7)WC~6^ zYtiN7(Fv=AteuW>!OXBNj%OPpwkbZ9jJ=eVYk@r&TV>14zz&v(h#!AjP)Ps%|;))N`_t*~gR zH)}AP>_I{yXE#AaJ0bPy45sW$0&6N*_KYK^#YEA0Pi`@%p4@`i>V{1h!3cIY5^`+W z2-Sx?Q<{UGNjz(e*c0_c>H$s&w7WMMPmO~{`f9R2GX;igABh-zT8&66rdt;6E>Ki3 z)|ED9r1Ed9SNt~d&J=)R4B(#oP7hHv?czuvU#13^aK!2F&PULEoO`E&KKUY5Qa4DK zTQMdSsX>XXA8Bc#Q5eL9vwMP*j#8}iU9T`cPnjJuP6xTEk&>IT5_@dZgz?6ut&vgQ=H!k;cJkI^GLhu4V$gHb0nW=}U9JM+bK}izgI!NM>MA zh%=)$nuKPypvDzlfdOGRK!faJJc?>tux+s`L%SLR-=eAqIchekx?3*?v(;k0Tvs%f zQmFx?9E@%Wt-*ypk~u`i*=R8b0%D*f&=qCwBsN9PW@d5%h^AcN$c=i~AI`Tp_&f@m z)p|g=I%>E$d5B3t?~6p1gRbd^4x1q25{6v9&P_-}Zphn*HxYY+bkOO65<8^E31nl* z3+xKmz-C#Gi{3e$LTF(r=V>@^Hg1K8kq0780V`Tf#6^Nnk``MMl?|q3oRF5!qw};> zY0mxG6BB&;^L&p%6>BF#yH% zAR6k{f;wSdvS?jPmowOSCoxLeA(9pxsxAhK=?7Y(ANQA(PQU+2NdH zoFf>JFvivx!X4|zDeTI1KDf9L&DaX<(UvHNg-%7hFCstu`O5E*P&Q!I)o>2ZA2KpbQ`8C>ml6hINQLnQj`ADOv|URu^4DywIG1V)46(DmF{@JVus^sG*OPKTXqiy&s1{szczubbz>GV zm<{K^O*4zF^}56JseBR@$Wk^l9AmCL(Ns5I!8GW$BjzSfY?h;Qp&A5gH#3_3yE}}e z#tlba^FU?02e6v3wb8l377SajNha%KwN{!Ms+;S+(s;ge}q2E$c+}^LY3WGCR=t* z4nxNS1=-oy#Qn$xjnRWKFe+1Ga82QyT||yIV25y#Og|TV8m_SwEm!Jdkq(0~Yr`Bl z8o%b;+-Qg{OgaQ`=-UpV+tUP;ZmFk3H4tvDo;98WhDrOe;UNV@RZo=&aP#q6V@@<3nmyn!^KCpvxF7nzTsYn55?x z>zO|l!|cum)cn%xulGsO)0C)tOVO854O(My8=b7T_)XW}z;f6VPQh3|lhXR>gaUx^ zcU$;V2C|%U#d$`;DZ~hhj(exvAKAXiZkdx)5(moy51qE9W*^(kqcqsW;>Lykn6FRH zS)|sKXuV-4=A-*?ure<%H2(9GLqnyy!5-(c!D6x6 zATR&~>}H>wcX9sZ@DEGXS{IB1TfxOI&H;;dFoy3n##Ycjvo)&7Z8i=| z1pc}6;Z`?6#X61&m1kI$k%tt`Tl5b(QG@^SUS~R(@3~%v=n&bh zPRXD1+QRmTlM9PC9FJvTwW@9`H+z^5q7bXICj*8pOldUU8-OK3x-6$&&dke|+7pL_ z%5IVNZ2OndLg8RC@q#wd>{|4aLA$v|xzWk!Y(@7$Fpkm0=z6&$PKl|-8%4W7&)&p% z*|z?C6_eNS^kO(t5oEQ3%+HnK5V8!>aSo+1WO<0SO7V!eOEVg67Ko;!)KnC)9qYk= zZL;Y`*hC&=2M*E}P)2DQ%zeNJ$+p486^~_mgGms1-6>v;uAB`un~6yqsBZNjxeXyo zvU(H*u53D#niH>$I9N7anS5!Rc8hLk!cAOIE`Swa^$YMyiNDJ7%+%TV$dCRsi_*{( zV=EBsVTFcyz|aCUAgb_@x|9&x%b-f#mkqk z+7mtWxjX67(P+`%mbb*o-8ScnPn+uGlE!)0$vyX6e8UOGbh3jm z;@t^6T&oMSA!!!DgZP6u^1cj?h5}1(W=IQt6>+pp4iR(aJgi&7T&$++QZtR_sc2v* z7PmKJ__8YIbc9yG7S&DXHl@3`tq=)|!Dg%S*D0-@pO1c${D=67Q4_6j#9VIOZehwN}%Cz{6 z(U}Cans1f}p9@M=gH5iEd0Uon6G&K%?46P~b6cYG8BNGGl>u z;Q~3k!^V}&LK{}_F#^;WQ^q-wO9<6X} zo?|Kd!(I_Bjs*U?k-s3YS)QBM&mAwPD@gzNd;aCu^Ad*t#+mG;&NJGHY3uVA-?763 zUehr{$8fsTbf(ME8snZW8M*?Z^JM&BGX5y}JQ*>-^E5}Sh67ywur~K_qL}6V5OJaF z)iJX13lq{W4mf^d%=Qx!|DnkPIJrD5Yq5bT6O)1H1?zi2hCo5|Iz zHAE!t#zJ&<@G~|Iep0l}@&8B&IlvTJu3Szsa{a z5I@Vb0Sq;e7{NfxRJKoHfNARP7{SpLnyp0|xX@pf7BfJ{#z7G9!`jnx=UqB-sS-&c zZ4~n;l42f6!rchmPbvl-X~o<^yfFEtXt7O?X45F4PoQzlu}bBzsj5+JFNTYO;M|%L zA57MTtk7btAOs;}xyR=YS;SQ)L~^d@5KxdXSl~=dP;|=p6YXkB@OE*;FO68EP`An@ z0uJ1Q2XD2z+Py0p^^oKe0V+o8Tq-aGUyYQ=8yH2Q!D2!XWi1%S?c^4K#AFk#fOBew z25V^!j;NjT(oZ4^^u+Uz_f9J0xg>zLJlxHBSRQ0t{qojLOQo3Sq8?UbIi{oD>B{m_m=_WK99< zD#$~nXuD3gCr}!V55ZMDz{G}JYhx&4;TyzOd5fp$AGigdCFi!4u~m$a4tFG0D2|1W zBIQ(YH3ka;VHqCkbF-Z8%*k(E%D~N;$-s$!FJ-FK&QN?M&Bl`z4&*iz{y}s?Dxk9$mWU z;_L1_;s2?E=GAmjw6eVPhBscjCzT)EdG+Mt9rrCy?z-|82o{DO@DoSiYB7Sf1)9-n zHG-IjLqsWNz>lQy8g`4(1dImv0ggR2{@AwUeny-c4giEx?Fbsq7Z-TmqApVqYBR>6 z0Yw^p;7nOuPv(Iu)CU18QB_5db$NIck&?6lTXg*cT5!=G!DqqZx`OAlsB8N&Q9`3y#B0b z(8@78K#auP$9q)+v-$3FepGbsmV>B)ea35^qtrjP(PRc^JOk=*NLEM|;$a2@f8mOy zTC@2AGGd0g8TW3+ydh6%DRp)>n1&)S!tg9qxflg#kk{yn6yc1g5qM6y$WT7#=c}&3 zu}Ador@mL~3mojpwR`X0yL9Kt^vWAnSMI%f`w4-|7w59u+$2qpYb{dGl*;Jh?i#{Q4_Z>fyz=Rj?Jn&Y!>TO;AuuK2;?;ZUF~VC89b1A_njB-tK0W7 zsf*q+7(+1JYHVJ2aq;rWojW+Oj^&s%&I9!%qDSyEc_s0iwrU{qKXceAP__}wt zJEqCzf-VNT&y;x%uD@pM)YUibp7?$ zpY6|rdw*Nj&B)tQ>t)-sUVh`&TA%-ttywo<7~49#;fAffaZZo{!KGj^Ucobu%PCM~ zj+X=69pCJZnGa2IX(G)25?4Wci>x8_k!K#dDIHP~lp|D~;yxKHy$Emy$xOj-!3rTb zQN7tvt;5N1Iaiiq ziy3gMuAlMXfncODHJ~#6J7j8*)ruH&S@rL2rzSa z>m%;%GT|KDXn46n#Su5cvKC(jZV?i%$)Q{FAU%xCda$#l00YdHy!E>!KQ#c$!DO)j zf7((o8hU_oJF6q-kkd=AKe=}4u9E{us65D;=4O93| z=(~jchQJF*i+k`qB7A1DuuIagEJ4vBnsL}&zGHpm@X8%0I|rBUSR9`{x$kvXE?&Lk zco$;lo13)5i*H7;3H*xCn|9|o$U%{eSff;E)hCzlzW18{gs`1{@14K{a8-37r~t*j z-WV@+9<T{<2=yi5BstBrCR){YUo3ffS1(*%UulzKT>=of$HY;jVTB($oT;?@oa- zO_pG2qH`!cd`zLNvVwO)nzx0h>rlIX$DqM3s0_yh?8}T_Paqyau>{!TDbhmRCgvZSfYEiWAV|63ePu z$$CI~2ZH5bS)1?mcIq6^E8;Q=hD}2QDK-y~12=;4y_2TnwkYD2j(GOtPHfRdF%`s@ zF;sy?*q9qp9Oj&890WP2gvUX$Eb~%`3KLf2F~eA*oe^FS0mF|Zgxq4()b-+&6YRD+q73 zIARV2tp$kzu_yd+irrmdaE3>05GM~QDIXL3Nv)(hxr&936m zI3DzDKQJgr*f?kg&qA%PUE>% zi#0|_R#PFaRYU9HZZx47p!~=c3u40$A$X^SBzo%2j&0+Q5kX4iQ(S>bl?FuF3Zk*)fP*AXt@nS^R= zlhV!VWY39B?IQ4MywAzx*J;>jtQBHEaPx-uUYHsjyE>AhsHp(yi5nIt|82K&ls2Cj zB_*n%7(%n&$j0kSon&wfgh>}Cb2K+Tj~!jSY{KrDhP$b-u*P(X^iFiH-rS6gFH|7*cc{ogb~L&$qbb&PoEVXLi-hU<0+0WI!oo<`S%A?Zp%_v) zM}WEa41$f`$gD#IzaArU8BzA;>+=?I=@rMYMf4q?M_3mR(tVtBX$m-#>?S=3FqKp$ zG>LPv{FVF|TvxOVB{;YTZuw&4 z2G-P9MMl02@zN$R&pS@hBDYQ2Lz#sbiNw}~p-9om<*o5d9pvvX{#Gg%aV@e7hDNsQK*iVO9F>YkM|o>R~Cp+ z6ht-NGJrW5#$Tt|b7qfgD+WD`2c?bz$PNO=p@WS0xJV!oEn8=wS4A+^Uho_ z$bu8Dh~p?2f&1+xSrDE0LiuZau|1%vbElPRNHNGt#$c<&MyrG|EiSHe-4e~x?HhxJ zozBAKicy1oP<>?eeeAW2-WY%iP^X^5rmZ2HP|H3L=VUBCEsL)`f|24PBu7&P_uDgK z{+KE(!!$J6eor2M2M56~9yXv%tpv)h(d)#iC+B#6nCYs_@*5XINy^i-Qhl>*3@) z@NyPTA-tN5J(eBeUdZ;Gzp0E!3l|*PsUmibrfgX5_U)bGj?fbmannC#rLcM%}|2i(8cO+$t_7F+@6HE7C2Mf+4n-y|bKraz2*83wJnYxQobS zK3kejF2yv1yM`+gZz<)sqBvT`p7AOk2n5RjZwpQoI+tRbTanD6lUF42C0IgdN!dlij&(2O;+xt_sPScI@oJI?B0vxXNgR68pUBCz-|FGd|g4%}9a=rw8` zk4Md(hLcX*T*e9#w};Jn7pMV;6dZJnO~LbM2nJ0-E4c(j)+hyvF=2EC&3dJKQ$#b& z{Tqoe7B+8JiYW)0h^_aEf_o_14)?g>Bg4T?JD&2m%xQa=qCPku)qoDzm+WRyrIi$Y zCql9fk)FtHM!02MMLVek5f+#Bn^w>l{iOb;uWP5e-G6Gq#5Nm3)std=&;;3P>Otr5 zslXgh=8K+PC`y~>+E2gWJY@>J18>OAvJi)-qj&IBJPfy(5tI^4a%#+jorACN3!+%117#?^%I zS6vpxDhp#PSrp}h$91Wokft@fl=cF{)iO#E8MX;V|hQ!(arwr&sY_wIYQa z#+Y%EuX&d9YG?A$m4(@h4RE z8%v^%Y>|=Snl11f2WZ*_(1bF`!i$3oE5>YKgPL#(N!LQJ%|BI%4B#_5oj4-Ey6TMoZgv4rDbb+BJ9_KOkz&Gn)T0+1L1zu{{REUujdZ>|R)rQ(G zh(0!Q?Xm$;!iab_y}8H!R(NfGwZt_g#BbT%iHaLn-S`vjyX!Eoh$Ja=H(E~QU;;@> z2$48#5t9)89#xb_OLjlU4;c(ME~5Cml7^pjB0~^8xG?g-=_GKc)?L8BBPm24Hga71 zXB#=soPKowhvtyhML5kx!IJ!bXR&ylLWn*g%7$~dk!Pz+Zl`!f!=~A7L+*`sAK?TG zSsGLK%NY1FLt^(NoJ@6vqFVGgTMy}E@C(QJI{-vVyG{M}Z>#lr!7U0ydgyFRetOOUMm+q6VgVgM*eY5_*dUZOFj*3=vSG8JjPV*<3~26~84tch z8!6kpyQNn@WpNqp=%8h~Ta(%B0s(6NK$y{H?pA70JD$-lXv2Kc-6mJVVd8KMrDPm> zTi?oHUzlAN)8+b`h8f?Ij*ow$>(x zdtgguduxQ3BIh*uI#{lI1^VQiO8kR;nu>~f-7sjG%QSbpTNAec?X8N~6ui^nx0@K| zj6+0boSH9oO2HH2ZXZ`bAD}c1VyBc>mlV%^Hju0O5s0R+GQ-NnH?*~#Yf&C|0w>4O&LlY1wOwtyZ zsc(C4Ed8j<%%%5(uKwA@fGW>R}qmBeCw?VG?&9PU_J(`;ZAtu=BgqX+O9hgq&Uq#1Ar zajW>Co6U;>ck)Y_EL1GIS+S4tSt)<{i^c8r8~UWpBSof`mdUMbh$9Y1m~z0sFiSle z?$5BXr8G~ic%?uDQe9NwC&APh)-5V3B|atw?g0`6O4gu)T-qaq7K5Y*jpnop<6(m3 z)G;_gbOc#z(;gpAfN?#=@Md>cn}ePgxO`c;CyfL7lwi8$u;|PN9?&3T3)LAd8Hk7vLowvJ~2MJ0+c+CQ1i;<#C9ZTNTVu|c~q{q%N>ZO*{fX!@Xl(bEQ z>6uBGZIg@Z>jxalxzQn{4qQ4Y5vajA6D{7uV+9_x5D7u;biXzhYO_AuY2hE@GfT7( zHJs{Wa`r-P(s8KcmbyL1h{KnUM$s#*$}TKMASDKoPGKM(2MFraR(NxMhGbZJH!WNT zG9H36p%}y}!hwU(Txi14MUawIG6cg+u$*blEdt#D_2T%sMBx?JXjy@i z%u%hCyzA_NMw_BD>gW*q@lA+A6|!^8Z^m~sCyV%GWa2UWR3%riC+kLKC7RQzRRqOi z+tQ>(a*tc{-rVAdw_%{M7vfK(;Z^{Kt;U&nfU_R~7imn&DqclIR{CH@3|NbhA4+I4 z7Sqi>uN}tGTByJ=5h$uX!3ASb-p0+}_C{oNis%!E#JvSbm6=RT91-?Ct{R?Faf}!_ zlf=jrU;_&V3lv&Zis@5HrZ*d#Iiy>x=!}4GxZP)V6np#_=FEF1yz%Y5I~Vl_P#K}Z z8wznUHF-EX7m+n1W%ww6Fmv zuYgz)FsXa*K4x(*KP!x`o9I2SZr89ImRW6{MImO@80Z8CsLRI3Y7$+&I}tY*>a02D zY-{I3(3g)@%6JQFVz9@MJm}hv$ygtY5RU`Ec6A`!mCgb^6<02dA;v(ApYSHT<1h|f ziI;M+CqAoEheHHg3~_HK)zdQbfZ!+asxF131BOVOd|S9LYw~~u0@gxvOXAEpO{ud$ zI2mIUW9)r=?~rDA4JBYQL=suXX|RtXB+!&E4ad&ZayLQ?h3QqAWGj`>tr z!ysvqX=!Mso;tRtp z4>1Vjh4=b-NP2uKCaH1bT_uPkzTt4Og~xu5MDzzij9yjTWMzvOpRD~5I>h&ylu6AC zx`GEP9okC*PE=fhTQ_(p!okF7tA}GePwEqR9*(&Q$SE36hl-IAjs%{unf$;>5ABXG z0$8z`859;Z$z_W?o(x!aK3wQsj&?mP)`PaV=On=v`7W=}N)zHCYr$j4@I43(keKKt zQq7`b5~1>!b-5<2owFow71bmN9*1j~FcClO!Qp)Iu(q~v2W`6z z7+xMNJq)%CL2|)aeWHjP8KR8ReT?xq5JO+vqmUv7*%Md{BPC-FO6BK7V9ZH#Zb}1> zb-wEwML?>Qk196OwiQ+If+@v3XuYMq2Q4SX84NJu?3_MTn2XXFsCne`vN2Yr#V|`( z#%#zOUC}+P3b1$Jy#ptlQ;>*Z#?LRwa9um zvwHLKMg`(NdTmaJJQYk+!H#Nlh&UEfCphQWbEIbuxHnlInqk#F7BMJ4n1Czt|%CBS_`PRAtBohqrjd4FDZ-N98kW4Y=y2@p(Z&MH$&oJ5u8Esb2&lZMpr9v z!{d!fVz!ZZ>^M!kRnfl2D8N67*V5x93!cdi8KcF~k@tqt97J>AZMI1qUtjdHlhC9i zFgR0$D{Y?|y^ET9?V&Ko6nXmW#%spQ&~A!Md;bX2HAWyL6xn#P8)_;Ox_L;A{isay zc3J6q(+qjR`goL&G=;rU_v5gFLWE>JtfEFKaoMY$S`oYU!y6X3DHzmOiVQrk?D;3( zhd?mG?f4RZK0#tG(%Z?6v52?YC*XP9Xq(iDAz8(ipf?9!xl~(wh`O8Nh=Qrelqrq? z7S9v}lQe~7%7B1t_n?D$Xo=IDazWgm0HWG_qkg)xoftKa`gE?D1M_%N7TQtLE*JK8 z0rX6@Lo5RGc2T5pH&YM7s|>>f9wuM~>B=!P5Q__gOq;{Ep@3y*bn!(vqM65++qVJG z6CHG5D~IT8+%bSFvXEQ2QsyH|(g=wH8cs4g5X@nVp+n%DYJ_a`ZF*6>>Y-`-<$L4s zWO9L2ULGZJ;uc?nj7k$qq{?MUPuTNa7jSRb9^AlOSVtvWn+D})zfp30fQv}#7I6Z{ zJvQ24%c4{>S{X(D1GkSb*w&&-HLq|kC}+Ut{Ur!L5entA*ZRae z-+s#^eH0HTOz~IowYMiZ<4O1$Hd)V)VR$-;Iepm^6HzAFu%}kIV(q3NBq2yPO zL2uxAc!jN&v9U$DhwKiE9dXz@R6*=|i}0;7ez;XR>cP26tu=vkaLttLg>Jm0FNJ>G zmuG^U+FFj!;bwQRbC;bUAbVsE4I721oc*zi|G*wz6$*;An*w3@O3GoF_Pa;5o2u+m zTlVhv4l1!q%n4(~;Q*B_IK*(Vp=}X~rCAjtwFq>gJgF}+$;fQqsn8Cn&i*QZkXpAs z2qmKzR) zUO7GljiZc@Ptlm9-azE#%^>ia(XO)an@_O1%)x_@E~5f0jpxWM#jT{OOASlgAZ3Uj zsJWC3yjJoc$t-0SESf>2^<6_ugiNb^yMu)o3DJAOKkm8$ZIF)B;foF#q($2qwrVV2 zL`%`yZi*FdNmL>Ku{xo5Q6_=Zpy@?wob1$u@=eXiXfha&sEEC4 zX@kqyG^cw%l(C$uoBS%)v{~`v>DlNhhLG2<*(7H8j{3e(or%w2s$dL784(cSE{qS9 zVF4DRSOSYR<%t%VHMNN@Mo=GMXe`XV*+5qpsTM|^U~_~?$5qqp(u)y+x}QkK(9{}VUbFY!@!YYJ$XvJ#z?g?@D}5K==bO!_ZZ#EfHujarKuMErGiFxmF)asi z_|35D$tfA&xocAGv|8ElNOFQ7HP0kxxf#9641;c|YSOv_IX^iuF$FIMblP&|HNbOP z{=y#x^(t7R@noq=xJ9@!jYR>yoRW)!z~>(gA(|P&F|ljj4JFfdUR(+?x0oG7p?68$ zYMjsV)6*fwB`1nYuZyz%C9UBF2u1$6KuQV9i|>n-3`JR#*Zs`OFOEnehrl)2<%1A4 z>#*D`epGBlH7SWz>0_8a8+n4$&@*o&ckJTo;kA${fx*G3U_uN&hy2h+2(d@g;>Zgy zV!iI};y{~O4K0Pb&;bw&F^5GE#>DV}Y5i#7bTlW6$qIW7CUt0`2z-G2jUp<%G$&Yw zWAA|UR08Ayx6B;(HVc6rAHFPEI0>~~a8f)UIW)_fi^?(Xh)}Tm9ff;T796PmX38#~ zyg}>_3=(d0i+ukKhx^Ut5RR-mbQ2M=gV#U`w=vRQ0miD?i6Jb<>C0E%2R{gq7(*&# zVYze!!3+nK)@_UsUrvEHZs2Fqs#^!vfC$pQMS&raaOot@rz|6GEfWR8uy2g&WE- zm*U22De#j!RV-BNO@#|M<3|%}QVDSZ>o7iq=QWKAt7d^@ZuKf+CD;X+yf{yA}v0#}Qj=}$E*-|0RLYyyM_Y2;gNGuB21{7mYnMH?M z)*v?LV5I13*Mxh+7WY?G{`20e1dQn7L z(l0-oyMHCRAm1@cuGtYMldddS97BHc&1I^@ZM)}%kx}u|0^Yi&rO7TIA^J+o#Z-l! z=0r#}`1&s*ND9G>3fjuvnWf>^zVTeyx*=r3Y-%SqJewB05IbNsGzP@@jybI;u6!e)8bnH>z*O}tMvN?C|A=Hn za^?$5)S6VtWGyJeW54?gqQ<>fxZC6|3q(qltUCw}kFWS}i$ZBLd?yjHMe5ObcXyg2 zShi)u_|EtIHNd2b)`$u+-(!T5ibh&(+A(vWT!u!X_)eTl){qf!T+!{;8}%LGK9G+q z-UdMfaf=r4Tgl>#%LU&B*7<^v`hXT^rv_iu=si*K`V96jm`xguYVM9Nz#NWf-w+b2 z3*^B$7-?8MFQ#?EM(d9$P9I!yakjiW5OwgT6PYo%Seit1h8;_box+0Qa-$1Z!!_lp z7ms96U}Oz-_Rb~+#j8>3EIsC(@(ofuub^k(K(puFRC9&r^Np?g>8VsOI~yWCcL(k( zexW?+smoDqZ!R#Z?JhZur9R%$fB-qdi z&KaZ~BNrOYt)#XLi`AhKJu^pzY^Dsl$)QhCszic|!nA7iq;mC}9DI&~=PzPe)sHK^ z&C1ay4jO>*rCrk~*mJ%++8RcrL#Hb%1b)2M0W_dE5F>|@A2t3=IjM7tZB837P^{&S z72pRR=y8EfL37Ra0KA<>QjZxTX`GMw#N0 zFuWfc5f6WTSHNuysUauLAmM0Csa)7*w$TkZo^JD|QIhAbEo6f4iJKd{(9@%$6I|y? zn2oU7X64Jrw#`hL8UWoF5S0_F$a;kf%|1U?OxpHp$(u>s@qQi-Ymfg^1?wdaL>Iq` z`vfro;l_+asu)=z<UJO(Ym zCOHVo7RwcL?a4t4WvczI*T6Bw7U~x-6NAE5fJzoUIt2e{^Qf$u6rj%TRQC=Y4K_?24m$R<8%u zv*<RN>)(uf|?d)ESvXUJmrr;`( z=+fQ3Qq?zJ%!jtOZVs?F-|_CDQ*%bbcB6w^w>|@8Fygf*>?p@vMp-#=MVAVX(yBysUuhpD*1xC9B(~Bvua)_k)N8k znwEBFQf*Tq!6n^VoC5{S&cVb)O|l^Xh((B!ttDD>l#pllNCPR)6a^cddQKGzw`VHt zEzyFK&nEC+bN93s69lk>9B9?8+(EHG_83_qJyhxCDWlC8dkp)6RW(}izGV2W5f-_W za&T$}TZrWT!nz}+4#FY>)Q<2ZN0X{&xSLe$k_9yB#DR0}RF`B8FNkq0Jj*c|IkkK9q_{K=d`$_i5Veukl->LFKA3aY>22K@usx=&ktUxt zeYtUv#h7Bv+5k7u8_Xp!DpQ6lfidbw33aS4BNqhUzk)`>l^Hy$#5b-n=XN(o5sP%C zC1*?HF{b61Ct{j%dY^=xg2B1noMwuy0ak(GFr)X~Zz~2{>i>Q*uNJk_ED+RyNiv?M zh&+#6xZ~G0#iHc~xtIoaO)Mxp#P}>#Ouf5cb$-2EbzZl}AVZoJyBe|%Xn538baTu? zZckPv&-i{Vhx`a0}y0K)Dy0@m?HH?5WxgNv!sLd4665sar+ zNXj5Q7)DckXG1>?X7ELv0lz+E5oop7$BtHBTCEIN?kGLx-HC2Uy7|rcLJX`tc#k}& z)Kz7kq!#qwsR;W3qDI1(in}AXGO`=?J4OJd@%z3s#khLZql(xrgZ8jCc&>>~v(0NP~{s~K5j+S78_6RWN);62vW;3Nm@gRE*Ot)f7~;9Hx4giNEv>IqZGww(g~47l z)L%}9+PstqPMH`V@npKnM#BLjS0D^`jlvA?x z_ntb_i|yvBYVm0&@^Ksp#XL$&J;iJFVaded6q+s5iz;W~7xoW0)|`|BB2%n4IYdr3 z^EvhOx>PBS8OJ-NjO8od?v!FhmslMYC16bibGS|p!qe7bnr6^{f| z`hHp#Uy;__YPa(&*3>y6FxW)gq&3IqXWV6%Tmuw)9kC7V$+S`0DtM#Iv?1fQ&6o7D zfY6sq^Ot>}qAxRsH$04Ib0P(7vY?MOKCjLC<%W#3CiGPAUE-;WK{(gdmbH*0x6BAs zM;Mj`%dTQjaBSeqHxLYiZYM)G0{F{BaWWg((8|E<^W3rxh7-nu{8PKzeBRb`sVBxz zlP%QVSgNNZQp36HR@k7X)T`oWn`|^ve&v~T!rf48NiIcdT&=m7jIA5YRz{41-c?dc zROLshjz|Pr+3TPxAN)#OpsMHJK~AJuF51f8ANTtqqhyOzDk99vE9cypz^EV0$-vc~ z`!0%IA7u&s8paGfC<)8T$(YLSsk6G?w(O!7Ee@#m)iu0N!pLh9@X?v zty32Ipe#)GP@`Ni^Y9!kjcon7ooK$4T z9wxI8_96>^fe=1siLi$68nuSyxc@R6y4UaA7rF~JGa{njdzwP{9TW!brfvQDvN*+GTr zxOBo*ML`z&z(;lFS7m006Om03JYSW7*_>h~E^E}+oZ*ZBKDbEsT%rxXz6QY(Q#@P5 zhe$kN*p%ra&V(frlA&1I9W=I7NkmmCF)ldLOwmt!uqqVPUPOdc`EjiHeT3S0R~6)2 zU|?~G@QdZi)YMl{G8+rmCY!2oe>T3diZ2g?(BK?miSl3r;o)Y@YPG?YBdkREDP@Rm zav|ie7DKkSCLom%l`zGyl*oy@ABGBYSfxOzYF?^h@Lu(H6@p69B5yE)!(_wnQXl+i zCVMdKzRanATVE?Qa+uD+AS)PG)*q{7G=FkIXORk;-f3$f7Nsv9_LdlMKMCi=#@a=Z5b`_I#ofa zlF|FJLh7mS&O{f!I+bxVR-kaPv17bjV9ndzf#L~~j5rhOyr|}w^UxnS4`0@`9#6?% zA-M6BY}3UUfv++Nt{;VQ;|E#tWL%Wa12P8*4s<@61QDsY<}A86=0Lz2qN6IAnCNC9 zpalB-h+qB1eYB`p2z&U(ee8WRp~zriLA>-(Yff=Bl;&$jVc1tR^E>gn(kNzNALKA2 zOdJwCiy(UPRnEdLNaK!M0*Dn`g{Tly%i}lpTDXZEi6x3nhpV@)>?V9b8SZ&eOYsHt zCf}*K44E|g0v~g~b@`NZq@{4yR-y@dj)L5Z!e%7V0HI<%ISp%yN`B)M5p>P#T41LA zR>_o6+qqJ59psjhdxK6>Zoke2p$m6u{LNuKBnDeRbC)3%(Kk}N{)$v0a9G_1DmqaM zi_I=#s~9H6^(rNuZduzW)lG#wX6DuBbWz{P3yV-*%`LJu6eF1STSwhu(sZ=y-F&P) zFNZ@-SWn_fw%XxW)(Q7ySFfTg@Cs$|hMxOkFC+IKpAnr6+;#yz00f$Xd5Gxi;Ur&6==4&QU2NhAIIR>u zcaB%Cd04_b5&P(r5!7eixs{7WZu7$DiW5OIXLN|q9J?k@cLP_vGP z5YCgFOdEMr)}Wf9imd8MdKm_Oxz`1{Tk1+_$yQZVU#9sNPYDp2!1>?Gre#*>|6%sIob*>e5i;8uFRDeF2)`HG}uw zX|V#leGwovuzLMl~u)w=+0U?7e03ZqD%#j*OLWE}@-BE(ppWRctsiwoi7b@t?H40s6)i9?<%v8^+y3CzxsWY$SUn}5rEuoK3HG)XeZQ$ z7#&4LT4q`%9#MNH26G@+U)F$c!@8zSTk7L{|XrA(@`gbJEo(YuYr+%sw<~a76gV> z1Cb5zUBh(SDsn+?c=4ixG8eEBi=C}IQ6o{cafsrT%9KIRu6gF+TH3^QA2 z5pLWpNSt_SPsasBrxYst>u(x<(mi^)+eXy+8#g}1%G`uCNeC;|0 zEMEcKl(^;!6GPc_oV$g(oc8_}ss=q)M|X4+xHH1&7ZR!>YeYQ2NnMu|Qzw2T15iN2 zeX&*bqDc%J;sUIA{_!?$q-nap%Olpmn}zxnWjB~x9^io+Q>oAs!fJ`4KGN_d!|7D` zHDc<~K71{Vl?N-6vI@$;jcD93uyZ!)=~0iK8S+4S@q=wO!%OxtE7xQ;`hF3Y1cyD8 zzOf^XFZkf&u&Qjv9e;)^#=VV!IdhLy>(>nYUDP#Z8m%>hbXN3$#iBO%k*OB75*#Q? z#av3#6|(9^Vifg`3kDY%TuMVg^E!Rx$ApuRpWoYP=2o?0tB5sd${?lgZN)f`rjX>6 zu7<VzDxvTR|0Jx#RY2Y z}fOB^@={>K~I! z1I6SRvceC^B|XM3!{aXez=YST_g4E#4bhRZ_3_#0cCd%{E$B7ba`ct0(YuKECUFsK zX-|Xb(ZL3T;g_p6mSn z>cho|kSUlvC+S&-C_&Ofl3~* z4hTU@SBw7?!F{5L5i3G-V}_P@8$QxTH*Z(qPGX*atdA7rpXcd6#_U=FxR!Zs<7AGm z`~@OLckH{{>NGMi%*Pj`5viJQ*$B@pkZ6d42|uTd@xdlcj+x?qjm`0;1Y4`dhf!sg z(nQKIDN|>6L#cMZAZ`OfoJVkrbyBtybFa$AX>%|^B-3(u(AsXQ!V=HN;k<(mC~l5na004+k8e08RNZ}kE_rbMkWKdkMVXz6iH6MZVxzf&)c)5 zl|p0{sEZg;3DfvE4ZF3dx$5RJ69Z+~+jh$;O@g;h`e(svgXum4$#?C^tKCV2D-<$N z?EgH$7()>+$t1B}BR^FN5~*IgignkB!Ex~FK^E<*vgOg_<$Ien<382TgkOun=q<~y ziG32q(vl6+&{T^$seJHujo2DHF1p!lK~>kvKu3`%dD8H>0G0uv5^Vh$p~@KUsKfvj0X ziky<&9jfYKY^CYVTEvHOAn5bJun)UKxi5w!Zz%LC+mJcXl2tvE5`xivdIh?u?|1& z;%F`L!?vVhrFD-Zf-UMn<5<#;SD+~4GiteruNh*i_ncdtigj`+&?RuZpdhJck8Ik;CEXIY!F$ z*7puYl%;J-W5!{M&mOrYQq2}AF3-VCnSAbLri?mPs6;?n#@Eqqza^3^^Me*@Cs|(! z@a)R&zCHwUN~2pXEn|DwTTm`dErEer*eJW;AnB^>9U+c-YAp~=$`_P}cnAli=igF@ zNmM1u4ydf+riqz*D{`!w;V??MwrnAm3vX9LX~h<(-r#^k*(Bq#23tFARmz@PWVIt1 zBSdCp?{L{-msN`{1J!NqEk!E7b5EHh)S0WXeJZx7;OsE_-pVY=8Fff>SpZWv@yr_W zdG?Zlct35b(|NLp@tt=>1yUwW+sIl!}WYV<`D=w#{edDV;xHxrn@xg@sm|8%f1Q_cyg>+^eQ!3tb!>8LC; z;lVaMZC-ymL0xc$Y5_z5TO+8YGCwwKrlG{l4?rE&4Q{j+EZBs}w4rR?X$z66z{_jF z)<)}JQ7#q+q@4Xk~#Bd{KzS*t#1C@y!<$z-h$|#P8 zWPC}EWL|J4r7rMRNZ5JUPk9xke9D+gs%t((=@|%?gC$O;C)*UWlVV!zYsOIh7?Ns-EXBJ_rR0%nM}b z$EA9B#r>AT1L43sat7MP5Vr1k3?aKK0<)vwweqN_I$0>5UG->3+rx%rl49&i8vMYB z;O>Jt5udA9O{fPj0DTfm2+7AjcG5i-cy$6ws_D)h#E>Q7Gq!U2kMF**7di5I51vm zkCpDhNs%2#N+l{ZO*F&dCZPkG-`>m~d-Muh{o-IUq$8<3UfCLWEzi*Uel|0>WK{n0 z_avAq9U2-H4{BgJP?P(M}g?>W9+z%or)IjFb$E-Di^{Ov?rDf{(*urqN$UG@*-N5`i?Vd;JpXn zCs~G(QqVN6X_4s8L!T|4HAWfmlRXz}5k?2e_JKxX&)DSg zyEgfiKeRQS&vBjKuFmHnK^9~Ao=J$x!LDKG2Yt~R#ShNpx`;!8-;B|O?g;?Nr|%7+ zKljO%_iStseC(&8X`DE)J<#V^(>grNz3EVJ=*H_%1C$!P^4m1Bg%Zi;G&O&eIO)9@ zB?yG?iW(J{rWt18vzu6TA~Rzm$Z*ReQosdOooE$Sk>WZ#+QdOgZ#*X|i+?sk z8!GVzKnmoX#b-^Bf%`(3nuq=1yF}IV*UVmfSObm^vMGKo`!GUykL+oR^$_{pktj)eH~c#9Je~Cp72fcb_BLEGUIc!wO1E?SV(|A|GCCi!*%I! z4I!8F!?xkFwic!11!Y0k604-wVot7`A*VILLPv#-y<`%zidFc18)WE);Ci41qgs_}8Z zh9j|D1d#IpbadrvF47SnD4CP7g*Ny)kQ=KZ79u9MKy7Tz#t@4kg6@`+U0T^FS=x7; z5vZQqH6*6^b1ZP#Y|1PgDWn`my4&9H4WGR%k-5S5d|)9fZcs&zr0=sc45t_crVEmC zZ0BUCBjAOrp>+diNqW%~ck4w5W&u&o}goo|BAn7`ivcNy4_L@>*UX=1cP`&2G6HZdrb=kK{|f zRt~W5b|X587d(?loLh@Q_30fJy#VUup$nz>cn?9{xu&ZGcvTQ*6*hE*Wak4oB6<-O zQJENgjX@%#ApKT3tFyu18kTPBW^x3iq1Mk2G{_qOytT--@q%80Zv}$$Y|)$DKf$ul z!^73V)cH0{E~7k&R@_e%^7Bm<41u@SDy54F^Yqx4O2Ar=w*!loS<26NzNbNY$-Odf ziYsGO=J9L>##SxG3Ze<(Sci6&tzkIGHJxp?zDkV2(L>3@sF~X&*D5m6S)EtJ+5nZO z=JNVXU3svfy$lQ+gS6;?+-KP?J(_fT=3K1Jwu(F=C@t~i1?Jj=BF{yg=SFjun(xc% zjsu6{H}>pyPq8VljgdE5^aWt3?Pw6=86GMRq$sYtCL0WvM)a zBE8u|mg8rfHEfleiput#+FtVxF5mI8VXCGTB0&9i^%T2M^ z&H1{|dl%4H;rMD5g%}3RhLA0BJXDAY=C6mohKxihWT<2sgT(JnkfviT6Bn1yVwFp) zEVBvK!7reUVhy>(?K>(hZ?G!x=!3}!CTbwLP`*ghDGt1hoCThCH~1cBk?Rj? zwfhVQ7Vp*LWQQ)>p#Za?Qj{C)VsePJ!>zowh1|dQK>cVw>=dJ;-=0cfeT0kWS;mpu zESPDW(qyOz({hK`q;oxx+lCs39kzVaE4v|~D~T+55YwE_H*5+4Fh5$kvIrwSTh_Ed zf{{#``($Fs0fsYhpYZ$u=gh8+o|b}DDz|r}m2|{3Fkfe-ZGXaCgCJHZHakC)TJSCA zVsZ7Mjm~n!7=np3swT4~;ltoukLQrFoE@_gYhXpTDr}K&%)GdHDXdXo@mnacUTk2} zulsDi->gcI?<64Ar6u)O9-UOBdwED%eAody4&MvTPYEeYk7jkvBAgXy@GKMX1h2R7>m(%hX-^Km0@Mo2CY=$NrO0L&G{VPH^Py_&^xg4Lk6?3kKSy3|EHF~tJeJ(LOdz$jh&`|6_`G7O~%hqT7+^xddLB8z1#fkU?7mZ4c$&=c80t!5!41ctTl zsk&Oi*+Jd6KZ{=w7(ssJ!HKPExXa^FPPZx-n&x?a4UD1eRP4NPuFRfIRqR%`d75V? zlwRN+;!Uo+z&D?h`Ujkn*OigjK(wnz@mVO?%x6?q#MFpL9j48t zE|6~ZJUS;&VaYHUPF5RtGb<~=ElXzZGs`7{P@M=7;+;NJg!aMJOX(j0)V!QrFtkv% zdB50;8V#5YBli)doVFkk`a09Ti?6ZsfdnUjT!SC&GtXg1M8Pu~_=*>)&6lXhfg!B$ zyNVOUGGDNQB_|7l@ZD#2@R|`|YuXnvB>h&7cA!Pcx=P9Orn*WN3#0H!I&2X%+nC#f z2Lr|2BFK)*Ul|K!nVipk0NgOxt1N0{CZyEHYIHH9cIw|aceGJU##gvTPKLRiC~I!) z(~Ihp>4t5yNm(83ncQNh7??l9M9H1afu4)zod4xUjSXl|waxmta+77*{xREhL_NU- z@-T6LP}W`9^~{KPZDnzATNaW@dB4~*BU~4U7wIhcONY8+r--yxixe9dLoeaZv858;MUbn zC`@2W+?4I+U>ZdOw%~gM1?iM32G6|=4L%!U+A*<_IB%T~N~3BH$n7l9q)6vl{1OKu zhtdOCm`RZf?3S0$lnH4AuFT*_T!NlLHcgy#9sL|99wPPaeiTKY((j9aimo73ZZN)~ zn#m0$R?k3QbnKg=7SV#@Ug7~TTNvyuuHAVsUAIEdi zQk;|~M;VDM3PVx2rdQC*c~WN?Grfrg{9}H!3@wg4Py&77MIo3D^LX`61KlMSHO2e^ z$fyCfCVNhb*D2L3W<}w1A|3OFwOy<6_wVf1mk&as1(*7U!BMYYu>%>5$xtP#s?%} z=@?;*Cg60v>lmasqlvCSxFoJp^xV>9Ex@Kiei9-?b~b7Sc3TzKYwgxQ5d<*#mAPO! zB%C@uzRffm;K^bSbjb_gJj!EOX>Nw=l6pGXUg>e!sv#VoyD>M03sk&LxGg}7qp~pV z(l=rQ0Lf82hU}1(L`CFaV!3@q1XxT3(8N%$;^Ag2?QA_-A&?5u{4O=LX55?)t<2t* zY^`Dw#0lA*K~tPfH!V2bXi1-qVzj_Caf4^SBvqL!ke zVfe6emNGw08hz>cpoYfSrzD4?v-C{HO@Fk-Vs^BR zhY0D<-RLZF?=FRkuF=32ow6V{n0W#!lo_>7@!d^^R`wjd1rH-@@~jG6}1z(WG5s#m&CJARo#cd8&Pd z)*#%XNbB36h%g$D3nv5-svCpHFtLJ!__jyx!~|o<4Qdvb5U?2O{OdTem9XvnW20fO zIlJ6l?_)u&kD^~!Wc--1``si;7ie-RoLjU68NuP^9{E>YCU9g78!FUnh!?^UsaW~V z;gmOJfm#nvFagM z*ESNKmL3;Gl(>A>Spv*z^GTKqnvmRTf<+#(_tdMkAB_iRkB<)ac9|O=I;P3MB@_^< zUnQp+0ng$9(b+|=xt+0fojKI?WP+yt8g! zUIGVitK!%*nY2y6K>I9I{!WDp=a+o6s*^t3mJW@HA>?fb7}#rg@vBXT>lWW==}X2M z^d<9L=%n)%`XUjXfDyC{ga&01N}6&W4G||xB2_y7Zp?8rWW4e;d$Ds11S(&rVQR->^&bJ?3SPg4Jn15Z7=De-$lukQ%WqkAyYb_ zG7w9s+(4*i>U#Yl-r&n*%${7#xN z<)RE$#y&;ZEs5HY1n>YxQ996MvP7OoBy$%QrTx3_Q~MfpbN)mPJ6pRA;Yl}G@IbgF zvZD^RIfwukw{yMp@nl>;q1h_uaA9ObDH9Qsv*(V^qHJ{F>xJ80MIJtVfgRha($KlZ zzew3HyUXm_eLR#y`~{w(3u!85TegM{pqbVPfbO6NBm8nlTVe#c$6k$u5|CF>yRjm;k0*INXIX8__q|nCo9$B0-%^n)Aemn? zEINc#dj#Vg4&$w8F{C~4tZ}BqSMG}Tt+Fp96*Lpm>K#RXN$+e+z2Q(yJx9T!^;ogU za{VsjETw~xUBzJlU(UCF%@V{--^F>V4_Sy7z@jR%%p=|~b*JSlytUg-`L0bA?b(aO z+i5$5GgWV>Gg2XG;~ovZ@{y-#e4G>sL5Yh|WceisyP{W=r*RW&X_=kEeFwNYr;`e1 zF=r}d-9=>;*-B!0QxL61MKBOq*gV3y&8EJ)mBUd1Ev|0oIU?h9PJnLd;x+P^!2a*$ zt8qD&U<9p{8-rn2!SzzROPl-j`$`S66Mt=qe{g=UJa~a0%6|>1LCb@gwn@a$*TY4{ zl#s-6blC!L)s*G` z&)J*xw{`3K-+D<+I_&OCO}15AmMVEjdZUkPtF50pwvX*}@0?fve18DPwYZd=|3zXg z0Gvq>1Oag44yW-_I;RjOas*cocF$fV1uvWYpmPBM+KYkhQ2cb5;sUJ>verO)%&SgY z_yoskdAq$plh2TK2}30M@O%mF(vb#(q|})n`!KhDD8b-(b`sdVW^c;yplKbd(mLN0=IHQ6?E|0}ixf+^TIkyGLK{kT?}`Hl50r(wb=n5@or!+SAtw z)88Wsly%cI(V?}g9Q3D{9t`U`q*TJ7~tqo zvi1%|GIh@b7<|alf9uIC_9T>%ESQRc)HH+DsmTUg6^a_nCg2Cthc@*(yVKV2)Jkq? z2j7_*0UMR1jlN9X>|Xbwn(b^jIjR?>g0c(u$TEv56AJVx5{ex{7mKJM344u2kYnKB zvbx%wRzsH;&JabXTVlhx$+bH;Z)Q>I5WR&Pvyk`Fj;+|9zade0%F48E-!+r<;!-}jwPifL zdKhoF`%1c7MhC4Tb;eTb27x666|eSsjiP=u3diK3+8w~QJ9f&sqP`wAuBvW|8?Wve zF1Pv3t=ynUp#dm;)iMQ*F&kg*WXY!2p6x<`gU09c6_al>Z;{MAOnon@b`djAT#rAR z7%Rr0vp6?Uzp)p0=Si%qT;7u3lPp6Vf2uI(17{A6!n@qMBV0 zroPhlGA?jT+Jk6FqX9&2RGHqm*1;@J>+Mfdpv)kdL$&j7F2XXsO%fDd2kU^|G}?l; zi(wQFW`Ipfa#L*Qz&y$RyloO^90$v}!k8zSl;m9EEDMvemxayL?dk|6YJWTf9L4?y zi?$qFq@O)+Vx2Df!=;%vN8Q;T3&RXA_aH@89xl0LvQFDmuT^yEbfR_M!yuul$<56} z!0nc>&dEbI7bl#FhY<8Lcx~#jv zWs4r%G{h@aK%?|ng!gl=h^Pdet>TNDxi?}`ti1>=*_B7MPy?6DF5LaZrF~t-hDe{i z>V%iQdhjqyN>}}yS!p@YU>C6&%|%`!Q3Ul@c|}kJ+t0;EiqNKmxtL6IsF)U`vDG^; zymC|?;2RT6%#IZ#pgGlJt$owiZACIT9AH&3#d7>hHb(D_RHQP#%e*{G;qY^hv82ta zxR8#ck?<*efII9oMx)cOr$>CqG zMjV)YE;_r+&};ULP271a8s+o?LatRSK2gR_kH=Y7Zg7BdH`IHE{T(2V86BhxrC%E| z#XC;-YG~vvk zpVK_Y;|qd=hZ+bIJHQdT;}mOylNU6w68wL;VpTo6Srh&X1AMHrJXv+fQUM9Cd+a)P zs?cWN77fPy@x;!CCMvO@R^idbK{g?r;L1ve86G;tw3t4+$}hO=NET(#vO!v=h?_yw zgGIf&%v&>6lnP;Q9tO9R;#5$Vphz2g9+Nk-9q{)6d0(lZF*BspgZU8}>x}Mpu%wZYCDhv8YeVIbH~aErg&H;WkW)e``rARV?hAQbol?D${*& z^nSfFUf7jQDRU?-ip!2PGnk3pMC1|6NWZ4_7)gUf1dL0RV}(c;ZmVsAx2866X<2D*6aU{{Qh)>cRwSMz>vup-Dw^R`#DFjQuG z)SawSkowvk%Om*RqIjHajAx&83Q{ zZ?4MX678iL=GWi~2>2})5-IFb)pc|ca$SGY#fdA!mD!j@-Y3b!65NEFR57CNraC@3TINjuX)xgd7a0qX8XoJjj+N8i9gHe?`^h_4O_Bw5!c zpyFl7YbK{F8WgKIfKIG(08h`E=QO4ygo|;3RbmVbEgcC|hYgnH%*cjZTht|ZqDGl1 z*Ozv=3|zh%sBB~H`=j8_a7E?^NITL+$}DlurqGwj`jQ5lhQxl(SmIt6=s!&{(Bn1P zsjr&or)giiWKYoZ>|e9dPFkD# zjBD&R%JEFfQk$hANOEZE4|91W?zxW|k`xDt;7DJNhs9~T@N-5VotlItidv<6(e>Ht zqeQbJ7h9&nGYB51ARNjHnp8unnkMNcMwJgHPF6zirEL)yH?*r zH&FVk_7an9fa-s4G%8 ztj@|3O3e8@26j;WL!UB8aK*rEFmfAaEFImI@(5Es+)>)=EwOb(=qgwAzz9y+>5jWP zDopF9i_P>B4>D=qq#yAaNlXVn#ELOio z7u#W#>MEp^QQo|DrBM!9g_Np1Zp&rGQ~oYsb(*K{Fx{WlZ}C=)awzzC;Jtb`zR>xW z#n9(Aql@8CRrMlQm_EI!P7&6kj{3V>G%UI`X#IilZ6n#Ic-B7TM|#C-HN7KigmC9}1U7;k~sxtBSVPZ0Qvu?#X1Diujc zl2YQFj)fJ(Zs6!buLbez$o*=h_jcSP1_{D3whkYg)4OegmUJZ#X98KNSf32w&AH`QbZc1fAJVVmMNhbIg(~xhXEpugFR?)X}CF0P;JclXc zVzRF4u$b8H=K2kxn&V^;>%XLv;$)cSHwvcX^>{+Z*^#X}$}S74D{jrhq$u)Ot`JgK zQy%P?u3t`h=XuLpAh2sxE?I_FUWOc)S;Cimt)wjqjLPWh-mR=BYN(TQ^xVhJ5b0Us zIpjxayTwRTtXo=L^jqYIP}X?Kf$~yzphFb%3DP~ z`#Me`*|?Q|CwG>dv11ES*UXmtRUP{!N(D_?e~jF8fWn`fZ9H5rCyu_Og}Iv%_{XolTQ5IR-rT_|Oq{=2V z3~p?POnr$*nig?jc0(OZ2|CV3dzjESFez9V%PkB8^HY1X&C6D^q?W<-KbpjZCFe{K zmzCVDv6dFmu^PuXg|Aj;*z#G@Qmx!U6Xu8rvfb$)($<|GTb`$NXKuOe1zbZabG8$` zn!$bTRFQ-N>1=+*XfZw<;M`1+F{(l*$NDAvs@T#XMMxtn-sHkg$TrecOkRSh=8g|s zhtm2jgm2S?WTnn6B7CP!y=oLQDa7Xsac-Q|#+qnmYT~WVPqNk_wk=LyZVfo?GJkP4 zbyMZ9mEP^1bSknhn(D%j_D>hnW?hL`yFtU%* zL|if=5>Miw`hiJtro4lskw@oG$0eyecB|}xqnb!FCsr-qdPIR(j-VlX&1sVsNNPMS zO_B)rT?>0v1~o0`lq?j{%PmdC@r?U8-AY`s!jF>$UW|CD2_Q{*Fi(mxB{j_9L|K3w|V5M#?dFvsz5{vG2n`stw`)&dRL%$(nh@`@(l!z6H zl3G~}I=m^h#qjIy9^P-9T@?A<6H>TI-o`5Gp%zP?OON2J)`j5M5X;ns1Xf9BatN8v zAf`Pj)&cpNv8e2E?E_!}+jL+LmQ(rBRM^%Ajv;RU{O0fWoh;4iH!!bm)?(nqn=t3iH~06RGsa zI{w-jZn*uKEL5=b(4&udzeK+*k&jGU^6_-B(f>DU@e&I?b13UPs$U`3L&0SnBi|uV zAxlJu*C^nCT^DD0)Q~bs57RiTpakX`Wy9u-;Vt$8)5r`A&6O@AoO}6{6Tw!CZN85_3!?Gcj zSyx;!MBFpPeUh5NFlA?GlE>}2N`}+Wak~1hFvXR#!6(Fzr)#AmE+09s(&UGt4IFFW zN6&aXH&msV(gCv^Wshea0|wF~IdX#~cGX?0d!vMAkq=E|FY}GZT(=Y{F-cHiVwZN{ zR-7Gxb$td>`j{ku7&Z<-sBW2SM1?69#=fLjk7-)fF?m%q=TF&h8)mKr>Z%r%U8!>_ zPA>CREiI6Uv4^r6ip;%UT{FBrlsmPtXH|+<%ahw6CNtBy%xbo}c=yf}Iwmvn%58nk zU@4u*`?Wv3jxFlLqOew#<*b*x>y;U9NMeCkHP$IKh_@CqMaPqHQfv^0O0UxuZMcO9 z9t%0bSJBfcjh_FE*B0NDAl?IOfNQy;=p639EaL$pdl%RxwARqX)>cxz`t(k*l=Nf#$YG)Miaj{=O7mbupr=;%6-iGsC3_-Q657H zX}SpMUt}iBCcoh?r!fQr8dos!K9qT4b`-g+2nm)6joWuCxp-Ei@*W16t0SgaykKAn z!#Yh>PKNyj_G(Q}&*stEqQKZXZY3$kwMG{ebygmiExFnxo9gKaw5a)ImZCgr(&aL5A0WDy~q}gHib)^D(S6$gL6 zbU@IF(Q!Hvb(HT^ce|7~S$Vf>ZSVd1yoOK85{DVy$T|5^Iq(~F` zqn?Rgk$~z9zfNt^F|4K44;yCDk0m%Vq1=aYV$ql3O^jB-8QUp4bBRhyq&Wo>cF!R_ zvMHmb1*VkU3C6KBKegljS005s%~Cf=3IbIWN{)CYB}xL;gGDYZ>WgrB)@3rG8&yNr zOn6oyl@#kKr{WZaf!vo{DY(oYxz*PCHjUe}!ZHIRChl&d=0><=H4sp7yo56Wp%kD6 z40P75{i5P122N01(JF0bs&?{F*@Z2KD552o7d=Fk^N9mc$?|nkotS#wy)}uIqfsbD z{(f}^3yZqz-Ey)vUr=18kpW8od&_OY8k8S*5tS}i#~(O4Uh`JD){o8;-HR7x5__0K zDlbU{Yo@S_dU%WNTkb-lprPqHI*f5_8Rp0(JHAQ|EC2Fx#x)f`z?qx$+!!?3uuU?ER z&Z=xN$|J3GC95Z_yC@YE2;oR2$_CEwp6+qR6r?g%>s*&s^-4LEoKF-nuifcVV!QcR zdo#Ne5Q2O}iDPbtm56dVE|axuqB^^IYNXVZw1aL@>*bOwcpoag_qthqthy%-Xn%4S zc_>dFx61RLqxgh)9LG94Mz*R-^$6`ii_vtvJoTFAz`s6RWTVVNYO$eY`4JP;)1tR> zwX;jD=Src{uRs};SlPVBFjqTtQZYzGm#%ynrsxXo(=9>yYAHq1B|0fiOy+_@eP*}| z(=Mu&&Wo823rdz^$6zU=P5AfCv8$TTM0ryUTYIc&u1z#LE02G!I}*lcNC z?sT~txyilqgT!2GfQporZ9|3^f_A-Ri#pk3ZgGA03NFv`EEGSd)=IBjTx|X?1kdQ@ z6fcy!+fS-WAc(85-s*;^#7%M#yf1COFhf zO2Uw93}{t}e}T;EtZje`0KZftjvsB_fk&_1X@qK;40l_&j|||VQxhu!z85A-BiS%U z&u>u`mUJT-vrb3#L#d5GSB3OF2hhp<;(CrPk$)w*Fma%wn?vU6-|0t;9W;SWgORtG zK6TE~m8a!i)1byXN-uT9T5+`=q96v{#({bzK|B}P=%HX|+Q6t?rGZB|9SnEAy5!Nn z@}{vQK_AI6kl;CND1*~VK}Im>u)B-lL6VqYy&P_j(hgp9m^OCVTV(rFVvG=6sL`+< zDUe~aIJ!C7*ohj8T`NC@#2x9&H;8xeFAYq}}y{z6?JnpfG zf-v-4bG`*KSvj4Jku&EL9w>{drDoAIMm9aJ|Hto8md@OFj527BJ$}?FAH6D3+Gih! zI&~Zd6kf;V`rFASk@;F^kCkm01I*oULoD2pmD)Zu-7vPLH%Gnj48ixW^V7Q-8JRWxyPml?6q+^~&4!w@RxNdqCLc ze6@UsC!?X|%`(tz<*T{A882o(*7L-Y+M+iRphn8kDo@bk1ObtW#yciz6O^DBLb z#TRR<;m`|(sBf$~Y|6S-$!9X36{HZ8OQKBZJ6o7_$$@fcItTP2wpNo^j}=>8+@zYN zig>x$Y;Za6Y;+-05ny&NdyF?HG1>Mm(p4aYLeBqC*2mu%U~_VB=J&FyqikH5RtD8!c!MVmD! zAx3-Zi5_7U!$HNklSjPzi!-1^Bmt*mgQC=oqr%X6m~l5s9jHc4S)TSghx~r7y*is! zsNEI^yFBeo*%(?C>yd=e2fe()Tn-6}NV}HH!oo??`;{z6{sY!PW$R(ft=uAU1- z@X5piq)x{uDjbRKRt6$qqq{)<>p0)k%td4W4C>v`ZE(FWNK|4O(XpVstiQv4S)J zr%>b4uAHni5@Z!Sr*L~!2@zZ=-ePZ*v)Veau}wr;!^dM2E)kg-RusI&$3DPYy)(0v z);(ru!t_GS9wA|Rs-DqE^fk{;1YsKEtlj45Q4G3Ms);T;@cu+4cRD^cKNVZ{LnL7f zi_f|yI+Y*$o-*Lwve&y_UGgHC%w<`~co(4pDu~b_gH^+#t`d zl~eTuZ-{Hw)4?QZ?G%3f;i@k$aNV7 zZ2NIJSrLh=09`L;n8+ERD4V)ay%F9il6;OA7u)gH<%g{U5so1cex$+F)sKUAM`z<> zUTM?#n<<@s`KPWj^Vdh>QQ;4&_w7Y%KlMD4eaUCeMcKh^_RjU_nsac)RN7@WMMNlQn-p6i1VzRU2&Dz9g)`vx*4S;s? z=soNA^f3?Jc&e|=6nCUAf)t7oU?pVs8CwG$;RiF-3tZ{T2f#iNk~|C8iwI+rW- zS3`Ee6#@?8I51r--u*P{!llpBRzHLnBM3IALrD*i=upDz=gS#ST(% zbB3%Q?hdbK*o+8=Ejk#l;e*pG5S?IB|)Hj!d<2UCl{x*yF{Gjj`1 zcQ&mjo<8%mqm!bHZJ}L!5^y6>%(RI(PTJ|bbD${a5}z!gE_}7e{bIIpB`6lf9+pJ6=+(2&g#$84*C?lc$-%0NJ?w#6r1(-sittM zvELzT$jAdd*>kv#4Kqf z^*N|!N{}CXN=OXl$+ z{_)R15ft*_3kzI?DyLk%+%d|Y_h#v-Z%J)w_WADEt%=s_9xPZT^zFzh>e=pwlFE?*bFBe~)$z!?}gLW$bO?CB33FD<( z6vb$lwX{){uphvR8YEJ@b|`M1H#d)e?pM!Ri%O$N>mG!LU?(-;NKxJ^5)MKb2MF|X zzmJu*9GGv!teUX(Bdz9q3NX7$%&UNY|GowNIhJvC^YD3peSi1%7Z7+g99d6B`UeiZ z+E}_aHIz@@&DY$VE+3i8eF|!N$aV=KPzxk&s15EM`d(D&qqkNy5;~Zr=7s_xp#tSEt$% zPbD>6e(9mI7wA~i$Mt-MIbiy{IJw;9ucHk?okFUugbV*l<$ZZw{c*kD{~gM+sJL3; zni(d;%7jE>Wq{F%CDK1*ZuhUx4>w=VZ$8E4L?+?T;)%i)k$(_4LTgYndNvK*TlEgKx%NzwdR-|VH(nV(j>gt z#;;3_(Pf?zB{2O)249TDxc<6%Q4dW2db+>W62qAR6HxSG4F4G$psoT9iqI~fOb!5M zQzn7l;5rQXIxoIG(1+oji^i8sEQW}|3B(*kY#IM&IENE=2J+N$U^7R^x-v1Qf10FE z4<)0Z6}ju=pW(_|uc0qHZnyoDX7PSx{E7~?bv5wJihy8IWwj%`m32x?jPQkptglK+ zZ6&ciUcDUqb$hZnl9giUEJD8M;ArXw196l_4`htgX?T3502J*uhV3*HYy;V*l(Ym` z(jLGqS1+ee50j_Qk9WSAs)|t(utQeWpB0AltN3X*!RmqtrJ7=0gdcYM@S=@X{%e#J z@jtK5yg)Ie`TUSK z@pCzEU~I~$*&y;A4mZ&1gX8eAq8s|B-;^50%(WcKPwT>`$A9)O$RjN8hu?2*|K99x zUQJZ6Qp}7i1x!}c%iQlKt$81th{jJWZZAXe+(NNeGfO9{51xd0CQ3I)K6{!(1?t)24EmZeatWoQ?PfLM7@JlS3+yG$8RL6Yy~cUOwL6 zvV^w#H>!kOjM10$R~|djA<`+8-{)h*=j#sP=NH?Jwr^h^v>7QUdlI(X)-#Z;=L9Me z?H_NyT)y7?Ng|{>X`D^XBsFAyx1o=to3y)>2$HfJAnjuDs-TyC{ZQl@uTUxELd+kf z5eJllj7vzQ0^&<__b3yWbRK`3JUu<^Zyt*sOSPsv_&k!A*T)3D;@gC;lE9T_If2B` zAbh?n=?eIFB^(JwX1GNWzB87PBl$S9LDLg`B*K}>GZDMUC4js2FR7y_T^1E3^=`Td z@3r3~@G=KAwAb>g$vSbEq+L|k%0sX&b4ucM39N+d5|Ksi5=zX%DB?$fyF{m|Y>uW) zxLI|=9*e5FaI4M2j$Um{ub+@ov;_=g)WD{yh2wUa(t6A6W{T2N0y~n({(g77jK`NU zbs`j(Z)G63Wl~~&pqGmo?^~Y8_6vcrNPL9K$pY1Bh9Mg*c&03(bwaTvXXg}OSa#uH zD_T6sVR8b-n8%>*S8hL((4+Nf!Hwj^XDAm66z?d3jK$Sdo^L0qpHyl>7owbb8DF84 zRQbRU1CxMt>z9pl`0Y8C5Um>eqr%rP>(zkIR(!nh@dVd-q%)*y|fHoJZf5i^iTOeu0B%RKCZ{fq*_@@s66RJN5@ zhv8Wfw&PcY_V#*m>uu=34(<1#JA0=Rl&YdQr0bhE#`7`rTnJ4jl7q&ym`C*%T=qd%sh0VzYs6MypsKs3!V?f=VE&K!?gI0 z4k313uWiax5ne&AAk+m-ZGsZMNul>Ukc^if8%N1RKbyQSzN{v=B5YPZ0^9>SWmpi~ zTeLePZs75q2->X3hXrF%pP?;}pxHgtw{Ismk9QAtJ-}V~nzu1~X(POwK9CbBY{8Xj zRMdq1sEssmy46*QDnK)KNXIkYQLxyW=mBNWiN4*wH7PIzxa3qN6-QKdW$Nwth~c}9#mHSaJOUmcm+4!4O= z%{qrzH`C#|+1q8Z;4$MNM0}m!iEw?GpU(PXzFWIMOnDfKYEV0w{;@)hTj#mdctE98TQ!&0X; z%>|(bl@%*pCCM|uv^nLst7nq;enlKjA$(veRJ$^{oP@7(4(+F6ST5K?Bw(Jxreym7>{D#UM*`Qq4?(JJG^;mMyx@LDRlDla>$9sg5 zjPNom5Eel;5u|7ng8LeRAHzuXwhPY{N*%@Awvj4YTXsgq#=f#7_UaPRP(s#Hxp#|kGNQ(OH4pG8q<*AHbKRu zywcoSVH96%%-Z_D{!ux-IkTI6FGvr0xWsHr(!xkbJl#5x8*%dB^pVVNoy%kho!! zb?ok-;r6+kS`_weY&||OV-h$JQ?2Gc8}mAaIV)apCsWy#qZ$Zt$|OXbFahw@AOS zUmaZcti$S#iph%|IAyABvoBS6ia2|7mphzIPqu5?oupU^)ob*mlZPoIfkF>dMtYTO zQ-x|JAl3mpEM5_f6DYDNdlQW9p@)!lU;>`4R;L`GPLLGi?Q^Ify)VJUJ>;7WUg*wRrj2kI;E13WN^)oQeOh=e5#d`03jxW{GPe(Rvf0-1CiBqdnUFR zNzfvk1?w`mRY0>#tf0;6WPueEvo=l!gV%GxK>5bCCiU3tW@lDqvAvjm9}GA(i?ZBj zxk=K*#1hl4IydCE?BZJGhfJ#TeOKtT-0TDrj+stZB@OZ7OoQIbz(cmkZL+o*aEaJ~NKC6pSc;Oa&hB5|Tz8Ky$xpeF%uL~fim---gMAH*%EBtg zpeW>!n~xdsKuqBkSSF5i#qpTeSHjVuOJeqsJ(8!}@jo~B4>!L*1REpE*A0YpyjG_P z*N1XgJTQr1VigMqIKKRVC~Rgl1=Is}sfkt_=qh6lZ=p(?|9AfhYpfS;kiEe& z8+s3KlNCOleL$`nwP zHO6PxvS(y&UBkkK5la`J*Hdr7=-=UNtu1&9raYp$wUkc{5ekzJ?YL4a~!6N4ZedML#Bbgn^NbEya+so!#WGKMkENe6rH6rIX8 zh?{noAb0B!4wfqOQy)7gcd1>vVGrx-HS<+vqvV!)xr*gb$+*CttuX_Gs`awz-Ytk+ zpvSi_Q0m!umx;Y(4((BXFDn$MjqKIgi$h?c(3vt!Fq1j7rh1E5*NLjDnhkHMCfesu zzwck11s0|PqK><4D9W>_K4SAi#rzx*ikhk;H9+BeJxAB4-CbE@F^vun=|vyJf@SMd~e)qURg-w43?GxgbrKO>j5#E!d@iZ4 zT!I(ev=ofb*@laeQ+p>`Or(S+-nD-C{BjensZ9qyK3kt4v}2r$!I<2mCNMek`n3BH zr;(vvKEfwLd}4IQ!b`3MrEm+L-^^{%lyy{I7*{dXt$Qi1SZyH(T#)2OYDY~gTQ~I^ zwu4x`U~7bEY-lq!abd_b!0bCyR=MeGjDWyy>l5~Ig%5*~)iBSj3q=(muMO2WsV(9+ z-epo77!ofwH6LCRGnQYQ-y;QrIWI*}eyaU~7yCj7XH{&V<+hV8M19{u{X+kAIyyKx zX-`7X(yi(`7^JJ#X5Os5G*lF=mCON!;`UO1Z98Pu`d_f+P{BIdw?0-BTmEObOjV&>LG1L3kKdip=G_vO185UcwaSq*D`*>AC8 z-LwaJtUw^uYyQR2aq0*x8G>VsjYuaQaz`J;+(AFhVNE+pnm*D)=&*0=U(AZDUCpv$ z(F8Vyo{>k{I!wUSF!qpDD2S1)X0}BNi9IrA$!h(vT6v*Ych|hfgW5CTk!=fa5orB-cUp|I^eA({KN zh7XPBrF8LJ>*=np$m^U%$PqvhFHh!#4)TgH=xy+{P22*T7a}jN9_%=~qM{oPQ>E=g zy9%rYbzyFNwC|{ZQr=ep8}9WOPfou#K-pM!gH5h<%b;-ZSAn^e^ z#n_BXn-ulZyN;Z03@!y=EW@LkHWG(;r$c!JbYe}NA_6+`wGMhH*${nWfMWv?U2ugq zW+0g)E?UzAN|WigiDeHbb+F!Rxm>?IJ>&TD1r4N~>2ezHCcoQH896W}D&5yM9EHML zDx*t%FqaXli~;DASu68;{dAee*q}bKwCO;3Bx4 zR-j;Ch|y0;XtshKnC$*KAng4*5ZTFfKsp7=p|vW&^)p={S8crukD5t!oz*KTf!GG!^vJml4*hs3-^#K3Z2!;xfp&Op>vGjGNB#aN+sGT?*_Jbj&wb61(y zTf#6M#vl2Iq#EkYNFDP!cu}|I$1(5R=iFAuCk4Iijm(fTcNCk}$6OVHCKR2-@jRe2}M{Y?x`G?ZORD2;H zEbL&};p1bG2c66jETI?_lI1k;a5^Q%0^Faet6 z#z^KuLYpM=6;@N{MZaxN#+be5DZ-^EYcP>tYOhNEI_XZBiL3~j^C|f; z7p@F*l>rjtYJ0+*PE^Pz#J$Dz_PAIWx>vW#NTi6JfkX}!=g|Prv|t;QpqgM4)^Jsc ziK?8@++w*dERPO-da}&*L6pcdbxQoQy1*&U^>}h)nRF!~k??K3Wxu37n7bW+gg+Ej zJK;RRVr^g|DSZl$G3h5)@ATyIf~Xg{f+mCb>9}0pNTt!yUGC(m$?NgS`1)jbqD7a0 z>bjFlIG+2yhYn?M5U7~YNRF4e2D19D`t+3be8RPP%Ff+fxl1|aBDw=T9%Go6SKrxu zO%G=ppQ0JS1f7iwdi%!rFQr&gIFBtidJ1;5(ri13O!=Ij=2f@aoSqcBN0?X&Z6D_v zs;*;h+HyVDCo47(V!RYJTNFGHJlb9=!$WPy$+2izU8pDa~?@lt92BUbM(ug2MyS0|zR`1-IZl3kZOY#GO+! zlTT&17s@*2#-qTVj)_{G8^BCnkf5X>8k@;9t}I}s!c}sD_0|GJFzaeK-ms@VU^grH zR@t3f8bZ$$wG(^2S`_k$bbS~dFlT8w;km+zF!rO}DCDu9jEVG~S`J&y+s^qI5oC8f zpX8p=io!1Z;zV6KDJzC@b&E0jIL|>Dw5?do)1iE zk@9pJ3XMn{g8P}R-4h0c>c@Rmqkg=$#|}~s+IoDp{K!3L&K4Fu8(+hIQ$dIzvtsC3 zh0NXEl&P6W#z$FXEmD$)_@ru=~$AE5|0_BN}^t}@vvlz7N4y0 zj5!&L$)!3;x0XLJ$Sf1`mM(oq{l-N%;44$^)ZGC-!;84a?wB)RZqau25glAk`x~7;8UKcGw$*7i zmpzllFJ*RodHxHMY$vlN6Nf?)73S%4?$?R2ocohDAR=IsfQ8#}De(_Y#PURm&3GFY0=`I@nyB*?Fp=Owh;MWx4KWEI&+KPA@lkOko?0 zJFi^I{=g?|%HrevH)5UfdHZtz{N{F3TclfLv1HyHzC)O5sXZ|&;I3TVvcGw`{j0e7 z3bf&334)N9;>E?^O6Op4eT6{UHS>0wsKVEE5nifx|41OH>jfb#T>x-8ByiIpw`uBn zhWIlw8^e9$+}t&!Q}KB5)GokVFxOS7>2KTTn@8NN?(RKI+E!}l9ZvG!|M2g3=JX~2 zlnMUh_uuW#kG4PTh!pZQ980sEl*SLHU0TpLE06!M6KrNtP{j+ zH-CG23?^Mm>nuX3L2_l{+2O# z5^cKpP2FbJIjDIsC1*EMTl;X%9(D~YBc475<8ifE>1;BLD|1NQ@pAL{YO~)}j8++0 zX0bCPn)_!6Xv(LkXZJ7ofGVuu?EUN=%!C+5e$j|^2gbU~K76}5o;0A-CYZu8lAW2w zezyeAS_6xk8_sxTC)y_9$q=sz-wi<9|>k533F_|ZfS;=Y=K)RhAHgDgnF(M zM=Zz4qX88A6X%VLL{hOYW*#9Gk;#I;sAV01@Mjj7>^3kJIhJh?#bzA49zrXsfb%KF zmW-5QkCy}-_!;Uh;;PK%iXP|X2HX$2P#dGPhjy^YA3ihU1N6CE#Y0b(K!?)EUeMv} z!5+wdU1rbwXpQUz9nK!?f$SIND2;PsV>rNZ%uA@EnTFANiecPS2Y``-EeAm?!FYv} zUFDdt?+H(k5)S3pnj2-q0AoqT`^$P(bJ|5ATciIWMv(b=R-?{_X%+|)5ke{Kplm!g z3yjmJa`Z+^VE!eO*90q26`SwiBBSqsOIF`OMP^@vLse`34T*7C{`L^Ym3xS=4>aJ$ zQXBB^TP1tuhyd)YVl1Hp?Fub#w+vyI#F&fa*u{kRPZ6Bx&L)K<9d1&YVN&f$RI-ho zLM__IG6a?I!Rux};Sd?a)HQRrnjM=PxMoE+eJtFVpo(N3YjTAL#j&wBR-{+{umfr3 zK(Ge0+Bjb0(u=E;Y@u6pdXhyC;;kb$?A68Gwn)lZmXPs@g(p{V-;jrpVXGZPA4+YH zI|LJbxfNgvDBCid1+xL9-gT9~_z+sGRo9Z*A$nPxiOVcLd{YX4tVhXw4HU;)wC`;s z36_P}Z4a|}P!^(pOC%daYj=_!&^N*IpTPv3Bn|tPqBc(vdUrdb)!~r;|sZ!dUS_a5EhDO=Fq?k8Hx2;9bEKX z!06G)(>RWT$>zl~=2^luldP&>GR5-2uL{$1g&{v2>@Y+Ll~5b3-YC{j1I#Q-W%On1 zra<8B&E-^RnSQ5EBVh2HH)Wbtm0YClBfO2K3;B=-3W41T4)yYZoM9s}*`PWsaEm1x zP)mz41E z9^Pe{Tcl6@WH()1XQyXC+bI^KcnJB=OY3C8xT_AZ6I8e1CmPTR5isXAv7y2~%Q}Xi z42g(j3UkdQz$Mcr)Wx;gwHlRv7yhd9!wfDNBos1qk;j-r-Z@!VbqbUP=CW25K(_@{ z=><@ANe%6$Kvl_2YJw6(1na$ORVgRNnt@8|Ngy+?>A<+qV?CuDDMwif=6<)bcYMfsm+#=~nzgxm~QV&x%?5N0qsQ%IqCd zW|s3Qp`9Wk$|}iC4G)L8z1-}>@gn+RrE_fo+kF52`1|*h@86FJsw*z6h$5phRYgJg z7Io)P2A9UJhOivu2hx6}WM0Y`EOs|sCR=8=z;{0#zx!$O?x!(9h}*3#DH_F=X!8}U zJEKA$EPX3S!{NmJs@p&fRN8Tk>N;YeiyHj{{m&oX|IjXG#uTwKc3UHAWg7@S4CnHp zm}omMt)J1m?~dPnH+lEncxX}<1g&An$s2jUJAU_$yj!#C=i{FzKaYQIw|^6{jS?#q z55-6wR<47D?@fw`X-tTO>Ls#yHc(5)H70{28kG--fl?Y3^8~Fq+OAWYId!MR`P75< z2MyAGaqoXP9vG?_bJ!ZnRBdpGg#9p(zFY%L(nc1HO}nj{C0=&jECcttSkOiX8@NY& zfN3=*^9=IlU=KlCzXRA>y;J=UmJ^AT^VqLovCwsQJ@s7~KEa|+N_P6Nz; zG7T%L>O?{NQ)DvbuBatT2+?X7W7OLYCqEwlv}uz6c>Lq$$8oc>8P1LPccTzPvEKWr zP25a&ALPo%@rG@uPo}wInYWu3v6isWv9bIEsblRLsi!|7N4C2Z%q5R1bjAhfwh#T+ zP$vIsHFz4J{rZeQUS3rNe*EFxcU?eTrSq$I=$?u_as6E<34l7u4_sZY)?)(wRS7>{ zeynr)_`Z`9fI24%N8eEtK3@FrLj_ojJAn1i6@L742Qc~J_=n989`|n5?7fn+SmAH+gfP%PKC?oXpSIkOklz zjwKN9cjQm^ZcEq+6N*`rzKzv-wfT!STK1=n5t)y@OI@ zqA(;_XIB|VSdoG2=^arE0>irXL7~5=D94zG;??~2YRNA zp5R7hlV-%P39jr|fuvuyw9=PXj!(?(U_CUr_zfGJdGeSjQe{jp1EIJvY^4C4$ZZx= zR-}Wa5>#BJTetGpX1xANp(ljy=k%9s!k?HpWvubvl@s71wtvP<7@xstrBdZLU97u& zSUv6t(zPncgFe|CvD00wc~0HF?fqx;k>Sg)x#WN=#!Z59@bf*GFjhPM!pav%A6dd7 z#rX>TKLe=uOtkx&_p&xIcfB=uoKD)AxGgVhR8B8E5UqDeQ$Dw?3n+Qc$;m|JsQT(P z{q#RqxdUX{lS(${-dvix)3oK<^k6%4!T@pmAoC_}f6YVRLFz@jr}NM7es=*mUm3=F z&41~l!M0v*ZS9^HdnxsT_TRAIrtc6K#xu86fzqD@_c%7RI^6s@G>Re}Fl(5tSmA9h zWP-1C%*_PhKcgt7pBf=~?d!LBy7(QseHT3~bnq;-Flr5&Ftfp zebL33?AmY5;f>L7=Z(QSXf}O(v+Wm01*VcMHkh5pleH)R!jB`x(DuNFib}w*3&eWZ z8$qB6+#VsZztZ<+Oq7)P#SK;~8@#r0=#4~HeEQJkof$xlj&!#rzKfrR(I9_%Xnrkm zo5A6Y`{OCIT9F}GRQkBjz&N=4D!^2kN5A0<~KK9Fxc3NqU;D;_V#n}=77p1cqCqM&) zW1a5xoWjqKy43U|oKc0#V2&d8iMo*k9GhnkP^7U~me!p#MYRl~j+y1qkruV+0!OZM zwOvy=Xr*h3rQV zVb^X4W4W_UToK6yTP&?>`w@;@NCpCHtFs^KPW$1j+kTD}So`9`$p5l({QKhw+bFB! z_Cx;paikKFo!MmOsx__g6PwjbZCjsw+{%f`gO|jw6SK%qNVk9f(D^2J5;DYY8vCLC z{5ZNo7^MjA)aTn%cKq0#;WPH~1pgHlz`3T`$ZXHd^v-)gCx9hyx!ITIW-utyci0S% zk1_wl;emb0e!78yewJINeQ(Ae--mOo(IV!4{Gki@xdfmxz}cTGU$Rs98F-$4UY_GB zB0~~Y$%~16I>;yl7b4_Juqi;@!B!tW5VXzGpn!2JEb9%2pIsCfnVtl=2R3pV&z*_K zvd~>LV+);rIF)|Mf}HJG@5O66`Zuwf{44ZhWT{3GKaP3&#sEl5We$GD@2L1Y=O0tY z>87qh-cvm1$uG>=unuXQ9W7i^kR-f288v`c9U$Xi0zeHO9TQ>EZtP_`p|9}_2VBf! zM5mBoL9#mGOdQV*BR=%{(N;eMOdm%j2@`aI%K@`fbeg?dC?lM)*t~2UXdlmyjh2*p zjtT}zMDYpu#N!rWWx?FH51&Q)T~VFk6`QE=#Iw03Dmzl??=@_6bix=Tk-3DpyhgmY zXP((2^&$B_#9(!R$>JGeV!sC-akm0Z(2y4vJ}6nD9DBiO}h0*t+F|@#8mkVkp=6VPW<37d=S$tbc|tGZBLT zagot63m(zS?!@N^A6etZhrdf_Vk}>r_uyzA6<6uPckp-106VYd&zRgo*O^9DiS28G zK+k>^zU-}&{G|v*piH>(JTPbRdTwBlVqGJCAQ52#b*v~{`V=Lg@Wrp`YK?f7aQp-q z66()~)g}`wbxj;7ORBY%qcU?rWhtRHp_sCA#`l!k45UTfZv8b4BbkbJ9$T0c3%NBT=lH2tBg?5`fDvLEUj`yq9zC=ee5LQ%|Ivpuo_H5)QIZi^?4wZVT| z4he=Frv_qky_0INrd z6fp6#Bk{YDbeiEXf;5957XdsG#C1Up>!m_HX^E_a)w!>nm;>$eS;$@~{pC5vhV<%m z)cJn@<4+Nk2`<=r!%iwLG9tt}TFo_%8uRH|U*&Jp@c?r*3_pTig*=SJBt?KpbEq*~cYx$+>KglhehKG}5N3S( z?Kd9j^Mbjv=YgYs;3K zkLlL^*2cHD``1^Coy4Q}cf*+L7h=-4(PW*y)S6k3)&%1-u8VqmoWE>Nn(D=1Cda!H z=@Z}7*Uz7x&D(Ci##!?1!+HyRMF=wk* zzR)%Q>|b837d(FU-|PL$qxm?f{O~s0|MQ6_ zIK_^7Q%fZuR)^Wx2n*zv)nDXg)vQ-&$o}JIL|F{^hL;+$y{IAAhi;XTv_?~+$%O~DV-7lFuc=f770akrD-$1e3KYsqSyQQz*Mg|yh zsvsT&2PLrv+wPVb4l#C`VCN-ji-xe3LVat(xdzA^i$`EYnH{%I?>p$eOf_8YQ(Nu+T$(C zL27^|)l&L5fj8Koh0!n0LG~dj-<%SKVb3tVos(H}1eTk-2i(^e>g=@R$e%jc&ZlYtU%3ug6$ zw7N0G12;9N%puHefCllkg4sbdI)3RGn#jlM#tiXcUmi_a_b)e#M}+}^0q%Hh_U-9K zZPNQG7E^uq(co0qZ|fVy_x zv`ENz=TjgZsLiN87zMsN;n#WCd){1qB3#!9yF%+{W3~}yyJMH?bsC&awIpCg92qM6nKg?&O}|-8<+>Jp+4N%x?q42m zZuh&($G;z+{-agYK}0$2{-1pxX*;cFvcF;eUOpqB9^JpZzI~nc?CC#;X}9de4|~gU zAUCJ5jQSKy$-1e5tCxcfIlF0A`3X7KBT{tx#U6SR@a66E&4V*EKVa;ppI=@O$t7o6 zt@;#6PHkq;O>}nu$6nILZi~1q*}s!2<1OOJ5V{N3_OaVO{qgpno0q*e0O5`Xw+Mmh ztj=Lg^AC-PER^TPvMEpuC6=h}9|?<1bhd*VPDAeMt2@ii}vS~0Rtt~uhq zq|cR~%$1k0+s_=#?NlBiNB?v8n5gv;IMvPX#BH`}G6l@xG1rlE#Pj@rU?!GOUmSRA zz=WgY_f7}z!>;4lxIeYqabN{G-`8zCkDQW;oESh2D<;9T~YKg~p zH_!BQJLf*K$hnWKbEXPgjrNP4?aUSO;CMAGWM#^lZp}4&)Z$XLGk?@^i|HF%88Y}r zT3a<`ekh2hrcX#2#+=H2POzdA60B~!cw#~oLsh|xY$|x2mD=w8=u<;MAC8@~@euRQ zrppTRTzers_+w)#2qqlZ4^v?@8Pl?dU^l%%v3)4p>+5Umkp_$HVK%D|A*z_^V!8=4 z8h>w$Uo`u3l@Rq~YRqj8V7J_pZ-4k2!H>fPnoCD7`~A@aDzor=0|$G#i&ItD_00>s zX$jNi$ZrBV42mlI@z!?4$5)M*uP0@czs`Jza*$@nBZM0HNETrg;r0E)-7SZ?NVI+V z$LkdVM83PfV+Xi+fQGtAl@rucqvP>79QaN#CNw<~Qd$iqL?lsFyHL|RG~g=1Y+$e! ziJ4mzJ-yN8*3${TRiV5hfkej}4W?pBxR?f=hi-id)YU`Drc3W>_A!X5q~W9}z8@T>_eBoV%oSw^-q z%=lKOVax~f4fsP@2a-DX@QB!~YBKNQ#P3wA9?Y{Vz#%J4moXdAIfOW-#wo)uo`&Gy z#5y;e{qKtpMzwlHT(H>l%fCM6N7x000`KB>xSrAJ3xYFL2HCS%C-CD z+6_*^m1@q;bw=@fd2{<0*{6I`?g2dyFcnar)4u(xBBi9*>&EhteX~T^aB|@7!AgLRQ!H8)X9qp`PWi4|cc9r3 z%`oJ~wj@=JHj&E0dSxJ+;J-g$ksvcZ>`ddJcv_zxYzfMb+l_>_{Bg9LV-Z`V!kH4| zN_OLGDW=T=ASI#esq1#l4L?R73G6kMFO#{Zb`TbxT#uyK4qhjc7RnT{2|UJd=J=AZ zxw2MEP&E1c=9H@|Rg*@=9BM^i5B=56k{pNl-Q)Y0=`0fjiD&(WSfh*2JXCp z3>4zO$*j|Mb}HgsTy}T7O$fyJfB8MccqT7l<}-$wxEf{j8nYA+EQfr=#b%!*dc!0# zcQsM*A#;f=HklGhtVZgryprg3jk2y%*b_V#Zj#I`E-u`doIuQ)ns!+vKEt9OMOYB# z(&w*d9Z2XFjK*ni$SA-jD7R0l1xO4%7rS^RH!J;I_@@=xZ=Fir9goien<41&P2iJrQEicjrkO<}k) z-=GVI2YWn29mW)pj#nM<F zP#?<#bJO5Hsxs`cnfL2zo2;AAP0Cg(fi54>QFejjf6!aoeLi%^igGz(ufP(O?_WRf zU%nin5kJCK2f^;~?dIV%A=WptNJ8Rx!p!YU0ROr#>-{beyPsp8oa=(;F>Xc|(W?|T+!AGDr-tgI+rjJA zPM8mDO30IFC#ybm%qvgwGO;T3x|^k|8&dOME{Z6t*XjA9 zD*`|3k77Xd#xf;njA+0$#x-CXqZ=^2F;3<5Mmk_x<6WY9qh2B#V_%}X!x?bRc@S`A zcMl{#JSRdv12ZFFoAV>!4$hK5)1E5D-f8_NhjxXXrMKvA3 zkqwE2DHGbE?;~D2K#CW=K8tmyPg-Z5unA9hNWhHb$nTRCMne(cKf>L!oc7@zJQ~&o zlQr^S5A4CkC6X)ukc+C38Qyw!NxMS*!-u^JV@U*H{;erBWG;w~#|ceh!r`1|fCjku zlHOm$+7EQHia)vJw>*3njjqp+mYijIZ*0L}&cinWcNK`ib|FMk$+D#iKO9oy3Q_Oq zz6R!4g3RG90bHacvrNMY(@t5gKTw11lorI!_^Cd_X9ky;fHwfbA?{2i#Exj;%o#GW z?hci6-Fyg)5@DQNms}jhPdybNGlT?ie+-?QZI~mSR=osKby$KevBts(m%T^9&8=NOmAY>IVjZEHl-fM-rB-PDRj1{z{gt}lRV-9%qa_XJ0S=#nQ`gK5Tm=NHv-#F z2wL+dGo<^+KVGoFdcg(aGuEg*?A`tuH8^5l7j=X2$82>G^0EQ`&%@2*?&kB`6Jqlp zyQgQ}XYWwhBV@Kwe?9$YN8b1QyWQjdjpNeauWia_S*-0iFTKe|yqVb(H~+iOulwDf z&%0-T+v;_PfV;bqh00e;Fsj}Dzt0#|+`sK^U-owcb@?4D;JHt}&kT=@a*Zbe^A0+%Y+dxl`u5p6j!M4#Loy%Uz9JY*_=ekfz?jAVJ`PiwY`xiVs zJhv8}-VJ5-u=Lf-;q*pfIasB_fjisxSgrozsxtR(9CcYtTWNK z5r+;9qwI}u=esvk0Pj=X#-Y}WT(s=jPU4sS%_{@;`q|u;n)wHk&yTOq``i0Jn8An0 ze!scfJ>R@=AY=gB9TCgKCIV-O-RobUZLaU`WE$G)=#T)bB$@x*%Hl`H%w|V;u!#M` z{vV%_FSsu8wAjI_Q_S5?YwJ)Yn1!!)nLy3|;COsE%iEVP&u_c^%gfWtp-k^TDcdKM z@Upx-&;?kqKkt6uv(_ta(;n1&+1>sjyW5*|kUx-jCjb2SO$k2TKi)rctY+CiVUl~W zZwp#@b3fbNx-RfQ z2f@;q^l$h3*KZ*1ZZNhnu|H}T{Fch6`ONy>buw$ROpc*?!PM%1|JOg7hSKBsW)!+) z0DGr_eDPctCsz`y>_#Wc4Xm^zGb9M6?(bBp z`<*WA)$R53vltG0a4pM868md+d;g4kBD)W+0f*Aw-2L@*`+rMfPIfpzB4gq0C=rKl zR3A!0>6aDTsu}M4PrI*kdtPt;*bfZItyYP)-Q5AA&JJ*U^K5$CUJrh{dBk8#+S(n$ zFy@mi!#B4#*$pN_WN`ylO$)j{jC8A$D@ys({`KljtJ~Q%0y0i);7WOOs`bi~6 zhFeZZO*V!=_Cmd6FE}#vp`XaCSxOen28xP;TQjwo#6TT|O5!eeIJKx7&JO?FJbd0e zd%?+CQ!NQ1eF{zoyWhX;%&21bY{t>v&_Pn|ZbKyZj}(3%#BrAu{pDF#9az6w=P+AL z1}|oPfJ<`jLvLLD- zKHvf{tM8_e?*nOP8*Clg0_A`HxZ8DevSX52T<8EFBQv?xL=)#5qV8zsgj3>xVsC{i z+DW*<3aK*QuOP3_rbz@`!@J058&+cY9N+yDe(5&Of?=+)-`$S>bNgxc=fl(QHxF@w zeBqEG%ki{m8Wa*$Kf$sN(Y!qQ78=)HBO5!%7wonmH3k-@?3aQu@>9DBnbi~+wcaq~ z+H}m)s!#FP)7$Iw6BEPd^XPhNh8K8I5ZvkL8Xp)gILu0d0AVPbbTr(V6E}er3v>cw zY2v|5KJHHEA7z}>A(ZmR?N`e5F@O`%rsf21cKs8VB6VU#C#QV5`^vAX%;4g~IeJry zo=J1*PZ*+A+AYbiB6N!m3sY03cd%4iiew%xo21M$1ymm_J1*V7gOS3qkK_hifmAMdDu<8LRbXk<@2A&sQaz21y8Vwf|j5- zmTWPhk{Pyz6~k;#re~#clG0D7+{6<002|Pt4vj8zBrmY~Lh(w(SPW?hTcvmL5`=(Z zT1}go*#~3LN2nil%pip+O{MO_?gQt6lo2Le`Z6><=&UaS^d(PaJ)pFjgiRU%Fpu24A-;A?R zaohqKlG#vas5v&?1(BP7*GBT+@9Lu+S_>N@(Ewh#>%Ddpy zS0j?S&6YS7l60zM7yD0~edTjlfwwr>?eDIh9*EG?!FVp~C(KW(Bu8j1x8{&m!{NG$ z@gz^R8X<4PCj9NTCS1OL`kxwdjncM;z@Z=S#t%=A``I5I)bak2tA^Y0vu-9_7g|+3 z;8hhgQgyZwcl&bx{8pnD+uPTBSvxlqUisZcGz6~-yufkKyx}J=Pk(oN#j?G)c|jnr z%iH4ND%IOiKVL03duw4U*NdCizqhx4?e9Jl7^%)zRpaP=`79@=@t>UGYkVv>&~=bL z8$!u7E>&py#5oAZR%mOA>C4kAR&rMU>V@i|{^(P&Qx_L(L(SLx-`?GIrcU${m0_m8 zsA|hF+G+Cc%VmgoW|CY3KK@NN{|&@ap=Dc$xS#jaBx;2W#+MKwP_m0LC&ZT3A^i57 zr-x{T3|||`X9v-v*%LN;@)ws{&v?e`sQz4hvg732o{Neav);eBr?d?oQ{|jnNo+4+ z4Uy0pkRnFKD$12#Z6nOLZ9XY}lu=+s$nIq~&n`kMnSeUTxe-f*xGleq3n^vbiVaYm zRGC5KVz7s7_fm|^#i}rbDqBKtRgMAbEDhua8L5In5gXc*YRT@*a}S7Z9)>{=19<5f zfltImnVJoeK9RRJ4>7yr$hs6yvA-bqwXLI?jA6U?UZ9gVBmo(2Gnx9{I#snIo9BT zPlba-wWWnrc@I*qug~0(75iHt@;#OPm3ztQ)AN_Gdx$}oMaXZn{O&XGkRKM)y7sp| z^B5{cMX_QJtQqb0(bI#pQ6(B3=ga-?xb55xq|XGQ9CPm}vaoa#7Rr1R5Ld}Zwz?8` zg0C&+)Ky~<(mm8dNhr6;0r16V>GNAi4XJOQ{hl9a!TPT+oC0qix|Q0lW@Bqe7G2Uf zn;?}$pg6MqEx(CD@kGdh&#uBRTU^Two!vaJew{#Lno>yHKHfZ|&@@liecJVWYc1*4 zFS_a56EfuFI;Lsmm$7oqdf?jqu0@u!ll%7nG7CaI{e@CurJQL8*q##){{(I)Q!U?3 zcd}Y0jQ7XgM$W8h`|ZH-_0a}`QCAePRYHr%g2yzF3PwEF!+u}QCQ}aOr7*^gB6P55 zfKAjmd3$?4+M{55NyAcr*hZfT%(%aJ(WO5ZOa*TIe1Cz;@bS+IIzwgpCz2WgNeWv1 z{JsQy!hud6|2)4)3`3Ma#4E9H^|^d~enZh_u?~7*)1?rCSgA9$f6KND11=c5`$Cxx zL2;Cc;LB4zmZnK_#HbOKzDE>NQf?pbn_#=*oSW4}qmI|Fe|JW#Q>H3ZQmB7pKcZZ7t*SD1)-|p? zV`5KO#hidRH-yw7c8T{HN?_;dSwOf3|=8^X;!jLeqXV;6Hx%{nh^E z_or9vjv8oU*(l6!12dN)7jbF6-bD7F{p0-c?iu%vG#iSR$~lOwKt(mm0TgZ_Epl>$ zBCIB^UNchT;%h)U&w5xmAUgYAtQEIn|7g)G;-DogdekZRtD2mtvI%+l@-V)AXyd{d z^%G6;Pu};z+t&wX>u_1%r?;;M@WCLk-vSbb76eWc1Ql<7UG4xyQStzV#TLFR=-Mq* z1mcpam76?RvNf)-r|D~nGiUm+Q1vmLW+i)PQ9J;}vp-4n%Tu|} z#sqr1D1BU>SD(T8JCep|3D%V|B_Aowqr$&%m@?O2(?l0Q0?%@UHveNYuJ*tdWikZ; zF?U2G<($O3hvuBv%_{C3_E1N-J3$}ZB}@55`U6?^Q(Gk*Yl1;g+0qTt7 zgJKoEU&1Cr^CpO5p9<4658mGeKRC412dUdjzE3{PkOpYKHRA?P>E~FogvIodm^>P( zk$!IGcJIke^oHmf2GV1W#O$Dpb~Y!2I`DFH7H%_9>ziyu1R%_f{?{&W_Y1T2)v0yV z#4m3MrqB5z_?90i4|`B-*bwtrZ^4 zrCEy_mVpXgMyQxRZo1+X#Vvk-y{saJ@b{QXn3no$L`1gbRqZn@4tlwTd&(Zd#LM;P z*T1fB?%zCqWLiLyEhCEHUV99gn>d9F%LpCA^bkCTJBttw*J?A&C0*a5bbXq{!kR=C zM;xX&oQZS4W@?kCnwW|k%3oAALD~&@=?@miwf*AAb`UgWEOX@eG^a9^t$7bvGl<3? zoQI0eXIyynbBK?%ngN&IHDaar$ucCITy(j?PXcD5VJh-1(D-6ClZnSHhcU=y+mB5& zZ+)7xVroQDn9B|cLzn|ZFqkC9Y0cV|1&Bl07GvR8QXbB_xF}g{6z)leZwY5BUiWuA z!6{ji#~9hi;vj~UzQ7Z7%OIlBR89E2gZ@H*lJMSgH^J3p073Wm@;O@YXkia(59@XE9odYq z^~7}_Pm?(#+1Ulu5Dpofx34TRs+L%paD?v0q>VEavv0cfToC2154(6GY)Ky>p#YB$ zEJeA8=_M<%0~wqX$55h=Z|Y|YLOFzE!kW8Fhlblx>~Ey>9$oh^EQdaHG$v3byeIzs zNk2H{;k}NXoyF>e8`)#n%Pkf|tI0@z2~TrsKNMw*7amdW3oMqcVvIyQe6d9SmlO8L zPIH|9u7dm))iqodDxw9B=D{9|r@Ff!Qz9n<8POO|%_&T;5MUl3NtRvG;kjku=A7r5 z-P|i>UcibXE2y#^U2n(mMM4T%dd28`;aMkc)TGHfdqoPh=dAENsxXS{@EwHHlbVW7?bYF__0YKeSiMfdfLdB~cWW<?mNNU+s-+H3dB=U;g;y-v25X+ub_)CU98z`vA4*SY|DQ`AY#5h>gy>4| z7cpy*La`NrnaF}f(>VUN!vUNuOl*vT(Wa*9E4b>}04um@13bmHX2pwX{d`P$LHJ$H zRej_E5POJga=0H1iYBCls0p;k*43VnXGQG~X#Ah4k##J>*>7T3U&+~T_2);ghl!*dcx|&r z$Q-LP)OW#Aph**?&Vw|z)g8(tszE8x;-ehQEfOEfFdRYL!J%1if0;HGgzl*^P0}G& zLVA-TMK5<1r^1APh3-T)#;w9q;7^k=4v{cwVM;Zrj3*X{0WQ2-<#m>MoGtCjb%>GL z(PJW{d=s@DJ$UN9S&g(`?~v!36lh!#<;G}S8$)DMONwSaHF$-L+#bnl|4+22$=yutdsKrISJ-L+e1|ANrO2)+*<)QeU*deE@<^O?u8s9>UY?bB8 z#5RudbUx6L)&tM9G6-k7!F6FhL{2=afT+j|)yE#Tu9=tbH#teO%7%_xhTg6u&n975 z*hbG`+=KtL%B?8!ZpwgKl%rM>v%f*s!Xi;2_u3=Q7QMRGk-?mfi2f_1oi?deL4q_B z3ETE&dyFP@VlTn@S;^sD9>I`lnHEYn!gO3p!xU7glJ>FFh9AT_1%Z12}{~*-zj+u5tneEU@2KiYO`L_ zh>Cg z=MJo8A1=oUNB1svVjKD1>(W7*(VJDcMi{XLxlCM8N+t=yDQ(tm?Nt^TO&+iX_9Fj95 zXLqf}8UO_EBnW~)W`Z*Az{h@ra3I!g7Uea}?XZu7MQP>-B@I)lp|CPm ziJZPWPV*dDx0BrgAgx9a78u*zhEXxKIRp&jsV?T>BS>$N6fUAGi9-k*GJA&?KQ%$0 zrWTL;_$-03X7gpCpeTe-^Fzoh*(9`=yc@e=to*usQQe-p$ZFP+Rg^;(eXIlzIEqx{a5Vz>t>O z;ercvU(NcYK7RLDvEHQaA^j+>TE-fhT+B~r zyiHK}GHa6_FF6yD>Td+k;YE(?&F9DtvS<-*SS3POKpmd*D__et;PRK7qGy(HwA=5O z3idLPhA=co^C5%`G6(2c%gJ>JW4YU#2em{LDQDdx?D`FZFc&cs`QGV%S@1>u>1A!w zh(6!VWTkiRqmU3@qte9_q7cdwze0>bzJsxKnQcIMSni-sg31pk@Kaz+jaNz^XTl#N z*64nPU)o4tA#0C0uaNr~uIC^c4tvW(AGQchu4%+MNy@1q8cgW$jz7X6pVMsmwaKGI zrfKO048ldyY#Q4d-7HqIh>#j>P3EDpOGctn3YUbj*8r!k=KaLUr-GPx(fc$#+0YB& zGKvmqvRYTW)JYv^Pf)eSq2j@8)Z!RGTZ8Qo>pQ(6T&|QQsvaE|h?C`!1rr%Z)H#GF z9LunK3S>no2656==WIuDswTP$1v#MFz8MN82QOT^a!l`FEnP^yr%o?*+q&J;g84W(jV=j#M;QbYSX*+{EmD0S5laT(tnv|{RzVY+27d1 zZH=2W5Slus22H+R;$S|o6-Y1X{$PT}rzK~XLLD+f)G1hc1eQ}?IC|(LqIi=wCFrde zz2siKJ*`=3U@*`BU4Fdzwfy?|ZTa=JWh3!O&ZDuq`VqXA&KN7QGiWYAE``n&Q7_v`*BX@ zV=s}tKP_6s!fGYVeB%}_IU()E+L_P_3nbS#%RMY~IFdxmq`x678XUbszGTQrdYF{L z7CD4UajH_1VWMeq?YE6u+huaWYz+2548$Ic(b$7ABx{(D={~H-FvfSEvd7ZLdQBK3 zz5&L#Z=h-P*Wf${YOu|O8k9S{2G?KiDX1?iH1I+ua7-2ojGe}71Mj8i!~#vE`iPGn zMyIVL>IEKPBdUI?i z=^?(hMpSCuAu85`1z{{>$w_kN5G5}ka;3*g6x`I#cEUW?!YUinEWr+OE>c+nm$W2% zxzsz9MpP;cbdg!3ODA-akI3TK+0ge@wMhE;IsmBLb4!=5?5nc zx@cMHJt{UmXl)3|lQ+WAp5e6xkr)Z;=BYT<{a89?f%adVP%^c6XoYO9(432jo(;ey z-tWn+oUG8Xn069bxEoynjFbq+_Qa1@Z88f@v|<dPSN^Sn%DLI=zfYWEsK9{N(&!KlM`>;+H;Rk{A5$6j}7}M0b6>smmwK z5;xZn8^pNRxj__)7YtShQCLgKHYOcr%dDuN^zcmD@k~3K^=QF%U=%BNIP=X($9g>b zl4?AgSXKrrxnAsFOzpViE#Xg}T4);HQu%hcJY5hx^k7ODE33Wc$m@)ti#Xed>KF&2 zaw6&l^K?Psy=dALSEE;0FJp@(syb25a2NfNZe)5Yx*(Y*u*s;(9R(Wg^k>n$5=5Cx5O7Zw~kxi zT( z;8fq%)d7k9b^VEVD@bn9TnULq^MOLyo3rQu=IiVD?pijL3MI$cr@-3p6wcSnIi3He z_}h7iuTyRgw_)1A(gImA2*WNUh_3$e)9M|+W9Y`0`*)_5*i_iviM5EIg}_By;Glgo z$LhvoTeH&sdj~$D&^vna1TfhmxZ@%9-bUHEeue8w`;BASZ#c~&y!6DrPyg1ls)V}3 zr>ze#gUq*|FJEq-=a*NvPO^S@dBoeRAvKcy*Rq@x<}@g%aU_Mm9|Z)l6!`7JbKVsL zmZ2E17;DRGC-I_A<(Q~0XV9H(KW_AGKTGQH>FMJQ4xb#k zNHNH|vLD^t|Fyj~%7(^24=voX#&`DT&8>WCiTVER zCC=vzynH$WkcaYh+5U+_L->z}e<&edggg~8G_8vVNMB|OIVJ?=sLPF}Yw#(jV5DR17d%3~G?Ia}9DTbMROroVG-qJj+{| z#hnk*`3=E!zQ#v5myEBy%jc^<t^w~x+6U?%_cBkFQT}fBNYsi7m`H z;t=}MSU1VpR$VdQKK(`f!-0B56T2U_@FLn4C+c3cZsZauYsnh)?(vW3FV8j1`^@;H zW)B9ADa%(Os-6l=64x3|{h^)c*$RiUmLv1K%OOlRUxu*0=L})aE}z(_mzOwZ*Q7`V zJUKr)u6-0n>&$PEI&49ZXzhY^pw{7%a4_BZpEpmZk6-XU;~Q(FIejL=+yFdAk9o6U z1;=SCx!Q^^3{Q_!LDMiJR^Bmz(OCZ=FZ-q-2)B^~*jV6V&o|9Q6flz4OUDt@9@nLH zlLh4*W!69r%MxZEbp|s9HhpME^M<8QKH{%UzK;|~4}X`R$J^_hm%9>jc=P4Y^4n*8 z3HgAiB1h&S$rWp4xrv;?C$Bm7`2Uibt0jWSfS0!(fguWY@^JqOMK?mvhzqM|Y@@?} zoFE$6^h|W82pJ2uXK6dckM<>4pLv{4{Gq-YE)R#f6rwA*VGZ+ibd2!eN(1;5+QdcS?1S@6`?(B*d5 z@sLC#dC9$K2d5EIzILwXH6-NQj-{nt#sx;&g1i3NPrFKm4hFqYmuy9>mq9yku zQ}ZGwGw%y?4v3E~kKC{>FuL8r0M~;iAsF(ckRBzy*oqutrKw^g^i)hsMdq#TDkzbss&H+ z_k@;E(Bp+}sIF{*_1rvhOkh_El<5@=mc35voQ;PvkpcX?UnD76^^keGv6Lq@kk>7& zb&I;;_lX<0|DbWVD1The1>ksNkJ$A5A;Zka+$U&t&yk^Pxt!--uZ5$J+;<~Sj16$l zl{lm6MJMZiB`}!G@C1{eK>0h0g6MkLoD?4~j*0Y^;bJo5 zR3r>uI}*P*x0NaCo@oQc^`*>T{XUQz(V|JXw)2PKbf03NW@N4kuNwB3T|08&VJlQ7 zv+W1GCy9@K^Xq_&|zrX(Z^D_n62LF8LT~4=W0bRk0_c#{m3sOO85bMxWqa= znvW1r2YlJ!K4uaelQKW&1Yr;r$_j@-WXcHeqs;+B@f5;Fz(As++MH;s)vX5sWHU zGcy5+4XVezY77}OE-Aj&mW0-b$9=;5O@`!x#(Yea^!0}+z6-@kmhg((ns8p3-MEK0UO4`)ScI^_*+`hYLvOx^?_;gL+ELa`J3gQ(;cUVf z5SCaikElL+y^(f-A48!#nRo}3r_r(IJSO@GPAjA7`Z*lootkqUS2%^}H`LoF59oos zE@M3#ByI;VRv;(Z)lp87_r`vigJ67omjpXTx%H0I*3Goy-iy#|*JD{9SPc0!H_~Gi zifIxJO2j=DUj$Uyn)R>ILhg|T)5R>AmyU`1%|;$iM@zq0*S zO(%cp+Wo7{+zE$#p6;JEh%>AsslCqQE=^kg^YbI##-48~Am<86ub2R`H?m##xQ({7 z4m>z*L6R>s@nG=yMB>pvvDMZz`J~a$PGV254Eb?M7P8AM)ew45wr5dcN=&~G5Y{nI zF^?gL-c_l@qL;JBgyfu~7b2z~85mVKxVCpc6+4~9kbX2AL)ITcGx{p98TmF4nJ~Kb zZ;dEMX|LQ0EkP_B4r3ozOU{C2tAxM0(W06Cy@G|;qduKFbrLPvC3vq4E=QWFc0HWC zkRdWKvfyqtL5OGK7)x-KW4xpq8Vrffq_XA79?phx0~?Iz%01v@LnyD$><-r^PnbQ5 zY3BXTdlIVkiQS1~l;%;E?UtLQw+~l;C6d|g_7d&tKhFUE<_gB_*0^DrxH7tAYPT$` ztodqv;*c@Q$cUErrNXR5-O?79w^|*r)Wdss`dI&-f6g@$@)ym9$E^Hm-e4{YY69MZ z6hjjx;fI=#6^L`XOYjciyffE(u=P6@6r=HjJeJy6`qrTMTG`NXembVu!Cy;a3o;f7 zZX+>HkStL!YB;N3aTezeQ5R?Kb$C|hg0uio2-=++vD|7 znVWLQF^ug%EN5$d@G#3-rGUrdl4yrI(fL#+i&`B@R>^gI1vIze4pAna>jby!O#bi` zCNBlrcNKM4#Q?|2i8sz#BI0>6chU#jXH)dac>L+~>$Cp2{YuQWj-w8`R2`##PD125 z-%VFzwbY_Y4o{T+^zLjuef!fd|Grqgo2~x~>h%v0FJ|-gboKUMzrN0wXNDFwSn4QS z?^DGGid+-e*ke-2rn_kjL;3g^LQU+F0OgAba#DPh(o`Ue8>0d2iU@}PoPPfNRLk9w zb~PZzRe2U1_b$2Qt4ma1QQ}kyr9dsvHBzGfD6&au>mVjQJ2?y!6^pj8&u7^!G z6WBwxg$*;<7R;STk5n|=I)u3k8q7A)fbn8W;?|IZZKLKiOU!=d3-ii8vb02maj#U} zrMG8m-5WyXz?k&zXHdj|^1&3N0&t9~7HrB$HV=7eTnBY_Eyk^%A5~%~mb#W0TUM&G zW4p}LkTjCulfVT(Z5+J$Dh=}+Vt6Qa8T)z~?sk%t*AuTID#X)`f<>Wf{=EU{i>i+m1FXQ#NQIk82UwN`FhSaXqN{8l^$y33X>&35l;xQ{c>7D~Vq z26IHiPY=a`A6h>gT^t=-^l(x6txUne{jC%L^bh&H4$t}G!^WKD(mfNCoK?_%I3{e7 zI>Dx6H z&<0Kh7#3hgWs$0(M)T}N@(f+GCXh{yTYMxuJVEuOHE=Z^%W#!31AvZ_vIF;O{-m@f zh)$^PaVic=9uU)3FiGl*nt_e8;i9Jmc58ES`mRnmSfg;V=UqpA>BrO5LD62}ccQFx z%{URPk5RVGxTLDlp$}9g{o<-YtB=-Gv^zE$i7lUoW8|Oen(nJQMortt{ThqdP{&%X zc*o9zmBV+-szAq}!p5c3U`!<2=pOd`^6?AyidnTWA#gdj7<*`f3t*zg-dCoNguc!R zo{AKp<9bTPVH-bV7Kei!gV?BNI>d9)UZD-olt>TnyF_DyjiJRvV$qDF8p`I}JKm^H z5sg5xiMgF@*e0rm>c*xMVc89o&RI1y*RG^iJ)=U>gWEcV-B#B=ek=BvcQV_vB0lH+ zcJhO?E^q#ZZQVXsbl80UXhOTK{4diK2A%(9N>_HpbF%+3t>69pmx&H9AFuzueBAz* z$yPV_i+?b1eEKibJq&|qjL&+}gO-Hbt!nV(YN%OcdEhd3!QShwoHMEun zG(R1{UwxLK$=>Yj6Gja9z)nuduvZeu?`*guus|t6Hd`u8AM!#2Kb$IFS_?gsQ@|F; zE_kNn?g65PJcQUeJ)Z*)w)Ch=!9z1=BSFP zwOoT*6C~X92$z8Vl=P5i)3&ZBoK_%(cP6GR8pO!Q+U{&Y&{w%0(<+oOWPl%?qXXT! z93FS;m# z{+c*1+@=nR^z3N+_#ZJHXE2Z@Orl*U7CJI2Fj7YNP8&(=&L)2QrGH9yuI`xFm5J-4 zXXgrHczP_yC#XU>BU)dLP$-(QA5VKcc+J1ugGqi^oyJSYPe*-Tb#pf7P9_!DE|z%o zjqtf%9PQgvZBES6Q`$|8U+?q@MCgTJ=2fYEAbGk&UPmifG~wmp=a**5{#RKPg&QL! z6o~vLiH}C{4!#!O**vBEIAsc-y@Rjcz%lC%r4@gLbu?W^WtI2xQ-xmB8yan~=kLVo z5_z=IUx%C@A(83&xPvWD4%L7?@JB>Y6Zvy$TVuL}d@^j8@6~5IzIB-BA1ONeP#5zv z)1bw-aW6e0Z~?S|%J(DD3Vj9OO24#WgQ>gIB|0O3tB++21*1im+I z+HPHLn5O&krltuju0?(c+_XRf*VUa7iV>%VYA2RtP9X9!i$ItgZnfD{%?GMlFeL11 zm!gDoXv>_U3&_7BFTf>r;-X2NbjBSoHIQ_61^eu=wj622@VAl4&5$3Jb`hx$U#DW` z>|%m9l3i%`ueOUK*JqYy(`aQzDY}}Bl1SS)mH~Ab#f5{ov7}m17)GGG6(fBVV?Tkq z;guk>@amK&k;m7ngvi%cIjxi;GB zS?|kXxD#Se%^Q;w`*-Xw7&R9i<|wnCTQ!Z2%oc~0 zVCxh9T3XJgs7f{=J+noE-0O}W?s~)R?EjQ{=O8d5-6{=?u7t~S_sG1q zgQ$qtlaK%U>3=!3vtpq_Rdno$+Uw$fYFLq1qH_gQfe5pXFcKO-uvl`lVCn1G6e(2- zp5H8&*p+i_(mN=)c5yeEU5ItIZEK#3LO{E<0PWUa@6u2aUj$lI)t+DaGtgX)ZX%vo2 zU33@9xf4z0_q&ELW`Alx2(pab7?ZAvnpuDcEn zZ#we36jN;lVvUg+d*(nA^kk+Uuw(QPfzn7-EOz0VEN|!BA<3?)lqm-35J+VUQnGJZ z?aIcRo^9`fb{#2-tEGN~(x;-8)91B`O`)vvdImf~w5~QMpA?|6EIvk=2C_~L^5g>4 zuQ&2^iUJR%NWqE0SLO%Q*L=-M+&Z7ohC_?1pn!sYmaD$Wke_d$?!RoHk2 z#4KJZN_?_pqk~h?g10o*hsy(W5>aT~32Mr^4T|6O>6;~jn0|>ZQa#$DAmuKWd!+c_ zVsg2XA$WYRQK1;a^#RXtQ#szB5{^>_u#T(8PymZTXZ!S-EuFY>1AIEOMl$|KzXb{9}m=#o2|ayDgPOUCl2(d|?fRxJr@rWr-k}HDzS< zp0Dof$vedhR|r^sXl;wTXnj(1dyI>jt3It$<1Z&Uf$W6<>%M;5++wNsc(ed0o={!~ zE2}J2t$@et1Al)p)30>g(C-u_kwv&endH}Cq^Oa+WYrO=ExLy*Zzt2(>H{hi3PGke zF$Is=%1(F$60a)`KVa3aHz8~^=L;OfM8!R>4_5mK+b8)dh=ba};ED~Q0#)PPH zlI^=q@?6oBgJZgk5?@LjI2AXhgu0V(TVy}?9jawTqADIq^SSFMCAsp zkOrv36ifrNMai)?97?d{i(&AaU-N3;B(SL8Jyr!5l|kxeyX(uFe_E8q%_y`(C9O=6 zTBBVNO*QjbG&X6^N$E;Hkl1!F#XY-3-r+=B;apxy3sn#8D^XXcGVR14?qZY|_R}3; zzBPmD4v_BER#T1zDo)&A>f1J>;@kGNl3;}qb-Lv(#P|Sd52RIekg)L*;KaEHH1-wL zt>xH`?a5-CD}v4DWEZyB?kkSjow#;rqHSn+r7Bb#d6f!U+P8c>ABD*KKF?x!?SC*O zu&5u=+8WbT70VJ1|mJ>zZU3z&G z0NiSsu=78Y-}RDvGDRo&@qgd`%;WykH$T03`|D(Nd3}w!g`9Tz6yhjFUjY+Na4Sz;L(()c!fsh~?k~Knj5-@Uc ztp~BI!pU`A5AWIxBk#2Y<~JQ#0=?~lCbM;D{{2L^k@BPh@iq-JRMS%lNfx~so z7-3BEhxz669akFn8QRLtA>;F47?{w~#iG$GM45reScxYo=$NS*8f|>L& z3(i^xhdfbZ+zwzrDuzsnup?i71F$|@DI#G~7%^`2vaJDP{3}l&LvW6H*c{jN<#$Yg zHv_QA;_~Yu_T;PW_EGOcWS&R3f&%LARi3{O!ICd6y}(KMlgqE=XJWj%e7wA?7$0wO z;e3t#7p~x^x6kVr>yoqW)fTTg*NL6dmy~*O^YHRKhTeaCxO4I`3LJDkVQgR2kRp8L zdEge$Kvx*m4WZU}XB&ch>4z|Gt-rY$!g+>+3~7J->{gF^hB)Bc6hA^;*QF{KNeD%8e`Vy}Avbby+UqnrVjI^TA39v_EH&}g!i}_X$*3e>OO10l1vms zgy9O08fk2zU1}yJ(5Rwa+2M5?uU8R8OV`LTgz`55(}qP=?*@!4bF^9OiAz6;i~8|$ zw2zL>eH2eG;chQAN1d-#R7xJNB=_jaX@|m`f>%>dLYqUX<5`V_CI1RBK= z@y!l#X=gUXST~_{&>J1{X)%=WWNyzZ29O@NtVzZ@T(b&>?db_eYy{vsX+dC%BmL~< zF7hsDFg7)RCOg>Va^w?Y)#)|V?L5S-h9_;n(EQZ&kp8Wos$2_3sjRt((>DuH!4YFJt8z> zN@e4sN0cp(2ipo6o`-9B>^CjqegV}pDr>{qdQ5Or37d8)Phg|(;N|pfP>JaPw>+Q1 zCaM}>C5#ch+?UyN-U~}?IX9F`iOc&#i+E+1taya}ZfM4~Y;~mL;@@@z_i`!=*}6<_ zD?U=0U_h%$BIRGBFL%%Wf{c7_?q2Q`9o3i@7y|nYW8~clHyW4t zj3Q1>FCqRj{(k=R3{TY!M+$zTIQ9$Qfx${GM_{yk`_TuaRcH;ID|qKoGzm{pP= z>5YYbr&q+Pk5eRwXIc@Z9G#O#fQ-eE^g2e`b%OnjO9wlU8rbpRq>RW?%^f3m z@9L5zss1#IW|&xED65_eXlHi3LXqO3o%rSm|ss9K51x{B(TkZfPA9(GIeA#pK|z zc8$bMsgtYSh;J`RD#L6nBe}7L&)%tHGA4UZ@k4foum8jTCIOwJXGd*9^o8NnK1ItT z@uMot;}Z;yzs*;iU0di2IgZGv?kw2Q$&;OZoNeVjA`>f~06y!ach4{`n}~v0fr!s^ z`dQ2~(fS#!`d$81n1V+<3srnlh}82-^T}=bF9}Wi{AYG8o*6W7t^{2vN>(dVBNbUg3~3WNGe~qY?;f*Zmxp z*A=|YqiJlM_^C;|9tptg@`+G*_v)2zU4x%I;0^s28TUH(XGqMcU-rHq((?qhvM{MO zk6jz^37f7Hlr15-8^%m`eP7TMDW7u&)MP9Hfs)tgPwCb*vlv3MXW7wg2v?3=Nkw7V z5tq4U1?Rl0?CeomvD4S73|p?IH9Bq8L&Zt+Z~*5Ze_t%4(Y0Zbb^Uf6oqww z9p?6l+_@ky^Jg8lY?3kp639J1cHi`_DE*dKhR~RJS%2EuSTkQK*EqVp`cp&VSdn5Y z=+VvH&9fpIJreng$%6;QGEqWXz{AD1O1MKe&FF>;KSU+I9STDDWAY66la30XV6Af-ZpxC*p+&z=URhXAPcjS!9~=u7k@R zBDZqZPUj0W(L!5=LX~mKMU|IXzi5H;#e`om8Tn-*xV=hZZ{# zrg@EbP@C*EC?zhaG7pF4N{Ly6lUO`G7lO865uF_Uu57I_JQkFck@jhxLlGhMR(8@s zt*&O6i&6Z$4nftYxG=DXyJw3%T}k9b;Rmogw`7bJ?;^>W8SL%9uO-<97<&dFblC}B z>J0;w859Cu^o60ULG!PR<-SiS$*|rmj!T~+(34rOq2bCCmCYPiGWtQ^9&;Mh29Ny; z-^xy~Iq69Bn-Rt&W{Lz)xpK4Yt=sdkYky-u7YMgL7@ zVy8G(4eR7k_GpLbgu7~=>cG{a>*ud(Z^CcUo|IJh7C&JQ>#n&w$qpcG$TN^-9K{ND zfHo@zRi8LiK&pVQ6yj65AgfdXqn_oLv_lPv-AS01NNr*Rq`!n`RDTJ#6s3;aco}rM zhld-f0ZieYM(+W~i=z^BwvZo6N4qYY9>ONW&!@)8!A*S~$O|`)Ak0w9B$~oe#ffkK zIJHs_weF$HCQF))qzJ4lmaui*YH0cjW#va*hM+8rO+ku!9QVkj^ZO-Ane!IUpy5t! z1h?3qZjR1}v6J`v`-J3J+v+S^p2dVb>3x$g*!F$ne!qmu6zis}L;YkB)Hdh7ttil& z5(e6*ji*H@A!b11(Ha3u(CHWatbRf7oR4N{S!wWTew9lKrPWqm4l7r=d)oI8w?z0I zVeH5qTzMCT`@sR`%ljt_aob~@5ZJ&y-&|In#1pD*gapscFjSzV9vvu4I?$Q#H1~AK zdF=8DyY;852f3&{-d_Dl?DHp#@>aMCzr1x<*^?DffbkENE^G%+bx~?bY`y#d}S`o-a1{clJ>* z7$Wl&yNSAt6pZ}R>C}| z_VEsfoffI6iodc5&_JxNEg{`28){8DajABcK9zq$N!j|uI~RSe@) z`7tWNF&NJsIzrbGoc~FeBQt6Kp}(*?YhpL~jgsY*TjFGMzmszwOVLq~;QHb3cy4gp zWY{1Frbt6EHqC~~R)5OMH5axflDAUk(e4%H6`J`2LhJkOBXVoEB%yL*d(g0YEei|N zyL?K1Uw4*=R~uJ<5rDnRN3-x5W9E0X@I@MfyQ#EjtS+Dbe1+NB_KPBzf5+^1H)S6i z<#>3sOKCZV#o=l!&%LsZ5pQ3fA6X}Vl>Q@@tv^ir>n}e{JAJ(SZ)pDu&Xjoi;4z${09mgs6%= zF4|Ydle2V~k+=$gA|GX<^j1GwZ1haof@HKaSNN}z1_WSrYMQ-&Ur*Wo(P*Wb8$Joe(oZWN?c}TXE<@#K?iQv8ajrZ@K8)w|08o^2e!Dk z9c3~>2lj4^_XsW-M46Z}!oY6LVvw_5a_fQR6Q+x%5w<-;_hVxOTD5ae?;^B)$nUs! zl5O{_yT*ES5^h`VJ^y-ayu3m*k$v)d zMi8ozc{+~gf=zZOqY1~bE}!#SZ@S+lHVc+fhJlcnfjuTS^{jnAoSJJEqE(LXP2=c1 zTgO>&?@@^KVO?hn^bjH>r#g9z5o=3tpGlo}!Q`dF=MB+eqO6gG9>fx-i$PNm28dSMr;{Eiz#q$hg|Fq^KXdrPuaQ>;E< z*`_L(4Uv@r*CrUky2Eph#m6iRw6U%W^{nfpg2>>3QOR2Xj4n!2JFKv*6MDnq%Bg5l zKo{J4B)VTO35FO?;x^F?xzaJR2I`U&zv&IoovByA^ubFgcSg@MGfZM>(#Rws{0(6P z#7Nh6iw2C)f7YhAiP_L;P;w51yrs4Q%^}a?g0@J^aZm9Eu*Sop9(OiO-Hn1b^&rZ$ zEe(c;c!VzESyBVn1vBrC_4cm8`0JP>jpGJ``oZ5~wg|=YW0LWXsl_l2%-}<>JsNIj z$K$OOq=R)0oW@hlF@IvNg;vK0n3NCl|CUG{=gr?OE)6;-t>8&;t$?BHC}HV0%^~AP zTv0Y7FCnUtmw?U4OW<1n&>@gy{|Rgy;|S zgz1mvgc%y=2^Y;$jq?UqjB{_iRCyAi|7MM5XymEjz&)OlDavJTMh7c=rN`H-dH8I= zE=Sv5S0uO}=5}Y;slZ%sz1<%*sVMzU9+Y1c1zKaGH~iOIT5G%U_wEYh$mP))p7e*pRy@cw`9s0 zLX&JWWxVyk6XXH(!GyIqa_5dTZTjxvkV}4kJBAfCVx$&4f81OG)c)%N;6K+qUb5)G zNBdSZ;}Af5HHh-BqVyAGFbYCeQ@w@8m9768xXqI-?k70K5hw-{*6o*B>k)WL?q=3}LbT-qI79ZA z*SG@Y^OlY4?A(t$1rDj5qvbFz4gEK7N^X97SpV^7HNQ+e_@`k8M)BGbU z*2%%9msLiy)v#Y#e|7viENTI@!3gi;>2IfUM4{IdV}^^a3>N@I@eVfhcTjs&k4W3xiT&9=^{7;Z)seX;r2qQ_FL$Wb*= z@@mU62cfh%jCVSYXR_V`&A zYcG#i+r#bU*Y4%%q(a%V#`DL^D-7z2B)meHY)gPld~iCvIyX5sy?aRC$i*3VT>L&M zz-(~^St8e9mDe$OqQ)F17$voI&!q0o$K8rODw8E_t;Yd{oW7Hy-w-|AA^(*eDiA})j5pQ-ym&p zEs2c|!=1<|H6D(cJ?8}Yxdr@^0Nm49Y#ua|{!FP!`LB}Dub_CL!W#w}+w*V%WS9%w z^@dBK84$cu3iNE|)_yw0{Zz%IfSBzo*kis2T7SX51%h z0uxSgEpmu3oTH@x^sAQ!=#*5}Y=i8UAd^;5gueBBvN$Eexvf<8>v$ta7z(Ix=qT0# z{5i(m)D5A6xrYGZG_`g>Tqdbk<%Pyl z(9495Df9J@~0iNaT_*&wmls{8qIoS?QV7RdL6F_V*K{x09zzrX0;GynJB`ppdDU&M4?B%WVjV0~ua zxRIL5Ndhp}{R?@@ddc7SQ$hiwv*u^gJ@bq_r z&HbCwQ!WcKC1i zWA1d4W|#Zy*LadLED6K3-M_stF4iB8&kQhORamT!V@O<>ZEpiZ7{XyxO(#EA#IPWj z2Ck-uCkemD@3i2bpK^zhadsXHorQV)(BUUzlimFuwyhbM%7iei zS@SWpHW{BaYbTUL5`dz5W^7KaUdSh{R8+K-I*i+WL{+O)@O~K;xI~fh%os*T-Zd9z zc$0JiH0NuUTd2PN#(RnSnc90^1g?4ErPa` znCbG7`9acYPEHKS&By$ex*?iHHUX$`PB0)!*(D0CXPDvYo|NV?O<*EHQ;Dxln(543 zjp?j_m$ZZ>5ShhsN#BVf4qH&j_j`Yz<4>2`tYz34RvRN_%j|G0bZ06N-b}c5W4DH1 z;H0M^%Khub^G2tLNz|M=QgPKq7G?@RvAp{64XXyy^6-?Pk zWXeUn3S3lR>oYq+YZy9d7iLyrC>*AF7(e5{>2MRTrU|n|Fo^6k8rW&tV;jay(Be?7dh$|XzPI8II7~D-=h2tw z`w+u4R%@``B0DHuxTP;fqpo#Qg6Ro&pgz9?#2myak>6Vfh`w-R-tIeA3#{cdqB?jO z{bI_^YA|@7_#6hvNDAj)spPbT9hEH z%_tg5NNkc7OkN|KgbX?AD zzOGY{zoLD^*`NWu1SP}{HzgpRZG2>5VApxie#4b}_l4Ip`$$fG?PG6T~|PGOTORoviC8R#2jmd*3Od{CdgA~7MQL_3t$M_X6jskQ=P0;(;HBRE z_n~YmtkMmS$%i@bA$7o1RQZT^ot*pnBpssQaJtZQBU(&S0P(|iu*q{|h$wMN?<;q5 zvI23g8)B3SeX=;fIh*t@LsWWF-Sv4}@q|$n@+viJsJ1KuWOG>NAY#IYjOIqD^xBaQ zisl)ivS&5BNpu{Ey8`rEI#CQ~sPjc|La&WlahOae{X{oHV&0*Dh~||xSRZbX#yJBH z7e#iox~**cDYtZpjh$j}m`_>r;W3msj`V%Tx4qA7aI;ChRU zH!DprNd#<0a+>XPrlqs}qRv2|k-QD{VM$!Tsz?UrDcT6w=TDcj<%u*(EC-Yz{=R@^ zQLn1;IA`9+C7o92vjfvvg+{Hx+9Bx>aRD2sHl^Xv&S{GqN`|^#@gf>jyq9wUjKgGI z8ke}&sQQoji7q^Cs(vS>Lrj?Tbrd?$n1aC!v|Yobd%KR}Y=QZxvwv#`v*Wd5-@8cE!%FH1r;aRqI%hTuO z-Q}0<JfpNtt34V!r{Y6)BMhbe@4x|so z#6ag-0l8<+a&*vz+^aIX8@(EChG^(F%lZ{b!bN6XDC47roQuTVDCi3GfGD`r&ekC5 zTW@k$M?6siM*Y+0Ip@mh{5Qqd3@)4bd1^0d9XM3H$4NoLYF*OVj0Ij^40OIHosPsr zAwx(k$$2RC5rN}BJh0@}BNwx%X|V^D7VFa_bmUB0dET|3dX)zQQ3QPzwX@POMAMj$sl!-VK$v5}6I1k)j6Vm?W7W1>jLpd(* zug&@T?f0|o=Pe<tdtxGd!;Rb-{`Ec(8)4h9775X& z-A(1?Z7+G(9&$fg6+HRYYryiA*lSj@n7;gTgM-e;?>PD-*jCvD%47#Rs$j*RJ$%Kn zXVt({f^=0}Y9?aN#3$1=lvOsNvloxG8JLzHHUZbV=?L^j!+_!HlYlVk;$AzV@^=EYe@ zv*|%lT+`G##-CvV5L*`_wbXv0qdIfxX}vysFA;LCtDi~rr3Ezs4v1uC-=B1yqa7p3 zc9Zqdap(0UeMFWSIpu+}Z?%a6Lkr*KOo-%iipAEA4ggCFy-=}ql9nVT88ibspX()5 z_g8pbcfas;g4ls8CawgGGEpnq!S1#zr|?{$N?VllBl?sEiBV>X-cXwee8Lk(^O|L_ zz0;34BNtRdTZ6R$BdQ#n=$g*c*zPxpac`uqbJY|<)u;;zMzP-CQvl7A9>R^8dvGW2 zCQ@XP#Pa#}>Ot;d*AKE(<_=80EGISe!yntb7PR6aeU%L0Bol0k_WAnzP zEn9#V-*BglJI=o!Jg87EiQpEVr1V~G)H9qj-*0bw@bk;3zk0yaue7cOx~Vu9bXG)L z#O!&KPf5#&+I+iVW#7Y@?&EhY&c=UIA=leytjxEM-?rCS0jks~85q*sJkvZS7~hRJ zL%w>v`HHtnyN{;?MxjDYd_A>SdM@KS0Hu)>a&G6y_)|pAA&hBr2Qf_D)gU5HsRP_5 zo@+XuYau{??B^0IPr_(vYKYxMykz)_(ofp9EY=8}m(k4d&bfyBdSpA}!OP9Hjol-h zxK3)2wOtL0!RUl+yH|e+&rIuR-9fD-TijnF0N5T`;4kmK-fpkq^qEPyyvH3U@iIGn zAbjewseisHm{&*@xkz_+Wj)@5&K_QrNeyQpDcC8Iv;OXCj&t4|5XtnRL&(F#5uOv2zr_s`6$YS}|M?djhHd3|zPoHc*G*%GIM z5mP21Gb;++p(=VLEFY{k>wH!7NxNbn=4Sp>0^Uz`h?eWqf{Gp1p2=SP$)X}E+JY3+`NQO)WEHvRg2=?j)EV{M?dBKwR zOAOAA4j1T?lXYaA5YW#ZVRptLL;?YUR3dOR`f6DdxFT>Tk;ihjCzU(t*1D3!@{`v} zvf;uU;B|7->HGlQKF?CH?s}b}o_26$p9ob;3Dr&QCoG^kHkn1As|GR5t$>Uvbj}Hs zY!@SRc@JJwr)K5tCYrd&O3OCaI$Q0WPl%r<56{!5zwnpdfd~}9PF#WJ+k5u7lIHgB z%kNL@*mqx_3ox7B8!&26ofOp**7DcU@*VL0 zriH2HTbO*w&mXP``*Uv{pVE6om?9VNqBi;L<>~q1Zr)^`m2xd&@qBASR8{;KW2%-P zzsQwP4XGq;2@6y%WC2TqCRspOa}|8Q64QsVJ42~?bA@w#%S^yNgo$$tjgHB)$IGWb zJK6%nY4=Nqc!$USZNYST&xzrNnMS|Gymign_HnZ$NDqa0z{S7xr}Nt{u1XZQ&2oA5 zaIYqi;?^NC!yCE|y7zGX-6;tkgDP+x;W}o2ZaMsH|FQnvEKfgw-hrLnK0IwZV*6}! z6bY~{zeKh7^8Ea8-=*&Q!d9%91%$T81BL8>vzZF_lxAL~W(xG-DUJysm`T_4$r`Z1 zgsDiE1cg>wNef1LPh^)?b@qU}86KQb^qlUeJ+WX>!d+onmZ!(Yro3Or6ilqR7NYDJ zYYAU7BH!foojXhmo_Kz)?WN2k>g84e5y?~Tf(rgIywaY+k-R{ z`OVqEWEG87rcit6*Eqq6<>#IsB89&Q`7<tIMY+slu8}lEO$$R;Sgo zw;IB7&>f(;px8F}#Xn!UHfpQkhv%9T3-vt_yjd+3)@%f~0^i`~+gn8h`#z9)MiGDb zc}sw`nrneR;;x4M68jI&wmi&DCuJwyv7L{)S5G`qQGtY7J{?Ep@+~q+dx+@ zf85?Y{W;iUL{B0}n_^BqnFg=T>+bI1ex$RBw+3>gpAQL^HPG0)gCm3&fwbhh zZj^-AJxvV;iY6x*e-mW%=?NY1Y})b(G&4qzg<7o3j3daD)U??1hr7$0dxe&JL7Ua` zLC7RH*z|bLl<%Tw z<0o-z~;@6F<&H@T=*PVjHwW+L_aq1~Gph?m!h*EZ0!sPurLOCP|*ycocw zes44I3#Wkux}F*U$M_h)#ELXn;`1#R6S9V&d8+#Ko5$~Ul9g)HJf7G#|K;4qjB!h2 z-aqQ)nihAK)k6L4`Rpr!E}5U)G4Xo)l%Ou5#iEEHEZ`v1)mJYAX;t${-T=*GSjB%^&P6R$u@pFL!@zA5TB?^NcIe$LoYRy}jN(u@npDL~1a|EV5`6v~7~S zVx@tT0cnP2K%zhZwS6xi*T|(u#EmO*6#L;$s_6BdG>6;UuSBNPa2m)a$t~sh>669C z&Za}wWW6%CRB2$mN{DgN)+X=kl$w#Rm(Q(NeuQ#&y=~qOSJqH2ehn1Juo%<4*re-K z%h0>C)(SA3voNC>3uzN^bohy4ykx@eE|{-b!$ou4XyF_^p1I?9XJ2lSy><=cXaNF0 zUV@FuBZG zyhGoCHqjPX2SJa}hEClOrrY%8S7`h6lYN(DGt*^F$78zDL&5Og)q>Y8wOhWpZAL0s zc{5RC!qd8I*Fyi`#WT9YnZnkgst!L*ojZpXV@@FElLp*<(_r@W|KfbM8h~!*L(sib z49+vl#A0%I_2l7iQ;h955OH5iYjRbV>~f&8S?5Hi?5;sBCZBSYaRnh4^nW04J{dD_ zgv{&u8*xT&u1s6IVQKsXlf(IYG`<#u!rSlq+wt8ERx}o9TuY#rqX)Jf zQ(77EY?3Vg*#4m`PO9^@WlQ#iU_1M%{GeS(5SX{+$Is=*FXhL-$`6J# zP6_nZ5vxT+yNjd^jZbPLb4JB>HT2JK_imok$LeyMejYubVhtLC*M9pqFVzt+4%|XZ z5qWd)So`>gz`6c|M``xMQza`rhJxk@>P4y5CLa#JO|QS*JZ%rYUJ^z9%T}hStB0>I zCSna^5p)I-n|orygLSGj5mXUk?{!Y=v2MMmW7PMY?`tk0Po1m8e$6tRrej;}5I7RA%)c(Hl_ZY3O{@ltY z`f%UB z#J#ObWwF3D@_j+fYuX5I_2>5|-O}8C*I8al=V2ab+YswTnVU|nKpA{hxA_rEYpB8x zzcCmyH7ZurYqpY0Z<+E{emlq_Ps_<1i=1s_$crT#F)hvh#NMyNgf%>k?6S@cSeia% z*??_%AAtMPz8%2mlI<_nif0TxWiPI#z%@m&8s%0%pN_$k-*QQtOV^uvjx_>>1DekB z%f~O<=l3>Tevo(`23(eJ`Mlc2fh_*mbw2gY)~I32g^g9%;;Z01Z1Om?ETLwe!M?&( zbdfBTS*zT@LY3Lqbc5^FAnkhlmDAfZ?-Qbv+*^;T{2l2))H+ObC zMy4_?)*$D_PD=86Dcq*DUKIPQX%c+8)s*XmXI-VK9s5}8c&&yeISdfkNoWkIVKBlt zcTehb=vdFQ_}#4MEQJ_yaM6YRhm1mO@6C{_9^|?Q`J)GUvVE)M{6`P+bkpW_-GltQ zCHdbL@aCr;JcdIoGW zH{f9IZ5tY8+lu>NGt{ps?mxy`|&9>!j+ONdJ8o*ZOeG{)Q8OmVC&C!XuX@lE$=b5yS!CpTx>1cgDv>@ z`SCF%)IMUq{cKmAb-P3=9TwF*?J#Q4?SN{~?a*q_?I3H=?Qm<*?Z9i$?GS9x?O<%s z?euQY?No2j)25pm^xkgtY&Uwo8@fW zy8enL@8PBGMxmBZz0*Q~+a*1~?NT1#b_ow~yL1P*U9tn*F4X~UmuP{{?*_{ac&OZf zhsq6jsN8^u$_;p^+<=G54S1;B%g4cT10E_j;GuE@9x6BBp>hKrDmUPvaswVJ_X2ln z{Q`AACBS;Q1X%x;0PEQjV0~HwtT#)5 z^&tIDPU1QYyv!uhPjsJ?k#1B<^&ye!xuhC4B9d zoK?CN7qXZGU3+yew)RFsW&#J_F3Wqp7LI+=4MwQuPHQM#!sna5F$TqzUrQo) zS6E7Z;RX!z(C49SxK~pjnoPhIy|qlsW`X@Uo@my0enH%#PZ^Pq%=EzHGf<9v2}6si z1J9oGwPMIrS($7Ntur(_;hU>4$4UcgH?eiMTKC7uZJo{iI?6havXE%7C9p)c?2M+e zo0r7=efI0rskCKWpPn%ue(P?!%R7S31c)ItOmcYnc>VV!?#WysJ4^)6KepGH?WiLu zjEq3ylDobX`0e2j4*-Lj;^qpYTlpEW8AxB>`Tb-~b9BSQDm^6_Mn|_UukDtjPP$og z^M#47J@I;)WMsNL9cR6`zdrp8y?SskZ{AsDJ?xcTR(}Ue){S<-;rW zO&7-F<)TR8^`qAsehWI(PUR9b&e|~VZ{lUeU`5(27XNf@%01SZHHSSR7);(Z6-LGA z=8D9*5pB;eQE`EM{brD5!oJ;!{dp%A(~E(@l{o)vC-&E!*#Fsy{r67n|L(-T`Dr(L zcWb@b-CS>Wx7VBD20Ow3)GGsE*Fb#RjfT;YSkSon&idx|p-ZPPn`^tR;|W+n7o*(vE2pHZ>M|i_WYw2le6`=c9hf*k4kL&>Egtpm;g*+Y@f3yh3{q54YRPdvLz1@?-zy-k&u8_T-1F-=3zAkC)#;nQgk=9#mn@ z2^Wk!8Lp1k6Z5`!wA?$Bn-c;N%jDb~Js83~RpP-BN5VL_Ab#TP5VI)En++SD%4JPu zAzy#@V5vQx?&>y~iT2PbOT017@Gz&Kf>o&$RRc%NIQu^!O5+95RB(h}lSI)}H%p4+ z=0O5tgXHkxV>A|r0A$lPk%fDb!<$W2#FW2B4VD|^HZ|dvh~;}G|Jp-nZ`#Bh?~xby zU&73tI1F`8F6f%i3K`aU=)(Ld%lt|HlK)CKf$v}`=u9S>ovuE0=-WW(hl@UtS5bH1>;}al#LGL1 zhkA}*3_OB`S_D~x91t?j`1#j@u-cM+vmP=G`8OhGzj{vrho45mbb;!8~w!gqLhFG;&WECZOi;^Mb&=#w~ym>_+aP z|XiqfCZ%m==W|F5L0HmA%9sr|~cW==tRr z&!>FU;k(9>#>`PSX6$DkGxn9ojJf*8XN>@sF8$V6QWOUZ@k1Ybb&ekXc6-iLm{KO0 z9Aav?15JtKZ#^wr49WB5euV4smnZM^ zD4y$i1C#@g%7+;Rh{u|{%m%8K`Tvwq27sbf%sunG@sLmj2h~W%ROj?k={5e@w ztK@ns96W_9R8L_M-tgzgVl5v+tj7*dYbL9BcsaG^NZ_=TdfSIXvyHE>EM%!u0%4JO zD^mH^*>C(piA8~fq@ z%q%Srp?Ffm_S?bIULkyxNIz5a>320I1Soe6eY*R90yDj+SRjU+ND%tf8}bzg&EfUuEmGj(=1^iBrweZ)Yi}!d1@+ zk!3`_i`c)Bf#78o6N9!Of@@=$q^CjgqDD2gCs-oL{p?&k+Hgu>+me%-dwJjEB*_kRT4rBD0i)6ByBvgY`Xm2o+xzu2?WN4N}+nXhuv+a{o$5SUC3Ned9K z-3WB6HM0N`G6YvH73jnAciXi(Dn~Oy((4XQZh|#!2t{tp3e*@}Nj!9&2YG7K3GZGk zhw)`%{Clc!Wv)fi0?Xp)@!2fQQBIV><`p}GlV?#%LL?-;E%r-hN|CJGwP>Yz9e{#&Ae-Yj`g zRzqh{xchcOLV0PSmkS@GvPGVF5b4`yfJJsSw0%|#G&^}Lb%u1up~2ZvUlr(V@tany z2Bl{9Fz5d6bA>CTM}J1P!BN%r%KSD@3hAT;P5#zfiQ?+`Zs(-{0b{ zPR)^;#f`&*ty}7kq{7hMa?1XC@B(jfhyjmFT z3SmOH2GbYJhy|sOBTBK>;zwMs*{4bTwO*e1O2;b3`zkBz;#~1O*>n_IDX{aM*c9s8 zM`cP9F^4Es;z9_l^^(=N&S^K6E!N{`SImbwvBqR)P>E}7GQIk>__l@#pL4Q^Uvj}W zh9Lq}RJ}>FJmJJ>LEVS(8;frmxFw^3j`kUu7^X@fZQ->I2Un@0JdciagnT<&?rqKy z{{mw1yBGOuv&Wfxvr6A|?~)~G!(?ZLvk0z<6G9s@SDif0yfv^lW)uZ0xU}tQ5wda) z^#~|iwV$qNaSsKPvXFB}&6KuKR{RF(W7}3VF9a>;F8pmKuO4vL`F(oTht01hoC$9} ze^1mw*at$HXjoh@2lo5q8=g=)eDCs^JCwLKE=cW4&;wsQPD1#*BM^)rxg9N90J*^UJ#{cC-dmU~+P!Ji-R^5H0C_+a zHH&ZwauaZc3k2FHl`OaY5fRC}Mb>}5JYPTjeP1baq9N+3!!vxls)e6SjA(oVpxVcc zRZJ$!?M&7pPq^ac(Ix|31qe`h3_XZ$3#eT`=b{xA;gYoLOg*YR+J3pb`feQEe8jF* zIeqT(L!mP5~QnTI85R(dC67-*hb@{ z{54!fi^PyEo8A25q_(Msv{+y#s>ldWI`)g{67wdxM>h`W2K{2Sf#@cT0H8p2XEHBlZr-N;dw zz281RR73{wnOyEc*fd|^xny$g7KA>u%Ub)qNoG%zNb41k-qI{9T0GMRPpIy%|6s-J zx?0O%1k2IAKg+ks)5QECt#}%2Zc^ujJ9=V_X^*?X@5qAtzAqk9iCxwwdj+%P zlg(GzOzqurJ-PSrkNa`MN+AZJT}sM$<53Q@?=HPgY}AZ}YDm=m+tk(_cZI<35=N;? zIl_|<$9j{h5$VsR#JNBjLhufb6GLFm6+>WGdQ?kVj3X^&cy)_OBNPyJfa z29bH+?yy!GokVne&^aufYfO=j=!JSt;od_H8Hb)grufuN8bz_gt$if%3Wo@a;G2x( zN=3b&JQbxvr#FH$bC5!%Q~{DQsRH5@h{I_G`t=uq7AM@qaN4%mB#9@HXgw#yZ}hxU zec=OSO1P{7K(P7Y%e!a9j1c*x*<+9C0DO&B{4S4xsvT&3esuGqC{o8LX|!} zI60+|vl4|$mb+$yxDzWKXDmQb2}5gi@&1%qAw9L%+H}Q3u&B6c77Nn7>FnKRCGHBG zQ8G~rUbN(PA`aE7Le4uU2!nm{xFtAKl~G-C{(yFvajuh5Rm7lCC&lQ|FL%{uN5+Z1 zX;=j~CVYp!B13!^Ti*(#0qIwu0bLuV_iLHRYNZq(PCxwm%f-)c`E7Xr<`SU#rg(;x zBF4$szP%JlTQ6qCEwidm+>|^O_&O)_9-23`3W1`m;iN)fz!VTomI(KlM&(*jUMdoz zP#FK;?GHLWIA5&&D>R(KdpOJdi>}10J-5T0S*JeWjpAZ&sf*qW%sqaL`}SqxOB1+j zE3E^T@BYT@CjwlYrIlkQ4+V@4?rTaAY5!x9HbrQ^28!m20$VK4qzuG`-3b%he@4yx zBY63TSf(cEAQinxiZ<)0y83o7Q_DuKxwxqq0;t)IeDdLZElH70)}qkaQ&&XEFE|~o zaWe5iNO4DEidS5v{JgwJl91`=IET-+^CGS))Pr3>->&6uhQ|$MA#|D~es2C}seRd&WCTW)#mDm?GnNgnJt{bG zQ_Y%0GK)#psTFFpw(+|eCiwCk_yZ)XKOgS5VUJYRd;RAnCo#Hpm`UAD42#bQaOTXl z;!=|xKHO~?C3T4hNvxr3y3aMCyNMa(s8Or5QlS#(J1)ln^oL+^Ft!5^L_?$bbaAZr z3+L+)6#YZ_>r{?dz8- zj(94OgR*gV0ZZW}GEqo}T`CwoKU_WBn&1tYM!#un`0bNX${Zo?uO84SecAgiAISht zU!K1_lz>FBFPFp>NeA(w>RccesVV!PoV3ByVk!D1U-6uQ_HEKfE#LEUhjKpoun67) z*)?f51XNY3EjNB*WU@N1ozB-o2p;7)qA07SFoa3I9p^Cc_ev`IjuHn@ryEyoS&`CB zuUpA{SRYSM!b@nn{gkwa>63K#x^y90%<+0s5u#LOQ{t}1_4O4lC&@C!;R4Bcga#-6 z7#BgHotmP|M+q0Rh3SBem@=(4=VP?Q_F@Y+LcdoW$y}CyQa0}@U<4NIldRt@SNH^U z8?L$}jzWr)P_Gu*nJMNE~w%wfXW7SoaILx}%E80p@D;7Msp{;4kI5}mX zn)TA6rrj*LcR9h}=Ac2SUl%7F5g7s4MgG3Hc*g_wlAX7z==>^9G>n#1mmWO^p4eD& z`=xT&*`Q{pM#SDFkV7pd6NV2QMh-ZBA>m=#AzMoYa)&p95GH(W3*x7Ay>5n_0#wSU z;S}3A)5f2lzFVBAa+mip!`wISdT}y8!@KP9a!zb=ZC(T>#0P$< zYtY7ShSx1Twu&U@45jm!N)wgT&JSVlwr**)5Dw)bxGRI2%!QbKy&B@Pd>8~D{*B^! zfJ>5FdWE#5mXfNK8A8a?+&ptpt#dHa@m!Xcj{I3V*`Uk8ouihz%?=sg54|kcL^T=mB-> zd@J!j{wovl^hoD9-4VNzAy>n$%15yYp~KALq-#pb6m^!RS;JDT)h5`SyyN2k7m6A9 zkrTDKQfKa;EHjhMNgj6o^ik_jq^fXIv^ldhl4UhqL-vaCV1r5$f@^;2YAXh+uZ{y* zDM5o}fHUB1%*q+O=i0>sZu%(oxuTqg-J7S-wxw2EV_SK8!M286;+U980u#$R)vKJH zzLHoN|ocY4y5`$ z={+a1Lh05iHb^XL9A?8>20Bvuo~{C_$uu;>4z<2vgUab%!bU2N6e>qV>>KJ=8M?(- z4tkmZYiDd&7sq>wL+o6Xr3N@l$^R$qO`99ZalPOCJQH!An6B#X>GM*H7qu-*V|gj} zjT;Uxsk{}4~BnSfF41F}uArDFOJbWlcdf}Dr zZj~XWuQVo%Oe8(3oxq2ZH#HfxCueHhv)-Xzj`G6MN+J`}B9~a_xr>7j6udRVt+-+% z%L!*j0;bK7x>)P2UY#zn4yWwUS7uQV`2dlA-uWRsPYsgdKmoCdFKdJI$&qN*Wwf^5 zUEXqwCRC$9MF%k6x!u#yMK>h+I0%a~&o3@`Bb7^o59o5x((9<0pRw1Q)HgO6h8bUF z{k3r!W5`gD&4kmI{_gYyu~M;ssYlx79ZV)CBexK;(&dU^!61CJmUywgpQzrj!Hh%1 zPiNwJnV~&6fQL*y-{hfO#cRYWVbXM~gtKctn2XU_OfTOxBF{9we9KG)VYPydXti-d z?XfHl(nW-~M>9%Y7nFR=ca>As&lBv;>D7v4NSXSw5g67@Ges(QfY#PqaOt;Q<;FZZ zpLV7w;f)mbid*#oDQ+Bc{M$9@0?q@~aP075N$H64y3!)XCa0{BN0W(8kZ)j61N2iz z63_ntb2?%Fe3RDfY%)P={}vAV?tUHRr;Z#%b=Hm{8Q_NY>Rh`BO37S#E`^5Y9D&gi z3YsSe=Xxrv1vQQ8jN|&%_8^HC40}u^rRO0S4x%+Z>-v}lEuwn3_UMe$-g#$sw_?58 z{UGLR&yyRfdmi0cTuubN!Yw^PMDx zSOG?d>BeiAkrJ3~9?e%tHT-DTN)}I;zZttjblQ{nVNV*1+)099%#K5??0v-Up~R)* zbYCuto3i9J>7{;j#g0$}oTjJUqFj$jZorS7lt}JXXLyk9j!?ju0$dcVty0_ z_K%?$_Wqhu2s7#-<3)2Csen7fut}n`EP+xl2)XFGHTN|lgN6qZQnrDknT~vQR+tC?i zh0k}Zlp^P{5*gd1rn4&vJM#Kh)AHu3!$IO!eUz@rYf_U#9coPLAp^&gK8xio&!%S( zVlwuWR9q9+a?y-QH4T=ykQ^<(-%bI&5oT_6vgqs)OoarLjDkck^}@wa`qRA`0(H9r zogEhtAwhO**0gD9hejKP6%#FM7Gy@+nBxi*&3;|^wQ&a+b)9)l+fh!&8lfGP8%TqU zSz%RaBiW{oNRu|`${D31o-b|1jC+65o;LiNh4qNtHgUKtiLq7JfGSE6#Qcil?8sZc z3uVS2*q6M}fay$XhlQ>fn+{zOY{R_)GM1@^S6SQ<^QE)y7SU06gO3?x2*h+m>!KGk z%O&a^`CU$#lQtE1iXu)Pqj0e;cQ$#@mSF@t`XYpVV67rA5`zz?@pfv-7L2C|PTqPq4z0%1=j9;@QMIqC*JR zOtWuV`z-)^d)&3y_z!;Fm-(tcJJbPuay>h|w!k4CNRDl)D9ZNZ(V(!Q z{g~KDVPlr`VY?3Jn99$TeKV*NHEDn8qS{Tvu4lUQk}wyuBY|xP_Dy$BT->dihzyzN z9xV0?iEWS>nVXtDSV7BH4dkABpPu!!8@ZA{3|@UUB@WzP^+%Ig12%l#9$;$UdPmdXi`yy?ly4V*RgLYpuQ$}1P*5YO>xl=F}SGe2@Sq$z& zkx?;^xW9qHY+{$&Uju2co=gY(GMHYntL!PC*^Np#8NxiR@88V^54 ze7mvxy)!w!*_U1aa&)TOQ)EX)Wxj+Ytk4e}2akE|zr6dpoaa z1-(-IW8@R2?cUxP_mI$WLJ^mRevAPZaCL&- z{ab~hO-BgV-lmq2euiK=Sl#mS!CM*Ec)$E4-n*Z~d;gPozy2iNZ$F9m`%mKi>nHL4 z_({C~-iOC!@Sdm!SWJe=p)Ya6Q+8R7NHUi{n)G(!ZP&Wpht;()WfFce@6KLhzB>kG zr*U`82y2kex)33bY=}KebCTtvXqiF!(U}^11a2hFIa4=+$~rsm?T{k!H+$dRf4I8-*5o=%J(G*5d}B^nrrBN@Px65cFk z>jJic7upeFQ5N@#vZi+>n~Q@2H=v{*Bb!wTFS?%OKroQA=%|l z(h}@_n4;~~5ixqtW8+=$UN?SkJnW80EL;aIcUX0M%;BXgtMm7I7p5cK`LFvTezB)o zI+9!uP@bO7uHJRg>zz)IdtDK;bbp)l(CqliHEYny`BSDAD2cvMW_Yb(7@qW;3xPx52?- z7rBFeXO+h9-<@}%(`?-(Mj4<3zdE1$TehLOy}~GEGtbccesMw@-0_xsj?Rgum_)b< zty435?On9tqE4GgqmrJ8XL6WY@LYU`W5R-;!XvSgT1#}xi`4O)yG|X0@!p6FxpV9k zQN%?J4cRTrdmC_z*QUUczf>L7VzKWA-{LST;cMwE1Fm3kelwdM4CLLg8ChgRLYR6y z2vO9~NKSO5U_3zJKsgR%z~l%0R*?!M90}RpMBYVd5L~*YSa)=hem~_dx;qIi+oDZ& z5$g6jpeI~*n<|?jMK4(0;oE0*+t#4lZeVVx+~P%&y4_1)(YjrU>VZ-uLXYXqoKSx2 zq;-4tqlC_0WZMFe1onQ$67`#ZNbbb_sSqpviNDj>qhNv1Fwl;0hKYfC={#g*}LLPwz;l=eO~a zyt+p7yTZmw64zt(kgBm|+vx}K)KabLn>D0knDueXcIraZRzY{8Zt>BU6Z$+vjCWfg){BS}^9$BG z57v`z64KF4-QSreN*4uoU7Jp=%_lXX)L*4e z*KW$RIn}G_PKgrAzNAq|4b|Ja9?ewky{R<@%XVueOoO24zR9xjF? zg%CzDpmp8D#76I{wdxmC_F%L#53~<-3re>;ZPyjuO(HkdTV3SjGU}e}TJhcaX$f#O z(;sJ8(nQ_{1g#V&P@ zmaBWLoUl|JJ*IPR2|JhV@B9(}S@vF788woTvs{ClwP+b5z+adY_ZN5Ds*D(YhV^zs zW4X=V6D7ypjkrV)W7jgt*~|Fue^#5WvJtg-?v8R7C?MZ&8XSk$GMzz$^5!OQEt(~^9mjozM!0Uv3U5~U&K4VK$`CN zec>!$46D@O?TT$+jy>}wx)h6W{!53O0%<48?C8Tg*_fT;VxgPJRo{%z-bOH{=1n>k z0x0?Cn@AF+?au*HGARLey?~hph6jd_{M}GR5zv6e0z-H7Mr#KsdJep#_3Tbk>C&LL zVJv`a`Sh;vssN`tF=vRtZ=}NCgziE@d$EajJUTjVrOXKLWaN_6oLy5bNr(c(y#ut9d8KRTM`kewOjj-W(Z=TLXgG2;_Zdcw zMF@Sw-ibgOGX+Kw3=~EjK4w)+^No>|*ktIQCWJrgom@vA}vaQ#lm+~g4_BbJ8CnJPgHUA^!FtBjIf6aqHQGfbMxvcY5?44 znui}+tT!}`hT9%@P~zM@*6l>-KknW*q3hndHZlnuEKgAOrWegK{%-sswJ#~)jwsuy z1c@t*OPIsS)~AK>9(951Hz;tWiCzh&Q+~;fo7_WI_Aws2?THNc@{>GU??(Od?vEk` zUShDlurv{Ii2i{TtDD8f=mqAD8$xHD4`8EB!;ZXLQS9@Bk@?|936X_NnT^LE-l))- zOr2eA6WnP}Y)1~B5Agv|CT^Asy|nYg+0l%(iW|kUp*cxRP!uq0m}IY(-xSnRMP3{k z-gue=z4a1wjqXt3TdI5eR0mKKU8E0RwD* z0i4_~G5q%;X8F}2j;JmfU#!?^)nOK}S_ji&uCiiTa_>(WPu`7YemE*pU&-z*d>dp` zfHEj6!||$v7vvU0!(@?@iqTvPb5iB{@5_mXU!)a8%R%U=WVm}{>WZ0NA~a(Nu@2&Y zsg>Y#!~+eO4Rj_XtGD7gNree$ChE%UIjCk}Qe!eWu_L&(ult!F_Uvp}K(J15_TFGJ zTRKMLPMSQq?&+j}oxw5AFtWmGLI{IYkIu<@hj5qXQP|b0-BcsJcoFTIk$gD6jbp0a z;Tqp}>)}EFl2yftaiOG;Owew*2G8asX|IePLDSH6J81uuGRA>irO|F2mJTZ4(rZ@0 zHv;VHb;}d%fy1=Vw_$XFxbhv`BBRuL?mIamP}#HhvP#9rh?>FU*h@yZ1jvAqCe>v5dryy`KdRisMfjf7Hhf`}XYx>xV+fl_vWjhvnDL)hW*u|SL z6SPnJpU5LRKE5a8TOOlJF_tm>CH>rbmMoe%+&sA1qPuiYorYis4G7plN^RG0Vt#VK zt+;Y94pNcUH3Ji;o?Jso*)ZKGUyy+2-6D1DGp$Ffd?q0WIh0IY-FiQA2^5_ycdd3OW7tTN>(EM&* zJmDGWMV?0!ar|z`A=jgMHO5b+7vut`sh{UKKOU@b*2Mv@K?xeTRHY>5GpCF?<=rSA zZ(Z@0s@(qswK3N=u#qxdDZ%=VS5obLLfx*WrYRQT@Wd0eXvA=NomyaqlMeIeow6H# zN3oAr$T_k#BlIfY!;Aat89dD&{%%E^*HZbaz@gIJJ#McWWXHHU`(#fKx-*mQ_->m$ z0^7^5?ztF8VV&v4O>b7qL*9`(dgaaDCiU6k)AQZS>!y|IA&EMv8QUxe%Plgw4(?&4 z89TlEz9fl!t;D0d&G^9+ZmXhQn=v!IQV*W)a8R}!ZQ}{rCWg)u?pq8iwRY2<^EwUg zXEkOnHjLs(N{^=@k{dTsO^Xl*uOpjBFseAG;Z2l?F#~ivJ2ydaFj#UnVa_B}a0XbP z*$KOc(Xq`vpOT$1cEiTGASLKbUtNCQGOgx!40&^HqhamuZRQxYjktaY8aXH2@!?7_Tw$}SDi7B79 zk(zmN086{9_>id~z#5}i`k};eKm%un(&Z z2=1y4Zg5%c$eP>gj&ZK59ao3Zmd~7+m!ipJ#VFX0R`D!6u9h_}bg(Vfy2|@O-Qc|t z{Zg~v0cdfn0p%f0<0IL^gA&YmC#YCM6Xq^!obrN1Du+35iU1y=kOOfG!bk{^o0rO0 zRK#eHE68;5$r0_@zkv{pd7u}ADdl}2{}?H^MsEj3-N_Ar_icdcZp@^z{J70eN0L@g z`%DTxLVngp*qGs%^x^=cnn)6{HHS+cgA;fCC9V-eGY*kDiy$qt@zh9JvmQQ*TD*Y+ zd-p8HXu9*bcV13BW_J^Gc$*DyXfZtVRvgtRMp5j<5y6b*?VmP#xF=HFVMJw4z2tOv zB1;x|CsN!!1}r;podkA(oN0Gpu-{$jLuA-4s2v)zn6MR#<39v0I8ET}7~aTg2!}1y zay3p1H2mgCwkoGg7afs$VQB{}&pC&fjT=K*)7QCbB0Dxf_N1Pkplr^}8d*xpti6dg zmmwf~D45&}gvh!nmKm-&x6@Hk{#L5a80iytMqq%pCxW)vlLlur=becfz&v;)?=ADr z5vdQ0s^qvZXzWa9lHtx6=^b`OR9t^^+)58KqoeE(-0gtPD?<2jRC-dhS z=LAJ$K6*C_m$u=UbMYVJ)LS%(H@WmK*bfCfdE3YhHi`^Mr3B8?$$fT9@D$6UKk&UH z4|i}n`=olfw7!%z1r@(j+M(iLuBg(}5@i)UQa5UokHfp~yHUYp?~ULsp|>dKTftod z2j3p%_K@&yRPr0}@7EPKk@ZRiC(U{Mb86& z=E+5aANPCP@6Vi1sp9jC&T#Wb^Xzfk=S9%xXPwUXVbGJG?A45Y2r^Au&UF~rgHiQf zUsj)ec07{5EZR02p106m&o>-D_G8$SR?qtp+>hkm^f7hKhs9o`3rbYFBe6D1RJ`(5W2}XEf_$z3DT?8&qtCe49*-vY$?+Ry=rIuv}@?x2joFcEGjbV~`-hWmhsS91s0#J3wINtm$omi>W^=~{r1~$=SThY`QhfT^m+5`d-^=RyHB4-?|EX1 zbfm#xM;>9hF&y9Wplca~Oc{h!8H8LJ6v;CDTd16f?(fC-zl!faif=3rZ>)Hf>ED;A z+E{=R)d6LZLnk-mK@JSYHzzsp%Rlc`F{RgMG=@H-G4vUYq0iJ9lJ@IvUau4@?e8@i zJ`))}6B#}e89oykrAw9h?f29z@88|uZXcpp9_U4A_HH=2_~kuLW5_<^w4e$3{Fi?o z{qoQLFaPYlQz47s?T2%R{C@Py@BLqX@BQ+-tJwgJ%LyDyqu6clVEZQ;rd+8S)HHJ9 zyUaU4YN#T!Zm5b-P{TsZLQ+jMiNIjW3r|R<^wu^yZIy-H%*n21DIMY?M$y2dW>O$= zxuv1@kW8S}u3OwTs@-}zy`#Qq;!E*phJN6I(;8qC#htKpYFjZ`Fv|_AJ(TTLknquy z=Bw;31eJvQB3%sg&{k9vt&xH1fE(NK)P4uO_&6Htqe$gRtPgD1c-Ebpn zh=vwYNc)zjJ|*RvK|h9RUp(=KYrIRIhe4GAJ4GUGTwK!xQ4(ATC3_ZR0QU5T%L=Z| z-|bt7;WEf>|Ejl0R{d!|wDQb*37(6%4s+;m#8Rhdy!puKXgiF*TrS&$gYn=Y0>4-c z`piZ1nTIq_-&*+U3nD?}LzE{_q&aiSV+ofR7l=8+&7NJ{VM>L9@$1zdMap^&8N(;OwCuxI5U6MH^D?{jw&18{n9$WxF-lG6(wNG}0)`O}2p4|Q(6|>HxTemSyNRC*9zSMOQU9n6d$hv zlGjEtl)$Rk!1uy+fI4V9ZZ~z0+og{SUDGs7sTw&+ww}vp3)vBq#fNI8Pv-26eVA7; zrWQKTc2}u!;WI5RFGi;WW;-5Z^kHMG{u&Ok@=jpv#?$8?^`|VR6Zl<$@*ewk;L{#_ z7*~(_9*@j@x`CySb%1tghOkSbCdI=!Qr8oTE*4;aBm|tHpcQt|dSk=i!Kg3#z(%tc z^)IDEm-U+7c2jM~rYUk=QO7#fr5bL2{OdRD`uXNk`Eq7o(H8Q9Y;JrNi$hXo9&1KH z*5=vl;)aqR!&^9OC=Wl_v^1-RP+*#vm#^F0m+3CUw2QfC z$`LFC_Hqty-?oytZd4m;EBe&@Nz?p%aCeH18qZJihAE~~lUuj3(AOEx|LmO%R)08| ziyQBZii>2^w@Y>KaA;%BA{w(AL8Jj!k2Q(}E8z8DS|qmz?Ze=85) z5bq0e0C3vh2)n!eCd}XbYNDM^(1A`MhBi0Mm=!R%$Lt#skxJ5=7GHiBNWYsi{)#Cl zZ4P;)W;=(KZvzI5v^I=qBCr`V@LzDE?BCe1q=v1~Ikk&b)Jo2I=aitv5f`n@OB?zZ zW4Vbnjk}>;))isDYXiX6r$JN+`RMd!iW|QgAlEP!Bd2qWLm@F_>=#F3r}p6!T~S=H zG4W;w)$U_fC5p(!VW&cyNZJZO^?H-z(&_dAZOt?LK8{UXnCviEj@sp$k*hx)iHkZX zB#rv|E7S6Qj;)!Nv1k>@zhDo~8Da*_|wfGFujNCu!l znZls6p|?tH)yyMZ)yx6rsSQC?C!>mnoTid+)AwLD%fs%&_%weD$CbQ?R(W=_UeUb8 z1ht&&`I;NklGO~HQ?X|nqIC?Co^B{%Y5|K3MPK!ie;%Sl!_q@oIC?>*z{|m)mBaox zgtuQK(*nd|ud}G1P?dpJtkc~0Ih2X^FV6I=j?v>Ax9ZYKR!SWkOSJsms%wUmJkvJ{ z!xJa>-rL@a5#PG;%n23fpLh}MIDopl44W>{ONgQ!PcYzuBTdUGg&U68@w`pSR!=dl zQW|x&_A$4bX)44RwKyAE^`fldP=}=WeSCTFi(`7=T^V>^27WCAzggg7l9St~C$>*d zYM-9aK0TT8wNlhMTd>aCf_3f|tn;^EDuD%@ki7;rIZvf1h(t^(NlD4#B z1{8U!`Vh1;m&T4(d+k{;Yzp>|*w=h%x6RUa`GS-IbK>49y7sf#F((n@<5*UViu0<* z09qLH1|2#b$snu-2lT&K*fdbwZV*ENAJkz+c+9@+15TU27v7hJvk6v?$I^&8O#7_H zseFUq$eFz{Ayi2~_&2AjfLu{>9&FZrGVO8dH=wH}{dF*GSHmh4><)y@dy+q#WKCzw zWo~CPXuzx=Gn;xzE`Y^yn;iWe-gaWHgY=m!P%) zWoRLBQ=QaY(dIg92xPUE!Vlff$xooVer2V^Yq>DhD8a%h7jZds8=RE)Dm%w;I`T^U zx7XIcy_){*_4DtTDABXI^tM`~QVqky=I@1@B33;WtX|4{XY{0ajo?(Nf(D4jWWe{+E5*+{rA24JI*>7MDZb5;^FNk%QhI zIp|H2gWf8ZO@=k8d!cfqmrI>&Xm;Eg4dfcgONCf0v5rFWJ)!_oyWIBioqJLdxhoaO zeW^h1Oa;8$euh-o3KR5lGb+N%%NJ`#$&1IKssVD|sRa2zuKQ0bT^&*d>(IgQ=)iWL zCMfTkO|Umi6PC8rCbX4jy-?R^X$Bjlxf&R#xf&R#xf&SA8@NHso4H+9jeJXCtzJ*~ zCTuqqv%A@3?fs%AkSoo4;3KW*iVTzf^O<)+hUFYGB=PV$#)=)#cTK3c`4;5J1VCDl zya+j{GUkAfupHzqUJSW>ium!}0PrMU8=d7N-X}*+sWV7xfAW^BF~+z|VXH#MY#Def z%I~8JX*1O&Dmg`7Mp~uRAz70|5+LSB#zzu*J{=7tATydtj^4wKT$*eq=&3u*?@G7~ z8L?W&88$DPE-cuE57SkRFZZw@b`nnDnPqO`DU(>b#h(GOXu}nj8lniE;cmPI^E_Q# z8`2k~#N$5CrD7#~jqIS7AvybQvVvanC}2%;jdWHbhTFl1V?R3J;=KmByT$@?wS#oC zo9?Cq>#9ZS7@4y-ai)IkGO-*^62J_&+D&uSN<&4PkP736cpX(==2N^vV$KQ1Zq|ka zdqcq$i9HaOh1#3qwV$dHp({EYp;;~8GABr7wJ`v|u4c@fqL zu%u@W#UYMyZ;-8y2KLZW5)CQH8}Y%EbwF{qz;bnLLU%?$V8k5{&ns0&N2l(R!M>cQ z6f9%{`b2*g0~cOoN0^Em63j+e1LJn+h$}c9b9B8#63SPHwKg;W@IWk>8C2poa7(;P z%$LqNMOi9%N}d3bb1Vxo%5lO}W?e%H8V*dkc_^Y~PM%I_668m%4J^sEbL0pzxhIe( zRj>^lMv66ndpd@QE(a2dTzFib7Jxr{Q*8?+&ItqJgd5HREBpGaDIH$&F7t8E+!ZJ4 zoQQker{>%wiL{sLYY+wav*&#-SGXyq7u}ck0&E^f8s*g^Q73)fHRPnco}GqJ0Y13Y z?QO=|A#KVR1p+-Fk61xDQ}oMU(P5kQYvTOWaDt|!E*3PJLe5~xD>5|3Z3{O+8>l=q ze|dl*j;_>oRFOZKOh@Bhb!4?Q1D+nwMyCSlf?;1Amt)dc&$vosQ$8oQ2W=-8C6e`8 zvnk@K1s^4_Z+%dvZ|i!qm&|c24;$2sY2?0Y*dhqt8#lvn__oLn}njEq>C95y}H9X!?0Xf0^R)b(rYI?FV5922hFrh(nsoh1f@`>x@L z&5KhT(@S9Wc!nAzL|rVRYEp2>LW0G7WeG?_q>;)aGbmCrr!t7^LN1`i%aDFI!nOjg z4Q21FI!O@91rfSR@g}x^QaCd_HMn<>McCF!jcNkE0nXUP$V}zYr?h~MaJbV5MkfVo zyW<5mO_!Yr7K~zO#g608Ih~y9`6<7w^KS}K>5E^4e8J2(wcujv zHPu@1>Vq@(QWjvKo;JdXR)K>mHOTNgkMO`k{rwVTN|3VWmRAVrKVG{PL*V4gxIDn+SC)=_-pm z-&PKFytRwe8PR`eA*sAg5H6LZ=z+pRF00+PxJw_XupB05XFou-WskQqB#_!g#Wj=d zs6Qf^@#q+FTsy@(_`vDFy!8E`a5ZB7>L8~k*~tV5z2MB)%!rlz%%Bys5@b=nnlL2d~5a5;wA9c(9+D2Z6F=0oE&snNUYM4wy5& zTo(#?sMVsnRj1HQf_l3^28~6~7SUq3=|EO`H{_)(TSaewhpzY0?k zH*6st@*LaQkf$Oi13P2xL{OAw#M#7-Y#Gt&fV)1wqRL>jRdxyhY;>qn)MWys+u<<4 zZotu<=7f?7n$iRMP#M5m-GdWpNM#5%*9RsH%MfiMEKDZn%fR3+bP-Uejjpik#u7e6 zF74X#H7*l|x2Z1ne8%&kUE+vHE0x&&$$mt6inQNiPK_T$0 z%TDB#7A7hcE`>SNAatSeTzINOE7h|zTte~pcvEu}7-9QRB}Atsr`1~F3dD>-#ovm~ zg)xpryXQVC6!>i%cOH~8Mh*YsmVV%v+Js%6*(N^BP>RS66UtesR`L&$1JQic0+DXQ z;JBwnRNHnk_sMbG{BZKswy2YPN?|#eQ_spClSS(oe%{@6SEu7)?k0VkvMv08Ot-Y; z#JihP%ez#>H*Ur zuAPgBO4cl#{LL^#ji*mdT28w9v}3UprX!F9;ORh5C&AX}p%av&XQ6gB(_Tpjq@Upw-tod(8$&Rbhyuezo|Xk972O+N?Z7nS{9UIa zB_(6$L>@_Y>9GubCwNlqt|4knUN}U@<}B#^_iwqxV+0IEg+H*)6+t~vqcjx0en5qA zvt*63*R@C`sv%Mr(HktgG4g87G5UOli**Ul(Nm{`4)mBdZffwoemN3kh@5-GWA)~$ zo^bE%rlyX6*57|c!QWE$Yk1=ok{awU^76FC$@LV)5E{)uQH3HKlj7bb+@YZ)ke)l8NvD3xY6;ek2~f&Je{K za|JE&3frFi!uqX`uM;W5Kx0Qh_fPhFuqwy7Zb(It3F~@WSttq}=ae+f=jr)jEMo^B zSWrL!z^lmG4Rt0|_Bz9Ogy|BpptEWjqUJe=_~9u#krIZ}<1AMZ%xC_;FVC2wTGvci zdx7Uh0K80d<6pRJV?km&d5^&Zw1@J3W?;Wv8Oi%Oz*;On_>_q4_&Q9P;)0DJ0eEc8u zQ#qI(CJ!e_ zr#LM;u8b&)M9Wb^*JokXp!w8334VMrMuYYAbjtlx9?OYkty@G-r!Wv zglK9fY~o;=b%81+gz(QEl<50Lhom%)<>JfSJ<(f?qPl<1CO(VOqHJ`JdowMqYC`1t zX*tn|Iz>@M_b{FhGa7qS_ER%8)%(bnymyY^@oDuHKS(e5OM6|XQVnK<{3$kVLVxns zg~K2_&hIGIgwA-?Jvvf!HCDykNuJO^!ce&dqV_ZoXRi#0HMv2zSuP8r{k%!A(4C@C zq4n>yhqKAOv04O}K^~762=~l`TZ?T;M(V?ECS`N;R)Nz}RV zVt=#~jZxJmXiD9eOp7qqjhflC@?jT7V-bNUX{dq3;+x3QkEnHV*QObUGQc!y=-*{5 z)zdbf5{5xFtDBD$Smq!qRz!w&#iAelSnRG=8vW7MFqlT0r(_v$HsKX#QKF_C>Qm*$ zx|>cRIvTM_?$cyt+sSI?X=S(#A|5jU3W>DyWvM*I=+*1(vZ^>Hs})N{HsNg@U}HU^Ao zNu@7l9ZUgDkN#06uF+Xf7A79MzxFOa03|dr6t)er`X$(4*uOj%6Xk%h4T!S|<0m@F zt5HJeSkEsn05X2JTS3i6B<=9aWog`+uo$&&8g19-gX0NLOr_H3hPMeZZN3u3!cZjl zgjOC#!P!LTmU5VDc!=$`DWWzi%ItO3GFk4lvvDj0c3GPHWj5w@g|h=cKo@;H#^gRP zjqIL(viozis4;Yh>1=U9YkYXw2CBOxU71BwCK56mq{HElTKpgeX;|`&j^O#5v{+3L zDC$Z$O2K4?sGC9AdY?dv_3|pD#$aUhX7vKcq|kfe zXPkfRsi;(M7PJ9k5@cf>e-bdnch}e;;Kn7&i*yXJkg>R&Tgwev%LX#WrP4VS>1RbgvN#oK^c@iJmurND`Q!_vE*-dF`YZwMFGBNHWvkL z-krlBv7wR@ zEl5mR24-q9V-}e6D3_#>T`nhdact75KboxsV?;4bRw`HCk)5`*U;;vSNyXL{W?TJi zaK@Wbep*M_Ljm$J*}8`)I)aL7c8Et}JDuM8b1GawREv41R%tT9vgGb17nQJQBv__&`6G zxmLPEtZC)YnS7|vTu&5I2aFz z&*(h$6E(4WQ5HY7X97L^yeI}q%P74SYOlZ~=_mJjhxSeqTmku;=;1Wm&+#EYTzf7?@H1#78gj{~zpv{Eh z0&I0 zD=2wd5lfeuNoqzQ?r2CKNFT>F+7p1Kg5}U&sLV(dF8M96*%C=5%+w&pB32@PxPFVR!LO6G+z=hFEj$gdTKk7qi~HEQ%CW}+p>=;c;Rx1@OY(wdTu9`C+442Am0YH?2&-C9#{4;LGL(IDJFc|S`S;U&94&p3t7o5}3 zvqIrOtj7=0Yzw{Z{Ul!hC-DY9i8uU7JWN6w<8`;XUXR0{#KWrPr|4l8^HX@EpTzs~ zC-Hdn_ownb{Ykv>PvV{ZB;MpF@uokC_wS#?Yp+}T#=*~yd#r?hs+})?67T9K@veUo z@54{x;X&=E>haglEJwSI8VtD!yMAIl3j$uGdP(XoW1sUf>)PH(oH&S~W|wbO(f1s` zZi|()g#vFavoyP^hPU+RpIbQTEE~cU3^vWwvYD4}fpDwRwP4Taq@*L{j(Q+4lxY&oWN!(Fv0ANupyU74ocRMtd(kZrdnv_dQ`JsM+@ ziaioulr4oznr2-jLeq6xck#5PksB_%P%qInoqK(VN4WRb*smE~p+IuZ^lbP36zE2c z#+PGPOM{gvrvls;*2Zzl3eE|DDrwR{i@w6%V0<9UMMn=F5yf$3U!PI}aC|b*xg&?r zG0!1$7@0%PhgndAyh+L+HLVCHViv5aSun_r#IB>oH?c0NW)Utz1vlc+=|n74|2EY= zPpWzS+q>U_kV5avfS>-0SU11RcbJlU@(3jmK|uk z4&G!q>2os8O+37chA|2|q1@;x`W$IOt~%(^HaU6{on(N4H_a4jLy>AQY!D&Xh|~o_ z0qA33bdu^7RJoaQ3~PDySI{>(PZ7RiZFE1+K~WatMZ7nVB*-4`VH`towP)4jew_PZ z|K_gDZZ<5!Gy?343nO&U?32rHHosFBbDKRIg=hz7e*(LWD?bibTyk{wTSaFT@Uni zImXxvP@yI!kY9qUa6|-_iHMVSUP`CI=}tZjf_^rk%Q4z!2?LQztQpXC|Ho)Y%3of( zX-SwawkEx$jrNwxiiNqJ{_o#H*~Jl9XV5E?{<*bY)I@8G?zlx2jRftD=T~ueFPKc| zxT-rJ$Btx(x|xch0t)37>m}@V8Bs#dDgst+-p&psLMKjsb|r274*|BBxayQlQvi97 z%Xh?rXtVRHKyxK*SXLMp@G zbS0WLl-s5(2yRm`t@Ygm&N;P^rOMYv^~|)WPPI|Tn44EV2hq1x~!U$RAoUn6Rut~PJQJwpzm;~ zOY{DOTz}}G7+c14cv#=DSwIas`e4Uk3v0=(L+()Yq)%=nWZ;?;mUvMBwF0c{Erw0w z9PvEL&=!Nj$rVmRZNx;u;?)WZxk{4;C!3sm zM#yd9LWk4`SA*lCIV^NGp?5EBL{w9Qn1fAoAnjrH4Vpn)9d4MYg(2yt=(K@!eDFak z1Mp|c{0hrX7mCz*H?o#ayevx4%Dd^!!n%S>;WK4$D5Y{&IcWt4t?;NF4g^y&KzEp- z&}UOa>zJhY^ovvB6S6 zByLc7*vUfH!WGXCQMC)os1IvHeab6`&l3D(nYNvV3*Ry&!hr4iHjFO#(ufg+0jOt5 zygm^=lcApKN7xMP^+CTi5EZTwF$yBDu=5Ma^y{08d* zhSX*PLziB${Nllm2uRK?d1{FxLc=qjKGnHu#KE_ zqHS#yx;y#P7kMznx!@X{PH%Ve090o}AmtLDGs}iRozIjZQD-!*=~H<-V9*U1viK$N z5d#rBEl$Fd>0~Oa1%t3&xzIe3h|AG zKYim!>>*rpT;JAx6hnJ39#*F;e73Uj&I9X*E!x0hy!qLz4%_%6s8`43!du&sNGQx{ z={?%&dO;|G$}tZX(soWNB(pRofU^Qzp(d+zRv6UpeK$toJ^_>!yPNAFKu9|JZbT|1 zAD=M|uG!a-YxF8C6~Ke41VbjMfK`o(*BVYSO2>yh^TurB2Ab7C0bi_`0Sfu^QGD4s z3+9l|+<$y05j~$6P2D(x`joR(pVq~#3g;_@Q^5Md-sd33yOfW@tWrlm+nxZ|4@(hn z4KNY(bxL2s$?z473}3OB@x@@Xa(gwf#uP<)i)Yp5yZ(w!7Z4Ul<+XSzc>^-%G=Cx| zk<}()^AF%k5(;YRw_z;aF`9KW#2e9QDEB<*^W$#{FS5AYKn#J_A-`_q!w2uP@b_%O zAGfs{4NX|g6AKn?%!H&mQ~~f z%!>liObno9#V>`mzfoSkEp;8Fn3NH?ebjI*8sfthrEj=Bnn{Dl!+OuF=eH>d1pm!l zj2!Ot%_Pm%oj^~*&Xn4OoDnE4W)dk@TRMn$w+;?nQ1MG6^sW(l-w6GxkPa&>Zz#$V zaNaftrOA{7GEAJTTPd~X@m4hu`|jT)kKH8>97Wh?-1kbv8*u>gW4CT zei_8Es#(yS1@*2_FRo!y){~YSOarPRBhxv%9aDEb40;=qF}cO^6=}TrJbeAUwr6eo zciY87RYHdIm%GJs{@4J{9-ii(?@ExqN6(M*Z}ZLJ^6t~t-p6gh^lI&R&U?^p_7Pvh0&oYz-*)OERfp7ZRv(QHI3x7m8Rc-cvK zKHsihHxF~6??g5LleHcV&y~sa13vk@c=4t<+^jyAWVc;ptTenq|LOJa)BNggv#=Lw z%W4H(OT4^$`N*rfS9260dAoTy|9JPh^vblN{B_ywFaNx?e_g4YD8F@}RE!HQt$hE9 zKw4ux%HH0QEY5?r`ub-XSs)tTv_#3MDbPr;JVK2;&ZA>{r&cOoNi{T_F z6q7h~fj!`b^zX8eK-}SD#aBiWTS3?}OCKR9PC>JMA~3ZI>Z7PTL5zj}=cd8x7Dhcne*`sIj(z_O2vcHIKtdCNMwJ(U%?5Y>Z~R?S`X6 z9<|^~LV&)V5bQHf9Pu5S>gbRaxkk6Ewy+#EZ=2CeR#NuhR6L!Gv^)Dyr^3|?5bHA6 zD{^D$L2B*~OeoU6l1_pEIyJ^rQ4om%jHx*+_MrGbxEUwSS%}lVk;VUw&LMH=b6hTU z$Sk6$&^q;KK&*(EWjx>H&2e2NR)tRqD%`1#DU#tJj*Bb_O+%imsrA-w;F!@&PXhn zx5q6bK<%kZv=nPfv>HU5C=`2nmg0Tv*@1;?S0RLeUGf1!ssH6Em86a?1&-^~o;s0C z20Yh^c8e}KR0@Top!zf~b_O(#OCaOl^fBrmaQ){A>_>g6y;>lBlGy7~S@t*@f2f6O2~DJqwI`ZW70#7j&=0^xgH^G*TSZ(kN1;J!-bnM`h} zSUEY03-N=$u;AaZTpJwY-k2)FN>^Z9np+T?X#dg^9R6k69z_yk+DhtWoE%Y`0hXuD zog(7L?vmd!GX6AwN&VhNh|r1w8bQu|y4AN3rwBWJ)IpzM771VPSTSp?VWG$&r;!8u zLrt=LZq1XIHK?iUtElR1T-RZy$CaYF!mOaAkv3VC?WSnCoAe%+MHHQM)956eAmAwq z>nU%88yT)!K{**lC*8CeYmAcVa*=#rXA^&rf7A;k! z*;5ME&3a=Thmq7*-Deh&o9l+Y@wybtkkM}TneYnYW$|lT%^u>&*=XOQ!-%R=?RHpx zPr`~HFG=t{>?8``imRlv5*Q@Gahz8Hr78l z;5MFbj-2@$xHDc6Q3sU5FBMXnIz${?TOVHrLvA2dPA9tylw)O6LSck}qnTCrU7llJ zKp)z&Uro}8Aln^5A?gU@Yv>U#M<*P7c={o7C0vg5%vVaF?*Z!sUOVFmTmjK@pzD~u zUhY(DyW&el*afQY;xJ`N+p4*u?AUUBj&se(X%|QhIwp-*d2d8sLjAS0RE@N-#>;6@ zm7FIQzxHBS3*DR%B6SRKxhLyI=Kyz7q42sZl^n$VS|#jmsFr#y*LkvfTkioQckshq zjQm8q6Ru`V+hhyB6Ar#=)I#k5NmbJ=(Y&yYFte^)dmKX!!qxZi^DKYflRGf-Poqh< zmbi=2KN${vauP)@EGA>Gf>+g>QS$E^84ZXohqjBqgqfK zU<&Nl4G-z$Rr5`_h^9J}oHMaPUQy;!5+e z?)(~{yv5Enn1~icRQ8VJ-7Ok)S4OUlYg68x@CJGFnUEW|&bEMqFHsKX>eg87fP$+- z@5SUqkNh=B{Qh_babMkEjD1=uR-f_!HK9Sp= z7}97}kTz;6S0hZk@0q@v*{QXt!``@{+vGuLb`fs^!Q^teKjGS`83A^81Sw>|LV{9O zR+Q?ESkmT)O#NBc+_;@^@Y#0kSTx|`GPThT3_MkhlOm@5cybi!-=l5U`85Lm%; z`HS;W#vK@VzGdJ{H#5C0NWw9VcNf=t3mRS%nsBeEj4VA0!~z5s*OJzc38fJxUcwD@ zGY|kIj1~kOyE~BV+;~SxIV6ntEceEd4zH~CFl0t<0+hR3qG@WMO0B_e{Y{4A)ZdIJ zy`QIaoZ0EreNmPQB{NolHXcZ6u_`mN9V>@G|9;_m{% z)RNyD(!a=*bWuiYN(7S|>CJeR&BQ0-&M)z@X!`t~TXzI0YP~Rxs@7J$Ka!N?+-;@X z7uCp*(T2Ag_}IJ_*V(n=NN3H};7eN&aGG;LWlCMMC&tQC920Xl)9#I zsTz@%GD~(FH7O*%HN1&m@X}VcOsI%xmkkjk)5W!KV=y<0*N!K>i4QKv$2?!`FZQIx zL*j-uT=;%_o1QAp&D{Y8TkXNna8G~n{(DNYH;#1j=fkGmnQm{KN+;IbIC~Ty?FK1T zr!#^Sux6dPbiy4Uy)Lzulzj3ip^He-6+;>ux2*}Y0|QSohXdTP@#IJpyM(x$v}T$R zmGY9TCLYR0;G@|!l{z*ZXR3Jy%6FVLF{EX7HiXsTpWnGwzD(%yFL*I0>!jj-(^Tnh z-w)F}?NtI`N^_6{`N8)BV(-G|a5EJ9jMMVsb+@DAGHVc|_jYv5^IcLByamuG3}Le`@z^Lq0SP^)NS*j9uR^oDDUQR3Zn1e} z(S64{Wn%5o^&r$PXAT!x!x5DwPjnj%mw?U8TF`=~#!>$y3ZXy|C-y30^x14TLA2v| zZ4@d}`eD9~b_P3eJ>b_|o;vt%sjf04U3)Vw1Cl;>ErsV%Y1jKs!s*Jiz@3IPHm<7+ z)JtRp5w{cynhshKRKEua*9b*Xm2+K80tk5RflA92 zHUYD1U42^#&FdrYT76lUaYit3G7|)j;v2X1{=jFfAT8}%r*?geGA4rZ(9UiK zrMM(W-+uhwj&RK?;7RI07_68{TZqt~XbAH(g>JpfuDk|`al=m^fOM=Wzi&|yAj)=* z{E>i|3AjNg80P9q7>rLD4MYSNR-rqA7wTwkR0q1}}Xe)Q5=%n8^&IofM6tAhKxZX3#@tDDI=-GP>}I zlA#h`NSwg@3*GRXI_8syWxpYPqk^FA0n&$wj;E8uRN?xR9?#!Wf-?OrcCn*tSuSX% zc(pCeIODfYY)`tLv-x9NA^bG4gw!CV5h@^DQbuoL*EvNY&7fh52S2}=O_nqA!D>M(ft8Vb(@<&}v!-n;eG2V~DJK!>x3H?-tMVO@;gY zBD7u~JimSpo!M$+0j`=+9{fiIV*hoqd=zlLxqDe{{C#2E1pc4L<+56?AHPoS|7ZU2 zA{FOtbvb%|dH?PoRTs2clLyAxEz$sco6X&KQbKM$y?c2&yZa2SDW>k{|Ihymts0if zlM>BdHr4h&v(3Zs?&Z!?RO|KqaK3#pNdNoG{2%|QD5XHB^Jmp)IDbIJxxaY6+k7{y z^?jmX_~b}f$m{j?Kbe-5$C~8exlLeS3sw&Y%lYT|^UJncf1&p496p@Cpy>Um@}$O{ zpUuC$2ynQW&l8XqU#<@}oBFr^`mq{3-EFLCECz^5yIiZ`6#e)$zM{rQ^Ow`R?MouF z{ZDGqYO`28R!6UkM;dAEJy~6?2wFu+7qBHQak-suM3;<2VY~gh+B}jM%GvYH7q81? zJ%5fQ>#zUmz0g1F>&@cj?tVE}XiNQ2zLi5zF`AakbhBEUX8P!3LaiRRYoIp9*1h%m z;^|R61!e3${DU!9DU0D2s1Rg~8_j=w%X zR_mAlTr6JDt)KarYeru$UY`%r0hq|N8MGD9V!I!}A$7K*m(f=v*)Wd*~e_{rbz=zSoGlww}i#-~}2F_wiv< zzWO-3`-1U6Wp=i`tC1}mj?t?Kv--b(=QJCU*NPl0=XaaIaphJC3o_SgO;#zM6iX0aZ}ox_bDV8NOWGLT59Zz{9--W3i63=kq(8 zWQo@KoL1aa^EX~ll0a&a*3YXf;M5E}wHM`5_^@ickqQDwDTfJfuQuG-`Nah$2 z5TnEZorObNI`m<=T|5?58{hqn2}>dwZT;-OtgLtI^rmVIex2ZR^#dGi-=C1>pCyjAD;(z%jLc7UQ`Ga7<9t1 zlZe81U*^5)Ni+X-VOBiV`pri0@+(=7(wfLV#D9t3cQu~RsX7d)GSzBZExm#{@52Qscc0hH<@Kk^ z2aNWSj9^2k6Eaw?7=p|7{o)#n9)^>%+?rf^X0hj=sA$~RwDX*Eq&&|&$olu` z<*E9t*_4YT0_t~lvNx>_j1tUJ=ry9YYqngist@<^v0iF{WngBUOj?sns|cz1@8Q1A zG*7?fI>x8sW+a;r&t2`^R`3mSWu7P~~7RE!Qwkn>dNVig_u_%)4Q0kj&t zh*9zyr(jNMs|8utWvbVYr^kotc*sM-_p8kd4>-x(JZ%vIiAQ1Y+$`kS-my~P>*9I4 zUagk@=W+9eW*px=Ji*u+6JXS4-?uOG&$Fl3m&estEr`Rb-n2oyiE(W+6F$R!FYd6T zWBq-J4>KUDdJhlIL0qg}AD&n`;fEh&!dBsHgEP17ZI53sUl!QKeWxK`=Ht8V-|W;S zNMvaD^VjERCRrn9d%B?1&$HFT-{fu&QD0PB@aOB70J37dzN}wgVw{QfdYI#|U+Zy< zB#02mE%e(cOnN}Y_m}6FogKr%8P!}GY zSY_8wECr7+x3DDDZ2sU2Hp};unH$2(!dOvS#d(S0r62xLeT?Yy`Tthl#47*!d`(K; zAjpZmuI#A+ac=Tud+=?&;E4kB_zo9&ad2eIfH#z0H=z9!5z~T+Q3dbikt)V!vDRs3 zY6!eRDBD%@Y>y>6%R05XSpCh&26sU%)d1UVbu{Pvw0IcPLRuq_uqol?5ssNW7kzg0 zkBR~Mg+=4joIb{_#^?%0fX9ou9B9TxzZ`9BQ48Y!qmlCpA8HvITU^av@3%IhZG?L> zkLaL$@G`gu?X#nz9&2m2#_al|RfR#ST}*3ikzw!ovG@A8c!%&>ezaKtVEE4u=I^yHo!!wXQrnmWoScH=F z9{%^0RiY-jt-G^3#&;Y}5mr}Q(e7+Bk=#}{g<5kh>2UsKzFe*6o72U^{F$O&&wPEd zHF$P@&3gZLg&6-<->l6!WyBqPdsx2e!I$bpw*vVX=HvruhCqQe|Ec%zGI;sMMle{d z{$9*Ypfi2hh~~@U3(G|yJkGyR9NPsy-pSmXy;|ELC@e2=mJa7iE=qcUe_zfO>un=3 zRHDgZv&yu@=r<8-!mwaSp|pVQN!;6he}2eVMX?)M7#2^J)3)#h){swsa}YQ=&Gn?? z?J#XbnUdF`Lfbxfia>xO0_h3#e*DXKe= zD0Gcgml@oA%5!d6#T6S+Jq_m^6vO}>ZB{(7dV6dl;eUu}bywG?!C3>&GA3Ow#o@?5@8gT$ab89HQC^((F%cRxTa5m5|Du z{Lp}2lkJ3oulBcMCd{Ii2=X9$d(3-;S}=D|Em~Cy5;IsnWN`u~9#E638$*1wEj2aW zBE4ptu_of6E2b~}60{hu)j1FDZl3FboFie&8GRuQiNnRgw>Y;@c-&#EIB_l)cUv3i zC4dd1*j}uzc>@dVIxIn*bNo?p>&^sAL&1Qm+-5}wdn2c~qLDdZBg6#F#>*qt3dD!sB zM}3Uv*#!xMb}doyKT}*9m%Zv)B8-pAYQxz-5~j$5Z`PxtRfFK&oO}XZSN>F+NdP?3 z7;s^2J{vl;x7COvFGtJKM_)wQa2P7KDe*aa-r~K*mpQas{UBJ4rpJ1^+c!IaquJSP zCb9jdSK%KAzI`@Gom9tNSC`L=|9#~+v(+{Pdt|t{kQ(8gf;E5#&v{^Dgsh!9_$`2h zmkV7LO*zEVkoT-GKG+4|sOTiHCFTB}Yd>7>oFcJJXBOYW#F+p7YoJQC`wUN`x^hJx z&(>`H#jhsbGo#1LX4QJwE^1)Z4TIDoGYMVQ01eD*HpD1*ZonvSLY82^tcdlfk!i=E zePS{Mn_*LVnc*BH$v7{uB6YXJBfY3*PeqF(Bn{!Y+C*%kcvInIY;rl3h&$?_L(Ag9 zGi=p2h*IH3UL~QTF-k($Re$x03m|UD>cg@NN+HHr`=nF$>D~Ptc7=j8AQ!8S#4dq0 z85swN`?EQs1LI@>2hrKu>83F zn%K1(EKv{)+wltzOYA((H9UN0I&mWXyIQ#`B%RNi2r7EPY7P%%N5bRUH<`=4)$OJyJA7R( z(~=%MW}Q{={(XF~*er+hg@3nZq_{Ce;bd$$d!!YNlP_7Vvr81&sfF+0Sps{Op z9=KZToHpN3Ph}E;-K1wGCUQ3XT6bg7WVtr18(tbdXh+xsmEM^&BP}6e12~&9+h%@A z&HeV5#b)(vN40#xT&+!-2!kUoa^*LhDyC>U9no)F%a45j8}2y%8OY^c)qD4-qq9_VA~t4=q0!tnc@tQQ_(NYTpZYAPronX z5%{uC4p!^$`EU{WI8y9vEm&C|$15TBeSY`2c;%|n_aIun1USb0BZnrPN7s`5E$&}m zI5yDaxTzZ9bwJ8;65SOZ9d$7fPZu#U+MHP0XEU`p4J7!*Dlv+79KKpDIp1&D+Uz9$ z7?Yp9vU7!_3bO}J>Wp-)7&t1_;^6l};)z1ocz{~n7|-~y%y^lo8D}MzfN~DA!Ll-AcVl9zN%zAIxj=i;?FhrZ5JvLXr=6Nx(~h|qmW z`-)^i4UCGVKRdtv`f$z7vh5W1ak0{m@z*AGj%>8QA%;%w>EM;MMb9gYGY`(34}cwV z(Rv&=rW=;V71PQPdyoIa(aA^}Ke4SSm8oJZmrPg}Rd0h{7FSEUP&g_PeU zpP0RTr}^*4^XJz{;4(KuLP6o1BRH)(3I_Ud&CR4`QGyvoLn79_$L-bK@>NXqaAqFA zl^dL7fv3BMKaRqEuCfj+ah|8UyKi2 zE)~?&DZ?zGU&eQv?GxM&{Fg-x0JoHi2J6-7<)A#aqk_57hqNDgIf=KchsolguqDlDFh z079j>2+I4ww#o}>y_ql#yto{^nRcQY8P6Z$k3vg`G{TNdT-K z&<yh31eO$oBAS_?$D8Ms8L(YLH=9+Iv zJxn7V_=}r=RL|UBWxN5$ikBwnpUvPe&EUIc@O?A*Ycu#;Gx&Qm_%FMkvTl`ZXU-Lj zANr8O&b7IpN-%oL!-6%Aq(IB%cRvQh$Vv`pSAl-AoqUvX7s`tKH8sXchYTdHiS zk&Sk(>C<<-zuuu#A#CSdV<;SaL!8K2h`j@D5Ox^{r#MkIw;EUj)s{Js+`;wc+?&(8 z>TbRGug}~6`nq`jFYUzt_1Tz<|62a?U%&j$$kBF*I&|bEF7cpQ5^Qr;M3{f4o$}>?@7_tOi~mPLJahMh)C|TdP<=S z&=f0xwF}2|Tc1lhj0>XcK~qrz>5s53(1|aG&m5IAS!ELbs6CZy59GUvMll?NxaYDM zvxmD_x2kQ3!Bq{Q%vh6(6J%tX;6h`#`c{3fHWiyc2d3vw%;Xtp`uRGauN`84durLK zbe}>GzFJr!mnS_OAiHB@;f8Gv3uub+OziU;4eI9wx>KASxuSs;dHm|SA`Xoa(0k_4 zyhb9fGdq$h#`NWejnYETi;wiYh3`2=Tga~49>11Bm&j!dmY+3?)BKoaQ8T1QZpC=I zdGJ5Hx$0cD%mfe-n}PwdLu0P1^kKK`Df0@&Y3$oCoOeqoHLk`=%v@E-IScU!E|UP{ zb!(N261N~$(nR047#1XMzwmtQEJ&0SnJLSH3xpEB!$t=VM)=Hfxuo($@P@6U#RtS5aBJ zfC^kccn+2b3_h>#UMy#ak#z=(SYR4sV+^icjFFIaQw&9YlizAH z?ufmWY7vKCqRe#l49C38ljTu6$ z!^OAiszo+3-&kWvU1NMI0h`#t6mkYi9bxQuy~@lC9qZq5E5eAe13x@zHM7o`EKNRS z-;DhXw|;S@>O9nz$jC^0v9h(0?qcNj<>eFzYbs z+6iy<;EXDM+j(LsZj(2k21~5LB(KAWV=ywu7(7SIj ^;UUM?={Ynes99Af4c+ZW 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≻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

Qpxn;w#GI7l6p{+dv6(VcN=fbYNWm-bLP=1-;L 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 literal 0 HcmV?d00001 diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index f9addb42..79e11ec9 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -838,14 +838,39 @@ void TTDBehaviorWidget::onLoadClicked() QString TTDBehaviorWidget::extractorPath(bool prompt) { auto settings = Settings::Instance(); - QString path = QString::fromStdString(settings->Get(kExtractorSetting)); - if (!path.isEmpty() && QFileInfo(path).isExecutable()) - return path; + + // A configured path wins outright, so someone running their own build always gets it. + // If it is set but wrong, say so rather than quietly falling back to the bundled one + // and reporting results from a different binary than they think. + QString configured = QString::fromStdString(settings->Get(kExtractorSetting)); + if (!configured.isEmpty()) + { + if (QFileInfo(configured).isExecutable()) + return configured; + if (prompt) + { + QMessageBox::warning(this, "TTD Behavior", + QString("%1 is set to\n\n%2\n\nwhich is not an executable. Clear the setting to use " + "the extractor shipped with the debugger.") + .arg(kExtractorSetting, configured)); + } + return QString(); + } + + // Otherwise the copy CMake stages beside debuggercore. See core/ttdbehavior/README.md. + std::string pluginRoot = getenv("BN_STANDALONE_DEBUGGER") != nullptr + ? GetUserPluginDirectory() + : GetBundledPluginDirectory(); + QString bundled = + QDir(QString::fromStdString(pluginRoot)).filePath("ttdbehavior/x64/ttdcapa-extract.exe"); + if (QFileInfo(bundled).isExecutable()) + return bundled; if (!prompt) return QString(); - path = QFileDialog::getOpenFileName(this, "Locate the TTD API call extractor", QString(), + // Only reached if the install is incomplete, so let them point at one by hand. + QString path = QFileDialog::getOpenFileName(this, "Locate the TTD API call extractor", QString(), #ifdef WIN32 "Executables (*.exe);;All files (*)"); #else diff --git a/ui/ui.cpp b/ui/ui.cpp index 4e7e991f..28750d9a 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -2097,7 +2097,7 @@ void GlobalDebuggerUI::InitializeUI() "title" : "TTD Behavior Extractor Path", "type" : "string", "default" : "", - "description" : "Path of the executable that extracts Windows API calls from a TTD trace, used by the TTD Behavior sidebar.", + "description" : "Path of the executable that extracts Windows API calls from a TTD trace. Leave empty to use the one shipped with the debugger; set it to run a build of your own.", "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] })"); From 9a68432ddfee15ff1bf4cb89291decf12380e33c Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 15:29:29 -0400 Subject: [PATCH 18/24] Vendor the extractor as a flat ttd-extract folder The three files are a unit -- the executable reads the index from beside itself -- so nesting them under an architecture and putting a separate README outside that folder had it backwards. They now sit flat in core/ttd-extract/, staged to plugins/ttd-extract/, with the extractor's own reference doc as the folder's README. Provenance is stamped onto that README by CI rather than maintained by hand here, so it cannot drift from the binary it describes. Co-Authored-By: Claude Opus 5 (1M context) --- core/CMakeLists.txt | 11 ++++-- .../README.md} | 5 +++ .../x64 => ttd-extract}/ttdcapa-extract.exe | Bin 222208 -> 222208 bytes .../x64 => ttd-extract}/win32-index.bin | Bin core/ttdbehavior/README.md | 36 ------------------ ui/ttdbehaviorwidget.cpp | 4 +- 6 files changed, 14 insertions(+), 42 deletions(-) rename core/{ttdbehavior/x64/ttdcapa-extract.md => ttd-extract/README.md} (98%) rename core/{ttdbehavior/x64 => ttd-extract}/ttdcapa-extract.exe (99%) rename core/{ttdbehavior/x64 => ttd-extract}/win32-index.bin (100%) delete mode 100644 core/ttdbehavior/README.md diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 24839bf4..59a32acb 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -220,13 +220,16 @@ if (WIN32) ${LIBRARY_OUTPUT_DIRECTORY_PATH}/dbgeng ) - # The TTD behavior sidebar shells out to this rather than linking it in; see - # ttdbehavior/README.md for why, and for what it was built from. + # The TTD Behavior sidebar shells out to this rather than linking it in, so a fault + # replaying a hostile trace costs an extraction rather than the application. Built by + # CI from Vector35/ttd-capa; see ttd-extract/README.md, whose footer records the exact + # commit. The executable reads win32-index.bin from beside itself, so the folder is + # copied whole. add_custom_command(TARGET debuggercore PRE_LINK COMMAND ${CMAKE_COMMAND} -E echo "Copying TTD behavior extractor" COMMAND ${CMAKE_COMMAND} -E copy_directory - "${PROJECT_SOURCE_DIR}/ttdbehavior/" - ${LIBRARY_OUTPUT_DIRECTORY_PATH}/ttdbehavior + "${PROJECT_SOURCE_DIR}/ttd-extract/" + ${LIBRARY_OUTPUT_DIRECTORY_PATH}/ttd-extract ) endif() diff --git a/core/ttdbehavior/x64/ttdcapa-extract.md b/core/ttd-extract/README.md similarity index 98% rename from core/ttdbehavior/x64/ttdcapa-extract.md rename to core/ttd-extract/README.md index acd6296c..2168081f 100644 --- a/core/ttdbehavior/x64/ttdcapa-extract.md +++ b/core/ttd-extract/README.md @@ -284,3 +284,8 @@ Validate the magic and version, check the regions fit in the file, and map it. T string table once to a set of offsets, then compare `moduleStr`/`apiStr` as integers -- that is far cheaper than a string search, which is why scoped queries are faster than plain text ones. + +--- + +Built by CI from [Vector35/ttd-capa](https://github.com/Vector35/ttd-capa) +at `6cd27a2078a1ddd2149c710beef294502fcd1d72` (`ci-flat-artifact`) on 2026-07-30. diff --git a/core/ttdbehavior/x64/ttdcapa-extract.exe b/core/ttd-extract/ttdcapa-extract.exe similarity index 99% rename from core/ttdbehavior/x64/ttdcapa-extract.exe rename to core/ttd-extract/ttdcapa-extract.exe index 4b8f7b4d1941a1e134a56616d9887cca356544b5..f73fb7b92c9a6bef893fc8b2b63069077a14ea49 100644 GIT binary patch delta 121 zcmZoT!P{_xcY_2Y)6u2PQjG0VjEvi*7@54bSsh)Poy7nIOh6nC#4$IS7-Eitcnl0M zIUXQe1cyRw%lHKjXenr?OC0m=l_-sMm$T;EUT~ag!W;mq CVj^Jx delta 121 zcmZoT!P{_xcY_2Y)8_@vQjG0VjEvi*7@54bS$$rRoy7nIOh6nC#4$IS7-Eitcnl0M zIUXQe1cyRw%lHK`, so the sidebar passes the location of the -WinDbg install the debugger already manages -- the same folder `ui/ttdrecord.cpp` uses for -recording. Nothing needs copying. diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 79e11ec9..747c257d 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -857,12 +857,12 @@ QString TTDBehaviorWidget::extractorPath(bool prompt) return QString(); } - // Otherwise the copy CMake stages beside debuggercore. See core/ttdbehavior/README.md. + // Otherwise the copy CMake stages beside debuggercore. See core/ttd-extract/README.md. std::string pluginRoot = getenv("BN_STANDALONE_DEBUGGER") != nullptr ? GetUserPluginDirectory() : GetBundledPluginDirectory(); QString bundled = - QDir(QString::fromStdString(pluginRoot)).filePath("ttdbehavior/x64/ttdcapa-extract.exe"); + QDir(QString::fromStdString(pluginRoot)).filePath("ttd-extract/ttdcapa-extract.exe"); if (QFileInfo(bundled).isExecutable()) return bundled; From f132b390c47bdc5adcb4693502a466798a135d7f Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 16:04:51 -0400 Subject: [PATCH 19/24] Show a buffer's leading bytes in the table again Moving the parameter rendering into core dropped the buffer case, so a captured buffer showed only its pointer -- which tells you nothing, where the head of the bytes tells you at a glance what a WriteFile wrote. Co-Authored-By: Claude Opus 5 (1M context) --- core/ttdbehavior.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/core/ttdbehavior.cpp b/core/ttdbehavior.cpp index 41fc6da4..201c2ffd 100644 --- a/core/ttdbehavior.cpp +++ b/core/ttdbehavior.cpp @@ -81,6 +81,29 @@ namespace { return buf; } + + // Bytes a table cell can show before it stops being a glance. + constexpr size_t kMaxPreviewBytes = 32; + + std::string PreviewBytes(const std::vector& bytes) + { + static const char* digits = "0123456789abcdef"; + // Not std::min: windows.h defines a min macro and this file includes it. + size_t shown = bytes.size() < kMaxPreviewBytes ? bytes.size() : kMaxPreviewBytes; + std::string out; + out.reserve(shown * 3 + 4); + for (size_t i = 0; i < shown; ++i) + { + if (i != 0) + out.push_back(' '); + out.push_back(digits[bytes[i] >> 4]); + out.push_back(digits[bytes[i] & 0x0f]); + } + if (bytes.size() > shown) + out += " \xe2\x80\xa6"; // ellipsis + return out; + } + // Decimal, or hex when prefixed with 0x. bool ParseNumber(const std::string& text, uint64_t& out) { @@ -662,6 +685,12 @@ bool TTDBehaviorReport::GetCall(uint64_t index, TTDApiCall& out, bool withParams rendered += param.flags[f]; } } + else if (!param.bytes.empty()) + { + // Worth the width: the head of a buffer tells you at a glance what a + // WriteFile actually wrote, where the pointer alone tells you nothing. + rendered = FormatHex(param.value) + " -> [" + PreviewBytes(param.bytes) + "]"; + } else if (param.hasDeref) rendered = FormatHex(param.value) + " -> " + FormatHex(param.deref); else From db02e47ec7d13e809a36b9650bf9f0db313677cc Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 16:21:24 -0400 Subject: [PATCH 20/24] Remove the UI's orphaned parameter renderer Moving report rendering into the core left formatParamValue and its helpers behind with no callers. They looked live enough to reason from, which made the recently fixed buffer-preview regression read as two renderers drifting apart rather than one branch being dropped. Co-Authored-By: Claude Opus 5 --- ui/ttdbehaviorwidget.cpp | 45 ---------------------------------------- 1 file changed, 45 deletions(-) diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 747c257d..63690a0f 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -53,11 +53,6 @@ using namespace BinaryNinjaDebuggerAPI; // GlobalDebuggerUI::InitializeUI(). static const char* kExtractorSetting = "debugger.ttdBehaviorExtractorPath"; -// Values wider than a table cell can usefully show get elided here rather than in the -// view, so the copied text matches what is on screen. -static const int kMaxStringDisplay = 96; -static const int kMaxBytesDisplay = 32; - // The extractor captures up to 64 KiB per buffer, which is 4096 lines of hex dump -- // more than the detail pane can usefully show or lay out quickly. Clip the rendering, // not the data: the full bytes stay in the report. @@ -117,26 +112,6 @@ namespace { } - QString elide(const QString& str, int limit) - { - if (str.size() <= limit) - return str; - return str.left(limit) + QString::fromUtf8("\xe2\x80\xa6"); - } - - - QString bytesPreview(const QByteArray& bytes) - { - QByteArray head = bytes.left(kMaxBytesDisplay); - QString hex = QString::fromLatin1(head.toHex(' ')); - if (bytes.size() > head.size()) - hex += QString::fromUtf8(" \xe2\x80\xa6"); - return hex; - } - - - // One parameter, rendered the way it reads best given what the decoder recovered: - // a resolved string beats symbolic flags, which beat a raw value. QString formatPosition(const TTDApiCall& call) { return QString("%1:%2").arg(call.positionSequence, 0, 16).arg(call.positionSteps, 0, 16).toUpper(); @@ -149,26 +124,6 @@ namespace { } - QString formatParamValue(const TTDApiCallParam& param) - { - if (!param.str.empty()) - return QString("\"%1\"").arg( - elide(escapeString(QString::fromStdString(param.str)), kMaxStringDisplay)); - if (!param.flags.empty()) - { - QStringList names; - for (const std::string& flag : param.flags) - names.append(QString::fromStdString(flag)); - return names.join('|'); - } - if (!param.bytes.empty()) - return QString("%1 -> [%2]").arg(formatHex(param.value), bytesPreview(toByteArray(param.bytes))); - if (param.hasDeref) - return QString("%1 -> %2").arg(formatHex(param.value), formatHex(param.deref)); - return formatHex(param.value); - } - - // Where TTDReplay.dll and TTDReplayCPU.dll live. They are Microsoft's, shipped with // WinDbg rather than with us, so the extractor takes their location instead of // requiring copies beside itself. This is the same folder ttdrecord.cpp uses to find From fbc516d11662d17c2ae2b99cee72409e68951be5 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 16:29:23 -0400 Subject: [PATCH 21/24] Clean up CMake comments --- core/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 59a32acb..2d68e4e8 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -220,8 +220,7 @@ if (WIN32) ${LIBRARY_OUTPUT_DIRECTORY_PATH}/dbgeng ) - # The TTD Behavior sidebar shells out to this rather than linking it in, so a fault - # replaying a hostile trace costs an extraction rather than the application. Built by + # The TTD Behavior sidebar shells out to this rather than linking it in. Built by # CI from Vector35/ttd-capa; see ttd-extract/README.md, whose footer records the exact # commit. The executable reads win32-index.bin from beside itself, so the folder is # copied whole. From 8a25ba531eb5322989c78bc0852d4ecd322ae2da Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 16:39:00 -0400 Subject: [PATCH 22/24] Hide TTD behavior extraction off Windows, and document the feature Extraction replays the trace through Microsoft's TTD engine, so it only works on Windows. Reading a report is a memory-mapped file with no Windows dependency, so the sidebar, the API and the Python bindings work everywhere -- a report extracted on Windows opens on Linux and macOS. Co-Authored-By: Claude Opus 5 --- docs/guide/index.md | 5 ++ docs/guide/ttd-behavior.md | 180 +++++++++++++++++++++++++++++++++++++ ui/ttdbehaviorwidget.cpp | 10 ++- 3 files changed, 192 insertions(+), 3 deletions(-) create mode 100644 docs/guide/ttd-behavior.md diff --git a/docs/guide/index.md b/docs/guide/index.md index 78e2209c..67958315 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -621,6 +621,11 @@ See [Time Travel Debugging Guide (Windows)](dbgeng-ttd.md) See [Time Travel Debugging Guide (Linux)](gdbrsp-ttd.md) +### TTD Behavior + +See [TTD Behavior Guide](ttd-behavior.md) for extracting and querying the Windows API calls +a TTD trace made. + ### Windows Kernel Debugging See [Windows Kernel Debugging Guide](windows-kd.md) diff --git a/docs/guide/ttd-behavior.md b/docs/guide/ttd-behavior.md new file mode 100644 index 00000000..a105e452 --- /dev/null +++ b/docs/guide/ttd-behavior.md @@ -0,0 +1,180 @@ +# TTD Behavior + +While TTD already makes reverse engineering so much easier, we still want better ways to +help us analyze the program. The **TTD Behavior** feature sweeps a trace once and records +every Windows API call the process made -- when it happened, which function was called, +what its arguments were, and what it returned -- into a report you can then query, sort +through, and jump into. + +Arguments are decoded against Microsoft's Win32 API metadata, so they come back named and +typed rather than as four guessed registers: + +``` +kernel32!CreateFileW(lpFileName: "C:\Users\me\AppData\Local\Temp\x.dat", + dwDesiredAccess: GENERIC_WRITE, + dwCreationDisposition: CREATE_ALWAYS, ...) -> 0xf4 +``` + +## Platform support + +| | Windows | Linux | macOS | +| --- | --- | --- | --- | +| Extracting a report from a trace | Yes | No | No | +| Opening and querying a report | Yes | Yes | Yes | + +Extraction replays the trace through Microsoft's TTD engine, which only exists on Windows, +so the **Extract...** button is hidden elsewhere. Reading a report is just a memory-mapped +file with no Windows dependency at all, so a report extracted on Windows can be copied to a +Linux or macOS machine and opened there normally, in the UI or from Python. + +## Extracting a report + +1. Open the **TTD Behavior** sidebar. +2. Click **Extract...**. +3. If the current session is already replaying a trace, that trace is used. Otherwise you + are asked for a `.run` file. + +The report is written next to the trace as `.ttdb`. If the trace sits somewhere +unwritable you are asked where to put it instead. + +Extraction runs in the background. A progress bar shows elapsed and estimated remaining +time, and **Cancel** stops the sweep while keeping everything recorded so far -- a +cancelled run produces a complete, valid report covering the portion of the trace that has +been processed. + +The extraction is quite performant, and generally faster than running multiple TTD Calls +queries in the old way. + +## Loading a report + +**Load Report...** opens any `.ttdb` file. Loading is a memory map rather than a parse, so +it is effectively instant regardless of report size. + +## Reading the table + +| Column | Meaning | +| --- | --- | +| `#` | index of the call within the report | +| `Position` | TTD position, `sequence:step` | +| `TID` | thread that made the call | +| `Module` | module the function was resolved in, e.g. `kernel32` | +| `Function` | function name | +| `Parameters` | decoded arguments | +| `Return` | return value | +| `Return Address` | the call site -- useful for isolating calls the sample made itself | + +Selecting a row shows the full detail below the table, including a hex dump of any buffer +argument. Buffer arguments also appear inline in the table as `0x1eefd98 -> [4d 5a 90 00 +…]`, so you can see at a glance what a `WriteFile` actually wrote. + +**Double-clicking a row time travels to that call and navigates to the instruction pointer +at that position**, which requires an active TTD session on the same trace. + +## Querying + +The filter box takes terms combined with AND. A bare word matches anywhere in the row, +including buffer contents. + +| Term | Matches | +| --- | --- | +| `module:kernel32` | exact module, so `ntdll!WriteFile` is excluded | +| `api:WriteFile` | exact function name | +| `api:Reg*` | trailing `*` matches a prefix | +| `tid:4` | thread id | +| `ret:!0` | return value; also `>` `>=` `<` `<=` and `10-20` ranges | +| `retaddr:0x400000-0x500000` | call site within a range | +| `"c:\windows"` | quoted phrase | + +Values may be decimal or `0x` hex. An unrecognised prefix is treated as text, so +`foo:bar` searches for that literal string rather than erroring. + +Queries run inside the core over the whole report; a full scan of a 3.4M-call report takes +60-190 ms, so results appear as you type. + +Each tab holds its own query. Use **+** to open another, which lets you keep one view of +`api:CreateFileW` beside another of `module:ws2_32` rather than retyping. + +## Settings + +| Setting | Default | Effect | +| --- | --- | --- | +| `debugger.ttdBehaviorExtractorPath` | empty | Path to the extractor executable. Empty uses the one shipped with the debugger; set it to run a build of your own. | +| `debugger.ttdBehaviorMaxBuffer` | 65536 | Bytes kept from any one buffer argument. Longer buffers are captured as a prefix and marked truncated. | + +## The Python API + +Reports can be opened and queried from Python on any platform. The API is read-only; +extraction is not currently exposed, so producing a report is a UI operation (or a direct +invocation of the extractor -- see [below](#running-the-extractor-directly)). + +```python +from debugger import TTDBehaviorReport + +with TTDBehaviorReport(r"C:\traces\sample.ttdb") as report: + print(f"{report.call_count} calls from pid {report.pid}, {report.architecture}") + + for call in report.query("api:CreateFileW"): + name = call.params[0].str if call.params else "?" + print(f"{call.position} {name} -> {call.ret:#x}") +``` + +`query()` filters entirely inside the core and returns matching rows, decoding each one +only as you reach it. Iterating a multi-million-call report one call at a time is possible +but slow -- narrow with a query first. + +Calls come back with parameters decoded. On a query matching millions of rows that is +worth turning off: + +```python +for call in report.query("", with_params=False): + print(call.param_summary) # still populated; the structured list is skipped +``` + +Useful members: + +| | | +| --- | --- | +| `report.call_count`, `report.decoded_count` | totals; `decoded_count` counts calls that had a real signature | +| `report.pid`, `report.trace_path`, `report.architecture` | provenance | +| `report.query_indices(q)` | just the row indices | +| `report.get_call(i)` | one call by index; `report[i]` also works | +| `call.module`, `call.api`, `call.tid`, `call.ret`, `call.return_address` | the call | +| `call.position` | `sequence:step` as a string | +| `call.params` | list of `TTDApiCallParam` | +| `param.name`, `.type`, `.kind`, `.value`, `.str`, `.flags`, `.bytes` | one argument | +| `param.truncated` | whether `bytes` is a prefix of a larger buffer | + +## What the data can and cannot tell you + +**An accessible buffer is not guaranteed to be extracted.** Due to the specific way the +extractor works (and some complex TTD shenanigans), buffers and strings that are indeed +readable may not always be properly recorded. This is a known limitation. When that +happens, time travelling to the timestamp yourself will read them fine. + +**Calls without a signature have guessed arguments.** Metadata coverage is the public +Windows SDK, so `ntdll` internals and CRT helpers fall back to capturing argument registers +(x64) or stack slots (x86). Those values are positional, unnamed, and the count is a guess. +Such calls are flagged in the report and counted by `decoded_count`. + +**Buffers are captured up to a limit.** See `debugger.ttdBehaviorMaxBuffer` above. A +truncated buffer still records its true length, so a short buffer is distinguishable from a +cut-off one. + +## Running the extractor directly + +The extractor ships with the debugger at `ttd-extract/ttdcapa-extract.exe` under the plugin +directory, alongside the `win32-index.bin` metadata it reads from beside itself. It is a +normal command-line tool and can be run without Binary Ninja: + +``` +ttdcapa-extract.exe trace.run -b report.ttdb --ttd-dlls \amd64\ttd +``` + +`TTDReplay.dll` and `TTDReplayCPU.dll` are Microsoft's, ship with WinDbg, and are not +redistributed with the debugger -- `--ttd-dlls` points at the copy WinDbg installed. Full +option reference and the `.ttdb` format specification are in `ttd-extract/README.md`. + +The extractor is built by CI from +[Vector35/ttd-capa](https://github.com/Vector35/ttd-capa), a fork of +[HullaBrian/ttd-capa](https://github.com/HullaBrian/ttd-capa). The README's footer records +the exact commit the shipped binary was built from. diff --git a/ui/ttdbehaviorwidget.cpp b/ui/ttdbehaviorwidget.cpp index 63690a0f..e09ee12f 100644 --- a/ui/ttdbehaviorwidget.cpp +++ b/ui/ttdbehaviorwidget.cpp @@ -19,9 +19,9 @@ limitations under the License. // captured buffers, and [Out] parameters re-read at the call's return position. // // The sweep itself is done out-of-process by an extractor built on the TTD replay SDK -// (https://github.com/HullaBrian/ttd-capa), which writes a JSON report this widget -// parses. Extraction takes seconds even on large traces, so it is not on the critical -// path of a debug session. +// (https://github.com/Vector35/ttd-capa), which writes a .ttdb report that the core +// memory-maps. Extraction takes minutes on a large trace, so it runs in the background +// rather than on the critical path of a debug session. #include "ttdbehaviorwidget.h" @@ -496,6 +496,10 @@ void TTDBehaviorWidget::setupUI() m_extractButton = new QPushButton("Extract..."); m_extractButton->setToolTip("Run the extractor over a TTD trace and load the result"); toolbar->addWidget(m_extractButton); +#ifndef WIN32 + // Extraction replays the trace through WinDbg TTD, which only works on Windows + m_extractButton->setVisible(false); +#endif toolbar->addStretch(1); layout->addLayout(toolbar); From 306f8832bf6053dfe66e3f4aae866beec7574e7b Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 17:00:24 -0400 Subject: [PATCH 23/24] Allow TTD behavior extraction from the Python API extract() runs the same sweep the sidebar does, resolving the extractor and WinDbg's replay DLLs the same way, and returns the opened report. A progress callback follows the sweep and can cancel it, which keeps the calls recorded so far. The two TTD behavior settings move from the UI to the core, since a headless script has to be able to configure them. Co-Authored-By: Claude Opus 5 --- api/python/ttdbehavior.py | 226 ++++++++++++++++++++++++++++++++++++- core/debugger.cpp | 22 ++++ docs/guide/ttd-behavior.md | 45 ++++++-- ui/ui.cpp | 22 ---- 4 files changed, 284 insertions(+), 31 deletions(-) diff --git a/api/python/ttdbehavior.py b/api/python/ttdbehavior.py index dd25146e..5ba92965 100644 --- a/api/python/ttdbehavior.py +++ b/api/python/ttdbehavior.py @@ -33,15 +33,29 @@ Calls come back with their parameters decoded. On a query matching millions of rows that is worth turning off with ``with_params=False``, which leaves ``param_summary`` but skips building the structured list. + +``extract`` produces a report from a trace, which requires Windows -- see its docstring. """ import ctypes +import os +import subprocess from dataclasses import dataclass, field -from typing import Iterator, List, Optional, Sequence +from typing import Callable, Iterator, List, Optional, Sequence + +import binaryninja +from binaryninja.settings import Settings from . import _debuggercore as dbgcore -__all__ = ["TTDBehaviorReport", "TTDApiCall", "TTDApiCallParam"] +__all__ = [ + "TTDBehaviorReport", + "TTDApiCall", + "TTDApiCallParam", + "extract", + "extractor_path", + "ttd_replay_directory", +] @dataclass @@ -250,6 +264,214 @@ def _convert_param(raw) -> TTDApiCallParam: return param +_EXTRACTOR_SETTING = "debugger.ttdBehaviorExtractorPath" +_MAX_BUFFER_SETTING = "debugger.ttdBehaviorMaxBuffer" + + +def _setting(key: str, getter: str): + """A setting's value, or None if the debugger did not register it. + + The TTD settings only exist on Windows, so reading them unguarded would raise on the + platforms where extraction is unavailable anyway. + """ + settings = Settings() + if not settings.contains(key): + return None + return getattr(settings, getter)(key) + + +def _plugin_root() -> str: + return ( + binaryninja.user_plugin_path() + if os.environ.get("BN_STANDALONE_DEBUGGER") is not None + else binaryninja.bundled_plugin_path() + ) + + +def extractor_path() -> Optional[str]: + """The extractor the debugger would run, or None if there is not one. + + A path configured in ``debugger.ttdBehaviorExtractorPath`` wins outright, so someone + running their own build always gets it; a configured path that is not a file raises + rather than quietly falling back, since reporting results from a different binary than + you think you are running is worse than failing. + """ + configured = _setting(_EXTRACTOR_SETTING, "get_string") + if configured: + if os.path.isfile(configured): + return configured + raise RuntimeError( + "%s is set to %r, which is not a file. Clear the setting to use the extractor " + "shipped with the debugger." % (_EXTRACTOR_SETTING, configured)) + + bundled = os.path.join(_plugin_root(), "ttd-extract", "ttdcapa-extract.exe") + return bundled if os.path.isfile(bundled) else None + + +def ttd_replay_directory() -> Optional[str]: + """Where ``TTDReplay.dll`` lives, or None if it cannot be found. + + Those DLLs are Microsoft's and ship with WinDbg rather than with us, so the extractor + is pointed at them instead of carrying copies. None is not fatal: the extractor then + falls back to the ordinary DLL search order. + """ + def has_replay(directory: Optional[str]) -> bool: + return bool(directory) and os.path.isfile(os.path.join(directory, "TTDReplay.dll")) + + # A configured DbgEng path is authoritative: if it is set and wrong, fall through to + # the extractor's own search rather than silently using a different engine. + configured = _setting("debugger.x64dbgEngPath", "get_string") + if configured: + path = os.path.join(configured, "TTD") + return path if has_replay(path) else None + + bundled = os.path.join(_plugin_root(), "dbgeng", "amd64", "TTD") + return bundled if has_replay(bundled) else None + + +def extract( + trace: str, + output: Optional[str] = None, + *, + extractor: Optional[str] = None, + ttd_dlls: Optional[str] = None, + max_buffer: Optional[int] = None, + progress: Optional[Callable[[str, float, int], bool]] = None, +) -> TTDBehaviorReport: + """Sweep a TTD trace for the Windows API calls it made and open the resulting report. + + **Windows only.** The sweep replays the trace through Microsoft's TTD engine, which + exists nowhere else. Reading a report has no such restriction, so one produced here + opens on any platform. + + >>> from debugger.ttdbehavior import extract + >>> report = extract(r"C:\\traces\\sample.run") + >>> print(report.call_count) + + The report is written beside the trace as ``.ttdb`` unless ``output`` says + otherwise. An existing file at that path is overwritten. + + ``progress`` is called as ``progress(phase, percent, calls)``, where ``phase`` is + ``"sweep"`` or ``"write"``. It fires a few times a second during the sweep, and once + when each phase begins -- writing the report is a large part of the wall clock but + reports no percentage of its own, so that transition is the only notice of it. + Returning False cancels: the extractor stops replaying and writes what it has, so a + cancelled run still yields a complete, valid report of a shorter prefix of the trace. + + >>> def show(phase, percent, calls): + ... print(f"{phase} {percent}% {calls} calls") + ... return calls < 1_000_000 # stop once we have a million + >>> report = extract("sample.run", progress=show) + + ``extractor``, ``ttd_dlls`` and ``max_buffer`` default to the same values the sidebar + uses -- respectively ``debugger.ttdBehaviorExtractorPath`` or the bundled copy, the + replay DLLs beside the configured DbgEng, and ``debugger.ttdBehaviorMaxBuffer``. + + Raises RuntimeError if no extractor can be found or the sweep fails, and IOError if + the trace does not exist. + """ + trace = os.path.abspath(trace) + if not os.path.isfile(trace): + raise IOError("no such trace: %s" % trace) + + output = os.path.abspath(output if output else os.path.splitext(trace)[0] + ".ttdb") + + if extractor is None: + extractor = extractor_path() + if extractor is None: + raise RuntimeError( + "no TTD behavior extractor found. It ships with the debugger on Windows; on " + "other platforms reports can be opened but not produced. Set %s to point at a " + "build of your own." % _EXTRACTOR_SETTING) + if not os.path.isfile(extractor): + raise RuntimeError("not a TTD behavior extractor: %s" % extractor) + + command = [extractor, trace, "-b", output, "--progress"] + + if ttd_dlls is None: + ttd_dlls = ttd_replay_directory() + if ttd_dlls: + command += ["--ttd-dlls", ttd_dlls] + + if max_buffer is None: + max_buffer = _setting(_MAX_BUFFER_SETTING, "get_integer") + if max_buffer is not None: + command += ["--max-buffer", str(int(max_buffer))] + + if progress is not None: + command.append("--cancel-on-stdin") + + process = subprocess.Popen( + command, + stdin=subprocess.PIPE if progress is not None else subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.PIPE, + text=True, + bufsize=1, + # Otherwise a script flashes up a console window on every call. + creationflags=getattr(subprocess, "CREATE_NO_WINDOW", 0), + ) + + phase = "sweep" + percent = 0.0 + calls = 0 + cancelled = False + # Only the tail is kept: a failing run can be chatty, and the last lines are the ones + # that say why. + tail: List[str] = [] + + def report_progress() -> None: + nonlocal cancelled + if progress is None or cancelled: + return + if progress(phase, percent, calls) is not False: + return + cancelled = True + try: + process.stdin.write("cancel\n") + process.stdin.flush() + except OSError: + pass # already gone; the sweep is ending anyway + + for line in process.stderr: + line = line.strip() + if not line: + continue + + if line.startswith("[phase]"): + parts = line.split(None, 1) + if len(parts) > 1: + phase = parts[1] + # Announced rather than waited on: the extractor only emits [progress] + # during the sweep, so without this a caller would never learn that + # writing had started, and writing is a large part of the wall clock. + report_progress() + continue + + if line.startswith("[progress]"): + parts = line.split() + try: + # The percentage is fractional, e.g. "[progress] 5.10 160". + percent, calls = float(parts[1]), int(parts[2]) + except (IndexError, ValueError): + continue + report_progress() + continue + + tail.append(line) + del tail[:-20] + + process.wait() + if process.stdin: + process.stdin.close() + + if process.returncode != 0: + raise RuntimeError( + "extraction failed (exit %d):\n%s" % (process.returncode, "\n".join(tail))) + + return TTDBehaviorReport(output) + + def modules(report: TTDBehaviorReport) -> Sequence[str]: """Every distinct module seen in the report, in first-call order. diff --git a/core/debugger.cpp b/core/debugger.cpp index d37ef548..4e4c85a0 100644 --- a/core/debugger.cpp +++ b/core/debugger.cpp @@ -126,6 +126,28 @@ static void RegisterSettings() "enumDescriptions" : ["Windows Native - lightweight native Windows debug API adapter", "DbgEng - Windows Debugger Engine (WinDbg) based adapter"], "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] })"); + + // Registered here rather than in the UI because extraction is driven from the Python + // API too, and a headless script has to be able to configure it. + settings->RegisterSetting("debugger.ttdBehaviorExtractorPath", + R"({ + "title" : "TTD Behavior Extractor Path", + "type" : "string", + "default" : "", + "description" : "Path of the executable that extracts Windows API calls from a TTD trace. Leave empty to use the one shipped with the debugger; set it to run a build of your own.", + "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] + })"); + + settings->RegisterSetting("debugger.ttdBehaviorMaxBuffer", + R"({ + "title" : "TTD Behavior Buffer Capture Limit", + "type" : "number", + "default" : 65536, + "minValue" : 0, + "maxValue" : 16777216, + "description" : "Bytes to keep from any one buffer parameter when extracting API calls from a TTD trace. Buffers longer than this are captured as a prefix and marked as truncated. Buffer parameters are a small fraction of the calls in a typical trace, so this has far less effect on report size than it appears.", + "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] + })"); #endif settings->RegisterSetting("debugger.stackVariableAnnotations", diff --git a/docs/guide/ttd-behavior.md b/docs/guide/ttd-behavior.md index a105e452..dae610ce 100644 --- a/docs/guide/ttd-behavior.md +++ b/docs/guide/ttd-behavior.md @@ -103,21 +103,49 @@ Each tab holds its own query. Use **+** to open another, which lets you keep one ## The Python API -Reports can be opened and queried from Python on any platform. The API is read-only; -extraction is not currently exposed, so producing a report is a UI operation (or a direct -invocation of the extractor -- see [below](#running-the-extractor-directly)). +Reports can be opened and queried from Python on any platform, and extracted from Python +on Windows. ```python -from debugger import TTDBehaviorReport +from debugger.ttdbehavior import TTDBehaviorReport with TTDBehaviorReport(r"C:\traces\sample.ttdb") as report: print(f"{report.call_count} calls from pid {report.pid}, {report.architecture}") for call in report.query("api:CreateFileW"): - name = call.params[0].str if call.params else "?" + name = call.params[0].string if call.params else "?" print(f"{call.position} {name} -> {call.ret:#x}") ``` +### Extracting + +`extract()` runs the same sweep the **Extract...** button does, with the same defaults -- +the configured or bundled extractor, WinDbg's replay DLLs, and +`debugger.ttdBehaviorMaxBuffer`. It writes the report beside the trace and returns it +open: + +```python +from debugger.ttdbehavior import extract + +report = extract(r"C:\traces\sample.run") +print(f"{report.call_count} calls -> {report.path}") +``` + +Pass `progress` to follow along. It is called a few times a second with the phase +(`"sweep"` or `"write"`), a percentage, and the running call count; returning `False` +cancels, which stops the replay and writes what has been recorded so far: + +```python +def show(phase, percent, calls): + print(f"{phase} {percent}% ({calls} calls)") + return calls < 1_000_000 # stop once we have a million + +report = extract(r"C:\traces\sample.run", progress=show) +``` + +`output`, `extractor`, `ttd_dlls` and `max_buffer` override the corresponding defaults. +Off Windows, `extract()` raises `RuntimeError` -- there is no replay engine to sweep with. + `query()` filters entirely inside the core and returns matching rows, decoding each one only as you reach it. Iterating a multi-million-call report one call at a time is possible but slow -- narrow with a query first. @@ -136,13 +164,16 @@ Useful members: | --- | --- | | `report.call_count`, `report.decoded_count` | totals; `decoded_count` counts calls that had a real signature | | `report.pid`, `report.trace_path`, `report.architecture` | provenance | +| `report.path` | the `.ttdb` file this was opened from | | `report.query_indices(q)` | just the row indices | | `report.get_call(i)` | one call by index; `report[i]` also works | | `call.module`, `call.api`, `call.tid`, `call.ret`, `call.return_address` | the call | | `call.position` | `sequence:step` as a string | +| `call.decoded` | whether a real signature backed the parameters | | `call.params` | list of `TTDApiCallParam` | -| `param.name`, `.type`, `.kind`, `.value`, `.str`, `.flags`, `.bytes` | one argument | -| `param.truncated` | whether `bytes` is a prefix of a larger buffer | +| `param.name`, `.type`, `.kind`, `.value` | one argument | +| `param.string`, `.flags`, `.data` | its resolved string, symbolic flags, or captured buffer | +| `param.truncated` | whether `data` is a prefix of a larger buffer | ## What the data can and cannot tell you diff --git a/ui/ui.cpp b/ui/ui.cpp index 28750d9a..0e6e380f 100644 --- a/ui/ui.cpp +++ b/ui/ui.cpp @@ -2090,28 +2090,6 @@ void DebuggerUI::updateUI(const DebuggerEvent& event) void GlobalDebuggerUI::InitializeUI() { - // The TTD Behavior sidebar shells out to an extractor that is built and deployed - // separately from the debugger, so its location has to be configurable. - Settings::Instance()->RegisterSetting("debugger.ttdBehaviorExtractorPath", - R"({ - "title" : "TTD Behavior Extractor Path", - "type" : "string", - "default" : "", - "description" : "Path of the executable that extracts Windows API calls from a TTD trace. Leave empty to use the one shipped with the debugger; set it to run a build of your own.", - "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] - })"); - - Settings::Instance()->RegisterSetting("debugger.ttdBehaviorMaxBuffer", - R"({ - "title" : "TTD Behavior Buffer Capture Limit", - "type" : "number", - "default" : 65536, - "minValue" : 0, - "maxValue" : 16777216, - "description" : "Bytes to keep from any one buffer parameter when extracting API calls from a TTD trace. Buffers longer than this are captured as a prefix and marked as truncated. Buffer parameters are a small fraction of the calls in a typical trace, so this has far less effect on report size than it appears.", - "ignore" : ["SettingsProjectScope", "SettingsResourceScope"] - })"); - Sidebar::addSidebarWidgetType(new DebuggerWidgetType(QImage(":/debugger/debugger"), "Debugger")); Sidebar::addSidebarWidgetType(new DebugModulesSidebarWidgetType()); Sidebar::addSidebarWidgetType(new DebugMemoryMapSidebarWidgetType()); From 6eceb06e58ef0765548a5ab0ce5533eaf95ba892 Mon Sep 17 00:00:00 2001 From: Xusheng Date: Thu, 30 Jul 2026 17:07:45 -0400 Subject: [PATCH 24/24] Add a screenshot to the TTD behavior guide Co-Authored-By: Claude Opus 5 --- docs/guide/ttd-behavior.md | 2 ++ docs/img/debugger/ttd_behavior_widget.png | Bin 0 -> 104742 bytes 2 files changed, 2 insertions(+) create mode 100644 docs/img/debugger/ttd_behavior_widget.png diff --git a/docs/guide/ttd-behavior.md b/docs/guide/ttd-behavior.md index dae610ce..f3cb9abe 100644 --- a/docs/guide/ttd-behavior.md +++ b/docs/guide/ttd-behavior.md @@ -6,6 +6,8 @@ every Windows API call the process made -- when it happened, which function was what its arguments were, and what it returned -- into a report you can then query, sort through, and jump into. + + Arguments are decoded against Microsoft's Win32 API metadata, so they come back named and typed rather than as four guessed registers: diff --git a/docs/img/debugger/ttd_behavior_widget.png b/docs/img/debugger/ttd_behavior_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..5b64d9cfd1017add357d91e00b4c7a4ed58c782c GIT binary patch literal 104742 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 z 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

hT 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 c