[llvm-branch-commits] [flang] [llvm] [Flang] KIND De-templatization (PR #216960)
Michael Kruse via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Oct 2 05:41:58 PDT 2026
https://github.com/Meinersbur updated https://github.com/llvm/llvm-project/pull/216960
>From c28b6b64e094ced1f88077717f63cb440e5d354d Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Wed, 19 Aug 2026 09:14:49 +0200
Subject: [PATCH 01/13] [Flang] KIND-Detemplatization
---
flang/CMakeLists.txt | 1 +
flang/include/flang/Common/template.h | 32 -
flang/include/flang/Evaluate/call.h | 25 +-
flang/include/flang/Evaluate/char.h | 88 ---
.../include/flang/Evaluate/characteristics.h | 3 +-
flang/include/flang/Evaluate/common.h | 7 +
flang/include/flang/Evaluate/complex-value.h | 2 +-
flang/include/flang/Evaluate/complex.h | 141 ----
flang/include/flang/Evaluate/constant.h | 108 +++-
flang/include/flang/Evaluate/expression.h | 417 ++++++++----
.../include/flang/Evaluate/fold-designator.h | 10 +-
flang/include/flang/Evaluate/fold.h | 29 +-
flang/include/flang/Evaluate/initial-image.h | 18 +-
flang/include/flang/Evaluate/logical.h | 128 ----
flang/include/flang/Evaluate/match.h | 17 +-
flang/include/flang/Evaluate/rewrite.h | 19 +-
flang/include/flang/Evaluate/shape.h | 22 +-
flang/include/flang/Evaluate/static-data.h | 1 +
flang/include/flang/Evaluate/tools.h | 234 ++++---
flang/include/flang/Evaluate/type.h | 261 +++++---
flang/include/flang/Evaluate/variable.h | 52 +-
flang/include/flang/Lower/DirectivesCommon.h | 19 +-
flang/include/flang/Lower/Mangler.h | 19 +-
flang/include/flang/Lower/Support/Utils.h | 16 +-
flang/include/flang/Semantics/dump-expr.h | 6 +-
flang/include/flang/Semantics/scope.h | 3 +-
flang/include/flang/Semantics/type.h | 2 +
flang/lib/Evaluate/CMakeLists.txt | 11 +-
flang/lib/Evaluate/call.cpp | 3 +-
flang/lib/Evaluate/character.h | 40 +-
flang/lib/Evaluate/characteristics.cpp | 8 +-
flang/lib/Evaluate/check-expression.cpp | 30 +-
flang/lib/Evaluate/common.cpp | 6 +
flang/lib/Evaluate/complex.cpp | 136 ----
flang/lib/Evaluate/constant.cpp | 96 +--
flang/lib/Evaluate/expression.cpp | 127 ++--
flang/lib/Evaluate/fold-character.cpp | 83 +--
flang/lib/Evaluate/fold-complex.cpp | 37 +-
flang/lib/Evaluate/fold-designator.cpp | 26 +-
flang/lib/Evaluate/fold-implementation.h | 593 ++++++++++-------
flang/lib/Evaluate/fold-integer.cpp | 610 ++++++++++--------
flang/lib/Evaluate/fold-logical.cpp | 558 ++++++----------
flang/lib/Evaluate/fold-matmul.h | 11 +-
flang/lib/Evaluate/fold-real.cpp | 169 ++---
flang/lib/Evaluate/fold-reduction.cpp | 5 +-
flang/lib/Evaluate/fold-reduction.h | 99 +--
flang/lib/Evaluate/fold.cpp | 8 +-
flang/lib/Evaluate/formatting.cpp | 71 +-
flang/lib/Evaluate/host.h | 82 ++-
flang/lib/Evaluate/initial-image.cpp | 28 +-
flang/lib/Evaluate/int-power.h | 10 +-
flang/lib/Evaluate/intrinsics-library.cpp | 16 +-
flang/lib/Evaluate/logical.cpp | 17 -
flang/lib/Evaluate/real-value-impl.cpp | 4 +
flang/lib/Evaluate/shape.cpp | 94 +--
flang/lib/Evaluate/static-data.cpp | 6 +
flang/lib/Evaluate/target.cpp | 38 +-
flang/lib/Evaluate/tools.cpp | 371 +++++------
flang/lib/Evaluate/type.cpp | 26 +-
flang/lib/Evaluate/variable.cpp | 39 +-
flang/lib/Lower/Bridge.cpp | 3 +-
flang/lib/Lower/CallInterface.cpp | 5 +-
flang/lib/Lower/ConvertArrayConstructor.cpp | 36 +-
flang/lib/Lower/ConvertConstant.cpp | 187 +++---
flang/lib/Lower/ConvertExprToHLFIR.cpp | 211 +++---
flang/lib/Lower/ConvertType.cpp | 40 +-
flang/lib/Lower/OpenMP/Atomic.cpp | 7 +-
flang/lib/Lower/OpenMP/OpenMP.cpp | 4 +-
flang/lib/Lower/Support/Utils.cpp | 233 +++----
flang/lib/Semantics/check-call.cpp | 2 +-
flang/lib/Semantics/check-case.cpp | 40 +-
flang/lib/Semantics/check-coarray.cpp | 2 +-
flang/lib/Semantics/check-data.cpp | 2 +-
flang/lib/Semantics/check-io.h | 7 +-
flang/lib/Semantics/check-omp-atomic.cpp | 29 +-
flang/lib/Semantics/check-omp-structure.cpp | 2 +-
flang/lib/Semantics/data-to-inits.cpp | 4 +-
flang/lib/Semantics/dump-expr.cpp | 9 +-
flang/lib/Semantics/expression.cpp | 179 ++---
flang/lib/Semantics/openmp-utils.cpp | 4 +-
flang/lib/Semantics/pointer-assignment.cpp | 4 +-
flang/lib/Semantics/resolve-names-utils.cpp | 6 +-
flang/lib/Semantics/resolve-names.cpp | 39 +-
flang/lib/Semantics/runtime-type-info.cpp | 86 +--
flang/lib/Semantics/scope.cpp | 9 +-
flang/lib/Semantics/semantics.cpp | 4 +-
flang/lib/Semantics/type.cpp | 20 +-
flang/test/Evaluate/fold-ibits.f90 | 29 +
.../test/Evaluate/fold-real-storage-size.f90 | 24 +
.../Evaluate/fold-real10-storage-size.f90 | 42 ++
flang/test/Lower/constant-literal-kinds.f90 | 63 ++
flang/test/Semantics/modfile86.f90 | 18 +
flang/unittests/CMakeLists.txt | 8 +
flang/unittests/Evaluate/expression.cpp | 23 +-
flang/unittests/Evaluate/folding.cpp | 27 +-
flang/unittests/Evaluate/intrinsics.cpp | 202 +++---
flang/unittests/Evaluate/logical.cpp | 57 +-
flang/unittests/Evaluate/real.cpp | 17 +-
98 files changed, 3526 insertions(+), 3296 deletions(-)
delete mode 100644 flang/include/flang/Evaluate/char.h
delete mode 100644 flang/include/flang/Evaluate/complex.h
delete mode 100644 flang/include/flang/Evaluate/logical.h
delete mode 100644 flang/lib/Evaluate/complex.cpp
delete mode 100644 flang/lib/Evaluate/logical.cpp
create mode 100644 flang/test/Evaluate/fold-real-storage-size.f90
create mode 100644 flang/test/Evaluate/fold-real10-storage-size.f90
create mode 100644 flang/test/Lower/constant-literal-kinds.f90
create mode 100644 flang/test/Semantics/modfile86.f90
diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt
index 0c5a690f8712fd..5a3b7c1d378bea 100644
--- a/flang/CMakeLists.txt
+++ b/flang/CMakeLists.txt
@@ -301,6 +301,7 @@ endif()
set(LLVM_BUILD_TOOLS ON)
include_directories(BEFORE
+ ${FLANG_BINARY_DIR}/include/object-sizes/$<CONFIG>
${FLANG_BINARY_DIR}/include
${FLANG_SOURCE_DIR}/include)
diff --git a/flang/include/flang/Common/template.h b/flang/include/flang/Common/template.h
index 593a8ba804a608..80511954f4fc41 100644
--- a/flang/include/flang/Common/template.h
+++ b/flang/include/flang/Common/template.h
@@ -316,37 +316,5 @@ struct type_index<Target, List<Ts...>> {
template <typename Target, typename List>
inline constexpr std::size_t type_index_v = type_index<Target, List>::value;
-// Given a VISITOR class of the general form
-// struct VISITOR {
-// using Result = ...;
-// using Types = std::tuple<...>;
-// template<typename T> Result Test() { ... }
-// };
-// SearchTypes will traverse the element types in the tuple in order
-// and invoke VISITOR::Test<T>() on each until it returns a value that
-// casts to true. If no invocation of Test succeeds, SearchTypes will
-// return a default value.
-template <std::size_t J, typename VISITOR>
-common::IfNoLvalue<typename VISITOR::Result, VISITOR> SearchTypesHelper(
- VISITOR &&visitor, typename VISITOR::Result &&defaultResult) {
- using Tuple = typename VISITOR::Types;
- if constexpr (J < std::tuple_size_v<Tuple>) {
- if (auto result{visitor.template Test<std::tuple_element_t<J, Tuple>>()}) {
- return result;
- }
- return SearchTypesHelper<J + 1, VISITOR>(
- std::move(visitor), std::move(defaultResult));
- } else {
- return std::move(defaultResult);
- }
-}
-
-template <typename VISITOR>
-common::IfNoLvalue<typename VISITOR::Result, VISITOR> SearchTypes(
- VISITOR &&visitor,
- typename VISITOR::Result defaultResult = typename VISITOR::Result{}) {
- return SearchTypesHelper<0, VISITOR>(
- std::move(visitor), std::move(defaultResult));
-}
} // namespace Fortran::common
#endif // FORTRAN_COMMON_TEMPLATE_H_
diff --git a/flang/include/flang/Evaluate/call.h b/flang/include/flang/Evaluate/call.h
index f04ec6c373c88d..5001fbc85920e4 100644
--- a/flang/include/flang/Evaluate/call.h
+++ b/flang/include/flang/Evaluate/call.h
@@ -296,6 +296,11 @@ struct SpecificIntrinsic {
};
struct ProcedureDesignator {
+ static int kind() {
+ llvm_unreachable("This class has no kind");
+ return 0;
+ }
+
EVALUATE_UNION_CLASS_BOILERPLATE(ProcedureDesignator)
explicit ProcedureDesignator(SpecificIntrinsic &&i) : u{std::move(i)} {}
explicit ProcedureDesignator(const Symbol &n) : u{n} {}
@@ -333,6 +338,11 @@ using Chevrons = std::vector<Expr<SomeType>>;
class ProcedureRef {
public:
+ static int kind() {
+ llvm_unreachable("This class has no kind");
+ return 0;
+ }
+
CLASS_BOILERPLATE(ProcedureRef)
ProcedureRef(ProcedureDesignator &&p, ActualArguments &&a,
bool hasAlternateReturns = false)
@@ -393,15 +403,19 @@ class ProcedureRef {
template <typename A> class FunctionRef : public ProcedureRef {
public:
+ constexpr int kind() const { return kind_; }
+
using Result = A;
CLASS_BOILERPLATE(FunctionRef)
- explicit FunctionRef(ProcedureRef &&pr) : ProcedureRef{std::move(pr)} {}
- FunctionRef(ProcedureDesignator &&p, ActualArguments &&a)
- : ProcedureRef{std::move(p), std::move(a)} {}
+
+ explicit FunctionRef(int kind, ProcedureRef &&pr)
+ : ProcedureRef{std::move(pr)}, kind_{kind} {}
+ FunctionRef(int kind, ProcedureDesignator &&p, ActualArguments &&a)
+ : ProcedureRef{std::move(p), std::move(a)}, kind_{kind} {}
std::optional<DynamicType> GetType() const {
if constexpr (IsLengthlessIntrinsicType<A>) {
- return A::GetType();
+ return DynamicType{A::category, kind_};
} else if (auto type{proc_.GetType()}) {
// TODO: Non constant explicit length parameters of PDTs result should
// likely be dropped too. This is not as easy as for characters since some
@@ -413,6 +427,9 @@ template <typename A> class FunctionRef : public ProcedureRef {
return std::nullopt;
}
}
+
+private:
+ int kind_;
};
} // namespace Fortran::evaluate
#endif // FORTRAN_EVALUATE_CALL_H_
diff --git a/flang/include/flang/Evaluate/char.h b/flang/include/flang/Evaluate/char.h
deleted file mode 100644
index 75db8d35c0cf33..00000000000000
--- a/flang/include/flang/Evaluate/char.h
+++ /dev/null
@@ -1,88 +0,0 @@
-//===-- include/flang/Evaluate/char.h ---------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef FORTRAN_EVALUATE_CHAR_H_
-#define FORTRAN_EVALUATE_CHAR_H_
-
-#include "flang/Evaluate/type.h"
-#include <string>
-
-namespace Fortran::evaluate::value {
-
-/// Simple wrapper around a std::string/std:u16string/std::u32string
-template <int KIND> class Character {
- using Word = Scalar<Type<TypeCategory::Character, KIND>>;
- using CharT = typename Word::value_type;
-
-public:
- // rule-of-five
- ~Character() = default;
- Character(const Character &v) : word_(v) {}
- Character(Character &&v) : word_(std::move(v)) {}
- Character &operator=(const Character &v) {
- word_ = v.word_;
- return &this;
- }
- Character &operator=(Character &&v) {
- word_ = std::move(v.word_);
- return *this;
- }
-
- // ctors
- Character() = default;
- Character(const Word &v) : word_(v) {}
- Character(Word &&v) : word_(std::move(v)) {}
- Character &operator=(const Word &v) { word_ = v; }
- Character &operator=(Word &&v) { word_ = std::move(v); }
-
- /// Returns the number of characters stored; not the number of bytes
- auto size() const { return word_.size(); }
-
- /// Reads a string of characters from \p raw. \p is the number of bytes to
- /// read; must be a multiple of the size of a single character.
- static Word FromRawBytes(const void *raw, std::size_t size) {
- CHECK(size % sizeof(CharT) == 0);
- Word s;
- if (size > 0) {
- s.assign(static_cast<const CharT *>(raw), size / sizeof(CharT));
- }
- return s;
- }
-
- /// Writes a string of characters to \p dst. \o is the the number of bytes to
- /// be written; must be a multiple of the size of a single character. If the
- /// string is smaller that \p size, the rest of the memory padded with spaces.
- /// If the string is shorter than size, only the first characters are written.
- /// If \p changes points to bool, it will be set to true if any bytes at
- /// \p dst have changed.
- void StoreRawBytes(void *dst, std::size_t size, bool *changed = nullptr) {
- CHECK(size % sizeof(CharT) == 0);
- if (size > 0) {
- std::size_t payloadSize{std::min(size, sizeof(CharT) * word_.size())};
- std::size_t padSize{size - payloadSize};
-
- // Pad with spaces
- Word strWithPadding{word_};
- strWithPadding.append(padSize / sizeof(CharT), static_cast<CharT>(' '));
-
- if (changed) {
- if (std::memcmp(dst, strWithPadding.data(), size) == 0) {
- return;
- }
- *changed = true;
- }
- std::memcpy(dst, strWithPadding.data(), size);
- }
- }
-
-private:
- Word word_;
-};
-
-} // namespace Fortran::evaluate::value
-#endif // FORTRAN_EVALUATE_CHAR_H_
diff --git a/flang/include/flang/Evaluate/characteristics.h b/flang/include/flang/Evaluate/characteristics.h
index 1ba0bf693c7630..492a128ab10f19 100644
--- a/flang/include/flang/Evaluate/characteristics.h
+++ b/flang/include/flang/Evaluate/characteristics.h
@@ -118,9 +118,8 @@ class TypeAndShape {
}
// Specialization for character designators
- template <int KIND>
static std::optional<TypeAndShape> Characterize(
- const Designator<Type<TypeCategory::Character, KIND>> &x,
+ const Designator<Type<TypeCategory::Character>> &x,
FoldingContext &context, bool invariantOnly = true) {
const auto *symbol{UnwrapWholeSymbolOrComponentDataRef(x)};
if (symbol && !symbol->owner().IsDerivedType()) { // Whole variable
diff --git a/flang/include/flang/Evaluate/common.h b/flang/include/flang/Evaluate/common.h
index 6adf395442edf5..7368a424b46b14 100644
--- a/flang/include/flang/Evaluate/common.h
+++ b/flang/include/flang/Evaluate/common.h
@@ -34,6 +34,10 @@ namespace Fortran::evaluate {
class IntrinsicProcTable;
class TargetCharacteristics;
+namespace value {
+class CharacterValue;
+}
+
using common::ConstantSubscript;
using common::RealFlag;
using common::RealFlags;
@@ -74,6 +78,9 @@ static constexpr Ordering Compare(
}
}
+Ordering Compare(
+ const value::CharacterValue &x, const value::CharacterValue &y);
+
static constexpr Ordering Reverse(Ordering ordering) {
if (ordering == Ordering::Less) {
return Ordering::Greater;
diff --git a/flang/include/flang/Evaluate/complex-value.h b/flang/include/flang/Evaluate/complex-value.h
index d1501b24f74804..eed00cc5039622 100644
--- a/flang/include/flang/Evaluate/complex-value.h
+++ b/flang/include/flang/Evaluate/complex-value.h
@@ -83,7 +83,7 @@ class ComplexValue {
std::size_t bytesStored() const {
return re_.bytesStored() + im_.bytesStored();
}
- static std::size_t bytesStored(int kind) {
+ static constexpr std::size_t bytesStored(int kind) {
return 2 * RealValue::bytesStored(kind);
}
diff --git a/flang/include/flang/Evaluate/complex.h b/flang/include/flang/Evaluate/complex.h
deleted file mode 100644
index cb5b8be603c5c1..00000000000000
--- a/flang/include/flang/Evaluate/complex.h
+++ /dev/null
@@ -1,141 +0,0 @@
-//===-- include/flang/Evaluate/complex.h ------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef FORTRAN_EVALUATE_COMPLEX_H_
-#define FORTRAN_EVALUATE_COMPLEX_H_
-
-#include "formatting.h"
-#include "real.h"
-#include <string>
-
-namespace llvm {
-class raw_ostream;
-}
-
-namespace Fortran::evaluate::value {
-
-template <typename REAL_TYPE> class Complex {
-public:
- using Part = REAL_TYPE;
- static constexpr int bits{2 * Part::bits};
-
- constexpr Complex() {} // (+0.0, +0.0)
- constexpr Complex(const Complex &) = default;
- constexpr Complex(const Part &r, const Part &i) : re_{r}, im_{i} {}
- explicit constexpr Complex(const Part &r) : re_{r} {}
- constexpr Complex &operator=(const Complex &) = default;
- constexpr Complex &operator=(Complex &&) = default;
-
- constexpr bool operator==(const Complex &that) const {
- return re_ == that.re_ && im_ == that.im_;
- }
-
- constexpr const Part &REAL() const { return re_; }
- constexpr const Part &AIMAG() const { return im_; }
- constexpr Complex CONJG() const { return {re_, im_.Negate()}; }
- constexpr Complex Negate() const { return {re_.Negate(), im_.Negate()}; }
-
- constexpr bool Equals(const Complex &that) const {
- return re_.Compare(that.re_) == Relation::Equal &&
- im_.Compare(that.im_) == Relation::Equal;
- }
-
- constexpr bool IsZero() const { return re_.IsZero() && im_.IsZero(); }
-
- constexpr bool IsInfinite() const {
- return re_.IsInfinite() || im_.IsInfinite();
- }
-
- constexpr bool IsNotANumber() const {
- return re_.IsNotANumber() || im_.IsNotANumber();
- }
-
- constexpr bool IsSignalingNaN() const {
- return re_.IsSignalingNaN() || im_.IsSignalingNaN();
- }
-
- template <typename INT>
- static ValueWithRealFlags<Complex> FromInteger(const INT &n,
- bool isUnsigned = false,
- Rounding rounding = TargetCharacteristics::defaultRounding) {
- ValueWithRealFlags<Complex> result;
- result.value.re_ = Part::FromInteger(n, isUnsigned, rounding)
- .AccumulateFlags(result.flags);
- return result;
- }
-
- ValueWithRealFlags<Complex> Add(const Complex &,
- Rounding rounding = TargetCharacteristics::defaultRounding) const;
- ValueWithRealFlags<Complex> Subtract(const Complex &,
- Rounding rounding = TargetCharacteristics::defaultRounding) const;
- ValueWithRealFlags<Complex> Multiply(const Complex &,
- Rounding rounding = TargetCharacteristics::defaultRounding) const;
- ValueWithRealFlags<Complex> Divide(const Complex &,
- Rounding rounding = TargetCharacteristics::defaultRounding) const;
- ValueWithRealFlags<Complex> KahanSummation(const Complex &,
- Complex &correction,
- Rounding rounding = TargetCharacteristics::defaultRounding) const;
-
- // ABS/CABS = HYPOT(re_, imag_) = SQRT(re_**2 + im_**2)
- ValueWithRealFlags<Part> ABS(
- Rounding rounding = TargetCharacteristics::defaultRounding) const {
- return re_.HYPOT(im_, rounding);
- }
-
- constexpr Complex FlushSubnormalToZero() const {
- return {re_.FlushSubnormalToZero(), im_.FlushSubnormalToZero()};
- }
-
- static constexpr Complex NotANumber() {
- return {Part::NotANumber(), Part::NotANumber()};
- }
-
- std::string DumpHexadecimal() const;
- llvm::raw_ostream &AsFortran(llvm::raw_ostream &, int kind) const;
-
- /// Number of bytes that FromRawBytes/StoreRawBytes would accesses.
- /// Note that for COMPLEX(10), this is 32.
- constexpr static std::size_t bytesStored() { return 2 * Part::bytesStored(); }
-
- /// De-serializes a complex from \p raw. \p expectedSize must match the the
- /// number of bytes to be read.
- static Complex FromRawBytes(
- const void *raw, [[maybe_unused]] std::size_t expectedSize) {
- CHECK(bytesStored() == expectedSize);
- const char *data{static_cast<const char *>(raw)};
- Part realPart{Part::FromRawBytes(data, Part::bytesStored())};
- Part imagPart{
- Part::FromRawBytes(data + Part::bytesStored(), Part::bytesStored())};
- return {realPart, imagPart};
- }
-
- /// Serializes this complex to \p dst. \p expectedSize must match the the
- /// number of bytes to be written. If \p changed points to a boolean, it will
- /// be set to true if any bytes at \p dst have changed.
- void StoreRawBytes(void *dst, [[maybe_unused]] size_t expectedSize,
- bool *changed = nullptr) const {
- CHECK(expectedSize == bytesStored());
- re_.StoreRawBytes(dst, Part::bytesStored(), changed);
- im_.StoreRawBytes(static_cast<char *>(dst) + Part::bytesStored(),
- Part::bytesStored(), changed);
- }
-
- // TODO: unit testing
-
-private:
- Part re_, im_;
-};
-
-extern template class Complex<Real<Integer<16>, 11>>;
-extern template class Complex<Real<Integer<16>, 8>>;
-extern template class Complex<Real<Integer<32>, 24>>;
-extern template class Complex<Real<Integer<64>, 53>>;
-extern template class Complex<Real<X87IntegerContainer, 64>>;
-extern template class Complex<Real<Integer<128>, 113>>;
-} // namespace Fortran::evaluate::value
-#endif // FORTRAN_EVALUATE_COMPLEX_H_
diff --git a/flang/include/flang/Evaluate/constant.h b/flang/include/flang/Evaluate/constant.h
index 9ae37cd999aa90..530328e1802bbb 100644
--- a/flang/include/flang/Evaluate/constant.h
+++ b/flang/include/flang/Evaluate/constant.h
@@ -110,16 +110,48 @@ class ConstantBase : public ConstantBounds {
using Result = RESULT;
using Element = ELEMENT;
+ constexpr int kind() const { return kind_; }
+
// Constructor for creating ConstantBase from an actual value (i.e.
// literals, etc.)
- template <typename A,
- typename = std::enable_if_t<std::is_convertible_v<A, Element>>>
- ConstantBase(const A &x, Result res = Result{}) : result_{res}, values_{x} {}
+ template <typename A>
+ ConstantBase(int kind, const A &x, Result res)
+ : kind_{kind}, result_{res}, values_{A{kind, x}} {
+ CHECK_KIND(kind, RESULT);
+ }
+ ConstantBase(int kind, ELEMENT &&x)
+ : kind_{kind}, result_{Result{kind}}, values_{std::move(x)} {
+ CHECK_KIND(kind, RESULT);
+ }
- ConstantBase(ELEMENT &&x, Result res = Result{})
- : result_{res}, values_{std::move(x)} {}
+ template <TypeCategory CAT>
+ ConstantBase(int kind, const SomeKind<CAT> &x)
+ : kind_{kind}, result_{Result{kind}}, values_{x} {
+ CHECK_KIND(kind, RESULT);
+ }
+ template <TypeCategory CAT>
+ ConstantBase(int kind, SomeKind<CAT> &&x)
+ : kind_{kind}, result_{Result{kind}}, values_{std::move(x)} {
+ CHECK_KIND(kind, RESULT);
+ }
+
+ template <typename A>
+ ConstantBase(int kind, const A &x)
+ : kind_{kind}, result_{Result{kind}}, values_{A{kind, x}} {
+ CHECK_KIND(kind, RESULT);
+ }
+ ConstantBase(int kind, ELEMENT &&x, Result res)
+ : kind_{kind}, result_{res}, values_{std::move(x)} {
+ CHECK_KIND(kind, RESULT);
+ }
+
+ ConstantBase(int kind, std::vector<Element> &&x, ConstantSubscripts &&sh)
+ : ConstantBase{kind, std::move(x), std::move(sh), Result{kind}} {}
ConstantBase(
- std::vector<Element> &&, ConstantSubscripts &&, Result = Result{});
+ int kind, std::vector<Element> &&, ConstantSubscripts &&, Result);
+ template <typename A, typename B, typename C>
+ ConstantBase(int kind, const std::map<A, B, C> &x, Result res = Result{})
+ : kind_{kind}, result_{res}, values_{x} {}
DEFAULT_CONSTRUCTORS_AND_ASSIGNMENTS(ConstantBase)
~ConstantBase();
@@ -140,6 +172,7 @@ class ConstantBase : public ConstantBounds {
std::size_t CopyFrom(const ConstantBase &source, std::size_t count,
ConstantSubscripts &resultSubscripts, const std::vector<int> *dimOrder);
+ int kind_;
Result result_; // usually empty except for Real & Complex
std::vector<Element> values_;
};
@@ -170,22 +203,24 @@ template <typename T> class Constant : public ConstantBase<T> {
ConstantSubscripts &resultSubscripts, const std::vector<int> *dimOrder);
};
-template <int KIND>
-class Constant<Type<TypeCategory::Character, KIND>> : public ConstantBounds {
+template <>
+class Constant<Type<TypeCategory::Character>> : public ConstantBounds {
public:
- using Result = Type<TypeCategory::Character, KIND>;
+ using Result = Type<TypeCategory::Character>;
using Element = Scalar<Result>;
+ constexpr int kind() const { return kind_; }
+
CLASS_BOILERPLATE(Constant)
- explicit Constant(const Scalar<Result> &);
- explicit Constant(Scalar<Result> &&);
- Constant(
- ConstantSubscript length, std::vector<Element> &&, ConstantSubscripts &&);
+ explicit Constant(int kind, const Scalar<Result> &);
+ explicit Constant(int kind, Scalar<Result> &&);
+ Constant(int kind, ConstantSubscript length, std::vector<Element> &&,
+ ConstantSubscripts &&);
~Constant();
bool operator==(const Constant &that) const {
- return LEN() == that.LEN() && shape() == that.shape() &&
- values_ == that.values_;
+ return kind() == that.kind() && LEN() == that.LEN() &&
+ shape() == that.shape() && values_ == that.values_;
}
bool empty() const;
std::size_t size() const;
@@ -212,11 +247,12 @@ class Constant<Type<TypeCategory::Character, KIND>> : public ConstantBounds {
Constant Reshape(ConstantSubscripts &&) const;
llvm::raw_ostream &AsFortran(llvm::raw_ostream &) const;
std::string AsFortran() const;
- DynamicType GetType() const { return {KIND, length_}; }
+ DynamicType GetType() const { return {kind_, length_}; }
std::size_t CopyFrom(const Constant &source, std::size_t count,
ConstantSubscripts &resultSubscripts, const std::vector<int> *dimOrder);
private:
+ int kind_;
Scalar<Result> values_; // one contiguous string
ConstantSubscript length_;
bool wasHollerith_{false};
@@ -239,6 +275,12 @@ class Constant<SomeDerived>
Constant(const StructureConstructor &);
Constant(StructureConstructor &&);
+ Constant(int kind, const StructureConstructor &v) : Constant(v) {
+ CHECK(kind == 0);
+ }
+ Constant(int kind, StructureConstructor &&v) : Constant(std::move(v)) {
+ CHECK(kind == 0);
+ }
Constant(const semantics::DerivedTypeSpec &,
std::vector<StructureConstructorValues> &&, ConstantSubscripts &&);
Constant(const semantics::DerivedTypeSpec &,
@@ -254,6 +296,40 @@ class Constant<SomeDerived>
ConstantSubscripts &resultSubscripts, const std::vector<int> *dimOrder);
};
+inline Constant<SubscriptInteger> MakeSubscriptIntConstant(int64_t v) {
+ return Constant<SubscriptInteger>{
+ SubscriptIntegerKind, Scalar<SubscriptInteger>{SubscriptIntegerKind, v}};
+}
+
+inline Constant<CInteger> MakeCIntegerConstant(int32_t v) {
+ return Constant<CInteger>{CIntegerKind, Scalar<CInteger>{CIntegerKind, v}};
+}
+
+inline Constant<LogicalResult> MakeLogicalResultConstant(bool v) {
+ return Constant<LogicalResult>{
+ LogicalResultKind, Scalar<LogicalResult>{LogicalResultKind, v}};
+}
+
+template <typename T, typename CharT,
+ typename =
+ std::enable_if_t<std::is_same_v<T, Type<TypeCategory::Character>>>>
+inline Constant<T> MakeConstant(int kind, const std::basic_string<CharT> &v) {
+ return Constant<T>{kind, value::CharacterValue{kind, v}};
+}
+
+template <typename T, typename CharT,
+ typename =
+ std::enable_if_t<std::is_same_v<T, Type<TypeCategory::Character>>>>
+inline Constant<T> MakeConstant(int kind, std::basic_string<CharT> &&v) {
+ return Constant<T>{kind, value::CharacterValue{kind, std::move(v)}};
+}
+
+template <typename T,
+ typename = std::enable_if_t<std::is_same_v<T, Type<TypeCategory::Integer>>>>
+inline Constant<T> MakeConstant(int kind, int64_t v) {
+ return Constant<T>{kind, value::IntegerValue{kind, v}};
+}
+
FOR_EACH_LENGTHLESS_INTRINSIC_KIND(extern template class ConstantBase, )
extern template class ConstantBase<SomeDerived, StructureConstructorValues>;
FOR_EACH_INTRINSIC_KIND(extern template class Constant, )
diff --git a/flang/include/flang/Evaluate/expression.h b/flang/include/flang/Evaluate/expression.h
index 48a6b635f63509..be7fa337382571 100644
--- a/flang/include/flang/Evaluate/expression.h
+++ b/flang/include/flang/Evaluate/expression.h
@@ -60,12 +60,15 @@ using common::RelationalOperator;
// maps to some instantiation of Type<CATEGORY, KIND>, SomeKind<CATEGORY>,
// or SomeType. (Exception: BOZ literal constants in generic Expr<SomeType>.)
template <typename A> using ResultType = typename std::decay_t<A>::Result;
+template <typename A> constexpr int ResultKind = std::decay_t<A>::kind();
// Common Expr<> behaviors: every Expr<T> derives from ExpressionBase<T>.
template <typename RESULT> class ExpressionBase {
public:
using Result = RESULT;
+ int kind() const;
+
private:
using Derived = Expr<Result>;
#if defined(__APPLE__) && defined(__GNUC__)
@@ -125,6 +128,8 @@ class Operation {
(operands == 1 && std::is_same_v<Result, SomeDerived>));
template <int J> using Operand = std::tuple_element_t<J, OperandTypes>;
+ constexpr int kind() const { return kind_; }
+
// Unary operations wrap a single Expr with a CopyableIndirection.
// Binary operations wrap a tuple of CopyableIndirections to Exprs.
private:
@@ -134,8 +139,14 @@ class Operation {
public:
CLASS_BOILERPLATE(Operation)
- explicit Operation(const Expr<OPERANDS> &...x) : operand_{x...} {}
- explicit Operation(Expr<OPERANDS> &&...x) : operand_{std::move(x)...} {}
+ explicit Operation(int kind, const Expr<OPERANDS> &...x)
+ : kind_{kind}, operand_{x...} {
+ CHECK_KIND(kind, RESULT);
+ }
+ explicit Operation(int kind, Expr<OPERANDS> &&...x)
+ : kind_{kind}, operand_{std::move(x)...} {
+ CHECK_KIND(kind, RESULT);
+ }
Derived &derived() { return *static_cast<Derived *>(this); }
const Derived &derived() const { return *static_cast<const Derived *>(this); }
@@ -177,10 +188,8 @@ class Operation {
}
}
- static constexpr std::conditional_t<Result::category != TypeCategory::Derived,
- std::optional<DynamicType>, void>
- GetType() {
- return Result::GetType();
+ constexpr std::optional<DynamicType> GetType() const {
+ return DynamicType{Result::category, kind()};
}
int Rank() const {
int rank{left().Rank()};
@@ -193,12 +202,13 @@ class Operation {
static constexpr int Corank() { return 0; }
bool operator==(const Operation &that) const {
- return operand_ == that.operand_;
+ return kind() == that.kind() && operand_ == that.operand_;
}
llvm::raw_ostream &AsFortran(llvm::raw_ostream &) const;
private:
+ int kind_;
Container operand_;
};
@@ -221,6 +231,7 @@ struct Convert : public Operation<Convert<TO, FROMCAT>, TO, SomeKind<FROMCAT>> {
using Operand = SomeKind<FROMCAT>;
using Base = Operation<Convert, Result, Operand>;
using Base::Base;
+ using Base::kind;
llvm::raw_ostream &AsFortran(llvm::raw_ostream &) const;
};
@@ -230,6 +241,9 @@ struct Parentheses : public Operation<Parentheses<A>, A, A> {
using Operand = A;
using Base = Operation<Parentheses, A, A>;
using Base::Base;
+
+ Parentheses(const Expr<A> &x) : Base{x.kind(), x} {};
+ Parentheses(Expr<A> &&x) : Base{x.kind(), std::move(x)} {};
};
template <>
@@ -241,6 +255,9 @@ struct Parentheses<SomeDerived>
using Base = Operation<Parentheses, SomeDerived, SomeDerived>;
using Base::Base;
DynamicType GetType() const;
+
+ Parentheses(const Expr<SomeDerived> &x);
+ Parentheses(Expr<SomeDerived> &&x);
};
template <typename A> struct Negate : public Operation<Negate<A>, A, A> {
@@ -248,28 +265,27 @@ template <typename A> struct Negate : public Operation<Negate<A>, A, A> {
using Operand = A;
using Base = Operation<Negate, A, A>;
using Base::Base;
+
+ Negate(const Expr<A> &x) : Base{x.kind(), x} {};
+ Negate(Expr<A> &&x) : Base{x.kind(), std::move(x)} {};
};
-template <int KIND>
struct ComplexComponent
- : public Operation<ComplexComponent<KIND>, Type<TypeCategory::Real, KIND>,
- Type<TypeCategory::Complex, KIND>> {
- using Result = Type<TypeCategory::Real, KIND>;
- using Operand = Type<TypeCategory::Complex, KIND>;
+ : public Operation<ComplexComponent, Type<TypeCategory::Real>,
+ Type<TypeCategory::Complex>> {
+ using Result = Type<TypeCategory::Real>;
+ using Operand = Type<TypeCategory::Complex>;
using Base = Operation<ComplexComponent, Result, Operand>;
CLASS_BOILERPLATE(ComplexComponent)
- ComplexComponent(bool isImaginary, const Expr<Operand> &x)
- : Base{x}, isImaginaryPart{isImaginary} {}
- ComplexComponent(bool isImaginary, Expr<Operand> &&x)
- : Base{std::move(x)}, isImaginaryPart{isImaginary} {}
+ ComplexComponent(bool isImaginary, const Expr<Operand> &x);
+ ComplexComponent(bool isImaginary, Expr<Operand> &&x);
bool isImaginaryPart{true};
};
-template <int KIND>
-struct Not : public Operation<Not<KIND>, Type<TypeCategory::Logical, KIND>,
- Type<TypeCategory::Logical, KIND>> {
- using Result = Type<TypeCategory::Logical, KIND>;
+struct Not : public Operation<Not, Type<TypeCategory::Logical>,
+ Type<TypeCategory::Logical>> {
+ using Result = Type<TypeCategory::Logical>;
using Operand = Result;
using Base = Operation<Not, Result, Operand>;
using Base::Base;
@@ -279,11 +295,9 @@ struct Not : public Operation<Not<KIND>, Type<TypeCategory::Logical, KIND>,
// have explicit syntax for changing them. Expressions represent
// changes of length (e.g., for assignments and structure constructors)
// with this operation.
-template <int KIND>
-struct SetLength
- : public Operation<SetLength<KIND>, Type<TypeCategory::Character, KIND>,
- Type<TypeCategory::Character, KIND>, SubscriptInteger> {
- using Result = Type<TypeCategory::Character, KIND>;
+struct SetLength : public Operation<SetLength, Type<TypeCategory::Character>,
+ Type<TypeCategory::Character>, SubscriptInteger> {
+ using Result = Type<TypeCategory::Character>;
using CharacterOperand = Result;
using LengthOperand = SubscriptInteger;
using Base = Operation<SetLength, Result, CharacterOperand, LengthOperand>;
@@ -342,49 +356,55 @@ template <typename A> struct Extremum : public Operation<Extremum<A>, A, A, A> {
using Base = Operation<Extremum, A, A, A>;
CLASS_BOILERPLATE(Extremum)
Extremum(Ordering ord, const Expr<Operand> &x, const Expr<Operand> &y)
- : Base{x, y}, ordering{ord} {}
+ : Base{x.kind(), x, y}, ordering{ord} {
+ CHECK(x.kind() == y.kind());
+ }
Extremum(Ordering ord, Expr<Operand> &&x, Expr<Operand> &&y)
- : Base{std::move(x), std::move(y)}, ordering{ord} {}
+ : Base{x.kind(), std::move(x), std::move(y)}, ordering{ord} {
+ CHECK(x.kind() == y.kind());
+ }
bool operator==(const Extremum &) const;
Ordering ordering{Ordering::Greater};
};
-template <int KIND>
struct ComplexConstructor
- : public Operation<ComplexConstructor<KIND>,
- Type<TypeCategory::Complex, KIND>, Type<TypeCategory::Real, KIND>,
- Type<TypeCategory::Real, KIND>> {
- using Result = Type<TypeCategory::Complex, KIND>;
- using Operand = Type<TypeCategory::Real, KIND>;
+ : public Operation<ComplexConstructor, Type<TypeCategory::Complex>,
+ Type<TypeCategory::Real>, Type<TypeCategory::Real>> {
+ using Result = Type<TypeCategory::Complex>;
+ using Operand = Type<TypeCategory::Real>;
using Base = Operation<ComplexConstructor, Result, Operand, Operand>;
using Base::Base;
+
+ ComplexConstructor(const Expr<Type<TypeCategory::Real>> &re,
+ const Expr<Type<TypeCategory::Real>> &im);
+ ComplexConstructor(
+ Expr<Type<TypeCategory::Real>> &&re, Expr<Type<TypeCategory::Real>> &&im);
};
-template <int KIND>
struct Concat
- : public Operation<Concat<KIND>, Type<TypeCategory::Character, KIND>,
- Type<TypeCategory::Character, KIND>,
- Type<TypeCategory::Character, KIND>> {
- using Result = Type<TypeCategory::Character, KIND>;
+ : public Operation<Concat, Type<TypeCategory::Character>,
+ Type<TypeCategory::Character>, Type<TypeCategory::Character>> {
+ using Result = Type<TypeCategory::Character>;
using Operand = Result;
using Base = Operation<Concat, Result, Operand, Operand>;
using Base::Base;
+
+ Concat(const Expr<Type<TypeCategory::Character>> &x,
+ const Expr<Type<TypeCategory::Character>> &y);
+ Concat(Expr<Type<TypeCategory::Character>> &&x,
+ Expr<Type<TypeCategory::Character>> &&y);
};
-template <int KIND>
struct LogicalOperation
- : public Operation<LogicalOperation<KIND>,
- Type<TypeCategory::Logical, KIND>, Type<TypeCategory::Logical, KIND>,
- Type<TypeCategory::Logical, KIND>> {
- using Result = Type<TypeCategory::Logical, KIND>;
+ : public Operation<LogicalOperation, Type<TypeCategory::Logical>,
+ Type<TypeCategory::Logical>, Type<TypeCategory::Logical>> {
+ using Result = Type<TypeCategory::Logical>;
using Operand = Result;
using Base = Operation<LogicalOperation, Result, Operand, Operand>;
CLASS_BOILERPLATE(LogicalOperation)
LogicalOperation(
- LogicalOperator opr, const Expr<Operand> &x, const Expr<Operand> &y)
- : Base{x, y}, logicalOperator{opr} {}
- LogicalOperation(LogicalOperator opr, Expr<Operand> &&x, Expr<Operand> &&y)
- : Base{std::move(x), std::move(y)}, logicalOperator{opr} {}
+ LogicalOperator opr, const Expr<Operand> &x, const Expr<Operand> &y);
+ LogicalOperation(LogicalOperator opr, Expr<Operand> &&x, Expr<Operand> &&y);
bool operator==(const LogicalOperation &) const;
LogicalOperator logicalOperator;
};
@@ -394,11 +414,17 @@ struct LogicalOperation
template <typename T> class ConditionalExpr {
public:
using Result = T;
+
+ constexpr int kind() const { return kind_; }
+
CLASS_BOILERPLATE(ConditionalExpr)
ConditionalExpr(Expr<LogicalResult> &&cond, Expr<Result> &&thenVal,
Expr<Result> &&elseVal)
- : condition_{std::move(cond)}, thenValue_{std::move(thenVal)},
- elseValue_{std::move(elseVal)} {}
+ : kind_{thenVal.kind()}, condition_{std::move(cond)},
+ thenValue_{std::move(thenVal)}, elseValue_{std::move(elseVal)} {
+ CHECK_KIND(kind(), Result);
+ CHECK(thenVal.kind() == elseVal.kind());
+ }
bool operator==(const ConditionalExpr &) const;
Expr<LogicalResult> &condition() { return condition_.value(); }
const Expr<LogicalResult> &condition() const { return condition_.value(); }
@@ -425,6 +451,7 @@ template <typename T> class ConditionalExpr {
llvm::raw_ostream &AsFortran(llvm::raw_ostream &) const;
private:
+ int kind_;
common::CopyableIndirection<Expr<LogicalResult>> condition_;
common::CopyableIndirection<Expr<Result>> thenValue_;
common::CopyableIndirection<Expr<Result>> elseValue_;
@@ -436,6 +463,12 @@ template <typename RESULT> class ArrayConstructorValues;
struct ImpliedDoIndex {
using Result = SubscriptInteger;
bool operator==(const ImpliedDoIndex &) const;
+
+ static constexpr int kind() { return SubscriptIntegerKind; }
+
+ static constexpr DynamicType GetType() {
+ return {TypeCategory::Integer, kind()};
+ }
static constexpr int Rank() { return 0; }
static constexpr int Corank() { return 0; }
parser::CharBlock name; // nested implied DOs must use distinct names
@@ -507,33 +540,55 @@ class ArrayConstructor : public ArrayConstructorValues<RESULT> {
public:
using Result = RESULT;
using Base = ArrayConstructorValues<Result>;
+
+ constexpr int kind() const { return kind_; }
+
DEFAULT_CONSTRUCTORS_AND_ASSIGNMENTS(ArrayConstructor)
- explicit ArrayConstructor(Base &&values) : Base{std::move(values)} {}
- template <typename T> explicit ArrayConstructor(const Expr<T> &) {}
- static constexpr Result result() { return Result{}; }
- static constexpr DynamicType GetType() { return Result::GetType(); }
+ explicit ArrayConstructor(int kind, Base &&values)
+ : Base{std::move(values)}, kind_{kind} {
+ CHECK_KIND(kind, RESULT);
+ }
+ template <typename T>
+ explicit ArrayConstructor(int kind, const Expr<T> &) : kind_{kind} {
+ CHECK_KIND(kind, RESULT);
+ }
+ static constexpr Result result(int kind) { return Result{kind}; }
+ DynamicType GetType() const { return {Result::category, kind_}; }
llvm::raw_ostream &AsFortran(llvm::raw_ostream &) const;
+
+private:
+ int kind_;
};
-template <int KIND>
-class ArrayConstructor<Type<TypeCategory::Character, KIND>>
- : public ArrayConstructorValues<Type<TypeCategory::Character, KIND>> {
+template <>
+class ArrayConstructor<Type<TypeCategory::Character>>
+ : public ArrayConstructorValues<Type<TypeCategory::Character>> {
public:
- using Result = Type<TypeCategory::Character, KIND>;
+ using Result = Type<TypeCategory::Character>;
using Base = ArrayConstructorValues<Result>;
+
+ constexpr int kind() const { return kind_; }
+
DEFAULT_CONSTRUCTORS_AND_ASSIGNMENTS(ArrayConstructor)
- explicit ArrayConstructor(Base &&values) : Base{std::move(values)} {}
- template <typename T> explicit ArrayConstructor(const Expr<T> &) {}
+ explicit ArrayConstructor(int kind, Base &&values)
+ : Base{std::move(values)}, kind_{kind} {
+ CHECK(kind != 0);
+ }
+ template <typename T>
+ explicit ArrayConstructor(int kind, const Expr<T> &) : kind_{kind} {
+ CHECK(kind != 0);
+ }
ArrayConstructor &set_LEN(Expr<SubscriptInteger> &&);
bool operator==(const ArrayConstructor &) const;
- static constexpr Result result() { return Result{}; }
- static constexpr DynamicType GetType() { return Result::GetType(); }
+ static constexpr Result result(int kind) { return Result{kind}; }
+ DynamicType GetType() const { return {Result::category, kind()}; }
llvm::raw_ostream &AsFortran(llvm::raw_ostream &) const;
const Expr<SubscriptInteger> *LEN() const {
return length_ ? &length_->value() : nullptr;
}
private:
+ int kind_;
std::optional<common::CopyableIndirection<Expr<SubscriptInteger>>> length_;
};
@@ -543,6 +598,9 @@ class ArrayConstructor<SomeDerived>
public:
using Result = SomeDerived;
using Base = ArrayConstructorValues<Result>;
+
+ constexpr int kind() const { return 0; }
+
CLASS_BOILERPLATE(ArrayConstructor)
ArrayConstructor(const semantics::DerivedTypeSpec &spec, Base &&v)
@@ -550,6 +608,11 @@ class ArrayConstructor<SomeDerived>
template <typename A>
explicit ArrayConstructor(const A &prototype)
: result_{prototype.GetType().value().GetDerivedTypeSpec()} {}
+ template <typename A>
+ explicit ArrayConstructor(int kind, const A &prototype)
+ : result_{prototype.GetType().value().GetDerivedTypeSpec()} {
+ CHECK(kind == 0);
+ }
bool operator==(const ArrayConstructor &) const;
constexpr Result result() const { return result_; }
@@ -562,11 +625,11 @@ class ArrayConstructor<SomeDerived>
// Expression representations for each type category.
-template <int KIND>
-class Expr<Type<TypeCategory::Integer, KIND>>
- : public ExpressionBase<Type<TypeCategory::Integer, KIND>> {
+template <>
+class Expr<Type<TypeCategory::Integer>>
+ : public ExpressionBase<Type<TypeCategory::Integer>> {
public:
- using Result = Type<TypeCategory::Integer, KIND>;
+ using Result = Type<TypeCategory::Integer>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
@@ -577,17 +640,10 @@ class Expr<Type<TypeCategory::Integer, KIND>>
using Operations = std::tuple<Parentheses<Result>, Negate<Result>,
Add<Result>, Subtract<Result>, Multiply<Result>, Divide<Result>,
Power<Result>, Extremum<Result>, ConditionalExpr<Result>>;
- using Indices = std::conditional_t<KIND == ImpliedDoIndex::Result::kind,
- std::tuple<ImpliedDoIndex>, std::tuple<>>;
- using TypeParamInquiries =
- std::conditional_t<KIND == TypeParamInquiry::Result::kind,
- std::tuple<TypeParamInquiry>, std::tuple<>>;
- using DescriptorInquiries =
- std::conditional_t<KIND == DescriptorInquiry::Result::kind,
- std::tuple<DescriptorInquiry>, std::tuple<>>;
- using RankOneBoundElements =
- std::conditional_t<KIND == RankOneBoundElement::Result::kind,
- std::tuple<RankOneBoundElement>, std::tuple<>>;
+ using Indices = std::tuple<ImpliedDoIndex>;
+ using TypeParamInquiries = std::tuple<TypeParamInquiry>;
+ using DescriptorInquiries = std::tuple<DescriptorInquiry>;
+ using RankOneBoundElements = std::tuple<RankOneBoundElement>;
using Others = std::tuple<Constant<Result>, ArrayConstructor<Result>,
Designator<Result>, FunctionRef<Result>>;
@@ -597,11 +653,11 @@ class Expr<Type<TypeCategory::Integer, KIND>>
u;
};
-template <int KIND>
-class Expr<Type<TypeCategory::Unsigned, KIND>>
- : public ExpressionBase<Type<TypeCategory::Unsigned, KIND>> {
+template <>
+class Expr<Type<TypeCategory::Unsigned>>
+ : public ExpressionBase<Type<TypeCategory::Unsigned>> {
public:
- using Result = Type<TypeCategory::Unsigned, KIND>;
+ using Result = Type<TypeCategory::Unsigned>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
@@ -620,14 +676,15 @@ class Expr<Type<TypeCategory::Unsigned, KIND>>
u;
};
-template <int KIND>
-class Expr<Type<TypeCategory::Real, KIND>>
- : public ExpressionBase<Type<TypeCategory::Real, KIND>> {
+template <>
+class Expr<Type<TypeCategory::Real>>
+ : public ExpressionBase<Type<TypeCategory::Real>> {
public:
- using Result = Type<TypeCategory::Real, KIND>;
+ using Result = Type<TypeCategory::Real>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
- explicit Expr(const Scalar<Result> &x) : u{Constant<Result>{x}} {}
+ explicit Expr(int kind, const Scalar<Result> &x)
+ : u{Constant<Result>{kind, x}} {}
private:
// N.B. Real->Complex and Complex->Real conversions are done with CMPLX
@@ -635,7 +692,7 @@ class Expr<Type<TypeCategory::Real, KIND>>
using Conversions = std::variant<Convert<Result, TypeCategory::Integer>,
Convert<Result, TypeCategory::Real>,
Convert<Result, TypeCategory::Unsigned>>;
- using Operations = std::variant<ComplexComponent<KIND>, Parentheses<Result>,
+ using Operations = std::variant<ComplexComponent, Parentheses<Result>,
Negate<Result>, Add<Result>, Subtract<Result>, Multiply<Result>,
Divide<Result>, Power<Result>, RealToIntPower<Result>, Extremum<Result>,
ConditionalExpr<Result>>;
@@ -646,17 +703,18 @@ class Expr<Type<TypeCategory::Real, KIND>>
common::CombineVariants<Operations, Conversions, Others> u;
};
-template <int KIND>
-class Expr<Type<TypeCategory::Complex, KIND>>
- : public ExpressionBase<Type<TypeCategory::Complex, KIND>> {
+template <>
+class Expr<Type<TypeCategory::Complex>>
+ : public ExpressionBase<Type<TypeCategory::Complex>> {
public:
- using Result = Type<TypeCategory::Complex, KIND>;
+ using Result = Type<TypeCategory::Complex>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
- explicit Expr(const Scalar<Result> &x) : u{Constant<Result>{x}} {}
+ explicit Expr(int kind, const Scalar<Result> &x)
+ : u{Constant<Result>{kind, x}} {}
using Operations = std::variant<Parentheses<Result>, Negate<Result>,
Convert<Result, TypeCategory::Complex>, Add<Result>, Subtract<Result>,
Multiply<Result>, Divide<Result>, Power<Result>, RealToIntPower<Result>,
- ComplexConstructor<KIND>, ConditionalExpr<Result>>;
+ ComplexConstructor, ConditionalExpr<Result>>;
using Others = std::variant<Constant<Result>, ArrayConstructor<Result>,
Designator<Result>, FunctionRef<Result>>;
@@ -669,20 +727,22 @@ FOR_EACH_UNSIGNED_KIND(extern template class Expr, )
FOR_EACH_REAL_KIND(extern template class Expr, )
FOR_EACH_COMPLEX_KIND(extern template class Expr, )
-template <int KIND>
-class Expr<Type<TypeCategory::Character, KIND>>
- : public ExpressionBase<Type<TypeCategory::Character, KIND>> {
+template <>
+class Expr<Type<TypeCategory::Character>>
+ : public ExpressionBase<Type<TypeCategory::Character>> {
public:
- using Result = Type<TypeCategory::Character, KIND>;
+ using Result = Type<TypeCategory::Character>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
- explicit Expr(const Scalar<Result> &x) : u{Constant<Result>{x}} {}
- explicit Expr(Scalar<Result> &&x) : u{Constant<Result>{std::move(x)}} {}
+ explicit Expr(int kind, const Scalar<Result> &x)
+ : u{Constant<Result>{kind, x}} {}
+ explicit Expr(int kind, Scalar<Result> &&x)
+ : u{Constant<Result>{kind, std::move(x)}} {}
std::optional<Expr<SubscriptInteger>> LEN() const;
std::variant<Constant<Result>, ArrayConstructor<Result>, Designator<Result>,
- FunctionRef<Result>, Parentheses<Result>, Convert<Result>, Concat<KIND>,
- Extremum<Result>, SetLength<KIND>, ConditionalExpr<Result>>
+ FunctionRef<Result>, Parentheses<Result>, Convert<Result>, Concat,
+ Extremum<Result>, SetLength, ConditionalExpr<Result>>
u;
};
@@ -710,9 +770,16 @@ class Relational : public Operation<Relational<T>, LogicalResult, T, T> {
CLASS_BOILERPLATE(Relational)
Relational(
RelationalOperator r, const Expr<Operand> &a, const Expr<Operand> &b)
- : Base{a, b}, opr{r} {}
+ : Base{LogicalResultKind, a, b}, opr{r} {
+ CHECK(a.kind() == b.kind());
+ }
Relational(RelationalOperator r, Expr<Operand> &&a, Expr<Operand> &&b)
- : Base{std::move(a), std::move(b)}, opr{r} {}
+ : Base{LogicalResultKind, std::move(a), std::move(b)}, opr{r} {
+ CHECK(a.kind() == b.kind());
+ }
+ static constexpr std::optional<DynamicType> GetType() {
+ return DynamicType{TypeCategory::Logical, LogicalResultKind};
+ }
bool operator==(const Relational &) const;
RelationalOperator opr;
};
@@ -724,7 +791,12 @@ template <> class Relational<SomeType> {
public:
using Result = LogicalResult;
EVALUATE_UNION_CLASS_BOILERPLATE(Relational)
- static constexpr DynamicType GetType() { return Result::GetType(); }
+ int kind() const {
+ return common::visit([](const auto &x) { return x.kind(); }, u);
+ }
+ static constexpr DynamicType GetType() {
+ return {TypeCategory::Logical, LogicalResultKind};
+ }
int Rank() const {
return common::visit([](const auto &x) { return x.Rank(); }, u);
}
@@ -743,20 +815,23 @@ extern template class Relational<SomeType>;
// do not include Relational<> operations as possibilities,
// since the results of Relationals are always LogicalResult
// (kind=4).
-template <int KIND>
-class Expr<Type<TypeCategory::Logical, KIND>>
- : public ExpressionBase<Type<TypeCategory::Logical, KIND>> {
+template <>
+class Expr<Type<TypeCategory::Logical>>
+ : public ExpressionBase<Type<TypeCategory::Logical>> {
public:
- using Result = Type<TypeCategory::Logical, KIND>;
+ using Result = Type<TypeCategory::Logical>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
- explicit Expr(const Scalar<Result> &x) : u{Constant<Result>{x}} {}
- explicit Expr(bool x) : u{Constant<Result>{x}} {}
+
+ explicit Expr(const Scalar<Result> &x) : u{Constant<Result>{x.kind(), x}} {}
+ explicit Expr(int kind, const Scalar<Result> &x)
+ : u{Constant<Result>{kind, x}} {}
+ explicit Expr(int kind, bool x)
+ : u{Constant<Result>{kind, Scalar<Result>{kind, x}}} {}
private:
- using Operations = std::tuple<Convert<Result>, Parentheses<Result>, Not<KIND>,
- LogicalOperation<KIND>, ConditionalExpr<Result>>;
- using Relations = std::conditional_t<KIND == LogicalResult::kind,
- std::tuple<Relational<SomeType>>, std::tuple<>>;
+ using Operations = std::tuple<Convert<Result>, Parentheses<Result>, Not,
+ LogicalOperation, ConditionalExpr<Result>>;
+ using Relations = std::tuple<Relational<SomeType>>;
using Others = std::tuple<Constant<Result>, ArrayConstructor<Result>,
Designator<Result>, FunctionRef<Result>>;
@@ -785,6 +860,8 @@ class StructureConstructor {
public:
using Result = SomeDerived;
+ static int kind() { return 0; }
+
explicit StructureConstructor(const semantics::DerivedTypeSpec &spec)
: result_{spec} {}
StructureConstructor(
@@ -845,7 +922,11 @@ class Expr<SomeKind<CAT>> : public ExpressionBase<SomeKind<CAT>> {
public:
using Result = SomeKind<CAT>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
- int GetKind() const;
+
+ int kind() const {
+ return common::visit([](auto v) -> int { return v.kind(); }, u);
+ }
+
common::MapTemplate<evaluate::Expr, CategoryTypes<CAT>> u;
};
@@ -853,7 +934,6 @@ template <> class Expr<SomeCharacter> : public ExpressionBase<SomeCharacter> {
public:
using Result = SomeCharacter;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
- int GetKind() const;
std::optional<Expr<SubscriptInteger>> LEN() const;
common::MapTemplate<Expr, CategoryTypes<TypeCategory::Character>> u;
};
@@ -867,9 +947,12 @@ using CategoryExpression = common::MapTemplate<Expr, SomeCategory>;
// distinguishable from other integer constants, since they are permitted
// to be used in only a few situations.
using BOZLiteralConstant = typename LargestReal::Scalar::Word;
+static constexpr int BOZLiteralConstantKind = LargestRealKind;
// Null pointers without MOLD= arguments are typed by context.
struct NullPointer {
+ static constexpr int kind() { return 0; }
+
constexpr bool operator==(const NullPointer &) const { return true; }
static constexpr int Rank() { return 0; }
static constexpr int Corank() { return 0; }
@@ -886,6 +969,9 @@ using TypelessExpression = std::variant<BOZLiteralConstant, NullPointer,
template <> class Expr<SomeType> : public ExpressionBase<SomeType> {
public:
using Result = SomeType;
+
+ static int kind() { return 0; }
+
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
// Owning references to these generic expressions can appear in other
@@ -893,21 +979,18 @@ template <> class Expr<SomeType> : public ExpressionBase<SomeType> {
// its destructor is externalized to reduce redundant default instances.
~Expr();
- template <TypeCategory CAT, int KIND>
- explicit Expr(const Expr<Type<CAT, KIND>> &x) : u{Expr<SomeKind<CAT>>{x}} {}
+ template <TypeCategory CAT>
+ explicit Expr(const Expr<Type<CAT>> &x) : u{Expr<SomeKind<CAT>>{x}} {}
- template <TypeCategory CAT, int KIND>
- explicit Expr(Expr<Type<CAT, KIND>> &&x)
- : u{Expr<SomeKind<CAT>>{std::move(x)}} {}
+ template <TypeCategory CAT>
+ explicit Expr(Expr<Type<CAT>> &&x) : u{Expr<SomeKind<CAT>>{std::move(x)}} {}
- template <TypeCategory CAT, int KIND>
- Expr &operator=(const Expr<Type<CAT, KIND>> &x) {
+ template <TypeCategory CAT> Expr &operator=(const Expr<Type<CAT>> &x) {
u = Expr<SomeKind<CAT>>{x};
return *this;
}
- template <TypeCategory CAT, int KIND>
- Expr &operator=(Expr<Type<CAT, KIND>> &&x) {
+ template <TypeCategory CAT> Expr &operator=(Expr<Type<CAT>> &&x) {
u = Expr<SomeKind<CAT>>{std::move(x)};
return *this;
}
@@ -976,5 +1059,91 @@ FOR_EACH_INTRINSIC_KIND(extern template class ArrayConstructor, )
FOR_EACH_INTRINSIC_KIND(template class ArrayConstructorValues, ) \
FOR_EACH_INTRINSIC_KIND(template class ArrayConstructor, ) \
FOR_EACH_INTRINSIC_KIND(template class ConditionalExpr, )
+
+template <typename T>
+inline Expr<T> MakeConstantExpr(int kind, const Scalar<T> &v) {
+ CHECK(kind == v.kind());
+ return Expr<T>{Constant<T>{kind, v}};
+}
+
+template <typename T> inline Expr<T> MakeConstantExpr(int kind, Scalar<T> &&v) {
+ CHECK(kind == v.kind());
+ return Expr<T>{Constant<T>{kind, std::move(v)}};
+}
+
+template <typename T>
+inline Expr<T> MakeConstantExpr(int kind, const Constant<T> &c) {
+ CHECK(kind == c.kind());
+ return Expr<T>{c};
+}
+
+template <typename T>
+inline Expr<T> MakeConstantExpr(int kind, Constant<T> &&c) {
+ CHECK(kind == c.kind());
+ return Expr<T>{std::move(c)};
+}
+
+template <typename T,
+ typename =
+ std::enable_if_t<std::is_same_v<T, Type<TypeCategory::Character>>>>
+inline Expr<T> MakeConstantExpr(int kind, const std::string &v) {
+ return Expr<T>{MakeConstant<T>(kind, v)};
+}
+
+template <typename T,
+ typename = std::enable_if_t<std::is_same_v<T, Type<TypeCategory::Integer>>>>
+inline Expr<T> MakeConstantExpr(int kind, int64_t v) {
+ return Expr<T>{Constant<T>{kind, Scalar<T>{kind, v}}};
+}
+
+template <typename T,
+ typename =
+ std::enable_if_t<std::is_same_v<T, Type<TypeCategory::Unsigned>>>>
+inline Expr<T> MakeConstantExpr(int kind, uint64_t v) {
+ return Expr<T>{Constant<T>{kind, Scalar<T>{kind, v}}};
+}
+
+template <typename T,
+ typename = std::enable_if_t<std::is_same_v<T, Type<TypeCategory::Logical>>>>
+inline Expr<T> MakeConstantExpr(int kind, bool v) {
+ return Expr<T>{Constant<T>{kind, Scalar<T>{kind, v}}};
+}
+
+template <typename T> inline Expr<T> MakeZeroExpr(int kind) {
+ return MakeConstantExpr<T>(kind, Scalar<T>::Zero(kind));
+}
+
+inline Expr<SubscriptInteger> MakeSubscriptIntExpr(int64_t v) {
+ return Expr<SubscriptInteger>{MakeSubscriptIntConstant(v)};
+}
+
+inline Expr<SubscriptInteger> MakeSubscriptIntExpr(
+ const Scalar<SubscriptInteger> &v) {
+ return Expr<SubscriptInteger>{
+ Constant<SubscriptInteger>{SubscriptIntegerKind, v}};
+}
+
+inline Expr<SubscriptInteger> MakeSubscriptIntExpr(
+ Scalar<SubscriptInteger> &&v) {
+ return Expr<SubscriptInteger>{
+ Constant<SubscriptInteger>{SubscriptIntegerKind, std::move(v)}};
+}
+
+inline Expr<CInteger> MakeCIntegerExpr(int32_t v) {
+ return Expr<CInteger>{MakeCIntegerConstant(v)};
+}
+
+inline Expr<LogicalResult> MakeLogicalResultExpr(bool v) {
+ return Expr<LogicalResult>{MakeLogicalResultConstant(v)};
+}
+
+inline Expr<Ascii> MakeAsciiExpr(const std::string &v) {
+ return Expr<Ascii>{MakeConstant<Ascii>(AsciiKind, v)};
+}
+
+inline Expr<Ascii> MakeAsciiExpr(std::string &&v) {
+ return Expr<Ascii>{MakeConstant<Ascii>(AsciiKind, std::move(v))};
+}
+
} // namespace Fortran::evaluate
#endif // FORTRAN_EVALUATE_EXPRESSION_H_
diff --git a/flang/include/flang/Evaluate/fold-designator.h b/flang/include/flang/Evaluate/fold-designator.h
index 919f3c6db547ba..8c1495b41511ab 100644
--- a/flang/include/flang/Evaluate/fold-designator.h
+++ b/flang/include/flang/Evaluate/fold-designator.h
@@ -113,13 +113,13 @@ class DesignatorFolder {
return common::visit(
[&](const auto &x) { return FoldDesignator(x, which); }, designator.u);
}
- template <int KIND>
std::optional<OffsetSymbol> FoldDesignator(
- const Designator<Type<TypeCategory::Character, KIND>> &designator,
+ const Designator<Type<TypeCategory::Character>> &designator,
ConstantSubscript which) {
+ const int kind{designator.kind()};
return common::visit(
common::visitors{
- [&](const Substring &ss) {
+ [&, kind](const Substring &ss) {
if (const auto *dataRef{ss.GetParentIf<DataRef>()}) {
if (auto result{FoldDesignator(*dataRef, which)}) {
if (auto start{ToInt64(ss.lower())}) {
@@ -134,9 +134,9 @@ class DesignatorFolder {
if (*start < 1) {
isOutOfRange_ = true;
}
- result->Augment(KIND * (*start - 1));
+ result->Augment(kind * (*start - 1));
result->set_size(
- *end >= *start ? KIND * (*end - *start + 1) : 0);
+ *end >= *start ? kind * (*end - *start + 1) : 0);
if (len) {
if (auto lenVal{ToInt64(*len)}) {
if (*end > *lenVal) {
diff --git a/flang/include/flang/Evaluate/fold.h b/flang/include/flang/Evaluate/fold.h
index 709b40ec1aac3f..40ed44b620356b 100644
--- a/flang/include/flang/Evaluate/fold.h
+++ b/flang/include/flang/Evaluate/fold.h
@@ -74,25 +74,34 @@ constexpr auto GetScalarConstantValue(const EXPR &expr)
return std::nullopt;
}
}
+template <typename T, typename EXPR>
+constexpr auto GetScalarConstantValue(int kind, const EXPR &expr)
+ -> std::optional<Scalar<T>> {
+ if (const Constant<T> *constant{UnwrapConstantValue<T>(expr)}) {
+ if (constant->kind() == kind) {
+ return constant->GetScalarValue();
+ } else {
+ return std::nullopt;
+ }
+ } else {
+ return std::nullopt;
+ }
+}
// When an expression is a constant integer, ToInt64() extracts its value.
// Ensure that the expression has been folded beforehand when folding might
// be required.
-template <int KIND>
-constexpr std::optional<std::int64_t> ToInt64(
- const Expr<Type<TypeCategory::Integer, KIND>> &expr) {
- if (auto scalar{
- GetScalarConstantValue<Type<TypeCategory::Integer, KIND>>(expr)}) {
+inline std::optional<std::int64_t> ToInt64(
+ const Expr<Type<TypeCategory::Integer>> &expr) {
+ if (auto scalar{GetScalarConstantValue<Type<TypeCategory::Integer>>(expr)}) {
return scalar->ToInt64();
} else {
return std::nullopt;
}
}
-template <int KIND>
-constexpr std::optional<std::int64_t> ToInt64(
- const Expr<Type<TypeCategory::Unsigned, KIND>> &expr) {
- if (auto scalar{
- GetScalarConstantValue<Type<TypeCategory::Unsigned, KIND>>(expr)}) {
+inline std::optional<std::int64_t> ToInt64(
+ const Expr<Type<TypeCategory::Unsigned>> &expr) {
+ if (auto scalar{GetScalarConstantValue<Type<TypeCategory::Unsigned>>(expr)}) {
return scalar->ToInt64();
} else {
return std::nullopt;
diff --git a/flang/include/flang/Evaluate/initial-image.h b/flang/include/flang/Evaluate/initial-image.h
index 4fa7b9307014b0..c8afa80e71977f 100644
--- a/flang/include/flang/Evaluate/initial-image.h
+++ b/flang/include/flang/Evaluate/initial-image.h
@@ -14,7 +14,6 @@
// initializer for a symbol.
#include "expression.h"
-#include "flang/Evaluate/char.h"
#include <map>
#include <optional>
#include <vector>
@@ -30,11 +29,11 @@ inline void StoreSerialValues(char *dst, llvm::ArrayRef<SCALAR> values,
}
template <typename SCALAR>
-inline void LoadSerialValues(
- const char *src, llvm::MutableArrayRef<SCALAR> values, size_t stride) {
+inline void LoadSerialValues(int kind, const char *src,
+ llvm::MutableArrayRef<SCALAR> values, size_t stride) {
for (auto it : llvm::enumerate(values)) {
- it.value() =
- SCALAR::FromRawBytes(src + stride * it.index(), SCALAR::bytesStored());
+ it.value() = SCALAR::FromRawBytes(
+ kind, src + stride * it.index(), SCALAR::bytesStored(kind));
}
}
@@ -81,10 +80,9 @@ class InitialImage {
}
}
}
- template <int KIND>
Result Add(ConstantSubscript offset, std::size_t bytes,
- const Constant<Type<TypeCategory::Character, KIND>> &x,
- FoldingContext &) {
+ const Constant<Type<TypeCategory::Character>> &x, FoldingContext &) {
+ const int kind{x.kind()};
if (offset < 0 || offset + bytes > data_.size()) {
return OutOfRange;
} else {
@@ -101,8 +99,8 @@ class InitialImage {
} else {
Result result{OkNoChange};
for (auto at{x.lbounds()}; elements-- > 0; x.IncrementSubscripts(at)) {
- typename value::Character<KIND> scalar{x.At(at)};
- auto scalarBytes{scalar.size() * KIND};
+ value::CharacterValue scalar{x.At(at)};
+ auto scalarBytes{scalar.size() * kind};
if (scalarBytes != elementBytes) {
result = LengthMismatch;
}
diff --git a/flang/include/flang/Evaluate/logical.h b/flang/include/flang/Evaluate/logical.h
deleted file mode 100644
index eff9674e279ffe..00000000000000
--- a/flang/include/flang/Evaluate/logical.h
+++ /dev/null
@@ -1,128 +0,0 @@
-//===-- include/flang/Evaluate/logical.h ------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef FORTRAN_EVALUATE_LOGICAL_H_
-#define FORTRAN_EVALUATE_LOGICAL_H_
-
-#include "integer.h"
-#include <cinttypes>
-
-namespace Fortran::evaluate::value {
-
-template <int BITS, bool IS_LIKE_C = true> class Logical {
-public:
- static constexpr int bits{BITS};
- using Word = Integer<bits>;
-
- // Module ISO_C_BINDING kind C_BOOL is LOGICAL(KIND=1) and must have
- // C's bit representation (.TRUE. -> 1, .FALSE. -> 0).
- static constexpr bool IsLikeC{BITS <= 8 || IS_LIKE_C};
-
- constexpr Logical() {} // .FALSE.
- template <int B, bool C>
- constexpr Logical(Logical<B, C> x) : word_{Represent(x.IsTrue())} {}
- constexpr Logical(bool truth) : word_{Represent(truth)} {}
- // A raw word, for DATA initialization
- constexpr Logical(Word &&w) : word_{std::move(w)} {}
-
- template <int B, bool C> constexpr Logical &operator=(Logical<B, C> x) {
- word_ = Represent(x.IsTrue());
- return *this;
- }
-
- Word word() const { return word_; }
- bool IsCanonical() const {
- return word_ == canonicalFalse || word_ == canonicalTrue;
- }
-
- // Fortran actually has only .EQV. & .NEQV. relational operations
- // for LOGICAL, but this template class supports more so that
- // it can be used with the STL for sorting and as a key type for
- // std::set<> & std::map<>.
- template <int B, bool C>
- constexpr bool operator<(const Logical<B, C> &that) const {
- return !IsTrue() && that.IsTrue();
- }
- template <int B, bool C>
- constexpr bool operator<=(const Logical<B, C> &) const {
- return !IsTrue();
- }
- template <int B, bool C>
- constexpr bool operator==(const Logical<B, C> &that) const {
- return IsTrue() == that.IsTrue();
- }
- template <int B, bool C>
- constexpr bool operator!=(const Logical<B, C> &that) const {
- return IsTrue() != that.IsTrue();
- }
- template <int B, bool C>
- constexpr bool operator>=(const Logical<B, C> &) const {
- return IsTrue();
- }
- template <int B, bool C>
- constexpr bool operator>(const Logical<B, C> &that) const {
- return IsTrue() && !that.IsTrue();
- }
-
- constexpr bool IsTrue() const {
- if constexpr (IsLikeC) {
- return !word_.IsZero();
- } else {
- return word_.BTEST(0);
- }
- }
-
- constexpr Logical NOT() const { return {word_.IEOR(canonicalTrue)}; }
-
- constexpr Logical AND(const Logical &that) const {
- return {word_.IAND(that.word_)};
- }
-
- constexpr Logical OR(const Logical &that) const {
- return {word_.IOR(that.word_)};
- }
-
- constexpr Logical EQV(const Logical &that) const { return NEQV(that).NOT(); }
-
- constexpr Logical NEQV(const Logical &that) const {
- return {word_.IEOR(that.word_)};
- }
-
- /// Number of bytes that FromRawBytes/StoreRawBytes would accesses.
- static constexpr std::size_t bytesStored() { return Word::bytesStored(); }
-
- /// De-serializes a logical from \p raw. \p expectedSize must match the the
- /// number of bytes to be read.
- static Logical FromRawBytes(
- const void *raw, [[maybe_unused]] std::size_t expectedSize) {
- return Logical{Word::FromRawBytes(raw, expectedSize)};
- }
-
- /// Serializes this logical to \p dst. \p expectedSize must match the the
- /// number of bytes to be written. If \p changed points to a boolean, it will
- /// be set to true if any bytes at \p dst have changed.
- void StoreRawBytes(void *dst, [[maybe_unused]] size_t expectedSize,
- bool *changed = nullptr) const {
- word_.StoreRawBytes(dst, expectedSize, changed);
- }
-
-private:
- static constexpr Word canonicalTrue{IsLikeC ? 1 : -std::uint64_t{1}};
- static constexpr Word canonicalFalse{0};
- static constexpr Word Represent(bool x) {
- return x ? canonicalTrue : canonicalFalse;
- }
- Word word_;
-};
-
-extern template class Logical<8>;
-extern template class Logical<16>;
-extern template class Logical<32>;
-extern template class Logical<64>;
-} // namespace Fortran::evaluate::value
-#endif // FORTRAN_EVALUATE_LOGICAL_H_
diff --git a/flang/include/flang/Evaluate/match.h b/flang/include/flang/Evaluate/match.h
index dfbfd1b4b64e3a..c579862752ee9d 100644
--- a/flang/include/flang/Evaluate/match.h
+++ b/flang/include/flang/Evaluate/match.h
@@ -36,9 +36,9 @@ struct IsOperation<T, std::void_t<decltype(T::operands)>> {
template <typename T>
constexpr bool is_operation_v{detail::IsOperation<T>::value};
-template <common::TypeCategory C, int K>
-const evaluate::Expr<Type<C, K>> &deparen(const evaluate::Expr<Type<C, K>> &x) {
- if (auto *parens{std::get_if<Parentheses<Type<C, K>>>(&x.u)}) {
+template <common::TypeCategory C>
+const evaluate::Expr<Type<C>> &deparen(const evaluate::Expr<Type<C>> &x) {
+ if (auto *parens{std::get_if<Parentheses<Type<C>>>(&x.u)}) {
return deparen(parens->template operand<0>());
} else {
return x;
@@ -189,16 +189,13 @@ OperationPattern(const Ops &..., llvm::type_identity<OpType>)
// only from operand patterns. This will make it usable in AnyOfPattern.
template <common::LogicalOperator Operator, typename ValType, typename... Ops>
struct LogicalOperationPattern
- : public OperationPattern<LogicalOperation<ValType::kind>, Ops...> {
- using Base = OperationPattern<LogicalOperation<ValType::kind>, Ops...>;
+ : public OperationPattern<LogicalOperation, Ops...> {
+ using Base = OperationPattern<LogicalOperation, Ops...>;
static constexpr common::LogicalOperator opCode{Operator};
private:
- template <int K> bool matchOp(const LogicalOperation<K> &op) const {
- if constexpr (ValType::kind == K) {
- return op.logicalOperator == opCode;
- }
- return false;
+ bool matchOp(const LogicalOperation &op) const {
+ return op.logicalOperator == opCode;
}
template <typename U> bool matchOp(const U &) const { return false; }
diff --git a/flang/include/flang/Evaluate/rewrite.h b/flang/include/flang/Evaluate/rewrite.h
index b571a78b81bd6f..92c058b29d792e 100644
--- a/flang/include/flang/Evaluate/rewrite.h
+++ b/flang/include/flang/Evaluate/rewrite.h
@@ -126,7 +126,8 @@ template <typename Rewriter> struct Mutator {
template <typename D, size_t... Is>
D MutateOp(D &&op, std::index_sequence<Is...>) const {
- return D(Mutate(std::move(op.template operand<Is>()))...);
+ const int kind{op.kind()};
+ return D(kind, Mutate(std::move(op.template operand<Is>()))...);
}
template <typename T, size_t... Is>
@@ -135,17 +136,17 @@ template <typename Rewriter> struct Mutator {
op.ordering, Mutate(std::move(op.template operand<Is>()))...);
}
- template <int K, size_t... Is>
- ComplexComponent<K> MutateOp(
- ComplexComponent<K> &&op, std::index_sequence<Is...>) const {
- return ComplexComponent<K>(
+ template <size_t... Is>
+ ComplexComponent MutateOp(
+ ComplexComponent &&op, std::index_sequence<Is...>) const {
+ return ComplexComponent(
op.isImaginaryPart, Mutate(std::move(op.template operand<Is>()))...);
}
- template <int K, size_t... Is>
- LogicalOperation<K> MutateOp(
- LogicalOperation<K> &&op, std::index_sequence<Is...>) const {
- return LogicalOperation<K>(
+ template <size_t... Is>
+ LogicalOperation MutateOp(
+ LogicalOperation &&op, std::index_sequence<Is...>) const {
+ return LogicalOperation(
op.logicalOperator, Mutate(std::move(op.template operand<Is>()))...);
}
diff --git a/flang/include/flang/Evaluate/shape.h b/flang/include/flang/Evaluate/shape.h
index e82401dcfebd86..5bca399c50ef43 100644
--- a/flang/include/flang/Evaluate/shape.h
+++ b/flang/include/flang/Evaluate/shape.h
@@ -31,6 +31,26 @@ using ExtentExpr = Expr<ExtentType>;
using MaybeExtentExpr = std::optional<ExtentExpr>;
using Shape = std::vector<MaybeExtentExpr>;
+inline constexpr int ExtentIntKind = Fortran::evaluate::SubscriptIntegerKind;
+
+inline Constant<ExtentType> MakeExtentConstant(int64_t v) {
+ return Constant<ExtentType>{
+ ExtentIntKind, Scalar<ExtentType>{ExtentIntKind, v}};
+}
+
+inline Constant<ExtentType> MakeExtentConstant(const value::IntegerValue &v) {
+ return Constant<ExtentType>{
+ ExtentIntKind, Scalar<ExtentType>{ExtentIntKind, v}};
+}
+
+inline ExtentExpr MakeExtentExpr(int64_t v) {
+ return ExtentExpr{MakeExtentConstant(v)};
+}
+
+inline ExtentExpr MakeExtentExpr(const value::IntegerValue &v) {
+ return ExtentExpr{MakeExtentConstant(v)};
+}
+
bool IsImpliedShape(const Symbol &);
bool IsExplicitShape(const Symbol &);
@@ -258,7 +278,7 @@ class GetShapeHelper
template <typename T>
MaybeExtentExpr GetArrayConstructorExtent(
const ArrayConstructorValues<T> &values) const {
- ExtentExpr result{0};
+ ExtentExpr result{MakeExtentConstant(0)};
for (const auto &value : values) {
if (MaybeExtentExpr n{GetArrayConstructorValueExtent(value)}) {
AccumulateExtent(result, std::move(*n));
diff --git a/flang/include/flang/Evaluate/static-data.h b/flang/include/flang/Evaluate/static-data.h
index 833cc6cc6f3fa5..f9cc60a4e574ee 100644
--- a/flang/include/flang/Evaluate/static-data.h
+++ b/flang/include/flang/Evaluate/static-data.h
@@ -63,6 +63,7 @@ class StaticDataObject {
StaticDataObject &Push(const std::string &, bool /*ignored*/ = false);
StaticDataObject &Push(const std::u16string &, bool bigEndian = false);
StaticDataObject &Push(const std::u32string &, bool bigEndian = false);
+ StaticDataObject &Push(const value::CharacterValue &, bool bigEndian = false);
std::optional<std::string> AsString() const;
std::optional<std::u16string> AsU16String(bool bigEndian = false) const;
std::optional<std::u32string> AsU32String(bool bigEndian = false) const;
diff --git a/flang/include/flang/Evaluate/tools.h b/flang/include/flang/Evaluate/tools.h
index c877ec5f5705b8..f50ddb53249fc3 100644
--- a/flang/include/flang/Evaluate/tools.h
+++ b/flang/include/flang/Evaluate/tools.h
@@ -195,6 +195,27 @@ auto UnwrapExpr(B &x) -> common::Constify<A, B> * {
}
return nullptr;
}
+template <typename A, typename B>
+auto UnwrapExpr(int kind, B &x) -> common::Constify<A, B> * {
+ using Ty = std::decay_t<B>;
+ if (x.kind() != kind)
+ return nullptr;
+ if constexpr (std::is_same_v<A, Ty>) {
+ return &x;
+ } else if constexpr (std::is_same_v<Ty, ActualArgument>) {
+ if (auto *expr{x.UnwrapExpr()}) {
+ return UnwrapExpr<A>(*expr);
+ }
+ } else if constexpr (std::is_same_v<Ty, Expr<SomeType>>) {
+ return common::visit([](auto &x) { return UnwrapExpr<A>(x); }, x.u);
+ } else if constexpr (!common::HasMember<A, TypelessExpression>) {
+ if constexpr (std::is_same_v<Ty, Expr<ResultType<A>>> ||
+ std::is_same_v<Ty, Expr<SomeKind<ResultType<A>::category>>>) {
+ return common::visit([](auto &x) { return UnwrapExpr<A>(x); }, x.u);
+ }
+ }
+ return nullptr;
+}
template <typename A, typename B>
const A *UnwrapExpr(const std::optional<B> &x) {
@@ -204,6 +225,14 @@ const A *UnwrapExpr(const std::optional<B> &x) {
return nullptr;
}
}
+template <typename A, typename B>
+const A *UnwrapExpr(int kind, const std::optional<B> &x) {
+ if (x) {
+ return UnwrapExpr<A>(kind, *x);
+ } else {
+ return nullptr;
+ }
+}
template <typename A, typename B> A *UnwrapExpr(std::optional<B> &x) {
if (x) {
@@ -212,6 +241,13 @@ template <typename A, typename B> A *UnwrapExpr(std::optional<B> &x) {
return nullptr;
}
}
+template <typename A, typename B> A *UnwrapExpr(int kind, std::optional<B> &x) {
+ if (x) {
+ return UnwrapExpr<A>(kind, *x);
+ } else {
+ return nullptr;
+ }
+}
template <typename A, typename B> const A *UnwrapExpr(const B *x) {
if (x) {
@@ -221,6 +257,14 @@ template <typename A, typename B> const A *UnwrapExpr(const B *x) {
}
}
+template <typename A, typename B> const A *UnwrapExpr(int kind, const B *x) {
+ if (x) {
+ return UnwrapExpr<A>(kind, *x);
+ } else {
+ return nullptr;
+ }
+}
+
template <typename A, typename B> A *UnwrapExpr(B *x) {
if (x) {
return UnwrapExpr<A>(*x);
@@ -229,6 +273,14 @@ template <typename A, typename B> A *UnwrapExpr(B *x) {
}
}
+template <typename A, typename B> A *UnwrapExpr(int kind, B *x) {
+ if (x) {
+ return UnwrapExpr<A>(kind, *x);
+ } else {
+ return nullptr;
+ }
+}
+
// A variant of UnwrapExpr above that also skips through (parentheses)
// and conversions of kinds within a category. Useful for extracting LEN
// type parameter inquiries, at least.
@@ -545,50 +597,56 @@ const Symbol *GetLastPointerSymbol(const evaluate::DataRef &);
// one arbitrary expression to the type of another with ConvertTo(to, from).
template <typename TO, TypeCategory FROMCAT>
-Expr<TO> ConvertToType(Expr<SomeKind<FROMCAT>> &&x) {
+Expr<TO> ConvertToType(int toKind, Expr<SomeKind<FROMCAT>> &&x) {
static_assert(IsSpecificIntrinsicType<TO>);
if constexpr (FROMCAT == TO::category) {
- if (auto *already{std::get_if<Expr<TO>>(&x.u)}) {
+ auto *already{std::get_if<Expr<TO>>(&x.u)};
+ if (already && already->kind() == toKind) {
return std::move(*already);
} else {
- return Expr<TO>{Convert<TO, FROMCAT>{std::move(x)}};
+ return Expr<TO>{Convert<TO, FROMCAT>{toKind, std::move(x)}};
}
} else if constexpr (TO::category == TypeCategory::Complex) {
using Part = typename TO::Part;
- Scalar<Part> zero;
- return Expr<TO>{ComplexConstructor<TO::kind>{
- ConvertToType<Part>(std::move(x)), Expr<Part>{Constant<Part>{zero}}}};
+ return Expr<TO>{ComplexConstructor{
+ ConvertToType<Part>(toKind, std::move(x)), MakeZeroExpr<Part>(toKind)}};
} else if constexpr (FROMCAT == TypeCategory::Complex) {
// Extract and convert the real component of a complex value
return common::visit(
[&](auto &&z) {
using ZType = ResultType<decltype(z)>;
using Part = typename ZType::Part;
- return ConvertToType<TO, TypeCategory::Real>(Expr<SomeReal>{
- Expr<Part>{ComplexComponent<Part::kind>{false, std::move(z)}}});
+ return ConvertToType<TO, TypeCategory::Real>(toKind,
+ Expr<SomeReal>{
+ Expr<Part>{ComplexComponent{false, std::move(z)}}});
},
std::move(x.u));
} else {
- return Expr<TO>{Convert<TO, FROMCAT>{std::move(x)}};
+ return Expr<TO>{Convert<TO, FROMCAT>{toKind, std::move(x)}};
}
}
-template <typename TO, TypeCategory FROMCAT, int FROMKIND>
-Expr<TO> ConvertToType(Expr<Type<FROMCAT, FROMKIND>> &&x) {
- return ConvertToType<TO, FROMCAT>(Expr<SomeKind<FROMCAT>>{std::move(x)});
+template <typename TO, TypeCategory FROMCAT>
+Expr<TO> ConvertToType(int toKind, Expr<Type<FROMCAT>> &&x) {
+ return ConvertToType<TO, FROMCAT>(
+ toKind, Expr<SomeKind<FROMCAT>>{std::move(x)});
}
-template <typename TO> Expr<TO> ConvertToType(BOZLiteralConstant &&x) {
+template <typename TO>
+Expr<TO> ConvertToType(int toKind, BOZLiteralConstant &&x) {
static_assert(IsSpecificIntrinsicType<TO>);
if constexpr (TO::category == TypeCategory::Integer ||
TO::category == TypeCategory::Unsigned) {
- return Expr<TO>{
- Constant<TO>{Scalar<TO>::ConvertUnsigned(std::move(x)).value}};
+ return MakeConstantExpr<TO>(toKind,
+ Scalar<TO>::ConvertUnsigned(std::move(x), Scalar<TO>::bits(toKind))
+ .value);
} else {
static_assert(TO::category == TypeCategory::Real);
- using Word = typename Scalar<TO>::Word;
- return Expr<TO>{
- Constant<TO>{Scalar<TO>{Word::ConvertUnsigned(std::move(x)).value}}};
+ using Word = value::IntegerValue;
+ return MakeConstantExpr<TO>(toKind,
+ Scalar<TO>{toKind,
+ Word::ConvertUnsigned(std::move(x), Scalar<TO>::bits(toKind))
+ .value});
}
}
@@ -606,10 +664,10 @@ std::optional<Expr<SomeType>> ConvertToType(
const Symbol &, std::optional<Expr<SomeType>> &&);
// Conversions to the type of another expression
-template <TypeCategory TC, int TK, typename FROM>
-common::IfNoLvalue<Expr<Type<TC, TK>>, FROM> ConvertTo(
- const Expr<Type<TC, TK>> &, FROM &&x) {
- return ConvertToType<Type<TC, TK>>(std::move(x));
+template <TypeCategory TC, typename FROM>
+common::IfNoLvalue<Expr<Type<TC>>, FROM> ConvertTo(
+ int toKind, const Expr<Type<TC>> &to, FROM &&x) {
+ return ConvertToType<Type<TC>>(toKind, std::move(x));
}
template <TypeCategory TC, typename FROM>
@@ -618,46 +676,19 @@ common::IfNoLvalue<Expr<SomeKind<TC>>, FROM> ConvertTo(
return common::visit(
[&](const auto &toKindExpr) {
using KindExpr = std::decay_t<decltype(toKindExpr)>;
+ const int toKind{toKindExpr.kind()};
return AsCategoryExpr(
- ConvertToType<ResultType<KindExpr>>(std::move(from)));
- },
- to.u);
-}
-
-template <typename FROM>
-common::IfNoLvalue<Expr<SomeType>, FROM> ConvertTo(
- const Expr<SomeType> &to, FROM &&from) {
- return common::visit(
- [&](const auto &toCatExpr) {
- return AsGenericExpr(ConvertTo(toCatExpr, std::move(from)));
+ ConvertToType<ResultType<KindExpr>>(toKind, std::move(from)));
},
to.u);
}
// Convert an expression of some known category to a dynamically chosen
// kind of some category (usually but not necessarily distinct).
-template <TypeCategory TOCAT, typename VALUE> struct ConvertToKindHelper {
- using Result = std::optional<Expr<SomeKind<TOCAT>>>;
- using Types = CategoryTypes<TOCAT>;
- ConvertToKindHelper(int k, VALUE &&x) : kind{k}, value{std::move(x)} {}
- template <typename T> Result Test() {
- if (kind == T::kind) {
- return std::make_optional(
- AsCategoryExpr(ConvertToType<T>(std::move(value))));
- }
- return std::nullopt;
- }
- int kind;
- VALUE value;
-};
-
template <TypeCategory TOCAT, typename VALUE>
common::IfNoLvalue<Expr<SomeKind<TOCAT>>, VALUE> ConvertToKind(
int kind, VALUE &&x) {
- auto result{common::SearchTypes(
- ConvertToKindHelper<TOCAT, VALUE>{kind, std::move(x)})};
- CHECK(result.has_value());
- return *result;
+ return AsCategoryExpr(ConvertToType<Type<TOCAT>>(kind, std::move(x)));
}
// Given a type category CAT, SameKindExprs<CAT, N> is a variant that
@@ -678,25 +709,25 @@ using SameKindExprs =
template <TypeCategory CAT>
SameKindExprs<CAT, 2> AsSameKindExprs(
Expr<SomeKind<CAT>> &&x, Expr<SomeKind<CAT>> &&y) {
- return common::visit(
- [&](auto &&kx, auto &&ky) -> SameKindExprs<CAT, 2> {
- using XTy = ResultType<decltype(kx)>;
- using YTy = ResultType<decltype(ky)>;
- if constexpr (std::is_same_v<XTy, YTy>) {
- return {SameExprs<XTy>{std::move(kx), std::move(ky)}};
- } else if constexpr (XTy::kind < YTy::kind) {
- return {SameExprs<YTy>{ConvertTo(ky, std::move(kx)), std::move(ky)}};
- } else {
- return {SameExprs<XTy>{std::move(kx), ConvertTo(kx, std::move(ky))}};
- }
+ Expr<Type<CAT>> kx{std::get<Expr<Type<CAT>>>(std::move(x.u))};
+ int xKind{kx.kind()};
+ Expr<Type<CAT>> ky{std::get<Expr<Type<CAT>>>(std::move(y.u))};
+ int yKind{ky.kind()};
+ if (xKind == yKind) {
+ return {SameExprs<Type<CAT>>{std::move(kx), std::move(ky)}};
+ } else if (xKind < yKind) {
+ return {SameExprs<Type<CAT>>{
+ ConvertTo(yKind, ky, std::move(kx)), std::move(ky)}};
+ } else {
+ return {SameExprs<Type<CAT>>{
+ std::move(kx), ConvertTo(xKind, kx, std::move(ky))}};
+ }
#if !__clang__ && 100 * __GNUC__ + __GNUC_MINOR__ == 801
// Silence a bogus warning about a missing return with G++ 8.1.0.
// Doesn't execute, but must be correctly typed.
CHECK(!"can't happen");
- return {SameExprs<XTy>{std::move(kx), std::move(kx)}};
+ return {SameExprs<Type<CAT>>{std::move(kx), std::move(kx)}};
#endif
- },
- std::move(x.u), std::move(y.u));
}
// Ensure that both operands of an intrinsic REAL operation (or CMPLX()
@@ -719,9 +750,10 @@ std::optional<Expr<SomeComplex>> ConstructComplex(parser::ContextualMessages &,
template <typename A> Expr<TypeOf<A>> ScalarConstantToExpr(const A &x) {
using Ty = TypeOf<A>;
+ const int kind{x.kind()};
static_assert(
std::is_same_v<Scalar<Ty>, std::decay_t<A>>, "TypeOf<> is broken");
- return Expr<TypeOf<A>>{Constant<Ty>{x}};
+ return MakeConstantExpr<Ty>(kind, x);
}
// Combine two expressions of the same specific numeric type with an operation
@@ -729,7 +761,8 @@ template <typename A> Expr<TypeOf<A>> ScalarConstantToExpr(const A &x) {
template <template <typename> class OPR, typename SPECIFIC>
Expr<SPECIFIC> Combine(Expr<SPECIFIC> &&x, Expr<SPECIFIC> &&y) {
static_assert(IsSpecificIntrinsicType<SPECIFIC>);
- return AsExpr(OPR<SPECIFIC>{std::move(x), std::move(y)});
+ CHECK(x.kind() == y.kind());
+ return AsExpr(OPR<SPECIFIC>{x.kind(), std::move(x), std::move(y)});
}
// Given two expressions of arbitrary kind in the same intrinsic type
@@ -791,19 +824,18 @@ Expr<LogicalResult> PackageRelation(
Relational<SomeType>{Relational<T>{opr, std::move(x), std::move(y)}}};
}
-template <int K>
-Expr<Type<TypeCategory::Logical, K>> LogicalNegation(
- Expr<Type<TypeCategory::Logical, K>> &&x) {
- return AsExpr(Not<K>{std::move(x)});
+inline Expr<Type<TypeCategory::Logical>> LogicalNegation(
+ Expr<Type<TypeCategory::Logical>> &&x) {
+ const int kind{x.kind()};
+ return AsExpr(Not{kind, std::move(x)});
}
Expr<SomeLogical> LogicalNegation(Expr<SomeLogical> &&);
-template <int K>
-Expr<Type<TypeCategory::Logical, K>> BinaryLogicalOperation(LogicalOperator opr,
- Expr<Type<TypeCategory::Logical, K>> &&x,
- Expr<Type<TypeCategory::Logical, K>> &&y) {
- return AsExpr(LogicalOperation<K>{opr, std::move(x), std::move(y)});
+inline Expr<Type<TypeCategory::Logical>> BinaryLogicalOperation(
+ LogicalOperator opr, Expr<Type<TypeCategory::Logical>> &&x,
+ Expr<Type<TypeCategory::Logical>> &&y) {
+ return AsExpr(LogicalOperation{opr, std::move(x), std::move(y)});
}
Expr<SomeLogical> BinaryLogicalOperation(
@@ -814,29 +846,28 @@ Expr<SomeLogical> BinaryLogicalOperation(
// emit any message. Use the more general templates (above) in other
// situations.
-template <TypeCategory C, int K>
-Expr<Type<C, K>> operator-(Expr<Type<C, K>> &&x) {
- return AsExpr(Negate<Type<C, K>>{std::move(x)});
+template <TypeCategory C> Expr<Type<C>> operator-(Expr<Type<C>> &&x) {
+ return AsExpr(Negate<Type<C>>{std::move(x)});
}
-template <TypeCategory C, int K>
-Expr<Type<C, K>> operator+(Expr<Type<C, K>> &&x, Expr<Type<C, K>> &&y) {
- return AsExpr(Combine<Add, Type<C, K>>(std::move(x), std::move(y)));
+template <TypeCategory C>
+Expr<Type<C>> operator+(Expr<Type<C>> &&x, Expr<Type<C>> &&y) {
+ return AsExpr(Combine<Add, Type<C>>(std::move(x), std::move(y)));
}
-template <TypeCategory C, int K>
-Expr<Type<C, K>> operator-(Expr<Type<C, K>> &&x, Expr<Type<C, K>> &&y) {
- return AsExpr(Combine<Subtract, Type<C, K>>(std::move(x), std::move(y)));
+template <TypeCategory C>
+Expr<Type<C>> operator-(Expr<Type<C>> &&x, Expr<Type<C>> &&y) {
+ return AsExpr(Combine<Subtract, Type<C>>(std::move(x), std::move(y)));
}
-template <TypeCategory C, int K>
-Expr<Type<C, K>> operator*(Expr<Type<C, K>> &&x, Expr<Type<C, K>> &&y) {
- return AsExpr(Combine<Multiply, Type<C, K>>(std::move(x), std::move(y)));
+template <TypeCategory C>
+Expr<Type<C>> operator*(Expr<Type<C>> &&x, Expr<Type<C>> &&y) {
+ return AsExpr(Combine<Multiply, Type<C>>(std::move(x), std::move(y)));
}
-template <TypeCategory C, int K>
-Expr<Type<C, K>> operator/(Expr<Type<C, K>> &&x, Expr<Type<C, K>> &&y) {
- return AsExpr(Combine<Divide, Type<C, K>>(std::move(x), std::move(y)));
+template <TypeCategory C>
+Expr<Type<C>> operator/(Expr<Type<C>> &&x, Expr<Type<C>> &&y) {
+ return AsExpr(Combine<Divide, Type<C>>(std::move(x), std::move(y)));
}
template <TypeCategory C> Expr<SomeKind<C>> operator-(Expr<SomeKind<C>> &&x) {
@@ -879,9 +910,9 @@ struct TypeKindVisitor {
TypeKindVisitor(int k, VALUE &&x) : kind{k}, value{std::move(x)} {}
TypeKindVisitor(int k, const VALUE &x) : kind{k}, value{x} {}
- template <typename T> Result Test() {
- if (kind == T::kind) {
- return AsGenericExpr(TEMPLATE<T>{std::move(value)});
+ template <typename T> Result Test(int k) {
+ if (kind == k) {
+ return AsGenericExpr(TEMPLATE<T>{k, std::move(value)});
}
return std::nullopt;
}
@@ -897,7 +928,7 @@ template <TypeCategory CATEGORY, template <typename> typename WRAPPER,
typename WRAPPED>
common::IfNoLvalue<std::optional<Expr<SomeType>>, WRAPPED> WrapperHelper(
int kind, WRAPPED &&x) {
- return common::SearchTypes(
+ return SearchTypes(
TypeKindVisitor<CATEGORY, WRAPPER, WRAPPED>{kind, std::move(x)});
}
@@ -925,7 +956,8 @@ common::IfNoLvalue<std::optional<Expr<SomeType>>, WRAPPED> TypedWrapper(
return WrapperHelper<TypeCategory::Logical, WRAPPER, WRAPPED>(
dyType.kind(), std::move(x));
case TypeCategory::Derived:
- return AsGenericExpr(Expr<SomeDerived>{WRAPPER<SomeDerived>{std::move(x)}});
+ return AsGenericExpr(
+ Expr<SomeDerived>{WRAPPER<SomeDerived>{0, std::move(x)}});
}
}
@@ -1250,16 +1282,16 @@ class ScalarConstantExpander {
// If the type is Character or a derived type, take the length or type
// (resp.) from a another Constant.
template <typename T>
-Constant<T> PackageConstant(std::vector<Scalar<T>> &&elements,
+Constant<T> PackageConstant(int kind, std::vector<Scalar<T>> &&elements,
const Constant<T> &reference, const ConstantSubscripts &shape) {
if constexpr (T::category == TypeCategory::Character) {
return Constant<T>{
- reference.LEN(), std::move(elements), ConstantSubscripts{shape}};
+ kind, reference.LEN(), std::move(elements), ConstantSubscripts{shape}};
} else if constexpr (T::category == TypeCategory::Derived) {
return Constant<T>{reference.GetType().GetDerivedTypeSpec(),
std::move(elements), ConstantSubscripts{shape}};
} else {
- return Constant<T>{std::move(elements), ConstantSubscripts{shape}};
+ return Constant<T>{kind, std::move(elements), ConstantSubscripts{shape}};
}
}
@@ -1569,7 +1601,7 @@ using OperatorSet = common::EnumSet<Operator, 32>;
std::string ToString(Operator op);
-template <int Kind> Operator OperationCode(const LogicalOperation<Kind> &op) {
+inline Operator OperationCode(const LogicalOperation &op) {
switch (op.logicalOperator) {
case common::LogicalOperator::And:
return Operator::And;
diff --git a/flang/include/flang/Evaluate/type.h b/flang/include/flang/Evaluate/type.h
index 165784159b9ca8..0974b87b016503 100644
--- a/flang/include/flang/Evaluate/type.h
+++ b/flang/include/flang/Evaluate/type.h
@@ -16,12 +16,13 @@
// are suitable for use as template parameters to instantiate other class
// templates, like expressions, over the supported types and kinds.
+#include "character-value.h"
#include "common.h"
-#include "complex.h"
+#include "complex-value.h"
#include "formatting.h"
-#include "integer.h"
-#include "logical.h"
-#include "real.h"
+#include "integer-value.h"
+#include "logical-value.h"
+#include "real-value.h"
#include "flang/Common/idioms.h"
#include "flang/Common/real.h"
#include "flang/Common/template.h"
@@ -52,15 +53,29 @@ using common::TypeCategory;
class TargetCharacteristics;
// Specific intrinsic types are represented by specializations of
-// this class template Type<CATEGORY, KIND>.
-template <TypeCategory CATEGORY, int KIND = 0> class Type;
+// this class template Type<CATEGORY>.
+// This used to be Type<CATEGORY,KIND>, but now KIND is passed at runtime.
+// TODO: Since they are functionally the same, replace all occurances of Type
+// with TypeCategory.
+template <TypeCategory CATEGORY> class Type;
-using SubscriptInteger = Type<TypeCategory::Integer, 8>;
-using CInteger = Type<TypeCategory::Integer, 4>;
-using LargestInt = Type<TypeCategory::Integer, 16>;
-using LogicalResult = Type<TypeCategory::Logical, 4>;
-using LargestReal = Type<TypeCategory::Real, 16>;
-using Ascii = Type<TypeCategory::Character, 1>;
+using SubscriptInteger = Type<TypeCategory::Integer>;
+inline constexpr int SubscriptIntegerKind{8};
+
+using CInteger = Type<TypeCategory::Integer>;
+inline constexpr int CIntegerKind{4};
+
+using LargestInt = Type<TypeCategory::Integer>;
+inline constexpr int LargestIntKind{16};
+
+using LogicalResult = Type<TypeCategory::Logical>;
+inline constexpr int LogicalResultKind{4};
+
+using LargestReal = Type<TypeCategory::Real>;
+inline constexpr int LargestRealKind{16};
+
+using Ascii = Type<TypeCategory::Character>;
+inline constexpr int AsciiKind{1};
// DynamicType is meant to be suitable for use as the result type for
// GetType() functions and member functions; consequently, it must be
@@ -252,26 +267,33 @@ const semantics::DerivedTypeSpec *GetDerivedTypeSpec(
const semantics::DerivedTypeSpec *GetParentTypeSpec(
const semantics::DerivedTypeSpec &);
-template <TypeCategory CATEGORY, int KIND = 0> struct TypeBase {
+template <TypeCategory CATEGORY> struct TypeBase {
+ constexpr int kind() const { return kind_; }
+
static constexpr TypeCategory category{CATEGORY};
- static constexpr int kind{KIND};
- constexpr bool operator==(const TypeBase &) const { return true; }
- static constexpr DynamicType GetType() { return {category, kind}; }
- static std::string AsFortran() { return GetType().AsFortran(); }
+ explicit constexpr TypeBase(int kind) : kind_{kind} {}
+ constexpr bool operator==(const TypeBase &that) const {
+ return kind_ == that.kind_;
+ }
+ constexpr DynamicType GetType() const { return {category, kind_}; }
+ std::string AsFortran() const { return GetType().AsFortran(); }
+
+private:
+ int kind_;
};
-template <int KIND>
-class Type<TypeCategory::Integer, KIND>
- : public TypeBase<TypeCategory::Integer, KIND> {
+template <>
+class Type<TypeCategory::Integer> : public TypeBase<TypeCategory::Integer> {
public:
- using Scalar = value::Integer<8 * KIND>;
+ using TypeBase::TypeBase;
+ using Scalar = value::IntegerValue;
};
-template <int KIND>
-class Type<TypeCategory::Unsigned, KIND>
- : public TypeBase<TypeCategory::Unsigned, KIND> {
+template <>
+class Type<TypeCategory::Unsigned> : public TypeBase<TypeCategory::Unsigned> {
public:
- using Scalar = value::Integer<8 * KIND>;
+ using TypeBase::TypeBase;
+ using Scalar = value::IntegerValue;
};
// Records when a default REAL literal constant is inexactly converted to binary
@@ -290,63 +312,40 @@ class TrackInexactLiteralConversion {
bool isFromInexactLiteralConversion_{false};
};
-template <int KIND>
-class Type<TypeCategory::Real, KIND>
- : public TypeBase<TypeCategory::Real, KIND>,
- public TrackInexactLiteralConversion {
+template <>
+class Type<TypeCategory::Real> : public TypeBase<TypeCategory::Real>,
+ public TrackInexactLiteralConversion {
public:
- static constexpr int precision{common::PrecisionOfRealKind(KIND)};
- static constexpr int bits{common::BitsForBinaryPrecision(precision)};
- using Scalar =
- value::Real<std::conditional_t<precision == 64,
- value::X87IntegerContainer, value::Integer<bits>>,
- precision>;
+ using TypeBase::TypeBase;
+ using Scalar = value::RealValue;
};
// The KIND type parameter on COMPLEX is the kind of each of its components.
-template <int KIND>
-class Type<TypeCategory::Complex, KIND>
- : public TypeBase<TypeCategory::Complex, KIND>,
- public TrackInexactLiteralConversion {
-public:
- using Part = Type<TypeCategory::Real, KIND>;
- using Scalar = value::Complex<typename Part::Scalar>;
-};
-
template <>
-class Type<TypeCategory::Character, 1>
- : public TypeBase<TypeCategory::Character, 1> {
+class Type<TypeCategory::Complex> : public TypeBase<TypeCategory::Complex>,
+ public TrackInexactLiteralConversion {
public:
- using Scalar = std::string;
+ using TypeBase::TypeBase;
+ using Part = Type<TypeCategory::Real>;
+ using Scalar = value::ComplexValue;
};
template <>
-class Type<TypeCategory::Character, 2>
- : public TypeBase<TypeCategory::Character, 2> {
+class Type<TypeCategory::Character> : public TypeBase<TypeCategory::Character> {
public:
- using Scalar = std::u16string;
+ using TypeBase::TypeBase;
+ using Scalar = value::CharacterValue;
};
template <>
-class Type<TypeCategory::Character, 4>
- : public TypeBase<TypeCategory::Character, 4> {
-public:
- using Scalar = std::u32string;
-};
-
-template <int KIND>
-class Type<TypeCategory::Logical, KIND>
- : public TypeBase<TypeCategory::Logical, KIND> {
+class Type<TypeCategory::Logical> : public TypeBase<TypeCategory::Logical> {
public:
- using Scalar = value::Logical<8 * KIND>;
+ using TypeBase::TypeBase;
+ using Scalar = value::LogicalValue;
};
// Type functions
-// Given a specific type, find the type of the same kind in another category.
-template <TypeCategory CATEGORY, typename T>
-using SameKind = Type<CATEGORY, std::decay_t<T>::kind>;
-
// Many expressions, including subscripts, CHARACTER lengths, array bounds,
// and effective type parameter values, are of a maximal kind of INTEGER.
using IndirectSubscriptIntegerExpr =
@@ -355,17 +354,8 @@ using IndirectSubscriptIntegerExpr =
// For each intrinsic type category CAT, CategoryTypes<CAT> is an instantiation
// of std::tuple<Type<CAT, K>> that comprises every kind value K in that
// category that could possibly be supported on any target.
-template <TypeCategory CATEGORY, int KIND>
-using CategoryKindTuple =
- std::conditional_t<common::IsValidKindOfIntrinsicType(CATEGORY, KIND),
- std::tuple<Type<CATEGORY, KIND>>, std::tuple<>>;
-
-template <TypeCategory CATEGORY, int... KINDS>
-using CategoryTypesHelper =
- common::CombineTuples<CategoryKindTuple<CATEGORY, KINDS>...>;
-
template <TypeCategory CATEGORY>
-using CategoryTypes = CategoryTypesHelper<CATEGORY, 1, 2, 3, 4, 8, 10, 16, 32>;
+using CategoryTypes = std::tuple<Type<CATEGORY>>;
using IntegerTypes = CategoryTypes<TypeCategory::Integer>;
using RealTypes = CategoryTypes<TypeCategory::Real>;
@@ -426,7 +416,9 @@ template <> class SomeKind<TypeCategory::Derived> {
static constexpr TypeCategory category{TypeCategory::Derived};
using Scalar = StructureConstructor;
- constexpr SomeKind() {} // CLASS(*)
+ // Argument provided for having the same signature as Types. Derived types
+ // don't have a kind, it is expected to be zero.
+ constexpr explicit SomeKind(int kind = 0) { CHECK(kind == 0); }
constexpr explicit SomeKind(const semantics::DerivedTypeSpec &dts)
: derivedTypeSpec_{&dts} {}
constexpr explicit SomeKind(const DynamicType &dt)
@@ -514,42 +506,41 @@ bool AreSameDerivedTypeIgnoringLengthParameters(
bool AreSameDerivedTypeIgnoringSequence(
const semantics::DerivedTypeSpec &, const semantics::DerivedTypeSpec &);
-// For generating "[extern] template class", &c. boilerplate
-#define EXPAND_FOR_EACH_INTEGER_KIND(M, P, S) \
- M(P, S, 1) M(P, S, 2) M(P, S, 4) M(P, S, 8) M(P, S, 16)
-#define EXPAND_FOR_EACH_REAL_KIND(M, P, S) \
- M(P, S, 2) M(P, S, 3) M(P, S, 4) M(P, S, 8) M(P, S, 10) M(P, S, 16)
-#define EXPAND_FOR_EACH_COMPLEX_KIND(M, P, S) EXPAND_FOR_EACH_REAL_KIND(M, P, S)
-#define EXPAND_FOR_EACH_CHARACTER_KIND(M, P, S) M(P, S, 1) M(P, S, 2) M(P, S, 4)
-#define EXPAND_FOR_EACH_LOGICAL_KIND(M, P, S) \
- M(P, S, 1) M(P, S, 2) M(P, S, 4) M(P, S, 8)
-#define EXPAND_FOR_EACH_UNSIGNED_KIND EXPAND_FOR_EACH_INTEGER_KIND
-
-#define FOR_EACH_INTEGER_KIND_HELP(PREFIX, SUFFIX, K) \
- PREFIX<Type<TypeCategory::Integer, K>> SUFFIX;
-#define FOR_EACH_REAL_KIND_HELP(PREFIX, SUFFIX, K) \
- PREFIX<Type<TypeCategory::Real, K>> SUFFIX;
-#define FOR_EACH_COMPLEX_KIND_HELP(PREFIX, SUFFIX, K) \
- PREFIX<Type<TypeCategory::Complex, K>> SUFFIX;
-#define FOR_EACH_CHARACTER_KIND_HELP(PREFIX, SUFFIX, K) \
- PREFIX<Type<TypeCategory::Character, K>> SUFFIX;
-#define FOR_EACH_LOGICAL_KIND_HELP(PREFIX, SUFFIX, K) \
- PREFIX<Type<TypeCategory::Logical, K>> SUFFIX;
-#define FOR_EACH_UNSIGNED_KIND_HELP(PREFIX, SUFFIX, K) \
- PREFIX<Type<TypeCategory::Unsigned, K>> SUFFIX;
+/// Check that KIND is consistent with thew type. That is, for a type category
+/// that has a kind as part of its type, it must be non-zero, and otherwise
+/// zero.
+#define CHECK_KIND(KIND, TY) \
+ { \
+ if constexpr (std::is_same_v<TY, SomeDerived> || \
+ std::is_same_v<TY, SomeKind<TypeCategory::Derived>> || \
+ std::is_same_v<TY, SomeType>) { \
+ CHECK((KIND) == 0 && "Type does not have a kind"); \
+ } else if constexpr (std::is_same_v<TY, Type<TypeCategory::Integer>> || \
+ std::is_same_v<TY, Type<TypeCategory::Unsigned>> || \
+ std::is_same_v<TY, Type<TypeCategory::Real>> || \
+ std::is_same_v<TY, Type<TypeCategory::Complex>> || \
+ std::is_same_v<TY, Type<TypeCategory::Logical>> || \
+ std::is_same_v<TY, Type<TypeCategory::Character>>) { \
+ CHECK((KIND) != 0 && "Type must come with a kind"); \
+ } else { \
+ static_assert(false, "Don't know whether TY should have a kind"); \
+ } \
+ }
+// TODO: The kind used to be part of Type<>, but since the FOR_EACH macros only
+// expand to a single entry, there is no use of them anymore.
#define FOR_EACH_INTEGER_KIND(PREFIX, SUFFIX) \
- EXPAND_FOR_EACH_INTEGER_KIND(FOR_EACH_INTEGER_KIND_HELP, PREFIX, SUFFIX)
+ PREFIX<Type<TypeCategory::Integer>> SUFFIX;
#define FOR_EACH_REAL_KIND(PREFIX, SUFFIX) \
- EXPAND_FOR_EACH_REAL_KIND(FOR_EACH_REAL_KIND_HELP, PREFIX, SUFFIX)
+ PREFIX<Type<TypeCategory::Real>> SUFFIX;
#define FOR_EACH_COMPLEX_KIND(PREFIX, SUFFIX) \
- EXPAND_FOR_EACH_COMPLEX_KIND(FOR_EACH_COMPLEX_KIND_HELP, PREFIX, SUFFIX)
+ PREFIX<Type<TypeCategory::Complex>> SUFFIX;
#define FOR_EACH_CHARACTER_KIND(PREFIX, SUFFIX) \
- EXPAND_FOR_EACH_CHARACTER_KIND(FOR_EACH_CHARACTER_KIND_HELP, PREFIX, SUFFIX)
+ PREFIX<Type<TypeCategory::Character>> SUFFIX;
#define FOR_EACH_LOGICAL_KIND(PREFIX, SUFFIX) \
- EXPAND_FOR_EACH_LOGICAL_KIND(FOR_EACH_LOGICAL_KIND_HELP, PREFIX, SUFFIX)
+ PREFIX<Type<TypeCategory::Logical>> SUFFIX;
#define FOR_EACH_UNSIGNED_KIND(PREFIX, SUFFIX) \
- EXPAND_FOR_EACH_UNSIGNED_KIND(FOR_EACH_UNSIGNED_KIND_HELP, PREFIX, SUFFIX)
+ PREFIX<Type<TypeCategory::Unsigned>> SUFFIX;
#define FOR_EACH_LENGTHLESS_INTRINSIC_KIND(PREFIX, SUFFIX) \
FOR_EACH_INTEGER_KIND(PREFIX, SUFFIX) \
@@ -576,5 +567,67 @@ bool AreSameDerivedTypeIgnoringSequence(
#define FOR_EACH_TYPE_AND_KIND(PREFIX, SUFFIX) \
FOR_EACH_INTRINSIC_KIND(PREFIX, SUFFIX) \
FOR_EACH_CATEGORY_TYPE(PREFIX, SUFFIX)
+
+/// Iterable lists of valid kinds for each TypeCategory for use by SearchTypes.
+template <TypeCategory CAT> struct KindsByType;
+template <> struct KindsByType<TypeCategory::Integer> {
+ static constexpr int kinds[] = FORTRAN_INTEGER_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Unsigned> {
+ static constexpr int kinds[] = FORTRAN_UNSIGNED_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Real> {
+ static constexpr int kinds[] = FORTRAN_REAL_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Complex> {
+ static constexpr int kinds[] = FORTRAN_REAL_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Logical> {
+ static constexpr int kinds[] = FORTRAN_LOGICAL_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Character> {
+ static constexpr int kinds[] = FORTRAN_CHARACTER_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Derived> {
+ static constexpr int kinds[] = {0};
+};
+
+// Given a VISITOR class of the general form
+// struct VISITOR {
+// using Result = ...;
+// using Types = std::tuple<...>;
+// template<typename T> Result Test(int kind) { ... }
+// };
+// SearchTypes will traverse the element types in the tuple in order,
+// and for each of them invoke VISITOR::Test<T>(kind) once per kind that
+// is supported by the type's category, until it returns a value that
+// casts to true. If no invocation of Test succeeds, SearchTypes will
+// return a default value.
+template <std::size_t J, typename VISITOR>
+common::IfNoLvalue<typename VISITOR::Result, VISITOR> SearchTypesHelper(
+ VISITOR &&visitor, typename VISITOR::Result &&defaultResult) {
+ using Tuple = typename VISITOR::Types;
+ if constexpr (J < std::tuple_size_v<Tuple>) {
+ using TYPE = std::tuple_element_t<J, Tuple>;
+ for (int kind : evaluate::KindsByType<TYPE::category>::kinds) {
+ if (auto result{visitor.template Test<TYPE>(kind)}) {
+ return result;
+ }
+ }
+ return SearchTypesHelper<J + 1, VISITOR>(
+ std::move(visitor), std::move(defaultResult));
+ } else {
+ return std::move(defaultResult);
+ }
+}
+
+template <typename VISITOR>
+common::IfNoLvalue<typename VISITOR::Result, VISITOR> SearchTypes(
+ VISITOR &&visitor,
+ typename VISITOR::Result defaultResult = typename VISITOR::Result{}) {
+ return SearchTypesHelper<0, VISITOR>(
+ std::move(visitor), std::move(defaultResult));
+}
+
} // namespace Fortran::evaluate
#endif // FORTRAN_EVALUATE_TYPE_H_
diff --git a/flang/include/flang/Evaluate/variable.h b/flang/include/flang/Evaluate/variable.h
index f510873ec2fe2d..d4b861006ec366 100644
--- a/flang/include/flang/Evaluate/variable.h
+++ b/flang/include/flang/Evaluate/variable.h
@@ -136,6 +136,11 @@ class NamedEntity {
class TypeParamInquiry {
public:
using Result = SubscriptInteger;
+ static constexpr int ResultKind{SubscriptIntegerKind};
+ constexpr int kind() const { return SubscriptIntegerKind; }
+ static constexpr DynamicType GetType() {
+ return DynamicType{TypeCategory::Integer, SubscriptIntegerKind};
+ }
CLASS_BOILERPLATE(TypeParamInquiry)
TypeParamInquiry(NamedEntity &&x, const Symbol ¶m)
: base_{std::move(x)}, parameter_{param} {}
@@ -392,10 +397,39 @@ template <typename T> class Designator {
using Result = T;
static_assert(
IsSpecificIntrinsicType<Result> || std::is_same_v<Result, SomeDerived>);
- EVALUATE_UNION_CLASS_BOILERPLATE(Designator)
- Designator(const DataRef &that) : u{common::CopyVariant<Variant>(that.u)} {}
- Designator(DataRef &&that)
- : u{common::MoveVariant<Variant>(std::move(that.u))} {}
+
+ constexpr int kind() const { return kind_; }
+
+ CLASS_BOILERPLATE(Designator)
+ template <typename _A>
+ explicit Designator(int kind, const _A &x) : u{x}, kind_{kind} {
+ CHECK_KIND(kind, T);
+ }
+ template <typename _A, typename = common::NoLvalue<_A>>
+ explicit Designator(int kind, _A &&x) : u(std::move(x)), kind_{kind} {
+ CHECK_KIND(kind, T);
+ }
+ template <typename _A, typename U = T,
+ typename = std::enable_if_t<std::is_same_v<U, SomeDerived>>>
+ explicit Designator(const _A &x) : Designator(0, x) {}
+ template <typename _A, typename U = T, typename = common::NoLvalue<_A>,
+ typename = std::enable_if_t<std::is_same_v<U, SomeDerived>>>
+ explicit Designator(_A &&x) : Designator(0, std::move(x)) {}
+ bool operator==(const Designator &) const;
+ Designator(int kind, const DataRef &that)
+ : u{common::CopyVariant<Variant>(that.u)}, kind_{kind} {
+ CHECK_KIND(kind, T);
+ }
+ Designator(int kind, DataRef &&that)
+ : u{common::MoveVariant<Variant>(std::move(that.u))}, kind_{kind} {
+ CHECK_KIND(kind, T);
+ }
+ template <typename U = T,
+ typename = std::enable_if_t<std::is_same_v<U, SomeDerived>>>
+ Designator(const DataRef &that) : Designator(0, that) {}
+ template <typename U = T,
+ typename = std::enable_if_t<std::is_same_v<U, SomeDerived>>>
+ Designator(DataRef &&that) : Designator(0, std::move(that)) {}
std::optional<DynamicType> GetType() const;
int Rank() const;
@@ -406,6 +440,9 @@ template <typename T> class Designator {
llvm::raw_ostream &AsFortran(llvm::raw_ostream &o) const;
Variant u;
+
+private:
+ int kind_;
};
FOR_EACH_CHARACTER_KIND(extern template class Designator, )
@@ -413,6 +450,10 @@ FOR_EACH_CHARACTER_KIND(extern template class Designator, )
class DescriptorInquiry {
public:
using Result = SubscriptInteger;
+ static constexpr int kind() { return SubscriptIntegerKind; }
+ static constexpr DynamicType GetType() {
+ return DynamicType{TypeCategory::Integer, SubscriptIntegerKind};
+ }
ENUM_CLASS(Field, LowerBound, Extent, Stride, Rank, Len)
CLASS_BOILERPLATE(DescriptorInquiry)
@@ -442,6 +483,7 @@ class DescriptorInquiry {
class RankOneBoundElement {
public:
using Result = SubscriptInteger;
+ static constexpr int ResultKind{SubscriptIntegerKind};
CLASS_BOILERPLATE(RankOneBoundElement)
RankOneBoundElement(
common::CopyableIndirection<Expr<SubscriptInteger>> &&e, int dim)
@@ -453,6 +495,8 @@ class RankOneBoundElement {
Expr<SubscriptInteger> &base() { return base_.value(); }
int dimension() const { return dimension_; }
+ static constexpr int kind() { return ResultKind; }
+
static constexpr int Rank() { return 0; } // always scalar
static constexpr int Corank() { return 0; }
bool operator==(const RankOneBoundElement &) const;
diff --git a/flang/include/flang/Lower/DirectivesCommon.h b/flang/include/flang/Lower/DirectivesCommon.h
index 6f6089a4ffb6cb..03f7783a53ec42 100644
--- a/flang/include/flang/Lower/DirectivesCommon.h
+++ b/flang/include/flang/Lower/DirectivesCommon.h
@@ -94,24 +94,21 @@ static T AsRvalueRef(const T &t) {
// (if present) is not needed. When it's present, though, it causes generated
// names to contain "int(..., kind=8)".
struct PeelConvert {
- template <Fortran::common::TypeCategory Category, int Kind>
+ template <Fortran::common::TypeCategory Category>
static Fortran::semantics::MaybeExpr visit_with_category(
- const Fortran::evaluate::Expr<Fortran::evaluate::Type<Category, Kind>>
- &expr) {
+ const Fortran::evaluate::Expr<Fortran::evaluate::Type<Category>> &expr) {
return Fortran::common::visit(
- [](auto &&s) { return visit_with_category<Category, Kind>(s); },
- expr.u);
+ [](auto &&s) { return visit_with_category<Category>(s); }, expr.u);
}
- template <Fortran::common::TypeCategory Category, int Kind>
+ template <
+ Fortran::common::TypeCategory Category,
+ typename = std::enable_if_t<Fortran::evaluate::IsSpecificIntrinsicType<
+ Fortran::evaluate::Type<Category>>>>
static Fortran::semantics::MaybeExpr visit_with_category(
- const Fortran::evaluate::Convert<Fortran::evaluate::Type<Category, Kind>,
+ const Fortran::evaluate::Convert<Fortran::evaluate::Type<Category>,
Category> &expr) {
return AsGenericExpr(AsRvalueRef(expr.left()));
}
- template <Fortran::common::TypeCategory Category, int Kind, typename T>
- static Fortran::semantics::MaybeExpr visit_with_category(const T &) {
- return std::nullopt; //
- }
template <Fortran::common::TypeCategory Category, typename T>
static Fortran::semantics::MaybeExpr visit_with_category(const T &) {
return std::nullopt; //
diff --git a/flang/include/flang/Lower/Mangler.h b/flang/include/flang/Lower/Mangler.h
index a75a08e64f0331..a243b7824dfcd7 100644
--- a/flang/include/flang/Lower/Mangler.h
+++ b/flang/include/flang/Lower/Mangler.h
@@ -65,22 +65,23 @@ mangleArrayLiteral(size_t size,
Fortran::common::ConstantSubscript charLen = -1,
llvm::StringRef derivedName = {});
-template <Fortran::common::TypeCategory TC, int KIND>
+template <Fortran::common::TypeCategory TC>
std::string mangleArrayLiteral(
mlir::Type,
- const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC, KIND>> &x) {
+ const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return mangleArrayLiteral(x.values().size() * sizeof(x.values()[0]),
- x.shape(), TC, KIND);
+ x.shape(), TC, kind);
}
-template <int KIND>
-std::string
-mangleArrayLiteral(mlir::Type,
- const Fortran::evaluate::Constant<Fortran::evaluate::Type<
- Fortran::common::TypeCategory::Character, KIND>> &x) {
+inline std::string mangleArrayLiteral(
+ mlir::Type,
+ const Fortran::evaluate::Constant<
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Character>> &x) {
+ const int kind{x.kind()};
return mangleArrayLiteral(x.values().size() * sizeof(x.values()[0]),
x.shape(), Fortran::common::TypeCategory::Character,
- KIND, x.LEN());
+ kind, x.LEN());
}
inline std::string mangleArrayLiteral(
diff --git a/flang/include/flang/Lower/Support/Utils.h b/flang/include/flang/Lower/Support/Utils.h
index 15d30905aadcda..555cdec21774e2 100644
--- a/flang/include/flang/Lower/Support/Utils.h
+++ b/flang/include/flang/Lower/Support/Utils.h
@@ -62,10 +62,11 @@ static Fortran::lower::SomeExpr toEvExpr(const A &x) {
}
template <Fortran::common::TypeCategory FROM>
-static Fortran::lower::SomeExpr ignoreEvConvert(
- const Fortran::evaluate::Convert<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8>,
- FROM> &x) {
+static Fortran::lower::SomeExpr
+ignoreEvConvert(const Fortran::evaluate::Convert<
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer>,
+ FROM> &x) {
+ CHECK(x.kind() == 8);
return toEvExpr(x.left());
}
template <typename A>
@@ -76,9 +77,10 @@ static Fortran::lower::SomeExpr ignoreEvConvert(const A &x) {
/// A vector subscript expression may be wrapped with a cast to INTEGER*8.
/// Get rid of it here so the vector can be loaded. Add it back when
/// generating the elemental evaluation (inside the loop nest).
-inline Fortran::lower::SomeExpr
-ignoreEvConvert(const Fortran::evaluate::Expr<Fortran::evaluate::Type<
- Fortran::common::TypeCategory::Integer, 8>> &x) {
+inline Fortran::lower::SomeExpr ignoreEvConvert(
+ const Fortran::evaluate::Expr<
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer>> &x) {
+ CHECK(x.kind() == 8);
return Fortran::common::visit(
[](const auto &v) { return ignoreEvConvert(v); }, x.u);
}
diff --git a/flang/include/flang/Semantics/dump-expr.h b/flang/include/flang/Semantics/dump-expr.h
index 868b64c64e60a3..fe983cb0a6e8d1 100644
--- a/flang/include/flang/Semantics/dump-expr.h
+++ b/flang/include/flang/Semantics/dump-expr.h
@@ -233,14 +233,12 @@ class DumpEvaluateExpr {
LLVM_DUMP_METHOD void DumpEvExpr(const evaluate::Expr<evaluate::SomeType> &x);
LLVM_DUMP_METHOD void DumpEvExpr(
- const evaluate::Expr<evaluate::Type<common::TypeCategory::Integer, 4>> &x);
-LLVM_DUMP_METHOD void DumpEvExpr(
- const evaluate::Expr<evaluate::Type<common::TypeCategory::Integer, 8>> &x);
+ const evaluate::Expr<evaluate::Type<common::TypeCategory::Integer>> &x);
LLVM_DUMP_METHOD void DumpEvExpr(const evaluate::ArrayRef &x);
LLVM_DUMP_METHOD void DumpEvExpr(const evaluate::DataRef &x);
LLVM_DUMP_METHOD void DumpEvExpr(const evaluate::Substring &x);
LLVM_DUMP_METHOD void DumpEvExpr(
- const evaluate::Designator<evaluate::Type<common::TypeCategory::Integer, 4>>
+ const evaluate::Designator<evaluate::Type<common::TypeCategory::Integer>>
&x);
} // namespace Fortran::semantics
diff --git a/flang/include/flang/Semantics/scope.h b/flang/include/flang/Semantics/scope.h
index 7cab6e21223197..324c206a4d2d81 100644
--- a/flang/include/flang/Semantics/scope.h
+++ b/flang/include/flang/Semantics/scope.h
@@ -235,8 +235,7 @@ class Scope {
const DeclTypeSpec *FindType(const DeclTypeSpec &) const;
const DeclTypeSpec &MakeNumericType(TypeCategory, KindExpr &&kind);
const DeclTypeSpec &MakeLogicalType(KindExpr &&kind);
- const DeclTypeSpec &MakeCharacterType(
- ParamValue &&length, KindExpr &&kind = KindExpr{0});
+ const DeclTypeSpec &MakeCharacterType(ParamValue &&length, KindExpr &&kind);
DeclTypeSpec &MakeDerivedType(DeclTypeSpec::Category, DerivedTypeSpec &&);
const DeclTypeSpec &MakeTypeStarType();
const DeclTypeSpec &MakeClassStarType();
diff --git a/flang/include/flang/Semantics/type.h b/flang/include/flang/Semantics/type.h
index b8f06dde4f562f..2f216e3bc0cd6e 100644
--- a/flang/include/flang/Semantics/type.h
+++ b/flang/include/flang/Semantics/type.h
@@ -53,6 +53,8 @@ using SubscriptIntExpr = evaluate::Expr<evaluate::SubscriptInteger>;
using MaybeSubscriptIntExpr = std::optional<SubscriptIntExpr>;
using KindExpr = SubscriptIntExpr;
+KindExpr MakeKindExpr(int v);
+
// An array spec bound: an explicit integer expression, assumed size
// or implied shape(*), or assumed or deferred shape(:). In the absence
// of explicit lower bounds it is not possible to distinguish assumed
diff --git a/flang/lib/Evaluate/CMakeLists.txt b/flang/lib/Evaluate/CMakeLists.txt
index fc5bbda50461ee..f7b0fe0f5fb896 100644
--- a/flang/lib/Evaluate/CMakeLists.txt
+++ b/flang/lib/Evaluate/CMakeLists.txt
@@ -35,7 +35,7 @@ add_flang_library(FortranEvaluate
characteristics.cpp
check-expression.cpp
common.cpp
- complex.cpp
+ complex-value.cpp
complex-value.cpp
constant.cpp
expression.cpp
@@ -55,7 +55,7 @@ add_flang_library(FortranEvaluate
integer-value-impl.cpp
intrinsics.cpp
intrinsics-library.cpp
- logical.cpp
+ logical-value.cpp
logical-value.cpp
real.cpp
real-value.cpp
@@ -82,9 +82,12 @@ add_flang_library(FortranEvaluate
[["flang/Evaluate/shape.h"]]
[["flang/Evaluate/characteristics.h"]]
[["flang/Evaluate/variable.h"]]
- [["flang/Evaluate/real.h"]]
+ [["flang/Evaluate/character-value.h"]]
+ [["flang/Evaluate/complex-value.h"]]
+ [["flang/Evaluate/integer-value.h"]]
+ [["flang/Evaluate/logical-value.h"]]
+ [["flang/Evaluate/real-value.h"]]
[["flang/Evaluate/type.h"]]
- [["flang/Evaluate/integer.h"]]
[["flang/Evaluate/expression.h"]]
[["flang/Evaluate/tools.h"]]
diff --git a/flang/lib/Evaluate/call.cpp b/flang/lib/Evaluate/call.cpp
index 57afa80a03209d..c72e347dffa595 100644
--- a/flang/lib/Evaluate/call.cpp
+++ b/flang/lib/Evaluate/call.cpp
@@ -269,7 +269,8 @@ std::optional<Expr<SubscriptInteger>> ProcedureRef::LEN() const {
UnwrapExpr<Expr<SomeInteger>>(arguments_[1].value())};
CHECK(stringArg && nCopiesArg);
if (auto stringLen{stringArg->LEN()}) {
- auto converted{ConvertTo(*stringLen, common::Clone(*nCopiesArg))};
+ auto converted{ConvertTo(
+ stringLen->kind(), *stringLen, common::Clone(*nCopiesArg))};
return *std::move(stringLen) * std::move(converted);
}
}
diff --git a/flang/lib/Evaluate/character.h b/flang/lib/Evaluate/character.h
index 2d6747741161bf..c1a34257e5682a 100644
--- a/flang/lib/Evaluate/character.h
+++ b/flang/lib/Evaluate/character.h
@@ -9,7 +9,9 @@
#ifndef FORTRAN_EVALUATE_CHARACTER_H_
#define FORTRAN_EVALUATE_CHARACTER_H_
+#include "flang/Evaluate/character-value.h"
#include "flang/Evaluate/type.h"
+#include <cstdint>
#include <string>
// Provides implementations of intrinsic functions operating on character
@@ -17,41 +19,53 @@
namespace Fortran::evaluate {
-template <int KIND> class CharacterUtils {
- using Character = Scalar<Type<TypeCategory::Character, KIND>>;
- using CharT = typename Character::value_type;
+class CharacterUtils {
+ using Character = Scalar<Type<TypeCategory::Character>>;
+ using CharT = char32_t;
public:
// CHAR also implements ACHAR under assumption that character encodings
// contain ASCII
- static Character CHAR(std::uint64_t code) {
- return Character{{static_cast<CharT>(code)}};
+ static Character CHAR(int kind, std::uint64_t code) {
+ return Character{kind, 1, static_cast<CharT>(code)};
}
// ICHAR also implements IACHAR under assumption that character encodings
// contain ASCII
static std::int64_t ICHAR(const Character &c) {
CHECK(c.length() == 1);
- // Convert first to an unsigned integer type to avoid sign extension
- return static_cast<common::HostUnsignedIntType<(8 * KIND)>>(c[0]);
+ // Mask to the character kind width to avoid sign extension
+ auto ch{static_cast<std::uint64_t>(c[0])};
+ switch (c.kind()) {
+ case 1:
+ return static_cast<std::int64_t>(ch & 0xffu);
+ case 2:
+ return static_cast<std::int64_t>(ch & 0xffffu);
+ case 4:
+ return static_cast<std::int64_t>(ch & 0xffffffffu);
+ }
+ llvm_unreachable("unsupported character kind");
}
- static Character NEW_LINE() { return Character{{NewLine()}}; }
+ static Character NEW_LINE(int kind) { return Character{kind, 1, NewLine()}; }
static Character ADJUSTL(const Character &str) {
+ const int kind{str.kind()};
auto pos{str.find_first_not_of(Space())};
if (pos != Character::npos && pos != 0) {
- return Character{str.substr(pos) + Character(pos, Space())};
+ return Character{str.substr(pos) + Character{kind, pos, Space()}};
}
// else empty or only spaces, or no leading spaces
return str;
}
static Character ADJUSTR(const Character &str) {
+ const int kind{str.kind()};
auto pos{str.find_last_not_of(Space())};
if (pos != Character::npos && pos != str.length() - 1) {
auto delta{str.length() - 1 - pos};
- return Character{Character(delta, Space()) + str.substr(0, pos + 1)};
+ return Character{
+ Character{kind, delta, Space()} + str.substr(0, pos + 1)};
}
// else empty or only spaces, or no trailing spaces
return str;
@@ -78,9 +92,10 @@ template <int KIND> class CharacterUtils {
// Resize adds spaces on the right if the new size is bigger than the
// original, or by trimming the rightmost characters otherwise.
static Character Resize(const Character &str, std::size_t newLength) {
+ const int kind{str.kind()};
auto oldLength{str.length()};
if (newLength > oldLength) {
- return str + Character(newLength - oldLength, Space());
+ return str + Character{kind, newLength - oldLength, Space()};
} else {
return str.substr(0, newLength);
}
@@ -97,7 +112,8 @@ template <int KIND> class CharacterUtils {
}
static Character REPEAT(const Character &str, ConstantSubscript ncopies) {
- Character result;
+ const int kind{str.kind()};
+ Character result{Character::Zero(kind)};
if (!str.empty() && ncopies > 0) {
result.reserve(ncopies * str.size());
while (ncopies-- > 0) {
diff --git a/flang/lib/Evaluate/characteristics.cpp b/flang/lib/Evaluate/characteristics.cpp
index 4b05a25fd8f58b..4f1c6831e3aeb2 100644
--- a/flang/lib/Evaluate/characteristics.cpp
+++ b/flang/lib/Evaluate/characteristics.cpp
@@ -9,6 +9,7 @@
#include "flang/Evaluate/characteristics.h"
#include "flang/Common/indirection.h"
#include "flang/Evaluate/check-expression.h"
+#include "flang/Evaluate/expression.h"
#include "flang/Evaluate/fold.h"
#include "flang/Evaluate/intrinsics.h"
#include "flang/Evaluate/tools.h"
@@ -194,10 +195,9 @@ std::optional<Expr<SubscriptInteger>> TypeAndShape::MeasureElementSizeInBytes(
if (LEN_) {
CHECK(type_.category() == TypeCategory::Character);
return Fold(foldingContext,
- Expr<SubscriptInteger>{
- foldingContext.targetCharacteristics().GetByteSize(
- type_.category(), type_.kind())} *
- Expr<SubscriptInteger>{*LEN_});
+ MakeSubscriptIntExpr(foldingContext.targetCharacteristics().GetByteSize(
+ type_.category(), type_.kind())) *
+ common::Clone(*LEN_));
}
if (auto elementBytes{type_.MeasureSizeInBytes(foldingContext, align)}) {
return Fold(foldingContext, std::move(*elementBytes));
diff --git a/flang/lib/Evaluate/check-expression.cpp b/flang/lib/Evaluate/check-expression.cpp
index 737502a504d618..d3722c46632f33 100644
--- a/flang/lib/Evaluate/check-expression.cpp
+++ b/flang/lib/Evaluate/check-expression.cpp
@@ -71,10 +71,8 @@ class IsConstantExprHelper
return (*this)(component.base());
}
// Prevent integer division by known zeroes in constant expressions.
- template <int KIND>
- bool operator()(
- const Divide<Type<TypeCategory::Integer, KIND>> &division) const {
- using T = Type<TypeCategory::Integer, KIND>;
+ bool operator()(const Divide<Type<TypeCategory::Integer>> &division) const {
+ using T = Type<TypeCategory::Integer>;
if ((*this)(division.left()) && (*this)(division.right())) {
const auto divisor{GetScalarConstantValue<T>(division.right())};
return !divisor || !divisor->IsZero();
@@ -481,9 +479,9 @@ class SuspiciousRealLiteralFinder
SuspiciousRealLiteralFinder(int kind, FoldingContext &c)
: Base{*this}, kind_{kind}, context_{c} {}
using Base::operator();
- template <int KIND>
- bool operator()(const Constant<Type<TypeCategory::Real, KIND>> &x) const {
- if (kind_ > KIND && x.result().isFromInexactLiteralConversion()) {
+ bool operator()(const Constant<Type<TypeCategory::Real>> &x) const {
+ const int kind{x.kind()};
+ if (kind_ > kind && x.result().isFromInexactLiteralConversion()) {
context_.Warn(common::UsageWarning::RealConstantWidening,
"Default real literal in REAL(%d) context might need a kind suffix, as its rounded value %s is inexact"_warn_en_US,
kind_, x.AsFortran());
@@ -492,9 +490,9 @@ class SuspiciousRealLiteralFinder
return false;
}
}
- template <int KIND>
- bool operator()(const Constant<Type<TypeCategory::Complex, KIND>> &x) const {
- if (kind_ > KIND && x.result().isFromInexactLiteralConversion()) {
+ bool operator()(const Constant<Type<TypeCategory::Complex>> &x) const {
+ const int kind{x.kind()};
+ if (kind_ > kind && x.result().isFromInexactLiteralConversion()) {
context_.Warn(common::UsageWarning::RealConstantWidening,
"Default real literal in COMPLEX(%d) context might need a kind suffix, as its rounded value %s is inexact"_warn_en_US,
kind_, x.AsFortran());
@@ -503,13 +501,14 @@ class SuspiciousRealLiteralFinder
return false;
}
}
- template <TypeCategory TOCAT, int TOKIND, TypeCategory FROMCAT>
- bool operator()(const Convert<Type<TOCAT, TOKIND>, FROMCAT> &x) const {
+ template <TypeCategory TOCAT, TypeCategory FROMCAT>
+ bool operator()(const Convert<Type<TOCAT>, FROMCAT> &x) const {
+ const int toKind{x.kind()};
if constexpr ((TOCAT == TypeCategory::Real ||
TOCAT == TypeCategory::Complex) &&
(FROMCAT == TypeCategory::Real || FROMCAT == TypeCategory::Complex)) {
auto fromType{x.left().GetType()};
- if (!fromType || fromType->kind() < TOKIND) {
+ if (!fromType || fromType->kind() < toKind) {
return false;
}
}
@@ -548,9 +547,8 @@ class InexactLiteralConversionFlagClearer
using Base = AnyTraverse<InexactLiteralConversionFlagClearer>;
InexactLiteralConversionFlagClearer() : Base(*this) {}
using Base::operator();
- template <int KIND>
- bool operator()(const Constant<Type<TypeCategory::Real, KIND>> &x) const {
- auto &mut{const_cast<Type<TypeCategory::Real, KIND> &>(x.result())};
+ bool operator()(const Constant<Type<TypeCategory::Real>> &x) const {
+ auto &mut{const_cast<Type<TypeCategory::Real> &>(x.result())};
mut.set_isFromInexactLiteralConversion(false);
return false;
}
diff --git a/flang/lib/Evaluate/common.cpp b/flang/lib/Evaluate/common.cpp
index 119ea3c5612a58..49874c4b5a7446 100644
--- a/flang/lib/Evaluate/common.cpp
+++ b/flang/lib/Evaluate/common.cpp
@@ -8,11 +8,17 @@
#include "flang/Evaluate/common.h"
#include "flang/Common/idioms.h"
+#include "flang/Evaluate/character-value.h"
using namespace Fortran::parser::literals;
namespace Fortran::evaluate {
+Ordering Compare(
+ const value::CharacterValue &x, const value::CharacterValue &y) {
+ return x.Compare(y);
+}
+
void FoldingContext::RealFlagWarnings(
const RealFlags &flags, const char *operation) {
static constexpr auto warning{common::UsageWarning::FoldingException};
diff --git a/flang/lib/Evaluate/complex.cpp b/flang/lib/Evaluate/complex.cpp
deleted file mode 100644
index a245fb38c82b92..00000000000000
--- a/flang/lib/Evaluate/complex.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-//===-- lib/Evaluate/complex.cpp ------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "flang/Evaluate/complex.h"
-#include "llvm/Support/raw_ostream.h"
-
-namespace Fortran::evaluate::value {
-
-template <typename R>
-ValueWithRealFlags<Complex<R>> Complex<R>::Add(
- const Complex &that, Rounding rounding) const {
- RealFlags flags;
- Part reSum{re_.Add(that.re_, rounding).AccumulateFlags(flags)};
- Part imSum{im_.Add(that.im_, rounding).AccumulateFlags(flags)};
- return {Complex{reSum, imSum}, flags};
-}
-
-template <typename R>
-ValueWithRealFlags<Complex<R>> Complex<R>::Subtract(
- const Complex &that, Rounding rounding) const {
- RealFlags flags;
- Part reDiff{re_.Subtract(that.re_, rounding).AccumulateFlags(flags)};
- Part imDiff{im_.Subtract(that.im_, rounding).AccumulateFlags(flags)};
- return {Complex{reDiff, imDiff}, flags};
-}
-
-template <typename R>
-ValueWithRealFlags<Complex<R>> Complex<R>::Multiply(
- const Complex &that, Rounding rounding) const {
- // (a + ib)*(c + id) -> ac - bd + i(ad + bc)
- RealFlags flags;
- Part ac{re_.Multiply(that.re_, rounding).AccumulateFlags(flags)};
- Part bd{im_.Multiply(that.im_, rounding).AccumulateFlags(flags)};
- Part ad{re_.Multiply(that.im_, rounding).AccumulateFlags(flags)};
- Part bc{im_.Multiply(that.re_, rounding).AccumulateFlags(flags)};
- Part acbd{ac.Subtract(bd, rounding).AccumulateFlags(flags)};
- Part adbc{ad.Add(bc, rounding).AccumulateFlags(flags)};
- return {Complex{acbd, adbc}, flags};
-}
-
-template <typename R>
-ValueWithRealFlags<Complex<R>> Complex<R>::Divide(
- const Complex &that, Rounding rounding) const {
- // (a + ib)/(c + id) -> [(a+ib)*(c-id)] / [(c+id)*(c-id)]
- // -> [ac+bd+i(bc-ad)] / (cc+dd) -- note (cc+dd) is real
- // -> ((ac+bd)/(cc+dd)) + i((bc-ad)/(cc+dd))
- RealFlags flags;
- Part cc{that.re_.Multiply(that.re_, rounding).AccumulateFlags(flags)};
- Part dd{that.im_.Multiply(that.im_, rounding).AccumulateFlags(flags)};
- Part ccPdd{cc.Add(dd, rounding).AccumulateFlags(flags)};
- if (!flags.test(RealFlag::Overflow) && !flags.test(RealFlag::Underflow)) {
- // den = (cc+dd) did not overflow or underflow; try the naive
- // sequence without scaling to avoid extra roundings.
- Part ac{re_.Multiply(that.re_, rounding).AccumulateFlags(flags)};
- Part ad{re_.Multiply(that.im_, rounding).AccumulateFlags(flags)};
- Part bc{im_.Multiply(that.re_, rounding).AccumulateFlags(flags)};
- Part bd{im_.Multiply(that.im_, rounding).AccumulateFlags(flags)};
- Part acPbd{ac.Add(bd, rounding).AccumulateFlags(flags)};
- Part bcSad{bc.Subtract(ad, rounding).AccumulateFlags(flags)};
- Part re{acPbd.Divide(ccPdd, rounding).AccumulateFlags(flags)};
- Part im{bcSad.Divide(ccPdd, rounding).AccumulateFlags(flags)};
- if (!flags.test(RealFlag::Overflow) && !flags.test(RealFlag::Underflow)) {
- return {Complex{re, im}, flags};
- }
- }
- // Scale numerator and denominator by d/c (if c>=d) or c/d (if c<d)
- flags.clear();
- Part scale; // will be <= 1.0 in magnitude
- bool cGEd{that.re_.ABS().Compare(that.im_.ABS()) != Relation::Less};
- if (cGEd) {
- scale = that.im_.Divide(that.re_, rounding).AccumulateFlags(flags);
- } else {
- scale = that.re_.Divide(that.im_, rounding).AccumulateFlags(flags);
- }
- Part den;
- if (cGEd) {
- Part dS{scale.Multiply(that.im_, rounding).AccumulateFlags(flags)};
- den = dS.Add(that.re_, rounding).AccumulateFlags(flags);
- } else {
- Part cS{scale.Multiply(that.re_, rounding).AccumulateFlags(flags)};
- den = cS.Add(that.im_, rounding).AccumulateFlags(flags);
- }
- Part aS{scale.Multiply(re_, rounding).AccumulateFlags(flags)};
- Part bS{scale.Multiply(im_, rounding).AccumulateFlags(flags)};
- Part re1, im1;
- if (cGEd) {
- re1 = re_.Add(bS, rounding).AccumulateFlags(flags);
- im1 = im_.Subtract(aS, rounding).AccumulateFlags(flags);
- } else {
- re1 = aS.Add(im_, rounding).AccumulateFlags(flags);
- im1 = bS.Subtract(re_, rounding).AccumulateFlags(flags);
- }
- Part re{re1.Divide(den, rounding).AccumulateFlags(flags)};
- Part im{im1.Divide(den, rounding).AccumulateFlags(flags)};
- return {Complex{re, im}, flags};
-}
-
-template <typename R>
-ValueWithRealFlags<Complex<R>> Complex<R>::KahanSummation(
- const Complex &that, Complex &correction, Rounding rounding) const {
- RealFlags flags;
- Part reSum{re_.KahanSummation(that.re_, correction.re_, rounding)
- .AccumulateFlags(flags)};
- Part imSum{im_.KahanSummation(that.im_, correction.im_, rounding)
- .AccumulateFlags(flags)};
- return {Complex{reSum, imSum}, flags};
-}
-
-template <typename R> std::string Complex<R>::DumpHexadecimal() const {
- std::string result{'('};
- result += re_.DumpHexadecimal();
- result += ',';
- result += im_.DumpHexadecimal();
- result += ')';
- return result;
-}
-
-template <typename R>
-llvm::raw_ostream &Complex<R>::AsFortran(llvm::raw_ostream &o, int kind) const {
- re_.AsFortran(o << '(', kind);
- im_.AsFortran(o << ',', kind);
- return o << ')';
-}
-
-template class Complex<Real<Integer<16>, 11>>;
-template class Complex<Real<Integer<16>, 8>>;
-template class Complex<Real<Integer<32>, 24>>;
-template class Complex<Real<Integer<64>, 53>>;
-template class Complex<Real<X87IntegerContainer, 64>>;
-template class Complex<Real<Integer<128>, 113>>;
-} // namespace Fortran::evaluate::value
diff --git a/flang/lib/Evaluate/constant.cpp b/flang/lib/Evaluate/constant.cpp
index 7fe000892ac1a2..7a78c1ade352a2 100644
--- a/flang/lib/Evaluate/constant.cpp
+++ b/flang/lib/Evaluate/constant.cpp
@@ -144,8 +144,10 @@ bool HasNegativeExtent(const ConstantSubscripts &shape) {
template <typename RESULT, typename ELEMENT>
ConstantBase<RESULT, ELEMENT>::ConstantBase(
- std::vector<Element> &&x, ConstantSubscripts &&sh, Result res)
- : ConstantBounds(std::move(sh)), result_{res}, values_(std::move(x)) {
+ int kind, std::vector<Element> &&x, ConstantSubscripts &&sh, Result res)
+ : ConstantBounds(std::move(sh)), kind_{kind}, result_{res},
+ values_(std::move(x)) {
+ CHECK_KIND(kind, RESULT);
CHECK(TotalElementCount(shape()) && size() == *TotalElementCount(shape()));
}
@@ -154,7 +156,8 @@ ConstantBase<RESULT, ELEMENT>::~ConstantBase() {}
template <typename RESULT, typename ELEMENT>
bool ConstantBase<RESULT, ELEMENT>::operator==(const ConstantBase &that) const {
- return shape() == that.shape() && values_ == that.values_;
+ return kind() == that.kind() && shape() == that.shape() &&
+ values_ == that.values_;
}
template <typename RESULT, typename ELEMENT>
@@ -198,7 +201,8 @@ auto Constant<T>::At(const ConstantSubscripts &index) const -> Element {
template <typename T>
auto Constant<T>::Reshape(ConstantSubscripts &&dims) const -> Constant {
- return {Base::Reshape(dims), std::move(dims)};
+ const int kind{Base::kind()};
+ return {kind, Base::Reshape(dims), std::move(dims)};
}
template <typename T>
@@ -207,25 +211,28 @@ std::size_t Constant<T>::CopyFrom(const Constant<T> &source, std::size_t count,
return Base::CopyFrom(source, count, resultSubscripts, dimOrder);
}
-// Constant<Type<TypeCategory::Character, KIND> specializations
-template <int KIND>
-Constant<Type<TypeCategory::Character, KIND>>::Constant(
- const Scalar<Result> &str)
- : values_{str}, length_{static_cast<ConstantSubscript>(values_.size())} {}
+// Constant<Type<TypeCategory::Character>> specialization
+Constant<Type<TypeCategory::Character>>::Constant(
+ int kind, const Scalar<Result> &str)
+ : kind_{kind}, values_{str},
+ length_{static_cast<ConstantSubscript>(values_.size())} {
+ CHECK(str.kind() == kind);
+}
-template <int KIND>
-Constant<Type<TypeCategory::Character, KIND>>::Constant(Scalar<Result> &&str)
- : values_{std::move(str)}, length_{static_cast<ConstantSubscript>(
- values_.size())} {}
+Constant<Type<TypeCategory::Character>>::Constant(
+ int kind, Scalar<Result> &&str)
+ : kind_{kind}, values_{std::move(str)},
+ length_{static_cast<ConstantSubscript>(values_.size())} {
+ CHECK(str.kind() == kind);
+}
-template <int KIND>
-Constant<Type<TypeCategory::Character, KIND>>::Constant(ConstantSubscript len,
- std::vector<Scalar<Result>> &&strings, ConstantSubscripts &&sh)
- : ConstantBounds(std::move(sh)), length_{len} {
+Constant<Type<TypeCategory::Character>>::Constant(int kind,
+ ConstantSubscript len, std::vector<Scalar<Result>> &&strings,
+ ConstantSubscripts &&sh)
+ : ConstantBounds(std::move(sh)), kind_{kind}, length_{len} {
CHECK(TotalElementCount(shape()) &&
strings.size() == *TotalElementCount(shape()));
- values_.assign(strings.size() * length_,
- static_cast<typename Scalar<Result>::value_type>(' '));
+ values_.assign(kind, strings.size() * length_, ' ');
ConstantSubscript at{0};
for (const auto &str : strings) {
auto strLen{static_cast<ConstantSubscript>(str.size())};
@@ -239,16 +246,13 @@ Constant<Type<TypeCategory::Character, KIND>>::Constant(ConstantSubscript len,
CHECK(at == static_cast<ConstantSubscript>(values_.size()));
}
-template <int KIND>
-Constant<Type<TypeCategory::Character, KIND>>::~Constant() {}
+Constant<Type<TypeCategory::Character>>::~Constant() {}
-template <int KIND>
-bool Constant<Type<TypeCategory::Character, KIND>>::empty() const {
+bool Constant<Type<TypeCategory::Character>>::empty() const {
return size() == 0;
}
-template <int KIND>
-std::size_t Constant<Type<TypeCategory::Character, KIND>>::size() const {
+std::size_t Constant<Type<TypeCategory::Character>>::size() const {
if (length_ == 0) {
std::optional<uint64_t> n{TotalElementCount(shape())};
CHECK(n);
@@ -258,23 +262,20 @@ std::size_t Constant<Type<TypeCategory::Character, KIND>>::size() const {
}
}
-template <int KIND>
-auto Constant<Type<TypeCategory::Character, KIND>>::At(
+auto Constant<Type<TypeCategory::Character>>::At(
const ConstantSubscripts &index) const -> Scalar<Result> {
auto offset{SubscriptsToOffset(index)};
return values_.substr(offset * length_, length_);
}
-template <int KIND>
-auto Constant<Type<TypeCategory::Character, KIND>>::Substring(
- ConstantSubscript lo, ConstantSubscript hi) const
- -> std::optional<Constant> {
+auto Constant<Type<TypeCategory::Character>>::Substring(ConstantSubscript lo,
+ ConstantSubscript hi) const -> std::optional<Constant> {
std::vector<Element> elements;
ConstantSubscript n{GetSize(shape())};
ConstantSubscript newLength{0};
if (lo > hi) { // zero-length results
while (n-- > 0) {
- elements.emplace_back(); // ""
+ elements.emplace_back(Scalar<Result>::Zero(kind())); // ""
}
} else if (lo < 1 || hi > length_) {
return std::nullopt;
@@ -284,11 +285,11 @@ auto Constant<Type<TypeCategory::Character, KIND>>::Substring(
elements.emplace_back(At(at).substr(lo - 1, newLength));
}
}
- return Constant{newLength, std::move(elements), ConstantSubscripts{shape()}};
+ return Constant{
+ kind(), newLength, std::move(elements), ConstantSubscripts{shape()}};
}
-template <int KIND>
-auto Constant<Type<TypeCategory::Character, KIND>>::Reshape(
+auto Constant<Type<TypeCategory::Character>>::Reshape(
ConstantSubscripts &&dims) const -> Constant<Result> {
std::optional<uint64_t> optN{TotalElementCount(dims)};
CHECK(optN);
@@ -304,14 +305,12 @@ auto Constant<Type<TypeCategory::Character, KIND>>::Reshape(
at = 0;
}
}
- return {length_, std::move(elements), std::move(dims)};
+ return {kind(), length_, std::move(elements), std::move(dims)};
}
-template <int KIND>
-std::size_t Constant<Type<TypeCategory::Character, KIND>>::CopyFrom(
- const Constant<Type<TypeCategory::Character, KIND>> &source,
- std::size_t count, ConstantSubscripts &resultSubscripts,
- const std::vector<int> *dimOrder) {
+std::size_t Constant<Type<TypeCategory::Character>>::CopyFrom(
+ const Constant<Type<TypeCategory::Character>> &source, std::size_t count,
+ ConstantSubscripts &resultSubscripts, const std::vector<int> *dimOrder) {
CHECK(length_ == source.length_);
if (length_ == 0) {
// It's possible that the array of strings consists of all empty strings.
@@ -320,11 +319,11 @@ std::size_t Constant<Type<TypeCategory::Character, KIND>>::CopyFrom(
return count;
} else {
std::size_t copied{0};
- std::size_t elementBytes{length_ * sizeof(decltype(values_[0]))};
+ std::size_t elementBytes{static_cast<std::size_t>(length_) * kind()};
ConstantSubscripts sourceSubscripts{source.lbounds()};
while (copied < count) {
- auto *dest{&values_.at(SubscriptsToOffset(resultSubscripts) * length_)};
- const auto *src{&source.values_.at(
+ auto *dest{values_.at(SubscriptsToOffset(resultSubscripts) * length_)};
+ const auto *src{source.values_.at(
source.SubscriptsToOffset(sourceSubscripts) * length_)};
std::memcpy(dest, src, elementBytes);
copied++;
@@ -337,14 +336,14 @@ std::size_t Constant<Type<TypeCategory::Character, KIND>>::CopyFrom(
// Constant<SomeDerived> specialization
Constant<SomeDerived>::Constant(const StructureConstructor &x)
- : Base{x.values(), Result{x.derivedTypeSpec()}} {}
+ : Base{/*kind=*/0, x.values(), Result{x.derivedTypeSpec()}} {}
Constant<SomeDerived>::Constant(StructureConstructor &&x)
- : Base{std::move(x.values()), Result{x.derivedTypeSpec()}} {}
+ : Base{/*kind=*/0, std::move(x.values()), Result{x.derivedTypeSpec()}} {}
Constant<SomeDerived>::Constant(const semantics::DerivedTypeSpec &spec,
std::vector<StructureConstructorValues> &&x, ConstantSubscripts &&s)
- : Base{std::move(x), std::move(s), Result{spec}} {}
+ : Base{/*kind=*/0, std::move(x), std::move(s), Result{spec}} {}
static std::vector<StructureConstructorValues> AcquireValues(
std::vector<StructureConstructor> &&x) {
@@ -357,7 +356,8 @@ static std::vector<StructureConstructorValues> AcquireValues(
Constant<SomeDerived>::Constant(const semantics::DerivedTypeSpec &spec,
std::vector<StructureConstructor> &&x, ConstantSubscripts &&shape)
- : Base{AcquireValues(std::move(x)), std::move(shape), Result{spec}} {}
+ : Base{/*kind=*/0, AcquireValues(std::move(x)), std::move(shape),
+ Result{spec}} {}
std::optional<StructureConstructor>
Constant<SomeDerived>::GetScalarValue() const {
diff --git a/flang/lib/Evaluate/expression.cpp b/flang/lib/Evaluate/expression.cpp
index fe8565fbe42a86..e8279bb2885886 100644
--- a/flang/lib/Evaluate/expression.cpp
+++ b/flang/lib/Evaluate/expression.cpp
@@ -23,14 +23,13 @@ using namespace Fortran::parser::literals;
namespace Fortran::evaluate {
-template <int KIND>
std::optional<Expr<SubscriptInteger>>
-Expr<Type<TypeCategory::Character, KIND>>::LEN() const {
+Expr<Type<TypeCategory::Character>>::LEN() const {
using T = std::optional<Expr<SubscriptInteger>>;
return common::visit(
common::visitors{
[](const Constant<Result> &c) -> T {
- return AsExpr(Constant<SubscriptInteger>{c.LEN()});
+ return MakeSubscriptIntExpr(c.LEN());
},
[](const ArrayConstructor<Result> &a) -> T {
if (const auto *len{a.LEN()}) {
@@ -44,7 +43,7 @@ Expr<Type<TypeCategory::Character, KIND>>::LEN() const {
return common::visit(
[&](const auto &kx) { return kx.LEN(); }, x.left().u);
},
- [](const Concat<KIND> &c) -> T {
+ [](const Concat &c) -> T {
if (auto llen{c.left().LEN()}) {
if (auto rlen{c.right().LEN()}) {
return *std::move(llen) + *std::move(rlen);
@@ -73,7 +72,7 @@ Expr<Type<TypeCategory::Character, KIND>>::LEN() const {
},
[](const Designator<Result> &dr) { return dr.LEN(); },
[](const FunctionRef<Result> &fr) { return fr.LEN(); },
- [](const SetLength<KIND> &x) -> T { return x.right(); },
+ [](const SetLength &x) -> T { return x.right(); },
},
u);
}
@@ -92,10 +91,16 @@ const typename ExpressionBase<A>::Derived &ExpressionBase<A>::derived() const {
}
#endif
+template <typename A> int ExpressionBase<A>::kind() const {
+ // Storing/deriving the kind handled by the subclasses
+ return common::visit(
+ [&](const auto &x) -> int { return x.kind(); }, derived().u);
+}
+
template <typename A>
std::optional<DynamicType> ExpressionBase<A>::GetType() const {
if constexpr (IsLengthlessIntrinsicType<Result>) {
- return Result::GetType();
+ return DynamicType{Result::category, kind()};
} else {
return common::visit(
[&](const auto &x) -> std::optional<DynamicType> {
@@ -154,8 +159,7 @@ bool ConditionalExpr<A>::operator==(const ConditionalExpr &that) const {
elseValue_ == that.elseValue_;
}
-template <int KIND>
-bool LogicalOperation<KIND>::operator==(const LogicalOperation &that) const {
+bool LogicalOperation::operator==(const LogicalOperation &that) const {
return logicalOperator == that.logicalOperator && Base::operator==(that);
}
@@ -191,15 +195,13 @@ bool ArrayConstructorValues<R>::operator==(
return values_ == that.values_;
}
-template <int KIND>
-auto ArrayConstructor<Type<TypeCategory::Character, KIND>>::set_LEN(
+auto ArrayConstructor<Type<TypeCategory::Character>>::set_LEN(
Expr<SubscriptInteger> &&len) -> ArrayConstructor & {
length_.emplace(std::move(len));
return *this;
}
-template <int KIND>
-bool ArrayConstructor<Type<TypeCategory::Character, KIND>>::operator==(
+bool ArrayConstructor<Type<TypeCategory::Character>>::operator==(
const ArrayConstructor &that) const {
return length_ == that.length_ &&
static_cast<const Base &>(*this) == static_cast<const Base &>(that);
@@ -224,57 +226,51 @@ bool StructureConstructor::operator==(const StructureConstructor &that) const {
return result_ == that.result_ && values_ == that.values_;
}
-template <int KIND>
-bool Expr<Type<TypeCategory::Integer, KIND>>::operator==(
- const Expr<Type<TypeCategory::Integer, KIND>> &that) const {
- return u == that.u;
+bool Expr<Type<TypeCategory::Integer>>::operator==(
+ const Expr<Type<TypeCategory::Integer>> &that) const {
+ return kind() == that.kind() && u == that.u;
}
-template <int KIND>
-bool Expr<Type<TypeCategory::Real, KIND>>::operator==(
- const Expr<Type<TypeCategory::Real, KIND>> &that) const {
- return u == that.u;
+bool Expr<Type<TypeCategory::Real>>::operator==(
+ const Expr<Type<TypeCategory::Real>> &that) const {
+ return kind() == that.kind() && u == that.u;
}
-template <int KIND>
-bool Expr<Type<TypeCategory::Complex, KIND>>::operator==(
- const Expr<Type<TypeCategory::Complex, KIND>> &that) const {
- return u == that.u;
+bool Expr<Type<TypeCategory::Complex>>::operator==(
+ const Expr<Type<TypeCategory::Complex>> &that) const {
+ return kind() == that.kind() && u == that.u;
}
-template <int KIND>
-bool Expr<Type<TypeCategory::Logical, KIND>>::operator==(
- const Expr<Type<TypeCategory::Logical, KIND>> &that) const {
- return u == that.u;
+bool Expr<Type<TypeCategory::Logical>>::operator==(
+ const Expr<Type<TypeCategory::Logical>> &that) const {
+ return kind() == that.kind() && u == that.u;
}
-template <int KIND>
-bool Expr<Type<TypeCategory::Character, KIND>>::operator==(
- const Expr<Type<TypeCategory::Character, KIND>> &that) const {
- return u == that.u;
+bool Expr<Type<TypeCategory::Character>>::operator==(
+ const Expr<Type<TypeCategory::Character>> &that) const {
+ return kind() == that.kind() && u == that.u;
}
-template <int KIND>
-bool Expr<Type<TypeCategory::Unsigned, KIND>>::operator==(
- const Expr<Type<TypeCategory::Unsigned, KIND>> &that) const {
- return u == that.u;
+bool Expr<Type<TypeCategory::Unsigned>>::operator==(
+ const Expr<Type<TypeCategory::Unsigned>> &that) const {
+ return kind() == that.kind() && u == that.u;
}
template <TypeCategory CAT>
bool Expr<SomeKind<CAT>>::operator==(const Expr<SomeKind<CAT>> &that) const {
- return u == that.u;
+ return kind() == that.kind() && u == that.u;
}
bool Expr<SomeDerived>::operator==(const Expr<SomeDerived> &that) const {
- return u == that.u;
+ return kind() == that.kind() && u == that.u;
}
bool Expr<SomeCharacter>::operator==(const Expr<SomeCharacter> &that) const {
- return u == that.u;
+ return kind() == that.kind() && u == that.u;
}
bool Expr<SomeType>::operator==(const Expr<SomeType> &that) const {
- return u == that.u;
+ return kind() == that.kind() && u == that.u;
}
DynamicType StructureConstructor::GetType() const { return result_.GetType(); }
@@ -366,20 +362,51 @@ void GenericAssignmentWrapper::Deleter(GenericAssignmentWrapper *p) {
delete p;
}
-template <TypeCategory CAT> int Expr<SomeKind<CAT>>::GetKind() const {
- return common::visit(
- [](const auto &kx) { return std::decay_t<decltype(kx)>::Result::kind; },
- u);
+std::optional<Expr<SubscriptInteger>> Expr<SomeCharacter>::LEN() const {
+ return common::visit([](const auto &kx) { return kx.LEN(); }, u);
}
-int Expr<SomeCharacter>::GetKind() const {
- return common::visit(
- [](const auto &kx) { return std::decay_t<decltype(kx)>::Result::kind; },
- u);
+Parentheses<SomeDerived>::Parentheses(const Expr<SomeDerived> &x)
+ : Base{x.kind(), x} {}
+Parentheses<SomeDerived>::Parentheses(Expr<SomeDerived> &&x)
+ : Base{x.kind(), std::move(x)} {}
+
+ComplexComponent::ComplexComponent(bool isImaginary, const Expr<Operand> &x)
+ : Base{x.kind(), x}, isImaginaryPart{isImaginary} {}
+ComplexComponent::ComplexComponent(bool isImaginary, Expr<Operand> &&x)
+ : Base{x.kind(), std::move(x)}, isImaginaryPart{isImaginary} {}
+
+ComplexConstructor::ComplexConstructor(const Expr<Type<TypeCategory::Real>> &re,
+ const Expr<Type<TypeCategory::Real>> &im)
+ : Base{re.kind(), re, im} {
+ CHECK(re.kind() == im.kind());
+}
+ComplexConstructor::ComplexConstructor(
+ Expr<Type<TypeCategory::Real>> &&re, Expr<Type<TypeCategory::Real>> &&im)
+ : Base{re.kind(), std::move(re), std::move(im)} {
+ CHECK(left().kind() == right().kind());
}
-std::optional<Expr<SubscriptInteger>> Expr<SomeCharacter>::LEN() const {
- return common::visit([](const auto &kx) { return kx.LEN(); }, u);
+LogicalOperation::LogicalOperation(
+ LogicalOperator opr, const Expr<Operand> &x, const Expr<Operand> &y)
+ : Base{x.kind(), x, y}, logicalOperator{opr} {
+ CHECK(x.kind() == y.kind());
+}
+LogicalOperation::LogicalOperation(
+ LogicalOperator opr, Expr<Operand> &&x, Expr<Operand> &&y)
+ : Base{x.kind(), std::move(x), std::move(y)}, logicalOperator{opr} {
+ CHECK(x.kind() == y.kind());
+}
+
+Concat::Concat(const Expr<Type<TypeCategory::Character>> &x,
+ const Expr<Type<TypeCategory::Character>> &y)
+ : Base{x.kind(), x, y} {
+ CHECK(x.kind() == y.kind());
+}
+Concat::Concat(Expr<Type<TypeCategory::Character>> &&x,
+ Expr<Type<TypeCategory::Character>> &&y)
+ : Base{x.kind(), std::move(x), std::move(y)} {
+ CHECK(left().kind() == right().kind());
}
#ifdef _MSC_VER // disable bogus warning about missing definitions
diff --git a/flang/lib/Evaluate/fold-character.cpp b/flang/lib/Evaluate/fold-character.cpp
index a43742ae8dc685..0a23c91df0654c 100644
--- a/flang/lib/Evaluate/fold-character.cpp
+++ b/flang/lib/Evaluate/fold-character.cpp
@@ -36,65 +36,66 @@ template <typename T>
static std::optional<Scalar<T>> Identity(
Scalar<T> str, std::optional<ConstantSubscript> len) {
if (len) {
- return CharacterUtils<T::kind>::REPEAT(
- str, std::max<ConstantSubscript>(*len, 0));
+ return CharacterUtils::REPEAT(str, std::max<ConstantSubscript>(*len, 0));
} else {
return std::nullopt;
}
}
-template <int KIND>
-Expr<Type<TypeCategory::Character, KIND>> FoldIntrinsicFunction(
+Expr<Type<TypeCategory::Character>> FoldIntrinsicFunction(
FoldingContext &context,
- FunctionRef<Type<TypeCategory::Character, KIND>> &&funcRef) {
- using T = Type<TypeCategory::Character, KIND>;
- using StringType = Scalar<T>; // std::string or larger
- using SingleCharType = typename StringType::value_type; // char &c.
+ FunctionRef<Type<TypeCategory::Character>> &&funcRef) {
+ using T = Type<TypeCategory::Character>;
+ using StringType = Scalar<T>; // CharacterValue
+ const int kind{funcRef.kind()};
auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
CHECK(intrinsic);
std::string name{intrinsic->name};
if (name == "achar" || name == "char") {
using IntT = SubscriptInteger;
- return FoldElementalIntrinsic<T, IntT>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, IntT>(kind, {SubscriptIntegerKind},
+ context, std::move(funcRef),
ScalarFunc<T, IntT>([&](const Scalar<IntT> &i) {
- if (i.IsNegative() || i.BGE(Scalar<IntT>{0}.IBSET(8 * KIND))) {
+ if (i.IsNegative() ||
+ i.BGE(Scalar<IntT>{SubscriptIntegerKind, 0}.IBSET(8 * kind))) {
context.Warn(common::UsageWarning::FoldingValueChecks,
"%s(I=%jd) is out of range for CHARACTER(KIND=%d)"_warn_en_US,
parser::ToUpperCaseLetters(name),
- static_cast<std::intmax_t>(i.ToInt64()), KIND);
+ static_cast<std::intmax_t>(i.ToInt64()), kind);
}
- return CharacterUtils<KIND>::CHAR(i.ToUInt64());
+ return CharacterUtils::CHAR(kind, i.ToUInt64());
}));
} else if (name == "adjustl") {
return FoldElementalIntrinsic<T, T>(
- context, std::move(funcRef), CharacterUtils<KIND>::ADJUSTL);
+ kind, {kind}, context, std::move(funcRef), CharacterUtils::ADJUSTL);
} else if (name == "adjustr") {
return FoldElementalIntrinsic<T, T>(
- context, std::move(funcRef), CharacterUtils<KIND>::ADJUSTR);
+ kind, {kind}, context, std::move(funcRef), CharacterUtils::ADJUSTR);
} else if (name == "max") {
return FoldMINorMAX(context, std::move(funcRef), Ordering::Greater);
} else if (name == "maxval") {
- SingleCharType least{0};
- if (auto identity{Identity<T>(
- StringType{least}, GetConstantLength(context, funcRef, 0))}) {
+ StringType least{kind, 1, '\0'};
+ if (auto identity{
+ Identity<T>(least, GetConstantLength(context, funcRef, 0))}) {
return FoldMaxvalMinval<T>(
- context, std::move(funcRef), RelationalOperator::GT, *identity);
+ kind, context, std::move(funcRef), RelationalOperator::GT, *identity);
}
} else if (name == "min") {
return FoldMINorMAX(context, std::move(funcRef), Ordering::Less);
} else if (name == "minval") {
// Collating sequences correspond to positive integers (3.31)
- auto most{static_cast<SingleCharType>(0xffffffff >> (8 * (4 - KIND)))};
- if (auto identity{Identity<T>(
- StringType{most}, GetConstantLength(context, funcRef, 0))}) {
+ StringType most{kind, 1, 0xffffffff >> (8 * (4 - kind))};
+ if (auto identity{
+ Identity<T>(most, GetConstantLength(context, funcRef, 0))}) {
return FoldMaxvalMinval<T>(
- context, std::move(funcRef), RelationalOperator::LT, *identity);
+ kind, context, std::move(funcRef), RelationalOperator::LT, *identity);
}
} else if (name == "new_line") {
- return Expr<T>{Constant<T>{CharacterUtils<KIND>::NEW_LINE()}};
+ return MakeConstantExpr<T>(kind, CharacterUtils::NEW_LINE(kind));
} else if (name == "repeat") { // not elemental
if (auto scalars{GetScalarConstantArguments<T, SubscriptInteger>(
- context, funcRef.arguments(), /*hasOptionalArgument=*/false)}) {
+ {kind, SubscriptIntegerKind}, context, funcRef.arguments(),
+ /*hasOptionalArgument=*/false)}) {
auto str{std::get<Scalar<T>>(*scalars)};
auto n{std::get<Scalar<SubscriptInteger>>(*scalars).ToInt64()};
if (n < 0) {
@@ -107,45 +108,45 @@ Expr<Type<TypeCategory::Character, KIND>> FoldIntrinsicFunction(
"Result of REPEAT() is too large to compute at compilation time (%g characters)"_port_en_US,
static_cast<double>(n) * str.size());
} else {
- return Expr<T>{Constant<T>{CharacterUtils<KIND>::REPEAT(str, n)}};
+ return MakeConstantExpr<T>(kind, CharacterUtils::REPEAT(str, n));
}
}
} else if (name == "trim") { // not elemental
- if (auto scalar{GetScalarConstantArguments<T>(
- context, funcRef.arguments(), /*hasOptionalArgument=*/false)}) {
- return Expr<T>{Constant<T>{
- CharacterUtils<KIND>::TRIM(std::get<Scalar<T>>(*scalar))}};
+ if (auto scalar{GetScalarConstantArguments<T>({kind}, context,
+ funcRef.arguments(), /*hasOptionalArgument=*/false)}) {
+ return MakeConstantExpr<T>(
+ kind, CharacterUtils::TRIM(std::get<Scalar<T>>(*scalar)));
}
} else if (name == "__builtin_compiler_options") {
auto &o = context.targetCharacteristics().compilerOptionsString();
- return Expr<T>{Constant<T>{StringType(o.begin(), o.end())}};
+ return MakeConstantExpr<T>(kind, o);
} else if (name == "__builtin_compiler_version") {
auto &v = context.targetCharacteristics().compilerVersionString();
- return Expr<T>{Constant<T>{StringType(v.begin(), v.end())}};
+ return MakeConstantExpr<T>(kind, v);
}
return Expr<T>{std::move(funcRef)};
}
-template <int KIND>
-Expr<Type<TypeCategory::Character, KIND>> FoldOperation(
- FoldingContext &context, Concat<KIND> &&x) {
+Expr<Type<TypeCategory::Character>> FoldOperation(
+ FoldingContext &context, Concat &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
- using Result = Type<TypeCategory::Character, KIND>;
+ using Result = Type<TypeCategory::Character>;
if (auto folded{OperandsAreConstants(x)}) {
- return Expr<Result>{Constant<Result>{folded->first + folded->second}};
+ return MakeConstantExpr<Result>(kind, folded->first + folded->second);
}
return Expr<Result>{std::move(x)};
}
-template <int KIND>
-Expr<Type<TypeCategory::Character, KIND>> FoldOperation(
- FoldingContext &context, SetLength<KIND> &&x) {
+Expr<Type<TypeCategory::Character>> FoldOperation(
+ FoldingContext &context, SetLength &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
- using Result = Type<TypeCategory::Character, KIND>;
+ using Result = Type<TypeCategory::Character>;
if (auto folded{OperandsAreConstants(x)}) {
auto oldLength{static_cast<ConstantSubscript>(folded->first.size())};
auto newLength{folded->second.ToInt64()};
@@ -155,7 +156,7 @@ Expr<Type<TypeCategory::Character, KIND>> FoldOperation(
folded->first.append(newLength - oldLength, ' ');
}
CHECK(static_cast<ConstantSubscript>(folded->first.size()) == newLength);
- return Expr<Result>{Constant<Result>{std::move(folded->first)}};
+ return MakeConstantExpr<Result>(kind, std::move(folded->first));
}
return Expr<Result>{std::move(x)};
}
diff --git a/flang/lib/Evaluate/fold-complex.cpp b/flang/lib/Evaluate/fold-complex.cpp
index 84066ee5be71b4..fda86906d7fb42 100644
--- a/flang/lib/Evaluate/fold-complex.cpp
+++ b/flang/lib/Evaluate/fold-complex.cpp
@@ -12,11 +12,10 @@
namespace Fortran::evaluate {
-template <int KIND>
-Expr<Type<TypeCategory::Complex, KIND>> FoldIntrinsicFunction(
- FoldingContext &context,
- FunctionRef<Type<TypeCategory::Complex, KIND>> &&funcRef) {
- using T = Type<TypeCategory::Complex, KIND>;
+Expr<Type<TypeCategory::Complex>> FoldIntrinsicFunction(FoldingContext &context,
+ FunctionRef<Type<TypeCategory::Complex>> &&funcRef) {
+ const int kind{funcRef.kind()};
+ using T = Type<TypeCategory::Complex>;
using Part = typename T::Part;
ActualArguments &args{funcRef.arguments()};
auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
@@ -26,22 +25,22 @@ Expr<Type<TypeCategory::Complex, KIND>> FoldIntrinsicFunction(
name == "atan" || name == "atanh" || name == "cos" || name == "cosh" ||
name == "exp" || name == "log" || name == "sin" || name == "sinh" ||
name == "sqrt" || name == "tan" || name == "tanh") {
- if (auto callable{GetHostRuntimeWrapper<T, T>(name)}) {
+ if (auto callable{GetHostRuntimeWrapper<T, T>(kind, {kind}, name)}) {
return FoldElementalIntrinsic<T, T>(
- context, std::move(funcRef), *callable);
+ kind, {kind}, context, std::move(funcRef), *callable);
} else {
context.Warn(common::UsageWarning::FoldingFailure,
"%s(complex(kind=%d)) cannot be folded on host"_warn_en_US, name,
- KIND);
+ kind);
}
} else if (name == "conjg") {
return FoldElementalIntrinsic<T, T>(
- context, std::move(funcRef), &Scalar<T>::CONJG);
+ kind, {kind}, context, std::move(funcRef), &Scalar<T>::CONJG);
} else if (name == "cmplx") {
if (args.size() > 0 && args[0].has_value()) {
if (auto *x{UnwrapExpr<Expr<SomeComplex>>(args[0])}) {
// CMPLX(X [, KIND]) with complex X
- return Fold(context, ConvertToType<T>(std::move(*x)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*x)));
} else {
if (args.size() >= 2 && args[1].has_value()) {
// Do not fold CMPLX with an Y argument that may be absent at runtime
@@ -56,11 +55,11 @@ Expr<Type<TypeCategory::Complex, KIND>> FoldIntrinsicFunction(
Expr<SomeType> re{std::move(*args[0].value().UnwrapExpr())};
Expr<SomeType> im{args.size() >= 2 && args[1].has_value()
? std::move(*args[1]->UnwrapExpr())
- : AsGenericExpr(Constant<Part>{Scalar<Part>{}})};
+ : AsGenericExpr(MakeZeroExpr<Part>(kind))};
return Fold(context,
Expr<T>{
- ComplexConstructor<KIND>{ToReal<KIND>(context, std::move(re)),
- ToReal<KIND>(context, std::move(im))}});
+ ComplexConstructor{kind, ToReal(kind, context, std::move(re)),
+ ToReal(kind, context, std::move(im))}});
}
}
} else if (name == "dot_product") {
@@ -68,7 +67,7 @@ Expr<Type<TypeCategory::Complex, KIND>> FoldIntrinsicFunction(
} else if (name == "matmul") {
return FoldMatmul(context, std::move(funcRef));
} else if (name == "product") {
- auto one{Scalar<Part>::FromInteger(value::Integer<8>{1}).value};
+ auto one{Scalar<Part>::FromInteger(kind, value::IntegerValue{1, 1}).value};
return FoldProduct<T>(context, std::move(funcRef), Scalar<T>{one});
} else if (name == "sum") {
return FoldSum<T>(context, std::move(funcRef));
@@ -76,17 +75,17 @@ Expr<Type<TypeCategory::Complex, KIND>> FoldIntrinsicFunction(
return Expr<T>{std::move(funcRef)};
}
-template <int KIND>
-Expr<Type<TypeCategory::Complex, KIND>> FoldOperation(
- FoldingContext &context, ComplexConstructor<KIND> &&x) {
+Expr<Type<TypeCategory::Complex>> FoldOperation(
+ FoldingContext &context, ComplexConstructor &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
- using ComplexType = Type<TypeCategory::Complex, KIND>;
+ using ComplexType = Type<TypeCategory::Complex>;
if (auto folded{OperandsAreConstants(x)}) {
using RealType = typename ComplexType::Part;
Constant<ComplexType> result{
- Scalar<ComplexType>{folded->first, folded->second}};
+ kind, Scalar<ComplexType>{folded->first, folded->second}};
if (const auto *re{UnwrapConstantValue<RealType>(x.left())};
re && re->result().isFromInexactLiteralConversion()) {
result.result().set_isFromInexactLiteralConversion();
diff --git a/flang/lib/Evaluate/fold-designator.cpp b/flang/lib/Evaluate/fold-designator.cpp
index d7751ec3899173..4e0cc1b841194e 100644
--- a/flang/lib/Evaluate/fold-designator.cpp
+++ b/flang/lib/Evaluate/fold-designator.cpp
@@ -98,9 +98,11 @@ std::optional<OffsetSymbol> DesignatorFolder::FoldDesignator(
},
[&](const Triplet &triplet) {
auto start{ToInt64(Fold(context_,
- triplet.lower().value_or(ExtentExpr{lower})))};
+ triplet.lower().value_or(
+ MakeExtentExpr(lower))))};
auto end{ToInt64(Fold(context_,
- triplet.upper().value_or(ExtentExpr{upper})))};
+ triplet.upper().value_or(
+ MakeExtentExpr(upper))))};
auto step{ToInt64(Fold(context_, triplet.stride()))};
if (start && end && step) {
if (*step != 0) {
@@ -237,11 +239,11 @@ static std::optional<ArrayRef> OffsetToArrayRef(FoldingContext &context,
}
auto quotient{at / extent};
auto remainder{at - quotient * extent};
- subscripts.emplace_back(ExtentExpr{(*lower)[dim] + remainder});
+ subscripts.emplace_back(MakeExtentExpr((*lower)[dim] + remainder));
at = quotient;
}
// This final subscript might be out of range for use in error reporting.
- subscripts.emplace_back(ExtentExpr{(*lower)[rank - 1] + at});
+ subscripts.emplace_back(MakeExtentExpr((*lower)[rank - 1] + at));
offset -= element * static_cast<std::size_t>(*elementBytes);
return ArrayRef{std::move(entity), std::move(subscripts)};
}
@@ -338,8 +340,10 @@ std::optional<Expr<SomeType>> OffsetToDesignator(FoldingContext &context,
return common::visit(
[&](const auto &z) -> std::optional<Expr<SomeType>> {
using PartType = typename ResultType<decltype(z)>::Part;
- return AsGenericExpr(Designator<PartType>{ComplexPart{
- ExtractDataRef(std::move(*zExpr)).value(), part}});
+ const int kind{z.kind()};
+ return AsGenericExpr(Designator<PartType>{kind,
+ ComplexPart{
+ ExtractDataRef(std::move(*zExpr)).value(), part}});
},
zExpr->u);
}
@@ -350,12 +354,12 @@ std::optional<Expr<SomeType>> OffsetToDesignator(FoldingContext &context,
return common::visit(
[&](const auto &x) -> std::optional<Expr<SomeType>> {
using T = typename std::decay_t<decltype(x)>::Result;
- return AsGenericExpr(Designator<T>{
+ const int kind{x.kind()};
+ return AsGenericExpr(Designator<T>{kind,
Substring{ExtractDataRef(std::move(*cExpr)).value(),
- std::optional<Expr<SubscriptInteger>>{
- 1 + (offset / T::kind)},
- std::optional<Expr<SubscriptInteger>>{
- 1 + ((offset + size - 1) / T::kind)}}});
+ MakeSubscriptIntExpr(1 + (offset / kind)),
+ MakeSubscriptIntExpr(
+ 1 + ((offset + size - 1) / kind))}});
},
cExpr->u);
}
diff --git a/flang/lib/Evaluate/fold-implementation.h b/flang/lib/Evaluate/fold-implementation.h
index 467bc6f0f70051..24e68fb3e74cd0 100644
--- a/flang/lib/Evaluate/fold-implementation.h
+++ b/flang/lib/Evaluate/fold-implementation.h
@@ -31,6 +31,7 @@
#include "flang/Semantics/symbol.h"
#include "flang/Semantics/tools.h"
#include <algorithm>
+#include <array>
#include <cmath>
#include <cstdio>
#include <optional>
@@ -52,8 +53,13 @@ static constexpr bool useKahanSummation{false};
// Utilities
template <typename T> class Folder {
public:
+ explicit Folder(int kind, FoldingContext &c, bool forOptionalArgument = false)
+ : kind_{kind}, context_{c}, forOptionalArgument_{forOptionalArgument} {}
+ template <typename U = T,
+ typename = std::enable_if_t<std::is_same_v<U, SomeDerived>>>
explicit Folder(FoldingContext &c, bool forOptionalArgument = false)
- : context_{c}, forOptionalArgument_{forOptionalArgument} {}
+ : Folder(0, c, forOptionalArgument) {}
+
std::optional<Constant<T>> GetNamedConstant(const Symbol &);
std::optional<Constant<T>> ApplySubscripts(const Constant<T> &array,
const std::vector<Constant<SubscriptInteger>> &subscripts);
@@ -79,6 +85,7 @@ template <typename T> class Folder {
Expr<T> TRANSFER(FunctionRef<T> &&);
private:
+ int kind_;
FoldingContext &context_;
bool forOptionalArgument_{false};
};
@@ -86,16 +93,18 @@ template <typename T> class Folder {
std::optional<Constant<SubscriptInteger>> GetConstantSubscript(
FoldingContext &, Subscript &, const NamedEntity &, int dim);
-// Helper to use host runtime on scalars for folding.
-template <typename TR, typename... TA>
-std::optional<std::function<Scalar<TR>(FoldingContext &, Scalar<TA>...)>>
-GetHostRuntimeWrapper(const std::string &name) {
- std::vector<DynamicType> argTypes{TA{}.GetType()...};
- if (auto hostWrapper{GetHostRuntimeWrapper(name, TR{}.GetType(), argTypes)}) {
- return [hostWrapper](
+template <typename TR, typename... TA, std::size_t... I>
+static std::optional<std::function<Scalar<TR>(FoldingContext &, Scalar<TA>...)>>
+GetHostRuntimeWrapperHelper(int resultKind,
+ std::array<int, sizeof...(TA)> argKinds, const std::string &name,
+ std::index_sequence<I...>) {
+ std::vector<DynamicType> argTypes{DynamicType{TA::category, argKinds[I]}...};
+ if (auto hostWrapper{GetHostRuntimeWrapper(
+ name, DynamicType{TR::category, resultKind}, argTypes)}) {
+ return [hostWrapper, argKinds](
FoldingContext &context, Scalar<TA>... args) -> Scalar<TR> {
std::vector<Expr<SomeType>> genericArgs{
- AsGenericExpr(Constant<TA>{args})...};
+ AsGenericExpr(Constant<TA>{argKinds[I], args})...};
return GetScalarConstantValue<TR>(
(*hostWrapper)(context, std::move(genericArgs)))
.value();
@@ -104,6 +113,15 @@ GetHostRuntimeWrapper(const std::string &name) {
return std::nullopt;
}
+// Helper to use host runtime on scalars for folding.
+template <typename TR, typename... TA>
+static std::optional<std::function<Scalar<TR>(FoldingContext &, Scalar<TA>...)>>
+GetHostRuntimeWrapper(int resultKind, std::array<int, sizeof...(TA)> argKinds,
+ const std::string &name) {
+ return GetHostRuntimeWrapperHelper<TR, TA...>(
+ resultKind, argKinds, name, std::index_sequence_for<TA...>{});
+}
+
// FoldOperation() rewrites expression tree nodes.
// If there is any possibility that the rewritten node will
// not have the same representation type, the result of
@@ -119,6 +137,11 @@ common::IfNoLvalue<Expr<ResultType<A>>, A> FoldOperation(
return Expr<ResultType<A>>{std::move(x)};
}
+// Forward declarations needed to ensure overload lookup considers all possible
+// implementations.
+ComplexPart FoldOperation(FoldingContext &, ComplexPart &&);
+Expr<Type<TypeCategory::Complex>> FoldOperation(
+ FoldingContext &, ComplexConstructor &&);
Component FoldOperation(FoldingContext &, Component &&);
NamedEntity FoldOperation(FoldingContext &, NamedEntity &&);
Triplet FoldOperation(FoldingContext &, Triplet &&);
@@ -127,12 +150,12 @@ ArrayRef FoldOperation(FoldingContext &, ArrayRef &&);
CoarrayRef FoldOperation(FoldingContext &, CoarrayRef &&);
DataRef FoldOperation(FoldingContext &, DataRef &&);
Substring FoldOperation(FoldingContext &, Substring &&);
-ComplexPart FoldOperation(FoldingContext &, ComplexPart &&);
template <typename T>
Expr<T> FoldOperation(FoldingContext &, FunctionRef<T> &&);
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Designator<T> &&designator) {
- return Folder<T>{context}.Folding(std::move(designator));
+ const int kind{designator.kind()};
+ return Folder<T>{kind, context}.Folding(std::move(designator));
}
Expr<TypeParamInquiry::Result> FoldOperation(
FoldingContext &, TypeParamInquiry &&);
@@ -203,6 +226,7 @@ std::optional<Constant<T>> Folder<T>::Folding(DataRef &ref) {
template <typename T>
std::optional<Constant<T>> Folder<T>::ApplySubscripts(const Constant<T> &array,
const std::vector<Constant<SubscriptInteger>> &subscripts) {
+ const int kind{array.kind()};
const auto &shape{array.shape()};
const auto &lbounds{array.lbounds()};
int rank{GetRank(shape)};
@@ -252,12 +276,14 @@ std::optional<Constant<T>> Folder<T>::ApplySubscripts(const Constant<T> &array,
CHECK(k == GetRank(resultShape));
}
if constexpr (T::category == TypeCategory::Character) {
- return Constant<T>{array.LEN(), std::move(values), std::move(resultShape)};
+ return Constant<T>{
+ kind, array.LEN(), std::move(values), std::move(resultShape)};
} else if constexpr (std::is_same_v<T, SomeDerived>) {
+ CHECK(kind == 0);
return Constant<T>{array.result().derivedTypeSpec(), std::move(values),
std::move(resultShape)};
} else {
- return Constant<T>{std::move(values), std::move(resultShape)};
+ return Constant<T>{kind, std::move(values), std::move(resultShape)};
}
}
@@ -291,9 +317,9 @@ std::optional<Constant<T>> Folder<T>::ApplyComponent(
// information is propagated to the array constructor.
auto *typedExpr{UnwrapExpr<Expr<T>>(expr.value())};
CHECK(typedExpr);
- array = std::make_unique<ArrayConstructor<T>>(*typedExpr);
+ array = std::make_unique<ArrayConstructor<T>>(kind_, *typedExpr);
if constexpr (T::category == TypeCategory::Character) {
- array->set_LEN(Expr<SubscriptInteger>{value->LEN()});
+ array->set_LEN(MakeSubscriptIntExpr(value->LEN()));
}
}
if (subscripts) {
@@ -349,6 +375,7 @@ std::optional<Constant<T>> Folder<T>::GetConstantComponent(Component &component,
}
template <typename T> Expr<T> Folder<T>::Folding(Designator<T> &&designator) {
+ const int kind{designator.kind()};
if constexpr (T::category == TypeCategory::Character) {
if (auto *substring{common::Unwrap<Substring>(designator.u)}) {
if (std::optional<Expr<SomeCharacter>> folded{
@@ -364,14 +391,14 @@ template <typename T> Expr<T> Folder<T>::Folding(Designator<T> &&designator) {
} else if constexpr (T::category == TypeCategory::Real) {
if (auto *zPart{std::get_if<ComplexPart>(&designator.u)}) {
*zPart = FoldOperation(context_, std::move(*zPart));
- using ComplexT = Type<TypeCategory::Complex, T::kind>;
- if (auto zConst{Folder<ComplexT>{context_}.Folding(zPart->complex())}) {
+ using ComplexT = Type<TypeCategory::Complex>;
+ if (auto zConst{
+ Folder<ComplexT>{kind, context_}.Folding(zPart->complex())}) {
return Fold(context_,
- Expr<T>{ComplexComponent<T::kind>{
- zPart->part() == ComplexPart::Part::IM,
+ Expr<T>{ComplexComponent{zPart->part() == ComplexPart::Part::IM,
Expr<ComplexT>{std::move(*zConst)}}});
} else {
- return Expr<T>{Designator<T>{std::move(*zPart)}};
+ return Expr<T>{Designator<T>{kind, std::move(*zPart)}};
}
}
}
@@ -383,25 +410,25 @@ template <typename T> Expr<T> Folder<T>::Folding(Designator<T> &&designator) {
}
return Expr<T>{std::move(designator)};
},
- [&](ArrayRef &&aRef) {
+ [&, kind](ArrayRef &&aRef) {
aRef = FoldOperation(context_, std::move(aRef));
if (auto c{Folding(aRef)}) {
return Expr<T>{std::move(*c)};
} else {
- return Expr<T>{Designator<T>{std::move(aRef)}};
+ return Expr<T>{Designator<T>{kind, std::move(aRef)}};
}
},
- [&](Component &&component) {
+ [&, kind](Component &&component) {
component = FoldOperation(context_, std::move(component));
if (auto c{GetConstantComponent(component)}) {
return Expr<T>{std::move(*c)};
} else {
- return Expr<T>{Designator<T>{std::move(component)}};
+ return Expr<T>{Designator<T>{kind, std::move(component)}};
}
},
- [&](auto &&x) {
+ [&, kind](auto &&x) {
return Expr<T>{
- Designator<T>{FoldOperation(context_, std::move(x))}};
+ Designator<T>{kind, FoldOperation(context_, std::move(x))}};
},
},
std::move(designator.u));
@@ -414,15 +441,15 @@ Constant<T> *Folder<T>::Folding(std::optional<ActualArgument> &arg) {
if (auto *expr{UnwrapExpr<Expr<SomeType>>(arg)}) {
*expr = Fold(context_, std::move(*expr));
if constexpr (T::category != TypeCategory::Derived) {
- if (!UnwrapExpr<Expr<T>>(*expr)) {
+ if (!UnwrapExpr<Expr<T>>(kind_, *expr)) {
if (const Symbol *
var{forOptionalArgument_
? UnwrapWholeSymbolOrComponentDataRef(*expr)
: nullptr};
var && (IsOptional(*var) || IsAllocatableOrObjectPointer(var))) {
// can't safely convert item that may not be present
- } else if (auto converted{
- ConvertToType(T::GetType(), std::move(*expr))}) {
+ } else if (auto converted{ConvertToType(
+ DynamicType{T::category, kind_}, std::move(*expr))}) {
*expr = Fold(context_, std::move(*converted));
}
}
@@ -434,11 +461,13 @@ Constant<T> *Folder<T>::Folding(std::optional<ActualArgument> &arg) {
template <typename... A, std::size_t... I>
std::optional<std::tuple<const Constant<A> *...>> GetConstantArgumentsHelper(
- FoldingContext &context, ActualArguments &arguments,
- bool hasOptionalArgument, std::index_sequence<I...>) {
+ const std::array<int, sizeof...(A)> &kinds, FoldingContext &context,
+ ActualArguments &arguments, bool hasOptionalArgument,
+ std::index_sequence<I...>) {
static_assert(sizeof...(A) > 0);
std::tuple<const Constant<A> *...> args{
- Folder<A>{context, hasOptionalArgument}.Folding(arguments.at(I))...};
+ Folder<A>{kinds[I], context, hasOptionalArgument}.Folding(
+ arguments.at(I))...};
if ((... && (std::get<I>(args)))) {
return args;
} else {
@@ -448,17 +477,19 @@ std::optional<std::tuple<const Constant<A> *...>> GetConstantArgumentsHelper(
template <typename... A>
std::optional<std::tuple<const Constant<A> *...>> GetConstantArguments(
- FoldingContext &context, ActualArguments &args, bool hasOptionalArgument) {
- return GetConstantArgumentsHelper<A...>(
- context, args, hasOptionalArgument, std::index_sequence_for<A...>{});
+ const std::array<int, sizeof...(A)> &kinds, FoldingContext &context,
+ ActualArguments &args, bool hasOptionalArgument) {
+ return GetConstantArgumentsHelper<A...>(kinds, context, args,
+ hasOptionalArgument, std::index_sequence_for<A...>{});
}
template <typename... A, std::size_t... I>
std::optional<std::tuple<Scalar<A>...>> GetScalarConstantArgumentsHelper(
- FoldingContext &context, ActualArguments &args, bool hasOptionalArgument,
+ const std::array<int, sizeof...(A)> &kinds, FoldingContext &context,
+ ActualArguments &args, bool hasOptionalArgument,
std::index_sequence<I...>) {
- if (auto constArgs{
- GetConstantArguments<A...>(context, args, hasOptionalArgument)}) {
+ if (auto constArgs{GetConstantArguments<A...>(
+ kinds, context, args, hasOptionalArgument)}) {
return std::tuple<Scalar<A>...>{
std::get<I>(*constArgs)->GetScalarValue().value()...};
} else {
@@ -468,9 +499,10 @@ std::optional<std::tuple<Scalar<A>...>> GetScalarConstantArgumentsHelper(
template <typename... A>
std::optional<std::tuple<Scalar<A>...>> GetScalarConstantArguments(
- FoldingContext &context, ActualArguments &args, bool hasOptionalArgument) {
- return GetScalarConstantArgumentsHelper<A...>(
- context, args, hasOptionalArgument, std::index_sequence_for<A...>{});
+ const std::array<int, sizeof...(A)> &kinds, FoldingContext &context,
+ ActualArguments &args, bool hasOptionalArgument) {
+ return GetScalarConstantArgumentsHelper<A...>(kinds, context, args,
+ hasOptionalArgument, std::index_sequence_for<A...>{});
}
// helpers to fold intrinsic function references
@@ -485,12 +517,15 @@ using ScalarFuncWithContext =
template <template <typename, typename...> typename WrapperType, typename TR,
typename... TA, std::size_t... I>
-Expr<TR> FoldElementalIntrinsicHelper(FoldingContext &context,
+Expr<TR> FoldElementalIntrinsicHelper(int resultKind,
+ const std::array<int, sizeof...(TA)> &argKinds, FoldingContext &context,
FunctionRef<TR> &&funcRef, WrapperType<TR, TA...> func,
bool hasOptionalArgument, std::index_sequence<I...>) {
+ CHECK(funcRef.kind() == resultKind);
+ std::array<int, sizeof...(TA)> kinds{argKinds[I]...};
if (std::optional<std::tuple<const Constant<TA> *...>> args{
GetConstantArguments<TA...>(
- context, funcRef.arguments(), hasOptionalArgument)}) {
+ kinds, context, funcRef.arguments(), hasOptionalArgument)}) {
// Compute the shape of the result based on shapes of arguments
ConstantSubscripts shape;
int rank{0};
@@ -543,7 +578,8 @@ Expr<TR> FoldElementalIntrinsicHelper(FoldingContext &context,
if constexpr (TR::category == TypeCategory::Character) {
auto len{static_cast<ConstantSubscript>(
results.empty() ? 0 : results[0].length())};
- return Expr<TR>{Constant<TR>{len, std::move(results), std::move(shape)}};
+ return Expr<TR>{
+ Constant<TR>{resultKind, len, std::move(results), std::move(shape)}};
} else if constexpr (TR::category == TypeCategory::Derived) {
if (!results.empty()) {
return Expr<TR>{rank == 0
@@ -552,27 +588,30 @@ Expr<TR> FoldElementalIntrinsicHelper(FoldingContext &context,
std::move(results), std::move(shape)}};
}
} else {
- return Expr<TR>{Constant<TR>{std::move(results), std::move(shape)}};
+ return Expr<TR>{
+ Constant<TR>{resultKind, std::move(results), std::move(shape)}};
}
}
return Expr<TR>{std::move(funcRef)};
}
template <typename TR, typename... TA>
-Expr<TR> FoldElementalIntrinsic(FoldingContext &context,
+Expr<TR> FoldElementalIntrinsic(int resultKind,
+ const std::array<int, sizeof...(TA)> &argKinds, FoldingContext &context,
FunctionRef<TR> &&funcRef, ScalarFunc<TR, TA...> func,
bool hasOptionalArgument = false) {
- return FoldElementalIntrinsicHelper<ScalarFunc, TR, TA...>(context,
- std::move(funcRef), func, hasOptionalArgument,
+ return FoldElementalIntrinsicHelper<ScalarFunc, TR, TA...>(resultKind,
+ argKinds, context, std::move(funcRef), func, hasOptionalArgument,
std::index_sequence_for<TA...>{});
}
template <typename TR, typename... TA>
-Expr<TR> FoldElementalIntrinsic(FoldingContext &context,
+Expr<TR> FoldElementalIntrinsic(int resultKind,
+ const std::array<int, sizeof...(TA)> &argKinds, FoldingContext &context,
FunctionRef<TR> &&funcRef, ScalarFuncWithContext<TR, TA...> func,
bool hasOptionalArgument = false) {
- return FoldElementalIntrinsicHelper<ScalarFuncWithContext, TR, TA...>(context,
- std::move(funcRef), func, hasOptionalArgument,
- std::index_sequence_for<TA...>{});
+ return FoldElementalIntrinsicHelper<ScalarFuncWithContext, TR, TA...>(
+ resultKind, argKinds, context, std::move(funcRef), func,
+ hasOptionalArgument, std::index_sequence_for<TA...>{});
}
std::optional<std::int64_t> GetInt64ArgOr(
@@ -606,13 +645,15 @@ std::optional<std::vector<A>> GetIntegerVector(const B &x) {
// This to prevent generating warnings over and over if the expression
// gets re-folded.
template <typename T> Expr<T> MakeInvalidIntrinsic(FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
SpecificIntrinsic invalid{std::get<SpecificIntrinsic>(funcRef.proc().u)};
invalid.name = IntrinsicProcTable::InvalidName;
- return Expr<T>{FunctionRef<T>{ProcedureDesignator{std::move(invalid)},
+ return Expr<T>{FunctionRef<T>{kind, ProcedureDesignator{std::move(invalid)},
ActualArguments{std::move(funcRef.arguments())}}};
}
template <typename T> Expr<T> Folder<T>::CSHIFT(FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
auto args{funcRef.arguments()};
CHECK(args.size() == 3);
const auto *array{UnwrapConstantValue<T>(args[0])};
@@ -622,7 +663,8 @@ template <typename T> Expr<T> Folder<T>::CSHIFT(FunctionRef<T> &&funcRef) {
return Expr<T>{std::move(funcRef)};
}
auto convertedShift{Fold(context_,
- ConvertToType<SubscriptInteger>(Expr<SomeInteger>{*shiftExpr}))};
+ ConvertToType<SubscriptInteger>(
+ SubscriptIntegerKind, Expr<SomeInteger>{*shiftExpr}))};
const auto *shift{UnwrapConstantValue<SubscriptInteger>(convertedShift)};
if (!shift) {
return Expr<T>{std::move(funcRef)};
@@ -683,7 +725,7 @@ template <typename T> Expr<T> Folder<T>::CSHIFT(FunctionRef<T> &&funcRef) {
array->IncrementSubscripts(arrayAt);
}
return Expr<T>{PackageConstant<T>(
- std::move(resultElements), *array, array->shape())};
+ kind, std::move(resultElements), *array, array->shape())};
}
}
// Invalid, prevent re-folding
@@ -691,6 +733,7 @@ template <typename T> Expr<T> Folder<T>::CSHIFT(FunctionRef<T> &&funcRef) {
}
template <typename T> Expr<T> Folder<T>::EOSHIFT(FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
auto args{funcRef.arguments()};
CHECK(args.size() == 4);
const auto *array{UnwrapConstantValue<T>(args[0])};
@@ -701,7 +744,8 @@ template <typename T> Expr<T> Folder<T>::EOSHIFT(FunctionRef<T> &&funcRef) {
}
// Apply type conversions to the shift= and boundary= arguments.
auto convertedShift{Fold(context_,
- ConvertToType<SubscriptInteger>(Expr<SomeInteger>{*shiftExpr}))};
+ ConvertToType<SubscriptInteger>(
+ SubscriptIntegerKind, Expr<SomeInteger>{*shiftExpr}))};
const auto *shift{UnwrapConstantValue<SubscriptInteger>(convertedShift)};
if (!shift) {
return Expr<T>{std::move(funcRef)};
@@ -804,11 +848,10 @@ template <typename T> Expr<T> Folder<T>::EOSHIFT(FunctionRef<T> &&funcRef) {
T::category == TypeCategory::Real ||
T::category == TypeCategory::Complex ||
T::category == TypeCategory::Logical) {
- resultElements.emplace_back();
+ resultElements.emplace_back(Scalar<T>::Zero(kind));
} else if constexpr (T::category == TypeCategory::Character) {
auto len{static_cast<std::size_t>(array->LEN())};
- typename Scalar<T>::value_type space{' '};
- resultElements.emplace_back(len, space);
+ resultElements.emplace_back(kind, len, ' ');
} else {
DIE("no derived type boundary");
}
@@ -816,7 +859,7 @@ template <typename T> Expr<T> Folder<T>::EOSHIFT(FunctionRef<T> &&funcRef) {
array->IncrementSubscripts(arrayAt);
}
return Expr<T>{PackageConstant<T>(
- std::move(resultElements), *array, array->shape())};
+ kind, std::move(resultElements), *array, array->shape())};
}
}
// Invalid, prevent re-folding
@@ -824,8 +867,9 @@ template <typename T> Expr<T> Folder<T>::EOSHIFT(FunctionRef<T> &&funcRef) {
}
template <typename T> Expr<T> Folder<T>::MERGE(FunctionRef<T> &&funcRef) {
- return FoldElementalIntrinsic<T, T, T, LogicalResult>(context_,
- std::move(funcRef),
+ const int kind{funcRef.kind()};
+ return FoldElementalIntrinsic<T, T, T, LogicalResult>(kind,
+ {kind, kind, LogicalResultKind}, context_, std::move(funcRef),
ScalarFunc<T, T, T, LogicalResult>(
[](const Scalar<T> &ifTrue, const Scalar<T> &ifFalse,
const Scalar<LogicalResult> &predicate) -> Scalar<T> {
@@ -834,12 +878,13 @@ template <typename T> Expr<T> Folder<T>::MERGE(FunctionRef<T> &&funcRef) {
}
template <typename T> Expr<T> Folder<T>::PACK(FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
auto args{funcRef.arguments()};
CHECK(args.size() == 3);
const auto *array{UnwrapConstantValue<T>(args[0])};
const auto *vector{UnwrapConstantValue<T>(args[2])};
auto convertedMask{Fold(context_,
- ConvertToType<LogicalResult>(
+ ConvertToType<LogicalResult>(LogicalResultKind,
Expr<SomeLogical>{DEREF(UnwrapExpr<Expr<SomeLogical>>(args[1]))}))};
const auto *mask{UnwrapConstantValue<LogicalResult>(convertedMask)};
if (!array || !mask || (args[2] && !vector)) {
@@ -893,7 +938,7 @@ template <typename T> Expr<T> Folder<T>::PACK(FunctionRef<T> &&funcRef) {
++vectorAt[0];
}
}
- return Expr<T>{PackageConstant<T>(std::move(resultElements), *array,
+ return Expr<T>{PackageConstant<T>(kind, std::move(resultElements), *array,
ConstantSubscripts{static_cast<ConstantSubscript>(resultSize)})};
}
@@ -1022,6 +1067,7 @@ template <typename T> Expr<T> Folder<T>::SPREAD(FunctionRef<T> &&funcRef) {
}
template <typename T> Expr<T> Folder<T>::TRANSPOSE(FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
auto args{funcRef.arguments()};
CHECK(args.size() == 1);
const auto *matrix{UnwrapConstantValue<T>(args[0])};
@@ -1040,15 +1086,17 @@ template <typename T> Expr<T> Folder<T>::TRANSPOSE(FunctionRef<T> &&funcRef) {
}
at = matrix->shape();
std::swap(at[0], at[1]);
- return Expr<T>{PackageConstant<T>(std::move(resultElements), *matrix, at)};
+ return Expr<T>{
+ PackageConstant<T>(kind, std::move(resultElements), *matrix, at)};
}
template <typename T> Expr<T> Folder<T>::UNPACK(FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
auto args{funcRef.arguments()};
CHECK(args.size() == 3);
const auto *vector{UnwrapConstantValue<T>(args[0])};
auto convertedMask{Fold(context_,
- ConvertToType<LogicalResult>(
+ ConvertToType<LogicalResult>(LogicalResultKind,
Expr<SomeLogical>{DEREF(UnwrapExpr<Expr<SomeLogical>>(args[1]))}))};
const auto *mask{UnwrapConstantValue<LogicalResult>(convertedMask)};
const auto *field{UnwrapConstantValue<T>(args[2])};
@@ -1089,8 +1137,8 @@ template <typename T> Expr<T> Folder<T>::UNPACK(FunctionRef<T> &&funcRef) {
mask->IncrementSubscripts(maskAt);
field->IncrementSubscripts(fieldAt);
}
- return Expr<T>{
- PackageConstant<T>(std::move(resultElements), *vector, mask->shape())};
+ return Expr<T>{PackageConstant<T>(
+ kind, std::move(resultElements), *vector, mask->shape())};
}
std::optional<Expr<SomeType>> FoldTransfer(
@@ -1109,6 +1157,7 @@ template <typename T> Expr<T> Folder<T>::TRANSFER(FunctionRef<T> &&funcRef) {
template <typename T>
Expr<T> FoldMINorMAX(
FoldingContext &context, FunctionRef<T> &&funcRef, Ordering order) {
+ const int kind{funcRef.kind()};
static_assert(T::category == TypeCategory::Integer ||
T::category == TypeCategory::Unsigned ||
T::category == TypeCategory::Real ||
@@ -1123,8 +1172,8 @@ Expr<T> FoldMINorMAX(
// optional arguments that may show up in 3rd + argument.
// - The code below only accepts more than 2 arguments if all the
// arguments are constant (and hence known to be present).
- // - ConvertExprToHLFIR can't currently handle Extremum<Character>
- // - Semantics doesn't currently generate Extremum<Character>
+ // - ConvertExprToHLFIR can't currently handle Extremum<CharacterValue>
+ // - Semantics doesn't currently generate Extremum<CharacterValue>
// The original code did the folding of arguments and the overall extremum
// operation in a single pass. This was shorter code-wise, but took me
// a while to tease out all the logic and was doing redundant work.
@@ -1141,7 +1190,7 @@ Expr<T> FoldMINorMAX(
bool extremumAnyway{nargs == 2 && T::category != TypeCategory::Character};
// 1a)Fold the first two arguments.
{
- Folder<T> folder{context, /*forOptionalArgument=*/false};
+ Folder<T> folder{kind, context, /*forOptionalArgument=*/false};
if (!folder.Folding(args[0])) {
allArgsConstant = false;
}
@@ -1151,7 +1200,7 @@ Expr<T> FoldMINorMAX(
}
// 1b) Fold any optional arguments.
if (nargs > 2) {
- Folder<T> folder{context, /*forOptionalArgument=*/true};
+ Folder<T> folder{kind, context, /*forOptionalArgument=*/true};
for (std::size_t i{2}; i < nargs; ++i) {
if (args[i]) {
if (!folder.Folding(args[i])) {
@@ -1224,9 +1273,11 @@ Expr<T> RewriteSpecificMINorMAX(
intrinsic.characteristics.value().functionResult.value().SetType(*resultType);
auto insertConversion{[&](const auto &x) -> Expr<T> {
using TR = ResultType<decltype(x)>;
+ const int kind{x.kind()};
FunctionRef<TR> maxRef{
- ProcedureDesignator{funcRef.proc()}, ActualArguments{args}};
- return Fold(context, ConvertToType<T>(AsCategoryExpr(std::move(maxRef))));
+ kind, ProcedureDesignator{funcRef.proc()}, ActualArguments{args}};
+ return Fold(
+ context, ConvertToType<T>(kind, AsCategoryExpr(std::move(maxRef))));
}};
if (auto *sx{UnwrapExpr<Expr<SomeReal>>(*resultTypeArg)}) {
return common::visit(insertConversion, sx->u);
@@ -1238,25 +1289,20 @@ Expr<T> RewriteSpecificMINorMAX(
}
// FoldIntrinsicFunction()
-template <int KIND>
-Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
- FoldingContext &context, FunctionRef<Type<TypeCategory::Integer, KIND>> &&);
-template <int KIND>
-Expr<Type<TypeCategory::Unsigned, KIND>> FoldIntrinsicFunction(
- FoldingContext &context,
- FunctionRef<Type<TypeCategory::Unsigned, KIND>> &&);
-template <int KIND>
-Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
- FoldingContext &context, FunctionRef<Type<TypeCategory::Real, KIND>> &&);
-template <int KIND>
-Expr<Type<TypeCategory::Complex, KIND>> FoldIntrinsicFunction(
- FoldingContext &context, FunctionRef<Type<TypeCategory::Complex, KIND>> &&);
-template <int KIND>
-Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
- FoldingContext &context, FunctionRef<Type<TypeCategory::Logical, KIND>> &&);
+Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(
+ FoldingContext &context, FunctionRef<Type<TypeCategory::Integer>> &&);
+Expr<Type<TypeCategory::Unsigned>> FoldIntrinsicFunction(
+ FoldingContext &context, FunctionRef<Type<TypeCategory::Unsigned>> &&);
+Expr<Type<TypeCategory::Real>> FoldIntrinsicFunction(
+ FoldingContext &context, FunctionRef<Type<TypeCategory::Real>> &&);
+Expr<Type<TypeCategory::Complex>> FoldIntrinsicFunction(
+ FoldingContext &context, FunctionRef<Type<TypeCategory::Complex>> &&);
+Expr<Type<TypeCategory::Logical>> FoldIntrinsicFunction(
+ FoldingContext &context, FunctionRef<Type<TypeCategory::Logical>> &&);
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
const auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
if (!intrinsic || intrinsic->name != "kind") {
@@ -1313,23 +1359,23 @@ Expr<T> FoldOperation(FoldingContext &context, FunctionRef<T> &&funcRef) {
}
const std::string name{intrinsic->name};
if (name == "cshift") {
- return Folder<T>{context}.CSHIFT(std::move(funcRef));
+ return Folder<T>{kind, context}.CSHIFT(std::move(funcRef));
} else if (name == "eoshift") {
- return Folder<T>{context}.EOSHIFT(std::move(funcRef));
+ return Folder<T>{kind, context}.EOSHIFT(std::move(funcRef));
} else if (name == "merge") {
- return Folder<T>{context}.MERGE(std::move(funcRef));
+ return Folder<T>{kind, context}.MERGE(std::move(funcRef));
} else if (name == "pack") {
- return Folder<T>{context}.PACK(std::move(funcRef));
+ return Folder<T>{kind, context}.PACK(std::move(funcRef));
} else if (name == "reshape") {
- return Folder<T>{context}.RESHAPE(std::move(funcRef));
+ return Folder<T>{kind, context}.RESHAPE(std::move(funcRef));
} else if (name == "spread") {
- return Folder<T>{context}.SPREAD(std::move(funcRef));
+ return Folder<T>{kind, context}.SPREAD(std::move(funcRef));
} else if (name == "transfer") {
- return Folder<T>{context}.TRANSFER(std::move(funcRef));
+ return Folder<T>{kind, context}.TRANSFER(std::move(funcRef));
} else if (name == "transpose") {
- return Folder<T>{context}.TRANSPOSE(std::move(funcRef));
+ return Folder<T>{kind, context}.TRANSPOSE(std::move(funcRef));
} else if (name == "unpack") {
- return Folder<T>{context}.UNPACK(std::move(funcRef));
+ return Folder<T>{kind, context}.UNPACK(std::move(funcRef));
}
// TODO: extends_type_of, same_type_as
if constexpr (!std::is_same_v<T, SomeDerived>) {
@@ -1342,9 +1388,11 @@ Expr<T> FoldOperation(FoldingContext &context, FunctionRef<T> &&funcRef) {
// Array constructor folding
template <typename T> class ArrayConstructorFolder {
public:
- explicit ArrayConstructorFolder(FoldingContext &c) : context_{c} {}
+ explicit ArrayConstructorFolder(int kind, FoldingContext &c)
+ : context_{c}, resultInfo_{kind} {}
Expr<T> FoldArray(ArrayConstructor<T> &&array) {
+ const int kind{array.kind()};
if constexpr (T::category == TypeCategory::Character) {
if (const auto *len{array.LEN()}) {
charLength_ = ToInt64(Fold(context_, common::Clone(*len)));
@@ -1355,16 +1403,23 @@ template <typename T> class ArrayConstructorFolder {
if (FoldArray(array)) {
auto n{static_cast<ConstantSubscript>(elements_.size())};
if constexpr (std::is_same_v<T, SomeDerived>) {
+ CHECK(kind == 0);
return Expr<T>{Constant<T>{array.GetType().GetDerivedTypeSpec(),
std::move(elements_), ConstantSubscripts{n}}};
} else if constexpr (T::category == TypeCategory::Character) {
if (charLength_) {
return Expr<T>{Constant<T>{
- *charLength_, std::move(elements_), ConstantSubscripts{n}}};
+ kind, *charLength_, std::move(elements_), ConstantSubscripts{n}}};
}
} else {
+ // resultInfo_ is default-constructed (kind 0) and only ever has its
+ // isFromInexactLiteralConversion flag set above; give it the actual
+ // runtime kind here so that the Constant's result_ carries a valid
+ // kind (kind_ is a public field of Type<CAT>, not a category with
+ // its own constructor call, so this preserves that flag).
+ assert(resultInfo_.kind() == kind);
return Expr<T>{Constant<T>{
- std::move(elements_), ConstantSubscripts{n}, resultInfo_}};
+ kind, std::move(elements_), ConstantSubscripts{n}, resultInfo_}};
}
}
return Expr<T>{std::move(array)};
@@ -1447,7 +1502,8 @@ template <typename T> class ArrayConstructorFolder {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, ArrayConstructor<T> &&array) {
- return ArrayConstructorFolder<T>{context}.FoldArray(std::move(array));
+ const int kind{array.kind()};
+ return ArrayConstructorFolder<T>{kind, context}.FoldArray(std::move(array));
}
// Array operation elemental application: When all operands to an operation
@@ -1470,12 +1526,13 @@ bool ArrayConstructorIsFlat(const ArrayConstructorValues<T> &values) {
template <typename T>
std::optional<Expr<T>> AsFlatArrayConstructor(const Expr<T> &expr) {
+ const int kind{expr.kind()};
if (const auto *c{UnwrapConstantValue<T>(expr)}) {
- ArrayConstructor<T> result{expr};
+ ArrayConstructor<T> result{kind, expr};
if (!c->empty()) {
ConstantSubscripts at{c->lbounds()};
do {
- result.Push(Expr<T>{Constant<T>{c->At(at)}});
+ result.Push(MakeConstantExpr<T>(kind, c->At(at)));
} while (c->IncrementSubscripts(at));
}
return std::make_optional<Expr<T>>(std::move(result));
@@ -1543,11 +1600,11 @@ std::optional<Expr<T>> FromArrayConstructor(
// Unary case
template <typename RESULT, typename OPERAND>
-std::optional<Expr<RESULT>> MapOperation(FoldingContext &context,
+std::optional<Expr<RESULT>> MapOperation(int kind, FoldingContext &context,
std::function<Expr<RESULT>(Expr<OPERAND> &&)> &&f, const Shape &shape,
[[maybe_unused]] std::optional<Expr<SubscriptInteger>> &&length,
Expr<OPERAND> &&values) {
- ArrayConstructor<RESULT> result{values};
+ ArrayConstructor<RESULT> result{kind, values};
if constexpr (common::HasMember<OPERAND, AllIntrinsicCategoryTypes>) {
common::visit(
[&](auto &&kindExpr) {
@@ -1575,9 +1632,9 @@ std::optional<Expr<RESULT>> MapOperation(FoldingContext &context,
}
template <typename RESULT, typename A>
-ArrayConstructor<RESULT> ArrayConstructorFromMold(
- const A &prototype, std::optional<Expr<SubscriptInteger>> &&length) {
- ArrayConstructor<RESULT> result{prototype};
+ArrayConstructor<RESULT> ArrayConstructorFromMold(int kind, const A &prototype,
+ std::optional<Expr<SubscriptInteger>> &&length) {
+ ArrayConstructor<RESULT> result{kind, prototype};
if constexpr (RESULT::category == TypeCategory::Character) {
if (length) {
result.set_LEN(std::move(*length));
@@ -1610,12 +1667,13 @@ bool ShapesMatch(FoldingContext &context,
// array * array case
template <typename RESULT, typename LEFT, typename RIGHT>
-auto MapOperation(FoldingContext &context,
+auto MapOperation(int kind, FoldingContext &context,
std::function<Expr<RESULT>(Expr<LEFT> &&, Expr<RIGHT> &&)> &&f,
const Shape &shape, std::optional<Expr<SubscriptInteger>> &&length,
Expr<LEFT> &&leftValues, Expr<RIGHT> &&rightValues)
-> std::optional<Expr<RESULT>> {
- auto result{ArrayConstructorFromMold<RESULT>(leftValues, std::move(length))};
+ auto result{
+ ArrayConstructorFromMold<RESULT>(kind, leftValues, std::move(length))};
auto &leftArrConst{std::get<ArrayConstructor<LEFT>>(leftValues.u)};
if constexpr (common::HasMember<RIGHT, AllIntrinsicCategoryTypes>) {
bool mapped{common::visit(
@@ -1661,12 +1719,13 @@ auto MapOperation(FoldingContext &context,
// array * scalar case
template <typename RESULT, typename LEFT, typename RIGHT>
-auto MapOperation(FoldingContext &context,
+auto MapOperation(int kind, FoldingContext &context,
std::function<Expr<RESULT>(Expr<LEFT> &&, Expr<RIGHT> &&)> &&f,
const Shape &shape, std::optional<Expr<SubscriptInteger>> &&length,
Expr<LEFT> &&leftValues, const Expr<RIGHT> &rightScalar)
-> std::optional<Expr<RESULT>> {
- auto result{ArrayConstructorFromMold<RESULT>(leftValues, std::move(length))};
+ auto result{
+ ArrayConstructorFromMold<RESULT>(kind, leftValues, std::move(length))};
auto &leftArrConst{std::get<ArrayConstructor<LEFT>>(leftValues.u)};
for (auto &leftValue : leftArrConst) {
auto &leftScalar{std::get<Expr<LEFT>>(leftValue.u)};
@@ -1678,12 +1737,13 @@ auto MapOperation(FoldingContext &context,
// scalar * array case
template <typename RESULT, typename LEFT, typename RIGHT>
-auto MapOperation(FoldingContext &context,
+auto MapOperation(int kind, FoldingContext &context,
std::function<Expr<RESULT>(Expr<LEFT> &&, Expr<RIGHT> &&)> &&f,
const Shape &shape, std::optional<Expr<SubscriptInteger>> &&length,
const Expr<LEFT> &leftScalar, Expr<RIGHT> &&rightValues)
-> std::optional<Expr<RESULT>> {
- auto result{ArrayConstructorFromMold<RESULT>(leftScalar, std::move(length))};
+ auto result{
+ ArrayConstructorFromMold<RESULT>(kind, leftScalar, std::move(length))};
if constexpr (common::HasMember<RIGHT, AllIntrinsicCategoryTypes>) {
common::visit(
[&](auto &&kindExpr) {
@@ -1726,12 +1786,13 @@ auto ApplyElementwise(FoldingContext &context,
Operation<DERIVED, RESULT, OPERAND> &operation,
std::function<Expr<RESULT>(Expr<OPERAND> &&)> &&f)
-> std::optional<Expr<RESULT>> {
+ const int kind{operation.kind()};
auto &expr{operation.left()};
expr = Fold(context, std::move(expr));
if (expr.Rank() > 0) {
if (std::optional<Shape> shape{GetShape(context, expr)}) {
if (auto values{AsFlatArrayConstructor(expr)}) {
- return MapOperation(context, std::move(f), *shape,
+ return MapOperation(kind, context, std::move(f), *shape,
ComputeResultLength(operation), std::move(*values));
}
}
@@ -1743,10 +1804,11 @@ template <typename DERIVED, typename RESULT, typename OPERAND>
auto ApplyElementwise(
FoldingContext &context, Operation<DERIVED, RESULT, OPERAND> &operation)
-> std::optional<Expr<RESULT>> {
+ const int kind{operation.kind()};
return ApplyElementwise(context, operation,
std::function<Expr<RESULT>(Expr<OPERAND> &&)>{
- [](Expr<OPERAND> &&operand) {
- return Expr<RESULT>{DERIVED{std::move(operand)}};
+ [kind](Expr<OPERAND> &&operand) {
+ return Expr<RESULT>{DERIVED{kind, std::move(operand)}};
}});
}
@@ -1755,6 +1817,7 @@ auto ApplyElementwise(FoldingContext &context,
Operation<DERIVED, RESULT, LEFT, RIGHT> &operation,
std::function<Expr<RESULT>(Expr<LEFT> &&, Expr<RIGHT> &&)> &&f)
-> std::optional<Expr<RESULT>> {
+ const int kind{operation.kind()};
auto resultLength{ComputeResultLength(operation)};
auto &leftExpr{operation.left()};
auto &rightExpr{operation.right()};
@@ -1773,18 +1836,18 @@ auto ApplyElementwise(FoldingContext &context,
if (CheckConformance(context.messages(), *leftShape, *rightShape,
CheckConformanceFlags::EitherScalarExpandable)
.value_or(false /*fail if not known now to conform*/)) {
- return MapOperation(context, std::move(f), *leftShape,
+ return MapOperation(kind, context, std::move(f), *leftShape,
std::move(resultLength), std::move(*left),
std::move(*right));
} else {
return std::nullopt;
}
- return MapOperation(context, std::move(f), *leftShape,
+ return MapOperation(kind, context, std::move(f), *leftShape,
std::move(resultLength), std::move(*left), std::move(*right));
}
}
} else if (IsExpandableScalar(rightExpr, context, *leftShape)) {
- return MapOperation(context, std::move(f), *leftShape,
+ return MapOperation(kind, context, std::move(f), *leftShape,
std::move(resultLength), std::move(*left), rightExpr);
}
}
@@ -1793,7 +1856,7 @@ auto ApplyElementwise(FoldingContext &context,
if (std::optional<Shape> rightShape{GetShape(context, rightExpr)}) {
if (IsExpandableScalar(leftExpr, context, *rightShape)) {
if (auto right{AsFlatArrayConstructor(rightExpr)}) {
- return MapOperation(context, std::move(f), *rightShape,
+ return MapOperation(kind, context, std::move(f), *rightShape,
std::move(resultLength), leftExpr, std::move(*right));
}
}
@@ -1806,46 +1869,46 @@ template <typename DERIVED, typename RESULT, typename LEFT, typename RIGHT>
auto ApplyElementwise(
FoldingContext &context, Operation<DERIVED, RESULT, LEFT, RIGHT> &operation)
-> std::optional<Expr<RESULT>> {
+ const int kind{operation.kind()};
return ApplyElementwise(context, operation,
std::function<Expr<RESULT>(Expr<LEFT> &&, Expr<RIGHT> &&)>{
- [](Expr<LEFT> &&left, Expr<RIGHT> &&right) {
- return Expr<RESULT>{DERIVED{std::move(left), std::move(right)}};
+ [kind](Expr<LEFT> &&left, Expr<RIGHT> &&right) {
+ return Expr<RESULT>{
+ DERIVED{kind, std::move(left), std::move(right)}};
}});
}
// Unary operations
template <typename TO, typename FROM>
-common::IfNoLvalue<std::optional<TO>, FROM> ConvertString(FROM &&s) {
- if constexpr (std::is_same_v<TO, FROM>) {
+common::IfNoLvalue<std::optional<TO>, FROM> ConvertString(
+ int toKind, FROM &&s) {
+ const int fromKind{s.kind()};
+ if (std::is_same_v<TO, FROM> && toKind == fromKind) {
return std::make_optional<TO>(std::move(s));
+ } else if (auto result{s.ToAscii(toKind)}; !result.IsMonostate()) {
+ return result;
} else {
- // Fortran character conversion is well defined between distinct kinds
- // only when the actual characters are valid 7-bit ASCII.
- TO str;
- for (auto iter{s.cbegin()}; iter != s.cend(); ++iter) {
- if (static_cast<std::uint64_t>(*iter) > 127) {
- return std::nullopt;
- }
- str.push_back(static_cast<typename TO::value_type>(*iter));
- }
- return std::make_optional<TO>(std::move(str));
+ return std::nullopt;
}
}
template <typename TO, TypeCategory FROMCAT>
Expr<TO> FoldOperation(
FoldingContext &context, Convert<TO, FROMCAT> &&convert) {
+ const int toKind{convert.kind()};
if (auto array{ApplyElementwise(context, convert)}) {
return *array;
}
struct {
FoldingContext &context;
Convert<TO, FROMCAT> &convert;
- } msvcWorkaround{context, convert};
+ int toKind;
+ } msvcWorkaround{context, convert, toKind};
return common::visit(
[&msvcWorkaround](auto &kindExpr) -> Expr<TO> {
using Operand = ResultType<decltype(kindExpr)>;
+ const int toKind{msvcWorkaround.toKind};
// This variable is a workaround for msvc which emits an error when
// using the FROMCAT template parameter below.
TypeCategory constexpr FromCat{FROMCAT};
@@ -1853,95 +1916,113 @@ Expr<TO> FoldOperation(
auto &convert{msvcWorkaround.convert};
if (auto value{GetScalarConstantValue<Operand>(kindExpr)}) {
FoldingContext &ctx{msvcWorkaround.context};
+ const int fromKind{value->kind()};
if constexpr (TO::category == TypeCategory::Integer) {
if constexpr (FromCat == TypeCategory::Integer) {
- auto converted{Scalar<TO>::ConvertSigned(*value)};
+ auto converted{
+ Scalar<TO>::ConvertSigned(*value, Scalar<TO>::bits(toKind))};
if (converted.overflow) {
ctx.Warn(common::UsageWarning::FoldingException,
"conversion of %s_%d to INTEGER(%d) overflowed; result is %s"_warn_en_US,
- value->SignedDecimal(), Operand::kind, TO::kind,
+ value->SignedDecimal(), fromKind, toKind,
converted.value.SignedDecimal());
}
- return ScalarConstantToExpr(std::move(converted.value));
+ return MakeConstantExpr<TO>(toKind, std::move(converted.value));
} else if constexpr (FromCat == TypeCategory::Unsigned) {
- auto converted{Scalar<TO>::ConvertUnsigned(*value)};
+ auto converted{Scalar<TO>::ConvertUnsigned(
+ *value, Scalar<TO>::bits(toKind))};
if ((converted.overflow || converted.value.IsNegative())) {
ctx.Warn(common::UsageWarning::FoldingException,
"conversion of %s_U%d to INTEGER(%d) overflowed; result is %s"_warn_en_US,
- value->UnsignedDecimal(), Operand::kind, TO::kind,
+ value->UnsignedDecimal(), fromKind, toKind,
converted.value.SignedDecimal());
}
- return ScalarConstantToExpr(std::move(converted.value));
+ return MakeConstantExpr<TO>(toKind, std::move(converted.value));
} else if constexpr (FromCat == TypeCategory::Real) {
- auto converted{value->template ToInteger<Scalar<TO>>()};
+ auto converted{value->ToInteger(
+ common::RoundingMode::ToZero, Scalar<TO>::bits(toKind))};
if (converted.flags.test(RealFlag::InvalidArgument)) {
ctx.Warn(common::UsageWarning::FoldingException,
"REAL(%d) to INTEGER(%d) conversion: invalid argument"_warn_en_US,
- Operand::kind, TO::kind);
+ fromKind, toKind);
} else if (converted.flags.test(RealFlag::Overflow)) {
ctx.Warn(common::UsageWarning::FoldingException,
"REAL(%d) to INTEGER(%d) conversion overflowed"_warn_en_US,
- Operand::kind, TO::kind);
+ fromKind, toKind);
}
- return ScalarConstantToExpr(std::move(converted.value));
+ return MakeConstantExpr<TO>(toKind, std::move(converted.value));
}
} else if constexpr (TO::category == TypeCategory::Unsigned) {
if constexpr (FromCat == TypeCategory::Integer ||
FromCat == TypeCategory::Unsigned) {
- return Expr<TO>{
- Constant<TO>{Scalar<TO>::ConvertUnsigned(*value).value}};
+ return MakeConstantExpr<TO>(toKind,
+ Scalar<TO>::ConvertUnsigned(*value, Scalar<TO>::bits(toKind))
+ .value);
} else if constexpr (FromCat == TypeCategory::Real) {
- return Expr<TO>{
- Constant<TO>{value->template ToInteger<Scalar<TO>>().value}};
+ return MakeConstantExpr<TO>(toKind,
+ value
+ ->ToInteger(common::RoundingMode::ToZero,
+ Scalar<TO>::bits(toKind))
+ .value);
}
} else if constexpr (TO::category == TypeCategory::Real) {
if constexpr (FromCat == TypeCategory::Integer ||
FromCat == TypeCategory::Unsigned) {
auto converted{Scalar<TO>::FromInteger(
- *value, FromCat == TypeCategory::Unsigned)};
+ toKind, *value, FromCat == TypeCategory::Unsigned)};
if (!converted.flags.empty()) {
char buffer[64];
std::snprintf(buffer, sizeof buffer,
- "INTEGER(%d) to REAL(%d) conversion", Operand::kind,
- TO::kind);
+ "INTEGER(%d) to REAL(%d) conversion", fromKind, toKind);
ctx.RealFlagWarnings(converted.flags, buffer);
}
- return ScalarConstantToExpr(std::move(converted.value));
+ return MakeConstantExpr<TO>(toKind, std::move(converted.value));
} else if constexpr (FromCat == TypeCategory::Real) {
- auto converted{Scalar<TO>::Convert(*value)};
+ auto converted{Scalar<TO>::Convert(toKind, *value)};
char buffer[64];
if (!converted.flags.empty()) {
std::snprintf(buffer, sizeof buffer,
- "REAL(%d) to REAL(%d) conversion", Operand::kind, TO::kind);
+ "REAL(%d) to REAL(%d) conversion", fromKind, toKind);
ctx.RealFlagWarnings(converted.flags, buffer);
}
if (ctx.targetCharacteristics().areSubnormalsFlushedToZero()) {
converted.value = converted.value.FlushSubnormalToZero();
}
- return ScalarConstantToExpr(std::move(converted.value));
+ return MakeConstantExpr<TO>(toKind, std::move(converted.value));
}
} else if constexpr (TO::category == TypeCategory::Complex) {
if constexpr (FromCat == TypeCategory::Complex) {
return FoldOperation(ctx,
- ComplexConstructor<TO::kind>{
- AsExpr(Convert<typename TO::Part>{AsCategoryExpr(
- Constant<typename Operand::Part>{value->REAL()})}),
- AsExpr(Convert<typename TO::Part>{AsCategoryExpr(
- Constant<typename Operand::Part>{value->AIMAG()})})});
+ ComplexConstructor{toKind,
+ Fold(ctx,
+ AsExpr(Convert<typename TO::Part>(toKind,
+ AsCategoryExpr(Constant<typename Operand::Part>{
+ toKind, value->REAL()})))),
+ Fold(ctx,
+ AsExpr(Convert<typename TO::Part>(toKind,
+ AsCategoryExpr(Constant<typename Operand::Part>{
+ toKind, value->AIMAG()}))))});
}
} else if constexpr (TO::category == TypeCategory::Character &&
FromCat == TypeCategory::Character) {
- if (auto converted{ConvertString<Scalar<TO>>(std::move(*value))}) {
+ if (auto converted{
+ ConvertString<Scalar<TO>>(toKind, std::move(*value))}) {
return ScalarConstantToExpr(std::move(*converted));
}
} else if constexpr (TO::category == TypeCategory::Logical &&
FromCat == TypeCategory::Logical) {
- return Expr<TO>{value->IsTrue()};
+ // The conversion's target kind is a runtime property; build the
+ // result LOGICAL constant with that kind rather than letting it
+ // default (the Expr<Logical>(bool) constructor would otherwise
+ // produce LogicalResultKind=4 and silently drop the conversion).
+ return Expr<TO>{Constant<TO>{
+ toKind, value::LogicalValue{toKind, value->IsTrue()}}};
}
} else if constexpr (TO::category == FromCat &&
FromCat != TypeCategory::Character) {
// Conversion of non-constant in same type category
- if constexpr (std::is_same_v<Operand, TO>) {
+ auto fromTy{kindExpr.GetType()};
+ if (fromTy && fromTy->kind() == toKind) {
return std::move(kindExpr); // remove needless conversion
} else if constexpr (TO::category == TypeCategory::Logical ||
TO::category == TypeCategory::Integer) {
@@ -1949,16 +2030,26 @@ Expr<TO> FoldOperation(
std::get_if<Convert<Operand, TO::category>>(&kindExpr.u)}) {
// Conversion of conversion of same category & kind
if (auto *x{std::get_if<Expr<TO>>(&innerConv->left().u)}) {
- if constexpr (TO::category == TypeCategory::Logical ||
- TO::kind <= Operand::kind) {
- return std::move(*x); // no-op Logical or Integer
- // widening/narrowing conversion pair
- } else if constexpr (std::is_same_v<TO,
- DescriptorInquiry::Result>) {
- if (std::holds_alternative<DescriptorInquiry>(x->u) ||
- std::holds_alternative<TypeParamInquiry>(x->u)) {
+ // intermediateKind is the kind of the middle (Operand) result;
+ // xKind is the kind of the innermost expression, which must
+ // match the outer target for the round trip to be a no-op.
+ auto intermediateTy{kindExpr.GetType()};
+ auto xTy{x->GetType()};
+ int intermediateKind{
+ intermediateTy ? intermediateTy->kind() : 0};
+ int xKind{xTy ? xTy->kind() : 0};
+ if constexpr (TO::category == TypeCategory::Logical) {
+ return std::move(*x); // no-op Logical conversion pair
+ } else { // Integer
+ if (xKind == toKind && toKind <= intermediateKind) {
+ return std::move(*x); // widening/narrowing conversion pair
+ } else if (toKind == SubscriptIntegerKind &&
+ xKind == toKind) {
// int(int(size(...),kind=k),kind=8) -> size(...)
- return std::move(*x);
+ if (std::holds_alternative<DescriptorInquiry>(x->u) ||
+ std::holds_alternative<TypeParamInquiry>(x->u)) {
+ return std::move(*x);
+ }
}
}
}
@@ -1972,11 +2063,12 @@ Expr<TO> FoldOperation(
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Parentheses<T> &&x) {
+ const int kind{x.kind()};
auto &operand{x.left()};
operand = Fold(context, std::move(operand));
if (auto value{GetScalarConstantValue<T>(operand)}) {
// Preserve parentheses, even around constants.
- return Expr<T>{Parentheses<T>{Expr<T>{Constant<T>{*value}}}};
+ return Expr<T>{Parentheses<T>{kind, MakeConstantExpr<T>(kind, *value)}};
} else if (std::holds_alternative<Parentheses<T>>(operand.u)) {
// ((x)) -> (x)
return std::move(operand);
@@ -1987,6 +2079,7 @@ Expr<T> FoldOperation(FoldingContext &context, Parentheses<T> &&x) {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Negate<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
@@ -2003,14 +2096,14 @@ Expr<T> FoldOperation(FoldingContext &context, Negate<T> &&x) {
auto negated{value->Negate()};
if (negated.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) negation overflowed"_warn_en_US, T::kind);
+ "INTEGER(%d) negation overflowed"_warn_en_US, value->kind());
}
- return Expr<T>{Constant<T>{std::move(negated.value)}};
+ return Expr<T>{Constant<T>{kind, std::move(negated.value)}};
} else if constexpr (T::category == TypeCategory::Unsigned) {
- return Expr<T>{Constant<T>{std::move(value->Negate().value)}};
+ return Expr<T>{Constant<T>{kind, std::move(value->Negate().value)}};
} else {
// REAL & COMPLEX negation: no exceptions possible
- return Expr<T>{Constant<T>{value->Negate()}};
+ return Expr<T>{Constant<T>{kind, value->Negate()}};
}
}
return Expr<T>{std::move(x)};
@@ -2037,6 +2130,7 @@ std::optional<std::pair<Scalar<LEFT>, Scalar<RIGHT>>> OperandsAreConstants(
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Add<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
@@ -2045,12 +2139,12 @@ Expr<T> FoldOperation(FoldingContext &context, Add<T> &&x) {
auto sum{folded->first.AddSigned(folded->second)};
if (sum.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) addition overflowed"_warn_en_US, T::kind);
+ "INTEGER(%d) addition overflowed"_warn_en_US, folded->first.kind());
}
- return Expr<T>{Constant<T>{sum.value}};
+ return Expr<T>{Constant<T>{kind, sum.value}};
} else if constexpr (T::category == TypeCategory::Unsigned) {
return Expr<T>{
- Constant<T>{folded->first.AddUnsigned(folded->second).value}};
+ Constant<T>{kind, folded->first.AddUnsigned(folded->second).value}};
} else {
auto sum{folded->first.Add(
folded->second, context.targetCharacteristics().roundingMode())};
@@ -2058,7 +2152,7 @@ Expr<T> FoldOperation(FoldingContext &context, Add<T> &&x) {
if (context.targetCharacteristics().areSubnormalsFlushedToZero()) {
sum.value = sum.value.FlushSubnormalToZero();
}
- return Expr<T>{Constant<T>{sum.value}};
+ return Expr<T>{Constant<T>{kind, sum.value}};
}
} else if constexpr (T::category == TypeCategory::Integer ||
T::category == TypeCategory::Unsigned) {
@@ -2085,6 +2179,7 @@ Expr<T> FoldOperation(FoldingContext &context, Add<T> &&x) {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Subtract<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
@@ -2093,12 +2188,13 @@ Expr<T> FoldOperation(FoldingContext &context, Subtract<T> &&x) {
auto difference{folded->first.SubtractSigned(folded->second)};
if (difference.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) subtraction overflowed"_warn_en_US, T::kind);
+ "INTEGER(%d) subtraction overflowed"_warn_en_US,
+ folded->first.kind());
}
- return Expr<T>{Constant<T>{difference.value}};
+ return Expr<T>{Constant<T>{kind, difference.value}};
} else if constexpr (T::category == TypeCategory::Unsigned) {
- return Expr<T>{
- Constant<T>{folded->first.SubtractSigned(folded->second).value}};
+ return Expr<T>{Constant<T>{
+ kind, folded->first.SubtractSigned(folded->second).value}};
} else {
auto difference{folded->first.Subtract(
folded->second, context.targetCharacteristics().roundingMode())};
@@ -2106,7 +2202,7 @@ Expr<T> FoldOperation(FoldingContext &context, Subtract<T> &&x) {
if (context.targetCharacteristics().areSubnormalsFlushedToZero()) {
difference.value = difference.value.FlushSubnormalToZero();
}
- return Expr<T>{Constant<T>{difference.value}};
+ return Expr<T>{Constant<T>{kind, difference.value}};
}
} else if constexpr (T::category == TypeCategory::Integer ||
T::category == TypeCategory::Unsigned) {
@@ -2125,6 +2221,7 @@ Expr<T> FoldOperation(FoldingContext &context, Subtract<T> &&x) {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Multiply<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
@@ -2133,12 +2230,13 @@ Expr<T> FoldOperation(FoldingContext &context, Multiply<T> &&x) {
auto product{folded->first.MultiplySigned(folded->second)};
if (product.SignedMultiplicationOverflowed()) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) multiplication overflowed"_warn_en_US, T::kind);
+ "INTEGER(%d) multiplication overflowed"_warn_en_US,
+ folded->first.kind());
}
- return Expr<T>{Constant<T>{product.lower}};
+ return Expr<T>{Constant<T>{kind, product.lower}};
} else if constexpr (T::category == TypeCategory::Unsigned) {
- return Expr<T>{
- Constant<T>{folded->first.MultiplyUnsigned(folded->second).lower}};
+ return Expr<T>{Constant<T>{
+ kind, folded->first.MultiplyUnsigned(folded->second).lower}};
} else {
auto product{folded->first.Multiply(
folded->second, context.targetCharacteristics().roundingMode())};
@@ -2146,23 +2244,25 @@ Expr<T> FoldOperation(FoldingContext &context, Multiply<T> &&x) {
if (context.targetCharacteristics().areSubnormalsFlushedToZero()) {
product.value = product.value.FlushSubnormalToZero();
}
- return Expr<T>{Constant<T>{product.value}};
+ return Expr<T>{Constant<T>{kind, product.value}};
}
} else if constexpr (T::category == TypeCategory::Integer) {
if (auto c{GetScalarConstantValue<T>(x.right())}) {
x.right() = std::move(x.left());
- x.left() = Expr<T>{std::move(*c)};
+ x.left() = Expr<T>{Constant<T>(kind, *c)};
}
if (auto c{GetScalarConstantValue<T>(x.left())}) {
if (c->IsZero() && x.right().Rank() == 0) {
return std::move(x.left());
- } else if (c->CompareSigned(Scalar<T>{1}) == Ordering::Equal) {
+ } else if (c->CompareSigned(value::IntegerValue{kind, 1}) ==
+ Ordering::Equal) {
if (IsVariable(x.right())) {
return FoldOperation(context, Parentheses<T>{std::move(x.right())});
} else {
return std::move(x.right());
}
- } else if (c->CompareSigned(Scalar<T>{-1}) == Ordering::Equal) {
+ } else if (c->CompareSigned(value::IntegerValue{kind, -1}) ==
+ Ordering::Equal) {
return FoldOperation(context, Negate<T>{std::move(x.right())});
}
}
@@ -2172,6 +2272,7 @@ Expr<T> FoldOperation(FoldingContext &context, Multiply<T> &&x) {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Divide<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
@@ -2180,22 +2281,22 @@ Expr<T> FoldOperation(FoldingContext &context, Divide<T> &&x) {
auto quotAndRem{folded->first.DivideSigned(folded->second)};
if (quotAndRem.divisionByZero) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) division by zero"_warn_en_US, T::kind);
+ "INTEGER(%d) division by zero"_warn_en_US, folded->first.kind());
return Expr<T>{std::move(x)};
}
if (quotAndRem.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) division overflowed"_warn_en_US, T::kind);
+ "INTEGER(%d) division overflowed"_warn_en_US, folded->first.kind());
}
- return Expr<T>{Constant<T>{quotAndRem.quotient}};
+ return Expr<T>{Constant<T>{kind, quotAndRem.quotient}};
} else if constexpr (T::category == TypeCategory::Unsigned) {
auto quotAndRem{folded->first.DivideUnsigned(folded->second)};
if (quotAndRem.divisionByZero) {
context.Warn(common::UsageWarning::FoldingException,
- "UNSIGNED(%d) division by zero"_warn_en_US, T::kind);
+ "UNSIGNED(%d) division by zero"_warn_en_US, folded->first.kind());
return Expr<T>{std::move(x)};
}
- return Expr<T>{Constant<T>{quotAndRem.quotient}};
+ return Expr<T>{Constant<T>{kind, quotAndRem.quotient}};
} else {
auto quotient{folded->first.Divide(
folded->second, context.targetCharacteristics().roundingMode())};
@@ -2206,10 +2307,10 @@ Expr<T> FoldOperation(FoldingContext &context, Divide<T> &&x) {
if constexpr (T::category == TypeCategory::Real) {
if (folded->second.IsZero() && context.moduleFileName().has_value()) {
using IntType = typename T::Scalar::Word;
- auto intNumerator{folded->first.template ToInteger<IntType>()};
+ auto intNumerator{folded->first.ToInteger()};
isCanonicalNaNOrInf = intNumerator.flags == RealFlags{} &&
- intNumerator.value >= IntType{-1} &&
- intNumerator.value <= IntType{1};
+ intNumerator.value >= IntType{16, -1} &&
+ intNumerator.value <= IntType{16, 1};
}
}
if (!isCanonicalNaNOrInf) {
@@ -2218,7 +2319,7 @@ Expr<T> FoldOperation(FoldingContext &context, Divide<T> &&x) {
if (context.targetCharacteristics().areSubnormalsFlushedToZero()) {
quotient.value = quotient.value.FlushSubnormalToZero();
}
- return Expr<T>{Constant<T>{quotient.value}};
+ return Expr<T>{Constant<T>{kind, quotient.value}};
}
}
return Expr<T>{std::move(x)};
@@ -2226,6 +2327,7 @@ Expr<T> FoldOperation(FoldingContext &context, Divide<T> &&x) {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Power<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
@@ -2234,30 +2336,33 @@ Expr<T> FoldOperation(FoldingContext &context, Power<T> &&x) {
auto power{folded->first.Power(folded->second)};
if (power.divisionByZero) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) zero to negative power"_warn_en_US, T::kind);
+ "INTEGER(%d) zero to negative power"_warn_en_US,
+ folded->first.kind());
} else if (power.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) power overflowed"_warn_en_US, T::kind);
+ "INTEGER(%d) power overflowed"_warn_en_US, folded->first.kind());
} else if (power.zeroToZero) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) 0**0 is not defined"_warn_en_US, T::kind);
+ "INTEGER(%d) 0**0 is not defined"_warn_en_US, folded->first.kind());
}
- return Expr<T>{Constant<T>{power.power}};
+ return Expr<T>{Constant<T>{kind, power.power}};
} else {
if (folded->first.IsZero()) {
if (folded->second.IsZero()) {
context.Warn(common::UsageWarning::FoldingException,
"REAL/COMPLEX 0**0 is not defined"_warn_en_US);
} else {
- return Expr<T>(Constant<T>{folded->first}); // 0. ** nonzero -> 0.
+ return Expr<T>(
+ Constant<T>{kind, folded->first}); // 0. ** nonzero -> 0.
}
- } else if (auto callable{GetHostRuntimeWrapper<T, T, T>("pow")}) {
- return Expr<T>{
- Constant<T>{(*callable)(context, folded->first, folded->second)}};
+ } else if (auto callable{GetHostRuntimeWrapper<T, T, T>(
+ kind, {kind, kind}, "pow")}) {
+ return Expr<T>{Constant<T>{
+ kind, (*callable)(context, folded->first, folded->second)}};
} else {
context.Warn(common::UsageWarning::FoldingFailure,
"Power for %s cannot be folded on host"_warn_en_US,
- T{}.AsFortran());
+ DynamicType{T::category, folded->first.kind()}.AsFortran());
}
}
}
@@ -2266,18 +2371,19 @@ Expr<T> FoldOperation(FoldingContext &context, Power<T> &&x) {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, RealToIntPower<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
return common::visit(
- [&](auto &y) -> Expr<T> {
+ [&, kind](auto &y) -> Expr<T> {
if (auto folded{OperandsAreConstants(x.left(), y)}) {
auto power{evaluate::IntPower(folded->first, folded->second)};
context.RealFlagWarnings(power.flags, "power with INTEGER exponent");
if (context.targetCharacteristics().areSubnormalsFlushedToZero()) {
power.value = power.value.FlushSubnormalToZero();
}
- return Expr<T>{Constant<T>{power.value}};
+ return Expr<T>{Constant<T>{kind, power.value}};
} else {
return Expr<T>{std::move(x)};
}
@@ -2298,6 +2404,7 @@ Expr<T> FoldOperation(FoldingContext &context, ConditionalExpr<T> &&x) {
template <typename T>
Expr<T> FoldOperation(FoldingContext &context, Extremum<T> &&x) {
+ const int kind{x.kind()};
if (auto array{ApplyElementwise(context, x,
std::function<Expr<T>(Expr<T> &&, Expr<T> &&)>{[=](Expr<T> &&l,
Expr<T> &&r) {
@@ -2308,17 +2415,17 @@ Expr<T> FoldOperation(FoldingContext &context, Extremum<T> &&x) {
if (auto folded{OperandsAreConstants(x)}) {
if constexpr (T::category == TypeCategory::Integer) {
if (folded->first.CompareSigned(folded->second) == x.ordering) {
- return Expr<T>{Constant<T>{folded->first}};
+ return Expr<T>{Constant<T>{kind, folded->first}};
}
} else if constexpr (T::category == TypeCategory::Unsigned) {
if (folded->first.CompareUnsigned(folded->second) == x.ordering) {
- return Expr<T>{Constant<T>{folded->first}};
+ return Expr<T>{Constant<T>{kind, folded->first}};
}
} else if constexpr (T::category == TypeCategory::Real) {
if (folded->first.IsNotANumber() ||
(folded->first.Compare(folded->second) == Relation::Less) ==
(x.ordering == Ordering::Less)) {
- return Expr<T>{Constant<T>{folded->first}};
+ return Expr<T>{Constant<T>{kind, folded->first}};
}
} else {
static_assert(T::category == TypeCategory::Character);
@@ -2327,38 +2434,38 @@ Expr<T> FoldOperation(FoldingContext &context, Extremum<T> &&x) {
auto maxLen{std::max(folded->first.length(), folded->second.length())};
bool isFirst{x.ordering == Compare(folded->first, folded->second)};
auto res{isFirst ? std::move(folded->first) : std::move(folded->second)};
- res = res.length() == maxLen
- ? std::move(res)
- : CharacterUtils<T::kind>::Resize(res, maxLen);
- return Expr<T>{Constant<T>{std::move(res)}};
+ if (res.length() != maxLen) {
+ res = CharacterUtils::Resize(res, maxLen);
+ }
+ return Expr<T>{Constant<T>{kind, std::move(res)}};
}
- return Expr<T>{Constant<T>{folded->second}};
+ return Expr<T>{Constant<T>{kind, folded->second}};
}
return Expr<T>{std::move(x)};
}
-template <int KIND>
-Expr<Type<TypeCategory::Real, KIND>> ToReal(
- FoldingContext &context, Expr<SomeType> &&expr) {
- using Result = Type<TypeCategory::Real, KIND>;
+inline Expr<Type<TypeCategory::Real>> ToReal(
+ int kind, FoldingContext &context, Expr<SomeType> &&expr) {
+ using Result = Type<TypeCategory::Real>;
std::optional<Expr<Result>> result;
common::visit(
[&](auto &&x) {
using From = std::decay_t<decltype(x)>;
if constexpr (std::is_same_v<From, BOZLiteralConstant>) {
// Move the bits without any integer->real conversion
- From original{x};
- result = ConvertToType<Result>(std::move(x));
+ BOZLiteralConstant original{x};
+ result = ConvertToType<Result>(kind, std::move(x));
const auto *constant{UnwrapExpr<Constant<Result>>(*result)};
CHECK(constant);
Scalar<Result> real{constant->GetScalarValue().value()};
- From converted{From::ConvertUnsigned(real.RawBits()).value};
+ BOZLiteralConstant converted{
+ BOZLiteralConstant::ConvertUnsigned(real.RawBits(), 128).value};
if (original != converted) { // C1601
context.Warn(common::UsageWarning::FoldingValueChecks,
"Nonzero bits truncated from BOZ literal constant in REAL intrinsic"_warn_en_US);
}
} else if constexpr (IsNumericCategoryExpr<From>()) {
- result = Fold(context, ConvertToType<Result>(std::move(x)));
+ result = Fold(context, ConvertToType<Result>(kind, std::move(x)));
} else {
common::die("ToReal: bad argument expression");
}
@@ -2368,25 +2475,25 @@ Expr<Type<TypeCategory::Real, KIND>> ToReal(
}
// REAL(z) and AIMAG(z)
-template <int KIND>
-Expr<Type<TypeCategory::Real, KIND>> FoldOperation(
- FoldingContext &context, ComplexComponent<KIND> &&x) {
- using Operand = Type<TypeCategory::Complex, KIND>;
- using Result = Type<TypeCategory::Real, KIND>;
+inline Expr<Type<TypeCategory::Real>> FoldOperation(
+ FoldingContext &context, ComplexComponent &&x) {
+ const int kind{x.kind()};
+ using Operand = Type<TypeCategory::Complex>;
+ using Result = Type<TypeCategory::Real>;
if (auto array{ApplyElementwise(context, x,
std::function<Expr<Result>(Expr<Operand> &&)>{
[=](Expr<Operand> &&operand) {
- return Expr<Result>{ComplexComponent<KIND>{
- x.isImaginaryPart, std::move(operand)}};
+ return Expr<Result>{
+ ComplexComponent{x.isImaginaryPart, std::move(operand)}};
}})}) {
return *array;
}
auto &operand{x.left()};
if (auto value{GetScalarConstantValue<Operand>(operand)}) {
if (x.isImaginaryPart) {
- return Expr<Result>{Constant<Result>{value->AIMAG()}};
+ return Expr<Result>{Constant<Result>{kind, value->AIMAG()}};
} else {
- return Expr<Result>{Constant<Result>{value->REAL()}};
+ return Expr<Result>{Constant<Result>{kind, value->REAL()}};
}
}
return Expr<Result>{std::move(x)};
diff --git a/flang/lib/Evaluate/fold-integer.cpp b/flang/lib/Evaluate/fold-integer.cpp
index c7db4069e3e282..2545f4b4210b57 100644
--- a/flang/lib/Evaluate/fold-integer.cpp
+++ b/flang/lib/Evaluate/fold-integer.cpp
@@ -10,6 +10,7 @@
#include "fold-matmul.h"
#include "fold-reduction.h"
#include "flang/Evaluate/check-expression.h"
+#include "flang/Evaluate/shape.h"
namespace Fortran::evaluate {
@@ -17,16 +18,17 @@ namespace Fortran::evaluate {
// Return scalar value if asScalar == true and shape-dim array otherwise.
template <typename T>
Expr<T> PackageConstantBounds(
- const ConstantSubscripts &&bounds, bool asScalar = false) {
+ int kind, const ConstantSubscripts &&bounds, bool asScalar = false) {
if (asScalar) {
- return Expr<T>{Constant<T>{bounds.at(0)}};
+ return MakeConstantExpr<T>(kind, bounds.at(0));
} else {
// As rank-dim array
const int rank{GetRank(bounds)};
std::vector<Scalar<T>> packed(rank);
std::transform(bounds.begin(), bounds.end(), packed.begin(),
- [](ConstantSubscript x) { return Scalar<T>(x); });
- return Expr<T>{Constant<T>{std::move(packed), ConstantSubscripts{rank}}};
+ [kind](ConstantSubscript x) { return Scalar<T>(kind, x); });
+ return Expr<T>{
+ Constant<T>{kind, std::move(packed), ConstantSubscripts{rank}}};
}
}
@@ -99,16 +101,16 @@ class GetConstantArrayBoundHelper {
public:
template <typename T>
static Expr<T> GetLbound(
- const Expr<SomeType> &array, std::optional<int> dim) {
- return PackageConstantBounds<T>(
+ int kind, const Expr<SomeType> &array, std::optional<int> dim) {
+ return PackageConstantBounds<T>(kind,
GetConstantArrayBoundHelper(dim, /*getLbound=*/true).Get(array),
dim.has_value());
}
template <typename T>
static Expr<T> GetUbound(
- const Expr<SomeType> &array, std::optional<int> dim) {
- return PackageConstantBounds<T>(
+ int kind, const Expr<SomeType> &array, std::optional<int> dim) {
+ return PackageConstantBounds<T>(kind,
GetConstantArrayBoundHelper(dim, /*getLbound=*/false).Get(array),
dim.has_value());
}
@@ -173,10 +175,10 @@ class GetConstantArrayBoundHelper {
bool arrayFromParenthesesExpr{false};
};
-template <int KIND>
-Expr<Type<TypeCategory::Integer, KIND>> LBOUND(FoldingContext &context,
- FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef) {
- using T = Type<TypeCategory::Integer, KIND>;
+Expr<Type<TypeCategory::Integer>> LBOUND(FoldingContext &context,
+ FunctionRef<Type<TypeCategory::Integer>> &&funcRef) {
+ using T = Type<TypeCategory::Integer>;
+ const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
if (const auto *array{UnwrapExpr<Expr<SomeType>>(args[0])}) {
std::optional<int> dim;
@@ -201,33 +203,33 @@ Expr<Type<TypeCategory::Integer, KIND>> LBOUND(FoldingContext &context,
lowerBoundsAreOne = false;
if (dim) {
if (auto lb{GetLBOUND(context, *named, *dim)}) {
- return Fold(context, ConvertToType<T>(std::move(*lb)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*lb)));
}
} else if (auto extents{
AsExtentArrayExpr(GetLBOUNDs(context, *named))}) {
return Fold(context,
- ConvertToType<T>(Expr<ExtentType>{std::move(*extents)}));
+ ConvertToType<T>(kind, Expr<ExtentType>{std::move(*extents)}));
}
} else {
lowerBoundsAreOne = symbol.Rank() == 0; // LBOUND(array%component)
}
}
if (IsActuallyConstant(*array)) {
- return GetConstantArrayBoundHelper::GetLbound<T>(*array, dim);
+ return GetConstantArrayBoundHelper::GetLbound<T>(kind, *array, dim);
}
if (lowerBoundsAreOne) {
ConstantSubscripts ones(rank, ConstantSubscript{1});
- return PackageConstantBounds<T>(std::move(ones), dim.has_value());
+ return PackageConstantBounds<T>(kind, std::move(ones), dim.has_value());
}
}
}
return Expr<T>{std::move(funcRef)};
}
-template <int KIND>
-Expr<Type<TypeCategory::Integer, KIND>> UBOUND(FoldingContext &context,
- FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef) {
- using T = Type<TypeCategory::Integer, KIND>;
+Expr<Type<TypeCategory::Integer>> UBOUND(FoldingContext &context,
+ FunctionRef<Type<TypeCategory::Integer>> &&funcRef) {
+ using T = Type<TypeCategory::Integer>;
+ const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
if (auto *array{UnwrapExpr<Expr<SomeType>>(args[0])}) {
std::optional<int> dim;
@@ -249,17 +251,18 @@ Expr<Type<TypeCategory::Integer, KIND>> UBOUND(FoldingContext &context,
takeBoundsFromShape = false;
if (dim) {
if (auto ub{GetUBOUND(context, *named, *dim)}) {
- return Fold(context, ConvertToType<T>(std::move(*ub)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*ub)));
}
} else {
Shape ubounds{GetUBOUNDs(context, *named)};
if (semantics::IsAssumedSizeArray(symbol)) {
CHECK(!ubounds.back());
- ubounds.back() = ExtentExpr{-1};
+ ubounds.back() = MakeExtentExpr(-1);
}
if (auto extents{AsExtentArrayExpr(ubounds)}) {
return Fold(context,
- ConvertToType<T>(Expr<ExtentType>{std::move(*extents)}));
+ ConvertToType<T>(
+ kind, Expr<ExtentType>{std::move(*extents)}));
}
}
} else {
@@ -267,17 +270,18 @@ Expr<Type<TypeCategory::Integer, KIND>> UBOUND(FoldingContext &context,
}
}
if (IsActuallyConstant(*array)) {
- return GetConstantArrayBoundHelper::GetUbound<T>(*array, dim);
+ return GetConstantArrayBoundHelper::GetUbound<T>(kind, *array, dim);
}
if (takeBoundsFromShape) {
if (auto shape{GetContextFreeShape(context, *array)}) {
if (dim) {
if (auto &dimSize{shape->at(*dim)}) {
return Fold(context,
- ConvertToType<T>(Expr<ExtentType>{std::move(*dimSize)}));
+ ConvertToType<T>(
+ kind, Expr<ExtentType>{std::move(*dimSize)}));
}
} else if (auto shapeExpr{AsExtentArrayExpr(*shape)}) {
- return Fold(context, ConvertToType<T>(std::move(*shapeExpr)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*shapeExpr)));
}
}
}
@@ -287,10 +291,10 @@ Expr<Type<TypeCategory::Integer, KIND>> UBOUND(FoldingContext &context,
}
// LCOBOUND() & UCOBOUND()
-template <int KIND>
-Expr<Type<TypeCategory::Integer, KIND>> COBOUND(FoldingContext &context,
- FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef, bool isUCOBOUND) {
- using T = Type<TypeCategory::Integer, KIND>;
+Expr<Type<TypeCategory::Integer>> COBOUND(FoldingContext &context,
+ FunctionRef<Type<TypeCategory::Integer>> &&funcRef, bool isUCOBOUND) {
+ using T = Type<TypeCategory::Integer>;
+ const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
if (const Symbol * coarray{UnwrapWholeSymbolOrComponentDataRef(args[0])}) {
std::optional<int> dim;
@@ -306,27 +310,32 @@ Expr<Type<TypeCategory::Integer, KIND>> COBOUND(FoldingContext &context,
if (dim) {
if (auto cb{isUCOBOUND ? GetUCOBOUND(*coarray, *dim)
: GetLCOBOUND(*coarray, *dim)}) {
- return Fold(context, ConvertToType<T>(std::move(*cb)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*cb)));
}
} else if (auto cbs{
AsExtentArrayExpr(isUCOBOUND ? GetUCOBOUNDs(*coarray)
: GetLCOBOUNDs(*coarray))}) {
- return Fold(context, ConvertToType<T>(Expr<ExtentType>{std::move(*cbs)}));
+ return Fold(
+ context, ConvertToType<T>(kind, Expr<ExtentType>{std::move(*cbs)}));
}
}
return Expr<T>{std::move(funcRef)};
}
// COUNT()
-template <typename T, int MASK_KIND> class CountAccumulator {
- using MaskT = Type<TypeCategory::Logical, MASK_KIND>;
+template <typename T> class CountAccumulator {
+ using MaskT = Type<TypeCategory::Logical>;
public:
- CountAccumulator(const Constant<MaskT> &mask) : mask_{mask} {}
+ constexpr int kind() const { return kind_; }
+
+ CountAccumulator(int kind, const Constant<MaskT> &mask)
+ : kind_{kind}, mask_{mask} {}
void operator()(
Scalar<T> &element, const ConstantSubscripts &at, bool /*first*/) {
+ CHECK(element.kind() == kind());
if (mask_.At(at).IsTrue()) {
- auto incremented{element.AddSigned(Scalar<T>{1})};
+ auto incremented{element.AddSigned(Scalar<T>{kind(), 1})};
overflow_ |= incremented.overflow;
element = incremented.value;
}
@@ -335,21 +344,23 @@ template <typename T, int MASK_KIND> class CountAccumulator {
void Done(Scalar<T> &) const {}
private:
+ int kind_;
const Constant<MaskT> &mask_;
bool overflow_{false};
};
-template <typename T, int maskKind>
+template <typename T>
static Expr<T> FoldCount(FoldingContext &context, FunctionRef<T> &&ref) {
- using KindLogical = Type<TypeCategory::Logical, maskKind>;
+ using KindLogical = Type<TypeCategory::Logical>;
static_assert(T::category == TypeCategory::Integer);
+ const int kind{ref.kind()};
std::optional<int> dim;
if (std::optional<ArrayAndMask<KindLogical>> arrayAndMask{
- ProcessReductionArgs<KindLogical>(
- context, ref.arguments(), dim, /*ARRAY=*/0, /*DIM=*/1)}) {
- CountAccumulator<T, maskKind> accumulator{arrayAndMask->array};
- Constant<T> result{DoReduction<T>(arrayAndMask->array, arrayAndMask->mask,
- dim, Scalar<T>{}, accumulator)};
+ ProcessReductionArgs<KindLogical>(LogicalResultKind, context,
+ ref.arguments(), dim, /*ARRAY=*/0, /*DIM=*/1)}) {
+ CountAccumulator<T> accumulator{kind, arrayAndMask->array};
+ Constant<T> result{DoReduction<T>(kind, arrayAndMask->array,
+ arrayAndMask->mask, dim, Scalar<T>{kind, 0}, accumulator)};
if (accumulator.overflow()) {
context.Warn(common::UsageWarning::FoldingException,
"Result of intrinsic function COUNT overflows its result type"_warn_en_US);
@@ -370,12 +381,12 @@ template <WhichLocation WHICH> class LocationHelper {
using Types = std::conditional_t<WHICH == WhichLocation::Findloc,
AllIntrinsicTypes, RelationalTypes>;
- template <typename T> Result Test() const {
- if (T::category != type_.category() || T::kind != type_.kind()) {
+ template <typename T> Result Test(int kind) const {
+ if (T::category != type_.category() || kind != type_.kind()) {
return std::nullopt;
}
CHECK(arg_.size() == (WHICH == WhichLocation::Findloc ? 6 : 5));
- Folder<T> folder{context_};
+ Folder<T> folder{kind, context_};
Constant<T> *array{folder.Folding(arg_[0])};
if (!array) {
return std::nullopt;
@@ -397,9 +408,9 @@ template <WhichLocation WHICH> class LocationHelper {
}
bool back{false};
if (arg_[backArg]) {
- const auto *backConst{
- Folder<LogicalResult>{context_, /*forOptionalArgument=*/true}.Folding(
- arg_[backArg])};
+ const auto *backConst{Folder<LogicalResult>{
+ LogicalResultKind, context_, /*forOptionalArgument=*/true}
+ .Folding(arg_[backArg])};
if (backConst) {
back = backConst->GetScalarValue().value().IsTrue();
} else {
@@ -422,7 +433,7 @@ template <WhichLocation WHICH> class LocationHelper {
ConstantSubscript n{GetSize(array->shape())};
std::vector<Scalar<LogicalResult>> mask_elements(
n, Scalar<LogicalResult>{scalarMask.value()});
- *mask = Constant<LogicalResult>{
+ *mask = Constant<LogicalResult>{LogicalResultKind,
std::move(mask_elements), ConstantSubscripts{array->shape()}};
}
mask->SetLowerBoundsToOne();
@@ -487,9 +498,9 @@ template <WhichLocation WHICH> class LocationHelper {
}
std::vector<Scalar<SubscriptInteger>> resultElements;
for (ConstantSubscript j : resultIndices) {
- resultElements.emplace_back(j);
+ resultElements.emplace_back(SubscriptIntegerKind, j);
}
- return Constant<SubscriptInteger>{
+ return Constant<SubscriptInteger>{SubscriptIntegerKind,
std::move(resultElements), std::move(resultShape)};
}
@@ -499,15 +510,16 @@ template <WhichLocation WHICH> class LocationHelper {
std::optional<Constant<T>> &value,
[[maybe_unused]] RelationalOperator relation,
[[maybe_unused]] bool back) const {
+ const int kind{element.kind()};
std::optional<Expr<LogicalResult>> cmp;
bool result{true};
if (value) {
if constexpr (T::category == TypeCategory::Logical) {
// array(at) .EQV. value?
static_assert(WHICH == WhichLocation::Findloc);
- cmp.emplace(ConvertToType<LogicalResult>(
- Expr<T>{LogicalOperation<T::kind>{LogicalOperator::Eqv,
- Expr<T>{Constant<T>{element}}, Expr<T>{Constant<T>{*value}}}}));
+ cmp.emplace(Expr<LogicalResult>{LogicalOperation{LogicalOperator::Eqv,
+ MakeConstantExpr<T>(kind, element),
+ MakeConstantExpr<T>(kind, *value)}});
} else { // compare array(at) to value
if constexpr (T::category == TypeCategory::Real &&
(WHICH == WhichLocation::Maxloc ||
@@ -515,12 +527,13 @@ template <WhichLocation WHICH> class LocationHelper {
if (value && value->GetScalarValue().value().IsNotANumber() &&
(back || !element.IsNotANumber())) {
// Replace NaN
- cmp.emplace(Constant<LogicalResult>{Scalar<LogicalResult>{true}});
+ cmp.emplace(MakeLogicalResultConstant(true));
}
}
if (!cmp) {
- cmp.emplace(PackageRelation(relation, Expr<T>{Constant<T>{element}},
- Expr<T>{Constant<T>{*value}}));
+ cmp.emplace(
+ PackageRelation(relation, MakeConstantExpr<T>(kind, element),
+ MakeConstantExpr<T>(kind, *value)));
}
}
Expr<LogicalResult> folded{Fold(context_, std::move(*cmp))};
@@ -531,7 +544,7 @@ template <WhichLocation WHICH> class LocationHelper {
if constexpr (WHICH == WhichLocation::Maxloc ||
WHICH == WhichLocation::Minloc) {
if (result) {
- value.emplace(std::move(element));
+ value.emplace(Constant<T>{kind, element});
}
}
return result;
@@ -562,8 +575,7 @@ static std::optional<Constant<SubscriptInteger>> FoldLocationCall(
}
}
}
- return common::SearchTypes(
- LocationHelper<which>{std::move(*type), arg, context});
+ return SearchTypes(LocationHelper<which>{std::move(*type), arg, context});
}
}
return std::nullopt;
@@ -572,10 +584,11 @@ static std::optional<Constant<SubscriptInteger>> FoldLocationCall(
template <WhichLocation which, typename T>
static Expr<T> FoldLocation(FoldingContext &context, FunctionRef<T> &&ref) {
static_assert(T::category == TypeCategory::Integer);
+ const int kind{ref.kind()};
if (std::optional<Constant<SubscriptInteger>> found{
FoldLocationCall<which>(ref.arguments(), context)}) {
- return Expr<T>{Fold(
- context, ConvertToType<T>(Expr<SubscriptInteger>{std::move(*found)}))};
+ return Expr<T>{Fold(context,
+ ConvertToType<T>(kind, Expr<SubscriptInteger>{std::move(*found)}))};
} else {
return Expr<T>{std::move(ref)};
}
@@ -586,15 +599,16 @@ template <typename T>
static Expr<T> FoldBitReduction(FoldingContext &context, FunctionRef<T> &&ref,
Scalar<T> (Scalar<T>::*operation)(const Scalar<T> &) const,
Scalar<T> identity) {
+ const int kind{ref.kind()};
static_assert(T::category == TypeCategory::Integer ||
T::category == TypeCategory::Unsigned);
std::optional<int> dim;
if (std::optional<ArrayAndMask<T>> arrayAndMask{
- ProcessReductionArgs<T>(context, ref.arguments(), dim,
+ ProcessReductionArgs<T>(kind, context, ref.arguments(), dim,
/*ARRAY=*/0, /*DIM=*/1, /*MASK=*/2)}) {
OperationAccumulator<T> accumulator{arrayAndMask->array, operation};
- return Expr<T>{DoReduction<T>(
- arrayAndMask->array, arrayAndMask->mask, dim, identity, accumulator)};
+ return Expr<T>{DoReduction<T>(kind, arrayAndMask->array, arrayAndMask->mask,
+ dim, identity, accumulator)};
}
return Expr<T>{std::move(ref)};
}
@@ -603,38 +617,44 @@ static Expr<T> FoldBitReduction(FoldingContext &context, FunctionRef<T> &&ref,
template <typename T>
std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
FoldingContext &context, FunctionRef<T> &funcRef) {
+ const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
CHECK(intrinsic);
std::string name{intrinsic->name};
- using Int4 = Type<TypeCategory::Integer, 4>;
+ using Int4 = Type<TypeCategory::Integer>;
if (name == "bit_size") {
- return Expr<T>{Scalar<T>::bits};
+ return MakeConstantExpr<T>(kind, Scalar<T>::bits(kind));
} else if (name == "digits") {
if (const auto *cx{UnwrapExpr<Expr<SomeInteger>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<ResultType<decltype(kx)>>::DIGITS;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) {
+ return Scalar<ResultType<decltype(kx)>>::DIGITS(kx.kind());
+ },
+ cx->u));
} else if (const auto *cx{UnwrapExpr<Expr<SomeUnsigned>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<ResultType<decltype(kx)>>::DIGITS + 1;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) {
+ return Scalar<ResultType<decltype(kx)>>::DIGITS(kx.kind()) + 1;
+ },
+ cx->u));
} else if (const auto *cx{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<ResultType<decltype(kx)>>::DIGITS;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) {
+ return Scalar<ResultType<decltype(kx)>>::DIGITS(kx.kind());
+ },
+ cx->u));
} else if (const auto *cx{UnwrapExpr<Expr<SomeComplex>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<typename ResultType<decltype(kx)>::Part>::DIGITS;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) {
+ return Scalar<typename ResultType<decltype(kx)>::Part>::DIGITS(
+ kx.kind());
+ },
+ cx->u));
}
} else if (name == "dot_product") {
return FoldDotProduct<T>(context, std::move(funcRef));
@@ -643,24 +663,27 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
name == "dshiftl" ? &Scalar<T>::DSHIFTL : &Scalar<T>::DSHIFTR};
// Third argument can be of any kind. However, it must be smaller or equal
// than BIT_SIZE. It can be converted to Int4 to simplify.
- if (const auto *argCon{Folder<T>(context).Folding(args[0])};
+ if (const auto *argCon{Folder<T>(kind, context).Folding(args[0])};
argCon && argCon->empty()) {
- } else if (const auto *shiftCon{Folder<Int4>(context).Folding(args[2])}) {
+ } else if (const auto *shiftCon{Folder<Int4>(
+ /*kind=*/4, context)
+ .Folding(args[2])}) {
for (const auto &scalar : shiftCon->values()) {
std::int64_t shiftVal{scalar.ToInt64()};
if (shiftVal < 0) {
context.messages().Say("SHIFT=%jd count for %s is negative"_err_en_US,
std::intmax_t{shiftVal}, name);
break;
- } else if (shiftVal > T::Scalar::bits) {
+ } else if (shiftVal > Scalar<T>::bits(kind)) {
context.messages().Say(
"SHIFT=%jd count for %s is greater than %d"_err_en_US,
- std::intmax_t{shiftVal}, name, T::Scalar::bits);
+ std::intmax_t{shiftVal}, name, Scalar<T>::bits(kind));
break;
}
}
}
- return FoldElementalIntrinsic<T, T, T, Int4>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T, Int4>(kind, {kind, kind, 4}, context,
+ std::move(funcRef),
ScalarFunc<T, T, T, Int4>(
[&fptr](const Scalar<T> &i, const Scalar<T> &j,
const Scalar<Int4> &shift) -> Scalar<T> {
@@ -676,14 +699,14 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
} else {
common::die("missing case to fold intrinsic function %s", name.c_str());
}
- return FoldElementalIntrinsic<T, T, T>(
- context, std::move(funcRef), ScalarFunc<T, T, T>(fptr));
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef), ScalarFunc<T, T, T>(fptr));
} else if (name == "iall") {
- return FoldBitReduction(
- context, std::move(funcRef), &Scalar<T>::IAND, Scalar<T>{}.NOT());
+ return FoldBitReduction(context, std::move(funcRef), &Scalar<T>::IAND,
+ Scalar<T>{kind, 0}.NOT());
} else if (name == "iany") {
return FoldBitReduction(
- context, std::move(funcRef), &Scalar<T>::IOR, Scalar<T>{});
+ context, std::move(funcRef), &Scalar<T>::IOR, Scalar<T>{kind, 0});
} else if (name == "ibclr" || name == "ibset") {
// Second argument can be of any kind. However, it must be smaller
// than BIT_SIZE. It can be converted to Int4 to simplify.
@@ -694,9 +717,9 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
} else {
common::die("missing case to fold intrinsic function %s", name.c_str());
}
- if (const auto *argCon{Folder<T>(context).Folding(args[0])};
+ if (const auto *argCon{Folder<T>(kind, context).Folding(args[0])};
argCon && argCon->empty()) {
- } else if (const auto *posCon{Folder<Int4>(context).Folding(args[1])}) {
+ } else if (const auto *posCon{Folder<Int4>(4, context).Folding(args[1])}) {
for (const auto &scalar : posCon->values()) {
std::int64_t posVal{scalar.ToInt64()};
if (posVal < 0) {
@@ -704,23 +727,24 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
"bit position for %s (%jd) is negative"_err_en_US, name,
std::intmax_t{posVal});
break;
- } else if (posVal >= T::Scalar::bits) {
+ } else if (posVal >= Scalar<T>::bits(kind)) {
context.messages().Say(
"bit position for %s (%jd) is not less than %d"_err_en_US, name,
- std::intmax_t{posVal}, T::Scalar::bits);
+ std::intmax_t{posVal}, Scalar<T>::bits(kind));
break;
}
}
}
- return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, Int4>(kind, {kind, 4}, context,
+ std::move(funcRef),
ScalarFunc<T, T, Int4>(
[&](const Scalar<T> &i, const Scalar<Int4> &pos) -> Scalar<T> {
return std::invoke(fptr, i, static_cast<int>(pos.ToInt64()));
}));
} else if (name == "ibits") {
- const auto *posCon{Folder<Int4>(context).Folding(args[1])};
- const auto *lenCon{Folder<Int4>(context).Folding(args[2])};
- if (const auto *argCon{Folder<T>(context).Folding(args[0])};
+ const auto *posCon{Folder<Int4>(4, context).Folding(args[1])};
+ const auto *lenCon{Folder<Int4>(4, context).Folding(args[2])};
+ if (const auto *argCon{Folder<T>(kind, context).Folding(args[0])};
argCon && argCon->empty()) {
} else {
std::size_t posCt{posCon ? posCon->size() : 0};
@@ -743,15 +767,16 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
"bit length for IBITS(LEN=%jd) is negative"_err_en_US,
std::intmax_t{lenVal});
break;
- } else if (posVal + lenVal > T::Scalar::bits) {
+ } else if (posVal + lenVal > Scalar<T>::bits(kind)) {
context.messages().Say(
"IBITS() must have POS+LEN (>=%jd) no greater than %d"_err_en_US,
- std::intmax_t{posVal + lenVal}, T::Scalar::bits);
+ std::intmax_t{posVal + lenVal}, Scalar<T>::bits(kind));
break;
}
}
}
- return FoldElementalIntrinsic<T, T, Int4, Int4>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, Int4, Int4>(kind, {kind, 4, 4}, context,
+ std::move(funcRef),
ScalarFunc<T, T, Int4, Int4>(
[&](const Scalar<T> &i, const Scalar<Int4> &pos,
const Scalar<Int4> &len) -> Scalar<T> {
@@ -768,7 +793,7 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
if (derived->IsEnumerationType()) {
if (auto ordExpr{GetEnumerationOrdinal(*derivedExpr)}) {
if (auto ordVal{ToInt64(*ordExpr)}) {
- return Expr<T>{Constant<T>{Scalar<T>{*ordVal}}};
+ return MakeConstantExpr<T>(kind, *ordVal);
}
}
// Non-constant enumeration argument — leave unfolded
@@ -782,7 +807,7 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
using From = std::decay_t<decltype(x)>;
if constexpr (std::is_same_v<From, BOZLiteralConstant> ||
IsNumericCategoryExpr<From>()) {
- return Fold(context, ConvertToType<T>(std::move(x)));
+ return Fold(context, ConvertToType<T>(kind, std::move(x)));
}
DIE("int() argument type not valid");
},
@@ -790,13 +815,13 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
}
} else if (name == "iparity") {
return FoldBitReduction(
- context, std::move(funcRef), &Scalar<T>::IEOR, Scalar<T>{});
+ context, std::move(funcRef), &Scalar<T>::IEOR, Scalar<T>{kind, 0});
} else if (name == "ishft" || name == "ishftc") {
- const auto *argCon{Folder<T>(context).Folding(args[0])};
- const auto *shiftCon{Folder<Int4>(context).Folding(args[1])};
+ const auto *argCon{Folder<T>(kind, context).Folding(args[0])};
+ const auto *shiftCon{Folder<Int4>(4, context).Folding(args[1])};
const auto *shiftVals{shiftCon ? &shiftCon->values() : nullptr};
const auto *sizeCon{args.size() == 3
- ? Folder<Int4>{context, /*forOptionalArgument=*/true}.Folding(
+ ? Folder<Int4>{4, context, /*forOptionalArgument=*/true}.Folding(
args[2])
: nullptr};
const auto *sizeVals{sizeCon ? &sizeCon->values() : nullptr};
@@ -806,15 +831,15 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
} else {
for (const auto &scalar : *shiftVals) {
std::int64_t shiftVal{scalar.ToInt64()};
- if (shiftVal < -T::Scalar::bits) {
+ if (shiftVal < -Scalar<T>::bits(kind)) {
context.messages().Say(
"SHIFT=%jd count for %s is less than %d"_err_en_US,
- std::intmax_t{shiftVal}, name, -T::Scalar::bits);
+ std::intmax_t{shiftVal}, name, -Scalar<T>::bits(kind));
break;
- } else if (shiftVal > T::Scalar::bits) {
+ } else if (shiftVal > Scalar<T>::bits(kind)) {
context.messages().Say(
"SHIFT=%jd count for %s is greater than %d"_err_en_US,
- std::intmax_t{shiftVal}, name, T::Scalar::bits);
+ std::intmax_t{shiftVal}, name, Scalar<T>::bits(kind));
break;
}
}
@@ -826,10 +851,10 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
"SIZE=%jd count for ishftc is not positive"_err_en_US,
std::intmax_t{sizeVal}, name);
break;
- } else if (sizeVal > T::Scalar::bits) {
+ } else if (sizeVal > Scalar<T>::bits(kind)) {
context.messages().Say(
"SIZE=%jd count for ishftc is greater than %d"_err_en_US,
- std::intmax_t{sizeVal}, T::Scalar::bits);
+ std::intmax_t{sizeVal}, Scalar<T>::bits(kind));
break;
}
}
@@ -852,20 +877,22 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
}
}
if (name == "ishft") {
- return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, Int4>(kind, {kind, 4}, context,
+ std::move(funcRef),
ScalarFunc<T, T, Int4>(
[&](const Scalar<T> &i, const Scalar<Int4> &shift) -> Scalar<T> {
return i.ISHFT(static_cast<int>(shift.ToInt64()));
}));
} else if (!args.at(2)) { // ISHFTC(no SIZE=)
- return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, Int4>(kind, {kind, 4}, context,
+ std::move(funcRef),
ScalarFunc<T, T, Int4>(
[&](const Scalar<T> &i, const Scalar<Int4> &shift) -> Scalar<T> {
return i.ISHFTC(static_cast<int>(shift.ToInt64()));
}));
} else { // ISHFTC(with SIZE=)
- return FoldElementalIntrinsic<T, T, Int4, Int4>(context,
- std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, Int4, Int4>(kind, {kind, 4, 4},
+ context, std::move(funcRef),
ScalarFunc<T, T, Int4, Int4>(
[&](const Scalar<T> &i, const Scalar<Int4> &shift,
const Scalar<Int4> &size) -> Scalar<T> {
@@ -880,10 +907,10 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
if (auto *expr{UnwrapExpr<Expr<SomeKind<T::category>>>(args[0])}) {
// Rewrite to IAND(INT(n,k),255_k) for k=KIND(T)
intrinsic->name = "iand";
- auto converted{ConvertToType<T>(std::move(*expr))};
+ auto converted{ConvertToType<T>(kind, std::move(*expr))};
*expr =
Fold(context, Expr<SomeKind<T::category>>{std::move(converted)});
- args.emplace_back(AsGenericExpr(Expr<T>{Scalar<T>{255}}));
+ args.emplace_back(AsGenericExpr(MakeConstantExpr<T>(kind, 255)));
return FoldIntrinsicFunction(context, std::move(funcRef));
}
}
@@ -893,36 +920,38 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
// It can be safely converted to Int4 to simplify.
const auto fptr{name == "maskl" || name == "umaskl" ? &Scalar<T>::MASKL
: &Scalar<T>::MASKR};
- return FoldElementalIntrinsic<T, Int4>(context, std::move(funcRef),
- ScalarFunc<T, Int4>([&fptr](const Scalar<Int4> &places) -> Scalar<T> {
- return fptr(static_cast<int>(places.ToInt64()));
- }));
+ return FoldElementalIntrinsic<T, Int4>(kind, {4}, context,
+ std::move(funcRef),
+ ScalarFunc<T, Int4>(
+ [&fptr, kind](const Scalar<Int4> &places) -> Scalar<T> {
+ return fptr(kind, static_cast<int>(places.ToInt64()));
+ }));
} else if (name == "matmul") {
return FoldMatmul(context, std::move(funcRef));
} else if (name == "max") {
return FoldMINorMAX(context, std::move(funcRef), Ordering::Greater);
} else if (name == "maxval") {
- return FoldMaxvalMinval<T>(context, std::move(funcRef),
+ return FoldMaxvalMinval<T>(kind, context, std::move(funcRef),
RelationalOperator::GT,
T::category == TypeCategory::Unsigned ? typename T::Scalar{}
- : T::Scalar::Least());
+ : T::Scalar::Least(kind));
} else if (name == "merge_bits") {
- return FoldElementalIntrinsic<T, T, T, T>(
- context, std::move(funcRef), &Scalar<T>::MERGE_BITS);
+ return FoldElementalIntrinsic<T, T, T, T>(kind, {kind, kind, kind}, context,
+ std::move(funcRef), &Scalar<T>::MERGE_BITS);
} else if (name == "min") {
return FoldMINorMAX(context, std::move(funcRef), Ordering::Less);
} else if (name == "minval") {
- return FoldMaxvalMinval<T>(context, std::move(funcRef),
+ return FoldMaxvalMinval<T>(kind, context, std::move(funcRef),
RelationalOperator::LT,
T::category == TypeCategory::Unsigned ? typename T::Scalar{}.NOT()
- : T::Scalar::HUGE());
+ : T::Scalar::HUGE(kind));
} else if (name == "not") {
return FoldElementalIntrinsic<T, T>(
- context, std::move(funcRef), &Scalar<T>::NOT);
+ kind, {kind}, context, std::move(funcRef), &Scalar<T>::NOT);
} else if (name == "product") {
- return FoldProduct<T>(context, std::move(funcRef), Scalar<T>{1});
+ return FoldProduct<T>(context, std::move(funcRef), Scalar<T>{kind, 1});
} else if (name == "radix") {
- return Expr<T>{2};
+ return Expr<T>{Constant<T>{kind, typename T::Scalar{kind, 2}}};
} else if (name == "shifta" || name == "shiftr" || name == "shiftl") {
// Second argument can be of any kind. However, it must be smaller or
// equal than BIT_SIZE. It can be converted to Int4 to simplify.
@@ -935,24 +964,26 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
} else {
common::die("missing case to fold intrinsic function %s", name.c_str());
}
- if (const auto *argCon{Folder<T>(context).Folding(args[0])};
+ if (const auto *argCon{Folder<T>(kind, context).Folding(args[0])};
argCon && argCon->empty()) {
- } else if (const auto *shiftCon{Folder<Int4>(context).Folding(args[1])}) {
+ } else if (const auto *shiftCon{
+ Folder<Int4>(4, context).Folding(args[1])}) {
for (const auto &scalar : shiftCon->values()) {
std::int64_t shiftVal{scalar.ToInt64()};
if (shiftVal < 0) {
context.messages().Say("SHIFT=%jd count for %s is negative"_err_en_US,
- std::intmax_t{shiftVal}, name, -T::Scalar::bits);
+ std::intmax_t{shiftVal}, name, -Scalar<T>::bits(kind));
break;
- } else if (shiftVal > T::Scalar::bits) {
+ } else if (shiftVal > Scalar<T>::bits(kind)) {
context.messages().Say(
"SHIFT=%jd count for %s is greater than %d"_err_en_US,
- std::intmax_t{shiftVal}, name, T::Scalar::bits);
+ std::intmax_t{shiftVal}, name, Scalar<T>::bits(kind));
break;
}
}
}
- return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, Int4>(kind, {kind, 4}, context,
+ std::move(funcRef),
ScalarFunc<T, T, Int4>(
[&](const Scalar<T> &i, const Scalar<Int4> &shift) -> Scalar<T> {
return std::invoke(fptr, i, static_cast<int>(shift.ToInt64()));
@@ -963,22 +994,21 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
return std::nullopt;
}
-template <int KIND>
-Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
- FoldingContext &context,
- FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef) {
+Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(FoldingContext &context,
+ FunctionRef<Type<TypeCategory::Integer>> &&funcRef) {
+ using T = Type<TypeCategory::Integer>;
+ const int kind{funcRef.kind()};
if (auto foldedCommon{FoldIntrinsicFunctionCommon(context, funcRef)}) {
return std::move(*foldedCommon);
}
- using T = Type<TypeCategory::Integer, KIND>;
ActualArguments &args{funcRef.arguments()};
auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
CHECK(intrinsic);
std::string name{intrinsic->name};
- auto FromInt64{[&name, &context](std::int64_t n) {
- Scalar<T> result{n};
+ auto FromInt64{[&name, &context, kind](std::int64_t n) {
+ Scalar<T> result{kind, n};
if (result.ToInt64() != n) {
context.Warn(common::UsageWarning::FoldingException,
"Result of intrinsic function '%s' (%jd) overflows its result type"_warn_en_US,
@@ -988,12 +1018,13 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
}};
if (name == "abs") { // incl. babs, iiabs, jiaabs, & kiabs
- return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
- ScalarFunc<T, T>([&context](const Scalar<T> &i) -> Scalar<T> {
+ return FoldElementalIntrinsic<T, T>(kind, {kind}, context,
+ std::move(funcRef),
+ ScalarFunc<T, T>([&context, kind](const Scalar<T> &i) -> Scalar<T> {
typename Scalar<T>::ValueWithOverflow j{i.ABS()};
if (j.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "abs(integer(kind=%d)) folding overflowed"_warn_en_US, KIND);
+ "abs(integer(kind=%d)) folding overflowed"_warn_en_US, kind);
}
return j.value;
}));
@@ -1006,9 +1037,9 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
return common::visit(
[&](const auto &kx) {
using TR = ResultType<decltype(kx)>;
- return FoldElementalIntrinsic<T, TR>(context, std::move(funcRef),
- ScalarFunc<T, TR>([&](const Scalar<TR> &x) {
- auto y{x.template ToInteger<Scalar<T>>(mode)};
+ return FoldElementalIntrinsic<T, TR>(kind, {kx.kind()}, context,
+ std::move(funcRef), ScalarFunc<T, TR>([&](const Scalar<TR> &x) {
+ auto y{x.ToInteger(mode, Scalar<T>::bits(kind))};
if (y.flags.test(RealFlag::Overflow)) {
context.Warn(common::UsageWarning::FoldingException,
"%s intrinsic folding overflow"_warn_en_US, name);
@@ -1019,20 +1050,10 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
cx->u);
}
} else if (name == "count") {
- int maskKind = args[0]->GetType()->kind();
- switch (maskKind) {
- SWITCH_COVERS_ALL_CASES
- case 1:
- return FoldCount<T, 1>(context, std::move(funcRef));
- case 2:
- return FoldCount<T, 2>(context, std::move(funcRef));
- case 4:
- return FoldCount<T, 4>(context, std::move(funcRef));
- case 8:
- return FoldCount<T, 8>(context, std::move(funcRef));
- }
+ return FoldCount<T>(context, std::move(funcRef));
} else if (name == "dim") {
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T, T>(
[&context](const Scalar<T> &x, const Scalar<T> &y) -> Scalar<T> {
auto result{x.DIM(y)};
@@ -1045,10 +1066,10 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
} else if (name == "exponent") {
if (auto *sx{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
return common::visit(
- [&funcRef, &context](const auto &x) -> Expr<T> {
+ [&funcRef, &context, kind](const auto &x) -> Expr<T> {
using TR = typename std::decay_t<decltype(x)>::Result;
- return FoldElementalIntrinsic<T, TR>(context, std::move(funcRef),
- &Scalar<TR>::template EXPONENT<Scalar<T>>);
+ return FoldElementalIntrinsic<T, TR>(kind, {x.kind()}, context,
+ std::move(funcRef), &Scalar<TR>::EXPONENT);
},
sx->u);
} else {
@@ -1057,7 +1078,7 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
} else if (name == "findloc") {
return FoldLocation<WhichLocation::Findloc, T>(context, std::move(funcRef));
} else if (name == "huge") {
- return Expr<T>{Scalar<T>::HUGE()};
+ return MakeConstantExpr<T>(kind, Scalar<T>::HUGE(kind));
} else if (name == "iachar" || name == "ichar") {
auto *someChar{UnwrapExpr<Expr<SomeCharacter>>(args[0])};
CHECK(someChar);
@@ -1074,16 +1095,15 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
name);
}
return common::visit(
- [&funcRef, &context, &FromInt64](const auto &str) -> Expr<T> {
+ [&funcRef, &context, &FromInt64, kind](const auto &str) -> Expr<T> {
using Char = typename std::decay_t<decltype(str)>::Result;
- (void)FromInt64;
- return FoldElementalIntrinsic<T, Char>(context,
- std::move(funcRef),
+ return FoldElementalIntrinsic<T, Char>(kind, {str.kind()},
+ context, std::move(funcRef),
ScalarFunc<T, Char>(
#ifndef _MSC_VER
[&FromInt64](const Scalar<Char> &c) {
- return FromInt64(CharacterUtils<Char::kind>::ICHAR(
- CharacterUtils<Char::kind>::Resize(c, 1)));
+ return FromInt64(CharacterUtils::ICHAR(
+ CharacterUtils::Resize(c, 1)));
}));
#else // _MSC_VER
// MSVC 14 get confused by the original code above and
@@ -1092,9 +1112,10 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
// CharacterUtils<2>::ICHAR(). Can't find a work-around,
// so remove the FromInt64 error checking lambda that
// seems to have caused the proble.
- [](const Scalar<Char> &c) {
- return CharacterUtils<Char::kind>::ICHAR(
- CharacterUtils<Char::kind>::Resize(c, 1));
+ [kind](const Scalar<Char> &c) -> Scalar<T> {
+ return Scalar<T>{kind,
+ CharacterUtils::ICHAR(
+ CharacterUtils::Resize(c, 1))};
}));
#endif // _MSC_VER
},
@@ -1106,33 +1127,34 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
return common::visit(
[&](const auto &kch) -> Expr<T> {
using TC = typename std::decay_t<decltype(kch)>::Result;
+ const int kchKind{kch.kind()};
if (UnwrapExpr<Expr<SomeLogical>>(args[2])) { // BACK=
- return FoldElementalIntrinsic<T, TC, TC, LogicalResult>(context,
+ return FoldElementalIntrinsic<T, TC, TC, LogicalResult>(kind,
+ {kchKind, kchKind, LogicalResultKind}, context,
std::move(funcRef),
ScalarFunc<T, TC, TC, LogicalResult>{
[&name, &FromInt64](const Scalar<TC> &str,
const Scalar<TC> &other,
const Scalar<LogicalResult> &back) {
return FromInt64(name == "index"
- ? CharacterUtils<TC::kind>::INDEX(
- str, other, back.IsTrue())
- : name == "scan"
- ? CharacterUtils<TC::kind>::SCAN(
+ ? CharacterUtils::INDEX(
str, other, back.IsTrue())
- : CharacterUtils<TC::kind>::VERIFY(
- str, other, back.IsTrue()));
+ : name == "scan" ? CharacterUtils::SCAN(str,
+ other, back.IsTrue())
+ : CharacterUtils::VERIFY(str,
+ other, back.IsTrue()));
}});
} else {
- return FoldElementalIntrinsic<T, TC, TC>(context,
- std::move(funcRef),
+ return FoldElementalIntrinsic<T, TC, TC>(kind, {kchKind, kchKind},
+ context, std::move(funcRef),
ScalarFunc<T, TC, TC>{
[&name, &FromInt64](
const Scalar<TC> &str, const Scalar<TC> &other) {
return FromInt64(name == "index"
- ? CharacterUtils<TC::kind>::INDEX(str, other)
+ ? CharacterUtils::INDEX(str, other)
: name == "scan"
- ? CharacterUtils<TC::kind>::SCAN(str, other)
- : CharacterUtils<TC::kind>::VERIFY(str, other));
+ ? CharacterUtils::SCAN(str, other)
+ : CharacterUtils::VERIFY(str, other));
}});
}
},
@@ -1141,7 +1163,7 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
DIE("first argument must be CHARACTER");
}
} else if (name == "int_ptr_kind") {
- return Expr<T>{8};
+ return MakeConstantExpr<T>(kind, 8);
} else if (name == "kind") {
// FoldOperation(FunctionRef &&) in fold-implementation.h will not
// have folded the argument; in the case of TypeParamInquiry,
@@ -1152,12 +1174,12 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
if (const auto *intrinType{typeSpec->AsIntrinsic()}) {
if (auto k{ToInt64(Fold(
context, Expr<SubscriptInteger>{intrinType->kind()}))}) {
- return Expr<T>{*k};
+ return MakeConstantExpr<T>(kind, *k);
}
}
}
} else if (auto dyType{expr->GetType()}) {
- return Expr<T>{dyType->kind()};
+ return MakeConstantExpr<T>(kind, dyType->kind());
}
}
} else if (name == "lbound") {
@@ -1168,12 +1190,13 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
name == "popcnt") {
if (auto *sn{UnwrapExpr<Expr<SomeKind<T::category>>>(args[0])}) {
return common::visit(
- [&funcRef, &context, &name](const auto &n) -> Expr<T> {
+ [&funcRef, &context, &name, kind](const auto &n) -> Expr<T> {
using TI = typename std::decay_t<decltype(n)>::Result;
if (name == "poppar") {
- return FoldElementalIntrinsic<T, TI>(context, std::move(funcRef),
- ScalarFunc<T, TI>([](const Scalar<TI> &i) -> Scalar<T> {
- return Scalar<T>{i.POPPAR() ? 1 : 0};
+ return FoldElementalIntrinsic<T, TI>(kind, {n.kind()}, context,
+ std::move(funcRef),
+ ScalarFunc<T, TI>([kind](const Scalar<TI> &i) -> Scalar<T> {
+ return Scalar<T>{kind, i.POPPAR() ? 1 : 0};
}));
}
auto fptr{&Scalar<TI>::LEADZ};
@@ -1186,12 +1209,13 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
common::die(
"missing case to fold intrinsic function %s", name.c_str());
}
- return FoldElementalIntrinsic<T, TI>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, TI>(kind, {n.kind()}, context,
+ std::move(funcRef),
// `i` should be declared as `const Scalar<TI>&`.
// We declare it as `auto` to workaround an msvc bug:
// https://developercommunity.visualstudio.com/t/Regression:-nested-closure-assumes-wrong/10130223
- ScalarFunc<T, TI>([&fptr](const auto &i) -> Scalar<T> {
- return Scalar<T>{std::invoke(fptr, i)};
+ ScalarFunc<T, TI>([&fptr, kind](const auto &i) -> Scalar<T> {
+ return Scalar<T>{kind, std::invoke(fptr, i)};
}));
},
sn->u);
@@ -1204,7 +1228,7 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
[&](auto &kx) {
if (auto len{kx.LEN()}) {
if (IsScopeInvariantExpr(*len, &context)) {
- return Fold(context, ConvertToType<T>(*std::move(len)));
+ return Fold(context, ConvertToType<T>(kind, *std::move(len)));
} else {
return Expr<T>{std::move(funcRef)};
}
@@ -1221,9 +1245,10 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
return common::visit(
[&](const auto &kch) -> Expr<T> {
using TC = typename std::decay_t<decltype(kch)>::Result;
- return FoldElementalIntrinsic<T, TC>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, TC>(kind, {kch.kind()}, context,
+ std::move(funcRef),
ScalarFunc<T, TC>{[&FromInt64](const Scalar<TC> &str) {
- return FromInt64(CharacterUtils<TC::kind>::LEN_TRIM(str));
+ return FromInt64(CharacterUtils::LEN_TRIM(str));
}});
},
charExpr->u);
@@ -1235,9 +1260,9 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
} else if (name == "maxexponent") {
if (auto *sx{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
return common::visit(
- [](const auto &x) {
+ [&](const auto &x) {
using TR = typename std::decay_t<decltype(x)>::Result;
- return Expr<T>{Scalar<TR>::MAXEXPONENT};
+ return MakeConstantExpr<T>(kind, Scalar<TR>::MAXEXPONENT(x.kind()));
},
sx->u);
}
@@ -1248,9 +1273,9 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
} else if (name == "minexponent") {
if (auto *sx{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
return common::visit(
- [](const auto &x) {
+ [&](const auto &x) {
using TR = typename std::decay_t<decltype(x)>::Result;
- return Expr<T>{Scalar<TR>::MINEXPONENT};
+ return MakeConstantExpr<T>(kind, Scalar<TR>::MINEXPONENT(x.kind()));
},
sx->u);
}
@@ -1267,7 +1292,8 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
badPConst = true;
}
}
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFuncWithContext<T, T, T>(
[badPConst](FoldingContext &context, const Scalar<T> &x,
const Scalar<T> &y) -> Scalar<T> {
@@ -1292,7 +1318,8 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
badPConst = true;
}
}
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFuncWithContext<T, T, T>([badPConst](FoldingContext &context,
const Scalar<T> &x,
const Scalar<T> &y) -> Scalar<T> {
@@ -1305,43 +1332,55 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
}));
} else if (name == "precision") {
if (const auto *cx{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<ResultType<decltype(kx)>>::PRECISION;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) -> std::int64_t {
+ using KX = ResultType<decltype(kx)>;
+ return Scalar<KX>::PRECISION(kx.kind());
+ },
+ cx->u));
} else if (const auto *cx{UnwrapExpr<Expr<SomeComplex>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<typename ResultType<decltype(kx)>::Part>::PRECISION;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) -> std::int64_t {
+ using Part = typename ResultType<decltype(kx)>::Part;
+ return Scalar<Part>::PRECISION(kx.kind());
+ },
+ cx->u));
}
} else if (name == "range") {
if (const auto *cx{UnwrapExpr<Expr<SomeInteger>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<ResultType<decltype(kx)>>::RANGE;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) -> std::int64_t {
+ using KX = ResultType<decltype(kx)>;
+ return Scalar<KX>::RANGE(kx.kind());
+ },
+ cx->u));
} else if (const auto *cx{UnwrapExpr<Expr<SomeUnsigned>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<ResultType<decltype(kx)>>::UnsignedRANGE;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) -> std::int64_t {
+ using KX = ResultType<decltype(kx)>;
+ return Scalar<KX>::UnsignedRANGE(kx.kind());
+ },
+ cx->u));
} else if (const auto *cx{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<ResultType<decltype(kx)>>::RANGE;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) -> std::int64_t {
+ using KX = ResultType<decltype(kx)>;
+ return Scalar<KX>::RANGE(kx.kind());
+ },
+ cx->u));
} else if (const auto *cx{UnwrapExpr<Expr<SomeComplex>>(args[0])}) {
- return Expr<T>{common::visit(
- [](const auto &kx) {
- return Scalar<typename ResultType<decltype(kx)>::Part>::RANGE;
- },
- cx->u)};
+ return MakeConstantExpr<T>(kind,
+ common::visit(
+ [](const auto &kx) -> std::int64_t {
+ using Part = typename ResultType<decltype(kx)>::Part;
+ return Scalar<Part>::RANGE(kx.kind());
+ },
+ cx->u));
}
} else if (name == "rank") {
if (args[0]) {
@@ -1352,55 +1391,58 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
symbol = args[0]->GetAssumedTypeDummy();
}
if (symbol && IsAssumedRank(*symbol)) {
- // DescriptorInquiry can only be placed in expression of kind
- // DescriptorInquiry::Result::kind.
- return ConvertToType<T>(
- Expr<Type<TypeCategory::Integer, DescriptorInquiry::Result::kind>>{
- DescriptorInquiry{
- NamedEntity{*symbol}, DescriptorInquiry::Field::Rank}});
+ return ConvertToType<T>(kind,
+ Expr<DescriptorInquiry::Result>{DescriptorInquiry{
+ NamedEntity{*symbol}, DescriptorInquiry::Field::Rank}});
}
- return Expr<T>{args[0]->Rank()};
+ return MakeConstantExpr<T>(kind, args[0]->Rank());
}
} else if (name == "selected_char_kind") {
- if (const auto *chCon{UnwrapExpr<Constant<TypeOf<std::string>>>(args[0])}) {
- if (std::optional<std::string> value{chCon->GetScalarValue()}) {
+ if (const auto *chCon{
+ UnwrapExpr<Constant<Type<TypeCategory::Character>>>(args[0])}) {
+ if (std::optional<value::CharacterValue> charVal{
+ chCon->GetScalarValue()}) {
int defaultKind{
context.defaults().GetDefaultKind(TypeCategory::Character)};
- return Expr<T>{SelectedCharKind(*value, defaultKind)};
+ return MakeConstantExpr<T>(
+ kind, SelectedCharKind(*charVal->AsStdString(), defaultKind));
}
}
} else if (name == "selected_int_kind" || name == "selected_unsigned_kind") {
if (auto p{ToInt64(args[0])}) {
- return Expr<T>{context.targetCharacteristics().SelectedIntKind(*p)};
+ return MakeConstantExpr<T>(
+ kind, context.targetCharacteristics().SelectedIntKind(*p));
}
} else if (name == "selected_logical_kind") {
if (auto p{ToInt64(args[0])}) {
- return Expr<T>{context.targetCharacteristics().SelectedLogicalKind(*p)};
+ return MakeConstantExpr<T>(
+ kind, context.targetCharacteristics().SelectedLogicalKind(*p));
}
} else if (name == "selected_real_kind" ||
name == "__builtin_ieee_selected_real_kind") {
if (auto p{GetInt64ArgOr(args[0], 0)}) {
if (auto r{GetInt64ArgOr(args[1], 0)}) {
if (auto radix{GetInt64ArgOr(args[2], 2)}) {
- return Expr<T>{
- context.targetCharacteristics().SelectedRealKind(*p, *r, *radix)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().SelectedRealKind(*p, *r, *radix));
}
}
}
} else if (name == "shape") {
if (auto shape{GetContextFreeShape(context, args[0])}) {
if (auto shapeExpr{AsExtentArrayExpr(*shape)}) {
- return Fold(context, ConvertToType<T>(std::move(*shapeExpr)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*shapeExpr)));
}
}
} else if (name == "sign") {
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
- ScalarFunc<T, T, T>([&context](const Scalar<T> &j,
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
+ ScalarFunc<T, T, T>([&context, kind](const Scalar<T> &j,
const Scalar<T> &k) -> Scalar<T> {
typename Scalar<T>::ValueWithOverflow result{j.SIGN(k)};
if (result.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "sign(integer(kind=%d)) folding overflowed"_warn_en_US, KIND);
+ "sign(integer(kind=%d)) folding overflowed"_warn_en_US, kind);
}
return result.value;
}));
@@ -1413,31 +1455,34 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
return MakeInvalidIntrinsic<T>(std::move(funcRef));
} else if (dim) {
if (auto &extent{shape->at(*dim)}) {
- return Fold(context, ConvertToType<T>(std::move(*extent)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*extent)));
}
}
} else if (auto extents{common::AllElementsPresent(std::move(*shape))}) {
// DIM= is absent; compute PRODUCT(SHAPE())
- ExtentExpr product{1};
+ ExtentExpr product{MakeExtentExpr(1)};
for (auto &&extent : std::move(*extents)) {
product = std::move(product) * std::move(extent);
}
- return Expr<T>{ConvertToType<T>(Fold(context, std::move(product)))};
+ return Expr<T>{
+ ConvertToType<T>(kind, Fold(context, std::move(product)))};
}
}
} else if (name == "sizeof") { // in bytes; extension
if (auto info{
characteristics::TypeAndShape::Characterize(args[0], context)}) {
if (auto bytes{info->MeasureSizeInBytes(context)}) {
- return Expr<T>{Fold(context, ConvertToType<T>(std::move(*bytes)))};
+ return Expr<T>{
+ Fold(context, ConvertToType<T>(kind, std::move(*bytes)))};
}
}
} else if (name == "storage_size") { // in bits
if (auto info{
characteristics::TypeAndShape::Characterize(args[0], context)}) {
if (auto bytes{info->MeasureElementSizeInBytes(context, true)}) {
- return Expr<T>{
- Fold(context, Expr<T>{8} * ConvertToType<T>(std::move(*bytes)))};
+ return Expr<T>{Fold(context,
+ MakeConstantExpr<T>(kind, 8) *
+ ConvertToType<T>(kind, std::move(*bytes)))};
}
}
} else if (name == "ubound") {
@@ -1463,26 +1508,26 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
common::UsageWarning::FoldingValueChecks, *context.moduleFileName(),
"NUMERIC_STORAGE_SIZE from ISO_FORTRAN_ENV is not well-defined when default INTEGER and REAL are not consistent due to compiler options"_warn_en_US);
}
- return Expr<T>{8 * std::min(intBytes, realBytes)};
+ return MakeConstantExpr<T>(kind, 8 * std::min(intBytes, realBytes));
}
}
return Expr<T>{std::move(funcRef)};
}
-template <int KIND>
-Expr<Type<TypeCategory::Unsigned, KIND>> FoldIntrinsicFunction(
+Expr<Type<TypeCategory::Unsigned>> FoldIntrinsicFunction(
FoldingContext &context,
- FunctionRef<Type<TypeCategory::Unsigned, KIND>> &&funcRef) {
+ FunctionRef<Type<TypeCategory::Unsigned>> &&funcRef) {
+ using T = Type<TypeCategory::Unsigned>;
+ const int kind{funcRef.kind()};
if (auto foldedCommon{FoldIntrinsicFunctionCommon(context, funcRef)}) {
return std::move(*foldedCommon);
}
- using T = Type<TypeCategory::Unsigned, KIND>;
ActualArguments &args{funcRef.arguments()};
auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
CHECK(intrinsic);
std::string name{intrinsic->name};
if (name == "huge") {
- return Expr<T>{Scalar<T>{}.NOT()};
+ return MakeConstantExpr<T>(kind, Scalar<T>::Zero(kind).NOT());
} else if (name == "mod" || name == "modulo") {
bool badPConst{false};
if (auto *pExpr{UnwrapExpr<Expr<T>>(args[1])}) {
@@ -1494,7 +1539,8 @@ Expr<Type<TypeCategory::Unsigned, KIND>> FoldIntrinsicFunction(
badPConst = true;
}
}
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFuncWithContext<T, T, T>(
[badPConst, &name](FoldingContext &context, const Scalar<T> &x,
const Scalar<T> &y) -> Scalar<T> {
@@ -1528,7 +1574,8 @@ Expr<TypeParamInquiry::Result> FoldOperation(
if (paramExpr && IsConstantExpr(*paramExpr, &context)) {
Expr<SomeInteger> intExpr{*paramExpr};
return Fold(context,
- ConvertToType<TypeParamInquiry::Result>(std::move(intExpr)));
+ ConvertToType<TypeParamInquiry::Result>(
+ TypeParamInquiry::ResultKind, std::move(intExpr)));
}
}
}
@@ -1550,7 +1597,8 @@ Expr<TypeParamInquiry::Result> FoldOperation(
(!isLen || ToInt64(*initExpr))) {
Expr<SomeInteger> expr{*initExpr};
return Fold(context,
- ConvertToType<TypeParamInquiry::Result>(std::move(expr)));
+ ConvertToType<TypeParamInquiry::Result>(
+ TypeParamInquiry::ResultKind, std::move(expr)));
}
}
}
@@ -1559,6 +1607,7 @@ Expr<TypeParamInquiry::Result> FoldOperation(
if (value->isExplicit()) {
auto folded{Fold(context,
AsExpr(ConvertToType<TypeParamInquiry::Result>(
+ TypeParamInquiry::ResultKind,
Expr<SomeInteger>{value->GetExplicit().value()})))};
if (!isLen || ToInt64(folded)) {
return folded;
@@ -1578,7 +1627,8 @@ Expr<RankOneBoundElement::Result> FoldOperation(
// Base is a constant array; extract the element at dimension_ (0-based).
ConstantSubscripts at{c->lbounds()};
at[0] = c->lbounds()[0] + x.dimension();
- return Expr<ResultType>{Constant<ResultType>{c->At(at)}};
+ return MakeConstantExpr<ResultType>(
+ RankOneBoundElement::ResultKind, c->At(at));
}
return Expr<ResultType>{
RankOneBoundElement{std::move(folded), x.dimension()}};
diff --git a/flang/lib/Evaluate/fold-logical.cpp b/flang/lib/Evaluate/fold-logical.cpp
index ab8c5876a13f53..f8fe642f385366 100644
--- a/flang/lib/Evaluate/fold-logical.cpp
+++ b/flang/lib/Evaluate/fold-logical.cpp
@@ -18,25 +18,28 @@ template <typename T>
static std::optional<Expr<SomeType>> ZeroExtend(const Constant<T> &c) {
std::vector<Scalar<LargestInt>> exts;
for (const auto &v : c.values()) {
- exts.push_back(Scalar<LargestInt>::ConvertUnsigned(v).value);
+ exts.push_back(Scalar<LargestInt>::ConvertUnsigned(
+ v, Scalar<LargestInt>::bits(LargestIntKind))
+ .value);
}
- return AsGenericExpr(
- Constant<LargestInt>(std::move(exts), ConstantSubscripts(c.shape())));
+ return AsGenericExpr(Constant<LargestInt>{
+ LargestIntKind, std::move(exts), ConstantSubscripts{c.shape()}});
}
// for ALL, ANY & PARITY
template <typename T>
-static Expr<T> FoldAllAnyParity(FoldingContext &context, FunctionRef<T> &&ref,
+static Expr<T> FoldAllAnyParity(int kind, FoldingContext &context,
+ FunctionRef<T> &&ref,
Scalar<T> (Scalar<T>::*operation)(const Scalar<T> &) const,
Scalar<T> identity) {
static_assert(T::category == TypeCategory::Logical);
std::optional<int> dim;
if (std::optional<ArrayAndMask<T>> arrayAndMask{
- ProcessReductionArgs<T>(context, ref.arguments(), dim,
+ ProcessReductionArgs<T>(kind, context, ref.arguments(), dim,
/*ARRAY(MASK)=*/0, /*DIM=*/1)}) {
OperationAccumulator accumulator{arrayAndMask->array, operation};
- return Expr<T>{DoReduction<T>(
- arrayAndMask->array, arrayAndMask->mask, dim, identity, accumulator)};
+ return Expr<T>{DoReduction<T>(kind, arrayAndMask->array, arrayAndMask->mask,
+ dim, identity, accumulator)};
}
return Expr<T>{std::move(ref)};
}
@@ -46,22 +49,22 @@ static Expr<T> FoldAllAnyParity(FoldingContext &context, FunctionRef<T> &&ref,
// are constant. It is guaranteed that 'x' is evaluated at most once.
// TODO: unsigned
-template <int X_RKIND, int MOLD_IKIND>
-Expr<SomeReal> RealToIntBoundHelper(bool round, bool negate) {
- using RType = Type<TypeCategory::Real, X_RKIND>;
- using RealType = Scalar<RType>;
- using IntType = Scalar<Type<TypeCategory::Integer, MOLD_IKIND>>;
- RealType result{}; // 0.
+static Expr<SomeReal> RealToIntBound(
+ int xRKind, int moldIKind, bool round, bool negate) {
+ using RealType = Scalar<Type<TypeCategory::Real>>;
+ using IntType = Scalar<Type<TypeCategory::Integer>>;
+ RealType result{RealType::Zero(xRKind)}; // 0.
common::RoundingMode roundingMode{round
? common::RoundingMode::TiesAwayFromZero
: common::RoundingMode::ToZero};
// Add decreasing powers of two to the result to find the largest magnitude
// value that can be converted to the integer type without overflow.
- RealType at{RealType::FromInteger(IntType{negate ? -1 : 1}).value};
+ RealType at{
+ RealType::FromInteger(xRKind, IntType{moldIKind, negate ? -1 : 1}).value};
bool decrement{true};
- while (!at.template ToInteger<IntType>(roundingMode)
- .flags.test(RealFlag::Overflow)) {
- auto tmp{at.SCALE(IntType{1})};
+ while (!at.ToInteger(roundingMode, IntType::bits(moldIKind))
+ .flags.test(RealFlag::Overflow)) {
+ auto tmp{at.SCALE(IntType{moldIKind, 1})};
if (tmp.flags.test(RealFlag::Overflow)) {
decrement = false;
break;
@@ -70,64 +73,20 @@ Expr<SomeReal> RealToIntBoundHelper(bool round, bool negate) {
}
while (true) {
if (decrement) {
- at = at.SCALE(IntType{-1}).value;
+ at = at.SCALE(IntType{moldIKind, -1}).value;
} else {
decrement = true;
}
auto tmp{at.Add(result)};
if (tmp.flags.test(RealFlag::Inexact)) {
break;
- } else if (!tmp.value.template ToInteger<IntType>(roundingMode)
- .flags.test(RealFlag::Overflow)) {
+ } else if (!tmp.value.ToInteger(roundingMode, IntType::bits(moldIKind))
+ .flags.test(RealFlag::Overflow)) {
result = tmp.value;
}
}
- return AsCategoryExpr(Constant<RType>{std::move(result)});
-}
-
-static Expr<SomeReal> RealToIntBound(
- int xRKind, int moldIKind, bool round, bool negate) {
- switch (xRKind) {
-#define ICASES(RK) \
- switch (moldIKind) { \
- case 1: \
- return RealToIntBoundHelper<RK, 1>(round, negate); \
- break; \
- case 2: \
- return RealToIntBoundHelper<RK, 2>(round, negate); \
- break; \
- case 4: \
- return RealToIntBoundHelper<RK, 4>(round, negate); \
- break; \
- case 8: \
- return RealToIntBoundHelper<RK, 8>(round, negate); \
- break; \
- case 16: \
- return RealToIntBoundHelper<RK, 16>(round, negate); \
- break; \
- } \
- break
- case 2:
- ICASES(2);
- break;
- case 3:
- ICASES(3);
- break;
- case 4:
- ICASES(4);
- break;
- case 8:
- ICASES(8);
- break;
- case 10:
- ICASES(10);
- break;
- case 16:
- ICASES(16);
- break;
- }
- DIE("RealToIntBound: no case");
-#undef ICASES
+ return AsCategoryExpr(
+ Constant<Type<TypeCategory::Real>>{xRKind, std::move(result)});
}
class RealToIntLimitHelper {
@@ -137,9 +96,9 @@ class RealToIntLimitHelper {
RealToIntLimitHelper(
FoldingContext &context, Expr<SomeReal> &&hi, Expr<SomeReal> &lo)
: context_{context}, hi_{std::move(hi)}, lo_{lo} {}
- template <typename T> Result Test() {
- if (UnwrapExpr<Expr<T>>(hi_)) {
- bool promote{T::kind < 16};
+ template <typename T> Result Test(int kind) {
+ if (UnwrapExpr<Expr<T>>(kind, hi_)) {
+ bool promote{kind < 16};
Result constResult;
if (auto hiV{GetScalarConstantValue<T>(hi_)}) {
auto loV{GetScalarConstantValue<T>(lo_)};
@@ -148,13 +107,15 @@ class RealToIntLimitHelper {
promote = promote &&
(diff.flags.test(RealFlag::Overflow) ||
diff.flags.test(RealFlag::Inexact));
- constResult = AsCategoryExpr(Constant<T>{std::move(diff.value)});
+ constResult = AsCategoryExpr(Constant<T>{kind, std::move(diff.value)});
}
if (promote) {
- constexpr int nextKind{T::kind < 4 ? 4 : T::kind == 4 ? 8 : 16};
- using T2 = Type<TypeCategory::Real, nextKind>;
- hi_ = Expr<SomeReal>{Fold(context_, ConvertToType<T2>(std::move(hi_)))};
- lo_ = Expr<SomeReal>{Fold(context_, ConvertToType<T2>(std::move(lo_)))};
+ int nextKind{kind < 4 ? 4 : kind == 4 ? 8 : 16};
+ using T2 = Type<TypeCategory::Real>;
+ hi_ = Expr<SomeReal>{
+ Fold(context_, ConvertToType<T2>(nextKind, std::move(hi_)))};
+ lo_ = Expr<SomeReal>{
+ Fold(context_, ConvertToType<T2>(nextKind, std::move(lo_)))};
if (constResult) {
// Use promoted constants on next iteration of SearchTypes
return std::nullopt;
@@ -178,84 +139,37 @@ class RealToIntLimitHelper {
static std::optional<Expr<SomeReal>> RealToIntLimit(
FoldingContext &context, Expr<SomeReal> &&hi, Expr<SomeReal> &lo) {
- return common::SearchTypes(RealToIntLimitHelper{context, std::move(hi), lo});
+ return SearchTypes(RealToIntLimitHelper{context, std::move(hi), lo});
}
// RealToRealBounds() returns a pair (HUGE(x),REAL(HUGE(mold),KIND(x)))
// when REAL(HUGE(x),KIND(mold)) overflows, and std::nullopt otherwise.
-template <int X_RKIND, int MOLD_RKIND>
-std::optional<std::pair<Expr<SomeReal>, Expr<SomeReal>>>
-RealToRealBoundsHelper() {
- using RType = Type<TypeCategory::Real, X_RKIND>;
- using RealType = Scalar<RType>;
- using MoldRealType = Scalar<Type<TypeCategory::Real, MOLD_RKIND>>;
- if (!MoldRealType::Convert(RealType::HUGE()).flags.test(RealFlag::Overflow)) {
- return std::nullopt;
- } else {
- return std::make_pair(AsCategoryExpr(Constant<RType>{
- RealType::Convert(MoldRealType::HUGE()).value}),
- AsCategoryExpr(Constant<RType>{RealType::HUGE()}));
- }
-}
-
static std::optional<std::pair<Expr<SomeReal>, Expr<SomeReal>>>
RealToRealBounds(int xRKind, int moldRKind) {
- switch (xRKind) {
-#define RCASES(RK) \
- switch (moldRKind) { \
- case 2: \
- return RealToRealBoundsHelper<RK, 2>(); \
- break; \
- case 3: \
- return RealToRealBoundsHelper<RK, 3>(); \
- break; \
- case 4: \
- return RealToRealBoundsHelper<RK, 4>(); \
- break; \
- case 8: \
- return RealToRealBoundsHelper<RK, 8>(); \
- break; \
- case 10: \
- return RealToRealBoundsHelper<RK, 10>(); \
- break; \
- case 16: \
- return RealToRealBoundsHelper<RK, 16>(); \
- break; \
- } \
- break
- case 2:
- RCASES(2);
- break;
- case 3:
- RCASES(3);
- break;
- case 4:
- RCASES(4);
- break;
- case 8:
- RCASES(8);
- break;
- case 10:
- RCASES(10);
- break;
- case 16:
- RCASES(16);
- break;
+ using RType = Type<TypeCategory::Real>;
+ using RealType = Scalar<Type<TypeCategory::Real>>;
+ using MoldRealType = Scalar<Type<TypeCategory::Real>>;
+ if (!RealType::Convert(moldRKind, RealType::HUGE(xRKind))
+ .flags.test(RealFlag::Overflow)) {
+ return std::nullopt;
+ } else {
+ return std::make_pair(
+ AsCategoryExpr(Constant<RType>{xRKind,
+ RealType::Convert(xRKind, MoldRealType::HUGE(moldRKind)).value}),
+ AsCategoryExpr(Constant<RType>{xRKind, RealType::HUGE(xRKind)}));
}
- DIE("RealToRealBounds: no case");
-#undef RCASES
}
-template <int X_IKIND, int MOLD_RKIND>
-std::optional<Expr<SomeInteger>> IntToRealBoundHelper(bool negate) {
- using IType = Type<TypeCategory::Integer, X_IKIND>;
- using IntType = Scalar<IType>;
- using RealType = Scalar<Type<TypeCategory::Real, MOLD_RKIND>>;
- IntType result{}; // 0
+static std::optional<Expr<SomeInteger>> IntToRealBoundHelper(
+ int xIKind, int moldRKind, bool negate) {
+ using IType = Type<TypeCategory::Integer>;
+ using IntType = Scalar<Type<TypeCategory::Integer>>;
+ using RealType = Scalar<Type<TypeCategory::Real>>;
+ IntType result{xIKind, 0}; // 0
while (true) {
std::optional<IntType> next;
- for (int bit{0}; bit < IntType::bits; ++bit) {
- IntType power{IntType{}.IBSET(bit)};
+ for (int bit{0}; bit < IntType::bits(xIKind); ++bit) {
+ IntType power{IntType{xIKind, 0}.IBSET(bit)};
if (power.IsNegative()) {
if (!negate) {
break;
@@ -265,7 +179,8 @@ std::optional<Expr<SomeInteger>> IntToRealBoundHelper(bool negate) {
}
auto tmp{power.AddSigned(result)};
if (tmp.overflow ||
- RealType::FromInteger(tmp.value).flags.test(RealFlag::Overflow)) {
+ RealType::FromInteger(moldRKind, tmp.value)
+ .flags.test(RealFlag::Overflow)) {
break;
}
next = tmp.value;
@@ -277,112 +192,37 @@ std::optional<Expr<SomeInteger>> IntToRealBoundHelper(bool negate) {
break;
}
}
- if (result.CompareSigned(IntType::HUGE()) == Ordering::Equal) {
+ if (result.CompareSigned(IntType::HUGE(xIKind)) == Ordering::Equal) {
return std::nullopt;
} else {
- return AsCategoryExpr(Constant<IType>{std::move(result)});
+ return AsCategoryExpr(Constant<IType>{xIKind, std::move(result)});
}
}
static std::optional<Expr<SomeInteger>> IntToRealBound(
int xIKind, int moldRKind, bool negate) {
- switch (xIKind) {
-#define RCASES(IK) \
- switch (moldRKind) { \
- case 2: \
- return IntToRealBoundHelper<IK, 2>(negate); \
- break; \
- case 3: \
- return IntToRealBoundHelper<IK, 3>(negate); \
- break; \
- case 4: \
- return IntToRealBoundHelper<IK, 4>(negate); \
- break; \
- case 8: \
- return IntToRealBoundHelper<IK, 8>(negate); \
- break; \
- case 10: \
- return IntToRealBoundHelper<IK, 10>(negate); \
- break; \
- case 16: \
- return IntToRealBoundHelper<IK, 16>(negate); \
- break; \
- } \
- break
- case 1:
- RCASES(1);
- break;
- case 2:
- RCASES(2);
- break;
- case 4:
- RCASES(4);
- break;
- case 8:
- RCASES(8);
- break;
- case 16:
- RCASES(16);
- break;
- }
- DIE("IntToRealBound: no case");
-#undef RCASES
+ return IntToRealBoundHelper(xIKind, moldRKind, negate);
}
-template <int X_IKIND, int MOLD_IKIND>
-std::optional<Expr<SomeInteger>> IntToIntBoundHelper() {
- if constexpr (X_IKIND <= MOLD_IKIND) {
+static std::optional<Expr<SomeInteger>> IntToIntBoundHelper(
+ int xIKind, int moldIKind) {
+ if (xIKind <= moldIKind) {
return std::nullopt;
} else {
- using XIType = Type<TypeCategory::Integer, X_IKIND>;
+ using XIType = Type<TypeCategory::Integer>;
using IntegerType = Scalar<XIType>;
- using MoldIType = Type<TypeCategory::Integer, MOLD_IKIND>;
+ using MoldIType = Type<TypeCategory::Integer>;
using MoldIntegerType = Scalar<MoldIType>;
- return AsCategoryExpr(Constant<XIType>{
- IntegerType::ConvertSigned(MoldIntegerType::HUGE()).value});
+ return AsCategoryExpr(Constant<XIType>{xIKind,
+ IntegerType::ConvertSigned(
+ MoldIntegerType::HUGE(moldIKind), Scalar<XIType>::bits(xIKind))
+ .value});
}
}
static std::optional<Expr<SomeInteger>> IntToIntBound(
int xIKind, int moldIKind) {
- switch (xIKind) {
-#define ICASES(IK) \
- switch (moldIKind) { \
- case 1: \
- return IntToIntBoundHelper<IK, 1>(); \
- break; \
- case 2: \
- return IntToIntBoundHelper<IK, 2>(); \
- break; \
- case 4: \
- return IntToIntBoundHelper<IK, 4>(); \
- break; \
- case 8: \
- return IntToIntBoundHelper<IK, 8>(); \
- break; \
- case 16: \
- return IntToIntBoundHelper<IK, 16>(); \
- break; \
- } \
- break
- case 1:
- ICASES(1);
- break;
- case 2:
- ICASES(2);
- break;
- case 4:
- ICASES(4);
- break;
- case 8:
- ICASES(8);
- break;
- case 16:
- ICASES(16);
- break;
- }
- DIE("IntToIntBound: no case");
-#undef ICASES
+ return IntToIntBoundHelper(xIKind, moldIKind);
}
// ApplyIntrinsic() constructs the typed expression representation
@@ -397,10 +237,10 @@ class IntrinsicCallHelper {
}
using Result = std::optional<Expr<SomeType>>;
using Types = LengthlessIntrinsicTypes;
- template <typename T> Result Test() {
+ template <typename T> Result Test(int kind) {
if (T::category == typeAndShape_->type().category() &&
- T::kind == typeAndShape_->type().kind()) {
- return AsGenericExpr(FunctionRef<T>{
+ kind == typeAndShape_->type().kind()) {
+ return AsGenericExpr(FunctionRef<T>{typeAndShape_->type().kind(),
ProcedureDesignator{std::move(call_.specificIntrinsic)},
std::move(call_.arguments)});
} else {
@@ -420,7 +260,7 @@ static Expr<SomeType> ApplyIntrinsic(
auto found{
context.intrinsics().Probe(CallCharacteristics{func}, args, context)};
CHECK(found.has_value());
- auto result{common::SearchTypes(IntrinsicCallHelper{std::move(*found)})};
+ auto result{SearchTypes(IntrinsicCallHelper{std::move(*found)})};
CHECK(result.has_value());
return *result;
}
@@ -446,8 +286,10 @@ static Expr<SomeType> IntTransferMold(
if (asVector) {
shape = ConstantSubscripts{1};
}
- Constant<SubscriptInteger> value{
- std::vector<Scalar<SubscriptInteger>>{0}, std::move(shape)};
+ Constant<SubscriptInteger> value{SubscriptIntegerKind,
+ std::vector<Scalar<SubscriptInteger>>{
+ Scalar<SubscriptInteger>{SubscriptIntegerKind, 0}},
+ std::move(shape)};
auto expr{ConvertToType(iType, AsGenericExpr(std::move(value)))};
CHECK(expr.has_value());
return std::move(*expr);
@@ -463,11 +305,11 @@ static Expr<SomeType> GetRealBits(FoldingContext &context, Expr<SomeReal> &&x) {
context.targetCharacteristics(), *xType, asVector)}});
}
-template <int KIND>
-static Expr<Type<TypeCategory::Logical, KIND>> RewriteOutOfRange(
+static Expr<Type<TypeCategory::Logical>> RewriteOutOfRange(
FoldingContext &context,
- FunctionRef<Type<TypeCategory::Logical, KIND>> &&funcRef) {
- using ResultType = Type<TypeCategory::Logical, KIND>;
+ FunctionRef<Type<TypeCategory::Logical>> &&funcRef) {
+ using ResultType = Type<TypeCategory::Logical>;
+ const int resultKind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
// Fold x= and round= unconditionally
if (auto *x{UnwrapExpr<Expr<SomeType>>(args[0])}) {
@@ -494,11 +336,11 @@ static Expr<Type<TypeCategory::Logical, KIND>> RewriteOutOfRange(
// 'hi' is INT(HUGE(mold), KIND(x))
// OUT_OF_RANGE(x,mold) = (x + (hi + 1)) .UGT. (2*hi + 1)
auto one{DEREF(UnwrapExpr<Expr<SomeInteger>>(ConvertToType(
- xType, AsGenericExpr(Constant<SubscriptInteger>{1}))))};
+ xType, AsGenericExpr(MakeSubscriptIntConstant(1)))))};
auto lhs{std::move(*iXExpr) +
(Expr<SomeInteger>{*hi} + Expr<SomeInteger>{one})};
auto two{DEREF(UnwrapExpr<Expr<SomeInteger>>(ConvertToType(
- xType, AsGenericExpr(Constant<SubscriptInteger>{2}))))};
+ xType, AsGenericExpr(MakeSubscriptIntConstant(2)))))};
auto rhs{std::move(two) * std::move(*hi) + std::move(one)};
result = CompareUnsigned(context, "bgt",
Expr<SomeType>{std::move(lhs)}, Expr<SomeType>{std::move(rhs)});
@@ -585,7 +427,7 @@ static Expr<Type<TypeCategory::Logical, KIND>> RewriteOutOfRange(
GetRealBits(context, std::move(absR) - std::move(moldHuge))};
auto &diffBitsI{DEREF(UnwrapExpr<Expr<SomeInteger>>(diffBits))};
Expr<SomeType> decr{std::move(diffBitsI) -
- Expr<SomeInteger>{Expr<SubscriptInteger>{1}}};
+ Expr<SomeInteger>{MakeSubscriptIntExpr(1)}};
result = CompareUnsigned(context, "blt", std::move(decr),
GetRealBits(context, std::move(xHuge)));
} else {
@@ -597,13 +439,11 @@ static Expr<Type<TypeCategory::Logical, KIND>> RewriteOutOfRange(
// xType can never overflow moldType, so
// OUT_OF_RANGE(x) = (x /= 0) .AND. .FALSE.
// which has the same shape as x.
- Expr<LogicalResult> scalarFalse{
- Constant<LogicalResult>{Scalar<LogicalResult>{false}}};
+ Expr<LogicalResult> scalarFalse{MakeLogicalResultExpr(false)};
if (x->Rank() > 0) {
if (auto nez{Relate(context.messages(), RelationalOperator::NE,
- std::move(*x),
- AsGenericExpr(Constant<SubscriptInteger>{0}))}) {
- result = Expr<LogicalResult>{LogicalOperation<LogicalResult::kind>{
+ std::move(*x), AsGenericExpr(MakeSubscriptIntConstant(0)))}) {
+ result = Expr<LogicalResult>{LogicalOperation{
LogicalOperator::And, std::move(*nez), std::move(scalarFalse)}};
}
} else {
@@ -612,8 +452,8 @@ static Expr<Type<TypeCategory::Logical, KIND>> RewriteOutOfRange(
}
if (result) {
auto restorer{context.messages().DiscardMessages()};
- return Fold(
- context, AsExpr(ConvertToType<ResultType>(std::move(*result))));
+ return Fold(context,
+ AsExpr(ConvertToType<ResultType>(resultKind, std::move(*result))));
}
}
}
@@ -638,29 +478,28 @@ static std::optional<common::RoundingMode> GetRoundingMode(
return std::nullopt;
}
-template <int KIND>
-Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
- FoldingContext &context,
- FunctionRef<Type<TypeCategory::Logical, KIND>> &&funcRef) {
- using T = Type<TypeCategory::Logical, KIND>;
+Expr<Type<TypeCategory::Logical>> FoldIntrinsicFunction(FoldingContext &context,
+ FunctionRef<Type<TypeCategory::Logical>> &&funcRef) {
+ using T = Type<TypeCategory::Logical>;
+ const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
CHECK(intrinsic);
std::string name{intrinsic->name};
if (name == "all") {
- return FoldAllAnyParity(
- context, std::move(funcRef), &Scalar<T>::AND, Scalar<T>{true});
+ return FoldAllAnyParity(kind, context, std::move(funcRef), &Scalar<T>::AND,
+ Scalar<T>{kind, true});
} else if (name == "allocated") {
if (IsNullAllocatable(args[0]->UnwrapExpr())) {
- return Expr<T>{false};
+ return MakeConstantExpr<T>(kind, false);
}
} else if (name == "any") {
- return FoldAllAnyParity(
- context, std::move(funcRef), &Scalar<T>::OR, Scalar<T>{false});
+ return FoldAllAnyParity(kind, context, std::move(funcRef), &Scalar<T>::OR,
+ Scalar<T>{kind, false});
} else if (name == "associated") {
if (IsNullPointer(args[0]->UnwrapExpr()) ||
(args[1] && IsNullPointer(args[1]->UnwrapExpr()))) {
- return Expr<T>{false};
+ return MakeConstantExpr<T>(kind, false);
}
} else if (name == "bge" || name == "bgt" || name == "ble" || name == "blt") {
static_assert(std::is_same_v<Scalar<LargestInt>, BOZLiteralConstant>);
@@ -673,7 +512,9 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
std::optional<Expr<SomeType>> constArgs[2];
for (int i{0}; i <= 1; i++) {
if (BOZLiteralConstant * x{UnwrapExpr<BOZLiteralConstant>(args[i])}) {
- constArgs[i] = AsGenericExpr(Constant<LargestInt>{std::move(*x)});
+ // Copy rather than move: when only one operand is constant the fold
+ // below is skipped and args[i] must retain its original BOZ value.
+ constArgs[i] = AsGenericExpr(Constant<LargestInt>{LargestIntKind, *x});
} else if (auto *x{UnwrapExpr<Expr<SomeInteger>>(args[i])}) {
common::visit(
[&](const auto &ix) {
@@ -703,33 +544,33 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
*args[i] = std::move(constArgs[i].value());
}
- return FoldElementalIntrinsic<T, LargestInt, LargestInt>(context,
- std::move(funcRef),
+ return FoldElementalIntrinsic<T, LargestInt, LargestInt>(kind,
+ {LargestIntKind, LargestIntKind}, context, std::move(funcRef),
ScalarFunc<T, LargestInt, LargestInt>(
- [&fptr](
+ [&fptr, kind](
const Scalar<LargestInt> &i, const Scalar<LargestInt> &j) {
- return Scalar<T>{std::invoke(fptr, i, j)};
+ return Scalar<T>{kind, std::invoke(fptr, i, j)};
}));
} else {
return Expr<T>{std::move(funcRef)};
}
} else if (name == "btest") {
- using SameInt = Type<TypeCategory::Integer, KIND>;
+ using SameInt = Type<TypeCategory::Integer>;
if (const auto *ix{UnwrapExpr<Expr<SomeInteger>>(args[0])}) {
return common::visit(
[&](const auto &x) {
using IT = ResultType<decltype(x)>;
- return FoldElementalIntrinsic<T, IT, SameInt>(context,
- std::move(funcRef),
+ return FoldElementalIntrinsic<T, IT, SameInt>(kind,
+ {x.kind(), kind}, context, std::move(funcRef),
ScalarFunc<T, IT, SameInt>(
[&](const Scalar<IT> &x, const Scalar<SameInt> &pos) {
auto posVal{pos.ToInt64()};
- if (posVal < 0 || posVal >= x.bits) {
+ if (posVal < 0 || posVal >= x.bits()) {
context.messages().Say(
"POS=%jd out of range for BTEST"_err_en_US,
static_cast<std::intmax_t>(posVal));
}
- return Scalar<T>{x.BTEST(posVal)};
+ return Scalar<T>{kind, x.BTEST(posVal)};
}));
},
ix->u);
@@ -737,17 +578,17 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
return common::visit(
[&](const auto &x) {
using UT = ResultType<decltype(x)>;
- return FoldElementalIntrinsic<T, UT, SameInt>(context,
- std::move(funcRef),
+ return FoldElementalIntrinsic<T, UT, SameInt>(kind,
+ {x.kind(), kind}, context, std::move(funcRef),
ScalarFunc<T, UT, SameInt>(
[&](const Scalar<UT> &x, const Scalar<SameInt> &pos) {
auto posVal{pos.ToInt64()};
- if (posVal < 0 || posVal >= x.bits) {
+ if (posVal < 0 || posVal >= x.bits()) {
context.messages().Say(
"POS=%jd out of range for BTEST"_err_en_US,
static_cast<std::intmax_t>(posVal));
}
- return Scalar<T>{x.BTEST(posVal)};
+ return Scalar<T>{kind, x.BTEST(posVal)};
}));
},
ux->u);
@@ -762,7 +603,7 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
auto t1{args[1]->GetType()};
if (t0 && t1) {
if (auto result{t0->ExtendsTypeOf(*t1)}) {
- return Expr<T>{*result};
+ return MakeConstantExpr<T>(kind, *result);
}
}
}
@@ -771,31 +612,38 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
if (args[0] && args[0]->UnwrapExpr() &&
IsActuallyConstant(*args[0]->UnwrapExpr())) {
auto restorer{context.messages().DiscardMessages()};
- using DefaultReal = Type<TypeCategory::Real, 4>;
- return FoldElementalIntrinsic<T, DefaultReal>(context, std::move(funcRef),
- ScalarFunc<T, DefaultReal>([](const Scalar<DefaultReal> &x) {
- return Scalar<T>{x.IsNotANumber()};
+ using DefaultReal = Type<TypeCategory::Real>;
+ constexpr int DefaultRealKind{4};
+ return FoldElementalIntrinsic<T, DefaultReal>(kind, {DefaultRealKind},
+ context, std::move(funcRef),
+ ScalarFunc<T, DefaultReal>([kind](const Scalar<DefaultReal> &x) {
+ return Scalar<T>{kind, x.IsNotANumber()};
}));
}
} else if (name == "__builtin_ieee_is_negative") {
auto restorer{context.messages().DiscardMessages()};
- using DefaultReal = Type<TypeCategory::Real, 4>;
+ using DefaultReal = Type<TypeCategory::Real>;
+ constexpr int DefaultRealKind{4};
if (args[0] && args[0]->UnwrapExpr() &&
IsActuallyConstant(*args[0]->UnwrapExpr())) {
- return FoldElementalIntrinsic<T, DefaultReal>(context, std::move(funcRef),
- ScalarFunc<T, DefaultReal>([](const Scalar<DefaultReal> &x) {
- return Scalar<T>{x.IsNegative()};
+ return FoldElementalIntrinsic<T, DefaultReal>(kind, {DefaultRealKind},
+ context, std::move(funcRef),
+ ScalarFunc<T, DefaultReal>([kind](const Scalar<DefaultReal> &x) {
+ return Scalar<T>{kind, x.IsNegative()};
}));
}
} else if (name == "__builtin_ieee_is_normal") {
auto restorer{context.messages().DiscardMessages()};
- using DefaultReal = Type<TypeCategory::Real, 4>;
+ using DefaultReal = Type<TypeCategory::Real>;
+ constexpr int DefaultRealKind = 4;
if (args[0] && args[0]->UnwrapExpr() &&
IsActuallyConstant(*args[0]->UnwrapExpr())) {
- return FoldElementalIntrinsic<T, DefaultReal>(context, std::move(funcRef),
- ScalarFunc<T, DefaultReal>([](const Scalar<DefaultReal> &x) {
- return Scalar<T>{x.IsNormal()};
- }));
+ return FoldElementalIntrinsic<T, DefaultReal>(kind, {DefaultRealKind},
+ context, std::move(funcRef),
+ ScalarFunc<T, DefaultReal>([kind](const Scalar<DefaultReal> &x) {
+ return Scalar<T>{kind, x.IsNormal()};
+ }),
+ /*hasOptionalArgument=*/false);
}
} else if (name == "is_contiguous") {
if (args.at(0)) {
@@ -812,25 +660,31 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
"is_contiguous() is always true for named constants and subobjects of named constants"_warn_en_US);
}
}
- return Expr<T>{*knownContiguous};
+ return MakeConstantExpr<T>(kind, *knownContiguous);
}
}
} else if (name == "is_iostat_end") {
if (args[0] && args[0]->UnwrapExpr() &&
IsActuallyConstant(*args[0]->UnwrapExpr())) {
- using Int64 = Type<TypeCategory::Integer, 8>;
- return FoldElementalIntrinsic<T, Int64>(context, std::move(funcRef),
- ScalarFunc<T, Int64>([](const Scalar<Int64> &x) {
- return Scalar<T>{x.ToInt64() == FORTRAN_RUNTIME_IOSTAT_END};
+ // Int64 used to be Type<Integer,8>; force the argument to that kind as
+ // before.
+ using Int64 = Type<TypeCategory::Integer>;
+ constexpr int Int64Kind{8};
+ return FoldElementalIntrinsic<T, Int64>(kind, {Int64Kind}, context,
+ std::move(funcRef),
+ ScalarFunc<T, Int64>([kind](const Scalar<Int64> &x) {
+ return Scalar<T>{kind, x.ToInt64() == FORTRAN_RUNTIME_IOSTAT_END};
}));
}
} else if (name == "is_iostat_eor") {
if (args[0] && args[0]->UnwrapExpr() &&
IsActuallyConstant(*args[0]->UnwrapExpr())) {
- using Int64 = Type<TypeCategory::Integer, 8>;
- return FoldElementalIntrinsic<T, Int64>(context, std::move(funcRef),
- ScalarFunc<T, Int64>([](const Scalar<Int64> &x) {
- return Scalar<T>{x.ToInt64() == FORTRAN_RUNTIME_IOSTAT_EOR};
+ using Int64 = Type<TypeCategory::Integer>;
+ constexpr int Int64Kind{8};
+ return FoldElementalIntrinsic<T, Int64>(kind, {Int64Kind}, context,
+ std::move(funcRef),
+ ScalarFunc<T, Int64>([kind](const Scalar<Int64> &x) {
+ return Scalar<T>{kind, x.ToInt64() == FORTRAN_RUNTIME_IOSTAT_EOR};
}));
}
} else if (name == "lge" || name == "lgt" || name == "lle" || name == "llt") {
@@ -839,25 +693,25 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
auto *cx1{UnwrapExpr<Expr<SomeCharacter>>(args[1])};
if (cx0 && cx1) {
return Fold(context,
- ConvertToType<T>(
+ ConvertToType<T>(kind,
PackageRelation(name == "lge" ? RelationalOperator::GE
: name == "lgt" ? RelationalOperator::GT
: name == "lle" ? RelationalOperator::LE
: RelationalOperator::LT,
- ConvertToType<Ascii>(std::move(*cx0)),
- ConvertToType<Ascii>(std::move(*cx1)))));
+ ConvertToType<Ascii>(AsciiKind, std::move(*cx0)),
+ ConvertToType<Ascii>(AsciiKind, std::move(*cx1)))));
}
} else if (name == "logical") {
if (auto *expr{UnwrapExpr<Expr<SomeLogical>>(args[0])}) {
- return Fold(context, ConvertToType<T>(std::move(*expr)));
+ return Fold(context, ConvertToType<T>(kind, std::move(*expr)));
}
} else if (name == "matmul") {
return FoldMatmul(context, std::move(funcRef));
} else if (name == "out_of_range") {
- return RewriteOutOfRange<KIND>(context, std::move(funcRef));
+ return RewriteOutOfRange(context, std::move(funcRef));
} else if (name == "parity") {
- return FoldAllAnyParity(
- context, std::move(funcRef), &Scalar<T>::NEQV, Scalar<T>{false});
+ return FoldAllAnyParity(kind, context, std::move(funcRef), &Scalar<T>::NEQV,
+ Scalar<T>{kind, false});
} else if (name == "same_type_as") {
// Type equality testing with SAME_TYPE_AS() ignores any type parameters.
// Returns a constant truth value when the result is known now.
@@ -866,18 +720,20 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
auto t1{args[1]->GetType()};
if (t0 && t1) {
if (auto result{t0->SameTypeAs(*t1)}) {
- return Expr<T>{*result};
+ return MakeConstantExpr<T>(kind, *result);
}
}
}
} else if (name == "__builtin_ieee_support_datatype") {
- return Expr<T>{true};
+ return MakeConstantExpr<T>(kind, true);
} else if (name == "__builtin_ieee_support_denormal") {
- return Expr<T>{context.targetCharacteristics().ieeeFeatures().test(
- IeeeFeature::Denormal)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(
+ IeeeFeature::Denormal));
} else if (name == "__builtin_ieee_support_divide") {
- return Expr<T>{context.targetCharacteristics().ieeeFeatures().test(
- IeeeFeature::Divide)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(
+ IeeeFeature::Divide));
} else if (name == "__builtin_ieee_support_flag") {
if (context.targetCharacteristics().ieeeFeatures().test(
IeeeFeature::Flags)) {
@@ -890,20 +746,22 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
if (auto flag{ToInt64(value)}) {
if (flag != _FORTRAN_RUNTIME_IEEE_DENORM) {
// Check for suppport for standard exceptions.
- return Expr<T>{
+ return MakeConstantExpr<T>(kind,
context.targetCharacteristics().ieeeFeatures().test(
- IeeeFeature::Flags)};
+ IeeeFeature::Flags));
} else if (args[1]) {
// Check for nonstandard ieee_denorm exception support for
// a given kind.
- return Expr<T>{context.targetCharacteristics()
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics()
.hasSubnormalExceptionSupport(
- args[1]->GetType().value().kind())};
+ args[1]->GetType().value().kind()));
} else {
// Check for nonstandard ieee_denorm exception support for
// all kinds.
- return Expr<T>{context.targetCharacteristics()
- .hasSubnormalExceptionSupport()};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics()
+ .hasSubnormalExceptionSupport());
}
}
}
@@ -914,48 +772,52 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
} else if (name == "__builtin_ieee_support_halting") {
if (!context.targetCharacteristics()
.haltingSupportIsUnknownAtCompileTime()) {
- return Expr<T>{context.targetCharacteristics().ieeeFeatures().test(
- IeeeFeature::Halting)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(
+ IeeeFeature::Halting));
}
} else if (name == "__builtin_ieee_support_inf") {
- return Expr<T>{
- context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::Inf)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::Inf));
} else if (name == "__builtin_ieee_support_io") {
- return Expr<T>{
- context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::Io)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::Io));
} else if (name == "__builtin_ieee_support_nan") {
- return Expr<T>{
- context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::NaN)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::NaN));
} else if (name == "__builtin_ieee_support_rounding") {
if (context.targetCharacteristics().ieeeFeatures().test(
IeeeFeature::Rounding)) {
if (auto mode{GetRoundingMode(args[0])}) {
- return Expr<T>{mode < common::RoundingMode::TiesAwayFromZero};
+ return MakeConstantExpr<T>(
+ kind, mode < common::RoundingMode::TiesAwayFromZero);
}
}
} else if (name == "__builtin_ieee_support_sqrt") {
- return Expr<T>{
- context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::Sqrt)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(IeeeFeature::Sqrt));
} else if (name == "__builtin_ieee_support_standard") {
// ieee_support_standard depends in part on ieee_support_halting.
if (!context.targetCharacteristics()
.haltingSupportIsUnknownAtCompileTime()) {
- return Expr<T>{context.targetCharacteristics().ieeeFeatures().test(
- IeeeFeature::Standard)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(
+ IeeeFeature::Standard));
}
} else if (name == "__builtin_ieee_support_subnormal") {
- return Expr<T>{context.targetCharacteristics().ieeeFeatures().test(
- IeeeFeature::Subnormal)};
+ return MakeConstantExpr<T>(kind,
+ context.targetCharacteristics().ieeeFeatures().test(
+ IeeeFeature::Subnormal));
} else if (name == "__builtin_ieee_support_underflow_control") {
// Setting kind=0 checks subnormal flushing control across all type kinds.
if (args[0]) {
- return Expr<T>{
+ return MakeConstantExpr<T>(kind,
context.targetCharacteristics().hasSubnormalFlushingControl(
- args[0]->GetType().value().kind())};
+ args[0]->GetType().value().kind()));
} else {
- return Expr<T>{
+ return MakeConstantExpr<T>(kind,
context.targetCharacteristics().hasSubnormalFlushingControl(
- /*any=*/false)};
+ /*any=*/false));
}
}
return Expr<T>{std::move(funcRef)};
@@ -990,7 +852,7 @@ Expr<LogicalResult> FoldOperation(
} else {
static_assert(T::category != TypeCategory::Logical);
}
- return Expr<LogicalResult>{Constant<LogicalResult>{result}};
+ return MakeLogicalResultExpr(result);
}
return Expr<LogicalResult>{Relational<SomeType>{std::move(relation)}};
}
@@ -1004,28 +866,28 @@ Expr<LogicalResult> FoldOperation(
std::move(relation.u));
}
-template <int KIND>
-Expr<Type<TypeCategory::Logical, KIND>> FoldOperation(
- FoldingContext &context, Not<KIND> &&x) {
+Expr<Type<TypeCategory::Logical>> FoldOperation(
+ FoldingContext &context, Not &&x) {
if (auto array{ApplyElementwise(context, x)}) {
return *array;
}
- using Ty = Type<TypeCategory::Logical, KIND>;
+ using Ty = Type<TypeCategory::Logical>;
+ const int kind{x.kind()};
auto &operand{x.left()};
if (auto value{GetScalarConstantValue<Ty>(operand)}) {
- return Expr<Ty>{Constant<Ty>{!value->IsTrue()}};
+ return MakeConstantExpr<Ty>(kind, !value->IsTrue());
}
return Expr<Ty>{x};
}
-template <int KIND>
-Expr<Type<TypeCategory::Logical, KIND>> FoldOperation(
- FoldingContext &context, LogicalOperation<KIND> &&operation) {
- using LOGICAL = Type<TypeCategory::Logical, KIND>;
+Expr<Type<TypeCategory::Logical>> FoldOperation(
+ FoldingContext &context, LogicalOperation &&operation) {
+ using LOGICAL = Type<TypeCategory::Logical>;
+ const int kind{operation.kind()};
if (auto array{ApplyElementwise(context, operation,
std::function<Expr<LOGICAL>(Expr<LOGICAL> &&, Expr<LOGICAL> &&)>{
[=](Expr<LOGICAL> &&x, Expr<LOGICAL> &&y) {
- return Expr<LOGICAL>{LogicalOperation<KIND>{
+ return Expr<LOGICAL>{LogicalOperation{
operation.logicalOperator, std::move(x), std::move(y)}};
}})}) {
return *array;
@@ -1048,7 +910,7 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldOperation(
case LogicalOperator::Not:
DIE("not a binary operator");
}
- return Expr<LOGICAL>{Constant<LOGICAL>{result}};
+ return MakeConstantExpr<LOGICAL>(kind, result);
}
return Expr<LOGICAL>{std::move(operation)};
}
diff --git a/flang/lib/Evaluate/fold-matmul.h b/flang/lib/Evaluate/fold-matmul.h
index a8a24c09774e89..e0c58acdbb4bc7 100644
--- a/flang/lib/Evaluate/fold-matmul.h
+++ b/flang/lib/Evaluate/fold-matmul.h
@@ -15,10 +15,11 @@ namespace Fortran::evaluate {
template <typename T>
static Expr<T> FoldMatmul(FoldingContext &context, FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
using Element = typename Constant<T>::Element;
auto args{funcRef.arguments()};
CHECK(args.size() == 2);
- Folder<T> folder{context};
+ Folder<T> folder{kind, context};
Constant<T> *ma{folder.Folding(args[0])};
Constant<T> *mb{folder.Folding(args[1])};
if (!ma || !mb) {
@@ -51,8 +52,8 @@ static Expr<T> FoldMatmul(FoldingContext &context, FunctionRef<T> &&funcRef) {
if (mb->Rank() == 2) {
bAt[1] += ci;
}
- Element sum{};
- [[maybe_unused]] Element correction{};
+ Element sum{Element::Zero(kind)};
+ [[maybe_unused]] Element correction{Element::Zero(kind)};
for (ConstantSubscript j{0}; j < commonExtent; ++j) {
Element aElt{ma->At(aAt)};
Element bElt{mb->At(bAt)};
@@ -90,7 +91,7 @@ static Expr<T> FoldMatmul(FoldingContext &context, FunctionRef<T> &&funcRef) {
if (overflow) {
context.Warn(common::UsageWarning::FoldingException,
"MATMUL of %s data overflowed during computation"_warn_en_US,
- T::AsFortran());
+ Type<T::category>(kind).AsFortran());
}
ConstantSubscripts shape;
if (ma->Rank() == 2) {
@@ -99,7 +100,7 @@ static Expr<T> FoldMatmul(FoldingContext &context, FunctionRef<T> &&funcRef) {
if (mb->Rank() == 2) {
shape.push_back(columns);
}
- return Expr<T>{Constant<T>{std::move(elements), std::move(shape)}};
+ return Expr<T>{Constant<T>{kind, std::move(elements), std::move(shape)}};
}
} // namespace Fortran::evaluate
#endif // FORTRAN_EVALUATE_FOLD_MATMUL_H_
diff --git a/flang/lib/Evaluate/fold-real.cpp b/flang/lib/Evaluate/fold-real.cpp
index 9c591e2ef36ecd..57b935ac057997 100644
--- a/flang/lib/Evaluate/fold-real.cpp
+++ b/flang/lib/Evaluate/fold-real.cpp
@@ -15,15 +15,17 @@ namespace Fortran::evaluate {
template <typename T>
static Expr<T> FoldTransformationalBessel(
FunctionRef<T> &&funcRef, FoldingContext &context) {
+ const int kind{funcRef.kind()};
CHECK(funcRef.arguments().size() == 3);
/// Bessel runtime functions use `int` integer arguments. Convert integer
/// arguments to Int4, any overflow error will be reported during the
/// conversion folding.
- using Int4 = Type<TypeCategory::Integer, 4>;
- if (auto args{GetConstantArguments<Int4, Int4, T>(
- context, funcRef.arguments(), /*hasOptionalArgument=*/false)}) {
+ using Int4 = Type<TypeCategory::Integer>;
+ if (auto args{GetConstantArguments<Int4, Int4, T>({4, 4, kind}, context,
+ funcRef.arguments(), /*hasOptionalArgument=*/false)}) {
const std::string &name{std::get<SpecificIntrinsic>(funcRef.proc().u).name};
- if (auto elementalBessel{GetHostRuntimeWrapper<T, Int4, T>(name)}) {
+ if (auto elementalBessel{
+ GetHostRuntimeWrapper<T, Int4, T>(kind, {4, kind}, name)}) {
std::vector<Scalar<T>> results;
int n1{static_cast<int>(
std::get<0>(*args)->GetScalarValue().value().ToInt64())};
@@ -31,27 +33,29 @@ static Expr<T> FoldTransformationalBessel(
std::get<1>(*args)->GetScalarValue().value().ToInt64())};
Scalar<T> x{std::get<2>(*args)->GetScalarValue().value()};
for (int i{n1}; i <= n2; ++i) {
- results.emplace_back((*elementalBessel)(context, Scalar<Int4>{i}, x));
+ results.emplace_back(
+ (*elementalBessel)(context, value::IntegerValue{4, i}, x));
}
- return Expr<T>{Constant<T>{
- std::move(results), ConstantSubscripts{std::max(n2 - n1 + 1, 0)}}};
+ return Expr<T>{Constant<T>{kind, std::move(results),
+ ConstantSubscripts{std::max(n2 - n1 + 1, 0)}}};
} else {
context.Warn(common::UsageWarning::FoldingFailure,
"%s(integer(kind=4), real(kind=%d)) cannot be folded on host"_warn_en_US,
- name, T::kind);
+ name, kind);
}
}
return Expr<T>{std::move(funcRef)};
}
// NORM2
-template <int KIND> class Norm2Accumulator {
- using T = Type<TypeCategory::Real, KIND>;
+class Norm2Accumulator {
+ using T = Type<TypeCategory::Real>;
public:
Norm2Accumulator(
const Constant<T> &array, const Constant<T> &maxAbs, Rounding rounding)
- : array_{array}, maxAbs_{maxAbs}, rounding_{rounding} {};
+ : array_{array}, maxAbs_{maxAbs}, rounding_{rounding},
+ correction_{Scalar<T>::Zero(array.kind())} {};
void operator()(
Scalar<T> &element, const ConstantSubscripts &at, bool /*first*/) {
// Summation of scaled elements:
@@ -103,44 +107,42 @@ template <int KIND> class Norm2Accumulator {
const Constant<T> &maxAbs_;
const Rounding rounding_;
bool overflow_{false};
- Scalar<T> correction_{};
+ Scalar<T> correction_;
ConstantSubscripts maxAbsAt_{maxAbs_.lbounds()};
};
-template <int KIND>
-static Expr<Type<TypeCategory::Real, KIND>> FoldNorm2(FoldingContext &context,
- FunctionRef<Type<TypeCategory::Real, KIND>> &&funcRef) {
- using T = Type<TypeCategory::Real, KIND>;
+static Expr<Type<TypeCategory::Real>> FoldNorm2(int kind,
+ FoldingContext &context, FunctionRef<Type<TypeCategory::Real>> &&funcRef) {
+ using T = Type<TypeCategory::Real>;
using Element = typename Constant<T>::Element;
std::optional<int> dim;
if (std::optional<ArrayAndMask<T>> arrayAndMask{
- ProcessReductionArgs<T>(context, funcRef.arguments(), dim,
+ ProcessReductionArgs<T>(kind, context, funcRef.arguments(), dim,
/*X=*/0, /*DIM=*/1)}) {
MaxvalMinvalAccumulator<T, /*ABS=*/true> maxAbsAccumulator{
- RelationalOperator::GT, context, arrayAndMask->array};
- const Element identity{};
- Constant<T> maxAbs{DoReduction<T>(arrayAndMask->array, arrayAndMask->mask,
- dim, identity, maxAbsAccumulator)};
+ kind, RelationalOperator::GT, context, arrayAndMask->array};
+ const Element identity{Element::Zero(kind)};
+ Constant<T> maxAbs{DoReduction<T>(kind, arrayAndMask->array,
+ arrayAndMask->mask, dim, identity, maxAbsAccumulator)};
Norm2Accumulator norm2Accumulator{arrayAndMask->array, maxAbs,
context.targetCharacteristics().roundingMode()};
- Constant<T> result{DoReduction<T>(arrayAndMask->array, arrayAndMask->mask,
- dim, identity, norm2Accumulator)};
+ Constant<T> result{DoReduction<T>(kind, arrayAndMask->array,
+ arrayAndMask->mask, dim, identity, norm2Accumulator)};
if (norm2Accumulator.overflow()) {
context.Warn(common::UsageWarning::FoldingException,
- "NORM2() of REAL(%d) data overflowed"_warn_en_US, KIND);
+ "NORM2() of REAL(%d) data overflowed"_warn_en_US, kind);
}
return Expr<T>{std::move(result)};
}
return Expr<T>{std::move(funcRef)};
}
-template <int KIND>
-Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
- FoldingContext &context,
- FunctionRef<Type<TypeCategory::Real, KIND>> &&funcRef) {
- using T = Type<TypeCategory::Real, KIND>;
- using ComplexT = Type<TypeCategory::Complex, KIND>;
- using Int4 = Type<TypeCategory::Integer, 4>;
+Expr<Type<TypeCategory::Real>> FoldIntrinsicFunction(
+ FoldingContext &context, FunctionRef<Type<TypeCategory::Real>> &&funcRef) {
+ const int kind{funcRef.kind()};
+ using T = Type<TypeCategory::Real>;
+ using ComplexT = Type<TypeCategory::Complex>;
+ using Int4 = Type<TypeCategory::Integer>;
ActualArguments &args{funcRef.arguments()};
auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
CHECK(intrinsic);
@@ -154,12 +156,12 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
name == "log_gamma" || name == "sin" || name == "sinh" || name == "tan" ||
name == "tanh") {
CHECK(args.size() == 1);
- if (auto callable{GetHostRuntimeWrapper<T, T>(name)}) {
+ if (auto callable{GetHostRuntimeWrapper<T, T>(kind, {kind}, name)}) {
return FoldElementalIntrinsic<T, T>(
- context, std::move(funcRef), *callable);
+ kind, {kind}, context, std::move(funcRef), *callable);
} else {
context.Warn(common::UsageWarning::FoldingFailure,
- "%s(real(kind=%d)) cannot be folded on host"_warn_en_US, name, KIND);
+ "%s(real(kind=%d)) cannot be folded on host"_warn_en_US, name, kind);
}
} else if (name == "amax0" || name == "amin0" || name == "amin1" ||
name == "amax1" || name == "dmin1" || name == "dmax1") {
@@ -167,24 +169,26 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
} else if (name == "atan" || name == "atan2") {
std::string localName{name == "atan" ? "atan2" : name};
CHECK(args.size() == 2);
- if (auto callable{GetHostRuntimeWrapper<T, T, T>(localName)}) {
+ if (auto callable{
+ GetHostRuntimeWrapper<T, T, T>(kind, {kind, kind}, localName)}) {
return FoldElementalIntrinsic<T, T, T>(
- context, std::move(funcRef), *callable);
+ kind, {kind, kind}, context, std::move(funcRef), *callable);
} else {
context.Warn(common::UsageWarning::FoldingFailure,
"%s(real(kind=%d), real(kind%d)) cannot be folded on host"_warn_en_US,
- name, KIND, KIND);
+ name, kind, kind);
}
} else if (name == "bessel_jn" || name == "bessel_yn") {
if (args.size() == 2) { // elemental
// runtime functions use int arg
- if (auto callable{GetHostRuntimeWrapper<T, Int4, T>(name)}) {
+ if (auto callable{
+ GetHostRuntimeWrapper<T, Int4, T>(kind, {4, kind}, name)}) {
return FoldElementalIntrinsic<T, Int4, T>(
- context, std::move(funcRef), *callable);
+ kind, {4, kind}, context, std::move(funcRef), *callable);
} else {
context.Warn(common::UsageWarning::FoldingFailure,
"%s(integer(kind=4), real(kind=%d)) cannot be folded on host"_warn_en_US,
- name, KIND);
+ name, kind);
}
} else {
return FoldTransformationalBessel<T>(std::move(funcRef), context);
@@ -193,9 +197,10 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
// Argument can be complex or real
if (UnwrapExpr<Expr<SomeReal>>(args[0])) {
return FoldElementalIntrinsic<T, T>(
- context, std::move(funcRef), &Scalar<T>::ABS);
+ kind, {kind}, context, std::move(funcRef), &Scalar<T>::ABS);
} else if (UnwrapExpr<Expr<SomeComplex>>(args[0])) {
- return FoldElementalIntrinsic<T, ComplexT>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, ComplexT>(kind, {kind}, context,
+ std::move(funcRef),
ScalarFunc<T, ComplexT>([&name, &context](
const Scalar<ComplexT> &z) -> Scalar<T> {
ValueWithRealFlags<Scalar<T>> y{z.ABS()};
@@ -217,7 +222,8 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
common::RoundingMode mode{name == "aint"
? common::RoundingMode::ToZero
: common::RoundingMode::TiesAwayFromZero};
- return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T>(kind, {kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T>(
[&name, &context, mode](const Scalar<T> &x) -> Scalar<T> {
ValueWithRealFlags<Scalar<T>> y{x.ToWholeNumber(mode)};
@@ -228,7 +234,8 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
return y.value;
}));
} else if (name == "dim") {
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T, T>([&context](const Scalar<T> &x,
const Scalar<T> &y) -> Scalar<T> {
ValueWithRealFlags<Scalar<T>> result{x.DIM(y)};
@@ -247,21 +254,23 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
const auto *yExpr{args[1]->UnwrapExpr()};
if (xExpr && yExpr) {
return Fold(context,
- ToReal<T::kind>(context, common::Clone(*xExpr)) *
- ToReal<T::kind>(context, common::Clone(*yExpr)));
+ ToReal(kind, context, common::Clone(*xExpr)) *
+ ToReal(kind, context, common::Clone(*yExpr)));
}
}
} else if (name == "epsilon") {
- return Expr<T>{Scalar<T>::EPSILON()};
+ return MakeConstantExpr<T>(kind, Scalar<T>::EPSILON(kind));
} else if (name == "fraction") {
- return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T>(kind, {kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T>(
[](const Scalar<T> &x) -> Scalar<T> { return x.FRACTION(); }));
} else if (name == "huge") {
- return Expr<T>{Scalar<T>::HUGE()};
+ return MakeConstantExpr<T>(kind, Scalar<T>::HUGE(kind));
} else if (name == "hypot") {
CHECK(args.size() == 2);
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T, T>(
[&](const Scalar<T> &x, const Scalar<T> &y) -> Scalar<T> {
ValueWithRealFlags<Scalar<T>> result{x.HYPOT(y)};
@@ -276,13 +285,13 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
} else if (name == "max") {
return FoldMINorMAX(context, std::move(funcRef), Ordering::Greater);
} else if (name == "maxval") {
- return FoldMaxvalMinval<T>(context, std::move(funcRef),
- RelationalOperator::GT, T::Scalar::HUGE().Negate());
+ return FoldMaxvalMinval<T>(kind, context, std::move(funcRef),
+ RelationalOperator::GT, Scalar<T>::HUGE(kind).Negate());
} else if (name == "min") {
return FoldMINorMAX(context, std::move(funcRef), Ordering::Less);
} else if (name == "minval") {
- return FoldMaxvalMinval<T>(
- context, std::move(funcRef), RelationalOperator::LT, T::Scalar::HUGE());
+ return FoldMaxvalMinval<T>(kind, context, std::move(funcRef),
+ RelationalOperator::LT, Scalar<T>::HUGE(kind));
} else if (name == "mod") {
CHECK(args.size() == 2);
bool badPConst{false};
@@ -295,7 +304,8 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
badPConst = true;
}
}
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T, T>([&context, badPConst](const Scalar<T> &x,
const Scalar<T> &y) -> Scalar<T> {
auto result{x.MOD(y)};
@@ -317,7 +327,8 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
badPConst = true;
}
}
- return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T, T>([&context, badPConst](const Scalar<T> &x,
const Scalar<T> &y) -> Scalar<T> {
auto result{x.MODULO(y)};
@@ -341,7 +352,8 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
sConst->IsZero() ? "zero" : "NaN");
badSConst = true;
}
- return FoldElementalIntrinsic<T, T, TS>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, TS>(kind, {kind, sVal.kind()},
+ context, std::move(funcRef),
ScalarFunc<T, T, TS>([&](const Scalar<T> &x,
const Scalar<TS> &s) -> Scalar<T> {
if (!badSConst && (s.IsZero() || s.IsNotANumber())) {
@@ -360,16 +372,17 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
sExpr->u);
}
} else if (name == "norm2") {
- return FoldNorm2<T::kind>(context, std::move(funcRef));
+ return FoldNorm2(kind, context, std::move(funcRef));
} else if (name == "product") {
- auto one{Scalar<T>::FromInteger(value::Integer<8>{1}).value};
+ auto one{Scalar<T>::FromInteger(kind, value::IntegerValue{1, 1}).value};
return FoldProduct<T>(context, std::move(funcRef), one);
} else if (name == "real" || name == "dble") {
if (auto *expr{args[0].value().UnwrapExpr()}) {
- return ToReal<KIND>(context, std::move(*expr));
+ return ToReal(kind, context, std::move(*expr));
}
} else if (name == "rrspacing") {
- return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T>(kind, {kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T>(
[](const Scalar<T> &x) -> Scalar<T> { return x.RRSPACING(); }));
} else if (name == "scale") {
@@ -377,12 +390,11 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
return common::visit(
[&](const auto &byVal) {
using TBY = ResultType<decltype(byVal)>;
- return FoldElementalIntrinsic<T, T, TBY>(context,
- std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, TBY>(kind, {kind, byVal.kind()},
+ context, std::move(funcRef),
ScalarFunc<T, T, TBY>(
[&](const Scalar<T> &x, const Scalar<TBY> &y) -> Scalar<T> {
- ValueWithRealFlags<Scalar<T>> result{
- x.template SCALE<Scalar<TBY>>(y)};
+ ValueWithRealFlags<Scalar<T>> result{x.SCALE(y)};
if (result.flags.test(RealFlag::Overflow)) {
context.Warn(common::UsageWarning::FoldingException,
"SCALE/IEEE_SCALB intrinsic folding overflow"_warn_en_US);
@@ -397,7 +409,8 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
return common::visit(
[&](const auto &iVal) {
using TY = ResultType<decltype(iVal)>;
- return FoldElementalIntrinsic<T, T, TY>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, TY>(kind, {kind, iVal.kind()},
+ context, std::move(funcRef),
ScalarFunc<T, T, TY>(
[&](const Scalar<T> &x, const Scalar<TY> &i) -> Scalar<T> {
return x.SET_EXPONENT(i.ToInt64());
@@ -407,13 +420,15 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
}
} else if (name == "sign") {
return FoldElementalIntrinsic<T, T, T>(
- context, std::move(funcRef), &Scalar<T>::SIGN);
+ kind, {kind, kind}, context, std::move(funcRef), &Scalar<T>::SIGN);
} else if (name == "spacing") {
- return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T>(kind, {kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T>(
[](const Scalar<T> &x) -> Scalar<T> { return x.SPACING(); }));
} else if (name == "sqrt") {
- return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T>(kind, {kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T>([&context](const Scalar<T> &x) -> Scalar<T> {
ValueWithRealFlags<Scalar<T>> result{x.SQRT()};
if (result.flags.test(RealFlag::InvalidArgument)) {
@@ -425,7 +440,7 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
} else if (name == "sum") {
return FoldSum<T>(context, std::move(funcRef));
} else if (name == "tiny") {
- return Expr<T>{Scalar<T>::TINY()};
+ return MakeConstantExpr<T>(kind, Scalar<T>::TINY(kind));
} else if (name == "__builtin_fma") {
CHECK(args.size() == 3);
} else if (name == "__builtin_ieee_next_after") {
@@ -433,16 +448,19 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
return common::visit(
[&](const auto &yVal) {
using TY = ResultType<decltype(yVal)>;
- return FoldElementalIntrinsic<T, T, TY>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T, TY>(kind, {kind, yVal.kind()},
+ context, std::move(funcRef),
ScalarFunc<T, T, TY>([&](const Scalar<T> &x,
const Scalar<TY> &y) -> Scalar<T> {
- auto xBig{Scalar<LargestReal>::Convert(x).value};
- auto yBig{Scalar<LargestReal>::Convert(y).value};
+ auto xBig{
+ Scalar<LargestReal>::Convert(LargestRealKind, x).value};
+ auto yBig{
+ Scalar<LargestReal>::Convert(LargestRealKind, y).value};
switch (xBig.Compare(yBig)) {
case Relation::Unordered:
context.Warn(common::UsageWarning::FoldingValueChecks,
"IEEE_NEXT_AFTER intrinsic folding: arguments are unordered"_warn_en_US);
- return x.NotANumber();
+ return Scalar<T>::NotANumber(kind);
case Relation::Equal:
break;
case Relation::Less:
@@ -459,7 +477,8 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunction(
name == "__builtin_ieee_next_down") {
bool upward{name == "__builtin_ieee_next_up"};
const char *iName{upward ? "IEEE_NEXT_UP" : "IEEE_NEXT_DOWN"};
- return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
+ return FoldElementalIntrinsic<T, T>(kind, {kind}, context,
+ std::move(funcRef),
ScalarFunc<T, T>([&](const Scalar<T> &x) -> Scalar<T> {
auto result{x.NEAREST(upward)};
if (result.flags.test(RealFlag::InvalidArgument)) {
diff --git a/flang/lib/Evaluate/fold-reduction.cpp b/flang/lib/Evaluate/fold-reduction.cpp
index c5f5e1996b6b11..d5ea820b471fb5 100644
--- a/flang/lib/Evaluate/fold-reduction.cpp
+++ b/flang/lib/Evaluate/fold-reduction.cpp
@@ -17,7 +17,8 @@ bool CheckReductionDIM(std::optional<int> &dim, FoldingContext &context,
return true; // no DIM= argument
}
if (auto *dimConst{
- Folder<SubscriptInteger>{context}.Folding(arg[*dimIndex])}) {
+ Folder<SubscriptInteger>{SubscriptIntegerKind, context}.Folding(
+ arg[*dimIndex])}) {
if (auto dimScalar{dimConst->GetScalarValue()}) {
auto dimVal{dimScalar->ToInt64()};
if (dimVal >= 1 && dimVal <= rank) {
@@ -37,7 +38,7 @@ Constant<LogicalResult> *GetReductionMASK(
std::optional<ActualArgument> &maskArg, const ConstantSubscripts &shape,
FoldingContext &context) {
Constant<LogicalResult> *mask{
- Folder<LogicalResult>{context}.Folding(maskArg)};
+ Folder<LogicalResult>{LogicalResultKind, context}.Folding(maskArg)};
if (mask &&
!CheckConformance(context.messages(), AsShape(shape),
AsShape(mask->shape()), CheckConformanceFlags::RightScalarExpandable,
diff --git a/flang/lib/Evaluate/fold-reduction.h b/flang/lib/Evaluate/fold-reduction.h
index a068364135295f..0acc731fd58b1b 100644
--- a/flang/lib/Evaluate/fold-reduction.h
+++ b/flang/lib/Evaluate/fold-reduction.h
@@ -18,9 +18,10 @@ template <typename T>
static Expr<T> FoldDotProduct(
FoldingContext &context, FunctionRef<T> &&funcRef) {
using Element = typename Constant<T>::Element;
+ const int kind{funcRef.kind()};
auto args{funcRef.arguments()};
CHECK(args.size() == 2);
- Folder<T> folder{context};
+ Folder<T> folder{kind, context};
Constant<T> *va{folder.Folding(args[0])};
Constant<T> *vb{folder.Folding(args[1])};
if (va && vb) {
@@ -31,7 +32,7 @@ static Expr<T> FoldDotProduct(
va->size(), vb->size());
return MakeInvalidIntrinsic(std::move(funcRef));
}
- Element sum{};
+ Element sum{Element::Zero(kind)};
bool overflow{false};
if constexpr (T::category == TypeCategory::Complex) {
std::vector<Element> conjugates;
@@ -39,11 +40,11 @@ static Expr<T> FoldDotProduct(
conjugates.emplace_back(x.CONJG());
}
Constant<T> conjgA{
- std::move(conjugates), ConstantSubscripts{va->shape()}};
+ kind, std::move(conjugates), ConstantSubscripts{va->shape()}};
Expr<T> products{Fold(
context, Expr<T>{std::move(conjgA)} * Expr<T>{Constant<T>{*vb}})};
Constant<T> &cProducts{DEREF(UnwrapConstantValue<T>(products))};
- [[maybe_unused]] Element correction{};
+ [[maybe_unused]] Element correction{Element::Zero(kind)};
const auto &rounding{context.targetCharacteristics().roundingMode()};
for (const Element &x : cProducts.values()) {
if constexpr (useKahanSummation) {
@@ -58,12 +59,12 @@ static Expr<T> FoldDotProduct(
}
} else if constexpr (T::category == TypeCategory::Logical) {
Expr<T> conjunctions{Fold(context,
- Expr<T>{LogicalOperation<T::kind>{LogicalOperator::And,
+ Expr<T>{LogicalOperation{LogicalOperator::And,
Expr<T>{Constant<T>{*va}}, Expr<T>{Constant<T>{*vb}}}})};
Constant<T> &cConjunctions{DEREF(UnwrapConstantValue<T>(conjunctions))};
for (const Element &x : cConjunctions.values()) {
if (x.IsTrue()) {
- sum = Element{true};
+ sum = Element{kind, true};
break;
}
}
@@ -88,7 +89,7 @@ static Expr<T> FoldDotProduct(
Expr<T> products{
Fold(context, Expr<T>{Constant<T>{*va}} * Expr<T>{Constant<T>{*vb}})};
Constant<T> &cProducts{DEREF(UnwrapConstantValue<T>(products))};
- [[maybe_unused]] Element correction{};
+ [[maybe_unused]] Element correction{Element::Zero(kind)};
const auto &rounding{context.targetCharacteristics().roundingMode()};
for (const Element &x : cProducts.values()) {
if constexpr (useKahanSummation) {
@@ -105,9 +106,9 @@ static Expr<T> FoldDotProduct(
if (overflow) {
context.Warn(common::UsageWarning::FoldingException,
"DOT_PRODUCT of %s data overflowed during computation"_warn_en_US,
- T::AsFortran());
+ T{kind}.AsFortran());
}
- return Expr<T>{Constant<T>{std::move(sum)}};
+ return MakeConstantExpr<T>(kind, std::move(sum));
}
return Expr<T>{std::move(funcRef)};
}
@@ -132,14 +133,14 @@ template <typename T> struct ArrayAndMask {
Constant<LogicalResult> mask;
};
template <typename T>
-static std::optional<ArrayAndMask<T>> ProcessReductionArgs(
+static std::optional<ArrayAndMask<T>> ProcessReductionArgs(int kind,
FoldingContext &context, ActualArguments &arg, std::optional<int> &dim,
int arrayIndex, std::optional<int> dimIndex = std::nullopt,
std::optional<int> maskIndex = std::nullopt) {
if (arg.empty()) {
return std::nullopt;
}
- Constant<T> *folded{Folder<T>{context}.Folding(arg[arrayIndex])};
+ Constant<T> *folded{Folder<T>{kind, context}.Folding(arg[arrayIndex])};
if (!folded || folded->Rank() < 1) {
return std::nullopt;
}
@@ -153,8 +154,8 @@ static std::optional<ArrayAndMask<T>> ProcessReductionArgs(
if (const Constant<LogicalResult> *origMask{
GetReductionMASK(arg[*maskIndex], folded->shape(), context)}) {
if (auto scalarMask{origMask->GetScalarValue()}) {
- maskElement =
- std::vector<Scalar<LogicalResult>>(n, scalarMask->IsTrue());
+ maskElement = std::vector<Scalar<LogicalResult>>(
+ n, Scalar<LogicalResult>{LogicalResultKind, scalarMask->IsTrue()});
} else {
maskElement = origMask->values();
}
@@ -162,11 +163,12 @@ static std::optional<ArrayAndMask<T>> ProcessReductionArgs(
return std::nullopt;
}
} else {
- maskElement = std::vector<Scalar<LogicalResult>>(n, true);
+ maskElement = std::vector<Scalar<LogicalResult>>(
+ n, Scalar<LogicalResult>{LogicalResultKind, true});
}
return ArrayAndMask<T>{Constant<T>(*folded),
- Constant<LogicalResult>{
- std::move(maskElement), ConstantSubscripts{folded->shape()}}};
+ Constant<LogicalResult>{LogicalResultKind, std::move(maskElement),
+ ConstantSubscripts{folded->shape()}}};
}
// Generalized reduction to an array of one dimension fewer (w/ DIM=)
@@ -174,7 +176,7 @@ static std::optional<ArrayAndMask<T>> ProcessReductionArgs(
// operator()(Scalar<T> &, const ConstantSubscripts &, bool first)
// and Done(Scalar<T> &).
template <typename T, typename ACCUMULATOR, typename ARRAY>
-static Constant<T> DoReduction(const Constant<ARRAY> &array,
+static Constant<T> DoReduction(int kind, const Constant<ARRAY> &array,
const Constant<LogicalResult> &mask, std::optional<int> &dim,
const Scalar<T> &identity, ACCUMULATOR &accumulator) {
ConstantSubscripts at{array.lbounds()};
@@ -220,19 +222,21 @@ static Constant<T> DoReduction(const Constant<ARRAY> &array,
accumulator.Done(elements.back());
}
if constexpr (T::category == TypeCategory::Character) {
- return {static_cast<ConstantSubscript>(identity.size()),
+ return {kind, static_cast<ConstantSubscript>(identity.size()),
std::move(elements), std::move(resultShape)};
} else {
- return {std::move(elements), std::move(resultShape)};
+ return {kind, std::move(elements), std::move(resultShape)};
}
}
// MAXVAL & MINVAL
template <typename T, bool ABS = false> class MaxvalMinvalAccumulator {
public:
- MaxvalMinvalAccumulator(
- RelationalOperator opr, FoldingContext &context, const Constant<T> &array)
- : opr_{opr}, context_{context}, array_{array} {};
+ constexpr int kind() const { return kind_; }
+
+ MaxvalMinvalAccumulator(int kind, RelationalOperator opr,
+ FoldingContext &context, const Constant<T> &array)
+ : kind_{kind}, opr_{opr}, context_{context}, array_{array} {};
void operator()(Scalar<T> &element, const ConstantSubscripts &at,
[[maybe_unused]] bool firstUnmasked) const {
auto aAt{array_.At(at)};
@@ -247,8 +251,9 @@ template <typename T, bool ABS = false> class MaxvalMinvalAccumulator {
return;
}
}
- Expr<LogicalResult> test{PackageRelation(
- opr_, Expr<T>{Constant<T>{aAt}}, Expr<T>{Constant<T>{element}})};
+ Expr<LogicalResult> test{
+ PackageRelation(opr_, MakeConstantExpr<T>(kind(), aAt),
+ MakeConstantExpr<T>(kind(), element))};
auto folded{GetScalarConstantValue<LogicalResult>(
test.Rewrite(context_, std::move(test)))};
CHECK(folded.has_value());
@@ -259,25 +264,27 @@ template <typename T, bool ABS = false> class MaxvalMinvalAccumulator {
void Done(Scalar<T> &) const {}
private:
+ int kind_;
RelationalOperator opr_;
FoldingContext &context_;
const Constant<T> &array_;
};
template <typename T>
-static Expr<T> FoldMaxvalMinval(FoldingContext &context, FunctionRef<T> &&ref,
- RelationalOperator opr, const Scalar<T> &identity) {
+static Expr<T> FoldMaxvalMinval(int kind, FoldingContext &context,
+ FunctionRef<T> &&ref, RelationalOperator opr, const Scalar<T> &identity) {
static_assert(T::category == TypeCategory::Integer ||
T::category == TypeCategory::Unsigned ||
T::category == TypeCategory::Real ||
T::category == TypeCategory::Character);
std::optional<int> dim;
- if (std::optional<ArrayAndMask<T>> arrayAndMask{
- ProcessReductionArgs<T>(context, ref.arguments(), dim,
- /*ARRAY=*/0, /*DIM=*/1, /*MASK=*/2)}) {
- MaxvalMinvalAccumulator<T> accumulator{opr, context, arrayAndMask->array};
- return Expr<T>{DoReduction<T>(
- arrayAndMask->array, arrayAndMask->mask, dim, identity, accumulator)};
+ if (std::optional<ArrayAndMask<T>> arrayAndMask{ProcessReductionArgs<T>(kind,
+ context, ref.arguments(), dim, /*ARRAY=*/0, /*DIM=*/1,
+ /*MASK=*/2)}) {
+ MaxvalMinvalAccumulator<T> accumulator{
+ kind, opr, context, arrayAndMask->array};
+ return Expr<T>{DoReduction<T>(kind, arrayAndMask->array, arrayAndMask->mask,
+ dim, identity, accumulator)};
}
return Expr<T>{std::move(ref)};
}
@@ -315,16 +322,17 @@ static Expr<T> FoldProduct(
T::category == TypeCategory::Unsigned ||
T::category == TypeCategory::Real ||
T::category == TypeCategory::Complex);
+ const int kind{ref.kind()};
std::optional<int> dim;
if (std::optional<ArrayAndMask<T>> arrayAndMask{
- ProcessReductionArgs<T>(context, ref.arguments(), dim,
+ ProcessReductionArgs<T>(kind, context, ref.arguments(), dim,
/*ARRAY=*/0, /*DIM=*/1, /*MASK=*/2)}) {
ProductAccumulator accumulator{arrayAndMask->array};
- auto result{Expr<T>{DoReduction<T>(
- arrayAndMask->array, arrayAndMask->mask, dim, identity, accumulator)}};
+ auto result{Expr<T>{DoReduction<T>(kind, arrayAndMask->array,
+ arrayAndMask->mask, dim, identity, accumulator)}};
if (accumulator.overflow()) {
context.Warn(common::UsageWarning::FoldingException,
- "PRODUCT() of %s data overflowed"_warn_en_US, T::AsFortran());
+ "PRODUCT() of %s data overflowed"_warn_en_US, T{kind}.AsFortran());
}
return result;
}
@@ -337,7 +345,8 @@ template <typename T> class SumAccumulator {
public:
SumAccumulator(const Constant<T> &array, Rounding rounding)
- : array_{array}, rounding_{rounding} {}
+ : kind_{array.kind()}, array_{array}, rounding_{rounding},
+ correction_{Element::Zero(array.kind())} {}
void operator()(
Element &element, const ConstantSubscripts &at, bool /*first*/) {
if constexpr (T::category == TypeCategory::Integer) {
@@ -358,16 +367,17 @@ template <typename T> class SumAccumulator {
T::category != TypeCategory::Unsigned) {
auto corrected{element.Add(correction_, rounding_)};
overflow_ |= corrected.flags.test(RealFlag::Overflow);
- correction_ = Scalar<T>{};
+ correction_ = Element::Zero(kind_);
element = corrected.value;
}
}
private:
+ int kind_;
const Constant<T> &array_;
Rounding rounding_;
bool overflow_{false};
- Element correction_{};
+ Element correction_;
};
template <typename T>
@@ -377,18 +387,19 @@ static Expr<T> FoldSum(FoldingContext &context, FunctionRef<T> &&ref) {
T::category == TypeCategory::Real ||
T::category == TypeCategory::Complex);
using Element = typename Constant<T>::Element;
+ const int kind{ref.kind()};
std::optional<int> dim;
- Element identity{};
+ Element identity{Element::Zero(kind)};
if (std::optional<ArrayAndMask<T>> arrayAndMask{
- ProcessReductionArgs<T>(context, ref.arguments(), dim,
+ ProcessReductionArgs<T>(kind, context, ref.arguments(), dim,
/*ARRAY=*/0, /*DIM=*/1, /*MASK=*/2)}) {
SumAccumulator accumulator{
arrayAndMask->array, context.targetCharacteristics().roundingMode()};
- auto result{Expr<T>{DoReduction<T>(
- arrayAndMask->array, arrayAndMask->mask, dim, identity, accumulator)}};
+ auto result{Expr<T>{DoReduction<T>(kind, arrayAndMask->array,
+ arrayAndMask->mask, dim, identity, accumulator)}};
if (accumulator.overflow()) {
context.Warn(common::UsageWarning::FoldingException,
- "SUM() of %s data overflowed"_warn_en_US, T::AsFortran());
+ "SUM() of %s data overflowed"_warn_en_US, T{kind}.AsFortran());
}
return result;
}
diff --git a/flang/lib/Evaluate/fold.cpp b/flang/lib/Evaluate/fold.cpp
index f20d32077602df..7c44fb5e99a125 100644
--- a/flang/lib/Evaluate/fold.cpp
+++ b/flang/lib/Evaluate/fold.cpp
@@ -51,10 +51,11 @@ std::optional<Constant<SubscriptInteger>> GetConstantSubscript(
std::vector<SubscriptInteger::Scalar> values;
while ((*stride > 0 && *lbi <= *ubi) ||
(*stride < 0 && *lbi >= *ubi)) {
- values.emplace_back(*lbi);
+ values.emplace_back(SubscriptIntegerKind, *lbi);
*lbi += *stride;
}
- return Constant<SubscriptInteger>{std::move(values),
+ return Constant<SubscriptInteger>{SubscriptIntegerKind,
+ std::move(values),
ConstantSubscripts{
static_cast<ConstantSubscript>(values.size())}};
} else {
@@ -214,7 +215,8 @@ std::optional<std::int64_t> GetInt64ArgOr(
Expr<ImpliedDoIndex::Result> FoldOperation(
FoldingContext &context, ImpliedDoIndex &&iDo) {
if (std::optional<ConstantSubscript> value{context.GetImpliedDo(iDo.name)}) {
- return Expr<ImpliedDoIndex::Result>{*value};
+ return MakeConstantExpr<ImpliedDoIndex::Result>(
+ SubscriptIntegerKind, *value);
} else {
return Expr<ImpliedDoIndex::Result>{std::move(iDo)};
}
diff --git a/flang/lib/Evaluate/formatting.cpp b/flang/lib/Evaluate/formatting.cpp
index fcedd15ee17913..7ee14e37baee68 100644
--- a/flang/lib/Evaluate/formatting.cpp
+++ b/flang/lib/Evaluate/formatting.cpp
@@ -73,22 +73,24 @@ llvm::raw_ostream &ConstantBase<RESULT, VALUE>::AsFortran(
o << ',';
}
if constexpr (Result::category == TypeCategory::Integer) {
- o << value.SignedDecimal() << '_' << Result::kind;
+ o << value.SignedDecimal() << '_' << kind_;
} else if constexpr (Result::category == TypeCategory::Unsigned) {
- o << value.UnsignedDecimal() << "U_" << Result::kind;
+ o << value.UnsignedDecimal() << "U_" << kind_;
} else if constexpr (Result::category == TypeCategory::Real ||
Result::category == TypeCategory::Complex) {
- value.AsFortran(o, Result::kind);
+ value.AsFortran(o, kind_);
} else if constexpr (Result::category == TypeCategory::Character) {
- o << Result::kind << '_' << parser::QuoteCharacterLiteral(value, true);
+ o << value.kind() << '_';
+ value.withStdString(
+ [&o](const auto &s) { o << parser::QuoteCharacterLiteral(s, true); });
} else if constexpr (Result::category == TypeCategory::Logical) {
if (!value.IsCanonical()) {
- o << "transfer(" << value.word().ToInt64() << "_8,.false._"
- << Result::kind << ')';
+ o << "transfer(" << value.word().ToInt64() << "_8,.false._" << kind_
+ << ')';
} else if (value.IsTrue()) {
- o << ".true." << '_' << Result::kind;
+ o << ".true." << '_' << kind_;
} else {
- o << ".false." << '_' << Result::kind;
+ o << ".false." << '_' << kind_;
}
} else {
StructureConstructor{result_.derivedTypeSpec(), value}.AsFortran(o);
@@ -109,8 +111,7 @@ std::string ConstantBase<RESULT, VALUE>::AsFortran() const {
return result;
}
-template <int KIND>
-llvm::raw_ostream &Constant<Type<TypeCategory::Character, KIND>>::AsFortran(
+llvm::raw_ostream &Constant<Type<TypeCategory::Character>>::AsFortran(
llvm::raw_ostream &o) const {
bool hasNonDefaultLowerBound{printLbounds && HasNonDefaultLowerBound()};
if (Rank() > 1 || hasNonDefaultLowerBound) {
@@ -125,10 +126,11 @@ llvm::raw_ostream &Constant<Type<TypeCategory::Character, KIND>>::AsFortran(
if (j > 0) {
o << ',';
}
- if (Result::kind != 1) {
- o << Result::kind << '_';
+ if (kind_ != 1) {
+ o << kind_ << '_';
}
- o << parser::QuoteCharacterLiteral(value);
+ value.withStdString(
+ [&o](const auto &s) { o << parser::QuoteCharacterLiteral(s); });
}
if (Rank() > 0) {
o << ']';
@@ -137,8 +139,7 @@ llvm::raw_ostream &Constant<Type<TypeCategory::Character, KIND>>::AsFortran(
return o;
}
-template <int KIND>
-std::string Constant<Type<TypeCategory::Character, KIND>>::AsFortran() const {
+std::string Constant<Type<TypeCategory::Character>>::AsFortran() const {
std::string result;
llvm::raw_string_ostream sstream(result);
AsFortran(sstream);
@@ -353,8 +354,7 @@ enum class Precedence { // in increasing order for sane comparisons
template <typename A> constexpr Precedence ToPrecedence(const A &) {
return Precedence::Top;
}
-template <int KIND>
-static Precedence ToPrecedence(const LogicalOperation<KIND> &x) {
+static Precedence ToPrecedence(const LogicalOperation &x) {
switch (x.logicalOperator) {
SWITCH_COVERS_ALL_CASES
case LogicalOperator::And:
@@ -368,9 +368,7 @@ static Precedence ToPrecedence(const LogicalOperation<KIND> &x) {
return Precedence::Equivalence;
}
}
-template <int KIND> constexpr Precedence ToPrecedence(const Not<KIND> &) {
- return Precedence::Not;
-}
+inline Precedence ToPrecedence(const Not &) { return Precedence::Not; }
template <typename T> constexpr Precedence ToPrecedence(const Relational<T> &) {
return Precedence::Relational;
}
@@ -380,9 +378,7 @@ template <typename T> constexpr Precedence ToPrecedence(const Add<T> &) {
template <typename T> constexpr Precedence ToPrecedence(const Subtract<T> &) {
return Precedence::Additive;
}
-template <int KIND> constexpr Precedence ToPrecedence(const Concat<KIND> &) {
- return Precedence::Additive;
-}
+inline Precedence ToPrecedence(const Concat &) { return Precedence::Additive; }
template <typename T> constexpr Precedence ToPrecedence(const Negate<T> &) {
return Precedence::Negate;
}
@@ -445,20 +441,16 @@ template <typename A>
constexpr OperatorSpelling SpellOperator(const Parentheses<A> &) {
return OperatorSpelling{"(", "", ")"};
}
-template <int KIND>
-static OperatorSpelling SpellOperator(const ComplexComponent<KIND> &x) {
+static OperatorSpelling SpellOperator(const ComplexComponent &x) {
return {x.isImaginaryPart ? "aimag(" : "real(", "", ")"};
}
-template <int KIND>
-constexpr OperatorSpelling SpellOperator(const Not<KIND> &) {
+constexpr OperatorSpelling SpellOperator(const Not &) {
return OperatorSpelling{".NOT.", "", ""};
}
-template <int KIND>
-constexpr OperatorSpelling SpellOperator(const SetLength<KIND> &) {
+constexpr OperatorSpelling SpellOperator(const SetLength &) {
return OperatorSpelling{"%SET_LENGTH(", ",", ")"};
}
-template <int KIND>
-constexpr OperatorSpelling SpellOperator(const ComplexConstructor<KIND> &) {
+constexpr OperatorSpelling SpellOperator(const ComplexConstructor &) {
return OperatorSpelling{"(", ",", ")"};
}
template <typename A> constexpr OperatorSpelling SpellOperator(const Add<A> &) {
@@ -489,12 +481,10 @@ static OperatorSpelling SpellOperator(const Extremum<A> &x) {
return OperatorSpelling{
x.ordering == Ordering::Less ? "min(" : "max(", ",", ")"};
}
-template <int KIND>
-constexpr OperatorSpelling SpellOperator(const Concat<KIND> &) {
+constexpr OperatorSpelling SpellOperator(const Concat &) {
return OperatorSpelling{"", "//", ""};
}
-template <int KIND>
-static OperatorSpelling SpellOperator(const LogicalOperation<KIND> &x) {
+static OperatorSpelling SpellOperator(const LogicalOperation &x) {
return OperatorSpelling{"", AsFortran(x.logicalOperator), ""};
}
template <typename T>
@@ -556,7 +546,7 @@ llvm::raw_ostream &Convert<TO, FROMCAT>::AsFortran(llvm::raw_ostream &o) const {
} else {
this->left().AsFortran(o << "uint(");
}
- return o << ",kind=" << TO::kind << ')';
+ return o << ",kind=" << kind() << ')';
}
llvm::raw_ostream &Relational<SomeType>::AsFortran(llvm::raw_ostream &o) const {
@@ -577,7 +567,8 @@ template <typename T>
llvm::raw_ostream &EmitArray(llvm::raw_ostream &o, const ImpliedDo<T> &implDo) {
o << '(';
EmitArray(o, implDo.values());
- o << ',' << ImpliedDoIndex::Result::AsFortran()
+ o << ','
+ << DynamicType{TypeCategory::Integer, SubscriptIntegerKind}.AsFortran()
<< "::" << implDo.name().ToString() << '=';
implDo.lower().AsFortran(o) << ',';
implDo.upper().AsFortran(o) << ',';
@@ -604,9 +595,7 @@ llvm::raw_ostream &ArrayConstructor<T>::AsFortran(llvm::raw_ostream &o) const {
return o << ']';
}
-template <int KIND>
-llvm::raw_ostream &
-ArrayConstructor<Type<TypeCategory::Character, KIND>>::AsFortran(
+llvm::raw_ostream &ArrayConstructor<Type<TypeCategory::Character>>::AsFortran(
llvm::raw_ostream &o) const {
o << '[';
if (const auto *len{LEN()}) {
@@ -891,7 +880,7 @@ llvm::raw_ostream &DescriptorInquiry::AsFortran(llvm::raw_ostream &o) const {
o << ",dim=" << (dimension_ + 1);
}
}
- return o << ",kind=" << DescriptorInquiry::Result::kind << ")";
+ return o << ",kind=" << DescriptorInquiry::kind() << ")";
}
llvm::raw_ostream &RankOneBoundElement::AsFortran(llvm::raw_ostream &o) const {
diff --git a/flang/lib/Evaluate/host.h b/flang/lib/Evaluate/host.h
index e032b28ab8a3d7..02706bf66ad567 100644
--- a/flang/lib/Evaluate/host.h
+++ b/flang/lib/Evaluate/host.h
@@ -55,6 +55,34 @@ class HostFloatingPointEnvironment {
// Type mapping from F18 types to host types
struct UnsupportedType {}; // There is no host type for the F18 type
+/// Because HostType<T> depends on the type's kind as well, KIND must be part of
+/// the template as well where Type<CAT> does not.
+template <common::TypeCategory CAT, int KIND> struct TypeKind {
+ using FortranType = Fortran::evaluate::Type<CAT>;
+ using Scalar = Fortran::evaluate::Scalar<FortranType>;
+ static constexpr common::TypeCategory category{CAT};
+ static constexpr int kind{KIND};
+
+ static constexpr DynamicType GetType() { return DynamicType{CAT, KIND}; }
+
+ // Meaningful for COMPLEX only: the real component's (category, kind) tag.
+ using Part = TypeKind<common::TypeCategory::Real, KIND>;
+};
+
+using AllHostKindTypes = std::tuple<TypeKind<TypeCategory::Integer, 1>,
+ TypeKind<TypeCategory::Integer, 2>, TypeKind<TypeCategory::Integer, 4>,
+ TypeKind<TypeCategory::Integer, 8>, TypeKind<TypeCategory::Integer, 16>,
+ TypeKind<TypeCategory::Real, 2>, TypeKind<TypeCategory::Real, 3>,
+ TypeKind<TypeCategory::Real, 4>, TypeKind<TypeCategory::Real, 8>,
+ TypeKind<TypeCategory::Real, 10>, TypeKind<TypeCategory::Real, 16>,
+ TypeKind<TypeCategory::Complex, 2>, TypeKind<TypeCategory::Complex, 3>,
+ TypeKind<TypeCategory::Complex, 4>, TypeKind<TypeCategory::Complex, 8>,
+ TypeKind<TypeCategory::Complex, 10>, TypeKind<TypeCategory::Complex, 16>,
+ TypeKind<TypeCategory::Logical, 1>, TypeKind<TypeCategory::Logical, 2>,
+ TypeKind<TypeCategory::Logical, 4>, TypeKind<TypeCategory::Logical, 8>,
+ TypeKind<TypeCategory::Character, 1>, TypeKind<TypeCategory::Character, 2>,
+ TypeKind<TypeCategory::Character, 4>>;
+
template <typename FTN_T> struct HostTypeHelper {
using Type = UnsupportedType;
};
@@ -73,14 +101,15 @@ template <typename FTN_T>
inline constexpr Scalar<FTN_T> CastHostToFortran(const HostType<FTN_T> &x) {
static_assert(HostTypeExists<FTN_T>());
if constexpr (FTN_T::category == TypeCategory::Complex &&
- Scalar<FTN_T>::bytesStored() != sizeof(HostType<FTN_T>)) {
+ Scalar<FTN_T>::bytesStored(FTN_T::kind) != sizeof(HostType<FTN_T>)) {
// X87 is usually padded to 12 or 16bytes. Need to cast piecewise for
// complex
return Scalar<FTN_T>{CastHostToFortran<typename FTN_T::Part>(std::real(x)),
CastHostToFortran<typename FTN_T::Part>(std::imag(x))};
} else {
- static_assert(Scalar<FTN_T>::bytesStored() == sizeof(HostType<FTN_T>));
- return Scalar<FTN_T>::FromRawBytes(&x, sizeof(x));
+ static_assert(
+ Scalar<FTN_T>::bytesStored(FTN_T::kind) == sizeof(HostType<FTN_T>));
+ return Scalar<FTN_T>::FromRawBytes(FTN_T::kind, &x, sizeof(x));
}
}
@@ -89,35 +118,36 @@ template <typename FTN_T>
inline constexpr HostType<FTN_T> CastFortranToHost(const Scalar<FTN_T> &x) {
static_assert(HostTypeExists<FTN_T>());
if constexpr (FTN_T::category == TypeCategory::Complex &&
- Scalar<FTN_T>::bytesStored() != sizeof(HostType<FTN_T>)) {
+ Scalar<FTN_T>::bytesStored(FTN_T::kind) != sizeof(HostType<FTN_T>)) {
using FortranPartType = typename FTN_T::Part;
return HostType<FTN_T>{CastFortranToHost<FortranPartType>(x.REAL()),
CastFortranToHost<FortranPartType>(x.AIMAG())};
} else {
- static_assert(Scalar<FTN_T>::bytesStored() == sizeof(HostType<FTN_T>));
+ static_assert(
+ Scalar<FTN_T>::bytesStored(FTN_T::kind) == sizeof(HostType<FTN_T>));
HostType<FTN_T> result;
x.StoreRawBytes(&result, sizeof(result));
return result;
}
}
-template <> struct HostTypeHelper<Type<TypeCategory::Integer, 1>> {
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Integer, 1>> {
using Type = std::int8_t;
};
-template <> struct HostTypeHelper<Type<TypeCategory::Integer, 2>> {
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Integer, 2>> {
using Type = std::int16_t;
};
-template <> struct HostTypeHelper<Type<TypeCategory::Integer, 4>> {
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Integer, 4>> {
using Type = std::int32_t;
};
-template <> struct HostTypeHelper<Type<TypeCategory::Integer, 8>> {
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Integer, 8>> {
using Type = std::int64_t;
};
-template <> struct HostTypeHelper<Type<TypeCategory::Integer, 16>> {
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Integer, 16>> {
#if (defined(__GNUC__) || defined(__clang__)) && defined(__SIZEOF_INT128__)
using Type = __int128_t;
#else
@@ -130,7 +160,7 @@ template <> struct HostTypeHelper<Type<TypeCategory::Integer, 16>> {
template <>
struct HostTypeHelper<
- Type<TypeCategory::Real, common::RealKindForPrecision(24)>> {
+ TypeKind<TypeCategory::Real, common::RealKindForPrecision(24)>> {
// IEEE 754 32bits
using Type = std::conditional_t<sizeof(float) == 4 &&
std::numeric_limits<float>::is_iec559,
@@ -139,7 +169,7 @@ struct HostTypeHelper<
template <>
struct HostTypeHelper<
- Type<TypeCategory::Real, common::RealKindForPrecision(53)>> {
+ TypeKind<TypeCategory::Real, common::RealKindForPrecision(53)>> {
// IEEE 754 64bits
using Type = std::conditional_t<sizeof(double) == 8 &&
std::numeric_limits<double>::is_iec559,
@@ -148,7 +178,7 @@ struct HostTypeHelper<
template <>
struct HostTypeHelper<
- Type<TypeCategory::Real, common::RealKindForPrecision(64)>> {
+ TypeKind<TypeCategory::Real, common::RealKindForPrecision(64)>> {
// X87 80bits
using Type = std::conditional_t<sizeof(long double) >= 10 &&
std::numeric_limits<long double>::digits == 64 &&
@@ -157,12 +187,12 @@ struct HostTypeHelper<
};
#if HAS_QUADMATHLIB
-template <> struct HostTypeHelper<Type<TypeCategory::Real, 16>> {
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Real, 16>> {
// IEEE 754 128bits
using Type = __float128;
};
#else
-template <> struct HostTypeHelper<Type<TypeCategory::Real, 16>> {
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Real, 16>> {
// IEEE 754 128bits
using Type = std::conditional_t<sizeof(long double) == 16 &&
std::numeric_limits<long double>::digits == 113 &&
@@ -171,26 +201,28 @@ template <> struct HostTypeHelper<Type<TypeCategory::Real, 16>> {
};
#endif
-template <int KIND> struct HostTypeHelper<Type<TypeCategory::Complex, KIND>> {
- using RealT = Fortran::evaluate::Type<TypeCategory::Real, KIND>;
+template <int KIND>
+struct HostTypeHelper<TypeKind<TypeCategory::Complex, KIND>> {
+ using RealT = TypeKind<TypeCategory::Real, KIND>;
using Type = std::conditional_t<HostTypeExists<RealT>(),
std::complex<HostType<RealT>>, UnsupportedType>;
};
#if HAS_QUADMATHLIB
-template <> struct HostTypeHelper<Type<TypeCategory::Complex, 16>> {
- using RealT = Fortran::evaluate::Type<TypeCategory::Real, 16>;
+template <> struct HostTypeHelper<TypeKind<TypeCategory::Complex, 16>> {
+ using RealT = TypeKind<TypeCategory::Real, 16>;
using Type = __complex128;
};
#endif
-template <int KIND> struct HostTypeHelper<Type<TypeCategory::Logical, KIND>> {
+template <int KIND>
+struct HostTypeHelper<TypeKind<TypeCategory::Logical, KIND>> {
using Type = std::conditional_t<KIND <= 8, std::uint8_t, UnsupportedType>;
};
-template <int KIND> struct HostTypeHelper<Type<TypeCategory::Character, KIND>> {
- using Type =
- Scalar<typename Fortran::evaluate::Type<TypeCategory::Character, KIND>>;
+template <int KIND>
+struct HostTypeHelper<TypeKind<TypeCategory::Character, KIND>> {
+ using Type = typename TypeKind<TypeCategory::Character, KIND>::Scalar;
};
// Type mapping from host types to F18 types. This need to be placed after all
@@ -203,13 +235,13 @@ struct IndexInTupleHelper<T, std::tuple<TT...>> {
struct UnknownType {}; // the host type does not match any F18 types
template <typename HOST_T> struct FortranTypeHelper {
using HostTypeMapping =
- common::MapTemplate<HostType, AllIntrinsicTypes, std::tuple>;
+ common::MapTemplate<HostType, AllHostKindTypes, std::tuple>;
static constexpr int index{
IndexInTupleHelper<HOST_T, HostTypeMapping>::value};
// Both conditional types are "instantiated", so a valid type must be
// created for invalid index even if not used.
using Type = std::conditional_t<index >= 0,
- std::tuple_element_t<(index >= 0) ? index : 0, AllIntrinsicTypes>,
+ std::tuple_element_t<(index >= 0) ? index : 0, AllHostKindTypes>,
UnknownType>;
};
diff --git a/flang/lib/Evaluate/initial-image.cpp b/flang/lib/Evaluate/initial-image.cpp
index 5da8018b3b3b59..6c82726d63774d 100644
--- a/flang/lib/Evaluate/initial-image.cpp
+++ b/flang/lib/Evaluate/initial-image.cpp
@@ -96,15 +96,16 @@ class AsConstantHelper {
extents_{extents}, padWithZero_{padWithZero}, offset_{offset} {
CHECK(!type.IsPolymorphic());
}
- template <typename T> Result Test() {
+ template <typename T> Result Test(int kind) {
if (T::category != type_.category()) {
return std::nullopt;
}
if constexpr (T::category != TypeCategory::Derived) {
- if (T::kind != type_.kind()) {
+ if (kind != type_.kind()) {
return std::nullopt;
}
}
+ CHECK_KIND(kind, T);
using Const = Constant<T>;
using Scalar = typename Const::Element;
std::optional<uint64_t> optElements{TotalElementCount(extents_)};
@@ -159,27 +160,28 @@ class AsConstantHelper {
return AsGenericExpr(
Const{derived, std::move(typedValue), std::move(extents_)});
} else if constexpr (T::category == TypeCategory::Character) {
- auto length{static_cast<ConstantSubscript>(stride) / T::kind};
+ auto length{static_cast<ConstantSubscript>(stride) / kind};
llvm::SmallVector<char, 256> buffer;
const char *data{GetTailPaddedData(offset_, elements * stride, buffer)};
for (std::size_t j{0}; j < elements; ++j) {
- typedValue[j] = value::Character<T::kind>::FromRawBytes(
- data + j * stride, length * T::kind);
+ typedValue[j] = value::CharacterValue::FromRawBytes(
+ kind, data + j * stride, length * kind);
}
return AsGenericExpr(
- Const{length, std::move(typedValue), std::move(extents_)});
+ Const{kind, length, std::move(typedValue), std::move(extents_)});
} else {
// Lengthless intrinsic type
llvm::SmallVector<char, 256> buffer;
const char *data{GetTailPaddedData(offset_,
- elements == 0
- ? 0
- : (elements - 1) * stride + evaluate::Scalar<T>::bytesStored(),
+ elements == 0 ? 0
+ : (elements - 1) * stride +
+ evaluate::Scalar<T>::bytesStored(kind),
buffer)};
// TODO endianness
- LoadSerialValues(
- data, llvm::MutableArrayRef<evaluate::Scalar<T>>(typedValue), stride);
- return AsGenericExpr(Const{std::move(typedValue), std::move(extents_)});
+ LoadSerialValues(kind, data,
+ llvm::MutableArrayRef<evaluate::Scalar<T>>(typedValue), stride);
+ return AsGenericExpr(
+ Const{kind, std::move(typedValue), std::move(extents_)});
}
}
@@ -219,7 +221,7 @@ std::optional<Expr<SomeType>> InitialImage::AsConstant(FoldingContext &context,
const DynamicType &type, std::optional<std::int64_t> charLength,
const ConstantSubscripts &extents, bool padWithZero,
ConstantSubscript offset) const {
- return common::SearchTypes(AsConstantHelper{
+ return SearchTypes(AsConstantHelper{
context, type, charLength, extents, *this, padWithZero, offset});
}
diff --git a/flang/lib/Evaluate/int-power.h b/flang/lib/Evaluate/int-power.h
index 2ee012ceb77a38..3acdec06286f77 100644
--- a/flang/lib/Evaluate/int-power.h
+++ b/flang/lib/Evaluate/int-power.h
@@ -19,9 +19,11 @@ template <typename REAL, typename INT>
ValueWithRealFlags<REAL> TimesIntPowerOf(const REAL &factor, const REAL &base,
const INT &power,
Rounding rounding = TargetCharacteristics::defaultRounding) {
+ const int realKind{base.kind()};
+ CHECK(factor.kind() == base.kind());
ValueWithRealFlags<REAL> result{factor};
if (base.IsNotANumber()) {
- result.value = REAL::NotANumber();
+ result.value = REAL::NotANumber(realKind);
result.flags.set(RealFlag::InvalidArgument);
} else if (power.IsZero()) {
if (base.IsZero() || base.IsInfinite()) {
@@ -31,7 +33,7 @@ ValueWithRealFlags<REAL> TimesIntPowerOf(const REAL &factor, const REAL &base,
bool negativePower{power.IsNegative()};
INT absPower{power.ABS().value};
REAL squares{base};
- int nbits{INT::bits - absPower.LEADZ()};
+ int nbits{absPower.bits() - absPower.LEADZ()};
for (int j{0}; j < nbits; ++j) {
if (j > 0) { // avoid spurious overflow on last iteration
squares =
@@ -54,7 +56,9 @@ ValueWithRealFlags<REAL> TimesIntPowerOf(const REAL &factor, const REAL &base,
template <typename REAL, typename INT>
ValueWithRealFlags<REAL> IntPower(const REAL &base, const INT &power,
Rounding rounding = TargetCharacteristics::defaultRounding) {
- REAL one{REAL::FromInteger(INT{1}).value};
+ const int realKind{base.kind()};
+ const int intKind{power.kind()};
+ REAL one{REAL::FromInteger(realKind, INT{intKind, 1}).value};
return TimesIntPowerOf(one, base, power, rounding);
}
} // namespace Fortran::evaluate
diff --git a/flang/lib/Evaluate/intrinsics-library.cpp b/flang/lib/Evaluate/intrinsics-library.cpp
index f2c1a7bfaf50b9..adfc295b97a2cb 100644
--- a/flang/lib/Evaluate/intrinsics-library.cpp
+++ b/flang/lib/Evaluate/intrinsics-library.cpp
@@ -152,12 +152,13 @@ template <typename FuncType, typename TR, typename... TA, size_t... I>
static Expr<SomeType> ApplyHostFunctionHelper(FuncType func,
FoldingContext &context, std::vector<Expr<SomeType>> &&args,
std::index_sequence<I...>) {
+ const int kind{TR::kind};
host::HostFloatingPointEnvironment hostFPE;
hostFPE.SetUpHostFloatingPointEnvironment(context);
host::HostType<TR> hostResult{};
Scalar<TR> result{};
std::tuple<Scalar<TA>...> scalarArgs{
- GetScalarConstantValue<TA>(args[I]).value()...};
+ GetScalarConstantValue<typename TA::FortranType>(args[I]).value()...};
if (context.targetCharacteristics().areSubnormalsFlushedToZero() &&
!hostFPE.hasSubnormalFlushingHardwareControl()) {
hostResult = func(host::CastFortranToHost<TA>(
@@ -171,7 +172,8 @@ static Expr<SomeType> ApplyHostFunctionHelper(FuncType func,
CheckFloatingPointIssues<TR>(hostFPE, result);
}
hostFPE.CheckAndRestoreFloatingPointEnvironment(context);
- return AsGenericExpr(Constant<TR>(std::move(result)));
+ return AsGenericExpr(
+ Constant<typename TR::FortranType>(kind, std::move(result)));
}
template <typename HostTR, typename... HostTA>
Expr<SomeType> ApplyHostFunction(FuncPointer<HostTR, HostTA...> func,
@@ -823,9 +825,12 @@ static const Expr<SomeType> &GetArg(
template <typename T>
static bool IsInRange(const Expr<T> &expr, int lb, int ub) {
+ const int kind{expr.kind()};
if (auto scalar{GetScalarConstantValue<T>(expr)}) {
- auto lbValue{Scalar<T>::FromInteger(value::Integer<8>{lb}).value};
- auto ubValue{Scalar<T>::FromInteger(value::Integer<8>{ub}).value};
+ auto lbValue{
+ Scalar<T>::FromInteger(kind, value::IntegerValue{1, lb}).value};
+ auto ubValue{
+ Scalar<T>::FromInteger(kind, value::IntegerValue{1, ub}).value};
return Satisfies(RelationalOperator::LE, lbValue.Compare(*scalar)) &&
Satisfies(RelationalOperator::LE, scalar->Compare(ubValue));
}
@@ -859,9 +864,10 @@ static bool VerifyStrictlyPositiveIfReal(
const bool isStrictlyPositive{std::visit(
[&](const auto &x) -> bool {
using T = typename std::decay_t<decltype(x)>::Result;
+ const int kind{x.kind()};
auto scalar{GetScalarConstantValue<T>(x)};
return Satisfies(
- RelationalOperator::LT, Scalar<T>{}.Compare(*scalar));
+ RelationalOperator::LT, Scalar<T>::Zero(kind).Compare(*scalar));
},
someReal->u)};
if (!isStrictlyPositive) {
diff --git a/flang/lib/Evaluate/logical.cpp b/flang/lib/Evaluate/logical.cpp
deleted file mode 100644
index 520d11fb967f4d..00000000000000
--- a/flang/lib/Evaluate/logical.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-//===-- lib/Evaluate/logical.cpp ------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "flang/Evaluate/logical.h"
-
-namespace Fortran::evaluate::value {
-
-template class Logical<8>;
-template class Logical<16>;
-template class Logical<32>;
-template class Logical<64>;
-} // namespace Fortran::evaluate::value
diff --git a/flang/lib/Evaluate/real-value-impl.cpp b/flang/lib/Evaluate/real-value-impl.cpp
index 182533f61de5ec..738f461af2d889 100644
--- a/flang/lib/Evaluate/real-value-impl.cpp
+++ b/flang/lib/Evaluate/real-value-impl.cpp
@@ -9,10 +9,14 @@
#include "real-value-impl.h"
#include "integer-value-impl.h"
#include "flang/Common/idioms.h"
+#include "flang/Decimal/decimal.h"
#include "flang/Evaluate/integer-value.h"
+#include "flang/Evaluate/real-value.h"
+#include "flang/Evaluate/rounding-bits.h"
#include "llvm/Support/raw_ostream.h"
#include <cmath>
#include <cstring>
+#include <new>
#include <string>
namespace Fortran::evaluate::value {
diff --git a/flang/lib/Evaluate/shape.cpp b/flang/lib/Evaluate/shape.cpp
index 924b6cbdddd5eb..4d10951fe65015 100644
--- a/flang/lib/Evaluate/shape.cpp
+++ b/flang/lib/Evaluate/shape.cpp
@@ -53,7 +53,7 @@ Shape GetShapeHelper::ConstantShape(const Constant<ExtentType> &arrayConstant) {
std::size_t dimensions{arrayConstant.size()};
for (std::size_t j{0}; j < dimensions; ++j) {
Scalar<ExtentType> extent{arrayConstant.values().at(j)};
- result.emplace_back(MaybeExtentExpr{ExtentExpr{std::move(extent)}});
+ result.emplace_back(MakeExtentExpr(std::move(extent)));
}
return result;
}
@@ -98,7 +98,8 @@ std::optional<ExtentExpr> AsExtentArrayExpr(const Shape &shape) {
return std::nullopt;
}
}
- return ExtentExpr{ArrayConstructor<ExtentType>{std::move(values)}};
+ return ExtentExpr{
+ ArrayConstructor<ExtentType>{SubscriptIntegerKind, std::move(values)}};
}
std::optional<Constant<ExtentType>> AsConstantShape(
@@ -116,9 +117,10 @@ Constant<SubscriptInteger> AsConstantShape(const ConstantSubscripts &shape) {
using IntType = Scalar<SubscriptInteger>;
std::vector<IntType> result;
for (auto dim : shape) {
- result.emplace_back(dim);
+ result.emplace_back(SubscriptIntegerKind, dim);
}
- return {std::move(result), ConstantSubscripts{GetRank(shape)}};
+ return {SubscriptIntegerKind, std::move(result),
+ ConstantSubscripts{GetRank(shape)}};
}
ConstantSubscripts AsConstantExtents(const Constant<ExtentType> &shape) {
@@ -141,7 +143,7 @@ std::optional<ConstantSubscripts> AsConstantExtents(
Shape AsShape(const ConstantSubscripts &shape) {
Shape result;
for (const auto &extent : shape) {
- result.emplace_back(ExtentExpr{extent});
+ result.emplace_back(MakeExtentExpr(extent));
}
return result;
}
@@ -176,8 +178,8 @@ static ExtentExpr ComputeTripCount(
ExtentExpr span{
(std::move(upper) - std::move(lower) + std::move(strideCopy)) /
std::move(stride)};
- return ExtentExpr{
- Extremum<ExtentType>{Ordering::Greater, std::move(span), ExtentExpr{0}}};
+ return ExtentExpr{Extremum<ExtentType>{
+ Ordering::Greater, std::move(span), MakeExtentExpr(0)}};
}
ExtentExpr CountTrips(
@@ -201,7 +203,7 @@ MaybeExtentExpr CountTrips(MaybeExtentExpr &&lower, MaybeExtentExpr &&upper,
}
MaybeExtentExpr GetSize(Shape &&shape) {
- ExtentExpr extent{1};
+ ExtentExpr extent{MakeExtentExpr(1)};
for (auto &&dim : std::move(shape)) {
if (dim) {
extent = std::move(extent) * std::move(*dim);
@@ -245,10 +247,10 @@ class GetLowerBoundHelper
int d, FoldingContext *context, bool invariantOnly)
: Base{*this}, dimension_{d}, context_{context},
invariantOnly_{invariantOnly} {}
- static Result Default() { return Result{1}; }
+ static Result Default() { return Result{MakeExtentExpr(1)}; }
static Result Combine(Result &&, Result &&) {
// Operator results and array references always have lower bounds == 1
- return Result{1};
+ return MakeExtentExpr(1);
}
Result GetLowerBound(const Symbol &symbol0, NamedEntity &&base) const {
@@ -281,10 +283,10 @@ class GetLowerBoundHelper
if (context_) {
auto extent{ToInt64(Fold(*context_,
ExtentExpr{*ubound} - ExtentExpr{*lbound} +
- ExtentExpr{1}))};
+ MakeExtentExpr(1)))};
if (extent) {
if (extent <= 0) {
- return Result{1};
+ return MakeExtentExpr(1);
}
ok = true;
} else {
@@ -294,7 +296,7 @@ class GetLowerBoundHelper
auto ubValue{ToInt64(*ubound)};
if (lbValue && ubValue) {
if (*lbValue > *ubValue) {
- return Result{1};
+ return MakeExtentExpr(1);
}
ok = true;
} else {
@@ -307,7 +309,7 @@ class GetLowerBoundHelper
return *lbound;
}
} else {
- return Result{1};
+ return MakeExtentExpr(1);
}
}
if (IsDescriptor(symbol)) {
@@ -318,7 +320,7 @@ class GetLowerBoundHelper
} else if (const auto *assoc{
symbol.detailsIf<semantics::AssocEntityDetails>()}) {
if (assoc->IsAssumedSize()) { // RANK(*)
- return Result{1};
+ return MakeExtentExpr(1);
} else if (assoc->IsAssumedRank()) { // RANK DEFAULT
} else if (assoc->rank()) { // RANK(n)
const Symbol &resolved{ResolveAssociations(symbol)};
@@ -343,7 +345,7 @@ class GetLowerBoundHelper
if constexpr (LBOUND_SEMANTICS) {
return Result{};
} else {
- return Result{1};
+ return MakeExtentExpr(1);
}
}
@@ -356,7 +358,7 @@ class GetLowerBoundHelper
return GetLowerBound(
component.GetLastSymbol(), NamedEntity{common::Clone(component)});
}
- return Result{1};
+ return MakeExtentExpr(1);
}
template <typename T> Result operator()(const Expr<T> &expr) const {
@@ -366,10 +368,10 @@ class GetLowerBoundHelper
if (const auto *con{std::get_if<Constant<T>>(&expr.u)}) {
ConstantSubscripts lb{con->lbounds()};
if (dimension_ < GetRank(lb)) {
- return Result{lb[dimension_]};
+ return MakeExtentExpr(lb[dimension_]);
}
} else { // operation
- return Result{1};
+ return MakeExtentExpr(1);
}
} else {
return (*this)(expr.u);
@@ -377,7 +379,7 @@ class GetLowerBoundHelper
if constexpr (LBOUND_SEMANTICS) {
return Result{};
} else {
- return Result{1};
+ return MakeExtentExpr(1);
}
}
@@ -462,9 +464,9 @@ static MaybeExtentExpr GetNonNegativeExtent(
std::optional<ConstantSubscript> lval{ToInt64(lbound)};
if (uval && lval) {
if (*uval < *lval) {
- return ExtentExpr{0};
+ return MakeExtentExpr(0);
} else {
- return ExtentExpr{*uval - *lval + 1};
+ return MakeExtentExpr(*uval - *lval + 1);
}
} else if (lbound && ubound && lbound->Rank() == 0 && ubound->Rank() == 0 &&
(!invariantOnly ||
@@ -473,11 +475,11 @@ static MaybeExtentExpr GetNonNegativeExtent(
// result is never negative
if (lval.value_or(0) == 1) {
return ExtentExpr{Extremum<SubscriptInteger>{
- Ordering::Greater, ExtentExpr{0}, common::Clone(*ubound)}};
+ Ordering::Greater, MakeExtentExpr(0), common::Clone(*ubound)}};
} else {
- return ExtentExpr{
- Extremum<SubscriptInteger>{Ordering::Greater, ExtentExpr{0},
- common::Clone(*ubound) - common::Clone(*lbound) + ExtentExpr{1}}};
+ return ExtentExpr{Extremum<SubscriptInteger>{Ordering::Greater,
+ MakeExtentExpr(0),
+ common::Clone(*ubound) - common::Clone(*lbound) + MakeExtentExpr(1)}};
}
} else {
return std::nullopt;
@@ -598,7 +600,7 @@ MaybeExtentExpr ComputeUpperBound(
if (ToInt64(lower).value_or(0) == 1) {
return std::move(*extent);
} else {
- return std::move(*extent) + std::move(lower) - ExtentExpr{1};
+ return std::move(*extent) + std::move(lower) - MakeExtentExpr(1);
}
} else {
return std::nullopt;
@@ -658,7 +660,7 @@ static MaybeExtentExpr GetExplicitUBOUND(FoldingContext *context,
if (cstExtent > 0) {
return *ubound;
} else if (cstExtent == 0) {
- return ExtentExpr{0};
+ return MakeExtentExpr(0);
}
}
}
@@ -992,8 +994,7 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
if (semantics::IsAssumedRank(*call.arguments().front())) {
return Shape{MaybeExtentExpr{}};
} else {
- return Shape{
- MaybeExtentExpr{ExtentExpr{call.arguments().front()->Rank()}}};
+ return Shape{MakeExtentExpr(call.arguments().front()->Rank())};
}
}
} else if (intrinsic->name == "all" || intrinsic->name == "any" ||
@@ -1033,7 +1034,7 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
}
} else {
// xxxLOC(no DIM=) result is vector(1:RANK(ARRAY=))
- return Shape{ExtentExpr{rank}};
+ return Shape{MakeExtentExpr(rank)};
}
}
}
@@ -1043,7 +1044,7 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
}
} else if (intrinsic->name == "lcobound" || intrinsic->name == "ucobound") {
if (call.arguments().size() == 3 && !call.arguments().at(1).has_value()) {
- return Shape(1, ExtentExpr{GetCorank(call.arguments().at(0))});
+ return Shape(1, MakeExtentExpr(GetCorank(call.arguments().at(0))));
}
} else if (intrinsic->name == "matmul") {
if (call.arguments().size() == 2) {
@@ -1074,12 +1075,12 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
if (auto arraySize{GetSize(std::move(*arrayShape))}) {
ActualArguments toMerge{
ActualArgument{AsGenericExpr(std::move(*arraySize))},
- ActualArgument{AsGenericExpr(ExtentExpr{0})},
+ ActualArgument{AsGenericExpr(MakeExtentExpr(0))},
common::Clone(call.arguments().at(1))};
auto specific{context_->intrinsics().Probe(
CallCharacteristics{"merge"}, toMerge, *context_)};
CHECK(specific);
- return Shape{ExtentExpr{FunctionRef<ExtentType>{
+ return Shape{ExtentExpr{FunctionRef<ExtentType>{ExtentIntKind,
ProcedureDesignator{std::move(specific->specificIntrinsic)},
std::move(specific->arguments)}}};
}
@@ -1087,7 +1088,7 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
} else {
// Non-scalar MASK= -> [COUNT(mask, KIND=extent_kind)]
ActualArgument kindArg{
- AsGenericExpr(Constant<ExtentType>{ExtentType::kind})};
+ AsGenericExpr(MakeExtentConstant(ExtentIntKind))};
kindArg.set_keyword(context_->SaveTempName("kind"));
ActualArguments toCount{
ActualArgument{common::Clone(
@@ -1096,7 +1097,7 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
auto specific{context_->intrinsics().Probe(
CallCharacteristics{"count"}, toCount, *context_)};
CHECK(specific);
- return Shape{ExtentExpr{FunctionRef<ExtentType>{
+ return Shape{ExtentExpr{FunctionRef<ExtentType>{ExtentIntKind,
ProcedureDesignator{std::move(specific->specificIntrinsic)},
std::move(specific->arguments)}}};
}
@@ -1108,8 +1109,8 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
if (const auto *shapeExpr{
call.arguments().at(1).value().UnwrapExpr()}) {
auto shapeArg{std::get<Expr<SomeInteger>>(shapeExpr->u)};
- if (auto result{AsShapeResult(
- ConvertToType<ExtentType>(std::move(shapeArg)))}) {
+ if (auto result{AsShapeResult(ConvertToType<ExtentType>(
+ ExtentIntKind, std::move(shapeArg)))}) {
return result;
}
}
@@ -1128,8 +1129,10 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
if (*dim >= 1 &&
static_cast<std::size_t>(*dim) <= arrayShape->size() + 1) {
arrayShape->emplace(arrayShape->begin() + *dim - 1,
- Extremum<SubscriptInteger>{Ordering::Greater, ExtentExpr{0},
- ConvertToType<ExtentType>(common::Clone(*nCopies))});
+ Extremum<SubscriptInteger>{Ordering::Greater,
+ MakeExtentExpr(0),
+ ConvertToType<ExtentType>(
+ ExtentIntKind, common::Clone(*nCopies))});
return std::move(*arrayShape);
}
}
@@ -1140,8 +1143,8 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
// SIZE= is present; shape is vector [SIZE=]
if (const auto *size{
UnwrapExpr<Expr<SomeInteger>>(call.arguments().at(2))}) {
- return Shape{
- MaybeExtentExpr{ConvertToType<ExtentType>(common::Clone(*size))}};
+ return Shape{MaybeExtentExpr{
+ ConvertToType<ExtentType>(ExtentIntKind, common::Clone(*size))}};
}
} else if (context_) {
if (auto moldTypeAndShape{characteristics::TypeAndShape::Characterize(
@@ -1163,7 +1166,7 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
*sourceBytes = Fold(*context_, std::move(*sourceBytes));
if (auto sourceBytesConst{ToInt64(*sourceBytes)}) {
if (*sourceBytesConst == 0) {
- return Shape{ExtentExpr{0}};
+ return Shape{MakeExtentExpr(0)};
}
}
if (auto moldElementBytes{
@@ -1175,7 +1178,8 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
if (moldElementBytesConst && *moldElementBytesConst != 0) {
ExtentExpr extent{Fold(*context_,
(std::move(*sourceBytes) +
- common::Clone(*moldElementBytes) - ExtentExpr{1}) /
+ common::Clone(*moldElementBytes) -
+ MakeExtentExpr(1)) /
common::Clone(*moldElementBytes))};
return Shape{MaybeExtentExpr{std::move(extent)}};
}
@@ -1188,7 +1192,7 @@ auto GetShapeHelper::operator()(const ProcedureRef &call) const -> Result {
} else if (intrinsic->name == "this_image") {
if (call.arguments().size() == 2) {
// THIS_IMAGE(coarray, no DIM, [TEAM])
- return Shape(1, ExtentExpr{GetCorank(call.arguments().at(0))});
+ return Shape(1, MakeExtentExpr(GetCorank(call.arguments().at(0))));
}
} else if (intrinsic->name == "transpose") {
if (call.arguments().size() >= 1) {
diff --git a/flang/lib/Evaluate/static-data.cpp b/flang/lib/Evaluate/static-data.cpp
index 9063de0f3a9380..bcc19913bd5436 100644
--- a/flang/lib/Evaluate/static-data.cpp
+++ b/flang/lib/Evaluate/static-data.cpp
@@ -54,6 +54,12 @@ StaticDataObject &StaticDataObject::Push(
return *this;
}
+StaticDataObject &StaticDataObject::Push(
+ const value::CharacterValue &v, bool bigEndian) {
+ return v.withStdString(
+ [&](const auto &s) -> StaticDataObject & { return Push(s, bigEndian); });
+}
+
std::optional<std::string> StaticDataObject::AsString() const {
if (itemBytes_ <= 1) {
std::string result;
diff --git a/flang/lib/Evaluate/target.cpp b/flang/lib/Evaluate/target.cpp
index c4432781483043..47442634355c20 100644
--- a/flang/lib/Evaluate/target.cpp
+++ b/flang/lib/Evaluate/target.cpp
@@ -162,10 +162,10 @@ class SelectedIntKindVisitor {
: targetCharacteristics_{targetCharacteristics}, precision_{p} {}
using Result = std::optional<int>;
using Types = IntegerTypes;
- template <typename T> Result Test() const {
- if (Scalar<T>::RANGE >= precision_ &&
- targetCharacteristics_.IsTypeEnabled(T::category, T::kind)) {
- return T::kind;
+ template <typename T> Result Test(int kind) const {
+ if (Scalar<T>::RANGE(kind) >= precision_ &&
+ targetCharacteristics_.IsTypeEnabled(T::category, kind)) {
+ return kind;
} else {
return std::nullopt;
}
@@ -177,8 +177,7 @@ class SelectedIntKindVisitor {
};
int TargetCharacteristics::SelectedIntKind(std::int64_t precision) const {
- if (auto kind{
- common::SearchTypes(SelectedIntKindVisitor{*this, precision})}) {
+ if (auto kind{SearchTypes(SelectedIntKindVisitor{*this, precision})}) {
return *kind;
} else {
return -1;
@@ -193,10 +192,10 @@ class SelectedLogicalKindVisitor {
: targetCharacteristics_{targetCharacteristics}, bits_{bits} {}
using Result = std::optional<int>;
using Types = LogicalTypes;
- template <typename T> Result Test() const {
- if (Scalar<T>::bits >= bits_ &&
- targetCharacteristics_.IsTypeEnabled(T::category, T::kind)) {
- return T::kind;
+ template <typename T> Result Test(int kind) const {
+ if (Scalar<T>::bits(kind) >= bits_ &&
+ targetCharacteristics_.IsTypeEnabled(T::category, kind)) {
+ return kind;
} else {
return std::nullopt;
}
@@ -208,7 +207,7 @@ class SelectedLogicalKindVisitor {
};
int TargetCharacteristics::SelectedLogicalKind(std::int64_t bits) const {
- if (auto kind{common::SearchTypes(SelectedLogicalKindVisitor{*this, bits})}) {
+ if (auto kind{SearchTypes(SelectedLogicalKindVisitor{*this, bits})}) {
return *kind;
} else {
return -1;
@@ -224,10 +223,11 @@ class SelectedRealKindVisitor {
r} {}
using Result = std::optional<int>;
using Types = RealTypes;
- template <typename T> Result Test() const {
- if (Scalar<T>::PRECISION >= precision_ && Scalar<T>::RANGE >= range_ &&
- targetCharacteristics_.IsTypeEnabled(T::category, T::kind)) {
- return {T::kind};
+ template <typename T> Result Test(int kind) const {
+ if (Scalar<T>::PRECISION(kind) >= precision_ &&
+ Scalar<T>::RANGE(kind) >= range_ &&
+ targetCharacteristics_.IsTypeEnabled(T::category, kind)) {
+ return {kind};
} else {
return std::nullopt;
}
@@ -243,15 +243,15 @@ int TargetCharacteristics::SelectedRealKind(
if (radix != 2) {
return -5;
}
- if (auto kind{common::SearchTypes(
- SelectedRealKindVisitor{*this, precision, range})}) {
+ if (auto kind{
+ SearchTypes(SelectedRealKindVisitor{*this, precision, range})}) {
return *kind;
}
// No kind has both sufficient precision and sufficient range.
// The negative return value encodes whether any kinds exist that
// could satisfy either constraint independently.
- bool pOK{common::SearchTypes(SelectedRealKindVisitor{*this, precision, 0})};
- bool rOK{common::SearchTypes(SelectedRealKindVisitor{*this, 0, range})};
+ bool pOK{SearchTypes(SelectedRealKindVisitor{*this, precision, 0})};
+ bool rOK{SearchTypes(SelectedRealKindVisitor{*this, 0, range})};
if (pOK) {
if (rOK) {
return -4;
diff --git a/flang/lib/Evaluate/tools.cpp b/flang/lib/Evaluate/tools.cpp
index 5eceb4562c4ba2..85d2a8f752d0f0 100644
--- a/flang/lib/Evaluate/tools.cpp
+++ b/flang/lib/Evaluate/tools.cpp
@@ -155,23 +155,27 @@ ConvertRealOperandsResult ConvertRealOperands(
},
[&](Expr<SomeInteger> &&ix,
Expr<SomeReal> &&ry) -> ConvertRealOperandsResult {
+ auto converted{ConvertTo(ry, std::move(ix))};
return {AsSameKindExprs<TypeCategory::Real>(
- ConvertTo(ry, std::move(ix)), std::move(ry))};
+ std::move(converted), std::move(ry))};
},
[&](Expr<SomeUnsigned> &&ix,
Expr<SomeReal> &&ry) -> ConvertRealOperandsResult {
+ auto converted{ConvertTo(ry, std::move(ix))};
return {AsSameKindExprs<TypeCategory::Real>(
- ConvertTo(ry, std::move(ix)), std::move(ry))};
+ std::move(converted), std::move(ry))};
},
[&](Expr<SomeReal> &&rx,
Expr<SomeInteger> &&iy) -> ConvertRealOperandsResult {
+ auto converted{ConvertTo(rx, std::move(iy))};
return {AsSameKindExprs<TypeCategory::Real>(
- std::move(rx), ConvertTo(rx, std::move(iy)))};
+ std::move(rx), std::move(converted))};
},
[&](Expr<SomeReal> &&rx,
Expr<SomeUnsigned> &&iy) -> ConvertRealOperandsResult {
+ auto converted{ConvertTo(rx, std::move(iy))};
return {AsSameKindExprs<TypeCategory::Real>(
- std::move(rx), ConvertTo(rx, std::move(iy)))};
+ std::move(rx), std::move(converted))};
},
[&](Expr<SomeReal> &&rx,
Expr<SomeReal> &&ry) -> ConvertRealOperandsResult {
@@ -212,13 +216,15 @@ ConvertRealOperandsResult ConvertRealOperands(
},
[&](Expr<SomeReal> &&rx,
BOZLiteralConstant &&by) -> ConvertRealOperandsResult {
+ auto converted{ConvertTo(rx, std::move(by))};
return {AsSameKindExprs<TypeCategory::Real>(
- std::move(rx), ConvertTo(rx, std::move(by)))};
+ std::move(rx), std::move(converted))};
},
[&](BOZLiteralConstant &&bx,
Expr<SomeReal> &&ry) -> ConvertRealOperandsResult {
+ auto converted{ConvertTo(ry, std::move(bx))};
return {AsSameKindExprs<TypeCategory::Real>(
- ConvertTo(ry, std::move(bx)), std::move(ry))};
+ std::move(converted), std::move(ry))};
},
[&](BOZLiteralConstant &&,
BOZLiteralConstant &&) -> ConvertRealOperandsResult {
@@ -259,22 +265,23 @@ std::optional<Expr<SomeType>> MixedRealLeft(
return Package(common::visit(
[&](auto &&rxk) -> Expr<SomeReal> {
using resultType = ResultType<decltype(rxk)>;
+ const int resultKind = rxk.kind();
if constexpr (std::is_same_v<OPR<resultType>, Power<resultType>>) {
- return AsCategoryExpr(
- RealToIntPower<resultType>{std::move(rxk), std::move(iy)});
+ return AsCategoryExpr(RealToIntPower<resultType>{
+ resultKind, std::move(rxk), std::move(iy)});
}
// G++ 8.1.0 emits bogus warnings about missing return statements if
// this statement is wrapped in an "else", as it should be.
- return AsCategoryExpr(OPR<resultType>{
- std::move(rxk), ConvertToType<resultType>(std::move(iy))});
+ auto converted{ConvertToType<resultType>(resultKind, std::move(iy))};
+ return AsCategoryExpr(
+ OPR<resultType>{resultKind, std::move(rxk), std::move(converted)});
},
std::move(rx.u)));
}
-template <int KIND>
-Expr<SomeComplex> MakeComplex(Expr<Type<TypeCategory::Real, KIND>> &&re,
- Expr<Type<TypeCategory::Real, KIND>> &&im) {
- return AsCategoryExpr(ComplexConstructor<KIND>{std::move(re), std::move(im)});
+static Expr<SomeComplex> MakeComplex(
+ Expr<Type<TypeCategory::Real>> &&re, Expr<Type<TypeCategory::Real>> &&im) {
+ return AsCategoryExpr(ComplexConstructor{std::move(re), std::move(im)});
}
std::optional<Expr<SomeComplex>> ConstructComplex(
@@ -304,83 +311,17 @@ std::optional<Expr<SomeComplex>> ConstructComplex(
// Extracts the real or imaginary part of the result of a COMPLEX
// expression, when that expression is simple enough to be duplicated.
template <bool GET_IMAGINARY> struct ComplexPartExtractor {
+ // NOTE: The the code in this class was dead code; a std/common::withStdString
+ // was forgotten such that the overload resolution was looking for a
+ // std::variant<...> overload instead for the runtime content of the
+ // std::variant. There was no specialization for std::variant so this fallback
+ // overload was matched unconditionally. The intended overloads were broken
+ // due to never been checked by the compiler, because they were never
+ // instantiated. As a result, the complex expression is just never considered
+ // "simple enough".
template <typename A> static std::optional<Expr<SomeReal>> Get(const A &) {
return std::nullopt;
}
-
- template <int KIND>
- static std::optional<Expr<SomeReal>> Get(
- const Parentheses<Type<TypeCategory::Complex, KIND>> &kz) {
- if (auto x{Get(kz.left())}) {
- return AsGenericExpr(AsSpecificExpr(
- Parentheses<Type<TypeCategory::Real, KIND>>{std::move(*x)}));
- } else {
- return std::nullopt;
- }
- }
-
- template <int KIND>
- static std::optional<Expr<SomeReal>> Get(
- const Negate<Type<TypeCategory::Complex, KIND>> &kz) {
- if (auto x{Get(kz.left())}) {
- return AsGenericExpr(AsSpecificExpr(
- Negate<Type<TypeCategory::Real, KIND>>{std::move(*x)}));
- } else {
- return std::nullopt;
- }
- }
-
- template <int KIND>
- static std::optional<Expr<SomeReal>> Get(
- const Convert<Type<TypeCategory::Complex, KIND>, TypeCategory::Complex>
- &kz) {
- if (auto x{Get(kz.left())}) {
- return AsGenericExpr(AsSpecificExpr(
- Convert<Type<TypeCategory::Real, KIND>, TypeCategory::Real>{
- AsGenericExpr(std::move(*x))}));
- } else {
- return std::nullopt;
- }
- }
-
- template <int KIND>
- static std::optional<Expr<SomeReal>> Get(const ComplexConstructor<KIND> &kz) {
- return GET_IMAGINARY ? Get(kz.right()) : Get(kz.left());
- }
-
- template <int KIND>
- static std::optional<Expr<SomeReal>> Get(
- const Constant<Type<TypeCategory::Complex, KIND>> &kz) {
- if (auto cz{kz.GetScalarValue()}) {
- return AsGenericExpr(
- AsSpecificExpr(GET_IMAGINARY ? cz->AIMAG() : cz->REAL()));
- } else {
- return std::nullopt;
- }
- }
-
- template <int KIND>
- static std::optional<Expr<SomeReal>> Get(
- const Designator<Type<TypeCategory::Complex, KIND>> &kz) {
- if (const auto *symbolRef{std::get_if<SymbolRef>(&kz.u)}) {
- return AsGenericExpr(AsSpecificExpr(
- Designator<Type<TypeCategory::Complex, KIND>>{ComplexPart{
- DataRef{*symbolRef},
- GET_IMAGINARY ? ComplexPart::Part::IM : ComplexPart::Part::RE}}));
- } else {
- return std::nullopt;
- }
- }
-
- template <int KIND>
- static std::optional<Expr<SomeReal>> Get(
- const Expr<Type<TypeCategory::Complex, KIND>> &kz) {
- return Get(kz.u);
- }
-
- static std::optional<Expr<SomeReal>> Get(const Expr<SomeComplex> &z) {
- return Get(z.u);
- }
};
// Convert REAL to COMPLEX of the same kind. Preserving the real operand kind
@@ -391,8 +332,10 @@ Expr<SomeComplex> PromoteRealToComplex(Expr<SomeReal> &&someX) {
return common::visit(
[](auto &&x) {
using RT = ResultType<decltype(x)>;
- return AsCategoryExpr(ComplexConstructor<RT::kind>{
- std::move(x), AsExpr(Constant<RT>{Scalar<RT>{}})});
+ int rtKind{x.kind()};
+ return AsCategoryExpr(ComplexConstructor{std::move(x),
+ AsExpr(
+ Constant<RT>{rtKind, Scalar<RT>::Zero(rtKind), RT{rtKind}})});
},
std::move(someX.u));
}
@@ -409,9 +352,10 @@ std::optional<Expr<SomeType>> MixedComplexLeft(
// COMPLEX**INTEGER is a special case that doesn't convert the exponent.
return Package(common::visit(
[&](const auto &zxk) {
+ const int zxkKind{zxk.kind()};
using Ty = ResultType<decltype(zxk)>;
- return AsCategoryExpr(AsExpr(
- RealToIntPower<Ty>{common::Clone(zxk), common::Clone(iry)}));
+ return AsCategoryExpr(AsExpr(RealToIntPower<Ty>{
+ zxkKind, common::Clone(zxk), common::Clone(iry)}));
},
zx.u));
}
@@ -488,12 +432,12 @@ Expr<SomeComplex> PromoteMixedComplexReal(
static_assert(XCAT == TypeCategory::Real || YCAT == TypeCategory::Real);
return common::visit(
[&](const auto &kx, const auto &ky) {
- constexpr int maxKind{std::max(
- ResultType<decltype(kx)>::kind, ResultType<decltype(ky)>::kind)};
- using ZTy = Type<TypeCategory::Complex, maxKind>;
+ int maxKind{std::max(kx.kind(), ky.kind())};
+ using ZTy = Type<TypeCategory::Complex>;
+ auto cx{ConvertToType<ZTy>(maxKind, std::move(x))};
+ auto cy{ConvertToType<ZTy>(maxKind, std::move(y))};
return Expr<SomeComplex>{
- Expr<ZTy>{OPR<ZTy>{ConvertToType<ZTy>(std::move(x)),
- ConvertToType<ZTy>(std::move(y))}}};
+ Expr<ZTy>{OPR<ZTy>{maxKind, std::move(cx), std::move(cy)}}};
},
x.u, y.u);
}
@@ -527,9 +471,11 @@ std::optional<Expr<SomeType>> NumericOperation(
return Package(common::visit(
[&](auto &&ryk) -> Expr<SomeReal> {
using resultType = ResultType<decltype(ryk)>;
- return AsCategoryExpr(
- OPR<resultType>{ConvertToType<resultType>(std::move(ix)),
- std::move(ryk)});
+ const int resultKind{ryk.kind()};
+ auto converted{
+ ConvertToType<resultType>(resultKind, std::move(ix))};
+ return AsCategoryExpr(OPR<resultType>{
+ resultKind, std::move(converted), std::move(ryk)});
},
std::move(ry.u)));
},
@@ -543,8 +489,9 @@ std::optional<Expr<SomeType>> NumericOperation(
MixedComplexLeft<OPR>(messages, zx, iy, defaultRealKind)}) {
return result;
} else {
+ auto converted{ConvertTo(zx, std::move(iy))};
return Package(PromoteAndCombine<OPR, TypeCategory::Complex>(
- std::move(zx), ConvertTo(zx, std::move(iy))));
+ std::move(zx), std::move(converted)));
}
},
[&](Expr<SomeComplex> &&zx, Expr<SomeReal> &&ry) {
@@ -561,8 +508,9 @@ std::optional<Expr<SomeType>> NumericOperation(
messages, ix, zy, defaultRealKind)}) {
return result;
} else {
+ auto converted{ConvertTo(zy, std::move(ix))};
return Package(PromoteAndCombine<OPR, TypeCategory::Complex>(
- ConvertTo(zy, std::move(ix)), std::move(zy)));
+ std::move(converted), std::move(zy)));
}
},
[&](Expr<SomeReal> &&rx, Expr<SomeComplex> &&zy) {
@@ -576,31 +524,39 @@ std::optional<Expr<SomeType>> NumericOperation(
},
// Operations with one typeless operand
[&](BOZLiteralConstant &&bx, Expr<SomeInteger> &&iy) {
+ // iy aliases y, so sequence the conversion before std::move(y)
+ // (argument order is unspecified)
+ auto converted{ConvertTo(iy, std::move(bx))};
return NumericOperation<OPR>(messages,
- AsGenericExpr(ConvertTo(iy, std::move(bx))), std::move(y),
+ AsGenericExpr(std::move(converted)), std::move(y),
defaultRealKind);
},
[&](BOZLiteralConstant &&bx, Expr<SomeUnsigned> &&iy) {
+ auto converted{ConvertTo(iy, std::move(bx))};
return NumericOperation<OPR>(messages,
- AsGenericExpr(ConvertTo(iy, std::move(bx))), std::move(y),
+ AsGenericExpr(std::move(converted)), std::move(y),
defaultRealKind);
},
[&](BOZLiteralConstant &&bx, Expr<SomeReal> &&ry) {
+ auto converted{ConvertTo(ry, std::move(bx))};
return NumericOperation<OPR>(messages,
- AsGenericExpr(ConvertTo(ry, std::move(bx))), std::move(y),
+ AsGenericExpr(std::move(converted)), std::move(y),
defaultRealKind);
},
[&](Expr<SomeInteger> &&ix, BOZLiteralConstant &&by) {
+ auto cvt{ConvertTo(ix, std::move(by))};
return NumericOperation<OPR>(messages, std::move(x),
- AsGenericExpr(ConvertTo(ix, std::move(by))), defaultRealKind);
+ AsGenericExpr(std::move(cvt)), defaultRealKind);
},
[&](Expr<SomeUnsigned> &&ix, BOZLiteralConstant &&by) {
+ auto converted{ConvertTo(ix, std::move(by))};
return NumericOperation<OPR>(messages, std::move(x),
- AsGenericExpr(ConvertTo(ix, std::move(by))), defaultRealKind);
+ AsGenericExpr(std::move(converted)), defaultRealKind);
},
[&](Expr<SomeReal> &&rx, BOZLiteralConstant &&by) {
+ auto converted{ConvertTo(rx, std::move(by))};
return NumericOperation<OPR>(messages, std::move(x),
- AsGenericExpr(ConvertTo(rx, std::move(by))), defaultRealKind);
+ AsGenericExpr(std::move(converted)), defaultRealKind);
},
// Error cases
[&](Expr<SomeUnsigned> &&, auto &&) {
@@ -734,12 +690,16 @@ std::optional<Expr<LogicalResult>> Relate(parser::ContextualMessages &messages,
return PromoteAndRelate(opr, std::move(rx), std::move(ry));
},
[&](Expr<SomeReal> &&rx, Expr<SomeInteger> &&iy) {
+ // rx aliases x, so sequence the conversion before std::move(x)
+ // (argument order is unspecified)
+ auto converted{ConvertTo(rx, std::move(iy))};
return Relate(messages, opr, std::move(x),
- AsGenericExpr(ConvertTo(rx, std::move(iy))));
+ AsGenericExpr(std::move(converted)));
},
[&](Expr<SomeInteger> &&ix, Expr<SomeReal> &&ry) {
- return Relate(messages, opr,
- AsGenericExpr(ConvertTo(ry, std::move(ix))), std::move(y));
+ auto converted{ConvertTo(ry, std::move(ix))};
+ return Relate(messages, opr, AsGenericExpr(std::move(converted)),
+ std::move(y));
},
[&](Expr<SomeComplex> &&zx,
Expr<SomeComplex> &&zy) -> std::optional<Expr<LogicalResult>> {
@@ -753,20 +713,24 @@ std::optional<Expr<LogicalResult>> Relate(parser::ContextualMessages &messages,
}
},
[&](Expr<SomeComplex> &&zx, Expr<SomeInteger> &&iy) {
+ auto converted{ConvertTo(zx, std::move(iy))};
return Relate(messages, opr, std::move(x),
- AsGenericExpr(ConvertTo(zx, std::move(iy))));
+ AsGenericExpr(std::move(converted)));
},
[&](Expr<SomeComplex> &&zx, Expr<SomeReal> &&ry) {
+ auto converted{ConvertTo(zx, std::move(ry))};
return Relate(messages, opr, std::move(x),
- AsGenericExpr(ConvertTo(zx, std::move(ry))));
+ AsGenericExpr(std::move(converted)));
},
[&](Expr<SomeInteger> &&ix, Expr<SomeComplex> &&zy) {
- return Relate(messages, opr,
- AsGenericExpr(ConvertTo(zy, std::move(ix))), std::move(y));
+ auto converted{ConvertTo(zy, std::move(ix))};
+ return Relate(messages, opr, AsGenericExpr(std::move(converted)),
+ std::move(y));
},
[&](Expr<SomeReal> &&rx, Expr<SomeComplex> &&zy) {
- return Relate(messages, opr,
- AsGenericExpr(ConvertTo(zy, std::move(rx))), std::move(y));
+ auto converted{ConvertTo(zy, std::move(rx))};
+ return Relate(messages, opr, AsGenericExpr(std::move(converted)),
+ std::move(y));
},
[&](Expr<SomeCharacter> &&cx, Expr<SomeCharacter> &&cy) {
return common::visit(
@@ -806,7 +770,8 @@ std::optional<Expr<LogicalResult>> Relate(parser::ContextualMessages &messages,
// operand representing INT(enumExpr).
auto makeIntCall =
[&](Expr<SomeDerived> &&operand) -> Expr<SomeType> {
- using IntType = Type<TypeCategory::Integer, 4>;
+ using IntType = Type<TypeCategory::Integer>;
+ constexpr int intKind{4};
DynamicType enumType{*xDerived};
DynamicType intResultType{TypeCategory::Integer, 4};
characteristics::DummyDataObject ddo{
@@ -825,7 +790,7 @@ std::optional<Expr<LogicalResult>> Relate(parser::ContextualMessages &messages,
intArgs.emplace_back(AsGenericExpr(std::move(operand)));
return AsGenericExpr(
Expr<SomeInteger>(Expr<IntType>(FunctionRef<IntType>{
- ProcedureDesignator{std::move(intSpec)},
+ intKind, ProcedureDesignator{std::move(intSpec)},
std::move(intArgs)})));
};
return Relate(messages, opr, makeIntCall(std::move(dx)),
@@ -849,9 +814,8 @@ Expr<SomeLogical> BinaryLogicalOperation(
CHECK(opr != LogicalOperator::Not);
return common::visit(
[=](auto &&xy) {
- using Ty = ResultType<decltype(xy[0])>;
- return Expr<SomeLogical>{BinaryLogicalOperation<Ty::kind>(
- opr, std::move(xy[0]), std::move(xy[1]))};
+ return Expr<SomeLogical>{
+ BinaryLogicalOperation(opr, std::move(xy[0]), std::move(xy[1]))};
},
AsSameKindExprs(std::move(x), std::move(y)));
}
@@ -912,9 +876,9 @@ std::optional<Expr<SomeType>> ConvertToType(
converted = common::visit(
[&](auto &&x) {
using CharacterType = ResultType<decltype(x)>;
- return Expr<SomeCharacter>{
- Expr<CharacterType>{SetLength<CharacterType::kind>{
- std::move(x), std::move(*length)}}};
+ const int characterKind{x.kind()};
+ return Expr<SomeCharacter>{Expr<CharacterType>{
+ SetLength{characterKind, std::move(x), std::move(*length)}}};
},
std::move(converted.u));
}
@@ -1382,79 +1346,84 @@ bool HasVolatileOrAsynchronousSymbol(const Expr<SomeType> &expr) {
namespace {
-template <common::TypeCategory CAT, int KIND> using Numeric = Type<CAT, KIND>;
+template <common::TypeCategory CAT> using Numeric = Type<CAT>;
-template <common::TypeCategory CAT, int KIND>
-using NumericExpr = Expr<Numeric<CAT, KIND>>;
+template <common::TypeCategory CAT> using NumericExpr = Expr<Numeric<CAT>>;
-template <common::TypeCategory CAT, int KIND> struct SignedNumericTerm {
- NumericExpr<CAT, KIND> expr;
+template <common::TypeCategory CAT> struct SignedNumericTerm {
+ int kind() const { return expr.kind(); };
+
+ NumericExpr<CAT> expr;
bool isPositive;
};
-template <common::TypeCategory CAT, int KIND> struct SignedNumericExpr {
- NumericExpr<CAT, KIND> expr;
+template <common::TypeCategory CAT> struct SignedNumericExpr {
+ int kind() const { return expr.kind(); };
+
+ NumericExpr<CAT> expr;
bool isPositive;
};
-template <common::TypeCategory CAT, int KIND>
-static void flattenTopLevelAddSubtract(const NumericExpr<CAT, KIND> &expr,
- llvm::SmallVectorImpl<SignedNumericTerm<CAT, KIND>> &terms,
+template <common::TypeCategory CAT>
+static void flattenTopLevelAddSubtract(const NumericExpr<CAT> &expr,
+ llvm::SmallVectorImpl<SignedNumericTerm<CAT>> &terms,
bool isPositive = true) {
// Only flatten Add and Subtract nodes. Every other node, including
// Parentheses, is one opaque signed term whose tree is preserved.
- if (const auto *add = std::get_if<Add<Numeric<CAT, KIND>>>(&expr.u)) {
+ if (const auto *add = std::get_if<Add<Numeric<CAT>>>(&expr.u)) {
flattenTopLevelAddSubtract(add->left(), terms, isPositive);
flattenTopLevelAddSubtract(add->right(), terms, isPositive);
return;
}
- if (const auto *subtract =
- std::get_if<Subtract<Numeric<CAT, KIND>>>(&expr.u)) {
+ if (const auto *subtract = std::get_if<Subtract<Numeric<CAT>>>(&expr.u)) {
flattenTopLevelAddSubtract(subtract->left(), terms, isPositive);
flattenTopLevelAddSubtract(subtract->right(), terms, !isPositive);
return;
}
- terms.push_back(SignedNumericTerm<CAT, KIND>{expr, isPositive});
+ terms.push_back(SignedNumericTerm<CAT>{expr, isPositive});
}
-template <common::TypeCategory CAT, int KIND>
-static SignedNumericExpr<CAT, KIND> buildRightAssociatedSignedFold(
- llvm::MutableArrayRef<SignedNumericTerm<CAT, KIND>> terms) {
+template <common::TypeCategory CAT>
+static SignedNumericExpr<CAT> buildRightAssociatedSignedFold(
+ llvm::MutableArrayRef<SignedNumericTerm<CAT>> terms) {
assert(!terms.empty() && "cannot build empty signed fold");
+ const int kind{terms.front().kind()};
const bool isPositive{terms.front().isPositive};
- NumericExpr<CAT, KIND> result{std::move(terms.back().expr)};
+ NumericExpr<CAT> result{std::move(terms.back().expr)};
for (std::size_t i{terms.size() - 1}; i > 0; --i) {
- SignedNumericTerm<CAT, KIND> &term{terms[i - 1]};
+ SignedNumericTerm<CAT> &term{terms[i - 1]};
const bool useAdd{term.isPositive == terms[i].isPositive};
if (useAdd)
- result = NumericExpr<CAT, KIND>{
- Add<Numeric<CAT, KIND>>{std::move(term.expr), std::move(result)}};
+ result = NumericExpr<CAT>{
+ Add<Numeric<CAT>>{kind, std::move(term.expr), std::move(result)}};
else
- result = NumericExpr<CAT, KIND>{Subtract<Numeric<CAT, KIND>>{
- std::move(term.expr), std::move(result)}};
+ result = NumericExpr<CAT>{Subtract<Numeric<CAT>>{
+ kind, std::move(term.expr), std::move(result)}};
}
- return SignedNumericExpr<CAT, KIND>{std::move(result), isPositive};
+ return SignedNumericExpr<CAT>{std::move(result), isPositive};
}
-template <common::TypeCategory CAT, int KIND>
-static SignedNumericExpr<CAT, KIND> buildSignedAdd(
- SignedNumericExpr<CAT, KIND> left, SignedNumericExpr<CAT, KIND> right) {
+template <common::TypeCategory CAT>
+static SignedNumericExpr<CAT> buildSignedAdd(
+ SignedNumericExpr<CAT> left, SignedNumericExpr<CAT> right) {
+ CHECK(left.kind() == right.kind());
+ const int kind{left.kind()};
if (left.isPositive == right.isPositive) {
- return SignedNumericExpr<CAT, KIND>{
- NumericExpr<CAT, KIND>{Add<Numeric<CAT, KIND>>{
- std::move(left.expr), std::move(right.expr)}},
+ return SignedNumericExpr<CAT>{
+ NumericExpr<CAT>{Add<Numeric<CAT>>{
+ kind, std::move(left.expr), std::move(right.expr)}},
left.isPositive};
}
if (left.isPositive) {
- return SignedNumericExpr<CAT, KIND>{
- NumericExpr<CAT, KIND>{Subtract<Numeric<CAT, KIND>>{
- std::move(left.expr), std::move(right.expr)}},
+ return SignedNumericExpr<CAT>{
+ NumericExpr<CAT>{Subtract<Numeric<CAT>>{
+ kind, std::move(left.expr), std::move(right.expr)}},
true};
}
// Prefer Y-X to introducing a unary negation for -X+Y.
- return SignedNumericExpr<CAT, KIND>{
- NumericExpr<CAT, KIND>{Subtract<Numeric<CAT, KIND>>{
- std::move(right.expr), std::move(left.expr)}},
+ return SignedNumericExpr<CAT>{
+ NumericExpr<CAT>{Subtract<Numeric<CAT>>{
+ kind, std::move(right.expr), std::move(left.expr)}},
true};
}
@@ -1463,24 +1432,24 @@ static std::optional<Expr<SomeType>> tryBuildSplitSumExpressionTree(const T &) {
return std::nullopt;
}
-template <common::TypeCategory CAT, int KIND>
+template <common::TypeCategory CAT>
static std::optional<Expr<SomeType>> tryBuildSplitSumExpressionTree(
- const NumericExpr<CAT, KIND> &expr) {
- if (!std::get_if<Add<Numeric<CAT, KIND>>>(&expr.u) &&
- !std::get_if<Subtract<Numeric<CAT, KIND>>>(&expr.u))
+ const NumericExpr<CAT> &expr) {
+ if (!std::get_if<Add<Numeric<CAT>>>(&expr.u) &&
+ !std::get_if<Subtract<Numeric<CAT>>>(&expr.u))
return std::nullopt;
- llvm::SmallVector<SignedNumericTerm<CAT, KIND>, 8> terms;
+ llvm::SmallVector<SignedNumericTerm<CAT>, 8> terms;
flattenTopLevelAddSubtract(expr, terms);
if (terms.size() <= 2)
return std::nullopt;
- llvm::MutableArrayRef<SignedNumericTerm<CAT, KIND>> head{terms.data(), 2};
- llvm::MutableArrayRef<SignedNumericTerm<CAT, KIND>> tail{
+ llvm::MutableArrayRef<SignedNumericTerm<CAT>> head{terms.data(), 2};
+ llvm::MutableArrayRef<SignedNumericTerm<CAT>> tail{
terms.data() + 2, terms.size() - 2};
- SignedNumericExpr<CAT, KIND> headExpr = buildRightAssociatedSignedFold(head);
- SignedNumericExpr<CAT, KIND> tailExpr = buildRightAssociatedSignedFold(tail);
- SignedNumericExpr<CAT, KIND> result =
+ SignedNumericExpr<CAT> headExpr = buildRightAssociatedSignedFold(head);
+ SignedNumericExpr<CAT> tailExpr = buildRightAssociatedSignedFold(tail);
+ SignedNumericExpr<CAT> result =
buildSignedAdd(std::move(tailExpr), std::move(headExpr));
assert(result.isPositive &&
"the first flattened term and therefore the split sum are positive");
@@ -1771,11 +1740,10 @@ static std::optional<Expr<SomeType>> DataConstantConversionHelper(
return common::visit(
[](const auto &w) -> std::optional<Expr<SomeType>> {
using FromType = ResultType<decltype(w)>;
- static constexpr int kind{FromType::kind};
- if constexpr (IsValidKindOfIntrinsicType(TO, kind)) {
+ const int kind{w.kind()};
+ if (IsValidKindOfIntrinsicType(TO, kind)) {
if (const auto *fromConst{UnwrapExpr<Constant<FromType>>(w)}) {
- using FromWordType = typename FromType::Scalar;
- using LogicalType = value::Logical<FromWordType::bits>;
+ using LogicalType = value::LogicalValue;
using ElementType =
std::conditional_t<TO == TypeCategory::Logical, LogicalType,
typename LogicalType::Word>;
@@ -1786,13 +1754,13 @@ static std::optional<Expr<SomeType>> DataConstantConversionHelper(
fromConst->IncrementSubscripts(at)) {
auto elt{fromConst->At(at)};
if constexpr (TO == TypeCategory::Logical) {
- values.emplace_back(std::move(elt));
+ values.emplace_back(kind, elt);
} else {
values.emplace_back(elt.word());
}
}
- return {AsGenericExpr(AsExpr(Constant<Type<TO, kind>>{
- std::move(values), std::move(shape)}))};
+ return {AsGenericExpr(AsExpr(Constant<Type<TO>>{kind,
+ std::move(values), std::move(shape), Type<TO>{kind}}))};
}
}
return std::nullopt;
@@ -1851,17 +1819,27 @@ bool MayBePassedAsAbsentOptional(const Expr<SomeType> &expr) {
IsAllocatableOrPointerObject(expr);
}
+static std::optional<std::string> GetScalarConstantValueAsStdString(
+ const Expr<SomeType> &expr) {
+ if (std::optional<value::CharacterValue> chValue{
+ GetScalarConstantValue<Ascii>(expr)}) {
+ return chValue->AsStdString();
+ }
+ return std::nullopt;
+}
+
std::optional<Expr<SomeType>> HollerithToBOZ(FoldingContext &context,
const Expr<SomeType> &expr, const DynamicType &type) {
- if (std::optional<std::string> chValue{GetScalarConstantValue<Ascii>(expr)}) {
+ if (std::optional<std::string> chValue{
+ GetScalarConstantValueAsStdString(expr)}) {
// Pad on the right with spaces when short, truncate the right if long.
auto bytes{static_cast<std::size_t>(
ToInt64(type.MeasureSizeInBytes(context, false)).value())};
- BOZLiteralConstant bits{0};
+ BOZLiteralConstant bits{LargestRealKind, 0};
for (std::size_t j{0}; j < bytes; ++j) {
auto idx{isHostLittleEndian ? j : bytes - j - 1};
char ch{idx >= chValue->size() ? ' ' : chValue->at(idx)};
- BOZLiteralConstant chBOZ{static_cast<unsigned char>(ch)};
+ BOZLiteralConstant chBOZ{LargestRealKind, static_cast<unsigned char>(ch)};
bits = bits.IOR(chBOZ.SHIFTL(8 * j));
}
return ConvertToType(type, Expr<SomeType>{bits});
@@ -1874,10 +1852,9 @@ std::optional<Expr<SomeType>> HollerithToBOZ(FoldingContext &context,
// possibly wrapped with parentheses or MAX(0, ...).
// Works with any integer expression.
template <typename T> const Symbol *GetBoundSymbol(const Expr<T> &);
-template <int KIND>
-const Symbol *GetBoundSymbol(
- const Expr<Type<TypeCategory::Integer, KIND>> &expr) {
- using T = Type<TypeCategory::Integer, KIND>;
+const Symbol *GetBoundSymbol(const Expr<Type<TypeCategory::Integer>> &expr) {
+ using T = Type<TypeCategory::Integer>;
+ const int kind{expr.kind()};
return common::visit(
common::visitors{
[](const Extremum<T> &max) -> const Symbol * {
@@ -1895,12 +1872,11 @@ const Symbol *GetBoundSymbol(
}
return nullptr;
},
- [](const Convert<T, TypeCategory::Integer> &x) {
+ [kind](const Convert<T, TypeCategory::Integer> &x) {
return common::visit(
- [](const auto &y) -> const Symbol * {
- using yType = std::decay_t<decltype(y)>;
- using yResult = typename yType::Result;
- if constexpr (yResult::kind <= KIND) {
+ [kind](const auto &y) -> const Symbol * {
+ int yKind{y.GetType() ? y.GetType()->kind() : 0};
+ if (yKind <= kind) {
return GetBoundSymbol(y);
} else {
return nullptr;
@@ -2007,8 +1983,7 @@ struct ArgumentExtractor
using Base::operator();
- template <int Kind>
- Result operator()(const Constant<Type<Logical, Kind>> &x) const {
+ Result operator()(const Constant<Type<Logical>> &x) const {
if (const auto &val{x.GetScalarValue()}) {
return val->IsTrue()
? std::make_pair(operation::Operator::True, Arguments{})
@@ -2268,24 +2243,18 @@ struct ConvertCollector
}
template <typename T> struct is_convert {
- static constexpr bool value{false};
+ // ComplexComponent is a conversion from complex to real.
+ static constexpr bool value{std::is_same_v<T, ComplexComponent>};
};
template <typename T, common::TypeCategory C>
struct is_convert<Convert<T, C>> {
static constexpr bool value{true};
};
- template <int K> struct is_convert<ComplexComponent<K>> {
- // Conversion from complex to real.
- static constexpr bool value{true};
- };
template <typename T>
static constexpr bool is_convert_v{is_convert<T>::value};
template <typename T> struct is_complex_constructor {
- static constexpr bool value{false};
- };
- template <int K> struct is_complex_constructor<ComplexConstructor<K>> {
- static constexpr bool value{true};
+ static constexpr bool value{std::is_same_v<T, ComplexConstructor>};
};
template <typename T>
static constexpr bool is_complex_constructor_v{
diff --git a/flang/lib/Evaluate/type.cpp b/flang/lib/Evaluate/type.cpp
index 3913bd394fde0f..b9ed5305ad75c0 100644
--- a/flang/lib/Evaluate/type.cpp
+++ b/flang/lib/Evaluate/type.cpp
@@ -142,10 +142,11 @@ bool DynamicType::operator==(const DynamicType &that) const {
std::optional<Expr<SubscriptInteger>> DynamicType::GetCharLength() const {
if (category_ == TypeCategory::Character) {
if (knownLength()) {
- return AsExpr(Constant<SubscriptInteger>(*knownLength()));
+ return MakeSubscriptIntExpr(*knownLength());
} else if (charLengthParamValue_) {
if (auto length{charLengthParamValue_->GetExplicit()}) {
- return ConvertToType<SubscriptInteger>(std::move(*length));
+ return ConvertToType<SubscriptInteger>(
+ SubscriptIntegerKind, std::move(*length));
}
}
}
@@ -194,15 +195,14 @@ std::optional<Expr<SubscriptInteger>> DynamicType::MeasureSizeInBytes(
case TypeCategory::Real:
case TypeCategory::Complex:
case TypeCategory::Logical:
- return Expr<SubscriptInteger>{
- context.targetCharacteristics().GetByteSize(category_, kind())};
+ return MakeSubscriptIntExpr(
+ context.targetCharacteristics().GetByteSize(category_, kind()));
case TypeCategory::Character:
- if (auto len{charLength ? Expr<SubscriptInteger>{Constant<SubscriptInteger>{
- *charLength}}
- : GetCharLength()}) {
+ if (auto len{
+ charLength ? MakeSubscriptIntExpr(*charLength) : GetCharLength()}) {
return Fold(context,
- Expr<SubscriptInteger>{
- context.targetCharacteristics().GetByteSize(category_, kind())} *
+ MakeSubscriptIntExpr(
+ context.targetCharacteristics().GetByteSize(category_, kind())) *
std::move(*len));
}
break;
@@ -218,16 +218,14 @@ std::optional<Expr<SubscriptInteger>> DynamicType::MeasureSizeInBytes(
auto size{derived_->GetScope()->size()};
auto align{aligned ? derived_->GetScope()->alignment().value_or(0) : 0};
auto alignedSize{align > 0 ? ((size + align - 1) / align) * align : size};
- return Expr<SubscriptInteger>{
- static_cast<ConstantSubscript>(alignedSize)};
+ return MakeSubscriptIntExpr(alignedSize);
}
// Regular derived type path.
if (!IsPolymorphic() && derived_ && derived_->scope()) {
auto size{derived_->scope()->size()};
auto align{aligned ? derived_->scope()->alignment().value_or(0) : 0};
auto alignedSize{align > 0 ? ((size + align - 1) / align) * align : size};
- return Expr<SubscriptInteger>{
- static_cast<ConstantSubscript>(alignedSize)};
+ return MakeSubscriptIntExpr(alignedSize);
}
break;
}
@@ -890,7 +888,7 @@ std::optional<DynamicType> ComparisonType(
case TypeCategory::Logical:
switch (t2.category()) {
case TypeCategory::Logical:
- return DynamicType{TypeCategory::Logical, LogicalResult::kind};
+ return DynamicType{TypeCategory::Logical, LogicalResultKind};
default:
return std::nullopt;
}
diff --git a/flang/lib/Evaluate/variable.cpp b/flang/lib/Evaluate/variable.cpp
index 409fd66f81c2b4..7ea509efdd5ca0 100644
--- a/flang/lib/Evaluate/variable.cpp
+++ b/flang/lib/Evaluate/variable.cpp
@@ -22,12 +22,12 @@ namespace Fortran::evaluate {
// Constructors, accessors, mutators
-Triplet::Triplet() : stride_{Expr<SubscriptInteger>{1}} {}
+Triplet::Triplet() : stride_{MakeSubscriptIntExpr(1)} {}
Triplet::Triplet(std::optional<Expr<SubscriptInteger>> &&l,
std::optional<Expr<SubscriptInteger>> &&u,
std::optional<Expr<SubscriptInteger>> &&s)
- : stride_{s ? std::move(*s) : Expr<SubscriptInteger>{1}} {
+ : stride_{s ? std::move(*s) : MakeSubscriptIntExpr(1)} {
if (l) {
lower_.emplace(std::move(*l));
}
@@ -133,7 +133,7 @@ Expr<SubscriptInteger> Substring::lower() const {
if (lower_) {
return lower_.value().value();
} else {
- return AsExpr(Constant<SubscriptInteger>{1});
+ return MakeSubscriptIntExpr(1);
}
}
@@ -151,7 +151,7 @@ std::optional<Expr<SubscriptInteger>> Substring::upper() const {
[](const DataRef &dataRef) { return dataRef.LEN(); },
[](const StaticDataObject::Pointer &object)
-> std::optional<Expr<SubscriptInteger>> {
- return AsExpr(Constant<SubscriptInteger>{object->data().size()});
+ return MakeSubscriptIntExpr(object->data().size());
},
},
parent_);
@@ -176,7 +176,7 @@ std::optional<Expr<SomeCharacter>> Substring::Fold(FoldingContext &context) {
return std::nullopt;
}
if (!lower_) {
- lower_ = AsExpr(Constant<SubscriptInteger>{1});
+ lower_ = MakeSubscriptIntExpr(1);
}
lower_.value() = evaluate::Fold(context, std::move(lower_.value().value()));
std::optional<ConstantSubscript> lbi{ToInt64(lower_.value().value())};
@@ -186,16 +186,15 @@ std::optional<Expr<SomeCharacter>> Substring::Fold(FoldingContext &context) {
if (*lbi > *ubi) { // empty result; canonicalize
*lbi = 1;
*ubi = 0;
- lower_ = AsExpr(Constant<SubscriptInteger>{*lbi});
- upper_ = AsExpr(Constant<SubscriptInteger>{*ubi});
+ lower_ = MakeSubscriptIntExpr(*lbi);
+ upper_ = MakeSubscriptIntExpr(*ubi);
}
std::optional<ConstantSubscript> length;
std::optional<Expr<SomeCharacter>> strings; // a Constant<Character>
if (const auto *literal{std::get_if<StaticDataObject::Pointer>(&parent_)}) {
length = (*literal)->data().size();
if (auto str{(*literal)->AsString()}) {
- strings =
- Expr<SomeCharacter>(Expr<Ascii>(Constant<Ascii>{std::move(*str)}));
+ strings = Expr<SomeCharacter>(MakeAsciiExpr(*str));
}
} else if (const auto *dataRef{std::get_if<DataRef>(&parent_)}) {
if (auto expr{AsGenericExpr(DataRef{*dataRef})}) {
@@ -227,7 +226,7 @@ std::optional<Expr<SomeCharacter>> Substring::Fold(FoldingContext &context) {
"Lower bound (%jd) on substring is less than one"_warn_en_US,
static_cast<std::intmax_t>(*lbi));
*lbi = 1;
- lower_ = AsExpr(Constant<SubscriptInteger>{1});
+ lower_ = MakeSubscriptIntExpr(1);
}
if (length && *ubi > *length) {
context.Warn(common::UsageWarning::Bounds,
@@ -235,7 +234,7 @@ std::optional<Expr<SomeCharacter>> Substring::Fold(FoldingContext &context) {
static_cast<std::intmax_t>(*ubi),
static_cast<std::intmax_t>(*length));
*ubi = *length;
- upper_ = AsExpr(Constant<SubscriptInteger>{*ubi});
+ upper_ = MakeSubscriptIntExpr(*ubi);
}
}
return result;
@@ -283,11 +282,11 @@ static std::optional<Expr<SubscriptInteger>> SymbolLEN(const Symbol &symbol) {
}
if (len) {
if (auto constLen{ToInt64(*len)}) {
- return Expr<SubscriptInteger>{std::max<std::int64_t>(*constLen, 0)};
+ return MakeSubscriptIntExpr(std::max<std::int64_t>(*constLen, 0));
} else if (ultimate.owner().IsDerivedType() ||
IsScopeInvariantExpr(*len)) {
return AsExpr(Extremum<SubscriptInteger>{
- Ordering::Greater, Expr<SubscriptInteger>{0}, std::move(*len)});
+ Ordering::Greater, MakeSubscriptIntExpr(0), std::move(*len)});
}
}
}
@@ -304,7 +303,7 @@ std::optional<Expr<SubscriptInteger>> BaseObject::LEN() const {
[](const Symbol &symbol) { return SymbolLEN(symbol); },
[](const StaticDataObject::Pointer &object)
-> std::optional<Expr<SubscriptInteger>> {
- return AsExpr(Constant<SubscriptInteger>{object->data().size()});
+ return MakeSubscriptIntExpr(object->data().size());
},
},
u);
@@ -336,9 +335,9 @@ std::optional<Expr<SubscriptInteger>> DataRef::LEN() const {
std::optional<Expr<SubscriptInteger>> Substring::LEN() const {
if (auto top{upper()}) {
- return AsExpr(Extremum<SubscriptInteger>{Ordering::Greater,
- AsExpr(Constant<SubscriptInteger>{0}),
- *std::move(top) - lower() + AsExpr(Constant<SubscriptInteger>{1})});
+ return AsExpr(
+ Extremum<SubscriptInteger>{Ordering::Greater, MakeSubscriptIntExpr(0),
+ *std::move(top) - lower() + MakeSubscriptIntExpr(1)});
} else {
return std::nullopt;
}
@@ -648,16 +647,16 @@ template <typename T> const Symbol *Designator<T>::GetLastSymbol() const {
template <typename T>
std::optional<DynamicType> Designator<T>::GetType() const {
if constexpr (IsLengthlessIntrinsicType<Result>) {
- return Result::GetType();
+ return DynamicType{Result::category, kind()};
}
if constexpr (Result::category == TypeCategory::Character) {
if (std::holds_alternative<Substring>(u)) {
if (auto len{LEN()}) {
if (auto n{ToInt64(*len)}) {
- return DynamicType{T::kind, *n};
+ return DynamicType{kind(), *n};
}
}
- return DynamicType{TypeCategory::Character, T::kind};
+ return DynamicType{TypeCategory::Character, kind()};
}
}
if (const Symbol * symbol{GetLastSymbol()}) {
diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp
index bff6b51e50e185..4759ad9b6fb3c9 100644
--- a/flang/lib/Lower/Bridge.cpp
+++ b/flang/lib/Lower/Bridge.cpp
@@ -6733,8 +6733,7 @@ class FirConverter : public Fortran::lower::AbstractConverter {
return Fortran::common::visit(
[&](const auto &someKind) -> std::string {
using T = std::decay_t<decltype(someKind)>;
- using TK = Fortran::evaluate::Type<T::Result::category,
- T::Result::kind>;
+ using TK = typename T::Result;
if (const auto *constant =
std::get_if<Fortran::evaluate::Constant<TK>>(
&someKind.u)) {
diff --git a/flang/lib/Lower/CallInterface.cpp b/flang/lib/Lower/CallInterface.cpp
index 64960b5e09a98a..4d1f8c29dc9f74 100644
--- a/flang/lib/Lower/CallInterface.cpp
+++ b/flang/lib/Lower/CallInterface.cpp
@@ -8,6 +8,7 @@
#include "flang/Lower/CallInterface.h"
#include "flang/Evaluate/fold.h"
+#include "flang/Evaluate/shape.h"
#include "flang/Lower/Bridge.h"
#include "flang/Lower/ConvertCall.h"
#include "flang/Lower/Mangler.h"
@@ -426,12 +427,12 @@ static Fortran::evaluate::ExtentExpr
getExtentExpr(const Fortran::semantics::ShapeSpec &shapeSpec) {
if (shapeSpec.ubound().isStar())
// F'2023 18.5.3 point 5.
- return Fortran::evaluate::ExtentExpr{-1};
+ return Fortran::evaluate::MakeExtentExpr(-1);
const auto &ubound = shapeSpec.ubound().GetExplicit();
const auto &lbound = shapeSpec.lbound().GetExplicit();
assert(lbound && ubound && "shape must be explicit");
return Fortran::common::Clone(*ubound) - Fortran::common::Clone(*lbound) +
- Fortran::evaluate::ExtentExpr{1};
+ Fortran::evaluate::MakeExtentExpr(1);
}
static void
diff --git a/flang/lib/Lower/ConvertArrayConstructor.cpp b/flang/lib/Lower/ConvertArrayConstructor.cpp
index 1d22da615ba078..a76527b4e74542 100644
--- a/flang/lib/Lower/ConvertArrayConstructor.cpp
+++ b/flang/lib/Lower/ConvertArrayConstructor.cpp
@@ -503,15 +503,16 @@ namespace {
/// evaluating an ac-value.
template <typename T>
struct LengthAndTypeCollector {
- static mlir::Type collect(mlir::Location,
- Fortran::lower::AbstractConverter &converter,
- const Fortran::evaluate::ArrayConstructor<T> &,
- Fortran::lower::SymMap &,
- Fortran::lower::StatementContext &,
- mlir::SmallVectorImpl<mlir::Value> &) {
+ static mlir::Type
+ collect(mlir::Location, Fortran::lower::AbstractConverter &converter,
+ const Fortran::evaluate::ArrayConstructor<T> &arrayCtorExpr,
+ Fortran::lower::SymMap &, Fortran::lower::StatementContext &,
+ mlir::SmallVectorImpl<mlir::Value> &) {
+ const int kind{arrayCtorExpr.kind()};
// Numerical and Logical types.
return Fortran::lower::getFIRType(&converter.getMLIRContext(), T::category,
- T::kind, /*lenParams*/ {});
+ kind,
+ /*lenParams*/ {});
}
};
@@ -530,16 +531,17 @@ struct LengthAndTypeCollector<Fortran::evaluate::SomeDerived> {
}
};
-template <int Kind>
using Character =
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Character, Kind>;
-template <int Kind>
-struct LengthAndTypeCollector<Character<Kind>> {
- static mlir::Type collect(
- mlir::Location loc, Fortran::lower::AbstractConverter &converter,
- const Fortran::evaluate::ArrayConstructor<Character<Kind>> &arrayCtorExpr,
- Fortran::lower::SymMap &symMap, Fortran::lower::StatementContext &stmtCtx,
- mlir::SmallVectorImpl<mlir::Value> &lengths) {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Character>;
+template <>
+struct LengthAndTypeCollector<Character> {
+ static mlir::Type
+ collect(mlir::Location loc, Fortran::lower::AbstractConverter &converter,
+ const Fortran::evaluate::ArrayConstructor<Character> &arrayCtorExpr,
+ Fortran::lower::SymMap &symMap,
+ Fortran::lower::StatementContext &stmtCtx,
+ mlir::SmallVectorImpl<mlir::Value> &lengths) {
+ const int kind{arrayCtorExpr.kind()};
llvm::SmallVector<Fortran::lower::LenParameterTy> typeLengths;
if (const Fortran::evaluate::ExtentExpr *lenExpr = arrayCtorExpr.LEN()) {
lengths.push_back(
@@ -550,7 +552,7 @@ struct LengthAndTypeCollector<Character<Kind>> {
}
return Fortran::lower::getFIRType(&converter.getMLIRContext(),
Fortran::common::TypeCategory::Character,
- Kind, typeLengths);
+ kind, typeLengths);
}
};
} // namespace
diff --git a/flang/lib/Lower/ConvertConstant.cpp b/flang/lib/Lower/ConvertConstant.cpp
index 70dc4c77ab869c..31f706803de3ea 100644
--- a/flang/lib/Lower/ConvertConstant.cpp
+++ b/flang/lib/Lower/ConvertConstant.cpp
@@ -49,18 +49,19 @@ static llvm::APFloat consAPFloat(const llvm::fltSemantics &fsem,
//===----------------------------------------------------------------------===//
/// Generate an mlir attribute from a literal value
-template <Fortran::common::TypeCategory TC, int KIND>
+template <Fortran::common::TypeCategory TC>
static mlir::Attribute convertToAttribute(
fir::FirOpBuilder &builder,
- const Fortran::evaluate::Scalar<Fortran::evaluate::Type<TC, KIND>> &value,
+ const Fortran::evaluate::Scalar<Fortran::evaluate::Type<TC>> &value,
mlir::Type type) {
+ const int kind{value.kind()};
if constexpr (TC == Fortran::common::TypeCategory::Integer) {
- if constexpr (KIND <= 8)
+ if (kind <= 8)
return builder.getIntegerAttr(type, value.ToInt64());
else {
- static_assert(KIND <= 16, "integers with KIND > 16 are not supported");
+ CHECK_MSG(kind <= 16, "integers with KIND > 16 are not supported");
return builder.getIntegerAttr(
- type, llvm::APInt(KIND * 8,
+ type, llvm::APInt(kind * 8,
{value.ToUInt64(), value.SHIFTR(64).ToUInt64()}));
}
} else if constexpr (TC == Fortran::common::TypeCategory::Logical) {
@@ -72,7 +73,7 @@ static mlir::Attribute convertToAttribute(
auto getFloatAttr = [&](const auto &value, mlir::Type type) {
std::string str = value.DumpHexadecimal();
auto floatVal =
- consAPFloat(builder.getKindMap().getFloatSemantics(KIND), str);
+ consAPFloat(builder.getKindMap().getFloatSemantics(kind), str);
return builder.getFloatAttr(type, floatVal);
};
@@ -127,12 +128,11 @@ class DenseGlobalBuilder {
setDefaultAlignment);
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static fir::GlobalOp tryCreating(
fir::FirOpBuilder &builder, mlir::Location loc, mlir::Type symTy,
llvm::StringRef globalName, mlir::StringAttr linkage, bool isConst,
- const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC, KIND>>
- &constant,
+ const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC>> &constant,
cuf::DataAttributeAttr dataAttr, bool setDefaultAlignment = true) {
DenseGlobalBuilder globalBuilder;
globalBuilder.tryConvertingToAttributes(builder, constant);
@@ -145,21 +145,21 @@ class DenseGlobalBuilder {
DenseGlobalBuilder() = default;
/// Try converting an evaluate::Constant to a list of MLIR attributes.
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
void tryConvertingToAttributes(
fir::FirOpBuilder &builder,
- const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC, KIND>>
+ const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC>>
&constant) {
- using Element =
- Fortran::evaluate::Scalar<Fortran::evaluate::Type<TC, KIND>>;
+ using Element = Fortran::evaluate::Scalar<Fortran::evaluate::Type<TC>>;
static_assert(TC != Fortran::common::TypeCategory::Character,
"must be numerical or logical");
+ const int kind = constant.kind();
auto attrTc = TC == Fortran::common::TypeCategory::Logical
? Fortran::common::TypeCategory::Integer
: TC;
attributeElementType =
- Fortran::lower::getFIRType(builder.getContext(), attrTc, KIND, {});
+ Fortran::lower::getFIRType(builder.getContext(), attrTc, kind, {});
const std::vector<Element> &values = constant.values();
auto sameElements = [&]() -> bool {
@@ -171,15 +171,15 @@ class DenseGlobalBuilder {
};
if (sameElements()) {
- auto attr = convertToAttribute<TC, KIND>(builder, values.front(),
- attributeElementType);
+ auto attr =
+ convertToAttribute<TC>(builder, values.front(), attributeElementType);
attributes.assign(values.size(), attr);
return;
}
for (auto element : values)
attributes.push_back(
- convertToAttribute<TC, KIND>(builder, element, attributeElementType));
+ convertToAttribute<TC>(builder, element, attributeElementType));
}
/// Try converting an evaluate::Expr to a list of MLIR attributes.
@@ -191,8 +191,7 @@ class DenseGlobalBuilder {
using TR = Fortran::evaluate::ResultType<decltype(x)>;
if (const auto *constant =
std::get_if<Fortran::evaluate::Constant<TR>>(&x.u))
- tryConvertingToAttributes<TR::category, TR::kind>(builder,
- *constant);
+ tryConvertingToAttributes<TR::category>(builder, *constant);
},
expr.u);
}
@@ -242,25 +241,25 @@ fir::GlobalOp Fortran::lower::tryCreatingDenseGlobal(
//===----------------------------------------------------------------------===//
/// Generate a real constant with a value `value`.
-template <int KIND>
-static mlir::Value genRealConstant(fir::FirOpBuilder &builder,
+static mlir::Value genRealConstant(int kind, fir::FirOpBuilder &builder,
mlir::Location loc,
const llvm::APFloat &value) {
- mlir::Type fltTy = Fortran::lower::convertReal(builder.getContext(), KIND);
+ mlir::Type fltTy = Fortran::lower::convertReal(builder.getContext(), kind);
return builder.createRealConstant(loc, fltTy, value);
}
/// Convert a scalar literal constant to IR.
-template <Fortran::common::TypeCategory TC, int KIND>
+template <Fortran::common::TypeCategory TC>
static mlir::Value genScalarLit(
fir::FirOpBuilder &builder, mlir::Location loc,
- const Fortran::evaluate::Scalar<Fortran::evaluate::Type<TC, KIND>> &value) {
+ const Fortran::evaluate::Scalar<Fortran::evaluate::Type<TC>> &value) {
+ int kind = value.kind();
if constexpr (TC == Fortran::common::TypeCategory::Integer ||
TC == Fortran::common::TypeCategory::Unsigned) {
// MLIR requires constants to be signless
mlir::Type ty = Fortran::lower::getFIRType(
- builder.getContext(), Fortran::common::TypeCategory::Integer, KIND, {});
- if (KIND == 16) {
+ builder.getContext(), Fortran::common::TypeCategory::Integer, kind, {});
+ if (kind == 16) {
auto bigInt = llvm::APInt(ty.getIntOrFloatBitWidth(),
TC == Fortran::common::TypeCategory::Unsigned
? value.UnsignedDecimal()
@@ -274,38 +273,45 @@ static mlir::Value genScalarLit(
if (value.IsCanonical())
return builder.createBool(loc, value.IsTrue());
mlir::Type logicalType = Fortran::lower::getFIRType(
- builder.getContext(), Fortran::common::TypeCategory::Logical, KIND, {});
+ builder.getContext(), Fortran::common::TypeCategory::Logical, kind, {});
mlir::Type intType = Fortran::lower::getFIRType(
- builder.getContext(), Fortran::common::TypeCategory::Integer, KIND, {});
+ builder.getContext(), Fortran::common::TypeCategory::Integer, kind, {});
mlir::Value integer =
builder.createIntegerConstant(loc, intType, value.word().ToInt64());
return fir::BitcastOp::create(builder, loc, logicalType, integer);
} else if constexpr (TC == Fortran::common::TypeCategory::Real) {
std::string str = value.DumpHexadecimal();
- if constexpr (KIND == 2) {
+ switch (kind) {
+ case 2: {
auto floatVal = consAPFloat(llvm::APFloatBase::IEEEhalf(), str);
- return genRealConstant<KIND>(builder, loc, floatVal);
- } else if constexpr (KIND == 3) {
+ return genRealConstant(kind, builder, loc, floatVal);
+ }
+ case 3: {
auto floatVal = consAPFloat(llvm::APFloatBase::BFloat(), str);
- return genRealConstant<KIND>(builder, loc, floatVal);
- } else if constexpr (KIND == 4) {
+ return genRealConstant(kind, builder, loc, floatVal);
+ }
+ case 4: {
auto floatVal = consAPFloat(llvm::APFloatBase::IEEEsingle(), str);
- return genRealConstant<KIND>(builder, loc, floatVal);
- } else if constexpr (KIND == 10) {
+ return genRealConstant(kind, builder, loc, floatVal);
+ }
+ case 10: {
auto floatVal = consAPFloat(llvm::APFloatBase::x87DoubleExtended(), str);
- return genRealConstant<KIND>(builder, loc, floatVal);
- } else if constexpr (KIND == 16) {
+ return genRealConstant(kind, builder, loc, floatVal);
+ }
+ case 16: {
auto floatVal = consAPFloat(llvm::APFloatBase::IEEEquad(), str);
- return genRealConstant<KIND>(builder, loc, floatVal);
- } else {
+ return genRealConstant(kind, builder, loc, floatVal);
+ }
+ default: {
// convert everything else to double
auto floatVal = consAPFloat(llvm::APFloatBase::IEEEdouble(), str);
- return genRealConstant<KIND>(builder, loc, floatVal);
+ return genRealConstant(kind, builder, loc, floatVal);
+ }
}
} else if constexpr (TC == Fortran::common::TypeCategory::Complex) {
- mlir::Value real = genScalarLit<Fortran::common::TypeCategory::Real, KIND>(
+ mlir::Value real = genScalarLit<Fortran::common::TypeCategory::Real>(
builder, loc, value.REAL());
- mlir::Value imag = genScalarLit<Fortran::common::TypeCategory::Real, KIND>(
+ mlir::Value imag = genScalarLit<Fortran::common::TypeCategory::Real>(
builder, loc, value.AIMAG());
return fir::factory::Complex{builder, loc}.createComplex(real, imag);
} else /*constexpr*/ {
@@ -314,70 +320,72 @@ static mlir::Value genScalarLit(
}
/// Create fir::string_lit from a scalar character constant.
-template <int KIND>
static fir::StringLitOp
createStringLitOp(fir::FirOpBuilder &builder, mlir::Location loc,
const Fortran::evaluate::Scalar<Fortran::evaluate::Type<
- Fortran::common::TypeCategory::Character, KIND>> &value,
+ Fortran::common::TypeCategory::Character>> &value,
[[maybe_unused]] int64_t len) {
- if constexpr (KIND == 1) {
+ int kind = value.kind();
+ if (kind == 1) {
assert(value.size() == static_cast<std::uint64_t>(len));
- return builder.createStringLitOp(loc, value);
+ return builder.createStringLitOp(loc, *value.AsStringRef());
} else {
- using ET = typename std::decay_t<decltype(value)>::value_type;
- fir::CharacterType type =
- fir::CharacterType::get(builder.getContext(), KIND, len);
- mlir::MLIRContext *context = builder.getContext();
- std::int64_t size = static_cast<std::int64_t>(value.size());
- mlir::ShapedType shape = mlir::RankedTensorType::get(
- llvm::ArrayRef<std::int64_t>{size},
- mlir::IntegerType::get(builder.getContext(), sizeof(ET) * 8));
- auto denseAttr = mlir::DenseElementsAttr::get(
- shape, llvm::ArrayRef<ET>{value.data(), value.size()});
- auto denseTag = mlir::StringAttr::get(context, fir::StringLitOp::xlist());
- mlir::NamedAttribute dataAttr(denseTag, denseAttr);
- auto sizeTag = mlir::StringAttr::get(context, fir::StringLitOp::size());
- mlir::NamedAttribute sizeAttr(sizeTag, builder.getI64IntegerAttr(len));
- llvm::SmallVector<mlir::NamedAttribute> attrs = {dataAttr, sizeAttr};
- return fir::StringLitOp::create(builder, loc,
- llvm::ArrayRef<mlir::Type>{type},
- mlir::ValueRange{}, attrs);
+ return value.withStdString([&](const auto &value) -> fir::StringLitOp {
+ using ET = typename std::decay_t<decltype(value)>::value_type;
+ fir::CharacterType type =
+ fir::CharacterType::get(builder.getContext(), kind, len);
+ mlir::MLIRContext *context = builder.getContext();
+ std::int64_t size = static_cast<std::int64_t>(value.size());
+ mlir::ShapedType shape = mlir::RankedTensorType::get(
+ llvm::ArrayRef<std::int64_t>{size},
+ mlir::IntegerType::get(builder.getContext(), sizeof(ET) * 8));
+ auto denseAttr = mlir::DenseElementsAttr::get(
+ shape, llvm::ArrayRef<ET>{value.data(), value.size()});
+ auto denseTag = mlir::StringAttr::get(context, fir::StringLitOp::xlist());
+ mlir::NamedAttribute dataAttr(denseTag, denseAttr);
+ auto sizeTag = mlir::StringAttr::get(context, fir::StringLitOp::size());
+ mlir::NamedAttribute sizeAttr(sizeTag, builder.getI64IntegerAttr(len));
+ llvm::SmallVector<mlir::NamedAttribute> attrs = {dataAttr, sizeAttr};
+ return fir::StringLitOp::create(builder, loc,
+ llvm::ArrayRef<mlir::Type>{type},
+ mlir::ValueRange{}, attrs);
+ });
}
}
/// Convert a scalar literal CHARACTER to IR.
-template <int KIND>
static mlir::Value
genScalarLit(fir::FirOpBuilder &builder, mlir::Location loc,
const Fortran::evaluate::Scalar<Fortran::evaluate::Type<
- Fortran::common::TypeCategory::Character, KIND>> &value,
+ Fortran::common::TypeCategory::Character>> &value,
int64_t len, bool outlineInReadOnlyMemory) {
+ int kind = value.kind();
// When in an initializer context, construct the literal op itself and do
// not construct another constant object in rodata.
if (!outlineInReadOnlyMemory)
- return createStringLitOp<KIND>(builder, loc, value, len);
+ return createStringLitOp(builder, loc, value, len);
// Otherwise, the string is in a plain old expression so "outline" the value
// in read only data by hash consing it to a constant literal object.
// ASCII global constants are created using an mlir string attribute.
- if constexpr (KIND == 1) {
- return fir::getBase(fir::factory::createStringLiteral(builder, loc, value));
+ if (kind == 1) {
+ return fir::getBase(
+ fir::factory::createStringLiteral(builder, loc, *value.AsStringRef()));
}
- auto size = builder.getKindMap().getCharacterBitsize(KIND) / 8 * value.size();
- llvm::StringRef strVal(reinterpret_cast<const char *>(value.c_str()), size);
+ auto size = builder.getKindMap().getCharacterBitsize(kind) / 8 * value.size();
+ llvm::StringRef strVal(reinterpret_cast<const char *>(value.data()), size);
std::string globalName = fir::factory::uniqueCGIdent(
- KIND == 1 ? "cl"s : "cl"s + std::to_string(KIND), strVal);
+ kind == 1 ? "cl"s : "cl"s + std::to_string(kind), strVal);
fir::GlobalOp global = builder.getNamedGlobal(globalName);
fir::CharacterType type =
- fir::CharacterType::get(builder.getContext(), KIND, len);
+ fir::CharacterType::get(builder.getContext(), kind, len);
if (!global)
global = builder.createGlobalConstant(
loc, type, globalName,
[&](fir::FirOpBuilder &builder) {
- fir::StringLitOp str =
- createStringLitOp<KIND>(builder, loc, value, len);
+ fir::StringLitOp str = createStringLitOp(builder, loc, value, len);
fir::HasValueOp::create(builder, loc, str);
},
builder.createLinkOnceLinkage());
@@ -630,8 +638,8 @@ genInlinedArrayLit(Fortran::lower::AbstractConverter &converter,
if constexpr (T::category == Fortran::common::TypeCategory::Character) {
do {
mlir::Value elementVal =
- genScalarLit<T::kind>(builder, loc, con.At(subscripts), con.LEN(),
- /*outlineInReadOnlyMemory=*/false);
+ genScalarLit(builder, loc, con.At(subscripts), con.LEN(),
+ /*outlineInReadOnlyMemory=*/false);
array =
fir::InsertValueOp::create(builder, loc, arrayTy, array, elementVal,
builder.getArrayAttr(createIdx()));
@@ -653,9 +661,9 @@ genInlinedArrayLit(Fortran::lower::AbstractConverter &converter,
mlir::Type eleTy = mlir::cast<fir::SequenceType>(arrayTy).getElementType();
do {
auto getElementVal = [&]() {
- return builder.createConvert(loc, eleTy,
- genScalarLit<T::category, T::kind>(
- builder, loc, con.At(subscripts)));
+ return builder.createConvert(
+ loc, eleTy,
+ genScalarLit<T::category>(builder, loc, con.At(subscripts)));
};
Fortran::evaluate::ConstantSubscripts nextSubscripts = subscripts;
bool nextIsSame = con.IncrementSubscripts(nextSubscripts) &&
@@ -743,6 +751,7 @@ static fir::ExtendedValue
genArrayLit(Fortran::lower::AbstractConverter &converter, mlir::Location loc,
const Fortran::evaluate::Constant<T> &con,
bool outlineInReadOnlyMemory) {
+ const int kind{con.kind()};
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
Fortran::evaluate::ConstantSubscript size =
Fortran::evaluate::GetSize(con.shape());
@@ -758,8 +767,8 @@ genArrayLit(Fortran::lower::AbstractConverter &converter, mlir::Location loc,
eleTy = Fortran::lower::translateDerivedTypeToFIRType(
converter, con.GetType().GetDerivedTypeSpec());
else
- eleTy = Fortran::lower::getFIRType(builder.getContext(), T::category,
- T::kind, typeParams);
+ eleTy = Fortran::lower::getFIRType(builder.getContext(), T::category, kind,
+ typeParams);
auto arrayTy = fir::SequenceType::get(shape, eleTy);
mlir::Value array = outlineInReadOnlyMemory
? genOutlineArrayLit(converter, loc, arrayTy, con)
@@ -795,8 +804,7 @@ fir::ExtendedValue Fortran::lower::ConstantBuilder<T>::gen(
assert(opt.has_value() && "constant has no value");
if constexpr (T::category == Fortran::common::TypeCategory::Character) {
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
- auto value =
- genScalarLit<T::kind>(builder, loc, opt.value(), constant.LEN(),
+ auto value = genScalarLit(builder, loc, opt.value(), constant.LEN(),
outlineBigConstantsInReadOnlyMemory);
mlir::Value len = builder.createIntegerConstant(
loc, builder.getCharacterLengthType(), constant.LEN());
@@ -807,8 +815,8 @@ fir::ExtendedValue Fortran::lower::ConstantBuilder<T>::gen(
return genScalarLit(converter, loc, *opt, eleTy,
outlineBigConstantsInReadOnlyMemory);
} else {
- return genScalarLit<T::category, T::kind>(converter.getFirOpBuilder(), loc,
- opt.value());
+ return genScalarLit<T::category>(converter.getFirOpBuilder(), loc,
+ opt.value());
}
}
@@ -843,12 +851,11 @@ genConstantValue(Fortran::lower::AbstractConverter &converter,
constantExpr.AsFortran());
}
-template <Fortran::common::TypeCategory TC, int KIND>
+template <Fortran::common::TypeCategory TC>
static fir::ExtendedValue genConstantValue(
Fortran::lower::AbstractConverter &converter, mlir::Location loc,
- const Fortran::evaluate::Expr<Fortran::evaluate::Type<TC, KIND>>
- &constantExpr) {
- using T = Fortran::evaluate::Type<TC, KIND>;
+ const Fortran::evaluate::Expr<Fortran::evaluate::Type<TC>> &constantExpr) {
+ using T = Fortran::evaluate::Type<TC>;
// Initializer folding preserves parentheses around a scalar constant (e.g.
// "integer :: i = (42)"). UnwrapConstantValue looks through them.
if (const auto *constant =
diff --git a/flang/lib/Lower/ConvertExprToHLFIR.cpp b/flang/lib/Lower/ConvertExprToHLFIR.cpp
index 24c990141be552..fd46a4b721563a 100644
--- a/flang/lib/Lower/ConvertExprToHLFIR.cpp
+++ b/flang/lib/Lower/ConvertExprToHLFIR.cpp
@@ -87,7 +87,7 @@ class HlfirDesignatorBuilder {
// Character designators variant contains substrings
using CharacterDesignators =
decltype(Fortran::evaluate::Designator<Fortran::evaluate::Type<
- Fortran::evaluate::TypeCategory::Character, 1>>::u);
+ Fortran::evaluate::TypeCategory::Character>>::u);
hlfir::EntityWithAttributes
gen(const CharacterDesignators &designatorVariant,
bool vectorSubscriptDesignatorToValue = true) {
@@ -100,7 +100,7 @@ class HlfirDesignatorBuilder {
// Character designators variant contains complex parts
using RealDesignators =
decltype(Fortran::evaluate::Designator<Fortran::evaluate::Type<
- Fortran::evaluate::TypeCategory::Real, 4>>::u);
+ Fortran::evaluate::TypeCategory::Real>>::u);
hlfir::EntityWithAttributes
gen(const RealDesignators &designatorVariant,
bool vectorSubscriptDesignatorToValue = true) {
@@ -113,7 +113,7 @@ class HlfirDesignatorBuilder {
// All other designators are similar
using OtherDesignators =
decltype(Fortran::evaluate::Designator<Fortran::evaluate::Type<
- Fortran::evaluate::TypeCategory::Integer, 4>>::u);
+ Fortran::evaluate::TypeCategory::Integer>>::u);
hlfir::EntityWithAttributes
gen(const OtherDesignators &designatorVariant,
bool vectorSubscriptDesignatorToValue = true) {
@@ -1152,11 +1152,11 @@ struct BinaryOp {};
#undef GENBIN
#define GENBIN(GenBinEvOp, GenBinTyCat, GenBinFirOp) \
- template <int KIND> \
- struct BinaryOp<Fortran::evaluate::GenBinEvOp<Fortran::evaluate::Type< \
- Fortran::common::TypeCategory::GenBinTyCat, KIND>>> { \
- using Op = Fortran::evaluate::GenBinEvOp<Fortran::evaluate::Type< \
- Fortran::common::TypeCategory::GenBinTyCat, KIND>>; \
+ template <> \
+ struct BinaryOp<Fortran::evaluate::GenBinEvOp< \
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::GenBinTyCat>>> { \
+ using Op = Fortran::evaluate::GenBinEvOp< \
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::GenBinTyCat>>; \
static hlfir::EntityWithAttributes gen(mlir::Location loc, \
fir::FirOpBuilder &builder, \
const Op &, hlfir::Entity lhs, \
@@ -1189,16 +1189,18 @@ GENBIN(Divide, Integer, mlir::arith::DivSIOp)
GENBIN(Divide, Unsigned, mlir::arith::DivUIOp)
GENBIN(Divide, Real, mlir::arith::DivFOp)
-template <int KIND>
+template <>
struct BinaryOp<Fortran::evaluate::Divide<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex>>> {
using Op = Fortran::evaluate::Divide<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
- fir::FirOpBuilder &builder, const Op &,
- hlfir::Entity lhs, hlfir::Entity rhs) {
+ fir::FirOpBuilder &builder,
+ const Op &op, hlfir::Entity lhs,
+ hlfir::Entity rhs) {
+ const int kind = op.kind();
mlir::Type ty = Fortran::lower::getFIRType(
- builder.getContext(), Fortran::common::TypeCategory::Complex, KIND,
+ builder.getContext(), Fortran::common::TypeCategory::Complex, kind,
/*params=*/{});
// TODO: Ideally, complex number division operations should always be
@@ -1214,36 +1216,38 @@ struct BinaryOp<Fortran::evaluate::Divide<
}
};
-template <Fortran::common::TypeCategory TC, int KIND>
-struct BinaryOp<Fortran::evaluate::Power<Fortran::evaluate::Type<TC, KIND>>> {
- using Op = Fortran::evaluate::Power<Fortran::evaluate::Type<TC, KIND>>;
+template <Fortran::common::TypeCategory TC>
+struct BinaryOp<Fortran::evaluate::Power<Fortran::evaluate::Type<TC>>> {
+ using Op = Fortran::evaluate::Power<Fortran::evaluate::Type<TC>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
- fir::FirOpBuilder &builder, const Op &,
- hlfir::Entity lhs, hlfir::Entity rhs) {
- mlir::Type ty = Fortran::lower::getFIRType(builder.getContext(), TC, KIND,
+ fir::FirOpBuilder &builder,
+ const Op &op, hlfir::Entity lhs,
+ hlfir::Entity rhs) {
+ const int kind = op.kind();
+ mlir::Type ty = Fortran::lower::getFIRType(builder.getContext(), TC, kind,
/*params=*/{});
return hlfir::EntityWithAttributes{fir::genPow(builder, loc, ty, lhs, rhs)};
}
};
-template <Fortran::common::TypeCategory TC, int KIND>
+template <Fortran::common::TypeCategory TC>
struct BinaryOp<
- Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<TC, KIND>>> {
- using Op =
- Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<TC, KIND>>;
+ Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<TC>>> {
+ using Op = Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<TC>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
- fir::FirOpBuilder &builder, const Op &,
- hlfir::Entity lhs, hlfir::Entity rhs) {
- mlir::Type ty = Fortran::lower::getFIRType(builder.getContext(), TC, KIND,
+ fir::FirOpBuilder &builder,
+ const Op &op, hlfir::Entity lhs,
+ hlfir::Entity rhs) {
+ const int kind = op.kind();
+ mlir::Type ty = Fortran::lower::getFIRType(builder.getContext(), TC, kind,
/*params=*/{});
return hlfir::EntityWithAttributes{fir::genPow(builder, loc, ty, lhs, rhs)};
}
};
-template <Fortran::common::TypeCategory TC, int KIND>
-struct BinaryOp<
- Fortran::evaluate::Extremum<Fortran::evaluate::Type<TC, KIND>>> {
- using Op = Fortran::evaluate::Extremum<Fortran::evaluate::Type<TC, KIND>>;
+template <Fortran::common::TypeCategory TC>
+struct BinaryOp<Fortran::evaluate::Extremum<Fortran::evaluate::Type<TC>>> {
+ using Op = Fortran::evaluate::Extremum<Fortran::evaluate::Type<TC>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs,
@@ -1261,11 +1265,11 @@ struct BinaryOp<
// MIN and MAX are represented as evaluate::ProcedureRef and are not going
// through here. So far the frontend does not generate character Extremum so
// there is no way to test it.
-template <int KIND>
+template <>
struct BinaryOp<Fortran::evaluate::Extremum<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Character, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Character>>> {
using Op = Fortran::evaluate::Extremum<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Character, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Character>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &, const Op &,
hlfir::Entity, hlfir::Entity) {
@@ -1298,11 +1302,11 @@ translateSignedRelational(Fortran::common::RelationalOperator rop) {
llvm_unreachable("unhandled INTEGER relational operator");
}
-template <int KIND>
+template <>
struct BinaryOp<Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer>>> {
using Op = Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs,
@@ -1314,17 +1318,16 @@ struct BinaryOp<Fortran::evaluate::Relational<
}
};
-template <int KIND>
+template <>
struct BinaryOp<Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned>>> {
using Op = Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs,
hlfir::Entity rhs) {
- int bits = Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer,
- KIND>::Scalar::bits;
+ int bits = 8 * op.left().GetType().value().kind();
auto signlessType = mlir::IntegerType::get(
builder.getContext(), bits,
mlir::IntegerType::SignednessSemantics::Signless);
@@ -1337,11 +1340,11 @@ struct BinaryOp<Fortran::evaluate::Relational<
}
};
-template <int KIND>
+template <>
struct BinaryOp<Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Real, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Real>>> {
using Op = Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Real, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Real>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs,
@@ -1353,11 +1356,11 @@ struct BinaryOp<Fortran::evaluate::Relational<
}
};
-template <int KIND>
+template <>
struct BinaryOp<Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex>>> {
using Op = Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs,
@@ -1369,11 +1372,11 @@ struct BinaryOp<Fortran::evaluate::Relational<
}
};
-template <int KIND>
+template <>
struct BinaryOp<Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Character, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Character>>> {
using Op = Fortran::evaluate::Relational<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Character, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Character>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs,
@@ -1384,9 +1387,9 @@ struct BinaryOp<Fortran::evaluate::Relational<
}
};
-template <int KIND>
-struct BinaryOp<Fortran::evaluate::LogicalOperation<KIND>> {
- using Op = Fortran::evaluate::LogicalOperation<KIND>;
+template <>
+struct BinaryOp<Fortran::evaluate::LogicalOperation> {
+ using Op = Fortran::evaluate::LogicalOperation;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs,
@@ -1441,9 +1444,9 @@ struct BinaryOp<Fortran::evaluate::LogicalOperation<KIND>> {
}
};
-template <int KIND>
-struct BinaryOp<Fortran::evaluate::ComplexConstructor<KIND>> {
- using Op = Fortran::evaluate::ComplexConstructor<KIND>;
+template <>
+struct BinaryOp<Fortran::evaluate::ComplexConstructor> {
+ using Op = Fortran::evaluate::ComplexConstructor;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder, const Op &,
hlfir::Entity lhs, hlfir::Entity rhs) {
@@ -1453,9 +1456,9 @@ struct BinaryOp<Fortran::evaluate::ComplexConstructor<KIND>> {
}
};
-template <int KIND>
-struct BinaryOp<Fortran::evaluate::SetLength<KIND>> {
- using Op = Fortran::evaluate::SetLength<KIND>;
+template <>
+struct BinaryOp<Fortran::evaluate::SetLength> {
+ using Op = Fortran::evaluate::SetLength;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder, const Op &,
hlfir::Entity string,
@@ -1474,9 +1477,9 @@ struct BinaryOp<Fortran::evaluate::SetLength<KIND>> {
}
};
-template <int KIND>
-struct BinaryOp<Fortran::evaluate::Concat<KIND>> {
- using Op = Fortran::evaluate::Concat<KIND>;
+template <>
+struct BinaryOp<Fortran::evaluate::Concat> {
+ using Op = Fortran::evaluate::Concat;
hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder, const Op &,
hlfir::Entity lhs, hlfir::Entity rhs) {
@@ -1511,9 +1514,9 @@ struct BinaryOp<Fortran::evaluate::Concat<KIND>> {
template <typename T>
struct UnaryOp {};
-template <int KIND>
-struct UnaryOp<Fortran::evaluate::Not<KIND>> {
- using Op = Fortran::evaluate::Not<KIND>;
+template <>
+struct UnaryOp<Fortran::evaluate::Not> {
+ using Op = Fortran::evaluate::Not;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder, const Op &,
hlfir::Entity lhs) {
@@ -1524,17 +1527,18 @@ struct UnaryOp<Fortran::evaluate::Not<KIND>> {
}
};
-template <int KIND>
+template <>
struct UnaryOp<Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer>>> {
using Op = Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
- fir::FirOpBuilder &builder, const Op &,
- hlfir::Entity lhs) {
+ fir::FirOpBuilder &builder,
+ const Op &op, hlfir::Entity lhs) {
+ const int kind = op.kind();
// Like LLVM, integer negation is the binary op "0 - value"
mlir::Type type = Fortran::lower::getFIRType(
- builder.getContext(), Fortran::common::TypeCategory::Integer, KIND,
+ builder.getContext(), Fortran::common::TypeCategory::Integer, kind,
/*params=*/{});
mlir::Value zero = builder.createIntegerConstant(loc, type, 0);
return hlfir::EntityWithAttributes{
@@ -1542,16 +1546,17 @@ struct UnaryOp<Fortran::evaluate::Negate<
}
};
-template <int KIND>
+template <>
struct UnaryOp<Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned>>> {
using Op = Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Unsigned>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
- fir::FirOpBuilder &builder, const Op &,
- hlfir::Entity lhs) {
- int bits = Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer,
- KIND>::Scalar::bits;
+ fir::FirOpBuilder &builder,
+ const Op &op, hlfir::Entity lhs) {
+ const int kind = op.kind();
+ int bits = Fortran::evaluate::Type<
+ Fortran::common::TypeCategory::Integer>::Scalar::bits(kind);
mlir::Type signlessType = mlir::IntegerType::get(
builder.getContext(), bits,
mlir::IntegerType::SignednessSemantics::Signless);
@@ -1564,11 +1569,11 @@ struct UnaryOp<Fortran::evaluate::Negate<
}
};
-template <int KIND>
+template <>
struct UnaryOp<Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Real, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Real>>> {
using Op = Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Real, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Real>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder, const Op &,
hlfir::Entity lhs) {
@@ -1577,11 +1582,11 @@ struct UnaryOp<Fortran::evaluate::Negate<
}
};
-template <int KIND>
+template <>
struct UnaryOp<Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, KIND>>> {
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex>>> {
using Op = Fortran::evaluate::Negate<
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, KIND>>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex>>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder, const Op &,
hlfir::Entity lhs) {
@@ -1589,9 +1594,9 @@ struct UnaryOp<Fortran::evaluate::Negate<
}
};
-template <int KIND>
-struct UnaryOp<Fortran::evaluate::ComplexComponent<KIND>> {
- using Op = Fortran::evaluate::ComplexComponent<KIND>;
+template <>
+struct UnaryOp<Fortran::evaluate::ComplexComponent> {
+ using Op = Fortran::evaluate::ComplexComponent;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
fir::FirOpBuilder &builder,
const Op &op, hlfir::Entity lhs) {
@@ -1622,21 +1627,19 @@ struct UnaryOp<Fortran::evaluate::Parentheses<T>> {
}
};
-template <Fortran::common::TypeCategory TC1, int KIND,
- Fortran::common::TypeCategory TC2>
-struct UnaryOp<
- Fortran::evaluate::Convert<Fortran::evaluate::Type<TC1, KIND>, TC2>> {
- using Op =
- Fortran::evaluate::Convert<Fortran::evaluate::Type<TC1, KIND>, TC2>;
+template <Fortran::common::TypeCategory TC1, Fortran::common::TypeCategory TC2>
+struct UnaryOp<Fortran::evaluate::Convert<Fortran::evaluate::Type<TC1>, TC2>> {
+ using Op = Fortran::evaluate::Convert<Fortran::evaluate::Type<TC1>, TC2>;
static hlfir::EntityWithAttributes gen(mlir::Location loc,
- fir::FirOpBuilder &builder, const Op &,
- hlfir::Entity lhs) {
+ fir::FirOpBuilder &builder,
+ const Op &op, hlfir::Entity lhs) {
+ int kind = op.kind();
if constexpr (TC1 == Fortran::common::TypeCategory::Character &&
TC2 == TC1) {
- return hlfir::convertCharacterKind(loc, builder, lhs, KIND);
+ return hlfir::convertCharacterKind(loc, builder, lhs, kind);
}
mlir::Type type = Fortran::lower::getFIRType(builder.getContext(), TC1,
- KIND, /*params=*/{});
+ kind, /*params=*/{});
mlir::Value res = builder.convertWithSemantics(loc, type, lhs);
return hlfir::EntityWithAttributes{res};
}
@@ -1689,7 +1692,7 @@ class HlfirBuilder {
// least one operand is not constant (otherwise folds). For all other
// intrinsics, semantics converts BOZ to the expected type before lowering.
Fortran::evaluate::Constant<Fortran::evaluate::LargestInt> intConstant{
- expr};
+ Fortran::evaluate::LargestIntKind, expr};
return gen(intConstant);
}
@@ -1762,6 +1765,7 @@ class HlfirBuilder {
template <typename D, typename R, typename O>
hlfir::EntityWithAttributes
gen(const Fortran::evaluate::Operation<D, R, O> &op) {
+ const int rKind = op.kind();
auto &builder = getBuilder();
mlir::Location loc = getLoc();
const int rank = op.Rank();
@@ -1784,7 +1788,7 @@ class HlfirBuilder {
getConverter(), op.derived().GetType().GetDerivedTypeSpec());
} else {
elementType =
- Fortran::lower::getFIRType(builder.getContext(), R::category, R::kind,
+ Fortran::lower::getFIRType(builder.getContext(), R::category, rKind,
/*params=*/{});
}
mlir::Value shape = hlfir::genShape(loc, builder, left);
@@ -1807,6 +1811,7 @@ class HlfirBuilder {
template <typename D, typename R, typename LO, typename RO>
hlfir::EntityWithAttributes
gen(const Fortran::evaluate::Operation<D, R, LO, RO> &op) {
+ const int rKind = op.kind();
auto &builder = getBuilder();
mlir::Location loc = getLoc();
const int rank = op.Rank();
@@ -1837,7 +1842,7 @@ class HlfirBuilder {
// Elemental expression.
mlir::Type elementType =
- Fortran::lower::getFIRType(builder.getContext(), R::category, R::kind,
+ Fortran::lower::getFIRType(builder.getContext(), R::category, rKind,
/*params=*/{});
// TODO: "merge" shape, get cst shape from front-end if possible.
// Prefer a compile-time constant shape to get a statically shaped result.
@@ -1905,8 +1910,8 @@ class HlfirBuilder {
getStmtCtx())
.genNamedEntity(desc.base());
using ResTy = Fortran::evaluate::DescriptorInquiry::Result;
- mlir::Type resultType =
- getConverter().genType(ResTy::category, ResTy::kind);
+ const int resKind = Fortran::evaluate::DescriptorInquiry::kind();
+ mlir::Type resultType = getConverter().genType(ResTy::category, resKind);
auto castResult = [&](mlir::Value v) {
return hlfir::EntityWithAttributes{
builder.createConvert(loc, resultType, v)};
diff --git a/flang/lib/Lower/ConvertType.cpp b/flang/lib/Lower/ConvertType.cpp
index 0fdbdfcc744243..a2c10f0bd821f8 100644
--- a/flang/lib/Lower/ConvertType.cpp
+++ b/flang/lib/Lower/ConvertType.cpp
@@ -53,10 +53,9 @@ static mlir::Type genRealType(mlir::MLIRContext *context, int kind) {
llvm_unreachable("REAL type translation not implemented");
}
-template <int KIND>
-int getIntegerBits() {
- return Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer,
- KIND>::Scalar::bits;
+static int getIntegerBits(int kind) {
+ return Fortran::evaluate::Type<
+ Fortran::common::TypeCategory::Integer>::Scalar::bits(kind);
}
static mlir::Type genIntegerType(mlir::MLIRContext *context, int kind,
bool isUnsigned = false) {
@@ -66,18 +65,7 @@ static mlir::Type genIntegerType(mlir::MLIRContext *context, int kind,
(isUnsigned ? mlir::IntegerType::SignednessSemantics::Unsigned
: mlir::IntegerType::SignednessSemantics::Signless);
- switch (kind) {
- case 1:
- return mlir::IntegerType::get(context, getIntegerBits<1>(), signedness);
- case 2:
- return mlir::IntegerType::get(context, getIntegerBits<2>(), signedness);
- case 4:
- return mlir::IntegerType::get(context, getIntegerBits<4>(), signedness);
- case 8:
- return mlir::IntegerType::get(context, getIntegerBits<8>(), signedness);
- case 16:
- return mlir::IntegerType::get(context, getIntegerBits<16>(), signedness);
- }
+ return mlir::IntegerType::get(context, getIntegerBits(kind), signedness);
}
llvm_unreachable("INTEGER or UNSIGNED kind not translated");
}
@@ -493,15 +481,15 @@ struct TypeBuilderImpl {
// To get the character length from a symbol, make an fold a designator for
// the symbol to cover the case where the symbol is an assumed length named
// constant and its length comes from its init expression length.
- template <int Kind>
fir::SequenceType::Extent
- getCharacterLengthHelper(const Fortran::semantics::Symbol &symbol) {
+ getCharacterLengthHelper(int kind, const Fortran::semantics::Symbol &symbol) {
using TC =
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Character, Kind>;
+ Fortran::evaluate::Type<Fortran::common::TypeCategory::Character>;
auto designator = Fortran::evaluate::Fold(
converter.getFoldingContext(),
- Fortran::evaluate::Expr<TC>{Fortran::evaluate::Designator<TC>{symbol}});
- if (auto len = toInt64(std::move(designator.LEN())))
+ Fortran::evaluate::Expr<TC>{
+ Fortran::evaluate::Designator<TC>{kind, symbol}});
+ if (auto len = toInt64(designator.LEN()))
return *len;
return fir::SequenceType::getUnknownExtent();
}
@@ -524,15 +512,7 @@ struct TypeBuilderImpl {
llvm::report_fatal_error("not a character symbol");
int kind =
toInt64(Fortran::common::Clone(type->AsIntrinsic()->kind())).value();
- switch (kind) {
- case 1:
- return getCharacterLengthHelper<1>(symbol);
- case 2:
- return getCharacterLengthHelper<2>(symbol);
- case 4:
- return getCharacterLengthHelper<4>(symbol);
- }
- llvm_unreachable("unknown character kind");
+ return getCharacterLengthHelper(kind, symbol);
}
template <typename A>
diff --git a/flang/lib/Lower/OpenMP/Atomic.cpp b/flang/lib/Lower/OpenMP/Atomic.cpp
index 37c856795defe1..c2ac17c21c34d0 100644
--- a/flang/lib/Lower/OpenMP/Atomic.cpp
+++ b/flang/lib/Lower/OpenMP/Atomic.cpp
@@ -679,18 +679,15 @@ void Fortran::lower::omp::lowerAtomic(
common::visit(
[&](const auto &kindLogical) {
using LogicalExpr = std::decay_t<decltype(kindLogical)>;
- constexpr int K = LogicalExpr::Result::kind;
if (const auto *logOp =
- std::get_if<evaluate::LogicalOperation<K>>(
- &kindLogical.u)) {
+ std::get_if<evaluate::LogicalOperation>(&kindLogical.u)) {
if (logOp->logicalOperator == common::LogicalOperator::Eqv ||
logOp->logicalOperator == common::LogicalOperator::Neqv) {
relOpr =
(logOp->logicalOperator == common::LogicalOperator::Eqv)
? common::RelationalOperator::EQ
: common::RelationalOperator::NE;
- using Operand =
- typename evaluate::LogicalOperation<K>::Operand;
+ using Operand = typename evaluate::LogicalOperation::Operand;
auto leftExpr = evaluate::AsGenericExpr(
evaluate::Expr<Operand>{logOp->left()});
auto rightExpr = evaluate::AsGenericExpr(
diff --git a/flang/lib/Lower/OpenMP/OpenMP.cpp b/flang/lib/Lower/OpenMP/OpenMP.cpp
index 280f71de33388b..1df16bb4d0704e 100644
--- a/flang/lib/Lower/OpenMP/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP/OpenMP.cpp
@@ -7306,7 +7306,7 @@ static void genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
// Map standard OpenMP foreign-runtime identifier strings to
// their well-known integer values (OpenMP 5.1, Table 22.2).
auto frId = llvm::StringSwitch<std::optional<int64_t>>(
- llvm::StringRef(*str).lower())
+ str->AsStringRef()->lower())
.Case("cuda", 1)
.Case("cuda_driver", 2)
.Case("opencl", 3)
@@ -7596,7 +7596,7 @@ static void genErrorDirective(lower::AbstractConverter &converter,
if (args.message) {
if (auto expr = semantics::omp::GetEvaluateExpr(*args.message)) {
if (auto val = evaluate::GetScalarConstantValue<evaluate::Ascii>(*expr))
- message = *val;
+ message = val->AsStdString();
else
messageExpr = expr;
}
diff --git a/flang/lib/Lower/Support/Utils.cpp b/flang/lib/Lower/Support/Utils.cpp
index 9431daaddf1aab..b54bb9b3886dd1 100644
--- a/flang/lib/Lower/Support/Utils.cpp
+++ b/flang/lib/Lower/Support/Utils.cpp
@@ -97,65 +97,72 @@ class HashEvaluateExpr {
static unsigned getHashValue(const Fortran::evaluate::ComplexPart &x) {
return getHashValue(x.complex()) - static_cast<unsigned>(x.part());
}
- template <Fortran::common::TypeCategory TC1, int KIND,
+ template <Fortran::common::TypeCategory TC1,
Fortran::common::TypeCategory TC2>
static unsigned getHashValue(
- const Fortran::evaluate::Convert<Fortran::evaluate::Type<TC1, KIND>, TC2>
- &x) {
+ const Fortran::evaluate::Convert<Fortran::evaluate::Type<TC1>, TC2> &x) {
+ const int kind{x.kind()};
return getHashValue(x.left()) - (static_cast<unsigned>(TC1) + 2u) -
- (static_cast<unsigned>(KIND) + 5u);
+ (static_cast<unsigned>(kind) + 5u);
}
- template <int KIND>
- static unsigned
- getHashValue(const Fortran::evaluate::ComplexComponent<KIND> &x) {
+ static unsigned getHashValue(const Fortran::evaluate::ComplexComponent &x) {
+ const int kind{x.kind()};
return getHashValue(x.left()) -
- (static_cast<unsigned>(x.isImaginaryPart) + 1u) * 3u;
+ (static_cast<unsigned>(x.isImaginaryPart) + 1u) * 3u +
+ static_cast<unsigned>(kind);
}
template <typename T>
static unsigned getHashValue(const Fortran::evaluate::Parentheses<T> &x) {
return getHashValue(x.left()) * 17u;
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static unsigned getHashValue(
- const Fortran::evaluate::Negate<Fortran::evaluate::Type<TC, KIND>> &x) {
+ const Fortran::evaluate::Negate<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return getHashValue(x.left()) - (static_cast<unsigned>(TC) + 5u) -
- (static_cast<unsigned>(KIND) + 7u);
+ (static_cast<unsigned>(kind) + 7u);
}
- template <Fortran::common::TypeCategory TC, int KIND>
- static unsigned getHashValue(
- const Fortran::evaluate::Add<Fortran::evaluate::Type<TC, KIND>> &x) {
+ template <Fortran::common::TypeCategory TC>
+ static unsigned
+ getHashValue(const Fortran::evaluate::Add<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) + getHashValue(x.right())) * 23u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND);
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind);
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static unsigned getHashValue(
- const Fortran::evaluate::Subtract<Fortran::evaluate::Type<TC, KIND>> &x) {
+ const Fortran::evaluate::Subtract<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) - getHashValue(x.right())) * 19u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND);
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind);
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static unsigned getHashValue(
- const Fortran::evaluate::Multiply<Fortran::evaluate::Type<TC, KIND>> &x) {
+ const Fortran::evaluate::Multiply<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) + getHashValue(x.right())) * 29u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND);
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind);
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static unsigned getHashValue(
- const Fortran::evaluate::Divide<Fortran::evaluate::Type<TC, KIND>> &x) {
+ const Fortran::evaluate::Divide<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) - getHashValue(x.right())) * 31u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND);
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind);
}
- template <Fortran::common::TypeCategory TC, int KIND>
- static unsigned getHashValue(
- const Fortran::evaluate::Power<Fortran::evaluate::Type<TC, KIND>> &x) {
+ template <Fortran::common::TypeCategory TC>
+ static unsigned
+ getHashValue(const Fortran::evaluate::Power<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) - getHashValue(x.right())) * 37u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND);
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind);
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static unsigned getHashValue(
- const Fortran::evaluate::Extremum<Fortran::evaluate::Type<TC, KIND>> &x) {
+ const Fortran::evaluate::Extremum<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) + getHashValue(x.right())) * 41u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND) +
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind) +
static_cast<unsigned>(x.ordering) * 7u;
}
template <typename T>
@@ -163,28 +170,27 @@ class HashEvaluateExpr {
return getHashValue(x.condition()) * 151u -
getHashValue(x.thenValue()) * 3u + getHashValue(x.elseValue());
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static unsigned getHashValue(
- const Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<TC, KIND>>
- &x) {
+ const Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) - getHashValue(x.right())) * 43u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND);
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind);
}
- template <int KIND>
- static unsigned
- getHashValue(const Fortran::evaluate::ComplexConstructor<KIND> &x) {
+ static unsigned getHashValue(const Fortran::evaluate::ComplexConstructor &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) - getHashValue(x.right())) * 47u +
- static_cast<unsigned>(KIND);
+ static_cast<unsigned>(kind);
}
- template <int KIND>
- static unsigned getHashValue(const Fortran::evaluate::Concat<KIND> &x) {
+ static unsigned getHashValue(const Fortran::evaluate::Concat &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) - getHashValue(x.right())) * 53u +
- static_cast<unsigned>(KIND);
+ static_cast<unsigned>(kind);
}
- template <int KIND>
- static unsigned getHashValue(const Fortran::evaluate::SetLength<KIND> &x) {
+ static unsigned getHashValue(const Fortran::evaluate::SetLength &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) - getHashValue(x.right())) * 59u +
- static_cast<unsigned>(KIND);
+ static_cast<unsigned>(kind);
}
static unsigned getHashValue(const Fortran::semantics::SymbolRef &sym) {
return getHashValue(sym.get());
@@ -251,22 +257,19 @@ class HashEvaluateExpr {
// FIXME: hash the contents.
return 149u;
}
- template <int KIND>
- static unsigned getHashValue(const Fortran::evaluate::Not<KIND> &x) {
- return getHashValue(x.left()) * 61u + static_cast<unsigned>(KIND);
+ static unsigned getHashValue(const Fortran::evaluate::Not &x) {
+ return getHashValue(x.left()) * 61u;
}
- template <int KIND>
- static unsigned
- getHashValue(const Fortran::evaluate::LogicalOperation<KIND> &x) {
+ static unsigned getHashValue(const Fortran::evaluate::LogicalOperation &x) {
unsigned result = getHashValue(x.left()) + getHashValue(x.right());
return result * 67u + static_cast<unsigned>(x.logicalOperator) * 5u;
}
- template <Fortran::common::TypeCategory TC, int KIND>
+ template <Fortran::common::TypeCategory TC>
static unsigned getHashValue(
- const Fortran::evaluate::Relational<Fortran::evaluate::Type<TC, KIND>>
- &x) {
+ const Fortran::evaluate::Relational<Fortran::evaluate::Type<TC>> &x) {
+ const int kind{x.kind()};
return (getHashValue(x.left()) + getHashValue(x.right())) * 71u +
- static_cast<unsigned>(TC) + static_cast<unsigned>(KIND) +
+ static_cast<unsigned>(TC) + static_cast<unsigned>(kind) +
static_cast<unsigned>(x.opr) * 11u;
}
template <typename A>
@@ -284,10 +287,9 @@ class HashEvaluateExpr {
return Fortran::common::visit(
[&](const auto &v) { return getHashValue(v); }, x.u);
}
- template <int BITS>
static unsigned
- getHashValue(const Fortran::evaluate::value::Integer<BITS> &x) {
- return static_cast<unsigned>(x.ToSInt());
+ getHashValue(const Fortran::evaluate::value::IntegerValue &x) {
+ return static_cast<unsigned>(x.ToInt64());
}
static unsigned getHashValue(const Fortran::evaluate::NullPointer &x) {
return ~179u;
@@ -374,84 +376,81 @@ class IsEqualEvaluateExpr {
template <typename A, Fortran::common::TypeCategory TC2>
static bool isEqual(const Fortran::evaluate::Convert<A, TC2> &x,
const Fortran::evaluate::Convert<A, TC2> &y) {
- return isEqual(x.left(), y.left());
+ return x.kind() == y.kind() && isEqual(x.left(), y.left());
}
- template <int KIND>
- static bool isEqual(const Fortran::evaluate::ComplexComponent<KIND> &x,
- const Fortran::evaluate::ComplexComponent<KIND> &y) {
- return isEqual(x.left(), y.left()) &&
+ static bool isEqual(const Fortran::evaluate::ComplexComponent &x,
+ const Fortran::evaluate::ComplexComponent &y) {
+ return x.kind() == y.kind() && isEqual(x.left(), y.left()) &&
x.isImaginaryPart == y.isImaginaryPart;
}
template <typename T>
static bool isEqual(const Fortran::evaluate::Parentheses<T> &x,
const Fortran::evaluate::Parentheses<T> &y) {
- return isEqual(x.left(), y.left());
+ return x.kind() == y.kind() && isEqual(x.left(), y.left());
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Negate<A> &x,
const Fortran::evaluate::Negate<A> &y) {
- return isEqual(x.left(), y.left());
+ return x.kind() == y.kind() && isEqual(x.left(), y.left());
}
template <typename A>
static bool isBinaryEqual(const A &x, const A &y) {
- return isEqual(x.left(), y.left()) && isEqual(x.right(), y.right());
+ return x.kind() == y.kind() && isEqual(x.left(), y.left()) &&
+ isEqual(x.right(), y.right());
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Add<A> &x,
const Fortran::evaluate::Add<A> &y) {
- return isBinaryEqual(x, y);
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Subtract<A> &x,
const Fortran::evaluate::Subtract<A> &y) {
- return isBinaryEqual(x, y);
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Multiply<A> &x,
const Fortran::evaluate::Multiply<A> &y) {
- return isBinaryEqual(x, y);
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Divide<A> &x,
const Fortran::evaluate::Divide<A> &y) {
- return isBinaryEqual(x, y);
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Power<A> &x,
const Fortran::evaluate::Power<A> &y) {
- return isBinaryEqual(x, y);
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Extremum<A> &x,
const Fortran::evaluate::Extremum<A> &y) {
- return isBinaryEqual(x, y);
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
template <typename T>
static bool isEqual(const Fortran::evaluate::ConditionalExpr<T> &x,
const Fortran::evaluate::ConditionalExpr<T> &y) {
- return isEqual(x.condition(), y.condition()) &&
+ return x.kind() == y.kind() && isEqual(x.condition(), y.condition()) &&
isEqual(x.thenValue(), y.thenValue()) &&
isEqual(x.elseValue(), y.elseValue());
}
template <typename A>
static bool isEqual(const Fortran::evaluate::RealToIntPower<A> &x,
const Fortran::evaluate::RealToIntPower<A> &y) {
- return isBinaryEqual(x, y);
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
- template <int KIND>
- static bool isEqual(const Fortran::evaluate::ComplexConstructor<KIND> &x,
- const Fortran::evaluate::ComplexConstructor<KIND> &y) {
- return isBinaryEqual(x, y);
+ static bool isEqual(const Fortran::evaluate::ComplexConstructor &x,
+ const Fortran::evaluate::ComplexConstructor &y) {
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
- template <int KIND>
- static bool isEqual(const Fortran::evaluate::Concat<KIND> &x,
- const Fortran::evaluate::Concat<KIND> &y) {
- return isBinaryEqual(x, y);
+ static bool isEqual(const Fortran::evaluate::Concat &x,
+ const Fortran::evaluate::Concat &y) {
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
- template <int KIND>
- static bool isEqual(const Fortran::evaluate::SetLength<KIND> &x,
- const Fortran::evaluate::SetLength<KIND> &y) {
- return isBinaryEqual(x, y);
+ static bool isEqual(const Fortran::evaluate::SetLength &x,
+ const Fortran::evaluate::SetLength &y) {
+ return x.kind() == y.kind() && isBinaryEqual(x, y);
}
static bool isEqual(const Fortran::semantics::SymbolRef &x,
const Fortran::semantics::SymbolRef &y) {
@@ -475,7 +474,7 @@ class IsEqualEvaluateExpr {
template <typename A>
static bool isEqual(const Fortran::evaluate::Constant<A> &x,
const Fortran::evaluate::Constant<A> &y) {
- return x == y;
+ return x.kind() == y.kind() && x == y;
}
static bool isEqual(const Fortran::evaluate::ActualArgument &x,
const Fortran::evaluate::ActualArgument &y) {
@@ -526,11 +525,13 @@ class IsEqualEvaluateExpr {
}
static bool isEqual(const Fortran::evaluate::SubscriptInteger &x,
const Fortran::evaluate::SubscriptInteger &y) {
- return x == y;
+ return x.kind() == y.kind() && x == y;
}
template <typename A>
static bool isEqual(const Fortran::evaluate::ArrayConstructor<A> &x,
const Fortran::evaluate::ArrayConstructor<A> &y) {
+ if (x.kind() != y.kind())
+ return false;
bool checkCharacterType = true;
if constexpr (A::category == Fortran::common::TypeCategory::Character) {
checkCharacterType = isEqual(*x.LEN(), *y.LEN());
@@ -541,16 +542,17 @@ class IsEqualEvaluateExpr {
}
static bool isEqual(const Fortran::evaluate::ImpliedDoIndex &x,
const Fortran::evaluate::ImpliedDoIndex &y) {
- return toStringRef(x.name) == toStringRef(y.name);
+ return x.kind() == y.kind() && toStringRef(x.name) == toStringRef(y.name);
}
static bool isEqual(const Fortran::evaluate::TypeParamInquiry &x,
const Fortran::evaluate::TypeParamInquiry &y) {
- return isEqual(x.base(), y.base()) && isEqual(x.parameter(), y.parameter());
+ return x.kind() == y.kind() && isEqual(x.base(), y.base()) &&
+ isEqual(x.parameter(), y.parameter());
}
static bool isEqual(const Fortran::evaluate::DescriptorInquiry &x,
const Fortran::evaluate::DescriptorInquiry &y) {
- return isEqual(x.base(), y.base()) && x.field() == y.field() &&
- x.dimension() == y.dimension();
+ return x.kind() == y.kind() && isEqual(x.base(), y.base()) &&
+ x.field() == y.field() && x.dimension() == y.dimension();
}
static bool isEqual(const Fortran::evaluate::RankOneBoundElement &x,
const Fortran::evaluate::RankOneBoundElement &y) {
@@ -558,6 +560,8 @@ class IsEqualEvaluateExpr {
}
static bool isEqual(const Fortran::evaluate::StructureConstructor &x,
const Fortran::evaluate::StructureConstructor &y) {
+ if (x.kind() != y.kind())
+ return false;
const auto &xValues = x.values();
const auto &yValues = y.values();
if (xValues.size() != yValues.size())
@@ -575,47 +579,52 @@ class IsEqualEvaluateExpr {
}
return true;
}
- template <int KIND>
- static bool isEqual(const Fortran::evaluate::Not<KIND> &x,
- const Fortran::evaluate::Not<KIND> &y) {
- return isEqual(x.left(), y.left());
+ static bool isEqual(const Fortran::evaluate::Not &x,
+ const Fortran::evaluate::Not &y) {
+ return x.kind() == y.kind() && isEqual(x.left(), y.left());
}
- template <int KIND>
- static bool isEqual(const Fortran::evaluate::LogicalOperation<KIND> &x,
- const Fortran::evaluate::LogicalOperation<KIND> &y) {
- return isEqual(x.left(), y.left()) && isEqual(x.right(), y.right());
+ static bool isEqual(const Fortran::evaluate::LogicalOperation &x,
+ const Fortran::evaluate::LogicalOperation &y) {
+ return x.kind() == y.kind() && isEqual(x.left(), y.left()) &&
+ isEqual(x.right(), y.right());
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Relational<A> &x,
const Fortran::evaluate::Relational<A> &y) {
- return isEqual(x.left(), y.left()) && isEqual(x.right(), y.right());
+ return x.kind() == y.kind() && isEqual(x.left(), y.left()) &&
+ isEqual(x.right(), y.right());
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Expr<A> &x,
const Fortran::evaluate::Expr<A> &y) {
- return Fortran::common::visit(
- [&](const auto &v, const auto &w) { return isEqual(v, w); }, x.u, y.u);
+ return x.kind() == y.kind() &&
+ Fortran::common::visit(
+ [&](const auto &v, const auto &w) { return isEqual(v, w); }, x.u,
+ y.u);
}
static bool
isEqual(const Fortran::evaluate::Relational<Fortran::evaluate::SomeType> &x,
const Fortran::evaluate::Relational<Fortran::evaluate::SomeType> &y) {
- return Fortran::common::visit(
- [&](const auto &v, const auto &w) { return isEqual(v, w); }, x.u, y.u);
+ return x.kind() == y.kind() &&
+ Fortran::common::visit(
+ [&](const auto &v, const auto &w) { return isEqual(v, w); }, x.u,
+ y.u);
}
template <typename A>
static bool isEqual(const Fortran::evaluate::Designator<A> &x,
const Fortran::evaluate::Designator<A> &y) {
- return Fortran::common::visit(
- [&](const auto &v, const auto &w) { return isEqual(v, w); }, x.u, y.u);
+ return x.kind() == y.kind() &&
+ Fortran::common::visit(
+ [&](const auto &v, const auto &w) { return isEqual(v, w); }, x.u,
+ y.u);
}
- template <int BITS>
- static bool isEqual(const Fortran::evaluate::value::Integer<BITS> &x,
- const Fortran::evaluate::value::Integer<BITS> &y) {
- return x == y;
+ static bool isEqual(const Fortran::evaluate::value::IntegerValue &x,
+ const Fortran::evaluate::value::IntegerValue &y) {
+ return x.kind() == y.kind() && x == y;
}
static bool isEqual(const Fortran::evaluate::NullPointer &x,
const Fortran::evaluate::NullPointer &y) {
- return true;
+ return x.kind() == y.kind() && true;
}
template <typename A, typename B,
std::enable_if_t<!std::is_same_v<A, B>, bool> = true>
diff --git a/flang/lib/Semantics/check-call.cpp b/flang/lib/Semantics/check-call.cpp
index 8ba83be1327235..7f9095159183a4 100644
--- a/flang/lib/Semantics/check-call.cpp
+++ b/flang/lib/Semantics/check-call.cpp
@@ -271,7 +271,7 @@ static void CheckCharacterActual(evaluate::Expr<evaluate::SomeType> &actual,
ConvertToType(dummy.type.type(), std::move(actual))};
CHECK(converted);
actual = std::move(*converted);
- actualType.set_LEN(SubscriptIntExpr{*dummyLength});
+ actualType.set_LEN(evaluate::MakeSubscriptIntExpr(*dummyLength));
}
}
}
diff --git a/flang/lib/Semantics/check-case.cpp b/flang/lib/Semantics/check-case.cpp
index 7f227cbab618a6..38eab344ed48f9 100644
--- a/flang/lib/Semantics/check-case.cpp
+++ b/flang/lib/Semantics/check-case.cpp
@@ -22,8 +22,8 @@ namespace Fortran::semantics {
template <typename T> class CaseValues {
public:
- CaseValues(SemanticsContext &c, const evaluate::DynamicType &t)
- : context_{c}, caseExprType_{t} {}
+ CaseValues(int kind, SemanticsContext &c, const evaluate::DynamicType &t)
+ : kind_{kind}, context_{c}, caseExprType_{t} {}
void Check(const std::list<parser::CaseConstruct::Case> &cases) {
for (const parser::CaseConstruct::Case &c : cases) {
@@ -61,13 +61,13 @@ template <typename T> class CaseValues {
"CASE range is not allowed for LOGICAL"_err_en_US);
}
}
- cases_.emplace_back(stmt);
+ cases_.emplace_back(kind_, stmt);
cases_.back().lower = std::move(pair.first);
cases_.back().upper = std::move(pair.second);
}
}
},
- [&](const parser::Default &) { cases_.emplace_front(stmt); },
+ [&](const parser::Default &) { cases_.emplace_front(kind_, stmt); },
},
selector.u);
}
@@ -86,7 +86,8 @@ template <typename T> class CaseValues {
context_.foldingContext(), foldingMessages};
auto folded{evaluate::Fold(foldingContext, SomeExpr{*x->v})};
if (auto converted{evaluate::Fold(foldingContext,
- evaluate::ConvertToType(T::GetType(), SomeExpr{folded}))}) {
+ evaluate::ConvertToType(
+ {T::category, kind_}, SomeExpr{folded}))}) {
if (auto value{evaluate::GetScalarConstantValue<T>(*converted)}) {
auto back{evaluate::Fold(foldingContext,
evaluate::ConvertToType(*type, SomeExpr{*converted}))};
@@ -143,22 +144,23 @@ template <typename T> class CaseValues {
}
struct Case {
- explicit Case(const parser::Statement<parser::CaseStmt> &s) : stmt{s} {}
+ explicit Case(int kind, const parser::Statement<parser::CaseStmt> &s)
+ : kind_{kind}, stmt{s} {}
bool IsDefault() const { return !lower && !upper; }
std::string AsFortran() const {
std::string result;
{
llvm::raw_string_ostream bs{result};
if (lower) {
- evaluate::Constant<T>{*lower}.AsFortran(bs << '(');
+ evaluate::Constant<T>{kind_, *lower}.AsFortran(bs << '(');
if (!upper) {
bs << ':';
} else if (*lower != *upper) {
- evaluate::Constant<T>{*upper}.AsFortran(bs << ':');
+ evaluate::Constant<T>{kind_, *upper}.AsFortran(bs << ':');
}
bs << ')';
} else if (upper) {
- evaluate::Constant<T>{*upper}.AsFortran(bs << "(:") << ')';
+ evaluate::Constant<T>{kind_, *upper}.AsFortran(bs << "(:") << ')';
} else {
bs << "DEFAULT";
}
@@ -166,6 +168,7 @@ template <typename T> class CaseValues {
return result;
}
+ int kind_;
const parser::Statement<parser::CaseStmt> &stmt;
std::optional<Value> lower, upper;
};
@@ -215,6 +218,7 @@ template <typename T> class CaseValues {
}
}
+ int kind_;
SemanticsContext &context_;
const evaluate::DynamicType &caseExprType_;
std::list<Case> cases_;
@@ -224,9 +228,9 @@ template <typename T> class CaseValues {
template <TypeCategory CAT> struct TypeVisitor {
using Result = bool;
using Types = evaluate::CategoryTypes<CAT>;
- template <typename T> Result Test() {
- if (T::kind == exprType.kind()) {
- CaseValues<T>(context, exprType).Check(caseList);
+ template <typename T> Result Test(int kind) {
+ if (kind == exprType.kind()) {
+ CaseValues<T>(kind, context, exprType).Check(caseList);
return true;
} else {
return false;
@@ -341,19 +345,19 @@ void CaseChecker::Enter(const parser::CaseConstruct &construct) {
std::get<std::list<parser::CaseConstruct::Case>>(construct.t)};
switch (exprType->category()) {
case TypeCategory::Integer:
- common::SearchTypes(
+ evaluate::SearchTypes(
TypeVisitor<TypeCategory::Integer>{context_, *exprType, caseList});
return;
case TypeCategory::Unsigned:
- common::SearchTypes(
+ evaluate::SearchTypes(
TypeVisitor<TypeCategory::Unsigned>{context_, *exprType, caseList});
return;
case TypeCategory::Logical:
- CaseValues<evaluate::Type<TypeCategory::Logical, 1>>{context_, *exprType}
+ CaseValues<evaluate::Type<TypeCategory::Logical>>{1, context_, *exprType}
.Check(caseList);
return;
case TypeCategory::Character:
- common::SearchTypes(
+ evaluate::SearchTypes(
TypeVisitor<TypeCategory::Character>{context_, *exprType, caseList});
return;
case TypeCategory::Derived:
@@ -361,8 +365,8 @@ void CaseChecker::Enter(const parser::CaseConstruct &construct) {
if (derived->IsEnumerationType()) {
if (ConvertEnumCaseValues(context_, caseList, *derived)) {
evaluate::DynamicType intType{TypeCategory::Integer, 4};
- CaseValues<evaluate::Type<TypeCategory::Integer, 4>>{
- context_, intType}
+ CaseValues<evaluate::Type<TypeCategory::Integer>>{
+ 4, context_, intType}
.Check(caseList);
}
return;
diff --git a/flang/lib/Semantics/check-coarray.cpp b/flang/lib/Semantics/check-coarray.cpp
index 00b97162ff0d4e..a80dbed3f9206a 100644
--- a/flang/lib/Semantics/check-coarray.cpp
+++ b/flang/lib/Semantics/check-coarray.cpp
@@ -209,7 +209,7 @@ void CoarrayChecker::Leave(const parser::SyncImagesStmt &x) {
someInt && evaluate::IsActuallyConstant(*someInt)) {
auto converted{evaluate::Fold(context_.foldingContext(),
evaluate::ConvertToType<evaluate::SubscriptInteger>(
- common::Clone(*someInt)))};
+ evaluate::SubscriptIntegerKind, common::Clone(*someInt)))};
if (const auto *cst{
evaluate::UnwrapConstantValue<evaluate::SubscriptInteger>(
converted)}) {
diff --git a/flang/lib/Semantics/check-data.cpp b/flang/lib/Semantics/check-data.cpp
index e8b7ea2eda63e3..8adf758e319afa 100644
--- a/flang/lib/Semantics/check-data.cpp
+++ b/flang/lib/Semantics/check-data.cpp
@@ -25,7 +25,7 @@ namespace Fortran::semantics {
void DataChecker::Enter(const parser::DataImpliedDo &x) {
const auto &name{parser::UnwrapRef<parser::Name>(
std::get<parser::DataImpliedDo::Bounds>(x.t).Name())};
- int kind{evaluate::ResultType<evaluate::ImpliedDoIndex>::kind};
+ int kind{evaluate::ResultKind<evaluate::ImpliedDoIndex>};
if (const auto dynamicType{evaluate::DynamicType::From(DEREF(name.symbol))}) {
if (dynamicType->category() == TypeCategory::Integer) {
kind = dynamicType->kind();
diff --git a/flang/lib/Semantics/check-io.h b/flang/lib/Semantics/check-io.h
index 96a07ce13f7bba..58714b39352d89 100644
--- a/flang/lib/Semantics/check-io.h
+++ b/flang/lib/Semantics/check-io.h
@@ -91,8 +91,11 @@ class IoChecker : public virtual BaseChecker {
const auto foldExpr{
evaluate::Fold(context_.foldingContext(), common::Clone(*expr))};
if constexpr (std::is_same_v<R, std::string>) {
- return evaluate::GetScalarConstantValue<DefaultCharConstantType>(
- foldExpr);
+ if (auto charVal{
+ evaluate::GetScalarConstantValue<DefaultCharConstantType>(
+ foldExpr)}) {
+ return charVal->AsStdString();
+ }
} else {
static_assert(std::is_same_v<R, std::int64_t>, "unexpected type");
return evaluate::ToInt64(foldExpr);
diff --git a/flang/lib/Semantics/check-omp-atomic.cpp b/flang/lib/Semantics/check-omp-atomic.cpp
index 7db4bdefa65b0e..aa0ac59ac8bdf9 100644
--- a/flang/lib/Semantics/check-omp-atomic.cpp
+++ b/flang/lib/Semantics/check-omp-atomic.cpp
@@ -59,8 +59,7 @@ template <typename...> struct IsIntegral {
static constexpr bool value{false};
};
-template <common::TypeCategory C, int K>
-struct IsIntegral<evaluate::Type<C, K>> {
+template <common::TypeCategory C> struct IsIntegral<evaluate::Type<C>> {
static constexpr bool value{//
C == common::TypeCategory::Integer ||
C == common::TypeCategory::Unsigned};
@@ -72,8 +71,7 @@ template <typename...> struct IsFloatingPoint {
static constexpr bool value{false};
};
-template <common::TypeCategory C, int K>
-struct IsFloatingPoint<evaluate::Type<C, K>> {
+template <common::TypeCategory C> struct IsFloatingPoint<evaluate::Type<C>> {
static constexpr bool value{//
C == common::TypeCategory::Real || C == common::TypeCategory::Complex};
};
@@ -88,8 +86,7 @@ template <typename...> struct IsLogical {
static constexpr bool value{false};
};
-template <common::TypeCategory C, int K>
-struct IsLogical<evaluate::Type<C, K>> {
+template <common::TypeCategory C> struct IsLogical<evaluate::Type<C>> {
static constexpr bool value{C == common::TypeCategory::Logical};
};
@@ -160,7 +157,7 @@ struct ReassocRewriter : public evaluate::rewrite::Identity {
// Since this works with clang, MSVC and at least GCC 8.5, I'm assuming
// that this is some kind of a GCC issue.
using MatchTypes = std::tuple<evaluate::Add<T>, evaluate::Multiply<T>,
- evaluate::LogicalOperation<T::kind>>;
+ evaluate::LogicalOperation>;
#else
using MatchTypes = typename decltype(outer1)::MatchTypes;
#endif
@@ -205,6 +202,7 @@ struct ReassocRewriter : public evaluate::rewrite::Identity {
evaluate::Expr<T> Reconstruct(const S &op, evaluate::Expr<T> atom,
evaluate::Expr<T> op1, evaluate::Expr<T> op2) {
using TypeS = llvm::remove_cvref_t<decltype(op)>;
+ const int KindS{op.kind()};
// This function has to be semantically correct for all possible types
// of S even though at runtime s will only be one of the matched types.
// Limit the construction to the operation types that we tried to match
@@ -212,8 +210,10 @@ struct ReassocRewriter : public evaluate::rewrite::Identity {
if constexpr (!common::HasMember<TypeS, MatchTypes>) {
return evaluate::Expr<T>(TypeS(op));
} else if constexpr (is_logical_v<T>) {
- constexpr int K{T::kind};
- if constexpr (std::is_same_v<TypeS, evaluate::LogicalOperation<K>>) {
+ CHECK(op1.kind() == op2.kind());
+ const int K{op1.kind()};
+ if constexpr (std::is_same_v<TypeS, evaluate::LogicalOperation>) {
+ CHECK(K == KindS);
// Logical operators take an extra argument in their constructor,
// so they need their own reconstruction code.
common::LogicalOperator opCode{op.logicalOperator};
@@ -224,9 +224,9 @@ struct ReassocRewriter : public evaluate::rewrite::Identity {
}
} else {
// Generic reconstruction.
- return evaluate::Expr<T>(TypeS( //
+ return evaluate::Expr<T>(TypeS(KindS, //
std::move(atom),
- evaluate::Expr<T>(TypeS( //
+ evaluate::Expr<T>(TypeS(KindS, //
std::move(op1), std::move(op2)))));
}
}
@@ -1739,6 +1739,7 @@ struct MinMaxRewriter : public evaluate::rewrite::Identity {
template <typename T>
evaluate::Expr<T> operator()(
evaluate::Expr<T> &&x, const evaluate::FunctionRef<T> &f) {
+ const int kind{f.kind()};
const evaluate::ProcedureDesignator &proc = f.proc();
if (!IsMinMax(proc) || f.arguments().size() <= 2) {
return Id::operator()(std::move(x), f);
@@ -1794,10 +1795,10 @@ struct MinMaxRewriter : public evaluate::rewrite::Identity {
}
SomeExpr tmp = evaluate::AsGenericExpr(
- evaluate::FunctionRef<T>(AsRvalue(proc), AsRvalue(nonAtoms)));
+ evaluate::FunctionRef<T>{kind, AsRvalue(proc), AsRvalue(nonAtoms)});
- return evaluate::Expr<T>(evaluate::FunctionRef<T>(
- AsRvalue(proc), {AsActual(*atomArg), AsActual(tmp)}));
+ return evaluate::Expr<T>{evaluate::FunctionRef<T>{
+ kind, AsRvalue(proc), {AsActual(*atomArg), AsActual(tmp)}}};
}
private:
diff --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp
index 274efa64d03d0e..8826ba617d3971 100644
--- a/flang/lib/Semantics/check-omp-structure.cpp
+++ b/flang/lib/Semantics/check-omp-structure.cpp
@@ -2791,7 +2791,7 @@ void OmpStructureChecker::Enter(const parser::OmpErrorDirective &x) {
if (args.message) {
if (auto expr{GetEvaluateExpr(*args.message)}) {
if (auto val{evaluate::GetScalarConstantValue<evaluate::Ascii>(*expr)}) {
- message = *val;
+ message = val->AsStdString();
}
}
}
diff --git a/flang/lib/Semantics/data-to-inits.cpp b/flang/lib/Semantics/data-to-inits.cpp
index cd9ec3059afec4..ad893735eae6c1 100644
--- a/flang/lib/Semantics/data-to-inits.cpp
+++ b/flang/lib/Semantics/data-to-inits.cpp
@@ -207,7 +207,7 @@ bool DataInitializationCompiler<DSV>::Scan(const parser::DataImpliedDo &ido) {
auto foldedUpper{evaluate::Fold(context, SomeExpr{*upperExpr})};
auto upper{ToInt64(foldedUpper)};
if (lower && upper) {
- int kind{evaluate::ResultType<evaluate::ImpliedDoIndex>::kind};
+ int kind{evaluate::ResultKind<evaluate::ImpliedDoIndex>};
if (const auto dynamicType{evaluate::DynamicType::From(*name.symbol)}) {
if (dynamicType->category() == TypeCategory::Integer) {
kind = dynamicType->kind();
@@ -829,7 +829,7 @@ static bool CombineEquivalencedInitialization(
minElementBytes = 1;
}
const DeclTypeSpec &typeSpec{scope.MakeNumericType(
- TypeCategory::Integer, KindExpr{minElementBytes})};
+ TypeCategory::Integer, MakeKindExpr(minElementBytes))};
details.set_type(typeSpec);
ArraySpec arraySpec;
arraySpec.emplace_back(ShapeSpec::MakeExplicit(Bound{
diff --git a/flang/lib/Semantics/dump-expr.cpp b/flang/lib/Semantics/dump-expr.cpp
index 44c7d5a4058cfa..9a581896a8914a 100644
--- a/flang/lib/Semantics/dump-expr.cpp
+++ b/flang/lib/Semantics/dump-expr.cpp
@@ -224,12 +224,7 @@ void DumpEvaluateExpr::Outdent() {
void DumpEvExpr(const SomeExpr &x) { DumpEvaluateExpr::Dump(x); }
void DumpEvExpr(
- const evaluate::Expr<evaluate::Type<common::TypeCategory::Integer, 4>> &x) {
- DumpEvaluateExpr::Dump(x);
-}
-
-void DumpEvExpr(
- const evaluate::Expr<evaluate::Type<common::TypeCategory::Integer, 8>> &x) {
+ const evaluate::Expr<evaluate::Type<common::TypeCategory::Integer>> &x) {
DumpEvaluateExpr::Dump(x);
}
@@ -240,7 +235,7 @@ void DumpEvExpr(const evaluate::DataRef &x) { DumpEvaluateExpr::Dump(x); }
void DumpEvExpr(const evaluate::Substring &x) { DumpEvaluateExpr::Dump(x); }
void DumpEvExpr(
- const evaluate::Designator<evaluate::Type<common::TypeCategory::Integer, 4>>
+ const evaluate::Designator<evaluate::Type<common::TypeCategory::Integer>>
&x) {
DumpEvaluateExpr::Dump(x);
}
diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp
index 633c778915a76d..d007d990514cac 100644
--- a/flang/lib/Semantics/expression.cpp
+++ b/flang/lib/Semantics/expression.cpp
@@ -87,7 +87,7 @@ static std::optional<DynamicTypeWithLength> AnalyzeTypeSpec(
if (auto lenExpr{type.LEN()}) {
type.length = Fold(context,
AsExpr(Extremum<SubscriptInteger>{Ordering::Greater,
- Expr<SubscriptInteger>{0}, std::move(*lenExpr)}));
+ MakeSubscriptIntExpr(0), std::move(*lenExpr)}));
}
return type;
} else {
@@ -728,24 +728,25 @@ int ExpressionAnalyzer::AnalyzeKindParam(
template <typename TYPES, TypeCategory CAT> struct IntTypeVisitor {
using Result = MaybeExpr;
using Types = TYPES;
- template <typename T> Result Test() {
- if (T::kind >= kind) {
+ template <typename T> Result Test(int testKind) {
+ if (testKind >= kind) {
const char *p{digits.begin()};
using Int = typename T::Scalar;
- typename Int::ValueWithOverflow num{0, false};
+ typename Int::ValueWithOverflow num{Int::Zero(testKind), false};
const char *typeName{
CAT == TypeCategory::Integer ? "INTEGER" : "UNSIGNED"};
if (isNegated) {
- auto unsignedNum{Int::Read(p, 10, false /*unsigned*/)};
+ auto unsignedNum{Int::Read(testKind, p, 10, false /*unsigned*/)};
num.value = unsignedNum.value.Negate().value;
num.overflow = unsignedNum.overflow ||
- (CAT == TypeCategory::Integer && num.value > Int{0});
+ (CAT == TypeCategory::Integer && num.value > Int{testKind, 0});
if (!num.overflow && num.value.Negate().overflow) {
analyzer.Warn(LanguageFeature::BigIntLiterals, digits,
- "negated maximum INTEGER(KIND=%d) literal"_port_en_US, T::kind);
+ "negated maximum INTEGER(KIND=%d) literal"_port_en_US, testKind);
}
} else {
- num = Int::Read(p, 10, /*isSigned=*/CAT == TypeCategory::Integer);
+ num = Int::Read(
+ testKind, p, 10, /*isSigned=*/CAT == TypeCategory::Integer);
}
if (num.overflow) {
if constexpr (CAT == TypeCategory::Unsigned) {
@@ -753,10 +754,10 @@ template <typename TYPES, TypeCategory CAT> struct IntTypeVisitor {
"Unsigned literal too large for UNSIGNED(KIND=%d); truncated"_warn_en_US,
kind);
return Expr<SomeType>{
- Expr<SomeKind<CAT>>{Expr<T>{Constant<T>{std::move(num.value)}}}};
+ MakeConstantExpr<T>(testKind, std::move(num.value))};
}
} else {
- if (T::kind > kind) {
+ if (testKind > kind) {
if (!isDefaultKind ||
!analyzer.context().IsEnabled(LanguageFeature::BigIntLiterals)) {
return std::nullopt;
@@ -764,11 +765,11 @@ template <typename TYPES, TypeCategory CAT> struct IntTypeVisitor {
analyzer.Warn(LanguageFeature::BigIntLiterals, digits,
"Integer literal is too large for default %s(KIND=%d); "
"assuming %s(KIND=%d)"_port_en_US,
- typeName, kind, typeName, T::kind);
+ typeName, kind, typeName, testKind);
}
}
return Expr<SomeType>{
- Expr<SomeKind<CAT>>{Expr<T>{Constant<T>{std::move(num.value)}}}};
+ MakeConstantExpr<T>(testKind, std::move(num.value))};
}
}
return std::nullopt;
@@ -789,7 +790,7 @@ MaybeExpr ExpressionAnalyzer::IntLiteralConstant(
const char *typeName{CAT == TypeCategory::Integer ? "INTEGER" : "UNSIGNED"};
if (CheckIntrinsicKind(CAT, kind)) {
auto digits{std::get<parser::CharBlock>(x.t)};
- if (MaybeExpr result{common::SearchTypes(IntTypeVisitor<TYPES, CAT>{
+ if (MaybeExpr result{SearchTypes(IntTypeVisitor<TYPES, CAT>{
*this, digits, kind, isDefaultKind, isNegated})}) {
return result;
} else if (isDefaultKind) {
@@ -830,21 +831,21 @@ MaybeExpr ExpressionAnalyzer::Analyze(
}
template <typename TYPE>
-Constant<TYPE> ReadRealLiteral(
- parser::CharBlock source, FoldingContext &context, bool isDefaultKind) {
+Constant<TYPE> ReadRealLiteral(int kind, parser::CharBlock source,
+ FoldingContext &context, bool isDefaultKind) {
const char *p{source.begin()};
- auto valWithFlags{
- Scalar<TYPE>::Read(p, context.targetCharacteristics().roundingMode())};
+ auto valWithFlags{Scalar<TYPE>::Read(
+ kind, p, context.targetCharacteristics().roundingMode())};
CHECK(p == source.end());
context.RealFlagWarnings(valWithFlags.flags, "conversion of REAL literal");
auto value{valWithFlags.value};
if (context.targetCharacteristics().areSubnormalsFlushedToZero()) {
value = value.FlushSubnormalToZero();
}
- typename Constant<TYPE>::Result resultInfo;
+ typename Constant<TYPE>::Result resultInfo{kind};
resultInfo.set_isFromInexactLiteralConversion(
isDefaultKind && valWithFlags.flags.test(RealFlag::Inexact));
- return {value, resultInfo};
+ return {kind, value, resultInfo};
}
struct RealTypeVisitor {
@@ -855,10 +856,10 @@ struct RealTypeVisitor {
int k, parser::CharBlock lit, FoldingContext &ctx, bool isDeftKind)
: kind{k}, literal{lit}, context{ctx}, isDefaultKind{isDeftKind} {}
- template <typename T> Result Test() {
- if (kind == T::kind) {
- return {
- AsCategoryExpr(ReadRealLiteral<T>(literal, context, isDefaultKind))};
+ template <typename T> Result Test(int testKind) {
+ if (kind == testKind) {
+ return {AsCategoryExpr(
+ ReadRealLiteral<T>(testKind, literal, context, isDefaultKind))};
}
return std::nullopt;
}
@@ -920,7 +921,7 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::RealLiteralConstant &x) {
}
}
bool isDefaultKind{!xkind && letterKind.value_or('e') == 'e'};
- auto result{common::SearchTypes(
+ auto result{SearchTypes(
RealTypeVisitor{kind, xreal.source, GetFoldingContext(), isDefaultKind})};
if (!result) { // C717
Say("Unsupported REAL(KIND=%d)"_err_en_US, kind);
@@ -970,17 +971,17 @@ MaybeExpr ExpressionAnalyzer::AnalyzeString(std::string &&string, int kind) {
}
switch (kind) {
case 1:
- return AsGenericExpr(Constant<Type<TypeCategory::Character, 1>>{
+ return AsGenericExpr(MakeConstant<Type<TypeCategory::Character>>(1,
parser::DecodeString<std::string, parser::Encoding::LATIN_1>(
- string, true)});
+ string, true)));
case 2:
- return AsGenericExpr(Constant<Type<TypeCategory::Character, 2>>{
+ return AsGenericExpr(MakeConstant<Type<TypeCategory::Character>>(2,
parser::DecodeString<std::u16string, parser::Encoding::UTF_8>(
- string, true)});
+ string, true)));
case 4:
- return AsGenericExpr(Constant<Type<TypeCategory::Character, 4>>{
+ return AsGenericExpr(MakeConstant<Type<TypeCategory::Character>>(4,
parser::DecodeString<std::u32string, parser::Encoding::UTF_8>(
- string, true)});
+ string, true)));
default:
CRASH_NO_CASE;
}
@@ -1008,9 +1009,9 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::LogicalLiteralConstant &x) {
auto kind{AnalyzeKindParam(std::get<std::optional<parser::KindParam>>(x.t),
GetDefaultKind(TypeCategory::Logical))};
bool value{std::get<bool>(x.t)};
- auto result{common::SearchTypes(
- TypeKindVisitor<TypeCategory::Logical, Constant, bool>{
- kind, std::move(value)})};
+ auto result{SearchTypes(
+ TypeKindVisitor<TypeCategory::Logical, Constant, value::LogicalValue>{
+ kind, value::LogicalValue{kind, value}})};
if (!result) {
Say("unsupported LOGICAL(KIND=%d)"_err_en_US, kind); // C728
}
@@ -1037,7 +1038,8 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::BOZLiteralConstant &x) {
}
CHECK(*p == '"');
++p;
- auto value{BOZLiteralConstant::Read(p, base, false /*unsigned*/)};
+ auto value{BOZLiteralConstant::Read(
+ BOZLiteralConstantKind, p, base, false /*unsigned*/)};
if (*p != '"') {
Say("Invalid digit ('%c') in BOZ literal '%s'"_err_en_US, *p,
x.v); // C7107, C7108
@@ -1072,7 +1074,7 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::Name &n) {
// while processing other specification expressions in the PDT
// definition; the right kind value will be used later in each of its
// instantiations.
- int kind{SubscriptInteger::kind};
+ int kind{SubscriptIntegerKind};
if (const auto *typeSpec{ultimate.GetType()}) {
if (const semantics::IntrinsicTypeSpec *
intrinType{typeSpec->AsIntrinsic()}) {
@@ -1179,12 +1181,13 @@ std::optional<Expr<SubscriptInteger>> ExpressionAnalyzer::GetSubstringBound(
Say("substring bound expression has rank %d"_err_en_US, expr->Rank());
}
if (auto *intExpr{std::get_if<Expr<SomeInteger>>(&expr->u)}) {
- if (auto *ssIntExpr{std::get_if<Expr<SubscriptInteger>>(&intExpr->u)}) {
+ if (auto *ssIntExpr{std::get_if<Expr<SubscriptInteger>>(&intExpr->u)};
+ ssIntExpr && ssIntExpr->kind() == SubscriptIntegerKind) {
return {std::move(*ssIntExpr)};
}
return {Expr<SubscriptInteger>{
Convert<SubscriptInteger, TypeCategory::Integer>{
- std::move(*intExpr)}}};
+ SubscriptIntegerKind, std::move(*intExpr)}}};
} else {
Say("substring bound expression is not INTEGER"_err_en_US);
}
@@ -1260,26 +1263,26 @@ MaybeExpr ExpressionAnalyzer::Analyze(
common::visit([](const auto &ckExpr) { return ckExpr.LEN().value(); },
charExpr->u)};
if (!lower) {
- lower = Expr<SubscriptInteger>{1};
+ lower = MakeSubscriptIntExpr(1);
}
if (!upper) {
- upper = Expr<SubscriptInteger>{
- static_cast<std::int64_t>(ToInt64(length).value())};
+ upper = MakeSubscriptIntExpr(ToInt64(length).value());
}
return common::visit(
[&](auto &&ckExpr) -> MaybeExpr {
using Result = ResultType<decltype(ckExpr)>;
+ const int resultKind{ckExpr.kind()};
auto *cp{std::get_if<Constant<Result>>(&ckExpr.u)};
CHECK(DEREF(cp).size() == 1);
StaticDataObject::Pointer staticData{StaticDataObject::Create()};
- staticData->set_alignment(Result::kind)
- .set_itemBytes(Result::kind)
+ staticData->set_alignment(resultKind)
+ .set_itemBytes(resultKind)
.Push(cp->GetScalarValue().value(),
foldingContext_.targetCharacteristics().isBigEndian());
Substring substring{std::move(staticData), std::move(lower.value()),
std::move(upper.value())};
- return AsGenericExpr(
- Expr<Result>{Designator<Result>{std::move(substring)}});
+ return AsGenericExpr(Expr<Result>{
+ Designator<Result>{resultKind, std::move(substring)}});
},
std::move(charExpr->u));
}
@@ -1311,12 +1314,13 @@ std::optional<Expr<SubscriptInteger>> ExpressionAnalyzer::AsSubscript(
expr->Rank());
}
if (auto *intExpr{std::get_if<Expr<SomeInteger>>(&expr->u)}) {
- if (auto *ssIntExpr{std::get_if<Expr<SubscriptInteger>>(&intExpr->u)}) {
+ if (auto *ssIntExpr{std::get_if<Expr<SubscriptInteger>>(&intExpr->u)};
+ ssIntExpr && ssIntExpr->kind() == SubscriptIntegerKind) {
return std::move(*ssIntExpr);
} else {
return Expr<SubscriptInteger>{
Convert<SubscriptInteger, TypeCategory::Integer>{
- std::move(*intExpr)}};
+ SubscriptIntegerKind, std::move(*intExpr)}};
}
} else {
Say("Subscript expression is not INTEGER"_err_en_US);
@@ -1549,7 +1553,7 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::StructureComponent &sc) {
? ComplexPart::Part::RE
: ComplexPart::Part::IM};
return AsCategoryExpr(Designator<PartType>{
- ComplexPart{std::move(*dataRef), part}});
+ z.kind(), ComplexPart{std::move(*dataRef), part}});
},
zExpr->u)};
return AsGenericExpr(std::move(realExpr));
@@ -1581,8 +1585,8 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::CoindexedNamedObject &x) {
std::get<std::list<parser::Cosubscript>>(selector.t)) {
MaybeExpr coex{Analyze(cosub)};
if (auto *intExpr{UnwrapExpr<Expr<SomeInteger>>(coex)}) {
- cosubscripts.push_back(
- ConvertToType<SubscriptInteger>(std::move(*intExpr)));
+ cosubscripts.push_back(ConvertToType<SubscriptInteger>(
+ SubscriptIntegerKind, std::move(*intExpr)));
} else {
cosubsOk = false;
}
@@ -1709,15 +1713,15 @@ class ArrayConstructorContext {
// expression in ToExpr().
using Result = MaybeExpr;
using Types = AllTypes;
- template <typename T> Result Test() {
+ template <typename T> Result Test(int kind) {
if (type_ && type_->category() == T::category) {
if constexpr (T::category == TypeCategory::Derived) {
if (!type_->IsUnlimitedPolymorphic()) {
return AsMaybeExpr(ArrayConstructor<T>{type_->GetDerivedTypeSpec(),
MakeSpecific<T>(std::move(values_))});
}
- } else if (type_->kind() == T::kind) {
- ArrayConstructor<T> result{MakeSpecific<T>(std::move(values_))};
+ } else if (type_->kind() == kind) {
+ ArrayConstructor<T> result{kind, MakeSpecific<T>(std::move(values_))};
if constexpr (T::category == TypeCategory::Character) {
if (auto len{LengthIfGood()}) {
// The ac-do-variables may be treated as constant expressions,
@@ -1744,6 +1748,7 @@ class ArrayConstructorContext {
private:
using ImpliedDoIntType = ResultType<ImpliedDoIndex>;
+ static constexpr int ImpliedDoIntKind = ResultKind<ImpliedDoIndex>;
std::optional<Expr<SubscriptInteger>> LengthIfGood() const {
if (type_) {
@@ -1769,23 +1774,20 @@ class ArrayConstructorContext {
parser::CharBlock name, std::int64_t lower, std::int64_t upper,
std::int64_t stride);
- template <int KIND>
- std::optional<Expr<Type<TypeCategory::Integer, KIND>>> ToSpecificInt(
- MaybeExpr &&y) {
+ std::optional<Expr<ImpliedDoIntType>> ToSpecificInt(MaybeExpr &&y) {
if (y) {
Expr<SomeInteger> *intExpr{UnwrapExpr<Expr<SomeInteger>>(*y)};
return Fold(exprAnalyzer_.GetFoldingContext(),
- ConvertToType<Type<TypeCategory::Integer, KIND>>(
- std::move(DEREF(intExpr))));
+ ConvertToType<ImpliedDoIntType>(
+ SubscriptIntegerKind, std::move(DEREF(intExpr))));
} else {
return std::nullopt;
}
}
- template <int KIND, typename A>
- std::optional<Expr<Type<TypeCategory::Integer, KIND>>> GetSpecificIntExpr(
- const A &x) {
- return ToSpecificInt<KIND>(exprAnalyzer_.Analyze(x));
+ template <typename A>
+ std::optional<Expr<ImpliedDoIntType>> GetSpecificIntExpr(const A &x) {
+ return ToSpecificInt(exprAnalyzer_.Analyze(x));
}
// Nested array constructors all reference the same ExpressionAnalyzer,
@@ -1953,13 +1955,12 @@ void ArrayConstructorContext::Add(const parser::AcValue::Triplet &triplet) {
if (strideType->kind() > kind) {
kind = strideType->kind();
}
- auto lower{ToSpecificInt<ImpliedDoIntType::kind>(std::move(lowerExpr))};
- auto upper{ToSpecificInt<ImpliedDoIntType::kind>(std::move(upperExpr))};
+ auto lower{ToSpecificInt(std::move(lowerExpr))};
+ auto upper{ToSpecificInt(std::move(upperExpr))};
if (lower && upper) {
- auto stride{
- ToSpecificInt<ImpliedDoIntType::kind>(std::move(strideExpr))};
+ auto stride{ToSpecificInt(std::move(strideExpr))};
if (!stride) {
- stride = Expr<ImpliedDoIntType>{1};
+ stride = MakeConstantExpr<ImpliedDoIntType>(ImpliedDoIntKind, 1);
}
DynamicType type{TypeCategory::Integer, kind};
if (!type_) {
@@ -1993,7 +1994,7 @@ void ArrayConstructorContext::Add(const parser::AcImpliedDo &impliedDo) {
exprAnalyzer_.Analyze(bounds.Name());
const auto &parsedName{parser::UnwrapRef<parser::Name>(bounds.Name())};
parser::CharBlock name{parsedName.source};
- int kind{ImpliedDoIntType::kind};
+ int kind{ImpliedDoIntKind};
if (const Symbol *symbol{parsedName.symbol}) {
if (auto dynamicType{DynamicType::From(symbol)}) {
if (dynamicType->category() == TypeCategory::Integer) {
@@ -2002,14 +2003,14 @@ void ArrayConstructorContext::Add(const parser::AcImpliedDo &impliedDo) {
}
}
std::optional<Expr<ImpliedDoIntType>> lower{
- GetSpecificIntExpr<ImpliedDoIntType::kind>(bounds.Lower())};
+ GetSpecificIntExpr(bounds.Lower())};
std::optional<Expr<ImpliedDoIntType>> upper{
- GetSpecificIntExpr<ImpliedDoIntType::kind>(bounds.Upper())};
+ GetSpecificIntExpr(bounds.Upper())};
if (lower && upper) {
std::optional<Expr<ImpliedDoIntType>> stride{
- GetSpecificIntExpr<ImpliedDoIntType::kind>(bounds.Step())};
+ GetSpecificIntExpr(bounds.Step())};
if (!stride) {
- stride = Expr<ImpliedDoIntType>{1};
+ stride = MakeConstantExpr<ImpliedDoIntType>(ImpliedDoIntKind, 1);
}
if (exprAnalyzer_.AddImpliedDo(name, kind)) {
// Check for constant bounds; the loop may require complete unrolling
@@ -2094,7 +2095,7 @@ void ArrayConstructorContext::UnrollConstantImpliedDo(
}
MaybeExpr ArrayConstructorContext::ToExpr() {
- return common::SearchTypes(std::move(*this));
+ return SearchTypes(std::move(*this));
}
MaybeExpr ExpressionAnalyzer::Analyze(const parser::ArrayConstructor &array) {
@@ -3661,8 +3662,7 @@ std::optional<Chevrons> ExpressionAnalyzer::AnalyzeChevrons(
return std::nullopt;
}
} else {
- result.emplace_back(
- AsGenericExpr(evaluate::Constant<evaluate::CInteger>{-1}));
+ result.emplace_back(AsGenericExpr(MakeCIntegerConstant(-1)));
}
if (auto expr{Analyze(std::get<1>(chevrons->t))};
expr && checkLaunchArg(*expr, "block")) {
@@ -4217,8 +4217,9 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::ConditionalExpr &x) {
return common::visit(
common::visitors{
[&](Expr<SomeDerived> &&elseVal) -> MaybeExpr {
- Expr<LogicalResult> cond{ConvertToType<LogicalResult>(
- std::move(std::get<Expr<SomeLogical>>(condExpr->u)))};
+ Expr<LogicalResult> cond{
+ ConvertToType<LogicalResult>(LogicalResultKind,
+ std::move(std::get<Expr<SomeLogical>>(condExpr->u)))};
Expr<SomeDerived> thenVal{
std::move(std::get<Expr<SomeDerived>>(thenExpr->u))};
return AsGenericExpr(
@@ -4238,6 +4239,7 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::ConditionalExpr &x) {
using T =
typename std::decay_t<decltype(elseKindExpr)>::Result;
Expr<LogicalResult> cond{ConvertToType<LogicalResult>(
+ LogicalResultKind,
std::move(std::get<Expr<SomeLogical>>(condExpr->u)))};
Expr<T> thenVal{std::move(std::get<Expr<T>>(
std::get<CategoryType>(thenExpr->u).u))};
@@ -4324,7 +4326,7 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Concat &x) {
[&](auto &&x, auto &&y) -> MaybeExpr {
using T = ResultType<decltype(x)>;
if constexpr (std::is_same_v<T, ResultType<decltype(y)>>) {
- return AsGenericExpr(Concat<T::kind>{std::move(x), std::move(y)});
+ return AsGenericExpr(Concat{std::move(x), std::move(y)});
} else {
DIE("different types for intrinsic concat");
}
@@ -4729,7 +4731,7 @@ Expr<SubscriptInteger> ExpressionAnalyzer::AnalyzeKindSelector(
const std::optional<parser::KindSelector> &selector) {
int defaultKind{GetDefaultKind(category)};
if (!selector) {
- return Expr<SubscriptInteger>{defaultKind};
+ return MakeSubscriptIntExpr(defaultKind);
}
return common::visit(
common::visitors{
@@ -4737,13 +4739,14 @@ Expr<SubscriptInteger> ExpressionAnalyzer::AnalyzeKindSelector(
if (MaybeExpr kind{Analyze(x)}) {
if (std::optional<std::int64_t> code{ToInt64(*kind)}) {
if (CheckIntrinsicKind(category, *code)) {
- return Expr<SubscriptInteger>{*code};
+ return MakeSubscriptIntExpr(*code);
}
} else if (auto *intExpr{UnwrapExpr<Expr<SomeInteger>>(*kind)}) {
- return ConvertToType<SubscriptInteger>(std::move(*intExpr));
+ return ConvertToType<SubscriptInteger>(
+ SubscriptIntegerKind, std::move(*intExpr));
}
}
- return Expr<SubscriptInteger>{defaultKind};
+ return MakeSubscriptIntExpr(defaultKind);
},
[&](const parser::KindSelector::StarSize &x) {
std::intmax_t size = x.v;
@@ -4752,7 +4755,7 @@ Expr<SubscriptInteger> ExpressionAnalyzer::AnalyzeKindSelector(
} else if (category == TypeCategory::Complex) {
size /= 2;
}
- return Expr<SubscriptInteger>{size};
+ return MakeSubscriptIntExpr(size);
},
},
selector->u);
@@ -5738,11 +5741,11 @@ std::optional<ActualArgument> ArgumentAnalyzer::AnalyzeExpr(
// (or a smaller numeric type) by legacy code.
if (auto hollerith{UnwrapExpr<Constant<Ascii>>(*argExpr)};
hollerith && hollerith->wasHollerith()) {
- std::string bytes{hollerith->values()};
+ auto bytes{hollerith->values()};
while ((bytes.size() % 8) != 0) {
bytes += ' ';
}
- Constant<Ascii> c{std::move(bytes)};
+ Constant<Ascii> c{AsciiKind, std::move(bytes)};
c.set_wasHollerith(true);
argExpr = AsGenericExpr(std::move(c));
}
@@ -5887,8 +5890,10 @@ void ArgumentAnalyzer::ConvertBOZAssignmentRHS(const DynamicType &lhsType) {
Expr<SomeType> rhs{MoveExpr(1)};
if (lhsType.category() == TypeCategory::Integer ||
lhsType.category() == TypeCategory::Unsigned) {
- if (const auto *boz{std::get_if<BOZLiteralConstant>(&rhs.u)};
- boz && boz->bits - boz->LEADZ() > lhsType.kind() * 8) {
+ if (const auto *boz{std::get_if<BOZLiteralConstant>(&rhs.u)}; boz &&
+ evaluate::value::IntegerValue::bits(BOZLiteralConstantKind) -
+ boz->LEADZ() >
+ lhsType.kind() * 8) {
context_.Warn(common::UsageWarning::BOZLiteralTruncation,
"BOZ literal constant is too large for %s(KIND=%d) assignment target; truncated"_warn_en_US,
lhsType.category() == TypeCategory::Unsigned ? "UNSIGNED"
@@ -6040,7 +6045,7 @@ bool ExprChecker::Pre(const parser::DataImpliedDo &ido) {
parser::Walk(std::get<parser::DataImpliedDo::Bounds>(ido.t), *this);
const auto &bounds{std::get<parser::DataImpliedDo::Bounds>(ido.t)};
const auto &name{parser::UnwrapRef<parser::Name>(bounds.Name())};
- int kind{evaluate::ResultType<evaluate::ImpliedDoIndex>::kind};
+ int kind{evaluate::ResultKind<evaluate::ImpliedDoIndex>};
if (const auto dynamicType{evaluate::DynamicType::From(DEREF(name.symbol))}) {
if (dynamicType->category() == TypeCategory::Integer) {
kind = dynamicType->kind();
diff --git a/flang/lib/Semantics/openmp-utils.cpp b/flang/lib/Semantics/openmp-utils.cpp
index dc3d5a302e841c..a3635721d336d7 100644
--- a/flang/lib/Semantics/openmp-utils.cpp
+++ b/flang/lib/Semantics/openmp-utils.cpp
@@ -1139,8 +1139,8 @@ struct ArrayExpressionRecognizer {
return common::visit([](auto &&s) { return isArrayExpression(s); }, x.u);
}
- template <TypeCategory C, int K>
- static bool isArrayExpression(const evaluate::Expr<evaluate::Type<C, K>> &x) {
+ template <TypeCategory C>
+ static bool isArrayExpression(const evaluate::Expr<evaluate::Type<C>> &x) {
return common::visit([](auto &&s) { return isArrayExpression(s); },
evaluate::match::deparen(x).u);
}
diff --git a/flang/lib/Semantics/pointer-assignment.cpp b/flang/lib/Semantics/pointer-assignment.cpp
index 7425f831b51b48..7152bb8342c05c 100644
--- a/flang/lib/Semantics/pointer-assignment.cpp
+++ b/flang/lib/Semantics/pointer-assignment.cpp
@@ -533,11 +533,11 @@ static bool CheckPointerBounds(
},
[&](const evaluate::Assignment::BoundsRemapping &bounds) {
isBoundsRemapping = true;
- evaluate::ExtentExpr lhsSizeExpr{1};
+ evaluate::ExtentExpr lhsSizeExpr{evaluate::MakeExtentConstant(1)};
for (const auto &bound : bounds) {
lhsSizeExpr = std::move(lhsSizeExpr) *
(common::Clone(bound.second) - common::Clone(bound.first) +
- evaluate::ExtentExpr{1});
+ evaluate::MakeExtentExpr(1));
}
if (std::optional<std::int64_t> lhsSize{evaluate::ToInt64(
evaluate::Fold(context, std::move(lhsSizeExpr)))}) {
diff --git a/flang/lib/Semantics/resolve-names-utils.cpp b/flang/lib/Semantics/resolve-names-utils.cpp
index 6580c7e31abdb0..deb11bdeb96fb3 100644
--- a/flang/lib/Semantics/resolve-names-utils.cpp
+++ b/flang/lib/Semantics/resolve-names-utils.cpp
@@ -465,7 +465,7 @@ ArraySpecAnalyzer::CheckExplicitShapeBoundsSpec(
CHECK(someInt);
auto asSI{evaluate::Fold(context_.foldingContext(),
evaluate::ConvertToType<evaluate::SubscriptInteger>(
- common::Clone(*someInt)))};
+ evaluate::SubscriptIntegerKind, common::Clone(*someInt)))};
if (folded.Rank() == 0) {
// Scalar bound: broadcasts to every dimension.
return std::make_pair(Bound{MaybeSubscriptIntExpr{std::move(asSI)}},
@@ -599,7 +599,7 @@ void ArraySpecAnalyzer::Analyze(const parser::ExplicitShapeBoundsSpec &x) {
}
}
Bound lb{lbExpr ? std::move(lbExpr)
- : MaybeSubscriptIntExpr{SubscriptIntExpr{1}}};
+ : MaybeSubscriptIntExpr{evaluate::MakeSubscriptIntExpr(1)}};
Bound ub{std::move(ubExpr)};
arraySpec_.push_back(ShapeSpec::MakeExplicit(std::move(lb), std::move(ub)));
}
@@ -640,7 +640,7 @@ Bound ArraySpecAnalyzer::GetBound(const parser::SpecificationExpr &x) {
if (auto *intExpr{evaluate::UnwrapExpr<SomeIntExpr>(*maybeExpr)}) {
expr = evaluate::Fold(context_.foldingContext(),
evaluate::ConvertToType<evaluate::SubscriptInteger>(
- std::move(*intExpr)));
+ evaluate::SubscriptIntegerKind, std::move(*intExpr)));
}
}
return Bound{std::move(expr)};
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp
index 27c4e96d269aa6..bd3a6222710b4c 100644
--- a/flang/lib/Semantics/resolve-names.cpp
+++ b/flang/lib/Semantics/resolve-names.cpp
@@ -220,7 +220,7 @@ class BaseVisitor {
MaybeSubscriptIntExpr EvaluateSubscriptIntExpr(const T &expr) {
if (MaybeIntExpr maybeIntExpr{EvaluateIntExpr(expr)}) {
return FoldExpr(evaluate::ConvertToType<evaluate::SubscriptInteger>(
- std::move(*maybeIntExpr)));
+ evaluate::SubscriptIntegerKind, std::move(*maybeIntExpr)));
} else {
return std::nullopt;
}
@@ -2599,8 +2599,11 @@ void AttrsVisitor::SetBindNameOn(Symbol &symbol) {
return;
}
symbol.SetIsCDefined(isCDefined_);
- std::optional<std::string> label{
- evaluate::GetScalarConstantValue<evaluate::Ascii>(bindName_)};
+ std::optional<std::string> label;
+ if (auto charVal{
+ evaluate::GetScalarConstantValue<evaluate::Ascii>(bindName_)}) {
+ label = charVal->AsStdString();
+ }
// 18.9.2(2): discard leading and trailing blanks
if (label) {
symbol.SetIsExplicitBindName(true);
@@ -6215,7 +6218,7 @@ bool DeclarationVisitor::Pre(const parser::Enumerator &enumerator) {
// Enumerators are treated as PARAMETER (section 7.6 paragraph (4))
symbol = &MakeSymbol(name, Attrs{Attr::PARAMETER}, ObjectEntityDetails{});
symbol->SetType(context().MakeNumericType(
- TypeCategory::Integer, evaluate::CInteger::kind));
+ TypeCategory::Integer, evaluate::CIntegerKind));
}
if (auto &init{std::get<std::optional<parser::ScalarIntConstantExpr>>(
@@ -6226,7 +6229,7 @@ bool DeclarationVisitor::Pre(const parser::Enumerator &enumerator) {
// F2023 7.6.1 errata f23/013: a BOZ enumerator initializer
// has the value specified by INT(boz-literal-constant, C_INT).
const evaluate::DynamicType cIntType{
- TypeCategory::Integer, evaluate::CInteger::kind};
+ TypeCategory::Integer, evaluate::CIntegerKind};
if (MaybeExpr maybeExpr{EvaluateExpr(expr)}) {
if (auto converted{
evaluate::ConvertToType(cIntType, std::move(*maybeExpr))}) {
@@ -6252,8 +6255,8 @@ bool DeclarationVisitor::Pre(const parser::Enumerator &enumerator) {
if (symbol) {
if (enumerationState_.value) {
- symbol->get<ObjectEntityDetails>().set_init(SomeExpr{
- evaluate::Expr<evaluate::CInteger>{*enumerationState_.value}});
+ symbol->get<ObjectEntityDetails>().set_init(
+ SomeExpr{evaluate::MakeCIntegerExpr(*enumerationState_.value)});
} else {
context().SetError(*symbol);
}
@@ -6324,7 +6327,7 @@ void DeclarationVisitor::Post(const parser::EnumerationTypeStmt &x) {
Symbol &ordinalSym{MakeSymbol(currScope(), ordinalName, Attrs{})};
ordinalSym.set_details(ObjectEntityDetails{});
ordinalSym.SetType(
- currScope().MakeNumericType(TypeCategory::Integer, KindExpr{4}));
+ currScope().MakeNumericType(TypeCategory::Integer, MakeKindExpr(4)));
ordinalSym.set(Symbol::Flag::CompilerCreated);
symbol.get<DerivedTypeDetails>().add_component(ordinalSym);
}
@@ -6362,7 +6365,7 @@ bool DeclarationVisitor::Pre(const parser::EnumerationEnumeratorStmt &x) {
CHECK(ordinalIter != currScope().end());
const Symbol &ordinalSym{*ordinalIter->second};
enumCtor.Add(ordinalSym,
- evaluate::AsGenericExpr(evaluate::Expr<evaluate::CInteger>{ordinal}));
+ evaluate::AsGenericExpr(evaluate::MakeCIntegerExpr(ordinal)));
enumerator.get<ObjectEntityDetails>().set_init(
SomeExpr{evaluate::Expr<evaluate::SomeDerived>{
evaluate::Constant<evaluate::SomeDerived>{std::move(enumCtor)}}});
@@ -6759,7 +6762,7 @@ void DeclarationVisitor::Post(const parser::IntrinsicTypeSpec::Character &) {
}
if (!charInfo_.kind) {
charInfo_.kind =
- KindExpr{context().GetDefaultKind(TypeCategory::Character)};
+ MakeKindExpr(context().GetDefaultKind(TypeCategory::Character));
}
SetDeclTypeSpec(currScope().MakeCharacterType(
std::move(*charInfo_.length), std::move(*charInfo_.kind)));
@@ -9216,11 +9219,11 @@ const DeclTypeSpec &ConstructVisitor::ToDeclTypeSpec(
if (length) {
return currScope().MakeCharacterType(
ParamValue{SomeIntExpr{*std::move(length)}, common::TypeParamAttr::Len},
- KindExpr{type.kind()});
+ MakeKindExpr(type.kind()));
} else {
return currScope().MakeCharacterType(
ParamValue::Deferred(common::TypeParamAttr::Len),
- KindExpr{type.kind()});
+ MakeKindExpr(type.kind()));
}
}
@@ -9432,12 +9435,14 @@ class ExecutionPartAsyncIOSkimmer : public ExecutionPartSkimmerBase {
bool Pre(const parser::IoControlSpec::Asynchronous &async) {
if (auto folded{evaluate::Fold(
context_.foldingContext(), AnalyzeExpr(context_, async.v))}) {
- if (auto str{
+ if (auto charVal{
evaluate::GetScalarConstantValue<evaluate::Ascii>(*folded)}) {
- for (char ch : *str) {
- if (ch != ' ') {
- inAsyncIO_ = ch == 'y' || ch == 'Y';
- break;
+ if (auto str{charVal->AsStdString()}) {
+ for (char ch : *str) {
+ if (ch != ' ') {
+ inAsyncIO_ = ch == 'y' || ch == 'Y';
+ break;
+ }
}
}
}
diff --git a/flang/lib/Semantics/runtime-type-info.cpp b/flang/lib/Semantics/runtime-type-info.cpp
index 24f8f571439a33..ef56ce90ff0a7d 100644
--- a/flang/lib/Semantics/runtime-type-info.cpp
+++ b/flang/lib/Semantics/runtime-type-info.cpp
@@ -296,7 +296,7 @@ static evaluate::StructureConstructorValues &AddValue(
}
static SomeExpr IntToExpr(std::int64_t n) {
- return evaluate::AsGenericExpr(evaluate::ExtentExpr{n});
+ return evaluate::AsGenericExpr(evaluate::MakeExtentExpr(n));
}
static evaluate::StructureConstructor Structure(
@@ -320,31 +320,31 @@ static int GetIntegerKind(const Symbol &symbol, bool canBeUninstantiated) {
// Save a rank-1 array constant of some numeric type as an
// initialized data object in a scope.
template <typename T>
-static SomeExpr SaveNumericPointerTarget(
- Scope &scope, SourceName name, std::vector<typename T::Scalar> &&x) {
+static SomeExpr SaveNumericPointerTarget(int kind, Scope &scope,
+ SourceName name, std::vector<typename T::Scalar> &&x) {
if (x.empty()) {
return SomeExpr{evaluate::NullPointer{}};
} else {
ObjectEntityDetails object;
if (const auto *spec{scope.FindType(
- DeclTypeSpec{NumericTypeSpec{T::category, KindExpr{T::kind}}})}) {
+ DeclTypeSpec{NumericTypeSpec{T::category, MakeKindExpr(kind)}})}) {
object.set_type(*spec);
} else {
- object.set_type(scope.MakeNumericType(T::category, KindExpr{T::kind}));
+ object.set_type(scope.MakeNumericType(T::category, MakeKindExpr(kind)));
}
auto elements{static_cast<evaluate::ConstantSubscript>(x.size())};
ArraySpec arraySpec;
arraySpec.push_back(ShapeSpec::MakeExplicit(Bound{0}, Bound{elements - 1}));
object.set_shape(arraySpec);
object.set_init(evaluate::AsGenericExpr(evaluate::Constant<T>{
- std::move(x), evaluate::ConstantSubscripts{elements}}));
+ kind, std::move(x), evaluate::ConstantSubscripts{elements}}));
Symbol &symbol{*scope
.try_emplace(name, Attrs{Attr::TARGET, Attr::SAVE},
std::move(object))
.first->second};
SetReadOnlyCompilerCreatedFlags(symbol);
return evaluate::AsGenericExpr(
- evaluate::Expr<T>{evaluate::Designator<T>{symbol}});
+ evaluate::Expr<T>{evaluate::Designator<T>{kind, symbol}});
}
}
@@ -357,12 +357,12 @@ static SomeExpr SaveObjectInit(
CHECK(symbol.get<ObjectEntityDetails>().init().has_value());
SetReadOnlyCompilerCreatedFlags(symbol);
return evaluate::AsGenericExpr(
- evaluate::Designator<evaluate::SomeDerived>{symbol});
+ evaluate::Designator<evaluate::SomeDerived>{0, symbol});
}
-template <int KIND> static SomeExpr IntExpr(std::int64_t n) {
+static SomeExpr IntExpr(int kind, std::int64_t n) {
return evaluate::AsGenericExpr(
- evaluate::Constant<evaluate::Type<TypeCategory::Integer, KIND>>{n});
+ evaluate::MakeConstant<evaluate::Type<TypeCategory::Integer>>(kind, n));
}
static std::optional<std::string> GetSuffixIfTypeKindParameters(
@@ -490,8 +490,8 @@ const Symbol *RuntimeTableBuilder::DescribeType(
AddValue(dtValues, derivedTypeSchema_, "uninstantiated"s,
SomeExpr{evaluate::NullPointer{}});
}
- using Int8 = evaluate::Type<TypeCategory::Integer, 8>;
- using Int1 = evaluate::Type<TypeCategory::Integer, 1>;
+ using Int8 = evaluate::Type<TypeCategory::Integer>;
+ using Int1 = evaluate::Type<TypeCategory::Integer>;
std::vector<Int8::Scalar> kinds;
std::vector<Int1::Scalar> lenKinds;
if (parameters) {
@@ -514,20 +514,20 @@ const Symbol *RuntimeTableBuilder::DescribeType(
}
}
}
- kinds.emplace_back(value);
+ kinds.emplace_back(8, value);
} else { // LEN= parameter
lenKinds.emplace_back(
- GetIntegerKind(*inst, isPDTDefinitionWithKindParameters));
+ 1, GetIntegerKind(*inst, isPDTDefinitionWithKindParameters));
}
}
}
}
AddValue(dtValues, derivedTypeSchema_, "kindparameter"s,
- SaveNumericPointerTarget<Int8>(scope,
+ SaveNumericPointerTarget<Int8>(8, scope,
SaveObjectName((fir::kKindParameterSeparator + distinctName).str()),
std::move(kinds)));
AddValue(dtValues, derivedTypeSchema_, "lenparameterkind"s,
- SaveNumericPointerTarget<Int1>(scope,
+ SaveNumericPointerTarget<Int1>(1, scope,
SaveObjectName((fir::kLenKindSeparator + distinctName).str()),
std::move(lenKinds)));
// Traverse the components of the derived type
@@ -645,27 +645,28 @@ const Symbol *RuntimeTableBuilder::DescribeType(
static_cast<evaluate::ConstantSubscript>(specials.size())}));
}
AddValue(dtValues, derivedTypeSchema_, "specialbitset"s,
- IntExpr<4>(specialBitSet));
+ IntExpr(4, specialBitSet));
// Note the presence/absence of a parent component
AddValue(dtValues, derivedTypeSchema_, "hasparent"s,
- IntExpr<1>(dtScope.GetDerivedTypeParent() != nullptr));
+ IntExpr(1, dtScope.GetDerivedTypeParent() != nullptr));
// To avoid wasting run time attempting to initialize derived type
// instances without any initialized components, analyze the type
// and set a flag if there's nothing to do for it at run time.
AddValue(dtValues, derivedTypeSchema_, "noinitializationneeded"s,
- IntExpr<1>(derivedTypeSpec &&
- !derivedTypeSpec->HasDefaultInitialization(false, false)));
+ IntExpr(1,
+ derivedTypeSpec &&
+ !derivedTypeSpec->HasDefaultInitialization(false, false)));
// Similarly, a flag to short-circuit destruction when not needed.
AddValue(dtValues, derivedTypeSchema_, "nodestructionneeded"s,
- IntExpr<1>(derivedTypeSpec && !derivedTypeSpec->HasDestruction()));
+ IntExpr(1, derivedTypeSpec && !derivedTypeSpec->HasDestruction()));
// Similarly, a flag to short-circuit finalization when not needed.
AddValue(dtValues, derivedTypeSchema_, "nofinalizationneeded"s,
- IntExpr<1>(
- derivedTypeSpec && !MayRequireFinalization(*derivedTypeSpec)));
+ IntExpr(
+ 1, derivedTypeSpec && !MayRequireFinalization(*derivedTypeSpec)));
// Similarly, a flag to enable optimized runtime assignment.
AddValue(dtValues, derivedTypeSchema_, "nodefinedassignment"s,
- IntExpr<1>(
- derivedTypeSpec && !MayHaveDefinedAssignment(*derivedTypeSpec)));
+ IntExpr(
+ 1, derivedTypeSpec && !MayHaveDefinedAssignment(*derivedTypeSpec)));
}
dtObject.get<ObjectEntityDetails>().set_init(MaybeExpr{
StructureExpr(Structure(derivedTypeSchema_, std::move(dtValues)))});
@@ -715,7 +716,7 @@ SomeExpr RuntimeTableBuilder::GetEnumValue(const char *name) const {
const Symbol &symbol{GetSchemaSymbol(name)};
auto value{evaluate::ToInt64(symbol.get<ObjectEntityDetails>().init())};
CHECK(value.has_value());
- return IntExpr<1>(*value);
+ return IntExpr(1, *value);
}
Symbol &RuntimeTableBuilder::CreateObject(
@@ -741,15 +742,16 @@ SomeExpr RuntimeTableBuilder::SaveNameAsPointerTarget(
ObjectEntityDetails object;
auto len{static_cast<common::ConstantSubscript>(name.size())};
if (const auto *spec{scope.FindType(DeclTypeSpec{CharacterTypeSpec{
- ParamValue{len, common::TypeParamAttr::Len}, KindExpr{1}}})}) {
+ ParamValue{len, common::TypeParamAttr::Len}, MakeKindExpr(1)}})}) {
object.set_type(*spec);
} else {
object.set_type(scope.MakeCharacterType(
- ParamValue{len, common::TypeParamAttr::Len}, KindExpr{1}));
+ ParamValue{len, common::TypeParamAttr::Len}, MakeKindExpr(1)));
}
- using evaluate::Ascii;
+ using evaluate::Ascii, evaluate::AsciiKind, evaluate::MakeConstantExpr;
using AsciiExpr = evaluate::Expr<Ascii>;
- object.set_init(evaluate::AsGenericExpr(AsciiExpr{name}));
+ object.set_init(
+ evaluate::AsGenericExpr(MakeConstantExpr<Ascii>(AsciiKind, name)));
Symbol &symbol{
*scope
.try_emplace(
@@ -758,7 +760,7 @@ SomeExpr RuntimeTableBuilder::SaveNameAsPointerTarget(
.first->second};
SetReadOnlyCompilerCreatedFlags(symbol);
return evaluate::AsGenericExpr(
- AsciiExpr{evaluate::Designator<Ascii>{symbol}});
+ AsciiExpr{evaluate::Designator<Ascii>{AsciiKind, symbol}});
}
evaluate::StructureConstructor RuntimeTableBuilder::DescribeComponent(
@@ -781,14 +783,14 @@ evaluate::StructureConstructor RuntimeTableBuilder::DescribeComponent(
AddValue(values, componentSchema_, "name"s,
SaveNameAsPointerTarget(scope, symbol.name().ToString()));
AddValue(values, componentSchema_, "category"s,
- IntExpr<1>(static_cast<int>(dyType.category())));
+ IntExpr(1, static_cast<int>(dyType.category())));
if (dyType.IsUnlimitedPolymorphic() ||
dyType.category() == TypeCategory::Derived) {
- AddValue(values, componentSchema_, "kind"s, IntExpr<1>(0));
+ AddValue(values, componentSchema_, "kind"s, IntExpr(1, 0));
} else {
- AddValue(values, componentSchema_, "kind"s, IntExpr<1>(dyType.kind()));
+ AddValue(values, componentSchema_, "kind"s, IntExpr(1, dyType.kind()));
}
- AddValue(values, componentSchema_, "offset"s, IntExpr<8>(symbol.offset()));
+ AddValue(values, componentSchema_, "offset"s, IntExpr(8, symbol.offset()));
// CHARACTER length
auto len{typeAndShape->LEN()};
if (const semantics::DerivedTypeSpec *
@@ -801,7 +803,7 @@ evaluate::StructureConstructor RuntimeTableBuilder::DescribeComponent(
if (const auto *clamped{evaluate::UnwrapExpr<
evaluate::Extremum<evaluate::SubscriptInteger>>(*len)}) {
if (clamped->ordering == evaluate::Ordering::Greater &&
- clamped->left() == evaluate::Expr<evaluate::SubscriptInteger>{0}) {
+ clamped->left() == evaluate::MakeSubscriptIntExpr(0)) {
len = common::Clone(clamped->right());
}
}
@@ -862,7 +864,7 @@ evaluate::StructureConstructor RuntimeTableBuilder::DescribeComponent(
SomeExpr{evaluate::NullPointer{}});
}
// Shape information
- AddValue(values, componentSchema_, "rank"s, IntExpr<1>(rank));
+ AddValue(values, componentSchema_, "rank"s, IntExpr(1, rank));
if (rank > 0 && !IsAllocatable(symbol) && !IsPointer(symbol)) {
std::vector<evaluate::StructureConstructor> bounds;
evaluate::NamedEntity entity{symbol};
@@ -927,7 +929,7 @@ evaluate::StructureConstructor RuntimeTableBuilder::DescribeComponent(
evaluate::StructureConstructorValues values;
AddValue(values, procPtrSchema_, "name"s,
SaveNameAsPointerTarget(scope, symbol.name().ToString()));
- AddValue(values, procPtrSchema_, "offset"s, IntExpr<8>(symbol.offset()));
+ AddValue(values, procPtrSchema_, "offset"s, IntExpr(8, symbol.offset()));
if (auto init{proc.init()}; init && *init) {
AddValue(values, procPtrSchema_, "initialization"s,
SomeExpr{evaluate::ProcedureDesignator{**init}});
@@ -1202,7 +1204,7 @@ void RuntimeTableBuilder::DescribeSpecialProc(
} else {
which = scalarFinalEnum_;
if (int rank{typeAndShape.Rank()}; rank > 0) {
- which = IntExpr<1>(ToInt64(which).value() + rank);
+ which = IntExpr(1, ToInt64(which).value() + rank);
if (dummyData.IsPassedByDescriptor(proc->IsBindC())) {
argThatMightBeDescriptor = 1;
}
@@ -1264,7 +1266,7 @@ void RuntimeTableBuilder::DescribeSpecialProc(
AddValue(
values, specialSchema_, "which"s, SomeExpr{std::move(which.value())});
AddValue(values, specialSchema_, "isargdescriptorset"s,
- IntExpr<1>(isArgDescriptorSet));
+ IntExpr(1, isArgDescriptorSet));
int bindingIndex{0};
if (bindings) {
int j{0};
@@ -1277,9 +1279,9 @@ void RuntimeTableBuilder::DescribeSpecialProc(
}
}
CHECK(bindingIndex <= 255);
- AddValue(values, specialSchema_, "istypebound"s, IntExpr<1>(bindingIndex));
+ AddValue(values, specialSchema_, "istypebound"s, IntExpr(1, bindingIndex));
AddValue(values, specialSchema_, "specialcaseflag"s,
- IntExpr<1>(specialCaseFlag));
+ IntExpr(1, specialCaseFlag));
AddValue(values, specialSchema_, procCompName,
SomeExpr{evaluate::ProcedureDesignator{specific}});
// index might already be present in the case of an override
diff --git a/flang/lib/Semantics/scope.cpp b/flang/lib/Semantics/scope.cpp
index c000bb9038cf5d..7c9e2286c797b9 100644
--- a/flang/lib/Semantics/scope.cpp
+++ b/flang/lib/Semantics/scope.cpp
@@ -257,11 +257,12 @@ const DeclTypeSpec *Scope::GetType(const SomeExpr &expr) {
case TypeCategory::Unsigned:
case TypeCategory::Real:
case TypeCategory::Complex:
- return &MakeNumericType(dyType->category(), KindExpr{dyType->kind()});
+ return &MakeNumericType(
+ dyType->category(), MakeKindExpr(dyType->kind()));
case TypeCategory::Character:
if (const ParamValue * lenParam{dyType->charLengthParamValue()}) {
return &MakeCharacterType(
- ParamValue{*lenParam}, KindExpr{dyType->kind()});
+ ParamValue{*lenParam}, MakeKindExpr(dyType->kind()));
} else {
auto lenExpr{dyType->GetCharLength()};
if (!lenExpr) {
@@ -272,12 +273,12 @@ const DeclTypeSpec *Scope::GetType(const SomeExpr &expr) {
return &MakeCharacterType(
ParamValue{SomeIntExpr{std::move(*lenExpr)},
common::TypeParamAttr::Len},
- KindExpr{dyType->kind()});
+ MakeKindExpr(dyType->kind()));
}
}
break;
case TypeCategory::Logical:
- return &MakeLogicalType(KindExpr{dyType->kind()});
+ return &MakeLogicalType(MakeKindExpr(dyType->kind()));
case TypeCategory::Derived:
return &MakeDerivedType(dyType->IsPolymorphic()
? DeclTypeSpec::ClassDerived
diff --git a/flang/lib/Semantics/semantics.cpp b/flang/lib/Semantics/semantics.cpp
index 33c54c81f8abdd..1ccbf79750be23 100644
--- a/flang/lib/Semantics/semantics.cpp
+++ b/flang/lib/Semantics/semantics.cpp
@@ -406,13 +406,13 @@ const DeclTypeSpec &SemanticsContext::MakeNumericType(
if (kind == 0) {
kind = GetDefaultKind(category);
}
- return globalScope_.MakeNumericType(category, KindExpr{kind});
+ return globalScope_.MakeNumericType(category, MakeKindExpr(kind));
}
const DeclTypeSpec &SemanticsContext::MakeLogicalType(int kind) {
if (kind == 0) {
kind = GetDefaultKind(TypeCategory::Logical);
}
- return globalScope_.MakeLogicalType(KindExpr{kind});
+ return globalScope_.MakeLogicalType(MakeKindExpr(kind));
}
bool SemanticsContext::AnyFatalError() const {
diff --git a/flang/lib/Semantics/type.cpp b/flang/lib/Semantics/type.cpp
index 678bae83ba68e6..d8bafc2d26aa6a 100644
--- a/flang/lib/Semantics/type.cpp
+++ b/flang/lib/Semantics/type.cpp
@@ -23,6 +23,8 @@
namespace Fortran::semantics {
+KindExpr MakeKindExpr(int v) { return evaluate::MakeSubscriptIntExpr(v); }
+
DerivedTypeSpec::DerivedTypeSpec(SourceName name, const Symbol &typeSymbol)
: name_{name}, originalTypeSymbol_{typeSymbol},
typeSymbol_{typeSymbol.GetUltimate()} {
@@ -114,7 +116,7 @@ void DerivedTypeSpec::EvaluateParameters(SemanticsContext &context) {
auto &messages{foldingContext.messages()};
for (const Symbol &symbol : OrderParameterDeclarations(typeSymbol_)) {
SourceName name{symbol.name()};
- int parameterKind{evaluate::TypeParamInquiry::Result::kind};
+ int parameterKind{evaluate::TypeParamInquiry::ResultKind};
// Compute the integer kind value of the type parameter,
// which may depend on the values of earlier ones.
if (const auto *typeSpec{symbol.GetType()}) {
@@ -436,7 +438,7 @@ void DerivedTypeSpec::Instantiate(Scope &containingScope) {
std::move(DEREF(evaluate::UnwrapExpr<SomeIntExpr>(*expr))));
if (auto dyType{expr->GetType()}) {
instanceDetails.set_type(newScope.MakeNumericType(
- TypeCategory::Integer, KindExpr{dyType->kind()}));
+ TypeCategory::Integer, MakeKindExpr(dyType->kind())));
}
}
if (!instanceDetails.type()) {
@@ -661,7 +663,7 @@ const DeclTypeSpec &InstantiateHelper::InstantiateIntrinsicType(
if (MaybeExpr analyzed{AnalyzeExpr(scope_.context(), *originalKindExpr)}) {
if (auto *intExpr{evaluate::UnwrapExpr<SomeIntExpr>(*analyzed)}) {
kindExpr = evaluate::ConvertToType<evaluate::SubscriptInteger>(
- std::move(*intExpr));
+ evaluate::SubscriptIntegerKind, std::move(*intExpr));
}
}
}
@@ -692,13 +694,13 @@ const DeclTypeSpec &InstantiateHelper::InstantiateIntrinsicType(
}
switch (spec.category()) {
case DeclTypeSpec::Numeric:
- return scope_.MakeNumericType(intrinsic.category(), KindExpr{kind});
+ return scope_.MakeNumericType(intrinsic.category(), MakeKindExpr(kind));
case DeclTypeSpec::Logical:
- return scope_.MakeLogicalType(KindExpr{kind});
+ return scope_.MakeLogicalType(MakeKindExpr(kind));
case DeclTypeSpec::Character:
return scope_.MakeCharacterType(
FoldCharacterLength(foldingContext(), spec.characterTypeSpec()),
- KindExpr{kind});
+ MakeKindExpr(kind));
default:
CRASH_NO_CASE;
}
@@ -831,7 +833,8 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &o, const DerivedTypeSpec &x) {
return o << x.AsFortran();
}
-Bound::Bound(common::ConstantSubscript bound) : expr_{bound} {}
+Bound::Bound(common::ConstantSubscript bound)
+ : expr_{evaluate::MakeSubscriptIntExpr(bound)} {}
llvm::raw_ostream &operator<<(llvm::raw_ostream &o, const Bound &x) {
if (x.isStar()) {
@@ -881,8 +884,7 @@ ParamValue::ParamValue(SomeIntExpr &&expr, common::TypeParamAttr attr)
: attr_{attr}, expr_{std::move(expr)} {}
ParamValue::ParamValue(
common::ConstantSubscript value, common::TypeParamAttr attr)
- : ParamValue(SomeIntExpr{evaluate::Expr<evaluate::SubscriptInteger>{value}},
- attr) {}
+ : ParamValue(SomeIntExpr{evaluate::MakeSubscriptIntExpr(value)}, attr) {}
void ParamValue::SetExplicit(SomeIntExpr &&x) {
category_ = Category::Explicit;
diff --git a/flang/test/Evaluate/fold-ibits.f90 b/flang/test/Evaluate/fold-ibits.f90
index b49fce9f7af96d..69052b0bcd588f 100644
--- a/flang/test/Evaluate/fold-ibits.f90
+++ b/flang/test/Evaluate/fold-ibits.f90
@@ -11,3 +11,32 @@ module m1
integer, parameter :: expect3(*) = [((iand(shiftr(mess,pos),maskr(len)),len=0,31-pos),pos=0,31)]
logical, parameter :: test3 = all(res3 == expect3)
end module
+
+! IBITS must be folded at the kind of its first argument. Folding it at the
+! default integer kind truncates arguments of a wider kind.
+module m2
+ implicit integer(a-z)
+ integer(1), parameter :: mess1 = int(z'5a', 1)
+ integer(2), parameter :: mess2 = int(z'5a5a', 2)
+ integer(8), parameter :: mess8 = int(z'5a5a5a5a5a5a5a5a', 8)
+ integer(16), parameter :: mess16 = int(z'5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a', 16)
+ logical, parameter :: test_kind1 = all( &
+ [((ibits(mess1,pos,len),len=0,7-pos),pos=0,7)] == &
+ [((iand(shiftr(mess1,pos),maskr(len,1)),len=0,7-pos),pos=0,7)])
+ logical, parameter :: test_kind2 = all( &
+ [((ibits(mess2,pos,len),len=0,15-pos),pos=0,15)] == &
+ [((iand(shiftr(mess2,pos),maskr(len,2)),len=0,15-pos),pos=0,15)])
+ logical, parameter :: test_kind8 = all( &
+ [((ibits(mess8,pos,len),len=0,63-pos),pos=0,63)] == &
+ [((iand(shiftr(mess8,pos),maskr(len,8)),len=0,63-pos),pos=0,63)])
+ logical, parameter :: test_kind16 = all( &
+ [((ibits(mess16,pos,len),len=0,127-pos),pos=0,127)] == &
+ [((iand(shiftr(mess16,pos),maskr(len,16)),len=0,127-pos),pos=0,127)])
+ ! Bit fields that extend past bit 31 must survive.
+ logical, parameter :: test_wide8 = ibits(1234567890123_8, 0, 40) == 135056262347_8
+ logical, parameter :: test_wide16 = &
+ ibits(1234567890123456789_16, 8, 120) == 4822530820794753_16
+ ! Folding must not narrow the first argument, which would overflow.
+ integer(8), parameter :: nonarrow8 = ibits(-1_8, 0, 64)
+ logical, parameter :: test_nonarrow8 = nonarrow8 == -1_8
+end module
diff --git a/flang/test/Evaluate/fold-real-storage-size.f90 b/flang/test/Evaluate/fold-real-storage-size.f90
new file mode 100644
index 00000000000000..460e5a6beea11d
--- /dev/null
+++ b/flang/test/Evaluate/fold-real-storage-size.f90
@@ -0,0 +1,24 @@
+! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
+
+! REAL(3) is bfloat16: its raw bits occupy 2 bytes, not 3. Constant
+! initialization and TRANSFER round-trip values through their raw bytes, so
+! the number of bytes stored must not be conflated with the kind number.
+! See fold-real10-storage-size.f90 for the REAL(10) counterpart.
+
+subroutine data_init
+ real(3) :: x
+ data x/1.5_3/
+ print *, x
+end subroutine
+! CHECK-LABEL: SUBROUTINE data_init
+! CHECK: DATA x/1.5_3/
+
+subroutine transfers
+ print *, transfer(1.5_3, 0.0_3)
+ print *, transfer(1.5_3, 0_2)
+ print *, transfer(16320_2, 0.0_3)
+end subroutine
+! CHECK-LABEL: SUBROUTINE transfers
+! CHECK: PRINT *, 1.5_3
+! CHECK: PRINT *, 16320_2
+! CHECK: PRINT *, 1.5_3
diff --git a/flang/test/Evaluate/fold-real10-storage-size.f90 b/flang/test/Evaluate/fold-real10-storage-size.f90
new file mode 100644
index 00000000000000..851b613dbff414
--- /dev/null
+++ b/flang/test/Evaluate/fold-real10-storage-size.f90
@@ -0,0 +1,42 @@
+! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
+! REQUIRES: target=x86_64{{.*}}
+! UNSUPPORTED: system-windows
+
+! REAL(10) is the x87 extended format: 80 significant bits held in a 16-byte
+! container, so its raw bits occupy 16 bytes rather than 10. Constant
+! initialization, TRANSFER and host-library folding all round-trip values
+! through their raw bytes, so the number of bytes stored must not be
+! conflated with the kind number.
+
+subroutine data_init
+ real(10) :: x
+ complex(10) :: y
+ data x/1.5_10/
+ data y/(1.5_10, 2.5_10)/
+ print *, x, y
+end subroutine
+! CHECK-LABEL: SUBROUTINE data_init
+! CHECK: DATA x/1.5_10/
+! CHECK: DATA y/(1.5_10,2.5_10)/
+
+subroutine transfers
+ ! A bit pattern of 1 reinterpreted as REAL(10) is the smallest subnormal,
+ ! so the low-order bytes must survive the round trip.
+ print *, transfer(1_8, 0.0_10)
+ print *, transfer(1.5_10, 0.0_10)
+ print *, transfer(1.5_10, 0_2, 8)
+end subroutine
+! CHECK-LABEL: SUBROUTINE transfers
+! CHECK: PRINT *, {{.*}}e-4951_10
+! CHECK: PRINT *, 1.5_10
+! CHECK: PRINT *, [INTEGER(2)::0_2,0_2,0_2,-16384_2,16383_2,0_2,0_2,0_2]
+
+subroutine host_folding
+ ! Folding these casts to and from the host long double, whose size differs
+ ! from the number of significant bytes.
+ real(10), parameter :: s = sin(1.0_10)
+ real(10), parameter :: e = exp(1.0_10)
+ print *, s, e
+end subroutine
+! CHECK-LABEL: SUBROUTINE host_folding
+! CHECK: PRINT *, 8.4{{[0-9]*}}e-1_10, 2.7{{[0-9]*}}_10
diff --git a/flang/test/Lower/constant-literal-kinds.f90 b/flang/test/Lower/constant-literal-kinds.f90
new file mode 100644
index 00000000000000..76498b91ce9df7
--- /dev/null
+++ b/flang/test/Lower/constant-literal-kinds.f90
@@ -0,0 +1,63 @@
+! RUN: bbc -emit-fir -o - %s | FileCheck %s
+
+! Constant array literals are hoisted into globals that are shared between
+! equivalent literals. Every constant expression hashes to the same bucket,
+! so the equality predicate in Fortran::lower::isEqual() is what keeps them
+! apart: literals that differ only in the kind of their elements must not be
+! given the same global, or the global would be emitted with the element type
+! of whichever literal was lowered first.
+
+subroutine integer_kinds
+ interface
+ subroutine i1(x)
+ integer(1) :: x(3)
+ end subroutine
+ subroutine i2(x)
+ integer(2) :: x(3)
+ end subroutine
+ subroutine i4(x)
+ integer(4) :: x(3)
+ end subroutine
+ subroutine i8(x)
+ integer(8) :: x(3)
+ end subroutine
+ end interface
+ call i1([1_1, 2_1, 3_1])
+ call i2([1_2, 2_2, 3_2])
+ call i4([1_4, 2_4, 3_4])
+ call i8([1_8, 2_8, 3_8])
+end subroutine
+! CHECK-DAG: fir.global internal @_QQro.3xi1.{{[0-9]+}}(dense<[1, 2, 3]> : tensor<3xi8>) {{.*}} : !fir.array<3xi8>
+! CHECK-DAG: fir.global internal @_QQro.3xi2.{{[0-9]+}}(dense<[1, 2, 3]> : tensor<3xi16>) {{.*}} : !fir.array<3xi16>
+! CHECK-DAG: fir.global internal @_QQro.3xi4.{{[0-9]+}}(dense<[1, 2, 3]> : tensor<3xi32>) {{.*}} : !fir.array<3xi32>
+! CHECK-DAG: fir.global internal @_QQro.3xi8.{{[0-9]+}}(dense<[1, 2, 3]> : tensor<3xi64>) {{.*}} : !fir.array<3xi64>
+
+subroutine real_kinds
+ interface
+ subroutine r4(x)
+ real(4) :: x(3)
+ end subroutine
+ subroutine r8(x)
+ real(8) :: x(3)
+ end subroutine
+ end interface
+ call r4([1.0_4, 2.0_4, 3.0_4])
+ call r8([1.0_8, 2.0_8, 3.0_8])
+end subroutine
+! CHECK-DAG: fir.global internal @_QQro.3xr4.{{[0-9]+}}({{.*}} : tensor<3xf32>) {{.*}} : !fir.array<3xf32>
+! CHECK-DAG: fir.global internal @_QQro.3xr8.{{[0-9]+}}({{.*}} : tensor<3xf64>) {{.*}} : !fir.array<3xf64>
+
+subroutine logical_kinds
+ interface
+ subroutine l1(x)
+ logical(1) :: x(2)
+ end subroutine
+ subroutine l4(x)
+ logical(4) :: x(2)
+ end subroutine
+ end interface
+ call l1([.true._1, .false._1])
+ call l4([.true._4, .false._4])
+end subroutine
+! CHECK-DAG: fir.global internal @_QQro.2xl1.{{[0-9]+}}({{.*}} : tensor<2xi8>) {{.*}} : !fir.array<2x!fir.logical<1>>
+! CHECK-DAG: fir.global internal @_QQro.2xl4.{{[0-9]+}}({{.*}} : tensor<2xi32>) {{.*}} : !fir.array<2x!fir.logical<4>>
diff --git a/flang/test/Semantics/modfile86.f90 b/flang/test/Semantics/modfile86.f90
new file mode 100644
index 00000000000000..178ab436401c8c
--- /dev/null
+++ b/flang/test/Semantics/modfile86.f90
@@ -0,0 +1,18 @@
+! RUN: split-file %s %t
+! RUN: %flang_fc1 -fsyntax-only -module-dir %t %t/m.f90
+! RUN: %flang_fc1 -fsyntax-only -Werror -module-dir %t %t/use.f90
+
+! Ensure that canonical representations of infinities and NaNs in module files
+! can be read without emitting folding exception warnings.
+
+!--- m.f90
+module m
+ real(4), parameter :: positive_infinity = z'7f800000'
+ real(4), parameter :: negative_infinity = z'ff800000'
+ real(4), parameter :: quiet_nan = z'7fc00000'
+end module
+
+!--- use.f90
+program test
+ use m
+end program
diff --git a/flang/unittests/CMakeLists.txt b/flang/unittests/CMakeLists.txt
index 64cd5c0446474e..db83c4a98e6153 100644
--- a/flang/unittests/CMakeLists.txt
+++ b/flang/unittests/CMakeLists.txt
@@ -15,6 +15,10 @@ function(add_flang_unittest test_dirname)
if (FLANG_PARALLEL_COMPILE_JOBS)
set_property(TARGET ${test_dirname} PROPERTY JOB_POOL_COMPILE flang_compile_job_pool)
endif ()
+
+ if(TARGET flang-generated-object-sizes)
+ add_dependencies(${test_dirname} flang-generated-object-sizes)
+ endif()
endfunction()
if (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG)
@@ -53,6 +57,10 @@ function(add_flang_nongtest_unittest test_name)
if(NOT ARG_SLOW_TEST)
add_dependencies(FlangUnitTests ${test_name}${suffix})
endif()
+
+ if(TARGET flang-generated-object-sizes)
+ add_dependencies(${test_name}${suffix} flang-generated-object-sizes)
+ endif()
endfunction()
add_subdirectory(Optimizer)
diff --git a/flang/unittests/Evaluate/expression.cpp b/flang/unittests/Evaluate/expression.cpp
index d575f36def287e..8d570f517bc1f8 100644
--- a/flang/unittests/Evaluate/expression.cpp
+++ b/flang/unittests/Evaluate/expression.cpp
@@ -11,13 +11,17 @@
using namespace Fortran::evaluate;
+static Expr<Type<TypeCategory::Integer>> MakeDefaultIntegerExpr(int32_t v) {
+ return MakeConstantExpr<Type<TypeCategory::Integer>>(4, v);
+}
+
int main() {
- using DefaultIntegerExpr = Expr<Type<TypeCategory::Integer, 4>>;
- TEST(DefaultIntegerExpr::Result::AsFortran() == "INTEGER(4)");
- MATCH("666_4", DefaultIntegerExpr{666}.AsFortran());
- MATCH("-1_4", (-DefaultIntegerExpr{1}).AsFortran());
- auto ex1{
- DefaultIntegerExpr{2} + DefaultIntegerExpr{3} * -DefaultIntegerExpr{4}};
+ using DefaultIntegerExpr = Expr<Type<TypeCategory::Integer>>;
+ TEST(DefaultIntegerExpr::Result{4}.AsFortran() == "INTEGER(4)");
+ MATCH("666_4", MakeDefaultIntegerExpr(666).AsFortran());
+ MATCH("-1_4", (-MakeDefaultIntegerExpr(1)).AsFortran());
+ auto ex1{MakeDefaultIntegerExpr(2) +
+ MakeDefaultIntegerExpr(3) * -MakeDefaultIntegerExpr(4)};
MATCH("2_4+3_4*(-4_4)", ex1.AsFortran());
Fortran::common::IntrinsicTypeDefaultKinds defaults;
auto intrinsics{Fortran::evaluate::IntrinsicProcTable::Configure(defaults)};
@@ -28,9 +32,10 @@ int main() {
intrinsics, targetCharacteristics, languageFeatures, tempNames};
ex1 = Fold(context, std::move(ex1));
MATCH("-10_4", ex1.AsFortran());
- MATCH("1_4/2_4", (DefaultIntegerExpr{1} / DefaultIntegerExpr{2}).AsFortran());
- DefaultIntegerExpr a{1};
- DefaultIntegerExpr b{2};
+ MATCH("1_4/2_4",
+ (MakeDefaultIntegerExpr(1) / MakeDefaultIntegerExpr(2)).AsFortran());
+ DefaultIntegerExpr a{MakeDefaultIntegerExpr(1)};
+ DefaultIntegerExpr b{MakeDefaultIntegerExpr(2)};
MATCH("1_4", a.AsFortran());
a = b;
MATCH("2_4", a.AsFortran());
diff --git a/flang/unittests/Evaluate/folding.cpp b/flang/unittests/Evaluate/folding.cpp
index 832e55d44316da..31b33c51af57ba 100644
--- a/flang/unittests/Evaluate/folding.cpp
+++ b/flang/unittests/Evaluate/folding.cpp
@@ -15,13 +15,19 @@ using namespace Fortran::evaluate;
template <typename... T> struct RunOnTypes {};
template <typename Test, typename... T>
struct RunOnTypes<Test, std::tuple<T...>> {
- static void Run() { (..., Test::template Run<T>()); }
+ template <typename U> static void RunOnKinds() {
+ for (int kind : KindsByType<U::category>::kinds) {
+ Test::template Run<U>(kind);
+ }
+ }
+
+ static void Run() { (..., RunOnKinds<T>()); }
};
// test for fold.h GetScalarConstantValue function
struct TestGetScalarConstantValue {
- template <typename T> static void Run() {
- Expr<T> exprFullyTyped{Constant<T>{Scalar<T>{}}};
+ template <typename T> static void Run(int kind) {
+ Expr<T> exprFullyTyped{MakeZeroExpr<T>(kind)};
Expr<SomeKind<T::category>> exprSomeKind{exprFullyTyped};
Expr<SomeType> exprSomeType{exprSomeKind};
TEST(GetScalarConstantValue<T>(exprFullyTyped).has_value());
@@ -33,13 +39,15 @@ struct TestGetScalarConstantValue {
template <typename T>
Scalar<T> CallHostRt(
HostRuntimeWrapper func, FoldingContext &context, Scalar<T> x) {
+ const int kind{x.kind()};
return GetScalarConstantValue<T>(
- func(context, {AsGenericExpr(Constant<T>{x})}))
+ func(context, {AsGenericExpr(Constant<T>{kind, x})}))
.value();
}
void TestHostRuntimeSubnormalFlushing() {
- using R4 = Type<TypeCategory::Real, 4>;
+ using R4 = host::TypeKind<TypeCategory::Real, 4>;
+ using FR4 = R4::FortranType;
if constexpr (std::is_same_v<host::HostType<R4>, float>) {
Fortran::parser::CharBlock src;
Fortran::parser::ContextualMessages messages{src, nullptr};
@@ -56,13 +64,14 @@ void TestHostRuntimeSubnormalFlushing() {
FoldingContext noFlushingContext{messages, defaults, intrinsics,
noFlushingTargetCharacteristics, languageFeatures, tempNames};
- DynamicType r4{R4{}.GetType()};
+ DynamicType r4{R4::GetType()};
// Test subnormal argument flushing
if (auto callable{GetHostRuntimeWrapper("log", r4, {r4})}) {
// Biggest IEEE 32bits subnormal power of two
- const Scalar<R4> x1{Scalar<R4>::Word{0x00400000}};
- Scalar<R4> y1Flushing{CallHostRt<R4>(*callable, flushingContext, x1)};
- Scalar<R4> y1NoFlushing{CallHostRt<R4>(*callable, noFlushingContext, x1)};
+ const Scalar<FR4> x1{4, Scalar<FR4>::Word{4, 0x00400000}};
+ Scalar<FR4> y1Flushing{CallHostRt<FR4>(*callable, flushingContext, x1)};
+ Scalar<FR4> y1NoFlushing{
+ CallHostRt<FR4>(*callable, noFlushingContext, x1)};
// We would expect y1Flushing to be NaN, but some libc logf implementation
// "workaround" subnormal flushing by returning a constant negative
// results for all subnormal values (-1.03972076416015625e2_4). In case of
diff --git a/flang/unittests/Evaluate/intrinsics.cpp b/flang/unittests/Evaluate/intrinsics.cpp
index cca2f8c30247e0..69c8aa42469500 100644
--- a/flang/unittests/Evaluate/intrinsics.cpp
+++ b/flang/unittests/Evaluate/intrinsics.cpp
@@ -44,7 +44,8 @@ class CookedStrings {
};
template <typename A> auto Const(A &&x) -> Constant<TypeOf<A>> {
- return Constant<TypeOf<A>>{std::move(x)};
+ const int kind{x.kind()};
+ return Constant<TypeOf<A>>{kind, std::move(x)};
}
template <typename A> struct NamedArg {
@@ -152,64 +153,71 @@ void TestIntrinsics() {
IntrinsicProcTable table{IntrinsicProcTable::Configure(defaults)};
table.Dump(llvm::outs());
- using Int1 = Type<TypeCategory::Integer, 1>;
- using Int4 = Type<TypeCategory::Integer, 4>;
- using Int8 = Type<TypeCategory::Integer, 8>;
- using Real4 = Type<TypeCategory::Real, 4>;
- using Real8 = Type<TypeCategory::Real, 8>;
- using Complex4 = Type<TypeCategory::Complex, 4>;
- using Complex8 = Type<TypeCategory::Complex, 8>;
- using Char = Type<TypeCategory::Character, 1>;
- using Log4 = Type<TypeCategory::Logical, 4>;
+ using Int1 = Type<TypeCategory::Integer>;
+ Int1 int1{1};
+ using Int4 = Type<TypeCategory::Integer>;
+ Int4 int4{4};
+ using Int8 = Type<TypeCategory::Integer>;
+ Int8 int8{8};
+ using Real4 = Type<TypeCategory::Real>;
+ Real4 real4{4};
+ using Real8 = Type<TypeCategory::Real>;
+ Real8 real8{8};
+ using Complex4 = Type<TypeCategory::Complex>;
+ Complex4 complex4{4};
+ using Complex8 = Type<TypeCategory::Complex>;
+ Complex8 complex8{8};
+ using Char = Type<TypeCategory::Character>;
+ using Log4 = Type<TypeCategory::Logical>;
TestCall{defaults, table, "bad"}
- .Push(Const(Scalar<Int4>{}))
+ .Push(Const(Scalar<Int4>::Zero(4)))
.DoCall(); // bad intrinsic name
TestCall{defaults, table, "abs"}
- .Push(Named("a", Const(Scalar<Int4>{})))
- .DoCall(Int4::GetType());
+ .Push(Named("a", Const(Scalar<Int4>::Zero(4))))
+ .DoCall(int4.GetType());
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Int4>{}))
- .DoCall(Int4::GetType());
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .DoCall(int4.GetType());
TestCall{defaults, table, "abs"}
- .Push(Named("bad", Const(Scalar<Int4>{})))
+ .Push(Named("bad", Const(Scalar<Int4>::Zero(4))))
.DoCall(); // bad keyword
TestCall{defaults, table, "abs"}.DoCall(); // insufficient args
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Int4>{}))
- .Push(Const(Scalar<Int4>{}))
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .Push(Const(Scalar<Int4>::Zero(4)))
.DoCall(); // too many args
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Int4>{}))
- .Push(Named("a", Const(Scalar<Int4>{})))
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .Push(Named("a", Const(Scalar<Int4>::Zero(4))))
.DoCall();
TestCall{defaults, table, "abs"}
- .Push(Named("a", Const(Scalar<Int4>{})))
- .Push(Const(Scalar<Int4>{}))
+ .Push(Named("a", Const(Scalar<Int4>::Zero(4))))
+ .Push(Const(Scalar<Int4>::Zero(4)))
.DoCall();
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Int1>{}))
- .DoCall(Int1::GetType());
+ .Push(Const(Scalar<Int1>::Zero(1)))
+ .DoCall(int1.GetType());
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Int4>{}))
- .DoCall(Int4::GetType());
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .DoCall(int4.GetType());
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Int8>{}))
- .DoCall(Int8::GetType());
+ .Push(Const(Scalar<Int8>::Zero(8)))
+ .DoCall(int8.GetType());
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Real4>{}))
- .DoCall(Real4::GetType());
+ .Push(Const(Scalar<Real4>::Zero(4)))
+ .DoCall(real4.GetType());
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Real8>{}))
- .DoCall(Real8::GetType());
+ .Push(Const(Scalar<Real8>::Zero(8)))
+ .DoCall(real8.GetType());
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Complex4>{}))
- .DoCall(Real4::GetType());
+ .Push(Const(Scalar<Complex4>::Zero(4)))
+ .DoCall(real4.GetType());
TestCall{defaults, table, "abs"}
- .Push(Const(Scalar<Complex8>{}))
- .DoCall(Real8::GetType());
- TestCall{defaults, table, "abs"}.Push(Const(Scalar<Char>{})).DoCall();
- TestCall{defaults, table, "abs"}.Push(Const(Scalar<Log4>{})).DoCall();
+ .Push(Const(Scalar<Complex8>::Zero(8)))
+ .DoCall(real8.GetType());
+ TestCall{defaults, table, "abs"}.Push(Const(Scalar<Char>::Zero(1))).DoCall();
+ TestCall{defaults, table, "abs"}.Push(Const(Scalar<Log4>::Zero(4))).DoCall();
// "Ext" in names for calls allowed as extensions
TestCall maxCallR{defaults, table, "max"}, maxCallI{defaults, table, "min"},
@@ -218,110 +226,114 @@ void TestIntrinsics() {
max0ExtCall{defaults, table, "max0"},
amin1ExtCall{defaults, table, "amin1"};
for (int j{0}; j < 10; ++j) {
- maxCallR.Push(Const(Scalar<Real4>{}));
- maxCallI.Push(Const(Scalar<Int4>{}));
- max0Call.Push(Const(Scalar<Int4>{}));
- max0ExtCall.Push(Const(Scalar<Real4>{}));
- max1Call.Push(Const(Scalar<Real4>{}));
- amin0Call.Push(Const(Scalar<Int4>{}));
- amin1ExtCall.Push(Const(Scalar<Int4>{}));
- amin1Call.Push(Const(Scalar<Real4>{}));
+ maxCallR.Push(Const(Scalar<Real4>::Zero(4)));
+ maxCallI.Push(Const(Scalar<Int4>::Zero(4)));
+ max0Call.Push(Const(Scalar<Int4>::Zero(4)));
+ max0ExtCall.Push(Const(Scalar<Real4>::Zero(4)));
+ max1Call.Push(Const(Scalar<Real4>::Zero(4)));
+ amin0Call.Push(Const(Scalar<Int4>::Zero(4)));
+ amin1ExtCall.Push(Const(Scalar<Int4>::Zero(4)));
+ amin1Call.Push(Const(Scalar<Real4>::Zero(4)));
}
- maxCallR.DoCall(Real4::GetType());
- maxCallI.DoCall(Int4::GetType());
- max0Call.DoCall(Int4::GetType());
- max0ExtCall.DoCall(Int4::GetType());
- max1Call.DoCall(Int4::GetType());
- amin0Call.DoCall(Real4::GetType());
- amin1Call.DoCall(Real4::GetType());
- amin1ExtCall.DoCall(Real4::GetType());
+ maxCallR.DoCall(real4.GetType());
+ maxCallI.DoCall(int4.GetType());
+ max0Call.DoCall(int4.GetType());
+ max0ExtCall.DoCall(int4.GetType());
+ max1Call.DoCall(int4.GetType());
+ amin0Call.DoCall(real4.GetType());
+ amin1Call.DoCall(real4.GetType());
+ amin1ExtCall.DoCall(real4.GetType());
TestCall{defaults, table, "conjg"}
- .Push(Const(Scalar<Complex4>{}))
- .DoCall(Complex4::GetType());
+ .Push(Const(Scalar<Complex4>::Zero(4)))
+ .DoCall(complex4.GetType());
TestCall{defaults, table, "conjg"}
- .Push(Const(Scalar<Complex8>{}))
- .DoCall(Complex8::GetType());
+ .Push(Const(Scalar<Complex8>::Zero(8)))
+ .DoCall(complex8.GetType());
TestCall{defaults, table, "dconjg"}
- .Push(Const(Scalar<Complex8>{}))
- .DoCall(Complex8::GetType());
+ .Push(Const(Scalar<Complex8>::Zero(8)))
+ .DoCall(complex8.GetType());
- TestCall{defaults, table, "float"}.Push(Const(Scalar<Real4>{})).DoCall();
TestCall{defaults, table, "float"}
- .Push(Const(Scalar<Int4>{}))
- .DoCall(Real4::GetType());
- TestCall{defaults, table, "idint"}.Push(Const(Scalar<Int4>{})).DoCall();
+ .Push(Const(Scalar<Real4>::Zero(4)))
+ .DoCall();
+ TestCall{defaults, table, "float"}
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .DoCall(real4.GetType());
+ TestCall{defaults, table, "idint"}
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .DoCall();
TestCall{defaults, table, "idint"}
- .Push(Const(Scalar<Real8>{}))
- .DoCall(Int4::GetType());
+ .Push(Const(Scalar<Real8>::Zero(8)))
+ .DoCall(int4.GetType());
// Allowed as extensions
TestCall{defaults, table, "float"}
- .Push(Const(Scalar<Int8>{}))
- .DoCall(Real4::GetType());
+ .Push(Const(Scalar<Int8>::Zero(8)))
+ .DoCall(real4.GetType());
TestCall{defaults, table, "idint"}
- .Push(Const(Scalar<Real4>{}))
- .DoCall(Int4::GetType());
+ .Push(Const(Scalar<Real4>::Zero(4)))
+ .DoCall(int4.GetType());
- TestCall{defaults, table, "num_images"}.DoCall(Int4::GetType());
+ TestCall{defaults, table, "num_images"}.DoCall(int4.GetType());
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Int1>{}))
- .DoCall(Int4::GetType());
+ .Push(Const(Scalar<Int1>::Zero(1)))
+ .DoCall(int4.GetType());
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Int4>{}))
- .DoCall(Int4::GetType());
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .DoCall(int4.GetType());
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Int8>{}))
- .DoCall(Int4::GetType());
+ .Push(Const(Scalar<Int8>::Zero(8)))
+ .DoCall(int4.GetType());
TestCall{defaults, table, "num_images"}
- .Push(Named("team_number", Const(Scalar<Int4>{})))
- .DoCall(Int4::GetType());
+ .Push(Named("team_number", Const(Scalar<Int4>::Zero(4))))
+ .DoCall(int4.GetType());
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Int4>{}))
- .Push(Const(Scalar<Int4>{}))
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .Push(Const(Scalar<Int4>::Zero(4)))
.DoCall(); // too many args
TestCall{defaults, table, "num_images"}
- .Push(Named("bad", Const(Scalar<Int4>{})))
+ .Push(Named("bad", Const(Scalar<Int4>::Zero(4))))
.DoCall(); // bad keyword
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Char>{}))
+ .Push(Const(Scalar<Char>::Zero(1)))
.DoCall(); // bad type
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Log4>{}))
+ .Push(Const(Scalar<Log4>::Zero(4)))
.DoCall(); // bad type
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Complex8>{}))
+ .Push(Const(Scalar<Complex8>::Zero(8)))
.DoCall(); // bad type
TestCall{defaults, table, "num_images"}
- .Push(Const(Scalar<Real4>{}))
+ .Push(Const(Scalar<Real4>::Zero(4)))
.DoCall(); // bad type
// This test temporarily removed because it requires access to
// the ISO_FORTRAN_ENV intrinsic module. This module should to
// be loaded (somehow) and the following test reinstated.
- // TestCall{defaults, table, "team_number"}.DoCall(Int4::GetType());
+ // TestCall{defaults, table, "team_number"}.DoCall(int4.GetType());
TestCall{defaults, table, "team_number"}
- .Push(Const(Scalar<Int4>{}))
- .Push(Const(Scalar<Int4>{}))
+ .Push(Const(Scalar<Int4>::Zero(4)))
+ .Push(Const(Scalar<Int4>::Zero(4)))
.DoCall(); // too many args
TestCall{defaults, table, "team_number"}
- .Push(Named("bad", Const(Scalar<Int4>{})))
+ .Push(Named("bad", Const(Scalar<Int4>::Zero(4))))
.DoCall(); // bad keyword
TestCall{defaults, table, "team_number"}
- .Push(Const(Scalar<Int4>{}))
+ .Push(Const(Scalar<Int4>::Zero(4)))
.DoCall(); // bad type
TestCall{defaults, table, "team_number"}
- .Push(Const(Scalar<Char>{}))
+ .Push(Const(Scalar<Char>::Zero(1)))
.DoCall(); // bad type
TestCall{defaults, table, "team_number"}
- .Push(Const(Scalar<Log4>{}))
+ .Push(Const(Scalar<Log4>::Zero(4)))
.DoCall(); // bad type
TestCall{defaults, table, "team_number"}
- .Push(Const(Scalar<Complex8>{}))
+ .Push(Const(Scalar<Complex8>::Zero(4)))
.DoCall(); // bad type
TestCall{defaults, table, "team_number"}
- .Push(Const(Scalar<Real4>{}))
+ .Push(Const(Scalar<Real4>::Zero(4)))
.DoCall(); // bad type
// TODO: test other intrinsics
diff --git a/flang/unittests/Evaluate/logical.cpp b/flang/unittests/Evaluate/logical.cpp
index ba7d0d8d0c0e3a..c8bf850d6c08e8 100644
--- a/flang/unittests/Evaluate/logical.cpp
+++ b/flang/unittests/Evaluate/logical.cpp
@@ -2,41 +2,40 @@
#include "flang/Testing/testing.h"
#include <cstdio>
-template <int KIND> void testKind() {
- using Type =
- Fortran::evaluate::Type<Fortran::common::TypeCategory::Logical, KIND>;
+static void testKind(int kind) {
+ using Type = Fortran::evaluate::Type<Fortran::common::TypeCategory::Logical>;
TEST(Fortran::evaluate::IsSpecificIntrinsicType<Type>);
TEST(Type::category == Fortran::common::TypeCategory::Logical);
- TEST(Type::kind == KIND);
+ TEST(Type{kind}.kind() == kind);
using Value = Fortran::evaluate::Scalar<Type>;
- MATCH(8 * KIND, Value::bits);
+ MATCH(8 * kind, Value::Zero(kind).bits());
TEST(!Value{}.IsTrue());
- TEST(!Value{false}.IsTrue());
- TEST(Value{true}.IsTrue());
- TEST(Value{false}.NOT().IsTrue());
- TEST(!Value{true}.NOT().IsTrue());
- TEST(!Value{false}.AND(Value{false}).IsTrue());
- TEST(!Value{false}.AND(Value{true}).IsTrue());
- TEST(!Value{true}.AND(Value{false}).IsTrue());
- TEST(Value{true}.AND(Value{true}).IsTrue());
- TEST(!Value{false}.OR(Value{false}).IsTrue());
- TEST(Value{false}.OR(Value{true}).IsTrue());
- TEST(Value{true}.OR(Value{false}).IsTrue());
- TEST(Value{true}.OR(Value{true}).IsTrue());
- TEST(Value{false}.EQV(Value{false}).IsTrue());
- TEST(!Value{false}.EQV(Value{true}).IsTrue());
- TEST(!Value{true}.EQV(Value{false}).IsTrue());
- TEST(Value{true}.EQV(Value{true}).IsTrue());
- TEST(!Value{false}.NEQV(Value{false}).IsTrue());
- TEST(Value{false}.NEQV(Value{true}).IsTrue());
- TEST(Value{true}.NEQV(Value{false}).IsTrue());
- TEST(!Value{true}.NEQV(Value{true}).IsTrue());
+ TEST(!Value(kind, false).IsTrue());
+ TEST(Value(kind, true).IsTrue());
+ TEST(Value(kind, false).NOT().IsTrue());
+ TEST(!Value(kind, true).NOT().IsTrue());
+ TEST(!Value(kind, false).AND(Value(kind, false)).IsTrue());
+ TEST(!Value(kind, false).AND(Value(kind, true)).IsTrue());
+ TEST(!Value(kind, true).AND(Value(kind, false)).IsTrue());
+ TEST(Value(kind, true).AND(Value(kind, true)).IsTrue());
+ TEST(!Value(kind, false).OR(Value(kind, false)).IsTrue());
+ TEST(Value(kind, false).OR(Value(kind, true)).IsTrue());
+ TEST(Value(kind, true).OR(Value(kind, false)).IsTrue());
+ TEST(Value(kind, true).OR(Value(kind, true)).IsTrue());
+ TEST(Value(kind, false).EQV(Value(kind, false)).IsTrue());
+ TEST(!Value(kind, false).EQV(Value(kind, true)).IsTrue());
+ TEST(!Value(kind, true).EQV(Value(kind, false)).IsTrue());
+ TEST(Value(kind, true).EQV(Value(kind, true)).IsTrue());
+ TEST(!Value(kind, false).NEQV(Value(kind, false)).IsTrue());
+ TEST(Value(kind, false).NEQV(Value(kind, true)).IsTrue());
+ TEST(Value(kind, true).NEQV(Value(kind, false)).IsTrue());
+ TEST(!Value(kind, true).NEQV(Value(kind, true)).IsTrue());
}
int main() {
- testKind<1>();
- testKind<2>();
- testKind<4>();
- testKind<8>();
+ testKind(1);
+ testKind(2);
+ testKind(4);
+ testKind(8);
return testing::Complete();
}
diff --git a/flang/unittests/Evaluate/real.cpp b/flang/unittests/Evaluate/real.cpp
index a28da5c3273ceb..9599303b6b5664 100644
--- a/flang/unittests/Evaluate/real.cpp
+++ b/flang/unittests/Evaluate/real.cpp
@@ -1,3 +1,4 @@
+#include "flang/Evaluate/real.h"
#include "flang/Evaluate/type.h"
#include "flang/Testing/fp-testing.h"
#include "flang/Testing/testing.h"
@@ -10,16 +11,16 @@
using namespace Fortran::evaluate;
using namespace Fortran::common;
-using Real2 = Scalar<Type<TypeCategory::Real, 2>>;
-using Real3 = Scalar<Type<TypeCategory::Real, 3>>;
-using Real4 = Scalar<Type<TypeCategory::Real, 4>>;
-using Real8 = Scalar<Type<TypeCategory::Real, 8>>;
+using Real2 = value::Real<value::Integer<16>, 11>;
+using Real3 = value::Real<value::Integer<16>, 8>;
+using Real4 = value::Real<value::Integer<32>, 24>;
+using Real8 = value::Real<value::Integer<64>, 53>;
#ifdef __x86_64__
-using Real10 = Scalar<Type<TypeCategory::Real, 10>>;
+using Real10 = value::Real<value::X87IntegerContainer, 64>;
#endif
-using Real16 = Scalar<Type<TypeCategory::Real, 16>>;
-using Integer4 = Scalar<Type<TypeCategory::Integer, 4>>;
-using Integer8 = Scalar<Type<TypeCategory::Integer, 8>>;
+using Real16 = value::Real<value::Integer<128>, 113>;
+using Integer4 = value::Integer<32>;
+using Integer8 = value::Integer<64>;
void dumpTest() {
struct {
>From 0082533f313ecedb4206201e413346a72094f77d Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Wed, 19 Aug 2026 10:32:39 +0200
Subject: [PATCH 02/13] Unify TypeKind declarations
---
.../include/flang/Evaluate/typekind-traits.h | 138 +++++++++++++++---
flang/lib/Evaluate/host.h | 33 +----
flang/unittests/Evaluate/folding.cpp | 2 +-
3 files changed, 121 insertions(+), 52 deletions(-)
diff --git a/flang/include/flang/Evaluate/typekind-traits.h b/flang/include/flang/Evaluate/typekind-traits.h
index 184de18666e242..38aef267d8b61d 100644
--- a/flang/include/flang/Evaluate/typekind-traits.h
+++ b/flang/include/flang/Evaluate/typekind-traits.h
@@ -13,6 +13,7 @@
#include "flang/Evaluate/common.h"
#include "flang/Evaluate/integer-value.h"
#include "flang/Evaluate/real-value.h"
+#include "flang/Evaluate/type.h"
namespace Fortran::evaluate::value {
class CharacterValue;
@@ -22,47 +23,77 @@ class ComplexValue;
namespace Fortran::evaluate {
+/// Traits class for Fortran intrinsics types.
+///
+/// In contrast to Type<CAT>, TypeKind<CAT,KIND> also carries the KIND as
+/// template parameter. Used to resolve a Fortran type to an equivalent C/C++
+/// type of the host compiler. Avoid using it anywhere else as template
+/// instantiation for each KIND separately blows up build time.
+///
+/// Common members:
+/// * category The CAT template argument
+/// * kind The KIND template argument
+/// * bits For types where it makes sense, how many bits of information
+/// it holds
+/// * bytesStored How many bytes this type requires in memory; includes
+/// alignment/padding bytes
+/// * HostT The equivalent C/C++ type in the host compiler; void if there
+/// is no equivalent
+/// * FortranType The equivalent evaluate::Type<CAT>
+/// * GetType() The equivalent evaluate::DynamicType
template <common::TypeCategory CAT, int KIND> struct TypeKind;
-template <> struct TypeKind<common::TypeCategory::Character, 1> {
- using CharT = char;
- using StringT = std::basic_string<CharT>;
- using Scalar = value::CharacterValue;
- static constexpr int kind{1};
-};
-
-template <> struct TypeKind<common::TypeCategory::Character, 2> {
- using CharT = char16_t;
- using StringT = std::basic_string<CharT>;
- using Scalar = value::CharacterValue;
- static constexpr int kind{2};
-};
-
-template <> struct TypeKind<common::TypeCategory::Character, 4> {
- using CharT = char32_t;
- using StringT = std::basic_string<CharT>;
- using Scalar = value::CharacterValue;
- static constexpr int kind{4};
-};
-
template <int KIND> struct TypeKind<common::TypeCategory::Integer, KIND> {
+ static constexpr common::TypeCategory category{common::TypeCategory::Integer};
static constexpr int kind{KIND};
static constexpr int bits{value::IntegerValue::bits(KIND)};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
using UnsignedT = common::HostUnsignedIntType<bits>;
using SignedT = common::HostSignedIntType<bits>;
using HostT = SignedT;
using Scalar = value::IntegerValue;
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Integer>;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
};
+using IntegerKindTypes = std::tuple<TypeKind<TypeCategory::Integer, 1>,
+ TypeKind<TypeCategory::Integer, 2>, TypeKind<TypeCategory::Integer, 4>,
+ TypeKind<TypeCategory::Integer, 8>, TypeKind<TypeCategory::Integer, 16>>;
+
template <int KIND> struct TypeKind<common::TypeCategory::Unsigned, KIND> {
+ static constexpr common::TypeCategory category{
+ common::TypeCategory::Unsigned};
static constexpr int kind{KIND};
static constexpr int bits{value::IntegerValue::bits(KIND)};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
using UnsignedT = common::HostUnsignedIntType<bits>;
using SignedT = common::HostSignedIntType<bits>;
using HostT = UnsignedT;
using Scalar = value::IntegerValue;
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Unsigned>;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
};
+using UnsignedKindTypes = std::tuple<TypeKind<TypeCategory::Unsigned, 1>,
+ TypeKind<TypeCategory::Unsigned, 2>, TypeKind<TypeCategory::Unsigned, 4>,
+ TypeKind<TypeCategory::Unsigned, 8>, TypeKind<TypeCategory::Unsigned, 16>>;
+
+template <int KIND> struct TypeKind<common::TypeCategory::Logical, KIND> {
+ static constexpr common::TypeCategory category{common::TypeCategory::Logical};
+ static constexpr int kind{KIND};
+ static constexpr int bits{value::LogicalValue::bits(KIND)};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
+ using UnsignedT = common::HostUnsignedIntType<bits>;
+ using SignedT = common::HostSignedIntType<bits>;
+ using HostT = UnsignedT;
+ using Scalar = value::LogicalValue;
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Logical>;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
+};
+
+using LogicalKindTypes = std::tuple<TypeKind<TypeCategory::Logical, 1>,
+ TypeKind<TypeCategory::Logical, 2>, TypeKind<TypeCategory::Logical, 4>>;
+
namespace detail {
// Only REAL(4) and REAL(8) have a portable native host arithmetic type
// (float and double, respectively); every other kind maps to void.
@@ -78,18 +109,83 @@ template <> struct RealHostType<64> {
} // namespace detail
template <int KIND> struct TypeKind<common::TypeCategory::Real, KIND> {
+ static constexpr common::TypeCategory category{common::TypeCategory::Real};
static constexpr int kind{KIND};
static constexpr int bits{value::RealValue::bits(KIND)};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
using UnsignedT = common::HostUnsignedIntType<bits>;
using SignedT = common::HostSignedIntType<bits>;
using HostT = typename detail::RealHostType<bits>::type;
using Scalar = value::RealValue;
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Real>;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
};
+using RealKindTypes =
+ std::tuple<TypeKind<TypeCategory::Real, 2>, TypeKind<TypeCategory::Real, 3>,
+ TypeKind<TypeCategory::Real, 4>, TypeKind<TypeCategory::Real, 8>,
+ TypeKind<TypeCategory::Real, 10>, TypeKind<TypeCategory::Real, 16>>;
+
template <int KIND> struct TypeKind<common::TypeCategory::Complex, KIND> {
+ static constexpr common::TypeCategory category{common::TypeCategory::Complex};
static constexpr int kind{KIND};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Complex>;
using Scalar = value::ComplexValue;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
+ using Part = TypeKind<common::TypeCategory::Real, KIND>;
+};
+
+using ComplexKindTypes = std::tuple<TypeKind<TypeCategory::Complex, 2>,
+ TypeKind<TypeCategory::Complex, 3>, TypeKind<TypeCategory::Complex, 4>,
+ TypeKind<TypeCategory::Complex, 8>, TypeKind<TypeCategory::Complex, 10>,
+ TypeKind<TypeCategory::Complex, 16>>;
+
+template <> struct TypeKind<common::TypeCategory::Character, 1> {
+ static constexpr common::TypeCategory category{
+ common::TypeCategory::Character};
+ static constexpr int kind{1};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
+ using CharT = char;
+ using StringT = std::basic_string<CharT>;
+ using HostT = void;
+ using Scalar = value::CharacterValue;
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Character>;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
};
+template <> struct TypeKind<common::TypeCategory::Character, 2> {
+ static constexpr common::TypeCategory category{
+ common::TypeCategory::Character};
+ static constexpr int kind{2};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
+ using CharT = char16_t;
+ using StringT = std::basic_string<CharT>;
+ using HostT = void;
+ using Scalar = value::CharacterValue;
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Character>;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
+};
+
+template <> struct TypeKind<common::TypeCategory::Character, 4> {
+ static constexpr common::TypeCategory category{
+ common::TypeCategory::Character};
+ static constexpr int kind{4};
+ static constexpr int bytesStored{value::IntegerValue::bytesStored(kind)};
+ using CharT = char32_t;
+ using StringT = std::basic_string<CharT>;
+ using HostT = void;
+ using Scalar = value::CharacterValue;
+ using FortranType = Fortran::evaluate::Type<common::TypeCategory::Character>;
+ static constexpr DynamicType GetType() { return DynamicType{category, kind}; }
+};
+
+using CharacterKindTypes = std::tuple<TypeKind<TypeCategory::Character, 1>,
+ TypeKind<TypeCategory::Character, 2>, TypeKind<TypeCategory::Character, 4>>;
+
+using AllIntrinsicKindTypes =
+ common::CombineTuples<IntegerKindTypes, UnsignedKindTypes, LogicalKindTypes,
+ RealKindTypes, ComplexKindTypes, CharacterKindTypes>;
+
} // namespace Fortran::evaluate
#endif // FORTRAN_EVALUATE_TYPEKINDTRAITS_H_
diff --git a/flang/lib/Evaluate/host.h b/flang/lib/Evaluate/host.h
index 02706bf66ad567..6d3f61a5536b29 100644
--- a/flang/lib/Evaluate/host.h
+++ b/flang/lib/Evaluate/host.h
@@ -22,6 +22,7 @@
#include "flang/Common/float128.h"
#endif
#include "flang/Evaluate/type.h"
+#include "flang/Evaluate/typekind-traits.h"
#include <cfenv>
#include <complex>
#include <cstdint>
@@ -55,34 +56,6 @@ class HostFloatingPointEnvironment {
// Type mapping from F18 types to host types
struct UnsupportedType {}; // There is no host type for the F18 type
-/// Because HostType<T> depends on the type's kind as well, KIND must be part of
-/// the template as well where Type<CAT> does not.
-template <common::TypeCategory CAT, int KIND> struct TypeKind {
- using FortranType = Fortran::evaluate::Type<CAT>;
- using Scalar = Fortran::evaluate::Scalar<FortranType>;
- static constexpr common::TypeCategory category{CAT};
- static constexpr int kind{KIND};
-
- static constexpr DynamicType GetType() { return DynamicType{CAT, KIND}; }
-
- // Meaningful for COMPLEX only: the real component's (category, kind) tag.
- using Part = TypeKind<common::TypeCategory::Real, KIND>;
-};
-
-using AllHostKindTypes = std::tuple<TypeKind<TypeCategory::Integer, 1>,
- TypeKind<TypeCategory::Integer, 2>, TypeKind<TypeCategory::Integer, 4>,
- TypeKind<TypeCategory::Integer, 8>, TypeKind<TypeCategory::Integer, 16>,
- TypeKind<TypeCategory::Real, 2>, TypeKind<TypeCategory::Real, 3>,
- TypeKind<TypeCategory::Real, 4>, TypeKind<TypeCategory::Real, 8>,
- TypeKind<TypeCategory::Real, 10>, TypeKind<TypeCategory::Real, 16>,
- TypeKind<TypeCategory::Complex, 2>, TypeKind<TypeCategory::Complex, 3>,
- TypeKind<TypeCategory::Complex, 4>, TypeKind<TypeCategory::Complex, 8>,
- TypeKind<TypeCategory::Complex, 10>, TypeKind<TypeCategory::Complex, 16>,
- TypeKind<TypeCategory::Logical, 1>, TypeKind<TypeCategory::Logical, 2>,
- TypeKind<TypeCategory::Logical, 4>, TypeKind<TypeCategory::Logical, 8>,
- TypeKind<TypeCategory::Character, 1>, TypeKind<TypeCategory::Character, 2>,
- TypeKind<TypeCategory::Character, 4>>;
-
template <typename FTN_T> struct HostTypeHelper {
using Type = UnsupportedType;
};
@@ -235,13 +208,13 @@ struct IndexInTupleHelper<T, std::tuple<TT...>> {
struct UnknownType {}; // the host type does not match any F18 types
template <typename HOST_T> struct FortranTypeHelper {
using HostTypeMapping =
- common::MapTemplate<HostType, AllHostKindTypes, std::tuple>;
+ common::MapTemplate<HostType, AllIntrinsicKindTypes, std::tuple>;
static constexpr int index{
IndexInTupleHelper<HOST_T, HostTypeMapping>::value};
// Both conditional types are "instantiated", so a valid type must be
// created for invalid index even if not used.
using Type = std::conditional_t<index >= 0,
- std::tuple_element_t<(index >= 0) ? index : 0, AllHostKindTypes>,
+ std::tuple_element_t<(index >= 0) ? index : 0, AllIntrinsicKindTypes>,
UnknownType>;
};
diff --git a/flang/unittests/Evaluate/folding.cpp b/flang/unittests/Evaluate/folding.cpp
index 31b33c51af57ba..7837e32df69944 100644
--- a/flang/unittests/Evaluate/folding.cpp
+++ b/flang/unittests/Evaluate/folding.cpp
@@ -46,7 +46,7 @@ Scalar<T> CallHostRt(
}
void TestHostRuntimeSubnormalFlushing() {
- using R4 = host::TypeKind<TypeCategory::Real, 4>;
+ using R4 = TypeKind<TypeCategory::Real, 4>;
using FR4 = R4::FortranType;
if constexpr (std::is_same_v<host::HostType<R4>, float>) {
Fortran::parser::CharBlock src;
>From 51a0034eb7a2ce27a67594af02c5214f6b6b8b1c Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Mon, 24 Aug 2026 01:25:40 +0200
Subject: [PATCH 03/13] Backport typekind-traits changes Use kind instead of
bits in conversion functions
Address review comment
cleanup
Backport typekind-traits changes
Use kind instead of bits in conversion functions
Post-merge fixes
cleanup
Improve code reuse
Avoid UnwrapExpr duplication
Post-merge fixes
cleanup
clang-format
Post-merge fixes
---
flang/include/flang/Evaluate/expression.h | 2 +-
flang/include/flang/Evaluate/tools.h | 67 ++++----------------
flang/include/flang/Semantics/type.h | 1 +
flang/lib/Evaluate/fold-implementation.h | 25 +++-----
flang/lib/Evaluate/fold-logical.cpp | 12 ++--
flang/lib/Evaluate/tools.cpp | 51 ++++++++-------
flang/lib/Lower/OpenMP/Atomic.cpp | 1 -
flang/lib/Semantics/check-call.cpp | 2 +-
flang/lib/Semantics/resolve-names-utils.cpp | 2 +-
flang/lib/Semantics/runtime-type-info.cpp | 2 +-
flang/lib/Semantics/tools.cpp | 4 +-
flang/lib/Semantics/type.cpp | 6 +-
flang/unittests/Evaluate/designator-path.cpp | 2 +-
13 files changed, 61 insertions(+), 116 deletions(-)
diff --git a/flang/include/flang/Evaluate/expression.h b/flang/include/flang/Evaluate/expression.h
index be7fa337382571..e0ba1527544140 100644
--- a/flang/include/flang/Evaluate/expression.h
+++ b/flang/include/flang/Evaluate/expression.h
@@ -924,7 +924,7 @@ class Expr<SomeKind<CAT>> : public ExpressionBase<SomeKind<CAT>> {
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
int kind() const {
- return common::visit([](auto v) -> int { return v.kind(); }, u);
+ return common::visit([](const auto &v) -> int { return v.kind(); }, u);
}
common::MapTemplate<evaluate::Expr, CategoryTypes<CAT>> u;
diff --git a/flang/include/flang/Evaluate/tools.h b/flang/include/flang/Evaluate/tools.h
index a95668cb1e590a..13219e21993677 100644
--- a/flang/include/flang/Evaluate/tools.h
+++ b/flang/include/flang/Evaluate/tools.h
@@ -195,27 +195,6 @@ auto UnwrapExpr(B &x) -> common::Constify<A, B> * {
}
return nullptr;
}
-template <typename A, typename B>
-auto UnwrapExpr(int kind, B &x) -> common::Constify<A, B> * {
- using Ty = std::decay_t<B>;
- if (x.kind() != kind)
- return nullptr;
- if constexpr (std::is_same_v<A, Ty>) {
- return &x;
- } else if constexpr (std::is_same_v<Ty, ActualArgument>) {
- if (auto *expr{x.UnwrapExpr()}) {
- return UnwrapExpr<A>(*expr);
- }
- } else if constexpr (std::is_same_v<Ty, Expr<SomeType>>) {
- return common::visit([](auto &x) { return UnwrapExpr<A>(x); }, x.u);
- } else if constexpr (!common::HasMember<A, TypelessExpression>) {
- if constexpr (std::is_same_v<Ty, Expr<ResultType<A>>> ||
- std::is_same_v<Ty, Expr<SomeKind<ResultType<A>::category>>>) {
- return common::visit([](auto &x) { return UnwrapExpr<A>(x); }, x.u);
- }
- }
- return nullptr;
-}
template <typename A, typename B>
const A *UnwrapExpr(const std::optional<B> &x) {
@@ -225,14 +204,6 @@ const A *UnwrapExpr(const std::optional<B> &x) {
return nullptr;
}
}
-template <typename A, typename B>
-const A *UnwrapExpr(int kind, const std::optional<B> &x) {
- if (x) {
- return UnwrapExpr<A>(kind, *x);
- } else {
- return nullptr;
- }
-}
template <typename A, typename B> A *UnwrapExpr(std::optional<B> &x) {
if (x) {
@@ -241,13 +212,6 @@ template <typename A, typename B> A *UnwrapExpr(std::optional<B> &x) {
return nullptr;
}
}
-template <typename A, typename B> A *UnwrapExpr(int kind, std::optional<B> &x) {
- if (x) {
- return UnwrapExpr<A>(kind, *x);
- } else {
- return nullptr;
- }
-}
template <typename A, typename B> const A *UnwrapExpr(const B *x) {
if (x) {
@@ -257,14 +221,6 @@ template <typename A, typename B> const A *UnwrapExpr(const B *x) {
}
}
-template <typename A, typename B> const A *UnwrapExpr(int kind, const B *x) {
- if (x) {
- return UnwrapExpr<A>(kind, *x);
- } else {
- return nullptr;
- }
-}
-
template <typename A, typename B> A *UnwrapExpr(B *x) {
if (x) {
return UnwrapExpr<A>(*x);
@@ -273,12 +229,14 @@ template <typename A, typename B> A *UnwrapExpr(B *x) {
}
}
-template <typename A, typename B> A *UnwrapExpr(int kind, B *x) {
- if (x) {
- return UnwrapExpr<A>(kind, *x);
- } else {
- return nullptr;
+/// A variant of UnwrapExpr that also requires a specific kind of the
+/// expression.
+template <typename A, typename B> const A *UnwrapExpr(int kind, const B &x) {
+ const A *result{UnwrapExpr<A>(x)};
+ if (result && result->kind() == kind) {
+ return result;
}
+ return nullptr;
}
// A variant of UnwrapExpr above that also skips through (parentheses)
@@ -637,16 +595,13 @@ Expr<TO> ConvertToType(int toKind, BOZLiteralConstant &&x) {
static_assert(IsSpecificIntrinsicType<TO>);
if constexpr (TO::category == TypeCategory::Integer ||
TO::category == TypeCategory::Unsigned) {
- return MakeConstantExpr<TO>(toKind,
- Scalar<TO>::ConvertUnsigned(std::move(x), Scalar<TO>::bits(toKind))
- .value);
+ return MakeConstantExpr<TO>(
+ toKind, Scalar<TO>::ConvertUnsigned(toKind, std::move(x)).value);
} else {
static_assert(TO::category == TypeCategory::Real);
using Word = value::IntegerValue;
return MakeConstantExpr<TO>(toKind,
- Scalar<TO>{toKind,
- Word::ConvertUnsigned(std::move(x), Scalar<TO>::bits(toKind))
- .value});
+ Scalar<TO>{toKind, Word::ConvertUnsigned(toKind, std::move(x)).value});
}
}
@@ -957,7 +912,7 @@ common::IfNoLvalue<std::optional<Expr<SomeType>>, WRAPPED> TypedWrapper(
dyType.kind(), std::move(x));
case TypeCategory::Derived:
return AsGenericExpr(
- Expr<SomeDerived>{WRAPPER<SomeDerived>{0, std::move(x)}});
+ Expr<SomeDerived>{WRAPPER<SomeDerived>{/*kind=*/0, std::move(x)}});
}
}
diff --git a/flang/include/flang/Semantics/type.h b/flang/include/flang/Semantics/type.h
index 2f216e3bc0cd6e..25a513a1a7510a 100644
--- a/flang/include/flang/Semantics/type.h
+++ b/flang/include/flang/Semantics/type.h
@@ -52,6 +52,7 @@ using MaybeIntExpr = std::optional<SomeIntExpr>;
using SubscriptIntExpr = evaluate::Expr<evaluate::SubscriptInteger>;
using MaybeSubscriptIntExpr = std::optional<SubscriptIntExpr>;
using KindExpr = SubscriptIntExpr;
+using evaluate::MakeSubscriptIntExpr;
KindExpr MakeKindExpr(int v);
diff --git a/flang/lib/Evaluate/fold-implementation.h b/flang/lib/Evaluate/fold-implementation.h
index 24e68fb3e74cd0..a1217c082c7ae4 100644
--- a/flang/lib/Evaluate/fold-implementation.h
+++ b/flang/lib/Evaluate/fold-implementation.h
@@ -31,7 +31,6 @@
#include "flang/Semantics/symbol.h"
#include "flang/Semantics/tools.h"
#include <algorithm>
-#include <array>
#include <cmath>
#include <cstdio>
#include <optional>
@@ -58,7 +57,7 @@ template <typename T> class Folder {
template <typename U = T,
typename = std::enable_if_t<std::is_same_v<U, SomeDerived>>>
explicit Folder(FoldingContext &c, bool forOptionalArgument = false)
- : Folder(0, c, forOptionalArgument) {}
+ : Folder(/*kind=*/0, c, forOptionalArgument) {}
std::optional<Constant<T>> GetNamedConstant(const Symbol &);
std::optional<Constant<T>> ApplySubscripts(const Constant<T> &array,
@@ -1919,8 +1918,7 @@ Expr<TO> FoldOperation(
const int fromKind{value->kind()};
if constexpr (TO::category == TypeCategory::Integer) {
if constexpr (FromCat == TypeCategory::Integer) {
- auto converted{
- Scalar<TO>::ConvertSigned(*value, Scalar<TO>::bits(toKind))};
+ auto converted{Scalar<TO>::ConvertSigned(toKind, *value)};
if (converted.overflow) {
ctx.Warn(common::UsageWarning::FoldingException,
"conversion of %s_%d to INTEGER(%d) overflowed; result is %s"_warn_en_US,
@@ -1929,8 +1927,7 @@ Expr<TO> FoldOperation(
}
return MakeConstantExpr<TO>(toKind, std::move(converted.value));
} else if constexpr (FromCat == TypeCategory::Unsigned) {
- auto converted{Scalar<TO>::ConvertUnsigned(
- *value, Scalar<TO>::bits(toKind))};
+ auto converted{Scalar<TO>::ConvertUnsigned(toKind, *value)};
if ((converted.overflow || converted.value.IsNegative())) {
ctx.Warn(common::UsageWarning::FoldingException,
"conversion of %s_U%d to INTEGER(%d) overflowed; result is %s"_warn_en_US,
@@ -1955,9 +1952,8 @@ Expr<TO> FoldOperation(
} else if constexpr (TO::category == TypeCategory::Unsigned) {
if constexpr (FromCat == TypeCategory::Integer ||
FromCat == TypeCategory::Unsigned) {
- return MakeConstantExpr<TO>(toKind,
- Scalar<TO>::ConvertUnsigned(*value, Scalar<TO>::bits(toKind))
- .value);
+ return MakeConstantExpr<TO>(
+ toKind, Scalar<TO>::ConvertUnsigned(toKind, *value).value);
} else if constexpr (FromCat == TypeCategory::Real) {
return MakeConstantExpr<TO>(toKind,
value
@@ -2434,9 +2430,8 @@ Expr<T> FoldOperation(FoldingContext &context, Extremum<T> &&x) {
auto maxLen{std::max(folded->first.length(), folded->second.length())};
bool isFirst{x.ordering == Compare(folded->first, folded->second)};
auto res{isFirst ? std::move(folded->first) : std::move(folded->second)};
- if (res.length() != maxLen) {
- res = CharacterUtils::Resize(res, maxLen);
- }
+ res = res.length() == maxLen ? std::move(res)
+ : CharacterUtils::Resize(res, maxLen);
return Expr<T>{Constant<T>{kind, std::move(res)}};
}
return Expr<T>{Constant<T>{kind, folded->second}};
@@ -2452,14 +2447,14 @@ inline Expr<Type<TypeCategory::Real>> ToReal(
[&](auto &&x) {
using From = std::decay_t<decltype(x)>;
if constexpr (std::is_same_v<From, BOZLiteralConstant>) {
+ constexpr int fromKind{BOZLiteralConstantKind};
// Move the bits without any integer->real conversion
- BOZLiteralConstant original{x};
+ From original{x};
result = ConvertToType<Result>(kind, std::move(x));
const auto *constant{UnwrapExpr<Constant<Result>>(*result)};
CHECK(constant);
Scalar<Result> real{constant->GetScalarValue().value()};
- BOZLiteralConstant converted{
- BOZLiteralConstant::ConvertUnsigned(real.RawBits(), 128).value};
+ From converted{From::ConvertUnsigned(fromKind, real.RawBits()).value};
if (original != converted) { // C1601
context.Warn(common::UsageWarning::FoldingValueChecks,
"Nonzero bits truncated from BOZ literal constant in REAL intrinsic"_warn_en_US);
diff --git a/flang/lib/Evaluate/fold-logical.cpp b/flang/lib/Evaluate/fold-logical.cpp
index f8fe642f385366..2cc8b92cdfedb0 100644
--- a/flang/lib/Evaluate/fold-logical.cpp
+++ b/flang/lib/Evaluate/fold-logical.cpp
@@ -18,9 +18,8 @@ template <typename T>
static std::optional<Expr<SomeType>> ZeroExtend(const Constant<T> &c) {
std::vector<Scalar<LargestInt>> exts;
for (const auto &v : c.values()) {
- exts.push_back(Scalar<LargestInt>::ConvertUnsigned(
- v, Scalar<LargestInt>::bits(LargestIntKind))
- .value);
+ exts.push_back(
+ Scalar<LargestInt>::ConvertUnsigned(LargestIntKind, v).value);
}
return AsGenericExpr(Constant<LargestInt>{
LargestIntKind, std::move(exts), ConstantSubscripts{c.shape()}});
@@ -110,7 +109,7 @@ class RealToIntLimitHelper {
constResult = AsCategoryExpr(Constant<T>{kind, std::move(diff.value)});
}
if (promote) {
- int nextKind{kind < 4 ? 4 : kind == 4 ? 8 : 16};
+ const int nextKind{kind < 4 ? 4 : kind == 4 ? 8 : 16};
using T2 = Type<TypeCategory::Real>;
hi_ = Expr<SomeReal>{
Fold(context_, ConvertToType<T2>(nextKind, std::move(hi_)))};
@@ -214,8 +213,7 @@ static std::optional<Expr<SomeInteger>> IntToIntBoundHelper(
using MoldIType = Type<TypeCategory::Integer>;
using MoldIntegerType = Scalar<MoldIType>;
return AsCategoryExpr(Constant<XIType>{xIKind,
- IntegerType::ConvertSigned(
- MoldIntegerType::HUGE(moldIKind), Scalar<XIType>::bits(xIKind))
+ IntegerType::ConvertSigned(xIKind, MoldIntegerType::HUGE(moldIKind))
.value});
}
}
@@ -666,8 +664,6 @@ Expr<Type<TypeCategory::Logical>> FoldIntrinsicFunction(FoldingContext &context,
} else if (name == "is_iostat_end") {
if (args[0] && args[0]->UnwrapExpr() &&
IsActuallyConstant(*args[0]->UnwrapExpr())) {
- // Int64 used to be Type<Integer,8>; force the argument to that kind as
- // before.
using Int64 = Type<TypeCategory::Integer>;
constexpr int Int64Kind{8};
return FoldElementalIntrinsic<T, Int64>(kind, {Int64Kind}, context,
diff --git a/flang/lib/Evaluate/tools.cpp b/flang/lib/Evaluate/tools.cpp
index 3ee7e742acf0b6..a7200e39d1252a 100644
--- a/flang/lib/Evaluate/tools.cpp
+++ b/flang/lib/Evaluate/tools.cpp
@@ -525,8 +525,6 @@ std::optional<Expr<SomeType>> NumericOperation(
},
// Operations with one typeless operand
[&](BOZLiteralConstant &&bx, Expr<SomeInteger> &&iy) {
- // iy aliases y, so sequence the conversion before std::move(y)
- // (argument order is unspecified)
auto converted{ConvertTo(iy, std::move(bx))};
return NumericOperation<OPR>(messages,
AsGenericExpr(std::move(converted)), std::move(y),
@@ -1375,9 +1373,9 @@ struct HasConversionHelper : public AnyTraverse<HasConversionHelper> {
}
};
-template <common::TypeCategory CAT, int KIND>
-static void flattenTopLevelAddSubtract(const NumericExpr<CAT, KIND> &expr,
- llvm::SmallVectorImpl<SignedNumericTerm<CAT, KIND>> &terms,
+template <common::TypeCategory CAT>
+static void flattenTopLevelAddSubtract(const NumericExpr<CAT> &expr,
+ llvm::SmallVectorImpl<SignedNumericTerm<CAT>> &terms,
bool isPositive = true) {
// Only flatten Add and Subtract nodes. Every other node, including
// Parentheses, is one opaque signed term whose tree is preserved.
@@ -1443,11 +1441,11 @@ static std::optional<Expr<SomeType>> tryBuildSplitSumExpressionTree(const T &) {
return std::nullopt;
}
-template <common::TypeCategory CAT, int KIND>
-static std::optional<NumericExpr<CAT, KIND>> tryBuildSplitSumExpressionTree(
- const NumericExpr<CAT, KIND> &expr) {
- if (const auto *convert =
- std::get_if<Convert<Numeric<CAT, KIND>, CAT>>(&expr.u)) {
+template <common::TypeCategory CAT>
+static std::optional<NumericExpr<CAT>> tryBuildSplitSumExpressionTree(
+ const NumericExpr<CAT> &expr) {
+ const int kind{expr.kind()};
+ if (const auto *convert = std::get_if<Convert<Numeric<CAT>, CAT>>(&expr.u)) {
std::optional<Expr<SomeKind<CAT>>> rewritten = common::visit(
[&](const auto &typedExpr) -> std::optional<Expr<SomeKind<CAT>>> {
if (auto result = tryBuildSplitSumExpressionTree(typedExpr))
@@ -1457,8 +1455,8 @@ static std::optional<NumericExpr<CAT, KIND>> tryBuildSplitSumExpressionTree(
convert->left().u);
if (!rewritten)
return std::nullopt;
- return NumericExpr<CAT, KIND>{
- Convert<Numeric<CAT, KIND>, CAT>{std::move(*rewritten)}};
+ return NumericExpr<CAT>{
+ Convert<Numeric<CAT>, CAT>{kind, std::move(*rewritten)}};
}
// Only a conversion around the complete expression is supported. Keep
@@ -1467,8 +1465,8 @@ static std::optional<NumericExpr<CAT, KIND>> tryBuildSplitSumExpressionTree(
if (HasConversionHelper{}(expr))
return std::nullopt;
- if (!std::get_if<Add<Numeric<CAT, KIND>>>(&expr.u) &&
- !std::get_if<Subtract<Numeric<CAT, KIND>>>(&expr.u))
+ if (!std::get_if<Add<Numeric<CAT>>>(&expr.u) &&
+ !std::get_if<Subtract<Numeric<CAT>>>(&expr.u))
return std::nullopt;
llvm::SmallVector<SignedNumericTerm<CAT>, 8> terms;
@@ -1531,9 +1529,9 @@ class SplitSumExpressionTreeRewriter {
return std::nullopt;
}
- template <common::TypeCategory CAT, int KIND>
- static std::optional<NumericExpr<CAT, KIND>> tryRewriteCurrent(
- const NumericExpr<CAT, KIND> &expr) {
+ template <common::TypeCategory CAT>
+ static std::optional<NumericExpr<CAT>> tryRewriteCurrent(
+ const NumericExpr<CAT> &expr) {
if constexpr (CAT == common::TypeCategory::Real ||
CAT == common::TypeCategory::Complex)
return tryBuildSplitSumExpressionTree(expr);
@@ -1542,7 +1540,8 @@ class SplitSumExpressionTreeRewriter {
template <typename D, std::size_t... Is>
D rewriteOperation(D &&op, std::index_sequence<Is...>) {
- return D{rewriteExpr(std::move(op.template operand<Is>()))...};
+ const int kind{op.kind()};
+ return D{kind, rewriteExpr(std::move(op.template operand<Is>()))...};
}
template <typename T, std::size_t... Is>
@@ -1551,17 +1550,17 @@ class SplitSumExpressionTreeRewriter {
op.ordering, rewriteExpr(std::move(op.template operand<Is>()))...};
}
- template <int KIND, std::size_t... Is>
- ComplexComponent<KIND> rewriteOperation(
- ComplexComponent<KIND> &&op, std::index_sequence<Is...>) {
- return ComplexComponent<KIND>{op.isImaginaryPart,
+ template <std::size_t... Is>
+ ComplexComponent rewriteOperation(
+ ComplexComponent &&op, std::index_sequence<Is...>) {
+ return ComplexComponent{op.isImaginaryPart,
rewriteExpr(std::move(op.template operand<Is>()))...};
}
- template <int KIND, std::size_t... Is>
- LogicalOperation<KIND> rewriteOperation(
- LogicalOperation<KIND> &&op, std::index_sequence<Is...>) {
- return LogicalOperation<KIND>{op.logicalOperator,
+ template <std::size_t... Is>
+ LogicalOperation rewriteOperation(
+ LogicalOperation &&op, std::index_sequence<Is...>) {
+ return LogicalOperation{op.logicalOperator,
rewriteExpr(std::move(op.template operand<Is>()))...};
}
diff --git a/flang/lib/Lower/OpenMP/Atomic.cpp b/flang/lib/Lower/OpenMP/Atomic.cpp
index c2ac17c21c34d0..0d876e66abdcd6 100644
--- a/flang/lib/Lower/OpenMP/Atomic.cpp
+++ b/flang/lib/Lower/OpenMP/Atomic.cpp
@@ -678,7 +678,6 @@ void Fortran::lower::omp::lowerAtomic(
*cond)) {
common::visit(
[&](const auto &kindLogical) {
- using LogicalExpr = std::decay_t<decltype(kindLogical)>;
if (const auto *logOp =
std::get_if<evaluate::LogicalOperation>(&kindLogical.u)) {
if (logOp->logicalOperator == common::LogicalOperator::Eqv ||
diff --git a/flang/lib/Semantics/check-call.cpp b/flang/lib/Semantics/check-call.cpp
index 7f9095159183a4..9410175ca7f39a 100644
--- a/flang/lib/Semantics/check-call.cpp
+++ b/flang/lib/Semantics/check-call.cpp
@@ -271,7 +271,7 @@ static void CheckCharacterActual(evaluate::Expr<evaluate::SomeType> &actual,
ConvertToType(dummy.type.type(), std::move(actual))};
CHECK(converted);
actual = std::move(*converted);
- actualType.set_LEN(evaluate::MakeSubscriptIntExpr(*dummyLength));
+ actualType.set_LEN(MakeSubscriptIntExpr(*dummyLength));
}
}
}
diff --git a/flang/lib/Semantics/resolve-names-utils.cpp b/flang/lib/Semantics/resolve-names-utils.cpp
index deb11bdeb96fb3..065907685102a8 100644
--- a/flang/lib/Semantics/resolve-names-utils.cpp
+++ b/flang/lib/Semantics/resolve-names-utils.cpp
@@ -599,7 +599,7 @@ void ArraySpecAnalyzer::Analyze(const parser::ExplicitShapeBoundsSpec &x) {
}
}
Bound lb{lbExpr ? std::move(lbExpr)
- : MaybeSubscriptIntExpr{evaluate::MakeSubscriptIntExpr(1)}};
+ : MaybeSubscriptIntExpr{MakeSubscriptIntExpr(1)}};
Bound ub{std::move(ubExpr)};
arraySpec_.push_back(ShapeSpec::MakeExplicit(std::move(lb), std::move(ub)));
}
diff --git a/flang/lib/Semantics/runtime-type-info.cpp b/flang/lib/Semantics/runtime-type-info.cpp
index ef56ce90ff0a7d..903798515f8ff5 100644
--- a/flang/lib/Semantics/runtime-type-info.cpp
+++ b/flang/lib/Semantics/runtime-type-info.cpp
@@ -803,7 +803,7 @@ evaluate::StructureConstructor RuntimeTableBuilder::DescribeComponent(
if (const auto *clamped{evaluate::UnwrapExpr<
evaluate::Extremum<evaluate::SubscriptInteger>>(*len)}) {
if (clamped->ordering == evaluate::Ordering::Greater &&
- clamped->left() == evaluate::MakeSubscriptIntExpr(0)) {
+ clamped->left() == MakeSubscriptIntExpr(0)) {
len = common::Clone(clamped->right());
}
}
diff --git a/flang/lib/Semantics/tools.cpp b/flang/lib/Semantics/tools.cpp
index 3a2bfab2926803..b08f0948f9d6ba 100644
--- a/flang/lib/Semantics/tools.cpp
+++ b/flang/lib/Semantics/tools.cpp
@@ -46,10 +46,10 @@ AnalyzeSubscriptExpr(SemanticsContext &context, const A &expr) {
evaluate::UnwrapExpr<evaluate::Expr<evaluate::SomeInteger>>(
maybe)}) {
if (auto value{evaluate::ToInt64(*intExpr)}) {
- return evaluate::Expr<evaluate::SubscriptInteger>{*value};
+ return MakeSubscriptIntExpr(*value);
}
return evaluate::ConvertToType<evaluate::SubscriptInteger>(
- std::move(*intExpr));
+ evaluate::SubscriptIntegerKind, std::move(*intExpr));
}
}
return std::nullopt;
diff --git a/flang/lib/Semantics/type.cpp b/flang/lib/Semantics/type.cpp
index d8bafc2d26aa6a..31c6f4660af3e7 100644
--- a/flang/lib/Semantics/type.cpp
+++ b/flang/lib/Semantics/type.cpp
@@ -23,7 +23,7 @@
namespace Fortran::semantics {
-KindExpr MakeKindExpr(int v) { return evaluate::MakeSubscriptIntExpr(v); }
+KindExpr MakeKindExpr(int v) { return MakeSubscriptIntExpr(v); }
DerivedTypeSpec::DerivedTypeSpec(SourceName name, const Symbol &typeSymbol)
: name_{name}, originalTypeSymbol_{typeSymbol},
@@ -834,7 +834,7 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &o, const DerivedTypeSpec &x) {
}
Bound::Bound(common::ConstantSubscript bound)
- : expr_{evaluate::MakeSubscriptIntExpr(bound)} {}
+ : expr_{MakeSubscriptIntExpr(bound)} {}
llvm::raw_ostream &operator<<(llvm::raw_ostream &o, const Bound &x) {
if (x.isStar()) {
@@ -884,7 +884,7 @@ ParamValue::ParamValue(SomeIntExpr &&expr, common::TypeParamAttr attr)
: attr_{attr}, expr_{std::move(expr)} {}
ParamValue::ParamValue(
common::ConstantSubscript value, common::TypeParamAttr attr)
- : ParamValue(SomeIntExpr{evaluate::MakeSubscriptIntExpr(value)}, attr) {}
+ : ParamValue(SomeIntExpr{MakeSubscriptIntExpr(value)}, attr) {}
void ParamValue::SetExplicit(SomeIntExpr &&x) {
category_ = Category::Explicit;
diff --git a/flang/unittests/Evaluate/designator-path.cpp b/flang/unittests/Evaluate/designator-path.cpp
index 60ab4fbe0a0477..6df24b04ce0a58 100644
--- a/flang/unittests/Evaluate/designator-path.cpp
+++ b/flang/unittests/Evaluate/designator-path.cpp
@@ -25,7 +25,7 @@ namespace parser = Fortran::parser;
namespace semantics = Fortran::semantics;
using IntExpr = Expr<SubscriptInteger>;
-IntExpr Int(int n) { return IntExpr{n}; }
+IntExpr Int(int n) { return MakeSubscriptIntExpr(n); }
Subscript Scalar(int n) { return Subscript{Int(n)}; }
>From ac888e71abe5ebd4977de0114abe3b2255707273 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Tue, 25 Aug 2026 14:50:18 +0200
Subject: [PATCH 04/13] cleanup
llvm_unreachable -> DIE
Cleanup
Cleanup
More cleanup
clang-format
clang-format
---
flang/include/flang/Common/type-kinds.h | 28 +++++++--
flang/include/flang/Evaluate/call.h | 4 +-
flang/include/flang/Evaluate/expression.h | 4 +-
flang/include/flang/Evaluate/tools.h | 30 ++++++++-
flang/include/flang/Evaluate/type.h | 26 +-------
flang/include/flang/Evaluate/variable.h | 1 +
flang/lib/Evaluate/character.h | 2 +-
flang/lib/Evaluate/characteristics.cpp | 1 -
flang/lib/Evaluate/fold-implementation.h | 62 +++++++------------
flang/lib/Evaluate/fold-integer.cpp | 31 ++++++----
flang/lib/Evaluate/fold-logical.cpp | 8 +--
flang/lib/Evaluate/intrinsics-library.cpp | 2 +-
flang/lib/Evaluate/real-value-impl.cpp | 4 --
flang/lib/Evaluate/tools.cpp | 4 +-
flang/lib/Semantics/check-omp-atomic.cpp | 8 +--
flang/lib/Semantics/expression.cpp | 3 +-
flang/lib/Semantics/runtime-type-info.cpp | 2 +-
flang/unittests/Evaluate/CMakeLists.txt | 6 --
.../unittests/Evaluate/CharacterValueTest.cpp | 2 +-
flang/unittests/Evaluate/ComplexValueTest.cpp | 14 +++--
flang/unittests/Evaluate/IntegerValueTest.cpp | 2 +-
flang/unittests/Evaluate/LogicalValueTest.cpp | 9 ++-
flang/unittests/Evaluate/RealValueTest.cpp | 24 +++----
flang/unittests/Evaluate/folding.cpp | 3 +-
flang/unittests/Evaluate/logical.cpp | 41 ------------
25 files changed, 146 insertions(+), 175 deletions(-)
delete mode 100644 flang/unittests/Evaluate/logical.cpp
diff --git a/flang/include/flang/Common/type-kinds.h b/flang/include/flang/Common/type-kinds.h
index 926cce6f259097..c2cee16ed527e0 100644
--- a/flang/include/flang/Common/type-kinds.h
+++ b/flang/include/flang/Common/type-kinds.h
@@ -22,11 +22,29 @@
namespace Fortran::common {
-static constexpr int IntegerKinds[] FORTRAN_INTEGER_KINDS;
-static constexpr int UnsignedKinds[] FORTRAN_UNSIGNED_KINDS;
-static constexpr int RealKinds[] FORTRAN_REAL_KINDS;
-static constexpr int LogicalKinds[] FORTRAN_LOGICAL_KINDS;
-static constexpr int CharacterKinds[] FORTRAN_CHARACTER_KINDS;
+/// Iterable lists of valid kinds for each TypeCategory.
+template <TypeCategory CAT> struct KindsByType;
+template <> struct KindsByType<TypeCategory::Integer> {
+ static inline constexpr int kinds[] FORTRAN_INTEGER_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Unsigned> {
+ static inline constexpr int kinds[] FORTRAN_UNSIGNED_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Real> {
+ static inline constexpr int kinds[] FORTRAN_REAL_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Complex> {
+ static inline constexpr int kinds[] FORTRAN_REAL_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Logical> {
+ static inline constexpr int kinds[] FORTRAN_LOGICAL_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Character> {
+ static inline constexpr int kinds[] FORTRAN_CHARACTER_KINDS;
+};
+template <> struct KindsByType<TypeCategory::Derived> {
+ static inline constexpr int kinds[]{0};
+};
static constexpr int maxKind{16};
diff --git a/flang/include/flang/Evaluate/call.h b/flang/include/flang/Evaluate/call.h
index 5001fbc85920e4..cbd7d29e38cf10 100644
--- a/flang/include/flang/Evaluate/call.h
+++ b/flang/include/flang/Evaluate/call.h
@@ -297,7 +297,7 @@ struct SpecificIntrinsic {
struct ProcedureDesignator {
static int kind() {
- llvm_unreachable("This class has no kind");
+ DIE("This class has no kind");
return 0;
}
@@ -339,7 +339,7 @@ using Chevrons = std::vector<Expr<SomeType>>;
class ProcedureRef {
public:
static int kind() {
- llvm_unreachable("This class has no kind");
+ DIE("This class has no kind");
return 0;
}
diff --git a/flang/include/flang/Evaluate/expression.h b/flang/include/flang/Evaluate/expression.h
index e0ba1527544140..ef4c2691137d44 100644
--- a/flang/include/flang/Evaluate/expression.h
+++ b/flang/include/flang/Evaluate/expression.h
@@ -923,9 +923,7 @@ class Expr<SomeKind<CAT>> : public ExpressionBase<SomeKind<CAT>> {
using Result = SomeKind<CAT>;
EVALUATE_UNION_CLASS_BOILERPLATE(Expr)
- int kind() const {
- return common::visit([](const auto &v) -> int { return v.kind(); }, u);
- }
+ using ExpressionBase<SomeKind<CAT>>::kind;
common::MapTemplate<evaluate::Expr, CategoryTypes<CAT>> u;
};
diff --git a/flang/include/flang/Evaluate/tools.h b/flang/include/flang/Evaluate/tools.h
index 13219e21993677..35758cb41a05aa 100644
--- a/flang/include/flang/Evaluate/tools.h
+++ b/flang/include/flang/Evaluate/tools.h
@@ -638,12 +638,40 @@ common::IfNoLvalue<Expr<SomeKind<TC>>, FROM> ConvertTo(
to.u);
}
+template <typename FROM>
+common::IfNoLvalue<Expr<SomeType>, FROM> ConvertTo(
+ const Expr<SomeType> &to, FROM &&from) {
+ return common::visit(
+ [&](const auto &toCatExpr) {
+ return AsGenericExpr(ConvertTo(toCatExpr, std::move(from)));
+ },
+ to.u);
+}
+
// Convert an expression of some known category to a dynamically chosen
// kind of some category (usually but not necessarily distinct).
+template <TypeCategory TOCAT, typename VALUE> struct ConvertToKindHelper {
+ using Result = std::optional<Expr<SomeKind<TOCAT>>>;
+ using Types = CategoryTypes<TOCAT>;
+ ConvertToKindHelper(int k, VALUE &&x) : kind{k}, value{std::move(x)} {}
+ template <typename T> Result Test(int k) {
+ if (kind == k) {
+ return std::make_optional(
+ AsCategoryExpr(ConvertToType<T>(k, std::move(value))));
+ }
+ return std::nullopt;
+ }
+ int kind;
+ VALUE value;
+};
+
template <TypeCategory TOCAT, typename VALUE>
common::IfNoLvalue<Expr<SomeKind<TOCAT>>, VALUE> ConvertToKind(
int kind, VALUE &&x) {
- return AsCategoryExpr(ConvertToType<Type<TOCAT>>(kind, std::move(x)));
+ auto result{
+ SearchTypes(ConvertToKindHelper<TOCAT, VALUE>{kind, std::move(x)})};
+ CHECK(result.has_value());
+ return *result;
}
// Given a type category CAT, SameKindExprs<CAT, N> is a variant that
diff --git a/flang/include/flang/Evaluate/type.h b/flang/include/flang/Evaluate/type.h
index 0974b87b016503..426b8482163e7a 100644
--- a/flang/include/flang/Evaluate/type.h
+++ b/flang/include/flang/Evaluate/type.h
@@ -568,30 +568,6 @@ bool AreSameDerivedTypeIgnoringSequence(
FOR_EACH_INTRINSIC_KIND(PREFIX, SUFFIX) \
FOR_EACH_CATEGORY_TYPE(PREFIX, SUFFIX)
-/// Iterable lists of valid kinds for each TypeCategory for use by SearchTypes.
-template <TypeCategory CAT> struct KindsByType;
-template <> struct KindsByType<TypeCategory::Integer> {
- static constexpr int kinds[] = FORTRAN_INTEGER_KINDS;
-};
-template <> struct KindsByType<TypeCategory::Unsigned> {
- static constexpr int kinds[] = FORTRAN_UNSIGNED_KINDS;
-};
-template <> struct KindsByType<TypeCategory::Real> {
- static constexpr int kinds[] = FORTRAN_REAL_KINDS;
-};
-template <> struct KindsByType<TypeCategory::Complex> {
- static constexpr int kinds[] = FORTRAN_REAL_KINDS;
-};
-template <> struct KindsByType<TypeCategory::Logical> {
- static constexpr int kinds[] = FORTRAN_LOGICAL_KINDS;
-};
-template <> struct KindsByType<TypeCategory::Character> {
- static constexpr int kinds[] = FORTRAN_CHARACTER_KINDS;
-};
-template <> struct KindsByType<TypeCategory::Derived> {
- static constexpr int kinds[] = {0};
-};
-
// Given a VISITOR class of the general form
// struct VISITOR {
// using Result = ...;
@@ -609,7 +585,7 @@ common::IfNoLvalue<typename VISITOR::Result, VISITOR> SearchTypesHelper(
using Tuple = typename VISITOR::Types;
if constexpr (J < std::tuple_size_v<Tuple>) {
using TYPE = std::tuple_element_t<J, Tuple>;
- for (int kind : evaluate::KindsByType<TYPE::category>::kinds) {
+ for (int kind : common::KindsByType<TYPE::category>::kinds) {
if (auto result{visitor.template Test<TYPE>(kind)}) {
return result;
}
diff --git a/flang/include/flang/Evaluate/variable.h b/flang/include/flang/Evaluate/variable.h
index d4b861006ec366..e1a9f61df65571 100644
--- a/flang/include/flang/Evaluate/variable.h
+++ b/flang/include/flang/Evaluate/variable.h
@@ -450,6 +450,7 @@ FOR_EACH_CHARACTER_KIND(extern template class Designator, )
class DescriptorInquiry {
public:
using Result = SubscriptInteger;
+ static constexpr int ResultKind{SubscriptIntegerKind};
static constexpr int kind() { return SubscriptIntegerKind; }
static constexpr DynamicType GetType() {
return DynamicType{TypeCategory::Integer, SubscriptIntegerKind};
diff --git a/flang/lib/Evaluate/character.h b/flang/lib/Evaluate/character.h
index c1a34257e5682a..5d4df5e9a5c775 100644
--- a/flang/lib/Evaluate/character.h
+++ b/flang/lib/Evaluate/character.h
@@ -44,7 +44,7 @@ class CharacterUtils {
case 4:
return static_cast<std::int64_t>(ch & 0xffffffffu);
}
- llvm_unreachable("unsupported character kind");
+ DIE("unsupported character kind");
}
static Character NEW_LINE(int kind) { return Character{kind, 1, NewLine()}; }
diff --git a/flang/lib/Evaluate/characteristics.cpp b/flang/lib/Evaluate/characteristics.cpp
index 4f1c6831e3aeb2..1f5e0bdf0b6112 100644
--- a/flang/lib/Evaluate/characteristics.cpp
+++ b/flang/lib/Evaluate/characteristics.cpp
@@ -9,7 +9,6 @@
#include "flang/Evaluate/characteristics.h"
#include "flang/Common/indirection.h"
#include "flang/Evaluate/check-expression.h"
-#include "flang/Evaluate/expression.h"
#include "flang/Evaluate/fold.h"
#include "flang/Evaluate/intrinsics.h"
#include "flang/Evaluate/tools.h"
diff --git a/flang/lib/Evaluate/fold-implementation.h b/flang/lib/Evaluate/fold-implementation.h
index a1217c082c7ae4..20537d946fa058 100644
--- a/flang/lib/Evaluate/fold-implementation.h
+++ b/flang/lib/Evaluate/fold-implementation.h
@@ -1411,12 +1411,7 @@ template <typename T> class ArrayConstructorFolder {
kind, *charLength_, std::move(elements_), ConstantSubscripts{n}}};
}
} else {
- // resultInfo_ is default-constructed (kind 0) and only ever has its
- // isFromInexactLiteralConversion flag set above; give it the actual
- // runtime kind here so that the Constant's result_ carries a valid
- // kind (kind_ is a public field of Type<CAT>, not a category with
- // its own constructor call, so this preserves that flag).
- assert(resultInfo_.kind() == kind);
+ CHECK(resultInfo_.kind() == kind);
return Expr<T>{Constant<T>{
kind, std::move(elements_), ConstantSubscripts{n}, resultInfo_}};
}
@@ -1907,6 +1902,7 @@ Expr<TO> FoldOperation(
return common::visit(
[&msvcWorkaround](auto &kindExpr) -> Expr<TO> {
using Operand = ResultType<decltype(kindExpr)>;
+ const int operandKind{kindExpr.kind()};
const int toKind{msvcWorkaround.toKind};
// This variable is a workaround for msvc which emits an error when
// using the FROMCAT template parameter below.
@@ -2007,18 +2003,12 @@ Expr<TO> FoldOperation(
}
} else if constexpr (TO::category == TypeCategory::Logical &&
FromCat == TypeCategory::Logical) {
- // The conversion's target kind is a runtime property; build the
- // result LOGICAL constant with that kind rather than letting it
- // default (the Expr<Logical>(bool) constructor would otherwise
- // produce LogicalResultKind=4 and silently drop the conversion).
- return Expr<TO>{Constant<TO>{
- toKind, value::LogicalValue{toKind, value->IsTrue()}}};
+ return MakeConstantExpr<TO>(toKind, value->IsTrue());
}
} else if constexpr (TO::category == FromCat &&
FromCat != TypeCategory::Character) {
// Conversion of non-constant in same type category
- auto fromTy{kindExpr.GetType()};
- if (fromTy && fromTy->kind() == toKind) {
+ if (Operand::category == TO::category && toKind == operandKind) {
return std::move(kindExpr); // remove needless conversion
} else if constexpr (TO::category == TypeCategory::Logical ||
TO::category == TypeCategory::Integer) {
@@ -2026,24 +2016,16 @@ Expr<TO> FoldOperation(
std::get_if<Convert<Operand, TO::category>>(&kindExpr.u)}) {
// Conversion of conversion of same category & kind
if (auto *x{std::get_if<Expr<TO>>(&innerConv->left().u)}) {
- // intermediateKind is the kind of the middle (Operand) result;
- // xKind is the kind of the innermost expression, which must
- // match the outer target for the round trip to be a no-op.
- auto intermediateTy{kindExpr.GetType()};
- auto xTy{x->GetType()};
- int intermediateKind{
- intermediateTy ? intermediateTy->kind() : 0};
- int xKind{xTy ? xTy->kind() : 0};
- if constexpr (TO::category == TypeCategory::Logical) {
- return std::move(*x); // no-op Logical conversion pair
- } else { // Integer
- if (xKind == toKind && toKind <= intermediateKind) {
- return std::move(*x); // widening/narrowing conversion pair
- } else if (toKind == SubscriptIntegerKind &&
- xKind == toKind) {
- // int(int(size(...),kind=k),kind=8) -> size(...)
+ if (TO::category == TypeCategory::Logical ||
+ toKind <= operandKind) {
+ return std::move(*x); // no-op Logical or Integer
+ // widening/narrowing conversion pair
+ } else if constexpr (std::is_same_v<TO,
+ DescriptorInquiry::Result>) {
+ if (toKind == DescriptorInquiry::kind()) {
if (std::holds_alternative<DescriptorInquiry>(x->u) ||
std::holds_alternative<TypeParamInquiry>(x->u)) {
+ // int(int(size(...),kind=k),kind=8) -> size(...)
return std::move(*x);
}
}
@@ -2277,19 +2259,19 @@ Expr<T> FoldOperation(FoldingContext &context, Divide<T> &&x) {
auto quotAndRem{folded->first.DivideSigned(folded->second)};
if (quotAndRem.divisionByZero) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) division by zero"_warn_en_US, folded->first.kind());
+ "INTEGER(%d) division by zero"_warn_en_US, kind);
return Expr<T>{std::move(x)};
}
if (quotAndRem.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) division overflowed"_warn_en_US, folded->first.kind());
+ "INTEGER(%d) division overflowed"_warn_en_US, kind);
}
return Expr<T>{Constant<T>{kind, quotAndRem.quotient}};
} else if constexpr (T::category == TypeCategory::Unsigned) {
auto quotAndRem{folded->first.DivideUnsigned(folded->second)};
if (quotAndRem.divisionByZero) {
context.Warn(common::UsageWarning::FoldingException,
- "UNSIGNED(%d) division by zero"_warn_en_US, folded->first.kind());
+ "UNSIGNED(%d) division by zero"_warn_en_US, kind);
return Expr<T>{std::move(x)};
}
return Expr<T>{Constant<T>{kind, quotAndRem.quotient}};
@@ -2304,9 +2286,10 @@ Expr<T> FoldOperation(FoldingContext &context, Divide<T> &&x) {
if (folded->second.IsZero() && context.moduleFileName().has_value()) {
using IntType = typename T::Scalar::Word;
auto intNumerator{folded->first.ToInteger()};
+ const int intKind{intNumerator.value.kind()};
isCanonicalNaNOrInf = intNumerator.flags == RealFlags{} &&
- intNumerator.value >= IntType{16, -1} &&
- intNumerator.value <= IntType{16, 1};
+ intNumerator.value >= IntType{intKind, -1} &&
+ intNumerator.value <= IntType{intKind, 1};
}
}
if (!isCanonicalNaNOrInf) {
@@ -2332,14 +2315,13 @@ Expr<T> FoldOperation(FoldingContext &context, Power<T> &&x) {
auto power{folded->first.Power(folded->second)};
if (power.divisionByZero) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) zero to negative power"_warn_en_US,
- folded->first.kind());
+ "INTEGER(%d) zero to negative power"_warn_en_US, kind);
} else if (power.overflow) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) power overflowed"_warn_en_US, folded->first.kind());
+ "INTEGER(%d) power overflowed"_warn_en_US, kind);
} else if (power.zeroToZero) {
context.Warn(common::UsageWarning::FoldingException,
- "INTEGER(%d) 0**0 is not defined"_warn_en_US, folded->first.kind());
+ "INTEGER(%d) 0**0 is not defined"_warn_en_US, kind);
}
return Expr<T>{Constant<T>{kind, power.power}};
} else {
@@ -2358,7 +2340,7 @@ Expr<T> FoldOperation(FoldingContext &context, Power<T> &&x) {
} else {
context.Warn(common::UsageWarning::FoldingFailure,
"Power for %s cannot be folded on host"_warn_en_US,
- DynamicType{T::category, folded->first.kind()}.AsFortran());
+ DynamicType{T::category, kind}.AsFortran());
}
}
}
diff --git a/flang/lib/Evaluate/fold-integer.cpp b/flang/lib/Evaluate/fold-integer.cpp
index 2545f4b4210b57..3a8384b816c529 100644
--- a/flang/lib/Evaluate/fold-integer.cpp
+++ b/flang/lib/Evaluate/fold-integer.cpp
@@ -10,7 +10,6 @@
#include "fold-matmul.h"
#include "fold-reduction.h"
#include "flang/Evaluate/check-expression.h"
-#include "flang/Evaluate/shape.h"
namespace Fortran::evaluate {
@@ -329,8 +328,10 @@ template <typename T> class CountAccumulator {
public:
constexpr int kind() const { return kind_; }
- CountAccumulator(int kind, const Constant<MaskT> &mask)
- : kind_{kind}, mask_{mask} {}
+ CountAccumulator(int kind, int maskKind, const Constant<MaskT> &mask)
+ : kind_{kind}, mask_{mask} {
+ CHECK(maskKind == mask.kind());
+ }
void operator()(
Scalar<T> &element, const ConstantSubscripts &at, bool /*first*/) {
CHECK(element.kind() == kind());
@@ -350,17 +351,18 @@ template <typename T> class CountAccumulator {
};
template <typename T>
-static Expr<T> FoldCount(FoldingContext &context, FunctionRef<T> &&ref) {
+static Expr<T> FoldCount(
+ int kind, int maskKind, FoldingContext &context, FunctionRef<T> &&ref) {
using KindLogical = Type<TypeCategory::Logical>;
static_assert(T::category == TypeCategory::Integer);
- const int kind{ref.kind()};
+ CHECK(kind == ref.kind());
std::optional<int> dim;
if (std::optional<ArrayAndMask<KindLogical>> arrayAndMask{
- ProcessReductionArgs<KindLogical>(LogicalResultKind, context,
- ref.arguments(), dim, /*ARRAY=*/0, /*DIM=*/1)}) {
- CountAccumulator<T> accumulator{kind, arrayAndMask->array};
+ ProcessReductionArgs<KindLogical>(maskKind, context, ref.arguments(),
+ dim, /*ARRAY=*/0, /*DIM=*/1)}) {
+ CountAccumulator<T> accumulator{kind, maskKind, arrayAndMask->array};
Constant<T> result{DoReduction<T>(kind, arrayAndMask->array,
- arrayAndMask->mask, dim, Scalar<T>{kind, 0}, accumulator)};
+ arrayAndMask->mask, dim, Scalar<T>::Zero(kind), accumulator)};
if (accumulator.overflow()) {
context.Warn(common::UsageWarning::FoldingException,
"Result of intrinsic function COUNT overflows its result type"_warn_en_US);
@@ -1050,7 +1052,8 @@ Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(FoldingContext &context,
cx->u);
}
} else if (name == "count") {
- return FoldCount<T>(context, std::move(funcRef));
+ int maskKind = args[0]->GetType()->kind();
+ return FoldCount<T>(kind, maskKind, context, std::move(funcRef));
} else if (name == "dim") {
return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
std::move(funcRef),
@@ -1262,7 +1265,8 @@ Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(FoldingContext &context,
return common::visit(
[&](const auto &x) {
using TR = typename std::decay_t<decltype(x)>::Result;
- return MakeConstantExpr<T>(kind, Scalar<TR>::MAXEXPONENT(x.kind()));
+ const int trKind{x.kind()};
+ return MakeConstantExpr<T>(kind, Scalar<TR>::MAXEXPONENT(trKind));
},
sx->u);
}
@@ -1275,7 +1279,8 @@ Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(FoldingContext &context,
return common::visit(
[&](const auto &x) {
using TR = typename std::decay_t<decltype(x)>::Result;
- return MakeConstantExpr<T>(kind, Scalar<TR>::MINEXPONENT(x.kind()));
+ const int trKind{x.kind()};
+ return MakeConstantExpr<T>(kind, Scalar<TR>::MINEXPONENT(trKind));
},
sx->u);
}
@@ -1391,6 +1396,8 @@ Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(FoldingContext &context,
symbol = args[0]->GetAssumedTypeDummy();
}
if (symbol && IsAssumedRank(*symbol)) {
+ // DescriptorInquiry can only be placed in expression of kind
+ // DescriptorInquiry::ResultKind.
return ConvertToType<T>(kind,
Expr<DescriptorInquiry::Result>{DescriptorInquiry{
NamedEntity{*symbol}, DescriptorInquiry::Field::Rank}});
diff --git a/flang/lib/Evaluate/fold-logical.cpp b/flang/lib/Evaluate/fold-logical.cpp
index 2cc8b92cdfedb0..b475d27c657270 100644
--- a/flang/lib/Evaluate/fold-logical.cpp
+++ b/flang/lib/Evaluate/fold-logical.cpp
@@ -22,7 +22,7 @@ static std::optional<Expr<SomeType>> ZeroExtend(const Constant<T> &c) {
Scalar<LargestInt>::ConvertUnsigned(LargestIntKind, v).value);
}
return AsGenericExpr(Constant<LargestInt>{
- LargestIntKind, std::move(exts), ConstantSubscripts{c.shape()}});
+ LargestIntKind, std::move(exts), ConstantSubscripts(c.shape())});
}
// for ALL, ANY & PARITY
@@ -164,7 +164,7 @@ static std::optional<Expr<SomeInteger>> IntToRealBoundHelper(
using IType = Type<TypeCategory::Integer>;
using IntType = Scalar<Type<TypeCategory::Integer>>;
using RealType = Scalar<Type<TypeCategory::Real>>;
- IntType result{xIKind, 0}; // 0
+ IntType result{IntType::Zero(xIKind)}; // 0
while (true) {
std::optional<IntType> next;
for (int bit{0}; bit < IntType::bits(xIKind); ++bit) {
@@ -238,7 +238,7 @@ class IntrinsicCallHelper {
template <typename T> Result Test(int kind) {
if (T::category == typeAndShape_->type().category() &&
kind == typeAndShape_->type().kind()) {
- return AsGenericExpr(FunctionRef<T>{typeAndShape_->type().kind(),
+ return AsGenericExpr(FunctionRef<T>{kind,
ProcedureDesignator{std::move(call_.specificIntrinsic)},
std::move(call_.arguments)});
} else {
@@ -286,7 +286,7 @@ static Expr<SomeType> IntTransferMold(
}
Constant<SubscriptInteger> value{SubscriptIntegerKind,
std::vector<Scalar<SubscriptInteger>>{
- Scalar<SubscriptInteger>{SubscriptIntegerKind, 0}},
+ Scalar<SubscriptInteger>::Zero(SubscriptIntegerKind)},
std::move(shape)};
auto expr{ConvertToType(iType, AsGenericExpr(std::move(value)))};
CHECK(expr.has_value());
diff --git a/flang/lib/Evaluate/intrinsics-library.cpp b/flang/lib/Evaluate/intrinsics-library.cpp
index adfc295b97a2cb..2ffd22153ecc2f 100644
--- a/flang/lib/Evaluate/intrinsics-library.cpp
+++ b/flang/lib/Evaluate/intrinsics-library.cpp
@@ -152,7 +152,7 @@ template <typename FuncType, typename TR, typename... TA, size_t... I>
static Expr<SomeType> ApplyHostFunctionHelper(FuncType func,
FoldingContext &context, std::vector<Expr<SomeType>> &&args,
std::index_sequence<I...>) {
- const int kind{TR::kind};
+ constexpr int kind{TR::kind};
host::HostFloatingPointEnvironment hostFPE;
hostFPE.SetUpHostFloatingPointEnvironment(context);
host::HostType<TR> hostResult{};
diff --git a/flang/lib/Evaluate/real-value-impl.cpp b/flang/lib/Evaluate/real-value-impl.cpp
index 8f448bd4981daa..882c4a9cf4412b 100644
--- a/flang/lib/Evaluate/real-value-impl.cpp
+++ b/flang/lib/Evaluate/real-value-impl.cpp
@@ -9,14 +9,10 @@
#include "real-value-impl.h"
#include "integer-value-impl.h"
#include "flang/Common/idioms.h"
-#include "flang/Decimal/decimal.h"
#include "flang/Evaluate/integer-value.h"
-#include "flang/Evaluate/real-value.h"
-#include "flang/Evaluate/rounding-bits.h"
#include "llvm/Support/raw_ostream.h"
#include <cmath>
#include <cstring>
-#include <new>
#include <string>
namespace Fortran::evaluate::value {
diff --git a/flang/lib/Evaluate/tools.cpp b/flang/lib/Evaluate/tools.cpp
index a7200e39d1252a..e01c326e9bcd39 100644
--- a/flang/lib/Evaluate/tools.cpp
+++ b/flang/lib/Evaluate/tools.cpp
@@ -312,7 +312,7 @@ std::optional<Expr<SomeComplex>> ConstructComplex(
// Extracts the real or imaginary part of the result of a COMPLEX
// expression, when that expression is simple enough to be duplicated.
template <bool GET_IMAGINARY> struct ComplexPartExtractor {
- // NOTE: The the code in this class was dead code; a std/common::withStdString
+ // NOTE: The the code in this class was dead code; a std/common::visit
// was forgotten such that the overload resolution was looking for a
// std::variant<...> overload instead for the runtime content of the
// std::variant. There was no specialization for std::variant so this fallback
@@ -689,8 +689,6 @@ std::optional<Expr<LogicalResult>> Relate(parser::ContextualMessages &messages,
return PromoteAndRelate(opr, std::move(rx), std::move(ry));
},
[&](Expr<SomeReal> &&rx, Expr<SomeInteger> &&iy) {
- // rx aliases x, so sequence the conversion before std::move(x)
- // (argument order is unspecified)
auto converted{ConvertTo(rx, std::move(iy))};
return Relate(messages, opr, std::move(x),
AsGenericExpr(std::move(converted)));
diff --git a/flang/lib/Semantics/check-omp-atomic.cpp b/flang/lib/Semantics/check-omp-atomic.cpp
index aa0ac59ac8bdf9..427921c994a3ab 100644
--- a/flang/lib/Semantics/check-omp-atomic.cpp
+++ b/flang/lib/Semantics/check-omp-atomic.cpp
@@ -202,7 +202,7 @@ struct ReassocRewriter : public evaluate::rewrite::Identity {
evaluate::Expr<T> Reconstruct(const S &op, evaluate::Expr<T> atom,
evaluate::Expr<T> op1, evaluate::Expr<T> op2) {
using TypeS = llvm::remove_cvref_t<decltype(op)>;
- const int KindS{op.kind()};
+ const int kindS{op.kind()};
// This function has to be semantically correct for all possible types
// of S even though at runtime s will only be one of the matched types.
// Limit the construction to the operation types that we tried to match
@@ -213,7 +213,7 @@ struct ReassocRewriter : public evaluate::rewrite::Identity {
CHECK(op1.kind() == op2.kind());
const int K{op1.kind()};
if constexpr (std::is_same_v<TypeS, evaluate::LogicalOperation>) {
- CHECK(K == KindS);
+ CHECK(K == kindS);
// Logical operators take an extra argument in their constructor,
// so they need their own reconstruction code.
common::LogicalOperator opCode{op.logicalOperator};
@@ -224,9 +224,9 @@ struct ReassocRewriter : public evaluate::rewrite::Identity {
}
} else {
// Generic reconstruction.
- return evaluate::Expr<T>(TypeS(KindS, //
+ return evaluate::Expr<T>(TypeS(kindS, //
std::move(atom),
- evaluate::Expr<T>(TypeS(KindS, //
+ evaluate::Expr<T>(TypeS(kindS, //
std::move(op1), std::move(op2)))));
}
}
diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp
index 8db10874f23fcc..227514827414f5 100644
--- a/flang/lib/Semantics/expression.cpp
+++ b/flang/lib/Semantics/expression.cpp
@@ -1549,11 +1549,12 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::StructureComponent &sc) {
Expr<SomeReal> realExpr{common::visit(
[&](const auto &z) {
using PartType = typename ResultType<decltype(z)>::Part;
+ const int partkind{z.kind()};
auto part{kind == MiscKind::ComplexPartRe
? ComplexPart::Part::RE
: ComplexPart::Part::IM};
return AsCategoryExpr(Designator<PartType>{
- z.kind(), ComplexPart{std::move(*dataRef), part}});
+ partkind, ComplexPart{std::move(*dataRef), part}});
},
zExpr->u)};
return AsGenericExpr(std::move(realExpr));
diff --git a/flang/lib/Semantics/runtime-type-info.cpp b/flang/lib/Semantics/runtime-type-info.cpp
index 903798515f8ff5..06fcfa4f3609fa 100644
--- a/flang/lib/Semantics/runtime-type-info.cpp
+++ b/flang/lib/Semantics/runtime-type-info.cpp
@@ -357,7 +357,7 @@ static SomeExpr SaveObjectInit(
CHECK(symbol.get<ObjectEntityDetails>().init().has_value());
SetReadOnlyCompilerCreatedFlags(symbol);
return evaluate::AsGenericExpr(
- evaluate::Designator<evaluate::SomeDerived>{0, symbol});
+ evaluate::Designator<evaluate::SomeDerived>{/*kind=*/0, symbol});
}
static SomeExpr IntExpr(int kind, std::int64_t n) {
diff --git a/flang/unittests/Evaluate/CMakeLists.txt b/flang/unittests/Evaluate/CMakeLists.txt
index cb61d37b7946d5..e54872e2f35b65 100644
--- a/flang/unittests/Evaluate/CMakeLists.txt
+++ b/flang/unittests/Evaluate/CMakeLists.txt
@@ -43,12 +43,6 @@ add_flang_nongtest_unittest(intrinsics
FortranParser
)
-add_flang_nongtest_unittest(logical
- NonGTestTesting
- FortranEvaluate
- FortranSemantics
-)
-
add_flang_unittest(FlangEvaluateTests
PARTIAL_SOURCES_INTENDED
CharacterValueTest.cpp
diff --git a/flang/unittests/Evaluate/CharacterValueTest.cpp b/flang/unittests/Evaluate/CharacterValueTest.cpp
index ef06647987fbe6..12f2764ca60f5f 100644
--- a/flang/unittests/Evaluate/CharacterValueTest.cpp
+++ b/flang/unittests/Evaluate/CharacterValueTest.cpp
@@ -39,7 +39,7 @@ TYPED_TEST_SUITE(CharacterValueTypedKind, CharacterTypedKinds, KindName);
class CharacterValueKind : public testing::TestWithParam<int> {};
INSTANTIATE_TEST_SUITE_P(CharacterValueKind, CharacterValueKind,
- testing::ValuesIn(CharacterKinds),
+ testing::ValuesIn(KindsByType<TypeCategory::Character>::kinds),
[](const testing::TestParamInfo<int> &info) {
return "CHARACTER_" + std::to_string(info.param);
});
diff --git a/flang/unittests/Evaluate/ComplexValueTest.cpp b/flang/unittests/Evaluate/ComplexValueTest.cpp
index 889e7281c0ef9c..4dfd74b5790046 100644
--- a/flang/unittests/Evaluate/ComplexValueTest.cpp
+++ b/flang/unittests/Evaluate/ComplexValueTest.cpp
@@ -20,10 +20,15 @@ namespace {
class ComplexValueKind : public testing::TestWithParam<int> {};
INSTANTIATE_TEST_SUITE_P(ComplexValueKind, ComplexValueKind,
- testing::ValuesIn(RealKinds), [](const testing::TestParamInfo<int> &info) {
+ testing::ValuesIn(KindsByType<TypeCategory::Complex>::kinds),
+ [](const testing::TestParamInfo<int> &info) {
return "COMPLEX_" + std::to_string(info.param);
});
+//===----------------------------------------------------------------------===//
+// Helpers
+//===----------------------------------------------------------------------===//
+
RealValue Real(int kind, std::int64_t n) {
return RealValue::FromInteger(kind, IntegerValue{8, n}).value;
}
@@ -52,9 +57,10 @@ std::string AsFortranString(const ComplexValue &z, int kind) {
return s;
}
-constexpr int KindPos(int kind) {
- for (std::size_t i{0}; i < std::size(RealKinds); ++i) {
- if (RealKinds[i] == kind) {
+static constexpr int KindPos(int kind) {
+ constexpr auto &ComplexKinds{KindsByType<TypeCategory::Complex>::kinds};
+ for (std::size_t i{0}; i < std::size(ComplexKinds); ++i) {
+ if (ComplexKinds[i] == kind) {
return static_cast<int>(i);
}
}
diff --git a/flang/unittests/Evaluate/IntegerValueTest.cpp b/flang/unittests/Evaluate/IntegerValueTest.cpp
index ee4e63d7accb83..3071198f870c25 100644
--- a/flang/unittests/Evaluate/IntegerValueTest.cpp
+++ b/flang/unittests/Evaluate/IntegerValueTest.cpp
@@ -52,7 +52,7 @@ TYPED_TEST_SUITE(IntegerValueTypedKind, IntegerTypedKinds, KindName);
class IntegerValueKind : public testing::TestWithParam<int> {};
INSTANTIATE_TEST_SUITE_P(IntegerValueKind, IntegerValueKind,
- testing::ValuesIn(IntegerKinds),
+ testing::ValuesIn(KindsByType<TypeCategory::Integer>::kinds),
[](const testing::TestParamInfo<int> &info) {
return "INTEGER_" + std::to_string(info.param);
});
diff --git a/flang/unittests/Evaluate/LogicalValueTest.cpp b/flang/unittests/Evaluate/LogicalValueTest.cpp
index 568938c349e6f4..9989285881bf1b 100644
--- a/flang/unittests/Evaluate/LogicalValueTest.cpp
+++ b/flang/unittests/Evaluate/LogicalValueTest.cpp
@@ -21,12 +21,17 @@ namespace {
class LogicalValueKind : public testing::TestWithParam<int> {};
INSTANTIATE_TEST_SUITE_P(LogicalValueKind, LogicalValueKind,
- testing::ValuesIn(LogicalKinds),
+ testing::ValuesIn(KindsByType<TypeCategory::Logical>::kinds),
[](const testing::TestParamInfo<int> &info) {
return "LOGICAL_" + std::to_string(info.param);
});
-constexpr int KindPos(int kind) {
+//===----------------------------------------------------------------------===//
+// Helpers
+//===----------------------------------------------------------------------===//
+
+static constexpr int KindPos(int kind) {
+ constexpr auto &LogicalKinds{KindsByType<TypeCategory::Logical>::kinds};
for (std::size_t i{0}; i < std::size(LogicalKinds); ++i) {
if (LogicalKinds[i] == kind) {
return static_cast<int>(i);
diff --git a/flang/unittests/Evaluate/RealValueTest.cpp b/flang/unittests/Evaluate/RealValueTest.cpp
index 6ac028bddb6afc..f1993d85d15da4 100644
--- a/flang/unittests/Evaluate/RealValueTest.cpp
+++ b/flang/unittests/Evaluate/RealValueTest.cpp
@@ -46,7 +46,8 @@ TYPED_TEST_SUITE(RealValueHostTypedKind, RealHostTypedKinds, KindName);
class RealValueKind : public testing::TestWithParam<int> {};
INSTANTIATE_TEST_SUITE_P(RealValueKind, RealValueKind,
- testing::ValuesIn(RealKinds), [](const testing::TestParamInfo<int> &info) {
+ testing::ValuesIn(KindsByType<TypeCategory::Real>::kinds),
+ [](const testing::TestParamInfo<int> &info) {
return "REAL_" + std::to_string(info.param);
});
@@ -54,15 +55,6 @@ INSTANTIATE_TEST_SUITE_P(RealValueKind, RealValueKind,
// Helpers
//===----------------------------------------------------------------------===//
-constexpr int KindPos(int kind) {
- for (std::size_t i{0}; i < std::size(RealKinds); ++i) {
- if (RealKinds[i] == kind) {
- return static_cast<int>(i);
- }
- }
- return -1;
-}
-
testing::AssertionResult RealValuesEqual(const char *lhsExpr,
const char *rhsExpr, const RealValue &lhs, const RealValue &rhs) {
if (lhs == rhs) {
@@ -84,7 +76,7 @@ std::string AsFortranString(const RealValue &x, int kind, bool minimal) {
/// Takes an integer and distributes its bits across a floating-point value so
/// that a short sweep still covers signs, zeroes, subnormals, infinities and
-/// NaNs. The LSB complements the result. Copied from the legacy real.cpp.
+/// NaNs. The LSB complements the result. Copied from the legacy real.cpp.
static std::uint32_t SpreadBits(std::uint32_t n) {
static const int shifts[]{
-1, 31, 23, 30, 22, 0, 24, 29, 25, 28, 26, 1, 16, 21, 2, -1};
@@ -126,6 +118,16 @@ static void ExpectSameAsHost(const RealValue &got, HostT expected) {
<< "expected " << double{expected} << ", got " << got.DumpHexadecimal();
}
+static constexpr int KindPos(int kind) {
+ constexpr auto &RealKinds{KindsByType<TypeCategory::Real>::kinds};
+ for (std::size_t i{0}; i < std::size(RealKinds); ++i) {
+ if (RealKinds[i] == kind) {
+ return static_cast<int>(i);
+ }
+ }
+ return -1;
+}
+
//===----------------------------------------------------------------------===//
// Construction, assignment and kind inquiries
//===----------------------------------------------------------------------===//
diff --git a/flang/unittests/Evaluate/folding.cpp b/flang/unittests/Evaluate/folding.cpp
index 7837e32df69944..40b7e276f74a90 100644
--- a/flang/unittests/Evaluate/folding.cpp
+++ b/flang/unittests/Evaluate/folding.cpp
@@ -1,4 +1,5 @@
#include "../../lib/Evaluate/host.h"
+#include "flang/Common/type-kinds.h"
#include "flang/Evaluate/call.h"
#include "flang/Evaluate/expression.h"
#include "flang/Evaluate/fold.h"
@@ -16,7 +17,7 @@ template <typename... T> struct RunOnTypes {};
template <typename Test, typename... T>
struct RunOnTypes<Test, std::tuple<T...>> {
template <typename U> static void RunOnKinds() {
- for (int kind : KindsByType<U::category>::kinds) {
+ for (int kind : Fortran::common::KindsByType<U::category>::kinds) {
Test::template Run<U>(kind);
}
}
diff --git a/flang/unittests/Evaluate/logical.cpp b/flang/unittests/Evaluate/logical.cpp
deleted file mode 100644
index c8bf850d6c08e8..00000000000000
--- a/flang/unittests/Evaluate/logical.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "flang/Evaluate/type.h"
-#include "flang/Testing/testing.h"
-#include <cstdio>
-
-static void testKind(int kind) {
- using Type = Fortran::evaluate::Type<Fortran::common::TypeCategory::Logical>;
- TEST(Fortran::evaluate::IsSpecificIntrinsicType<Type>);
- TEST(Type::category == Fortran::common::TypeCategory::Logical);
- TEST(Type{kind}.kind() == kind);
- using Value = Fortran::evaluate::Scalar<Type>;
- MATCH(8 * kind, Value::Zero(kind).bits());
- TEST(!Value{}.IsTrue());
- TEST(!Value(kind, false).IsTrue());
- TEST(Value(kind, true).IsTrue());
- TEST(Value(kind, false).NOT().IsTrue());
- TEST(!Value(kind, true).NOT().IsTrue());
- TEST(!Value(kind, false).AND(Value(kind, false)).IsTrue());
- TEST(!Value(kind, false).AND(Value(kind, true)).IsTrue());
- TEST(!Value(kind, true).AND(Value(kind, false)).IsTrue());
- TEST(Value(kind, true).AND(Value(kind, true)).IsTrue());
- TEST(!Value(kind, false).OR(Value(kind, false)).IsTrue());
- TEST(Value(kind, false).OR(Value(kind, true)).IsTrue());
- TEST(Value(kind, true).OR(Value(kind, false)).IsTrue());
- TEST(Value(kind, true).OR(Value(kind, true)).IsTrue());
- TEST(Value(kind, false).EQV(Value(kind, false)).IsTrue());
- TEST(!Value(kind, false).EQV(Value(kind, true)).IsTrue());
- TEST(!Value(kind, true).EQV(Value(kind, false)).IsTrue());
- TEST(Value(kind, true).EQV(Value(kind, true)).IsTrue());
- TEST(!Value(kind, false).NEQV(Value(kind, false)).IsTrue());
- TEST(Value(kind, false).NEQV(Value(kind, true)).IsTrue());
- TEST(Value(kind, true).NEQV(Value(kind, false)).IsTrue());
- TEST(!Value(kind, true).NEQV(Value(kind, true)).IsTrue());
-}
-
-int main() {
- testKind(1);
- testKind(2);
- testKind(4);
- testKind(8);
- return testing::Complete();
-}
>From 615a9a1044e233f42418b2bf7faffdf19bbd8166 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Tue, 1 Sep 2026 16:05:53 +0200
Subject: [PATCH 05/13] Post-merge fixes
---
flang/lib/Lower/ConvertConstant.cpp | 37 ++++++++++++++++-------------
1 file changed, 20 insertions(+), 17 deletions(-)
diff --git a/flang/lib/Lower/ConvertConstant.cpp b/flang/lib/Lower/ConvertConstant.cpp
index b9d4821963cd4f..edf8a12e761e1f 100644
--- a/flang/lib/Lower/ConvertConstant.cpp
+++ b/flang/lib/Lower/ConvertConstant.cpp
@@ -622,6 +622,7 @@ static mlir::Value
genInlinedArrayLit(Fortran::lower::AbstractConverter &converter,
mlir::Location loc, mlir::Type arrayTy,
const Fortran::evaluate::Constant<T> &con) {
+ const int kind{con.kind()};
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::IndexType idxTy = builder.getIndexType();
Fortran::evaluate::ConstantSubscripts subscripts = con.lbounds();
@@ -646,31 +647,33 @@ genInlinedArrayLit(Fortran::lower::AbstractConverter &converter,
fir::InsertValueOp::create(builder, loc, arrayTy, array, elementVal,
builder.getArrayAttr(createIdx()));
} while (con.IncrementSubscripts(subscripts));
- } else if constexpr (T::category ==
- Fortran::common::TypeCategory::Character &&
- T::kind != 1) {
- do {
- mlir::Value elementVal =
- genScalarLit<T::kind>(builder, loc, con.At(subscripts), con.LEN(),
- /*outlineInReadOnlyMemory=*/false);
- array =
- fir::InsertValueOp::create(builder, loc, arrayTy, array, elementVal,
- builder.getArrayAttr(createIdx()));
- } while (con.IncrementSubscripts(subscripts));
} else {
+ if constexpr (T::category == Fortran::common::TypeCategory::Character) {
+ if (kind != 1) {
+ do {
+ mlir::Value elementVal =
+ genScalarLit(builder, loc, con.At(subscripts), con.LEN(),
+ /*outlineInReadOnlyMemory=*/false);
+ array = fir::InsertValueOp::create(builder, loc, arrayTy, array,
+ elementVal,
+ builder.getArrayAttr(createIdx()));
+ } while (con.IncrementSubscripts(subscripts));
+ return array;
+ }
+ }
+
llvm::SmallVector<mlir::Attribute> rangeStartIdx;
uint64_t rangeSize = 0;
mlir::Type eleTy = mlir::cast<fir::SequenceType>(arrayTy).getElementType();
do {
auto getElementVal = [&]() {
if constexpr (T::category == Fortran::common::TypeCategory::Character)
- return genScalarLit<T::kind>(builder, loc, con.At(subscripts),
- con.LEN(),
- /*outlineInReadOnlyMemory=*/false);
+ return genScalarLit(builder, loc, con.At(subscripts), con.LEN(),
+ /*outlineInReadOnlyMemory=*/false);
else
- return builder.createConvert(loc, eleTy,
- genScalarLit<T::category, T::kind>(
- builder, loc, con.At(subscripts)));
+ return builder.createConvert(
+ loc, eleTy,
+ genScalarLit<T::category>(builder, loc, con.At(subscripts)));
};
Fortran::evaluate::ConstantSubscripts nextSubscripts = subscripts;
bool nextIsSame = con.IncrementSubscripts(nextSubscripts) &&
>From bf8f85707bf322f6915ffce05178af09c7e1c752 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Mon, 7 Sep 2026 14:04:00 +0200
Subject: [PATCH 06/13] Post-merge fixes Post-merge fix
---
flang/lib/Lower/ConvertConstant.cpp | 3 +--
flang/lib/Semantics/openmp-utils.cpp | 8 +++-----
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/flang/lib/Lower/ConvertConstant.cpp b/flang/lib/Lower/ConvertConstant.cpp
index 908068c6ba7f24..d0cb994aa28a4f 100644
--- a/flang/lib/Lower/ConvertConstant.cpp
+++ b/flang/lib/Lower/ConvertConstant.cpp
@@ -132,8 +132,7 @@ class DenseGlobalBuilder {
static fir::GlobalOp tryCreating(
fir::FirOpBuilder &builder, mlir::Location loc, mlir::Type symTy,
llvm::StringRef globalName, fir::LinkageAttr linkage, bool isConst,
- const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC, KIND>>
- &constant,
+ const Fortran::evaluate::Constant<Fortran::evaluate::Type<TC>> &constant,
cuf::DataAttributeAttr dataAttr, bool setDefaultAlignment = true) {
DenseGlobalBuilder globalBuilder;
globalBuilder.tryConvertingToAttributes(builder, constant);
diff --git a/flang/lib/Semantics/openmp-utils.cpp b/flang/lib/Semantics/openmp-utils.cpp
index 9918e7b2609002..b7145840dbbbd0 100644
--- a/flang/lib/Semantics/openmp-utils.cpp
+++ b/flang/lib/Semantics/openmp-utils.cpp
@@ -2724,11 +2724,9 @@ struct MetadirectiveConditionNormalizer : evaluate::rewrite::Identity {
return common::Clone(parentheses.left());
}
- template <int KIND>
- evaluate::Expr<evaluate::Type<common::TypeCategory::Logical, KIND>>
- operator()(evaluate::Expr<evaluate::Type<common::TypeCategory::Logical, KIND>>
- &&expr,
- const evaluate::LogicalOperation<KIND> &operation) {
+ evaluate::Expr<evaluate::Type<common::TypeCategory::Logical>> operator()(
+ evaluate::Expr<evaluate::Type<common::TypeCategory::Logical>> &&expr,
+ const evaluate::LogicalOperation &operation) {
if ((operation.logicalOperator == evaluate::LogicalOperator::And ||
operation.logicalOperator == evaluate::LogicalOperator::Or) &&
operation.left() == operation.right())
>From ac3c3ccfb9cd557041bcf57bc1e77b5a05777af4 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Thu, 10 Sep 2026 11:52:14 +0200
Subject: [PATCH 07/13] monostate -> null
Build fix
clang-format
Post-merge fixes
clang-format
---
flang/lib/Evaluate/fold-implementation.h | 2 +-
flang/lib/Evaluate/shape.cpp | 2 +-
flang/test/Semantics/real-special-vals.f90 | 18 ++++++++++++++++++
3 files changed, 20 insertions(+), 2 deletions(-)
create mode 100644 flang/test/Semantics/real-special-vals.f90
diff --git a/flang/lib/Evaluate/fold-implementation.h b/flang/lib/Evaluate/fold-implementation.h
index 20537d946fa058..3ab0260261c48e 100644
--- a/flang/lib/Evaluate/fold-implementation.h
+++ b/flang/lib/Evaluate/fold-implementation.h
@@ -1880,7 +1880,7 @@ common::IfNoLvalue<std::optional<TO>, FROM> ConvertString(
const int fromKind{s.kind()};
if (std::is_same_v<TO, FROM> && toKind == fromKind) {
return std::make_optional<TO>(std::move(s));
- } else if (auto result{s.ToAscii(toKind)}; !result.IsMonostate()) {
+ } else if (auto result{s.ToAscii(toKind)}; !result.IsNull()) {
return result;
} else {
return std::nullopt;
diff --git a/flang/lib/Evaluate/shape.cpp b/flang/lib/Evaluate/shape.cpp
index 93060c9179287d..57d86aa93d6186 100644
--- a/flang/lib/Evaluate/shape.cpp
+++ b/flang/lib/Evaluate/shape.cpp
@@ -475,7 +475,7 @@ static MaybeExtentExpr GetNonNegativeExtent(
ConstantSubscript extent;
(void)llvm::SubOverflow(*uval, *lval, extent);
(void)llvm::AddOverflow(extent, ConstantSubscript{1}, extent);
- return ExtentExpr{extent};
+ return MakeExtentExpr(extent);
}
} else if (lbound && ubound && lbound->Rank() == 0 && ubound->Rank() == 0 &&
(!invariantOnly ||
diff --git a/flang/test/Semantics/real-special-vals.f90 b/flang/test/Semantics/real-special-vals.f90
new file mode 100644
index 00000000000000..178ab436401c8c
--- /dev/null
+++ b/flang/test/Semantics/real-special-vals.f90
@@ -0,0 +1,18 @@
+! RUN: split-file %s %t
+! RUN: %flang_fc1 -fsyntax-only -module-dir %t %t/m.f90
+! RUN: %flang_fc1 -fsyntax-only -Werror -module-dir %t %t/use.f90
+
+! Ensure that canonical representations of infinities and NaNs in module files
+! can be read without emitting folding exception warnings.
+
+!--- m.f90
+module m
+ real(4), parameter :: positive_infinity = z'7f800000'
+ real(4), parameter :: negative_infinity = z'ff800000'
+ real(4), parameter :: quiet_nan = z'7fc00000'
+end module
+
+!--- use.f90
+program test
+ use m
+end program
>From b628940454bff9cabeb8dc299959b0e8e6367aeb Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Mon, 14 Sep 2026 12:31:09 +0200
Subject: [PATCH 08/13] Post-merge fixes
clang-format
---
flang/lib/Evaluate/fold-implementation.h | 6 +++---
flang/lib/Evaluate/fold-integer.cpp | 6 +++---
flang/lib/Evaluate/intrinsics.cpp | 4 ++--
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/flang/lib/Evaluate/fold-implementation.h b/flang/lib/Evaluate/fold-implementation.h
index 0bb865dcf4b4c6..e76f1248616b16 100644
--- a/flang/lib/Evaluate/fold-implementation.h
+++ b/flang/lib/Evaluate/fold-implementation.h
@@ -1367,8 +1367,8 @@ static inline Expr<SomeDerived> FoldEnumerationNextOrPrevious(
int newOrd{isNext ? static_cast<int>(*ordVal + 1)
: static_cast<int>(*ordVal - 1)};
StructureConstructor ctor{*derived};
- ctor.Add(
- ordSym, Expr<SomeType>{Expr<SomeInteger>{Expr<CInteger>{newOrd}}});
+ ctor.Add(ordSym,
+ Expr<SomeType>{Expr<SomeInteger>{MakeCIntegerExpr(newOrd)}});
return Expr<SomeDerived>{Constant<SomeDerived>{std::move(ctor)}};
}
}
@@ -1401,7 +1401,7 @@ static inline Expr<SomeDerived> FoldEnumerationNextOrPrevious(
: static_cast<int>(*ordVal - 1)};
StructureConstructor ctor{*derived};
ctor.Add(
- ordSym, Expr<SomeType>{Expr<SomeInteger>{Expr<CInteger>{newOrd}}});
+ ordSym, Expr<SomeType>{Expr<SomeInteger>{MakeCIntegerExpr(newOrd)}});
elements.emplace_back(std::move(ctor));
}
return Expr<SomeDerived>{Constant<SomeDerived>{
diff --git a/flang/lib/Evaluate/fold-integer.cpp b/flang/lib/Evaluate/fold-integer.cpp
index 8223b378b6dfca..ca11294fb7cb9a 100644
--- a/flang/lib/Evaluate/fold-integer.cpp
+++ b/flang/lib/Evaluate/fold-integer.cpp
@@ -795,7 +795,7 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
// Scalar: fold to the single ordinal.
if (auto ordExpr{GetEnumerationOrdinal(*derivedExpr)}) {
if (auto ordVal{ToInt64(*ordExpr)}) {
- return Expr<T>{Constant<T>{Scalar<T>{*ordVal}}};
+ return MakeConstantExpr<T>(kind, *ordVal);
}
} else if (const auto *constant{
UnwrapConstantValue<SomeDerived>(*derivedExpr)};
@@ -815,9 +815,9 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
for (const StructureConstructorValues &scv :
constant->values()) {
elements.emplace_back(
- *ToInt64(scv.find(ordSym)->second.value()));
+ kind, *ToInt64(scv.find(ordSym)->second.value()));
}
- return Expr<T>{Constant<T>{std::move(elements),
+ return Expr<T>{Constant<T>{kind, std::move(elements),
ConstantSubscripts{constant->shape()}}};
}
}
diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp
index 88874f7ef08e88..78fee16d645b0b 100644
--- a/flang/lib/Evaluate/intrinsics.cpp
+++ b/flang/lib/Evaluate/intrinsics.cpp
@@ -3721,8 +3721,8 @@ IntrinsicProcTable::Implementation::HandleEnumerationHuge(
const semantics::Symbol &ordSym{*ordIter->second};
StructureConstructor ctor{derived};
ctor.Add(ordSym,
- Expr<SomeType>{
- Expr<SomeInteger>{Expr<Type<TypeCategory::Integer, 4>>{count}}});
+ Expr<SomeType>{Expr<SomeInteger>{
+ MakeConstantExpr<Type<TypeCategory::Integer>>(4, count)}});
// Build FunctionResult and DummyArguments
DynamicType enumType{derived};
characteristics::DummyDataObject ddo{characteristics::TypeAndShape{enumType}};
>From cc44b5b6b4cd072aa0e6f3adde6edd323fedd73d Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Wed, 16 Sep 2026 12:50:43 +0200
Subject: [PATCH 09/13] Fix regressions as my review comments
One more is_same_v instance
clang-format
---
flang/lib/Evaluate/fold-integer.cpp | 4 ++--
flang/lib/Evaluate/tools.cpp | 3 ++-
flang/lib/Semantics/expression.cpp | 3 ++-
flang/test/Evaluate/fold-unsigned-maxval.f90 | 6 ++++++
flang/test/Semantics/cmp-relational-char.f90 | 12 ++++++++++++
5 files changed, 24 insertions(+), 4 deletions(-)
create mode 100644 flang/test/Evaluate/fold-unsigned-maxval.f90
create mode 100644 flang/test/Semantics/cmp-relational-char.f90
diff --git a/flang/lib/Evaluate/fold-integer.cpp b/flang/lib/Evaluate/fold-integer.cpp
index ca11294fb7cb9a..ad874dafb2c526 100644
--- a/flang/lib/Evaluate/fold-integer.cpp
+++ b/flang/lib/Evaluate/fold-integer.cpp
@@ -957,7 +957,7 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
} else if (name == "maxval") {
return FoldMaxvalMinval<T>(kind, context, std::move(funcRef),
RelationalOperator::GT,
- T::category == TypeCategory::Unsigned ? typename T::Scalar{}
+ T::category == TypeCategory::Unsigned ? T::Scalar::Zero(kind)
: T::Scalar::Least(kind));
} else if (name == "merge_bits") {
return FoldElementalIntrinsic<T, T, T, T>(kind, {kind, kind, kind}, context,
@@ -967,7 +967,7 @@ std::optional<Expr<T>> FoldIntrinsicFunctionCommon(
} else if (name == "minval") {
return FoldMaxvalMinval<T>(kind, context, std::move(funcRef),
RelationalOperator::LT,
- T::category == TypeCategory::Unsigned ? typename T::Scalar{}.NOT()
+ T::category == TypeCategory::Unsigned ? T::Scalar::Zero(kind).NOT()
: T::Scalar::HUGE(kind));
} else if (name == "not") {
return FoldElementalIntrinsic<T, T>(
diff --git a/flang/lib/Evaluate/tools.cpp b/flang/lib/Evaluate/tools.cpp
index 2294c94dd3e2dc..542cb33d476636 100644
--- a/flang/lib/Evaluate/tools.cpp
+++ b/flang/lib/Evaluate/tools.cpp
@@ -729,7 +729,8 @@ std::optional<Expr<LogicalResult>> Relate(parser::ContextualMessages &messages,
[&](auto &&cxk,
auto &&cyk) -> std::optional<Expr<LogicalResult>> {
using Ty = ResultType<decltype(cxk)>;
- if constexpr (std::is_same_v<Ty, ResultType<decltype(cyk)>>) {
+ if (std::is_same_v<Ty, ResultType<decltype(cyk)>> &&
+ cxk.kind() == cyk.kind()) {
return PackageRelation(opr, std::move(cxk), std::move(cyk));
} else {
messages.Say(
diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp
index 5dd9df5bef6af0..791916afdac018 100644
--- a/flang/lib/Semantics/expression.cpp
+++ b/flang/lib/Semantics/expression.cpp
@@ -4351,7 +4351,8 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Concat &x) {
return common::visit(
[&](auto &&x, auto &&y) -> MaybeExpr {
using T = ResultType<decltype(x)>;
- if constexpr (std::is_same_v<T, ResultType<decltype(y)>>) {
+ if (std::is_same_v<T, ResultType<decltype(y)>> &&
+ x.kind() == y.kind()) {
return AsGenericExpr(Concat{std::move(x), std::move(y)});
} else {
DIE("different types for intrinsic concat");
diff --git a/flang/test/Evaluate/fold-unsigned-maxval.f90 b/flang/test/Evaluate/fold-unsigned-maxval.f90
new file mode 100644
index 00000000000000..593e76d0a8e675
--- /dev/null
+++ b/flang/test/Evaluate/fold-unsigned-maxval.f90
@@ -0,0 +1,6 @@
+! RUN: %python %S/test_folding.py %s %flang_fc1 -funsigned
+! Tests MAXVAL/MINVAL folding
+module repro
+ logical, parameter :: max_ok = maxval([1u_1, 2u_1]) == 2u_1
+ logical, parameter :: min_ok = minval([1u_1, 2u_1]) == 1u_1
+end module
diff --git a/flang/test/Semantics/cmp-relational-char.f90 b/flang/test/Semantics/cmp-relational-char.f90
new file mode 100644
index 00000000000000..127fa8a34e21cb
--- /dev/null
+++ b/flang/test/Semantics/cmp-relational-char.f90
@@ -0,0 +1,12 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+
+module m1
+ logical :: l
+contains
+ subroutine test_relational_character(a, b)
+ character(4,kind=1) :: a
+ character(4,kind=2) :: b
+ !ERROR: CHARACTER operands do not have same KIND
+ l = a == b
+ end
+end
>From 136ee821b9adca65cb51c0a1f0b4b0f654d81836 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Thu, 17 Sep 2026 14:36:53 +0200
Subject: [PATCH 10/13] Make static assertion template-dependent
Avoid platform-dependent widening
Avoid platform-dependent widening
One more char dependence
Mask-out not needed anymore
clang-format
clang-format
Post-merge fixes
---
flang/lib/Evaluate/character.h | 14 +++-----------
flang/lib/Evaluate/tools.cpp | 6 +++---
2 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/flang/lib/Evaluate/character.h b/flang/lib/Evaluate/character.h
index 5d4df5e9a5c775..5a3f01fd021cdd 100644
--- a/flang/lib/Evaluate/character.h
+++ b/flang/lib/Evaluate/character.h
@@ -34,17 +34,9 @@ class CharacterUtils {
// contain ASCII
static std::int64_t ICHAR(const Character &c) {
CHECK(c.length() == 1);
- // Mask to the character kind width to avoid sign extension
- auto ch{static_cast<std::uint64_t>(c[0])};
- switch (c.kind()) {
- case 1:
- return static_cast<std::int64_t>(ch & 0xffu);
- case 2:
- return static_cast<std::int64_t>(ch & 0xffffu);
- case 4:
- return static_cast<std::int64_t>(ch & 0xffffffffu);
- }
- DIE("unsupported character kind");
+ // CharacterValue::operator[] always zero-extends to char32_t. char32_t
+ // itself is defined as unsigned such that only zero-extend widening occurs.
+ return c[0];
}
static Character NEW_LINE(int kind) { return Character{kind, 1, NewLine()}; }
diff --git a/flang/lib/Evaluate/tools.cpp b/flang/lib/Evaluate/tools.cpp
index bacd7854c37522..79c49cb4375115 100644
--- a/flang/lib/Evaluate/tools.cpp
+++ b/flang/lib/Evaluate/tools.cpp
@@ -1489,9 +1489,9 @@ static std::optional<NumericExpr<CAT>> tryBuildSplitSumExpressionTree(
llvm::MutableArrayRef<SignedNumericTerm<CAT>> head{terms.data(), 2};
llvm::MutableArrayRef<SignedNumericTerm<CAT>> tail{
terms.data() + 2, terms.size() - 2};
- SignedNumericExpr<CAT, KIND> headExpr = buildRightAssociatedSignedFold(head);
- SignedNumericExpr<CAT, KIND> tailExpr = buildRightAssociatedSignedFold(tail);
- SignedNumericExpr<CAT, KIND> result =
+ SignedNumericExpr<CAT> headExpr = buildRightAssociatedSignedFold(head);
+ SignedNumericExpr<CAT> tailExpr = buildRightAssociatedSignedFold(tail);
+ SignedNumericExpr<CAT> result =
buildSignedAdd(std::move(headExpr), std::move(tailExpr));
assert(result.isPositive &&
"the first flattened term and therefore the split sum are positive");
>From fb947a1c37627c2e4b088829a6fbec7cde429c31 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Mon, 21 Sep 2026 14:28:25 +0200
Subject: [PATCH 11/13] fix T and its KIND mismatch
Two different kinds
Remove commit-relative comment
trKind -> rKind
Fix KIND mismatch folding
Silence compiler warning
Use CompareSigned directly for operator overloads
get instead of coerce
Coerce -> getWord
incompatible instead of incomparable
Do no allow implicit conversion
Method name capitalization
Use GetBasicString and permit nullstate behavior
Hide constant template
Post-merge fixes
clang-format
Remove stray backstlash
clang-format
---
flang/lib/Evaluate/fold-implementation.h | 8 ++--
flang/lib/Evaluate/fold-integer.cpp | 37 +++++++++----------
.../Evaluate/fold-specific-minmax-kind.f90 | 35 ++++++++++++++++++
flang/test/HLFIR/fold-nested-convert-kind.f90 | 14 +++++++
4 files changed, 72 insertions(+), 22 deletions(-)
create mode 100644 flang/test/Evaluate/fold-specific-minmax-kind.f90
create mode 100644 flang/test/HLFIR/fold-nested-convert-kind.f90
diff --git a/flang/lib/Evaluate/fold-implementation.h b/flang/lib/Evaluate/fold-implementation.h
index e76f1248616b16..a6c880ab785a9b 100644
--- a/flang/lib/Evaluate/fold-implementation.h
+++ b/flang/lib/Evaluate/fold-implementation.h
@@ -1243,6 +1243,7 @@ Expr<T> FoldMINorMAX(
template <typename T>
Expr<T> RewriteSpecificMINorMAX(
FoldingContext &context, FunctionRef<T> &&funcRef) {
+ const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
auto &intrinsic{DEREF(std::get_if<SpecificIntrinsic>(&funcRef.proc().u))};
// Rewrite MAX1(args) to INT(MAX(args)) and fold. Same logic for MIN1.
@@ -1272,9 +1273,9 @@ Expr<T> RewriteSpecificMINorMAX(
intrinsic.characteristics.value().functionResult.value().SetType(*resultType);
auto insertConversion{[&](const auto &x) -> Expr<T> {
using TR = ResultType<decltype(x)>;
- const int kind{x.kind()};
+ const int rKind{x.kind()};
FunctionRef<TR> maxRef{
- kind, ProcedureDesignator{funcRef.proc()}, ActualArguments{args}};
+ rKind, ProcedureDesignator{funcRef.proc()}, ActualArguments{args}};
return Fold(
context, ConvertToType<T>(kind, AsCategoryExpr(std::move(maxRef))));
}};
@@ -2140,7 +2141,8 @@ Expr<TO> FoldOperation(
if (auto *innerConv{
std::get_if<Convert<Operand, TO::category>>(&kindExpr.u)}) {
// Conversion of conversion of same category & kind
- if (auto *x{std::get_if<Expr<TO>>(&innerConv->left().u)}) {
+ if (auto *x{std::get_if<Expr<TO>>(&innerConv->left().u)};
+ x && x->kind() == toKind) {
if (TO::category == TypeCategory::Logical ||
toKind <= operandKind) {
return std::move(*x); // no-op Logical or Integer
diff --git a/flang/lib/Evaluate/fold-integer.cpp b/flang/lib/Evaluate/fold-integer.cpp
index 350d2ec3b750db..7f1fed2b35f652 100644
--- a/flang/lib/Evaluate/fold-integer.cpp
+++ b/flang/lib/Evaluate/fold-integer.cpp
@@ -295,7 +295,7 @@ Expr<Type<TypeCategory::Integer>> COBOUND(FoldingContext &context,
using T = Type<TypeCategory::Integer>;
const int kind{funcRef.kind()};
ActualArguments &args{funcRef.arguments()};
- if (const Symbol * coarray{UnwrapWholeSymbolOrComponentDataRef(args[0])}) {
+ if (const Symbol *coarray{UnwrapWholeSymbolOrComponentDataRef(args[0])}) {
std::optional<int> dim;
if (funcRef.Rank() == 0) {
// Optional DIM= argument is present: result is scalar.
@@ -459,7 +459,7 @@ template <WhichLocation WHICH> class LocationHelper {
value.reset();
}
for (ConstantSubscript k{0}; k < dimLength;
- ++k, ++at[zbDim], mask && ++maskAt[zbDim]) {
+ ++k, ++at[zbDim], mask && ++maskAt[zbDim]) {
if ((!mask || mask->At(maskAt).IsTrue()) &&
IsHit(array->At(at), value, relation, back)) {
hit = at[zbDim];
@@ -486,7 +486,7 @@ template <WhichLocation WHICH> class LocationHelper {
ConstantSubscript n{GetSize(array->shape())};
resultIndices = ConstantSubscripts(array->Rank(), 0);
for (ConstantSubscript j{0}; j < n; ++j, array->IncrementSubscripts(at),
- mask && mask->IncrementSubscripts(maskAt)) {
+ mask && mask->IncrementSubscripts(maskAt)) {
if ((!mask || mask->At(maskAt).IsTrue()) &&
IsHit(array->At(at), value, relation, back)) {
resultIndices = at;
@@ -1347,16 +1347,16 @@ Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(FoldingContext &context,
}
return FoldElementalIntrinsic<T, T, T>(kind, {kind, kind}, context,
std::move(funcRef),
- ScalarFuncWithContext<T, T, T>([badPConst](FoldingContext &context,
- const Scalar<T> &x,
- const Scalar<T> &y) -> Scalar<T> {
- auto result{x.MODULO(y)};
- if (!badPConst && result.overflow) {
- context.Warn(common::UsageWarning::FoldingException,
- "modulo() folding overflowed"_warn_en_US);
- }
- return result.value;
- }));
+ ScalarFuncWithContext<T, T, T>(
+ [badPConst](FoldingContext &context, const Scalar<T> &x,
+ const Scalar<T> &y) -> Scalar<T> {
+ auto result{x.MODULO(y)};
+ if (!badPConst && result.overflow) {
+ context.Warn(common::UsageWarning::FoldingException,
+ "modulo() folding overflowed"_warn_en_US);
+ }
+ return result.value;
+ }));
} else if (name == "precision") {
if (const auto *cx{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
return MakeConstantExpr<T>(kind,
@@ -1530,7 +1530,7 @@ Expr<Type<TypeCategory::Integer>> FoldIntrinsicFunction(FoldingContext &context,
auto realBytes{
context.targetCharacteristics().GetByteSize(TypeCategory::Real,
context.defaults().GetDefaultKind(TypeCategory::Real))};
- return Expr<T>{8 * std::min(intBytes, realBytes)};
+ return MakeConstantExpr<T>(kind, 8 * std::min(intBytes, realBytes));
}
}
return Expr<T>{std::move(funcRef)};
@@ -1587,10 +1587,9 @@ Expr<TypeParamInquiry::Result> FoldOperation(
if (base) {
// Handling "designator%typeParam". Get the value of the type parameter
// from the instantiation of the base
- if (const semantics::DeclTypeSpec *
- declType{base->GetLastSymbol().GetType()}) {
- if (const semantics::ParamValue *
- paramValue{
+ if (const semantics::DeclTypeSpec *declType{
+ base->GetLastSymbol().GetType()}) {
+ if (const semantics::ParamValue *paramValue{
declType->derivedTypeSpec().FindParameter(parameterName)}) {
const semantics::MaybeIntExpr ¶mExpr{paramValue->GetExplicit()};
if (paramExpr && IsConstantExpr(*paramExpr, &context)) {
@@ -1607,7 +1606,7 @@ Expr<TypeParamInquiry::Result> FoldOperation(
if (const auto *pdt{context.pdtInstance()}) {
auto restorer{context.WithoutPDTInstance()}; // don't loop
bool isLen{false};
- if (const semantics::Scope * scope{pdt->scope()}) {
+ if (const semantics::Scope *scope{pdt->scope()}) {
auto iter{scope->find(parameterName)};
if (iter != scope->end()) {
const Symbol &symbol{*iter->second};
diff --git a/flang/test/Evaluate/fold-specific-minmax-kind.f90 b/flang/test/Evaluate/fold-specific-minmax-kind.f90
new file mode 100644
index 00000000000000..9d02d305684705
--- /dev/null
+++ b/flang/test/Evaluate/fold-specific-minmax-kind.f90
@@ -0,0 +1,35 @@
+! RUN: %python %S/test_folding.py %s %flang_fc1 -pedantic
+!
+! AMAX0/AMIN0 take INTEGER arguments (here explicitly KIND=8, which is an
+! f18 extension) and return default REAL. MAX1/MIN1 take REAL arguments
+! (here explicitly KIND=8) and return default INTEGER.
+
+module specific_extremums_kind_mismatch
+ !WARN: portability: Argument types do not match specific intrinsic 'amax0' requirements; using 'max' generic instead and converting the result to REAL(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ real(4), parameter :: result_amax0 = amax0(1_8, 2_8)
+ real(4), parameter :: expected_amax0 = 2.0_4
+ logical, parameter :: test_amax0 = result_amax0 .EQ. expected_amax0
+ !WARN: portability: Argument types do not match specific intrinsic 'amax0' requirements; using 'max' generic instead and converting the result to REAL(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ logical, parameter :: test_amax0_kind = kind(amax0(1_8, 2_8)) .EQ. kind(expected_amax0)
+
+ !WARN: portability: Argument types do not match specific intrinsic 'amin0' requirements; using 'min' generic instead and converting the result to REAL(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ real(4), parameter :: result_amin0 = amin0(1_8, 2_8)
+ real(4), parameter :: expected_amin0 = 1.0_4
+ logical, parameter :: test_amin0 = result_amin0 .EQ. expected_amin0
+ !WARN: portability: Argument types do not match specific intrinsic 'amin0' requirements; using 'min' generic instead and converting the result to REAL(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ logical, parameter :: test_amin0_kind = kind(amin0(1_8, 2_8)) .EQ. kind(expected_amin0)
+
+ !WARN: portability: Argument types do not match specific intrinsic 'max1' requirements; using 'max' generic instead and converting the result to INTEGER(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ integer(4), parameter :: result_max1 = max1(1.0_8, 2.0_8)
+ integer(4), parameter :: expected_max1 = 2_4
+ logical, parameter :: test_max1 = result_max1 .EQ. expected_max1
+ !WARN: portability: Argument types do not match specific intrinsic 'max1' requirements; using 'max' generic instead and converting the result to INTEGER(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ logical, parameter :: test_max1_kind = kind(max1(1.0_8, 2.0_8)) .EQ. kind(expected_max1)
+
+ !WARN: portability: Argument types do not match specific intrinsic 'min1' requirements; using 'min' generic instead and converting the result to INTEGER(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ integer(4), parameter :: result_min1 = min1(1.0_8, 2.0_8)
+ integer(4), parameter :: expected_min1 = 1_4
+ logical, parameter :: test_min1 = result_min1 .EQ. expected_min1
+ !WARN: portability: Argument types do not match specific intrinsic 'min1' requirements; using 'min' generic instead and converting the result to INTEGER(4) if needed [-Wuse-generic-intrinsic-when-specific-doesnt-match]
+ logical, parameter :: test_min1_kind = kind(min1(1.0_8, 2.0_8)) .EQ. kind(expected_min1)
+end module
diff --git a/flang/test/HLFIR/fold-nested-convert-kind.f90 b/flang/test/HLFIR/fold-nested-convert-kind.f90
new file mode 100644
index 00000000000000..088d38b82300c3
--- /dev/null
+++ b/flang/test/HLFIR/fold-nested-convert-kind.f90
@@ -0,0 +1,14 @@
+! RUN: bbc -emit-hlfir %s -o - | FileCheck %s
+!
+! Test for folding of nested integer kind conversions of a
+! non-constant operand, e.g. INT(INT(x,KIND=4),KIND=2).
+
+subroutine double_convert_kind_mismatch(x)
+ integer(8), intent(in) :: x
+ print *, int(int(x, kind=4), kind=2)
+end subroutine
+! CHECK-LABEL: func.func @_QPdouble_convert_kind_mismatch(
+! CHECK: %[[X:.*]] = fir.load %{{.*}} : !fir.ref<i64>
+! CHECK: %[[T1:.*]] = fir.convert %[[X]] : (i64) -> i32
+! CHECK: %[[T2:.*]] = fir.convert %[[T1]] : (i32) -> i16
+! CHECK: fir.call @_FortranAioOutputInteger16(%{{.*}}, %[[T2]])
>From 12a24de91d813b57b2dac3f372f5dc91acf140ab Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Thu, 1 Oct 2026 21:36:57 +0200
Subject: [PATCH 12/13] Stray space change noise Leftover dead code
Stray space change noise Leftover dead code
flangast experiments
clang-format
Stray space change noise
Leftover dead code
clang-format
Post-merge fixes
clang-format
---
flang/include/flang/Evaluate/ExprNodes.td | 45 +
flang/include/flang/Evaluate/expr.h | 33 +
flang/lib/Lower/IO.cpp | 3 +-
polymorphism-benchmark/.ninja_deps | Bin 0 -> 59844 bytes
polymorphism-benchmark/.ninja_log | 41 +
polymorphism-benchmark/CMakeCache.txt | 579 ++++++
.../CMakeFiles/3.28.3/CMakeCXXCompiler.cmake | 85 +
.../3.28.3/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 15992 bytes
.../CMakeFiles/3.28.3/CMakeSystem.cmake | 15 +
.../CompilerIdCXX/CMakeCXXCompilerId.cpp | 925 +++++++++
.../CMakeFiles/3.28.3/CompilerIdCXX/a.out | Bin 0 -> 16096 bytes
.../CMakeFiles/CMakeConfigureLog.yaml | 1825 +++++++++++++++++
polymorphism-benchmark/CMakeFiles/Makefile2 | 197 ++
.../PolymorphismBM.dir/Common.cpp.o | Bin 0 -> 8632 bytes
.../PolymorphismBM.dir/DependInfo.cmake | 23 +
.../PolymorphismBM.dir/PolymorphismBM.cpp.o | Bin 0 -> 101472 bytes
.../CMakeFiles/PolymorphismBM.dir/build.make | 111 +
.../PolymorphismBM.dir/cmake_clean.cmake | 11 +
.../PolymorphismBM.dir/compiler_depend.make | 2 +
.../PolymorphismBM.dir/compiler_depend.ts | 2 +
.../CMakeFiles/PolymorphismBM.dir/depend.make | 2 +
.../CMakeFiles/PolymorphismBM.dir/flags.make | 10 +
.../CMakeFiles/PolymorphismBM.dir/link.txt | 1 +
.../CMakeFiles/PolymorphismBM.dir/main.cpp.o | Bin 0 -> 22376 bytes
.../PolymorphismBM.dir/progress.make | 3 +
.../Classof.cpp.o | Bin 0 -> 27152 bytes
.../Classof.cpp.o | Bin 0 -> 24744 bytes
.../PolymorphismBM_MLIR_0.dir/MLIR.cpp.o | Bin 0 -> 187856 bytes
.../PolymorphismBM_MLIR_1.dir/MLIR.cpp.o | Bin 0 -> 174216 bytes
.../Variant.cpp.o | Bin 0 -> 33776 bytes
.../Variant.cpp.o | Bin 0 -> 31272 bytes
.../Virtual.cpp.o | Bin 0 -> 45160 bytes
.../Virtual.cpp.o | Bin 0 -> 44832 bytes
.../CMakeFiles/TargetDirectories.txt | 17 +
.../CMakeFiles/cmake.check_cache | 1 +
.../CMakeFiles/progress.marks | 1 +
polymorphism-benchmark/CMakeFiles/rules.ninja | 182 ++
polymorphism-benchmark/CMakeLists.txt | 37 +
polymorphism-benchmark/Classof.cpp | 266 +++
polymorphism-benchmark/Common.cpp | 51 +
polymorphism-benchmark/Common.h | 143 ++
polymorphism-benchmark/MLIR.cpp | 575 ++++++
polymorphism-benchmark/Makefile | 209 ++
polymorphism-benchmark/PolymorphismBM | Bin 0 -> 831216 bytes
polymorphism-benchmark/Variant.cpp | 210 ++
polymorphism-benchmark/Virtual.cpp | 136 ++
polymorphism-benchmark/build.ninja | 663 ++++++
polymorphism-benchmark/cmake_install.cmake | 54 +
polymorphism-benchmark/main.cpp | 72 +
.../CMakeDirectoryInformation.cmake | 16 +
.../benchmark/CMakeFiles/progress.marks | 1 +
.../third-party/benchmark/Makefile | 140 ++
.../third-party/benchmark/benchmark.pc | 12 +
.../benchmark/benchmarkConfig.cmake | 19 +
.../benchmark/benchmarkConfigVersion.cmake | 65 +
.../benchmark/benchmarkTargets.cmake | 84 +
.../third-party/benchmark/benchmark_main.pc | 7 +
.../third-party/benchmark/cmake_install.cmake | 49 +
.../CMakeDirectoryInformation.cmake | 16 +
.../CMakeFiles/benchmark.dir/DependInfo.cmake | 41 +
.../CMakeFiles/benchmark.dir/benchmark.cc.o | Bin 0 -> 157704 bytes
.../benchmark.dir/benchmark_api_internal.cc.o | Bin 0 -> 20608 bytes
.../benchmark.dir/benchmark_name.cc.o | Bin 0 -> 6000 bytes
.../benchmark.dir/benchmark_register.cc.o | Bin 0 -> 351432 bytes
.../benchmark.dir/benchmark_runner.cc.o | Bin 0 -> 82952 bytes
.../src/CMakeFiles/benchmark.dir/build.make | 399 ++++
.../src/CMakeFiles/benchmark.dir/check.cc.o | Bin 0 -> 1704 bytes
.../benchmark.dir/cmake_clean.cmake | 47 +
.../benchmark.dir/cmake_clean_target.cmake | 3 +
.../CMakeFiles/benchmark.dir/colorprint.cc.o | Bin 0 -> 10280 bytes
.../benchmark.dir/commandlineflags.cc.o | Bin 0 -> 40584 bytes
.../benchmark.dir/compiler_depend.make | 2 +
.../benchmark.dir/compiler_depend.ts | 2 +
.../CMakeFiles/benchmark.dir/complexity.cc.o | Bin 0 -> 52792 bytes
.../benchmark.dir/console_reporter.cc.o | Bin 0 -> 24728 bytes
.../src/CMakeFiles/benchmark.dir/counter.cc.o | Bin 0 -> 9976 bytes
.../benchmark.dir/csv_reporter.cc.o | Bin 0 -> 25904 bytes
.../src/CMakeFiles/benchmark.dir/depend.make | 2 +
.../src/CMakeFiles/benchmark.dir/flags.make | 12 +
.../benchmark.dir/json_reporter.cc.o | Bin 0 -> 55616 bytes
.../src/CMakeFiles/benchmark.dir/link.txt | 2 +
.../benchmark.dir/perf_counters.cc.o | Bin 0 -> 8888 bytes
.../CMakeFiles/benchmark.dir/progress.make | 21 +
.../CMakeFiles/benchmark.dir/reporter.cc.o | Bin 0 -> 14312 bytes
.../CMakeFiles/benchmark.dir/statistics.cc.o | Bin 0 -> 57064 bytes
.../CMakeFiles/benchmark.dir/string_util.cc.o | Bin 0 -> 19536 bytes
.../src/CMakeFiles/benchmark.dir/sysinfo.cc.o | Bin 0 -> 57504 bytes
.../src/CMakeFiles/benchmark.dir/timers.cc.o | Bin 0 -> 6616 bytes
.../benchmark_main.dir/DependInfo.cmake | 23 +
.../CMakeFiles/benchmark_main.dir/build.make | 111 +
.../benchmark_main.dir/cmake_clean.cmake | 11 +
.../cmake_clean_target.cmake | 3 +
.../benchmark_main.dir/compiler_depend.make | 2 +
.../benchmark_main.dir/compiler_depend.ts | 2 +
.../CMakeFiles/benchmark_main.dir/depend.make | 2 +
.../CMakeFiles/benchmark_main.dir/flags.make | 10 +
.../CMakeFiles/benchmark_main.dir/link.txt | 2 +
.../benchmark_main.dir/progress.make | 3 +
.../benchmark/src/CMakeFiles/progress.marks | 1 +
.../third-party/benchmark/src/Makefile | 710 +++++++
.../benchmark/src/cmake_install.cmake | 44 +
.../third-party/benchmark/src/libbenchmark.a | Bin 0 -> 1058386 bytes
102 files changed, 8393 insertions(+), 1 deletion(-)
create mode 100644 flang/include/flang/Evaluate/ExprNodes.td
create mode 100644 flang/include/flang/Evaluate/expr.h
create mode 100644 polymorphism-benchmark/.ninja_deps
create mode 100644 polymorphism-benchmark/.ninja_log
create mode 100644 polymorphism-benchmark/CMakeCache.txt
create mode 100644 polymorphism-benchmark/CMakeFiles/3.28.3/CMakeCXXCompiler.cmake
create mode 100644 polymorphism-benchmark/CMakeFiles/3.28.3/CMakeDetermineCompilerABI_CXX.bin
create mode 100644 polymorphism-benchmark/CMakeFiles/3.28.3/CMakeSystem.cmake
create mode 100644 polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
create mode 100644 polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/a.out
create mode 100644 polymorphism-benchmark/CMakeFiles/CMakeConfigureLog.yaml
create mode 100644 polymorphism-benchmark/CMakeFiles/Makefile2
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/Common.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/DependInfo.cmake
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/build.make
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/cmake_clean.cmake
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.make
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.ts
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/depend.make
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/flags.make
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/link.txt
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/main.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/progress.make
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o
create mode 100644 polymorphism-benchmark/CMakeFiles/TargetDirectories.txt
create mode 100644 polymorphism-benchmark/CMakeFiles/cmake.check_cache
create mode 100644 polymorphism-benchmark/CMakeFiles/progress.marks
create mode 100644 polymorphism-benchmark/CMakeFiles/rules.ninja
create mode 100644 polymorphism-benchmark/CMakeLists.txt
create mode 100644 polymorphism-benchmark/Classof.cpp
create mode 100644 polymorphism-benchmark/Common.cpp
create mode 100644 polymorphism-benchmark/Common.h
create mode 100644 polymorphism-benchmark/MLIR.cpp
create mode 100644 polymorphism-benchmark/Makefile
create mode 100644 polymorphism-benchmark/PolymorphismBM
create mode 100644 polymorphism-benchmark/Variant.cpp
create mode 100644 polymorphism-benchmark/Virtual.cpp
create mode 100644 polymorphism-benchmark/build.ninja
create mode 100644 polymorphism-benchmark/cmake_install.cmake
create mode 100644 polymorphism-benchmark/main.cpp
create mode 100644 polymorphism-benchmark/third-party/benchmark/CMakeFiles/CMakeDirectoryInformation.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/CMakeFiles/progress.marks
create mode 100644 polymorphism-benchmark/third-party/benchmark/Makefile
create mode 100644 polymorphism-benchmark/third-party/benchmark/benchmark.pc
create mode 100644 polymorphism-benchmark/third-party/benchmark/benchmarkConfig.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/benchmarkConfigVersion.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/benchmarkTargets.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/benchmark_main.pc
create mode 100644 polymorphism-benchmark/third-party/benchmark/cmake_install.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/CMakeDirectoryInformation.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/DependInfo.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean_target.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/depend.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/link.txt
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/progress.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/flags.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/link.txt
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/progress.make
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/progress.marks
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/Makefile
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/cmake_install.cmake
create mode 100644 polymorphism-benchmark/third-party/benchmark/src/libbenchmark.a
diff --git a/flang/include/flang/Evaluate/ExprNodes.td b/flang/include/flang/Evaluate/ExprNodes.td
new file mode 100644
index 00000000000000..95c9cdcec2ea8a
--- /dev/null
+++ b/flang/include/flang/Evaluate/ExprNodes.td
@@ -0,0 +1,45 @@
+class HasProperties;
+class ASTNode : HasProperties;
+class AttrSubject;
+
+class EvaluateClass<ExprNode base, bit abstract = 0> : ASTNode, AttrSubject {
+ ExprNode Base = base;
+ bit Abstract = abstract;
+}
+
+def BaseNode : EvaluateClass<?, 1>;
+
+def ExprNode : EvaluateClass<BaseNode, 1>;
+
+def ConstantNode : EvaluateClass<ExprNode>;
+def ArrayConstructorNode : EvaluateClass<ExprNode>;
+def FunctionRefNode : EvaluateClass<ExprNode>;
+def DesignatorNode : EvaluateClass<ExprNode>;
+
+// Operations
+def OperationNode : EvaluateClass<ExprNode, 1>;
+def ConvertNode : EvaluateClass<OperationNode>;
+def ParenthesesNode : EvaluateClass<OperationNode>;
+def NegateNode : EvaluateClass<OperationNode>;
+def ComplexComponentNode : EvaluateClass<OperationNode>;
+def NotNode : EvaluateClass<OperationNode>;
+def SetLengthNode : EvaluateClass<OperationNode>;
+def AddNode : EvaluateClass<OperationNode>;
+def SubtractNode : EvaluateClass<OperationNode>;
+def MultiplyNode : EvaluateClass<OperationNode>;
+def DivideNode : EvaluateClass<OperationNode>;
+def PowerNode : EvaluateClass<OperationNode>;
+def RealToIntPowerNode : EvaluateClass<OperationNode>;
+def ExtremumNode : EvaluateClass<OperationNode>;
+def ComplexConstructorNode : EvaluateClass<OperationNode>;
+def ConcatNode : EvaluateClass<OperationNode>;
+def LogicalOperationNode : EvaluateClass<OperationNode>;
+def RelationalNode : EvaluateClass<OperationNode>;
+
+
+// Other
+def ImpliedDoIndexNode : EvaluateClass<BaseNode>;
+def TypeParamInquiriesNode : EvaluateClass<BaseNode>;
+def DescriptorInquiryNode : EvaluateClass<BaseNode>;
+def RankOneBoundElementNode : EvaluateClass<BaseNode>;
+def ActualArgumentNode : EvaluateClass<BaseNode>; // Expr, ActualArgument, ConditionalArg
diff --git a/flang/include/flang/Evaluate/expr.h b/flang/include/flang/Evaluate/expr.h
new file mode 100644
index 00000000000000..bbcd8739ea2796
--- /dev/null
+++ b/flang/include/flang/Evaluate/expr.h
@@ -0,0 +1,33 @@
+//===-- include/flang/Evaluate/expr.h ---------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef FORTRAN_EVALUATE_EXPR_H_
+#define FORTRAN_EVALUATE_EXPR_H_
+
+#include "common.h"
+#include "constant.h"
+#include "expression.h"
+#include "formatting.h"
+#include "type.h"
+#include "variable.h"
+#include "flang/Common/idioms.h"
+#include "flang/Common/indirection.h"
+#include "flang/Common/template.h"
+#include "flang/Parser/char-block.h"
+#include "flang/Support/Fortran.h"
+#include <algorithm>
+#include <tuple>
+#include <type_traits>
+#include <variant>
+
+namespace Fortran::evaluate::expr {
+
+class ActualArgument {};
+
+} // namespace Fortran::evaluate::expr
+#endif // FORTRAN_EVALUATE_EXPRESSION_H_
diff --git a/flang/lib/Lower/IO.cpp b/flang/lib/Lower/IO.cpp
index 5636f9e25b9909..41aa22b62ff27d 100644
--- a/flang/lib/Lower/IO.cpp
+++ b/flang/lib/Lower/IO.cpp
@@ -860,6 +860,7 @@ matchContiguousImpliedDo(const ImpliedDo &impliedDo, bool isInput) {
auto toSubscript = [](const Fortran::lower::SomeExpr &expr) {
return Fortran::evaluate::ConvertToType<
Fortran::evaluate::SubscriptInteger>(
+ Fortran::evaluate::SubscriptIntegerKind,
Fortran::evaluate::Expr<Fortran::evaluate::SomeInteger>{
DEREF(Fortran::evaluate::UnwrapExpr<
Fortran::evaluate::Expr<Fortran::evaluate::SomeInteger>>(
@@ -879,7 +880,7 @@ matchContiguousImpliedDo(const ImpliedDo &impliedDo, bool isInput) {
Fortran::evaluate::AsGenericExpr(Fortran::evaluate::ExtentExpr{lowerSub});
Fortran::lower::SomeExpr loopStepValue = Fortran::evaluate::AsGenericExpr(
stepSub ? Fortran::evaluate::ExtentExpr{*stepSub}
- : Fortran::evaluate::ExtentExpr{1});
+ : Fortran::evaluate::MakeExtentExpr(1));
Fortran::evaluate::Expr<Fortran::evaluate::SubscriptInteger> loopSubExpr =
toSubscript(Fortran::evaluate::AsGenericExpr(*loopSym).value());
diff --git a/polymorphism-benchmark/.ninja_deps b/polymorphism-benchmark/.ninja_deps
new file mode 100644
index 0000000000000000000000000000000000000000..683d4d57e3cda2d967ca2d1755e7d7a86bd3ce51
GIT binary patch
literal 59844
zcmeI*1)Nm%-Z1dFCMpJ47*{bUVRr!)u~9MT5)^A)mVsT_VuP}~y9-4{kr2i1R_yM4
z9=p5i{r+d>EW^g^EcZUo^?l#<<Ci%*=l?tB%sKy_Gc%jCFDouPs9<coqH4uuVzF3X
zs*8#%$L3TNR8~*T8xt=pEGjLioRC*lS(vxWpn?hU-HJ=%Rf|^SjxDatD=dl^PRK1R
z%q<uHm;btX%+1Yfd{a?`bbm_U-eX=(Rb^grSz$@d*mz!5_1MCkipu!d__*AnSnLmJ
zI%l`dqTd_ZUSZd+c|A7ID=aOjwz=4E(sZx8&s3T*#nn}LmGOx+#g*}@{G#%z>iF1j
z48Mxmu5Qef-o5gBZIM$_TvjtBXM9;rUiwBX7nYZeD;^)hW4|;zzPu{m>n|>gSA`Ay
zEPnmE`yUrCsIGCG68vQSrj4!7sV**!_u3+C=SS(bsGF|d>qwl1$>o(}tBR+^6UYBU
z_HkinwQ=8zt9P#J?XPNTRbHW2n|P_Q at 3P-lNqO1$oU!FKV at e$6w^{8gT&Jq)nlZ_J
zebc;{oNyMu7SqhUP*Ib1F~1TY%E)4QK9zMUs;W!!!aw<oGS8O{9phqIt)e2odTK>H
zzq+zO{tXxGiwygSPpQtUlRWmh^zG^%Qz$Ps_L+4}zurWiDJdRPm{Sy2r&Q)tRjWn9
zv3%Ol at z=`(iTH3>iR1r7OqTgH5hI at _;y!N1zM?|$QTF=^XC!A*ys)~wGPmeMaeeBZ
zvxZ-n^HQ2qRa`nYXKcK%#Hoq$-v`+r at 3@lkg6c9S^nEeCv)gYnCa18xw6r{g#@=gA
zY;{h2Qb9>hX}r3qTrK$D%{bPIoRaeKV{(iBt64GQ3aaFocg2LZXtDCq at Ocf_qp+Z)
zq)MhMsgUW$)sz)h7nhfX%<zuwWSNI*w-e6M+v2j!@3nC`Wd)U$<r?5*tgTU=FG
zP*z at 6>^0;Ty(zA9-PfI7&b5pA1<8u*4QcDO2iD7IiDP)(`r16=$-MD}g?aVPp++&S
z%}q78vDdOc{>kc_aU})g6J_t!=EbQWs%t{vE9u7?9Z$VuT~t5hm6SVQYCEwni_P*{
zCF+U1{QR`&SnMV7*|kr#Ra5N6<{odMT~0_GZtR66iY*=+qMvVWY-ov-yNx}!B(asr
z;Ah2VS&rnu;<D--)HctEtCvUPWn+sA5>-*`Y3rLl_lfIX8}(H7$C8ZEe+qf*$?W6C
zOs$SrO)jWNl%pra)s~~od9x<G>YU=S at v`dT>Zzh1&+7GszE4%WM4J+J_*hmkiE~mL
zv at rW)OqPMF;_+4S>cqu;RBSWLPg-;=_K5gCb?dB5Ww)xjvZm0!Wle2M;v7HxFKnZ#
zB3>9a@{nz0nU|91t!Hl0gJQDH*NF?1XuNZa9uSvho~WoUs?-}=RCnAjHrw-^2+gS~
zDlihtNp0f3?Bmn-ol{U*7`k$?d$W%(s4g!pF3g`SN9&B%lvT&|dF~OP<!et}>C&3&
z_>{zTzPs76m6Jow8G`Q;TdywB at M{SY+rG0o+YYT{&X}rr>ZIJ!?AS!NDzV?&#b%rD
zqSpB~F`es{nZ??9nOa9C?BG^u8yhPmYXL)rf|Bv&V+yLmNbQ!U(kD7d at hOGzibQ>L
zb3 at 0Uek{qPdQ^)BFgIn`M;Kd_)s)67<(z0Va-;N_U$56tQBW*<#TH0gZycLCo=^l*
z8;#wNAzk9Ul$K8l=i~aO_FYq5T#~G=WAml0m$%c;MHrS9D+WqNWqvr}iBVUg?{i)A
zW5bn5#Lg3&@fsTnhU=A|oHr?&n<4$!_?VjUc?DHf at ye(h9GjCNeQh3!UYBz=yQ%aQ
z)p`cCL(SN=(l>T}lgE?z*Op_kS<==kFX`tvIqhTGV{CqTMdI|tt`SqO>@SLmU2T2)
zM#@u3aj6k;EH*R4F;-Xh$Qxf!T3V1>U07&4S4ms1U5N6aw4u!@E-1;5#v1t{4|#Q0
zifin(g?)_C6^SnjOYH56CS$4#YIl at 6z8PW~%P(O+ at e<iobv?dP1M4MS-c<T26^o_6
ztchbPQVuJ}$IFci74zglO&62toR!4K>yK5&>%Nvtn}{ndA6q=GSY}8&d0~&2h|6>i
zD#}Zy<`=~)UHy1Se{mD9DUselrY2rlnFx>%E^1;QmBsPWg0iywY4Per*11sn#`0ld
za%>j6AVV6HjXDdZvGb*AEWa0*SH;fDunp_SO&%MIohwaaWinOfD~rp<OPgDCPE%=1
z<E7=5Qxj>=ZYphsSCN{;IV;0)7EUhIuZhLZl%`$XvYS|!TXcqXwe at k9W7vYq<b3Pt
zV(XQ~hWn+dy~SdurSC6uUqA5@^Cl~0sqxjR&5bP`6UM)Z;n^u-v+WaxQ)>*H79ES7
z+}wTV=kL~U;I4`K_$0CQ%5B5vDfyaHktb#!mpH#YQ+?+X#5L!-=%&Yx7t>guptgG=
z4;?36#ynq}IJf9nX&b9Q66K>dZNAnnx9Aw@>z$`XZIJ2fDN_o at 6st#ztMhAPbBm4^
z*I1npPH1u2xbmZ#I+mh>s-pbFurzVaj+DN!`k^d7Id+8g_0Dnnu^JP5TO<82V~00&
z457HDHTs81pYdELXIT<;#-Y+Soxjr$&~h?9 at p=yt-`F_}Q!D0zVh2l8 at 0_G<W198#
z&Pl`hyf$iTru`O%s~3w+k)~e#l~|WsG}*e0=SXFp=tg>#lQN_Yed^?3EZI at 5k+xo5
ztoK^d&*yl<(A=VGam~99Ax^;^S5Q-8v`{6!-Z at T<GQ)+cw7%ZCsM2ZG#!R#>%k!U#
zh{Y<zWH}F<tea9J&cp@`C at Kp|6Zxk+`+XNy)Z~~N$t@~t=(U7N3tKGBetW5iSgfRZ
zF^K{51TnSkUpDPgG`HeqA0)PqIx&km^u^9yaX8}2<g7|@_Q&j;9aI`-%!<S;$u-N*
z7oR_-W?X)CL1 at 9pXTP0P4$Rk{nq at 65F3TA^wXDF at MY#CmY^Qm7KAQIM?xzjJ#W#Ho
z5_5REQ(;m%F>8}}(|D}ddU-y*SSD+l{KAqjUQ3R33dJ;5*SWm*5sQtHCS$#loEJ&F
zM^zwg^IpFLOp8BIe8zTCgJb?7ypqKJ@}<xCnp2%z4P_XjhD#JXps9VN+SYO9m4)HN
z?%!1UFiwvKXZEmPru6d6<bukvd1H#pylI)Z2>VK(@%&cC$4#zGP7v?YRNCUQN#zql
ztr3fj&U74!`wj}q#>evu3Ja5S)_Z5zcIamqgL>PuGQXs_s(P=cwr#q?luR-UIhs)!
z(kI%Ra7okJ`;i&aC;Cf?Jg_KW&!*C+-r`PHS-C|cq;IT`mpthFNyYj$!==lZzoP4I
zd>*<@;lvMX`dC82O6(wv6^CZnM>sdB<1s5UNsdXr**HW at W92rC{fgZjGgzAX?PFM%
zTQtbJrt6u+nNHT%`T64vwGyL`fnu93<Mm>DZIK$g3}|kA@}kuaBKnJOR-Ip1UOu5X
zo?l#ETS^lzq at V3H-LFZ!j>H+2 at e>XF9?gu4#v;3mtCyGR^`jQ;FXW}&ni&(uFT09q
zG;f%1D3dq(N>eXyB-Z5??UMaIQxUP)&gn7rUQ^VWNZh%U7X|H<RZKxuX>CL-)<;Zj
zzHM|rVsgy?gjwOV*d4{z=G*LJb5c{?u^rO)9lfM_+eyp!UZ{!NM5D94*o<|281IA<
z?)q&fZM}Sw-i|L;x2izY_1iWTlbln at clTC#jb<(6t!>0Knos0-9r4)KO>MVEPa?fR
zb}YTc)GJr%$G><?zB!acJGfPb<EgHxFzSlMdNp-Cb^18r>})Bf(Yk)Bp=oJ;;!15H
zT_5|%+=oqnA;}Buvgr$!C2oY;Jk!3a$0kSW_R%wAx-c!LZz^36=`!|*)Q!o+$$8Q4
z(r3(P$-HAEm|K+B)V5RSa$G at SJiNGE>D$*mKdIAUel0OT&5>sPx at nT@LY9klv%a?c
zW-dd?sGQpAvRGHKwdJ?b*!1g at IHqXG8{15L#(Y_OE^FU)NgQ*RCERaunfgvi>nuKF
zd0zZHCkk{YF&VG>qU)GQ-%<LE*FDt_4!NX*wBZ^wde3ZhZWrB<8=q29p6ESqDmI+M
zMq|URyW!1%$}&Bo(t^UukkewZO;X2~G0rVqA??P}wzrSP%3<oV%D9OPzfq<%$t1D%
zseLxIokT6I9~%l!I42uQd&<(WBkVTTeZ-c7NB{atyMI_-ilteGWm%5pX~hbx$V#+k
zWmaKTR-+AVS)DalleJiz(Dtswx~xYiGyh}*Hl#fpu`!zv>aPxTq!Zy<cVRQS67ot8
zx#SV at TMv4&IpLaZNiVh{T>q`vhHVMuYI}BINBXc6JF^RY*_GYcojvGBe+Dp+K at 4UH
zLm9?!MzAL%8O2`g&1m*vU-n~v4j`WcDPRnRj3w0np-wa;jmajlVh&;gC6rQz?oF(M
ziJ0<_c{?svO%0Qn%oL_Fje|LaLphAYIf5fOilaG(V>yoFIe`;7iIX{nQ#p;(IfFAf
zi?cb0b2*Rmxqu6~h>N*|OPS7PT+R%x;7YDyCRcL}v$&So%waC`xQ_W;&kZc#MsDI}
zZsAsL<96=gPVVAv?%`hU<9;6CK_22^9^p|I@)(cv1W)o5PxB1V@*L0e0x$9sFY^ko
z@*1!625<5fZ}SfCGLXh^>TmS(0kySOzFC=g>VpCsDBoMyUdH;TUZgT9Zo5oz_3O&o
zt%SO4eeu1;C+eUq-&0b3Cfc3##I7I3M*9gPk<|Ki)3+V1Z at 532jLJ#eGM3o(I?awP
zi6?HBbv*6FZd&)aQuTAVHKek*x+s*zwWaIaNV?Q0CwVW4BU($^Zkf{7Za6W;A6qk<
zZM!i%%n`03ZTC#ut|==v*Haqal+GWkQ4q6wQ^ynL6Z9M_bko8KZ7Y4qUk$Z2iF at qF
zm(-YQiOx>Axh2sqw#jg8iMaTbc%k?EllQ|ULSn0lY2V1clCz20pr(#LHSHLUZB~)K
zHlId$DZML|O0TOjVO(WAzUb~8?OulCDNNoP5^F6 at y}X=U7fxSnCF>i at Q;Vipw71e_
z%qMbs?I_=tSCGE3JXlj^&Nc34H~o|f$Iz;&Z7&v(TeN(JZ71?~m=LNiNPJdgIcYQI
z!P>O>ZVf0d4EJ*`o8fqpb7sZk!+k5V;J9$F+%nQ<yoT|za4`AN{UnBjV^UL)v86NY
zEAd*&%H5V%R8TfHeDX!VNczUkYa+e7mfWvY916!jq-`v}CO_NY<V%zB{DktRoYqc5
znwS0S&nELiNq+R<3A^|+oAhHA1^gj>#@Coi8am*=OWW9Mbf<nn=xh9zA&pN=cmpXO
z`&F8H<s?-OLoWTLsbfmiOA4s-{&O~IZ8TiZpQLS~T<OkxTdp`6 at T2sNz24+hLoD`#
zG>z4Xwe^2x!DO?<<&_0yqQgC54(5AtjnxH-IP=is-L3dtQ^zd7OjPS8-cWb`zildg
z^48bd^xsIIIZq~Tl?~}@$CzI?wU5+$7m97-u)fNWK9uorD_)ITgxru9E>rBwW*k$p
z%FZqNBEvq$MDIrw)Kr(JUis%4_OYlfOHC-H8nVyCG?s6 at Sr_}%`ix~M<lDqMp|RK}
znT|KSZxPZa@?tXJW9b{qi>cc!V;^O+&B}O5bPwQ%(qCdc_+QTXllhm93gf~5w!9SY
z at jf50CaqY36<LYatjsE`%37>VJHnVG<f#w&h>z*VaxBkkw4px(Xv^vhWDtWH!cc}W
zoDuBFNJg<2do!9(_>@_E#^-!N7~_Po&s at gSfsS+{T&ML2*Ru<o(UorGkV_st=*i}U
za=s<K*ox2&ZOt}p%XVzf4(v!Dc4B9Cp)b3#8 at m(A|CfBl*L=gbe8=}Z!Vg4aqsJ^i
z%GF%QVa()54&^77<!653SAJtQb0}dtmvK42^9R at PCl9lbzli<A|18DQEW@%KWYq*p
zDWjYUDygEH8YVHBDeS{?Vwa~CE3hIf(VCT6g;iONlcYbHQ#h5=IGr;%le0LRb2yjt
zIG+o+kc+sOHnug@<G~!l5w!K(>a4+<ti{?~YTc0>#nBwYu^h+ooWKmO;9BM}pX<4S
z1>DF at +{`W9%5B`v9o)%X+|51Q%YEF>13bt>gh`ooc*F7 at EW!A&u)L(avcfxX)v2-J
z2g-VP+sZgLTr5iYZ)Qx9?Y}3cy~l>e2;n_D^Wd at n&YULkhWvj?vwq#}n9A~=Vxo<B
zxAFCf0mM7jZ&x?Iv2kPAYE{1BQFY?J*sz1Qn;XA)c<il)j!#?d6eN!SP3yPF?)bbV
zSv<v!+lc}58{&Fr7Z)#^R9snJR_e1;$uZUI+3!=6JT5V_5U%NK+3$0FyxM{4-aF*P
z>wGo)eWqdy%iSzo^oqEUUl+?q4PU?7v-)!O`%1>7?w@?AxpD6D3m4->akbZ?-mygk
z%;ful?x{0Ws0=qFB+knVVmDnTcEq~M`E47VmS}s|v%HkoyuQbOvYh4RX~hbx$V#+k
zWmaKTR-+9SyiI5W!gVVqs;@)cpI&FL>F at OjWvn9;X{ZkG;`z;p>he&ZP9xN*12}}x
z_8i9H3}G-wa3q=P)3vN$n|AbMb55k8`ajq6+tOG&u#I)y2<<@*d4zUh2X>?nJFzpN
zEe`F))?C1aL~X_;mP1=Goy)kK{<LKVS1_Cr?8z`jvO1%P+UkLp`!R^2?8V-UW+qn?
z+TB at P%WUQ_mw8;re6D9a9q2 at 7y3(B<ggRtPda)HDKZbg5d-}2~yRkc)asvzacePay
z+twpI%0eFFah~8wp5keq;aQ&Jd0yZ}UgBk5;Z<Jab>87!-ed!1VME%p5gQZw4_{ap
z`YBOA;(dR9z=wQ9-G0Syo(p|~&<FU&^0!2Nfv+qt%`&XPI;_h-*?<jc&qi#_ChWmJ
z?8|=a&jI9fAO(z}kg>!W#~ZxGCXQoMI?$0$bfycN(UorWm3E2x0Ljl67KU$;d0u at J
z%10CJe-sgWt~u$8TwCccH<rk8yzkD8?H|Sxxt5o*&peOsd5o^lnwDF!0xPl-ty!5>
zSe3O{n|4ej<oD>her!3Et>svr)o4Q~rvqq9D31df#9)Rnlwk~K1fl$fvKz{6dings
z-=8vz&-k2>*A8bIa~V$uI?{>GtjGFvVKchYjT~~xqX#|NoQBHo)}G&nZHdZpV|7 at _
z7rU|>yR#`@67urbd_&0N-|;<<@B>$J6_4>KS92YQF_RxTl%H6ZpZSGf`Hk7kp at ivN
z#^wCZA6&zqJj_D=B9zmX at x*_AJQ4ED64WJ?@$lZbnX6ElJd;h`kQVW@^r8G_tb3Au
z`{-kTv8Tke7qeLZFEvM4m3r^{Nohj4YbZ@}?rqU~-%n(7%*p$-6aBNtGwi>xNVmFN
z`DtqZ$%KjREzGbzpM4FtGR7XwkS1}zV_9|VkxXgA@!QVB(u8`a(eq*!R%g^lij!00
z4 at rN9zG!!4^zzkriHEwoN2=}~Z#&DeJgr!P6<LYaq}SO|J>0?bp^ooJCmO38)9d)U
z^<>B||I>Bl+xD?6MHF)o6A1NMDP at G~Qo%$jsiK-1CNY^QOeM4p2Qz>}2zBUTgmz;H
zgE at jDIf|n>hGRL7<2iv7If;`wg;P0=(>a4PIg7J7hjTfP^SOWvxrmFogiD!DR8RM}
z+?E+!!Ei>fC&L)Y>Wm_4D+XHb#~_B1-d at i1cW6VdVHVdin>oy79-)1i&-L8E0&e6c
zZsrzl<u-2T4({YG?&cou<v#A`0UqQb9_A4qWg(C8I8X2-Pw_O*@GQ^qJTLGfFYz+3
z at G7tII`8l<(cD#N`$GE`&0+m%`7i3WZSQ&NeLmnrKH_6O;Zr{2bH3n9zT#`X;ak4r
zdw$?Ye&T0-;a5UCyNvR=Ec;l_G?y0jccXr8`kYt#Jk!!)o2<b)tjj;yfDLKSMr_O`
z?7_b5$Nn5ZJ_l037z!CnoN>I#Tl93?o3jO5(u=L=&DLzgw(KeG60}vd_a@{QRD=%?
zChyZq&4WFtuG`LbGqy#IZb82L7vhWT_kQtPG`0Wm)negYNO#snUj%iZxJ|`1RHqku
zjforBt-n{g_3NgK)@zCGvHk>g{dUgptH;k9AL{z;EiWZz2ah2SEX#5%Pb*enMOLCU
zE3*o#vKnn at OQ<tK{#lc?Setf4`Ds1N;n*_etMD2-(2-7brVE?Vm2TvaOCH_nK~FX(
zoZBtw#a8rYYqnuq!nNO?9oUgR?8MIOLSJ at eH+CoF^M3Sa00SAsV1_W1VGL&kA<vFv
z6nn8ZqY34-x#i^`F%u}ElrqYxU?P=NQB4h#n9LMHoiN?wWn9kTOydjY66&nk9_G;4
z`1w)m!WjB7k5_XgS8*MO5zW~jYB|i?&-C~kCvh^Ta4M&9I%jYuXK^;?a4zR at J{NEy
z7jZF-&EJ1x-M2(_+E<n@<w%a=XpZ4nj^lVvU<Oxk4YRnGdCcc}#&ZJ;xRIN<nOnG(
z+qj)OxRblMn|rvI`?#M6c#wy9m`7O1U!;$L-t+gze8Q)E#^-#=*L=tK{J at X=#LxV~
zul&v*{7KXvL~T{nMm1L7 at 927ky0#BH5!K1>*j6zoatV*~1W)o5PxB1V@*L0e0x$9s
zFY^ko@)||F&bx&Aerb<y@)mD1kR_<&!|mwhZu3YRW#pFMon75pFY+#N-5p29HX+=+
zP!gY#`dXXVonmfNkM8U>9n$N<gF-#Ji{+(kCtTBhEXVS+Vg*)YC0esGtFS7o(T4sE
zpe?Ht&dneOGlZcGV>lz&laY*KFZO0MpAhoXETTO1h2^LYm}@!Y^$x5_M>^4&^;n-S
zY(`hsVr|;djT~~xBb>J$^kj3kU`u+j6}{P-ZP=FW*q$BOkv{Ci&g??n`gc>$eaTmZ
z{QADf517b at e8debpn@Bz<|b;G#Le8ot=z`#gfiUFykf|c%Th!!2Qh&XN-3k9N~)O5
z6sB at 8hj1u|aRf(l6i0Im$8sFUa{?!F5+`#Cr*ayna|UN}7H4w~=W-tBa{(7}5f^g_
zmolBpxSSbW!IfOaOs?h{u4OiJn8$U@=X&nsF7D<Y?&Uu2=K&t%As*%t9%Uhq at i<TL
zBv0`)&+shI at jNf^A}{eWukb3b5$cO~c$dFusDJ&nr@!G_zT<m-;75MqXMW*Ve&cuk
z;7_8uav#fe>&yS!`qI&RMWH_LOPFho>hgyA*HPbk53hYm>fNeIi`Th#WL0-A9(B8z
z5_RXUj&<PCA0+C|-7GKVnBHdDa9voQR;<8^tVC;8W))UtHQG=_F$Xb$y5)6E&#lM$
zbfkibMCG{Jat)K{!e*qG?P>l#m;oF at RK^dtJcPj<!I5Mt?`v7VHtp!i=A6h$oJ at Kh
zkn8VlIh`{&le38Gf^95!<6Lsc<2-g?NBXc6I}_^G^Vyng>W%)=wPglZFq{$W$uLH;
zI-`i{mVuW0F^Hk;#oml2z22GS?`xUO9Og2Q>zL2=jHd&g=uB6-(}OM8l3r{@Z?<E5
z`m!s#u{)b`0}Hs3o4A=<xRu+uojbUbyZF1-dG9;65BQLe_?S=ll+XB_FZhzL_?mC{
zmhbqUANY}<_?iD7>c~(phP=51^_?$e8y9_1XH{wnA$FVkE9Ak9{l&VG(%+g*UAcH%
z(Jf*^{?E9t)YpODENwSw8=NC3_Z`8BTkIzlR2GL at q?Lu#wi`;Hx_8xW<H at fYy)nbK
z6KPZTp at w_s!-V$&>DxDQEQw88cY`#~Y6o_AeSYq;U!on@!}3zr_463D)3f~D-1Z>U
z$Ds}z5Vl3A%R+q>@<FJdh7jtgP?x3GZJ}NZby|Aeb&bE%`<`q1do9+c9TN$4Q&cXa
zeq~3`bzw8wdp#SmF`<u9;<@Qu#^r=|B(yQ1{LUrxd7}C;8lOMv>88fx2T8Lm6DXyO
za-z1c!g3{5R8zwwCNqU_4_;{7ni|jNN)y_qo@~zPoWYr##o3(0zpIUE&RoD>_M1M=
ze%RlSu#oron7Z}mc+Yj96P*d|O%Fmj-;!QzMQ<{-HKFePn(z3YANY}<NUv{y_xB(C
z$v)KWho+C)FSY(ij^b#J;aHC2cursjp`E^#dCcc}ZeRg7auYXm3%7C`&29Vsx95zD
z9AhyjatV*~1W)o5PxB1V@*L0e0x$9sFY^ko@*1!6CU5aJ at 9-}D<@*6d^UzU0d7$S8
zF_>)c*9djY60|k-W_=62*LuA=GUUOG^?w7A^Tmbt^oBU at Zj;Wb3G)*}Er+ at _n)_MK
z^76D|1y*DwTC*~%uqvz3hN%CsrscI*n|4g3J0J29AuoqIDBSPc&trcE(3aH+=VuUu
z8NyJ8F`N<X$w)@A7ke|BhU&`_&qw{w*_P)pm){8GE6jt<^7t5!ay8-p<7+&IvKQ42
z9W5^;l(h*QNhxKN(^UQ0MVif+%oG|bs|R`hcut at vn=^w at Zf9~W^SF+~n9uc$rvshn
zOjo**LoRvrAmo!R>BUy`W@|zn9O~+*-rB+Pj`U$Cc4im)vMal>JDYL?3%HS+xS3nH
zmD^};{qcsFkNJd8`Hau`f-m`ssQpZDGvD at n5yed9U=HC>j^IR2;$%+YR8He`&frYW
z;%v_0T+ZWsF5p5g;$r??^-NT^g!(<IH`B-Fp`8lte0p0I+NZDihHv?f at A-ir`H7$T
zg<tudsGqc?a~Dg8ZLkLGurB{(12&{R8?iB)um}6HANz9v`5Z_AV<==SamMi`Z!wT1
zs2dNe^5M|MCVOq?x at _vkx{>1MiEHn%p?+_1xp&@*D`Imqq)C32g}NrS|Aw}c=o2sY
zofrAxH)(t;m42PL?dtBo-u=VrA50B5cI4N7l<`{eeVP^T$HS_8_^fKtHfGtz`gOPA
zv)kS(O#FbvHP&~oyFUGp3Vl|xa8lx)^sA-aB2(Ii&VvsW&J-8wv8K+S$^P(_L9wfv
zN<XotJbVXh^f7 at erN2uXI7}J)c;=~-LmN2U@>2HsG5uJM<!QwVtjJ2VW at T1kRaT=7
z{TV=8Rwv}=K at 4UHLm9?!MzAL%8O2`g&1gO$)PJ)`uLBSF_cZ1b)%$B&4((G^|F35`
zT)Qr8MpxEiZQ2peX%4yM(VZUjWOKr`+LB&uMQ^rd8 at 46n&F$HN9qGeP?949orEWX%
zrRTmP)FaE%oVsKm>6=@hq>slYivN(07~%RJ<Z%Kelu|}H6;x71H8o6PGE+E_lQ@}E
zIF-{loijL-vpAb`IG6J{p9{E<i at 2DhIGSTPmg6{{6S#y+Ig;sI#^uc53a;cTW^y&x
za4oZ$!#u9zFy?bTH?V*kxrv*(g<H9e+qr`~xr at 8GhkLn?`+0x|d5DL3ghyG(V?53i
zJjqi`<zNosP>x_v=l?m6&+`H=@)A$;3@`HvuQF2F(9a&lUhK_i_F-T4BitwQj<m%*
z%WD+zI`0zZxZn2p7yoKo`kPJs&L8|q)UMVYn=NTO8}$L+u<gE%JM;yXw)`e<QTJY$
za1YELo?n9YGVR^UFp7|`)P>z`tEq8B^d4tnq5LQ&%+v4hIKF?m^w3a$9$<MX+X=^i
zsmEnmj^$~^3arRVv}R>iVO3V64HF1u^GHf5!yzW#i(Jp+`gEj%i8NGZyLf&xqOv>K
z@^qrIbhzbd^k)D=XiG!o@*vM2&k3x>+O(r5n=^w at E{8LMJsHMGR%aAZnH^}kAA=am
zUhK_i(#!KKe_zXN<}jCeT*qO|=X%D|flhR$E8WN;mpr=DgDu#SUTj5gwq_f)WjnTK
z2X>?nJFzpn(3f4=josOl8(6 at N{7=;@jg{T^?ehaZ<Rd=j6F%iLKIaR*<SV}B8@}Z`
zzUK#i<WPR%XMW*V8Y}PnSl65~f0Fbka|)+&8mDsxXL1&2a}MWn9_Mob7jh97)7TtW
zbe~K5oKSjQvW(a at Sci4_CmXOK?b(Qp*@QjVm;KnE1IXt<3K&BnV~I14r75DA6S;)P
zd4eZ-il=#oXL*k2d4U&siI;hWS9y)sd6Tzzn|FAZaC}Qp--X|O at Y%{@KmL=f?=H`#
zzFRCx-O<dLa89O+Y45S2K5XhYn_`zr6UuBuX;Sm-CE;%D at Kv6npL<E_I2ua7=(`D`
zUxZ42Il;wZrl_m)|Dm2e^W<YfU45YCrR=xBV<=<GvK-6PiWOLqm1xb%tir0SMjQIk
zp8>RGbp|qs!3<$2!x+v8_GBcZ*o(ax&2%o~at>!2CCnwX-LpN+35%9zd0filbsi66
zCRcMMS8)wXTmP`fN9f3-EaWlXBdR~vw7eE;(~gOB=R-c?V?N<iKI3z~U_2e at L}%7x
zeY&t2UFk*+x#ZD<o@~w*Y)LP+qBmQ!4coFE+p_~Z(ubYcnO*41uI$F{Y|58>#n*hp
zw|vL<{J at VK%1`{vFZ{}H{LUZzNz}JF$npeADWjYUDygEH8YVHBDeS}Fy?(sZF&@cL
z9L+Ht%W)jf3C!RMu4Nwcxt<$Xz>VC*&D_GR+{W$P!JXX2-Q2^y+{gVqz=J%*|7Kl1
z<{#>B#<H}17g5ZKT*Bi#!IM12(>%koJje6Az>B=Z%e=y?yvFOi$y>b5JG{#tEK$83
zK6{`1)K8+~z9?1qW$dS>e^y9G^}<yBnlUEv1x3l9P`^O>L)4XV=cxMKuE&MCa-8L*
zyoP9gZduFAu{^C<ffZSa)~w7btjcP%A)JeFuA?$lVmZBBt?BQm4(Vt)l(UI6RMxt9
zelwynH`Veq4rTy{a43gyI71lB5gbXTe7~0UYtxRNY);4 at Cvh^Ta4M&f%eI`(8Jx*k
zoXt6GLpRPPhdj<>2X>?nJFzpNPCK8ixqu6~h>Hn%GnCosT*l?}r!6zMg5iu{Plhp)
z)fvT=T*W~8F^Hk;#oml&CRcL}v$&So%waC`xQ_W;&v-h}iOzJTJ3ZKfE$PKp^kzG@
zr!Tv*8 at sb9H?V*kxrv*(g<H9e+qr`~xr at 8GhkLn?`+0z<PI=h!BRtAN9^-MI;7Ok1
zX`bO(p5u95;6+~IWnSS`UZaTDd6zJ*j_R$y{N2#l`h8D-z=wRq$9%%4e8%T|!Iyl+
z*L=gbe8>0vz>oaI&-}u#{KoJ6!JkC!)jpP+)Aocubz2(hL%(5Lp^jXJHCTsr`6nB&
zA??|SjoE}f*q8m-p99F}KnfT`A!CU%jyHLWw+Y|tFrL1am!Q5(eL^wW$2~urdapJ@
zxs<-0{Vvw899Ni_ at jchNkhd3GS8q-_(OXSLDF0%%Xhuv<;;S%ni_R9eU3PKF-(^tW
zhu=3Y_Vc5mgM3!{vDQ1r#lLrBT;jXPa*NJPkBO4hi%s>$3lh`Xu`{xNeW at c11B%?D
z)3e`K;#`K`GdL})nDCo8i at x3d)a;LMQIPX~int{?|CKf2O@!Q{lf`#y^7 at 5i4Vf>u
z=p^Y|EgL(cDCGNfwmUhrx5bv1vW;lYYgx<7u{^C<ffZSa)~w7btjcP%A$qTVu;ujm
z;5Gfd7Hbpo`$R(Cj_RpUhlF{@vpja>Y|aVK5nfj==dvw5*_<5mIFBxDMwp))=&>!U
zb14%j;Ydm;qn!0vp9(6eqM8~eF_|e$=Q1wmaHi3p0Sw_Nj^-GS<v0%FcursjS1_Cr
z?8z`jGKwp?ihc}YD0{ItqnXLoT*EA`Wj1q|%RH{*Fy?bT<LN*rI at 6UNgt}o%da)I~
z*_x2|wr2-+qz^l>GrJJ##$DNs-Px2ISip_k#Le8ot=z`#+`*mP#ogS)z1+wBJivoI
z#KSzoqb%ex-sGTvxQ3KaN*U!;Fp)~CsHTQZ*pv=*q_OYt_ at 8=D`+UcI0T*%+7jp at Z
z^8`=w6i at RE&+;74^8zpO5-;-#uksqN^A7J4?tO{wgIU_&%diIPurB{(12&{R8?iB)
zum}6HANz9v`5Z_AV<==SamMimZxQvyv+0X`Ed3{Z%4dAe7ktTAe9bp}%XfUw5B$ha
z{LC->%5VJ6AN)zw_xN}9I|kb3614q`K9yQoQ|5PH5;I*VrrLmvW1j{hPgtTjzZ)v9
zz2jf3pOAWAIQcVe>Lh8pHIgRP!j4V-rdycqiXAI`_e|-XEI($H_z}4Ls*-rzx49mZ
z&GDx~yrZw(3g5b_?#yufg{dF5K1!P2(eY&Sedfuy#P*MDZmec93O_>Z`q6%)K1#IG
z^M_l%Mcwrc_hAxWz}6%6V@`)<AD4KiKKc!)L&eozmwNkIbbw_wQ}Uw2JS6*lC62LY
zYG(&$A2+4EB3>39<Fxc+j1H;Zu_kg|jo-#{n7Kt$#k8+`9#eUEoSt0xz33^@Y*#l;
zz3ryo5Rv?`l5xe!?~a}<zBUgvdR*!8mXo)K#3qUDTzB8;NmB<Ie$%5Sl{RDf4_~Nf
zd)3mmZ)CfbeoK6cbyXSCgtHj0)&^!sqX%3#!FDEQNHaF>8;hl>kS62n4Bvs9NSs?#
z-c;ITy6`pCv9hMpCccL^9B6J)skF6uJi1Ql=Q?p>d<0<8&mYA~#AK}Bk}-)NP6{V}
zLU#KI-%ecW`;2|-vwlc(W4!X>?2fCd&=0JK>aZxgeMIRK=XQK{G2#7ZB_Uboj%#L2
z*il?e==U|$&Lm26;vDA|jg>BA9!jQ59D8AQ$C3Osg7W0Ck7;I1*ik_$CS#dQwM~iP
zxeI=vm}iZVCh2P}v(?P$VT?4{@>0&h6p!JagA&Wju{^C<ffZSa)~w7btjcP%VLF#_
zIfpZi{tRFUg9-hlxeOzH+%U-BLm5b0Rwv8 at _46>2QS8OujAk}-h(53IzU2>CleJiz
zc1$Fcxexh>&<FolKiAOFHY%v33e{BY*s6==&6rH6<NjaxjKfsdVHyV$jf2A&cptAX
zjBUf%^iIonaX0sHFZXdjVJ!3)>F>2&<L{-#J?!xj7P5oCo73M9WwryI2<5UXJqZ1l
zE$PKp^d_{g+tZg_*^S-VgXWGIE){bmM{zXAa4g4hJSQ-NE4Y?<%;$Q>a{~*wk(;=g
zTey|mxSczAkcW7WkNJd8`HasA<BhLrYK-x_G);{!8hgJ#+`k__AJx#9a%tNwqL>r8
zgvWV;CwYped4^|sj^}xS7kP=7d4*Sbjn{dTw|JX(c$fZ;A$(>c8XGp}GZKf0t2>rH
z)N_Y%I7e_KM{zXAa4g4hJmEgE6F8BRh&~71*K!^wa|)-jCnHI}&n&vfEZkof#+RpY
zI%jYuXK^;?a4zR at J{NEy7jZF{a4FL%AdFcrV at rAw^7ayp^^6LN%f^)_Z)V8XHgvO{
zjP1#yh}Z$rhw`>q+gY#g8s_JG*wBsDerlpR{1(gp;@a1ZOZA1q&sON0RPHBD_eRpB
z#&)6qyx5Nm?wet|z7ctBd8v9!n$DTFn at kwGMzPV-hPos3>r3y%h3}+Zw1K^|+*fGJ
z_mVce-i+tIaB5*m+&4TYKl&IOCFU4y`Q@(v79YNIMQF=sSPpG at C`X~bS&rpt#R{y*
zO0;HW>bB#dP7Up7M>-MC)q1Q?7ef0M>e}>nHsqNca>*mSj!+l(WOEv-lehN#Hf&2c
z$Dw}SfgS0?PVCGs)UCHS_1yo|{Mo6teHy2824`{>XLAncavtY%0T*(GbN;c%e)MMm
zZCRax3}P at t7|Jk)GlD%C$td<>Z$|S8pE8Tj_?#~|oN3JEOTHqSH at e1hsE0xuwJZ}T
z;Ydm;qnrvRQb`rn)G&$3Okp~gaXCkEG{+FNbq85Ko)ehC6<o<x%;ajWWj1q|$8{XW
ze6HsP7H}gsaWl7YE4Ohwp)G8xfAOF+5AiUM at F)v;jBM-r(5HD{`VaV!k7%gf3vEJZ
zmx`In!5qS&9Kng4#L1k(MO at 4!JkAq5$x}SdGd#<4JkJZf$V<G;E4<2U6!ALmQny`t
z+jCbswyW63a?}=uK3YTVQRwG~K6ccH4*lX)2z}P at ncUy3j^5M!#`3pB?`_Vsei?tS
z!8)wVKiPl{Y0pM%%qHx?zU;^T96&w?QotAr8B3gTTx}nJdHjdRr3n4SYna6t3K>h(
zu14=6zbEEvzT<m-;75MqXMW*Ve&-MVr0#rcdVlB*>zC#&uC>3=?nZ5H)E^Fg;NI4!
z{fgqy@{*~gei_4rV(HF<a>o`|=GA$su%aT|FFjHn-cD@&wXUIc?X6p^{Yf=9S{lD&
zS5Pt{Lz=`V at O_u-aA`Wb4`sIFY<)qS$3i<X$MRCP9nM#j at 7J{4iWOLqm1xb%tir0S
z#oB~p4s}R(qVn>w<$f&3@~lQ1`ZIvGtj<6NF_<9?Wf;R5!Jdp{6nn8ZqxpnSnZ;*(
z&KDfcH0Cm%4s at gwomr3d>B44or5icql1C4EvN>C at CB4{+aBa6{8 at 6RTwr2-+qz^l>
zGrQ22UD=J@*_1E&ijX(IA(W>mk3M2K<kKs;ipO}AtGSNDm`TXThZ6GgviwYxpMSGF
zn>my)oy)kKD6d~*`A;5ZA)$PQIv~A_MQzDJR!yLkGRmo-k}9gHVG@&>!ame3OQD`=
ztd2QJ`ja_ at Q#p;(IfFAfi?cb0b2*Rmxqu6~h>HpJ)KrfLa|lP!)^kyPm0q4NweCoc
z;%JWHSdQa(PGAOCa4qwg&-L8E0&e6cZsrzl<u-2T4({YG?&cou<v#A`0UqQbqB`ph
z%c1?5%l}s0+E86O&;CPQwuj?cg0V#HyFbzQmkd+ybhoXHecJRWX@`ngs84&H<5<`x
z|EW+{&9}Uib?@;$AFw8^Sb-H;iPo&lDy+&{tW7&65{~6VKH_8gu^h{@8g1y$0NS!T
z0~y3%hA@<23}*y;GLlj3#omnO6Fy}YpYb_ga5&SL%Xm7_kxq1GJ=UiSo6(hS<d91q
zJ?P2iY{8cFVk>&HHQTT)+tE^2wbWJr&bn#`<#8GLY7N$5UH-`iY)E at HVq-R85B6n0
z_U8cdIgkRzP{>%~j3dlFg*q|JNl#@O2NU(VLcccDRsS!}PlfShLvv4|Z3zA1hU)IW
z>%3H`FaMRc#E0?6`@l`=E(CS3_94`9*|jO@(dzIej4iUiL1M4cE?w{Z7d`dv_n}?7
z!E$Jq7I^&FV|shi%HJ!{SljfUY;Qu_*;Jd8-gee)f4YnR-)e*Qv9G^amg!u^<&+Tm
zuCqPN35(%caGmADn90>#$yHoK7(+hn at ev+nA&;>%|I_tZ$V0^(!~{wyqnrvRQb`rn
z)G&$3OkpYqa|nlW1V?fdM{^9vavaBV0w;13Cvys?avG;|24`{>XLAncavtY%0T*%+
z7jp at hGJ`9)mU+zQdTw9=H*ypIYJ2mzZ9Kt~JjK&I!?Qfc^Sr=|yu{1A!mGT->%766
zyv5tR!@E?<2US#4!zOG>2RhP;&U9fjy3&oW#eT#4e87i%#JBXZKD1XmF at U=5RP^3O
z`W#D`bNNkd7{4?&*EHI?^!Fdq$5ZKJoQCE^(%a4V?B_ea=Lde|Cw}G^e&u)m;7_7)
zVBPUt`dBI&zl8okXs`RypTV3=Ht&m^Cf&d5{g7y0Ce&A%=VD3=ipz2nGcW_y>#e1a
zo*9t(dlx^A5bluZAL{+3V at KTRINSYx)y&I&f2G|`mP5UNv&V2=qx`U@<)-TWwWL{_
zc1)x at Q9k<EazB=1c~+wh{TV=8R%alC7|alcGK}GjU{6LeioMvI(R{+E%;GaX=L-&J
z8gm&>2RhP;&aB7!bYU~P(v2K)$)g87*_<udl3r{@Z?<L|wq-lEX9sqq4?D3lyU>?i
z*^S-VlrQ;;s0 at ZO7v<+iEQdUOC0Fqnk8(BF5w!;)&mT(2_sf!=_d_|H%^XUYPSn;!
z<>DI8g|hK53;Bzd`IGwX&J3sJf1{0v>Yq34FVwvuUo~3p^LHsJsH!R-m)|2X8=Lwo
zSqX^ir<{lKmiByXk5t*e#kP-`@%%NR?B8m+rR=wq{g$%daG&!(Rrb4QD*MS2pKQ at n
z at 4M_CmG|0bwKtw??|qWnl<^lQ{XQ#{_uE^_drMm{Z?%;7zgKzxPrgr*T|c9HgZ+$M
zQ+<j%)GM7|ICf4;pQ2?v(K4RMJdgFC>QiJc=c9@%t7{5MQsar#U$x_jzN!92+Vinp
zQf2>6W&eyxkIWBc|E`w)MN9vprGL at r9QNO|?1$erDXWgke)6x{vcGdw_7^=L+sSit
z%_H8eynkMH*n&{@?`bLfEoHx@?Eme`esmvHcI|(%pP$ywhub=1eNt`xy~=p+3ufKe
z($=^1^IQ7)|5x_&Q*C{!oG)tA6XkrzRJ(qka{l79Rc~%-*IUYYOF930mh-4x5ARPm
z{yyQLf>3I`&~P)vMn at Id3g4dTM)r&(fd2U%B6-?TTNAa{oX}f4-$Z-_oD|+x6$e
z=PI%&^T`H2D&Si8?NVj at LGeF7)uyG4%iAsY{<PftbCi5=G{<l($8kI-FoXZZy+5Ih
zU!^?`_v-Y0;ebiE|J8D at PD@#BDXV|SvKq>1c>lZA`_o#=srs^|oVJwHzhgNK?^lI+
zt-0m14?SwBS6kk%QdV2;dvCcH?(f$3jpntY_m_|OYhg=yZE06qKBpoN{2klXsJ#9k
DYRDzS
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/.ninja_log b/polymorphism-benchmark/.ninja_log
new file mode 100644
index 00000000000000..046ca6b96b9977
--- /dev/null
+++ b/polymorphism-benchmark/.ninja_log
@@ -0,0 +1,41 @@
+# ninja log v6
+9 3355 1790174637844152800 third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o 36a9543467adcc55
+4 2695 1790174637840154400 third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o e22d3d8450d69c74
+3506 3586 1790174641341364000 PolymorphismBM e00b175e96ed2ac5
+716 1981 1790174638552298100 third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o 1d19ee999525fb74
+10 1914 1790174637845155900 third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o 741956fd09268b19
+741 1585 1790174638576833000 third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o c5b9f8535e16eca5
+596 1501 1790174638432833700 third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o f11f05b7d788cb9b
+11 564 1790174637847155500 third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o 58500060c0602c0f
+7 715 1790174637843154300 third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o 6938d654deb672c7
+18 816 1790174637853155600 third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o f4bc889a6a719053
+25 956 1790174637860772300 third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o 714d3ae7c173d46b
+6 999 1790174637842154000 third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o 59ff111bf51289da
+16 1048 1790174637852156100 third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o 5e637f7de309ae03
+3355 3506 1790174641190759000 third-party/benchmark/src/libbenchmark.a d9a40b6e0d747ba
+23 1093 1790174637859770900 third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o afe6955abe68b551
+816 2619 1790174638652443400 CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o a0109bce72c4db5f
+14 1223 1790174637849155900 third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o 62a2df6cf37edcbe
+12 741 1790174637848153200 third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o 626a9618d345d6e6
+27 1474 1790174637863279900 third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o 375ad53019a82ae5
+20 1088 1790174637855667700 third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o 97cc861bbdf2f20d
+22 1257 1790174637857773100 third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o 51f25f500bc6efc4
+15 1352 1790174637851155500 third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o eb76df62d6e126b4
+7 360 1790177138652583600 build.ninja 7685b16637956f86
+10 864 1790177138682094000 CMakeFiles/PolymorphismBM.dir/main.cpp.o a58cecb91eb0f14f
+16 912 1790177138687599600 CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o a151f93ddd37b981
+12 931 1790177138684093600 CMakeFiles/PolymorphismBM.dir/Common.cpp.o ab5ebfd22f9f2e29
+17 962 1790177138689606000 CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o 493d8cb7eff030dd
+14 1043 1790177138685093400 CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o 9942a1bd78b9b5af
+19 1081 1790177138690606500 CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o 10a576baba5ea396
+15 1099 1790177138686093500 CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o 4976c818ea178ad4
+20 1122 1790177138691606500 CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o b2c7e1f40c816418
+21 2113 1790177138692789200 CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o 1ed31c27424677b2
+23 2165 1790177138694789900 CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o 875497e13b0e013d
+2165 2290 1790177140836530100 PolymorphismBM 5870af9157d43746
+9 661 1790180548295506800 CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o a151f93ddd37b981
+11 672 1790180548296507100 CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o 493d8cb7eff030dd
+672 775 1790180548957622000 PolymorphismBM 5870af9157d43746
+12 779 1790183610614012000 CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o b2c7e1f40c816418
+10 791 1790183610612012000 CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o 10a576baba5ea396
+791 896 1790183611392327200 PolymorphismBM 5870af9157d43746
diff --git a/polymorphism-benchmark/CMakeCache.txt b/polymorphism-benchmark/CMakeCache.txt
new file mode 100644
index 00000000000000..213b0219411ced
--- /dev/null
+++ b/polymorphism-benchmark/CMakeCache.txt
@@ -0,0 +1,579 @@
+# This is the CMakeCache file.
+# For build in directory: /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+# It was generated by CMake: /usr/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Build a 32 bit version of the library.
+BENCHMARK_BUILD_32_BITS:BOOL=OFF
+
+//Flags used by the C++ compiler during coverage builds.
+BENCHMARK_CXX_FLAGS_COVERAGE:STRING=-g
+
+//Allow the downloading and in-tree building of unmet dependencies
+BENCHMARK_DOWNLOAD_DEPENDENCIES:BOOL=OFF
+
+//Enable building and running the assembly tests
+BENCHMARK_ENABLE_ASSEMBLY_TESTS:BOOL=OFF
+
+//Build documentation with Doxygen.
+BENCHMARK_ENABLE_DOXYGEN:BOOL=OFF
+
+//Enable the use of exceptions in the benchmark library.
+BENCHMARK_ENABLE_EXCEPTIONS:BOOL=ON
+
+//Enable building the unit tests which depend on gtest
+BENCHMARK_ENABLE_GTEST_TESTS:BOOL=OFF
+
+//Enable installation of benchmark. (Projects embedding benchmark
+// may want to turn this OFF.)
+BENCHMARK_ENABLE_INSTALL:BOOL=OFF
+
+//Enable performance counters provided by libpfm
+BENCHMARK_ENABLE_LIBPFM:BOOL=OFF
+
+//Enable link time optimisation of the benchmark library.
+BENCHMARK_ENABLE_LTO:BOOL=OFF
+
+//Enable testing of the benchmark library.
+BENCHMARK_ENABLE_TESTING:BOOL=OFF
+
+//Build Release candidates with -Werror.
+BENCHMARK_ENABLE_WERROR:BOOL=OFF
+
+//Flags used for linking binaries during coverage builds.
+BENCHMARK_EXE_LINKER_FLAGS_COVERAGE:STRING=
+
+//Build Release candidates with -Werror regardless of compiler
+// issues.
+BENCHMARK_FORCE_WERROR:BOOL=OFF
+
+//Enable installation of documentation.
+BENCHMARK_INSTALL_DOCS:BOOL=OFF
+
+//Enable installation of tools.
+BENCHMARK_INSTALL_TOOLS:BOOL=ON
+
+//Flags used by the shared libraries linker during coverage builds.
+BENCHMARK_SHARED_LINKER_FLAGS_COVERAGE:STRING=
+
+//Google Benchmark source directory
+BENCHMARK_SOURCE_DIR:PATH=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/../third-party/benchmark
+
+//Use bundled GoogleTest. If disabled, the find_package(GTest)
+// will be used.
+BENCHMARK_USE_BUNDLED_GTEST:BOOL=ON
+
+//Build and test using libc++ as the standard library.
+BENCHMARK_USE_LIBCXX:BOOL=OFF
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/usr/bin/ar
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Release
+
+//CXX compiler
+CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
+
+//A wrapper around 'ar' adding the appropriate '--plugin' option
+// for the GCC compiler
+CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-13
+
+//No help, variable specified on the command line.
+CMAKE_CXX_COMPILER_LAUNCHER:UNINITIALIZED=ccache
+
+//A wrapper around 'ranlib' adding the appropriate '--plugin' option
+// for the GCC compiler
+CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-13
+
+//Flags used by the CXX compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the CXX compiler during DEBUG builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the CXX compiler during MINSIZEREL builds.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the CXX compiler during RELEASE builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the CXX compiler during RELWITHDEBINFO builds.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//No help, variable specified on the command line.
+CMAKE_C_COMPILER_LAUNCHER:UNINITIALIZED=ccache
+
+//No help, variable specified on the command line.
+CMAKE_DISABLE_PRECOMPILE_HEADERS:UNINITIALIZED=ON
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker during all build types.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
+
+//Value Computed by CMake.
+CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/pkgRedirects
+
+//User executables (bin)
+CMAKE_INSTALL_BINDIR:PATH=bin
+
+//Read-only architecture-independent data (DATAROOTDIR)
+CMAKE_INSTALL_DATADIR:PATH=
+
+//Read-only architecture-independent data root (share)
+CMAKE_INSTALL_DATAROOTDIR:PATH=share
+
+//Documentation root (DATAROOTDIR/doc/PROJECT_NAME)
+CMAKE_INSTALL_DOCDIR:PATH=
+
+//C header files (include)
+CMAKE_INSTALL_INCLUDEDIR:PATH=include
+
+//Info documentation (DATAROOTDIR/info)
+CMAKE_INSTALL_INFODIR:PATH=
+
+//Object code libraries (lib)
+CMAKE_INSTALL_LIBDIR:PATH=lib
+
+//Program executables (libexec)
+CMAKE_INSTALL_LIBEXECDIR:PATH=libexec
+
+//Locale-dependent data (DATAROOTDIR/locale)
+CMAKE_INSTALL_LOCALEDIR:PATH=
+
+//Modifiable single-machine data (var)
+CMAKE_INSTALL_LOCALSTATEDIR:PATH=var
+
+//Man documentation (DATAROOTDIR/man)
+CMAKE_INSTALL_MANDIR:PATH=
+
+//C header files for non-gcc (/usr/include)
+CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+CMAKE_INSTALL_PYTOOLSDIR:PATH=share/googlebenchmark/tools
+
+//Run-time variable data (LOCALSTATEDIR/run)
+CMAKE_INSTALL_RUNSTATEDIR:PATH=
+
+//System admin executables (sbin)
+CMAKE_INSTALL_SBINDIR:PATH=sbin
+
+//Modifiable architecture-independent data (com)
+CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com
+
+//Read-only single-machine data (etc)
+CMAKE_INSTALL_SYSCONFDIR:PATH=etc
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/usr/bin/ld
+
+//Program used to build from build.ninja files.
+CMAKE_MAKE_PROGRAM:FILEPATH=/home/meinersbur/bin/ninja
+
+//Flags used by the linker during the creation of modules during
+// all build types.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=PolymorphismBenchmark
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION:STATIC=1.9.5
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_MAJOR:STATIC=1
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_MINOR:STATIC=9
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_PATCH:STATIC=5
+
+//Value Computed by CMake
+CMAKE_PROJECT_VERSION_TWEAK:STATIC=
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/usr/bin/readelf
+
+//Flags used by the linker during the creation of shared libraries
+// during all build types.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/usr/bin/strip
+
+//Path to a program.
+CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//OFF
+CXXFEATURECHECK_DEBUG:BOOL=OFF
+
+//Git command line client
+GIT_EXECUTABLE:FILEPATH=/usr/bin/git
+
+HAVE_PTHREAD_AFFINITY:BOOL=TRUE
+
+HAVE_STD_REGEX:BOOL=ON
+
+HAVE_STEADY_CLOCK:BOOL=TRUE
+
+//Path to a program.
+LLVM_FILECHECK_EXE:FILEPATH=LLVM_FILECHECK_EXE-NOTFOUND
+
+//Value Computed by CMake
+PolymorphismBenchmark_BINARY_DIR:STATIC=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+//Value Computed by CMake
+PolymorphismBenchmark_IS_TOP_LEVEL:STATIC=ON
+
+//Value Computed by CMake
+PolymorphismBenchmark_SOURCE_DIR:STATIC=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+//Value Computed by CMake
+benchmark_BINARY_DIR:STATIC=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark
+
+//Value Computed by CMake
+benchmark_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+benchmark_SOURCE_DIR:STATIC=/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: BENCHMARK_CXX_FLAGS_COVERAGE
+BENCHMARK_CXX_FLAGS_COVERAGE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: BENCHMARK_EXE_LINKER_FLAGS_COVERAGE
+BENCHMARK_EXE_LINKER_FLAGS_COVERAGE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: BENCHMARK_SHARED_LINKER_FLAGS_COVERAGE
+BENCHMARK_SHARED_LINKER_FLAGS_COVERAGE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=28
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=3
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
+CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
+CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Test CMAKE_HAVE_LIBC_PTHREAD
+CMAKE_HAVE_LIBC_PTHREAD:INTERNAL=1
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+//ADVANCED property for variable: CMAKE_INSTALL_BINDIR
+CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_DATADIR
+CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR
+CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR
+CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR
+CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_INFODIR
+CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR
+CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR
+CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR
+CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR
+CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_MANDIR
+CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR
+CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR
+CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR
+CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR
+CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR
+CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=3
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.28
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_TAPI
+CMAKE_TAPI-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//Result of TRY_COMPILE
+COMPILE_STATUS:INTERNAL=TRUE
+//Details about finding Git
+FIND_PACKAGE_MESSAGE_DETAILS_Git:INTERNAL=[/usr/bin/git][v2.43.0()]
+//Details about finding Threads
+FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()]
+//ADVANCED property for variable: GIT_EXECUTABLE
+GIT_EXECUTABLE-ADVANCED:INTERNAL=1
+//Test HAVE_CXX_FLAG_COVERAGE
+HAVE_CXX_FLAG_COVERAGE:INTERNAL=1
+//Test HAVE_CXX_FLAG_FSTRICT_ALIASING
+HAVE_CXX_FLAG_FSTRICT_ALIASING:INTERNAL=1
+//Test HAVE_CXX_FLAG_PEDANTIC
+HAVE_CXX_FLAG_PEDANTIC:INTERNAL=1
+//Test HAVE_CXX_FLAG_PEDANTIC_ERRORS
+HAVE_CXX_FLAG_PEDANTIC_ERRORS:INTERNAL=1
+//Test HAVE_CXX_FLAG_WALL
+HAVE_CXX_FLAG_WALL:INTERNAL=1
+//Test HAVE_CXX_FLAG_WCONVERSION
+HAVE_CXX_FLAG_WCONVERSION:INTERNAL=1
+//Test HAVE_CXX_FLAG_WEXTRA
+HAVE_CXX_FLAG_WEXTRA:INTERNAL=1
+//Test HAVE_CXX_FLAG_WFLOAT_EQUAL
+HAVE_CXX_FLAG_WFLOAT_EQUAL:INTERNAL=1
+//Test HAVE_CXX_FLAG_WFORMAT_2
+HAVE_CXX_FLAG_WFORMAT_2:INTERNAL=1
+//Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS
+HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS:INTERNAL=1
+//Test HAVE_CXX_FLAG_WOLD_STYLE_CAST
+HAVE_CXX_FLAG_WOLD_STYLE_CAST:INTERNAL=1
+//Test HAVE_CXX_FLAG_WSHADOW
+HAVE_CXX_FLAG_WSHADOW:INTERNAL=1
+//Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32
+HAVE_CXX_FLAG_WSHORTEN_64_TO_32:INTERNAL=
+//Test HAVE_CXX_FLAG_WSTRICT_ALIASING
+HAVE_CXX_FLAG_WSTRICT_ALIASING:INTERNAL=1
+//Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE
+HAVE_CXX_FLAG_WSUGGEST_OVERRIDE:INTERNAL=1
+//Test HAVE_CXX_FLAG_WTHREAD_SAFETY
+HAVE_CXX_FLAG_WTHREAD_SAFETY:INTERNAL=
+//Have library rt
+HAVE_LIB_RT:INTERNAL=1
+//Result of try_run()
+RUN_STATUS:INTERNAL=0
+//linker supports push/pop state
+_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE
+//CMAKE_INSTALL_PREFIX during last run
+_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local
+
diff --git a/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeCXXCompiler.cmake b/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeCXXCompiler.cmake
new file mode 100644
index 00000000000000..9a2526f819753f
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeCXXCompiler.cmake
@@ -0,0 +1,85 @@
+set(CMAKE_CXX_COMPILER "/usr/bin/c++")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "GNU")
+set(CMAKE_CXX_COMPILER_VERSION "13.3.0")
+set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_CXX_COMPILER_WRAPPER "")
+set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17")
+set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
+set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23")
+set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
+set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
+set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
+set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
+set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
+set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23")
+
+set(CMAKE_CXX_PLATFORM_ID "Linux")
+set(CMAKE_CXX_SIMULATE_ID "")
+set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_CXX_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-13")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-13")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_MT "")
+set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND")
+set(CMAKE_COMPILER_IS_GNUCXX 1)
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+
+foreach (lang C OBJC OBJCXX)
+ if (CMAKE_${lang}_COMPILER_ID_RUN)
+ foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
+ list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
+ endforeach()
+ endif()
+endforeach()
+
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED TRUE)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "ELF")
+set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+endif()
+
+set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/13;/usr/include/x86_64-linux-gnu/c++/13;/usr/include/c++/13/backward;/usr/lib/gcc/x86_64-linux-gnu/13/include;/usr/x86_64-linux-gnu/include;/usr/include/x86_64-linux-gnu;/usr/include")
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/13;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeDetermineCompilerABI_CXX.bin b/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeDetermineCompilerABI_CXX.bin
new file mode 100644
index 0000000000000000000000000000000000000000..631c9ac47e35575c396fa010d9b7b9df90165656
GIT binary patch
literal 15992
zcmeHOYit}>6~4Q9xipD4Y23I;X_nHU1nP-jF-{<49ebT!<k%r`Xdxt%S?|~$u at AF5
zOYH(BG=OS_pnwq2A5>9Q9#VzWN{IAV*ea+MNFXXv5yYQBi4;U2u4s`%LzZ*qo^L%K
zty^9{keIvL`R at 77IrrW<_s;H}nR`E*92$&9A_{4l`ha375z|aU6us}23_(Kmsx@?c
zySiJgBzd{VX?;QiX?403U5rh_FC%2XR?alQyERQU=!6zBvfol^ZiUtWm7E9rc`A{?
z1D}-&fZ*%(#ihmoj*1`9 at 5iy3Ytw#ndlq9{;<8N;ek`(|GPFH)hfac3sSk*Fa!mN!
zEAb3syA%Tq`b~;o5C_B$$aQc!e8tWFJM|qDzq4_#7!}0(HLZZC??dG0#YOaQ1?c8O
zQr}Yj5R>==CA?}!&dKz2 at 5p7_a!#Q#-8S9Z)7H~%l#52ES2edQPG25V`-hJxDyGVu
zgi%FLY8mCRZiDFA{z~?ZvH1M)=Z;@`;x6^TjSFk8x7^P*+-~+^8%|svh6u}?=Q`O&
z$K!L9ld(<slKu0%M=Wt*zx54t{lvu^@a7VHVF~^Y;_q!xjxtS(=$Kh{t&(fzEvG=t
z*tBJiI|VD}JZvjgb9{T${-N}~ezVi)G<MeWUERt|j~+0ycFCS_%C21+J<y*k7VJ?g
zle4L;iF~mjrJLHcp&>^w;(c^aMM&oMV!Tu~Ik$1tdHgZ=gRgv@!W^YvJe_bI<NArO
z)BL<#-{3DxflUdm2M_tuUd?kKa-Sew_VNCHzv|;L#@J`h$Mg6>n)mVYlL%FaVFbbm
zgb at fM5Jn)3Kp25A0{_Pm_)GIWe at mUZ)|5KE;@3NrN`0Z~Mr*%Fo%(UpMK3C~olg>7
z+xiq8o3|ts+t;>UAZfgL%YgFajz6VmUpk(e{axzR at 8=GVCOfJfKS`b0^HVCI)>0<Z
z*T#+JEuZ(wBmQw>QfF3tm0{Ps+d@@;nDbQiZMDnITTZg!MM1K6Jo}v)hV8dfvvaBE
z|GYQ#{QR<1<b~8rx7-a>z*Z at ssdibn3;x{RlY3aLD(^XxI<+Ut+0^V6cXjIYo|PnA
z-CnEJu4d`*!ivAsU3cUd`PS=a|35rLO3oZ1zuC`ROU+g;znHwq%{-mFmilJuOv}q_
zDLg-19&5f(jU;ahyMa&hH>^3oJlcFdsQGOpP0JqxCEYxBk*oIlsNO4Fb(q2kgb at fM
z5Jn)3Kp25A0$~Kg2!s&`BM?R)jKDu10e=7WW+^>9II_D;@8^o+W_HRg9c}MD=C>bC
zj|^sZyECR;D%#njrSv{?|8O!rFx;m+JI_Be<JxAiMDOm74y8v&hmvM;cp%+3OctKr
z$~Z at 99RfQ<HZOZ0zkB0%S!b`;Y9|QK5k5xv3}K4!@wr;<93dxur^+ev at F5kMjzu=F
zUe$D#UZ^q8YX?q{&%4-QV3qeq?mo(P({~&39<eqyxVH6!&9^_)bW-izwCmkn_j#``
z+5cnojlqucoVZMvzONGhDJGI at V_%H+uUQ!_QO!(*DU3iEfiMDL1i}b}5eOp?Mj(tp
z7=bVX{~Hm&dPS^H#M(periYri8qJjTi)%!FO4d2vB{J4QZWbB0KAS|wdPu%s;spKc
zw`xU}pOHn3SerP>H++=znpUMQiT-VxR*wnZF4!vAA_&0R$f~S=TqTNjsR-?;3QvnY
zy at c}a5gB%G)O33(P9AkjWWAW2UT`nyJx{td_0Dfj&gX{6XqOcK-vg`<{|`&Vy43ys
z{k!Aaj$|qYw-WE at GP;cRww{V7c0SVCZM1hA9ot3mW>xaITCQHL1#LLq5z>4~0umPk
zUN_vxp8F%J)~YEPk7BOk!k-K9UBY90!#+)!h-y`_gk~`Ad6jj9o)%!dYOPYArVQ7M
z>jgZI!-%>=Vf=&tE at c|E|3{vEOvU5c665t{;S<7R+`TUR3E>4)D>XQxV(O$2v`WBB
zOT}%gXTM$@e1{nNpiw)!JbP+gU_8B_c%|0W*Xg5}5zqckh3gEwO?;#E<&P2{hmjAz
z at 9`UzO87|1K0$m;ZLIefwBIIveY9EO_XzycVjnE$Ij?+JE#Qm9uZwO}828Zpl6k6G
z#Wf?Bv3iC07>%FS1S~c3ev$PwP7*Q>y=P6Nx+?Y<Z}56e?6=GBsrL+tlsAay_5|%$
zMC(mK5gu+K{@z857IqWAK1#omf$KsY9xJ&WMv+#^)6+K7wI&o1Ww$auZj7mgRrRKu
zH^+EgeVHt?MROuo%vd=y>lRC8)2d9Xv0{EIXS;URXm4!6EBYPNDwQmHC|GbyGitnK
z<!v)t$>(Rt#V46$=`J$uKVW^_?tk#XeyYXE*`>aHX=7|^N|_%W>gaI_<3-c=ERxwy
z%`QA)G&9Zw)thxJ+F?NYU7nXupL1L{XZuWgJqwBoHE!@w-vRIGq)D3y20k*}cOczQ
zH0{PPlPS at r1`a86|Io<3z9DmDaPV+))Ew>GM-Mg0FtEoVfvpU0wSB?PTCSzM&`~KY
z=)DXiEZ*2)X3Ir$(kf(m(?fcMtg=qQtd#An;!`5~Ot~z+vde-tO7QbmJ|o^i(QsSD
z;=LI4X7dgVuajs$Qh6rtS{XvOq;V2Cr$E~=rj$`Ay0$S<s2EeF;*?!-XM9wq;?Q0i
zCo2^7Ya5S2&wSD<PbwojQ=lp|x+Sgoq+KdI#lj-NBwfkQS?r(;9zn{O%ISkKQKXD(
zPt%cyAz2o^$Qt&f47|xK`9sqFdIV|@<f(8g?~GA%xMK_osxoNk=V?SYxa$6Oiswyq
z$=9F02lv5Y-h`6b)}P)<0?%#ea`)0w`@KY6pMOE_p^V=@xbKUfllv2X2f^|Gsox*}
z=fF4&1%v(%5dT-28=?J}4+2p?=7X4zp;(JDJQsvN=8M3yV#sae*ufw3Jcl@*g1{g1
zPayx#`%^IfpCBdA{os%J9uV_rv>$fBN64S&l8`Z<1hz}%!S<s~XDGulg+J!Ez^WLc
z{^0q4gY<k((AWPj<bMP6dMU=M3wg$G(bw-E7eAngbr;CMCj<WNq5#4U1waNq9q><x
z0+<bS82nJ)vjKn1CxE!`fqiiNo)>?_U&X~z at XI0sgodc}yl|oa&WZt$-+}p4u>PNs
zl1~x!SL50m_%$uokLZ68zoHD!A#q=V`7HKH2JImOUm at RSpFif$^KC>@f}NHYWboHX
z!DA2g*XNyv_Nem7QR4B>34Z9u?-0i(@W(u~x`VBiN_fYG1N?#Wr1JaM9on at I>Ol$c
zgM5oJ%%OhF+hXD$w3pL?yIMvBb7EfS;V)sV^YHg0`o3;NnS>PhJ!u$U$9K{f?ZNLK
l--n^?l&z<$d;>)(5hxt>YAw%^8~bnLKNd=>0}cUE{R8m(8!Z3;
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeSystem.cmake b/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeSystem.cmake
new file mode 100644
index 00000000000000..5dbf38401d0e0b
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/3.28.3/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Linux-4.4.0-26100-Microsoft")
+set(CMAKE_HOST_SYSTEM_NAME "Linux")
+set(CMAKE_HOST_SYSTEM_VERSION "4.4.0-26100-Microsoft")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+
+
+set(CMAKE_SYSTEM "Linux-4.4.0-26100-Microsoft")
+set(CMAKE_SYSTEM_NAME "Linux")
+set(CMAKE_SYSTEM_VERSION "4.4.0-26100-Microsoft")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp b/polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
new file mode 100644
index 00000000000000..843b15bb0533e8
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
@@ -0,0 +1,925 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+ recognize the extension without flags. Borland does not know .cxx for
+ example. */
+#ifndef __cplusplus
+#error "A C compiler has been selected for C++."
+#endif
+
+#if !defined(__has_include)
+/* If the compiler does not have __has_include, pretend the answer is
+ always no. */
+#define __has_include(x) 0
+#endif
+
+/* Version number components: V=Version, R=Revision, P=Patch
+ Version date components: YYYY=Year, MM=Month, DD=Day */
+
+#if defined(__COMO__)
+#define COMPILER_ID "Comeau"
+/* __COMO_VERSION__ = VRR */
+#define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
+#define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+#define COMPILER_ID "Intel"
+#if defined(_MSC_VER)
+#define SIMULATE_ID "MSVC"
+#endif
+#if defined(__GNUC__)
+#define SIMULATE_ID "GNU"
+#endif
+/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
+ except that a few beta releases use the old format with V=2021. */
+#if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || \
+ __INTEL_COMPILER == 202111
+#define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER / 100)
+#define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER / 10 % 10)
+#if defined(__INTEL_COMPILER_UPDATE)
+#define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+#else
+#define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
+#endif
+#else
+#define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
+#define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
+/* The third version component from --version is an update index,
+ but no macro is provided for it. */
+#define COMPILER_VERSION_PATCH DEC(0)
+#endif
+#if defined(__INTEL_COMPILER_BUILD_DATE)
+/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+#endif
+#if defined(_MSC_VER)
+/* _MSC_VER = VVRR */
+#define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+#endif
+#if defined(__GNUC__)
+#define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+#elif defined(__GNUG__)
+#define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
+#endif
+#if defined(__GNUC_MINOR__)
+#define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+#endif
+#if defined(__GNUC_PATCHLEVEL__)
+#define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#endif
+
+#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || \
+ defined(__INTEL_LLVM_COMPILER)
+#define COMPILER_ID "IntelLLVM"
+#if defined(_MSC_VER)
+#define SIMULATE_ID "MSVC"
+#endif
+#if defined(__GNUC__)
+#define SIMULATE_ID "GNU"
+#endif
+/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
+ * later. Look for 6 digit vs. 8 digit version number to decide encoding.
+ * VVVV is no smaller than the current year when a version is released.
+ */
+#if __INTEL_LLVM_COMPILER < 1000000L
+#define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER / 100)
+#define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER / 10 % 10)
+#define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10)
+#else
+#define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER / 10000)
+#define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER / 100 % 100)
+#define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
+#endif
+#if defined(_MSC_VER)
+/* _MSC_VER = VVRR */
+#define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+#endif
+#if defined(__GNUC__)
+#define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+#elif defined(__GNUG__)
+#define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
+#endif
+#if defined(__GNUC_MINOR__)
+#define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+#endif
+#if defined(__GNUC_PATCHLEVEL__)
+#define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#endif
+
+#elif defined(__PATHCC__)
+#define COMPILER_ID "PathScale"
+#define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+#define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+#if defined(__PATHCC_PATCHLEVEL__)
+#define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+#endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+#define COMPILER_ID "Embarcadero"
+#define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__ >> 24 & 0x00FF)
+#define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__ >> 16 & 0x00FF)
+#define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+#define COMPILER_ID "Borland"
+/* __BORLANDC__ = 0xVRR */
+#define COMPILER_VERSION_MAJOR HEX(__BORLANDC__ >> 8)
+#define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+#define COMPILER_ID "Watcom"
+/* __WATCOMC__ = VVRR */
+#define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+#define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+#if (__WATCOMC__ % 10) > 0
+#define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+#endif
+
+#elif defined(__WATCOMC__)
+#define COMPILER_ID "OpenWatcom"
+/* __WATCOMC__ = VVRP + 1100 */
+#define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+#define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+#if (__WATCOMC__ % 10) > 0
+#define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+#endif
+
+#elif defined(__SUNPRO_CC)
+#define COMPILER_ID "SunPro"
+#if __SUNPRO_CC >= 0x5100
+/* __SUNPRO_CC = 0xVRRP */
+#define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC >> 12)
+#define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC >> 4 & 0xFF)
+#define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
+#else
+/* __SUNPRO_CC = 0xVRP */
+#define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC >> 8)
+#define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC >> 4 & 0xF)
+#define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
+#endif
+
+#elif defined(__HP_aCC)
+#define COMPILER_ID "HP"
+/* __HP_aCC = VVRRPP */
+#define COMPILER_VERSION_MAJOR DEC(__HP_aCC / 10000)
+#define COMPILER_VERSION_MINOR DEC(__HP_aCC / 100 % 100)
+#define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
+
+#elif defined(__DECCXX)
+#define COMPILER_ID "Compaq"
+/* __DECCXX_VER = VVRRTPPPP */
+#define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER / 10000000)
+#define COMPILER_VERSION_MINOR DEC(__DECCXX_VER / 100000 % 100)
+#define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
+
+#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
+#define COMPILER_ID "zOS"
+/* __IBMCPP__ = VRP */
+#define COMPILER_VERSION_MAJOR DEC(__IBMCPP__ / 100)
+#define COMPILER_VERSION_MINOR DEC(__IBMCPP__ / 10 % 10)
+#define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
+
+#elif defined(__open_xl__) && defined(__clang__)
+#define COMPILER_ID "IBMClang"
+#define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
+#define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
+#define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
+#define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
+
+#elif defined(__ibmxl__) && defined(__clang__)
+#define COMPILER_ID "XLClang"
+#define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
+#define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
+#define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
+#define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
+#define COMPILER_ID "XL"
+/* __IBMCPP__ = VRP */
+#define COMPILER_VERSION_MAJOR DEC(__IBMCPP__ / 100)
+#define COMPILER_VERSION_MINOR DEC(__IBMCPP__ / 10 % 10)
+#define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
+#define COMPILER_ID "VisualAge"
+/* __IBMCPP__ = VRP */
+#define COMPILER_VERSION_MAJOR DEC(__IBMCPP__ / 100)
+#define COMPILER_VERSION_MINOR DEC(__IBMCPP__ / 10 % 10)
+#define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
+
+#elif defined(__NVCOMPILER)
+#define COMPILER_ID "NVHPC"
+#define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
+#define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
+#if defined(__NVCOMPILER_PATCHLEVEL__)
+#define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
+#endif
+
+#elif defined(__PGI)
+#define COMPILER_ID "PGI"
+#define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+#define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+#if defined(__PGIC_PATCHLEVEL__)
+#define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+#endif
+
+#elif defined(__clang__) && defined(__cray__)
+#define COMPILER_ID "CrayClang"
+#define COMPILER_VERSION_MAJOR DEC(__cray_major__)
+#define COMPILER_VERSION_MINOR DEC(__cray_minor__)
+#define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__)
+#define COMPILER_VERSION_INTERNAL_STR __clang_version__
+
+#elif defined(_CRAYC)
+#define COMPILER_ID "Cray"
+#define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+#define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+#define COMPILER_ID "TI"
+/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+#define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__ / 1000000)
+#define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__ / 1000 % 1000)
+#define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
+
+#elif defined(__CLANG_FUJITSU)
+#define COMPILER_ID "FujitsuClang"
+#define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
+#define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
+#define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
+#define COMPILER_VERSION_INTERNAL_STR __clang_version__
+
+#elif defined(__FUJITSU)
+#define COMPILER_ID "Fujitsu"
+#if defined(__FCC_version__)
+#define COMPILER_VERSION __FCC_version__
+#elif defined(__FCC_major__)
+#define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
+#define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
+#define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
+#endif
+#if defined(__fcc_version)
+#define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
+#elif defined(__FCC_VERSION)
+#define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
+#endif
+
+#elif defined(__ghs__)
+#define COMPILER_ID "GHS"
+/* __GHS_VERSION_NUMBER = VVVVRP */
+#ifdef __GHS_VERSION_NUMBER
+#define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
+#define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
+#define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
+#endif
+
+#elif defined(__TASKING__)
+#define COMPILER_ID "Tasking"
+#define COMPILER_VERSION_MAJOR DEC(__VERSION__ / 1000)
+#define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100)
+#define COMPILER_VERSION_INTERNAL DEC(__VERSION__)
+
+#elif defined(__ORANGEC__)
+#define COMPILER_ID "OrangeC"
+#define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__)
+#define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__)
+#define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__)
+
+#elif defined(__SCO_VERSION__)
+#define COMPILER_ID "SCO"
+
+#elif defined(__ARMCC_VERSION) && !defined(__clang__)
+#define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+/* __ARMCC_VERSION = VRRPPPP */
+#define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION / 1000000)
+#define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION / 10000 % 100)
+#define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#else
+/* __ARMCC_VERSION = VRPPPP */
+#define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION / 100000)
+#define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION / 10000 % 10)
+#define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#endif
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+#define COMPILER_ID "AppleClang"
+#if defined(_MSC_VER)
+#define SIMULATE_ID "MSVC"
+#endif
+#define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+#define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+#define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+#if defined(_MSC_VER)
+/* _MSC_VER = VVRR */
+#define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+#endif
+#define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
+#define COMPILER_ID "ARMClang"
+#define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION / 1000000)
+#define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION / 10000 % 100)
+#define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION / 100 % 100)
+#define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
+
+#elif defined(__clang__)
+#define COMPILER_ID "Clang"
+#if defined(_MSC_VER)
+#define SIMULATE_ID "MSVC"
+#endif
+#define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+#define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+#define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+#if defined(_MSC_VER)
+/* _MSC_VER = VVRR */
+#define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+#endif
+
+#elif defined(__LCC__) && \
+ (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
+#define COMPILER_ID "LCC"
+#define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100)
+#define COMPILER_VERSION_MINOR DEC(__LCC__ % 100)
+#if defined(__LCC_MINOR__)
+#define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
+#endif
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+#define SIMULATE_ID "GNU"
+#define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
+#define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
+#if defined(__GNUC_PATCHLEVEL__)
+#define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#endif
+#endif
+
+#elif defined(__GNUC__) || defined(__GNUG__)
+#define COMPILER_ID "GNU"
+#if defined(__GNUC__)
+#define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+#else
+#define COMPILER_VERSION_MAJOR DEC(__GNUG__)
+#endif
+#if defined(__GNUC_MINOR__)
+#define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+#endif
+#if defined(__GNUC_PATCHLEVEL__)
+#define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+#endif
+
+#elif defined(_MSC_VER)
+#define COMPILER_ID "MSVC"
+/* _MSC_VER = VVRR */
+#define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+#define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+#if defined(_MSC_FULL_VER)
+#if _MSC_VER >= 1400
+/* _MSC_FULL_VER = VVRRPPPPP */
+#define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#else
+/* _MSC_FULL_VER = VVRRPPPP */
+#define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#endif
+#endif
+#if defined(_MSC_BUILD)
+#define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+#endif
+
+#elif defined(_ADI_COMPILER)
+#define COMPILER_ID "ADSP"
+#if defined(__VERSIONNUM__)
+/* __VERSIONNUM__ = 0xVVRRPPTT */
+#define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
+#define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
+#define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
+#define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+#define COMPILER_ID "IAR"
+#if defined(__VER__) && defined(__ICCARM__)
+#define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
+#define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
+#define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
+#define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+#elif defined(__VER__) && \
+ (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || \
+ defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || \
+ defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
+#define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
+#define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100) * 100))
+#define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
+#define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+#endif
+
+/* These compilers are either not known or too old to define an
+ identification macro. Try to identify the platform and guess that
+ it is the native compiler. */
+#elif defined(__hpux) || defined(__hpua)
+#define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+#define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const *info_compiler = "INFO"
+ ":"
+ "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const *info_simulate = "INFO"
+ ":"
+ "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const *qnxnto = "INFO"
+ ":"
+ "qnxnto[]";
+#endif
+
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+char const *info_cray = "INFO"
+ ":"
+ "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name. */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+#define PLATFORM_ID "Linux"
+
+#elif defined(__MSYS__)
+#define PLATFORM_ID "MSYS"
+
+#elif defined(__CYGWIN__)
+#define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+#define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+#define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+#define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+#define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+#define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+#define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+#define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || \
+ defined(__aix__)
+#define PLATFORM_ID "AIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+#define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+#define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+#define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+#define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+#define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+#define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+#define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+#define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+#define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+#define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+#define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+#define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+#define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+#define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+#if defined(__LINUX__)
+#define PLATFORM_ID "Linux"
+
+#elif defined(__DOS__)
+#define PLATFORM_ID "DOS"
+
+#elif defined(__OS2__)
+#define PLATFORM_ID "OS2"
+
+#elif defined(__WINDOWS__)
+#define PLATFORM_ID "Windows3x"
+
+#elif defined(__VXWORKS__)
+#define PLATFORM_ID "VxWorks"
+
+#else /* unknown platform */
+#define PLATFORM_ID
+#endif
+
+#elif defined(__INTEGRITY)
+#if defined(INT_178B)
+#define PLATFORM_ID "Integrity178"
+
+#else /* regular Integrity */
+#define PLATFORM_ID "Integrity"
+#endif
+
+#elif defined(_ADI_COMPILER)
+#define PLATFORM_ID "ADSP"
+
+#else /* unknown platform */
+#define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+ the architecture of the compiler being used. This is because
+ the compilers do not have flags that can change the architecture,
+ but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+#if defined(_M_IA64)
+#define ARCHITECTURE_ID "IA64"
+
+#elif defined(_M_ARM64EC)
+#define ARCHITECTURE_ID "ARM64EC"
+
+#elif defined(_M_X64) || defined(_M_AMD64)
+#define ARCHITECTURE_ID "x64"
+
+#elif defined(_M_IX86)
+#define ARCHITECTURE_ID "X86"
+
+#elif defined(_M_ARM64)
+#define ARCHITECTURE_ID "ARM64"
+
+#elif defined(_M_ARM)
+#if _M_ARM == 4
+#define ARCHITECTURE_ID "ARMV4I"
+#elif _M_ARM == 5
+#define ARCHITECTURE_ID "ARMV5I"
+#else
+#define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+#endif
+
+#elif defined(_M_MIPS)
+#define ARCHITECTURE_ID "MIPS"
+
+#elif defined(_M_SH)
+#define ARCHITECTURE_ID "SHx"
+
+#else /* unknown architecture */
+#define ARCHITECTURE_ID ""
+#endif
+
+#elif defined(__WATCOMC__)
+#if defined(_M_I86)
+#define ARCHITECTURE_ID "I86"
+
+#elif defined(_M_IX86)
+#define ARCHITECTURE_ID "X86"
+
+#else /* unknown architecture */
+#define ARCHITECTURE_ID ""
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+#if defined(__ICCARM__)
+#define ARCHITECTURE_ID "ARM"
+
+#elif defined(__ICCRX__)
+#define ARCHITECTURE_ID "RX"
+
+#elif defined(__ICCRH850__)
+#define ARCHITECTURE_ID "RH850"
+
+#elif defined(__ICCRL78__)
+#define ARCHITECTURE_ID "RL78"
+
+#elif defined(__ICCRISCV__)
+#define ARCHITECTURE_ID "RISCV"
+
+#elif defined(__ICCAVR__)
+#define ARCHITECTURE_ID "AVR"
+
+#elif defined(__ICC430__)
+#define ARCHITECTURE_ID "MSP430"
+
+#elif defined(__ICCV850__)
+#define ARCHITECTURE_ID "V850"
+
+#elif defined(__ICC8051__)
+#define ARCHITECTURE_ID "8051"
+
+#elif defined(__ICCSTM8__)
+#define ARCHITECTURE_ID "STM8"
+
+#else /* unknown architecture */
+#define ARCHITECTURE_ID ""
+#endif
+
+#elif defined(__ghs__)
+#if defined(__PPC64__)
+#define ARCHITECTURE_ID "PPC64"
+
+#elif defined(__ppc__)
+#define ARCHITECTURE_ID "PPC"
+
+#elif defined(__ARM__)
+#define ARCHITECTURE_ID "ARM"
+
+#elif defined(__x86_64__)
+#define ARCHITECTURE_ID "x64"
+
+#elif defined(__i386__)
+#define ARCHITECTURE_ID "X86"
+
+#else /* unknown architecture */
+#define ARCHITECTURE_ID ""
+#endif
+
+#elif defined(__TI_COMPILER_VERSION__)
+#if defined(__TI_ARM__)
+#define ARCHITECTURE_ID "ARM"
+
+#elif defined(__MSP430__)
+#define ARCHITECTURE_ID "MSP430"
+
+#elif defined(__TMS320C28XX__)
+#define ARCHITECTURE_ID "TMS320C28x"
+
+#elif defined(__TMS320C6X__) || defined(_TMS320C6X)
+#define ARCHITECTURE_ID "TMS320C6x"
+
+#else /* unknown architecture */
+#define ARCHITECTURE_ID ""
+#endif
+
+#elif defined(__ADSPSHARC__)
+#define ARCHITECTURE_ID "SHARC"
+
+#elif defined(__ADSPBLACKFIN__)
+#define ARCHITECTURE_ID "Blackfin"
+
+#elif defined(__TASKING__)
+
+#if defined(__CTC__) || defined(__CPTC__)
+#define ARCHITECTURE_ID "TriCore"
+
+#elif defined(__CMCS__)
+#define ARCHITECTURE_ID "MCS"
+
+#elif defined(__CARM__)
+#define ARCHITECTURE_ID "ARM"
+
+#elif defined(__CARC__)
+#define ARCHITECTURE_ID "ARC"
+
+#elif defined(__C51__)
+#define ARCHITECTURE_ID "8051"
+
+#elif defined(__CPCP__)
+#define ARCHITECTURE_ID "PCP"
+
+#else
+#define ARCHITECTURE_ID ""
+#endif
+
+#else
+#define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals. */
+#define DEC(n) \
+ ('0' + (((n) / 10000000) % 10)), ('0' + (((n) / 1000000) % 10)), \
+ ('0' + (((n) / 100000) % 10)), ('0' + (((n) / 10000) % 10)), \
+ ('0' + (((n) / 1000) % 10)), ('0' + (((n) / 100) % 10)), \
+ ('0' + (((n) / 10) % 10)), ('0' + ((n) % 10))
+
+/* Convert integer to hex digit literals. */
+#define HEX(n) \
+ ('0' + ((n) >> 28 & 0xF)), ('0' + ((n) >> 24 & 0xF)), \
+ ('0' + ((n) >> 20 & 0xF)), ('0' + ((n) >> 16 & 0xF)), \
+ ('0' + ((n) >> 12 & 0xF)), ('0' + ((n) >> 8 & 0xF)), \
+ ('0' + ((n) >> 4 & 0xF)), ('0' + ((n) & 0xF))
+
+/* Construct a string literal encoding the version number. */
+#ifdef COMPILER_VERSION
+char const *info_version = "INFO"
+ ":"
+ "compiler_version[" COMPILER_VERSION "]";
+
+/* Construct a string literal encoding the version number components. */
+#elif defined(COMPILER_VERSION_MAJOR)
+char const info_version[] = {'I',
+ 'N',
+ 'F',
+ 'O',
+ ':',
+ 'c',
+ 'o',
+ 'm',
+ 'p',
+ 'i',
+ 'l',
+ 'e',
+ 'r',
+ '_',
+ 'v',
+ 'e',
+ 'r',
+ 's',
+ 'i',
+ 'o',
+ 'n',
+ '[',
+ COMPILER_VERSION_MAJOR,
+#ifdef COMPILER_VERSION_MINOR
+ '.',
+ COMPILER_VERSION_MINOR,
+#ifdef COMPILER_VERSION_PATCH
+ '.',
+ COMPILER_VERSION_PATCH,
+#ifdef COMPILER_VERSION_TWEAK
+ '.',
+ COMPILER_VERSION_TWEAK,
+#endif
+#endif
+#endif
+ ']',
+ '\0'};
+#endif
+
+/* Construct a string literal encoding the internal version number. */
+#ifdef COMPILER_VERSION_INTERNAL
+char const info_version_internal[] = {
+ 'I', 'N', 'F', 'O', ':', 'c', 'o', 'm',
+ 'p', 'i', 'l', 'e', 'r', '_', 'v', 'e',
+ 'r', 's', 'i', 'o', 'n', '_', 'i', 'n',
+ 't', 'e', 'r', 'n', 'a', 'l', '[', COMPILER_VERSION_INTERNAL,
+ ']', '\0'};
+#elif defined(COMPILER_VERSION_INTERNAL_STR)
+char const *info_version_internal =
+ "INFO"
+ ":"
+ "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {'I',
+ 'N',
+ 'F',
+ 'O',
+ ':',
+ 's',
+ 'i',
+ 'm',
+ 'u',
+ 'l',
+ 'a',
+ 't',
+ 'e',
+ '_',
+ 'v',
+ 'e',
+ 'r',
+ 's',
+ 'i',
+ 'o',
+ 'n',
+ '[',
+ SIMULATE_VERSION_MAJOR,
+#ifdef SIMULATE_VERSION_MINOR
+ '.',
+ SIMULATE_VERSION_MINOR,
+#ifdef SIMULATE_VERSION_PATCH
+ '.',
+ SIMULATE_VERSION_PATCH,
+#ifdef SIMULATE_VERSION_TWEAK
+ '.',
+ SIMULATE_VERSION_TWEAK,
+#endif
+#endif
+#endif
+ ']',
+ '\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const *info_platform = "INFO"
+ ":"
+ "platform[" PLATFORM_ID "]";
+char const *info_arch = "INFO"
+ ":"
+ "arch[" ARCHITECTURE_ID "]";
+
+#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
+#if defined(__INTEL_CXX11_MODE__)
+#if defined(__cpp_aggregate_nsdmi)
+#define CXX_STD 201402L
+#else
+#define CXX_STD 201103L
+#endif
+#else
+#define CXX_STD 199711L
+#endif
+#elif defined(_MSC_VER) && defined(_MSVC_LANG)
+#define CXX_STD _MSVC_LANG
+#else
+#define CXX_STD __cplusplus
+#endif
+
+const char *info_language_standard_default = "INFO"
+ ":"
+ "standard_default["
+#if CXX_STD > 202002L
+ "23"
+#elif CXX_STD > 201703L
+ "20"
+#elif CXX_STD >= 201703L
+ "17"
+#elif CXX_STD >= 201402L
+ "14"
+#elif CXX_STD >= 201103L
+ "11"
+#else
+ "98"
+#endif
+ "]";
+
+const char *info_language_extensions_default = "INFO"
+ ":"
+ "extensions_default["
+#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \
+ defined(__TI_COMPILER_VERSION__)) && \
+ !defined(__STRICT_ANSI__)
+ "ON"
+#else
+ "OFF"
+#endif
+ "]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char *argv[]) {
+ int require = 0;
+ require += info_compiler[argc];
+ require += info_platform[argc];
+ require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+ require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+ require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+ require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+ require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+ require += info_cray[argc];
+#endif
+ require += info_language_standard_default[argc];
+ require += info_language_extensions_default[argc];
+ (void)argv;
+ return require;
+}
diff --git a/polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/a.out b/polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/a.out
new file mode 100644
index 0000000000000000000000000000000000000000..e926ed95aca95fa7a394ccb140ffe97fb42360fe
GIT binary patch
literal 16096
zcmeHOeQX>@6`#9&IW&ncX+zwkG)HNwq|_VRaa_05<Q)5)GqRI3aoRu{R%_qdcj7+G
z-5#|gXoFH9CJAb21^iK at s6rq<DuINGT8ZFLRMe`VL_#7+2!)S|Af>GlU#5+6yf^cH
z>+^CB0{RCM`z-I9_j?~R`(}1;c6a8{<Un6E5>cQ<>ivqPM9d%wQJlG33d9nsQ>~=q
zyVNaeDang9X7mZeNNea~bUtqod=YW>YvMv3ev5&r2195ebM{+^GTa~{a3$x#eoI&(
za*+R8DgcMxuP at HdL~(ue`AP8uul3`m%rqPOnXdUfC3)E^9DXe7Q?QIZb%!D0(^4Ne
z^2s^j|4zwgkhe$}@StBt{DQn!{J^;mrv0ya>Hnm at z2f&uT!&FXewTq2IO at Bf{G at Be
z;`$8Tyie*|s2^gIe{e~!+M3G_ceHQKrJHlvLS>?PqO+s9qunYOtu|dTw<}KnJf?Q-
zKA<SfG-HxR6+LQX#ADq}qG$WI=bn7xZx0 at MtE=hcx2EsAS)IGH<36_GcC!!LFmXH#
z5tg~kb+V1g$0w;IW1IK|_osOcEO21IHFb17gvION_5yfe0sKb7Z>tkW**0Z##4dYI
z$+PoLwm`_pgkz6p3r;S3#8s^3{C22a1N}RD>^7^-+U}RPwJW=SXwXi(C3h at a_T19Y
zU{9`CaEF}XoJ+CB^2LHgw~c9CL(X7C|CyeOkj(AHc&V(<F6XTC_+#w5r at ugHj?x{^
z5UyifKk?NDpOxzy_$3M0kT81SkYfQn9yfMP0lXx5Jb-^j at XZ1I3Bg+e_%niE+ at Un_
z*x|7Nx>SSn7z16d!7;X3H&cW2xCPDD;QD?GMaaVpgc%4k5N06EK$w9r17QaKCo=G-
z##`S^9lO$yI<e#zTa`+EYTAod&!>+4sNn_OzUua;39fGX3LP6aCKTIOH=QMEv~gpv
z(sJu-{Zkh{oSOPg>e%mQ_6{Xmr(0i2o$7j-0#w(Q$@I^oR^!IUbUeb(5t2H!<auWI
z%zA67>Ib+?RWGkzYTS5~4POvW_NTS|_RligaxFDAlREeMj?}r?MXAV(sSDS<n<&60
z3D8izWZDIPZtu~qK~k&Adk>_Jbw#<DntIh+kvh?}l!VJ$s at 3Y{G#y^lVIqgg*RP-b
z|L`y=xp08|rao~cHC4Iv<K$ItX6nS+m+49UMDj}NOR32D#%ERI+385~D&fyBfPbSN
zZUUTI`^+jz^RtU%ew4 at RSyObc9)2Qu^)PiCH&yqk-;3PTkirav83;2FW+2Q!n1L_@
zVFtnsgc%4k5N6>2IRpIt>w46`yKm3EBgOo9Hs_WO(O1dC^R4IU?T@*oa<*7F)S{_%
zn`H_uexc>C(jMbE#~Uq{@`nca>#BfGX(V$<%JiMEkakLG`rtR}RC3;-*1JXHPIzvC
zYbpD>J-c<QA{!RHZ!<NIzef$dQLR2iJWZV6Jb1+Eb%i=SQ>{KloWI2~MUL!Kk%?Gj
z!-{1MkJAS+#(B-bX0pG74SJX9FL}39v7P>BUawX)uqxKKs_6rbH$2>MRP9)Q&z;+D
z=g)}RpX<E{I|hk3rbqwJQQWUHkX#k}bhKyX(&!ngnSqeP41^g7GZ1DV%s`ldFau!*
z!VH8N2s7~ZW&rCIu|5%N0QJKQRkZ at u$@;~WBL7U*Io>QX)<JF%8ILgQMaFtae(qs{
z{x8?6MV7xUiwUttFvAaRM7%DM>7wZ0VMKLY_zl9Fgs&A2CT?n4)*&tvMT=B~c67>#
z(_&9eh<B^VuzRa&+Dqmdx+bz&OimxT=k(f>9xwIz&B*!uU1Y?Q at NXZ(`tbiUBG#qG
z<0cT+onoCS)|Fx%>8_rhd*hoA3|9(XB~B0e^n~BsQPE=CBW>+gOS{#&MHJU-8h68D
z^~Y+^hWjN#nv>F at aWUZa#r5pD-=b=j8kcb^<|;1unE<{`a9jtl at 25gUHL1>oLAZTP
zyc#<~Pxlzt8l=O=>7VPxbp`x56(Z_Jh3f?P*Qijh{b#j(OeNyRvdu7xP~ZMM;SpNN
zef-^GSi|bY|CP3<t0gdAey{yj`|I!#=1pz?PX9Ur9;1Y;fl$Mn36IyvC?3 at KI;9do
z4DTmArq=m+hITLEYod(`_Z#33h<z~5h>j1dIbI at sb#$G=xQ6CY#;Il%H;7!O>T?=j
zr-JLRpAtN{p8ETQ$7q}+5{PX0LxiuP at sN=5rr#lv>W301Cib`=oR>HlZ;19wiL*uS
zyZW6GDS3YipI6ZSHHp7D5PwC~KUIX*{0_ozn}-;ooA5PJy2}QxmtBOfrv8d2j2+sq
z_K%djR;x%W at SWkT?KxwLfU;K^9koW(+-iN>%iANoUcXG1>7qTBD-Jt3JM9%qW!tGt
zD1OJ7b3He0wbZxZodQ|gDV3Z_+bwvdNi|w>@~)k(<nxo{QX|=9>CH3k8FW74_8dIe
zBX2VM)7HrNxUxSq(At(Qj27|clH&C3>mE$n$=$s+?IY;@;O_3h{vLwq)u)|Ii8j@{
zPuaT$_U!B)u=n)!?N1KbL)|+ElH?KG=8(W{hJUq#!A(1!qx4x)6c)^O1`_7)ZLrhj
zqMf1FqrC5-e-Bxuvjw|ScGF6q3f`?6Dd!Z%D$bZ||MPoOMR^n-yy2zFhRbECSaxa9
zMhi)Y4(|sHzM{R(u8a9wJ^YmL1`pj=rm6h?S1GGJnfIJw;$F${3`*Go?fV#4R-x#*
z)>xrpjhBk!ZpoXhfrcwt+O(5R3)H={znKT6HqSWajIz>`1**buuVggx;(DH7ldk0E
z9ClC^4=H7h=gh$xD^kIuoGOdQC0Q1A|5<KEMq(yS{*a8n8Ir~WWeV=(vm?|T?tY81
zuPo|~JPq+Wm*>9?@%)T#4gOpH;C?&I&k&exYw0~C at EnRRe@zSRD-*Rp&x71Sg<AjM
z{xW{AUQ4(i1LNQ0T7S$3z~e9!9`t{Z at W0X=4DH9f6CCwp-s#`hB%VW@=bZ4zycGO#
zvEw#!?%<F4WR at _V!oVN%T=3(htEFK6KT1lTW5OTvN^s2A(SF#0KSKUIXN8P;D|m}k
z9&A6_bcza`Q}|;Z4UTy<>JOg(7s;2;33~r`MSfrK{6Hp}g8lbpLTmlw;s-9Gc+dT8
z0e?E+-y#Zd*dYL9 at NWkE6QThBe4xYNhj`x!_+wrJj^``b2haa|;*b2RxL68*NklM#
zA*vrxiJJ)jSHuAPF5l7=g7yD|;9CD#@dtl0;E(<X{BtVMnpS^bB<91|j~TRw4E|g4
zZLIOf{Cl>UKqA-~X-)?I1}S*#$z#Oa{Fm0xGEGbW@%U$gANujDgs}<y at mx8*m93RZ
z=;Pc0{@}Bus`d9BT8vNUoU1Ou5AZcAFoyau at 9Px*puL<9+|?oi7!z|JhrguJ$KhYg
zF?M_-Dr6)e?t^?C^Ro)tgZtld!q9dq`jp_0sYLe&f}>ue<vC}4|I_@#LbM{_5D?Wr
E0G?`BlmGw#
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/CMakeConfigureLog.yaml b/polymorphism-benchmark/CMakeFiles/CMakeConfigureLog.yaml
new file mode 100644
index 00000000000000..dafe4ba1a9efd5
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/CMakeConfigureLog.yaml
@@ -0,0 +1,1825 @@
+
+---
+events:
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineSystem.cmake:233 (message)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ The system is: Linux - 4.4.0-26100-Microsoft - x86_64
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:17 (message)"
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)"
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
+ Compiler: /usr/bin/c++
+ Build flags:
+ Id flags:
+
+ The output was:
+ 0
+
+
+ Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
+
+ The CXX compiler identification is GNU, found in:
+ /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/a.out
+
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
+ - "CMakeLists.txt:2 (project)"
+ checks:
+ - "Detecting CXX compiler ABI info"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-HMcAnz"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-HMcAnz"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: ""
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ buildResult:
+ variable: "CMAKE_CXX_ABI_COMPILED"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-HMcAnz'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_3181a/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_3181a.dir/build.make CMakeFiles/cmTC_3181a.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-HMcAnz'
+ Building CXX object CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o
+ /usr/bin/c++ -v -o CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp
+ Using built-in specs.
+ COLLECT_GCC=/usr/bin/c++
+ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
+ OFFLOAD_TARGET_DEFAULT=1
+ Target: x86_64-linux-gnu
+ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
+ Thread model: posix
+ Supported LTO compression algorithms: zlib zstd
+ gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1)
+ COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3181a.dir/'
+ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_3181a.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/meinersbur/ccHDXLfe.s
+ GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)
+ compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP
+
+ GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
+ ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13"
+ ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
+ ignoring nonexistent directory "/usr/local/include"
+ ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu"
+ ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed"
+ #include "..." search starts here:
+ #include <...> search starts here:
+ /usr/include/c++/13
+ /usr/include/x86_64-linux-gnu/c++/13
+ /usr/include/c++/13/backward
+ /usr/lib/gcc/x86_64-linux-gnu/13/include
+ /usr/x86_64-linux-gnu/include
+ /usr/include/x86_64-linux-gnu
+ /usr/include
+ End of search list.
+ Compiler executable checksum: 7896445e4990772fdae9dc0659a99266
+ COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3181a.dir/'
+ as -v --64 -o CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o /tmp/meinersbur/ccHDXLfe.s
+ GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42
+ COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/
+ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/
+ COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.'
+ Linking CXX executable cmTC_3181a
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3181a.dir/link.txt --verbose=1
+ /usr/bin/c++ -v CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_3181a
+ Using built-in specs.
+ COLLECT_GCC=/usr/bin/c++
+ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper
+ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
+ OFFLOAD_TARGET_DEFAULT=1
+ Target: x86_64-linux-gnu
+ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
+ Thread model: posix
+ Supported LTO compression algorithms: zlib zstd
+ gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1)
+ COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/
+ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/
+ COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3181a' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3181a.'
+ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/meinersbur/ccA4XIQh.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3181a /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o
+ COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3181a' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3181a.'
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-HMcAnz'
+
+ exitCode: 0
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:127 (message)"
+ - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ Parsed CXX implicit include dir info: rv=done
+ found start of include info
+ found start of implicit include info
+ add: [/usr/include/c++/13]
+ add: [/usr/include/x86_64-linux-gnu/c++/13]
+ add: [/usr/include/c++/13/backward]
+ add: [/usr/lib/gcc/x86_64-linux-gnu/13/include]
+ add: [/usr/x86_64-linux-gnu/include]
+ add: [/usr/include/x86_64-linux-gnu]
+ add: [/usr/include]
+ end of search list found
+ collapse include dir [/usr/include/c++/13] ==> [/usr/include/c++/13]
+ collapse include dir [/usr/include/x86_64-linux-gnu/c++/13] ==> [/usr/include/x86_64-linux-gnu/c++/13]
+ collapse include dir [/usr/include/c++/13/backward] ==> [/usr/include/c++/13/backward]
+ collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/13/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/13/include]
+ collapse include dir [/usr/x86_64-linux-gnu/include] ==> [/usr/x86_64-linux-gnu/include]
+ collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu]
+ collapse include dir [/usr/include] ==> [/usr/include]
+ implicit include dirs: [/usr/include/c++/13;/usr/include/x86_64-linux-gnu/c++/13;/usr/include/c++/13/backward;/usr/lib/gcc/x86_64-linux-gnu/13/include;/usr/x86_64-linux-gnu/include;/usr/include/x86_64-linux-gnu;/usr/include]
+
+
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:159 (message)"
+ - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ Parsed CXX implicit link information:
+ link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)]
+ ignore line: [Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-HMcAnz']
+ ignore line: []
+ ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_3181a/fast]
+ ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_3181a.dir/build.make CMakeFiles/cmTC_3181a.dir/build]
+ ignore line: [gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-HMcAnz']
+ ignore line: [Building CXX object CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o]
+ ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp]
+ ignore line: [Using built-in specs.]
+ ignore line: [COLLECT_GCC=/usr/bin/c++]
+ ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
+ ignore line: [OFFLOAD_TARGET_DEFAULT=1]
+ ignore line: [Target: x86_64-linux-gnu]
+ ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2]
+ ignore line: [Thread model: posix]
+ ignore line: [Supported LTO compression algorithms: zlib zstd]
+ ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3181a.dir/']
+ ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_3181a.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/meinersbur/ccHDXLfe.s]
+ ignore line: [GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)]
+ ignore line: [ compiled by GNU C version 13.3.0 GMP version 6.3.0 MPFR version 4.2.1 MPC version 1.3.1 isl version isl-0.26-GMP]
+ ignore line: []
+ ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
+ ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13"]
+ ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"]
+ ignore line: [ignoring nonexistent directory "/usr/local/include"]
+ ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu"]
+ ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed"]
+ ignore line: [#include "..." search starts here:]
+ ignore line: [#include <...> search starts here:]
+ ignore line: [ /usr/include/c++/13]
+ ignore line: [ /usr/include/x86_64-linux-gnu/c++/13]
+ ignore line: [ /usr/include/c++/13/backward]
+ ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/13/include]
+ ignore line: [ /usr/x86_64-linux-gnu/include]
+ ignore line: [ /usr/include/x86_64-linux-gnu]
+ ignore line: [ /usr/include]
+ ignore line: [End of search list.]
+ ignore line: [Compiler executable checksum: 7896445e4990772fdae9dc0659a99266]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3181a.dir/']
+ ignore line: [ as -v --64 -o CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o /tmp/meinersbur/ccHDXLfe.s]
+ ignore line: [GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42]
+ ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/]
+ ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.']
+ ignore line: [Linking CXX executable cmTC_3181a]
+ ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3181a.dir/link.txt --verbose=1]
+ ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_3181a ]
+ ignore line: [Using built-in specs.]
+ ignore line: [COLLECT_GCC=/usr/bin/c++]
+ ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper]
+ ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
+ ignore line: [OFFLOAD_TARGET_DEFAULT=1]
+ ignore line: [Target: x86_64-linux-gnu]
+ ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2]
+ ignore line: [Thread model: posix]
+ ignore line: [Supported LTO compression algorithms: zlib zstd]
+ ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ]
+ ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/]
+ ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3181a' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3181a.']
+ link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/meinersbur/ccA4XIQh.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3181a /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o]
+ arg [/usr/libexec/gcc/x86_64-linux-gnu/13/collect2] ==> ignore
+ arg [-plugin] ==> ignore
+ arg [/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so] ==> ignore
+ arg [-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] ==> ignore
+ arg [-plugin-opt=-fresolution=/tmp/meinersbur/ccA4XIQh.res] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [--build-id] ==> ignore
+ arg [--eh-frame-hdr] ==> ignore
+ arg [-m] ==> ignore
+ arg [elf_x86_64] ==> ignore
+ arg [--hash-style=gnu] ==> ignore
+ arg [--as-needed] ==> ignore
+ arg [-dynamic-linker] ==> ignore
+ arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+ arg [-pie] ==> ignore
+ arg [-znow] ==> ignore
+ arg [-zrelro] ==> ignore
+ arg [-o] ==> ignore
+ arg [cmTC_3181a] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib]
+ arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+ arg [-L/lib/../lib] ==> dir [/lib/../lib]
+ arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+ arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..]
+ arg [CMakeFiles/cmTC_3181a.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
+ arg [-lstdc++] ==> lib [stdc++]
+ arg [-lm] ==> lib [m]
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [-lgcc] ==> lib [gcc]
+ arg [-lc] ==> lib [c]
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [-lgcc] ==> lib [gcc]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o]
+ collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> [/usr/lib/x86_64-linux-gnu/Scrt1.o]
+ collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> [/usr/lib/x86_64-linux-gnu/crti.o]
+ collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] ==> [/usr/lib/x86_64-linux-gnu/crtn.o]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13] ==> [/usr/lib/gcc/x86_64-linux-gnu/13]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> [/usr/lib]
+ collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+ collapse library dir [/lib/../lib] ==> [/lib]
+ collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> [/usr/lib]
+ implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc]
+ implicit objs: [/usr/lib/x86_64-linux-gnu/Scrt1.o;/usr/lib/x86_64-linux-gnu/crti.o;/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o;/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o;/usr/lib/x86_64-linux-gnu/crtn.o]
+ implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/13;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+ implicit fwks: []
+
+
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CheckLibraryExists.cmake:69 (try_compile)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:136 (check_library_exists)"
+ checks:
+ - "Looking for shm_open in rt"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-5U1Uus"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-5U1Uus"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: ""
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_LIB_RT"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-5U1Uus'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_27144/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_27144.dir/build.make CMakeFiles/cmTC_27144.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-5U1Uus'
+ Building CXX object CMakeFiles/cmTC_27144.dir/CheckFunctionExists.cxx.o
+ /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=shm_open -std=c++17 -o CMakeFiles/cmTC_27144.dir/CheckFunctionExists.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-5U1Uus/CheckFunctionExists.cxx
+ Linking CXX executable cmTC_27144
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_27144.dir/link.txt --verbose=1
+ /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=shm_open CMakeFiles/cmTC_27144.dir/CheckFunctionExists.cxx.o -o cmTC_27144 -lrt
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-5U1Uus'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:194 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WALL"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-mzwTEL"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-mzwTEL"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: ""
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WALL"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-mzwTEL'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_217dc/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_217dc.dir/build.make CMakeFiles/cmTC_217dc.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-mzwTEL'
+ Building CXX object CMakeFiles/cmTC_217dc.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WALL -Wall -std=c++17 -Wall -o CMakeFiles/cmTC_217dc.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-mzwTEL/src.cxx
+ Linking CXX executable cmTC_217dc
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_217dc.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall CMakeFiles/cmTC_217dc.dir/src.cxx.o -o cmTC_217dc
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-mzwTEL'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:195 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WEXTRA"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-xsSGaM"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-xsSGaM"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WEXTRA"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-xsSGaM'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_fd1be/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_fd1be.dir/build.make CMakeFiles/cmTC_fd1be.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-xsSGaM'
+ Building CXX object CMakeFiles/cmTC_fd1be.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WEXTRA -Wall -Wextra -std=c++17 -Wextra -o CMakeFiles/cmTC_fd1be.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-xsSGaM/src.cxx
+ Linking CXX executable cmTC_fd1be
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_fd1be.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra CMakeFiles/cmTC_fd1be.dir/src.cxx.o -o cmTC_fd1be
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-xsSGaM'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:196 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSHADOW"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nJGfZF"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nJGfZF"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSHADOW"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nJGfZF'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_11595/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_11595.dir/build.make CMakeFiles/cmTC_11595.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nJGfZF'
+ Building CXX object CMakeFiles/cmTC_11595.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WSHADOW -Wall -Wextra -Wshadow -std=c++17 -Wshadow -o CMakeFiles/cmTC_11595.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nJGfZF/src.cxx
+ Linking CXX executable cmTC_11595
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_11595.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow CMakeFiles/cmTC_11595.dir/src.cxx.o -o cmTC_11595
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nJGfZF'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:197 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WFLOAT_EQUAL"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XXNSoj"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XXNSoj"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WFLOAT_EQUAL"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XXNSoj'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b98df/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_b98df.dir/build.make CMakeFiles/cmTC_b98df.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XXNSoj'
+ Building CXX object CMakeFiles/cmTC_b98df.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WFLOAT_EQUAL -Wall -Wextra -Wshadow -Wfloat-equal -std=c++17 -Wfloat-equal -o CMakeFiles/cmTC_b98df.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XXNSoj/src.cxx
+ Linking CXX executable cmTC_b98df
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b98df.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal CMakeFiles/cmTC_b98df.dir/src.cxx.o -o cmTC_b98df
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XXNSoj'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:198 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WOLD_STYLE_CAST"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lYWA3n"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lYWA3n"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WOLD_STYLE_CAST"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lYWA3n'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_11120/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_11120.dir/build.make CMakeFiles/cmTC_11120.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lYWA3n'
+ Building CXX object CMakeFiles/cmTC_11120.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WOLD_STYLE_CAST -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -std=c++17 -Wold-style-cast -o CMakeFiles/cmTC_11120.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lYWA3n/src.cxx
+ Linking CXX executable cmTC_11120
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_11120.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast CMakeFiles/cmTC_11120.dir/src.cxx.o -o cmTC_11120
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lYWA3n'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:199 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WCONVERSION"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-9HKDuT"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-9HKDuT"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WCONVERSION"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-9HKDuT'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_6f857/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_6f857.dir/build.make CMakeFiles/cmTC_6f857.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-9HKDuT'
+ Building CXX object CMakeFiles/cmTC_6f857.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WCONVERSION -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -std=c++17 -Wconversion -o CMakeFiles/cmTC_6f857.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-9HKDuT/src.cxx
+ Linking CXX executable cmTC_6f857
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6f857.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion CMakeFiles/cmTC_6f857.dir/src.cxx.o -o cmTC_6f857
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-9HKDuT'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:200 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WFORMAT_2"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-V2KaI8"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-V2KaI8"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WFORMAT_2"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-V2KaI8'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_80b6b/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_80b6b.dir/build.make CMakeFiles/cmTC_80b6b.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-V2KaI8'
+ Building CXX object CMakeFiles/cmTC_80b6b.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WFORMAT_2 -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -std=c++17 -Wformat=2 -o CMakeFiles/cmTC_80b6b.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-V2KaI8/src.cxx
+ Linking CXX executable cmTC_80b6b
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_80b6b.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 CMakeFiles/cmTC_80b6b.dir/src.cxx.o -o cmTC_80b6b
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-V2KaI8'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:206 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NIQza8"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NIQza8"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSUGGEST_OVERRIDE"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NIQza8'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_1d11c/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_1d11c.dir/build.make CMakeFiles/cmTC_1d11c.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NIQza8'
+ Building CXX object CMakeFiles/cmTC_1d11c.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WSUGGEST_OVERRIDE -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -std=c++17 -Wsuggest-override -o CMakeFiles/cmTC_1d11c.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NIQza8/src.cxx
+ Linking CXX executable cmTC_1d11c
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1d11c.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override CMakeFiles/cmTC_1d11c.dir/src.cxx.o -o cmTC_1d11c
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NIQza8'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:208 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_PEDANTIC"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JWCJnD"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JWCJnD"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_PEDANTIC"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JWCJnD'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_31081/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_31081.dir/build.make CMakeFiles/cmTC_31081.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JWCJnD'
+ Building CXX object CMakeFiles/cmTC_31081.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_PEDANTIC -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -std=c++17 -pedantic -o CMakeFiles/cmTC_31081.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JWCJnD/src.cxx
+ Linking CXX executable cmTC_31081
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_31081.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic CMakeFiles/cmTC_31081.dir/src.cxx.o -o cmTC_31081
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JWCJnD'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:209 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XbstCe"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XbstCe"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_PEDANTIC_ERRORS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XbstCe'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_87bd4/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_87bd4.dir/build.make CMakeFiles/cmTC_87bd4.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XbstCe'
+ Building CXX object CMakeFiles/cmTC_87bd4.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_PEDANTIC_ERRORS -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -std=c++17 -pedantic-errors -o CMakeFiles/cmTC_87bd4.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XbstCe/src.cxx
+ Linking CXX executable cmTC_87bd4
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_87bd4.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors CMakeFiles/cmTC_87bd4.dir/src.cxx.o -o cmTC_87bd4
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-XbstCe'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:210 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-ZgcPdJ"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-ZgcPdJ"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSHORTEN_64_TO_32"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-ZgcPdJ'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_e045a/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_e045a.dir/build.make CMakeFiles/cmTC_e045a.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-ZgcPdJ'
+ Building CXX object CMakeFiles/cmTC_e045a.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WSHORTEN_64_TO_32 -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -Wshorten-64-to-32 -std=c++17 -Wshorten-64-to-32 -o CMakeFiles/cmTC_e045a.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-ZgcPdJ/src.cxx
+ c++: error: unrecognized command-line option '-Wshorten-64-to-32'
+ c++: error: unrecognized command-line option '-Wshorten-64-to-32'
+ gmake[1]: *** [CMakeFiles/cmTC_e045a.dir/build.make:78: CMakeFiles/cmTC_e045a.dir/src.cxx.o] Error 1
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-ZgcPdJ'
+ gmake: *** [Makefile:127: cmTC_e045a/fast] Error 2
+
+ exitCode: 2
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:211 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-PzfVzx"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-PzfVzx"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_FSTRICT_ALIASING"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-PzfVzx'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_14136/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_14136.dir/build.make CMakeFiles/cmTC_14136.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-PzfVzx'
+ Building CXX object CMakeFiles/cmTC_14136.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_FSTRICT_ALIASING -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -std=c++17 -fstrict-aliasing -o CMakeFiles/cmTC_14136.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-PzfVzx/src.cxx
+ Linking CXX executable cmTC_14136
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_14136.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing CMakeFiles/cmTC_14136.dir/src.cxx.o -o cmTC_14136
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-PzfVzx'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:214 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-VUreS3"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-VUreS3"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-VUreS3'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_be04a/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_be04a.dir/build.make CMakeFiles/cmTC_be04a.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-VUreS3'
+ Building CXX object CMakeFiles/cmTC_be04a.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -std=c++17 -Wno-deprecated-declarations -o CMakeFiles/cmTC_be04a.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-VUreS3/src.cxx
+ Linking CXX executable cmTC_be04a
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_be04a.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations CMakeFiles/cmTC_be04a.dir/src.cxx.o -o cmTC_be04a
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-VUreS3'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:235 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-175ByJ"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-175ByJ"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSTRICT_ALIASING"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-175ByJ'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_97a43/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_97a43.dir/build.make CMakeFiles/cmTC_97a43.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-175ByJ'
+ Building CXX object CMakeFiles/cmTC_97a43.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WSTRICT_ALIASING -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -Wstrict-aliasing -o CMakeFiles/cmTC_97a43.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-175ByJ/src.cxx
+ Linking CXX executable cmTC_97a43
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_97a43.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_97a43.dir/src.cxx.o -o cmTC_97a43
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-175ByJ'
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:239 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-R6UlwN"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-R6UlwN"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WTHREAD_SAFETY"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-R6UlwN'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_3e81c/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_3e81c.dir/build.make CMakeFiles/cmTC_3e81c.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-R6UlwN'
+ Building CXX object CMakeFiles/cmTC_3e81c.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WTHREAD_SAFETY -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -Wthread-safety -std=c++17 -Wthread-safety -o CMakeFiles/cmTC_3e81c.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-R6UlwN/src.cxx
+ c++: error: unrecognized command-line option '-Wthread-safety'
+ c++: error: unrecognized command-line option '-Wthread-safety'
+ gmake[1]: *** [CMakeFiles/cmTC_3e81c.dir/build.make:78: CMakeFiles/cmTC_3e81c.dir/src.cxx.o] Error 1
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-R6UlwN'
+ gmake: *** [Makefile:127: cmTC_3e81c/fast] Error 2
+
+ exitCode: 2
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:290 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_COVERAGE"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NM8rrX"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NM8rrX"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_COVERAGE"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NM8rrX'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_e14e5/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_e14e5.dir/build.make CMakeFiles/cmTC_e14e5.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NM8rrX'
+ Building CXX object CMakeFiles/cmTC_e14e5.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_COVERAGE -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing --coverage -std=c++17 --coverage -o CMakeFiles/cmTC_e14e5.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NM8rrX/src.cxx
+ Linking CXX executable cmTC_e14e5
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e14e5.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing --coverage CMakeFiles/cmTC_e14e5.dir/src.cxx.o -o cmTC_e14e5
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-NM8rrX'
+
+ exitCode: 0
+ -
+ kind: "try_run-v1"
+ backtrace:
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/CXXFeatureCheck.cmake:70 (try_run)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:332 (cxx_feature_check)"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "COMPILE_STATUS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_e0281/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_e0281.dir/build.make CMakeFiles/cmTC_e0281.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+ Building CXX object CMakeFiles/cmTC_e0281.dir/steady_clock.cpp.o
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -o CMakeFiles/cmTC_e0281.dir/steady_clock.cpp.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/steady_clock.cpp
+ Linking CXX executable cmTC_e0281
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e0281.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_e0281.dir/steady_clock.cpp.o -o cmTC_e0281
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+
+ exitCode: 0
+ runResult:
+ variable: "RUN_STATUS"
+ cached: true
+ stdout: |
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXSourceCompiles.cmake:52 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/FindThreads.cmake:99 (CHECK_CXX_SOURCE_COMPILES)"
+ - "/usr/share/cmake-3.28/Modules/FindThreads.cmake:163 (_threads_check_libc)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:335 (find_package)"
+ checks:
+ - "Performing Test CMAKE_HAVE_LIBC_PTHREAD"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-I010Hy"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-I010Hy"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "CMAKE_HAVE_LIBC_PTHREAD"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-I010Hy'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a5f15/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_a5f15.dir/build.make CMakeFiles/cmTC_a5f15.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-I010Hy'
+ Building CXX object CMakeFiles/cmTC_a5f15.dir/src.cxx.o
+ /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -o CMakeFiles/cmTC_a5f15.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-I010Hy/src.cxx
+ Linking CXX executable cmTC_a5f15
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a5f15.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_a5f15.dir/src.cxx.o -o cmTC_a5f15
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-I010Hy'
+
+ exitCode: 0
+ -
+ kind: "try_run-v1"
+ backtrace:
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/CXXFeatureCheck.cmake:70 (try_run)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:336 (cxx_feature_check)"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "COMPILE_STATUS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+
+ Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a2dad/fast
+ /usr/bin/gmake -f CMakeFiles/cmTC_a2dad.dir/build.make CMakeFiles/cmTC_a2dad.dir/build
+ gmake[1]: Entering directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+ Building CXX object CMakeFiles/cmTC_a2dad.dir/pthread_affinity.cpp.o
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -o CMakeFiles/cmTC_a2dad.dir/pthread_affinity.cpp.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/pthread_affinity.cpp
+ Linking CXX executable cmTC_a2dad
+ /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a2dad.dir/link.txt --verbose=1
+ /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_a2dad.dir/pthread_affinity.cpp.o -o cmTC_a2dad
+ gmake[1]: Leaving directory '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+
+ exitCode: 0
+ runResult:
+ variable: "RUN_STATUS"
+ cached: true
+ stdout: |
+ exitCode: 0
+...
+
+---
+events:
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineSystem.cmake:233 (message)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ The system is: Linux - 4.4.0-26100-Microsoft - x86_64
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:17 (message)"
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)"
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
+ Compiler: /usr/bin/c++
+ Build flags:
+ Id flags:
+
+ The output was:
+ 0
+
+
+ Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
+
+ The CXX compiler identification is GNU, found in:
+ /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/3.28.3/CompilerIdCXX/a.out
+
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
+ - "CMakeLists.txt:2 (project)"
+ checks:
+ - "Detecting CXX compiler ABI info"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-zVzaws"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-zVzaws"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: ""
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ buildResult:
+ variable: "CMAKE_CXX_ABI_COMPILED"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-zVzaws'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_71a83
+ [ 50%/0.025s :: 1->1->1 (of 2)] /usr/bin/c++ -v -o CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp
+ Using built-in specs.
+ COLLECT_GCC=/usr/bin/c++
+ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
+ OFFLOAD_TARGET_DEFAULT=1
+ Target: x86_64-linux-gnu
+ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
+ Thread model: posix
+ Supported LTO compression algorithms: zlib zstd
+ gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1)
+ COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_71a83.dir/'
+ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_71a83.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/meinersbur/ccaSJVv4.s
+ GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)
+ compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP
+
+ GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
+ ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13"
+ ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
+ ignoring nonexistent directory "/usr/local/include"
+ ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu"
+ ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed"
+ #include "..." search starts here:
+ #include <...> search starts here:
+ /usr/include/c++/13
+ /usr/include/x86_64-linux-gnu/c++/13
+ /usr/include/c++/13/backward
+ /usr/lib/gcc/x86_64-linux-gnu/13/include
+ /usr/x86_64-linux-gnu/include
+ /usr/include/x86_64-linux-gnu
+ /usr/include
+ End of search list.
+ Compiler executable checksum: 7896445e4990772fdae9dc0659a99266
+ COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_71a83.dir/'
+ as -v --64 -o CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o /tmp/meinersbur/ccaSJVv4.s
+ GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42
+ COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/
+ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/
+ COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.'
+ [100%/0.068s :: 0->1->2 (of 2)] : && /usr/bin/c++ -v CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_71a83 && :
+ Using built-in specs.
+ COLLECT_GCC=/usr/bin/c++
+ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper
+ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
+ OFFLOAD_TARGET_DEFAULT=1
+ Target: x86_64-linux-gnu
+ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
+ Thread model: posix
+ Supported LTO compression algorithms: zlib zstd
+ gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1)
+ COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/
+ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/
+ COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_71a83' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_71a83.'
+ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/meinersbur/cc6yhqmd.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_71a83 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o
+ COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_71a83' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_71a83.'
+
+ exitCode: 0
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:127 (message)"
+ - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ Parsed CXX implicit include dir info: rv=done
+ found start of include info
+ found start of implicit include info
+ add: [/usr/include/c++/13]
+ add: [/usr/include/x86_64-linux-gnu/c++/13]
+ add: [/usr/include/c++/13/backward]
+ add: [/usr/lib/gcc/x86_64-linux-gnu/13/include]
+ add: [/usr/x86_64-linux-gnu/include]
+ add: [/usr/include/x86_64-linux-gnu]
+ add: [/usr/include]
+ end of search list found
+ collapse include dir [/usr/include/c++/13] ==> [/usr/include/c++/13]
+ collapse include dir [/usr/include/x86_64-linux-gnu/c++/13] ==> [/usr/include/x86_64-linux-gnu/c++/13]
+ collapse include dir [/usr/include/c++/13/backward] ==> [/usr/include/c++/13/backward]
+ collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/13/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/13/include]
+ collapse include dir [/usr/x86_64-linux-gnu/include] ==> [/usr/x86_64-linux-gnu/include]
+ collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu]
+ collapse include dir [/usr/include] ==> [/usr/include]
+ implicit include dirs: [/usr/include/c++/13;/usr/include/x86_64-linux-gnu/c++/13;/usr/include/c++/13/backward;/usr/lib/gcc/x86_64-linux-gnu/13/include;/usr/x86_64-linux-gnu/include;/usr/include/x86_64-linux-gnu;/usr/include]
+
+
+ -
+ kind: "message-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CMakeDetermineCompilerABI.cmake:159 (message)"
+ - "/usr/share/cmake-3.28/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
+ - "CMakeLists.txt:2 (project)"
+ message: |
+ Parsed CXX implicit link information:
+ link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)]
+ ignore line: [Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-zVzaws']
+ ignore line: []
+ ignore line: [Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_71a83]
+ ignore line: [[ 50%/0.025s :: 1->1->1 (of 2)] /usr/bin/c++ -v -o CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp]
+ ignore line: [Using built-in specs.]
+ ignore line: [COLLECT_GCC=/usr/bin/c++]
+ ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
+ ignore line: [OFFLOAD_TARGET_DEFAULT=1]
+ ignore line: [Target: x86_64-linux-gnu]
+ ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2]
+ ignore line: [Thread model: posix]
+ ignore line: [Supported LTO compression algorithms: zlib zstd]
+ ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_71a83.dir/']
+ ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_71a83.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/meinersbur/ccaSJVv4.s]
+ ignore line: [GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)]
+ ignore line: [ compiled by GNU C version 13.3.0 GMP version 6.3.0 MPFR version 4.2.1 MPC version 1.3.1 isl version isl-0.26-GMP]
+ ignore line: []
+ ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
+ ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13"]
+ ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"]
+ ignore line: [ignoring nonexistent directory "/usr/local/include"]
+ ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu"]
+ ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed"]
+ ignore line: [#include "..." search starts here:]
+ ignore line: [#include <...> search starts here:]
+ ignore line: [ /usr/include/c++/13]
+ ignore line: [ /usr/include/x86_64-linux-gnu/c++/13]
+ ignore line: [ /usr/include/c++/13/backward]
+ ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/13/include]
+ ignore line: [ /usr/x86_64-linux-gnu/include]
+ ignore line: [ /usr/include/x86_64-linux-gnu]
+ ignore line: [ /usr/include]
+ ignore line: [End of search list.]
+ ignore line: [Compiler executable checksum: 7896445e4990772fdae9dc0659a99266]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_71a83.dir/']
+ ignore line: [ as -v --64 -o CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o /tmp/meinersbur/ccaSJVv4.s]
+ ignore line: [GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42]
+ ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/]
+ ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.']
+ ignore line: [[100%/0.068s :: 0->1->2 (of 2)] : && /usr/bin/c++ -v CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_71a83 && :]
+ ignore line: [Using built-in specs.]
+ ignore line: [COLLECT_GCC=/usr/bin/c++]
+ ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper]
+ ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
+ ignore line: [OFFLOAD_TARGET_DEFAULT=1]
+ ignore line: [Target: x86_64-linux-gnu]
+ ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2]
+ ignore line: [Thread model: posix]
+ ignore line: [Supported LTO compression algorithms: zlib zstd]
+ ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ]
+ ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/]
+ ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_71a83' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_71a83.']
+ link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/meinersbur/cc6yhqmd.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_71a83 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o]
+ arg [/usr/libexec/gcc/x86_64-linux-gnu/13/collect2] ==> ignore
+ arg [-plugin] ==> ignore
+ arg [/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so] ==> ignore
+ arg [-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] ==> ignore
+ arg [-plugin-opt=-fresolution=/tmp/meinersbur/cc6yhqmd.res] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [--build-id] ==> ignore
+ arg [--eh-frame-hdr] ==> ignore
+ arg [-m] ==> ignore
+ arg [elf_x86_64] ==> ignore
+ arg [--hash-style=gnu] ==> ignore
+ arg [--as-needed] ==> ignore
+ arg [-dynamic-linker] ==> ignore
+ arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+ arg [-pie] ==> ignore
+ arg [-znow] ==> ignore
+ arg [-zrelro] ==> ignore
+ arg [-o] ==> ignore
+ arg [cmTC_71a83] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib]
+ arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+ arg [-L/lib/../lib] ==> dir [/lib/../lib]
+ arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+ arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..]
+ arg [CMakeFiles/cmTC_71a83.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
+ arg [-lstdc++] ==> lib [stdc++]
+ arg [-lm] ==> lib [m]
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [-lgcc] ==> lib [gcc]
+ arg [-lc] ==> lib [c]
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [-lgcc] ==> lib [gcc]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o]
+ collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> [/usr/lib/x86_64-linux-gnu/Scrt1.o]
+ collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> [/usr/lib/x86_64-linux-gnu/crti.o]
+ collapse obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] ==> [/usr/lib/x86_64-linux-gnu/crtn.o]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13] ==> [/usr/lib/gcc/x86_64-linux-gnu/13]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> [/usr/lib]
+ collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+ collapse library dir [/lib/../lib] ==> [/lib]
+ collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> [/usr/lib]
+ implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc]
+ implicit objs: [/usr/lib/x86_64-linux-gnu/Scrt1.o;/usr/lib/x86_64-linux-gnu/crti.o;/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o;/usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o;/usr/lib/x86_64-linux-gnu/crtn.o]
+ implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/13;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+ implicit fwks: []
+
+
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/CheckLibraryExists.cmake:69 (try_compile)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:136 (check_library_exists)"
+ checks:
+ - "Looking for shm_open in rt"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-tE130t"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-tE130t"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: ""
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_LIB_RT"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-tE130t'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_560e2
+ [ 50%/0.026s :: 1->1->1 (of 2)] /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=shm_open -std=c++17 -o CMakeFiles/cmTC_560e2.dir/CheckFunctionExists.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-tE130t/CheckFunctionExists.cxx
+ [100%/0.073s :: 0->1->2 (of 2)] : && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=shm_open CMakeFiles/cmTC_560e2.dir/CheckFunctionExists.cxx.o -o cmTC_560e2 -lrt && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:194 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WALL"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1gMEyZ"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1gMEyZ"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: ""
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WALL"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1gMEyZ'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_5a645
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WALL -Wall -std=c++17 -Wall -o CMakeFiles/cmTC_5a645.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1gMEyZ/src.cxx
+ [100%/0.066s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall CMakeFiles/cmTC_5a645.dir/src.cxx.o -o cmTC_5a645 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:195 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WEXTRA"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lF1yTW"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lF1yTW"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WEXTRA"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lF1yTW'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_7bcf2
+ [ 50%/0.022s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WEXTRA -Wall -Wextra -std=c++17 -Wextra -o CMakeFiles/cmTC_7bcf2.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lF1yTW/src.cxx
+ [100%/0.066s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra CMakeFiles/cmTC_7bcf2.dir/src.cxx.o -o cmTC_7bcf2 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:196 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSHADOW"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1QFeLH"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1QFeLH"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSHADOW"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1QFeLH'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_b4f22
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WSHADOW -Wall -Wextra -Wshadow -std=c++17 -Wshadow -o CMakeFiles/cmTC_b4f22.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1QFeLH/src.cxx
+ [100%/0.069s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow CMakeFiles/cmTC_b4f22.dir/src.cxx.o -o cmTC_b4f22 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:197 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WFLOAT_EQUAL"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-n6dw4m"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-n6dw4m"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WFLOAT_EQUAL"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-n6dw4m'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_69d9a
+ [ 50%/0.025s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WFLOAT_EQUAL -Wall -Wextra -Wshadow -Wfloat-equal -std=c++17 -Wfloat-equal -o CMakeFiles/cmTC_69d9a.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-n6dw4m/src.cxx
+ [100%/0.071s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal CMakeFiles/cmTC_69d9a.dir/src.cxx.o -o cmTC_69d9a && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:198 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WOLD_STYLE_CAST"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-F3GhMU"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-F3GhMU"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WOLD_STYLE_CAST"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-F3GhMU'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_201c7
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WOLD_STYLE_CAST -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -std=c++17 -Wold-style-cast -o CMakeFiles/cmTC_201c7.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-F3GhMU/src.cxx
+ [100%/0.067s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast CMakeFiles/cmTC_201c7.dir/src.cxx.o -o cmTC_201c7 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:199 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WCONVERSION"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-faH8ex"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-faH8ex"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WCONVERSION"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-faH8ex'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_0ec50
+ [ 50%/0.024s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WCONVERSION -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -std=c++17 -Wconversion -o CMakeFiles/cmTC_0ec50.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-faH8ex/src.cxx
+ [100%/0.067s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion CMakeFiles/cmTC_0ec50.dir/src.cxx.o -o cmTC_0ec50 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:200 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WFORMAT_2"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-veTLmH"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-veTLmH"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WFORMAT_2"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-veTLmH'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_7be3f
+ [ 50%/0.027s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WFORMAT_2 -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -std=c++17 -Wformat=2 -o CMakeFiles/cmTC_7be3f.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-veTLmH/src.cxx
+ [100%/0.072s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 CMakeFiles/cmTC_7be3f.dir/src.cxx.o -o cmTC_7be3f && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:206 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-3jGqPC"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-3jGqPC"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSUGGEST_OVERRIDE"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-3jGqPC'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_54a87
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WSUGGEST_OVERRIDE -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -std=c++17 -Wsuggest-override -o CMakeFiles/cmTC_54a87.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-3jGqPC/src.cxx
+ [100%/0.067s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override CMakeFiles/cmTC_54a87.dir/src.cxx.o -o cmTC_54a87 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:208 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_PEDANTIC"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Dak4v1"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Dak4v1"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_PEDANTIC"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Dak4v1'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_edb09
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_PEDANTIC -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -std=c++17 -pedantic -o CMakeFiles/cmTC_edb09.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Dak4v1/src.cxx
+ [100%/0.067s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic CMakeFiles/cmTC_edb09.dir/src.cxx.o -o cmTC_edb09 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:209 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lte3pv"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lte3pv"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_PEDANTIC_ERRORS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lte3pv'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_efa72
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_PEDANTIC_ERRORS -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -std=c++17 -pedantic-errors -o CMakeFiles/cmTC_efa72.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-lte3pv/src.cxx
+ [100%/0.067s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors CMakeFiles/cmTC_efa72.dir/src.cxx.o -o cmTC_efa72 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:210 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-hV23z3"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-hV23z3"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSHORTEN_64_TO_32"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-hV23z3'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_63b0a
+ [ 50%/0.015s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WSHORTEN_64_TO_32 -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -Wshorten-64-to-32 -std=c++17 -Wshorten-64-to-32 -o CMakeFiles/cmTC_63b0a.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-hV23z3/src.cxx
+ FAILED: CMakeFiles/cmTC_63b0a.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WSHORTEN_64_TO_32 -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -Wshorten-64-to-32 -std=c++17 -Wshorten-64-to-32 -o CMakeFiles/cmTC_63b0a.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-hV23z3/src.cxx
+ c++: error: unrecognized command-line option '-Wshorten-64-to-32'
+ c++: error: unrecognized command-line option '-Wshorten-64-to-32'
+ ninja: build stopped: subcommand failed.
+
+ exitCode: 1
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:211 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1qi7aF"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1qi7aF"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_FSTRICT_ALIASING"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1qi7aF'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_148f0
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_FSTRICT_ALIASING -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -std=c++17 -fstrict-aliasing -o CMakeFiles/cmTC_148f0.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-1qi7aF/src.cxx
+ [100%/0.067s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing CMakeFiles/cmTC_148f0.dir/src.cxx.o -o cmTC_148f0 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:214 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nKZ8xR"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nKZ8xR"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nKZ8xR'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_59933
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -std=c++17 -Wno-deprecated-declarations -o CMakeFiles/cmTC_59933.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-nKZ8xR/src.cxx
+ [100%/0.069s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations CMakeFiles/cmTC_59933.dir/src.cxx.o -o cmTC_59933 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:235 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-FLZAfz"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-FLZAfz"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WSTRICT_ALIASING"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-FLZAfz'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_2cfc9
+ [ 50%/0.023s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WSTRICT_ALIASING -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -Wstrict-aliasing -o CMakeFiles/cmTC_2cfc9.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-FLZAfz/src.cxx
+ [100%/0.067s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_2cfc9.dir/src.cxx.o -o cmTC_2cfc9 && :
+
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:239 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-7LoVgL"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-7LoVgL"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_WTHREAD_SAFETY"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-7LoVgL'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_6a5d6
+ [ 50%/0.013s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_WTHREAD_SAFETY -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -Wthread-safety -std=c++17 -Wthread-safety -o CMakeFiles/cmTC_6a5d6.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-7LoVgL/src.cxx
+ FAILED: CMakeFiles/cmTC_6a5d6.dir/src.cxx.o
+ /usr/bin/c++ -DHAVE_CXX_FLAG_WTHREAD_SAFETY -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -Wthread-safety -std=c++17 -Wthread-safety -o CMakeFiles/cmTC_6a5d6.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-7LoVgL/src.cxx
+ c++: error: unrecognized command-line option '-Wthread-safety'
+ c++: error: unrecognized command-line option '-Wthread-safety'
+ ninja: build stopped: subcommand failed.
+
+ exitCode: 1
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake:18 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake:34 (cmake_check_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake:34 (check_cxx_compiler_flag)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:290 (add_cxx_compiler_flag)"
+ checks:
+ - "Performing Test HAVE_CXX_FLAG_COVERAGE"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JnpPkZ"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JnpPkZ"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "HAVE_CXX_FLAG_COVERAGE"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JnpPkZ'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_b896d
+ [ 50%/0.029s :: 1->1->1 (of 2)] /usr/bin/c++ -DHAVE_CXX_FLAG_COVERAGE -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing --coverage -std=c++17 --coverage -o CMakeFiles/cmTC_b896d.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-JnpPkZ/src.cxx
+ [100%/0.073s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing --coverage CMakeFiles/cmTC_b896d.dir/src.cxx.o -o cmTC_b896d && :
+
+ exitCode: 0
+ -
+ kind: "try_run-v1"
+ backtrace:
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/CXXFeatureCheck.cmake:70 (try_run)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:332 (cxx_feature_check)"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "COMPILE_STATUS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_7206f
+ [ 50%/0.066s :: 1->1->1 (of 2)] /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -o CMakeFiles/cmTC_7206f.dir/steady_clock.cpp.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/steady_clock.cpp
+ [100%/0.130s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_7206f.dir/steady_clock.cpp.o -o cmTC_7206f && :
+
+ exitCode: 0
+ runResult:
+ variable: "RUN_STATUS"
+ cached: true
+ stdout: |
+ exitCode: 0
+ -
+ kind: "try_compile-v1"
+ backtrace:
+ - "/usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake:101 (try_compile)"
+ - "/usr/share/cmake-3.28/Modules/CheckCXXSourceCompiles.cmake:52 (cmake_check_source_compiles)"
+ - "/usr/share/cmake-3.28/Modules/FindThreads.cmake:99 (CHECK_CXX_SOURCE_COMPILES)"
+ - "/usr/share/cmake-3.28/Modules/FindThreads.cmake:163 (_threads_check_libc)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:335 (find_package)"
+ checks:
+ - "Performing Test CMAKE_HAVE_LIBC_PTHREAD"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Oq58gq"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Oq58gq"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "CMAKE_HAVE_LIBC_PTHREAD"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Oq58gq'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_97848
+ [ 50%/0.039s :: 1->1->1 (of 2)] /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -o CMakeFiles/cmTC_97848.dir/src.cxx.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeScratch/TryCompile-Oq58gq/src.cxx
+ [100%/0.086s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_97848.dir/src.cxx.o -o cmTC_97848 && :
+
+ exitCode: 0
+ -
+ kind: "try_run-v1"
+ backtrace:
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/CXXFeatureCheck.cmake:70 (try_run)"
+ - "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt:336 (cxx_feature_check)"
+ directories:
+ source: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ binary: "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp"
+ cmakeVariables:
+ CMAKE_CXX_FLAGS: " -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing"
+ CMAKE_CXX_FLAGS_DEBUG: "-g"
+ CMAKE_EXE_LINKER_FLAGS: ""
+ CMAKE_MODULE_PATH: "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Modules;/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake"
+ buildResult:
+ variable: "COMPILE_STATUS"
+ cached: true
+ stdout: |
+ Change Dir: '/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/CMakeTmp'
+
+ Run Build Command(s): /home/meinersbur/bin/ninja -v cmTC_57bac
+ [ 50%/0.042s :: 1->1->1 (of 2)] /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -std=c++17 -o CMakeFiles/cmTC_57bac.dir/pthread_affinity.cpp.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/pthread_affinity.cpp
+ [100%/0.091s :: 0->1->2 (of 2)] : && /usr/bin/c++ -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing CMakeFiles/cmTC_57bac.dir/pthread_affinity.cpp.o -o cmTC_57bac && :
+
+ exitCode: 0
+ runResult:
+ variable: "RUN_STATUS"
+ cached: true
+ stdout: |
+ exitCode: 0
+...
diff --git a/polymorphism-benchmark/CMakeFiles/Makefile2 b/polymorphism-benchmark/CMakeFiles/Makefile2
new file mode 100644
index 00000000000000..b6d0382d47ac79
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/Makefile2
@@ -0,0 +1,197 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+#=============================================================================
+# Directory level rules for the build root directory
+
+# The main recursive "all" target.
+all: CMakeFiles/PolymorphismBM.dir/all
+.PHONY : all
+
+# The main recursive "preinstall" target.
+preinstall:
+.PHONY : preinstall
+
+# The main recursive "clean" target.
+clean: CMakeFiles/PolymorphismBM.dir/clean
+clean: third-party/benchmark/clean
+.PHONY : clean
+
+#=============================================================================
+# Directory level rules for directory third-party/benchmark
+
+# Recursive "all" directory target.
+third-party/benchmark/all: third-party/benchmark/src/all
+.PHONY : third-party/benchmark/all
+
+# Recursive "preinstall" directory target.
+third-party/benchmark/preinstall: third-party/benchmark/src/preinstall
+.PHONY : third-party/benchmark/preinstall
+
+# Recursive "clean" directory target.
+third-party/benchmark/clean: third-party/benchmark/src/clean
+.PHONY : third-party/benchmark/clean
+
+#=============================================================================
+# Directory level rules for directory third-party/benchmark/src
+
+# Recursive "all" directory target.
+third-party/benchmark/src/all: third-party/benchmark/src/CMakeFiles/benchmark.dir/all
+third-party/benchmark/src/all: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/all
+.PHONY : third-party/benchmark/src/all
+
+# Recursive "preinstall" directory target.
+third-party/benchmark/src/preinstall:
+.PHONY : third-party/benchmark/src/preinstall
+
+# Recursive "clean" directory target.
+third-party/benchmark/src/clean: third-party/benchmark/src/CMakeFiles/benchmark.dir/clean
+third-party/benchmark/src/clean: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/clean
+.PHONY : third-party/benchmark/src/clean
+
+#=============================================================================
+# Target rules for target CMakeFiles/PolymorphismBM.dir
+
+# All Build rule for target.
+CMakeFiles/PolymorphismBM.dir/all: third-party/benchmark/src/CMakeFiles/benchmark.dir/all
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/PolymorphismBM.dir/build.make CMakeFiles/PolymorphismBM.dir/depend
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/PolymorphismBM.dir/build.make CMakeFiles/PolymorphismBM.dir/build
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=1,2 "Built target PolymorphismBM"
+.PHONY : CMakeFiles/PolymorphismBM.dir/all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/PolymorphismBM.dir/rule: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 22
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/PolymorphismBM.dir/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 0
+.PHONY : CMakeFiles/PolymorphismBM.dir/rule
+
+# Convenience name for target.
+PolymorphismBM: CMakeFiles/PolymorphismBM.dir/rule
+.PHONY : PolymorphismBM
+
+# clean rule for target.
+CMakeFiles/PolymorphismBM.dir/clean:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/PolymorphismBM.dir/build.make CMakeFiles/PolymorphismBM.dir/clean
+.PHONY : CMakeFiles/PolymorphismBM.dir/clean
+
+#=============================================================================
+# Target rules for target third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+# All Build rule for target.
+third-party/benchmark/src/CMakeFiles/benchmark.dir/all:
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/depend
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/build
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 "Built target benchmark"
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark.dir/all
+
+# Build rule for subdir invocation for target.
+third-party/benchmark/src/CMakeFiles/benchmark.dir/rule: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 20
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/CMakeFiles/benchmark.dir/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 0
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark.dir/rule
+
+# Convenience name for target.
+benchmark: third-party/benchmark/src/CMakeFiles/benchmark.dir/rule
+.PHONY : benchmark
+
+# clean rule for target.
+third-party/benchmark/src/CMakeFiles/benchmark.dir/clean:
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/clean
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark.dir/clean
+
+#=============================================================================
+# Target rules for target third-party/benchmark/src/CMakeFiles/benchmark_main.dir
+
+# All Build rule for target.
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/all: third-party/benchmark/src/CMakeFiles/benchmark.dir/all
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=23,24 "Built target benchmark_main"
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark_main.dir/all
+
+# Build rule for subdir invocation for target.
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/rule: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 22
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/CMakeFiles/benchmark_main.dir/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 0
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark_main.dir/rule
+
+# Convenience name for target.
+benchmark_main: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/rule
+.PHONY : benchmark_main
+
+# clean rule for target.
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/clean:
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/clean
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark_main.dir/clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/Common.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/Common.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..97533d1e650708c817954221b3b90d1bbc0f2fcc
GIT binary patch
literal 8632
zcmd5=3ve6789vEQEQrzBU}#E!C{%%%1dSy-w#BQKW8pox7}rh+ZJ~!EpJQRYkWPt{
zGQ>hQa1|nfq0^z1DWx+leN2IN+A*0z{m8>~=ro}vWauynDGhd%khIV^gn;}1cf0oK
zY{QgcTK>`9?tc5f_W$>F+Ugf?v|212BMWx}H{D_=#|?aWy568w8#o8ISmQkx+6&-8
zxl(w}qxFlR{1QAydXK;C49U$yC^KnM98-0xQqez2TO at ZOG7#QBJhHvB)5S0D!#2k+
z=6vhalfGMhYklf#zBNMSE<ruJmZ-Z1KAxPMY$usxHqkrAXI=v40YD}N?=HS?036$a
zE%zx=eP`?is1bEU$o4sVF90h;e|M1UV^)saScctbXsR#QY7w%<I|cPIomU+uLq`{=
zuM+oOg7w2C>BGIZu6S~)&8H7 at -0l;see`^+Sw{Fr2l?L(3f?#Q`x0ore~|AFVI{NE
zmTS6{`{o_K+kJQVzU7lfI{C#-;8pekbWX_ZviQ{#x_|rwEie)xd&y3cBNjn at i28JZ
z42>;N2Z?)xs8BytvQ&48Hu<HxM|yJ%JQ at -BXWwk{=J`wx2HT{LxnG?);G3B6sr$Wu
zNqjxOWjf at apSAarUm@x!Nq?Y)`lsel=fA6udnoT1KLXk07x!W&XdLtaYzpb_KvJd>
z^4|}B`~gk9KBWrMJ^mE*=<zSW^A7^3^W*&Wt<z at UnzijDeT*vuCo`o^4(bC%9M{R8
z80;X~;-$;bd$rH`45ZOLNcJ=XBO)LA)c5)Fl0R^R9H&_kv&%`g-PTF?=panxPCh&+
zRvsn&ukzb|1+#K>|8c&5KU7G17s~MEMK4?hns(rFBYT>h4r~#%yNu+*P6vw{gnDS~
zGU6U3p+Q+K3Fk`7h$_AYz7AVR`b-=YrrscX`kYUJf7tS6&RY4tO`z3%9O at P^r#LHw
z-!By&b>dHWaaYT+o%l<w7=H&WvU$43S)tx&BQQ}(W_Kx3Z+)MrNgGLjgppD1ChFMk
zCTB$v$tG>W#4%`+q0?U_`_7QcVQl0|Ujt<vsoX~@M>B&KwaK{<aAD#fu+pp~SKLN&
z755=$<zBt}5^`;_EOo!A{)?ywwFqj)b%UvG1lBdiyn`&)lfd`?2nI#cI|l%T6=Ga#
z+ew!BZ}1(*Lj8Xp41?#HLnRNwC^W}DzcJir7(-t5yWbXb_dv{FoQnBNEav$YEU&Zp
zD`a+Bg!EaAH{bUWOyM0R5K;FjqMjIg<qT{xFaY#kR1XOg$KgGl0c^~c0gd&DF$2h1
zkO96w4jY)Lo?%%SSG4xKMBT$z7CZIKWRqo`e5}|hR=z8$C#G->8^7u!&ABq@%)h1a
zYsZ7SYaFM<>R2=ui6!D)p&-{5OGP`{V(UXut}PJlh(%zxmV-(xam_W-YAGQH!r at p@
z3PqE0LP6On($}k?zD{=h;^#U|E#Azrg(MrZiP<Y5uVN*J#Y*^Rhsh4gc`otp<@;{J
z*@KhqLqYwwSb13R9^?D|3Kk%89Pth%x=H`beE&RP^Se*EUly_ at Vy>yYRIEHs)Z%hq
zw%N8icil3zsoVyOdaF$OkKcO{QICo$gk%p<OIfH&ovZubPTfw_1)}<Go2Vws;CNVQ
zn67aC2``<7C<AR3)d`|jFxd(xQHKP}?tGfAOZCs9dPG!N9 at HT)yH$XxfQK9!6)TU>
z6qP#jS+>6sSYwIrlNY8VFiQC5Au(6eAPgO`=GCcrcpX^8F%Vd>HmXT<+VVdj1JlAo
zAUq1f0t$}{;5W%#kIB&lpv3&ZWVjSDqJBWs)6jwg3-_1U)wEoRCCPoS4CXcLuW&Yi
zTnrxq8_!@FRJPv+H;+#KZ?C`uM`(Ts#7ChH+i7y21%&<x!0Vm-hkF6s5A|WdhWPS^
zlaS-o^CbHSDks_WLTY0v#+cw~&h?UWhBJpOWa0qXca&5=(gXX*(u2?09>=pir!|S1
z*5q at V{0!#~K+-;=bHnId8cmXHIoXrOTLDt~u;w6!3jD*{h|$G6AsSOIs+#x+$zF@;
zCzT(Q{z+vXO_^!4OxbYPKm*!qa?&!t<xlet&gY<3eAPVcC?L$Awpt6&f<`YmIthqY
zqSM&RN?0 at +u@b|I04w!gcsH+Fb&X@$+V!cZl5)7KUDd9tt7}tQ({rz<##L40a#zw0
zU at wLT4_x%Pxn(T}2izcHa6)TTK}*Y)HqO#hW?58PV%rW*pv)z-&rM4LWfiSIiH_cA
zFWY9l#lG<2qDH$TSKMe{_Ru_^z3Tq?K6`zpq{-fD{qec>dO&>kWx&yBU)X3bYqZ;%
z7HInKp}M;1pi%#JifsZ%IpE%AZJN^WNBzyHU(oe8Sbq)r{WJ78FPQS(vZYnjMpp6!
zYF@;~w+0$cM1Z;>7#I_MJmBT*<7u`JI7Iu&D~o<;0jo_jtggblzXKjNt{SLodO;{t
za{v5?=H-eXF4|_r*!Ivdp9A$zB4jJ({)zKu1{LYrXTkAHWF{49UnPY&ey3PLPXmRu
zxYK$OXQ#EoqDaeLA@&9|tp<J^JEJ15oK>gFVi=g!fU`K<pvA>D!_!q1H-ASFiccw~
zmDLo#%+%4Q;mq1}=Q<77KDVYpsNGI+%$bn_6n7XwsCQDFtrOOL0pRBw^2OE^&i%`|
z>3nJH3WN><ZnlZKj?94{n*)D;4*cvK_{Fg9E;mG<t<B#8j{Xngx&*>CgY*Wpmss%&
zS0@`SPXRug|8LEKmw>+6_%E6R=T^lckyz9fjK?|Y8!hdMrzRB*b;c4Axcw+nM<}Tz
zLhDmXC>9m&@(05La8yU+L{g4MWl7lt{c=K*qZ>j|S%`>{YL8!x)Ou>*UG1&Iw;Nub
zm9=#>_0_fRmC$e_QseQ~cx&rCUPO at 3Q(Il at _0-qaR3QtZHB}x at U3FF6N>u5t*IsT<
zO?9<rWwjsZuC_H&+s!TQRg$|Z9!LZtlCn82`(2 at ABH*gR(Rkyr at aFY$G}z^h1iIz+
zxExISTiT_%)_?+TNByo~EZo6K&EhSMK2egAsr8Z|6$rX(HpmKPZwW-?0&&hIu5#nc
zgRd%lRpYA$Un}udi?2F-)$8G{)vuX?!MFOBScm4DzdazdyCuKhT{q(rD%_;?_&2tA
zC22!6B?WtWfK7@*rUGFp1j7ly^;KvEw)Se!(G<UBjl at OdNHD$`Oh-3Gun~!El%drT
zZrvDx5|UXZNlI5Dwn+*@5|u7VP9$Q9)|-R6yI+i4yWJ3v4RTaUz+K(H5ncP#)N)Ph
zTnV|;1<~s1k>W68W6?l3q->Tp!rYLON+8%R1-rVX&Oj*4No%8<LeUPXO-`mF7 at -!g
zHg6(<M0Y(b1eh#=u)9u(hLjL!*&??q at R1Nnf-^ed7ZMUKYdpWs;w1%$-mWwp&j^Mu
zfjScMp9c at ammvs*IG!2|e;Pp`JO>xS!|?Nv5y*@`G6(*%IdGotL#PMO2B!aO+QF;q
z$6cM_7t*U6b{p~6=fLv at e4#;4(R^qCp&tB8km+A!!13&1_>~mLVPKWvKY=<D>cL%<
z;fE0fLfkm6BG|W)5I6dBnE^NY(`CSo`X8e>`oqJ+>^^Sbzu17YeI5C6pJx1Q=SLh*
zd4{ud7xD8A_!Uq`LLBE9<7a!nIiAar83=I)JdD2z>PUzi<4n_~;Y*;8 at gpx14sYh^
zuj7j~4*lhzb at US-M(kdL7 at c}rS1)Bi9DQQ+7_Bfp4YZv%;MzwYZEFrfo$(K11?U`_
z7i_XMi}-B at oK7)>IsJa3>p^~Y!??%5Ul0dZa&trptmj;CaO!0jt0m-cz@^AN3g_ww
zC;`s3KAGfPi5NDJ-R*+Igf?LZYFGZZhsCrD%um<<!3&5$q4_W75oGW(6%B{F<?v?C
zwILXk<es1$S0qS%ST>FY4xEINic=^A2Z<C&Bmy8sGagJTZn!RJqt|8x)Lif{R3Pm7
zq at xV3Fp-EHg*g?CDY6T`O|RC at Hrj@(f-9bg!TG14DGaULC3V7W3B22oh=E6+3;hxn
z)Xc9Fj%%RW@$5swHHzm2TidLhOI}1FAfr5<e at u>*bIISPNf*ka4@{1g4#03p8`nNG
zIToJfrVh5xA`cStsX=Q^zfR+(4b)5b3uc?019<iz;eL)R#=Q{nCrow`L!#>R2E13m
zgE~K}Jbp)^P7gdrV)l)DI`%XBtZbl|S$+rgAJ0G|F*#O_LMPVe(|wxp9-{K>dye7e
z_>Vvb=CZ*g-&3JWJVOOB{<w#m<KGO%XS3f+8QJ$6RWsuos}Y1}v+tmv!go?Zw2yPy
zZ2vg3Px)Apr-utWFBy)$8flE#H-b>_rS=KM(LUZQ&Gzv-7Im7!$1SD at 9-YQi%XI!3
zZ~+LSym`7dQ2By068OydvxB at AKc<kDqtt)4PSAhcXUzUz0rEI5^Zak6_8C7_J0;KX
zC3Dz6G>d(_Z!tOMmxqqu9H%>}{RU>3mTdg2^i%mFD2?>gr})o!ao*21|4z^1Ki)OX
z{@+dQS22aOe1_V0nQ+WC5-Yb*c^#d8 at 2B$9h+boI4F3+u<NXSX0y;qD9R=vL{|tVb
z+BeIert%M(46^Yv`6oeew)s~^FXksHBhEkE>zO>uKdLv|Mv-26a8=QXiFa(=lFahB
jKFo6$AnrN*r~qm-b()5wtqBv0E=d3A`;Eytv;2Pm#Q<1N
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/DependInfo.cmake b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/DependInfo.cmake
new file mode 100644
index 00000000000000..a1e57e17c99f98
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/DependInfo.cmake
@@ -0,0 +1,23 @@
+
+# Consider dependencies only in project.
+set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)
+
+# The set of languages for which implicit dependencies are needed:
+set(CMAKE_DEPENDS_LANGUAGES
+ )
+
+# The set of dependency files which are needed:
+set(CMAKE_DEPENDS_DEPENDENCY_FILES
+ "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/PolymorphismBM.cpp" "CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o" "gcc" "CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o.d"
+ )
+
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
+ )
+
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
+ )
+
+# Fortran module output directory.
+set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..7b22f0d7daf2464cb8f70e2e0d05b15a3339dafe
GIT binary patch
literal 101472
zcmeEv31AdO*8fZnh!E020po>Hhc&?~6Rr&Fkw6A|U;>e#vK~8x5J+4|Vlo4G63oP<
z9Y?aO?z-!-xazL!@u}Z>u<ByME$b?>9(d!086%3Qh^(6b?^RV#*Yxxx6HxrV{eP`t
zx?jJldiCnnt9q}hUN3cfC#Bf!HvO{O&a at d%I at D&{euV)oX5eCAp22Xl at l0<A<L^-X
z9frRl_#@a6_&ZYEAC2E*#C<M)j}!OD<M#w{@4)W}ai1rC^YJ at U+@Ffy)5QH~{Eoq&
ze0{DA-=|hh&RE+vPdT>KW~1lO<czPjsW-1xjxE-oQzvHv&^E74yjLD%0R9a4smifI
zmMy*S^?6<_zO#KT3OCZLRg*GMcr#^4`K=<x5Q?C0RZ8r0Xp)KENg1h=h+gGbPXD9~
z<v|AE^s3rkRr at ORP!aO&URi*DW9eB<4HUtjjpO(ASq-OCVpZ$UGHH{l%lIeWSE$;*
zfz!!x-(Fn|LN4IN#?qs<cKemp8Ng$286RZ+{NMZkZ2p+#-P|AK{!=p3qkZ!<iPAZ$
z_GN|I@^SWDHIz1jbc3puIx?K?OyIoQ4prNzYHPXpaf$t0sdoeGLsdK4p=znh;1=o}
z93ynPgXFBA8tUI&o}q at 2)m-%?o^jw1wPjuQ1s9cE$g`tPi>#Tn^858da#??r=}o48
z_XWS?ym_ipw}Jk7t>oN!%7V2e=P;g}L%hgSL-iTn&}nLDX|}3$dbKWZey2xk_jK${
zQ(N1W>(`^cUTuxh|5WV-^@XohZIjxuJx#T5Q(Xm3m#g`k)$purwdEtb+PZb=>#FNp
zCHQONu<K3#LU6Hqml}3wD}$?T9^yG3cB$GLHUBlruH~IwYW_bdVZW{%wWTv#4VB|H
z{Xj2)x32YpPGxW^c$!B%ExD-V=OsR&|J2rJ{B5eXIa1Z#-3|Sw3`UE!tk3pn3s6pM
z3ew-|D&W!8-{Wdmf at P?ms=emT|H$LosRRe%acVft=Eb{~fq3w&-o??EdbO`qZKfkb
z$uD(eGZFBFu5f at zz~(9S0D82I9{UD0T%28^3{E at TgSwAYwQXK4;??$nuU`9J(x3GZ
zjy2#_2lz2%m+IOQ=u%tSv%xAQcmwe)|4r4t-q8Q`hq2c!Yk?2GxH<z}Wvx5?S>F6l
zRqZ>k_9-K#Ogr7d>RhJzL6y1UXo+u?)`j17ccY$xdCsk#mUg>x^)aYi3`ac5q;`+C
z!PBuLEiwQv39ai*Ra at T`qNYNdMfs<?)~L#)HQ>FT;8kR=hR;A9cpsS>9s*9TX&j2S
z4IH<MMiIAjkK5TDd7TJ}vevmZaytOdXS(iaD><*^TwOv%hehY|;cqcm^tm6RN)5a=
zL)9kkRX4h+Fti{LTGnMq(xLNDeS)`Nx8e<r^Js6E<$vYHaM!Un6`WUsnIzw?&y^sJ
zwkqgFt(2>ur-#<9O6yj-L4j`PPQ5JWPLI~#+3wYLvvEfa4M20E^mb6B?p0m?3ViI%
z|6C1UcuYoF>mL6=Z~h*L4i^~hWVF$Rj*K!0C$&*5!ObWPRcp65&M>G3mEiIgkM@$M
z<AYSawbjr$HcyBeT5!N)Uynwbq75mc+O+<h+BG~YBXTKj7 at eNK@8yhG+Vw=V4Hedg
zlec)oC%;66cl|+bK9){z52%Y}A8!M<B<&e=Yy!a9u7=q7zA at -nj!bAWqK0pETt~lJ
z(9z7E#S9?mC`S?u`0uOy?JWKX9ELobKkg~wk2SGx8~Ecr`TXsY*tgC6af*Y#T^{?k
zjXxg!TmJUu*taYB<L%e;xA(-peTYA9`6Yk5D)wzQfBf|X{x&D}Z7zR&v5>#bi+x+b
zAOAF*zb%S=Tg)HxmhrbLdlVdn9xbN<tXK^Trs6 at Rhjv24LlHf+F~*Y4h2YJmc3DXf
z3|Gb8&;o~A8Y*zN?oooJ88#c~$Ffj0n&%YY*h*Tyv-^kP-xLAR=W$ADr at E@NwyB}g
zUsa=Ow~9ibj#4*F%s5SjAl!`fhv08R(D4__i^;zVg$X)7ff`}Y-tbe7cDz)>4bY=%
zhF5#a at en<S(A9S<K^ufd)ov89@@%?i_#q4mxL-xMT7kN;7{sHj;%q~`pQXBj3_%HY
zW>FDb08t{9 at B~<dq#IO?R5*B*#|aGI at 7PXn1VO5HzhetM3xX6u5QlMs7(NK{(lp^l
z$2LNbrHN-Psm`<1lY$%(D(LDX7<oZfkUk43b>s*R-Q}>c=3L{|?sDv6w1B)u at M{VN
z#$8JAq%<lpDBev#ZGt>WXhKFQ#)2gT*o%aokQ-bpRKtEpgSv47XW0a>4ApNSQDM2$
z9LVn|AYg9i(|e#sLQk<bUe|~I!D>ik9&WJnYT+&8hU-)Qma#*A`w)uuy1Mz>c07Q&
zM%p$4xZYNRX;cm5z7hZr#%~D=lI(G<S6VB-1vM=Y+%z at hg)EZ{tFBE->#6ht6<{3^
zgxAokauV+vUA$jHb- at 4>&I~@*J!JXjP$48r=`MBE%u5 at pXI3})4f)3S&*d8oD(*qZ
z=`ELZA?A`;hgGy(16ppg5?q!_E!UfPXY?lCGc$>Eeh21q5N0OXylEhDQTav1r=a9U
zl)Om^J`NpCV!>K2#ARkXwFG2_aw(#hT#^UKq7uzlp9I88 at _hq2B}J467hrVt7{Qf@
z*e!_I#S4xRT&hn2mtJI*8!N&wBr)mj9QMUQ6V#)K>_md9GC{pT2x_?@sO3yh=h6$L
z-GnY3H5QcChX)|bW$U&9D$QWHeUEvfy^QSh-7Q~dC at q6fy0d#vN1A^?XncuQ^fbDS
zZBIvvKdV%EJaha!x0YF?wroskdB?5<U)+bm|FI$COO_8Qifp8ZV==#={I;vwE|%Xh
zQhr5o`4z?H_m_WDerZJ|%hQS?x6%X8&!ctf^xcL!Bu(FXnZ8wmK6Kq8QUHvTbzgUP
zM>4+Y?vDCH)Rql)R^FzT at 4%0e{#0J^o(;s1Xa(>rI3m?x2RL#R8X#JOEIhPPevH4H
z<MWF$*vL=fFy(hPNQ-i~6c25rdekWW8kiLM4CTbo&-l;jzqenX=-<xD6D{yBDz8L)
z#<{hm<(<9SD=lka%B7uIrlp-#>e}4+Nm)4UaMiv$@~m8bJib>eJ;O!`c6!65Lv55|
zJZ9s<-$eNBEdPy|;)?uFFLiBV`NIO-6?sa|UktR~@FR|P>ex`nvzXn59zBbx#V4R8
zFixB24{YMm%LKx!JrbQDK$DiiB-54Y5bBl(u1udod-Qd#AXIu(*JAPl?Vc(K;ySj6
zxk8MB??uDzqzMQ{I?6QRTtSR6hTi1_6{2erhq%7w1hKgV&8BElu(8y!1o;AqO#p6W
zvj$a*p^r}@%o7HhE8OtO_oafr>TRw-OtMtLUe^Lgk<!`*fsAbZO6Vu*- at 9O?vi{u)
zeaZEO(t0HBsb?##-(n<gq5k|FQbzl82Ofle*siA^E~Q_ER6PAHdisZ`<LDaqPCT&m
zOkeTx9|fjf{<+cgE<OF*a`{_X`7!$NF?9LJUd+l2eIn*8)X!+tjOk<MIZRn7fY$AK
zk}gfcy>Ml)c{yz2;LnrjU|!AE+ic}esH*jBB|6oPDfSg1wbtDTQ!+l~HkI5<H%ehd
zV2<L|_Apebuf&voX-|EI<|xrV!>1{{&zOjb_L<K5uJ5al^g5qrE{vY1DgT6gMP{O#
zlxUyD>UftJ6E?9iAsu7FrpRyLKZr-fU?UF(n<A%S#3r<uG09~blQu_gMsApisM at Dq
zZNukxMNUCq!LwKE=FfiuZS46&{v5*l*r8P+>VJc-5IgaSJc2G_OpPM9;L(IJBNoFI
zkFg8Gwv@*!c#N-8+_<?pay+t%N8~)>1M(2nzB%%wWqv?AQy;g75!y_kS<Dt&Nc)K~
zK)7pYloj)B^XxKk9^pR3(lE~);d1|FT;73`WcN?}>rDAI>o at U^ZQ03v;P>;|$Q$U<
zzT|HFa#RCu{Fj&;U-a>{<e&3~n+m*IQ?44qP==w+^@0-IOm)_#0)_!vn_57c3|?g~
z{14%ZTr$^%-vBT3xbFZdY at MVVHcl+2d-xbtQOtUH;NTMUpY=3Ug3S~5!jl09dGHZD
zd9{yJ?JZS%li_+`qUPD*-9xFJ`g|VCQ$flRy6^H_kLx at CAT>0xz%X*Pw^vi;cwuo#
zODP?w4_{(uqu8H;ijgNxY5fFu<i0t9{Ctn8*~_OEupud!1%S3kdE8t0-MkXbJN7%u
zAo2~mk+3UhjxrHQYUmev-cVzn*YzcQn(#HUY97Pr3<Yvk4K?Lt!RXFtZPzvij`8My
z>FidQp$B#^RaSgUeRJ8jprrYV%e7BCK0P+_kx>q~?+s5Z@@Q~5Z-*T-wLtp}^S}Xn
zJ=zsnd%fCc-uw>xbDsRoEj#v7<*uHIw77RZqdni!kx>@P9A5^b#`Rg_rx6!kAwO*o
zatV10zoCkK!zy+H-msR5)Z<QCe=Rvr+r>P}+Dnk3d^F=Xkf8OefYnW6l;L%CDlMx)
zJhN%Z>Ijm5?+Lu`cEWZ0Vdvj)ht(Sox>hrmrqz!3a at 8~HF&r*}Fn!3|Tz?lXw|hcq
z>pU2i7%pt^j*kXvTUF;4a-Mg*+ke at +&F7wcTl863_AWeEpX$#a9ZGlhwaTyCmB-q#
zgrHpANX0|cT5IVBPUCRtF&1`W=$BL=EDyU|`;^nC{Bjy<;t3tSP7SNDnywQxZBsis
z2WsuAb1jx9u#VGz1Sd&6DkC^W{IL at ht@S7mzFF$(Qd+`bRH at eK-1^nFlCQoh(O!1_
ztMO-Dml^9r-(P8;H=RJsOv}Dztp2l^)m=An|9eMQZe#~qQ`jpi=L2WJ;#y7)8YS8w
zeXo4vmn?hUe`A_EvJ!82e~N*3EsxI6V*KZ}Y=}=wrUTag$25DKr+nHT<4?Z_O$dMb
z#>qegs`hP(_LVZY|I at a1p&Pv9o(-LoLF;+#5K1iQwR`j5rNxRB%P==BYkgm7eI7UJ
zvbB_mmc#x=dmn_y^CEP{xsF^F^Ojr!x3QJH&f%(alUmzet at U3J&cs4i=8IU=u&c}V
zH9*V*uamQDB}k(u=j$ac-6?^SBEN=g&1)-NUVzmYsJr&eQmtlhsW$r?RfD5(*}ti>
zO7Iw9m1u8KZL#+Erbm0Dq-94cvapvbZn)V-cz*4m|JAR$m at w`=OMPLVn!iR3r?Djo
zHGd0wt-5Ocw2#-(|LRxol|aVPtKgMRn}NTpJ^AY}24s}9th1{wtTMLNP)A`?-HmEK
zrii1lc#HK{a`ira- at W`&JNBih%7d?{PYb{R)wNFv{*$!7Yl9Lz8dXK+htew1)zk6d
zcD6g8Vf}Cl;b6W8A7z>g70v)lU72767=TsNZe_&^R9bC0-C<K&X|0+uNGroQQ4Ke-
zJ6mT?>w6F%8fK~4C4bPFRKT)zs{oaT5G;AZ-%`39{vG0V19)A-c}@K1{PsWm1TmWF
zEsyqA=XY?bfa at jj>L$nO4JJ-+FmZZ4=QJANr^M;Hcuud5ayZKKD2F-EUuK-HBF2Q!
zG~~oSml&pV`zAaX+#bmAW- at LMMwP+s1%tuuBCr75hTK1c8VhdMQ9g{*3mK;)+gaDe
z`01shh@$5)Z<8keFt2h{tpnA{_U7-RB>^n#GZY&6^obJgyo4EX>iJRsXdJJuiq?%*
zLnm)RC1yaQrmz_qHWV<mz>=a6kG(yz7K0{VhsF$;uBAF^*S`qvrF{jQNQ^GuMbl$4
zA&A5nYDFY31Y>k|WFI4v>nld*Bom!jwGF2g_eiJ4L^A;UFU_ImZ-{(A&#U5S-iUq{
z#hHidaIb`tpXOks(`&4br#Za&JD|a%a0ZK<M>E_f3>IRkb8;MM5gMy0A7s(>Wbf!s
zP{GO;>$9fr6?jjc#mW;{vEE5ana?`EEt$!7Nz9UTG`xF;f`)2V!&lI1$rV^Z8jQ|H
zHVS5%esZB>p3QU*sgo-qn4Zu at n9iX4V>P`*pAWi&?<>JS<85gukXG^(ZfqXcHov=6
z8wItIiLDIi>zD5>U0(H#N4p5_`;#3?@HE0#9;>#MG=G!g&s_8bep8j!29Zr^=*kRa
z5_r-Rx)MsKT{Ze-KBR{h;S8-uy#dSNqzpHxuDwd|E##uQuu9F#QT0XfYY9$^;?zH>
zp0J)bpr4j5pPk`$zF(?A|1C+Q)nK+GB0Art^>NgrJrnEWUxcQ7qp9DhuGa!PqPln_
zWtO4luT{enzrfUlNZF`9jb^0lEcLj(B(0wCg~1%=K%{LqhpPG5`haB74uVB>42 at tH
zv8jx-EU~KfCDs>;@dgUphID9~Vy?aOdGDgqRZ084%GAlaSzcrI&Qve&Pt;72^I4|N
zK!l=tAA1 at iDuY1Ju=V>nJxXb=t`~??In-}+J=BZrYoH)Xm(R)YXzNO~!cy(BG~N!a
zf1w at _o|P%j-(&hBW!ZI~sh7uUBZjhEbV|9#*nT4I*^oPge6PzZ!K672cI;s)13tiK
zc(T+@(CGk#Foa97Qb&u5D6;bpWO+|Kn(U at 7QtR5=oF4Jpe0dIL4CkehcvWPpCmp7y
zR<QM`+0;fg=$Ox_e~S(;n8M7WX_CriI!6sZ<!Gj75 at rZ_HpHj{e`}muVb+Y?q=sWw
z!!emBWY9N at Ed*mRaknzq3r{A%AYi6r7L*kHt$4s{STp;*ku7yAgYlmE+c3*#aK7_l
zLs|;-_b<vJ$Er7U7klRoJ;HWHU~>?5?I=N7`k|%xqQ4_yvse4PjMl at UG`g~w{wWJB
z%AtKDWo4ndJWuGVT(7H(>`P_RzsUT|gnnfNwzdb3^yI&Z-8@$gWBWOlQfGnra at F54
zKW}Yc@)*41$SfO~1^!Cp7GOf4hETGXdO2+^@Pz77#A4W^AmJly{drjw!HpUeaV%V?
z9_$EPMv8yw(j43n*~)da<F{06M at uf>LmVKJiJ8v3mF$_2XKk`dWoGQgR;creJ+5{B
zAvDox0~UsXsND;clUw%EQWes->`hUE58#I6<9PhC9HPt*$28v>$QGJqITemB4W;__
zh7^69fe-{DKy_{8?qn)DS}th=lC@#16fUfi3V5A?X`LL?yd0W}A at KzlLFeeZ&msUY
z`Y`y-ghB~lUX0P28gf>r=Ti)WqWRJ6k+-S$YH!2P7SjomgAB|A;QeYN;%lg)voX7L
zZSWs2?3m^y8L5HHP`2_QRuQYVs&?#?g9>$R2z;Qnd}<GDjBG$>;v5POV$=vJT}A6F
zUQ)uezhSc%3qyOcQbx0B=QG at EKu!zpx&9UI;Q0;&)R2&6`<e(juBo-|!AprN>+u-n
zh0X}LUx>>l60nM5i!6c6SiZ$_r!8_m-ojNrVEGV5F8f534S!wQfO(}_nu68J6y}(}
z2-sa)LIX7AZ%_}Mc;>$7+FGJ@#CsdZGfx^HF6^(6H_e6|u+i)ROgUHwl9gMcd(5{F
zNZ&mO=W4I|?*9MNcmMzCyL=3POy8y8hV<Q(gQD+#VXf~9n2oi+`tD~R?Z3VYoY1AR
zaj$uwU1=r1W+?ls*GS=!wu91xN<2|{tURN69|ng%;C=JH)WBAu7YT>!M(D*?nO^)u
z<o3Sl#T2ka*NgAys-=}2f~0s_Z^w<SpB6(uk)0OAL>RAZYE^cmoK%^Z?}p0LQnNu+
z<fj0B4 at z_@%f>>*G9`Knl^m}`Y30yDiH-(#oDv;Iz+{!^zfgN9(OHR<C>s`KZOYDf
z?Du at Jes>c3^Va{<pa1{q&m(mGxf|V=^ydVo*{GlBll32BzIXvEC2nSvdqDd0hz|}x
ze-7^|X8M!#(Mqn5B-QDNs?HnnZqaL2dh-pYH~$>@Q{VLFK4hrtO){DJeDX2eF}?X4
z+{k)!snDB3y+_U?%>_Lg)t8e1_#X6S1<NLpz8piP#_P*>t at Y*Uz>d?G!wHzIzNB*w
z(3drd^d&s_aVk?f9f$cR&hH3+6mv$w-fsCA-U{giQ<1YBekf(|WSkF~oJ;<wTrz)i
zI+uOO=ij+r*cf?ao4~WM-h-iXLF5AnGM5|log#?u(-~+mHZg|xp(Nx^E7_3du$LfF
z8Vna$;Z1O;eCcn151YI!08B(Nc=6MTdEAcjYPnc_B2N$c;KbZA*C$HwDil+qJm$8Y
zj?w#JJS<uPhso)wf%~4uuGMIHR04KMprod3DmT@`%5{AiXp8!RaDL;bbVP}){WJ$Z
zzyUkf4S%<njvKN4R=Th1dg_qmt9qOD%rpo2ledCGl#b&cv~LkB#YAZf&TeQ^aBgFL
z;A0rU-u!)D`@3rRVjSM+_G6(FUMBc7nJaGycWIKt23Fq?c!^KYx!?^Q at 6{$|GiJ1Y
zjz*8J|9C@}=fL47RU`jfl!N6596-T>LoEno2Kg<dT67oq4m=nx at Ne+s)g1X)XUNB@
z^G;>Ob6_3_gnJ9G7}vF_aK}~Uf{HxieCsu$zmcVzVe>B`L##+L=02w4AQuJPMrv87
z#@n~lKV#a7+KAdGg|$!QJ#-sOxxtDL<c9gW&E@*3Tvl4tf at E^Ytmo&c1<<-o4j~L!
zm_}1;9lRNsLtc8#obqW7-6<9XPbhCX*K|GIu_avU at azl?9LpWsQ>hogS77+%@vw%(
z4z4$JDzqt8?nRQQ)_<XTZ1X1Zf%(yA#GRZ$i}7VDP;F$(h$e6UBrXc2peDv&M<g)&
zxJ`z$EV`a#{9v`u|1Oe-3M8lrN58HIns{9!3i1#vm4zVI at fX`rf#>6$g8a-PpWVfr
zUo_9}Hi7$b{y=h}nEiprLN5yYSfw>DOMl=K=J_3+X at Ga485uH{ApCyJxx;*Zw1(q{
z&nD^}q?2B;PQaB&$h09%6}Vd{NhcsL=0*qQAUgp$oS%9zI|1n(IRS6RukHk7_Lk%X
z#L_2u05h3hx*$hwecfLMM`9jr!a#3^|4(wx8UDYr{4aa(|KYHk8oD4GnF;@&;rx4u
zw8s8B|1Lpt;ryFN-8o6;A92mn`8NeRkQu`#;D#o1H&d=qSZp%KTZo?w5zQu?f5cKN
z=O0VKlIzYtD%#}y^AA;pYnD6t#A<*yG?$K+;OK}~d(Z3oAaF!iDfNGL+?;o!792jr
z+0Ii`3`iIxK2;v;e|n0)-=a4#uD!dO#x**h$Z=h72DY*OObheDBU!!pxg<#!zs<m8
zelJ@`eFsds;3BMc=^C;pXX6{M at yR3AnVgNZ{Uy%Xcps*A*o4aT7!K?-1DDvl#JPvu
zqi{JE<2j?*l^PfnIy+5y at azm`R=><fNY}=|yPlR#dthCp%3_L01 at FJhku?=uj<o-e
zIyGqti8I3GNKDapQeiEIi-zHHWF#bXIkLA_E=RrWhplIS7tuuT`*1l<>C5cT%HK%U
zPfDLY|78;TG&7xAUs_-JKYa at R(t65&iaxzn*QWuYPibe|f1*BJV69J`s5XrY`=d{<
zduf05=}fLqUkNz6CL8<Vg4nos59CX&DoJC;1|kHwUh$8>xpCz&JDEkl$J<5QLM70<
zCEOmlS!GCp*O}VAEpmF_)Gi(B&@J<~kvX at _pTZrp%x@)Xu-c=mzZ9CIM&s3h4vKXn
ze44P&OEOYH`OT5DXd-&x8oG>S6KkIv8u~Q6mF#n!M4z>W9t-R^4V^>4WbJd>9RT}$
zFLrKpf-P*d$I2#`U7FvUeg4iX#8IsN(*%Us=h%6NWBk|vgfX{1@)_E(4e}G51$llt
z8{{z>g?%oT+^|>ALDm)wa>Gi$%-TxNMTW3}X;kMn<3y}3(|(d);ziU<r=5a}mUA=x
z-k4&eX1W-9$!tRLWDH_P^kqQ9{55K&BPax)t*t_X(4}}fzDtGoK?&0F3udz`s2IX+
zjP+s<*wt54uf^=Ibv^68$P*hYB%_`0vrNivAF3OSSOjG}V|!A}_BuQo<h*E&PzTWc
z_uf!b4(3sY$;ARje5-bR3w!+~B{(0%5xK!T!6r3adJ6W+bShVq9q!yIHVD#U_B74m
znudLW<VR3e&^B!>#4D|DQYzT$#DB8a;X=XAYuc!C1*o9;Kij9G1j%1V!Xex2<Q0h8
z?AhFkHm^y?G#K-#@XZ|_h!tz72${7;e~-Z at zmKr{2%pJS<jxp;GfgvyrWW!Z=(APq
zQiQ#WlQnD`+djenCI~p}c#4H#+EO0*SmwV6=P?^EGi+K2j8~bw3js+G{DOzkfW=O6
zR=^zQmXb~Omq2S|4-u at lCwx_GpB|S%@&&BNCbLcz!8EY^&WXd$I{W&_6e6R|vzoR#
z;9A<Xg3XJKxEaqILZN#U!Y9)V)z<ZhQ670M^7llBAd5JBZ+JArkI){qSWX7w4_BBF
zEVk*yTja6UIojcX=97|renLX~`~$On?(NY&-$c#-qub|IVv`Pc9e6|c3;TQnv(wm~
zQ`tT*(>~xP`XObZh1j37llJFSWAn_F(4g;mwRffcIeb?c-=Fh_$MtdS{+xBRKW97N
zpYsVa!~UF|(fv7Z3KJdbWjXqlhiw5`g#9@?;TVGpfE~?%-r$23-=EWIxj)B)<ibQh
zlX_^Ji9ShX9f<bloQwTA8~Og6l at MlRA2pTH$N2u7MyNezqEE#QndrAtuB;12ohUz+
ziS8fH{3c|KD?vUb>`xXrh2?T}1wLR+dNHFn&cHm4jWvCoDnhf-KA*~e&{UC25JtPm
zZ=pb7dSe9P`+P{@2e;7N4Wfi?%PgphH#~wghNLg<cQgY)Ex!bzk;t<!Dq0`^vCe1U
z{n0mlVR-Zp!f{<}3c|uSwBSanCz1rVcv?QO2mYIK$%tIoxB24NC|;j0Zo at sFFFuMp
zHebAnQD at 8-N06S3&KCs%O6%nSv(pE^AvPTNL~*82k at DUmW1>h?KZ}W?2Gwt|@O=ib
z<0gv75-{0`;v1+GCW at pG*_a_u2ov42aqxij?;i|%KC%A2`+uYUH8x37o0|Qjar&1l
z--G5K4MABPfPd7B<U;wDklKk;zSf%~R}v?zHb;)pm2Z|%zBNpl(fsGfSH8zVm0_O2
zouNwbWJX%N{vFBSar*aD2JWN&75gmTSs!bv-$;sw^zY at m{>6Ae`j_T$Bx22AFu8W2
zXLn-HtN#e5XRibdAsjKEUY~(5YIqU&$U|E!pN-tmH$}P&`Rj_5&R=sydOz-%BE60k
zZz$5AfnLN1U<zDmeG*Shf4)rBIB at -W5!4$WpiPca<_bLvZ!Pra25bFEYx8mXGmn7D
z>Q6d80{!Xhi~ek*cC%XlUJ|qZU4vDnjgyPPT(ZX;<<ep}7Q_q0=JUMH#!Z|d<zzx(
z&o>S*kf8_1Dn?LPr4J(moHu6Pd at jezFW&-;EbyN*F-?Wr6u4Ughey&65$osNMZQJ}
zex5<Xm8S=oas_OG_aI*}_7yGac|w!ZJle?)7}MA$%`Imocm at iPjP@efg}Ja!i<Kbl
zMHWUomemm&XJe+<g*9EJ^=veNzLEI at Yyqa$u92MQc}{})X*q*-F}JK+62HXT=G=KY
zPL7;QS%swfk)6u>H7$};{D*%q7NCA-FiyL!MExSekxuXb(bPvo7Gp@#&tvN8tJp9V
z%b&<w5DSa+hhqz~IejW%X8y9Ukvu)w?QDC%F6Kj_l~2j>@GTq<>y_YGOu=x at 8E0I;
zuBl|a)9K%<w_weNc^=#&ITy2`Ah7%nw&SETPDSGkjh8}lGCha$Ec(6yiuZ_p1Kw~o
zi}eV%1KGE1y8xRdu&n~j%nwa0!qPkrdsL$_v9L!?+e$MjEc0Pw{szNTEX&7w-<MH;
z!(;@jCL)6s)WT7J!$lxD>ThT{k@*{(@HaS#5M at OTUej@d*4q#}o6cN=2$HE{7OaQ*
z)zd|2Mn)v<FQFX at kVTcP=Hpy^0kyH1s$!v28C;CbCB?aVWE{;6QrsAQz-Cd=g;=Z%
zu$qL^m)t|kP5nH?>8BJTJAM71q206q`JLc1a_{nLlmLe`7<YGcp7R&6l|U3~k?VxJ
zja>U7R5)^7(Mzt~AjH_9fUfx*5}*y>iy*g~hRqM4+4Y4I97<;`!-IZ~_pDQTTGoM1
zuLFcuV;2GrpM at 5}+YrDe3xF0l3cUH9bRw_gYaS=}mEpwa%{t5A$I)I<U%+s*7rPG9
zy!KA7D_3bbmSh+^Ou{u7ZFsEQS3E9Q2}d1;_M#0l{{+V8B})CYU7qkHiX)qa)3n*R
z$FlYsM5z_=ay|LaVS7u0c)4&-1v*I?<kFESa65zXAfB^ViuStaPlB`9Mw2;=aW()@
zPwjO#7)3#YR1CPC>b;~rCT7q+BUKI6>}8fu3Uqy0XkH!;vS1PWV}CyDKQNiGg#`oi
zM2tfv-3Vg}iNNc?4&IL$HtcJ~6IxV&aHrn<Pnay=C=8|ZX9AuBrxydRCLz|{LXls=
zi`$ljTqh&Ykd<G91(vd+fpW-7<6V7{6>LA*$7N*<;@G1dMSFDRaJ`b>;SJa0NO1`r
z_P^>F5-yy6e_=0;UmYJpgg*7UPHfzUmx1?~%shvdA|WZGZgvsIBa)kWyC5?^=}Be=
zbREt7TJdp~X=hkca-;Y2m3J6DGL851EAQ-CZWf{w_acoW^?nX%e2(|?$-U%yxSp#}
z8|dKZ*i1d4p(1D~Rl|u$^z-x~tnG#&!=(B-27s7;UX700dq1C!sC1V7d^|p9!20=!
z4BlQp*ZcYKp4u#{E7$O6c4G4x;y at emv7`MR0nvDWkM_*}f(*y^%o-d^k$R>Q3}K!t
zI;Q_fsZ%P!g~pq}4!x_s7&#YU-d~gGZ at N<K^Ek5okA{4`NGuJfU%9ep`5J_VjnViY
z-=3fs-$1%JJjRO*B}wont?}>8ktG4l2-28ot at l~nSS!7M7{rmu!=vfF%L9!yU%jAq
zyaQ$M8Pxw(=*XB7K^CYlYp`HgT-@>;#F`9z7(W2Sb&gzgj_c5e_0F-9O)<v&><@in
ziJ{mAF_uIX+u=;l^jWWE4HZ0j2Qx;}Y3J&FWLQsqB(YwL_K)7iLtU>eXEMR(FV|%=
zxvPd4^)w#dge1{kR|Fx9?{&LBH}$%q2$f~s>%PJogm@$Oy6ph}ko~Rs7HW82 at 6ixQ
z^tbS>J=gm-$Vvizu5)v|l<QU4rGs40>m}F8z32MH?+sdW*npgVTratPhBoYl*8h at n
z9Z6O}IK2zx_tf&YAlGQipGmzbZYH$%GgHeS1qE!~^55=>zL8sg2f$q4nvJ}PCxA+3
z+QqKF8S&ornDO*k2Ska-yby|_DX&a(Fk7hg2$IV%qL^swBV%zd%89Of#V(U!UDL2L
zuD==h6i|x-R_tc_1z8ufl|EQ82nZe%LL<@$blt9_IUudOBPfT6P20@$C&4=@oG;*y
z<5$L~J+uV>C4L25j7duCo$!@LR^uN|Kj7F0yyrV4SOp`ME(JCq))G4 at kiG~RR1Dq`
z9!1MC at T4`u$alzr=`qZ0h5iU+kRFP>O>NR9)a*~NZV7{7(q69?$c}_jFP&~a508Dn
zK&qG3`wKC3meONfk4=BHQGeJbxn9KceS%dHpS567Ot702JLC~QU<(`w$B{n8+~<9K
zTPYgN;TFt9*be!>(2NE|6kss;!|%Ggx#^1`fr4!3B4z`=kb=gIj&JOH2QXjo#R^T`
zg)ropp{jd5t``IEm*sykJv=v;j-2}?Tev_BJSYRvZ$K?9Ds5pw<OOg6{3`>b)1Y6?
z-$Y`AlI2S5$;D*X^-m?(ELY-b8gOWv{~9uLMJ3L^nJUrl#$vn%p>6>EwEUl|_aBN!
zVL|^(f%jQkBHGaO at Pd5on{D?Wi^wOKe|td>NQXfsYC at 0HZeERuUx@0s3nBq at YLbVf
z>eElJ&oy#=hU)cMcZ^Y=0l)om>N6BVoOFF&K325PR5oK5-_gi8T(nOMNt<Y&Cw`>*
zgmElC>H1W|Mq~1}TyCH1$T%i>`xP~msL!=G{W$IO4=918>oW?yoYm)DHlGpg^EIYg
ztUfJLea8QW>hlb`(D&DWSl8EMYf#rg|G{HS|CxvY!t>gC*Js}{UkUWtW6b0fRXJ9#
z%6O7F(KPipil)K(`46wpHez&3w*Ob5L$LPvyIhHhWSx?HJt|dVq+W at Gtk2x|@=-GF
zaTBv?(H;e|XzeD48dYT at HH>JF?i&tfd$>PNzCFtI_BchZ#4x=QJETfH at v9%FzdLDe
zlSKcx8-1CL_jXydPA5G^?eQJSnBG5FRmjzSF#5+6m<FSN(0nCkyoWCXbF0|#{!Vgk
zkz=cg*`%VA&!)kJD)BHi46nqPk*pG2UtyHS$2DlQhs)lR|I*a(=saoM$DD=6ereu9
z0af1jhU>B^w_F<YkH<%~*qBe#kNgcZ_UpsGp|)riL&JVqLBzk4=4zlOsc}C9L1O*>
z<}B1eKd$&92_4nzacU*eIE^cQ9637{YE0VSkz9LiVf8|L&63;8rPs at C)N9O<ZB(!Q
zZm(U`UhtpqZ+nf6u=Ywc&g4et%@3nWtRKZx={)LG)Kp)REHWa(gEn4IRg(G<$rztE
z^Y4RM%r_Iymkn`)lu7gDix53L+41Em^l~O=-!Lmy^q&?IIwJlRY8WAB*M@%_Ir}>s
z at 5x?-k3aGplta`4>(5pkZ)KevM^s5)(78VPG6=1fd<_}%Jf(k_Pd_x<vKy7c{t01*
z2Cy86h>PpIEQmdl>MNIa*cU~#_5_u)1j+)v8it|&B)E0akMVszIvC6p1%00nuW(Kh
z*qn;J_(q1ET<-qkKo!1>2z=hSP%O&e8NlCw at AKt<QfA-987!L-q*7w_i7>LtV5qpW
zVHxE_mUqT7q61-1SZi4 at Vz8MJhtOwcTGl~E_m2 at +Y4jI@5k~(<{jhYb^W*$oz_8-S
zClWt$4g5I=&W{p`nXjAh5Df5RBI|k<{5T%M9wQi>AIDqrgFe(qLxmw2n^kSR5RA(p
z7-(~k>s$X%Nc^<T6lTu8iN4=>7B?U_qP;KMMcV<`_Z!(VOd+ki=6{0i$-2Ev4$Ot{
zGPGxtr$QNA0}k#AL|E>$o<)HS4VjR{0ZWb~4kho$Rv#<zBbhR_sD3G2+A-B<(Q8|}
zAtmwRkZkowv9AN8YjFQI>Yrz{@5OQb154Dbe;_6RsL^>*%pAG+_(YTs4SnQ;2SJ8R
zVlY970kov9AJAaX4;R577{doH1{xYCF(2Un;5!@ax)?x-b1}#zF at S!6r(-kfUtrX~
z(WpPC0--AP`VR*cvGvDJqiFq?81=`r!;k~Mo=$Rr;z=zCImq7uPg|Jn9i=+9ra&%e
z<)HN=Qt${ytF-)!?r`q8i2P_q{Ue<)<mIHH4 at J`ZX{^Rq7L=CX(49rn$KZ&Plg at fa
zB+a2=kR?r_JBy^WrX(lLhhAd at e@6>1jNlLH&LZh_>_U>0Zr1BsL*o}K^=!IB(gIUm
zk0ys73jy#1xtgP1F}7h}|BPmu?h>W$U%>VNVBZ(wq=pCGb`8?o@!_-qqAO0xpgBP6
zKG+i8 at a*hJE~b0DfC=#huowerY at osvQVc{?M0n7;R%C#&27&Mq#}|u}EZV1Dj#q2M
z`s6>A))~m&OVb-|Q{=K}QSIc6kF84&Mg0tQNTR4;V*J&MdJy-#R=@63QFXzjit<Xe
zqWLl}YC(KaNwm-{DAKBh at -QD@Ei?@`ynrL)3+RDu6OwD8T at u@J;8Nm6X;`aDzJ<<9
zj%`C(mAEjR5v^7KJ{9%x)k(F`6sd(8qb;<H4t?}0cjU@}Sfl%lxxEDp31MG}9YT)Y
z=|xlx4KpV)%3xp7Cal(r5Y(#-A|BCj!@0LUzMLc^;bAJwqOblJT7^l%i_zv`5!GWW
zl0*UJ;GI<gZ|b6!N|RQmZ9b-R1hED5AZm-3CDkZ*vx at Nc|7Wx=?<ZB1)F^+UYV^`5
zOY}y$E7~Y$B~=brq0n#5NmXe)IHoI|IZ^IW5JVIAESo1cMpvH=E*i}Pl__-fHK+n>
zf1 at rec6HLtvn08?yv)ks&GQ|xO)nrCa7G*ti~J1(n7Rs5L)TJ$e27fiX9-?M>%xE6
zu_M#*Xpz`&owyq#wgvW;084q^W}WzBYw$1(<x=8*;L)OpBQa`ASoAeS3#^U6vH;WR
zM=5cCwr;1hAj+`gDKVxF@<fn_-S2o8n`&Q-e9J@%-<6UL2Auc9*XrK^!n2VNn0WVq
z at FKh)Jr?obShb=#NWvn12R~h$DBug*>uIVIse2a{#bKdTVA1ct#cvmtD^VS-7JYQS
z2)hX*4`6-C5(8f*ii}M3GMan`6C*By-DF_1&lP}gQH;kE<v|7f0;>%POP|H$rl-8O
zFtO|j<KbTEo0f=#Xbot~p(T+~j3G=aE$E;+?(UU at v56{5$!GLh`d8pEj(8zZQ9)Ef
z&=mZ$2iPZyqur77AqdW`oZu%6LSt}_MbCf>jeL_u2{ZZ(6BW1fbuXP`Oo;S8I!te+
zb)YmFzU95;&yvQL!p585-*0-);;zkg6h-c$2GGNtb(7H3k?)zPXw(u|1$PI<)ptG<
zxd7z3=?pmfK%}3X^e{c?7o;k5Bcen~+n?sNCbEZ`$TGkGk~X>bP%S#<-P8L=&F_2c
z(GQa<F;UoL$^jvI;2kfDj3nU-r!h<R>a$6U5#Q)6w`JuIv#5NIDQk1ld%^aeDz~kd
z_p5q&e{+xT16L$2J21P4ccneN(~m0%Q%sg&iv!ne%RgqVkzDHLI<s%0F@=~tf#grO
zIVC|`jj5U5Om~qA(Nlgv9fwl>UZgAn2W(QxD`}=}5`aeP3O$J6j9%Us_VWJFUf%Df
z{?tSHTTSoz>BpW=qW{o1Qb-P~^On^5aq*K#nz8PM6GO9Ui#43fYUc`^=oRtk-mp0D
z?%YaWsPGSriJtTb52S(vTO{9lK)Q!;&p$$uL_oTBhAfWrv6P@{Rx)3u;KkhNpd93Y
zbR5o4+nEE>(K|W~w+g>{K)SW07o`L5##bq_#Xh8i^<4 at VC^>+mm;0dO#L-K3v at pq|
zm&8A~2IJ4Y{{&*d&b at boE_CH!F>wlA7JI<-&uRu8l$<08KoOdbm`i7`V3ovtmx476
zORk5eV`;+;cCMn>cPV&ix|J*oI=Ll<rbFbz`yI`A!=uw-hY|}yrvx3KYjrjykz>!j
zgA;}R!&DLI4mCtnIiU+Lbj+sn8a4PLo5%H*5?qS3SpO&so$jE}rx%xn=;I*uu-SL|
zPc+s8U`X=w8x*e;$2YKlF5Bzc8TgQJ5u20_ZY(aqo<TKwaAT={aAR?_D&pV<KTD0X
zHgK}-2m}$T5IfFkltOQ!{wW=1JBjg~9~7k;fUj!)TSnB8o?_&!3XyGk7yAk-#mL)1
zqo(vh4iDn7a*gK|XC>(i9W>pb{WUyvBazgGa%rs`G3lMUKU_r|+0bA$1Xue$|Dj&j
zW(uK~DMILZ>|5X-!1=jdfmb{@@Dq4A@(_*VOaP2ynIsemLg*a=Zs<o!soMNVDVY-N
zNa@|Up;%5#tPn<zKFKN8yU{LaI;C|g^mW9Ce{{GwZ%Q8`i at Zskh-WrMzeg-WD$w9?
zT-ZHEHVeB~N at I#urQia$MSg;}(pgiT)|bFvi?jNt06XrisY1YH&ze4q$}%D6!%lpJ
zWi#9yzmyUuHD37E_c&hg?-?CIequS^9*-EoMhdW=Mh%)(%*v)4if&9 at KKvAKQ;J^7
z;+n>WFl{GXu5ffMbdX1k4(gAVBgVn~j!|;s#nB!t$}NLj at Q)aM2lnA3M&Gi*Vi(l<
zatb4#>^Xg6zU5$Xhdx+bh8r3ze#ey7|Cqr7fj%LLJWdM52t26c#bGG$hZrv?lDUNn
zyO*(k|Hg~uY$d=LFDTA6#*5g%E{8*XdBfNv0%72)Tts+L^*}G!!;5!%7Z(xtocKo9
zmcW#*Mlr9V_4GrEgILkq3T(s at 6HhNvT71LraJ=&$iYR=D4w$JTGT=sCkFUX}i`V$^
z at jNV5+0_uRw-hTkZSdmo&%KoBZiF1<@dWJ~ff;z2Lc}Pozd$F5oZq)m=p<<r8i0E~
z3VjF?*(kJ;D3?Z|Jn%~&A3-_A69nB64 at zzem1L%ZECwh7faVWuoMO?oKSWBseqx-O
z3Q(k)S|EO$qH(Y<<J9p~V8U at K4R0;Rsq?MJse!<b8>e<c#UwpW-3w&IMCgLanDlUE
z{+`ORk0~h|Gm;vy9$3v8Nuv%$y=r5raU_JDG56t+9R=NcU97$$9+4-6-3uGj9KgfY
zp`HGE`rNw8<z97V`+YcchHVsB;L*0wCLNqQ;OAL!h&7)KD>?-IHMw6^`)6L)aZ1az
zw0?zgE_?|#&UD&gATNC-T7ql0e~{Pp6CAM!O+uCwkbM^m`41(^rl}VqHGTYeJ?6RD
z%CIztGI-)HY^^|NSm3}HX}zq8F@%OD({~12Hv!)ps^`n<6u4^)moKmOE%~He|EB0s
zrJx935XR~PSh=wqbU`TX>nM8Ehn|+5_P`4iHY7(s3FFQGx7zXVwB{@66LM#>;oXhT
z6}rj#dtFUMM#_V0>6?Sw at I}E3VFQF|a27*4ylv6ZK77BUoizYX8PI26 at 8^R)2KHhm
z5wy4x^A$oicfzNvDOFGQ9wp3CL)WqVsGYeza(=lQo}j|Z$Y$C*SkVjcK|pOMJ`${I
z|DY)a_Ay{<Nta>w at pxx5%R&JW?@azqJU;6A79$nMlCdM|Gb*Q9&5vN8&Xq%%D|RUw
z1W~Ozu6k74gs^81mT4dBVbAWTzL at LLc9J0io8eXBGCohZ-9OEPKvpOY`$F*zbX9vz
z4}OLtfcQv&z9o~b(WB&}%Ct^T{x<zHh2zC%3a{wTOu<W`BhwIX1K;UmU#F$UK*5+~
zEh+B274+$hBF4lTj5yK*zW at bEqmTT#B0NeOai8eWtu|!Fqoj4{6M##^1mGC_Mw?Z%
zHf^@WIeu=OtD(^je7BIc1LcS&7c)QCr~JExtT4SKvdjjNU5Sk$TxqBx02%EeK|g%N
zv66`E!D1XC^sAT$P^`)Wm<RYTkNO9=-8e_K8;>RXN!W`OC`gR|(D&bmy?7my;wzD_
z#nA9kGUGqZhqS$sa*T%hcqMtt^#fFQA*(XicS`UHVy(Vs_f#sE_EP?wl?467)Do%B
zXGkwOccO#R(W!k*zhK``^x%;)7zd~D3EVDHB;gB>!GWo6viW(ls#>Q00gO!O1TTHH
z<<rO!ppgkk<PzLT_P9QN-hk00@@M>G8b1#sI18_ih3dx3rTQ7`4y at nnJ65=MrQ;dY
zWuS!DQ*{u!GD8`hhH>KGO6!T#rNgtbBNOQ+eq3fYe7yY_vjUon^180qI|nm=u}uaX
zwo%|%939+@&sH{hb>sIzyx`N0>u`r at N1#ETa@>zWdKKBCA`d-Z<V4v~UX72$e<>1&
zy3VlCry_UayE#K`_)erm5*e=|yGRWxYB4t$V?8&R1MIlDfl9!wtf#XvmV*6ZB*;K1
zHa=JdD=-y^3`2v_3$h1ok at lX}q`<>hB9nnHRENoHf at ltsBiC&8TE#h at XP#eZ^nG8-
zou(KWNlY<{I;T7qHHx2Q>hEnq9YPag7R?^GWqhL9GUhH8HFRqtU+P+tR4I6<woMJ+
z%0@%>K_Kl`K7h)`vSAk&^z?mSHnKtsgT&s4S8r%OM$*an$S+schC6jV3pPm_gDAy#
zv;FU2UUQlD1sTg2dN*_-ged>Suh$d$ImWoFFvPvVhqxD^Q0NoC(Ga3Xc=O-GEF^X)
zU3=BvwQU$mA1~9s)W7ii2#sjP6#h{y({`}Q+_4}6vp19wKne75BMhQ?30z_ at bRLNb
zmYUzGo&o7xx^#$2dmv#NzYFa~cJXVZ<zmM~4A^cqB%V|3alLJfh?a3fcjzNx1k{j8
ztTB-g?IhZc79h6~-}x*BUegUIl^R1xjy@#5Z80SB2v~h^nL5OLkK4hkLDxYU|0bfK
zA7cEY7}^#pcq;=ZYyV=477lTXiBSfd7_}@Srzz(=LTa(7%B)Sip`~JzDmQc~z;$pq
z6d~iQ9!i%wF&P&$$qtXfjSUkyB}kq{fp?fEl;U+2D8btR^M=%HZ>Sj48ho&Lqc@)i
zmC&}d!8{;4VuShuwn=}+?TD{cSH9A6HIk9V5x&&0BRsCJ{b#GL(*j<#Whp*;<wl3P
zY6O`k6i5f*nkaTg2a-3Pr{=HmhD(r?$6<Qi*<R-A at E_uF<pt6_jFOj`EkJevT<S!9
z>tu8i3Js{V4#iz0pR8zYS7a6*qVorBP1m)mP(-u`RUbkS4+`Jk);6{5%TQYG0h~s*
zjcH12Cb}5zQV at t7(3TI8`!kdb!zxos_AQa^jJwT%GJiX>mnkfF<Z-f#^$3Fb1er*X
z_z`(6C5;=ApTGuOoj#prP)VdRI<Kahm1tX>?IkVS_i7v9%l3vcon9?-RH>`I at e?&X
zIu)DZc{ppm&hoI?pE&baTE_CUEV(|}V%W@}k345#H%$svJ9r4NF>GdNS>hwlU`ntH
z!&}!@*vW79#ZD$xv5Sp*p~)G<0J_+7IGt`)tv_2ep!?`0y{}L)`f2^S4$|IcTH*qp
zLd7Zx&A9uq(2;C&V at 7nbB5;a6%&n%ctm_Y?p(Uh2x;4r27mBVw#NChYVK2tI(MFs;
zW2LR7k}B!*e;9Z2h$yx!^D)j2 at X575RVbD&oGZATZ70vfxf&c_;{yqRd<h1?=n at Rb
zVyiIZ;OE7(i6SrrqKMNlW{_6Jrgf>JFtodNhz}pZ+-S<C<S2*bK=*4g<4;hFKEmUv
z8KqO>xR$=SG-Oe~(^LIfUBirTGj$DM-(TX~Bw9E1Ol#EhuWH{`ob3%QhJ2rfUF!b%
zp3p_8`0M^z2q&874OQiqxjys{@vs>J_>or9J;Xsl;<^xMCs~#=e(T~uK8vm!^%@-x
z-$VBK@$ngFN$W3dQEEvt&sIZA3#e(Rsf+cdCQ1=mGKU)P2tD%wOmq#VybF@?kujb$
z&q&&Y+Mgt953diLC8+(CsC{)$wZBpqIBaT<3LG=~h%_9-5<pRV9&=x>J^O+dD&N#w
z<!R{Q2jkcbTJ#qL5RBgGlZBvT6MCJ|8>5rXC}!e(x*nrmd9l!;_uv3pPx<6^76X$G
z6R at oz=-+Bj=mx23=U`|+(uns!@fc}_=)ysD<mg?`N6D7czd%DzTzZ&`e10wF`ebgH
z%J8SN{G5COXp}>DYUgE^+4f9UPUm>4O!)GgPCMOzgc4Re9Ck3OhF0J$Z>~=G3dfSp
zO{`p^fNk;u(KHn_Qd?25-ZH1FqB%V!>XK|uv{XL86C#)6hZH&<49V&AQ6^NiGwB9Z
z+eTZ1(9%g)Ej>yQ+jM&XReO>ZO-!m_cgZseI+>C^LbfFC@;aBZ3@$Gas)KX^mkWd=
z&4muhDRX_`Z}NyyPSPK=R^J8vLD^L!yRHY>Ju(Qa?7EY~%Lx8krgOkb)=FK=qiEYB
zmtvULAC(}jM|2*EB#}x6hh_ at lV<9*d7bS}LK11-m#t;ge)aD|^GV6LGnrAEJ6rqhy
zW)Wd at KPtGltydAV?t6hgr$1eMIab?)57UsdM{?g0Cr_}<@i4tN(`<vY@$VKDD(ZY6
z+ at p@3Y=yeJ?O7*a3gk at xmEBg6-fFi2l6L$^7%1KBUjJS4N?Q7J4qIn>`eP2;*ZtC8
zbJ)J=pT65+TRk9shr{;h!1UW4wkI;v*Eno<4@$q+VOu_w at NXPO_;(*p`1j-x{>MiV
z{(DCg{yWDI{<Fgg|K1Y_=j9U!|H~5yexrkMh at LY+A%6Q!d1=5O1~SNS4#^y!-rUdj
zVcPHP*Y#uY5gdN>>G+*~v;Cz*Y`3SUzjKJ~kNwi0ImEWQUpgR^<H%UNdj}BSUk4E0
z?E?r85a4AH-i-9q=w8qB_YC(>4EK753y75G!13v=hu9Y0obfAO)Twe&Vf(59worQd
zIwa|re*Xa5E&bC0q2v^1Em}<2e(gZQ`wgnwFa0})2Z)4s!ua&BGHeUqOlvvB_DR3=
z6{ubRblks?LHD~e=$_Eeh|TuB0k-SY(?1<xd#zvkD+6qM`lSORWy@<Bw%^Ife30S&
zmheUcBH=xg;z at sDzHPnzw)FM$ZFltFm- at RJ+noc`m(|!F%_Pw7%#PGM=G*>$X!_sg
z+wMM$K#{}Nq(3m<_SYlQ!!@>>jwH~lM?RbK=6u@&$E1IW%!a2&=G$72r5FEwdOA`+
zc_t<JM{znb-#mftx0Z&|=!J(K{xpSN{Ay}Cve-A3Aa8mJvZ;&`|8*L{Z=X*0!E%Cs
zP)<0T&L;R at XAtC;3c3%@B%BXt(%V1!h=?^lx_@;x!M~nOIKQhT{J&Ka<lmJ9d3lZ-
zkjJVB@^TeHc2}K&R2$|J<lVVcjc=+6e(OBS?WuVLe}mnB!|rdLPkDl?>95-5X1d;f
zbEfS#>FIZ6+HS~5zb at 1EU`9G1#Qqq;ZL|M&knM)_^gHoyMtW!v;Q=Dy4X3WND&<l8
zhHTsO{nDSvw!PjzeQUPun}Ms-03uB4D)>F71iv$Hus=D71mwX%w&fX=@1HWd2&8AZ
zsJhBu-#C7}uguq2UAbUEeU-1auBp1wZ<|qBHy6j7XVeGk=FX^}Q(I at Vom<=J4^%F&
zO<Yjf)KovuSFyO(UsYo}x3aOevd-_T at XtNBwyD-11x&18xUjyC!^*s#89q;)zq)Z=
zWmUB;_HklmRZaC=4xD*uL$#hUFV9zcX<g;Q+Nz0_P5x-vfU#%2 at X6JF&pe)k{^~Sa
zS$$po!urOBn%XMcoXV!!DqoYov9 at mh`0<qu4b^pXnaM~qZX=YtzW&J_8)T|QElO4M
z at rkIgD4YCq$B&<1?H`}Jh;tyfwh6Zj0 at Vwuo0@Dk<Ne~s`nvhKwRLl=m*mc?Z`AQw
z@#VA1i-R;@m;AZ%y(kPnH1h+opW`#}u+P}`1bA+d5dW~j14CeR(N0^#TzkQ-fx+yZ
z at edZMVBB1=midFZ&CAQ6{3Sc2<ztu!OJS|jrX{$CX(>Yq(#`-iG|U at Xl)>DebebWf
zYbeFhL-_mb)tH~dylD5INBd7<(_+mC7RC<jX at raNEi$`?&|r=^<7;qCF{*^C(wn~>
zdnB$rO#K^1_oev5(&DD8?u9q>Pslk3+pvN77cA~#2Si{#<#Z-nS7ABv*#gQP>D=1d
zt}337yo$OH70tsp;V*!L)cA%O7Eyw%!d~qiZ~kZMG7PcskJjP_;N~mlYn!^Bp!#^j
z*xrcwV2;<dB**W96BLCrifQ!(KCRhcPz`*h8 at -`MU=BbfQB}UKgUSl$k&UfKcSq_`
z4D*jUcSfpkk41vW1^8vO&_A62a6V_0oLh2E$xNJjI){u`v^V0u;xh(Q!CY_XVwiG^
z@*oG^5JDPE19xfFR;;2b!E2C{sy#<8TWXrvB_~?-0T&VKypw_np22FK$vwkY)PmL3
z{A2C0?GoogE(9UuLS|q7(6+(J+p;c4GH3O5c&U)bL?LOd?U&xme8R7(u8VT~2u{!K
z8u}Jes3A`cEy;yD52h+=^fEckhcJ at TjD<5);AlF1&o_N3EB2wrc)-8SR}3uGXw#Rr
z15YIAm*&`1#l2QlN?(PXMCdR|wEf{n%(E%MCy8MpALho?h=ufVZt#;#e{fc?)qjZ2
z5tRI;hxTH2FI84FBPky6Z!;}OccN|$#0nJUY>(py>YMA|F4b2Jsi<!QBnVr3BKXeO
z3!=VgI%%O0^&N%=qv(mT4K^GNb|jU@*1kVA3S_;yjp~n0?H<Mb7XGkQhWf+f25R|5
z at -|PYKZc%YBZsyZPb26Fzo&>_=HFGrzs<(}5$u701Vc{i=}%?BRB+Qa3(*PYDX%|^
zzqRv}t_~#Mg!}dLl%^N#NVFM%SLP}I-U8suxL*TU2R=H$B5XXYhJHnvtD$8%qKpy5
zU3J;JAfZ`3WKGL<yNZoQFMOnq`qdKH?IYfPDC2jkbBh{gkE*ter4O_8al~!gOHICC
z#H|T{xMfr%?E~JptQmK7EyF=S5J;>7eOs_ITqbcgxDh2$W65<7B}*Osr^4?nno~K~
zCq at rnWmOd$H=+pt!*51Ta~Aq0d#6t*@%ntze9qB}FkX+IRzJ7e%_z5gKW1WmU6Y?7
zSiT=Mt$IFBZnJ)0GIwr|@5=%UqVHXEs_Uw17FIU?qNtXp9(9!qoMXI|3+K$OoS?t)
zoIkC?=NvbqdVXyaPz?BtspXRv&A`hs75++pwcAwNapjeM%F^wgGNWRw&+T at X1J@Nz
z at 18MrT7`d{&sVi%iPPyUl;<CwDzv?`s;08h=Wnd6g*jg3uBgO6Zuj(=zS4&2GYfp~
za~4#L_PLSq|8OxlDCE(!0#`FS9w{*POP!E_`meyDZzQve)CAq=zqS7Ag-yPO>PBBv
zbyYoPfBH3f;>7W}dFRXt)cFIs&QYh1I<?@Gu>tm2cva!(Qwv6)>dY4}kOte%Y_x)(
zj=#y%&aq)RuAN|5{$v;8bFs^Q*$kU~Nw)o{%>Ef|Ad1o;_9(j!5x)d05ce{yRKTE1
z*hP4=#68<dfqQ~25HQ3{VHd%g`7NW5ZV7gy1?(OR*i#m;EdmDZ%r46BeQ__-yjQ?z
zm546FqZKf^WEg#`m at c_)qXkT^n<`*(-7XX`#1Lc`mC;~<7qo!gYyrF90 at f~ILfhMN
zPzLR#qH6^G<IT!$Ntv0Ifm<qnmj!+rgn}+B{9N%4aVgnFd5pGzsTQycEnp26u%HF(
zW(yb{=A}!frQHJdq6Mte0``psEL(I8xeSK|tjGf9wSdhQFj=Pj7O>?4rpv9~_w1LI
zds)xye+yOpD7}A<#)E?(xNgH=8r at 9D%Dyhela+H#YH3z(OIm4GK}yYltlW~UoRX~U
z30WB>16iNGkZ^IGi$9hwtDq(An$+uv9n`)<7|>?ZX(3pifXVeZ-2zr_k#?>H-VzJg
zbpl2*OjiN^GK9R&$31&Jnd*odU6Wcubxb*DEo!#`)q9r7IPv90kq;Y;7*7oRO9tr7
zPzOf&f;3deOj44#^zsRoYXKu?8C^Qw65Oi-_8>74Wv)o^X60O;Iw>nRoHijV at 49p}
z#x?y)vWi;zmuAgQd1ydZQAt)oNmky3tlSA%IY@!_nLM!467C+D@{#3>(t%Xpb)xJl
z+;bT)>YFm%y27)8I#<a51Gr}_V|0U>>r+9Mpc_<P)3221F3BoRSr#S3Ez#`;D=n%+
zWo!~<eA8<gf;Yt}Tl!kYI@;cVi$0ghd2gx%<2|cGX;yJ<G<%u#o`EU1TfR^S+RBk_
zo9LfcA?RJtykhm3oYj_=`t$ylIZmeC4!QVyU*uVXdzL2>we-KH-*xHXwCht>qznOk
zrRaoXac^^zF6VN$O28cgUV`481%V~KLEosMYdZbI(oD|EMW4wAk_yll;{9Uc*Cdiv
z6TeuSM`d*#Y5 at +G#>(oHfwn7<yqE?ST=YG9p4X&U`H^{Fo^odbj->3vi%Aw8BISI%
zm>l<F67g^*{@O+PW2k({@AXuda4Mwpx-?H#-Zj+kS|Gp0DSsTm>Hw_)4Bp>71LwyB
zCk>>2pCcv<zYzL|_;#{@Ef!_1NGXlh)lGdIbY9cX!~1w~%724$cO2zteWH82=(G3X
zHz|2qmFvygbz<uADaaLdGHDJ9xyWRyNc4p~Jad`ab)qa&B+C~HoE*rXQMS=;tS+()
zwAoX?v|E<z(aU{E<at`O+%~&hZVlis3Y?uNl$G1F>`lqqWlw#V>dQ4{tj1vy!(Yh#
z7(*Q6L$Q$Y;wU}4;^>(xaL&@(;6Ug}olYFGBq$d&Y!PLh*8 at FzzbyP-=sBxLdS;7$
zQ``eRL4k9d-d=2cFyw at dYlfUm&T6)&o at 3o!P_MHr*+U&U7c}e=Wfeu~X^v~JA)^14
zC(EDal+ at ExqjDQ7KdH7J`O_ at QnqttCVwUH-1kNA77kXy&NKdwyc=bfjXn}J}AKI(d
zy1g*tSkhyAtrTTVHuw|QURY;j*X4cS&*2H%tGq}46p$jq)f0ba3Y?#QFZ5*hNKbnb
z^t>-{Mqm=h^kHxP>mhq;kx{BF&yxnGZW@%R!E(Wua$&%d|Cg1O^-x at U`2|h^^fbfi
zO&_jIN!>#26+b?^2c}jSl$sPY(X(BYRUD;fWnBMC69)E!-wQqe=#icVQC3g%+$eB<
z4qcT5e<o*vKPRMH@<$z*I=e at DY{HRnb`Sh<2%L?5;7 at zP_F^M^!ttw3l$D4-G*|Uv
zZcLX at i~J$Mzcj5%vwdbb_$9p5sJBG|;x?68X|XUWH$}qN%XSGk&E at FQ{WoO$5`HcL
zafv3ik#mmV1q^D_*>C%!fENomR0q4(;$Olq=8sYT)%yZY^DMe_{8Ut!@Xhe!1$;Kc
zHt<Ulz-J41g9(3W0{HC$-YoFNG{iO(b6BFMO~7@&kuQeeD+OGraNEBH{2>#(5pzhw
zZx?W#&u<I(76I4!>_x{R{Otm+`^#vjHNkfYxb8E%77QeKHtIo_j!*Mug6Epxn+3eU
z1dj-Ku?bFjrrHp}+u};K>0UMCWd`~hm0K?I(J@{E+z#nkDNyso?;T*c6 at DFb2*Ddf
zJ|hJFPtgzrUn$_aA8NCJx0~QI&_IO0-2{I}!10n at dOi&pa|l1z1pijRi%swrG$`TE
zHo>#epagF=!EY1rl_vN|G#uf#o8S)#_;wTg421J0eBDv4)4y53b0J at J>G1QiIexJT
z{-%J>Ho-4OlQa5F at UH}XrGV at 5zW}<8 at E<b4-x2V30oVH%(Uxjs`yS{vdYub_p?tOo
zeDdAtSE>!4TQXhwP;e<yKIF5b%Z{ump9VG%8NRwj0^Tg(I{jS&-e!W&Mn|K3R+{p8
zNx&a6;ZFgHgx_w0Kh5AnnNN}E(|uzO+z|ab-8x(o at H#@qHJ|_3UKQ|{#j{)djz&XM
zK4$m|0Y6&Ezn=f*1n_ixp^x&>efT>5PZPi|5pb_5|GN^vUtw^xuiy{!2ciy#<7;75
z?p%>im8e%^0{A}#oc55@^#K2|je~=S at -f5j5b#B!AAKY6Hzt7ZWN`FfA+XGMhBTLA
zg`L_rTMP)~@1pAt0WY7ypJ@(F*9QXLJb^!xEkxI;!+AdCqxdt~v~*o9;Mu40XR^KN
zdR4$}ckpML)6jMDu{@uZH}hwjd(qV@;JbdspJ|Rr*Q)})#mk?`_Mq#ST%J$C8SK$U
zHY8p1aydLVpFP^hH$m6Kxg6deVvjbO6VtUXm*7KfH15$=!++SnsZnht0dboeT}d;;
zQE7`S)s|}krF at Q$gP(XDr?U<6LKpLc at mt_K#GUb at A`5EYEoe8om at f;z!%pDv@?3)2
zY&5>obrypUwY?_ltB-371-|Vk9FKfSblolRQv at H$A4J!?0`3&>Vg|L at 3PB?A^AZ6k
z{|H^z3pmBipsSeuYqNdG;Fz}*aRB)y=*k(v^T`l&i`TYk3?7faRNxm2{3$#e+dl=I
z<{fnD at S{*q;#+~r;bddeH5qUk_jSJLztsZ1grh~@w+MK-34Vuw3vd*_190Nci-MlX
z0%13U$I~<XM55=U==y7pz&~BU_53j`vg-oCDgUGT at n^lhcL{j43BHrT!B5dpWV_Ne
z92K|QPO;SseI<Tul>$yj@#)gxcL{i%3I3sg>+>QV|77$}%3t@#>hPrkzQB~vKLq?@
z6MXnco=>d_ehJ{j2i=ePEhpFZX9kb2?>3RoC8m4^pTzTdpg+%`Smfgq at SP_3Dgi$w
zgCm|T at Q0nu^SMgE^?d3We0bE3I7HynPb%8od|eHE;+uX!?MJUv39bY0VE89REiGMs
zIz&FX0#T?B+dBdu&BiVrzgyrJ3%F2EwqrmF$)^t2 at qfzTr`Tqj at P8)Y%_jI_kxzqw
z>-kK?xI*<^Dd5kDU;0UnT6YFeVG2r5ZNP^xc%cChcSi_(6d!X97w|DLP at C-p0WUSd
z^91}H6Z{kbuQkC(3HTBd+$G>)6Z|Xzzs&@93;4q(_*4P!Fu~6j at aIkN^91}j6Z}E}
zNAt&Al>(0GQOq?@z~6|0Vy}pRzh#0q3iwAR_!0&m6_qRf^;Hb6OP>z4*@6O|Yk=6@
zwIUxA*w!ZCy57{^|3<)bb%6N2Rlo~O at INwmiV2E!EWnSC_Bz9d at -E=!GAZ##41aJm
zAKebkK!L~E#N-NZ^?rE*;8yvJ1N?Z&{?+q2hr#tHu{Q+yH6_Sr1>nb}h`|7OLT%aZ
zOMw4y0(gqkn$C+8z<-k<pUV^AUz-4aPXhRZ3E*EOfEPh!952lS$BGuZ5b$hqFaHDp
zKhB21N?f`oYD<8BE6d-|;+PJx>q>OELv6-<a=L)8PLR)w3E+DYz>mT_-irRI3E)i$
z;MW0uye(Hyhxw-%KgU6ItnxoI0lW_I<ME$<vGr#>oCyVNl}}v)_(OmnFU^zn`NdQ;
zoK-#*3E-C}fZvq>-kAV?`Z()yrzU_e2K=~aFNd8e81m}`_)jK)Kbru)I|1BQUccZ{
zeq5z#;e at hNs~Q??zVoL|wb*6LchQcn#%UAxqC`lvm9{q&?56Dv1siH5l!U~T7II1w
zBRCTx5T!k&XRmumjY{;CnqK#i8ujZbHNCb>?OM2?wz0{7>4NIQg3`dkg_lN8H_haG
zdcCy;Zugin?1x_9nO0HY8^^XjPj7I$U2_@!!iELza_kZ=WUs2K8~n6~xWMO{j!mkS
z{@VIFH??gnM~z~gE;riWRH|ipMI<O5y*TIo6_>D<&L6av35zZKL5uB;xnm%*)Rf-~
zYkMsWB7E=)gT(i_u>Xji_M>J5>fG3LAK&TN(FU$`OAC5dV?DekMbyJ<(lp}re*`;)
zR-Jk7wEu|eFkSo~Q4 at VU`_HHh?=n3MlZDYCvaGVf>E!2|jbS<A0F!9+#wndeG)#}B
zqspFAw|m+-3(6O{eWQJo&Y9+}aFPDle{y;o3yfJrFLV?g7##`Ol4!W^g`5LqOG0uI
zO#^-;a$<!>pC$aT#PlXINm6le1SUyh4vx6|$i$e0Ma=SkWMN5;ii0F9$q{pqgyqL2
z#w09ami{9POL9~kBw<O8n1duNeIO>Gg`ec0H%658{kRnp78*P7AEZL9rM_=9HRici
z=e)m<^WS5BnDgJG*!k~@iN1=dzKSy6skKdwm8TYvdHNq#rBkcw7tD<}yA5AgLZLLt
zhw#euO+FGi*b)|M>Iny@(AbHtK6CkjYieSz7y*CaLQU*FIE9+nyI+M?_{Z{qS{_7x
z5Mez$Q%vgJSuk%wW!-${ITq0{$OX&-U$7e#?PfPn>loe<7@}ev^o#DK{$UFduI{M_
zP%(OL^}Nc!0>2Lq>}r3t$5aoab2>*w9oEw-7goF7Rq$)0N|L^kiFOtQ>S`|uRQnqI
zjpj_H7$O!FR6rpzeo(v(D}H=mSqm;0RKrbg(h>_6ELzCgkVibBRzkQA3#yV&+Iy)o
zdy+5EDpg!rrur389G8lQY8IHJ!f9Ev-jj$@OstD8oH%1#Gh?}D2C{GXR?6AxmeCFn
ziXNoLWoi`aMNTKxq?CzpBbOc;t@|oHeaSkGx4lqp at Wa%RzV9xOxXbohQZFqzhM3%>
zGc{3r3#^02A7^1T7QGN}&^M>D>KC3VJWdaV>!BDsvVMxC*jdzQ4hPhf(ChDXPAK!0
z);2X%A{e53hBP(P0|!<3qQQbJ<~UKAJ;03Qaiy?8qA41fvG2si<T*;tQ;O}__iPP0
zER>mN#D_efEXT=oMt#3L#^eEITqtL3#Hs9io=hRL=B8X`RwE$Rfy&MPXC$}rfzo7X
zGHTZYpvkfWMy-Sjf01v-9K_D5#;jyNf^1dzM>kZ~HhQL3jPXhR6|QxJfU2fZ0>g~2
z0%Jy%-`V8%RFwDt8ckt6JxIc)AON`w3lTR}S1~oUh=IyyHl8UnFo7y`Hq=&ERWGh>
zs`eq?6he;%s{B5Gg at 24c(6FG|Gi5sE<*xAhJX0{wW2KJM>*YhVD(nHMZxn?Wj*7lv
zdBwgrt1}cn8l)iB=t9JE#S9Ly%^GXx1ZYoz=VHvyFhMOGwXnLesk*MN+UEz2D9%@1
zH@~*7+OyERa8#k&yKrpbX#6|MHIDvu;-A7XW5<my8a38A1`kexj4pJIc8wiZ=pqQ=
z6^<P>)>T+Ec60%u5Oj1wVd1z at 1>?q0md+yfkF#*}s8NMuMp3OVo-xx$vC;~B&Vq)@
z#>$00KRSh5nmooTXV=2YU$B`;6J`oMYF2B+s1(I!8`}-45DnK~%?7nzN=YtVQib-R
z%OsIs;r{CDWb)px at g+gV#?*?>4<;7&!t!1cBwLI#>0<h%7JDtePvd-o+}H?`h+SB5
zkCknP%?wP;KN7qpV>9tvvPl!Z)nhuw?Nv%lWfIkjYo3{w#^NZQaLczM9Hlj7-$%0=
zLwT}Ozywt{=0u5_HSwCVScx8mVAO1<neH5N!*E;V9#?^3q;h^W+OH2;2%qwSWFdSg
z2atud*uDQ%agL7Np66j3^Ju)?Z|*op#caJhu)N~Qg9GgQ&Jyk|i!4ogq8AxVR&wKd
zZgOI`D85A!()WFIU8A;z`#H1kl_7-(VvF>i`~DeEB40gnZ&P57&*NKIi3tA~94bsK
zXZkIwMXgn^q5rLuOYbd}baZ60EIj(wI;}o3S*Pv!tub^M>nZ=MBL%Yt{12(isosfB
z8~zzX|BR)7#?e1T^pA`FaTc(D8IrS*-H&4bj%NR|bWWC#ff<yev5cH7Cnw8l6w9iR
zWmU*<3OPE<q>yD&I1c>-)}~d^?$R;bJw$GEi<sV{7uQt!8OB`f6kFIsK714X%yX^t
z;R#*UOK7h+OgY`(W{s_H^GonHZmX#gyPD-&dfusx)$>mE`Q|TKLQ#{O>JdJ>)_<vQ
z5v at ShEoRj)WX(v8`TPFGzNYFK8Adx|;h6Z~+#;GcGt}kPgqR52sJM9z0}f#X)b`;!
zAaDr!s%n1Wn^#%8z~(!rZZSU3;hRz26j(?TC78zrKA*p)v3{{{0nB25jjy_~vA(f<
zY8Afg(FhQ4i at wJ9cEMr5zdeGT|5ZW~`kD!R6J=!5H`F&(GpPc#V|8ldBgzxa6o$Og
z$3E}^yVe(#Ak<<ed;wNME7C9?aE|m)#vGd-34Z#dNfqvyzL_Nxyl%FW+GtVd*m8V*
z#b3&omDK754ZPP#7zLiXT7NC%?6PWid2M-l6=JY2BFjS(j6wu!Z>VqdpHtU}INtN?
zfIGLOaXuQZ&fnywL?-+~?CYkbjM{m%)pMf(+J#5gD7>hmCg7i2zqpQ5^*_eRG#agq
znZ5Whk8m;h(D?2dSQxY|tX^2PkWLCwGe(_6bF1OPAdZyBfa~C<hcmp1WE{FIivQ!f
z(WqBQHIzJQteWJjidM|R`^DH`s()==uk}Z^u4uM=?a7Ca9^pesb1JbyTU9+L0q@|d
zno+ at In<)FA;6-yf83*fpji>;`7c#N1ei3VAL%#WPgmWxDXVB=MT3y|MZc&G?A(=a&
zz#BKIwyw6RCJwRh{#I&U?oe~jSZEqHcwt2q)qZc~oazPpJ#zTw@{dIMs^}|GG5R7p
zkT}N~+NA={<I06x2h6NUqyd?;1OoxS;ZQlJc9D|?g{E3x6 at 37Uxhc^p=hc&bA}wkR
z%mjcFMoQ@<C2y5XQf$T$>ZT)y=ZSNibh7yt{M}DLT>AM=GrUFMQy7ia_`{bv+4Y5p
zBSP?Y39iQzA$W%bKZF3d%=tS6oPO5ePtX5s3BFc>pD5y7(Cc;y{)hx$CBY|(I1W_q
ztrA=naLQ+c1fL}iL=#-j=Z_M+UBXWhfgQ~G_ZM(;{^KNkI`gmB_h%CPb_u>%g8xB+
z-z33TO7Oo*@H-^<3ljW~68uvMey0Q<Gyo5{s9tyBPp9)F34XT(_ek(RN$~j+{Ld1+
zRf69m!TS%y11>7}FZk2T&5_{uO7LSP_<a(5mVgugH%jmt3BE~!zb55FeL^qy>jd~S
zGl7K5od2~FT+aWbK?c4oSDpm$`3d0R1n_qS+|0MV5?tn6w*<crr0MlNBg>#u=G$}$
zF4t>A0{C#nI-jW$T+Zi32`=+zcLI2}IP^{Ym+{9YfKNP((?k4u0DpRYe<$FSk4#U$
zAqKuI4<iKJjNdH5WxhQo!R7qV8_M%H(;r9xzaatqZwcUk9cIuk*Y{fiH`DJw+ at MFM
zbE5>8>$O{g%lP;<7`x2%`dtF};|btzCV)RI0+UcX{uloAc6?I6sa#o~znK94!vy$t
z5rV{=e?I{?=bxJZe?$WOkrG at U*Y1<x?NYrC6(J<3+*c*|nG*bU3En8dS4r at t3E;y-
zfFR2M6$!skgs33+8xs6B#BHO?3_mWHpz&~5E(6Em-y*@=fugr#*9ivxn-V<RVZh~j
zl}qq;3BOH(%lSMi!R37RN^m)!sUwVX<$S6nxSY>M2`;zq4gn{*x>cgHOTw4s_Tdwa
za^?I#NdT|OGw|D`{I^SRnVzo%+)U3m6244NL%xy!TT=c at B>3ABJawdjzg>c73pkbg
zpaj25!k6W+|4Bf?m4-hVez63X`SY{{e+OxFxq4TE%lN*NDR-W~T(8FjoamJGr|T4k
z&gLig;a1Q8JP9t(TRsqQqF?6!>{EF at 1eeRLk>D~vKbPR!kw!1qb{fye%+DJI+|0MH
z62Q+d;Q0`~%%2A(xXjP35?scgj(9tCnd|kOfSdVw72?>?MR1v)6hDV9g3J6IiMTX$
zQT{SNS4wc1pZ7>`nV+LZvus#C+i|P&vsl2*{CrWum*sHW7$YAU{(A{7^XF3uF7xwH
z#F?SX%>NY<T&`EYaU9>w&;OF(GCwJ93|(e^o?pb_W`2Gr!P|kN^QX>b;LGsg;|;i6
z-(f#B;4=Q$1n_GlxU6sQmf&*!of2Hm|E$xk%Y9XX%kr~Jz==Pye*RLzm-S)h89aY8
z{$K$oe#-dG5?pS_<q}+$&x|t-`nTg&=l at Uvr*dQTr-U!dVcJ<nJ~Dj11ef{wlmwUM
z^KA((<A0L?KD^i{SH_=`0RF55m-&-l!t<f}%6j;I2`<a|W(h9qjad_TK4v-JBEjWy
zw at L7~kyPjZtcgZG+a-9lfD at f^yL=(x%lw~NYUCrsAD7 at V-!k0>zT7USNpKn8n*fgJ
zKkOnt$oRic06%(?fiLrCrGQg?<#w4ind1{&ZkGiTTyB?r0&Z at X+f}37cHHXxzhA&9
z|6A}U)Us`;2M at R?pLYD|_$LaujvvH3y0%LAG9NZf;qT4)yeQy$J{NK{+nxmYX;V3Z
zjxXE-wiyCW`M-%joz7YbF4OY|3EnQ at f0_V(r58xJs9af(T`k~LuB?}SDZyoZczc3;
z?v(K5d~(aE)cA2fPlC(+=pG5a9qDvFJSyNszub>XrvZSA=$HG;pA*0bOlRnE<Ec-A
z%l+tT2_D1$1n|k_M*ecYxKO}}{uTI}$<b_8Cb(YT-%0tr3tSz(MZ$kTf-gRsXGr<q
zC&6!$;Bx;uVFt%1zRB&oQi99$-y^~0_R6a;^4X4Coz5`=Zf>u2629DC4#5y}JN{CF
z%lv;sg3ImIEx~2{qt7wul;ImCxLn^O&gJ+-zs%>yCAiGzm;PUKXCGfhb>{J_h=eX`
z7KNsQ?G?lZ7cLPMamDQ|Ej7BR*>+KIwd93B&_L1<6e&WgxS-+^Sy8mKq%A5`_z>3u
zzE$sjU at fTC*rG-&Z7QPT`a<i=Qn%WDelx!(_qk8ztfim+;rTfC%=ymm{GKys&dfbC
z!MTRpey+JFAJ_KtS0?BEZ<bYkZ{daH=!cvv+Mh$GNI??X1HHcgxW;jPU-FL}*Y_)*
zb1__c&L`hCJSW>V?veijbw2KlL*jDUac$3Na^L=IoxYAfO9T4n1N_Upz-m8Cr_XN3
zYsp_G_wBjm(s)0>?RZ!p;9COxF~f7>rTz9ha&4y`mtNn@$F=%d<f_+x9xyf5E7yKI
zmfY{x<xa2t(-_b{8sNh#3*%~kj;V^dk9#4xwo}_*=eUmZ`2nAu0e(t#VSBV6ULyDH
z`C3h(Ui;xK$92DcPwsv0nwGr3kCFTR?Q~qvyEg(pXVw<BQ}-)Newb{|$)e-xW~bNv
zx;3DG&FOW2-wf!Vn;y5v#~nB$nU6Dkw`u1$47cakq?vgi%fE10GJhw)AH6(Tzq~$~
zPo0&_hs{pr?*#bfhGhMs#$-O>TgiN2Q!;-oz#p5FtiP@~nO`tBnQt>ZClVc3yUG1{
zo_<BL&y$8*pI6D%N5}IOS0?+sWVrSDfLwiaoX?+^?DH$bt<U at 9-shUDl703VZhbx?
zS06o(u9=_gvxZ#tdOdv6aqXW0-;RA$ulrjO;5Rz1?b%1}&)<m)^6j+ywKc$pT%D}H
zF~Hvr at F@$EeYOYqs71;8l>z=ifKO>j_SqibBfgWYUm4&B0z9)M_Q7#nEsLICr;y{g
z*!!dN1Nv_S^m_yPHv;<JOOxC48FJsAVFCR~0sVx4{@j3mNkG3Wpno}_e=VRt^!nue
z?L+SOcSu10#ejZ%K!0{XUmeiT2<R6E^w$RTcLeln0{Sfh{X+r$F9Q1K1NyfE`ga5R
z1BToCqop?_AIF=>{c&6u&~FUrcLel559nVH=-&$Hi*8JA{}JTA{iOl@$bi0hS?mv=
zU(2G`nG(Z)WBBcccNu;cIj&cm3?Fxs6ePj_d0EtdO at JTzZ&3HVue`|c-^zCNnQyqA
z2i_Loj|KRi06z~8StOzT*1tNy8v=a4;kKVYB-iij?%zjhjl%Z0Pp>!JK2I2mn|Vp_
zxknc5pD!D}-tZmd*e`p&WLF4~<i|s~;dVScVR)C+)3}}FemvCwJKTGYho=L4)Gc|v
z?f=Dw+wpL>;a0yrz&{A^qgN)!y*j{G1o)Z&Pv4sNx8tFV+>eLT9oPH8e{fvyizhg)
z&kZIzuFqS3Z at 3*-Puv!_(~qlthTCy<<*NLC*>TnP_Ph^<p3YZG9oO;y0=XZD={xfN
zb{t-Bc$Y|Y9NtRq$Kk2p&HLEv()s`|!z4_SzYZ)g+>XOL47cNOLxArL at Q(w0(D#zt
zb9I2P2=FxlzU2GK{@*j)j at yq7&q-D7|3zzJAN0Q+SKAD?*Q@?*dA%K1Tgm<P>KUU)
zS83emjNZ<ZC;dP~lKi-;Hr$S at J%)ElJ at wyD?#I=VAHu!o^=)5(kN;6#Z^y}U!+$Fh
zjl0ostA9MeKMwFgYm?(%9pEbhd`*CV at y@)z9VZ!b^qaj7T<Ex72PWMW`#^8U$@_-e
zadpn!dA%J!Yse3i&D&(r{yg at OSPyRd^P~X(`v5;Tz^5Aih>3f%;WqB30Dn5b-wE)e
z&|#ANevJz73j(|$z?TR3rT~9Bz~2e*qk09}AK(`Rcte0M5AaLTVUp0S(`3<cGSl&)
z5J?&{D9%-X4SmNuKAZe}#~&xZ*ztMf(;Z(%j^7JL(zrSDg^sKK2FJHh|3AYDeV!vP
z8eYhYxc|pE{xS8XBVxTDZ@(K^=rfW&A31(HdEZQ-{u1(%lau{Nj4ssQN&T2p3i&MZ
zFFD>uj^8gs(*9Ka<S{Xa%$}#y$HrXs+v(Hf_*3Ky9e<a+=*(pQ<IXDdKeBgR9`5*I
z<SVnuKGVh*`i!H#(eba5FK~P=`Q8c1{)d+r`u{8S{T**5|GeXml0STIvj3)uh5q}f
zf5`FQkpIl_4)S9Dz1tthQC~0g|Loy$`Ao-;CqLWq3i8%T$?b2rsL;QP`fodaIr$RD
z?;!v0$;tj_ at V;Kh;Rfm_IR3xn|Kxa|KC$nmj&GrUrsFyCxsD%ApYJ&S1 at fC5&ye5l
z_*vw4I({?xy^h~N{(!l^zF&4puiLwLpR4_|p877w?<0TH at lNu6f%~{?R}~)Lebg^^
z{9W?zI$lx~*WVYIhrirb=s%qLw;dl%{-NWSssGy8$B+Me?k at D7PyJTM*OPB^d@*^S
z*e1GuJ}B$`SU!q5;yxsc9+!~*=z#us!|m}MYWRN{|1!g^zT9xDKhN-O#)qeSG>@|U
z$3}1c9}VzZ0`s)C06z``R+2wnqXYa)0lqT8HwSn}fDhvLyl+ogfS(oMI<JAxPFZw3
z=)B2uoxgZ~tMRu!_Zn`Gug-Viv(3cSd6W0od70<CjK7Wh2g7Y#ogewQr2vwUS-sAW
zyk6%=;5M$#kG#)x07+i2^BQp54_5~Cs|~m9{HfvAN9RG<{FE$ue03fKZriW(AaLvd
zk at 2^Bo$p|?jeB};0g}9r&Ud_C=R4rmU*|jCXOZ!@dY$ihf1U4mf1U4m|D6GUoxgbh
z{`?;HK01H#dY!+3+xF}H#rs at r{H<Q+FWz70FWz70FW!G`!2ce@?eTrqaC^OdKfp)u
z3kGqm{;~kqd4zAL&KJOKdvv}4Zu>{)3*P5t6W8i>zTo|JzTo|JzTo|b at O#+nb-v*J
zb-v*B6O2zmzZq`N(>aFQ{nB}akE`<qA6MrW;MV`Xfd7Mr+v74*>LbC&w!b5yJ$e7Y
z_wT3xKRdwfa~>P_k$}E7 at I71ID{iQ7|B<HsPsqAnR|k;8?qS0R8~&u>CmL?&X`{&z
z_vc2h^Eddn8-9$eBSHVTEZQDEW{Bp2_Zps-btJD>|C40fGqR}9aS%&_{ui<+9}Xx9
z{FkyQKLbz_+KHuKUzFr`z~d~^?~--Zf5q@;4d-oKq~BwBv(Z0qIG*Vtp*@zLXpVcQ
zY}2?GLoCVbm&LdT|Il#jlQ#Y~?)L-y4Z~j)Pi;>zI!lso&p#UeoNQM;PrIm(|HJTs
zFp-36_sOFA&jU&V|A{Qh?Ks?QxU5DA&8?D!x9u^MPw>666q9Isz+WLlrrW_^HC$K0
zUz0_3)`z!%kyN+)xFs|Khd#}+=HR>~jkc6>yZ0$G96ni=#~N;Zbi4N{H+uL~vRq-f
z^_gtA?N6--fB3Y>f>al0QU6<?M#HVoJj3DB#&QdD_`l9|WJO#D$Ms5+?SEX~G}-?D
zsY1!qT!+tAt|PPlXutYu4n4+bRu&}d4_*v`q;&Kdk3(=xWn6&_{-rFBH5~d1ma~qh
z>0j=+wr{fG at XxYb$sE<;ujM+&%jn<ec$(!F!{M*-mKqL!t>5Z+mj0_8FJpO~;qX_V
zcEh9oq0jw}H<ITZ-_NpUkZsq3<Y}(MyBF7yoyv7^ESj|cl^1ivCCrtlS=RkfUPivy
z>9Z_r|ERu#e1p?hvYc~V<KepuNqt(PQvRG$-b(&Q=E~bx)^V-8o%{s$xAGkMSjRia
zCpz9mUg`LL@@B`i9ZMb8^J2B*I-c7d*KxSraGeVwbf at 7u#{hrNaO`sh%S9+i(tc<p
zKf&=f^0AKR$R|49MPBK+4#sB3(=0D_Jj?QG$JMvp at fMc1JKn}}r{g)6-*mi-Wj(1-
zj1W(<W0)&Xvs~(UmgRAdSF&8;cnizZ9B*S;pD$_Lc5;1=q&!D{kMYrGcR1d<UG*K*
z?KJw+A!IsW_-P6yKjg5u03Yc4$Hi2M;n>#5@(9OUSk5}$%JM%u-o|pB<LxXja6HGd
z`k^go|AlPlTB8S_O}^1^?ANj6orXh?xg%0>?>JZg!FnD!eyW~Fj_dVhqT%rBV7wiM
zBknZ%r1*S5<L)5uYdG4k^VDgE!{-WAlr+n5=!Zm9-sxmGq%FM9*XIvlSc-W+avHaT
z!RJI-khC5+;x=(SUGMZigjmvA!>7h5`h3{%O2hTJ1pKQEKVbCLhJUpvE<j&n_;$mw
zt(7-?gSmfTwMJiNIJR~0qPxKHigaA*I>XUF`kZ~2;pm?i*+07thaUGBNCyl at T<z#X
zK7&GhOrX~}<wV2bukRV0WH|IXH*GW={^{ZJA?Yf^q1W%}mkfvh$sD(P4Tt_cS)%ke
zaRzTJ#r(T?U&Eo- at AZ1a;r}iA&ovx+J?~l#hkphC{(ZaQ(3kRj`J>_R-$DQ0{iGlX
z9?+LlpEexZTF1(Vq~V4`uivxF42ORa&*znfL$A+S+6{+)*;(=-=>fx`*Z*H;@Db7G
zsGac7(tnuY&@W;8vxdXJWqe#;-=_x#{c`Fz7(M)Np#NsWq2EM(hv8BCIq`hKaOk&E
zKaLN8poRY~`cE(%`d?FDX*lY1Oq35vGYyCSRqCHK9R7oNU3=DW=nsdPr2U2iReU|d
zsXrJF{gKpPa#Xw>Mflg!zt(W*Gt{>j4%B*)d`P<9aOlTS|EA&aZ>RtJhC{!Y*A0EY
zAF5-?-6$WDK35#)V9?)0{Q|?`zmeC?>kNl}BlT^D!)rfof+ejt9Qw`F_xsyubNBds
zi~a))hyGdW%M6Eq8*ePmFdX{b)UP%i?H|eO_??DB|0n8mhQmMg1ANG{Zo{GP!|T8Z
zPHdos|3dnoW;pcvcdrV=tAtm`5~a+Xt7bJ<Ri`rY#_~9?)3v7B`l?KG?Y!nxW?EHq
zRVq_GXHF^t8F_c^C%nd9-V4v#5GTJoH+qHqpC!b5=#6mh?E0CP*VbQ^%FL*#;fu<r
zO6%)uMb&`DVs}o?$h-RU&Cp8Ho=<)ky4rk_wmJ?ZKNIj51d?9Q*OIr*H_30lS at dao
z{q`rkVBGA;r>WI{jhBY|UHf#t%{y+Typ6kgYE at HHm7E$p5%6;#$)_KOT6DU|IFt%<
zY6Rc(9|tgEjgVkd-%wLk53|s3RP->*L{-!>Q!}R-r&N3 at O94O85uGaC@#7Hx-|tVz
zPuR at D%k5K{*$vILnX}KIG&1@{2bO2do||cGYLFkTXhvt at YE@e|b-Mhvpj<>|G&RVn
z_*X~+W!}I`c!67%C0 at 2u_-Bb*W#Q$$I}g?8^d)r+eNcbPLDav5^*DWt;y->6_3IMq
zKXnlGn-l8e-u2Jj|CWUMFC0YuWeN3PI*9uET+trCR}P|nTSELN52F5tg!&I2ME&~{
z>f?Eg at Bg$gOj$X-leIW?F#p-zO5&W;t!{|hRd{B*Nxaf>d^{08fJurZj9-jJ?avZG
zNhitzC8tS1QMzrNt`+97Yo3jeRe1iT^-q?%(f&u1vb=8_<MXz+dxPKqZwBhOv%dcO
zJ2mk2r^tq=|6KfeQ{p`>V at 32It~1zIB<;T?vYyob4#poAsq-H`{xz~GDgHXfFK1Q6
z$G-UZ?ZTq?)M at qs<3FMmxWVma^#7nFji3FD|2pd<{s39jPWK;U8u7jFPwo{csSM^O
z#l4yb&&Vp+=sb$nUfCRjKRK at THQy`Sv99-VD&K>PwWKj|*8QpV6m-c-QvY{W$I5vW
zV*fuUi{JkekwNL(pT?Jsr15dq{i*e}9p|&YZ+|uGpU_=1UeS7r&k>N+{)(DdSxF(<
zKUfxxug7n(#-~oRR>sHqVUr)fi!{C!$$C5EuOml%Jd^bCZ`1g00PSad{hbZkbpM at G
z%PTa#t3R0!Ov@=m{Io1S{&`YQEP9Ne#s>sSn&Eu?{+G-4r2cPX{9NP`Uw?<lx{r^)
zA0)-^dMK`_|Nkp(dhGvDsh<?Tk}p1~WJT;h#*&Z!l+?!~4uAcw;2)t?Pn+)g%JKJu
zD834q=NMnd8RFx+M(ZiZb5HF5p{}1R8UM5N)6Dljo@=6hFIRsa>uVgXukp3~k+$E}
z?_~SSDMb76NL1^q?<kG0hRj<Tf2reIU-3y&KdJxHe9_G+?3^UT|2tW<zQ!NN_^$b>
z^dqPx&)r!+E~QdwU15HXw%-}7!i8N at X`FR`YJ3G>)%Lsk_wzwzC532zMi#BF?Z at A5
zqT@%MW;w>+p at 6y8SB!t>EB~dk3YeGF#XH``{YU&VS+u^!U(Wb^eADf+G#9U`UN>l2
zbNqW^gz)uSS-(OnGS~5|`6kx)<F||THICZ&@{gsy{FlnQ{y)I~5nlHb`+uq|T3`9E
z7$1FO)9bmogkxqCyEEEn at K;#hYOp@=KRt=dT3@%mC-w1Y&^13*!un|yGS~Ji?kD$u
z at bvY^vVNsIFur~tsUP*98Zs~D3kKTx{2KjthAdiN`!6XrELQyzpYr#4OqwK(lLcRC
pzCPx+{@N=j)wmCzsnii;<6J)x&nC=Clj`UA#d)0UpH060{{h>>OV0oR
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/build.make b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/build.make
new file mode 100644
index 00000000000000..70c22de8ec374b
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/build.make
@@ -0,0 +1,111 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Delete rule output on recipe failure.
+.DELETE_ON_ERROR:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# Include any dependencies generated for this target.
+include CMakeFiles/PolymorphismBM.dir/depend.make
+# Include any dependencies generated by the compiler for this target.
+include CMakeFiles/PolymorphismBM.dir/compiler_depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/PolymorphismBM.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/PolymorphismBM.dir/flags.make
+
+CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o: CMakeFiles/PolymorphismBM.dir/flags.make
+CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o: PolymorphismBM.cpp
+CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o: CMakeFiles/PolymorphismBM.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o"
+ ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o -MF CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o.d -o CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o -c /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/PolymorphismBM.cpp
+
+CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.i"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/PolymorphismBM.cpp > CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.i
+
+CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.s"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/PolymorphismBM.cpp -o CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.s
+
+# Object files for target PolymorphismBM
+PolymorphismBM_OBJECTS = \
+"CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o"
+
+# External object files for target PolymorphismBM
+PolymorphismBM_EXTERNAL_OBJECTS =
+
+PolymorphismBM: CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o
+PolymorphismBM: CMakeFiles/PolymorphismBM.dir/build.make
+PolymorphismBM: third-party/benchmark/src/libbenchmark.a
+PolymorphismBM: CMakeFiles/PolymorphismBM.dir/link.txt
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable PolymorphismBM"
+ $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/PolymorphismBM.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/PolymorphismBM.dir/build: PolymorphismBM
+.PHONY : CMakeFiles/PolymorphismBM.dir/build
+
+CMakeFiles/PolymorphismBM.dir/clean:
+ $(CMAKE_COMMAND) -P CMakeFiles/PolymorphismBM.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/PolymorphismBM.dir/clean
+
+CMakeFiles/PolymorphismBM.dir/depend:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/DependInfo.cmake "--color=$(COLOR)"
+.PHONY : CMakeFiles/PolymorphismBM.dir/depend
+
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/cmake_clean.cmake b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/cmake_clean.cmake
new file mode 100644
index 00000000000000..272fcdc31d0acc
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/cmake_clean.cmake
@@ -0,0 +1,11 @@
+file(REMOVE_RECURSE
+ "CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o"
+ "CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o.d"
+ "PolymorphismBM"
+ "PolymorphismBM.pdb"
+)
+
+# Per-language clean rules from dependency scanning.
+foreach(lang CXX)
+ include(CMakeFiles/PolymorphismBM.dir/cmake_clean_${lang}.cmake OPTIONAL)
+endforeach()
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.make b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.make
new file mode 100644
index 00000000000000..26a652cc20f350
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.make
@@ -0,0 +1,2 @@
+# Empty compiler generated dependencies file for PolymorphismBM.
+# This may be replaced when dependencies are built.
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.ts b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.ts
new file mode 100644
index 00000000000000..a31dff6c4e0647
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/compiler_depend.ts
@@ -0,0 +1,2 @@
+# CMAKE generated file: DO NOT EDIT!
+# Timestamp file for compiler generated dependencies management for PolymorphismBM.
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/depend.make b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/depend.make
new file mode 100644
index 00000000000000..829b84381c55dc
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/depend.make
@@ -0,0 +1,2 @@
+# Empty dependencies file for PolymorphismBM.
+# This may be replaced when dependencies are built.
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/flags.make b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/flags.make
new file mode 100644
index 00000000000000..44ee0f43dda614
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/flags.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# compile CXX with /usr/bin/c++
+CXX_DEFINES = -DBENCHMARK_STATIC_DEFINE
+
+CXX_INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+
+CXX_FLAGS = -O3 -DNDEBUG -std=c++17
+
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/link.txt b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/link.txt
new file mode 100644
index 00000000000000..38997dac7a37f8
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/link.txt
@@ -0,0 +1 @@
+/usr/bin/c++ -O3 -DNDEBUG CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o -o PolymorphismBM third-party/benchmark/src/libbenchmark.a -lrt
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/main.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/main.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..c3250beb25bc9c26602b112cc482beda9bd888e0
GIT binary patch
literal 22376
zcmds8eRx#WnZJ_{h={pEr5Zmf1HCAz8Z!YTgVttX2JYx2q)AX#Z6`xAA+sct?BouD
zrIs=i%iU`#ZRxJhQ`==N&r`eWQ)x>PyH>+TL1?YiYQ<+)MYmR_R0OS<RZ8~vo_o&B
z$z`T3=pV)N<lcMk at 4R2<J)ieIlP?9s3rburMI at JUgOYy}sG>Z0V?N)&vJJ{irH;{7
z;+=R at Ty9*GaD5CHVdvwT%<~_|^8%i)!t)}Y|0I8Ecuwc}%kjK|=d1Dj6fR2sTe{RY
zhy6GE7yH{5x9VU1qh6vYow`*veFjQ(Go#f5 at DA%k8SNk;dotQlJSpks9wHcK*_~>&
zO>xLBdil(rRz at R6GD^4ZRCACmfwqyR}b%QSsYKwCmDq at 5h3`wpm?pAax*4dG#{
zM_UrMwlJ>7>UToh|2)2N at D25=3*p_c)lm`J{@VDPhOVj!o3AsAL#Wi?aH>B0;CPs^
zzVW)dW~iCt=O{|Zx>*nTo>w!z3ii^?Ucyw8KC&k4dq>T5;sp#9sl6fVhOqfw*!(?{
z33-p`7Ay_<cB`3b;O|nWWXL>4Pw({TzDqTAuw`^~RJY0rWVJ_48+fg$a<x=Bc-uqI
zAx6epXY8xaUh~wONd=m&nQ;fSc6wnVAnHk8cohnvZ3Z4_Ys!*h{4s^w=!s?_Q30z~
zw;C#RGoV!v#w0+}gPg{G8rl*|0ZBmj*?w0utH;@PTn4FO>oIL3F at U6-?3n_PUUYSe
zqCR4K078kDyw<IoXlRQr-XW}qSSL}pD(eE;eBJk=nwdxn(yO%!C3R7D^t at dA+x`W?
zHy}4~-OSVxYV<~{uR=6<*mo%PLdg0ITHR1}bBEMuJJhX^KX<-6wJn1Y0I5)7``%iO
z>Z!r)WOwr+Rsg6XWd59L)Xr<<rY0ia+Z1>?0Md}TOHYre>Q|me7emg49!oh0aKj39
z at CbWr!y7o3fPHsaiK1^q2ch&C-Djg}=G}=lTl-Hz1k+}dA-1led$cuV#ZbRnx0=yp
zVXaCx at 6q}Rv?_GpuhfjY0{I-KLmg)_Ys2Q7`kn at qLwSQ6R2#IF;N<n#AsKUJhLz~P
z{p#B5$R5<6l!VPAY=Q`AD{~fYbXepejq8O)$JESjZjp`I7BMEXc8ocBU%;^YNPusL
zni)FRR!`irNBBgwMt07y!;~3h%4W%wEHy$7vrS=44!3LrPsq9j9<B{pbH+M`%9vvw
z;ErJm>}hjd-kL4iL8h3RX^Xa>8(|t+Eo(k%s&lwCcA;$zWBN;uIl$DzF-N&$h`WGe
z*5^&xpwS$_)WWkzg(+=XJ?lke%2hPf;268mHia>v*I>47mK%z?5#)?OPT{UYCCoz?
za}!Cb=sFqgK4DpS=poI+EQ3O;AEWmn%}wu?Tlek53|&S>ZQxily7C5_9)16b22ui`
ziWtla*+AWzk6|IkFpW%fUnbbxjTwT9`fbZC5b+VF4?V^Pa at gF&2lOm0grQmsJs=DC
zk*`OdGup)Z;HWW9x5kg6l`#X7j<D}dV-n4ycFp=-IR at Le0eIcF$0p&;k|)_um4dd~
z90}_WLz0xuoMc9hWS9_{WIZRrBE%JKbdvOQlByiZ8Yf9JCqY~6Q8Vk_qm_)$g0#Nn
z6k?_xyaT0OHM#ZA3TwLVo2VI$db&(=WzR=3)`3v^t{IA&*#Ivgt0P-d%Cg<aDlB_s
zO~`jd&AbWSAi>1{i|oISK(;z1K*%0X*tc3+q7Hul|6oqqUZl#%t_RVnXbz>7O&tvI
zVp`wOwG6D0pkWKA at 2EQHqGGhS0yVkj83rwXu{TJa`jz&MNgXVuk^1Fbw2!*&bN<`?
zpYwm-AK5AD8?x?dzzWkilxScAXu5y+UGf*U2aV<t+93?S4nTDHu=RypXAhgBwpQmt
z@(V0(_ClgjZb)=tbl%3n->HMkXvm^gwEF0l7$sqC2`w-*D%b+!yGL`QmTIPf3GrhP
zxde6C_Xi9z!p(e-HGid>pn_mFveLUfy1C#`ZfIg7K{%z|b{_{fHU~7xRj?kjnh&n*
zJIATjsoku*+HL=|3;$#eo*W$&d#u6xLCKt at S06%^8`Mk_4gK^;yPApHIgdK{BJ~gx
zYyEPp^<8k_n at n2Bw@V#-0OH6inK(qTjoPc2aB|vOfoAUljj+cvW+$f(zWolFv)hxc
zW~PL-3U%wGbsN~CpADi1s#6-^<<+#=+QMA!eJ0mzY@}cT5RC!<w=-858mxTPrW1u|
zDWcE5gZ{wxvrycS-E3RXp8Xy&dV063(LAJ^`_d;X)buuZ+&kKEe0P~K!J6wg>z{yA
z6ug%hl>zmUiF3Px=EQnEy{9Dodu%-ZhlbnM$#ebdCf8 at 5#!J|`9UF!84wr7e+h`t0
zzXzGKN#@?;J4mGJH!B_`k;iv%i7H8~(9_#X(yzJ<IAgL3X_(}iE3!YLo(zdlI7Z?Y
zRO`$n{tLz<Nvw59oO#9)A4QXetu}3jE%8{Rxu4bg$Ec)t)ULHpI5JmjU*3<r);{tf
ztMv=4)@_<+jKqPtXC_U7G{5<4?_PiUl at asl^!AFdRdz$8SvEJ|+nYQ>J<Vh84G)#6
zy6f2CZ~Yb089CDI6l^B_<}=<=fBMxCzd4fLQ_*BibS*L`mIi#!C*RO9H`kh&iOPJs
z>)q^kFed&Qd3~Pz6MqAFRi6C*Ka=!h-e*`XpHJ_gTKXEzz^9dfZ(s5a^O?q>z{eHc
zwJ-Y#kg{o!?+L_&(>OS)4jw=srqNZ8J}b at 2y)?*%K8+@|CvLyGb^JQ9 at JiEV_Brqu
znK?2)05==?o8Bi2mczu at n7JiG%SL!8<vILBcxaRTL5iN$Ps_>@@xejX(P~0-??%wm
zJDU!%*I1H$o$MDAcy9jSJ88ZZ0i(S|88eU2CIVAP*gVN*k?gsU#OAp#A1gG^EeD#d
zK^FjxaiMN~(Pqv~goCqC22W(?fsmE~HpiQLFjo%U=z4n-t5bHAmPdS#QAM(y(1 at uv
zy8 at iKnQTl$qz+Nt*5 at 08oUjJGMaUl|@_v~-_c`Hg<J6GczH3%%^Oe-%!{_Bb0Kbl5
z#6JLOQCKE79QyzyKd8)s!Uw4xYrf!CQjZ-D<fMd2ijRFpo}LurF^toIT}{-9P5P)i
zTMwL7Q3oH#;E}6Sphtg;ksul)dq>(a7hvh;Ec?f@<hTE)8Zw)+Y#z(9PBhuu>Sgcg
z=FTkMmD9+J(Q&$bxsgHp^1qpxjN{3+aRiH-wVAf)qZ?~+&nH$c!YkvMhI}D%QhBRx
zzOS3(?Itx}e!KyKZgX-ldTTrd7bff09oSOs(W`eeDz?AaIYzoI-`^H8PaqhFAcbyC
zL3qQsCLb at duG5F+(>~jng>M%(>zLC1I`vY>x>VB#|J#@z!lVOzFYDDW(MFW%T+cgl
z>XF0GGyPPub49Gf=u6I>8)=LrW6_?TzK%#dF%U}{+ at 4$P_+ZF<R{tr6Hl<S7m;Pgw
zZbdK&&e6>S;p(IM_K|Y>mdjj0`!MsZkcs)@opAMAA>T`C=0}*G^r4B^d2d(O&Zh1(
zxK|x~85^~29yr1KhIcO}_eQHs3k|{W5Qa-dc<4rV*qji;Mm+NXo8C$qt$+q>9%^<c
z!Y%mlLI|*eyy)MJ5~b1ij?o+%THtOR3W8>zhyy|rz8gm%O}ADa)qNvs<{+4KbFOY-
zcQQ<CwMRFT*ht-ZH0&ErJry<&QKg0gE>DO;Ocd1(S04 at yEq3d!org8%KYaD;R-JD4
z!zKjAgdB=OzChxwBqXeKhpl<&bNHHjEA><e&BeBA%@9Z%HFfZdsN3Li<FSCcbwXgB
z%64lHo5!(V3)h|O3Yg(JClCLdt?y?C?FRUgPM_A3Ss)B*CTqI6U3Ve+)Zoc(!Jy^!
zrrjY^mWDO9vMX$5lc3BUTsMi7se{$jI at TQ{xf;L|As;?Yc0yM67;g4=6~;QVqY>s_
z7(#~*oA2u8L at iu>+#U$lM0^UXAv1!;=|lJ2RV94|b*&FuZhT}nnv?wITTRyO?vX|2
z?UP2rL$_9i(*HZsSp7o4^{d9}U#5RQLRPPhqq4eLrr|y4-5WIb`LX at E$ts(ClUa7Y
z-*+teM+yvP=Yh<&FKkT+o7kfsYqHuVj5L{TDunA*A at i9Kc2D8zr(GvQ)$a-MI_iZy
zc0lI)*!?WBw2K#++C{#1lSi^wQJpbfhF$8~yOGx)wH-fNs{5YQ)df%L=2QCi*UGa4
zwsSIYFfINIUH<e)#lQ{z<HKm#-vJBaBQMj4O-oSS+NQY!>ss6>EI}lhFmrf;`bgWj
zlU)nVHrL7QbYS at YZN#<#zHM;_%^mR51;S4)sLI<R?AIEre;sr^*;xGxfBN7EX;jz#
z;RHDgqk*81`Rf227xWGX%pLypa7D-}J3nNWeGLBc`-YQQ9Rmq#;J)mS!4|M4pu3rB
zzzWx$p#F9udld``SZ?!p(3}*o+G<Y(%{K3e?DK$G&uptbi7jxO_hfb#RfFtBT>>z9
zfz>wd1l8t5_7*Zp1nc0q?Yg?~Nqze(<#1khF8Jg{E}rO#Ct^yXk7ok$f&Qq`(XF(t
z>W{U>1`OpIWodLE-VqrvlJUf{xpSla{jo$R`F#xT>F7&<B-LTW`x2h6WM8i*k?QI3
z#0NZyKEtyj+7s_o*nFMelZj7Jip}JrPV^$Jj*n@%b&pEcKrip~t3{BLKKsPt#>(;<
z9 at B>N42}(I3d5J5m_RW5Ovh$66Ql0WLPptJk<BTy_koAMJ38vRtL4*AO;>(CuKcK`
z{APUlFE!=0it=GiIeJd{{nM3`6Ux_5SImj!FHBdydtUi=<SWY`oUUxDEdQORyjWR&
zKvQ17;A`W-eB`q7%yi}9DI{p!RASyTl?44}DhYjaT0QXRK1m|hX(aByG!hL9%D?VH
zT!1H9 at 31hwjl}`;EuBy)=4x%CK7<=H9}b$Rn=i4vxnmoqKqd1`Y7%?T-*DiR-sQe+
z=X#RoTvNHKf{!NO(paLSyEmF#ULQ{wv1B6J<DDIj_Ac#=&J!h}Tbo)V-Z?F?W$^)!
z<nfl9nis5SLE-FHBWlEgO}_rVo>ffZoaU%O;)1~&TUxJ;1cSk5(D`z_!IqnvT8%l8
zNXN>RUaz-K?vSC5R>SM<=#C~MMlu>V20|Ud)+lbl;G(ujpnp+YZ6vt3r*&2&2*CyG
zbtWMBHkTI8pFh_#WAV~d!bo|%Gizqn)LwmUioMp|RX3}qc2<qIniqhn43`@hwd}&C
z#R`^(VZyLnvqWc*lw5bVD6W-m*Ci9jSFDFZ;<=QS*k_ZJC9IZXbbd*x3Ri&T>@!Lw
zT<K1iv{hCBBl>n;HkChT;fd`CODVc9sC3^`5~!@YyVPIlNtcy`CsbDXE8X)dD;Avl
zS&_w>2GWNZm!kAg1;BT2$-K&{ua?fM^bD2FtDJF9c~fQW-Q)a~_380}%H~q7WI|=V
zzp~a}IRhjhoyWw^KUdVtb!T&!)q4E5Nb)73?#+172tj%c2ezb60rR~j3&!e$aISA*
z<(l$R{hWddLx_kg9$YJNQQC!z$plk+{N3a3DIY5PYU#ZtWEc6K(jvMA$(IW&Jtc66
zzp{e-xtW)rL*;)V5m}jXY_t$bsWPDuj6Ojp)~BXYc7k09rxWc{Qz<*$E`+mr<dlL^
z){9PoVUK93d>L6 at BH2&vBT}hynaJjzpG2-il0&{1sZ^OFvbm=pxf0;i2Pg?YFJ^Bu
z>~>>$`*thGC5UAs?0zvD19Dj>$LWk;PI2~fu?(?%g5wBAk4Xa at pEd>+ee4nkswiLN
z^qQk&EqlMvfhx*Z7=qctk!Y`*pFQ%0cQc&z>O6?tv%sfG{fd6)K<VEhdYaU)#C-CP
zn3$$2m)k_R&)~T_h^GGUOcXROB<Dg*c+=P~E^LnJobe#=LUIl<dSM0GV5iFvai1pj
zXMwjdJl~($Tn3g0ir_~XPP3(**c^sz8Vy^>9<vDkJ>XMIs)ZPZ=2=QRi_lL3K_U6k
zBKX5a at X;c8BL+wz`QI*rA1Z>+#=tHl=lUY}{33Xw2>#<Dco`<=LVA0O;G2u!e=35%
zUj(nhL2 at CzKPb|U)kWx=(e at vc<}tQz0IM%T-&6$eFM at xw2>$aT_!~v=arn_iq59SV
zpQ_L-ZKqxQ`5wbH0q0hT9ay3Y$vIpES9+uIL`_G3zY at 7M?5$5aw~7NRiWby#^!0Qq
zk%i$!^ZemRWFWOP5{i&Gr6xRo4&7$aZ8qJmrJI*-b#$wz+f2Io=vE6IXa9yaFgr-j
z!tVH5JJ1x8w$<KQ`5kn^NUoxNajO@*-~wD{u)QW}vn6R~{nx?FmQ*5$4~36L&!}TP
zqwVIizmo^YHc0-vFksj5?5|<KYY*eIeh39>Sw%W~npgCm!Mw!V^E78O?mUU>gUn{9
z+VDZ7eW<p1=bUni5W11g!NC<xzDQ(QBE>=^h?FGylD*NMNE~66D9#^3%^+)?L$fs^
zA~eG#?w|&0HR at _35u-cVcSocrmRM$VM`FojU$Xh84kd6)O)}P11F<VtM*3sPfj-20
z;>N1T3VZF$g>UNW#1ejUJZYpzEsHh=TjVB*6kU$k at Xkw{<&-9ZmS-q0XWjgs=)gc<
z*N0 at CkoI9&cXKouk0y){$vPqJgIVYGiMD7Ahgv?EY2GoSPTMZToY6s*-dJx(FKryh
z>~ogI3?4#kiuNM3*c!=&6p8fo2e1zV%?^MEF%;NTmY<vR3()+!GYn0#3b5Gcm}qL<
z>=x%{IK%_3L4-MLQ;GOLrDBnOBN-YSAVuM<&RAD8)ni0DV?8k=7HX}dc;^|_-dl_6
zcjAPgZy+Z2m!}(jB at cGs#1oO;mfl|0ZvCrZ4lKn?#b=zpWjJuiO*q)k8_|yCk&f==
zk*;XGM~N&>+!0T7Mp|M6soq#_+rMbRg4SSLq|HAs9CU2fyw^74^uh?(uFzvW{mzBe
zTN_HmjW}kqJ7dA-cyn_H!qO`oTZ}ryulxIw#^OXW*3q{t0oqP~av6+B7z06K8ry(%
zb=W$#_QyKnUGZ3FZr45FR9 at fOoiaN6?ns<ckc+3!$(z?|z<<5Akha#df0si}Zo>!4
zsr~+JJ4HY}Zf?RTq186JG`_-1tLQ*H(m^Xs#K4gn=E|<VQ!1RFIfD3#ZslLn2$v~W
z;=*|zOSeh*RTADI;a5xeatW`Ia62Ap$F;AK at GnU8wGy6|aIb`05?&|a=dt*rEq|tj
zM<txj7DT<i#&L>ZQoKOm?4Szogj4id;Cm!`3MmWx8$1L`5B#T54nN6p@~3Ri1&Ci#
zB3!oTYK{}z`M8AqSrR^3!WT$#W=nXtgv)xLmgG=WQpkT+qQ6$cYso+)r~O?LF4Mol
zak5{Qf2;`omk>{-M8&e4_c-p9GXe2YN>2La5-!(wlZ4CiCm?<%<jg=u_+h$)&yjF1
z$H^W#JwW)1rO!+B^+1H2dnJ6Dg#V}r{#+4!qzHZq;;fX&53>9lis11gcn#vLlt|9y
zxP<-JNw_BAt0i3Sw?C9{+5c-1Po+fieYk}D`z2hK^9Ko+<xD_)loH92>8~t;cT4zO
z at Cd!@CHy)Ge-m**O4Pm=;1cwI;yCHOUcxmR<Vb|eb}lG__euB_;1TjSOSo+3ZzWu|
z^DPON{ct`Hb~^oYtAx|9VTIn+9H;uysgA%+iN0FG|Fa1FPm0h#U4;JGBJ`sYF8lLB
zest)pS5U%b`p-$Y?4N!Km*>gvaNODM-<9a)cHb+}%YOT<L@)d8L=pOP_<1DNOQyeu
z<IZ-uz6iZ8(bEuIh>KF21OKcIEA0;a8yxR(;G#dQao`=C{vHRuh2!@*aM}}4+T_5g
zuT%P&1E)Gr+Uvm2w_)Wu2fm!+uQ+fI$NBWh#<e_e^I^osFP-j+`WB-X`l-ES`l(zG
z;nO5J;-u7x(;P_2iOc&dS<VB}zC~WAuA&Z7Ku!k<MxtUmMHKbw<~Tj%{wDnGv`4P5
zJa2ozPl at PdT(q+j7wzoCML%`oqMtf((eIqNXn(@x^-KJQf^ZF&@Pp{@gnvfDMgJvS
zo+ls2J0-&9`ilPZDd6*P3HhHuo)Xc|$0cy`IVHjaxCAcx1GN`j0>1%yN<>fla)Faf
zN`x=KCGf=rA`wo$6*ys(s2ky^Ecbf_!YC1bBQ8Gu=FW);*Kvs?$_c+ofOzt41(Oq!
zaGBmC;o at YQ<V=-tK|}bdzvi&*6h0v~K~Fv_C4eWI^C=Ndz7R>&g>b&LWJR5vfN;K5
zWQgcLgo`<W3O2J+TfV3}LF37AB%-H2A=0H1PGurZmvFu%VMYBCF2*Jmtdek|U(2W!
zWrKuM`-(*Wa7Br9j%oLrfmOXmbg5E<;FbOC7P(}sCt72~RvJo8XVi!)HA at Eu6b95#
zZ0l_QM9v+hA%x5;`jMy?J8}A`)rrn*#@0!S+vk6!Su}oMz$ub|(+|F~b82?7OlL7Q
z$vzq()O|i2sUO-Y3Jq&-4Sr!TrjP%f8JY86&RE->>=nO>$lIR6q0RDG&nl&6SqGxB
zD?4KSMg-GVPfVslh!$r&{TzxTmKupBlTmQx+UcVatF%4Cx*mLl+Mx%2G at _TM)(roZ
z6z!q<eI$M at AbMiQfFU|~t{Lr`{-vW${KTl2;`~Yt{+}UMgCA&L&5kAbJI+{Z`jdS)
z4>hRI)9M!Mj&vn)?u3Dp?8DIbpy?PkLHtv8jHm|wCiX(Lc&GiF*n5d*F at CWxo6O}9
z|3#<4e>>+B at i^kY_%!&t3-DiZ8vI59{wq#{e+}oC{YO3#eiP4P{#(cS<@(b;T=0o!
zG5!q&_~|=Y at QG(J{*49rY5yzu#M1+ewxseN8?U+jwEX*Q!rgR}l4z3#38U<OzTw}`
z9Z2mz0hjQn_}-vzL((sQE8tc6rufjM7b)@Wa}J?150ZJN{9f>~`pX{yz&3LI6myi5
zv;OCRxe)&_=XX}a$zKL$YKsP^e)`x&BEM0hCw<#G{r6%K{Rg??>BKB0r~U&)^zY~T
zb<RurX`XTF{~_!yRDU<0IHpRvDeKh#5cmt#zlwiUihe at +sY*`$Zxzws!1bp{sg#`h
z-zcKLmg^_Il;}z4CQkiy&O`OD!zHJmaQ!sr$%$wwiRT-fe;n+P(|*n`erGPqoc13A
ze<A<1bNkylBiT>BblQJ6m<!o|Jx%sVA`W7|<?R;sf3pbxO3v@}i_kClzt8!d^Ur^9
z{#`;be+oVUZvsF5lm-Ft=P<87{ckxXsz0rNLci!&+qiy*`;`Q5IE$F2<kbH(=Xct#
z(8P%J5B4K>cedZYBKD6^5De)-`@!s|_@>kTSHVw5A<p@)o$D9$TuhE%;4c=@zp=sQ
z5Pl;6O~obn1b&3qzr^9dHC+ELTTJfm$>r?KP6U0(r=<>lod=tQ9>FH`i}%OD4--zA
zKesj56gnp)`!!sGU&#G78m^H3cCLR0=NAvbFW&D1e<A&f-==8igrxs+T!LTdUy1!2
z>E~f`POT{GxPCz|3dFm3{xj!y`fvST;TQ4-!C%P!c5c70lkBHhsn9F%tz18q%jrI@
zpMGN?C#owY at qB{w+i3p2oAc)pJ16)A{xtaUr#QNg at +9Z?2txi8_6zuRuHVUji1QCS
z6gv4|1wZqj5Xhe^{dPv4f5;btU-*y2J9QK1gO|}=Q9M*RB-*EtNlt!>MLNemAmvHE
d at Q)J#aRQMX)nRLTA^y$tY<h9dZNHt$|No(GLBs$6
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/progress.make b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/progress.make
new file mode 100644
index 00000000000000..abadeb0c3abaa8
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir/progress.make
@@ -0,0 +1,3 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..6b0a99ffb8bb53e7dea4cf551c1657fa7aa819f0
GIT binary patch
literal 27152
zcmeHPeRx#WnZL;-Fha~7l-gLK3}I{&t1$!NBNlB!61XFGASIw|MTa37NS4VYPHrG5
zNN6UMyF*sCwS9Qp?ylSIwshBa?bc<rts2AvTDz;*7Q3#>_Ctvg at smw!k^Q~rW9H<}
z3?#O7`$y07+&Sm`?)!D#_k7)RZ?e6?T%4bmr^%G3U8kjM64f-%XVT>wR;<x#v`;bG
zi%}<@sUrW7$S)E3heci@^6AJwifaZgFD~MpiK|qUXCe2A^2d;WT$Ia at my7Zh$Uh;<
zS0S$u<$1{G<C5tu{iDCp_fIqi$SBQdF8HjG_tbS~kLxoMjAV#@^%>e&bCTE8`>Bcg
z=NMyJvi+_qTzjMl_fHUwk!&hBq)jmF#)6v;?s4K1Ilf-n^N3sWF}8fh1^b+Qt{n0T
zobnuY6guyZ)~BWPjmGmNPVG1PUNwy5W_OE`EV#UknrPSi7WfB^fkJBV;d-BkazaZ4
zM&&Xixx{m*-sjbf>O<BY>-7#0;@9+fjlM%(eahnF`jlm_8}??mF>oQ1z at x@^NGf#{
z!!{w+UI}rKvKIU+nUpnB$_<cm3zw3FSuMsVxRKp8M&Dz`L48Iq6Kx+d2Eb|9TYc^m
z3`wFyCQ{ReZaaJStUjYgV?^x!@O>=XvwnSr3>M;2dt>blwW|X5Pij{N?B71p2uZ69
z`<*885f^J83?v&gb6{hoX>arzNi?p}V^lw_C$s`;&Qf3o>{wcf+-=yN;D7}~4%fK3
zolDCMd+1P&M>8HE;Dn2q>I`F`&TAa5tKmfTK6jw{H9hf<aFLn3z06Fmg1c{r=x%SY
z`dH9 at I;b!HPiibQS-z5B|Kob%ICxF_2@}qQZ4?GO>MLVbn at OtTr>uX_OyYj`G}9h2
z%bzl?g=4mFpK4qS=3agGeq{ZF`mS#wH<A{_!;K|UDg~>IiOwPQBc}b7Sw7;FdL5cU
zQs*IO&9HwIs6Jy|Xe8?@je*WQChcKzwqd`>DimA8K5^5{wQFi`uDzu;bPz+Tp4z8a
z{dsQn)`I at QEjt6%QD2Gm=Z1ZX3rHI9SdTYg4+g5?sV4&Z;$uetQLB_Ui+4NpUO|ms
zXrh04`v<!}Y?lAp*zs%Tm^mnrXSPnTk3fqr(AQI<>4{(EYg)iQ at d(<Z4cDRH1p2o6
z$~3*dfVB_-H|>|XWcxtCekzF8C-NcDK%l-j7(`chCjd2ooCz`QH%$9c!+ycApJ#l5
zK8&!up|{`T{g#5tJx}fQ>WMB`Alu5KOJPNesnwmCt at cwKJtSoT3nC5RN~UOZ*8oa_
z7IY($BS!fV9!dSqGP0fZk*#jD#V(<G-?kD2<bd8k9W}UP=x(@!$0<m at q@HUeyS#y9
zD{TKw0O2sJ&lvjRpCAx=q8E)fVTVW9ffBqw!z at 2z>^K97+x0uYjpn055zu$ng5Eyi
zf1LF1#f_n_G3WH+E_ziRQx{A&VtheTAXy_u3Y)iRxL}Z2S290P7m%IWOD6CsgF1kl
znvY&!AMP#<mLKz<4eWp^WXqpH8!FtEC8*TfXAhj3F;t6UYQAS<e&E);zW3Z+bv36C
z73lrXfTRDko_OP3gmS;(*|oG1H}dtwe*>^j>;G=fes6uPZO(m<n1`MKnx2vXdCY;j
z1p)hLpzrtyO)K^rXv3tDfW7s?5z`(r%MaxJN1*(PzL!RzRR8Qw at T2U1-2TtL1MXn5
z=$fEiw4nNp_^F|dxaEI*r~}TGQ=aPVdf?L817Bdi)%=4)%K at j_hbTkBJU}qaJ`Hn{
z=Iq~+^}l7-7m at X8^Y_sDQhVci{nQ}MtF<dJnVxAfcDza<$HcWzS#uJ;X93c(Q}0`=
zmnVF^s2cWR7C)-*L7nn at kh3mhB-i-XnuukqS^but_z`e(;H$n~<iqv69~$-qEJm1y
z at AvHjOtMxR$@`fM<CFLM_5q|x15^i#B;`E-1Jy5Bw_!F4+Ao^}_xkn%;yR at SCJqwF
zs_wnCuB^tGA5EJ~aIMLjk>LcNzl1DCPqO871@%zbJs{RIYSr3c|7i;ou;uGC?f*5)
zPcs9O4bx~c`75^A at VU<aoSX at IF(UQEiU~9zR(Xt1tkMkEDz}l`%^H9(JZ``yY9Bdj
z5V;r%U-jKb6%2T`aA0*_>mlI4h|AFb<x&69Hx2!YBgR02)A6Wy-qfdHLEwJDu%XqP
zZ5a$((%r?B=u at BvB8}u-f<NJ-)$dS2K33$08Z+76NTI=E&|r|Y%orM%X7c-tGGHGH
z_Mg-fF}7T;@zogi4{3QbO#2Mn7_?s<E~fQ8m~5fd at R!!AU=oX80J9$EoRg;gikNn+
zB22Q(Vw!6L<tNFG-az#awq0U8Km(mdJF0j5TfKdvf3W9ULHi{V>VeSie>Uu&1#R?n
z7!a^e8Bk%E)tK$|#7{6E2a_>q+=O}O6cow@=Muxl`eXWPgr86%)j at kCSbid~V}z7$
zFF}C}(Rc5Lpn7`{G2XQUMdJa?dTf{QrtZNEAFvl2Z`SHlZm2P<|Hqn2;T!}3>5vO4
z!u%Zb=mX8Ik>-tE-R-8$<4ZwAU*Rm&#jr2ok#IxCp at i=UGHrc8zvD&b?I)OI`0;xv
z^bTLKevi?A(z?m8Uoq{Mq!SAev=Ml!K4`xdOt!;OC#~8*vK_A2hMnLU_ogSlOX3xl
zr-{X=es<fF#)H&+TxX5yBikR`0|5x%$?iwUw`I(?){;Q-7Uox@@7;;|&IWV=A&@Vz
z at aD7!NP|)StX!`aP(M-Dt1_yi3t~8}q^bWjtpk<R=hmKZpN4kyGwO7v-BV*ch=SOd
z8Hn%8)|8Z+rH{eAkU2oQHemn2pmF(gikW?w-DBbn`=HS`qU)bqLU;N`^7Mp at N+9mP
z4+YcyIYorJq1c(6qG7=WNUO5iU|`ST)vOQEe729Vqi&SH$L&hq>+5CUy=)FL2QEhq
z+J-S4^u#C7tJr=x`AMVytez-FojnE>(vAHS1I+~qGw(Q_tc2IdTYQc?%_h+kN8cu|
z at u7;*In+d}hkeRSM#OqPK<?KtZ1luUv?}oVPt3h0%-f6G{^x?#uUWIx>q~N*Q2#kI
zZ-hPA^^zFYra<2h+(zC(aC9FF^u3zb{p}$aBvU)s{oxn(@cgGKdAxqeQQz;Ve=Svi
zIQ at LpchGHAKd<-y3 at ah^=`eMIXJJd~5k&957~UfH?*VM=c#O1RM!)H1v-~x=ab-`U
zY58v1nBl*z)%UN`cJUc<=pAxjrh<P>3s&~RY|>^s8UIn%!t{iDm`}7~j2rfUnf7a(
zM4f<#Y*N?%oOLmykmE at 2f9kiusV}nrAGGhlJh#{wx)9|4qeI`prWlLd at V*R7yNe7S
zZ>Ed=ut!V#AZ!0P%I3iLeZ9~xSJDiAWqYyyPy35qaFy`^?=LRO*k62qtosY>U}=*2
z)BfU5`wOf>AHe?N5o|5C<HG)8WNiD3!m;cxMra9F_7^9po at 0Np?<7s_%Kn0OQ(}Ly
zdc6CKuaKgw`-_QmhwU#8(yB!Ji%vlQKl_Vev{2n&{0Hi6fAIslF_!&B{8jQ=#{R-c
z-puzGSiSVbIxPQqNJ~F(rk?Gvl=A%rjupEv8lEH13Ht`Isvoju;owf+Kc(*#SMP6J
zn}?F0cDp`ZV9?Fxqek8{#Pqz;cPg*@TSFS(yzukoEc=5?(YgNc`-8dIg=DO{djB74
zfADyY{eg$@%>6--?+ at PkW7r>{gQXK~JlGS|L5@*9xul?PFwfXaP^z9ks_t6i<|N`i
zt4{@qs1FqMPXagRNo)J#Ea41?3}gF6z7 at n4iw1{*!-!tw9F!*!&P{0d+|;2go_b0c
zu{^dg?X#TO$z=Ud;5c>Ur4LLe8k9~HFFJR^Vg4#Q#K&1k2d){|*;|XufvbozJx^Js
zn4>mNXY*5izh>s0U{4 at 8cg`61-9HK>r}=0LePsX-(jFXG<CN(|qx=QFPv_hIJrBE~
zfH`3J5Yq!PP9QpD+SIHivfoHf#B5H_`kQguf7mEL#DufwDW{b4(r=11TOILht_cN0
z at klrt?Pw0Q#kwMKi>qh;y3w$oHoi-XCXy}=?#O$153w0XG9NeX*Uj?d>~N_1DLt`@
z)*JiHfPKcW-!jX89;|*Fr`-e&RME>J{j>iF=>`r#`-|8EQ(lAr>_g-k+6Yn(_I$JY
z7ghxhXH5Gz4vWq5mv~&<Y*y}j6yCj_&J4O=4Gcu*yK&-YO%0Uey!;g7dDF~$hxwTf
zfAm1I8;9L5LkPoYWp)ScZ8)=UcL(eSidLEOJf*B357BuH(sm|TyqgkT81GL?=={JF
zKokZF%IHBDohdIc&;h9hA4UuG{%gQIbPIl1d|-TD{GW`6NhFePRKJdcsMqmI$vE&U
z*YMr!%t_oiWavv?HwLbJha57r6{z}5MIfKAYHtkK$Fjx;uP`<sK39_q%TJ`@Q^Vtf
zqt}3a+AM!1Sp6$KaTL;wfg;4`K)j7!OZ2}B#Q&WC at j!B-IZ!{v9V~x)`M^T2VHZrn
zdHwb%JbT9_*iPW|#H0hjBA;+>k&ljSnhiUM-NrTq>Sl6qiRxf^-fVm??cWy-d#V&M
z)o0iT at N7T)Sv)FZyx}|x53Z(NAPDRO(7wGE at 4paNM7+p{N9>e(I$Y)JGxPV|>{Lm3
z^$495>WiN>4*bG3{1--Yp^rC#1y4vYeeU6}s-ZZ5P~fz48XYNXL!ZtX3cAJCkJ0gP
zDdQz09)$*tmrtE99=DE)$6K{}$3*&Bj#mNoQ at kQB`jmnxIDehuq2O#dPjGHIM{w9U
z``&T#7wh-g;xe=u_wb%8dt9n>#l>dv_)01sE}ZhE<54*L`P}iiHx&;s at pvGR2YyjF
z^ck3<j*Pl!xT~vUeW+=3o7LQ^$!h(USY5bF%xf%Isdy<N!j!fhvnm!gdXb95OB{y1
z3_>G$iJ9Eweh9^0dOhtP{t)>ofEUUSBYd>KwlEG42a_Ahg2 at h?`MzY at zrdOA3$!L+
zuBNxo>C+dSQR0mnn>DLXY`b{WvF9ECgwxZnL2`-zG{km)183SbiPPO1NYZt5*25+7
z!+z+!!hf`X(9i>~n7V<t_mAP_+6W!Wj(S<j$AfAAk6HePe4E)O-)3&Gj|_j8+G7rE
z#|(xS`(|}diB*mD9LmM0z(i*z*TO-qUNqE9#z8p=jYL!FJljo;9a_!%1-LM$4|T8_
z#;^b6P&3Me-Gp3Q7w&3n4s}`aw%CSiyv-dk6uX<PwvL#0eY~UH8|#iny=`6IScm1^
z6ppsFXlKvn`BxYIvqyU}Z_VF%wBz}9-eHgS4;K`^t84##K_SWyPAdGINBi02!Y_EV
zcP8&B00gFjYYR2OJggJ*i#lTlDVV><m{A7vVV#(t(ZPJc1xPX at x~W9#AzN)z$ml|w
z6>0AZbw=W$t_WJylDfO3uI?Id*{XHjF{|6_pHnfXqVlSF-K;wMj at eZel~on~a&ZGp
z1-R&i3vAbxEL)}F!EKN*7cNTlEe at r;+g50KJ)XSFiYB`EpdS*?G<HYRXh%wkuu4|a
zv<pQ}7{bDmimetH-KRu(l$Cf{V!Z;JqTIVnl!GF#LB3Cv&rse_?CHzjGO5_TXz~sC
zy?*ja{MNIwL{xlbv75E?RUu;{<s<@`fs5X)Q~GQASzPQH$X`@kvfEW(?A=*VTU^#x
zSYKS3zh+W#*^**!ZE?w>V$Y&t_masgi_2;ifVZnr$eKyAkf_})4vcj62<&dkq4UoC
z<;5j`=~`6m9Vl2-T(-NgwzzWVgxcZ-eG}`8*XBPtsdxbpSOW at J$8A_Tnc4rCkkvmH
zS&jJvS!G?%WqHUcNQtq at x;v|^hRIq9WULXg*k at x#abx}i2$R9}^oV<#Q+m*<-0go1
zdJu*B(d~!LCiFZeWYtqAhiC4j_z77J<jVm0vYz|0H_z3X$E7*ExnwffWuMQxt<hv7
zVj}Amm&tL_3K}0SN=<G)zIgl=r*x*{$8;_!z9--H(+Me^4N3%;O};&=2W!a|FRnef
zDA965<5q*PzKJ_0>@FNA_)FKF`DD-igd<%%4tu`zKJD>RypVF)GZpt%GD9`(0!Df6
z9}-ufy+L0;WF(iSXJ7=lH2RV-Gr3Z;+30&NjeXQN8br;d(U*sr$)(Ykh?&X7dUZDZ
z(o7JDOS>!sr#UiT!P#6Ss9f6g40-}w><h at uTQ2rBWHx+OCdlN_SCW~@rIlrZKwR1t
zIq<78 at TEZV5wErCSQJ#Q)T)tYiz4vk2ibn=Pm~4)emk$SekO{r$1jVid at A(iE4b`)
zpJ8 at fnWB@0kieZitA*inC0QzOWBApnx-7&Pez~lsa{7EqOSLKmYd>Z<2B;%_h%Lm@
z>h#Te;H64Gmuv85hSMnHNv^s37 at qFu68{;))BRko#~;QREmiut#0`ei?9G#0muJEL
zi<I#g6!&ifJ>iX_&ems?zXM##6t`IRAd{c&=WKSxosVGd&PHDfyi^$%lD?1OGgG2v
z>9HJmAzm$&YO^xvt8(DY3{Q_2woZe45;|-)JE!EpuLfSKj4!rEL(aeDpnr(br^g*z
zhe5vpU5EJ@<AV}gQ<3iy_<i7`L~9bIV*>XGV`*)m^f7d`Z1&FwUaF<XHCvZK|MML5
zLpktE(NVL>zbOZv1U at sLzQ*QBn5lg|2mO;d at V9f|)3K0dvnQMb-<<>hLJs`p9QfyR
z*i%rH-5w(ceq#<?K8;p1cXn!_&n&C%?1*kz7l}2u`WHl_o7%gqEzw9Q*3lM=w#6dz
znsFv)MH*HtUDgy at u&kpc($pDgZm4MPh_(=SleHkUVqM6JM<M}K=7&PfJw1NEf42H~
z6=-g<{Ql<Fa2$l;HmfVp+|U%pPeVhKRn-}8iwBlA%?&N9W at fa9;~VGKb>J~25+?$G
zWvD3<#UY`;%L+8rhKMH`>FNrAg~SllFnczR4<qfJ(QtDl)Y=xaLfx^pTe~BH>sKso
zvS#}`+ak at 8&23$gQ0hr9WHniHt?te!h?bMAh9)x<xE at 9^t at CBOLU^KzhjBzHl+T`%
zy2E6RzF*(Dd}XMjtt%d`s64-W{r*M4P<>lhXBg)M4J#B6%x$vB at 9_Hk#;^qoVri$J
zJ7i4e$}OFdm60xMj53#)%NNy}p- at -%x=<i=-d-_(L&U1<fb>Rmi^@<H^@|3r!mOK3
zKXd439{tRvA3yIW^Y}S$fC9>66Y8|$f%Eh~E_zwh?2zA2TI$ggc)vj4DQ5L^8#awr
z0GrP3ATE=7PE}R`3VXW86S-d at UwUpGbL;3pA>}7#;(1u+EQ at RyCqu{hH2CK(YKw*A
zTbAQ=AWSD6<5O4PwrN}pRdqPcAI))Yr{$Pz5Z>74_R&H9efOf-tQWOJ8#n!d75RVH
z?#eC2Tq_6Ec>8;X1?TSX8T!smo+17B94Y_&jQ2!=>l>TqU}!dMT2>tjZHRTVH3&;l
ztRvnYj;815M$8yZ^Jx&%B(1ea+M7GKpkHBus0 at Xy)_BL}P&5+TV6}!K at pwnPacT4D
zUN=rxXSJ10I%6=kD%3PjHMPBCQ)IL?N+A4Ii)aO>rL!Ss#ka6^k*2HcCeWQRnBWgF
zzjAMlS`=ni#UmTqx-b*Vvu(LyXjqZ%nOMAX8b(by_iQk(wQ-E%#=0zOSPHFh^Ttqf
z>&DRfa9fmn{*Pp at Q-vXb6<E9`6+4|!XGa&DKcDyOcG}xv=%p+UwM4L$YmdaN#!+w#
zi)sj)HR at X!2i2*)4Sxq43ddUTT6SGH8jdwb*5%;E9$-aN$f>a{b{>uOH&(<W>nkv3
zdwS@^x~n6GgLZ36Xp>{>RNWrl$Tpr`qc%hol=PmF at 0k4auyKl8OCyoa72UBI4)^(l
zn?W~!aa*jdt2Kjg{F~TnghOtV+u8D=bnGewN^Ibkh1*AO=rp`?z<iUf84H>smKk0b
ziL#yd`1jR37MKpjtk$ssFFQt0YUACjV;>$2wP3H>(G?+|u8M7LL+4l#!RP#JW=gww
z0XE>+v4*4m`GHuQ)rP3v7HPsmLb$yPtSsR%hb21Rz$2lC&wN>G;V{l-I4;js?+`eS
z0odu1r2kS5e18s{zWbu&l=BjYGw=!Gx!Fnou^c%4Wg#UeeTTrQT_3?E?eA0YY6X8#
z!Ra(m($hH?C6aRuE{T7P03^~&f1fPz#X0bxf`3w>-=^SKDEJ(l2T>yV*W!}$?Hu?q
z1*g+AN&m|n_~j%RiL&c(N%|%QSM`2V!51p at zf$l|Dfkqe?@*%KHMpewWeTp!|7i~V
z&v3p&iR7sC7l;E0!WZF^^0z5?xq^Q~!DlP at j}@Fw6{Vc_6kPS^6dF88q_+;2q`yqT
z>lOTq3f`dLUlBNkpT?Y&vqTJ3XL}#YfqQYTL5b*9JL!Ccl2gtjIdBioFS5}m6kL^$
z4 at Xk;i&2vHe?!5SDEKQ1ZYa209Dq9QzdQ%NP~hY at av}9aN?%jx)wq1qLBEERYrj_L
zF9#;=zqFVWkUc&HpQ+%p6x^@ir3zlF;2&4;Pb)Z`T1vg^6<qc6p&a<d;$WQYRQuID
z1)rnHU#;NkIQkoblRu{`^j}fv0}B3i1y|>>HgR}I_AFB9pI7j51;0QXSQEWE9;*~w
z9gnvtxayx<6<m$`?FwG6=zT}QRlnt51R^BzgE}6+E^x9__1kpuYRifDD!6Lrs|v2l
znIT>gIOTNaz<;UWs{E4*u8zkG#H$99ua3v-6<i&UtqQKn at 6UmMS>WV18jo9XQJQcG
z&q=Qumz at f(%6};bK1aObBROikZcuQwpZ6%Z>gR_9?(FA}D)eeUKdj(tKcC5)#pYFY
z-k`osiR|>@lH=M>AQIu~c&EJwCBoJDp_ZW>FGX3(A=@Ysy*mHMf8#>!q9sDoe<#Ph
z at f~Hn6TJ%;rAKn$Kg at w2bKn#kN^d#v<s8<|I&d-lYR}||`!h<s$j;3|&Wkzl;T-t?
zI&k)<osf00cy%WIc2LNl;lOtYTxLX1SB(HD9+V_*@~S4b4=KD-;6);r^fU%2$#)+T
zm-J#-r{q*|^3)q{Nl#;#63tzdB)*bYHLu7eF24`(Iq-#f94K?(4~V+7SIYUZz@@zs
ze_i0xUWrc?@)tPd?-BKd4*XtGuW{gmqJP&r at W%u${UP-p5xD7~j|#lefp-dA`cKNS
z1isoq-y`rf4t%S?*E;Y at fwwqtpTJukxL4p&2VNlXP6zH5xaGi$1m5GoTLmuXZ`s~8
z0`GOu9~a{`;lO_>@Ldl4gur(@@ZAEJ at t1n{2>dPw{apgz>%jL4{L2pf%L144O#$vN
z#U<y-QbAAn)e3%vf?uWJa-Ji4>Pu3NoaYFqIbY&8qD;vtKg3~%tMWH1xVrAhd5Gkw
z_J2vCSMC2>1y|+E`Oj&;od2Bm|4@;m%6~?|Rr$jTuG%lx85v(&(0N5p_=UKn-<AoS
z?733Gcjmxv%Yh4+&4)#(^eS{zB)x<usDk9?Sqhi^m}n?TdO0t6IGn=eyfD>)%Xy*1
zfv*+yX%4(a)W!0}`ibg?T=>I+kNl?Yi;gO|DyKxu$3#zkUi$y91WxV!sDgh<p|4W#
zJ5i=|F1 at P!w>UYYpNF#4OaF&}63J2Rl;3MQ<!{Yl=MF`VYNwnZoO1q)Y2|uVJKt4s
z)y_*4`D3y3_8fNhDsogiEk&=ok5%KV;_CU>b>Nl$EL7wK6<oj?sh53HVw4kpy#jbe
znfikq%LI|lln5uE%4CQF;nD_z<TxOF0s$ha>(@jHB2S1i(aW((kaPYQWZJ!=K=gDq
ziu&scK1q}*b1QKvQt*`uE|x%cw^hM)g<kE4a!#PzM-+PT=*hU~dpJsziAPLUU#sBE
ze!;(0!7pZ%{O5>*Q&IBI5<w!YR-vc=i$aNTy5#prwF)jC>4;4Gs)Cc>WNf~v;6y){
zh>?ycILVjaH9f81L{EK}QkCd5L`(8-ClKjc1t<DALp5!+f{*IA6<u4}t?)Xn0;l{u
zZ<VEZBpR-;B0ZK?(Gs at 8TE)7qE{y>dc%^Zk?*uYFEf_1K;{$`SvyJ-9V61HC`q*Hs
zGUkl_<Y269&JPdpmI?ljcW_^)oL|w6Pn<SJqFXdhKmj5Dr(a<Hp5I;9)4O!lm=8)@
zX3NI;CR?#QQ<m}`H_P`jyv at w_f6(S;ebfEEJ`A7%>#y*CP`%>!XLwGF#~JOc7QL_U
z7IF<NrOV{}LLj>p at 8{D6G4ylAHT91C|Mv^V^Ssp`)rbXJ#fE0Q(CulCbXp;-F42e@
ze0;kQ$Cr%)!h3Ej6pqKkG|};a*xY6L at r53n3TalPQU(6<IvlMy*GqYP_SsIK5NH+n
ztGGx7{w(Y&_L+pJ<I|gp&Ugpj<Xdu1jkJc=$MN19_QpG4(eIvgEcoiaMM|s at 1-U1q
z^}H09Se{dPE`GT`RQYF(gJ16JRDRz$_*a9LlFENM>SMKkEiogh{B*uMR{mDTJ({1+
zfyc@(V>?yIA^*=92Y*8F$vrRed&j}QCky|~aq!FMFjfETaq#cUqM!DlWA)$tS@`FV
zgMTm!|H5(bKbeJ}_UTUhy}<Htsn1HNYRBmZY1XJsaQYmX-__V(Fp<m}35dLej76%M
z%yWuAJ<rJgEX7ivCjDajjuKC<OJ!+vPPA&e5*3p9e);JvjkTX15R~K*`qgJSy6sVD
zsQBl&vhjNbKb<+L$;tosxS5T=a*X`X=HRap{7!w&`ZOrdroVBF{7pId*9v~;-0sv*
ze`8Gg9q!jG!G90#sY&)<i6z0Dt^ciF!YKwt$Dsa4BAxy3Z>0TFpvb3wgcnXZaI#fR
zdvoY7p+i(8x=)GpUxv%6|Jzc(!vP*5M*3@>rGB0MyI1OW at ZV>0mbHSD^iRj-)IS}3
zWMaO9|6ZZri+gHv`o9Ex%>NF44;=;}4YFU}ep)}A`jbNc1PA|9LjO#`FEeNRcjnOl
zl+Z8d8EQYta_T>pL%)2{bw2$^bLc;jML+F7ocfE<Kgs{JHmPamG+q<kFm;P)Darh>
z;CK43M)1qOSL0ln^Vg%`&lW#T9FX at 2M)Duc)lU1jfSGJ@>OW4M4N3l;8?R;Rx4 at rG
ze~-|=PcV}HGF(pmlW_Q#O at AkKHYE9XbG(+RzYzS{^m~_c4psjZfSmf1LccS9Z+khv
zFoRd{E8`~fzsq62cP3|%e}5+hIQ#$IIqW|o>^B4>`R^)RPWv0N at RKc0`}dY|Mkg-$
zrTrnnk6|z>Jt6qzdlPw6^2z!p!H;ZIYNWw}bOFy&zs~mG3Pu*c6a_DM8hNgce_HFM
z{SvpqPv@@~2BXqip<mL=o3bwRL=OFBS at hHU63Hj^e-ZrTlZ&JRk#`FH&i2Z>%=Za?
z`j^jY>OGJBlJ*~@{SN+`EcVm;38(!(7WyltK#}hf`YRl`jK9pE7yJ$~ZNK1m;*w9|
zC&7<L$c+8N1A^Zx2}LgLmvAANNv5Ou+OvYcl{%M_ocyFbTmM at v{CAHKOylp9xFo-f
ze>UBuuBMEB at qU3CheYpON^v>)X?(bFIn$o2InpN|fCPclf3!c##y_%xGh8C{3-;9f
HCF}nOj*()%
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..566675af8ad170a1b3b1244c2f63a979bf08e8bb
GIT binary patch
literal 24744
zcmeHveSB2ang5+6z!Ye1BB*JLWyG<Y_!2X`W_)V`37ji;FeRYuiVnjtkd(<wXYN2y
zl+YyB+aW96bzMGgKP{haw;#Lfx^~x}Kde+kQ4rg1Ep1m at wbB<gF)F at PerXl?eV_9(
zIk}lZu=eGTJ)h6aJ@<Rhd7kGy&vTyhoO37H)@Uy-^7#x^e8!c==$%3h<L>6sdL6IU
z8FP&}ylpw|&%kFIKGX4`{%7KImaLzRYlW<T9M at 0C`V3spk at ZjFI#brq#dVgfUx4d{
z_^9%h`N`j#4 at _eH#K2(jlFu{WlUJTNV$SU4O|nb;#Y;+h27GMSesgA>k)@j=e$!12
z)br`1&-+XICgTYQj6Ed${`J+P^m4?y at x&nh&E21#WPX9}G)dfdbYYA~rsDA+wPD%j
zk^{y><~EgFw|}P>pCs`0ir*uC)sJ^8;=Rn7<LDI^pjYCh=aFNA_xV_UMvmWD+^29F
zKkIpgvFv95I+iUtzmkUNHUw)!1FU}n4ftR~u#B#RR!EHMl`OlY>_9^>;A7zf&MoWB
z4m8BK9SpFZ0|B#q at e#9p+3U>R>}UNS<rIXKc^{%mwqdRfs_qJq1C=%Czk*X)t*BfB
zDmMr!S%|fcT_}Xi)UlpN8Jwb<lXefVe)MGS)}VioBU#i)L>k)AjVDf=AphZw`19fW
z_+{t%QRjeN>aVT8rhcX6{<MCD<-Yq!6DX}@?%U0zBSF^PZ)F<|yMJSi?QRUPEC$z9
z#=<``dyNtr&Qf3uaxAUE)z93rNWTL?4%YdFoJ%X2J9MC~%wT&67%Zkvix}%)6krDz
z)rm$8LBAD#&FuXbsL0OVRB2~dLftokbS4l9KNWF*6fqb7kOm7*POu`<cgXBLg1)x<
zgbigvHZp^o3|4Zf?JV8mtFmvv&f<AyhV72nRZp at jpqOpjrn4*1x!c_F04{w4=56=l
z%CZi~LyZ-RDjBPilP*B@<F@;xT{YsRdL at QIROjQ$hvELf3Lkeq%Cd`USbwLFQ+t?{
z&D`ht4cV5tgV$YOzq<bV`Wxz_`!S^&XndN~e<!5gTGBVL<yI at 43|2UwW$sZyAj_b!
zu7KqZSYc at D3Cmpk6ze<e%o4*AZU^s`t>J|>{43BmkU86~`W at T;JFb{HsE}s1PIMm!
zm!Q?tRbiODFBBPu<qkfA at fgF4;5Sy!)?lS!_LcAv!r-?1lA!GFv)m^m7=3RMC^8u8
z9|j_Db$>6QMl|O{Z1)Y@{VsEV!QAI~KdT2b%s2Gg_k`b)QHADdoB^{p4GGj(xpm2`
z7%`2ybNr}7WXCe1Qp=4<6S#&m8tWQBiBN3 at mK<SKj|)qhw^x$v+()+hF&4Li?t5;o
zfI;?|edpi~>KM8U>JWB{kS at t{SvDQ8vMrGP_ZG}yhmSLJ at lRn0v$q?Aw;@NFlmj(r
zf2Lh^oNYf2irdWFzlGuBhAd$2s7HHuFm#Cc at 4|zjZ*b*w<0-sq5oZ_4Her5&l9jEK
zGlj=3nl6|m&P7}g<O0g610;e78RP(d8a}+hJ(!slsd_4O!rBf|NS40_H{1wWmf)tr
zJ+bfT%%OTzbMc<f`To!OdfxM=7u6j*P-6D|7(M!qnZ0kk15-Z0%5Ga)g9k-s at 3R2h
zW9I+0XTP_;-nHkwN1cbB06H3y0F~MOi)t<Ru+?*9gu;sZ2F5UX#B#TObi{Ut?5cgf
z|F){0=y`DjOwG^VivFmF4!J+<+2 at aBr(POyr`CqwNF5#8h)1DALmg1ATAy at fHvm`4
z?*DtPTO%|ubT#1I_+VvFm=6eoxyK+*)}H+?N&haFekw^nD*jGdU+S-2Zyp_>xLUsg
z!Sr}D+x`lf9D(a{ZO!QoJ`IqTord5Vv#K}Pja%j(<o2Wcow%p#Zd|#`u<YvK8XLB3
zvBPhfy*~hM_kTUujq7lO at I&TK#A1Xne1GsZz(i{m%ihmvu*>cb-VKm~23qZ(s#@*_
zXoY{_+=yrtabL3g?+NY#BzP(coE#{SRGD40uB^hGAKNzDE4XIsMuvMu{F1bId!ntv
z71)DireCgSG^#a`zGDsouoLXG-T!A-9peII8)r~3`4V4jM63%vqar~!W~AA>b|OuP
zm1XS0l?E$b>8AnH02t)ijVsJ?h!iz|y6t{Fcpt8;3Tv!Giv*?y!|J at IjL>}}#mxMV
z?}iS)$;=BLXZ^jRv9L<nn`Su{1fds98(O`2%D`OJ?hekxEC+9pWZ64p|K1?2eg{g5
zup&3s+1a)xG7T1kM#i!`WFtNs_wtsOdmz&Hs at dC)<<fSKFn4vZF5<q+-0#sM$1L}t
z?Y=rZc_+)ZRj|HSo#h~j*mE;tz$>=<GJ^k4DELoBgyrH=povtyKtgm|;m2-1i|wIV
zPE#GXx9n+f2m1!PzGb<ufnpgbX6~hc=>7~gBe$z#S<d!RJB(m&_WlpTaU|PbX=OKo
z<x#<suQz8g7t4<wtdnX&4a{dms*cLYvaKQ)Rd#|(gF6EI-qwdI<Jl`^2ydEYi0+oV
zn7vtVmS0n6hkxlzCvy&vk-$JLqA=|<T$_91Es6NXbf!%im<$L%5naf=kdp{2_{kEz
z!N+ki)?4N+&vQ-xH>ZpQ;vrPJhpXj$f^M&4?#s6OqS9jtj0Tar8Y1p%5hx42oq7xE
zx1fI3bKJk_iEk4Nt;>(73kyGe^Y_`qO6 at HC`nCsmf&h}4S2K^0ek-|hoh4TG2Ci7v
z^Ufsm)|JqQBq)|xQs*Axz^a~B>lH&IeZ8usd$=H`(+Udx$7mg>A)i|_=s$+Im)*;q
z&UU-%*u$VD6SGcchhK8abE;N)M(@kH0+f0!_c2EE@=davdyqfl<e9sl^^BP27p|oz
zJtID|cN*2uxNiUz+x-<;g*;JaCP!&n2m(r~yfQH4909{Qlcx9GygTk$)q6s&>^;G5
z4&K9KkllYi?!ax>4r3l&hP9OE!`aJN-wCt#lep*Gpfl;g1Cy+HNw4iYf}NPu8fi<!
zxMMts4j%q3X-!O3%uc>cAPlkW^<q6|ea|2gVL70rM&$p<lSt3Ixmb7bkc7|`e#*Ht
zx4zifqI&ZI+6ZoEzQ_4Sup7;d`fQ!QzPL_o-dN9f{mi!?Ju^RKJ+JvP-yC}9_aaY1
zJF!6={yC4g;vT!l;V1Y#pHagP=lId{+=g-Z8#_n&U`IK8=gx;m_gg*t{Ve>P*>?yl
zBl&oYoZ at N7mfMn;ebb;lG6yXRZ2O~R2}JnouD7dRQ;F;lFiMid{`O%%?zq8*zk-3U
zG;R|SbLa(HjK?$hPc)Z=wcJ<)ZOZUMhdHs)0DMpcUODfX`*YiUO*GL1^3WDy*Y}Jw
zjki$q3Lg3{aPmz)A0qB8brgh#jsp%I9{L)RWGs5acaM`aGnMsIx+uoR8S<^ByPuE$
zH0pN$-e5Nfsg-qHe=Xfu|G)XhZBP~a6XzRejLSFn^2tqk26 at JAZa$H3a9349lVPif
zJuEi9f64g<Pc~GhVY|nX0z}+bhD#}aMzZT at _x&4ZWrP+i3v&>AoL8~_%Wclsl*6ie
zwNT3Oe?-c0Z^V6(h+-N2P3GTt!hy^h35P|o6*-4YIDU$y<8%^^nGts+QZ;C8AE5=8
za*h#L1-q&pAk^RvP|mTP)}=pZ&hZ2}FCAKloa2J^J1Lj at Q1gvPM)Qr4Q_D9doJzhi
zLaL*H*DdzPgLGdY-`Mpkg?269pwY^FW7X;A8~;p<^5z?p=n2m^_S33F`9>$8KTp0f
zj1lVj24$B#-*}83oJzj2_7&3FXui=*D^~t|<N47IXl}2EFtiJ-DBn1cIb(Q^IydYY
zz^Z=0IS&VU<^$zDFBf<JzIgLc_A~zC&y+BF7(dK>Kc-I4v7V#8%)LVfZE<t!_xSwa
zWALy)ets|yS;)9m*X;Xa<p+lf<OgMhkIxSxfRP`(^_P$z!0Lb51!pWIAU~NBsToop
za#q$aa(Dr%lLBv2n3<P5G{x#u!5gb%1=~F#I(s`g-;+3UMp65d at f>3eem;bAAsn`^
zq(gR`RdnDp6PdQN(C)vO8jr>eXBJ|{=5u(wXy`L+-yq*1;9PiIo}T%Em7Ni!l=dPE
zo82-TDB~39c~<ockvEGpe5aOwAK-k at Of=X(M$SSvJdw>#LUg75_-35OA7oVrIB~w;
z at KSl-_L~xMrz3UgrO`+<m53#i9r0*udpePFgalk)*E07<?Ar)4R7`oWM%u%Bg3UO<
z{43ji-L5*q4{yRxn!PJ2{=08l?s4Y6Wmo+w68<etqY3PvYaq0lpZ^z7XE>znn at VWb
z*BCnS9Y0}6%;<{lMRxetPBk`jIDWxlu3hz_u#2BZN!pRQSJ9q6^NQ7<T;RuvoHO03
z!g=;l-ser*_cnJlN|sD3o55l9OCTbg4=bfV;@*ri^)|odHj=d}wf&72&%Z<Y3(7W5
zSiU=wE{yjZ6|}!E!*LMnFX0Ela3-JC-vO#6XJZ6r-=*k0bOXM)eIUFq^{@OCf~cA}
zg+Stlqp-Kxz88vz at 8ZWo^2q^aE_t2xU-UL9WN0f;eUC$+c%N8*t>r$I*FJc~umSeD
zgj85Hn6povun&$#E%%sR^>QTqg4uf*)L8#i*k at m=m0lb4y#pllOz4o6on-enl=~x9
zzrDKu@&I#7%5k=}EeXxuau$|%oNm~3KsPlgl{+;^M=EjVMzH$d3`1Q{3a-!<tkyI3
z(5QZ&XYO=GVtSCd`>^L8{ydgG%r~4lVIyg~C9;9L58Sua<NXxu3X4w-V#}LjPlumk
zzsvP~7kiLYiUNH<PMNj2_-VH9*TutMWZBDuVhD7~Adcnfy_J9X>$)lS!4x=+oIyvv
z#?WU#X}l at u5r4ls)*i*$d>Lnt35 at 2;r{B*WpBrP3x9ZJ~N%VC!j_MoA1JW*Lc}Y3W
zN6T?~czD}}_c6{5CovA6XAd3W3M0SIXP2SPq)nW!<h4t<kX>AEkAKeDqj-!xCJg^w
zVSC(@vj;i}d%%$Uem!C6Z#?E$l#Hd*9qXgbn_HcDi=l2CwzMybrDa^>#>&}CGZ8}C
zHbhk{Y;-)0T at eneUP42bJ<HB+ at _z@_ZhC#}A3l at xWZ{MH!!RG^yAI~z!AN#PWhC2y
zL)jN?_t!WF{spZGh}HCVc=R*`XNY*?#iM3;@aAb;A=^mfP{=L+iqp++fO19X7|3S6
zi9KLl at 3G7VqI4x~Xayy47!SS|gbw!&Fw=V3HW}WoKZ=)MBeaPb^D<M+2iyInUG;`~
z+t{k!Hg0eqAO1Ft$L`;T2!<E$cDSp;31dA6b2+aN=<MtoD5xbs=ik{BT296wF;qHm
z_S0a8R$&bA3-m%vAL`(Dn7^S{hvKLcb{($9+E}_Z9!)!`*7gmT2I3v<sAl3$Ye#!v
zeX64^(4I*q1Fh*mdxsO)6ic?QGftfFg;q^?sLc4jZ}oqa8Apm--&1AA*FG{KTV_1_
zkqM|jIC;W9mKi^rGU01w#@kcAR00T{O0Jk-$j-wib$;IDoxi|4KV(v8)Y18%Nu7Ue
zqVv9DK&msWn=7;)^3^tnjIFdfiMDjKGm(m>6ByOH+|wnC7F`;sT)8&W?qmX?In{Hj
zYc8Ij;kUDInLW3<W^Q$;N<KiR5`5@|2xK>wEL&+{BQ-!6_J+LB?_{X>Zd`8oy2^Z?
zm^#V76Mjg2=yx$xwup;Shii?jAE#?$X<1LvmdU05g;TD<_f=C?;Jbm>6{6!SO8xwI
zIcn-mA{s;j7lzLcx<~mZ`dVCC)?c)+v|>kbLuugFlKRrho(T=5HASl at msTz*4b+!b
zEG#WsSn6LgWkqRay#@%`pC%e8=ZXs-&nvR7FyhI7B!tUdH21*s_M)pxEB>~4VQHYh
zWMOILjtTXpHMdTzFRksF)KI#n==+mPYk@!-w19L%hNV-u{5H`*={pr#O-22AX<a2~
z?UJ;5PmR`Hd1*CHF)AR>ZzL`L^D0)_RI~?XVuBAj1eMJ>J{VQu at jnVautLMw@k3 at C
zG;B$$ft(GRxt;7MX*H5AEz)I!&}Fx;xYH-7d9=A?3c4%b^WE5FbI+W_z2XzfKU>fy
zh!2&xU--GO-{Kt4QTuV8OG<Ya6~8z!$Foth;Ib(<<<($4$r8Ya4#ugF at 6!A+K&)rd
ztrK at l=r8%(;@gWzp8E+$nRXiT-1!0J2}qk3l4m;PcvepGk8r6@{zc?Uj5p|40^>@t
zk)J}b at zHT@2`DzqaX7Us(r`ZaWvgO?ez`Zk6!Ty5<-_ at p?#4YRHs}|A<4dtYzxEqn
zigR8z_F1t(zXBXzigVFq^qGZf5%fcEK&f!w7ggv%d8h<%`79JodQjsh`%&2|@tedg
z_cK`qo%2;ScP$0KA`Mp-TF&JN<l3nUy~HC=_F85&$E#Gc+%?AW^K$p9vYz7~Q at 6S6
zMvjvgjV(`boPUjZ at Dc8tY84uNbPk%Hq4}Fyd+0qV;oY(+Uw=^V08VR_w`73N()@}?
z4>bBof%Y_4^0mJVlYJKd6{+BGu4Hs$0sKLZkNTl%KUe at i8?kbh=AV2W0*}4G^NnkN
z0sNPoj*6Oc4Fa76UUB53(*}H&=I4B!LHj}AT+h;!e9Ztp9}Y|S5$U)TbE))5yh$>l
z*hl3_;Q9Fe68J1_9`SVt?RTJGzV?4#0N-B#pMZ&wkIp>c=N8egctw$78lNf9ep3Pb
zD+Ta_1 at I~ONpC)R<`=-PD1d*d0DgG^zV{Yr|7HQ)hlMVmoNCuo9q;TkqJOh2+}V-b
zvNq8kZwbv$CO5UEoh``(PI{89?TPtuocuV6#^p<wHAicgb*xJ?cP8SE)$xwxI_lf(
z)JB)DjXJ4B!otmhXf)o{6$*uB>q)#7Z+1eVcuOpWhOt&BZN(d#WB6)pY<A{$##&R>
z(&l;5WnnHvTP(G4!J-Z%!-*6%2-QTJ6G<FJh0>1ITpy)A$wWGBp$m~AsB!je98x9P
zI+L+ at BHGg0?nE=~t)I&ztgDtUZFXjdI$IO*#OBs?BAVMzM4e`5o|EZJqS4hvtFhUR
zT310R&UJwrR}^`BDu#nF$$a*l+!Ib~?DK}st5-y;Thpmnb<O)JHxybJi8i#RJ7d_3
zHZIr3Kd;##twZMvnqm(4w~wm)Wai=&S8VA_tVpDtQ>3`WzItK39gU_lYok{5ef(j;
zhJ>@I1GJmq5H-=c<PnWVwY_LIea)e-`Sdl9zCyx7=8JPgi%co3676(S)=B+N5MI_i
zI~ocRj|O;v at CO*2Y}GKYano4xkmzKp5fsT^=H~6LbsqI|Y97*>pNv6)sRAL}H at A%y
z^~2S~Y_5rQ$)-(zR5qbMOyNRG#0cdMr)RHm+)r+=aokScd>r);)k2{K<4(}6tD2hU
zz_A)PEel7Z8`?8GZX$fPccj{4$<dh71aEI%KrTpu#b`^k#XGman-J7$qEV+M)v-C6
zOtf!sTB3<msw363G(OhXPD{;sCFK+56a<|cZJw_S+SaitF;*7M2%)(PX~m&n-`MV?
zw(v+!Q!T#;^yCyo2t~P8g|5bgve~m!i4Co3#1M7nCl<KI<)a>na9dC;8pz3J|7peY
zQzCY%VcbCIc4G03(Rj<o==xY|Qt13IWL=&M*T<S6UmVF*IojEghT<0pe{Q2J1QRYN
zadce*X-8Y4-Dw&Fw__oQBC#N^g8zqe>#%q$6^*s8!;7l5v1F`0o>*I;FIKJP%~3DM
z*7o<|*l=xiDzUyAbG56B&hXM5?KpaLwnR61micg7Y$H#S(qooyGRkOvBi8rOd at S=R
zXK5nQxjfU}j^j=dV#l>xu(-9oHQh3<;prz_VVFaubZvaO(42ZM3?<WzWwExg>4$+s
zSj3rp!>DaeICgApBFVGF)6W5gEf5A}H0#)a<KMBt>~!-=<cyK%I%HNI=>+L?W&7q<
zILGn?euT_p(x{4Skt`y=iX}q}toBx?6;{15(Ts#P)|N(B6r|U@(2f^dN&~+)<mC<l
zW6v&dwNs<NSE7RLA>WOu_6ImR9)Ga_{$2t6EV+;K(x<;@qT<D`DS)>Zz`rVS8W){8
zDf$0P!|7$X!iO}RPH`0ex`tP4_%%crh2*>tAJu+S0sLkSzeH>Q?;1|0JBm)6jD$k;
zL-;8C!2<XsYKTIY06wby^aA)w4WF&G at 6m9b?{gYnqqRR1`+F+%cn&^_Z at q@k)$m(1
zT&F(~`+F)xN5|a)cvx<fsr`I>6yJZ>@N+c$XBz$~4KKkyl?u_R!bj1m*6 at Ia*K7C!
z4PUC^wHp4IhKDu$u*Avy^mo9DuOla_R}Zfgz->ARMxpird=#C%8m{Z}XaT&Aes_i9
z<$J$|2k>0c|Bi-Vs^LG=@XIv(<MK$B=wGhkwHhAK at RbGdq{K;YG!=*zmH*M&>vkFP
zv|lZn8{a4u6|deV%7aKR-mKxe9XDzCUxB33&n^wu_5Ym2Nq#zwQ|*7HwZB5cU()bP
zH2j<LP=w^v{r{YD04Rj({%>ix?*ER4SD}xR=PMc>(C}|*xUT1iG+g)pd1s(A3dy7E
zZK1 at y{{NEJK7>9>p6lt4=TV4`jt^*f0MAtWizw)$c-uz{;P(~4gYrn9=mhXl^e@(M
z-Ty5O*Zu#C8m{~Q-5Rdbf2;uhti+Z7Z-q=$7E=&GAvtxs9MJFpo+<f1Mb3xf9ambz
zb$i{Z;kuvi(Qw@^$0hFd^CEijC;94rK1suMKmVd=&hrzJRmuNWf%*HEoG-+e+RNqA
zI8gwfBIl8}{n;M8QOYsLgI_K2PkV3~c8qD7egbH#<ew(TtN3n~bY>R7FD!sB at Zb+h
zI?Wz at zr>>+e7nTeh2){n8VQgNsVLkLw}v{WR(P$%W%$pvzewUzJvqEa;&R&M at VOF~
zV&?Ew5}zTjif>Zh2RwL_PXIv=o|Jf{2OpI8N?t{u{{Ebbl2_pYi7R;(-XL+M4}}kK
zDx>R_!k?9RoxCbsy%1~g;3d+JnFsev-1gx2$a&J_!S9p!3J-q2#Ff64JbNU*+S7io
z#MgN6PKmGc;Oivb;=xx*T-j6coh$K9Py1SlJ0ARUiFbMMyCtsTrK103iFbS22jsl%
z_25B?-{!$9CBDOhe_zJmogVy2iQnPDe<JZ+9{g#Ef7ydSD{&QXO7Q&C_^3EDOSUKc
zJPp4<!_U=l73ZjZorbG8NBH>~el6-$y!4|2=D1FOvxZ-Sx{`CdhU at a*so}c(U(s-#
zzKVZd`BnV$%Ktr$j!vKc$p95<uhSpqsK9mkizTl7O34w>aJ*v7jdz*EiGD!CZ!Lh|
zSOAwWkCU`j>ekv(mE<A3mu^t};*!IaA5Zn*DlU|Ha1|G(dvFyODm?fac|XI0uaoz3
z+HgGwfGK|{gg-3%k>2z?<gkVZP*-#+eBuGM*Z0?7k~ryyWLE9()Y?~S`0c1uIT>G_
z{#&9sZ%=bg(J$5L2Q*x*S6=#C3&^=$qod2I;)9pY&oy~;Ip5K6T~7Uc=2Yaoseqi_
z1>{t5o8;8<M%}(T{wa;lZ1hq3l*b8N&-EIPDlgPcZYd-(ieITA0a;h`S3R2R!Mo*s
zmxj|ARMF!+%{x_|l at +3|<{&|@Yq&fT;E2jQsQqNwhAzra2$x%V{`AXIKZL8fOb-S%
zoSx<EK{qILQELa?H)%Lk)$fP?O~dC=Ls<qioT}<~7>6|6RE=@HNCrxJOnRf3NM)Xe
zQ+vguNyDj+`aQ>AYdE#1y#$rL8cy_Y;;3Ofrs32+CGjH~KE_X~(_7k{*jl3+XU5{%
zqH3u`GFI&*x*Vf=UCfCY)oasf11IZ1Qyl`yHL1?vCkPu8$t|)0b*siP`sfRr5A`iw
z1HCiUMfub48b7MjdSj<aJ)V;G#wyP{Z82W1^*`cJ^S;mfKrcVZokG>2KaDqhcw!fn
z_q6PsSDp{_W>&cPNu8zOThRPce2|y3a=I6?Y3^O%pZ8Zq at ALL@%phuw>J4$cxax{0
zI-MxuUNWJZ9`9&V__dLQ at IKFp#!{&m1vfDT<7p>^-_G#xN0E?f)%cscShD(LFCXz!
ztTuX8YE<LzArjU2gMf?q>tK10pB7YiraJJ((ou0V(Gp#s!uvhQo9ci>e`xt85{dFW
zMCv4_@?FYFK8BB4^VPLb{}r;oT9c{&$4{gGnmqkKaT@)TdHR3qH2SMNN0*<@iPgB(
zwb1x`^YFj$H2SN2O6Om58vRv1toNtfLdmVJ0brCW={Xy2jr-^eC9XC$;&$9`5|vHr
z<a2d-yjIi#GKnMmQ=X at CKt+~pLi}Yqf|@AP$l3A~nbzf=T!b3Y{Gk2kqc72vX&Y*y
zOqcw3D?nbA-V{vZBCJjU@;bOsR0gDA)Q<8^@Awx1%cuYQCI6#>Ozzt|e#+(Z at xObq
z=%W5^h4 at qc=jBi57 at WUH0r$~lMfoRj$$gjQYNE0n7tY_)zmAFLYs7``b;?oq^4|xH
z_!oKl+vHd%0scMu<<<XQJj%y^x8y${yVCgSm5G=C#b8eSCwlmIO8)1{{_5f#e<eES
z<G;odJ(Qmle|m-C<xju2&c}cEDe_Mh;NO*pKb<Xj`QIb?&lck5zV}J~(hYJr$x20C
z6VMygz4|*M`>Ws2^G^8k>TeDD=hNR#DSwyjNctmLyz-xk`IV1<H at yTz;eY!js{Gr_
zzYP8J@%LXPI^8Y%68{<ac=><50ROU?qNDm9za%qm{9i4=|Gqr@>HNaW|9l8f<M-O{
zj)34O#Sl06R(4a at u<Y-(-+=6|{vJRP at ak_a`sdT%s->a_lO0Ka=i=j)|K$Sm*Ul0h
zz2j2-mHfYx{XNsy_^j-IqvWqHs-L<qL;gdUcl~=^_NO&VFW&J_L4Q7ey%FlW<@oja
ze?D*}zrxQ$e>#eX8;mXIiCfiPJyiGV`pE+P_vGPE=Z31E;(rPH)A-L&4CJ*;^7oEc
z-K*<D*}vFhfWZ66uh`Ka@#gcNC-caE0Xli*Z<qXQ6hV2dl>DnbxU#>xZkGK$&5Ubg
ze=n~3Df|oQPiHxv;Tx-D|A1;JuS$Lee^v7L_V1GYUoTcI#ns#YF7(gme}htgWs)$>
zzf15@{gwS`JYL?!sfC;crAAH+nuqz~AI%Ssh}6y4buqsf7f%sa_3hPPIUeNeKN1l=
M?!)->;_d(c0sSP at YybcN
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..776489caecab5603226222a3d2ac1c938f5501f9
GIT binary patch
literal 187856
zcmeEv3w%_?_5X$th&-}EQKO<nT$LzdmS<L}CXm2g*+3+q)K`dMfoMq5WP>0GXcFso
zO{JE$YVEIBZL2M{R;|THH3;%hTfj%9MJrZR)_~v}pZvdP?#$h at yZ2@{WJzfMdq3IC
z-S3`z=FFLM=ggctGj~~$XJU_(lvJBMQfwF4Qq&igmVCE|@hxAR<=c+#F`x(0{skXO
z*U0p7nLZ)YCuRDSO#dp=r)Bz#Oj~8TR;JI&be&As%k(*!Zjk9lnQoHlW|=-O(-&m=
zqD=oL)4$7fi%hr5bel|HlIhDbeMP3P%Jd&HeGTb$dHzqN|B~lBkiIU at -$43rdHyES
zo$~xGr2moUZzJ6$&)-4%t~`Ga>27%*MEbrwZ$r9Ap6^Bafjr-bbiX|R5a~zq{9~k_
z$n#H;ekRX9M|wb>e}VK%dHxmBujTnSNWYcm2a!^RQ=O;a9~l9ir{Z5vd7g%}mpt!{
zG+mw_g|v at 6?~AmbJnxS*L!R4_X3FycNRO81#~>Xj&yPiVoIF1sX_h=c0qKeI{3N7<
z<oU at +Pm$+?k!H*DQ;`ml=cgfc$n(>Yo*~cAL^@QS=O8^xo}Z0$m^?oR>2P^|F4A0l
zocI*uGX<Zi_~6er0{=$hGYX$8 at VOG7tMI{}Z8ZLk!DlQ!rT9$8X9hm_v*qER3!n4w
zDZ%Gre5T=pKim2EHx8fg;PYL4F2m<?eDG(x0RJw;Cm)|n at VOM9nfTz(R)Bxw at tJ_n
zMfgm{$Ab_4Y=!t&gwI5LCgG#u<HiSnwlbN{LRv1*ua;>A(%JIdE7Lhh=gRYWGOa{<
zjXb|rrd3Gi%kyfaHS)X`>G$M$9nyMyeDZsPOcx-%PM$B6=^~`p%k#xDU4rxmdA=0s
zGI_on>5cOICZvt>ya{QuJpVq at TjaSP=?~<20O_sryankG<@s$$SIF}pA-!Fm{}|~?
zdHz$RKa=NoAiYzb--Yz&_}neO{{rd%;qy!ReHGGs at cEVeelODd@cFg;{u`vf#pizc
z{Q;!E!{_(%`)Z_rz~@2v{f|f=!sk!;JdDpH_~6gB2LB$H=T9JgQl3AB^sn;#X{67{
z^Yt=)PNo}Vx>2T^WV%_V&&%`$nZAhhZ}R-_GTnl7t32N()0dFGEYDw&>8nWpA<tiv
z>2{?5l;{7F=?<i?%kwv6`fsFf%JZEveGBP-<oVk&-G%fWdHyca_vHC*q(OQ9KGHUM
zz6a at EdHw;?ee!%i(hueNM at T=G=bs?`RGxo^^mBQBK&D^F^h=q3CDX5E`i)G#mFYp5
z+Tgx%YD<x651FRQw5LqdWZFxn=}3>lM;#yAPx*3&)^ZMgFV*~CX^ngGw7_+lv$a6a
z(}x1o{DqF8&Q`4 at jYu~3bWlQImKK<luKBAR=^F|inKsR}-`+$PJ;z?t(}8~;N2b=;
znr$DDztcWI+pqaS-O at jdiN~QJorT{6uEeKW=QEJ_T%q`sfX__unShIq6;kNz#I=TC
z)4@~cv%%hUfzHQ4e5w?mS>Q8I^7)RGhg8YR;$I>KIay~giWn?W3~Iq(VLO88%)$gA
z_Y4;1ilG7tL1ej9fpk7gs6f+69u$bWI^biem;fqkwsy8&b at t{5saTEc^De(~oqh0f
zd_f`qLtPJ>7O2nE0u$1M^S(WJ&_0-O&HrZjPd~v=X83dBk|ttfdfmG*e$O~aSw>wS
zya2e6V8xu_>i2?63oa>`;r72;Fx~C{`k4}BIYaY*S_(VWbZPzT+<_vSr{&sQkN?_i
zEdXVfWNNN$_9k0Tl5a9FEfZ-jQm8VsxWxyRZp=^D<)1uM^9MKN!-A>5Yuk;kGi*%L
zS|(&`8z<!JM1_uYx9bCY)2~q{p1|Uvp1_QuT3|6)H)I#PUMu!*E4EMEqQP#Elh2V=
z+`QS|v=i5Q{Lgz(dyviJ$R-OLDx~%V=qvsWZEp1h at O#4`kN<!tXRG!dC}G*Mff^aa
za{H~1A!%;4-y&)<-~;;rY*TS1OCKs&TW~$m<KODZIS|Q}?hE2N2B|29|8H*BH@^O`
zh+M6uHbroInv`uAMdNx+^Y6a=%7QBjt}M8!plsb7``|(<ACvlaUFs!0n_Cy%>~>W-
zvV7NQ{(XWQln;$9%y#=*-7aYAdAEJyYg+S5z9E_ at mbhoptYk}SGzA`5b9QrU!||S+
zFSHxK5Q-Uz6Vl9*Uj9wU#o=yTm}Rp!y at Mvr?cYsa%homl_Uvw4;uvbPH}@1JM1_0&
z at 9CWVYu)~>#VCDK4{+2_Q9o%dc5U#bHvuXFxnSb)f9UZ)tNH(}`QH%Nxf^k7r360_
zww;f1PnVjfa%S6`>LGzDtEgS7R+N}ZT^n6$C)Hynamf>vNG)ov$SB-2fD)s;2GryM
zEoYNnllI$&lI+4pmZYOB{w(_5ctaKhTWfDV8Q-9e;9XFMUQflOOR`+t_}T8jJXp<_
zZd8ZI^^Inq_$n&G-n1Nr_dt$JDF at D={lT7`Z?qe~0mo(b+x~>&;|tY*{ni4|`*%Ax
zQ~r10hv097a+c#)Sk(lPU2&iU_ZK+11Nrh!5zd2d7u+PiVL}gN0?MefNrZGmgmfxC
ztiZpqVMuY#YtDo28zBnG@?GSHFS;y~@TJgyaP7Xq!2+D3(6W7 at d%op+DUIKz*H6g*
zY(r0bGY$WmKeIP|_!XL=$F$5_Cg<XZ9`>f!0r)?&|HU)n+c^b(&**Qd!3aJNG}Ime
z%Jj5M$aDK&ayRZgK+TH(LzJP<0k?li{{tR>(37(^<?rsC=NsQWfK2T--HhvT?%eF(
z(zrIgIMDCBVt>Cp*N1icg4g0F=jLDyl&j?B$}R-1l-=@Up<A1?H8>TpQ9jf%IE(=V
z!Tg^=oPcM<*ChSdLi&CreMtNj<nQ%1wP5-T;qY(VL%OD>D;+J at Fy{E195f0h-(TpM
zrTI5f#p#W1V8S4}fj$=vtnM|6oV&EZ738b*@5>j{efdZ)GKJDi?d)T;)Y5b<@Tg-2
z<rZji+<|nCecxuS<tfKQgtgr5Xr)v%qB-!dunBGLfmF?Zw@$FJ&@nTUDC~cH*7?#$
zn*FRzB-%{Pzkx){`^Y{3t*Wpb4MsB)j#6}5G=G!Mz`s)DU>^Vh=(@m4i8nc@?cab-
z6a4^_(?#+GR*N6Bz`PQ8m3&W2EgC`5nvZg5&3o-ln}xTy!jbRsx4Hd$+m0#@%tzzD
z*LSfyFn_2!a6`7{YSaAh;~smN8oPcT|F=Rw+*qe*Id4$5%Qe??Hyo?2A*&|S#@D55
z{JWc57d~9<{{Rd#!LZ?vZvPvk;Czp3l*8Usf{fjPYGkn>+wIzmEYP0PZA at 9{UKClN
z(b%o!?2c^ykHN*Lzgzl}^fV$6UhgA&Chj!1f1>tLfqlRw`EJ*nzJXLztsnqX!!c-U
zD&~1BuB~sFkNVr8s^=rO{jAqX)q*_Wa0pdyXmV`A<u+}juH$q%hdSrD?MvSfDx_#l
z0fmf~qyDad08cALw4F6)1?jTX0|om3t at PH@-BNS_+8O8e at 6n(gaPhf3P`3tkyBohr
zU-0}BBAd`9+vpOH>%a{!dR+ULp)Uj(=4au;hK-&8ns1NG;qbZLIE6xe at XU?h^tRvp
z9MmH@={60G4q78vE1lYJTSGcz4e|Z-9YzF4jb_{9f0r7#T(ZxZyU+a`wX1B)KQCXS
zh??wilxQ0CJwWN(P&Td}CQ7dK?DntM=;oVE8TmKL-^6Y3oYr{2ZvXzq9{8p4K#IL7
zpUyzsJVFrvi>ilAPPkm%+;Q9METmlKQfP3eSvKFXbOWyv45){kqua74Fx#<E!@aT`
zzj*v_dtC4M&QSf$!1-G9LA0%~vZuw(+qh0<=z62!t>WfgzGH~#E#lJmJUQ<QX^7=4
z4fQck@*5JtkH*GYptlBY2TRg5 at OlTl>`gR&CLL}EKh_bxgcO0At<`Q^PZ^*$aQT(U
zO!a0c3<m;HZB$(?(;X!q|7TQfCA$}XdhnoX65Rd`!OdS&HB!GkP^SAzt$ByN>B}zx
z`v*BZEu)DWnrP}DK`nO(-gk?Z56z at U@9eu>Z`hk|!%u=v3!JTb4^6GUYO?7{jrz5&
zg?aX-p9&7>)&^?Pz;4yhI<7s?(>^$#YIo`B)HZKJ-d|{I-|DHQeCTmG>#x$#?Q8iS
z#$dZsK(uTJ+Hu!MzN0*@F%3Pnz(nx*0M{MNbf>H*Es{9R3#j>N9Og)|H&4K6 at GKOm
z!2Z}k$1Qrx8C)Y=70RXg541JnK619UJtpJ;3)F(Wxi9=w at O0e;6P>~*0HPXdz6vKM
zHS{PIQLh}<$)q~NcobbF=S#Yo8g2PTsxGwsdV_-o5cir+B5>KZ2ah5r3T+-kt+4b>
zbVrm>CDOeh?!RL6%=6vk-+}@B;Cv}~G5VXJZ~IM at tPTC-a82YU{*hPJ{Og1j#d98V
z$YK6i^M6yS-MA+UHXP-O(*cqzZqgkn_r{*UeWKAtYmC9fYSG|Qd%K)Uhr^yz=%_7r
zy<=~ph_&;e^D}9pTFc4eci53T(9=QIJ`1+uyFv at V@M>Xrd*MJmfqWRAh8}b)bwGvT
z>2~KvUwYdY7>sCZ{{y>wUUQvTf0YL`Ef;aSbGtVAj?!Ewklhu)?g}0AG}pJjaq!O`
zWZ1YN)7`i}-9BK7 at c9cNsSkDTqc-I!$8ty*yb8uB?<fBzVRv+g&eB?zIBG=&5CdG-
zuqjX^dM4u_x4NI4a8ddgWI6iB_NE!4Pcj32k{LEFbq4NY584G7%|a;fCF+jsM4q0O
z`yBg`ijEPL8v~R~D!j*kpCHiC9hnv09oed(J2FdlM{?oLFl?7532AwEgmTc(9ibd#
zcVrfIM|8Z&L05_Pxuqx{uC0WWmaVlEX<Fb`Nz~IpZ4wcpO at f=WH`zsZ><SuDyg)-u
zbV|M{_P<x`-_v%q>R%S4VMPaJmv2U~?(LS4_uESzR`nm4s~zml*-Q7xayPmt$A!8m
z_`3AZg`$u0V6p#QVv0`6u7=-h{(lzx(es25ZvQ at N!1ML~N_{F~=d!<2?AnL?)cEf>
z&5z-r$B`#Bg){QA#X0+APk&jK(aS#vTnhbg{`Omj;54l7a)l#H^<Az)rf=ze7rhF%
z8158Ryo(g-37`jO^kb+m`L<E9Xi~&wxP?fjbgGLc#{ncZ>bATmluZwtNXc3BG;Dd>
zxynDGskxjrMkq>8)Eo6z3PZg)UxCp*4E0x3`-Mxk(IuK|`wcH at kE`C0=GwIE at fEUv
z+3*bMHj8xYo8%5$CHjF{<5%dlOoC!WuSJb`S+8Zg8a|#!+WQVkt`8s2qVKo`a5ISR
z?Pt{HW{U=4_o5G|!IpQ0e__5x&jV$zMbkX4_w-(iP??Gy;A*|sqLk|PKSv#rrd{NS
zS+8XlnoYge;-+6juZ7~iMBMx^AP)tm^opQ10nNugx-q1&NU2O^pgv2c?6WL~#KMiJ
zJ_{A7mB8kMKD2I+I=0dmqeF9_<9>0)YB4|v^+CWy at 6QxM#>oCm8|%-|U4se;^=Iyr
z10TIRAUO_Nq4 at QqGMn^g`Ut$qLCrtw&rrDD=!@OBo;-$Smj-o8b%_RZrtH$p-2Ll4
zRHu4VLS34N;q*j51mnxgML%XA?h?IoBh39T0LjmLs9mPsS*>$NvFlymsnYJ<WIS%V
zsYIWmaebzivJM0d at 46fJrZj8{F4VgcGi>Nekf{Vuqdvk4qknKOz6SqFnBE^!{e~TY
zM8DxPoRBY$(8R-3Pr3#o`VF~M?sV2~*h!>toDdaeCvS59zdZgAq%{#P8{y#hMZaMO
z^&3E;$BxJ*{~pnASc-1LL at n4C<mfd#gkA%v+wPB&Gy%N^(tlWgA+h6k-1AZ6_qQU)
z at 3%@bjyZl84zt_G at ApNF-{)y^{5~vd{QfqElWlzr|2SQa2I<y0q#^vDg?s#CvHu;z
zJ+5~9UzcO}VHm at E(CF%ZpaEm}J^C2_6_YXiPLnab9T$@y>`g6q)EK@<jNxY-$`~FI
zPc??e-AuQ&*%;mvn5B>5>E3LjnH7J<M-AbhQBJEZSGEuBjpJDl!siNgOT<uqW8_f&
z?=+OxT)S`BjPd-kR#jidKwfu<dSFB!#(w|}#T>@JMQUUYaT|R{;o%#^FkU!BIgFq8
zp6(DILWw<{9mWSJBjyk>qLIV+{f0xllFq2{`K}=D!eRVi!#_cU_Wa!~LKn>6&8D{0
zdi+k$c+LDBJqL~&aoL-jNCR*^9UH%6fJ@`|HSh58`*Xp+Q4>zS!F>EK$L&waar<h~
z;uSeRbG!E0o1R5E#dtSxC8|vi3(<pvUjP?TfR%I-NL7z0T_qSr(S#-~5IuaS at iE5l
z!%+X87ClrMK8#PPUluWpe}&?#7{_PI2eO*0S3^%vU=I34|Ayl!I5^Nz00WX=raRIL
zQ+8{2xKlQ0jn83>zt7%09`~jk;~$UHV6VtA{?Fmc;DnnXH01Li2+jnV`i|_|R#N=T
z at Xw$QeyU%>$NR at 9zdc;~?d{;kdN9&&ljn`_+npQl at 1)8#8SkGN;kT=Gzdai;{Pt;b
zv at iU2n4}5t+wsNU$2l<OA2nMup1a2kzuUwhSGPeCejkM1m;P0czK{Oz^WOTXR<x{P
z!FNpt-^KGz8V1mS_hr!>hNAC%5ijn7_&c(<H(iRnV+Y^|7yEa+b9TFLJU||iMzS=F
z#Iv(3TwdsJB at f=8N)hG36A^`nEjg6)ran8KdRs-|$%9)&;fGOs*Pj1QWE>tsMhD`@
zK|?V;__?G;=D`Qkcjm!GAbu!$gqgd4^Jatx4;#{&hrr=5M(N`O`8-Mm;&+g5GWFmW
z&@W<0yNTQydGH4Wv6%-SCxQ(SSw0RkeHzf|IQ(=766wb~6NevU;m1!j_v17LEPg*e
zlm at M#IQ;%MxF6pT+$j9`IK;u0$w$_D<h__4IJAiYE5 at r)@pnYJedv}-{}wo#2E~CJ
zAXe{#C7B4m_YD;FOD#$#uc;#A4cpy~`%)Sn4&D*zEOX)AM1Mf}LwZgd`~&_)jALH_
zB*w8cJI17kbGYK)x5G7?`NMxk_(LQ9JrEbbBW~%w_&42UQSonb%BGK^^?+}`b^^Xt
zQ2}4;Q7nahTai^{*f*5|S>%=|?AzW`XbSsc?uy=09P(3Wv#_to-LE^yHIPJwecz#m
z&Tks_?F)a{J at H<8KHZUcFC688Vlzic<6G${zoxb`+))}K-%COvU%mRmLcTl9L%utV
zN|i%i?jM!oq>%5MA_hk54p_)n_(i(4x;Nfi1_i~8_f8`lVa{<peW$T~RJ?cQZvS at f
z94+I$Ld~Y}UNTe_?-g|x?i^*jx7=`!G`Chb$L9gbcrO{aX}ni-4OP51Oa>nBT_rB3
z*?2}sH~JYho+%>_J)XM+G9=P3Qhb<?Z`<Va>G1-OdOl6lgyZsys4yAK4f)0G|DX!H
zRWwf&%-v2+yB`7E1{J`?Y^V2>Kh(#y<QG>!NfgE1*KlfEnT*pEz$p3^q{1 at X7%*yg
zh$!wpUw(1GOA%(#tTnYZY-i^$vh!AU{wQ%E?lj-R-S|OD!%e{o-G7QGFjZc#KfGa>
z|GXAJuo?d%{3peSh5vjSCno;WdOR5w2i6<X$mhplap0L02PQf(IST{(s5tOr5&l!g
zfj<Te?|CPW1C#4AM!sDzo}{M%YCc!^fU=#3$Z|^8IbmbUy(S^y2YZvLvMF7+>JAg3
z`AsM&9<YfiT|05EwcKqyL&cpK9ugJ=7?0cn!b~FOv$}NHbYj;^aYefiQ{~k%l&>Bi
zg-!3G-08VF8MHpVD{O>`$R`aj_fj(n*P4&#H549Z{xos%;n3q#79XZLUNy))G{m%u
z55sfrG#z5*;&SOZPp5K(d(Le2u#`>o+D}Sh6TMKE at SK>*WjrXQNl2tRn(Xz4 at eD;c
z685x|6w05N>Jz<ad7Z@&(`m$;x at w$hHs9;so^cE_e+nY*NpGg_P=E>)t6`>YgS*FV
z)14_PO~i`LN1CL0;~90>NRuv9Bh3pbFT<Itdqjqd at 1!~wgUtctS!uA at N6?GGrf%n$
zKOQ~ni*hiAykUay(dJg7f at Eygm+3>&(`CCY{pxDS(w<)>KM$V~<2fmoUl`*x-CtKx
z8BLy-UL)|P$ftx3QjVIt7UOv-Y7%qDwU(8R<w7{j0&5bdyKA=S1JIqo$<aPQJ^;iK
zf#mgYa+;V3_LOL=$iI1zIW><oO|BJbk#jE=6g1=p7o)L;e=KU+<vWk=J=|c_B2s-3
z?oL7VQsfqk4 at yKQAryCpTPm>sWIf#RS{3)h at bw&G1 at V_SFl*!rgujVX+h5c)E~?<*
zd!cx(5ySQkq6?3w3-Ju%3Pefh!r)>N{Ds-6SU01aMRc=ty3%&&<`LaIo$l;*=xT|s
zR;NpChi)O!E!64g`7rh44EgL$G}J~}5Uj^Zq)vms0~nfrB_rWi0u0(|$g9Tj=R-xo
z86iC>d@&%=5BVuhqMq{Fn`ug?`Sa+gxb{vWrRUM=PF9bk*;KZ0R~B at V#hFC6>oCpR
zbT->V_yPTqOAvpAirVgtk~jhV5fsBX==rp>bzRtZ;dmrOzpuePYGdCIH$5gh8Uj)N
zfr<UXzIQbL|KIp^R6oX}sSQ5Nq(z4kW{w3m4tAauI=8QET^G6^xvkKJR9_)lUp_k@
z#m>>*8Tkxi=b^`B8$>=UlKg$0(N7-J?J#zZ=|zVA2Zqjt&c*XorT2*XJTm!VPMH1a
zbXcF5&@1Fu4Tg|E`Fj`WC-Vr`e^S2A-5*D~{<`n}FPJV{P^@^y8ofZxP)t<G*8IJ(
zz`{3JjjtBt8Tdipq=Uzx%Zl~RZ#3+2WBy(?#j3E_(no8K-qdpRRa0&;NCCN6-jqcX
zE)W=%t=n?kXf&TgF!^oU<D$JIl641Zw}J43+P|cHN&R8fc+&oo_eZz4FH<|#{`IGp
z(FkE(j>yxMPv at hBE4V^5hGIUtXa|4U_9s!h9c}ND^0e=-lKM&NhdL`q^8Ka8s?_rl
z<Gsc`S!`Y=o{eH6ivK;$KT1v6!aQ3%;2S75OlnBOjyqZFM08SKALt#(Pj75Z(e7B6
zNPayM#_#yR`1I8A{Tf>bf+ZE(I1(psOV8#$U>lJ^BKTt`3$b!Guq>Cl#Qm at -Pk!jR
zzc*V8T$$x|z3vM=@AuV)Ka;?(4et;c^`7mx9`gi^&a)@rMS%ZG8?iV^pD*CkLeC!P
z+93T-*XHBeO#NEwL5Jc86juhNy_w?aZ7W01GjzP+w{1^_`rU^14g10499qwK9e8il
zayEqchS!!(FSbe&0|&@Gm<A1}hVqmBwsXV$CMFI;__N75MoYh(#8KmeXWF)f<h1Dj
zXaU2X$mCgR5_LcQxAX6<mInm#^EB61ETEJ-nz^=8$PCXjRLoV}A9&6sfA3EE1>Oo@
zP2G9tl@*uOdCRM+YAVVqtLwdWK3>5jFW+D0W$g(VJRR7pVGp)+T87<K&J?>w?WEPz
zD80SOEha2{<o18-_J8Wh`A at OyYiy@LR at c%Gq2smooBlvwuvL at T&*@`(%`wisMb6eI
zDTZJlaI^;t5l7M1JN{NoAM)h9<w;p9=d*ye2ezTZa`b02u@&8ZtfFmb(^_U`7GuAw
zQ?SSwH!BtZiam$0C6XuQE75S%)>G+t%;P%&8?0cPruTFLV|NPr)!)nQzbf7BuLkq=
zVoWV}#uD>c{<>c;_A<=Gp*3gvrWX*WFHO0^Wvv<>?LiRxfPN6>9eeZnxFG1oKYcz-
zYf9Y{V)ZZa!O(vb7HDGz#ox5G at APc@omh)4e_5;9Ct+Pawtn#ct!)M0oIu`hj}svd
zJFA(-J=nzTI=wRXdvd5UQjv+hX_lyr58eK6H2=rYWwGlMdsBY`TSieF-+t5mqB1_S
zHy=-EphuDOphkO+U=0`rO=yNBrFgcL;&Hw0J4>ua*-6^X!PD_{R0lrKrfdF-XpJ-C
z7A;j{(><<_eFNP&SbYX{VJXW;o|I2TRZuP1-Dp<XV`4FNt=NA9p2E(DDvPKFhO%WO
zq2~$OUuot&4pk3XVj;iaOcjwutN%0IXjNN!qS1%sD3H6Q22<rliQN94b`-+iJQh5H
zm*Ss{zrdZ>{Yrb9SmUr`+d|aOer!#L`bllO-KZb at vH|t8Uuzjgn*iE^K9Gmk5y9%v
z?;p4SHRHaq(*}5AvnFx>%te)*>+$dOU<(>iWw?Lx_4@}-(Cz=slk>jV>w#wU%loIU
zQrtVV|F3h0bF(|p+tX4wAiX%}lc_D^5LoIt0E-TnRYB8BkE0t1OrQ{dKh?eI=fJd#
zh6>GJjA!*XpyIBKH2IK!c`~H$H#Pr2#bO|qrmV$evbLL~{`_0SZP!y0_}3!$Wd-Cu
zJ!Ap>9G)DtEVrMdt;u-)PkO)0xG$jHO|;vAed2a)?c1qsKhOf04=#!zDpS at oHkxd^
zk5`F)%d`xl{S<A%i><39qW#5kF5eP;Lk#T1qHp9P_QjAJve3K>+K*+ew(Se-ai{N#
z at sZ{_ul at p>|I|_k#TomtxLx~wgH_A!I<5hcyrt<jY)8kQhrt&tCmA*DdvP!G3xv^;
zY;Vh;qI{cnB(=98e|?173vXXi+iPFagnzy;R{Qe3u=eHS0((tw`ZpC@<rNOdmhFsv
zK+ge~8$SRWcD=N0Zj8p}s&*P1QQuGQq;^-d>t^jt at H+e^=7pHGGcK!k#t-L2?Yi=q
z<Pt;eOB&jB%l2ip(Z1j!y?sH$wD#?^;AIenxA?^#_p~y1wa;5Or at X>z3;#Nyykeer
zwhm5TRO>ChuF_XAPyeo!*H5o2uk^`F>dOnN7fqd`Hw5y3M0+5-{4(_EY2p^vRA84D
ztc{@!=(WIcp1^|izv6Vc=%2J5OL}z&CS^X2>ZXRwcPad0abWJy;y?}dZhV&}LE0z&
zn}!M)i_o;E(B=u)WaLDTUvwm}Hv5>cZA+H^4!fWH2As2;pMh<|1K5`)zv;7vxy0!L
zIm;W<Z}m-jkndT}mzrBOyZe2QUHg(;JNk<>$sQxB(B`8}qQoBmTb`T`)$X8`YIo4N
zXfB_i at _1U7!J`+_Rw)a!uuYsF6N0`myniN^v7;L_FB=8*1nNN92ZcmYsgsaSg_Vn6
z;rG5lHz!yltf~-xbZ at W%=Y(C3RLDaAguhVMlk9I%2a7gNGBkc<_P6vV(9?1{RiPeC
zXxuYT3rs~=$5 at X`yN#h`#{lA(HjVX1u<zMg-&ie>>2Y11*YE*Z+e~A+x4pTsFK(vB
z_4BZA8|$H}>z~O-jzT-nq~nZs!`YZmXXr-f)9?lsTu-|dXGtturbA_#OR2{{%a}>w
zPZjJufr_En>ou1aV(4=-&`(AT1D*NhG%ZxeXx}r;^k0u2aG_(r$4}QR#stXvbhRLz
zcAZ7HcCEJdi=Mc7mz~h&6zy-$TG5+nDZqTR)}<#Cg at 2Q_?SSTgR`z;4t{!#U>3+w~
zN|+x@<?zskN!s~~v+PZEG>zQ#xxMLkkOspd>LE|UV5m1XU&gE*d<CPNk2L=_t?{k>
zTFw at D4f}1bRGJlu`;WAYo?<oHpk6|Au?oHJ5DJZwd`X2~IwI7+g*?=?!+2{awmjSK
zaoOyR2QgI8a-PQoUUcu?$98)!Eqjg1oK58&s+V^qEkdL6{tHDwd8f+q+S at H}B{&=9
z1-tmm`{Tn{-ZL%An at i=*)64r9<^zfH_R-6GsVwjDq4KWP&~j5J8A|^ACEaSUCG_T{
zr?K%{pkzO~%<y2eeFAoR^p|95t^*D4kpUpT_!Tn#5ENoq{Yh;j<+!DzcArl=(R7_W
zN+OUA90vu$2Fj#P28VQFV)M<o!9(_kVuPh9HqC;ifMdFLenY0cX&!O+pMw4Lpe2BT
zOAZ8UF#S`vAJQS|(oYHQQra~0K*R3fBbZT2{Uod38!^qbz2C1D9#I5mn$l at XtpEAo
zYl7!;YMH2G*tApPe-yj~j;*L+&O41!Zg1M9+>bp7RZQqM+%F;y^cUEV)-n)^d)9u_
z7_urf1kF>#noiK`V=x4RutSID$A+u(5S>S?L5-UNeJJ!JLO_0PzZO8u!LJ=~yIyJ7
zRh;wn)Rx(2P at l+mj3?(?(K(O<QcnO2E&cV7u>!r13Aw>tnA8nDVBN`V#7G-AqN$n-
zZ7$9X-T)mN^@HE5FbPBaUZekB3~lh=X=;Y}{W|^k3!oML`w~>D_<foF`>`}(S^0~Y
zdOHCc5_)@wZc?SUVPqSmw~OfnWi#})8LB%Zy=4o%ovieR{*njvC!1mVCNzj$z=Z}U
z=LUZU4X%hO|6d at WkpKH!{uyKhB>y9H(mnETj7$DYAfS*xhs(c?zL5OKM#>Mn-P|?$
z&w`!Of_k{k&qXx_*U_wSAgCjW+(T2~fuLoT$SRbYkbDDamVELNsuO%@ERau6UV5Q_
zM7!~#NfLJj4W{fj-9)3uC(umLf&SB0gu~!j;XeHoZlk?#>eU{^1F at K&K)FROHugpr
zMoW3todP4p`iN_=pzv#Z^B~+(o|aje!2+D<xm*-07bz;`0P8ezXf<*`2PTxmM=FQo
zsqGTwpx21CTaJ$9Py)uH3=KvOzesEj52_qqrX1FU0 at AwLgH32yOyJR|CKLE6bLvV#
zO;w8nwfih;cdPK_6!g~ouLT>$g*t&b#k!ajv>GJ5W8E-ZR$-V4+MDTRYT=ajrni7e
zGTt|*2La!~Px7}l?TI*(R0z`y_3Rt|Ag^ZT8}@q(=Pt&D*ddsf$>`^*TduX>H6p6h
zF7G-qCk0O?OoYZ>-lPlT)}tFP*jGS0IUdTL(wqV>@Jh<RGe60)J#%#0?kw9a$LvhQ
zmnTjT;|MCWe(-ofa{QAV|G;i=|HwgKa{L2Tn2h(5;~y>VaX<PE$?*?44~&bF;~yG7
zCC5MQjeC>hpXI^@#T>VHc>I|h|4`33IsQ?@&gA$fIsOsP>(s2M<oG8!{z;C1;&|Sb
z9RDQ8KkE5W^7&8l`43I1Nk0G4=dvfC|0JLP#Px(J`TR#rJESK>$>%@G=RdaO{I}%%
zx17lNe#!Z7$@y>1hzA?<pXeDp9w{Z~za{6tiRl_q^9Gai-wxOFljQt2F&!tEod1S9
z&uku_oUIh+6Q<<&CprERPkN8k`ELuO*8j|lcm2;iw*IF!1CL!B*Ds8@{)blkByRnW
zSob4lH>#CDa>>se&0f8c{%x9LuUcDRA0Sr+-GxUVhrBB2(AP&qt_!;UD2PF8B%Xyl
zSR-MwZp37b#21)WZLE{Q1ZUG_A&a9HLt&eVuMVNu#=N+*R+!EY>rIpFW2^_dFI|@N
zOAyDs7R1TRiD}!W<uqON^>$~<8DssEc=eu1c`=LJSP!&8t at k=hFE18Pi1F^3?XG>H
zmjoI03U=|A_mM*=ud&=`P}?ZAexx(&eRioeUlbHZ9b-X=DD%1PmbnEp*-ghgajkP(
zd<f-^WzTbIZoNtUmQel9)YmrkQDyxBstjet;ucZXvF(<1E!sSze!<Qd*Oi3UHBmzl
zxvq)UlC;0B>0`0-$$DMWlbGP&-nym$=Ipiidj;mKTm8Nf>#Edy4ru+8jaDgO{@)fM
zlioikTz^s1^TFQ=Swi?Knhy{98j**<W3HR|J?<~D?&NW5eAK$1yQo%Z-N^)MZuq*H
z!@XYWd8{PS*Gth`xcGV|FY3;)Z_Edz_gV4Z&w-Zs?^SBOlw42sO~mg$wO&fDr+O9I
z<k#aBk~)955?ZhI3)HOfdrZB401XPgZlskvO0TtKlcd+xbRzUR8m5fbdg$w^&{WM!
z$NDnb^v2&hxn)$gYENihTPqZTHEC=;8n%yV*hQ;BXf0Z{Cr5vvruie*q?s+Nnh8aR
z)=S1L&%F>>lt;WvT$RU9MnmPvHp(OV4yrtdu&yp*eje7Gc+`$EVvUa{fIVLPY<<{u
zC`jz}VdItjU-9)-pHt<K{1;F`xSe<1`nKQ3CI1`<DD?jeF8>rI|Fd+$<xkZ5u-N*4
z6Y__z4}0=69YIG!t_J(j=Q;xWmPn0ULx!N7L}o}nXwD^awp>G25?Z!GZ>Nb^F?JeJ
ziIrBn$lp96;ydOeO}6AF&J|-PqR|kmtuDlgp3CZ3xrp(sc$P=Ib?NVx#q#)Ecgk9-
zA`h)e({FTIla_&Ir<m5Hxu~@l<ro=P4sp-PTnfgb4EGv2(8d$(YN}&n^4C=kDKukU
zltH|gw!OOOSPtibu_!|s<q*9lZHQP37PVCEWpns4bGSDxhl=JsO~4_uie9SLNAPQp
zVs%W4p)o0*Ckn)|L!-ooDQ0WQ*zZw`-RSPIH@{2OAI8bv^ae0lCt+EHPxcJEr~xla
zWeefLe|seCw{{oFd0{?kp&M<Lb_fgILS?o$kD>YsU+88RP}D-V7014DitWSW(zcyq
zd*b*{d*REygY|`O?W}K0j_>2&^&>gH=lgvm$M^dFCUAbq at jb<=lH+ at e{d$t)dm6_l
z$M?zceR6!C9N!~8ksRM+N0{XJUhQfVw&zT8e6NqZmuY^vLrrpgpB&%QMmEXuJvA8m
zmYvDx_Xu!d<A0jAkbHjM?xwBAbKT_g`$O8VCi(o{J|Ox0KKcAU`TRcl{66;c<K*~0
zIlfOmzo)KgtNEU?$?<)1d{1K++Alfz{NBbks*N?ipJU(GYP_b%|CM&*p8KIk_HK?Q
z#~lE$lljI;`8dHuy-B%vmxO%)y;5RQHa-|WKjm0XKT&W=PLODF+(JlTwfqJ9qPuq6
zn|=+@({c{}+m_#8>uvx3*8?z3^)ZY%D+-%!o|N4e9Nekq^T|zm)&A^m|N3WWBEQUF
zMo%;am_C(Fxz>tZ_s_2%YHv!T+0g!8`d<C@*;-)Y0TAZtROi>{+nZjXnVSYhp4RwW
zKg~7FVQ;>Mra&l(oA>&T(E^V;Rv=4EmC%fLrs)b{%McDgD(%Mgq&M~&k`-!`;ot<Y
zrTMI~Ji(C>-%pG9eoVx7+M$_W|1l=H(Dy*97AVEL2DbW6(^~o?cYVIECy?!Sc^rB6
zroYi_7<wh3>)D3jGx;D8x`QIsn^1&8)$34Vy$VG}N$7nh>Xj&Xho8gUB0`FIX^7;G
z7aRE;L+OpDDzGBwx#&wH#3BiOeME1!>oa>(1=WXoY06T(Gi3v2PfXljjF&2b3%x at S
ztkkyR^nMU}Yl<-d$2(J+sO)eKTix3Z&@1Eg_lIb%JbUArnA7OVc{c3*AyVKa5D!Jk
z^xzFndG7N)4!k<$D7;5kbA4!U>W%9#)%s#gwJw0251>M4;#}mMgSFJJX^rpU-6>yS
zYUHw`+D at YSFniC#riR@#iwKYNmtx0m_CA%6j>H=hksXylSIAlIDg at iihbv@j_-kZN
zY#X7^-_BX<rq`xKjnCml-B6J`Wxv~%C*LDOud%{B!zB*QeLmhSWN#WE7K?mjZz{s9
zN@(ITXkt7xaiY}3cxXa@%g7d86JO$e6wB;w?0vXGA9yi at AKR8_^lk{URb3y*sssA?
z2--Px1Id-`iK%^z#iY<k`ygGEkS=CQt2iNDS_Mt)g)YjaRh-(cRrGB;*?Jzmv<qa@
z0X>N6`j$7!VY7=_q>FjdE>0DTO<))E^~DI+NV_<zUAySrcESq%{)n)LXLWl(79G&T
z?T61E=zV-<_E1YYSSanmN%tqU5`Iv_9=<2-!FlNRuvXUtvJral_-DhX;aySM`Sp1J
z%qu9c$A5<OX?Xv~oCCrAm>n$FchLLd at E(a;(f$U9VUn<Tj}$@J0zXT@)HAB3dBJ_e
z`?)1npB>zx_!Kv{;(aohDeUn-8~h_udEbb21i4z{THO7M_PgnwW5H3F>MQ8C(zI64
z{}QRB7x*T)9>RYneARMl-2|U}{cXY5gAeRA_%-;b_FL><T%zamJ(<rg!B%hI@%t5y
zS^D*t$?IRlR9ALADNV>(F0X%7WH0>#G?0xK>9I+@^kN+G`aZl+%6L7_ak$&vu5ay4
zO=$UyWeJZ`ozpb<+vo;Blb$V|8k@(zkltQTZ@!iFV)1^Qe>ChO23hW$4O3fuxtZ7&
z5HBmu*`VQl9dI*QwBwiVOKCPgUhIso#rPpxc*J7-ig)ISS`&J8$62leD1j)~5MHk5
z=w707{e%j5ILigy!^aB4qjF_axw0b5b+Rzt4wY+yD%WE)!Cx)A7@^Abb2{nva?#9v
z<%i;|uO}h6sIQB7xh7EMQGMM*C*5AI=8l)Emnzr4`7(_=sgP8z-_l7~xr}uhiMhYx
zvco^4T(}>_3wwmg1`BA#2C6Poys}5fzC&v^6jq{RPTZLWHcQ7&CvJ*PHq$4dg%z!~
z8W#|OXrYaF{nV!i2N0FM;(@gF1cm~1MD7tV6tYJ2!>J)sZ4}*VL#f**`sDP^ADSIO
z8KSYdKAo(rd4gERf&QZZK=2x4CC6{tTW3MJiUM{tuRpT9{$b>`?6Bl at 5_u@<2cul$
zajt9gYdEBKwRuS8`aa9+K_joH4 at +Jjv%F4>TJb?u6P!ikzp%v`0*-!Xk%0Tau1u)E
zZ_Y#$)MSe|B417fey;`3zz at cYdrc|s5Ud3U3m)yR8WFiH5k+s02lXMeK-8#xJXu at V
z+KecY!Ldomj`SN(XC+3I(srWwZ6QNwKg-ooB$17R47I4pM9#O=sY{btF3v@#F<%p)
zz4 at nL<_TO2Pg{{iFRpJ668FI3ED#M<L?7xz=v1C2XxaqL`5?(uB>M#vS)8V~0gHU)
zVwARi at +3Hss$Mo{_9ilwP^UBK!dG!wa2C#roV$Xje_$+V3FZNd;@1nHiaxZU7e`?S
zSz<KE;!M2P$>V=d=lm)x%N-c!i0JU*b*$;ZkMNsLl?JwoN;bNJ;uC{HWGvUoptS8C
z2)d2EH0_6{+wM*IM~{0?x4qQ!#q_(7*wgSOXit0IVSC`j89)LjrM>L1{p+L`dgIIQ
z&wx7=$JOQal@(?6zPiflx#wk9)KufNp~6>LQ=L7hu4aCAbwgEEc4d8bb&W53L3vf>
zY*eKxJ)LP%BTbI&;Ah0A8nU^A(UsM<C3I=qI(Z#N5ylzD9*;VfgN<$ihJEo|(s6f$
za!FUY7(Dc>5+hk6d4)<Dm&SB*U1Rb*q%kwO!u1lL_F+3Y1u%r^KTi2ihVAQKX&+?R
z{@gna=PT3GzRa*a(kJa78MbYGmiGh%;+|)L80lFTB7L^UeJQtO+J1FZ+R9AZj-%3W
zzNSyws!ZEw{nEa++y1ZrKYIY8s|xk2R8}kOw#MFRciU}G^-jb2&(qWHw^LS4c4YNn
zPe3fIoP1nddV9)$`rDd&r+v`h_B7<{Z at U}v^|w6<`TE<o_xYj+Ab!y}Tr~BEDJwE;
zw<D(v+Y87k!*)M%%CN0NP8qg0`>aX@#4jQ-FTFEmXQu6!z0>w&+P3#j!}$~GX^6D$
z>67+KrtJrPpCd?J1Vg2P_$gn~E;230(l;%TpGTq50qVPJt9 at nbI>hOmt?P*3h at __m
z+Ul6%s;#M7bhWp-VxBW^epO{%y>C&Kx2(FRvbw6W+Up!Swbol#PVL2%^7-DPC^j*!
zA2Dj0cW!09&s*o6ZEz~CneDA|PbtkU8#{p-q^Y$<MbVt2vN8oam;dM~-ns4P-dX-N
zF-q4-{spt4*7mg5N&ck`S07gX#SK-5m49L7g2Tyw%!Kl)7zHr3+9cRj8mRPn=hv5^
z4J)hnqW3e~$am6&3Fl=GopE(TwXY%DIdb^O;koCGX%JsWEFCdwc<!j-&K&szE<#+y
zM$ZZ1L~N6$%&=kH+)5bY3gQ?j)0FF{*-{o}rkvETclrwSW$2ng@;Aiz#6eiDJjbIU
zaS&E0&p9?zV*J`F6T0Ol*h-UY?>C`)$^_dgv2>Y|e7j7r0}|u%^+UPo;N{3R!A41p
z=b at QkS4fQKQES4l$ppK at gdc4rK?l#bRbo7kS4{ZrHo?9&;g<;miOj<xF`h at B#JH|J
zCfF>KYkekkx0qmeOKhSplCa5#Bz6hI)|+74O|U&Cn7R?BFn$B&&B3vuCfGQMoxrXw
zF~Me=U<*yKTTQT4CfK7U*d`O~brWpA3D%Pu1RT5^Stc00+&z*m-vpa(g3U9*mY85G
zOtAY*ur(&wize7k6YLWcES(xi99##3Ot4%NjC$yi*UmJ-s!XuuCfG_7?0ysMDHCj~
z3AW1wI}m}Xwm#+h5|8i%y?;(cI!XD1JbZBwf};f=p~8t7nYZ?soRM{NYC%SJW6vJb
z`($JlWMq!dNT1sGVs&b>(Y3Siq2o}ly<5NZkgna{iE9VS_VG|;F6qRzw|3&%O^0|b
z`SqT%eGJe!=`FH;uR#44W at JvvNT1XfKhrhJ4|L?3szb<U)gfH-${}2nF5AbBlt=l2
zj$BjQ!F;G6vl_Ed=ukd43+Js8yMTVsGO}y?WTY3Ma)|zQ`5T?nLG=6Eq3<UdbNXzF
zneiVde>+BS*ZG&ULtiC-Q+-a7XSoIaDExM}{OwiZFKn at Z+L}Vq)~qnvnv42YhT0mE
z{S|rLsdOEVJbaWNn2+<2Z5JAC*HVL>hc{h9j}GXQ4qnbYiJ9qTx(WTfcIcZ-=<jHU
z{!#hc*}7Ol#!V*J>n7O#2uuTyp8a%2Kcuz;dcLj4_>8O{rjF0ZZs|EbW9Y4E1sS<F
z_bSN9YwUe-MoEu<^~uNsQjjqe6rdb0TKuBEHsVzxdHsrbm9)#NFk at DaEvCFC>%8uk
zyqXQUrdr8W2)SBJd0o_3=x4X&^<%xLLe{SnRBp04t-sEg^S?r3qJJ;++OGU}naU5n
z4h8G`C9j`Qn^u&Od2<gfBdalWQbtMYODVeT7G$JreW?y!k+jztdb6xgs)O~&w=g5O
zFuXpYHxGDaV^?W9L>~t=&26KIY{N~qQAoB?n6W%1wHCq<w+QPH{(@wqU8?EmtbLGd
zkERP&wwF+k>YnEE3ES0}e5+D=OfePD-Iw_Flx<_8_)SkRzxxu*?-R-INqe07d#HW=
z70PxuQT$dWkY5SvcbDXsi-tU8FB7fWl#4QUrljVPJx8~8<Ea^)hmZ0DH)C)d;%Rxm
zU6iq^N9w+wh7lHpwV<iDnCAwEo{hZjlWn)KReZOBS!3^;d)=DW(({L at xAh=-lph#|
zd!v1M#63GHV{4Dp5xp$r>9N<e at YKJ^MqZ<E-_b$iWRVw`ManZ%(ma|F{j6zMKkH>)
z?deDPfnFVu=X1;Yvb8JEblDEKC(lAjGb*M$vc6zH2QB3p+O9miV#q^&EK_#Q&ZdgR
zL72k?%QL||5g6IyOxfNy#k5D!zqp9(aY&klJ*F1-urkPO<h5Sr71DROJyKcrOBrR;
z2gLj!*V)tdA?<q_b)?!JiNXj-wf)5cUt at tkZh=2xfj?=1t4L`0&#AV*h6D0js*NV$
zL?5ZPXQDwMskT-Ne60oktOdT#0$*=|KWBk&u)sH3;F~P)%@+9c7WfMm_=^_!-z at OI
zTi`S&Ci+OVZH)$jq}sMw;4fL=FI(WRSm0vh74=)H?H^GX0jajvEbxC?;5#hvH!Scs
zE%3K2 at V71ScP#MtEbyQO-e!UCwZQjT;56+h`bf2X91Q|VwS8)Ve{O+)VS#^Tfq!Fx
zn>L4#Cxx2Js3X;uYJsO&;Jq#Iqb%^g7I=RP+-`vnu)vS8z>l at SkGH^2u)t5Uz)!Zo
zX%1fWk!m~D0zb_HKivX9(*n=2z|Xe8&#}PIwZNSg_y`MJJ%J0?MXGJI1^rkHJkJ6@
z&jLT+0{@N$et`v^Z-EzB;1ewHLJNGN1wP3FcU#~WS>PTEyx0PtYJsaLd1O6Kv!E}v
zz-L(CmssF4E%5JJ;FnwA>IrY8{8w4fms#MmEbyx>@CpmuYk|+Pz~@=ul@|E57I>8f
zUTuM^r{Ix#tFxf at S>O#8_yP-jp#{Fk0$*%_FR{RvTHwnq at S7}fH6tKWKi{{Y_gmlr
z3!Gm46n&)HZnMCDWP$(K0{>|gPNA0`7&ocsIO>@xNs($(vmL@^O10e;#Yd;V+XDZE
z1^!D5e3b<*qLbmm2s!Vyp#QZ6P76k&k5t?J7We}e`0p)nH6tWEk5t=(7W99#!2e`{
zKVpIZ*#iGd6iz*a9<~rYjm_yGizQrrrx+3)dnJCC{#C at F>2xyU-bDXy1b)B7RZl_j
zBeGQ6nkad6{0R&EDGU7RC_D|%??@hX$A{<J8bwcYKzi6hxQai#2;64-NfiAyi6b-{
zcKk!)jxf|_+ad8$5%^AtkB`9L5qNKCFZ_64;EzVhvrphRN8z6cyf~Z*z7>dopsLl-
z&p#CS)DR%gb_l#A3Lh%wDO?<dUnlTsQ8=yO#LVm{{ODc;O^?FM1YQ<}2LwJV3V%)D
z<xzM#;&(RNk|_K_;6qqkNRWZ*DS?OLLNYXMb0JPP#1 at JRDf}^khvGttj}wM8#1 at JR
zDSCQVJj51?3n~0eoD5-cA;src0uRN76#dDF^$uZiA%)ZP$sx8 at qr4DL97p#fd~Fnd
ztH7T%aFuUw#3YB<))~0sf0Mx1N8#TH{5b<x`Cf<E-w at k|DEvc#Z!~a~ZxwE=A+}8h
zuJV0P;G3iHs}VdLVtd}eRlctaJQNpF_$32~{zZdc<-1Mbe=~5Eujgo@|9cd^QQ%t)
zT=6eBhUi0aA%#CF at NEXY%6AOno<nS*xRA>CPXd40pjY at XtQ#0&d&R&NpZf(KiVG=v
z$8kg-iVG=xmB2%Bp^1`X%JDYaJ+|kK_C%f33VgHrYEviM1+Hed*bICUCK23Y+o;G4
z{4wA|Y at xW*B{JXRP9XYkqUak0z99;K3-}OQC{CsL6r4zSC{CsDdjuYeQz<;<B%*)I
z(5Gq{%YolxdoC*9rv?4nQS_$_B0ld#;md*FV_P4^=Pg11o<Wb|h-1OYdTihLL7prH
zKExI at U`5~W6v9LCE`{GC at V!y=V+Irbz9 at XNz(0(_XJixo$5HrhfrsK<D&NJY68+~<
z^ch14{~`*%OW<Ec;pd!2^r3i{;@>LpgHiM)4x$gmyA=J~0#7ycukf1Fi9Rg~?{Nm<
zy`%7-2>hrh{PZ)4zHb!1M&SLU at WP=)Z;!%X6L=`zrR2OOhv-A`E`@(7 at MEL+w46os
zp?H^~KjCb`L-8(!uNHVH-lgyhhY@`!-lgy at 0uRNz6n^zNL?4QGDf|P0pB5$Ojl+rl
z^eBAbxrCn?h2JmmoG5&BF40qORzFm}n+1MO6n>?X=+8Cq7J1$8fS=kU-RO6zc6$Ti
zws#GBRFgRV1RO3V>iE)v|D+L=uj&o!^DXJ(l@|D00v~PUtK=L$lK4d9iv^w+MZd`c
zKXw%H3B}D6|JfG!BLcr5ihs&z;uDQe6?iCarug4&fd>U1ikm6=F=L2-G~OuiNrpTD
zSrc0Y9*U1C{N%C3r#OoK8i9x6U5frM0uRNt6y7tB_=MtD3ZEwMP at GEP_Xs=`k5c#t
z0uRNVlwUs0Mf_(Oa$X?IbvJM`d;5c+55=Pt%}#-b;!%pvrRNcUufbo@|3Kh#3|!Ht
zoKN(jc+ at dco>2m?jH3U&z^^s%fs+1BfrsKzivOkKh<_*^^{S+Aw7~x;@KBuUR7wAp
z1wQFJ#6J|jnlI at WTHp@|yupxPm3N=OL-8vm{~VkQv4!GSihi}gL-8v`f7*paABtZo
z`bvR^;#Z1(r at +-{)@D0f%Kvyi^(%TA?UfSvfWUi1;ROYh?{Y<E at Hufj@kxoIuK+&8
z7K($Ze8){7dJLK6p%^v;A7Tr|#}xflg+zZ)ks1BK-vS?E`@VsTIga3&S7dJI7h2%7
z&{Ns4l8Mp^;6p?-Lq}EQ=ooZ#hu8u}zRmLN7r at Q<{94er81z4unVdX{%JsE at tCJew
zLs+~{mFpXUhvIdL&kY*!`AS`G=;vkNLu{cqp3>|Tx6O7mo97_r9YUu1R2|>nTNjY#
zJ<;)VNx$5#f2a9JbbKlC)^qglG!KN1=@;pI9y(tCPV<B4_=Ci22kYNyo(>&plXd##
z=pWHR^JVC`68I2XDBgITEMdCGT+en3{6Y)-MhpB;z=yE7rK<Ni#e|3AmNb`;j`hIr
zF=p6@#xMOb5IEKLzELkjb#mKxf!|~M(!kZp!vg<8eKqQ_?^L2c5QWbMZf0-wz=zmE
z at lqw{Ho+$~>b^U%gyh^~@K<uq0Y1dG%D@$$4Z!cQrA6@>a53 at OZO|(|Wx$7Evj|yy
zF{hKxp9X%9?OOv^C+X9O&u8kZm?KN{Gk_1V{l>s)E+QR|2>K5UT;+RE&_7_{ivG${
z;{TC>EBXh353z;fu8O|*bfW(xioO*15L+njN^=kC_yKUUdikT^vp<T at R~CFm%rNJ3
znFZcxfp4_HKeE8Tu)vEk;594PH5T}Tz=yCnt!mHbUrKl=POI=UW)dEX(<=N;fj at 2N
zP2oTIuDLvq0YBCDf<d3FSBvd^fxl?rsw}5mX3nP&_^GzP8}w+t#Bsa8w-|Vq#CKZo
zIqGuav(2E_B>fD5zhvNw&piTv#lRK)UV*=A;ELXL1 at V8)z!iP7z_%N?qTeR)e;K%<
zKlw`Hv%|m at eWk$PFmOfxXMz9Qz!iPURm5kffh+oAfxl(oivCW4zir at fE8=)p;JXZ5
z(T^;%*|H@~SW at h9Pa9rQTWc%3Y)YvwuWZ`YWxhJE7u!1c#+H>;EL`YxI!Ex`XWSK~
zKBu!{UU?k|%PW2L?uw$)a{MbQD)o)3Ew8L|Pc9u at HpL}2qnKY_cP(~@!0K#o9T7Nl
z%Sydf-U^?y-sdhYD5Gnty!G{NTtaLJDjG4OthmfOzqYEp!do`4vf5YHP+j at G2Cw^~
zX_HHRBb>FB-U{z^mG#~-V<Vh0U#V}juc5XIL{o`ZQK_fQeG!BbxsFxkD#Jo@?1NEL
zCo>;0()dO23je*ZcIx!9;g$7u<->DHLG5p{F~T{%xU8_UzP8*~F|W)`MV^Ba6is8g
z7+vZs_j!w^l$MPxDffY*x at dSsP1Wo;xQ{jEKB2r~o_BVl@}Lq-UsUUz?ydJFz680P
zyH;L5o$M!3qK7ee*OwPmFPb_hQOrkh-IIb!ud75Q$H{(@XX^L at Pgz-g!_{T(vcqLZ
zw&9)$PWm^3{*9!6qv+pg`j<!l#?rrd47vT?Ues<Yg`<lW#9_BFn8~e462okYzE4YH
zn8{6962dIBLry~285@=)gxhGjeM at 4P$-P?QV>WsUHW8{<w57f=3*Z~5b(XFqMw2^+
z?nQTDQON?~JgD6_<K at iN9Y|TNug<-oWa0wQiwj1v3)*kobwMYL4r{vOu>Rb_hWYas
z8O}g7dG&5jWo}W?XtNEJT(bo|oL^DN<SC^i#NJ93-dbN#3GKAxGIn1o>O|(w?#z5d
zcV-^0cGZ$~gVMV+>u{BKY1WYn*Bj_=QFs?-9jWlckoCy%mDS~Si>B5_v at NVv87)1S
zGk31n=g~^ts#S4zs#WP|&eIZ>b9{}dDt31mnbdffWF28-ha>BFs#<p7y1~eJ&RuR~
zGV?B}>2QBNx+}AeFtWpubv#BUd#K%DWIX3CH!_)dcNke$W*uQ<ha>BFj7*MPy1~eJ
z&RuR~GV|^*vaZZJ!pOQZ>+nvnF?jC=jdyL{;VM7GyeGFmFpse{v5{%sJQZ-HakL5?
zU=STEtSd=Jq7N-LJI)hh`03?y#W&}u at BzLY+UucB5q)-+EhrjWil9dMTyN*I8#$o{
zk#iMW9(~yIi7pm(Lb@<JvK{N}rgY9KM$5bZa2Z9eyIu{?^hXehHG;8<c|3;DSyf4I
zY^kcw@|Ru8!^U5Ziw+xq8FRMe-?{e1<*uKhkMm6psk6$L8>d?e-%0+Vu(xFnol}o<
z#AV*P8W9w&o?UOMqF5O?M;Lceae1xNSy^50t at DLqvm@e*I)sV}DHd=aQ#55p6#~v>
zqsk`Em{L^gDuWl84P<^C-XNB6PFI*e5DjKM3jxI~RUS!o*i;ohfQ?%yp{m0sRCw>?
z2oWm0tEfV?@t9O+^%TpL;*_N;4Jl5My3&k}2$3R<NDn_B8AcSBEM03vaf#HmM%0BO
z#S<BkeW(}~ba-nm!l>gDDIv8Mvt^7=mcy%_a2KndfyAh>gs8`|gB0#yyHuojj9Lyn
zVyNiw)>?#7$0t%kYAvQw$0y6-RZoOb$0t%k)Dy2!ccn=27_}U&A4x_XpGXO*wU|a7
zpDbN!)bWXw5cR}s)Lki3JVq^}bw`p>$0t%kYAvQw$0tjd8g+akB}6^(8ugJNQn<S}
zo=wCs?1ZQ(mKDV-OjnvwyfP(3L2=qqhh&N|eKp3jD-}y99D#|}g_jPm^UfJwRyKFx
zLV6KieN8pq^Xpqwwt!}IProEaR#9&NjXe!L#>8zIIxci3auzt1w9}HwK3QTUQ&Y+l
zBAH^A5S__Ur?8Gr>r63Agk+&mYC>dV>=GfJaRVnrxDdBQ$Y#vMPl&b2Zd_vS1L-~!
zqBQmRHL;TACZg?7I!g#M)kG$QnYu$0!b~+piC`AG1rouH-R+5BrzT4lN at g+U4XE75
zVzvi8S&PS{V)d*P&!QryQ?iY3CU#l9ue{>gvWj`vmdz=ztRlx4Lwvo*kVxTGAEbk#
z#~~?&xDzX>9yCw5q at v|ZsHCzjO|+!)Mogrr#=YHPS=*nrCD(n$<>n-<^sfn7BPR1r
z2rm=4+Fx&Gl6m_V$Q)wa`%X6LNK8#r0ry1OgW}m?bLg<}vJ;<B;U&+*FTCtUBvg3G
zv%|u-e<O~-0wS8MA}jVHI_H*z^^O26C!C32qvr}zoI{_yCkRX at Elw#NQ-;}+p=pH@
z;1mDGR#cVO*VoK3Tl^Snz5}1PNy|MuIR#HyeiWk^18+mYy7B#wDwwKSb+ryzL%N0k
zFKbBN!-uRPz2oq|tRdMoiq=pfe6 at 2dHWsP#mRD8PRFvuS{M;9b-9j*9&xO!hb%WUQ
z1UsKp*VN4~uL^AkQUbElv9w&A_5`ub_s*}VU4$Na^>s9j54)1&mX-PD)zw^AR^_dp
z>zh~Rt*fi4E16tDy>>2pn5&P`cCgjn*g9p at Z10@%hALm#Z0w-o^SVn%(l#g9Gi3}?
z^P<r&aTIM#S!te8v at m%~Iv^n=A&JZ-p<m*VWMrAB4nxWFYZlO?`500-oopGbJ}p1o
z<>+3_Y_4QcQKEc|iKj!6Bi#<Og;<4(C<4{=2uuCaFLCI1L|LiW^FSE!q3AWbCm?h?
z!s;<zg7s^XecU=8HQrlYF^_g6DysI?EfTkm(^8 at IOB@PymI<TR4K_ at nBb;^Kxs~<U
z<A?TGLW5FST~%3)?SMk90k#2hT1ge#>PK{DN1!;^AL6Drad1AgZHD4t9JUEiygLka
zlyAJ73lZNVW=pM6 at O%h9Nv|h2)GDj3sfRs|)&1Fg+5`-K#@GZ5j;5l{JKtOFD+z<E
zv1dye_5`Dr8J^E&Y at wyQ)UxvG+3>PgmsgcnS9q_sxE3A8X{9vjJdAZ^b<7-D3yMqm
z&Mq+<RAcj$DdqFMv>RF1xzzSYVH6_tc^CSew90I1-89*7=p!>3MHc(PU at SH=ycG1j
zES7)dLm|;qS1cpFQ_RPRaXzu6&1pI+l=(_J6Bn8Q#u#)S9>y5FMl+sKeO)DPiD};Y
zhWT;yX4*FfIWw3x2TGJNNS28=2FV!45aZTtugIbBc>?bM#x&8zW~@6`a3l7bz;cIp
zCc4-m&Ydf at 5ofWs@J_c<YQA<SB~_#O!ziiBqLY%UQT1VzRAmucQn{7dh<3J8bImWm
z)>~TZt*DPA>U7=97%+LL7>$yY(-|p3)OMcEG1%3!&NtcXt)13TU0qo{S3Wj0wm{Xl
z{dA6<SXo_JKQD@~<9n^T(49k1iS`nmHlHF8yey;8iIBUCijEH7ZPZrpt3!lBToEB&
zUMY5oD!<xWRWuFGrQ_Sbf+xCE2&2e2NX^{Jiij{sN4J#4cCp1}v$3UWO}#gsN3kl{
zYP7+6s4RSusBoNz8nYf18M78ZyfJHDOL_CFD(mWfi>kcF*ieZtAG!+R*#hAI2Em2P
z|L+rAc`w~w4%IkDMjD3z;x`WChRmy^9Ud^j&pFmzUFoaDOuy^BrP!Fce15&S52lyK
zFr~<00&dRf?nAidk}0?cDJWWgb>#vlVtZxckxZEn8*gGTIj4pi(wNf37&aKUD_$!R
zhnyYb7G461)7DoWjzXxJ5{W267_V4W9YY;(W0+}yQAq++8^)`%a<N`mOw){2M$W6V
za<Lvlr{&_jIx83J3wByA&a1O>v7TS2<>I_LDVJ)}6Jq$B8Ct{gvf73^Z`p#%I$uM1
z6*kmQmz(O-3qBsg=j(&|q29YdIK3 at O;kAtZPmI2i;q(?MMZbpO4>S5_7(ScPs~4eA
zzFvkG;G7P^AHhfQ*BDN3qf)q^;g2%<6%3!t=+zrPdV+Qq!|jwIj!67W3w)9VKGy>O
zz6JgxhL2(L{FULCFr41!qvWKwY$-i#w!n|40^y+KQ+yP?!vgm*{2Ipp#|-EB?qxW=
z4NUPrJ&khJ^QE_bDg0uF(_6n3{zHay{>SwS@!|NL7WfEh=p+`sMN086V)!i#pTTfH
z!(V3j4;a2v;#56<#z*n at 9c3=(YZiE}e6btJ$?Ih`!+Ck%w7_%vn&<lqhI9VEVK}|*
zO3D8$!*6AHntUG;$w_a!QuL=Wob%7Oz!zBHKeoWf_Yake*ViQyC;ijg^OQUb817;C
zZH&+53}2lQ;?L`M3&UqHdU`K09i#_dFM0BPMI_H-_$Yb4BXOdqcYP^*Jj40 at -pX)p
zw_h;+yj<#~J&}4?CtrX=`CiHLeUsr_pFxIm`@ebs7~mj2Tt77ukF@{ej~3)n`nlBt
z-@|ZjKUc{2Ek)}2HVgbs3%qn-NS-kM4CnU0km20^A7?nX|JNAK`F~=84>;Cbo{1KC
zg#|wNxDX#+kGmMo>#MhXUmNL at +j9=Xxjk1)Jkp-)89le>g$(ER{1L;sJ*UYR{*XLe
z{$m-=?eND8=jB=@@kl!ydqPM*yj(xGz&~L)uSegB=6rr<f$z7#XP*?}!}-r=IJZMT
z!?_*4$Z&3l?=zh9?>)#o-!T?=sRiES<PaZTU-=BbinTMBOPuP3w^sp%)7wo|d-#+E
ze)lP%e0jY;!*FiTZ!w(L`x)}Rgpu}qw#3N}xjpAHoZIuC7|!i^J;S+vUS>GA=Zmw=
z%XO8+BklPUM$gMN^VAR at jz7k5ZV#h|nA6X-z#q22&p0i_hx0#|;oP1lGo0IV3&XiR
z|DNHT|0WCkTMPUohq;`a8P4l#tHeqF at 8hHFbM@&VKHLtsFr3 at rhYaWSk|*DTN&Lh5
z2@;RA!|@E~cKBC at b35G1a9*x|F`V1sch590*BptHoPWkg>7n<~5Irx~5)1rIhVy##
z<e2kWW`S?9z$cs);uFT7;oJ`AF`V1s0}SVOxRK$U|1JysxU<dW8EJv<WH_&{++iU;
zlUX}Cj^R at nt}&e6R;}u5I>V<id=JC9J=@O-<;(5a$#7op3nU(C&x;v7Z&#NyoZEBS
z at KC<op0gOv^)r;=+ at 4o6oR{k<iAUP=rRRq7<>h+P0zV-)M9=NvZiaI{TP*MsoFP7(
zeg(rh|2rAZ?fK6P=l1*+!?``5Fd~#M=Rd{*ueQJg7Wm|mA^yC+?qv8VW`}DSPO%zg
zw=Xc9-ioa7w;4W`;XOx%^1YqmgBb2&_%Md^`>T-QMT~wr!})zz#qddtehI_*{kW3h
zZbp9}!})#s6vNMF^e-};-U6-kvzOuDVYqK}NI(3(xQpTZet(AH+&+7a(fLH)?|mg6
z>Ax}=&hPj1{vmm|9Zq56++Tr2mFuzyyqA8tZB7I(n^Rj|1U^>M?>N>x-zGUup>k2a
znxtP5flrh8-4VE=zuyAiWYMo4C;Nvg-=9kUS_HmI;?pDW=OjKW0^cU_6|A2Vrf1n7
zQ2G8x(q9&V?~(YN2z&r+i;lVo{A7vW&- at zC_g3aFNYBG1{T&f_p2Y8qz$unN$3qb~
z*(e=-S^L2A9mMRG^1WWt4~@Xpd(=lo;15Xp{0RKd5|^(v7xC(Mz+c(zF(ecY((}9c
zC|p*Tz~5uIvR|U#&2Y~DeTH-XZ4Br9xjdXdmuD=lrGxV2@=Oq at jwj{$-_Xx~)Ty#V
zZa>^kxczWD;r7Grgximmope{eA9rDSrQ3;m&XUCS=Zr}`B=x}ka!2h!K1LIM>LmEy
ze$qdwei`*YIsf_c_eea+N4LYIeslw|vY$!|`?=l%@2FiR`6u<y+pEKEKiSM~c^u|E
zhVyYcr|0pOc<6b&B_4Vn--w5v$2Y9#<*+-dKQ^9~m+QaG0{^82E{FS3{EIE<vl-6g
zOIGr8dLCbjhn~lmtmykld1&0npVOVl at M8E`HC~8^ergBlFYX|HDWhK}<s|>k<5zDn
zoYyb)8R#JTOBkPKiIX1wf{!XM#meX)`b!!8(*o6Tp6^Qx=lNzaK0Mz$E%N<8M$hxT
zjq$h2m-DBw4;>``Wla7I#-Gbcu}V53^|?gik@~rj(Q`Si?1Yai`MjOkdbXlp$MNo}
z-+1Kb&#$@s9KTzZD^j2TVmPm_uNcnj>o}(8c<O7hMSU%2e0Y8NSiU^o%k7-wXD~k3
z;9T7=oZiYlx%`Q`FVr}K?6Zc+b2BR!*Yn>bPV}{)SL29RE$AuMK?l)q#7C7^)feGk
zFno~I58>Zq@;onbvIj2D>x`aapNju}hJVTU4<N=kDB<_Z6B3W)|01K`gliQ4oeZb4
zC_E(<UvSXRbxfWYBp%8C4Mx8i*C;+8GW=_XA59E!5dV6{e_fh at 1<v(3u$PY0W!!$g
zk~s0<`nkBbIsKCoCwgAq0qN%SizQC<T>fnq^amI|ot3MP?AVd~93NzX54XVc89tx!
z_cNT^)twS2`MEyZEa<;t^jx3CvO$cj_bVkHsn0)J&_BcIxjvuntLvZmaR0kb;*>9M
zuij_)7^a65c_T;i=_T<<J{MZhYZmln7WA_%=$A5j9<TTTqc3Fg-_G#y4F4s=x&1%M
za37=py9LhM$pwr)o_6v&&`Y+qc-qP5QD>?h;O*o$4DU=kc^;FWx0By8{+($jUtoNA
zJ9&`dooOduWPEr#NoyjM-r{K|xjy4*C%Jy&X(xGk<7p?k{Qr&ZB-dv=?IhP{Jnbac
zXFTmB*JrYw)Z><2*-kEE_hUTmBt2X1NISWnwFA7J{Dk41X(vZB`FT6}8ROrXcJevK
zhqsfTGrTkH<Oarvx044L9#1>T^%+k)$@LRYJITu%Pdmxw|8Hz3xjy4*C%Hc3X(zcp
z<7p?kK9lWa*SC{PSUVF>J9$F~+sU`s{m$FTV_CkPX(umWe0V!~9K$=)PX33<&)do4
z8UN0-lW#Nryq%;NOGo;XT%Yl at lUzUXw3EEN@wAg%{{O~ylIt^`c9QEeo_3P!GoE&m
z>oeI-c6~d^pQpsrPA<d!8>>J0ChmPYDDFYAO?AJ2Kp+mn|BjEs)%;DuQ&{^j0_SuP
z&g0nsk$7bM=MzT11=lG4>BImBB|RAb9EOL*MI|1||8+(`k at 4Bj@KlBmVDZK)82*IB
zBl*9`=(j>vCI3!__hfuhhyf1Dp2tNWmUtxp^^Bh8<SPE#8J@=Yf5C7b7yY;w<*Mh)
z>#NWr&N-RIExG>hXYolMM>>hc{kT5A$Kr&Xeg~uH`f;+jAE*C0i~I5NerQ3T#o~KB
zUV4 at VKF$K4Vu8=H!0Q;!<Eu|H{1R4QFG!s1f!E8)@`jDHhhY*YdR{NfEa-1z^t at i)
zvY`Kv(erwl(4VYFf3C;nFO at jS!|NrGA;^WD^LXq^iBq{QWqSC%1^q)7^sg~|4CC{G
z1)q- at J<qp~3}}-4Tu!^hBjr59g8pm^`nimr$8YNyJ&)fmX83qku3H$+?~D5w&f~X#
zvA`uP>V-cykH?SDvs!5$mhoHeM_z+YReSY;ZVn>f?F{FBq%SLPXZ*-N8Gr6a`Z4~U
z at go;8KHQJ=XLx7)2tC_XdgFeCp1CW$Gk#<T<Inwwo$-&ykMR16$B%IR$Kyx1KI8Et
zTtD&n5nkT^B|pOJB_2P*>m?pP!s{g-Kf>!J9zVkCCFw`>@x_tsNBDfIc>G8s+L?~{
zk=I#!#r?<|4Cj6%leJ@=@gx6c{J9^Yyi_~f89y?P@!@{tXoh#jkB~1`a&kX%4CCJ!
zKeChY=YC`$;~$S7;q?`dAL06s$B%G*#^Xo0e&X>XyuANQeuURcJbr}NOFVvr*GoKp
zgx5<veuURc(vKXOeq<)v5ISg_MRRCXd$mNMdc0y4&J}*2#EJeUM*ld&`S?_||3uHn
zO|x+=9fZ at IM#Z1TP;?N!l;KSbZ(#UJhF3HEK87!3_ at fM`IhHElEfS}3=v0P(%IJBy
zMiC*7Ncwz+-;8UOpDmR*m5cLH`%Kc$FXN-+sb+j=PO`#RFuWI&^I?YbxZm{_akC$?
z_}D9q|2+)v&G at fl`1ct811b=X$a4Lk#7QiT(f^6z=?s6F;XLklyPQuL$^SQOp5d#=
zL+R&nh9AZF?_hWx!|#%Dxk&yGvUuG;82_~l at 5A`K&G34Lzs%x$-(~pw44=vHZyC<-
zmkBIh$Lsx<7V*84SiFwc<8>DCx{nz>ua~JTZpP)|aWk&xGo`_kJ~{op5+{4$dOK)A
ze-?{(O=tSKzyhCUfzPqPueZQ&WjK!??qE2-f8Uchm5bNQBo^=D^raFfdR{M&SkOPi
z=y|;iX7MG?U&X<QKd+a71^v$?9$7EF27mz$!g*Y-uf(Z-c^ogtf_}IK{lymams`*;
zvY=mTL4UUe{XG`+e`h$i+lfb$7WDRQ470;}hI9HGEbxaVPWt3=$W}(r<B-oYoW~(w
zV>r)up9TJn1wL4A91wY*4r4g^V%4q+CEy>)|4V#U;Ws+ydO8%Y{IPsYVc at q&dgTul
z{St|1>TC at 9tr8y?fs;&hWa)`Pzeau^6oJ1e>1FdQ<h>1;DwoQa%8}3Tvn3zGxgJI{
zobxHLz%_<*`<cdY&ZmmuynYujoXhzmhI2W8%5a|VDu(lXf5&jn|2c+p{#zK%`A}?=
z4$>RP|0B at o`)CitIX%raq9d|iXpEz9E)U&P3g>*zw7`cmoa-l#;hYcMgNi at bkJ`^B
z(oW_wdd`RX28s{IY0ja-xjekz%jti}=(#)(Fr4e>5r%U<&sg9a7|!L9-2`#pc|fD?
zqZ4)U1<vPN#zSAj_{2lMpo8?(#wa;uH&EEsN`_1EZGdbKsxK at h{Ac*5+6&db5&jeU
z7jY1Dmj(SDj9&30=%)-<><F^r^K(Yu89u*A5T9Qrh|fI<;&X3;`20FSe101TA8uFN
z9<rrD5DRsW6U6D&T2#WhJ)F++ReqBoH8v;uZ2E_T at Q=iq{*Uv&oAKfNPi8phui9AR
zl&!N9{6CcElyLrP%`D-Z|EU)Ia~YmZ7vUgipE%S1asI0qJ?DQK!@2zDGCW)IB<KTq
zP6_A#D at M=x4`w*$Ka%0uk|#lX<vAsszlv!P&iUssKAitK49}*Ea1f+?E`8_xf5YfG
z|Fap+`43}wHZj9NP*9xd|2Y5q89nE(d^BCb`8yeXw$4uQ-zCp^LZpLC=&7G6Ll=U4
zl)Q*=^4aRp<O$)*M-X%c!&M)Wpjw8 at A-h1D7_Q1r&>akyLw13zX1MZw1hq0;4#5RN
zu^Ku^&VJ%d|F>J76E26O0{NQZawsVfiY?PY^l}I&zB?GM>WF?&{UV~5LnT2^eE>QL
zmqQKleHO#zkV4?pC!vGrRo|YztMLKh#}Xh9)#ea>oC1+P#P}S~@bwH=wnRT~XZQ(>
zeh<S{A4dF48RDSiBypzy8^~}q)}UX8GW=vlKaSz2Fua7}gBd=X;n at sd$naAcek;R=
zFnkrmPh<F_40kYm6T?quIG?|F2E+ODvNIXplf?;#GCYgnISe1h at Us}6&u}#sqo1cU
zd>Esj$MAC)zJ%e!8NPzy=Q8|0hUYST4a1!b=kpIoFq}W{8_Dob7$4OZ(a-6!F`{Zv
zV@$#aF?<XG^2lZQSOp?2WOyFKXENNy at G6F%$MEG0KcC?%89t8T_cQ!E41bE at 7chJ)
z!!Km`E{5kb`~brX7~W4d)}*)b49{lx1cr}dcp<|zh8HpX3WiT)crC*xF}#W4%BRrJ
zcQD+|=vOoRB8Imzd@{pdVYr9kyBS{0 at UIy@h2bYjXGVHEQMQ5fb1uWDGI|%oOBi0o
z at QWGVz;G4opr7w&cqya*6T_!7d>6xKFnlk=FJXALbjDP!OBtTS at R<z1g5lp~xR>FV
zG5ijOU(WD*7_RyZ^z$nWzmn0v!SJgXo+&#GB!3yhPhj{gh8HrtoZ-a`znb9-8D7Eg
z8yP;E;j0<$W%!>NK8N8u89tZcL59y`_(0hiqViTU{A7k-!*Gq^*E0NKhF39s3B%_z
zyqV$E41b8>H4I<RaMkytpLa6+dyM`QhSxDXQ+D#Gy!8xsFx<!Re1<nLd^*DyFua!G
z*D<__;R_kQis6eGzMbLMGkg!j7c=}*hA(0GP}zB<^4`F3HQ$@?r3|0R=$A3Pis8!{
zehb5IWcb|-zlq^%7~aV67a88f at SO~AX80!zznS6bvQtjw`aZ*_GyE2YuVT2L;d>bV
z1BR>4J at F4P+#@^vgx|{WSqyJs_-cmJHR{;T at E<A=sUt)GLbUWz{YxLiSLh_-e=Ea(
z#PH1wzn$Tkau7nif6VX`7`~F>vl#vphF3EDrwo6H;Xh;e;|#xp;c9?Q^4!VrqcZg`
zgx|&R5{Cbr;ooKW-3(vF at Lw?e0fzq{!}l}%mkj at c;rB4SaDe`W<fPAj>2Hb|elMec
zh~d9t_~Q&G`g7!OuP~hWFPD0JgW*K4`m*^)>lYF&@%QLoZEl7WeTBqlGn}q@=y?5y
z`3xueYbE_wh7*5PH~(Zf(W^TCgyF=$cCgM!Juf4S=vV2mZPqdR3E{;5U5QsRoap~1
z at g|1THOtS?e`sMi(Z4F`_cNUMtJvHZ3 at 7>?vadF9pnf6oen3AJ|A#XCcMKoL at ZU4M
zgyE|hKAYi`N2{#(`3xs{=vh7;TNzIB)7%|8{>gBnA1iV7em&y-AQ7r#c>SXJzVfSW
z!|Q!@dOA;?)p at JRhx@z>eYWAV%YEgx;aAt!+XOJY?6MfI93PQe*f4+oA~(J6d`@|V
zcY0lUrLW%Ysmv`Z8eLp7+gs(Px88?d5bl~S=;zl~6_re$QaVEXRN<}l6_pU7Yig~x
zuH08yQ(e?)5uDvG0=+uEo3#*L5$eU{-Bu0VAV7E}bb|nqRiMAmy&J2b%LRz6g2N`j
z$nllc<#mgu)<(2Q>@FNF-!<>do$K{^v{JWfi<}8)i#nSBv;^lLUvsQf(0wK->!1q-
zh%mv!CqO(VP}*?y)Y_t=ZZkoie>a(+6rl?(AiO^?y6XjqFu}toKs+W`+)&l6Cdl*e
zCKHq*be{=!y#Ns=c=!Z}#{>&27j&x$^8CBW1f>YwXM$ZXK!gc)y#V3e at i7z1t3*rK
zZFSHc5`<U6AxU6_4Jb-5*;QLpwdiVZb;Ueq-u$Y{x_aNDDsNeJO=WdeWwm$2sA=B0
zmGuY`cxM|U{LsMI$UkphdA$fB6j3l>%=AUIUUwlP0SU}&v^2P`$VxV^U6GaSOmsz7
zvg_OxSxwOgid~YGcP=@jF32hr42vhTSP?kq2xF*QTwd#RR#w-0>wKYmtHTkxqN1V&
z{O&87GNY<wK~dSLvWYXM6qUNl!f(gU%I9=VsHyiEWzYkNY`7lMRt&-N5-gad;=;!f
zam$xz#aYT1-nJik@`d|f6_1NiyNT9bEVGMKtZp*8IHgOp(&99^BTc$UgVUYL5od65
ziPdce7ngM1W^mmjT|9$a*;|TXZCzHa5%)rT(j~fDV>Z6=iPdFF3-|acdLE-n6Ros(
z8{hbJmvHIgxfkRhC5Ga<tXd=Ph4`dPwBlmk3-O87WlD><7vhsH(MpT=Ug#$2;<*=O
zY~TpJ7vhsH(bXFBUWiYu?z$J^lP=Lpi}zmWCh6k27i3882)!5nUw3B%9#>W7 at c}9p
z<s(2Vg`y6qPz1_Mo3`P53Jp!5En`z?k<yuvrZkW?F`1SiUs)Elf?!q<DvRr=d{n^4
zsCBnO#aXFPpstZcDNrELicu;X1eMCyzVAKnncO+~pWbuIOi}OiWbVw({hj~+eeb#F
zp8IiT+}xFWvqtU<Znoa5eZkFLxs&F)FZ`XkEA5CBuZBnL59Ll?RE=}>^&V9 at S9|47
zn`52ZQF~DjU~d1;ioO&xZ9?tx*!T;YnljB@{Iq3;o&jxbc6h$ir}&b)H1Fz$kbXF$
zQnsaEsERM6ZMk1jDcdE*m(jMIGFHlVN%7^gJ#=NeLdH#j@>wr71{HE{lwUsMlcX0}
zA>XCNm(jKy at GE7zr1%QhPE at A#*0zJ<%V=9yk_y=_DZY%hXQ^Aj(<)@Ur1&!0*3D~$
zY?l;YM%(&eRw3IZ#h1_aP|I2w-$wc6GafpaRmQm~P(JI$-e6^nmln?hp&XuQ($P+#
zK?M8&12 at nf5l5YC>Eh`b at uVpDjZ=ttAWNMWRLHzO>8O--zS&nX>*`Kog{%h$+)7!O
zqj_blOS at Dd@5NTn)4azXH)$4)M(k7_z!Iz>H+gw;Q?9L}z9CoL-q_MnA92d9A4{Z%
zq8b|O8zyCHYa at zHCYCL2`OLEBOna`QetG(|<%9-ob&*A<=3!?JML4!x$wYl;ag-E4
z=%w#xR%qMm;ypL*4o4&B_LYi8ir-n$NME;7(Ma*0(Uj~z5f^%BC|;<NozCyWH86P4
zH#wzPA at xAwNkfkTC#y at x7|ZD5&<Ybv9w98ElQXm`->=lG1`GJ{IJKa*c1lxgV`pdE
zA~5)PM`BcU<DWZ5Rb&3SV^l}df1nuKc;G(wTEmBo9X*&Or(|YkI+|%%L|aovJx*MI
zdT^Md2ZN8zWG+~`EYsB0MXS;C{T)jhTQe>6V1FYYLDRHa!xTQKwVydB!{0TK9G^5g
z#(!59x8tqkh#S!*2z_lqLoQjpuz6AAvesONzW$&&*IeH)kut(vg~>F>+2#K at WOs6=
zp+;xdYCY{?mQ1lZY>NNmU}|DU^?`Vk8>Y5 at Y)B?U<FtdLM6$FcR|g05fVg|pJyhKy
z(qd}!2Ag2b4gbd>Hxn`qK_9Oixfy<t4DvI<c8C4l=BWA<9?r9*vE!oJrMZqvf*PE(
zCWQavkdS01sBl61K$S%`T$XmCCNul|Os=E3nd(N4S{rV3lF13 at H+Hr(Wr%56dO>{?
z?QhAZ#f=@bV(`@?P3*IYyy)Ki8B{xG9UBZy;#la+dKq^zc!gvl(?GjuQ!Ys(5E`at
zm}zb9><l{fy!~lW?SyJ-4(S|Rn!=3k%C~ja&Zf4`sPRM9jf>aoQnx>{_7%rP&1ziI
z%;w&cW at P(&EMJ!3j(Kt-CFINwJ*Z3d at Z|bt at Vze7$(vXj&<@>xe0O>tUAXNF$<xLB
zg*7`RuqeGU1;#;l(zO)YS$0xrE{bIeu6RjdXT|0qSf<eQ8THPJELyKzfywFUP75qj
zuUvu2wYi-ZSfrjuVCu@*sS~KTk(rWi%+bM<znv>6K at Q-N-xFpj16}pn{t?JhP`D#e
z6Fwv_qw&WVHMd?e{Nb1IT9N)I$YqRT1Ex+6Cw#iOqb)ejEnV2DdaFBnv7*|%SP?9!
z;Kd4cxDMhtw!ZT$^|eX=XfXsw%75q>^kG9)s2#066V2KaEby*9ow>%2+_HArHCmRo
z<T8yN9gVd26nFHf at xF3(oI8j?x3DI-);6c{0(F8{y2nt at qqZTLSzbG(fi533UeH`N
zp-`2soQVCpWd${dSCQ~$u2eq3McAP$s}+p4^nyU~!tG8BlON92*Ng44a~eEP at MIqg
zF5J<fly)$>emBSWG%>WlL^_E05{}}btyUl0J-vCAudi6XTi5ztb7ee-OD~^eIlbGl
z8W53X>K~~yx-!;`V*kG~j^zO(-hySzvD~GrP^}1+UN*=2RHQOF4wYUu$NC(jGLA!~
zm&>v4YE`I#iz@!?cYlPSJ2H)}e4L0XE25Ryep_EIm2m6H-!UCNo|I2xsJ*M0MyQ3V
zm`12gshCEn6{wg-XuqwLM#+w*8wcO>640Tgel$(xIv)W7)MKu!0QFVNDFE&`l`%i1
zUHdZnHcmN1&pVYhJww&7TvbMYH(lB4pdL?Az5;bKRko0I+gi2)bqBb71*%~IWy at jc
z;9Cxl{3s#3gwoWROHMXBXX>~+Z7yBDT{NDa<>>0l&@V1 at wk>UJZOL7dS)PcEZ)#hz
zq<Ja*8pP7JT=V$pv(7r2E(<kXB%kT&kMZptZ3N}`vJkiN&5JXOI_Rb)U1RNNqpL?{
zm=>L1`g at qV$dtU1pS_ChLqBw}j+Tv(<$7-8>j3|A4?Yd}2R(TG8);$x4|(uepugUO
zUkvz%J$Suw!~P%f;Pr20h51K4_-<O4r!c>PKI`qS=eF&?BA`oo{%sk}>A8*X0sQ}X
z at cMUh!v25h!RLW~p9jAR at W1lldjbEL2fqgJ|LegQ0ROlLzaH at XTS0oe>$z?FbFO&`
zZ@=HrXU*xkjo%p1rTh~fd_Um1Os%WuHvIv>Kk2~_0{$rv{&m1V?ZF2>R88xL^S{Z1
zA1S|+6y~4t;Pvl2hxunc_%T5LIS)P#_<j$59N?e#;Pr3AhvR?2gV(=z9p*QC at G0@X
zCow$n at qY`=b-mYfTm9F+s~zTl at 4?Rl`ddBtg at FH~2j33(mp%B)0RMj;y#77$aQ<HL
z;BN%_fAZk-fPc+{zX$Mt@!;10{;wXq{vGvj{<uxl^;XYq^|ue`Z}Z?c0se0u`~cwJ
z at Zetq{F@$p at S}^gemH+`dGLEud%;tff15t*yz99w|6>6EjtBp7!1FOp>*~2pKLPk%
zJopm;&%b at Bb@kk)UkCWzJoq_)AK}4g0slS^z7_Dhd+=R=f4>KRHQ>2VqVuljw*2=1
zeh&}+R>1RbO=?{|x9P6}{0BYw)qvmAgD(JnFAshL;P>|6Hv)bi4}J^axlgI{uIIM=
z4+4H)5B^QS at 8`jf+>Kk$()M$I4}KKjM|tpZz>oIej{^LMJop;GAK<}H13aG-=<TlO
zw(Xx5{$RBkg8uIsdapS>xACoj|FH+Z0`T{G at V5c}J`cVC__ZGVCcyv1gMS_H_j~Z8
zWCMk_-%maGgz(|>r)rP-QzLx1|1-&hp9b{#w})kMac--BGk`vy6T0&Afc~)_d=}^*
z=fSrE{o_6O9MC_(gYO3VCwlNJfc{Ay{EdJwc+}rK;Q!l$zeo5gVtC^7|DVxZ78mEX
z`nOhA4DUa+9`UaO{!jDZ`+)v*4}K%iuk+xy0R4Ioek;&F-GhG}@Mn1NBi<Km_LB3r
zSsr{9;L{%b!GNFb!H)y{91p%4 at O({5(psF`>VFFG=Xmfl0DrCrKM(NddGHGXzrcfU
z2Yl9pzYOq;J@^%XU*f^vD15m6Tk65z2KZ$j{A$2=dGPB1f2jxmIN-1F;I{z2+k<}%
z at K<^8BX(Eq*BCVmj$aRW9KQ}0KHPun at z5U!_<!@@s{#KN4?YF>8$9?K!iSIFuX^Nf
z4&eEomTUVtAMh`E at CyMy;K8>7{&yaH4)8B}@RtGpw;ue}fd8t;_WzRb;rf4*2fq^N
zuk_&aK>uqV{5?Sb-#z%%K>t<`z5w*U?!m7I`v2j<KMwT2;lXbL`g~8wb^jdz`rq{6
z2Z8>#Joq<({<l5&5$~s+jizw at zs-ZM5<c91-tNJV0s41%@E-^IcY5$g0sU1Td=22o
zdhpW#|5*<{4fu8sem>wY_TU!-{z?x%2l&r>@ZEs_7Z3hRfd5wyekI^9_uy|6KD_^Q
zdhquEzQcoG4fxM^@M{5|@!;11e!d640q}pI_RO{YejM<ZdFXEfe1iwS1 at NEp;I{()
zOb`Awz|ZvH-vs<}4}OGH{BZqm^WgUc{3RazD8TbGJ+AfVVBy2Z&w~ITr#eZCV{*8r
zcWO!qKW(yJqUQR1TrV9<Z`e~xFVJ&7*`#US0crtXzx*M+m11N1yznqu#%s#$2DLK1
z=1wZUEqS9#9a?l0z2!1 at lur^H#83XhQ at 7|#H7fqgjDI!#2k||^f1pUJHzv>b6cC?x
z<nOicy^j8mr?`=R!BKy$h3|9ZPoxcp^!pwC-*4du9raJ9%8T at 4C#&rhwfzbfzDjsq
z-*q)Gw?AK}MEY?@zF^@K!bjELskGxG{gh+;KeO;@NB&eYi1f3L at jqbU+a38+X#*ks
zZsDWyx6Z=%IL2SQ2iDI!@()`0UdQ-PqY94VFF5iKTKGQUqw+WXgIK at cG5+-ye$bJx
zrvoI4KbBH^Y}Eeyu!XO3<m>ms`f=f-^7n{^PY55?ex0#5)=xR|8!UX<(f_P{uzuE2
zzt6(AJMwd>K}OrZTlmvrrIXoy&!z=I|7X|I_2%8orN&~};8oqf<?#=?KI#6?0~Y<h
zlmgEdUe8SZ`z`uwM88Ks?tk(42UCCizBvBGR0T%qA3;2dzm6|9(iGO`@eii{*DU%y
zj`}xR^fv;19{*tKkJt~#Kj^6cjzxblUo5359RG7bzs;hbJ|)0ov(&8kN}Ic6x{!F3
z|JOyoOV;M?|2(}n<A2JcpLf*%wMD=E78QS3e>2dp-QSXbNBtD>DE<MU&)4tG_<vy0
zPo1g~cc7XTU(Nh~*P@^0i`_Ko{hagvJNj(u&mM*2&pPVQBp$`z1 at w9RhpGRPMZeoo
z|3!;_576iPN2dO at qjCIsNBz$ekK$hi^m+V=sej~$uztZ&|1jc_egWw7_!CqAVT*ph
zqy9RJ{zjnx3eeBe`8n6r-Kl<-Ow-h-sQP~{@hJX5p#LfrX~zGyML+JSzs;gQl5ZB#
z6yE>-4D at fM6;S*sNBx_LNAbsj{$GLqag<=BpLNuqL_E^30s7m3{;w?h-H!SjEc$7n
z&*Nvz?ca6~jz90He<ATG{>4C_$IqDhd(j0fl>dUG{z&4HemBs62k5V|==VG7f7_zJ
z66o{z88iOV=mA|6f2@|w(nOoLWHOI`Q;A3M_X2$$KV#}YW6_U0>Tk5 at uLt@(e#X?l
z^usv*l%xJ~;!*tlK%d9YnED5P1nXxV^+yqp^j`=1JbuR1Uv1IvcGUl#MZbz~w$l`D
ze|h|jsXzOpIR3n&{!HRg{NsQ=kDoF1e{az*IO=b)=%;`_kDoF1zYxdq_dDueMLdds
z9?<9UGp7D04#D~{Iq{9!|Kr3X{dS<w<7Z6$f<-^>sDGbDe+AIz at iV6Wf<tlqDM$Tt
zh)40~f&KwN|IZfvtfT&*MSl&@KM?5O at G%^Jx1;{`#H0B8fc{vZpZqx1&pYZLMLg0U
z0Qw&W`Wr0z1xNjdEc!8iScs-@`}a|xf8i%^{QZvl&BUYl#{m69fc`FrVg1<jz<%WM
z|4oa20_cAX=zqhaA9vKhg?JQy9nk*-&_D5T9DmADzlM0Ep9T7d1N}`F{j8(@6Bhk0
zpnn9=&yB<JcRT905s%{U0s2P*{r!)?`guqFy@^NqtAPH|K>r68{etLUr*?zltJ(kk
zu0_8f`gKC`^`B#a{`)?u;@_42AD(6k$gzbdDxzd+5#Bt1&k7&qe<ATGe<S%}MVi9?
zCjkFzE&l)L=s$iW-u|(A6=szGvBV?)Y2cs7|BY0|7Te`c(Kqvdo#;p9{|Sr#yrcie
zEdEyl|24q>C+PtQ-cqLjqfb|XM)|*9c(eYbgpbPq7l}vt?+5;m2mUu({QttyfBn(8
z{`5QgpGG|LKQ7N%Ev^420smhYeKY?{&Tz~BuH&))ZsDWy|CYsnJMcdh_&-bZP5*n%
zaP$9Ti~qRrQT|sGkMh3;_ at 4&+?|BTa|KD}=-!8ma{|mxjtI|+>HQWD-h)4co-&FM{
zD<rr7(}Dj7EdI}!sX#6}JgHKLmK>hI^(QTSl>bACNB*<GKaYPj+t1I6zFB{scJ%+O
z#ect}|0gZ}3&1}=KWO?-CUO0_XqL)xRQ|szyjg$Rg^$XA5Ai7faemmIrfl%4?jQ5`
zP1FB?#s3?Q{%1_U^(S_w5{~jeop|KG8~EqvPfh>d5Ph@$Tr2uf`QL3K_TS^^|80x^
ze&GLX;D4^@oBqe9RsN#<ueJD(3m=vL{~{jcKgEMBXvzk!s{Wh<{O?<h>;K)3{x25Z
ztpB}^{yT_A{`0{9eBl2Pi~r+4r2>!2{}GdL{YeS`0m+}9Rp~b}Z?W)c;ZHKwH~EFc
zqxfSy*oCHq at O=Epg7^n4`aPm=>Y1Mpn~dYnJNiF_c;r6;{5Jvr-?r%YJNkd#!Vfz7
z-(>Nh1^yQS{|lzz{3T|q4Y$8+KRq+^f2)O03m;W~ZYCb(zX$kl0sarH!Tx(hf0Q;Z
zbJPDk3*YPLzkzt<zX1HV0{>52^an-%*Af1IW6>WJ{jBi3|MB>9^Z2#ju{eKy4GKIY
zLVqvfQT%BhtVYuq;aQ)@Pnr5H7X8>91uhX@&&=(&(4xN>=yw49yy%<9za^s2v4tlU
z)zFg77XRJCN9{k=$Km|vg^${Qjv*f9zgyx at h*i!%j~_Af|9y*ozoY+MkH`LFXDQ(*
z|8H6R_X7Wy0RLB7^i!fAmH$2qpLO*ADDf!&{lNca!2j$MaQ^b5f8<bA3*MRae<txr
zzlsNY(iGnQR{;IVCu03RNBt!6NIwPiyMg{eR6*FO+5d{29oUaW#Xp*Oq~8wouLAmS
zTl5o-`r9n}d7yta(0}G+75 at YkZt?Y8(LboTM7`l$@ucThrEvbbg}+{}$Pi6t{kc4a
z^VcW-y8=q}zrO(de`G4wubQVoISr9ghU*_lJlcMBcPisy{VxLjCoTGgbCl%gR54cl
z$B9S!1<_w6B)6Z}0{x|@;P}($D)5G)vU+3YzlC_DznBM0(^RLh;QL3e1NyI6^an*h
zYWr`s==X|#IR9S;`q!L_<L^FC8IOwpbHt<g$9-pb{QUhV=J9LvG^`(Ap!9j43r}YL
ztB6PX?V=yv{x<;qn?&E-e{ahu)pS^#-fKI0ewW3+KJmR+uPEi1{%^PVA9I%i!}aGT
zT4d%gOV4TWnr8dk-KYek_TO`fNBPT&ez^YdBkiVsobD4N{X~<}e{4?)TxMqcV~I!l
z8%1A#j~DO1{7AK_f3 at hF{l8t?mEfVJ^2P0^7jLuq7e31WYZm{pUd~D^7WU7N1epHM
zqx*ck<}m-42Y4*X|6{_N+dm<El>c84kMck6N5lQ+f&ZF1i~nof{C`jQVg7}W at _!fc
z$bb6Y;r{uOj+y^abf1jZ9G3r^-TYr8{4oE*-?xt{N57i&|8vA6|6M;-{_A#EB-ejF
zq?`U<w)lVP4mbZzbf1cqO#fAPDn82p0^*VX!q12M=O)?o|B&dL`G533-Ta?$2KGNF
ze3btw#3TPBHw^cG5AdHCebfKl54!muP4{_N$;^MB at CoAt$gDqA#3TRd$CUqZl5nm+
z-vj>VioWST_LTA;SF_?PYlWxT7X7ZLlzu^0X8rF2{hKWManYyKvyw at bI<)9H;mzZB
zR(Nx{u7A3mSB00|tXS|@gnvY at DE~1&#$ML(7fJP|=4rKN-EQhL$Infw)*mD5?@ITX
zcuo3u$uxhH`gpP-Xnc$vD7;yJ^3Nzf>ilaI at u>cEKdY1y;)?yRp+%<u%@+MWNBw6l
z`n^D(n{-qEPP)&;PR;mZ&$`9`E#gu9{Xl;$(7%Z8^C10%qy8e|k$%;4Tx#k0|NTJ!
zkhJKlaEq^5(ch!EM7=TFkAsO1^o{jWqOa>IZ~p?&uO at zPVx^iFOKBH<y}k55^k+Rk
z#-cwD=>H7pr-<iFneA7X==1-=lll2O7XA`Pes8+YkMuw5$X{jQFLmU%S at _Ew`S#h^
z|K*N+zlFcTk)PXu^}B^ngf||&j~ky?3cs7tfc6SsWvs93onCwc at o4{R2m2p)2{f<w
zizhAq3!+cmo02JB at +lUprt7p^e at y>Xu)j>fdU{(KDa$bVk^*U5^!|NavA|FY<t
z`%g;rHLvyJ`i;y7EdEzG`rmBvKLGr5mqy30^D>pLb8`Mn|9MCMw+L_Mf56fISBXdY
zPxP~^((6CJ2L4~Q_>c7mc=7s?`ZT=$&!FpstYrGH6JF;@^E!X}^K{~o|1RKvBk+H_
z=$rY^ihfl6dE4TDm81V{7XJm{pSxr_ew~-Ob8-DCIQs7u-pv2V=T(Naj`}pDuRq^S
zJj(yb=XtA^)*tSYnEv;ehyBMzKPvy{3vc>g?CAeI;*tL}@Xw1(|Myw^cZ)uq-j+=9
zl25VNXu3{J#SW|geUARCh)4cc0{>fp|C~jCK=j8Mes%nMahpZIU-b3ykK6ATf&RS~
z{i+v~LX`fGEc#V1kQhzb;8oo}7y$b5PviX8IO>lj9_7Cs=>GxeUv1IPI_h6((eDHL
zTY>(7MSq2({$`7QV)O9)zYO$e(0u}4)7*c19rdRZkMiFG^ap`{uSI{OqyF6%{XwAr
zC!jxSK8`=OSykMq`o9nHDE>6>>@;PAS5^P{Hx>2%J4TjwS at g#_>UUc7dx8F6fc{3&
zH;=z*(N|H3S(=%jk3CN<Gx<+B^0!#{*^c}h7QVreKW72<KgW^(p at l!okv}Md_0M+X
zTP^%tNB$=kex4)0cNY6U$C1xi_)k0Xy%zplM}C(^?0>!^Kik5e=g8k~;TJgaTZP|`
z_Ra8=72Z65)t~kJ9pTOPzg>9UUg@&U&wnExwSQH=-6cSDJIDQxk^CnG>E%bBukx?^
zDO#sX^vCN3GFPQ4h8I-}Z>$!(LwIw!=JoPv#J`_DkhPL&mGJSBr9=Mp;`yR)^6Rz!
zXuYPI>-hE3xx@$g(+gxiPV%>AU$ubqw-^0sUgwYFF}0ak|GMG^4_EUlT4^1<HF>_i
lx0_m}<aJG4W$H9)AHtKFKemVXem>aHwB-C?R(vt}{|D5%Tg3nX
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..4aa98136eb35a7cc010f58860b4a647d56b26976
GIT binary patch
literal 174216
zcmeEv349bq_J4;Y5&@a8qDI9f;Hbm{GYFDVRuf2|M<);oD68lY!vN8c#AJe?2xt;@
zc8szfzjb%rRaSRB)^%O)+i(bYBkIbo7b+ at aMDfOx|Myi_b-y_}nUG2F_xn$OGO6xw
zzkc=V)vJ1Sb}udQPVAGGmafSoO*=tLQx`0}+||dtDimjh+8b%FrxER6 at uTo>GQ3rW
zx5 at B!8QvkozsvAW8U90tcggUdGQ3-c|B~T7GQ3xY_sQ^n89pGx2W9w>3?G)^BQktc
zhL6ecaTz`#!zX3fCc~97TqVQRGF&6Wr)0QRhU;XwUWQN0 at EI9CE5qkx_&mZF<oSyT
zH^}ps5N?#`FC%<Kp1+Fl-}3x5gq!5~e-Qpxp1+Rp4SD`1!nfr4+Xy$y^LG%wE6?9U
zxJ917kMIL|{vpDx@;r?2BYEDA at MC$t4dEy9{8NP6<@sj_KbPlUApBCEe}(XCdHxN;
z9rFBJgx|^Y?-BkW&woVtlRV#vkc^G&jf}64JWofMA<r`r?jg_nBFvKKdm`*7&-)`B
zAkX(gI8dHD5N6BsK?r{#&-X?+Sf1~La9?@8AHp1YzCXeP<oSUJhsg7T5dKo04 at H<O
z&xau#F3%4}=#=M&AUqVm!|<DeUm1R<;D<kL1pejWcQ}5(!tVt9PQ(v?+7bA7Bz{NX
z=f$rSzsdOFPaBDUN8^`|-$eW-;iuz=Kh1 at IqwqThze4<q at EeaG{<P8fHwM3B at tcZY
zIeydd!=E-5{|fMP<2M1nV*E<*!=H8>{vD6sIQ%^LorK at X_~B2Rj(?}h^V1N{kmtWf
zcshP($m=r^o+ZzH2xrOj3WR6N^GbxX<+&f>9C<zuVU;{T2jRK$yc*$r{A%QNEy6nd
z&Xd>m2pjMV$m>Rg3-CK%UN1zr2)_&D^@Ru*<9Cs~UV?Bbe#_+b#RxCKuL-|q{95qC
zpLV4Tuae<%8U9v=SIh7k8D1;H>ty&p2!AKfub1KP5&l7*|51iFApDa&|FaBlM0k at t
zUm?T4AiP<g-y*}mBK(^?zg32}A-r9l-yy at lBfL|d|3ij%A^fL2zZ>Dd<oP`a at 0I8G
zA-rFnKY;K-dHxW>hvoSr2p^T_k0E?qo<D)`NqOFeaHTw7CBxM+TqDD$WVlv_>twiI
zhEL1z85uq+!{=o9ybNEE;fpfdAj6FaU&ikX$1lH|uD2eAEY`~P;P-md#|3)m{Os9!
zDC3Y30QF$8bA+o+Z_Ol<bs0_y2+Yw#ld|++wKHpNu`@eOcW-wzQ;yAX)MhyG&+E+A
zo7!?6g9<l02I<@NAgEjSieTb(D#&0F^nxq#A!`SV!Ng~#;!_4bGr(s89@<ApVXza=
znu1LOPlL}|NAn2=A1CptR(xiG&pgTJS5h9(AyH;pf{Udf2N?`T6NANyK^+(@>_8BM
zS%e_uLck)vVkkjE5ScEOAcN0hO3*Zt2MHqA3qH1r2_ds)>qi(_=V+l8ir%!Q;EXd@
zJBBX91rqr#xkpV8HDv3d30dKJKkeM<7)rPvd^_^ib+{D|e at Z;kOl;yl_dzH32kxXO
zW1bJ609;70e9lO9zv#50Q;Vj1g0B`$^8|l*vJ6p9*Mnb`!%lTW+TdzWs6_L&o}2Ft
zo|~(Opv<yt-TjiIS<4{#P6noDBg{t#Rc4pA2B6Y)g;|FDCy&sB;kAX?nojL6Z7Z6V
zurXb4osg at qn^0&F6+5#$?oS-eRK<8h7mo0TrjO7=7lL(TZmIjV(%?&_j)^boup7h_
zaORY at Jnd-SjAy;UXS~Qg$mVtCl7)>BQhP&miGL$n+Pop$Zye$c?(pVq(0>IbEL}QS
zCxck#xPsb<Ep3j=MNWnSU>|~QDz0SdBLr(3t_OI78 at zctqPbGJAg;$E6v+ra?{WVa
z*b5esuea8v32sl2vQ49CTBGa1t!JEBG_&Z;qO*#8tLHd|7E}6|)K?o)FV1LbTXd<%
zUG2;XoTCRn72KeFXl!AwC)nn3LsQRq91~yDTQ&xU>mpgA%%WP!mDH#Tys+lnmbS+I
zym{a17k?`ha|}*MGmG~Ku173RPt(F2&C&cmTKk^hR;ppO_6e|OPt#)O2+h%wAySA8
z_Xa;SI0sjHf*VSa`sP01s3W7UYb$lH4P-R~Dgn7*;thW04X)CIZ|T7|#dDq}6s@%I
zm%_FSk?v_y^OVk9M{@%tP-zvpOWBGPQ>yD?Q|+RB%qA`cA`_`b%@+|xng&o}RM3c=
z+ at a^KH*(T()d-SZ*vR56q$QX`*G(7YK(LjLmV<Bwb%g%_br|_nO1dP=MZwSYgyz9&
zzVjeEyzU=$$HZ5W5sqeR19%}vwv+>B(Ed<w-jDjlKZ4^@$5sDA@^L{q;JBg)^uevJ
zrz!sHaU=XUp`2y73#*zSqALxRp?rapCsZg)if|rOTu?{?M+!ZV2`Hn^B at wbr5wa-x
zu!7*a#^I%Tueo-5E`}&1%dZg|E(}>F;i5RWbLFQ)!$mknqGkO;Wxn;iw5Ff38YUEe
zy*9(qLS2)VuN}>weUEDB0X_Tjlk;(-kE8hw0Ku;v4|+%aG^Z%&9rF`a7~yAtTJ;g2
zY;Ws?0#9(Gr)l#Js#b!ZAr1X at c!G=f+Tjg`y?HCsUhw2S)AYd(MC!QYQaq1y*VDll
zn^tC(h6Ws08XQpI{;dAf at VU6<dOBPS<tll(vWtN$Ww%}<bgQ}A!czd7=|e7q!?A!M
zSnz9z6Y`Gwfu#RINI!t2x5Qsg{@$oli>6H%4*%khN!Oz4Ld`XfIsRrR_0-7s7dvO^
z!F7~zg(71 at 6NXR$`dU=5hSw- at ZP7#ItECrNb|IC^5BDHbD9_f9*jrC8&(cH9&gB$a
z=mzKY2<JFHeOhmQ%z3wvV4PFWTP>_ZUsvp$kuAVYdg~3&HacCoBV7;PV9+}LxyrTi
zbKP<HdJ=Ai9$ZV$jriO#$SaGH4zrm7S1Fn;dazl>ajoFx7z7dMxzM!|Z+24czc!<f
zxRLD*8A5qO_lX;NXkMA#y0FmOIuF(0ViYB6Ea)xU9L;Nm!`P|^XF7Fn at GDPnZTp_3
zp#^XOUk6U{gw7h_2`$Oh-EZo_|H_gU7~l>5B=m^l^-DdkouXc*yH{VdkNyzZHW at fB
zmpl~Q)Y7)_p3>k~V3-YtjsGMa>z?2zUer2Sj%E)c_k`vnj>cR#C_VTQs?~o}wTd_l
zXNovbcWl at 5wnlq_0eBeMczFh;fEuyF`F-xlhClKIOZ3l+9D}A8dfaaZ22;khfdEWR
z|DZoqInQ5tZbRdIWaH~9YrH7RS)Y3xhrdBer)Nmh+4?#|!&$^6G^=cFvvWO8wK*Qg
zk~d3Rwm6z;bm4LQmLU^oLVzcsgr)fHY|krg*%m1G20ub|tkjm_X)W0S<%}y0eoz{k
z?Syu=1l*+|I9LyA)?821k68=WJwnm3r(U3^bobVap7y$TEN!C)kxyG1*Lm?^zSj-W
z1Cu<V8t_<<t2h1F*Kz4*P>y6{7&`Ph<RQUVY1DDm7SbTAjbEYbP==F?5H;=BRLSL%
zh0fS|#5c%WWnIB}g*uJm$W}+4u0z>_l(J1t<LPlC;Y!J#;2NC@;I$M_aGks-3c^!*
z(+-E at vakB!PScJwNAprT198i#g809bEo5+dXtdL?cQ_)0gA^;i5IQ_+juzNQN0GQm
zJWq|}Jj0N^(Bwirbf<F}?s$XmdEM^^4t5MJL at dYaEjt~}gCWHeqC_{XHY#@%iN<#*
z*Y+lkmy72<^yYmaL?M2&bY#jr$!xf4ze;}phPmpYzB;(=EXyKZ?+Yt>Mc_uw#TvqM
zNC~jaI{o4`6aiWTXPk-1RBMKYia<a)Mmg0w%~|FRqBs>h%eF51YUfT>A9#XKg<txC
za*(`tXsJ}3(SItXgns#*Xis~g3##F$rlT4U)uXp{48`Jczlll%Cr0}zw6`bJ$Lp>u
za5Ucn&`bU$RG1}Nc<a1*tMrxMW$3{T%0D0{m*i1(_tH-~9M8&kGW4`>b$6bl=@LAx
z=WW+p7op#^H4TJIU-P)X4V<F8k8bqpO-r-1KnZGwC5M2W{t{f*N_yOzwi1swoTlfk
z^0pS?(U0)x#-*>j&?s6N*wf=4(U<|>4T1g*OWT?4Nn1lor&P3 at h|=k4`ZUeavKP+6
zKcI=G2e*f3;KGzQxT^g(MUDpsJ1;k?-tZ!FUuOHBcp>-Tl>vvh;h%{Ng2$sgZ8;Jr
zR3<hdg)C36rUV<=$(p5<%V^|`bGkMfMr~I8>x?R2)k?vSyg|d*B3wcE4a#0rID4Zq
zRnClxkCSjJIHItY25SmE!HIf!7Qw-{+yCj>7(NIJFd~hXwsEWM;)&bjg!SNRVRVU{
zGY1~wzxCjc<@&`R=fLLSx{r)--B|$1bxVh9cyFW2<PF{8Y(qLwZMTt~uE#mm&&v?f
z;m9j?)|I;7cQn%|tZS$1YiYWA>p|i^%C(2e3W~=p*jZqv9?}dG-UfFI^F=R3hsCr}
zgLUPO4C-IPZV&OG?fufXFl~M1yRh45boT)bXL&)>dXj0gFg%ZYePB=By?<kd9xBSB
zSmx>Op916H&Ao`QX>GQrX-$@6&}8(%1I~qzG=MP+oKd~H3=)RVf(07wUT<)HdlSWv
zB0WoQUF at tAIY12XT;uvsiD=1;gWRh1?t(8f`Yg-Po^~`(7j2m7Xv0j`^z`Xy#CTDU
zz^N^S0yk3gWi#URw%+30j*wahS(I*cXtF8s-ry~QfZ8;(L=9**UN%tUWtMEb<iqcw
zn=kDL((=X&#h?eT6*0)h%PeZV7<jXjo)VRLYe}IuG{20LhH9)t*F#rGq6{ZhVnm20
z3OuT#*&&*5GpPsiEOku_y}=(#gCCX#KW_hpD!<A_2BurS)$86y&e-TS1O_nwI at FW5
zjf%)JkNc^M_O%)_xLk67ad0af_Fc?jH~w7@{--pEmMVns1V5z;ztHO*?L>Df9pk~$
z5tq6 at MSQBixUU{W_tEPtkeb37x#ZHkPi4<wX^z<|I0{^fgJ>r>E+3B5h(^v#XATu$
zYUG at SNZ&CUIYt(~Xu4ix at fK337v9op@KDS1Ju_obqlm{)gh-|=%8O>_4g{ik^Px~S
zO_-39b7(eaS^Lq-pP{BX12v7Ri;$EI<Qp|@ic5o^l!oS`WwR|%WHj<FqDD#9f at eg7
zggx>SJ)*leUG$v(Fid|berQ0hU;6NJFhC1uTjP_Y+Z at s@HE^g=N)4Rv(ZHDm#Ylce
z51BP^HmUCBaiqOpk>o~q^KiOG5kO%OgBw;0XVzBFCx{%Twi)E!;KD+k=CfoAN7udX
z4~-U%P?;KQfIB@><fl?994)F0NAnhP+^mIz(z4oU;dtndXyLp{KA)=SdjNT9Aj`-I
zsuNIsd`bmF8jF-Ft_;+`$(9YAWsq3-c-6q61ho;^vNM3%?LOxQx-eTmw>WPTPuwZG
z6IPoAOpNwVF=UKx|FpCA50x4;O04$JEwZCzG$SO(A<GrN0hH!A?Vo-EZ+24k&wM2f
zMVk$`i`S6HuxSE`Je6&r8Ps$|O)_I^<HwYzMpc69BYY3Mo at l?IKY9jQJkT;qiP0Jo
z=Ki2)1{J~?pkAidT%GInQuhaeVbbnBWIP@!RH9MQv?g0mTMdH74?IoV(i+!?7lHxW
z4bwHW8^~0`2cs1*XSvxrxEYt>#|aa1nE2~}M62OzoKUMFN)t3Gi&g_^Aga}nPZ^%Y
znhl$Y6pj<3!t7)r5B?VoLupNf%St$W88uy6UZ-XQC{#&uw7d}2Y*=D68~TGBErz?%
zVgPmfZ84HI4&W^Y5n&=t1x`cl?}+w7RDVAU-g9(BqhS+L9NFJDS`4zkzmxU%U9Wpd
zU8<K^v}`H)%H#V|fAq9$&k_51(oaL}@R&5?X4c=o(<n(nqp;{0o`lcLAxC;QX<YR4
zQ53B~0MlVc^!5uxZ(ofUcB8kCAtu$^zf*LLsDo<s_R%AQY$LqE(N595c!}yg^z;k8
z!S>SN`_$7H^=n{iX~>UC^`cy_8;;>!ILDV|FWl_u!#Tboo#UEF=eTCcL&d?(sPg}1
zRr!r~d4g|}W0Vf at G{jsQnj<Q1v|JDe93qX|MfCKCmIk+$=56*|yo1~Tc|vkS7^};{
z<Hf-?@`QU)8X~*<7 at sse;i>5Ee;U8LPn~>k$jQ8*E_0B)A=*q<Zy%%UR&QSq&4}#n
zqm($BX{|sJEnG0V`?;PcNMQVSwjW7$OHR+|@*9PX{G#gedxCH1p)<0nw7I>Zb4Sn!
zw&?F0eo>d at 6OX(^kD#l6(Q{t+_NA+-9T++z2M-!Oeq@%@8Sr?ZW#~147L)LZB`|Z@
z<u}@a at jPMyl?CPzN6<BD3OEN0*TOebZ8E~BJ;#1XRgttY>hni<L>(HB+vgu`R5Mb`
zs?RUR8kk4K;Ft7><jD<>*h;=pctnDzAEWyGm_bmTe%TF|a>bXT%bos1Rl7#|y_t|C
z+V6Fz-|wW9F~8R?`~AZO9 at 9tsw}3nC_ls<!>@qt3!s(T5UG_fj_^%DGqpF-LJw4=;
z9e*<A&xQXR;*_(fUSlp#cA31!(15q~5ZJmlXE{0-Q26yYCwICWq1Twj^tPf4LRSYF
zfic7Be$ml#34k!IK@#IB?yZek%^Mvp?-8+khjBrxUtr<J#qHuklHDLKHXC=Y5*M3{
z3+g_5-5VMYYTg*wKQu9`HKU~;ApLqcV%|SriT?SwfsuO1rHA&=Lxlxi_j<>5tGsSB
zxN1;dAx!feggQpI;e{~~{B7e#z3E6Nh6QM*FZ>F8T*L^#x$u3ee-WBEAbnz1Q(Kyd
zw|%*~9&B7MgJ9}rxDMRJbsupvJWIqX#}7ha8vZN(MYRW30}}0lw{Q|?6oD3H#UDjL
zpAue(wFiWEGTH+ubh5f5Zy#?MAxOp|+XJdUNhNZ__rS>w$YBKZcsyug>EZr(04;*2
zQFDX7{cka{CZR<zrzgk%q1~CN{vyWzcmA&(|G&>@$zyngGRqkM*D?M-3oQc7-Fkzw
zQ4hq9|8GOb#cCB`{QpeRDu@~X|60`Ta4ZRp|9>p|f#&%CHm at 7;tMPv^=nePfac?tb
z093o+8x;#?0Jg at N0q6(!Kuv-^<R&7U1egJURZ{PG8Z6ZP7H<@MV|I_NE-^I^)bKP7
z|G#aP5ORuYxL>pxdF#N7i4~dycti9WXvN{<_^CMnt5JYCfGvTkqH|}?0c3hGd_p~C
z%&2{;ddg!}L(J3kL)L<)r5`t+L5l#-&=kP4)FfD?`o~XG9|bc2sNJc9T#H;gAI$-p
z0qAQr2kd76z9S8?=D<gE9l{uyF#~|9L~{lp?`^7xRBK>XOlu&)833byd<Vr7*&2{D
z0R8EX=pSE3PLS%JYC+t4GXTTTUz6>CBOyaF+X0`54sGoC|HlH4X$LGxtQ|o4WsU!T
zK&>~7|G!Di0HZ!YBP{%~YzCmE$D0A)i)O$~bcu{{e(8tM12w$;ox<CfxKO(z8uwOX
zbk!U3V{B6Rd at -czo`Hz~S`ciFqGA=oi+Uc$OyxwtGTf#7T#~28Q(w?met_}RpS<p4
z9Zh%8!!)M4#2iz_Jiv~C-|HURILnv^_;tiQz*^(+7w~w)Qp^MBt&^>JfD+d>F&^u6
zyBagRp(^zFKJW%VE!sI<3$8ZLv(i at Um9Kl!-qxF*LVMvzr=w-K at XnZ}L_2``;^8-q
zc7W*7w?WA8dGN>>pAF}OQnd&4;Ht1sJSqM9qaX^uO1 at jo6nu*d;n4 at n9{wgUV`Cjj
zm=~}*_%o=3PmVvlRyg$7d4Yk1GlxDG{(O=iK8avCFOZ3p8*O=5Lxi;5n- at TT#=d_)
z&e_%Oy(R|1jXF+D=c7#<;myZHdvl`&ODz?$akv0$HosNQ+N1lNEr-K%BBt=oDgGYq
z-5aCclz}wULD^)va_ZcR^;0xVNUr>4Q9l~Jdrxp%d;d9V{FG+$X_g%Wu<my1P{rxr
z!;`;B5nv|&smPi9r!bSh6 at Cgc`D#SB at t;=r9??6Rsei9#o at 4yDVLfOqQ2*YOx3ydS
z`z}rAN6qACI4w_34WNjAzTwH=6sp_^MI_e0H(fL9-+!!QFp(zV(7&IL{{2Of{d at C~
zc>VkN=-+QM`}Yu%I{2!EWO(#((6wwB*n9M&$rzYNA4=CY9sE;Y<1Rh6gKy)~RR{kD
zQNySX{_Etc;=1$`=#Fsdv<z6d^xFk7bLnOWf1H?%fXGHmBT19`(f#{r5G0v?eTa=;
zKOnwer{&EF%<ISR-{16Vy#D<-%#+D^ed)=?yneeF&=$1_)pcxMA5-CheA9o0ju7iT
zE&@g0on_h0ZGrxwk^$)@S^D+X)Oq73nl^8|Cw#pz%5BY#=fkIoe!lW{wC*eX5B!Vj
z*FFnKctKii8`D>Gv~;^)Yfed#(OYitYI4OWnbFhZ|A}&gX1{hY9zehLMfgDShdtA;
zHP;hF_(M5APOcZeFmir;6TrAb-NuCQfDR^vuZ@`yw)cZHE!;--5;ZNHP7_^XK%o;q
zNYlbt3oDxsyE at 7pZ(7(G&M+J#`7Jdq{5~o=Z*VgWa~II$tehP71lM`t6CJ8uE9zNv
z$z%mx>i*c6q<uw<N%KkJ(!BSDUyL&;jB#&rjQ_%lHd*C2-bD*tX<GP0F)b|Sgi$pb
z)55ggt^3o$>EI%#g?CW>8QJqSr-e@~G^d4)ER2{I#$b57Y2nw+j8!8<%ttEcNj=`T
zMUR*E-mz)n5mdBx?|krOP)?`w!54stJI8bA8ubK*Mx*9~XKZzE;Lg!@K3J$Y?tCyA
zs+tdWQbdu?QI38GP3O2bol$@HbDYTeU^2kC^TDENsOEzsWZ?6`H;KnZQ}!oO6lu5s
z>rEmSykU(R;xOiWX-`rz{bF^LUsU7Xv{x)n?LUN6fEkTW*1L%evpT$T-23tuD8sIh
zjgqy-iYQv0aV8t}{t%wagC(s-XIJj*kyDoDShm>iBiFgzBKyJDihi)`b&va%#{71l
znlHdmc4kTQwnhvuw;5+6G0<$BIrXMhSzh<M0hc#)fG3nrqtMtVROGnsDXem6T#e at f
zPZWhF3 at A#+UK-Gf at nJmB_@W2v*%~hiA8+_stMB<fyi$apoj`u}%ve8rq4Kl;6W`Cu
z`D8MR&gPSi3O9NgTEu*^<!2`eKN~xrd}WlMmGjBZ0*0484_?-sPbL><_KTA+dJJ}=
zzv*gQO{d}@e=Dj_3B|pJF>367^z&+rpGbE3dCUnU`aI&3(irh!&LQGDj(q782Z(8i
z)rrXW|0{pY*(9W&IQlgwpUjLf%qt;#kb4ucK`xNb&M_e;rql?>>H>A{xVDYWZ*kkD
zC at Fs}+CU*YAI;7&Q>gd_hOqN&>s-XMJjK6T`YEvViLFAG&at-9)c;`XT<Bc*8>RQC
z{QP<H!<sV36Irl6u_9Q=ugZatKXtzs^ppKF*MCaB?v;<9yZ&}x`7fF#Yf$X4#-2b-
zeqv at TR}c2ZtaV_h>hE8OG4h>(Njvw(L=5&<zuEXPt((fFH4fO^8F1!fbVtuKhGuCC
zmLM0)s&c4djJ2||c3XymhG9&D$*t`Vi~5d8R`1-2-b~~{^<PT9l>V^BFJ*tJ^0C|N
zmnmJV|MsGq(cC3 at 2D;{FK2eAou4tyH48?kOQJLP@{x6ZcU9Im@@^tL4Qu;~hhZ-wC
z at A8FL+F&PVXlXt*u?FC!GKJRGB7ZIhUUNL|Hv-o9a-c49Y#DbO-zPF^jXCf<7M`1p
zF)T5{u>6 at Cu{h8epAP8O8ftnrO!w*8LOe at LIMI-!7Max_rPVi}bhKQE#X0TQqEXl^
z8fp at 6ytVx?s~yLhaH9W;_1f4aikAqS58mtaytNiz)z4Lr81<iOh(hk6)Ce7B#V6YV
zM at Q7dSf~QwkD$snR{CYcTeUZzY=6m;lWN=r{>ngY{c*?nN`3YIit6gxN?%n?gTFpt
zNF?MD?;tYXm+`Xx2oyjE)}DQgSJW)U?vca9TW~hhZcp940jn};P(Jv%C-{>m_?0*B
z-BR}tj%IpOpx!z_)7>i_m;8e+ at ah@yewr^FwR^j^mAKj-r9O&d&@a5$C^ed1B@%4I
z^o2L?9c<E;<K&?2qc^o-eb%aMyjp8Jjeoc6tuwMq@&2A)mgaqm%)<sHFIKK$rPg=e
zwD09~1+Hlc<^I_Chu6-0Xb_mY?dfiC4^Qx{EKjfo%-4uEyL{7+7$<*xyOHdrSe#7n
zqcV06K%D+G<%7rC^t7i)5XYba5axYH%kg+1?8iT2oV_ir{t>Y|k@%o%u^ww^*6YFN
z^_A~uwBI52ipo1Hb;l&^8^+f5;PdUv`8FsyKKC#Y;&8AxnKXTjmolAiWX5)H9%V*4
zB5^d&5}EOtC-|ct`~tcxb${t--iyH2(a4Ooj!SM6nenxwWj{hgeQ1r|IvTUq9;Z$j
z?L(pvS(=93J%Ph9w~6^t(rzAhd0 at h!&6souo<w^v(JyMP9*gOUF9L%-d3b*i)CKy_
zy=h;Gte{+Q;C&q;7i0#Ask74HMVRKA4^@^>4vb*a32Z(7<FvB}hsuW>vC&v?ri{p;
z-O1UQtJPaGPzgYCB*@cRi={duMV?@W1Br07j0KPIY4|7mcNpHT|BL<vvBu%R^a}E4
zJ6^Sg{7G-W+RPu^S&RJHuD2dZFE!J`0gy-L5y9#(%8w`bnptif^g=IDm_+%Ri!3{u
z)QPugh%7_-DKyFtDn(E5Yj561WKPYrqDYpX`YKU&=$)Ic*IiG0LVdlh#e=d+^S+$Y
zIu0Gzj6s-#URn)JFWHw05STzA!2xPT%m8fW+SXX92TL(Mcu|%fJTuzlt@`FsOW$wn
z!NH2fU at VPWiJcPdmq`5uUlheILlOj6BKD<4RGnhAB*pE`Q>zLGINO`8`V)HpgIO-1
zU6hGuq54hw%J<USf1`)69z`TUWTwn#uQRLt7M>+Wk!c<BJn21rihY)(>N6j<ffZ`{
z&!|2tI*pf)^p46$rtmK(c2+*lizpvo6gg`9(!VKqbye}8Tv<*WgE9tTZOI at kwA;9J
zZYPE1tPTo`(C4F at sooIvQoM2!J|FjJemrhDaod%XASzd?msE{URk~F^GEpztmXABl
z at _~np at _~Z2^1aOP=@5n2SfyUiRG+6N;IE%kQR&wrFDFz~&hyVUz-f!>{N?9Y1uEwm
z*Lp?6wEBvwfPAE(qNrxklsQxc%_FM32`{x2Z4}z at iZw~t+>dw0&`XQ;(7xW#f~?1J
zx=i at j_I*gNp3tOhdUq%-Xb8Yg)|H0ljwlV);$3Q3hW#G)fWAddAGED##Le2AjJ2ZJ
z^C27|_B!kx at mhc-cVNlQ-@rM?^)=Ww-j4S^6gGd|IF~q`AXiCXT3T&>3>@y-*wUsu
zJRf--`gi1-(B7d%Drg~EF9S5%gWljf-n`G$+xn{1+xq6>H5`vndc3Vm;gRt6P_KJo
z4wiQYF<t$m>Ampkn^|z<^KxmiQK%l2{g6l`m7H7_C04#%2KDxjaMR&hVO7QO1KYxt
zI4A53gc15TttZu9paud|Dc5oQY}*S)6(~1N8l9u2kLT&3DOqg0x>%J+4avs6+jZto
zvHxIYV5}a>_PWn5XvDfQ5Sq&%94$@#QJ9+6%)?udSPM%%|70OdN7&<&Sybw<w^qF=
zbX_4e&tbt0^!CskI!Bl*!x1vfr_dXmWzIAP(*-+ksB#3}y at +j9XeEoeOSJRQCqrX&
z88#S6tdw3W=V at Al7F@A&yEjPBT!@V(4cJv;OnA~;Aki$tyPLkvK;d1wf4fW6zj-V5
z)_P1o7h!c~+meHbBDh|><_WKmqPOjQ?sfO6-$dmd8`QBNmeN6QvCGkqzc9zqT#udm
zy89bP^Bs@|&3bC#O+sV7FJ6WUwzv$g((^vogD>e#@8E56FT!g$u5zc#_gImZ(bB0w
z9khqgTxW at 1y$gvpUWSF_jk4NjkmsduDXA+rBaz#^Zq3oOlU6 at r$4qM-+I7bJtX`uu
z=Tdq{80i&@I4QmVMG}zSDKfo|4%1r&&Z7TF=>@yQ(|b)1ruQ(L^yX7~3ykzW0P_*~
z+s{bvX)?Y0S?OJ=qvocUGhw6AHyaJB!7EyyUUD$&e}u}m<Mm?jV0g)H2yb2smgVSJ
zyM at J?^s3S>C}jLDD8#h-1KW?0?e4DHeIe;YH*|6zi9j~6FBAwH at JXEvwR954=37v}
zE&D^V!BW_PcrgT8GFkfZjoFUodBi>VOT4cNS^^k4bw{`syMGP)Asvz~gA`!FE4{>S
zN8{G;y;#Ua?IgSVO=97i{rz)=M-+n#%~`aDEci_LHNkTk)lAedY~C#Ke+pg#$E#ss
z&YR6%T3>o=a1a~S)R at LqSoAE$F&>2d=&ggHxK)lzjwP!?MbI)?tceD_vHKl^86{|3
z1o0w-d0DPD^p({*zfeCKx)4JcL4CU(LZ3OP at 1VtiTT1hOn9@4?P-+te_V(ueBpL^@
zL*)%&p>nVRGFGDXF(E&^1uOcXC%hzUHpYCK)}gAJ3vFJQ9li)UHuDGft1(F_?$;Xk
zOQ8*ZpQbLw{qv3cCqOIw{$gjLaet|Ce;;F!U^A%``vE%9+y2my(A)b|NR{4>B-<dp
zokAx_o2j>_p}JktTdvUCK}v6EFL{xFvKpo<p+UTrS7`9${P6Ff!R4LG{~!bu@{3)h
zO8)6&1SJ2xbh3NoUzd>l^wvuue;(KWYPul#_lcGtcKdYi=syQ`N-vy%+cfrRhgZ|y
ze;~*siL9Vq6F^Y2O5`S_nvg;hX_0&iG1MfooB9HUG?I+hHDC`4YM#a{Q7Wi2<+y}C
z?_ia4bSN>L1J4Tg8KmJNw7k(Wkc<XnGYo-7sm2ZgYQpGgt2}8i(&N0rbMO|u9~>=1
zP^7%Av$DfQI5A>5sk2yE46sf!hBh+>G+?Y4K36g9M|GD-2fae3!*p~lhB7b~X=pTK
z_)~IYxJ$)A at 4D0<vIbNQwTGK&g>fuA1~qyd__6rZRe~D-=s at du6>@ij at Z~gUs|Q~T
zH;D%gg7_4xJEcg+<K*$JhIQjenS~K1=xCu2 at I+ENn%@B?$s$-_Ap2LiCGS1dk%%)$
zg^>dMLq5&SH-dXB=T7}{dIe`WA~DWYvs`b*YyDNDU6wjAXN!^bI6^yGMv*SeqDKWT
z++RQjIVKr?*^&k?@JiZS*<a>pPyQlvYmRpL-kURV at yPz7A3=#W4nAIx>i?wrKd>8=
zAKB?k^?#s>IQ_j;|0nT&KiUnc{tr11^ovscAL>7)`ad1 at dsF?NWx at q@+Hdc2|1;J9
zp_VcAuu}aW>UO63KdJtY*ng*1^`!bgss2x@|3lMxoy>Qo`ah}ukD5P9&Htq4e`rxn
zYW~Mqi=CSPNzMNx)Wb^6|A=LWG((h{|4GgNXsPvYsr7Gp(d+$E>)%rA-&!ypY_5-@
zIe1JdrPjZt*1w768ZqkzQ|sS)YW^g({!J{$38&V-q2ytuSIjy-xmqc~8KzYKC)NKE
zGrd38^>29HZq)vtdGr>8ME3v8WBY&V24dQ^Y0bh;_y5ptpXBZT5&M3`>PEE_NN)L=
zqdRKW(ZBU`9MvoFy(PIT=nt6s*yUY8yS_gndSB25dqND_Be4qdV2?zceIs%9NPLTB
z)#g4KEO3syPv*jy%}{tv!uPw7Y;#@Q;mhN$52G(Qb+#YqmModh??9aJUJw^gCzfr;
zO=sLqU+;A%ot?}FiBDI=+5d!9<mP^$wQ9fD;YNC~c|!De59 at I6O9j@=oB0ZMiKqA8
zT}ZFF-DgPqXtjT&JNtdMP$QjenFfWC$Jh`e(tLD>X>P?z_PG6>g!Z{zxC`m-%%11c
z+WI*8TSoai!`R!@Po?!Y$TFlAn_EO$$99<3m8kQ~`~^F+Usq=BYodxEdS4UmCFyuy
z(-&grll{J>N3p=aqkT{GeaDXOS7Ob&-TiggS9Js$Npzp~KWVf}0qg%>6fzm at bHX=C
z{8k~0h2KQ$;Xz+3;t+VJ`)2-*@+J12JWQ33+BfqD$`#soGJ&cazHg?d_e(v4og_#<
z*89<0?8Sa3xu408yff`v+?V^M<o%<dC4RqJ?U$1KseX*QA5i<H<bJAGp-uk$G-sI+
zKU at jz*ZLE3*1X at TUO#~bg<jXu&K;%KI<iU9>z#BW^g0HntYI^c*iVJ3YF-xhm(fdG
zf^8?aj?Pu}39V~ugF>(;jqOLn>rWcD&~6agi<axnGbYsZVAP(pc-yLGK+)EI$xhRA
zGXxgt`87{Zkc@`XlWV3&v>jA>c41##)cQQ^Iq|ADqKG{{-VokV5 at h?s&PPHz-yb$!
z$^SjyU-b<ohU7ni62k4g_x88lnvnc+AfV9ypSb*!mHeydgv+0-{b8N!|82-0xj*dD
zuMGqZ4Y?cax8E2D>{}wWat|2><s>p)@<DYjkt5_DvNCJi%3>7Cs2yVm6P4I$wT1l6
zBVv3feovEaxk+%x*a4_C#BQq-abm=BXJ at g9{;ZhGqqj}T4^M>9icDKcS>&ZXX+}Y(
zJ!$k^zEawg=B8R*q~n-`Vn}#R<`OU#X}H;pfnGe(p{BalCx1i5kVY%kMH<9+ojS^k
zuElU17>hLcD2CY0XT!x-u$ZlCFUN;Zj}P~S>BQkZRlt^6#coyWC-`+lac8F#BRZvc
zhA1$OZS at ixC&$}M#_q>#cB9hcX!(G$KZ28^`AuLlPa>j-T<jU~P$NDx#5Tf3-n%#A
zUWc3H{4gK2(T!g9wF?{FtTa1Xj-~vH-00>IP|QZR<@>z(OYO6LGhh0p_Q-x;?SYG%
zhZ-B*I at sTq>fa~+){j*Gp1<!S)xTdV-fsfum+IfA`u82YuP4>Nr+$2 at f6x2>ss4Sc
ze{c0!qTl<I>fbLz10JpV&fZ(p<?)qN|32!yGpYVP-p-Ti-$%TxCe^<;MnB at d$tTsn
zH(x*-=lz|j`Fnb=XKMbwqxYAl=I;}IUu$aqUQ77pys7zn%<M+J*EBVM&*zuB{=U=H
z{C#Tv9uu_Y`&~PqKTgfxWBoyD{vLhG)cn1AYi-0kWmEI_M&EL&9+YpOP0in@=I`l6
zwVlo1&vAU(W`3q9_`QDd$G2gOlzp3{*?Bzxyvcmsq(Yovq28o?d`rSHh(0MXDHp$d
zz4bBYGP*^^Cl^RGJ1-|Bbf>(7_oBPEI-36q(A#<x{%gxF()v0s`(Y54sXl;(@|DFc
znm29h2|G8d^?dRry=pwb6I}Bo4Ft#trf1;w(pWx~OR?68x9%U`Fv8KCNvolQdl>KP
zZ^+d{6L)~Hz at R$5q0rI%EUnx$DGKzarv~WmBb|<xb7%>KlDK7CU~fHipL02)#8L^}
z{N|UT5Vj3r2c*(3UPF3gpCMVUhtl;>Ilcw3A#kwXx)<&m>v6rIT#wu9EO0a*Me)%m
z=iI9r!%r51K%@-`RbMI*3C0Dbn?6y};ipQ>kC7DPOA+eBBpFUmtEdw2Q4h%-A07%g
z#pk?{b6E2S&c+%QW9x$0#9-`S=<9KR?Py+2`Z5ShgG=yDleJjgFmZb+K6(T$^o=_3
zQ?LD|?|0BwP0WrHzG>1-ao~e^8$2)Vz?w}t-><t198H%YesA8Yi0^wyffv(v$i=5f
z7CQ?($9tU^0;%c;QQV(7n&;v<EQLM=OQDNkhlA)NE7>>~G3Q~g^J{w3hxoS1w^+Kk
zbkFt!?bZ{oZ`?|&d@$X<1TU^*-#f8%B)-5W)Z_^o3i(Zk3c+jOBNehC at -r_7w2v~@
zSLdzt&}U6zzVm`5aUQ(G-IKQ6<1Ucjd7;ltVIAONr|vl(U;c44pC>kRe2x- at Rgcib
z>CnV at XyO2=iSf{c at fDC44NZK9_0mfn?d<!T;=2_1a6=HU718P24P>i^J`hzG^f9$V
zeRO6Z`LevnwU6In(Pp%LkS?$Sa<OxUw2DPp(kdPXHFQxStzuY*R?)xxAp3Rh(k>89
z7xXZ^Lp}7EUCbg~%#(I;vDgd(yLjH%EO3sri^Ds#i at xpqFE_qZ5@ipo40}KnUC_hl
zC at s5QVRUE@H)7pqJbS1k9W0dg at LS3UswKjphCQ4o?ZLI{_OQ~>1ELXn at CIkY=ipmT
z`tc3;KFnxD=nWn!eGb0QF=t1(3~O}_`;vYve7r#5OpHZ#;Ul814~)9*A9ejb)&o;L
zrk-z?*W!C|_>M%KsNcg!ipL6(1Ay=f{2T$(mn7<FU2s3~y<v$p<c41tT#B)Dx}^;t
zu)<1VZ*Wz33PM>f#Xf?3y=f(Cmqpt>^v$vGE4VG_>u6ak=ubo_=><Ly3o!{Fi;(ld
z_gCm^w-<m9%0u`DEE!h*LA<{h`w1wX^JF~Dg00~{aDS$Amht at Q^7(2kb!E>}rikY&
z<nz-+^wR%81G)H+o;5+P(}!`y=lk#lDD(3;`=U1SxPNjqH=|}Xw<X+1Hbu+euc875
zmys)-CR at k95Z}iUUv4$>-EN-w-;G;{L5?SH?UdF)K0eym78r_8DeL%N2i#Z=z46QN
z)wG%)A120SDQ at Hnk6Vhn`Qc`fYs-XRO)y<MkOGme;XGYWQCX#QT}KJ*$#g;Y at ZrMn
zC|$XfuAJy}(Km6GKS(fL6I8k$pauSF8_6h at u0PVrZco=&T~F7e5M1QfNjzN>DDx=4
zR?x|APuC%$vgwi??xE847T>1vdrBmw>sC66NSC=!BRS<OAv+X1E$GwB_+XDP+3-7G
zQRjemT+t_c4D3zX#i6h=1AB?~aVTt-fjx!XH!)dFKMc(oRkW<ni9poQ=C^(tvcmr&
zDr3h3Y0GZ6zzEbGQSE%Hh*TX#MQsE%E74FlzWGC=Clnznn+xzY_ at A(iO>E;pdo;Ks
ze2%%3<8K}9v!GZ-0=pX5KUrM=Hse~_BXJ!_9*Wx8NY{9r8`}H<HD`y~+@*9~#^Som
zjO&RWiR%j%*8wp*J}7I#vuHO}PS$9}U&!2PH<8cTgyd?vb}#y>iumo$LiYvDt2
z!~Ae>T#D-jYr(;WM~AycL at bL%(mUd at g)$-((`z43))uihBZg#X=OkoDM!_>!i5{!8
zofv*Ek|A^)<()Ak(UpQ6YEdH-c|TF3E>lK%VLlqAg}MM8E&l^%-q5-5w3RvZ;q{g<
zaSvUHFUvQKP(+^@L};`gENI#V&G8_~RwUa66rG&r_W+A{<z|%j0rDg~k+NP^XO3nv
z6|2!1cH>e!7M_K(64#dSA)lBVTEYduV)*R=P>pD`q7~-}s*kf%MJt$z?>c#d9~zur
zg=Kj{<D5|qUVM%<EBra`8C02ItEgn9D=5A+DMZ9_pA1sl;eoG1jXf>%%0sl9)4oo-
z`4H{%^yjkvaER7Euo at R(N9Hq5?e+tv0|_0N`La{{?}5+u#l_zbg*z0-*%b{{mA-~R
zeO1le<8mu&YjE0F8K|nQ$(>VQJ3qIkvAR09sv)<gHjulZqPl7}vT~gIh&@IJM4HIZ
zH-ViwJk_|j>Mxko?HeSie7e1j@=6Wdk-fpVmVt?p|E6(a at WG5D3q`|<BTL00 at 2gB9
zzSc95az#Ir#H1J&(NW~NN?;-~$lG6J=c~<xSZYZuA+UnHB4p{b>(Xv_Xv_L${>h;|
z+&2^Fzst(}twXz~UuKI#+tBa+3_u{x$OAFL!%sxGs?RNHmuG8#*)#LnZ0+?uGjaY<
zzs#GmwXX+c{@~F5yw`vF0HUXgji-#Lu1WjIp*8o-{Mw;C-ZvBHH)LgAlC3 at 3FY_&j
z_Md*s2%?7$=MP<%w$h<p(l_&dhxTaSOq~Bdi=>2nka$DC=Q98?`SJ?!aQW3~@9w3w
z^v(QaFYSrGnK(yG-|a;){d+HMQ@?Nf0OB!?!$VW9OnYdcc6Hy(H3PM0`)1<&wyewz
z1GUxtGVdIyz1?qpIw18BtWF(N3s8k+cT9HI)mAS$+h0>T&voql>Z<yNz at louud1fH
zs>bg+W=fsEzJf~6<cj(Jk~mB{e16pEss6cD4fv3}f40e~w05??+B3O4-#2yw70)Sk
zB_;7V8<BN~|Cq`CxgB%YwC?e*?L_)+ at -LbVwRNPOZt^d0JiABvmo`@SDF5QB1wG0C
z*a;QYohBeonMgssr-7<~e}01xwUn>H4{tx)jCs<83CHD*n0|I+O`tK?b<D_PM&=)N
zY@@gwwPe)jk@=%Xy7J@=JcMxojpm0?)oPO_PuI{-Y$FW)XmJddVcG>#wX}uVX$KDI
zo3$M7o1PgW?_o?!9E9b|b4;~}gRo+G&aoMBuxg2Me#;~#X25Vx{H~Q4=XYBi>@kUP
zej6ml`E7~w?2b6t0Hm9aEF%!I<i^29ON_^>ON`{FgTk2-<LRi2gEdQx$9sJoj9#2T
z2amT+Vm#hgB*x?28VCD9Vm#h#7ziC4b4rZITOctWuUBF`-dS<5fW&wlm&d_wkQk5m
zZi(@D*GP=VyD1L#aU6cCAYh_d9K?69EF7HQh&b3diA`kBmPzbXhRu$HEsTR*5eK_T
zVv`xa`{H2h<6v({Y=8Fb_BdDuRR}mZT}~W~K4u<GR~QGI76+Rb2U{EmTOJ3yB at Xsb
z9PGI`*ycFcmvOKxsvvQ29Sn(s<;TIOxgGuNj5t_z9Bf$}?AkckZE>*2;$R!%U|Zr~
zJK|siFjgL&j@&pHO=v~a>2a``aj?2LSaTfg`Y25KqO=RjyuwrU{UeERpz>D*xNs7J
zqZL1q#S;f+U(x5}fjO6^7Y)p9%IGt#- at u%rf!X5+W=-jTiaOOadUh6mbnMErHyDrZ
z(zBbo@$6t(fA5OSW!-r8if%l+eixt3hn_NI{T-rn(pz-?&P4te56qr4Fl$nO+@@!g
zpX$mp)w>YSO}p^SE4%PamaM<Kk{;!!y7Ek27vmWXU3;a&d==+L-V{;UD;8yMxmos3
z>R)A*J at U8B^0{I391bdv%1_P5xs}(&W?5chvh(tytm&YCMe at 6nYz;PYRiE(#bFNGu
zKQOm7WBkAoS7a6q%)fMxqJafXeNP!!*5|+d1{MG*8aM(Jpd2r1h?4$-S1uV6j=vDE
zvJQC_51iHK#kjmqHh5J_UM;3vQ|#m_hFq<2d7WhNdPwq0MjA5)h$L#F9V+zIp<I86
zD;M-Nf>b1VT}QTEGBEqnKKj6%ru0bz%hETd8F^MTFiY=G`LtNlo^R^IHlIkhYY=bo
z!2IIKe1bl_;I&@z622HY$n(5}^4vptUQBsjJaAcBdL4uzZc(`|>J5 at DXD|H2(cOF}
z*&dU=Y$Ie;w#?-dHmNiDZc6JjIj(q~{={#9Y!D}l-^?WQyEDoBevtegbtI_2yF1pO
zH;Zys(~`ySh9vSUgIpg=e))Uz^iH&^D^41?IW4__>^Zg;8&B25Jp2l=B9M;zp-WpE
zwCcr^2Hw;s{nHH72umVr#`H(x$5zx|%S9Y_%D6l at 7jc1EQ{PMXxFWMP<I41_`j9*u
zB+ZdXYsd14GCOJDhCb<|_OOws&$hUUhd4r>anc`9AIgwtLySDLB+bB1<q>{E=;s?-
z{bcpA6DSulJSXEKpJ}I`?ULsCq~sS>y>YBV=GRQ=OFGK0Ws+u(F34lAAFV at qK9+G&
zU1z7CY}BQ6P~DY~{lK1g+U8eThw>;tWtU&nhS5=0>5yh^T*UcLt}a9SjNTs^bEIo4
zVlV>IwZGcnf3v}FwZU(*!Ed+0 at 36uDZiC-xga5+@zsm;yrwx9$4gN11{2m+pUK{*A
z8~lD7`~e&MK^y!b8~kA#{1F at cQ5#&1h(_K{*B*}q<W;&xi%(*YbnVGl5J<Y#W`nP^
z!B^Sft8MT#HuzIE_*xr$oejR;27lTHf5rxX)&_sh27lfLr!^n3N4oY>EC?iBd)WpT
zJ+7F0>Dp^C7y;?pe{AsAZSXg3 at V9O7cWm(YZ1DGO at DFY9unpdBgKx9JKefSW*-Pw^
zu6+>;0!i1tvcbQx!N0Y^zqi4Ew87)L5y+E9ZYJhP*V1k9OdGtf4Zf!h-rok_%LaGY
z;Dc=Ny>0M)Z1DYT at cnJ@18wkwY;alw7JH;?!))+_ZSX^E at WX8I5jObYHuw=X_)#|a
zNE<xg26x%u^dj!qBVAK7Xp#5QwPS7Q$J*d-8~ivMe4GvbD;xYo8@$j4r)7h&N4hq_
z1~0L}C)(g at mN7Dpbj@Q!f3gkkwZSLb;8SeyQ*7|5Huy9fe7X&OnhpMI8~h9#{7f6%
zXM<PR;FUJG-v*x-gHyMzkG4Wn<Hc(3h;lStJ12(Tz^iTW8XLUU20zaRueZSiHh7~A
zE=KZ5<cK3(TWCXnfen744StagzQhJ!W`kdBgE!gWEjIXNHh3 at wry97AX3=}3h6o{C
zU8{Ls+MGuC?<5`dJ?WT;aaF=q3sgP#7m2GmA?iER at uS3NNr@C6x|go~Mxu0O95XQP
z--qFQO8f~iA22tDezn9gG#7Cg^U-tDoDry|Jum6G97M8F;^U*}UlaICG4UF6+n2`R
z?+ALe^1@>FfxxF*fIM at F!2>m0Z{0TLrcbi~dA45A&xpbI7W1jUj=|3o_~|kD-vxd~
z4F0viXU5<~Vhs7r82ns;pB01OFK}NB{(-=2V(<eojxwB$GvHDj|0D3fne=j4O4|$L
zWW%*vWAMubZjCc2`g9o5aP4-JUh!Wn at H<Rg4!dig3EUcIP<+n8$#BgYXHfWi0=LE)
z6n`4q8m?L642u6t0=LE)6rYm at 5WO|dpzzfKx5gQeOmQ3!hQl>$oI&CD3fvlJQ1To(
zkm#*(1{yn}V}-!2aRwFd0Vr6*HEWzf;nxWKLE~ZkSMl}-!{M4W&Y<unfm`DYN}eAC
zZjCc2dCnU|e5`Q>74Js^x5gP1Uik~6x5gP%ysrz~8fQ>=`QAitjWZ~Do)dVRnJy(y
z(O{xqY2qs0M+Ckq20vyWqF-&|D&D^f+!|+4_`&-U{Zl5rlII42uQhQc&!GK?ew~Rc
zd441C^)YyQ4$(ht;)?%80)NKDp<Z!(A#hd8YntLee}CfhoJp_n4+Z|biBFVg6AyrG
zY1f+dq&m4*;Mb^2O`Yt2Akkl~E=~MWf&VrJ{{r}M?L{+QRg<1Fg!rtBp}$Muw8GFh
z)Je`k#OEaiYl_bTfxjGszasEgWAIVGBtEa1_+)vu9QX?DDixiXu69BHpBQ at 2P~!7?
z41PQC6`GiJ755awtX!gh)1*gsh~tmB##%smX$Cg~AFjP^UMu>ehY|ix48BU>@5SKL
zhZFt#G57}p|1buxJDBLhF*rHu;aYnPezm~2#oz}YLiC@;;QtW#XEFE*hZ6l4G5CuD
z|0)JQ^Dv_SCI<gR;NQmJ3r7(B_c8dMd4&HMga1L`J7e$>hZDUuexmZ_VS%Ts>^9el
zO*n$+Gh^^q1l~6W_a900*7%9y|AoM<@e_qNA4T-m_=&;?jwIX~KT-IN0v{9;Z~oCl
zZ;hWQ`X>Z#jh`rdN<PtB<0lILkHD?*6NR7SB6 at 55MB(2H+!{Yoc<U&lx5iHto^uT0
z*7%9S?-2OGG3gqIhU9SV5EE~eIeHoJVSP55xT@!GCS1GQ#9=n#xDvRk+a)A|S8e#`
zj-hz1aTpcvxi<I%0=LFt6n&p#iBBv(S>Pj0ITiiyZSXAucg4^jJ(l>#;ui>fbPWAE
z8+>p9 at v+8XlsrBg{0 at Oz<1mW;D;vDfP5iBKn2^kbkiZK~ITikIflr9RhaE?Jtnm{?
zUoCKJoJ8Rd3fvkGQF!|C#K#)<Q21nlTjLuF|D(XIag0}`{7>27p9<U>-xwz8-Qy_U
zSiDK#*0{%fNq?UW{=UGiaS!FO0>6rH=NH=G7u(=B0w1nf<0oRB3}h-jf$$15Us~kZ
ztH9%xuQvsKrAe>ktU8hS_)T1`k>3LR7upJ$dQB7SjBqs<{X4?9%Z3%LbD-nsLIc0s
zAucsqZ$QTtg$BNPKXIwiygwaV3MHSR;!>mecRG$QGVnI|A3A6roQ~g0d;{uTI at DU4
z4}r%^?+)O at HEUex{50dao5#nezrzOquMIwALVP}6;KSMYlFF~00=LGOXiX6vXBJaC
z=S3-<X116927H)ykBO`L^K(JJ#>CZ$r-b;dRhK58-wS+o48C39t77m;Xwb&f=c&Ml
zYqci5lK&pyE3_9(T%CLie3*8hx)f{HD7_OV5ubV!SA1>+zCwH6#MQ|Mz=vrMs7sSi
zzD|6s at iE1x75EBmy-BZ5UIji(Yg3mdpIi^|vBu44tr8uJfv?b>HtE&LYT(1PC)B0M
zXRnip{wWhzCl$blYt}fM;{Ujye^!y1`IT`p at qfg`RlZLKK3ucL-xQxafUnS=GwIdI
zXM)c|>e7_+crWp}*u-h=6CHKH<K_Exz*lI`nDpx84dBDH$JC|C|IpI-{LcU$kAIU5
zey0t--3C8!a(w>7ZSV!aS7;kd`PIq2HuM{8 at WE5!$6E+|n0B3FtBo|&tknzre at tBI
z<Q5w~&j@<8O9|^=B%giDi2v_RJ~<LU8 at S>rArXWG{U1$w6i;!yD)1XjT=5xt3i1E5
zi7Walf!}E2ivC`KuP|{%|D(WFEr|7=GTup3iT^Dz^uHDOUrk)mzb^1wO<eImq at 4KN
zX5xyzR^WG-xT1ep;D0x9MV~&6`254fQSFFhvcT^$aYg at o;JK0}A}IBGrjD$vtJ8d^
zPc9D>_@<ui3)K7l*svTJ>+ at AET<CJSM)9`{cq+>SE?4Eeih2-MR0SG5l_ljB_*YU=
z9vEF$QC06bxqOUovRiDjo?lUaF7`cRSE9e32weHTa(}hIGT>?mc*=`>^h~wCp}~Vk
zhz&s{qel5keg64%)fJU~- at K}tfUmKp>byq3=cK78mj_0<>Z<&e{`0FE{66!A2fjdg
zU`(K~t{OyBh*wFu*XKD2LWx+%s&x6Vff75sYwKm?qmD7}2wsu*i|eLL^Np-(sIM5A
zPYUX2^Y|#&_)=eSRYP4xpmLtiLkXS(`AeoUO^hiIR0RAblgoW$%PIn(s3{p)SzA53
zQ{H3a@}5vpInO^kIWdglF-%)j=Py6M3JFOLb5afQoaS!`BwIE4oVQ-lFpZ2dIbuh!
z_B2!!)hwDaCqdSeyi>*(d40Zy#<P7MU(eW%Hqtx6MgK<8zhmg%X!<vX{uR)_vGlKV
z)9v`Z1!E=~`~Hi^lq~4fQafQKx8Ns%mAP9z3B1P0o%P9JC0}BY1XkAjB9g#tjC?sk
zGFZv?OeDezwlmw`peV}&$1XtKPqnXf6&+To$5Nf)DK05nAY230>hU<a@(uUks|(b7
z7L-j~0DAGjX!bxyRktDJgfS5nbElS`U)(r<{vxxY7xhkq$6J+OQZgpqOF!JR1wGta
zN!iJh%SVa#fmHhI0wrbib`ZDu#*mWEqIS6_)WUr#7h}X6H%^ypu0J4%RkW^Mk9L$@
zid{XPV%w-k?Y^iZ^I5%orT21K#kf22SjC;Z)Fzn2y%=$H{u)j&c`5F!6f3v8d-6Bg
zsZBV4lOFLg<Ev^a>K9F^v#&76NT=<}M|J7d%RR}cExQ`;)Fj1gS4&6PvrKX?+Otyf
zZtzJegOiuqMD020Y95t{UCCy4uiG<^x0mf%MxDGI?zDbZiQOIcob=QtYR}1!I1zi6
zotIv>XC7}a+p~<i7wuUkc6Zow(o>tLJtsfnMC at 6PH}twa^LTsNo at La%XwNFKyThK7
zp4vq1x%VQDY)_iQalMzpW|X_5hh#>cy!0lR#k&~u$sLV=b at Jv~Gs=Q_YJi=Ftkn1%
z#;ZD>8<B*^pm!zSgj*nntfp1W6<4m&kt1nx49ytG7ZW%x--42{<rp`tnCtIuWXD8|
zosH?CSYnezgJiuH84ZisM>e at TwxGt!d&U&<Jq at b6Zp_^!Gwa7H*5*h+k10tuD{Ph2
zy)2N8 at E+nWyR1FLT}~$1a_>$};`TI5H^zG68c+9>E at wS#1 at 9JjYp%zZe|Hq)8g;tA
zzE;dI)XZ*(tDKJ6yGEI1rnI8Y<*KS_ at Ye^dX%1W871>I#k_j0Wa34}Kd3rVGZG5AB
z6Q at ruDR=u&&(8)jztj4 at GtoNh$0saP0m;-uYO<R`NkmOOB$D0K%5D at X(wNj-K+g-*
znF%E*N$(j at f&z(B)+^@oGY}}+c#MgLpM&uvBuQ@?PeKCqrt$QeK#2_A$o5eumeZ5@
z6=lka36zBV>a-qAOp=~dO{61L^FE#ART5NV+W?AmqrE6lBBm at m5}l~0C-W=HloJyu
z3HjBjDJLdLPpT%$loJyu393odlzUI0L`+%sxPLyToR~mK$gfUKIWb9k(UcPtC<&@b
z)RcQqphQerj^Y1&OgS-ul8|4WnsQ>2^r9&zCQuSolc*{0et{xgx;b~yi8&`hMV(ns
zqN4Pk`6Mb)5|opm{d7s94p(n?GN+`LHx`e=u7cvzM%Mf1jP&{DE?h`oH*2V^!N*Di
zi+l at c^TM=KJB%pivyGkYw&-M!g4*ujO5Sz{N at F*rlC7=c?n`B6u~2>Y#IksGUoJJX
zlmxL%R!NXb_GyzLm15O>sjNZkB*?{>bzd at bqe&8MUN*~;VDoDHF$vl-StUVNs!->5
zzkX1*l>}Bw?MYxITO-9uV5N2)b)S`0X?35M>BhRxiWS2Im>HXv60v7VDa|zrd$455
zP6DSmGIhM0D^AoMKM*GdW0P`+O$xQLh3!0Zjm4(qdOtpqTU&|mMbq at B=OnSy7!#Rp
zv|MT$#dc}zny#s>pI=dJZ6z)PS@~Gnj7Iy3wfX+}m352I9;i8=W;d~;Ip60C%&V_G
z-&gIgnH!kr^Viqc)|Z`JNo at wM<%pzqm;kn$44bY;&-Tx$XsizS at F{A4!0#zPhBioJ
zxAn0I<0p*nB#^LUedPsa!Xl(COISY0LGr|xgYG0C$1y&U6{dpc*Dj!yLQH!disOo0
z6(n>s%2p=2lYmU4eC1*XqR4bxSw at eikCD?p`I4GI{UQ;y%QkAdlR(ripHQix4n)n?
ze!1)AH_B<}zx?od$yCeAusPjjClhIuv5NVC`l#;gQ}2}dE^blpl<%(XPVba$#P0D#
zH>P)uYodG7HS9wVR8*eptDJYPZ%##3HAVBYdE3KiRIFGTC at WR@t_NRTZ3E15tWjOg
zr}tB!A~WAlftswc-ap at 86DW&-Yp~tehu2k5;YY>lHs9`G)Y!g?n%Stt&#tJhsHyay
zZSyRaHcl<4#U2r?t7<xpkyST%ly6J!u-HU*VDW74)z}@CXKIlI{0jpvTDdu;eyXfF
z#HvlJwIa4N=lh~lK|S7%tBdGmp^RmD)VjY;h5$MlYhaAKEL8l}si=jcMeJHyqdiWy
z`Ndsv+I=x&*<wO7mhJSK^Q%y_rurKi=L^TXt7fHoS4lG}lVNmzb<d<swlJs;3wK9l
zNOc~Pm{_?|BH4+RY`c?Kv)7fh)LI;qn_P=;chalIppuqclVNgGYqITn)fl^=I<{u$
zM(I!!%=Eg9WcZgcieZu!sMvPPTGY~+q$O4{Ombos+s+bej5<sh)xk?u-195W^_SQA
zD;uJTIyRc<c7qynjB&}`tm4(IaDqv7MW-U>&0nr#@dB{=z{!4p-PFdKnyQ+)a@@~+
zSDNvLFxS|LRW(%&^I{0Q{!%tK8rNvI(rd at 2&Zpr9?yN?mStnmaHo0Pc<crC)hCn at r
zBg7L?;uVzREeRE8`>RW)qGWdcJ#pX}Ax2C;l4mfz%O|Qai1slCT;zyJ?cA!$r~#9%
zzPJuAr7QK##;e<E8~o83Qcy*&*}-g-YpkcHDo}-KsSEt&ctu{t{02cgt(<E#CMnUa
zVx)bVr^`>AIvFz3 at KVLuRSR4gDe+ZSS2Q&E0(e0Z`b~3cONejBl60w!+=+}`;}t1A
zjdnFuB|ibYMb<s>BRF+Ssb&MO^K9=#r4gLECljl|yQwG6se3Xp7urpkIH&H(#H#;p
z%EUQ!PbRgxqx<&6Idw~>h}LrV6vbJgwyW^fHP-um3##e^jTP16wWV3|<)wWP{u#d?
zb{fYK45zotE4+^3H!}Jrh9A%9A7c1TjQ&Z6)7JtOfAu0{l84?>uka$A(?R$O{1mP;
z`~*fHWcXhgz4{^w at i~#ve<|rRfEO^_L4-J>@xyHJNjCUg8~idG{I?7*Wb!=D at KFqJ
zNVnu1&+w;h at ck%3I4EexPwCTXgZmjyUjtC|*D##NyN%(LcZ&XyOp4Wrx0vClFua7}
zS2CRQ-**p-566FRgO8GiPGZer{7V=<m*LYHPH&M{^1sUPDu%x+amt>X at l*5{>=|Fq
zw`}mS{VaN(FaKgVPw$5|_{jbiA5Oo5;hg^+45zOnD*4wk{9J}-4Y2srTkRG7p$zBz
zC)nT%Z18Jr at S?q}czJ&55-0ti%;c$I_<V-HInd(6^HFnHIDO4SrE56Dxjv^doR`yT
ziIY6H;HUVU$LMPq|LqLt_L(PN=1qLK{P_&$>HR|DWaso15f!gv5C9y6bG_})aBk;U
zGo0(^Mu|t;`J`V6_JTjx&to?D5c%GDl84*L6%6Nmp0vRogX72B#PA6I4Ci)!8^gJs
zhZ)Z8yzf3%yqv$&1~0O~7uev}*x*z4wc_RZI9PsPgY?PsYb?XLJ^z~FT+e@&c(mQ#
z%;>q at -o|il|HI{r(n%g}&tn+Q<u7J9x5L#8=jqxY at n}1oEk9&L@$z)7x4{oRz|tqr
z$6FZA`MhR>4?ED}!|AVMIOqRohI2c7gyGx{e`Gkf!vlv{@pAqJHh7H<9<srYJILbC
z^J}uiN&jW6o|(?@a)!@j_$-E3GMv7mqw1 at 37(ScfEez-N;S~(0HlgBk4a4cHJ_`Q>
z!%t<nQ+|&ox*SbnI4?(44CncNx5T5%(fy2`m!n4*&dbrLTucAF9F;Jf=gV}4^K$em
z!+AM+SK`s-=z?LIIHJqZW*hwY;TAo&!}}S|^%J(i^AEQ8aQd4W&iUWTa9)nqGn|*B
zeol)&FGnL7&iR+v;0tW<Yi#hML#%jtew`|D(*GIE4liRkxAU(KwfOLS%sI@$xqTkT
zaIVjD7|!jjS>hzmE%>SO5 at ht;Zqr6s at pAhd%y6FGgBi~4a|OeBy6%!V$#XN4r#R1w
zm#6DC8+?z$Eqb26%?#&!9<;&x9AWX{^a~iy`7dQSx6eN^oZIJ{4CnUwJ;U3X9&(Pf
z<l*>a8~j`weE*{?K0Lp2B~JR^jGwZH9~eE)uc7ioHyNPic38x4uD8o29&K-}jGo)u
z)ePr$yVuc(5C_G}?J$?&JY9z~oZI2;4Cm>3K;qGMI5S^F8`JK6*#<wxWzqBex`E+b
zKQG$gLq}PBIQ=yYkKoU6Zif#soZI2I4Ci*Z-!WFaod0MWe2xv?WP|6Aw)pe>!iPA-
zLHg(Q;YkeV?TS+v&f66;7|z=jK8Evl!t61YJlq~GV>q|-+ZoRD<r9fV+xZuap4<5j
zhI2d5lKok-bFTl39EP04|62T1ISoePvRc!wi^B1FMsci&!sYOb)}Qq|c)a(q{sP5Y
zBKfpM;Zr33TokV8H`(BtY^O!1cP(pQQM}hk{u`t4KS}(pC|uEhWP at i({~I0eb<96f
zyz3<Y6;b$C68}dOo(UgM$HP(h1_RbM+tkm0X7wb+n=Sd=5rrQh at du)C8tbHERTO@*
z#CO<~#|(V$ln!NAGbMd?6i#(69YdmUML)s@?`u3J_`i;GWw(1X{0)Z7>=N{EGW-Ze
z{}#hJ|IG~N{NG_X=g;Ng{JA`1 at hlyrA1==Xff{&9p8p&A`2cwu&px at GaQoqQ!tICK
z3AZ0RJK0_FhI=u+((Q<L6!$MF+?bC`=^>?u?vx8T-6Z_fAo%J5(mzd=VRSoZz73w@
zW7uIzKZb$W*-w>?{aj#!ch#;^{8Rep^<hujkDMNfX`hU at v1gwRexnU8yT38~OKs>^
zGn|h<P+x|Q==%IX**_zkuN!HRIQ3util1uV{)W*XgL8#H0UA1p507`FKx5<0VSISJ
z>dV#9 at v1LQ6Mr7>RgAw~yqy0RjQ&_A|3D at Ww;!6rq9Zz8izOZ{=f#Yk%elMq<px9i
z82SIpaIT;48P4^yFH2V<`nk|XKg$>&uAcylmyeHeyW;qvj1OOT#Odwqfy<vPJ5=p(
zvIjoTcqvO4*YoodCwdRkqS{@r+R%T<=<mU~Dt9Wsh|fn1AHwv163!L<GfZz>o;Mi%
zy^POxhJVcPK@=el3TUiI at qa|((e=r5jQ&16qv$s?d>g~l(s6-<ZhIO3XC)rZ|4l}J
zKb}$iKV$eO4F3f&z(M>=8UNLp0v0&e=iogIoF3!$^S#8057*Bra)2qC{!xh&Jx}kT
ztoZydlsM6I`Cqc3-@)*Fmacx%5t2L{A7X=#w80A*K9TVcGMwAh?<G$1bA7hk(0|Y9
zxjsw#S^DAp&y;wyKL2S$|0JX5`h23l!JqhWf45rVq&Hq)eZ+7+4xc6qax|YkBp%J@
zL>qeDhTdmGKih_W38No`{F0a2Zy5d2EFZ6C_)!eMk>T9_A7%JtM*o5h&g)6?t*V?R
zQcs=&ddXHxq at H{Ld8YXDdh%0-cc-3wkn!R5<aUO4r=EO>@!|F4XAJL7J^3)>!|Tb<
z8J<Wz$@Q5?J<0WxNIl8Zn at By$<^SJUPjY=GQcrSyCQ?sweI`;*a($-iNn at O+H|xpr
zF4mLNx>!#>!pb|ZC#kQb>d)@flaDe!yq^4$;oYexA7gxYJxOz|O8)NDlaDh#yq^4;
z;fd6fT%U>5lUzTE)RR2DiPV!^{{M~jB-dvm^(5D4BK0KKXCn0^*JrAp?EQL at uh&ha
zJ$YIe>&bt!^3LnY{;YoPPCfY=<In5K0gQil>d8%vKd&eEV*I;PPyUDT=k+9wt*LrA
zk$RHrGm(0d>nD+VlBYM3dXmfkzp<X=`b?yr<oZmcp5*#Wq at LvZOx2UUUr+LNjEU5f
zr=$FK*6)5BWuFcj_n<Xvs=U(}3mt^NgrCA`EP at Wg_h9t{jqT7uIA8bvuEc5lgpdEI
z{kcTH5kJL0ivS!H^kw|>7#=Y$D)DIkZ!r3o!AtSq&hRY8e-ImQj2IWS8Ml0n(Z9m@
zZ)W(OjDH#lh=Zc%<D&OSJX-!WjGo3!l>D0*-jDJBmf at ug|ALKk^86~c8RtBijazd4
z-^Ru#`8d*nY}}9Q^E at _A$mw5a^jtqKHtxsi|H#JuczQpxq0i}0S~li=@|hkEx53BR
z;FE3eSvGh*!}<8?qYUTv|E$Ex9(cYS#Kzw^{gDzUdY&&!ZRoFJ^gLhQv7!Hr(er$n
zuor35&?lFtT;e1T&zI0ZK`!i^kH=msaWYdr9{YD2`nzrDUt>5Qzx~99&lilI$J<X1
zXp;O~PKU&!<vi4e{s<fTxs0BV-!?FMK7M;4!;fNidpX0~A*-qfZechdzkSdKm$1ke
zzJ5LtKXMl2k>+7Le#`yH8Ybr_IH!a3{1kple(pzpU^v+r9Yo(%Ke86jDE{1!{K)X`
z_>pyt5BDQKF}yo|WIf}<{m4#+cgK%B&G>LXqA`0*#E<a&O2m(F{U_o_xIPo{BV0d;
z_z|Ao|4V*^=Sw1fgy%~leuU>sB7TJDOCo-R=S#|u82yW%vmcqo>WxJFNJSU at 2(1ZG
z^*Q$=PcoeQk#88 at 9Y4~>_;5e6gW=urBP$sn?nl05cz68BD#nNVk?$DZ9Y3;~@!@`i
z#@1ARCE`bTekI~Zxc(FIBV3<}_z|w3MEnR(@Bbw~!t*5&Kf?1R5kJE7B at sWu^Cb~K
z!t*8NM}D4uWCrRAI;fvj$^6J-fg0`qt8uRClUpQC^fMU!!wl#BQ&s;HJ?}Tw;#oSV
zf5G<)Ung;*=X_qVq2J7KKh9PE=nES at eJMg56g-QcO4mS!Kf~~RhNpq2qMyoe-ak6P
zW}Ipy8;^R9 at h@U{AI86u;e4F!a8eA8X#JcZaT4o!{FI!hFg%^{Z(ukdXB(AC+++Dq
zlsNH!0YAn6*9^~K{4ZoUA7?vGj)O(ZKUw0$|3${Xg5k8sSH;`Ja6Zmf&BoJwjD9i0
zr!xEshEHMm4Gf>e at H-hko#Br$d?v$RX80I}f5h<74F8GYyu3_c<8|B)Z?qZTJCKdn
zal1O-X1wkTM$heJN`GVq4$3bs4<9$<`F at xzfYJ0fOPunT=i^Qr`or0H7au=7!3Ljd
zgU_+SFR;O{U^pK?e4XLEUiwhtlrEkxlh}9{r!SW{(er${*M|N{M$hwQC>vkm{M9%Z
z@#pyxvZ4Q-#G~_Nk3nF7gYduNr^;P_iBtaaalAYm`jIyDr`XV+VMD*jhJJ|+{S7ws
zD{SarU^ut)iN8QXaZq{-SvhTBIH$kJ2ERw*q)$E$*~aMkIOH=7=i`vCF`UQysSW<4
z4L)>lN>yyRK9b>lJky{y?BTb#xSrKhbdS<SxT;U(G=+&Tlk~E<n|MIt*~A2g;<H}j
zgALfk1IPn9a*V*lAClKYqVP46k90>OAF1u3>{*(>z>i?~;gS#KJJ-W84Cj1~V>q{y
z2 at L1-Q*7`mhV%SwU^tiaN``YeuVFZs=T8jh^4!XB&VLodIsbJG=lp5zk`B at v=l@@U
z8aU at qYlP^C)-#Q9(Gksue22n$yaO4|<5lnNi00#D^jseGK96X5Xpf1Cm-DAKKs=n<
z01D at F&S5y`Q^#;FPl(}M|H~Q9`Exrbp32S*Y2c%9a)Y{HA>j at 9r^=x!zl5Jh|Dq0p
z7TD0MGD?pqenem2MLy><`tI;qlq5cCPgZx+by1S!S(+q17bl5NQv!UrU2%KJC8gpZ
z7A=eqr*C99w}*omuKWT)c?{3RH5~+P6=%jj&VM1J=lq8;obx}F;klA0K_AL<3ON4@
z7(M5|H^Vvq5e(0jJPCSVo>Rd2FJ|<d|A7qW{10Y$uH;G37I{tq=f8x}bN>4<obw;f
z at Lb80p!eiC1)TpfM$h>VWjN=r>Tu$dOaE{X>AT|0_{aHQ!uW9h`!k&LKZN1Ak|#lL
z%X11i|7J$d`R~VY&i^om=SrRgDPJie5fJ{1IP}zBl0yZ8ZnXGsw4=y}sY911M6Y}V
zK{FXHyVL at yW4LTW38b0fD(wVa&v4l#708_omt9POv at yKDJg0!x at X$eWs<t9sZ>4`Y
z2$x+has7k%Z{V`4B#>;WE239zJi4K5hH#ZfgcmS+*%csItP!G+=w(xyF11;VUN)Hp
zu6!TStF|lMxSY}NBPfl3H!yr(hTqNb{TRN6;mVfi_9lk!&*(p9_yG(T3BonWc_70F
z6M%yP)t08~5ez?w0C|jK_%9WRu#DkD89tlgxeQ;(@L>$Ug5kp%eiOqFX83&!cQSlE
z!w+FNU!Qg;!})yBVGPfZg^k#aV0aG0^B8_4!&RSxZWl8A2u44R;YTuj9>b4f_+o~S
zWcYH1AI<Pv7 at p7YhZyc+IA32kis5`dOZAE9_Lq#0s*4EEl9dtZZ43eO7{c&l6^JmO
z;bR$I%<uw+&tSNl;nfUReKfkgjN!*K`fC|Jj^Vd4{8tQrjNvCRd;`NzWcU__7czVY
z!;2U`KvveIxA6?mW%vY!k7jr=!*zz2FnlJ%Co;T_;gcBN%y8vX==Svt_b~c98GaJO
z+ZcW_!(U;zm*HC(Udr$v7(SWd*=&4R^|k4?li_8IzJTGUFx<=VsSKaR at N$L+7(R{R
zmot1i!*5{tsSJOV;mViM?F|e+jnV&y;WHRMKss--pI<Y4ABLaKaGl|2FkI~mAU>+i
zK)0J2{h5rumEmVGyp7>LhCj{lSq%Sy;S~(el#LIP=WK=-FuaoCMGT+K at BqX848Mrs
za~OU%!{;*mVTR9R_!fq%u^qa-jp64o`W)GKqI8|h at L>$EX1JH(^BF#!;WZ3j#_(E(
ztM?C3ysGU-x9?;0=P~-n8D7uutqgBq_-70cFnow?6jHp63_pb73m9I;@bejdIl~t+
z{04?EV)$PfegVTbG5kV?J7pu4<Xp_~I)-1w at W&XwgyHJ at KE!7!!>7r{F5&c3$1;X5
zQy{|U7*6!6Jv2l%jtRSj(a&Re6T{DAcr(KvVt5O~S2FxkhG)sfH^qAy!v`_^a)!@f
zc#z>04F3(oZ)13f;s0Xz6%60O at K%PW$<6 at Dc_qVjhF`_-Qy9LS;ny?#w+!d+dA^3>
zA2WK2d%LXHzGC=wjDAM8aY3}#GQ5J}M1PdLx0vDd%-xc23&V+ijHKVnaN_Tg_-70!
zdR2!G7-SF-Z~ASPosxYRPW0y*WZFW86aU{y{9=X^{q+*(^EJeOyX-XlHH!WwNuMP<
zV?;~*pOyF^h7<qiC4MBs>6x~}j2mMZPV}!z`s*1^{0GZ^)Cz_ZJ<Z|Kp}xmNyy>@L
zB%xSq9Ys%T^ywI}w-GA&Re#dOaN<wjnxezY at EZ)s_&>5?(fmNg+1f~a2G<DZsk3^2
zb;Zble_=oyIlCfIp^ZGdp+OVC$jHy@#(WHRRDN;e{P~MK^hwz{6_x&J^%Yft29LKY
zzocYLY3*!(wTHfRO`nW!2u!IfDRIvh^z-Yg#aF~fiCdNax<E-85xS?;`RgkJRkbxG
zi3#9xPpEAOM8zLBW|s@!1{TCBa#wdFw at tmPmr`#lz^L6VKxF=_ at 6Yyj?yGorU*0PT
zlAZDdbH3N3kIwhn-BRk+w}p3SzV}SZ6VCS at ivF1KRW%j$i>B1sSGi;4N0eRpsBpb{
zxhHw`ZC7KTn$*}6^K~lu$u9Aoc{&yEZnSxs at ySkkqBh@C(I;Yc@*~~5$>w?NyT#_E
z0LjkzPHkQ#e7Cjj#`I9i6SeuCiarsWmmh)OO*YSC-z_#T1?Y8~R|(&JHs3=jPt at jn
zD*8lhzPM at ubz^sv&GXoIi_J>`dfnz#!grs|_fX0cwfWwTKC&No?1YNy>fJGXV at ACD
zTD7JK$u{}~vwoN2H%Ihn0PkdXU2XNEv;8%d^IWkbc%!HK=T<df{LVky9DK7z?#$Q=
z=2bL^(Y+EHr#p7qqB_5)7=v_4i)oBB at t%)J`j4KENH)%TJ|fxk>G_Bz8^a2{5Rrc_
z)i*sJku@@%NK~g!?x-laMwx>mr4 at B9S5-}ezdm4<CEEfYS=m}5m6Vh$;H9l(^7QJm
z1tq at GzKPQ(mz2AGk;Sij(skC?N?5Fdq>5#$G`lhOUR9c{ban&qKM(054NeUb_o{52
znOlNF?G|H8P`2cj&jd~F=OtUTp&9PuXJ%*#3ALLHEg{)<lcDVn*%Ila%hpgQR at O@y
z8dU-klP$R!+G$mrm{7f>ut>kIW;Hs=%;YL8(W*8vy(L+;L`s0{cyyw)Udqs at 5|Ef|
z$yHjXB_J`OdP!kXB_J``lB=*pOTccCEs+u+`}jZ05|Ef|$<5GCOF&{m?Vb{lm~6>a
zSfV9hx5$=A36R5SKg$x3m~6?-&`wK0VnXen5|Ef|$yHdQCE#ZzTV!Ly9KG(O6eL%1
zompC<QtcK~OH{bzsw_cU+g0H at 9JU?R at eGJsOISRrWPvtvZe^v<zmOIz`>=?*+TZB{
z>8>!3m`mwsq`5PZWwWejM2=vdERoHe?Gc%yxF<_!HD%Q!GDk8`n#i)x+A|_YFi)1q
z*2F`P2p!EnSz?coEyErWI+A(PM4oKSy7i365zLb&vZ{^pd!lxZV4gIQRVnEakt3KV
zO=M-uJtA at h^Q4I^o2A7)B60-tq=~FbNRNmd!8}<aTaL9SWRBvVETPR7T~Ejy$vjyi
zGbhy(LPxVtSZt(rw!gvf7ZDGY2aa9fuME`Id&&c&>nf`1Jsq~e)p{bVZYZztl#lV1
zlyt(>mETxXbzY<2R~M-FEGV0}0FR1iN1M;aYpZj)5 at 1nZOB*7ok<TC8wFJ4w`bvHE
zeypUct at IgdLp&#mq+*qa+vl5G)99;QxDaH%n%esL71h2ftjek&9hQNtd at LobZpt(t
z?cj8cbVV-y_&EvKfn*Un at 6aUJR?zZ*YxHdYoQlTkfDc<r{Q<wH{1|A1OyyXF at ij|#
z{$FwD0v}a%=kckCgn~N0Y7~)S#co_N&hU^ZPzNCx9^xPm at j;Uqqd|GZBxn${v9dO;
zrJJ^Hp)0$MUAs*ywIfoBMQyZNV^_CRr4$89Tv4M1je-^ysrx^3{%3OL<afB|z=Yn<
zhs at l|e9!lH&OP_eea>}g*^5eN6seZA22VIgrAQ(gjwJraA=2<txde!rZH;uuM6uyn
zx5cJgYM3>a_#cN@!%AnQ7cS>mBQ6uy94;uYxwUv<UCokoikLNp_#cN9vC?z{r<Vk3
z9Jzp6mWZO#t8OT*tEsG{yO8T>xe|+4EH><h^4fV7rNqozc=MzR>Rqvls`488VEX3e
z3X!vdvZyuJ6q*~;E>2%RDe6Ki%f;e;XYqkpv~&h_$cnlc-Gn at 2T&ZB at SJu|1S7D-i
z(xl>HBWS^=d*OJYFI6k9MYY9O(Nb-l!=iZgSz5^j%<#;`o72h{RElVSmqq4KM=iv+
zjJV4 at Hk=yc${Kausd0yR`o8dJX>53Qg%0D`%aQuBzR(W0Vwvl45>v#bd_7#PU|WtV
z#n*lurAh_aa#E?x*5=XafeyNyR7)L4Iy$uqw&kW$yk~xtDivtUO{I9>{U}u`(B at nz
zxfd{g7~L9BIx10KM_-QO_dC*j*B11l)}WRW&=&k*6r*n>6zN~Lix<wHcWdSRCEbtf
z>z}HvE3c_rT+Nf_Eu2?ZT3%CAPE at 9HhraZh_in`3Ui!<fD19Tv%<`MlW3ge^R at N*^
zf7>m*v6i+wXu~2_dVBGx8MNtNesg7xG#5{*oh5JG?=eMeRJUIT7%A@=>8VP^Mr8l~
z4E^$qxbpg_OT{HSJuJ=MqVH*2_jVO$R)ecJbB5PuDlb#%oorfN&;mvK+B5w&b+zRq
zz#eegtm`O<T6uZp at +w^&S2(i7na#b!X~%%PdfB;3%iD21lD4bt9Hmv?k3ErAD?3MN
z)h0?$q}9sKQCfA?R8OSU%Fa<*b%je$q}9sKP1>&giXMm?RQT*8UHj9q(enA?JK)eI
z1+2Rcy(Z6%Ltj6N-_O&(D{^J%TBr4pL0b>?kU?8_^pHVY-h0TPEu%eS$Xcw_YQS%w
z0&fZDY+nKtPusjbSv+lT=C1heJ0`g+JA1=CXXP3 at iP1^5YUfI{OOAFCyE<NOb~!VL
ze{xiuTDEgkoLU*>s5rIu%u#WCbA66xZRYzaH|eym)FUrYoT`O~I4WxEVi%d)E%MuR
z!qs#@>83(DPg-AJO1~0YyJ%tg{CRatN^g&b3M&>ZSWvl;e!q6%qPoh$%csq{fDYPJ
z+{)v0X0@=oW)VSk;-HOKhgVjW-c&;;O6bT>%_2IsbHqbF{m4H51aVebaUSEJaSy#l
zztg*xrtxDOGOsqi1n`f0 at Cm@L^WfDp0`&a9 at ZigUf4v7^1^8cj at M_lT`8Rm*>Nnzb
z{s|Ahfj%n+o&Ob$yUzc{G at Z?F^x&HS|D*@6es^2X|C9&c4E#@f at GXG<wFjRBe5(g9
z`idCz`aeVCuJf-|z%=Omvo!9?x25T9{x=?c3h>W)@LK@?ya(S7_}_Z)9e{tqgYN{q
zXj9kr-v{^?J^1v4=IHbK{QsQ?pU1!JuJhtI>|OJ#XTs?GOCEea at QdHdclAdA|34nQ
zdbXjS|Mwnz6!^t5;hJAP?@jmr!Gn(j|0^DR3E*G#;1ht~<iXDYym<D3Yx}9^73l4^
z*@LeF{y%x})qof4G}rv~fPc+{Z(yDu!;;?qd)<ToCg68?@T&m-zaIR<fPd42PXd0Y
z2md7C-}2zw0RN5$zX|Xi9(+6C-}B(ra~bviv&)0u2mHG|_+!O`M`+Of at 6)*J@)HL9
z2Oj)cfEVBCu734AN<IIF9{dR4|Hy-n1AdPOKNawMJ@`3*|JZ|9&*9YD?-LKc8u<U}
z!7l^6*d}wG|BZm(@4-I+`2X|Z)$_LW_B-IguL1r~J@^fPKj^_f2l&5v at F~E5=E1Ay
zuIlX<qIH_<{O<t%&w22B0WY5A<my)sUDosW^5FaTqQ;^@=a2Q^)$?X`zPATI1o)5h
z;G=-=<H3&se4Yni0{Ffjyn4>A-hSfQT(0xK4EXzb at bdxR--E9Q{P7<Aa=@S9!K>#B
zpC!9-di(dk=)G(Etzo~;|JZ|X1AL1IzZ393@!(ZO_545e;MH at Fb^Z|#zK9!I=ht}f
zGXeiI55AgteffFRgI@;tpL_6)%!i2)gE;=4q*tDtd9 at vXUj_W)n1U<+FyKdc at JYar
z^x)NVr}g$1&kA(S-v<0e9{eW2kMrQ$0YA}$-^IK>|1bC8KLz}i9=v)kx9-2ngFmZx
zy4!|yewGJ66!3FA_%VRL-h-bC_)-sEJ$F1`HbZ*(eavI|tz*A_{OMf}ei`83_TbfX
z&~^VC9{e|f|IZ%$1AyP|!LJ7VHV^(`z;E^7*8u)DkN&fcd42s?<H4)v&+GHA&Vz3Q
z{>2`=dd|J>zr%yy2K at CNd<SU%B_4by at Zagde+v9dJ@{jfqs~TyKL3|_ at L}fl_P@)6
z&j<dyJ at _HO{}m5 at DDaD8()_iSd9`i-6aoJ|9()}5zv{tH1^#<I_?f`J+=DLz{7D}C
ze85lg;OhZD-Gg5a_?aGj6X44|_|<^_vIpM+_(~6c9pJC^;9CKIwFmza^ZNSZ3J-o0
z;HP@<+W<e=gWn1G>pb{ffS=;Q?*)82t<PQ8U!MYgwuk at NKH}RW`~3Yi9(;em-{`@g
z3i!Dm{8 at l6^WcX7euf7>6!7AlwCnsE0eEpv+?5{#_yr#P1m^YahcMtH)JJG?h`SrT
zlS6{}p%<ws@>T86si_0#ji^&xO;E45h*CqLhA+qo;`qfw^j57;)PB(yX`1*XAFh%g
zroYR^X5MDKk)?J`8cJ_PnTN~Ah!tfX$H&X*ZF*>6KR1J#oY|jM6T~%<h;L&4^Xh~A
zYPR2n1S7uLkr(Hw5ubGAV^nX%w>s88Y2j1MA0JTv^J&H*f4gJ;pIZ1%NB%tOyvQH=
zk_;X+|6444nE9akpF{fz$RA-osQ>)X!bctX!L;Bbf1G)>ysFt~_TL{^_=F=rkQx~I
z%a{*p|J4 at 0nt3y?Iet1-5cwOJ4{HDKS@<SL{<OZ>-^_ea`+wKMCms2dsDh~et;`3t
zf0KnzF>kiFIo_`y_O~-1)c)VF at STo)U;2VX^$%Stdwfv)f6c;&9r at n0f<XQV^Fi&u
z+`>nhH{07B|IEV2nGb6JyHCLR6OQ~r3tz^3Q2Q at E5&Nqh`TZ8Yf%%~Jucrn@^RJ0{
zv%SsnJr=&1`Jnc%ISKodj{JufzSXh*x1EgrDdws8tii1RZVTV(n18`3*snH7gWB&S
z3m=Zl*b}qThq`V5?Iu3G{cCPNHi%vk3YDe*%JX+G(|gsQ)%Nf8r{er&aS6_5UcH#@
zcQx_I-_HIf2F3RG at 9Dkif8OG6jY}}d-)iw!i-T=6=>9*@xaluE4c9+1E{%tR{O1vm
z>K_sZ>uAvZuhO{bUup3-IQqY1 at izhgAAvta`$r<Fx&P75{%Q1o`e4rg0~UWo9Biba
zo?$Wn#r4N#{pVTy(aR(l<iC-4)c&i0UtE7|`d_j58yx*FTl`^hu#^V9{^I<N=^uMK
zZvPbf&q$Zj^~Y at gBH~f~8`-axbJ70Wfq$#T-|6VzZ1Fb({|?}<p at 5>L%>EZ1FY6ps
z{{_UO`fmXKH-JA(0_2Z6`uh=&{3+mn6Zjvs_!Ex)pIH1I!2cHTPd*dZzuM7XOgyT8
z=$}QahC+J(dk6S;So}?n{?{%3eBc-7ug&FeDIGvU^FQh6znyqg|0wYP1^7>=3yhFI
z<>)_|c;qhu{@uX;xW(V;=zrAWF9ZG$fWKrQu77v}eV7L7-dTgW{u at s`s((H3e at G>n
z^M9wsA9eKau=tyRe-H3CoQ><BaP%)F9 at W1E_&)~zGX`OQwWI%3;*q}<`2Pz0zp(h5
z9Q{d)e+%&M2mZ+sT>qq_znFMb|4!gP0Q_%T{3%EO8y0`wecji;2Z8^qgK_;k9sPF^
zkLn)*{?CAaz&~JrxR^dnL(ua71>%vv2>3roO=2$pzqI(Hj{db4e**Y>0squ<aQzdG
z{>zC+^{)c{-oW2s at mD+g-?aD}fL~m{ZnppOA-Micj{dI at kLte)_{H_>rhnkM*q?Ot
z=M#_oN#GaPubciSEdG?Ef1SnO2K?gsb<;nMPJq$mZrk6Tj{Zr+qx!c4|B1l=p2Z*L
z10O-l|63OSKHwMEpP2Q(?;mmfqmKT2h)4Age@(P%_V({7z(1$}`xB1-Gl at t30^mOl
z_%~Yo)sFu47JnT0PY3?QdAR;fj{Ygcqx#PQ{xg7om&KoS^uJ^AR|Ee5;BWjVT>q4#
z|6bxz{TqRQAn>1iKK6Gy`Xj_6e>3n80{)E_fB5qB;uHA&zuw~C0Q`f2e-53%r^(&c
ze^E#O4B}D!Q^0=?@PBOaC)mG2HbdsGx&PB?@prJlgh_Gy=Um{Qc!8|{F~?*S={MWi
zFY2ZbqOJ6yg?aP%O{Zi2|0Eu at U$jx0^!x=N|9(sUyBG}0e_bJ-|4q!V&?`&t&Gw&7
zJj!1W@}Cd#|BU at +`wyHX#X<SQ7vlU;=7aM0BOc{%1^Ej>{&M!4`JZyk{~JsGlw<y<
zE&21l-o5|CK>kysxc|?c?AHGDD{654QO$f%``<=9YX1btFYbTJ<Nm0QtG#H+f6y`i
z1u>jIJVlCv@)r<~@~;B<#r;!e{=3<4_Md-ee^CE#x8zSc=HF_`-wyI$0`kX(;r=sr
zs$2j0F7xL4Gr|1*JipaTSiRxbZxN5$zu+4bmWHzQUwQs-EXcppl7FjX{)xkJ|7my3
zKaO~mzY*k*gZwMmZ}y*CuaFfF>OcD}`Ky@^YX7~K{2d_wc#wbc2;6 at TIObo&yxD(3
zeBvx9|Bs1B?O$?#_x>{x<UeT1e?R+!+P`!p?mtbA`L87&<!=G`CxQG)_M81 at z?E+O
z=j4lU{s{9y?SDM+D1RRRfRVoZitE?S_2-T3H}gN at nEwS!{-k66XD#`wKz?!mr<p&0
z6z>0{6K?H)C-Y|ik24?C{)>r6?cWCSi~CQ_{4ZPb|F>iQSP||&Ddztun<4WzoOvhT
z3?&}rFIYigX(&tomFs_T|Ern*CW}8gU4ny|S1+c&+~RL!f4=4y_kWoFjTV19`xhuN
zzncE_7JoDFUjzIfvEN*NuDD7HMce8F6_GWJyjadZ`Wnp|rZZ2cC$k2{tJf{eoBg+%
z`ERKYaw%s0UnL&R{|#LKdgjFbpSb_QZ2y`|aQ_R<l;95o{0oRj{wN36{o?**(|`VG
z>`%^;em;%DwdlV8^+n>5zlHrRTK&cSSEm1Ii$8v~1cTcD35!4RFS6nE`d0w|tTDL$
zsX5Zmr}3 at zPY{pl-^PBu{*}PLnf+$}oq4TPCNgIEM%GGZ7E|7{<WDkxhXS}9v;V$j
z$zR<h!4l>~|E;2b=KK@)DTq&+%TM%r2?q7w2Z=}Rw}Jio{1dm7nEo%*b-u{oK3Do*
z>CYA57qkA?5Rd%PZ;Mhxp at QBL6!o7E{LixATz{>-MRIg{Dr=CXc1;>}sU<)2LHUOf
zkMhs?UibWqK>qKuzgzx0WX7QU{o|JW%m?M~Lp;jg at L>1+;{JDY{x4*IxBSc9^1orr
z&wNn+ZI=8k&E4~h`{&L46UNE*>z4o9ZuvJbZ!UlB%x^qVmZScf{r_>|QTwNUL}6(t
zIZl$I|BL(Y&HQIxhVwu8kmQ2;&kE+v{H at Ff<!>Y&<<DP3VQJ9wi~H}*{2y5IFMZ4{
z{|)1D|8HhKDF0mIQU0>E-Sdn4 at 6G(rvES at J*FEEwf7Aq=zk&JaDY6{(*X%#Th)4Nb
zHpu)199Z-paY?Y5{|@$>`IDQZF`~r$DqQ+dWAUe2rN5OwEd2KZ|2m65#eUkn$Qop+
zU6T$lZ+?G=dB?$=uIjJKIg!ruiub&jWeUEG`3KYo`G1Vj(C3L4Z4%Fr@=en-@{{U!
z1V#PDDGBAz=g*(b{$mV&^JY2WQbTBrhDKWQN47}5uTieqf1;NB_0LI@$|>@TLpo;u
z65>xFM=!$@Wxx8o`foL^UdLPfO~5a9NfoDZ&E)!<{kMqyvKGoN=XKXuD74YSU+l=A
zP3H-P!}MR`$cyv5h#&39_onkqh#%v~-)Z5;I`SPB{!5Ph+!CBW&U~Rhv*>-q7+=kN
zFJl3!X5Q at Ys{g2BRuZ3Heht2b`(KnlDEhzHq*Hu8Pv6RZbN)B5pZ+^*h-8h0LL=xr
zkC=aE{x;^7M`6mZ#xEou<=?{jm0#rlKFGg<{bv4l_EY!F8X{R^q0mlC{({%!2ZQqO
zu;h<CFIt7RA7nA<-|t!t@{gwTJmQmP{y6)C at _&bUv;7+#^RFNtwSN`J{{xW!T}%FE
z$Ncdrxc_uG<{wQw%AW-J#lEEKe`>z2WWU+|q1WY%3u^!OE%{5BS03&L8NV8T*OGr9
z$p0gdznIR`p#D?ln140%X8&n%%)gR&)c*0`id5PCzXjyqW69s at n13>zXAvedf8N%#
zK6C$q9P66 at YP^_ul)n+=e+1-zi2Y{&iLjq9qfoj~B=b(b*>A~T<(Pl3C4UO!e-z}O
zP3LJ)`!%q?z{snXA2oS8 at u>asUl65+Li+cQ_^k=WtL5U~EdCZp|G!%NCG0Otr;x|b
z#V(QQ|C`01a`f-F_*;N~9q^aYc^c7DX8+yi=)aD5)c$#GqSWm32kU|VS&KiiEsckQ
z=KoU`e--eHT{^S<ha_<QOC0@!h)4Br1O8tD|9uvJwWI$Yi@)H-?(P31 at ON1Js~r7r
zTKtW`|1|JVo{rnU)zM!}JZk?A;BN)~7WSL#&kpv>R+N2F{58k>(0LXy&E(&8<ZrU@
z?>X|%Tll{?@`GpK{JR|aB^G|SBmZX$|Gpz%NavYQ`+wlb-(}%D9r>3m{D+SG06I^F
z at _*#W-(unSIPy<e_`QyN-fW!zV at LiP3;&5D{~yes+_i|xciZJl*qE-y)$3!-o8Nz7
z=GFIwD#jdNLp)mll>APvDb#j`*nfP5{wZEf-_HK167Xw2`wNZfvQ*jT;=kTz-uPH(
zBJ<{S#jEL`5Z{MJjNSK83G)&4L4H;F)#MZCJf|qr<g1vUV;p}q`M$)b+fNn9uVvhR
zc|4;;`~8XjDPFZ7a*HBbJ7qylL*(o0^ue|C*5v!rH1pV-AQIwc2O8GU@~sbYYS)yL
S=q=)_gph_oR6l(%`Tqy$D3THY
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..9f8398984e671e77d1e85b9054077d6a18196f4a
GIT binary patch
literal 33776
zcmeHw3w%`NnfJ*BGiuBUN;O(r2OKrAG-g7$1gXtH0%zb1qy&(ymtjZ-k|oK+nF)jz
zC7Q%?I;677`q9?iwXN-{bzSRPiqv8#3TiJRbwAzODy=snDyWpw7G(d=d){~EnUfhw
zytID(eecgR?|c5|xxLSOzXaFTnKN^9ax at ikw9B;An?g0M;+j;tMkH&rIofPNdlue_
zrv%U0c+SD|Nj!v|i|11^eI8=BOplfEI2oTWV~>n4knx2wE<=2=OpizWS()}Cu9WF2
z#1m!uQW;M}{5hGv4Dsh>+J|^Lo_F+5|5 at K$Fs)!!lhJ<~08QV#+h`o~Pe#rYmmUB8
z1|xBK{<>PvLBm?$*_T*=M55NSZ^ttIyj~*K<mdFS`gvMnR=x#7?|@(?9%A0H3khQL
z4(xwLKd;u-?_0D?KQQ21=v%PRu#PntJ+D_Z8HxN0N<nBqN~w3i*fpz|`1H{QM*kX5
zu at GV;uJja}iMXf4U;TW%#q1}iX)q0P_04(H3iPiCp3S at cjbk>NIlo7S5)Jvai4`u`
zn{OmKUA0!L#|0A$jY~U=<NrvR%Qt#<78=&fLr51|Gmjcpr_1QsQ3xHKcL|k7-*fR|
z1A5(t^@36Myfg-eHW{C>&F(BWdLF4TtbJEp<-5{%mG9~u`gz at C4D|260sb-i$pY(u
z;NAakBBHV|tQ~_y$J5J}l`D5|Al$b=W_4kMVf}^NWh7P=4{=%lC=#?QpQ at DbV~LTN
z<ua`%k85YGr&u$p59+=7sHDsENWKR at rl;8G8F1^PYxe4+4HWq-m(foZ4c3aPA=r`v
z;W@)HJtacU)1ZQgF(e12V#}$AoW+nc19F4_ at Is%)Y)A_DFI#|z1hgsvOCX?G3it#F
zC^sa)pklK#fs%v;JN4e1Z2?sz05!z6paTNBYyl`vRz9n!e5i1!Dx<y_*6(F8#!$2~
zT!XpCj~}OUvVM<3PXBa?_|!}GWc*&A`TO8%;6l=dRDt>~_bu`*^jrV!Ti~~jK3orx
zXas+tMqt=ltsVYEoo4p0s4%S+ZX*F-))yPqPwBl{KIxwW%qT{TT410=iUa*|l+3Og
zmu=siQo|bDS%dQ4LcqQ}VwzzX{WILgt{F8pQLV at 2uYObS{Vu#~Cca#1CKi?&i7!KR
zr#n#nOu%|7pwE2Lu*k6%8eE|7alLmhcungG6GZ^qOll6To>F18nV?tvl=cmnX!#YL
z=bF|LvuwBVIXGeM+A#)oO5OVU&4~I2^mX?lrX~gFukn;9sZ_s8h3G6&&oQmtX4w&^
z)XR_!k~#^o$cFU`fAz8WX(-tWqrW3ZNZUrvP8M#@BL-`(zM!lZX;$BCTfHW~Z(#L}
z{_0jw3Azl~hT(j8tjq1U2K?3V)DwPv<}*g$p7=OBTcV<)Gjj{w<eCx_Rnpxz(0P_w
z_9x@|KMBW7K!QB8<|OMeXz}=ax=J*?_vKto^IQ8KMt-#YGf*%6J!?Frn%+n4mlU8~
zziLaiw)?H!0pz}ys<45A`saZ__0G7f7f>C at g%Hzv%d~!KSkD{QZv~&f2kj$g at X)(d
z?Q2l33#8{MpKiT31`AYPMd?zpBFB{Lj-k2sQaKirlqsSRsUNQpiqfkFP!cqy6D4`X
zD0|E<N&Ti$vR%}XH7?}EDxvqDYfE6*cD?UYc!N6zzX5mH?KeQaq?&6aVs3w;8MWrm
zeiVmUeaz5j{x=Fj at 9jqBP1s?N9_0OEc>g at J?3i)=F-Tmi-}D1yA1_n_`g$Met$p6d
zN&hB%82p}aPB*^7=QD)5K%yS)3zGba8rf3lwS<}r8cBS- at B@{Qs?=^W!6jXR6lEW^
zz}nS0E>QN2_qhLhm_oMv1GM4Awq+JxYOUkj51cpXLlT*m{SUSI{%dl2-gU)h)EwTK
zulM~59DRrN-nagOqTFm0ubWeW54n2pZva?_^&gp)?=JIM=EQfY!x(%5XsSN~RBZOo
znBuqg_<Qyqp>D-`3wb!@h~HXs+7Z(lG|RT<{L)|cM9(Wnpj5x%M(`u;ecXDoXS*wq
zD4ZIw3a3=R6+JMx0-wB(4 at TfzWiNMjEpX-R{#%4^F)<jN2RNBOlrkht0tCaX!!Rdd
zRvsnmj|%Gx$@-M}_V_6JR5hEp{&nj2&}oflBV at 1VPJozK^w)Zp7}hQ-GrPY{)SXLh
z=X%k%+QYN=IaTqyQ33VdUtwT15(|rs&n(o8yoD}m%u8tM(2RM^<3|5Oo^A*?`|t2<
zKun#ci)uD{fMVmp at 84|)WBZX@)4D^D8kiO>rumJb|L1l*KlSc;+t4q5jI3L1SUW}I
zd0QWiK10+S165`*hB-078&<C^#M&tI>7!vB at g+7&yw|f1vUld^VjQolF%xa|B+!i)
z!$_=`MEM>w at sJ?&TRQ`NZ|J at AF;bY;Uc<W5GbLbQ9`rNn-)sEVF4KBrziziXBhgl3
z^t}<E53y)_*P;!)Zd$LQ^Lv^)KTM?T=@B)wK-tSw6y5&nN3T88*h00Osybe;+fr-o
z>l^6$f!}%)5{n_R^Iqx at tp5pEuhOJzijfeyA2F+|JbLeD^hSY1d#OLM5*iQK8bx<|
zreUG?H9b?Lr;rl5ts{Z5eg5l at kk+*&NRTD^`ZfrvwFXe+>y}avw*_rpjFE5a#h6+6
zt(nH#K7I6}8ngO$@i9iCSC;9M$zcR#{v7$#OjLP{Esf3L#uc&7HY&g8lI4pc5>;WB
zT@)_p*xBpZgh*TF*ROj)`1|L0BM+DS7>VxvpS9;D at a+|b^_pqDA~J-$<fGt at z*)5c
z>&*b11?ITV5BK}wexv7 at YvmJLNdsefidc;5XRrOa at gO+>&vB#rv9%9wfB+2UZ*)FP
z{w*Qr#%K8xR}04)J%1_CZzNYsdG-hc6VBa23XHO6Rd;<C`HpqhU#EA}LbMGrIXFz+
zpqr}Q;(aIo5z0~5x`mBhHO7NT$a#rjnANYwM<@NP#%gen7x`B%^;?e`)J_+ZB5RlU
zCd6X`ZS)+`^{-G#B9)`}#wi8jzOf)SX+mcggBUl_w5es-0+dx5Z7?w87NhywlM1^B
zNly6nzQ;)m`uPsK$G`p&s_R!=Wt6>ZuK;{OF|n6kA#Y#_P;Xj?$?W=l at BD$hVz)-L
zz`-bWj at AJ)5thSMKe<;6^u46_QokzK6DEpn39W&ez0U=z-;7U?xKH1_(AE9tf>q7>
z=AZf-^S@%|9J%cH-VLUluK0T%Ei`g=1gihg`Lw_1^_<SlgJ(f%^85bh?e?wc_y5xI
zzRmG|Z|@$xk1R}b+(tHN>+D`>uowM173-ZKVP3lhuZHrKa?}p;Bc`+HIK6vh(W*{v
zm)*Ik7G?d~wBD43$2z^i5>khC+8G8>sEVui1<9>cGNQr-tn1L9%`^sY1MJ;1So!DU
z$3eaSPASo0Zs$J3E(P(KFVTjRPOW!8;_>N5j0@@G(;7ZLC5NEo2$dXuFq0Njd^v>C
z7-bJ%7?)Jb`&f-nVsKI;lW85pXc4ep-+u-wr#(LkB${Zo@=|<Z04)XG8XBHi{RRdM
zIW0^dqWooVQ02%pME%enqV5e?uaHo5yDxQqUkp%~iC}>8TL;7#We-q4L|5~n3{b5Q
zBnPMv^>u&40qSSeR#OAicv>gW*#Du9PY+{gT8jtc(~)6~Pc87u3CE`^$#raeGU+|b
z_|$TcdMY+PZByNaVRejjd^(8~WgMSYB*&+V)cEu?5+8hgqG2XOPy5XeHa;~RAg`px
zr<grH8HuapW?bKMdT$g%2<?f<okXf1G>?mtYo+Rj3-D^v(6I)HY*k0-vbQ&nq?>
z_ZT_9!VXR$SUR6JdJd at ZDQ!r3D)W$XKjr@;7*fJnhLn3U4=IE8kg`?{DMN~+vyhJ_
z?`ud|_E%Z&{Bp>6@^`!5`Tyg|Uva_nR~b)6yx#f2aK at 869OKEx_ZUyke$6qSe313d
z+^plte<jD0h#F7M1 at Q+TPrPE_a7=~uz862(c#=1maXcC6dZ!|_-l at YL=z-Ky$6lX^
zZj~)|o)L?k2M5m)OQ;%q-6s}1_Iy#$i^UFqr^OC`zt{2puW93w_17JjK9yx$YRWt=
zeajw~CV!;kQu4q`oL7Cs>z!MNj8A{J>z%)s{kU at jWe4O&H*LnrP3{i#SG5-Qw)Ayj
z>gWE3Yn><4*E;BC?Dqe+U+=7jXHK}@p;aSa?}+tJmi5l+7aijh?LW%>xWyw~?|hOJ
zXI$@mIXONh*E=r(`rzXeotF)nT<d-7KiK%x`1|zni4HNaA2)Qp<F}qQ`svz*Cf38)
zU`VZZcCq!2;p+ZV!K%;eo1enE=T;-<ZQMp!wqeM6XBX|q?aR8}>3ux at jMzt%<6ef0
ze^gs)3$u(fw0D+aOYMK`aVDb188NaBG53RQsmXg1xYn?P3IIWD#Mw6=468tR%KjjK
z*>`by!YZ)svR>Fm2QXI%4kDtj4-;g6?-$n(WI at w`QBsFt1?|&3p&=G;nmToPI6l?A
zG8AnIwa48pF(g|%!>!?1Ow&@|S4AW3%iS&QP2n#0vPe|XiyYK1uCM7mj;$%S-N at 52
zGl<Ak(M?JR(0ihwXCTMeBoOtUoA#bJD_ at e>-^KeFBC+55^ZQPLaLJR>_Wxdr@?#_l
zu>DV`H>+ at aVV6<1Q?{U5P1~_D+!&8Ur%nw9g3)lOwKdWhY-x{$qj5X0f<L)qYTwqt
z$s*m)z$J-QIK92dv<{kOd&OQU9p61D5BN^O0gK+-L%opomft#NSnrr+zYA0!(t9r<
zu)hj7aCYi9JVB1ed2QcR(P8D*d5{03kTC4Zy2uE_%1KOjSw5Fp{bKwwoNHqekeq+g
zeGu9w>G>&++GZb07)PzyM{&~A`3f$093s1V_8#^3w-(@R=bgC6Uxow!12~lP_s=|J
zY~Pn__E+_hHq(0B%=v?;>$F>{`xBiwy?@m#vyYv`URl7p7MBp(Tz;z#*J~arRd<{0
z%Mx;Y{0W_~A*>a8=yDF7d)kc%XF<4wgjbv)8vXg=;2bAJx&Ho0q2J2akxidft5Zhx
zzB3?Xa29^-b1>A`=(mk+Dd!$E^jSNN{_!=&_Lp<_|C6yL^=T(Q9mJ=V^l2~#8NBg$
z2e8vG9E-jh_f6;?SJ}Hp-|_e;+sx#Rj<g#?E_GEz=Ebof>YVGfFZYOJ3rVv^9x4y*
z_S{NZihTc*EWJZWpxT!-)$V18#y+VYD%5Er&QDHgh?B>etw|%wR=TvL`NxmvoH}{b
z`dqC$chsg_4X^o^V$zPdY#QQux90SmrhU6$)J>;p&lQY9dW&n+{z7fb$)o;Qs6Bo1
z|H%UcV%H}|Ez at e#8SgG6#?6Jqh%^{~Dj5Hj7$40AMA|M+XL?&Oy(^fI2Gdue^W;&l
z5L161pbSiV1k+Z*gfy6T3QhMC)30*@*(S~vCQ=1MAQ$*9_gl{xTTu-u<k5vM*@fT=
z&~kJkm!L(PW&6;Dj54Zs>%E^BoyOa^4C%KHn`N&Bs$bT7_duG_Ux-d)d-NK**3<VF
zAl~P^kH6#7BL(y`4_7y8N4o=MhvxN9bL*q?N8`@GXq=|+S-Tvq`noeQ*}{RNN%tKJ
z?TeU3qR>O<zgHVp0G+_KD8Q?zahI^hE#@^p-fNqWcKw23jZxfVJchL$2Z at 8L@LAlK
zdlCn7rj;)VtnE;|wi@@y(4C;;DfF0S>b$Pdv)@AJMeUk)X(;5O)1>1Zede>q_7_L(
zzu8Dk^Vn9?F{!G~rpLAa9&v*}GU3+5EWrq-!7l>j4Stb55(gXNO^aG$Epbf&Ga_wm
zk#-xS!a}giixm-i`L!4|a4C&0zTwp8xZe9J2#v&<W at 4r5CrEbF<yhDLPmrJdiCM+l
zP<(XY97nnD3M7`71`-k6Qh3F*Uc|kK=jm7yV-ej7Nu6HeP#rg*#6VKL at 7gocj_I$v
z8>ju>gX9wLVTkR#3kO{_y at xxOlcdY21G6RBw^g9`V(*^50Ymq{X6nYDsi($O3Ob~b
zcTstNZCbxG%idDA&sx;&v*p%f`?pel%>K3Lp>d(ftnMm_SDO~jM~}%)WdSaDC6>TJ
z&2G9Bl8A!x6l4-vrB2^PnH^k=!a%(M7Y4S$h<L-e>wROe5oyA%K&&kd#abGJv3Rtl
zefd;(W27C)&c=94q}{zN8fkO4ceb|DRH{7^r|DEn6I at Io*~QqeLw+0L-YH8%O+h&u
z3x*mS#XM{X;rj$y;^DSfup=A|#=@{#nWbs7X3UuCE?u~^vpwGF_D(3DP+sxbNuA=g
z^18~Z@`|c*Z<+i6-T8QEwuyd9n>BZ#hGo<MVYq`M!WbFnd}+Rx(^Z`F$-)BH2Gld+
zp*!XjPPQX~Rmk)iGA=<}E7KQHY!(&w<Sr<3AxW~A;Gr;ye(LC(eV at IH-Vr?X1Kd~S
z@)bcT>D@>e0!<Yu5O$|XX&TKbC=m9LNTp-DC8o=m=w8Zz9bw-oNpywOz7W1_M*?$8
zY^=l##8nde6~*;M#W&?nFDm(3-t;1OfBy8M()FW!MHM%m<SUxeQ&3y9Bu~pZrDzHu
zUr{MYKsvpsczTg*_NmIhIbW(bh4%}-Nm at Rs%7FYT{6jHx<<r-hMa5ssomo`UPx{v9
zL+Fj8YKtm*PJ*i3ou?F4)E1Tcm>T0$%?-9z;zg*#Bjgk<={f1fQS0;j^S*{6(I{Vq
zltAdEd_m7mx%0B;t3LM|8M9S)s#XDZx<5nVQ7LPEu2EESV;(H)$)8nJpEns!ar=r&
zQ0VZ*tW!xp#&Ho=CH23TUvnRUe&ihaO?RtiLdvsJ7LDo}9L~$Aj>^bSWmIdIQFl&W
z2Ne>eISOgksbFu$a}U{s at XeD_<-ld8%3a8uRdg^XZ&iNMLv^e~>Q2o&Cv%nX*=1EC
zZI3{oT~-HkdJ1klY5l1F{IBKRluPzZlQeTb4102aku;RM66R=b=(<zts(KH5elBTl
z{V?pw`^0<tXNv5+-pigVCC$|zhCR8zeNX>9CUsq&#Xr=yG*dl9P<^TWHuRUOS-$ob
zZCnlsd7A2V(?8{D^p`?IL!S7{p-edaCDG83m+bM=zvXG?r33OUPaB&BAD0C`KMSsU
zx%AI at nix^iLA>Q at 7Y@M)$kQ&$f|q5%$7jLIv*6UTr3d=+lUyxDPyMS3c^dr{)zFZq
zQO!*c^YEIB^6i#&N%UL5I#3}<zLHCQ0)?j}{($|Olz0i+A<^%1;QbOmmns+n)m0Vp
zw8<)&jNcUWDO}at$-=$~NjjC7Ch^e<kg-qTH4YTRi@?RKAnn^6fqyy;qnCP#yB%K^
z3j8w;RMWmFaAd*}x&%(WdU_~8M>~$SBbDDWfzvF<4ypyt0zMXh)2BkIOe_UX?cEtx
zW|6Z|;HmbgYW)3K<ZKo6YUUv4RZ#YP7WzK|AFEAEnxk at Z`l!ryej4~V*4{mmvqs>l
z_O9k;ae<FZ%2)HV?+N_;A^5WbS5mRJEh)}IKRu4McZK@}o@(#Px5rSlr?dW0&Dqun
z`c!*Y7N1%`@`vKz5O}H|5OX@%)b7gcpUy1!m$Tqs2Tpc&%Y4#2j>7*1J~r29zu*_I
zBD|eN&RM9CD({k1M8C~KUz&w}GVpP%UlMaYNV-1@{Z`;)|9#SKF`ondDX0L14~YG1
zO`~z2LZifY%M8(ciNeDY?~nyc^A-vvXo at 6fiLBBzUQ>tzAD8UaG)>G2fuDy8mdOtn
zX2BO_!8c{WAIpLt%z~ed0U(n-S7pK1Wx=sSl~K-%S#Yf=Gkt9qyaV`H?NZ at e`cX56
zL>Br7vfyfuqr9=BLkoU!Zgoebb at kG4dt<Y=dRc3zeR(Xtx-}eZkF>P6wzP-6-bU<x
z$HQ|YP2pJG+=k%f`cOO`j<(m8H%3~UNJ2w=N^t(tU_2TQ`|&b47;Nn7 at _N0MeCh6Q
z#Dd$~*c^(2Fw_!{`5WsRLinkxYlv5Mgj%BhISmtobE}0ZZK3Fj$ulBYB8Q_y;H?NY
z;GCo}?v2I$4Za}p(6NahEF^}Yy2?sy)rZ?UT0 at QDU~@}*JlNUZa!qI0KYRY1hIpm7
zqb1xJUeyu{2a~%9!FWS_V!X4X6-4t$R$YS`^v{M-LhEFeuOL?Q(GZRUr1HuM$uB}y
z`uEz7c?*K&EwN~*ykZzGuADGE5Ug#9b%f%L%|W*HR5zcwV`4)b#gMrKPEdxG6;QBX
zbw_wXI2KQCc73SQljf_fv=2=>IVWlR$elCGoHyNP27|HAr9pr2#PxlWUES;E&p}<E
zLbbl3BivZ0m76oF=w~AROrf92^ix4UUizuDn?j~drP_&gEA6k7>_a6#T8Z3u^3Og|
z3!FHE_PkK=mB9&f!^>qNA`xFxlZ`ZVF0~VZ&Q?27+p<z5s%GHyiYheP$#hh4Weyre
zCTpu!HHYHL;7kOymE!AyMVa~SoK}as8p9p5O()6GGh`IzeNR;t;%ifD{mM4TMJt{Z
z491(IkyXK=dw2D78a3*BLP2p_ht?8I8Uf}7 at OmZ-B#)4KLLEyfcXLkA-s}>ajKkg;
z5tN)L`xEg{(T<cO5+50dcjEMx_E2>7JnTw_sAxvUJ^>YKWE`UArL#1|KOSwsuEVI5
z9}jbqt>9x}j(75qLvR0V(Rb9XoLe0XE^qG?V?2iX_DHlX)S4Rq>Os~}OT7#Yf?8X+
zt+8V at 8cq8u*?=ol18xnsFON3|!_jCYDw^&Gn2Tt&mzPJw%gSL|R~K!%$0F at G3y7}{
zu5^sR)oq~_qDxPo%%Bs9#Y2rNf{o29g3CfJty*wl`zqYQ2+j}Vk2b^9>{E4xciC0b
zY3 at W5mb&(MbhYSZy~uxNAJUg$_|O|{n81D57Fj7wNOe4wRnhSBmKdfb>dZ>b*y`pp
zLmPtLYz9)6Qt~oR{=~###6$aV1i#-Y&v0bFui4IU1i#;@2+97~Op>e6v at tTtyDV~w
z9PEh1P;VyN4YrLI1~gbEC%H{wOpDsW?eY3FxE<3Y48$?2n;4s`ll1mQnP3R*CmLQF
z!m^?<yfh1MLq%|YL(r+QrTv5&hfI#WlQ2h)#^;2?9rHWe+i_rMkG-iig*}P(PM+D)
z-V$pbLOAlpOEtWyW{hpr!|^6n1wYHx(%ev6`rIA&y`ty=1xIqpW1BanAsjbDOT(>V
z5<2qrl<i7%)AmHEHL at HBsJxpUc{Z{B3Iv<5M2W=0PM=P}N(<}3P^)*czr7{if`0c)
z;RdV*Lv1lZyPzT4#OsR-7R`ld8cRY;TUL52k&d+l8(TxMSTK$S3u@`INF6dnleg5A
zlGeXi-ikmwgp at vt!(s|sY*?JT(C&=Fe<^WAuXf<*A3mXgZ8mK at 9z}mW!)ev6 at O2EI
z&hQ5%PVzs+ at ZU1rVE8y9M4*UvOO^aGhWi=*j|`v9 at b5Ex4#Nw at KB=9rI)-1A1)r4#
zU!DcOhT+qh{C{Ei=NR5V4o09TfJf!`t}Hn1ds3i?mrFkOA1OHTI)=~1cO^f at aIW_k
z3^y75D7k+{^5-$!%kX-Jw=<l}Kb!?$jr~drB%jlthJ88;gnu57vfs_{FEIRKhR<jC
z4;bFS at NE*O>O!YMN`4de^(Z*)c`gfnncR9OdR{K~Fr4S>g)I0bg+lERz29MYntX;Y
z0IRZ}_WLN1Jqz(D{N&RJwedxW6 at C%Jx%}@kocsA6iId-`pHVyUhZsFw@>cT45D@~|
zL#IRv_b{AJUld-&a5}9~IPC*cAUSl(qVPowuVnal7|zRmC&S5hC1)SQ0}L;b`@5u<
zx9duYlONoSelnxKoZ<h$a9*DW7|#9t1jBiK{({_`C3|?ju9mp7J{QOXETZT6T9XBT
zf#JM9n5RPkf>X}gEclaI at EK>M<fO at GIIqvm4CnRvE{5~^yo=#ne%+XqUhe0`5?A&4
zN}EhO%;+0{sd{p at JRcxG@cMHp!?~ZkCGM;zeT<&hldm#-I at 5cM;k^D7pJ^LR_V9e2
z!*E`IzQu5!uX`o#tUs5_jdf?a|2zwRi9C=adhY+*7|#9kWET9qvs3xv^tUiPO+LeU
z{n^6sg%GLA at lOn2#PGA^(WTS=e`YxM^KBAW^=FN3w)Q(lKat7L`J_!i@~ap=n&A@|
zK9=E?4EHj8GQ)igpTzL5F`SqC4;aqt^RF1r{a<n}gd#ZW^QR<E`Qr6?9K(5i{uhSx
z`g|Y5xu3T(oY!X`O)e2gFVELpi974_Ax6*hwL%`zlN^r!jN!b#O`}Nzf|EXy1%EgT
zKEW--2svr;8P4nTVuthj{B?%&`urn?bNLg;Y9f&R+|P!@ReiqACescxdhX}5$ED;<
zLsGS`OBv4nxq{)-8GWC`bAh=T{#8cL>(vXOp+NMb at hH6;a|li0vf603J8(JO)!I(8
z>B$e=KXc`LK*{&nWZDclE-U;BiO+N3UzPY34m>RJ<qrH-iJ!*C9d6I9vj10l at 00Z3
zcHmnjey;;p^jovwSF!$z>n)cKRC-^M@~1lRHzhvPfh+p?S at 2_So6+h2AC9$grME<u
z->u`)@k)t*I}3hq7JRD%pC;wV<%p<PrBGF9t4rSNAUn(OsQQ+T{tU_Iq?g$m(%xlt
z6L>k3FN;gqb1}oEI|Y6T!!MM2a}jg<Y3!gt_Eg|e_RDH0<dAI&m(@_vf0p5LSP=B&
zLPhUJngYq^^a8{W*+b7_2 at o9xh1c4z$$KLTr#%7+svHzfb(Dgf_9o>}-Y6*h6 at 8Tr
zCvOlce2T=mKk3^viMwU2=;{6%1&<vi^~NPmKBu7QyCkmcRrpbxOq2zu*Cf5NSJCH7
zT-mE|m&BF53Ric(Yos29&z2QU`CH*?J*NDv at DfRHI^-Oc{bs!bR~u0a9C*Hzqsm{&
zUo7z}9rUKempJfm%7Sfj;QuD^W(WQqiMKlN+a%uMz;Bm$+=1UA at h%5`r^MGd at E=LM
z+kv}f1L}3)V<f)Lfx9HW-hsa^`|Ax3{Gh})I`Bgh-{im-OZm4sa8u&9JMjC)+Q1zS
z{3eOt>A-K1_&pAMy~OWx;2R|VfCJws at huK~lf)l#;Quahxl9rL(s<CQ{_23F&qq9s
z;dwds2f{hM!EnBh_k_f$KA+FzJjv+kR;AK=F47d7@;x>z at To{Eda{iI(bwWpxQ{>t
z!l&a=_!R^q5bnjJa5e8BoZ6tmBS=#qoa<Hd7s6}tD0)?|oN{gl4FxCu?>0Qd&aDjR
z_B_IHZjYMpk^EXb%AS`PJ@><#4CnHXFr3RjgOwMTujU=3m&;f44#K&g)jWc5u6HJr
z&-I2F&h;*1IM=J at t+|j-&pUW1INMQ!9N6jKIHI8F?;mHs-)2XmTzLKeHN$y5{|m!s
zBCY&?CbN^bmwJYC`Sh<_P#}AFd+BEMyuHK)wOy|QNGrYDvfvjoIdd7k@*9=QKQLU1
z5yP(R@)RUu5=U*SSfVZ&6aGb+rbvA!{7Qy%`b!wj>1kf4LWxX}oX;o_v0J7IS93fG
ziHPtS3~<Xd`B@%82&9VP<O>xHnIL-QD}tIBF1PRnvWDSm4ouJ{hO4|2#QT4_^)4s}
z#IIc+PLXMfo at Th*G8f1`h8M~-MMoJfrzQd^CdVL9zUWaw-CHJ1HWl${3ZqwLL?3Qq
zc#WX6f9_y7$?BHh{)6GCON^q|8BXg~75>0*qE|K*OQR_oqlgjHKU713B6`$)<_!#2
zYX_qH4Z|s^{w`y at tQ>^VqwYCRWH{NQ#?eg-C;RL0Q1}+ZiN02#_?t$ClYDhw`cZ}x
zeZ8bFm6eicN&W*8_cEO5ua&sTaN<$-w-+*;==&u77KW32RiCyqoapbD^uJ*^$yfKf
zUuHPbZ<X|hY&^<-_4g at XU^vmgD(PDpp4R`A$5yw+Lrb-CoQ&IXvr0w7t)cRGxGS!e
zH-+LMt$Zo|#S{UQ<HY?0_ZV?8NOBW#=A&qFM{!t$bRm%ucH)xsig4>{h(7V<#PVo_
z%s(ORQgVT}9JfqUrVm>Y97vuLjyb{go+0-Xht27 at tvCX{v^$H#=6kQ3i^CS;xW71T
zKIbh)yHxD5<V7TE*T>@io~+KQwy~RQf76S{nXkmrmE>VuiR0G_?e>9d*QxgL at p1l#
zmP?*J)%>;c<&C(^BkooQ(Mz_5IaQhy(rzMs<d+mx-zIvlp(T^NO7^$?3y~9CeoM<l
zTK9{~p;7#uh;%k?kHv$bXf(7MfNEt~uQ}PZRP_9)uV6smob at vLP-6VUQ=wL3$#&mf
zna~)EdnZW?liF<V_qra7zvF46t9 at EI{t1n6IsT1_&x)(C@*Q`5%R8bG+^LOIZfPtH
zHwTwRaiI;BF&cqWK9ukPCe?g?sD#$Ygqm9$c&GJ%oQ@>pZ2Uw|LCq!U-GgVi{Az8Z
z=HA3l`@O^EZw4&|&hN$haQWkcJN5U4q`z_m{A%6el5&WD!U*_#B_HRn8Ug?M4Ez&E
zz`rpAKb`Xq*MGNV;GaAK{yQW;FTV>$z<*x`{!2%||4;`0x)Ja{mVw_K0sqsIpO-)F
z0}R*yzsaDV_63H^zb^xS=?M4_W#F&L!0!e|OH#h($Eyt at +BQzSC4cx@nLt|0P at Zb=
z at NoMa`^}IGTm!FkR;K)^_CKgkBmHujh?E_+ov%{qv0OeU!SP6u%=gPreUivOE#z1j
zkox%^27Pws|7u{F_;*Wwbv~#>JNapkO8C#Af1liRs*sH2Kk}K=e_sKXN&i8qpV}-B
zPW?CFV<!D2v>Ap#dMQwR4j!le`+#NA{|OI1AW)yh1JUyEeY|ASzeMWqlEkF{Ts%(w
zF9IW(G&b;1FZEC7AkvCo*>N@!l&1eL2 at f|*ei<b{DLw^^0g%c5XQlm1Bq7;PS3{J3
zRsUya(LW#+^Sv?><t#t?J9x6mY5#7?uljG|rQqa$C=37IVe%i!!hcZmtNkro`%wMW
z at Oviv)jz3lBK~W#@E6O9 at 650B{XZqYqxdzq<R4Im%Q)Zhem58it8w5{uC#$}$w1|Q
z5gupxKP2@#%WtpLKh`1FY5$Lue#AU%Sz^DbdPe%`K7&*L7xFT<pB(C#5va}cKxIWi
z#ns4Prt))3e)aEC*jz))zY6 at qe-8V1FR?jz`&WHEeNp);871}G<jLQ6$k_-nWvKm{
zv|GMvXMkVmSAdL-keyg3?IQn`<8k`$BB|eDzP5~<jqr{gC4U{}XqPGb9Rilf!vbpG
zJUGk0TG{X5-`!|)-6@&Lej4kX_CGB3JNwU<<e|g`l3zv292L|5`;*en`ddteg`ocZ
z3;S(o`P2VPCsX-%HQ5|wHwB7m{_V8C7ZVrK at 3em%Emkt%ieK5kN%A8~3j>n>MC1Q0
zV9Zp12BiI}o|64E|5o}H{(bP%6$muLw6I(1SM=(mdROuHvgm&{gZ^p=QG81OkHAm9
z$aU18y;8qA4^aA at _3s7ApXcB|BKegb#jo_M_g^df9sCC~l>am^DSjol5bI~M->JWt
z8Y at Dn9VLGizXA%tFUrrMe at fV<SRx4x#B^S%_?7;tQvd0aPDM3RztdmpUB!Vc_SZ{(
zrBBIqz8hKW-z4o<c9Q)*Jc?i8^mjSrzY3*5#*3wX8703GEd>?dAo*=H^?Rd}QGQZ<
zit=Xg<3DjGr7()uNq#p6kyiFA_-?7+QGD8+lD`Z63lC2I?}A^HKPN)^KIy*!*)Yj}
zGw~>X<v+ at gQ#T;ZO`R2j_#eX}_T#w_kCUJJ7iZfCq&-WO9pTX;J669=|Iyx2CjO2V
No8!miTo#=C{|g?E2^jzY
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..6bca0d880e013cb695751cd98e6491cca32c4736
GIT binary patch
literal 31272
zcmeHv3wTu3x%N&nA)|)upj30JEdyuNL@{PUfP|tZB!M-s2XY7~t>`c$Lz0qPXZAp-
zAi*TmeTGy{kL|<X`uF%->w}eA>uEV?6 at w@sy at +U!TH8v!5~+fhQmQEb`>nm!%*xIT
z7sVc*K4(48p0)P7*LPXpx_s-FtgbbtXJ%w*GGu61YRNZ=YFhJGlj%yHtkkX&c}L-$
zXwJrS4xZ6?K8J^}bMc%f(*K0`^CJBP#9tI?58|;ReIeqDM7j`hkw{-I;u6F at kuF6%
zL8K=lo`mOJ{fqDGn{%e-EN^7}BLQgo<~^)o^uMu;-B%uaX+4Wy<GQ)Vdx%-{y!+$x
zkciiK_itaKkLjh%n)p2Qt3F1H&v04D=o{d~L_@^ecOpS#zJUX;>0 at ea`Bhgh(GLz(
z&99m_pIIN)vz|YfG_ttsLMjgfmqOnF+c_hj==4!Jtbe69pEF_ch2DH4Zh8y+6 at N5a
zjD9kP2Gzh<-<&lyNB;(=*}TW!F#1*_<0TX*Uhk at jFLgs-7mLT-HCC(F4Ha|Qmty(m
zSE+C=*0Up*S<~M`I at g+hlvy!1>)D<Q8L_*$NY?j)na?2C!>kus(I15}P_&U<YO5V9
zW<8IUFl+y{*Hta7x~}T_?fRH*QU>x5+ywiue$v1?$Y~G!2al*On6-V7@~P=1ONynr
z*ArefPZV{2J+nR_bFujH{9z{R&n8AYU0#aFjs+|}!);iNUiXd~Z+-@=IHdQw(CC)v
z9WF0^3~xT`8Sv<%D);H57^-}RoAqDDsqLo0$r21<Ic6E)N_?I{Hn12?d{8SkpE~ea
z06x{=!`l{UsgWx>BpCds&A>|xS|x);V9+cWP!FNf5CcZlW)}iA2 at Q7Wz2CAKlo128
z5L<&zFzB)wpgNWMSx)ssl|xM#?S)w{iE50ZYOCFYna7SDqk6JlLM0FVbUFXjOZuez
zUYGj&;0oZJ)B0qER$Wtdb=7>o_1mg>e(UHXbzq53 at E7U?%$90x_s45Bqkn0MVJ-Er
zIBZ#$&nlkMdo>ryp9PHNBStG=sFD0YzloaJS?RX*n^nlH!5x+P8rwp^{wyM at W~{&3
z!**6z+L>y+ZhysFdhZWmT_b)&p%I^7$l^DEb<7i}cs5`?70{<Y$t*Igg$@_!dqVHs
z2U^40ZJ-LEn?c>7)mzB5HsbV(pTfQY13kYac7b6XF^cxED`14xt4FgdK-{gb+l;7h
zK)?B3#MGr={FUAU$(7nyA!nV2>*oz?k5P2Q$@NMUgSbvY%!^_D+F$XZITAHn!umTi
zIJd22>_p}EJjRsnS``%SVu;q?vbA36>Kj<G)?d-;Ex?c=`Y?<Si*<SY)_}hPmfG#t
zr$5X3_L}4DV)2HKPUzvX$utE9nxv<1Aa<Tn^f$KVZ`?2wkRZ#f9AWK(6tBOht3cCx
zU(M7szqS7nlt(*IjdtnpS?Mj*^gimpBmn*Tb(^!b&2Q}qp!B`egc&O8+XI1$9j3b%
zP%W}^CWiI4VLi&MKQikNoX+2a{*f{G-bd8zD^aiWgypH69=$gT4P;q)?NYU(#8m3e
z;idLbJ?0aaa$bov{*-V*Lz at OrVpJYOO&(!IyX>0OZz&|*c^g^jMp>)^dhc0P0L8ZH
zeP6&E%rW>~n8WVB0kS2vTo#Xd{PAYAn)m&v4x{2jrceJZDnjq=M&S+UVS5j<em<-}
z#whxbt@#ifSL?U at 6vf92)quXP3i+-5z9&fj27DO2iyNmKUt#lVE-nzSL;nINf4oxk
z6h72acR?pH$8$SS4ar9BAr;)h6i89=(F&}cv2lT-XMM-~YoH40@?}WFi>=EHywq67
zwjCTZScN1CEyf?}^Zj4T==sPUt*$)0!=?8<4T`?QdhgpGpei at B{F`T$;6tX~`+ES^
zVg0|1(vOx at S;oYVXuufU4Kz6(0m?V}tIPe?UVqQNBQ&g7Z=(!n9`Rc%M;<Y(L8E9}
z#&7&ZyL(<c0-^d%YeA2+?+NS4o^9?xJa<aK$}O*WJ92PvDL(n080>&?rM{}MYk*5*
z_y0S$EhYwoa{wpGhgt at QNr0f3br|Zzjnbo}{ZX!cE at _`s-}aAuOqH{VHGigY4};ct
z#Y6UbHv+`GqQAzwh*>+S&g}6vUV8!coi%)HwcWGt1=;Ys(E#<{*Wg%Le11N=biT&2
z=DVqO7tz$A8S|JY*aP?c$PTRkA#XRt82xv8*CS?_{Vbqq3 at d_5qOoq<kxUv>-Aw<<
zHp9Bp+f5(!pFHZ@`wr7D*+tqdVAc-adEU`SVa(v|hM~zUfScnEo>{#%opmdhqK|@d
zL>IqR;Jx0P!FPu%6SI!mN+aG at M+`l9VJyB*WO8|p_(MFS-`WxAdsFY73r}HK`<S)R
zTOP155BepI at 0EUQr(wN$K)3rHi?<c9zBkReV2i%D3Vq<uhV=#pzh`Lh!$iuS9#KaN
z6unAS(e1BzeAT&Z3$=1;>Uh0zOO3U^Z=ma^e(No8%m>HVy)+<L&j+m6Y0_2B;#~G)
zMn#!d at 7;{iC=hQi^v9P$;z3&?A8yZO7DivgTP`ex6l7lzC^{%Q*6M;pr|JZk8tVw^
z`{pnWZ(Gpexr2O1&&RaFZ%t?KROzFxt~4tCWR7O>Ub`A0K>83=_zPrEBVOiZTN;|f
z4NIf3HmbZA67`Atv1{M12RGG4uXh6?ZHZsM at kMUzC-Fw+E%*fz-3Ll!e<9mm%d9sH
z>or~=l*NULgU($w0qd;*j0JkL$`AAVVSd*0p?lfx2T6!R@)VJ<isx4Sifxr<$Fyzr
z1M9&6&iu{TBV^wKGOjtpAHSX(mi2s)qpy7emJ$4H4 at 2hMLIPOPb8@(Th|H%9*PG}a
ztq^^KPYw>#FzBIXw_yJne?_-PTkGaJc2%;iNQik!Co?KuH%BE*E$s~I at x1)fs($Nn
zM*Vat39@$bZ=5|Q(5&Z(u7Bf~s7$0X^j?!v$lO<k%mz*9?3&<y6J48nhRr}~l~M-=
zmz$67?<aO>3mc(zV#2TY{hq_7x6>Z+*E~jT{o3nT(MR?Qpeo2G_QEP;4J-lb4C^qd
zUAO<;zmQez-iRK^2Tkb4;@64APTvc9Zv>+q`E0RL8&e5IR(hMs$cr#aRXl56A=Vi+
z`sQiws_r9L16k0cO5Z%d8eD5w#;z-m?W6VCG*?z;&p-y-z<M6dWf|K+9NW!$-pYt=
z8XO5Ra=n5~nQX&>=aqL59e5(~-tX!=6B2;^Jjr)7Uhjg?`P$9)s5IDXkMFgZh4dl2
z#{1fVn^G9^--(+vpS0a}sw~WKF<AQcirSXr-cEbGll{#4ongHt>Qfm92eY98E#1yx
zltZ><z0V*wM3u$cV8FT&L)>&WXaV-^9USxiv17=6V58vZsQ1`@)=%x;Zb0g)?PStR
z{x1G%E&Rk#f3-5Dze?e!Fapz*zu)eypM8JDot5-dhV>!5N5J~?fpZe`i9o!ORxhuZ
z^8*<0FwCJN8WnHCfrx41P?zN|dNZBN`nm10?hRP45mOAquf*=*4hu6AI4nPPUid8A
zVf`FK at 9F#+pHplH8;%@G=}$!8rwBg3S$6^v at E0rFWP8vFhSebz6bk>az))4Jib
z`>RKi{_4m{`KuOK<%IrfA(@W)ZMVI=Fz7vvzxwha8ky}LU|65fUyUF^DgD*bgul92
z`m1M<_~ibI+)j#N_IsbqUsWF at t0etZlt$6i{_4dc{>mhOg;_WGs~zS9;Yak%b?)T0
zV{$?tuXAPPvxdDa<7w>Z<bovj4C^_V5!*a?9=y~L7xNSi at WUPR{Z#%>!JmZF_>)bk
z{mG#1PgYBRGECE0uIfs-yEz#jqUQPg_>-rH`ICRx_0RwMlfUB{=<niBwkG|_$*q5A
zsd++wa<{{u{Ga3alQZ5pjsB!Qtv{iOfn)tM7MVY}Ke0De9rIwlZ~rIrC-3e*X at 7FO
z_0PnFKbZ!9A{RW0KS{Oj*~`~GKO6kq$*+6t<;ySD$1{`bpC1oh|9pRlbE5UnupwXX
z`?Q=>K^o^2OzoU*vz=4vr|F!M=Y5~@{@izl`KN!__0Iq9&;6tA&z<smX9WiJ6Z$7w
zHLB|!zWzzG-f4N+;h$(rQtZzyIMw~R^V9mL8xsC0vEF$F&?om#bbgj%q+R#P{8Rl)
zL;VvSYNTB6_^szyKV7fT_<GphpA+kyoyvNLxx4?Cv-~Q3^HW&&e1~PcgWCy9)(>0n
z?2J9*@7bSrz0>=I`7Ga86n-y7!9T72wE1aV4Ed52`)SYHE~Z1em``IrP28KnHHYm~
z0SJ6`WZ#5fRt~q6{XzUH-}z+<E63K$dT}eA)LhFcC=-2sgdqESKfjJ3Dw+<E5;B+-
zv`_cAgs9m#WlB at noZ?v)inN5<O;1Y{$<|o7H5`p<TJrnyNJo2<r=`6y+~rx)5s~?M
z3F;QqRrVgk)|9f>sHR0>{sAIhAMqS)*VBQ^a@;o9$%=M}7G9%i+n0qK%#O&EDZxN6
z5)QStb~FTA+N0r!X&0W;Cr;q(+Z8wor27=O)UX_<trr{CA){y?-^;|Y8+$;U)}6^J
zcImx6G)h=+`>hX|^{!F$r$EJfdhg`~_LpgN&*Y}v5X5l4+Bby{D4DgsV-M#NhSNPa
zDZ#9a_%ydw<u)o_Hm}4vG at Nu||B>!*&^`ujx?3~fi?gHF%%eD&iM at sk8Sjx^J^POO
z`&)Bx7W1y@^%voQ{vfve{r%J5W83y;8vSK`B+aniF*5$b+am2|>i&2Pr|qvBMfNcf
z-^&VEt8i(c&F!~paUJHdLU|X-zT6<rj~}KDMugQ|4qc|f;hDT&MX$K2kdHGz*6-p6
z-8j+7^!In<`Yo4^Vpdr-Iu%s!I|ob#XW+-aPlL0C$Q^8J(zu71K4S;#A79C~y_$L8
z-`JMqryclo2%nbGr@<(AsEyk<fNgkgSd68(A42!8iaug}$INWeSM6h3DzkFK$1SgR
z*qNOBLa|9c`!WtcQxJJpibLRGqbRO`iCaKCC$+MKN_KB2HueefiHJXrz~MYki~7fo
zWt=rRdtIj1oteEMQ^Tw4OPD+(E}DvX&UZ5I7^&Tnll`wFwHI=-k>29Y{tkZ6$o?o-
zd*+NEWdTBF_vf-_Yc)d&f0Rpvn{$Z}X%Ie&-!rnmPlS(W0wQUb3?=$2C+gwSkOt8$
zT-pI5`c at X86hwPD(SuwP(jeNwCEZIzzsm%qsz?n<2~?9+*Z8ex*@I|y6td_-mKZW{
zMW+cv#^vb2M$vu at 8QH92kKTI~A0*zvWktVr*eH4<Q1PnXyBAzpe=Y`zZIQ3hwVS>V
zfcReUJ at Iap-jPE;b8xkyW|SvT^xmBQsUCflYZT7(N8z-4 at 9HM>;v3J!<Oc_W2Hi)<
zwJ%Dtc&?YuXRl{g0G)mn+TnH7nG2N8%;y=u*k`Mce*7Y{Moa3^US at 5>@!sHae8&0|
zr{g#sGc1?LU~Plo)fKqsh2aAOO|I7{l80xx-UAi}E9%D&*vyY*VUVQb6 at B`1Y}?D(
z2foGPQ at ys<bc`vxg5h-^*u+oxi4H{D(8D<)hz7p`Ozq%T+nzC4Z#G`t5^XUx2~>Bq
zwRN=Hn5Z+mzLYA$sJ<Fr0++`4m5M;$F}?S7s*3ozMtqt3VI;fh@~Zp5=g3a}_>BCm
zs6ILnHc{_81M#N9K)eID2wpR+mvL|5k90-|-$U0jl1GU+^u`S(?l>y;uR4btWHl8I
z2D$M^IE}vxoC|!1!8Ud`4xTD|567B_)0N_s8Ap!xFa^1n`1bY<Fx~%#p|kgCWX4qo
zI^-93Mb+`yu>NEey)AEtwaD9HP1ddh4^nxI{?!<faktZ`=qfNP3=4;qABxdz9^H;z
z1OqjD=+Z_!f}CffkSHn*@@^{Z-~yBZ?E+MAWP=_24Sv at 5=3oQTgk6hRTO5kEGz6n&
zq@}%Sil?EY9m!aO+0xPOSrX}J^R&lWTWM<3-eJ=8rlnD-FFsO=cV|>@`pOrF8iQhX
z6bv;q at OhCl-^YD#F~e=qU}rcIjE14LR7=xlR98>&6wY59Yd2#a--O}`#U+<bit*Rd
z8%xWIOUjCUMdAa5yYSHL595_KWA=Ov%bEega7Ts*y2DK&<Lh&^jIR8Q^K*0D>(S1L
z<^ujj)6NhvVI?Acj))5o*NF6m6dQT at J(=_J+(;7dMR+LCoo%g_zG)iKbkRG4mwtd(
z<+-c!Ab at 1tN*KZocEqubB0W~b4DmxE{WSH9y1e{bGN<Jgd^2lWo~Pe6Ew6B0c2!=<
z+7VTG<vlqyd5f~Nj5G7f0afJ{A`7xk%gdjZ=bm|%EN8~o>kMv%obM6m^QA4Qd|Xe8
zA<IQyr|0E=Gjn=gK|je`=K|BU*)@43JtH70bH|x^B{g}4Rf-sPmgWIjE72m<;^BPq
z7WIr+o4wA}pY=_cMx%1wO65W5r5JK<$()nETy>e>O<Ankvv^(Y6TBW5yw+v1yn?k^
z(5%NbBd;!NGK}J>$}52JVT&1Ok^Ir52*UD&{Nvd*^D)Rr$x+^+X4MSvSR{Cnm(^f!
zwT^13j{H<dHFh0!XJmC!C4rlxl4hI*@@71nM0xHVk*o)mXR_Wo&l!1#GP0Jt5*Dge
zYNYn8tjkh2i7LCU3WV<0K(1X^hcbF{){a=0-S7Hl)-9Q&&s33T_UX_k^VbPQRZ~J8
z%>!8*g{-pU=<_R)=X<9^pRCUx*FNQ95ILSc3q_vmPlrC4e>kpvb_rSO>WjvfL%brB
zV;Z28fts01dz)^t4hvZt|D%8uIQ at mp@Q}s-VkQ+%BjoUq#s8Wn6;6LyGdyHz=MM*g
zWNBYWgL~58<I>>XVK`YJQ%mNj at l1v+je7$5nuxQs!bDmo0!U=Sp53DE_&5Qq9Th<Q
zC10vj3cnWkZT721ZI40`+CAmpW4|WwK7rGHa|)6VrL(k4DH;-9;rWxe^nI6d{VpDo
zmtIN)?yUKV9GBW9$)<4pk|ZEfS8<#?<IqqeaL-U!^K*QR1J$(I97iD>p_St_2oDW^
z13pemYA?%sKKjWxrQJ$@UjclqR+?ZUYjhrP>R-;#oQBU at jwjo{Y%zDH;j at Y7r@u0@
z1D{VIxhGBjLEvK(vlV;JL6k0-AeEl^z{hFH{^hmBXz#+5XDj_(&Phsn{$&3eEAl^*
z1~)MNjnh0Lm!|PK3*Nq%lUkn()8Ln;!TrEV&u$@s<|!0<fsf7P+q(SS&3`rR_B4DR
zPlLzP;QyTle--#RWgOsh8OUA)1yb3+893>GpU|7nSCD_R!1wTdOHCucMqwlxD&^lJ
z3Pke(3QYp<*6nxl%M`W>yi-i}$RANCz#Y(W%DBYmJixaDPo?MXH2C{z at Tu_Ksra;}
z!Ea52Kb!{7z@}O%{^Qf&6Vl+{NQ2**2H&3s9}UMaR-?b-w8MEKz8rWeJr|_G<yyM9
zp|ev9er0w=XGiOb#o_jbX5Zu`t)cd&sJWswj4jmGmiDmE*ML1$Gd#PaF&wR(T_2oW
z7c$Loq`kJdp`*2t=<Ch$;M~PQGZGH_ at iI9WZ0PFp`Fy470 at 2@qWu32~ITS(0P>UJ$
zH`LaL at Kak`Z<ck2S|a{g^%H}$E4U(Up~%w7)g4%fg(H-~R}!qp?s$Xgi<<uWsvyzO
zX1O0E#D<{S(o$>yhub<^Lk;0zb4$A!jJ3CXEf)6AoI9)DEcJD^gd4)kTcY7$Vyzl9
z>&=N~tg{uF<`A#idL!tc38lEy$+BEQtQjLAY%&Ysr4tfgIIp4KYdYu53l_ITBcbAw
z6B at X5!n8oJrX|`LG8>wM%JxR>T*Vj@>rGTbYWp9z{z^;0e%^}C at Vs!;Ol+r|M&1e4
z<yOsU;!S2r=zZ#DnPJSCR%HZ((b(dkKX{^6KFMz6wR2~og_l!XukQ>u)M~{>bs7Ck
zq at Qy7nM^+=^y8zSQo94B+OVjZSi8*rI>|nu at S|^tJq`cN<M+CW)wG*}>MjjVm>q5s
zi4K8OH8$EveQdFv2*g_LL`};wo+zuvIS4gk^o?m~)>0XCgjBkgEpHB)Qr%P;YD)Rn
zc~_^Vx64@(?rI2k(gu*oj?o|`Gv9GVmGG~Pt#!-Vz!yDtQZQ&XM>>`Vhwlp2&1%qS
zya@&QxexkCFrfs9=fUQwG!QhL>j`BnwoCU}s71RLVAjuqGKpIJ3 at GE9JnZn#Ka;oo
z+GVpVg2ATt823tWPVF6$woq$w#I8fO`WosZG;C{a;kJg(6{zy|<)ZnO$mZ7?Zf`Q1
zgW*V|Bf=Zr$M&6C%{9f5 at RDLE*40H at k<pHJ?2wu(g3BBpqoOUeln+Kjoi7 at 2)C at H&
z4K_3{4K4|_v}(cm?aOge9Gn}*Uz>%8Hd%GBDVs)~o*Zm#yBS%*M+hHEpW1 at -<s>ZV
z3)W9iE!ftvjH{4zO{Jxga8pYZZdC5%+w+Usxyi<ivDcSQJt|O=TZ)MacXX%hj84q<
z<GSY)bN*PK`NV8LuHz)mpP8v#8M-sBNQiTMF_8;)c0|!$Cfl8~jV7-&yeFn&jbXU)
zws5;yHw12nJBRCtQj3H)sYv9vF9`%g=rxh>;t;034dKOUXzNRYbL)dni7o9XlsIe>
z=bMDNT*RCe4tLItwYTH&#P){CnXf(B^G%-K(%uqn9+vUcr`Q#+rkvrl(Ws_&r83xA
z%;{%`+J??CaTg_mQIAt3Cg!$!<@I6H2rUk`@=4RF&-!gsVraHqduvA%4wKZO_0)@r
zRYD-xh^cf(H0-o#Io1PMwS-!Ill|>2W(!8!uZQcgW(l=LdER;T>81)_nRoSUuqOWz
zTHLbCSBiABCD_m!ibjJbrq*bsOFC*%AewF at CqZ(ZmM0Rlb3{w(qc}XHutnh5PSI!=
zLE^s=xXdrlQ0N~uP at w!5;gR{*C^)SSC4RGl)1HpR9}qb4r!}O+|DfPg6?`0JM4*Uv
z(PVzw7o<SZ6?i26RRzCN!S7M<s}ww!@1NP_s!;HY)8I4G;7w`puPL}{hySbK^#72g
z{`F*F1d6KgNc`?J_+J%Vtryx4qd=ckyjH=d;hW?iRd7}AuNAyf$)7FuS%`nNg8LM_
zM#0+^T;+c_4ZZ^VOcaQ}nxFQEC=fmYkJR6z;I#^ViGoj8 at SiI93<anCBns4AXxC8k
zZ^S+j1*bkQq`|+0eI1$qA|xcAO$x4->%}zq<=BsreAN6uQ1BuA6`Uz at cPY4E!Oy at x
z4FxLKOgvK0ixphu|3d{=?Yu?cWH%aTs1H-vECwLruiE)}1uwxjDfa^fSIc{;*!Lqo
zYCozKILW2|O(yxwRPxVK at P`##Z9jVyTrJn{6kKgTA+hP at ELXe0o$cp5u at z7G)pD&%
zgCA6I)&2|51_J~qpIg%4FQ&ok#l}DJ8Ny$|)%Me+;A;DMK*81a^Q?la{O60K0g|iQ
zxmn<{{Vb$HB8(9G!<1ibKSc_zwx3xFuG)FMz at 6>n+e&`5oqSip)%G^>T&~ve at khbc
za$Ta}YWw-Af~)1)DsX4}X%ZW*&U*iS8vH78<m9a1O$x5s=fyPm<>KhXDfb5ouGa4+
z1y|e8E(KTH&l%Kd5s1IqelAvUmH!VFT($ESfy?%@l5^FxABZDV;;-6yhk~o^XTO50
z_POi=o1wG)lnR{qtL<m9f=|LXIWGNJ!6zvAfP$;#+O6Pf`}r4fMCB~k^#XUc9~b?z
zMg+>Qmg|Nz_zMcI+TRdIlTJRX)8J30!K*!_jjhiR{vHl<J=ONptl(<<xm&^2_OnyL
zRsOYOll)aXFA%tFKeyT0v=QTy`PKGQq~L1%nWf-E?5yBwd-%4%Ga-hWuxuyaRr0It
z>P4X!<v&ZwFYgvfTr?Z)_6(aq;@N_}P4VNZePY7@%KTIY3Req1DDi7;SX-P1Z%>1N
z-GPS%pD!qWLDlCjW!$FnZV>tJci?vje5(VO`FE$m+m!J{m0K+gD9igR!GDee|8Id`
z>%e9HrZo6S(cY*Zsd66|xRk4j`nzkKElA>@7x?{Y at U3a^-40xyC+CQA5P!-dri+ at W
zF5Vyi8Mthp>GBJ=KP<l}7RS}{isr`gLWRGmE<O+UD!4Ew$BPu4cv5icFK;xEoiD*7
z^_S(M{50fCT;5!u{1+>@a0{G2=^*oakfz|wZ=<$8Bx8X9C?5sF=&7L>1h*X}a2oq4
z$a;|Z$J=n?%vItv22qguOT5g6`P!M15-%6HYESw$Rp1^G%lw_9y?Grt{VyvDRCg3)
z{w{$_eI<U>&X%~rA#vHxrM?n(2|iL^iMs_Z^_6(8z$=9uiFb;IChaZpGJ#8bOT19v
zhJ%kw;B^k%E%12`JXhed{w4orfiHCAUnuZJ4*VWbv5gM=CjxJF;QuM`RtLUG;GGWq
zK7pGK{AU91a^PD8zS4p36nM7-FBcuC*MW~0_{|R7Bk*+&{HPeO*E?`|Rqj>??h<@9
zIPhkH-{!y<3jB5lJ}}k>?sVY)A at Ge3{09Qx<iKwe_<auic7gxQf!`_cEe?F6z#nqp
z|0QsFKf{IZ>Ueul<R`oYj~vIcGVBk|{7k{seX898r}j)!PRZv<B|nY562HJ^KWzN>
zDtNJyf2x9)D|nTHtMjO975q{qznouCxu`EoeL9r<s@#87a8>Rt3a-k%L%~)4vffFq
z%73SlU*-QR1y}jY`Gr&eeM)|n{|5 at L@|WW)@lpB9c?99A-Q>K$DYsauUsW#s6G94<
zUzIys!Bx3(9xBJfcR6)(ekbvWaMafbJ`#U)oJ}D6FUeKg^X~*d!qs-G+Gh&B$@Xxr
zqNmzl>J(h%Pk${=f%H+^f47ofZT}|EJ$(JOH4T1|!e<)tNIj+9s9XUB7i at Sn%ej-p
zC?<Au at Z{4Ag4>QbK3k+IlHVzRor0_RY2GD+n%^ry#04Tvd at fXQkAlmz@|o*1Spj4o
zva{GS=U>Z29>U2MGBA-KT-u7DMg<=s(iE*!a5<+XXoG?iFBxRNChQCeA|4QF!p{_G
zip~@DNVwFQ at bL;x-?|Azn5f{nHpGABJd5(uI!K09j{Ks#Xd4tfPi98^ih>g_c`sA`
zO$1?*2az=rfItyF@;>*^9Jsu%`LKeM{?ZS5MCH+E(!UlDg(3x~{52d!tl(U(P%5C{
zlwY>d`xKn`%W>fW1*iP01pj9gocPOosDDs!%HJpQSBgd^_1`0Kzk*Z#`vu;p;6x+u
zr?x3L<$qA*r~A$nB!4;YeO|#S|LZ)LroE@&L;8DhbVZvPTC5f0^wf@<WhxSG4HcW=
zE>kOR44EOVcrpIsp994>l|8}jEL<58)RZ~(aV5Wbby6AWnw63<hU=b7!>ud8`oveR
ziX$DQ{t5FgCKLFIadR%I`bi6d0XdZ|OJ%`J{~5S-B#bR>@!7bSmHHwNT>?Cbi#+O8
zD7)@(%`sVbpB2NOwlb=PlMPcVZfd|)1b&w>i2mCeR&xz8!H|0tpZdir+3R?p8eT7n
zi!lGQx3Eueb!SK+h71h2&=$d6Y+-ENeKCWfNF=lZfb3yuFKO6ql#fYhtsubAl=kxH
z at XYv^A)!_xNq4_hs?ZQMeUpTS328R<@vijYu6!F^Owx++$I#(o{I&39{Q91F$L+-8
z&PWID0h&}=8s)>y!6gw~$3bI^bigR5A<*Azh$GD*+$zPJoL|zq&x1#}w?v$dUe5PM
z3qC|oM;9kczfjPTZ>2!=wC{Ja^vy(spwiPi>SXEVx<I9;Ba at S*??zq<D*fenKUw;9
zoO&pI#VOFsd9o_M@)YRr6!O*jr}fCm>c2_QtMX}ma<cSWQqYe(1^UNQ(9=BMDc=K(
zrrzq>1Fwm{Yy1rfRf1esNr<+kh-ak)MC=hAK<-yk`=z5DX-~Nhy9gM`7t>p$?C|}6
zmZ_n!SSBRE at kkNRk4sN$a9)0z;40yEAzxif(PwA*uLqWj{ysr3&mAOdC;gZ4f!og^
zpIvQJln6qy-`RMa_WK5~RPy%-`RW>%SUKh21T2;OE+Jo3BOiZgEOW}g4_GSse-ZL&
zZ$%B1R}J^zC6)XEA-_vxrt+VQ$0`41V8oO5G}KVywcn<xAkvav>hVuVP at 4YVxEdmY
zUPOscl1>7n0i at Eu{2DvQB9W2wr>h21zHI+<gnWm1ZG#XzAn0X8veYnB%2z?8HwgLN
zf`H^xUv<h~DC9fKzeqHku at 1h@_Cxz$smfol&?c1SB>A)-<&=L=$amJ?8X;e7t0%NT
zb{=H>TNsYgPW^8e^z!ds1=+CnzX$ZG^e++mtL at JNCQkkD&l2*b01-#YStDF46}4Zv
zt|G~!AA_FDS3#sV3i%5}!yx;O!{d~{O~@D75?p>$XeZ_VrTpMfM|)1{?_jV;Y^L=(
z2%Po*wA9~0uLW(18--xfpQ^;E|CdpC65*`>c{Eu;5Y=eE;8&_6W7 at Z%w6p%Z1^sfF
zQE+hTPk%4Y?eEZkqtKrTI?|s^>eT;>*{StELXHW+SuRO0)uO-a=K9;&6Tc;w*~t_6
zpUXhc^-oaRi9<qvwf~Vxq<o3fy<6IcLp2Twl|sJEFF(q68CRx}?_Ok6NI7IbVkzk)
z{x72ZnGXBc3HfrL&gM4Uf2|PoSq}PUK`-S<dMRJNn^J!Vy=Re~gNcl!e+eE*FZte;
zMt--DUnuBhB<bb*|4Spkd6At%MBM*UTaxrr{xd at U*>?8C?|nkPv%SlA8NZ%J{{cZS
z<w?fQ_m|S>ziW|AA at wBtO~fPVC4LSjp49%ywrbcV<QJ<T(z4&k_yR%i$fg|@^iEvT
zNqju$bMWG*e(i{$_sEPQmikM$M#y*47f8inA2m4XuL6Cl{=09HO=bVT4}1Mb=R%TR
z+K<ZPlueWc6X+N704f~96?i;&ob)ulIQu>z?LHEQ&@$4F<*(Czw02HKpWkRx%t!gu
H;H3ZmqnITy
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..a3f510c804cd62c000e9a1ba596ff90f9cb659af
GIT binary patch
literal 45160
zcmeHw3w%`7x$jQGV}zIq6fHe+WW;Hk_((IngJ=^-U=Qp-B%t`5gk(rk at -mt5P#(b~
zl<g2jYg at Fom$uf!vGz!Nt+lPy-~-g#9??GZ)V7D#sziL?oBHDZzqQwz`LeV3%pSG9
zJ-^>wKW5h2|NXtzx7J?k+iR@}TPlnN*;!edN?F=@TJlPvnpV)4ESHL6srCcy4nbRj
zYvP$B^K)cASLWx+{5+X|5&1%Vba`Ehyc(b7^12N93Vbe**Yl8v at mVCV=ObT?k0Gzi
zkyqlgL|#`QUy4tayk3C(e0-M4>x+<IEX$W5zf_hlLw>m|*C4Nz<yFY*WVs%BRF)f%
zH_GxAGVeg%Da$dLcOhRZ%j;ym9{C1YzEb8_A>Sy=n`FKj`4(C3miboXSIcsb%zKej
z6Hz;CllhmCZ<l3L=GP#P%kmDH_anbnmamifPUP3i@(swpBFi at -|Ees14f)q)c^C4V
zWcg;~-;m{7kbhH_zlHpN$?|UG-<IX?BEJ<MN^kg2eRqX!eo(FVyyWXXZ?yl*5md>4
z_b9#pB)YGgZ`_|xdEJPs^{j*E9Y3_%KN%h1u(%no9-;T2Xwms}vkIRIP49UK`Qb}0
zd(b~QGrA$-9Hc3|pER95MBvA-M>=`>fziTe2}i9i@=vB7Wwi&ILf7N#eD!*K#Agct
z>SlRxc4$EFA4wz!%7fG*0-Y!^qA1Yg3-kAv2Lqa3vOl(YwZ9F7_%?z8y=Q;GKW at Px
z|F|Vbb#t9hHJa7Nf`_D1XVy(4I8is3LmZ^kfPcA=a;cJX0i;}RNr}U(di_kx$gWZ}
zypA^Swv5}a_k&Y6HwJyOv!FyKQq=~pJbwJRe{!iNh{XLPdquW$b<!E=KV=t|T~M|n
zZ2q=vdDwjaei~xXUEiYas#{{s2gC6S&FEiKY?x~TdK{Ij%GXPt at b_vXs5*;*>9AvQ
zF>-Xw{L20q3^`Ehv+P`4pqqpHOY=4T9s&;M5Yv2J at 1Gyg56myMh{}V$aLFtF-tWOh
zM*OM*BfbLez6zqd0+l6CRhmy!`WHM-m4&8QaAIZOqyFAQ;5E$03^)_EQ8Sp$!2)5m
z5vNOh74!`laoq2kWSGZ{!h`y`aLkr16ZCVz-0k0SH?qC~|MvetuE%2#AKw_9sH9S3
z6$sHTQvby;4;qEX>{8D|HAw1A<f0npufioC#7 at -X^NaQV_ADXoK618h{<pZGwiOR`
z*`;Ndm0eyIdC(dMhFE=rW%b4peFGb|g-e=)6JuY}%~ve}aUC989|)TR;SzZ2v9N!^
zQ+nT%u_;!ytZs+iE2+^74fL---$2)=jl#d_TmL2;GYtju%*IjXBhV5I_pG0&`Fo$s
z#*}3qz903`j?72D3HNLa7HIyy5u%1 at aKn7Tl5Fk^n+GdV``&Cw)X`919jHWC_w at p*
z0J#uin6DY;1G at Pq-Tb5A3-{m&%Nl(1L#y9XqgtM)dItQxov=XFRkSWOD{4%&ZXaIj
z5Vd1INtrDgksjb;p=fB=07`;pccCSZ>4lG2E$P3mfNU3iWTOvtF(=Y>&!&m!aQpmy
z|B5TPV~}PBtDP#zm(+9hcxNCSZ-njdhS3~G$p^ZB!EezJ{@!j>-hdtX(hij1{mDk*
z2m00zAaRTTx*wwYxS$sB?<fPkc{uba>EDGLgSQFibmK01)qJ6 at GG2w}3zEX|Qu(CN
z<wSa1 at Q}pL5`LgApgMJcOt6Lw>Ht2fK6-(9pleEH;ZvdG;jJ)*Y`F;9aADc95Etd<
z at qMpO9xOu<mA1xH at yz#Mk=65|uXBFs+xtiO`+g0MzPJ6ouf2z+yj#!TzPK1Svi-e(
z0ARlD|A{g6!_{S`G2=sG9()XFa!3M{Z}iWf9X6i~_Z&J#!;1MD>M-V5*xY#HF~b}*
z3ioCGXSndOp68E2ssHM2;72+1sQGx$K3`=#cTT05JG<nyj#mfQ;8y6-!8SNo*~^_>
z4qQ3A|0}|`T4-Q!Dd0r?(8`c76A%nD--bDHW9s{4{rkfDT(UlC{!W_j%Pw5)e|3Py
z)w1O)s`afeQG4s=+#p7-xopzu4L*$<H1CuLYy5 at 1!EQl!Kr|p- at 5D9byOE1NqsK1|
z))?{nV53p;tiN|3(f6N?Z;a2>S+$+r=OD!R at hA#0a*X~vf)vNd0HeH5)3XjE!k~FU
ziW?qZlm}Oec_V&Ta65SQbMCUt=sg2Mb#$1OMt>`w_B*WG<|xb#$8=EdCTeu8mBg|K
z7yjO-FrVt?D9nzS7bHc`gSp|7KluBq(aESLHI;pTjbYS{1=}%%7=_PE%jO2-3n$Si
zG6i}C7J9~r&kY*padB1Fy at dv*Wti#1 at eA|AXMQ at IbD>X<?+{f+13aq7Ezjw2!vGma
z4}lKD_tFI(bundNUarX}VBfJE-GAo;p(kJ0{bxL)_xD<Krf81**Zt!#6-e8b2Wj3G
z!Gdlox*LTO|2W~K8a;la<nImAytjWuHg1dv8t at cd8}XVdy<aai`WrFs8$nE-I|PG)
zIm`#2_<KLV^cudOo<)3)>*l4wQr-MNG{@<N`P`8_5hv>LmWg`b%Q4-EM=|zn!Wi(p
zVg3b!|L<t<&&3EUjK)B7Qf1+rq`Es?^3bN-%98gtKTvKS>Kj=9^RW3c<m5w6*FC!V
zUwRxWsH>G47<+vfdtpf><cGy<%;le~o0w~iV5#&BN;ITZnnx=O4~4fLBkQ+JM1l1B
zcbox1<>mmIb^Bx#^?NYFiHP8Je?CU at uvwwMUgjUSqEs&#j7^{h8~_37P?M&9PhDfQ
zZcS%b3!3;D)tc0ieAI40BoBP8AFzDyBN_3PRr`B`kD#cn4*NI%QSW=k-}@U}mEDi8
zZnW>EFyKBi7 at y-uisZNs-&Pyui at N!W^5ckbf5kDlZEo27gC4&GZhIzHV#L?L{Z|FT
zJs<eiKK3)AGRg7;u^1)CHvQ5lIl6`7b}*vdp6NPZz}W>x3G9!B!|*wr97E{R^WJFx
zwsQDLin1no_;%7gLU!TPYNnb+j$|{{=jj^HDW0k2H0VE1Ge9vtnKg&=-bP1?-zz&>
zW2ydA@`n|Y>AGI>YHVD>>B{5ao-3-ZoE<hF(&@pp*bc~h5U-mL>OIH&{x2_}7_aA8
zmcRD}nzcdP_d^l(!Hrgvh?vBBCguh$3DPWQBXoot0WEeC4K#aTGSw-d7k(&Mjrgs>
zZUI_ at l3_k;lsp%kY>i{*=zYiiy)iN*K3ea2(03fKQ6+!udQLoK9RjyT;zX$J?;B0#
zLKls|`qqa?4MwL+F2new0<=M3+D>UZ#!(vj3=`2tm2dFAcf}M^E=Mk>_Z3hNejQ{o
zo=?iLz3&lSn~iSB>y&tpBdRc{EPI^q7dqYtr*8Vl=o1q6huCWoh-$rn7*X1*<`#Ot
zK((#zIe02WSkH~oe^;;@4wCoZk at edM;<%hTs9ElZL^KPUWbiI3Vl-X}E^Tn5xFLEm
z^<GQME5gZ#^*4yg8ZN`;!-GG at 9Bjnftgx!G?`41Q6W})bKTDG2{Fs>k(am-Prg3-|
z^3XGtCGW&$C+GY4dFU^(Q$vqp6jcvBdT=Z^UX`1Jo>TXLp7mfDGg at WIhh0yEdtT1!
z`u<=Y^p*MVo)Fw_%>sktM96{mrw)hS=I`qSLOrhUS`_FZdm7qVkE2Bh+0!n$O!ct`
ztvL&wJwNoM<-){#bATRlJacM{{5>9Z>1D#@{4;pX`%s4w>QlP;dlf&^1Nj7;mV6_t
z#H>;pMi<rxbHNaLa_~nOyFq{CHYw9)aMxkoia5k=ihA($i$_A1RR?gwROjLMJeOIt
zg>f_)Z-vd{wvg+S4!0hlCbGh<M1K+S*28~~cxz7P at zx6nNj_S<RVIV28BnSsEW}$w
zW3BW42gO?9{)MHL at rEiIF^X}4c*Ytq2*5j!6 at _8+5VOE|;kY3I)?1b4^GC+)tc<V4
zV#C|9WtH*On3^}^h3+{T8LW4 at A@SAZaN$e$po at t3>SX;M6-pr7+I)`{Y5lO$d<zou
zA+hT}5NU<YS45m8A}$$hZNvQii3D5cLXZr$rlR-}f-MnZB?2xr|0jd3a6AGB%K?Z5
zTf+k_dM8W<S5~lf<V-xj7_MWNILBAzEWRr95MNO&)2)|0vgrT?S@&7<kczYJPZeiP
zhkMe-St71tan`5Fr!H~UZ7<On{|UuePm9pWDbAXih_imD;;e5w#94TZDb$h!xn<QS
z7iI<Idx#Zh)w{%5tDNJkcLbb1&Pt58vJ#H(t%E;7_~9j<y3QkAgN at EPt}3&Fo?di6
z8SgpMeFk*H<FjP^^*00&ES^+xAdA1A0!7OBE6*~e9D}&G`0Gwcl=0WCR7}KQ&Ekf0
z{PoBnF(u=#?@;_ at 9>;L2LNL6&-Y0BDoOOq_GJxEQx56ba$0jG*6R)fkmmkNHa?is)
z3av_B?s_rY^HNsVLm~(q5>`z?>?EIS6<77BxawQ~*tqIum$>TBZgJHlE3VrA&l*>W
z?knOc at mBs|@;biI*E5i%?;?oeEpeSa<T__zu0<m6i|Yv>k=Okr`o at 6U;;|$r<x5op
zAo_pw^?kJdBjQi1e*eg8?u)-infxiXcCZi`Z}aK#$#@%y1=;gQ<8}<oPyF3 at FdUy0
zq_+mK8j+7p3cc`8^jadkB;Kp7=dbJjBfk;jKiyRQgJj{23F|lOz<NM0+%MTMF7dXd
z`jUMq>DNZ<Vr?CB=0qwZ9nsq6=C-;>Q)_3mgEpfT|4(Vf2FY*jW{FkTo|mwRv<{Kp
z=MD3yQFutK at 0C2_@2$a_lWx8iHb21Lt5Nvp%91zzy(bdbKb>~={8#URTpcUeeV-;Y
zo?Q{bz=(-T(|+NjTNorMhm<TV!^Y0Q8k=Dr!h%0m2WWq+X8 at lEu;jVum|pU9*Gu94
z=2<?Y<c-*ba3S_PUKRAO8(D9O$qWH#%#W2dY*w)4PpGIgH(}4E#fMcf42};Ku-C%m
zg0ub$T4O`nA_QZ_hnC~4aab$>(I!}a7_HDhqCmvHs8F~cJ;AC`*c{=fwdB58kTG~6
zzSQ_Skk#=Woz}xB`Sp^ch<T4<Yf#_!T+WdjM0hLj?AQGZkLvwry+uwLi~;5Eh6E;)
z=#LkM&8PIA5jT=Q at z&P!61Joo&}3gAcNQMDn(Uyzw^TIQ>)1vQn{OM1FIJX3=kI+I
zLiPS!G}*q6Cfa7|dk;wHnb4!*_-LcQe4G#KolE=Y26S`8IIM+kX@;japN!z$fDl^N
z%~dN;xj}@XU3I!yiI<;EXt>MB;S;&T)%t<{^Q6E3TQ?^t5fg&CxewFVk*lTu%*PG$
z6~i1M3Cw-azNHNNnP_M9fZU)_Xssyf@!a5%-h_M%qa8Qvi5`u3mKJ^e3!c{ZJ)3jn
z8eJ at bQx!yGiXKEw>^pKRZ<2jz60BiQ`W1P8 at O-%0rAdajM^38t7^#<_J-(Q(J+2ti
z9&eQS+eXvZQf%#%j|<3l at sArZ4y)?puz>pHmWDKqb9su!5#!O%4~gDH&w*3B46dWD
zhILoRb}4ad7ZVRNJqM~ia)z|WNIVCw?Qut<J-}qO2O4tUvm*yDwl&8EO&zhW+Gb7W
zk at 5|#wJl9`^J_a}a(#m}2}ZRo7*(-JO&j5Olf)|83-l<&Pd4IfeZN4ln~oRwj+{h(
z3FAP(eP}LPg^l64JAf#ypfcWO?GrqUeS$yHIFGTKP7jz^L`tl4V at FgBoF#`heM&fB
z3wan0*nB%yzi)%&iJ`Y4w(H*w^Mlgfx4Rlh(s{IGWl2(N*0D1}PxcMy{_u;2Uw at Z|
zGVHZpqMI)!*SQk&kzxMXD11%rMmMS5=mztVBR`}182wu?iD84&C|N%d%kCy3&ky8N
zfa4I at R)K>Wu^)_u^$t*u!D2ABL}*a-QDp~Lq7LW>;KHyz*e0$pFNIzntV5ZwOOR`;
zYCD_iBAv00rq+fzfx5O<6uatTO>M1#)g5guf!40(=0H<tptUU)SX<lNRF4M0DxGCX
z|GgsCrH!X<xZVO2`}Fpew93R807zI#v+*bq5&P6K8A+Zfgs6p9!&D2ZHes><Eq(FN
zXp8W6(oKUkaP;xxS?66e@@wO at Jy|2K9<Ti_yFcqk<F#*|F!DZJoG=pQyT*)sdz^N3
zY=1WH at 5&qbyYbqyc_SYiuf3o5ZZ_^i!iaORenXO0j{I;ONqTV{B$-(^kJr9>!pPgk
zYyWw|NR+=nX5^np(l at hle@`B%cq5NgT<3p08~2qYG+83i_$Wie1eU6>q@=yAdBdt`
zYh7b#+FCr=k=C}R*5;<x==3FR_0ft{ymZf<f5v?3gy{sh^M|IdXszwou(UneQA_<e
zog`;V-Q`bP5^YE?GZlYZ+S;Y^PiV%xrjK926!w+X*MF?~Rd=oWSp1b;%^!=uylL&n
z;h#Pq(RX?Q&fVt!qaHob6pOZWM(~VAI-{6%>Jw}W=g*%LC|I$ot2NdY2u&-RR#bfU
z%r0>`b at SBeMa9#LLWS}Mm`313ueBrbS-50{hS!$?!gBDTG{MTWtSgskS?lw&PRSkZ
z+le at VcqYkv^u|t!uwqftG;tVJVwg5X;@C=w5f3HGn?=bgE38{$<Jdhqi%W at YrbN7Z
zL}@5?uLE|_0sE^1cFY0GrT7Sm>kT+y(<PQ?kqi5D2kcS at tla_Yb-;ExV0SoR12(J|
zHvL9o+bFNd%ioq=o;R^4r#vr^y=Y9{#PYoSvOHh;*a$0MmMAY6>sIFU&gHVPi<S84
zP<^R*SJt!^^3#I6{2gS+ww$uOK+lNmGH5Kz%b%C$3y(ct6|J_uQSzNed`P1GZI}-H
zUWt8&>RFYSe_i&xyouN5%*zY(kC>NNuw!IdUh%e3WqGrEMwjQ+WIsM8Z#Iy!yaG^w
za-Pt>c&s?D?~@NiAIXBP*JUqtmsOSB?<i}LC2P5qCE7K;teYKWRgBdp!j#=omiQ at y
zo>!H9&zL-)Zt1yK-dmTjIc5DHf}Zlc;_{*Oht2eR10M|vNafV|;Ti7B3i4%`d|7V!
zvO6oMJ<F12^X9^_U{~Wt)|FL;7*$5osd?=bHMTV3B1j0*suQd+%JTUFH=i%e+nt at W
zZ)8Ge1#7_tV{?{gJNmF}tQLTdoumkfeitCB31K~>w~g8{vVX+2IoD;AJ$DfS(xM^u
zgj3pcx3fJ<#^%gTX^$FHZihZ6d#Jzfl7kS;NtvkWM`*9n>C9m%N1HJWBOpgBalz-f
z;ODsDb6s%S9vhx=@EaVbl%svo35K1eE_j&>KF<Z8?}C at R;1w?T0vCLt3m$gC=~q6(
zQ;ztxj}uP6`Wc>b#IJvx at ao|pkR0*rqv5x5v<ruWg8m{G{1O-ZG8eqY1z+WY*Sp{i
z!*Gf at veD0X%eg>|Uy>?E`_eFa0&)_ONb+_O9;9qWPh$n8O%hkv^vtT1W6f;pQsloB
z^kT*n*XsH83;R|Np{0un68G8ed`95kv7wrFs=%9u;in5cG7K*eI1X&s(o%ujwQ3rj
zkJB_|b&}~OfvZR`iQgx18uf>!X9b=+6vUM^&#Fi<dHZZJm#K&<iB}8Up9Ey-E`ifX
zIW!#=xQZr|_vo1E6gKXunp6rrIqoUTHV8a9?kW6x0#A;6%7Q-$JUQ+ud<@3%DQw(R
zmdz4)a@>={y>__^-Y4+VM1>Un?JoG^0#A;UivCR({4+T4Gew&>O#XQ;c%8uK52N4i
zg8x9^<-_Qobiv;dc*QXKN$AQ`wBdM}z!waoZ*al;1->vruX^5Hz*XBNZlZ9npihqH
zivG_6PmbpbAB9J23LDQAex|^a<GI4C1b%)(rNY+=JUN~#{2KyaF^v8hj6dVqyf5AX
zKs5k*r+V!News$VV6;+!%wH7vZh3{@$;y%+L&Iqr{c_Su3ZEfx_2!nOzewQpi^`$&
zn*>fL0fyq=7C8N$W+?u!z;97-!k$6kQ?%qfrAFRGc)*?T?+ZLRf1M^JzTkqNj-hRe
zmYmlV{W2GPtH5g#c8YfsTzwuxp_BiMTyO*U6m3;Pj(9J@)vsLWe=F$g6ZGnxvI+wi
z^#^*VrzGAZknfgwjU13D?xpmi#E+t1Q=<5s(sXn at C;KaaPth7IB7BQ?5#&c*=-+X{
zKaU~aNq&<HeiQK1vcH?qi|#7Yk6q}0?}BGTsgvF_UGO#+{AL&Y+b;N9z)#b*ChVto
zJxZTLdz_}xudS^FGLaSoS7ix_>|z&uw at ZE3xzPXI1%J#1$5K4(ydq(WdM-{G?`&ro
z at YA$df_{oDH3+;bfh#}syU4j)(9^HYt#p>mpBMOg1&eoQx;Xh$r1#1M9+0Iu0>3JO
zE4`Nsd{Y8f^j8a<ezk5TMSq*XyA`aRElW=cyeEMNWa&MD_a<;9XYvHHb6Wye^z#M&
z<pi$i8w749a77;%_%#V!(cdZX9SK~~|61Vv30%>?Bk=1IxN6@?Cy|{y6S$&Ro0dg&
z?d at 9R;w9Cw*^y<dBC(EWG>nT`kx1S8^`TH`D&J5G*Hy<tp}NM}4iMHh#X7 at v71g!)
zs;H=rO>eJl>Ig5co)KA6BKA>QYCG1<n%{<n&u9k`go-28(PkVA33bN8)nyUlX^wVw
zhQUH&2&$Mm6$eJ5E$z*<b<s#;Q)?{J)!KALS2Vn6+2ZQh)KGg<v at W`?sWTc$?CnKj
z)v+0|uJ&dSEhSkM)kY+|2u2C5vsAqzSfj-jN?V6iK6P5+j*vC<etG-S<&mPM&W_rm
zVsen{{!l11uQIZHLwj_26x%$@SmkF_$7*BIiY3*NSyi<$C~vJOs%vYmPcN>#sk6N{
zR at dlJ+(KjNyfPya>Fin+2}e>HJF^alabVN3#jt8N?QB)IN9!uIB4d7tzNXUG4EmZ*
zU#V+u?QE6Ls92k_Mzq1?fv7E(o(Nkx>4~sklb#5hGU<u1^OBZGY_BM)>ex){+*6pk
zyVY|e?Xixqd-t)n7ePL~KDxTLt2q{_$3qf}hO4JhPsU?06ZvojRg2Tg1n+c5UdEa1
z1Eea%$QQfzc&puKHAG|c+tB4j>$_7^^LwXli+QCTwr}W_aT=P{E3IhVp~Pw2Qa&}!
z;~<}!P#QAv)TEOoh|){Kqm^C~h|)@;=P#`!B1$WX9 at 4auh$yWjdXm#hBBHdC=y6Xg
ziHOokvc`mTqAaR(vSfED7Tu-3xoT}o>cN)0ZxOSn+;*g48aXyC5&0}F5xFBBkyX)j
zRH84ZCqg&1h+5Z?CzfB3qM9(SA`OkOEgg~72I;7%0_kb!utXZO(S&Jf(1K}c(11jP
zaPIFlE6FbY_fsIBj--MNroCatWxzX3FY9FvQ|2&LsmX^)|AeE3(5zvnuEUE&98s}$
zNl7Hq(Ap)!dqnxIZ5=JO&B at TW3S`x at DGZ?aS8Iv3)U|IwCqnF99ErplJKEMonxm}^
zvBpTWqob{(YH{7rF6Q0I&Q?;y;=#)45i2fIR<^XQjSe-0H9=_lJUZA#FC-PMv5pNQ
ztfE-Q*#x at d!GusmglLwdh6LSHr*}jfnmQ5jtD~XnFj>X2WLHK6?rIoS#Wm0nZya7<
z5z<TY`tG9P1tV5lw<c28xF)i?wyD|j_dm&d<8*X+M5OXZ2J)>j(%#kym(Q{~atpob
z;!#Ujj8GfzLoLzPSk(}?74Jn6y!cX&LdP#jyeC?}V2ISV*5gMFt7 at BTTkE2$TzIRC
zBg?8Ic8yJ~X*8B!Skw_+U4(~p{dzi2)Y;aGW2&(Yk+rs$v67bBHRA29bI2PeHA?dR
z+j<2J&BU8%M{IF4+P<u-wG~HWW$>AJPnUGF7Bsasbv6zo%zQzh1kIt|HCyZ<%XBo9
zd?Q{`+cNYGS;K){3@}dBm|Y!>8MUjT&EoYn^EC>{T%O`hY}gBhm|#;d$djRwNWFFN
zJ5om{zeN|rAS=hpwg#L>9y(NJy10UclgdavmIT^5qttLKTGut92QG`^uc?SZFWKI+
zv0{RChT7)PtZ-{ntO;G`%4juKb!uBWMVl|Lb{|(%eJH4cPMRWWS2e8-VUHP?1_
zMq*gzz!SE*O}Hk7C>AlLa3G@^s*&cJ&ZbP24nHZIroo4utOb3FN+klk6je&lq?99r
zz?5<%O$s^A9X18SG!<E<QmklF$x+c~DmjWKl^hwNrg|!;DVkJrRG^>A9z~NvPV!|S
zg&;{JS5(#6DcU~&3_kd=s7UI>4z`)Kl?+!qszgt_VAuu{saEE8`eum}{l)kwdbN^l
zr~eA0r(H8e|3it}>3`1XFJ<)q<wE}~qo-XqB|j_6x?z{E&S;YTmoxf87kYJ8lj!Mm
zgpz;03%xqCN%S?0{!U3xIPH0=c6pHDtqlJg!wVTs2XHA-)`pLgvs&U*-)4qybHV!=
z-p=TM!EoMBI&(mTMDjcEQF<SB!RfCWP at -%pK8il*f=3zN$>_hraIW`dhSM&RlK)wG
zP=Rj87=Av(X}3txU(0YV|74sWphR*wev=EnNNyk!J?$<j`SlVfx6<>dp3gN5uK}+5
z)lEze_y4Voo<FD4<o+t@<$hks at b$Q->{-F^4Ge#r;k4VO=>H&bvi}T*_hP at BlHEUp
zF1UexZAH)R{3XM=pO3rXi=?CMdhcU6mw$lav|Fd@^(@0TGW at gHzota;X%|n?&u2K7
zU*m%Rnc=)0v#@_niR5!USK{PnKF$=n(9?c8C8Fo!*!eE>moR!hPF~?ce-)$W<M8z^
z^xt6gL&kX*`g<8YpGO86{g+TT<^L1>R9nk$bXq{+Eez-Ve3Qh<KeX$r=zAHyh2i^{
zoNk62a?_mJi$52%k57s4Mtqd~>lx1b^Med;XY_xRIN5n7!~eqQw=(>v*f*y{digl>
zYl)K_8fWI>L+OO^R&MWa6C_Ubd_4IsqhE at 9s$M@~IQR2DhV${{9PCq5vinV!IO*l%
z$zK_L2kt4o7hoTm63OBCPZ`ebJPZ5Fl<f2o7yL&q_~%Ye%Hi_Az;HgEEM_<#Pj)bz
zk0-Y?oXbDpf}j8Cq&<AxxK!fg&l-H>u%>Nrq3>n%e4P2V3;i98o{uw+y3qfc(erWU
zH5dB#7(E|n#!Ymt?<o?e`torm<U&7}(erVpiP7_M#$-4jXO1#_J#?%7c`H3^NcMhy
zfZ=?67-Tr_&!_xLQVt&<W=Nds%g2W~jGm7V&#-xi_p4XfI5P#Zl>OOk+#vh{%M9&Q
z8(t&vGi<mFhqReCT*;s3f-kY*=SlhVSwG?SFJOKkJGV>vi*5K{B)-;$za;UiZTJlm
zzt)CNkn#7;HvDvn-)6%flXAw$ocaT||9=WD%@=V+HZGK(sXmklqt9J*f#kEY1b#?f
zt8qxttM at M14HNXUr9b6xp1|uRE+4xDUM1yEvgxHUmr_7{C+*xR<B6aRk4e11hOd<P
zSvFk7Tg5g!U(!#v;cv?4aJCKKD;+l1hW}E^DYfDG(gEc*{7w0s=r;VI#0?v+#&P98
z)h^p5{c;<9y~J1A at W6Nrps|{gl4D3am3({um*T`Y$)5{1{60&(pl?K3jVDhsoXeRg
z`wQtMn-%>{5+^&UO%?tvM&HEn>rkdda at _QC`ELkni+&BtN`4-b&+V*YIG4ZC#m=pa
zp4)i~)63=jp5ffi_ZZIYJekS&V&_#Zc6Kv4+|C%&%jY}Zz8wD?lhX-a<xe%wP`mUn
z{1hg?p5do6d=<mhJVSDN8D4`jCBj$Zqx6z*DG^?ekHXstL?WEa-!4!KCmKb61H-xf
z|Hg1G|4xQ;`D&gay}kG-`7begZvUGM=kniYIG3;HJ(ADuKb5r$xBqMxTrR5!|MWqY
zvQw(ni0yOgg5`wMY1Mp*`D9M`Hd*Ew;n(2fM6cR{=+%9qr}sX4N+l=Gh(C^;eiu1A
z7_N$`>``MB(Q<n-m2<sPW|Nbte^lSL+q0R;SH)EIx=|4!=k>}|&euL6IlDd~IXAn=
z;eO`*+;pM;BEu)jGWl}}!vhST&2TRNT848!moc2nU%~KzER)_6hI9El8P4U;XE>Ly
z-Z|)YK+=%>IkHR{m;V)pbNLkv=klu<9*|{{e-6XB{I4>c%U{TFF8_Rn2V^;w{I4^5
zE<en0E`J%r1G1b-{!NUY%U{fJF29=L0a+&bDn=!U`{x^yhB7X{lHpvwiY at 7OK+=%>
zb7h%lgkQ~ofGlSt&tdp<hSOZ7k}eBGujU|vc)U7F(oohe%S1m~mMNpTl at j5q?sUD2
zzK{q%L6oeoJ7k$~^{z+I0DU15K30^huiwZr;kgVy%y9V%ArLiR6TN&@5O_X042f{R
zC|O at YhO0KBJL-Ll=;bT8U@#c{c!5}7H4Oh0!($Ae!0_!1mrHBn?kx<LOI!lq%W(BB
zKsO#@xav!UKh1EegGx2>f-?DPE^h5&xQZ3&#vKfwBq*(~0fzr8!*gZlquZx4d?mvt
zGyGPD6Oa1++yKJ^j6PR(VxpzbZu&xMVE9 at K65kscPNeGhc6|&#ozWj=_!Ne}#&Dva
zC-3FThlga-NBz$4B!(0HB1ylV;Ur(hB3l_w^a{U);X~rUqRtI1vD#Hy5zgIMd7~<I
zM4M}iV$t<6t*E{>R;v}Q>g?16P=rH9?kE1OV;$_&yaygSH<2mFklzY;&@t at 1M1~4+
zf*>;vaa6#G#r0^P<vMW+Jy9W7V)B`1Qu!MI4^rs_IUQ*AK#DUSUP<XRxkst+vqw_l
zV2d`<S*dTjx=i|)PLSi6o$THzIq1xcIC1Wko_vytd~!@C^yHlk=q(pzz#w{6M)dMX
zzU82fHfyXH;@#w-*H8GQvqRe_b$LIEoKg(yO)f{ji>yjhKT2x<glp=2RGEGo=HaL^
zKhsSEeW(b(_WQ at Q&?jcMtHIuz+1Zwla^l?0d91I5{{Dx~Rljp-(Zo6D|F^&BO>;7P
zNF`?TR_?;zUtJSz-k=pV)Zq;6`nqU)EP@!NIm)SUCLMo<xm`jyzZ{Fyc68K&EAdpO
zI at Bo-y;==QLl>36iibJXvBU(M819HT#koRt&NWjdNj@)Hh97^;RG*UsFPg1GubFC7
zT;4R$aoEf?SX^E-3=0l3SLZ0gi*D;&ZpO6}Cw0B`a{9$z<`q(0p6VdZ>1JF9$>m9d
zIKi8-2Fc|`gFM=ssR~y%{HGVS%``To_>p4r8K-cR4?teH)id<bc%7dqPkLqF`$&3S
z`l2VjF1^eXuS@^&!kcJfs~gpI#zHgg!;vK?)$e!k*B at Hw*G5_q{``Ej2!G%AZ1IaK
zd5xdt6}5M?;YU9)n!U)k(Z<N?4*Wz0Q(#9MCb^HD_F&P9uR|$;rLv&b-fqYBY<%Q$
zMIv|OSL=YBpVq6r@>e<Nr}b#B{3{*!X}#Gie~kk_t;c%hZ*<_N^;WO^s%h2QA^HF8
z4EVc2ONsLr;o7VIoq~HP{}(dg-|fI(oB{t{2mVk7`~wdBQ#0T{=)gZM1O7t}{Iq87
z)&EB&zgnB7_Medfzgn;6{4+D)_sMl$&Oa*yezlLy`5Q9e4>;)mQU?5IIq)}Uz^~Tn
zx&2pUz+W!)^YM at N&%L(4+7ICRX}{7d|4Ik_+cV%-`wm<`?TdQV-|V2D_VK;)tNjhG
ze at 6!V-46O`|KF>AwU5H})4r`&{u>?i)42h!{A$03>))9H{~ibZ*Jr at 5_Jz29ItSp@
z{(Bwt(>VpN{A&M+>!*EZulxrc^xv2PzuM>G`e|R<tNy<_=>J*<{4Ys<uAla;z3M;a
zpr7_mz4D7qC(v{Kw6E=zKbJPGkofpV=P<nTTYp!1sD9e__R1fS`nmm=WWaxx1OKHN
z at XvPOr}Ow;?JsxWzdQr}DhK{Z2K?&(e&GJA$$-DnLH|V=@LPY!dT9G!oB at BggMQk-
zwfjE+j2;z!CIOe)PRV~e-^>P{Pd8bjJ#CU%$}lS4bAbhP%R>YzepAnb+Eb^!SJIzj
zkte?A at XhZ8YSFSwai*4JepG&nsYU%|eU<D|seg<DWNxp2)P=uF^7AtkB*M;5W15rx
z8jt*sy70G4e!D*VHO0A3`nx^y&vD`3Df!1yrCGA;Z*k$@EBWO%eL{kr|7I8d0gwC-
zyYL_M$bZy@|By%iQ_$}qLK|i4e at 8v?FL2>kheXo(?+O?Ge0j(u9seyZ`~i>rzjEO(
zmi+vz5p at E4`#%DHG5#RuX?DGJrN$W=f9U+2ef&A at qQBIm{&!vUS2^gX^L2LpU%<fS
z)c#c-^`8NLr}{TK=%@2{cKs0-{WTu-U+kj4+d+S&gZ}GW^tXG|e~pX&T at Lz}I_SUO
zMSr(P{XcWjzt=(k`40N&|9fz1|D7K7A92zDh=YDQXK8Q$zzApkyFKbZ1^oD at mD--a
zLk{{^IOwmE`fcpmUa7wZJUo#uo)!ZjtdxT&AFH<jWfwjF7vf{D|7Boy at _)WOOxI$G
zNqpPKpOs3#tpc-Yu?LBdKNSDj^*`#Ozgy}*O-M<8+4Vo<qQA;PKgIuc{rMQ+o$9~W
zqyDkrhY7>lztKVeWe)l)q<&hP<mm~i-xhufTZxWrrgYrJ{-cs#{r?3P_3-)QT^IYi
zrTyzABlVveeC+<)i@@2*f4gPFssHytiWxS4eINWz{yQf1?~#n8f0cv&xuc!+7oTo1
z_9{n7IrjcD3;a&{cQ;xLTz|cT{$EJ__V&9gXz}y2t%N9ZRQ`mE{Rbt#`u`X#X~Wy^
zmoE0}O%{hP8OeVQ`1s_tdM>X9K(^TJ*XhN?0ayIW{;x at XG~<wTrR1Nf2<2VdrFK2|
zh5v_e<NZt8uhyZ+{x9L9^eg+nC-vKgA8qgFErGP=!;@YAy)O1w6<Ay+aAuV4{pTm(
zce1~9jm4<!B>QPB1-VEHe;feCc$mh9q#CJT(W{&4TIG+S;G}=0gZ?%MQG81OGXTgZ
z*)|7u7g!okQ;KCCuw9=B2N8dcjen2ixBE-!S7LnN7xvru+ok=*l92q at fsf)>_J2|8
zx7$A;^-ocXWFD|xcevPpSn?}9icRTP*DWsg at 0RxKl9250!bkBdx!-fKUn{g2&yxHq
z3#fw3|KehQvE)~J6r0kouKx&rC;uOIuzx+66u*)?d5m-asge2vN|DU%*Hx0=-haA1
z+P at h5PWBf!TMD`VuL5MZf2)iAyFJ?fBNzJzJlg*Q7yH*c*uUAq{%2k6KP2^^ZMh-w
z9Y~a{!f9ijpWpm5toy2+6`S&(x}F4nC;tyP*uND_ieJf%Nd5Nbw^Zs6C`B^2U+;9W
zzs95eaToi2GVta7rx!NZ?ce8Of44{bUw5&8w at 3S5cCo+8!Tv8h*nfJi^Yc64(f;L<
z-~Rj_@@W53 at H_RNT@LnN<6wWEi~Zt{wSYc=4^IJpf%4rh_6N?i2vt8-Y^wd$^$%U_
zKjdJ4KbRE1lKX;-{iRZWy7~7rCptgBjUMfv0DdR`7qnV6<o$oAgZ=dXlR3@*-BN#n
za+J(f{S~~}MSr{0Un2=`M}7l7ieLHfS{MC$JnA=H^dEH4PqCz3|6?xt4|>%9u#5g;
z3f7Qn#J8qV{b~Quu74DQM<@Ru^QfQx9-dSC?{v_=%R&D<7yW^=EW-<|Eb*=ESHQV0
z`j0y3r~O04uiAgJi+<gs{tYhrtJ*CKYowv%|6A~}>;IXH{&tW0f9#@vuY>+?Ip}}e
zMgK03`d at R=pMQl_ at fs@={cktQ_WBq3t^PM&(y44f>d#kz%+<BZ%Ot;j{x~T4l|CiL
zemxibPW`uC+OPTvwcmH~QTz(0zh6ktPq9)U^QWc$A{$P$lvKV}@>^)~d(_#<GA}7U
zg>3^rUg0&{>yPG>`~gKMb7jARza{nC`3off9<1;1Wap><hf(;C6QR6a`p^3Rc&+hg
z4{*h={73b%>n2eL<$}U)^e;-^$7eP^cK#E9+24HuY3*h7t!ZT^S-JYQ`)?d>IPtHi
Omo20_Q9qvS{QnnE0i|95
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o b/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o
new file mode 100644
index 0000000000000000000000000000000000000000..c60a62aced9715a6cdbc90a82a1eaf37aee2c5a0
GIT binary patch
literal 44832
zcmeHw4R}<=z4yrn5Fus*qD^nDtaRHZexzAG6GcrRfwOV~k$|G8n~*Fdk}s1J2+Bt=
z336PbskIiZ`qI|x%WJ*2wAZ%US`A_aecLPAR&D*bv{ohJ2dJgAesF*PIWxPHvuCnr
z75nx+&pXevJ9B>L|26-aGxI+)v&qH^V{Up{nkG`3cD@$B5~!x_?}?X7S+P|6H|;(~
zTY_uiIfv)x at _ZK0&*S;|Jih?>JbZM1U5dOKpT+#T4EYj#F6P&>k%#cPkYCS1J|7>0
zUza1V#AgA&u0XyJpDKPm7x_i_EaKOfBEO86mm$BLm#;v6B`?<?ujS?C$m at 8y9(jb9
zS0ZoV<*Rw#j=Y1HO`dlmU(L&Fc;1D4EiYfg^J|f><K^`{-++80FL(2N6Y}eLnVN-s
z--}NlFK_1g^~ksIvc>ZokVkoWE6 at 9p-^j~1 at q7UJ*LnG7<lo at sTabT~mv2S>EneP+
z{5D>`9r?F;`3~fF^738C{}(TBNB$jN{vPtX at uBpd@3g-!(XEfF^`1Agy3ZfuyFQHS
z`F=85??0LD>(+aZ<WgRjd7YlN at BCx?SNJBO0~}yCqt%&u|A{tTmTpzyQ=#cSk0C#>
z?26sKNvY8d6XzmL=sn(a`Y?f?z8=Zs>3ha7pT!)tqR=;qdX(KBXbN4AuF0y`qnTgM
z2dG=+f#Tqx-am>+_LK*xMHrgLF`~%Vqw{hfFAw<B^peNT4J&-DAjG#3 at asK~`+ei*
z?)Qyfa7ee-WQj(z+nDi?RO;BeWd!ncYca$@N)7lIGbxt~DHlV^m9~^9%&OPVw2ka6
zMZ at c8^KRR?$Mt at 2>ejkI7Vj)5k%?5bp=*vEJLa2IsxcyV|KLuR4XlVe1O2D$lCq1-
zmV~U|l`RfgA3j1u47%%IsJrU6SZjAETA>;JtBMS3m0ypda#gu{$<w}GEt9G<AD9k1
z<`*GH$IPwlH(|)0(k$D~`T4pv^mu8mrawTyfed1rqwD>1{Q90br8ZG{AS+bzwy*bJ
z;UXh?ZN3p*0(V~v(VhOvlIJR|rz?GPpQ6e_lNrdX?0dr3yC1xU^`rr3!ZvCKt0|Dr
ztTv)_iLd;=K_iO$ou?YsQKMj=ejXgNapOe&JTQ0rw*CZJ-=J^Hza!V9Cd5bA1 at eSc
zYOH)FS|Rmc3~QfJaMUUFd{l#^&OpwpVf{K(@{xI>9-UL9_qU}nX%CaLb?d*_1+^`E
zsLL)dyQ1vMvhZ$u92jQx&9>F+GW!PCZVr_+1 at g?Rbn6{kKvajvy8Iz)FjN9hJsI-N
zeNOLt#++<d%kFmQy__1o&_Mt4_YHP_&M5eszUgnwF;h_>&#W75?S+;=sHZDW^Yy-(
zjw#DJ at CfRo9h`%H6Y5zP$k%**nXHCraKn1tmTc_`S^Fwc``&a&)X`Ai9IQlF&*}wK
z0dgk9unrs6qq_C7ZoS0#LOpoG(uUsu*zUK~sJ7>+o_=3%2P_bEWvxriiW*a`+Y)OX
zq;||DDaEW2=>aZciiUR$pd_fc6D at gEFW76hr0=GDvYqvjby=v3l}Fb->+{gzcKQ0g
zh%2~bh-L=6ohr$f)N}P{hd&f;fbD+|p*f6_k96PM-=QIVz1^t10XuTJ9Vo&3lZ=9o
z^i3Z@;zr+1KScF$K`r3hS_XRSK=29DzYRBr?qSa9#$EKPIZRz;v<lA`B!!}-{7Iq9
zJbGO4keFvNKTsDCo!U<(*h2<&fGny$dV#g4b8=<DbHQVwO)!OQxfI%PVcRkf7v<Km
zUGGd9Dnk*Kw#QTU%=cfN*7I>z$DGn5k7xS&eglraBfj3lAD}6JqUUazUxXX!zTOuB
zSVw$6HKu&LqRcX;e at x6nPXdh(Nq};V{yD`V>zPo`{-ZRkScg%Eu}4GJx)YBY){s%K
zEA2l+1yA<8b`(l|*KGzr%E2eBr+Ri}RYtSVskE|-OAfccGqeh~f=>*!!nwj;+1cg5
zg|qv=!F;O)2Zt5{j at 1vX3<)y;!7%Fx%!wLPJ|ycuWY%Ys^>OnDXudDIWQFgYK^j-f
z7B8vRH@!*ity{AK7`bLilTL5odEB6Rr#w*OE9eb$GrB#j0qJ at G*OYHZ&iafVy*yB3
zMC$_$M#(F_-d#lBe>T1`K2vAa2D;Bhi1Fjm6k=o;{r3eZj^P1Dd7q}I9YBOZ^8y!_
z7+;hJma=&xdVgRGc=dDdx6SB1144Cln59O43!e7-?Az98%nnC&P;Vz{bgiYtvI7^s
z-sdo%>egt?j+hrXMbGZ+P|1tFzG`$bs!2^{-=9s4x at MpaLx@rE8n<j#AUf|<8bu~U
zFT;W_7|~e)!#c*U%DOkwz_bW6eJFZKZs^R<g)%P5(xY2hmC*oC=uz8qI@~Zw#?eEd
z!|<JSfk&N98JL%AatYXVG(-3O;L+eS at 9MrY_Uiq;Hl4+qBllh3cuWP{w#5OOw^^{D
zTY~Nuro=a%IjKgE-op8N12peFo|%ptnE?ZyqH7~sQ>FLorAB`P#(g7z$#W}XFffN@
z!6&}nk1)N49-(IupJTdpd7xCc{x8jOx?#O~Fo(s7dbBxD?|aMCjc5d8&w7jjuNl^#
zF!(=9gMT(gSY|W^nv*LF-Y3=Fp_0eeXIGYdxZ%-qYk%Kh*Uv-NTac3rIh_ya*6;Nw
zR8UtdH8A#OVeEw^m5?7|v#~7y6y3sHV+2aMXHcRct<pMFS+GB}=_pyhF%JdO>)Uz;
z1eIHZXx1&0P}Cp52*)CVcYV1S%|lj&{%)CX{E||=WXPOI4LAq_(jg{I{eilMNZqQA
z&So_63!*itBV|#$0pUFGwZ6ypeHO`xF0FdJH?S8)ZAHkp;U&HA1z+!PaaHyRzPi!A
zm&1UE$zXhr9W3PII(%DgSa0ao+rp2Tq5g`aaNDeq^`ahK2DiOnmKf1haR0UbP|rtM
ztDpQCQyFJ at npljIqw9ZVlpNYfaXT2%ZZCB1G2rZcqXhPwp%8oyCz}XedOjHA+guJG
zaZ&ap58s~p0FzztyqKwGk|U*=>Z^2(=M>M>VjA>cqZy!xp3Is9IY-cuq7U(o)=;WH
zNdB-xGF{h8-Z96=oGv^L?pdtr!r39~F`XVvn{5xj2l2YKTkkpQ^IboeV!WQCX};dq
zY1RgD-w#>X2RGVH!eSEpnV1!@C2+IcjnENp_%-un8fbRFWU7;2FZh_T8qvE0-3+t`
zCBu5fD0$VKWRGL#>V3z2y(SqF9i#W`&N_zIsFIgDUu6$jJHzdfI2LOA`o at sC&_yG#
zzUeVigVAZ(6&RmHfHnk78{oEM9HpVpun=ujWeq+2cQ%ET^O4K#eFfA*-vSwr=i_o5
z?|Veo>Yy9;I>p}Oh$;js+aCA(1+MqOsasiO^a-*1!|b&QShZe9jL7X3a|^v+pxSo#
z96Ajm?B~Ylzdz6o2l4xV<@H+!;wYaws97F?L^KPUWaxe>Vl-X~E^TNXyTN)f^<G=c
z+sw%a^!JF#9xg-HFNc1NIoOD{+F?~?-&?-kr@?LXf0-ol`7t*Cqnm99Oylr2<iQsz
zOa5vW$LIU#`RFg^X~8Ejii(FGJ=n~SR%K_P=hQu_r|k}5Myo9Oxbx{y&s%Ao-yf=j
zzB1oWCI+_Hv%t`J7IL8dsl%bS`T9D5P><`o5e0h4o`-g+$I&7L?`g}f5PfX7J!he_
z=LVm#T^O5h_RvF)XHJZff54;8y-YZte}-=O5b7{OoupfT5b-lTkWa&D at i($c%qpcJ
zbYXoc8w|l`hJJ*x8}tY7;W8ZtcOKB~h=bjxs0U9!dn9;SbO1L at bRPMh=du)SVH}Oe
zTOsS1Bjh^X;nt(nM0U6p>n|+c`sHU4Z=I8Ry!ARll1~<ImGNL}I+ThC3-Q+QSnK@%
zL9te-e_m;2bY&Hd7)7{1JYx?S1mK;=j>0f{uvuUNbKI~1>o1koYX`>;R7O{0vEhih
zs4}_&Q}YJA(7j3{gZ)l7EWVl)DtPk&bP*O`ouWS=LJ5Rh8y>JDtshoee}TkYNbLM~
zL|P&1Z5C&-h>HhXn=yYMmtgBW2;#xk6cj%}u*E{GSimLb|9G$!iiY7}J^)F<R$`z<
z?}YK-$_};;o{8rd!?n50J-#ZJ;;S+b at fF1~-FnI1^?NADdf1+aM4a`=NO9IQxF>0x
z#o{U{&iWkrR1s(0^Cpe)$0^Qwo`p_san_7job{}Tv%cdJXW=oXP>T=bwpGV3%<}X1
z5IfGQSHxM%-Q%pkGB|mh6&r7PC0yTIhklCi!%IAMlSjIh4m$U^s>}|0deQxOyys5$
zdC(=sXYu&!ZwMl!cv8fHQvCHCC`OFGa%@w|F^GGMzkUFTJpQ_yim~{siQRCIzxECh
zQ#}6qF2!HgF$}jN1jF0w!^~F1S at +p11IX=oD^&89IVskjcx9!y{1}#$dw!Wkp;gIS
zoo|GC-c0L!j0J(i!m7!Lo%nMt;;J4ISKalGjjL`~#8rP(#Z{-;an<AhtZ^0VzAT<%
zZ{@q=*U@=dJ%efbHi9VLV%O=zt~2Ik+a&xxyPgOVe%+thHx}GBk1aVapQ~a3(f^~b
zAExym7Ju6H`$t~OzW6N4<WIJ>gN4XwYnC3JgtrkhAU%IHZkt$slHZMoLeWzL^wz*u
zBXY4xp%=VNuO-Y&?7iB4{yHBy_**vq(@oJoNEY6huzs@!tb6o=$2l9uCAn>>zGUBs
z^s6IvW^4O7=Y%W6?UCB1rq;S}V at pS*oi?Kd|AVw*gXFV!v)HO@&zsmpT7yXMtA=&R
zDA>=|_e%EqdTX%eq+5qW)<@WTH46S%S at OQG_e28wr)k)e^If+Ca&@d=_kE7gXnI8u
z10yCXP5VU_-NGPAIi#dv8P+ at lYix$K9}E6i9iaWOo<V#b#ggZRNA;5DJKqfTH_gm4
zO5QUkh6=FX at eZSZ*GT&do6Hb^nm(+oVY5P7{)CE3Yd!W{nzOJfhQaZ%eCf3?zTm9?
zg4WoOHZs9j at uB57dmLs9K(q;#8$v7eXXdlm7ZnQiqbJxk3R#&xT1)Pm2^m9|;7g3J
zgK6#G)oDG9l20!=gqZgbwg&ZGuVx&)nT5Cf&f~go-XXpJtiO;`hD at OHyCH$`#QNhU
zA?rE)XT*)<i at mk=yooKTm1wfBkvj_x*iE+2*IUY(>|Jc5hpZz;!5ft&uljnQfl$3a
z8%?&Wy^*$=`aS>>d?ENmC_2XIFCU+U_0EO;v;4Z1IUZ}F8=K(i4W}S at Hz0(Tb+g6F
zQ+5DhXlI>nRpRAmJsR!`a(JHXaIt=%|2*#R|I)3ALd3*?ZtcSKb?`dwKkF&OdfTuv
zIf1nc+BcSAKNIbY9*`X{3hWg{J(?Xj*c+3NVYK~rJ=UWU&(fl=Z|?K at u2(V+-k`H3
zaH;}pOxA;_iL(ygEjP(7Gzr$QPyID{e&`~&S<xhk?U6B3dyLXc&>j~gYmcjkwa0s9
zzSc4HwGdl7<>URlU3}v+$75A}JQh%&*|;)E<6JpH<FN7Q=lfZ2qUXS^U53_BSHrri
zYrB-F+Qq`dOwWO6kBnjMF$&LtvOVsLwFj8&_CQ1KdS%qmWsc^!xUt>rtZmYG9xh+o
zQrp~EH>bA4<m($!lVDWah*1 at r)U*+fH%Y9by-trp^b{kyI_noGcGK~Ktb-?$UqUz#
z at GzQ-R$)y%cY6?}<yS^q?R|n*uut$Zjq at 0*>GXhwMWom|H+DqXz*%x&{YlIL8_C0P
zz=nIV`h5>1=LL^IZ0G+mtdB~2k94jiN$1m&l`ToES(|4BpXnRaeW5oDpZ<3m%COhE
zOt;>MuXDxbBg6WmQE*u7MmLJx=#|#qgFmDC82uYDiD84&DCx?>vb%-I^CSKg;5Y=f
zRp6io><43Ey&aTeu^5ak5gHV;sIo&#Q3vz`aA8;<YGqfLmx6B%)uBw-GUVFw+K$G$
zaEIC6*s}5*e_d+}ik)?4V{40lMSE+rzooOO$=}%FZ)r9Ct81GY>(KyMrL!&Re~87p
zwDHsp*V|xhpWeBWRv9}300~QJHXh9);w-UDMw0WG5V6o|SYkodA<X;_?u&m$TbQ at w
zZW^kAqmLa+JO9#Aw@%P at q>Z|6g7$2Bf7*{GXm_44>S0`*Fbd`S$BsHOUOP0dKOOhC
z<&1iEg7!+zs3#|AALjf$9rqz2^E|BIkff!fJ|0h!-WU%_R@&_ov~Qj;>YfSOf1WT3
z<?oLj^)gAiGadJL<dBN at a!AEZzNgZ0Ur0ie#S)E=JT#19a$!M9TWizW<&l=UhG1|t
z9%Mu(O^q#)X$xBGBNZ~GT~^UgpF>^Dg~1_0#UGruq@}if?ZUQ5doA_S<dR0VXX=8;
zN-r{0_Do&S>Y+A{%HdKaFF1X6<0q-0O5W76`ua~*zv|BApNhY-v*}aump88dH2l-%
zAeQzbAhC)5Kazq68qG*^M;K3KxFdpDq&~(vZ_b=^{P|0kcea?F{@~QYsf9&n&*)^A
zQ#MSQR#-HxFj&BEfGHCndQBaL&%6aoG`x-s5|)7vrHOW?rCqZ~OY6!_`$G1ZtO3mX
z#B(aYM{nSi2rFVGO=E{kIfiMFB^g`FG2)>_c at rzyWr1~bY`k=j&el>Qn<)|R4pthD
zJ>-JzbHV=Xf*p0ivMJs{lJ)vsuxT92vB{Zzx(jx>3)bd>^}1l&T(J9Gut5jb3!8q+
zvCWiM<m7HnFVD&A$tch9r(ZZWC$Bsww=5^Cd|X&6UlA+M9j7YG^zP-dar1 at vX;6JR
zd-v6}X7bbAoZPKs$L5T(9Dh${dKom9<>b!J$qJ3TNEGe1zJ>FhPJBqL{T-MN{2`8g
zm+D!SlY3M8?3}zCGiK-b`!i?f<Zm5SmQ%EObXiVu&zSO at n)Ii}<`e at d%gF}?C}%V6
z^T)CC_gVab=p$LM^``WNYFSn3{jRbuv}G;kvRJz&mvy_Vtcr139!%NJWwD<o=s8vC
z4~)&p(rrBt at q24xHjh~U$DpS?r>J~*{b4ixejtkm1*CH7{P2wI%L?*kh<sUY`?5PN
zqb<#r=J4jcabOqYM%p!11{+nz&?$KB3u0_(z(s%%q~#~rW0dXlxhkK}%h{fuv1?RJ
zXNA;)bH`;YPIvWT**MJ)9Rs8YiO%`6YC>4gn9ZZNj_S|6G2^CmvgdvxK)P_4J)sfp
z`H8zd3&v&48qppxrrZmCZuU at r-^K?am@{Icrq9$4(`n0ul%Y*ezzE3DN)-4x3jACJ
zK1+eqc2{D`z;9~YQigVc8w@*36?mBfpRK^>DDZLxUZKF}D)4y<Jfy(sS38L*gZ+BP
z4X0o6B&H1ZYaTbeIuQht!G2AYcq>D at BoSovmn!gO3j7KMUZcR5EAV;+zA^!)m?Iti
zd^?{D*!ab%GPJ7_=n2S(MI!Org?NzCC3+ewC|%2OaZS&xNE!CbCN5dNm(jBsk6nxB
z_XK9&iea>Lk;CyU$DNZH{#^&EX?YB9Ou)a$@Nfb?nc+Bq;Yjls?$oMjS20{z9cSui
zxQGPf_)dn?s6RaYhT+-6L0lbSxQG<vw?EJ3G7(Y5@$(q&ivzrL2g7Nk9G;$KxQHg>
z_eNo$oh*%eq9#Fx$HzTk*)oR5$321fF+4u*2 at 4)#czoOw_-hQ0k9)$h at fhDHOXD6N
z?zI^Td>O+_V-*tg8x;6=7#<%d1^r_RoQ?oZ)@CQjAB%%MZur>@pOZjerNBEFUY<aI
zs{((J;S~w=FDme344<1o|0Q(&$yy>lkKyxT^rGiA0T*o-yNQCy=;PzLp#K)b<Kwx&
zf5!02m<WNt#PIldE^rNx;$&$&7dY)0O=iCewM7Yh9>bR;$bSyw&je}SXYT- at x(f7e
z^=botx<<c9v{OFMZ)W&*ex+#w|1rbqmymW6`0p7m-rVB!A26JLAvv7>ix^@~*Jx*d
zIDP at c>Gv_i at mhx8A>f!jJ-{bx at p-D5Q~XJRm*K&mti|WA(>eXM3jD_mkI!p@{?7{h
zBn*X<wVIfn?A-)cKLzgQ|A!U$i%ib)m>l+Af~#d1Qr+a#0iUeZ$LPg7<;%dSKhQfp
zCH5YH{45M;gxBx^iQ-;LCdUt<pHiauoYF(U-Sqw%_+)LRO at wduE`q!Z9o3C~qXPed
z0za(4PsfySdiwWbdeO~TIuE#;-sKAX1_k~f3jD7Md at _`}=`B#;>w%xHZHn1X?|PK(
zV>tbK+D<~|QwljREAV`UogXOZFF-#Kx`b}Z7bx&+fS;~i9V4B at OLr>hcQbl3M(^jP
z*BRa!!-XHlO>nno8t~IK`t`V-&fxiShIa{=y*tyz0K>0|;ivHuR_`I_+88eM{+8kE
zW4NF{!tf0-T+rv8L~^=g_?f&kkKsKrT*zr;cyA0Ba-t019K!|uzcKv!7%u3aVz?E<
z1^r=$-w?wE{Yewa&aE+A&`)Q0e+(D&moWUM7%tlP8io(Va6vCNAq(r;+O+Ux3#!fH
z at S^2mvpo_C;bLYuT-VhV3<jsj8)TunYBLzDYp87pVQr(?5vr at GuEkeHMYTDtt+uf}
zG{1U!ctHu<Cuy#2Uo~@1D;7Q@?L-hP3Rg#(aLgmvVTP*9!o<@Q>F5Z7g~Sk4F=Yx4
zfJB<xnriDJ;fBT*Gu+wIcy(tabm5};)#j97TVtdyvZk>k5{~WFh0SVny4l&*1fqo`
ztD at Qnhc1LsOzTWhuQ1kVv1!uU&XrG at 8oR?}4ZmOBws3K{u(6}Pwy=mCq}cxn24`1>
z7q4xLERJAXXOUF(>D6Yf8L3!M9iCZLYeIEPMPXfQQ++aF<&7O}wPsy|M`81fg|o|y
zaJZv$c{mhS8#<#7$7*2DqWQ3>n0BqI+ah%pTA?u~NMBRvYdU>Rqpy+bZ0})}Pp?=#
zLS1NMDJe;-nT!P6H_1q_Lz9dIn=r{pu+Nf&gl(k=nrd@~ePSs at 9oz1s;Wo29r0OX4
zMj?o&)kjv;b~c&edOQqfBvd_>dMvvC4CIO8tL7(>2+nD)oDyHWy-86}BA>75*LEAv
zTp2Ovw4!6PmR8YHQ+uUsHN8<L>;rmZn~G-iM#)-pIO&M4D4#N7cjwPUa6}^ZOpGjt
zktCCX$0nH+kR*{pPgW8sM3O`bJ$y-|5J?g#^n50fLL^C~&?B5g3XzN~#eT|17Gu+l
zEQfc9BGw`5o2phfk2F}4r)^T{sU3FEU at EyW2?_Zq2?;r1WD>h_Bh#>6nv4Wp&?aeF
zLv>$#v9f9~s$xV6X4A+dw!cTFA+wWF&~b(ljYU%>p+HL|p+G|s1p=+lW)|Vy_p=hu
zdwyKJ=SeETFwdL`I;Gy^GQA}z8ksyn`f;7rgEJFOHHR)_^L at qY1tsC|%9c(RZX at b$
zX>D(=ZHkAYRUoS_rU{$kQLQ=BT-UZ1T?esnQ8;Wiw70GaH$_ at jnhoJddwXkp)%?2Q
z9m}hO-EE}E!h?;|!gll`Y;0~_9T{$h<o at 8a*>sGGUJoi-%=Wb`_ at S7@-2}Sh!GvI#
z1yZ(~hK0dXrnE;^Hg+Ha7Y8rxqgxe=;vE<<vC=H6h$1v#(ZAP#J((P at ZxI@TeY3W1
zRk*HURd_{hW0URaf0FmNY3S;R8u{UU{`MAbYwdu$XWAXOncg_ at fW<6ED2%t0=17ZK
zH4JXSTS^!&pwySp;Y(ugYxXY#!nG~+__4t9+NRo;y2x?`Z*@_4QFYj<v9TqI#_~%F
z+aoIq at o;u^(Yc<E))pN9G}ne#J6?@Snrm0Fcd3qH?|RfI@%Lc+WiU7c?}Y8<{79s2
zQD;jFj-2vvG4{U9>1NJtY-#LhNFYr8#k>T~A>RC&ogv6HG!%a~T~OOR{9RSUL0Akd
zZq+ERj+jR6@<<bVnM{4H05TUV-;)voe>RmW$@%%qaJb$+OdYPH)6}ecVPNIsW9v$s
z at f|)qrn<m^#f!>tJzmXQJ0jF*OIp at 6qW3L|;4hT0p)TIm#aOk#+kS0RaAv5b(QHJw
zxh7JLm6h7&4%Xg_t5xHPs0{^6&`6U)?efOeL5z&yx~AHWj<AWP20U9UTA5pvf~06j
z={kvKxHg(uIvP_`n0PLA#70gy#R_U=Wny8QvMMo(5oGYdZUh;eLMg+&Ybwd at qo*Ue
zAx5E=A!13j*@8kXgGZa{XKt#XP|FY at y4nswp_CC1;*~-;305n`nIzhN{yaYTQ6)>_
zBupl-r4n9_G9{v?-6d?JuvE))Cw&vgiT*Nt1ie_Hb<%%BqNm*`LH|RJJL!Ke(O)jn
z|6W1=ibPMlS3-Uo-v at Ha7iS;I{wpQ=0tLM|14;CB>Ojc9NI@^oLK1zAME?U$PdM!*
zigwv8;VlyWHwiD0aMn<`CONGVzJdTGs&5lMLjGn2Zl80o>DwgwUr6+FKk3K-5faI7
z$4AJ2LV?q-|0z+n5FbGwP~Z^>?~v%fA>p##w<P>(iT=y{007-KCHx`@r(GCf&y5l;
z%RdGC?3753jNhifFXS6 at L{GamLVi8R$*uG}isy5cgx3HU{pvPJj_m)tC3^Weoyzwu
zNw4hZc at o}*d%~V2624Z#pOSFeMH2Kca-8g^Jt%?qVqch&(?3HB+`vAspqK6Zm4wTF
zKBmAg<c at OceOSU}`FkXscEN=GuSobh3I8(oc`1>6+8q=0b0l1rU!%bPDB*HDreU9#
z63LhGY>tzk<#DD!K|f8Rm&dV-6!gm^dU>3 at T0wuUL@$rSUsuq7TcRH}&MW92lIZ1m
zWJsdF3ce8jKf#9!B=Q^W!VA1v!sULxp5x at t4HA8?gm0AaU6Pz`2{-s=G3k|`i&hD5
zkm$cI;c|c8E#Ykv{YxAtJ84f<)ay?Y{U!;25c|lK$R2r|`3=WO4vjOj at S$|V1Uq;3
zw}~7ldU-tgo<zS8_k=w^m2lb5yChs5PtL{uEG4JkbdHl=c|7^EMBk2kLhr at chowYv
zWc)!1m+d_3WJaDqA6DQ$Qs7 at XB`!yn|1}Ah$CLRIE{`W$C0rg)?v-#^{vHK>(dXj!
z$m7Q494CL);KPSCZLNa7SE854neQm*?~~}|apnmH{cj|Cd7L?{p#MOkm&cj$dG7W7
z0>`Po@;DPz(9e?S<#DD_qL;@ROTy)G=8%MULAU6ichkd$<m~5rBwQXJh9q3>&tLeL
zxEy(Wn9gykuRK1SBhky_!wb^9BloMfrEz95WC{DzrE!Dsi)}Ns(;RpW$Io!!JRH(y
zIB+3<wgRW~Hk7Ddr1yNfK$;`<6WRW`k{^hE3!}z6hy(u<$5%V>H#vTt1HYN$H#+c%
zJpR7jfq#kP_c-t;xty^)r~V+@|33xi=CgL8wh?}&`cNW_KKIiFQkI>?@csN+j6;H6
zym#?#7^5%d{^Y}X46o-nf9zs-6_<aiLobcFl>F>FZs!1xCjt)K<aoXVU&`^b9Jq+L
ziX3<@r=RA)-{;R^u>;@99X88>|BA~gb>O+&0p$+-eg2&24tyWS4F at j9ap6DFE?YSL
zVh4Ra$Co;A{{$PLv6_;QV{ki#d}sgX;@CJTKNl+eVOu<-Z$Md$C(lT at EGLim7t%{M
z3;NqQPIgk83j8jKzEQ$&LYWfDQR$WCzsIO;`c)_k`8kq&+0H5nm*uZh*ttofm+ibm
z(ksjPgM`a=ejwqpou^3hz1T^=6QShvXSXCrw$rr9nLp+EPHtZr|B5811H8hYVxFOP
z>5=d+Nb>6?{7VwPT*AdXLvng0yar`Tgs;Fy=q2A$BD@|SfwvKeM7S(}3qx(3XaxPu
z5-!{Sza?Cj{{sn^<%@ZS^!DN-<i9D=%l5x7;j;V>C0v#-<~@=x+kcwWF0%b+D{#K7
z!u-<*S;9`PRwK5rhzltvoKAt}ax9DIgm30$IV1cAeB9_oTM)gtPxSQO=S(BXiAuzu
zMozy%&Q=K*#gXh0V-(TK_M|H3>q41BPOAP9ecNfz21&jsj#RH(1QBw%Ua88t^*G7d
zcAVtgu8<@9S?=eSg8l*t&*NqC=K=}$OL(z_%kpoOaM{mg5-!VMBH?~sCcPyRF3TT~
za9REw376%IcMiJk=QJe$9A2hOmj4Y2m*rPTxGcX)!u`BV^3RoUS^hUAT$Vpi!e#jv
zNw}YvN0R?7iC&f;l5ko6A_ at 2N@<{S;ljvpn^CeuCUoGK&UMBe>MkPr0&$l at ZWwQKA
z376%I*phDhISt7_kC)|)@arVN&&%n^GbDVPgwtFllFkc6FXkYE<al*7r=hHkmx+E1
zFH=TyD<#53-RXK8eIXHk0xQ{H_wh2};$4rRLHa@>d>kv;U%%yL!m}m(fQ0i`2!@FH
zn&|nf0>g93VMv7gSjqkhNVsStx+C7Vh at QWKGX_JVpTH3Nt46|4l5kVPCrbDh3Fk{|
z?Cu>B&X>3tzEi@*y8zvIOu|K9BK&y?r#gsK!!Ib~ujcI5HVGH8BHg%8!cS$C_Sc|<
ze^J7-dFP|sr%Cuy37;h4cS|_&h~K3RO1NL5&*q(&Xz8<^zK~W*_-Y$s-|HltNX75i
z=y$u62>TK%*<S}Fe6oZemT;n<&F^LNhlk|QNBn;7WC<tw3pst4gp+&`i)@l`q8Iob
z5<V;rEbLg at Y}PK<3UQ9c&KpFjJ<?QLXhynBt+2k<tknvacXVhBD8!*5)hT=XxQ29M
zJt+sBib#!q*y;SF@)OQOq@)bz1yZ4BM+4j#6i4%Hcd_%}v5F{2$xj{$`N{jF62;;A
zq=Y!V;Y~H2?WRMmNhQLso(P#kZOT}Or2eOH689&a=*Gb~-hoG;r?V~W{I at r1@`HET
z<P7iB<Pp!*wp%=tv%Zr8H9r(@JEgtVe*TB~Gkz%bxSm0FY3aBouZM(36e9H;#ewWX
zyTa6K;<}G(E!~e0(=V$$93hrZTGOx{EW|J4{t<0++^klb>$QR1E%_v;z*UZudP(rJ
zKL{>*oT4>jCy at W&{^m8wndxDbD3;r}6MutrRitUHR=BbbCtSPgB5h_E(MD55row4)
z{Ndp?4&h|68Ln+_uLW1^c~l?1<VRBN=A_|@N?^o8tUgc}V`2jwkt$CGic_emDTs3=
z*N}KLH8ovs{K>W2M^aPMBzU|?r^BkLO1F8EOHT;wQdQ+DAh}-qJZy@!V!y}o(v#^I
zbg5QE at OZGDouN(9cFyBLIy+sPqIAxaTsl8?o0 at nf6aIBWZ4*87${+m2pI!<i<v}Gm
zuXsj238(ur<3T6yW1m2$qR)BIspwB0I2C;*IcKa%?JiT-VFqV72N_$+NWYH3UpZ)|
z-|}dM_ at n8OLi`omv)S*J_%(j)R at m0wil5Y&Gy{=OBMspd?f3x-rm^-`OjO4q&A=j(
zye=d}mhysF3%eKB#rW{$gIKQO7wd8|Kdm2o<*#zlPwT^8`Ioxz)B3Mh{u&p4S|9bw
z-{8Ve>z`ivMdOOKJo5k9De!lLmXge0h-<I<2N?Ho{;#FLzukquC<XqVF8sk1_y=A1
zr=-BY&xL<#3jF(B_-PH>tN#yiez8_e?LR#QezATm^Up|uKZ~!s%KS4^;1~PKGXKgH
z`28;WuS$XcEEoQ!6!^uuxorQ{De#wb{qp!n``KRGU#!o|`f2~rEB{g#{aaGt7yAIR
ze%hz>s=vuaKkch~<rn)6vi_|p at OQiDr~P=Z`o+G6te^H#z4G7UqM!Ehz4D9w6IuU2
z3j8}<^nX1Cez8v@>!*Erul7IWqMyzUc;y%SL9%|@2lmRp&qe<&De#MZCs{x36MNPF
zXBYjqrojIu=a==<KC)N+M_u&OUZz)mwh07!SwHPFd*#ojO(Z0F{G)RbUil|-epx^5
zLwn`-yYMedf&VNQ{>xL~FLvRl^YLEoFL&X;G6nuB7yfVx{NjHc$o{WMfxp2;|D`GL
zn=bs9rNH0q!cY6DPXGIX(W4 at t5x}K3!1?c$H<y9u(oHGR9y7 at -l`tyqUt$B at d{bY<
zZ{m3nd)%}aO8PTw^4Rw|@@8}lwP~eGcE*)teo}slsagGbeTD2&u79imc<!u!or1rL
z^UG%%NQ9H0#&kFRH6HnQEBM<uzf+&{nv}cg at Ak-Fq~IUm{Nt(8QgZ6ARq*fR{CwLy
zCc(+SRlz^#k^jdE{(T<#Usmw%_sBm6{SG3u(T at Ii$RmG|f?pikNanvw75usU&_^=<
z>lFNckNiJW at E37@`RosM0%!ZvxfVA5AeU1OJ(x&hoT2fD&a*kkpFb+}mwMFyqC$U{
zi+(!q=G5=YaBu%AkNU at g->v=wF8b*_oKrvj9e%g|SL0ECu|oe27yXqk`d2CRw|UgR
zLZN at qMgKw<{kJLfcYD--i$eeNF8VKW(Z5%rf54;u-3tAOT=ZAF=s%*+zulw$!wUUb
z^-zW+KYtVwIQt*{eFW-%j>lKq$@SOZo}8$!%V`n-!b)WjWq-X5lybrJ{9l5PQ$PKm
z2)F*9%MZ6T+hSth&hh6gq2Ez~niV#STz`uHoch15(BIAVpB~d}7o7TURp{?>(NFQe
zQ~!R2{+%B6zo5`R;G+Ku7yWd;j{Hw+lX7~R>vx2ojF#w#htjV(f5QC9`NiMqx2Y57
zkG<eW6*SRL1l<m9e-{U+|J2~)^xwMC?)_&wZ#ePy{kfQg`D+dM-Sqouu at Gs8ooS?h
zIX+JPqj89reBrEr(U)w-Ug0SFGC_YD_}%pHb<tn%qW^lX-`Rfm2W*A%SyMuUIU at hI
z!v1}nU;N(zTUuiK-Kwy^t-<EdIV1Uxs^s*a0f20A+OL1bW_03$U)W#6`O%ES(lwla
zh9Km39hcfN at H77p<JPnX8f-wULy`Sg;Un~maix{(cMLz;&ac}1wB{oxr~b{H-)VnU
zzRe|{`6k3U{%iujoBa)BERwL3?5D95<SYrC{{9Qac$h|pr5dhZ(2JYmTI9E&;HJOZ
zMSm-V2tJ|zUjdL$(j5+L%eOW1VMM4;sQ>Rce};p9fb%>31 at d8O9{^^*gMS;hzlc+l
z|Jv~p{KEcGXdpNHw{!h|&Mz|O^$gDMw11HE3q68g=oi;P at VnW+m)oy%LbAUTAHgr=
zu2k5+pX)zEDB`)_as6F|{ka7;q0l4Pgnn^-r^5c+RW^lee-|LZFXX<Yu)m1w=V6Rc
zm(YK*$J*`Z^naB{`^SLa&HqbX?7!B<{&Tthg#Pc*{;L%B4|udcqOgCvi~Sp1?7vN6
z{~*_YX3X<;!SA^Kox=V at 9_`<!u>XLI{hOfM*?-25bANtw&#(<m)_+Plzq9`oaemQH
zMYV-~aeXfM-TF^alT9J_|6V|XU&w7$*k9$*{<{?Rw|TVxHii9NF7{vVV*jrd_78Zp
z|3iiSJ3ZR}SB3q9F81HxV*i;~pmrPo_j$DcGS2VpKZiWpzXbel{U?jRILZB|-^G4Q
zVSnzKAVx|y|30X&zligTerijL_g`^+zry}17yAdm<m~@%EA;DJf4)$}bHOj*A%*^J
zTz?HGychY+_y~ScuQN_`pFi3>>ZiZ|=GJ~kUG!5d>C|7Z(7(;2{;)#-(iXeoHFn0{
ze`x>EssAp8{y~rWZ&T=hz(xNy7yZvG^dIo3|2GQ#c@(T7)v#}k)t~kco%Nr9;F+F(
z=kuF;md%*Y`9&u9#r28ccWeJH7yWmDN$`vQXDIX+d(=Nqq5pXo{dc+O->lGI<5B-6
zh5q6;+e0;W#{9n>WoP~A at A{GdCvZBE4RHO=_+MO${3(U~+d03`C*(S>pH$etjoUBU
ziN=rb;UoA3{sGrtBoy#`2iITdz^Sg3M4su3m+d?D_p_W|#;7d#1U?b`c!k#-uRq%J
zoZl}9c`oc1 at L62Hlm95^-{IK6aPof@{H*^Afjr;I{db7Jn3Df?;3N2j|ENAr-6Uc=
zUpUwf|5ExsKE?Pr`A-1meD?*Um6p-BrrkNw&c(OWf3&~m#=qUPIq3f;%E`(9-$q;s
A3jhEB
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/CMakeFiles/TargetDirectories.txt b/polymorphism-benchmark/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 00000000000000..5908a26f527047
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,17 @@
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_1.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Virtual_0.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_1.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Classof_0.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_1.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_Variant_0.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_1.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/PolymorphismBM_MLIR_0.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/edit_cache.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles/rebuild_cache.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/CMakeFiles/edit_cache.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/CMakeFiles/rebuild_cache.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/edit_cache.dir
+/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/rebuild_cache.dir
diff --git a/polymorphism-benchmark/CMakeFiles/cmake.check_cache b/polymorphism-benchmark/CMakeFiles/cmake.check_cache
new file mode 100644
index 00000000000000..3dccd731726d7f
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/polymorphism-benchmark/CMakeFiles/progress.marks b/polymorphism-benchmark/CMakeFiles/progress.marks
new file mode 100644
index 00000000000000..2bd5a0a98a36cc
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+22
diff --git a/polymorphism-benchmark/CMakeFiles/rules.ninja b/polymorphism-benchmark/CMakeFiles/rules.ninja
new file mode 100644
index 00000000000000..45762c01835848
--- /dev/null
+++ b/polymorphism-benchmark/CMakeFiles/rules.ninja
@@ -0,0 +1,182 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.28
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: PolymorphismBenchmark
+# Configurations: Release
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for linking CXX executable.
+
+rule CXX_EXECUTABLE_LINKER__PolymorphismBM_Release
+ command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking CXX executable $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_Virtual_1_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_Virtual_0_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_Classof_1_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_Classof_0_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_Variant_1_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_Variant_0_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_MLIR_1_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__PolymorphismBM_MLIR_0_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__benchmark_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for linking CXX static library.
+
+rule CXX_STATIC_LIBRARY_LINKER__benchmark_Release
+ command = $PRE_LINK && /usr/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD
+ description = Linking CXX static library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for compiling CXX files.
+
+rule CXX_COMPILER__benchmark_main_unscanned_Release
+ depfile = $DEP_FILE
+ deps = gcc
+ command = ${LAUNCHER}${CODE_CHECK}/usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building CXX object $out
+
+
+#############################################
+# Rule for linking CXX static library.
+
+rule CXX_STATIC_LIBRARY_LINKER__benchmark_main_Release
+ command = $PRE_LINK && /usr/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD
+ description = Linking CXX static library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /usr/bin/cmake --regenerate-during-build -S/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark -B/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /home/meinersbur/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /home/meinersbur/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/polymorphism-benchmark/CMakeLists.txt b/polymorphism-benchmark/CMakeLists.txt
new file mode 100644
index 00000000000000..8731f5ac6d9517
--- /dev/null
+++ b/polymorphism-benchmark/CMakeLists.txt
@@ -0,0 +1,37 @@
+cmake_minimum_required(VERSION 3.20)
+project(PolymorphismBenchmark LANGUAGES CXX)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+ set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
+endif()
+
+set(BENCHMARK_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../third-party/benchmark"
+ CACHE PATH "Google Benchmark source directory")
+
+set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
+set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "" FORCE)
+set(BENCHMARK_INSTALL_DOCS OFF CACHE BOOL "" FORCE)
+set(BENCHMARK_DOWNLOAD_DEPENDENCIES OFF CACHE BOOL "" FORCE)
+set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "" FORCE)
+set(BENCHMARK_ENABLE_WERROR OFF CACHE BOOL "" FORCE)
+set(HAVE_STD_REGEX ON CACHE BOOL "" FORCE)
+add_subdirectory("${BENCHMARK_SOURCE_DIR}" third-party/benchmark EXCLUDE_FROM_ALL)
+
+add_executable(PolymorphismBM main.cpp Common.cpp)
+target_link_libraries(PolymorphismBM PRIVATE benchmark::benchmark)
+
+# Each style is compiled twice: once with inlinable methods and once with
+# methods that behave as if defined in another translation unit.
+foreach(style Virtual Classof Variant MLIR)
+ foreach(inline 1 0)
+ set(lib PolymorphismBM_${style}_${inline})
+ add_library(${lib} OBJECT ${style}.cpp)
+ target_compile_definitions(${lib} PRIVATE POLY_INLINE=${inline})
+ target_link_libraries(${lib} PRIVATE benchmark::benchmark)
+ target_link_libraries(PolymorphismBM PRIVATE ${lib})
+ endforeach()
+endforeach()
diff --git a/polymorphism-benchmark/Classof.cpp b/polymorphism-benchmark/Classof.cpp
new file mode 100644
index 00000000000000..e987e94ad5a793
--- /dev/null
+++ b/polymorphism-benchmark/Classof.cpp
@@ -0,0 +1,266 @@
+//===- Classof.cpp - LLVM/Clang-style hand-rolled RTTI --------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// A kind enum in the base class with contiguous ranges for abstract classes,
+// static classof() methods, isa<>/cast<>/dyn_cast<>, and a switch-based
+// visitor as generated from a .def file (InstVisitor, StmtVisitor) where
+// cases without a specific implementation use the superclass' one.
+//
+//===----------------------------------------------------------------------===//
+
+#include "Common.h"
+
+#include <memory>
+
+namespace polybench {
+namespace POLY_NS(llvmstyle) {
+
+template <typename To, typename From> bool isa(const From *Val) {
+ return To::classof(Val);
+}
+
+template <typename To, typename From> const To *cast(const From *Val) {
+ return static_cast<const To *>(Val);
+}
+
+template <typename To, typename From> const To *dyn_cast(const From *Val) {
+ return isa<To>(Val) ? cast<To>(Val) : nullptr;
+}
+
+class Node {
+public:
+ enum NodeKind : std::uint8_t {
+ NK_Const,
+ NK_Neg,
+ NK_FirstUnary = NK_Neg,
+ NK_Not,
+ NK_LastUnary = NK_Not,
+ NK_Add,
+ NK_FirstBinary = NK_Add,
+ NK_Sub,
+ NK_Mul,
+ NK_Div,
+ NK_LastBinary = NK_Div,
+ NK_Call,
+ };
+
+ NodeKind getKind() const { return TheKind; }
+
+protected:
+ explicit Node(NodeKind K) : TheKind(K) {}
+
+private:
+ const NodeKind TheKind;
+};
+
+class Const : public Node {
+public:
+ explicit Const(int Value) : Node(NK_Const), Value(Value) {}
+ int getValue() const { return Value; }
+ static bool classof(const Node *N) { return N->getKind() == NK_Const; }
+ POLY_METHOD std::int64_t getCost() const { return 1; }
+
+private:
+ int Value;
+};
+
+class UnaryOperation : public Node {
+public:
+ int getOperand() const { return Operand; }
+
+ static bool classof(const Node *N) {
+ return N->getKind() >= NK_FirstUnary && N->getKind() <= NK_LastUnary;
+ }
+
+protected:
+ UnaryOperation(NodeKind K, int Operand) : Node(K), Operand(Operand) {}
+
+private:
+ int Operand;
+};
+
+class Neg : public UnaryOperation {
+public:
+ explicit Neg(int Operand) : UnaryOperation(NK_Neg, Operand) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Neg; }
+ POLY_METHOD std::int64_t getCost() const { return getOperand() + 1; }
+};
+
+class Not : public UnaryOperation {
+public:
+ explicit Not(int Operand) : UnaryOperation(NK_Not, Operand) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Not; }
+ POLY_METHOD std::int64_t getCost() const { return getOperand() + 2; }
+};
+
+class BinaryOperation : public Node {
+public:
+ int getLHS() const { return LHS; }
+ int getRHS() const { return RHS; }
+ static bool classof(const Node *N) {
+ return N->getKind() >= NK_FirstBinary && N->getKind() <= NK_LastBinary;
+ }
+ POLY_METHOD std::int64_t getCost() const { return LHS + RHS + 1; }
+
+protected:
+ BinaryOperation(NodeKind K, int LHS, int RHS) : Node(K), LHS(LHS), RHS(RHS) {}
+
+private:
+ int LHS, RHS;
+};
+
+class Add : public BinaryOperation {
+public:
+ Add(int LHS, int RHS) : BinaryOperation(NK_Add, LHS, RHS) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Add; }
+};
+
+class Sub : public BinaryOperation {
+public:
+ Sub(int LHS, int RHS) : BinaryOperation(NK_Sub, LHS, RHS) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Sub; }
+};
+
+class Mul : public BinaryOperation {
+public:
+ Mul(int LHS, int RHS) : BinaryOperation(NK_Mul, LHS, RHS) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Mul; }
+};
+
+class Div : public BinaryOperation {
+public:
+ Div(int LHS, int RHS) : BinaryOperation(NK_Div, LHS, RHS) {}
+ static bool classof(const Node *N) { return N->getKind() == NK_Div; }
+ POLY_METHOD std::int64_t getCost() const { return getLHS() + getRHS() + 20; }
+};
+
+class Call : public Node {
+public:
+ Call(int NumArgs, int Callee)
+ : Node(NK_Call), NumArgs(NumArgs), Callee(Callee) {}
+ int getNumArgs() const { return NumArgs; }
+ int getCallee() const { return Callee; }
+ static bool classof(const Node *N) { return N->getKind() == NK_Call; }
+ POLY_METHOD std::int64_t getCost() const { return NumArgs * 4 + 10; }
+
+private:
+ int NumArgs, Callee;
+};
+
+std::int64_t getCost(const Node *N) {
+ switch (N->getKind()) {
+ case Node::NK_Const:
+ return cast<Const>(N)->getCost();
+ case Node::NK_Neg:
+ return cast<Neg>(N)->getCost();
+ case Node::NK_Not:
+ return cast<Not>(N)->getCost();
+ case Node::NK_Add:
+ return cast<Add>(N)->getCost();
+ case Node::NK_Sub:
+ return cast<Sub>(N)->getCost();
+ case Node::NK_Mul:
+ return cast<Mul>(N)->getCost();
+ case Node::NK_Div:
+ return cast<Div>(N)->getCost();
+ case Node::NK_Call:
+ return cast<Call>(N)->getCost();
+ }
+ __builtin_unreachable();
+}
+
+/// Without a virtual destructor, deletion must dispatch on the kind as well.
+struct NodeDeleter {
+ void operator()(Node *N) const {
+ switch (N->getKind()) {
+ case Node::NK_Const:
+ delete static_cast<Const *>(N);
+ return;
+ case Node::NK_Neg:
+ delete static_cast<Neg *>(N);
+ return;
+ case Node::NK_Not:
+ delete static_cast<Not *>(N);
+ return;
+ case Node::NK_Add:
+ delete static_cast<Add *>(N);
+ return;
+ case Node::NK_Sub:
+ delete static_cast<Sub *>(N);
+ return;
+ case Node::NK_Mul:
+ delete static_cast<Mul *>(N);
+ return;
+ case Node::NK_Div:
+ delete static_cast<Div *>(N);
+ return;
+ case Node::NK_Call:
+ delete static_cast<Call *>(N);
+ return;
+ }
+ }
+};
+
+Node *create(const NodeSpec &S) {
+ switch (S.K) {
+ case Kind::Const:
+ return new Const(S.A);
+ case Kind::Neg:
+ return new Neg(S.A);
+ case Kind::Not:
+ return new Not(S.A);
+ case Kind::Add:
+ return new Add(S.A, S.B);
+ case Kind::Sub:
+ return new Sub(S.A, S.B);
+ case Kind::Mul:
+ return new Mul(S.A, S.B);
+ case Kind::Div:
+ return new Div(S.A, S.B);
+ case Kind::Call:
+ return new Call(S.A, S.B);
+ }
+ return nullptr;
+}
+
+struct Nodes {
+ std::vector<std::unique_ptr<Node, NodeDeleter>> Owner;
+ std::vector<const Node *> Ptrs;
+
+ explicit Nodes(Pattern P) {
+ for (const NodeSpec &S : makeSpecs(P)) {
+ Owner.emplace_back(create(S));
+ Ptrs.push_back(Owner.back().get());
+ }
+ }
+};
+
+void BM_Dispatch(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs,
+ [](const Node *Nd) -> std::int64_t { return getCost(Nd); });
+}
+
+void BM_TypeTest(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs, [](const Node *Nd) -> std::int64_t {
+ if (const auto *B = dyn_cast<BinaryOperation>(Nd))
+ return B->getLHS() + B->getRHS();
+ return 0;
+ });
+}
+
+} // namespace POLY_NS(llvmstyle)
+
+void POLY_REGISTER_FN(Classof)(Registry &R) {
+ using namespace POLY_NS(llvmstyle);
+ R.push_back({Measure::Dispatch, "Classof_Switch", POLY_INLINE, BM_Dispatch});
+ R.push_back({Measure::TypeTest, "Classof_DynCast", POLY_INLINE, BM_TypeTest});
+}
+
+} // namespace polybench
diff --git a/polymorphism-benchmark/Common.cpp b/polymorphism-benchmark/Common.cpp
new file mode 100644
index 00000000000000..df5e5c087cbb81
--- /dev/null
+++ b/polymorphism-benchmark/Common.cpp
@@ -0,0 +1,51 @@
+//===- Common.cpp - Shared infrastructure for polymorphism benchmarks -----===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "Common.h"
+
+#include <random>
+
+namespace polybench {
+
+const char *getPatternName(Pattern P) {
+ switch (P) {
+ case Pattern::Monomorphic:
+ return "Monomorphic";
+ case Pattern::RoundRobin:
+ return "RoundRobin";
+ case Pattern::Random:
+ return "Random";
+ }
+ return "";
+}
+
+std::vector<NodeSpec> makeSpecs(Pattern P) {
+ std::vector<NodeSpec> Specs;
+ Specs.reserve(NumNodes);
+ std::mt19937 Rng(42);
+ std::uniform_int_distribution<unsigned> Dist(0, NumKinds - 1);
+ for (std::size_t I = 0; I < NumNodes; ++I) {
+ Kind K = Kind::Add;
+ switch (P) {
+ case Pattern::Monomorphic:
+ K = Kind::Add;
+ break;
+ case Pattern::RoundRobin:
+ K = static_cast<Kind>(I % NumKinds);
+ break;
+ case Pattern::Random:
+ K = static_cast<Kind>(Dist(Rng));
+ break;
+ }
+ Specs.push_back(
+ {K, static_cast<int>(I % 7) + 1, static_cast<int>(I % 13) + 1});
+ }
+ return Specs;
+}
+
+} // namespace polybench
diff --git a/polymorphism-benchmark/Common.h b/polymorphism-benchmark/Common.h
new file mode 100644
index 00000000000000..4ee2e23a1a5c1d
--- /dev/null
+++ b/polymorphism-benchmark/Common.h
@@ -0,0 +1,143 @@
+//===- Common.h - Shared infrastructure for polymorphism benchmarks -------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Every style models the same AST-like hierarchy:
+//
+// Node
+// +- Const
+// +- UnaryOperation
+// | +- Neg
+// | +- Not
+// +- BinaryOperation
+// | +- Add
+// | +- Sub
+// | +- Mul
+// | +- Div
+// +- Call
+//
+// The dispatched operation is getCost(), a toy cost model:
+//
+// Const: 1
+// Neg: Operand + 1
+// Not: Operand + 2
+// BinaryOperation: LHS + RHS + 1 (shared by Add, Sub, Mul)
+// Div: LHS + RHS + 20 (overrides BinaryOperation)
+// Call: NumArgs * 4 + 10
+//
+// The type test checks whether a node is a BinaryOperation and, if so, reads
+// its operands.
+//
+// Each style's source file is compiled twice: with POLY_INLINE=1 the
+// node-specific methods (getCost implementations, classof, visitors used for
+// type tests) can be inlined; with POLY_INLINE=0 they are marked as if
+// defined in another translation unit.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef POLYMORPHISM_BENCHMARK_COMMON_H
+#define POLYMORPHISM_BENCHMARK_COMMON_H
+
+#include "benchmark/benchmark.h"
+
+#include <cstddef>
+#include <cstdint>
+#include <vector>
+
+namespace polybench {
+
+constexpr std::size_t NumNodes = 4096;
+
+enum class Kind : std::uint8_t { Const, Neg, Not, Add, Sub, Mul, Div, Call };
+constexpr unsigned NumKinds = 8;
+
+enum class Pattern { Monomorphic, RoundRobin, Random };
+
+const char *getPatternName(Pattern P);
+
+/// Style-independent description of a node. A is the operand/LHS/value/number
+/// of arguments, B is the RHS/callee.
+struct NodeSpec {
+ Kind K;
+ int A;
+ int B;
+};
+
+/// Monomorphic: every node is an Add.
+/// RoundRobin: Const, Neg, Not, Add, Sub, Mul, Div, Call, Const, ...
+/// Random: uniformly distributed kinds, identical for all styles.
+std::vector<NodeSpec> makeSpecs(Pattern P);
+
+/// Runs \p Body over all nodes once per benchmark iteration.
+template <typename Container, typename BodyT>
+void runBenchmark(benchmark::State &State, Pattern P, const Container &Nodes,
+ BodyT Body) {
+ std::int64_t Checksum = 0;
+ for (auto _ : State) {
+ std::int64_t Sum = 0;
+ for (const auto &N : Nodes)
+ Sum += Body(N);
+ benchmark::DoNotOptimize(Sum);
+ benchmark::ClobberMemory();
+ Checksum = Sum;
+ }
+ State.SetItemsProcessed(static_cast<std::int64_t>(State.iterations()) *
+ static_cast<std::int64_t>(Nodes.size()));
+ // Must be identical for all styles of the same measure and pattern.
+ State.counters["checksum"] = static_cast<double>(Checksum);
+ State.SetLabel(getPatternName(P));
+}
+
+using BenchmarkFn = void (*)(benchmark::State &, Pattern);
+
+enum class Measure { Dispatch, TypeTest };
+
+struct BenchmarkEntry {
+ Measure M;
+ const char *Name;
+ bool Inline;
+ BenchmarkFn Fn;
+};
+
+using Registry = std::vector<BenchmarkEntry>;
+
+void registerVirtual_inline(Registry &R);
+void registerVirtual_noinline(Registry &R);
+void registerClassof_inline(Registry &R);
+void registerClassof_noinline(Registry &R);
+void registerVariant_inline(Registry &R);
+void registerVariant_noinline(Registry &R);
+void registerMLIR_inline(Registry &R);
+void registerMLIR_noinline(Registry &R);
+
+} // namespace polybench
+
+#define POLY_CONCAT_IMPL(A, B) A##B
+#define POLY_CONCAT(A, B) POLY_CONCAT_IMPL(A, B)
+
+#ifdef POLY_INLINE
+#if POLY_INLINE
+#define POLY_METHOD
+#define POLY_SUFFIX _inline
+#else
+// noipa (GCC) also prevents cloning and interprocedural propagation, which a
+// definition in another translation unit would prevent as well.
+#if defined(__clang__)
+#define POLY_METHOD __attribute__((noinline))
+#else
+#define POLY_METHOD __attribute__((noipa))
+#endif
+#define POLY_SUFFIX _noinline
+#endif
+
+/// Namespace for a style; distinct per POLY_INLINE to avoid ODR violations.
+#define POLY_NS(Style) POLY_CONCAT(Style, POLY_SUFFIX)
+/// Name of the registration function of a style.
+#define POLY_REGISTER_FN(Style) POLY_CONCAT(register##Style, POLY_SUFFIX)
+#endif
+
+#endif // POLYMORPHISM_BENCHMARK_COMMON_H
diff --git a/polymorphism-benchmark/MLIR.cpp b/polymorphism-benchmark/MLIR.cpp
new file mode 100644
index 00000000000000..687ecdd6ee068c
--- /dev/null
+++ b/polymorphism-benchmark/MLIR.cpp
@@ -0,0 +1,575 @@
+//===- MLIR.cpp - MLIR-style extensible polymorphism ----------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Generic Operation objects refer to a registered OperationName, which holds
+// the op's TypeID, a sorted InterfaceMap of Concept implementations, and a
+// virtual hasTrait(). Ops are thin Op<ConcreteOp, Traits...> wrappers around
+// an Operation*. Abstract classes are modelled as
+//
+// * a trait (IsUnaryOp, IsBinaryOp) that provides shared member functions,
+// such as the getCost() used by all binary ops except DivOp, and
+// * an interface (BinaryOpInterface) for generic access.
+//
+// Dispatch and type tests use the idioms found in MLIR code: dyn_cast to an
+// interface, TypeSwitch, hasTrait<>, and isa<> over a list of ops.
+//
+//===----------------------------------------------------------------------===//
+
+#include "Common.h"
+
+#include <algorithm>
+#include <memory>
+#include <optional>
+#include <type_traits>
+#include <utility>
+
+namespace polybench {
+namespace POLY_NS(mlirstyle) {
+
+/// Unique identifier of a C++ type: the address of a per-type static object.
+class TypeID {
+public:
+ TypeID() = default;
+
+ template <typename T> static TypeID get() {
+ static const char Storage = 0;
+ return TypeID(&Storage);
+ }
+
+ const void *getAsOpaquePointer() const { return Storage; }
+
+ friend bool operator==(TypeID L, TypeID R) { return L.Storage == R.Storage; }
+ friend bool operator!=(TypeID L, TypeID R) { return L.Storage != R.Storage; }
+
+private:
+ explicit TypeID(const void *Storage) : Storage(Storage) {}
+
+ const void *Storage = nullptr;
+};
+
+/// Gives traits, which are class templates, a TypeID.
+template <template <typename> class Trait> struct TraitTag {};
+
+/// Maps interface TypeIDs to concept implementations; kept sorted by TypeID
+/// and searched with lower_bound, like mlir::detail::InterfaceMap.
+class InterfaceMap {
+public:
+ template <typename ModelT> void insertModel(TypeID InterfaceID) {
+ auto *Model = new ModelT();
+ Owned.emplace_back(Model, [](void *M) { delete static_cast<ModelT *>(M); });
+ insert(InterfaceID, Model);
+ }
+
+ void *lookup(TypeID ID) const {
+ const auto *Begin = Interfaces.data();
+ const auto *End = Begin + Interfaces.size();
+ const auto *It = std::lower_bound(
+ Begin, End, ID, [](const std::pair<TypeID, void *> &Entry, TypeID ID) {
+ return compare(Entry.first, ID);
+ });
+ return (It != End && It->first == ID) ? It->second : nullptr;
+ }
+
+private:
+ static bool compare(TypeID L, TypeID R) {
+ return L.getAsOpaquePointer() < R.getAsOpaquePointer();
+ }
+
+ void insert(TypeID ID, void *Concept) {
+ auto It =
+ std::lower_bound(Interfaces.begin(), Interfaces.end(), ID,
+ [](const std::pair<TypeID, void *> &Entry, TypeID ID) {
+ return compare(Entry.first, ID);
+ });
+ Interfaces.insert(It, {ID, Concept});
+ }
+
+ std::vector<std::pair<TypeID, void *>> Interfaces;
+ std::vector<std::unique_ptr<void, void (*)(void *)>> Owned;
+};
+
+/// Information about an operation kind (OperationName::Impl).
+class OperationName {
+public:
+ virtual ~OperationName() = default;
+
+ bool isRegistered() const { return ID != TypeID::get<void>(); }
+ TypeID getTypeID() const { return ID; }
+ const InterfaceMap &getInterfaceMap() const { return Interfaces; }
+
+ template <template <typename> class Trait> bool hasTrait() const {
+ return hasTrait(TypeID::get<TraitTag<Trait>>());
+ }
+ virtual bool hasTrait(TypeID TraitID) const = 0;
+
+protected:
+ explicit OperationName(TypeID ID) : ID(ID) {}
+
+ InterfaceMap Interfaces;
+
+private:
+ TypeID ID;
+};
+
+/// Registered information of a concrete op
+/// (RegisteredOperationName::Model<ConcreteOp>).
+template <typename ConcreteOp>
+class RegisteredOperationModel final : public OperationName {
+public:
+ RegisteredOperationModel() : OperationName(TypeID::get<ConcreteOp>()) {
+ ConcreteOp::attachInterfaces(Interfaces);
+ }
+
+ bool hasTrait(TypeID TraitID) const override {
+ return ConcreteOp::hasTraitID(TraitID);
+ }
+};
+
+/// Generic operation storage. Op-specific data lives here rather than in the
+/// Op wrapper classes; A and B stand in for operands/properties.
+class Operation {
+public:
+ Operation(const OperationName *Name, int A, int B) : Name(Name), A(A), B(B) {}
+
+ const OperationName *getName() const { return Name; }
+
+ const OperationName *getRegisteredInfo() const {
+ return Name->isRegistered() ? Name : nullptr;
+ }
+
+ template <template <typename> class Trait> bool hasTrait() const {
+ return Name->hasTrait<Trait>();
+ }
+
+ int getA() const { return A; }
+ int getB() const { return B; }
+
+private:
+ const OperationName *Name;
+ int A, B;
+};
+
+/// Base of Op wrappers and interfaces: a nullable pointer to an Operation.
+class OpState {
+public:
+ explicit OpState(Operation *Op) : State(Op) {}
+ Operation *getOperation() const { return State; }
+ explicit operator bool() const { return State != nullptr; }
+
+private:
+ Operation *State;
+};
+
+template <typename First, typename... Rest> bool isa(Operation *Op) {
+ return First::classof(Op) || (Rest::classof(Op) || ...);
+}
+
+/// Like mlir's CastInfo for Operation*: check classof(), then construct.
+template <typename To> To dyn_cast(Operation *Op) {
+ return isa<To>(Op) ? To(Op) : To(nullptr);
+}
+
+/// Base for interfaces: the constructor resolves the concept of the
+/// operation's registered model.
+template <typename ConcreteType, typename Traits>
+class OpInterface : public OpState {
+public:
+ using Concept = typename Traits::Concept;
+ template <typename T> using Model = typename Traits::template Model<T>;
+
+ explicit OpInterface(Operation *Op = nullptr)
+ : OpState(Op), Impl(Op ? getInterfaceFor(Op) : nullptr) {}
+
+ static TypeID getInterfaceID() { return TypeID::get<ConcreteType>(); }
+
+ POLY_METHOD static bool classof(Operation *Op) {
+ return getInterfaceFor(Op) != nullptr;
+ }
+
+protected:
+ const Concept *getImpl() const { return Impl; }
+
+private:
+ static const Concept *getInterfaceFor(Operation *Op) {
+ if (const OperationName *Info = Op->getRegisteredInfo())
+ return static_cast<const Concept *>(
+ Info->getInterfaceMap().lookup(getInterfaceID()));
+ return nullptr;
+ }
+
+ const Concept *Impl;
+};
+
+/// Detects op traits that are interface traits, i.e. that bring a model.
+template <typename T, typename = void>
+struct IsInterfaceTrait : std::false_type {};
+template <typename T>
+struct IsInterfaceTrait<
+ T, std::void_t<decltype(T::getInterfaceID()), typename T::ModelT>>
+ : std::true_type {};
+
+template <typename ConcreteType, template <typename> class... Traits>
+class Op : public OpState, public Traits<ConcreteType>... {
+public:
+ explicit Op(Operation *O = nullptr) : OpState(O) {}
+
+ POLY_METHOD static bool classof(Operation *O) {
+ if (const OperationName *Info = O->getRegisteredInfo())
+ return TypeID::get<ConcreteType>() == Info->getTypeID();
+ return false;
+ }
+
+ static void attachInterfaces(InterfaceMap &Map) {
+ (attachIfInterface<Traits<ConcreteType>>(Map), ...);
+ }
+
+ static bool hasTraitID(TypeID TraitID) {
+ const TypeID TraitIDs[] = {TypeID::get<TraitTag<Traits>>()...};
+ for (TypeID ID : TraitIDs)
+ if (ID == TraitID)
+ return true;
+ return false;
+ }
+
+private:
+ template <typename TraitT> static void attachIfInterface(InterfaceMap &Map) {
+ if constexpr (IsInterfaceTrait<TraitT>::value)
+ Map.insertModel<typename TraitT::ModelT>(TraitT::getInterfaceID());
+ }
+};
+
+/// CRTP base of traits (OpTrait::TraitBase). Parameterized by the trait so
+/// that each trait has its own base subobject.
+template <typename ConcreteOp, template <typename> class TraitType>
+class TraitBase {
+protected:
+ Operation *getOp() const {
+ return static_cast<const ConcreteOp *>(this)->getOperation();
+ }
+};
+
+template <typename ConcreteOp> class ZeroOperands {};
+
+template <typename ConcreteOp>
+class IsUnaryOp : public TraitBase<ConcreteOp, IsUnaryOp> {
+public:
+ int getOperand() const { return this->getOp()->getA(); }
+};
+
+template <typename ConcreteOp>
+class IsBinaryOp : public TraitBase<ConcreteOp, IsBinaryOp> {
+public:
+ int getLHS() const { return this->getOp()->getA(); }
+ int getRHS() const { return this->getOp()->getB(); }
+ POLY_METHOD std::int64_t getCost() const { return getLHS() + getRHS() + 1; }
+};
+
+/// The dispatched interface, as ODS would generate it.
+struct CostInterfaceTraits {
+ struct Concept {
+ std::int64_t (*getCost)(const Concept *Impl, Operation *Op);
+ };
+ template <typename ConcreteOp> struct Model : Concept {
+ Model() : Concept{&getCostImpl} {}
+ static std::int64_t getCostImpl(const Concept *, Operation *Op) {
+ return ConcreteOp(Op).getCost();
+ }
+ };
+};
+
+class CostInterface : public OpInterface<CostInterface, CostInterfaceTraits> {
+public:
+ using OpInterface::OpInterface;
+
+ std::int64_t getCost() const {
+ return getImpl()->getCost(getImpl(), getOperation());
+ }
+
+ template <typename ConcreteOp> struct Trait {
+ static TypeID getInterfaceID() { return CostInterface::getInterfaceID(); }
+ using ModelT = CostInterfaceTraits::Model<ConcreteOp>;
+ };
+};
+
+/// Generic access to binary operations.
+struct BinaryOpInterfaceTraits {
+ struct Concept {
+ int (*getLHS)(const Concept *Impl, Operation *Op);
+ int (*getRHS)(const Concept *Impl, Operation *Op);
+ };
+ template <typename ConcreteOp> struct Model : Concept {
+ Model() : Concept{&getLHSImpl, &getRHSImpl} {}
+ static int getLHSImpl(const Concept *, Operation *Op) {
+ return ConcreteOp(Op).getLHS();
+ }
+ static int getRHSImpl(const Concept *, Operation *Op) {
+ return ConcreteOp(Op).getRHS();
+ }
+ };
+};
+
+class BinaryOpInterface
+ : public OpInterface<BinaryOpInterface, BinaryOpInterfaceTraits> {
+public:
+ using OpInterface::OpInterface;
+
+ int getLHS() const { return getImpl()->getLHS(getImpl(), getOperation()); }
+ int getRHS() const { return getImpl()->getRHS(getImpl(), getOperation()); }
+
+ template <typename ConcreteOp> struct Trait {
+ static TypeID getInterfaceID() {
+ return BinaryOpInterface::getInterfaceID();
+ }
+ using ModelT = BinaryOpInterfaceTraits::Model<ConcreteOp>;
+ };
+};
+
+/// Additional interfaces so that the InterfaceMap lookup has to search.
+template <int N> struct DummyInterfaceTraits {
+ struct Concept {
+ int (*dummy)(const Concept *Impl, Operation *Op);
+ };
+ template <typename ConcreteOp> struct Model : Concept {
+ Model() : Concept{&dummyImpl} {}
+ static int dummyImpl(const Concept *, Operation *) { return N; }
+ };
+};
+
+template <int N>
+class DummyInterface
+ : public OpInterface<DummyInterface<N>, DummyInterfaceTraits<N>> {
+public:
+ using OpInterface<DummyInterface<N>, DummyInterfaceTraits<N>>::OpInterface;
+
+ template <typename ConcreteOp> struct Trait {
+ static TypeID getInterfaceID() { return DummyInterface::getInterfaceID(); }
+ using ModelT = typename DummyInterfaceTraits<N>::template Model<ConcreteOp>;
+ };
+};
+
+#define COMMON_OP_TRAITS \
+ DummyInterface<0>::Trait, CostInterface::Trait, DummyInterface<1>::Trait, \
+ DummyInterface<2>::Trait
+#define BINARY_OP_TRAITS IsBinaryOp, BinaryOpInterface::Trait, COMMON_OP_TRAITS
+
+class ConstOp : public Op<ConstOp, ZeroOperands, COMMON_OP_TRAITS> {
+public:
+ using Op::Op;
+ int getValue() const { return getOperation()->getA(); }
+ POLY_METHOD std::int64_t getCost() const { return 1; }
+};
+
+class NegOp : public Op<NegOp, IsUnaryOp, COMMON_OP_TRAITS> {
+public:
+ using Op::Op;
+ POLY_METHOD std::int64_t getCost() const { return getOperand() + 1; }
+};
+
+class NotOp : public Op<NotOp, IsUnaryOp, COMMON_OP_TRAITS> {
+public:
+ using Op::Op;
+ POLY_METHOD std::int64_t getCost() const { return getOperand() + 2; }
+};
+
+class AddOp : public Op<AddOp, BINARY_OP_TRAITS> {
+public:
+ using Op::Op;
+};
+
+class SubOp : public Op<SubOp, BINARY_OP_TRAITS> {
+public:
+ using Op::Op;
+};
+
+class MulOp : public Op<MulOp, BINARY_OP_TRAITS> {
+public:
+ using Op::Op;
+};
+
+class DivOp : public Op<DivOp, BINARY_OP_TRAITS> {
+public:
+ using Op::Op;
+ POLY_METHOD std::int64_t getCost() const { return getLHS() + getRHS() + 20; }
+};
+
+class CallOp : public Op<CallOp, COMMON_OP_TRAITS> {
+public:
+ using Op::Op;
+ int getNumArgs() const { return getOperation()->getA(); }
+ int getCallee() const { return getOperation()->getB(); }
+ POLY_METHOD std::int64_t getCost() const { return getNumArgs() * 4 + 10; }
+};
+
+#undef BINARY_OP_TRAITS
+#undef COMMON_OP_TRAITS
+
+/// Minimal llvm::TypeSwitch.
+template <typename ResultT> class TypeSwitch {
+public:
+ explicit TypeSwitch(Operation *Value) : Value(Value) {}
+
+ template <typename CaseT, typename CallableT>
+ TypeSwitch &Case(CallableT &&Fn) {
+ if (Result)
+ return *this;
+ if (auto CaseValue = dyn_cast<CaseT>(Value))
+ Result.emplace(Fn(CaseValue));
+ return *this;
+ }
+
+ template <typename CallableT> ResultT Default(CallableT &&Fn) {
+ if (Result)
+ return std::move(*Result);
+ return Fn(Value);
+ }
+
+private:
+ Operation *Value;
+ std::optional<ResultT> Result;
+};
+
+/// Owns the registered operation names (the MLIRContext's role).
+class Context {
+public:
+ template <typename OpT> const OperationName *getOrRegister() {
+ TypeID ID = TypeID::get<OpT>();
+ for (const auto &Name : Names)
+ if (Name->getTypeID() == ID)
+ return Name.get();
+ Names.push_back(std::make_unique<RegisteredOperationModel<OpT>>());
+ return Names.back().get();
+ }
+
+private:
+ std::vector<std::unique_ptr<OperationName>> Names;
+};
+
+struct Nodes {
+ Context Ctx;
+ std::vector<std::unique_ptr<Operation>> Owner;
+ std::vector<Operation *> Ptrs;
+
+ explicit Nodes(Pattern P) {
+ for (const NodeSpec &S : makeSpecs(P)) {
+ Owner.push_back(std::make_unique<Operation>(getName(S.K), S.A, S.B));
+ Ptrs.push_back(Owner.back().get());
+ }
+ }
+
+private:
+ const OperationName *getName(Kind K) {
+ switch (K) {
+ case Kind::Const:
+ return Ctx.getOrRegister<ConstOp>();
+ case Kind::Neg:
+ return Ctx.getOrRegister<NegOp>();
+ case Kind::Not:
+ return Ctx.getOrRegister<NotOp>();
+ case Kind::Add:
+ return Ctx.getOrRegister<AddOp>();
+ case Kind::Sub:
+ return Ctx.getOrRegister<SubOp>();
+ case Kind::Mul:
+ return Ctx.getOrRegister<MulOp>();
+ case Kind::Div:
+ return Ctx.getOrRegister<DivOp>();
+ case Kind::Call:
+ return Ctx.getOrRegister<CallOp>();
+ }
+ return nullptr;
+ }
+};
+
+/// if (auto Iface = dyn_cast<CostInterface>(Op)) Iface.getCost();
+void BM_Dispatch_Interface(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs, [](Operation *Op) -> std::int64_t {
+ if (auto Iface = dyn_cast<CostInterface>(Op))
+ return Iface.getCost();
+ return 0;
+ });
+}
+
+/// Interface objects resolved ahead of time; measures only the indirect call
+/// through the Concept.
+void BM_Dispatch_InterfaceCached(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ std::vector<CostInterface> Ifaces;
+ for (Operation *Op : N.Ptrs)
+ Ifaces.push_back(CostInterface(Op));
+ runBenchmark(State, P, Ifaces,
+ [](const CostInterface &Iface) -> std::int64_t {
+ return Iface.getCost();
+ });
+}
+
+void BM_Dispatch_TypeSwitch(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs, [](Operation *Op) -> std::int64_t {
+ return TypeSwitch<std::int64_t>(Op)
+ .Case<ConstOp>([](ConstOp C) { return C.getCost(); })
+ .Case<NegOp>([](NegOp C) { return C.getCost(); })
+ .Case<NotOp>([](NotOp C) { return C.getCost(); })
+ .Case<AddOp>([](AddOp C) { return C.getCost(); })
+ .Case<SubOp>([](SubOp C) { return C.getCost(); })
+ .Case<MulOp>([](MulOp C) { return C.getCost(); })
+ .Case<DivOp>([](DivOp C) { return C.getCost(); })
+ .Case<CallOp>([](CallOp C) { return C.getCost(); })
+ .Default([](Operation *) -> std::int64_t { return 0; });
+ });
+}
+
+/// if (auto BinOp = dyn_cast<BinaryOpInterface>(Op)) ...
+void BM_TypeTest_Interface(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs, [](Operation *Op) -> std::int64_t {
+ if (auto BinOp = dyn_cast<BinaryOpInterface>(Op))
+ return BinOp.getLHS() + BinOp.getRHS();
+ return 0;
+ });
+}
+
+/// if (Op->hasTrait<IsBinaryOp>()) ...
+void BM_TypeTest_HasTrait(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs, [](Operation *Op) -> std::int64_t {
+ if (Op->hasTrait<IsBinaryOp>())
+ return Op->getA() + Op->getB();
+ return 0;
+ });
+}
+
+/// if (isa<AddOp, SubOp, MulOp, DivOp>(Op)) ...
+void BM_TypeTest_IsaAnyOf(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs, [](Operation *Op) -> std::int64_t {
+ if (isa<AddOp, SubOp, MulOp, DivOp>(Op))
+ return Op->getA() + Op->getB();
+ return 0;
+ });
+}
+
+} // namespace POLY_NS(mlirstyle)
+
+void POLY_REGISTER_FN(MLIR)(Registry &R) {
+ using namespace POLY_NS(mlirstyle);
+ R.push_back({Measure::Dispatch, "MLIR_Interface", POLY_INLINE,
+ BM_Dispatch_Interface});
+ R.push_back({Measure::Dispatch, "MLIR_InterfaceCached", POLY_INLINE,
+ BM_Dispatch_InterfaceCached});
+ R.push_back({Measure::Dispatch, "MLIR_TypeSwitch", POLY_INLINE,
+ BM_Dispatch_TypeSwitch});
+ R.push_back({Measure::TypeTest, "MLIR_Interface", POLY_INLINE,
+ BM_TypeTest_Interface});
+ R.push_back(
+ {Measure::TypeTest, "MLIR_HasTrait", POLY_INLINE, BM_TypeTest_HasTrait});
+ R.push_back(
+ {Measure::TypeTest, "MLIR_IsaAnyOf", POLY_INLINE, BM_TypeTest_IsaAnyOf});
+}
+
+} // namespace polybench
diff --git a/polymorphism-benchmark/Makefile b/polymorphism-benchmark/Makefile
new file mode 100644
index 00000000000000..e790a002cbac2c
--- /dev/null
+++ b/polymorphism-benchmark/Makefile
@@ -0,0 +1,209 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark//CMakeFiles/progress.marks
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named PolymorphismBM
+
+# Build rule for target.
+PolymorphismBM: cmake_check_build_system
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 PolymorphismBM
+.PHONY : PolymorphismBM
+
+# fast build rule for target.
+PolymorphismBM/fast:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/PolymorphismBM.dir/build.make CMakeFiles/PolymorphismBM.dir/build
+.PHONY : PolymorphismBM/fast
+
+#=============================================================================
+# Target rules for targets named benchmark
+
+# Build rule for target.
+benchmark: cmake_check_build_system
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 benchmark
+.PHONY : benchmark
+
+# fast build rule for target.
+benchmark/fast:
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/build
+.PHONY : benchmark/fast
+
+#=============================================================================
+# Target rules for targets named benchmark_main
+
+# Build rule for target.
+benchmark_main: cmake_check_build_system
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 benchmark_main
+.PHONY : benchmark_main
+
+# fast build rule for target.
+benchmark_main/fast:
+ $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build
+.PHONY : benchmark_main/fast
+
+PolymorphismBM.o: PolymorphismBM.cpp.o
+.PHONY : PolymorphismBM.o
+
+# target to build an object file
+PolymorphismBM.cpp.o:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/PolymorphismBM.dir/build.make CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.o
+.PHONY : PolymorphismBM.cpp.o
+
+PolymorphismBM.i: PolymorphismBM.cpp.i
+.PHONY : PolymorphismBM.i
+
+# target to preprocess a source file
+PolymorphismBM.cpp.i:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/PolymorphismBM.dir/build.make CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.i
+.PHONY : PolymorphismBM.cpp.i
+
+PolymorphismBM.s: PolymorphismBM.cpp.s
+.PHONY : PolymorphismBM.s
+
+# target to generate assembly for a file
+PolymorphismBM.cpp.s:
+ $(MAKE) $(MAKESILENT) -f CMakeFiles/PolymorphismBM.dir/build.make CMakeFiles/PolymorphismBM.dir/PolymorphismBM.cpp.s
+.PHONY : PolymorphismBM.cpp.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... edit_cache"
+ @echo "... rebuild_cache"
+ @echo "... PolymorphismBM"
+ @echo "... benchmark"
+ @echo "... benchmark_main"
+ @echo "... PolymorphismBM.o"
+ @echo "... PolymorphismBM.i"
+ @echo "... PolymorphismBM.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/polymorphism-benchmark/PolymorphismBM b/polymorphism-benchmark/PolymorphismBM
new file mode 100644
index 0000000000000000000000000000000000000000..0c4b26c8460548fc54173addeb9066a318e1e3d2
GIT binary patch
literal 831216
zcmeEv33yaR*7gMwXcg>61>@dg)S$v7VM|oBS-q_tjDQ-~B!q-SLK2e>1VxA>!L)5O
z?zoI!Tn6K~MN~vV42uwTzA at s4GD6f*tBp!Th0LJxzo)8h-|9-PqkjK<|MNf3G*9~8
z^VX?Tr%s)!I#sv&vSdnNYTrJ6`Wf=m&p6BIgZtzU1>lo-%Zh>W&M<sNnlT99#~WUw
zKhQY*`DCho-PTtmSXY<iqXH>kf-G6T9xeH-E9pcZx>7!;Px}IqVqFc7pebKG-B!~V
zKGpm?dOc=<(9F83`FMGaQgiLPC_`vwUDbSKn{A&Szzfo^nO;$T^U30B<s)-ZKI0!E
zpMLd9ds<h^o}?rFrAd40*JP53k9F1a70P`2b+X82SXU~8J~KWG&i*~+Wy*XxZwL+a
z>yKV8-mtD#c^4obw~I*rm*2A4jp?#H-ToGxBpuAUT7LG2;-Xn&NB^OC_K4!5lFF(P
zRcT{Kj2%6)qI6^`FPrr8;*WgloM{&tXqHyOq#2FA)q=L<QQBcLo%kO;>5`LOPaQk!
zpGD{P&AVeyUD9JKn}~<>raZ($ACf1VoYRBx{YU%}FIn)E2UCu3I)329O{0_gc#}@g
zsy6y&8c8IfkKsMc$iWTg|1Vr0#NR{sdjx;Y_<Ib0PvGxK{5_37`aFZb=lPvstitsL
z{LTLH<#kV<(|p%SH7&kpzMegE$&CXiUGrSrw<pdUI4PLYIQrm!?0L&I<)b_2-uc{!
z|2n#C^}y at P_M|pmG&_BF_~?u+e`){ot!Hi+viO1b%GdTkeO|&JCb#GRb>8$q at ZBG;
zsy<=T=E8f2EFU;&{}ZqOJp7oOtnMx~urJ$C*+XnHdN*KD at A%t?_Ktr(q<4H84Beaj
zGz@!WbN%xQ8lX4+K5&TM at Es2NAB+a?jlbEUUT>gjd*j~?C+Q6za8U2~K2)eT{(T4c
zjz8oef4+k~YcPEECco5yzr?|AA2`Ta=3uuPbh6&cUFJ~kkq-8$gpl6k>~)Z{-vPhe
zLH<?;|EzHE!vzlYy4ax|pLf6;9Q0i3;LlSW${mhQ(VKk&4(<4oL%G`>{P`Vs at ACUN
z=vjVX at BH66;Da6N)#>1GMGocO>(Ebcz+}~%eXfA~-o}$l9Q@&B2Rz-uo;42b at +SxW
zOC0R*DaO6t^#9O7pTiyGKjR?(EeHO-4tD#8gPb%6ywaiHUE<(xM>xni&q2?%4u184
z!#H`W!?>E~fKPQ82cCA&-|e91SciVJ8I9Xp`)+fPbEN~n>0sxR9qd`;P~V#!{OwSO
z{`HK*_&?vlKSw&$tB(V|!~x&v(7*0*;NR<@&vpm at +2dg6zd6|Feuweo7Kd^89)~#O
zMTd5Lz at fb+JM_~I2fy9vV4u4j_ at _F|Up@!>WI4#+?BM at x4*ogVL4Ldg|M?Dn_^E^4
zesZwen+|w?hjt(0FdvO_X!i>o^k3yrU$28beGcQ#2 at ZO`@6dlwau_FfIQZfD4)O;(
z%-1(L_|<j?JN(_DpMK)Nk7hT#_|rekLC#JG{6+`)vmN~Q69<30(7_*?9pt>~V7KxC
zz0V7;Irzg8hxQ%qfIp9R?=Aj$&|y4;yY*`4o54R!H$Ldo9QgY?=>MRD{S62Eyx`DJ
zkHoloypdoSyO2 at Q;WYRm;l6JLp2kxR;~0>HH-9bgOo`{g&k4`!5_q-5&xD-8#?eM~
z94d~FhYW+yrB=D$#LB4!8}a81h~+Pb|B(C~S#FXLW6VOk5MCzrxAeJL;#E?A)R2F6
zz)y(3MdH;Ge;4Bq;h9n&3ok&UlRmBSLLaEjKdI>N#NRIYp&tKSfc7GOuhie-e@@!7
zQI_kK{FS(poHS`S3!f_W+$M3WUR4;MiN9Xj!Q%fMb|u`a*&zq|^yY7*9`Scb{Vh48
zB;G3JR6#%bY=%9lUOuf}127H~ZuF0BuN?R%;T_U$ve}LG68A}eu<T=GXU~~eT9RE6
z%q<UQXB*l6nHkx$^UL$+6jcQC%V%axDlRR_pP4(WIA5goo^t858Nso|rFpr<`IA$o
z%r~+xoe at k;&dv at NmX|KbF3vBR6D-WmFE1}G&pa;=sWWFH!?^71ysD~{l$7*YxfMlu
z*`*c1@}iPC_|DIr=g*rFOi9Tr%q`Cjmgg1)EBtv=X5`{)$`s^RbEk^jBC~V0^z4l6
z+=_~#IVDr3pEqMPs`|U7l$GU|%$|ap%;Q2zNpw+3MSgkEKWoaA=`%`aO6g-!|NPw9
zDPzDOEG&R2s9SPnNzv7n`PpT`a{sg$*<-V31apJ=lrnmDenD<!aS-iLoFB~h&q&Fh
zG9`2B{Q08hMJdS;mtO_5<OTi3RAA9`UgC^kI@)YrQ3(W58%&!~R9-P<dJ%4CUZk4r
zcNtt}Dk?=&^lY0cWAcjgbIVEp)NFrg1^rQlc-d4b(Mm-H&dp2Jo9QRfaI*X=;V--z
z!8DYb4GH;^Q at M8$TY7#~UVd4ysI)}zjL8cwEX#+7q!!H<mQovr+bP;GDQS77C9{ht
zbN2k)@*?u@(F@>aFeb{EO#_FXi-N|?s|@B>S=vR5L8&u>qw|VO=iqL3aprvC4Z*Q_
zaQc$cQP~%zrleLZL^qn34X(Voqe at B_aP6m^7ws+3m7D__iv}w#u9!mYh1Tj#$4R1d
z&7Aq`ElQF`mFJesE}aL5nqQQcPwqM=KR7?PSQct^T}VgQ_?<mtTzNiv!2J9vFa!E^
zZuXqY-16Dkxp`Mt7L}75Oq-#$$Gn)15*-SDWoL$_=Zij!aV9-``Ya3*`T4RFW}~v%
z<@vL6i*rlz@@Hj|DWfbUrL*(7C(TICo^I7OWt8yFf}-O5S(OD&{#{y;Z#9$B<!9S9
zfik15L9eI;1}=gD%I8$h%P$Fvfe##GERI>Zv$G2-OY*oEV(2UuE?|#~W7Lt&K`${T
zj-vr)VM*SU%)EKzhBGfhrS0q(PaU$0j$#-2EA5|NR#{O9Gv>{mLc=*Z^lxp#G35nC
zaug+vV;ZTbB(FT58!ZNowjK8-dr%ndFDVMjd563Eziv&N`?u=NN8j at Nvf|u4`1(9K
z3vh$WF|PDqjB&6Px*whsVX#8|dY$BG7?MtjiI`7_GqYzVXHS_iE_*ua=%6+F#Edc7
zGikyQ-6M9~w><*$tb<3`lWeb(G->lIC+XPyX{s|jPXc!FzsIRYbD!e#a!D>9kKvh^
zkf_Ha!l3?*31VDPMRqCX at SejTdLSRWc-+GKk!ove2K)^sxM&*ug~FWNSw-_xQmEOA
z5rt&aRE6QHpp-fwR78S^m1t1FP*9pjg8^Dk%}x<jMNw}Oprt(>iaC<kV;17LlI*<P
zU|u0F$BxP5#KdDV9v~=F%D-~pSf~1}4XaKLvr5Z at T(Qx4&_o))tg<{mdwx-Qurjw8
ziM&UbSC#~e=H-i+U{WdtU(qCWZli$^K2XG)7Iq!0+BGk?B51X+n4QWIVIiszqM|_t
z<jbL025>Ssiv}N1Nk+S43NQ==<tQq#+!=Bj<u&Dvi9iSuTTHlOb?;xAb4GJ7MO|q$
z;8E52aNBv9!i2`Lp+*p)=0ZKxK+axbos{H~(qK`+LUJ`}s?-!K#>&RC?DE|5h49ZJ
zZm&62RoP|v<rSqRn9+g at v*#zH_?d`WgR%Cp%pii?(N~ogi7v(m$6qnULaJ!8QZYVQ
zL3J;qB#+aiNXhM&1LWB3%=2c9$|l#DotsGwiAgt2^@H5<^4x{lCHdCML^O8ksItmn
zbUKTMc`$rN_JX3>`6b*QmS;E&z`dv{MzoaC5F at 9J?A*#KOdazq7uLt8=;Ty7rl1%T
ztySi)3ZkQ#^{|h+2DK=h6D{{!^{2L-5iG9Y at p<gBthctvn~AAv3|fNfSh9d(!r2Qk
zBx4Y!UI>t!!WvK=mK5NErvHLzG_Ml{dG_oUjdw5+3L(+H&0_ at _Mk7zU<rm7517)U+
z5j0i_SjChCD^imANXf at -De~8JU|G=bur~#m2!d!yIGu-dq*X6HSu{5vY0C4hY3p~C
zXS+?*Go;~5f8BH^1*jo#X=O0Gv>+Rck2(3-1 at kBbzDBmZzQ#i{S5|<DMpIgHS!+2s
z>&$E{O04k~*~t#kaNdp-X`;7rEmVxw>DR`$us&9OWc_G}$43!sr4e0TWEYf{V^+c>
z;;_z$E;1|~#^se37elhTQnkC|Z<<YeX|!KiK_11<E~+TA)-<$~MSF?fVhuFE7zo%6
z9^L3s8{D3u)#ZFI8e9GQx40SicWlBap^eh`v-AJu@?l1>yw`0EF<Af4qi^A-(a{B)
z1Q_|04Y1$QLlMSeNT30!yfQC1g=P<Kh5}mo+QCI}ad~NF$!w$IYJ^rOH`ORBU0`Hi
zSh4`it?cRf6<CcTXIW_(+Pfq;yC~JbYNQao9K&<Ifw&N56c~KRg0=}L>;gZA!MwTI
zd4+S)M~jM$GBL+zSL7EL7)oql%*&rQuXH}-1j~b^vyl<OL>{8nk~zis6yhRA$)63q
zu- at eXT{&@LgD@%)MdlVz2!}wUqznRzDoXQGM?nDy#H5}*zoMiJOORjzX at lIe$!#rt
z_*P9e?Y0<26}iFS!e~l`E|>Nw&<(4Kg2tSAQWxYYE~%VHIu*!@7bu0%vaK|CcJ6#^
z`N)d#ebaflMI}alRX&1t=tGe#R4rYQZ$-4I4kD*(xK*$_MB=$Gkmd7B=9AI#=9SR}
zT546Uw2dt)S6RZVhbB?&5G<|4wq!XMRkqNesIsJ#3L?ST<a#BgWS3mNVFtWJB=Ec3
zAh#u&3hL*bdMce;9BY7_7rmR4hgKvih44IqpEGGv_NbA`hPaM4&I$M at PRdRlIV#n@
zO^e>z=_%u)V2X{7Qf^1u_o*YtM7dMb#cfs=${igoN0O<@#-yyQ2^0O<DI-UXjAc!c
zdRVNnsj*Z_iXtbbKucSzd{mvPYza+?AycH at R;o0LBvWF_q`m&W_}337HRExjm+t%G
z#3p?o!0!g&JC6SyXdJ|^ao}?S8wk3eOeLEBDBnQ*k%WWrFAgWL59TQ4J;-o#t~i_@
zr4k3?nE~aZeEo6GBhENfavz4PkQQf<21AhdV8|lL#80ISH4f)A$#vmhJf{vt8u5|V
zR6bpg;3<8LBf&*-4?@WY^IUzwI|z5gbriJggJ&2=;W-J(J1AP7sE-S&2jMRcC0kY!
zmZERcasYA(UMkm0v+om-SA6;){iLDd9Bne7%##-43DeQWSrVJc>BEhwpy|^G(nia)
zM$jv7y$etH5{zjQTg~aA#wC(Itf&Z2HisCqC4DzfKg1}J^c|cYY%G-YbDVY?wUQ1V
zQG^F|1C3iGU3nzYamIb1=|lP-Ez?N<5YK;<@n{TxKZW0I43cS-e`5FDc*1m~u~K4X
zoIb)>FX at GEJq>#tX0%JXkf$GNd}O6_+GBhr>Clqlkaw`LPtv(OeUNd$;ljpmKRp*u
z{0=e_Bt4s_A84E)X&<K#Fj6IbHK$$11WD&}dVrBB>2gl at H?k#N#OZjWMAE_Gx8YG&
zU*kH^^s&xyThG5d+Xdbs&)r*i$5w$e4eye8mxdc}3;u2m_ek9MyLjGe$@fa!rQyjE
z_h`6J;t3j_DRHlcw at 5rm!&@butl>@X2>sJEyybm?`!u{&;--eTOFUD<jcr0smWF#I
zo}=Mji5F^kvc$_Y+$ZrW4R85Clv}OgtrD-- at OFteYIujlmuq;J#G5qSkiUm%)^Lx+
zTQuA&@zomMF7Y-E_w5$`)UM-uM18kuc&o%aG`#%>!QZ9fWm0~(hG$AS#%G#8?-g=f
z8r~u0Cun%Rl<(E>94S9Z!;_`_WDW0<@_ib<TFN&yyiCf^)bMtRXKA=0 at j?x6m-5Rr
zyjt>CX?Takt2Nw`->BhC%3rSGjZ#jNhIdK4S;H;)t9AT4(SEHO-X!I;X}BTn->%^v
z$={*j2~s}O at D|D6rQseazgxq-lHc`ttiSoBe2<1#A0bXWBxtyCq`<uz?veb-8eS&l
zr)hYj<o9WKj+Ad|xL5LLX?VSqpQGVTlD|;H%cT4=4NsQ*)f&E9%CFb(7RleJ;T|b}
zxrX~Bf3t?SOZhDt-YWT5Yq(d+Z`E*1e!GS<DSw-Ww at djQ8lEiWGYz-ocWb!uz3?aF
zi&($vkn&v`?vwI88lEZny&9e%<tJ%)m*h{@@JuN`O~Z2}zp3HLQhug}XI>-xJWIpN
zB%Y(;K8crUc$So3rQt1q7xJq$Jo8I|*K4 at vBY`j1 at G>dCNyFPe6a38 at -oymnqT#K7
z6L_nJ*Gu_r8s71-;BVLP)`-BjX?U5G&osPA%J0%}ue49MhIi3HG5WArfAdKB9t~eD
z<tJ!(*(XAdSHp9p{3H!;p&!iPlcwSAQoc{aebWA>hF5<f<Ya1irj(zf;Y`Xe)bPen
zg`6 at C_sI6G((tYi1%JJU8$Sp;HtM*Pzg)wUW&1X1c$1XhqT!iR{%Q?RegexId|EZU
z{TYF`X}I at K0^g?Lg;IWphIc(C_?d<`J}vMr4R3!$;6^0Yud1bdmxg;D7yKR#Z)p*D
zf`(U1`AHhST*^<@@FpogO~buXzE8)c{7emRk at B-Ny!y{V&m0ZUSt;;B4R3u|;8hyl
zCgoRac;=IWzh1))Y5ztI&yn(*G`vH~Z`N at szeU5#o)YD*)^J10Z`1H at DZgFATcv+)
z({P{k&khZ5p&x4E)1~2QdxSrAYk1SSI8aNUFJt|!RpKrUua<a%hBr$2UJdW~T<pvw
zX}Ix)z>_uHTOn|thBr(3riM4ZBlt5lyh-9&8s7S$;Lp+U<o5+$sNt>K1YWJ-FWxU!
z{*4;`)|~=x((nuJ6?lt=&$>(Ctr}h^@pcU_k$8uO2PNL6;rB?~pdU8kBT6%jYb5T`
z at M?*BHGG-GlQsM%iTgBs?d_tZObx$H^5<yya*0=Ic=ukRceRGMkHR(`KJ^-2Ch<lM
zZ%PsTO&ad)7V?`lyz556-=g77VS%sK at MMX%X?U8H->%`+XX9WxKHD_B=``VQ9U7kO
z6Z}lWGXnze((oLKcWZdN#Eq|F{h at 54kmJ(uoY4YL(C|!IFRzBT%oO}d8gA7qS;IZE
z1%H}`TlMm3xVJ>`n;PCI at hlB5lzQf9c-OT;PN9ZddX{Op_j$ozrQx1ZfmdsI`znFg
zYj~H$n>5^ix9Bg;8h)1?XIeD;NI9OY*6 at Lnzg5GJryu^|)289Yvfs69_~}y4HVwZ^
zmfNA>!|oIEnTDSz at h%Ndl6bd<pDJ-f{w_mEHH?uGcWHQv#6225TH*;BK2G9Z4KJ5=
zNYe15?+_X!Yk0mK=hHO2S&n-?4KI at XriTB+8YeZpLh@&6_|;aqazDwkPuY{=&eZTG
ziDznfvZQk~yjAiSYPiK;rQuzYzgokyB;Bato~MMK%Qf8MZ`N?1<Zsb%OP^K^FO&Rj
z8r~%7Z5rMv`8zb+;_uS%7RleO;TFG3?sHh}(k}Tu8gB7>HM~pmCuz7<-!u)+St;9H
z!<!_Yso}|z&e8A=$zQ197Jrq7d!H5MR%>{cq#HHdC;69axW(VB;W?7OMZ+z9S~a{$
z^0(=@q_=5!tK{#{@Fq!jX?Ta^@78dO-zC?_R=XR|i93&mTl`)P_e%aG4Y%r>rs0jN
zg#1hmZ+b!CIU3#}@j?wZC0(WAzSTlbwT4^#jT+u0`Il?B#ow&q#*0FJi-ueLts0&q
z`P($y;@_s>t&+b(!!7<U4fnnz^y$`ci{B;JXM)QxswKZi!!3TV18!=#u|`PD(r}-|
zb97wNWg6Zj`KvVCC+T_(H`a=B8#UbGZ_ at A_$=|Hu7XNAuZ<YM58gB8oYq<Aiq0crA
zxA>WcS4;jb4Y&9Wxn8u|t3&d;G~D7(aKL>!zD`IqHN0BVIT~)P7yM-!o+I%p4bPHv
zy at oeQ{^c6pD)A-_xAbYzaASkeXSIeGO1e$Mt0n(74eyXR({SHLA-`M0n<Va%>p8)N
zfOM0%OVIEfi6?1ztHjeZ-21AKV`_M{#IrQKL*j)R?%OQnRB3pV#OpQO*dq9sYj}>t
zn>D;u;;S{>+a~0+X}HynT{<rL4Y|G%xecR9;w}wmGJk at GcS!yu4fnk!B>Hsxb%C22
zzFg8-8lEHhb2QxIFVpZY$zP at 67Jrk5`{a8BTQuC_Z`E*Xeb=tx)_T)r#Qr|rqP-e^
z*X_a%Ng95y#FI7r0g0z+_(Kx+Y4{3>n;QOSiDzo~Qxeb8 at RbtJ(eTw0FVyh2C0?fC
z8zf$(;jc@)TEpL$c)f;yEb&GS|5oD5HT-*tH);4 at i8pKbK8d$z_<o76*6 at CEeb=ht
z10>$2;Ri{)UBlfH-=^V*O1wkE50^O8 at S`N&rQyd)yj#PEN!;iY>$fLK+@;~CNZh00
zBPE`o;i(e$YPhw(m!#oiC4aJppCj=!4Zld at J`JBGaZ|%fB%Z0^*GfD~!|NoTqv4Gb
zFVye{C0?fC&q};X!`Di at TEjO>yk5iqBJoBIe_P_qHM~Kt_nS2QL&@K);X5VXqT!!P
ze6 at yuA@NoX|61a08opcN?HayU;@dQQpTs*fypOCG)9?Wj at 6vFO#Je?opu~;7vHm|)
z;w}w8QQ{sAPmy?nhEI~XSHmxmc#?)^OFUV_he$i5X?UW<eHxxC<(L{C-7nJcJjtJ>
z;nqG?j)vba$HPJm|3Ttq8a_wLuhQ^AQvYfV-zE16>owfkPixfhBcz<=8opcV)1=|n
zep<7JKOy;BG<>eqf3=2RD)%{CHQd_AYt!&$%f-CkuHo~f{B0UuD)9~te?;oZG~C+X
z>(X#*Kd at WFE2Vs+U#$O!B<|Ai+a>PN at Mei8X!x at d_iFe$i6?2ewV#}<;fG0oNYn7E
zZk2JShFj0qObtI$?qg?axV68XrQvT#J##etELm=$hNsH?;W7>XZz-or!>xVeY7MWI
z?+LHhaBH8xQNykM{N)-xRqE5E;nqHXvxdJZ^=#4bW2F68Yq<4XvQ@*qlD|#Et>+Q#
z8eT8$xlP00lKOOLc(;_#G~9Z=(52zl^N4N at e_P5owD%x=E^(KJe=l*5hP&kce}aY|
zEb)4|UZB$}&G_ at +k3P%+?{>he75rJ`_mL2MGUa-i<UfVK1OoB#N__}l!4dJ*sK|K~
zkfl$T18(gflbq2CzqP-p<JLZwj$8XBI-aHIugbU9uR4FL1An^%-r<0EIpBs|@9O1x
z9B{7#p6r189PmsBJjVeqbHJ+|@J0u`$pLS1z^(m&9`;fEM{P%IJ+1Tm<Z}?hXDNPV
zJ<rkcG6(*82i$s2qRUzBz~AnGGY8y|`}w;31P9#bfLqTobU9 at X{PhmF^?X2=v)X~b
z-2rC~xFPqqb@>Snc(MbY<$#wt;Pno8lLNlm0dIG}nFDUf{b9YnnGSfN177WbFL%IO
z9Pl;=yu$(ScEHn=aZl}c);_LY-$n=iW(T}m88=k<US)hx at iYfK(*ZAZz<o+P-huJN
z`lKm#xZ478O;+?*@eW0Q6<@8CtKw}Ac(Q_vlRu*H=KbRQ3}MeG`m`wcsS3VY!N)0h
ztAbyk;B5+igMzm!_+1LVO~IEdc!z at DuizfJk3@cQoq}8M1;vm0`2Q1PC0XyuB>ZU$
z#I;$TPavHBkCEs{z7Lb|hoT_j90jL1%KBLE|0MoDTOh91do>APso>UoRtcy755 at Xe
z at 9iYK#R74)-fK$upA_7BKPTZ7k69n<J)(p^X at R&}?`0*tNx`l6ixN)poAt5Y`%3r&
z7Kp3$K2^eF;yU?WQ^KE6_*)d5;yvqQz5kQ=U$8)2t7Y6s_=5^=y?>SP#}wRpzbN6W
z6x at 0rDdEp6xb<FE!XH;~>%FFgKd0b1 at _na-Kdj(s`$RvY(^BM%*2kydeJv1IQ^DoQ
zRi2uu;Nk?G$dskvRJQfWQE)2T`V=a-Sec5HG6feJ3%p9f#R^>D)e4Ru+(tk33XWI(
zMn8=Tjvp9DKg$&yudI!JniL$bc#eLW72H}AP-2UMtM6Z4t>AbCZS>Qs;D<(0oF7y0
z!xX$-!G|dLHU%H5;2jEnxPmhUx7I+E+@;`0DE!?Dex!mMKiYnEl!ChyT>a06JPLk{
z!k?hv$11p2!H-k$Bn9^>c(Q^Yui$A4K1{)V3Vwoun+l$&;F$`3qJn2B_(=+$qu?hi
zc%gzPDR`NJ4_ELi1wTc>s}-Ey$!&e=6?}vR;@YU-BNcqPg8xCmn-n}*!J8F4MZsGX
zJXOJ0EBGh{Z&mOy3f`vRV->tz!P69cn}Vk+c!z?YuHa0;&rt9#1wT{4yA^!Af*U{C
z{(qK&yA=Fv1@|bpPr(xue1d{|6?~$CCn at +O1y5G+$qJsP;8PUbr{Gf++*I&$6g*SG
zO$E<VaKD1*DEPSwUZ~*bDR`NJ2Nb+Y!7~)RTEV9&c)fz3ui%Xeo~hu=6 at 0paH!1iG
z1#edHnF`*b;1??RY6ZVY!CMvlVg+wg at GJ#ySMW;|e4Bz_s^A?8ewl(Z1;1RuyA=Ei
z1 at BhyD;3=M+4lcz1$QZUj)Hp>JXgUJ6g*GCy$U{C!IKm`U%`_Vyg<Rz6nu_?`xLxT
z!A%7(Qt(U#ze>Tg6nw6N=O}owf)^_IJOwXP at Dc^DQt(m*uU7Cf1+Q1|s};Oa!OInV
zxq??Hc$0z$6}(x&D;2y&!51j_Y6Y)S at Kyz1sNii1evN{+EBLhvzD>awDR_s1FII4-
z;7b&|OTnuZyj#JqS8zkF`zW?us^BgKuTgN1g4Zf|f`Zp6xL3iKDR`2C*DH9kf`=45
zO~G$eaG!#Q72H(tn-n}#!5b7jOTlke at EirdMZpUdyivi+6#P~NuTt>a6uer&Z&&bo
z1;10l8x{N>1z)b<_bPakg5Rg$|GE8-1^#1!|5)HZ7Wj_^{$qjvSm0k-;5+xR|1 at j9
za+%@y^-B&g%(~WK-~H`o%_i4Io^}72zSkaL>_0IM-|pjl2J!RtNaU0K`}Y?#a=H&#
zBU^2nHf$psY`P!OD{VTC=!a}Np6J_bx<AoNZJL7ENV!eBh at NHBwA71Cx9J0ko@mpw
z0UJrR>48KKv*|%ZA7ax76W!OQ-9+#HIa*&2(Vy5fZKy`J+VmkrZ?Ne at iC$^bv~e1F
z$fk!7eVa|wMrmZJP16Qxq}--yV>B|$rjH<cx=kNR^hBFJis)3Erj5_YFq at _g&&VM*
zO>&zBWx8oRQr>MeFY+`V*Tzp6IPMO&gh!4K{rO(JO5_k?4nP`b45{v+0wFUTV`P
z6J2i8Nkq at G>ET3Ax9L-eo at mpj5}j((rx88OrbiHch)s_qy01<Df#}^oM(dwU^d~k=
z8;y~zHl0fJ2Adv5^h%o^P4q)HJ%;GpY??L}BTH?19MR=AO&g4nSvH+c^mLm(o#=@+
zeFo8~HccCdkzqDX8;6lYY??L<BYka}HVPxV_eJaPBl;7Yo<Q_go2CuH$OfC9MD$9V
zo=o&ZHa&&t+iZF&(MxUm9HPr at +9Z0GP5X(SZqw%yJ<+DmBRbWl14IwA=?tO|vFT|<
z_qFNsiQfIsX#F#Z{=}v)AbP7!PbYeVP0t{DrA^buT;w5}zL4nKY??OWB1>(WHsB)V
zHccCEky$o<3DMJS`ck4N+Vo{ar`j}atVM>|G;OFw4zX$4NQ?BfY1%-G?EXiz{y9W{
zV$-=qZ?)-JL~pR^Jfc_H^lYLZvgv%HZ?owFqL<qA9HPr at nkJygESoMOdb&+tMf60Q
zo=bG9O&1eA%%<lNeTYq$5Z%|NONrjy9j$*E(Vy7#)kJT#>2jhs*mMQaD{Y!KtRfHD
zbS2TZ+4Ov(m)bOKSVhWhnl`E;vut`H(bH}E8lorK^tD8%+B9uMMTXh*bwnRx)3hNK
z>1)%p5f$0JH(LK{qCc_e>xtfK(@TloVAC~3ue9k}q93y9I-+m0>19MOwdos(F1P7=
zqG#E3i0J7yeIwBmZ8}VJs!iWS^e~%lAo`Ffz5m3U=O17cxR1j)Me)u46AvzrrTc62
z&sWE$@6qUQH2QOm-l5U&Y4l$;db38a)96(i{gg(p(C7y=`Yw&WS)-R}^kR*kuhAtM
zU7*odYV<`KJx!yhYV=teJyxSfYV=7OeXK?g)#!sYy1z#MT&A_ZMt`HxpKJ6Ejebv~
z|EkfOHF}*!uhQtJG<t<bKcLZfY4pt+y-cGQYxI1LF45=$jlNQ&FVg5~8a-8`&(i3z
z8a+~@PtxdPHF~H<AFR>+HTvgLt^GCn8;$;4qjzZZdm8;$joz%$>oj_mMn9#|D>V86
zjlN5xZ`SB#8ogMf=WBF{Mi*%Gl^T7KMo-h|sTzHjMvv9#ks5uHMjxxuLpAzfjqb0}
zKbL6juhHLV^yeDAL!;l*=)Y?8W{qB_(W^B2DUDvC(GO_!T^fC}MlaLo#Tq?dqf0cp
zK%=kJ=!-OZnnq96=(99>tVWO2=#w=1SdAX4(FbdEe~tcmp4R>v{f$O{uF*R*`aO;Q
zt443u=ye*sN~53B=oL}g3@=Lbu=!Z)nGI_bmm?4|8=gq4#+BWQu-pvoVn@(5T${KJ
z;B52MxD#plU72BqcCvNYBOnP`X5Ic^e=|H_f2J#d{9F$31hxp70}wKqU-z=VAolMe
zEch&&jn$UW<x9HLb%~d{H1w8T=tBD&zpP6aGLtT=`E at Vz^(G9uY{SY&=yD}=iIid^
zNRa0fnG+>_y=i(Mf>pBG33Tn<YW3Jz_+?F}N=>IhNFcPAy@!anhcIY5GOFowbf;U*
zEp at rOx9q}dKT^y8Vhg^6)f-uD1B8$+=k_KHx;%vSk}y*ebWyB!1d(L5l-9_f5t<98
ze!VHY;~`<Zv2^WWyfNf*=ShVV*zr=a$G{v2?Pq;@%M^Tr9S~LQ7P`}obd at Y~!-I}x
zzE2GeBPFmWX9;7Bk!3dYmI-CviNzDDyYEj{br0*U=v&r_>VEOEW6_sKi%ykAUy4jr
z-Icv%LeWQ}Xkp?ey3?zBlq|ENx9pYN#EhDTS9cv&_SE*DgPF=atG7%ja|PB;v{IU3
zhW5QeyQ8f3dn$X#*Po(h4P!Q6fvx4x7PBG#Z<%yAzzk)(STf3?T$x#!zS{l4fo8+_
zdHr1mTS+~vVSI at 0S8%^c*&2Ciy)>m64kmid;Xl)m6VKM}0WUOshYAW$PE4{#C>OcQ
z(I|rrfO_Ok%`qd`*p&V3I at y_Btb+3_N;FxBi_*Edw7;Si*^4NW)Q+rpQ>f%(W22b^
z&Y5qe%!^20*w)4RM)M>%=edINm^_cJ5UFpCzb^KilxworKOwDjZmzzYr2X>;ss1=H
zrnJJe|Mgj~rp*N-nf9>(eR?(Rdbk&Rf|z=gHVwMb{<5fPLR7aaxhP#XFEvz!bXymT
zKxF5eBI`$VzmZMFg`0flcb3UF@`9<o4(L at Vukf*?;sKJ=#cqk_dAC2+NmqpD`4a8I
z-X-_#kxnK*PY&KLHX$nQ24`vale8NkjjR8CJQaIpB8!)KeeALegeI}G>!D<l9PT0D
zejoWe+nJ9m1$qn7t-?ZUIJhXW%nU!5SPch{c8v$W6AfUpy_up6S08l-=e7M2ZNt8h
zoE|n$N;BC;nI~2+o~MoSJj?SynbTz!A8YJ23$MzZ+y%frkW_DHl~(Q_aU-hYVO>%U
zlTGba68Dqyq%(QgddkZE#KWGa`;F{aDZ#}aiOTxt`MnvKS7bk0fql7Kn90M+qIs4b
z(U-eNY~^|RZ^)MOunAPAEPo8$Z)6WhSuU0+W%X>910|2iyt0&DnkAn!%ZzIFUNp~F
z367ejL^XR9?3QNt(fvji7nOBmR92I-tj}blde~)(tn-De)!$k@`>d#}na;BAk+NLO
z9hK!`{e-MyDa*rl%R7^~q^wxGaO-D8_1Xw_tBx<w{YK`+Wt|T`9teHG9_|uKma%)d
zU=iH1n<UYQp2C($g7y<xxg at 9$v3yP}N~~g+$-A6D!y}3G6BXtMLM42RSHGL#wTZ2i
z;So;MCZ_dOyI3N1<9oO(tmW}DCM|buKA&_bR*qbXTUHoV^&8xEK5T~1FvAs|Xh+_*
zi>iXb>QGfSJa`uy57{gUx!CPrq4M-#f>c|<b4*T5h|Y%Yx`CwoAE7%dR9Ua>!CE<%
z%?BF|SY~J=JCfQM)ksAyl6~VVRBcsu<$-Jp$!&rtb|1d1tUG~ftf!Hv8z9o+S<{ne
z5b at -JhfO1ie)@W at Q&x}CwtUl5F55s>Xi(Xjda}9MeZ;m0DePPN`U+o`D#=hKG8ipl
z0mt>!jgK2!fU}h(J+y0`mzsYJCw8(YDF?tD0=*JkE<tJ?c8~;X05(z+eh9l#rMUlr
zeqGYDc&?r7B~I^R(<OZ%(XhWO+P0P46;hGTj*-$ogB?itF;q%5!VM$nqTv1Od;95)
z$7}QhS*7D^e4Y2DV(2S at Xbl+8F5&Hg6w6HA05mQxw26d<!PsavEK2mT7W`iiX2Z2*
zYyfE)zBUu_B>B>{UbuU5)ZHVpf?0M25ti;^7m&CoBJjfS>_o3W{j1=?@JD~mCNEos
zLOQ=D9qdd94&8v+pHZ05^i}RpX3e5Rui>sO=e;nPm_+lamsOzD$d$k-&MiPjDkU=z
zE>6q}gg*19e;tID*Fpa&9y5JQaF7|sO+#59b~>qB^J-G(c8W}M0>eMgsQWuv`wMm)
zuSqRm4%?OCwy7l}mLgqko%8SMy>%`o=80e?-MD{H46&X|pPX1|iylsnG#uQ-_#jUQ
z<MJMi!S~sB at Q_BTdNNzRM)YXY7Q|Qg9k3ibgORjP1L^yM<00L=eq$zvI5vB2Kcn+Y
zk-w^Ee$oDvKa6tNGJKI$V6|W(H%%NlDB4RYGoI~-qU=(nSf2F&+Ck&ulBbg76cPcy
zc#(@*o7jTxML|$2U9I)O{cz_%!*hu=-ctuS?N&1JqQo>d at n*VPE5`IO8_5K<iQT8D
zL+r_9&JW2KP|OD6hXF#J>;;~6QDPE%5_g?T*$R|GQj^$U9_?#%HcP&paMnmJ`5E#b
z!qp^KE4&ku;Dt#>@F1RxZ=57$U~Z_RM^{3>LwKvzCf3KyD21fbIovF?9v#n_;*UKK
ztE%vz<LDBqO|0fZe9R2p6esS{%vgLq>KEx%G!-23Iq9s+KZWFfLG7>=%KO6u;7R*4
zlOlzv1^WZCFdBa%8<zAlSPS(<xOp0{{p7?n+kbc~HIbMwm`LWKk|`;MX&1Yem<qV0
zUF;iThF9p4E+VE0QqpUZNtcvDOh<D`d)Xrnk_HmfUidT_*~6}TPPo2aAdR1_o!Fpy
z7B6 at gYX?Z4Ibo(h^!<gQpI%9TooBFnJ|i=HPU~Atmvd2o86GnGQkc3SevnBP-x->V
zv0{uXKtw;5Cgqr+S4sSf)DUoxs{uE%H~x;2$)6&l{?^ZEWNSd9|M}B*2B(4Btl8*g
zTcB9y*Q^OiW;ia<pS~%0gc&}XM;niGrMH<itzI(}m)N<3JqGoy4wXTzfHLE$evL}P
zXqgb;GG!;t{sLTADO?9juFZ5sJ9+55*r1pC!49whd;v$t0LQk>PIfog*-{Am4SDh?
z&os&d(_Azmj?BoW@$z at EsYIiogcxVq$wpG9Ban&DI9_(F<kOqCKk<DFyEoE6+3kb0
zy069Plt$$h at V=qWCN#(HWPgP%cze;zjcI|6=as7QqC=4>2Ad6QJh<l;F+)F-Icg|q
zv=X~ushGqL09ImqY+}Qj)d1M(s6!z9IPF~o!Vfp$l9B#daF`!cfWLv70JG7-e%=@~
z9X$?j#GIJi`GFZ;L)>QgSw1paBjSx<z$|RC!DO6<Ym-?5{!bzr8_RmF^)9vzF2yz?
z8?5yOJB2(1w%8zh$C2D)&P-IcfT?L*F-^0J-A+OlQ`yM7>}+b!U2HKxYJp|c0?4Gd
z)0LFTPbCv~Cgno6b+M`ZE at t-N?K6`2k05?l^D*KWFX~S<yNl}><CrPzR#eyO7h}+l
zG|0~*1)+%I!8{s$7wN1OQh0yl^JW at r$NyDC%!M&k-N~AX`F1eFUb_Mff1>?fcKcbx
z{BjGnFWDELP!qiDBm6R|N<&=>?){<7WZ-+iNlJgrm7dZTmF}*)oLmX^n<~{^d>*mx
zXRA2t%Z!A7ct)Jjd8e$HEWPtl6kSC-7kty~hVhhb7t2O%1EDUnhV^mRJwv_%+2?jp
z8*MSe#{Nu?9Mmo%EPUr`k`VeJWsg79Ds=_})MkHzB-Vv5_o_cugR6GCyRL?eAAY$R
zO1(r4ff4Y5e+=OI-u0<1FZ?{!ooZ1HbaPz}r~`!pW*Bo=&7uJwBY2V7 at I0lw1Pd7K
zB5+20M at 20ss|igaFJaq>>XvtIoDt~&5g9)?jvwQ|=xjB{RA?G$MB=&wN!-ahKz at 5<
zoWVXq%aHB!xq>l%z#Z(rsh+E;`DpskTwWQC&Lc}Uf!PdC@~VU69!STifYf0-QG7Dl
z1;h{VR&pgp1pICnyMoFyQ68IwuSOK;uKgqOOqh8g?X{W>uh59X?&2jqUQN<4kfkG1
zO<)()$HU{U^CDzT4utcgVJjj5j1$y9P=Z`Ce#R<5cWyv1Zki2~vSf&h8{)l~Yj<rD
zQqruHG at de^OWC<D8O?Ip6%#IxoCaWHBa4ScxoE0f0?!^ZB+O!m!oqCFN0N>F{#)*3
zF>GVmSE#ntNgJtAAg>v at C_~u|RKb`GZnlPuH54VX!Spo{UsnE1*{I6UltS{lfm=MM
z_2l6V{|<2W3N&Od(btKp;%QQGyYb{|`wyhcKmVrGaZnFdthQZB9iPBG>9h&CsE#)+
z6Lqv at W3~N0)hw0t7=bTK^{XjstPk<k_7O_;GJ5jx@$CoTtOFj&w$s;COJ`E$5+J%<
zHj`91PGw8&$>wGwh^?MP*3j2td|B#lKvK+V`xyXQIo$M at kZzNalkc2fTi3%NoNE+u
z9Sbh9+A{7TyVz475wkLcRvtn%8US8mTLSjZ_Zfq;>izU*3`nA%Ub7vkA-FhoE(HJQ
za_-5AKI+z~W_Wa>oY2v)JBQJ at kVNCc-^A0<&UdIA?~$!p@;A~4fx8%oNBk&ioE077
zD~~7r=5R}3<+ekXWiteKvUGraKJ;>Fh~UxrYzf>NCz9PglpEqU(=#M!;UTf0S4r9c
z9i1X8U@}Al3GBn``8tPfrE6^OI)bFU&RzK0DyqU?WhFPWM<_d1Q_E>MqVbf7Mk0=s
z1m9#EB#CNDF*re+Y<qZaY+|#o=nkd)9ajwF^f0=Ec)x#=wA#f^+fEj&O=O5Uqjh%I
zZ2}KfjrxPxur{$9i>7Ga<s=heJ1tzpl4vGku_%R|gyl?UlUiOa%ImzDrh-c;gH at Rf
zN$|?}BvDNYj^YGWX1Kg7W5?kxGIBrFWIsD3%HWDJ{0zUKTCG^z&xi~HBfFdsl*VQ5
z<OIolSKgJeH*nYa2F-ATxtQ9-q at K-x5*(Wi1}E{|!}G?>Wl3bKK47Bsg+0^xnD8;0
zhy4ZK&$i$T9*6jwv(mzIvdm<Arr3pgf->C=eyTE!4^+b8lDR6{Vj`SgLd;iznfio_
zb<rJ4X?q`jnFFIzAKm^TC9B%I>kdJU*;c8Ghpm?R8r6Ic_mb~j$Yl3M^HuYFyI7W$
zj|!jLOTI at b-z?;_#;*QkdN3c0oTTK~L;Lf-qJ)j<EJYTSzz&xM?RrmEjPmyFQ4mJ<
zpTNnokiur*%PQ_}E=je4u;1BGgPlU$C(@UfzK&AzW%tZSdpK+W@>#Oa08b<tu4e(K
z^vuNFf$Ys*{s3RA at g-X9EEGn4WGuga!A9cB_Y`0-t*vjT?29R9!=l6-7RPh!Vm}fB
z7x|vc#8}od=OvVLGSbPV{=%=j*e1^3bA@&qF&|EeC?=WxQL^9Zz|QT>wuxGlapo^r
zp#yU}HO?BzJV`R8Y4v=ZnC=1-StyCEy^}T=7A0n~mHcjPA`jT&2b06lrszJ-DxV^J
z;}LKc`#Xng6KSi)F5z%$JwJJqH6X1;j?QLwBG>8*_9U*I_lTk=$fDEOIDV%;?L3u)
z{U}>5D9fW|rd=Ly_z%FsHo?=`EBI<;!{3ns4dp)*kTy%qV&h;N*4JXA4l<-C+gRoS
zo8@)SkvSpnFK>$;wP~X0QA(`lW;>xIJDoHcLtn}GvhoLIb13{gwmTZiTRfRPdH7`6
z4V-<7zR7mri;U-4M?cYG*_`a at WLqf1N+i<YM*2_{Q*otcX`!4aN`lXT37nu|{9t+K
zWpQ*z_UA>cP2 at WWh%N>`O0(`-KB%+(D~P~wOV6J0NYr50RSCqy-d@<BkB at KQN*O2u
zr`=B<U9GkL1MiY<`&s{MC>y+KfZDp(kOJg?RE-K=oiEs2sSvNmm6G7qxPTK>jdSFk
zmyM at 8NEw4`WHd$*5|spkMg?z_ZKz~hx4 at d`f?PB7e}3J|zQ>iS>SbTj9Yo$nydVDz
zqG4 at feSa~Zd*fk*HsS!71CXteL>duK at x0hCqP)+`ylHVFFQ5KzlI$LUY>6Z&m|*2H
z?~#;u8S?TN>vBRd{g`&A;6B6q!_#natno4afs1@#q~um+MILb8h1Mp%gOT3(9$P^9
z*vIX%A5qTl;rCQdLbM#YhUi2Vwn}Avtp_XC5Szee`FWwVb~SR5?1bw?U$SLmrn#Nu
zegjb~f-fuU2;O9>8kKwv at h)(S=YXC(e4Ka&IJ=)D-c4V9EuE<`hX9GKUgc at bLn>^4
zQyERZ+1i86%_6WCn at l3lrmxfSWvQ|l5 at Oa6^8je&@a7sqx*1#v+V<_gNLWOfuQ}T{
zq|paZ0y{h}d*ROPa-Qd9gYGlMy^HQipV*bfNUG<PRDQ#C)hrR|otrHwLv`-pR#uK;
z*hhbj)_xc3dP^v;OeyiK6It0*@LF}g5$2#ODqLLmRMPzzt~(TY1UG!WbRWNo*`$I?
z?qdB&Q!rkO^v-wL-+9?&o2vj&FP_CS>XXKalxGW9ftbhl#uVJn?u58Tw*S9TJ0HeF
z^8G_(?UbGr&jwNL3Xx*f?g?(Gp8ahmIl<Xn#Q6GY*hdeKxs@)~NcSAPjjWOt?LQ(!
zI-2qgAZ at 58+)M&cf&M_Lj*CGPKA#KjS?Uf_?={|y_OlB(^IqoX*IjG^&(v$kvV!v6
z%Jbp;Ea#&~PCL=sGz`1c#Y<%_X%s{be|Rc0!{e_{KEO!X8VEg?*aXv=p|x at 1dIvwh
z#s^6}S=jyudYDklCk{6CFTDxoz49nhr9V_*eYlC}#MBM)&d099T_hV04T;Z;f<z3f
ze7_o!`R?=OoE5vf4e=?^i%R5pBCk~ZtE5GE{O9~a51fRu{_r_elP!P)A^BtuNi?U(
zO5V?tVyl?aO5!O3i428G=z~}S)A&Gj_OQ3)osVsicWLZpd6&$d<#)A-Cgwle2lxZg
z1n#7eb&KS7u{zv!t`u??(mi9J at WugGk>v8QY<Xw03yEhbSLj^2-N|py#;vd(X_`U_
z*zm{gNp!o0-yVfqQO;m_=VAjWd4)jtq1ebAY5~glHBpyX6!}Z!YKwY{s630>NYtk^
z#ZkWJiF((f9wjQ>;=G5b7m-E}3D7Kqyd#B!J(5 at rTSp%fhVJ0eH~K2I8F>Nw<~5QJ
zhmCm#IgT85W7LPzA)o4Evi)!L#?IaF4zRN&7!TMr_<{i1N}=(ga}!)^Y>IHb4z7=Q
zV9q`!MrwI5JU>GC9^YPQ<^{(42 at 4OpieK!9o&N9?s^ocq1EDAQ9t2g9LKw>c$MLk-
z>I>(i<wxY7+>W#&z0y*F&6Ia(>|B1QABR7QZ1Qxpg-?uTJPLO-#2kui=gVvn at 2Moa
zF9DxX1zl_p(9XNW{g-rqqqyIJ`^dGtA&KoxB8#JBE0I at 3$!Cb179}4d^6V&iJCVsz
zvX;o>qhuwKheXK&BKt+ji;4U`Y88{n&!S{Hk?%#xQ;4MbQdHq6B3DOK2NL;Ml>7-E
z6L~vIenVt9O70|bQIu>aa$b~NPvnD9awU=HN6CkY^hL=#h)ju+bwr*PCFc`)Xq22o
zWSk^DEQ`prDCsA1c$E2ckTmls^BSLzA42=GhSzBvgKNAqk0NlLYZqHYTyr=V at Bg^#
z$+nYSNNhez#H`iEuRB?*WLBdXa<wF4J`{<K?7Gd-_+lq(<h?m&zkC)8Lw$CU#YWkS
zda{jWv%zM~(Jr(h)ya!ol)*Fx at VdF|ao5d8k=&ahiiPN_7GGBWHfb at 1pRd)*AlKq~
zq$dxzY5+WJ97#;2uRp$u`W5m~V<&5A6UI~G+<5jl?7;dfrJpM$D_mUiZc_LoE`s`6
z9<or_av8s3KL%G+nue|JtEesI_U2{$%nnv4P=bvlCZtr;;5j&s%tD(TCl^z=xhS!a
z9V73uSVgf|k|kgv61AJVZi}o7*_*N?vk##XDYBJcasEfD=w+?)&cjy8I~RL`?u42T
z;x;l99g!{A6!n5#?8Yr5xi>L3Qm6uPsIkZ3i*@#J0&YsJEI_T2skA1~M`B#cZ>
z0o3?jg&oMokg!H1vM_N#N)oNH4kqnD7)11u#5UTA{hkYwHodzDORz`L!z at +qg187C
zr*lIbLHSUDUiLjlQez*%MPX8G;y1JlQvf$H8>lI6;utc=%xK4wJAca?5BUngL$Nz<
zub|sCY%@F^(LT*9pPodMr-_-Ri8s|vapG!6XD-ZF<H1G2jF%jtc>{!0Q)?!%fe<LB
zbTR`{X^!F%)oxyfnC>>q>^$K`u5$dPgoOuP%P(TOqmo6aHRy7{cBpj|54EJmDO^~r
zzDlU&mqWFel~I4jsW%^;dNbvzx6^t*^){I-TJx%xPQ6iZHX3>9 at nH~W=9Cj~#}FIZ
zih4)X%SB|q6wS!yA-!>35>lxJcEPo1fIE33<%$jFX`nfuvYd`AL`)>JgwP~2s9D}g
zB7<L!U?H^83<VDJP#ev}&Iz5<Ser<PGMIP0PzJ|~6=hDRl7E0OmWgzBDmBns7t?d<
zz3k at J-g5AOW+UZz3JSBw@KtjLP82 at CtFciu^a)(ez3eD{#q(P!syQb1Pp87GAc}Tr
zx*(`_d*zuzz$au3m at YO0%HGA!p|Vq{>=B~u%6^kW*v{M7S!2Sjcx4|(O6T)z5sGCO
zqj4ga=MFHy#g80Q30`J!kHbomnk|{!wFze858Xr0#nHWV6OLlD5{^Cl1mW0C)M?**
zr8gD%X!;0bvs<VgLpyPNiQNG+2!9+h{A3bQOieX2&T1#>ZPA8WAm#SbPyv$rDAL(d
zNQ^XGB^v6pbwZQa9K4~9q#W_kgc;neXmDR9 at 9_IXey2sa?mBv71U1b^Ty4rS1B~Q$
zb5T;~Mp$Agbt_oAgR{z*bp(lPi0=<8!Sl$ZJYwBLaOi#!jD{z{VUKwuk*sh(k4rJB
zP>WEY8#heYmxcybin7EAJ_SPvO)Pv at u8k9<)Q*>_xZ1>4YM~Go`6Q;0Ju11|pc=bZ
za#yjkJ7_{eU9nYWcgB3~|FM3=$G%*dF at aqy<<W3thCVVI?iT~w*@TP9X0&9^WS5do
zma4}9=Bpc4L!GZ7K5(M2S|)AE!8|V7hubUC+K(rz?Tx~%TxR?|<Z|Ib_e#$*C?_2Z
zK~OL5;meTxx>s1Pj3kcH4Z~m8#iwSnNq^qz at pn@jga<9hWlG9xRBjh{bs?PY1EHG|
zyE#Tba&3sumxXkZ`?s&9nqrn1$Msj5A+is16*Hg&+fEjk9VW}uDq31D9yucG!Ble{
zeoGrSIfRqNXgU}B3jLMuK61f3_ at F`f_iM;}Y7xt+h(AIFRz*epS1pQYi2sVL1h0&-
z at 7*M(A-)XCtM<(ywZrl0<Z|Ibr(2%qVBf2bBl|`hpRC1A{W>&@?D<KW;xtQRg_Vu#
zq5NjzZ-_suH*F)-`y1jnpgdLEm0WUs7)}ChZ=wrSaPo$=$M&x6(LGc-1FEnK0kdRk
zlobm_)aGKhz9j0T)+7VEMGim?3VvFJMi&VCO?R*#Io3_wrRh9=(2b%XA-nH@$c
zoy&P^ccHrrFX&H2qqTj!UyCi5$TdH5yBtX6=q>y_Wo?MR8Io0-E#?Dh{Ke$8;Xzr_
zd7W%le~hpxZ`SW#>_vsW`*<-oknwdDQiTc!X)5gFm5P6dyeB;9UG7BA%@(h!P$pG~
zj&6}hsC?>iufB|SD6*&*h+0eLp|r<9aWkq7_uOi*WbzEuo$4sZP)_1lQ at A26x{){+
zJ&NYoNw<(6#4MKh!Sy$2?pXyUzOhN1={(0yb~PG}W{AhYA@;70<C at g8Q7g*Rp{sEp
za{#niBvy_y!)s{oid}Ud3dYoP+m&L)SY;2@*kstn&gE^2dag&golQ7#x;#c^=PGtM
zX%w!JqJw|p1qMRjz-e(t1^Wz^O77Zg_Tx+)LK3)*NaiQKDH at r@g{Ws|_;L6*(4JJw
z887KaYxr#Y1d`d^Yw&d&zTk`O$R2Wzqw3X2IS1)-f*-Ssk(EDJ*@2tbU3Q-L9GUmc
z7d0J__b6m380kK)7IngZD?%%X$lcHM#mg(J3E=b%8ofZH=V<iB8hwsNkJIRrV`-e!
z`ws8e#PmKSV`X0>v?vijb;cJfeXXy7F=3z?+QGh~lnvw_M(x(h!R))dz6LvM29DXM
zBL#t2%_h%f8%2G#w8Ylu1)H95VW6SZ!;c5ne1#=$IF7%rfr0~9N^2nW2eWREyO#gT
z0LKSIdvTJTRjneIkHhitSIwGk_ky$W-KR2jf_qh5V*Ml!9Wgh<_!;LU*XB5JTwYnZ
zkB4Fjbo6h+6&uOP-|9Td41G?~_fGaEHGQa`A96`X2(m(7@`K{&U+9pXkFa9u<FVbW
z6Tkf)(Kf(fjW385Ak}Has4)lN)MKFG#6w>mU|eW6jF<>uhS_k;#8WY{)O=;e)HN-o
zl|A at 0?6wEOzFZ4opB_ZdOFswM1+qT=1Y~DB`e9*CaoT3K at n_QY8#6rOo>OQT{E+(E
zI%t4nt2cZ}bL;pvlJhvS at X&5EqXVR1M9(4K+c at v|RbVP`?`nn0zR at V+Afvyrj#?E0
zo<rJh_u%;RDPiJI at j^X9L-FGXI}1v3l|OoebR0(5DHirE#|9BL)WYKbLVVrWxo3TW
zLD$FDa9yv4(E9itl<<$fQH^)}q-xwj?cOjZ2L^?5S0V at dZ{lqjQ9zFZ=rr;!_ION|
zCy_;1 at p!O<^JpsJZo7m<G3<*)3H?L~gQ<kMqJ&MU(GvVIS<XWiZi4Sn5fpG47}-e&
zT8-BYv_8Ioz~k*w`$Gh82Ht8eQnF#h$F!*&`owI2>!X_Qk-X5ZEud&1FmdDIH|QD(
z)IYog(NYxWiwBAg8xOmDDLh`Zal`l}7ot1<`FYC(cX16*yaeU2JNl4 at Uyvs){81Vi
zKMBF_TfolibL2~?ea60cwDsYn8Js at N9@-B=H!@{6Vi%(Va_b{P8_)W9w&e+}|Hsnw
zK411QFkWu at w<x#nx&8ae^Tt!d*5Kv7)&R-J!v(SVBXczRVvRm0mZn}9S`R0x`6?%-
z7iOUs9tB=RCRZZ;l}xgG!=Mb at 7ntsn_4L(-#EU5NmiV=3Rr(aTi+NHzc+Z5 at +{5D%
ziIrAee`_UYJ?3*<z_x+lZGew~1ov>XXjE<ontTuy<SwRsgC&EP3!*QElueW;nW)X6
zUM0#$o!31){seNdX)v4FkeONFE*+hSFIuC8;$27r5lHmndnT=%hr|o$a;%X<L%Pts
z?!n3K!BrmjVAJa!oQeA^AGLUv-Qvfg9da-wh;`(cXUQiT#{byZ-?%I?^;t}y7oc#<
z3;KVGqxHv4mh;yZ{E$+e&tA~zM>YCxjlMyn7ijbxjlMXRPWjp&dh1H+S~Y*~%A7d`
zFOhf+st^7LVu>MnSm1qcJ1p?^!>MNRFVQ8vJ2(VOj%l<C#AI>6{tj6WIAk at oJ@{|s
z{9|sU3m)&{_X+F2Ion*{-Ouc^*?jBg;9(GOj1=J7-yz=9Xyqq^Rgb?D4|t5qQ!g}Y
z#&5vl4n6oYyj~<cekiiBBc6hBXG7P`@$<mf=L+OC)clbJNL1{5p&9yV26d|Hvj(_t
z$i`sqUezBhx9K_fV(2^m!V at zuZmHR){VYo#cIZmDPIyKfd^qbs)Fgy$kxcwe;r$OA
zSC{c}S?4pqj&CFQgt#LP;Np6b2LE99{Yt)yU&(i#tzUvDxc7RT at GJTDwM6UdD9_x2
zb4qA63{=8Uwm<O>f!W>+FF+8YL^qi6;bf0LJHUt?*c;;SagzgJXg9;>cs664?_;KK
z4lYLDrSXFIW3y&6y6Myo_uy$=W at rJXi$O(@gf{*PYc!sRr1EJz6rky1Cd5HX4j%zX
z%H^0pxRi?^<w_wXc8K at U5O4VzCJM7*CJiUF9NByfR751`A{D7>5sJ&{ee0Zwtw4Hb
z3p*ROYb>yh0l%Ga at q~*eT<8zIOFv5dk&m!&*B{7TO?J!Euytr7o`_;5otqp8&GnjL
zR1UxENq@^-%h!RS^MIMq<Gf^CVQ)`H1AhKzZt;m}GIU;&8H#N7c?^@be+-7j0wOun
zY?y=zbCQoRvaZXY{*Al#PcTs+d~H%7d?CzDKkTmbW~9HL5qc}bJ at rkhEJ_L{CS=sT
z=C18P)<Ed>0E`LUFr3n^U=sVs<CtK>MB*!{t~C%wdgal9P<LQ>yEz_)S+e9Xb38Iv
zyKh>BOI at qG{wZ8(8xz)}^Kw!uc7hX=xM=opuTqZ;gxUkcyLG8&p&BH0EUvs7q5t-$
z|3p6!oRrLe_c8 at zNc8tDX&|U=xvx?nJmJa-*&D^U6r=TRLhD6wb*&4R`O}LN6M|P!
zj4+M_giTni%8Q>?`O{&k*ZuCP at 0)d7gZN1SRZF-XyqA6OXX1tz2H;=by4K3W1H=De
zUQeU%k|m>XLzY?8Kh%a&68$w*3D}zc4Et675PJpnF*+x~Z~XlC$L_i~UPJkN&o_^z
zwp{NIwP&FAwS6JcL_^)#ngLgL)dHFVb}l3k`Zf^SfQ1Vd+3e)U=r at PxVSV^hV)9#R
zRAG6lr`KIu0S&0Gk6Z0P&59aRt;>4WI)&QNLsIaAOf(|7STfszf?{0*C<#idL`!y?
z!`nnlx^GD$-MNn}a-lAv1fpxMOMqhQ-F3%+f;l4h!W^QVGRT(Xx!4Tw`oo3L{hxj`
zM<D$t(>?WFG=#gh8kG+~4-dPD>w!C1|G2>LpUmqKfbL)7zU3KO5?uciwSfDk3E&U0
zl-H<y+O3PMz?U`8;dfzFTt+yP*UjS(`(#g{swPl(K_>~~@eB1CxPax<UQ)ru-fkvS
z;Et*fF9>a^9F{Ts{gnOw>!AwiatTTUA#^zh#N^Qa^}CLXOu#KFEf&bU&o^A%r{-r@
z#U$UJ&2jF!w~>PuiQn#nwyR7}{dvhq=<BZi8-UOr_X~m4p9?000%Lxr%#qiD+Cvf`
zPXIp?^M|(jYdX4VSP6ZLIvm*T4=ozh9SB7N!`JuutAF_GHJ^8*Q1{Yh$dCJ!*FtaB
ztaoLE2cDi08km;;ZTYUqTqLEu7Ab{sEqzsEPX=xoyWw_jTP&0#=L3$`53LLdV*x?2
z&>pB04y67_+W*M4A4uBU>htyWgo`N#q;Zw6qp$yp!6Ihp%tVY_XDXA9I0HiS&g8@#
z_wd at pYR-qBfujM5rZXpWZNin!Dy6ma<%v1;h^;V?{;9imJ at Ge;xc>=S>5M<1?*T?*
z^%)2;p2r5gdsRQ{O^PzWm|SO=eHbDP>R;?xxS)(Ly89^c1!7D-Z{R3!J&8X<y!*gi
zdkTc|5H!$Gf}N}<L~^J<W`}M%I7~{C=2?`b8HBs`eN294s6Xa4muVeGtJyfvpZ+&@
z-3&Mx)g*`B>%bkf4C@~}`(wkoW at jdb&pDb#kzsT&x9%aVMz#mAJx5zh=ipcO6RMZc
zz%(5*y+3 at h$A9YK{(cv`%<xV8i3u9uHF{LRmBMd;T1h$T1oYsQ9)eI;=Tipe<s4ea
z at c_~N^oEqJyG{2gSXI;tKKfNYIw}@F7)99lC&+3u6KUR#_q<N=o5gnrFT_2V8!5*O
z-y!ph-B+>m5tkT%rDz at ugmW^@2GbX4C^ShCOrAIK3<1nxF4)9f`%@gM_6qey{9zvE
zi-R|4jx+IWwew&e&zs?S_%YbmK at -2w#MpBk#sK_|{u2!T at 6q7Tw}#jw`}bp at 8Im#l
zdn&pbzxTgxU`G0ni#JRTb=0+1t?`HO?vr`=IqKJytMU6>lOEratN8*LdtDfNp-Beh
z`}u6F${%WmFxLd|JA at h(LbHmGhO~@OSH|!T|MlIZ{gMRSP`U1#PJy7wp;k0&{c*T8
z`F0gW1iRfHjOPB(6m$0k_uvbCW_pC;bUd#>Mk<4TM(TMKMXb&%%+H%!Q8^DyyxnR|
zawHeE8xWZ%9G7Tr5w at p5#0+O;Zmvyi!>v)^cQ5|PtlRFceFxNpSMXJh_PrbmtRsc-
zx4(0w9M at sn8G+E3*xF%D4|6-l`5UHm!)#~zL->*2WiZ?JV0s`t7v{g#>#zCAHUIUO
zc#+65Ph@$EvINq*ulq|Ny=w`r7myL{w!Lx-Ju6QNq(lFp-w&I^$n<`~ntcP@%O=A{
zQq(RsOo%#qHJ3enn>AC7BSR`P)yYI-U`L<g&#ynH86cUQIENj)hZ;#d1`LD>eddc~
z4-t}?rkTDAZy>OYP8NUQPZ;+WC7#JnETnA=(RKWxO;~%mYelv#Y~e%Xoe+;uk at o-G
zH%z4%4|{;_+AnC<26NprJnVxRMU(KDMDz*lL?6DKhBkT5vxgE#Knd~E9a{T|v4!g7
z#p;gz2)7G_A4#l6J<PBel=$mrJ_{Zv#<4T_kDi01NO%BVf8oM=v&{65DnH|$teoT8
zX*_q`08$ra(Fkl_zlq_3(dn`)Fg{rUTI6~Z-N@#0zsEWa7RU;O5N+VKT<iYHr;y38
z?Ri#u!yw;}E*KF*A+6)U9l0B9az1A#*nD04G`>=WZy(%1tm7UOY*A@`a5b{+(ez8S
z^x-^xO*DNlPp1Jp<RYaH;OX}vUCs+GuCHL=)%pT4qSV)#TWEcOYVTstVwDuZ|8+o9
zC+bb_%&8{hiS)hf(?MiWJOvHNR^rX_3M7i(fJUC9Ta3n8$Yn$p at dWP0<h?=)_DPY>
z%<m|Z7%s6l9C;pda3EZY^S1Z*H8SeHcGtdz+}P^fKL8V3!-#rZqVqr8tO*6sIJ_L!
zl<gVmdxL5Ad>=lGewcb}%4--!snZ`t_P|!dz;NckerUM74Q8K>e#~eY=|5M#<*)g=
zPvzs0Jd}s+?!yx6#VimR%tH>?fgBFr=B}#%LLOIlGj6DpZA0nN-5ht_ogk&BiETW-
z2oQ4?%!YFgtd%-KbiTnG7I>et#z^cVf6hicNWux1^H1bP+D*g=h5dKFxw-uT8pPan
zZ^3BxiYx=Oiq8-0nvsFXfR}o%#Mq5^yK at CQfcm$ta3#Y|%a#^w4W80uZ!>)Z4ds at T
z<p7b<D|%p-^F)T(X_2*d-pC5&{$Az29rsGKg>jTh6Y-Wmv|kIk{zu`~clkZStqs&f
z4I?rhrd>f9|MGb2)n5^BO at f(ZzpC$!?ccq}Tc`i_c<YPb6>q)xUvOR-Y>h#o6k!dy
zhsRsE+m5|E8Ec*OzZ+}4#r;mkT944aZPfSwb*$xYILDU}o|8!<MluM*Gh)CX0Bar*
zg<<sIv%n$Ta4`Ya4;i7)I}dEk2+zl6!=B*ujBo*_=EYdheMTdLSksC4s{TG67aZpw
z{?%%@2#>FZns`1XLJ5Rhi&u+C>zRzu50L1A#LA}-Y5D1a5f#f1%!y!Y8RqYQ6>JSf
ziT^U#8V^A-*h<CiZw$5`{v!?L2(h98mo@*}!InRq4Fk&oNC~!j23oWxw1X=VY;~TB
z{)^!{c$ti^eD}u0SCf_aYJx+2HArOP at fF1~)n<Czbz3ONS|{cqE6#f5m*T9^Fi$kj
zdg&gnMUOa($5l$4bvW77A<kOy6}8W=kF&<!FXOD2uk0CTZR4TS7B(1)k at wnh*4SvA
z^_~@HJ=jZ}g$_-j7Hhfrm%^--<Wv0JhP{MYcOuat%<{^0h={XhJH%PDdXKaAa`>0y
ztRql%bi8Hz(Bg6&P53T$9F4s2&uDzY-nRMLc58gMD149Gd{sK%9EGn2d?M}|F4&@R
z*936c`dt>~``}w%Y?P1QW8cWmh^F7l)9v`{9|$5E*-=Qh<_TVq5`Vo94yX8Q6h`jI
z!6-uby*2$t<F7pKu6q3SG$hLS>k+z*#$Uxeq4)T!Ekc>>`0Js4aE{P^47VQkx7#QL
z!|HV%*A;P=JUEQ2h_~ofn8!u!#ZL#*|NG#<X<!$HR_R|?e(A6Is!!!69t6gORs8>4
z6#iz#RW(*z^}z3rs|wNk?75}axa!@zsmf|xb*~mz)!ZrKs*hoeUgN5xMO?Kx8dp8D
zoMdW&Adjm`A4OcX^{!~#6d8uWSdXg;dt%YJ>LNQW(uLZ|ypaM0FH-K~a4-CZIQgnv
z?mrV9KF3wl+Q(c@>((gUH-_$a&OpH;(>Z+ at SR~yLS4VHk0$}fz at phzi1>^f?|J(FB
z+W(2HguTW8M=R)uH2OA;UaHaM8a+#+r)%`YD9s<e;C)=-QkNM%4y%PAo)t&;S7}@g
zVtYtkyGH!<wnjwte7C?uXK07-;P21+3U0{bNzp$lU+H{@+nExr_9IzX(O`dN0kUo}
zhi{HN&$CT748``*_UVPc?icxAq#YD|+~VnyJWYg$Itvhaos2ie1%`L<{kHTrcWq7|
z_(kYjf9NMX3k?kaI3xXgckLho8%E=S?`HSXX7U{DDAyfMXt?i`6bw|DI1J-uz88W)
zi>{E;2iu~-Q}9$F5bD4NJXY)UysD-Ze;csoKDXOU-&XmRzoB at XE0F$O at G$>yJb%FP
z9q{iC^!b5(bGvxYtQ$LBczD3KBk#RKbbVI_4%zxc^IX`a!eF&2Nm-`ZPHn!7{!O1H
zTrhTEXnV}VCUYr7Vvo$@ht(V6l6WkN3i%t*@}frmP at J3gcI(DLM&x3AiGGPn^eKPH
zr2Q%SxXtt~#GqYxRA;XLtY7DCJlvEin@#sQU1q~+Kaf!(L7-Txy>J)Cl#*K^FM7C*
z{Dk`7gp2*5_sy3mH$Lv at Dhda{0^vDmvOkbHhcnS+?e1D}taLXXYx_fc0>i(=3nksP
zTd4&a2BOK<mlx4vpSpcOQnshOMsI;_m^|2p{m1hg&h(n0xWU+)TvCjAV)0M}(*X#f
zZPtN_Y~F2T?17003oG-?PzDww*P-FAAcM<OV%Ed4TB at C4uCeXC(+nM!$UfvE4#RP=
z^_WgNmrDDE-sC3~;}Y3I_%0Gr`jQEFzKC{)2MkOM4F85bC5!K at jrKpX`@Lq=qY+=4
zp*LXqZRYw<`_b<#X-k at _z#Ef20Si+TyE-3Hn`Awj1bfOy|2OFzxd3KHlO*1WCfR<A
z+9dM%f!ZGZeyKg;&2+TK*}Mz=LVH{t(;nYVaF-6Cuk-P!W%6LJY!~<7xWU-v9*hmm
ztxM+g(m3sncH`jqhGXOK at n=m3_a^EGqFp9(%UJCq&q$!pM%(3MbUxWGcmZKdyA0)d
z2PSrgWIwRlqhCyW#G at Z*?Qt~MncCxtXnP=&Xb&{x`cLD<FIpPL-+4QlBXG0Y9AZAu
zN3kUsHR&B}*k8a(4sTTaf*dhCG!UNedKtIX^myOZIfU$hpI3Rr at jZ;V=x19HCE=l6
zso1Cg6#Mi$XdK5_Oi%CmK{1xrz*iu6BFP8JbavgL+yR%6MN#3!f5z_f3P?`C0WEB|
zKNbl6<g49NIfo>jMO#Kf65fY=6G;l5lCrg~)pYy647g4FZ|$4#aI*U{9Hr!^E at S&s
zAoOuy__x;6;3Dg3 at SIRv=Sx(dK*JJDQg}WUNUuu3ws#1T-%o56oS3$oJ$S5vVZIR0
zW3jPa4$cFy8H+~}Gzhw=vXLy*0dWL!VHoHC%M+hxQoiOtO(*O!a75=n8lRlb&s5V9
z3#aolZ=)e)9G%6K_<stv<Tk-R*7=#oe<fcH_~iMSFYLHJRvP9{cG<7w8}%#s4zl%2
z5Cx0<<JgjMJ{3-5t&4t%Z_TgZ`~Bx<<~II{^D{K7|I70;!y!pIKf_PuV3<RL{~ONF
zEW^4<^uXTF&lDgX=V$h#JN=gPGv|Z<|G)DyFV at pq|Nr*+nY>=5{@(L5 at nPlsO!tj2
zbIt$Y{LEew at T<?y+;anQ|2xjl at c&=#cbuR3qVCt9pP6g5!|ypi^T0CQHU8h6pBc*a
z!0yEVyYn-*!{+}vKlA_5`I%vX9uIWZ(|pn}BI|K+ex}3q8_v&Ezy;-e+r3kXFR)$5
z<6k^ss3-CN`{!pO at JtGW)$=n`mZ;}v2HYBbrt`miePKGE|t?JIuUGaWPh|K|Km
zGfu?)+t1HTLLoG({2R~DwAY}B=;NIK{qr+9)!dH1<^0SDk>&r!`I%3a at X~uc*ZFsz
zpSg0We6I7^<etxUtn)MJP%QSj&Tl<G^FB_uSdW`}9^(0cJj?09&RQfoJlHu-jAQ?{
z^D`4rbR#>J`@Qq|nS-o!oS*qHcASklKl3R(MUKZ^A835)`I$A~ljmmyTlD#iI6re=
zH2o4SU7Vk}Hkv+|r`ykO{ttWC0UlMcwi6N{3b;W)qk=?Tl_*{lMP&uN3H7XQGzch4
zRS>bD2pdExiDsi5*Hu*X+ADhPT?9o4y;vv~Py{T1XAJ>Fg;4Xq at 62i269}O9m*)vP
zXXczK-;}R^BkgDUSp7&7{k7?D;@QuXB(R@(?;zOEw7f0UerD!+05Wiff*(U3=BcUu
z%qp(#zlQxxF?M4DJx|3rt|GghC)|GKi7`AzYGOaLXguqTrsugk0EyGDV=ev6I-Jmy
zcz|g%6nMeYd=Yu3o+ra93%+Z88+_81o at h(YNBSVy&%D<$g4~)d$*sel-xvFt6frZx
zA8Nukq5C^Jy>-y+XKup;hTG44U1-?PJaM;4YaL|!nFqM at 3|r;FPt}apg2~K5v!78$
z3(R~F?PtD$hh9QrYya$L2Hj36=0UZeNy4Z=ryBHCb?j$8A0<AiP5YVKWt9<h)`7I2
z*@hJa0eX9FT)Rj*%dnqWR)|U8AN!f%H^d{eMxYNd$*f)|j6r4{aQm5Wu`En^y7sYH
z`r;hTSQdJYhS<+MWWBd=Y1n&q`<WZ8_eO`mXSbi}g!gp&8Tpz?cZJ%|9B01w?Gn+f
z`JS|&*@fjL>v=$wTlAN-pIL=+oerEJ8nV$}@$6?1mLabF%-ILWe&$Jd`TX7NXIkCH
zjb- at 3M75uJ7+UC1x+>g$rqc*XS5 at DB<`(YfsC3nth-IZcIMSq>f*By%!s)91k$EOv
z<*~|w8*q^8-v;~I@(0+`JH=s7yLZ0%|I>bE1mJDApSe2h`O>iGj$zMdg*~4b_Iza6
za~<=!HtlC#$1)W3WX<en3dLub|ETsehPL`|XAiSxc%(hdJ-5iMynpsEZA2}H&>rT$
zBXLIbzX at yhuWS#~?`8sfzwBWaiz*DeizxOm*J16(u!nhCZ+_qHVV(qpt7{L_bOfg4
z(;MwmBJ5!tQ|dz#{0*#StSA|VJOZ|fDcw>H^TgaFKOdxRVlmiFJj-(0B644&+_FW4
z9fE#Vn`=OPFKr#g_dL&g6#pAewc~+qWKV8nPZ0ge4B3HtW;R4)Vm*=gn4eS+TKZJP
z+miWR1r(THU*?<i*i2fkX{VrEd{#$%W!86u`CUp#ecOf+s;m!wXKcr+PxRv(v%GG2
zxoB?+%EjkNW_u$4X(K<`$QPI|cD#)L43E_JXVGy5baty6#mnf6nlQ_Kk2o0dG9LMk
z at QWQUV-(7v?{@$kHPQDEz}o%$>H8NA4Oi;cM!bxXQES~-eSfnXZ2JB*JnWagzdkFd
zw!Z(BYx(wp(Dy&{E!RuU<7I5WruzE+F~&UXi at yKOA>m8o(CGV55&bx%`u-OH^MCaH
z2VUPVVr9vY8T;kGd3I}4{_JJAjNctT8sB;X(pS8^Gf*bzbz67}p{@ts>P^S*XYsBP
z$bvz35X53mLwg_#w`+~}cG$M&!%7?hCg|IuE!ocftk)o_)3yJFkLrFn*1Ln?bU^M^
zyynlXB#DLo7<GyFSvOp(S2o70B5uZ-!hqrb11rygbWAitXKeRmZPPYkk@~xcuo(}e
za&Viqiv~~<%~a!C>Le8-f{nv>H8HfmSGsa~uOua<7tA!JGc^0dfkSS&h=3|X+M`a^
z17^V3oRJC8a0dN^Y7jM}{&hS-d&;O8-`!O+Ni?n>&-M6+6%ep+1n;64u1Cy(ar$%-
zPXkxC3(xPH;Qt0|brCHiU)@bxZ3fJsJ*rv(e at -J_#-*qd1PbG2Y=rwEOjExy<7G^}
zO3I`2v)1eWob$$o_;b#qKc at yG+;@Znr;MEOCIbkm-(t=zmrjIA at VH=(>+sP*FW-L?
z{53|QN!%&GCPjQED}+Wa+BKxo&GWN1>ydaEKSPhgGZD3PRuO!{F`*R6NSDs8B7VkY
z2;A{wWc-Y!gD42xj4&#IrfCOYOmIl}4397(j^Wa|RzUg-EDjNH>tiH}jd&T1MMBeJ
zI-?ICDCN<ZG{(#5oUd-mN0<@1eCD|Uem5_dx8h~+lMeEeW&8xb8sk0_9uH7t05Wju
zoCbf~VerSTD4a=`S;Wl%aJ}8!{{8~6GHM2bY)WrVIB;ki2Z%mINTU_{Np at h*WqhZ$
ze71RWZX<b^%_TNaOWVeIF}yiP=PEPsogOt~xZ-jB5*9UM=+)STltyoM)-m at FT#cay
zb@;Y&-qZzJCv;3yZ${0yoFyV^MiZu}WGq8M#38Un&A?U`-kd-6w4~9IeOSk}6iey9
z0EKkSE5<O)pc#Ra-=6?GD7D<<LIj0&u(h at 8|BuJBV1t^mU`l=Wpj4kH`3FQ3(xGNW
zX%L<ey|v|k5Nd{(;CvBQ34K at m{czvRmFPPIuw1>1P*{U_d6%Pc at I8d{v!Yv*bbmp`
zwZeP8$=`VVb>I<5M(_?Ld7%hq#8D*W`E%3qQgS6HD7<}==itl2B}&Pr<ib~iyLL*s
z4&IXtV)=LCyp_*j_{tZHXTcAa(|Op(YFV$vFqXeG(P{@AW%(l$X9#|46qc<S>0!}c
z3Qa1!S49XX9i>eGJ)X89aYZ&WuE-`cu1FRtGuxjb__CvrRsJ*v-Ydz7FtL6Q!5gMk
zc9g!0J|_qxaT|_-xZ>JP+J^qD+^z<{jm_y{B)G38^_Ak<vfaq%DJk|tzB(RJB)TfW
zJ;+87i5GTYp{c)=zZ}uiLWHpHaQ97M_<!w(aGEb-HyA?J<{<Wrbh<5_YD=GQr9FY^
z&SJE0V9sDGt1S2(5TZ at tZTNHG6g1*<)fT-m=cI#AZw%PXnXDeY at jHSya2BdTZwzI`
z(`wNh<1u$(^v0^o40_`^#0--3#*q>9#&of{NoTN6&x+}j^oF1>44kB70i`n1PtE9!
z|8P4R^v3n$4>Y|I7Mg1hNPv8GBLj5h0_P8Aw90kfUim~=Zr}xkkf>n91A7RGE>}pB
z!<|(Ti{$t~k{oX$E(I$E8eLcTnjkn3i4HL&+&o(u8%z=$Ujua{A~=@xCY(&0!^-?D
zEiz`;y{JeJBXI}uk~kr0yJp1fic53!?NggH$6_oL8_jXrkcoDBBMHNy{<{YB#^;xd
zPi*wY%ql%>2VxCZkKU+jr#HsR3M1%^N`lTtZ)kjuL2o=-!D+G48>FywdZTv~dZQAH
zN6;HZ%_Hdz1kMxm#+R4Lvtpo0Z`5arpf~0aE0Nw9j;vVp#t30Qt at kQ|=JBErG3kxV
zQ5c2Z at D*G1Mma`kr#DDl3VLH63#vnJT)mM{v*?W;#8^7L(e=_0dSk66^EY`t97E*c
zz$&@s7am!Dw$5h>=V7=jodic>$CSn;zor!LOu04a at 1B;@JyjGATCOC2$&XemC7Y8A
z-wY;!rm^t1pbswNMl&K79D^0MKlH(2sLZNg&<ESF>cZ%Qb3lbeVBKob2UlRrCZG at I
zb1{X`2aCe!18+}BAEYxsl0L{sHt2)jcf_R+t{npUU~w<d2c;OGK@$uIablzg+tR&l
z>HDm71br~pDhvJ#X=^cn{$$0B+lgSv at W@BZZktzrM_dZ9WgN-WT<l%pmwzJG=&dcp
z`s`eq<k7=xf{&MUVSmC&*Cc*!`0Tf4gg-ho!wb>y+t2G4JPYp*nJDSKQ;;s7FWSLt
z($O613)CwH9_hdTCx9f%qv;>>E?3lLQT at B&s~O>v4}aobJP*{ZhD-iW!X>{BGYyyg
z7qL}@OMXM<`jg?e8SaZ;hral@)ZFsLmvF0zKYo9#A|g+_KmOquD%ajV=^u69!F26?
z)GUO$q!YsY at ssI~4 at dl?g(Lp?*seh=6A548fBb4pKm5l{Cu4Z%hx*~eN{~+9XX0u=
zZ9{jlh4uOT3;EwyTuQL)m%j1J9;_mczHtX9FuMQ!zr?rj^WJCw`_^Ir)$_lf+zV6D
zr@(#!*z}F3+zz_Yrs9+QV6a^V5mi#~B>mTT?xa7LA1%v&m%rSvQh#{Hm4^OsBd-XH
zsy{ql^gdF5SkKIlu0P~@il#sO0{K!;7^**<V&+HJA3kE1N7o;YGTIB%ANDu$tE)e}
zyk|A^ht={IZjPFuKlJGO!vpIteAx`bHMainT$Dq9xCCpfCi=scc>nLGKU6)W?rPg#
z`0S{)?yLUr>x*sr!-aU*Fa6;HR#0vI;dK}B?E|4d9PkO(OU?C%AG)irKWt~r!@lSb
zZ at MsiX&f5;;RXzt%DY48FFZ)^0yGx?#M>`+9I$x%wI$E{-Er{cc{R}=&Z)lsu<enc
z(W at oTdlQQ^OrF=ElOfMr28Dx^=Uo~h&x?$@Z|D!h<arAjzoVw|yahOeOnKhpxU$(|
zPZLLig*2#!`omg~=M{E26!N^P&Jxq;KEww?o_B9IaxS%{LyRxa%f at hOD9_u|DO{d6
z4Qy8t{unr^dh)z3c6r|Gvcd>?p3oQC<aw=XqCX6Yx*w^#Yt>bk=e?B{DbM>!m*=IR
zW1;%PZl*jhg(=GOaIa at fdEWDFdBDYz=S{`}jw#Q(8--Eid2NPS^1Ra_7qH|c4&M=Y
z7V^BhEU1n=FI<19%kyy0MY=ZX0stn^;pZFcOJ|8bQsf4HnvtEKg>Zu1dsN8t@?D#}
zXPNRc=$!TD at Af2DTKYq65aLt1We8GyQMf{cAbls8f|@xF?QE2nuR(lP{(fWDr|p8W
zq#U>Z>H0#g9m}U!&*J@;%x5VV>dK93$OFIKyMOY)9asrg{X!nN0a;=4z&|O7+b4aY
z8(ZEwaHF_)Y|^H5WaV~!p~~iL`oh7vQXaT8y1uZHln1^SUmkclqE%=g<v|`;hyfZh
zz*QhJjr0;*dX6o<!%9cU1Ano~f{!76aP)-_LHtg=%|M!33_UpZNjKL(UpNR0shax2
zmDSc4UW~a5qc2`N-=HsUfr8=C=nJnEcvH7eI{)gw0e#V|!=a!ro at vi*en9nwt^a-S
z=!>Q8YD`}|B|oV>eW6EI7(rjuL|^!F4fTZ!v3P{O at RFoR`oho`z5uy*D1A{wePPG!
zc=SbQ^dTmFaViR<&=*awvFMBa*B6f1$i*C8UwG8H=(}Z~bkOyMr*NYg^uhk>3%|t@
z3!@L_BP)zP*mr$l7Pf2x`rr{RrV#odTwmC^t)vh3OJ8{2g`f`}cY!|Wg#j8g!I?H%
z;Uru7Xj?kpN=MKK?X0q31qhu8ePN`(r!+$|;%(b}l7#*a&nZSob#~Htw&JB*CTCIg
zd2#fU>A+qV-R(`FpPT_$RaZaxAl^0flXoFqBmHDAeDFW0pPX at Cq<->xtmOUIPc{{`
zP+fVD^^^CXk3H1&9C2j)_4JeZ=MuR4rJwvrR1rr%c?CB`bp7Ogdh`3PpS%~4B?(oX
z_~5B7OvT4%+fN)rKiR(it%G4S+p#}(`;?{1pr#Kf$%`+j`U&>!m#0qX?1Zg;Pp5{Z
zvxQ4hv-|_~;?Pp)GjRsNkWkAh6Cd*%emn<ucN(~8T#H)1!L&cfyG+<m@^(`pZ7tcD
zZM)SJj(@n)bU`;>s*vPp4A)KEUZzdnnJm~HM2Lp}0G%hU!v$^6_Y<Lju+DH at X?r+X
zcE5m1(xvV}O(%Jhf5L#E)$HuQAr1XaMNIIt&b%EHU2LedD@=!92098WocXxsvg;p6
zH&naA<i8Lm2E1i-P2nr#u*3z8!c8Jm8eC`#+Q=>1%DjKA at Lx~}!Q2~Bp`{%z&hBCk
z0PUCGNxNj+KnGpvW^L68;P0Q&{y-H5f|(9-#YjJfw2gt3@!Wf2sP~>%KM58kQ2PR0
zym=u4WP!Syn<OPINOiJZl3v*R-Eh<DU}qX`5KqUg<69g)-nWdqM^kY_#Lc)!0Okm|
zcsv(ZhAWuzZfS_t)dme=X}ka#t at zBW5RjwrHAB?Hn=esCQ`SQeiFyi9PjA%I3H3BO
z5&_5XE!u+!$?St!!F#d-Co8zos9+!}7^+v$Y}PSm1+>}I2Z5PH59T|356TMKumY?Q
z*@NMzV6?0N(`lQZTRA`C5(|(rSTBnDleY9(PUA>SZKt$g9f<fiPrS8nt at eSv=uA=M
zLwn*omOpGSht?IJhLjhgJa`-OwFcOK6D^b<_rCN2XYu6tyWN+*=wIPVx?1u7j9Tly
z>TjFn*z~t)c-SxfZGBcyZT;;lXYlO<p}&3R8LpR_>u<N8UVZ)T7-JsxMSuHd>+q#<
zX!N(Ih<+SW{p|~Y`9J=j2gv_Zzv4vK-A=_h4Ohd~HVo+#H;U_5rSr}rphrc!dAli2
zyd#xo`(~~0DTX-lMCdo9IB^4ScMNfNgzqFthoQm&VcKi2%702=y0aK<Q*|jEbU^*|
zCK;n-0VUC9b5>;?`Xi(%j<;sfM}co6ZCx5pUkr6VdzUS44A0OSWb^dECAmOzb=Txe
z*`oMPog`Y(Zw!am=_FYnA}LKkz2bIco9;3bicI1AC_iQ><muu?!}ak}sGxM$$F`R1
zBm4q{>!U-*oBDm>as3}#N#WxD_&>I#F9O<z|6?1c!#4$rsQBIpZM8f!%X79Zbbis@
zA8DShyFXq-6<4S$LIypLczw9d{ZUM#etr0|)5z3F)uqSZ#%Z}g3fD(-J^_C@`*I$r
zP{D<kR3?d=!=?A*5<HQr$&lWU*(Uv9_kTRK#`47u@)MhU5td|CMfi*6|A<Ri+Bn1A
z9~S{K;xbFRX;qvex)32=oKEoB)R(XG89M^z&OrXW%?JX*Os?bJ+F{sbR1_9t$R0JO
z`=fvvFAcvgONbX+Yg@{b at qyeWhWjHz=mBmEw9e?5sNQr(_!N|;bVu+qMfGJHysWz;
za7XAj+er7vpO2H`MbRt69l`9wdafn7Kc>Um+0E*p`Fa^um;}G0^m~!*bq?oH)8RA6
zW2a9)Tq<sQ;yoi)q<{*c0T!S at zv!tz`~6Qs<z6S-#|{kMyoUpl?u{!>(8Y%%b}^Ig
zjVlWbxy)GSPy%@%Jq=cPJLr5yXUCL|X?ew!;DJ=s2v@%{yN_d%zhi1j9TDaR&W#Om
zu@#*g7Ypac*Mp7FjKQzqC4|2z|JL?Q at 5V*uvl;%T`~&iRvR*nfzGV0p5{f||w2~<A
z;=?>7fnJi1k#|M`<U at Gf1fK!BIh-u;IXEnFb9Fr+Pl^bO`6^CttTddH`aYAF9*yLJ
z5c&E!7_5sP*j0!pIHictLr8P7LR}82afC}j%bmc}bUD<zV=qN?SKP1YI2Vldh?6a@
z&4okS;NZ@%rBAS>TOw`v5AGwrnz<zcU%lSaz*i%3419H01il&@6<<ZcQ<X$d=>{U(
z7kt$RyVt~5|LS&t at fA&N+UidFxwsQbcb#iu%B!pCKUeoeiL&<Hf3B_WKL^)&BCHQ^
z^dv%96Hg$hB*JQ$uU1BNpSuwi>F#q^@$9P^&T4@*Uu!t)Q?dI at oYh*$iEa3*EVIV=
zDj+|x;j5WIRYmv%zKZali;AzV15`|W)j`%5fv@@!bT)hiRdGywbp>`=P4Lw;tR0+F
zt+m|sk@%_}8v?$X)Do2v9h&&+1`}VMYT&D{kcfq^&TbYDU!8+K82Bp4X^O;GPb9`y
zo5g~Rj;}gV_iw{jBW?KVRN_*qyCl9^3w)(Ol_K>BuukB)Eb!HQui+Qxm{O2ti5)HZ
zh`%5;C0&s|aV2F9=@<8v at Qa%gJQ`Rk1jQ`l0UtR~-GyDE<LLNg3bsW8d~y<2QYb#T
zCJdh}Ya#K;>(TK^P~wv!1D{0nRJgFuJrk(pR4fkdCp2i_kW)Zv8fm93eS|GthvcY~
z4_>~H_~hnaBk)PzV+?$9;^_uH`7#2Z98CV_B+i4u|K$En at W}_q9Rhrki$)JHKKUGL
z{-EKL;m6h(pLCF)*zm~=ppqi|Rh$1It7+nsiep3<BJjy8Vff^+IQZl+?6R8Rlk1ur
z{Lh+5e9}Y5C!Nu;P<%qdAdLS38xa$q{Cq?_e6pTPN#}pg6^J8(|IrfTlV`+&jE+x!
z*9aAh|FPqf6-`6%3HhIl&IUdS<$uo6`4X}}7Q<u1C(-zx<$~{dKiF(nwfP>&zI;5<
zU&rEq-U#J?%=juM{}XZKoBq at Bkkc{8b86!<J9lyRLztb6Fyz$cXo;K#L`P0fO5}7_
zeB^X$7Le0D89+{5u&)e+^a)O6BmJ>0{h}@X7}A!$Z(s4#lAj~+)AS<^{B$RRBT4z(
zBN6!NAo4pmV7Hq1=>jOft*QH~%I7kgN#t~p<#W$9C8Q3Vd at ct|zSeM4b>wqPo75OT
zJtaS};is8EO-1;tHot>AmMr{~FYAlIPvjcy{Epy%a9~7}&s~RI7J{FmhYK-fV~enS
z1iw?TG7>+56A=8)<RejO2){GN#7`!_vkqCY_?=GhT`+qUA)o7lJ{b6EM|6JY-o*H+
zO03A}_^HQFgo=fq?DDzuh&v5_$E~hZ0_Qy1Ap}3^{LTU!zoVoT at 2G$4za3MSf$w=l
zN!|+Ugdr0n_?-oXU%5-P<iZ&Ij&G57Met@|2p#W5K{3^kr%l0DvCgTe^0bq%vO-Zz
zuP_v|EM1});*u!xv~MMf;oWIco|Y`29Y#k8dD_eqfoD#{iZRg2%Pp+*leY9kTlzkv
zCI3S+2gBY%)DWoq=Z(Dkqkgav&jd3#H}JJy{x!;lF@;)R3m!#ateugLb<`(Vj&4|A
z2>wcmjF&MFZ^g7nQ%sFe_|5O3!7}Pl4WvxdwMU1;!N}n&;i^@CGeT$lC_-nP$xI`3
z#$qn_(ru2?^Th(M!_XNF62ll*)HUGqWPisrH7|_;G%oO{JE7Du<zWaz14{`+B83oG
zz3>mevRl1yHzFk#ZcqZ9{_te|pp^Wu+a0*EK4dMwd!6pAH55v#YutgZe<-uGI-WqA
zQnuz%w|bKQ)b?Nvga_DorLkN&aRY3a`i at U3dHCTB6z$Ns112KrT2E04AAvE#;%n4F
ze2s>Pui?Nj^VH4`4iusBP)QK3CURad$m9{vD>E$MZc!ZF<|~2Lxyr2db;=)5rdmZt
zpp8*13XVh_2(&T32^QtJBkZd|Uq5g^((R`<z{2Y9VLvta>uB~<UD1E3*VFB%ZUmio
z;O(dGcE}ZCv(Krv{nV!?2>Yq`QH60 at tN=A^q~Aw6s{NGb$i((jYvb8ZA&Nw`?5F-{
z3>wg~pRx?HYG^-ICyM<P_O at YwmDqmjohbHGsG#=jrzVc!G)A?bDzq0xv7hQ?FE0?A
zHpG7F9F$A at sZSeK-+rnk-u?U8PpOB68_Cp${nXh}Yu#7-sjnN@?57suVZZFB7O;Y9
z+fQAW#<vfI{nUWlxn62+KlNd~>f2AXGv;Am?5A$3AHFmWjs4UH4ERvTztFqzPy7o|
zU$q_oVqf(K+au&N&65rJ%ukTiNcl{p{=nlLNZvx)PX)rPri6i1mI(BaZjsW|MH|K-
zBz2`>6$$A0_EVo8&eKEJA3WXa?;xKUopMOzGs$Sykk7<aM-KykudAc4CaYgFb at Y98
zL7ml>3DswU*D=-6XGptln?5?bPL1U=dy>T`Hu=mn5GO_WgM20;{zFuKbcp`o4Ow4=
ze5OYF1MD(W5<>f_=;0qs`Ak--E}waOex!V+w=SPaMaM$rGd0v7ys(W7g}!wo<TEdF
zEydR#EE4Q%T>Gg3Vns%m&xG4gjo8BhZ5H7j{<9kc4|JH&S`Y7V!!A=^;(=MAbeYdt
z#mEkZKAMW<wBnuhZyoBGG8 at 6^_2>>0d4EP_QxV#MR#W+|KPjKtXvk+o`9hSJuaSHd
z-+!6UUs%s8`OJ{;oyj+E)~53LP2X}yX-5#O%o)O*CqtCmw4d5H;m)_%WC?^jT{-)4
z^#_0K-7BssucrP$b7HSWbXN#>eo6-)-6hFl(XMT1rSGw&udt=ZBV7yn16XqC;Q|c%
z-m&l_lGmAZY-r%8LuxN|I(DmxpZ1<`fbmmp*-L%Bo6DoH<w3QV8i+;{BB=edm#V<B
zuQddf$X;sVE&;@v#2fD?Ke6GbnLtfN_^Y=5AjDp(k*qHQKh?xu>N at N)6BAU!zE|C|
zSLzSa%OdfUVJ|g!C+0dte^5hvsgy18 at Kas%!N5=ZZZ9=cEXe5isYe`psqKHFZ-)K=
zqGyPUcAsqM5B`ewQg>BxHsY$Jf9HgSpp<ZXspl#sO4%=asY!<en{3~)w at P~#OV^P4
zT?gjSNMCD9cekaxAibaVQbm#WQmy|m at X6M?20r;BLLYq)`JGi<*#^J!=5c=$d{VmY
z5a5$^G<tyX$x~SK2MwR({#j#u(nx+{!zVT7cisU<VcJW5@`va`1U{Kew!>zBJBiOR
z^wGzJ+e;<jcU;?bd{Q<o5}#bG^E*w^u~2;S9{CS(eZ|d8(O;xFUXG=YelHjgpM1cj
zr1LvDg0TtHb2>_YPR#GzEEZ&Re3B9*mbLWJy1kU(cmBIs at H;D8CgykGXjBZonGPad
z;2XZ#Vs#{cqBVdH5pnDcW=F=cn-)A)uuzC&w+i<F31&yi>$Q*hOlC)aeuB@|{a5n+
zH?4B<eyFLG8lBath8^!FY_9}(sShVU1TVD+(_<gDRpO<=<RBycLY_l5{6fw%^w^PH
z4zHrxodUcx;CJAqW3i<STvXS__N3U-6~L#)J3k_ADV&*WYK?2^&$#yI2!7|@3Ijh~
zT9y1)u$O9w-D={eBbpsx{8TIcjM`?2oDQ<R)GcV%Ku-t4pD`KhzSeM4b?l{{-Be at z
zG)#VC!%s88>J;Ix+Wbz4y;KWXUj%-tiM`Zq*kvL7P6B(W$F}JBDHABi5MdksjE23G
zw}K~`-9My;_EJrNU(8-b$m5!!4+ehPcYCQNVns&BPlMvvOVuatH2589FXcJL;CF;Q
z?}4?KdKbLOe%VXig{_hR&-~5_48b$u_EOK4OFUCud#PnutC7e?1G2e)PrW2<>qZNQ
zl!GBM at X1<R`b%4S8Pbyf5i)y*^npB*U-|0`$55D1<(kj%0ku7+bkie}3417ieeuk2
zWBRjc6Fo=tBGO*!VL(T;7cCx{rQ|U&AFob|xLoLez+UQetbuTQsoOA-f)>tK$H5hN
z7_JWL!t0${8L@=&23YZzlo<9>PEpCBw3m8h6BcED&`!+g_ENnNRcI?p_2 at -#?T;G0
zXcj0(GuV(Gy~q~$ht at YwgN8;NgxJxG8a;+~%t}14cMUYka_EtaEaRD*WIeH?7d0D#
zdhl%v+`<zY1*s?Mltws+L3DwvCw35{4jYe;8pLR<9!9B!tRQ9(qd>EY3egeoDON}D
zjj-dfb>vTE#RLq)F?D!P)YGi}8R7LX9EE8V^tr4jCSY*DSw>rq(l^<YlDTdB^fT-)
z8CPla<wTIWUC>Za+gJyBT%~^YqK8R{%Xmv&?D_M=Cz7Ag%TKnKZ-^|fYcGe*9-0jK
ze*I;zC%ORn+8C_R>c(SQqVd at OyTxO2t=|h{joQ9X=jV0NYTZ|RqS9aXR?R37>v*j;
z8V~zrPjo9QsJ1=PF&GKy>I_=6WI~H^v?ptaa>ov=j-sNokwCYK$JSF9mX_V-beD|g
zjrZ#z8E~uGOm4mMPFT-wF#D~N9Hoq>CgMskT80CwY+vk&uKj6mmAeF6D>(>m6>B#a
zbYf3jPmY5o)9t#^nd$J26oQP+TDdU~`(jUY{LkT&cxdd29>IVQu{}`}y$k=?6LGoM
z at _jnGJ&{28cWl(eK1W;$#6W5v5|n8rN<xD&<!Z;ifvAa{nnNDv+m=d1w^mz#SSwv}
z*2!Ruc)oiRL>XhaFMkm?$@EB9PH&>5^niDZ9uvg>q;)|w?2FzOJ!tP#vgVM<%CHQG
z=)CcyvyA1lDsjo(lk(l at Hbt#OOr~t at R$w4ghH+u4lwrs=Lhh3hF_~n(&q>LWh{=Rg
z2T?5bi!*TD1Pc`Z&;lheI at c2zs)!q_J&bsW%ZVMn`MeoK)u_2uJnEl_6;pm#zJC-h
zh2G}v?)LY`ozUYm71wG-{m#4++N18(&RQ$D?c<fKa<)*cxaN#&Ca#w(!bu1AdCvH$
z>dMlx(eLJ~f1*NM2)(WFEy7rFtD8JHb<z;~293M@!_Y<{4x&wp`m5W~^&6#hxwoN5
zt<t_&BiaBK*rH@<N(XU-HkE>2$Gr{lF{W`sDn}4%D3lEvSHxQCmFsq`^)}_im7$lY
zRACIDYkmZTrw$r=&7d1b77nA7!k8My|4iHJcAWM-88UuD+BscWAR$Z-2#<eY0U|Cf
zL{datS`CWZ;iI|GC-^JIB=&V?yJxbq_^T?<;%&M;c%`<wM%%So3Mt%yE|maId)sx{
zUYB(Tx4UFd+NcFW?#-{}$*;cPSBgs;x5$I&6=g>7k-`NuJINL|Yct%^O at Qa9Or>N`
zeaBtD0XTX!YqjyR8bdsxL)3BqIzrGUKL3i({!}LyA+Ur!+S2LUNqp(6OC6f4%pe$e
z-?pL-R}=udu>ouW>0MYR at aAf--T6G2bbb9J?iK~&zDeS<1==^?V>+aCVjg7X4#(Yp
z5*-QYc at a~To?j+j{*KckmvkGaT<_TVns>PrPl(+R(TP#$1jQ2>N#17GjmjjFv-WCN
zpwNRG%SS7?lcgAg at u)w0T<g6j$@mhyN7vzl$8eJH;9)pw?G)DMT3z at fd95a_af0~n
z7f;p(?J&K*febM=RIltrQ$8T;`$pjP`mC)Akt$Hvda;TaqJ!{TiTZ58poS0#See5S
z$cV=ssDVEH(3lZ^A~*><Mb4NN2 at 2b(v$H_E4UwRX^8jL@;IiGEK>*F;FG|-wT>-!a
z&UmH)W&0TDACN<X{xI&RQE<{tM1wdUJ%Mvd at Rr-P8ixk51i$U^H*x!MmG1Di4&P*U
z%&(x{+%%86*n_}sS+kW{I}w+5sYx%FmW|J12)bo^;fAEl`Y}~W-l4d%93^++YX-6l
z+y>@UOU9HJt#G?`c)KgEGYdURNl{vow+l{&@h77?WmzQ%A%5;jo`ugxUan-#_5||q
z>96>7dC{tzvV7Mp?_q9NtHM;b=+HNalTwxLPM%Aka}=fj#_n|EQfx;l?4+uKyFsEU
z>Xu+{Jed7eXP4gtWkyry1bOrZZ-czvlBcsS%$}q4OJoNt at SmB}7^D{Gw6rx6QRb8Z
zX7%Z`apIiiR*Jv96Je=t{(;-Vr=u6kjjoJes=s>F4chmsIPa9}AuJUafAD)wFAkh0
zc!S98o^PdC$jN+e96c=6O^ANiRS6Dcwz{_bE$ARx007!Y+>7BWP*_ at xE(Zs`>N`sm
z)ENAWAr?B at mOjsx-Uiy)<}kz8O(~47f5^a^kBFz3hD at SvBM6rsQnBxgTw{}+Wf%vJ
z?J}-Y9>hGKi}A~Uj;zkk;rXuh4&NF)<y7Tt!_r-t1~eLI at gaV=uiZS|ussH1oq78z
z{v^4CE1+7(@<qsA1xvV0ftm2E%2e`~Shpv;Vava42bQ)n>nE(+#ft0Lk^Mb*Cvc&;
zX0h<xu7%#i6xT6 at sfs@j%r6X)71v&Gdoa*c)R)XpcbCjfb2PqKL~R_6o_Zm(@bUnf
z?kq-^gZ;4rrTomJE-Wu$`v~qfPzj864%e=@fEu*9Y51;ip>BTGo+be>^xN~Lp^lk@
zU_sJ6x|g6~dVz-Nm87Kf0uke3P`S>|(E#9b#^U+`Z8BKb7W~Tik%oCR22Y7HUm#60
zFr5jLcv-3h2tg~LB;-TdN5C<}8v_|oGO!EM1*~9E0Rl?01wEi7j>k!QzE1 at 4ju}u=
zek=n@^6)bPN;(Aj7BxWEk;eWtP^7n)g<CzY3L;}i*RKVkLHv5nHv%iyp1s+~l*IA5
zwtP)U#dBCc1GVS at B~L^$gvjZOFy(qc$^Hlm_M;?n<P<IusJD2fP{6G7_=gol29*5S
zoLJ0{_zYW!;7!9H$eT+12=e9^kS`A37kIJ-lswbGXEuB2OpK?7_u*B1B|fp~UutY0
z&<%hw?E{{Y^%(@tN=Y(0?mwT<vk^F_ at flkn(qDa`=HA5PTHh71?V$z8NJ}2GLf5}M
z`<T?f`~XlH`j>S?+=$Qh$CsFEao(tNB!%N<iJ)-cIw>ifcaf#r2XG<;-;Z6*jiEgR
zduFp&hW^Fu!^2p=QvV_eoMQ1gL+ydU8O=frsEnDVRbHHK?>m?B0fl`~$OH9d at x|)`
zhgdWVnw0cPXY|oV|FA|^xsCoIVgXSi=pVhtiF%EXiXuT$HJ at nI*N|g|93SX2g#I~P
z<oldF{%!QnbdfEu&I8UQ#)u$+9uV6}%&ATT_12?d_SOnFa!&7c{(!zP8s at vedV+q*
zDGT-i#Um`chox(ue31+?2+RFLK?dal8Q@$dbvT^%+#9?n=<D9i#p7m_RzXyh%uN^8
z+ZzfuxJxRM3l|1QqXNU=n$r|K2~@z4i6(XM0v>~(Fi-Tu%m+S~RKqqTh=;=<p<68w
z0%24`wh_&;E%v>2=vo)ziPa*bS-!~Sh#?F#4&mV4BwcJ5;`KoEGg94Ogpm#7CE3sb
zuY+QE8x#X3qWtBEo{H#WU4I6}@XB&nEeyuSG)RS$K-L)P6Kv at QwsaMUXhUCQ(hFhy
zej12|HVOEBMLX>&li#n>`TZ525lebN0|UudX^$cfQeJTp`Tcg#5xD)Ar at K!-+MRMa
zPKW6-)-L9O%NPiAkrH at a?j%)i79|U$C|L<0(zo%B<ny`pY+gjsA~3fV+<vB}ax)ng
zb$$Pk2vgJqgjt3f?Gcz|ekivO5tG5~zb;rKGN_W<2S<j!weqNKoPxbr#&Zvxey&F?
z&sW!z(;o&-zruTIzW*9<jpH)m>&_#{(e+E63*W0LOAO at rJ-2zW+ckIGQ5L6<$MI7;
zt3QC7eJ5Ytgc`x>R}{YKR#%hT2X11(%FEGmzJG||OhLJz4RHDr0do%4eIeV(SGD}C
zAKZ7)Yrm){0|~b1xHkiz>wZCvIEGMmKhwa3mx0~i9LesF!eS<q at 9{frVU-nq21R&f
zZWsbvVg(zwulRe1a{EHlybQ1A&1ByMyPxTv!4BiEs=PJVEnzBI{!Ln%99ycv^1IdV
z6 at MRb?T5?bzoC`lACoEg{lz+?zDfJ~bBP!E30VDcpLtwcisq0G^!Ld?2PDUj$#Ocq
zZa1I|xOx!+xMUYt{w`SNdQF=(zpN<&BevyUuwleje8!0Y<j~XE7OVwNlU77oy|wdx
z;ZbDc`9mz`6hJ(b=dZt1V8k}seGii7m;1!v`Gu?j81bjicuLtV5{StqMhw(Jil@)J
z%pxCS at cf8!ZZQ36TG4Df(;wc8JFskHGW~;57>(&a#h`0+yhlTI3-A4lRmS4`8|zi#
zOpVR=Bd8R>Y~j6fo$o(U<VW!R--zrueE*YJTl%zdy1*q^A)t%b+Zq4)!38|ZdFUzr
z0qNTE1ppq6CbkOv*W3vyz;hti;n?(;_&MhR at pFbMeonpvKSL(Mw*?D<XCcw)MErUJ
zjcycg)Ez8-T3jxEnq7h)#kIsydM92AzJ~vVJjJCIrqMO&XMXCcln)!k!xs7Qig?gp
zds007AWQBS4=d#Z*=LVyX<-ZBa_=$zu4$%?01&aAKc5Bue24d6ia$s3*HiqtZ9RyC
z^6+er3(M;!>{oQgHw3>*3EnK3gKKPd6e56IYbV44)bs_v0*(uj0NeoFXYd#Pt_ at SV
zrpdt9$#cpl8qY9ZKtIZh(J`YiI2^T!XBa=AFgQ at Os>=`js5JN@{tKfA<{(Q*5!N6P
z!IwKq-v=0?OA)|R0t-Qm&<fj;J4oV=a52Jn6eB$Rsa!^u7(wM?(dhwlmYo(!dSEFG
zHSJ;q5k()D9RwTT15gBuaB}1Q@|Pm|Dky?Bt3VO_XE7*(OR at hADqsL879-uymhNUt
zw?jJ2zCMf|sHXh?VUr#(<^OXj{|9vY;`pQdAJRD~|F1eU at _(_Zb)Vu3H`bgYfC%n=
zNy$SzLYyt-{|e;)13?i$>nE;EiX#870OMj&1(5&u6I1~Xy- at l8Htnnh0!39z{=d;6
z3Jm#wg~v76lK<bRqc69sLTUgEx?sEZ*?iFoGyqx at 4Zz_*4?q(W>JUwYk_6BIU{&(E
zg`T+Q0rz>?bO750dwdmEbaWj6#s6!$W6A{RfD{dJzn~dIbpb;QhPWN$zZYBsV<&xr
zKSKv#5e3iztn*$fn7cLFc32>QQLgKT_=HM;^YhisI)uFE8HAX-WOv%AMLHf|qs@`u
zEEC^Q1 at I|Jg4sI#R=9}B3>pBO?$iL>j9I%C<N!4Q^(}H>tu|IxV~_);24E*4Xd?%H
z<+C3$GN}RB%d;d?QUh6Qc at P=Yz`)#4f8j_Czz!@FeBE9vzK7JnlVV{S{PC-72h_k<
zb9qJyYCzWjG+>F~kMAZDBsFlOcsYg!V8lmuVjx@%;YBB65(Af`Fd8v%0{AtZ4rq-&
zSaiTCtSuHDaF|}(z<6{3G>m|+MF$x2|BWI)f({r at 5P-sqE&s<pk at IEA|2GhzkpHhH
z86eLC5MjYDbus{y9>{=CVRInJfL($N=nIx8aL&Zvf$Jq-s&hWnjS$=Om{hSWT$+ at w
z!asmw)$8$r5UIL)LlN*HUbLjBvlU!$k_DNmt_UbbDd%&1mLX65LYcJz^3=T^*SU_8
zSNSnzs^d+WD)a!A-fKLr^9lz_J-`(qdVu-z^DprE$Rg+gl)%N79-vE3g^<U3TseiQ
z9{+XV_%^^VA+M at ek~+ssr{ThiL95)!Yn76Dpch&@9i=A<><ld>=m7HK!PSxu=#^w>
z0&W3DhI}@djW-Q?Kv8E02Z%3qy#6s>3Vu!8ZD<O1;6Y&YraFhe5+k<BIuh#zE?>ya
z5(}Y2FR)3QJBRDRt{0du5W1xo7%@vC^dp#09HHw4t_6eNO$lDeY+Wx<7bDl6=MKec
z2<ffR3k>`cIDO7+3x&@G!C|2D4Yu^Jw)87VgP-AR(fRxK&T6su7X?goo+O0eYqd&9
zi-bBKG%c|CG{|%$Ha{mEn at b9oqk0tMm)yNP*i5ZG*k=gQ7D}5uy9&RW-2H1}W9qnk
z{JNUraw+vD<wi{hr^!O)WbQp=?xC?3sQgQDK1%N1tyYvb7&1}E57gvS%RUa8{Bkl>
zcK&|oOaqgzW&_aV&kNP$&x0mklbU>!y?@JM at 6o*E?+wj!1Rk%_Qe_*6`=PnBwEg1m
zqp0&A!CH=u%59qbRHuc>L4epXIpIo7zFL5CIRH^T{(g<tYKDNHjlbWhKnOx59QgZT
z;P1zU^7m`BKOy-81psUw!QT%9e_vtp_vj=Ue1k%g7`;8_StktEYOl(wA~5=yTnsjh
z-jdHT82rmt*ikx^`e6)yI5s_{OlR=lxYLf(rBZ(taTQQ{GCCHD(l20%K<NvK=7`co
zpb}V?L^Am8o!T?+#zX1PVM)bA={^)jL+RoCeNS}6!s{2a%2;?kN3U{VJiOjK23|il
zI$p=o6d$io$J&a;-#`0xH2%IlE?$FP|Mw5+vv<xy=xl{vzg!5k#VNwG&ZgIgD%@+`
z59U8z*n5n_8}+LS(tTy#2L3J$Q at W%nk6Nnp!j)8;7rq;OR7$xm?RYkDn&9&dZ1)gR
z=NtGhjIRa5DX}1Iog(o{wfNcs?)rFWaD(>AbO}C-uYHiH7(3HYkKgc-M1$Xkp+S?c
zZHf=T*De7LBtDG6*Y^DkIB at 32;A?NkvNw=lDi~cOUB{L_E-Y=yD?;$0t{<l^2xolg
zeS<5J8EV?5X#c(oxUh>bZEL72gg1U*D1_gIyhkd8CkZrYR|v<(gC3}b%eY>E2h(&s
z$a at A;s67+{g#>uexM%PMZY at K~J!*9g at nE!j2BkPdB1qybLoK`>2VJfB<rPd7hjhzY
z^vk2YTcT^5zWtDpil-J%K`pvkxROU|DCcXcg>Cl?$|;m;;p?#Cr7%32T6mQ?u?GKZ
zlZ6||lX!Bi;CL5^wP6OyYQ?S92LuL%O6eF#4fVmRr%1eryCh-fwsPEO$}|wuMfk(H
zT)p^McLO*AIYKX`1!R2&ay0e9x8o%{a=f0;K#mZNM%*vxTFL{;;CExj#}Xi>KKQU{
zx;}U!T<i>J8vL%44FNf>`+#ScUHYw>$gv4iM2=gL(DlJw;34|plGiNU=rQ!cW*<ti
zbnW`!XT|4&l-;WhMPW4D2pcuDA@#kJL-69ctS%N_JVvi>U_88dV;EjE<lfgu$BXoo
zkIU~)7Mny&n8omJlML^KFF0ZM>T-tp(jrQ~`tbX=b$0g`U at kWZkH9%^k|;+&UGdZ5
z3H*2hbsrKxjr{o0?c65oQg3<dLe46;>#M at -@&Sgv0HW-=U3?XV5HCZr!_>bZXqG7_
z!eJwb^iSR#kN;S=KZR0gMElKiJUkDpx^NEO_Rh%jcWRiI0$&=uE9ArYpm2#B_H2cB
z2HQzIYw at 1zft5n=Y$xK`evx=~jDcq#iH>J=eKK)OEPb+u1sxmDLVmnS>&4|9!ftjG
zcy<->EZ+D<OL<S?+55uqtgcV~6xqPCw*bqU`edRwlP?z1<85<+Wv_T2ShguPwt-oH
zwXvR>Exp{9o{u!)#cy)TEPppXi{sPguNd)+#h7F(5C7hf at l!t+wZ7_nFC8MQ^*!1{
zQ$BP`_pj{QFyuK(|5Ca(ls=f%>EHj?`sr|59r#3nuc>^psh-5SQJwmfK;56e#~I|B
z at 6AT~8$At$T-`-_8rB7Mr^~cs5|*!d<$%6c&1bfUcbBb|_2nX6qSw&|=`ng5n!>s_
z>FMT3U!|whk?tweqMeB`>c7QS|4I6{tp7MY&H9hf)2u&PPqY3%paQ~J<JRBUR{tFN
zzL)iXtfyK3n|hk{Kc}Zz|0J1?TmL(2Ecgu4zh(V>^fc?gSWmP5JUz|&slrOs|0DGG
z+v5HDdb%~zJHM0dW+Gjor<)@EgG`G)i*=*JUEU87s5?V{m-T(9r&-^tdYbh;rKefn
zM466R-!T1M)_1L*W_?%cY1Wsor&(XFOvk7XHf4?(X*i97jovo=uywpB)}vKk at mBou
z&l8ltk)S+~pnO<@^85tlXCx?Zl%Txg%>?65Q2s{j@^r#K5W8H=&#(mL`3cI;NKoD=
zcDd+Z1tbAteFI??qr(E<(I!z}Kc6Qke<MM8AVK-C*yW;s`LW9d{LV;F-Y7wN#p?;i
zAG=)i?~T~yqJMz|<--z`=O-vXBSCqi1mzX4B^ZB#@;9QD=k>%1)viezBmld6^-!Sv
zgk~!f*Ykj7 at wPPdSYsd~ukv=QY63+}I+>Y`w42JLjYB$(r?Mg4QL@%(7orKbu#&;+
z!mKKTgfVPogJ+7?#kw^r`EU6&v7Y&gLH~*Vymn+Q_2;8kWA^766dC-7KB$=eIj*+)
zb6V{FIBL)zf8$z$&*QJegijHQstcc8>9y3K!(;bn^UKxm&keQJpWD%BjP*RA2K`y(
zs3rLP`rnxSS%RYK&euh?)t at V4_vha==+DPTR0}?rBs_l>zhr|?Bc4pcOYuEq_W^6%
zZ$>WAW?tXm^T-hP<l-=Uru-d~-w@}|>9y6L^P~6Yr11V68NWYIG^!=|y!v8P_&kK{
z5cu4Qj5zRVP+R>uHhO<j!uzvza at _umX;@3}xd-i-``ubUBas~fpR42dryPMAtAS4w
zujifcbcoWQpOGEXpXJDiGhcmbt3TIA?@y2L{&bArpHC03CHQ>zd{p?%L3Rjy-bF?%
z`1BH*B7adfNt}j?zc81sJ;nF}_Bok~zh8#i^}W}U?|O$@I?pTFzU%wK^?Z%gkOSYt
z at LLc=9b^>{i}y=n6~{^Wuvf8cm-uav<@`1m-_nE<gcK>F;GXArqIZTc7y3ZF=_nlo
zQGWR(5M@$+rRNv^w|u%qM_J;HSob5oXw+*Hh1kwNW8tFTElC8PV72F$bl{mG=P(RK
z(D~DO*xGylZ_!E!y*IObnbprI_A6g1A5mF>f3WS^h!8ME at Xk2ZqgL|jLwHjvuBC{2
zK%uv~)vfMztABd3e#&?4cKCMUSXTlKAzGN_xDzod0MA7Z5&z|P$IVT0D!Sy9eM}y}
z(fCLY9Ff|1)F3=mp&syL{Rk&$lb^b|4(=v|{nPApN8{WrlrNVnf!^u)u07u4^RsZ*
z;#vr7Jy1Qs5^AR>d6)LsGh8NkritP)h#Zg(G$UVtH+#EhjZ(FqTkVhFVK<@jxq>Fn
z>zCIb!NY_c`V&NH=f5Ht|1#cFn)Vy&Mb{fprGn4Ol;nBrh@){sbY{Jyv>o0KUW5On
z92 at s3ek8O#tOca|LfELl?B;XanV4Gss&F^aOK>GmH~8hkbzJ?td?I2`jd>no;j^CN
z{t)s8>Wui$VY4iX67MYqjW~P*#bkuth}npl#*LUSi^;%^m`4j`1#iSu7Eq>}^a+_R
z`uXq|Q<}^xF;9a-DfEwoZWg>Kcps(|>Z=!0rv<(vaN~JU2mJ1BYF>Y-Uw3)L(~;rZ
zK0=;QO~nh}X3GC!#cvxdYKa}c4W=++M7;J=Tz7dM;1@*HD^qVT at 4F;e at y`ME1?Fdq
zqW+2bNhyEOoFA0T$NX%;O_&TCmK5~jb<EL<XE8_jJ%Kqg`)bJJ^DcL*E6jc4FoU~@
z{c|n$&zS@#;(yTmiu)&5?jIa_Zgra{>sKx(A1!wD{WIb^v3GVMCudd8BDcT3C(yZZ
zT7K3amjv2_F-&dD5CJ!0y^lYN8wi!C at Go!Z)B;Zu*bU(<RZ%!dQS+gG8<(c2{lb^L
zb)I}|-7mUUQJXroouZ1SFg=?^4}d#${!?8dwq2 at I>^Bsm^`bl;m#{`;+n%gV+828B
z<v#0t1l%7t_XVJfJ at F|(zfzg?b4vL=iXZkKVhGfIrD>l5!c-ool~1-$iQF=Q=AVlx
z=`N?F^D~%|U60wPMC>2iu2KJn=h>pijT0-{d3FN;Bu~4Vo at XcE%Y$>Cz4jC)=ITfP
z{^!{RSX{&^4#f8nSOo~>SLE&gc{WMZatP0}`cGnxW<aSL?L3o5m?v;@_xbgbBym=<
zaj4?IB+cfoDvWc9=n9*ZE4KX(`{P;O^Avx&$8~kv!c9W0YN|mUr6mn;&Xvp^iYO>H
zg{|@Z%v|hnZ4}ndOo5x=ZN4B^Vy6YUBp;yM9*M&~H-l;XX6nDK^xtg$deni`44k*M
zK9E|9b}Fj#_y at H@&_%da0E^fC0MU36VhJ?i9}ZtJ91M{68 at vSb8CJ>-Z)kd7Z1Jf4
zW(*9?N5ZPSu4^8YA8I9oyfAjlj#L;q6dhBZBk+ILEF~}k>XkfLXO)d_!8g=}BFqay
z$S~T*R*$RBh?OWTgo7$vGB^%KvC2@|jmdEMM!<7dacy__UPW)PO^JcJf!L_8sGU$P
z9 at W`O)>cJbrj-1MXi`gn0vz|dV2&Z_Q(8uP)SGbF*AtM_&iYUIpqKt=8}uAG=;nzA
z-4!ZpW6&}f4u*G at g+I`rWji?3SwCQqTRg5LM at bb>F)ii;!%aK(6&!OW$J<JdR~T_|
zyx(C681E(ecpY)a%gcGp at uE80cspV(hfeaAA8g}&NRHRDA;Bc~m{ardo*HAk*&J_M
zIo>HWXybV4^MmnTu8;R<YrM0Rtlty{XMv-^_T_TbtN<l2{v>OUD*l2k2rmRGzW~b;
zk(bnh3<b6uzi^wOJsUuB9u5b{=Cw9}bd&(;11HP4t3GeG1rT%9A6I_1P8Za4-RBY}
ziiFAg>;hqO6aWaA4A5cH(t=5pHD8JiZmmBI8&!&73&(I!Bxy>!!gPmkC~H at bN4y$9
z37P)ODuXw}`%kVP!jQ03`2!Dl2C=Fv)PnE9kb`zavC2z?;Y#fC8%SN^doVw~G}@4;
zi-Rjfoy9zvME(zY{#&9hk?(;IHI4pE?#n~Bd^oBYJlFj&dK7%thqS;7GzH*hJMKJ}
zs|p7}>BYh(67L5(WFh`Kn5`~3Feic|^w6}NGSKpdT+)9ySu4R}smd0`51L+8DrpR~
zE<bDcC4s at G!27+*+r*Q#7k=#?bU~|pkP8Whit0%8aS#mlJ7ovg!J-G_M39`p;5kbc
z;HbJ5&>WK<90wSi^Mi7P=al6)%kq3c!(L9+h4}tfS$+YaVlN--%$4Ouvb>oz67mt8
zum?^6w_^Yy0k`$sqz2qtb8QfA-I>7H0Jp}#30-m)0d)HWw at d-I76#lv!V2Jh`~ZQ+
zCjr4uIs`Au4*mxaoS3lxAEJYz|H6yR=zlLR0`~tsCS?C_!SP=E{oge)R{s}NtN)C8
zC;FddhyNTtu>Z}h{x8FEE!OR#+Jt|*nElVdI;F!o(B^jSk4<0~=g{{TIhdpE+E2`R
zj#ksi!O6N^TgsegF>2=IGG_*JO7(hj>1Nyz!RqL1m`h0(+_hnYj+3V_P3#Knx at 5<l
za5+e__Bj|ru$#cFK%Xi&AQ)GYGSEiePcpM9jNzFX=+Hx)-SbJpD9N+k$ylW4d(`U@
zMQb-M=E0Wo1O}!D^N^6OT$rd8t+CkxRwviLXrat(0R)WI!d9b&qj`3TaWI5L+;M1c
z-DiwJwy<Ok at lT8v3Q(~aL!sHiQwdwh4{IS1uZ1^_78vVJnQ94qB-n#KS{O!VpMw)U
zN;WL>qh((w-o}6Y2kLk>W_PK;<rFF@>WW~A_)xwO{f#*Z-$=pdp at enezc7VoO$1RN
zyoXSiOVCmJD`AK=)Y~G#eLo^kdoUpR7^{GSwho(tXtbAD#ngCR>`f4cR9pB4zJ3Q^
zi{(35bi&?jVF2Y1uyzGyLe8bm3HCrEGEK7l+&@6D2gYQQXy1x!uDHiO!mrR7LGq^!
zyEnYkj?%LT3v9h*Vm))i1sjO0wb~41S+tWSuQB<X;nNNYfAfgHR`{Eu^^(8ohU!8|
z-)7&~C_SCOd0<rnO7DuPQ7FB?EPrz;R#E7nv*Ax<GIctCGyS^+gC6psHR!)Ie{;1O
zKHh?_Y~$7Wn~mQl81Kj_H6QO^lfUUcAsir=d}#xS&fn}>nE)VHeP99PAO0rz*XM5*
z;cTl_{wCutE~Ni?{^lJVkG0PqtOC_^aQK_X2c-YU#q57=^EbEPxUPNvrVq%;=<pBW
zZ<>O+4drj at Feik+*#ZVKl)qWSoDlw|wMM$H7WkWo?j$8=@i)IO=h<DG{7sJ8g5*Bl
z5iP{vKK6;fS#pOl2HC>R at mkm?{$^NM3unY@;eVgMxwHiA!(rnI^@RM*yT#$Gg5Yl)
ztYZE+l<f<Dv+Pctzwxn#Q2vMf%{wU9hN3Jwe{<O{7JqZ(8p+>$x7x<v1d76|wfLLg
z#Ci_lZ`L3yE`M|X>xYEDnSv>*1^vx}m6E@?7S)B4`h|;Zl%CGt<Sa=*>D~5P6iV+e
z%ioN^DheI+#D%s&>-<gMFA at y;u2-!=|E2kxJI98P_w5C?@#_4|y`Lu-??bQDe7t{6
z{^pi3;Q)DSz6~HcfAhp=2>^1(%N9WX;cxy1{LOWXYni`kdm9(h|2%)w9XO%(`I}w0
z5_q8R4!Hj29USkq-~V<o`(NAqO=Ho2=pAcSe=}xOEcl1;H*LTihVnNjGAD$;NoP)o
z{$?*&vQYlU10ktFT<(|t=Dk8vau$E{kT|<*lfUV1wjjBW?xKa-<Zm{6jWNg;9PwJ%
zC;lc7*23rWh~Z+4;eVgM88Hg%L)I;XdP4qY`N(iqLGU+cvWgAEQMNDq&2NP|e>0gi
zMDjPwP_9itS#<tp)OQwtbJjA+-|R&A8B>4r#)$B0E&ir4cDhuUn);i)SmJT{n^$21
zdI;>(zQGjL0)O+?XOh3U8`Xu9`n_h at C_SCO>5jb-*HY)Pr=w7Me_8(KL9C+CK at b1L
zHfWu{89O(@pkI2*8uVY9zj^-V at bNx7-8NpGzj=L5g7LlwyUm)~<NY=Hn+I+R2goxY
z+W?~THy_VV0FdXNumJK8fAcrsZ`86{=5Ko6$c6Mj&)?iK^FZ(i$K62S9Sr_v8E{(d
z^EZ92kJbO$=5KOD|7)ASdE&ZQ{SV=9dV;wM<!?GNCxpMrW=;ryb3AiG^fxy`UT6 at P
z`^DdUIh53z#oxRqkXdc=H at BEANbchn(LxN~V4w6ij<6QajMu_G at i%W=Yd}ekp+aD|
z7-RU~=Wiao4(x+_FkzCAzu7v3uZ38U(LU`GR#A^t><fR>7+(wfw7G*KYN!6 at x1p&0
zWt2tdZyx#F;%_bmWlH<BWASV9H=kb<UaiI7<Y1?V at i)gKD=vTY>4O%3gX>kp{BMTR
zi at 7@fH$yGsztZ7Hz#y<>?&x^_H`@T;ne?_%_RIg~zcVF&^Iuda{BAn5cn3h!J#k>~
zcRU`4D2|&J at V|va95>FweJ8qC&f_#~N5r%b6VQK?AE;IOFWfKZ_QTK(`Y6msf1>+s
zMDbDB0kdY)PXz|XHn)t&vAQG(#^}ySt==}sUbs>3lEYp%CBd*?hpA at -A8^`4`Uge$
z<M0NRME*FF;bbMoxf3r}+ZQ9pK2DfT+s66s)y6mtr>laujB�>SsC5=848R9~Pq#
z<4oXxBtpkW at jrqUx9N{F-|)9OO^z4N3&P*()VRJUSHW)GoL5w58}IC^!pA%OP1|_i
zljHS#kYHZFyw4i1$<8z{Z)5mx?2o?<g2Bo;rcplT7!Da?%xA_Oa{!j)rauNxWSG9&
z#=Ur8__!y$VH@`tId1R!3C8_hz#6y7$H!RD*V48<%KR2^etS#bqQi}`-h(N_Sm9hE
z#(G}dvChJoXU;FG6XT>`QGw-G#DgH*uZX at J@%@T^-xc4l=;Ph-%Xz<AJijEIDly9!
zz_00am_!?XNl9pneo0G2pNcVNIAg$HX{Db3U(pvUA0ZUP`;cIu4w0YGZ{;=YFX8tw
zjfaonxAHh=g?=BMc-(+z1J3;xNT62j`IP=#kzxGcVt8^$e<end7XC)MKhZUqJ9B-*
zUy1RU?d4|xO7`*_4SyxwpJ`86x!0-tE9w4BUjv%<?{USUtp9T9&-4^#)+|p5*G+(+
zfa?N!&KPhV&NWH6zRrYz>p9N>tr+|kj;f()@b6+!2es^?K$}eCJfS~W82|#GFq=OZ
z!Xp%}qc;Y9!7 at Erpma#Us-{oay1s;QG`6uf0BzAU3CHsSIxNO>g?&6K7Y)agX^yAE
zZ$KZ$c=o}sEzCa)J|7+x5fhFR1K|_GCcv`|NQ at qC@Xxvx14-<k)zRqxF1vrzb`FO9
zzkmag>%4od_Mf0v;hfi}PppafZ?*bA1RWIcf6Ctfi;e!zW<vJ=9iX$?vtKme|HPH-
ze>C{7MgL9zte(@r$$q>|=3tJtYaN;Mz;>B~^}SuoX3ou(G6zU%yLLQtdhL)oIL^0g
z4ViPg?!#3;w~;F$Rv|l55bm*c65kS at PV0zoKEeUYf1tRddu+|Rg7m$`5hn{Y7=t4|
z7KeuLcKSCGvX$2pwW19`3u4nzMHV=x>~;1WRAlljPLU_MOi|@Vr%xE~#mc8on2V>n
z7{}QOTiDav7=z?j$DxUs`nd6^Sd8HXvxO?6l6a8Po(OB9UAz{)H(E%>87apg?hB3E
zf-9_r9k0b1!}+LKj9~y<h;;rsk*F^+`^)IrSj*Agu8(CCrIJfUHrEvXMRgTBT+}CD
zi2erRm7?l+Z?sDI#$vvKEogCxg%<-aufIa)l^^XXnOa*poz3Q<TpKIO<nD2lZs7EX
z)a3B3MxJ)^<q=honZJ`&xFV~^MIRl8u&hO7*?TCvkY&j%i#zmduzU<go}qwbnvQ0l
ze_}E6Do9fv4c+l;GV-aHg?HFddM>Kqi7`}cbYY0;5Ls)rUdR&kADb}Z&mewABUqan
z`pJXHzn|NyR`~b-ye0YfUjS*zzd!XXU}f>|PvbEW|Nc?}!hhWz7U6F)Jo_GB;DGb*
z-}T at jECPe*{QJw#82pZne}6H-us0T4!%oES91{M0>!rpx4gP)U)5bV${ClEt){8dI
zzasx$Ct|!?p0bVC;NK at FnAavn*1Vd_`LE2sAKpEDp405(Hu(1!5{&!U at z%H#t>=IE
zcW{1TaYz2f{5z09t at 7^^F6N5-hkplJG5FnD=ii<Agz>@U-+?}i at zfsw-p9j%MB^W8
zoqw;@{u})J6Bosrh+600aje%q|Gw(NSnv<w-zU8SzB`0}zmqv3{QGd`gz)eEnG?dl
zdzcf#zdsJKO0Dqk$rwop|NbP=e{J&b&$#uu*7^4**z;QD-#efMIR>47M-#Qnzpqk4
zTWA-rg?-}RZwqT-$K!Fv at DKmKA{c{zKlwtPe_z=-oR<~BV(Ow?n=Z-{^6%Gli>QM9
z`)oI=xGl1J^6xLPtY2gq`S*KRmdCPv<lh^;Y4PuiK$4Sxe*nKG|K7Q4c!w?i{bjL9
zLiqQGkrj=9zj)*!;onDfsTKbHt!E_vek!Vy{QJ0xA^iJzJSO1Z`#h3>@OO@|2!E5|
z`3v*!$70!q^6wMwH~2h at fA>9{VA!p1v4)+9-#H}w`&pfgaT@&l+xHpcwD|YwlM;-x
z>+mS!{44VB9Xp1PcWJ;jUY&p6_)voJ_PE&^ueqH6%KZC<dEw*M?zN3u=ii$q8uyhq
zS>sN$p8w(B|Cjjp+kgaWm49D&0axVzd;UESXvN at nYn^`|+<`DYsQmi_Kp)0<YL9<^
zqCE$4F!=Z1fDUS}{|5iQs$Hy!sBQkeyXb#y*`FKw_v1wWqrpFffB)(+ at ZBN&`)uZf
z at b7OkCxm~0nmHl-`@PHw;orZ5n5$O!_q_8-@>}}%=ln#2waLG)b?I|0`S*cnpqBaf
zacIHLzqb%$D2pDGb)WR_$Az`9>K;NVMhpAIzfWr$I)=yMweS!B9+Q8+=6s!h&p0QX
zmlgbb7nEze+psJl|Ni265mk_Xufr;)i7G<W|K#5{xKQ>~WEuJQ#VosnW&6m#=Ra-n
z?}vfaBLBV&tcc0K`_2vTu*JV?VhM-v?_VR!#=j47Y%Vje;Zb)fcWitaRtUDcD}2sJ
zk%36x3%cbZ0YkcO*|=-L(U?~*bj!qFwi1}`EM}34!%^#u%Xk#O&pClP{@3*q*e|*?
zhwnvXdID!m9Z)Z+cwAC_$KAUd!;Ewa4A}>DE=}?zYZp}gVA$Ish;7DFnj-q}Q4+4G
zn=1_MwGuJOy;8B&VcwL<R)>qI^zBBra`@`fT3M|pW7&_)RQz2l at nT!~R=bh84&SG=
ztTf+ftCY-ZsJL1?9i`XPM8W8BX@$3m;(y;c5lzFCLBX9p$BKp}Kx}RTl`#KT?wCus
z*{<oBsQ6P9e-FgUU+O(c2{dYbbv<b>>+xs0T^?s!hwluw$19^;vkQarI*<QirC^}O
zO&-#-K)=o-(N!KW)>v>=J;13mZc+%;ZGC at zq*I;l0A_{5PuJX{_67O4{7hVTi<zr?
zO))wV=x{N9q-%k2GLZfS_1&&*4j-<0z^vDuei!+{@woG2KJNVJx+Px~wRoK3PF;q@
z?u^!XzXfmoFc~A<`C-i8Qune-*i?!D-pRPHtgWNuZrB8RvSx?ef1!7HEbr+RS9Oea
zwsp7jIC1sIb%&!XuHPKKYw;aSmAk`KIS=cwF$bNFv}idCcYmx<N`ArJA3I=LSaewV
zak1=y7Zz%?!U54a9x&4H13B?*++}0J$c+o5a7BC(4}S at edn7<UEsY8ggh}V^as<d(
z0|}6&q1T`sTYi?bf6kia=CvOY_n-jBxDn&roxH{EYOCLaqNwl!^58$k-40jbIDEGV
zXN#@aQLst`B(4M`Isy{M>X7INNXT0<mPknKgxzwHquh2sp18LG7aOPuyRPtV1FlsG
z4>V<i$B}16fya0Y9+ygZtnx*Lhi!p4vF#%kNVdM;-D;He at gEpfhOZC8qJXgIt*?sP
zXd%s2F%5467FX%3;)J-XqCt5JIS<k9uh7>8nz6y*@SI3ETsF>v!-*0Ozn4UXgKb?L
z)4w*?#X!PhsJ<@l5Y8G{7oSUG{_FL1aa!DUQNR3{iSizgu=Oxot_L(>gF~I{NI3K#
zYr$bFHYc`BgXnOut%vk}HC+$Sz%Db|dKgX^jMmo!+??ck2;yz5hg<aZkhAaWVU~mg
znh|jDsDpuXaMzL2ZY1tcX at dqm>M1(TfqnFl%3#3`qOQ*93Gmob4YYhakt3dqp@|Eg
zZaq(Y9?!>F&(8wU2OC(=+0*g7t5VqIv%a#GcrMqULDS%{>FFG<JqGziu(kLs7c+n?
zgow}3mV+H7<ujaiyN8SWK(&kiMXF(BW^k3L1^vt~EyD#*J4s>84qk#^eP0SY|7 at jX
z7EYJjwzy&4o*w)P#p3<pup8w2|HiNWzQ~8WsK^H~W#o%`VDHb{DsM+U*bl)cVbW{h
z2b6oAu=i&>x9IKoM70uspuDehp#1(y{remDgnZ9Q5#L{>f8SFyFTdx_w3!}ti_Pek
z7srgnwNgMHndbE|N8vPayY at PKzEmz_{rZ^qxu$5Q4y+2Yh93kvyaJ?P<C90@{uo|?
znIY#r*8MTx6s}_h8Sbq4mjt}o>A2|1+fvDzui!ol^dy501nJrvttGdQi$(F6&n^m#
zn~&1$pij(NF-VT2>W- at tBM{>{(LSzu+^Zbd!yKSKuHSID*ZQ~sd*E>G>(k}9GC8h{
z at Ns=o^Ko at D#x;co_{MylWsK_yCiHQ+4&b=<oEC3ff7X0lAEV=9zAm(ns}m=W^Yt7P
z`nc`@5;{=xb#mNsoh%NU8m+^6#<<ql-6$U8AUUr8GNF%a(O8bll;hOS{?gZBepbBs
z5|S7aez?#^t1|(|>W_cQLo}Uvx!R_?k++&&7C2T!UV-)<^On)i!pIw_&1c>`%)Xg7
zTzi*!(*QYnMB_Y9vY*iPjJt3~rUl>OThb$e(E11*1OJ74R<y#|VWab}f+af-BA!uo
z$KWK!R%=DF5_GA&6Nfj}utzv-ZpUrSd*Nn=qu4`wRILnNkF;#{rFec2Y*qX7RI9CN
zw^y&Nw`^^FW42Y4ur1Zr*05@}bsRC2KCX^P%W>_-!5J5tS_ at lSCseboyKQZ~X|^>Z
zVO#H<V!`n1+o}h{-)(Ij3p5z&HNmL~!re4lcI2Ht;_bt+uA)?Ocl1gW at ix~Y{)KyF
zpuQEsQ&137=po*CR8%c$h*8Jk3Evnih90kub({#uBPhnOaqS(s+5#O;YX$ktkMLcI
z@=8njN`1aEBl;^`M{?r at I;=gF)GYbz2co~cgbN|i;X}Nq-4y+m*X1jd_{v4%6`gD|
z4+UM+Vn`;k_L8WptBrSZ2xGEA)8*nucw{<CA3<dv{|&&jgEGWD+(FjvACrNXS{X0>
zCSL;4dXjjjT)fi`ucRBVY!O-E5cK_wY;6?U)tyDk8|sN*S57 at n7ZRKfAD4<GI=?+>
zZ&lERM{NmH1Ci>Ivo3h at Cez_0*cN#a_0>Zr7>bU5NHhYV;waY8cHbczN!Mm0CB$L4
z&0H&F&0k~Pxc%*M*SksZ_Cr3dD at _Y-MVWR9->Qphjkk38iZ}k?8)xth(J=g2p2Y at b
zuX-tgGe(?JFR6zDQCZ2xwu=AObepWKv$GW_z(Czupb;0OIsqTCAOP=fX$l;!)8=D!
zfHm3T at I8&S1&TJ+iT^;~;Z%YsE%ygUV=`cPJJ9GDv}0BxY}6X<KtKvv1xYDU&rPzP
zrmUy0QBMKt>5Y0ip`K<NPR6nfG}_Zz|JJNiT(TwVneXsjAnS3mo*RvN2BMy!dOaOp
zKS~S=?_p5pSOopd0kx17v|$CpZ<qrbjtWK_9T_G&;ym8!h^#E6BfLr+RYV622h`zg
zQBSjtfUf`s1|;ht9|X1nfWd%x|267~2^f$Vt!&4^n;cfj+_ruC;gb7eJYbMNX_fbJ
zS79gkJEaB5(@>72{zMjRwY}(J6zTc%?D_M=Cq7nZeD|Wgd_!b;slEINtWbkL((Atl
z<-rS(ukFg*TQ$-0AC|sUZuRTDo^Eyb%mOqCf2u!wV4W)3C3qJRO5FY~5Wn7#?NM*Y
z<bCylf^@~T%;8HSF{xgJJS82!I7J`~Qq%JTlw%pU3ac04)DF(a-NMRL4oD-Vrgl=4
zK&MP)L8n~i@%#flu?cc1%n4kYTY3DwTH(w=)rFb)t`+&}vV2F^CFHx%k{28R-RXb8
zryg~&2eXI1c|f>eg|*VAH7AY6M-nilWggHp*@ewLYNaP at snP*JC at N~Ibil{Oj(exz
z2Q2IaF_R#4FlmCmk+mwQ70$}2OB)om)?+>DQr;vQRx9 at fYdsggVi@Y at Zr2`fBdmyQ
zNG+4Kx-Ius%^<M3C at PN!m`mm=imKT}!Ejmc%<<WJ{h;ji*woUp+wO9^ZgggNucyP@
zc2?k50I|_H<;vVHKx(nu(G{25F87|Oh+&DnPkvB)>^Q!SEljm=Chki<+5?H_9iSNj
zn6r@}WX9H07oruXyJU1mlEcT#J>9A{6XQuL?}YX2E*a}=mE<T*6(hui^Ax?GSKg_!
zAd?g9d>z!txCalH<-6v4(|nK=biwPQ5|8>DBmj!KMp0L5zZ}C;7F#Ph$WxT}$Z=97
z<T=hvhi at b)S&a1tV;(rI7%@jZJaW`If^udp5aMGJxx})yr;iO^8kFLqqPB&YN!&cW
zP|l>|{#NX}SR-T8Fq3KqpG(GNpkuQfr7iFTa0DL*IOII#6P8 at L*!Y=l|4{UOryJAZ
zaqUqYUB4!i;w#4B$*ZSpM~QwQ1?ac*WbIMz06|h!<hcJG3?C1i0mr?0cwg0W7O{O&
zJ;9d*aEeiiRRvFaG?(u$5MzV%I9J~(9BKx)3pR<jwSWVc0El+6s59AxH0>e4T(=7V
z$zNKgE+{-PKWjx!l^b|b^yLb)h6mY~Zg}XdR?XVnG6;JpE1rVb^MPBEOZKLX?3BB0
zeyXGNOMFoZ4Zv at p(H&Ei^a&Sbqo9t%_dPPyZH^B;XYC!5r+UuW%a4PLk!zht$byGq
zr?zf&xx3^CNLnt+R)5174zF~pV;fa^)SxG8R`M6_ti>f8D$%Ip&b#nE(m9LNB_*@c
z^8F3Z&sQ6^b^SJCbMOWf<tz%`4B#5)p&i(rk#7Jy at Q{ElR93-Dkc~-|=Pza%HJpnq
zbWGib?)W`t?Pl+Hi{3Y6 at 2&1nB)&KNQ+o-7f5%3R^M#`;4JTJ?8{+plSE7WtzcWNs
z;2SY9igx%rNlE at r%`xe|?c#u4t95IdoCK0b@%JUJTC3GRB{`{h4EN=GLjKYtT{*pp
zk^;4nLE!0>EA(`Wl)!Z7+w4K$NoSef6A)>@uUHe1U!^GOlk$ZH2nLqUHym%x&RM=y
zah$f0UF)qt$&aqJ-Rfw}lW<21o*zA(y at 4p}e%6lUt4~&-P7*CR8e at 6#JO3m--{<7n
zKR>mOC;-(cyX1k|j0K8+XaTTFE;ue6g5or911hY-;aeoIMPF($%H3*3`C<9~VL1FN
zyxraYVbDg6%T!$Diux<|*q1!)8hX^d+SH@=R$*fuuVk%e?Zt{~-neFhsVL&o#^d;@
zs#aPy`rUkW6DmXyj*7y!-0ErqIM?H9<8=56(6HNo6Pg&6>2_7137n_g#%!WW>m{4O
zp`j^RTKMtb1RwMGZ@}J9#V!_DZ>u96I}J)OWh<g^U6$*1t at SolFjHlC0hJ2GurUL`
zojPdfHG^&#SvU;yx5}8Ft!~F at -xJj0b-&X|7^ltmITzydBxQkwF~pDpoI~7>@v8+0
z$v@=H#DB$@zrN_e3~p}%qWrWW6A8;69sp2XqZKz3a7%Rux>N!>?cM4|1<*k)UY7^p
zRse2y$)2=Pi$4<0;FEm$$ufT8aaE4{%;VZp1X>7v7?yz#3m16&IKDkDr_<|pBPle9
znM%o?`i{Hi0X%w5Yqb<vQ}d~!Y6GT@`==6ywuAU(K4auS)Ht?1>INQg*<7E!wKIhj
zMPFO$&|Kvs3|pr-3KRwKZfw9?0K4euy;b<SwN~#tRH|<SHx#Mde1q8#L={&yB~laH
zV4hM^>2Tb=pbkn(Dw7?)T&D1H=~?3C?>IejL4%Tz%N^TZ+kRLw`mArmh+gc#T2g>c
zGm^Z`xPhNVpE;-ua8la$DD?OTJ4YKTW{>)_$F<&jia~Gs+X;5*d#p0SE-58*(zKUY
zrE7KJkNKtRq(XWEDg}!6WNpw?y~=?K=3}T{--%)MO-6l;euvt4!!qhxkGdSb=S99e
zxom{+WdsC}%y6i*HQ7|3erPPOZ(hH={&@p}P1z$kZJaJh!wNhqE>Q36EYL<nNM;-f
zFenNx61+F*a{qvI?Lr5DSGvmK+qn~aS8eX}1kM at RwVsZ5d4xPF0QRI%y5pGi1UmFX
zx!bkc;kzG2x?KHqQV+vGQu)ffH*rm0r;x67jfPI0JTI=P$C?_B16HVBaW6dS5X|oQ
zlX*5TL)$x)SwE&K$-jAAIV1ZkAo~KhfCtl(@lw$$oa3&o-oreua|=^pKY)5R;k&AI
zck*09k=-dBg<YqVw00&#a)xB^Gz=-vF{P<<f;>5cQw6F*Cm~QPFTp;_DJ!2M`hhAi
z3y#tTz*E7KB?{(yMt&z`afV6}oC%PQm?06 at Lr#v3$mE=X9|c*Rvs}yM*<+sN3*;HD
zA2>JwvDdUf6FH6M*&aNMNEFa)!c!Qysa<0pB977mP9pb$*nf<xo=ZiV67-`WXL+zY
zWt8gL@|Pm|TG$ZmTI-V_%eeo at y;a(U*ng6 at pA+nPf|b71mcAh at Z6V|ke5|N at dcamC
z18X<}6{jJSsMx35Zs^!}>?_ze{>kFdrPT}9+d{4uoVUgJ<v&LjY)L2v at vXsAPF2n}
zEYa_vVNe1s7U75U=k}*Mx!MO}t$6z?ek{D<Sa=l>YkT~;Sa=F3=rR(ZV&Tbk=LRjk
zYzOEzaldu)V#Rgr$o?L at 6S&a6?%b}0-oq5vF<f_fSa&crQe1nz?SY>?)P2G70wN4Y
z<BJ8(AB~=RG3Q>MDbt<B=yI?>7NewNJ?cWS?zlq-DiE6t*S^gIDnteNu5h8hi=a%}
zqu<<5Z!}0w$^nYntc?UKUkv)#;p-)6l3t)mdL=0-y|9ZtI2W+ at M+1P%Nsj!0Ha&sK
z&Mo*Agb~LLDm|Tp_o$P_3kt}QfuZEcQU&D5K%E at P208=Vu3ZnrL0mA9<Vc6JB{{+t
z6p$lqK_^FW+)a`dV at dOj66bTEOD<4b0fCmO1iC1S|6cti*jEEQd=Y07(4 at oX5ad{2
zaulDE)dW$pCtv*~U)@-Kq(Lv{<E#dOvd-HpUt&9|4_y_+um=4=RNL$bfofa2vnm9M
z;s%LwltrT8ar_6J1%zPf>xf=F3c_?n`Ao3DcML?_%ZFG3T!l3p2^0$r?5ujIQn
zqdkNFJ4#W(4#IRud$tiFg%pUR=J{EhbxOY|!=&=hKrNkBAb-b%6Ojy|UHU at zsM9X}
z(ddtoc9ByEdp0n&+3AS3>e#%F0QLAm!I^XnY000>i3R+{XV^jnZyM*q=d8p}63Lcd
z1hBur6M>xZF%re)XBzkkM@=97Fk0GB(kqxZ(kq=UYR;Qyl7|+(!t?7X`N=YVqPSL$
z`%IaJrC)?U;LC+Y(<bWlW#LT1HiNMBc60mt3p!9K*#)Yl8vrAy7IM7#vOa at qS!uA3
z=M#E1s^v63V+&w22=aCt&)iILAZWKikjb6+0|x3*N9QWjkkF|XMe(?PkyMKS8Ns{=
zYX at Jq)(V#K1G!u1enzTg9T738mdU^q^1MNWSwXe9St6*GuZhEXM!$<J4+T?lB6ud?
z_}I*ip>;}@G>hm}L?61K52RVrb(*CZJr-z$G)pTMVnAigge(=O+xyO?d_Z9X6!JiQ
zS$y%jU=S=C1eHj7rZf6z(KFw0<+{pk^bB{6PR~q3A#0qd*Z8O?5>!(2iAH at 5Ip!$z
z%;6&6=j8Ekqi3dzY at HUnV=gfUS_>s<^2Bx$bIQ5If!SLpX?klfZseTGql6^QyFhw^
z4gr7JN6;~wu}jjmVfB(>LV>g8Lu3lM2hU{^e8Y2A<-0a`Pte!Bn~TTIO(kfGlDX+h
z@*KQSxWQdgkzBYiI9iety^=smaH#|#iLM$l(WDPvz+><e=1F?Upc_^pOVAD5kRUD&
zgT%Xps)Rro-H^=*PXpbcIk?t*VgZv>LRSa!S*%#~JCC|a>&4|L^7TVFc(<S%R*`PN
z8^35Nhe^8Oi!i!jJjjNwO0WT52i5R4s0O at U{&GZ51=X<aSWpdDK>wpP#l|$KhU+2f
zFw#S9=}T?tu1FL9A at ssN@$VNt7s0>Z4Jlcd9PD|WfA4mb!N30)&cENQFJq}U!D$+c
ze-{XIpZIr|*q%E7-mvw4@$Zwv`1hfT&cC;g;NO1+J6V3Xi649F+#t73Bn$s%J#n<h
zW8ps#=<%(5b-jrmUw5nD>pVOxbA28hx)Ki*f`{KIdHAnP9{vH at 26*@%qVVtzd`vu8
zAHN}ZQ1I|w1P|XUIuG9pOWDGGn8Oer9uiN3hsSQ_wvNWbd;9|n1P{->>06FX_zC_D
z7Jer1RT2KG$_+b6J0Cx_uEdK5A8(@|ye^9 at 5v=?Ila;?ye)R>vg4Ol7Md0U)%8dCk
z8F`5irC>y|@tXi4lZ|gLYcUX_E*f#%|0BU at Lx{`xjKKpp2sU0IM4gQv`in$}Z)3!W
ztD2CFpITo>i2q)UO2gQAKN|u<d?=NNl%0*=Vj{$TOc5c97^!M3Ha>eN`y7jnKMTEx
z$;LNBVKg?rrHP-=1q<J8z|suGcM}9G1pmGWg{*5}JpTPFfxsg9_vIo#f;;pP0zf at 6
z`S+gek(@7!e+Pq0{(b6tJO4f}_&JYo;s(LL-vbG92>&ki8h|4aHN_f4+&CWHuFZ%7
zkF?--{rxa)YqgE%l3{oFp5nWd0!$Jgr9eeF`dl1ct^#mT3q)Qd`%eBC{CjK6zb8<)
z1K$s2<C8}gg|YEpQO*iJJ{=0#hN6Lbg{d&j1YNWSh$pYAsWT6xmj2MwnbtX3Qyz6E
z&xb<*c>K+d(vH}cI*)%elEHf6JpL0vWu|<YhBLkKn!!Jy`SMAWpPBd>ZwLRBpV;|*
zFyaz#|4YZ)D**%>1*79_64+sQ+vNAN)3_xJ*=<yQ|EUx??H0fP11HzU?_ZQG@%E`<
zc>5-aw+AB|c>5%s+ZT8{q^AOJU(f`2`?)&6+kLT34P2cB_TNbFg;>EzA8pHLx_a{W
z_D=BpZ3Zj;)RS9ry<p(%NVxdj|CouslLV8yR$B;r4IzGS4(e;IrXFEn?{f|T_8ucP
zqK>^UcGeVoORiR&tRcd8MHjvceJ9xf5~W{?v(u8kH-Nmj8uItHReSbJ{*LAyzRS^e
z90B}Sdqo>9^Ht5ArMd5btsJzM;AAT?r_h~c;PcLE88LVxj-qB#_#s%-u`#$Qg~wWQ
z8pxX`GPK^Yr0~SxF{JRVdEVLacjX>2wwlP{=gChJ%i+<<NI`siK*+ at 4x67&`Fu1t%
z!G^(G609~1E(Gzd1d7#OS{sJJLs;5KLHstX7$A%`+Bls5;TU`saT753vfX>aF!%*5
z5iIROqBUahSH#QFFnD{XcJo%e6%&Eqf=<Ll;5||Jf9!n;d{ou-e*y_a#J*5b<AO$w
zHBr<=Q4<kOAb~eJ(I}u)MX?H^s32q%MIbN}<@uZ%ty=2RQf;es#j1!Pkgx?@0T<j5
zT!8lsOGJgp`u~2<eQ)N?WRgLfw*LBWKFZv8?|FAQ_uRAHbMH$ez~lY!1JIGE96y{@
zw&aITb*dcFnjAl at 1v!35Vmbb{WVa&6 at 5Z``$no4*KYZgVuN+@&*NYrK6MnFXnbv}B
zP{zWiZa=XDXch5U4PvmudD+bW4o`O_)Y1?rp6EWFMzJ{_DV!+Gg!6r0v#fLbvJ6U1
z*E1gY&==gC8u*7jHC|Za(1_S&5qZdcTKif26KBW1fh at 6O*CEl&r>s@)jsKggzIAyR
zCJln<qw?@Rh-R-m?75wbSF8RgP98 at 5-(B$nB;q?s{NJ7F|K70+{%@>DSMr?!GullT
zdeRrfrCaxZQzvNV|4t+eC*B8Hs2skX9f$90h_q4;-^m?ahwt^x9KJ1EvHq~~rN_H{
z+tZOnu|&6TYrD{N`yzJ58pEXp+d+1r`*!=0axjtGS6VlefSie*xNhIIWOVpMNdmX;
zzL1A|<?lVFNr|gA^Y?OpI+?$B`Zl6S`FkNKo5~XjO4_%MpxjB`87n9wF5ioyF5g<t
z5`4<^MfL)<)4)ya^8F+-sgB9(m5;9Aq?Nl`d|+=##SxdU$VDzK*WbHltCEX9!r%L>
zdgY(-_g(=6Mf|;kRei2-jQD#mB#n54V{bl#Pc--U4zi37y~43Yf3KjKIQ|H<BmUkY
zaD}@Vb^X0EXAq7r!9)<*%P)$Fzn7m<Qo^x;LV-N#b!0jIUJ`hWzqda^cwN~T at i|BO
zFc5w4`g^Cz>x{;OOSce(iDV=8lu at Pf=iZJ!MCD=!R at ahTv_ZD4Zb)l#k^W(?Kexfz
zpOyga=DVNYC6kMlvQ}im9A|EHfBM4 at IAM1Sd!jQ}eZ~h4+(4%FOe4?0A=+uZD-V at j
zOSxDBB+-kzIdEjd6^<Xb1Vqufq&*t)!C=&<iWhftWpTMVlpbd5%xv1bfe)D;qS9|N
z9a8C9rk_;lmskU9XS{_kxG6O-*}h82Pw at iRroamfA9bw!9DxkG8vn$}Px^;Ne$GWA
zf&6UQo{ac`*Ze>lY{{M!KX5t8G)8_hI17e-#1Fh<i;|x+;^e2}2j&3=NY6ib{lFAm
z5zANX$xUgHo)>%v>Dd_z)|HsL$F}V2Nna6{PG(PXH^7bOiZv)(*hD_vjM$VXI5uVF
zCfbx6BQD_{DXvk8n- at XZo{+A)b2yWnk|p?cUBYXa7k<QXvdc=0bqNaq?2#z|%p|Zk
zs>``(AvUlpo2wH3dA`BT)W!ppRF#^%o2ky*iS|>;^SE!ycep7-T|<R;#aNi|eA2+&
zNHz)4T8teax`#dTv~~aR`;8(B_R2pT-9GjBhZ*BF60Ju~%x3=Kn^YT+oNE%AnE80!
zk(|eH9I=u!+ubbn1bTs2V3DgpulC=%k`s|!k&RN?K13aZy;gB8 at f9UVJiDbtsCUOy
z1$un|&=yS0f{4G#YiHJMR`S&K6YoX5*I at NZayv6oyw~H{KaZH1`>UE<Ng8n!KL{YN
zB)x;rpeol<?3$U12CXxfD`85ciLW at Zr738nFunU5$I{#%27!xhH{|PVwgq8&%_haj
zxDa%B`$V3~Swk^4yHK)Ho^}#=F*X&Q$3%Uleg!aRDMU=(NJrYEBVKEB8QX%Gm#D9G
zAiWkgNsn>(wj)=cL0_VB^*Ov3D_1G!Au|~Fb+1!tjkKi9HfQG*$1fuGnv&PobBqc0
zORtmsQ2Z`o4i|tMyVk;fX%}`*%_L&S_3-^URnj>`frTV#jeJKLplgs%LHl<xKwU?2
z2 at WEO3wR-foGyW2uL-YG`=&3cxE#pcTD%V4iUS3Ke0v<2HRNMi=&Q;zxc0EXIIY&V
zT_xX_is_~27KaZiL`hJ7=a;5RV<p-H3n7ki at Nu=Z99b}5PheH(KJNtLhYPJAP*cMz
zZWtFQ*j^8z=FAgbT%uk)j4vL<7ZFi=8NwAa4*=*masGnLR$Ikc(m)h$2;qiU83zHb
ze-uuShZ|0~;Z`x>j*r4s#KVmu+$d`-;o3*x2F1gTCEQr676Y at nKTJIi{mY-KeDQA}
z3uA$^9tkf_H}i$3kQuc<9Z&dRWZD`{Ue~YP6DYC=M)Bn4k3*K|ArB(aY?oK7W=Ln^
z{pg5adk~ivXle~XxgYIHJ9kT3LfPhTAUVd0GP{5j=kade at U_xLM(;rWOw<=2%{Cnc
z&_^zU{}Cu^c)VGUMIX6*XL^cN*8qLw_Ki_}Bn{34S2t<rNgo=Qj$(6|#FrP;E{LpG
zzAu7 at S*5(V0?$~ZDW2zlH9UeHp at N2p9cka}+d1a>$F~3fTYWzkKiHb;lLgfbhiVW>
zn|_*;#<xDx^PF at R(ub+Ec0b7FM0b81T8TUh{e{zyK2+6LjQ74gNTquq{fUzXze|7H
zNgsxEos;G^*-I)d?bNhT{{jSNu)nN7=)BAN$2n=%f1{IT{Z~3^);~a{Tdn^pPyI(b
z at 3Q_woiywJg_CCesZN^pe|Mntt=0P5d+J}H;44}GY$wh7pL5cz|IbdE_1~}3t=4~|
z1J5hCu5r at ck-o%9BfKcR+(~yux>%*9PFeR3-i1G){BQ at B^&RA-Szjk7&H8pxy~mue
zK2h~?0FtzlsJ^!xSk_nXq*>oAC(Zhv_0%^_rCX>EF=5)=3~&p37bK;$2ZmAQ@(;$0
zIpwR8l+Q_0{%Df&@kz=DCn at ihq`X^_@?Gnaj6X^FoFwIswp^Y`{Eu(BT;^wRlJZ_j
z%DW{g-?g^I at k{?!wOlU!o0Fvc(In;Llavo`xm^0!tL1X(U$-RXyS{31{PO;)B;|8j
zE|>m2+H$$nKR!wM;3Va}l9YE#QoifUB;!v~J|{`}qlwB(27p@~?dL^@J8?$O9GQzi
zm2BO>g%qnQk8t#Ma~$@-_f+=Vvp-Z;oOfOo*x*C_UN(JIa#bIKl~(I{pIK+13Erk8
z;BvevivbsKjM_&?>%!OEN}gzVRrno2=(nT%mHzzh+&1dZQ(v^$pL<Z`#!)+iYOz1<
z+p0f at wA`OPpYMHt#+=he__+&>wlH5Ke?))2^tDlcwy$ZiKdVu+xAWD%t@?9a%l$e3
zNAzcb-bVQOcy){TnTMji#m^~i)t_@(?$1d-qCb!K+bjH>pOpX1`pko${difExR4%4
z_NDOr43;}iN-neSLx#kI3p4vu!wbTPBK&9nw(8GuiTksEe1F=t-k)IKHp0(Cs}kZT
zi0l~rj7CN)`1!W1jr!9maeu!3G_F5iAfuK3T-8?nxee_^_+gZOu8Qx^g{}AJ-O at I~
z&)1(M?9aQ%j+w9d$Y=#WecGx&mn7~_pZNZq+<Jdr?9)d0dHv&r_<0f8G5C258Hw=|
z?=Qk#FIk?rNbKMsDAHK38$EKYH{m8^m_-IQ*t$yKWFQ at Pm1Hfj{vq{?|G?~M7H8nT
zIeqE^dHzZD{ia!c?f$9ye(9<2AhUNy``(>{wOvtV)EVOFU#*S*wU)>K5%C)xe>klg
z_e`h6G~krCf{&K#zc5mN$pH0<b8})oRnpG56o<EUS+yT>mtbhNZVt}!6 at 6M6-EXfP
z72Okf2v8^utR)z=R}JqYPEVBA at u~`hDGbJe=}#*URr~doderyNcWsvQ-D13(sotdq
zYxlzYB1h=g1*BF at e|E$D5&xu<A9$kSwW!`3odFkr*iPYj!dp;xJuWr1*RFKxjhQXS
zzp0y%`6S6jYx}3>^9wZT&gZ|P{>lI1`j7I|-x1;QzwQY4j#*sDtK_ at jxs1<6%jl8;
zp5Swg$bZgt_<+1P_^wIdf9Mcf|CfAjrT(RH at c(EL-g|$_yPo?Nv5XLki0$QL<yNFM
zJT1%?Lq6G%-{LcN`;71Xd0&(l;X`vctdXLJJEKo^+T>^XfUAh)z9L-iynn$)ToF2(
zHnP^`mwp_y>%psKj9P at p`13yZr`ARMQ6t;onl&7^<_*NfxPN|00AF?(lv$4ZoDRn!
zS}X<}aFaWAaOICbb%%BBdt8>_qS(f$JQx><WO4%zCnYkt3%Bq4ZmH41XI!4)Gj2rX
z3&mzscO_tAic|DCjaW$dn}`FMJX4in)uCQ=eP3b6{G<rBuFw&!OJ{UutybL=(DqRL
zBkzM9kDeu`TUiTC+a)-Fj0l0Z^t!ca4NrORSgg~vemHlIs|}2|8ftL({@j(=u4uO+
zvL0S#75LLUGZWl^OS*1RlhNqU<7Bi)BU)&POvX1pW0!7x3tW~L;cIyNF*DqQ{zh%`
zlQJ1wwd#Xp!>wIe!5*D=YT%3$of3=y<S+JaQvF3=Rvss(E!GgbdD#8Uz;xjM`5C%#
z4$ttyE)QRSdWOH~+sdxKJe;lqx^Prui$C>y>obgjv!MCFww!IyyKs}G?5LL;<KY3g
z0W(m>8OZe<lZdhuop%fK&z*-XIjC;+kXms5oB?*3a@&6zm at 0a%o9%qzkq8Bs5#iE7
z4TI3CPe&d0#rVhZFK~Vy)912k{AswB5A)NAtJg3;?Hlfk%nwQyV}2U-aCcsEmtt1}
z9CP%<`<SE4mtl?~zI at KR=<^r*@Fjy;QZXm(qLP6SA-vKJ>*pFw*-1F^=EoH)GG$ml
z#cKWFdIX=b)t~pZ+-1Osb!YvIzE;-G4&)SkQn1u#cJzl!yJVE-eRqENOgK)`y5LaV
z#Os0S2?ufkp%SohqjQcmcsY^XIR{|}fva?*9DC8 at F>!<ANj at qsW=HY8S~t4pSg%VJ
zU2*iH4#83llO6mS at 5r)C%aQelLbN`ygyP9h3h12U$G12B=rrFDa`!(#JgK7}imVG@
zcL`7PYkfb|>%MH?aF>qzAJq_KGOb5|VNP*I!(Y5pqLxhfFy0rKVqc)9r0aW_k~iM=
zPDw<*g%4PoO8!_;Sb4j;@BufCgnK=OOu6@=k<1Ky8G?}ajnwJOf507X>fVPfdeIqU
z&f*;j;n6@`<h~JKQ6sJZ4<9g8YCbRkPt}Bs6kNCF5s6?XRqP`^pwRHR;`?5Lap)yN
zBF6tge)|J3-ZH;^_#L<O$MV|?@aDgV-+r<jgmd4U5q>N3_z!#1o72m!$o!}2rH9n~
z)9EF;dj7A;gSUa>czJN!TWui^a-^33pgj2fJD{QSUiUJes60^X+aErr_pWr_?}=-0
zf*XeG=J_z|BIn`cR09=-!2S)ohhO5}p}NY`bu-gn^qa!KCd$r1k#I|`I=C;mOK{<E
z+?(W)pzizgiotxW4#4|7k?n|1t}j;7-T6R~Ka3Az)HC)4_0$(<JHNTkZ$5wh#t`m2
zo^)(SFtYa6D{pX3UzLly7V{Yh9Zo-BH7{hu2cf8JRHadJrFZ!XktDc51d+B2A)!li
z8vO>}8HZ4^F&Q`zdOV^saQ-s(LpujI;M+sRxT>N~xNWoV?8rxozQ8R|Tl_`sobT*V
zxx=l6sFW9$=sm~bQ#+#>##yvY3q6J2fQ?Xs^W#??arr5Bh4E<2*ZIw%<$Cb*Mm_Hx
zh*0gGBE(TCdy0Wle&a?6OXvGS^D(!vgRX&!7#Z{eHRv<HOfu-g9nnEYKDU(Qd&7I6
z%IJBoBjO+8=WASdwPNB*jyap-%~j*QpNBv=-j6W^jQ4zJyjrW{y%se`#*6Aa<6W^d
ze!Ru2JmdYH8t?UABpGkn_8&jqV_O(+KF3?A#yf+7yc};QHQtMz at g5W%ulkY_g!uL}
zecK8p%W);^(g{aLMKEq1Ym{&37(Bj=o7RkqEWM~Hu%62d?RgMVw<I1RXMgHJNN<IZ
zai1qa$SFTW5fb?T^H2YtcrkIJE1bN<E)XXN0)e1`D;%605yeRYny<zJkLrIIHma0i
zGYX9k2YfFlkg0`+vv%Wf^}QTqnin<MBN2Y3=qJ(ln3 at 8X{URc|s8_XA9z>W~Yvm)L
z+lgL=3x_ipl4iVauar8g$eE}Zhp;Uo`OiyTl8?JtLC$L;T6jm^5^UfOFxO_i2kS-b
z)K@@1kq?lZMylcmEzXlORe%ro@`1Ot>Gy-DEG8kveLwgsb$$VH-&Z5nHdqf<bq#pb
zxJ-LIa2%N*l;b`}RX$RcmjfH#@=DzAC-2{)%FhB;yydrJQl)&ND#!g@(ek8tI~W)e
zyshOTbwAwFowPx`UBCp!2D}w~M!YQr>U0AaMGl8o6E>u)54ZH4o%aG?mFMj|KYVpI
zZrs{a+0CD~8zGLo0~*{N*2cMuh&(<C25}27go+>c!rH$F25XY`{}psl`hTal{{u+`
z?Ei~QsQ%x(>R-`+b74#UuivZwUxW at y|MR^4U%&_U|A1)!zX5j=x?S3q_<v(TOa0FR
zo$^2{#O5~ZrHwGR7ceRlIhdnu)?>{1Gec031J1h5s$tGFjG8&c%$dNPYNwuJxDu?+
z&IeqI>3Qt{PZ at 8+1WS@tL1R*zJek(>EU*dwL4R5Xa~+a(4csYo2k`ERF&S2S^jkNh
zU(X%$33>NosxW%$d|xVv6!FQ|;Xuz$t@<!5DSvoKrd@)BYUP|{tyq7a at 3sKyB>hVZ
zwUHM1^_EBrTig~7BJYxM;5M<=$6=iv*TUwHIffQms6fRshCrl+N0YX&sxEd6&$iaW
zb8ZXGzfD54+aWNP*l&|a_Nkbr1lg}8hQ3yyIkou1?9RvRE)!W!ryM_75|kGeKw^jm
zNg)`G9jjQ&Curv{fKq?!T;haWlb`4KnmB}z^r+yW&yi;xC8+Zj&{5fIBC9x!Rm^Oy
zi-R~xG1Ug1#oHx#TgdmjIqXDC?O~K3$=W|ene2lY3nWZkrKy(B&4t1q#x?#>+9w~*
zVDW8MC(H90+FkSFtHoWq#08e#m9k>wGqn3k)@tiKWJPtS1oq99jsFq*=2sX-8`w9u
z9HQ)-m6)zrRe$ITkEZ9?H!rMAqUoKxIf174v$b!&02Rd!It2z?ynXX2&SJJ|)D7Ac
z9rVxIzS;6x{CI2d-Qvi29s8zpvhfbZ6|$}oySL;0dD=Ih&yGjPJva{(L5O4D9Qu9|
z0_eXXije==H+B$={pW4p*x+q#YTrEhDhcVo-o9CmqmONG-;9_^<o!GBn}UBy|DS%P
zrT(|IeRD6^b=%uF4KrHme~f+e-kNy(W<GOb?3?M#iLr0~$ebAaraQDTSGoMB?3<&}
zZ?Ao`zwqw1v~TKOc3V*P&GNS?9a^wHev*B2MO+K_wAR8;vTt_16g!6U)>`=Qw{O0H
z7uEX13&crM`=+;`F2(|(ee)+)aS^NdDfZ2kcw6k7uF{E^+G*dEu=b|uE!j7p9U8T7
z9_ym)o8w at 1OUx}IL#%Eua%|peqxQ`tSurv8&5g)v)xHUS`5&=w`u?L$?3;f3Df?y{
zkR7Y)AG64#={fez@})^My%Ap|(DZ(`_D#EHgRX*ZA5m|e{hOUjk_>w6=g~p$t-k*s
z*}wTER!!_AS1j<1*RgN9CmV0|njb&jpQnA3itT||gq%O$gAm8Q=~<tI0LHA2BIJMe
z&Hn-WW*_jjHnne-JVQeIueWc$0lR2>`^J2l$oqHLHy8X%`v1mLE%m>x?VA_Co!Z{M
z*|)|1$JjUDy&G at ee8HR;`(_z)V(go_%!#pY{Lsc+<?^4hZ~FY*)!ezMgYOB~k$1PH
zee?N~ZVSr3`KFdFw55GBF|LK at TWjGb**D$dTDYOL7XJI~n|4pZe0cRQoY$oG&2OHF
zHx*?6X5QaX#m%hZr`R`>@V3}DJ){#}LnJ`^=1SI{g|fu^H at klkwQuI9Df{Len5+@|
zrq|!%I~}!e{wymd#=iM2vRbuo9{J!uV&4q=Yn#|N6H}Faa}cVF)$|U){%}OqckCOk
z?^d at mOoVv5uKkFn_p`Ncjsg|M4m#xx&!8Rq=CEXgo{Au9chEm;`{v}w<HuW!6&jgj
z$G-8;OESrSefP(Y_vdNf9Qjy0Le750gAm8QxpZz4g#2zr6d at 6+|6hDsOYv*}`S`TF
z*V@>=vHnCt`meWdy3GDp*f&rAk;waZ*f%#prnS9&*6?Uc{cmggW;u?vwY`0Fe2e{$
zv2VJ<%@Z4+){Z$b_D$pBc>Crv=ET at H*Fzg~mCJw1zPaiVYI4!|wEiN at +S0yBjkKWb
zn=aBqTiQ2&de|L<YT+G`KP|NIlkA&baV>;fYvI4&zB%eqm=7QQo>)(6-%Nfe-c%6#
zX7wYe;z3sNQ|y~R<885T21qBG**B9|dm+ja+c$@|i`q9|Y{O^O5TAA(4Eu<EGx!hj
zosQZ!bwbZE_RVw1YSq4}T^hA-#x^^DGn^-}_vZY~aL at UhQNKVyU~nPsY;F1c%^g!=
z-|(<AzYg%z&)@9%7DpHn%6B at dlXEw{c0CQF&^d{Nc)#6v9HwhG*7Khw!?f$`O0+J{
zsho!x+Kw9^Ur3_=J-DPz^}qOYIk)YDZt#r4eDnur6cU`<NN`5s2ZS|8&Z!{4*mEr7
zI8c{D!8qqIQU<V~>;N1?$8j4D`!Caz4EvAu(P2mIp5tnGK8Qy_aXuRX#i@<{q7*II
zkwNZB&g1+Ahpc3r+X1}SXE6%A<3!lBXPmtsbjRr)x~hRHAF+3^G0Aa$`h1dc&Rm>e
zoJr0f$)~3hj2BVdk at Gl<-Sbw*sqy0Qf}FQHw$-yI{76P*UQwNAyca$YKi=ZMd&c{s
z8gJ)h<6X2UI^Kvmb67(U_Z-5HJ!ghE^~iafuiP_N49dqG<3NUt`J`6I97ZI0<U9s9
zr%|P6+?U)RKkh+Kdd59Yjl0KlN#^;@h0$>*qvvZF+n!*4D>&9c>TFRbcdU0|$}m<O
zE|IaG-s)KE!1E&Wi|S;YJXcf^Jy%3V5Pz<SXE|CwSM=?U*5m4CBf!43xH~gRT;5fP
z8E@(RdYo%I9wE{0xug`H62Q5nccf2M7&8uI;9QdWP|54|6VjJx{xsB0_>t0v<R?A1
z at -)_$ocnl{%*Q=<^AKl+=RW$7-N0spPw@|6e{H(o_2Ipw$T)lOb)4kD_;DVI- at fpk
zCmM>mi_o`}JLi?0^F}8COWyM9-SbM$d8S=)<(2MvCFeZT`@p96{Q)2*X&<75=cQl(
zM9Y)nbrUcsc&+Ej85ggkNR!0tGfW6xPrdS~sJ#VNH9Q07lz1tIQG0H<N4CpPc&@1y
z2$`R$8+xN|;*JbM$2}R1fv<QPgJ+tu{dwv at lWwT9O*qz6SwkErG8+d0(NUcy>3AMT
zhh;qSEnRm!28o8_$&QSt*9%~$ZD&7XSH^GP#)+rz;XwF=YbX4M=X};J7)bK-S-su<
z at 9>^)+Q!LY|Igw;6rFcz)BY3n1}386w=GS?6MNPFVd$XX|50!M&vW}fp9$6fo50rF
z&i-}rf4uZR5&l=B|B>@qU7_vUv$v`oC>q<WcFehVo5}%wZ?hU<T-hU=R1SpHHtRFy
z40P%NJKtu#$(-Y{;#qSAkBwXck1NfQiue;-M-xg;I(<cXGYbrqe=VNax*$y5KWY)z
z{f%O<1&jC)Fbz5FbT$&Im1mN*Vr{<LnQLzIg- at +Q12~?Z?@O)Y6!}wYbwe$5o(cN}
z*iJdmgcXt7%Q#L++CmsDs4*yuxR;EfHu0IT38+}c at OY#Je7m`IOj*arwXox_#8L|_
zeCoE4%Hu{dhL at 7IuoR-wJBC+VYvBx3EMvHWEzHCTdHzk*4NxS{gdIiE*F5{(#Mzf5
z&hCgR6I61cWV1c|B|IwDN$OJoi6Ndz3Xz)>;&noR1xBsJz<H3%fv{sM=T1>Zt*87%
zln+F?)mh5a>d~s#adKj6(n70{XT5w^vnm*j`Ab%@^v-5w_*h`Ct#_mB+2&<0qU>Xq
z-ODmC0r^XazM&u=*O0#$V9|qS1Gm63bq<;xY$-$j&#*KjhW!0Te5bVP(@+IDMw5`R
z81kBAt+v)8OY}cB;ofqB`!jaG`X9017h_i1z<$361_SN)TTq>{-&Z{nW50if$0YXq
zj>nQH{vXVYD*h3J=cn)A{LAh4>p*s~_Ph14Ywtwu_nc(I{_K_Lu#?$4{}KCr@*VCt
zBlbIN*LeH=vOg!8-X=su|JeQ6|A_s5Uv>O=vmf$|*RkL4o|a_1>7MaM$oc1Nzdsa;
zA9vv&JmYrk_m}>ZWZa!!PB70c_ at n-3zr*t5^)0Zqa6JI7Z?WwEyY~CRkG8S>o;8^i
z`TxEB{yD^oYwxzX{r*xFar|$!-wQnB`RDIfaqY*3i5y5G`?0O<_j at 4@-1+$D`|sNC
z$4mbcO+;JU at 85u}x4r#7VnR#!kFnnez<CgBzxQTNjQyU^oEZE4aOT9=@12<wW4}KH
zt)xxt_j|`v<&WC$B~vK|+tPkN2`$K?Q}%lb8fatt{jJ;GF(~_e&hI&f7Od-^WWSGy
zYhhe#E&L?=eV at 1%idt*ofA;%Iy9N9G<?)XFK74GvEi0GBJb-e`FJ(#X_wR3ORt4?%
z3t7cJ&8w&Vej3X*-qP$n+V6+3Y&pw*qW%8B7g78D*B>hT{d1Ti5&QkUTjLv!+V6$3
z&|~cPV~~}|e(!~VZ1?`lf8+jp2lT!T?DuW&Df|5u%#gC*ZwSZO?>FKxiT(b`?~*9~
z2O=cgHSi(^&(GL?e+pz5Yrl`Z+qHM1_Ip~gVITfvbl5*j`+fe+?l at ihy%>smy#0RW
zeMzRb at QDQD{5kHwufV-wZfJ?R<aPR8p7A>N`}OxG8E at I&qT`K_^Uv9S|F|-K+)E74
zxE=fb{+cA?_Ww0H?qu}*Kl}Z^$$tL<LZD6e-v^B*MgD(pzt=&mxb|Y3+wb3vB90T8
zjsLR!_b#6C{PXs&Yrh{a1NnE@?>Cvz`S|Di at 7nJpMz%B&ZEe3Vhd66{`~B$~+5bfN
zkFnqHhpifGzfWdPjQu`}IWhM8<;;n(-~G&qvEM(2XSq%6_vJTG<&WC$M~WD1OZ$B!
zTJYHKYo at fh{k~sh49b3g6iu|P{r>dzE|ydam$ufzPqN>AaV;F&S_}WP-&?fbzrVq;
z-=7>FZ_A4P{yxgByQM6t{eJ3*W>wIBzmHY;npaQz{brV((7cTH`z0*v!m^pz0O#M2
z+<$+6Mbv)(!xCk`9|=<=V!wC2F22K2`+ck|k{J7aD6%~E`!H>DZS)&8JM>8#o<tOa
z=i3#boT<pbP2ctXijhDpK)-x^YeDP6PcHP!#{c<x__drW7BLjWdhbL=HiUAfFvonx
zDM9>Vk)?(HicEj_gqaVfr&Ntk>8RbgvkSsVXCRRMs?zEdf2wuXo;7Z~9WHsAx|yMf
zA-t4=4 at xZ*L*Lr}S`K(%8bWOl-jvN&N6GF`&oQ}LD4o&DMhA75{g`as?ArvuLIu at x
zOtBVvgOQaHh(bNMsIy+wJx8m)4zm;KarMT^{dM!DoEkKZPzD{}JbFr|SRur7OrQzj
z|N5kb#GB_c9W}h9Dr+@(cpp^Dcv3v;@8J2A==0Pk at qBdj`AInb?fs+AgI>mS`{;8n
zE{?FjMGy+>Gu!KCf9#1Zt2|l{?>BF1x{Am3o7ui1e@>wmdW+F2{G?aW{D3{L82z(W
zUPJ%JLiePC@|-xI3qfY9p9(<?`Xy+D-}~SvLn;?^KsqhQ7sjj;y_wdnQhR+lzLYDU
z>jq_{KQIoR2=|(RA9Zv=4l$_n3mtt$TeZ+toR4t&Ws_)kO~5xr7UP>DeH+USsfFJF
zLw&p$;)CDQ at LD2Y6^R&L_@;<UAIp5poA?PI70<616>7m_5p(Fzn;-Li4X4AmBRG}4
z_8Yh76#9DlbMR at Aeej)0z33Y))DiC?6#4>$LYIKfyKvB%NW+>@XBbxM!S(pI$PWlz
zoVZWJp`4FI=SY_XEJpc2sht2EIo}((a2URo6Ty*u;VgZ^Z4_S$A;&3%jHpV85M0CV
zB4i<!5e}!serDy6hLcr%bzYs1pA~8LofSw)A5i2=ZS)ltI^S8*fds?>-kziTdg4<%
zTBwU0=GdZz$`JJkOk4s?^adslaWK&vm{4Egct>GkJK~}zY7Iw5;&&B35GZTlT6e_B
z8aioJ;R8*1 at X>o{b9`)qspaBh3nl{uGHzl*e0T_C#sdimB;VmDJ|h8roQ|N)c={kN
zDu|0g4pkh?2y9XX18;$gD;=shvQ?_sx1pPwhgRqU&3N!|#?{U7aP!zG9weMToc_BB
z3Gv{ei>L2zOS%|BTnu;U;z&6R0=l?C9TvFGp^M{MrHhUY2iGK|hxv*g(1ZsMCtuYZ
z4-;;Q;^96;4^NLzhzAcnJodXEOAluw?lTcRj3N%kI`mM$^+|d#01bM$$)SgWpH2^T
z3J+*T at ZdMDhD^h^l=Pls at O>6s+>qioe&xtC#9t3<vKyNy1xnEqMC5`y4#*j0{rVn=
zhweYHpcpF#S%}=rvhKrLBGf3x?RJvy*IJ)lNg+BW+y2C at r@Xor-&@%ZueUMZejdNh
zx{)~ld_7o))qiWF51;GEw0rCT>IuJ$VW)uq6Mh|d$%mpM`M(!gRRz(b&J*DKB>dXv
zZKwzIYVSlnF8 at Y5l?W}Cc5ZUo`AVu){2k?&<qT2pU*f#~CPGm??-ObA{*})AFG=%`
zd;kWr{YIlFJeePkxgDRC0&~xfd_Lwttae|~ZY>l7=ZhR0c!_h)F!g)50Kn3-A&~wK
zrtSJIU?-2|*PZc2=PYMla9#js1$bt_b6&t#^g-Y&R*>b(TYP at FGCz}F=sg0T=0y;#
zA3e$97f~{;UPF|%i4RNSv7B8LiCB)(eETbzHNh*tFuphAYQhL)Tt|7wwTNqp<9dJt
zbjJ0~t^a~?p^uQU)=-2G(~8dKxU%BM)lG=^M~$nGJFXcFz;};Doa~P4VJ4h$75xjx
z6~4T+anZ7O<<MTv*KBlL=Ib2qxcYGNIA4Ee!Wq{j2#GeQLubBT9^Bfvs(<{rI=JKd
z%zKRD4;&=N^#l{nxR!$Hd;B<Uv%Z{ht-7qWalMRjVLg(E=3Ddc09!5Li3&_zCi9A|
z=a|=Pn<uZrdWd-iSeX&HA=VwtJBGEn?~bxYGw)z<SjD1Y7o_}F0SJfg;C>5dOorWs
zQ0hbiu{8^(0RQ4oR^+0u9zFb<OUc~vbsq4j^qaYl>4!oNwGT?C`X&y)Si>HH+1!S&
zi|@uUGq7Sm^+lt}z7A>C>fc&B2f<dYYEN6Q2KKJ4=RIwG5NT^-(zXuvv~|N?wsj~a
zlryg0NUL$}gg|N)o7S_JL~(fJUbc0or>*BAZOu*ER*9#r_wg0ty_v6XJ#8HVF&KMl
zf>UD;f%Hp|-Ta$A0^JF8l>qwA#Fgj*O<KfXyh{W1t+aoIf)<?~0x?ypmKs{9qt#O#
zQU at YnlC(k{g8m4)F+5g#Z&F*h*Q`t7pSkHG&UG`8BNWK*336Uy5Ymxac;Q|n0jKQX
zBNGF^LqZ7m>c{$a4@}tPGYTY!AfE_`qqaqug5zp&JrjAmsnn%gzZk^&#^pn&E7m1b
zt9}rb`OOiKv{z-xcg$_pZjQs3wa4VTK;I}JD3wPGOoPDm1W2X}(kNN+=m~v^Y^wv>
zbq<R(baoPUUrs%^3)z_#BB>~)^V*Ad?XipSXkEe75TwcqzOs+m6ghBW7b34&eI1Yq
z1Mu~E at Hm8_?a=LD-Tm at zX(ZG7<wVCFhVPJD>8$yEP?pa;GsmOwZp576bEO&f7L-}5
z at nol?S{KT}uRwf9h&hCihH;K19}84^CEpMJ^_`e#v$&A1moE59w9e<EW!n9<_$D-5
zW%#$0hQZ<6dFw>@fV?>PgOb4ia7S$Y>-gMC{Y&HEUq}dFa&e5WZ_)-G5+%mbSBMN~
zu;Eb78qRoqD2Fr8KZ-&llv69o1zMhhu$JOtI=Zz|m#ANRz4|>e4O4^sgO60d7xY!X
zORrVGB`2#TX`w!LN;e;gG?|G-$3HedO;T(g?n8XLeh{D8dJ0!&(T7^-WoD at FaQjW1
zX!m1XOhaCI-uJ$`T^;dpbnUnOG%kayGJJJwJDwZvej=%4^#$~U)kF0T6xvThr5{#P
z-g5%nhg;$I at R=9szM_>{sEDS3dC_or at UtYismfpUy%xF}4|pLXfKRrcB}awVSr4O5
z)b|RtmqEUw#aienyzlXcEXdZ24uhXjPP3WmUsk89(PO0iPCWlOxO@%{*v{r}IKAOw
z%sw6q)#F;{QJ2Rk^mM$<sjHB;OJOPDL8`#JOPs>)C`4<y_`zH=$%gTtv at nyuV1ulx
z)C4Oj&LBU7`^KpOH9hITsNc$*L1qd-O7$XzcP(@~?Fck|IBNBqujNeR3ji6;OyQ__
zz(<f%v{%yChJXQ7N?6?_jDd+Z`M*OD at E=>KK%0>=r8K9HUbIRJb!G!W*t{u$gY7;0
zMdn`*62Aa|(VtS<^OV3QPI|dH5~qLHTbs^@x>sZcKJuAo)8N9#bLabwb=ErMW76hp
zGf at 8-eKG?xL$&axj=Ts+52p{q5BONAu9ZP!D$S{|PCI~IMe7nc6UrIFuA>Bclfu0f
zLXCX*5dHSS)f#Nlv^!VQY791|f?~yfq#g<Txq6d4!4&2jgHYGvw00>Gsd=_uq;j>;
zw$7^EA+rF4uARDWAVkEJ^UzlK?wl(2f=Z5j=N5LAZrq(SikT*yZf|R$%nYO>c{-YN
zUg9y>&8|Cmad9S~?#~&EH?7xLH at uxQ!6o^3wtjp_O2~>P_hf%Cqin=)Y!U`hnlskg
zTCRFDEv`q|Y_Z1e5qu|$ogS$?)gyVy$dBnxw0U%FDk~_OuZ6<=G&Y*&+b%}l8^DDk
zjH(JavPL*vsg3Ij^oF~0rhB?#a}pwXsw?u6bDxikmYI0RXI_j&k?%84k3|g21Tl{}
zh>-?VZ>F#}tNcXFOF3(#VSbMIrJQ9>C*bMMm+9kF?c?-D6{_CIORXX1Lunp}X><_7
zw_U`{?jJ!+4ZCuobmjgW@&IWTm~C{sG62qfQW3k-ol6afQH822@)D>9+_u6yQ6wYO
z(}a4gNo*jVbXX!7I>hNBYjsISDHqnvbFoUp&*WrF&(NSb3aj^-oJ>BOnR?Od;LtRD
z(UQum04d+E;L+=O#cTu_S$qMGXYUM}eZ<pKVXXjVb7g{lq!ME>I0P5*D69U8RN+Jw
zSYf9;&7HT`WFh;Fzc>rJM~)9mH6QJm;Cm%V7b0yvH<T|bU}_y6eT{ASi#9`503TH&
z8<lDe=JLV|3b))+DXLc>&a|XjXE-3sI4HE19{~}12&0yR9FXY_NNxnAmN^9Zj>`ZI
z)i at wvl1@X at T#)4s$S4N{-^q4Bs$7ug9FPhJ1ancZg{IIv#i)ibm;9Fv1_=sATzv~l
zqxW0rFhX^`sB=zbxgJc*NwxP!G30<RI3YJh3*8SaA*mzT4lV#Bha;IH$xT(hqD at +8
zGg?7D82=mg?_p*`v_jAF1?#i at Mex>Z)qkg*9aKUpjs1EO<W3$+$);78I>nT4AgxNs
zNWh5TENaxMQ(27pPC+x)<=hDZ)@lK39Vri(Y4p)!LbT^fowSg8lxO45^+)>53B`~w
z<>4EPttua-j8^@;I1Hd3lpC9<AyltNhD-3c03<@}_%O276E8IrByZ52C4wY}sR#*!
zc+0E5(yFiFlEtVfeRR`ZC4SuX14`wp5CKzkcTOfosfCKAk`gSUR2SM`^feY4^NlFQ
z8gJ_cpir at _tl;8o-RNsYmL?Pl=JRi{qH(+p<$z2sgR}vOIm)^YY{C8>eiSut=7b>%
zKSQh`y5J|YhI+fBV^u#Q9v2`>&$BS(Vl8wYmwvEmh!(n5rLwi^RiqFDvVH_){V*VK
zv(*l@`HB{5)sLY%VkLAfsuD%*3osmOOFz|Gf8^Q|0OR&2+tK8fD}d^6zh`$AXWMzw
z6 at -CkGrCN<U&!4q0|kno9b+3p&Q6pUtgw1;NdnojQXl}_$v~DY6VM%c`Gxfer`IjS
zOcCDx9`xY)34 at D^?dhrqL+mGzfd4<W+^}%JP;hsK7Mux;7wjqCx;U+}lX*soQ8*7s
zNx^fw%3qXfuXH|RSeelo+uQZ+g6p7oe9GlEqw5(ZQ at R$~@8H32UIs-WI6qZ4wv`(n
z2DhWmQ(5QIt at Bx>R$^rEN}`ml^PL(s)|deod%NHlsg*!RR}Hm6Kdi{G|3OMdjc72Y
z#+NXxpH}08SdXj`dk--+@@|fwR^zLfGC%xcxvIu*%8g|*>K8e4d(^0lTtr4jT@=Nm
zGwLGZP)7ZcjGCS{>7!HQm@|G_Z7Ha_Uiv?Ta>lkrZlj-Nt5tK3LCqqJ!0=uKQj
z*~U_TI8D=2ziD_l321Hv)II|GTZyrvU{6W#i>4BzDOjIzp4mC|e4}&w(xR24H<CB!
z<6G?Ev?4uqoBc<uiDck~QSfei0iG2Fe*`X at 662eK6*9_|!TB6z5q1K4rIZ%EK6<0E
zqC8xBK#HFFy4?++!WJE!z-2hNYe}pA5H!pMR0x{&aOE4wZ^FIGpt at U6mhIY8qRr?y
z#TC4+#0R^y-^crLoMTBJ#W_OHfg)t(|Anqf at D{&0RCvqZTnLH{e>jlcFwY<Ui!w+-
zS)(Xc2GQVnlpG4ZqckBqm<D)03p<3aG00xe{<{o3!ap2MdX%-nVgE`+iQywuBEUlY
z#%}8(jL_Z}H3^@a^o^I#bwXdcNjCzy_K6??z*HWjo8#5Xn=HGx5=%W$229w!0Z1_*
zJf6Ezo5JU$e)|_0lf8%H5%w4dVqc9G!D{WB at ut<Tui|7e6M+p)jIBmZMo%9#&`?el
z-nH7JTg~Pz at G8MaDe%q$PIF=<de|J6-&e47%<oJTSKXe|CnYejVZVq0cpsLLV*pYp
zTq6^=u|%d;3_#*R69jIu)*_z<VAZ(Hl)!5ZrIA|vtfffI$Y?E3v{1{RJhfE5hILwM
zb*6TJF$vRm<w0|Dor}eT;XDW(-TEQXXtnBx1q9w0g`G|P6f&n0nKRIEGX!bX!<|=_
zsaIw at uZa2|O#I5J&MVW^D^r|T#CWN|E6OXkz&^WwG~LUS9^*+byD$Rdt`7TXPx)|9
z`u!-Z{XsMxSsB#J?YpA|_FbN|=LLHr@}ufzjp}a`gqt~?D*B#j`S>>qAm!oo@;~w9
zS4aD;(^EZ#&`X{26Hwk?H+BHV`a59Y*P2_5iY~Pu#%x8aQ|-au2j at ap-Mj@VRXsL!
z?Es)ezgQ53m1ovpGQel-9N1rnlR`I-fYMxfQq*5$_SD0DsApI9&`l&<{rYH9Nztmn
zXFl^VcsM_)Jcj!^Xm7Qi_ZbyYI~5Q$4j~6#X;>-kvBc8{>92eLj?Z{6vK!JK{RwV>
zkN65OJ=_8Lp+Bz?o8#%U-9pEbs~KB-2KdGI{=6-|qR+I at KfsRkaA#=Rb=u at pNj|tD
zv3fNWvzghT(SnTyOTo;`O~#6$quj90 at Q2UI^c$UgP`pEr2|H_7Zo-Y?H+o|v*po6~
zXu;(NFF{I5$zqh??zQhLD}3R;ndRX!z`XAI{ZJF^#3t0Hn`0YsM+Cwc at RICsK^v*1
zY|hq=(NLUj!!571fw%mI#X*HjQ?q^a7^R}m{=5cXcwnZUx}YIP at C7ShH&51$QRovK
zVQxM2I)23J&C#e~Y^LAr4H|>>wk7Zu;;m9eHLE~{RLr#M at fch6*2>pPwHcjCr)Z*`
zJ#TD<e&#=U_pnmKfBNo*KdJWStN}B{-$aHR8eMa&<BGYqyXG*`Ds_<_F3z at 9KtmPU
zha$XKH5SB!YK&j6Kx19dSZ3LjE^JJz&g1Nuw=_jY08IFbV2mulg15iHKgy261;)~k
za at 25;4+M-$;B*5w{pD at 7rk~B8bcX4x`HU+tIU_-i3$r{{&oJEomkFb~+~`tbY&p-o
zEVJo+<FYPI{_rJPzTlTl<#`{KroLUC_hxWi6HzqzT8vaT(sJ<3t!v};5~w at pnrU6n
zHPZGkDf(vg208-m-T+hm^P8Rg26WPI&NByeYC6vtprLX-%V(_cL0j_Yy_34zm$%)m
zUdOnQhQ?#;fVOkKnRCebM$W-S+eUA)yK~G~AGN94<U5eoUnSb{*B)0y>ssF>y787?
zw>I4#qmUCKx*_cQrIrMnGRB-$vb7d7`xWxaC|+Ui?kUq|49LkWopNC&3fsYR%sivE
zulCA-4!ei-GX|vYwvRy`_)0m{1mO0<%rav>@N}SyrwcKZZ++0u%JY_&r7kJYd!r<{
zrim?TlfUL378qd$vwX(#QXmc+<E6&@62y1<%(VTnCGtz)tE8xQw5?+yLFT<~zlhgL
z%}yXULn}4?C+{S^?X<h2Bc*1hv9-+TQfdy!-&tl1DA;MQM7B`ofc)K1c?T5iwij|3
z>@UVriZ1sx2XxrU(d at J@W|v&&91vHhYyEJQ^5^M5o_z-1gHRg`^U~_tlMJxf<);^v
zq^AV;q*i9by;>pZc9mVL0iAw4p0HaI=8sl3e?iSKFUL$Nx!7owNM+-Fu+6+h<ea*(
zXeQ=p4>?u_+`C$ko2}9-U(q5hG!yG^7H76#D|Ir?GsxTrDO|NbRz=;H*?O;$SRXfI
zLe^WyL1IVB!WF5&>p~x#NdgOZR^8Y88Y}dIWpr)TebI5!7gZN^e>C!}P5J`X?`HS;
z>t8aJx<I?HR+~{vHZyrNo2MH<Xg|0xBV5|e>p5`Np?N18^aU5CmVpsS|Fk>L!$`pI
z;k43IeQ?RCK7FXyS^Fa5wO|4GG~!-69;3SCJZi_N9;rtQJzC(?o?lg3)Sv~!Kvbz=
z6|C6yVac{_CB_Fu?~eX;!);NNw_R)BjyalPyOVwpR6jvf&x3!#MRmgiivQI$WZUa7
zn+{*s6&@4<Zn;)<2a^(+kRLyIo159Lf5z(R>4VLSdlmkzqdoZzQ;@0FzsT#0BeC+6
zHl$>d33twc4`{<o2s`d%T at 9vnOfFDMZTCq`qXf<akU2X_jPDRSKQE;gid#9>h~GS(
zA>53Mt_3OMR`*(e-q#F+x#u}hC3ml?KOp;_w21F$UE05T9BNX2T?of)KIz7YOg(&k
zPUN0i-e_(et`{uPudN+wbi6*?8Pd}KKKcqXdeZh$s4(!cY_Fkzd at 2d<1k1Vw6jrbi
z=~O?YbXVVN$N28c;eWn4i_Y7ykpBg`+w0MyOQ!>Jx*B~U85gBO7IoH*i at wthge*?l
zMa)#*q#G9Gc2`8HkIC?D+ki)?5ohbmx9fTH`4H~>J}SfY)XVj}C1A$jZ&}FqZCi_#
z)=m$nU8sk<P9|jDGF5yS!yyBA_>C>xUHk+cmc~_sfqSS26Xzad at Xv&qv~VVJu|i_x
z6$4~c|2=)@Se*X9fQHfY;F^xudg>}2Yr8Q_cE)fJ`qyA!6WkxZ9XOv8!TDSl=MCK>
z>!EpneZhsPzDYZYZ!NS7Bs>c&ETv#8?_PY9<|PKe-usO;zHJ-vZ*&IukZ1-3be(qw
z2pKa2TJ<P!GWg0k3j@)hjhGcYa~DX<!`6HOXqy292-(Eh*1S!y6ea)K)1fgl&pwU<
z0uU%{_}r>PzNp*ABKz0yy$L^1>&<7Z)Mq{Yl=_P-KG9FHv1j5AdZ=<7Ry$pLe!f1-
zf$SvO>N%W!63Y(JR=@BSZ9p(BX-;XYqeqCQnhvnCf~^JE%kAh7mv-sw&)W#qq)Um}
zFQYtsX0B1%B?F6c;!wSM<Aeis<7*7n&#fI?iu}Q;N;85<8MsV0_VpWd;v#k;Rz0Gh
zdoH|B{F^9>74*AvPK)SwzSPAHlbm&ByaTtW+*oWE0szWi^~Q-l!4|hEsFAI+4wrX3
z=QNluf1*A!`XT+*C<dU*^sDoSdldWX*0pOeB6Nhf2pNND6joOm0eqVckLWX_FN-|K
z%Ratr`_OL)^t%fo(EFUi84`Jp$?VocHl*<(g(f^5a~huTd%{`j_td^D4gWq9bP4{b
z-W!Q`N8&U9B4d%L8H63PVcI8e;{OH1w1zsojt^XX0(LlNc`9Cd9T_W!X*-r7^8=*k
zBd<>DQVdmpS>OfTyqA^h=A<mAjbn&oozgg^O5bOGa80Vd?L&R}*ZL{<js+h$X7%)p
zKTtM@<xw{#$@^h>AN`5#+=rO7pV+zi?A#<asheH&`biYo{G0TJbP%$c{i8PF?cxw%
zBhp1fURQc~#ULs<dk)BXp4(Er9(|?*{97l3K*GJgc^2tMkS^F`t?dEZkNTEt+le`s
z%RpyrIU^ir|1@?81{L=A!Ed1|QYQ(8Ai<R4XpYK)4WNa#Lo}3|6Yzky9>#;uydn$s
zrWRVsb!Cpg!$vK1FdpC?0~j3byzijgydHtQEZRq28VI-*fgbknFksM)ZuZXC5&fMd
zn?)CanCREcnmYu=RzE%l&&)}w94?lRc^kTjrE(JKkEW0b^U%DlSP!35fhCGVW$)0V
z)f*3PjcHONpUm5`0hbS$z+F;3!qTj at L>XHM{86nppIHWzbbK+aKc~u-mHQ#HLi#rY
z;3&;TDJoJW`BFlBORd~;xW}zk3w0HIbkDKdNuS4|uYD?jtxQ_-`@xb|6%Xbc<~a1Q
z4=PqAs^UIw#bmFi5e#S1uF;JKdx}z0ls*DK9;z;@0PfwYoj$jds>h at 1GPi0ZxHV@L
zIDMvo_yi9!X&0lTeq*hD8mjl16M>0-6_{&PtIzDGI{Xa4Q3_1-Q?;T*)q0;>D|fA`
z at j$1<4L)PF{W{pZ%b#fWqiO_EkU*sJU-&?Ws`m4wcE)xALh6 at 7)j&bCf%R4n9)!Af
zpu6S92K#O_!p%0g2GH%x-EQ|)6 at Q=4ZcjkHecf&&L1cV_5@!OpS#RTk-G*)ZncYF8
z6Hon`w*to{n7&_2wb&5D170TWSr6eIKU^;`z at qh^;4 at YI0&<JDjq98?4&!GsGVI^N
zf`TYegnynY<Iw<w`?uciQPM8fvv)esu9^;Mch5<YvF)+8;DKY4b~EigbZHxE=++0S
z4DALN=Emqp&G`q`F*w00ENUI|hV`ZRheWc3);rm7h&cS?3gkri$05QB9R9)Yq(u0~
zVyycJ|A2$d!#}9K`Ao$>IyYSA>YZc*4qqVYdiVlJ9_wB41uZ1IzYe#-2^rG=iNFNi
zPjf5CZ9d|o at Pen%47mWvq#PBX1uzzJ0Yxg)0VuC<tv at c600eq^XgBKd8SmQz)nZ2n
zu$(=MUA;fbeV<GED!xzlcn99)vZfD4YA1gxV=4QjRsRxo+E?Kp(TAM&*IP#eLQDhN
zx>0)#{6JQ`mmjFsx18Ygo~wQ>9%R*@hl;uCtJJE;$ou7cSG{_7hWjqp_TTY9LaN}}
zJ`wLx&dB)_S+(xE)<PAin`>LuF*;hudTXe(kJ0-9!{xi5w67MBcloM!Pm8|0&B}Ay
zmqq$#EK;sMOk3>B=f$kR at 8RumP`Ayp at W27|;tI^P{j35jL5Sf^RTj7;ZY6Mu3c%A2
zzyd$zmAm#_l)VzO{w4y}X?2e^TD at 5LH@2E(&%?T}8CIj#7igzs0Q?x=i;p?DA=hvI
zCc|SzVx1M#%6#pV6-04u^j0GKA&6{$&mlOiIgP@*9?@H*M)VGo>2Ogc;iGf0?s#AT
zGXvduOs)^oKU;lwgm?_ at Mx@%ys0t};7&jnAMWC8rwve+&y%(qDQ$6ZmjE|4u6olE{
zhtCLQ_+W~vrjf{E9~fj@!exj^7`RrTFt4*ZlP1K*!}2JHCd(zzPgeL~j0bAP$MR+$
z%x;+);IGLidJe(>pJ&P$pjT=hq!btvi;n9%!yO$yU4(%Ja&@yj+mA?uOjy9^sEqJv
zwkadr2Pqlh2}nR|&vge_R;+dDQ*4%@%|0?R{K~)#jQ9$SXdFbtc=AK;BYmwKpIIk>
zjL|B%;tgPk8!Ja)jrdG8vTDY{&l4iL2$m0AP|`Ozba6fp>;_suf_{#R^z%x$pLa(4
zc{(Se9Q{1E*zS+&YlJ6zOy66`kipbpzIplji4l2RU&g6QvH4*H=w%FT=$~(YFHfa-
zm%e)RFB>rpL%8th2P9r~qd!=jL@~g$s<+<FRbmiQt53F#sBFcrus@!ODO2=7R#{36
znZ4oW9LVXdJkYgw=8Gi3Cfs*YL=}%3X;;9L6zqMG7*?b3cVHeH8-rysF5AZ#u42$S
zj&jQ+`=I1zt4Tg9f;`%LGRb~ok%!7L%Ywa2NyeAu6x&dlp)=1&ozf at Yel*g5j=x|9
zM|dR{u#6nru+*FlGI at mo>%C(m!ylJzU(UWNe^xyv0O-9Q%bk3(89w^cgZd-zaWvos
zABP|T{(*h%5*YXS_OY1$VKp*e5+08UdtMd-CQOz%4_g95Td-lw;T+}mm~0{2K2kcE
zg8B|BnF2sNQ|g!cobjVJsR(Zi0{GxmXubC<XZ*r=?1z8=s}U_IgTCH=En?i)+n;#S
zK^V6RW`VuclYbxb1z%J)R&<4X%5l1>t+L<-J!)Y1e at T8f7{>@V2}c1F$;W!dhP^UC
zQt<^xzj0=c&%8kyE3YB;ke at yS6SZ_>m8`^Z%EHM2mlG=T8*s6&mLjK`#tv8x<lTOw
z0mKJ*m`4X91e}@Ke&gFngC=I2nYjL7e3n&&i77V&h3H~_In;F7ExSl6!>6$#_W08&
zT&iS;i)fqS^+IwN>o$oxqEv_NVGf1{3j0HMb&|t?cM&m^>KYz|hfa_hRyEAk5jlfZ
zGNKS2&POD4CbrMCkc~CK2EcT#N3rpJxv|dahu{1w`vF-~S<0!*vbHn$NJ$ffhxkw-
zy6{e=M=_s at Jq<_9t+z}(P`GyR8J{-HsnN|j!`WK+fwBBS- at zcNB~4a6n9$}NZlwZ*
z8)hzuqzQ6{0?AS!3|e<VBu$Wm6v!H)J^Vl;f1HLSO_1+$q at h{`vdjY_X at V?QAk!4c
zbPtH63G$o*sZt;{9uP?r#1xS6Loi*V*b7e8C=p9Hsgh!pRJbJ-QgX2>$(AXOnciNi
z1jE9nBo8Beg{@H3m<eZa1?h!NW&y}o1TXQ~SaqE7{Bq+v9p)8geoQ{d6mjl25Cj#5
zyLew8joH%Kb!efh at F04H5A^6azND{7=~I4V2e>QfW`sjGo1yd*`Jfx96R_R<#>R4E
zt%qRxD1uq~Z8CznhFz#Y7q|&<2_8r==|V6`=;Z_gw at xpe6i93Ivi>NkWet(g0=+C$
zAhil)8Gjs-k~Go&X9Y4%flT*+NSYuM6iAf<squhFnjn`7NFsVEQ6<IA>E&2elHHtM
z_ERMome5P(ka$|za3pDEGs0jUS^?L at 9xJC4GYx~nrIpQa%35;)9if#M at F27jaA<`e
z40q^Is{97D)9|!wp9%k(trmY!E&h5gewF6XhoC~;oUImrP%VB15?TDc6o{J4pj!M2
zB(nGqQ6Oss$H7Lyu>z4a8`_pF4b>`;WgZYo6XZPwGEIR at _kc*6ATKD8Dg{#G0g*I8
zek&m3hUnowSp3SJqZWUqD#2vJ^AqC&x<r*=GNDeyxPXeKBohB|nZ$ogS`b<H*(j$l
zsh%f6Sr8@^F<eWU&kPh}eIpda+J1yHhqPKZ;z8!{OT2>BYhQw2k+Z5^scsbV8lER3
z!L<W%qQhkY*<=BbgcKdkS- at i4*wnhrxSGAH01n9lF2=)Nvw-6W+&T;Bs6bj{0bd<1
zwXBiJOe`|$6iBTCS;n7u7Vt*}GEIR at _kc*6Br#5bR4I at e4~V1*GDtuYv4FEw38*Gs
zWaOw4P>th}jA#U%R7pyUEP(NpA}(AOknM;I%yx5eF&oek7VsP%gnT{%iBMdurgEZ0
zkyNQz07(ai*BFoVK;ZsrM|!{ujeSZbJ!(9(<LDcAZA?Zxx$IH}FiF}u6c2l^Z)`j)
zDe=6nKw2Z7CltsUHK&c9Ih8c$G^9Xk705CVh@=T}r2?6zK&E>@Bu$XB6iAf<squhF
znjnV?NFw4%RV4|CXZ at kXf}>K#=o at dTl9q|*836DYMs*)Ye&jmx1M}TneoO##gm`Yk
zgAmVS;(Gkje&st4 at u12^ul(>3)o^H_b`AnDdE5v(djquS!g6yw*xe0KXmJU-Yyv|u
z!KNFu_RZAoVV*7Wo6jm`c4OsPqKco`K-yCNJ at 87XR9^qyvO^+twb@#L2ZtxEYJhFp
zsv7$sfm`QEV-!ehWL2R+)~MNT^vt%TIol^FkXi+@%mX56f^<?K(-g>b4~V1*vi at M{
zZj}P5 at qkF0APWT~5m`N at N)nJ&jVj4*&XaCdB at wcMD2r8L2LgcmveiD26{i{6<u0-j
zMDC7<S^^IXMH<|6{=D7Rv49q`qDVW0bwh8#on#yBgSU7{3e{~VNj>k!A#f$hu7U{#
zzf;j#gzpJELhK}n1$2`@kxj9aaiTwFMJQ&ybuS+FT8dpw;MOUoM1izMF^4OVHEJRo
zJrgNuPUMb*q at h{`vdjY_X at Y#HK&B~>=^hYC6XazDQl&s at JRp)L$bABmh+ at X7k^~fU
zxhhFOF{P at +r5G)A4^7%QsyPBcB6f;}8DTETAYkT#Vi4P{jGpz}DF6OI4<oYhK#CzN
zu|I&SQcg8yr)#5=tB8%hSSX}BYISY%%Cp2IU%w7i=I~FyIUa1pYmysmtAZ#3b>5B#
zl5aZbnQWw0h4_4StaXLBy8=-}kys(#M}e%7xk{`MuRA~*s#PG%_yf(8%DJRDoeLDm
zGzBu<10rdHOj96L3Z%vZB58t*7m!2>@l~n>L=mqL`&0>tB3>arNlILWSPRJ~m>Cr9
zQHu8kjA*gAZ2-vZ4zEvhop at bW4+HrK4?+%PATL4t;H`}C*3gb7ClXqiO<IVjgVkTT
zbWjE(nRFm3e_6hm<&)S*1+fA;sKmow(?LJ>sC7EXQ6R0+L8<~-qo$|PGd+^#^nA8|
zQaYHeK&Gi$rh96UG;5ivK&li-jR!>11PKU8B09KKl_a2p5>=9b4vv))mkuf~h&PNn
zqFiX;9MFJFB>6J7h$?ejtLUp=MkrvtwGt0BeUIQy)L)<@I0Pkiba3lvm<30=?(w2~
z72ml~h;`G$f$Up(rIE*~n!#s>9_<m3O9<#de1@~_V<LnO#|wf at 9TBfe3<jIh0=;#!
z!=%FN#*DmCtL9mxdD-~KIvBmB3)Wa<omZTef|%KDqdKH4F3ZAxH1;YG0%{!3UP}F_
zr+pxRdWKCZylPBfMAg`KHwT6)FZ!}Bk&4n)MK`L7PzfpumqAl6E5!dm+K2UJ3~0nw
zNLjw~OCJ&--L^t}#2P`5uNrydn96~AxZCAshm=`x-lDQoZ$AJrKyW#2XR9Wh|7Jj*
zzsB<{I>`ZZgTT~VA4tzuTW at Q-_RPb|L;NrXO?*un+kVW*>xTv&n>Pg6CB}PJr|2lo
zK3mW+Xk-TjwGM at sN=5-MCr41G6E*c^*?2D{I*LL*BD;dWi^~Q at M&x>>$HJxJrYCvQ
zcOgAYo%aZ*KZ=10z7=Gz^04O_u{WIB4LB;9?nglg+Zy+?RrBeo(r7CD4;TeQM{yr=
z$`)Nau6B!ddHOpDg5IKaDa)wLwN7ck*vyBY#0$*A=Ex_NIO;$a*{3j&1=7s8bnt>2
z>tVn(AVA8ASJlH~5Mnc~!unki-ZvnD`ef+Gx0g^kxlAUzkM6vy_AA0C{QYj8h1qP~
zi&exO7}?aWPk#{E{A1D9{czr_7x$YuUY=k14udrBoF?Tv>iZqWNz=nms*KIn0~j7-
zo-JmZvzcx78;;GMgK;ud=f+ at rRB84<3?hhyM#XTpbNDYnEA?>6^R0)8tSan>1v)w8
zU5Zem8R<U&_o3R#p^N*Z;(qT;2ai3YXq<uo^ex(DeKNLagZg9vdwsG3$6BMmPLo{3
zCvILkOgm}G&1u85+&aQ!6DC_4v1Z%ACj!qR_&mWtd+gjzAW3XsP0{PqZ$p-J64 at Vj
z25uM{i9ME0NV~K%3f>w;FNyG_7C;1FLotlj@%8S$3Gl`ClHzOWT^@X0h7~4s=fT&Y
zvlHQ~HxNNACc&3!#pCPOXpi_R5gHJDor5eFUr%8mF23d>?c%EfP8?@_nRjyPF*C)v
zn3>{S&jF?={prT82nmL#PQwf2Hiuz+AhRQ&YcmU!27=4A9_U2Yx0+LIzlugNSG^-`
zFS6+!QhrR<KTI2te*cNYN#=f~XECzzq$S$#dBKx9&rlrN6S$b`TMzc?Kcz!TT4f%>
z at p>a=%^BPtBw8D+ZCBMR6B#Li_Q5r~xZn`vcm(KIH`5PB{-nYy1C=8KORPuEY at gEb
zRy3ZYs at F$%;x(S~PN{6SpayR*@SKQ{^(V1?Sux=PxPufc;}z75m4Wc`^p}w2-YudE
zj_)e5>00$~i6e<nWoI1z9qu-Xpg`Tdg1XB27}a?6A+7RUjOu!%to4_1RLg?%F{(4z
zy-G-m_2A#nu{2LaA-4UweU{!6wONbz!5s6HXie~oT at CL_{9pQ!0CvXxH|sAwG47|W
zIi5)v3D1s<&rJUspg=e9#rZILeH`-)8LBvJJpyhwK#M)$w<wRthi>%ro5!&Kx&fU&
zxJ$dGH~vixbjO}&TFw-xk;aIO#c3x2Pl$|&?4bwF1&&ZAapMc9D6VYCiQ<ccT!+2Z
zK4eu!d)XW1*jb%KJj}w_Dfe}=XTzh`ry#ue`IF9 at y_Vm>DLMseFNVM?-4|D0$wL9S
zxBP%bDANu^0W1xi13chm!WyUkk=b3+|HLO48JLBh*q6tKd!G!<ZOY<~DVMr*W}JGH
z0v;`|vZG*YHMr&I*UTt-qjDocnJN#|gWFRp3#>HhHF{z8Dv}otI0HY6(+)xxdnTw~
zo6#q8N=NCp*{dT!8{Uk}mzjP?$UA?!(Q7|7folCk<RizhFX;AIybrqFUpKma%Epy!
zbLG=M%mP382Fwop7l#<qw^v8`$t4|k?P*x#(lhA=H9iUe)VL3>WmD at 8ZHBwuiCj`C
zmag@<)E3a#SV1jBsk1)ACtNE~o2 at ROO`xOGIKH$Alah;+wFAv at wS0+i!N|L875bUI
z9KIOOY&-GNI(Fo)88`>a0Y{d2%I{n0K>=zAHtnhG`1h2Qv=nR{s$r{s81<8IabQ}C
zwXXy9IZ?1Xeb*iZy at Jz%7Z8MU>0o;XI;Gz8G7Fbq>EVkr>-%NiTySC$KSXF8H0#7u
z5kqEN+!dd9$RH*c_dC$D-Z1FE1PnTSz=VU+Q|6Kt71Y|JNy(1<$HIDea)*?G{l&jm
z1pu{A3?1ciMgduYcd7ig6a{-RahNa)wiim~4nciHaX!JY{`Q64-teRv-=**Y51vbv
z6r5ZGfU}S7Xb8eDaA3gLT{4ht0%y)9^bYq!0L1rt_;Q>-y?$|~KYUDwL&(+1U;O-@
zLOJBb7cx!^{gSE<JiilMkYP>4qVN|r1U at c7;LxRmwLjICTvjr;<nnlVbdhRIX?@u-
zj0kaDAjiHzlA{*lm1j_T7Wc_YEvQ9!bedQ)=IrS*;`Ue%TJ=N9@|=b&9Hhy>G|X8d
z#b at SNXJsfgVG>|in2Nf;#ze60EdVmBxlLAT{xt_b{_wMn$m1az$?jR5jok5isj<ck
zGg%ZSbY%}84<5jYy4CtcJ17~|e7Uq}&4iC|$UY;b@@(C?Q}HxwLK at cENn*zs3+ts;
zw1A^T3sVKQ)R307>N&`zvu->(Z1y<}s!eDzvf`tamN755P*g8LEcnw22V+1a_Ecb>
zFTO#;zCOJJviZlNVeKJbUPOKkCexnO0d1|fmMi3hwkh}zkj+09oksZ8gpch(;6k<z
zS|j<e1NNElQFDCGn6=PpShdz2e7`&8ncUKwX<y1VAYLJb9q}6INc|7^vuq$qF at y#7
za`<MvCmNmjKRE#|Mj3(t-{(0-uyRBe#gmTJ4Rz_p0yx4jo!FTV^V=rF;lAYko-ozu
z_l9KC?)-|FfppWV??Z}FLI`WZiD$?-gu|(zC17H4S}rb{BU&tI+2HHNOhbC<)={r9
z at jivZbz+10!hU$)IRo_q!+<wL&sfHuowy&T6!!_nB2%mG48j3IF&4{3Xvq~yj$<8b
z)pF~oVcFLJlaV+Wguxk$d_}t?N?v(VP6xUjPs(cRI6UyMpsTM)d=_FGtU7Yw`1mZ!
z;N8|~m<QS9#`?;(n=o0C_j#FEKH7(W7~vA5a}gke7%89DS4Q4V*peAQpD=i9E{4j`
z?2PJKqdssr?w2gs<C_Fqe$Pbhp080Y9)O#w+xIOsHrH)F!u|kxf;{_8q^!@-4=e+F
zDBe&cQEz_ at H%(OEW3Km(&N5 at 6CoXh254Ul;aD<nRPIa*&ue+pO$S6qc;XNalS;dgf
zpn_VkFymq<78k($>oUyfmjxpY?_kdRk$d9K$&OkczT^{H0sgMfbWbVq1l8o1a266#
z$;1H=fp{|Ofm9+CDPjY8^;A^q^;GD}*Q25S`C1-A1kD0zFK-K!iVW?y8Bz^jKagas
zA_;N3wpqn~gkgxLt^^4dvOBtQ?kIQ(@T(&224QB0z$F2#YFuu8A6;PT`&2l;!{wKE
z0uD&y%l-K>V1HMI0`WG$7eKWRmVO3dji9o?fiXajEj1pmLGI$ROz?-<Q<3x=FHV!6
zrxj|0)A0oMYK~Xzbq?2y*(-!csx4h+9ffkJzzzH3aMXc74`8owV1J`v2Ss3irC`?+
z_UjblLbbx^uj8<2;7r8c=?(d`%y{Lg3{%T1<=0u7{CQZ#SZ?kG2X*?)$ejU2OSH*{
z3I^Ws8E;#gK(BJH)UA*&X3GiF)JCQ&q|$N(goMU&-Vrd2s55NOvM{6JS2aGI1g#tm
zu^t$Jv&h+gV<?Y$W+Qm=SX{+`*IvX>upfuWdiXz$@kj at NyQ|?q4er!#t`%Ox_`%KA
zkyyBJ!(etKd=T8K47)tIzh<lT;O?DRfOrXB^^}GOp(lZ3b(m6?*>G26_)KJ at F=<wA
zPgQ&wm*_-vb*=h*qB^*6cs#!;z_myA#aO8>p8>1HJ#-kU7Megd#UMx-w9*6kj0HBL
zf??i>jRAWdl_3XC<o;#`K_TJ~5r+-G5WS(?yqN)kl^2$qHzMqB0xqL#U`(*q_g!+(
z&UA59?bs={s4s67*D$WLTQvSaIXyoS`~V)yMH6P?Fm`qA*cZxi8JBr;CTa{khqEXu
z76aGYWmfk0ndhT{TX1IuZex2LjOqi?+riAaKC`St&<a;&7R=tG%8f?VRNfL_QSJC1
z-qva-bSyP$t7~sPTn5W)=<!9TaUe0MN1y|12n;!1k2{kqM&tvyd<Ft;`|0wAufAU~
zN?<%J(yB!&bKl>^U&KAD;#S;yOGfNM_jqp!Z*R>`(L!f{F|s=EEb@~oq#TGU0L9Ly
zorfCGh{ONYeXoIg5U>(HVbiTjRrmmFih_z)u|rk(1liJ2P+?D?#~#W2 at CoxA@FyJb
z?h5=F4|r#ScV#|Zmf_L7Y-3D+b<qaJAY(wM!LzH)7??RlxQ*Pm5t at QLV=FFxz%2^A
zM1il{w-8X>Q>;~|i9fglZ=Lx;4(a0P2 at dfqmWAW0=IxnHIIq{GNe|DSLM#W at H{nxL
zsc-vmPTILX<0#a@`z=-&%Y*Z=RoWSvKxeIJ%jnH^N2%V6*1&1jrtPGSn9L)skB|vw
zX>3(Z^C}451R*_Mgq~TsJ9j$LYLR^(%v{&HsfncP?FC4?_Jtd&3mZ#)NRG!2y}FFL
z=TkJ{Gsh}+I)$=<Yfd+(lKp~v9_bXp<B}r2z3J#jyszq+?#+Bvm1C_AA0+fuNdw~G
z)6FNz*2T|9lj1Ppv<#{Rml=W*$U`1VD=I4t<WuOfPaZZ?&+az++M9Ja+HJT)55pfD
zmVg24upGzjS_ZjGrH%KY<D4?Dd#pm8l&|;KX2UrR)~n+PIF}xd4=}1{V4+sM12A?G
zShGVn=;u=UhnJjVmaeU!HZ~;_i-p}6w=v at U;iOx_2ne*ZCS6ZmrkjJn$?`E)Kjbwy
z7aYDjpdxnRA`9+-intk#2*VBKR3Qm95w0%A`C<t|@LrZPc5zx3k at ZLprKH{ymuBMQ
zV0=G(5vn|ph#ke7H$pr^!O!XeWvmMKL!uVk;e`ru517h<1X)Z+9=^#3C3lbv)+~d-
zSeS|<=D<!m?`;giottuw8CpA>Rbrq<3Ya7gLgSn)v7j%v^?m9D4IKGW%<EDCYa~N)
z!D<y4A?VtzwLd{A{ZBk<!f)(B9cwr-s(*3FSp_S2&gmwQ8)svbBd~P$?lRr at m_qCG
zZCp%5Cr58DMaA@|$Y;a0Tl at bFy$1IJS|BB}*mV~t+z`9E34BGJ4Fz_1pGWWqT=6m;
zGmQWh;B7*t at eb}n>V+GPO3wffzzJMv at 4^GNr!M#5DE{Y7@(QoFL>d?A2@^Qq?3!_&
z(N)78dYf$CYg09zx2f`CRra%jq5*SCIS+9Ghf<xUPVE_sSe{V=wLhf_r?N3zibRqn
zQ_w|}zY;K*%z at d6MTede0BH>uA(@RCg#jcoa;Z$T8(Y4q;g=D9?aImWsGP)&1eBAa
zZ+GS)nnB-*oIJ#rw-J#V at gj1L5|J}JBJxFCTSu)Wmp8y>SK{bbLJ>(<55}BpZNq0X
zh=*K=$Zimk;Hc$AYg(6%&{knTK{8Tr2#+ncdLz^X(h<18g56T04eD16%_tYCE=WPM
z$keLe2L9QxA*7Q+J#SSF-89a9UanlsmEGe0ThXT?EV{s_l#GR#vyiaxX1wQIt_M(7
zp~HaSjEZVI_P(fx^c`G~tEvl&WPES5l8mqYK-_Afrzvvk)9aAUKhe*CcKdhC4|n^k
zfUmZ~4)~P{{JseIYHJISX#0 at AwGQ_n@gf=A_Z6b31S=VzQaois=GHpgDAEo&#?lh)
zmD~4&D7?MXZo3iVa^*Mpd=V;zZ|+ynrcYzDJn?Y>G__ed>{$3z8+L=W at O!k at 6S?SI
zhSRx5tRXl6>oJZWZgR)5+WIv**6@!KtRiD6mQjg$`+hso?oNBG;8SLU<evv=hWW94
zsM at v9uYu3NP4`Dy`L~omM>ZIO8xr|*ZbtL;xtxfpG0VigvA at jHqtiHs`ZD}W>*C;4
z2=gUOVif`DaN&%@d|^VWrvlz};T-E!r?EN- at +dVQS1z2V8}T+>IFj8nC@!3Gx^PT!
z;h5sWDT=yq&TWKr55~E0N?jLDPiyuTV5>)DeU`wFBUQ7*9zTvWuT?*bT>5cdCbgP#
zrsGkZR4+3D_CfzgnzOyIig`hgGe`7wy!;_T`D|YDOF9jAE5fET-FruZpOQ3ZbJ5hN
z{|edsW6>SoVD=wJKK(oUpny)CZxrT2A1nB+*!ATfi!LJke8NZkHhsZ?t+$zfCQ^~{
z#&$Z;o!{!<iDpl~_pC|a+3AX!EDe<AQp*GIK43h2^yoiy<e2FbZ{P^e#I67wFJz`T
zhJ=BR!u0yhvGCa7>#XKU4(CNN><wH6Xe>a$NZ=rQGQcAJEjK6fpi<@e<>oCg114t2
z`YXUcH(6PmiO9fVe&ZW|p6xICeEb1Xy&nvJ!YpG6jEt9X!~@mA$k>BBD#&_poJqQL
z6*@fzHLrzv=6XU<^JZ)ACaD>55_Wms=e|iW5cW)*n1uuoU!~o>5<jJ^T$}PHl9=4f
zMj!&<a7mx4r>DzoHUW3KsWyms$-J3wtwq+XOa(ULd#X&ht*Tz;3-dpVcV>VS{01e~
zEO{I2hwR*W{cp^JqsfgUC<oxBsKD{!m0V$m073ejmyfEf53nfo at E|o8&h7A#gQdox
zEZrECjptmzqATh1FbK*EbQK4_X^!Dw6x;Lg-J@|1JJI})jd8>bryJ&gYgixI+&Y-*
zrRM24(}t^Q5Xdq0yENP;w{-%1&@c?r54y2K${fr{N(mxve;a at ZuhFks1wZ`a>rp}Y
z)SCc~>&x1ghi~r&wc%`QZfSe+q3Q!gjW`>Sw=2lY0BO}0tI{S^$q!(J4>(Jep3l<9
zoYIdYr5UQUl%)%MsdrzCl&<3-!lxFq^yZ$b^pBC!dR1D;(p;xkRguysRq4g;!Pz at G
zrN4=k8mjb4mTu^yYA%hGUZ+Y&u=H)G^jDG6?y7Xfw`h0S+3MYlNa@?xNuL+7^dC;?
z*TApB#xhm<GE47wN=e45bhIjchNU+<rE)>AV6ulQ{Ub{YonF;M-rahwwEHki&yaTm
zH>+A7Q6+z1$uc-ELbZX*RLO5t$-OM;px)`NN(xm;-WHVXERuJ?3NW9ijwNuO(>Z>d
zwao01gWIg^+2Z*q1tnqKm4-*{0Yz0F613XkF3xT+8u!4b6z;kx13k8G#o{P4df*np
zP1-$oQ{<ZItJtIjC#6x5L~xQ;eI`?8`YaT=K}y?!X=L3Kf&MlE{fhX&(y#YGzp0=n
z4VSuc*8Fb at 8rM~Rpr9{D5dxQP7^8)TBL~R<l2cXk#xYto9R>C2^{AA8*r|ROZ=`6U
zn~-1CtAzPl_3xyk-F$2(oPIKYiWX?0oopWJZ83I%pcflpNO;PkiIz<!joqQEaSnDi
zD)!h1^r?q#=BxBzuSY_>>d*?smrgG-ykBq^!7~qC5p06)_<?*uUOnD at l~<zkQY`?1
z-S)`AB(Mf+mTaG+5B{R{mA{~TQcm!bH;`-Ij_%?s5|UpbisK>7hm8COu7 at Ps#D$92
zI3qlSZJ8r<T7$*tQE{|Kcbp;?31kuso($|?2O%^#YQTtl4m^<70{!P(t*xvZdMpf6
zK-l}qyXm!PM+JMqloA}5<_z~J07oFtI`<Vv&Zp1bOunAp8<S%Hon*z(v^PL5V^NO^
zPn#p*X|LEbQ4EnsdZix_D6p49nuEVO&lO_YP=8R}r at dAO;lxg7dq<G(jG%{i1ljVo
znZ9{whZG}yDba;-dAokK%-6!PQ3k(&e*2B+1oVrBr_k&9c)6+&G{_H#)u;DCEuhO3
z`xdogg2N)nss0kLIe}{+Z9Lf6w}k)#E`{3QbI8AX^sQG2Aqv&${2B>HgNxHRcL1oU
z932=+?}QGSK}~T0s0W0GoKvnC9k`K2xw!j^MW?4&mC&(BE%8*e!RAaVDuVnG#}?<A
zHt8~y+3zB&K0ScmWA-pngup~;)rX_s81~Z`woDebcaXyg)2iEXOa%a~sZT!xuL651
z_KkRsjCu_QY=2G#oSIL66xnYf%X$-Sx+>HJIQHE1<DT?ANW1nzjBW*&VdSDkAO^CP
zyEzX73qE6s&%gzEZ{wO&*vh=w7&jT~X1`2**0YED?|o-h9j?Qx^Wl&|-4AJc-iNq1
z?sXc6xIeU3n><0PSk2>YdE3fymvHcYo-wEW_)&Qtu0(ILYcWL7pE;e<RKhg01FJHC
zGvfv3=;riHJZN1e5s$j at 0-ydLdv6{eRdxQ4ClECvdJ{!VEtS|tO<WU~Ld0bP3EqJT
zMggU+u?kIHYJ{XBs01b{bGVL1(Mr{}sn(BFZH=gaQ6a1Wtr~E{1&#Z?L?LR0hzQ^J
z`#JZ{+zc}j`}6bt{r>pP3v#w+Im>g;dCqe-Gpf_nWMrjL?pJTClX?a*Q{B!O+~+Vq
zS6~~3j%p-PQ#A^KwmQP_XJr3_U<5COiy$444Zy*qw2lvwn0r<5 at 62W5sB^k7M=$A?
z-tURQNQmB$Wk&gUPBD})v-owR{<LgFE3Dg8BlbEdqPU?gdIP>90%8Ij?D?9Gx*->!
zxq^B-^f%xz0`S)r0vA);8!AjykqhJsAm at 8Z)#^YYU~#RIRgJka_<m#vG9!R+9V`l_
z3FK-Z2Y_4+WE03Hi at rKgLF7unRtoYEjm!ujTvrX`Dl_^t$6w%An$bpjL81yIsx*me
zBt2b62&-8f=3?{y#CY6|*7%PLt`&(8Hu`ik9n~lx(ME<sN=aH<9UcBw*Aa&dn&?=~
z;*i1qnt>awX+17PtjK)AMxSn{qZ$Py+Q<+XNLpJR9sX9=5r+&~=~&I;kioIII1VLn
zqcyF^g at _edL)hrkU365VfJ7S^0s~2FtE0o;>N?_(K?fbHSsXGL&3BvB<8HL3^|%nR
zA~s=FqohTj=1kOTq;=A4t78&>U_~#)Ho{(FbsbU3Cr5uYbkyyF6m290BU=$r+WBn0
zz at r{_L79pWosbpDl~ALkMW3!f$Z8zQxVAbb at dw`YuC5~rc?OtnHPcbI3vjfNn8NJW
za<jwZE{sI0$LWBXNg&lIY0;;rB4jmIGOn$TN&JBsy{qepLS|J=x0>mw+XXn<NK9e&
zwXRhcMxxc at bik~dK&p{xR^xoeDaE)+MpjcZ+|_jiWR*5X;DI}D9$fYTt#FYiLi49?
zC%Un)aSfg9+X)`IodK(n%9xS;Ct|AGwPx1XE^&V&6ZB3DnO5TlIOs-Z3T<^egNW_W
zFm#MXjW(P~>UKIvV-JTlDx-n#&EN_|uM1<2bys(LHz1jD>BH3R?DE=XGLk=_kc4<4
z8}K6UL_~gx;Os31r8)uxttC}J3r7DimCSjnC1`0shq%u_z+MGQuI>j&g%3ph1bJSA
z<Y+4SJ`nK}<RJ~xL4MIc$T#3J5<fxeHAt%lX@}$GMf?Q0OoKFOkY*o<_z7}`2C35^
zjXn_Z6Xd4?a&skawyT!&C%E^j+GI+)P6_ZvJTFBL^q;=ZT8Q6PhbzuT77EUbl5z%6
zU>U~KUK0bX(vexgnX6?8A>DrfCRF?t&TF2DQb8-kC~*Z%8n`<EhxD>wC@^t%z$}1K
zt;#G{6LI6tO_{-T+zUTZmIF+mmbiE<sDxKe at Tpp&*PX!meF1jIbz?;!L*MKA*V=Hw
zm%kd4#=C<t)X%B}ZV36D^<WW*@H$rx;k0Ro?`6#5X6R=4&7fY0***?Uz`V~V=(Ftg
z9b9v!37jT>+#)2ei+x=VG~6buK5!PGx*M&<ltPa0%e?Wug)yeJSPSATk#5z(kQvo!
z>IRJOk=@4kIT90%2)>HwaXli4 at o^nrfsFrfn+r+P9m1DaFkqP&!m|S1M)sBMM)u?m
zQ;p)7KD=9A8vV`5sE+7x4Ao{<NcAzXBdGXgJfDVWlP`V4)TE}NwJI>R8D7Yj at uDWi
z^mBWR=^-^d7ofR<T6-c<af7Bc74XvvftwH93R9W6K*pGUZjUh?$N|6x1i3>aGXe<H
zDu8SPxf;j;AY)8Fx5t<c<VwI+3i7vw!kH03m{twss!(*6$h|Tv&1i&Pkmxa{ht#Y(
zM5A at YVd)>1T(r2+8oxzwt;PsoLA04DDk31!2ty%t2h-4Z(&5h?)4`w#Aute!48AEO
zc8eRWX|)Iubk~3dgLa~*h=4>R41odDz<>^a?wAe+tq6gEIAjo at D61AXTGMI~B39!X
zz=A;+QB*`gq7jC`fN5Yrhd*~r2ZIiTz(5=_7;=IzaHBP?79nCa+JsdRrhyN;KucB}
zL6}MWffc=!*fgZOV><Y-4+S4OYEBjd(FiFR*$W6L?R>fB?Se`dt6J!Utj1gdsR+}+
zn?1A at 8Ok{Sn0^PL+%X+I15CFT(@}E-I2zIYJPNw?I1+4eVI*3$&;c`(h$_M~Fq;a;
zic~VrKc?S7D0fT;vnr-ri|MF20vwGHQ%Y8(nYl0$ty<`SSv7%FglSOx7^m)F9O`g!
z1a5pxZ=Q!B^1xL7ykT9<A)2u;vW8A}3$dUPEN+GynZrmcqQ~?Fq at d>LF+I|b0Kf at m
zsyPgqR%8PlbR)A`bu5F3?a(1Q#-fM~XOfyj2Wisl at qw4OWx;4pH=^5S at h^X7n{<of
zRdaMlH%E7Lv%JyYIS`|EqpM5>qu0qZCbRB4hV|1gs9xFqnUC8ifIQ#E2o=1+XFk65
zwn1FUTPV=OXK^nC-un0^+{Q;l_QNA0{rJ`ghoLN&lT!-dxIG84xuojxAB4;FQ}QoN
z!T%;)P_QTb$;mk%z&-f$+lleNsGt}A-Goe1{+YZ;VGqhrPR at k@?!kYJpZ|Tm@!ybw
ze-mze+7tfd<V*u_5B~H0{NKs%rTmLi at L$SP|9en=a&rCz;2!)Vd(3}c3jXi%#k4)(
zPfpHa0QcZu-9!G4>ZSa3Ddg{sJ*<Cnavo2pf3qqke3u at Xn)x|XlS$qkU3*k=v&y*|
zkkIQmuaEJ2?1*0YO-RP?W1QCCgPJx?XDJ{xzx)`#U3tCm!~T=qdzPVl$S>bHFvc%4
z#_#Oj_~j(ycgyBID_^EF36LmXx!O58dK%7gK<^DM+nEtE9>aB<Z`t(^vzw+ptKbVf
zqOlg%{h4^KCL`E)JZ at ISRyMwPHCE=+wzCp)>FzIz+p}W&?gIAen7Ok5#u%aX-38K{
zM|GOIF15ak5zU?CiQbE#JIPC-{~FnM=&9X3g`)6A0&o)TSy~zPbYHP&g*jc1P7~c%
zlwH`fUNY)4WEOuSEJIm%{0q8%HI&|Ih45oKAo?#%LYXK(tV&rJ5vl6Zo(0s)5Dhp+
z5WWy at K5#4G&-e6SAm?jj+Owtw022`8XJJ7EAR~xS0oMd_HT<Th{{q?6$Q4Ac1WctM
zAEJ>NL4<0!RhU~e0vN$6;CuQnNK|PO)kt!cT-Tn3B3y#?4^u6uBcj!;@fV0=HAfg3
z6-5;w66&D>L+4;5e=&QOtK_=&EHH at fB@CJX1P0A?)B<s==J^aoMNvhhgnFpJV8BTJ
zV)iUo$#v~nVDM~)kZc7I7_`$-3&gRS*Dw?nMHP_}>Y)OI0VDZ~*|S<Y5CSD}*vh=$
z7}#!f7gN;&aja%rLZbVEPd+{aSNBy5m_%hQjo(IG6^_}nT5|M9LnlG^Z4n&u-bD#l
z3tUjrM at Ss2nYx0j`+|1`Lay$s7D!TD1&-OXT)kG?vwG^jVD at v(EI_(eGYNv3I99W%
znMqnybW~UORSP63t^&vGSuItX5S;|w7tG2uc^77?4vAwma}?^K`ywBVgZ4VF8E#zn
zjYJS+2Qm+?r}(0_3C&-E4m^k8J$2tZh?$`K-a{roitelJSuu^4eH;5OGb-vZf=$wg
zX$?4)cC5SAdvvFFKN0-)EHo8M8;XvUXXlJr&- at GwaIiuRDa9I*6)M68!O#$F5L{3P
zxS(2VLJ2ktww0uJ2MfL_i9H?{#u5!f)Q`7AKR(+Uls!fb8dzG~Hu-aBB2wM`eIg8T
ze*2~5H=$R4|AW<?)chhy_4rYo<NPihl&XA%z4BX&C8gB-9zm+dkDqRw-y=Uw#ZR>D
zl=Zn0vzOHTmWoBPl%%Dbiu3#S&{X_HyH3fkf3N&DV;1I>Z+?&RjZVo=wCR-mhJj-0
z^8L)mFVchGy+27+KGB|2^1Bkt-l_S8km{DN8fGBxW7wRNg4yJ$slSAO;cQcCPK`(v
z`(rh1RUV&_DfvuD&1c_U`E+7|R`bb^^ZCmmsme1nHJ>X$DRp^9#`t8$`D`7Sicd~z
zKCPHIr{;4%Qc)hfpph9$-%b at 1`^t=457-2SHj1m1T>X+4FkmCu!T4PH3~Vlr4dvSV
zxS;?-0sEUZI;|3+O1o1+Pv+G@%CM=Pj{Sxk*QDd<*el$)Rvkyje$0*Q&~bF^dl_fd
z=cTbXi9VT^0~d6~Q4JD{)J(>z20A4OX2Der{A*tbd`1mLfcOEpz^9`c7-<)~5S1=O
zm4=|B8W?FG;^rZO0QL)GXM8h!!RVd(ac9-Q1ZJ`kF0w&~!Ff7JhruQtq{AG|hYKT4
z18Hfhi{VoZjK{W#`n)wR0HZZPD}0d##*+XoL?pmi)xZ$Bw8KRn=rFiJ2k9`_p at VdU
zhYe4pfqx~)o5mvza^HBgp$h??cW|G0crJ}&rF9nvK+fp`a)yw9KEMgJl|}(~zHpaZ
zH=B>|0koZ!2`|=?T5IsYDEIJ2pXw&jwg%FYH1(7=H$6qN%%N~;Yw*lYM8^L2x3Cys
z&$y4Xt>t=O>N?Xp7q{xHuf_X?QB7kx_VX*oV{rrV!PukdQJrVu%H0%&rn-v^>=)<p
z4Cu-V_`fPKuDv3!ofTc0*X`aFWn at omXTsHa9Y*#w9lUy<_WQDKQ<ZfE!<%s!<1Oxu
zcmp at g>HZGeI)<`fP8QZN at V>6<E>ADRtgcJmAKjk8{S>#(=7iy@<y|-{fF1bJMfrf0
z-67 at C$MmTQY%&U^g9{8{n(oX_W)j=cgEP0#7qkw+T|rsF=-F8L*#^Cs3(4G0 at vs4p
zIw)wJk4fH?ES#3igr6>I3$61m0E6mGQ{kh(J_~2Uq>X~n>kC)+0sYarW^^p(V(WmE
zYt&yMWWO}(R|wg$xrolkAzReoSZrcDpDtP*JIT)%x at YI|keixO2*UZS2N15%gaaU4
zp$P|Y1t?cgi$QqW0nG2%0En3&TmiocKivu;{1PC8>g<3fTmizSOSoDSt_0y~O}Nsi
zKi4B%B3mQIR)Sa+2v>t(75sFog>acBT&W3HgK(85yr>bb(6;K}Goy1EAsp^zgi-%b
z&ctQ?UaDm-V}sV+5jeOmNubqSh7jq7#9>AK8Mr}p8&QPwQl<pkW)qyhV02M49L>K8
zKJaIR=FbSD{&P-~$^SIXpRr&y9}f5nw3^EhBHfTU<i8QP;7=6IpDEx^aQ?u*9ggPT
z3Lp40Li1+?jtvQav|dQ_XDnE)fdl>mt>!X>NH-)7`TtDwCyM6J6!0fFf8gH*NAvH1
z5BwRS`7^?(zb2Dml>bpNiOgjzSlMvEU!c`oh7jq7#3BESfs67JMe}D0_!FGJVDz?p
zbW-3C<TQ3y)-ySD)Le!TnW;l`O02uH;HbI$i;NNzm%adqC^!?sFTHr3Q9oB_l(9(6
zC7AVuK&!b7A<_+r!!NZ4xIwj4^TyY at h$+Y@!TCcD!G5TavI20_TnR+yRxpmA at ZF3y
z>X*Q-5G;NT^M9QS#v;)qnDvA}tGNsz(hZ5j>iQRP)onzP>RQAU<bvSwTvRgIvZ~;y
zxe|!Zoys`L1*0)8!1xekqg{^{Ky5M>466xdJt5F)E<=cPL*g(OHgVN$MA5lm3UWbk
zHy6N)AjA%QcC*0EWf;+oIz$Jdc{)S~p(Y)ogUXx_2mO1P_(EtgJou8BYAn2ajhoC^
zNp6KFGMCXncE at 9!_8^WPkMC|r0A-~EZX0xn4niF|M2FOExRJU1%a9Dkb7d%w-(wjt
z`NYT}cVHZp`%G&K^}}J?d{2x#y=;ef`@$CcQ3QCo>OQzJx0B;zbZ$4fwuR#(@LWB5
z&gCE(v~JS_a5z2yqxuhqS*OHWL{wQ at FEIwrCYE}FQK&E?1+7ISVX7yza}EZcyGaJ+
zrxT3cO=ym%i*gxmo9$&HsO}~?IFgCB*&cTz`w4;)XK5ikM)oswKsW$L7K(y1H&-xf
z=I3;zSxly>xddTrG8n|RgNB7r at k1EHaq9xMV#*OTQFhBYC?E75*SEC3d&CmIzI%up
z3W&bDuN$fqefQhv2-#EL{nU+Xf at DJ1q+`G0#<l7=I`&dGu0zMsu^(X^)gaW=f1~eS
z1^nLi-JlCm>2j!oi(Jxi_1&Y~JVX%1`uzX(-Jbd`-nPAZSzO=c{`UVBefPH8e{6ks
zW3-39d-d-6?lq$C)==NA?dYlRn&GQ4(J~q~P~-jhZJ9sv!+eNesFD4E_o3dcKh(K&
zoO8vJqx=0Ch)C%7lXdvzY7vDI*Sa`|dUgvLy<QgE at 7w?q(E*rnK#dMU6*@$xTs=k*
z98-11#q1CqgAI+JqcL(d1|8t%>ku7`GX%jn<J>CN1=@u;Zk?&~&+il%)EB^?4njUH
z10yv- at P@VXpv>k4AIj2TG4Ic9)fj68CW)2=e1Z`FW0|FU_-Bjter^*I!EwI8B+>GK
zPY~iC5ywaVXP_5Hj_Z&J{D{CL(Ncj=5aLh7;<uiEu>4zuzpGLEv}sHvDhb^pmoE_)
z^@Z~ORqD%C?R{!J-~)s&N`Svq+Q*$^_~sXY&n5hPEQPvu37P6F75aLr<D2FLmBF?<
z9MFy2X0PXC)eyu<jTob<*~G=~8THShad@{IE)3+$iSHbalbSm-jqqoAX=(b#h#^Pu
z#)z7ujfJNMBE|Zqi0mWKPx7XS6TO=vMC)-0WAG#W)fq*s;wpHZ^S~y49xyt)gVhs#
zh7OQKe6VA^ei}C=fLXcD&1x?<lYZglX5^8Qn`8aCv5=aO8y{iLho2w^H$O~rvbmwb
z+n<l|UOoWU$KNCeYgr%PpgsmL2RP&&ei!v2hlY<v(Hqv*9AhjzF%TIdr-d_E8*5P;
z{a70Y?#&Qg*(FQ<a?W*ihQa#aXXTvQlm8<5fXV+Mw+7tyxG~plkIYzmtYHQc+T%E+
zCe#4GepD?9qx^K- at -x8+`1zMd&kC5hM5Ww1+YGW9{*2}Raujk*P%7c6!BBjp7Q#P=
zPpY8_9Lsb)42)zW4yUFcL28*=I~+A}z|Kj-)wq386{Cf$d_N&I+QcP1`yyZG2b`hY
zQy}rU875PNaSB)FQMQq~`Hu!)5ys~Z_nQAjG&KN@;FFJsXj%LaiBk3=*8UK%97ck)
zQ>rPr8*>QQ9pdE3Qhq(!9(`l<tXz~g7v;^D@{U8Iue`U%%KIn!q`Xs-ly at 0YcQ3Dy
z^~%c^8>PIt&K4}T>+*)8;W}g^7+orkwTQitWMsQr0j~T{I?SzrCu0>5(G}1`{@?U!
zApSM_2#fragWLX0a&8BsnEWF at O^8H(#IY95XNZEZsb_x1c=>r19^E^<fi_2j^vKUQ
zNKKGNA7RN4Ik@>@k~7nvpYrJJRz#wIpi^$$wg!&m=PiJ-p~h>$ycO#_S};EYOWjZu
z2MXqi#=@9j4oKEemXEmGF3KV&x5 at 5ix>E&?q3DRpV01<$<fTfo at jCV~_~hm6ST+uf
zW#bGt8|Wuu**F!cyUUA^_2i|>lb1^8Ixx}sD%skKql>qo<;$R>*LOijHx?G5_dx<a
zyLS*SQ?2;yYSQ`H)$D_BpgPl8LpV8)Cit`YbrS!x1pEz2@$;RPJ at Jq8@SOzw*OKC!
z&a$5PXL$IZB;c=4ieKd{>52co)F|@*Z36yB$?%&aY`u0Q;k{8Q|JNS=Aly9WufM$z
z-mU&*CxG*X4}YGAe|iG`kxB6>NzQ>t^7udI;a`$~e^yd_oA at XB@Xz(|?@7Q9C&lN8
z=3MK;4}17+3HZ%P at i}5R_xbRT^zi?afWI**J~aSmt>EjPVi at pw^VDU}@7h&rEbLbr
zF?0tWLWJ5{YAgz&|H37KLv~`rRi;ynXf6L5zav-UUz~_<Cd1EnPD#N3!o|NJ5x*=M
zzUiEpfd5Aq|NKP!;mPo;oD&l8A9nFS{&zz8UqnP=`Q-qO(}EO?W4iny7ys-R67Yv0
zVmEvdpFE_*@DD=o!}_-p at uwui7xAg|<3EL7j`;g0mjCOuN%+rCL-T)tlo<b)UHsz{
z at dqZUKRNg1^hHVx|2h}{SP<<YKLe8SkC1=5pZ^<Jq-XxS6Zv-}<1ga>qULX=ui at Mm
zS3vPDS)<`vehEb%IWt~j_5$AC=wNhOdUzLfMZWDD*xH6Z`(_M0v|_GWFL}-`i)0}I
zefB>Qp-_xP<BE4qDpTWzLgpLgleq^e-nygJ$ZW*uu8h&mbm^ug(zVwmp(|y14JmQD
z6pt9){sX-H-a#2bewVf<<o6*&?3Q1Vu{)6xqg#P}nQkR4!peiLglTSOzeIJR;o_CB
z5fO<*E2^C5rCLiddDXk=V<dT=Rg>J;B{?@SpVO1&Q)IcypU*~$XN>M=2YGb&a_N4T
znAMMyWL1bb>m|2!pojccVBe-&{@Jne-{n^7)E5)Ve>oy{D}TOIfoQD{=%W%blCQ?f
z|3{bP!o+<3C0Rb#Aa9P<BcEoB=wq>b9_bR at KQW)(?4S~awZe4Rk$L%yfJKaC|5$w<
z<&q2~k~}#{(Hlv`Ib2F#2QTXr`%>Nd+y at I)y73pWBY=>8raQ8 at JiWn=EHR&%&PwUU
zAWt~=){H$ovD4HzLv5SOZ1<ejF8wpi!`pGW4K6(z&>D)K))-v&X-0Yary;dHq+Yh)
zp8+zeO`cb>u!a*-Sijuvv>~_g{n7s$`%xF?_Mt}X?MIE!u7nL~G#JClq7y%lg|iX_
zH?rpln6;<-QKx5;$8P&kSMEh7|J8ofH?e$!?Vm6+{}=mFLt-lWFZZJ^(#VznkN2Yv
zl+yn%?nk{?a=M at iGK8I1&2)a;{iu&-2+3B>pj|T%=SSL)iW^**=MK%FOEVB>PxhnA
zq3R#FA9YR|21eO;{IYxj|Cjco_S4J)Wd8rv{ir|me09$=S$9NGwx0V@@0o|Fg#D=Z
zH?s<UjI&s~??-jJI&VK}qwebDL{{(nQQc1O4kGlnA2oa-<W)}!zdhKU6hFqzq`pb@
zJcM_j6pDscpK9M}csjZYO?RV5cM~^_`slub at a}X)Lt9EveP5;Qq>gQU3ttt>Z<R;)
zhy=R0$~FmI(R^@Ku1B{zzMn39Jh~m7*(*JwM{=dXm)Qdm-Yv7REbNpO1%3h?vg7$Y
zCRYCKP$|XO at NNQ0zQ4X3Nj+JAf}n2s*Yuz}ESA-;Jh~<~tNOB9gz)ZkNyhmZK{Z|9
z{>bo=u}ZD?i2jx3@)5NV-i>Ir>0BQxzuhCBC&kMDHB>bze|kbbHzh4U$vCga%kSGS
z8a_Uj&p&uXPfo~ZZqj^KIsIe#oZlm#qhtB3_ekEIK(a0wNo^FlTBw$?3#^Xs0}UUE
zuTIO;!5+~AxpL&I&z)EW*u6gUolUYrl;%^+)CTSrJFbHLZEqSHjtMp5%HWJ(dK>Rk
zE$%ex^IM_f;R2#8ZYIm&{48kwD~*JBQ+?wSq;mhj8`p^khTw8{{{Ws<#v2v-PJtW#
z=G#ATH3ITT%vd0E55W>`mvAo_z`X*s_c;$OrIgj7o>4D9e5-pt8b9?$)qY5g>z5%b
zJBW*RRTg%|kFhSw?mk;xl+_)IUV!6SA9j})Y$#1{!;L?<cbC)AS*=nbJZbuAcUe(u
znOa_g%Nudl^bnjiJ*cF(d-7-QVbh9C=WYTg&3_?!{L~w5xk#8g|J6v1=RYa^$-V3r
zUX9g?)Wqi_)&0Jc)%%2A^F5;1d>_GlHzv>Tgw&NWw%7cg(tCdAL4s0~p4}_y-y$_t
zey64;+JQC5)b+buRw(6rPg1{=b5he?kJZQ2bf1)!%v5w2boW{h_xD;4^{j{Ez4g7M
z?YCe<uk_#VwMteX_50{A?v;LSuk`!$pr7h{zo(9(o$Qkzv&WyjHaZ;v_;`6z at w;GZ
zQf336V~4v({Y#be`Lo=8l)V4CM?TeL<;h0px at RoJV&>q{n>{HHj?X6PFaQ0_o-(V*
zcOC$6%JN8;nT*A&dt7C5pM>)W;P;??CL}FS at t&8*bh3IYk9?BJ$`e7W?qU0gs&gse
zzrQ^9$S0bN-=aM(QsWwYhR&^k-vfT~$tL6XNy{FWkD8YA9N_nW-#m5^$@m?-=lmk%
z_u13vXpM#EXGIQim%p7|9n`(B_UJ9aJ2y$pfsFC*)^N(-C8Un8V~+HKw6p5{csysk
z?rs9-pYQ2-u=4M7a1NGu;pksmbsqd6PNzfD7a^GF<J+X;rSdikU!8MV9Cbbv3OXj2
ztM<;{P!`h~XsYZ|^*l~948$=3d3FT17(va!n<FLB0sEQ-FX4QAczfpLpQv?3>+#}1
ziNXt at nPaT}dyi55_u+d3-0d$U#|X(&O;xP6VSnVQe8iv_XB1-;&4TCCztArjO#TU6
z^-|H=61670jP&{ly)Q`5@)srxh56Aks%zu5ACY8_hT8F?)j)@CPHE<w-(d}8<H<(#
zCF(Vs^?C at j)w42#INBL1Xp0Uw1MTHDRE~Nb4fRR4dIRkgvicX7tNugzIE*LPM?q?S
zv<eNN<xS^`jU at SFw0xEROvFsE^{pR^YMri4`O*ue_&-Ko{h#z(Z!@na;()Gt32k&D
z+h~Ztjncm{3%0wmpX18DdKsdRCOTD`=nFPckN#jU5VcOkdj><SasBW-kAdfTdH{Tc
z8nUwShR-1u-tNKP9RSGQ9cMUX#u|vd5-NMRHST~N+)ISS(fR{;6?Kp#wTCRTo|3 at m
z-AK-4X6;mPF1E&<=)N3e`Gt1vn at IqgbUR2VH54+l8-+RzAPqH}MMz}fmyg#sBmwX@
zN*SvsNhRp+>aQq5x%$+({8OwdS^cm8tc+4Cbm9)KpzrW54%+WuDN>~n!yiqNnhQC0
ze*MoBsZzcNA4!qA29 at 9hLD?$8Twe_tZq=lt0c-X_1HyJfRVG<VzB4X)iZ%}Iy(BqW
zm2-CrG|9*9$<eeS<De9YQu>pjawf^A+^^u=n;a9Sv9Zu>lA%eL(2|0tnEwiqn5-eq
zeCNu4q)5ti4oa0&<@_sElIfh6B1vvTbv}PMIXk^6;fNGXTjl&22LO|m-KIozLr#+<
zR_8mPeVjB!x6v-pEJY^)yHQrDHLiFE7t0~ujY9O01u0UcMn6cEDveR}L~^#0*kmV9
z6w&xc@}e{g({EBFMpy~$$%_iPdE}#{4DrGAOO7K)^qrDa)gu|Lc|3XbV3B>|V=0pI
zop$Lnl2rM87U6?bh^F&uD#SHJ?AM%vW2W=-RESb(1~{6FW7lZPn-;~(@cPm+uF-lH
zK)pjlwK*?BK55U2-`822jYr at I&c!nW!!5jkvj464lZijxz1{up_xx>6Zp^>JIT3!^
z4}JG{&-^Sc3kJS$|2*7K-NT=W^=aPJi3jm^@V!yIDigcsyFRb`Xudy<hlA4k?JckF
z`~g<oaw{XRoW%*B9@=;BwDc0=udB=XwpAgHy6dB`YE at a$u4iyy4ePRx=2ag;w?40q
zE=-)b6=`Kiy~xwNcn at K-{lHa-$ARCeOt+rZ at Wro~#_+dzF+UW47nfI}{_z$bvWap?
zDhWSFsZTfly1ZoH*G-F8BV}XvdQGXRzAy{ch2PJrIn=a9VVCa9A!GPAW_USH$G%>3
zgtmkFQ>;-#<3N=Fs>PElt2Tgos2Fb#oU at D5Wu802`vuj(XzAeevU=QkzQr`kHrR8Q
z_C>z&Vk8U6$tK?{hh-txRNnD+eXgA^-l+TX>HyNFA>qRcc)c7M^87jA%HOUm+{S-C
z-#VH at Gcb1X<fP$LFB=TZa>&HmXIB;<AvvtCj?9ubl5?DDAi(}72ZPLL!&Fd|J8?}*
z`&p6Y5GsHKm=<lQ at PUY*AV+HuW(XkpJ`nK}WFHOEf&2nQ7EgIUFBplRARo;UMy(p8
zosJ74eu6C1AWa&i*#{zig8W5;)M=1LABgw~GF?D!s>Iv1I8)pvcJXSHDVOP#08(&_
zS*KJ;%2_%k7b%bpouX~&$LSOlt1JsCIMbPhoLdOYTqOp663zrrkP`A957S!5h_QaI
z0P_6y7IWqb$sR80-KbCvc={)RcgFX}SA>^^4l?naa1)Ax2M9t1JM9*NplyfRxldB0
z9 at W<nSa=Ii>V9KQ5%!fq+jQSGGwMGSRwMAP(Fzm+8M<D$;N5i7!@|Sxnh#0vp5J%v
zbA`{dc_J6c2b$~2ya>~giBsIfN`}2eerHU~adYSjnkSS4up37UB_y%}Pglr`hSM|c
zsdyF?2e`BBYsG`7ToKB&FY}@&i04_6e|!36>;iSK<GZ!Eh1Z<ST$y=HTAJ_TV!SDO
z)n0f_0ykWYMVG)G!k2#w{I<O&AeuiWE&c=ESs2auSe8CUlw|20 at pxH!$%|e^PxQV#
z4n-};l1}uLzx5 at j_xL_zzWtGb$2IV!O9k;=Zd`SYlPdO&3v`?D+u+mCB!J$d=9ljJ
z3LhH`dcrghc??3B_|mU5+!E9TpljdsQ1QB-Zn#3y!6WgIp+5nL2fJ`O^VmE-M9IFR
ziG{__DDa+r<ZTWGwh?K_K_|IX(i+x*A;%X;`6{D+o7*K*IC0D-Kp6K$OdLU|XE4pW
zOTKb&XqPayFRicnHRUP|IV!dOnF&W8cPtet4B>%ay<Umy3ak-1rNgeuz4=gHno!?_
zVS^8*Sn-q at pYWdYdL=1un(CF#Hn*ON-sU4<LyKC&&r$5ry|<<#i>A6$SLrbQ6t_`-
z6xIXrN(4GWem at o-SFtlM#?kMYZ7fzuJu6R%1}{JVonZQ_lF_%pE&U*Tz#Eu#JRDeP
zG#re+9rY4GK5tzPJW8Pc-1IFVIH-<TjDer^(PN;J8(mKS7(uy}A&TS{)HDU<HY)=Q
z%TLPloAz`Osneg;fHhUfVZa_JU(o3fxshXAuq}+3zXPTn)EIM^h);4Jb9oG?(OtH4
zFMf_cw+GZyfKQ+3Qpj$(Qd9WsPoS_5DB!6ZPc~YS#2;28PosP^!*4V^ff8_Ku%Sb~
zTm9 at IpEzf|@z~V_;sn)d3U<I;Tzu<?L;0_~V5fWWVHY1 at o?afk_UfX~L(#tr-4eV~
zX(}!E4R6mF)Om(G&Z^__3TdXPo|O00!=33hcnU`c%wbRFwSpJ>t8utD0}skQcs@>#
zbf)ud##QMUgrzNuzpia!!!ZBM)P%azUrK{S8x2FU__h6ANK?MCzO|Zfn%1XfBAN0S
z!~<W^L9KYbD<hQtE#L21e at UM-YeY@)h^vi;e{-uB at Gy9vaskdNzz|jkCdR_C)wl+2
z1fEPqQ~;Mab{P!^;+_n`@=dv#qnHvs<;bKsE`mV>F#Oy2KD=Bl3;#{rt)g#1L?DoB
zEULgmxVR6I1+%USnB0>G_61tlje=Y9`2Dl(0+a&x5=6MUgo8`TOH=KW at Oe}KBHWSA
z>*4!b<!Qy`8AknIL|>4**YA^?bf_a)qcEi1ClrnPo!AgaEn_QOc6>w0N7Nbh?k?QZ
z;wl~&^Zo%efg~5}>}aIAXY<Yh4wMs{B(!q!uBamD2(YA$mFrCVnwb>ao3iXH#KRYk
zV$6^{#!D^}kIo#2K+O*;<bCk*>V3=q<hr=Le#(d1*ejz$#Nv3%xi}(=!}Y=F_`;xd
zG0ONx4KCcr$j+hhqFL_ZIA2vf8v*GOjt7OH+Ss|oRCpkXN?Y-YnttrNjOe{6)KU|F
zbmy`kaQI=Bs;XRm9PzdY00#RO1BD(1qy9ovg{Hy|IE0F0cNr|+z>8zdnx9iF`hg(N
zw40^Fs&b86XRwCDQ>o?s8#k*gWu5Y3(OmrsE*?R*BR3)2;d;4BDP0~Og+AF1IA_gv
zJ%1>S^=^16ycm(rU>W|PYs)*V@<`LpP*nHoLABGqBEbCV&eC}a81ni&m6}o5GU3R+
ziCe$H*F=%YLZ)zwIdh5v{9^{Pqn1ndZ%N~AFz)CeReKUPR2U0y%sanmYiD0{|JK-C
zjtlCGlH%7)BQzq*2)&FisTL10zgxeyW-#fqlCY7Ras>KL9qGSo;Z+;80$9ea*D)XJ
ztD;ut&xBdl-Ph}GO}whR*lK$J at 0(w^{207pfIYGwXHW+iM<VH~c=<sqH^HL9GjR&M
zm3>tcs*YnR`;<a&0Cir)`gvSoc=BfG5bw)gk2-*(jF7kQQLejKF}*9-FKUn+6gZV~
z{jdh<Ak!4e^=u8&szE3T)MD|)HHe>be}x8V(jd(~5b+bFM1$06kVYSf_z7~DfFx6{
zGjvJ-igJagLTlxE6KW2hd at fR;cKDU+cAbJ^xytnk9Lp1w>qiKLy)g~_cCbC%uE0}^
zOjaB;Y`%XX)b7j6XB6P5dC8`lH{ih_RF48t#=U-{CK&HC{xGJuJ|iELmsAiLg7j0e
zfjYf6`-|m`dm;xmzt`U7V3h{xO%CqYARWj at Dmj>;L0UCPJDo&1xJZLEX^>_gi1^va
z#TukegEaa;#7~fc0+LJ)cHAhfokR{k&?!meV2w_R%K;u#+)WN1AP_E5Za8(PmIG;D
zPYyUdx^gfLfI+Al<;DNOTXFn|F?LNzt2vnJMk`B$v1tP5F%`lW$_*Z7<@F-<*L;c9
zK5rk?^r_Ue at Ul84GgvCPDi<Sj4ySqbFM?TIo*vZW&_^|;K at NKMsUgY|UV?*#Ag{0-
z`W}X$wweRj<>)bJ!}ORueQLje0QIQ7%hi86pMyO0I$!@Ypub0yrfHDgMCp7D(!t6|
z(WRWML8QK-x*JIprECq-q^TqorOneMyLB2QsVKc5Ajw4Oah;Mxl<w9kNkr);oe~!%
zs_ltg$^-z(eEm!jrK|K)I=E~t-xZ-D06>eQe?LYV{FttoT!bvIy)mKLtXn$A9y#j!
z+Wey%d~N;)0%&vG7Yzz*_ork1lWSLy>@|Idk at q6ZOgP`y_6CWciYVt!9LbKyOAl$|
zvIyr*jNJ+GnHc+>wdg*@Za`(;HAvu9&W3}?qz1%XC9MXpV|pr?+OliiZrWbMFZivA
zK3H>(JKy&s at q5A0lb|CuY{IrC&BCKjeemMzF|2kX$@`vm2RW4>pAwtq4fX(O$gOiY
zvmAa_l%TYl1F3UREfH<&wt8j}#zf9hWrjI~ikPtwrnI76oqMw$)N*SSKI!2(YG+CD
zi_k=dXO$SCE~+9QVj>!--)c1606hbV#%;M6n3jkRsJ2nzvJajL!S=MSbH70T7k=rg
z%g^s>cizGFFw+{3%m1+%Dy~Fa`+F2+UpAbEhWU=r?*Tdl6KT7ACbck!Zt<GHzHu`z
z^}8i+gUIon8U{uP^ktk1*caVO24xUcZ9l<FAyQ_XF`7gz37t-^slM$T5bM`2gt)(L
z)c+L(hmFpi0sG<DEF*d)^lDRW;1s;0hyHc~sO-7^29*~=2nE+ at D1iqrM2hNK{DM(`
zBASq9%A?^H?P5CxjQe1;M$oepJNIwW)s^eak&2_*TfD}&6R%Hc)w%YU_3LX+w9h-6
za4cF1v+3?e*ZbTmbgP-WZJ$R?CD#XjKa$^bsyRdsnlYvi?1#V))CV at yes3rKlm_Xo
z6Td@)bcoP2bkT8pXz_EHzE*>@Y7h~x#7;b<L7Fs3GaVO1{G?K#LFzO}qYp&<1le0a
zl6B&r)v&BLCF#W1>y#v&_+p*nb>cOn5<Bp_2|%6j3|ALuXQn(|po0Oe6aEf>yor at _
zV&_}*;%+x8$mu}t#5#<(HgR8G2lNgI6qhKjm^kS&PAc?r1uXgRAt8)}%WAK#3BigX
z>lujSdIhWpX{+n=X2Y9iZ=yiB3mBo|Z3!zE?@U1|CN=e_G1dAs@`b$CYidgFKW&GZ
z<}kCU-TZCqM77V=(E%`;jC&D1?y_`q<~KCz*S;0Ab*N2Rn?Xjpj!sKsDsDitx1LI}
z at 7c$Lo70IwW>j?0$6zIqK}5<t$V|th?=Y6cj6UeJ=K)C1i|!L;iPIsG1ONs?1>KzT
z#!Nw;9mx6Wb5yN*1rxIV)Y8M#Iek5ZBM!S<q&WZK{8Oy}#3q at EPC+lUwdN-wymc3{
z#^ekelWW}af#m)rB-DP2Uc2TerZpL<!*hm>!o-+|r9x^sZ-)KUn<UmA;Px+TjQUSW
zm+wqxfo}+_Syh~{=a#FFL+Zx7N=*7_H(;$~>Ndbb%QEA$hvI4>)0!|eWK|ZLYE`KC
zLp&A0UX+vcnBDeKeX}j3tU at LZkm?+}d^niO<Ys)K=@}a!u3FLCa-G{zKpgE45MW2K
zzsZS1e7qC8#j|-;U>J--p2!%VU^Xw2lK?-k2Z0=fP_fS^6a_j4B>_UsaG}_35K5*(
z9xVwF>Q^pQ2b!8tU6czCN&<vB$%Sflq2v?upd>)3{avUg7pfU<jFtol^(iWtxvz7f
z8vRfbAk;E}VpBnJt|k at HnXAQa^LIBfz(kp0N}`@(&UO=XMdglR>PEOy5>LxxnrPxz
z2QB#ATZ4u8Sp+G5$7mQR{R!R{$E}Qoymrwrty)YEJ`ELoVjm7DQ3BYS0}wF7k7^rC
zs2Eog*PO<IzR<Y`3RQgnq|1gf)xcM_JDW@%yIt*k#}7rl!fUaz5Ff&fp^^eyRjxjB
z%3*Uci|=#|A-wg_RBv!)*0kTgmck03g%<(U3g;r&B+Tf~#(lPz$aV;_O=Ekd!|1)P
z`9z{kwbw8J*#Ei){XrR$Xu;xV0aIhWeCKEp*b!Z$ulLbA_sV!IDnx7uHX5p-e}c7`
zrkqNA`o_X>_{veMxz1Rzn!pz<Zmq$k&nui_bU*fZ$#uf2POXi#?Q?5<#_~(9rg2TL
zACRjz>Mvr|<~mzG17my^T#=5g4b|QcD*Zvl&IPu&F8)L~?td)iU*+_H-CV=0a(2ez
zS2)c+e;j6o^KdMFm9y3Ldu!@=<$AoSz8ecu6c*Iyp?|{F)tNok&LfC~62wK0l}rzB
z?~8l7;N#fBuR9dgpG628H_;wL*>M%x1Fu9QNB3%baW8bnTUv|IQR&X0sC5#26NJ at X
z-7oDWHsMMJ5nYEiWYftg(08hh*TXjggiXw~O8&4$5>)%xpWv-<&|lh4>ClKcH;(C#
z*X7jbMF8!tYT=Ybn>`ky6H+^oPkTPFp|Z&`=XUCiG}(ktw|U2F$hrpORYsoCa3WKn
zX*M7WB3k*(fQhd#z>YQ7v<5(k(L-xl{FKsHK at eWd7_dJ???Hp~^&rFV!lZl!<k`*V
z5mk43kpsF${cy6us#5f7d_U16R#s<-eHaEqex~K4k&3USikvEGzv+aKpj<7ed(_4!
z_S+2e<73X)>)_iF^8-UOS8QNM%iif1fWy)G+W#Su|6%)Br{&py7SBcOFs|St$yXcZ
zi1879e5l}KbJ=%&X at vaBxOx94UPWC;_gabC;NaViLH2p0pnsl>Hk-gj%Y6{yy at ouo
zxNu+)!m${E7Gwy8+_|fr$@Bfm^LiwgTaV_Mh~ctftyse!9p-7WWw1ryu~>AgaclUP
zt9+Vl2?Df4oK~*B?pz+UGV<{5{AE}jsX+gPcjw_73110wgre+!(eE?TinemK=6ZH3
zM<b2*^F5o_f%Mb^%Uh^2LbbY3?QoeZ8So^)>VDFNYI30<4RI(55b9PJs?LRK^g~I2
zP*nnzVqh8VCMF$Nj&~E24lLP{7#~=0KP76$8(d<7v+1|^aM=AHj=@F5gaZp^$TfKt
z?#R*x5XxYF+~SnatpWQ6E!_LNYga}7B;(pa_*!6Jf(#X+Tkt+rqu{<gmfj9e1P#bb
z7XyDpg8=aC=P7f#s)@jF+CCM{jGo~crhy>Tmi-se at AU&#z&6z_8FhdKiPE)kUiM?;
z0SRQU7VCd;yBCU$wR!0PmF-)e$2=S3A8SG?AQuwiY)37KeL_AhUPjSSfuYcOklG^m
zHJtLNk95v*TC$kmqpQgD&OFHwGCb7mJI%)DVbm``a?w^>u|QtQZ at FRzXPNciA&oss
zVy6QI>;im_SgNO%Yh;hebf$<x3WJ at zQn1-x`xde at P?X3m_Op}79bftr;_<%pqR*Y9
z0AYWAAwDmz{bO{X;bq~$_kM`nM^E_=9o3e;-kvj_gVsgt^{{cEbCz{|Zuq4P`xQu!
zQ^t|h8kE;^JhK};W$TUDRR9fjB+48_w}ln0ld&xEo_z`{!R at sG_wH2~?hZ#BJENa4
zXMo9u>--87?N5KhOoJ>A2a{~^HJa=ei9a~NyjiCdNfzI;-()OkbBF-&uSk0p;z;{B
zwm4`%1y{y<`&*>6oU1{%OebBGeuaG}qB~#oM&Ew04}1P!`22_a{6l>HCt->8;G2B@
zr(^y$XAIycH4>_1e95 at +W6khq7!!VW5K0lUj>~}K8+p;b7<Mrx<c6YGK<&eZGyLI_
zP54{m`f2!^UV8;jos^|vdsQwTpk`tYUZF19TC{6*MoyZ2kSH?T&xOIIcuNgt8iZtj
zk|Ux37O`)j_Hw+aZNh${g?~j{|HBAaI~w#m|DyYMeDP)!n-q%H+cWvqV<ZHJHWJ6U
zDS3H|+u{BLIi}QPG9}Bon9Z6c4ZWrF9j~g+M)gdJ^Wyx5Nl;3<Sv^Bd3;OHz)JO&#
z!4H8NWPZ_l)=QQd<(m>%^eSFgbET>JqjxzQ5g}#=|31X{?k-W|v(Rt#G22`1?Xc_c
zi}2SAsG(lcq<g?O7poVeAxyU6l|!X&R^WVR^yc)Sa`4Ot&i76!!I at rOj8oIU)JiW?
z=_QLXn)9lhJ~ao7G!_j=pLCWQkRA-T_6dKA8%=+WS{QCD?4Ld&(m&l9hfpJq5#uBa
z4q*6CvxN3aD=l6(`Lj?ow11kJzOHkg{VM8HSKBJ*bQrF^`IpGkc_LAw%7s4*K&X~<
zP^eCM3{Ij at QJx@Fs6p;>L```@RVzYuDTHco$`tlrxH7eg>f06(swFUXvC{?G3hrw3
z3Dt_r+2B2d>Jn63ASP5Lm#kp_NO=P7&ig%if~`=?Q;~efN#$v){r6w at kSA=i+GV$b
zCFC(KPeItdlgm?=D^CZckfrl5p8XyI+(VwQ%ONgLDWvI9vGXO9rUjDYp3=l!HgRc^
zeE at hfDyTL=o=U>qnN!R%NCU1+q(JRkruvmUO at Ts;7N|k{LZAlq3x=2V!P#C&RHZ9X
z`$D4nIoLS>!KecU?z&t-x%v=twKmLCQUm&pQRDW9T)j!Tf{$`_yL}^a>B-dzFzbsv
zonImn6;%Jx^8?*e{q|i7)#(?&*<Gllr@~TEsAo?#RfOu-5UPE&P<b8Im-?c6k*X at O
zHhWUlqpP~+vfZSrvPV}{a!JXhKDn|x|LV!rHczhJWLK2DpW11MDtpM)C6ucwFvZ{z
zm#bm0mb>-J`tfy-(w|FTj*jlqEZRpd#=g89`^jVZrA!Z)(Ge9`c++|-HV#xsPxD9N
zIvw5dh(gh5ky0orHzH+8B^r>U*0ltKD%{Uhot^XbyfVBp^TLZ)ppf-!W_N#dP<<^!
ziu!hG1#!cl`L{r$Yc6WF4-}qP<%g^(;5)T2s8*V4YOct9_&dXxJ(Frs_&Z#%J{Ugs
z10`rPz~L>R)fp#n at 6YIf)tAK!LNlRqgC`WQk%*oWh5gik%q%goL(mnV{q4``$wjEp
zASxeQCa;2Ud?=HyJAoh>4XStTX_vBjR$$_Vg_{7f#<zW@=Z0XF3gLSUO5XlSUXr)D
zWJYlsQ5aHJ at s3}~Sy{j;gTgdIas^j!DC!FZDG*ebfb$eI&`mJf?W*aIxs|<=mJ&4r
z*}4X;hHWBOBcn2k`8xj<;00;JxZ2S}D=bAcFSK|cL^`jPc9D%dSAj<7;kupFCm5(O
z at 4S%RfEs~%#vqx2QHS~7gqf(l?qZ0Ug&xP6p6e6>RqT7=R)D&=gMrJ+^N{IB<p6uD
zJr~#}uw|*%IUhN()7*~*1LiRqGGH3@>re#y?n}Inysh&<{k6As7J8oZ>`yO<+4<hH
zw+ms&OpHqH68md3lHKZoanAJ0?qGM at FA?kp3L2#Mc7PMoId1ow{Vj at XHvw8_Vnyd#
z*W>&WDX!l>K}6P{6{Fz<q?7t9NW*wSP#7 at 2HLax`Y^`Xxiw@>v=+U*GL;Deu+h<xe
zNV^Y2`~>NvL7Fs3vkyf41bOcw*7-Aa8l=$&B7TBAD<IP=@nv%|&h6XqFy(%o5<p6Y
zm!f-vh)#j%C-w%vlN4{KG*=0yWL=1Th)^DoLV3B+*BN>G6S at NG0(R3M`l7?02sP^B
zLYN0 at 3S@o~qlQl0x97Sq2m+`UTiz}%WIraRL)0|)T7PmO3+{bBR&74FAFR`n_!M^4
z<ipOG#cu=&&SE5Z{Sy~GNp^PUL-Jh^#+PNS4`Z|ms_)o?g{<G;I~`18X8khsLXBqp
z?U_=sSl at dLrAcqc33&#An8o^Zu$HAQ8czxlpg~~25Dfx)TtM?xv7d{Er_yodMEq=|
z?;x`Pp_v*Wo|T%S6f;u4r9pBuNWPDX_(^4v2I<gp(&dvA at e|}u4brMX+I=A6C&+ag
zq)CG``#{7`kTDvhPJ=Z1K*UdwV+16bKxXTdBm%kZSFD9(!_!7diHT5&h|tUxG|!2U
zKZkTSUPCE5B<x<KzE^WnknJRr<aMLYodA^nP9qCW7Q0itZ9 at C02k4U(iRbt3*)L_>
z#Zx-hW`?Yza0WdOduBd1>JNm<6dNDeJx-0AB{Itq&JAK>f~_#`=_OR%Unk1hNd=yq
zjmI5DG(2G&W=zgro8XhPH3<AbIlBue-y>&}HAruAcD4rT(9PfFYku*w`H$5gts11=
z2O at rg?5jbVG)S`#MEnH#<b26)od#+2fry_VD+DB&oc%+mB$2b*bV}~-9bc`acyeac
z-$Vgpcjc3{a{$9eYzT;~p-CxhSwR at 4^4)&xc!03QVTTx$Ck?(5->b-7VtbD`s<-z3
z_&i^GZ$RJ&w)cZT`JVQkr9paY?@KjEhi-;0Uo(iG&2X9qY1JU at J`nK}<R==WNrN=|
zK*Udwt>eG9y<ZWKWbOU5PD#?<f7K~T+Pgtgy!NiSA+fC|B3;^A_bad^au3K1<ekmU
z&IN|LMivF5)ldMlCurCumNDoLAuE?gON at 97z=UB{!{Wa(=faDzFjjI=$;F&TIBCp;
z*B?QyHo)H3d51f0_~P3^*0GR?@ziB2>>3f at d7Gx|5lz~EB_Hn^A(|NP!fQCBz<iFA
zlg})MKW;ro;(TA?yoAI at OiBE_X1I)$*X4N<UFP;+{>`fgjq^$L-Uv{l_mz=Se;@Kd
z3<kk2pMZ#;0`l5e5s+4<MZ at hr5b+aafd*;PAk97y at e|}W4N|8;8hs$*C&<+Tl1$9b
z)hS8DY^Y92B4&q4N=(d9Ptv7qV7-ysPP`T+Ls6}7_&Pbs at bwx1^|+yzSOkgvQ0Ln3
zAHT-d&B#ov8E8^#J(FY8zV^g(cI;X`A`|MIwo-l!oAPes9oFm2mKXo6e|qpUW$-%z
z2D%XMQ|{(+&2qElB>n3vujfw0c!(uF?2^anE7=eDsSMWxp#Cg3W^HG+V}Y+>FyLBf
zW-D5Y)v;hSV+aq)^3`SZspvyPQ4{khoI~w0>R$tekisci%mYIzki}QpWS%k==VDLJ
z<Fqgnl+sF8bE1eh at B+CZZdrN_aUo<@ZSOou*I&Zj#%gjVPOM-W$mP87 at _e8U@0M*5
zbAZYVl0(q|zV}m2t1wi&x^^kwD=3ea=-2MU&!Hu0KQS6MA&0mHvgTlHn>zsS9ngki
zG-P5WiWng^Dzo#C)Q6vjos_>Brh1uYh+zckpJ%iFO^ZfF#Lz$<t;jdimpPxHiFLlC
zBQ~(gag9naI&L3m^e7$oq{$|<*E^5%_N%EgOlvAKd~;T;Tp=|QcHGr0+enmcRm}ya
zH8d1G4 at E-_<D5=N4Ga~(T)Uz?YNA|x0;z#@DUadss0ZIzc^u^$ToySLv3+X(uAer!
z(bzd at gu1cc&d#|p{kvczwx at 5vo}9jBblh?*%Y0sQc+mPiT5SuhTPW^;Jf6zyD<x(G
z)-}u389{X(3O>f|CS%=M$QoR(4lPqJjIpj5jLQ$NI22cvOv2 at dA9a@(d{CCYE>!SF
z2`(v-Y|q*k6>GvWz?ib4^=0anlJN4(QC7xaTz@#I40izG`ooMohZAZ2-Gr<ILdqyp
z%f{gDk#3l*4A371`tNs#3SKV3lf(r(Vfq67Zd|We1U!a{cEOGsZiAU?(7?0RpzPA(
zw#lD62O$-5ly1zDeG&ez!ZglWZbtjpnakeq>-3REtw$9 at IHG5XC`~y-i_sRu$z`I4
zqQ5WWMuDu-NJW-NQ~lnIQ?0P{j at x@DEOX=1cRF9{b)a&rexQykvT)@i?ui`8dm?fD
zPP77x(O(5&?=3G_SC+n}yx at g+X%+#MChkl|1=X at r)Eo at VrK+_g+zJ(DK;NJm&<FKZ
zQrtS(;j%C!Wety);F^X5kP%!%f*U{f);E60LmmT=!%}N7#G_0dI^4R^*g^T&;Z*CK
z^W7TcT;8n__>VxVj9C|I6<H&#aeMDz!FD)5VeS^kdzR&>!*<l+9a4u&m>NC(ZxvX4
znJ_v&|BLJEVxtPG9j>*EZ$@XJ$BFGvO4QS_vhM2X at AjsrTR#Ki*nIFN=;{7Z?znQ_
zD3^->mnAVD{B95DgP(_Foa=2q_`C+`O>cWhgLFWaQVpo}8l+W&w9|3trsC(|beRTe
z(jd(~5b+b_3=LAJK^lD^;wQ*Y1ti&knyym<(8d!C6rZ9&lg|fVloW43#oNXlSrYX0
ze*i|-NmJ|Te*g$i8n}8o8a$<*e(z6vYwy!RC_euu)gRX0-;Mg-_I^u)^w!>sG)RYT
zhAv+-h at Z`Hrv_=&AniU7 at e|}a4br4RntdSRC&(BLQl~*0eIVi|$T0$vti7{!N|N^8
z7EION8zseS at 0wpFw)JyJm$vrl={1)p(b4Y&peW6K*>Qwv)Q*iYJ?sKlU++d|)wv)+
z4 at Z0#_3%fKn4pI at BR+v7kahna?~mLySlGj7V0h-v1dRS!kQZ#lWJOv7Ls$}e4&FNH
zlsgY*zJk_SSxcZ~h=zVXG=p;MH~Hn(wYlZRpTN8wG)BJ5S?B<+l3{F>wa~?7+|yQj
zC?BjS=rD`zn+`Icrpkf;*e18;=7$?vr~VHp=U}A`fd4 at Mg#G)qzab^45BM&G(iZ!7
zLaFBHqV)}}rV-o}GR*BLX?{p`UkJN!yb5FG4XO7-1z%v}E&0v(Ej%pHjlWTAI$Kzt
zP;>@HeAwqh#Zz-?ig^ZIeP{pDqyTUPvno+RJSo~1vL*wv9}0=0it50^Iuk$`^$#p4
zjn1_aDuoXDxpO)EjJptSEI+#bP251|tueWK(6D4-7OytyN278>)|HsD{XQRBYY2D4
zSz}PUU*kDeFnmq+qWyslfa}tf9xp{@JGYd1rpktK5w!@bJ(S`u^K`JEF{8hEx)l7k
zsOpKZzC+uybAb_S7uy9KpaG3rPDDnqOCxeLTqt$0=F5aJCZ$>)doWq(GRbIYz2RX|
z1m7}?FV3l1h54!d!AP3JH-&I<H#EXrQ!Ohm-i#8xjuO=jkSt~7*|&_)r9i$0l|x;h
z3EgDZ4C6Lx=?F*}_A6Cg$eH>CA?y+e-;k4rD_mBXMk%flcuUrmWA$x at XXIm-*)sse
z0u@$O*oY_Ma1dk$CqD2HWAWE+wPG4_0Jv+;Uk7L6!y at N8pdx_3bvN!)s%(_4npFW-
zMXkQCR at Vp0n_JVt^0GZpUhMNkd8;8ot3$;OZVp=KmKRM2Mf<+tvGNW?U77`J5*q9<
zG}xi!rxy(444ucH+_9^X<;QOApi%ZN{^P7a%8x3Gm0#q|UCpHGVa at 1i4aB;ot7UA&
zfn_wcr?)5ChkkLef8235qQ&fit5De3xU(36A7~$H0Lu5+hkmU=dK-7n)F2&bt5kZ%
zAPv&0LE7mg>KWgN2tL!KL1e6PLB!8N<#i2Gr$J<_aY4jSkS7Er*|_s3oswkSnW0m1
zcee*lloW5=G3t*?qGyx<Cdl(usr8J*08(!8 at +PqdqRCV087CdoTYJ9-v5mF&8U%h|
zd*3Bu-|ITVWDU|=d!MaAI&?F1(Q%tW{A`9}HAt%lY4?GMpCJ2ckR}b%>;n-$K|U!F
z at vPGzjXn_Z6J&*eBx~<~=#(VweVa~6(%!X_;<fkgdd7I9OI!Q(jM1K+0VAN-PdLW_
zlJk7eeh2x;h05W)t at Q?fykF1o at RQo_V*4ZhjfJ+?%oguz5qD1)R?g1Ch|Rr;Sg_4v
zpSG+!LmL-pp24&`$86EJk$i|IYd7i-;~rxUxZI0f at B%h98TAiic7*vA2A>dCfN?k3
ztRRP?hP6h+S|)kB1G&36KWKsDX3P=uLg`<z`&}`R2k$Vjo5irj81=Uh1<UN}Yi+-<
z`f}eg*7V1klZ>njCzuNB=hlc!BOA9I at H`$YW8QMQD#HpG*2+~G*2}q+U6u<M!*f}_
zv1ml0kv-m=q{<47g(IrCNnogveer}yS(SyWNwUj_s<Nw*QXMI)#&spCtOlr4fjSk|
zObS%Ux*UW3FjF-!gvbaT)j+4bc!yE{ACx-QpO;&U^m*m2H8=-xbB=8pTxhx(J6wN{
z4Z^>}{BIjK2#?g;DULhS{Z6^>I~M`kKTaxFn>&}Ai<>dPag1Xtp-^qS)MBW;=?pH*
z!^h}+=PzO$fZn&X3i${|@1Dv=z+w=LVzb3h>0bpTfav2b`Ym`DB(`pNzXsv=3 at Z6P
zD&i-V85*PmB?m|s>%pZWeu7-2L0UCPyAMSC1S!@aO&X-x2O at rg4AdZX8l=$&B7TB=
zbvjElqcRvhzuLWm<Sf0A{iaR{AO-V8xt!!Iy^y_Br{p4~&`Z(n at Svoei3Bvz8%F(I
ztOcmjxaKIfb~qC-Z19F0R5>I<RB?S0b_z@>G|fxyX6oB?umXKHFnAkTrqOULK4-D+
zn-;eKY8alqtZ!%O)FyXaHx`-L_;78mxtFH3oDL$Y>hPx;%hA_PosU0(#go*iCS#$w
z0Uw9C#>l>(henL-E9)YoHdy96M)u at JHR>GzbQsyw=0`?#SmsACRW4SeK7z($8`-1Q
zm}-;_e;3>?xZQBOb?%U at hAE&I>pA2YSSCA)<0M;2pIwQTw(iUKR&Wi7{;*-)97KZX
zX0W#;h`!?`(aX(()%MA!vB$=SU4r6kB~<zbQ~ktLzeP_`Lc5;nb#k(WsvZ at AM$ru-
z?a;`6a*CFJUAH}2fL7UtCpiZT14bL#9^!1y-?eE&TLvyJLdM<i%$Z9l48!?OkeG|(
zU7>rmWCHx<gpZzHdIpS3-wyRQjkMV(z|WK1`DwK{mG+)(U~8v6ib5eJ=Mjqc>}fpP
zhb|Id_<Q!xhGCnpxBt|BnV^WBjnBcAkCOAvf-e^%SGzbr398ph#?fYFs;}9(;|8U6
zBixF5S_}xt-g2X!CozKR_29D2*st`ZK2WfbiOV{`as^L3)ZtM^^Ym+>v(WDPsl6?O
zeU=*^tw;}A87qUh`bgk#L~z-r{nUCMp``zVeP(`8ciypoj)jexAK<v=7B9T%K>E^G
z7<aT93tKrT&Z;4M%n%y5AqfqgX+|@S>CxEeXJ?ZeZpp#E)h#-6#_TcjSq at rh!tfka
zx40Ri^>{zkY8K(RCHx)x9HH~$28|<hc6882c2)$9$2OM2A|B?3N6Z<D)^FQTvTa+5
zdcF9S$-nBH7T at y=MeIl7_SKYMm}(6sxKhs#v7T at 18?WciyY#rXtTWefM5gPIH?JOa
z1zi7IogK7DtTldk;hi}`UVl&ae!e_7O-Rx6B>SsAzPv?Z;~VEI7{c&WFjgu`&KEHY
zsyB+(mz)>GdC!8KxI(RO$#`?yR at yHhn%wJWMlY4Sy~2Nhh|&Ba>nyswPj^8Ec)%BJ
zN9zMF7~-iOs1xB1#JX~f+w|6p9Dg2M_BrGjdw$X5+MDs=1+BY9E-B74x3hAM*)so*
zPKMwPcq6D5X}NvfT()^X<gw^WQ^EhqJ~Kbja^i-KnV7IrZgqGw1m#OJz1_HDxv_9P
zmO&;*Ff*(TW8rC~X&r=(Lr_A{wM{|CnI$$Q?vdk6&?m`_Vgi7IV?U4{&nmjSOy?p%
zW52fCzqXV)WY(2q%%&EFv0KF7It@!Z)o5<F4Bein<4^$nF;RDeo~Y{}MZFCRZr>Ge
zF~Zy^t_6MD7bWVo;x{Ib at 0<+&q;6&4g)EoDfAw`6kHLh{R$6RN8EmR9bLLKw at dwyM
zkEF5OQW~sPH%hkcTxX%kV8AP=_kn*-LC`%8vZNdKzv^(D at xlOhpIzMbY3Csu7-TY?
z`*nQy6YNgrUQH3lkukZaC557e=FOrwa>)|;F{4#|Ox2FcT!r8+yB3F0U~#dgbeY?}
z))E1IY<ice3K4o0cRpY!^$ADqLkWW6+51>UkzG5zDstf6C1>Y~wg#gYaft@^5rdgN
zts<g_9j{_>%W?t`A$MHB9^*QcM)n(GjQC%$U)@o}aqEZJuPTA at f6spP^ON_)e)aD{
zU5fvA>{nyJ{l~Iju|2-ue)Y}?vGV><`_*+0&VTHY{YvJW*de*J5)w#-MCP4TNH7OG
zInN$)A~P`_#$3Mii#c93rqr0TQ9XG8y`8CeY2A2ObH_vX8w;2+z>cm6Mln5IU6zG)
z{L}J6YHYsQRwm2#AvHQ6H%e^;!yq+k{e7qmfNcqStNW&$?iyVInx+{Yo2ys*Luz^;
zgk?-v?Bp~KdIfuxXngR6NDTda2$S6$3`W?~P%}*SJOrcVnX;?87&*pCCOHAS(Z29F
z%tOLu`M4->B}&`#cwPWA#BZ>nJ9=F at Kjbsz6PlhIEZ!*_Z}r at x0I^G0b5!*PA<+3`
zT>mKN8Kq!!Y<hS*mf4R7>#fVNd*CB at V3s``JI#^b$moi#%lp(Eq}CgYLRmW}m8ekm
zPCbqXQ6*9hD89dHysEg+WL0F^E1 at T|%qSwZg|pbW+zZ`{6Ouj#v*7W_#<@BhyO3GQ
z##xdL7{%GCE-Xhz3Xu_`ei*{O%naP=6cA!C`upO48}&;N2vWZesr4aVQz&Nhnj>lN
zrHv$4rU at Z6AkQ9z>J7naz!?Ip=Blms=fQ$a*#0pSog&S at lSykP&ChklEg!=vRc|cY
zGT6C57;51#qtho)vEb`JYIKFdrAsxLSi!E at w>wzyO=<e`p at J9n8#BhN7k~$U(OUHq
z&ZR&cPC;Y$AA;jfn;m%w*1Nx~JPTxpVj0{eTNo#MKzE3DqkohBe6V1xNBAhr0ON$q
ztwBX0HHdV#IQ@}im1n8-YILC$%G!bU8 at R*S3YjdSI5NJ%jnCd8RVfnb{2q95Q4xJg
z?8!X6XFWzc1o!a3qJVv{xJ)ArgG+oVdLq6*|5Eh*$NNl%cOk$XX_<V|5|?Q}5AAhd
z@<hM`q_=hG;Tohjd*NUW(t%bqQ*7+o0eJwURt+L^XV;`Cep&|J)F4e7q?wKjB7TA_
z)F5>lq|pZ=euB&ukYx748+1y*+-)8DQk{a%EpelKnWV(*g}8YI8|AqjoqOf;k?83I
zjP%*`^!{_K<Go?FK;HQ?^um;EQ^4lp-#|uBzyT0%e-*8D(hOKWQQtu)4;5^ZZO7}S
zurSvZFPr>ZvC at 5un4-6f*76i|v@|=jyx>1)M^D4YmywNLV8+!DfSWOBe1PK|A<W<v
zmP4L9Mh_=2Q{haeD#y2R6S{2N0^3vXjm;O#XS#K^Va0mS<QIMPu_S>n8edNOiq2WO
zpTc?<j%9|>TiI(V1z3G*_-F>?wiYT7b^_rbKQ;mFblG>-d-cU>{p5ROxl$?zCKcW>
zYmCIa=)=C9b9j<c7lE_;Onb-C<c_|i^Y5n2Em)(d64(LO-~!_pQ6*^(Un0PKz6Q_h
z+Q$^&%wFudNVh$FO at NLCH%f2?7ROa%uR4_GnHV`aPg;io%e|E0JGqYpx!`)FH4(Gk
z=~<>4hLc68MqF<Y4DY}(rz?Q~AC5US?S;`)&d`oPC0q{p5xF=|bQF>EfefxZhja~E
zOt!hjNPLR<lqT`BIEg}#0M>|rN5TXN42>8Jt!n}#fdMf_;?=!961;)J%|!)B0Bc00
zN1_TOszIU>Bq~V)V@!<1uVN&4$An9w8YF-vmQ|O^gS4cY(P!k-Q*wF*w}#a*5)?5;
z#3;7KDAvX(hKUwZ50FSGDyu>s-T5RDeWqC`NebvT5iU;h*cizVIH8r=4if_;i64qS
z(hA2TxdwiaY^S577YbQV5x__CC#Z8>`;Tdodq-pkDku`&BW06D^qDR?N;b2CR0l#n
zQhW(Slgf*cA_7PeT}Z(i7)`@C3|chQS`AqYD0xlG$hMe-OBHj)`6qi{6&8qSSi0f_
z(fK#{XpZ+|_;Blkbiq<+M4t#CB%G~=q40t)ZOGtZGNfb>P+=yax(Vzn&=E26C&kGN
zx_W@<Xu&EtF8NA$L4GO|tOu(ZQj)I1OagfV`^eu6qB{4_BEikQpsNQ2J^Dm95?u20
z;YID;718dW=fPF7gV|Wvum%CxRv&DJi=B}Tt#FO(xrB|#7HF$MmSeN;)o2WuxDZ&t
z9w3&f!VDpD0~~CoL{}xT3?jBehv*oK8f=Ez!W^{uGu0EB at WRQWV?D=&Nh(aRws1H8
z3RGJ-$3wtIq6_TkYV=&V=PcG?;ovSV&7nqH`yW$Tn&xilIGMn7>n>6QnDA7R8B@(=
zB<ks(x!QfIkU)C9%DeB)D(gZem3150SG612Q#x>r5E0oUuzmDu-v7Tp)JvLZ&Dfzm
zY+r{gVAwzh>K^NN&&t-ZWa#~kdQQuoml2AWN8(?G-s4aSozy7dN`{A^PTcTDXim<Q
zcsN2MuoDl<0^9j0g$w at ybV+AjJdDlLyPWIe@Ou&e{dhRa at TGD1ONrkuVc88+w4U02
zIz|r2Ko#)B0A9)~D&$y~3`m>p>OAVU=-o`MTsh~V9PT_mMrWJ-biU9D^rTaPpi3v;
zM~6_(W5~as4%p*9gzGe&oSt;@<8(TH5zh~yoXkWzQR$~Z>j+J&18v|do9>#ZFW7hb
zXc5W at qRvE*gzbX$v&DY at C@EKKPa5o6^?+?x_-GKyX+b^v%cW1S{z>SJsElW11V$O;
zVzYffoWk@<hntMtdIhX~nZ`q-$n_9#M__;xyw`sotBL6WXK&!e^bJf;B>%hY!*%|f
zkh3 at mckB=<jd3b6`Z)82P#qBPMGGC~<IN+b9vJPT(}<v(8`DRJP|p5I>D(@KxcnI_
zPoYa;?>GgV<^4*oS+55rUq0Tm&k_8-KJ+XXz3uQ=bqsSR^FlP-I0&V6mwnt3$a~N4
zy8Z-+j=d5b#a66Vbq?`70XF-oY!iGQC&J|}w0t|?_2t@!xxO5Gfa}Y$`_YG)aUXHF
z*l!(1ysNSPS-i34ES#fs`ye|V$MicldA#=ZJSfC2dlf4HORUeql?x*5C+Gv&3s(Z`
zp at cFtoCXchZURS_idbtsiVMBSiGcDVpYS5{W05PIchG@(@tLvsRZfo2Zv%!IxgTG#
zd;f~;2MR at hlcm>nFo$b9E0e9Y`m8KS&Uu)#A7xr2^Uc24s2{D#$~61dR+)XDim*ZZ
zJ~dxEYqVp-vB#q*`o`t)nOtHX$qs)%XxC|-<Fy^$>RTSIO_xVKOeiqCwKi1zr7`PX
zs2~_G^G`6XzC5K4e<4O*Ufv92ji*ANNm87GVEQp at 3Gq>))<H3*+}Ce3%wX5!N6Gb2
z?sie4aTHTfu1G`)cqr8_$^~(hDnXH52!1Y=9*TpqFk?r>Q0`)t3Dz+QjGn4Piifzy
zMcn*TuS9pTk_E9}B4U#dk+nyTPsI`0EQ093<F5^^N4j-5%0;{}j>v`-L{jL1*ntQy
ztEae#BY@}|Sv~tO+8ys`k$_d3>)^^WcfCjAXY2TY^Y@<dJY)d)N at r=$_)A%IOKQs5
zh$Qy!q|c!l at l9}?oxb>MHGC`M2jdg);P2M)9gNpDZJ@{HF`tTpCy$Q+HkCY@&N>-E
zO9>yx-++-hhTqu>e!g=_GJIag6~pKL&s6-Yocd(=L;d(xYJ8C?rx_&T`i{RGqA+^(
z at F6NIMLtBRofAk0=k?<C&<NJCa`2Y%RQMDy=d#`KMFa8p_w5CrlImO_`1&@xqO~0I
zdCRZ;?O^u6eVw6NE_O?Q+fARBBK;XR9qT!ipWX29b<<6)Z|s&n-A(6as$}>Vy6F>A
z at E_);x28z{shi%R(_0MI#R4cU+RmZFElBi-uS^IZnh;*jx|Due<4;Zq|2!eQ9%C~M
z8220o1ICp(sPO3Nx6*%!_RpgKT<!lo{Uf#iO8QUL{!8dTUi;6b|L592lKz44d*fO^
z8297ys$*eh-L|W#kn$ECj-3kJf1tW>3zT}ETNcz>E)uLP!6IC6*=J{t52mji8(g;|
zRQ$<}2Riql!s7Hy+=m=3{bip}bOK5-U>{txJlI&+&sca&VCaiCXY!^i>|x&!=|2QR
z*Nk=C=6E&MG|}~aVJ>sdG}FH@*L at QzZk>_eIfVA-K;%R-dJd9#4K$M5&2`8u_PnhL
z7O%PKx0o)4qJs=_!tC*+(xETi_+n|~KyO8N1=dRk3;~l`+;P$>_U!QIeL~0uc!km(
z at Zz4HhG`H^WIGM(hW+<378a4KdR}&%yZUQLz14%Rr(ep=7$z4-u+feiI&cEhIuFh-
zVZ?;#C9CFiypmOeNmDJpW!Rt<MqzxDa52f-RdcPWuvKj|_r_(SBGXpy!#S3FB at g>W
zApca5Y0>lHs$rckus?=UH5#2bUd0P<Pp`?hUpR!{>sT<k2_xC~%+(o(fblTzzBOoz
zoxI<Ow{q>{!F9e4VXY^7plowwYmyt*yH>sq7RYrPxH2cpxb=3(33duVNX+P^SnK|R
zgGl`mj9vF#iLvP9JhVk95BHR9P9Gi3I2Om;O0e88bkefbnF=R67oMCK82XJ7y#@SA
zhqf8Fyd<7w#x2YPRzn7mzzt9UpT~$882ZvpmGS)X{2kXN(3}ekX-!1>jbDVgTCfTJ
zmv25$zB^;#G^`0r%#5$h;@75(3`9^N(Xw==pnbuif1a_hR`CB}LhW5rI&|5MGm)X2
zO3ES`d1_lp<hoq~hCelV=?<^-398SrD<{OAQCsZy at Y$Cae9T(8c?L!KC|u>{Y(s2G
z<g~m%q);PzG;Y}C;1USPGFG53-f6D;wll-Tqi!X}lKz9ZGN|6=CX;FG3vjF1M`rl*
z^hV&~^4KNiXqZkcbQgRG5GF**((xtP<pjp%eKX#OiF}U>%OD at G*Nlabej&HH;eKV2
zQEn$)ZWiD)!HSy0C^$C{k>jfG+B?{5z|zYn6f{WsI+$B)u-OXBX<9N_|DJwQ`<}6|
zZv?NxcqBVt@?`+yS at E{o0iB1%+Rs=xJbma{yJ`+G)pj#FBi$_CS=)&{2p&D=x66!<
z>SGqaR8wp$>|-n}4h(IpIl`Mq;@bB>WEwuy;lTX at ccQE1s#^oqejt~^7k^RvIr|I9
z2EPB|oksm_5G&UN%xVZ(zr*Kon0%^bS-4+1Sn!Tn&>br7FlK!OP<*E-{7cvzgC1`3
z#V}die44rVk%#pUb1ZY&b{>pw=jI4&KQPL{_JbT#nKs_F?}FQ9EF9e(!4^G8U at ab6
z+!0a}V<(bO)Oh`2C)G)~;Qi)H%@&UVcjSONmIJm=Y7F6mtnhN7A5z2ZkTs$UZWj*g
zj_59p;3zY`vD&wSIQ07`cRlG^bRf%s(3)dpmmotG=r7Od21M<L&SZ$69+%9;-SFc#
z1I3<vIR&p|0DBIcMBtO0=*HD at Z2qeGg@%Vc2?a$Vkr`}8WI;i96zFcm`ylAZu-kB_
zeE>+5r~fB}&JHEUOwLzo`-=l{zM^Ct_QS<4f)jbn>S2e+)nZ(BfKVFO<2?PDl+M~B
zx4XhU4brV$jBbr<T(Hf at 3{<tlA)c~G!~Tt3;v1cZHp<;s_L1xqxgnWTZ7i^I12V^<
zPwe}UDHEIbNw at QV?B@<b9(@Ab=-mzD+q9R1gD;Su>#-j9Rn3{G7<`;^<MWCfZh^*{
zcNT;Q#>dgNsYbxWM!vx4x#Hr<^V43lV_ArKDnLJgu})6jFEgJWuYY^V*3+LsF_mNQ
zlVqfpwIO2`4PCN6#6 at Q21X;QXw$LrDyp-C_O&Kp;9G+!lpDOu at PPaJ<dP3bVRItTd
zwuNHX9h<2PHV?<;&os;Npcy*70vl)Lu~cdY{||L<0wz~c^>NQ66EZ-cCqi&!c^!1n
z2?3l4=nMhuNhaYo^uWj(*^IIn_L%fQSdt8McgVGEjUtK*zHvuT;T4SmOfpHxOacl4
zTmmSBHMbcsVM~StGvDuj>fT<m=&L^O^L^hu&vf6uRduTB)TvXaPMvcqJ<xE?MG?J0
zFhn-ANg&!dm0n|*+Pb3a1&u?#W)6liy+n_H4M*A092sp0){lftFf>RgSY!u=?K>Pt
z74 at O=pSJ3kdyl=sVty(HjNDj>`K?>8=<C7!Ujl?>%`~E!AD`bC8#x8F=2UEHr)|Xc
zo%>@kH%zbFMr-0&VGT{>_uVbY4R03n at KekJN-?Z)@Uy?rWPxa{e}Kf_d$zbj`B-rL
zv at DrFHlA3vo?SMybvkENRdma|#en7pfN7Md=5jq80S)cd%Z*Zs6mpCz(}-pzQ6}=|
z*BAc419+1k7 at _cQw_ok7tV^T$N<@%FC8{t3*W_gb^@T3Ff!ui2KFE6?+8Y_q+AkUI
z_id-QxzLNGkNLu|s?*#$5Inn=riI!B-Ecc+?yxmFeV&S{Kugzy7k}`;@rxM$s;&dZ
z;xqnIb!wmPSuItm{n5AUVvM$y2V-9Yv5~i>;+ZnMchm_Fz|8M;#Tg>W&gMm*76w}%
zO8st$J#mxL<NZCs-e9b3w$blszS(hUlbjwTCdD!%ZBHiehg=*^%N$n3W8FMv6WU(F
z4eYJ9Y{nasxtaB5^{q`{BKK(p^oeDjqA55Dkn&<`w#*uM{aP#|IhJEFUi0H6eh?m<
zADdDiHNOCPA9nZ~I|y}<$j at w$ZGV06U)EE6J<WF~h{bdYzp3jHMHWxwXEg+W=Z&R_
z>^CwhB*!w^w=1al?H0)~e|<yn$0(n+T&u{ZaX5-KKa9ai>o3P>CQq=b;HObuG41b!
zd4HYYngqqNqnqTL(-7QL%7*=$WqUd`G2uU3c*BUw%^#yjTB at VF`rzcKjE1pIWni(O
z2UK4#@*=GBlN8qF47fan6}>MiB*oo`u%bOI5NttlPm&zz7Bjy}dWeugM}PRF?(X>q
zHWrSwyiAou?tHp1yCGOw%Dg%FrHGZx2Dz at Vfh`o2*A&S;W^*1ldpc+*f6x!0a|t`#
zQ9P5!Ob<S^5UQzI$`0(gG5b@>nLlW{zUcP;&?J`dj~g$?<U2pAXAUWS!_Fgv{$itt
zP2$ng^T+jnO00fZk~e&vAs~Ij&JME%=Z&Dz0G+re-^J?Zm-b8Af0_MXy%SJmf$R4<
zV*!zQ at H9A(>9vB2cUXMJ%fUT2XmiloFMYu{n;$hs^TTE3%JqEg3c6mh at R>>fHM?>z
z(fT(c;L&<{s$urzjb5uE2Or#D6R{TE=X;a+r;18flbh{8Fj{?(`de0A=I!P#@vH8&
zASITKs37o>>XozyF=0829oDv52Kpup2xmy(T`$VENmmQXz*9DnbsfZ!J}8t&tRJaq
zTrU{*0k+sxkh?trJY?aSM85ci&`2vlWtr7(;hH^)_V!k>oc3OTnhNjm5yEfnPaTTz
z4*e6-x~ISeb+FkuB(kE`7_jKOANIAfKz#DSL|;v#+MOt~PLr9Mt?Y%1$>H|}^LM8;
z`QyeO49EQyXD at Cq-B+kbd0Seau)od^o7goBLp!%w^x1da+ at SGtL7A4;@mwC1DO*)a
zT)dH1R3xtBMObq2n(Y!7FS5iz1zY^JsU1PuwP1(i*gKSzyL|y)L>EdOS;9NJR5q)z
zOs%SwpH_N>vvm6eCCRIMsI8o)A2B0;eUCu7NR9^@@QXT$^5_ZdVUb)D(xvuzGM)iu
zy(Gj}!I?lls{(?ju#l5OV2_em9$>P`(YI?~>fEqx4YGj_eh>oMX?)4KB%b5tXVqez
zQ&9iuY{>6u2ldCY=P-taYxoH95XP1Ka{t}oy1zm(E at RoJMMv)z=}2R&_ at KcDc}26A
zNNI9TVH6e47d=Jk>}_g;yLW>?I4v#XH%j-fnZnMY_k;_pR#e!hNG!J4qnO|aZ=MU{
zuuC!x{~y3&IP;EbOy;m8$(<CJh%lN60PnboEQdb%TY#k&?clUV!o6#iLDu=-w?X?o
z*7{tTzIygCuHSBMaX)B7BHhP&HH;Rsz2r(Mz^JBTwF1b6SAb6B58FGLYa{?3E9G5O
z$+~T(pE_b-QF1nn=sT+42u3KLb$TVxAH<CEwXQ$QyRbGnbVf6W6D^v@#*vF&@KE+_
zn!mCGK1fUFTl?0#_C44ToLAO9`gVVVI;GeJr>sd-|5>5{W~QlcCvv!kogk`aOD?xC
z`esyf#c(LB_1MN(Mm{a2Y+X+(i&DB)*qs4IdI6J*){&RLITFHe>N7k(8oUQkD8&+l
zY-oKu6~$*#wFwkJFsy_>Jb at YrBn;=ID?%}ubzj+KEv)?v?rWMc$al7{argeB&#~>q
zO4sE3AtGV!uPPw1fEhC*&Z44Aes3qyVbs5%xucqp5i{bU$$Uib;GWX|-H-Z<dMtAX
zafN0<zrp#SGvZp)Ij4)BZ{*q0hok58t2=Je(z7|+@{esyA*Hcb-O5gjOPK~wMUG}<
zO4~B at 3lFl}Vis(dFf6!x2;qHCqzjenVeu4=ko^^V!zRK`Kh1h8{Al^*;);&?*k}_5
zQzMbOFS1n`QM)cSy0MW<LTVa$dyCj4-``%Rq08m;g>{GCUab4Cx%pyQZ1ld3vC$at
zlc02_h;AlZUu3<QWnkP?>ee1~3qr*dVnuK>Xq;cdmofUc!<pQ?Ll53p)&n`+)=?co
z1A>+wqV8Os at LzOSP{_<~{oooppk7}!Vkcd)CWkGzo{Y??ch(`T6%{>Mvt3W#Lr<E+
zSx6x84L$we41Qe`5yOhYo1DJE+Z;WK9{%C at jGO$gkIzQhs`0UPFJ~rDbVhG?IzDcB
z{1?V&{m_49e6BsK)PsL}d at 8$?R+H(HeTmXW=9J;zAD>b5$W7K2g_}7!tQa5Y5BEX@
z-%m?$^|vDX*7=uBjfU9qf&3wDq-qN>nh6Mv{1v(NqrB3eUVpWU8yQQb%ILeeNKwVR
zvrV>c;PG|$c%JNtrWHB6Ld(N<kh32noir0VHw5=GXD~tH7j-YA?u8`lPvY`^)a??1
z`%Qz}6~?R2AMRJcxvU&c1~^xi!FgnGYY2zV7u&^@t-x1#e-5+CQtHpa?$P=)b0__&
zu4u;#%$SP)ygaMapGn1b0CzPBnVwRA?&Eg}FW)YQqyBui49>P~+x5rVwS9j|{3rPN
z=}_6iVP{&EsSogYl6ySG^Y7|5Y at 0C`Dl<2~xiV}tIYa;>X$fQVFm2dBY=d53M;m}M
z)Zlb2iq1#!hrE7+EB7R{NxAP*?s;D6Pvyo_Zo5k7hxQW at z1~fBN3Zq%UGvIXS6Uxv
zpC8uqc~{RLspq<~dY=0G*1_#cmx`Ob74P1L at _gWZkEfsCnqIz}e^yf^J><?}NgMDV
zQ}XIz>4&Oy`SHZZET1M_ at 6D2G1;WX15&dYd`ResHA6VUwEAS}I=*at9)Rp|v at lk9P
zu7?zQ&5u<cC~T6nf|MG_Jo%~0F$uoH>IfcxP5-{dEB)#9mUp*uYhpBB#*f3LM)hA_
zs{fMh>+ji@`nNI+z3DFjY*+P<4(lITs(=5o`mfuee*ZV~t!)G7e;iZ#&28>Q-_1(V
z!Pbg0{&AYyT5n~0-pmqya^>9;Eb`dOuz<T|y^e+9Ln=UU%gR+<+a|3V4JP#F^aYF6
z+nuf&mhGRd>bpm4;fmmw&{5c*bYE at Zg)LiI<6Zwa>?rS#mpjYz#+}uvz0vquZ_E&>
zZzH~!I{{iy_<}W3kxR2XY=s%Si00gWA>0@;dcU}qp}*i67&eEd!xr$1$0U~V!@QwH
z(a#MvcLSAU9^6Q>Ce|e|OX%bg=wv#t^rzR4(_ny{V?eqdD9zJESZ=H<_dPOO4SmCo
z42uU}r)+tRCHmC(cF(!6s%y902~!yF!qXeKm8<YVddwg6L12aYmw}nqk5K>e>^bKZ
zcH2<gcjXU%l4SHRZ|Dp9{uUF2?v&|Y;#ZQ=H|(!u&>#AjULK8z^2c4~Y1oJTjyHV$
zQ9$~JJr!mR{;G}ubmcpI+jLX)H**DNh!3?l)HzB|iXT<DN!Mv^Q*gy8P!q%#snMmy
z)!l7h{w at t6mgd;i{Ri0kmbd_q+V`P^uC-f)J5VaTFz1G3>$0wwxOoIU!Xw^N+eA=v
z2M0 at d-Ac#bIuOfrLa~X~M`M{DV4~tiSwa}yH}yltIeU{#O<d%2l7HaXlk&;2ScGkw
z^D!wlvoDd0s*`wjMD=pELEW=6bQd<Zy?+~V!IE;_;0RO7R6OcxgIXxv9sKZ1p-SrT
zl0w}grHj;pWqx;ugHPqakwt!Ya?B{)K)+bz-TEPY`SfE-&M(ltg=|3S9_pL=g0&2W
zfS?3gmZ<J25LddWFDX+-IrUUu|D&d-kz)yWK};oY at q_|LkT7a!jRFBfJ^<AT_jgds
zT>S3Ps^Fl_TZ?kiEjoWP`s4&QWSI!`Wj-MF>@TkG;4T?)tYEBYCV#!>`QY&-+=u~<
zNepZWZ9k}!%Kxt~(HtqH;PXWDN2etv$8ePtmMXUkfU)huWRlemkK17Prcq at YaBE+i
z{D)+Ou}u*p>?R&uWOQi~2V)ft=2Exdp(Jfx$wx=)-(z3?4%FgZu);9W|6%FlxnM_F
zLGOVp2j at 5!3?!=Y7d*c+*?L%G?2DIC!1cFnU at JS~^E-*=J2{!3LT at dM4a9X}BfE9<
zjTbgHapu)^S4VC(ZCP77vNXMb=*gX15iz=SLV<tNOgp#Q8q4f0Eq+Ad2dk-~aJd$!
zk?d}CW<|7U=39GXvl~+Cox*l{3d~>av6HKJ%1^F{jIq;`tH*%Pxes?_(>x;Oa&k40
zNN;I~-8`I>;{3mgbC2@#E6z4|JiqGU{Aw`u{_Q7)(O3C=0Mi}*Bv0t=@K2r$rVY#a
zZ?W5Uaxnd5Q#+={-KUeiR!B%c=)n-mG}$G7TR9(4mh=VR+@$G4%qMIhgfWd*5nqXF
z&h9~_AuCzk1Mx=qOSW!}Wq(UU68XvXg~M#pF&bxazSfiQA5T2?$|;<$B{*N}sNNFI
zXBOD^@&6eVc*XOzOE$(vPF}+q+d9tJHYRnxX6NnY=W8RXlGOw0=W*JX?GzAT7CK%V
zsaP?EAM-BU7ufmQewx+gG!uq-vBNsip*mh5!UYV8VO(CA2!Qfqu!s$CJm?sW6?ja!
zDiGd<Z|`x*0XW0ZH at 6N3kGx%)iFcxC59Lwar&!_<wZZ2SP*U!K&g8fYCdV at 0gf2NK
zsuk{&W3I3}tLj9nTvb)mnCdDGS+X^V-SmBBX9;?qE8kI`Nj8D&{a)8?N<&{~rC`6(
zY9JwO^oT?~d$O5hVCJ+kxD*y9eIC|I{@R2XwwIpJ$w7Sa)J^=6h3H4dCyilY?Zo}u
z+)C-zJQMNT&a-oIe`VLNyxeY!#o|1_y8kC`9D>upM<kDj{^9Npu=J}_?HI0t at l1yC
ze3F$nfvH4?j^s<$3;rtO2E8RSh7`8n9AV5mu!aKurm?T-s(WG{9Qd}dh7vXCrE*V-
zHT_(fNN<B~J|!#C{7ej{YwC;DNKJjGC7d>(6KySDpL$&gI+sec9N9|xak3B--U6$J
zbQVfxvZZiL$_|DDTih)^101JQ4baSqqcn}pJ4qESduM2pV>j+Hjt=TMBwrP|9;)%X
z(|D6Op;1K-szqYByhqIz<#rmpSmqg+T(KMY$;T&-eKE152$P%*HjYozfv)EM&xQQS
z%MHQj6kbeZcbW;?T?H$z7K-Txad9|=SuvxP+RowV`L7TWnG_%dHoL|f$DO)ezm)-f
zLxRJ(IVYFe(EsZqKVoW5?)1h at hPICrJ7UIoDib&4ghAUZjvE><3}r+P*0<(Z=2aWA
zz7ow#q`B!jv0l|0ysE*;o!;0SVaVZT1grpo0K2y|e)3=XpsfHYK}~Yq_cfX-;$lWx
zj4GmUywm&ukT1w|5(qhg7h(*AqiaeH6RKgNgAhfo{cZYi3SJ-Hn3&`djiI+03#ijc
zz>faFgk~C^yk5Gmz5<iI(~W!9qOF!`{S4ywbkr86!bT!~==DJqqSCcvS4Z*e3c820
zI9{h~k($XsJ;N#<d<T>pLai$_vPr+<#?uPp%F79-3|^;13HZRaU>Wg<^`=Dv?62$x
z_tBTF9f2AmG%?GkmaQH at xOTD<$}>MeW+UX_k_}r4T8T_5GbgCNMXW&6Cc9eJWYIiu
zgU^D-Sh`73XxEu*1>COBIhZS7)f{{#*h|gS0eUB0D;&><&CJ5Zf?Qeha5(WrZ*!xV
zW>=7U%?){}$;PVxIE*dpWYU5U0$Cmq8uA?Y=Mb$(Ao0$^votM|scJcliN-6u8`sxn
zlZBqee%w`c_}8OqPv#D7&m9bM%`(W0Hh1%|(C~YMGoRK<b45eDe^C?Mwzj#9+eYiw
zgNU!I<gVwxaSno^#Y!&x6&6xqKV<uhGn4siYRg+PMK+?943$H|hEK71p=0?IAaU&J
za=YOI6SnBVrv?Z6CNwb=wjV*o)~ve-`R@!SbJnTR8oSA#FeRD)!2%5!Iyf6aZe~Tf
z``pF;y;54}qSiQ79dh(gm at 8sz?}Q6cWJtr at H({y>0iVWhzVz2;p%eAw6b8JQuV4I;
zOIv*X at wm<&>`^qSKe<MVaNMKOkbBfNTz_PcE1Uk<wJ&gA_qeYfzSMXU*0?tt-Iq4^
zNfym!h%|o1MW4CS=$B=sihDuYK^`O#p4<kyg+Vjty1#85yzettQloW~&Id;g#Wge8
z*e(nZ>?+w<QwH?HOAIJ}#sWIYfYwu=YN-l-rYQi_Mxfq*(bZ*8zuzjTrwgjqXh1g<
zq0UHMc;Svv8-Oa5R|Rq;6x2tc^hFmGp<YaX7_DR at QVTZ~)AZxUF=2!Ng9g`B8^>E4
zn}9Y#7-c`_pmpy!r}l!7r$nq`MeqpIRusxPR$&j+z|r%z at LWjm-w2;sm<vBF%kvcP
z%jBi#;L^+8eFu%O?GZSx at y6Y)QN at FaDTgt+D8J4BottyJ(dm%DU-+||a&T5R>(T<F
ziC6F1i}cbCTp^d}2LRTo)8D-O(goxTE at a!Lyc7?!yLqY}Mf$mV7SIu>M7*h{k2uQ9
z-P=Q1Z`{4B_)47(Lm9!cP~%U+24gL*yq0PWDC$Si&+Sfe4c6<B0E&wH&^K)PTuDE7
zc0ru19CFu>HGGWW1B<99c;6?>nu;E&B<ypJs`d(%!9I(bp%q|K2f+8XZysmMAzlnP
zRv5v3oxleTv^mr-nSUBcH`RvOsW(8VBPtk>_P%qDr+L at uql=Gr)}9f_Rr_+{Z<xqs
zg{St`H)nlVd}LpfH(PsCr}>=m_13gkzu at _nQ-#`EpPBPK5!h2#wEG`Za+qcuyts&U
zeU?FMC{t6==x!=uoXwU2vuMBuFQbOpX-i^Xl-&l^bbT|zgJIeV2X|Af|4Tu at h(zmw
z at GDN7%zv&vlJTVgV|56o^=m-8xP)K^y#4Lum at x^3wi`F2E`@A4QOHN`KoIMjs3wBs
z8Ej0~2LtOFal~;B<RjWE+Ak6*R5IdAj7k3!Y~Ic#uiBu!|Cho;9CjPw>_HOyNX4jN
z4GY2k<{~55>rntk@<;xlr+5iy&&Nn;;VWu+EL+X|=O+8Rl{D_?d-!7irIzMuu$fWo
z$uCLr=r58Md_oO}>Px4!vFsm}J^dj14eLxa9_Sm#QbgT-$IukZTnXmg5;N+%XH#MR
z=#Qx0zF|l4r9TvP2l43g9Jl-^ar$8&<PBekxvYYzzu+jEBH#zUymhd!FOVZT at SjIc
z_|t{7_Ir$`%npRlEZNMJ{5Y~A?qXN89=oT)5uygfP4#GB+hTVO2kS4tgaq+i5%ntz
zA4Iq9hGAvl{X9cF8Ec4Mo}m_pBZ7p44<~=Ik;8+JTx_ at jjnd;p<@cm~#d(s`C)y39
z&ZGm?O~t56ZL`lf$>OwBt at rNh3>7Ad|2!I1V!yX+YmL`hh~3nqF_qooje0=N$L at 5c
zT4d at uq{d(#$T&HFREsTt`e5Nvj1xI)WaJj_`E1aivT=B<;H976=2br=J6c$8Y$T)I
zgDeqW$3J_b<z26e`C%-ZexcgMgC%fMO`LyD>Eeb9L84%(`7mXx6XBK}?bxSnV+O3$
zC#bhA*D)1-X-0#t)-{-fBHlCy&s-=ZV6-7bXkUY=2xdaWG~7bxpO}t~Et?2-&!{bf
z&%Ca&mAI?R;y0$a7Q%l-}jnlc-sd5m at vJ=F`^jn!4jU_x69_9Jz{<)jHnONj-|
zhTPdYlxs>$ELnOpLJoF)qyLwV&$7xk2>UXq=DAtVdZ>>c3_}(Y)EZmp+qn{A>lTy{
zv!9196ErDe36G-uE?*HsePE~zG_}MZp-d^Kk(A3+mmVb5(}E5nck)ylX!s7e16R*z
z1B!o9*lum!YJ-a|&|D&2 at eJyT&YQXv%e;>Km0mdSfU(-tf?jTnZs2YSKJX%#LltTQ
zCCX4nMe8r*hJ1NCata?U!SB{+kQAz%Q8`tJkAp(n&%FKu`bA8?ekfHMoGzu2HM71y
zlOkj>OG3q1*BAz6a-~wt;U8c{`z-)<{ic6qFr21E7`&JBt?2n~p3AWruCI~4|Bpqx
z=+lz<Uu$g!tq?{TT4ix^$;aVO7xK}L0`$Okq_2kH487~*BU&5BnYmpoa~RvhcK<_V
z3*N-mS7VvQ0B>WKRJXPMK9>0~vgE}4tU*Gr&wE%YX*MjGHoeUb&c56yaMN2Kqk;|k
zc!iJLh(^Y*k*QqO_S^UK`G6k#_qlj}Tl&@N)G^ghvpRB(*RwZ#r1i-;{o6N6p)=eX
z9WKHu)%B2 at Kel4GkGt|+{LEUzUVO`XaYR`!G(1hk;fZCJk%J+E=Tyv_`N24v+qU at +
z*1+HhbzrnU8u_4e_rag>sq!A({G at uhw~}_(M-3lgv&%ZWNPWc<F*zoy;YlnT7@}))
z+N-Jvtdcr1>h at o5XrkM%7MrhVYZd(^ch}=qE}6SkkUB2tIVnHlCOn8 at nRQkN>VZ{6
ze at o;)iDTOniDmsm62^~EPt3g+{3W$?a+&ak)u@{};ad;)d{px9Rqw$lXBkGXsIRxc
zPshVV|J=16he0^)yKU(g2uQl`S7MnrsD}FnYc}tXPZB&Se_ie7v*B{vQbRYN&3 at s`
zckxu1ab_Z27?w!CGyLkKlPLX{^>attU$FbGuTJLAsZMPELn43d{U_%ef1Dt)d0J;f
z>O*=M57xh2Ef?IRdus4Js_|#O>z_ysYo-?_vL~PSUO17+h=x!q9O`E&sW?r%DhX+f
zRP0O7v5g2WXVnfqr;pF_aUYqh3ZEw-S}!HpviNS+XvQZQr52`Eq at Ve&x}+NjZaS2~
zFMOVlGX6?=oZmJFLn&NXgPNcu#|f?uplbQAQ3cOVq?KX(Cg`!2{~D;pY{5gm1?t`#
zn|mPb>|oK$&)%3=Rv404_FPS(dbN{>uX;aYMrV6an`~grragQBA3X=eM&h<L66-zA
z?4E4fv|?y1(+k3IR%J1K*UKN96_OI8S9sO$c%uobydu at k>6N#6?MeA#Z^C<Y?f{3`
z!}&)uJgw(BK34Pbrx^d-wYUP6=G8 at bgk4@YgbN^9>vGk(WBgWshz(H+1QeVrb4Jxg
z-StBLk~KvNID>U=4jyG96h14QmE=u_p2D75b#P(*0%H-4Q84%!@;8uz0dyO~5Iph>
zs>@R0O8yv`D{HaYfh#8bmx9iZs(nYwi&TpNo3c8r9X%g`bksvy26SXSF)mZ{^uYUL
zH}}w=r44)pfBGv7pNl{n*so9&H<{ptE3_hAgrMy%mp?3|1J?J@{x?-={|gAMCOfzP
zB at rjIW*J at b-NJvIdV(wI at AjN*DGl0 at lNIUP*#*1!`u(@yk0)pw!#-UNRF=SJgOyKF
zAxW%tm|H%R`YN;5 at f*xx(+ at TTZ_y&|x$0ugJg>z(Y+e64^0Ikh8~FkJ5W&CQO7v{d
z1w4aAS&1Jw{sCMVv!mO=;8&N^YJXx&;Si1EZa{a7USHw)vLnykInt{f-{@o`cM1zO
z_r;!orS~Tl1|)R|(_(L?1uk4(z%CupL9T-nnzg4X?tckjh^+LyHwGISydV|4%S%5#
z=#9b5!R~HU{N;VW;1%84(3W#{fsfG%4P=T=2zj-p;=m`C5xtWOQUdyW&BYRPiS$7A
z)#of#{H)-6Ppgwxoxy^@+=m#DS`j1gqvl#netLF9D?cU+A3I-#Lap-zQ$HgCU%mpx
zSc~<@;eYJoc1RGM&glb3JYN4TY&T+WA)7tFR`wrdG5b%`CeeKV#(f&W`XOsCp0AhM
zNsu?@Q1rp|ykuO4QcG<t^9}td^RD1D=x3I`A@~CWtlMsDT??yMnqJ($4D3%}OVGus
z3c(ujfgNXF(90rv1OZr{${}<aSrZJ at bqvzA_}l$S^6uZzXFo#RbOxb)V?CpXBTXFL
zzYvx#J1_!=YsbDewx_>4+GmmKl$l73ZWmkF_*bw#?n%i|MgCIepCz4Y-xQEC69boZ
z6=Ks=+3+yn$eIX;9D;~BbjsI+A1%R8#GG;yreFp=wKpxjq|{jN1#xWTI5W$9lc7uI
zkDD{1COW4jJFKBI?v3eeDLabMK0%JSczdE7zJBJ|O~HwO)*L at +nwP7=0+=H at 1UAk`
zCrnc{t}!@^qne_>$;K(*dkW66vCQ%s$Ys73cyP at 5KyG3^8+{v4Zk^%xIPEd)*a8=c
zNJ)Pn=z#{I+zB(GY5a1VCvw%E*Nb_TEa>x%oT$E7lN>swr7eAI<A`gHXro<;3u<oW
zeDwIib!2MrS|`-UGQUKk>VCkG5z8#)hw%@yoyX2TEB~|D!kp46Q(v2Ge6KfdLQ^c$
zPP>`5RCgF#;|chnnw~62oKHE<ZMCD7E(ivD^3mIZ%OGnRgu^%4cgnNtP0NuIKKgXk
zM}izwQ9e4+z+~mmB?daROcXqu2E-OJeo)v<M>=6-xOUf8*Upbx2dd^F<|o*fHK3Z<
zlafi8nkUD$I!yiB22pcnXp=%2Cp10WUP8XQoc2*PxJ)bL%QPeE=V|rcxYNMHoz{&B
zEIIKy+yOVQ`DtA(4a at 5MIkx1Z;?k$QhR{66 at Z;`W<lO^XSrflrgjan3=G(lVz2p1K
z26%sQ at jZ*5>ThuO9e}nS>OaQnpU!IhEc(_eEV^RZ*^FZ0U=rpR>$_KQ_b$R!=fjI3
z5j^wz#?k#G^GB at -_uME>*>Z{y68>(%`qzbMUht#v5G#IZzD8GA1-H=mwqwW>%iKW@
zgHx>h#{ejNh1c^1lJTNH)0u;A<ks*MTNr1>K6<~AH5 at hTB$CPf24kr<SeKLeY0UCT
zbh8)HM9pgoK5`Fo__Ej%cHdg(H!myH1(&U40{|m%^)#gj4nf-yXaLKWu&Ep-WDV0G
z?ge|-;Q70Yz(f=c{&ImkP~gV)PHdr$SmqHC$HCAJ#F5c_XJ)L#t%Lc~Pm-5&B%j?&
zQqhhiE<TX`>Q-RXlfmdDXJ;UH5Z!e;0Pg5^w+R&%Yfv at MHd%T at EXz&sgVFTOPU44S
zY)s4R<2o6eu at taJ@ZQm_D at W*U-G@`yulPQ9%RE|b!MYWg%niV5UU6v)pU5HP$FVja
ztAUy6BCm9T1Dqsx-`q>e{Owsp>x8D%A;unH4Hh7<ynfaw`7v2{gw&ScFBdQ+a~Ig;
z at 6gT_s|ZA?mx}mwd?oc^EEbA9<-LD!JcTHF7fdbu1q4>$U+jj<ut-`)(x&BHuau<L
zut%A=TJRkkk#fe;H7xk at 8q_0)0zBH#U&zsAr92~v!5eo%U25;x!u{qU(w|Vv)iwB?
z>vW*EaK(PrJD$g(_kAf^$MCl_eaelmdazt=kLj=H- at 4Ym@^|o6wz5rJg+Aa at A0}fy
z+oKluWf$?qz)&=+NKhoq*O#a^yMWTYma(cg+pUa!*?D|PMHHNB>(o#!QN7vq<V3}o
zy^YlFmcwyU9wpZJb8V$0xE^Aevud1M(+X{i;y{Uw&g$xI-CZG-T0Xl`zpV0rymCI;
z9}6#bs9EeZ$+vhW8MMg7M(6b=0>FAUEI8#b`jK1Q0O9pz6{J&DXsN>^DQlK at x!XNa
zCD(_`>;S=ni9BwJBrR!qg1sL%&D(Tt=`<)5Gb+v>wGv2G!QUQZX~{2EEU4gl@{(;p
z&9d4b8v_*Zsu$>Nmy at 2eR**}WMAYUMH(C`8cSRS3T~Y6Z1-fKk4vhl3UvPtfx?a0l
zF5`tTI^hZIplwj9g;6TL2M|kHku(k-&)St7t_I7QE_<8M>1X34c=>oupH%G{^iI9-
zT>*p~WG;>TJ>(7=sKW1)UjBl8**U^|boD`PU$%xa!iVSQ7dfyS^@W#S=KZ^?y;=L6
zbN=cZS;k;iod`9a<?-I57oWt^c%;PS^cI%+Puja%dIU9h?;?E>4KOoIuWwvozeh78
zZr2W*LPK;nSV=~A7BR#U&~1V%5V|jn-F)^)fijZw(lcw>zBWO(#kTR}d1jX3=W87f
zR#_)j#WKg!;=XKE*vp*t*Uzpane`=WO`vZksb>eQ(Arq$@53d3h42ZjEc$KF?U~GF
z4ScRSmls5qk=(69U~nT66T`N~ULqZE0Zm_U`7d<Q%Y9&xw4<*cQo~>m2K#9kCF}f>
zmUS=gR?A|U+xTH)Z*u)&0Yba5mM><-6uz7-Vlw|DQC&Dwn3PKLsxgm!?oyz?63k;T
zp)tMw6ieIrA~ZSRPE$Tau7O9k4k8pH)zQW7#WvSd`$f&j{!$$;@z<=ep4>Fp+BCKq
z*K73i?8fr>Dw`Sm2}OeJ=bQDVJLyi|gG at eqk*v!zsgB11%QOiQDr*_ at XR_DJHwZ|d
zC4wVSuz>YiL4KXtK=wMTDBl!;-)!I~DanfalbU&~w_KB&c(k1PGZ6staR*<CA$&pW
zwSs~lCwsG%%r`{v*Nf==NlLQf{-jPGTP)Wkh%9S4^Jh*2{uI6Kv&0a-p!Hfo!Jk6*
zP6xj}g8ygX(4V9vEACI4#^YoMe=3ibGynDZKxBNoT@^|Xs}R6mD+`>jck`A)(|BpS
zl_mo}H+*fS{keigrkR43|N1 at p<<FhR7pmq3D(U}R0O*Rc at Lo%Vo~U2}zbHFj*>K6v
zTmywrI()6t{4$Wa>}~p$|N0sg@#o&5uYA5oCH-Fu02L?;@2NmVRY8xk<+ArE-Osl~
zc)AZgAV9)Y0pXWH&Se+5U#nb6E0X{EMt&vpi`OZQrI0UP0Ky=%^63TDt<y^;K0lMP
zct6D<EPQRH{keigrnQ3Q&kfwKjVj_VR!J&Q8t>_d%BZQbF`>|a(*3zIGhqs_y7+Tt
zDnd%FmMed5y`|JyiY!nF;H^W(i~YG$suRvc7O3;)e#o-bTQ*sz06>c&0Gi#e7X1<<
zIei#a-P+7g+rY>6%f?me>v4e_IoGr7x7uRqe|@rk<t+_eg(jrTqkuZa60!nA_XJ$s
z1AhX>mzD3c+?D{*l0caATc_GL>y|%vDnKA?Uc^RzeI`Hrxzhv};xj07=PAR)Zm)0d
z9X#oe7T#tV=Uc{!3jlMEd%R7`r~}vnpEu8VBQ!-qY~*)U0QZO60JDlm{V4;W7P*pY
z%NqB%C<1cP9U%}EiH-cRvI1lgjWafPW4v}PuX1 at U4sM}H+rm-JV)!-AzI&>d`IZQS
zT_ZZpXV)3I_UQ=8Ju4i**H%lK05GlJ+sn_oqv*K1hS%09y`EQkO-KYGTv1>?$--C%
z)C3}MeQ+&@6nf&?QS26Vn|GZqAKhD9GB_xeeVEF^ASUaB{Z%u842Gfd>t9Ty1VK`3
zp~+;copc$wTFKW|shNxK5xv6U%6g)?Vp$$?S>{{u&DP5WQQ9wD+B8esU}@b^+E-m#
zr+$YV&0VA7c%IsQmCMrXvN-nZ at EDJvBwdy|m&L6BE=xm{WwgtpWrK>ET_4=NmHe(!
zw)Bb`>&v!2y4!lY*7#WV-~pxBYR=;CR`u4bga-Ur2vW^x^6Z<mKt72;nkps=wPqJt
zzUR1+Q~2YDJ7Kz^*ARLeFP2Dl3v#N`33Dc$E?%Gpnt(a&V9g4XC4+WGO)B(rtuqr>
zmFY8H(rTB#Xf22QQCI?*PP_eNxN4_99SIJhzk;JqL;?l!s}Le03A=jRrB%Uso2>~`
zXj7a2;N-Kn7ZrX_cP3_D?Aj|76WF&Ze7BQ|qov7rgp)U1hsz1f!bT!*3vI-c{cvRt
zm(_3`4HrRM^$I@}Uf(bAos*()q^<$Wg-<e&lE-efjRd0A>qiPN#?=2$T7uph`7l3M
zEVR!)#baPM9xv?CpWDeJY-X~)`iy-l0p~oCg<GSzYBc>0cW-?QebA<5+`aWtRvS)Q
zGsi0m`@+RN^eaAZiI%lZ%h-T_nAcE+=Ayqk_M01G+b;HR*kfBE#(R at TZ!^LVp$=u2
zXi$4tlLfUKss`!;2lbu^>Lt7;Y%1{f4&j}}8-q8q9NwN0yx)iL9%a0N*X`iVkKirh
zwS%`;2=B+dF?f^9;q4Q_J3oZCzk at f$;LV<9UEYm%bh&=}F8_^jkMzNz{1{>LiU{tN
z$O!89_usa5RynwJ2KP(61Fi_M0+m-QZ)n#Q%5 at Rk-$tXfnFUpF_fQ)aE{;36od$Q4
zgDZwr0r!~-xNFPtuwT^PcSE>$I6SN~xJx8#80fF?+Tk at C_c^>N>Cd35`f|8;T0y8P
z8^YZ}fD_u=;M&`4Kwst^co6rjXzwG+8{xqS(esTEleycC{vPE>U>puE?Z*sw`6X+q
zt3$_+>jyY+tbQypdQJMd0TK62)4>wYV;^tBO?i3kDY<=XPxkkXwLUZ*Q(l8rIE5 at U
zLJjl$+09g8?Ww4OP%9<iPXLhW41Oam-39zYt?S(a1H42O?+fVh#dd4ANvO0k(8YG2
z%82a>?#J9HcRRSEe1m&j5$<gUH`p26Z~lY!&T{RY;t(+nL>S>$B4TD4)N({TP3V?g
zHFzm$U^wmocLLZbv=Z>-T>$>TKLEU&16<_**8$k3R3+g0T>#$wja|3+H8Y`d^15%6
zz)<{&B8mqL#RFxai$nK0&`3)}r at KH%M0v*<!mGMlj)-M{ho>)d$b`N7-(35J1<(EP
zZx4Gp7Ix0*&_RT2S<!FssPFt?*0q;U#G7?3_G7V|j$<ApQ(5`kIUMypg{)>P-ROtB
z`-%WvKvp8vE{~- at MU}}*)=93EMd77OQBF!v6>h92<Ko&x$gk9q9WpOqzHlF5pK=GE
zK2$|EByL=3Kc~HypF|-e{FRlZoT6AZL_az6=B&X^wQTX#jb|gMtyq=qtdf3nvifym
z^AH!7!_8 at Rg+;g at Cv%JMVCB8P5rm_t$p2Ax-Gjk-uDE0#e#+4yr?bszwZQ~Z?mxig
zzU at IYA5PzKm<lLx at L(`<u^#*GXSox|FOw<Qi{!$`sL#va9%tn2s at hNuR2Z<E%uj3K
zT&o#v5#l5&qGel#NuiXzTZw(9R|B3C^_^BEm~6VH8MqA1m>kRKk^mEi`X<#WCuSt|
zp^^lb{Qx7`PU+ib)N3G%imgzeRq&|BO(B1^Kf6;5i)Q9-h`q}q{BGf0#*({~m<UP+
z6SlY%lMk}whA_FAWbwFS^7)p$&LtbUw-wWFV=5pEhH2trr0wl${n<vP^@M3_)F~$*
z6idHhIi`daPa|18rI`F9tGGJ^AXWzOy&Ukrkw*R=jXtPjsP<~Wn#vT}>47S)!dnx{
zuktV7BrW8J8AYcft}d+Sme&xya!!{1sbzmepxda-%asYTT at As8`$df9 at 8tftk=lY9
zl7dHnTU4!wO0L304*x=Jd-Uo<JHDD$dQ})eH64~9B6wj&SyF5GTsXDt<tI2X-L8iB
zksPjzN at +Wbv)>n5h?r-F>&_=X^4Q+N5(WF{Z;+Qj2{S at tl!X7X?9(|=WPWofiV{5g
z6HTb+u*P-)&w{ts3th)H%9L~iJ4PM1*_P#`2ZXaqW4D}!31hd&x4 at 1!-8o7!fB5^T
zod$nYUl96JOUxEKb5*oM&ySjOxRSPE8m+wg!!&vbk2Y`e$NdCZ4V&m%-taY&FS70z
zW)0rQPziALeaz+e0X29pZ46OZI0D?2#1*p_C7O0opQvox|K_l~Ucusrj_tuw{NsF<
z0C at Rf{s*bwAI at v`1uD<UO81sMVz>5mZ`mt$>+*xwl;v0YKY at 4czY33F&n+iZv;7a_
ziP-Pj^55t{KfcH&5B^unUfIoiVx9NF_CL*}jb&|f_FmTho#oH`saqpaQN-{^fB#SO
zmo?GqTQZe)6dqqBdy^2K4T^fbryCqQXH0Jy()Fg7<J@<6f4}x?`C+dg9F0?H`2Lmh
z%l^aiU-=KqfBru#-}WDtANenrkNsx1i%a-_u3^{sZ`$ejp;g-rKZ5>ON(06?{<H`u
zoNvshf2I7j|6%#W_T?Qtj$atjBi<>Tki-`L7p(SYM;fcGZ#n2ro|rt&tf;6T!9U6;
zLH<#X!LQK9{gLP1Vb}ArDmeaETL)VXnpRP=go|jtme-dgFRY#VPOK;u>0_vGGzqHj
zGv)Oiz{{%Ok$Y8NT}8>t`kW7tGwi~u=jpE9``gVfnq#n>ZaK#sqV*NxOHQbZ{r57o
zi(M}vZe><?eE<_DC3I}`V#&3_g87WSfn$i3&lB;z_0#oSuYldh$9`>68p2!y=WG2B
zmf8R?m6glHT6vO|$AXIR0ge1<!_X?C8h;v1WH0CWx!Iic9^DxrHneU|jq3iyp&WI7
zk^#&1X!C^-F%f9EfXz3+<|O9ySMEL!EZ;f!UfN97GdeK9snr>H5NC8e-0$V;)Hkt7
zfFvs82a7jFsw>%gS;Op)%WwpgJmKOXsB at pPV#|}QQyXTn+nHI<(VFBbWOW&0SM|>n
zzw+14I!R@*cA~6AB9)!>OI2xQXCLULudlB%w%#?H!i70xlBrNrRo7$_)Yk_cl5%k2
zo~&a^f5Q^>Ah?ZDR&UJ(x9xnxztxNzjV|`)V!?~<W)qNRRmWDMJfr!r(7j6=X5Ef8
z-0=B~Fhrf;7K+8hXuEIhU~=504e{7_`a=H?@n=IGL at ICM-1~I{3x;Nqy@~TjK@^SR
z7%LWY!J;msByNiAalFxHWmotM2rzn)lLR at J_W!~7y_qP6{J`pyt=$=?1z!Z&iUm%T
zmUHpar^Md<9}|8RvzL|}k{-8b*Bg*+gEZj<L_};NRy3E?-YW96D@=Rp)E<!eEbR$8
zX^Rx!X5F@*QX13 at jxY;HTQl1Ubt_}g68X+&{`?)8@{eN_RbH0DwSf<=6%ATsq+MR_
z*fmmf5*%xIYzb>vyutB|!F9pjj9dwr at DRewmceWN-@{u%Gb`b_ at j8P$KRz5=$av+C
zI~36Hvf%k&STl7jU*1f-9o5Xi&W3a1Ei37*<c{E?sQ){{d+JaJ at 2md`yipOn$PUGL
zUXu(ah5cCOyUZLXlvaeczbJgo9(J07)5kJnc|$xNeo$&ReiY-}YYt+{L&}S(3!^yq
zso7X7)+_8z=6@{xQqo^bjZSdkygYd7gG-Sx5jQ(>SJb)b)p`$z(yS+=;`d(a-V^LK
z_%D)F{1Uby{r4)Gy%o{S9;#9#9j+kuT_y|5UdrOwTPE$zpV82giFib>TG(C1i4Ri;
zgC0wLI(4Li*2~UWbdJ4mSO=!mYVWs{%a{`D<^ufZ3j32)G2}x)n}cgYKzMaNQ+U)i
zN;p9|FjN?v6{d$l>%Sf52rE*Kqsw#D6+WvR>Ft8gcY{xpmz{s<A<LSERWYo-g&s)i
z()abTg+~OJ{*3l=x5{?YV-|E5k1cr{!b|4HkeARepV)a;+^U8z;gF(=yk71A^0txr
zJuWkLg5~7=A?4l6<!x(u&0h|8i?_Uj7;lsC;5EiHR|FY47_B#9`>S`}{yXpbU$=kG
z&a>{k{inLj|7QCiWcC%?Z`;N*5Dkw1Fl-5%+z&Ad2rrK^RpILUvuS&fM=~5l2JNj5
z`5&#FU2ULKqD1eV*2nGIf at 3hZj4gQ!w6_e)0pJ{vY5226ryDFY;f at r5tOJlhU@v2V
z2LWL0CXKMaVcxI=5Q4+#b-y1BqxnG<AL1{pZMNStgghH){uS33<3Gjzo&TYV{tb>U
z_U|no>ECf=5Uh#7DC^(LKmDiudjJ5t?%$6bfPdJ(Yk?3XK?MCf<mdFSfseBO9c(y4
zet`5U`o~E92--vJ8;R)ieI85uSzYZgk2hj5(<n%%&}j^t#Va|yYvX(c&-zoA->aSZ
zVdsa*p+7wS-%iH#ayOf#GVW%HO|cAtA;4N^bu#yp9)qye^S_}S&`{Ha*uu<Vt#DZG
zRDg;IEY8Z2AN4I%LD)jY+x<XJPT7Yz(V*$I6Xv<x1f0H2z!#3pJkC{EXVO*pU~J(h
z3GB0MNapcWd&`=xjq&cke>RqVhK%V4=JCnF)MI?Ph#RQRV0;$FnjiwJ_|>*(8lQ!S
z`Ec-5e)jZy$L-zkjEdc?`+?m4_=$Bt9a1$CyV2Kp_0y`VMjq86ELt-<X!CM*1F|<R
z?J#gItrrHudR+bF1Dm%Ps$4VLV at s;~JHa>gw#B}*i46IPOO7SBTEFt<M;-f at q4crG
zyP)PK%;GV0FP?jpccTOzfNgk^JXmWkW at 9%wVXp8RBxCrZo$5D1lL#ELh9~_|`OLQ1
ztq&&icPVk~YrR!fC*&_|9I}0{?7pO&S;xf|B9WZhys7=fYOJd|gaQq?zahO6+0gnJ
zThbhS?T)R3ZLP0%{n|AVx{wB_)-|h40HUTIr4`Y#k_iv=snyulKB^Sgwy;~`4ez5*
zl at 09rNdNc<Kf*nV<x)%bpe2>rQ=_O(wU+gzwrizpX$|iSpJWAeKlfG>Do6)RuPl6(
z1<YmG8Ep|PrK)fhS at 3^hNzz at Q>jxhzd<Ye%D`W)WD6wz?`IbU8Rl)opg0u9yL)e=9
zi0BpelF9cOMY4#sZwwYlSDin4b(9u-nHS~a8uKEOub7!K8PV#A919;<DtayxV{_>{
zl<pEAxNW<{yL4tO$>J~q>th!GYVd<^XqsLT-l205NG)1$O#TV&Lbmw>M88fQIYB7T
zKhUG+afbc}7Vzxl-CS{I74BJP74<5gd!XB8nXj)fi#;pL+do#8>!*163DcBFtVkY|
z^0Z5dlhPTbbXv+XrRZ{?MS|}WxRlE*e#UbNWlmoNj*lKHmN>kS|91J|CG*qxZGPA&
z(oGcchX<FC2XISTK+!pcbEu^R(DX;_Y=(pQ!Optw<G%f0Fw at lN+=LPN&O!gQ5%^=J
z_AJ{^YKf$25PiMoc-0~(Z*XI5*@O|=$T)uM87rbTDDf<IIm=U{yN?@hfa@^d7T~jL
z1$g|5`Ck5%+6YE<|10y^QD7`GJi1U at 0x}oea1g+^-b*@8KWKFe|5b%?)W2PSln**V
zvggh=Up_8{i+&XHm9nX9d`9>x3T^E05S3p`9f8!z)&VD=Qcvi`nC|0lI7sL at m3U(6
z#TnL%)5RzlIG9D at uV6RiUlSRi4eYCH)lBPxy%}_&{KEV{kMfsr at H1B)#-Zbe{_mGM
zSH$m*{mU{Ht=!J~x8wfx(Bk?V##7LlkT#BXXG;sfv~7GL+QlBa{VsMta=3NK%8>Ur
z{m$Qd`~9NLZ^bt)g at _GrW|WeNu(F?HYlEn~PWNN$RFDhG-9jaU{=XAGkQ?$kT3^E7
z1~lSw$Xr`C{Sv$X4o{w{u}_a(oyZL*LeR+Cj?r(Ol0UY=^J_-3;hA$e8==|z;a+G*
z09a|`QGEONH7`drYHM==S6s5T<2U7>N8h8kLy at vSqj9V99>9!4e{&#v&)>H(*y9HR
z!HtEA(YT`jrVtMbvdh^bzOX-q)<~rGImnlUu@!qC!CfkU3!Vw9 at 6QzV2Y7N#|CV>3
zt7MP}x2rt-z+;ov5~F!&{}*&-;kqENnA+ek-&5^amG}R!JS;Az+$XGxf)v_vz|Qyd
zA93)r=Yk#P`*wR!`C#Tgtj$$jd00o?{<1ENow$8~*RQfZ60TN_OUU`>P0xS3WAu9Y
zsApa=iQ*`zUoK{?y|J4b^oG4_mLO!T=&xxq*L75H&}m2_47cLRuVW12_DEO}X7#bm
zdsK?qTjozmq`}vC8{BM2u%NsaU$aL$XB^>(!kGIgt35H9R|!(W#{rcy&a`3<e&66d
zYW)m`iNx7N!XFsL#}fW23g8^eT%k<)34zXzq7au{mIxjKU6u$Q!hzzl#5J4*$1-Cm
zp__R)X(C&GCP(Y*y!0TF(Is#|`0G_omGNdT4T|w*z5FCDx9v7MBjgIc!7E{z;FLIp
z9?@Gf2yj(Jv;951(NG|IzAZTW6V>t+wdk=T>CmEwy!>?JJhSZdxg&RrNBEcgh=hkf
zyjT6C;~!Vm(Wc1|d`~lurOo`9f*<^;YhokMUKbnr*^SJvt|#N0daG0HqBgo)6b~aX
z>r33CSo0CDntN%^5Qq*&rxX83SYOT69r<JXq<4rBoECy#pB(*i at cMrX#}I9Ye?*5r
zyO!X%9sZS?X-!V73cUth|4YLxI%nX6?@>NM5VGGRh7|c#L@#3>AG^9R9tK&&-z4Oy
zUhlELdHJKR_LjZOrI9b&dU#bUjcudaW!B%=$m`bd;#&GVp8j4(e_vNTTlUAq$#EA>
z($nN90@^+=sabn}3W%=g?N}~Xtt*_&yNLhkzR2UDiVFAU?c>?1Lj{FH5U2BBDZE6V
zj9+*78w$GvjX1Z3AMhQ^UO|!_{8Se{%VTio?Vz#j2FPBR19xuMFeIfI+l5Cc%as4j
z_n7ka---5JeL?curm^YTOBMsq!pnk7VF>cPtJOZS<GXCvUNxb?Ul9x{iCxrhm|r1Y
z9se$}Y|ZpXiWGS#EF9{-%JGlD at rxR$l8a2k+jF_s7k`D-#xDqv`S*^|FDK+?wl8mp
zu>cJbOq(dLH at zTIN2isYX-s0UEmy_0MPBZBrZg0R95;z at a%``OxG$lA!(Oj?BjXl)
z(-*>c1+9@~c0-##34;%2^RqTLLHL&b)`(90J#0GqCn8gLfI1Pe!b3ypW&^)B=DYzH
z5IUCmk{Xqt&Pnl1I0YmCLwl#|fh2qUM1E#<dJwzAEll(Hranx>6!sd$=O{Lh)$Q|k
z<K>W8_G at Yb`IG+m+WxQ2FS}fdwF0WZ_)AViDY2r{Veoe`c;ZYni+2`l8b6o9YoZP0
zs}fg&O|5a9Nf<A2rWl+FC)@bY1d{+15)+}>F78{Q&iHEyDA2FV;KKE-0v`?!{&hHy
zFK;f##mdx~>O836N?0&Qm|p**igv$L7q+$$!Z?=x9`M^X^?-<ZpkyKv*w4Yl?(OsT
z=IxNwf{A|5_}Fif)!Qx}?<aTL*8k=0`oo=q`H5VZ5bW3=+{xoZp?9Ks^oDFk>#DJt
zFF at g5uBNfWpM@1#S1o?l3ElU*J)3d;P3Cq_`g>3Gmz|tDefNQr{nPg*RQQSY2~3>u
zq;G?wM!(*cUN>M}x~Txx^=s^=Hvf%uZ|%vs14o|XA2_nTwRie!g@;K^=GaT_*5(hK
zoTK8C=@{_F18*JhdaE}B4vRYx%1xV?%{&X%>jrDz-B0oNt!>>l{cnY*B7Pv(&Dc$U
z5)UY!LhzGi;he8Qz7gRRmXm3Ihrg|`KkaDGRr`bO{%*Ns>$`sP_;*Eeg?Z#?&+QK4
z+x at -A)4+Fy`F9KNp at 2WgShQkWnmm4+Wj;rBE-FpiKKKk#g^kY?>pWSR^2crY4s7Os
zzENT`FMVBXW>9Qqb1?8Nls`j_j=8-KzO(+DaGBR4F7r*Lz-2xOW1GLDeE9w%v)PG!
z2s`=L<-;~7AJ&BOVJIG6u at mud_HCjiCmvq-kHo`bd<5?S?0WP!Cz20eF&O_qKJ-Pf
zJC_fag!T8Qi}SNmKIHUiRY^V^vZH+XTLxu&`H(`9e3)mBI&}e~c+|HU#r|7&kPmmV
ze>#MQ?Q(xn6hUH at l4UY?jaCN2r?`~?;hwd?d|>?7SqqRGlcS&OXniY|*$a-r!i{i`
zym*HgmE^_u>TPa_U26>+t*UZS%!z4an<~PY!{$?mnmwGjJW_|al)P2b+(~L&d~MgO
ziTvdsN4$G8wQpkdGp208e(sHA_1nRhjBHJ8De{wJ41*@N%tFY$f<uHIxJhYG<}EJm
z58MHToU`kK7lG_fDG=6Kl{Ax at OoXRHi99D$ebyuHPK;@-%6=RgDxAefNv at dweQ$|K
zi$C at SoI6iqy?a}dSpQecg?}W16E=GJ!`>E(3MsNPxMzKn!QK07<%1jTA9d!2a==dS
zyxbBSklfsvLiV^NQ~64bMjR))(N!m4e7k|w$>k9q{6JTtXvb>@-waQD!2E&9J#U?j
zSNBG~2%*7ZGqKL-%gdz=I(ITCKgurq>8Dkhm$%3*-Y_feryYF+WSXW_S5tAlGJX+8
zD$327se{I0!Jk1kv4o})ONiJWTuNFtKDp}^7bEp)Hn?aGR#;4ov!Hp!5_(<*qDx7q
zX##U9dJKsuk+`gMFg1ex+hoo|gG1a)NhpM`U{favmW09x5^NnS-Y0sO%@f-Phx(Xu
zd<S=Z74Z2P4PKt>qQC2Y#Q6~qzT$pN;m4F9V?XZgW<+tI)>rU(_iBNArLW+8_o~Oe
z(pPYjd$rEJ(pS);S2>H%?D^R$8>DotzWl7da(0Q5pRIE#^)5wUxpV`cepa8c-=yU`
zcd?&!E_CS+ at oQdIpE(QdjPnW4RMf05KWksPw5MNkq5F(--V*0CbfHUk^6cNLH>fNp
z^CeGg{qk?sFE8)X%!SU;MW2DAQ>tK!<w;w4-++03+6wkrZp)T4BEy9)H<Rqza#C_C
zkGb?TK4T-1<J3j{pzZVYh1)q_x%7Pf=*!;0m;U^$y+DJ`3pwvA8Q({JmDH2Ep8l3F
zNhMV!fvxoz8+ofG<kD-x1fZ|tQGWnj#3KNe2tXxBk0pTL4wLjQ1gOW@$lEO;nvQXB
zmK8qw>{DQ=!Q+KJ;=RrzHB8nQF8^Ud;ZFzzj_+(Q??2&{thk9mscm{P_i-_ at CN85b
zsRxR7+*+Sci2)wI*F-o}?jbPcz*~vdM`D?i&`-0;g3n{?y^codWI8*9{77@~@wVTt
zrA<LEi>e}6wpg=yXx2lr_3c>Z7|GNAQB1;f8=E`)w?er-jH8vOU?P`kjBxj!ME<vp
zLQzSRtmHe?e^6`5w^bx}<bKvDgrOmF^1n{XgEMXv+*!B?p1}>dU3GF0+>0aKX4Bjb
z|4LE2%zbV1B?@gyouM1wmnRmlGX_35N87DONTZi0=0`N0XqqYurm1L~f4~_^{d4}O
z>|~mg`31s7VH_VNewN7nws9S}NaQn(8~K(Bd8E2zKcry3jyja9C(N~`JeU1YuG7O@
z3&LFYl;^S^%5_ATt2 at j!zdV=yP_A0bbwlHnM83Uonp$MOlhX`0{a<!QCUGTp785%y
z at sThQyb2RhNr%<{u|%{Xq=9g50-3|IZ-H_WH$Eub5b40a)QB{>ljsSvZy=&3a|oXK
zA6O!|Z1NQF=}k%}**bb`GpPPNHV{NBP3Es?mb*ZD<uv2txzjeX`=`R(4E7Nt*qma%
zG#i861j;`zw@<?KWVzGWkS1xef6hi-ZO(3u<)zPEe%?Ej%!F!5w!VUXNNuJ}gUrkH
z(9A=#3U?;`%a9C+fkWYzD41C9ga#`ePb!{6hgGa-tGUzSD&5ILr%F%b>R%epYDDSD
zl(xCjJ0WhRr(mmwseV{`3WcVq^fVqAmb8s0Wv3?cUu?8-^e+SQjG4fh%otboPM89m
zFE)1b?4%YZY~~~Qf+hT~xwpAnl&GHu05pSyTl6fT_gLDm8t3s1(3yO}67IcCU%rk)
z(hGR(wU$^-`e{2GRm4r32H9TbZqb)2ih$msylnY2x!349Z^vW6SB_o-4KTaCfaBOj
z%2K+(AmO{oK?t>2=65v${VSU-l<y&{ej3!=1NssgR`J~t&A5DS9Y4bpJIbupuRc3Z
z<%#Nh^wr^KY@&L)>FvL)7B_RfoE<u;6&uN?+5)}-q at SK|H~H#ql_)%?I8g$xTJ)!s
zT2gZND!n(oPA}VdS?97VO?m1qk6tRVf$!LF?%kKKi}l+r;r9|Pr>bq<uNrL;zgI<+
z*u*y#tBfEuyPqxkk_FQ4L#h1%z12G28{5xT;5Pabx10}%eWHHN7#~$XC-XvMW$9=F
z0p6*seQ5#JpX!;SSNVIbI{#jm_g=vwpR((Zk^;sO$bErzxv4xS`W!!3GPQoK at ix5#
zo)UBS3M#L^*f>)Uyq?B4VDwYD=JB1ow>wOn?-Cb;iTAjlf at ode#)DR46;k0l_||gF
z|BI~g%12$_u_o~FLtA>(z*VH^kBWQ3vTOL}=OTTvT<F%Vy97^gm7VfGv+~K at 11<b!
zd!4$>Be)$xcv32(bKx-lRvoS6uCEX7y^bX_cYTAGKM4+V84UALJ9Tut^rA0>E0i|g
zllh at zF6_<w`<I9N4F&Snnq4ooF>7lBbZWDp^_|rINF(didRR!EG44?UVfypj1NSJU
zb&I^yjr1+UTbw5XVZNntX}A&>=!baqpDpqFX<jQ at J4@=0l78!wI=$AvTl1$_fgiiK
z+ at HS9-p1|ieD{_Jt}ZWq2l#dF?M4*nlHZAp$jgiLGJnfj;n%Glq0?95#$LVjoC_EW
zics&hp4-?I%Pd0F at cbtV0iMCpew<PHnvF`~5XnsQ6Zu~mS+_CBaf<3s1MWr7jAkd#
z8r8}ACT&WXRycyCD$+~lXFGM`!^|$HPCO4LC?mh85DlbAn>er5REn9^yg=FG^fwdz
zWXra~LSEUv!^?lZI=u~T+zSS$7j4`&n2+Y|VGhoa_Iblm?_+RsfZ%KbPWwl<UEJ=s
ze|%e^wgl(QY8{)TzYP*BJlO}-9Lxx>$M-t6uq8gPb<=WyT+UDNV*hb`pX=nSJaSv%
zEMA6ml at H<EMSBcRpPB=lhlJG<oCo-6rv(*&eq^X`7u|$#bbq12xj%$6jSYBg;kc+h
zpW&y0*e7gDCof9!QxVQSQNPX$;rxJnZLx*NM}TfIK=SC`FNAa>Zz?4Zsj{;-;>TL}
z0$#)>KSb@^Cu-*kI<EezbZp_QstEq)4L;yUh2W>~Vt%oGPekpLC$`G3qz2ko0`Mzd
z_>ZfB5rpqsBf3R{NwmjtMSS-pi*hV;4dTw`<mgSo*>g2B5w|-0&!O9}dzD)3q>Kpc
zWd}16Ul`{Rtr#;<=cwE|kjN7>gK(nGXY`%whZ3V#rJo-VvE1~c+?1am7`xhE#m%T4
zIc^2?M+|R$Z2E at 6YWaD~o|DVtLV)J!>j2J7U`=JN$&~<;^k^3V$C4y}_?8G<3rBD5
z0*Ay828!TtI|T%nCt4GKyK9KwBPqdwgPIpPIJ at ReF1j~YHt(uk_xE(yU-Zoh|KSdw
zJ8<4HmGde7>9qqL`L8u<T~E-kj?rt{tNS`euZZ--uc(FV2k-`L_j}q<W`W0{9sY<R
zZLI^-UoAYWei!wRNwi5m_BzAc{Eeufhe!oI9Qa>sl)&KB+K+MwFnUY+<pD8<n+_59
zmj}iU`UB}cVAl-k at N24DH#0_ikQDKwo#OSjUE_7DJiT{5^y^59_$QkvH~t{FZ2Vg~
zc0T at Va4p^i)L+Z%*tF%h;Q{U4U$z6)>09!WK#aYRC9yp>1U}~vZ_l-V^j$H!cMI=l
zcu<Y|gA at JQb}7xpN8c at 6$?G<n=s)ha;=(x!7tWFI7EYw9 at MZDcFZHfP`EobZxoiVF
zzB-w%x8;rx!R_brwJP5 at S9Blu>MnVJFDiAx?zc={@``m~xxBdZ$7Qo<^p5Q=*XTKW
zAiF=dcrqRPNBZ;sYx|1hZWMF*kL)Y%G!X2yc4c3Y$WX`5_2;w0>i>QFiW|W1_WE;_
zuaW-z_e_AI{`{>p19I2w@&O6YGu#j)FL=(W{<sfDCw%CC*#}<8YH2ssXkVq9Vcz)z
zr?PMHfnE{O7}3KU*M+Sj3S6d&u3D<~bgl(6CpP%Au}q(4Vg4j;EM#jTd7&eJ4FVmP
zOZ>^^CmPAjAM`rAY4#imi?zY6s$;%Ba#j)Vq+e;4Bw~Se5{sRhVsK9X`?Zc?(%^kF
zv6(vx*4{9VYbXCAc at z2TnHvuGS|7e)owe1Pc{U4`a)&MbrrPQX&gv6?rsd;i4`9P+
zxeujXN&on$Q(B1d at C|PPiDl#JbNWGVhjl1;;t66mUGQq~FyBG1K9=cCc2lBnnVQa>
zHyttW5pVNj)*sWtCpJH+yR2)2uPgso^zlVL9G<nuk5G_U6!l&g?XoJqksL$ZaiR?L
zAMDma?#vZF{vP4uuZ9n=^~oC!PqaQcXPxVv_6N#Yi3=5)^>7G>Fy9>)JkDhl1TR1#
zrm^J03%iVBRY!jE05?$(Wqn0;LT9R({S3L!MmJGBwjsKRBI2j)8p`gY*c#qPv88Lh
zZXihQnMl8|?Zo`PPkP)!kw0 at lH%?4Wq=Vgo{{E|vOmNnk^!uo`+S~kR%!js}l)s^_
znky&Xk at -pbzeP^EZsO}aMDhS6sv9RbVtEC+oQXD{BXsVZcu5{9^At$R<e*4t=MZxy
zi1CWoP8dBibg?h}6$v;Pc#MxX_3<}8%yPDHzKO<h=v*2TSx{*lfAOS7kEg=9VLAa!
z?AC|Jf`lCpuL{>M at Dk%6V(Q^2Soc2kt|stjFQ=>Fy${LOo-W7(Ifi?TWlCYUGjM+g
zHXma}P&s1x9)mF8`9rL0M^j~Zce!g<6YUBPph<-(s2xN6gzZf-)!9mk$gJgWt#x#l
zWYbh%Np5V7)T3_!-pv<7S at uuTfdZ{Twfvgmg-7*<`DE6-y6oXYAUi@(@CKrCL6O#j
z;0B#ZWEiv1zP7^t?*Gm6)&IJ_v^@N~=c`{Z82?~>7!60>#rkl5SpUC&zIyI;JFXAA
zI$!<6EY^qI%pKN;^e6UA4Ug{eQ`meo(HrGThtFSKNl~q%FL&wKj`p6n(u`f6$CjPK
zI%g!$xjiI9F9$O@|7UIv_bwH&mE0VTgcDV|Iou*?Ft%_HoMT7zpB2u#*uoR>b67qk
zvl>5#Rb3m|_L~;L8IOln at g<{jjMK-P8^AeO@`SE6ZJ#c at JPV|`{j9TmkH;2bXfHGV
z at iMf32zHX6xa!#I*jzb&h6eAlbPsDl`750rhYG>BfJG~umLl|e_&aGR279an&0a16
zi+N*H`{xDwIbNn;Y3beq at INY_(3QJOy}<84Qgx{MV^5CRthp&9^IaT82eHgSt~JUf
z{q0RZ=b?Sxu}x7v|6alAZEvcke%B`FiIKWu=j}<I;o5R_M_D`mK?8oQ_T_E~8!&zH
zE-H5;z>tOqtWn^*6>W>?0U_VHOxdna4f<`$ST73}(%;!D?vQUqDPR8=O8b*?e}ctu
zxcfQksVc04O}VGD;Iz)0V0?-(ck<IN{dIKh5om9UDB0gSA-3dKk&{lGix|d)UOI36
zR=edTZ<mwsBC4(=VKeg&YN=Usa9DRsRo9g{yP)EZ?yl5N8>lYyUET>9rmn*ur8$*y
zxI~Mv6FS7JKy(<45_Zxy;Evpl)`@pfnhO2g`4P9_Ku71~pR)Mzp-)C^$;Lu!5oNI%
z<-En_i=E#&e=*GZowt*}HNw~SGk at o}TlBz=xVsQqIkutP%gN#Hche1b-0eUH at Nus5
zW8$ePmXZ9x)96^{k6 at Cgb7C3s5uUD(Wj?QW8BW=xXY+&fx at V6)FP2%s+hp#p9*Q#3
zZxduweppAh@){?s511Qee$*(Mh$%r_=0MpN%1 at a0Gs}a0!oq!Uyc*RXH+-Nm!Iq9I
zd1~>zI=p3h*WcO at Icwb6K>vaB!_ltmy7G=8c=zGLl<pbkQX?7E`S(}MR*qJvbF)#3
zBa#PcZ){;*{=~K2?^IvCd-s;>o!^zs+R(XYVN>Bn6OY=BRK$_GkNHH`TrUp~^vk&c
z*Lcw1*uwGE#~u^Q%;fpl<6;@{wqp;DWoxKgJT at dQM?%Aa*0xBVJjIg<^Smm^hOsms
z`|SP#0EMn*BX}yj2Z}20`ybdS7`e0^N>o34M>V&T=iZB;K4dV$$lyAdvy(4e<+T)v
z5<wUJE75hxoWsV7N1tO%`aBHb&TTud?fk;PH6?lF{sut7wg(>*sp~c?w+{5$^}sM<
zLzC+TXux8{Si0u!`KkA~T8S=QRXE--9kxTxv(goWShlM;9Ne*w%L$jW*}*lshh!-g
zVsiY8V!aOHZdM+QyOAvDsx()AlhHt3YVxi+j2fq~C-~jPfK3x*2Q@@g;jgrODazKW
z;3HRU9bCGXo(|y&SE|{5=w=nPO97uh`gXmryhrjPv^ObR|1Hpk;{v%ai~pGk)>DkX
zhiG6co1J-uZjZL2UCk;xo0Tv-kNolO!NXFYEvNKLRT#&|%olhd`P^8xo2TxX)w5#R
zt9f#RLs_AGh{KCI5s^4^F`|{WPeU!;%IdPcPuc!KI)Sg?3QPLJRX)U6=nkj at _Mdlw
zmWrvG`f at UFM|Axk5r3^%4}Y+W#W<GHvIO)V>MM7;BdDknN)o}&R^p2g1vaKWMsc?a
zKR at FO+pU%xf?KuZIN70a2_TE}$yUXF?i~#07YLr!^}!NK%g|YgC&ikt3jTgM6eDU4
z-sCBw2L=DY$*B~-VoVXf7urXCoYUW;ebmRN(K?)Zo{t=W2p3=m$}*7B*cC>R!^vkd
zsWShcC+xRU%Y2Z+^_+Xai!QhXFc}Z=VH$$(KKky7?0-&UN5~d$B7Emah41P;M-v9f
z+~y)fttUkk#j7Ww8KV-)BQ^$ZDb>P<Rcvq${pJFa)ZUOog5trYG`0V=V8-VoYt<FO
zd$nkB5cVkFCDv%|clIyI{8Eh_Y8>t;a?*%N()BE<TF<?{n?*YML$5QUmp9>BoBM{F
zWox>QEUY8BecoXu;crKJ%iR)Y=c)qbZfQmk+!=Wlf#gMA11ZL<NM7F#d21-OIbsVw
zs!oO^cC{lh__Cv~)ur+0COB@~^QvPD=?JIK_t1=ZOLNzUnB%E~X-mZPnBeDO_>!*h
zlbSzvu=|F_5y!-1U+W9HFLfv`3LZsdaQA|^2Gxk|_+M5f%;T!I?t#N&nE`(BbWZA2
zJ`n*HxZg0AU+}c)<}dO&KbH9(U!d96rQFhu`c=6+4X$yk1fJn#{d*{uIfTk%3p=a3
zw;aK}Uli=#!m|2~J+Q8>6R6xbG@@;b&f#<HroNl!^Gz{#1t#vO8us91h)9A(JZx26
z*IC_5?;xcrbuv}DbzN}65efNJX>ABb0HN4Q=-5?sAVtdF7T3=`d0(3QWjVrfbyk&z
z2o+K2%gkx#$620=nO(bFJzVio)&Gdv?|w at d?_Xk<pajdOLNEEFb0{_4i|5jzeKtsU
zRB8)J>ag6+^C&0tsr0~*)TlI`oJ|oQFI;cR{;I;8w4vC)1IX{>g2FkdDN1wB_=C6T
zeA4&h|BM9Td-6voQba#8;{wPf$?a`g#yF{3)JPtJbh4D-Ew+g0omE`4qF?piqA@&;
za=#k9MW5h_u$4+{@)q5|(?0H3vzHF0^R|U=;(weF_ZBr*eYW=E5m)M$=PjDPS8DgG
zK|H at Yy+t4Rz(+oE?zx}ADeZ*G-XfQ8`d<8+GPdVp|AfoE{IEM`3^hxLRk}L-2x`F*
zZCT$5Qw4?#MyH{={}Nd|-#ms(!|B`QZkv{&>NUM>o*NDQ^ljEm6oQU3<d3`bMcw?A
zUcmcsOp|Vw26Y-SyNeDD+_>>|vGlVloI94dRj7dFFv%rb`B6=e03m<$|2$k%75s%c
z%3ddy`IWNz=^p!f7JHnvJcZH>??vtuUA#og-LQ*w!V;Uf97_yQxBhyaMG9{=x)*{L
z at EELS<lQ39{>IB=oaCF`&!%M!v23H(Pk&(3vN$(u*;+bm_Vl4un^tn;mfhWuA9l6<
z#&u=@L1=8xjn8!hmD>9X>v<786ml6NSB0}IxLKWI^&f=ymuRcR&lUXvzLWa|lpJSL
zd#yK5;VX3lUfIMsYho9Y+B3aWsDDptud%Pi=b49^tuy)GsK?3t=W4wh`|2natiD+B
z8P^BTnL2JlZU363k}rcBFAC>NV$ofp8%5jcp8tAi{`&+}+<-%LUBv+aE6Q+p0s2t1
z>}zz1&rR!q=H=!<^4suT_Lgl^67~#_%(&Kr^?%UziMf4{uIh2Y3*7SAxiPlzw7Pj%
zShx0dJ%`%~SVl*P4s=gtbeDYM<LgfwKyzE&^)d$O3I6+7b`kK~8|%x|@aAjFRiw6>
zJHD1(ojNW_5!9?hPc%#YjX2vAU&hIAUXE(GrqVx=_MAl1PozC3)y+GR_WY^qxg;0o
zV%_%*Ro4F%t>0xHZ5yXwikITm+ at 1J)dTvUaAAL?s$yJ25nNf$eWCIn2{ME-Bi;D2x
z3%u5cx;BvO46xNf&k!GEM2hRSuS-JFy~al4usixu6r=k?Yr&&Ht?X)7KeKa+^mH#=
zSdy2{(*5gyD!N+T8Hxbrnl5Lzk05n8f8`qIdR6k8!TME!=usyjb9r)bcm-)Bma#pX
z^IneKWI8L(YqFmtYa9GW6BRFqH``)Y9j^~u-SRc>)zirhZRz7-BQ3F!aoi8R1{72f
zAz_MRnVSq*xSnp24O0I|ql?Iqt#xhc3~*D&|73kkX-KyK=RLT20_U?0U4JCZaFf?J
zz5ys05|0OC(~&Z!p^n^?T0{w4-UQ5_ju^JQ8CS`5oMUv|<(c0Zr}gVLcI4ZKPch%J
z9|FUC%NV8&tNZsWt-r<g1gTDdHt`=<d#1Ve9IBdQBd71s9{lsl+f&(;@iZmqx~Dio
zxW=N#51Rj(^H`69SD{0YXPv(x$pIX+;#{*QFni@~$6Vm}(m$4ee#nk<dzr`0hx;PC
zUeABjJof}BcnvBN0Q2C(>jQ7OW)2n#AAobYa_mB<FW-r8*9iPMpR4KrpKv}Ua%VOP
zm0n*w93T&bbP`XF8=GVfvPJ7FG at +p<p#j6BNezV;#e2(~xWaQw=K>u0g&+Gl=>5&l
z6zLu2h_5~T at tU|d?i$bCW6Kcj!T+fmtFs%@$3Q!K$3~vXSe at UHYK3vekqx1a)8b|B
zpkoLw?c>5XP-9M at H*TpqK2dee*$hp!qV<@3G+zDc@%ko({hCC-bg9&M(}Vw*>OLEG
zYElEl!T-f|@)gWLVh~w=PD^l>ao*G7{TY_E_gs&_qAh>WjFL_Adlb*XQ;#aREyt~W
zHI34F=;%-D4L2^T$G7r|Yvpu<>{X07pB%izMiRaAWO}SivJez(Ht=1#M{Nw3)Z#hp
zZl!(9J5Jq=-8>6m-2J+zmp^-uc#suGoL%R$G<p`45QN0xT-<dj<s-*fc*U2r|NVUq
zU;az#GJ%W(1`OJo5HDP>X0zPgV=;}(4^UGd4f;RpcwFgJRXpzKSFa7R#9fHNa83{0
zerZMjLT!Y4A%4eS|2OzEZOZ at u@OQ9Ts+Hky+RH-dcKEvsG*`Yf{QV5KWTP_Sua7gG
z3jEDw+V6<JnLE&*yC=C88Wh16Y0!}y(Lx7|2AM9fB_v##TRMV_jpndEHagiDkBycQ
zxDjoSBieHt<7B$9vD4`FeCYM!e~n&$BYNfLW=F7xi*!?ygoE;1fAeZ^`oWowbW8l5
zY at MQC1kD>7<0bkPl&<@W<bBWf<o(|cUmk(Gn<EOJGZ0dEBBby~UKFLT4|?@o(V)~(
zLG=_jQl(bfNDa9r8YzJe4nVmWjn&UY>rXL3N<w0Z-fw(WyBd at v@S<yKE7-<NV!!4m
zvUj~)>jfK%an~TUD-xsUAK^?HuBo*_<Sc1MT=^Q9AG(iNTm at GE4YkBwsN^aVG?JYf
zQyb1H1lETKEpxfgZS1t+oKi8Iuv=q4eE&1{^C)l_&bS-SBY3RaQ=)Er<IFM<&sOXk
zAGAIzL~8Lovb}MN#*=6wH#ByZji<nL-6t^3O21p_4W;z{?>c at 3(ped<H;#2T)>Ou^
zbgx-7-l*e)UT#1$_i3 at Q!t>-3^9!EUQ$;%&=Kari!(3{-4f6qAWy2f~jzaMl4fCBE
z<~N}Z<jin<xwO1uM45=2PIw>2vER2r+{%bH#nP?%fjn+ei`Jw at NlqQt9Ls!6 at 9hp$
z&JWC2-v+zE#uoL}j5sqI%aw{5UDMb*p}Bg8iK~&;grn at vCvMqDM-fQw^lYJ7;Vs*$
zh4raup;@Xb)BV*pc~gxxagVE<CtWj3lQvp!Y`#7&ly5&@iGdt0NB7x?lnw74(fHYX
zb>sW!TjBVgs`*OM(o{@c9en28ozBlo+1%^8^Qxem<EzS2T|_WBx{b}UW3 at Jc&)zZD
z56N|}a!EfDw2~njdIE<Xy;><&!TVJd3cDFuO>AV2zAKs;%bua8LoX{Jvyfg;Rhoxv
zZce2WXu~;b?<~mQd4|U28M-Gg at jZp(o>%XDPeVBet=fb-ZF-VS0c1$DnX*KG`fTTW
z`iu%hzNbyJK)$C-NHhysY9Q)!$<6dfBsjRCpXq=1FSXx0)wk}V{Zjx!Q#rIg4@<7U
zq)rfho6Eq2W;Ikn%HYK`@?+MHs0Xo(?0>>uFuBPviVRZB_6Szg3mBjEV&GGiC>d?_
zM9 at -9#4>z5OlCpaDL#HdVuTL}yM&KhNr><fr+6%TB;#1PvczXXJl)*?lM<f($@s=y
zZI$CYhL``!_->v25Bl>AiBW$l#&;zNQGZP1{qKx#H$eV(<9nvHBN~yNjPKE8*yZ at v
zyLyTw{}0Ev|Ezz2k4H$1 at KG_oza}BV$G<$jk^H{{%XeJc0#m`T*?Wr%*I;QXw-)va
z^KgH0JbeeYtxZCYE3k96{V(hf{y!sc#q4StB;rWkI{#_MD9_Y)1*2pk{>qseta2uA
z3-MQRP$*;9cU at 89#wKrF$^_b(yv35tUhn)$b(jgr><Aei@%AzadB)RbvD(1fD&&t?
z=4=*a0HA8Ps*xc?3}s)r+BR&6$cR`MN at B)!^5WQ^&TX75kqe4NIx}JGUBFP1#Z0@=
z*vKRJfyYE_<kgb6{~zw&1w5+i>i<t5LR9nwrJ7o+X^k}z)WoVy1atxk%;-d^qR at J2
ztd`P(8evB90t9DLGw(Qxx7N1WVr#8!X|+}Hj^P&Y4qBDAR`ALh2LVMPB9h<dyZ1RW
zlZ%Rd>;HM5f1U^CT=v;}?X}lhd+oK>UK`Da<usb~EHpQ}P*u+-+LfxO@$PHBr+O{G
zwN|}=M)gi><DFI3I)Njndxy*veo%KTJFUyq=dA8+`2ujvy7Bp*6Ezk&v(EOQ{Bw_a
zK68tGZ}o0Fj}J5lLqP|PS@|hk(mybZ<~ok{Il{&)jP)3NR(SYjMPl)ro`;D;lkI*4
zL~63#OTXR71sZA`pQDcFy1ykGL+a>;Dcy+a>?x2Olk+za2Uh<u6Fn*#8fbog$JSFl
zd6DOPH2wU9@~3 at T`8 at wQR*^aDAE5U(QQ^1plt^|R^1Qm8o#&0UZ&@3DW8zJA*@RLT
z6gF0V5ON-UA$aa{!NTX<JC0>%N$lei=NcVP*qEAClEH>Z#yI7sD|D{;D=u4ef&r-t
zgOx7 at 3pcvwo<`TnQQOdVc$ocdBMF8%pFM#KI1wgYSF`Mjc4xt9sLc&sbu}-{+`CO#
zWEbJ%;v2V+M_0U~kL%ki`8c|SeM*rd`Pkv#gsxC(Y*)=HCsj_X=EDyE!<toBY#{ku
zVcVXKwcDf5gp-isbW&HXtA5A*`Us7uJhf{`wC3J0oZD2qyagnP`%oO>-d19kIt-R)
zuaPl0+23wkd_tCPGBbWvzIg9FC?JCrnWb<`Y?-yMF-5%?TtzCj5mkYjBd&Ob$I&zq
z_>o-#H5IdtFgi*SJ5%k-=)UPc)4HW+LJgEuApT39P;mB!K+WXBE8MzA5ED56WX4Op
zZGzkU1B8;{=V#Q{oZB2ZF}Uj at VGEP-^D}~TK9=9lX&oiSFlk3QZ{2h$0~nmMR5T&o
zO93oIG35HYb)~85Yb!uXUTyEg9hti)%_Z7o8HVxiJNKX3gzhyt(E;v;xD5e9t`bWL
zL1{g~v^%;i%v+4pQ=X9f2WEG_c9NKZMDi?9bj-q_mBjqZ>gdFOSLD%;J9V6dG$u{7
zG?M4(%K+{Sf|- at _Mj?F>B$Sd>vU9v^Tm>y8R^S&}+L&K?m@^y{^Bg~lip8e5DKHS&
zDuQfb)Ur{3L3TN}@aqmS)N!M^5rix*nsfwK@@l&Uyl|BgpC%tM1#FFIoP&knxqNSw
z%J!4lq^jXkB*#76gp((NhUvsnuTZiHS=u at W>cl!t0M}HY<10y86Z{kivww9mVcY}B
z!lkfl)}KeQKm6jd#)Mh1LAK-p$czdlC%ByU!M=PN;-=W#C~SqB3Uf1un_!HkeoH8I
zRf~YD<x|Y<Dx_%n3)>rOFIf at 2S3B!23?*l`2b0Qk^`7g5m7qLwMz)dqTqDt68#)ci
z33XJt`^JeX>ckb%=(QaEAL=Tj`ZA+0Q|K{Us8wpMXBSp?$PgJ!`I#1k%VvYVInYPA
zHiF%<bpU2y5XTXfQ-Y1kn(+}9(|U$*NM>&<M+uE6YOLLWH-R at ug~ontBs{I4UPE^I
zWcR+2U0sCR{UiMdueELzev1{dAHNJ>0CcVC##g;={J=c)uqi`_kImM<LHM>$LM45j
zU6wwO0)Bs}vQ>V)MiQBQJ?}Yapt<O?>D_o}T34f)gf?i at u;C>TPCOy`DQe)btjLA@
z-#_wY$<yfWh8h}&Ur-zw+L(AI{RH*fN3|CeJMoVNN35f)k-Nw!b4AhU3udo~$@}qh
zKG04;Gp=vD-#S6G7%nevZEtiM-c4VYUte@#?z?lkf7cbte&@s+c$c}p?okH30C^le
zCVi_6l6kYhgS;_r34adw9z4*{#%7si?Dbi1_u4WK%*@RL%dc3Nn+IO%JrBHe#XI$F
zwK}F;W}QS)xj7Ca2k_kxN?u1#$_MyH-lhMpt|mw#=uHYv>wP%z)35QL(|RWVw>1=`
z$D2DD0d!{tSP#J&t#=1Y#Pk%X(P8d~aE%c!?qj-=S;GC2u>|(0BeJi%2POQq{*(U2
zQ&JK7gRAWNu4lYcC?}u$T<?y7jFk!5Td^P8ZLM3WmxMSi^`oJPF~)&p7rUAR(gP{s
z`$1z%0xJBo%qqk0eXh^(FXp0(=B#%$?j{j(cl}~D&v#D07;_}UX!MI4iu=+p8ZkHb
z&@cLHG^~CR;zY#%Sij)o=n}MrKJ<(Gfu*;8(YB|EskeTym=%1Ue(_CijT}VdF#5xw
zAZPzo658;1cm08Y5$O*X`T7Hn?`QhZ9~MWhkXmp_P9dPe9ty$L&$obbbb=X9JjU`c
zxa$h57sSnrtZMK>C|#7S0m at Si4yV7U1{%)pszE)^Q}Ob7yfE`yplxdTw}Poha{7|y
zQO$!=518i2Qd7o!Rpp*<7;=gff!ErLpptt{v2gPC@|!8{?lFc at luppVR7jH1<S^!K
z+|B<c8c<E%O`&k&JWcsZgTs?{p6CYpwXZduOPkSOD7M{ku6lq;pDXr3{faBnBs#4Z
zNb5=RRX9OX3rdPjo6#pmbrhBH#^z?xY_FFF9QqI-wX!$u3lLL*3{7U*Z#T7IOL}~)
zn9oB7ZIot<%=3%fK at pBN!n%H9O{n%MC%!*YR2w3jwa*=&1apF&*BUiXF&BrJB$@d_
z&X^a_I3t6QVQzE1IX~neb}KHV<`(G`wVRw&yP8?Zn9k-OtiEX$g5J6I4?I?N6{b4o
z)$a9izKN~xKoT5!^%0V=X=bE*T}7?!v(K?qC;YciYe>nAE=9bGi1a{b|H`bkkl{=>
z at ggU$^7P3bRH&Id9i_15=TK~EAY6N1d5zQhAtF0Z#cT#cRqh){XBEuv7`@3Tm?#b-
zcZ04(5H)W5XpfjY1(S2U7)04Xop=NS&`Q at x5oa)KVYd)q^VCe%y%cs9)R%ut%4L&P
z7IitXj%fkAx>Yy#TZp=OTDPXM>gE<t-NYKhF>tnqeERfh*8Lqj^m<aArYY&h at Xk)r
z-M1TnpEKn&A-nau;S at Er?$XA at vc}4fp_0&|k5M-}cM(fnv(=!@vT111n*+n*C^4iM
zv9XYBmas==c-DXKX_HCbq6`I%YPrMSOg1<2ABAEYTN-OOI`J<dZqO==qvW?G8H`aA
znPfnL`(T|>6<hyG`MK&I*y)o?TA;@;DOGBmxRQn${;-6XzS58ha;PzNvh=FR52c9N
z6vHr2nLD0Fq~esJzjAJ$2d`qixtXlJOs(T!4nA-4^w`-=d7pnN_qo%02nGH1U1Q?e
zw7fsr`_#z+wZD$`19=tvJ&<evNi``HwJH>zf at t_BH)ZCE&UMB2PV41Vnz at bhN)`-g
zvr;XMB_5)HaDp6hIIj9R_drP&U(6+z3vCEOTiPbocds6$b|oNTMG2|&e$<kuJ4X&P
z{mrS!=*O0&u4B^Go`D+$q*bS*s}0iAd&8QZo^4kZ5sufJ5Hx7q&QQ>cKzf_)92)=0
zW$BCTO~Aa-E|DM^ekamL#iYOq?cvH!kz!CGms9w^e}wZBI}4+GhLiIx3D#a%9Qjcr
zpRJ~a{HMOgyBrC2VR3Z0C>J7Nn$SLn9I3tSo^-sh!CNg&uH$8<d-cnhx@{#t%T at BD
z9+m8xs|0PiGacf6PVGHDJpkP<C*Sh)-}^v+cl{TF&ewmRB0t4{rvK)kRleT*E}wB+
zUYCC*k@`H?&#JuXQ)x5kO}jyaSxNd*-aD=B_%@~OKESWjdO9PeyOa1eB<OC2BaAF^
z)8?wDwh(`a-nt`sXXvY!IuU){UE9}((I?#%eLla(y_ at I0PJEnqVO%2q^;Dqq3+(D&
zkPjV}aYw6CCiQXd&)3^N1l%L~YRG9FqfVl7&qau<mY(*qJ2j4d=(7@(JEzZHj0my%
z><VmDz3pX5)SDjq>^EWLFIb=5*r&bhll0m5Dul+Yz3g0W(Pz<Oq|Dufj)hHZNL}I`
zH#9<03LOqlgfZ-x^D_xlr#Yh!%0z_BXZ}QDPe&alao2mn$|q24W*zFUJ4gezis`th
zw(i&h=bD=|SygTeDdL`JPZ{0*O#o at 6xCU#ZjAlr&8l)UnJDKii0O#cnCw?>nzaH%r
zhoq)aKqRg~_GB%evENLe+~6#jRLFnF$w+gYKu?Waem_(CmBURpBxI{>KZaqTLdbNW
zI;ij><bn<fwTq{X^v1j5G($b-jGTs=jn1_Rz-y>k?_Awt-~@yYVzmlo!yDqO?AonR
zoHgWGy**Gf9liaYPtn_FORgg4MTmKN`^^A|-Y&B3rMK7BET6q=UCmMl1EpxPqn~GD
z$xs)vNT`y^*+bzfai<SMA^^8cdLxWf$ZA|SFYrxzCmrhzeRq={ZYVZFq6--scW)M!
znVU<kwzX8lRaKue>b)f;E8rRRYOI!Z at 4XDk#@hVqvx|efrDZYh&EeD|<t_BuC|YkZ
z;}}9vj?8A6{b%s1z&+N`vB at 17M%9*xK<_syzNg(w4X^F8TD__>s_bUS0mHG?uHF)D
zc*eX?;wciba}Gvm(RNR}dc(PfeQf00c!N0mu(YZx$|s8A#x)kcpQ$nWE%A_{+Ly3o
z(Eve^=u_NWVDyvIQ5LwlO*gR(=u=qZU*e{*c9zknx};A*uiJpzol;}9sTc*cz61|V
zq1t7Fo-63oK!3ELx3;v|Okdd1u%(@gEp5FMpU#7Nk#5Ez|66P+b~KJBI!m*hXjF!@
zA?5WL@=+ArsT}%&A#HWKhWBbu%Jej*8IEyDkLB0r-%r-_mF_LwU_O`rGlr?VOZwZa
zGGot$b={wS%T8jYXm5>K>^yE!h4!}1X?+cP<zuur4G}1uMQ1Sw>+=b@&z;r>DVX!u
zH6}XJt9g>s-^QT7bxD82=;~LnPp*Q<)3k2}q*W)%sU0<&x!%eVUCXlE>gjJ3*0 at IY
z_MvVaW&sUkZdDg4UzQ#s)}uXc0!n!giI6Zw%Qs&mI at f4KSpU$7u>PG_KCyB5q~gdq
zA*_F2rb7Fuc2cnue^<Si^^XG4V?=K{G1rMJZ>%8`&WqaM)*s{XoHU`Ac$LYk_KEEG
zzs`OCw{G7T<-QNgWGG`=P6;|Ty-FrC^x1s--x46}uKz%Vp8liMw((o|=s(kca$xS>
z4a~ES&g<qTX+N(TY{7cwIGUUu^cC9fB|D={?r>y`(|RR3o%El}_;p&P at aqnzMjzh{
za|cQ;!Q-Xw({Q6iN|k$%3GwS8n<Eq5uTa9+fqJ}(zUj8}%GYA{@-KexU)*V1IMKA#
z^W!_EzpO<1_NBjcY8?8|Uu4+XIsIk90h%l1 at 4L6SFa2e1Z+qNy!TH77<9-h;J86$|
zk1Es9Wwn>z9mp+H0yRi%2EdOwkk44AR at _yD;{bC{ecKh~W8F)?Nl!3hc{VBB73cv-
zy=pp5N`~du<@NdWnOkYL4}Auf-~~F(wKwu>OzS4{UUE3l-Pz~s2vg7zUeW|8+n)3a
z7KGNihx{)lvQG0t>sLL>)sW|D3g4suXbK{bJWavyv3mGpeT7^<o?lPSlI~|nFlCpP
zW-bge=g#AMDOfB<vAbwRswZv>%;@QdAIz7rZ at w+b@11&IcBDb9uPBC-<rw>rTrHll
zubo0t*_u>sP_3>sPh|P?R=qN&tl**kg0YV=_DRj)3S-}Gx<X-Vt(86mHu!43DJ_^=
z_ySjVM^OduZnS1Z%zdiN07Q2t=FBebJhoN%<~{?8Y+U~od0_6F=M}+|>sbVijZj7I
zH$_IHpq@(_bZklL5Fu+zo%kz!W$=v}*J5gzJ{gxgn at QOk!NS#9P=MA|Dv*$rHSR6d
zw3Zrq at SjnK)>e6hDPM at uv^@>=C8MEkbq_SsumNJmXD9`gs>(#i{(}+`R#{!mv$Kz{
zVcxi+)+0HK9$|d0V3K(+f}EASG!N9N*BCu7tyMjYfL=ME21sW<f(l_wcU4a7H$*r&
z at 38C)L)=Q-Vu at ua5!d6ED8oP{tKE1AL|7?vceB0n+`{4HQ4j at gx>M;>H-p_|cN`Fe
zQ<L!v8x^t%yvbZQHVn;R%YB>S)#c>6Hd1RR2UtaN${)ep9Y=VSXY|x;8-|Yzp&$){
zwuWvL=24xy1%B#DHH12t<D|s~Su=6F8B&p+PZU|Y`3)nPRVZ)LuzspSxuUy5`G{d5
zpQWT$av~Vx;OQSu{CQgTb&&X&LUUvF%1d?Q>y=+OcDg?F%DoS_dZqH0nE49MmR?De
zif at Lus^vc!FHf~x2#w^amc%psl_wT1U$6W%PxACi&-ygP-5UW7O}vzr9XY431<@nF
zwj%vCbVgH;^rznX;-teQX`sGt`r=VuuZ_Max2u%3zVyXIa-Tb`QW$dWH=-{V81WYe
zp_=>p(ih(vmTNz!FaC_0K1*K&6%7R#{6rRMqJn%mYsG}fP?>VJxaDRN^4%TA^oJDj
zB_gE0!M%<V)7lML;297H<?8eGQtWo8W4A+rUJstt8<PbotD647!faI2^!{|5RaE9z
zeW|EF>Ta~V-4J9WDk-`=TI!QjFSm{)y`DO8We_%sCU;S?(D{n$ZIsL at s=pknUhqze
z>Q8tjlU=Tw$ntCzWM=fMP<Fjs6%%t+7+p2M+nla?T>4E+V7~sJudhA=sNM9{yCCg+
zd)@s1g}u&mIj7I14xeq)_kitOFK$L(&Gq8?L-P<ZQ>yG^D$Ursz?nCR|AJdL&fq((
zCo^DDRL6>9TW5MEy(quEzKc$B#~Fg at QD5{Vx2DhM$GBzYIV9=61;a?qZE{EaLv=G(
zy3grZPv{~|?x8%- at l&r7(O29Rl<>9Oz5R=Msx|0dVQQ5bZ(3jVN9RfLeF<^ye>cdx
zNKXO>%n0s&K%M>$H~x#-+;!#`dYC;=_;^Lav))A82${U4smY{*%uFxOhky9O0-0oD
zON!k!BDC7fw72D*lM~$}g5j{v{^_N>(!Ac&UtTu>6WB}P)X0aEMasuvlX1*h-wAVI
z^+2~m(=&=yICY*Bg=f2k=(!Zr<{e}BR{$teX29JS at uSIlHI(34J&N7m9HQ|!Y{}I{
z1spEAMRVsQ&YX}I8BBiZULHG@$O&%sYqR$^xM7YrFx8+~-OW4wc{<qmq9&=#lg*>#
zOgCJ(&OP6>yvsgxCY(C#E`C&GhW$!vNvyphoH}~THJaT$00C4&A!nXpw$?1$qObVV
zb(_63*U~ujr{_1 at OLINXyLML?x&&{s8=*{Cl~5h<OEZ{3 at tM&ZAK)oo_vo&~`8%zv
zg%5JUl0V at i)W;FJjeW%K{jci^b+^J<uvgoSR&Pw)ViZLsCg~_D#n^Ht?O{w;m0o+r
zsvVj<$Os`VDiW`_W4xO(cRpNAeC!b9;n!$Dmu$T<8*)$#YqSsl=anCIZHb$F+PgTd
zXHW|8Ysgw~cLFS?Y&LM)RYu>S*vGBgXoLnUQKJL72bgvnT=5csn7QFg5B`q^BY!mg
zL3e+3u*btRnkQizg$kAl{Ag=cHcHUgfBxmfJ^xPT at JVy!ssdIEBrdC|A`nL2Al<sG
z%mQJB&;-XYBL8$>GNh_bB0p5pWCS(yy_D`Ib`nBuuO&y7#@5~!TM<Z%DosC)F!c12
zp6`qG{?ER!?B10t)oyC!`QKv8 at XBv|)b%jJpey}r3VXz3A$N-y1YylX<O}8&L|Po~
z5!Fy6!bMFmBZDy6AUKQ03FY?VGWXGnJ`fri=YEOjzQj7jzo_#sM*0_bdKc;M0i|f;
zR#P(~JHJ<K9EaeZW9Uubd-_`x_UAWMklpTI98CUNDIdbg-<R?eDtwte5s|R7a5%^C
zk)xNhtTX#tyH at pc&RxrR;mlnub2cwqpNm$bWnjYTsxNdCi<=MPoWJNx#BmoVR$8J^
zehhA_pF1P5(q=It1iJMIfBRAst|<c#`74rF-E0`;Bl-XKll$-d>gTX_Iq~axZojwr
zD((`*!MwB;nBMmR4MNA^4|R1d^f_)Y-S!h{VfIYkpgyvYYIlDKY98VSX`EO|J}1#l
zs;_z%9%So%@j>b>;e*T_zCBY%99keqo+FUl>nN-M at jp;FGtVn$`e*Yk7__tT3Ua&n
z*F^>13565Q=6Yn&{&|9(35UelC8okWLxZ=R`vIzdSVkqu{W6>fRj4U)XCP`T01`@6
zBunk)=&-c*0chSC(>AP3yi=y36KPkB>ZmU(WG#0l#{Ky3^c4$1XW=*P%8<q7+A+?8
z`3GyyU_<<!D3Q|Sp-7Fq93wz5c>+OTA4b2gY?Gtf;-(N}AuD8sX{8aiH+h_hXC}e1
z9K*3o84vMAN!<g&y at Vz!GWW-ZC4kJhgKhq%XCXSPUy~(IsX8}yt;$?)*TqO+uOr(E
zBNK^-+{KCCA at F0{21HBd)XX^VM?b`FLK7-q{V&s`TW=&8c+C at IrDon<I<bcgYoW4&
zmYVaTdn029&0$`op5(;h%ze-a>+e|SCDAfo74nMYQ2Q4|UYoQvP+ZVI^3R70ilC7c
z<zk)FqcIAtZz(Fs{3E9?%&9qN>IG4I@|v!jCzCsh_U6=lf9g3GIPu?@>vJ!NOmpJ%
z%{ATmkrQ8Fu75b~oMtD!+FVb)@RA=m at z>0C^RyrF?RtA1z2ICYzQtTmZ$5`>nSAEd
zM4Ov`fR>MBYnf3r%^J)B at FM_B6Fj4*=R2*FHAtyl8uau)`}7>A^=$j}cs<?KKAqyU
zj<-*1^>nkXcd8fPo!aG_daC#a>Wz^2+?G8|PnYv_(wrGZKjQhBT+?2wp5J9lPj*@l
zu%#V6{keS##4?jpc2_-(*{9T?g&a@&>*@K~r&^=&^yAq)onW8R`z>7YbgQ1$>00FI
zR*28wjT~)64sv5(@A)vAaSx}YCxSCeBxKKrta5|PxZAgz>P{zB$ACKWJ$>Nswp0 at G
zSbKj~NyW}pw=z5rNKic%;6G)Jaj$1h3y(1^H((0<XK>Zq;S{!xRQW47e5QXjoY*Wn
zd`!xwJ4s~|)U~7-p(}lJpSswa$A=S9VnePp`e@>`Qfe{>&vkNv0$X3sg%Za!Fd?_8
z&<Uv`X0XNpkE;A>+}|gi8nFz>3ers=(spXOyXLFf>-NfYoEgU%t(Ub|v70U<X_)K2
z2f{quxIZ<LYmNICK0vH6&u}V6>L^pA`yk~tP0~&E`=Pw=&i1~OJh$_XYRsk+&z--^
zk&CA)YZhkgAUoTT2xF^)L&tK=#+&#|`iCk>d6^C_`jAxf+p&N?5sW?86<qY%fMDTD
zc0ZQ|hfXLVvYMReD at l{?#NUTQ$Pj|l&g3Q1DR>_SE0ySjsuqP}q&z*_Vt)OBW|Rn&
zmo-)UNfWrPPX!3hZI3N3R#vYk^j~{$7onJ3S?s<VU1c6AaTYfLO^QCgO^V0>^8BKH
zC#H&yApw$er8dwRld`OVB+V`)b<pvRwQHR#%{ju0))l$u891g_C<jYotz1Q`+{V;V
z7y`($l^RzZBy>E+ku}$3s6xx0&4#>212bX3-bfrlCE*0|GUpb{RFxQAdUC4#a0 at th
zWwJ7I3?DQ#*Yri*qHs{1;e4{GWaA%QlYSjW%F63-<<{V;jZiMW`SD<=^1V>)mg$v(
zW!B|_V+wH4SmruAzK at jxU)>|jXa#A-Rgs|oa1cr95;h9CBW-Czg-+`PF|`04+esDa
z6S)m7T0b)KP4@>7n$ZtARM{2^B?hDiap}#&PV0WT=X-JKzD6Jv^V#NO(EK{Sl231S
z6SO!|j-)N*aP?PYHHJpeo5QK85*67~F5>1uIlBsLW(p3{7pRGGnTpAn2jlcWcTKtV
z5|5irIWA_H3(eVDd9`q--?`rJJn#2ze%)KqwnC{fjG|{d=PSY%?9#^M)zC?hXCYZa
zNlL|*Nu0p;wshz*KXF%fyn?m!%Uje!{CcQ0n7qYm<~+UAJe|6Wo>E2Z9jeMTTGN>P
z1_vsT)aUi0P=8c)wkon#zwiv@(>b>+Hhg!d(pu4-%3F*z%c;D*e66W-26eLc&Kjj+
z_OQa;d2qEU$HjbG5F~8U2bJ^9;eT3C2h3vJsl3{p9_Ym1fpB!DcKmiGUcR)a3X)lZ
z>qpF2+VQA;j`|SBYv)W!E<!_%W5Q${Ao<uDKjXlSay2O9fIYl$cTRLw3$#3reOfr=
z%^lIW*oD0H$m#I^n9|_zlgei8qiuT!vwJL<%srj`wgPnb3MRG&6E9|-_4UWZj&SXU
z$N+se^FXcb1JdS@%;-0$vQptH+yj0H!6!Nx-*ylYOq^Yj8rP*Abw4?i(Ta5r#13wT
z%@||Z&}q(l)CzQk$}>quW@%;v`1Z&Nz&w|H;lRsQrQyv6-sc4G%KWE-_i at 2Xw8V-$
zcsoe|FL;~FW**v$;(jJFNknN<6lclA;Kv_cr}cWQZu)MmAd at j~jvlZwT*-r6B8DtM
zwqD5lxw7I;lofMaBN?%dN-Hqh=wtm-!7k*o^AqjeH<(Zc7f$<dKP*MU5KyRm_3!X3
zlnmfI*^^^=q1M-mg8jeEx{{27u at Ac<510s^RS*v;&l(fyjFTOoPT}m!Bn$&zGr(7{
zZ1&rs#G+tg6EC9c8f(*$;?VF=S)&ui#9LPpOpGc{`cPeETxH2o<VEPjai;A<V4udK
zduEOl{5t5ITwT;pX18RN`WvVpMK_puTE*6d*|b2`!?9%{C;Tzf8$`i?P@!<)eks?-
zR#|0p{H%ziOX*K2c at k4S0T3HAdue^6oLY-SD~z at XbPP3}Zpe1_>t;B9Z(eTAyz0 at l
zcStBS#HK?tc9xEu_ at R`{)%&;;A80;(!VuCp>J1w5QoS_#j**+ov-QU9NuHvB+p%Jb
z0;HhkQGm~Ft=ID&OLqF-{QBd9Z_Z^<C81>i(#lJJl9;L{h)GN9Jb7c*@?5;PzaFZf
zKFZ1tJ}?DpJ0d?el0&k_SjBRp!)}pw29xYKZmV5Bri@}VGp0h%%vw}kkzmfs9|N4W
zOw)!+NCu at ZR|)JPx7cG*S-;iD)-mO78F>*&X|i2%K3;M(;(DXCDJEMwO_$(qH at 2@7
zk13t(;h}(UK(S&vm})gT-<)N(yf+<CD@|BtOo!QwB|5;x=HqUydcvRZD4gm~Ad4Xl
zN$8lvaO!sZAT_<@A;y`JU)Qw~A%A%pQ-D)x4}DD!Gt~z`jFA(&NlrMabLmnqSuxM_
z$&(fNFotTucPmDLJe6AH(N3%GZ-0qh=A;j)&q_{OIEfbapfV#pnH5VUJgYq6S>?WZ
zjv9wsg2{;$hR+Y6Fnm!AO=SjK{X_I|fZ++n=s~-v&BGhZX0H?XBg!^p-h@@dBwR-H
zHI~i%x)s%cU8>f=FDz!Hb&cDs1{2FRJF^-pq#}J}{C}*k%`yXh2?p+u%EWn1X at Pd8
z<nq5F2jcT8b(fr{kJki~XOt|gQireq5(D1)FLGT%XPl>zZ-BFTP^E#+St`9GPnirR
z&#p*I2SS>q&olT}M19Im3GRGS+W0crS0Y#!Z3VgC(`YB&G0Q#!u|5(lxR>yeUpRfO
z#sC&Y?a<=sjQn at Mq#iNskF~baKI)8{`8k*VAikm-^VyBAy&C5}ajvd<bTM+Q+mHTx
z>xs<5UIn6SFePmrn%zxrxys$cm>1W$FTgGS$Jh85rS at W3nsM^qrZ3 at IwXdb4hUm}a
zfe}W=T at 0<84S&8pLRHjFNURDawpwew-HK;YXHE#(rO5Z7n-_wWA26k81)(gGh3NJu
zDyyfD4OcD+uF9Y`^^ZS(LaOK^62Gq2!XeoIK<VtYo1IuOBWjiRlXS&0^O$|a{Qc9n
z0i>nda4oBq&Y&}T3F>J7er)Do!8wBUJta7LUGrW6MkV$IWx|P~a`&jc<&i8Z$CEaQ
z<G`g$RrCdl(XWCmAi{;4vulXEs7zqo#gM1~tA!D4(e+jl>Ag4*K5-NYC5aOSN-0>S
z!CfSZLKxC3f`u79Dl at NScu&pMJG&x+O-KembrI<uC9PuJvTsXXrLGui*8^v1J#d(q
zBH2IlOMg5<i{2R-+0FgIU{C*dcXxC}h|8&FU|B5m_cmy>2q#YKcXQ8A;WE2Eu>0Z7
z;zFoC#=JA at d2b0ou7ucn!Zz<}0s3(A_nL0<mH{aKtO1f&nJFPP@&<e#q~3K;1fIMd
zY}sg`UkRtlfp~vDP>#4V1wW_u*y9YS(TEg6Ggx=+awh9<VQP{7TcJe+;+s`uC00N8
z+J{BEHwX}e&0vD8xAx>}mYu=GkaA(Q*nR0JmE#KuwLQF<)`Wnp>~8mnj%5VALsCty
ztei=NjjUA+^iEY1+0(6OKzzP?QnWLAh#42dKY1DFcN(9g at lpt%AMNpZ at Hz84J@EO+
z*`I>X;~&~Nd|qX?a{jOJxwd5I@%cVv)D54T84T!L&rXAI#<Q13NuUj_h)$sk(P=RG
zSl at ISvvdkQL2p<!WrkKfkce&qNy7}i<w&jk!JR|RR5lIm6pchlEGSYlWcHba2}QlP
zXAca#3yIA&{Wl6tYLAi$76-QbJK1k>QklUTo##A&T}~L^tMi9EuydWi(CpgV8M^qq
zo&Nx;?>7AJLpxeW_~ZX~hOEc<e-Z)=SxDsM`3n#RlF-<@J^omc8~V!ocdqvrk at WD3
z8Tze*dh~t^++gQHzyCKfYX6P?KXq2G(XU*vll?#93+w;xJ^K$YbnpLorn~<}|A&3M
zcmMC($^IYyh4p{8p8ba%^7`-be}EmF!ojEUe`=R)1jQJpH`A`+d?V`+gE^W%`re)E
z^UTA(s6O}a+2?-hvz2$q`*OzVzcJpopm6jM^|klxT;J!g1L%w4_kp|i81DfHfV}ah
z|8Fpg|Be1%(MSLPwv+uI`i1qsxM%+n0Nwk4J3BG|8~tAo&-5JszwTuJ5B<XWKd@*2
zVTQc^d;DGy-Wh(sj2?a_zc<{ybA3)#eo=kidq9sq?*$WBe$Qn@)*(}JdC5^VbZmw3
zPsza*Tge)GNDKckAdNMiFugNL>I(@V7>mbiEFLfa(aPXMr`f+<bi!b~%`8U7Vi<WX
zIFuY^9~tKuCQ5u at 1YunKoyW9db2k<V#tR#B-Y;h`D?a%YW%ldt1$$0pg%`}M^?G>0
z<Twh*XtAXFIlF`I_Dxt0*nyV037^dOzKT!g$bQ-WCr=KTZl%6W0*aN9uK>dUO!*v=
z5pa#EJ;AXciLq70o0zQ2IghN7mp%9ImUdsb#n~i5Ow~Z`SO{=pbZl)Qsv!AG^dD*w
zYdU%8W1T}H-;Q;D$%(6YtaC5Uf8;_ at DubN(c`|`wM$o&w5QDGDpD<^sTJ(crdgN2{
zV at MQEV&h0cg<9ckbkF%2w1%0Gc)nlg%1@{Aio5UmqQZxz*vrl-=z_~TSg;aY9|q{8
zwfVWv{z>1BKc7|fy(ak04oNa*zLYK8UoBp^LN>*_4H;P16LTTSCT+fxVE=KXA9-<9
zu`36=iJVD0c72?Ufyu$2C@}B`Q}a!Q?$3Yf_v2)le-f{#bK|FGfwldx at T)ry0EIh5
zpmWo1K)Tw3#<m3uuz)phQbSJ3+Vru%yH8`NP9xIMjpKX?UV7s<-L=i&w=fIW{Wn{<
zJQTb4Pf_Cru5j}9 at _E$bF8TE*0&MV~SmrkUQJ*D++!IqnFb&vbHd$+Js>nJZygu|l
zy at rHt_#^7@`q=RaCVq_Vh#=F1-{bk#`uPDCa1-+oPTeJwTsZZ6yME)i7Go}O_x5@<
z^d<oj3y3yqV@>>E_s1U)dstxZ7x`KrRC+n@?fH7Qe!NWvJWQJI;vE)E|Gbe3;e~N#
z<S=2%qHq)b4G%-^AATj)HP~8cj!sCdF?5ER2_kAY+ihisnBmU;2VdQ+8cLGpAgEa9
zmm at V=hLi#u#|D>|!B~4Z at vFJ(1J39B11G!23)~O3XW`t>gY!t>w6&_9!fdUv&i$f)
z^!l`c?uq&aP}YalO|Mp8NT6ui2fj*}0g!BEX=uSm$z9&(%Wn`ZARdT+ax7wz2FC(j
zb$d05DY1)cm(I7s9t+Gud=U&R4-h-x+?!vOpS$Q{pV*aTrCmMN3Ge;KVpGQambkaP
zMbB!dmX}1^i8Ct0c6Cxe;bki3HQYRHN5YIgnR+cXRKMYV`BtWMJRQ|rXplju#^>QX
z5Ir7;eZ*yYE^5;6TJLugzwR;rrskBlxktk#0st<p5phm6rvIqYCJ$?(0!a+PdKOef
zU<>ca22vA>EhTT2XdWU at Ozp=^VK;)QunH-kPif==gBxoVp0&0+ld*AITqMeM`~6<M
zz1nzB1PS0^viF)zeVcQbI4T#xNFj0=(RH_-UZmxS6ErHSMuSs0^CxM&7Gmypp83co
zF0Nm3h+JPMsUf*UG&G(1DtV8QnaMG1=XzEt&nMs#-$=i0P0YMj5EaTb5+JESM|&aD
z6X7}QqK^xh->wo$O+2!((79j#5a{m4=FSd`PS4+Sy(Y_SU8!Lu?$wYSE{jfTZ79aa
z(JAB^h*H-XpHJ#RJHgVPq=tYF;_lKg`oKAZ`LuRBd$tUAOi!STH0w2kEM}fZtf=1c
zN_YGRW6w~+ie$|y?bPaC`a3%icdLmhFH{+aD#AB7#iqxs3iSuw-Wba(nl7Rt;o#RR
z^<|GqG7@(8%}O1(<_I^q&2nkeT+3!hq<@e2>-AxDxjmOG-MKAm8(|N~8h16K(3k(R
z59H1NvGo-?CN!L6W>?BotXk%;Kel>*zjf^jCw>Bq#tELG1fFE<_?sIm-w!F9<iE}M
zi~zL?pk^Q3l{e^#Hhi0*Bd;@9fn0Rb&c^mo;nHBTU&t45AuRD)F_jo=H~bI;66$(3
zT!~yIxR at bQbq{n}sAijJpkMIFjeI1Wn0-EITJ}3?Dh(Mx3OkL_Jxmr^qIufcqnYbJ
z6EmukJyT4FmvKH?VjA4CDEfLZmM#sGa&A$&KZ?e)rm_-~PxGq+gH8}drQ`{mwpPgT
z-Sv8SB&2wX>MWzqGR|9D8%$2?bOv)!o6cUVT at n3PICV~$&L};WT)rkcDUI?T7h?F{
zM2YadPCuoN#5le`mG39=J!)KSCi<^X;Zw??<b;x!kRfVoxN?gd7fmGbI?(Cj#>5Yc
zgX;6~p#*AeY^gcUE|;oSa6W)2(cf&z3iuQRk7q;nFjEg#LB=9I9tmpK71dqo`P>k%
zY|pQ<A9wYqKS5_KC|bLVUy+Fe4JHSbn|=H4+mK%n1EKk&{PLhPW_h>rt*EqjZtqv%
zes8N!smt9Pw(uG0unVG22qmxB{XSkP_s<$;%@yjad+mqYx-uEh?&sDq=ZU;O<Tr~?
zpT3DzlAEG2v6QnNUSMVTBvz0LqIi!-4=FmhLZ}B3rPb{X at vi7Oc&9>@PqFDfa=0*B
zny0evuAv8|^@+|rx1v9ObtYv8lRyN760h)#V!F0|u#IG|b)1o!J>M&s(yYNjGY0dF
zfcu_0O#JXP_FEpKYho#AnnEV8-wKnk=>|h0pd(cIvfFIrfcTQFv5`GEKrYRyAJ%4k
z8x!w`mH72I^B{n0pg()Bm8NzhG6V;e@~xCP3+=R9Cy$qTQdiRvU0`M=#X;A;8SO}a
z#JFqvDR#TScXxC|4stKk_;$k)fuILd(i;~W2znj^=i6iR<W1uFAU*~2cOU~&8cwpv
zN*-eJU9Dw3MowpzU!#O_ov611X%nt|tx-FH-xDhQ6ZLM at jZV~4Ja at 8x^*bQr;UcaR
z<ZF2=a+J|;I+gRQ@~v>;j@$w$xf>K+1g91yg4 at a7$N4U)iDdLx7TLeC5{_GAzFcg4
zgiVZ!e1ze`CG5Kv`&|tCt)ohJ7bv$eaa<^Ic5x_ifmp7z8*vl_A4Np#4}K$tWxTW<
z+>VcGposvd)9ks02 at 97c`;$*3l=@y#U7~1Tn}#~gV!-1=!+(Fv%H;zM|BYFpsF+1>
z_RIVx%W1sv4u2b_z at LK5RS?&x58<*8H}~X^(~LUwxH+PkwXMxa%9L(Y=;UK9pg)gG
z?6xHN@?vegk?kNLTVcRiu#cwHJ82D~CHcOTVqz!eseS%X2}x6K_ZjGAlm2UFImwaF
zQn6Yn(`Gd=-Okk~gFQ`*-xb`uPd&?K=*5fPF8PCw=Z)?<Nx>y)(T5<I#H>1xV&Ir9
zNWaksLw{qnJ#)IJl-??yqPP6k=qudU=w6VNxktdK%;xiWK&(nwsqK~9pI6*+>=yr@
zNswY{kBg7@`kffp#KZHneR`eZ9?PT+2mvhop&Z`LFK at Bc*~Jd?KnW9s-8I97-9e9J
zpX at BKNi>o4WzOKHs<v^>&fv)bXK*uT5zLt33~p<qB3uyZW8rb&9j8^q${Zqn6#BT+
z>qV?E7OO~=d*!dh#-HsBePUmg>*k~}Jg~8ArBsa70Fjl3(NQekU7lEC&-tnxEzHaE
zVwTWuZqq8VXAP0>xwY at -WJNYB*?n0MmU_Vk3f1abnc+oGARZ;u;kV2m)yPkXz^%x0
z2mC}c!aBIj^JAO&z|gzd`jR7gtHs_gl4n at 1?M3tIrSV_)qIm{+l^G8aJ@{VLjpo69
zlSlYJlbM52nf0uSH~Zt2V*pV+4DbLy&R~y at V1#zv^ShE?_sOUFU;wKY_ssy`#at^o
zerz6}e+B~_{$4%<oY|cL&NB?4DBaW^ryZAL0H5Ry{lf>~12x_m%vLZlz$4`?G|a^<
zHWvb<t}pK9A!M%8HtZq;Vi%jux6xDys2_%~sAz^6V1OAg!$g>2o+ at +(-zjv#54AOU
z{IKb>`Juz|!?a)S96vlX<Wu=UbkUt3L`gft4;RUP1u=K40e+}__jB_ at w<@CIhZ~Ue
zK0lP^nad47yu=Lf{}+CE`0+mYp&!eWPnr;RLl at myemG#`PVz%E at PCINzH{_{#1G#$
z;`y`Zhd&PfWPU*CPjr9&r;mHnwV5e)mNWJ>HoD%N;cWOXaK@!ua-6Zl80-(&7ECP3
z7|wWf6S~pizB2E{kJR<jkJOQ1^8fy1 at hgnpy|krIV~(?K+j-_FT)&gdF?sm^9p-qs
z`afch21Ajb%^aycKZ7~0xbuI at 9Q$GQ>1*0}@9qBrbDX(3#~iQXXYto?hB at ZFV_PtR
zo!O0hiOnqBx}W03>U=EwNXRC%)$9+5b&PZOc3J79M&5ER%i9U-xK at TRnR~Rl^%7bA
z1-9ZFR^^-B8#3FvMxz28r46?6=c0#%R66yguN<N72Ldb%qo-82*R_0H78yFWZN4d2
z?`8CF*|u9`AL5m(C|N?d{i1YH%eFn78{5CO!mPHKu!op6KY3MROH2Hv8vZe7;pT_R
z3>ZYVvSl}Oix%($07eRFadxI>;X5bY^C1i0VR at slOuFY3xFjc0Jb#<!A3r?yeS6sC
zob at Y=P`Lzj4D7brk`5#rHQi^qQo<eU8xEFV!oFV3b9vUV)y|a%Vr5sm=L+A+D77^d
z1Pj at W$>&6yvhBGeLV|YA7{Fkq_^1o_lI<%PTU6={#($W+4Exum*qL6G{c8jEua4lN
z4cNcxH(?V31wyOfXMBw!MGcKa4qtdy1^Z_3bZTMZOnp*&sGI7Oe{M6q8Wji*9aW=s
z at 5Jn(?SDk-s)jNhYpT=50y^6?L|8Oyy0#0|HTpY4{gr!UveHk)AAuUQr%GLH5gDm#
zdP(1AC?0mX%448uFIgUtm{wFV=SMMkgi_83gon<k2|nO&^9n8MDhfMyb*ewg!A~V7
zwT3iH{rM`oyX-ZZN-R=Ham+28K{q);X<PLc_o+9`3z?R0=7YK|%UU8u>^0q1pYZk`
z&~m_2jX81t_VRfY6Ua60yg}sIv4=kGqHbYzR~<^KvWwf_jNg2FdQ$S1@)o_R{dWZ1
zTRY?B#byhn^2?K#mjT3JSh>T!{4D_D0Fqa<SIvAx2>sqUU)vg;GkUrTVbTGoT{`wt
zXDIOP at jR9tdMoF^iR?G>D^c?RZDc9mX+1)~&RHsYtxv4=na6C at 1o41T`)~4aV6sTh
z$l5Kc+tU~0dz`Bwoy>>Yc<zsGdL|a8?EaOANNi9!yV|qEq`hI4&juG^Ze*}nh1EXe
z#Ffxu(%hCS3QGziUxCtD(-&b$=m;kUuqmprxMNHS8~L@#Z?QHOmj-LMO<R>#j;UT<
zB8_Fe#<6Etqe0nBKEh^V#vd<03y`~a;wRAhcCvf6+<aQ;x=X_rWsmUNtDeZA?)W!z
z(s_X|RkN$zhlTa8VZ6&cEW-X4W1p{|`)O~Gv%%!a-H){_1|6xQ!7Vif(dog&M|If!
zQb%95Z~uZi4D-q9H5~<VGU0rYCv{9stcGJxmR%A|7KF|%`boHO({WvE&3-F3cbF`9
zYjCdw2=Hc0E$jW!>|!{rxG~9DS_lyL0>)FJ>^XtfT`D at QKM~vJi`4A6Qq}O$WlsDQ
zO4PM%FVu#S(G}5!Ef33^SrEOiBc=-sMEP>oX+26cCNB at DR$Qz;xuy4dW{36*^(Z~S
zYv1-ITX-391|HvZul+^QGBx)oAH{aqXZbt&E`J}7`z)`M#rmlK;9auiPX#ZhRyc8+
zKWDU^vI3=BSN=ighdZsm5OXX%Qgos7(RJd$RfdR9oME=Z+rf9 at 4iC)+|32Z^0BZYy
zV`L7FDA--&>PV+!8*sE7WZGc6ee%Q^nO|h>={@mnP6qCczZaN=JUGm_)4%6ne`RN6
z9*WH at D~OyIO1u$F&BTKGR at Z42>Xr_pVs^pZc6k$9zjzT8(fw!u9aH{X(dm|$CX{|8
zZIFDK#ZxN}?Q_UW+0oLI_|JXyRk3vbaBF^kC4V}$@k72n8j?TdG?GvkY3qDVpe<5<
zK;A^G(C_5fnsEQ78tw7G<tsknq`N^YTP`gru&GGH$qV6_?^Te-B%G`cA+HY!Cclj-
zkbFEk?lDv1^8<dAVC at pNP@%`X$4qFol at R!DW+1}l#ajvrqZeswequErhA~FhE{+b@
zeyqKXJ#MQz at 85DOL=Ook&nJ8Pzn!?*_LMlQRN2wlw6!rL%d-36M-olv0~cM$6XVLH
z4N27aOrm29=PGYX8AsZWV>)!d2eSB8ghGkC7p)mDG-hh|10T1+#6QB7X}Jb*nB8j7
z9jfh!ekIM$Tn3B;cAQ-n>%f(OTzBH%=BY{Hhcn_Bs>T;lLgq@(6#*^i$$|C>*)b1{
zJeF?YlkV~+*NNz{ri-?}bcH_WdXsL)d2Aqd$9Ul8z9e9N(VCn{UM<>hXOcJeL88cl
zcqZf(PZgbE)Q$e%V{;)H=Osl))!^RQ6-msTvU}t(%Hg*-X!&TxHZip`*^Vo5N7HyX
zaZqB4$z(tZoj5NEGx at l1_6Bgmb5m@8ip8cB7m@?T at QbxiBD<Aj?eA7KOzn^OM&%)&
zgD5cAe_~C`<)sCY6I&iLqLa<YF+X7f4YjBpe1^sDV=!~eqgK4WtTH%2Y${WWr8KJ*
zkAK|$T<Rkgqs$qg(xfCxUq&T4{0lzzQxu(Ys=<Zv7oQAB#OO%-OAR_DnB13*?@v${
z*;1#-*p2gey!==bN;^iE;Dx7=<hWufwC-1_JeVvh5425z>iZk|2`0$GV0 at O)qlb_2
z%xj+GPT|WI4+ig(Yl6ckl!?uHiq6PE-Oyt3pS())<Ick9>vy(9pM)J3a_}f)U%pwQ
zHS%;YRewHO4U%V#ItY2~Vo>5C?0h6}4jI0Ez&p>)z?d2))Vzs;DnMa64H!Ts$0Fy)
zBA{N==nNl=M4ZPJYn{npU^IDdNB)6XyZUj?HiU4tv8ft%*g|%Talr(>&gV^({fKfH
z=Yzx|7WL^8*Li9O3M5e;R>np~AYZGArXbP%7RgzI5|mX_ha7m<P>H;N;)-IwmdBr@
zmg;5oHRqR-9;LhIYAz|RwiuMbyyGB|%xYi%WNM(SMO7Ztow(KTee!3*v%X$j6un*j
zjc_LE$c}yb7tDFBg;(k(*#oFD-KiPQ<Bu(ii=Ebscxp at 8t>NhxDbbBTEIo9`wZ|O7
z^=Tzr0;MI9uj5~X1FV8UP)d$VsLaxX`%6k_9<?1|IQ}GlvARfstCW!S#pY4o*IH*N
z6OCaNk%~thCsR6~I_l+1AihHS+vi;`zrGrAn;JQFJnQ8{bp09Y<#S)|d%c`FQ2qP=
zc)k4Mzj{u+te3z2&z=vNkGJzsIFbd<te1x~&E#<Ct(WVxn-snF#X;z`7MI#rYCQR|
z^+8GMZZma_l;Sgq>y+5+|J|C{@IjX}u=6sj@@B^$9zplpf!jj!xwSD2Td4^i);*Qg
zGnJ5u$5m($lPKfP$}MjaZAO8D4uUxjKms%FrUvqYIq`p at 3e^!h7vT&~7Q39QR8&x~
zWmIWNlv63jvjnSMJdFcwpNrmZzEPmc<eshUMk^tBHlU`^i*l`{cV9vR0<&+uM3s7d
zNpKSKbu{cg0_W5b9T!294A2M7VrsS~{V(y<TumfS>rai*;BEV{tMmW-Z&;#sWuC|l
zi13xe)KM#2W=ZvVi at GfI1m9HzNhU!qjDrb1CJbdUC)H#I`}`*VbrA15de36%Jue8D
zs*n=cnuSz|jk=_TNbVJTO{=zXZS1-;^&~l}0sX}t`ij+or~6IPl-?kp%78V*4p1|4
zUSA$T6SP_hWlGZ{`O4Evrz2k1xncTx>}XHlO~1lxD`yNuq2Z*!B%T at UsCT_o^Nm#Q
zEUZ>NLvZiwsFzF80n$1z!kdRJR)(8_U(MPi#3fZmxs>EL)rM1h%pYt;e;q{jgpOyW
z50d|^W~FLo1^Cl<t2+p9?ThsVcyY%L;u0vQ1Kdgz%d%}&M2=%dFg12mKW^hbOgD0K
zLWz4BRhl>uqbm7z-n(o^SM{<$%@j~mOn1^tOrN0tzW7C~!bDGgyh_<~lqdkW8CGzP
zNIk!#qd^lt*{p_{NHrBwek<Nr)VG~a>4xI;ZM>SB#XF3$7F-$x87p4ilIRjjItwoX
zSL at tgqCjc!a4ydbVT;1kJJ5M^eCQ!PpwCQxcr at J0%b?r)X+c4UWh^;Lx=uB#ko{B<
zCj*qS5<Qh^L9)S(QeTKOp-T(X+qlf}gW#<o2!r4rSX>POxNJ~7b6TIFY`TOBv+~9z
z!zd%@SBx$^wLD_PLxIbd#jd(y?$bY28y=ndMP1y2SymQ2J%z-ZY8ClF+>wPkPfF;W
zsjvE-x-Iyg;g*>i)vx&cV4ecHGE!J@(rh2?n(IG5Omg6 at N%o%Q*H8H{jd#qa^E%kL
z+06D%YX>zOloM>1+GEw8xhcPnDgVc6x4=*na<UE*Xugy5vA?CRJ6oLA-Boc7{~1l-
za>{v{K<iWBF|DuNfq%C%Nlp+mlbo`WiNnqp{|)_}>^IQYXX@`-FZa^lPdD~m!p#Vg
z^sT$|G&;n4^|bEF;`a&G-A$s-?$+IlWZpnsZGBD{=xyB%)ozN^TI;T*AGq?rYTvC-
zp5H9q&e?bo*E?<8HJ06F>XvW&%UO2!(qqrEd&eremv7n4^3NyQcg-mgp7~a)r~Y!*
zSn)~#m7u&#c3BfRpwO<{%UdX>{?v5D%XNlGf&0+IJ3y at s)wL&ffbS?;ErRTJQ>G!#
ziMTO+h$QY|LfsA(YJl#o5&3L&=kqIjpoTe5Z7}xUIZNm9G|z;}dIvkH4nWH5uV*jS
zTEItIdM~)qmk&E-FMZdED>U%)+e^R9SH0kmhTI{~iU51`D_V`ly4PFSOK*Cb*TyjV
zr*BzA{FdKdA4G<^!$Fv at 06uLmmRaL!;c0wflcY at I<IID?>;BK at tB2j~H>}!83=T?x
zt4h>_-J+PW&CeVgH{lk+WL=49F+L8(irEEw&1FRQl4qPC7h>tGe}nx2ucey%W0XLB
zYhs|5G$fwZ3`c$`vZZfrC at 4UC&}<hSQl}$ST3>-ZTV_<DQT<(v%G^MtJ0WBXeTRe6
z4YdHFsYU-au at r`V#$mb$<9pzU>qQ?H$#*gXQ};7L;@L#Z%9L!0mgHB at Ic?8l&Qz4q
zoxIbZLwKAhOd*hQldWsftE at nur7P}tpV3eZp^IJ_qTltMM?adY_%PpJvQqvM+i)J_
z$slkB*^={Nkp<0Q2{S=BIhonqhRq46c2lGJXk+=@w#UU2WCnAy&J*S+oF~^l>AkQ~
zaAA<Ml8?76X^HfYy}r#Pk0pipYMwc9&LIJ#%oduktCZ;jee6aLEo5sE7f%kR{2d%-
zBTkt+>^-T+0lu7X+!$eg at 1{Q3{bj*P<|1;$v1caRV}Cqy-iJlo)Z>*hy*a_;BPI|L
z=vO at f^x&zTYBb6QB=X6ym&5J_L9LP0=>sLE)o(+4bNTQ&WVG^5vWQ<kx>P_pgJmMo
z!6<lUnhdR|swR1BNEx}q{pnL`dT;GuS?B&^9eiTlF44P%p~*qikQpRQ7jdI+8<==(
z@!<K5o;L)V^Bav;mGT>zIAb|i)Ho{W#&G2Z_h8<pAK)R$o6xl<g`5js0rbZeW4Ja)
zB=X{EX27o(_QE?=Vi}K?`ZVnO)N+JxXx`A2XnP+)-Ho=bYt7L1(`J&$()KJ7P$BC^
zpR~QSjD7n7-8{NZdV9~30ch852UMdE2>tx2Mv+NRQf%iL`klcYqzL*Uq at _IM3oz`?
zyw6S^`qqxl at OPzj&NqcbJeEznA|-Oki4QfN9gvcSau(S^0$McQ#EVdp2;&JXl%603
zR)T~RT35ErC at F{z3 at 4hg<yA4bm>?HN-!_~QOif!EOpS68^}>>b4?Zve+cTIrskkFh
zf*65snu{OcbwTF4S!keP1Bi~WnyQsxWhW`{+-eV~G$9k&`3RA?kRntCz#Q$ZIjM<z
z9*_gl{kW-1xohD|muF0PLyVi<X^pGiUMFYazX9n&iT*fjj@@B-L!Um&PKES4zZ|Z?
z{6f-&v+!9)$T+QgOU<m}zg#yxe5;$2HG&|%5z!>X??NAQ_;y;a7X7C#0-trRr-w6_
z1QW*vlY at f^mbJAn$*%9*GzNz{%UJjXo%*IgiAjxb*5j5uELkkru)`eT<h05k1in|(
z-8%!(;e%QrG~Hy_4`ckghF{m|Goxosb}!>wtt`z+3r7BlyQ44WM4ef3S+Qh&$IB&f
zksoF5#}o1ppj|jRAttSpowIi0zQ}mN-*RMZ57z)k7j4K<vWT?xHz3KAe|H9)*7?+G
z`qNH-vg`dU#GFEn0-tq6+kWPAkL|C9_5mu;pL=*;aHQW69G2}c+1{F1mj10>Vu?<&
z@(=riYz<<|bcL2nDa+FK$Sxk2rCB!{JXN?aoUSWx?nv4sui{$G5vrnuC<43a2_=?E
zj)qb*i}7ugxlbMr<sdgVsAVL+g+4uns;l2gpU02r>vt;U^YbdFRm<SCvPSA<8!t^4
z1cAplMK(NT917K<mr<zdmug6RzLviA8@)c*yw*9+yVDa@`h1n`QMdXcN4igT<n*nq
z{~6)D&MgFt-c6u`ta0yvpnN55fG#rF*Q_jazl#kw^O*lO?p^4$grIx5v^c-);VOGW
zZuOkg-#7xvq!BZTtMR=kLlf#7Mxl{EI^LWeq2QamojN)Iz*z!PWEYhw!R(UZ>@%e2
zfpGWE9RP4>dIby#zt*?OZY56g^Z$3$R}`{}KU0<^c{!a0Lpk>N_QMp9get=#AbL>9
z<orMSs@;S+<@|p)dbV=@*R{n>IifqX9o5zxPDM at 1|6zX0|LGiMif66P$YZ7ZC&h|;
z`3eoRsPjjt-g9lff09Xi_G;OEbS{7r{@>)unKIi3WJ>Pkqxbt(Q9)y3Yh&sTX{VXJ
ztz6;Y_TonEaa>4OLP;i+HSV}YG*!EdI3N63oKt2b9D9~He}y-A7O_NqsJ(6E39oCJ
zSwpv<jGXQ)cpM+Z_&sX%L8)CKrN%<}1Kr0wDlBn7Fjw_?DdU*}#7p#yP!&Iin%V1b
z<emZ`n)t|^E1cTn;9cSIg}C4XRTxqtHzr<GmsdIqS7zFzmp~U|N`lMB6jLW)4bViF
ziOW%04A+ at 7_Cl?DelIvMM6VFp07x*qAj5nxosvEg6H>Is{TqyuqfakYy?k=s=CR3U
zc>#SsKB9=3E{`-PLYfhrkC3M6jv-C&SUy8N%$a2ZTw0^FyOMC_>rUHuMTv3cBUkgk
zUChjs8c}Mc4`)ZvH;9vycH&}b-#@<GeS)zfk*3}gagQOLjS^eC##I2>UB}`)c>A#)
zka)p%18GiiNmap=B9y!@*_$K_ArRIGLU+VpG!tN=l|DgM=eI)1qH;?r=FmQkTe0v7
z32`jB$z9MXx&prwbNIbN_i~s_&KadJln0pC>AqTG!<Ht04>RdQA%4BbKvq<)Bf9KD
zv|FWzxC at 0OAovNtL6(~(?#t(k74wTlg6>Pb0m^`$$uA)}GYfkG`>Z>O`g~%@9w_@$
z4a+T%Nl*Ee-Hp}Xk0gLb%w{&3d)UmjDO|ah&1~cnS>ePFK@%c7W{87Mv~QL~$?xOk
zl0K5szFD?#YTNAXphWRqt-x4N{Z6Qm16qy@!DlF5p~OIwPQP#y6z2YdeVH6`fN!0W
zA;z*q#!MDinFAyr5=RD;RqSZRh^*bD%InOo)Y{HSG at KfR5*lPzTt9*iaNuu>t|APu
zF!o`w6T1TH*s`dIwD8nQzUvaKAH at xA#akBj<8)L(%ckqhpXTQ8BZV;7!G^E5*nLw(
z2ic%9ElVG7#!~FBp0A<LbO(V{#t|%$(ZST{l2B?E9b;22)i!U+2aIUNGrc|tezT*N
zUAl>Bz}p#J6{>utv2d%m8!t*7W;fm?rgd$oJ0DRv6DPznF2O*LU3v9F`bCAY9mUhX
z71+{2Z@)yh*;zZ->n#uIZXFN1V{f at lpP6YP|27-`mNX`c>k{vtlpJ5&d2)jP!l_eA
zL$TL78!K1V7j`sOE{VO>Nh{MZVZa95G_cP!v8ayB04FAkc0Vyuv|C;6rfKU9mt<}L
z57cWaeLTO?6R=S%4#i%j-WBzQiyA8zbFJaJ@&fb>u1&Q|RPD*h5&NB-81d!0+7;8*
zr%&c}PQP at n9K(H%Y9Y(q9$qtu>0>Bh<Z>vnG5u|B>XXHZEe(m{`ee9jdqaZ%(rNGU
z<Mwf}9v5#<zm8Uuc)Z at ZKU}<Hk{<0yuhgS0dQ at c|RqZgFiL-kZyYC9N5Zuc*@aWuj
zcy#Q;K07XVFMkNiBFDlWFoJsx%<KN#j5bbf1i{Ql*%ADX$GYwjMhLV2i(gOQ)hh(}
zM{FlGM_CNNyo5LbJAWCb!p~&+Y7|F124ka(%g#Vh!ACn_|1;8qq-kb12-x`{i^<tN
z`TvLT|M6yrHvzTqzOpfg5-Zhs;$yZXhby<)gBCGHMfMLp3Zv+6Ho0T5Ol$}{V>Xbz
zKkSTRn>fLv&`x9J`@zJJayR}6lF!K0<Pdtk1UU&UpHSFVw6`oo*Ips{QTPuyWA-q!
zUA!xbCHky_a3T3_e*jya)sr18eXzbWv8`L&X&@b|jr};XB(sk<Pjfu_7K*s1 at ZRj-
zhwUnHl61KRz+^(j;49X0;47FIRPO%VNZ3K;9ypI;w=SVpKFU1K2>)dvBm9F0H9~x+
z at j1;NUQ*g^QpF%Lu%)IjasUC1fwsv#!UUrz`(o}T&Vm3s|3_wQu at eo%={3+ at zD|=^
z|IAYNX at JfRALIIkv^OE!-dTOMXB1sCL-g6h@{R%oGGm>aKF`UCF7NyqolmZQrbeD{
zloG#AE^I{6oa}DDU!#`QJA(G`ZTVtNDqWLB7qlQK4QBp~=T?}x+Pz17)xFh>dv*`-
z6)&E5K3d-+^f}@GpKs>FKjQPj|IV8}{F|YmUhw~lPUR1`2fvM{wN%z?=YpZKioU6=
ziE+s77La~Iz at Ik`i;v_KbZ0>m0}-9<MizMEFhDDl{9!<Oem^%1+KoTZ{f5_#ggdOS
zZoFi;qeb(l!T%Qmf4^?<-+SNZfqxPw8j6e(?$ihR7>0d&z&~D!uY6;t29p;U^bI{c
zxO}Y91D(MGBd5%0mN1`ZXu)K5UKA|E+^n3<Q%an{{X<Ctl8y8u at G#a{IIF at KyV=yR
z%so_ujJ3Hi9Za0)2j3AEmAT*On~7!7H=G3nj1{1*Ftgg57u?PFNCJ8I6 at 1e8KQ@O`
zeE^te7YBzPkPqXmJk6(e^|XkT!;K6&iDP6P?I1t601hE&$!5|3p&)gW2w-K)e?7t!
zV#YI=YCs9Y+^ehrTE>2p&G2pqrWIq!!ot9jgVBGWzL>5khlkOd8>+Wte&$}oD2XD_
zyWH>70a89h_C)>HnZNEupfB@|dl at 5Q%PesZU?4)AH5EbxWB#(%qL3lgHSQu_dj3;?
ze3+&B>ihSD4=@ednTozoP~SHLifp~@`0eaSoyABs&{V|BhhDptIQ_~UoRkRPBnR!A
z7{nB`xF}frUX=7HOo|QuXfY2|w`cz9-gR$x_VwlmyK_eCu#YgwH*(%fq$;+pU*wF~
zw*FC8*9Yp<04BvX?&04hkJZhvjc(2X!pt5%-jf4Zv7S-g?w!sFQoZrmrS?GC8wOUl
z`%4wg|Ka2}Oa=jWcf%OVO>puu_b{}SaEkC-<{DOC8(qblG}2}A!EJ1B9EztRxV#|%
z1Q_)js+{<}Tm at xFH`oi;ZgQ@?lSgtD{#Csd21A8jVz6jH9|?nm9P2#8+8vRv8x&^k
z0nYt{_MK!gNv at 0+qZ^I((oiFS*u5|_=pIUA^0GH=u2W8f8Tz@=c$E?jO=6<S&fvxw
zV1F_?1jayT at J($%)YbqG4o&})uQguyB{A)Gx%)$99yMjM=A&I{sLH*L0z$#hFJg-u
zzu)GbUxR=54ZhPLoC#6--~ZFU$UFZ}k3Q%4&J#+hdJawO%=ljV)lV2-RpbsefcoRx
zh~co?_`b}8PaEH*0;c=;%9^S1UG=vwWPDG66*Z<;m$%SRcBHLmEH}g{z11jd$Ti4w
z?R~Qub;f^aTf+>K9n$DwjJLu)-C=*tjaQHHzU^!~-hbdAB8~Ss+-tn&QL+0z-)T^$
zW+l{;%qNfcXUkiA@?-FUcEdPm$k=1A{F&*(8ut<!>qG8xBw(KCJs*ww&BzH^J|~XN
zoF=#?sJLT}TS4xgbSrW<r9k4-u%BFBMksO_ at 5=P<NWF_K3m}&Rq1yG)M-lD$GC2+~
zGGlB>D^}3me3y^7<(a)Kp_}-|e;LGVbnp4I#P#OLzN~%A++{qqay#HY$aUrocQNGR
zF^D?}qU<HNue;l#cvr~{-#%#g$BRcc5>nC9NXZG3l1EBPo+T+sRwE-Nzo9W&fr-|P
znr?<uYsSgeXO5E_h}y$GBVQhBqk!KY`4_&tpW&y>KdnCW4U=fXeVzU at EqQWs7viR|
zfBJHAt9zq)FtbW>s!EH8%|>u?8jTg493h9`oG6qc1A|WdPh91u9UWeE<*#`pfir`q
zJi#eXV>@x06ZMe<=Qs(@pakc>MsViOJ1=V9*_7iQxMQ4^j^Yi&NzP!yH#s))*~YRF
zUv%f6=Z&~D^Ov#Ty6YKcZxnO#65m~ydkW{eNG$w#s%4+ApOMEt_x;6=?O{10=#zc?
z_*j337%PI$9`6V8$NNND`h4RZD(!2$H`CGFcz=mV=x*bEyLpf|-u)3<TC)5H<K0G6
z|5wL*`=35(yp_L9<9!(+Y!a78ekX6dm(921JreHo$)zuGX~sKiZ#X{B-e7ztx%^p+
zNt2~xn^sxF!)TeX67Pn*3|g<63|gIHsoKTPmA}^oR)bcBB{}zd>9a8M6--LtvUn at P
zRvoO$SPFaP&vNcp0<C^1a{VSHf;(hHTu%nAetl=qIsoj1F(CJmL2C)GJ~@L{PTo8U
zhv{!NI5hjDOdhQ$UmK6NYPWf`=!Z?D)o)T=qR4StiNxwkbBdJFXXG24_P5|es*1nk
z*@i`4I+V~Cf`#v7ew#H- at nSK?F&x3e_R3t%a=Yu#m at 5|CX+*BCkM at waGrBG7C;RD<
zIV|xfW*7*oVDY1-u$7j^Iysi`CSJrk2Rrd{upaAlocIzh+#N9+Rs0M?;b(;1--%Da
zgdFSK(`h|au at b3!R%-lG4=Z<(I~35usVRt<jqdTsDPnX)IX;6ojLFu^=rwb4T}M%Q
zzv{<>UJ5S~cj0NlKvzD_%g at D(H>qyU8wG{#cjL+-f$eD!S+}+<E{sf_)X+)*oX#D0
z?&tBOT^pK;Py4>{V#($^Ip6JH1Z1(LGrCV5;Ek3Au7z#^LB{6-pr9(OYdf>NFq<cD
z63Jo*6-2Mr(q0u8dGQ28RdMR*`F~Ts0{0jU{E&#LH##mjJUY>d^QM502C<o~C^2R`
zr!S5(Cun=+dgncU_YU#kMt9edieXUH1O6W`KXTX{XKwRPKTbKYE8j`LeR%|2oV-DO
zK~b2 at b21#4>aK8=d*JK5qys_xI+GLt0XzXkA+iS-;(f&iBM)*9c|ocL<rt{fvsj4-
zJ(O^I75P#BKm^Xs5PvuL^WmztaJeBs@<zSGfaO7Fz%m1`FgNKnfV)m`Uh<kcp+IKE
zkG*0bCGOtz(C-z+HoYMUh9FqyesB#=2cX&ms8Ie{`n=`d_O at QHb3cRv(;Jx1&3fD7
zIUml%?+pIj+lFW1JkG$`n>x*r^isZFn3JE##A$7#dZm7Aoy|phjcKd}f|S3gzMLJ;
z5rbolD}&s}nUuYN<3L~U|Dg9eY}4p3sfWc);gkUeD<&da?BqUwyM;P)ES7eYD;j<t
zroobjY6KzCN^w4d5tOE~r9Vuqp)_8pg@^ITy)FZ&FEZ^JyjW7eW#ufaaxd1aeHdKm
zZ9I@`-S*sHc&5azhOYbQ*SpUF_W^vQ`ucdkO7HLJ{@ys~3|8*Z+h5UZDSbbkZRJcW
zaN5r8 at 3d|e9t;B97m3c+aBrw($P9)@9OhhmDE(7ikVp*?l6xEm;{_tkMkv5_ObBBz
z0!M2^a|LOwoV at C;@~Zna)#V|m83Kaw9-yEv9-IZ^kzNamodt{Ao~l{pT)hCGCP^5n
zQMDJ%qO8hYgHoBfu7{|ID-_iIJ4Dz0MHCm{(FZ@)ui!C6NrAf=<F!BYUfQGNB1&G4
znffugo88BACDV%2>QVSc3jZWq_!h5l=J(x;IjwT<Q}m-p{dzB=sF3_%FHi~oQDFw^
ztMFFOipp$7mt`xeFcqzHn|oChc{u$Z1ktkwZF>Qf>zLXQrfH16-2K?z{i~Y^*y@`$
zAJTK(ljr44dVY}YRm!5LJY3 at fZC(m*qI>QJXZoAO?6+qw5LQ>19BllIA0((>DdYN`
zr(Z7*q<&X(@4kG6-To1Q`8=XQszQx>>W~7`5Yo8B-JbrsFY&fnlB{t at K`in1=muiv
z_JnJvs{*k95pmL5f at JeW251KJPc~m<Q1=41%I*4%$$+E|k-08xby-9pH{;8j_+Rnp
z5Nj0~^F|Z3M7BulaVI`bRsl-fUf#k*UbaZ}mgo1H?kX=N(V;fBOZo8HO<|Kl@@g9w
zOSVXpDYB`G1bWzudS;7!*d+iKXg at 1kq>o`K*4eC)0XJ;&S>z=?Lb8@*k42C{maV-C
z;xBctW6O{zD<Ef<Jw?yV7AA4zCj>q|eVgd{k at 6P$C2J&WaxXBma)*1jc{vpvaun!f
zB|oW{YmR4U>0Y}$5;1$x6!@BIE_7omZ1bL|Fcv`SQW!N}C^DX$XX;W&t)KCviS?k{
zXdd?nt8!ZJ6FB+NikJZ7JmaYiv~^mi!*!V(=4Pd(Ilj4 at DrRWU{pGL3O_vwDe><wH
z>w!XM0*S9Z)897}4xSrBr9!I7%v<8_N9=8Sngp|tOOs5qs(Uic at obCl6|5Dhb=S|!
zi80UYuq1PzFWA^B?2XUE-Lq=WmvCuEEURSxszTXdWe&{aZlVwKRNACiJYnGffan;b
z((1lUR~1INy_q6Lxjh6PGs<lT7w*?CwUf>&s?Sqyf9xx_YmJK6O}RbkRz#$y+<yO?
zZ0(&{0PDJ9T|Zl`$w}MMP|)u|TE+T&1;#F`-a7XW8<(fu&Uq8%b|x@%Q*M7ai2$<J
zYxvYmW0UH3#d2C#Jia`q-=f}U!&-^85}^n~c`B~_#a6#H07|``3XDKi*mhQ-$&c;n
zwPvzXg}z?<mXxp5(SPT(X+-hanC7j%XKfk7iMVy*E2xWc^flWM*dCWY3wl($z4h8J
z-vR|9*{TUHW_o4L&GU)%Q9k`kQ{IyAcGO@`zZD3GvwQ{jxYfKxah-^QTk0ve#^N$r
zT20w{S<}$O5Q#?TIQ|K%=T2nMeC4Rj{e!e*;9CTzq_wXsPj3w7^ll?L-LM7DJx_2E
z at l)phSf5)B+(5__nx}%_@{-;Xx at 1(_n>^JPfy}&+?GU={kbepYblZ*Ym*YSwd;yPA
zkE7gfaF?!;_Oj94UqHTVc(;W??+f35_=UyyB1K>t5SOE08%i`ZnI+Y%cDwcB?%J(_
zbd7dv_UQdXcfR~_7DfwI)ns?^+dZ)R>IwwM`<{N8EBA|@<sMYIX48cLitZ=qyRZM;
zY9k*Vk*Du!9qKG-D3H3_A1WMC7&*nLx+X0SeJ!!7?oa7(`bj`RUNiL=9ZwW7OV3Lf
z;%tA6zAG#T-B*9h%b)U*WKmJH4~=vmSlUw|>pk$!1Uw)rls+2fwdhRaY8BED4AWC1
z6}!~HiUsLIY0InbgPUz{_n<lht?kD%uNsyaAfPNmI}1+hrjJSqG5V-!)U at Ymr0P_a
z8{Xinq<LH(R|YM&PNWQaaxaWZdi}k=O4^h&{)rxM>s{Vti`rE)O!s<ziwJq*9$&F6
z&DE2Mb}#9)f at gYs^xw0k-^To`SwMl7`M^1?C)lE)Y|+PL%kEL=U|VQC%WtbL|H7EI
zH at dHhExH$ukEC#Vv!{{f at Zhwru^MUDZ;Tk6pmtJ6ueNs~?y~e_=Br-%s4}szQ>Awn
zXPLZ|8^BXZS7`J&$jPXpiahsq(;jN6l%p2P>bJW(Y7c<Y^OfHFwfwpb)2v#0u$h{S
zsiSYTlsG+4AHA}>J~~uiGU~saC~nD1-yER+PtZp%go;ru)d{158r!PXN6A~xqw{k5
z=nX99`_M<d?P-GvrBm`|tBi5+NclW!l|HJ?9qn9`i at AgsH=2%faZCAH^R$VX-zIMs
zc2P=g^5$lA(;4HO!E;;8)0>4xoCjC1_Q<NIYjxG6|FX%kdt%&IPnW7x!2NTbICH1e
z)At at iUP6DLM?F3KXQJ6pP)`TzB}_iq{rz}Mx(MYS%H^h?>T7!(P2Lp$ym~%osc6*d
z4Dv5$^~hHd%-v0Tb|OCYMzw|>`C~$3^YqBS8bJ<0*!^u-C~HehAj)~=j=SLoKI$C}
z^c|vs^1 at KEs^_m4Gc#Nz0DL_4rFuR%LIrwsD{``XQD5DSy6%_3ldpi@;a~VU at Ukua
zuDe2Nf^CmL$mfUe)O+zS*jq!17qiCO!fZfQ1-Z8fxjVw-%+lfV1I+mmC+woIJ4}FE
z*<KK?#Pr5YWin=Q>O539#G1inC@^O5k9o?`HUzr4+ppKefF5vh8Ce+0-1Xc)5YPw`
zs$9yixhU3!+0^%Q>Ig#$#f_<GNoMBUP-5Rua-UFQLWzzs3Z+i2;+lhsE-q_KT)Zi?
ze2gR#hR*>scybwKSlYbDRv8{rP!G!Zt>UPO(ok~NrcmONiZFo`%y9$Evgc~ZB9uBk
zK*UECA+-T>=!ZhPK at hEBXl4`H>6_T3<g_*;Z3P7z#T4`E#EwTDvT?8Pan-uTiQ|Kk
zfoGq#!6x)IK9+k<PI2xZf6NYqWc3bxpFWzW-g-LpnD3F5PfPR$)=o%`s1Xt%EW+4?
z?b1*ou0YOjxlZ6-Toy{rE_3H`Bc!#GfXI*>vB~X$%sA<P>TobMt1#9DoMVxNfi264
z&n*(1?BCkN7tVqs18vnjM;UpU`$QLD9xE_w0rTQg<IE;xnr#{6M%!D1TZzqw(-;ev
zWX{go1BlAmEtm+hT0DV;Z8M3OMj^pw0QM=H$cD<M%u!~HShH||PnpgTx{UH=l&4&<
zin0}g8y5&It#;ynW$bvliOQ%{=~M~acp}QdjVIgKYRwcTwz`pi5nJ6#*jT^%wgHN*
zj%z+P;j{I-?U+=bsNZu(`uhgmalV4KQezA2Vx1u6HSX%Rw1X6dV>f6w^F<V-u3hWf
z_T&wf5rNUwkZ2!8<SmDuj7o$D>`1eq&ts|}Iap;kXWvW&5 at j8Sma83~--OV`oP;;C
z1tyeG)ISs-Vnh`=TG4H}6M*KiQV*z0tT-td?$>z|EfEAAp!lj#Y;7k=WDDO7Rle(o
zE6-)PxUSw(mv}GML9p`vgHKNEUsC(bv<>M9?{Z8ZPVO2`>`AONanQR`@Ay5bH^|v(
zuTtqVb%mRPmG9Qkg2Bm^&3vmnzv7c@#e?f>JEpypK83eL(FYUNST&RNN8-<_uZAZt
zsR<I2O+|&zlB*`Ru2V#JWdfy->*~kpRBTc4Ny$O|PD%_KQ2QY;p3ggfUA9kSVpA|N
znB!@ZSM0-JUon^}XS2y=9aVl<_)MsBg^m7puKW<oCfC)^C04~2lT~vNUYbEp?R(QU
zreEQeS at +<Va<05X3a9UzB43X6O)YwD0DIKaH}EofWTGokog9DccBp;3q4s}MLw&Lz
zw38T6pRC_)yNG9d`e4L)eR5Z*pgytZsARZsyU1XBx`F3)$$b)A5`)RzaSZiTQxD8N
zk$ST3FWR>5FR$%=1z2k2w(D_%{Waysi{<=Z_UITi?EJ7wYpSbm57fNqT#NG<BGv&B
z3)%1Vk+*-ys#n<BB{53%U$cABTuXt?WOQL;_sCZV7C~lHWzvBx-Mwg at xh=Q(YXqCW
z5DgWG2%W7tPu#**?22&ec5j!sm-zub?`B@=FBJROajx1bd1*HAD=g4Zy<9Wa<fxO+
z*deShG~173#W1R)sDffP#70Nq=_N at ECF$5~u&QeuYsPi%rfVe)x4JIBhI!aFCH~rK
zJ8e37wfC+$oV;9}+&&<$lO^t9SDQ|%ZnKNX>*F?o2~b9f%Il8lukF+HY at Z6fK9P>k
z?~~sl)0cW|QfeTTzoXvk6dGu at KmKWrZmHL=62Wf$K`$iLMI!yQMqa^9nAEf3;nM>g
z`$+SsxI)BTyimA{7SzAh7qQVb0e#VNjWD&&UC6JL-Ua&AEb7iTSC)eEbSUF6%0GI>
z+es!l=CqD9=yB8aFuW({&Az~05Pejip2cwa@*h&H(1yBo?z^J5gjMi~WYCBaR_YOf
z?c3Y#nGA at C5KY6DG|s1-ypp}ctM9hYs1Hhb+Z~jv&kkq0shj*m<*Sn09aW at oD~qLP
zj1236kLZ!^y>Np%afSKa>PEyJ27^B~S3SOnoa-(YY0-(*AR~)e)HPEcB(Vc8tG4au
zt8KUY7em#U<25$0uO`R_$~u0kp_Ps98|o*YysTCk;lJ~14x;rcG$)t!0>^1RO+%JC
z`i0y5<>ZN;k&=naq?h);?=oX;<9BoN$i&02u*}<?_rLMSUqJYP_F{jMKi;Gh>1G6W
zf7wRIJ(J~K2Ox9%^2axS4uAX;z|hTP`FZ^DW0AgJh(CUVk-A6ke}h at D-+@`(&X2h1
z{!@SaIagUyx%8`_?vJmfoRk*i7yb$gd)7djZsvKOG4R?Yy!8C>l>!(R5A at -W|CzEl
ze1<=M at Be{-Kh+<9+fNK!?t}YhNBuMW at qlam@#_|=6TUzGC<AGpKi>2Tn`P57*{_U0
z{s$LYfBeh at IP?7RgP+vvb?%RN_G$k34_hsqgL80p_s8d`Gi$MIKqt)|Eb{sM at wNA|
z%Crf<`t)0WS?@p7A3xfI`i!sS*(Y~J at Uwie{`fiEbo0lXv=~g`o{{o8 at bgLjc)jZ3
zj~{g{&pyo`f6hI?{VD$VI=%lyfBZpu>-*yept%1(=FSAZ&Z6r7Nt at EJ-b4ySa0wE$
z6_Hf7gi^dADSfWoK#(Fuwm`9#MXiuPu`DS!(L7$RRB=H>r~+CSq*7=Lr8I46(}GGs
zHaA*%5uS$tEsG@}H2?4K%=6r(Er{>`{V(_PNuF8GoS8Xu=FFLyGc)W>PS39jJdTi#
zmMTBf?V9WCy<sa|+*f{&%nKw`zk-pS+iV|3iHqR(j^IB9e9_Y8wGUXY`ir!^$QH+t
zfhTcaRZy2lb*Dj;Sl at J4K-ypq{H-2TFw3#^%WvKki|Tpo)@%jv0J8ky8)JYgw*~kG
z09APmXKV}53&2+dfFvsmCIS!-N#kQjT8_aNO0!P%9P5UXUwz9&)JRfF^*DB$S|ob*
zH9cW{aJytTJ?LZGz;tW~-_l5&JG9xMyOT{8>F>%qdM~JGfBgUXdgNWFyY<K)GgZv5
zWN&Yqys#d5N9lUx%}NQqCa{0>Ue_bnXWsjIWb+ at 9DBJFj|KDDZym#II)_UXzxhL^G
zu1B7YC~yPNd*3d<@hbJGZ65_WA-^8ZO9{1}EZEr~=V1>V+8m#5=_U}NopbCEB`|c8
zYi1SW9{`gC!0vgUm%X8`OR?K|HKbNRw&1zw)7xF}9G;`%ZM8C(=vgd$B at 3QK`m#!(
z_d=TKbAxjV`|0O0Ki%Fs=&@I-5Uhiqy+_G9Xe02fqi(yO{=jVr)}w{ZMtg|8y+zIY
zKPrH&iq3xe4OA(XEC1<!`b;FR$%BGE`ad~8KEbHXOgWk#uNWFxJU at QratQVR_566C
zOXBtQU at c!YPR(}a#}`C#@%;F&uNPIaD%jOk^8c^- at enMkdTkP`I{oaf%T&c^emoz~
zcIU^}5E0LhGfEN9kAG$up9^j at j2p4n6FSY0uQu0Kv$#ah|B3nW!{WDpH$Og-26>P3
z<2nBZUzO&^FBq+CzWwj!$A9M at ymy=*fA<Qt$#cPJ_I*8=!q-voGv?Zgg3OP9D%RT0
z{Mg{%+x&Q=hyf!!w_Q{=KTca8*cjYzpw9*O3Y1~?PQL%a{P?c##X8jiYzRaG>%Gm7
z|Bu=CG%<JAWci)!dxkX^EuAcX`BDfLO_r}p{14do{FpM7OqTyc`<_=d_xhi- at A;{l
zC%=|4CG-jw+2eI&omKj8+4nTgax8PgZtu;$XGaI`wiQ1>qGIbAc&})}e8!!`M)p1K
zMpLXg%=|>w9Gm*LvOqagDviKP?0a at x4iZ@U?_YzZ|DAo$1(&$Wbni+cbdB2Jf%{5J
zSURP at ccEfq`<~I!R2i*jEBl^97O4<s-_ytno62(n<;mOkJhN02rj5aoD&)J{_pH0v
z74h%fjqi&1F^c$Z_C0%@SUOvNPxd|ES+f;&%Wp-I+19 at 2yshE>bPI6**1l&XwNQok
zp%!kMi9P##G_}~i=R-Dqj_i9jNrfv+oiC<Iw`bpThQi;;zNfs4$k at K8?gX3RPRq}5
zwJ8?OSZ8#)qIK<zN{79Z&2J^VZ)Z|!mOE{1Lqxz6BH$ANE-K-pGzrFT?z(wre*q?t
zXmb0-7*8d5q<IvXo^+4U-1b(nVM&C|ZGSU27PI%;x^!{MPR(uqc})y(^R at t*+a8j~
zaMiW|n%iD00Gr#M1wbUp#jZcyrbvmNDJacaW!(X;jkVOVat!kRPI2K9J>vwLJM^|I
zP4J8Yw_3k-8>Ah#hg;mt_FM=0XBKx0`nr(+e>lH=?707Ue*4Py=eL6s-~0S_xZ}Og
zZ%@=yy#Md#w?}fj`TvH!&BPC>!@MVZo2z(gQB3%s*xTH9k-FV~KEM6CrF)n8?H2^_
z at 8-8j0onZa@%rt~Z$E6=Y&A(t^gRDRIln!BrV7FQ_9~veE3)&6=C?(5J}0~|QWwt1
z&SwWDdhd2Vi*ICvNc_7g at weZvw%)3?*!lPulG)bbY#fb;I<XM?&+L3ABg3QpI3dWN
zTaV4mck1Aj<c=NZW4V{nLuacB@@PBu%j3QxVr&eW*zUUzVP2Ny0kZY}%FNT1y!*8$
zFYSCLIP~`-E^&jmIsJ>!mf&`bg$JYiez&!we)!7{Z&<<5vU%_qW;YS+`~qq2%&)%$
ze|Z!CEqTAm%fkHM_M=!ZE!vObwn$e`S#bP~A_bKgTC(~(B{qt$NOT`cS#{#G`*-Hp
z!I|G?hDIg2zh+B%#Wx-%dft*Al(~Nf^)A?Hg!7Q=CA4 at SwLT;G(^-^wuZaF!6>wzm
zu`}}frs}~{^V@^m`5R$2;uUb`&qo9k&IH at KeEoyjEM*Vgo%e62y)ONdqwBXvmK3k5
zb3eTcvI>gmX!4J!X7C{nP1(8nJU)T+Mj%rKvhx=JIflUwkd~qe2Jh`fCuDbw^4pjE
zyzH;apeS^@ZzqxdZ492gY1ngY3|3a>MV&TvStna612H>z?k>2QQin}r3zo}2_zwMv
z^K_gSRZ;bBO^{)SB)m^yRt|*+3O{u^;poX*m(QKv{n7={f(eicFlU75p$dM{6>&aK
zqunVSlV^eBY|D>>il#Z`ex)O*Y!fr8r*qRPgZ;oHooNDCyzEldGWamMUfQ{-v6)eD
zV^Z4ZdAa*hIh-z5ndm-O`EAwkzaVTmc64RI56`nnOE+$Ee5d?xKHufPw7ii2HB2^2
z^JjzI-E0~(7YfjsarFq!jBs2c92{LlHYbB4p3t~5MYr4VR9{pzd#i6GPwnYO0qjpJ
zgNsZ%p8^DpSL>~Kx*|1F?>Sl{s_GbS9bFmRI|EYgWow6Bst<ITU)gz9 at F)jE!eP|I
zs9yvN=_TPy1i1DLZidgprwaaz`0ft{|3%aA-&gQ2yb}L!3jWMx_;17?)%7B%s`kp3
zQCC%z3J1qM9 at mu@39Y(%lTh`H>(Pe!nk?+8P*t$;i{R9KFu^})ed9ZmKlUDuZibjy
zB6((TPwnq^;dONc&!eh)c4 at n{d}fwD6PC{4!@Z&wHhGAHXvYU$W+Ub~4vsu)b<uwn
zL<_E^%e at 1F`3~t!K6;@FE4xbqUe6p#XD4s+{Dqchu8kn@=}3RAm#av+7Hw)s`&^&a
z_;{lGF_L3uj0KJ7A3v0+J~@cXLAt^oRHEn4$}V&NOi3rZ$(Q-A<mow at 6xK%!gY{;;
zdc4dy8z?&b^-{2rA=mmhbJ+Tw)yWgxON}rY^&fGPJL{Gwzo`C0&O(QmfWqvzAjN#T
zxM<47te{;VTxb5yXTl#55Zj$(lSB6nffTA<w?W9WU7PqM#+{}LLW$tFa0Gib))u+8
zAq;@9F1yyeenw5><>m^5H_Foc*NVWNpAkL7b1kc+bz{tuDb3-kq!>#NZx#-dLDGu4
zki9|2FUrNrmCnwSyz;X1Rji=yKP-%uB5F}rFuE))Ps3u9MSpY;siysQ<T7N9C>neM
z>xNKQR!IUr^paB{3$4qutvgYYSk3se$SZlC9}l)2Z|A&FNd<}+-)S`P{swxAlX<&$
z9JGx_!zn=3zj)umjEv%OrJ2jNZ>j4Od#Lkyxr`IUkyRF9)XZj{o{#Zl&LoaF99Nr?
zVBf06dt4Y3u{7*uk;4~ESEI8>9bCl*qg-@}r-Dh0F4R><waH*C<yH(G at u}bd#W<Os
z21|Qz1Wc?Ik$Rmgfav74`q*5>mG*MSRE)*uQe<jY=Gs6Hx7z67`7<hkyEw5YJtA%&
z1)6RD0um%RbSq0Y0<JbJIKEpqPch>n>;G|A8$}Z1+_8Y*$BeN^H7;igM!e`u6yDUS
zFiJYsy>b%?GB>A)pU2VJ!I?oayCrU)M9*pPMEEHGBqSGsL(|va7_O~V)ZKz-zgXar
zhr}cQfN2Wy at MO#=b;(%D|Gj&o%Wj07^MVd6lrYK?0$TjO{WqcYaDfQ_n=)&8V{xPt
zB{_J&e+f>derm_c;J`01Bixxs47trXGJ4zlUurt^i5YJWFP{NIuivBzuCibm&8@`Q
zQPZv)0bzMXhQrEZu?w$Nd~5EC_LP4Nj5O-}Rcw6d?&lqN$Fl#JdPO(+#|X5++-r_W
zmf at Ldo<#LAx_0mwFZc^JkBmg-o+Bqm@;3%O=ENv(IQXSF&h1j%WX_GjUKCZ_1K?=@
z>RVw!&joKmS?tX@`N6YBxlApLl=c^@hb>Q%GXhGyg%qmNr$1A}N53@&s*w691ZM-z
zN+J{0nIuj=ZSK?VJ~R0Q*F#dKoPq_dQZF~DmmBjv`T^^WPh$~Gf4LAinJG(vuk}U=
zMi((YY62ZOs&eV94 at Q=Itsg1p%0zWm`C`4z!4%7z9J&Z0qPPe at KU+j7x>U7-$AA#2
zvY(GnhWmE#R5u!pZB?(8Ej4!jlgec=4X-owXnB`wA*5ZU{ZDd30%p~=C3Jxu&f%al
zye%usE@;BI)F#@{$Ihv17n>0>l?o&4I9J}580V~7)%66Q80So0gO8&?&^OfOuHlMi
ziTt*p2bY8ZeZdW^^l?2|5=pICf>ntc5>3IKjG0b0?vv<#4*Zgj>JCM7fveHCBLt=y
zZj0s1?eY5dL at Q(W3YzSa12REXW~ly>gS~so)hhgXiJMm at zSF1e0_jA9HSu}J0|oF4
zGxzWAHo3P=F-BQ24t<Fuw##<|TQGLEI=j<P^A+TnmA$GWL0zck#KRc7XWLkrhqu^h
zUqbhpYjiT23{V at lXY}l5>(i3Izxtg~_F{?JyeKs-O=1*HR8lz^JYy=X1Tl~%Z`Gs)
zxEYm5X3+?Jj9%hi-%@J_pJzEPYR~0%ukb>VgmaUqwx-pRZ`!|*;p2)VFQqnkjc;}w
zmmd%9PV1h&S#{jk-Y~e^T$vF|@r8eR1T at mKyz;e~hMhY8D?1|R4QJjczqm0oG`iyu
zPBdUg at I>d*?X<lH5ynPI%%WK!_vP?-E4VKmGq}Rdzg&I_n{|6Wzmdl at D8r`*Z`cNP
zXJfv}+^AY;tO2 at VF#8NO!q!aCy#q7}Hl7uW{ndl}Ivs(x<ZN8thBpV#&;atKXKBcc
z%?ZkQAlhkLbm^&}OXp_rWX21LOpZ#X7 at SQnO0fbF>`6w0{}ntmjk3H0ejA{J7XhTb
zB_G{otADjqXd2%iv8b&p(qn2GB|8|w8&x6vJbd8X{UM_X7)^A7xZYUdkkyp1Ea-wi
z2fq>ckjX)>3U4EPJA??C-Ne}AYw1=G9wdsKs;h`iW}INI?Ncvg>t{H4$mHV2;JMRO
z%k7rwg)`q|9X=A=d`ygQ(|kQmLN_3aP=xEYPni#@=8Wa<hw3q9E+wq67=-<YB8u)0
z<@SO;NU+VI9<MCz*>PNEXfL<!k{RNhzHamx{|M}#=w2b(Zd=s9NZic1UugY-nD_JR
zAKO{q_ at Su7wpt|EgI~M?g=3xTrKsC8`z`JE)85?T<{~7unFv~YaNmCsnD`3nq#Mtq
zI at cFXM(VX5(GZNjYRfR9m1)3{w6p7n+pcGoZ&j}9?UhS2{t|KY;2TIx=C;v1csup|
z#i^zBz58X=*MzPOU8uY~mSi%ptKrKU=XidPObWwWn&FM-bY}q0Jt_&5$}S+JR7&h<
z#GA)ANKzCxx)+h?M^8umYo-8m)4AIRfKBIqE;%BZ%Z&n3AxFAW2Ky9B2XnEWS|2QV
zH6HsaJNDfU2mA?yZYktjr{tBZg`aoK`ygW#<AS<SRq!qC%|%U(W>6cPPLZXYSH+<i
z=-9kIVvblRZ|d6eWs!;TLzAc)QE4>ULJ?iUP(-V9++?CXCK$SeRD&*nr4l%T-RTIH
z7^3aCgTZ>)g at 0F3wvs<A{{0fRh{Q)M8deSR3e?6RsT3v}4%=SZ&imCnXVc-8d~mJ(
zzq`11wiM29Mz?Eo4<4(%nHR<u^-#@>vXhzgPexf<Nj=8Dn9fan at a~a%r%6?pT2!{Y
zo`1pRw4!OvK4a}Fv at O4x=gl>6^f%WEjPF=|6V+I|>5+wW?xL!D=)&-V&ZG<v=*CYP
zBvE}VQ!|^1>JSfy-WVSD$e~ULOVqUJbRZb+;6C@!!);`863SD>^IoQ*tn+JXQVuV!
z=IH at qCULj+0EbU`)?#(yDxI27v7k^Tm99!<>6l^}!G%r3TmYELo=zg3C*gt{9+z8>
zQC?;6=;`Fih6TIv&?B#Ob&g?WqxkGy at Zjed6gOK5O8`d&O(zrcS7M^p3~N{jaqiXO
zA-H3ERn~mRay at J(@An)&zR#Tp<fhopS6Q3bf&178pD#2bGm&51KN2O8`>|Kejo!b=
zjT*INWSLE(vL~Y~aaid}+V9N{W~f8ad|7nTIZ47-a_=gX<O(mIpX3srwe%wDeP1oK
zIW at coU+~Y9I9nE%&lA$@@tOtwc(LWJHxb9^O~koI|NV;auG33amyj`M`Th`o31lY!
zR_R{U;6~6+FH{D8D!S_iF0`Ynl#Kxa7BSMJFo8 at QC5`{ND43_#XV$dp#O#@bv}Uis
zLn=L%lggf1gY{&hJBPr*G!M^<iS9MjjVs^*dxoVLVl-30N7PU7!A`(E(z(mvX%W4$
zJnNy;r#_E;oD2(j7Jzb<{Th7wnR;7PXne at +*`sw4Fhwg47<0~=>iD(tzBY0V&XqTF
zWL;V3FUf{Oo|kj{wiS4CXnd$+R~VKtgmg&&Es6AigAEBFtXy|*0Z+<*EVR=&v4v^&
zd>NA#S(%o_=_LnVh5M}LW^3vXhR9im-SeLa9#gE!l<0XMm9qiG+9}HaxnLm>c9=^K
zmKB=Jqx9UFUk@$g+ at sQ8MFLALQPpXwAvOELXwUx$yU0D2y^@+w<}me{E^R71+131*
zIISkcjd*1K+QwT&;U`HaK9qR}iCM%^!znqB2dih(Jspk_1svRuNUyZUO#{>FzYy+f
z`CkEwW61xEIR9f at +BJYjHGe(08;|m5cKB5I6PBhmgP_?;6Can#y2N6Hpr;tYtO&tG
zlVV|7D13)MIL*a%ets)Cf+(~C1QQ~FRa$F8HkFcWaZEDHHBrcQI2aM-`ZMKP6E0`6
zhJ0}SE9L()x-4$FSdzYoNGsX{<8tZX4*DkDWh|DFwD2s>$upkJs`dO&)OmJFQ|CEw
zu^;kbTpaV*p^4jGfMd$Nrs5#2q#m1Oe=9q?CKZcXIcms}rIL!eRv;@`6-l$Wu3Nwu
z0fN)ihML`xH3o-z3NO*Ehrq3%v_P=8%H>0jFOBtbNs2a`t~0wf4I`#0n>%eOJ=>ii
zy;hke7LD$0W&!T}u^bh(l1)nLk;49F8vyuPq5P2yOUaaf2035EKz}(hKyr~>?}uNw
zeVk%3Fz8I<1r$^QsWLwnBzk^HUbG{JO*h1fD0g!^eNXjZlpY at ZiusKh&j-igzAoN>
zR__h=2mcbc>zZ?&cto-ERc<EBTY|5ih;oyK`gHh^yNs+KAZY=O(k>^hh!-c88{&|9
zb8s-JJyKi82~VaZLEDsg{OJ#W$tJQJi~7UWMedEbizIZOe;$ip;;<c5nB;5-QN%$t
z<NHjszGV^^GDVZzMECVtq?yo;Za)u~*PpZ|DD-E^Fq816IJo|Jm=zu at FymOOA;)uR
zZuP^=7ETP`1u9(FxeemdK+v;N4j|Oz^<u^olkggQgsj(z at wVkjajN)IjSdIsBA9?(
zs{%i^vSguloNOb+=}g)gR{pF;&!Xn|lQfG at bf2PrF<~kdyj`xSf@(D{ItZ|r1~B-m
z+0}09XVo-Dqh|P+VL99CDrXleyBhANJgtU0RAn_h5C at E!ui&Jl*mt{po$}A5Mm#kg
z at pOXfiLDPTW$TWa$XMw=s#(uRsk?Q%;Aba9eU7pf^||epb9TO*XT|0GMxmUCt07t`
z=dsBUBRqE>RY9Ff^jx9=9hIuI3l+wjRR1LC%}naol-$l2RQH}(AO6#P=(CZ^IJ<WI
zBf$drTgyOIu0NevA6b0!*jInBUz>W9^vi5>ZO8#br<d>wHo9uk#DNX9I<w4h&dmuZ
zm?*4!M*08~1!*F@%K4f_xpkIA_ZZ;C3gON;rq6Zsn{Jt1L^qjTD>(`c?K&#Q!JJaB
zb&V`Dao5P&|FcHcC0a2X8}&{V8=qE}3=d%(nVVQtj${jY3n41MRAwhheydIsOA;we
zh?1BBLEZ8B>LX3gP+6TE>Zbu9?*$AOwtu!YJx(OzKcUBdz#BdG#=-c5D7IlD{20xT
zzNqqw7HY6z>j*TMb at 3Dm6teFXTO#idE<7$Ov4;5Ca9=B+MEhP%y#R()hTrf-^#_|F
zGEoWv<cSalbp>qX9bOLsf+RGFW#HE^E{WYgEOIwt%;LgVg?AQ(w-GLS*|3^<p>}Iw
z=rz9X^h|EVf#oJ6qBViht8=eu&b-Q&$yr!fq3u8uEV9#v$24`a8J4(jl#?9&lk!5d
z%FA^kTssk&yo=F4$!1rQU_3APbkNGOF)QVT{^R)%d)d!2ggw&9jpwbTS{aQ$3OAki
zwG at 2@8T0`LpH|Ar^vUP>4K$#y(O$^N;N;iD1Cc!2M(y;;G*bN52bbYNW_Enq^9Ki4
zs=Y6%jGt}te9a3kq12PD)EWb*ErL)iNFCfA at veL{dO=Qf?ud-2wGHLqo8%C;$Pu(i
z(P)KyNav)5XP)V68oqD{lKjIhMm2qw+0lc#OOx(JTkT at km{Z at i<JWa9uOqN5(cK_f
z)ZZgjRROle(%&;5ugaIG?&-zJN2iXPPDtl&8^FN at EB>FF+IUhhowKC8R4DzudE$t&
z>|N}S4S)WWp3R+~>{=G!rh&h=fp4PwS`CIg5O6?`uy`YTp46vtAaV8I$vmCAc^-Lc
zq2x2i=`CRHD<(mNB+=cf)Y%@P+6qJY$i$*ikFOnRRs~N{qgN7D%~h`?ruNJO_!Z5=
z0k|sy$VC8^0#LmKz-`Z?z8e7?83CXO^;FV>z1&?@_L)6XNkkm4yt!7%YJzKaEmx5#
z{8|bhw0(viObvQzG1XutxU!kCR4?<ZTK<<S at O%OVv>(7;c3IMp_eiyuVnEk%Zq1Ks
zj}^#|YZV7~wis_NeHmZGo9XPdcv6DsQ<4|Kn&-_8c=S~1&ghx&X2fU9w7H=Ul<=~5
zv3E19De+xann`Pmls)l;m;1t#r#5}Q=`_6qc6usz_7K`$7j=#KM$UKTn{bucy3oM4
zE+F4@?yf#Q2(bR1SvWd`DtDKhBBXzpfPyE~sj}a5p{$y)Ao-P1BiL{8{2l>#{`Z6>
zQLXi<QEx!f{^ZQFI==A9M0HYk#Esfa5I{=|C|RqZR|z7zUhdbOJ1O_SoV!i#Vdrl5
zvX;%7iYneWm>|>4Wmb5}xX)4_;+4Nqe0B;0{)q%S`tl%lYK?YIUk}DRHt4=hDf&kp
zMzDU0`u=1ReUEU~3lDvN1YaJ(pXT6qD1x6Z_?8GhT<!2boHjP=-r2!FPH>F>Fu}jd
zfPp+(x{1)>8F(q|1~O_tY}K_lHka=ue0hLKZ9m4uMCWMqhuuLD>_+8Eqh26t=$L{;
z`op;e_X9=lzu_*dr?5bCa^)nw|FDynoz;-tGo9_~rC45eK^LF!FwT5C`bpA7V@&at
zKBi8xMu$3b;1YTeYv#5FMwy*x<Jb?uNKJb#vFN=ZUC#C|PHB!BK5|x~`*N82$cqx)
zJ)p>rx}B9J`ebi{P-H+CUfI!XGR{BnQms4jc%2P4_h>Z~d-gHBdK~QKi7YN=!uZX>
zV(UH5e}FS}$sPJi8;~zT#Tc^so|7DowPz9YM~gYY>*ua|e!<9QAX&BdpY4~wEO;MO
zrcnQ4AD*%Eiq$Hat!-o{ZX`^lI_926ASu-!gmI2xocKr-InJK>%N`t@>%#Ae!mIE3
zxJ&dWB}yyOf8J;s{zCo5^>1>XLjq;`en*b4;SD9<O^&2<`=3RCBw32uL&a__(!=M+
z5v-r0e$xWi9ZNWk+ijuw`tE*oT;F?S7Zp`HCrbLO$$ey$`-4P!*@<s4-EmbuTmiX5
z_i3l}--1R&u8$(~RleAT_ebH?_k6-7`j8TxLgW(agoJoLTx4A$3C08G2%3 at XQkY)#
zc|-jwH|qL(E!gu%%>W?y3+)s>MN}kDa|fOhrE7}P4M;Tfk2;26{e<#oN+fASf8T!`
z5h6}?1pgsNw>=|xMO`d->}rOCt0$F=_$BWzamAo5X3x-`aq09FBj3!#hgOW_y6SH=
z!nzRjr})&Izr^e1KKLWNy4+lvRLtCm9|w7kAjc@;NS+md6Q48&GSH95+&xC1i2`W#
zJyL3DmtiiM3pUg4ntZT6sAmNIBbk<8+z=eJpSA#8p3(j_`$@rCprhcU?y(J^+ at ULk
z=JrCw{;BMuE)_=fkASOf&xt%g&C4ahRR*l=ST*B}cYnujnsg>jN<XGl@!HIC?P3OZ
zD9B%B6H{khVv-V#v>`ixuJL?xgV%43$kc*~Ve?eJ9^YB<f(qYS3dLyHT(9q%<_5Xj
zoO^0nfAb7E`<rL!g9S>LzWmskH2LRe=E~Qfxz2*k*;jA|kyA>F%81p-Jc9TvaG$mA
z^CX{O1qAR-(U4Ut_XuW8&m+oK$fTv7;^mfY66~$kL6&vNeQqfEe>oMKG*x8d7(Wha
z6E~@kW-q7eli22WF_?l9(?iUCBBQu_mVu?!+H5bRv**rYi5KQVwa2=W_SkiYfGn8q
zka&;h-=Oc<rT_f<GXbYOtIl-6D!XA-8ez}I3Z{u{YiJ{e1&&nXB#eabhclRO)>Gt`
z+~wtJ&05 at LLD=LPGB;{3R$L&{I!`a`(ey1^5hyg#Sb;M&*V4K+W at e*p9a0x<&I}I^
zpaPhQ^@+7&TmJ2_<tWK9o}WHVCN-}HA5vCm at yr&syEBvM`6Q*($W;3dyE8|sv$H#s
z)b5NcP`4dSWxt;V3-)Kc!v4&l?au at a;%qi)^7}JMRRHd$@M2Hy866(bS}`x5 at J}S@
zYsL1|R+7dlVydQwo?Nq1oT%<4k-o-zns}t5Q79F65id7?o`7N^)68;<_!ihEhjN=*
z)<pOW^Wrc*Pepso3Y0tMZRYii<H5PGi!|Yn(8_vgf#pPYokmJ;hl4H}`-+1zJzfS@
zTEK8&sP$FNtW?nQE}$m(^+afsyNJ5!O79!-Wt(RZFjE0Dn*f~=cv6|+(*;MV^~f+U
z38YrjC!C7(ZIdiZyC`*V5<H2P?OCUHoKNo;=Vw1HB(uj76ZZ)miuo!rQJ+{JoP#Gb
zv6Zm{2`p6_30#X$5?J@?BZ1$qfyJa at qFYy1#8UXTl4f^WHWHPrC=%%;@p0DET&Tv=
zSQ>v_N#^8}betdK>QclE7XittY+q@(<JjOF<75-XN5x|F(xU;MP{6XkOHmmdUI5O^
z+y at 1`n*r0PG43o^WoBuzX}>iI`a?BScinu7>b<_D>+X+22;;nYd=uTv`R`KJ6aiWb
z6*tU~W$zm1-e=yaVO|j at Y`0;aBqrZ54;mPZTQt?VR)Q>Z|BTW_In#4!wo9S1n(Y^q
zmS(#UZ at 7}fd=}qz_x`F=qI(h at +to$Hh$<a&y}N at 0&-e(>4;>y2rQutqezbs?&P+cT
z9tihA9WPqX$bB$mCt5pPe@{BS<kRGhUNYiN3q~&)03c|dfXYxuRIHbLa7C2v7g0K!
zYW9!%4Z->e<!(wemNFLfv)l*$DBV}1bT&8bA9Zn2y2p<oT?6TuUwkkX!8b+l`#Qbp
z?1gdp>H!FDR+1fvLQ0t2L!O2^p!WxtHmKo>TcmST at EU=^HAgCDinUcVH5p|7F$+{~
zMPzl at eR}L(74{Xm*A%(GRpkChk^7D!_l>yY`HCr3HC<QE&|1Resr);>y`y4!V(eO+
zUl%j;-Q(k58o~F>fmae|@P5rfqvTI~{YbdsmBcB#)>-Ts53o?cz$l4KnqBu)sF(Qo
z*XJ3MsUSQ>y(e+zTF|cuZWJl})!ve_s#_lo)JTo1y~OcBX5vUTyhkLy^-scJrN`Np
z7E5ZMloohMyVQ{+`3*sF at Bd;8ee^uqIF9 at _k@u<jg9?*{*8i`B5ryW^q`)WS!8 at kk
zW5$8GLyuO(M+y<GI=t{%S|L)zCfXPZhEbCMe4`LiN2Mk5H(NtmZg~On&7*+*y<pi<
z;?h%&*|DBQg8iRl8V=pgsjCcE#q$j+{qiDJx?>U*ehFu|Q^bGk at Q9gLOmzKYQ2KXn
z)YA)M{#yV*upguirJCpa$4{bkzNPD!kIw!bg7g!*R}ROz?OO3!_H#3AzQCH|&XnVK
zY{pQIQ4}{>=G`-#h at 0yB^GJGSYs5I;iWuc&G0<ekKrF%>wDzI{X!TLMTP3TGgEtOZ
zd*MQsOdAr5x+EYooAjc2G+(lei_RaaJf)o3Db8GhZG_1q>lfJ_)=Zv(ZOAveC=f9P
zaT3iR#E+#`YuAx6>x322Iw3j&0eZQBekl`Sjp2EfON+EL87hV1XUWA9Ekms!8h|v=
zWb80y!E^=1&r~qJS!I#csr*G+f~>#hDU6@)jTITCIG}+2+MXKlvQ{s_Eiovy7XzEs
zpAmr3Sf)>(J%BZ!+`aZ(fVP5GzM_%Cy_=wu6ta<=o~XLPE+nOiy6ddNq1|~xS1Z^}
z;McvovVhg5#8|~76*EK(JW6%bjT;i(qfD1c*VRa~U76Uk+t6d~km%O?LMFtN*0ZzF
zHmaYdaQ|Mz<oVxq38<6u(ogn#T02}bn&hG_<*32$`76A}=eg&W^k}Tzby`|<20 at K$
z6WxE5a)AO$tMD|YvYUyvnCM=uaCAP0;%Y-J5-PQRYgiEJu4}-T&fZ%$kB~@F#L%Rp
ziGBH+Ao(}8I&6dfc&rjGVd>GVIU<{e3lEEy9%a+;1w3r;bX2zbuMe^UPm#Lo+Jro6
z(XCr~0U4IGC>ri$YV46lH0={jr{aN9#*4(Y<4ufn+#(7JN16j9%4-I3s;)Rh{+aSq
zF;(9hdsYO{2LKJ(UAI<{jT=$90T<y-sk`A&NjcX_>Bi?=Y-JpKg~i4k*AB;#wiiUw
zZ|Cssn)u`2(oUVTxZyf4C%WtUh`REeuGu!ioG1ZtwdIeaxmZ#(Nm7K<B at V07bz@C>
ze8AWn2_+%i%4AAs2*4MXYuwE?H*_sAHLLRplTWZt)tY8W1B23iYx97X=G#nXsR_>e
zi;}(5X2%VOM6D{3cnuy+Be}nx&5o$Q at gRlGq4P8DSw^^Ng0;>>32O3 at PKiFoBAt*a
z(!>5Ny3V=(IzHRj7ZkV|4pJ+|{ez(+JeaCSay{S4(*7;hx8lCex=MJ1bgQV`-*p{_
zcO9 at ttM@QS!-NXT_yd_Yx$gc(oSRp2+x<t#OU-Grz-MoDt<jb8%+vz0xJAVYZx`;l
zLbi{Pb#P<xv%!x)B`P=p;;2Eowlx)d88b?Vgt`+XvB(LGUKUD=fCnGe8+_u$UZ$#1
zfh7yV%NhF$e0nLH^PH4?Zpib?*<#5~8HH;~Isevr<Aze>`pP$PNj<mtU%00(t9RGI
zr?Q72v=2!%uDp=xS6Z!jXGD^<?CykiL@&<1dj5!xKl9wdC_Q&jzNG{{#HL-(z^I&l
zHJNj_d-+?XAR5PmK8WG;wpHO}QwsW4Y_o&Sh3qrgG?a-ZJ1`U1+%Cli`^PG`X0v5H
zt6_{?9<K;gbFd(nY%p(sQoWZ=2DgOMpWI+xpEaMPq&lL&hNyTIhZ#y?C8u5h|L0b2
z-etumaWFf$^bwYs?6?vHEbF%oBNZu_TQ|b&z#6o2?*D20Bdw8i!K^qK$wWw!_AhiL
z&Nz3GK$7~?CaJ&w#JfrAwe>}kdMO at B>K#l{&qWe=UgME<W at hI)>kok-c&yimp{j*5
z!ZP2TBQ$OeXnoLu$Ep&1{-cb$*@-*<#@1qJs+SVglQdF|TJTxLjAj$JmeMkyPO7q-
z>%YWeNu&b0ohFQm9G|QXFJqH?Tm8l9F06kVTfi~@6vtEsPaWj=Bb}Ssz;TMHF`x7+
zKO{zSme{4hCi4^w6=9S4&N*`dZVeh`Ym$8$O$P8k>HHhmW|9<$7ORP<l<z-Y%X=4&
zcsnNJ_BrB;kK{Q5!om^h?5@}UT6*qF!7G1v4Do=8oL_aRWXS5HSiq|ZdLEO!h)o$U
zk9Q3xu{cLdF8*X*$ZrgOiAS6?D($~Lh!MzaFV*;V5j%X7c(FsOaZ3?1bSM;?TJb~h
zMLdofT47-tmpe4JY1up4Xsd13vk{tV%7!9c6xC0PD0}C at Z`i+)c?2V&Y^c?ktt>Ow
z$VReOx(+Lj>ga&fG6_c?(_+!syyDv0_)?<#Aape*pYb^Gt1 at XuP^!f!b?T!rrB1@=
zQ<Qo_)r=^WJFtjSU3f$(_E(`)jL%N7dpUQGnx!KocXXy2O1F{(Q~V at U0z?XtMn-{{
zTaEE?2jYe}69zFzUMU&vKsKm}a~T_$A}r<>mS;X;8TC1k0evD6a|>jJ1DWSQ78HS)
zTOc<&kS+%@w+O`C0-0?fv)jE~^Gs!-OJHXjSDoczlEk#dF>Mwz*~QcnQy<4TPCU?J
z3K#2q!L(US>F2CsJB`|s<Bq`SF{Pd)gNj5K<YTLWebw~1&B5RSl80LVW*x~rx|AYi
zJfG4993}02{v&aF%gDEr_IB&st~@^m+kI`SH|vLU at hCsq`=9Tzy-z2}ziICy9LT%1
z_g)TUgKLIOMa^Jt5#_ay|J(L{*n!M*SQZpvF}JY%#({J>khw)5<`ziSK(^Q3Uv)9t
zY44L=%y!y)qQ%7R-EkJoQ_|KSB;MNEnW at pDYU^5F*p&i{{<1!JbDU~UFV8EIoih+Q
zoKY+_QthTTw4-Ar!?_8qaqyQ>zby(6Se2rk6Fs*85Z=x|^L=07-;47PXQP4zFOvDY
z&aZi*)(uZ)M~a0{eu|Bp8sDd*YL_%j_nAZa$0s at akf`PqN;T$FxruXbW!d6|4ctmO
zaVpL-X)OMUZM=LcvC-c=)#`)7kGoxNsrha#H?yP{m@@yw3(Vg+Iy2iVPkeV}f3plO
z%39(LuGzD^Y*!hey(iA}GD~bO$osYgv|vJ7;pL|2--0RvhUZHBbWQyIEfi%5&a#ea
ziA8%X!<$&N>s@@J8AjT_xtG}PM-r1BNGw{>`{;DD%WH1Pb_tJE>0#n+&X8}iM9+EZ
zm8bzlBZc(ruGuroI)30~dsHDNvYlC0V4fp4Eq{$xnrw4hcoA*k+L4J;&n!TL{q}hq
zwR(>aN1(Dd6cLCYH4AEXjM7}Ijnoay{+g#!+ at 5v75ZYzw|7-8Jhy4{`_}k6WL7N-8
z*Cl#%Hb4+v<iOy=wL=H3NJJ}w)y?ffa)~W5ZCsa~JJWyw_<r*Y4mGsw at m(<4b1Te;
z{gn>~E1n;b*-)N&8Vkqq7<p2$-J;SyWdxcy8n3MtJOt8v4pm_8(9de&{d*r{HS2Cd
zDUH>)xFYWAjfg42XJOmI0ub<{s#Ff`%2STzwO|c?_R%+a$LdASj;~?mY<~C1ves!Y
za`ZpVv|>eYq`Om9qb&#iYe;}uV)ZeV*m!q*CAH!oBW3?J4HU=aj%3e?>jQiqUwgjQ
zzoG`?h`sBOn*J4-=Uy}`yqChb`B(11eMMMO?nobpE4sN*QTyh*5v-r0zD!zsuam}g
z{g(om(lu%Pa9ozbpJ;s{ci_W6b@=Y4PYU1D<ORO_2#)c6NcbKgJUE2nma?EOT%5Ri
z0>t(9i{~k;!w+EU5$mGI6uGN$i$4`tbf$-1KIaAQ#V%b-3kb+g?$Ej&>IkRI4j!YX
zbQ4FXk=|m98(IO`V5L?4TNuPx!l)GI1Kgl507EfA at nR8f^)CI^IJ}0SRtVH_m9V}5
zAY58>^P(V}QzNG!+atH;&@*uBD|S|#dWU`q)=UDvvEHLqkY8KrgD3VH!CZ{PfJ)*&
zCH81puVI!gM`2 at CZY^J1eY;LDEU;ACm#04UrO+Edtpp43!?bK7;Yd{9;8y7XD6<5t
z at E8Dv5na-aLy7L|5=vUU7^mE9G43`F>}w`nqkxFET0*LlUwdsg2!K^NVbz+FrKHv>
zmVW8nopk|jTa}AQ%e?tX1Mg2aazg7;P}suU1_jz)uomV<Sl0KtX7um0R#DdVf)c;J
zysNV0Vrav4uVo{G3ypqmg>J}@{@R)dV9!#&$XRmss8M{;^?$f7)@V+u_p+y>(G+X2
z4}PRbqqz@{2GSip|8H8*Nm5=z14WRnar1A at 5;K))5i3x97VGY;t0YZ+v91OW)tqYO
zWn}@cs at pC<;lg3J at zBO&iBrvI87w4`AD$2;tnJNG6 at V@apsjnAns+H}u}<w_n&HNM
z)u~<Mr5lG`?Akc?VT&zd(*>|8v+t^&;m$oY&U7ZIg9xf~cB^&<X=Y;cP4wMF_bqCh
z?6qAq!;&ig!PQz at c8ZhZdV9I<xRtuMgFULcjgH?9f|6 at U6gw}m#PQa<TM1OvyQ28D
z7OzEhfCtRuHqa@{?Ke`Ej=gx#+n`wij62-3o5&3jF^|I2{q+&yZZSGZkkqHAO}jw(
z%r$B_eojxjs6&wroJDF-<bo)2gT6#06*v$Dn%YbtN(c+%QJ`8?kZlSS%cvB|D3IxQ
z)RqLcM}h4Mbh<pXRv?UY9q9Cvdr9P`9({5uOpKr(VJe%24Hd%5Kx1LzIsJgEjl;w{
zQCKn#n;M1LF4Ih)+ZCWSiVK>Uuu`EJD&|Z=RiP#N63D=Y9Et)rM1f2>AyO1rNefxe
zz#nDWB`0;57X>MLK_ObW6}`47`pH7Ha#8fAIGSRNRgOah2vr$5>PID%xryZ(9Kla_
zf7{l|fNj99C8U?s0h4$%=BQ%5xRK5ZX1B};u(JpN-ZuRDfp at B$1Zl at YKSj3}xn~r)
zXGZSn{?&D}a09AL;$(AUH>J7`w`zjXj-i|%$B|~B$o*vGRw?^%2TS&$o98$UpdJVp
z1V48HNd<^qgYUb5b_Ix4gB}aGtBZ0dtP0`<Uv**gqOf{}o$kW=qOdlFrCivCC~T&}
z4prE+o=R|gj0j`x%Ps+Ns?uD2r}gZjVAT{a-C3dq-zFh=ZEw{9kr|~NP~dt60;sGQ
zqy(tsHB>s=Q|nSU-~shqd})m$@&Z%KSK_*!ukL=_oA|_{9_<83Q|{a`lB60WdtH+%
zr!t{oGpvhb)3wF2$!d9Lv{&<7%rMGA&7AE~Rq@#FRko)dpW at nyLrI?zdBp|6!`ykw
z^2ikzC?m-~aUFkH0lVwGUP&cB{*boA`#iX1iJ`c<u1h5V<pTK$SCeZLou!R-1+0w#
zuQR}_jaO_3M~ou;NWK<!y%6Rb0Abz#mBhz$BA74)*Z+mE>_th<<i}7lQMoB|OhviI
z;N{q&A`L6O3Fo7xeIH*sdy9!DFUMMte>r~MC<m8_Js<R`%v+q#+pp4GY#|(9rG?mM
z5<Q0!l=i>CBK4$Nj_7^NFiE(9iP;{fIl;8R2u5j3(LDwd5QFZD7~OL?KsOe2$visA
zMbIIAFHZ{HK!k2qDLS2|ap?Ao(Vgtjd7x|0qmxJl-AvH63*9C|=LV-zjLY*FSEFoM
zeIIrhXLuY7fi8KZHR9sjvbltLzF8a!bydXM;)_z$d*@M~8l(P{p}tkHV4ue)kG;WR
zU!W*|nWBWfKEkd{OR?Ww9h2fE^f6a(g3|u2^99TC1U`A}QyumJ!oaR5ZH~4PT8j1k
zd8~enb-cs6R!MU`8~Eh0&T?2cDav1_C}Ews4c1Gm;<DDoSiemWWes9<@UO-d=&OFo
z0EW^nzrU;ozu!}(7R>d?Bf4npN>txwy&k?^V4&M at -(u+Q*yYElJw~I42qIs}Agc!X
zYQQ4jHbZ?&-IFfcBwoL#f&XMHkFp(z^4W?lmr^U2&qw2Y{zwq{cuJUCCUFvHx5;HU
z%TV58!ydI1gx}L{fp?ntEp3>e=ChcOEsIs<9+$;T(s1%*h)<k_L at UQP(MO%*PLsS?
zSKMoZrr$FkU~Sb+C0^&E<gH$|fRAaZZ3OrBti=m?Bp?&jclF})dvuGkq at ctkqN=A)
ze!piR3YKKW`()&m^u)UXZ(=c8vAq2~We`9=38c9MP4{~OAo_b$1^qn#u1X{HT~+$@
z_tZowsCLIxnU$~aLrv6yxFo>E=j3uOq0X;axH~7OiPC&4OU^L*R)#o#&etdd<2lJ{
zBY{LP3|8wR?lj>I73x(W>OWv`)jgj4eos=LIn9-Ad^61*<!Ybqy at Ao@K}|4luXeF?
zcr=Fwo6>r&R%drB+<~xVk7zQZ+P#d2$xNbKteEouI(Rqh0$me7 at Ew(@r(S3JN;cuU
zMBi&_2ru1;SCdhh;*I!3=4I~a(PsQ<lWjBp>S*eF(Aq>s_v^))c(g6Q=uaZF+m?SC
z-Mp~=qN&eVWjqemn6JigwR=3TO#7R{(O9a)>m3>iD<k+SgO8>+XfbQeKOCNheQO?`
z?k2`b at klrW+$EkJsm?O|`<pUbcxL>AM5-wQCC(jRsh7>ULB-$11%f-^>KM(xAzMsm
z^SHmIysvocc(c8q&UwPUQvNR0ymHRg at x4}|G&q%Unk6J36bNB_I-0KBRK at Th+2OK3
z{t>s?{zRpqw*;5&F0Ch;`GZZ>)zn+njd#kID1C=!IRyiUM9<e*0ApTs)3>dKPm_Vq
z5*Cs4yOISW>8Vl@^ppBNOT_Gwhlsg+^^?2TIm^NyfFikh4ZHr|LEuRt;C(%o5#5|W
z*?ahW9=Vs at SyN(h#}4d;cZ_B)yp#YT7inoR(ydonuaLM7zs at 5d()i}%(E;9#!KOW_
zxIc-qaTP*jCCh2l==tTd-=~cXr(`g%$H3rq*;|s^kh)D)^8k8-&44Q*fX#qkB#}S{
zA`t5^2C_jRTEKrG0+}CyU{)SsSrUW%JOY^+fy~H*bj2Xu5s133%F><(X^%n9ia_ck
z5IbC8WwCy*vK$qGR7D_dc`UUtmVF|SP2vhN^70^MG00GLROtvLnFkR=TBRS0Ko&$G
zX1Z-<>5D<`h(P8>AoY1H^J0)|B9L|hf=|I}aoek4wR!l482-!%-Z&Z%GlQ{QYhsWi
z4TSDU3l^=0AEEVzIrk3{TC^Y at 9Q7m{5~~Ka(aZG)T-UWe_?0w*Xh;Yba~wLA{c=@m
z!k23j-FwmN6?L6u7OSuKZbyB621VD6#DBnL!{lb^zVEKSy4ja{)>i7Pmq&L6t0;!<
z^A6p+sjqJCW*xP35MM$)T<Ly_%g{Zbs`+1dH}%!c{NgTOit+t<j3Z-=2RMxHNquz_
zNTHVGC`CP^GA``#xU8^UI8bT?`(D)7d*4NU{q5)&`*m?cts at BR^Bwj+K6yoRs`Zd%
z1BxnDUsZOA#?rE%m~XcOV(jNzyWP50DE^yj?Dz7-zAPs8ZAR>OQDb3Jm3_Nv?7fj1
zyQ~bp7Jn}=&~3PI31oL{a}zFWi2)q{T{Simsv1X1srGulO`gJK`6OIE9tDh*%T2B=
zW<_N#lf*98U!m>{iz}=mbZyf>Ge*T#Iv$r}E*w;8CTahTI?Jjznf`C7v)}6_oBvsL
zRwDF2Q)gMH?>HgY-5ywDx%J_q`yTRo>?h;#_uuQY1w9rEQV3L}$9_+v5DM-sksf<%
zy&93BdOLb-YR)lLZA6F5Sozf?VJ)O`_Ix(PP|Zq0!jCYD7ZeH>=$*bMtYa0w5;cKK
zKX&M~ZN2cb=$+=BR2BXP%r2@;kdLCQIIkr<-FZj%nx$g+ILa2Wc-8&GuR1Si7s$Iy
z-aA*`o6xLWE;GZ1yt^&@bDZO(`tVAvXcy@({XzY1roSXh^_R9tfBET-CHhM;%x!~U
z<F1CFwiH2qgy5`F1hwJYFKu0d-xz|PF6vN%qer!h(Cl4;#ugyL+qWsoIj$(}C1 at rw
zu05^Gr5>*=sY`pf`!)#nb45wgG9@^A)K(FiYf8{86KuGfl;S*DWzqMiT||{=Ev-m1
zG=_*UO)AASLzq4$OsJB1WWhBKlPMd;I;Jh+MVS6Iy0~h#Y!JRrigq3iID<(J(}ryb
zy(uR2mf*Lgm;@WPmC#97AN*@)t6d+lrF0q~#LBcK_+lw0!G;UAY5d<hO!J5>#k7Es
zsCFML#U$9U3QW9ui@}g|sNg(=c3AmB+*>4|!(ZuInGyoDxXeW8(#%Yti%Yfy3w9_W
zr8UY~+hBTgCnJE0Qi>^G>@C6cQcPCtnxVLeb5)C9AxBD!_!Eb?Ya7IZk0`rqDPqBf
zXMxEi#iW_xn_Ep%`h#N)>!kLQvPK<aOR#KIag{G`5ASy3Yjp3Vw(!(#kZqwaGUG{>
zB6AXBOE9w(Su)&v8wAT7g4$99PGW2c4k|@Z8-DYjan-8AgK!rUY-2FfAuDZ$X#TY&
zc)FsbYGvU|tQ0tjYU1|;v_~<%{-D<I*{WAb`3fRnOK^1wRwn`;i5tNBWq7Juwxl2T
z)7y~<@6wOA1P7NQ7Hn7 at BbNBimwuBP{fcc!d$!AD1F at y07ktD%e;8Rz6I;3r4~bjc
z4KxqMBzFVN*;`S)KX{WaNoD%B$!DOD&-BuK1RGuqCI-uZius2(u~_jIvv17Ix0-!l
zhQtXz2Qgwx^MzP?#O~{h+<Sbi5Po!#drp!2{37=^i`*SWZrRSn_@@+wUtHvVtq5jQ
zk^AK$_aQ~_M-+wsxyb$TB6md*{Jur*E&CVB6BM~0DRSRk<epdLehB=9wW`>@rReyX
z+3R|_QMa*@Y4`8y?p>_a>^yqz$|`r1(BCpVz})oI at QUF#wu3Laj&n?O)@({$CAY(P
znJa6{I2=*Yfo=Yfm+O$_*_9ZGkJaRw+bs^LaF^5U?Pcz-ao08!0!Ia_w!ASMoH1g1
z<)^%FpZOlj8$1LK%6(rw{B~;ilX7hP%)W<X3A$+`ds7z?vX^MW0J<iqpHD}9$CEQ>
zlRPpVT_2o;M>fXnAlu0qTj8_=`L-%zOPbEw{s17g=xOKnZJFW&dfKBw%K$v#Q6BCD
zK%tEkymkBN7{yyBrE+eui*jE%)7B<Z=$KXmExoKNQ$9TGQK(P*&)=;+-yuQ1K0SE0
zsSj*0+_9%hTW_Tuw<SCsIJ5V%a<U$4^o-vp^!&$U?2WAhH%9Vo2&<1W<18|f<jFAj
z3##ev2x6ydd7xg`UEg!tKIv~ibkB-0Tzp;OC2n8o-E&iCX51^M9FC>WK%)DbV`(bR
z4rAP)J1G2Dy>Wl!8s|j!x{nZ%8-tMJt_6%X5?5WcyIPe^)1=aHL@`M-+hS9aYk#?u
zlb0{bSEc=PSmn~C5&i_Gm2CR0**~6*Edr;_#vUdp?N8&WrrEX8G+bMD at fEILsx>Sw
z`SJPW=f%lSb;(K5oQ#vR#xWbpRMb(9r03607NPjlesKxTh*A85AWA^0=JpuH3{cDz
z<y4n;aI_cU_<bJ7t}zaw1qaD8;+F_bw1Ba6u80FN?xem=(L9T$PZ7#H at +j+Kl=mA-
zvkc`4zj?sNSm)#Ra!VKJ<1bYVc<m#CJ5s&4Z(Pq+xQx=nI50JJsWW{fixIBH4MGhk
zDkc|_+@@%d>r+(B_ft5xKyZ4D^#Fpv>QH1h03TxwaD#P|KK at e0fY&~SV*V?S at U7aY
zn7g`qD>cVXG%6cHwwdnI@&y>j^2yppT{>$UY at in$==Did+xsi-fuo|r59IUeit~Ef
z6~0!9a|<=Qu)MO-cHB~%iDYeajXV_Z-p3#(d5VzV2TDho-DBhfIG~JIz}k+J^3PJz
ztXqKa?eK%2aZwp*z#!Mh7`Q;G_4y2XKO9l&WtYKB!@6*YPgMH(IHA|FUiZEAI==lG
z0qEyv6pyLHT0U45-nM`*b9lGM)}PTTv3|W70c4}CxMj9@%tKPd`Wd%9=eFbgg;j*H
zc{2bwCJj&O!@E)u8X_!&y9kL$R4-Mj2sGbf+mTCD->f1|_cMWk{K}Q6I at 2dmMC6IV
z=WdmXXXj!|)-SRu4-p0VUb=o^J8qtzjf&_hajnWGhSF+<2<28OY<EqB at Pt#6&|Y(c
zp9DvdlYFRvpxKkm7+B+!y0MAw+jda9aY>Em|1q6AuPU88o8u7YwIRP#xs$nP6dSaW
z>Bb<@y{k69r2{k*I=PB(B at p$vnO<?ZS#zamzoxkgsFQ1nuC?RRAGKuY4O|fnEUO^R
zjCUuu;pUk4v|195bqVX0FiAX%`s8;~mGYac00Fo0WfVPmCT=9&u?V^IlO*<B;x;92
z2c}&Y5wRD78D<vKTc8!HR5SU`;LGVpBw8x>gSjO2a#{QIH_s3v&I-1#X`V^4A9Tr^
zHK{0+?45wJ=6yo>jVMkj at fm__rq}uOF+GMH7Ra5;+Na+D2vCD`@mXURLMf|x3e4JB
zG0)$HtMkd}lZ;g0j-rGCpCQU-<~yH0Ubdo+j0SKb2=sx26`>y)&EvDiu8>kjeG1H)
z2u(L`;=Z>kLmLGvHJKQaY-X)|xobALK>0j(0EtK0`sC|35L{%SG^D*|10Reh?ZbH6
zJz%Z>gDBYH`hh+G1$-!zeR7M((qppMR;l06#fXBvvt{!3X9S|(8an_*qQy0e$Y%9v
z at _%5da at Pt4*6P<-s>X*C*yvlKB49;RM18#M(po;*Y=ea at mnW55-li!3T7!4TG+nMr
zLek|)#b-_2Hu={mEsbl58vl^!zPd_4iz6Tf<I^Xd&3JsW_8e)e{|$LsbKjW7hYoJ=
z{RZK3Qxfh;{>BW&XHCpD`HS1-%Pq7-x}5Sxj2tLZ1f*bm`lPejnS%8fDlWTlKL1<&
zYZQjeym<lNHFio(6u!0>FW(<s#}^6W1Xq7X(E5?F(kB)zT+0XI{y+(udKb%^T_|Zv
z;7v*ms1vRW2VCgSl@%nA7pgtUN7v<iqt6A)Pw)ok(<iZbVZdiPnDiymq at GN4H?WJ4
zT{@&#ZU|VD*fS&X+2p(T`m#$UC52lFR1HZu=%HZRRp~tc3T&nqN`S&qg40i|q>!AA
zLJ%U7m^NDAHIWG^g^1LWqoj^U2(>mLWW2c6eV3bvRY{yEcE|r3-_T4)`-aisKlITW
z+pHY>Po^P=BVrVkHFZGGo9u1+4De%Bc4_f%zve&%wSl60jYD>t(0Y>q{%QcG`RKqV
z656_ at CGK-^^DG at leigYu9woflMRr-_WgPrf?A$oE$6`4J#+l%%qBDPAa^VPTcVyI^
z_dD5z)}|WYGFW%EuE|0taJrOjcI|g+5Si28CUQonvF5CnFE!_W7ic~!-6*APJdMGs
z=R9430JWGWPQgkfcay<t3UC-JdtR=MV}0i^amdX;b01Te&dsuM3=!$&PUM*jNpXL7
z8(kK|P at X?h_9ehl8rKNi%$DPFb^ln7+3SG;ZemC=OQ?hxb_W`l0QlS)r=tg}F)kuy
ztus-vgHM)E8>ubPSS1n)&#o~OTvGR_VJ6|9n6%>yKM^f_-f19?bR1IhkL6N0_SjRo
zG<J<S&T8 at 648sr4WpHl4m8nxw1@htowFwz*LxEm!$l8^jWE{=JQ3J*qshqRI^m5l)
zvpSU2`D)wMRPjjFUDu at ogMCJfeJ0q=65cYHzy at J7b_v>{a*RSwRmielAs{oyTG!gg
z=Yb~(ugvBvIx@@<hI#TA8D%tKfh?@bRdJrisK3cN-wk9+<8V6WCD%&oGyrHT_VM~s
z2;~BTK0eBHt-fSB&-~aG>r18r(@&WSDTfTuI{GUuw?6#J&7rh at l)`Rh1Ht4Vl&!28
zZ<05c)u+|}wZlxJ0Kak&n10GZh?H~#pLF9Z-0x}(Xd|UC8!G==_pt%52~1Vi`4>tC
zs46vl^`_LX&6u|p!yBP<^MzE-?J5abt>7tu3ZkD1Aj}kCp>QOs-P81qD-zv%q5x7Z
z1uF{^H-6TAt`(vt5H|2d|8Fy(JL{72M$-y=JvEj4u9*=FgC`*9Z5SzpaOkH(2raGp
zc%u8{Q9 at xuX^N#jVaDq|S)phGRXg9bJ6 at e)@o$E_zD+fJdqh>NHj6-En5i$OL at Jx=
zE*$zPTcIUeZs at tLLiyO3DvU~u*KlBNtPGUze7>Udopz`~u6vzjg}+eQOy_nzcpMkZ
zrX-0)uo(^%?p{8+8xB6hrGhAhe!W?N2)&J(6ieBHLS7MWfG<k=b$n<L`4sx3g=Uo-
zq4Fto17B(K%0yhn2RkK9)o at Jrv-${3!<^T%F40{(Qdwg*sdz at v6-{<=5z)Sle4=0#
zK2TbkXvA~FqUV3ry03;k)kqNfiER`_D+q523Tjl=SGWY4A1NtJk}%N{{)}8VnE8Vm
zB1w8jHXAq5iU3JeUn|H&^^fZL6eccja_x#nQ+3cb6525F)QizbDs(jpWqhm_$k-TU
zDIkj7K-o1yTCDXrje<XpV*4!iZ5KO$$IxFH#m-ZJ-Hu_Y7sT;rM)6%ye3eT-H;(_b
z#a|}lDeN7cVI%ULeD{xHk|~Zc?dC=Th3^`L*V-K&7U2fd*IrOH7^yUx>Om5viH}m3
z4xsTED}2jH=FO>aCe4lK)YT_?p4Pqwi5s-2yN?D{1|YT}c~pVBau`9qachDerOT$7
zAp+?+pz^hz&&@!eXE;3?Wq}bRzdoDj>DdDkW$vG)bwFJv&lMluk_EEV!&XlX=aEV9
zA)&>S46k5APV3L9++t&+{%^!wQ_$oVi?PthZWcqJc8S06{z{Ay>18NgKUZv1|2Kq2
zzf`{|gyzhvYPTCR#VT4jl|7B<Tw^Y)goX8nB0UjSR|)ti=OPs_{D{unM)wRcw&&^Z
z2pwN$5NkK4@}wH?PxMS@!zR44*nZH<T~VGH=02i at h~(tveoPZHOagUO at l1}X^M2%x
zlX@$Oz%cPR0(^oNryI9SpX8?-wuBQ1iq6}9wOsa}nFkGzOdKaN4U-x at k1a~@jA-c{
zjqM|Nt|7qR44#%xZJFNUw;aADyo{g-&u7XrZ-A$naewm)(3~tZNRy}0!xD=clD$W5
zUICIn;`P at h7GGA0ndD`=Z3$NrFnw+`5lQ7Pb=A5W9nDqi<tkULsaQNvoZa%(N)q6z
zbyQTX2uXM#G4Xo at xu$Y1I7(#xg=R3HVtq^KFyL&UDHDr2%aXmHlJVv^ynY|no4U!U
zW5kxQM)A6zOgB4wu5L1%v$~BJ66*FtHkA^KCYAM$u)2L6uj<yaD at a;)!UVM03p)wK
zewr1KJf7v0#qgXI(P#r(&kPKCM8CuDuR}-|VX6%8AvABl!pcYiALFCp8;r`e*5RwD
ziwbsU9^Wqcl8p_2T8uBIQ-(T<PT!2^^eMMjm?xC%RQx{KxyF>LB82+c1V3M- at 4`-2
zq>n~LdI~a7#T}v&tu<1qhP%ZjG6dlwB1HGNJX$GIdA<{s=RUUk5{nLxnr(r$5!qO%
zvbHnJTiWh=!MOYCqshCMJKi<nk&Nk9uCY<M_Q$3nvFM1HJrj71J$Is5uxFG$++xK_
zQm(f0jP3#3S-hZoz#foAFmDrH2*Xgp!;-z at H?M at F&K5^KB0}v6s*dU{VVkj3w at Dl5
z)r%ufuU+CMJWc3et at STDamynlF?+3!gN(=2e~iZrQFuF%#;=<3#M2}vL1KAQGFxg~
zmFSs_Fb$u?K1lt~78Ozme-j6F*8e09HZfC>I5-aq(ErNw;^4DtLK6q$BXJNR2|sPb
z>QY6cr5i7Ip~HI)x`nf(z9Pc=QE}m-s@`fRWMqZmZ{|v|dg?c2JPlxLKjCmxznCu$
zrhwv$eT9bp`~mi{jr!J|cf%*Xs4U@&p(4597RK`Q|8C3|3t1`={ntSoFI!PpApe3W
zWGm{=r<UQ5Y*=bhgGTaZLR7x$sC>seGpv|#lXzV>8ZGXCX+NoUDA=djb=8sF(OF|-
zS{+tV;ih5gtC5r^Y+~j}$3dmVYn~AvM$FuNxkge^(d{!r1>Gvhw$Pt8%T@@w)s)a}
z1EFz$itBf5RKJbLGT}KuF!_G at LBn%MT?v{>L*w{Ao!v3zKiKM5Hu-NHmz}cX(DDA1
z%As`b+AirRnWu+Z#|^ZU_qUE)#r1U>=&tHjlS-2#VAA-$N&bqaOkd@(*@~Ty^(%I2
zY8<-o1(BpSJQG0pc|^*8B<+uG@;4oqO^+Bl&QFg9e|D<j|NBsS+(YGCQsdstJUe9P
zAMSuRaE~8u@`p10mB(j4FyeUs1LcjcU-(k^{bIg3BE{0Yf0X}FI@@vt2O?UI8e)B}
z-q3CU?V9qJQ{!Id^n`}PtCmB2+~YU<uV>a&wr0mPw)$fl8vk(N#_$%R^5+3`J9ewT
z!ShG>YuPES7-Cm*#84`CNrOkJym7CTKb#sj5MzCYd-H|0&tC}*(C^T}j at +|xEm+qP
zWpaR^YOW>BURDLJ%c{ZkgCTWDbT-KAjeEHK58k+k;_CnKc~|{)P5#=<ipt}%yNo{0
z-(^JO%T)hz;?mjOQvR#?_S((0S8MJE at 7P{H5kt~mHSgYDY{S_SWH?LYDB^$CmUJnc
z2m(jy^obE<vCNb6H1Wng5!2-7B{WHAEA~qJ6^<rX8%?@Mi2BRrC9lV1wu3Dq^WrDp
z0c$OfAQUKFf^`&8`Syd(sMXsk?<KRgDr^e=5 at -DAxnj&EZP-Or+~1_TZwKw-CGSw+
zo!*%Y8x5`Ne_r<R6ql0tpW;|f_OippBA>##f{TB2UF5ho%Lh{9{>TZRR{u$<Pgng7
z@$2r0d_1!fKHde}s$CA(9g*Qmq8R at tp=t+lbLpZ<$G=na)i2`T)44{!K-H4EA5E0;
zZ$pX;ZKHnH;QATU`*-SRGVc+_?ew#=h at yPd_swnUyHMPe_MeCgIUt6zD=`ySO^K`A
z<PT8is7vfXonHzYY&1gNr?Xs+^FUtClsh at on!Dzm<je=uKJOrB%8L24ldekZVDoWk
z+&T-zrJT#(UTMGiE~Wjlm9~q-w9%_x_OKZ9!FkMLr?lSucEYBZ4l5bktm(Hyho8mc
zUMhQ7D at V)x@&4nK_%Pue4?is(0<UAKH_9JKja!T8k@|F1i;Da7(D-%!9}qWretH;w
z8b{RJRQB*z|Bbku1^$Gc^8ER5+)}Sfc-aM}jyWsF)Ab#5K1r0jzoe78hcN@>Njke`
zdkFV=XM|;j5IHi5Wjx34$m;^XgKt}T{npbIaQpK5??f5DZ@)h_6cx|)$3IzryjOB*
z`&Ir4Q9O at Zp1A4`+3OaYzj%qsE3t9u^Kun)y%ifOB%d|G4zCB&O+a{5^E-dbd#b`?
z@*dj<3ct$5V-e)caAQ7_%eHRJdoo&R37=gbL)yMXcxl1E39bm=ekvb7ApZ>o{{s0B
zEBNQi{}}jX|JBa*mKY2_uwH8dnR!InIt0toc$LzO5?=}$|MCXI7Pcbj at PZ2eQHsEK
z2(+41gg`})5DfjffIv{;7-|refE0n}5cGk&2!ZMnAy{05Kv3b`g%SwCXop}%X$fW(
zN^o%z0zrkZLX)Brta(Z_U=LgiF-Cx9XEgg#Frkoib}}6C*OGMKa_JygKHbcy%p;4^
zwTHWvru&?w%XCqfLQ-4Qk5aGxQ-NfH3TsOd?BNh>C`GUdZ-k(`2!Wu&CkhB;1pnyY
ztkr8uNv2i12tjiZ0zri%3N#mjYYjnjZK3>nXc{~1mx9VdQr?EW`p-oqTOXWi=|&bM
ztBR66{A9k)6T-bn)sh{-yvQHjl5P3aTP>`UycJHNPa-k=b^eHK%dT%Ral=BD#eu1C
zRJOCs at AE%}5W#YF#9QHw{}77Z{NYJ{WlJ`F)LUAzc`H_vPC#B{8$fha_Oi;in4-QF
zb}?*tS(NQ{*&T#`w+O#&?T2M_SY86k9_BI`?J{|hVK!UkZ`Q at k^<2z6p7OYf*7t#L
z$(F}881HHjPwmd(HredqC8)+z-mQXeC&*39w<;3Tk)NwuJ9w;hqv8lh6QzefO+^)0
zD-O6taw8%VDIzLePX(G#nxiDU#55fnK1hQ%MZ^YKp4ye+rD6q}6>e25H-)~yN_Lq4
zh(Dfu_JmN?Z-qY+p^k9$-pS}4F9{5)?Mg|pFV$$t?ie>+qieeG_b6W8l7boHN-uHD
z%J3rA&Pta<JHO`TCVrIL&V#=_3Y()+)&vKOyAXE=@HHhf*f(-j278(7$hu%R0~!u?
zPymNNw>+Wm#^7;Q+uW;CJZD73S&?N=Fj)V%a1}4acC-XXkjB|7uO9q<?BGx;=x--V
zW%#*$hl868{rX_?rEd=p{y-Vt_H$gn4!%$RQPObo at Nn!NT<HQ=1^d&*N^|b~y3+ri
z at HpYYMG1cx2Y$2=7=EP4eOi(Gxh?q|!+#XH7e?-;lR5o<cNs#V>2oRn at urjPUh(@B
zfEBM@(bs^x$k5d72aNAa=eS2WonvPb?Te-45%yx0$J^KLg%eG4g1gmb(*mw*JoB^e
z9?B1ct>?wgW-rI>rIF2(=Z}=xQ+%$gXes<MEf&wYUq$fzCyN%uO at Ep5wr<C~WO6z;
z4Z*W9?e7=VJVJ(k1=a$qz044Xr^*jkd7 at _-uEe4#b+x at GG7oI7Y+6%MQ8xI^qWM*3
zHCO*{3_1qh;1<T0ZR#0DmErtwf68AS1aJ?v`SuB}HtxO0^TEdz_8WuiA9lH?c-NcU
zFZq(o`CxK(`oSbBN#U{wr~sr`)5028u<)@rhQlqih+79w=O&H^za;bfVIHj{JU}G(
zGk%C*{S<WtH4X1 at iK6+7|EvznuMbukFCv#$TW;*mQ>{ocA1?NHWe6{UQKV<Z>9Q`J
zN-qe~W!`34 at 4Muf+`O6vk`=hH%-)?hLb)`$x1x^V5s98v1S>^4yI=TIN)*r2atEH<
z=I)t10nDmL^xos=2-c5cdAakef;)_E2iUWZMeU&!e*|ARk%F>bEdSB+f5G|buC=Kg
zlVV0H>4Yg7-Vb=PdKAtn6+@|UZylXW?_ZW4_w0&r<g4DT;pa%GRQ`)iz#<6`e5=WC
z`NUh61A(l)9=HYjnU+s%2|o^O&;YrjjvBtY84LYF at yy;m>LXHcWF%d$t@;KQK<bid
zTpn-V9Im^z+Y;l_b?u39JcN)KcSBtl;E8eEO=90)*UhspR~*^*-nu@%MO}`bq+7k+
zWmi1qO&fb;!Qwepk*kU~>8ePB=|M$3-#{;-OQsY(lf4W5Xn;8Nqg6pW+ at pHA4*xsu
z-Nn3|?!KMt#4}q)C%!Qr7Uq$^6}yfo<Bh**6?b^$14j*Si1s=5IOQ+pWph*hKe%&s
z3QnX0z2UDkmA1QBvp589S|9AJ&Z)^e<;KD=dUdkOcJa=H1z=H5nJMX6?8THM9WV~*
zkDp%}(tvQU!rlR0mBq2{n-?aX7qF*hM+2JldJ^+g>NEX`^0KgnhBkSU+vD@{A5!oi
zCx2bR-$}mVn1X+r{1pZNM+E;G^$vy+A`rx042v1)&sgHb?w4>EF_ZGQs5viaLi>M%
zjs6bP)L34ntQ7Om-`?JahbrMA6>n8gOZ8OVlNg=9 at +VsSMfa*eFX7ft&oYKNbSiPu
z5B*iaM4CiBxYNb7Sj_t1qfzh~F1RrYPDH_zUGVrQcnJJLqBRegZQm&P?@{pkUGUyf
z at B>ls2p3!#1uu+(2UUBXVSQ3%Tp!#J1wZP7{}~1MM8V5k at M}@<m!sgHx#0hbf=`Zu
zuW`YDjDnLE+;JJ%{VobR&;^}K(5fhCZx{4Ag6 at ifM!O)!%R_IAf?j(_G)N}Ci+G>-
zTnjf}U-*YNhM7B^Z!}v%&Si-f9y#GH0Y4D4yYWE-VA<e<`Sm#s^^e+%!tNarmO- at I
z at xoS*N$cM2XY+3n?`3^>OkLLzTom+(DtQm=uiuqk`ATl9dHa%GylDeEEYf|mqO&K_
z|5>=nO+0NfMIB91 at 7Z4wxkCp75q>rN5p4QB!N!fbLw`>v(m4EA!qhG;59s at p1`B^>
zutty?K0weHLEfP-_6-%bAPT#YFrA1&{vZR!*nudvIt7%8UcQdTsU|k+ml$mxc5<Om
z<X;>^k*5fIROE(2ktZrRD)Qb at rsD`xk-xpJxX8N;GAi<p5#;di7`~;c1&`sfe2eZz
z&b)v at K+)MA-YAyPWOzZQ%at^-uYdL2U6km)N*u1m%h!1pCU~D^uU)TL4XRbVsX at Pi
z0w^P6>Uw#=RpdcAz=B~-1$S9WC*#3Y9_A&e616PW(4?Lvx_?AcE^M7Ne)ISj2ltyh
zx%U%?d)bkCy%j_BN{%4ZmU$B{sB7rx<kCRS&rHw|RNtDLUY at w`$g#oI at NJX7I&Ib;
zM>E%}!odBayPJ&m<JV~kW3z}i1~?KA-W2N*>hPb1RHo|>&W`zc3EP5YgG=-Ltmt}W
zSr}WAHnxm>kk%l)@Q!6?8%!{xRHbA+l*xrw62^{yB)Aejb>wyH0g%$D{=A+ldPVdF
z;aJhHK3pn+zuUH%=$7n<kU7DpfOmp_by&L*!M}BT&v`*RpCwH`izb)p!e&}71!2_6
z&qu9{>fKILH~Eix+&$kWRlF_uV81IdmX~a2NcWu`H+uKomhgE==AIt2!+;uTs+zQR
zrxsI}9C)BipHxX^MQvX0=n-k3<7qnN)j$%xLwB at zC~-0LeW~L^UL&h3iOj`9y at ats
zzfbEt*;S_io<=WY5n(vkyqeb3T!E&j^0I9xYZqu+fb#$^C%Wfb!F1pt>%oX==`%9q
z_3PIpH6u`q_9rXJ9;?6Ci=V0fq_u%g!toH9Jzw2!jlCz~I*`F83VY!26E7qCZ|Y`(
zBiBf7cGi9-_lXHIESS{&Oh*M8T0$Ir<V2I3USd+f%O|=j3f)TEA~OA1xz at G!th_dn
z==q9DKIeY5o4v at Gx7Eq>BZ`c;sS<7)PahWpwMA<s^eu=NmFpHY9N8f!F(8U=y+=Qx
zlYLWq0ljrkIx8*yeAo=D#r)s2M9q at +UmpL+_|0TyBoDrhw0uW;_so?}mRVVD>$ESk
z?0jKElmGDebxkbA`VX<}%y!OEt$xeIvX;hm7rxk<YuUBTD}Q<LeVQi}r at QEc@x$!(
zckGmHZ1NkHS5OkR_&avP6lRx3ENXUPm9~Eb7xs6sTR*0;sdo&g3)?Eg4_XDf0EcWF
z!#9fS^DYGmFNC{-Uq+NFw1eG5|I!2Hj^Bd2?~gm$s_ at ytH%i}|D3P!9XYEd at hwV<`
zMSplO3FoOHByqZt*w!rR?93XyYSH~B^lr^wfrnH-!jsCL$@PC+qlZuj_Ix}qawr53
zhamyuioP%6(UUv)h}zK-on&_g9ui&)5p13N=z7QX;<eAgr6!5)YbQFGEN|w>y0VTL
zUKWG0?AIvbn7ZH~=-~onK=w5R-DhAfW^Ft)$dRL?@x(Ur6^7Bw<G)5P{7gMCo!>O{
zp8rJf4?3vj(0QYiOL|T`mAyQf%AFLU<Wh73kqMM<5#Yo!@j3}aE~egMZXm|6N`t>9
z#+v9JWAyk$T{yzZJe#uWH3??TOab%;jzfI9Qp87uqZo&{IYz9};V^+Q3H>6+gTr3f
zC*R+=`3=;Q+Ms=mIx6!BL+ze)iZY$#PzNwfM2U^TU+`F?olHT~DDQ`Xo=3u<#N;;G
z+F?y)C%Xdw8gOEv#AGNzRfus|zY}AX0PMk|gTr4+`RnaLg}DFf=rX903StmLUSz&_
zoMDe|bhO!$>=a!F;|m!)7u4Y~?)n$SZS`LWuSOcDvR8on7>a#HT<l|9vH!VB#lC`K
z9}^cFhnn^;#6%7FdhiE4DmKH(Q}!6KY#0$ymqOzvn(q`ti=4zmV)0&ZJ!vF%*?uqJ
zKQNVb_zmQe;ylia^7w$=$RB=-St}yfiVz&<;yRyEzOeYa<@*uKm;PMb9OUbo!}1-*
zrY@@6aPSHq)y?v)3Wu3((o!zp$6XxxX6_$bwBj^<ZqeI&Meo#bRPbyx%pzrtC%BA@
zE<moR$q at EOJCSldt3Bxn?KKz@;$mRaq#YRepq25mEnRBCdMrgzBu%A;hsB(DD)7NL
z6;@fKSct3DIfPnNFJzmM>{te{4vnZfK9JdhM({A%;^MO84`YmGPxU-SP%B_#(ckKk
zTNinDNP=#ej8Y4|r9L*FT6iq=sZnaLc}>OPW!aG_2KUMoDub&T4r$29#@RJmanX at Z
zmg-E2x=o#n5_2Bs{Hj*}Ig_13$cj|<bjXENZN@`6;J`_aemfyPy$MsHU!PnN{Xp(S
ziiz$LnX=;w(I<MalNip<o1AZU4F7zeBVQHgAt4hdF0-9RJj&EsAYPTL{=F)j5$~tC
ztor>pc&x?I&Kd#?9+;AB{uk&MAy}G6a6*iLk&7xqVX%1C0<6-bbsPEk8ud74<DUuH
zX4CyHXY3g6NZ5ruPX*^{j_x;8+%GYfF~CTPLC(Y^>{$kpm$wrbytJIU`m1=@&(+cn
z+KU)I<jGEoYnyNEFKei>+D^e`wbg2 at YK#0%Qr5%EJdWGD3ey7F*0{oXb~`VRqb$a8
zvBROd9$pqE5VS?|yLi1O(X*GvW!7v;U#BW8z at _>pQ89Ky{sk2nM`ifMo~!uE^y|c;
zYMu%TPmBF|{k|5B>?Z3utOl#uIRaE~doyXQgP4uJ?>;BTAWU;@xQ`)7Qd at PV-0URD
z+m+n-&Dz at 5;WVg8<)p{boUa7GTPE(J8xcwtP&TXvRZ)H0SOQPF4kB|&J<ZC{U6b;e
zGh<P{ryGx%^_pga?)sWVvBqv1%1Ft1`bPLBf^+&@*Umdw*)JNKhV8YIOM7dLwB8Dk
zLg{fW?O6KKd;^^sbL2PFQj!M}I<A=|6oi9g#7HU-yM}fsY<^;V^4AyzQ%OS+HS)7&
zSe>MOc)h7D++wZOg6gC8st<n|`$af<BE*8g!|IyWG`1b9X0j$S%3gSHzJ1u0R3~uj
zca~HQxWc7QM(VawTjN;jLyA%-!>^D!qH{mxhMg{86Uy*qw`!jgZFlOuw-0Y4x%T0$
z0@?>XesohWl03XYY%tfVD!PiH5|midFsa!a0>OlNzRc1iE?*i|x>e&v_;ulo)+>tW
z)~{~PJi^lRPixW|kt5D-h>>UvsSUY1sKAf3hl<x09zdw|r|Kr=9rYpGyz<B8Zwo(M
zD8F_b`hye5)k+@|T%I=a)Lmcq-xC$w2D(shO}TPY)2Owpqx3XXq4rE4Eq!-!dTbd<
zAIzg3Zbsc79=;)VuL?hucdrhw`d{3=dwf;J_5YnHXsqH1UZeFAHPv9f1eKOlsfmE>
z=!xPT6(uMjC;~#FXuSlJAji{FX=_{CS{v)7)JvtUTD)NZC1_hkZ56dj)P7|jqk^^~
zUU}Z1HM7szCkcG*?|GhoetEs%%$`}ZW at gP=Yu2o}<-(oW<8$FBvoGYr%d-2&!avQ0
zJF}<6!V3wDA5>m$4w3pONPT$<FIe3K%fyENRyz@><*^Bpv^Amj@`|&|!>QDn;c+LE
z-CrXtHUZbHZM3L}YG#uu_D at n$rfGK>2SJL$k4%kVzU$4E1qhiWxh8mM{LCri&zm|C
zk}+#c3?w?hm{t-IfqQTHR9qB`(6RbEI{4-Yt#(QoX_lT=4OqcE?LoSS3Hl7oxYB5X
z-VjaDJE?*U2qN4BeFk%LdE at -7+@|ShiUyTBS>2a8l_pBtg}>BxN1EP{T9%9^=_;i-
zyyPKqsg#K<9 at ToZ#h*$12==G!)XMOGrHU5ioa>9>+aRk9@=(Lzs2!V?|3P_p7Mq_D
zJsvgeF at GIz^Vg>1n6)+yVV=qxDVm?|1*LL+!FRJ)+Gi{1q_5mOw);gVcZE~k?nm-7
z;qJS{FJEP1oxPL-!si!>96cJ-6yiSG5u+n~>w!Fj7q8BT-(%;96M|*gH)7$x5Jp}d
zzrv>O31HT99k<$}=$r<li~3+(d0uDwjw=rrsb=PXLpO>`YQ(f<#;?Y?I9BB6h`7~w
zH#`PTml86T{m8uTeX}euu&d)+vu)v9{E$R%ns0e at 2fke!{_0QS+X->Logg-Kj-^fT
z?P~cL<E(338=0x$Q&3vmST?CHarN@%q4>BL)APo}deYt)(6R9E5u3hP_ at _R;Pp-Y(
z5_@!XqRp<wcU()s)0W4k9rUB~yL1I9`D+p_J0rKoyNR|BshbW~v^_ at v9!|8${xd$_
zKF`M at C(Z+QiNR1W9g0W$TB`Bzo&wDb`B8^73X9vz!;2IxbA;%CXlaKtRAZ*ykN;7>
zyidnQ;iX}%AiYQX+aB^@K}y<t5UR~++FRByCf+8C*}pNI*m&dQD|@8Xy{J&WvU^x8
zc0*pyvKuuJMf2&t<gMRP@?*VUpXs+9ZmjGRz=sp8LOnXcr0ot|(P0xUjil;tuja!K
z#lrW-!apNy<C!vPVrT<HuZ7e=JJ~zKU2S6$8%WNzTCf<3;&1DaiYpBgBVMzKzF4r-
z)Ld}Ch#I$xo4zKS*j(4k!k?3zYrm8C=)Ld14}M-dIR4FoPOr6uaE|svO00+4FeL8-
zVvVPg1q1UWYLGxGN_K)9Gz}~br~O$qIkloh!_eRt#Wbs>=9xfXZ7}{Y8 at r(V;DcS=
zi7V3(6kfMbe6zH06ykDs2B2Y-Z7j7meC|G=GGkE&ehiXB0K>(}veq3m1`*-Lpc=*?
z^LFZDcQ4JDNH!KxGBbuZ!@bydBzCM~38Z?plU$+a{a>*%DJ(yDk8-)i|I^~*%LIuw
z?S0TvK`Jbe$!4PEpIvEoB7V`j)G8;Rvugj({G!@zkQ;Y;I%L_pd!+GkGShEcxnqAB
z{<>FX%@z9A190%4pk~Cuhv#+?Ez2HCIJV|o$S?nab^kH=c`f7i=9iPSTTA?6TR|BH
zxaWvjjvEG2Uv7eBjx-kcEc4|HQYdQ*SVsI*8snQ1rNTEnEPCSaH_10on&I-c#(<yS
z>&Ac_-{@kl9N+9`4Az5hU|WpRh--2zW8AJ at 4WAS*B620D|E7x=Cr1`(;%<XLRZh1#
zR{EW|yAM|Sp~V-n(l)A%SgGeeropdvzu at K@b_Ji-Tr$HBJrF(p3TPrd{m#RtrxDO_
znWDX(Znx;Q;e9F*J-sUw$uE}vT##N*-{2wJh#UNB_Fx#!&mYXM-}V2Fe`EW8{&zhL
z|E~5_j;+aQxop2b!N32$C(pm_FXqFy5bnXhd8RE1 at A(%@np&oHvsWAU5i!07B3pn?
zy*zk*U8+O2&7?nkve8x?>5G!H&xu_KX(H3|ZV7aP4bBxdSpFv+0%Q^0*;A*YR9oI1
z9i+#_jVBCiif#D}$J&czcKF*~ZK at E52eI|%#~l-lmNo%rGr&c%$EuR)1Elk8akpHn
zdi=+shR<-?^;4eID_VHGT)iv%M0kN<U~mSLruEp(m376Rb8`%ja0+kgGaHu at i;oOi
zmKBGeL-KjUHzup!YO-TtmEzoTR`mKevNvV}X2jFvnl$I=Y15l7pgGlRn=bTYaWe at B
zz}AVyLsOrHFHnor(!m|_S$rKfYW}PWGBtlTDe;q~<y<DSHF2Dg>H7GnV=aCf@%yaI
zuCrmjrfAO5lg3Y-<?G12;4&i at GtY#Y2J at q%M^l7$nI*ChyCI%&-zFDke1>lrx0~0+
z=8I-KR%KrlZ2r7d%Z4pk)0lJg^hu3-x-OwfKg*4m7L`4VJk8f^F{$Y_YjUD(7PTMT
zk<~^sCm+q%^qZJy(*kt%Z6d=8)h(J2o~|8Kr=6m`6JNp at 4Ka%v at ptn;Tz6~2y|m|8
zsv?}APQ<-4+3aarC6k&t6(cW<5T5osNih0HmVtH=Uc>*Gb`Q`6i3d+BVoF|P?myOL
zF~>|>j%Q9R<W;emmeWvMn+TYLK;()hQRPPEckXuV6cfU6aC<{uMTzgdX&`HGilmmh
zQCp+CDeM}UQ at 4Zv^Dc)CFQvQ&XG1VI&&P2!fEs7(hzZ}OOjLLG)6od^(err;e}izY
ze{6g*`f8twgwkZMrhvpl2X};j5@|I$X+Mfv`*cLbHsLN(Mys%BL5`@lG4!$v9Z?q;
zQFnx<<({URfg4Q+;8e2?(?-YK{M8Ze4>Z+r6ipqPlkcV}P_HJk6e9VS&FrkJaFC5^
zW;EsLha7Xe`s?A%>Ua%2HY{eRNAw%q(S4JR4-p+t6CH1%3Zi4Qk2w20yMJQZagw`_
zm-}Pum;oA-2B{aA0?spaVje-$O}Ui|ccBVWkZE-n=g`OW^_cMd*F=d&Ei$}Qy-f5_
zqxfw6|3UiZiZUT3pUpoqk5*`Z7T1^PQ-8|96yzR{x7Dup2{N;G*5fL+E0Mf4!a=4E
z%i_YTqOkcyz|x=`w)+dnq2$mXcflxgQTRJCbj;!5K<Mh75_7wCVGuG>^RV11+C8MP
z=8QY~%u&56aqa6-2G8FI2^0iF)zHvz++$blP!oOXPYvZp+uPl}DkQ9P at g%rcxAj}(
z8(QM4AEfRv`0y;10Kk01WYV9wF53^ZrU4!;Q482$D$n+fR&<c at H&cm)l6X<bJx1uM
zC;qp$#mNsJ1iJ8<L$M#|L|Jg!GQrASt4D#p?fR|S<{!GDpIi;l7<JW8CR(>*%B>m7
zjK{##tTt9kFHlD1!^4QuNs(#bPg1!VV&U1zK`W?pO`<KsnP@#cBRbTjcdJid!WIKe
zM_VC#)ADL at JoQn13X3jTQQAE)n$OjzFV(txV|{&kQl(ZD>#P3<%f2pg>_7B0+IEte
zp|{(fj@|1Ay<1oP?p3>3=U;<-Y~+%Vs~^J$)YdWk!TQw4AS(q~)1Oqml6tn8QrFU?
zR_5zaif7lQPo#{?XfM}oJxv)estoSQSuMJjh0orm*(zDo0cA+yKJ}>&>jphtSN%>R
zBNHoL^3tof9g$jzMoP7lQkSVK4>IoBoTLs$ei{CdljeFpe70yYBU$}f<H3{W*QJkU
zDOt;^*xAaL9>u~@Cwb|hqwl2r>d%^9u^hGoVXVpC{T0nd#f^0>PnIVKeHrd-kQfk&
zHjQnPI_piO^d=ykZBgCbc!XX`3o;{JfiD;`KEPrHJ|kYN?rwTnY>{IJ^?A9i;sxpZ
zE82yRB7b9&;r1;{I2IEB at 5I&7^<VDpFkPGU?4-oh6^TKfXSI!D1nZEbT-_0Lj)J{K
zmKv>Y==yKRj`CcfJDezOT0h+HbP9KRtrQk8oG(3!M0AG7a6pJjXk>2{+#~BQI3sm_
z;r+2UR!BVch_2zIG96Ysp5W0hH)TmTg}*i3c(d_$tyTyr8sBBDk&}zhue0<`?Rl62
z`^MKNwHv}2Kqr#2xWP(V9UdbvE$`heM&nxa+ueMD?Rpyaeg#<iloAoRBeBbHR$5PI
z3^}EoJ9>^StxKKG0uT|Y(L{1XieFr;OC76)JmOhC)Iv+=@JjHQjwn^j>Bn;YA|0kH
z>_e=0Kcb-im`!TT^?H}|6v9=dT~Q=O!=SD&LS|@IZAoXX>*LPaQY$M}OWC!QU2A1`
zU#n6 at Uu_0tuE_g{xQ4?IVQI00=`L9w5l4Cr28RqqNrz|s#?{Pvh-=pbpUv882KJ+5
z2 at y)P{g{zGdq4mA`A>8~8ysDw7H5Y2VGm|sV`=BZY>Fdd$cn{&_O&b=Y0bAQ0$0n`
z7No1f!HP?DKCD&&edWE3EPEQ<R6S2W7OhzQTI1lTydxpJ6T1~EkDZVh=;bDMXQ&C)
zuQk2maxs(HQIggy#OR_yuZKgdk at q-ZMyRc^U_T^a!)1imjR7&d8*dffZsGM=BGm19
z)UODL^mRmy9Q-eFa@)7ev~(l7y0;<65E^o=&bL`Mjytd!#Bt<c4Hz`LDt%JKmbGQ6
zQ=rvJxQeKjE`iMOZA at 8P2?N56wIwiuNJvvXV^En6eR~Em**c3FIsQk!4tPZ>Zd3BL
zjnyo_{-2kxwe2zadXo>6uZ^<#BKb0fT5XDSAS+<mKN=&|Fc{NU)vqPm(x}($J-K;8
zE?x`9*`rMNZkBErQ7oGfc}m-0y at ruQ|HW)iga+1>4dq4K*-fdFpyQ3EmJ$OYc<Ll*
zNu1G=_d^~1Dzk?PiPU*@ccLvp<+FqNPg!L*iK{%fFWU`npGIXOZodMDhb(+{?Vq9O
zLxnOk<i{4hIvh@%Jhz&Dgm>O7J5(EY<ruCMI7&+3d)*~0?B^ve`=KhMrX9!CNRgCl
ziYo!neuvcgrX{?F$iCkP+p*8i6Dr4gmA?k}62)R`X?W9LmMx&PvxkOi+77{9#@3DS
z$5c5ymz=#}wC3__!Au7xnxXuP4RlfXj#&83SojyQ at MW>^^Mw7lWAmBlJqInusAuIp
zWjQ4_r)jmDHJR4@^94_`jnev=$S6~{$YN|Jw=7NlhULGcHITA_Luwdacnuzq2%6dW
zFR~{d+!2e>RD~=>=ll-v;W3rW8;RNzIW)Ze8_rS`;+&;uS*86S{FUftD~YTIsmv<7
z5Oxcdmyv#8!UZ#8BMOYO{~h*KO8+)$ZW9 at e;Zau3*ow(AX~?!JIcS438m}<*LFW4O
z0rlz2$TU^9+GH#^2EmtAFMK7;*tmV={q9mv-^gA(xjsG3?8Rhtw<dLoV_z_PQ4W-n
zUzokPcio`ZMEz#W+d`x9$*UKQNQD at Ue@J4JdZY38?17UyLzJjU<Js(Wp>a(;jKy7S
z$Vyg}hrju`XhaA*aewSYSCov!rHRZ{5<bmQyqTIe7SA`aWb1NW=0qCD)g14K7Z at ob
zBFR!bJhG4D_F^en3+%; at rM8?YC3DRHA-AKfS;ah>?31xvVGorIg6Zj9{3u~Ovf
zTa3g*&CZY6iGLIE*&v#;6YmrzXD2ETJ2R~y?5?%Jp!dV;NM1zc$ixfT{N^UhiMFw7
z at 0=$@ow%_eCW4f5E-w#1z6JE~YcoLJ=>V&^@!w|buZI)pQ?;T&MF=kYb(9D8bTr=E
z8A6 at Pa^r7Z_3A{MRBrYiDUL`(?o5|tzil&z)r~ljpl9A5*SV1b`rb#OMqlwo1LKmX
zuOFo6Tb-tgl3LYZc&>#1qw%?sa}%+#`FsI0<{OVeLXQg)+JHZTWE at gDW#EUHru)19
zo@<@F0k({6>UB@)SvFR80UcgJ&PZ{c!j7dVd}%B^lCYyoUO&~P{$>y3*p4E(SmpC%
zkVbxEiVFEeOZ^mHPiiKSz8E=Y&e~C)%*?6^QaDXgv&y9nV3se?NJpu=TfV at RwG?V<
zHwoK+c*L8B2pIgo$5Dhzwn~fFE at DTluw8_9B72=>*K!ddT&!=Aojvzb25s7b7o at c@
zn#v_p7X@$*d&??|!h<J#!JZVGDqbwNEAucmrWuhA<kK_HOE<D}1wp7}3Fn`tuwo|d
z4~4wtiORwqXp#KMVrZLXsMZ<dMDq*G5$(JxxYzrdo5ZAS$>QGBycIHq*qoI=mXGY^
z^rpw-C<GUT+1-hqFDFu|q at pu?!_+-SyNqFTCoyf%w#qNV(|@LdM0D+4YljVT^>z8f
z+g;|GSY})WmU%ZaYfh}pHQC!OGh+Zx0cnkvjhbvLn^~Ex{z%)2{5+g{PiYp~Fi34z
z5&jl>2I=i8+B#C5O?xH>eZ<@1oYO|zC2ruYD}B%v%~$T8TDxTJ-q}mz^@D92fwa!D
zZF}K1CPpw?u2UM%3~yH at Qy*uy1=ewNXZMaSz==4PR(BMwQ)|QSAIGTs<xf?yII5-x
z!cTzoLec#r*(zfwFrt?dCMDK((9#1tmpOkLH>&o(5~Dp at 53uw^>44e98C-Tf@{pIO
zT>cLeXLc-$x#!R?xxGX|>I(@NPW`Qd>SIfIkO`(D=c{$8k2sVcr2c|2t{n-hd6D)7
zkhem at qN3x{M|H70HMXLJ|97g`_(ENJE9$pXh4v7v0dz%Ox}LOBgE(^qevJ<kW1jo)
zm_+GzUAnBNuH}hh>a~Q}H-bS+gC(DGX8c7Jw1%ivb=7~L`O6Oz=e`njj<ji8=g3n1
z=E^(=*5C&0KNF`4Ce}Wm(79S)FVzU_j4srxjx%*ux5CmX^~1#26)G9fr&K+a`WWN&
z>>#2YAm^@Bo1P`GLa~z)hb&E8_j9YuNeDzp!gExMZIdlel*Pspt53jPRc{t6U+`QQ
zY_n4R)Im`l-FK>-??mM+w=(#8UgfCJ?sm;Hl- at bYnm%&y#=+}JA^X6syP2JC3iJJt
zpL!2OB7OoF()8^rh+3IF5vGmVgW!HjU9URf9I2!)2BM|HE_j?wQdqP|owUsSxlvs^
zvx|Y)1V4FgjUi#@TV9K-spx!*o1?Aq(HK_#e9Jgua_3ui=OcH%B_l-`oo`tV-E-$#
zzD-L0e9NtT(baaoWxMXNP7a)U_UBe~w8BLkgOc&*Q5Y-ic5&GUY=A|Tol3)HZ3Yle
zCS!>`rxsT0Q>S5??xGmB`|BJ^J at 5<w9DLC!73V%FmFSOFMbQIW8WKRXVD%-D3=3He
zn>p7@>@bSUzw$>uzm&o<K5Tk8SM}rA$p>gH|GwKx;T=j<of2(3fHQl(^)Pba%U=_=
z0AYib_7cU`r>H&tH<tb;${C<x!PoxeeCcb$k(QfT;t3$usg!0)j}AJ-Po=n;?-J$J
zp3!aikUhc9-PPGcOxM=XLHO|ONI`V&1b-vA^T!IF|6z`LYr-e_FuOYmjE<KKu=3pj
zkNEKtSN>1)c|Q(Qe5iaoL~<*`fToRfTVduC3QmZe7Do_x1jA(Tmu8bf!ATAEY<Q4M
zYdT9qbWG?O8yvv49$=X!7(4*sj_O1t`*Xqhkk#{ZO=dqHAFB49wj`T<T(i^s`HzpZ
z;K$<X<En*(x4<SU!6v#^`E9Vo0Lsj+k~NT;%>a2&g)@cbNS at 3T+M5sq{Z_UySf?jg
z&^;9A>Gb1kI9kiGi8{97lu{6vaWi-+po0|knq=YMOUmTl*vRtQ+u>OCA at eTAk&8-`
zske+}wSmPd$`mGi=LYJ<l34m;46Yig7Cp9iRe6%SIXmlKm1T9)`Lvvwc99M_Sj|S(
z^m#@BzYb>4xs*JM37b2oU_N?nx-u`LKcvt$m5OR8#+dwOKYuX$F3OUs>uG8sN7jxv
zK+-+k^tmzPMd0Y($Ln{y_oOrYi?}`7Gmc7O%ec2|YJVWR2I^y~WUI(({v%9PfA>je
zcmsJwJYq1ZcoT}SGpW{xTar5<w+T-63~CaVLrHIYWKaKdK72_m{7b?y4IMu}#3Aj|
zQhyT@!9SA=_=h!PE|{s>Ru{}Po=Wf=7EH8W1%>$B#eeD?w~b80jXM$pw`}=hYu?`=
zy5)<l64zaBPJ^9Cal(W<`OfcmZFFM?PJ<!OeNFevd>lT6gy1RvId{t}B}#va-uL at j
zeeZuaQLP<K971ijl+2Ky`+RdOU!v7|va|o(Sl+kOmUp`4O|+e9#E$Zx>GRk6{MzY9
z*~iB6-%0-Le#Fn$MzdA-6&F3OO=vLx=zjd_HkF!ipNx#G>9{ZIm}WCmFh_A|V&G8N
zYBW#2q;P!Gi at _kgC7+sMBTGeo1!(pvb`e%g>CS(|t2-ELqVg}|2TX!Jmgts10#CC;
zZRY#Ht|#>cjm{rB8{^#9Z4{}o(UEHnbPsRq(R{Ib0O&jFl7KnQbJ<CWo!$$UywQ*S
zT5cTV^(aR3j?zhqv45N7teqv35<AQ4S;CWLO{*~{f|jl?b!c{=EQaOSMwo177hxEj
zyBy?CVf(B|T=yDk<HN*B*dgcI`>v&U^@&p7UV<sA%><d*JINmdLnCQaW at TdFjwUZH
zR~5k@^?=I;Jip)EWbr!ga+x1w25j?@O_E!|M2m0_p%?71)@VzB;N_`{AhVt99}^Sb
z0Bnfw<iaEMe*Di2_<;L|yYGwUN0|Xj^!@An_dYlUyKl&UzrnTOe(!Y+^%(F6;F&*T
z2l)DQ5CMsX)38ICyj?nrroa%|w%GDyKW;8c3_QH9dM$oWaTpm(7mJI+4cEh6M-wN%
zMrOcns>g5h<xZj8?w{qqQ~JIx|Gf?HHb-&#<H>$j#@*6QzX07UT#D=ri_Cy$6n==5
zoV_m26R&0OU=*W#v5I;%d$>WZ?O>AMU&>_}mBbDlTY=#>5KAaLIc3(MMU)a at V1C|`
z{qvtRWkF9`1aA)NP2kk7Enm{f%d8s*T(KM_z_mR){UIoR`nwz7bp3)&d&1NUPSC=e
zBy0JooiwefDSEhau)cN}G${o#Ql%J{kJ_<lnafwZ=meo9K^(`c2ct?Y-{U8o3tY_(
zhfPY&*1;y1uO^pov89jN;qXbR%lg9m(9{d8+!H3HPAp9CtSOyTdBPy!w3^mX(`bK#
zs92ZU7~A7Mk0s}rO2rLK1X^|A)<Jq2L(^VV-E<}shhWgEVAyEHH!=5qP|J%f-?ILg
zeCe~ne=6MU!-+wy<~!H#XyWucgI{^tTbp(#kns_7maQTlsl1 at SZo<-3oh0QkvD8PE
z|0v78N~z{|`mV<GT^`<_Z>=WXu9fu(@WIpbG!WhI{P#!RZ&gjS-nbiJx`$&qitt$a
z-T_EiNJLgCht`9n#g1PH$7zzmBCW~=i5i$_Jpd#`Z{@J~4CL-o?%B%SGoOf&XuS{S
zuzZ;ok<qfZESs%LD3{hrT9*NX*};f%W<R?(t!+0+WoFoMe1=0%_*xj~@8Z5i97Dq4
z{OB+IX&VxoMJ$m2M=OS^lhWRO9j#0Tiqvdj_v=I-HmZ22W)S3-tI8v&|IBqzp{m7r
z!P=Z(;@qGZA$rb(Ec76gb08fN$nQPKd=Ju)1JRnlVM%+C86ISG4x~8(ne0Kd-mkjU
z<UkrCkdYpw%7fTL*R~>C6M^jOK}rpz)on0|8dV-aeGVl>optIbXt*v;ouUZpMGv*o
zLv_WWx)dn_E%Z<eErOLR{YE9)hoG+aQ1d-hdmPF>1U11!&G1moaVYx`)OS79Xb;s8
zhq4brm3gQt4^<O~vJXLh*y{PjLzTy&>_bq0^-$}?#|Uas9Lhcfb*G0~>7lxe>per+
zhoG80)C{FMXFQ9#`oI}~zE2z-Pi*js$6BJ_k%g_stoeSo-3mY8AfG4=7aNV=F9$KJ
z at Wdul8)8!<XD`#1g~G03(G-hT?)IuACK6%<SPPt^nE1r!t6o{@Eh_TY>9OxYTuAOK
z$5x3lqSF~Y$R)KbwK$)!?sjio%;Uw02k*r=DXMA3ar!0Wv8bw=Br|?3Ql^USe)D7f
z`e-Xv__!PJxg!twG^@h=pxqv|o10KTjQsrnsBPL1{?^lXb$C|-h<B1QZa2M)eX9cv
zW#OLthy;iM08;K7_|+fo4b`hly-m})h|=#$&nqS<e4F&>*T<Wf at m(Zz{F*F+r$&NB
zyV#%r`Ao_fRD5KOB1ikkW*>?D%IM)E+kIq%BIo<a4j(yL^<G5<^v5PR)!DTrA6Epd
z#g!?*A8_SS+|YbnO%yjKAJ-7Y&CbU)M{zgh<Jv8b3N9od;%(p;b8OGL+hmJM#gb_H
zmPAv;d^b}W#hbP!-qbh^T9ilJp&(IRK1%IfmrqtPN;a!N*a(-Q=Jls$Do9k7k5Xat
zh|;eOB&5~k!BswwrQKXHhCuj(rq40m)^-3pn{T_FiY9$y7d466t{_qj-pp^1dDQqr
z at T$Xn;`B!yZc>n_n|+j$+hgGcvG774p2X&&MT7xWDf&~kl~FkLsDEaV&L>XI>C!JS
zVFW|Cw0}NtnGdVR>wwYilSRaZKf8*VG2&-ZKr_V7x-97$;?>MjzSX=^NNv+BS_j&2
zoaMXS9-vct73p$9jIw;}XY~0-TfX<hLp{D3K7K|X-$LO_`1JWceSSW at L+NX;boE*2
z(--E`S1SEk(&f{x72&AyfNgN14_>dTxp97eJA#Q{Wq}DO<e3a0CdWpCVlPR*c6H4l
zS__HmR6x3UKJke`yp3t)A-N=n`_B19*-BIte=0Y~EUb~_i)6xp7XiMX9e&%_3sz9g
zm|OC+p^&P##&`tj`3o#>|4-QFoVwYVWl~}nP2Pa2^nFLxBUY+_Dk8wAAM5;^{BJoC
zN*}FXn4;as*ZBAuKHl7{q&N8Z`959?vC7x%;}`n)6+XV*$FKD9t9*Qik6))>Dje{u
zKk7JILB&nZ$IXc1=H=t&M{x`CaSIiUM9ispVOrrK5XNEITclt7Zd`u5NV6{3%C%&J
zN+-TZ-%uv7_!08#paOj43?CUNvcX5*#4q(<slrrh=u0JTT at +UWjQ)r#RS>W$AEhic
z`DB%=<T0`2$@yf}K*`NfGORO3wV6kRP|eT7s$yuVM=KT(2*VklYaYz at b+4;d5G$9)
z^gS;YZE&}iO#)E~rhsIjoVtq;WqjikcwXdPNtQ at +bqPCvG$~Y&vfuSls>ixmctb2)
z1UmfzBFy>|czF~?W0i};sYxYq`mNG0Fhe64!VR(TWFOY0x#g;64H3FLcQn6Y*KDbS
zM=NS*kJQylePb9&Hz~e>`0x=A)NDX+hj;t$b`gQS6~FYEq=1yELz(9K$PORbrN~Qs
zq*RR{i)ec|mPiwQw1xWGX`7*hYHbKZ38mVKrE}V)U1(nwX at qFT?G@!h at v^iUeKgzZ
zObkHc5dnptUq&Jki-?e-Qdy=xZW1X;5C`ZlNSks)W6;s0O-h_A)qyhW0D at HMn{=~u
z49Z3QskDXs;tMaKtG9uq#q^1oC*p{@Bgd5{T2~AZf_u!!z+H at Q;YjV~UMVe{y2qK3
zwmQF>>o=W8`zPC**SKHBJni$lh;^Ld<?<X0%?8unk=OZlXFS2|R5p(6FxiIYf-d2X
zM_kZChRkZ8z;N~nIAmo~$=pE04K_8ZRH><Glx`uiJ9q=qAv-%?GcsKifUF at xHq;@T
z0kQ at mtMdBZ7^<LhO*=&Rj?d#G-$j!#pPT892;~?<`G~{th*E at jv`1`ASAh7hITFr<
z>aNx9b?DUHGFy_F+uHew(9d at 09iB&&l7zxD41JuKA3;Lb{#V&`4%(4L^W5{#sk=22
zBr|t+ at DriE$)R0I6fgTKB`LY;h4xDt at 6b+gXt$bY&pZdIyKTJ4v~-a-!n(*|T}KpH
zl_IPQdtu#>!@5 at vtIKqE=+R-aYrGCJk5n43PiM!s;jy>h-DA%5gr*{*w?=>76_!Ye
z1J at a7FOKUHpBu-`<?%L8d*P=!<-(M)r<T<m%Gbb8`J+9~GJX2zoLhzpTHI)n at s2ns
zSH=$cG7LxR?!d~pdon-1j4D^gY+pu=D?<ROmIgsn#?W464AsE`YsW1-I_leDI8t}d
z5GwZ~u`gpb`B6`gnjymT(f*Oxo6R;#wJab*;z4J_l3I%J;=jDznY^9$&@p`iH?05=
zvdG4D_KoU=r(q?(`R8C$Et(i=$|VCh_696()U5O=3rOJ&=Xv@}wXE{73oZ7SH at Vm@
zeiDCn_EcivZ43FFlxhk2!AQV;PgZ8wXN5^S54tqxe|7u&S^R#!=|4O~>)xYX8k^tR
zxd2<c{*NrcP_^_A)~2kryoz2X4Mr1685S62VJM&o+;8TzwO+P1m9GJkCB_mS3oj=K
z4_5J`Dh9%lxoNZjQsYYMs-<bKDG}m(%-V}-+Hyk{XQQ3zSl7jOlf`v$Z%rF0Uv7Qx
zb{i;Vk(L)K$1yo%zvr}*M^@ES(@u8CP?}EDHdv*4Y1&`rG|e0Nnvtnc)6R3q(3nos
zHXAZGtthPAwmE#y<?)fPm!@4{D0^z!c8}O;$T$hl%W0VnjC@{7=EKTJ`#gSnXxbGH
zy~C5!v>k>%j`oq9fa{n8Xg9BELx*;ym7CMFUA at rWn3L%XU2Qk3X-hP`XC7JSuy(06
zXj&O8g~WXy9pu>P)EriqDXwW{vE(%^R-EDKThq$&L3WEIfG~26f%f9KpXNAjEC8PN
zmCDnXrj;=i)3lQf=OZ<Mr*fLM!6M at w@up7hnHHRvFJqIMw%L^tY1;X&jLB9;1OH3Y
z3Qr;Z4#}1AFM7<kW0RV81^LmmY=JdIc}*+hF0W}rmzvYGEA`!nrj-q6x~5A25L=dZ
zUz&EELm;iCznG at oKnf4U_t3OO;NiXa9-3COhfQhP_Zpe0tPNMcjz?cdtZFFaIeP-V
zhn}79;`91dmVXcZ>RaOVtm#*o{ia`K_e=9O at M~??48bc`uWozj*t$8RN~C0M1HtxU
zF}5Xy|9C|!g8nkt^f^7Y-n=v|xAA9f_%t8v14*>%ew`roTK8gWUz&ADO`<gN(B`_-
z=V2E{A#<pw+!{-EDK8}1dS#go?%UeU51#&FV|Fs}`SHl3$ayBc7u24?F!uqgo$JFV
zS1S*Lw2H&^ssS!Bh+}B{;&N^0C%b|d_*lR7i%v`p%81pUrU|7{81-M8JqJ*?j;9gY
z_&TlGX5_rTNgN}W_1`Ym+=Qu=vDgT<GDjdYB9Oa0$WRYbl>-SPkn221k%9O#uo0rt
z2x`2CGUZ1fhpKu6rTMni=tvJ`ninYZKSWTPsT<VJ9;#gtK&^=5S{OmCo$6ZG?4iu}
z5#gF2K|ST68a&j3IIbBH)NLNB#zVEop+-kgS9z#%4|P)<sw#py!=P?9)5%zGE4#;r
zlTLfC65sl>OuaU&?M*)0^`s4JI|zx6N<3vIP<O<)H+sJz*Enqqf5jFW&Hv2&Xq%&B
zIT$_VFpFKvvoX99fJnDw7qJu&t%HmIQ!m4&V$c0wGxlUYNlwV^*pss+d@`jp_H5+R
zqe=6vMyFCvR-2~%_XIW;Wbev<uhR<qfe5Wnzf#}2N7R4+O3UhZ<-gz3_dEIT1N40$
zM!tu?lcPY{<7A_`@-O7U<?Jc>^sjB;`wIBbr_cY8?+f$rKU4a5=pCQFm(Ee0mCwJI
z+Vey{|LwwmY99Vx<=4?jpZ^Ng=fZscLzLeR!Mgh0ulz^k;g=}=`aHgmd6hDIME?6E
z?UcA5Rsuhc1iO-Fb+|+_!1E1wA?XtJ44a`!ZHM^V;Sp2B`hL7jADLZ37dX9U`L$zm
zj^%IB7+8SA-n;Z at -kTgp^N3*WRp`8ai|W%E4mNy#zk04hRUXrA1(?{Ob)|NjMD5Xr
zqz}Z<nAE-MGumQoi^@3#Sj<Mq{)XNxtPjoMw#{1|K55Cq_EqNb4JgDX*zEiCP9Z+6
z3#<)Ka`-wV(s7#m88P)+A3k<L0lfs9eU{$ri4O!}vBTHZ3!k&l4By3t_yn8%M<4h&
z5E1_2BBNh>FMJCv27K>_dlupoZ1&}~ebsMuINtDWg1`PgDc;Z{vme`2yEQ1|9DnWO
z>a$t?$`qh+{M8P(_oSEj<GBm}cm5bwh)=wfeb=@%`Tg`(KgS<)9KOx+$9ogw%`}rZ
zJG2)*cV1(#!`E!oj>)8V?->97st})Gvs-X^XwUYFKi-fCr-nBaFxzmZMuzE>0!-g)
z$d022a`L47w_5&|u3q(t at z;O?EatPxu134|tdH@(!`IOZ-%5)yetm300lfs9t?mP#
z>R0UAS5w%&(Y}4N3NZ1M>!CckT+qHHlHF)0XfJ(pcwzqX>~Feb`6VxNEPqS8)jr-|
zF?o6K{DSrfHoIdledGJz;cM=NZ@$I2{x8HQ*zD9k^o{8AhGccq{a=8I{(nkpA=0PT
z|1SR~=(}TK{+evH%O9D%>C8%mC%0(NEemY=<pi*^S#9qjeojEb-Tvm>*3MR7o`B(g
zv$GU(OZd0j5`K`LC#1MX#@b5$?dHi2SN&BChnr;~i8<?nqp*BN*2OMd{}bLoo!ySO
zC$s%C`S9BB=ff|?!jHwmx5mQrV|g!*g|Cf;&x?gGj^%BO#ZQlg&yIz+i-p(4^1d4j
zPl>^t5(|Gj26K2U{@=0q9b at r{T>P@^zPb2i*{x&o$HwBfCqC~E%iSMjmj`jLrQ5FD
z$!WfKdGugX;ZZ;yJqWZmaENZ;E3a$$oCANaVwMr&z~4!PoIiv|pLi=uYXWR1KY+RQ
z#LB#z>f-VsrDKCR43}dFISkk2F|euod@|V`^oAkGuL4{QOOMbl(Hx2gv9%nEJ at P0<
zgMwVc8=^`~1_kO<9;u5Pgo0}3Q2Z%}A`9F3cFX_;xmqNr9?Ko`2;;4ALhU{N_X<E5
z+1j4N_;QXim*p_}H=}P865P%0{6u(d+L3w0DIf2Ex>o=(l;6#v)O#zglK$!M+mt_<
zF&9&Was^RTb)|kHH~+mIg3H&EoerLKe;~o5RE}ioHkaQ<5JL&Bb)@8+`*(EdD}8Th
zkzAsHKL(a40i`@MO(%nnRh<@>Dd%zun2T1%b~0_GRqQMF?>5$+%Vi?D at yD(Z`aOGT
zv-2qg{l?kj`?G&h*!DSD`bjLDW%W$#r1|#!K067sI<(}!?GA_O`R})cPsf;i`YwWh
zF8|%E^kQm7c^uEpG}>+TC!HsK?ChZt^0A7|?E&r1b9C~6jt{W3i^-f9FrQiac%bFa
zkH?0?)5ZpeX3*$VCurPAyn=c~^D$Qm&FP*RuX?m}&|axyh)G?{2=&z&ny-$rLw0Z<
zcs>s2I6Uozcoy>M at vIx0YnJh2_NO$hus&*6wZqd~h)3P!@hphp5mffG*gVs<OL#tL
zu<@=Y->BT9?vwHuummbBdn=frKtBH;T>gewe&p9WX#ZILhU@`-=fA||hnNvjb1$U7
zeRhr#%v|(vsXAi5=!{`H&-#tiN8!~zR2nw=P)T^9g*dS~UI8ZVXIeyD1bBt|ero84
zw(i at az;B|!tx+HslY_Z8O8TWdbXSdwYj^e;TWWf1PDD5E6r|abP2&bF&;El3nf%1A
z#<Xw2>%Higa!)=ca=WfM1(i%+z|~%da)2i}C=8Zt*ix7Lwz?_Xha7R`5xeA|ceumL
z-P0Fjw!_7<WagBh?WsiDXY|+LR|h}!VQr#x>ttrcz>@kw|2Z*pR5=Dgzkw{-Tr&mn
zy_zc)<a9{N)Zl34g=a}BwyWSoP!oMy4_95q9%y`eEd|FwojwR2VJ at z}Yb3cG84O>s
z{2UBSEeVR3bzke at QqM9U;?CWQ at N(;yB@}&4Ef+o@)LdAyT}6_M4Sw&-*6{$(Z>&Ad
z{6+APD`aDWGaVe=<(TxUV98rsc3-cv$*%r3MuqpBsoHaVrTccf4?_9Kv?NH3S`lRS
z_?vh*EB(bz>56l>ljPMi;yq~NGl%nEv~hXPyQW&Xt88+T!3OS5R?OxEQB7h{Yeh4d
zqFc8TgKn&7w{HwF`@OxQ!+zQ1WWV=UblESP!T62sq{j!S+X1D8GMqx-NKQ!^5b`^g
zqak53qPDA2lt$1XGeT!^82Q2<w#b#FTiuxhB1Nmijn?=pg=z%baqzrtFLhOAF1(X1
zk>YYA0k>Yyc|tAZ#@6sQk{xR=%PwOFEGLDc^AELWBr^kcoxq0qO#hwuspT!z0i_C@
zR+svMgL}H4J2Rw&7 at d-xoIazxpn=hiok6Dm2Cm}(q-3=2qUZ>>pGy;39y3q+n6nbC
z;@H~tBg?j6f4f?o{*@LK-Bq5MwhdIZ?s4 at fe@9z?2i41(MrEG>*6T at 4G*+D|9=KBN
z*6kV5D+x75hU3SO2(A8Yzsqz<2ODX>Z>8z}q#+Gd5iLXQX0$m1b0yCPz4O2sz($dE
z<*c8Jtns5d-&9v+hCOsP9F;mv=cpq7UF51ueGP-Ik(s*%(9yM4AD^e<)`a^}Y2Q#)
znv%-w<{+w~>mI7Ylc_Lgb8Rc{P^(FpAS#(TxPwydDo-gJUC#M__z_$!-mog8gjR=d
z5o16kJGgMA2Xfd1v{*4*xkde`6!K^gqGTZvxAO7Ej^#N<gM9e7v!|=<IDMLU4f2V}
zu`Sc#5JOM^qnnB^KMVTRL5YYHFSs at z{$4CRitv2-*K+6m|1Ub9y#NLh|N8UUKiB71
zIiEcPKyz2idvLxX`LE7rS4H{73i~O)+}(2}8a>Zv_gCs>&u70yFaB5Ov;Rm2?`&Ti
z-eI}F^7-sbqr5T`rtqPI#{cE{?8EXn)`Z`%@@ah%@%`V=XRkjcNBNJ#EFUWWzd4`%
zKpepWkD#yf+240*n?9d?kq7uH=d+K_m%1 at L%$M5t`Rso<HSbT?a$`x4_xZTB#-;+F
zqpy3s&&Nd1zt2aA<7TBW6fg`^c3xiEgB3m0aQ>|PohL&=R0y`utjapl%JuS=y_w)1
z$a(-&?jf~qLiUi_QUy4Kpd-~)S{FX0hO^w<>-=9mptl|UtpZV;`3Lm$UV8NUTk9*5
zhxh|}XG-_m1A3gR%{4HHR+VU;y^x3E9_~is6({-D$(v at c<N1g2P}Ep1u7&%lOnU-M
zcidYG4<?|e;-UtQtkLms?UU|w=av8Wx9tvQW<sg7&fd0boDqN5ZhzWt$J)bPR70I<
z=jFak4Qk!(E{q=Vi`Vmexq9k#daLJk`Feg^9Z^p`kFUv|0($&q&^Bj*B-$>6Ul<%J
z3y-Mh=X1ID=yW9 at _O*Y1?j!peL0;w~j6&bj^Je7|d^yfU*Xa2<+!h$ho#Bs9)RaQN
zy29syT>hT#k&O_A{)_kGb^_ksi`$j}@5POVJ;E2Qu-@;*ISx*V_3iP;@8*d2cd{Ar
zlA at w#W24^LVq@;R${xXNaK63wR+ar#uKsGj^M~#u0gn8$G8N;myWMy~uKCQU&Q)E_
zz6+xF*=&wh184VqpN)k7h93I?Z}ixmK>U5S1L%I{_o}bnXH$nwH!-KfOvLS7HTOK3
zI_%AQUt{;G+CEl6IZSqS52%$Ie#7V64>m(2^9D9EtX2NKvm5i+C_DQL2oNrWCeG04
z%pSrTVic~Ag+I!Lmt`mC!kyWE-_wMy#^!r6gLQv}zj6pcKNc<<H+1=^F^rs}$~72_
zLLZccC$R7sDTZYF{8H(@{KZuZsbg-r`8Gb#sEylm=|p#Iza4j*aCOj7*oD5jipdk!
z+{haK1w at Pa*uVZglc|zLu#&$7j<dvWKBYDm*i3jGr=e!|FR<9<cw`Cz3!#H;c4 at l|
zQ=fGo5!u<9?^V`k+z}U!hBY#i+mfRyb#tDu%^|7P8%I}J#vfCO#Df=&SwFmNi^ivt
zv20wdrP=&(Z1Cbjgx at b8KBl<7`r|}v9XZgxSf#@QJ$+TKi#ngwf80|vb%`!3C^gHZ
zi{{zQ#+~jeB~7~f+uVp-(4o?BN2Sy($iricY`Z9uw&@&hWYT`d at lqEh;jXM7_qosJ
zcyhA+MtUZ;kFky=eYa&%mwKg+=ZwSfq3D~@R;%l&RbGGD?wB)J!HRaraIIU^?ewJV
z<%f>Xb^F at z9zJxj;HYHk3%VV7iM528pyq~DW|K`yv<;G+<=<<tZo#12IC^MyjA at N#
zLxF(geS&77$NhofjnpGD!spEvujly(M*knp35RK=HFp)hF5g^bm3v?)RfzG^$Q1!w
zHiJ}K74hpwl@&MQjTm;`6(UNTU?1s6zUD=t__Zm~yhtA5;@w_tdF#uTW&MK8$o3#@
zI3?JrwsLZWBd*qvd;-Jg$adW$`IvAAnVp|FO}9_fZhQ%Pw<j|b7wT~tT>`YwXkCAt
zh6pP(-P}MidZMGX6VpMrdbXZRfJvw7BpdjeYeehSxJ%k9Rp@<uv)HodvkZFNk?<=;
zDzS{;#C5llnbiJ2cd3>Ie?8k66#J)w*gG7o!GNj%uSiYIJzBf5GLO}$_{@-R(-afo
zAoW;@itoDA?q~SMXou<!SL_bHfPH-dF7^l?dsIQ}_HLV(RanLDZ^gC)OR){E*p5^4
z#TKd9DHNNZ&pP7y&Puc$#I6a~VVqn4HT_6i2XtP+#chdFYaKp=Z-SAo$>_&*R5G<>
zF%&3TgggSN+tSX=sN&Xf);$qBRC?@9d$XD~&s0Oy*ONdvxMMN3FUsc&GW83SnTzKK
zsZ6OFl)lOKB=?u|0OnC4avC&be?!^GS309!e3%WCQRRZ_=YqsBPgCQ8DquawaU+gu
z){_<DCgc*y-8f1k?&|QjfqwBNI8JCCB{h>CUI`6`*CbOHH=~;8QGhC-(mV$)A349M
zWl^b^y=g$pqM-^TS|28JdR7uj8Ka-QRJcaA!_Un;yR#r!-IZv45Kt+^rHNfe!r^NZ
zt*vTa`ZSt7vYFSF=AqpZty%{OQdhMHsnZrxg$1g@@~weGGz!GxTQnqn3XUioJ+qE4
z=KZ_k#=V2{m-6}UDeAldQ%>e*$%do3Yh{bJ=aY%Lr;xnn+V#ict7-c)dL>Bn+OzB3
z!Rs}A?EDH@=ofn*t|$MHJcQ)M at FUfkH<^l($7Q#^9JwN9Bz_$x^NB%b;;LlolfmoH
z21Vy_lrWagIY)~a=WKjK{b}4oVh8U*a}`YvfA=l6A1Bi$@rt+;F?$3!`b83keldXy
zFP+7L#1Anr=;xmBKkoznSiz4s_=x`L$Hacg)WmkSGG?zf&8u;Q2M~4-T0W(t2O<GF
z-TBD~>7>&ZSP!R8o435*uC(^5_H3Pz)wQQ(QJ}W)x_Ww^xqk~tJ<^dnN28tZWe`<2
z7%jbIx6M!!u{bbJTv$AO<Vcn7bxzyp7>I=hQf43pJ(8mC>WZ^#$9m%XdrT1I{wppu
zK^OZv{goNAbTp2gm5bFGBijpD`EH3}0W0&gC15>R+1Vdoft4?UnpP^j`^OWDi?XK{
ztPgp4OSGPEGHS#{MO_PI+75FuAT;ht%zvoyWjnPY5&e%RG05~E&rdQjvP1q$`0FJ;
zO^MZxMsCuX29YkE5qISodCXbagIK-DkH_hS?!1N*?pyF{GpTBa9Zmg#_Jjy+jzwKh
zo2sl!t*{<7`DF(!`{p318`@?L=T48uiE;KyrcD(R5>t7ZAupU at d|ssbMST7PSRy-!
zJbC%-mG3uw<U3vYKEP_~Lq29Y_yT#_U+}dC at 8v^+VZ(E3P4*xY4rgDmzklJpts`;B
zzH3&$<i^ztdELK{`YfL=`HR&DxG(E_%k?dSduYRE+xw8qS3svp%2#aok>6b;zm1nm
zc8AfZsIq9;yzGv#rMsG<^gO9`R%2RkAcpQ3a2Fdj`E6cEJj}Jdip%VLhJIX6M}wmu
z7w3tat at ou&U#IegH0r)CTth7)V{Oan`S4+}a6G=7E!YwKZouT()7C#?YgBH(!l`io
z`M=(RgEgOXNgp$tAjJyTtBuFlq~>xqKSz at qc})r at HLup>tlQP$Gkj=8c^kb4VEfw7
z#`n#$ZP}fs%Z2afQ!4M at w`{7sZ8lrpMe*{^?Ny#!?F*(cEmFCQ8&Ihf{%yegyhdcv
zdWLg!E#q!6T_JmoE{*C}!GHK?0`3bxJF<t<qXIf}RLz3o#{S&q)30K|7L8mO%URKq
z1^pTaMBCT at rp{bYQV?<O5^hA_8=RwR!qdJBVX$toOzw5-Y&m^eI-ubaag1(H9e83*
zcwhv&s_EJYG~a>Nt(rw?NX6`~<nr6fMBBl9#io6kacWp4>3H78Y7*0ryFOPXTKBSC
z+&7qRz_gxSX?Hc!)rr=BYb4DaTT=TNfo7W++IY%U+)N)?t>_-0 at 94hx6YIDyp6k|i
zEoHL$i|AhC?Ibj-j<oyY_Xtwi<e*QI)!D0dwzaxzP)!U_ORj!6wF1)IudC?&W$}M7
zZy at ApoED_H|1o{GkaJgf>>~O#;WZBN?pm)Iv?^I0UbSQJ2sl0BRaXxN?ZI}P at qdhp
zYBjUT#sj1FW)A{f?HJs_lv#QQ-_+oa*wTd}Y<!8u*|&oi{bPhq{Tn(5$@FyS%z|}n
zQZz!BmvA+|F7oGQM7;?0KtD%f-3bo$FJ*H7o(Rod{6*~PA?m71`H1{w{ZnB at s1MW^
zyv5YLz16oKUe)}O`}(I>>UPd#^?O|JRzUwT--+()e{YdGbF=sLe+EXL2-w)fef?{-
zTLS*4(8e)I?&4Hm)K{;i03LUGNwy6gye9m(+6vgWKDEILs2>#8Rd*D=3D9x%E+bMM
z^hW~u8Ck=9eZ%>0pj;Vi!(-{lKyS?Ut4OpJiz{d-y{=bvkSy!8L at O7t!Q%Sn9!b}O
zlc|z9Z^z&wfNTE-2rka}`&W)Wr}6}X(Wl<--Ojy#CH@@hs=rS%^?_ACIVcNP_GHor
zj7jek^*x2|391jOXgooW7~o&6tgEK?L>Tw7mI(9uP$SHK$yA6fgcz}?U%f7oc~io*
zIM1o;t}fyBu9UXjsBPUl<j3dq*&OzHweeIO;<WX9kpBybS-zCF!`ZGB>i^0AUVl#D
zAWfoHlhr at bsw<#_^f_SHV+^lx*d~U3O}M+m{`LA)wr<eNb#oXMH(qm1DFL<U%5z5;
zUCywM!TB4oSf12d#`QI}rWIaceVgmWw(ppgi#Ws#{w3<!mM4OkjCuX+uU%am&Vq@>
zBAJ?Up4qn2uqSZ$O@#PkDtXwVT*|A;J@@&b+GJ0O4i{>@!Ncqt^Sg_k4YU;5bdJL1
z{mOVq0_Y;U;iPk9jly!Tg_rQ$ieCHEg~v-2Nf)*KM1ks^DiW<}LbmfReH>l?SNGuA
z-z5`!V(?Na-P;c(!k52A&Do+*Zr8c*UN`8kgE!XA!O($>ClCNn^OZFtQfrp1-Mf33
z9Gq3!5dU#lGfYh$2^#ZnRuSgkD_W?1fKHK&RACO5XEn#P3*WVm0|?#AFnow0BpWR?
zmBra}jOyI<T>ZIQo}hx>A2kT}7bNAZ_3lVM!W}G{eG1uq$m=$)jjXcU7&R`KqRO60
zGhp=WL~0O at CWkXKI<wESQ9K&o&45N`!lN&Uo^@^EHQ2)S+#oZ(L~FWifzd7+^p2 at M
zbtD(PvSG#zMBNEQ13ev$J4r52hWx7?*P2SQtC1zw4UmAxLv~9J`ixgh3gvm()sLlC
zp^g3=d!gihy-ZTlc&vn>2TI9?1bTo&i7;%a8?>r!4%QjHxDx^E#XU{M1&Kgvv*ii2
zR~Tby)27{PV%OP5_aR4%Z7uK4*0{mrhqjvmUueMyGFfwGkzRXXNW>|z#d7w0;N!%*
zM-7U?cdggXfis&*>WW{ltA4#H$X-W^mnZ9J{3XT7>J5q3XCxfBM5~g#z;|ssUnAzZ
zCuhoeC8JmmM^r8!QCVCBp2iU)5)baDHdNL&f4*<i1G)V+M at y~ApElPyLXN7CPXp^=
z$jW1w238*qe}PSPdDQaTE9J?|go at GBe(!y8sc6GwjUG*)O-;qbj<z-h)}}JGX%Upx
z-_aTjf<)_1n$ICCd)wv(d1anEtN`qrfay`4Yps#m)Q{(Ub$GX+uwR1OMf-wXO9`tV
zqTxm1NzyR#4|CfzQ|1}`9tS6WEl6YHewt|2{!QCz6r{L0kY$t9N&LfYoz#fLHM-Gz
z*g@)&61|C?d*^zzd5 at NuMAB`^>W%S at I=}OhIyt5gncq{ElxE8lvtulTzvHNiTC+a}
zKc%|AA0B8uj>Kkbkkf}b?p>7CvY(TaAai<g%cmu?j$XgCU!pBVqSV<)2$^_r2Cc-J
ztC=^ebp6sT8YiWmPyD%Y*Doif8V7!<_GkAJ*xt=#qB0)3F2$2Nvr1DhCetIny at 72~
zgEu5I!^`Sgx;7*SEh&DQ=Nwz!+(3~tcj0&NQ>kZKmXy?|w>zvpwOv*9b2G6iz^v=6
zBaEr%!Iy5_^>fPo+*0o(Rjtocq-g}ZMUEc|H+|juuON*z%VCEqZR23|U_qMRtJ+a%
zZ;=-M{)k9JJ(>Lh+eMwWdNO-kEIf^Hp?#gR?`)pnpPb^*pG37>PvthS0V5`;Tq*;_
z*idu>`Yy=0tz*W1wz<DF+#0Q^bAt1Xu(^ln!b7QEGV_f)kJd~!+LiNmSVpuCkv0Ra
z0|WE*Tm7+nQBWVoUgt^7V8aHj<jl~d%r=9~u*8uhrhg&_INjgYxiv%1W1+adX+ZO1
za=+uveWQe3N(!PoB`LR(r{yu{uG}6sn=&&3UJsaTwv#98cXfC@?3>Tl8D6M*kUrC=
zU)Ur4IMRLLiMID}=H at C;#YY~~>abjxcyDG5j84N!@d>P>5<%*jBsZfrtEQQIH&~1$
z1syo1lt_)bW#N`K>YmD>T(WY*@$~+0$REvl2W8aVJ)&G<potkkH~RQi>lHoun)D=(
zdP)z&ut>L&MXScWH2h&lxEmMPg<@1*?fH+#UBX1`Z&fqRl&ta^(tS at y6%EIk<Womg
z?-;6wjrHHuP~|t%3fxdy=~9K~>C@^aAH=?Nv{^;T)L*2`ht{XQ(AZjIYFMk&L0#&Z
z?j7^|9*wJ~@rDKVvfhg=us5Y~N)Gud=KcfD-2Z)SR(E%OYOR#~(7F^aqFOaDVKkcz
z>Z|{jXq^QE)TQev_Yw at 1XPrr<F+I^bL31T~l4)R4Gbx_+3!4uX#}m?<vO{(K?RSCV
zciw>@(k|HA8gXc7D#Oc9FS$9eD$c*F!@KylZu4B%yW19sFBvHEtaYjRh`%~(1sp+l
z9p{xmiU)I(6_w$8oXt~{*aXv=to}fIila+Co;4P`@=(?btG`IJYJ2_WxvMy;rnu|x
zxHtd5=B~HYC$hOW&s_z6g3a;O!f*cn#8=;;qMP8Wqhv<(;HygNQOH-j042WqK+AYJ
zzM5~GvMIiL9`1~5vy+h;_Pz%68?T(a%m0y;^gy)~)9SEF5DZ`CJSM~Y*pu}}RMVjD
z at v@`C9Z6Ktql~3 at rf5wO_9Rx*q3S0azf+e!9m%=0+!S7T8)v>_#T!3`O^d?6P%Y(r
zi(i+sX*u at R7|a}=%BaDRyK>9YqNZ;zwiPmJ^>C$X<;Jv_g|drQ1bV$Yhkb&=vvSp<
zb1B66{Y(c2nFq9%5pHek<9&>OfaeA}IkjFfL%>UbmL{$`2&cD<hsYn-@|eaYR#%px
znbU0x_^>73N%WYjMrO!v(D$<4+Bz^uXK-o-XX9Lc9Q6|;*Qufp2ye5LyA1mk-mp*H
z at MoO)-ndVE|L-72sbzmbWK at 0+_|-UlbMVVN{8IA`x6<RR^gZC#0~pT2`M36M22 at g+
z0y3;&nvqikBEzL{X!bc`q4$u%zuTfH_~wv(`LS2Za|+AG%q3rPsrma`hFcoa-ZX#2
zn0- at BJit=7WKope{^=kLieGN2D=Th!Os2#ZHHjOShfmXKc}8RWw=6bXKQI}na5v7U
zMq_A@&RaXR0`z7MUGvT%SZN0r)+W(<Ewn3W`u7f`=~Iby_ASn&HhI?7iA6nX(gmo}
z7m=R5gsnLE)!11u&x02W)3&xlrw4a89fj4n>$j-S7gnF1$$OH#VF<~ulN?F$p+saC
zQn4 at qv9m0fWyg%khcAzXFOG%B$HJ$@!u!X<!(!pVgd_gz;eTv-mqF=VvrPGq*JWd7
zspdoM%V at p^j|W=2Qf5LG&!r{WerAgNlOVIutf`hIq#c1H0iOjf*hFiIWIf%lBH;B<
zR86AwYDnnluV-+0=!Uzuek8J at y_gG)sWNBWE5yi;DT at QI<pg}jOq_<7x>Z^>@0?|O
z4&~RnNOnej>dX4Xu^%z-Z`{Fl at o|1+P56s%*r>2KKD37rpk_UATD<~K??cQ^uHhdp
z<P}%{mbv_Gau~v@%=z!EOT8-#qqL at VJ(~`xh_Eu6qMgj~vnD(yhd1suOJuI6kia{)
zwvun_^6&XK$?=1hC)#w+#^W^rg<S_|$J$kl)yvH-mARUcP|vBP at PVf<X3yV7PV0RK
zctWVCa;wJ1MBA|nq^_pjqOd$V>)GRZv^Kka9$vqnq~E4~H9 at f~>7mlVxW3c_P`_=S
zX+=CenK{~gmCQ^Tlf-jTnP?pc;vm(pB71_V$Ps)kI`8tviL=Jdn5fO1!NW7h&6;@r
z^l1}<!;6E%dGC0em5nzCi>5SAyx3rfje%HtqII at t9Pin-{Z#|b`w&U}mjy at G4o$Q^
zYg{6C6<(+Ao&EgN@>P!^{XxsLI{ajRk!?0EyM|b=XU`_t_78IZ at VsNIvai~=rua3Q
z=yLxBV#R~&;5T;|WIh&pe=2v_o%E&Nr>c>~n!S~rk$lK)T4=)V;1(2goa|^w4YS}l
z4S9P{j5Um=^2p*Is_HOtTjKj0An}rL at 7mN8_F_no-gD7yDBL6Wd`Lf;gEtIjnHW~9
zYTBc_ZoV6Hbn<C!*g!*p`yp_RhbGhe;RL~{#U}Ty=_axEefw%Ge%lU2Ee!`d at bds~
zTIA at RIe0PHgUp^QtdNGGM)A7pCmN5pBH=uzeyqTHP`)cl at Y@e$b?GxO2rk2MwU)=T
z!skfx)q7p^T*7yK^?#Zk)7V_)QZhr%AB0{LJ*@`IYs!ihpx`p3A5Z*ijr-YMOp#w8
z#XUG{f;r2?iQzNrB#o~%WtAt0Sql<*Tp43xt_;T??(WywVX}BFHEnsOIQ#`tmDNMD
z=I2X#o%C3ajUUOeFpi+g#-BJmOjk-d8uJ+T1vBV$71k~WMB7dDVYZCIBYxohjNNYC
zf(?j?*1wV#q=)Umr}hSpefU5k#7zq-)cRqcw7Z1i=2MYF at dlUB<r5B!2pnGO5;}dt
zz=sbL?#z&LsZMw%i8`ln3BP8BtxL4FkzUtwO=W4K?Lt^iy at an&uG_=63JyQr<nk|Z
zx!fu)moEKo+EP!6w59C`iD+inclitlK|sQX5!Re&HzjrUKY&mDh1c%`eftq<^sURx
zRnOJ6EJug1nLg2KFVm%#XYZm5oZ`z4z~BjIA}l%Y?n!p!3H at R*eVl)UvkiZ2ZP~ta
zzLfuq&hLa!)Qs-MH6rlK`ur;AcNPL at S)?p(GbB6xH}5OXi1N$$IbZpEo!?P~g49dl
zNTv39en${e82bV7U!C9iu-w;PL)8E9VXEz`y|4ISlvi@`J3h3;^<SRfnVHA2CY)&H
zzxP$o?|dtt_v3JoFTaG>{jy*2eZ`OV&UM|#VaSIX(Bu4$C>#FOrS*A!#{lm30AJ<&
z&NcZ`kw;%@?EH>Dk6df}DXz-zr>H92zhU0TP2GX^^{5On)%I3KU;8&st(Q)X?cZqG
zWO>_cw!FLd%CXVv at D@G__lt-%!(_C7V>BdX|Hfs2`SHi;pKD4U#?vK at yXHWw@HP4L
z+B1U8s8V;tTH9I7g{wUtoulw$vORKCDTBbJ7|UDBZYc at x7B{5b0t&m9OU`ET!`4w6
zuTpyx4}Mb*ewNfUf3a`khFcg}2yK0JS!U#hqjtY+VB*0J9)r6sS-gSA-~?Zn8Ho+Y
zg1;GW6u^CQWU9k`g!dgAj(4H2{TVUG%sU8s(7l;hBIsjm;U!u)xlYSTg@<NLpXS#^
zbYR>TVc2h!b1i(xXf6^yup1NcKWYAxTSv*kr(^IBdH6QLxAYCqhP53277u?K at Y&HC
zX?o+|F$RCShyRA)%ln3ZiEfD|RR?+akIH~wC#$SC{$Ix6*HyaqJ}LMP;OU*Qi8j5E
z-7Dv%XGWzw<#XMjT-O7e_lM@!TCfa6$wv?gbx-zq!OeH;Er$tzX4qXkL>gW}(+J<9
z at H7|xk;3P>@LYvYci}4(KF)=wDg0d*K2PDp2)priS$5rV(Rk}G3xJKIL+dT?jxL<!
zX;<$AP8_BFNA=ZR5IAiaV&rEn54%kocVYqY1H|PY2WU&RM18-X$Qn9|NrjGEM5_n*
z+;KN-{dLKNEjac*Xa3IaN{pL(O}aW at bnF$wW#JGoM2$I|#zf&m)v!FZW9y+hULfl&
z);8ywcg-7ZD~9G8J`?^5cm$L?74+2iOW_#KcW7Cr#%3a#o#_<zbsvDuB&1Corh`TE
zPOSjXn*s}T7Q2ByHqSr)v1QmiYF2~RV#|$!&`}!Vca~y{ey1vBH3ZBIN$*dez0PZ|
zn<Uf{buLtF5Q%#((A at 45YkDjie&6C<%X9X0(*!(kB2J9PT<Riyqsi}uv?;6OSIDpC
z7PPF4(^nttLHV=*ve*R5_SVq;54Er{0oGS at vGO@WX>Y}a&3%>~%FaY!!dpe=)SB+c
zqR#vo+v1~eODsH{aAbcw`_HZs(EF`yyL*9-E at SHW@5I#uZfV(~u*2nf5P4hea)e~&
z(Ta9!c4uOj0ha@;`8KNoOhXfcxXWVkPE;v9WX){N%mz&6N1m(iTV}n^G5D!Td=+8v
z2I&D$k(}TSKb;rQZ<*}i^s%9?dzBwVfAXcZ^9z!G_Nx~o_|{+jmRE<eUoMAC$@H*m
ztxzu6B5CmYy7Y-8a^EapK{2a3&r;$A0!bypQAXGSL;1uvuSd<-b_D6#5RjyS_`)&+
z{^xS#_`a({%MygjH73Y>-#?zkD#>;gx|c#FCAg=e!~d at Izg_%>4 at iPD1Frra=$s(m
zU$KY;;j>@xmC|N4o#--4Vi`i|MZ}9HCH(47FSRHbHXF}yGn^tvRE*o#`Hvs%*Fgje
zij(D5g89bzS?AjD1XxC%3<LmKW0lbsL~Fv+H%Qn{t(YtaO at j=|3Lqb*^Fc7=NY2K3
z(9&>Q66#X_WE)f6l6Q{|K7Nhe7Tw&2v`u1epz>P2INyine6a=uiMb;cJ?D$W0s1&b
zAE|d9Q3Ha-$DcWO=!;KYd_?!55r5+OIr^9cfUlC5k86H<6CW?SkBwa)^-s)wSs%PI
z%L%cM-%hR4k)<W?YzyqK=i+BxEM}b#_G2<f>}NMR1aNJ$ii1tD#ID2*=T{-aX}d_T
zPw#*FP=>87Z#S@(?qYRg72K#KEqd#_rpLEtZSnMm9^W&1d^h*_p5NoUy~p>$9^V~3
zzE}46?uvgSO<BIx8JA8D9$NNM<=7jRepD%YBJ~c`+CudE_zj!#z8JK;`FXJ9{Vjsx
z4};83KMIz-xkWGt^1g#Q=cre4N8-Up`wa#i&nWb(;<t9*QAcEEZEWe at qIO=tBZ4`f
zs%tO1LnkH02iL8nb4kHnDKB)7b at uRSbOgF)=fk)SE%LHU^Hn8w+4&IS^j3}yfcPq7
zD-T<eZIjyj?H#28cvFLJ#^NijT|Tn3h*Pn=H|~xq)@vp{gL(<4Br};>sztz67F?UG
z?nowvcc8qJi4jW&Kac(xv?45mJ6NoEqsi37SheNR+|zjN<YYG~8o}vCHK9^Z`$!r!
zep~e=s5XR;poVUE at 4s84bP7*D02pq!v*P>TJ4?ja^BMaY_PG797L>ZVpUU9{hP*OM
z?>S$|sYm;%BvY8uD0xlk@=)<`rYlH(PkU+yc>RT=5-Jppf+XbzwM3iMe9jXZ4DiUs
zTt(uW;`iwOgTw}U<-J%R;)U#vm|mnW-WSAD9NTV>4fjiiXzzc_aBn~5Yl^*&VzYW@
z82HSX{@If;g)(Ed${xpWB>$N)TW7z+w<(Bhl|qzKl-*w;Dpr);Lm{+CQFaGH;n_Rn
z2ff9$`S9vkctb3F#4&l8y<*|(V=#LYUvM9f8LD;M43imh%wC*<I^C`ll!-J(v`tSh
zDKL`)B4yRB4PP557K&_+hs&w<VzozV2wlXuss9?n{}Eh)0=`W#tj=&+S30<3Pe%M3
z44V at Qhf8#b>o;r)8<5>nc=!V{Xva!BU at SUn!$D2>GHahbrBZbr3^0DmXs{1*J%?Jj
z*@he&1UOF)Us|U!D2c%*jBlJ64N$5O1Jq7L(@1Wg`U~rzDh-Q;Qtx+m1a|SVQrAAC
zMrO#?YTtc|L&n6gs&<urqYVT4Fj4x%xYtW!_39pi_Nt}!TxVMwo&s+Cg(Vu{IH~?b
zuxRr1S&ieSjlbB$(zi%*sV32cGJbN++Qv0&H{y7I+b^i~Y?Am}UFMr~#2z&1pT4rz
zq+U%qWV1~vRcgzyuJ40Tq-&<|sN)i?|IioRc7@^C`4OPh5}H=KXzD~ks;3rBoIUaU
zrpEE-MST{vkSDKQ8>61ndNa-5-J1B(CYm at vh2@)g(${I?CrEs**LpSac%LdI5cKM;
zgDtgJZ`G#{4Sz#Y-T9}vc36i^Yr1&c`7 at ek_0?ffE96x0oyU8Oex18#M~zac`BtQ9
zb9lI~XWt#wHo	?^ax3sl8eet|nf421erAdV&)r{SP@>^ePc9bq?K?@0O)h8*)OW
zMHf%Lf(4_Q<D$Nb8n-Q}$lR_#i4ftTn~*K5PriM3!?ximz6E`^?~d&@*S_mWtxaFm
zFJiuk89DRX*0P;817A>5n`SLdd!B}=qv6Xp$%MPTmT|G1C4m9dI%hRo!!d91moQGP
zM$}~JcB%0Xjh{7j=D3N|#wQaax}=LNmeh4hO)ZB?+OZv3%I8g;I6>qIiJ~SzXo@(O
zyP{QDHP)<<Wa<r at C0<8S;Uc{Mn`YQwY%5aSXy&#WsxH?wV+WBaPt?<e=}Uv%lqwqS
zQ at d0znFl$uz}ljj{lUJlc?J@#&94pbP&|cMlQKhIhIru*4VKNl<pA3$Y>oM9VtA(|
zMTUqscfHb0a^Ru$0T5}mv&<j;#J&}2s-I1?UT8^fJDwP>8SDuRNUM at gHJ>Sf+~bEg
zx}1<)Ql&pT;p~-mFY!-)jfT*RD*<#BmxOA_>d-H}#T>_*<cbMjRR(tG2 at J-XSXzJN
z#Ii)|YmEIizlM(Ja4%~*A>)ab=~ojh>FQTk{6sieDDpiue;0^%s^ZAD0<6l at p<lT4
zD2w;P$h;knjYP6@%f`!Dwxy*dv@|}jh3h?k6)KjE;rrVZlzf;<enoN7pw^2%2l-TS
zS#R~Yy`}c9^<3iX&NuIe8;MozNTqacId$Tt6PFL~H#Mqze;SM2?5qw8Kjk`nQKDzv
z4^vrrs$B|nxR<Y;n5_3eJi`>(rnvuPOYL3vr- at hHbE>bf?z5&`(KpSH*+jjsP&xT}
zFUIr;C;6K7UGGI(yB_JA=D)Di-u2!=^-guF>aeUMd$34j(yYnjXXdCMq_*rFzV*y0
z(=LdpFRdNv_V7wB!|#jw_p4M|p)SJQJ7-&3(eCTncPl>JYICjlyQTIXl9GkxWN;3L
zLlyVX-FLY^R)ovyzB#g#+XwmuiTl`OAXi&USj;w$#+{-HUb};I_S*1s%8B9 at e9gs$
z#7T06DR?--8?+#~EM|i(IjGBHU&=wR#I?GxR)b;Qrp;-#zgjysquIWWqS%CH(<4iw
z^?cE^FU at wM0RB%k+syu=e{TxELp%!?LySP3=0lN#?}bf(KcaX#-rM<GkS+WzaS*T)
z)mPOx%+?uXMlhphCqc^-CE-u$F-t6uX#XKrtNLTAvXZUo88`om%2(RxO;lkh at pA2T
zK_?6q20OX+O2YQfKcj^?-S}y+XzG;nW{#hE`M8{6vS{3;6KBqvGJRT3BA~PElZg3s
z90KOYp^oZ#JnW14*MxuW=UBOKM&HJ#_ARd6Te`feyapN at TBGTAZk&A*sK_qA*^{c)
z at b>D!VA0HpQzwp}HPLvchKh%~0;%mS>~NT>-S9>vPP2F=p#9`Lon=<Sb|$laOZjSi
z(jt{=4i7kc??#(oJUjyveNt+4X?zE~wGeoXH}ZoAnHwvt0+TjDxT}5R%T++Hv1R2J
zjx>h0m+AdSQX`V25{`QgF?_v967E905kR}>-<L5SZ#!?(TH8xaR(;$5{f$kwohEnI
zB#dhq&BsWHdbZryIy^DkH@{rx8`gKTUoPHUvmYTf+~tGMXb*>bS+TyI+H=_;Cup85
z;rL~ul{Exyu50BdzYuo8_Krf^S<$^I^dBn}dp^Ul!^|mcj(Q?oX|G=O9BJ2tD|`j}
zuKw;yWkKkV8#nN~OedAwxDhC)Wsm9aYI3b%iTiA4SWc&M7(<>MfGQc=3+gxzRZ8oC
zx=m2uGAM78(I<IJb)`XJskRh3s<vB%b2{hj*@Y3*IUcH65g;ndfy|FUzGEPAiI85d
z^w>F>JuR`dB7mV|o+-VR#gfYyVi)nxU$SO5>F4%Atqo@=GZtkKWEv%=BhwT6NhNey
z(S8OYVHLxob8X9iZsK7Rhk6qLJ6h0KQBuph50YOYkgs>+zL1`Ais{UEZLGV|)Q#h3
zn~BgQ<7eei&X8Xx$^AcJNKZ1S3A0^}tJVDllaqHe=zslk#cs-+{^CoR0(p^!h$bh(
z5rnghU2 at KcKMU75#evJDtCs@!gW+;&Uwx79^mVGerYAq}#m!TMx3sg{7rYNcBb!N0
z_!&bqaOd1NsgJY2V|5{tClTd;ga0+oha5cTdH1sWKQ7VxQ^US+?RUm&<kxrN=<e}x
zl*^uNIBHmri}Kei{}-Qs#rz*>yE4xPYnr6{Q6edJMRun*lXhR&NiCy=xC;)+`x}27
z3ond?ld<q|v2YLzH^#z0h=p&8g)fbTN5sPK9-ObktXTZtWASnLS7Pxe#o!0T!g2U`
z{ZEg<oEZzB9Sc9R3H%Sn;zz~c4~oSPi^cC0i at zckJ|G5jUM&8XvG71(@I%|ZdXJyI
zMc${&N;V6kC>$+_W;n;7ecV;zXA`5$J;uLWoq##ZD(EaAaIF^jf3>11|L;@|$_`3$
z(%{aIH!$9O<5|k#*ywt#H)<iY%cOWf2hozBkWc+?;8&M$n$O<~We&QENc|;Kw^uat
zi{9#Izobb#^`}dIIU=w&oCKRE(+5unF^dZ`^h3R+g0(Vw6^Pvzuxz{uzim>{ztX at 5
z)bV3AOiZWlwx$@BmFfTYu_B0*;b{58(Z$X2O|7znA%9ap&nHr at me4dx=(mI4 at HVNI
zO#i9p8u<dqdlS(@ZNI2(X(2V7pE66bD?Ge9CqcSZf0&m7EedCRCgFDO at q+cxb|v$S
zgGLdChWvWycRwWuioZO_;Dwj1i&NgOi5~N+)O2oqg|y}2_6DCDVfWn%CHv_o685Wi
zK5v4E9l82h%o<OG7PESean)qtSi}UKiag|BiR<^FT0BYq#H7Tj{lC~<Hys|*f510&
zKjD4!xq5>A*O?*PQW#b|*9hXG??3Dd+LAbSUE*g;!`UEwxP&GG)$Of=3B+kdtiz&t
zHnDTKAi%KY^5LcI#%DcjKIla+^^0E*TVx=s`(6)Qr`BisKX;a`hfSqnj4fT3qYs9F
zfrlmrc|Pl9kRP!@eWmrmO#hNI9Z#v_!_TNVJbUvPQFFj!{2*OHdgr?>LTh4<@0ncY
z**HDmN+qXm>^C1AUUoJuC)yYwrVYRQ9~FkdO&7$>4V`nq+$a;jq*lci!Y0knt#j at 7
zZ?Yoc<=GB*7{=L)5&x+}=`GHwBarWKzj4rcOi3wtzwsFhV9kFmP90MgK1*A(r}LfP
zfg?faQt?=T9n>zXw|&r4#sa}-N?03ShdPNC=htuP%)wd2Wxob+SVt%teZ~#SYyPWq
z;U}|q=fcafJIBHkV&NMJ`}ebKVy>G<*Sp&vPvgP_|6+%vut51qUgc}Ol6Nyqs+ddK
z77<(T8XbPRUNpZ5C!RO6MypBp6RT}gGZ>|HDuorI=LXSQ^nln?WKq}Rp+oZ939)c9
zF^N)B*kqP at YEG>IBWChGJ6ZU^ps&MWuQ=Pw_#A`Aa6{@Ls#M;Ibomwt_C8iow}nL0
z;|{PSxjMiWcJ*N<(nTMsIlN?SscT(odz4ylsaLYyh=w#PmTKgUVvCWX^$mlI6XZ5x
z>e4?o-HKjf&23q*XwvwLr%b(k+!RSpNv^f%%yv-I=mq>tn=o;<X5S(Jo?EHMd-y2|
zi~reo+pAS}zU@~P({@)M-}YW at zRbjCQ*A!eQsZrTNiiHG4@}~9n#A0`&qOV#OW$G!
zEw*{E8&$QFPvH{ySWFVg^uAxq2Q*Y<mY!x at f&@B7-cAe_xPX2QP-0-sHnL_ZEAROc
zEzAs0y%K)f7Yl%_GOSWH^Mq)G_Te7BsbZAgoj*-VV3VCc+EU|$c!n4l9PXw&!_w!u
z;3n4=ZG>AivuT=^Bqv6cQIplcs6(a0=}`4E<K0Vrcj#nOO}VMSJ-i$ip6YAbcRTL<
zaC7aLXQ^Uh=-LPKPPX)TJKrW|WO^=+7CLR2Yh$MWc~pd}_fFDJoPkHSbwq87w=+nL
zT<Iucet1ub at T^U=dZucT at 4W}Vq}AtI%{Ilx3qROgtAAvv at m7_B4UueDt8yYabK;DN
zjZ+$(NJiZibsu8*TY3ur*sQ2!-Wz<k_29HsefQv<Dm&kncNpwLSD#I_<zMSI*Ouj^
z*0wBGf8c?Q+LUPhh+0Vde#_e0s1cnZ*$ZgY2&D5SHCfVGD!!}q0&aqNB>wiz3g%{o
z@#4NZ(}eLhH7HMlH7xptH~2>O&BSl4-5d#)S!&dDHM$mTbf>d|&?t0PJI!mHJaeKk
zZA`_IbQ?(%$4|)hBd%jfqPmy$w-@{F$JbS8z7hMX5l{PS_T7j*Hrt3V-|xF0Ux%w|
z({mf>rWReW{Wkj*v=_bgS9Dly^J2{`)X|C7v0GAwQ4}Jp3LTWJAYl=U$>YwSK5<f9
z8+pquQb3C)O`3B4l!?<C)!Axw#L(Wud!G^FUVH;mygkR)e^BulA$G%%3704i<=HnO
zcJ!(9!K+)KZPaa7xf(A&dQW-dy*Ueb-=?Aa0fm4 at +#E4-j)QITRv9*U2{%4&8TeKB
z7`t6VS06)5_(z_(?W^gpsH%A$*y~f8zTB$6siv3t)V`bk>AO9fJ{$Pj^n*Is?njmf
z&r at BZQIe4*B7x`e^QK%d4(63%G(GCa{(KO32R}vO&d>GTm;r^2Iq4H%Kd}mJsxim=
z)V>>Yu%&K#Xc^F}v1!Gmmci`{XfMObw?8(f=hnB(&i8F#BO;dw6Woeu<`#SCM*~TY
z8o{E*DHl&1*EDTPM3hKt`$4ENqKM!0^E;!+TPypf$Y<RfHg;c=^A{s*SqWRBbq6-o
zgs+k6x$@0&$Cb`<Sv2!v^_CN|NnXgPz;DQ#(=o`Zy5u%~io%oq`e#qkx`HA$Ek=KR
z$EEg7{@;@-<BN$72NC6W at b>AdM61qWbH0Kk=s4s8(GjJ&os||ByidV_SPZXm78(9;
z`Mz)W>zwi0%BYX(vk<hs?Ww&~Tg>t0_G^#Dl_lC{<NdB{S*+=MQR0TPs3l*4qw-SX
zqB<^H at 9H>NxeJuT=@t{oLtW;lHRO({?`2}@`17Rqp|`}s*3NGtP#_jx@)UGmGQK{$
zxjqPdYTtcuAgOpO0xkd<iQ2LoK>C*!HJ)QC%&qT1_#Yb*O{y@$s&a1g22+P`hbrIs
zN at DZab68Yl9;+!@Y!YkhiT-+#wc*+Sf`9MK at oz-S%P<Yp-+NfG@&5jrVj`n%(fFxT
zr=QQ!b*)d%4d@|nmwU5yk+v~$x_xFu?9GlI)8Flzyg#$%ZA!yrxt?RwM)?23-J8c(
zRbBtzi6jseyrBh))*;%cNpT2PD^bxz5__)RSX!~-*C|#-tOE#%U`0TZDA(&%Y at KSg
zrLC>jq2f?PR7gMwYOCOgS_S8Gi~>#=72$b*);{On6NWzR_j&&Ky?%MU;O?{Mwf5R;
zuf6u#Yd=kD1k at itb3pyb>Wc$)uwrsRU2w*v({<k&>7ZhBkaV5DdBWLe#X<TDD2~|1
z4uqkizwuMxU;WIML3$$W^p at wrj{g><?)L=nR at S$Hw91s0ZLU8xoCvnSJ)jedN6tRW
zAe*3Z5Ix3rP+r>OsfDfWoaQnK^*2>cfiH?MI^t7@(a)_*ag4qlcG9ssxrc-+OxeQx
z5m%UFnYT8;C1L88=g$Z48V?()ftq{a*-fX9Ir|K>2%Cy8<4!+k{Md<2V{!zT2M7kB
znI0Ep%<aaFSTRR{p7V(VwC`qsentDS)x`mN!#_43b^-cN%e*x}cMnrTKyk8YSDnJS
zB)R7sW^1s)oX)q>W!I-kDkkD(ccxn%+FME1nIuXSLm!73==kwt$Dcm-Oo2a5(R0V1
zd1mwY at mS9ha|JPw>^1!G9^?|&caf&;2e`O$IG4A~fbM7l{>0OivNb49qK{&d!l at 38
z9GT%CQt^2~XrO9(-12TslaR2~txE at M-d0O-s=L722zQ(z&==r(!*m4>k8uAnTIlAU
ze!<xjCY*6jkG-~}pJ*P-A_Jt{%TIw{v~=?U)k?KqUC0AfvzENRb!%(rIW$ZS2YD00
zc9$L?1vOZBx_hSZ;+fV~1l$?toHPFHbIxem6u3bK946VDDH68Ir1t6DGH|<FgE>XQ
znQH)U`>^|>j?EYFQ{U2vY;8P`wAA=`Jx)w*X8ut184Au0ym&RCY;i43*`$glavRke
zS-ZJvl#N&y at mX(f4jrK^MGPoF%CilNK=;eG0_IS4D?f&l>4IM#0<vW=FMjjifjP=j
zBQS$A<L9OR(<IKnaDtfhjWYzcqs>L5vE`In$FUN5gc*NE)45|K_%%ysDLG_Tp|$p1
zL>2h^Y=t;aS4Z-I{plm}9vgOj%Yfas>fZr2mDHYU1ZlXN%11OOYBSep5cLf9{fMpp
zJ7f(7- at mdX#TX>!HD{cEIx_gCpfQ$0fLZ^Eck~dyN4~RV5}m9L=Rs`$khaH!Kx`Sr
zc`N at Nh__m5G<K4JcFsex`zDZR+pNvRrjSH~R00$sROoNs-ZBJHf41D)zW=tjtKY~A
zH;cPKGyVO=W)O^0Onl2!^g({hG?`-Img)I`8nVTKe*XX1GR<DJWr&y3>mX?d^w#6K
zeB1h^2_7zDkoh#QH{rZ<$Jq+TcMIR+#>w29r7cvyTuEGkf71fjkWi at k#Gz8ZtANo~
ztm_H*i%(R_)>!f#uZtu$U$J(#j^+8EYT90LTjg-4T1{JDv4&ZCoV*^jm}qMP8glEC
zVAmS8DRqGg%@ZwM5ux?a^PkkQWwif9E#;@m4Ggod{sbfNyXXI4(|*Vf&P`O4?PoK)
zH|@#4ow0um&0OZ%pyZEQp88jhZtS3L%u(D{ho>Y=ok>lbtAajwO=aUK9b@@pD0K=h
z%~S(r?iN6aFxg|uu3WigO!lFHz|-xs*J(UDYtucLD10dQWTNn}Sa at YD&yZMrJp5=Z
z&t9=Se~QK56bsLbh3Ce?6Jp_WV&PS>@Y}KQd$I5#vGD7$@b0nj3$bvYSorB!cul`N
z9^Q_HUyg<EisfGri+?Z{z9E+9=2-Z*vGDI=;n`a$dwMMX>RA43W8uSMc at Bt$_lt!u
zjODM3#h)FE|C9?O5e=LYi+?Q^e|#+dXR+{Cu{;g2_}|Ck>tgY`p%b-rSS)^QEdIb)
z{K2vCv9UbyvOkE$4~XUeZY+Lh;%CMjNQCFbxeJo`LyR2`+upJ_FXZ5b1;-*RHke-E
zi-3#9cEW6K_vaUhVK^%c&NyXu(YXS-W7=hdbRUGGcC19v-MQwAFGV?v$sT;yJ1SLF
z?j3e&N%K*`161PfiyTz$j7fh=C83`*<>7%SvP9dv8I;!kY(HfpwW(Pw1w}8rY{d^$
ze8 at XxM^<d#xL#Z1ziNCgp4ordGJ6 at _%HRF6P^Z(U6t}Y%u!Ej|84deyKi9K6Z5NTG
z#j8wGwV6a#nQmu0)uwHEPO;NGcoSD{*at*_EO^@iau%h6mt_ucD4~cne#y|~Z4HDU
zOUV|u9W3*SKEXF2Kb|2<Kbv$r at W)!{74oq4nO_DNCkN-f)E%qR#-F!*cw3^CWEoNI
z_SOH}w=*TsD{mPij;0DctG)eGc~;XqzQa}#l!v(f^UA3aW#j at j<NkCtEXNI<!)w$M
zmKurvy?CJ;lj`AR{NpzI6D22~8on!(-S0Y8!+ at n<>Bj3|(_avE{+6;RFI_yDM1Rfm
z=)$hqjGh<G%%eo`)SjSrqc<b47u$@=hqNd9_u-)_y7D8s@}nwyHezsZZaoy^`N;aa
z<VW%@d8N*50Jq4%O|;&lX_2Wf at dl#|RPJ=kBs3f3c<U$5ZJzX>rYfwiFKODBgh#>z
z=aG8Y1AO+t)^*xwk9-j-LU6LC4Q=UFiAtXPsWf9P=AlC96>&GZRM^ZMX1OvGWI9wz
z3 at 7WoRBwq_xxsIKK}31!pfFDbc`95Uo(zgIjUW at RE(82|LzR&ijB0FL!VybWf7n#X
zbIWd?9_D2+Q^HW_eEBHF?^2nO|MqGLmxgcXapoaCCqklarMlYk#3<(+=;T!8dpvGd
zdus3^BkA_dJ!Vd#?QdZLrw?5;)7ru6yX{h at U)OJEV%mGj2-zIH at 1McMk(t!B%px54
zjV4-uN?Nj<*)@@P<xhtBhlKfux%@wj<-bw+_fmcwR&Gmz=&&%%?<s$_c+X=ZT3q{M
zXz@%H(K{0UCBWh)@Z#W2E+K73pSdT2nMm^5{JLOFf9hq96xMM`UCO&a+w-b9TxB?S
zpO4<+kp2;dM84w(;ltC$m4X!%`WY^1hT~)P=q(TOd9K*WRSlWZRj$1Yhc;v`)GO+z
zG4#VRg+IC`nxq<j4g2?P*z1hWqH#aG$GCr6{4pB$9o+aby#CkVg~#O9+Bnyq#_XP^
zQ3=Pf`M$1a^OF_681lDzAvZg49qz_;19GWdg9Pc>V`a;Beh1HnGgtd8GXAyce4jsv
z27>7{JbKgh%}st;hz{zx&cOlZ6d!P$o3h^#$IJ|?;M2`aQ(t5c9{mP0a~}12S@^z}
zKD^vN9CcHE>5+!%7Si#odF+cMumUmrA;Hyti;8Kv&?0K4RVBGY0k?20Uq+6WVSk|2
zf~I341Hm7^s(M!X!>#;&t=1>5L43`wT~ztoe^SbxYT+qve^+uvO{!EsD}|mhs_p at Z
zjf7OD%>P*JrB~Kw4l4I=fMz2LwVN%=Vmj|XV_DWn3db5tH==iurBx?mJ#Sl$V)oz*
zEjKopi~U*T9`al*ZWHlWf*YmcW&g4)wJ*SoZd>Rj8rJ%g$rG)8!>s5Ue++T50W3}8
zp_IF$72qtoNxO^duU{ADf!bx{ijoxGvoz7FyTv at oz%>0ni0axs20T7GtNgx{lcP=?
zE-xo*1mkn+8Tk3=S?RMbE>rkAL8aj`barxg(0_(x+{EKw?uWWkynxS5a@=DT9F2Q0
zcu#irMn)x(T-&i>JO3zE2O$Yb=U8){{uGzHLTu`%k{{A5qaG#6;-6;e2u10Yzp4FV
zN=15!%^%lh_Tb8}nnTDIe2em<X9{mTz643}fQA4JNwpvZurFDWwtfzBlKA1P;HF!_
zD}?cXT-Cf&*Eu#8y6Xf2Ry_l>hmp`ULboP3B&>&Y*Lf|AOSA<m at DK2SCMRd9$h{PC
zR82oNCFp{vzUJS=hQ+^xXus}p-Bl~`+MaAW&&!-UD3!g4+dQkAPK)?M<^-fU9*Uz8
zj{*_RG}?5q!5Lz0pWu<LMx(QbvW3%4#M at u#%#fY_q2I;H>Lty8t!<fHUL-pUjSF3d
zSJsrYOe!mE`q`#S)kDg{Qq|)mj=|h-TgUiq{%9bdlhVJlcwN%1H)`@{PcuOCh at aWB
z*5;q9MqrxvQ)=gl=7a0dQG~3q_VnO1CUbZXaH5*e9(<3KJK&&>l;9YKJcplNUS<-u
zsw+b`z`qtv6l#zACGfiSXHlS=S5f#<!p09J82S(XP8Ij^pZ*_yLy5sl4=*_xZkp%F
zj(<A$DM<Y$Qnq|p)q{8P{-gi-UF)N_Z<_WM%oRE5H_^7jVG^d7v(050XeAcbnE7)V
zW0uPNeGoq$KKQt@$Nc8a#C^+?7=P<=D_l+ at 3Tdlf;2)+ at jn0CO)Z<nqO;e)@vJ<2&
z{IBcmk!diQco%#;su?URuvcB<zn~nDGBPZl+w=7e9u5^RlSR==f41e}`j8$Fmwz|`
zhOSEXpBmr+MEMy)Jppd+!sFYs&(PQ3FWoGSS4oCFsI->N(;g)4CZ(N2nnsNyxS)$m
zQc-v%;rQr;>t*JqJB7P!@c||FbZ*fyFLR}I)jX<trSw4fNy@*h$}_2_b>#4`s&nPn
z;Aop!-=n-{{=X^jWslkjRXp#dzf9tyDg8w<{d~*Yg~^T&j!YIVOfKgQ(w8Rp3v^Bs
zo{PN1Yj}8(7=XCEswhQquW;#c*}gn+Us|Gtrau<*%P-yzgY2hL>804YWBt?j<7D-7
zQy0l;?1d_l!bf4p>LXKyOT6V9cx-HHMOU?(H at x44bwhtFO_zBc{*hkcGB5p!x4auc
z>$3B3N0G`F;m5IPxmqfrrH+X_J=?$F<eXfhbl!Tznbud5bCY<@O5s(@T6 at D<`@~r|
zc-fKP0*-^0)A1c#lWT+1ZH6KzrPA%L-c82q|3-h#gN&3>2HR_h{<ix3Py9KrVt!c>
zZOfmx$@X9QbDkBI*JS;*%5Ub+c?5JPf6mQH-J(Bd<<J)4cyjz#{+##Bx4y<7Xr*yg
z|DXADes4(*@{Rs0eEcu`IsY+V$NT;beAw;S6a?6i{xC4F<T&?FW{<Ao$w%9$^~3p?
z6E#QY%YNaX6t at 50_;cPXUcsQSf=&E63$y<E#Rl9K{W)8P*TM|{i9hH2$Qu&OM*okl
zAbJ5F=NJ?$VCkFL!yhUSIH!0;(?cbNn=M2 at Ug=G=a(u$dza!5Fmpo2znwMq~=-Me-
zk8s_Ve{bVNWI%l7RPa_XFE8-!z}vj^`i91emoe;!+8!6JSg4I>^UmyY<SD_PRqpZF
z#$7zN at fT_iAKUmVZ{qUKM)NtU=?LkpU{}<%#($&3R2|<R@*FmCiR1^Vg!dH^Lj?~u
zpNxaQoS>k`ufz2-{bs82W1J~6?o+3pOF%$PJ}14jYo7R5Dm#@WPKE~6lLj?aBPY?g
z|Cc8i6;?mJV{K2t0%$5To}AkOB%sQozeK<Wql}|5MZT#YvN7PDcehU;@=<UmVa1)y
zZ%%)-Ie+8nT+n`@wkx)LW@;D>35$}QCWX- at JmJK<%)H(FEK(GY6X=oVL at S>B5L-{z
zi at u50g<6R+=kdYz=l6igTPb8?(w#_(yiD^&lI;1CnG?vzJ819NaQ~7f2b6QaR%<vs
zCUaD&m-!`9?)XM8jksO8LHoRfXkn0_T;!00Z1~GE-n2x?g4>-ItLP|%81k45u!rS?
zxaN-`&Ht7@#bTOpcr~EBD~-N|7I^QSs{8VYMxzulA3`g+$KX+(V8Juo&B^CTv6{rq
z7Au>8`KOvqcLlxZy2dli at v{FX<uERLovl-udi-}>Hp0MBgUL*@HFzocNPrQX03a_n
z!364EgJ(nyit<KA)g at a0N|UL~zU9HgQgl!!c#eQ at b?&3gdb3w9Bpnc8o&BOZC1Vxv
zVdL`&6{XVenhR*&+#bP at x(a#6!8-X8bg##_lUY=6s*uUzI{6qW2D2pm`}okDIfEyw
zgLia|i~SEKb{c!DkaF^e3Z7f7Mz-5Y+ip|m4%#ZYO3%qx`o8}^d>GyI2gPEY4^S~W
z6?zHVbf~=8>a4Ol9ZwB=8S>K|^A&#KZ_9^zY5a5um5J_|T9cp#J-fZJ>D%l&AiO0Z
z?fEaaOYsI9&~q%}*sA at wh+8X{{}5S1JbdBb!G~HfhFcOm3hM(smh5L-TJxpi8?n6$
zhx;zWFTxCFf5bG{dbeuGX<j7aLvv#^G}f(M$&wqMQde_Rn>cc5&`%sW@?ZRUcmvJe
zr`EH at J+=@fY#|md5K)~6JCa9+NmU5HUV2iQ$36fzrTC-1T=T!>o5Dn!yp!OMy0<)A
zl8<felA;4p9gRJ<Mvt;xIw;9 at p%gO4pD3(Pfm)E*K+Y1>Tq#^SGYb9mM9C=(dJ=ZT
zWIvDlXm8u3yPg8!L)vfn-&eo5;l{&FdbP;QUJ4Jmw2X(0%50BfeUs4<&pOdJd843j
zeP#@=N~O=M;GH7tS$&PHMWcOI=Wy#(TIz4~ZKu)l1SsS()5Z4n(r@^BvyJT--MRph
z`6$tLzVR*yDYmh?i?$f%E&90^^LUd=y2hH^Z4`bUb#(0!%Hi+n+DNCrz2<UyIC#b*
zl{63P_XqNTbNS;Mez4Cg>OmDn#b>xfOxCdMvzibfFDk4s$f5K)e>kN*N^63a1t-!I
zzj1!FG3^YF;!cX&n05xI#==(;j_*J1J%W<xJ%Sf_kKh}7_1ddml4zA@{Z!@`EFKqE
zpg>J!4)rp}u~L7IlkV_Mc4rrDPoM&(_IqjkUSB*<o$Cu|#ISUOK|fWw);(u5wXb{1
zXz~Rt+Zdgr8+q2RqeO0v_rr_>qBoCt`pn)t<Vm&ycDZ1dQHf2y{D!(mLl1-v74c{m
zV$2G?XH$LZpeEFtEB$SResGx?SHUC&#T^aRtAXkzxkwmb-GVRN^N53lzU|UbxjK0{
zh}MftUx^?u=S~&E!1i_NwJf&j_xQrZqU90};S%+WyhPnAv}n%|<m3sDM|KJlt&fVb
zGN(i35(*CFBmf!Y6Hx-#4N=>)t-n95yOuvsUJj>I%hM>z2meo-+@~(>1KT*EgQkYG
z$8qB5u=>=prd5J>JQxOEUd;pEaU3%)NmU12nO+{k%kVLBkIl`&yCb;tDwl3DXuC0J
zJG)7N6tgDZVDKj1C1(o$O9vGs6ZLQK4-O3cplmbwg|{yjXjzBgUJRe!fj{?PT7zI(
z{T`(|GUY^5mOT%z1Mn`MePZT=x}o-vn`2%khZuvng<5kA!uQ}2?ofv6LGhBJih{X5
zQW1L+F$Y*iBL#3hG(5%k2=^XA`b8n-yakY3L6VD_PMB)v%iKWoT-EFT_&H2Ye0WvZ
zgH-U_!9{yjkR#DnEGlJn==s`uxPKO}LFYvKez=>R#uvoE11M6WeG?N|c4x?p`)mBZ
z#Yflmy06cLG*%n`esO?^vq*6QYcb}q!Qb1cR*QCKcv;ZR07UYv-uGxd1WGcJ%Z%qS
zve<0q(un$DdO at J}{|1cap{%Vv-PycbL*?f~cuq1T#E+>qB1ERZnvONQ2d@)nSPPyf
z<Ud0{kbZ)*X)xkOGuFa^_K*5wvF3&rUDL~n)?0-OJejAvy-FScyr>(^01rkkDfC*t
z<czw_l0RldpY)aoUdNk7Ug4MGo1Y{`;gqetlwS{JL`U=LnsrMGkqcYi+kige3rny3
z%Io;5*QD=K{JBrO#P^>=wNN}A4IwHU)F3ByESia4qvfqaW$>2!yhf*N%P9O@*Yh@?
zL`�<c8qMuDdon|6ot#@us1d`A(9-tbEa)BE0e{^}2dtqIEY2FPXip+q5TZfUC2R
z9Ka<f$X<GbYW0?{_B!4Ju9vm|*IL2VX>h#{Tm!zMYiub3by&dsUFuAcUdNZcPCiwg
zU#{~%c?QbC=rP6ZZ>pY!o?cO;roWbu`um49+&|!q64|OVS@{_cyd0a|cOMR3dzmb?
z+;7MhbtYTZmn5!v%q9`~K1P^j)87;NOjh%%2Oo)6bDFKE8OJJH;_(6H4QD>rQ1~2W
z2PLk#$I5<fcr5Le>{wrvZ216X&!r{DWQ*PgkW;()uM{1X&%afp69YdQomjGpaXH{c
zBL11U;#TGuU#}*v{G$uKp19&cLMVk8-U^1Sf4%D1o`1uoh+3+doBdJA#ixhs^Ab|P
zRl6lllpl%ZDBIRv+z_Ti5TzWu`bu9uagA5~(uAX^bw at 8dg_D}npHh4OZ3w7^qf1n^
zTA9ez5h`L)qppdMaGv at B3eT6uFAnv}$?COU;;7YLV)z?837M??mqUn at vkmO0+CF63
zG-MlLRja&87A#3lE!`zkJR5`T2o_75>N)M(@@_bJ7x-IkH(8N%(7&#<A^GGebd8_-
zk91LG+d3PV=9lShFHRg2Eq|v;3B`kwJjvSCFWK at 02L#05CM=@8(=!kUbX@#C;r>OO
zzkC8(JM7_AH{L&|T2*HCcD0Lig9~8|j?Yo{^@)4&KO-~-m_XLI`N#M$9Q-G&ozNYe
zNm8Q!_uPj(KZtm#D!!0$>X~T$4O0m2UsC&+)YP10G#?!pGpKwOZ%B|M{<6i>k?qvI
zQm+z7kwi;Ug<tqrLf15*FQ^k9(SLgmuTWWk-c%=0Q7;0AAVgnzuVRkwW}DD$2-wBw
zfigA7HX at 3e?vN at vCI&=r*Y%)E6s#*MFVyipPumDuWQWFwtXYIUfXXkFi!8hT`%VM<
zkQz2+kWR%@I2mdB0rf+4?V#xN<%&#Jw>Nh&$!Ykc;sg>#*KI0EdjIVS^e^bTGD`jU
zT~1{uGqbIJb;sG)SW8{MNwn#aJ(cMld<CYP4q>)3KZ#87T=P?*`fdcfie%?PGO)Ta
zSFasOL at NDtFoh^T`+$MeTh;WTSo6DdxV|7LCcEJ&&(9NH_3}jPV+>1D{QQ|@<&(+m
zCGhiz?}?w^Ysv7#r5g0)azAN4YxxTGF94 at WD!yLREo2z~3-t~x5-qDXq_RZ_bjzsV
zHHj<CmPG43aa_1oVuoBulk|>w;VL at 2->(oA=>8~TD?W!Qe#S5C;-r_7w!-iL5$uqm
z7bo_mLq~s}U#~_dN_(>$!J1BLr%!Zrp#35*H@|JHd4Sg<*4+0?8Y`q;OXe2`l=5k_
z=Cw}}r!3|hetjApI^`+C|A5k7nJ6lF<&(ruUgLL>R8V#5$}$0k>R&6 at kO-2u1j*93
z1zLqc&aVMOWjtU33fi>Dcl|vXt!M8DxvXbNL&K<dx*m`CT#NYXns>bAA9&j?6q=}f
z)H}g4#(VTkb=bNS at h>-0=7xo|CxabnCbpr__#cmC3oL7pF?LU;Uu~#-HOUm6*q3 at b
zPY&VopNCZ>t6yvSAelX;JC$BR;<H{yz?#^B8PHSeO~+eBslrzs9_UhheP7tTdR<3h
z({^6Vn;SHkeV<MWKS_00AifHI2HyFWt?bW(lc%Vj`80CiJ<kbe`#<+f4nX!FIENe;
zA4FRB$&ALA>R{NvRC-yh69is^3{p-ISV1pd>$+X*G6Obn2Bjw~q{-)~>#1MPZJr~b
zgMq?GM8CpE?TN&<=WGBk|IjVDlW~oQ+LV*LjFTL7r(qDQF*0-~&%p7=B=a~P_cBLt
z2!kP#Xfu129(9(0H2>c3rmlN-UPn<fTG0~{nmU3a{M0_<&8HvwOL%)cBMB<i*1_5T
zZlWm!sIibP6Q(2BhWYd4G1<PCBTe;2nsWFaow#uB2v{w at GYfiCrnqKX`<hmU^e{T{
z^Ou!l95=5BcVaRE9>zXDI&m at h)4$PB<=9oEy)`=V3(~%Z#J^rD!R*f at bc{|+SOJN=
zAj6X>OA*z2C0dtg&hiRa%bV*t_IZ*ibblz|wLBuLFyw>#Wkck(tiTfHlSJzc6li&5
zHnN10W=W25NljB)9#N+iy;hwMqt9u1L at +5@&_vNAS{|9Tor|8ieLlLn<&m`*k}LPB
ze);G<TOO(5YMi307^J9@?OPt1*<aCWEB%r;FC3f!Qhs)9(2#thqq53{^4>Rbe_c=2
zV8`|iPnA&}3)Cp?sER~lONI!@%Q`PjUbfXaa>wvprl0zgxpq|)Mj<~&VnU;wixm*7
zU!4N`r|m)3xw)QY^y+p7&B)*%gk4;ltK1o!Hu{5AL|UI?OK4*fwM6Yri^7 at NIt-Oc
zyUNVQqj-pWsF!`n3VCUcfw|J-a&ieyC1hao0}WeoH=mDF at ig_D4T#5XM%ymDA-5JX
zz`6M({IH6*maBF4?rZ}a at mq?j`#`es;;>u&GrORTdZKIlnGKn<q_%#i$&{EpKa94d
z0Vy^80lVy%wae=(ZOY=mI`u<C<u}Rdk1pHMPOPVD_TX=H$~@a<PkK<gd+Ot$<DKT&
z%-V7jCmPc0bqDk(+EHo0)wB8mIuvEMb|x)YcJ}kTA>HY at L&Wdw*Fr>((+m_QiS#>)
z7OWb1X^9%rohabO)MzY6D3Q@<<X3-*O166PEmlKBS3mKmhRjr{_?uGbf`J;<Z#8dJ
zy$aAT<bYmwrvbfFs`72Gy6dumd7y!3%H!!3Z1o>*NPk0JI@@V}NFalcreuR&8E2Q+
zP`#cPuVa;d;a}=1bs(}614QJKErG~Me1YizQfa#H?|C-}$~K~JT%5{ILig7Q9oS$?
zK{JYohwLq|WXlGWm45?LLYSJ|Oh_jiZBL@}1F;S1<_eoG$hJtsU!ftaLUeqnd>k3!
zJr5a{cnGPH_9^fMqD- at _^Xf<Vt3PDG(@S`?4<zBTfD&HyfbynoJyF<Dt~=T0R;sP=
zrSJ3q!j`FpOL$~8ML-4nI~395m{e7<spdGqTK`|WGC~9M@&s0KJMCkZz4dnF<-c~9
z_F%jnp_#x0Sej at n5x)l&=tgHc2G~AIh8dV7eK~+0qIM(qvS6_!wd{UR?k#)GHU9ng
zYIvLO#CB#LQ4U(}Z!th!zs|2uV at K6QG}e=*9GxX9(KYKGC(%}rLMX7)j_UQXla7g^
z?erQ`RWzhO_s`)wSVPvtoL;pv>Z^jY35yeS(+MdrHu|64Bh{uJXGbmS9(m&v)hJBz
z4SzI!OmS6K`8iK13-(b3pa4n$UTHzIt>v>cJgk{B$ffVu;rA+i6L0Ahs`4^-dP>XO
zEFiqJn<!3k^a8xxwBD^H-z6mV%)ScHDXWK}s8ESJDJkWVmtmNbB@$7LLp_q?rj-km
z>6h3{6{QmQecXUMnajV at XkC1%jbtk0>hQ96&V*CBm#n?at=7vtJ*28HKz!X%3k&yu
z1X(=~Or}3z<CX0<3dd#sFGV2v)y4Yf`jq5RKlLeD*_rIvsBV0vQ@$C;?I^-u(=Ne?
zr5eFDGjkQ-NY+ciqBF;oco|Fz-Sb}vLfDGP{ie_;2K*H3TJkY?p)o{3gGXW9TN*Ci
z{ZoCf4Zmlp9N(o{s~Ltn!|$r_dv^G3q)htU at OxaC-X4C>48NC#-?PK-W#PAP- at 47M
z#=xn1Hc1~t?SnNU%-J6HY^J^$*qikW|6EGE{<ya#V63;6mprrdO&&kYBS?fal@~;m
z5x`caKs_PeAft@@hv-jb%EB~3Ntse5Dc+oKQl?$sl#ycv{VA<6EF;J%Qx%n&7RDO}
zDC5P-%py$Q5tf&<F<}~U<D$43`M8-;+ at 1Nj*$Ps0Ss3MIKrS3}*AqKkA6G>Q^l=4Y
zWtc<*zT(yK0wErtrn!o`qx at 8=x7GAVc8!(VDGQ at ivO*<^tIB87C?WyhTJ90>pa0F*
z8_73 at uyJ>Wd9H=W?l(%^W9-YKdx$!DVRT8>?=t<;Q(mJ37g6~P9w_N3pZcR$GZcjR
z5PNkPs~j_9;hSUOSz&lIF8A&vOjh+re=61<3$KWU3lMjrJSAaR{aQsHt>A0<^<Vx2
zQ`{V<<4+VK^Ov}Y8WRCQs{eNv(Wr<rMci%?4^E?Q#nmWori+^u#x*K#vWsgE<EANY
zjEh?p#?4aPNaCa&g5jQ`>He4vcrw!)3?YZiF0iREb0$APD~hqnkeN112}F$o5Xnz+
zs4;@DMxxPx<gppG at X4(1jTq9)Bf^ZZ<pR>lCbIFLCz%u4lH}mtF>a?fI1u5+AWdTo
z#|%&_$Cnwu($FfgF^ZT(1jMN75W4neOL(g>H3C-~A+RxA#J{IUCk8B)gI-sItulSf
zbwo3b<t8&tte>{VSp5)+AcWjXO at 4iqSoD~}720-KV=_Bs#KsZO;yos#qDLyj{9j!(
zf4wY6m|s-bIp|&5gqSRGK3qHfk<K$}y!1c2zLk at A8!{Kj>Y}N>A=8Y=br~WT&(`Vm
z&4gEOFmSHn_x`;}a-|KG8<N#;T-Fy0lPQbsRBF=vRQe+-L4f<H`B5)ZgcKg6GPLLM
zUybqiedtCia}h&v(I(Y%1cXCmmK6W?-#M`a;k22<v2LB_Rj;_LKW3kaYu+ny$8&G+
zo2iuqUX!9F$#o^jk4agZF77Fp0?)(>N#Tg5v2(W&o*&X04FS*UEx?l#NDZC_-T>ir
z(Lh2rtxbU_gfkstG*oW at QFfr`AfZ40tG9`=k*(A~9+FxhnNq}I+R#W=)Mz4SxF;vD
zh(uHr$<;9Y{=qzDkW9BL3pPGu%2Jt06}6cfPj6_p8=c?@7d%v9fSqWa11aT^@od+(
z^Xq*iryD*TGUDekAwKq|&;J=d;DR6|hm9kJ4Tp+2*|6tX<1fF}D$S2(BD+Ez1rOjR
zk$##FXHLL4j_{{LW1LXg89k6eKY~5mjLg;y{9`J>L78qu3qhP}Af(^W$3h6{Qwiya
zylomgY3#V{U^tc5kw2HvK^RiHWGj3pcv>k7d?B&3zD8j$U5`Ki6W4?B#gS<Kq_*{-
zWP7g~={M2#0z36kHb-{W_;V-Z*<0u`!nqi5p+=LLf4&4BuEbL(F*Quf3u at B!DgSs-
zthtz**=?1G)5<f7-A9Rc*eI?zJVh&-*b*E#tzeUSnB=;4;|Ou7vR^3~bR5|#6 at p2X
zyD2J-pWp28G8rwX9tjtDgNJ*ZfMLiD@#tjK4|a%ZyDzG3y`nhVq_&!<wh|Z}wT-}h
zg86rkdsmv;=w`fcC+BL*M73SuYJ<-YZ;WcIaJ7x2wno)frf+I1>si}BOf at 1%tD at T8
zP*nQ7F{$jM(-^*}LeDCEbf%4{rKs8(t2W-hVY&W2BW;YR<^=2C-C8G7*#~FEDjnl0
zo$V at BiYjf~tkQ2xv7>Ij9aTC|{Y~F}r;27<+WCokI>S}EOeyI{m7+?gS*4oOJ<$14
zuI5Xknu}e{OI1GGvWlOm<~v=@Yn76IR4J-?)@I#(D_7}&sM4<#NZ;+NO!m=1P>w2P
zebeIWWgo2|24M|qwAw63x}}s at H6d{=(f{rO5gebZHf!;g+&KOUU6^700UO7=%Tz`7
zK~3whMXji`I3ld9L~}L$s4}EmhAKBLXf5xFD5G7Q6J=2goeoi6zUnd+%RV|Oth&lo
zJ;thTRAjbAA8Mh((!_~+jK{~S+?qLB%d5y|TZg)FR{p_menLRBq$ABdW^#m=ey{|<
z_`b)amvqaW<kZ6!GpwZtOG!mVj3z<foh=1?>u*NOQZh0UR}&A5abl&=tfin6$D=M^
zx<xK2B_Gdp6$}b1;8N?dFy&@a68#^Yq0e;7iZFJT#om3hi(SP};$gNS7W?3AK1Zip
ze170&E$zyL#4uVWg0H_K39KW(-smJDQ-jG<d-G>r`qu(jhcCJFc$bcyl+x*`SSR at e
zx|hxf;s`Ffr~WIGgjz at sVU^rQgKG&GCM4sMv&M45OM$J7Fr-+;kNWE=>GGPA5&C7c
zT6Lf+TP?rJTug>$keO4Fx6Gcio<*4}BHR21<A at PpR&aiPGu&H7tY at om`t`2)(e_zt
z2T|sb=lp3bcpfYGEX!kh2c;-VICQ2R{s%W{AqW`~z$tg|xjCDZK@;;oCm<jjbXy0W
z31tI)`8&O?bt6??nyE>tqG?o+%A8x4%3M+b|Ew{R{MR~}U=)=HH-4eq*pF6kkmW}R
z++KnQjf&tyfb$3P9UO`gGFi2dHhmk}Nt%+rH)s)0v^_%ylPymadY3O2A{(kdOH7|_
zoo0eq_su2-UCb2p_gVp2h;o=2{aZDc)5bWgNE?Hx*#>{bjgpumjG&D<!m4=8%|K8z
zjb3VS%qQ(oQH%!Y3_~P3Yej&!Nx3YgQI;dZEaFbeGA at _JSBz@;ZkT13Wr5qp+nOEa
z`kXFm#HWS1jP*u6ni=JKHq6x+=4y}EH7?5a*DzO2m`n0Vu3ti~^{XY!RTk!&9nV!2
z<vKOYRS at Q~#U|=kX_V`bFxM(kp-3)X*IGpi6aB+n?P0E)U9LpyX(g_h at et*FAEMCn
zf*zVL{`ab#C(K0KM)N}YSg08bHC$15Y!0aSohmM5(vY7q&$sL{)hY^QHaYGgYFPnK
z33C>>#6;`f?~Aw|vU3S#IF$@Re<HPgNo9VHxe;dmZ$(o1w at sJG4LiT?SKS-aop7B!
z8!F$Ekr4_%S-V~L0d(!`>=IW`<)beBMF)mPmk`t>L%0p~akel^Zz`45>li1vQw51E
zC0$2H`cCw%f9-Gj)^Wm3NoK|v8j_HHlh8?x%!|u4%G{V7rJJo~iPq_=P4!UvJS*M&
zFn7rs3Hrw}Gtsi%!S at KhQMNYlqd$K(Fj1n~m6%D6{Z(QoS7I99ySWnIjY>?RM9*%u
zovS at G7%dTs4|AAJv?dXM;jcAwIoOjez|kC`hk3|bp}c}l1*-T+v=)a2+ItkpXO!i%
zd>zO#p!P9(KaDMDom*%{2bk}|z$P$;hnGu`Z+(_LW`~?gf7*~<-IZ|p8!{KOUtQPK
zz at E1vRox{vl{or&ojG7XKc!4!`KXz;@z^<8`Fcb3yPF=iJnjx#=Ac2PGWM<OnjiGw
zlu2%hp^M-Wb7#{D$;^+rmHP}@*oc&N#@3zMZM$0Pe}1hH2 at i&%_Gn12O;#>#s9ts1
zuK6PlYzY$A{J6NFpf26s*3Lzc!^;_~Y{F=xmdZvY51ZK7GzKhVB^Y5jnV!g at E$?Ie
zn)+pzC?tcowim!#@HmS4=>BMSSS at w=`!Z=EkNX(xA$&s~`}3ne|2ohRwbOjFJ(8E5
zI>O(X+1&M8Oj&|8ymBbBXpBTRG1J4qofSj#rZ0d-^CoVb_c>1XLgT!|)o=3=8R!vY
zu?qI!<W?@eX4)`vz5EUTjO#WK<%E`CyjXnt%OUN-)VH9B#GHD>oJkNu at Ss+%^jEbl
z at 5^kUorC(+wqHq=jETyq_TX0DD0JC}mj-=tY8HM}1r5267PT4-#+PH5I4<}{E^+vX
z;G*0|%Lq033YMi|7eukaIr;Cks_ETaO)bmxJuUw|Ti-kKonP$$-*3KN<JU5a)bIqN
zMns-&QGPR`T<yPUG!!j+k1DTqGhY)${lTuLb}JW?DXb at 9O*i$dNqK{R0b|da-ZYxB
z?LyB!3C6IdhMqO8Qcdq~R?|(crZEOmyiXdyu%=!;Yf|1|MGrg)x(2Ihcw>(a4QEe?
zV6fU>aE)eJgrQ3tgWgbAPoVm`3Tk>*Fe0pAO3w;vf{7n*TEWv|iIJ77)4uS at 9?W_$
ztY-yffxk9hflivPvI<(J84}~jm}xOq&AMzH5ZjvuSNG_Oh^EHX<R~RxlZZ6z&^<kC
zQr=+aO$KPCzwSB#g-vCw7JR%on9l7{#bH6G#JHTSCXgPs;w^)$*;o}V#?M_X-|JC}
z?FNGbG(6Ifdf5@}zTVjiHkeE)jcRtpTz>~e%_E9~yBSU at 4nC2m$t?*J54;D<`<scc
z?%Atg9`vIHB6tAq;xDHMW)7BK9Bjj7!YI6&%W+Y7LN2~DxFHu_9L&w-Srohx3x603
zKOYNUpDWuL+>#3~3T}wynUjlO9PAVe_lku-%H>}i91#oO9}C|X3*SvRzj+Gpi+ky{
zwLjx_^x?JkE>xmzmMAUr9V~+x<FCC+j5jf;tzJ96e`Mm3yDy%~j70$1_j5`>Qfn|F
z_P4!S;`a}{%<<@mpGZ}H!eTmgAFYc=rPAMPD10|r_#p=In2erTx_Nyv2krFRY at SRg
zO;xTFB`?Wv2E0&q0+ at d&vMXSLI^;T5rDM}^h(iA^(z?w<5Yb;EXUN1Yqg3Xcl2qn^
z(4N7dTE at e2Mwp!BqWWEzs{DXe9ybnxDBBlNx?}vgQj4~IP0WzjhCGP at S81PAwyu9k
zL*-{b&K_QdKvUFTP at apW#S~Px at +y#$MG7|*j=4&6wXdWQZp)<`*dJYn3V`ilOV2wY
z&c2Nc1ok(TW!o+(&a?7dQcQPvg^RkTJGq5BC}z5e+2%=_Iot+mduM7bs?$=_fpg$r
zx!S)bY`g2qNS?$tv2gq?X24;{;Y`3wKaI$<!s~duSJzc?^bvVQKvwXt2E8U_cHM5W
zNLZ-DOZ;f5m)+%`8u#EQ#4;X5S;phhEB_B4k9jlxzm3QD4I}?%Jf4JDw=y0Z!nXhS
z<FOv}{-@*7lwmvuU(sVcYJc`f8AFz2%Ab%-zgRmmnf`2k0rZdWDW>}6A4>f0Vc{np
zjfJ0iILdNLkkb7Ulup~&3!1t*>wK}W-{1z!r{3L<s5&V*YUnHSY#mzKP2Vrnu2B`o
ztjU(C)a6g8{hp3NrqSO5?`H1x at H_Dc?$yARIH4Kr-`6TkOVoY>8&VYbOO#U&=d=}3
zO=1qJ_8G^Mdw5Chk~(DPt}DIl7|b=-_ybzF<%!LDIzYm2NCzPdIFec7&j4i}t-yIa
zT1ob7W#YcBg$HO0A#ca90Ww<?{x2BgU>9aYXs>E_<5v0)YAR|8U98OkU2;H(Q~3L+
zLB(bUcRd)*@37pZt{g`RQ8`{UE}8J7+I3G9H8<5`DV9jgLCcNZN&#`(G*48%RA#W*
zIL|~ehHof@{jR01Kl+wafUaron;ijHOvRB_V+f3Kemy&kRh)Me6V`u~-we<8-4||x
zvFoSapSxzMM1A_5T5=whsoQJ)@HGE*rHMK!@o?Q<8%8T)L(ohk{$)Vs*3Lyi6&ELS
z{$`-GWg0AOfvR+3H`JZN5%TaFc!-?YjnLbxje3D|oa}j~kv&m)yX^pU@;uAFonP8S
zrF-5lMz}_eUN+Pjq~9`js at +f4js!Sm=q$23q1*_?;EI{@W_W&*zZ%ut7lL%%TygRu
ze|DP##@%7Xa%n7A%WFrDP9`q=CYnA&kx1Br4czx(l*>)!sZ_S9e4N&Y@>t)XeX`-8
z<-+%QQ<`jz@@F%KPRQfrIH?(-T=_U_M?2~BZ!H$9YZ5yiyw_S@$g9L9Q=*ddTl5U5
zE1Pv4VBmus+PQK9x(xEyn}@TglJ!(>I4iug82W3|L~HvMy<12J`n6%Vr#li?TM6xt
zhCHd4ZJqw7-+Ls>v_@)I{W=9|y{`lFZko`awAr)l_v#}1B~5B0{iS;8t=f(LjbJX7
z8TNasOJ#32yAwTR`(qMApU#DEvZC=|Xe(K~bizN25`3PZ&&<G!`BCS<#92DFuJ!5r
zw(lwH^{&zEPeureSv2ZpueJweRUwD at LWL*{qcGQUqS9Hh=vRZQ-&Oqj%Z#_0rtx~G
z5kiWUHch95`W4jt4C0>%w?@?)vm>E|X7nd}5e5A}!Zuu=55P_1mB%}U#wq1U3#9`e
z$D0(tMci4bcv?pFy1J3LVs8|U*fU{|e8AE~%X%vkeeK2RKt65H9$&ln_}Zn%*B(8-
zb_>61ALoP<oT{ChUDtE~{=WY;-Il%TDw1{BIgQ^`Hhhf(IA`#!KQApo0c|m1V4lej
zie8w at E$~^fccB(<Jvw1tp<p#ii{b6?qg0}9;gIJT|H`HQsp73<o<<HQ>9faI6T0fv
zdL<pxELfP>(Y270d&Enu0l0z)x>2jp7!-Yp*7Fn(Jy~6hjJhO3je5MK4^4ysMGul$
z9_bLzx}1(=i~s(%2yN_Sm=amtLKf;bTiT&8H?yQhsS(eattKLUq=wxTpMz8v+m=!)
z{P0Z?sWTe$S58+#@ifJe&XIJ#TP-{=Yd<wUG+Z=`O1V^@n;Yah&1$*6$lA*=|3JL5
zMcHZS(N$Cmw9(Xy`s(j|83UTW-Q|yEV9-<@s(v95-BY6mMg6Mqm#CxJV*y|ivklwO
z^!8o`g&Q{g-?IY}6gneHy|mU=%(2r$m(*}K4UAc*I%`U-;_COEhTVECByXJR5Yxyw
zIv2U)3}NqEyyJ>7iJ%A)g#nAD#w3E;)7^c>1F+bySev-wD4R2-#S8B at dR~&aq6)PZ
zX)={r0);P3wA34gpQL%k*O5KGMnN_*tZ`}k_edMu<Ex^_*Ad}YZYC{EOrOIN;?{3X
zrP<Iy@{1QYolS9?l$8Y%RrJ`+R;E;wQT%^6rM5HbYb~F~7}%8JacegTY)<`}@#`_2
zcGiG$?|swh)Yk_3e>t57a%uxnj)o|WXa6VD$#Lh+r_+-Va5SB6dm}cTW*XTP4^f<(
zP6Hb(+;4yT(R6algQgS9$Ua0zD~^)>&2&2d^{q^&r!S#5cnvHoNL=%>p;+=ncHp9a
zQ6SrIvVJ(*ynJ$bN{h3Xs9T=O?7J|Ufu at VDB0&}{Yg89Z3>EESC&1Q=*6roT?<u5{
zvXh{1c4V5*n%jB?*L>GII*UBr-J4df_x*iA77NSaEG#DuyLOgHyFUt!>C%x%KQ6_L
z*qZ;nUm~VnZuenKZ%)|)@EH^kg<e1`PGFt?8t{CvEEsA6Z4DDK;<*v?kEj=bf^4on
z{H_)1o?{EoTNkWbSd?h{9Drn`{uFKy6LZFu*36htx^5wlUG7be^mB=ao4&JQbh at ek
z1~HuAc5>AZ`DmtK8Ury!lPH<3=O#-?l`-ZX^+NqC^U_<HNK<I)KVF+UKxOa%GureH
z90=^Ln=pyi?WsiC#EZb7RMJ{sM1PHv3C1ib`VL>NgTZB>J(TA&<4TjV@|jSYehHR)
z2zSWphIFU0!v`f>R$-pjQTSA{@~M`$y20A`9r+#dWcrzwj*^B<-vb-ceXFXMkLRrx
zFmsh~oIC$!2XaEejO&e+2QS9-`E;nlL--uULGmG*jnEI|zyP9vGm>-sKUCt~E>g63
zAX2^{BQ84g-;ei)HkNK}p3$cVGJ at 4QnR%Q+F9_BcO-&=1r at uc<1iK?C at 9?90RT2)G
z_HyLkMP9`*aaQ|%taD&E$I2}G=)_AbT}xOdatJ?}3Tq!{fC_?z^gnF>VGA;k3W9qq
z$owk^{y-4&vdg8lkHcaMf@>@l#$FJ#5X?=Mbr;jwJAeX`w4;cyjU9=qecUSE-hx)K
zrchYn=MVrRpMH*U&oq5!J at mcaM)3*MJhhKoOUq4vnMYzA&fweHMIB=BZ?Zl%BLffn
z{7R<sC{P(~vOc{(AO0#9KK_Ax{6(?wKVo^}`HzU@`6QO-X~MDVlcByXr((PO!<#{#
zT&(rHCa5_gR~u7G3eX31y4!-1j_t;vTb^Po|Ks3M)L6mtuL>hIp{@PXh$u+R=k~(q
zwqbcrrjBcv_q%8pHNsLW5zzbs(B at PFNQZYbO4|E1;-YNGN3ytP3mE)LRT*Dw`5LXk
zaZpZTP9biD#>wapw?&W_-a&NnSlS0Kdjb;A3D!4+n6-)4eJOz at g2k|c)*~)SoJ!Yo
z`*U%b3}n4bQ~55*?8x#$Q_PKI4|dKZO*TT%x_X#styeXegnII?gr})f(T;MVewkPO
zd}4a5x~{`Pukv}@Pr5B5dm7Hv8VbC^<s9jukXxZ`4${~um<+ajok(2ae3Y6X%GEX)
z!Tw at d0NxmKfuZ^sryf%5RsZ+R>X(WG1bJfMw-rK&>N7IoWXxsL8~mRfB$vHVt4Za$
zSF2)9q8q3QBOhgE<T4vpfPSRwM)--LC+ijJ^73@~qfzVQIP&z;2Xg5;Gx>+zkk5hL
zUKa01C?vefuL_qZE0?vr*=<GsKwX4~JePi{WudrZRVv;0km{$#uL-UoNiR$!t6xY=
zpQ`l}SUjP11lNs{y-p}dRz6|4OQp{$ABy^m8{=q=meLDCjQ?Lm4s*5%$6vX|VCY$f
zjNgU#BqIQcyhy*`$Hu>}jX&271-X<u1|JG1IW&h|L5GT}&^89UZFwpmgQxO>pf~)5
zb#`3`OQVjtbfmvnadSXN&5Q%rb+9x(L`3?@TGqxLv^H+HA^4*et6{74PNH=b2o_%V
z%dZC-5Y}xs+((MeHXCkJ at 2>VAn4nb^JQy%Rg1T(oNAqAqtRvP74-ALcFu94;KBP(1
z0&>mqZFG)o at VoJy@IMBfq%1-Ao)(0}oF7KOy~KA<;N;{gss}A&qXv_?`kLsvY)Csd
zv7}824kQ~MxHlu1OXCFdQbaIg$sH${q93NxMUG%bk|gR&KbbzTHq*2N?0LKO!I3Qa
zwV5CGjI1Q9BnL6F9HVL;<fUK1Df2_qptbC<RWrrp{BxN_ek<7BJU at H7H_6}X^3Qhp
ztH~d+?=$bshkqRlpFr67ROIjq4?pV=NTi|s)W2gajkP?%9LCen8azWTJT>^9b$~Tl
zPNCOu^p4}|mS+lsOKB~}z~y?)%k-(4(NvC4LL}yv$$fadc7RBzuL+m_E90&9L5mXe
ziSs|WfU}r2(RqRt$nwJVIW9zw_p-aL??PV0;9#V&gA>@|Hrx00RHC;nNvb9(e7<(2
zKUw*RY#P_?9P#+`$eE{S)p at 7Yi6@bj{x=Lmu53+Mc4)5b6qU^v4$rr8t5eH|jWI18
zLXdg+Pp&D{OC|fUGe4T3nA|9actGeKX at +Ka%M*>!8pQ6?<mmnSD>G93m&^kMm-Yn}
z(1ySLMF5JPymWpIpV(YT&_9~NAj?r((1b4lh>iZ at 3&F9BL3UlVy0GA{1#BG>H?$|_
zv~yg;VX{Av5jMw~_!L1ejrRKo{{0MuX17k+w0oF%vP7rmZ%gf6np1lh^~O3wg4J5<
zw<(W*D&=vaP505IK>n5#$fdP2dP{$tXfu~aOk)npejulz)5r#SvqosuT<Hg*taL9l
z<>DL=-SE<`I~6QVW-o^Cy@%qsH#+2Gs6+0J4w=(1zrOG at Zei56ywj~tjK5VO*!XhT
zIHyk3bNCK*)o+bo-8EfxnTEOd at KC|L_xeDFMgD#aH7Ub$isrpHn7=a3AJ7o|?JhTe
z6uyD5lTS{tu?Rg5Lh)lZrGixUEba!d)wqq(16M!U>Ok!R(l;9(0WXp%3Q1;1M>1m^
z$v`kQsL*ttz-{lr{+H*4;}-7vCh{B*<2JD8xY=<<M*91v)m{4_B)4i9;^T0J=B37g
zlYwv?@Xa(~Sk1b{4DMtyV|TfGIJWf#L~qknn*NB at q;B60qifT3`)zRRF#|ogD;@1q
zY#f`zajY*$`;22zbQZu}k5zSrA8{GH<=t*t8^3_xO$M?0gYj#+?$8+07@|>arf%Q$
zYHoekb^iGfdTfT`50V!MHvSVmdgN3de|~tJ(CUq1yhQstDb~dKMfkCi3)Rs`4xNS?
zzu*@jB(v-N%h72+Ib at wFU(pGpGG|iv`y<f_blB2c>sLB$FEiZKY^J(nH|dk6KQk0#
z)hXiKih~4;%3SKpH_y|WsoCPgpOq^6EY?b9phlL1)e7ygRF!`;R06lt)c-B{-D4Z_
zwDZ1y>G|rU<fzOqRiXCyt?$vokahk_@$sx%WF(=bIo*A23<gt+TTul3K^@B$FMLKy
z3>*j1ZoE;FuB20nFY|Apl#X)!dzdh!oDGJxs*iHXKNAoJJA2B0GnT0srfNMQmZrp@
zSz(nqbmyqNxgObE!<6<T&WLo5e5XO<$o_l4$$D7 at I@;Q664x&d#I9$u5Vbs0<bO^F
zg8rJ(CzH>uev5;FcSPaN;Iv$LQLs-K4mSQJ%CIO%5h?%9yf9*<Q=4ATA<X3;&P7`8
zK_xOf*8!&F@~nH>R- at WzqY8P=5?<we)y_yFO*gqKEdez9>kMD)?onnHC$AMbo-YA8
z)Jp5Q6}M|fvQw5Hk_87$r3xSF!aHe_j>(&_xm&%`=4kVZBv9b5Mes;3Vk!DX6y-&F
zYU`s^sE<M8B5WD30RxK5;tm)#S{~?B0*9c at 4H9oHB$UW&ErS>?p(Zw1;!Ch%<jmid
z2qe_EjFv_aAs_7kA9nfOXvXvhO4do$!RqdtT7RHqL&`zd2#Kf|lx4miU>`mH?2CjJ
zRTHA+NHRreIo^fKy!1F$Ug~6{FYH(aRCFiBBJ3#6*RvY6T63aqO3 at SP-qnbyl5ah?
zdt>WsO?&H at sZ5b%FXcBCDWfe?m>f^et>bwlsr9XRY0&FYGN7LYsYfV+zO{|0 at vk{s
zbsT)8&9361Pr`Wct;0DLa8Co-Os>JCiQVW<hJJ5Wv=C+N=V)Jcum&^iXA)`pGqt`t
zFLgb?7MGbqUdi?AQibq+oR|1Vis5C8XFsLMeQS6rARGg%M?#KdEit{z{QESK<#6l^
zzlfsI8$f$rtR{Ky<s3m14uNqewr_B!pQDF|JJo94f-dY3P~54m-184Vt9v8crPE<h
zt;dj08K%)+P8ak;y==+#-#8Jc0~FJGOOm*mxwUAfFrm8;Z|EjWrnnG~m?r3}*r4E#
zB*#R$`Nt18<C=~B{pt^=5}BX+>*`9&iW6-wOKpH|c2WV3_bE2yx%r3ElHmQ!K#wN3
zn|$g7{hXy=?ZgwUQ*2O9!So-wOLnr;f5wfU6q}rJIfAO>nd^|II8_mC*+w~8hzgfY
z_m!Wh4rvowYZL;oww=)PXg{C6wOlrEQYi=<n)JfAtD_ at T{TBKJNC4vsu&j!82=;;X
z>1yky=95YpA*r;6=M`muqFgmsJF<szRD=GOsFkhFg7Zgf7kGQv7hQT_&&*C%0!2%A
z at 5B`!QNw~W`OmKfg|+F$iTS<KourTQs}zCH#5P at AS};y|b|oq?|I$M8`TYsk0YRJY
z>n><k@&+i3<ZYDv31KT;qU16quXM at 1l>B^@9Kf3vG$^^<B^N3Ap(yz&C3{N#gG(+}
z@(qNo?YouyOC?Wt$-R|)aa8(hlD(G4%)>%~+yCo%Gu-(*y3j%^W>IewJtW{w>2_}_
znRe+=%AdyWTr+8oW$(pSZ!!<z%!95Of|@E!=n}0*kSE&0Y+RO at zbx3-_ViA^!^vXM
z1j~u!J!eMTYJ(cgwT#oKjrU?2Mg1ley<eB9a3T=f4gab$8PV#q%Eu&HSAp3~ua at pT
zahpdFTby2X>A_kv&c0EHWozDvhMvQ(ClXgk$0P8|V&L1#QesG`VXoU+A`5;^%|An7
z(f&YPLBsS9Fq<bvQ#Fs#x3OJ4YOva`rh}p~7DGq0!P}-}H at G&XaGjeN{|@;%(<s<I
zhA+(@n<}`l(&@tA!HrYXzX&tHncP<;6NcOQ!=X$<O&5&R(D69CfEoSo+@@(P67k3)
z^eZC^IeWM|oC*(FwOv2Y!56}iy at V^`t4uSME<~#&;TXk#A^$D)D%t9^7p_I2k4rnW
z_^Tq>IGH)9#7iHPs9q>7e$O`KWs9;*ZK*n!6zL>2M9je;#>wTxv at _4|L`k(07I7zw
z_ATNNQup|GoCZb(+hu6686lix+A5SdU~OXh$}k%YSgbf&F@<d#)nELa!r9{Uo?sDC
zZMHb6Onmvs77t!5A<;<%{twk4nLR%R|Dbg7A}v9WxeLNkuC+GM@*)6nR4IQ=u5!(x
z^g~6qAY_X-bWl9L*inU+E&o&+3idLaU6FdUsMC^&LehyNkGxcJtWCX8D*0U-a8Q at A
z#`$M9kIzXZqQ_7w`74<sspMW41_?c-631H|PmQD!#rcP0D~(hl`TRP%`6zJ(!Tnr0
zn75B1_~7qN6`qH^^D6J;U3-SmR$PWpc(=BlCE<c2h_ at K$P%?fEqy;x{IxufnSHZ6?
zv<m*D3XY=!#&_5o=&hN9yfqQjQiY`3$BbSdDWwoLcoGLRE&TPT(`5S9`O{RH7Hx+N
ze*kk?6w?<hvj*O*e$P8mnX(7pJjGfZq89%JoAEnoHWE79u|X+bg5|Aa42dDh#~``_
zs=<NfTV=Rpl&%%k>KE^rKkjAnN}1hv8?WP|-Ec6CgUa2#N;X{|d6kRjs#Pyh=hqKe
z7tXW!rQl6^$aDXB?PDaSmr{{Utu0sNRiaV-r-wJ$=6`tSKKY-PNfvS!=b!#+pfkV{
zrMrG#Fd<bNfbX)(VwS at y2xnZ8xKa+G6GQO*jbg!{8<wKvlU4$_gca%YTp^$=OKmHk
zY13F+1f}vVB at _Sf@;a#bB<P?-lZKU)`B7XHhN}WOG at ZAb5R*N43A=cR=Z+PO#7`N?
zV7^#i#JmuFLgoi|pzVU-VPxcJt&c|C|B}%|i*Sv&$|k#mzr#wXe<RKKzrvT8{6mj*
zoUbl1Csls>kalxYK<r~?uPI{@{L<hLkLE1zP at t13%q$nd)ntosc6pX#RG6bZ$}uL)
zvCKs{hkL4HRg_~!m}4ywN+{qv)K8=rVh7#vLGP9~k4$C<EW;VSm-y3?2|L%fKH2;&
zPFR!AV^X=?`(nAb$H!iJyZRwdnk+ZWEaf`Lm1ye=618!uh)`v-!(Yy at G9|8evw<sU
zWD9&-nraHbv{**Ee=Q7uJ^Y?yyq;`4IEZ6ETR6!lwJTzJIH&tib8uFeyvY#!gWM+V
z`u)XJkzPysBw8oJOBVbb=>4aOg>#OQ*s_4INj0OCJXXo~5G8?20-OJP<sHeJ7U{*+
z%Mxt|D%Uy6b%o2djpe!|%%v;|vQWI2e- at Ee^*8XY1sAB$Ph24rx9X$hH<Wy?k`Hvr
zCT{H=B`;9&I3<7EC7Za_CrX~B<Oxdt>{RP_AA#i)Hc9YulJnA7>v%r>-<~L*xdl1r
zkN*?OIZYRsjMFqcCf~HN%G>mWS>8`LFXvP+RTp*?<69NG$`f!e_A{K at nl#f(t#3X@
zuB5xnkxGE}_ot_uWohnD@^(tz{Un&>RVVXb8~<&d at lZ0pIfjhyouXvth$*LPZr)3m
z+3i5#Ofre756iMs@(0nX{{vOKzy7P#f93jbcmCVFmA;g_RISV$MV_xgQ*^p;7MJ^?
z at Q7S^ad2rE4*n1Yc8R6_CKv7uZq0=k2lcV=e!1|Xpd%K}#=;YG;l;tXW8p7Z?V?`I
zCLB`_=HKtaOx+!QINe|m1&=nQU<+SQS$4Tt(3ZhgPeF;%c{GxFxB;ruH$rPJVlolc
zE1elynMp#83?KIw8Ev;nn$9uQ!=a at -=@Gc_ttSZO`!!%=u(^(L;1NV8Hq$ZIZ$-z*
zApw$OQNCYZrU9-2+j`bNi($i@=*4+jB363YpHyhePyXvonDO6XY^C7SDcw-=+Fo8N
z6m}njENvvYV=Bf^0h~?zWRVQ;&EV5O6W^FP(sp(dV(w9Vw)oVrT^PouO2$2rakOfc
z`BfB?R9E63EqcxtZ=6d~Hm7A=3qJ7>z$Rb)6ttOsyWn7ZD{97ztU6>YhBK$ZYCbMh
zGjhu|rn<`M!%fTjh5s%fGj*$Arfu!D(l#EV6?^xBkOQ}YqCoz{{Vw>4s7)sXBd(7q
zuQRwQ7hV*c9t$553r{B;qfXPGotQgay8J`+94%s959*Yjc}P13s at Kf6)wcM4umq7d
zvPkTDFElmeBOMO6ds*T{qN7Bj5_Pr43ez5HMEp&UU8Ro^8a=Iti5+*{ohQ%|JMLA+
zkCM>Zh02ye@`8zt_*vWrcjq^<D?m-X(SPlyHdI&7aTe7w{&w{ZL2HHCuWE*Z{qVP&
zUulXZov$FQzf>VTxi#z_TfE{m8uxS`|2}X_KRK+G+Fr}MgewT+y@#c<=6K6BC4HJ(
z+T9W=3+!3s*6-}_x1C at A2%81PeV|7A?omuzBvqqdb%~!+{>j<uDt^^XpI`kU)~XTs
zC*7L&T|!7y=bWj`@B2kRL#=KK`MV&Uc{{n(v%}Q)nB}rKYq#jh(*8J$E{)G5BIyHk
zFSGh_k*3RxpKmjCIVeKo=egwGvhj1HLziwqpr2W#TCwA0U?MyvDxJDV2k+*qLhu-?
z`uj*5#cTea!>bVDPXQ_$txUg at L3wVJH26{~&U9^D`%u0O|Em!y!<Nxa<qTqqlzG2Z
zR-}<p+v`DQp`d!B>%=sx1f_`PzioJwK0 at 0|TsQErnnI1%%^lQD at TfVEo6?E4zo~}H
zpRnnYdji<m^?LKhojrc^*zp&fp<39kmL}RRW8Pjqsm~b~o_ThnZJe9exh@^8`qibD
z#TW+Ct6Prm-pFg#b<Pj%qqJOLC#RwO2o0?w%KzR^;0SsnAlzTqmDf>&v{}m$`MNs8
zc{Aj-;4ra`hp07Lr0$%V4?mj=FAiSLg;@k+;nM4nb;9#I=UY8Gv#<k;K`16fPLq1F
z4Pqq%I3kWrrbHR-bYH&$L+P3WGNVE_4wYIgCpSx#8qSdKDJ%xz?<WGu_S;_sfc&AN
zQB^};6C1+Qxje0p#khKG@#&@*zTVB%9sAAJ>bB#+`)!e9YL6}coib358r5x`D(#~?
zYj!_#%-IKMT&!zc;Hgm~nwPeBrq9bXPv{ZWLa+p>ZTUdU)LK3+{3r{@D?_GK21YjI
zBZ0Ft<U!0j)nUDFC%~M}4lkq?4nqq3bqxZu_>TMIOwMY~6dwxgqto}4k6_!XJC&5N
z4$x4EIG^mn^*cuCy|`&Ys~%zfX~oPG7ufXa<F~^~!9ogiD5$E2j*HzPDSYvOrX^<t
zk2!E)hK-~qD!Eu=zsMKiZ&~;&lVJbH5-zgEgKSp6uXc$Qds8RPGZ6 at K9*Q`w0tAxP
zy;1z?52UCavLopDd(b^$u0$gw<a-%M`^Ntu|9OH6o_ND)jwh}i0Z-&~;C=r_s2!eb
zsox&yQlBGLJW)N>KuP@}g40^0PLwFWiU9R&`;DXw$Mor(invQ6ZG*^2Wdc9slNAbX
z at sh|;hv$$_3g`&4VvxdU?wm~E8yC3#$A-!aX4^<$MDpAF9M2Q_{GS0m19^bPNwlSN
z8p3&6s6k}oi1q3stDVJeoQgerEGPgyH}R{XuIDx|HztbTht49>5o0PDT}Kf|V2---
z1cf<Hrg%OD#GF-YPx|WP{{lQiRi~8K7&Ya|NULKh1#}rs-O_hi_*=!VU&^TEIC&X_
z^lS)|VD3RpTPGdAONc`|YgD5#71h`nBUwIk9CSft;P~LPPvM8SdBo-E;xRkpk at N!Q
z4YoUTbRnbc+btbhP_m<iGj>!X{~;~x>#%c{TQf({mpm=pz7<-S;kdyW_+ZzpWHzo<
z- at -ZNCk^7_J?W7KPsFgB!lc{io2oLTglzHg_qrqvoj*S*D#OHpRYq4iSOjl%hg{CJ
z^(g;*ayU}a<(h2q0E&wkR`e3k{rVXpz~iX^x>!fM(9ZSd16bL7Wuqh3VReLITuPk&
zM4m3bc)t2elB6|DGWEk6e>cX4Mz00(TrHtm*IHy6OLG at 02B%RJYZ8A(N+iJ2FKzv6
zATP9EfHkb~ABFbCP+ZGe_j~=)H|6sg_;zQ9v9qBwq=V?xmHxSTxn9L-c1*rm2_^n#
zKjPdLvEx$_1L;*NKpzlyA1deepMh5qfd at urQA%3QGNtitzZ7ie8}d?l;_J%C_<v;x
zATK%bN_VupS&T`@%_Q=66;dAxpSD-yRk=1 at J!Vg*Dy{${VHMKAw;K1l-ZWx&a_-0p
ze|YFHYM^?x-#RJN!_F{OzCbx()?KRW&=pcMxWbxS at s8&*ogJb{(1eFYNY5&Mtcpif
zOQcrh4*}5>b^c at u+I<DPs&E>MhbD8GChD6<N2J(pq?o=d#<jqpC>k2v84864TerGE
zZhc{V{~pm<AO8+I0Si0-->@(oF4Ej)EUZBUYr?2Dy~R6(g!|txu<z5jPHZ=0V4~iB
z$B6uPU52LH_?T@<-tgCfzleuLJWBH^;$1!X)tmi=r_K14cDY+#za}|!*cr%UwrJ;h
z7Q9txkL)}e^&u(t1y3C<zW1+g{bD$5;kr%z&lF#LH;4{-)p&(T-vY0?gZ?YYc-6P+
zRbxol^wmsWL_EKVIaxy;m$Q_}%~_AW)VJb8tIardNKU`1vmOqo4J_(y8>x20?C9YO
z5Z7oVf&aafbqh6!nEuB&=vWSqwz?i7glvhJ3XG3wXJf?F5hCipA*R<g3|m_b+u>P}
z40YQH3>=f}9^(FEO1cl at od1fF_IJ48{<n6FBLF&2Np41MPDxiW?V+SI?+91F{jU3q
zqY5LalmS at 07jza8)E)|NfuMBZ%P48-QI3)dkRO>OtHf%>0ds4g*@jg3<H+aC at KiPP
zv3N(L3Zzg<a^#~0ju7i$amb6h^%-khZK at ef#ufZpJCRtHDPE$kk|a<psn;amuVe at S
z_!a at oT3<?9RHdeSxc;eD|96 at b^sPcG-Nzs*zS1ohfy1cX#1a6}N_S;HTj{E7j$*cB
zEf~;^{@_}KXc=+s=783I69oC+8_p8KAp*^EPJKN_B*onfgfXCS^2T~b>OA_deyjif
z;u_b{M*lTywD|fzlbYqUC4|m$P1R6mif3!u3n~zMPsjqcz#Y=JZ-PAGU0Ct0v8}D(
zhk}+?taXm~mPSs at 0H!hm5H%29L<`h)CnKVnN3e!yc&Ks}_$R6QZ1Hw9uNj?Z9Zmyf
z93xZwYmg%X(ROT0+qA8(LT4C#_wn~&a9M at 0)7mQIaNKvZRj5-GlwXBrgd_3aFpk?p
z;wcegA_-cvz`qJYU<n%k6D1HaZwJHE8~#Nk{Ku^0dbtSxZx*3X=@8fmZ?=zsZ1Swb
z at z2d!$B%8I7gzkL=OQ%7U at QJu^aBKCkl9BHi+)6oJq6}H at sF#daiZhw5dz*3gi{N%
zkqvLh_s4yp*xD>mwxwmLgPB#MW#~q+O)6<L+}>(Lmvif;t*;WtDUlEK=3!3uThd23
zE3KwJ7Q#yFe-x6HmP4tPxV3x?#m!EOs%#;osz$pX!=XENW&4Vfe=q#tRj~z`tMw at Z
z{T?f6Y)dF+<gJ(0UAS24(w^OQLEh#+mI!Q)pF0(j<L4Vu`smc0d?Ges$oZLf-;rpd
zY7Nub=4~R;BrdM_dyB^AqPNoDk=|e@$;ix{OJOiCRqQ<8WDo8>4oF at +e2WFJ-kQE+
znBOjnuJi9!P6$t<q|tIC&QTWMdR(D(JLGI>lFVs?P?yr}x!VOI{7-yJBcfuO-Ug<;
zH~iW*1a9<o%3(-{qo`i}h29&~?B){6UykIY>!QQdGfoQUNo5k at s4g?K(<<<wDGUKK
z;y!pp!PBUQBGGyR7JfX}ZB|la2y=>9RF}T2z`rPDgX(Ib(>Mc)(}5ZolGFC3WznAK
zg)3he4Zfb3{wpSD3fySur5c*4#LCyjucs*rWwm}Ia!3|pt0{^&K#@ifi|LwC1p7|%
zuT|C=q&jMdNdNk<8cYXyUT`_-9Jr%(Q8nBbtgr_^erjJl7NTDet4;~?)?=A~)LKGo
zSQi?3eS>*bqrWApE$q4cZ+wY<R1{$Ogo6qub!fvSk4U{|xJ4^CkOOqS`|z#2!9ftC
z4Uq9YjKzM>jE;!GRBKLSs3=D#I6GYDZ#&GP*k%sxYCM8h!gG16kE%w7RXMz(rOQ`k
z{gjiz4gP#1-f$9<MY)4nP6^y<z((E4(IyP8F`9Qg0w0V4DDi<!Fd2<$G~A3?@Guq2
zk?fw%AnhWX-0%6-)(JObax;kPG!>%T<FnMUZw%2~Fy}*0G*Z<uuBzTtWwvdJmcs~|
zeOohp3^R{CWga4sW!si$d%r}ZcXh}s9}4S=49-LYk-?eaqKGcrJs}BmMj_C4quLjT
zyp}l%)@}w<>bT+=DqqPN at y*D#Y at A|589NxLW>p$JNpUhzYQikFJmHfRx96Uu$g{_{
zl+h-`Qia4G*D8SLK=(R<lRUY8R7RiFiS%$J9yQidQ(^*gjrA;)M54}(h&t!^#ba&*
zP8G8RR+OtM%5|)`O13z4n-;t95D1{xD!s*B`EaU~;%$Eyu7P05A8?3>HZ<(tM@%AH
zyy~}PfCmgURtF&~<I{$s;`J&Ft&L(a?G7ulHp0c!!r9^%Z*gr{lg!ab;o~0^wpXBj
z0nCgzFr^VNQx0{#YPVc<sNW-amql4lCJSRPHF_|W6*)RT#Jj`!&?77~xX<QZD>+<S
zWt5#Z^jIw5 at ch|vyQyoo3tIUYJ<}ZVy45)NJyvbG`OhNi|6Vg2WHzdCsn+w8cAQ1M
zD)-CVR;$zD;!PIi4mh+kJx4S(rA>9TBOB}~Qk&V0?tYL=*oWDa3$3v4RPA6JN|Gt|
zt#0*7hg&G9bCxn>CunsQC+e}u at Ry1tdaSOtirMP=GSks&j+WQo{D?um_~0#;s9uqn
z-VznSUQ5s(tE at mNE++y~Pt5Is+At3;M*^HYxTs?+h3>&ot*ru3=u{E$FN0ERt5FM^
zajO$fW6TxmQI+}&*H$HOzQP?dl(lu>LF!eswrc*Wk+|KlZbBZQkzyPVa~u{2P6+Rz
z0rC)np at EM79UD;xTW)0qkXdHF77ASAAJ0J5!BxcO&iljj{J%q`!Hu{%55NDc?{VfX
z7Sm7l0lSE`*j)#oQCj?(Wq1Ve`Gdi4Fb}8C`SU=F|F+_9#PfS}?u3RUD)R-<2Zy32
z(S5mC{7S{2j|boU{e&Lr3zU8(PG<AztcOMAGjKJ{<$3Fukm~MLUZ=^KbFyp1Y+eFc
zx!&`Oey9P6R<6T>&pD=*o-fDkOGN=QL;=wh`7T+Qe-53_JBOotM+m_T{7wK*w2;fL
zd2QUTx%XD=niJFSrsS4wn}eBhW<kHgd46~~(|oRxMJO`%oaT;Xjqvw0!p~205m at kJ
zErIFI;Ny at o%7`>pa})mbbF5}3^LO8q at N*(~r~+W49q3_F&TqQ1$fwTR2v6O27dD-x
zZ}T*Ao6-3uvkpHaZZcW1$lr)&OCX0&;C&|DGSk4`In%&K8w$7J23Lt&F%p`18i`FB
z=(>&7;e#8s0{q(*=8l^j_qT=Pfhti%xWX)El2XT%8_2Nf3UjWJPVp at _tA4k_+^BH0
ziuGJ!CR`sTX_1PrFwceU6&PS!TVZwy5!i0Iwz$H4`2*MSRd61WU%P&zb!e?VH1(gi
zT<|FPW6X5mT`QzT9{T~3Vm3iC<L{j}<L at y5+hXUawl=BlCe<bvps%8(UtQx)+=mTf
zYwrIk<ikBmG at pxYUC|*VzhKzdq{8N7NPhQ+B>#Pj$%9G0x|Za1TTGVW-UUkT1d0Ap
zTS9<2eMu_MpA6BPc7RvNLk(|sSW+4Wwyk6QhugOReKSNiYy&X+W46?rMB6VVu4ji0
z6g=-9pfTH|wM5&AF3TqelV#zSvpAvOnFAZ1hmBI3Pb}C%mlAEgZHo}*&JO$$S?R*w
z_H(OAYW`JQF8L1$+w6;H7YJ&`bJ*G=RX8j)a?7P|jF-xxZs0XmbXZnD!eFkNepC~g
zf!s9KnSlfkh5=Lo!M5Y_wjr0r!c%hL#lc&-aA(k&3oi=xjD=r_g~!IiFUG<r<=X9x
z)ww8mH<oAri}L+BHWv0`;WK05dvf8$LH}6&Pvznl1^<kN--(4+#li*S^X(3bg$KvN
zO|fwASf8(o#XlblcX8n~LjH%b at T;*rhh3P at vn&>$iS_N-Sp4g;@ZZ94=qO+Th7U-Q
zAC|`Ka_Vq`(C*)~pIM5}D22(TI}@!^Fr*KY%V7V*m$}0`ya*TOKVJkvrq^IxJiNp&
z{+9%cHSG%qsm{*fL-|2Q8(!hRwm&mV@(P=mY>nO9Av|<GLLM2Nqa-4*tm)%ldw|-V
zIv5kL3h%JtRZT at o(VnLy$0D0A at miiRzv||9z{?y<h6xq;Pv!;a%1^wGukhr)aQu;8
z^|A>(j##t=|K`neV}2fnRU;+L+f&VF5B_rlb9Dt>wA01lJ50||KEgLq_EMB<OZ-P*
z!@)#S{A<bRe^9BVXxC3snr4Rj_k3Sp2k%8arVC!|ANr{9Vuq>*5R9(E`Qt5qrT>e4
zqqEG}R2P|Q)`jCIv&{y=kv)~tc?abN&UVnbV<cDnD}p$4jO?vOVq=xvwV6mA&om4X
z2AlhzOvZDGJGJ%{=g(t74FLPcF|almi~UcL6|Bem)soM at esK3j6*?#^6!q)VkZ#ql
zSHrM;qUbKVT;peUM<dj9K(0St20Fn_5bNDR3?s(1i>hqBdmFIH+WbZ`vr9R<?WVnw
z5)IXb$~Uyi1s&v=Y5B?aaM#O;-Rs=?w<s at O=KOK-w6{0!?z`Nd^Xm^ObJJw3{NMMW
z=nBltc#yP`yE(j8tA}dmh2^$^ND{4=BD7$Box}i>r*kSlOje_VJxDvO?BO8Q?5H~v
z)4#=JkRR5z^-99IG6-dT$2)i76THKl%$f}%+F5%gH;ot#XD!ixWe8zx+A38}_a9Ko
z7Dr)@>4zvR8c(W##4l<n(??lt=I9DMOK^T82TfI$aR62(e%Ha_zLhH=Ud98B#~>hk
zG^e-2Jz8w9@>&*F at x3<Vb*GQ%=C*IscrQD?)O?<%5A-rTl=Eft0&a5PgyKhqwcO}S
zw0s1Rwd>mPukjD$qk8l$0}^wpYi1llB-)lhLK6kN^e;=gZZbJ|?kZ*me^Ui1{pj=q
zO^Gy5sjbxF6AjXKki{|^1V0=ES8ij%+hZA?CTj381ui?@DH1+go~SaPR11XT^a at -$
zbsb>z&=Xz<C!N_8*2PUf6M%r5%JRCNb@{*)oM1s7*88d3!TJ?Y3)XwN6tr#Kj2#4Q
z)2#Y*I}X27g&Rg6l}`2E&~>fBn}<gV&w8GY*aAFWwhnkYRtXlp4wv9<AbI!Dn+30m
ze`pRc<fRSib4t9z70LAO$@GutCqtd%bcr^6Z9*|m42=nasm!*i^bYmuj^i>Tx9vVI
zJ#q(pEFOc8#W%ZCmCw``uJtNEu4V6H!#VvGMnGRf*43szX<1ToTxOU4KThw`zpi at 8
z_>Y1|O*p9b(nr*xFwUf^yHn}Z5%Kz{tgdhg9&cJU;LU6s@)I7yg~0BXPAVHv_~Z0|
z!s;)^uMXZbwP6k2Z7)nr*H at 2OhWECGFyk8GBqEgHIpqT6L5Vp9wOq0<4L)bP5%S+`
z6DE<|e|+CR3BHhop2WDwZ8HN at aSuqFutENl`v{>*(B2g)ED7$-)sxDUmk0OKP^Oyk
zOdoMnCRMmz<H`M|NhQG#NU6(gOHy5WhkRNvi}+2(-}3iTm*?i$M<>S~otptB4YL1S
zIo)bGyu3iqg1qm)UEz9}AK#`!{UbJuZ0<s``|bDP)j!=UTIoBx9>{Gs{oev@*Bt+L
zs3?>bd`}Y&1mvr3{<9W?wZvPVwsnct;hNbP^C#0ALUx({6po2i^ojoud+!4u#Z~oj
zUy{&9LPNCZgNnLsLrL2}HxM8oZ8wlWLYJ_Gw5Ba>HY5w#vLtJ=fzYP9Z30b9(&n+$
z2NfSzMMXtjTUyhW+SJk(m1?Z0v_ at Sk+F;SfM>HV`%=<kvyUAoo0!aIL-_QGT;pR7U
z=H7G9J@?#m|ID2k^tha_CeIxH5XzMLLo^QORlJo|o^>4l)`<S0l&gN2$9nwzRbrj3
z1+;Z}D_`s6i}ITIAR~`}-~W4QwNDMT?+G3FS+M|T>*5!<#4456{rr`E+KSf2^sq1F
zy~NV4Sh~DaKwgY#R4yjQz0>DjkMG`qD&@tp+kVPLc{AL$zv{8%%Lub+YcH^6pHG|c
zaq^}LdYloT9f|o#xd$ck;vehZoWR}d)`VAi5QQA1r!QhH;I(e;3KYqf*$J=aHx&?X
z1S7*P=}m(=quBb`6vh`A!E@%ay+PIKo?eYC;goHcqm*MA{E7A7`tu!pIr6RUDr_O2
z53D(_;=MX=bUy}<WA7)Xk#F?Mn at 2H^YcnyAxyZ`8&&^MX?)b6`gOCj9G8icOqCOaq
z+8xmm%Fyn(h$c6!|JI$sA<t=CJV|d at D4p$h#@o>@%cJ$lLkZ;bw2`3uG4eCEV4Z}b
zk7~M~wPA~|o1Pev=PN(lPsVBbU{F*(LIOUZk=OL+DOV+=c2`rUj8x`JM1uaHDNR=%
z-gn<(JWo0~l`oh*r+bJYr&x0t)sm)v=#9cf-$=!G3|g;?W3<ryS6ozgH>_j&9U%|>
z=a};Rk at AfpPbYg{<oVX~ljoaDk>?JPr^q7D$X7whAlsy*27RNk?2KQ_3&)!NMAyj2
zzPEkE*xRPR-Q=yjrykq!t1G*cX1^P2l}|~e<n{g~@41sV$gxfS*yTYE2gT)~<^B)k
zUG?L<rm3mjZ&6=7fcJx|pkrga{`jIf2w8r)m}_?&!<6_b53E3*jDP9xbPzji#@}Q=
zd5v&l13vfD8s9JNzUlv*trLHeVen~x{-0 at UANt`x(|B+-F0U7_(WB>)$AhZ%uMg%u
zcPuV%!jJP>r+%8|97luG7mr;T9XCBGqICZnxftYzu-n^im0glAl7;MT3F_ItYCPTD
z`d+V|-&@_^zf8*UJV`c at L=t?61W$dE*tDl7C6(+ux#~4%t0$%VNp$CI@(8K>4vzIM
zg5<`itXZ;Pk*uahmKr5#qr3w(moKU$B+w{~`WP~`DchQ)`1c)<YGYU#>zarBLhtXg
zpPU7kW77Aso+=y8-|C)+x1&Z}v+VXo;F?8tJKrIrb)(V1f4 at m{iH_%`<>~LCd#k%d
zZ+W?lO%F&LV9=GDQa_Mb?fcjBjL&{S9*m-St6D>9kmKyegw%gM&lv4joaphL%^r1Z
zj_zw5XmegRw_W58 at m27Z`=a`a0^dJ`EI+yQAnG}`PXr&52L%MVD#Kfz2a0|}B_Xxx
zNbL1 at ygTix!6mJeufTCN{p7hf<C|XPGb+cn>KT*otRH<r-v-qEJ-x;AhJE<+-Nh#$
z%TLtvKFK!;dRsKRrr%^YC8Y9ZwGYXg)us;~yBc;7r+h!>L;Abjrk~a)Yu$sG&hYeL
z_<2gECwL(lz4Ps4ZV~)eAGtEtz|FB=PMVD9;EgDm?$0mZ$(+(q3}t2WCpaP12RO-Z
zE`|jgf?B1<n>TX8{NP2AyxBuE-c!1OD=XQO$r+cv#94mx&BS}9X7ZbB4ga0j%omlK
z?<Q;7p}wr76P7TLx!Xps#7LbH&cdHfY0$S7H7|i6BOF;O+#^OScXRa54|ji7PW6Gs
zH_3*tc=GAV)|JF3hlM{2T#_IAXtAG&(JvOi)m^GHA&R_3<TTRLuOGWvEU at _=1dwU=
zMt$1GM~^v?eC at IHGMKnR(o6BSlQysE&0~M3x^(V&O~3A*C|5<MDcjxy&ts)}?c<T7
z`7{3caI_Eq0qKWpOg@~+FxrkTW4Y%Vxj#yRDF3&*zpAH3)detiHvQ>Xklgc|KS{}#
z+o>TVEw8~h(r%8Wm63**6Pa+j@|%8tY&Pj+9M6k*88EiuDW&2h`IH71yz^;k29G(z
zJl^P at q32KO<<mkdd56s<dj6k)#WM20GnW4{BkjLFG^F|7?qi%t{)|q3XS|eKCcg6V
zRdeD3CVhHhF@)~N%?$QL8C<77^?S_87?g79y6J8)uGQQo-D1oc at u(TC*@&<)8sT|)
zLXx at ZNR@p*rZPR(8-{b$y5~f5{hH)D?bx%7Y1 at qc-55sxEBof$rkAq|S2i7>u{FuJ
zwdAI(sVid at Tl%r(DKE0j!&X-gvC`!>X at 2ZsTJGY+At$U1E%$TcmXoZ!)(6_e#$H;^
zy?q_i1YcZk7h0Zi?2_Yh<Jb at L9G=Z<dLRga<i;B510gx%iUU%oe*8d3l!T at q=;8Q9
zJu5(x01}Nf4 at 7_$^%yz_8}snImmX+ at DnAbQ7)Nq=aQLu0cG&cNxsA~DKZ)}9A$f^%
z(*x3DIGY}r2Jl|n?k|62khb?NJzl*H;*=-0wUD0opXB-*>r)L%E0o6i8OF(j`pK1?
zG;eF;xT!vk<Gki=J2}aFsa|dg$dB))+T}uPy+fd>-eo|MPTUqUqLg#iyiLl)8lL_w
zS;@M#sopQqnzsd`SAv|%C=EW1#+3+HUebAUAQ|UDmtRiPx7sAiOZ9uA6b{4DLo(sE
z3~MMIf!WU1Z|TRakBi3j;Q;-B*2(^!)(DiSVy3*iSr{RV0(2o>sy`Uz2kXx0A*|aa
zUX-<d-1>NrmGvXSWr+2|!YHqmSApW*PW+dQzUgK2o71^5>P&UzW*p6bmewx68}z9S
zro@^FuPpm6jAQ!-nm4BDQ<Hz_UB$Aj{A*~&&-G2rUwEMULwU^)OO|q1{<+A+ym-8N
zeQhF6^1Td2^P1&F>r7c&=Y1_rZq0N*`>?oUUeD`n>dU)E7EE!?I187oQ{DgQyBI1>
zejm<+mh58M!$YXzw)Ax+M0c}lGJ&_U8=Xe=`-#YNqKQ+s6;T5DrsFby_ZKD)$YUtm
zKCA1vUe`yfJlE4Y?@DCQ*K<=Geo>(6w(H{D<1j>G9O{;F1;ViPc1lAX%cA;*xHx7Y
z+&Qe^Q%E<`q?bCTybobm{LRyQ-b&(0Kg=a392or+!Q8kf4^=k1nVzWKKaDp4iLABV
ze@`0Fcwt1dE at cC~R)~eVyymtbsiha&CQrOHw}}DE**7=~wo3~_ze|W3Y?t<;rZnVH
zHPre+PUyh`Y(c5-;F!T7+u3mUQyPL4fw~e~l(*E~FFSJBipDdZM$D$KNa7cB(wJDq
zCVp%?tk+rA_f49zy&@3~txpTzr;_-CLepoW!?jbTz6?b-H at 3@_g^dzxN`u~LMfuGS
z>y4&$-dk7dcjy=pJ^tTf2~S5PzUW+L0dD<u>qVk|+mwc1Afm4Rt0%%tG)@7;;%TOm
zj3&`7XEKa=mblR>C_H-=ETkz&raZ4Z^v2%`QP6z{8sTW_WSD>I-z%YEFpgPj6KzhL
z(on9qvNen-<c$sse>~;>uaS-y&5J at Ms=kqFscng_&|@zei!}|zArpDwq24AQoT0ag
zZ?%orCZ58$y8GU9Mw<x1Q}S}_1DOppnq#e!P1{f#F`CA85RXOpGc?|%$z|*2&+9K(
ze)?PYU!);XIQ=>4wqUz>WNJ?a65|`yZB&fesAh0}9!8ZoW&0`N5H%_qzZliuFQdR0
zQ{ZD?V;Hc$?J4#Ot7D%=nCLh&+M4f8jhWJ259y{9l=P#RQr?t?RN9AbN;d2yW=d at m
zzo}l5VM<c*x+zVSwq&&Cb1<d94O{<ELv8q&)J;^(KV1<M^Z5sLF+-BkC}KMJ!i9KJ
z*@4 at M3^6go62GZlk|E|EITMR#C)#<4xqMj6m<MV2fxaW-;e*1_sDkYF$(*oY)OyK6
z#O}UNcg1?sKGsHTeSMlP)KMEN-RqYtrQ4FM at 4VhB1-!>STIsR^pU_LTYPe);7!WNL
zFDf5 at 3)Gyu&hNf-$m1OQDO+Ts(u+B>>SNe;_j~m=Uf)51j$MlEdhW8pR?jr*zsuzV
z5r*qwCE(5NdZa-;l3^D{Jl!}(L_Ky?hNx0iGH{7iPc*jF(a6}cND^y*qzdqY|N02A
zqWy^O$3~`D7!!Fr(Tu*w-0zHx+{Bih;rVRq!@@dm;V-8&{2k%+EiW=|(09tvwMS{}
zmicpc<-278m2X_oW$3<`oie&KdMab13|-i<Z|Z8k(UG_C<tYuk00tX;CGbIGE9(|c
zh1V7E(mPUYz`>X0@{FyplDwPUGkL8KhhlQ^vcNOsT4|Q+*C{5sB$>!1dbP-vAgk4_
zYutKiOU+zaMPsjg!!$G3`%GN#aqFz$yR>|`ocHPc9uAU|&N9)=GOEDeM8(h*INQYX
zX-Ou6Hb!G~3^U$GeHxzZUR at V@KRVK4ON}<#LE>Xipl>7kS2&V4z`GkS9#K)pR*Ov;
z7lyQcY at 7IOc3bt6i8WP77|YU!M7X8*j0pF*j~yH4Ih0vYl3mFFOOpLn>;Sw~JRI0S
zv81^V_oOw9>8|_ArFf6(OT->VT$5GI2jtqvxYm6+y0b)(djsnw!u&H6|BP!Z<k|<g
zX51Ng;n=D*!^b;K$KN#_|G;!yXgZ$6u`%D{#Z-TiIiIt&ChTmzHzfBDxC6|j?;p`g
zU(?DUFP35v<z~J>&T9}KsTGYhKPdKPnh at q5Y~C(I9cNQbs42H0uX&j)YBdse8jEo<
zwaKf$w~=R%|AAuJOc>vo8<yt-nrj;Knsv6aaM at I|=S4nh%a- at -)kt$wPV>r!Y*$Wm
zZm|0rMz}00gqRQ8<h?R1XXJ+UQ9wzuDD?BjnD>&UGNNhbrX$~ZWQej&e;-V<i~6~w
zk3oe_TP5N&yO^t9vLi<Os4oAXnKNjvEMd at kiF{v_Xm--ne2n!a8w;xeJw9)s`=HJv
z_n>Jo^<E*hdbq0 at xjlPr_8r-GW*6TfxAb$MQ+md)y_8<I*vl)ObUH3XvV0}>{bc=h
zK{Y#Ni1LW6TR59qi*(rL*5M1~KweX;AL#xs-S_Cn&gSTq+z=LuZgx7GjU>%F1L`8|
zY}Q#aKWTKz^5r82=T?LBHZ$jylSQXgUvreZe%0Bm$CbK;m!u|6=-2|<Pplkh?%3nQ
z=bgunaMC>++m#*I_mRY~;pdMzZi?CP^T*b3Y`WdR_)}szTV<uJ{%A+GR at E0XRx#4-
z)$+o82kIVSge*$bKf4Di!#Js8XEQfpo2Rgb;cWeOhc48&<&#c1%@66;+WNThfv2zT
zk!#J*id7q5R=VCe!d!VWoC*Ad#%)IWZfDb1+lif<(cx at 5$x|NsXO^6;U+sjb-&nbe
z`hDXrCI7m&yi08M8Og;k+qVLYf^}B9<$gU0E!RIC6}gbC=+t)tXj6MQEa%P7I7H2@
z+r$`T_k}Rfk7Xrqy)bD0f=#Zm619XrXj=Er*<#88*1DACw^EwHOVV1Ri+^)T5?y}#
zefO1|u+kae-t!;d{Gomyy!n|P5tp&al)UE0m2kf5boZ%Ax;>b!J%paI_Rib0ZyPf9
z{ML1S#=aD4JFoR|QLGG4TH83tX=>dCbW3~9Y1WT1FS(M}v`yEM816Pn1HsTYw;X;N
zOZViv<T*pVvWO-LqFjz`;5a&O*Vk?3`$#N1y!mYR<5szAj(1PEc-ZjbR}CM(kK?x3
zc;(-=zk}4;|5xm<_oDIbZzdYW{-PpB?XNv%f1PKyzdt9AVt+SvQ-NdJ-(w^hvcIo!
za!&Slub$BeZ~JfC-ybmgf5-k7VmIe&fAg$zV}JK04BOnZ&f()%I360$iv3ylM_JGL
z{uMpa>(WG}b6VJ0^DY`+1NNts78zcPmv*gtT|NGnjrh~f9{*<gzylJy>7V*SaQ$)I
zDZ9YwOz9C<MtjiJ5`%MAv1N1IQ15x0o{!OcW<-0>`Fh;Wnhe}w;_dW}L*E09CVqwf
z<IN}V{}REV-F}Dm`g-<{na(5fXo-G5T5jeiKChSfKY#wCf&XaWKN|Rt2L7Xg|7hSp
z8u<U01}5<A-0mCuv_pgwgy{?xa|k{{A?Nb`w3b^rCpZbIgh3uQ?jr19#b+<)$Jddb
zu$xdvC?up4j;`&~CYSbUn?0q0%Bn?+idPm_c}je~%F<$QMYX3Ypl<P21!_usF)Ys6
zT2ZpeTe`HQI-r*NN~)_X*B7tZ;tlZr_t+^>^vk!DRC!A(0>x_rWw&^%z3_?>mR4 at s
zR9RurRyy-n7w1<5c!h3BsYi`GU0PCF?kO{fg<JieXhwRZyprm|suH*wNvcb-E4Hp$
zuPQ3N6+Ul;N9A~{{UsunBrNnG?zL)NNwv4MxH?eft=O<=QHkI0sepTBMdhZ-Du21R
zRIRS8sVG}rxz1amR+m(iRc=zHl at -;MK94G`-mGq}@YMRzl&8$5zwbA&$Tm~WoTM(d
zl~mij0b7X=<&|x<DNn7pI#6vxE#<b&CB7Pu?Q(VbBvn(fv7&NIg<9vSC at tSqQnj(z
zN4(+y!d07y>%BhIVIpkuRul)kn>-fMmXfMXHGb=rDv#e2 at CLldZHix3wY9ja#+<cL
z0#lUAn!w1j;xnR at R{AQ<f|a5!M6E6kl&q`qm6$KdJCTcH*G+uUXTVcy&PhsETvI_!
zmV11DWj4i<iVdEaA;#!c9_(_nM_qmO)gQ}VU65a}oFiLdxu?owD<LS`kb0vv5Ga>w
zskTv}HidC3Zv~a&r4qe9j}3G7NIl+FU0I<@Y66vtdh_|<ViQ%CNNtw{Y(5Vb4|9>W
zdiEq$aI;gbS(T^O6c(vm39AZKZoy3|d+CkjAuVTJN$EyR5TmZ}Y|%|}Gh}aRiEkF_
zQli{h>phrvX-O3gWrJr{l_yYBRRLSICST<^b5+jL48k13TtcQQ$i7jnxwU`{m#C%L
z;7YaT<|Qh3%~F-WCX+CiFo%$V36}awHkF7S%o0;mAFrtlm`*EdHm&ni&8qfps8D5<
zJ}S>Rrrt_D6#?U<WD}>==uMUQD`_^B{&J7<dDaJJ`B8O6pxjgKtyWdu4do*#sLE62
zt=_2ozM5)-RVi)0M3rxaLxqB?x3Wy#?Ww9%m9*8smP#eH<UuPnRcgJL`mOfXs%p<>
zVta(Ys*pxq?ZNk8gcV3pT|FyMUQ%JO_k0{D70qe`)lL4Us~@kSi4AE&M4^;kDxxHy
zvQ>^+rk1M}%B5DTThzzYt?D+Tkkv4)^2}OSMNN956^hF%kCxbSxzt-#TC-`r&r?f7
zFGFvol~o?Kp{iuFXI4q6C{=A>Y4GD}i@}|5JNdQ_F(0xG-BJvdj*JoT`pR%?xlVOw
z>e|^?Uvop+Rkz=9&%JeO_U&u0zB5%I?JCIk)EOtxCXFCY8Zvw_O{{x8ZH70LW3N~P
zfBoepYMrm7Vxuap2vqq*c7M6 at Rc^r>`SF<n<*%tI4X7F%XO*fg^KPKg=0_V-X?Y2H
zLhm*Vuey5n at CC81fXC+Xc{ZVh;S1E6mxd at J#M0m$*89Ar0sOO#+%cIdTczJ{X0vA5
zoU4|nsjC**)asfF>|q1#k!HkcNrlZ at VN(To7926UC(Z&jU(Hh=yxsoMxihLaaj;1h
z=B{3;YPr72_&dvRXgX!qoO$z&)9O+zu|gRzOb%?Ssa5i4m{e7}IWP;?Ra!~Sm`{eI
zP at N<z-MV25eTtFMMsFan6?K=CR_RCUD=PySeq~@5;#ZZZEuOn|5!cnwrIbqV>)UE8
zr;8ctO7K6Ir`yyPx~y_rC8o2UN)oSR^H$r2`lvvqII$92S!K;SpNIJCX(Ap~xqiLM
zt=R0Xs;rRufGggI2sZk$E#wmOdazsK-LOinUb#jsb=|BAr3YFP>$=p8SyxxvW at OBj
zKl9|zoNASi+`5mcRuJs`y%}e{G}=qdo;_P_s#Z1CYKFR&Kf*xeu3o)rwQbeXr8lo$
zotuLro>4tht+_GZ<r+GJ)9ktHmB1VWG6ZI4dUTpScF8tlR;CCd(TwBh_2CQlp$kOR
zV at FY9`g~<-hGb!zadq_!DMIyiGvwg%%hje5KLdt<N>5kow$fo2(*laCJ=klR!r(TI
zAf#WeqGi^5moj>P>18BhOg%EnGJ5V(e~oeAD_Q69DNj{ZWmR!yDQ&-szQH)9%c-V=
zP?K!7J0{&bNv&O{)~;7;E7aO5wKkyEu2pLpV9cn#e34E5Do_QgYCP)lXm<<Y9&ARB
zAq6Uxft5tReUiFY-I2~UUu8*IamnTlLR9w(Ww;+TBF<6;B?UC=^<Fybt;3~JB^z+L
z8))O=*u~L_tfeIt6_o+8z=|6BTw1KHvci_8Y(=!%m3epDuqm6mYLeKNO&{o0FT#Lr
zPG!5%yF}U2YSmTBiBPs|3>=P>sn{}ttFBo`ucU7Ds+C@~+>41SmsjO_)oosNt5;p?
zuc|D)76p4N)>mTvboXU8T16$}KHG?klT>wp4(ZzJt<~3-c{Y1XJ=Jnd#Y%DsO8&?P
zg0HQn2gmmmZ;*yp!FY&5>mwy`rCvNg{g(G`>A>#x%v8&aTxqJbFd2u4+tLRfGgW|*
zX)FR_$yM9>s>)5qb$W at -7(_LG)l*hX?!_3Pvco-4S>rR0lgd2nOKN<9;^=@@Z&GM$
z#@%X0=?wcEpLdb|SIxL}){ITFW|S4q$XhgH<)RsD)QsvyY6fN>8(|Vrnwp%NMwe0Q
zu=y^U;j2-GpQv6mqm0g>5{)qo6c-U4ZV7!;Nd?}^Adjp%8-_{M)!^!}3cb)`CgQ)u
zYV`40bQ)J3C|k5>gNMPk?y2xtMABWMi~)w{dc*Oy;Mz9OAy5^1{}4?VjXGr3w%cdT
z8agoz#jm?Z+D at JBE$_X9HW&Mih;NM2uUm}edup#AGg?fu*SQzdffBds`dYUQm*-xL
z(=G{IU+tz%$8xZZl*v*L*DbaX#?IC>3%G7Ey*tyop=rU`siL!lb5nq)LVAtjDt(^B
zC>`g<AbB(PeQxQIsIm&9jX96%;>rr&)^kf+#^ladvi09fY)oseTP!BX)UHlO{&mdn
z#?}i{qw5w+qZKzkZnWr}>AJ-R(`XLkGS>$k*WDvikGgX)yx62FHt9MyjYT_x>lSbH
zY`y-v#d`a>KAkRkOye7xmtA*HMRi?Gb={`wx at v2C*bFOA)w)Wi_ghhnG%<XNP4BiA
z*=j1P=pr{%;0eoU at eJoG%4W#`*S6kQvSAS&EGe>MlPhKd`ru6;LD)9cFyE3%7_(OW
zXZRHiO`3J=s<;4~Oau5M{u6)T!X1;DF*7xsDiamMW7v#NV74%fdS)DNNg2|S9iBI;
zCVFf&>>9?lbm21`Z*+^6IPx2gH-_~Z(Ui^9pA46SF}U;}`b@@CHruwugM((=94n_j
zXJtt5V|@Z$$dyejW1#mM89FeKtg1v+j3r~5Vtl9nvSVe}dnKa`jN)Y|h+p6AErW*)
zMa|A~s6kw>#}k)b&B};(y%*V{e24YRG?Z~_NyS#`GrIDDBpXUtVhT_u{3pHD(0pO$
z+S-DGnR-oBRr+kh^9n}zM3!|18RN1JP)*-qPFGXF?>tf(<&Uif%v at VqbUulr0~{s`
zGP}`xA7hQehJ^Te!z?$I)E3J~AWa^N)PGBjfl;+5Afw~e3<PClt*=gSzEbZpbxO5&
z6TNy#g{QKn+P77=Sz*A?(pRSUl2ox at h806vML(iR<HwQ+Lob=-+bY-78~STll9H~|
zQ?=C)akd^eHi7dnu<;{Dz{aYWBpFTFu#Ux_nRWy2<Eoi9na0oB;w at vbi;17CanPlY
zQCWI=k=y4%X)|xX9gUBiIF6aJV5lqw%d*ioT9?UADN88THlKHsH!$1gl4TkXCQpTw
z)4Nc1-M)w}YkuiAW{dj8O*8~9%G92j>5w()5jK@<^w^4*JM)(;Eh;Krox41 at sCZ3b
zc42O at Gk;}%VYGUO>cg}uDD!Goaia5TDT%+*x0U5Z)*5V^m?TP~CDusd&tm1!hy4t3
z7}+u#j2XGn%%eG4((BnVLX?3mZcxUyoQzDbryRvz%fz3IWv;P$M$=URv4@$r*UqZF
zW2TKBABQq#1;^42MT at SVnAEJx6N?wMwsYh at Y=10L8$E at HHfyH7+KNy!Z<kJOrpV`7
zwI;u4EHgH*<_?>nEZL4^GDa)l at z4^Vj3iLD42)y5bH6kJy)w-HGByfaWOFO`Y+G(@
z8F{og*9{L8bv at mpFCdT4SFByULOF{~%=oKo*01;0lFx?O={EOVJ7Y{)Cz)%XWlULF
zoiWQFB}Ti*@pF<A7{9ZZ!x-S!>ZP#u%Om?Uy at R1Ii#j&CeQ}R9en~p&n#SBYv(~ZV
z9vxD%wlPLLeb7OvS+B%jl;J1naxfU;j~EF>9Yl4yF3G5?E><~Ys6ZFSAjd1Mh;dc5
zo|pp}K5zq~%(k_%Ml{dtMVcoQN1tttC$Loaf3*ym3T|Nh197MukBw`j<;&s>{5{Oo
zWfWw1YZYCkkuH~uC33}9vR*vhI*-gP8O#{=Cxd`;hD0pY=|344$yW;X<+j+cLGQU)
z&l6u6?YT!Ttjp{?I^)$9pbz at X()A&Rx!=LT$$-(e2?tzLrLXi=+cuR*mrq~it=_74
zaQZ04TY;Cu8?e@;FJ6g|3>rq}o4v-l`iu-w3O%C1S2uMTU@}N4t10!$3YKJ~dnU at h
zDK-v~@n~@|>({n4W5J9*aK_y=SJ|$o5Z>xp*Bjll<*G40q$KzcW72L}FfffDC5F^*
z)RS2vjx5*ks7Nf_7_?G<#+nK(mUU`|OVpq!Ue+6G7&2{*X%f{{vMy8_pm4*S#8%GW
zHPlb*Ydtn8q?jVi7ez<GBC;;Je$DV1SW3(<kCJZ4Z|Q4bHp8x1C!r~<Pb*%tw79^v
zdeze0HEUL_UQ at iPz*%rrEGzw1SaeokB*XvetB#^KF$IRL!=n`nFUy(wuM|hWv6v<#
z_La8OxoYW+#nEhviC37vGPgKCC*3B4k!W^frYp=_otvFAZZcJ{P&#ehwlgwVCJiv<
zkU2|c0Uda5RCp7N6 at T7RS>nhYlV3(A8mQX3is8QAkHuJz#cytbXM at BU`+6n0o%tIp
ze#X2d-q8dYEB at T<va)gWUsJPg-0LfAeB)lv at opaPdgfBxClStAZsoa9HWzA?Tt^P&
zwIQ;9Sx4EGE58{2KAb4e%BmPjT7G(5q06{=*t3;+%PM9vOR1?y$GsTSB03(%X56Rn
z23VP|-st6i2vf4?;8XYVGuJ@<7=wwTq9V6AYI*|k(9!9S+%RUfjvH!KUL$+$lQFce
z&5JzxbY1!_=FJn4k%!6 at k0Ypff^|LGZntOH=h)}kGwt*2^X&`lS at wk)_Kb{-IT>>^
zGBf67%+FYmk(IG<j(twXoH=vm&dHoJZ_fNV3+80aSvc1|H)HOcxpU`c&Yd at R{@ev~
zv*s?$v}a~y&dHpcnVC5+bAIN6%&g3X^X&67=FOQmcV6badGqGaTQDzc-op9z`5E))
z%%3|ybN;;f^XD&^pEZBs0{eoD1#=e6U68q8-h%lH7A(kGurSM>m60_kYi?F%*1W9w
zSqrkVvKB5x#D!$P5Y|yxNa}@LQL^$GTXWTC;$8-n+|FKC!ws?Gz*bplAp#!1q?ox4
z^U$i|_3TmbZIxTc0al50pxZOn4(KtWH^^h>EK!zLdho%eUi#bs_ep)l*qV$lS$Rdp
z@(b#J`7_QUvHjXWHR9?}EY7=lV>$P7h8B_SXDlMq6Y7h~q>@EymUy{GWR71_+RZ+X
zl$Cv27Qs!BZ$pL&JE3<FI&b5g&_*aHI0!bvk-|Q$2eg-wp3u!cj}F34f}fCfXP at SR
zZf@^$b$=JzLot at ei)q5ZvD3#q;K=yav$4~U<snCM7(2b;F~_?u9&_yLV|mDP&R_SK
zWAmS at d(3gJ>mGBQ>$=Ar`+Ce{DphwEdxQv1!eUcc%dt=B8~d~}LKnv;2$MNZC+y~U
zKcTC3IMi`$4e8LP6DAXmZW#_v&KDE*2ZzI2j;+CWKXODvCTI<lxA$pN2`9F(m&p_c
zIZl9nh;Wp!mJlGc5cU#M35yBN9mC=H!|<?#U7WWN8VF^ku%F|-g!Em*;n3&F&k~&f
z3;$@C3R*+Lm&x->MmPjo!ywmVp^jr~==yG-wu{h0C^Loq9PcIcK0X|db8HTBt!zJg
zz6d#l>84P}v5#=*hke at DqhS|l4nj9u{F*>U);jJLM(?T=%iadL595B3Cqkkj4YY=$
zm- at 6=IKp*nc+X*c)GweD+D#!5dLQRYUmFft9Gin&+Y`aJ5gG~Qrf`tscEYqbc;MpC
zM(763LFn$UpVV9g2f<DV64JhOQY#Og)chQqbznX=x4-$DeBP?+z*g>y7=y-)xkKZ-
z0`48i_{RDhH~pN<)t(K^Sy}xp8{)K*fv7LPV2!<afj-7u<<HF>jkA%{h47!pm~(vY
zBgdm>l>aR9&nu`5yrcZ_!0#x3Jor1xpB~^H<xdatPV%2GWA-sJD8H*;D<b3(vIvcY
zG(x$zU#kUU?Zj-qS;OrsHb^;Z3p-2tvsmcaTiAv1KYI(iQ2u9YVHe2%tS#&U`Jc6g
zT_FFnwy+E2f7TXuVf at EyVKM(dH0{jN at 6uP4_%h}>OE#@5D_Ihokmlc3u%<X;L9DYG
zrmw!ywQTchF3wvccU*E!(k^h71n8J5a&uR#UNgU#KFCG9g+pm`SKnB$Ca|EmxU{xb
zrl02B*ZHLkBQj*&y_mHhZ=gEAG<Qu2e{$JKTb$!xRcJ5Hz1g=Wvp5&VF;_4&hxfev
za<)MXFP3?|gh!0`r(SQ+QyriCto)w5VZHwQ*9`_;KCvOcsSX`fVia!$`#w?}id!P|
zV8iTeV?O at YC*@qJNHkrFajM!J`hnvi$30WOv-}TtH^lfqYo9$&-<482V^G_ZI;bs)
zq8y)Zu%@-1kH_!gD+V=@G069%j{I{#OZ?Y>)&ttW5ZD8D5NZi-g2Zz`cY~5HCx1=$
z5@&8sF~`Td2Q}ZZL2Vb|5Mhvz{+B_mfv`^k*SkQ8H~Gy$Z7SFI{9{maoEX$<33~{M
zy at OgCuLD0q@DpmezUN;?ydti3axVE=e_|-bD{I&_UW^5K@|^_>i;Fi@)aYh4r`Rd0
zgRIzjOSk6E5mO=l!s0c4rqUZd#nIhU>`1e+9Xcoee2H(Y!Izy|CPS%Z{4><POtwE9
z!E}AN{ViA~J88L5I^0@@Q;a-X6PPpCET2D6#o&_dFQp#FfPt*y;xZ36B7B*}+!qzf
zaEsILeGWG;8W(MBbMDzRI5K~89 at GSnS*(=%`JSrr^K!1U=f;Am1&`z{XBW&rW4zJt
z1 at h0(%ka+0FZ|yr`3>2n4&E90WBlJq`QJ(X8 at fL~{m&_0N}qLJ4Pad5TkZe6`JYAk
z7sUS at lz+ke&r|++#Y>E*G2Xr^7~y~Z9sXx2!Ugd^hbp*W{<{2Icr0b~pQ-=Km|v*x
zvRlpL7oMsm^v3kJSDPXXcW`sqK(lH|wzIgnpg1FAp*dZSv0XVfs=NBOQ5nn|>KTpP
zGUnz~7UVPD)Nhtm=Wb?r=*=xwvEkO}!W;HE-?-08 at 1+l7i@oeWqW3D!;>p9!l^f~G
z)&%ASYS@&Nzk(iheY9`RU$)tso6CRsDKFnwN+e7pq!Ee;S%f at ->;F!TI(8AEu330m
zlMvx$Nm*H^wLC%*p_~v8UBW(&*Ak8r4igR#mMl80g}K&A=q4m`o<`Wov9++V at vw|r
z^=phvjW|6wn6#UrugJ6Kb+x|t)>9>QV7{KQbj>a1YYksJtrZed37KC#t(_noAjt9C
z8Fs+Wkawg!b5^WbRbUn<7RiF=TK)yYMm3~?2_KCA=%7uh4<{(qv9DLNU#3*}nO?03
z>;U~>=*3>mb){12FZF5>@K at l}Yq<Azuvgm+PX1A^mX)s5rJ#*XD-VESZ~$z-miu)-
z?$ttk>R>Zy=K~FY0r!HopY&=6z#MSbTwebShWX}41a$C;!l{RPwN5Y(bkA4ni{K$X
z=6Dp0WHHu#8Tl5HAE*{7^)%Q9zUQaCTHXrY><S(MzX6utsMK%4KJdz)^=geyrK-Sb
zE0y{hc>E4t8x7Xosg$F$SDRd{R13HZJOZY>l}i0N^b)1~VC_1kGGFQCzLHYq;Bk*q
zzxze6wr at SUJdE57xo3m+a;2^ZcYp=pG_O+CV9s4iHGu6t^bPK*;GX6$(PO1jkAerm
z%YW6YIsK#q3z=2 at FSt9PRPnESwbUBoA3;7a0;<hQO?;Jl0<Q-5fvdno99sYkfS(1A
zfF0oCTBSO{T|uSnuOZ)klpE~6U#Zu?o%Kp3|AzW(V9y at d_JC5W!J}X;SjbxsL*U|1
zp&u}>S*f3Pao&m^z#ZUwe%q`09-<sz7nldScn at nWc;I2|2%P$5rA~u^?<w`z at 5vuL
z0v>;qa!1JTF+P_LmhB_{ACMn({;^lfe4P3NCqJRo9<U26I at +u4|2}g*(B7_88 at L+`
zfn`rJj}!V+N`36ly;=wONigqerG5-%?N{m~7zVF=1G{<#Il7Ste9tlLkJtP=!Gvd(
z+6vZzd%(3FO8pW%2=;?*&nZ>&7xex^rCtGdKTmzW*{e-IfL_3&7nIun*Iw-~_&Qkl
zqEa9D8+v#NdEdf54)TgsFbICQ2RVO4{ecI5tkhmG@)M;7!J<P--Sl_(gP#HmUsmdK
zU<ddTnDtZk0Dxg|@jrUCw4Y(mCuoOY`#;I2Q>m_A<OLJ at sPCU+H(>iK>{SCDzfkHE
zVBcY-?mS6-{F3?sryaqr28a)C0W)8v{S0EiVCpIIdrhfZz+Jyl>J4ye7wZ#Ruhs&#
zfeF7=>PE#q7cexjPYeAHdjki-J}~VMN<DEA_c6fJpn6 at YMZAEj1q^}-GvNasyoU7P
z;n}nwun<4e0XEFXuEBkaXcyq(l}h!1_7bHOFQwYGj`D%~K{q(LjP?w=KnJe{+e!Oy
zP3C?`E!V+9?9eZWy at bH@ACezfNBwnxyQ!y6 at F?{Z5jyqZ;ze)!(5oBlL$7|Y1$_p=
z#ptaKJcPbN;Pl_a4~&2v-~r0n2~N9=^C{fVz5;%{?r`!9`0<+L02t<Fw?{!6pN$FN
zkNsDpFX9KmU0 at p+21DQhFbp06JHX>$1XP!!7jP=5u0ii$3b+`wfiBPvmVpki7Ic9v
zpc at Q<esCWc1P_93U>6tyd%!T5fczccG_Vs)2P5D?DOWmjq>>(-3WmWn&^?=Sfj!r9
z&t9%)K&QNFF8BM>$R`syuO=Tp`CA0`EaLtb=+5E37<M811Eygo9iY6lyc2YQ5wH;K
z0n0&EKz)HWunn|>yFmxo4!XcYpc{;Ue((es1QSILa5 at +Q?O+(p0Xx7VuoLuw5ikh$
zfIC373VFd4a6f1Ri`XIG2DX76;BL^*+aY^EwTApDR}efQSjfG`S;W7Y`T--iQ4gSt
zeGNIZ2meOuFCG3q>;ZIuVKB0Zb_V(@vF~fi2Mh at MsSi8yejK|3ZQR4o%pjjnVn1N$
z0qz${I|B#74lspuonR^$0kgm!&<UnAQcqwQoDRPT$oGL%@Kfj;OlhG!wAVJUa4!5>
zsb{e5A<73vc2JH?&biNg7>sbwxNIKj_i!DIe24lYeGga%rhFH at fe!El=m!(w<N6+Q
zE<jGO0aTBnPdVR*+*y?KDasFabYQ0o;qwyp1BPGbI{qW&F#Z64VgvVrcCZ6<fQLaB
z*bTbDLC_DT!aoFNfx%xP*D}(-N<D-A-_btu;luq_-wM+GjdY;@U$m<m;d>f=IpI6;
zq_!6fPd=#~M2-%y3+x1YzzCS|QOXZa1JxxbwRA8AbbvOn5VV8kpaZM}U0 at sN26uyg
zupJD7hrl*40*1g7U>HnXO#a|>uoJX{5iker0gFJDd{Xm)DPRz^fjdAuxCeBA`#~4j
z3A(|fpdai5gW%-r$RD(UAutmRgLz;FxEAaL{a^%a0DHilpqhfdKpWTr+QGx11MCLd
zz(KGFOt~I8Qch~AU>M8-Q{H`2bAoQrEp#vds`s4K8bKSl3v_^C&<!2{gWwS`1Re)F
zKy?H1fm1<sDfiGp8 at L#BfG*GtmVrUA77T$cU<ViiBj7$zO{M-p8`uRpKv}_eg9#4O
zgVVqem=1P;4ln{1g6h50KWGE%KnK_cy20IG5NroS;32RBjDQjF1gPFe{b!RNoDMob
zJLm>;z#v!zru-N64Tiu@&_0d&TmnBZ4|Khs`T`?h2k8F*^#Q66qW`7T59kAJ(<wg~
z1`mUd50QTk^$sou-5;j@!5(lo82kwO7rKpl&4mw`3aZPfM>)S7y8s=j*csS41G#C3
z?wQE99J#MTez0dAb_#YbAs!fBh1_|hUyFT#E+2LTrqm%X?YFZTy8zV}vD4cqH~S>q
zV9(dE|2vTDJIHe<e4d~@p#KNxtr+?XlppLk1l<kaUt$l8PuyS`=m%@TAlL%7fgvyi
z?gPW%L9het0z1JTFajnNkUuyLRKLO=z!cB{+Q3544wi!sunu&AZJ-<64f?@$FbEz3
z+rS7I0#ATpFmV<6gVVuI&<;kx9Iyv00 at bgnPcQ`xf;MmmXb1Oz4sbu{0z1JFcobAe
z&_Cz~C%ec8w1Ku)(KF}=^Mnqr1yf$b9zZ+T0J^}PpdZ`|wt*dB7(5Jig56*bI0&Zv
zhI+b*^k6FJ0<%Cr=mgt9Hy8#3U?<oJ_JF&<lrH=MXa^5~F7OEG2akhopju6Oa4Ogd
zrhz at +Vld^m)IVqk%Rm=c3;Mwpuni1>VQ?SV2_6J{z%DT5cho;<2NTwi9-IdH!E~?<
zbbz+sQ{P}1YzG|?>J#h)?S<(357Zaf1MUHXuTvjj${*4H&D0NA2-=TQey{`F54!$D
z{$K=5y at h=LO#OrE4de&gzz#439tI;|57+}Hd<=fw at CO}WCKv==U<fP&BVZ6z$FLvJ
z0fs at _U#LgW1rCCKFr|p{f$3l;=m1mR#7;mv=m-5^3m5`JU?;c_RL9XPXa~E%j=xe*
zw-Wy?>K#;nryO7iJPg|Zf!wtBPB07x|A`!+JFZ`I-j1A8`n6r4ZF;|U98_2JYm3*y
zH>+Q30fTw{S{LXj>etfo7yga?n#&D;ung=3YeD5BK4=G1*TL_T>=!8^9k>>BgMP3L
zYymsKkX#S;Ye&FvL%-HZx*jm6lzblO*V at 3yr~0*{(1R`gnw|5W)_yIs4E_(o2Xud$
z{U;vyJwiFa$mjaCl=Yl{m;EVV at Oz}&K)zrO7y^sH;G^&d!;kfAJz!)X<tnEfk5ewt
z4ekSj;6b7D-Ggp00%m%V1Iz=}_bDIP0k(mmcG7`i at SxDaF3|R5zm|9xbkGgjpX%3k
zf^Kjx7z8^&+tdA8AJ_&K`AGi^Sb?6O?bi;0Z7-5vCFx$KzQDGhQSK`6=jfptxsFhd
z0QqDNXa_-6$m^wR;D0;!kipPe?kjJG-yH**5A3;<d(NQEJ)os-p*~8uj$U2h5wH_<
zqSwx{0qrpQjCcmL6JXo=0WEVQ@|E*ZD=@feK<gH)9MBdccNpvf{eb~3Z4+{A9nf09
z;N9>Ad+G)>zn}c>LoU$vz<@UO<H*;<eQnUuI-qre;fDq^7v*z2%>8f5m-5Jf76wC~
z8PEnn^`!x=54k(O&b{(l<OG9vL;nWly9ar}onYu&$Pe1~a(}&!bFc-pe`i2D4o1MD
zd!c`CK-=>P%Ks?%Ny at ozKufug{2w3CazNYnDJR&|j$ZCZo+k&ia?lPofDUjc7<qa?
zn_Lf{{R5gEOnHWKfjwY580H%{-C*0Z+{<r(4%UJl9Ru24u<f}4Edn}zIG|12Mtsl(
zc7kPK4_FJT=P3sm1l#5Oz<_oXOac2qJ2-he at _?CO510q47Y5ja3xCirbZ`%t^5THD
zAM5}f50LM{0c{`X`Vo5#8p;0<<!b_8Mt(5#3ia_R^zsYp16034 at 6FJ`gcj2MdO*tp
zLtqgYK0-Xu at hbVZ!sj*Y<stI@&4AVjx_?VPZN&Q>b^&(&aX<?^%=w>4_j$_k=K-zm
zi^%&1*S|!$|3>-ua2?G09{F7~sO<#XE at s~X_7DPFz%aNEjDQD0mB>B_&<^&1E-+y$
z`GeCyKbQ`NKnK_f7J}+sgIYOg2kSrw*ao`5-C!Ho4t9cvz?4aYT12jcC*(Sqh<$c~
z)4`OaLCp at jz#Om*ERyS>4~&4Fa(y!LVZR+<7U;f&^w at 0}TnzRk4{A2-*F9xW+YhRg
zL9GvTfvMPY2y}rxU>)dq_n>wZOu3Z&vGY#QC-y!SIYIw>$tOtq_YofqgB^1I0m_H{
z2R}&u*m(%FgPmXxc4M2)o)YXO1g3+XU at dkN{Lr8l2E(9y%FO;@_NIUx at +C&>sE0i;
zZtTaE27l})aus`6u#=RlNe6aZL;Ybd!Sq3`8??`&ybluZ+Cj|;w%stOg+N<2dt1P8
z?w}UHejLl$=kni_2TTJ);9}6dg8Gv48!4~gD$4(9(%nRQ(7qbIVRsR*8?+S;YMDEb
z^Je0Ku3HARAQ&z}KG4Q at XS%@1ZG&3MBb57&L2WG<x)c3 at k>WvZFK8<vo?KstT%RF*
z8S;RU_3#Bl8;}d^C?_5m^rFxIfqoa|1RXy3fx!y$1;gM0FajO{Lz~h2PU3AD)XKn=
z`_U)Z`6=@IEOzl3^bGpJonYj1lvmC_j~t()T)U_*(7{*S4uNf7qCB)awVU#Qw(pQH
zm=eZ5cA>}b5g!acN<M;*p)bLGw4*P8k5j*bPY_S=`|KkEL+!{b_$2M&f5E5VC-^k&
z3vAnue1gx=UcpYVOYjBCNBa*SL_W~*W9%>l{U at XYJAR6u<^1Q^BiM78dc#ksBjgV{
zUL~I|Q{La=7r;(FKv(`1^zb_E40QjIy-mA`f0Xiqey{;d`4iW{;Gg05RqW#p+CAv+
zrW|1CZ?xO5p`W(~wMMY*{|2?gplcAj`#N%*rryAm38%D9u!HYI+4gWg at s#EO-4~tG
zLSQF&2y|S0O6vnv;wdfj8^j0wVDMe1w0)ps64${9nD$LD>6GRJgOg8byFhpHDXj-|
zrJT}ozJ+}6KBYB+ZI_<Xj)1}Ul5Q{g|JNxk0ICn4(hh==%T8&NzfHWfQ<@tLrk~Pw
zgDG?12ZrXu?>m(9x>MRt(4Kut>jFD+Pigk=!iO*9Hh^vy{6PCnr?eAb_~ujE+A!&h
zPH8*9j at wRYN9BAS`8`T`)+0CAx#5(S@)-G*qZiN*2Ek5nCusMb(x&c%UO{=lw(3*b
zAZV*Or5$)2zFSH61o{RG!IXQ62l}^j-}n2Jr}31Q4yH5_543}YpbIPqBM+U at B69uH
z(AznGm~w#Oo#gu@^6sL%VDMSuBX1j6Cvt<S$mi%lZ(tBCL>~Kdr?eKZ6Ko`%{W$gb
z6!N at 9`9XUR_o|;p?!Uti^mBi at 0koeurG<t5PvU{$Ui7!0at at r*4uftD`*{Yu__VeI
zOqq0AoBRXv<>SZ=pi1VRG-yxZUi7o*<2|Rf5a_t{w0015gAvgG-qYID4&-~^X)Oq*
zOgpVDevWeTrSN^ABki<y9J=e8)0*Rlqyq~<KUfa7fpuUQY!jSyTI&KM;0aLitw#Cy
zgFAzCU}!G+gNpm+jswUACcFTDH`h70uRpEr2Hjx0T<5znySc8sr?nn1wDGi7`y%I+
z+}{Rm0rGtb`N4x=$`<55NV*_&Np~Oj@}c{|GO!11=X&^l$_3gRPHVm&N&TPJ`anOJ
z`eX1 at r!_yA^5AK$<tN17iJXUs|Hac<3UoKv4R(B)`|Dh{f9161mUv(f at jAhTmywtI
z at wH&^>+Bf--QQsUz)#T|-^Mu%`d>V)Ie*6aPbd%AaSZu8p}%=r>wr%ico^&e4?^z*
zyTAz81NMLkKPTSt)0!O&fjOZ4Ey at YHdXV=O@&{AFHZThefle^|Pxyfmun!FOqNiVw
zA6N^jKI{gxpF}>eZ4iEk(aUMd0ovj;Z4c<?YgyBOiF_An+Ac7XsA(y`BA<6 at S}GV$
z*0kM%DVo*}cD!5D4*Z()d79S6d63VJq;sB<rD?TbXrZRLj=+DhrtJqKU<B;R*R-Nn
z$!`_sU>KbG8g$SOy7=yr3v2_+1^M*JVbEU47f^nKUT at K~4$#Gyw6eNLcbBGxL0cvH
z{ua4DO}gI^ZwK)}^$6u4eh^IKdiZmi)&sWfBER30?hE7xhCv_b_+L$H1Vdi}Bc%T-
z`GY-=^0}iwknV9!+Y6?&lmF|SKc#7X5+9sQyfA13BVZ<&@-%XT@|$XansE1OHK8_T
z!Urc`oY*$Opik#on0vHWN}QaFQv^~8nS{oNd$pcK4w6%rB~M#1C231yP~Gr>g;&o_
zy&S5}cP;4J)vM_Vg~(6x3lQ?4M<jjpCvjQ`k;Fc2l8F}LxC`1PCfYuZk636lJ9QXZ
zEH6Q-fHC$+S`V~C(B2KoPvRv|Ug0-Urx-N(CYbOu)6$^{KQqk%P57B<@<FA87Fs#9
z0~T5xv<?eRbidz1+YPN9TCzz#`C8LH3+)iJu!R<Zw%0;C0d0?kmKeuy%tD(EEo7nD
zq3tr!8jvXmTJ7;(Z99BbZgR@@xSZr^_3=5$wzw6OlBeY)r(`E5<|GxHj_(*cUY0c0
zu{r+e$Jt3Y#@LHZ9zu>3WZNWqT9%yBB64hx&rY`0C&XowV|H at NlH|nvq?=-g(fW_a
z9!YnZq~j+xF%4RoiIxW~9a<3Dm!+Jp<dlcvmLyMmFn&q0tu<jua$3v8>}31)i?Wlm
z>MzbocE|l}QgRlQ?Bq0J5Oay1`;AFTc-6w|DEHg92`^-QC~no*yj*duqw-o|@Hzmm
zv?T8Fog1&ujmj%GNlinPlmzxmP?r;gS6;F!u6<H+VxEytI at e@xfP4bgka^tlA0VHc
zWP8rY@*}g8<hAfRN<KN#aL|ldm${<Le9>i&q08Wec>e^0n?;+;lSnRpN`4dWb~$w~
zcJb$5O`f1W81rT2TuUV!U_Z#ZchTP8*dLW2*EM?mEl&=`#XmQ3D9>C|4K7QHFN_;i
zhuKNWMm}wXybyanz=UVW3ug5fZ@;KzVr#;K at ejp`JmSN4_xEZmM4m6j<jEgbo+n0^
zrywbQ at woEXsIMI4`KHLT<xF|R-V-mvFSE}GarB?irbBDHa-=`DLu-L%_QyHU8ZERU
zXbsSWkNgCE(1I3P5Lz8Hvp<$^a|%DRPu&ycXQu6s at -x#qqx{UYqtI$C{Q95;EVRiN
z(??rqHfTNzEfZQfG_ya>gH~ptt%c^c(EQNWT4)W>iY&C9&<ZWIz0h11S_d?ziPnIg
z4?|0v)c60oKVF+i|2E_N{qYXc^^xu}F&ut*ggwxvQqH%-_nv at P?aT}Jz2Yw&G#Dqk
zw)#u)acjBez%RcYKCT>o-S|ugUlG=Q*!SDtQ6E-F1A2-vn(o6|$!ioJR!bb)`}+(Z
z_VJiJ?~D&SN?uPOkM6^kpDE8&^mB-TV+VUNV?GR$?stwtpGJLe6#_p8p$}REv{OQ0
z%u*k>m5y#n(k=X5kyOav9Q`;(G1Ci^6ZLWIVmhBg$V79Kad17u58YM^p-;P^Py4*k
z>DyanoX{fUq3sFuU-c8|730=UN={pzY|D;~3zjDpCZ{n}86p_6hv4Odm$@zMgVqS`
zbNKbMjvd at _heqwIqT>)XnQ^k??P&{6c-hhEXl<dKYpH2(Ut2hV(o<*kX{EH~gd3h1
zr!DAX2)#f5^F^cf=LJdkjH)4ebL^YoCXY8i#~xjd6B5a5l(x_ya<CuoQo-Xa&gf&h
z(Z(0U at _gpslt<=WKa0upIC)v*k-qi_9rS at C!)-xm$DxIbM)v25PHZnUbALV++8zrn
z4ccyK=Kg#!w2+17g0>5qxj!$1mWYk5L<ade2({31pj}A&+YgVAq6cgHI}AMw8QzZe
zXPd%!2VUm(mkCYu^LDhqAiM_oM%RVT1E!(VL-6XsFO1gyy18}~eZO6OQGmvAG`CM%
zBlf=Vv2(KbU;Uf*9wD#Wc1GJ at 9C=yny_~Wq;9vHwjJCf&KYC8`{JZVXPhQu@<oPan
zS>%y6QbYqN<T-{|UnDdiG=E*+2wD)D589<%m!H(*4rsN|W(dJ49gFlh#@b1kYxBu_
zzFgD$EhEiA=!MW_o+ET-+{|{P{U6uTu(5mO8b6Vx4_Xd+nC*J<d+>G8ej)wJS?9O$
zN~UCIPH<Nw<&b;_4keR3Q{k2H at b~okcrXrs*edho7U>7KOFvl89M2v1;v{{ZNcT51
zPiD?(gHIQHLjTjN<#L>G8+?-8^%rfQ*pkp1|Dg1 at cESPV?jx at kL~ecFpEoq`U!LrW
zUx1*}uNu?;<w;JW^^s=B?QdUuXu#*}aQA87VP28&R5)sXqs@<_{=a8J{Fa0v1)ArV
zxk>S}Mptcge%V7_KmSax_A$zla1VJU_e`+PFQ?Mp_pRssZX!?V1<Dim@{pkBr3~pH
zZO9-#Y$x)_8cag!=<@6)PJn&bpBH%&FHoNN4~(myloZx5V)FdxyQAtSlQ<1kecGKO
z&$o%A_t*bseZ~EDT>XT|EAmLRzADa?hs&z*y|kB~kMtM2p!vTrvcC>P^FhM}=|4$(
z09v_)b_7}(G}Jy6?>IEKg{I!eJO!HYk)PmHXjylU^cQK+a)@`C9?KZ#E`}!j-VT3p
zK>QJT>i*)E at BG{TLVVayc0~Qfhu|}czc_*1iT9kJzexKp#y|MRx2yl$hn&0bi?)Y*
zzkOl$cb4{GqjMQ#y}pvVOSqoAM)4Op#M$>i)L&eAf%2TiUxdl)H^`&=i#PU;D$il!
z1b8muGtxePLYxa}pYiV<*Izi8Jbp4JPs`}?lo3bX52*VK{{_l(7Jt!6URNNG?%y-c
zlt<cV`}=99Jnv~9UmSuK`FWo)9wv^&i$Lpw#&lQz3GD>5BNkfX2Us_<(56G{wD7Y-
zI|Pkxd5B*Qw1bwkMbHjdXg+8i7Jfl!`z`!-Kx?<8-2-i(g|;7B7 at CZY<R at k8gtpg0
zI|^+NG<}{Bjn at ZlH#A8jKf%c#WUK+rtScL|T^3p<w4Kn*`Q|~}VWF*s)&|X-uOC_q
zG;_WU&>Eqc^W6!p!9v>$EeOq=ZwItG3+*tpT4?5cyP*Z3ne!cl=7(m^H)T5gi-nd7
ztsI&;-z;cl7Mc^98=5&^H?+0T%=reO6+tuS+X$`DLfZw+W#Jcw=7dIfq5p*Mfl>G!
z8HL~RD8FT<wCY1fecWQAO@(%ZJj}E-XsNG^q%DT#x6oYB_CqT$@hgMYXQ9<X%lyU2
zcrC&Y8qHJxN!dcs>MXQ<&>AhYgV1(ZXkE}k7FrLqy%t)+hiPvX+B9efEVOiJofet{
zT9<`Z2u<GQX)Z at Ov=bIu9W=$WV&-^l&?Z}GyP-|9(AuG;T4;x$$unwZei3MkEwmHR
z at +`E(k6?cm+H`30Y at 3;%9h%QV%YjyFp%p=Eu+V(a+AOpnv|Se34rqHUv^~)FS!nyA
zby#Sf&<<H>N1+|D(E6Yqwa_NpSU<4PY|sWRv`lD;zZ|KTJZMu*v at C^>#J|{}wQ`(L
z^HseMZ;9iUZS0;b%dF8!*(&orSxGBCED%e3-T9>zA9gU7cH;S^6(2U8=N5IDU*3IQ
zGK&xM$I?D>erd&r9f+m9<NVT!51aPusLV6YFRl16Uo7okzjDsywNppp!#YUYEcN^N
zC}~;amb?GUlN0s(w322oX{H~ErrCCGX(FVljitHy+|o>?jUSGsnQ?Au^2C3<8kOyz
zUp`Y8qm)N{SW7I;3+I+5Oq%Xknn%tp%~8_iycU(sbM`bcw(hzD|4*7<a%`-Nun4kU
z?nAI2qHU<{tw{35nqhSQmx_P<&G1}L+G831q72$5juVc3Davnnf5j(;*g4HjS-&4r
z2EU!8eQ<&yhxuN=W#7b2>^OLB)X6ma6Y at wNhF4eD+jAdq5MB<RNxsmvSCK1k2LAr{
z7hc9Rc<q2!H_w7U632<YpN93U`gmE&dWDIMxJ;J!^7M7A4&tu;^xHEpm2#w9$@nUA
z;reyLYbT2Z;Xm|guS~{fp8TS2GiTI&o at t*)XhK{8mCv%EWt&I7Ue<2-Ie2DV=huAU
z{IV`*JkuZLcgKbEYlNTs;**Aa*IqckBk=3tS?H%(#7UTN4*bI7>n{y|;JzZt?-&1j
z_WC#rzgqZp&WZB->V@%hVK4Gd3<u93+nM_(Y>Dw3?H-!G$7)4#WI}w_=rj8zEKRC%
z!gShr%Z@(naV8}RcgA>*w$2yj$-bYrWL?%ULd&}BQ={h=U6*YnuOHU;YWd`w at DcK|
z+!qje_7Z3R=XozjB5~r!lP9`P+!+@?XY~6fxk+(<9o1FF)@7&R8}30KnTsU6 at CD@Q
zJYyfyV(}keVK0lw^9|yRxy~}IpWZR`lQ`}^q&?)d5P76;O1MkpIdfmsA>wp>vrl_j
z>Z{<~<QcoZ#9fYZiy~TIS@^o&-XE>6DWl7?mN?TN?b9w2dH%8M0`)V-Et9A`2g&O*
z$RoZpVIO&oqMzf$+11XsE<~Q4<H<98pIIBTzFgz#r)Vbcyh0wmzHU8J9+{sy(vjz>
zk?T-}(E1)YIbt249NGzJ<~e^Iv>pqs4cc)_+TGB)E%Dl+9ktL7L5o<@Mxb?B;+=qY
z#6nA)#dr}K%|QQ2*``D5w9xF(4nafxL-BH;9klQ(f_A_{^Fiyd at C!oQZ=vmg)(*{_
z#~x_=Ed2IE3tMQN(DqvR9fh{XLhFOJ8=5(f$+H<RTKLKP>~>jbnb3Ax_~k*{VWF*s
z)&|X-hkVqr#lo)vTBC)w6Iz2M?Otd>OS}$fbrzbu6RQ^5GE*JN`+G!x<~5x`XsU4}
zP2TI{w9w=oKRYcndEd`bXa%M`<lR5Erjax^w6zwRymM$LH1oPbBedNX+Ae5e3oQ(7
zzlC-H+CdBL2(-f%+Hq(R3r%jI9=Fh at LhG~8(x4 at LYNX7Ip`}=8E@;y&v@&RE7FsQ|
zObe|An!`d1L33JY`=AwBX!8E1G7GH>n%_d}fmUasC1hX*7TPpuJ1n$xXdw&D0d22^
zRtT-#LMw-Mz(T8o)@h-&LF=;6c0=p7(AuG$u+R=cQ_UmmC<1M=g?0kkGz%?p4(n+a
z+H`1k3r*f%x!6RLxuN*5JZP;PCoKGo-bbG6I*<6UU9q$i&M&R_u%1}jA3btj`HBzA
zX^G1G-{+TBeAv!d+FQ>rt at yCxv9y<+Us~~Dj at GEm$99}odBunAh^77Bxu>PMDDh$4
zq}A7XwvLi^ly#9Eq{(?OnkN6;(i|jBD3<2^=ay!WG=s4;#~waYC!@$F?_w)@C at R~N
z=axo%*uGerrgKZPlQb!9(R^+_w={=H<BO%a>g;J!sGkG#@c*QVjjg6ZI|A(hwCg$M
zIS!kj9j!7ikofWrxo)n>vHT={;(YqEG2*9kE%Coc#?OM50Btn>g<MPH+NC;ogMT at +
z%rWB2J1dL0Hq{hg-aA(|O8iXX?BiM^*M2GS_5D8Qwyt%YboNi59NNR6mwy5M3pBH=
zQ=t_>8?9`1uGLxM=Rj*5Bfgt!doA$;(Avj{-^R5ru3Zz=g~+%YTAzj14sGhgBjd at t
zf$b(*9%&=coY3BmwYPMfecO(cZ_6J1T6mp!<m3gfy@`Gfz$@#2PHMCk{U_x<0_^~_
z3oW<sPhE)pe|DIE8ni5E2XaoH(;8hFakG~5j<AU&yufFjq-^`(Hw}3%^jQceycXjN
z>OL1;vwG%1y**vX8eI$gCVxH3 at 1YCl*9E^_k45>FTsXgUd_a0fl;7M7=T`^6{fDA!
zU=z=Q-&xkw4vBocA5CBL`!yq~(bi+kYo=%6H=Xvs>&+;?Z(JBZ7xv<V-{gVl8r?lH
zeiybz*8$J+{FB;tCW;B`Vm$xdHM+)e*EGb3J^JzJ8p{>rHOd-`i#X*j-ldj^JQt5A
z&xNni?I*7a<S9V62|sEXb&XEm^`2P7yV^uQ-zLszHZlC{=?aQ8&KhR>xcYJ8The3t
zsStV2T%(hB&Sw>$G}gpcpPM{muNjWNCe}q>-Tr8OT{^lv^6vX~5AV<u{q!<Q9aBH&
zvL==`u6}&vwL2z{yi~}dAL%a&Z@@n%^^fSo%b{gjXm!wB7FruLpNUouzX*9w^YM;H
zu}9~4<%_P-vSxhw=+BC>w|M2aYqZXfGDeJ*?-D8B$Tedbqh&hK_t%Ek{2=M$N+<Nr
z5A|#B69PZch1<b+2AX+%6 at b<ajip`&C&T;OC4L*%2D!$q9{nfdz1<GV|KWbEMkxAt
zZ}`4roO9^L<1+J&N9iZKNarS<FTqH6M!!~IdS2TVpE|l?mL`ecD_e~2C-rN8dJlN2
zDcX;Z>Gzf=2Pekoy=&Cf=lmr2*$D0M?5W`0_8cc%^C@&4oM_(1Jso-|oAslw_G+s*
zHun4T&{&*t2T=6Y!SxodoA&`8hIZt#eodAG<R`l5hIV3RzxIU*oapUi+~>`|GOFY`
zNqU`TE`cZSblfPs_z8b`&+TsV+!Du$KE|PrqR&?A&vP#qUFRFmb35W5g at 5iDxB1v5
zP)PF5>yZBn_{XD{>F9dQ_N?3c^5k}#Gr4DG{1>I=o_X_dX-wZ~4Cr&vx7bv|PaDy9
z&rGwvMV~24G0EK{^_dE7+Nu7b=aHuoPu|<R4;@^?u`;TIoet1BEtL51=#*>dqE()I
zXp#323_btnh%4v$KPW?w`!P8aJ+_gy1-{pd&05BamV4zqI1xW1VYK at jB;_`f>VlVl
zkUHVmxQ|S3#(Np=8oG<jrGy;jJG1(=JK{Mxd!BEN-cGXhd$jT%=Q{E{g&ibRKX3*=
z-4=%XDkt}}ougOVGM!%+{HELcwdstV6N<;<7xnG#_?tw&GtJ<}Bpby`cgS-Hz1n7M
zH(@FK*dK0sG+(#BskzLjGkM3RIJ+B1zMDX=1DFrJ=Ye+<Y?(T0YspUfWOCy3FCKdN
zr#~~=$R6@`<@akpki50+x^7x%%R_rIZW{7s+}kS~I>}Fx2V|l<rLYt63n$=p`KDeC
z^{9kj!b>)FY>#h|<|o&WP=*uOY at D=F{W+nyzp(_cGKrl7VxyVa%=b_CYhUF!;R~eK
z{i;cps-YZRX1^+JBy$<%S<ye at 8H7A&IVPI4v9-_~(0<Rc$^OKF$@@HvR<k6jcIbFn
zlENh_d53m4>1K<bCdOnl`F!7yY|E15LE2%}=w(mA7cHZXMb?C0Y#X5);cw at 9`;Afl
zPjlVcr<{eqpY;FQ80FtIlE36xxSaI>=Wsum4sADSc0jvLWV&NSp89^Aj}Mh1H%aR6
zF!8?}%VXi0d9;(qZum)D`3W9^7KRoO!ph_niowP!xBl#y$dHCVNLgvrN5Wql%yoiA
z-#t_fyrM&26DlJ9Y-E^0+JqO0&*NJ0+vD^;APZ-;8(!jD<tOEKLJOH_c4%&ByP)lp
zNW(UU=c`Y+k;kBK=Fu!_7F*!WEYbU*J4lmO(69YQ(ipZ&B~z5RTXm4U+KF?NIOhBh
zL5o0}Ea~{A5hBpKpcM&0-%F$WKy2{#q4HvOy5G*j52mc@*X}23!td&px>ep~qsK2u
zwyh-oQhn#m at +7G(<5<?zq(5jN?aaHPHt|i;Qb5s_w1YA>1mwZ@;~c9M!jt}>K7K{A
zjnYS(!SbYX_R2jE{}=W8k}~chT^s4Hk#zio7KXML+J|)tZ4o>GtsNS7u%kL2e*P^^
z+Oe?*&q>>lD%vRTAn9zber<g;-GgztBcIR1PuE`*=hQnYF3~kmNz^m(vsPf|1B}z+
zj65HdXWU!k*)I`&wogwR{|9`#baPxZQs*b#I+8$gH=z-JnfR;kB^dn97^@BU89DSB
zi{+L!B=!lB<q&t==CT;w{G=Lw7q)5mqqYeH+TX>mBvZ at S;}~*>t#YpzMQ*8g$BnF^
z#19yCq}wWXg(0uy+D`JbQ!iJbql7QtXU=c<8Ax4EvbAe2SxR}#+FFtn7dZ3LNEtxd
z;NJ)T0~`1 at 7sm-V!9UqG;@L<{Uqz7bP#o{^9ZRnx$H42y>f7D$N~hu-7Y}F;jKWLr
z*UkN+BmUjPb!4s!>WHq|s5>*==p)<6!<RI0!S5KVL*6cUg(eSZ8=^M)khDAV`+jtJ
z^>G6>6*u~r7q8Qgtt}g6uo`z87Z}%CHmiv{(c6f8JHbu;UnKSa^e4|43+ZDC^Lvim
z`nwvC>P(I{c*-{z)cRiSW+0&+ewMLIIrPc2=|S4Gyc;K>nmE|_IOXQO2ovJ3iXUoB
z<_h6GM;+MYC{<NpJeylfUN3t1mYvA6K;#LX at f@o7u=J1hYd;ftX2#?hb8Tlid%DJa
zIx2qi at J1H1pgbz9w}(W0$m_^cDe at fo1oA{i$RlksojATb`n6e7C;N#r>;qsq^0{PJ
zynU25iT!?Sw3cef&;tLTB15{!;1d}}wn<D<1(?j$Vwc&`b`<qNdj7mEYrDKhtp1|-
zzfdhByg^>l$43(2C4NoO#%ogsv{xsRXS`9SGyJD+>jgva)B4uvjZ>eSikVG=al-p(
zhthWRIl+pdwlmz;qix3#_kHZ-%=sMiMIXt_;FUFPK>KVwC#%FBox;m0?@hDJ2XKUO
zZ;fhmOOoO*8QnQCJkA>$XiK}7Z(Wps at c*55FS;wdiTTur2DJO6yn6c^w)YkCZZosr
zam%=Tl<5llo!ul4!Rz>1=2H{S<Tc8C&?gOc<ryzsLq$~mXg*i$$FY+B_fE!07gOhN
z+;fJ^XXF!}5dVy<FP+IyhC_N=+yT%3TW73WBs>Ps<nV~LDC3s8)vRB9WWe;?zCQoZ
z$A<B{DakZrSa_3Z;3E2!Z-EqDHgLiBj->31S$N%b`G9ukB+7p2Ih4I^LVWh{+M3l3
z>FrUzDYLT-AACDJKLXFQ&8gve=;BfJNeeRcc@&=iSJJCJ$9aNwH~MTFp-&m#CgN8j
zeAB`85#sa`XZ(DPb(407Gr8lI_-~Hx4~FWq4Bm68&#z1V)1^K;ZZS`sMVF1l3IDEN
z`-Iq0{200%w*3{!ofG3HjIPU}a(BUV9r?Z{`A(61J4dXMEru>iZ~s%j_HNop!T{x_
z%|+k2ge?uNx%lHA#Gx|V!pe-nDDOa;PI3q7kC2Bx&-u~+!`_=fM^$8T<Mo!xzBCY!
z2xzk!R)ZphMQ9+9uxV6O+{WnW3_3by#$^~~oX9Q&2oeP$Y7mr&C}C4JAqpx2Y6KKS
z)Tk(^I7UH1(n<e+x9Yx5_e)2Z&-u^!&UfaWliYg0ck9-z?N-&TdatQ$^CrqEc7Zk1
z6lBM9 at qFA@rvhmte<hx)bp%!|<V(phXXqI=7S`}I(VVal{4Y52rjxuJwHC<4Gx}Yg
z>kqT8_i0^2?LS8T;CC^U!u0*b&?zBG#tS*eA?MFd8vV4+q2I+Iy_>^!c#hz=N=R>S
zJ-r_e>doJN%m)7eN9Heo59&>0)-8B;9I{eL)|YtZvTJpI5grrr4Rdxx!<HFO`mce!
zlW5PX%okHy`C;vu>Xm*=sASHGfP@{jr|L9kn)tq0frS$dQ|xT|mez=*JZmck1}dar
z#ST<!=;p8!>ygHJkY!&-Y1GxL4_F4Ci;mTSmuPM>Sj!Ks3ye)%7gm2xA-K|T<{V_h
z#v=_6r4dVMVCW9{K1m92`YoR$c%M5KVdo<L at xVR!EfRDWbrDtwEWw2>0oMF{{ANf9
z-#TE&XH^HfhG4r`Ua0 at Q5?D*f3*|cwECX05UknULCa|Osc`bqYTv$4=e!$v<@MQuU
z1B~jDF4A)huzOtC9l#1*SU#}jz%X at D7sV|CRthXsmr`I$fMGj0$hQetg$t_y=67L-
zfTb0N$2|#bv<pkP24~q^m>1Y`7uEyVeqeA at 2X)B?X3q)7t_POx!t#J!56sCM^{q+3
zvb$CX&O_hQ^HHqdXIdj at K8nRRw?Xqs*K`nz!%M?$1EQznkA9;m25H=kaEQ+Xmaop|
zF)aQr$MvA%#9WK||2O0GL!5lXd4$rzP#yB!-$Ae~S;|>5gc2I2f at xsOL!1KSb$@sq
z<kig513v61_5m{RycoQ`Zq<QRR4%aC+&9tp!+Z?IhN~2)4E7`Lw)3k4cT+mBRa49?
z{SKA)A5Ol9Y<&Zwlx5a!HsLzZ^y&asDe9uJ!3(S(@|Z=4+N**?1>XrA3P%Xloe$6N
z!1KQ0Ix0WNFseH&9N|OR=Bm3P^wndxUB4dk3L!56I?N_{@I8mxqq?!d92XuLS%I4w
z#{%kXkNLSPfr0T<E>)DD?$v?C2veCBP`U6sfmq7Yb{d&cJ at LX=L-VwDP;5K$cqhd{
zS)R#vm2<&*J>umftqs97MBO~N-guD%|6_y+Wp=z3A9)cvBA(g^{r*`obbAzGdk$(_
z=@;Vvs&lN8 at 0&BGeS>}~@JFfxgFtlq#k<K9t)WTYKL(p3y+}muHthzK!x{3925&Za
zu`FYKkTAdV40jH><KRcjj3>GDdx>|P0WalsIe4oss17_$a#43P$zR9cl^j81A=;Wb
zLRWimD8!tE=FCSBcQn#@i`!|v^&#f+!99&!tIUX08IVJI^!Oe67k)cy6T(#9Jl9fV
zGTP`wNe$^St;b+zu7#N-#mz(9>x=&VxRi(Gh+BgE_iLy<h3BEI*+3qAkVU^+Sp+ at y
zA#C697nP5CeNA;J6GoF}jbTH-AQ|HzBOSjTreyT`_hqz%jQktnpMwl)isB~P3n%|!
zX8d)qFJ3?gkw%wmP6WUv>>u*DJ*mAAGF~>>plx_~1TyCEdNab at H{F_xUX+F?!G<wB
z-kj=cE0_<HjY!Ew-Y%?GdqW}P2W<4Ey7j_DkBB#6*U^#@R%00K%5lWmkM?C>t at W(u
zcT#)6YR{H at xaUOf*CW;Za4+N)jX9ydUuCz2Jj|g(_vyMo&y(OOoR8m_qcr24vZ?E9
zR*Dhq at RYAK6mt4S)qx$v|LI+7k0f;e&AN@&oS59Bcf!S`<}u!z&|V*}4m-cl1K3z#
zYQ7V4exW(i$icJXp4EXC2vgZjG%r*Be0p{Vo|WL4ns=#ZIqI1Q&!*wo5<E+$c(|xc
z_d{ReUx4;*UkH8C*Xs3KwVvXA at Er4-h*NI#Jul>u4a>RuL|_5Jb~5C-%9MCKH={jf
zRO>wfr6Za?Uhei}>hr@??s<^YymxhAJ<0j@&!Ouf^50;d!VLrI()dvV{!;L(ezFDp
z%0{btg7AqpMS2$FPUt=m^^N_A*9ZEN47(8Vps%yXsp=ok)BCU<<4&(f8tg|o_>~?b
z&s>jO#QW+h)}vLp9;6%nwq$nS>Hwx)p?MojdE*@(w5Xx+cLrOdo~MmRygbBvlj5PQ
zd9Mk*r0(Yq;C?Pp(a_JR4VNKKLccSQL;4*;oKnPjfzol6{cWf$J=nuX6!IMair4ZM
z%zrM%Zv%$MQ~4Sbj5i`a&k+GWYRjV$VGQD(Me%SEHWt_|z|K{O#>NB71Lm}O8V?JB
z-2rSI at r9O&_wHb`f|*id at +R<>p8+qWe+0ZK{p;r4g!zGafTdDexZ2 at wWG?az>_vp_
z-gj^x9+BiTi-Mhi;%3~6{tCWCgy|xTe$%o9n6u6!EEiZYu)f5Ei^}yLVB3K`OMt6B
zZVi?z{LHu46)eeGj(ENS)q$oI4_7+=%7Kjp_8b9q<<+3A_JZv=;_S!RM>a;=sGBh6
z43EbI96yeMasu4^56C~plzWK>8#dnGC&iEs>A>#*-kNY+BqJZTYaDd=-awq#KdC&0
z+9{X6I13;AERSfX;D_)+UIpYWyMou$TW?3d4?m+peg8Okj{B+uMF`tV!K3o7d@@<6
ztUH5^1vZFmFa3V(A0V?m at lPU|J~i{t!MzX9vIkZN9<=Z*56_gH#oTHZ?Pu2WQ4fWy
z!up5?FW6qpcS3!D)HGEdiXgKk(o?>N&Xiube}me=_&>rPqaL0{IHc~dH~j$AM~2Yn
zhsWoJgmpVxgLvB!uQkQPMY6U7I|NMCmugdLj-Y(0&dLf#Xhi5)4w_TZOY&V%pTG4R
z7}O4?kv)5?I?&NZIS#n3UOTAgN6xkGfnO!!te at l+L$~z7)%qLJ$W!RN23|2e&wSi9
zhZz#j^R?haNBI(|p3~6ZD<N+?>9-TYRXx|ONnCponY1^yB=X)ET9vM6vSHU>b|TOV
z_x23PbnSsrK1#qd4fBN?Dc!s3r|T-0(Ky$&FmkyJi_eBU`YqriS-iGY>j2~-^n4jc
z5DeL29<i)=l-O`J#v%q<0_2daey{~Cv#SH2n9%J68WGB*-gkO2ubvo{1&_1!59md0
zKGY)_EQ at K7H7(~v;3vqnD<F$})FI9=N{_l%!EnrJ5T>+3>y+0HKJyBf@<VZmCCqWF
zb>9S8g~eywb_*glHJ<avz-$#kuSKL+ogGC<)*Vm62pRmnA)24`LmbbDP&=wm++2au
z_2K#Tc<#gV7y~z|Tv1Q_{bRMy2m3KGYA9wuGwW~i!@)@QwgfWzJyF-!Rs91S1MIiH
z|IrWf`=OeaL&rjd?e;M4b#(&UH^o-{Y&h0)15qa!27<i`<wj*dHf;K(Y^#4n13;D>
z-#OW(Vmv<x`BPB__5nPHe4cYF+k^r(r-#n{kZ+Q^7x4x`F3GT0X}QkaFCEyrJAgk~
z9e5exFx&5~JI9oXLv+sEiR2tboI=EjG!HV-VR#}G_5q_b#A^q~N6b^zfo13;;b~dd
zpg&MFSn46_oN&QdwC_dLfhCyK*rv{J=ve6L>z7fds*I1=GSxS;sJ at pV{Uc>(+|JRM
zBA8VE-K8qX>aq&Iiws*tbx}{Zy8W3<8t2ZZajyP8pVF-hM2v?mDnR`z`_~eNPW2s(
zo%FpT?`V{cUL%r`pmBIP_ at 5lb?d3QI4EDg0eWu?w&xfqRWQ!{C%%xx5Jc8Gd(68h)
z<8VvZi2g{gJ>=U at QF`IyFxh7xc*cyvemu3&iDBug at xQLl)ZPXeLh`Of82*RGdm*n7
z@~TFj2%Jx84x%)}_v)xl$K8c-d+iz5X at j<lWNm}2BhbIG#7%=`rgW#>l5UZUY;Zi)
z&q&yoE-&Ht#Syk=-7LfnNuJAL&pf#Al83Uwv(^aHh1wQAVAliNOnt+Zc3rvg`qbx~
zv4K?ypEX&xMs8<nY at s?TMLKKNRR_AWEv+|hpxv4uy2g#c^g}LgtA+VD<eh}PCF?P_
zu(aOwd_QW;vwTo1Y_P)%6j5$$L_9m)f-WNUqjqU<Bw`Y#hucwT|KpKV9^6D-UctKI
z^yQVQ7ab9LUv~T at 5ql+^rOke&9LWY&A^lC88<;0%2W{Z+(0L-2|1Gc^_7*)p+7INa
zx at P|)?09gGl}?d{6?kTRrbdD#q0fo0fxOW<)q&mA=d!fCdbS94z`p^Pm6X>&m&1a^
z3;k>?%a;#35r9iT*k?f=_WDBoMbuA@{uTL0-hJGLX476G&++TE)f`JkF3LgiRE`;N
zH6KEGyi2lR^Cp_+LuwIa7AybV<@i4|o{p_%#$%1GK7i-}YaZf_f3;ej;li!jUoMC4
z+kst1cJD4Y^KeFH3QaX8T9+nytyR#2$C$y&XS at b7PHwGM=bWg|g^s6n?(R(G at 2>=J
zzirilS4dC%rUU!#+3(^rSA_ceadM5yDFq#5`|H(#@50+CbcygghdI_Sk;`eQ+Jnu7
ztUI<>>vth^Ibn&5qT#%6g6(SgR&}5c^s^_x(GoiM$~7^&=K%z3LmF?6g1^fS=D+Fm
z{4LSX`|ZS9o8<dk{IKJDg9!|eC;216ziC%>;A7%HH;f<e)fwjTAb*zP9}oUJ-ogGV
z)m>~De<qC+{viJl)o${zK)a)&I<OXLh18v at 4|6h at wKHZ^X#b=3R*HDX5w8{1V_lu=
zc<+bAbNO&85%1u8|9*PS??a#8{qLnm<yQdvGICFK;4vz{Cg_c!^@;MpMi^J<aMeCH
zkv-ar`lRyv at p?DEI)TR#RGXnbv<A9u|DbLhB5XUbLm^lWu;%FRVjtRmG-N*u*}pzM
z4aaBkt(3?MFFF#h*4gQQL;ZcC_nUM*gsijw5Uhu=IV9<_1iI`+yoxyJGT;n!!8 at Gq
zM($W@?nN?BLT1j_)q(OD$UOfHWL6s1%aQXJlsOXiV$%;8|B+!k;S6M!nO5t_GSOpo
zncXrD=b`-70nCQE?S_=ukYJgG?axvE_CuEn#2bsbs=W)&ehj6v%~8Q~i1loCnQbj0
zT?W_l%P1cJjbl~N<*4wh^$yiv#CgQk7_#8y46bzst3eD%=x&zY3-kRQ_Q>!DJ`Cnf
z`L)&BhP=3VO8|>)tVC$*1brKB^q at at9c*I-;(mcSh}|6dt81UGdFKc^x2YE36R1tp
z&mSE}5kCASkbRN<z;Nn+`>=V0t#@9}LuTmtR&$YSY7<;<q}-4BX_P;3JK6sRe+MXd
z_H#qTxd>{X>aZC46vy}j&8gkr1$|T=)j4de59*C4SxHr<H9sbzL^T(r at o5e88{60)
z_>OJiY}&)Fcdk3Q&y*dx8)d5fWAOmZ8>-d2MtVP7)t|Df<U|bm#_Qg|QsvYSdW?h3
zsc7O4jH0sM1 at C{P_JlV<4f6|K)WHTdFrMPCL;T7Vj=$vJi%+)pB;r>!^#=k7+v5>m
z*;?#<PsG{UJlay>X#+}*_|ss!%A5HEe&WB@;m28ATC3%mOWgcpz+ZTlKX8ipGaUY)
ze6*i%`P0Ck+no8Eot}Rk_|sFF|M(cU{`KS^0lzrgANUvPv)kbh>W>}gaDAGiua|>g
z>0jpXH>`g)_zPPw|E$yVj{|>hOXjD;P2uHVPybTzr?+DLhdcZY>tFm2)GzpJkzYM`
ztFtZU4xL*V7u7F3VA%!!@^k#bGg4&lTK*mO4%kT=0}ovtYGbehtJnW<Cex%>h9a1l
z;p%<NJ0P#PgFmp3#_Q)#E05k$eLr&l)4#)&{~*?n at MTKs%gUEoccwx418H5i+0}hA
z)w&Me%wUI7V-4ju0k+{_nm<rLeX>`Weswmr&c}hhi1ElR0GA`5_Cd(jc>jqq?BrMe
zs}TDfsqE<6)jK0vE?9gYWR*g<+|K^M*Hm^Zu3~$E_898B9iCKZT3s=Ug}HB49g~cs
zkde^MABd$fqrj1YwL-WI%pQg}C?g#<Z-2T!(1c{%_G>cecdjGraSvpyxzHc*kc^>@
zjCy&29+72aA}{M8BflrwE7et7ErZwLuCZz;mcp;p_dMfl3ym?fuudCV9heXWIp1H&
z^MpFTzH6Q^0!PuUc$z2F_iL#+rWYbdL*|CQynnL{GF|7_Dcy145xx9+zhf47>c+OZ
z_7U3F@=dFZ(yiaz)SO^H#1%e-_S?rF7>#lzd6E4R<QgcgUmn?b{jI(yIV&EUwdq;m
zevIM26*TchvHC(yUnCS+Azx7`>{IT=XfxFQr;Uzmi|`i7l&B&4J(WE3>xi{9IG#*G
zgkl_`)?|Apz+XGSPp9Nn8lmgskncsPcU at qG;q!z45B!fYf9Sa?<^LX;lunyUnA8Og
zPB#5IFm0#=krDBul<Ont=urE~xsY89*;wN9_ at I2F*{Hy4oZ*V>%rx*F0^i)A4r)&a
z^APsI!%=>_ONU|c`WRqP1;ow8-(JYd at L~Q&HdVDrS6@(VQkC%t*sL`X%XkoNJVtoC
z4KqzDvy4eN_b||}_e<*LJxX8rY3W>c`YkSfhsXcfg=EI#3^(S1bvYorPyw4eAF`EQ
zxcBnVesIQifx6~F=vX+&ALs_Vpvyt+=?)9->DKj4@^zaNBNhZ+F-PS`Xl!&e(Z-YE
z^#%{D7HPh9{bbC^v(Ky at QXANw4}HOZi-k5h=Q7SW=F0W<jIxp{467+jiTmvUSVT+}
z at RtHRvSx%ouqGC=Zqu?N``6evi*?+SGGYM)WsZeR at 0I?*lhl9dg at C%YRX4VV`s}c`
z at p0tAU)fpGa}#9VakW2?LNdK!GL;Q=`TVnJPqt at dnZY@L2mL?e8h_w9D#v3;rNK2!
zaE(wDS)}%1wVR6ec)dSBZIkAB6V1DnUk|@)qUH#hc)lIaM^Jw|ZCZ{G+%@6As=|Zl
zg^+c0NOhnsrG+aEe at lR^yTKp$JppQtiFGKwdy>xHKI}fx1c7)f!0SH)-VE^i!Rz~-
zKd_4A*7e~~f36Q}pfI~fiyw-cF%A0;{|9k>h<gv>X5Z*n=f^1BdSe{cxAeQPK4j0m
z*-Vv8GS*T0zd;7|Pd{Y%a{ZCto4+|YzgA;2r8yS%qzwFOy|v|%(EjPNOXd_^Y{3ly
z)ix>3yob@=Z}JD`AWV5Lz`Kji`D=A*MK3sm{ex`SLGXWowq at V#qzSp9zoV=6D$K!1
z6F!Pyn%VKATv{L})aTM+m&X3yANY!7j`-~|eULc`GVNRafh>~Q){&`fm%D71xwKN_
z at JPtm4jG<5_yb>(jCd{MS8bNhg!d at oQbnChYCZ+^^+%TX`KVBPRX0CV_A0nP)u6m=
z=+|Wiy7z7Vz;x($nto148sCm+O))l59jt+FMYlsYnzP<{2D)L++BmY2QvL`ZWX7OB
zr~kzts3g00y_PwX+E=}`!9ENfVclBQ0qHdoGIrhL4=g3UdY at LW;YsC&)h4oD!G2Q$
znQ0IB1D}yzZ5z}JBM^D-!t_!ysO(D%Ft2&gADAt1Q#bBJ-jm3+Znq*9zTTrxN55}A
z$sd?$L!S+3d3Ew4w+pOd?u2F$)(c8MDz{0HIeMBuFrLb7 at fpZGgZkVLnfbFYUnV{0
zX_*n~6Xhn6-LP^~=g>$m`h3>NM>wzdoPl0vkXN!{(;o8&dQx6*IIYYxY9req^PXaV
z;2O$n*1w<EG~{*HER3He{`%)>y_l=BYlsTw7Vw?~Z;wU(zynC{^!0C;*u#r31;iOm
z?3qURIE3m?v~N>99p(RwKX91lH;;`_X@#yw)M0|7p__1ee{?V6*`@wK3ySwQ9q(6c
zA<EeNXT%l?>p<<G9c<U$=lp>^(U8~Ik*DUvk>**$ldx93;8*5 at GzS<5nRI^l at v|Uv
zFl6evNn%v?Y-^T1Qx-&JPK>q&*xfwVq3F1TXdEszPj%Dh=GGwYgf1rnYsuE%h`0$+
z9&Ff}1yM8QEPJ+v79jS6r))Id+asRqz at z%9+Ow_er*(69@?qlOWQ6emW#EOpv;rZv
zcIC4m%^}aVN1O?sk>DvP!}v_L%0FDCS#N%###`DhGO<&TK3H|V;IKO^-UB&fFu>c_
z*1hvd*d4$;i8aA at 9a{q1g!B at CU4XFtD$-N$6WpZE=TR9P#Pj0S?9W=N^$BeUuK6+f
z+Zz1wcrWC2nTd5K${lWbVdp`f>ufFQneqtcS8M#i_Zyo7O9Qqfp+>(`h}THa*wmbp
z@{oyV+rfVw!dibCmvJBpxAeROY3 at hd0SMdlkq(u|KdU^Z0GovPM-cyVga!6 at NQZ3v
z6$4LS>;KK)rRxG&M<DBF<a;T?^j=+PA2jD|g?V at bJ2kt4<vtqrA!VIE(1ZHlb;IiU
zlvKIb%^iOAJ9b_qxdig2BmGK*?eihe_3j1L^>*-7uJ`M2-Cg)=Y4SOw(|qf$`D}cr
z3~8!w-JL~ghM%J*`_vCS1)KeW3Dn0r>oh~l2D5PM7L4z-MAuVO{ciO=i0A2cBG7^I
zQ-j*Vd1~i;9?2b31e+6Iqu(JyzYTk55RHe0T at m_D9>ps}ykf+A0%7X!91m-D{AS_3
z!FXYNh175DLX5v#{DETFbNgQCGbABSjPyjA_lfLe>%QD5Pm+1xI8UN^U!Etyyl?D4
zk7eFB#u{P9fo}wC6Z{(KkTVi;eg_-TlVn~3IXW^iD`6_K7DEEnnl1BD*ut&;KqthZ
zi{y*}Rs<{sc0}g`1<3CJ!ereSTB5YMoCCJ)NIU-xf8hF9q<tWZ?HvqDLwj3T3ui}1
z9GHTB%$Be at +t3D9K)y{Mh;yA!P9q$Sud(lHznr$=&{eH3tvgZm&GiYsOl8;7!8`Ij
zKYhJWT^{_;1hySmY6vz4*j`{w7^D1^LYGQl1vGCM=H$=yO{Tg&g}n&NDj*LFFxP51
zm_I*c79oEsAA<5%VTB(2p?>8>-#@v}A81E?`OwgM<yvP$c~3LP`ktn=s3%vl1LM7r
zmj`*-NR#qzFNM4aeYprcYd-V`-l2XqqkfvoCms6jC!e(- at -$kfc?j|jb>=iLp)`G=
z*;Mv&*F5yekNknH4b5rl#>z~b0~|y}TR)Hbw-!gk5n1%9KX8=B!LNpJnYrq!P9D}f
z4J`wPs4`muc|D*%)rY+r@?2#`?PEK5d@(hFTy!LRo|C4l{j2uD^@KU}w at o6p54B%H
zGF!r)Z2H_E*xd#)SNxhxwFVrXR2E|mPia`D7c%o8b4{lc>if5L3#yB<n9$0g at p8=L
z7(Xu8?GnGg;ki+bEa*FUR)+ZNy4M7HP}v at GbQ&Ih7EQGc)~U)=zRCJ^rOQ^p*33rP
zsy<LkWm^^YJAb6}5$H3iM@^s{VeP}BpHDQGIxjW#1Dp*x-ivAi4^f*PtM%gZ5utwQ
zT>3y)*lGj4k;eIHh<`rx7>=;*BRz71XThmV?pOdj*Rv*2hA_rpB>$9}MUdXp at azzt
zy^OTA4MKUSZ`E3bWP>pF45qh}((!l=c*kYb1ZEH~_6!T?93Q{K4reUww$}|;u<O(g
z+L1l#T@(0*^0opahB`|Usco at O5VrOAk&OVo5-z;>8wZ)w(GJc>*uEVyUAC3dEe6lX
zzBPg0Q(a$j+H|vMJ*~dbUca){86--#3Ni;G-L90bhte$%`*un;@cj#6m;2ZJ=I;no
zd(DMi$rw}<@JA!P=Lgp-ySlj$&r9;Gn`r%AKMVRByk(I0V#gEeyAJkJ$aBrZsoeI0
zXWOuvzzbxvH-bma{Ug;EKKMvyV=4^m(a80s*63cyOq-8>fO6}Duswy+tq3bON_Ql9
z{3B}gx2JD+(yd!3x%LuOx=&EL^*<08Ot%CwmpSQPR6kwS{xRV>eo0Npx0==WD(L${
zI7G at rFsvHsSOt06m(~Q at Q`vksD010AAAX-di+tvTNXG`w4S69m6ZXO9w5ipQ8KEtY
z1&_F_Ca{*$o!3CRYD`ddl1b^_5IJ47HlTDjLFP|r3#t#@P(R&v;92q{@_R*%{yjgn
z#>6<JY{NauFu?t--dWrQzC7@?LL9QWqk*R*cnJ77;0e&X{#-1N_AJBf1$vYi4I4B1
z%9_B{WG~(xsNzLl2M(iSp0C$m2kP$}6+=!Y@~8Uh<B&t|0))I1MQN3TC;O_Jz=f37
zKkBEYz9WKhk9^{JW=VagIBc93a$?ZuCDLk-u$@I|<%K4t#-1+V8TrSWK#T>R&N{7n
z>&ei0Nv`_*W&N%U4+piy at sPI*x<3q~Xj at _OTzf)1mX%x9Em6NdzE(iy&1okB4^Tdi
z_>hnCusI#2dmKE6ZmJ0^u)(tnJPq0hl`hVe8CG;;r=XfEcp)>pScqGZ?)3=U^B at zE
zLdSIv at bpC($A*Wm>obAH+*T9(rVsIr0cHbBM3^qZ?f at o$olO8P!t#M70Bfue=m1&-
ztU0h>4BRw0P6g+xS=7ZMO_5U&y%Mr^-Cm>m7uMb0-=R-Xx+j4j0v?)f!qc!V!2T28
zfiHqRv;T}a4*HyZ1y=s9eAJB at s(wzpem(?w9nRzR^LdaLVg49{eqM1`P2f6e6P+7K
zQ`x7%ddz@*+DU%h`mI~})V(OD>mhR%((Qt<eYii;EveTgG8bb$cXy3Cmj*V~&x#Q5
z_`;gN9*KA_BVL2;Q`IBAmy;LS#XMZCyGoJ9q(wEscW<bjYywsSY%;YICI44{)1fe8
zGhzQ==2K`7$itQALEq;ceO<mbHTUNJRGw_bl7Fy%*#*~T^C9!W4kz?k`u0?3<;m{;
zl)nT%sjTq+R0M3y#yUS4mHi>e%6z&e5R1IpUqC-K4&bZ>eMh^*q?bczj;MA*n}a{4
z1Z^MnrflJB;HTed!3Vi>@hlzBViwl~7E;@M(aCEL&A;o;2B^HMbGI~({XVJG7>FZ4
zS15{h^J(Nx7qlfsNMj1p?}ha2`&9a2?S|@a{4<zGKJ%aHZ#MdKkJ1|LJ4!}+4fZ#l
zqn*ZgG#c`1QFqFBbnIf3U%2mx<}Cf5#n`pJCU6JBdR)ahH1=`e(_}PhQ7;-3?^y8K
z8)^c7kHmYm;-&3$b;iC3ywjG~1WK7V^gSbW9tUmCoR&oIR|OA_&^$E;_Dj4_6Ud-?
z{Tp;{u+OPBOl#n{$bC+)xyL|W9_kQXLfCz%48q?j@&O+Yo?S221l}i~%{kz4eBgs-
zTf=7Amy#D8PVoC}@_%Q>TYonwkQHww7~MQKbrW95D2I%6r1J-a?Lm;?@`aPVE?tT?
zomtmU(t&LPmX7jYi*QJPpwH^l$1-$x$cn$&362L_72<3{oCgft;N8B^vEMbf&4w?z
zh2eZz7k8n3HxpgI{&aF6-ZGCc6CS941tSMZE{Dz9gm$2R&!gYz>WEHHTfHNX+nDv}
zb(ny?xC(9cO5EFRA=CAaCzan3G^Rs?>dKGCMnABeEj9XEJ(w>#?>VMChw=CQa9f)O
zEEBxP5YOGW>dKAJt>rZE9dDk$mqFi?koA}aeW&*Q6?r_y!_UzqazhQSMQzxU()K3;
z8Bou at 3Nl^i6|;dKMIQ3@{&stl23Z-)FdpqYv%Y@|c(;T1bbX)N$1db!{A)FV`Ekg{
zV|{+5eXt$Fye@%!p!Fv}!Lsqfo@{H!-y&WHnXY*qrJD(!CA(?@_eUY!*}s-9+m1rR
zdLpuKGB|gb51GYCSGCKlDP7F{LtaX3hjcfA=XxLelCr=9`!Nyk{^hARuRT}MHVTbr
zhrss?WU2b?O0x1M!py0;+_vXY_vh3GeXYd5AJ`gTH2&%R7FrEy{^NMI?t_}3zm{xg
zChWpCU^^hxe!n-j$p-y>v at TuS(CF`lyduc!27RgT*|Q<fHDAjFz79Oz4>3m~p1XCL
z_10K8_ekHK!126CvG9TU$MGb%0WiF&qwikC73jyi+wvOgVoEDNY>h?r+YUTMNK1X6
zthJNBNd5$#-&7b at D;neL&u at Zj*Kv?J73r!vIfDNY{0YV2 at gJxObc{wGcY!C;xQsM-
ztqz}el$A*9qx$Iv{Rvf&nT2%w!G_zbRk|2srbHFUnf5Gewn_OV8 at A@Nn!v|R!7~p$
zYAn1gd at mt%K38a2cQ!)0_5Bz at J3AIK6Huo)l<wcDoD1u%%L>5L@<dJGTnU~VoN{h(
z9*O+gmW=F(R_6}A$V(+;9zwcZDBWR{ZiVg6uMHcst-2=A_8jnZ1&_+FdM{{r#P=L<
z&S7yP@>}0-1m~|~Aag!!s at ga3kWIxL(pApm!81O!R(*@ZK7M9)V@%|^W3YZJAT!gM
zcdV#yH>gjo!-h`L#dYHuVY`4;on0G1Q&SgVmB5a=u;ajvgkWjliz!1H1A_~m=MriU
z2xoKYYb-pMK*^BI9^f6*qBgjXodawVY|3b0WRz at 6mqY09o~e188qNQS+|!xg;5lh^
z6g|wJ49ndTGRcPBf^nT}n7y9r9sQa=E`m{BY=Rzntzh?PE`$1R;P-0|BR%-9gGNKO
zXEpvKer~_IGK3VBzm%02-(Wk>CjgfRe`&x*14FY`7h(N?<p4`!Y%FNOa+q6S$<+Q6
zop$&ub_U}}*T~}tUK*rX7Mw9SB#i?P!3 at wD7BA8|iL`D<`|N<QT~2l&e0*sRyb?O@
zYE!Gvld7 at h1~m?l{mpm*&+%*y^{Z*xM%1&vutQ{jbFpLTw!U=8#S1z4kP`zvl#eTy
z^vDhKJ5gDUT?L!eu2$Jf+^RAi56tJn3V|K$Q&%Tm at Gb#127Illo>d;qt=Krg+Yb8s
ziP?a+gXfm^wZGYSL9$X-!(W(ItAB&WWv}bzdOQ!vHMeVPjTRnSN$}Q_tX#-i-VyD=
z#?5JES^1Hty82Aekr&b4yVh!-iiMS>OWwchQ^|lGco5 at AB~-Kb^+dgee`9kzaPJzl
z^Yd%<Z|JD>esxZ;IHE<x$3joxLH(fxUpKrK4=~2NHd>Vprg_Oh=-8!ut^N(2>!716
z&#FGc{gr!keYhlIR_2AgF6i^OBhPxRKzR;Z*69Af7VYVR+Q4S;(?#Ww2JD^-YXk9Q
z08Y2A%%wN^`S(y@>4F`1SiH4}=JEA^DP^GgiN6Sg5jhm7|CAzqJEJ!66ZHXHUi at tW
zR at EE!KG-kldlM+rIUtwDD?d~vcy|4+Ht;${s(Tk0Ej9ET+U}20<DeFt;$c%Qbarab
z=`X>)-B|mZeNH56JY*H-{&rb8kY%I)A4gey(H7yIJ-CisZ8dbhQyF8mjl8C!B3I=*
z1~TWiJ`pHJ`PwZmLR+Z}+vlZv at x6@x(X-B8kzFMlmVHxg;GZ-W(ig1IW at nkh>CCn|
z3ti{W#~!R{=GV8Z+3{Y;*$+7 at +VH+E<q6!OhLw2Ak^c3+uMLzVtZifXzAlxG7dGf5
zcx*VM?HNwl)Qw5dr+~g49h`$!+13 at 2eS5(<$~}<T7rLEKWm8PLRfWyTsPE1PPhnnd
z;7>Fb=GRZxWlL!<&AbfVqyCgkm&Xyv`x$Be1G4SQDb0$o^%T`d#X9th9(DDR4(t%H
zarf2+h9E596{-79{b)>W at R@qNls_c?5@(j9zEjnFJ?2-4gV79=G4)08;CZ(mc(xAD
zuA*nCTRx+No<7k|0W=!VPvZFn^c?BYoQT>*=^E6<eYJrAmD$1zdCr1*sCSm1J{@v@
z{e2!-MK9!3LCzg02a<2!3^}enCDM66bXfDZ+CUM~B6~HH-jNSI2d)mD{?WCOufI`}
zvH|nM^|g_|B{@>h2C?`G`@LmqXVYM7D#z6Z`cu2#1MQTpjx_h at wR@#)Ev30|eMeGo
z?S2q4SD_Eip}eku%%sY&c1Gz6*pbrvYXf^4f#)eFUCb{dpPRy7P&6D{5gS@?Z8sV+
zcOu=hsjfbybgQD>bN_MR at f2YGMEQN!Nw=<FsrIebc6Isvk<zWdwhQj<?}E%bQMa=x
zzt2a`ZxwhlX4MALFsHB=Hjr+pt-~7Ye41F)FXv!?&V(JAgmgDjx_42!;cG1F&tt)p
zv#vIfPW|}`@YIcik<a1hSsyfHVyWKNL0-w6+CT}}?9NU;@V-K5y at ll?!Rmc(#Ci+b
z>;&}nzabx2l8$|;Z&W0N*4sTu_xL8Hy{T61OX%MtQ*{<;zmneLz}Iymnxwx)g0r-%
zGut(lQhx1H=$5mlHc(1!irO;DFZ8S>UNbdUhweqAHMWGlm56r|>maPEgk3~+lO8;4
zNqt?Qua~Z^)!%R&kLNds%OxuZ_onKyw+6%d9A`ho{Q$CCk?c_<8%B(ON7w_*i%HP<
z^Xu#>>C*$)m{+jYLs;8W?43-s at Jo{Ln*th*=iBjo8a>B1^v&O?V?OFx9-j5vT>sf<
zuomE18J;!x?lZ4N%1!g<r0wQle5>Gc(1AGnu6~lw<s1sG^A3?dII9{<`tU`0^8+tD
z5Wc4KY=IswtR1jvz}kew%>cF}1nY-qBY~9zdy at FnK7jg$7p<Y$YGQk81bw at Je;WlK
zM{|NSA1Xk6&#S+E4MTk^1s%EFw%WkIXw3fyDyFWls&-y?=25L<)H at oV(U at O<@D19C
zv5>hPei#&+u>T5~u5(A!77M^r{9bL~5weL_fk&0Y;KZm*dM98czZ75=b at Q5k>L$!f
z^lpfrZ*5214p>K0S=bjLu4^A82l!F&9NdGo8Ocut&#>S*-{Cl_J0{ALOy_)YHaCw>
z>5irIy1ChO*f+;~qMP?0NOL(I`5lE_7+PfXfJ`6k!OzH7UrM(Ut9~tr;snq9=4xq5
zE~P-aj6=MN_gR-R#QP8EvI{bwb#(dLnd#zzF56#)UBlVC&^C^VM*nN%V~s_rAty8z
zADA<ZRgJ|Hv2rtRVkN?B;^fbbL{<Du6VK--$qyQfFOuYr#=@U;%EWU>urG!sB}rps
zZ6lKOO(RHp*jUh5JQ^#XZ7kl2l?Xo{CqE%cPndXKnnXz)OQIxZC%<drd8nlS3w7!~
zMsD<oUB>k*Jfaf0+vgFBW91BwI2bDtULPmtdBlhDa<NDJ6hFrX6p|rC{x+E+f10c!
zPgRjOCR1dD5&6wzio7Qokzcg{g-3o~rTmmm`ArqMT17?}k-?A1b1CJAY(U|W|Ibs7
z?<Mhb@%g5lZz`F6bwzjV2YTsa#?y)7>1a7UQG66F5ndM~AH)AxS(_mC#xAn}L6MlI
z@)D659&uR$MSLlNA|i~4ui<~Je3Bx*ZUUklbPA7jLPeUWQbQP#W~<b`rAUuhfFeZN
zts-quDIttVZ>W at Bq(}!$KrR(elVv0i&5<xPM;P*uJTyn at dt>KWfV8|n{716<qtYJ5
ziPR8AYA9@^_7$Zz(*pFL$TA7}t$*iCHc(r8jZZwsn~N=t<&oxMT9ZnNn+>TL at R7oQ
zm!q)h$LEM2n#uRh5gX3>DGE1>&kfh(w{Y~jTFz=O78^esi`$DItz9t-+KX?K?!e90
z$#O?K@!Z*00-4c5?rA3uwAdMqo98=lYaR$X`cdP#WRV{&pGX$#qb0)gV&t4;u_{hZ
zP8Jn$Yi&SOwH<Y&P6I$+GnW|CJmTqCS>zEP#Y%+N#mN$n_&GuPlf{#XADVzDmebo*
zQge-OlEtKG`E#;(C0Zg}93v-q#70<Sn4GwLf+&*H+gQI>lf{H+xi(pBjFt#L9z$9}
zKWJPL_qGivM8A$c=y$~<#^;G*a<s&RVso at a7%81fq?A5L6#L_TF#(09q^!s+V_lMX
zBwB7u5<8<M!lf~?B1vqGlgpFDr*YdYKp~MR{9FG1yRGo_z2UdCLMJZ`%W&H12PT^4
zZd<j}-O2LI+v!~6^CaPqlK)B)Yf+_1q6k%*BvzwJlf-**`8J at C+WBqmv@lsrjF!d8
zVpFt4cwvkzO{SzKB_pX9Z9pMO{iY^YsG3}{YH|pp$(5=mH;I~Di3KP$CF)LBKW<cd
z#8c7os7LINmI!Z%ktaRkXq?>Z5!2&eCnzM+gO^|Yc6;%9l&oqe_C(8F?ZlTcvb>$B
zij~FfMQxlcY%d;8kRQT|B+6G2PLieV#gZg>sGayYN$zha4mX<<jmZBxM^0)lR-8+M
zrnRQXYg&__J*`RT_iZwOzu%TbOlwEtHnt<t&_q5$78!x4OWu~BMg^4<frY(|Ze&=V
zGM+Ft+D3^bpR<jFmRw~UU)i!;S~I15ONxzBzAwc|2~Mm=$)g5w3%eWbzBgu=lj4l$
zr7Vmy)<)s^vS at iS);Jg=kH#9yVr6Bl5sX1`E;2fHkZ+q}l$>dZ2jxmbEGOM6=-)%8
z++<p%ro7xbYKA673ZHWUkc;I4OFV$U6hp4E#1F=m at K>AiSxaTfg9$J==`Su at K5dHi
z#%&6*$q(Nk8q*WAl3|*|;gt7`*`oy6E%?E3d7nyzMNv5ZZ9~qp#k<yEok|<9BDAon
z5!VgD9i}{GQSS8>SlGyjX(PLc5qQREU}0CI?X#5k*R7exl0<Pp%CbabMy#BlC_YXA
z{$qj!><A$lvD5}1kog9qP$YG-fjXIOmRm0;ifK`DYoho%_LzwqJhX2GKWIX^As5+V
zk4Zo3N4QoO`nERC!c2W~yz!Z}1iQhD;^ph{VlQPhm~Oym`H$&vAiWwRcO_xkaf1-2
z;$(S}n3^cp=q}QZl393zamACda#0g&8AhTen3l+8O{@)xa!!gh1#5*AYX|1}Db^#&
zax=ooa(QEGx<@WZv37f8RTFDLBRM(6I?zb2ZESqoL_V7$K1|Vis76O^?!31=`Pe($
z<&$N2{pY32$X~kYDmfoFJ06frUN($}U#1cb>b@}5NNzO*2XhTM-w@%?0>(c|jn~0i
zZuME$UsT5U4Uq3K;`A5C5~r9Y{l!a-J~aFni)|@?E9x&Qnr*Uxy?M3-+m^Jc2C!qD
zOgt~>Owgjv6yDNV0{^tLoYr6baDlA4Sj at XnZtE`|=^^p-g^MLbe0wp4sUB{Ivba>)
zy>7_YlEg_vzLX>;nsQl^IAV@?Ckg5`J&+_O+eru)Q8$|(D}PKfeu(SvRg(BTz6Ib}
z3G&G#u`;10kS`PZ0NIq7i*Q{zBpUW5w+0IaNym+qlTERMN{bZXrY>)i#d?m<K-`@X
z*>03e!rAVYGflDECC$^P%EC(<w){nkrD**srB*t{sH^rSEYpoNq+6X$U$k0mSmmf)
z61LHh2s(0q{b`I>W{bfsb$O;5jh;5-F3Z?xLCl*L1$Aiz7UE<u7YuSvI-&eK8ZFUA
zg!t5uv!wB&SqP3pmYg7s8XGX~R3lV%g+4P#W{InSUng^|hYUHz5RX!9hmGaRG3HKf
zNqAO8iA4mXj+uG*xGx?%Rw$ODTq381S)%y+0X}W-G=J2FT$LqsZ at tZsN1}~oWTaO{
zQ}Byu1Rsi#kH&~4F$n4mL%!!;+^sTqL~V){b7K*vG`kWdTYxfqD#oZXR{+2=V`q#w
zP#0VAw$8$%-^(|o_{EePBrKrZEyXjod{K&HwtQNuJbp{10m-rV$w`Lzr at nErmaxo}
z-<#q~Q&#In#HADUvH2#dj}&StJ1fdfBl&Jfc)`5jWm~*J)j=%WK;y5<z*|Nu4Edav
z)m}da5B2?v<ZZ?@gT|X;t{-Y1c-G2D84Au@<r|h5CpTEeOXhtD>SDrkWv|ae1vo`V
zX~yri<V&_#X?v9l at du1ck?LAgC+WW3WM1>AB^FWpL)>NuO|(Jr6EUmiDE5auIc$lA
zbo;6$5&Ya5p%YkcUNhMebC at xq$a>P4Xp6O61g(FzFA?H9dFk?GaUjZCoGhlqLB at e3
z3E;;hEyMRBasME#uT#W{m@$<p!XJC-^rqtLIP0ON;%JimDMi2*1Ajh60^gcK;g3=X
z-`NyVp?lY(rXT(Ck?7HnG!lVm>)}S?DM~5dBl8=HH68 at 3Jrd70HqsHY{bmtNGft>2
zZH5Wl`^E&2xJzGcDyGF-3!8~`i4w at ZWVx=XIMGD@(v%X%QzQ-?i34BVbf`)^Z8T)Q
zW5{P?#1TtA5hH%G<cb*d0y!f_d at mOnMKR(-YNSv!VXg6~u{&D49o>xUxxI0AZ#=tI
zzHb=67_!!|R+{o9Q at l>~;B;4tdeM`H{JM$2oM%=OQI#M+ZX%vZGWRw?;oP^giTJcp
zAK+z;CBmDV(9<`X=rmJqL(vo)T{oFx1_|BH&7mPY?vGvnWr$PULE>)d`mG^OICnR9
z{n`*eoypx*UGc*MU!MtQxXiG4jaM1d;0Jsm{))p`+a-RAIz!usJ$ciRbEGkwn$Bl7
z1q;ZuyeQ>XDRxt^&YmnZo5Cro`tnq6sI68QJ at -pdV9G)%zP7qfm12*SKn_t<6n3j}
zqvuH}o-k#Z6c5{7m%?^P31kwDZ_I#?w1NR91`I2usF4!LEQjG0qbH77EimQFQcSVC
z!up(&637f@@O*0^H&2-~P?d3&#AibKC-&T!pS8z?hoTN+0q->BtQhf<CGqa+3|mf)
z5%b7|z7$QcGNDkb(dSg)&zUk{i76I+-3wr(l)QfcAKKX3D0JzwH%E!Xl=CT31boUG
zj<^rdB2yk~EEZdGP80EzEvGdR6Qal^T7yM*V=*iCtZ(q2tl%?=1M%?vq^AuahZ|9>
zDUFHeOZqV%sF6@;K55RBVwyzT$GvwP at RyBIrz{ks1+(#l1$Q|*4**rMs;*)4F at Aj=
zWjto?!5j~3{YRt463RK7LbM0;AzGuuwX at 1FUZ4_q&ye`coNB`k8zq^RPY*GUzHMPu
zA-7rL0Bo-%(B&p!a5E{qh1*Dw_hZGoSMfffc#EJQdb&kp3$lXt=%tFAX~>Ta<2gfq
zWf=P at p~p>$4@|zsJ()T at bZ856FT`VpJZOofhTLO`bq2{gX24Qd;vG)@4A}<UfJ}&O
zwp@}Rrpp0Bd at I|Xh!?A(YLM^OW8~ZMusyI-aK<6{dMuI?yAvf?DibLV6lyiwxay^7
z>I^SLi|?&;OtZ_PdIEtnPifre_U(wZ({45;LHuaT!g%qNyhw->vi<&e at mkb0G~<tB
z2tE~qJc*)23H<3q33kfwW5%UrO8nAjQER2Ij}}MdZ9w3k#Q%ewNbhTr*rTTPQ;gVR
z%2#8=mzMQVtk at ytC(&X-lsp_QzQHOrT1<_m at O#mOKNWM8(lFC0g~@fL;14N<V|Ar~
z;Ont3LgiAd0pi6jTF0D7kcdb{0bRdRx_+#5-5V_`qk00F!S?$%X&EfXFXE{jSJai`
zfsk?pd at 80A3QkFoz*i<nuyZ+<#!xjq6+`8?G6uTc24n%e0x at DQYuNN$7-+HFlpjd(
zxry_XD<n3v5Z}}JBRrU8Ni3CiTG;dnEWF0Z`HMW9NFCx>qF8CkZ%|H_T%TxsCgqGI
zu{3JL3yDI_)Mmx}8NrpY^0RocF<v5EnuwD7JW&=U84HtXTi`W1D9XJpu<%M_*bnH0
z-7F06KXem2qUDlq;?rpPayPLjMt<2%)Hav+g4Tw!<&^Wq59duV at pw&FV%^hK?&v0t
zc9nCwiK*Qv8pL99TZv6AniqMlMmk3f`LHGCnMKC^{8*IJbIj;y+WSXmw#AdM?vEH4
z1h!)#87(H6V5~IdyHR3-1 at v1>z7Zu#?FTSQM#&k`<nL6HbboD1Q!Km}oo|WNhCFVH
zS>{dZaZFo0ATx?Y!3y1As~mqtsq$A8Dt|?>9dt90t!myzUSbWCvkY-R?3Hlrl`6Zs
zIsAXse-VWi at Uxzt(%VePP%CAn{H8pKrX}U1STr_S7%TS2co7DJTA_mux+zzPJ;sQ2
zjm2B0+}2n;5`}d$rhDcz3=&bYs4;3i70B$kjwKiv;-5Dv042{fflX{IaRVu`fQ%vn
z(O(<i$b7x*I!8mv?XmH@&}=i`7VlZz6_+znPo at E~#%TSTC0=B^={!okwAQSQ7H|}y
z6R(vL;ghn$*dDEv?@po at -e%k|IZl?1ww_4C{mN`P<qGS^Y&rW1YxOX>;|lBeF!{k1
z*4p86;%Mu;;d1+E>zNU9(`f6f5pwTnYw1Wid$e_Aq?|w6Dj6l0j5cOn4l%D^AwRuB
z)Lwxgngv%Va<<VZGJlRbH5k(vxoR-B6t~)&2aDyc<djVDs8`|vTw-5kitk95{Eien
zd4YT+Q&e9hcMKMrddhb)MNLn6AXB{AOMWm|Ov{j;4;H&K<i7 at s;@<MLOz~B3`DCUj
z>m!$Cic@{$OPS);z9i>xU-`xmv9h1sFhoqhSiU$!R9-Bf9wJ`oFCQBs{?%VjA0jpm
zAkG;+S(_;i`Q(q8;;n)5*}-DvAh}?$s-g*8MV@&ypkZ-P8YK#80*1`lTvsVK;yzFQ
zWQqmE{k)O-H7~>4Qx_rD_^GD+#1aM8<vM12Eurz3hTIn=zM*P--=1J1OmeA at QM`r2
zjDGK!$Ibo8#;#~tm2AKw<GtNyXn_dd=AmR`Sv=gZ*1-h1E7 at 8C$4|1cAPG)d3#*O7
z<X{I>vMw?@Uq}P~pX9qH7W49$Y3()SJX1_FWvOAkMEUy{{lm1Ut`?zAi;Hl7pRBRP
z2Znr9(!6aET#vSVSgk5;I!;7vG^78!+!!T3!2lm69=ETBWAmjb`KHbkvo-4k%e=vm
zkK1A<rXIGKW>eV7HfXa>FjcQ%=_s*GyY>kw=1U3_2N#=%R>so}xziLs8gh#+Y$`PH
zBvDIxP%d@*Jz#@WMwVG}jWiBh@)c?QDCG$$CeqB$X|<4WQ8w;>G;aQ~nV4zInr7lV
z81rUg0k&G2iHGClht0%WiSq4cVoTE7QGn(*>j+j-Z;V!<#rdF^<xGf$2T;z66>Dty
zbBtKSGfcZv8rAK8&~9Ryxx<7h6FZ~iyD>_YHd>V)%P3LIAqp at tz$_BOY_xn518<C6
z8ZV~D%Gct>j#ycSaGYEpFWym0`~R+uc+2>~*d6!QCE{a`eB~0ct?`%U%1gw=v*k0F
zi0T$!8;@Tio=TH5FA)V7%7-oyGcL*n at 8&)ofKTo#5nj+=B7C5~{ArX}Hb8zoN_;aw
zemqKS at X7Z^iRlC7>!ZYhfpR^b4w5g75~l_c|AxVG5uRqsNAWaMK8&YB<cA~0sUh-*
zkz&J8`RYh9JxkV%6bG{8+atw-Z22X^*>dejv22)p4xGc}6W|;!=Zq9jj~EI~&<G at 2
zF7-F``DGN^WJt_PsdezEoOT0H463uGs5ayY8*U#8A2B;1Tx|VeqNI5e!W2hYg8#B#
zKlwH|bBj#5+!nuBnA(yaye7M4DrM<e!+NWUIBL+@)E_Om66<ig?<-9()NC-HX(GOe
zp^rc<h;I&PV}b;-JgEc14<%cVHxX|qUyKNAJ&^NgBZ~V9c_)5SL4RWle3V{KVCW-F
zjrb$ffIq at aJB~etgh%k(2aIzsoo~Pcx7fUVdbF5s$y%)P?BfLOifRpr<hFw_&|7Hb
zG+G`{5qGp)mx3h|ecp9zv at B>Ueu#bt+AmCy6)EB^tlnU0ljM;U at l`VBT*o}}V2apI
z8do-w+fu}$#+Ym#Xq=i4Ur7_3MXGH=GM-4G*pwa_Bj^jiXEmADZ>0QJg0V2V0E;@L
zqMk*}OPm+n9~%;De-hITcc4+}v*c!N3E2ggL{`-&-!udc!02YicJM6BW!6~YX}D at F
z at d`Oz#R2n5CB_lg3m)9>5-~NDpCw{;ET2dcHCC%Rm;&418owlphhpXABsv-Nexj&M
zka$p?Kw*`!-ziZm&HiXC<A#6Nk=(&QrHOB_Y)up8ru;Zf>^D=_r-|(rA#-i{en;`V
zo%&Wsu}Bi~vy`uNgy$gjz0Ts7C_=Ea_-JRbH#+s<&SFyxA;qz>rju9`oBBg1I!Oa$
zZM=M_qu3KK*LK1dUFvh4u)!WM at L+Xv_s=?tM?Lb(PT~bm>W7`Ec>#H^k$k(8__|T*
ztDVGqjR|?UiF^i1G)a9N;S at sNO_4J@io+?Xb2^E4o36A0?K)dN(Ft$V$=5sMkifM-
zCbyF7JBue;$rn0{?^+E8;y*_&>MV-Rm6JP(_s{(kkUd`cOGoi|>&p;+zHK(t+TBjB
z>?o?*$=B2Hes}77X{z+Hbba=FAH#nvRX}wtRlwXhR6y&gad4-mei19S%2b4(kCNZV
z!tFZ@;f1jjMtLAiwJ;J*4s?}$83g{Z`NTftl3UnEd}XBK9q5y$1hT`D-}Z#_GWFA*
zSTgqo@}88d`(VwSy0njYJE{qgh0$_pFR?m0bzv{DHilx&iIuZ^iRWTdclHu9;t2UT
zPHyQXeu_)o*GqgEe<6 at h66C~Q;$%YViJsy>BJn(vBtPmaUP(%Qx3Acn>;dwkN1o^{
z-teUE>my1VWdM1uv0U9tyxKT*ac{A>$yq>tZX#Fo7PC at PH})2VO-atQX7b$(QPNC)
zlp!`ZBRLPBC3p4_i_Vf;`iR-hy8?N)x!l at UtWG5fGtZXa_7=~aEkErornQ)506N-I
z9?lSxTFEbZiM_3eY0EkC`(9$-IkLK!*mN!>^Q^ba)C}>ZSI*54v)goev$uGsjobsZ
z+S1b>+sYL^MNvDsv8UM4F7<F<@nU<zr*@EU_7qQbNZr#@%s7vbL+8n-GKBxU)aNtA
zCuxN2>?mK(5MOjmUEEVtbRuL)XSp>)Z0ekfR}x<CLRp&HRleL;Jk>Sz`M%<zZiKwm
zO+M9EeAZ3Q?JHKEPdaZ*m-xWIo^)B=M|_d4<aC$c_YrS&mtXV|{_d&s`iaU52w!!f
zJl0q2xG;5IZ*k;8Le}??$1=owJyK`%7OO8J#D9^T(N7fhlsGC$&8LTMhVkUfecU)^
z;DZJPv$2oD#vBhrJao0VtcehRX*n?ti%LxX#3xbmL at XT8AHhmeL|#U<?0{#5#z;8H
zF~a>~icMx~gpZpPCO$Q)A<BPp4)kyB@%|UrKnqI at W1cZnX1qC6JQpWF9V%ug$UQ^F
zyd?SUP~$z1+&ENhZzd;Zi8aj^#GV)`YP-l4L&c2qiRs7lC6H&j%f&+ttYm;JyO at y2
z2FQI`qH=)TnI)F_<d!UP+$UFOiOmD$(ku}eC>Lgl@<DQTmUw8eoHtbL94zq-(?>HY
z?%qrp7$O!7X%1=57=-a at 5{>LX8*+vvwwf~Ebe_S7g0%|{u)`&4i!uvAszP4++=OkG
zvQ%-{lt)v=bGF=+Dk`Pio+{pnk|$HempE>aDxOauWKp7=pDLbeL}84ec=}PJCk)(t
z(?sq~6>FNxC3w(`!atowtaDQdp~NoKiJtR<B|nW5r!2WAP83H|_~U5#W}J8=?jnSV
zlXj#i5T8doHoKv-ZqhsscQx9T!S84b7~bb>QE7Caj8%;(=hz08cB^dhvn7G(Vo~#q
z*c?byi$JHW3JqhjajRU>R_rw7D{aInQ*LYvf4ao^az8vsZN>5^Ij^mFIVxjuTTHj#
zkSp8Z6s>%-t(er9!ap^Zhuav1De_nw5lE3AwGqpk5?;|%BEok~<uh%>r_E+tfR?oC
zjQ`(x+r8CBtZgmv5!5eQlc0rdD9mbVJ^S at UpQDO$^h92<f$^OUf06vf#<ZyW`!;Q7
zeP$ca!jmq=8yJ$q^GZ%1<t%0y0izu}Z^bdRB%Bl at Ubfm6#)yr!#E%hHNO?3`ti#a~
zJ+V?V6k20FO)ca{oHL6xzK%t3YMd;<AVwQgb^2DC#y;~wxpgp&dPSMy8(Z!lET+m{
z<wM2lD7j{+SOovxP*H*dIYY%Ov8jba#g;g^4vvBZxjd7O<x~w8Wr;lx4aSz*5o5^^
zaj21;KSX at iSQZQswT)Zm4-v<j$m5yfk*3m*1${GlBvZV2mOPj#cAk~$htTG-C`){P
zwyYc?X10)f(Ir~++&)B{Y#}!d5ihlrWkZZ_aJ*-zIDD==IYd0<J?AK%dS%s6v7n9I
zHB@}rE*BpoF6flAA3W#FicF*60=X?yY`yU2X<6cpo)XG^&{IO at w>=5Z??oAy-;1)h
zrWfh9s~72Tw3m{ZK|IHLOGtaGpPZIyln$Wqn*-V*mC3$#C7EKoPrf^tx;pYZcOZpd
z8kmN(rVgUGuMV0(1>w{`&K6u(SLo;ysROW$n<tAcF_+p2mK}wb_{?mtJ2WrPV at Jtx
zm`h at Nn7UJQ@PQ72lk0;P;$z#~+(N9A=8hI(pPX(y+d>4Q<f;}pQ24UM&D=!!c?<DF
zVnIA^wx3N;Fo6OzxkYQ at g}`gHz_ZW`PoXuM_fC;w8?~4Z?8XQZ%h~NznrC72{8Jkz
zkfOe|#Q|bDU`qrQ3rjf-i<)5n at 8ADQ;D06XzY_Rg3H+}F{(~jp`A7?^+^uO9Q?W<i
zdzgBerZe?1&0$)`w47<lULC(|pQhzZE0~J?ET5^DX*yFM)3OgaKGO=Ol}xLciUTZ<
zsh4R5Q~eY^rXTg2X}+IXF4Kyi91czMm at kK)drxS*(#1E8`Er>ro%yO<eCwDm&q<G|
za408V!F>6QS31uf%6vzduaNO7=ea|fPaM<vEpc$x&*R)PUvuUwW8A}hUKgK_`SMeF
z7ECXu<MKH7EH97w3K`F3KCg>!nxh}%dCZsY;#=qF$GC_2d at jBU<|}91+W_AY=Br at 7
z^al9Eab13u%;#gi99O!{nXiiR9Olb)@uf3g&i%UF@|gOVa`A~V%vW|u^X1SF2H^7G
zTvq6n$9xrEYP{r#rsW62`KB>n<!Ahy4jSOfbMcihpO at 3Eq913(<#F+?W4^r4_48cj
zE2DD?Ay)<S`B=aF!}@uSi|+{Y6 at J0#aXzXJgv%2@>G}}Nm(KYpaq;CaU;1+RbZ}Ly
z)YSWorjCkZnXd{*E$J#;!TdPb6?)|}pXYgvmz8On at 8X-!d?n21Wj?QquZ;QfmuWe<
zt28ZNtf`ascIL~WA0VKM^~-hfRWe^C^X1Vg8M<72Cz-FD%f-j#QihirLa&UU*=`KS
z&Izt^ruj at A-a_W9{0dtEbRE{zdpF-}RFpDb;a-iGFfBiz at 6-2bTE0I#9!D4Jv3ge*
zllO4+SX~LaeO$JH at 4Xtn`7!6Yz8~w{v-m&rz0<nx;d`eP9(VXz%>8_CCun*3&U211
z#ku$C=LHVGz7?D1hU at o;!_NxLckbyW>X7Rs9FufaTo|Qj9 at CQU`d)$f=RK+Us-|na
zWQL~cOdY-q=F1<Tzs^_Eh0EWk?{h|Kn#;6;Y2F~lduZy&%VBwCqc!fx^W38E9eLhA
z>-$2cPW-Ws-VcPw_pa6Vp1U-yz>zk(s+c<Q9Xf2DF5kzvot(|>A%X8(KdztO!R6eC
z at yD32%|iXWJ<~L%otbuH+MQ_+roEW{mF2d?d11P4<@Q<1^?n=Q|HAio^Zj3(cI;&2
zfAoJP at V^rHUkUs_QUZA|XnW{nr-bj*dHv$x<qhCfjE`~gdtTIX-MEi&xBNWDOI&ga
z8^FsNz$+TSs~C5uo4d-Df4)!W^@o%H$_8-nYR;#N-`4=1%eY&93F9R$Ipq!Dl?~ux
zjn>C4$IG}o-NKi`^Y7%h<mGU at lJB#59pLc!)@eRBUeW+A)<@>gZ2&KC0QYW)EGNGK
z+^wIZe?7V}Jl{UP_wl^k;V)?b$AJ>X;^xn7055L<_r4NYPJRP;Wdpcd4 at ZAD^=;Pa
z<?}kg{T%QAhC#V}KgPvh;^Hgk`+9O;)AGi;;^#B&Bv$FV_iYW=qr`PDwuL{>b={Y{
z?!B*v^XI$nD_!@#H^TW#T=(M5 at aMU%`*PR4cY8R0y>fC2!bS64 at k;pq2(L#R_DUC@
z at 2&9k96sL;jnC)#zJupBfLAquJMrAqhnGo1FLyf5y2Rme)+NsU>8P_#Ol+n(o%@!q
z`wp)A9(>QsM(j)L_&61>F3(i0cPiiS$9XBbTJU`()3cebJEWhh7m<NEx&Em(a2K(Z
z>E*h>&Z4?1nriB-77Ka(8^_NdK1&DaTeEaE*F<nMz7vAQ3NKE0(dDd at b2uX@%&Avt
zLa<nof4hF*;N|K1-qE|fx4zd>>(W1m<vD!S0i8dTyMplbQkCBddcg!&fbThbqKfaY
z#j!rRe&PG?or=@&fA0S;P7cCFrswN>AJZJBxlHqz<})p1TEeu9X*tshrj<;qn2Lvl
zx;#w1Ow*bAnC39eWtzt{pJ^e}5~gKL%b8X%tz=roR7~LXnR=O~GxageVVcV{k7+*B
zLZ&55%b1oktzcTow2G;i$muinGEHadW17P>muVi;e5Qp=OPH21EoWN6w32BRQ!$Ct
zXX<5|&eX>=hiNX;Jf`_f3z?QMEn`~Fw1R0R(<-K7GN;ef%QT&-k7*9mT&8(U^O+Vh
zEn!;5w47-L(@LgQOvMyVpQ)E=I#VCh9HzNU^O)u{Eo554w2Wyv(+Z}QOsklRshmDj
zFVl3UKBhTLbD8Eb&1YK3w1jCH({iR2Oe>jIF%{D|eWqTf=}di0bC~8b&10I+w2)~D
z(=w*zOe>gHGOc1N9 at gpq|NTEkI3q`RN{`KrQNRMGPcnU)>9b6iF at 2HgDyHk0?qT{G
z(;ZCrG5w6`4@{3UJ;Ah^X at IF!r1gqs8qYMDX%nVrF>S&09HwoUc3|3xX*Z at 9Fm?R9
zJ^4P1=~YZ`X8LEQ4=|m~w2<i{rmLB5V)_QtT}<~doyq>g1APA}(=V7FX8Ik|ADNzD
zTFum8Inhi#OcR(kW7?i+ccz1xUdHrBrcGIHJEk`=?)X1{&-ad>w3zGbC#HYo=ZPHu
zd-l^h{?$~*e`J2gzq*|7|HSdHWk0Xuhn+HCw}(6V`CUwxa6HE!>-cBy<>wDGoy)Y8
z>1w8%nL7UE6xR3lIXXRO|Ke=+Lp%QHogA+}^IgFH<hL1j{K}JXVv#P#&+YiPhcdt8
z=YE&twc_-heGxC;JO1%$oZfrPf6{r*)bWq+;pbm5J<c?S{oP4Sm2&u(HF$6zZ`zeN
z-}~o#?)7%Ru-k>*(!2J&SKVIl-~~OprT6I8y(2$x;zXhbKwJC}a6hA2mVqY)mVV-8
zh9;nq_|FAy3XdrNSTklyO?^m!aPf$~FVF;^0nm5><I5PQ?M32u&Ph14z0;*D_-!92
z-4>>n({pZky0<g_8skp7>lt^>WjN{jfk(=349bP{yrW3Vk7oUya;WlB$>MhaxEwN>
z|8C~LhxzF at 0ZGnb7k-3su}3qWP9NG{B01MRs`=geq+cAa&+W{AGxIz8Y-aoe7fzq2
zAo<QY6-OU>g)vh3+`{}z9 at F{^;rs^6=h|?6mN5U<%zriWTTwb)-#iWUVEjhL?{VRH
zomA;r%D5xvY!nFT?{$@DL;Byu`~jBZ);~QzT>r()pE+MEs1{8K+At at S?rO#z{cmRc
zunR9|yv5^Mj-!8T6gbIo&ILK;e>(z^%HJvH{3YRf-pz9U%JPSCdA`f|M#k|;B6W4g
zG=$QPU7+tB{bw<LG2 at P$Zy2A#_(+yRKeRw{cDv-1Fz$2J%jxnZ?nKAL<@B#8Ec{7+
z)Iy!0lkP2yU(UFbukDPNxcEC at olSC%x^R38Sm7DP;qogPpX9;^Bx!!<+!l&gT}y#S
zs;@HUFYJYmkL%0Eiio!uuVDGxG%OA??wkj6<X1N!KPs8^$<gxZd+K!UWt at J$n=Yq*
zYZ)(h)k_9Uc_jUZ0H<=xxkk(Hti_3cGG4)QDj0u{@qFg*54%IxJ@`!zl2d+zmcvA(
zp*#pr at 2VMVSpP;%H154g^V2IubXh4H-_H4>-!-P|6yv@>Xnwq&sjhi&#E^XN0~+7V
z{O7^1M0o$FG~WPC#3tYdeyt%p4h<fco;AQf!u$_1KeDN=+_SWtSuT7F<4?Nq=5P>^
z{0x`;TNwAb at E3uTo-eYT_MGl#%- at 6gxtK+xR4qTvC1)t(>5OwRh`$3T`FmV?E at Pa2
zubZwenuvXjd+`Ahx}vzgPM)phcuEv3uGB=F14kRl{{!R88ULE`#)~xI*wsd at H2(y~
zopc8<o`1Q{sngCA;pkH3!~B=B{9cUbEYW&yx=ugX%XlsGzsmggoy+>87toc1d%AvP
ze9P1NeyJwnZZGF+u?7w>{x8OTOElorSBut~|5g|N0OQkL_!h=jxbR+Ww4A*z{6WT@
zbE8scTdV_ah{mF9i*Cu>jl at Cb|Apn8$NINu8`%zY1y1GceMU1n?f(YGopY*=y~2x6
z5$(wf%%9HZo6a+|yw2 at dKA&IW>7$s-c<w#6V%*Pq?ql3{ug38$8Fh_Dfs>x%ZyLXw
z`4=;u&-gzXPwk-jJs)cRzAUGTaWPKgvl)L71x4};|E}@HEaxcWzWX)4!PE~fNYnhe
zA8C9L^FPLTnF~L~xcG<Wf13IGb<}c74r=@@*2l4{Wz64?(|s2FWM at jazx!CuH;m`I
z>_d7d&KK7&h6#23mGKhBd6*ZUG2Z7{&F73SZ81Pl`TW_1k7fL6#+~*vhw)X6qngyU
zhVlK3JMHr`#>G<2*Ngc(!%(Pte^Qr^Q}3TKp27S-F at G=kwTZu5sRkT<mNDL+aVKAA
zb<_NRb at BIQd;;T+{{LjWl=1U9-Deoz&-e|D8(<)PDsGYr8LP7)x-;%ssex`>?@u%C
z!^?_vNyc;2wVa&Q8plWZ)O9(&9YpebKBw=U@*H-7#w*uresoWD<pU?XF^(p#xb$d<
z<CDz)JC?JS)4l9MEvL!zid{J6 at D1b6`Sn=+SX_XDjWpjF3Y_$G&gT`d{1V19SpK~%
zhklli_|y4Z-^Gj<UPSsg7ara(bLw|DaN>8)0rIdQJUumk-nUxAG?p_8IPp8 at 2QO!Q
zMgzFhAJcp2f_LUQZ!!OitUou$;QXhsm*(%m{Wk>-o6^0C2h2)N*O?bp^w#|Dc~Q?7
zG@~;wGBdQCs{WdP0+;6#j4yvt^LJqR^t0QPZoW_R7wcvrK45$|^CLUzx~Grk_YTqg
zFbnGXmhqSs`ksmC*jMw@?;g|Tl=IDuS2FI@*J8%2T=-YO$-bq>>z1iosSxM%)AB``
zmOoMxv4-)HjQ@$t;W*>Ydlim8&bWCl at 5kz1DMV*9FltxMxl&BS)HPP&jfJz%i|niG
z8OEJ`-T{ms1|F&X{{)=M|K*jM(b1=Se~o|2_;8kUFYrim9%lZ+ExKN2aDKmI-21A=
z`B=PY0mUfYPOG%w^I85SjC;0f{@+{r!34&yVSboRbp_}D_^KRT&isEP^Ox_?IKJbl
zu411~cM8jK#_<UQHJ-6X^Eu^N%J^Sh_`8fRXWY at Jn(+ at Ack-2nftd0evsTM@_(w5*
z5#x>>8^`#yj6a~GiCV_rXZ(7`XAIWzo%eJcySD*&r25*<{AEAu@=0Pj at tImqIpc|p
zU&?p|<7YEIm+>mb8#BI-anA`Y{})3)=r}~n_xz%9r+n^Y+{d^h$FXm at j63$tS;v+8
zwH&t{yWl0AUM1_ZlI7#gVTD|0>j%+8wLXns*7q2`)pav)8jrkuuEERr9n9aK`JLB0
zHZktu38Pc~zW|R^{)t&S-JA<`!;Izf8O(Ug^*TYPJv_+xAjX|}h*LhImzLv{k7KuU
z`)J&4x9?{;j@^En<yURc>7K{=?V7FiY`#$ge_;F{j63gvIr%*ZJW_rSGyj7u=Sr3{
zewdc;yhrB9X$FH6Nlpjg)Q>7g>wFz!IollkN{y30l&;nzH2+>s7sHUcCNf at ryXJSw
z?JO8 at vhzN+^Nzjk51i6X*relM%5tVNem&z(zP at 7Ic`wef{{u&9IV+jp(FdOdi<sY4
z%%9HZ>UWqr;p9uSoNri;Gk*Praq(B3uRW}11>>ifzboTCkP*sPCG+p+b~u;u^Ip-6
zj-DqNFTY32 at 2H6woulR4$o&0S&P$9JZ`N{h7>~J3^H<E#0?w8C`K^o}-J<WiF#ns3
zH-A;*?YJCLF4uDUZPoaBnuxzJ?!1raw5zv)M`~A}F#jzq$LV*!yF$w^|4<8d<QQ3z
z<&-i1be7YB_3<-a#<)}dzR_%F_&k)C`G*5n?c9~_gTN!{U%>piTXlK1=5llFL*X`!
zJMBCU4VC0qy{YlPG5;yX^WM_9`u%z6<k;K%w>9pzx1VsnDp~(yS8=($tNH)P^%XNl
z<LUS=J6(=H=l*LnzImG#;Pj&(uGM&x*EL?udJeiy<Ia1fPQ6S79;tjDVSXWFl%RjI
zJ{64rf9$;pe56IuKmIHr2#5rb8zn1<Ah^y<Zp7E at W@p*3SKMTmL*>b2GRY1*$qX}-
z>;`-x3MjYnLPW)^DB^_y<q$>V!HpUf6i_jsASyz<5K(;p-|DJ<j-F at EWP$hn|K<am
z-EVrTyQ{0KtE;Q4zj8a%Kazh~`@DnguKGVQ<#xgUOYqqz{rG8uPa60~ffJv9F7)Z$
zYx+DW_|A9ozyF(mSZ{nMm)G}Xb-%`d2leY*DL;J>_bV!Nz9)Fy!HnzqYn{sUy9CED
zsn5HL;QuUwkJ!O<{w(;E(2ofHa4(lP at za5mzU?*a>MI1_WZ>TsI_C=CH2uc~pE#8J
zOK(ZjXG4tZy-~`4fMM${!Dkk8d3pnyK6~|X`Qz{6e;*{{b*kV~4P2hyZl=$jg2(RW
zf4`r9SS at kkPcxUNH<#%X6MRm}e}iFbLh$ipx%}i|{EOQJ|KdIT?+q{GpZ_Dc^<)0G
zwpU-%&-~07eCrT=tAP&yC;2>9=)9WAS??2E-_zD|cs=kSIn;W_8sheAJ#(+nIZ5ct
zGGHB+;ClD_30JsM>b*(uQw4vs;7<#Fg at L~T1_`xa-yhfQya;$uJ3k`j=LWf*=Lr4V
z1+ROE0Zr$bB6JoFa=pD$UdUKG3O- at r`w4E|Z$Ab&$$#eMyD1VPZdR+p_qTNXsHSfV
z9i0b2<C|6a{VW}is_|m&zfhHbmDPH!?y3GpFyAhhdS{Q_NfkU=ihoP+&`~UyGlK86
ziTN{kKI2V-rv#tvW&Tt8ANu at J@XX4c)xX~%%{n~EbTa2~dF_WkMevZ^Uxm4)K3^7m
z`tlvszuzeH^k<sR6jykfF#4L)n10v8T<;2 at v*TvQC$5+FOZo2#KJ^R6j~Bc?#pUZy
z<#y6r-SjzD at UEwsZ#Mt1_8H>xlgpUS3=hAR5WH)rUDWqCyk7mVrUXZ_N(Jo6U$g!p
z_{>)r_z)MjW`>#m?031m*8h8?slYx~uMvM;51i&vU6R{>zR+pc_}R=)?GL;{@aZ3O
zy--K$)0z=F$1=WH at OKJ6`vfyU<D-I)zlZU=g>N4eeCDl;zfbt~BTauT_v=h4f9mO6
zZ`WDeetJimK7SH?Zk%x~KlNEIZwdcD!o{sK1fN*P^!2`Jw;Y!bN&7!7<(CScc_+&c
zC2^(C*@D-LJ*N5p4Z$Zx-n72`xyC;u{S`WI&2zo&!p~c|S=Mo~zPG=e`?b>^T<-^@
z{48a~#%D3Z))xftMP_~aoFe#tH2nydzd`WM5#i6xTp_)!MxXBsJ{RV8E*5;zD3>1>
zfB3_KuNQn486D~KW%Vas2ok*gJ=~t%1wV8P)2W}~_AD2COz^3rxjjGSUt3oS-u`!K
zkCb1$RrvNDF8=}HXRqLMNJmDWlZ2n=2|o20(>Ywqe^u~|(EqgH>&B$NhTLA%$#~Zq
zCan3nS;~hfVI4l&Z}4@&ryk*YVHT>-<GOr^@g1bzUCv<ovk$Pmq5JA{wBYrPTwdJw
z)@H%S-^=|Skn$hb<z-xM68x8%ew68GyZuXNO20n9_`Xv9KEdk_=YA>mg5SO2U0mMU
z#O*}dK=nxoUf0j~liV!pel(2q&-f;m=ktaBGg5x;3NHA(@L}zLbNSFuxZb#we^T(t
z7RHYiIb430(3kZBVyr$F2%dSK%Of$o`aCN5w9J=77`Apeo9VRwoXdYe at J_+!KEUn7
zdl%}H5`6aG{BOO_+JBts%w5KEa at cG5_qN~@uV4bYJvR&9wUQgSRNDDl!N-r`_FOIe
z3B8-?PlTENVv9dR-Hg}Y#5n(nI7KNxCw4o(vSC?C!6#*1=#laIh~U;6gwKnZ{x1dZ
zeURJ#I^qA0?-9P?r4;)74;QyKX#8K?q0j8ezxbu#6BLMr&%1^G!RIiY>7OvJ(`+0k
z_~iXe|C3C{I$7}XbGhLlt3K!H@~3jW^ztKpt`)pj6wLJuTdU6%e%{3OHZnQu9Kn0v
z&A_jv{B^(=SqI`G%dUd(k6WaCmz-a`O6c6Pg6a3}$RqNUeCy;M#;3l)_?rYj_&mmE
z1?OH{R=ePnGB0%d9~Qhf!}ANzF{@ALy-cT0^yFbe|DA$QJiC)ZB<+cHsV at Ivu2G+t
zHNB7NSWoY)%3r}>vu+i9_6P>{5<WjBc;+`;{sLJ51~BoJJ^w52?{B0**9+cz71!G&
zbWXoO+J6hv|JeTAfmdEAbnfHwUzdJ;N$_5=KeZnCt>Clo;sJSul)s{b>CDV>J5Q8)
z_q&Mkb_yWG=X=uM)q+p`m;v3+S;6a9F at 0U{l8c$nR1ed+n15J(f`>lFbnX=TpA*~?
zJ7lr6b6VpK+}~GAJ9ocC+IckN#|r*7!RsDkKL1_t^8}wj;$-?9E%dJwd~$E56B7J~
zn*Q6l;o2{^+ofEur84T%6I}d-Zo%hdJvwX$#?KUdwv{{jXDNTH;B~)eT=VS_!9$<r
z at 7vOzL*LK!&WV2G)>_s^!N=(dDtyitetuN&31Pg}8($H;zLCq{AoQOTJoG5{w?W!@
zSwGi1WApr)kn;8T3(0flWajhbV&@ME9@@zCL%Z`AzApI8Elht}=%fx~I=v}w_>Ceb
zk4X86Uoe2zFV$yPEKF2y*WFD2Rf1;)pLrXXuM_-U!87+WzL|&LdP?xnC5-pJf$3*I
z$n@(dX*WK4Tz2~q<Fm%RyGHP7v3p-3^;#e1 at -re=i<!LjF2QGo|5~2!5ZvlxKAbB2
zT=@~EW7>iD0AFMs<lKW4^423#epcjMkNb0ihmen&KHubSTho^@{mIo_?}OZJ>kA)c
zy!TMX&*EXW>Mv)!YhRX!%~C!scxDX))BJ1eJA%*L$`#%ua`mX-?P70#Rywfz$C&=C
z<O|aHae|NU!i1-#d at u0V?oem-{*>GKM#29{IOJsZt2`k42!6~JjJN-Z+xa=+!>z#g
z2A!@qFrARJGxTxVYaD>*-FUsL6FO%Ar+Ur(!cByuUh5{VSL>OHPk_FB*Zbqsz_;Ny
zKe~ncCDmHLFH(LH29)TB<Um8j#Cn(DvnTTS>T{X>uaxrFaC;7v%0KzL;P!lu%A;SI
zhnWxGl=4S>is|UQUQmzflM_7D%`MmbxeoZY9pL{o;-mg3<tLuu at AD{F)+;B2+jBH<
z>hI(kOn)(d&AJ&l@$Fv*-(J6s+dm=lu%DE_T5xk8 at i_3HaXIMIT<?VF=kpdZp;5t+
z>s$evpSxVe^_uI*;e at 08I?tKrTNe1<z{iE~$3+f*DCN5zV)`=etd*Z(IyzsX=5rSK
zUUaUv6H9_jJL^2)#Q#kO|8EsKQ<7&+xBqRJXw;tB*Kobh3*XKMuK52D%g;|<!M}Jy
z at X*zMxjOS|F5mk%#=o&Amw!-jok#MOLjT{oyu at oI1V8w5H1GDdbY2wMMp$nFPVKQC
z@$>%<!F7JXjY8*j*RY&iEO|ZnTexlmoaXy%H#7ddQvR>Nsa~DGV};;v`8 at Ht@Dm44
ze5;p$N6oiS0H=0ljCuOc2CjGR?41-buu*;X{Q}pk^ILQZ-UpoM=sb;DkBtMT_Rkr1
z-IsKEW4^!ji%e$%uL9HOzl8pcf at dTjp_YeLU!r~$em(}A+N1MS>T&#*;Nz0NPs{DG
zUuORQ)0n3p1+K>NYyS4U@>=1)<ij{!nsAQ753qXW-0DcduLe$ZrXKXqmqWh-9Q-lY
zmz9L0{InrI4*@5BX5P=^qWQ4X6qldf#_fE$)O!|iS{EiC-&G;HJ)f5Hy at q}`<~pX+
zwfJSK{05=30XWe)U;0%q`1^GEKXAV;68t{kdtqKri(fq?_>R{zeVunxmtPB<`W2GA
zdac|I>+^(z54~qG{o7<>{8Q-Yyp~#DMZe1Qr#{66Wm;QX2nYQc(YLRa_B;ce=8?|t
zvQqG6U*rDje3w{R)#p;+q|cu><m4GC-~Ky4pZB_f+fy&&vYXJk82H}uckhq8i{Q at +
zozN$FT=v<Kztwvq)1Uh*<BteF4V>C}jO39KwpshZ(L{1p_hy!#oB4<JRl>m^)876M
za3w#I2TAkcO*b>0Ny%@i=lipQXN-A$?$?9+dmr#RWbZgq)&<RrUjV0Z(fO&4mS604
zOE8@%;b{NFEj*+5kq)0Oc(3?5F-+?73E*lzik!bq<n1p~-t>>1^9^oKM)Fo^J^xwY
zM8`7pNj(e_C2xjZ{RzTRzUvuo2alR%eH%FOdHe~#{Ooos_iO6YJW#8p{Sm_D at 7^D4
zffN17ZGJs)XOZ%IeGB#OaDb)rQaa-coaoGozS44gjo=evucGJb^9#XeWZo?n{IqWe
zxAOwvM87x995_HKxEDC-jqmQtfR@``rWvm{@K)g4U{@R<=c>B=#lThj|IQ8BgMU~z
z0w+1C`vUV*hR1psIMI1l><~>S@*SqrzL6)^C*>Dc6An6=pD~@c2>s)}EBJd^179h4
zAK~b)&UdWG{e0jg=Q^L+F;f0!Dc}2hE;%dn`hf4Toaj7mdc0Nur}kL)aeH1TbZ!G4
zBqs-cpXpp9`n*fZZvswq>ZJXz75qcMNuT`G(0dP2d6G9no}UL!db{pDJ17cYlZAHU
zZCvl1u^ycPJgA-D2d>8PVP?Eu at 7CYWxXz=j*O5;OK7JsVf0?xZ`@qTm92Y%PC*$}K
zaK(RF$5%-C!|!1FnKPNf8Y%xIE{4>rY(siR at E6{V^2DDOL*GsVCwZHeeeP?7{-eOD
zUY#GVUhtjo<a);qd+coBLHxN=%Fk?LKI>K;cvo=wCBT&&9>g75EcKoSd at rg&?#=Hc
z_?VP8_fxk6r}pc-bW5cCvzq=Nnf{RAN8QbQnEh`SWPOf#9&n<g^8p?z<*xxw?W`MT
z{y!)9uJ=%RNc~g0Dn!fei3-O${xzO=x?k at CPW-n-e{K^xS5kTCJ)NHmCDi9Tz^UGL
zga60f%lPC+xIORV?pe134;q(00;hdVM)Zm1=Yc;6E`LlBoZ|av9%aPwd8V}U9Vk!j
zoSyWL`-6h(Jk}efeA^G1&iFEJcsH}jIv+UkU+0f&l=9QSNe}3J$bEwE{Ufe-%2?k&
ztMR{bPtOznESh1x{T)+p1E=;|c#w)ddVH?{PUAZ*dAp93dcOsn#?d_A-1Enb&t1s%
zo-E}lo at N{Rb%&v^J|N{oS9AFmDL+Lx+B0z-H~bjk&mKSFcIv$87fJb(H7<H)55dm^
z9wZN+22TCb`5w`8^|?dnOc?s=Ny15Qh`stsDZlBbjO%>WZx#Fo;6e31N#)V6E at S_D
z_I=E^F7eZTNa*~HaFp+*1Pl0lgnw8|?`Jx5#<<@HT+J_;*S{7z&#LnB56_Q%eiq!$
zBY;yo>nVW)KKh*ZXM*>BlX2b7wLj<bb=w%nG*O?s1n-sm*GCJUe?a<s5sy36ulig@
zxcuGw<MY62yy_lfJ)`CD9^h(T{F>=#ztag12Gcnmxat?4u%gdV{KNVsaMC~5$bF at D
z^;`V$P%xb?;6z8iZ*Yl}|D at oVzp>nEzsJ9T)4bOCH;<R{D}KRrW<JM!J5cbS01x8B
z<5IrfSbw+tlIcu}WAy}?@1Fx6MCUt%L!Ree%@gaxQvTOMXZkM;=yCtxub95hqyIW-
z=i47<IuqwIBlZ67y}%WJ{=o$oOZjQRCk(&AGni0H&M`mevyOjQYazfyXHx8Wy`J6;
zJg8q!N%<*by%?NjI=x~)>-qjm;3QXFhM)GZN4R`O%IkVR0i5iX>6bAgYRS5j%7dT!
zeE`;?meu~K at LA3!wcbb&j(*Ktz~jENOqg4NtNt2(fVID2T)zvV>E{H`%rLTQ5i{-w
zz)9aOG3=jXe#>-vg+E$PZWDZB8 at EUI>)^*&Zgn2d4kmB)0Vn!L8T7vaT+K(r?mhN#
z#^>&5IcX9)KNZ|Of870d+|JowbBFZ2_yq8vai5a%=Kgo=iQw{A0^bI^v0mS-<Yrk1
z|30{U18^FbUPBJAEmHmgDPMOskITQMzfFH&e(F4^+P*y-cu>FYlkz&xalO!aR+Wc6
z at ZZcI9iP+mN9J?8;l~c`O7x+x-o at q56gpo+dD>^q8UEhgo(yi!tAP_AX2rjRWkr3C
zSLI<BeURy2wlm|CQhut1<x2Z?{|%h<t$xqp0HO1mKaqWMuw~|HI~q92l^KU{H{obc
zz4*QLyngFb%x9fHc%{()$BxX0Uh!9t34RgE6P-DE$7DCbrxl$8Ed6efZs+4t-r9jX
z`Y!43mZyb|_+b_coi7uP_Um^fQi9(r<@I|!y8X`rC;e>3GrW3^=iQ89NA&}z_M7X`
zbyB|Bn5X}i^5eoc-QUqa6W<Q7^m|3RzgGY!`s0Q^+~+UcFEbA3t-y)SvxfiVBEj|h
zESi4zUxVfCQ$_HbfKz*{{ds;pk8!2XZ-J}!8-Bkfe`9&5|0-*?dR5x8)+_t~OXpeE
z?YU6!jIl2K7&wiie$Qhcq4Q_L(Vi17W1v~^egDpQNDlBX<>_H<BOG+5414m`&jj;f
z066K}=ZtaxNs;mv*4-d|axif6=gf-zUoY)k1ze5qWeglH_>kb%xy<M11pkpPZ|LWD
zKFf6UJ4I`y{I`Kq`|mZ{f5<<%e4TNwbdBH>;=g)@(0NF3{r=KM!CTQVqCX({oLSo-
ze+cj(KJ5B0uGjRBT`o8_i;A+I7yCeglUz+0^6*aJ#5dF5GEO*+ud&`8_<V4C`hXK1
z{f-vYwfdZ^%0q8l&h0su#n*aR%7;F{<MMOq at Mr(Se0Y;F-=78^#D_iqhwHU&VLE3>
zy$=zN_Um_aw7z;CIPpQh6Mz}0KK0fjrLXk6Ng6)|_+r#tFXN)uyU$R0^mk at GPh1^e
zahJk{sOQJyz==Pz*Ks?y$?tAlMD#Ih4S)Cpz?D2p9OkVu?}m3+q~zoR<6Q49;6z8i
zN2c|_K07krCH{?ZsdqKuSf}cZ^V31#RPXe`ydc~m<!=Ta#Q&d5`OqtQ0QG*MVJD_D
zXY3Qd2Rx9Dl&?4J-nB1dI{N*xOQby?Bb?;Zi0{1v_~ISle~^2=2TA$Iq`ZFb>LY>=
z?#%ROjQRU7;KZLgv9CmIt^IciZvQgi#J7;xSGxQ+ReA99>pXz3lwZ8+<tUH#*BNp3
zZNO<9XC-gGmcw(TycsWjjVcen**BQ*O6k|%s65&;w~fa|w`Uj^lL>F{;r3i1a<%Vn
zR4>j)jP<1rc+hzD7QxQ|PV_B9ukOD4BBi&#XZURzfKz{GL_T$YHvlI(6W`+Ye at Oau
zzm(VS9_aGB;vF(7A2Rl#9}#>G>kNHf$v>={b$NM*P0Q6Tdj$8lgK&&jy~LfKBy`>_
z_^iYg=LP=~aO#(S2T#w(=YUf?XRcvApyO|Ec_qrjp455sb-x}4zL(JS{@8QR;C8kG
zC;F2u{_*{l;B|{w5^fV>|1Lu3kUG{gcNyzl4mj~azYBJt(78h6ALfn7hXubGILWyg
zC%H2MM^!tY=60SZa(F4>C_g9uke>^kJ@%%0_p)@peu1rhfK&PQ2=ns>`NgTgNe}3E
z3F-xZ50wXhrhnkqSF=<e<E7u5)Z?`i4*r7Ve=%^PGiS)#*96z^`f2~(4zFVRvm)oZ
zJ;w^J-$m8+o~m%nYkB`duRGTO4{FapfKz+wjd}O(eR;ex66gPU;lq~*NBOB=GO$Sa
z|D3|5kmtw2`%(Mh|B-h{w4NCRuI7crxlPG;J_?-Lqu-;{cFx}gpK0a_KQ85a_UH0-
zJ&Z3F{39Bd^94PBZvjr at H7@VAXuj=yfbe08$5->e8#uLJztf`I|0yXyWsGCwK+u6)
znfIGk0T1H;slbW8CGWjx`d`p=jQcy^D?;ZP;M+i_(XfBsivFwdJ(&5U{aTL+ZW;c`
zD^ZU2#V<F`G5-Rb=uC=Tx~K3td<f&2ZOk`qH+~6tP=9Zg@}U#Cd`LDDf6;Uv<#uYl
z`W6IyQoZAb-|r5>!RIOQw=_w6E(QZhuJk*J*9cDgUZSJlTh;Wx2wchY4A=XPUHA)&
z4(0N74>GR%bp~*fpI*Zr{*IKNG5mWQ>xI4?H0|?prhgT1+K<#5_i%pzoZ4y0x}){^
zPK&v}`W?mBNxu#UPVLd}wQ6}Dmh#gQpeoP2TD!a!<BNJvGW;G(ffFCvkKq2srJa`o
zr}j)6>)=-fpMl)bhqb6>Js^0m5uf%CMPC~2`SFUwnEvc6Q at D`HS);&d9NUfiDUVC}
zxm&sX*JQ)6_v?g?oI}YlT9*jkF74F(yd8Lud_GzP|C_?0Cy(O>E|PXG2fx(1Cg-ZB
zOW!iUNj|$IZ{8}w_do-P&vjjF|Az&CQp%fg?@L}U^o at HNZwF4}(!P!7kqno0Ka~eQ
zcOo}X`^V~zWI35L?8EW(JYVL{WRCr6UvAJTC?CY1F9N4}yTsnsd_Mdr#xsW9ev{yq
z#A*DO^f&YdE^o$po<%tLX8Mz#k at EU|X06W;IhyIzNt~YcOY{*AI&+48_?Ir<&HULz
z+H=e?(w<*3uJ`X33O*}=PTG(61aO*n(*{2yZ)7 at CGA^1wUnZQ|^AomnG=8U)pD^|j
z8=x<U&vlZZNUjxGkvFm4una%OAaK&#PZ)6{-%$A8)_sOOwo{1Zs{S07!(Rv=-cGpu
z-TNb71iu9MVthltAGK1x^q|lW$w3p$Gxa$j%>C+`<oR1C{;P4|B)9b^bHUrB{0|lG
zZ3+MVH4$F#-e9bETY!^ZJ;~6k*8>mg*ZvJWF6RBFmB49yEyGUu5S2$er~k+eTr5rd
z74RVX&q(>%X`ZKgpWD+ITz-IX$Vo=dmG%?*w*aSl$7TK1exWA`NBK$P{@T7xT)xYY
zt80K$zv_+k>o0=O81j4^>@BKSzdx?m&G!K(I!7AuGhdYQ^+&KD;HM(!^({=NPV}%|
zPuB`QE{T7BB;$TIaH3ylwDT^(uQB|q`?oS5<{oCbdQ9j{5svovKE#0D6CKgUc>65l
zdOva#aH=<C&|h>cm!JN%zx+jl_Zs*iZw?;c6BG_R<U349(&$**fK$EGzvl(*NE!F1
z1lR8r>h+7(p~a9m{cfDL^G^e=<YyT({(e~>Zvd|3=XZWNeAQdHUh8QtSTFU)fm8W9
zL!UnlJV?&>`!AG-9Gd>&X2L;d!Z@$LOUj$~?hkt_m#=@2`J?6J6M~!e|G$7!e=XyF
z`e?iGN8X9l{Fw&64Lx|Hp*Qwk%Johf<9L<ey++*i!OOV6A;Zu4HQ<XuU%y+a>-`UK
z($BMo-PO~<_0GvW)$?l`aFU1CKk&G;%DC*eobh at YuP(t8z={9*J$Jnhen at aLU%}mk
z)A-7~(Cg9M`)PdP4|#|QA0hNRqFisrsP|0ZijHwU_zdtMIXQMkFuoc%(dm+lyqXUm
z6MV*ypQDZk9nyQ_yq=0VVhsQ%I+<>kAH7e!gK&})x%d4#>DS+ZZ$nGZH~gYKE1AxW
zT%^->%RRtpTvi(MbpK8+-+nFYAMH<m6nGFH{sDY3exu)^)N-=)gy8a<2}k>TFXjGj
zmG*xSxZ)f9_w+fJyKU{Uit%2t+qqSi6#`E6>i1c7y=O at IdSe{_uF4-^Z8h}#fvcJR
zxcJZeWgY(^;UtH0FaBrJp20QDw`q|d-ToVZtM<!yY5n{=DL-qRXNA`?9sM3KR%rF<
z1s=rbd=dOw;8gFNabEdb!qI*+ugkJ^T)zId+#xNWmk8c&_-}XVlJa})tlHPiKdj3&
zZmc^;yp8)cYuFoE;6eSm7Wg*&<`P40U$vg=oiO|op8-yCd$}REbAmr$#24*@@d&E-
z2;juG5YEBqqwVlc!A<^r7&z5?zP#V8$LmHZ-)_Wj|6Y~f+X~71u)6%qdO(N#a^jzV
z4Oefy9(YhY*8rz>W?(PSXR(yOSnwHRKl>HIP5tw4!Rr?D0Lt=dt=Pc)Z!*@A_XDT?
z-fZ;uI^asK=wTgvwn%#p*vNE#XxQgAa4K)+m$(`@*|)uh{r_X&q#x=e{!sfr_d1dJ
z(Eb|M09gLi=QxeaI1WjBJ}$WR6}A(!AM6R>i;2_U=bfh38<CTk{-oG-TF;y)c<=Ro
zI-dbf{Ar!@+Z%t?biT;t_55l-nd#3;JM}oGffJnr<lSj4Cm)vblYiy$qIZ?(lRbs$
zOd0-xrv>ko_G|rf$lHVE>Nvu|XET266v0EHpAY3~t&4z at 98MW}_$z{E9_0bi{e4dG
zcBA~E at 8JGEYv_j*aB5H21uR!zmwLYloa&u;km+mxz+vxXeEcBB^|+r4oak6`PO-bD
zL%96i`{Q<19=ninFKSu$3jL7bS3K`jrr$0JoCf4;w*aShn){2F*)%WUrxp8WPRjQK
z4{Fa at gcBcR-*m8)zXCYXpMHS*tL at 2sdTAaN-uF2aco6+Ffp5ca?lI=+Jw?j at 3%Kf+
z$d#TK^)bflp5+F9nww>PU+^v&FKv&#rH{*-_j&IIuKYX$OkgdGyR|ru^5DbFYNjwI
zd{|C6_%J8qzF6>a!Oe5hdw^4a?=<@R+J2V9DMJp2ffM~1X}{+4?|=vK^Y8?4v~yAt
z+w at C&RspB;tU4KYy${-|aU-whWkg55>-|C3sfa%_$1;D`$S<EHI*_Z3ac*7*K2rOq
zjC)uEz)9au$o)Z{WtR2dz^VOaet?ca&;dSsArFWi_Y`ol|LY9D#CL%co!$wi{AOwA
zW5AVu6FzG`?7xX{obO!EGy1hs{w=_%{g&__e^a09HU2R3LGN>qOLF=4Hpb86AJ#PR
zAb$Q_%1=JT1y>0D=F@}@)@}OedItrsGwk-~fKz|#B){2&(Al(^>2!%5rRD!Oz=;n}
z7~{1|isdtGtiN4?A8p{D2TuH{dpD2Bb5ieaL!b|N+a&SNdL226aMY{cvDf{22XLa(
z`z!9R=I7IbPye2Ay>1>mjPf+TG9Pt3$vc5>1E-%g=GV6bj~MOWCC&9_?&bD>Ue>iw
z2tFa>qUT+l{BP1n?~na5!T3?Ysb6!C``e$__#YY9>&0gU?^?v`wf1W*I-UC)3b8!z
zz+baoOE~fEDlWfK8ucE*=U&ga_OCuH__QIn=`7Q!dz9%*nk{Qm<1#MVe{1Eqe8|Wz
z at gVRZ{v4AR`mp=xvsl_WL^#Q<#I3zi at SR7v{G`#&j{+z8X*c{=4-0;|p+Da+%5<#v
z@%TO^^e+a!7%iRqGS7Ey_g)Kp8}N`JC;t#Sb%q_ae2cX6Fcutr?slf&<BxEEwLI^<
zHJCrI1+L`8 at K>Z&dDyF%2lUbT8E%*InO`!l$K~)brep5Y&jU_+d-5(Wuj9jip>Sb}
z=f|B88!F%X9|qscU$g!!^v4Z5>Q!e1_p22+^=n)bTwNk{oJZv`?h|s){aV4F1HKqF
z&l+(ruQ`+HgpBx*A>b50KP&O`(oF09z=Py)(Yv_3wKLD?I{Cu>z^R?4fAwO)t at rx%
z+f#y@=XCr0H`6iw*zW`$)Sir#uQ%jm(OJ~a!cP-$wXO- at UMWT5z-b;$8T+8S2 at l}^
z{%14ZyN&gOUKc(n_{;;$7 at i$?FKAroh#t`Ld>L?>kM)M0e^km(Kge{no<H&3T>cvI
zhwF9WUf|SDb3gJg!9&tct%pb76U@(hfD;|-Ag)*Q=PyOdx1YoEX34(zO~TI{@NF2e
zyNz|^4&X$;*U)>D=kmB%SF!$lxyaQI1 at GO)_!UC`6c`3XC-iOR|EHz=o|tHakBfh7
zv6O#1;WWNKXF7d?KLmU++L;kOruRqB3!OR9doqo!)7}@%w=01Y{fyyvZ8 at L&H7Rz~
z)l%=Nz^R>cyYak0chu)*;MAUa;hVN+cDR7c&l>XcA;BjN{D=#=JzWoRfA#v<Blw)y
zfe~rXHsGYMx_0J<^of7|k5nFbuOSb07qJ}982*F^aN@&+yj!99zYaLfyNo0@(|&-9
zsXXY1M9%em+38|xPvK{S!Xf8}ayu6Z->w2qbTWosy&d>AP--yNqdhO-_SE(B%sqq6
zVru|6&BqzzoaK7pq$lfl;Tfdcc^h!5*P7&p{8ZZWu}c}Rm-c8~^nJp?2Qv at kBfyFO
zvtumJ`hI2m`-T4D+(3HonLZZ^KK^pX>v)*0KLDqE5$+3Rs<`zJUH&snK(BWvPB8s0
z!!P#-!Dl7DPRr+t4{-Sj!yo%y!KeSp_383UKgjYtX{<*H;C0~Vxa>RlTb6YiaN_5r
zArFrNC;90z^6~EdAud0 at jr*nb+a-cezl-PB8X1>A04I6)kD- at N{xI>s at bg9Bsy%Yf
za=#S$x!^O#In-$%Vfne-csK1v;6%stdp{`n^ryIiTF<}YGNyC0;YZpCocMr*AgU!t
zO24inys-J!BZ?0Elee?Pc1W2cKgxXAWW?t`3Y_RqU&Hj53jG}~NBe=B`R>*Nr}>gG
z{I^#CCpvZFx6$Xq_Yoe@&fgJz at TW`0QO~c~$AZgW3S70v$S?P8!byHU!{e^+ljg6$
z{KbBG((q4y8aS1oI*>cc-?FSbfCshnx4_BYJ1%_F>%}e~CqCfZME1XnrH^Z|fGWM3
zW%+!s7z)Qo`H363r~6C!<AD?3rX=q4EZI+`fm1uD_vIFbWn8u?I`B6d=MlG4dC+M$
z^4T8n32x`4tatTN?{UD1{)8dVcM9Gs`P+x3{N<nI^1TmpL$p0})RodsV?T9);8S;S
z`>zx|_BY@(F5j1N5jAGjV?L;HG{z+=`1Gv5-k$;w8n5T2yqS0FVCZY&vzZUS2{?^o
z{cSuhdi^~cIJGDA5Z9~q%(FyCc;fx>ift%Q@^9py{EXne694l$`O;x9V1noz2VC*N
z*f(7uxalwbLlHW=Ud42#xB2ztxxlHv?M7Vg4;2o%GW;8VCORaaMqZcqeTMbPj}5*0
zL*P_?Qu?dy$rYas?(e&SQ-3oDF`sq$s|g1k({A|+9KtleW<Jm5Z;<)*S1I3a<Y_th
zYU(fix5oZA0i5WY`KZql+{{<}>d$dICyeum(|`w!<9nohU5Mphzx!}El}Ei9$+yrU
z^J3R)n10<kT>dGMlhZVA$iq#7&wQ23FA;lY3;06x$B*WjCDY0JI&fNlb-qC at ySD*X
zd_IrmpQ$08h~Sp+Q{xAHfyezP#<<6TFQ$<(@<E*gJcvIx09SJU0FUDy(x5kdk at 0%5
zTeN at XLcz`aW<LW?<9m{v<BSWPJ-$TsVm at MhpwFqopQOfr!v(e7dmV6U&y2+H9nHVC
zF8ng{Gjuug6W6}f=Np1s_p<=*E)04aIIS1cvOhXX${%tq)5%C)WvxF?AsqF#_i{V0
zm3Dqj;qqnAj|YHLJL`@4@;vZup!9EJTvA^l`h}nG11CCjqTe*1UppoAMR4 at EtR)<B
zW#&E30w;OvlJh1VkA0QU34N3q^Lvr=-LGT%ldE{4lk~yX at 6mnYL;Wwft?y-aSXZLF
z8ehXce?ssFWZb)?i}lxY`7R?)U^(INuXY)J`#5l_cl=2vaDwcEzNqj*zCBh1-|MT~
zuXba-xDa>{{~rWS?U@$6bfi at EH%-S_XV3c at _pANS+`v{TzYREzW1XB!YW;be;M0<C
z|2*O6p*KkRy?9(SJ|=kk5sd#y#_MU|+t7m_7;@EeBh%@9gb8bTzDw{a<D7KIo2b9=
zAIiD8J{Nl}a3zOEy!s8m$xgUa>;%?Mmh~9XL3^f+^WQh!%ycGC;(0nK?SBe5$<LIb
z|69L~@{rqh!#{8n;Uo`Z!Uy5o0k;T!!*97x at Y#QG`S<e=>nY$=?-PcdeB(Emj(HCI
z5OC`6`EtIa`@8EmxqPOV`=!S#0i4F=A|vkNCxTyU;BUQ^`8H$d=NNFBzwL7WYd?{z
z3k07v;(V?LPW-XDnK9ZfdQ9*Mv46G+osMsDy;DZL3E)I$LiWqTHtT%Btqt7YkBL2e
z>bJT4jIp2nmf&W5#q+>}=H21bpo9L-%rbrLm$(Wzjn|!q-nfIx)BG~_%cp!NnEo(u
zDxWdpU3d5{^Lg%KuJ_BrpCbvEzk7dl09Sn8hdCqH2(6spT?XGSBOLvj80Ph8Oo-i3
zg#M3;;LiyC_JeqQwLUrcd%}k&7}w`Y1HiYT2N~HP>HX{nfCu&KI-z6675t2FwBIuB
zDXjlK^DXoh=G#xWdh7GRX}o%kc%gfM6W_*v=WpkJw=tc1;r|`NpSJ?1 at -x@5!qEM?
zRPc=9_t^DzZs+s^+ at 9lw&L at CVdnS$j`{TfAeVN{q+oRW)&>d3V&`W0kr}otE#DcHS
zp&k&tcYihzPUh;Z);qbpbt||3QsK|-f=>;y{QO4d(Y|+a`OKq?KPL9Z)xZ~{rR{PL
z_XO$J->5vvmEqsp>uzrUjIm#60#5p*w~^)W<D!Spmhu_Hf4B`e^>^-1-0)9J``6vW
zbSA`J(s8600H^XHV}2cSFSqA>gZ~49*Bg5Hdf-GSvm<NT^Q7KOUd#Cz>W%vgi+{lF
zX`f)mYrAMGaN>^{?|L<G(&z1l|KX=p9`&03>O+6X_}t%_ at tS@oa2l6h at u$5}#^nr!
zLth!^cefJ`yJEsPFZiqA)8ePn_R_vT;(BKeVFqYETn3!vdBX5B%mNRZ*BvuV$MnYz
z04F|7%DPrB?f)q7AUZp~h53J^5ufmDDi1z~jC)vn|2UXVXAwMA1V0Bjjmyjc&x;48
zop%dv$p%ZG^X?5rM0_4M?kT(xIML~SlKFY5$kjK26CcJ6d3XwV5Fd8>Df9mcBk$i4
zz)9XhVz+4he2pp(yGZ;zZ;<x?3^?(vUN*{lel59=+c|0YIZqLMTH=Q<6FRTEKe(N(
zz|}l5?me9)c->jdPo%9-pI-ncxjM<v8 at vB3nEpY)iT;G_6IrWR)`yCezd_2kKgf*N
zcGMexzR0SVHh6z at 0w?-Ya(<-s%=>{8-zFuF>k83h{{&9$-zs*vK94&D?ISvM16<>;
zWZYK(r}7~~&r^Sb#{F|bCu7(f$D%*9j?A9Gg!TQ+3xMwhyLxwdKT)c+z5$%-oif(P
zUkQGap(l at eNceCdQ{YjvthK;Z`;GER;KU#E9jLdx9s4-o?f3CWeM^{qDV6s!UjBY%
z5quiBvIiv2L67^d2nQc#nt4If`}9xzBAEWuz^VP43_bSdUoxG{8QkC3NqbHPz8Ed-
zy at SVbh2U37dGp@xQ-q_x=KDvxKme3H$N`RyOX&wr_g=e<`xkVcN9{b{7_aXF58~Sa
z*dG%8cG+hQNjtXy4=R6I5&U~ZhuUwv)AY(;6CKFgHs+7cdwDW&(qopizh3HnA8=~V
zgq-tgy?4MY<Ky^AAH7ffyx?<&y!{9`ox8Og=Wb5{C;qe={Hc3{>DPBNeZ6ij1y1Fk
zFy!_k;7T8Ukk|32`D at l!gih#7EctaZ-_LxM>|6BLSdV at TocK0p_(cbQ!+fj1m<j86
z$Z6ojpOEp6L(6X&pECBp_X6LB5xC#jcklX`^w-$$A0zk#>Y>ji>QBUX16SiX!5tE_
z%=!^<+K*3)pK5<8{|8lG{^9wt+vBL0<m6Y(9~4ucs|ZKG%)E$q0uPeI4%p>NP7Yzi
z^Gva0&l7yskcTe-52EueDv$Prg#Y^9eGm30H101q{6$v+52AA$aMd1zZ*_1;1(iPy
z_+tEKR`%B`g-171d9<hQm#nFF5&k?5oaoP`m~WCs);j19jGJ*mZxMVBdYV3Z{klQ$
zcCk+;q~1k;WImYhnYInE9yZ_C`vR3mduEOK_-5EE`pjBLs~;x;S9-}<uipin=!7od
zemyG+`ZiS_`v^II|Gp5r<WIr;ya~8!5Bf(Rect*AaN_g0oXd0wog<%O{WC3gl(5<A
z1x|D(A7Mo6nZE$9m+yLiEW*U6@|kOSUg&+_THvZ)Bmep33Wq*1_Aj>xojHl;*Zz>E
zIi}wZy+|M3p4$nBoS1PMe^ceXE#$xN{b!~#yMgJP$3Lvgfz!CuiT!z`eDz-7^@U`t
z$A!++l)t|Xe_{G_usi6Z*V!)#UT5I1|0|d8UCtACi?ruEgri^PyLAr&S9XHL+kai!
zw(s9qzg=kfsm=yY<5Kq?mMa|}J1h9Op&xenJD1OViW{Q&|7OA4#lC%&)SD(8?KJa1
zUMl5hWdEh<+ at k3p&wSJS@%^6Res#%yP~65=8*rjODRE`o3kz{7+|Kq#xSd)a7X5?Q
zyIxuE>V%*B11CO=%e^q|m-{W at BtH_ztLfK0%jIXpp82WJc@#Lw$%NRe^}>gP{>gGa
zYs{}0aH`jWokbt5e;x!*>&ToK@{5H2-&eDqnd)K5(SF^do?|)_#(1q2eC8JBr<Ugj
z1fMkWGpzd;)2Y9Ld%COmF>V4*^VAZ5MM(PfM=5U|%;opsYOI6)&3v#7|6V(A>hF~J
zd9=N^P4F(GJqJ85{4v(wHw!)udyPJNe19monP+Cl|8RSzWL(D8w_tAr4_bHPz}5cI
z at DE=AoZ3HQ=%1bcNBU))?|%$9 at on;E9$DSr-vC#3LXO+7&&%Fo?ZE4r_<^;ZFhsbt
z+56-CBKT*4Q#)rxpJ=&y^`c-pR(Cv`4=+huwjJwB+WFX^wK18^kHk_-;+c$PpR%?)
z-)gV#v-8<Rq7(mUvF-TQt>JJu(ih7m<905eO%4xs#=G<3aC}oNi-NIaKGzwKcE|8X
zG}@hS%*2w}&Q;w__S&|-#BhAmP%OK-r6WBuoKIw_KsaP~CsK)cKAg*Ub}zN*JE=r2
z*NLwX8G at pbh`q*63}sTWc*5S49M0P#!^zV}5}hZkU)7zDgfq!RJh3I2OW5)BFj_Sd
z&)fO#d{cfTlR}|&L at V08+U`67jZ(F?=ziHrG$fW!XQlE;gYz3j%m4f3nRPw(l4LF$
zTM{A$wPn(&G1aedcoe*|lf$Xxa3UODw#M!m%OrXdxqNiJr|V7K`B**?UE6K9bj9+h
zdN{fyo=)|bBep!5%f#~WO%)P5e)YO#OIO==Zlurdw2L>iIi5{Wd)BW)i(1#F`xD)n
zL_BJ=ra^UWIK4of3m~_E-Sbl~*1?WcESF0UXhHXkV{<AsI+V+gr4lljMMwk<Tfujg
zAXM2opHu}?tWvZ}Nkc&eErW at CM;c<=1(^uhjU*JNK(x9%(o#_cmjb>$Z$1^HxqzGs
zs3MqG8)MmIY&ahvTP*{r*zllNxS%-I3?we+%BqFJ??)P-X|#aZ9qFN=^zg=HE?JY-
z2_PTxC^EY{- at nkbou)4^ZDNZa`x at 9%YQ_|Dsfg?wTC~kG_<Gh<H~c{q7E}NND_AfQ
zC`x at ngdmXmb`*o4`icp{n$?}_1JptDP%4 at AYJ&*b4GuRt$wnH0$y4E??_W3yXtxB?
z?uf-VCHfbphKRQYntk0{l9k&mWt#6bsq6)2jZef^#&SJm$1V&{e55;bv8BUf>jo+$
zT}lfrl<XKvs?`-6t)muDD1)dkv{(k!v2d~zMBO*U^O2si#H*Aa-;4?(KEDZDN<4#V
zt4+CCL$TzrD9_d5)@))hnS)+jrZ<zhQHXHxFT_Omx0A?OY$$1!j4fm%Hk1SD>=11J
zyxor)vdO-Yd@?=Ud0I4{>O_f#p+q*97#>d8dF(XN0y{B0h`nCt(CVRvNObj3bEFY}
zHng?SpJDtFX=-k1Y;9-`H{l;)LK-7&jcv^>kv2l8T%@_7xh>M#+!&%Fgf at mEk(P!~
zOB0a{x2iwFk;aCGNK*stT~AxzW7BReWQRkUST;6f=b>n$fqT-nq1a}%p$oJu{cQ2?
z5gV}ykp1b}*pPp}YB~G(CGogY9}dt8?qN$CONAr0CcoAWhg-VfD9CTf#Rd~ghx?;j
zp<HRyYH%rZL^``0u$k{#701 at U!Nw3{!=K5fGrS>RNRNf`Ko|~+)<OpbplB=kC$h0z
zBH9I)hU-EYhFRa)jS`;mS;!`OJPTDjRZ6!RZkLx}n_Ix=cseuIxw<ce-O}-pEqiGy
zm5$rQX-tnG_LEa-wN1ZqyjiNa4KG$=eNV{i(0Qp0PC-W_A$xsd1Rkz*){gzZ9-C9F
z(lK_tHr|0wI)2KeXF`QroHb^BB9qQSvxVEb64 at 28p=4 at o{m3w*xk4`{c`n6^nN&VZ
zazB=yZYbfIZmz4em_}{vP;LX=Fy+9j-aiYcU%06Q8Z at 0sXj0*ZbtC!ANPb<0mcJak
ze#&b27p^_d2$p41q-8Lb?u(^tEbQ<bCvx#vCShmb#>7w>{bIjtxT$+{GIL at wziACz
z&{(Z%<ZD11rGf at sK{T69XBV1$Yj+~QI at Xs+&6Du)8(}&+V;*T`VOyRUh>fK3v_DP7
z#<aXdN28I(e*P6%PV_rFD-#Bb{K8SHqDcV*V45Vl$@%0^f{qjNBoY3OyOXb_69tm7
zRPu~OH%>!hLpgN2F$vJ<VTE7ubfxq+0y-j+)QppaY<^WDk%1~2#yL!M)G6#$ZZ#NL
zq`h7W=QiuRTej1=&HrN%j;f#qor5p$!ImRNt_on8>xjVSs(zJ8(IH*)D9-qB%9g^J
zUMd<*CcEgw$=NT2dp2QO_4i;hW~2C3haGNUXiaPwideu%0~X)`IX=v-NyKs^*~Cy{
z7^f9#E$hmr2a>5oR)48zSHj`07_2GO=bt%dm%}Y9Fw1kBip{eU8^@uS*2ZzD{KnDI
z_~DSN at 1kAFuC933iqTQ`q|zNuk0J}Oml~j&lmQgMJPtR(c+cYegAUemiEO at eZJTWm
z4v(lqWt=S!WB-lS+L6ny?ugyph;K%tqup(GkBzfnY{WxY&bP#}{Z2tTx%L=OFWJTg
z2%|dz{2OLsoMV0Fu$p^1MO%N at H0{LpH#Q6(F`bpGoiR-W_xH{+4Gz+l+ZFH^w(fw=
zM<VDYoi`^3l8Js#chy`D>O$DAMgLS&wY!G8j4ImB?cJDSe5j^F#b~@(ZSM|~&xQgX
zw1dcvQE>E6q<O{arN?*M4q&I?a<lV at rZ6`o at ceBS!*oq at nAQ&%XfWk!rOu6WD;|dX
zOZ;4`T#*PjIO0nFu?F}Hmo=%_7{>}LXh4Nucin5SqS at EU^()7c9qT`B1gzMUh-J#^
zPXy-ZWj8JnInh*{e1}c8ozCQ-kvm}o*c5N0v?&yAj}3<i6m3t~?uiuhjHDa`F_nU`
z=#SxnuGhO?{1RG;lz*fV${$WeQT-CXgUuL}8;OJ)Qd7Nw5$lew!#d&8K#Q7f^5kaI
zIqci*R61QFv&!*`mZcE!%B>s|%V4^@^DnpH#lZ@=6Pi5a$WqnOPUXLDRvm at G=8Se5
zk9Oj8M0nZxw2U~G)i(OCxF4*B(Vkzt7D)uyu)IvXmJ+lQ at ml!3*Q}-0&m9|&{%a!*
zG(^!=WoOhXHG3+Ke<Ra{W<UqJ11ZHa9`y{ZrwNr(#3q&;pc3QO*@YlG%vfxbs<Ml^
zZEc2A<A~Sch>ou7i^Vs0o}fTAGffV{5`jSWC-SjmO8F!Q6I*dyI-E<<USb(Ms{Tkp
z=&;0AH!v`|x(^2-_#aiGD+m}=-%Lc~o*A?-b%e^*;f6CBjciHg;_6fdqaDUM3p}sr
z#F|)cv)4)I-9uJCMO>v2<g$k7y8H+>+FbicIV6*bTsVAuBJbFPqfr=mY#WwxY&h#!
zB~${f$AE at 3b)*t8&k>!oD0;in=2YFfG&@MksA=d{zttppCZ9ooh2&P(1TWc0Mj6$u
z10%z6b<DS7RK-B at Mi<kzB!$)<bgw_XWw?4G;b!ej!yafo?S`VMRI+4k4PZ|cF}XTS
z)G<!nE`>wO6BW}7he0rht#Uu&WPN)JNV``v(00P9)}uOIJILKbgeb5TMp`nSa~6G5
zs}P5)AJg?+EBc{1?aqFTZa;=*y*mADa4OtD&O5?kX_)HDZK}&GxG`#LiNgz*s>^_Y
zX%Jc3?`~_9oy1|wb|#;NmbBd_(Jx&mD&nE at I5zaLKcLD;6ZDcgigspFr<}i5Ul|!`
z0sRYy<)EP=No`gF?VrZlR3u9gv$II2TvjycNfFQ*w^WO$jQNfvmYSl=K+|X}HG-8X
z>8fJLZ&N=ED7DBr>mckWit6r8oL+kEV`G30gUp$s0 at NYEO$7q%PCJK at m<pbGRHgNT
z^{mq9eVS7=WXsWD^_SxVTE3pVdn>5KdK|}^)6ZipwAs<EiTDWl0L$62WMz4VrNYYw
zs*P*GLJvo}mr=_I3`dMb9##lh2+goUC?rH3U8o5AwcRV}Sa}Wo!yckzWlYW%@>C9H
zVK^)63*o(;eTo32v>*UM%%lGw^w^oBu9(VB)0A+!4zfOO%7?4f{Kqq^!%drU&J^oQ
zCHlLviGk!+<Gik<-fe`>)>XU|{8GI%!79_+IJMlk>fN!hXl`JP5p$4s_~3TPX<;Pd
zZ;qp*Yg>dWY#3deaT`|Pj0k9_$7xu^7WBF%aORZARvZA-#=d+ysY+zUT at w!BpN#X0
z;WfsR(V_$H_mtK`*%>XG*!BuB0qsq(;eMPQbgmdpM!klrGm_yZXQAbugd3Kp*OChb
zrVpK!k4877l2JQ~Edyy4KDb!loo}-d_G$OW at -ZmOW~>&7M3Ey3_+jMhu+n=v=T&cI
z{@oysEf1-Hte%a57Jhk-&ttHbM>rNNNFvKuygba`#yVbLKn3>2I90+K4W>y^M^`PH
zL$A~Gz4TTP0<@5^PM#^?1VwqRii(Ydh3YN4M~?TqM_!Umb68hiV#81qoucF9K9xty
zItxjP4nuLOW5}igt3C0oOb5IO4RhGGy_9YnbZ&BZG`%^Y_O!0fU6(Azl(PEVX>`z7
zo8NB3XrCC%4sFN;`a4Q2BhC2cn#52#JEjk=gSPu62(*HLdG=kJgip09bBjZG<PfE(
zLN_}to9W;)$x0;HHLUbeWpI>TRYMVOTAp4vOfhYVJOX#p!_J6QWC=A6sljlTaJ4iC
zE+;-VhJ%(?;$%<vyuLg?qX2%RbT&f)*ahZVII at Dy+;LT!E^_M=EW}oKA%@u=jmfba
zj at JvFPw)&7VHMep3oYGgisx9J9#kmBX9v at W<BB5LS%{p+eYn9~K%1PiI|>~Sb;S^N
z51Sb=_B9&JXo{f${F at DM0WIlCM~6pob(5Oz*B9kV2QkMl7mcbDRLe%?Qa}~3Ir>Ug
zQ{+2NWnTC5e9aVcKR_+}uHqMobT_P$s9jZHG7&xDMF_=y$#u{fMt5NeN0gMW$fk!N
zi6n+WZeiMTj9^>rDb^oEjKzm3Lhgthyt`e2B%73Y3SCd(K*Hf=>2%6ddtXrP4T_>F
z>7f@`v~ksF7ji`8JS4mG4MTLiUBk8=cP(I%asmkwHf+(ISVsH`P_Ua5*%+W^Rwc&N
z1f`j(IrhRdro^&@yYU9cEhteWw!k%-F;<`61)@M(CG&YG_l}Y5sJh3~xGXui4nDCB
zaLC$?_KFQ_qbVq&T1hl60FCeh&_JdFr!Stx*5F1X%$p>F%vK|EFyDQ;G8DC&M<Nrk
zL&qtIoHgL+Aw>&#t=wtww5nDb5f6=p>ls#SmW0xaP?h|0sIpS%=svNhW95>zHlq at l
z4nw$NkWiushI?FXL9uJTFhWr`r6x=R&OwQ^->h-khUuejJUCJ61vbd)aC7G%!Vwd$
zi4$buoZ;_QrQZrtm<6{m!pg8(iI`Z#zLMcnlra^N3$byHZG!)FrUcy*r!|F_Mk1=Y
zAio?=u8P`QY5)tk(ZJ2`NW%-imCh`K+l at PLTmVC?G7J at rth0w|>l}{j(BXNgc(lX0
zc;_rUIDz&pJP6NF3y(S}DKEcH8=E=ym at c)|ydYN9z*K*~70->D6GO#gycF_4H4ebB
zkD1uwbrX3lDDT#xts^%YRd;@ryi|V#;Gf<8m1N$;omo3?JH81P4??^85d{x}fb(W)
z6Nv13m_T&oSUTVYB|N8`#aOz!6-Uz)Zf{0mVl&vi(b>OOuMB)^qmS176;~-m<EyG_
zCF4k2KnSa!Bh`{-={PNy9yaG<v7u?Bu-EM-?eit>NPDs7x3VK*)y5j<Dimy~>AC>q
zw|f`L_#Nik1(4tFU7(FbQ4 at 8(9SHJgh9f6*uUqRVp4z6_c5E}}^>YHY{A<X384|cX
z_cLUkn%GZl`>JApUDb}Hg;Uf4#AYa~uh6OJm{diNQ<NXuyAi40UZ9nh>^zxfCDt9M
zImnFR-e*&;hg{=&*!<9fZd;NdTyP%lIY)BDpVMq01~(bkhA=_^$XE`MmCB~EqXfM7
z5el8~wC4&pI+APCJqYa}mP<0SyK87EdD|kOq2TqXh0s)q7i1$H{zv$ntGV9L at 3KgT
z21Zl;)Y*AnZ>Y)f<hYrd41FSdT?!F1_g<|<H+3XSDt3w7>`JKV`vp$gm9Xy&TMtm_
z+ZHWqrJT3f`BLg{Y1<YY at z}Qir#c>?Lr>4O8c%Lqb+?A{78T8B3%<}+iq`D^TTGen
z?GttD98s1fvjwZESDL#V?G|?f1pm*9;Y*$4&Z6htf0R(nCH1l=RJz0(A8sU#%@Ogq
zsLodfw69s#D=dO^@M<H|7_8ee$Bx*8 at g}KrC_{%6=J{$V+dCX7_w7IqIU8J@#I6p9
zH^Zsg-AUp01^a*BdFSeIgo<`XJ1QyLu(=x^`BV|YZ7WA`UQ9L-1%s{~8R|psH at Rww
zwchc*HR8B`l{US+n~+xYygQSke2z6;KhV3TQbS!`Bdy$6E;&4apivs}?tBW#&I>ZA
zLp8%7;?U<b!~{7<I^#W9?wf4d$vO8WtN*&^%SHEU;b!H}RY_`)v2A&hQmrqIwAx6!
zR*QACekr0JY2HLfl~ODztHE_Q*Iqa7xxRRnznC4LZ at -%w!Ss0yT0_M6zCXWCIMh9c
zOo~IDm<)7g!#Q;Z at F0Qzz^!;OuK*X6Dy!1M5z;Gk at Vo*^LntjtUu`;~%l{~VvupD2
z_qRiJWxE)mJAoZt8#>0~I26ZbvpWHMq#q&i(41Wxi1RJoaU?cE{-9EmvKl&N8)Yz}
z7KNgQ3dSoqU#i&)TT}Utg*q}Lnw_O%j(jD{5 at z;Os^)H_pi;3Ct2VCaHY2C~@>cXq
z0o7??psl(7wSThe5+x>Tks_W+>MtP`l~`H*<vsTgVwoge at K?!33oIv(d&LRZ*TJ^v
zAf?1`Z;~Muk=NOx^Al+%to67_O3_tk)H;yY%x1JevAxx{NiMoN16pZc-0Q9St0ji0
z6jLf?wna(UvW0FtzdR$TGa19Ne9lQCt6b(K+7 at m?P;4C8EuiXD_E}6Aym^z$j||}H
z4+}@@a)Hv$583fldN`58V>tb3TM`HM<F;DPj*V=Uh?{((pVG_*m9TL%nY3fsEVAF>
zfGj&^4Invh!tNg#8XCh_JpY2=CiA|cw!LEg(lxj^vUa&G`|)sC?usJ0>1No6O+$#6
z*cxpf876=yKJD7&u34kKcEwVE#FTm8jT128PB>C8;prZEhK6pV;IH&t4=K_Gy5HEA
z8Od!zepR#-ldDPkq<2373ZYHqp{M0Y9axg7h^sls7nR^-r`&Ay-Vd9R<?ax|;8VGy
z0?bWUV$ERYg8Mwgk_r`oXVNeuaka2JBQEKFm20+hwYSv~do at N9ZkkjwJ{FCL*Di|_
z))>;f;(Z#ta-?1~O7)w1UQz%C<tF309l3aE-a&-hWQ|<6vbUs>%Bv4P&i+_-40efm
z`O-X7;$TH=>R_^X<Me8=BGmADX3<NKTga3V!DUoCnL{u(B_B^@hmymTYa^=s1+EWV
z2Rhcm2wX~2^Nu`U9buZYX0|ZB663d$x;tPtyE7{=9YFAeuBE*d=L8t_&bU%J<{UlY
z5eMuWmt~>D5_xqQ7*_**Z8a4v-3L~wO~@S$#nnG%&RcTk*Btmp!s>Bf6&~40n)Nd0
zKmRKfL<3!*<olQ`_I+5Whi$ysg~f}ma}?1N9$g)9?xfDN+OQ#7s*-3W`my~>QOYnH
zC;Rxd8|>&xS&3IJUvKcck*}(HED7Iuh)Q0N{JyA}UGmOFauOTLYgt+Vqjas*PHfF&
zVe)`WN?E8>=}IiIyIqSl5yxyI)oSIZbQ;J4tuZa>NYro=+)XDTEfgF8(Y32Kq~cN7
zNX4{HTs``S(Aj8I-^p}Ulbm4cU$|22n&EN{lxE*@q<PDx$2z+_;_hk|bIs-qNR7re
z&?(>64J*t|F7v{~(P0rI>G4RT(;kml>Mh9&v301TIeOPXUvY<Up;nhd8E{zB_F{!(
za!;K+AYt~pD)rupR1^WZBODobMcL^_;VtpN+j+)_c;rH#=PPy9>QPtFJz86NmxAWb
zoW~F%x&f_P at MJN}G{?{^)F2hCl}Ny0td*|7Ngjzpd0|aE-&E%d)cnHcIdV`u)I=Fr
zo|yOALru6B0hU-1adI|Sh3$4#F?Q{>xj_w{z67ml2wY*$!!*YvDFw|hI<zV<a%;JZ
zB$2m4n_+i`hW)8T+4>HdJ7%|fPj;Jfw(UH!6>2VdmarlsRWwM5q`}k8;FQw-LeAXr
z)TLKR-6B^*(2YfLlBk4QZe^}4Q^ZU`VlDC@=&<NOFM|r0j+Wm$;CzL4OwQgRs0D7j
z9bH+8vqo)^wX<fVkBmB`!-WxS?kQZJkr=NXNu_WJS2N8lYzUifo7?U%(yFPQwR;N@
zHeFFQ<5pf^mJx%A(S>zHT6l%qFr39<#NaSI+Wko9HNt`Alx at 5~kyL2^QZlDZ8rSbN
zftSLig?Yv3AdQcX(eX at 0SH4xwN1xKFapyoD86<|q9Reid&f+AFEdEht at hfh+B2s+J
z18&_Ho8P9mD79BC(b7Vu5%4!C+>8``9Z0C09 at 6oVKC^`_L2O6hY%2B6x$<z<$ob-X
zHmp_)x at W6O0V%~O3J56zaP*XgGWFzW>T_JiReL&BekAd9x|3CQyER#olu(vLm|nc&
zM+Ty1JdGo_u$NCsWYbX<ob4_rzJWJ<J81BFCkHHPHcDg2OEo*U-RU8Y0RQ_EFDZRg
zDit?}1G>F20_>}ZC)ZuBbyRhl;7UieVB4h^9*;w>qJ>v^Tji8Q7TyF-%nh%nL~!X!
zJRB>CLoifM8{Gb}6z)mV>mvzXZgoVHvv5^&tV64wOw?FBp2&#t>S<E3WB@!y&i27I
zGAmF2BsMP31szQ4P;}ei%)S8A&e at d&8)Nf6 at FBNrRjEph5i3m0;Afm{Rhb8DEd_Sm
zeN+Xb&W}hLH5EE_$q67rwxH_^O|J!5Uji+Jiqp#YdtdIIG0R?l^4g_qIy?Md^GFtF
zouHRtbsD4EH?r;sdL&l6X2e^$;3I-%Y`!ag;D~s5R2UHvt}G(L&-DPN=qo0e2SrUr
zSHSfa1*O+HTMWlSfl09pCof3-i6vbbAKNW!Y;bm1<(P_PGO4jBE at C+UnM`=G(uVlk
zQS^lxV;sUSe6kgPL&K5z1YHv?br;<^7kMeB6fSvO>uQytDe2^0ec?0Mg0~B<%@$yN
z2|RQ1xRvy=bU^$_p=su_ycw>N<JIG!vhDL3U_paqZdk)1kXWC{;XzE~ef3MZQ_qW<
z`j^^NWOq~PwpNV0Qk*pT;!T3+=Ze>9QN;rU{%%Nko^FxHwy$;D7(l9$Z33!utZo(K
zWeP!<9_W<&AKm%><%v-Wt8l#j`UZ&KNlJ&)&H}v=A#pgx^@*mZ!*1l3?m|U!8<1;~
zS?sL66?NaU>Bu6>BJL)pQbs~M*$D?cRO%m7&vbTXj>o*vhJv$8(A{;JS@@uhl!5mb
zZw%%)Wz$;_kwGufB<S5;%!_an|6AS8g4-(>4yj++>fsj^SXkr$H{!Xnn+rE|q!5s(
zU!*jJ!0Asb{7mX$gHA-5k9u-=<MkeKC%~tG|BR?%=AqkTXOOBEcQN=iDOXm)MUu7o
zXRkk>#S8BTFwO}*%`cY2(#Xz)SWrsw7LetRI*OU;oc~5l=TD1zrU=hY4%wM3(uZXc
zn*isRIvK7|m8w^^R7Gyf9pNZ&T||)mDbb&d!<|1w>BVzv6N&x=-3nI^5;Z$1$Mpha
zj8#C6Kq}!*7|)dR%rw2bQ2`0se;>FfhbF6WSMIh!M--%9)b}i8J}kKHvj96ekL}|M
zO}M2q*OMK|ZyIyciPpZ!EgX$X&J;aUr9$z?gTG3B(?e)l19_IRnv at whETo{#@!lW8
zws9Irq1EwpW~}UXv63m^tkwvdqWQp&(bDN4z51tig-gxDF;|hiKqs{-f4&64uUmmj
zA$Y=Z>9W;P)i76ZTDv!m<kg#1hPBE|47TAu2Y7`8`y#&WTvVeK*Q<^RQADXJ?ON!f
zApc0%E*j4fU9S$P0u*U*CTsY3${#Hk4_`03*{6Fg0gZ^F?X?W8e@&V9HCi67dD}0=
z?SQ7voO1K_aD;TKs4W)uS#Vk%d1i{fSY#yRZ|2pu at C%fCi?3#DTOIbJGC!c1f*u&b
z(HTa><wcm at 2how2zOgb)5fxv|amKW{F8$C5rNS-p&<H{kaqnPET~rLW4yBNPH$Rq2
z;0f;JFol`prp at TOOv@nd4yJQXFpSgSHoL+D`62<S^LIY`g|q4@;p1_Ist#55Q2edK
z1$vL8reWi$5O7EmFnfKrnDbUj$-#@Pquj~Jg3~?Hw=NSsK^?1yI&;f#Zy-AcM9$ge
zpU4r797M5rq6zPKBJxT7wsAS#TXKHYxjG4X^A>0z!Ek=>{HEDPQLM~<0GC??h(=rD
zxZ09S50Fv~*=_4G^85{5KSGkB_TyJ~F6%hyB)efrBM^iTxqWSR1(n6Lxo0es=v>|a
zIprR&8A+jki0%p7qtTXb+>(e5CKS8V4M;c}jT_`kQjdiEOi=8}N&nX1VX%~{l-%CA
zJXPDK905qrfH!4esYg`OC3PSd&{s%Oq=9a|CGaMao!_D!^260Jg!m*nhgJ_E-~H;L
z=13#{Y-nqtKQU{DB2CRLjjavM;U at eeOh{v-t+B1SCDKL+m5VetG`B at sn;UT(VMvv0
z3`HU>4WX7MA{lN~e}p5A4Goc|2Ivqv at ElAa(;)KlE2ZgUdVqFNnaWva*2FU5Fdsg;
z9Emh&QF8=@dDrBYY0^VQiy;I-hEgS_?!p-cXLFXce%ncnk{TjAJzD(f5EY8#5y1d%
zM3AwIpJ7b&JJRgws8Xe{Rh6AaJ_T2xTT`jgA;0FuUQp(x%nP3q_Fu_$4V}QyuW0Kq
zqQUU`^&rgvPqpFEB(4DR6l%aY at QOyRk>NCo$JJ|AJX7q*lE{)KHG^DZINvfF%O>d!
zyc4`+TLw~iC6c=%%ZQp9&?phRVQpei{*opg0|YJ+{tNUJ{{?N~zkp}zFO40z{zvl}
z#y6$Ia?ag6y$Ki+Q!lhC@#~2VstFq|RBm1c6{J13-!fi_{JFa{&!)v4eA5N%Sh-r{
z at clSkV8iJKdt)RVLHZFSU7-7}@y!jx=`GPwuU1?VR at u7UI>qH$#AK$?DQnH9ppP+l
znRV*6zE2hlbb49kQcNq;7<#51FMc$;OX(NB=H^+{JziCru%$(<%<OL_0j9OVu^Qdk
z-{zSw+VFzvTw~+q!;E@;5?0nwdU#_pN7-vUW6xVQ%n%#z7UZ#f4|DPcmv#YLi!Nrg
zuDfh=+FRXP=2dDw?ShHyQD8Z2Ku7Y1W`Q^;I~0Dk&8|?F*JwU53Qz(y3lf<x0UW7F
zl03rF>?(J$R*-O<Ze5eR#%^5;1EM>Vh?^r9&=Y;I9wtL)T~;qQhV`Lr4$3s(EJAec
zX<-)hVsp;VswU`oWqwsM=RBOMvdc|aI8-%cWCeHFyDa(S5n4gsI)wcN%V#+~=F69}
z_0bYfdwR0TolYhV8Z at 8$70kDC(id*?8PJ9Hk(do-q>j at bd#7JPOUh^{&CS+LF*p|W
z20)u*W&2t6QcEJk^^k5ZFw{L!&aN^rSGWkAS?Q4!?r&z&*?fUFyp)^VKd!Yhi^gAV
z2AgrVgqyyyYD9etX(U2+lShgI%)RD{bV6Y>tDBHjDRV!E0_J8JfpV4*rP;^@(HHB-
zV`9o;v?)R{m(!L>kmhgPfb+CXv1}K75m?%yT^rSdTz*cvJ3+m2mYZ-DE`Sy8OXPaI
zt04mTRCbEX7APDRKZ~<-442$FzCfIC_qAnokm3b)vu#eMQ5}ss+>cY&z8JOz at kAdE
zJ>d?L8yWC4^|RiE24CN8dnb-DYZ}yUMGv#uukdTNzNu9x5ETx%Bd%3Vl5%5ES}nG9
z<~E2gCQu1_bw**w%F2~29o5QJPq#`J>q%OIYgO1LW>Rnt!Psy;UzJ1%&@N;&S~}wi
zY0-_e4zrt69l(1fVM$nRJw5EGTod~3T0O0+8stF3)bBiIW5Fj41x>73Gx>Kkj-XaD
z9X(C=#NC9*ZOadbMfKBG<z`V8zMOCfifr}D?h5r7y*BMCP-B{tPXOXEKhBn&Db+cl
z9M3O2>+u*pWsbB->Ml#Hf0T5bGPX&g+t{a^Oy`1b4f)IjL)#TdPnp%$)zaFob=TBL
z!-~~QkMG94K}1B;_6jGXDha$krkH2l+TJg$x$uFgc|0EAZ)Kzr%0f9y at mME0p`1et
zN}1|7)o~Qo=tNRQDIu3~i;y3}PcK|8$DMhojTo=>9ki!!@Na at uAVx*ULIp`Vpo5D>
zsi=5<j_EJs&z!G;r*)|q!JauBU<8#BUoAofb3K4m=`|IRSn0wOiJ;|GEja;3sUa5u
zEhuVInET*#P3HkR-|qlYz4VO?1gefExb1RKG~Q*B8jb)aWXq$SY%-2qbVz3!kG3Fb
zR63Kum0`2AXDzSzEU$rXVu at uJhkYK4!#al-5vMs$j6V6(*{43Lq6})OC*p~$?Bn!H
z27N5;(NPLE^sNp7<7G+=&ezOCFOVwOgSu)&$0+$GUWMm{{Yv4`{qR87sk%8{-gSy%
z$i?M4PrYVXO<^-&o+vJCU_Eo!zy1~+L$KC#Rua$Ne06N7uRrGK+D?R0Aq+t~sa$;h
zs;(8Ilx#?QFWt%=FJ|<F^^}S%YTihxEy4-zX7V{BgVBZ*#qQYJ3tLWZ%2{j+Y*#os
zUCajPF}iS!KULOmGLUJ)*?Dr$z at i|*Li{1Ql)V#sNhEC9iGDo5h^gUM@?QT{@X(@?
zMlo6jidS4vr_z}LQsJ|bW8KabAJ;fhSvMT%KmulH6K$86y2ER4QBG03W!yk9Ermh6
zt+}z`d~7S!9;FH6U|vjTI at C%fiZ#}BFG&KF?f<5I$#GKWW2(unksP4oimpiuu>lIu
zgovje93HXbTem{3!S=%Y at hLlr!K0jnofw*0bfqsou<+c)E53A)D2FNj4Mfd$oT1u0
z`=toyd_%xD@;WQy9;Q9IsxmMpe3P$&fvRLDC8t(uC$+xfofJ)lR at nCaNhS5l*M`>;
z8n=);mmU%bPA2P99t}urOFm7{4E4T_$V_r2v5?!vT$27>tTrC2+lYHj?0`AYw3ZAm
z&q0&2vGra6MswhKb&##DUY?cn>4iM8#t5}yH>ge;pk4|@$7d+1ynNk>)5+)JtPN&V
zI;YN3NsE<adIqjBV($AA!}NNFittDe!H9zlBhBn+Vb=GCg0Jc~)$Dw%ZzL7Vk{~E^
z)7cGI6$eErGWq`~B@>L|sV+n*(CqP!u{q)WL+gsDXRb=lZFR{4IlbrKO0s03LycCt
z8qs4sxrccas6cznV3Uu2Q-R4Bri&mxldq!fV#Fr5d4*wwlB#qbA%yNIAP at 1@{75#T
zV%0nr9*wGN<c0kfrV8!QirjbD<}Vj+6j!MyPK;)g&U{_*{-yN3LS&Nn6 at JUuD~v^2
zQ_=X;vYp4qvTS&gS4mX1H=%eZ+-;_`7Fe)-F?Y&{gjd$9dbBsIGPBg at -C}Yc-K1qj
zrORHP-hy|L+%18cv>u5mSY*r%o#Q?z*u#0Kc*l=?G1_nADH5=zM8b%~p!mWbq$9PR
zK(-3vF#KkTUz(|Y(x6zAYr2@`Te6jR+&9Gv7*=j4Q&Fg%K5r-8RW4M|!_<Ptl=B6N
z@#DA?U2DV7L|&w27_mjiA~@(}4ET%fk4Hz;v_jF;BMs)EQ at O682hlvf62pN(q?Loj
zH+TU;=#}@;08fRhgXP60Nn^M&k>V_9{%xS2janAHI=XPoDm3dP^rJen4y at Hi5sjuX
zhTe7s at TTa-$1pfWs;X!i?SJW-D7Pml1QL-a9zplBwUHuwl<$YG3$c`TuEUE9{m5XA
zjQ;#4uq)d^U8^vploM_E$GBhw&43`5Y1cURB~cuOj|SnlM)M)2&K{q=H{qu4&B at G(
z$^51 at IL=3qb?qrb{mu6(YmWY`c at BE6D947!^c1uc at u3)!V*4DGJw4v_4!&XXqSn0J
z`FmtYhl*&WKDjJ)t=JacaOR?9zxp?0&HO8*1H!q}vKV~8iij&m1p{B<1aVK0s+b~5
zFKQX`^3L3*1ZGYPw2pD7l&szg>|<P%#uYp#o)l{-c1Z}t!6k1BHBm2yn99V<Z^wDr
zid31a6Qc>-6^gcD5wTPB4|<gm at v_G3$JsdcDsC+UBg1jE+lFT;<*RK;m~Jk36-3Y!
zFQ!-hM+vnKj(0N^RC{F#rf5u<uXApkqYlytlkKFVSSzuZ5P48_5<%iIc4HV31Ylu>
zSG#6Ai34uzo9$MZY at _MTIHJXqHu({pdUu|H<wlQM=ZaB0sg3{eAw7{D;l!%thOMkU
zRcu&|MX9obXC0laCz|BZFEV|oH)TVylWKdaL$N(dsG-$#8X&I&qU-F~;2=(15x9!O
zq+z5(V!qd~|DxwVoX8+oA7|3J<W^D0>STw!zkVCqyC{f<M$Is1QF1k?O2Xz-NM2<g
zbfm`4bk?Q;1j9|rrGNp;C-ICZ0 at B#G;936*G_TieQz5E>Hx4jdh1(XV1xUD{!iCwP
zkxFr5h*Ijl#WU&L4U2kM38 at 1-L#+>BstF%2tuWj(aS6 at x>L33C*Z^Oh*PR1Ta*Q(@
z+qifV-_(xFUrU#D+TkS)BnKtVsMyd_g5a{ntPIX#@h7WgVujY){J2QAbA@>qvo<eE
znHxk4qNikE1Q#^D3q?2f@}%72l(B@)gVwL=u~mv0KJ759=@&|~RTTs7NV~Hn`!DA<
z^Bh3eJbt(8{T<4jZH39;7nTUcovBcgHLE+<*Ahpv-I!_|-bh5BQt-uh;1ZPTFjY)-
zymFdDa&2TAC4VoptD16nuMW?Co{{jGIk0?EiD4h)v-B{B{3+Mni5FmHcrJJ1iv?-e
z$=V}-DINF*E@^xeTy{xAG29b$?LnV$5)eKa#{F1*=T+UIFhWOguLehdLGk&eZ?BfA
zx2QR8jI}z;sP;0cXEh2K2z?`1t7*OxT(~GvOWZpE23wrpG?;gM6+i}#j_WUV$JetC
zxvO at I&ez#*4JC%+Lm5K^i<<+qoQO#R87i;dtG%-=rvMc=Vf|MDOn=4_z7622vBI2H
zfpY+wueMVIVws}}0xp&d)133A>YTiRu?IeFSYQ;D@&36x9lc<CWV(PDmBxFRcp|;V
zD^dPEdI9}1jnxxLtth^32h6^5dxk(&<GFz*_xPdw%lTiSzK07ZkFR|NJuTO|qH4>(
zQFT1=r5mYtG=W#I)C8amK1sDQ!DEw&4q>@c-HIWv&!)|eUf}cqUJ>`?-PRdsJ+rO&
z!d1u-;|AReyLLHq)-{Qm{#S)q>B|{TM_e_Jqdb*h!fth*tRRcb9VWkD)w}Hr@~W1N
z|0^fk<z}9%lgiJ%+C4sg*MOs1s`17ti%$8yuusPefRuCs at lXD}l-E8f5c-Ozc`c!>
zr8IfDG0 at tt>f0>78!L#7t>JLozg-B36ffrOF?3_~M-XaO=(V{eo=&AOu-N29lKnyF
zt1tA$9cPJlCV7B`5pa$dusTLU-gDNK`Vwk+f5moM*8H<khbxtt|FZLPcSD970s^2}
z<|;dRHXzXK!*;&BFE8%%<@xv#z-ZGcWhBM$CI~|10j?>xcLmy`>?9ViK(&+DtFi*R
zRMF|ROulL_C;1PMt5P5OXbI}0+Cd4<O%gO56}q#k4LYfOzq8%8TXZ^JduB6tetC?;
zQfb23J?I;#LiwgAKuTpis%{}b|4KztK%1meS$Y!PF?S^ikGrG$-)bF-GnV{$?54zu
zrY?LS^%VEkll!Y=R^HZBI=y)$gF9_%aYXL01ce`0otGC+tc4rl6LZPrEY-9;p69X6
zW59A6sX{>zhh8-{9%6<fA$<Y~FWq2%6KAtVrwz`*qORe5rg+SX6C9_GX8fA5S_PwN
zvEi>xoJt=YQju%9TyhX`W2<nd!`pEQT`Lhw*nqXb at BxQ|qJVMVLY=)(BuB0w%}#}y
zw^~n=W=xsedz1nU^THY5s$-i(!+Yae;d9F+%)C5aNiR@{h`0u8Bz)6bGKihZ#M8&Y
zIH&Djkc>v9TtIr$P$DOeKe|GlDyCBjodO$DV)y6L@&>(H$UQu-I1X&P<-e5Y8AJ3U
zySgniuPv5nqiU@)zYi_QJ}Z4{=!_ES0`G}o04co{_Z}UVJRS6$6EEP%(Ih4Nqz_T6
zjmWiRFXJ1ED)>N!vKC&-Ls-j6J$CdYx`?Jj3iXM;cj^?oudH_t?&9xD#;+%#mx0Fi
z1LN!Co5wN=+P867S!s*N+)X%RS$L#fV&724&8i0-XFCCH3Xl at BRW5<*_A?cFLu&HX
zl$6?_OJ4=bw`l8(y=zTw2Up5GCgw7oL4d>0L?ZpCG6BO;W_bD94$ldnI`-83zsdD!
z9;rks3q4UUpcR at jNQ|3H(;01k%-jZe6q@&HB+S?~b`F^-<XWCu8T^A(C`)Bjw46p#
z*Zk_<P%(5_ipn4&p_WK448NyS)p_eY+ikC6i=5ECZmnL=MPgw><D~#Mh|iyu3WhYT
zMBW`_3EgEJkE)|=dK4qjpHusD85M1_t8!0NXlR00Zn`EXjgyUMP_XSl{ArPVPKC*w
zd<#i{mN1pJ;g~ACv+tZU7ka7CXzb;9fRn?cm_3LGmAAzU_DObb81K0Z=LbrkEJYg4
z$T$R2*t9#;_mv?vr6o(fjN}pUiVes}1wnIUj}+b}D46Nx4nwMOrcsS$uY!0Dl7L|^
zvpBd*chM+RpI{aAw~Sbo^LP4)2Q<GNJIlI6D~stVOz;@A!!m>F{N{84Ys#=*JH1OV
z-n#=udWx-y_y}G9-d?ZAAWVp!>GZs)qS8TQYu;ps&5(08(N$h1BtY4c&i3P;X#<Xt
zm2$^Z2hsIOuiwD0^IzQC!ffVxcLf2WSE>D1%bgr!A+E){L;8q#>e-TdPjb~2Jn83l
za-}#<Y$XIkv0+?L$<jsmHhQtarW6_Q9+i3 at qxu-bA`vl|C_xD at 8@Fu2lX>ROJ!q^W
z-l$%>kJ!B>i7?qp0(xCTM(444ao^esw2ao%6GAI!XN(o4(eCW(KHl!`^n~;I1Sx<+
zrk-~;WrbTl$LXx1#0#@d`c~+dq*7CN6%rXl;>Q#AP&%7{3S4Q!2dJ)n1L;ph)oprr
z8&{BvP4?2X<8sYg?+o<>Ry*gr?v|`Y2iZBB!hn0<*eiILS?CkNZ(Y|fqHystqm$i6
z>2G$k_|-_;P;9fxnQi)HRrtf;NGuCuuMc+?jJO9+OJ0I&6 at o6+lffL3j@wH(Xd1>7
z45P)yw)ns~H#*&!?_soO^{ix_Mht9)8(7R;j^w51-P9%&3CL155`&SSehBlsgB~OE
zP2>Wb#GJ<dT|k+PseYCe&@N~1=$LghQYD9LayITrz*H;~o6m$;e&Q0mRlY<vz}|eO
zB*H!ctnle1B@;UTSz>D at i+h#`>7g~lBktJ*@_6JDhQNE~bpbEPt}Yfi={RJHXIA$O
zVt_U-XBJnq%c%ImIi9jW+M5B>KT at jy<?M2I-%+hQ+^bFt*j`Qq<w97Yuh*k^9fjM8
z2Zt!%sP at C*$jedGKHso-q$0R6Ne87P82NsCduR1kMpr-HuuzE#&52)&%oICR_4_;B
zg}?Of6vyj&y4r(Vx7r>@n>|Wdkg%6`4qD~06m=imw`*7uMz*zbv!Nns*QYPlWzQ`w
zZ3}8O##P2S4mRTRdt;YS%~2<xpm3s6#Xwhb8yo?rmn%9Vbi^B?mBa6O43MC5v&*C4
zy?hIzR7sXDnXJ`k>C(qO*c24KM^kv6mhCZmGbtRVbJyii`Y;lB&83^rfrfQgrPryO
zY?X^r-wE|I+jR5l+ZJiQ at s>;A{e>aiJ?l>Q_z&ax6`^#~Kx!nnDIm6^q>ipN+{U;{
zQ`tHq!F!Gz7N$+^&yJ}Z!X%31sFu)`CUpnT7mrz9C4>vF9~F8y)fJ?o%A at o(B)=^b
zAmRZDA<F5oa;ti|MO8mC0z0w1-_Ro&-d#x*ng2_lX}BxAb1L9 at m>@Zf*pH#aaK4Ct
z+h_LC0^pGwo%FOTo2C at J$i>B;2lX;*lZpDZpS#XCACFglM)G*CaGi?c&PB<6Ty|K?
z=s>sEViY(LBrnZ95$$yQ2WY1kw7(^8IE)WC!&YZe8`r`Vfw8<b)|VU&LrF at uV!AMk
zo9F}SsNZgeR(6syAsYlzfT(4^;M~A_L{vhP7d!y<!s>C-Q=^GExn=v|KkbLsz#bxz
z#lDg*)zG!;fo!7aZ2_N3C@^Qu-C980Ds(YEh2a41u=!5tT35)0RPl;A#oX&74NJ3w
z?A>s?=Gos?yj`VBrz(Mnb2D5ss>^E~6m;5qpA{tN{%YXLTj|1U<S{{4Ku&vCB=jiY
zhI%d5mWrt at c}X4jfmMnD&tA1^w~d at E25w8-XSMa2tmz~USgPi^S at r8o!<2#9jTYFc
zWFMvai6PU)P%P=*eQqdtem0<e<<`Zbo_dT&^*8(qZW#o$sLU$h?2+VhMo$lfP7*(-
zOC^3bmOVdbz00&4cV+khYZY5sCOzK5s**DWJLOBOwsK>-u(pn)<|0iUaOF6U`z899
z>6n|Gc}@_a6EA)O0}r{5Q2u50YInsCU}QLHjy*I2Pmnz_jBsc7W+jK3`*#7=3mU&5
zjs?JP<-j|UPNlP5>e!uj4V0<}S(p?`$tcyc>E4s$0xeud!gU~8(Zfs6y11Z=x46|k
z<o&l9173d%ywvDjf((^~{fwTsKIeT6!{dqT at m5#^CD~- at hWWy;YbQr?<C~`eq{_|I
zqT1KkCQ6(fgtgS>gtf10c}OxQwb<c?az1U|)|mGc@{W;PuUs2*_AZFh at kBJmvf0>}
zJ)GErTxN7dz;~%)NrZOg<=AT4c8*uLz?O3xRbnRjWmrW1rIQXs=f;o=>?$>e=d__n
z`X-W~@|iMloVhwlOT8|t0P<Q^k||@JasCpj?2YrsO6pauL6IZ{uR|Dt!|sV;z=SM1
z;S6&}R7MrIUvj78RPXrJoy$7hbetYPLBS%y_Y-i;i}l5MT|_NKZU+j!RN=}ZirzPk
z3TTznO=YbJJ^4#3B at PeTP8$c2AnbBN*o at Z_Mp0^r%5htKwt87DNy>MJxHA_+l*hV(
zN<t(`Q(ZnXG&JVi{8Mu_Co|f8AX at vjs*q-JBRU?K>f>E$b6tTdFDHdXC#?Tu#p63F
zEsg~{lmZ`!N)4&gYF9Kuj)m;;kY&Wd<_INCZLezc?nuh1G^c{F&mo}=8lR<AFwe_L
zu}<_z4XkjQRvU9Q?`S7zGKU8)liT2ij8Yn8nCJSyk at BP}pO_8*n5j<PgA3k{RGS6V
zYlnKrk9U+Z9Nt2H%R>2w-MF&Ax4r4tu+;`Ac-LG`yv9spCYHqGj_$cvu%D;4%uIpY
z_C1&sZtcu<sMFeP_eh4aa3+w!5wD$lf at Yi$1tfJVlh)Gf(t#6{!);=z!L(#c-A+&X
z6bstK3qe6qo48cfW5d~tn^pLA!w at BdL|b!6yqW6+uC7lJ6Y$$G_g?j+vnOo#P~bhy
zuO{vsf&%D-Jf90UF`a=_Y>;1rf<b`O-Srf5q$9k#(y3&8OnKS8;#G}-W9%quiM;gb
zFTZG))L`~#(J*$(rIvATkC=Ih-KR7==oP>8KrJZ{J<=R$SQ8uT!yQVTo+PrA96UXe
zU)sHTeKgtCC08pd@^Dslok3s!D06StvoH5F*;RM0f6`HQ<R>P<lC75KYXK(?+Es~T
z>q^2pD>-HsGr7vl6<!f;f!xzWa$|V>M=RwLSDWG0^XiHP^4L`vMb?(VK`|0|$2UiP
z_u2ImBBc!XVgVuxFfDy%et=4-*~Bv2#)*|Gazc2l)}R&zrLOdNn_X*eJ`qj<6_>Gv
zT;H>E?()J0CIxII{Cbw(Bnn7j9MIXY=K=|)O$g6gj`Xd|;FJv+3F#?XRs$8<e6>t9
z2+%yXW?pMKz%@zF?D>1*{X*4duq=qhowB7xS}WI}bdQdwxp>gxJoTC!Yq2ZaRYL(n
zQFK3LO!k^?=He=WlkB;*KW%SG_Tz0|T36?*qsloWoS9ojJ85r(b8nE=6F1JgLX%Zr
zR#*i~5C26mg+g{WVxHppFkX13T)!xiLOiTG#-&x7(*H&%e at O!A|B)Em-h^v?IM_&@
zK0<l_nGO!4>40^8A41J>?(Mu;$poQ_^ly~)=>NSAj`G+5kv8*MAOZ<-m5}ZBoab)f
zJRNyr;P at SRz9BD|j;0IORrw_k<XgKFdFR-PpJXMgy6O>>@B*Z)+nV&d?exi0E|D^$
zcGYp=0zBtnoH#`yxU=4!NyL)_N#CKG3d(V<KHsUd#|o<Ws%Aq)?_+D98o!V2YCX at H
zo;+(`<(VG)7aDkuQS?!<xb;T$Bsh-RFdLA$Ii0iD;Uze_Ibxjg`a~>1*_lEX5CfvZ
z4oZq#;Q%<gzA2%u6{?pjDZ7&zSnSf}#Sh9F#pm`6C_TYbo<f|VdTb;H&qE05HwD?p
zY4485jz)dqdy=I&$Q|M~RPPU9>950)2=uT2G`wIoR%#dN4ocLH)`MPyzJRt2LKKfS
zIbkj2<-nV0 at y#|&5ud9g++sLw0*2M$e?V$wC(CcKwU&lVj+{J>ddIuu#_}{$i0?dn
z8eVH8=p3WaesKpiVE0B>m}Hw*PV8$o`29Xr$84#<qdE`!g%=Me+<G3A*a`}|mlcp0
zwR8lgK2a2d+ at GStZ<5nE%Diyg<rS-Bod1xXYxX{if%UA=OBD2MIL#EVl=<7mPD#Io
z>{&H at X*pU+Q&CzDqz#Z8J!*3>kHKJ{uQM2a4hBr>GAhVpA5gcIom4&$trkbMS`oI(
zc~ZqjY_+>ypF${5z%{D_V at se93Mx?tNbT=#Lke0{W~}w?ewtPD>smRE>m6|=yN3C-
zr0BlO(7EDKE7Kqy=@D+o#)kXxV0M3EG#O7&Dh`U0^j~IJ5^got)c>!#YYCAoOUp6N
z;M;Ko#X$!wP+>qi%^UfuL>KkwC_B3=tCGs99+}OZ$cV_yn2JYsL}XUwETnfbpfI>`
zBZ#255M-9Ra$E?42(ui}#elkVF&h=}F at FC!=RfB^kNb?wvO4Lm8yR^Y=brPQ|MC5=
zctLKcm2C5U?F=`Ju|i8pqy+>Kd~NnSffQ<ftPT+6BctUHg at cg<Mq<9w3GxCFt#9RM
zKQSX^>WiC>BK-xk<h6oq))gbrB`HD7qwB<QtJp{79y7>F1xXvrTxRV|3bS^ErsR7>
zwRdgZS1R1BL6k at XjtGgxA>3ALZeh1l!y(e5_ax}=s4d>uMYwaC?KFxI at Ls7fTP*Ug
zSLPVR&J61V>24hX!7z@;<slM_FLf%6PQ|lRjG;A#1Q?|uKIDZ6#*<p1J2F|+*j$l?
zx<$aO4d}q02}9aE+Kz at +wOI=(JCOBF0uF_wPqB{*tlx6Hrb-XixR$G~4RF1d4!9=u
z at YI8PZlsbf-o*#zq-vH}uqx%uuyeCZsT#qX^^ws2{7`OiBLT5*Af(|+L}BD<NxXr?
zkl1r)MZe`VSzJVf`I6u*o|hj{1Bp^k&NthJO$Xc3Bw{yW)2d#CNuU at vNT8@9lOoBI
zmXVEye7u?fIbWg3^?83G%C4Y3QfBZ&T5Yw?s9Ov4JkEfdy_(9E2Gvx(P(7}mimgoS
zqDn?w$GzU90Gm^Z1Pwc=ygwbIH7ue{R1Syz-ehh_<)l!OCwy?#vfP9_B}d2hyB&>*
zpz>BK5^<r(^vkeh-7k+8bKu2f7%d?`V+mS82bKCP2R&rQjd}o&jw<7w<)qqEXQLjV
z`^{Wr<7uW<E-9-RuMiAie*$abC?UiF=K0y|k`hWG8cmH==O)4?k$kge)C0|6!{T<}
zS}3uKp4Bz#Kn*8HS5uMYx<Ls5fmzo?ga^3OljE_%a?ptnb+A_l%BC1UOO*m}H0nU$
zEPJs;xKMxc9PxPUFK0zw5>ioVY^(##gX(+*bWK$wcpo|)X0^I)C|ZV73a4}JIT0em
z52>~yi{te)S2opZaLXe09~c%!7jDG<eXP(&HEsFnw|fUb2qI+q5J9N(m;H0Jf9I^=
zS}JQ(7=zvat;67bg{n~kV**j|K<Sj!c!=%b0n`49M=ZaJGcssKoWl!-mb)YhQS5cb
z%l>3`Y4il=4RTsWnU at mKy_dQ~d&bGpI=q3SecV+y1r2C(IF5C9y at s{#w&uk0Kr7@|
z1C^$EVHzRtYSt$!X>CFF-C7M2%2kvbQT`Z3D2Lk>Y~~YvLL04GXI3;p!ytYe90ORn
zQK^ygS*cLmeB{ICpT+u{_msrT-pK5;vQ=mHJ!eN^Kn-T!XM~b{smQ-xhd9z~9%crJ
zjVZ5DiUD^!b-F`a{>nN=A&aHwDF9r0B at +{(o%Fs0I0oVEQxP~Sp_wmX_ at NNos!ur_
z1gKaGJp$*|197n|X-Eu9T7Mhaj?bR`#ODHxk`Tdd(!bb<aZ~8cGQ>|J_apJ%RfJ%+
zyaO6qFg at z9AS-lIsCU(l33sLqq6oo9pV5SqU{(T&5f|;k>JSANgw3sVo(l)s*|qTA
zD5B at +eVD(6?;{1afOW!p-LN23I>upt`BK5}q?KzKyF<}6l02iBJ7gG$NIP+=voh{J
zM_q;C{FQ1Mwz_+IIU7)O+=E9~lud%TT@@pw-Bd#F^<4NWwvbv-Q=){5xfCyl?NL<C
zO)g at +)MqA7!F1N3b<Lh`z~HlfJhw{&)4`cZQafugb|V}(|1RZ^o3DXJx)*3MHlqvk
zB01esyz^bE(MJ)7ikQh5O|o`>`iuZlTCUX)+U at gTR}*!v6+Zh6{xB5fCZys9;%CdJ
zzsT<Oky;n7(#Z1lET_cudm at wex9(8cKc+&IUUkEOE6LXLoc?1)s$)dmjGEw0`q%f*
z&XA{u$i(H-*(6Rp^Oy!%a|sa{apfxM$GeKh=hi_!&g5F^lYDv9e79KVlXlxDX2h}P
zr{KJ$oLTV0_}%N+Mn?QM&8Bi&yoAjM#6%1r8FWgLjr1P)nVBgFk=4zRa%<t*4 at ZlW
z`4Ziq2pFSCSHyD;&R^!I{qe+Vs3=l}h?JG0N4KJ>rFu$Q1F}?fU4gf#%!QZ$w^erT
zUtC~kVBdLUafCN8 at g(kTV{)kQHRvhe1yIrX&Y!IlNC9V#k#;%&(#maSN%G4kvsvyb
zF34To%})rI(n<oIijE`s at EV^`N^sC$hIQ$k+U;IEq3Xu(SHvX)bkMwK6CRmAKSUAt
zC-3H at c!A*2EsJC=d_fGaQrLJ6&(U+0uZt-;`T!`aAz0noS7Ff2RLro~7IsmVU-kBm
zQQZ)|J&62eb`0X$4|RHs+8v>_5*BXucdy@{gwg1d%`f?9JsmF%TN6{L0b3)eozh)W
zuyuV(@#QH8>NTMh3CBUXH=WcD-WQ5c7N?(@>Tp!cSVi{g53p<12WVIN1B8|S0H&=!
zz{XG?w4S87=mVOD*m{hgsv6L8(TQdaXsytSEMwlOPC)o(uTNEmFp6#7c<m~<7 at M<t
z0vhh8ZNIdME^0y=Ua+m!RRNf?v<6Vdvx|7zjX1mo=;rGCs at 6O<>1zg=jqGFeQcz`v
zY!~vRc*-)Q3yoG|vLly0s+&pBlBE^lBaXbVG!x#*se=7Z9M#L2Q{E7jwzjw&ta{T#
z0=2)AK5?dk?4|i@;^?<>D8==H=dJQgtl3S>o=%yg!khAIZGyw($NihWdXM at C+0e8J
zv at 19v$79Owa?6lCKZgt(lACcs-s6WTFrmK^C7MxMswe=CuF11x1!p{4=O3Z*;2{-a
z!*hV_UMx|B?P|18b;AiIT07dvxS at h*qYvEVIwfKcg>sh<XF3Jh2R$P;lMee8+O|(B
zhJmZ~E7{Js<>oJEb5+=M<*3+0TLYIS`_Lq6`Fy_u?o7*m0zzxZ{%uk+S at t79VlwX!
z`&Vby9MH8pJv%pA at CrlG8g0e7+8+Mws{YL8+U-ROlxIqNi<YoWs+O%VtTNDd>v<K7
z-!8?ht?l)Q1A4kpN$j_Y3`4i)3hljMt0dmP at cjZU&ETw!w6s#TPudlRSG7J7;A>Qm
zNLy%nqeR9i;f%2wg3Z<(tVgTgLu0k%eYE{km4LvJM}ukqfKsP)R-DSjrD?Jh;nx9E
z0$at)<%g<XE-48Ik7YDaH-Ajomf(j}M+j6IPHMCXTa&y`5)KGc>;u-ZSu0dSdV$cN
zUcQ|_dhw)pyuP!Vjb?Uux!F=8VLm}1kE&F)Flc8}VrU#`*7N~Z7Y&tM!OGhxAOz?X
zc42{XLVv5l+k-YN(vFJAr;ua#9MSUf1}p<oWi*RZcuQn`g+Sr at h_SsC*wj}@#|FtN
zfULkV7)?Z3wvY9*6({@1P49OfVuat5buPezWnI;~8%|j)ONFA<?B&?$R{V0_{)leg
zngjVH#;Lru_>bV?(!9{2B=D|{kR^-O9K at h?G at zXQ=nX37-top-v!9a7jG5|HRG6tO
z`vY?YO%mhoJ+|C0{u&$F#KCp>Uv+shFyjf-yr6Wj`hw<OUt8V-s0AAXn2Clf+_g;_
z!6uBqNZ(C`plJX+06VbVZ==1%+TnS(v`+%y!pP4$`vl5}*eT75!}4rE1MyYA6n$49
zOvc%%jCC=f+UfUI&FgurS_AW9YbB=2=!CaUiPwqLRA!NpycbM2ai0pl!W at q!MET8d
z_HeXR(1urt+IyLZwN)|aDnr%^{t9xV__ln!oDYy>1ekv{zjUsptuU{-%~Xxfs3cl_
zkd_>zs_^IWYWU$8-mf|(g4dA}yqd)_!tuR8Uy&MGArma=+Ls`ph!A|_`n~>AbN^>T
zaWU~L0H{QvbJ!vmsuI<3+`ac34<F`R8`RH64%ypcFrCdJ;U(ep0gg3)1vqr5{8nDH
zS8$saR1vzOttsKG>8z{aIV6S80NMH8;cy)Q&F#w5AHYB>G{?uvI`gv#eTa(+2`ipg
zzOyUXgi}BC#F|D!$e}|mP7M=|T*rv5E~fQ(wSdbJZx{I2U|<X=S=**(q4x{9<PMCJ
z4K>Y*1wLZzV1b}UZZ8o_j({*wi7C<LAn!KJ9xQIXS}ScHT1UcAG;&yND~ng0cca|y
zIy_EpnrMTvy)El6>F9}J|0vuy-u{bjRmJoRjlMwBV6j&YVk$%c*f8`y+aizJ-Y&-#
zUGfC$5&LzM!p0|5 at 9i3DalZXveD>5R4!0Yz7{{}$!I5HTV(Ml^t|}j!VY|11?d>z@
zh(HP(f{Nm<{M3eFF6&Wdl{(^hVGVtR^j2&_%_1`-X;FBlsZ<W1PJS at En!g+^fXMBv
zE<tjr at 94#dfWhNG`UxaeG at n(&=1MtDbLXF9Y;Qbko94{;BLu at r#3HUo<7w-^8I21k
z-;VTe7E~<M;*T=@me;dE?`Safa*sL7+#ysxbJrd#MxWp-Z0cd$M$w;PZ;*KCa|)}^
zZV(m at O_&6 at 0J?5!&oGRk1;Zx^#&DRt5H-8+j*#hT6h4$UAHm(LT305|2Je}omF|ex
z2=u1$VA-<j;L)R@^fa5EswC{PEqn792*xvFk9T9Jt(I$*p*t2=N2M!e6k*z(*fNyJ
zu at IXoS3cU5_G9=927aq(PiZsLpvH_eb#x#Oi3SLe;fM+Z<CE|%DS2}|`iQ=EtRe^t
zq+Q6cKe?G~?fSfb`TF2}i~8FrEllkIHq~stm4DdHy2};91g at cJ!EdxRo4*P})O7ds
zo1a3Nzuh{Y75?Rv$+n5;RRkWW!k(s;EbjpmmXRb at glklLM<(ET?Dy6wOOD+~a=pSb
zvz0eN1ncQNg&KLF3DyfMP#XCy4aheUYU^W7eC5J`T3>hLn+f*gOZDb`q#VKccOrPv
zXa_!GD!IlMMI>sb!8A?QE?9t~OV+6p+hPYbwJ$HCNai^8NW5xH(RBjc4Xn~o^9PsX
zB6ss7`q0~^2=m?%7`oHefIet#4X-bK1-{Ddidu7nndU{U#k6<}0&v<8iMM4E_FAY^
zv5Az>qwM;5L3!Dxc5MTUBIUtJNs|4pE;ReUsg|&k4kV{BA$|Z>Vt`frirEKRR}Im9
zD~$GW<AK0R#^I(4B%464n~TIvGWTPO(XD3hIPLgd!Qj0JCb{e?{MQRE0{!xiG at Vg_
zL}8IsVQygwWvPkZdvKUr$l2C~d)ObGQ^PHRbR<DmQXz!mP&aX&;soJn`>M%9<hm!#
z at 6@Fd=(_3&*A?a<7sR)acST`eCzOSN%9^@bI_*#in5U+t!Y^c8S%r{!)rPz&po{%e
zHGnQbB}Q>ilIyb%hIPnw=xHNWL{<bB`7+tMY?|8AO#OZoqPJ;0cWm;-RVH?ged+}u
zhKg7qSFt=`f1}yZ7Yd1L;dP{&iKJ*++QMn78FjaKcXZlELpcfrR;C&__+9%;FwWG@
zC|b(^7BQ6BbSYb~07^_YEI^fWGeK@)d|TC)3}s{xj8zuJfDIE%(iSkw&O+fVP^+r&
zoy5XuH>+`BRlRI${u8Wn6PG^KRJ;XDQ*LurkHTo8lEbH at e=J9R-8a at iD`bLEK9!E_
z_FQ4}70iaSttAFn?Ef<AcTkj at U;u=yUG*oS2~F<nAo0C%UqRS$^jMW$CN}3=SrU%o
zcgD;7)qDZ4vbP0Kj^bxlrF96}&NGFYO(t}LP+_vBm9Yp-fD|)&_}Y4|VeugiA=l;%
z$lYjhIGWBE*CJyB$eaHiHFq6MFG3Aj*boWc(b%o>?7icfRS7Y>*<Ix23{|F3u9WkW
z$tWytwUOzRM7vflbHz_n*?p$^p|W)>)^0z4D~U2urA=~&u!Gj=d;tOG74#@H+sOd5
zSffeRr!N9?)Gu!n#|daIAt=PxVk}&!uzu8T8|qa=d$ImtfF5K;n=IQ at Fg0&A1Bh8B
z;>AA_6C1hs#|xx=zgA{}zomkaQDp$b6j=vs!&Vu`)MnG3>St6Ki)E}vy!5(4w$k}l
zPrAC6b4a>cAvON(+z4HGiSlz4O-1m>^73T#`T}_f at G3n)V`K6lshB6~!KEr0dUG3z
z;@0X*h)Oo-I4bpt6br4V9TZxOl)dfrfdFgI?s5wLd at _MASSI14By>&f0r~m&gK9!u
zla6TFE|pZZS)FQQ7jhp^XG+^_zF2i^pL!7;YAe9=j35pGun6BmWKWK!&ZyOUHiB9m
zFh(VtVt&Rv)v at Wlhet0CW~Xy72ufrObgHJ+V~x(Bg}j^IXyOX7b>D1eFu#GRwVF at n
zuSTUXnhyM#9Ou#rw2zIe at s(PofKeZ!E^R6k3Rp5hU<x^;YCBHI!(!(&V#7lg2aiq$
zU>**BYOA~T%G+imG^meVq3B7J5f1i73yxqcWTrL;;z467Dy9|4KaFZs_(#<Pxa;Ip
z<!_PCt)YfkWcCNNXpEo+w7AxG(g>gI?IzS1X&K7mQniSwm7&zypI9#LLTI8GzJJqE
zHyl#}k~JLw=4BlKh!jH}EEdeCZdqLNMvw#EX at ajm8oyp$E=J^`dI1j=urLF26PNeA
z;*GfrhxQYraC_T8uhwrP_*d<uf?KOQ+k5iCi^)}Q6Ha*z$&0mV!QhP3M$rfWiu3t$
zMT$$vc*GQJ=T9EpmjWjXD<z`rHHASj<d2F_i_vLss<^RLVw|17tBeodWyOIVFdazo
zH!dnENoub|MSd-lKooo1W-_&^$}}t{?JZRIArvSiWO%wPQ169bsSqGj1t((PA|b7C
z=bS8;&YM%bqeXd3pGNk~)>rk{-qocsz3tzSC9|!D(Ro#w{4jedlDL>Hc=mQmU(HXa
zE9k6WlMHjCyQyBIL~E>TRW=RjT-Rl0)SY4jNHCjN6)v}~tmnvV57m;UMk8oBwZXim
zAY;H}hq*1H1ZU at TKC7LgBVJEZ!8%bKDK^59j(WO3>5-1xRK~>%I52Tk{$|d0ZTKOY
zwhhO9UFeoEAtQ8gjR%D}h%xTPq>M8W<mJxYc`%v{&ZqswOP!gM?IGyva6BU)+Vi<C
z+DAsB^ob_waS<t5zk5Sc0`niwm#S3L_5mVOLNGOWdZ1Q8MK@}jH^u}pg?eYDON@*G
zPR>oZ#3aH|53^7yxqu`l{lTa=oswrv?pYJ~ETNgEtb?uRV!kBr9!w=PoT5k!7|w=N
zZHN at -X(aTNZf1H79xdhssRC~xdTJjSu|@U&gjW=;X;Ak=)ou;~B*?*|6%?nXLK$*c
zRK1mQ!Jx^8H0>%t_~38brKP<ro0OHBD3ZL?b#fnv%de}^(<tql#+6g#4I<9ZETCSf
z4L2t%Ya5cVv7ljO%rGbkZ_!^|gE+=3&luZK8F+HE at q`zl0D)WBpmmK<fEF~jw-}+{
z(G at s@Ts6%UyhU*a0nviT_M&%ejV%Xrz#(fjLUSlvW at oUvz8E3PQNBvR$R+hCK*O2e
zfv8JHxU>oEaXeuRK8CEK<ee$osIuGC*bf<Ucb29XN_$eW6J>i6-|PYfOg>TlrTUpT
zO?Ozhc>0{6 at A9P&<(*Y4qv($E`?Mw at -#y_TUxS7)iA)1^!=PAM_PSqq?T(|}l28(E
z=w)rGnmX_5*zHypI#8$MS^lcOm|kAwD-xl^#E&J3!P#_w1|RwgA&!f3utAr|;xbvZ
z8_Di|c7m3XBb7AKTuQbqO>crcSfrn$TX=ps8zXlEdG1T3dL!G;j4M}FFkM$Zs+CIx
z>}ev_gS4dM0*GH7OuornYq&&*Y?fp4v<^3uxgwMm%CSUek=_*1qTc>a5WT5skx}lG
zs5u~!K8Bev)aF!z>?LA<)P+0E{^&0?*dN*!03NcHl0Bg)Oq$1tWgqsfVRL}@Kv*{i
zow)CxeSiX00wop7f}Mrl`_EK`MpZCW2wn>JZ$1-X+mt|rn&&Sj#L4k8!Ro|9G19Z$
zn{J;?<|q9LZIKl^Hp(yy$3Lf-`f0($Kl=cGsh;?$C+j?FiWH7e>Qq`;q-YddSvUMJ
z5=q4mD?zuQ1L~!+s<DRFVXKc;2e3wvj5t?Tb5DoI+VdRIWLxNtiD;)w*&kEdV~L_8
zIzGcQ%fPEp&|^3!jtQ+7tABBQKvlz<)8i4<vI99PU%IX-STYBRG8&RxsmzA)1Yju3
z^UKpyBy-EMir^eG3J97wc78OCC{<O)=x(91?{b7<A^GZ+3Km0n#o2f^I+#A5ZgqQ)
zr at P&4{JXWkNB at GCPrEz2d)s%ncC#J)lF>KY-Tm$T-M#KUeM9GUcei%;yLWfD!JMb+
zyzR|ycW-NRZ-;J~-Btf&-R-Td?#>o%4K*{gV`-myYt_7VoYA3+ZF4sjzS2`sfz~>f
z=Q at W{bxnnO{Oow1YTSBDvX1qN3R&kH!GQ^CD9qdR33+u>N}2(26$>mawK*LD9K8yC
zJ#T23%@k*+ObW)cX*txA;*nGk0HT#p3kYgs5C$N8F<wj?=@ufUt^ev}<W=*y0jQk`
z(~ZeX!_xL%etLmM^s7_qg`%xRv=%khjgBQnpA=HG0HXtf0^4S*Qk)bCt*V4Ag8*2d
z5nCwLd=C{rp{4h(dOPrdP%pmx?Dgv$&9#^FS$~2`D*4rBFxz5Oa`sG(0~-!mOFM1n
z<kvidN^mG-dY{Y*m0t98pmdXjAfs~RDl5317KGdSTtL3LP0SQC(|Em1;IUo$#5*9;
zcs%<OEUOn63Y!d*S`uuhf=XNxu6?d^Y^82 at yYSPSEm)FK5**y(2-=*W;Os)v5`jQ4
z@=oWp<X#`l#!Je)TG6DNSAV}N_frE9@&+tO0-S>}CDxi~gH-fv3v={z!L|qtSafhQ
z)QWOjx`60Ya15nRsy(K>FM=u8cjuR86SDPtrR+nec?csYm0=k+?zs(Et2}tLS^p+l
znl_VH5S79)5NmZq_EqczwbW)bit^mr!J$O!p)%M_Y^S&B{LSJxt!0l<Pn;|}BH{cV
zid(2Xtt{yW)@5i4gsTMUXp4JX9oj%JSjf<#xWI at x?At9-SO$<@oT{Xx0fv_KQ=H=B
zjPA%|+I<8wY<aF_3HTmm;oO>P7z8L9#iUw;U7P=ML<lYOx*eP)FL%^ip2sVkQedW+
z;HC?_bv1SoruJG|ck1yTO!)QG88J9VD6t!!!<`&ibtAxcfMDiD8p*L3oKTGt+`}L+
zy|{v*XTbW~bH4I02A at Uwd?VX=FrLBZ=JsT?^%JA2;AvI}ntR!0Dw|K at C>{tH at vngA
z_-3{LT7E;XG#hEt)g|075p%1W8FszlWg*IfbV(gPNM&_f0YK6{7uQ|$NCcZULBBhp
z!-BjNgiHl!WJO7moxub>or$@3^8*Bf;D2(Q$>GuKyN%<>qI)!2oEna>L^XFjdJJRh
zYa<RfNG0rLo3r_9e0q)E-%*~aO5Fon(nW8!zltt6ew?q$?o&2&DvZ9Bwn5oME4Z;K
z<(tQCQ_E^=e5z|0x>}AF1V*a+kk)PYl4E(nzDRMFh)xrHCA~}9MMsEnc6URnqRf{#
zm+*K#L9 at 1iNPOw!k+4%j-mr0`O7V}7%Q{!hUsd3ivti^Iv+WlVZxu7+$78Hn$EHHn
zH!1kW|KO4JTbY_lF}fxrkJ7&S)Ppik#v3pDtJSpyni37R62eP1iSTSTPiVF>G`htF
zAIR8%zNh1veDm2CT`|#I%wM at zRJG@X&JgYF!qhC^gU_Ya8wA2|qRtYjoTn%UK^WM~
zrE_nEHO%9o)k&u_X*$hHi5xsfNcRY-iORcxHo24eZ1lX3Y;KY?6;OXn5Jso<2_nUM
z?;7yT4+I76H213-pDJlVs-Kn4vqVLyxk-jI{duz;tvhf?h19f%x`0aFzqp|MRmwdG
zP?081Z;dKwvhCzAX0K3bHK!bRN|aDl>nY;<)~ur-Xo>9%G80PieNrtPKTf#en#VO;
zp<Ae_yga_VPz|=Is!m{3Ns&P9_tY7lEg$cc@}P2uPAb_iUf1U(TcqbPcmRE at GDAL5
zFpVO3JCpetIu$%Vcz`yX8{Pd5vjPBMNmf7w^S!3e`*3kW79#PrH_%YDSfYgY&BTh^
z7uC_?-7k+8b7iW`hLpdtMhl<qu!WEMLi(@wR7mRll%fSTbAejWyEWh81kDf77+?ix
zK2<}<S9R8;i1b<;C>!>mPykwGkC7y!X%Ljxbi^E0#eOA+9hl%`{zKU_%Ai>1YAeQK
zsqd at f>uz`NBXGV)toQN!>|h4-WriT{tKPn1$2oRG`6f56&z4kzL|CGd!kBV5Q&{FA
z*iAAWV-43y#?|h`v&;Tsh!PqfU5*!{z{y3V6&FnjLwilplpCP41R3nJpg(+k at C+`A
z2|@{|0|$#l0yeiFFtFL1!5C99ON6B=s<r&Q+YOBq#4iJlx at pYjCT*+oUDw*39)OYT
z$7m>Sefgs!fvwSD1BtuiVHiy8vp-3_B*fIRd1_puvn^0fPh<17?8f|w;aHzyvfYP@
ziI>)oc?<I%q5Uf&G)C2lNl#5#RX5ZQ8w3@!!v^c96PVf9^-a>Kb$+{)Vad$8O_^EO
zr1O;!Tq!ej|KWVOvSm$GAlp**3SmPigOa6AMGF_ at R?Kn|dxOyh>i)*6iN_vN&+Xc0
z9`-M?OlRU8qPopQS;K|)qt76$W=3;gsgZkwiguz5Go%)yL7u8yA&)UoR0?;zb?Rhv
z`zlP9142xIM)|V&J--f?eMDG1J*|-=LnyqJI}v!dKYC3I3Z#$ZU4Vi?kEpeAnpTKo
zOyWlNj?ekYA88O~sLG&VlF`NG1J`e#g$P_ZYX<)o`bTZxl~DNpYChG_t)PbB4M8?a
zH$h)MnA?epHMQ2P5wl~Db?XK5rEKG!Vpx)r#-PbAa^3sO at gS$9FXY99O5nN{0&h&K
zKr}^FR3MAV(WKrF(5a_hr6rS)<yBN`IxB(`2C72WrT#wrPzBMjhU(IOvA0dS0JmXC
zcC1i+7;L`^L6jatq)lfgOPmtFP#ql3On&o%^(|Z-^vZ+F1yuPJ3iwSf(KLpp(%Zdn
zBTQ{3yIi`p*2n|E)+|UJaZ3oIlPHoeVp at H*IAChfq0R1Yv5b`1`_W~824~zD9(_}f
z%t<|GU+;Y4(mKHIwibv~Adjd*0Z?!)DBBkMT%(=mxnTkvrj;b{InLI8XwIUPJu=kc
z8a+FM(F|B&na^jFYg*%5qFP@~bRbN%mYAQRXoaqvlB*DX!NU at YY+bcZYly*QH^ITR
z)U8p;t8Q=7qF7OX>KGtv;Gua#i)xE}Rj(<C%qqQZ`@7OPkNVT`WIS4GT~YbrFHrR=
zzZx%ANUe#mCl;W7 at J9mVe^U`43BnA!gmrRqPcdc{I;Yknaudl_%M2<ayFktuM at u8J
zlO|fk^a?FX|G`d=YW8T-68=B(UO7nGl(G;huO_8ckiO0 at v$~nx63z}ZorwHi%2!b%
zqH?A!4QWCKf_%L_j`gw#KuP|buYJ{QpHidh7=blW)iGZS at e?K_?3V&)5?OUs9$zDs
zJhV`(mY>*S6lysPsdT3vFZOh_8;HycqsQ6FS?saEt0kz13jMeMb9Y9<pO>LbIe99n
zUlN9LIzH<SPogl_XxOc_*uah3K#N5n(*UYgpuUQAasuTOrBCV>RNGp`v5T2ls=EkA
z_M+cd`T<f&wvvjAIce&ItF)U_D>d^0O1}DrkahI|hNJ#Ko-6eY)=7QP)k$^93u+go
zKx81`6BKGSDgWs4+pdw+^XJg2O>xd~S#i#Q1Oi>IvEocDNGZ-`pkY%Rxk29n#~!-d
ztQLHz6&~c&w(w`U_wX61>Yiuw&X{_Rq_j at xFT&MLf%sH~GQH~bm+GKx+<-EZZKi+4
z({HUvpob>ZlxOv7RdKeg5^IF>y7fp*Z>%1ANQalFNx;Z*(4S$asU~70ZB%<P`~H%f
z4Nv4PC01e_750<0+=^42E8erp!C_*d8&`W2kClR$LTij3T&^YEkSKHdY8^;M5=A6j
zP0fxjIIdT-18}VfG;s|c$FsB2cHEwGm0*dpsRAw{klJYqPL_7x8%=;`t6ZVekWZ%Q
zsK~DHCBK`lM(Vw{l!>ReUd+(guHSFL-{H|>R_rSdybNbHmfh>s^t6hFvoX4+RpxyQ
z20bM#h*}Vim-7MQs1enS0{mLsQsy?bX#xqF1}+uF9OId&BSVeK+brHwaZIiorwUC*
zzK71n at _M@JpWuj>Qpa=t1e|%axae#kZ(y`>HoM%oSj<84t84Mq$>n%5d}ll~U)_Ij
z at D8PctJBZ>%k$30 at Op+v=;Lak|8j-=a5(Y2Uvm6yF`D%00`uu&vg&M51Z`&nA2-hC
z=EHI{=xmU6(Al5>Tbw<o=8&C@(RqHlK!xi3e2Ba8Z+OgLkZac=lGG{ORoyj5q+K5`
zL-*j%bRQZ9ZmEV0;04dpcSptI&c*;mV at I=9=VpF>9=G`v{{I1UyU%}Gf8gU6%=dht
zbLG!3;+G%7|9t&jb3Gq7<;nQ`!@=*n_+4IqZm#F!F9qj+Ciwjzxc+y{^?bY&oF88Q
zCH(#0zyJL?kN=zIdOm*FT>pdS7>>V>?|%&c^Yz~_58&gypVAl7JJQ_o^`F;Ycg8r<
zBl-Go|BU_vAHV*y=0tM{=l>&o|9vt3FTbNt<l}|8fXC0z;p1=N^#2vte|tk;&&ThX
z>uLP-YCL{@R;Tm3=6k;1x6Fdu<GwzVpU>Cx`~SYV{(-sS$6wVS_;~aa?)sm@$ME_;
z!gn-8zJKRq{6aq;tA9I0-}1*SkNxTo at JU{O=VSdRK7NlMXs-BNaQsvJF0cRG*YyeZ
zXwK(Dc>Onn>+hKB`S{(6=l^AJedqVglg#n6|3)k4e)#$P&0pbzH~!z&5B!`tn(61$
z6%E*5 at ZoRF^}PO_Z<qm_<5zx7p55u(@qg|7eQ^C({!U-d$Nvs42-oi)!t4LlTyKv5
z_}Bge&FJix{}NpP>wo?u>Ti6!_pA0)^&x!zf8g8C;(x<7I^X#xeLWw)tFChY at bmfj
zX-xi4itGR4pY`>8<n#Cr{5v0i64&ED`}}X2>-l)^r};{KyyO4c`2sGcy~E at 0{HK0C
zAMcojWh&z5G9CRHu9eTf^I!UUKK^YmVSGIwe>oU`r}Lv`g!=f!;QBk}uYC9wTu=An
z@!$IlU#E}vc;M!OdwiieZkp$B2H$_t+~=L(dwN&;kw;7W`cLZL-!#{M=MVLlzktL4
vn6c6~%>QV%c<l5&|7`xT9{>GM`FH2%@_8g)QrCa<CqJ%E*$*xVe(n4p$M5<t
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/Variant.cpp b/polymorphism-benchmark/Variant.cpp
new file mode 100644
index 00000000000000..66b0b646a4b2fb
--- /dev/null
+++ b/polymorphism-benchmark/Variant.cpp
@@ -0,0 +1,210 @@
+//===- Variant.cpp - Flang-style std::variant polymorphism ----------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// A flat std::variant of all concrete node types, stored by value. Abstract
+// classes are ordinary base structs of the alternatives that share data and
+// member functions (like parser::Expr::IntrinsicBinary or
+// evaluate::Operation<>). Dispatch and type tests use std::visit and Flang's
+// common::visit; membership in an abstract class is decided at compile time
+// in the visitor.
+//
+//===----------------------------------------------------------------------===//
+
+#include "Common.h"
+
+#include <type_traits>
+#include <utility>
+#include <variant>
+
+namespace polybench {
+namespace POLY_NS(flangstyle) {
+
+/// Copy of Fortran::common::log2visit from flang/Common/visit.h, restricted
+/// to a single variant argument.
+namespace log2visit {
+
+template <std::size_t LOW, std::size_t HIGH, typename RESULT, typename VISITOR,
+ typename VARIANT>
+inline RESULT Log2VisitHelper(VISITOR &&visitor, std::size_t which,
+ VARIANT &&u) {
+ if constexpr (LOW + 7 >= HIGH) {
+ switch (which - LOW) {
+#define VISIT_CASE_N(N) \
+ case N: \
+ if constexpr (LOW + N <= HIGH) { \
+ return visitor(std::get<(LOW + N)>(std::forward<VARIANT>(u))); \
+ }
+ VISIT_CASE_N(1)
+ [[fallthrough]];
+ VISIT_CASE_N(2)
+ [[fallthrough]];
+ VISIT_CASE_N(3)
+ [[fallthrough]];
+ VISIT_CASE_N(4)
+ [[fallthrough]];
+ VISIT_CASE_N(5)
+ [[fallthrough]];
+ VISIT_CASE_N(6)
+ [[fallthrough]];
+ VISIT_CASE_N(7)
+#undef VISIT_CASE_N
+ }
+ return visitor(std::get<LOW>(std::forward<VARIANT>(u)));
+ } else {
+ static constexpr std::size_t mid{(HIGH + LOW) / 2};
+ if (which <= mid) {
+ return Log2VisitHelper<LOW, mid, RESULT>(std::forward<VISITOR>(visitor),
+ which, std::forward<VARIANT>(u));
+ } else {
+ return Log2VisitHelper<(mid + 1), HIGH, RESULT>(
+ std::forward<VISITOR>(visitor), which, std::forward<VARIANT>(u));
+ }
+ }
+}
+
+template <typename VISITOR, typename VARIANT>
+inline auto visit(VISITOR &&visitor, VARIANT &&u)
+ -> decltype(visitor(std::get<0>(std::forward<VARIANT>(u)))) {
+ using Result = decltype(visitor(std::get<0>(std::forward<VARIANT>(u))));
+ static constexpr std::size_t high{std::variant_size_v<std::decay_t<VARIANT>> -
+ 1};
+ return Log2VisitHelper<0, high, Result>(std::forward<VISITOR>(visitor),
+ u.index(), std::forward<VARIANT>(u));
+}
+
+} // namespace log2visit
+
+namespace common {
+using log2visit::visit;
+} // namespace common
+
+struct Const {
+ int Value;
+ POLY_METHOD std::int64_t getCost() const { return 1; }
+};
+
+struct UnaryOperation {
+ int Operand;
+};
+
+struct Neg : UnaryOperation {
+ POLY_METHOD std::int64_t getCost() const { return Operand + 1; }
+};
+
+struct Not : UnaryOperation {
+ POLY_METHOD std::int64_t getCost() const { return Operand + 2; }
+};
+
+struct BinaryOperation {
+ int LHS, RHS;
+ POLY_METHOD std::int64_t getCost() const { return LHS + RHS + 1; }
+};
+
+struct Add : BinaryOperation {};
+struct Sub : BinaryOperation {};
+struct Mul : BinaryOperation {};
+
+struct Div : BinaryOperation {
+ POLY_METHOD std::int64_t getCost() const { return LHS + RHS + 20; }
+};
+
+struct Call {
+ int NumArgs, Callee;
+ POLY_METHOD std::int64_t getCost() const { return NumArgs * 4 + 10; }
+};
+
+using Node = std::variant<Const, Neg, Not, Add, Sub, Mul, Div, Call>;
+
+Node create(const NodeSpec &S) {
+ switch (S.K) {
+ case Kind::Const:
+ return Const{S.A};
+ case Kind::Neg:
+ return Neg{{S.A}};
+ case Kind::Not:
+ return Not{{S.A}};
+ case Kind::Add:
+ return Add{{S.A, S.B}};
+ case Kind::Sub:
+ return Sub{{S.A, S.B}};
+ case Kind::Mul:
+ return Mul{{S.A, S.B}};
+ case Kind::Div:
+ return Div{{S.A, S.B}};
+ case Kind::Call:
+ return Call{S.A, S.B};
+ }
+ return Const{0};
+}
+
+std::vector<Node> createNodes(Pattern P) {
+ std::vector<Node> Result;
+ for (const NodeSpec &S : makeSpecs(P))
+ Result.push_back(create(S));
+ return Result;
+}
+
+struct CostVisitor {
+ template <typename T> std::int64_t operator()(const T &X) const {
+ return X.getCost();
+ }
+};
+
+/// The per-alternative handler of the type test.
+struct BinaryOperandsVisitor {
+ template <typename T> std::int64_t operator()(const T &X) const {
+ if constexpr (std::is_base_of_v<BinaryOperation, T>)
+ return X.LHS + X.RHS;
+ else
+ return 0;
+ }
+};
+
+void BM_Dispatch_StdVisit(benchmark::State &State, Pattern P) {
+ std::vector<Node> Nodes = createNodes(P);
+ runBenchmark(State, P, Nodes, [](const Node &Nd) -> std::int64_t {
+ return std::visit(CostVisitor{}, Nd);
+ });
+}
+
+void BM_Dispatch_CommonVisit(benchmark::State &State, Pattern P) {
+ std::vector<Node> Nodes = createNodes(P);
+ runBenchmark(State, P, Nodes, [](const Node &Nd) -> std::int64_t {
+ return common::visit(CostVisitor{}, Nd);
+ });
+}
+
+void BM_TypeTest_StdVisit(benchmark::State &State, Pattern P) {
+ std::vector<Node> Nodes = createNodes(P);
+ runBenchmark(State, P, Nodes, [](const Node &Nd) -> std::int64_t {
+ return std::visit(BinaryOperandsVisitor{}, Nd);
+ });
+}
+
+void BM_TypeTest_CommonVisit(benchmark::State &State, Pattern P) {
+ std::vector<Node> Nodes = createNodes(P);
+ runBenchmark(State, P, Nodes, [](const Node &Nd) -> std::int64_t {
+ return common::visit(BinaryOperandsVisitor{}, Nd);
+ });
+}
+
+} // namespace POLY_NS(flangstyle)
+
+void POLY_REGISTER_FN(Variant)(Registry &R) {
+ using namespace POLY_NS(flangstyle);
+ R.push_back({Measure::Dispatch, "Variant_StdVisit", POLY_INLINE,
+ BM_Dispatch_StdVisit});
+ R.push_back({Measure::Dispatch, "Variant_CommonVisit", POLY_INLINE,
+ BM_Dispatch_CommonVisit});
+ R.push_back({Measure::TypeTest, "Variant_StdVisit", POLY_INLINE,
+ BM_TypeTest_StdVisit});
+ R.push_back({Measure::TypeTest, "Variant_CommonVisit", POLY_INLINE,
+ BM_TypeTest_CommonVisit});
+}
+
+} // namespace polybench
diff --git a/polymorphism-benchmark/Virtual.cpp b/polymorphism-benchmark/Virtual.cpp
new file mode 100644
index 00000000000000..fb7ce99b2b5496
--- /dev/null
+++ b/polymorphism-benchmark/Virtual.cpp
@@ -0,0 +1,136 @@
+//===- Virtual.cpp - C++ virtual methods ----------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Dispatch through virtual methods; type tests with dynamic_cast.
+//
+//===----------------------------------------------------------------------===//
+
+#include "Common.h"
+
+#include <memory>
+
+namespace polybench {
+namespace POLY_NS(virt) {
+
+struct Node {
+ virtual ~Node() = default;
+ virtual std::int64_t getCost() const = 0;
+};
+
+struct Const final : Node {
+ int Value;
+ explicit Const(int Value) : Value(Value) {}
+ POLY_METHOD std::int64_t getCost() const override { return 1; }
+};
+
+struct UnaryOperation : Node {
+ int Operand;
+ explicit UnaryOperation(int Operand) : Operand(Operand) {}
+ int getOperand() const { return Operand; }
+};
+
+struct Neg final : UnaryOperation {
+ using UnaryOperation::UnaryOperation;
+ POLY_METHOD std::int64_t getCost() const override { return Operand + 1; }
+};
+
+struct Not final : UnaryOperation {
+ using UnaryOperation::UnaryOperation;
+ POLY_METHOD std::int64_t getCost() const override { return Operand + 2; }
+};
+
+struct BinaryOperation : Node {
+ int LHS, RHS;
+ BinaryOperation(int LHS, int RHS) : LHS(LHS), RHS(RHS) {}
+ int getLHS() const { return LHS; }
+ int getRHS() const { return RHS; }
+ POLY_METHOD std::int64_t getCost() const override { return LHS + RHS + 1; }
+};
+
+struct Add final : BinaryOperation {
+ using BinaryOperation::BinaryOperation;
+};
+
+struct Sub final : BinaryOperation {
+ using BinaryOperation::BinaryOperation;
+};
+
+struct Mul final : BinaryOperation {
+ using BinaryOperation::BinaryOperation;
+};
+
+struct Div final : BinaryOperation {
+ using BinaryOperation::BinaryOperation;
+ POLY_METHOD std::int64_t getCost() const override { return LHS + RHS + 20; }
+};
+
+struct Call final : Node {
+ int NumArgs, Callee;
+ Call(int NumArgs, int Callee) : NumArgs(NumArgs), Callee(Callee) {}
+ POLY_METHOD std::int64_t getCost() const override { return NumArgs * 4 + 10; }
+};
+
+std::unique_ptr<Node> create(const NodeSpec &S) {
+ switch (S.K) {
+ case Kind::Const:
+ return std::make_unique<Const>(S.A);
+ case Kind::Neg:
+ return std::make_unique<Neg>(S.A);
+ case Kind::Not:
+ return std::make_unique<Not>(S.A);
+ case Kind::Add:
+ return std::make_unique<Add>(S.A, S.B);
+ case Kind::Sub:
+ return std::make_unique<Sub>(S.A, S.B);
+ case Kind::Mul:
+ return std::make_unique<Mul>(S.A, S.B);
+ case Kind::Div:
+ return std::make_unique<Div>(S.A, S.B);
+ case Kind::Call:
+ return std::make_unique<Call>(S.A, S.B);
+ }
+ return nullptr;
+}
+
+struct Nodes {
+ std::vector<std::unique_ptr<Node>> Owner;
+ std::vector<const Node *> Ptrs;
+
+ explicit Nodes(Pattern P) {
+ for (const NodeSpec &S : makeSpecs(P)) {
+ Owner.push_back(create(S));
+ Ptrs.push_back(Owner.back().get());
+ }
+ }
+};
+
+void BM_Dispatch(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs,
+ [](const Node *Nd) -> std::int64_t { return Nd->getCost(); });
+}
+
+void BM_TypeTest(benchmark::State &State, Pattern P) {
+ Nodes N(P);
+ runBenchmark(State, P, N.Ptrs, [](const Node *Nd) -> std::int64_t {
+ if (const auto *B = dynamic_cast<const BinaryOperation *>(Nd))
+ return B->getLHS() + B->getRHS();
+ return 0;
+ });
+}
+
+} // namespace POLY_NS(virt)
+
+void POLY_REGISTER_FN(Virtual)(Registry &R) {
+ using namespace POLY_NS(virt);
+ R.push_back({Measure::Dispatch, "Virtual", POLY_INLINE, BM_Dispatch});
+ R.push_back(
+ {Measure::TypeTest, "Virtual_DynamicCast", POLY_INLINE, BM_TypeTest});
+}
+
+} // namespace polybench
diff --git a/polymorphism-benchmark/build.ninja b/polymorphism-benchmark/build.ninja
new file mode 100644
index 00000000000000..0ee573eee5cf6c
--- /dev/null
+++ b/polymorphism-benchmark/build.ninja
@@ -0,0 +1,663 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.28
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: PolymorphismBenchmark
+# Configurations: Release
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Release
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+# =============================================================================
+
+#############################################
+# Logical path to working directory; prefix for absolute paths.
+
+cmake_ninja_workdir = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/
+# =============================================================================
+# Object build statements for EXECUTABLE target PolymorphismBM
+
+
+#############################################
+# Order-only phony target for PolymorphismBM
+
+build cmake_object_order_depends_target_PolymorphismBM: phony || cmake_object_order_depends_target_PolymorphismBM_Classof_0 cmake_object_order_depends_target_PolymorphismBM_Classof_1 cmake_object_order_depends_target_PolymorphismBM_MLIR_0 cmake_object_order_depends_target_PolymorphismBM_MLIR_1 cmake_object_order_depends_target_PolymorphismBM_Variant_0 cmake_object_order_depends_target_PolymorphismBM_Variant_1 cmake_object_order_depends_target_PolymorphismBM_Virtual_0 cmake_object_order_depends_target_PolymorphismBM_Virtual_1 cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM.dir/main.cpp.o: CXX_COMPILER__PolymorphismBM_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/main.cpp || cmake_object_order_depends_target_PolymorphismBM
+ DEFINES = -DBENCHMARK_STATIC_DEFINE
+ DEP_FILE = CMakeFiles/PolymorphismBM.dir/main.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM.dir
+
+build CMakeFiles/PolymorphismBM.dir/Common.cpp.o: CXX_COMPILER__PolymorphismBM_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/Common.cpp || cmake_object_order_depends_target_PolymorphismBM
+ DEFINES = -DBENCHMARK_STATIC_DEFINE
+ DEP_FILE = CMakeFiles/PolymorphismBM.dir/Common.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM.dir
+
+
+# =============================================================================
+# Link build statements for EXECUTABLE target PolymorphismBM
+
+
+#############################################
+# Link the executable PolymorphismBM
+
+build PolymorphismBM: CXX_EXECUTABLE_LINKER__PolymorphismBM_Release CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o CMakeFiles/PolymorphismBM.dir/main.cpp.o CMakeFiles/PolymorphismBM.dir/Common.cpp.o | third-party/benchmark/src/libbenchmark.a third-party/benchmark/src/libbenchmark.a || PolymorphismBM_Classof_0 PolymorphismBM_Classof_1 PolymorphismBM_MLIR_0 PolymorphismBM_MLIR_1 PolymorphismBM_Variant_0 PolymorphismBM_Variant_1 PolymorphismBM_Virtual_0 PolymorphismBM_Virtual_1 third-party/benchmark/src/libbenchmark.a
+ FLAGS = -O3 -DNDEBUG
+ LINK_LIBRARIES = third-party/benchmark/src/libbenchmark.a third-party/benchmark/src/libbenchmark.a -lrt
+ OBJECT_DIR = CMakeFiles/PolymorphismBM.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ TARGET_FILE = PolymorphismBM
+ TARGET_PDB = PolymorphismBM.dbg
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_Virtual_1
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_Virtual_1
+
+build cmake_object_order_depends_target_PolymorphismBM_Virtual_1: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o: CXX_COMPILER__PolymorphismBM_Virtual_1_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/Virtual.cpp || cmake_object_order_depends_target_PolymorphismBM_Virtual_1
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=1
+ DEP_FILE = CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_Virtual_1.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_Virtual_1.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_Virtual_1
+
+build PolymorphismBM_Virtual_1: phony CMakeFiles/PolymorphismBM_Virtual_1.dir/Virtual.cpp.o
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_Virtual_0
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_Virtual_0
+
+build cmake_object_order_depends_target_PolymorphismBM_Virtual_0: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o: CXX_COMPILER__PolymorphismBM_Virtual_0_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/Virtual.cpp || cmake_object_order_depends_target_PolymorphismBM_Virtual_0
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=0
+ DEP_FILE = CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_Virtual_0.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_Virtual_0.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_Virtual_0
+
+build PolymorphismBM_Virtual_0: phony CMakeFiles/PolymorphismBM_Virtual_0.dir/Virtual.cpp.o
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_Classof_1
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_Classof_1
+
+build cmake_object_order_depends_target_PolymorphismBM_Classof_1: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o: CXX_COMPILER__PolymorphismBM_Classof_1_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/Classof.cpp || cmake_object_order_depends_target_PolymorphismBM_Classof_1
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=1
+ DEP_FILE = CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_Classof_1.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_Classof_1.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_Classof_1
+
+build PolymorphismBM_Classof_1: phony CMakeFiles/PolymorphismBM_Classof_1.dir/Classof.cpp.o
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_Classof_0
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_Classof_0
+
+build cmake_object_order_depends_target_PolymorphismBM_Classof_0: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o: CXX_COMPILER__PolymorphismBM_Classof_0_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/Classof.cpp || cmake_object_order_depends_target_PolymorphismBM_Classof_0
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=0
+ DEP_FILE = CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_Classof_0.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_Classof_0.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_Classof_0
+
+build PolymorphismBM_Classof_0: phony CMakeFiles/PolymorphismBM_Classof_0.dir/Classof.cpp.o
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_Variant_1
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_Variant_1
+
+build cmake_object_order_depends_target_PolymorphismBM_Variant_1: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o: CXX_COMPILER__PolymorphismBM_Variant_1_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/Variant.cpp || cmake_object_order_depends_target_PolymorphismBM_Variant_1
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=1
+ DEP_FILE = CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_Variant_1.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_Variant_1.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_Variant_1
+
+build PolymorphismBM_Variant_1: phony CMakeFiles/PolymorphismBM_Variant_1.dir/Variant.cpp.o
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_Variant_0
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_Variant_0
+
+build cmake_object_order_depends_target_PolymorphismBM_Variant_0: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o: CXX_COMPILER__PolymorphismBM_Variant_0_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/Variant.cpp || cmake_object_order_depends_target_PolymorphismBM_Variant_0
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=0
+ DEP_FILE = CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_Variant_0.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_Variant_0.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_Variant_0
+
+build PolymorphismBM_Variant_0: phony CMakeFiles/PolymorphismBM_Variant_0.dir/Variant.cpp.o
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_MLIR_1
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_MLIR_1
+
+build cmake_object_order_depends_target_PolymorphismBM_MLIR_1: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o: CXX_COMPILER__PolymorphismBM_MLIR_1_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/MLIR.cpp || cmake_object_order_depends_target_PolymorphismBM_MLIR_1
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=1
+ DEP_FILE = CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_MLIR_1.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_MLIR_1.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_MLIR_1
+
+build PolymorphismBM_MLIR_1: phony CMakeFiles/PolymorphismBM_MLIR_1.dir/MLIR.cpp.o
+
+# =============================================================================
+# Object build statements for OBJECT_LIBRARY target PolymorphismBM_MLIR_0
+
+
+#############################################
+# Order-only phony target for PolymorphismBM_MLIR_0
+
+build cmake_object_order_depends_target_PolymorphismBM_MLIR_0: phony || cmake_object_order_depends_target_benchmark
+
+build CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o: CXX_COMPILER__PolymorphismBM_MLIR_0_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/MLIR.cpp || cmake_object_order_depends_target_PolymorphismBM_MLIR_0
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DPOLY_INLINE=0
+ DEP_FILE = CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o.d
+ FLAGS = -O3 -DNDEBUG -std=c++17
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include
+ LAUNCHER = ccache
+ OBJECT_DIR = CMakeFiles/PolymorphismBM_MLIR_0.dir
+ OBJECT_FILE_DIR = CMakeFiles/PolymorphismBM_MLIR_0.dir
+
+
+
+#############################################
+# Object library PolymorphismBM_MLIR_0
+
+build PolymorphismBM_MLIR_0: phony CMakeFiles/PolymorphismBM_MLIR_0.dir/MLIR.cpp.o
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && /usr/bin/cmake --regenerate-during-build -S/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark -B/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+# /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeLists.txt
+# =============================================================================
+
+
+#############################################
+# Utility command for edit_cache
+
+build third-party/benchmark/CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark && /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build third-party/benchmark/edit_cache: phony third-party/benchmark/CMakeFiles/edit_cache.util
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build third-party/benchmark/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark && /usr/bin/cmake --regenerate-during-build -S/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark -B/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build third-party/benchmark/rebuild_cache: phony third-party/benchmark/CMakeFiles/rebuild_cache.util
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+# /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt
+# =============================================================================
+
+# =============================================================================
+# Object build statements for STATIC_LIBRARY target benchmark
+
+
+#############################################
+# Order-only phony target for benchmark
+
+build cmake_object_order_depends_target_benchmark: phony || third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DBENCHMARK_VERSION=\"v1.9.5\"
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_api_internal.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_name.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_register.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_runner.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/check.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/colorprint.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/commandlineflags.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/complexity.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/console_reporter.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/counter.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/csv_reporter.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/json_reporter.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/perf_counters.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/reporter.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/statistics.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/string_util.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/sysinfo.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+build third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o: CXX_COMPILER__benchmark_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/timers.cc || cmake_object_order_depends_target_benchmark
+ DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+
+
+# =============================================================================
+# Link build statements for STATIC_LIBRARY target benchmark
+
+
+#############################################
+# Link the static library third-party/benchmark/src/libbenchmark.a
+
+build third-party/benchmark/src/libbenchmark.a: CXX_STATIC_LIBRARY_LINKER__benchmark_Release third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o
+ LANGUAGE_COMPILE_FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ TARGET_FILE = third-party/benchmark/src/libbenchmark.a
+ TARGET_PDB = benchmark.a.dbg
+
+# =============================================================================
+# Object build statements for STATIC_LIBRARY target benchmark_main
+
+
+#############################################
+# Order-only phony target for benchmark_main
+
+build cmake_object_order_depends_target_benchmark_main: phony || cmake_object_order_depends_target_benchmark
+
+build third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o: CXX_COMPILER__benchmark_main_unscanned_Release /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_main.cc || cmake_object_order_depends_target_benchmark_main
+ DEFINES = -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+ DEP_FILE = third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o.d
+ FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+ INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+ LAUNCHER = ccache
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark_main.dir
+ OBJECT_FILE_DIR = third-party/benchmark/src/CMakeFiles/benchmark_main.dir
+
+
+# =============================================================================
+# Link build statements for STATIC_LIBRARY target benchmark_main
+
+
+#############################################
+# Link the static library third-party/benchmark/src/libbenchmark_main.a
+
+build third-party/benchmark/src/libbenchmark_main.a: CXX_STATIC_LIBRARY_LINKER__benchmark_main_Release third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o || third-party/benchmark/src/libbenchmark.a
+ LANGUAGE_COMPILE_FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG
+ OBJECT_DIR = third-party/benchmark/src/CMakeFiles/benchmark_main.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ TARGET_FILE = third-party/benchmark/src/libbenchmark_main.a
+ TARGET_PDB = benchmark_main.a.dbg
+
+
+#############################################
+# Utility command for edit_cache
+
+build third-party/benchmark/src/CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build third-party/benchmark/src/edit_cache: phony third-party/benchmark/src/CMakeFiles/edit_cache.util
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build third-party/benchmark/src/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/cmake --regenerate-during-build -S/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark -B/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build third-party/benchmark/src/rebuild_cache: phony third-party/benchmark/src/CMakeFiles/rebuild_cache.util
+
+# =============================================================================
+# Target aliases.
+
+build benchmark: phony third-party/benchmark/src/libbenchmark.a
+
+build benchmark_main: phony third-party/benchmark/src/libbenchmark_main.a
+
+build libbenchmark.a: phony third-party/benchmark/src/libbenchmark.a
+
+build libbenchmark_main.a: phony third-party/benchmark/src/libbenchmark_main.a
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+build all: phony PolymorphismBM PolymorphismBM_Virtual_1 PolymorphismBM_Virtual_0 PolymorphismBM_Classof_1 PolymorphismBM_Classof_0 PolymorphismBM_Variant_1 PolymorphismBM_Variant_0 PolymorphismBM_MLIR_1 PolymorphismBM_MLIR_0
+
+# =============================================================================
+
+#############################################
+# Folder: /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark
+
+build third-party/benchmark/all: phony third-party/benchmark/src/all
+
+# =============================================================================
+
+#############################################
+# Folder: /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src
+
+build third-party/benchmark/src/all: phony third-party/benchmark/src/libbenchmark.a third-party/benchmark/src/libbenchmark_main.a
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/CXXFeatureCheck.cmake /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Config.cmake.in /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/GetGitVersion.cmake /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/benchmark.pc.in /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/benchmark_main.pc.in /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/CMakeLists.txt /usr/share/cmake-3.28/Modules/BasicConfigVersion-SameMajorVersion.cmake.in /usr/share/cmake-3.28/Modules/CMakeCXXInformation.cmake /usr/share/cmake-3.28/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/share/cmake-3.28/Modules/CMakeCommonLanguageInclude.cmake /usr/share/cmake-3.28/Modules/CMakeGenericSystem.cmake /usr/share/cmake-3.28/Modules/CMakeInitializeConfigs.cmake /usr/share/cmake-3.28/Modules/CMakeLanguageInformation.cmake /usr/share/cmake-3.28/Modules/CMakePackageConfigHelpers.cmake /usr/share/cmake-3.28/Modules/CMakeSystemSpecificInformation.cmake /usr/share/cmake-3.28/Modules/CMakeSystemSpecificInitialize.cmake /usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake /usr/share/cmake-3.28/Modules/CheckCXXSourceCompiles.cmake /usr/share/cmake-3.28/Modules/CheckIncludeFileCXX.cmake /usr/share/cmake-3.28/Modules/CheckLibraryExists.cmake /usr/share/cmake-3.28/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/share/cmake-3.28/Modules/Compiler/GNU-CXX.cmake /usr/share/cmake-3.28/Modules/Compiler/GNU.cmake /usr/share/cmake-3.28/Modules/FindGit.cmake /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake /usr/share/cmake-3.28/Modules/FindPackageMessage.cmake /usr/share/cmake-3.28/Modules/FindThreads.cmake /usr/share/cmake-3.28/Modules/GNUInstallDirs.cmake /usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake /usr/share/cmake-3.28/Modules/Internal/CheckFlagCommonConfig.cmake /usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake /usr/share/cmake-3.28/Modules/Platform/Linux-GNU-CXX.cmake /usr/share/cmake-3.28/Modules/Platform/Linux-GNU.cmake /usr/share/cmake-3.28/Modules/Platform/Linux-Initialize.cmake /usr/share/cmake-3.28/Modules/Platform/Linux.cmake /usr/share/cmake-3.28/Modules/Platform/UnixPaths.cmake /usr/share/cmake-3.28/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.28.3/CMakeCXXCompiler.cmake CMakeFiles/3.28.3/CMakeSystem.cmake CMakeLists.txt
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/CMakeLists.txt /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/AddCXXCompilerFlag.cmake /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/CXXFeatureCheck.cmake /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/Config.cmake.in /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/GetGitVersion.cmake /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/benchmark.pc.in /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/cmake/benchmark_main.pc.in /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/CMakeLists.txt /usr/share/cmake-3.28/Modules/BasicConfigVersion-SameMajorVersion.cmake.in /usr/share/cmake-3.28/Modules/CMakeCXXInformation.cmake /usr/share/cmake-3.28/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/share/cmake-3.28/Modules/CMakeCommonLanguageInclude.cmake /usr/share/cmake-3.28/Modules/CMakeGenericSystem.cmake /usr/share/cmake-3.28/Modules/CMakeInitializeConfigs.cmake /usr/share/cmake-3.28/Modules/CMakeLanguageInformation.cmake /usr/share/cmake-3.28/Modules/CMakePackageConfigHelpers.cmake /usr/share/cmake-3.28/Modules/CMakeSystemSpecificInformation.cmake /usr/share/cmake-3.28/Modules/CMakeSystemSpecificInitialize.cmake /usr/share/cmake-3.28/Modules/CheckCXXCompilerFlag.cmake /usr/share/cmake-3.28/Modules/CheckCXXSourceCompiles.cmake /usr/share/cmake-3.28/Modules/CheckIncludeFileCXX.cmake /usr/share/cmake-3.28/Modules/CheckLibraryExists.cmake /usr/share/cmake-3.28/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/share/cmake-3.28/Modules/Compiler/GNU-CXX.cmake /usr/share/cmake-3.28/Modules/Compiler/GNU.cmake /usr/share/cmake-3.28/Modules/FindGit.cmake /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake /usr/share/cmake-3.28/Modules/FindPackageMessage.cmake /usr/share/cmake-3.28/Modules/FindThreads.cmake /usr/share/cmake-3.28/Modules/GNUInstallDirs.cmake /usr/share/cmake-3.28/Modules/Internal/CheckCompilerFlag.cmake /usr/share/cmake-3.28/Modules/Internal/CheckFlagCommonConfig.cmake /usr/share/cmake-3.28/Modules/Internal/CheckSourceCompiles.cmake /usr/share/cmake-3.28/Modules/Platform/Linux-GNU-CXX.cmake /usr/share/cmake-3.28/Modules/Platform/Linux-GNU.cmake /usr/share/cmake-3.28/Modules/Platform/Linux-Initialize.cmake /usr/share/cmake-3.28/Modules/Platform/Linux.cmake /usr/share/cmake-3.28/Modules/Platform/UnixPaths.cmake /usr/share/cmake-3.28/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.28.3/CMakeCXXCompiler.cmake CMakeFiles/3.28.3/CMakeSystem.cmake CMakeLists.txt: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/polymorphism-benchmark/cmake_install.cmake b/polymorphism-benchmark/cmake_install.cmake
new file mode 100644
index 00000000000000..5d1326db3e7378
--- /dev/null
+++ b/polymorphism-benchmark/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Release")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "1")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "FALSE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/usr/bin/objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/polymorphism-benchmark/main.cpp b/polymorphism-benchmark/main.cpp
new file mode 100644
index 00000000000000..9d6ceb0dba1d3d
--- /dev/null
+++ b/polymorphism-benchmark/main.cpp
@@ -0,0 +1,72 @@
+//===- main.cpp - Polymorphism overhead benchmark driver ------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Compares the runtime overhead of four styles of polymorphism, each
+// implemented in its own file as a minimal, self-contained model:
+//
+// Virtual.cpp: C++ virtual methods and dynamic_cast.
+// Classof.cpp: LLVM/Clang-style kind enum, classof(), isa<>/dyn_cast<>, and
+// switch-based visitors.
+// Variant.cpp: Flang-style std::variant with std::visit and common::visit.
+// MLIR.cpp: MLIR-style Operation/Op/Trait/Interface with Concept/Model.
+//
+// Benchmarks are named <Measure>/<Pattern>/<Style>/<inline|noinline>.
+//
+//===----------------------------------------------------------------------===//
+
+#include "Common.h"
+
+#include <algorithm>
+#include <string>
+#include <utility>
+
+using namespace polybench;
+
+static void registerBenchmarks() {
+ Registry R;
+ registerVirtual_inline(R);
+ registerVirtual_noinline(R);
+ registerClassof_inline(R);
+ registerClassof_noinline(R);
+ registerVariant_inline(R);
+ registerVariant_noinline(R);
+ registerMLIR_inline(R);
+ registerMLIR_noinline(R);
+
+ // Order of first appearance, so that inline/noinline pairs are adjacent.
+ std::vector<std::string> Names;
+ for (const BenchmarkEntry &E : R)
+ if (std::find(Names.begin(), Names.end(), E.Name) == Names.end())
+ Names.push_back(E.Name);
+
+ const Pattern Patterns[] = {Pattern::Monomorphic, Pattern::RoundRobin,
+ Pattern::Random};
+ const std::pair<Measure, const char *> Measures[] = {
+ {Measure::Dispatch, "Dispatch"}, {Measure::TypeTest, "TypeTest"}};
+
+ for (auto [M, MeasureName] : Measures)
+ for (Pattern P : Patterns)
+ for (const std::string &Name : Names)
+ for (bool Inline : {true, false})
+ for (const BenchmarkEntry &E : R)
+ if (E.M == M && E.Name == Name && E.Inline == Inline)
+ benchmark::RegisterBenchmark(
+ std::string(MeasureName) + "/" + getPatternName(P) + "/" +
+ Name + "/" + (Inline ? "inline" : "noinline"),
+ E.Fn, P);
+}
+
+int main(int argc, char **argv) {
+ benchmark::Initialize(&argc, argv);
+ if (benchmark::ReportUnrecognizedArguments(argc, argv))
+ return 1;
+ registerBenchmarks();
+ benchmark::RunSpecifiedBenchmarks();
+ benchmark::Shutdown();
+ return 0;
+}
diff --git a/polymorphism-benchmark/third-party/benchmark/CMakeFiles/CMakeDirectoryInformation.cmake b/polymorphism-benchmark/third-party/benchmark/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 00000000000000..c8990430089969
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Relative path conversion top directories.
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark")
+
+# Force unix paths in dependencies.
+set(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/polymorphism-benchmark/third-party/benchmark/CMakeFiles/progress.marks b/polymorphism-benchmark/third-party/benchmark/CMakeFiles/progress.marks
new file mode 100644
index 00000000000000..2bd5a0a98a36cc
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+22
diff --git a/polymorphism-benchmark/third-party/benchmark/Makefile b/polymorphism-benchmark/third-party/benchmark/Makefile
new file mode 100644
index 00000000000000..2353a701a6db15
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/Makefile
@@ -0,0 +1,140 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark//CMakeFiles/progress.marks
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... edit_cache"
+ @echo "... rebuild_cache"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/polymorphism-benchmark/third-party/benchmark/benchmark.pc b/polymorphism-benchmark/third-party/benchmark/benchmark.pc
new file mode 100644
index 00000000000000..93bbf7eea8ef50
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/benchmark.pc
@@ -0,0 +1,12 @@
+prefix=/usr/local
+exec_prefix=${prefix}
+libdir=/usr/local/lib
+includedir=/usr/local/include
+
+Name: benchmark
+Description: Google microbenchmark framework
+Version: 1.9.5
+
+Libs: -L${libdir} -lbenchmark
+Libs.private: -lpthread -lrt
+Cflags: -I${includedir}
diff --git a/polymorphism-benchmark/third-party/benchmark/benchmarkConfig.cmake b/polymorphism-benchmark/third-party/benchmark/benchmarkConfig.cmake
new file mode 100644
index 00000000000000..b8638cc990e0b9
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/benchmarkConfig.cmake
@@ -0,0 +1,19 @@
+
+####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
+####### Any changes to this file will be overwritten by the next CMake run ####
+####### The input file was Config.cmake.in ########
+
+get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+
+####################################################################################
+
+include (CMakeFindDependencyMacro)
+
+find_dependency (Threads)
+
+if (OFF)
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
+ find_dependency (PFM)
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/benchmarkTargets.cmake")
diff --git a/polymorphism-benchmark/third-party/benchmark/benchmarkConfigVersion.cmake b/polymorphism-benchmark/third-party/benchmark/benchmarkConfigVersion.cmake
new file mode 100644
index 00000000000000..2349a77dc7b2a8
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/benchmarkConfigVersion.cmake
@@ -0,0 +1,65 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
+# but only if the requested major version is the same as the current one.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+
+set(PACKAGE_VERSION "1.9.5")
+
+if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+
+ if("1.9.5" MATCHES "^([0-9]+)\\.")
+ set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
+ if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
+ string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
+ endif()
+ else()
+ set(CVF_VERSION_MAJOR "1.9.5")
+ endif()
+
+ if(PACKAGE_FIND_VERSION_RANGE)
+ # both endpoints of the range must have the expected major version
+ math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
+ if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+ OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
+ OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+ elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+ AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
+ OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ else()
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+ endif()
+ else()
+ if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ else()
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+ endif()
+
+ if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+ endif()
+endif()
+
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
+ return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
+ math(EXPR installedBits "8 * 8")
+ set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+ set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()
diff --git a/polymorphism-benchmark/third-party/benchmark/benchmarkTargets.cmake b/polymorphism-benchmark/third-party/benchmark/benchmarkTargets.cmake
new file mode 100644
index 00000000000000..177d244609962a
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/benchmarkTargets.cmake
@@ -0,0 +1,84 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
+ message(FATAL_ERROR "CMake >= 2.8.0 required")
+endif()
+if(CMAKE_VERSION VERSION_LESS "2.8.3")
+ message(FATAL_ERROR "CMake >= 2.8.3 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.8.3...3.26)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_cmake_targets_defined "")
+set(_cmake_targets_not_defined "")
+set(_cmake_expected_targets "")
+foreach(_cmake_expected_target IN ITEMS benchmark::benchmark benchmark::benchmark_main)
+ list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
+ if(TARGET "${_cmake_expected_target}")
+ list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
+ else()
+ list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
+ endif()
+endforeach()
+unset(_cmake_expected_target)
+if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
+ unset(_cmake_targets_defined)
+ unset(_cmake_targets_not_defined)
+ unset(_cmake_expected_targets)
+ unset(CMAKE_IMPORT_FILE_VERSION)
+ cmake_policy(POP)
+ return()
+endif()
+if(NOT _cmake_targets_defined STREQUAL "")
+ string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
+ string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
+ message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
+endif()
+unset(_cmake_targets_defined)
+unset(_cmake_targets_not_defined)
+unset(_cmake_expected_targets)
+
+
+# Create imported target benchmark::benchmark
+add_library(benchmark::benchmark STATIC IMPORTED)
+
+set_target_properties(benchmark::benchmark PROPERTIES
+ INTERFACE_COMPILE_DEFINITIONS "BENCHMARK_STATIC_DEFINE"
+ INTERFACE_INCLUDE_DIRECTORIES "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include"
+ INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:Threads::Threads>;\$<LINK_ONLY:rt>"
+)
+
+# Create imported target benchmark::benchmark_main
+add_library(benchmark::benchmark_main STATIC IMPORTED)
+
+set_target_properties(benchmark::benchmark_main PROPERTIES
+ INTERFACE_LINK_LIBRARIES "benchmark::benchmark"
+)
+
+# Import target "benchmark::benchmark" for configuration "Release"
+set_property(TARGET benchmark::benchmark APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+set_target_properties(benchmark::benchmark PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+ IMPORTED_LOCATION_RELEASE "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/libbenchmark.a"
+ )
+
+# Import target "benchmark::benchmark_main" for configuration "Release"
+set_property(TARGET benchmark::benchmark_main APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+set_target_properties(benchmark::benchmark_main PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+ IMPORTED_LOCATION_RELEASE "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/libbenchmark_main.a"
+ )
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)
diff --git a/polymorphism-benchmark/third-party/benchmark/benchmark_main.pc b/polymorphism-benchmark/third-party/benchmark/benchmark_main.pc
new file mode 100644
index 00000000000000..e4aa96a15c3cdb
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/benchmark_main.pc
@@ -0,0 +1,7 @@
+libdir=/usr/local/lib
+
+Name: benchmark
+Description: Google microbenchmark framework (with main() function)
+Version: 1.9.5
+Requires: benchmark
+Libs: -L${libdir} -lbenchmark_main
diff --git a/polymorphism-benchmark/third-party/benchmark/cmake_install.cmake b/polymorphism-benchmark/third-party/benchmark/cmake_install.cmake
new file mode 100644
index 00000000000000..37f5bbac24642e
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/cmake_install.cmake
@@ -0,0 +1,49 @@
+# Install script for directory: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Release")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "1")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "FALSE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/usr/bin/objdump")
+endif()
+
+if(NOT CMAKE_INSTALL_LOCAL_ONLY)
+ # Include the install script for the subdirectory.
+ include("/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/cmake_install.cmake")
+endif()
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/CMakeDirectoryInformation.cmake b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 00000000000000..c8990430089969
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Relative path conversion top directories.
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark")
+
+# Force unix paths in dependencies.
+set(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/DependInfo.cmake b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/DependInfo.cmake
new file mode 100644
index 00000000000000..17b1b4b7251c11
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/DependInfo.cmake
@@ -0,0 +1,41 @@
+
+# Consider dependencies only in project.
+set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)
+
+# The set of languages for which implicit dependencies are needed:
+set(CMAKE_DEPENDS_LANGUAGES
+ )
+
+# The set of dependency files which are needed:
+set(CMAKE_DEPENDS_DEPENDENCY_FILES
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_api_internal.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_name.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_register.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_runner.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/check.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/colorprint.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/commandlineflags.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/complexity.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/console_reporter.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/counter.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/csv_reporter.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/json_reporter.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/perf_counters.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/reporter.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/statistics.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/string_util.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/sysinfo.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o.d"
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/timers.cc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o.d"
+ )
+
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
+ )
+
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
+ )
+
+# Fortran module output directory.
+set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..62b600c8a54bb22b795721d1e252a8df6a7df567
GIT binary patch
literal 157704
zcmeFa33yw at xdtpHHkc4NHl*P8LQ%N_?6TREmWTkA6Pp}?3@%AZZdu}xICV-EV at nW7
z00&9M!>Pa!ddUUa=JvL|X`v-7O+wflvN)jy0&Rh^n%xHj2~fan@&CTxoFg5{lAHF@
z|M{QiM^EB8XXaaG`R1E%zL_&~c|-K%QGWkupY!wkPV)KP7f;xA>Zr_HSf0YZcHad8
zdobRKb142F<~&y+tj7PZ<Nx>Y|1A6`%+dH?<2=_QJjQwc2Et>V=WinXmh*fZ!tu^?
z2;uS0^8|z^IL{{`{I>HPMp)-OPeeG$d9Fv;;5?s<aI*7kB8)iCryxAld5$7%be>N`
zcsl+!;s1A>xHAw=ah|6loaQ`#7vY)C^K^v&;XI$~gfpD5*$HPl;dxHjif}IeyT7LC
zX5!7Vp)c{>OrOZ0KmWOQNTRxpgTlVLGwZ%vH?3~!v?;)=GS!k`xtSU=lKYkb->S!(
z6|OW at eXz_-^%%({8lKT*QLC-8G4+9w{21-rXkCUEVBLh5h&7|qOg&>HpG5na*7<mO
z%Se71FHx%nV6Pa- at 8hM>nis?ylJ*d!X at Gk?eyqI=xit;~;=~$LO$}C>={CPEfwd%9
zd4F at JK#3EAzF4bijSHIACCK8qVE at rWLqj@ZBJzDn*i4_&WU7*&8G1CfKPciQmm=S+
zO9Fta0ZjZVA#bWDHA8ZU|8$OV5QHIOHIzrJOT&@$G>7DqvAq!4l*u1b14soSol=uY
z5vozOJxkR{j+6R0B5042JTFFGCpDqA%FR%3Y%kNoOSa&Pk;6$KtW)v`o9YEkIQ3TS
z`=%POyLJu at A=61VJL>ULkZx!~-Mgecc}6NoH at Kwn;4*b;Lg!f;?M!4es$R9f1 at aN=
za at 54+CbYGt8nGs4GmKQ!#AHnsDS1?*O3NRFBsM>yUa%kfY-q^MZv?Fj()Gb63WyNj
zI|708QeP4T`TC&Hm&9QVUY8mX>G}lOZB%dCKLV48bs1=%jBKClX8U9>;mbhxWH;M*
z$f=B|`p~K8XJTa$^}M|sD4JFjJ;S;fbzFz$`wt;oVOn?rGG$M2qE;+e2JRX9M at B47
zKLg?jNtVX}raC)VW?%g&tNlYscKOF&Azz62-{*_|>}?M4)y<L5H`^q_x7;53gnWnc
z`6f12opny#*>&gCom)3!!<_En`UCwKn&3HfY7^~-{-yN?)C%;+>rQleMt{seOh$iv
zMO1;KKhj?Pu^F<Q(I3a<=#T%#Tg1}(W9-1$y1(Y=1&XdmFF at qc-?d&ak}IW`Xl+xL
zX>t>CSav@(xUO{31-}6sY5_E3BM3nAK(SB at ctnLLnZ8ctlzQAq?nGon{l%W9J3BIf
z?(FI8dH9|#Z6trl{GnUF13{Jy<>)6PwGU|8v+zgslt4sPwgaT at 2mYL+-2UbEc&|Pf
z#@*BFPXl50`cB>JQS!+(-d>-F>+Rc3?Au2HkK+vcHIUJ3-F|H(n?Rd=dl-#u?vqi#
zu>0;M{B;NNcHd#R*$yO~^uN(b+56CJxyYvt?}57MvII_K4=lH%B!Qlg6^7I^@$Z?r
zJ%L>`2Vg^#<CWX at +$vi$y#Hyg+5Yz{a;>x<K)>&H`xj&fL$s;hpJJ*{I8aBe^U7wM
zR>>h%A|2>wwLPMxKb0QD;aW}9L-vgrvZE84D~;p|4&J at ta-ewHgTsm*;d9%9y%)oL
zM^yx)e;{ft4n!5}F|pGyuKYbn;mL0#2k=BgAoU<008uq at b4iWwJ!9dNaGg;xH5j%=
zN7Ov1zg}1q!Ws{id@!xWm38cfsi9bTRJ{>Zul0|mOn at Qu#`)!q>UA+5CQA=L2jziT
z at w8x0LhCl@0{#c}#DwW6;B9<z3JBu5o1u97YXinYr*l=hl+IL>P_THFX*KG?nF{J$
zm+;@oQ%bl8o}`3F;vuR!G6if18x at nnRs(oWl9C~mf+>`E21>LTL&K%ihcN at iGu89`
zM?#Fj6{VXGh4 at yi4SghH>5`=mMcE&qIB1olAVSDnI*f8GhPpv{3gmNfCZ99id|sK&
z=W%R^M&$F<ussFjyG19 at HV@a5W27#kLWU?uRi9U{XY at s+msYUPXWuFv*=MY-=$cYv
zzb|jFi_A1+0{IKnKCW|ZO~pIv)l^fU;xOz*)w`zZl|<=?ux$eN?=$#TQ#qPU%L7$q
zJ!{CCSQ$~%*u1g*9DS}Hl#wLW6aSkeSupW9qKpGPMZw+^4|BS+^+(aA)JD`s)?p;Q
zBv_**7)EYDH}XlD%KJ0QD2*ItEjnT>wRaZ9`0QZVJ{EeQ+gR=Inp9)|B$I!ZzxHvr
zgu3LttYy|hrUtylUmUQ{WnM*Jo4sfNRPQ`=cj`$qzdoiQ;UB4we+RtO$5-$G{b8)$
zy{-#7);<i)Kc`#Ti*=FHVA91SFpg0}??%;5w>XaGME|$HCK>dB-u`u60JO`6zR=5-
zUkCwPDu6Ez!EE_uAh2&l1xVa`##cWEyv<4&`FX=I7^yEB8;_5}B+i-0MAWA;moc*w
zjOaepcjr_#s<%a>K#A0#zeX`P5fjnBH~aMo!H6|qPgd^TlM&Ears_A<b0&M at Vm-qt
zgO(F1imE~MT}g7t?AQ(6fx0`Y1|WQZ$Mk5wJ#=Iss@}^mv`|<=R>792><^(~8m;(v
zWD$d7OL-*pypjB_5StgQF%Ifv-I&%bK6X`3m^N{42K4dNF8!B$Kmnm0kGY3+4lGd2
zKg?k^iRsQis6#Ik3eOGPZ(7I&@--eAu8CT+${R!P8%Y~|fDE8?<{??V->6=5@)5Ou
z$$Vg}iPf_yEBilwpQE^p?$ID at 0}Pooi}DR~>NVFcq2<3 at L_IrjAN0|Et>l*e at gfGu
zd%0<)<T<OV?+a^?CJ%@_dq65RNR<afo;@IatjF|^cQ9}m$+HKfM}uthfXK54WQ7J<
z<pGgr4 at jp5>Gpuga~9;%W;9ou+f;3yVTsc<Ofj8CZ1ScAq=|<$FB%`kn#P7VlCPAZ
zaG0x_OE)!9UR;)u&|608+vs&{@tQ{UHxtt<w0uVm#587 at R!0~nOtks~>6Q1J%(^qN
z6uTk<d5o%;?eVTX6;+?0Q$TLccjRU}jDA)=djRDI<KJ72>Q#@xOwt0g^}T;eU`j<`
zzK|ER?&l^ivF5_EvfW7OaTsk0>zlHI8Qb}gmA713*&eNayNImB9a-u97~-boFcJdE
zcOW|hx482&(O>uI&Y#eozn7g~Kf7{kTKDMApU|COgXDGodvxbd=+3V}@;d)LebOfr
zJETu)5P9}6>d_$EJRtJy0a>9zR(U|=*#pw4LApI4@|*=(+>H4jI=^=3cpKAk134+)
z&Yv}A=^U!b^lQ_a0AlF-y|J^AfPTLruirm!q#pQ){T_n}hZrhfBVxtF=-+1b^Vv3Z
zXRXrTUj_<#ul+rQGR|tc9Gg;Yh#R<#illPb(BZ0p0961+LJl3nRlw%$U#I|&a)wgV
zQuAXiHF^-tlbV0gkWowpV7PEqK)@L;(Av8?T>KRx!r|ft8Yiv_07<O^C_0#Ub$CXP
zw~gcr&gcOz^gJZX=+W(w9mn3d>aBlDcD}GT{ss0%G2waJNKJBVjVfpSKzr}%`0;ab
zJ-%$O`I|?0Kyrt7{O|}>D=bhu_#quVVzUpxiXPu+T?%zK9|rBGM)Da)v at jWk)xMp!
zJ*H=yqSkM<G5c2RBr(O08lY at x{~mND)auCoJ*ZNcCC?3DZu*58`#G8=7|IHnux}cv
z2*irb4D0eUs*y6bGuEE;kOnthw0h_8A&st<uSC>a_LtxFh!n_uOp&@RYMl_&BiSrW
zq2PB4y=o-?Dl&6GklF}xQ^1h*+5eO#`ofTf?W5<YUfbvYIPtlLQ`&-3gJCBu$_Q;q
z1%YWUB<2;@kbON`{aRLH+({252Gjom`w5sTjWlCEb?4~RDl$jkED~}AsJe6W*hw-a
zfBiMuTY5?!wJwDk8F5NZ at hycsQ;mFK5W_O|n95;Tw at t38{Er#LM)D_|0T(lhPZpUt
z0$!h8u!%(+s6g(5_0b5oCcHJAM^h7tEZjp`$d`i`UUB810h46PftdUaS at Ydl&~X=B
zzL0}|#l+}4MP=X=$bd8?Cq-ByiUkYIiZZKFv4gl0^$XYt&MZr2L%X>&2G+rmZhE}v
zUc>i(7{sRK(LnaauyVX~R`cD`@@SuracKkRUGB1vbuzROmVO3zH<D{PwM-0_#3!28
zZcE4ipkv_zBlSB(J`lhk(PebOs!jSaU5Z%W=7vhFM`Nu*J!PuHnM<J$I-}!p(3!Jz
z{H%`n`JIbKT^Mi4deI9K0uc~OH^5SF7?1y`w5NI-s>sIdZK!cVQ^E|dBwx`-kmFek
z7j(p?ndt)=vkuN%5aT8u(0xJY*@E-mif7)}p(AHu^kRYw`v7{LE;Q?F>7vmc3+J`O
zfBrx-qU+S3HN9cgQLkFyrIJ#>%gGWnn5>%Kh5+z<*;0(>E25hiZf=;4Jn7og-fFK`
zdie94Zh_J*AoZ=WP9(9+JN(tMs#j*LmZnN#S>t*DK%XoZrhdHxW{$DFr}I*u?_JaQ
zde6JYxdQyIQPEHqt8%LCrj<Zo6c$IGiH#9gL1 at zWcqK%$?5uM(bPL?T6L7*f?UC-l
z7MsOQPBmc!np9>UKH6MAILZudGp_FmOfnr at y<U+%5*$zoT4iwsMi#YuB{SY6`$Voc
zvAlItBkFG`q;=&ALH(q6@&Rl#GrdwrWN4+B4Ge;ewkEe?vFFQXqSxfYAYy#hlmp-&
zVxnqlb+cgh!X;0vn^;+$SPzSjam2eGTZ!B%jkRo^<kxZ{^*ABF8qc0o_O3B~QYC6{
zQf2%wVfe0b_M~!vZ=GWtz2(A^IY!lb!UPBt5GDdP at T8|c^XezoWfrKLHq?!?DCU(T
zEiZ-YOLu at T>dRdv(tXY8U)GgudbCWq3M~_^+K}Dvkd;4EeU=fy^zs!H8Asbd%nrf?
zj!}>_2%OWK)C+84S$4{4t4$K6{g|Xb$C&DL#qzyC!$)B;Zs^JM?{IP`ekQl&nF;Cm
zC9!Jn);wc%Poig3rzH8}qZ56fvBPa}{iH&A>G+xP*uwZ0Ep88I%jcl2rF_IjZRiH}
zhB?_}>3^~wR++P1pscnh+cOR~En#9}?H0QV4j(7G3XIg%poy$hLT`BF`#=^kTXnGq
zGo?B;w^Z8_54xp_VWfE7(eeG&G8AIjpUY>$SW0DINPUrb>9c`9$^JiYxqqe0eTxLT
z!{|nk^6A{8y3ya6sH7^h at 3Om*8n(9_tpFFZbkY3!Fx7;pb%-t;Z2H7!#zhnH*B?Iu
zYn~;+F8Ef}`DL3+j)tnKmwGCZdWxTlIzrl0q7P^&J~<G~))x!;n!7lzMsqy1Say<=
z9S_10<32pO13!@h=C_{=50(_lw7wzkUTaF38QL71Ima{>JZPq6yQi at q{lHJgjx{a4
z{Zq-9YE<aP#Uul*FahiGSa6?IMz))G_nqa+SuU_-6l$&8Op8dHp+Cgl!d9l(erDoh
zf2>yWX)+g1zLc=sT(UoEXF>t`#_CDsUAucQ2L707ul)8iGYuG)_RNfr+)1%#R&Mt-
zl@>-lwiO<qVow*)zXO}x at sIM7rMO3Jk5eDusm&8gDY~u{7>dGR->mJ?T>|oE=8lJ%
z>Ui5}6kSoSS>xh*McC8Ykb6nNirn|7-G}Zlgr?tas`oNENDL0ecK@}{SK`AOuP(OM
z6RLOVql^}QgnH2(A2syjY!)D36UtfVc=VT7S<rqG{^>KzdncD)SbJ2+RD-74f89}#
zq&e!$ac1x2GA!=+Hc#G<=8Mzc+(K(Hyq~J5wny`D#($?{O`9TX3!MPa>%_28&gCwk
z{`jA0{C-ZmVE4qlePE at om$R_ue9rweNgYk at tYbSCf|M6Kpw&*j2|6+4zieW9GB!ZG
zZ>G;Ji>BvoE{~=~D`<LAYczJ at V4QeK%IOrnw#Q6t&@vJY4aA?W!^WYr&M|)0qjyT?
zk4Nr~Yq9zQIf at ATxH95sB)<wX2}aN6NtOQE9&C>;k(rEj&nlG1L?6ZGht!RF=D7k<
zo9lyRkjVSCNb(7K?<q{Q)Kb7O(eI)CE`Y2Qm&xj_Uj`9G)4$z;xI~X%N%VwN0I`>v
z^{UTG^D&erbnMs&mUQSu)oaC8ipce$zRUjFi9M6P*tbo%)7VwNCBisxw9I4F#$KTc
z4!*j?M!&$;E8%RU?nA7*{$x!$fM(?th|1rsw2g6zjbeIn3+e{wCsF3EuoLkQoY)tz
zx$Z=Kx6_#JP6Wb#m<#VF*)I at 2HwW=E$Q>$y;=>HsC%{L|@;PNTlHWqFm2%rha6B`u
z-G`dW?X$=O!z)H%XLyb8?${IptQCSbYPvldA+x_0+gfB&hE0HfaklDXZ&kkN2rW}>
zfFlgeiIw?uN5HgN;l4Z{{&!5(==a9RW?cD-)Z}M=BXu2~xJwAznxfq9az3`h>1|u6
ziOnTdK65P~eEqPpq1VHF#^_}_tp375;RiAYi=?C2F~b_|6&P-K!|oXYj3nxVRsP({
zG*V+BIH*tzOZ{$zVpFl!<JjnudIxlnC;R)T$;>_&tc0pfk<e$dOMaLqMb94xe(dUZ
zXMa*=^S10v^X$*!7_1$}vdE486|e`<SQ-4#L)a|@{_qcDyF_~xHppO)RKz%0N`4 at e
z7HT+-JfZNqPPipJ)uVdjUu~>@zji3H6m$8Z%Z+Q^09m}COr1;itXJFDZ$HR>0&!A#
z_8;*i_~-_93ox`u=$%nngO0IvXL1IkzuRa~8$J6%TTLq&WOLOsJ5lT2;0jiubysjD
zLhgdZ8s4ozs*fDenO at ri6{gOFZS);X|0?FF$(5L-0Ss+ExrU)py}MC8Ie^Vp(C_Bj
zLF5p>%Q;EB;x1Si*p<vWKt*5!pi>dt3W(Z3TrUlkUega-c^()|sWGatMbN4he%0^7
zs3<e8E)z1j=rEVkRwwh3#zfTrBt&pLvtz1L+e~X3LcP;&I%KjLE(uswi>rDknF7;0
zsmTdjB at 8`iB&U`Tc?yvMyQ~ulc*MBa;G<cGnSL2zRYK3exf4}QSyZq7ryH at G8_FS&
z_bkU_RNc8kf?HN1Fjaz;>QS%vvA;OR5p-e2x`PR(-5mXR^unH(4|`}HEIa|ig}cAL
zj!pw-BGyjl*H8{jY^RlC8rAi|Fc!F?)#%0OZbq_?WYl_dZC|Ffwis9Zo7BLg5%q}V
zgDunJ5+q`PZ4~wI;B%7 at ZN%=4<RZ2^HgIFt**rEWDr?}-?nvTOf2<wDdVFdmu_+K$
zEtutO3SbZLVLm~-6M4XT9Cp^j|EVs;a~yRy8xGXOr^banqHDN+Q2PMb3}Paak7~dw
z&r9w&6SaT at uexvGKVc_9W9`<}P(E-~rucjafSIsOoq-Z-y<8uh?%D5pI;%Rdu{B at c
z)IMH2WS at zi>gpM&O4AIXq}VM-H3i|&h1PZe-_gO&Z{jv@?2UnXZ7Y-AgfPQU1n!Mc
z?_tN`z}}+I8m$YtAux7EqqP9r{w at o^PT-zk<K#b4gN}7w9Gr_rs-I&Y?u>*sUAmvS
zmfei)hu6#2)~o(h&!XEK)rX*14vO*L;ae2F7bAq6#HK{7)4|}PKqT~tsUCu&dP3}W
zD0BADN@;WU%1W?0xKZuUtg5#}LOqur>*dyS+3xkKC)IQDSEaCKdMfHay%-_}^9b$J
z-;9Y|1RZp38FDM*1GIb at Hr!4&1tZcsIgAu+w%cT+WK`z5zgvHK`&JSg0$IO*=(+gw
zW&(Q(eMa(lC`OX=wxW_2!CrHIrV+?(PuI9jk~P{IbV2SKY*-m?DqM*@tc6U4g^V8#
zenb)Qag3)DNw at nGJIgwzgg@9^Vx%|>au4VVcy^7|)5^O<+aPU}k?ca8`oLH-wPxoW
zHMMpp(d~-}sP}sssS>=vTWYG^?T@&Til3gS9!F(iPqnqAd=TI3RScTxd%C2guMe8l
zANe1NRBuVVHi&!}R~!r)c&>e1J(hS7OQmCB35+#D at 3wEZcNg;BYK?1qEw`@YUlV}=
zbM=ANme$moPm$wKCC8hPGXc<}m7bIjf7YXzJHK$Z>SB(y^v#vbI(B4xZJA_{8aBrg
z?&8=W3ffxEM31ID2}%EmZ!fk;a$LZ-Ck({FXId+nG4b<pN`HW8T5hU^mT5)`#zTIT
z7HSwDui>D}JbBa%%};abM$+(T8sR(eLo*G3Y+5!9NQ}w7?F|@rX|yc~w$b?-P2U>q
z1h(UZg>xFJ*KDYLg<TJy4`8ovXxexq^$B3?5LB}xH*{9gKfL7>tNzs{T4P=1=q${>
zxQ(&T9|hmS9T4EtS8DpVnbve at vKo{%it!qn3l85;U?NtqlO;ZZiMSn1MByfbop^*v
z_O4OReZDXhG4P%pT(r5Ql9hFHkfWqIAr@>ll7gT9E=cajifxOA`i&&Np)l2MtTK`^
z)ybezA6x{2NsX+q(vjFqN8ZVhZ!%zEtp*Gj8~tYWHq=gOB(%{;z at 6(m#Y(=~N|Gq3
z@<B;rxJ&f;SqtW4wz<c8sRovOE82CdfbF0{alv{t7$NA|?XjOhD*aE~CcQ5R!W<ho
zDr<kS$d$E^XTEbnYqU87mT4-tP*1yq78SE7!!~;>2-BakB-j*HAM1vP_CmE_aIIw4
z-8ylXKb>zwQ9EYZ^d~+-hhBx2#s(GC+hyhI(MGHO#KEYlKOQ;&U*N)ePf!PZ?0+m$
zy)E(LprHI5eDPfSc%3ML)2(r3r>Sv9=%Mzv?H?ko^HLL9_Ii%)Xow~b4QNvte<=^4
z_0Cs&YLj%2x_i-Voo1p3#pRGlvE&nM5&8oJ28}r_fW7FjQ{oV<Rv9D%Xi-dnWQ^P@
zP4Dh4e|umbAZvZ?j+2eqaq=xaPKv!fmLJgo*@waFE0OBAuu~&{h`dh^k*hsJ<ed at q
zHm#PbD2B*D44-}#93sUb84XrBZG$IpIS at l6G-_k0Z{*PtlRM0xFf!6^NG}TaPsCOe
zjE<-abl7+6jOmlZu#BqkRDma07Uf3j5!633)=W7WZ&p9oO*c)>e$K>(D$lrxP8WZc
zBjb3qSyEK^Fx_)1`vW9vyrY0j^>$VV$>>P=CfyLpr3;RXw{XZQFo|Bq_>5=FX$m7b
zGap>f!|Vv+KUj~kFwHjGiqCa0R6><p>I-*WR{p_yjD({Qqqf!=YnJSVp>WBVo%Rlt
z%aw<Wo{t at xwWf{acVMZl3sQ<a7PUPAvBNSK>&+>L&e*^mb?8NEE4opgwPdeP!S_>p
zk<_QO2F1U6lYJf9N6M&&wBZYU+P|g!IkLczcylCw&QWL at t3liw`${YQWChF6+kn5E
zU3}S(!F&rJVMw8qdt5ln0iW-}F-T5!J=a_Rqg^<+>;N`hI1)V}AugOox^OIU;aK9r
z3FWzP5_vA1de?<BK}tVxY^HzK!H*-PnPHC~N7x&w-y+ua<6udJb0Tq4{hkj{FZ6$u
zh}+yqJ;%6&$C)Gcx-${5`%v|i)8Vpq4?B%lG#y#{AH)~(?>wCgpYiWJNcfE3=45DK
zDXe`0o-*al&2;<-_;chtG*7;V`gYZ`gYxM4d(N2)+WpPO=5SZ02Y9+s+R(gFYY{v)
zJ!PhKw4-^UYcbzg2)GT{I27OCz5-yG{5D#b^FyWB>5bM!m<C)P$n{r1f9hTP&};`p
z)jQE at I~scN(l2H0eklCQ)~PL+WZZ>MJU|YUjG_4LqATz at lVoWY?CuUweihR**AoKD
z?lNv1`y}kf>K7wRF+mu*{PIdXpshQNA3cenp2Ur=KeF|m9ROdIXIZU)4whChExkZw
zHKFJ=61A?}3$_8Hu7*@EtlKx6;$WlyP at Q|w>1guqBRC5LGGDSgYBB74pa!Hgjr4Tg
z7QNvz#G#k!FK10Py%PTec(0Opy at thc6IsOv-<*yufsF=!!}ad4_Ft6ah-sx8MwU|8
zZIZ8*&^vn^oPQBIq)W-KA@#v!@Ihl at Ag}kKMSOLkw~edg7{a^FS<g8u5AK$V^)HWZ
zOfNYQX2Z9oT-aTZ+E2`gZ|6d0QU^g2&_z<89x?Ua5mSFUVru7zsppNDT0dgyp(Cc2
zjhOld>bH1pP>hSGa#K$6)b0^d;};ggi=SOIWn$43r~<U7^sr1b&xa5+SjPqvoBZ}Y
z;`xC6R)>C9pKcq1M8&?6=pPkH#}34#aR@%8^terB$g$uzsAGc^x@&l>hP!+$o0Cdt
zNMdu6kvf4-TDiHKls-mH=Rm)gfnFm%FcE1N`j0u#_}2Va8hVtGdLj#rjZ5=8jAScf
z at EFJAa{aiV!${Fl;2A3P`a4Xg3lQ%tog1lTlF<WEHfSWtff?FhBtIp4n73i90>Lg;
zP)K;I<P<GHC5_dg+4v6j9-w*V2UsySk{1${9_-igAYOG?h2l%67a86!xQpPKhph-T
zL3jK#A_(f?F6v!^+D9O$+hc=h1X7Udr-Fe8>Gjy&9G|jIaK?u*q0sS7S;NuQs#qHE
zl<+I$Wu0$wHW)^Z!r2`C at EbBC!I;FwfXw<eYQvfBKnHTRK>xX32cjK|i76oLy#&{3
zOK$eUR7&c&KG^Cp01iT2|EX)7ab8!vR%-UIDOTK?_6J8?^!Bv-WP92gdo7YN<WXMf
z2SgRvk6|>&`0Bhj$<&7SgU-HpzJ_|21pp~QO`#G51Y3))tKD<6K3m#r<D#sB-$1|p
zTgU|Li-F%bx$Ybf87xI at Xc>fD`s|CcJx1?@Gg2=D&DppH(Z-8iN+2zJXleKyYG$`z
zJVOLgq|Q{EQ6$Qwv>gDNV(sx3dM8Yb8MG9qLhvAHi225h_V at xORqd{mj at vaU!uTVO
zEw*!JPWmTA>C&L}eD<#ifrc_tUq!yXjfLeM#IV7P)F_sz7NFf46}9KH7vMcp>OK_M
zevt+^EgydLZa<7Dk at jN7w>RFMFL-=Qi8tXg^c<04Vr=DV&P}L=h}sfSADHTqh~iv1
zqW)}JGcbHlE;rZx_TQq{KDuuGxTsnm!AAz`KPoY+pE8Zx9+EYlXsE}y;xZxe0zYr7
z{;)ALXe6%ZH|E^y at z=)cUO3_H9uyJsXRYFBD%&)S{W{A~XX<vwnAWOtyciWr<+E;e
zJKxN-PE+m3N_Qn=dOMlUpQ)~849;^{84%cRp`*G<)KuL<ptqAS{23L$CK$nM5aN{q
z$c7PMQrc<qwX}(Um#&vUeP;*e=yijl{q8&n3F(W=%`^^ZP$3v$X6Okcc|rxE71nLq
z5PJa(QL_wC=tTs?1UP~f6m2hUhPh;_ivs|K2NtN;!hQn|BLIIv4RA5Fy|~F#O#vXo
zD-x-4jjGMz8X|`Qi at 7q8Uoixk5kR;A9tG0`avPAtKyCxF31pK+-yCitax-9?1^GCQ
z%m^S{&<5mIGkrJ5U*I>J>25xPL at P+NY7%Woy1SDQ)+z~@i?{b8#_dkD#=l)~t*$P@
zrte<GKy?d9x|?rNr6jGllL3F5JBdRED;QX-Bp`#mGy^AE)4E-VSY0a#o4$J+1Jx}c
z>2AJ(fu!|zGT?7>CvnK2hk><90x~#aETeCCqBX7Cg^1O)g|O+ncQ8=h0+R0L8yHAh
zZzlu(Hg^(-4Eh*Yt0W+UQ*m|z7&y_I*6l*X>gp$~>Xx+h-JFS9-SkdE%9+F;Sn&~J
z+vP*b=1!uLPo?fO4AixPl<p=4qe2l-+WGV`1ijq>Wh&knM6E8)e!*MP(swuE&FUV{
zxZX}C at dw^~+}ueN@(eTGTE#$JE5PY)VhXeK_8`pd4va*r+ZlkFNg&lNY3aKc;mzu9
zW?XM4llTKOK5p(L3YoPs-CD&!T`R!pZej|v_jRp0FcPh9X8>kx1XA5hv$|I at PASIC
zG0Io0Lb$n;fUMH)E<7Myz8oQSKo3IXiO~G1Yl&{G?%u+n;#z`tUCS4%o5q+?@n6JL
z*J{hGdz-}lH<>^?@y)clpF#jNvQ%iRYx#=UJ`KabSkv8)V2-+$0n(`9utsI19u+Ur
zQdfmB$6D20I|xW-Ty&VamMX7zDI at tadqs)LBV+?<$U6~{Un1DMi9 at NA01@l{R-i at F
zKU_rS_#gw@{`Ipv!~rC%L7F at u^6UYr)F4$J5P9~1^pRishtdZeM)K?d>CqtD5V(1f
zXAj5<4YJAuBF`R>P7TuS0g>k{$Ysqq*{)5#Kf$?IZKfwB%oFk4l<Yw7o|omO)Oc`C
z0t!6Cy+*Pn%ql&(JhF7N3?VMvXy`qBuZcr8X%%9Wm<`hq%P9Qryc~`K(>XhU=3-f+
zYQc#+mzG8R8}V4qIMZV#uEnvLm`hLhm|9}j9nJZDHFn1hVnv_?<MV^&x}U`p)$jht
zaXz#9K at Rm-Gy^w^d|vTOoE>VW$3jdwONUQ8aT8<Ku7Yib-{oS@(=LPu1`D at ve2YSg
zVp5L`Ar7YqMKIq<zTXHm)epyqeFv($+geL0<oLec9pBe6#<bRILA*kwTdm`pnbv9Q
zVvO%y!^ZckBqrS at _^L~f>s^AF9oNwdWc)|Cs)jV3A^gE6zE~!P at bd7WQSpOqMn!v{
zsZQaTK5;M-+Kh8Ik41H)Ct|2J%cE+Pi5)?qM~x&8QZ?1_CS6VH60}wmrZy96OogG{
z#F&0Y&X^um69WJZ2x|NoqT&QiYZ2ftsR3>kaGOkJ27rt){fwM39mrw8h6TA#BQpXB
zmox#{1acdY!$8KEen!ri4&-LQHVg76HNu$@K)9q0$gR=z6(aY_Y&O$fd<2P{F+HlT
z=tMMHM*^1qH<F8WPPE2fC%9I37hpkj6;V`|fTX+l7FE|V4Z4#7f6kZ=1}pFe1`?3L
zM>WJ==R|8->x2l at HDJMD8&Oo3fTX+l1_n$60|xv#V>%f0;0+8UAcHVPS*>%THLZ0*
z#OmGxSTNW at 6xAgl=`Oy30n@;M0e{Yz4hDUA0|N=j;JBlOffKE1trH?vcRyiO7t_Fp
zD$tS at M-XNbe_+K&N~{m*&X^89)S=+RKwVYNmvk2?7!`LAP}+Hx=IwxridE|vM6K=s
zfm9dMz?&M{>Ke~D at 0flap`0-tJi|=4)-q6632?eg>v<IPgCj|BodYA$Y8?YGGl{6W
zm<DEx5LjK!jPs7^*AdDY)4{Bj>DF2X>M8+FcM(%cR;!sgFcPiSF#xkR0;w*h!SG|8
zx{h(E!?j%qvt#<I<#<INn983!tgEYtW~}bo!k}Uuv0xFbU4^jgDn?pedQ88A6x3CE
zOz+x;7l0GYR9ErMw7Q-`05x(&kB;RlV*B(P17l5BKY}^xDh5c?WBOJj^^7bST{Vd4
z-YfW*KeJcVqCBdrw4%F8E4nM((cj(&qjtArOhwWcaA$>a#m$Gae#S)9pQ6gBQ}3K+
zO&v3Mnwn}1M$^|$2l+_iCG3ED(!VoO{fWB`;s-p10`7`(?u8htQy(RI%TBdQ_B>UU
zj0t_%j<rGYsf*cW*8 at 1~&v7ir4F3agKy^|6HAVPeiUSIEg?|9}_L%_A;m^L4;eU4Z
z2>b^LS)lw&d62>`l%JgJvjCjKe~Xv@%_H%DstErTIPqy$_>+@;34n9>uk`YNwrYg(
zuPws=0e<zr3*{##`@aC3!@p~n`7bZR|M_=zjXycrYXO|Yzl~Dm%Krg}jZps1BJ%g-
zF4jLe*|+D_zuB5$J_Gv_iwXaC78R1b>vrr?$<0=K9w1 at YabBO{ciSN&@S9$U->djq
ze-~QXH0=ifsrgl9_zeX|;D`Mu!!^tJUF26~?~~zImf?5$Nc<`b@%z!+yH>t3dk!E`
zzDBk4)bt7XjstdYWc|*PsBs&P<9xawk_I)+O~TdhnCX(O at a``)*S}N}89fart70o#
z=sCFIWIo+*Zv?QjzbNa^%GkSiP^)9+O8t#7LfgA{h&E5_G<897dlw^`GszRX7q8AF
zuZaC?R9vU0b~o0D!P^x^knhjZ#;|Mqia#sC>3aGSv3<qZg+J>NBUvJ|_+#K1DmPU-
zZ2dMEy_eMB8H;~n|H36y#@f>UESkFXX90C4q5;PU!q*_I0&WwYt6cjR$W<Dd{;W&F
zfC&roz3?CckP$>^LTCcH4bP@){{q?6$n<Aj(hQhpLEc{@GlB?h2wO3?=ms!eTY>M|
zzaY`7Nzk9=7`cu=3q?2=AM=>%j!q(4t2F){5?HIc7?~DB6(I7KV*<nGU?hJTf0kq9
zI{qv$;9>)?R{#hMRxwa_NMNm6$+xr^s)&@g91|D}7|CD8pXC_2jz0?w?ky3LJpclO
zZ4A^M5?HIY at GUKdDk9}A#{>ogM)H^OXRYhQ8z at P@R_6J}z;>c{Fjd_lfwih%-o*9=
zpDJ_%$M#isFp0*Rk9{L+3TOOT>ne4pVUTD0t`i*c9- at S+I~-8b$D0J!D%uK;?F-&b
zcynxDb%!KnP2h|_%du;<KP%Vv1+#-SvoPset4I*cB(PSQnwg}f#YS~(Uv-BhWli9W
zKWkm9Cd44m_64&BP2Pc7q~9d4R&f-{v3-#b#=&}Bz6xR1_U-DzD;3Ccgs$O>+9ouA
zc{cD>1kbg7uOnuj?Rz7cd at i=H_Ge`*TIx3HE;B9WFkV-P4$~HJG3!{X)f=_a`#BN3
z{wy>VOB+p}?5|4<!a%+U>zF1!tWd|*V~xm))?$NT^f+t~yrUCv5w+EX5o}g}Smz&%
zRDV>L=o{2{2`tg at jrQ@!u#Zo-4yZUy9k5 at 0sJHzsy9KGv{yq_gEWbUA@|!*)zh7Z>
zr#QbZq`Lel&RKqE9Z;-%H6!xdiY2Au{BA+2%a2_*%kP$dE5=W(?V|Ph9A+=Y`8^;W
z$$F9&HI?P}$ybW;6YIJtzp*3odmFPbw|pye%6Do}eqv1*<u?Hoi<j>}55KM)em8x&
zSoy?yF3Rr**h^HLUlgfM`P$$Hay!G at l|`7fFDl*>eur<HigW5ls`ww<;Hz@^oLrR8
z^x}N>7?IBa&a=~es<M23x_`0qj4#e-HYgP@&&e4+Wm!HS>{pCWWpO?|m^c^b^K+!4
zJh(xlEb9N5CMNck8CUQ91`OIXj#6^$OCG at BY$U_h6Ku3dUm9SC#0-ds^Q12gXWp9e
z*6h6973>5IHq|r8#I4YA3^H*&I*vgmu207?&~a8W=%Y4C-xaJx2)Yuel*A&njIk=k
zpboF)2vv%I1)ovl at k0DCLf|t{DMn@>njMH%4Z%RA7 at 5gK7hbSm7(3%v;VF{7KDYxR
z_%a~^Cf)j#0biHvR|b4tp<fv=M=KG+iIXBNO?54vREqJ~HjxZ&aR3;t0ebM%m0~;z
z&_hH5j8!SVk;^uO$Pxp-KBZq7 at U>6BG7uj9c<4&;ue|c4 at vfAdH=a)Izze^3aISc`
z&&RRS`Y{JU&gsJP4I%%$gfG-K8r9tS!d-HMY(Cxx&^x&dk626UiIoy#yqW&}Ac^*-
zNK4Yx at 3p(>_aw_43YXrL>vkeC_P;-k#en|HZ{}?4LA@{aG1EE&r|LW&|C_1On#P0J
z&#xGd#SO$qtm}i~!dGdXXW_~{IW?yGF;n^<Ue0eoH#Xt<y*gvz?BF(5bbWBpIV;Mj
zXxYYudBHxTVtyZQ<e>k)VbD|!J0gj<@iE5J+#B&EPMFjB4%<4$vtV{P)-mREW9vbq
zzX7wl9sH_f{l_KTPjU5?oG_gK;0}B%fF1bhHC2F>-64(X+w at lx*kly-g9{vCn(op8
zW)j=cBTKjQDPrw!raQ_b>C>_D^C9eFE+lh1#cvEesC^^WnV95tl;dm3GCVUxZJ~9Z
z2Vg{f+f?ZE7nS3iFlnPm`l6c6qd@=EfSI0xx!7Ys3K+ at RLiSxFxk1QI2_U)(AK9V?
zr(hG?nGDhD*hzk-&^<lCkKEMdH6UEYdH~@jO*jm~O`32RM}Tq#H3Y(!?9Kd634 at pk
z!cBNK at yxJE2tNYIh&ny22{(bT=@4$ygquOQO%rZ5l4rPt>tt)hlx7fX1>rUjY{fIf
zHX+=g2{&uPZ6MsL39so!D739kJelcbj1UetFv3XwmNRi#zn5xR#@L8;Ll*)Zmn6_?
z8Q&1;yh*@{`U!9&>KdX5=LeV)>AjNR{6*4hRw2;*SKtZ!8KL<z!brZwX)^hrp!qWv
ztX3ibe}PuZ_=ZU5O#<?N4!Gb?6wRM0;7 at S=z<(P8&A$gv;LixnpAq<MNcf}mqMAQr
z!D<Tv at E2&cjBki^-XtLZ12uo5X#PwAe}eM|{yPw8{(X1?e at 1Bjj4+b(%lMA+-zqMV
zWsC)@egxnz&}tdq5b3;0K>p_d7v(34=Fb%HCpdqR^fgsbQs56{AJvtm4>VWH_=d<b
zMyh2D>Z}{e5vXPSi;NNzhrR%)5>NOhggrg<n2}tjGs;*b1_)-|DbQ*e-w^4%Nx+^O
z18zh;Kose%YnXzJ5}ZHe5bVb@*|Ne2)G~QVFKc2PyYLN+Hj?+luMi3S1 at nKM3&tYR
zB$#!lK&xeZL!|R20jukG#8uZ2MXGBJQ;-XSXLHfaWXozrpq9x?df6hzNiG<TaRJVU
z2pjDpv;gXlv0&InFzZf%R?GN?Nasxg=Axgt>KdZxTrdT>Ah?qYV0Gb*3jE4d0=JCs
zi0;;J4DhyGzcIku3jM|amAMiD^m~H%LTD`>(36;ItiEB3lgwC2?!iOXGDZX08ISR`
z2XXXxe8V=ppsWnQ?J51n0B?QzjRC3mBkWqnzkHLSc$o~v*>fzzCa)OT|2m9=a-L}%
zE4)~u4}Cb&6(c-cb$6VYJHYWVy=;(NdlT6ac$pqOmvNAcSl8$QIFTKIQT<<nTc^%i
zLsVH?uQT?$l340aMxnxp6tUKjgsJY-!FMq5+ at J^GWeg(e8wkzubWMQoy;r)Kh^QM#
z4uNE%_ez($QE?|hiSs}W9*l~67=UmXfh-h7mcHG at sHJZ)kY+KNrj`+et;yF2wjHEa
z!^Dqb49BSp*orBipoy{D$U%AE7r4Ilg}wWQy{oS at D{k*T1bcUV*52j*_J4`Jd(E|<
zx4rvZI>+9fH{9NxFZOPX_HMi{*WNV~^DxmeQcuz1ef1fcKeA)~FMFs_ at jq@yy+L=>
zWen^y#FL}-{^f|s)BA-Kexq8`3O#{iUF@&8ehV4B9u?p3vM>^%089j+#sF_k`i()O
zx{V<COx2#6 at k4M7HZ*>v#t3K(2Eeb<ZwxTb5Cr3leYJQO=ojL+^=+O1J`6a(puGV8
z4DjZ$G9qdXK}_WTmol3dd>BgyiF<!pkH**{Fa at k6;1h)SugWal#XnuV_sdow5gb<v
zOaUto_yi&TAz6In|8i(?<hT=w!0!^60#+*U2}1l9EPm_x2g|=*_&XN0$C}1OqM6X^
z<nSfpqP|expGkc=roG3k2Yi_DwR!L}q<x$@hG%{O_yFNoVky+|OUP8`0imy_I-Y4x
zL>X+muK~K7+wApxtPO%VryFBb8=E-vf|0xrjbq{r5F8lDn-ib?8ot!To`%GmL7z{b
z7;)TTJTW5nbz}AM;jWNADWc*K40}8&;u!a&2(fw`!WjHWe{)GKtGE at 9_IJT1`#oU#
z%05<4`W^;A67j)~_2ebolmKRpIyal$+|2oRH#a9AD!Dnrn;Q$MdAacr=6v{0a&Yp)
zB)fte8r=Q)81JP6us;4<a<G;4 at e%4{9CLt=+!N2EKIEg}ucPRxt+B(6)yIUpj+3v2
zOIRCQQ5$1e8wSqJ5L?+HOaAhmD~{h_eXv{E$LI22BORFh|JSJjr#+Sgoc1Wow8s`^
zAg?`+L~33Qu=k^CNf_m4;FO;UcG%0mF+DkK;t-Wa>vS{1X7~w~`x{Zn(;`v{zds0u
zkJLiqU_41RtN_ObT at U+pRUi&uP2Yml2DNn}YGUu5b0(^(d!Q;#6|&NQqUux=hw$uy
ze4QD#$8%4C#N%X`G7-iOuFRusC+p__I{1n(-uE at P`5#781K<!|`MAH9#g~yNWv^xJ
z9|x8bNRWO?)q%4yj|02??Mhk7PonLi8`F~mC~pAet&;LiMWUy?*JjH5Uwo4Cb`&V@
zdZZ37uaI at i%X>Mcya9VV7Ta}sqv=E^vJpu?Ac3`pT1YbTu~Pw#{LlHSQvr8nDxgbO
zK#u(X)vbYSZ}bor`6mab{h4H63q~3FM}Afy68Vw9TC<XG6ofZ&^K+V;pFiV4YlkP%
z=4g<d{CtGeJZbb0mi&-|lOHD8OTGDNOkdf9NazO!jn*|=5J-NW1{fP^nikBfvCg9f
z^G&eS4MlOFU>;+v&IsnXLJehkh&%0~EOK(1>;|UWt>73<Pil^&FK>ptv`RLfz&-|#
zyquoN#y**BoaAH!dLomJ<B>XCUWBYGFRiY;G}{+|iOyHu2R-<7 at keO+2H5Dy9k9`j
z)wR$*NI<uH7VizJ2i-2_XSa*(jy}*<W^W;!e2*shSF(2!|IIx7rwZa%*&B25k96_v
zJp8{D#5e8rx%el!_^;*RKVA^O)xJL$|3#@$<o}aA{8tL$uj*p!Z9@|78<q0E at 8TbT
zlgGUESBm#x^(Q+4>~}o)%U%2v^Y9NXh)+qf_d$}&|27x at +&uir1 at Zfd{|yiR87}^f
zdH9Kf_#Dyfg&zEbi{G1vzp5ZUM-2OB5B{Mp{@?QOpDTz at 3&7qg_*zp;06tHin)%Ss
zP`$BwOnsN36?ha8>VtY?O%(bIhXfwC6C19|>=2^0{A>KafW|*3AKxs5UuAzY5C0tp
z|9koP4TbPc`<OiZ|8(%r%*UTt2*1 at nIuHLh4*siu%q#!Hh{!L$d_ZHbLkh+*UH+(p
zfBGNt at Q*{pFnkf8AW|~;`$GG${;hocjzah%KFwbI-$Tn0f3N)VzrVEr|CK&8|4T^8
z at PE|7KPn%8zXJ6q-+kGmk&?l`z`;KPM04b4Tp|8l<nQ<Le-exI%>Q6M|Gq-}Mf at Mu
z{7wHBE<)f4D4r#2q!zL#)V^Y0{s^-d#{R%=v8U6Q_!C306?wOB_=8^P?8`9l(2Ke0
zamjN<LsvNxptFCA2!&#-nHt(Tr$J2}51AJt_Kiq!*Bz~HW+UR#-I$?U=Fs)!)9rt(
z09`4|UyzceOYz9i9Xrm=?{$<B<oAJXdHMZcL=4NX$k_Er$<S at WzD%bQ)?np9SHdMu
zX5U41q2aQX at EjuYi8i&`4 at tGwWAdtZ(`QKXdsa<y4~OKk{CqAhluwc6R&PGLDV`a+
zZ|>{TEp_OAmY>yE3uIM@*pEwYJ3$ZmZNk1yr~FrD%Ku}hQWrg(SN>Uu7*_r&y9v?S
z9?+jkWJvxwQ~v*SNUqM$=T8gea|`ljTRHhOGemF8<nvI6=wA8x9HfHE6V at ivrXq9m
z*##CEl4CRVd6+{onosiB0!8m85&LUW`c6EuKCv&=sn6Z9P^BAx4HW@|^i8eEvhwsK
z6<K~h%j}J!#UM}k?rjzJ at MONG#y8ac=K6l;JFOx8Gt94T!{IhK^k`g9G<`yMWc}+U
zjsDkhJX%ye+Rtp^04=#*$-){=RAK${W4jm8+5OS~iv6f-1EXjWyZceQ=vTsqG&+nC
zlrzYFkA-g~2yRqdC1BRB?nhl*MjpfVqi!rElYeSI>R+*ZgYBPiGyfC&QKRB2`X~3J
zuF=TN|L6Uv`$_5lh5J#@k(}PK0y2c1SF0F&zWY&cEfJDEn!z^BK!VR{Kk9p$L7!%@
zLo<+ISN5aIN7et}e$=ac7#L;W at uSiM{$JXUIz}@KlllKw_oM!!-&f~;lXYDe%9gty
z^~U9h%G;0n^Hr>Z&*NLH;rme?Rp;(U?bfPJzQ`JRKdPhjt|P)o`%x2TL0<Kw at RKh&
zlj7UBnbb3>UXJ(SlR}x)B#Z4kO)Q40&~%@3>At~DqaM0{!uxQ#Vxc`iP<>vd?4-_Y
zeM_95$#1Jm_mDigdl#fDme0qs`cO}iZOiVbOB at BYqci&hm*}BfY4BurAG{CCEIbQ4
zWkrEqfJ1gRpND74|1nHTaW*`kN0Rri4<o53>vs~=DgTxnx)U;4eb1$9a<i%@tF?F^
zPM2it0|~0>diF;q4$V|*(k1#cmdiub!uv3yZKi!uru_Xm`TRzv{O`k5lk)rX^7%%=
z@{^4HM7I2%{i2DZGWq<WOZ3>hd<F{Uv(+A($>++Pe4d)gXVN8kLmtV_LL{|QWS&sf
z@|4{Nnm81_PRrAmT%!AM<;YW?JFyBdygsY!H)Ms#=P}IGQ`{|fWE1u6NERAC6Y9p1
z!6gxYFV9mA4H(I)9+-GIJgS_V$tpQNi&($&kq}R+ at 4g?Y+&}Q-1 at Zt#aHF$-0M{zx
zNZ;(40{1te(%g-oa!Je-Aaf7F{n{_#958@$1>!f`|N8)?tP?2c7ytNH_bN1g at r|lu
zkeanGqgF)(2kokI?213lI=f=<bai$)zBT<GKF at l2u(A57dVeoY{K2`qoQ_`6BNf6g
zO<x~usO at P`57y!EMtp0!KfX2Hw=Oi;{-*P>X;Ybf1Az<XzXlq=_(oeU5*E*Y8&b3R
zFG#<Agx$iMv071__)4TY{ku at TPaiSglSa(<A<TDo;rvc7UKvwH%<nfx&hK(aP;t^%
zj!1egQj6txQE{SuSc5EHzYod^rS$g#_1j)qobKaTeJoD*E?LPeM)wZxpe;`N=Oflb
zlJ#(uyS`Vj{qA^bMEWm|SS1^f`uFIs9g%)uMEaw0=ojnnH+E9A3w8O^cDc)Ir_&*T
z&z7eczwa$7$ZWs+sBm{lzqHzK-OJrah4t5s(p3wUrvl1#*I0<h%<hMx-i7ku^VtIW
z@{jlIDzm04`+opjv^=6R3$gg~E?1eHCt=?L_+2Q^^n&FH?Rt4kyL_bbNS7>Bo-VZN
zF1C-DIx_(O_sesmbkRcm*6ebTy0 at Sk+E)X97x+n+EyVA&b-P?XT3YsffZqjv%c&v?
z@%z%Q^XnqNH}8g`HCCTl-nGB8{A~~Q(e}dHqq_ueUn(*CFvh!E!)|<@kUGATInoQ#
z_NEuJ at tpBGy9w;yzM$j5%Dd0O{*uHCNAKFI{mYlKbow-X5rP&E-xWGuD(^Yrt8*@k
zqxQ=}LB|BRYH$BH%3 at mknW~~*J%q0r_QPiaa_tCCF_QZRKB`NP+rzAW1mDLeJ}ztj
zvU;rcaojjir*H#k*=g3;-A+?ucjtWr-0d$UPZN^In<}I}#Qw<Rd5J*?-za7%n$-{a
z-_bW1w0{|)dZc!1o!XLEPkN(--aDjcc?(mH!hCKS)wS`L&yi$KLw)+W)j*$aPHE=L
zo at EVG;L1kzF6y;{^}0W-)yZWMeA*eU?oE$733tRe4OOY0KtsJYsGdYSMXj-+Mm2Uk
zFNbmE`Y=e%=T at O%w7hB0evTwRkCt!M-9+33A3XheQSH>VDLuVLivM}!)!U_?eujBH
z1|R6EN6<#cu#JxMwvqoMT;bu!ex)P(>QRV3n&^0GqIcLtIr^X!M6F|RpTTiB4+q!t
z7`UD%2jCUdkX3;@eD=3+cMtaN06_Nc*b^Z$)_&M4p(-X?Q}_Oqdx?;Es_p=PMjaGL
z&5>o+Qvn#g8_8~G){Y0~kTvxf=jI^GE3{kxS^!{$ZU<3P;~_J{D0FH7X{ak%gnSlW
z`FP@~0s!7dX<+pfs06L9eug46s at LsVuVYoo8iNI3Wz<{IV?N~y`lrqjMfRS*E0QXO
zn0RZE)BxnzKJT|hQl)&qyroF$7F2>A0cEQebA5H(L at VY;1IBho1HyMgQ>IW#l|8j^
zigpg|c7I{CR{Mq`Xp)a>3!`aA#=b=orS!+b<SdX+IbXrPsW2v7V^d(+6hae~u&xMA
zasSmIu~0*rRrU{lT_mZ at -nUp%tNpuTNv8eXB1v)@s{Ph)3bWIj5)LWSw5|3}@Bv_<
zviDOW1|g>f65FcmH(xE7qT6T)H0z-x;5RC-x2A?Z<zhL+yIY9ve at Bs2snM5;rAlMe
z-dUKfB(CT$oG7C4>%v7 at B}_jmlGw#c*jBixkegdxDaa5VW=vrm`9$BYD^@*{(b(;U
zs|SnhEw>d(s<O9<&L~jjD_Mk>iXoczpNk=GA>x=-ML3q(2Ny$>N;AOGT$?#YQ|`0~
zt;a2e>$yhjdI0qf4b^Ku4EfAGuQOiZy#&4=nbDtjc+cwA&-zX{Z#?~np7XnxzUeE6
zgD){Qh!d)Fp3AU4&67HDA>OCFZxpx6WX}0c1_!^McX!+m;ni)lN`j3nj=loGUuXPm
zb0hDzs==r3`cqi7siAi09(=Hdb=g~kZTmA!20IzT#fejqHb&LM{F)c{A?Qm~OnmUW
zi0Rh78b0(V)0p@)59WvA at 8G&eqDHJVhorj1eUy5?@v{f(_ISdycr;Q4cCW|kP4$jh
z{aE6~^4M2Q>lEzLeKcxJ{K!l^h_7Rxh#jK+pxzYgl<`@hW&p);<;td~Ks_45-2>kl
z;&hqc9pV0hwn)1EAb&#=XP$32jfSVBWmp&-h=eL*q2beoXCYwX7PB(YU|7x&H{Ph5
zgPj2B)sT3?3V2dJk$0af0m<J`IZoq06L*Xxuc8|myLc*n_^Ou;24<CHf*X;`c?ro^
zN9)LPxg)vKZUX}Re{wILnNBStZyuX#TKd_oNPvWymQFQ!K;+p2!VCeV$^#<L9*{od
z7a+2D>M)XL4 at i#&*~Y*Dk!KIc3JtQ#10v5JkWLNK?E#VJEXbwJxVskL6!(f>yv_8a
zgptzZrZjm|0!V>uXq>Ds9WHkitDzhz_@=WQIk)h#bdxyvUBVGc$P4_K);e6A^~(g1
z-*0a>mu`^kxrg-Pny at hL8Q%-N2saDuYvMZL6(|ZWAc$7GcPHbzF-N3s)yEK6xC>C~
z{<&B!_LaffbnZ1Xk}nIZNx0W2=gv>un{K*TxENmZAqk%It8aZ{M-#a~J|Gu&1-qD@
z$;7?EX1=?LZ8?b)bza7e8#lC2j>B#oEtEPMSFizMahX$&#pTY!*}T?bc=Wv@|NV<+
zQUz+Q<2ki>9gjI#y0Pr=oC_ce+$lQi6X1KUC~@z<I+gMNSeDW^2RRh2J3_?moA at hr
zhx-|;bWzaLrGj`bH;y{SmnxYyW8dJ_&?Eru5&M?2zQW4}Bd#zl$J$^7!o-_?GlB@{
z_+MRA-0r6vu7-4QNxUON{ICmOXC4vcMU>PXE0{a{jB5AVN1o<T-EVZIDxoAFkhIie
z+^zvsNckpQ)b6Nc3MW3Z2@}S-5fh&vB>C#Iek{El9Ja|jwl6&%JCAbZLyqdL-<Bbe
z%N^@Q3ZuB-SFcy%xB_cZW&MQn1DAb;hbAOfVA#MVTc(vwx%@SrQ=U|k@>f&+X`t7s
zr`l(D3E24Bp2U3=d#Lvwzg(7by{^&;`YLWCc^K9MaZ3agA^Q)Gme%qXS=!5DMb*7>
zm1tzvna at W2f0m3s18)9((Se_0)^TxQjgk5ibUW%LjC@}GAn+)Gy1VI9K=7eDVl$WL
zA<J^2%ZaQLIh7%ehjplFXbKUOD2^&&1{{HK0b{MmVK_f>%DMxym^q2)lFOOP!$FPV
z`kkfhjtA!eA);d45ArDBVp3N&dXU5)RwGZKe5}H=k-8Hl;L2dCPx`IC_K;VcGu!;^
zYC3TuYBL2pY_1Jm{qlJJYpmYs9DKNg7cehwOfQ^Q`&Kml3!z(wTPjVZ<v#Vy<p&I$
z<czcGDBMC?W~#g7KJ~<aKZdJt^ou#+u3!&%QD05Pxf$wpDIQ>WH{&Kh24QK-(EITf
zY#8RBnVO!tap<^m_O at RLY05X&w>I-m)1<EqMWsAOaKTslfF5)G%Oz3&C+ at 9i)}&Zy
z(mW&eM{e~39tLmS%`K}FOpMi2+HefoBwU$_<S-6#++n2l!8sX(#Tg|%vBQ{B497t*
zh~Qipgfq&@@!!PRD*6;eyo3YBnkHO?i~BuTFzfuV$vt^sU#*4RsQyuq{hw_YrW81b
zAR-J94k0Dar?$;e*9V&bk?8aDc=)kaqc7B0VkCbm_JW+fezTmULmSCD1w-1+LeWU>
z#D+jx86O}tq4>s=kC-#+`5~Os;^_Euc>VyIK$1f`I~u9;-r#qD1LLHhB(!nzyo?Y~
z1X$9>FzOBkm%2j%Z#c>@8=kB)XF`o?epn$Nh0d$@E&rD5;&S^bFKXkhxlo8$9A9?^
zK9R-8^^x?nnuv7{%J^h#FKF59fG&&UnOhZkG3`;H5K+$!+;1vekVK;`v>`Tzy30u4
zghD-F;!jq&uw&J$)&M(4wk^Vd!M??CjZ48uo`tH=RH%TXs5q+2Na!gZ9Am}~cEy6<
zw43!4S_8(_m$QZwi)iKj5htrWz&ho at q5+(tgR7x%3A*n4iKHB*<d=&_VNY%YoW12^
zJ%6alXgAyx9zvvjkPLsYwMnZ=E@|2sO>3<lQQGQY=U+}Tj{rk%pQllC3bstxvTx$*
zkI<VaGUdn=PBCXrGZ$e!DB1s!kEg*nql0MMZ(u`(v3g1H%-RnIMnnBuQvw_p)H`*d
zznDgJQn?X*6g?@9i<qBJZjBv8`m7{u<fa^D=s$1aRvWbeSjN>CFdyo at +8+BSgjqj0
z+EuqEZq;3Dt$6VlZ~tM|;kd&9dt_fNarZ%({!Kjmpog1aQQ>9y3cQE9Y6Z&7v6MQc
z#vMTIKV$to*I=+;l)WCE07n at iZ(kVKFooMPmJ51#`2S>FAI-76fN{;eF{v at 1vOOGC
z;F?7yB!w2XYg$9{su%@0T3)iL=1DwY5K6My&<9<;5sPGX#t%>XM|DPQH|mQAyT6bF
zcf#~J%E7l~COdqR#Y2=+$M4i~AnohQ0f$GA97JGhG=~0$yW-f1F?LP&#lA#yqX#0u
zv1xjCk^|!g7qjwsk>vb$vD)YEgIc_ZmKJVS#~cSs1?LAaGFNh%mwXt^vhwsxJr2DR
ztB-Kd>pwn9S;8%I at DK!R8e#8o<`~<XDreXjq%9rVQM)y&zYW|6dHQ0${&}htn(c*D
zip<x)EuwV3zDfs&tzlfus1md|^!wq`;D_(X$VJq0+Zz*_w{=Tb_Md#pKhx$oFB%ls
z?ssSOljB#A?5+3=Bk$RmnQ*?Z{S6Yo2vPR+_#`_UFB-BRheg<b#n_z}Uxu;Y=6S8+
zH=r@^I3#c at XKG(EiGi47q{UzzxF(s}KJ?fyYcKWh>}z5V#=hgs_q|B$FEIA<Y{b+X
z*w&<3xYS*H&>ldN+n<VnyiRPoH>d%8$gTY~W;t=M7(u?+KD0S#mWZ`=O_EuJGm&#t
znPDDBL(EtWS6c1Rz;3Ju^`LbMy7a_KwX-htFf5UY<#k4M2ThTeF%b<XKQK}k!_GjW
zaZLaN)BPrg5A`7pu6{g%gkyD`@ecC8`d!CderRZ${VcYJnbtHM{*TR2c}Bz at Y&Z=K
z_Z^{M0CW^CQkrmPIu3W}cDD&MBkM=Or<jHk2 at D)K&}Ezo^q+k-88kptwg1G at UnKAw
zqdCaEHbvDZ1LHD!?JS5pOx~Y?;Dl2Hm&1QJrQAsW0Cu&hp5hd|FUNj68dP at OeuK#i
zA%uZzr0Vd18zRMY4gJAL9)l*NoAT=jYlqlQVdLgrJAhZ$Pi+7E4P9LU`zon8n!TYd
z#`U;;N}JB{ZzUg(9n=5a(+NjAy@=a%xYPA!rwW~F=5E`EP=ST*feTM&fBr}25MS5>
zu>P81{k47W_CV~ELJC|o-bs!vAicu11^U=kvWlE1v2spqe*!J;s8K=o19<@JFz(vK
z&A~p{9S|rkQOs_cGn11Fy<7oL{tHM*AYo>FUMvbPhOB2Gj_Vch9{4sVgID6wb@=E7
zj3^Fv8 at _VkPHI%o-N+a6n$*;koPW9vZkn%}wcE_OJuPbYdFgR*noNBd8h5?lT>256
z`theTz7F+<wq}r#9bfnPn2Hn79QCAcezylO$efZs;8m~!FC8iKAk&Xa-{CCDIDMeB
zIseo1qMOB7;&f=0Akt2%9^{la;|g;9K=ylYp=#BiFd-XDD?PE8)7Sku;!x!x#r_-T
zpK1dj-jJDS2ei-!u`fq)*Im>)t#ZO?0pmw6N$wv(Li}}T?bw%1s~xEmD<_<Si7`Kx
zisB4boDBQAJ4uZ1?dX>+M)Gyi<vr8o;2XtiRx2m$fkyReR4oZMW70>zfm;CxF`Jed
zpQB@^kB?f-HJCs~Loeg10JIEK&5YmnR(-N9q^wCM4v_cC{>F)5Dku3(!?fRVHb7kS
z3_XaW<^n(bUM43F+3`;N7WW2Q!7zde`64ogy;#Asbmb+p!~hjfolhtVbOuUZyik=6
zluU(OTJqwB>O- at V)($qW3nedJs2&GOx|j<kFJ7n>4%8}y8Cvq<h3a&my1h{Hl7(VZ
z!EhEeA~th&UO}rm%)}<Lki at 3U<TGn>XA-lG5V1}O5>YJid9=iF!=juToW&14YozuQ
zeS*8iaVldCk6koOD~{>G>(Of6sl*7#v}WQ~?SqMia3pc;1P=5y_Kh&8vim0;Hk7Fp
zZ`mGLVe+%v&Gu*PDC$o<7ONcbQIxHj0^8cC-n1Lxb1_5LJB|>ZdT6RAxiV`y!ipyg
zHv*~+_Sx`Bm}&ZtGqO!*d$Y}Gm at N`*>RY!3*=|4*Jy`4(a5W~Sp9`St^mRMEeUpsG
zvWS@(f{j!g>`$;3*Oc9iu5YZKie8Rd4cJq}Yl5dps3(R)pEuYcs2?ZSd8<0{erIjl
z_1*}W<1Z$)%&5PHRU5FkzX`_Z7F?0etPRC~?p-1Gu73}I-ej|!I^O%d!4qHXIScQu
zspFRGX{P#Y3S3cGP+t!Hgrlp=a at Nkf5D6oQiyRx7p7?k)&gsGvi_G2~P2U^rM4n(+
zvOUIAan<PR(yhmqs)eG`%AmGq4xXk9D`{LdRWn}^O*(v+QDF3<e&_aZHZj*K`NJAX
zMD6aS?;_&6aZG<)m6Hs10oqyB!dDW#f)Z6bkxzMq$tKI3AJcB6%SP`5fIT%I<5fw}
zNFBozSemIvkWslUof$CE3&T{b0n-`>A%=$5viLednh3&!8TAqg9nu$p4Eu#i`3lRm
zn-3w%b^RwNk_}ds((}-N(uW8E(eqf7bCfO?6<W!uIpgzHz3Wi-s10YRWanefsCCeH
z#Qngxr5m22qRnWh(DU(MWr#qh=!%4FLSfA2BFTGCT_w&(==f;$tLFO8M$-xTo^cr#
zdr3&zjDzns46+Xy)nkJ)+PncSTJEX!w~!|m7xsxjIM(829WsPM?i||2<dxp!<vGcX
z)~!JkF<dr`i#Pn%39cpE0AB<yi-qPK!5dCb#0ib+{ecG~R!MNq((yB~I?@FFgnQ at l
zbTXdmm?IQLN>mGn^y^X!_Sccd^ZD)#_96ZMhXV`Fr$o)TgG-L!i2DB;1{V<%4lI}<
z$AV3sk%e|#Ro3HF#jOE*L at b>9J2cc(HOE+Z0D24jOBtoEyQ)!rbFdTjttAoivLpK<
z!e%0_2XXA%U70jXr-2~M7A>2O0>L_0zo~vy(n%b50MWc0X$Ku>lZ^hw>0T%{*5*Y4
zs{Y)2g)#oICZqxakP!Q0)PndYq-*goic}MZLi?Ar7P+s%S%5=P*Oh1Udwozcgba^2
zM_<y9?qMYFKyvK|!%I%J at fp$zDIFMK-$QrAQa!C)qheB--5~}k9CmU`!Q1^?pGJ1}
z6C=`9Aj5ik?OXO?fDqo$j<6c-59oMV{Uz{4z3D=zUjO6$S54!fbvCsgHVzD2VO<nR
zJW?W<b^}LJ>ww_8qr6z!M2|piVMXg$EKBGJXk*b at 4t1fBQAQ4o{U4yHYlLL+ad0*>
z4i!sh(Wz$-Z4MD5(U$REXs<gX3o2v828kYcc=(80Y&88x<Mr;gIo;$?H?3~!v?*rd
zO^gW#A}1Ihj%45&dC|TYb}=RdqUqT%`}j?*w%QY)7#Ce)CO+}UXXC4r1|POpq2VF&
zXY-=!muf$#9ok${=}zOg$pwQ;XnPDZ4MMs at 0pG@F`apaZZqzp6KheU!A#49(1dN{w
z`U5}J`W-#qOk<Nm?c=(YFcN}8FUeutl)PY>&)p6uYfON!&&f2a+CK2Cx0>f<d2xQj
zBp4-wte)|v1^e|PS|sBRsX_(Of~=~2ob^&}rg^6X7QI4`#eQI_vCuB3BZ6zh3jbcl
z`0gxGqg&{^`j~B}yJ76})(fb$`E`L%kg80*7^wu=CN_?jy4is5JJXl>Bg)1#ANanv
zqYmHn@?f0U*m}#~p!{`fF`DzJoKdm8Pd3(!^Us;A#`z<Oo>7U{aiZyYsD+8f>aqSw
zU1R<BRJ?WLGh%$nf)6mfU$aC at ef6Qo+TV<(qkH*G|6>EoC2zXgv>oTpzeJwCD-tE9
zT;k1eMyR9{=L;3(2||S$<Ss|l6x)bG6&InJ0ioKBGKKvYj!eBl^KJVuq2jK_k%j79
zR2;O1BUE+gZlHdoJc0JW&s}+fuki26liO+;dBP?uttKFkyCP3J9C_Nih%9{<<JpA}
z;2e3vE{Ci<eJ;|J&XFeB2Y@@HBJhH!$LerhTZh>IX~2<*6sSEK)R?-vDNu;f0(HP1
z5U2yjL=x*q;oDwFRI?*ddqASb*w{IMF{l$5IO}o)<?3a~)z$>Rk{UM#w<7Nax%w;R
z3Qv@)Ylq2|$kUm1B2f|bH$6Y_YN``SeYjAGrovKDG*?qC5}`T|LbbaVDpygxs}H&_
zAXR@)RW;|Rs=9OQW_aYPf8b}XTz$9;a;5hTaC9r91}nGE&B|4to?@{J{8(Qb5P#mx
zj=8gDbi~@{F8KcOfmsU|;4wZcHh1BIz?}Al^8*Xw^X3KSb_5nIj0G;7IdAT4ht_#5
z3ud*>pV at wX;H)E$%)HE)H at 71;Bi7Op>o{>S2(>JkGjm=?%cbXx31ogb at N?$Qi?y_$
zctU&2_gfa7R1|Ff+yygYbLY35*nGm=1u?+3pR}ksaQYd6<`d at 3TR1azQb%)OMC6NR
zw$G2ZX&NVxnkS+-+xC{Wme^cYM#qUKEQrsa;fW}YHM{-d8SU`}yH)`$3uc}-uVqI2
z%muR-&Y!`;wa;src_CV3*YJ^}h3&B!Gr#|RRN+k2{EUSQ=3TsNxU=VWw9T7&@jr(=
zXJPyNnXwa3pvWwo*RtdX9SavMnbmP&@p at Sp2RIrWMV{X>BG?R<xF+gw7?Jp_h4U7+
zpSXBtJhpJjt_a?&g>lw($Bfv_^WyVn0(IB0fV2q3IKSoMlTJJV9U|Ux(h)};byQK|
zqtwobFPIxUaq)tVCGn0W^E;Mw<oAaQL8_(wyoDWeV;7 at h*u at U%I6lzQ-oCK?_&|I?
zd&{ha-(N8Il9t)%q4VcMR*sxEcR@>F&b*oEw1;#6qb?SJ+;qeO3lTpTC7UUIczzsF
z=d}bNkGkW=TH9M@&W51PZdnv?Q|GmGbOd6pGZ)|wlRJFArk3_OV5Tc6z(}OEPzA)n
zcP3hKHf?9$$?_P8Eey<@jog79lm=vi)f6}w`o+}~Gm1+(>15#wOEh8l%fc0rUJd38
zw4neL(FL<wvgNp_r5$zAazPv#3IzyEY=Iu|rq6}8Yj2q|uVq$D%8Tkg4>dhI5bv1z
z{g%MYS?vo^RWkwQ)YMVZTBv`w>=ba2V6SXx4_q{}Bhc2q at WQ#XLF2r5EZ|j^nGSK1
zz){6^w6)BdJ7+HP=FrX7FM8Xo*1*gK7o$BL-HV)jf971MY%qlWJU-wQ9zor-XnJ9}
zW3PL^D}lXR+Y?ns!`qK<8vto4Y|H!*W2UwvRS7K2O=e=yxaiyX>yICUL9is)g>CNe
zOqkZbrkaEk(s|_>NM$U}_=y<aDjhSNPL#(6{>@ac!RXD*bVf%&moyY;sW&i?y0fT(
zUu0}p55<9e|02sI6OOv6j>l=5vk`rY>xspPpFhS6X_$g(u>j<aW4M0plKHq(^6jSD
z+`oaYXnx%xoMdY1%toEbWey!d=@t}DA2O~l4I~~mon>KhzxLorMsUAQmUkw59)EEr
z&XdPojdLf$!wQKSXCa at 5M?m&9dUC9%&fe1LoCBWibjvW5Y%My?;?%8hSTYPeH%}Ti
zheKo-N~XBE3<@-!Q?A`WLYe^{aNTMSrm0?{pRvrz1i<0-EMs?}vx5E(^aJiKmZ>13
zsu(4ir1!_!H_M%%Zx<FMM<8{vFxNySUkpcuRC4Af&`fy*Ot*F3gmzC_iB2~XC_Q=7
z({|>``7v7N;xGVblw)=hI|m<kR603c95&OFny_(7`yH|Iv&l14T#V`Tq#E%^BBdsi
za(^?3XZkB#nPW^fFtE~)?+Owd%g#E77Nh=YUwlNpFDgcT@&H}PnEMV>HBOGsuZmh7
z;Jc_MqBfdpQ9$M_iO&q<%B6H;B|gIiIS1j1^SC<L+<?Pfj+;x4=Ec~jhON;oUc_xI
zKFHqdI_RrLK$g`R6;b$l;Jw=mg4usI4C08iC at LYUUKXeM^~j at SG@_o@`BEF;ILF4D
zFtWzG85aklSXGQ-J{6I?{T3K_Lf)3)Nu~pnYNG0V-q9dAYY1BnkfBLhgnB1QrqpOS
zxWW;2E;x6ffiA_O>riYgcG~uD6kRb1U*gP1t6`h(JY+Oil^Q8lGu0{Pn>k*+dPMU;
zvKK*QV4<{&Y{WhvGzPw=+ezzOy>0+ai+YBWLzFJ^4W+B64p9p;Mr(1vt^um7&n9{R
zD*9UEvhrMHKBIDg?M`S>Kj;<#`%L7-X<_eZU?d+y5hOv&Z|}f9?n90H at LfrFPE2#1
zWL_%q`voEk=K8#I>nkod3OSwC8Epzf8mYM`t|wa?2Da+lY_PwD6z5q0a(Ni3qml0R
z4U}!@rjY-rYH0AE`G4ZSr^LTvbm^~4{LhXqy`#kcT1jb7>F9K6>DE%;J*B08DfJDO
z0usV~DKMRSaW=ziCq9{>=Nw)l?jj>K7O*3fJqsHDmbWxI;{~d~gD at sbcQ|TJHsVLP
z<;|}b4>_!=>!!;iJFHnfI7eh*M*=glVA&^cR_uxbZRX(vzlbMq7!mFdxV7)5FtWK&
zB-NR4bs at Xm5yg!d{_e=IyZq%a&lRLNGNnhR9O`alcjpoeOEGLk)60Fif<a_YiG;#P
zHCS4>-bN$}Pa&44b>`BG+w=pjmvtYoe%OHz+;&o<Y5F8LJtMsFZ at Og>4Eb<35_&VX
zH at ajbu`wXA18?ObIg}(#x9}#-58E9BJ|o%A&WDAYDh|e)gt$DgNR#2x6t(7IPmOvN
zdo^RoW#;2i`4qK0Gs at x1rm6va<;Hc%>esj?gxYqyq27p-Elh5O|3j_g=FQBmSJnqx
zv!tutw){JQu_vX7-7LDZLX8TCnd at kac%w^5SA}{x8u}!5A|kPj%JpZ79*_-71 at Uvs
zDA25xy;wz_s>$Iwf at FDemP^@{3vQWQh3>_ at lsyc+!sKpA$aVm%JV~D1otDl^{%(ZB
z+*+Wq3aUO<fEsY1vBoD)16Slntn|RybkAn9>53XR-B$Txd$I)}f!JruRYD^rvnRy4
z`O90Ni?_O2BBE=WiP1mO+8>*FmlgoyUw7$CnKEmZb}LFDQSwK&SjbaW%yZUI@>|JK
zV-T{ctdIf7qqZ`2450BjKpyqv=8j!`1WH*&SDX^+q+E(XT1CNzZmRVMxBIP8$ua(0
zN=v)P_<z3}s{1#)mk#dXf3~dj%{~0T*`u^?4}WGP<~aUMfAyiI50COSmZtr_%Svze
z`)>6EYa9P89aVbosL?A&m7X#B%~5#IA`T7tzj_Q}PAt7~w2x;v|IlB0$7tU>{%Jnn
zA4iq`YP1g!CFMth1Gco`{}{9M=c9ag`{znb$(}$d8e8_Q($jnq4dFtT#-{&C2$lSs
zlW<Dug~G%k#pgXA_LtsJ;(K)TB+cbufa2+<FZstDg~x|Rm3};$rPsfqn=1Te2bUh<
zI~8e8?9fd|`v3h`Ec>R>Y5y<w@;zNzx at s@KwMXgly?oD&Mf|&COA+l7A&oui5xuyy
z)9=J0BVYc1*gF&WD2nv&PclToU=kFSb#;x13LcnALJm&?8JK|tvIOwnA%p?4<Z?3M
z at B{<O7^8Tu$Liv$tLw4is(^Pu1Y9q~b3O4kvI^>|xa;x$p6aTZ-*l!B(LMg}XX}$m
zcYpior=Gg2tE#&fq at k~KVS1-`+0LGYJ7hevv!|=qXX!Y=$sS?IW81qkE#tZ#o at dh^
zgErxgxv+QNv^{Q4%UF<^_NMm+Eb_cAGvm=r&vO#cxWC_}?RCa^m}FSdGXu}-E$?-*
z$McV!GCH$7=kA<wca~B&K)kv7<h1H*du3d=tM``P8DH<}h55Ja>b-C0jEnku&&kU8
zOJDC_vNHbM*L!hx#zWZ8&bVzC?|C^HSM~L-&&k-ltM{rt84LP)U+$A}&n{^jcg^@i
zU(a9rI(DeeoaDI!AIq7G(Sj$2W-M8j=2`m7HdML~Ow70f2Y)#&<A!BvX|ZJzqjB4>
z{#jb~-hPkgg0u{*BS}8 at UD_Epr#%YMPVeE%kM?Zn`E?pLn|8{$?P$+uJD-!j_-N14
zK7UR7`Y6w;zOybp+Oux=2fScw_RN6T!voJv1N-ctbeuo`U_sX%Ec*{1oB{sE!5IsW
z_I#3`vH2*^ZwfM29qqZeFau|AKPm$%HXbGWk`9w$ES!qFN7FJ^W_h-xWh~9|w54a<
zlI8gzee_dVFmJb)vpfrWWMThODP~vn%J?)Z?US7jcrVNIR_4!vFX)|dZI<WG-g|+(
z+xu{k2X>x>{X{(MoYrGZI36+ZdZ+0b3(`G*k=PPLbXL!($@pzLgPj^uiiI+6NEU0!
z=t%dhcWKKxe6!c%`MgKQR~eq0ko%S5z2T!C%JyKO*)yRrJR4(i7$wYg2BQzpJ<xOD
zPM-d`7}2YXVhB*iMCass!m}~u(ULo>E;?P0j`sKT-^tV3IHR#?RwIp9CZ<LRI`ba{
z%uI(1(R2l!q3H;sdj5fk69NJlc}zaiBkly%fO^t#@_;#=lA+d+87n5Phk=R2N5efc
zJ=4SW&7PTvVvKPg9;%cnkZEBIOt*w1(KwHUaX2&VIq0B+jx8HECOBp!_HxHhmvLMf
zx%K4IV5mw1JuZuZ(kZzf4AgoCd+Hk1%vG)$nw7~1NlT2c%IpHxl}DS9*QM8q1%>|%
zv_HH7hk=f^&9cF&EsT3Q`-!Rc`#T+xbtIzpNo27jqB=TSi`plVxsJ#p*=P~9pAb21
z5=Lrdah&wVutR5tsu3Q2ri#yCC?nPAPU6ia^3+aC&WU(0K$_|t$o>C`iJ={s<HQGs
zc4The={vNCv8>_bykP08(Lrjxka-VE6a%iVcc4J16_22woG0T_YALUDvf}SPF~cG4
ztpgK}1ERZ*I|_8KT61K~11Gd?^OZgF5R#}pcjHZJoI_;TWJy1n{SC&xkrAni_GuV*
z*#}o-&tHN12EFH7<#|C2pWp>WvVvT+IxEQic$d3gpl4q}E(`QBD`bJ5Gf#`x5>AI+
z<dfO5(aERw6Nz;HP)Ee98kek;v}hb!`Z*#4NsHPiEgQtt|F1J-naV=W?Mgf=OX4jk
z#{d)FCV+%{C0Y=abW%CV42#9{ufEq&*W}3X7``<w<CaE{^NJ+B$}i*b-YpEGwl_&$
z!6R<b!*G$#Z}Ip1L<_s+Z-}<O9>hW~v1<Py?vuzYWzr)3&|K at XjW5RSU>lVGdcA at g
z$L&`EGb-9~8-o#m%F=hU=kL;ko}ZTCw%Jlb^n<aLIL-}X0RSG2eZzUA${GK&=kp0V
zpX0R*|I6o6p#JR at Z}$8%qz;nmvRht%BYVM6mDiD^lC5$iTMeXoQ&Jr3689RQ5_}cv
z3pH;0zw~x$N7cCMYFO=41v=Le`M0NcbdEKxoqA2xAo#vK>@&3p7VauLb!#a#!GiD9
zN?8nzSG4EK&<t8!Ilweido!K at ka<@OWtE*&cCsuhQWa3VK19BH3A17wFV^jrlkp at E
zEm#M&UF|rD_FQ|byjujm at xsJ>u3D=E6WML0y<LQ?iT1W_tu$$v3C5cg?_ZAn#A<q+
zyqQj3;W~M1K%M+3I&6De>Rzg)cFKqPU_46uW|(i<X|+!oq*Kmyw5=l%wNE089g!s@
zqV`E-t|PLDMAUvl<X_aELp-S}<t2$X<C|&<TdDahv^Jk;Cy`&|YITv+LmMCa{`Rwa
z?pYYC-d**YkCC>im+Dom9^Mn($;7H<?&F8iBX6oTy?jKJaoir_`JTXiPd?!|r*V`v
zx}yCsEa<I}?=NnV$2(RA?kjMdH&D7Rdwv-0B_0XFTXpcZHue61_ocS&=!;}unSJ&@
z;FUZOv|t~|-8T?NzQ^!1O|YX!vAk3>h}E2^b5X}ubObPOhxb-)&Yu4~G*ra!)=f+j
zSHy<qd|H;BqvpkC<2{;%17sSqrv#yFwag-8PJd`_g*@W?JXi&cjs0U|fzvL#zJ(Zz
z^u!ykFzqOh|Fo?fh)aiUQIAooQAK=Ev7%!rdKHHU+Vd((SGPVa-#4!8C`&8Da?9+t
z2a#6Jhm$^ph4^YzbT>R^pM~!u%bLsV1wFm8Iy-<mVpPwKmrH;BUOXTs?yNxUX?f=;
z2K0KH=V)XRGKegw at 2DCWNL$hM9<qRAcgOITB+BvH^<c;N9jnxvUE~>d_0akY8xJ+l
zx5thSw9kgYXXeDiRS_G3CAzC6Y$Fi1N24bM+Dj at rCL(BvVZ7I?BDQ-)>C>%`RCWXq
zuCEZT1rnEEtmu)wKwb?c-(<fN;o8T)a8J<m=nc-N&`;0)cIxoh={tS9 at sfCdZP06h
z4*yGdhSwYD7{3w&v>!$H4Ytojs$o3>-j^DP^&Mc|;wKNUqRZD8Gsi~<V-peZF}fNx
zbttBV_o<BS>5n}=rhUpj_*l}EJ at IPusrXpZJ6kFTz2#4Pree^GWq7H%GW+aah}b}^
z#{eOI-+F)S*|N5kJx8_o*ax3W+RKk`2H<l^JqC2i#H~}VD%vq2lI at SJ7=w3}Z^07R
zZ0H{a{cmom81!^m+7{dZVW}+iBe~D^;W|0;eTQ||ZELVBcCX#X#`fw{Ub-goQP-|G
zi+q%peYSdzl1oJ(d*sSMNAJ0T6>oaG(p93)M-(G-bc|G4spV)V8*KtZHp-sAC)xwQ
zJXn}hzOX7s<)-<vtOD=l#>(*VJA8|kyyMfp?fMj}8<4Lm at w5cuxGD#qh{AWJc9-u;
z;dT8TRd{&qvmn-oR}Ol{pSHGg(Bp~FEK>_3#$(Q2a#d_aIbseA(#vC=Wo at 14;`GHz
zp}y&eud>q4NSC~u4mo9Q*IZmy-kt?R at Y-^`A$$kt4dLp;-+f_WdHX)d9{$*#!`e^J
z{#x?K*Imty<?@|-SgyWvujJo>F29(rv{mJdXdl1B*AlR=yM89tEl<=eD-nn55Qi75
zIDAOX(jplZnfRBeztoxt=f<M#Z+Laxm)Y}spvH+m&+P8U<4HW-kAHpJ`tfqVdWKop
z;m2Hoegr_z1Ukd?@)#5DSHJn+{p!D90400=$<nf<?8oD|s_*N^OI54- at ksD(=*Ryr
zz4c(t{c};!&`taIcd(APrZx5BqqSS>!+WLTXp==$@is>FPfdRu`DP0$tBrql_0z#O
zOFv!K-?{qfOXRj7S*59ts6NtbK(YSnEHuxUh*WPJmkG at I?@N5P?_PmNNFK!QTzO8Z
z=f>T{u3-Df9A~*A`WDBcXHeNbZD3`4Q*LD`mTkTr%pUQ&+@<!FsZF%4 at n@&-8lOGo
z1J{E#1WG?RW7ojF(&fMpkJYa|^Ogmjv;P3i{jd-Yf`3H)g!lclP7_V&KA>DEO->C4
ze-HAlU(gxI4t`jX9ry=AI<O+P<wUGQN<<+dOSfmSH!B8xf){m&e`nQUM*?*EwAk8>
z_eppvI?h6ik5x7mrL+4*OEKpT&vm|%7OZ^|B1qmWxu&8$0?C~aNCZ`N9VD<_$3ZdT
zA6KE%*wv(t%F&1XsH+zH!cN5YfANn<`0t7T0KOPxo(a<L48Rh_K<Vo2`J>T;u4w-?
z?kZ*u#9c!LzU9+C2D$t5irA+}@aNUL1J02Gg3sH;(7Qv?aCMnMkc+WO4>u*714pTl
z_YNGTGF~0BdKjzi(A!qIEM6`?(1Lv(!R+(%VF)^23lG8;oocL at RyXwVT0-|1*^{N(
zlO78?=iH(?;x7kEPwp3e)J(a{O278zf#{Lv24X8JOFu at 4UO<SVeU(W)5*>fowO1u>
zm*$~w_}y9A7s_1{4pbO2%VV2iS?oO=;i=BHIsH6%<^Cgq>~g&J`DOJSV7&YV+Rhq?
zg*x{`6bn+Zic$(uK3?XAGK)8KohC7>qgCG~IzE3MoQH}{e4dL-ae)7GPv5aT_5s4y
zEKvcke4SKl>iV(t<lN{63NPNvf$%n?1h1|r?ZTHHp3&h&($S3$eBB)h78tbFm0-U>
zg6%2($+G6yri6#ic&>yWZ`TQC`(MWo?`B5$5oNH}ab`TE%#10Yl{{LD=gf33?=`$&
z7D;XHo9yFv((eCnUIN+aKi2MN&p*`K&%^uhzOSE$Rmo024 at tg_{k;FB_kS|Iqn3Ui
z(wh5uqfI{#Q<|op&=XNIjwWmFg7Ut^Ty*)mUUB+u%(<UuuIITSsZkR5lTxERfr;4X
z1NWI%!Ru%6F|#@nZIY}P!vgIbsnb?$>ER6S$nY43J^BUibKV~RHU_~kM)nIVbC4Tq
z^aMW(40;?7p=Zy(1$U>ozeVFyffe8Qmdx2fX^Iv+mc8IHIc1)Pkhj4M47S6^k8zJa
zpd#%vQ~j!rRiG4OVcGM~mrJm$KK8kukMhb>Fj&K19hjP(bK-G<7}m?T5AT`X2XCeJ
zqmjVKrCB~7^J9h-YvW^ntdEza>;7D9(LDPHW-l9_m)&PVU~0^tm%ViOba^PCB)iYa
z$1U_vZ^x_T`&5?1{Pj4~ywKl_*UQKJQCvD3m(Ip$^IXJeMSCq8`y&Fe1#$$qP&Tmz
zvZ*ZnI(z=#5$bq*R at uJHdB5xzQM|Y6OlQ6rJGsG*nRuZ~BksSyloz^;aNU2Kb&E3o
zR8SfFc;m{z at +D~Cq>XbPE<q0ysa2wS1 at iv!62Swzu2q9G=yyLn9d-meeluGV0q;=9
zpyat~-`wXzMCO$t;>;^MB1!Yg5b5WL3?waTpR{a1$f0Gk#Dn%o?UP8SBeIS})INzU
zc0`tth}tKSxsJ#p5>fjJk+UWRJC4Od2ldMMk<IZjjbQs(LvaSfj?S4XK9h?xdFD(a
z9fIx0-~<xr#q9Z)Ni5)22A`#nVi~_$5_~~FL^*PVx)pNXT-t)6EWE4G`E1NQ=j#W9
z^uyNpdQ8vk1&5$GtJxPBLzJ)4IDx`@@YYG_Vjt>uJ$qRI4>~mE1~Qbuyp^&6m_8T(
zn(;b~rr9^+-_Ye#W1|*lFAcne!Vy at T-RJl6lCSJOzn;5r)JyGwSF`&>7R5%r3V{vT
zeNMf3;iwJmfp;)eygWAQ9rSoU$nG<0Z6G%41MF|cb~CnHu-)QVhgWzmXo0?X&7oe~
z*HbErLzP)8KIq{Lq)YyU%MR?j4$nz-_6n at n&;ze+cM3M{#P$+}sAljiNf33%Q_hg;
zpw%iD%X8 at Hd&#)Cl1h6i5c^pmR)?CROvY99^Gy1Y_xXqjB#M(DDjgO{J=x;qe<yB}
zQb0z<7u+rPz-^Fm20Cw&yJ at c4oPo|B_|OClM}b1+v8L-1k;1C*fn7nla(SXE)Sm)#
z$=8ZJ4em)L3_VUD)gs{5<mVlnkjrOi%%WM0=9z=|`yHI?wTKG6Q@`WoLi!=Yukhv&
z9H~d}u-#jPu-#v_fsWtgU=1W{QMvy_o{?Vw1M8hR*jaQOzH%`&`<18gdvt2{#ud11
zE%qOon%(kD8ZN>*h^7~(X8#i}zIx?3>|_1PrWKf{*o^j|_0B;1MWQ^=KChqlV}E3W
zvjX$pg3ogUy;jN>Exvpy at XUvSf{SMFiszEwSkm)Kc}r%8It;|-sp~t`_1%nn36l=n
zY1~RNZk~84-^^GuZ!Y%4&BJ$nVW30}>|2NT3A2fl5F2q5W9o9JWi2~4FzD0e$OYdy
ztAw6+I_iPg=hB#Bn08%uTPJibhXlqdR%Xwacm4!pF9cV7oQqo+=Y?BK<>ZPDNa9E2
zjbLI^;HV~4EHcmFJVOxY9aU+;_8zN(_%w);!z(mbe3%(qFOetvZ|ykmt+^8qxh8&`
zEs?%@lR5ry7uidDB>Upd?4_O3p*TA#-s6sJfjsbqf`!K!dmL<f5c+)*?dOVb_=*JH
z>$1r)F8kausv6vDRR9w$!PxoQAek-6jCBTlcpWMBH|)5-V~;+}MjVSd&fy0z=aFFc
z9j}#ReygnmQH6Un-}*0KD*N)wve*ly&qj{lcxvLEIOzEPM8192vR@#!76Upeo^Nu;
z^Tx}Ze#VN8xm{hV4w(zvkZDvrI1w<b&M^lm5>JgE9{8^FlzONBQf1ntb=P8?aqdf#
z_{N1|igKzdk-30&%*>S?tFl=z_M&fn*~B2;hl)oaR($I%n-KW&3mLDI?*Ym{MMp?|
z`=;$2WHEVVmzq~}!h7##<N=gfv^kid+aS+u%UkczeQVnQs`K%q+4I+{eEd;x#Yf1;
zcqa~8IBn!_RKAq#JntV8x!LEc at s5rNGH%}&gRx~!zI`FE;^R!%==(Gf!~T0a&U??v
zC;B*h9tH>`qd3POBcps8NL!bE at yhI_>oM&YS%^FF);3JEu9C;c+a5uu4^2r68mb)i
z9x{0bQSQ7cCofV%F6dAunTjT+r+P6v-e;t~PxP=@D5l4{vd@)XEBZ<*`?nv7smx|1
zw+_P=lhyIcFzm;(x;`{n-8q!3z6R~$H>I1h+u9JBPDcOold{<Jr7uP%Y>dEv(ca!;
zP27j=D&5(4V8~`odFcl&`vhW}1M|LBdHniB5~<K&?ZzTy_6NCLOI02mY65Bs_(zfv
zoEirvISIR66;9U#<$(t#$Wyf{`q8NO?E1aK+up<5doF=*Dm#vd=X)8slB|W~&5`UV
zQ}nPW&@nwd5L<`Hd=!UH#={6#d&}m)m!CU10{!39HV0yPIC>86L`T<!GDqu8u8ffw
z?=`ttMN!vxutdG3&G$vH<0K5|#&bDF=^T&nM6nuS&gmM845#~P=Dy3h-wOP1yzqbH
zg at M?=YrIgc|HO*rhbN&x#qaZ_LxOwWLNiD^0h1TaC=<A+ZqCIb2i)19dvZN$yFg4n
z>NEkf7ZcFeu7->svZJel9T*N+?a#sN{E-7HV$}l!Yy3Uo1xoekq3Vk(ui+qwa*dly
zDIc*O5Ze at A%@R;=KO9{Joq<3{b*{6zr6P9P&<YHLV}w+_tq!$<sve}%k2`B&3)WXa
zUq3WPSi=)NLahM`c2xFMPpy~2V!Y`OPr>6Ytxmn(<{yX;X{|zNKcLEA=4&cTzrq9a
z9jBz3f-Gam!P0NlLiohJ-b0fRka&mt?nM8iQr?Xf?5Iv_`v;bl42IWVti-C4cd&zD
z at O|+lKkQvNy6TIS>Cs(d>$8_t<a|4|ELPFyTc;hDC{fXX;B(ZNs5mhoQQ<^@gc(6x
z?*tnkzd`lVg|E at 5`647uuw$HKh71=gGe#;iFbN@*>e5OWk_SVw=O2M%GG_O0y9S8_
z;v-o4ME3lLa1fOHnTpu at 3i*tenx=>zpyCFjGr8)vtRmLe$vPDnrBR8qpfk3nwSREX
zhgj}353kFV;r58=nkU2kbF<HX7n}0fiz_zm({+OK(8(Nuj?<2ljz!!1Xsbt8#h$?&
zT~Dmoi1ykN9Q0Lr+FvRLJ&7eA62)gfj_a`Rdo1=8-rI)kFa(L+yBMzn{J855rE at Mk
zLBFgr2Wm^O>_e-~OQ_A-QX$_C{wnP+!9kB1#RuY!JE6F;eJ@`{Y%kHfsjD|mL0 at cr
zY;<0GMb6hqzumv?`T}=xWs)6*S83koYZa9$M|RD`bz%%TRsYM|E!*!<&k5j35RBkp
zU3#}i1;QwQ?oZXamR_hwir<x&%_F at 3drsh|dvFC`CcuL$@_0z%*%hZhF3_~)lB`a9
zjvjX4KIC_C+0I0uS!_QIdGs*6V8g5 at l+jW3xCW-HV&9-oUNPuHwG4kfw5j3I(iM?9
zH7fc~5Z^1l$K;9Ij`BV|D+m33Y{!u(d_DT07C5UOOLWh~B-2~!vw`SRQgeb~LA<jx
zR*AB42C8g)xFEUT8y|lR+>cvlaTqmxL)Nb8sum?0B`58Xjb}Uc6y_K4PMQkTR*nE>
z`xd-&7V>Q?x<FX at h8JDOztPrvz{dHe|0KgGk*n17y!euh>3R7EWA+H#7rpJ>c%D49
z?gT+bQ>dcfctb$lTR0bC9A)HMeBkp*iSsV`Qa6vE2-MC=4 at v@5EO_I(OsnE~-u52q
z#TVjL05ffJpY%*miFUkt9I2t+*AFXX{=GenyWZ1s0<k0T<`zUFUjH3z`x>v2`86)U
z9$wY5I0LPzddKW=L_#g(hv(vbEeFcQ1935YmG`_fAjQ<O&bW&AaX;m#kjDYFiae;m
zRl|oG6#=L~(}>2fy#dyhOM at 6!@!SqZg}k9%tEhqsTs3@>Q867VnxSG6R7?^TXk+3k
zj*qL5cd%;}%}{}>+U6oYwU!$fVn5JvzZ%JlsYx<?RYwFwBie|##x-$`t#OTN6-`C#
zdQno*asOg$jNY3?MaTV1WD`?opjQM)<sosEZ^;d<itRSJ0xISDijG at 5u`w#wVjn8k
z$tHHcoT+HPM{N>T{tR*M#Qq(Q${iM}71_`zmm5_dU>~YB%O<84cSF?%9FcYBAefG-
z0dZAw0aVH5N)-mHIy`8Hp-TqF+ZW`>K}<c6mEEUZPT`|txoUH}jHbuhltf3H9JsU2
z6Y$6J5l?xW_z=DDQt9ZpYbcJC&+Q9JL_^2 at GG-4y0&)~n4~xax<P at S?gegG#$JG}k
z)T_&5*URNd!Rgp&^^>p*^|R$f`;E<V6jSG8ZE_0gMVQo|38jwp58#AOO?7$fdUbin
zU0ZNMtG^k$h`q}eI@@cmz&55<^k*+!uoedx%f4|5wpa<gpcC8dK9`8>LiI>M`vNun
z-RElOGC2seFIcC<u9vF<u{JpZd<h#Y9!6EAs2qZBaE at e?y==h;a<ryR8f|fb*j+ub
zi%pJf+8>k?Q)6u+wg#`W(^6~N`k4!`Q1S%H6u4$(qW_2&+v1}V(xYwtdmz^C=<IeL
zPwL3|_RB;Y#FU>gWlSJ;i9p2D?YYkOo;(q9<_FF9klOv55lQ|n*?nfL%kI;%0dH&q
z=rbJ4rPcSbca|ky81_iKR0EH5ATOZVKm{6qL$MnBn=64p?VmkgZp*u##!(_Xia(8h
zPnYz3rY=&)ljOJ<aiWi3L(i$JC2_n^2Hm?7$7(|JScF2$zlFYJ*E5OZadQ2vgnWiv
z|7PO2LykiU`H)<{P93Y&U%vJ6-hQlYI<CXuh=hJ9vczm0ss_n<N4N9c2d8t at H4)*6
zucwI0OTNuC94;K1tfwlq9+B$01NO5XcpraXxGwc^dj_V~(@*sDbnEF*^;AOF2BZOn
z&8eECzo0Ur37bfD1rcYeAF0FTERI9CI+Jxs)#^0ZNjgNT>psLYhfChdsAn}|!zU#S
z8ID#4RwTvnX_LBSQJqd7x(<nAB4aojxNg at C?b-p?#rqqwx-Thx7sIlI3f*?NwW!vo
z>t>~BE-pZcR(cY4s1}j*EP_yXYgFslwewc==r^UQ%qFjRb6bLUrG2J8Lp)#1NZ6q#
zeq!E)4btmyUw%YaL_QdVFLE7<%;D5G$>n<fVaPh_g!Gkg+qJRS><mR$&Pi20s- at mU
zqm{(pQiGM4=CS7Z>r%|TlzAr(ZXQeILD!L3;-u>!rDo%Y#;;yx2Z3<xjF%;Npx?rx
z)o#4WT{j(x9w3K7jn*2COZ84y7*Yn_W#GU#e5C7DRA7epjPpmk`qBOekTG}uDoND8
zyum|S%u)EsC(E4uC1RJjv&=bc=L#@ebIxp$7Rs5eOnV71TjwnOA31#Z;kg4ROvYOh
zT628`g9`@d9a_|?4)f2<FC3g#IM_ExpTK44pm=idL!ZYpa?Av2r8<S7ZdXpeAR#X8
z)N!7)**R%H at 4aKsMKDIL*-M>qu9aPR=U|>@2g|lBE2k{0XL%NcOK at 1B&#jZ~u&kVp
z^buM8&i9sO<(|`{ENfs}MtRoI^yxcg4FoC6>IaEoSv|`#JpqU>)Yl#@#^KC`>BF-6
zUEm#-mD|x{Sk}PvGs?2^&e@?XtE6qm@~lbT{d;7UfIurGAnEABr33JLPV1T_TYpy0
zIqC4N&0C(8oBr#pevZ-N=hs^9WQmOL_j6PFPN_UC%QW$nc4}3Hip3qT7R^65aVha4
zc8U822_Qjq`{z#%V?|b#w;~Pxm3Ir|h)mHJ6&-MUAz`<!uUz76B;xFsVt;piqcd}%
zXO$>}n~Ahn`m!dq?Rd@(=Vx^ExWId1x at SDj9Rl0My(*bzbc!^B@^~7}P4mv`Yl*P4
zvU)zU`iUo>Lf1jkLE1!dvJTvY<$OuAb0p2$dZhnyCzWi-E&j~(De;3~X8P**0rHWg
z!}(g*G1zy)0R`uH&ll6>{AL}7bdf{eXiHE3c&DtMm6^!Ml82?6DDFo5)b%5>a*}L`
z#C@#F{G~C=DK8beP+ at LZIVnT(ttoMa6=FZC*&A{qkv~Twe})|GFlJch?D+nOOwW-J
zovv+{QO1OA<q}UQQHZDdxNRdc(@%;YAZk?DZ`Rj~UGBIM{cC at uet8&BTq^y->XoM+
z&+bYJ`3c)2^))A8-xVg6_NT-{;aBCX{(Jmbr~Qz$7AM<xG*e}!GAjqs)N^F!q^zDe
zCpL6adMMFEnjlA?8c&8%h)1ad<+VQI_Qy}jXXUkdF?A|otdfcr4x-8lo8n at 5V6!#5
zTci?sOr_)Kti1FIJ7wh}Wl>o<b!0BYZqwJiBG)*17m19Zq#v&~;@3KtU&7we%;dp=
zU|Tdh4*SV@@Wgm{k?mByzCp*|*$`E`$H(i`F<H5lkRPrZf{~e$TF$=YIf*N&pTvnB
zPF&@xxRP>kI_~Yoog)86iB7Z^ZQfB?xd^?kr$=T^&+1qH2=uR3=_PvZ*4G^@*TD%}
ztJyCU at pwf4tD0RSOvP~^QC6fJqvaZz)w2R+Uq`eP-o7&34L4Q(;kpab{aO7wq%AsM
z+Ocz_Eo$2#y+So)IAt223W!(fYxkA1q^?El)Zz6fU+aAnb-Of!@un-7d3-X!<r0R)
zT3;*noiI>&uW+IXIb;OaMUx=<lD_UviFDYp)%LW?dt{GzRSi?)R-w8bk*du at IH7in
zj^9tHKDt2K?e5`S;tubq6ycTpvPcRgoJw1j$B`e=NjM2?x(?HRh+CDH67lOwn~`Wf
z3*e=65IB~HWu`|#%adskc{LaM*J}MzCpdYvs%?jJGS2VO;k`hTQ`)M$Uib&6K4g?C
zUdK=ySmm8+>oZJ(j?=ZSb5o>|>JM;xI at H@Ikw)C<K^mcnPt_R`dpBr5<Zk(U^TDL_
zRZbTH5yW1g;uBqm;9XYYeypz3p<}kzHBFb33#IIHe@}&7^<B!ds?x8IXHT{ZHQzsQ
zVnnw-5>A|e6C=BwkSa~}Q}5RCvV+M>srr9GNlR_Rr1U48xN-G4p)nUad+6{?kbV3-
zuKv?>pn+QE0hAk)f436uky(q=yo0<cLp~zY+ll<0BH70{_FSs{x-D+c;xz8ii9O4;
z%+pEsp!{+=B>LSWvo at rqzn0R|vP|zx$(=|vSM&sQ*%}}b57&gB6F(c0?2+;<vf|`n
z2opcLK1q~sc+rM5sq*HfDBmaxx27ufPWirB>$jC}slRh}Rwj7L!~j?Qf>NRDe(#4!
zmZX{`ka<cnz~xd$?$z7T_gA!oCQRMxVwKm&IQKT_H{Y7Npi4ES+Pb^7jWeW7!%5j(
ztJy3mPbx2uil<|uF41{;X!<fFmcLtKm1lbDae3b?{DZqv`Z;5z?Who46>=};x=%qx
zo4zS!mKc`l-8psThi-cyeghzN!F=uCf1)msxa*OPe{l08yskQZl-!qbT{KDV7gA(&
zf2L;=F0azMzS*Yw)>|)yxKg!9T(KdFkR4Lh>5`|Kb$lI%_R5;466Ll$Ye|~-!Hkrt
zB;7Psf34Cw$KqJ?_RNMGa->1e^pTSFzD^nH=)vwCkpNOUjim(-z>_?@D!TM&<v
zvGKgw?cTmBy(6WiXoDo|^*Vlkg}Q5-!oDcYTP9&oT{S74om%GuCu*Ik+5(PG=zL<w
zlvbhyIq}(7hj|5#o%mdo6ra-XF3~bo`)rfHBeRz0R%9(7T9MT`(R)kkIwGE)mulTN
z#r^M`$muC at xm?SfxwU+h$or$R)@69pQpaUH+`aoiG2F}eIpJQH!Tufzo~LE{AU~Ki
z?2vwA@>o%G`UR+DaTgdLD;n+G<2UQ;_mBJ0+?H`pkMq5F39HoYi}ZOJI#>GD{T%wu
zG6qzY-tP4LagRMbQ{AI<cGFj-?orC2>(vyt+S(*#u)A}Kn8}5n0lVNI9NWx&OR+nk
zW%5$n9gEwIx<>lSv%BeZ?5 at DMOZB;*8C|Y=O_jSu+LmX{O-sKpWictw%!R&py7 at IX
zDL+fP_QWDtaT%yb6X_b1bPdQDU_izIM`tyAA3?+58U)-6*9G+T2V!4cpOr{g(VNO4
zc#!=>##g&JugBaCCZF<p_Du%*$m{9fjZ3wdPI?X|32%H<F9D^#ODDcgpSnu%U&O~x
z)i|d<=k*+*_Y#|<5HRt#Sw)1$qsA!X@&glsdQa}b(me?-<BZ06JqMZHq^;Mv%SvJ|
z<2vzo9qI&e=Kfvwy`Dp5ljLMRI-T^$_ at TH*V7KVm+}k-;V}{tBgnp3HuaiK%`vH8j
z;s>koN4Y}A?~L<$4l}z+Td&8LbSwu8(3ed^`mWV>^wbhEJ|K23)m&G7o<Rtw at YOE9
zQ1cgD{7rDtzucw&P<SM~)5T|ji~jdCm+~*}7A=3b<~o@@FKd3YOHVfLS4963&Gp7J
z3|#bQ>hw0 at 5<k420 at -wPUXOYJC<QO>#sqjhr51ifH{PP{*-P6a^_p>B&(UT#Y3ub2
zO*%FQUe7SIo3!<M%9D=Gf!8y_?8di?l|9JMIt$7Dp12k0KS;a<^s(HxiF+RnxbSN=
zzs<p(KO-LtA0>T6xF%=gd0BJy(m}A~@CLM0^2X~Kl??QeH$H=seA??7lMHaw6aD>k
z;;P>t*HhI^UVzs#&cerc<1Z-v$hSJYV at bm6nMg;8U9U%aHQk-pBcr=6hl*9|0nccM
zOW#Y}HHshXDbfXEg at ZlEWIOVme{g{GnZ(_%_`#kpwfs#E_8f_Vpwbcbia6<yh+C%l
zY}5zhOnH1q^J`qZ9PPj8S?S^nHGkj5J!mIIzBlR#)<0750iJaZR&Av0&I3>L)M}cT
zYr9eF at o7B=#w8>j6Y_+?r}ClNciQd2@%aZM&;|V-yt8~?1N8P|#izI^)|V(A?#92;
z@~F0w+;@uar^b)@M22eP_w!t#^OZT5srgzL at 1waHb2svPXx>k!yWx9lKGencQ+zPB
z%+3{qG<VmChiM)(iuHDg<`ph}gy!y&RHk{IOMay0r at DBh<{d6xt+~nH=JfHJKWKp7
zh7{k=GszVXVa*r1_zcaLxcDhr|I;r0vozn};%8|7v5U89?lldUJ|EM3R~NrfbD8U6
zcbVoRT>NUyk8|<sG_QB at n>259@!K_*)k*B`()?-{zgKh9j+<*9R(wCtORo5QRLi%!
z^gOQlM=t)1=B6KF^uMU}%NkU6uW9+0TzcNt@&T88m*%WP_CMBoHo5ftU30hmSDJ5j
z$$zK$=PsVnS2P^uR^!Q3JgmmK_+%f=a~WcP56$yjd~eN%y7+#I>&BhVou{}fv2gxY
z#a)pG{+!~v at +Uogc9R2LX%i1A?ye>ASwF?mNpZP16-T4wayzTZQ!|5_I9UYLUE1TR
z2JfHVKQ3rOavpe}^nK&pShmEX=RONxYvEr(bt-$-Tjc+0;d}3qTF(FrA7bI-Ec^uU
z{^<wA<6)NGTVde?apS#j`t-QGiMMj_RN)<E;U`#ly at j7@;fGmx%)<X<;ZIulMhh?f
zS?chf2;M*auz38abrv`}-NLU?JaHd)qrP&rMgKPz`2+U!cy>wug=f)zjskScl{*ex
z^0`STvprYKFLue_rTG%g-_Uwq1ivnQl0HKJTkrMxdFps5vhZUqe3pgZXW>tQUzc9f
z&7K`Fkdi7N?g_5qXMl5wX;)`j<YN~8w1vN8;hw!6e>?Y2_V)zMH|wH@;;-D<n&;>a
z?+Kc}pn0?A at J_ieG+(57RP%jtYa!|0sgHB at b_{r``1ymDU##WQ^!7!I{1$MD&zymd
zpvfl(;J!rs&D9EWwVv_dsr;P^E_ya=Ju-eQ?mW#sgPdc- at 6$X-^ShnXo_E2;-?=V-
zcg=P5uha6cX!&1jzC;fV8T}W5iymXEX%TPM@|{}Vl&`nIjjV^<PWx(qwfu4VTmU?k
zd_>FV9qb66t>v$^$S<|<CoKFO;oX~k&nFi7Z^0#9I<-BgXnPJqQ<}>DA`3qfT=Wdp
z0|Q!}XS(Linj<?Ycb-MhMHc=$t!I(ebB)%sT=P6VWH(jw4=j2%f%i`@&{ERIIlG6T
z9!$mS6dw|oZ`FItEIb4CPXF}cxV&1If+N3$FHpQRE-&Mo;?`JrFVrvn(~oe3 at ZZGq
zVc-(~i*-E6+7WTbf~QKyi!A(J(NE)7YW)ZFOho;aN>3ELfBH~JI8Lqc!0w&GX<SRK
zr2rp|`YV;5aTb0yc>nZrtzEClz|o<oNBXCah;uckilcA9Q|Uhx^+GD%1TOKmK{w5^
zW<lH#l;>3PM_G7{h2IFCO8*QboJy|}$3Iz{AnpRqn~!mhWsQKiW#IkO1I_{dm-TRV
z-?s2<l#~AHqvG;1FE8#Z at KoVC5Ba7)jmw!i_x%S8uW~NNe>GQ*?LQSC7w0Da??acU
zzgk7>oKkbm*!@kO4sV&m)x0rwHyJ+M;WF1Nt}oIfm7NnY-Xit(VqH%3#xvF;-)iCO
zz(vm_tsqzVihubI4`|*~^E~iW_8h0>%eA~t7SDW({H<DkxR%!&&$F5jbMY)xRbpqE
zi~BVn>f&c;zCqiatG736?$PpwzpVLOEoXRkq2upR&5=yX9Sxo;9#(7lTrFp|Us~jM
zMU{G8`eZGw=fQAP2Hrn?Vw|fvcpUxO!Y>g{<FRV)9rBx$yy;bWJTi|iuDK|+{a0J~
zS_|I;ReY*=xETDp^j|ri;lIg0PbnVi#$_>fDm}Yc_`w!F)xv*k;qP1c5on51*>jSG
zpJw5=S$LO)e+Dk~Va{qNie#={T;1WR?K$1Te{bPWS@^DKN>hdR7z=N(@U$aS>p8^2
zTP^%13twsBn=D+0oKl5rR|`MZ!Y{G#do27N3*Y5vCw&(^>7=Wyi4b?V=1ZP(j%6)_
zxXU!(pa*1){BxRno^j-44S~3kXfGxI<gIs(Wj%nn7<j69_ at jkCY2iB#O|55;g^#lE
z#K&6)*VcMMCyXhLe{i*=t}z;pG}hGn@<Ssl#ttj12!+Oke7 at qU2+mAsshJioYn<Yr
zT^IGwlq;*F#i3B`?Abn_FMo1POI>ZKB?`%D!P at Gm&sRIWCK8H9YU-jb!CHTH4gUFu
z=Lf3`LVkbM=-P3ku{T)0&>L-zG&K*-b2OHO#!bdm;c##})cdQWh0Qf}k>Kd+AtC(X
z*q0Zo4%g$Ow7!;Tu)0K0VSTuzC8$o<DC94}*J{I&nwGG?3Re^u6GDwmQ^HDOa9vBJ
z=BGE2;=XuzllmO5znjfv-E9W?9-ATYUubhN;<>h|c}}oma-M%o^+ at EcP?`FEn8dUn
z`65O1OZY27aweWPRKkRi<-+5}=Y{?+1T;S{G%noQ5)L&*Le3Y{{ug2?<+_M%YZ{}z
zsGs7lDC**+zK#l%uXtFvv37bxO=QNnaC1`xHJh)rDjXS6(@<AGXIyKeLtDBRI8|>r
zl|-G?TT)YePjQ0;<-+f;Q45FTW8=}VG0Z=1^!C(tW2!^GA;VFFHr2;f`3lCiMw?rs
zW1FLOIOE^88vfsBPdo*`H<I#;r`0!2uBn$Vnb(Fx;g;H(=5VOFNi|Zga1E)BB07CT
zs%O+SABzvSSE7bTYqg#6n!-lyL4onWABi+Yerok4)!}GG&E#<Xk5oKzBDd=KB~E55
z4^ORWt&f)1wKUh)%!y~cng0C3DbA_T6z5zhq6-W%&rhd`%I5c(lp+D#T at qt*`~&oo
zBa#E2=*|=e8|$KVHT89;hO1HQ)HJmCXZj2409_&6#!DzDTfZVjKy*$jLXM3 at M~B1B
zsEQiVY4XpE3s*<uE!~gq1(B&gxQmgWFa4qhWEYgb=_q%h*2cP1TEoFn=)6Vqea&^@
z+VHG8v}&pw7iq1HhN9KcA<@?6dJ(EFM#YJ?J2(nWyQ*i4<6Wyd)W<c^rbw__>i%ec
zqSK{xg_6#fH;*0v-`LFmS4L1g8zpL3C(jMfN1y8lciH{*lGsJgH(!JGXb<cC{<^v<
zG(L&E?;AfI#cIm<x`uGXk5j`#z5)kT)-<9b)-b;S4e(Um(`~5?*R- at o!VTfZs9b}#
ztSZtpwXQxKF&9~b;`3G2pf?5ol1q*|$iCtcDCI5FZRIS#5IGv{O9MV&8<px0_b-!M
zrR5AZ_-pHfk}(mamT+TZI21)zN3IQp8>iJZhJy_i4F&oBiiV>6Li{f%Etda2{L3Fw
zR9sk6P~;ne1D}w>{L;eGqT>8gAtIMwR8Ul!Us6<<Cn7=%^YZhH3-XGGh)Q3H`sd3p
zEGWnyQXqw=VchtT^b+zyzP#p|NKHd1I;T0Dy4T^$OVoG%s=BJG+Nu#VXZqu at nMh8m
z9a8j{3Q#qv4p2VIv2O?}gGf!|w6OlzZ*WX$C^W6HRowyNMz9glh}Jq at aI32GL)C at 2
z((j*HT^br6LP<w_<{`Rg)kLPm1w+xAY1Dc8uQe_neTht#C;-Vf%o1_&-e(J1a|)EC
zV4`ap#O-fQV{KSPv$`{uf{-{LZ>AB0+t!u)*Z7?x at cH=&Wp#77wr*-&cnSqqmE}}H
z at P)Rg{`nzZC)&_NB3bSHR~uuChaVCkn~wjK?bSXRvypo+GeFeRIyn>!C5<EH7mcVW
z8(AHS4=jc1QFDf(;g+cThNQw*GDCMvE9)Ai{Xho|UAgVm?ie??VtAnk|AxrFV)^IG
zSN{vt|04BY at qC}`=c}{%O1wbr7bwXBrKP~(>Z$^DRY8edRZuGb3-i=}rKeC`Td1xr
zRM!@&YYWx2h3eWub#0-#c8I!mh`M%&x^{@Vc8FuWx^{@Vsz^x|Daj&7QfVl1{wv8M
zrMbwFS3atXiWN}T6f22hb&XH`&sQX0?H4HV0-w|~)zN~6n&$26ePZa%HOA%|mGk?{
zhd3jMiBjq-h}R%vY8t}b1*op&PJ|Jp8kUrHuZ5D at v=kR_M+eCa5v0(TFePFBka$3)
z=Z~(DTrVx`HeR0yQ&Qu>8n(q-<6A;DMYAKZr3IzKU)R*4M%_ at JCr4@`bI=p0i>jgE
zt!nWVIn5Z9wP3hnYTY#dl*#qh<}47dZw^P)nDbP*t3z(8ZEBTUwK3IAL#EcZwoF&K
zM|e0A at u1UIA8vGV?GGK0E|n2UH5TI^*U;c;2shL=&+&vXkX=(dBUC$mMrdkHotTQ@
zM|5|h(<4o at LiJ74FxCyPn<5y<#>px5RWlnL1OBzeCf^La|7*SR!JG192S>tF2cwHO
zdv*xv(b9y8fx76N&`cSrZ=8kjqUTqG-td%AZB4Xxx;~y9M(;R at M8YcCJfR7Vv+5u{
zF5J at E5SHlLYOcZUie#<v6Im>ORQ1>~@lH{<)4t)=6ZtGsttb>~LJq-Azv;K8n4R#C
zlYwVv4ns=^$A>Vs?5{2gRmn_+<bh;U+#_$2RoPTmg{G5^g6tBINKev`s50`CYCNrJ
zbV8Ly(pNCNzNsZ_?zgs8|5gks8X1m`RHJez$I<ZY=&&Jb{>QGmP!HnauAb#>AuXH$
zdogiTrHA>dCaMBP at v6s9@||2{?f{|BHuzHlo5!@)*H<)6i&vO4{Uwb+Qj*0IG#<4m
z*^NyFp^5pveB9;LOqmm^t#7KGQP9{l%N;s(qgsn0#^F^H)T~%HfkNlz*LFUUUd5EM
z6Km>Q!!3p5;Ca$5Lme83IzO_PDsR(T<>slT_LSDTh!i5ua|ylQ8)(uM!TcDeQj(KI
zNApiKqUvcz6 at YMs8d{MH5bd=yoOs`!`nsm2rEXfIL{VYLrMR_GtCky0Q(d>rL4r0o
z^>tm!Q2r#tx+ygmVMsTqhPp7OAl+NPn!ZRBT_>J@?8tAj-|=iv6l^&m9BFd<89(on
z@|-+hFgaOOzR%s2NAJHWVv2pTu&+4SGCtB8ojzwoea$qLowsu&J6Uf*es?3(WN8b=
z4kowO*T@|MmjmCBAUYbbb9^|05u%!UcLDvr0qA6P`Q7}NA)}gj<(FJCCu6QD`Ffv}
zMtzqfd0+y1O>T>Pk_Fr{GR79aAcf9&PjW<EJu;a|6<0fw!u%w0w_+ILQoLQ`hRJI4
zeTaj&+KJ)F<faz%Cfw0b?4<NeSAypI#-Uq*VjQUqH#9}&m;pj{dt8vrlKoBO^+I&+
zaA~MPk4PrV<rf$q+=GzHk8VSg$yX<QDZ*j~HHK;NCn1??QbM$1^xyQe3uPQ{xN48}
z4e{6!BdY!AnUoEy at T&nKw{*FZ4ozuk3QezRoKlZ!T~+m%9>cngWUKQFDr at FU#?&E3
zV8aoaH$ykOth!>HU&ahQ)amntXNPND*~(YyO3 at Znah5FTD^lHgoxi1nkA!cDPEp<Z
z(9~vGUous?+sOu&R8Mb((5yyxHpwq`dU+EXBjMVnX^oiJnNk*+hHhmeh8UFf&@MLz
zPV25muc;ehx!FnFjK#a!X6XBeT&%lLbW{3c?kl^S@?*4hw=K~cC32_zF15QgKkWK#
z^M7l1x!Y#J)-=Rz at cEo6E!8E#aQ_h1LGc$k9SL`~)19Ieb9YWY^Oc~RI|WmXO^u<M
zHIcfS$@SsFSy%z3?k`e%Wxvvw*Vq)Tn>t4pj5wAg@{?KefZF1RcA at -JR3?|XIiD=Z
zLBC8b!KrI(2}h#AQEJxCKl6J>_lrXqlg6lp%*`PX+~dOS__XMBzC)HN&2o(YMVjUW
ztEePxCByk=V#)wLJf})D6NlS3B;^`_!p+{cEDOsoMD$DxNA-=Pp8doU1PtjTmegoL
zL$eAytxcK|#(;uUM3yB>KXrg8Hh=gG at Ari8Cyx6cWvUF-P-4)0v`P`=zpc(8s}xh?
zIPuAKr0e%471WlRyl3(O+EtVqEKQM_o5_}B#yrosYS)~NQ-A#5n}?O0-q18tZV?e5
zCFaIzGH&Q<B9WRop~f&q#Z;kJorE7=DWN=8s^upbuSi|%q8qe5mEC`E_F4*hqG{A^
zNAkpVN|97^*2#kQTC-fYjR}9ZA{%c7Q*?3cm&LnCDO(SjqxSI(W_-*A{b*mvz5-wz
z&L>TcnsGeKsy)mqe{U0|C!kFeMX6yA9`c!<XHU_AP&V4bpl%fsmu)=+lB7~;{Wq*H
zz&c#1TpMMAe~K!9D8en%Tc=LNLZ0u7=7vPKqya-!4Km}8 at znp0kf~loS!gWAa-9f|
z*Z%+3p2Ux7ys&6pH(qjYXd0t`tNGT2V0xXsb#a$kaKDv?8Rt`!PG3>klqthoTcS-3
zdYpN?>V6oPTyI(y#<+yK7hv?O)abQuh};LaV$i7`E0-}%=^Cc+6;#z=vCy!lrg|9x
zlgAuT=T*7J)G&N3Qkdw*;w6^bp7t%-_WVNkNEwE|LQ#x4nH%$D`GRi4dm at kJISsAN
z>N0l#9n;I3S`h<mx@%N3UytKVHcPN&NohE$?u^_^0DOfiI)aT+jPp^fxrS=<3*14Q
zg29{!RwyM0sj%B%UAR%DmsD*{YN1yc^My4tW#w4%r3EE!FJLuB^FlS#rbWWjFoe<)
zYHF;X<G!raeVJKDyY=gQ-LAuMNa}RzzM=x6vM at Sn6q36e`Q4ObI0r*4&Qm5W7H_)6
z at m8m8@L-T+<k8_dYOI$N at 5ihkC`qgzkm>`o<MG=!oC1=$kfg8<aVLP}c)4A(L?_0@
z$yg|3ZSk%_31*Bc!ZWcPd#1k>Gezj(;vm^;%P>;+ZkSE5TOUj}p_a~-G_K#<?`c4#
z!#CzK2Rfxm;sY__Jb?3kZ8~+8ES6)@uIV=7E?rW|S?ecHOQ5mEz56g(@h8zmGnKAo
z9t9W?Fj>((ylAh6oe|NbG(%-t-Hhq!?VNA0JqTy*>Zx90A_lgn=9Vav%#0YaO<l?e
zt9sHPdG4}QEj`eamr2opVN~Y<zHPY at t10R+SSl%0-6S0pJpzP0Hm<r!4eC%fh!+c=
zduY%%q`YZtqdbA4Yk2n!+*U5lLkMLiw;sc`?hN1?-qe66S;E8Wrj3=^zIc91y+kr;
zWseFJru22CKP5b~t~M;AT~Y+LGn1s$sXKNv%^Z`gBk1PoRQRfU)ih9)7=1w4h|7~<
zYMBi at RJYsuiO9s5gVg-a1B;fy2WR9#7Rcxs?!^6|bvdNv=EaZ7WP7r=6I=1AjQDDf
z>S(F6&H|GhsU8%S at -TipBBW3+$C!#b0;@M{vas!Y6siY3)T4z%9F>m3$*ohN6E&rH
zIPnL0XqJk|M31AU+w-pe6qS at IotTirI+*xmSPQy7s?=_0zC<1{HL>d!I)3jhbq$`g
zKqNGo(CXDLTML4dgg<nASq<f&<0Maw_!}C~2i8lYwk6hvAj6swAS6kCND2ZLTZx%?
zfY_Pca*``WVs=jjCkRDY6;M+j)>k9P#IvPosNvT(L`Y#%bGT9U>LDHqVl~`YfCiLT
z$Di-XhzML5bJZ$baxs4L*qU4`HGn&?#dYXziidhkZJSC&B8=M-AS1mE)q|^cwpJtC
zTUTs at 3AP$aBJf9C{vWUy)lRa}KA*a2j5Ia)8)r%mbKf%-pob&3iwOy><A;y6c29I)
zfxe?lXm{Pv`SP9nvxI=__RLo}dS(?Ky>DR)f5al<ZMg}++Z7V;H<8yAU4S1x#;aVm
zoP-m8A%2GU6$mHq$ytP-;XfA$C-N8JXLv65#kuA2S}5g&UyPrTf5E{@{tDvnTDW=N
zgy>=Uk^21+Zf at TD@8*jv^4D1S(-tmY2N&no|AmDgBoUTEzTCopY2kA%{3;8-$--Z^
z at PAr(Pj71bi!J<@7XB*>zu3a>vGA1^{<?+lBnbuQPOn2P{BR4OXyN7hy<Kko)fRrb
zg~u%X0SkZ3!r!;>Ui$rIZaWXR at R1fi)56;<{5}g`W8q&|xL3b#$ZdbIg_m3SBnzKs
z;kR4(eHK1Kzfj6;=YU?R^WkdZzlDgYCr{V!!xBB062Fr8WyE*L!~vYhv!2t4vz{x6
zvz|kHD>X_F%a0<?@~07J`74OC{B6W9hgT-NIavvRxt`zK!Y{S(>n!|f3;)!@che1|
zI~_|b{6q^s)55Q_aQTjeIJdvgTlgjmH{bno>lvnBw&dnxE&NdnUvJ^xS$O|Gsl(;B
z at aY!bZsC8j at MkQ1qlIVelG@IFEPSYiH(K~<7XE~VZ?f=Rc1>-k^IeGU`R6!`{Am_`
zt%WbQ at bwn{Hw*9GH?{rw7JiI{ueI>!Ej)d<)c)>o;Q<SuVc{28_?;I1oP~dE;XQXx
zZGV3YA8z5NSooP1-eZr{{`Rr(V=R2Kg)gx1n=Slt3;)={`}9j~|G^gSxA2gK&$V!Q
z&%HQzeS5!!pY*fT@^uz|xrN_r;jdcwcNX4%&(!w#EquC#pKam4weY1DF7Lk==Z?<|
zeS_-eyIA-I7JjvbueI=v7M`_NYCC-vKHkD-S@=~Jez%1`W#J!K_|AK$w!hfI%PstR
z3twX4uUWW!qD!1RefP8Q5f)x&;pbcU9TxtWg}-g#-&pv*`=k!n2n(;a at LMf>xrNJn
z`o+29vuCct-T1*4KE}dNvG7YRe3^wmW8oVuJY!#va_(^LZ{hMC0C8^l2^Q|{pOF78
zcFp}u7V+N`-%ay$u<P;Dw?Cc=l4m`~68}Bv`IYABU^kGSKM}u(<nJS1NqnW|65bn$
zueb2mNzWLPf6pTSG4VwtzlHe4#CO>b2XJB!$HU&le~)t}o(E{24)zE9Onm-^`0XTr
z6LBy2sx<tA>m<Ge$4384nu|Sm690(g#}faF<o`^3-vKy)6Fqm~XY`j6zngfi<`OQp
zX9mgNL-MDR{8I2OdR+G$l3zyh%ZT4g{IA6CBmOb*`-$(mKMvsBcIIl{1Lrv23Q3;h
zZ4}9K{G39Z<Fk$QaQw8BJjc)FB+v2ldy?n)`4jO65C)T8?-S>E>ve#{f|I at +Z@(bU
z at its@cf3`RJjdG<lIM6kmE<|zt|QLzb{Fa4c)OqEIo?*2JjdI5lIM7PojAu^-hqku
z;dmQKoa5~T;;d)3<`QpJ_?dK>OZ=C_7ZYCz?!`~sEiP{K+ at ZPT+eh#-{C<*O1^!Q6
zzMds6`i=Ys((@?sPf4Ej$oDbCNw~yD^WDA at 7k@z4SG6u~<Y#Cu_H#PUBzca9xh`((
zUqE^|9xftzw*Ok<Yv8xhb0={Lm$82->F50OILUK-zC`jIpKlPqoc#TQ^oYMpbiD0=
z?}vyp at oe}3#Gk-<i9c~eUEGB0O3g*?Qv3}6Gx5uacM at kiU$N-_(#1`?w&Oui3Mcl9
zorY(*xUpw97dPQL!o`jJFc&xS)h=%2r)w^99Nrd-{HZQ(^vicw#F=mz{Y!~Ijq`@D
zA^r^UcZqZTwwd^|B=0>K2XNvq%V%mX_HjAdo#eSb>`(HXpNmOe^5G3SA68oU at uY|S
zZE?xpruCdg^3OxRiJ!AImten0{Cv{$67h>j&tHjONu0y=3h`G+KJ5 at 3z)8F@&$94Y
znoIn at fuFJeOyc8+UrC(%b<dOjD at cBmg@0|~6A#73aAHq2e#V{%@wbVep}B;21M$@)
z&-p5AFofVlp4-9xn!EF1Bgub^Ym7Y?5a)iy!^Ag{{AZfG^~-mG#JThNPKP;M<T;=3
zuDQr_e%O!XIlKpxJm=@bNuKqOAbHk*4sj0epNMlm;V$A_-+o8 at w+MrY&tK;`;gxWG
zN&FJxUlISDIOn%?UqTP_pA+Zy0`I6(PW-(LKV#3C#Q#qGA>tgabMuuNm5v;))x`fv
zdgc{4^6vbwh`6MSvFAGC<B9)4bFu$M;<uAL=Z6P~v;HTEPar+(E&2x+LI_U$<?!B5
z{8F4V_P;=!<N1LhqQ%kkcWjM(|00Eze&#EPbNc?G*pYX~=K-3Fo%fJ_yr)n(cljzK
z`DG+uN%9<@6G)!*Pa%1UXLCQ;O!CV}|IsDN92MTLiC0^Al=$T&zfN;^JZ!Y^uSw6H
zq$j7;u}AcbC4PYB5}$lub1m_^NPY?NyNS;@0taxS=TiJky0;VOeDX))n at N5x@hgbG
zb0iMnL_g;r|4|Be<9{X2dP<IV<lXT(RC9N}8cXt=?kAEwr~5RL=X}*f@|>^EBze|<
z9?7%*XGxy*zfN5AnE3yU_(bAcNI%yzJ&s8oKfN_~$Il)l&-U*}@@#)K at yp4c%SjK1
z>lu>2m*n5I$oqym_KTe#ll(7<-%tEp;+u%CBK{rmXEk@{pI1np)AvJ?=lJ=8<T-x4
zWgg|+`ZG0m$N!!r&-xD_dDee4agK+D#2<hKCjWF0=k&TqbFuSwk{>WkncuBEo at wDr
zG#5P=k)8*LA4_}{>EV3)qJ_UrdX6JKA6w+VA^GD;K7BY2;3WRp-`y?z0L{}Oe*%6c
zK1Yx|x3jGz&++*v at e4@L>%>na{t at xaw1mGqltTzk?CDK>XW}Q}oU!v4noD?hCiy&)
ze}d$TiJwgTNYax<dd84^Ht`9>e?@vuu;{5L`5e;ILOeuzW|JQIrkV-wc_hCJ at r#I0
zB0ZOro?S`)W|Hqq{0`zZq~~tZ!|}YD<aZ-IPZFO at de&R?yhHN4lb(&lYe~;$i=K2p
zgy1Cq>_K{Z5ubu{CO)$??*Yc)$|ZRo*E*1RnDiV%dN}_aP4fN79z4*doY*;)^o+9T
zIf>-un|a3mTH at 14&vc8PQ%Qa$$<HG`o%lHxJy($YDw6*l at jBu+kRFcbr6j*6h3i4$
zza~8^Ne{>KI+Fi6>3Na(4AS!|>Di0qKP36RiGM=8p7eY{df1*GBOnAP>H9Q(CcQF=
zHxSR!T=F58(_fH$BgyYa^1mQEYl;7p<Y$o{$<N}CxQkuf*m)yy$!|u!)5VSav&1Fd
zjQqzgZsd0x>G&`4<HgU6YvmG`{3++e9ZFp4D>Dv%1aV3CzK*zOn2Q^G-qKu-dqLjV
z^AF<O58ox=C=_|-dlKJ*b4Jeq%_Ur7kMZ|-lIQ!5nZ)_N<9yPyhV<W0oZHit#JN3v
zjyUW2c at RqB#6GsCggDz%sku8pR}<fd;`2P>T#l|J&guR~;#|KC9Hq=uc5-?RCC=$`
zl7&yx+ at 0U%5odpYPn_*sNBX&+dCV^pcCtN_EqsB6-)!NJTlmKo-bV&c;oSN5U<>zK
zc*w%rEc_M=A61>Ohx?NQrSk+QcJ4>{XU%kl73cZE=Pmqg3;)EzGwM?7|Cxm!YT;!T
zKF`9hx9~?Tyd{#blk?SF3t!ffkmq=N)WV;&@HZ{|a|`bkP3`aA7Vfj~Q!M-v3%|$0
zA77ZThx6547biH!XQzcP_=6)a^+pqZrk+1fbIG@#5WkQ(*AJIkc<-BVF`Ve<@r3<|
zOF!SVcXgVJzXPbeTuz+BHRxv1?v$_nN&XGuET8_zggo>8Ej(c1Gc5c93%}FCAGh##
zE&MwRA8<?RaE-O_h=rd{Ty{-<xQ95$+shXIrG at vsHMO1P#21mjl@@-Yg-@~Y>oj-g
z!#|Qdj~6W`c^=PMMe;nJ^CEG!e}jd8Y~f#8c;;<RyovpMAJI>9DK7_5{?8+RAn``x
zoQ{`R_}wxH0w?-=ke-}BDXhx1JiBW0$v(sf5ica(j7yDtndYMZM&bdIXFU^1{vgtS
zvPHg;_$j2nh4iq$r;<GTdj-iKO#c4PBEN*VG-W2d_mCd;ch(&cf|GdY&-yi&beHi5
zQ%}B3@`sT8rzGEjYmC1KNaYJBdYF&aT>L$h^o+ezq#b)WKObk|jTS!3!q*Y!eE6D$
z_xW?e9`0XFCjL1 at On5IP{uS{Lh<ho#``wk$zlG%6h_n8+#Mz#ncPI34yd6oL!yB^j
zvn~8a3twyD8!bFbDmyqyceZDsg%7jvlPr9mh2LV~J*1L_bKBF$!pkjunuVWd;kR4(
zIt%~I!grU(Acg&T7Cy?tr&xH*!vAdHuUh!{<*DtgvG5Bm{LdEtyoGPE at Sn?M5}Z5T
zkGAj{3qQ at mFSGDFEc`hO|J=d at aubrm{s|TylF1$|&-KIE7QV*=3Hd9qYwEX3;;d&b
z at xfHT^?fL{o_#HRyoJxQ at T)BRK?~nt;ogT++j)S654G?UEIexAms$8j7M|aku=6mA
z=PKfyUdIv7Bl)GocOd={aUbz#iF3R2+zO9!QjYRT{vF~4#E)8;kY_tbS@^jYe!GP~
zYvEs6_&$%Mw#RSbGc0_eh2Lo5D=qw83(s7Y+RlC!ei8A{aj7Z4H*1~_#{K6dBri>+
zk$;%v3n?8RBhLNRr$~=91xC-vM{xkx1Ha4hGrUG~u}6kL3~wa)Pl(@Sk-yC%KXWxM
zh7*5_$o?}l7k`Vvdy5d<Z;6+H%XQ)&c5x&B0_iU${jZVy;oyB8HJ)B;oE_171j+X$
z&Uy~kT<ny2F0a-zhvbhWJy(&u%=4Ol`x4?&=rHm8FzMlOk7tPANb+x5c(1jNVG=Gb
z*Sizv_F^9k4{9#qtssA^h#!S;nfQO5^sv7hE&S(?Id+QvR?@$}=3 at WR6rbaWv;Nr@
zeyxSCvhX)8{96nE`ClCS-SIrk!owDRspb+7l0T1h)O!9%^2bm-EG0ga_=BXU4BVv4
zdXgVT at _!|HE?@7uxY6Tz+%Zh-<Z`;R<`NIXNq-B;^StocBwtSQ*Aw>>UqXBYarKY@
z{1ksVKlge90M5<#Aud&dDR(~2C0whBmk{T9ljBJb+u2C+GfB@(lIQY!u7zJtdbobL
z+9H2FagK*uE&LwhT>n3+xx~XPvj0hvXZxQcc}ZW1Z*i}<xQXYtEqXpB`7yZO$bV^(
z|Bg6^cgH7{_ubOH5Almh|K6HQcxMwINb(%s>quTqFyXz~#f|-6k)9!xZ~H!li}m$f
zkDW;TQk*w>W)r`R`1!;+9d~(Jv^(~(zlRWKf7cRcJzr=p at x$T$#>I`DW7a8eRlKmj
zb;Q}<TZwac*AnOOzDk_!ob*g;e@`XO{^qVv$g`f&n!Ce0&c#i5Zy-G!-iL{^zuspP
z{&IM8iF0 at hiL;%{dpml>&Mf?lJ*!;&Ku658&c$ER{8bk}LGuq>JRNygTx36IYy6F9
zex{3`tND2@{#(uO+do;)pEdvRfMmW>^J*OsDQ|L%Y{ENLb7RkXEx&PKvYxjz|I at +A
zd`Gzu?tnv_t>}LhKcoLV;v0zXeJBp#M4r?4;lmVG<ExS`{j~n|zGQCRhv+SKxLeQM
zl4N=F-ox`<{06Q63KxG{^L>v_tv_^3vi>o;BRj*zM`(U!S+e|6%}a(S^m9FVCGnn!
zdlR3pj!M?^me%uui|;BC0{3?p&(wVJADr_NOo``w&2Mw@@tQAp at rdD%ChPf3^HnbX
zPtDi4_z4-#^{=}4WX(Tt at m$US?&4=^?pd8|Prl~8UHm-Fi>Td^cv!3XFc<$w^D!>|
zrRFEN_|JB5?3n7}zt{2+7r#pLGhO^)&Chf3Nm~CkPbG&ps`+!&zDT&P)chk||C at Aw
zNb^Ieeir$+HTUcK)5!PS(eba)*{Je+3HD9?>>$qd^B;+G{k()Y*UxJ-7k}sAXY at Zo
z^1mVeSItG9*WbQH{8W<vkhthH`adQ95^-58B~G&ObNCr~Sz{(n{5=Uj!=<k)PUOc>
z`IR*W;zXX;70Z}|IN`jWS;ij4iJq~fNA3~C9fV&Maq&x>$V;3UdnRZu`bQH#iTJOG
z*N`6e_f+Dne;(-xk)HF3OPU&cE+Rd@#J=Izko+W)zmYhvi at t^Qj3YgFk$es5xtI7Z
zB>#}+?(|wi@{>u=lf-#lv}r%xdR`&<TGI0-@!ha*;^95b-Fh~W{1npjIdNVW{SS+t
zG|32XvN;Vu<8M#mVd7cDdA;<mnv0#BPYxl@`J{mKoKE@=Cq9k%F{Fp}k05!zuMCkq
z`&&oyQ%Qd_alXH9B|Yr#1;knZWu)f}(*IlH(}`b4dRYI>B)^j6SCBmW`xlb0Bl%~D
z?}<EM()R_@!}ZbzlK(a7d5`!i;u}d1+uuX?M<hS6otc`;WwPGY*s~|`8KmFzn?z4F
z$ybrQ=+fOw&&kBEB0ZBeciU4>^7SO&LY&v5&L%w^-iwHHc&{Qo4W$2fB+vELjU+Ek
zw~3!eNuJxsXGmV!>qB+B+z<QWByKo<iWGI)g)6Xc^jBH9v`yk9-dJAR8*##ai=WZ6
zQXrh0Uq|&1_XqAL&i#Sch_n1x#96+#1XBBZ4YtOf{fTqD`H5dk^5ckec&8En9m&@d
zXFYR>vmUNDSkEOS&-PzUob_L?xoqTDFA)y+0Liod*NC(JuZS<k^(NkQG^=!Ee<hEJ
zbLWQx9jrL}Ys#g_vz}6t=lB^zob{OdY0<;>PbPWRFLjqV37-5+{G25aPV}(;`HDK6
z^GVFYCGUxI+jF~v6<>^f6QB1IXZ!WAN;mlzNS^I6;|=03^9>}=@$eCGj%PCt;f{wL
zseG{>)4vsY)?@msZav&zWjkfgRGiy>88c7CWlY;}jyKbf6+O%wNPaQSnfQ+oXM4^f
z&fzlSE~20HTxyXw<1udeKU(DPB+mNpBhKS9X8gvj|1TDK?tilWmo4&UT*s~dLz0)N
zCljCPmU_dC1Bo7v=WLQ^J$n#mI}arOH}aSJfh=#vf!zKENe}1eiNrbGXAtN5!SoN^
z`cEf$&WD#0XFIPX&hcZ$pG5!r6yDoO{u|;;HJ6S2O#Sva$#b~OIF{&NjGsxz4 at jQl
z=Ud|J?{1cUi0QwHevY>TNS@=Tj5ynA#?M3#`+KTI{xS<+LY%|P-v{CN=l&Jvx7RFs
z%y^sF$$CB{dA9#E3pe9%?sPHZcJ6rCO8}gk`-rnWM`|v~DL<1>%y^!hUW}i~566=p
z&JWGR_eGsx<WINgzm()z|CPkq&TB1v331LRj}qtn_7~!;{{`Zl4?iZ(cAD`^In8>^
z_@!`8-+mbYaKhQnfyBFT&cvG;j}-Y^i65ioO?v&UH%`Kt at llaqjGxhC#z%#}OT2;n
zWj at Qo&A6%P;qWdbd9If(BhKro%($lL;rO|Y<TsL?>xqw~d}YR2-QhLktil5%|E<;|
z at g{u<IWI0lk6#+DqtmlLah`wA*IcgW`S(iVi*e4x|2X0tZ(-tGj($y?^Pw596 at OXJ
z=_Jqbc`0$W$Bgf~^;}2ttmj_htjCN8yY;LldDinfan at tTkKKAUl056-@Aa at AGv4gh
zlcVo<g|nW4#95EIKX&Ue-vct`?hxn`H`bzOJaJC1CLJ!L$E-U!&{5Z|ei&upGFBi?
z?Bx1nk)qxCEf&7Y!e6)WEf#Ldjo2f8nf!0NkDF-GBV#+_+~Jz<;BH(`_jS9E8*7o5
zv3GH9{TDj88~?L~KX2i-_>r+Jac+NQ%~dL1W8tS+_+=J;hlM|F;ae=+mX0Sn=64I1
zj4_Hc`P}p?&UJ7%c^ShI=Z>E>4(`T3v~YPBggCbzSp%Gk%a~y*KGVXlv~V+z;P%&y
z|GWA77Co5~VQ_Bw!4`hJ=I(f&Ws#q6;ma)iWefkt!gHw~%k|Q53!iG?F$=%m!XLEo
z7cKlt3m+g6pCbNGvT##hNp#51<Z~Vu;&_m at K%6^$|JC_?lqJ7SvG6l3{8|fNW8r%^
z!Byeq at d|G59)OH#FJ_S*9yd1gGVXZ0L#K<x{h6faZc49Dh}U3WoIAbFa&WhFIp4w`
zw(z$sJcGi;`9apAi*tu-w1qcXIM0)^{#z~bk6QQ}7Veb at OJU~$7H+;b>W=3oi#(5$
zu>E&f<kwsH=N8`2Qr?fSaNBo9=UL>hws0O#;BY-{k>6zD{U|@Po~V;7D*yZ)`=%T{
zWa0A6vN%!qIetd|r_#gY at N5s4Bj*1QW8mEO<dU5%&-D*;9*5ileI{Hvlpk1rH1RJ;
zJ}Ab($!YnS`h1!|ICnXXI=CCZ$- at 6);kI#jS;HXC?Jtj$bAFg;k)LDXmst4i7H+HO
zH(KP)dH}cmr8 at rI@qDc2Zuuz|{u>Lw&%$}0i{s5aVB+?7KTCP!d1uyBXOVBS at M|o5
znT6Z>GihRYihS}%2dn(k18HQ+g=sG&n&fBlx$S=80ZaPwya2b?dsyP%tlx0Q^T`(Z
zxfX8bH{E(xTjaYe+-r&Fy)C at h!cVmD4hz58l3wOJ&SEb2XXep3824v7h+m6qO!{6!
zT;}o&=kYfl7yUEI%i1<0Z`KvM<M~OFzlP+WC%%|?Pwb16a7kaw=-*u+obb8$8U73G
zixWN%Kf at 0Y2q*k({0t8ZgcCcZuVpyje=#@x6Sq9~Gg<xurQPwj2>V8VDU}PB_lbdU
zZvD$Gd`F#6<TUFaPx*)SM=kRI7u(;@5M~pf`%9$3NxX4=!uLlzQu?M*{C|aOjGjY@
zbNy`ALyCUpvNlqjo3AC#{!XHF<bK6ojvAFeMa0yrhimTEKhnbGnILg)`Kuh<jX!AN
z8!X&Q;o^AU{vq?AMZVU;&#>^{Soqx*&f{{to<}c3?v_s^FNu?Q`zL-TKV(_-bGozs
z)3v;$VNyLzdbl3`op=Z*@-h}`{5_b)u`eZFL7e?<A<ptVp3n04TjXCQ&hk6%2qWOc
zT-MLy;VeJeB41CO<u4)5`u{|n<sT=`^6wF6`AprAxa~iLILlWPXZ=y)EPpj|mS0Mo
z<zFGr@}CoD`RraQ`c?dMyE%~f<q$FXXBcswzZhlV<1PGG7Czm=BNl$Dg`Z8F`yp2o
z=Xv2}#5r6KTlixZ{tWS(Dc=4 at oclQ^?39TA#U$@gk4K8P6dnEegTaa)j+6c3#Mu$~
z>xkv*eW?d at m7qu=aXDw4Syw4c7g=@6+%F54U!I~K&r5nMOb5{+VhEg(H}mnw62ICJ
zQUB|SXA*BEzB6&t|2O*A>GJs~$>)%~S#K%wW=)`+-c10UY((C~OCE9A-7J+T+(H*$
zx39x5A})IB9qf6IxcF<v at y&gooECZ0pZhz>@1}LgrZ4rcOdnOaxi2t!q^yc_uQy(_
zpTnn+9=T?*=4PF+F!?Rf+^kD6e9-_$&%LBa>^J>@&BP_VOLcmDMO@^iY>3OznbPR*
z)E%y$5f}L-N*duJF8Wt%{bn7A=n?scw7ki8M*rpmoD=g&kGkeShj$PcJ*%}IGkz<w
z;_nOE-v?dtrXTPeak-{h>;J&T7ir#8-=`Qma|Svd_aQF!yzF34330K<Ja<t>T;$)@
z^5cn%ADgxQ=`QXW<Xph_eIlQu`4X4>I?bPR at g)a2dOmRRPR+k|@pYOH)Rm5jhrELw
zJwD<Ru8j`%Od&4uVCJhDh>N`Ghs`A}espU6%UyivA&v)6xOlVX8(e&m=KXX%6u19S
zM~|6*7vA4N>i-QSzaQ~ei4Pz?w5M|*diEzCBrf5VzNWZKi67t~^?wO*(Y09Hc`tF%
z^PRpXM_2A5EAhOS?7;nuxX7D+Z6Wc2O49i^m-ry!?-18nL7mOp$q^FobW$mBI&mHK
zihoU9u32}O!k&ywXDdwXlxJqdRS=hO1$4M35EpqfU)xMvL^tRO|2f1(-mC+DmAL4?
zR_lM4xX4GfJ?6z7A|}7ZCHM!|tGBZiCh`lld_8f|KT6lLt;9wCMlHXHxaev=2LIr$
zBrfu1yw$XOA}jju)B3-1$v>#|_tlNG$mio{+!W#k24dSlT>Lfnx66r}Hd!uvg7^>t
z+VvCT;KX13Xtg?CNL)vy;yts~M#-DC1VY9W7hQ|X9J%FgKHT9eh>QJy)A7(-4&Y3@
zy{F at CH{!Bu`Xzb9k5E at S|E3c^lK9=kk0SmcaoO!F2Eg^~<80+nq0!E9AL1e()$%71
zmnbaK?N*q$$eZWB<`NeboqxbTxEOJfU#0cGN?i1RsrA20T;%;a-aNbD08TEKU(RYd
zLb)I=@}}Q2p1A10R<}1N6Bl{YznM*3^e=i6|KR2k7x_+Y&vN3Tf3|K9RuC8Yr?mV_
z#6|y-r|=K%P2wW|f|l>Ot2!OeKi6peeTa+v8(Mw<anZlwY3KSwiHrRETE3pR*uPTi
zZzV4BpKJL=#6`d78Tp5LgSg0lqvbn^i~jeu{>O-m{0=(ZUnMU3^VZ`Z+`Gg at K1<6V
z(pR01$4_tFUJfBH@@D;U6>%|TopZV8c;X^&)>|whF82Gh{ws-#e2KQlGq`0=L$qcx
zw$X^Qoo at Cb;rg1v(eUi3XYiDoXpLv^<dznX0)s;*j47QQZmgZ&P!pNqD;{Qc$Az1l
zBGGWfSLE!CYi(>9-qbj?Zkm6}<a*EGNRwz1zkGvBaA<r0sfk2en;F56>S#ejO>+?2
z;!vn|_H3Wemp{3trLHyv4Rwvvg0<CApRaa$O(YbJ)YL^=g0=qY8vOJ7tA~WDqlNY1
zmX;uPh2pTerY;g3EvJC|{_=eP%x*rGgvL#Vws3g+yd_U4ii(FfwKgJNU{}<a7pe}|
zhijw0mT0iL47R!K1o9V$DnqqR&2xeklk at yzsz-)=zED|xeN%0yv1v*ewpT$>fiYD<
zM^{Bi&cp+u&V&$W;c?^hLWApCA~l2aJcFmz)`r5fYs1aa5E8vUED2g2jbHWubI=oc
zuC=kgZbrC%PWR|Y&Zs_D9-*9H5YPEzY8t{R@>4>#q)swGV@<s;zbYJ=sxw4OifgK)
zMKh5-nj%5UK`9DZ0ZNz3*!jpXTi3Ha1qdZZO3Bt0rwZSYc%;C<Mr3*^eBW<lDpiS^
zCD at 26qOmr-b!9$ZYh&Fht>F+#$_$kFAq}ml!2Cr>Y5-N*of=5xcN5K~X4sy3W{NVX
z7!l=@G8+lks8U+j*b<IJgQKeDjDO~s(okqxW2>seP?a?{MH*`ALv_dyHImL%5UVbg
z$Zj4xKIBx7?p&A175`=CCYKJWMasjdo}1<bt0?~_vVXVi;h#A^R9zTK*7K8AN2&#I
zRlFtLD_$Ufej!qES~wbVQZS_RQ*%>`e;iWjUuYyn)(>tj{*PK+njF{DQAKiuS4Z;`
zO<ZjgYJfzMk%luxf~2ZM+!^jCtkF`I`EjGiRQp0yVaMyPDmjr~!1aG+xTd8w5^e}L
zM*ZV(K94Vqcc)5m$%vYUy81b&QXSfYdSx3bmV7B%x?<^;dGiYz!jYCRD(O&kR$U9K
zqfoeUT3ur}*ig|>kngW(D9SIy|ANwD`R~KO{2 at ifg(U?=z9Bg92`S7kEi5f6&My at r
za`{CCMWy*AMTL1HBD63sKfkyjuXu>4^p&W8|F5~Ti;b#?;`lxQY4m|=P!R>IBGgbS
z{Q%30SqLk|G<8!D2r+KgvZW2X-OaLvlAvjnF9BmsG?B<dc`)G-6JvO at F(#6zu?b-C
zMK{JMB!m<(d>BIfpP6&E)6*H&oBF^ccjwOR{O at nh%-p#%_s-sJYHn?5X<pfaj<d-$
zgMm~rJ+R#~B5Q8NN!W`n6X#?pwH^5^_P;q;>dy~s$R&ER=;rSaI}(Xp*QONJJ}PlV
zAze)8Ql-6xOrkREnjCwiw&9Yzt8cKkH;aL0m8(N;vhUB~TAHJp at 49cSrrvu^>QxLc
zr?s#DZ$KHP2cJo=f=hs>SNT7O#!)P3#)*;16|(7`Ov>pTF|3d&495B|R%QW}@x(@R
zal1$7iSNx&L)F-1 at 9Fej(h1RU^PXKNx6MGGNUgT&I4Fny(c4+U&Q+<@_B>r42Kq~O
zZdC2OajvKVdocH^3<6tIG)|??(##$cXwYccYpHQ_F&T2YSWIKefVnUxP3t$i6XD4*
z&g%7<QlePQ7d!GhD!u>i#Oe&iVQ{)b4lqM`h~EZ&=U_HF72h_1sOt2Yh}%Hy$n4H!
z6R;L`rm_ at 3`I%w2_>DcgN;LhqV{rtUR&f!V+XLt(@tuyr2tJ){T(<>x4SE|foE{oV
z6>#;+V at lOu+MC*qX>CtFM;Fpq<3PTYX<Xm=+Hy=9dUkRc1MtQ|F%MA*6=?e6Okb)O
z-E;<1z+xV^A7<?6ekI=uoN}x<hxjpt`Omud5hu4{#1HA)S<knxjsD#T`c15t=k9rg
zpT#|2;ff#PXFdG=5%@zM{ecL2Vv%$0KZvm8Tl`S|M~r%^{!j!xt)V05@(&{{T=7Hv
zQ${^i|6T<B7askU2>LOPej<YYdyoFF2>Od2{q+d?-#z*p5%gp$Ik*09A}sYLeyINL
z81+>BkqG)4dA`EOq4ST{4hmQN5MSO4<mR8&v5HRokY0WV!nc7<|1l?mzSWa|TE{6|
z at k9K$M^9xUI`KpL4v+q5g!13&(LWP`FTd||`|tV)dRZsr>gk<MVz>Aq`{g;St3MsV
zep!d<>c5Pj-_Pae>gj)_CEwzQ at _&r=Zu_NmRH75V4sn!}AG=`Bx>43|I43dIubmo<
zJ%KPCE3V>i at q^_0&GrjA|7dNz*dy1)C5R&wKMum4b(hb}-c+BnRf%lC9vxHbV;5|a
zaV4m;(Us38>`{_A=3!MOIwpF499a26+dshi=1K~?Q^Wip)d9qQ$<{lp*X3X41w0p&
zVVeII^uF at 1yJHET@bf4t|HasZFXjKS at Rj{zzu*fvS<h`lc1?lolRtvZ at Rj}y|M0S#
z62TFl>RR)uPxF<3{8v)pIiWhPwx50@;^WVsWrby142EBi<7xg4=F5A(3=|*n-|U|I
zES+MA<+>ZdnEbnu*x$$ctz7={wat};@Sn+uF!`U1GJCgX+muOO$3W$`44cmXY_t#J
z>*JokYz`BPs|>4P>@n8s_B-#Y)&IlgXG4}n`x3p3_4 at p&ov;e3AJ^&nqxWbT`;`Ih
z{Nmj)7L)xiVAJ+*3GnN#S>b1_7f<uM0{j|Y5Fz7e;!|It`9}l%appg*?9%*$0sb)a
z`?&mw-{Rq)3-DuqBQe~d^(vp5PwNhR<$sA6ysls+ at mFHg_BTLGS=9AE%>2()gVX$_
z_}<5#|EMiEd5;_MX}yl-?+NhZ^rITMYgO7Gz31P at k3DYrbx!%y`X9~zCdB83b#%_U
zPTT)gfM2)3^4;>M^*)+E!F+xG?qvP~7mj@?4)IUo`b7J>{zh1Th6=}VI{zo2rzCOJ
z&Xb(~Zq`!$y at XBYe*-RjK7NvOdZ-G29rQl_Y37e}zK9?9 at IMUj%d>0=$$K3jHBQ at q
zEWjULXu<8QBmP=!+Wu9zKKShKrpW?aH9oC3@!5aY!(Zp&UkUKbbYX^*_XC>%KD7OR
z2Kcp$to>swB>P{+rtSY05kC8q4_N-1D)s+0^gjE?neWzryN7=_z#ruWsz0moo3{UU
zfIrF|zx)n>?0?0>zmD~+KKqAx0=m-{1C-Wj{#EFG_SY}A<=@RZ;&)&}c8!zq-*K#i
z_3<YjvEV)SFszzh{~tl`;~)0$J8=}vFFxq!7kJ_Aaa^BVr|r){@8e%${wWrd{Yh+^
zzY!B8pZ&E at TKlWD|4!(A{1JXZ_n5=)^6(d8eCOj2FS2}jZwDV{+W9vhdLKWzWcvBH
z$-|$GMQc8OElt+p<aaVAfDc{%wAk0jujLor%I_4Z{Antv%YSu%U#6R-a0jes_US|O
zTLb*=dTYO1|68Hg{Luiv at SFv|f%fe>&HpsOuX&!!pW83lzYUw_H_Wx`rByS>dUVT|
z^pXb&i at y|lQ~r{G{j&|0FXuV&U&kgoiEo3R;^aL!ERS8R!k2V=XQ-$3(lg=ToT0uI
z6?!i|m96V^cn9=UQ?|4xQ%d=%%ZEujnF{k_)<5h<V!zDguiKl{pZNO%`U%!2)p6x`
z;(x$;-TvbILk8i<VRZNi^uG32_O!oV97Oce{!R*C6=3^+<ew0}(%<s%`#k&~n7={{
zWIxILMinpJk@!EcUL}jY&3YX#I*I=SdJLhawVz?u*GWS5rTirNF7uW7u~F8ankOl(
zul2W~_tjtRa(l!+=l(+uhY-EgpRer`sXbvWEk9+s1$f7>X+4H7)9>9Ou0CV+-^CGd
YoG!nI at SSeElzfO^*fN(AI8N*T1?y0%?f?J)
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..bf65900fd3071f067446f6e7f98276c88f5f090d
GIT binary patch
literal 20608
zcmeHP4Rlo1oqw4m5E1gm?^Id|bkJCJn&CqTqRk{3@&+a}5~5VJlOdUqlzdDlGZ;V6
z=*&P~AA>ovZRuL~q}#1awcT>uf)uMpp+N0vrEaUXo?5h8nPUCiDz$3%_rLGnnL97@
z)X?2?cF);+PTsxu_x at k^fB*OM4czJrEOQhUDIygqS17rfKow=omn+w at Vy$wK@)<@u
z19jpl=edg9$;+o9Kb at D)Kz=4KpN0HvUY?2kle|0|`5gR-<h|N^mABQqy0t}1yi%p<
zH at hmd)VP}bokLMHqX9LewnEbzTuv=DrY2wJurpvpDw<MntH~gcCgT=Vz;!Mvej^AG
z&#K8ZY}SkosQg(?9)!Yx5eC_dYH|_YG#NcE)bQ$CsQHan&^;NSe*D at _byfp0p6Swz
z8=?A4*RiX|$Hz^e&IzzmOE0h1^b(g=^Msn*3CWsK2Vk|UOiM?Kj#1k*<7QXc!_6p}
z)x=Vl62BK}oPJ|dr9a&SdT6M5A~wTs_^Pvfj3uDI#)W_+^`x5o0CN2LuQRR8kegsY
zeKnfq)M^gJW at rW~LNDXj^xvEO)V$4Pjeb1y#s}l${O!{@o7B|lkeO-6gSDIMf0<E`
zdr}XBztgSGN+PFrZGv`RHGC<wTdmi)^~}{PAvmDFlo^6{zi}&C-dK$uGI{+*qs8)o
zKF%$FHrDLdf1h!KPn}hZ4!YR|<_1?absVv)$!5s*BSt33$XTBZfTl@*B{PHRzXc+e
zLH`$p{$&$*-^uDP^Xt!LzV$xrH)1YyTR!tjzhN>{ATS>8x}1Q^HT_zbGZP>Yy6Jl%
zJbsOqI8e3rI`6gK>%3p|2KNW_cNl+`V1EEDuCTi70pT*M)|}h!A*~geN8TGBAL$%<
zOFi#h8e at L_ZEvej|G9T{lYRh$P5+yA+bhH9&<@QgnOj9Yi$ON%8Pn2@&V!9kRHved
zC~d5yHx;Nfqf$$iDpVq<v{7ZTmfkW#{D&ILkWo(Jl!J}cRMyOLGnKo{as<K~T$-kD
z83F+IU6kotMp at S2ss(h!gvL08ZrbuX$_JS$WW<7u$cXhQvV)9*$*we(RcVK|3<ITv
z;!d+f#lyMcF;UbXpczj8dKo?Mm`=|vPCNtpmI`E=&U at 9kkI^M60jhgaTfzUP>hwj1
z6D|`;0~t=tH7na#<$P3()CkIYq6%frNbNvHJCtZcjgqD(s_8{KQA?SgXg0Go3`~uh
zBweT(DQeT3>S>8V)JXN9o`?{cks9J}hEVNPUmJs*Ve`#Vyg9^Vqd<x^;FKEl`$mZ5
zP+})XP~63fP_lzwrp99KK>9vbPVXj<@53|;*St1<<Sn&7eH0bVbc}kML4sh6f{Yn)
zC~=s}gXkl?2+ at 0qj*DjH^zPTKqQ6Q~vZA+>AT1p)6Vn at w{W8CCu}ez_T+Keui~dJ2
z+9`cb)2F*A$jY>uV`}mT5UkD`!V_!2hAK9#y~UP_WsCh6VHiJpqSRk=VBk}lv7J-~
z^rPCNM at zM0%<753GDS_DRZNDo;%_OmEhI^vF%~_VvD&pJpr6n#s>iUv)QriZS*tms
z-hTfnV)DmGZq_h&wXtdILM96}f8s!qmiURZXw>w$%GA^vwBSvz>Rc9K8j at pb>Kjm~
z842c(bPq{mHejkn4Ae%*fqbDcZmKm+N_RjXJOpEIc2%j#o2Q^*HAmH?V=B5vQ~Ms%
zj1?Ht^|k8RFh)JCUSlh7Kj>&3#;X7%9BOc_q2?Z(3Il)!YF>_&liarKn!{`zWVY%M
z%B)Oc)fz1!qeq6oO{-YSiG~{^6u?ybE^0%2X#~N)bs!zuOXEdRlN!1Py?z)KtlhCS
z5IKf&ARR8!YB1fa$ssfWeMPYtsChxX{V>=MmQ;OKQ0m_%=7SAYMT)kUMFhpfMF}P{
zablXfxvvZo(hri{eW&8V9eNB!NH!g94DY2{&F~m9HOU4oIp5gM28{><vEFIMgGY&;
zd>$b0zop&+=aKs>)#QJ`MCSg_ltLJJ91Wm|$1o)}3<*-sy5JGe at -A5Y@w$MN4t8i4
znNzu%>LUl;c3>D1rA0=arTEjnA{rRj$JAGnH!IX+7aL_Q*ii&%Wqn+|{T}eunGPjV
z9ia{KI_A*KL98s;Bqc!uB?csY{4uc)!Nq-?Hzr0QGe4*@X;L$i9V6z at xEx^SC>~k;
z7;;_~{+^$Do($-(a_RMznaj}eBSU*>Mn><^M&iSR>Kb&698_~rpF~iVshi&?2|TDU
z`167)a}Txwog at 2b^PIU8#_)ZnG at 7yaW;cEh4iSHWP}0<-3*&=@QYGR<gwhDn>j`2*
zC{f3=P&$*wk~x|`b||sv&koe&)zmk3W{#4g0%q2#$@^#~r3vQ<Y!GJdB6>YRY%p^t
z)o9~>7lq)-m?>tE<imfX{@s3<B${2|-8&r>&)Zs>4lp9 at SmQDypl17Bnmz~R*0EU1
z^}|hVg<7{bb_;9S=W{J<!G@@wX3;J*C>B4d#$<l+F1eb`N)*nT{;C<<Jg5_6Xh-G@
z*v_>7k~s}Z`TX4#&^!3l6VP8izL^od$B4|hFzHxu<dJ4xq%A6S6>VHZ_i$?JqkQV?
z*q+=R|KN(P6;l}JAZznEYJ|y~@yc9#<aH;XSpTa$zofSx1&>zqYc=@>j05v6W3+E@
zX^9g>SlT)ESU~?H^AewQ&AGT!eTvPhjO$<tU&1o?GB>ZN)oOmOCVxy#PCXf$sU_Zp
z!0S;Jve-hZ(Tb|KXa`HqL8N2W${agEy|jH)*!5 at uyP9n6A~v#%{A#hQ1l^#eTiRG_
z+hwV<&DK`fNxi9!iGtkvu3S5BWAe5SK@$^MCX3__e3qLr(SgK9h7NOzv7F!^qCd@<
zY!mavM?~x%_}e7^HcILqEPlgN^ExWCiek!qk at b2eMRT@(DDy6qSh+ at FRpy7B;Hq~f
z5Zu(3$>d~al?@Tw`B)i9?w=_Rkbi+ at IOIt*i-vn{C5>ZGcR5(Z?2-3wy8Mm>pN09j
zOkjEUg#3<9X`23%3~Bm%%I0~mRnuRhGhZMb-xWx28m0Rczy2N$eQ)tYpWZYSFnV!`
z(pnKP&eQa-4w6TVZ4_V9fzWr@*i2iUfF2*!eM!w&hP}6M7=JqukE*(bjy76i({PcR
zdJCp|)jh?-zFh(Rb<KzmYX%dGsYuh~I}esrL(T`@Rj}sD2BRtIZEi4pL)>kfMsXgl
z4Ai_s*BQQD*{!8!+-2^0*%YoB#hTH~wkWB)pbr)FkNFDQmel9T9HSX$)f{#iv;U7c
zGmJMcCIS4N(OiwKPW)=zFI8%3x~{?)IijX!G8w+Z(q`%`g3{q<a4c9W4(!+M=j%6G
zkNxXAU`MkvCGaC#S1^T;$|sNiyGe%&032O*&=%#ZbZ-&R(`#6kYGc{mUC1;&9YMx@
z!pZ at IzwwPCLgAYo0mEc5m;m&}u7JTr;(Rh3(4T_>Q*zproSG;Z-Dhy=>}|kcwA8nd
zMchy{npuSLBiaGaWp?N4M>5Z#!VJaDMdmiJm~p#biea<dnY%o~{*$NzX}T#(yg23^
zkDd_0N<r#f)q()6g}d{D5c{IUBRhd&8%JFnFxHo8hKf6kK>GV*%&710Le^m1!J;+2
zn`#05J3A>e9-*lAC*DK6USXCHuHQpR-BUE2GWm~zdM~Jbp0R-b*MR;ucE6Q4aeU_p
zz<r=qzJ&gL`Af*YB<6yLNQ)V^uf?znW}<SDn|P3$yc+CS)OR3*H^;Z{qPp==Ex9?J
zqF|tFJQBdl;wDcs?yjVFsb^z#Sc58#{qj$!8Rq3*z-Y%X_|VHgT))Lm3Fv<~{ute#
zLE-CUF7_s>X6#l-@`WGpNXv`%Q8X6Oeq^opnryK9)9X&`=W+dxmflT{rR_<21ce4Y
z{Y_*{R)fLH2rqi0=_%$T3fvU&05JXif~NmM<_j3Cvp_}+TuNp=%KY5UE)!Ryj%$bG
zk4&^X{tCnFf^bBf7fw3<4pR{P--<tOGLOH#BL0q?Wc*!u3?2CY at pn@3huAR_#ovBW
zL0+h?8Mt~iS0q}TYL3KD!QeCZ+v7(iX3n2SU-8lOtzr$-|H3YU6R%)8oyrzdtcXqd
zD`*_I*st2Ho}T>GGw#83Shf~xWA1x_$^0bNkK=nV{}X{JaP4*DFLaLN)zLQc2Q$ie
zgj$L#QFcdSPLO6fH$k#(CrFMEB`0BJiDcB2!p at zXgq0<dA(Lc;GETzEITD-#)AbQC
z;YM<kJe>{F_08f9?&Y%IfB07#2+aRNqZyZhh0WflYsP?ct(G`g#8yq3r`PVEJFrAq
z7aHhp4-Ukl-F at qqED1#-;l2)KZcm5O+uaw8b at zss%&m6M?_|~ML($%NL`J(~;b<t<
z-QPE`WNuGfiH0NLPz>b`B@*p#4-X75VkOoU4Tm}y-W%$Rhk8sHATQCy4xee+B`zJi
zPQyw at Gs!;O-r=P9!T1r}meE3om+?io0 at F}7nZ!q^{0;T_xwAEwetZ-%X?4uWJibTh
z<)UNXVJ~sN!>*l=e+^n`dV^Lqc_S9Hyw at 4p@?gisg-FX=`~q=#jMcor>lxxTd&eHw
z-xMI6B?t at 3i9OF)M*a at o@$n+xPaUOC%~XC@;&^zbvbWUn_)O*L(ytWVGgBF#QhNVP
z<>9Fhl%leIM(GPPl{aQ=Jr$M1=hB-O&m|}|b2ibA7nOVg7gNa3*;Q2fZi#Z2Bfhy*
zIZzDnsgl!CB$9JoCdq-K(%+XTw>hR9FHwF=B)=^wMUjzkDIY<Cz{n*U&+PQk>Q5(K
zLwM1m8Mm^bbei8Vk?f%H8`t9685<ri)|m?K^~rqgjA3p$P8%Ncdm-(1&i3O%zM3vU
zvESjttiik$rFod_V<^f6Q)7MolFF*qb at 9GfywWq@J>Ok@$)#~top;N;1 at 7tvZqJ4M
z1q77f&xt>{N at -l#s^EfXj4&E5l<507rJ@^GDMf?MqM6gDmeHn_c<38BCE}$-ST!r<
zV=$kkIXox2HM}garKtCC?4Kz2l{+^(R+LvHiW|!-9f4`(72a~Ex4dk{sjE?LWaWla
z8$?k9%lA0{b!2>9x$_Q3U3tZ};=1z6bV*%#)z(sPdG+Qg-txtXsSV|A#jiQ0l`jV5
zEw2IzNWoH9UgkZO+I51<a-gkbOTyuJby|5@)2T2)w7clW<^c1`R65)#Glg%OQE?H1
z^eRqv<WFT;)*c_(<0E?-vi2-5A1f+;zO<l04RqgMiN8VoQKB#0OeUBTQ#Vi9TAD7|
zR(ywJ0dU%^Q at WcT(7DwC7i})~msciA9C6c&Xe70R9Ezf%EC%VXh#u)q1OSuG{9iv~
zO2Zw++e!lI(ydb(5>p-j;I4FRa4U|L(+~%ZFsu?hPOg*sfbmYB;)Gp}ty9va+e+>z
zCVwp8G}jCH{^`?{fOCptqq1Br-neFpQ*~?{be20dMw~Mo8 at rs-9UI#;XR%{rv*T`e
z<tFI--ZZc at LGLo?rM3=pnU at K@rXb>Bf|(3c8k0*J$d<AH0bA(an$l!!p>fd02ihr&
z+x|f&mnd(H7osRu3Ue1L>{?+0OELRp%mf%?o-X?*recMDH8U|4EA$JR{4^6)hhz^M
zi=3obVVlH!2Goj`iU}A2#mc!8 at F##cBzhVPA{8s7JwMTn577%cicv~*Mkag;j|J*C
zN^f$!&VtjsV&zkm<)ur|?+ytUJ+Y0&!#T<)@~9PMJIAe(c5pmqp}(8s-4^_xIc|ZK
zf93d)<;C|oUT4AY=lGQt`~i+%Yr%ia at ry0^qa0`BUwU_t;rNPXN%X at gMZs4;OBx4G
z<HDLgiE%Q=k&9=s=J*&+zw|Pbz`xA!Ts+U=@4w0LTs#Z>0K;?f%+?_A{0Vp=d){R9
zxp-#l1nAFz1Lim;;!Dx4(;cT|$2+YHloo(~wqv$g!4uOlOU=Lw=^eDeAGX0?u)!~Y
zqYBAyw86L8;7{A&&)MMb+2EJi*f|5CQ^?LMZSXeWh5UR!@Hvj${J_>nc=~Z0`~@zj
znTHCki<G{MkS%1-B6M6K{3hUJ&+9z2X#Jz~Z#MK#aQX=S7!gU(mttZmBwtw<?rZPr
z4MjHuLy_)acOTADeW4zAd%F_6W at Srkad6eTU@RIA`%zgG47LvrdOV(a@`26Y-V*b8
z+Pgwg5Qe&A1O9ejO9&62uO+r166%inSF|h)uB^$bT2$YU?PWMh1fJ?(OSmW89`g*u
z{4L%f@$}%#<_8OjA;`Bl*c8MWZy at Yz2FHA1Q?ReUBg`n=-2>5(yP9mysaY&q<5^TE
zTIuf_h=uyv!}arg%`01iHQ5)w?(S79T4I-Ogem<|e-Bjm_<Y^&_I?~gA$G;blRJM^
zywBIu4cXN}k7qSIa<0Y!HcILM%{QT at P+w@h0O!qb4o5q=PX?O8p at Dcb+#BwTF%vxt
zo1^`m-96!`V4AE=3tPgmc*M7HvV4nIheOeh{_Fd)tc`)s*LefM;6Qv`&>#G7cedgV
z)X$^Ge0tQ-V=+Cd>EU6|g;czh9*gL)fW67 at cF+85r>+e3h8q_8Hs%v7Y>9<p0&j`U
z^K|zQ1QF5UU{CkDXefFEhCz4C!n9~v_h1bDLe6ZB_*Shz^q7Kt`O*a;^IijaZ&I`$
zC06MFC^{C1tMaHidYU)(<{NAE)jX at OtOOnqG+gbDhCAKC;QGPAU?dzJ=*NuF9lIg8
zkqtm;q~wN|$I}>&(LiX0YfUASpHFHq4TJ^;y4RCWTNVWK+fvgKi!SSr_J(403)wW~
zYhKZQBhj3sCUy-)LM%?p&MTMt2d)W6`+aPJI5{P~af(G>Z?8}@c`=wln}WFX>It=H
z1@(q|+aoui?FjGcU=UYd{nrP3!hP#wU6 at Ft{ZXh>FpguP_6@=It_{J?P<PMCxr(Xp
z=pKmlV|vD*Y3;kdyRRd-Dm)PH4d?ez)^UX<WY5Q&kn<(-p*$gMIZn~~ziaL;WPZKJ
zcM>7$>nXHe(aICd`PsSx)fZZU>VuPAfv6Re4^$ey?YM45yszqIV at jGTayCy~ti=Kb
zwTS11BA(ZUI)a_?zIM9$4Yr4RdM4A^(&CoiCz2t4%vIf(+HMSEY6*vW2M|s?iTe(0
zJC*bChhJ2%^auXliqlW5DOvGP*x&&h{0lZX{fwuO{BPLckK5o++u&39zSC;|88-NG
z8~kb;e6tO1o_8nu?T`)quWazwZSd1 at 4lCrh%Wd%GHu$~d7$nLr!k>tT#W)90BAm{=
z0^h at NGK;qM0)I%NzeK{1O1N9XPvJ*kYro8r at Xt#0OE^w?&y?_hL@(<dlkoE;`kzU-
zEZ at NSgA&Q7Q><v$2*=4z+5U$ldOETQ`a=@EY)?JEAhEXhagLMTb0j&xl;~wS|0&_J
zJ!ee=Gm=&QDhaQ~dtv8Mj+0)xg%bEn61^<Hj4or5h at S3t1pVn8C%v+r+az4}{|_WN
zbju~={79mg<t&^IA|z|OIyp}E(CJpl*&xw-Bs?wA(>=DJ|3`^l)+?@Dta>k)0cIq^
zWq&r6GnnD?P!#gNVS~S9gI~t4Zb-f?XPXWF8wr=~`4 at g@CjZc#o3Q7*94GnnC49_=
z{wFr{k4re+NelVU+sOH&L@(=o--h17?;oso7STUqL?V1C{)FC{5-!Kvg&Ze8%$4XH
zB-|z8Yb1QOgvTWO(-J-`;d3PXEPn4nc3v*w{SrP;!XK7!*`K><vO}`A_tz3GxA$y*
z1xNHU?zh3OvcYe)!G9*<a=VK8y$$J=+qFo-<#w%*@Xvuq^y5OB1d*)mZIy7jU0<`o
ze`<q2WrL5~;4AnQJ=r6-HzDD2dmoT+xxGJ=aJjwZJkBXTY3ju_Axr04 at M}1Jz6IaJ
z at p%?}2gk3l;7d5Z+=2`LKgr`z*t3t*KWD*z!||(mKMHzrAKY%iXY>8p)7%e&o_^^^
z=?@nCI*#+ at h^;$wKqu^!ae18b<(JXBB>K;g5+u?q)7LT7#N}~)m4wTBFW at -EgB*v;
zZSY<je8dL7*9JdegFk13pRmD2e3AW^;!pTf#0B|>{sb=kL-bV=F5;2!MH1eQG9{~g
z5vPR9<Ki(!J&|6-msS4r5<S^0?3CLp+w;CeFY6U?YPDw?k2|aVB7Uv*Tqx1Y_FOLE
zvfgD9F8g1^yH$QzqL=00AmOt73#InT at kwhXC2Rl6{V3C~H_2H)%J>~NxExnr(1?EF
z<O-R~ryK#XobZJbQpw9?CqJ?<gxW}naPpBz8ZQtoY#>N{zaxAK0X#)`PB=dbFl3j6
z(>syg;|0R_)|(+0aQ_o7<`#OfRKn?98*hY9!ueL0$QAlc2_>SP#!BWxoPP-?dOv^n
zLy4YmMcJEIB%FA}_nW^+ILWz^%c&wFB%xP)C-z7<(f2Sa{32SysVKhdv`RS9$2k3{
zgj2i3_vY_PIMIuEdPc&jD82(dFX2T0b^KAfnERDplYH^rdZC09{r&i()FI({ap)en
zp*I#<r?~MeJ~QtUrD(V(<c at _0V~V>Y6bmWtbprzm1KfF^5X8;7xZ;+t*gu5a=As>U
z)Ld<0EfSk_Oa4(@!nR4UOt^`+(_y`9r&~>Tw4Z!NUiG*=sAd}#@9XK_5bn7_aj$Q0
z4~7TZ!;x4Jp6?0ERCx}TZc8OWxCD;k`w-`%PanZhG#Y|nri`ga$=%bBJ2v-+UH;<(
zQ!jnDQrvz0v9KGz2fKvbF!TEQzPKB|$ix?em=GTB3U)^Ekp_*3_QQt1JJlkP^Wu_A
ztmV1b*U%a~8-HRB6uBM0m>*^SIg{XT=KA?Dne72SJqdm>56k?nN$__S&_8z){9-<m
z^`AEh{-FZ;XH9~CYXN>*FGRnIyb>5q)$&?}sxnFsq?h^r*sM+bCQf%CB&${s at Vtu-
zCrG>a;zIF5>zIfKA(qy7($A+!l+3in`a>R$^JPVlu{%PNd9wT- at Ur&Pgf68Ku3ui;
z>9td$p<)~U3h|GAOnzEd3i0pa{4{3dWYvEsUNZk%?606hBa-kl`Jb+Atp5KwutNHe
zeoXy`!Cy#!bpib}&sg=7@<RHZ=YkkX{4U6>P4xfY at S>1 at jq7jYjMRQQN?P at MZ1nHq
z`o(^oi<!{>7lXf${+(R^7-uB?bcJEnzlQ7Q!-Z30|G<Ab^OY=O7RXnWMBc;st>bs;
zCr!Fdg3zogmM~G)<2|#VzZY586=vxu=O_CqmaO*Q#PwU{{^(OC|2{LzJ}u at bcXEF5
zy+jZW(PW8qx0z+1*7&FY#H*11wOW&9kaLp#<Wj5syM=yEC$dVKY?0)>H`T5B>G!{d
z{5Muh)cNC&Tw>Kv|44zZWUcd8HP<ibNfsqh7x{i0{m;}g^1Sg+A_bqA7k<OrUu@~X
z#UG*Hl#bsq3;h=U*9+*MT|j>+_#h(tJ9Z(rmg{#5fagR at N#y06-$ZlIKF*&*%#z>}
z_<7)`^O(haCBpeD1tHIc{{(y~*Kg$?;rtOx$6ER6+*2ri%DkqA2p3$1Dy@}*U-Tcf
z$Eurgewsa%YCbVsh-xMNto#(;788M>KZpUzV;KNe|IwUYh<~u2u`7)h<E;Gu1ynD|
A00000
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..214dc5597fb37c1aca5fbaad4b04217a590c1441
GIT binary patch
literal 6000
zcmcInZEO at p7@q4DIQh6c at rwwthZ;R1EO!Njl8ASOYqxSBX(=EI%l5kM9lbC2_DUh)
zLj>%3wDu2yNJ1bnhUgzcf+3h_Rm7U`LkWo_Myc_KTu_M`jRB#)@9qqpZf}Y~eUt0V
zJo7y7`_Ak;v)i4KXkCTFL6|wn5;8nuC?VN<hx;M38zR%lLnhY^V-KDF&GX3h at S1RQ
zcy+X=-P<e|es7WsH{{RiT}U`r?<I0^jT|jJDHrSfva`-5_ZVK6?99hy=c#U>Ky%z`
z2CU`^H25RYVuwpEHoI2r{mH14_g=_Pl8bqAwb at g(3}i*;ik`fqq2{b-k30^?P2OnD
zub$n9D+#GRSLvS%jA$X}f_~t(EBW-0WzV9k=&UPp%@>~CAE3T)nGfoRpq{-uVP{52
zd`xn1v_v)~t#(O>NwT9QaZ}P at muzB^60BupVh6fmV@%akHr1(JxMg%j1EYn<nQ)?A
zc$5?3?%5&^FkuNg{BE4;=Y-FV7UF)IsiKDw!a+{BfD_7vOD}E+zZBjO-uQ{9Y8S8w
zJa^CD%h)OAeWk*!p`kYG`6K?Cg@;OSjl{26_@>f_BXI?nUNm>A^bJgTsx1FQCjZn?
zXiB#@JY(_u5wC*6Vf=#@K8SdT;#@uYofwAJ<Ga8W)uUYc at +Nv+hWz1rzEr{Kua2Sj
zmo}Euck}w?W9Z|hJ>~R^czsc<KY%q=Isq=)Bu~{I7>r!UAV_cT!}l;L*ax$yOLNgr
zAHNTMy#BE<^1uQssiX8EUhf=3kCj?lZ|cLRfk%R$2QNemKeLknNtG5^bs?NTbccCj
z)rn9q-!SV-IR7W42lXeMUw4Q2{dbrjwC2y?#a=pjot-mld<G`1b7ze=+r|&u#vkKe
znssgQb=&w++xWs?Lql at UGZ5Ok`u~qUzNzHGr+ABz7B!cMDLF$=q}vxSR<l_x-3qlz
z-vM&r8dd~6F~|5d7bm|n1$&i~;Ql5Ay_ha=P|oU?E?w;NH at D=|M&1{kC(V-rbDqwd
z!|EN?^QFLiDL9KxfF5o?;)NeNuV2|r;OO-u23Lq_GidABwkq0499`ZChY^`Reewhs
zo{ta=9!CW1z44YmQs?&eR at Azu^*C$YzWtREw}0QbW$wVM<DE+?Cc6D$w+|+3-QHTa
zOP)lC543S~0EW3>e1i0S<MvnfIC~){azA2Vj%{WZ4i+DAmg7ApW9&b8x+=*pc;k*T
zC$7GXImv`FDDKhdi1z`rg5%?Qm^sNr*1g>>g<b`RGmqO%25hL!8eu%OVmMFSbF|&?
zn^}QhMwYo~djwiO2MUvK1vp-F<@lQgctPN&Tfjdrz`qvYq(w`|;we?{P||8jlVUNV
ztY5jj<~AIhSIZbHfiMpaRqcXUS646?>6BubWGhkXqtDldql%Ktw<rzDKbI3Jx->wR
zt(A1GO;VKht}Z33>A6f=O(u-3N at oC5X)+cniWx6h%^&NASd$S9#^S237`mD;at*Oa
zlL~(#3w150>7806b$9w2Wrbp08Ie`XWB<ZQDsQL;q>-X-nvCjzq8M>Kvqed2>2 at Qo
zXu6)!VfyYe4F(|9)<iCw$!U>JqBN(sB+{))qn693G;}%q7#AhdhNi>L1{XG at 6Gj5I
zc$?N_=$e|!ft0MJg^PCsTp0u|Y}3wj_+$=e2ORl4UJZ4IX2&%FenfzOCBVJ(XxjZZ
z2=MQaNb{KjEnAnvyzQ+#d3>e-4-0TrfWIQZj|uRP1o#Si|KRfQ&SCjCQXH3uw-Uo&
z5b!q&_?m#fS-^i;!0#0Bw+r~Y1^j}5-z(rB5b)m=@Q(@jZwvS*IX=F#**?><GV2`g
zbB5ztK*M?b7n|Yq at tXKl4u`I3Snf0wMTT+qzc?cJ{zJoh;NNzB6SZ)96ig(@;Vfr_
zk{r&yMG(q!IPzJH;~YLBPbs%GWvDGgf)|6;##v9-lB#5AT?Ua_RYN6GOD;zwJ%a<J
z2c;kk8A-~glZg&3xs^!mv6!ND#k8!UfXk%DvvP*28~H4S5^$F(s;;Y`GCi5Tp(iCX
zF*PZT^>Tr?S1P5YA-i<O&?NXen*+{c9dz8D&P!Q618*dQIoIM!n+`8Q$WYHf4*!Au
z0Y0!!>=vQ`tEUHGjL(8SL)Q8LD_1+K07qlrFV<-Ex5sptKwlw7pzR_WI6#X7<Fh*m
zDbpzL31~4sUqd)GzWgVh$;EkQv!R3c+TH50zA=6^{CH#WF>l_Gi^kdr?T at Hwz-G|=
z?cZwr*+M at d_?6qgI6brhB!OWb=n~h8#`bSD^f4E^-`O-i-W9yDycyO39mMSUhp3)?
z?=rr9J#8>iF8 at O`f0ie!KYRW=K#%Vq`}12x<1;>s&&I6XDu{ogOnfX!rek@%0T`~|
zY1_bccZd%X(_V+a=K5{=fim%No%Z<e1BUV0bB3;In`nHA0kmb$kF{q3XMLX9OZ7a4
zeLMFeU`Vy4Px`3d2Xnl!{2BHmbkL_=e}d{yGa_y6`X2x<S3iSv|N5v7>j&RmOwXQQ
vx!5R)Q{n(!@PmM1E!*{o*=r9V5}+ at x3ATmV_Yd#ha{4SiC^yj=XLkMHnfVwF
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..1969c4eed187edf48f91f97b433e29277ccc4596
GIT binary patch
literal 351432
zcmeFa3w%`7)i-=jl1T=+oJ3Jm#X7c86A?_*YDTP1NCJE01fpETTLmEq$|WW<h!-F-
zGnmuk(Nx9ST9sN`X|)w^h*B`&lAu-%c*A?Vl5s>LREUV={jat6nVA6kw(r~L`JUhR
zef*fLefDMTz1LoQ?X}mwEvz(0WaxUPrvB;LIhyW%q(Se4S;?;ey8_zB86Ra(+^_K?
zxJ$v^fZfXdje>gszg6zN3Vx^HJ_UOeBxHn7SCBHH?@av3!q20=vjKCI+Y8u7xeo#C
ztK9tn`z!YVKts860rQmmP{6~Kdm!N9%6$ajk;<J9_#@>$3h-#<9t3!da{n0cSmpKs
z9*186e#hf?I(|RH?=Ae^#t;9spWx3=mHPz16P3FN at Fe^OtM8Kmhv0WrhNfMOADr4y
z{5b``OYwb~@+-!734Zvmor*uFDfbzGXDW9opkKMq0vv|l+3Ne}fal<MuKErDmMQme
zz;gU5)b|L$k at yMxg350UV6}3e4|oB7WAPiO{Kf-LQ0 at x>Co1<vfEO$GC4iSI_ho>;
zQ0~hCCn@)2z$=t{3gA at bt^u5;+*bllSMC{rS1I?^fHReQ7T|2<o`+}8lsDR(_!
zNV&s+bCvsAz<J7j9pLrKeFNZ)$~|Af1%L~cy8-Yf<z56BQSKPvV&%RWuu-`!z+Wo2
z4S0)kJAk(;_icbp%6&WF9m;(t;1cEjHQ?RK{TsmFD)&8rzf<me0q;}prGURz?gs$>
zpxh4v{!zLA1o)70F9ZCuaz70Ch;siG at NdffDByDCehlz&<$eP2N#%YDaD{R|4Y*Rd
zp8<SUxmN-HUAb2Su2Jsi0GpM&1#qo$uLE4K+#3K}mAegaqjJ9h_#%EU;rFugdj+sv
zxi<s8s@$&uzOLMF0&Y?6cL3j2?)L!SSMCo0JCyrFz>k#sW57?8`%}QrlzS^+r*g*u
zKUeMq;1|lh4e(3l-VWHM++P9iQ0|?8|5Wa;0e30)ZoqEk{swT5a(@fBSGm6f+^5_<
zfSQsq8GxC}odxJo?rgvu<@N&hQSL(k`zrSUKts860rT)X6u-li-$1~_mHP<5Bb7TJ
z at JGsh6yVXyJqYj^<^D0?vC8cOJWjcP0{BzqE&x0pzZ38~QTY`D7Af~hfP<C$WWXWH
zJrwX1<t_#+QSMU#PgCyG0e`04X8 at k5+@*ki<vt5=m~x*D_;ckx2k>0w4gi)Z_i(^+
z<*op%RPGUgBb8eK29^6fz){L=0#+&aXuvVbT at 84?a$f*AR=LLkj#uu9fEOwE#ekP6
z_b&i1SMEuGla>1lz$wZ-6|hFRrvYB6+|vPPDECajS;{>daE@}<0$!usb%6EC9Rdt1
z_qBlYl>0is>y>+<f(?K-Dfc1;BML?VW6Hf)!J7damD^JAmw>i%-=d%cc&l>XreG7`
zuax_C1 at 8d7Q@NKYco*QWmHTc5e*^ei<-SM3-vQpM-1jMXKj2d3{=I?^0RBO_A5`#<
zfPYf%hZI}}_-Ez*i-HdWKBC-zRq$_sk1F?a1s?-^T)Cf6 at JYa@lzWAOPXn%0?q?Ky
z7I2kv|6Re=fNPZdIlyM+ZUJ1Y-0J|>EB6KkTNP|maHE3HEBJzfFDm#C1z!SuS-D?P
zuwB7TfSZ;3RRv#D at O1^>1l*$BZvnoIAN|{D{CJPBx`nm7XK69yqHu=yluZa)Zv?Hb
zvhiis3qkAkGVA%WaY1W+S>!W4*z(1><AeJ8vB6DyP5);%9vc5GuuL0j92;eP!fF*x
z#Tgl<GqFcF19Q%E1|4gxIK)^nI8gf10<RSp*4w7FrLo_cLI3)No2p{FLNkR^+as*6
zL`(c!p?@VdePjBY7ZxVYG>#2ufyPsXb3TIGMN21w+r=gncCD~B2K^i7&k)uo(-~w?
zPG!c5(<(||zVW4s#zQZ;tnAXV%gTPSt_dM$B9rjvrqxXNf{|?*CQ5<4Og)aggny$E
zyS}FfrLE9(;q=QfR+Lb#)(i0|@HUQZpo*E++r99*^&Ky)@5TzJGFMnTMdS;wu+J6t
z1b{PyzfCyhxuKs6e^+Rtu)><Ks}OBG0>=`}6|tVs9AOO;)~H<3R_>*IT5~iJS?|5%
zvUSspV=K at eNPILWw%U57wT2~LG>%31d!bPxwmEc|i0sirg`I>186cDS8YO7WIuhT*
z689;5R$F2n(itnV8*|)vi8m1Fw%_h}EmvE9mrW=eAGE#>7JXMXZv5C_<hxws)?a~7
zg4SLziEu90gJ`+fW+Qq$`EL5I%y|0r0<?u$pa&yg>Z6>jlPirCWj)4<(rGQNUTX)!
zPA>?Qeq%Vdpr{q4ZN at Dxv!lhhh4P$MW(_0+*Y%jz3&PqGD1CYUq*VDL%{sRunsY_5
zz!$=A{K~X8h{)$~zp~&^rkk<i`X1%8aHsIUUOytx2!c43I)$Kpkwd=%V?~(L|5;cY
z5^E|-TW-7w1)5)0*_c&e?JjG)riY{9PpCkT&jek9);81HVOlQ>YkTJh`+9n+iasT(
zELcdad}7dw$9KcGtnuuEKx45?=;FApCtgI1268%=?Gu~6O=O8kLN7Dc^c!Sap9|}K
z)7sj3{a!?gy%YXKM7HToNSjq)tf at j<CQ5dhMIR#y1vFOb=t-Sb6gl#(zVOW?%TG&n
zM&^$<LSw<CUooFruSy;r>7_nY^tSM?3;mcFXTh1mdIbfL>|?bEyV8xKZxa5NP?oT&
zyoxi4{@|eoG?o_rz*v#lm at RA<W#Z+u0!(WX{@vk$i61B1&sZ^BFCEzvI#O7BgtJf=
z{(a$uu)17)!v997OE~9c2>;6=zp*02Sm6(pwuO#Y`H4u29%#HC9d$U;eiix=Dq?lZ
zNa2qt6u#kYBrm`l=>PtGM)Womlo%N-Ok^<a+2|fW=B`?qTV;I_EP7WIb({VUW6>vw
zihhd9zbuOOLBiEtRu%hX!P#Qv!+(+gOzR`jvL{m*kG7NGwEH5Xd=XifFD%h1>``5S
zUB-%0-HoD~I57NfP~U4>HR#hyD5cX+I9aEO*scYai)Y;oM9V(Hz5^7R)@0h5BC?k8
zo7V77(=P7<?5Z$Uly_G&4o41O>fyJ8{tcnuFyHSq=0Je7AVG7!kynNSRYP8$-;EgI
zkK=V<KP3lNcEgQ-3sLR5Da3fxoWc(0lH>?Nj9Y7i5H3HJ at qrf=MI})fBkw$_DDa*K
zyzhlSCPC%}xfn&2{!bIa4mHm0Rcj7xDjO$?b_A_|O1a7Wm^)S2S;rSr?p8&Cx1?D>
z0DvitYll-4fjh$`N?Z*pkYepJh&9MQ8_}nV!7_1pIM_3nh)nX0MB<x?qnd>ES;=Nu
zHLDUCv>~qoVUfJXIP{qeu_fNbpJW-+7`UnILdiIgcPR4LW6^)|g?%~r=h|H1-x)d=
zghA)Dfe_T0W^8X3ZI!u1N+WMnr?ASqjXcU1DI)9hT^1<2Jjw6RxXo_br%;)SAO|qk
zbrTD;h-b#je;yj9qBJ=${RtyFjYsN!kp3;kBASAU*z-n==3Z116luOjMX4<5aZ6KK
zvP)RQbB(;SxIE4coiqx%Onr!1v|Y4pr#!pGO34^K$BN_HjA%WOniiODhgsBVI)QG}
z>I_D at eb?5w{04>*s6BN8;*ASX>+`xHS;8MvJ2+VjgU+R`#Z|Fwp}uC(mnP&Uk*CT!
zy&z~^THvj+ZY)6ZUc^a>Fw+^SbM|Y+rq3~$Um#jO$};uO-SG-_Jr2Jaz|c~RLKNfU
znl2-6QoE5iy~D_>?GpY?;kPjQi%7>llqMirIx>UKz-&|REQ at sLM)V at o7pc&!0nq0t
zB2&B)escV!@n+Ei6u4Jg2xDZ6>6{%1wrtHbEr|4S1zyEVZ~>ca0Cc0E-WIe&1;7k8
z(AP4jBst_P%8Xhxb`=JVp!19T_-k;0ZlE$q9>15rDloD>=l0jcZDM7LD_VpxqQ$(r
zJ3k&qk%jYfqAiz1_FK~7UMd?`CVQL;A1lWJSzrtVHi~8kz|$wU3pCSoVUMSwYyGsJ
z4jN7d3oU$fNpo4`Q$2K8!~9Y$bd<3ob~n7sO4l2Ag0Q5okZfBAd9Rw6aXS5}G!Q|>
zD=#O9|Ao*$*09Uk-m^K;EX$c{Y}DKBZ{w+_6$<8!SdS6S1M5?N2eSnrY0-yc%|?{0
z8{DDU6ViZv$*#n*!L;Y)S5fLw at Cn+N=VM$oqHm)prac8ApM(|!?U at De-eyEek2URC
z at W#id_^7hO_}CRXHE1u$?<8HY%Id1J=jH~Tc|H at ODqpqujRpB@s*!*{N!ffENfB$l
zk9{~S$@Z~bM)YRFZhf7&SJ+qQ3g?Ejc*6QXVnsWgjxj%e0dpcsKeGTRZ!AcQn-toJ
z`&7{SB7O?uqMC at euvfGmh4P(HWzhN{zJr-c>UYeKC at G0vSsyNLsu|(UM7 at F7%i0is
z3yDqp#scpTXLN|5z8w#9?6V7gIC39h4JwGA#&OYAg7z;^g$2E;usc}=#+)19{vByP
z>kE5{)Bw+Cz&p+{ATb8QFTBPI4>_aFp at GDxP$)^aPR&=GAskaBP~0194sB*xZoMy@
z!#P45qamkJ#7+*E{msZ at 9|c4zsw}kIC6d`UrShlwSJ{Qa8JV9PXD~=H_cNO_2C#aJ
z45d}}$)My+(B8i-RA^cW^f!ALMqeYE#XO&bLCD)v?ZvDh{Arbin5MO at io{RQ|D_Ra
zLFt1u*jb&TXbX?FG+#@q0+?(Vi%ud;#HG(8Hs*!04#459vd=E4qU;%?&|3wKMI5c@
zJyIz34JZ%PgtZv#)`8R*2HMJL<pf>-_3$S_bX(K<Hb~_PS}0VNe|zW{rH^nuLbbwn
z>j1GBj-&U62AI|^$XHY97Xqc|JzT^ohopXpjQ#H!v5&z`@o(@);rAy(Cqa1!|Cj74
zX^x-A-6{YUS?6T|O#GdI_}UO3PraxutAMZut?j`!$Q5?O!6SQo8e&*&k}zo!SI(u|
zRB>egVn2u3LusGF!o2HdA5*zGlqa0$a^ZfKR;+}zucuwuF)bCix(oij0y`)o7!)a2
zx9=CYdL;+;gbZOnwUOM4Xr}$gW%Oy^yA&Yke>Zemitd=DVzO#Py_BtukI1 at W%*l1G
zAmWDKR_P!<Lx%$MazbT&Ad2LC!L)0tg?*VIv?sgmp!kyJc*3qHocV5H2;~QqfbgND
z;fcMGl_IQ|kQGY)mgNgws><f;RkrsjvWqB?hUgOE%=cng;^shQmApeafZB*%f;Nm_
zi$97Ek##;Q*KLVM)wsWoieSXvAwJrh<Rfa&vBLURHoo=28Zw$(!g(~2UhjruZle?e
z2%I!|L*dr7lQ45=9XVB7*F at j$m`7?c;U*nZ;&;kXi1kMFHBeFYyweLz`-Wnu-vLq)
zin`3AZ)8U%RdBRy!BT-49F36}FufE3VUY*8(OwcQ-+7=dE;vipTlTGBq}3OUv`L9e
z)64Ky5WAFeN at hz4&7y9g4mu|fFztc at NFgKoFtWtB9dvkX9uI-DmHIha73$88&VK(S
zF}(rU*Mq*>!f%=+NzBapV$-TGrGCs3S<Z~07K5`Fp!gfAti4pyCNAGrS-$nX%ZIu>
z>!V7=nuRf at J*dA)szA`+7P=>BpBr>W5?5nNZja2Rx+S^B^q*Z|L_^felhML&Q4|UZ
zuZxpHnB*5wa%BfR at NXe0;fvasj<3khVXY5ZZB_oSLqinbQ?@}EfFQ7fR!$IRAP^yE
zC-PDxM&$6 at rhPS-{Ax7rHtI1I)JNDl!9^a$gEEMgEHY8<JxW088G1}T7=61a`jQJF
zDQZnAuF^jPQ3LS at z^%#h6YY`u{shcl$cH0W>HFgI5s8x%2V%%!7EX6d{vaPx#SWaL
zMHb{j2%KFIf|iE4>bIC_3G2<C3!q1%Wm3~J*caAgwuN4>Ux0_R=Rdv2Lpjmneo)$L
zZdh2-%+ZNHH2m%~7F6XMMXU^l@}PCs at U#c2cCJxWP%zDylT`rUJ4j3d-qS%%XWImf
zya at SD6UOZ3X~xVJqiA4(QFJNk=@AM?7YX$j*4Cux-9)7?OjYX;R11ts+60%WDMc?9
z^k1u<T>OJI5bl^lj(p?`?Lt;(ZqWLK49}o3=1g0A+ED?j^_+eOsS+1im7HsmXH)IC
zLNr$NstHDzUNt!sH7QoT5LU<S&57S|jU+Ryb7fnUN+<Ozo(TU3+oy{W&$)-kJ=-RL
z%8>6t+eZ$M|Fhetca<WlN(_k8@@$ImU(`O}KUgZ1;)|XM-8a{|db-=hQVuxBqX3v@
zO1lqu<h?Y#)%8wGmB!!6K`NzN`%=!!b{Ki(wMohD+OegcjW7rYcXqME$i)}(Zb{3#
zcVH54c$t)wKZqy#y?9XhWVz5~F;=JXvpeV}GYjospLzd7>%-;RzdkAX!~Hl_tDmHt
zV}$i^0~jF16p|k10etad8ckikNa6{vRO8-(>Fzs7y8SY3nkMz11Nk-IdblyIbgA*-
zz<gdmNIv_eP9^930uB3MJn#O|=Ez6iM%HFq7Z&#B2m3+{Y2DT)3Vz-bc|i|EcNvwN
zI35Yb)|*MIB@|MBbNfTuToa=^TVlvEn)hreRmJ%k{%YJJtr3S2M81DMnwp3{l~zBu
zZzPr;jDP=){BQkF=5IaS1aw3W*`C6B`flmbb~A-|@mrTBKgP<bHR-v<7{W*A?>|He
zdjtk>IS%Gx+&h617<uHGHmcLKiAHrFE4?-Wj2h&7&{2b<{qIKgKJHj32X$4SNSjxV
zg6bQK9qIKE_Ju+WyRe$(M#H^ga0Z!gUAbqE1TS1zEd1?cA}7nPXB}HuiRa{eK}`%*
zrxH`%hrq_7DNh>VG)2qD9+8Pzj-9E at +X3yse(-V{pB&gvSAB0k{XHUc4*Q!e(sE37
zAmaaqg;TX~wmotZ+MDT;W-zC4^oJj?zkG1XW%2Co$$8g*xBZ2(zxhj2kQ>03tk0<V
z7uiXJ)@y2IVkfv$uBI}#CQY`Lu)u$8+;$(*R+coEJfAq4$EDzu4Z`{njL=@8ucNgx
z#9DZx>2C>tYVvx@%i=knL?GuXEG$`FY~%NL8_{ZTY|#IT5p4!en7CmqS!*oXNgr5O
zjSWCBa;hwOev~z+WRzo;cwu8)cm^3ZW1k`xvNkQOL8yGOwt>7CM8U}rW1aii$4m=(
zzrstHG-0#Mq}`epe(+^NIm``OEiku`(S^){CSs*Ur5O1p;>rZ^8&NMPzjFM530|)|
zOFZk=6?_j{`C2l%D|?f)n-CHhfm(ukbG!hNlj&2&C}a&yp)K(W^%Gi{LXqOr5jVL)
zVSrM=-VU?=>mUR~kV^8qbVGPAJ(l at 1rN2U<Pg{G+SM!VKNMf<17S0VqSfJyl!hu=M
z`chaBOR)BX9%S-=?^6_q3{sHu{RJ7?Tq6f5*$`~*;uK96fF?OzNH0`c_mSh_g+c30
z+Jv!>*WMu>##%3e9Z`~j1-%MfstU|yt at 3|o+(vsJ#T0NLD3Lgk?D3gY5;Dl49j9O&
zXG(Wa-w?EZQEmE9E--Gn8VOSMh3U0AXwRK!I+IY_iUJ>|;-)pV0JC-28>bc&V$Cc3
zaFx9PW!aKivShme at snJ)S}UGStx&WZQQF{S`oA at z1K>z<_;FNJ;_%bR7lp*^hSsc}
z2e;F7s8}{B@|}d~^dty>Di5z*eUrX&)$=_oSDSzz>prHn7R582YOGv!2P1oY#?3hh
zN%sFaSocU at zrxz)f$LYzSikBC9lL+0V7jOG2T;1o8X<_hRo3W<pfpq2`7KY$D`Y(}
zsa0%Y#AvTASVKS{r1jL4yiGICqB&qJal4OMkRP-#b=}@f?UkfgP{-OmNXf)9^=2 at y
zOFwFX*xyl*pffQ)elmADw8n*4UuzCpn}eG^AA|L^AlBEa^gV8W!~pvv{3gSImt0?)
z(PiXKY{wc~2iDlSOj=*#_4f4jwSJnZcSk<L^4hb=5f~sWXn8G9SY^5KKfzDVmq}h2
zi;kdPoz62XGt^=o at gY?_o`G0sLo{f-5(v_l!CWzb<v}TEIKd{01!|-S9`2Ve8Myg+
z^+ehK<VFE^1~2V+STU+LhfSGiM1KRm#6ppmXm1XlrICR+mw2_z$jd4Sg;Pyt`a6w9
z4^VV>3BYP0-2_taB^Vu=$wHsYsn}dbdoGH)M5NohU?OkFz&581QVhWgh22WlmLLgi
z5h<_6Vrz2MjpQQ+qCc{nWPyd<PHJfzv6PCB<vCi9wKjyG6n6G%FN!5BJ at Jri2hPUT
z$9c^gyM9RWK<-TEWw>5~XQC23L2Q+%BGXlB_ky*Nr9o?I8$+m|6h;W6aZnZ+)OVF^
z!}3B1YaWB>palw{R=mitMxPskk$to*3yZjL=6NC9^OM<-nffmrFt(dkw3EXZR-2$_
z;gd(wGZDqK_RvOZScIf~O=@PemqH4uE?OAw<iQ<l5nk#+)l>lLIRO|=jmA-wQOh@(
zCYId-Ns03pERt_T;a{T2ZsA$u1doacR>qL!%w{S!ac(u^GotT9$R(=*V`-qW<dfhU
zck!QPEw|%4s6e<laix+^!p;zpR<z-WZh>M7Y<z<#*NMcaM$mW^i!kfz{mAVSVUK$c
zaukt*b{6)Y4Qv;~LIu^~zY8qa`GS at -_qk<AJf-MDV%wfrErv}5Z~vUc5qgZEGyx_~
zTRAhgk;emgAvVeoJ8<2Kjp!FlgtipV3#c at U==1<B5-NkOJ+7eGrI4geKZpY0!@jr3
z9<OohPk96g5mvLHSh74xF=j2aYB7XIH5Cc*vCqI71%ix(2MGp0j9DQM5fDPO2TWmC
ze2qGc at s?~BgAI}|)P`a=c0i3oKx}h(P>_0Bq*WJ at w)|d{Y^`JI>4mjghvB_`22m?M
z9b&|lhoTKkLG8Y!<asP^F=^sguq<uh0Mr$O)I2oQ`xwQORS{ej6ta*?9blOjAC{hu
zXo|+G?zNeQd`jI}AElg_Hg*tl@&i%UPfr^?fZ at 7{`$t}d$jr!GBq|Nnjkvzliy-PY
zvFB+wncEL!<6}UhPQ*+cub?&8UWEu>nZlXeK1K`Z)u>wh9Q>hm;L`Xs!rVLM5G9Gz
z5cH04pr{V_B^)3V=#NFTB!dL1;~$`C>5|-SFW&T}>^m6fG1w2AlN%}%*s*EaCso+T
zfw<TX1Uk~D&1~ACVYPNnc!x%sS-uLZrV!HBTbw3s-EnI@)YpyJe+ujOB~T1`1B99-
zriO1ho=h;EYrW|unMB$37N|ll5>mym7!3BN;+WQMRigE8_w=-t7osU3U1%~~UW{J=
zziMt!@+{e9l}|FAKP;sNgAI;b(3y$eV|_TydV-7=CO!kg=BcG{pvJbAPlX|aEX-}?
z(}@v8TciPi{<TFKr9*3tkih^RP09nYXo^q&;Ot-rJGn5 at myDhC4-uG$q?4xM^bfv;
z%86O~QuqKYm!KIy){>3%2<ValG`Tl1XcmJ>1G8!-&u0F`u%fkA6jXpKz!GZZwljkU
ze>LttGkG?0<Z7zQPlKSTAPVFQ$1KQ7LppT^Bh8jbM=;WS<VU$^osUo#P*|U>nR@`%
zafFq|XrT5bvDSyCPCXE-4_JxhTIYl`tShG^u}(vM0)!4-VH`;gZa2ot*dR5j;={R&
zg}~O2DB9^w!?s_i>kmer<cbPu<Dg!H&E3qpKjg;1d_Wv!zaxFgwV?|8(PbzEPme(3
zEHUg+YSqvP>T=jjPMlw6{X_P-Z0dco%YFQ&>~fH-ve!ij4Rt)VYYy5=1 at IDaO^lz|
zkcw5OFR^^S6!DntC~ivGk^Pivlq?$t(0(bq%IU&>q8Vw$uqQSGgf50a>4#w<%Nns4
zXoMw0xd6yKia3<N+%J-{&pnf7cX2tRH|Fr4sQJ)_t5yO- at 1nwvl#&+EgaN*Swn
z0gr~<+rM~NTUK;o<k*EFQ_^}H=@W!c?koY(*|fp?)P0z}_Uk2p+_^6&=RXw~d-_3o
z55$UpGgaM=Z3L+B at 0@=k$&rDqZ~9w9V=b)lwPsc59}A0PQlc{d`wKr32%S}7ok77W
zj3sz-5DQ;{M)ReaDNyJJWCA+#UIuK723ju8K}%xXLi;w5P53u19hlObn3E-LW#G0S
z(*yi!I#=eq>x^Uo!%iWN7i$h*g!NU(_OH#sgM%&KWr|_-xgqG57$aOotgVuY2p+G;
z#8fVzpc-&1YfIXCzp${MQ!2QLSJmW=${;Mcu*T&{_8w?rr}SzS?1oJ-><usgy84H^
zU+Dv3WfiEB8!;XIU)Vq6!VP19`4^Sc&cdD<QX>(cG)WHQWYiw1)mkI=Iz^AHhkb)9
z<F>~E_C_N*8<dwr%;B7&G;pW&hJSaXluOI_Kwx(H!1^eC#zxx?TzX>v9u!tYg}RG<
zMO(4&DL$0A0V){PXyEaMC|5W~QJrfmNuLsAu22K>$o@?c##615Iz!vYT&kXtmm}$g
zhGrqNE*)2|^(1Le3|crcA-8nEbknO<U9(M)N=l^{&r~aeiGYMGf+;Z}TE5K^{<yKI
znc9^0E#5>9==s=px`9f><~eAMT&&T~>7_jU(H{&vA&mNTSR;BZrLr(Vf1BHCQ(Qzo
z+9&iEXdf*^uaSq=ZiX%q=)eziqP5{KNcds1Y~*7-G>GO@*rJ#fzz?f*0j7l<o1s9u
z#fMPlJTXLJMqBa at Pt1TTbT0BOv#X{<F!H8BnQJ??ghIWMiayn!G10sRTSc%<2<E~)
zsQjyS*kg-H1ZK}LTT1Ga(ucld;#kaaEPv#_F{rz}_ZXS5Q+-Ucv0RNdOwiPVrVmLZ
zX(oXMV0TO%(k-PakxX{8p#S~wuM>|;Ig3%&N7Sbc)o>S+n;iMBgDDh`E7L=6yiK{%
zay(G8mAs_Z+S5h^We-%wKwc<#9h^zVY0L!DOqW7U$jj`})48D`cR)MP>V4APalS~E
zn<j6rMFZicJ+&ae%D*>s6?W!TIkSc8cfj#Hn+1hE*vK;rN+soB3T1^7#!$2hjlW<w
z=$GT5r{GU%=Rex11KtQf*vl>;!UsS?*fnJP(H5%*$&?037owI;+tyc6fL`L-O9!J-
zCiXUpN%{j>a{m?(g`ZAH6G=J+)7=LdUtN3u>&bo5V@>BN8k<2 at G*cQ`-5n=f`wAF9
z2US4*l+#+pOLA-+#@p?T=*gHKR#+#b4S1FQFO2AFATL8N(aZcV8POA=OIAAbd$4K0
z at kI)W?8O$&GV+b}ESPEalM<aX;6HZ10<>QNy0TXG_ha#wj*M%G!=^QrMZVBOXX)=?
zbSx<Ie{ka|{<jt;+yUDy)P+zK<ru97VM-N#LG~Xmf5oubdvVUpuWIpIuEo%_TF@|2
zm~0*+)<U)s-T~9A-!yS?%XYuU1x!_dU8vkMkk2?%C0^P6)`7KD#ZIg2N~$YPBASC^
z)I7nK?u^9Y%m<N9J#?B|?RRf1M76(27M~8z_o^>qhc|ON(_TWDs-`rLa{4X8Ss^3Z
z!Fj+uurXNle9$=`2isl^wj?rwERSHGSWE{-O&U61pl$(kGgkPvLVCVJ`tO`Wu_>no
zn_gkQ-UE3$976QX at KzicgrwbD7Wp_6rkGzD(H+P}IM-+GJ_=`&Ad{Tyy}K`ll-n1|
z+<h_T3lsLjAXPsh7>Rp=k#BP5{>+5Yza^0wwBE(O?|j{KF42R#Ukf^CKRenf_*2lo
z*ND*C5Y-{#frIO3d+oCz(6eyzD9f6+*E$b5wAaNeF(+?45|W762n9hZ)zoyDzl|n4
zXwIaPhL$pJ{SecL{aTQ2EzsiEAiy0jNwdY^yW4F|G+umqukZ<bsY<9DwicuD<JaI%
zntVli9Db9#jN|Pv6QuMw!b=NKUi`A$3>1^_`Vn|Ci!!9W;7V?RbVnMC2ceu*81$S4
zUBQ-kMzH0>tf2n9)Q9IBi#9`Ln_)KDjy9`(@o4;MKHA8`v8_Dp-ou*RTV=b}Wg5{|
z5DbS^F&OR@&e<^{Qm|;9(7zEyd+6v~1y--b?k%I7vlrp?=;CfHX6N7s%W!S;hxqe6
z{=8w}rvV>Knsbx*_Q6h_Az-U7T5Id}S(e|*;3f)z0P%^4mZY!Jy;WC^u^|OCgXmN=
zyMkzz+RrZI$NK^Y9bx??NaMB<H)h<25Nv=hLo={P+GwNZAMSqCw3W~Uq+-zelv4})
zG&)5}g8?RGx!CQ<3hCi5&@ezt)|CO;Y98r6*0{MD^n1>SKQg6*0RZzAB*ifq_QFPD
zDB5!G at 5zb}Futq(zoCC`|1S=q71O3mz*77I$VZj9w<LQG1v*fYCFw8s1skz?&?|8V
z&f^ibE>)+wz=|PI>h~0cu at 2iU-w)l6UMuAdw!=o&%K at Xx|5+Gg=4GXP!dBL=%DK at 4
z^{zSe6P!Z?{b9Iw at i8u>CG`Ub|A3q*#!I)d<uHdXjUVr}qa5_o_i;*fqIdhU3i0(=
z*hev7e~V+A*y(+KC+$u+9^GO9x&@AKiB8PYp*qmf!SZ4<7bNGurhO%JrH{m5?2*AK
z$Y5kIbhgbsVlcKjIQ?#C+qyIGmm+zrjgPU>xu=mnL~>UMv7FJ~Yr)5elKzcYU?pHb
zl8;zoyF{d0pL at x3bh`&P9?Cc#0|I0Mm;qWV)CioTwyFWk1uxOkIVNi?+)b27S)I$-
z{0t3v<~kV0O1Vao{w14vkwCHE6p^?ieY%116{nw}C(!XfS_(n7ILSBcawyg>aCvd^
z^(tNo5`#~IJy>diRwi=s8qr@<l+=PYtp+_pUWyZ|XzC?PsBd7qxOFwCUydn37^^B(
zSTlV&G>lI{x48TW0$?eb4urNKY7h-|JsRmcoVR;}^xZFE&wg37e2FoqqAMS*hl4Z$
z*#3!Nk+cOP&~Qu1wvy&VgFDYcs5E9mW0VFWw)QY#($1?SWrLg_wM_z1=3#?NM=!N$
zI#zJ0!J%tHIm99e35RMrYl4r`&WA`i+2xb44SITOgzS=J#=<#u3llj|Df$~UovF^&
zD0=|5qhr<(5QD2r)0Sdro<Ik2aoQ8M;Tz_a>{5MvRIRYHumc!NbWqr^K3ZN&*~r4+
zu((AwI{cXgdQZaPSR=X?>esX;8sI@=tPj|g`8Yhu4Qk}UQVv0cIR-CV;D`iN*rZYm
z9t7u>&jU~6TyAk?bXQokVt*Lzpmz$eqWVdenK`MnEOK^1ziWq<p<KZ!SvO;S^qig!
zMDhuLdA<>S92!-_Dkg>zeGVTiKX~sv_SwhyE`k*{g(FSA*DN?v3 at a}*q7^7Nx-GIh
z8B^nOoIzFl$#EDCTIILAv=RoxU_W_M3*Q#Txe3fW=@8vcju9eyw22}qiIGKm>$nXQ
zqw`#(3QkW`1usScj1_1<aM(Q8w#X-3D`Z(^IZuV4GFE7fQ1gSBm-#d!+7~HJ2sJ?m
z+j6nhzpMvl&M3;{LF6EH4>^~hv$|OAL(<NxX at vX?#c=C6HeU=I3p&t^ASgD5oIoy)
z1MY7BbFLQ!i_!YCvF21)swNgPeYn at Ve(}4K_<H*<_#XdhNq-D}l)ul2(v3<7%l|CS
zzYe3Z941h`7 at a4LABTXZ-uVqk;-$*xx`9w21F-#=>!H&JDvUrkunGK`UFaJUs9b
ze*q(YN*~~}r*76|XCaOeU4|Hp$HmVG;=h7-6QM+Vp+0p~ALg)jxQrD6=n-r-!onBK
z3+UWC(3VsNCb{X<qL+_AHCv&YQ1RsMDXYa;gV{HY^SfK(xt&*Uzytt-K;}~z!sQSk
z8x$I##gwox9VgftLId|+VD8FgRLF=aeAZe*H;B-cv{sfP4<q_AF~@P>9WY0f`a62Y
z1{~`^|4AT7*plUA{Yfi2ki|(3#BTo<IPwvJ`NWPi0?RVph}8kXvIZlTk2Z?0rbeZH
zwu{4kMr<sC-R>J3fe$Iz&@FEW(8^f-b4WH6{*rHHx(uAJCUi$6{p~v_zg=syj94M+
zAsgU%c-{0-1O7q}L42VO)<S;yL?n&{9J8P>{scmrjQvD}zq~MXJc|d2hPXGGkIWxq
z)K4jYstyrV&hoL<fjfT{&0Gf{iD`YBq^CWf<Vxs7>{vKJrhJ6mMbqQ&f`Gl~Pv=kC
zIH(0dyViP*n28KkjiLc6!SA?5(gjP{!%fbA(kJx2^%>F_#ITXMp#jE<BO0O7kM!zL
zRv_r1h_=Q-GA-Q#!1fgAwV%4<7zTE>r`+^~pcyUf*Ql?smTY0*ECWaz*(x_GGmCIy
z%~ayH*h&D(MOd-r<m1Ge2oTrCmLhd4N7Pzl4HU60)(Ai*BCZ!YH4Ra%v8{*+6JzXd
zgf^58!69YXR88lvG?hvzt}!Z{9Mj at uD+9n{6vb*01-3LcsX4JO`r^zx5tj}hAr=<X
z=ES<VjaSb at 1RCUwB8Plj1ZYx8Z(*<Yf$`d6lMs=zpw`BTq!{nKv+otem62u~vRqdW
z#R469*c#Hb$jZZc!SYu3xx#{E%*D>>Y_XJec2;Y^q3XZ7n~Ign9dsoRWwW)p6hKCl
zgsN>Z`P`&SRaK~VL<Lldfg~d#J;IGjwNB;YQdBmIP83DEEk~T^Fd|Vq2)Nx at 2_L45
z-A&}QVgW+r1hU%5)J~0FO&*p^03`=H7q$Fy#OA!MHafgJWgupb5I#X0YDZfv3u%xV
z$(@xFZ5IKY(u*G32i|s!zioM5y~|5p<<&UzCpeBclswMIPUAdMlOuaD%%9JGcQg}L
z`w22}2>%X at qvU<lI{q#~kGPj+*hrKiiZ-U{=yFF4?h<$u%irsubWb&IzBrFiG0Ta_
zJTIoNh2Yy{+29g_w`Ew4SJGf3S7M_PJqIOji)pHsHrLmRbs!kyON@(vy0NAn>*hpT
zjOcecq<<;=ru`K0Z-w30v}26kF18)Qh+)KDLIjje>%`jG6WT!=j^eRr$>wK3MHpLn
zxPpyQMkQV6ag?lKbpw^mh~AA4ZhO}2R}&&w7q$SPS4;wsdl60NkB!o=766 at +f`pFk
zu^(QA`P%0ayS<vcFT&9F3t}`nfJ at O`l?zHCv^rF=VKw*l&=GDiVvkeBQ}Q*&qQ|a<
zSgXY};|3HG#v$0?9gTa&5kw-wY&pdQ=wgu3hai%LxkyaL8IcQTH%A%)6)MINoe7xh
zIX*(t#(|&_aWElk<%IZ};6wCW&d4cr(eGyTBPfWITO*3$q=68tNriB7OlJZV04E^v
zQ=r06*jhOu;SV5sF{gBVF8-~=^wtOp;^fwdYB)<d)(9|JjAJ?zYJq<e`L=PO!cW**
zIU(Vngy_{0f4+<VO`@SSf`T}?HKG>Ii4y;GI60<sR}(OzeH&yJ6t1!$gsq$wc<yR|
zFA~+llV>Z1jDE55=G4|=!i7ll2$yr$a{96sHv+)ayp&Q}e<cK{3PpiG4H4u*221gU
zv`rKZNAjcBf<us6c~fe9F-kjjH+?yGwNnyn at iGFA(@ZI?rw9QupeXQ129%UCXr^d(
zY&nHnPN_?$XJ7{e5*12F at Wq(z*h=}eQKsZ1&Rt#jGM&{O6o#P?03JZWm@)E^2eRuR
zPjq~InzZA6j3k)y=G4|=!i7j%2$!|EQ+{<(5^FW3L<STFe^i9hP*G`*2 at -WvxV4zJ
znV<_`bg>rGRuP1FX}Gc$=W|FdhtLib<LMYJGETD=lTjVlna~c@#>FRaw0w?6yHkLG
z216hymS3gxMS^6U2U#sC#wSnUjU!?KN_AI&(B&-_9DNB7meySp>C53T*ea+)()K7|
zox}k#LWAlNa;hHaN5}v;eH+K-05B~ArWv_QrZdF2Wi6f#Bw%cK7<qTi!-uuFmhgi4
z7|Y^Dicr}g+7>T^i~ga6cXPxhj##-AXqHRo-DHe98dKoQ8d)}irx0M|-A4&<vi5GE
z*$5~7qX<B?Ql_M`v`gno7fH=Bg at lqAd4Hm)K(Z2rV=;GAz`F%rwnKx194I0 at aOfBe
z at 5I`7v)*EHAe4Z1;!`Kq!R*>bOGwh~UR5A$AV%p22xtDX<iXu`cyp!5yD{aBD-np`
zbPLS+7#MSbH3$_rzw<gQQjp6Rgq^iGXkQAmrvJ^*0Gg6Pf~tEF)U7UR^&b}*cwq8N
ztj0|Vgo#QEo;3Zu(#7nWOo_1N#IKNWX*Hp~k{+drlketQF5NGzmczDlSi^o{)%2|-
z8jimcktXdIrC3Ih;#Woq>=z|hMv)_cjN;ob3Jn`TUM%Z?eFoh0asY~~%SzS7e=m*k
zM(nt5B#7{6j=^7!>i!rh4LHZLo0^}Pz+!Cy at kj-tuEMI2Kem$NeYlG<UA-J1sTC%8
z+zpR4q`Q&aKwo2Jj<wU(OR0b<1ykyh9L+VMgF!Z?*)u++(ax#af-N-ewFI<vTFxic
zs2#f8RUFiL1<9RI3FsofUP^?kVe9*@a+Q8o70Rsj6E8lvs_;p;zfu!0Zv|ygpJq_s
z9hxl3I1bZV4JQy5+!78Cw609H)X1!cRW**PL6Aqi_=7~(V at Z9-N|9=*YeD7s`N)y<
zu_Zi_P^#5`Wl45pa at ZuC#Uw)8_%F9*8w*o*T8pcR$*jc_3AC~Jq=5Lxdx$OM8082(
z@{QMs{1*10T`ibLpNi22E3MIUzCle_tR_kZ8rRUUwyOmb at Dt$;4x+wjJ#RdHqp@$A
zb>kuX;s*R#AHACyUt!I}ERnG`V at xKj4d7~ET`I9Icd^cZH?B<uz5xo~h45i~^V0G4
zb at 9EV@V$ce2EGP~ugS%?65bMDe}(T)@L_xt)A1eV;`@cdca+38iSaF{<tk^x4^__J
zzsg^t-CcXI(jQ%F&T{e2hK at k>e&A~^rzY{{GTvL^2fW0Hy+}Ei;<|QRsn at x9={{Yi
z=WYzBg!d3C!-~}biMN{Z?vi*(VD-ZLelNUR(&=!7Ti(42?=ne;4#vBNlnqAxD|kz~
zy6wIYJ}LVdxGFy#?_W3}xGJXb?!g5oD6dbJx0sQB20ze&q-U at 4zD#jlIxr&&iy6_h
z?`8gb1xo_MaKNSFtZw0~*@C>PX!&t#Hx?ZAO~In}$cNp;+>7c!CAdpAmsy)4YrSLa
zf!@*9K*Rq+9k%i^uJ{;4K_RGM!dg&_EVw+qvcOd<DdevLA+lrq1t{tF;E#J{?Upj)
zHN^22Aw4HqZklc4s<brJ$#P$S7W+QDXUJA=ka&sn8Sl at Nc<*Msod?7Fn;$6ed|BQ}
zk`T2Z1T%hbLd;9Unofv!aCOV~75F)Xfx-caxEhF=Lwh5h_&tb!@&kyoC1On?&IMxb
zQoRx9e-Gk5JHEff+rHuwcSsUbCtwnvn<Q~Jlejw#b+YNM1Q}5h;?wUTh|76DXM$@D
zr9+L_KXB3)eTbF4XLoM-<<buy{PIO%V_?TR9c&P4EK8mnJpFgC&A)DDB~G($;bX8r
zM?Z#6#p&%!u+;Z9bTuC7ie3=UBoWFBS#eYCS|f51vNUIOkY4HTC}d4QO{^#4h-)FP
z{0f~`McWI|UwVQ!wNY%P6l at RPv?2A0TgY(z6{kfyy2aAxeqzlVYYn`r#e*+yx0LFK
zs;|v6E7K}A^{;R at 5AKD<;%04bd?k(_oA&Bu7<r#90KxY+R7jl%<)VWQHmz;eO4Hi2
zN2g+^**jofP8vC^wr4TixhT0f at iUO0aPAGD<w!}x0Lo^dc=tAHo3W)>*D8j!2)ZIn
zL at j$fWKfDdN`Y-`S3?r1>PxGLs$)Hl4AoCGqH}<fm7%r~xfB!INb;4D1V{Eeu}QYt
zwYPzAtj&?}N7}RE0@=teWIb;!s3w7hV%j$vdoc*_jqgQU+N-G}P%tRLgG(~_7!LNS
z;9>-mj7tXpf`f_Mk(y<GSu*TybOq>wDvYEU!Uo7(AL*j7W);>>m68fVGW8CQF-c`y
zi(rx|$>2Y7#tjNVlSJNMBL5O$h~G at D&#mF!k_kh0q+7#%p6yD1rSs*xTq~rs5$o}-
zaaIH;Av-#p?Ao8=cO$c2ifq`Y8Y)e>{r=;R%E-kAb7gJ+*SykG;70KD&!ju)NZ<8L
zyEvs~jf2&=NO_lCsMdbnD-r2TKK3kNzrsQG=cV>X*Q?DaLF+TxpN<7Z^lvPR!U!IF
z2voB^#BOYP;h7 at M*#)$fbUS8 at wA_}OvfwLyvzyIqy}p!=Z at W_hweQ}P=K)lKT}CGh
z!5nvnE-#S84%Yvxt<iGxO8iH_%7sr~5<&6Yf8>qZwB1kM|G)n?7R&SLviQuBW*ihh
z6Mxh69S3?1iHIC{!$J74veK~U5MxPm!=C=elC{URr_giwe;OYydoCTRWBQMLWd8W}
zrhmf*dge+g$~K9X&$Gp=9pa}IZ_Gm()5=B_QRP2a{OB7Eh_GLh|Bm?SMWp=JOh-Am
z6Ug#{o<6$uy02^;UT2K#$q4ThIG|?bBoZ`V+pnE~f&US{|3CeI5&ev(v#0%Q^e;SU
z`@yP~jdKKv&wseTq5b|JO}{@s%AHTfiXW#$ZGP!7#BS(3a$8Z-K62pssMoRGsg;F_
zRIv6>Df!m at OZ@xanV%e4<i;-S>Uk&JCsD!sqOlBSkA<p-?GXOYald4Fu5o`0tc&4K
zp>9Q=5B~&PoG75GOBm)Bq5_{8+kwltIK6{?V*bnX at w|fC_km<k=6o3T66 at 32AHGOS
zM<%w=Nz%*Gg#(B}^iX{rx9VIDOJpn7^X&!LFwCo4cwZrOc*D6Tsin?XGflprL{tJB
zj({~W;!9FUX-IW<v^`ghsN<`!0mn;g;BrjF at q0Sz)K*zYh)7k&IasXehQg-*YTtr0
zY2ye;@~XTCAyv7xrhmF`K4v at f^0Bl=`V at 3^+K8<s=J9&`mieP7Ep|I0EvZENrCl&c
zL~h9E2hz0g0wj(vL?qfORH%g~vZC%9TQ}2<u^76xub~>Kawo at Tra$M5V>Bkcd?D5H
zU<9K&_DZBj<TEU&-c`Q&_hL6(P7_)fOdZ546sx1n;b%&E%wbpg0><y!5|1M**&gn8
zKsrrqA4 at N=V56D4-$b5Afhy|WV@!83$NAP}7>Ntr{W!QgmvjlG`UH6SoMJwgc#Y*f
z1+JT0GbJ>q?yR#eue!XhX7bFLbEaHAV|IN_T}X37>T2*gw?@-^*Up$Z(|1LUudb%H
zW^$-zs&8`0H?wAPeaNTzLNjL7)DJyG8$I6C#*Pu%*l`oJO8Si%r&W$VUn?sgrA?km
zc(0f|<?8y{$x~{y(Bvz$*)`YBoH4rwxz&YcOqo1$2zgGMQ#WhKw3?c!+LXz4bu%Vk
zSu>=rCKRrl4b<A$pjKg4Y8B-r_??R1Y51M4jV>FdjlF0zG99j!mjPC3W5*BID#w;<
z!Lg^~cN%`D;#Z>8%$qWE@~p|B8FOY2nKilYYVDfvoKV{5?C`8BYU+m6&$x27Hg(R-
znUj^fwx(`M&Fqj2m^=%g^^<2$)h5@@sSnl7shwV<&8(Rg8d5vC4zZ@!)X%8b>SkOy
zy|)j at RZ};k{%WmuX1HFWnlfkBtjXH+>wsal2COsYOx5aVPOhJ>U0+i-N1Frkgsz>V
zg{Ifl;P%lu;W};F3^YjnjCopp&0M6Zp<J}tM8_#}X3m)n?^!dXYi3P-{gBY~$+Klv
zHP?hE&s5o7i3Uem(n7BZ*VLz|Ld8OjXP{9ghqN*cbk!=fN^OKTQWIKGJ5L*>nOc=L
zS{tKPYv*ehXk)c;+IVe(cA+*=yGXlOlA|73*3}HTq7Lm|qne*9Cuy@^@RS*KQ^K>R
z&8(THg=bF%g{RD^tI at 8kn>@E>$mA(Rer>XLg*HW-s(}{TmD+S|hIW;9wKh|mrOnpn
zXtmlkTAfy}g|x6XSG!i5r(LIAFH15dTsQN&WI>V~$NVP?(>q3J#>}ZTT1BPF-7@)y
z<R$k{-0d)F{8*L^bY(hjHM$hHTA+swNSq<<-I(*f7dk#NtZ#S+#JrDIj^db7VGq%|
z;?yz`C3#0CM*q#F{tMxgy!)CKig-8Z5ftL1Zi^*<)vYUVH8l0(o*t5e{14;JcWQ_6
zSova<5?^VrFr3{^%L2GeF2`5{oiE^%V{A_cM|Cm%*Wi=%8;>_~PBd0PzNt;PD}L-2
zleV$2 at y3?L#OYuvW>2;6l0fMO)Ry%0R6+mK_}qP4tRoci#WWz65xox-mXo+%PeIfu
zZ`gcl=`jZ*S^^*3Uxg2(%Em|XT?iVp+;<_Sy6-}S7GQU8K3!84eT>7eq6Z>EML~Oh
zKAm{W at 4N~#GR*s`>{+>K!x4>=h)DNcUnTu<IWm)llFz`jJ at Ev+{=i9+BO!u@(4!Aw
zo;%Y1LVovwBe}LLx&j*acYVRvRMWc(D%9QO@=oY9dgOu51rVQOf4s^AM-QmH#5c6z
zk}4Hiiu0!NqY#zeTu_L1%P8P>oPvHo{t6owaA;7XL59h2^~l3LDu&AFfEc;)D=0>!
z*JBM-4E$sM;PcqW(<hphXZdKaQ&3 at J#ZZ|U-XbEcgp7uY at 8*N=0>+xJ!FZ-U7;%$V
zB^?kI#}ISYU{Oy)Twx!LxMiux*n*di_5_OCU&bvf-Da(YHV`QN9MfLzgvYgm!*P=m
zmx>Df|BCXfr?I3dV=VTtpMX|KD*NH1l#xT}_9-JrxD4cUPczU15WQ)MgY<ZnZ_PhJ
z_EMezTmoV;{qQoMviF!cKja?Fp+?3Yrc at gr0|X_zsD-WVjf{cmp0F73AEG~5l9D(+
zU~fp=qo!ukGryV5Iv(If;#Il_&duaZ`^W9~|MB`KTbkaKVDgZ0ORje(ukuv07)*e0
zdYL291rwMkB<Y!yVs0?gmXE+&-#wQPqRZi!k2qnIr0hh(KAf6E;RFtgp2U%J8!I!d
zjd5l}wyn!AXk)L>Bee2CNFSU%ck;{`Q++31I&bvo6Ma+W%!bxC(>G=MWT-Y!q<k}G
zLp8oK41Lj8Gp`nUb3HW7^mO6T`1fz5q*CJz*kry_CjQ%rk=~Uba?UI4n|bCm>}HzA
z8PU_h!Z_8WoAyJ^@F3Y}{hDH+j~132E21a+F at oWZ7tB@g&;dqf^;(TB0u@##9lDIs
zi=wzi)?3~vW8(t+y9xP<yy#{;%{Ku}jd8|UaXu~@YsrXi4po%4hr0p|-(6wE-bcj9
zsz&_9Lir{Dc>@r&rLg&0eOzj?5np91Yw<TuhnXclO244ask*n}o5PKp>Af;(uY0xQ
z&ly at C_Oa80&ws{y@^Dgxu){tYfS0iO5+E at wA}MewN>3C}`N;ec545<0NhOO>VXV;-
z)!;|uTV~w43lW^kHD}|l#{|WdRKac{F(qpej_KgwO>!MJy&5U>Kv;&8ZR@>!<h5iM
z>2YP3rSv+Klj at C2+;EXmJ6!Y+na?XTmaI3OhbgdRTPq$mcBU3&>|ZN>zs<g*8Ig<?
z7}72%-c at m)j at _PBL;`AXYkOn^=BivrV at +`<VrpgnFTzjBB7!e4WlSFEO0y@}k!A`@
zl4Sz~DzH!2vDg0<3Xx?~)pGk%?*fKTNep-CL$s%p{=G`lJ9_AFWJkHC)x{g$AWNDB
z|M>aPFy!X|Dnc*T0i`#@Z-;^)BOHvk&`-7a97Mr+JPi3In=yp<Y>J<NH4vGI8A5Vm
zd?e!0i at ee<fTQ&pN}RB#D`$*~E~aUE7<(Y$|Ac>2CeNNdC*+&L(?B2Yk2>otIp_C5
zf?WxDM$<;$tjY5(ub**!O<|E+=5m>?z9!@wUte<ptOnyS`S)QeOy5<LXJd-VKJ_zZ
zg=dB)&#svhuAh0`&}8~K;h9r?ob{YpwKHbcz@{*J%5<8ELw=s+bK{MhUgMKfao?P2
z5U#c1P`z(Py$=(&>tqp!A}&*u|8UP~Vy9_+9Q1z>8Vz|)M_k!2v5f&8(80ZXc-7OU
zSE^ij5A#~HkItYa<by+M(3eS6EdDrH0G%qrx~sGu{Xi^Q0KycoKTrKIMiGy-)085$
z5)_7wPnJoQ_WvNweu_$}1LEvJaueEq8DUoxwj(C<#9?grnvC8BYDz8xV~)Vr5tpXp
zpZLA$5DRB~R0a_r2_cXI+Q6z at xYH)XHos)y26llPdIfgC!wn>%m=>6J`ITuuybOV+
z{fDIhRsK&yKMCRvW%+~<_AK&F%hYNd&QBL7-V*jIijBh!EcT1`rS0j%I;bqWbAyzW
zshxf4HzpEQ<uV$_2DOwyG0A9(;ZPXD4qY^d9#aDkczcm94T;MTF6LwlAkp`?lN+1P
zT*;+<%0%?aB#qHzzggo${nKlf#+W5sqjdI9YQ()c7%#!3A(nJVo&2IwO#j|e0Hs>7
zmDHB|Fs0jBP1_5U+ueQX5;#@pw6$m>b}8|hDvn#+6#Z7yzC%WsSfVPXa!)*j_49eO
z0G`~|nM#grN1ZsWN0W6IH?~S(Cq)l7QoxZ^JD02^4Axt;#NMn{+!4WDZ|9ti756qE
zR`eYs79rxRO&in at YT!tfSK`CtXh`7t;>-ZPFioZcU?9fcr5kf_BhdumJVhbA0f2L2
z`KU^vs)>@s>F}ysw|ECWI9_jZ$n;GJ<VkJ{9lKJr{{cycsqsBO((@kBJ^#qmS7kz_
zZ_6YnjjI&aN7tlNBU2Xt?kUm--Aa?G4|LD19{q0_O^ESHre~2y|1JyO_?pkDDgAN!
zk;6SBwF&UQ#4{=LCf&1G*OpLfH=4rhnV9h+XOMLg0)NOeduK-N$C(r*tFMgOhmwr;
zG|KcxOV7U713r-TV#bbaj(ZGwqwL46*FBv%`d>Wwek_NaALqb%lh?Dvt3Bw2Q&t%G
zbHn(0JmZDzzxUDZ=mR(9IfNk93pBgmt9NBQ3Xhdu&x>B|?Nn-xd)!C_P4Qq2?3)bF
zvmWi0OwVSI_Qx#G-#psREYAZTLg+~lHQ?wo*AvyXh4RC#TED+!c(!L~pJsS)oSU*&
z)X9D?qYbkk@)_hA%uo at -s0W6>W}NzTmiAX_4vONEWJ2jv8QP<|2bwr}A1{Lu2RvZ>
z%rir8)IE-_{Z6%y;(=rIfg=#J#?zXq&GS5)sjtYG3#TL#(&p*jpLkA01GuCk<b5}1
zdRAm<k7fC|2z}qy#~|0IGGvzffBrq=q9vKy?}`7A_K0^gz=PV?6q(sk+maTtHB-BX
zK3g(9aDJ3IN at nm##znDA?N=&dzdJMU(<52hQ;Gz~?aCUhY1=$w9x=4Hvorr-Xp0X4
zj<*MR;IU(X#1Z%##s12Z86T+a_D<{=sO{}D=9h<S at k26iI$Zl=famLh+6#sU{tplI
zz<=F9a=$Z>{9imANm2G8Uu5isj(&U2xZCrzo}5f8PrILTYRL68<Y`al!uf5k2Vtw|
z=};sPdo%8Y(%PP#`Op#CJ>J*#MF5A4X*pbL?3;Pd5!%ZB9{9Xzcvc>+?LN%&&Eb?e
zLXkQAkvaUIID7=-Dx||HFYBH^d9}_=&%Ivl>rBt1Ui1Qw?bWt>ey`u@)!rf|MZW!>
z(wFF)bF`Ooj!^A<ynd7)VKtuDb^RONvro at _EW@)RL)$>@;C5F^`m_6VPy8^=@px`M
zOzZ0BdG9doj{`DZI}F5``{H5R2YF|~fBB&vxYry;p{<9>JO|DIX?~{<!QNk+kZx4$
z at O}P=Tsh=RUE8BN$RSgQBy?@J`*p>TxUPNuuY64y@}926|CN}%arR1g=;L~0AM~ug
zW49XGZ~A{g6AhLpZMx at I9{o0Aoe#6fc?*e_zj-|CJlbY*rsT;z88CV5;=X*dV$@?E
z)z8 at C(Qe7`G<mdm=8&5`+N&N9d_JM1AoelM`Wf9G?cNN}a*t+Z4S5K%!{dQZG&>bx
zQ8q<@h(UzMJlc024}5NQBdpfX=<#U3&G0<!(H3V7f%Mtq at xaGc5pokcYIA>v=fMnZ
zxoVQW6~O*})*aqm{iqaKEIxbm6Q;xa#SG7_UTsCDXK#*XXL({??bjqiSLBd4i%_J<
z`-lks=L}CzrnWfqmmmT>50;Z}8sdS+p2|j-K59+2wv}qWIGa2^P$e8S7hb>5 at a#NP
z`$MMZSBGi$XL%YA(-viW)*PyRm*aWrQ0>+}M}CgKBnAK2zYKw|4|qU_&(=IjwfInq
z^XZ`oMKSs{W!#qmV^yOEypM0+JorDYSMA9J88aa^?#&b$bsl(d!*W|g=41SdXX|%m
zyo$-~q8!hX9PL4>xe|ro2lSz{;Stk4kL&thi2|E+&l`$|-Ds3$VFLwX9DONMyI=RL
z&(z+A?9J5B<)RqeGRXa$;*n(B_c-or9QR(1dnXEro}Ni#3#x+g%|{LA=$`j<{m;7R
zGhN?88T}^1b6<wGR`q1+ at F>GiA?`KpF5UBPruLBTc{LNJ8p5?xhos2VURK%vi_y-#
z43*H<XL%m%r~T4%E|&j21-tudk7s{}dT;Q0Ug`_k139&_4>>pVL3Y~a{vJf>=uc at -
zpkr>+C#=Y!&hXb9ZF^?%gE`vr>@(o=4pA8q&bn$NQoWdU#NvM1jx0}8U+sPmEQY&1
z$8YJYt<7!(8^7lz?>%1BNxQSZ2mTNA_aHje_bz?Raz_79j<zqe_?aB7(=!7;59E08
z_g$5V|6*jeBqQ@{ul8Jqr^Ty%nwfc1AMFK?=lvY*x7nVpIojvho~|72<{WZw$|3*z
zy%V^E6)qKGDJtwuqr%P<72w>^=Wi(TvVI;!`A0uwyStwU35gUa>t|fn_qeRD<!Bw*
zXTZl+^85d)lu0^%+?VM1Xo`++r_mAKd%PVe;NpHB_&?UqgXoHm%e>S~_j`$sk9kqH
z8Swe7*Mq;WsS+N3ECjUnNQUPPkM>c<37Yn(r<7 at wJNO+0+?wh6WtR40W;Oioxk#_R
z#<R6Qb%>q)wZ}3&pMy at Bo@e^&A9_6Y0PUgdQGe~Pv8HybcQ%}l_3?bzS6kKB1NXB2
zpxj6OJ$DY!?=d`WhPKv#hw5!T_l(zrU!fBY&BXBj)llt)9M6M8wGVPUPY=~z^?E)X
zs_o17>=~*(dz5GKDcV;jF3LdglS3%#t3y054As6E;`!B3?dGAB3}}^d+jGw`dhUhD
zr&IS>ncA;2?$obO3nn`CA+`5PSKCrbSjp`=27!&bCzhi{GlpqeM~3H>Y;92{d=r_T
z)@*HA)(sdXvpsf>)<7&N|B>p?w{6=u(~(ND2+NuJb7Wsln{V5ZWfZQa at ptbR_^{wW
zygrMEXK`)J7d%%GSi_{Nc%-RezY~tz!mq&|(1BvexX!BPq+89+9cjCj#}1|2JuZpq
zdjp~ihp&*Qhk0{hL~LR&b)r((H%t;vc`XIPcmYQ$G44=tuwz_>RHs6m8<btd!oyx_
zKMjy3|M64_G9Lf1b&_XK$uM%Hh4a#*l_P71mz_&NBKfj&S_+Ck7Ipy;9uvxjpL0;C
z$S&{aRQFh8`{BN_P+z{3Tdtqbk{F7HxnDlnoVAs(g!Xh9E#>_Z^r*AUpH1V)4O7Gm
zv1 at E?sK`Z}i|b7Y at r7POJbWE2L1Vlw4n6UC6Lv&nGkuO|8|fu<e7h^nbjh$l{<In%
zS<iVlP=x&{!1YHw at CjD(ujMInk-RsB*9F#5qO^Y$Ke<SY_Y|;-ye%{otIXIcfJ?Gc
zH9;)~yS2Cg?`=>m#&a#kk>Of6H+b<98)4>ruyq}U-;RA}To0}S`}D}CZuXC#qQN6F
zy|U~i9!M)Joc|~FJ8*y3DarLPx(3YQ_tHbBgGXtzh%d#B*emkByVdLXgKhOfdm%oe
zJ)L-y%gy^k(uz#wJuv^1dgTwR2c6lVypwOL6V8v_tWP>v)^c5j({TRsKGcKePw$VV
zo^X at 9@Ogm>&%RwLm*zXnqE5c-&)=>VZs@|D at 9?~jS at bzfdbke@wZfHvxQC>rZU&xH
zHe%nxr{tZI=Yw_*Zt&0ZRu%nojB~b6SXp`4i?DDej$$u30 at wfX7JXQ1)HS%m?pHut
zDW>3AJ=ni+|B!VV>h8V^Q1%PlHI|~!Djc(<e+$v=gf&p!q$})!Fel^E!F7p6iVpM$
z9?t$`sR&jJa$kt`Y&<hZ%N_mj*13C{r(Z!L>aK^<RZ4Zg70<{_dhi0>MuB@;jS*Y$
zhGJ&om)M?wYfGsLbZeDs+rzCdi3ii4t;1C-BR9H_2=Ver`n7}m^8>%f#8Mw`64H%F
z*quY0IdapVU82|7JGe>c7MJwLw2bKO(1P%s92G7|mvimJd5Wr{t#pTM^mB~t!Z{ti
z4|Z~FFEtkV$On66Vn0K&N<7y at dz`BD?R3f~sIEh&Qi#D=-p_+5gz4Id9!jZT=t{fq
z5HA63gRhjR*m45t!tY--lbsP4)!~&S`&6uc;myR2gehp at f=HY}iqM-t4=}!0xSqW*
z2%Lnp#?S+cMsyZMa>_gDY=`><)gerW&P=||#(jwJSaDoCPHGv^!AOD2zOey^qB-+$
z^sPfgdazPB0}`0-^96;|--ElVGx;8za7O6Kb+N1f?(W<Gkqw&S9U(#Q+x?k%-o5(r
z5K#mU+#;+!xQrLCPJK=#+LUA+l;{QF)M4FoIgQ2ES9q{W;CgnaUr^w_TA{zC?yJp3
znI?kan~QPrV=+D^;hx$H+Ks%6JB++5y3oJEZv}R>>LKjf=%S0;g>!O1w0xQwbh1tn
zI^K;RPblz0B<{&H@*sM%=2kgpx6#c91|E+C!*4Z<K2tOX(^gqStE>fHJYH92&8D7K
zC|5tZr at 8e{H8b%!8lKY!@kq!^Fl;9KqsuQPn at gUL4~LD?O%GDi$+=Bmg7 at Z%md~<G
z{WFY at D5xL5GGyDr^)>RYZ->WqsPk~t_j=U#D|&AZ`*CoOJszyXmGY>mc{m=N`-oPN
zX|E9y5MQCTCBiyCH$EDEs^6pk8jH?B_wCh1_J41VDio*dioqRVmH4Nq6U*x=YkRy8
zu;CrL_#Xg`*enF`!3;fq1)P$MD^u?uwn8|x@(ucFZ(zn>M%wf)&*PLLA_=?xt_fK+
z3$J0xb%(?kGP2q~p$zCsX7Kotk{8s|Uruu5U!X03yXQ#x(JAFc7PzuSJo6X%FN5zB
zdY<J49<chZs_3&IT?01|KDYxJJcP9oyu!BVV`6pep^MF9A<<K2YgIZV%sJ at N;0WlE
zBk<e{mQe8SngwM9c4(n at CEq6@{RBb)Q5N{haETE2X0oO*!S^KmE}vM3aCfxMgH9uW
z>O8150y`pQZ at _n#ExP4{jYjlVDwI=)wWE2EHDCb<v~R+zOzbHNI`i~M5AFrngWeX{
z)rKS7^eiRD(!;TtLa%7dhG&KmBP$%mH?85`#GOrIWrq~?7*DXh!oodv5M3lIk- at m6
zfQO6L8F5q>p}2=CzKwX}*g)!Gyh9+S+NES7ibFythmhmiaS3K1Gl)(A65`I{V&P91
z(REZAYYQ&?O`MkOPoft+Bps~ladL2NaXKwFV2J^h2PsS^0LtMRJ?m6 at jrKXy8L5}y
zi9sXsd*CnI)eJ(wWR9EXn?rvECHhn}4uEe)XlbR at JluHN)b~vrZkgHp61VMFpQ87K
zQ;7$SI}fZ6u6qq+;)-kBy4|Y842`R4VkWDg%9 at W;;$biDK at H-~+5^Ol)Speek7*64
zv|2{n<N9=uw#E&>Q=aGL2XO=$H{F(jql&&Ni*$5zl@`&f3-nd8tIXOFY4wh_2jz{i
z2IW=wTkE#PUqq;BV{b)vnbkeoM#iI2G2j~xd>z2os_zCmoQNkzS+oni8E(S$72_J%
zXN)z_>)%)RW&CYd9*{m at EP8`vKzbK~JZVvVK1(r9d at Uk1RayJuN1+@Qwr=%QSlPDe
z-)ouY>?M|qHzG!b-3NrPum%iA0rwK+_r?!J0;>mY;m6$%<~jQ~@+Fk#%2c;)gPg&u
ze_0Uy9mzaLQzW^Emjy|0G1Eh0MsD|1V&-%xFKW?k+d-v_lrQP};jurYA3~h``}$#-
z)DN?ieyG&LS^pdLaOw}KhpGF~S7B9={{3h5!^rpOhd3RwF{K}7{A>Cl61n=JgFY&^
z&!o2^d8&WhNdM;iEvbSSy?0Za_O&!J;Cgd8GGy{tFiC1B7z>~`nnfR0`TuD|`;#Xr
zjifIwLs?i~Jd%9vjLH(69ETXywAEe;!kYsGA<T4$`OryxULC{g9%vmTrRX-v$Xb%^
z-NL^m{6)~2c_!4mouPrjqW5W1Nax#knEKbuqz9KLthUUDk~<5VmJg67Y5SvAr{)Jh
zOxvJwd1@|Wmb;>HMI%Nf>PdyH!lOb#2Rq?qje=H|L1R_yOz=?rLi|bT6?G4YHN;x@
zhj{_cg^j>?_cdu^iQChae`o|FyP%|fO+<- at 5dC`^7s1rNbY=j?33~Jeqs$s^5PR`F
zBKEK~(*Z(7P{;B5z?_j-VBU at z$v8v at s}t94sjXtXU(*hBujxh_#BS{1_G;(?z!leM
zpGuby5yp-;lVL#U#^x{nv?7$5kT<If52v;wl0P~Tsg^<`v?+~-F8Pn;#W-05d*Qsa
z6??m8I_~<%-P`YmPEKnd`v$&W_Hs;cVY$F$xhVB=%tw>}hxF)n#c(Z6 at QUPyAQ-U(
zq3#F&iEavbl7 at oor7@`^4Hf~);1EDL>7xF3!?z_K?llkJpWc!&oO+*d<||8+Qy;)b
zzzvy%k4fs|i3ZdfPnQvJy_QNZ0<KrH^djJTbx1D)(o5~Mv0 at rGQp8KZiV?6Qx%g|v
z=&!IN`7(rn&3kvOm=A8_=?L9zH_eL4EAApE;Hxo4e{Ftx5tl>34FtsmtQZ43BIpaJ
z;G&Z$<{bh2Rae|as^PYlkPo)-O$4BuQt8WDLSMp>VSL4%<cl^&he}ZflQ>R<(_4&8
zSP at Rx#<4k?%}j<X?(BJpPE$^#oDQcQsl{I-4|*I`o<30aMgq7N769f%`e=(S1E7Ca
zj6JZU6drWBE(POmLINrC=yB)?cc>srNm=5>Npc!_OE|!ew5tGM-v}rD1HzSX0wDzg
zAq9{fjS$|Wg2+!HB&U&gF9*m at BF~A&h#qbHm(U^y0S|WKc3C))!$bnOl2--9-+)3O
z<8c2<)AwH$sasa?MwB!boJoSL&@AdonFo^htkC#8#sGTAy+S-!hIfM5IPlM)|79aO
zY5+o<fspfSjYS>El1{?JG7uly9OQD at -?yMll4Bv}Vc4gFs%NoG|JO$JEY|5yM<=|r
zpt#EVr_$@w-nj_c(E^uthX$R$7Z8b3mTU at MM)e12Ir#2g!BzGn1w=4Rnxy_uCv&(!
zaNr8R at x@i>{&ay~e;gqxPTJ~}bz4rUa55+~zRLPKu{OBc)%V?PH>l-#PQSwQ*iyxh
zUAeDeQT^ookkI;zO=l_5B0da%Qt~Wl|Gj|d7IdNoT|^w1u=A)&{NWn7DOR(J)t(-U
zKhk3 at Rk4<*$KsFlSPd#xQ+h1^NX5FbU=r=PtECe0j=S0<ZRk*2fC8(Nfz`bNL06)L
zn=(b!^nH9rbfFg&2W at hLH?1ey;3i at QZXrzA31d5;qM9}oPv;LDi1>wq9%R^w)F!5m
z0 at Dm+e;FnacumZ7W))*+6z+Ae<^E%j?ZWIIvoX6K^N4<!oZ@)#0$hF;gz-<<hXvVA
zW{<^$)I^c3OS*z==%V4Jt-Koq(y)t#-c`pj;Ll+nqB0|mkB)znqZp22N?dK?XaXfJ
zL|&!tV;`;MK29Al>AvME&UhRiJ+sFKD0MX))s(u{wCYiCj7CU35vjSaw3Y`r^(34n
z$CV)}^&}*kM5$}xK(j;|P)bTWJ?Pw0!0l*V4b1iPfM+6Cp?ne|+)~hh52>}F!$wcZ
zret?YU;7RUq)$cwGDDfTgWQC4Ifp%2&<F^m^8g?cp17NUMN2V}rEs=#NjN9^<e3d+
zv;Ye%gqc0<I|$IHi*y;qwXwAqox7df&K=F{#d|qh88wi}<sjQ$Nnxo6hJ%*u9C+fy
zi2egh?m_EG?ky-Ep`lO4YOf+dWY`E;<@Pwo?!c$o!HzUr=&Oy-7r=!&H4~_^qTEph
z9>R|Pm~)Xm7b{mC2&YnXF?^Cu#y~`$!m?$iPZnsz;r0{V<l7dZT<9N_&WjNH2?}qG
zbdYBmJac7q3Zppr9EUt9&<AKd{lq|kY4k0J at F$L-;KnBlco2Vrl2BkFATp*jgsE75
zmJ*;7k9{(c`zrFKalF+yf=A#o)F;3(SCROH`8CRNl<GMV9 at JJG4oe`AS5wrs2qC3^
zl+Psca-QJqtS4mLCkPkfQFQu;l!OdJ;AR at qr^6j=lk%K`k?WlWcataZQK0<<VTJcC
z1 at p)O?^-~hp-+m{2xvdipaPp@;8GR1Tz(QpuKGSWXf&oolz15+4afL>f-#=rA+O(Y
z5#V@`haM{6MugBmWZbOMwgcjGB>@Z<KLXx|2_NC5=t%zvr#J0YrTC^-4zCt?d<IIm
zNz;r=>G7s-Y3gj>AV(-Te8L$834=3F{#SU_GbKxTgo2XW$pyhO8}5TiB-X0=20gS%
zV|G57jWM?Rz^BBCFnEQIf;Q4YZitZFq~NCM4U(){&aw9J0&Fw6U2%-CCJsBhfCHEI
z4!i+F1*~=))UaO=28!>v_><DG-B29F>vpu18%X!X3u`hi>YiHq?ScWF^mn{m<a#=H
zY$5u}u|r+T7QCsIJcYcX4Fd|1UidF9C^Vugp=t>0)p#dv?sVtlXq7v;RpQ4(XPVX&
zbe?3kE<+;+kd*#WgA3P<)~tq`T6H2pgiTUm at u3*1T)U*RK$;U@{9o+73w+#Fo%f%#
zfd(o3Qb35x%BWEi3N=wy6Ix-?Chc!v0uc)Iky}eI7U_+42CB3)WhRo at VYDl_vb(z0
zT^{YO>?6CYr3#kxmbReM!o$TIR1oMeK<ll9g7p9Xe9!MUmo(+#?(^(__aU!WJHN~M
zoy+%p&-Z-K_sZ&W;>61!f^sVU8F5S{NbBsYHIZU^I}Z@{IQdOyCf at p5el3rj-ZFPh
zb?P;waoDm_&j8Z6*C0Mxx2L*#Ms)Oz;sp*^?@>MbsHfv2ug&SmbbS1^d~K<oi>jqI
zN&PKAu=FACS9fq*zMj~q-rCk^U)#QoR5FiS(c;X5#3rp%EYUHq<uB%8fLFPoo^R71
zt7ogaLp}Eis-=4F=GNCHQc=<WG|+blse*d026$G_4}y9YaRB$$jt~1YgIlZO*q|@n
zJSg!`#d?kn$8}jy&p%ME-CKKRSkWz3ks_`hAJnvxCzYIsMA^M7i8Go13!;2F{yXUB
zv0*<qF>sAnUwdnpSB3RoWA#)0JA>+{^I%o6e-DNIQ>0XVzl9d)U#Wuc@*wk|IvCdQ
z_tuFX;b0u;aa1XCeet5GWv+wWc`4o$=Cgv`>dJf?*#;_o_-xaZks-BAF%!~- at jlrE
zaXWW`MB4^s&{0piFBjAC<?8!lP1{mW4hmUr{I$Y}J~`O3J+m#ffs|vTVYo(*YTLPZ
zPky`Nu*!d&Lv&D~MdEZ7E{)+`XrV(ZD~vOuLsZzpE5)mA4XbNK_12;4;P`<+u{y#+
zQUyl&*2Q}cUE?=+6+_{m?u7wJUH7IH!;e;WZ{eZGJJpRBd2=jte^-Va^)H*q`Mk{3
z+QF{etqt1OV|1*mX-7x()~=>ap`7?R_3+t2qV;uT`r8p^0mqSDnb9NK+XfdupTA$@
zF3KO{NRu-7uZ?QY>_r4ULL%r<)PHk>7zQWSegGvv)Be;mgCYz!eo)mvGuUz<Gnm>+
z-8Cb+GBwq0FEK~&;8jSEhK1{GhlcAbio`nn)bHX|NIyA5x%mgcW%J+KHT?YVAoS-U
zYW<#~f||7aHX at YzKPWqaO8XYSYPSe`zL%FB*%8pW%&3lR$46cjp?fud64QfdJaeEk
zQ`;e-x#;Mt`2{>~r;C{fGi}6gd?z6m$Gn<9o2G(?#b^JjXRRuiT~_Cc4IcdHT!!AB
zJu|58cvr4X<;J^Dk9Ci}tq85_N<-Ml5O&0`dd`NhQBhXQgzij2 at z0&t%jM_Z>&ed%
z!M=6*`P=ptMfv%U1^72>UlE`AD<`NVU%NDX$bUHp&SJOxU?bJ&Toq<+cRU$s8pV1w
z`s0&z#KVH{`<8aN)|XxjVvdOM2`{}>ALq`gj_GJ2exWOO9llE>e||)7Qm?=?V9g81
zxbFtk5*UkE^`-yB=OKV*4-h9}f$w8KG&wVRjKWFU$1rK||2p;(IfNfuHa_Nk=NIBP
z;lCbVcADRI|FT`kKuIX0Zhnf5N~MFI{<Zq*K3u+4^qHQIzhMxcUMqbH{fcMKB&e$m
z$~K>(gP7MF)tFP8{e$))>wMQtXIEGn2}6u+-Jq`HdDZ3lKk;AMY2z^|eC(y4#)log
z;H)!#2!hzUaP)D3CWdxkEO|kR0$g~X+Xv(LbODb)hVb~M!NYI+>9W&eZ9iSH%Z*Ow
z1C^|Vg+5w-e^3u;IJ;&(NU~^x3nLKIT#}I5l0|Rp%1s+2Q#4snH&w@^Q%xUlz<naj
z6uom#m?%1=r<@wf@<qQA<cr>)d{!BP6Gz5UPrY__?zo@&WQopQggRvBl4-Hj?jxxE
zq-#GKL)RM5Y^B+1|D{JUAA0Sa+_JiAQbNBh^OMxqg-%Kb{a0Ls`~aX+Mrc$l&oPBd
zk>;a9CnxmNih$FnL=VOXg+e<An2P|6UrY;aQ_s|SU-%^)aA`K}$~?*Qmm6yw1<xfh
zk<KPWV?*BjrNMgwj9XUbox5YE9^Mx0U%<uVAIQ{?Dp+}$2ey-#YXI$Pke4~$)}I7D
z;A60Gktu~`PbR-MHXkiQs4Thm&VU*4Gb3zhe@>J62HrS6Z>rX_6Zhq(qXZ1#6ZALE
zQs*coBrEH=Rx!^j(anxswfVoHdbeH-WWA42r$!$sw(@|Uu%67jUCEd~1h7K at 8SL`P
zglbnznEf5RKfJA9#s2O;Rlk}#>&V2YAl@$m^@t?VdrcXa+FDl<R7>@>N%JSWTZ+7C
zd)hKBEau#%<g+j!@gVAlg<yEAVLv_!C8`Yjaf`S?Z|yq>Uir?##lgDs)}Bq=kBuYJ
z+ll+JEx8xTfk_cuFohsWL at CGu!5Su7Sd2 at s<OxFgv|nLbwUFMJXfNumCGdp8T1-^n
ziTfZYxz249s=d!EFk=t^LXjVW77+e!qjxA3Y&FmeC#49Yfc%knem2{018DZMF-XjB
z_jO#Ox_`yP)N`#p`>Fh4l at qwK-_|II!y&FZ5dCo`$86TZcEoc at RMES=^q;xjsFdWl
zH~uph9eooT!*ZE_Q#}J6jn%a8`s5;$B<2s_pTvc(FV}XJ_2YFq at J;nEdrQ!P#nTSa
zxSIi{RJ$z-)?yUu_H~S)s%3l2gM_&(1D~Lox0Jgl^>9gmmP3~-{6*<}QXXI9hfug5
zpz5hI&trFWG4!+)UBl_8+lk*beEgcjXcVwFhM1grWs<l4yJ66pD2bBCmPM^m+ZcBh
zBiF2>=}Hu~5C9HCSYU_sv=WCfYYC*+^duAi7@@f!wx|n8Qh|nv&k>)cIgxO%M2avB
z9^&C3$hjs`HsKE44dR>TtST*q0y(*(HXX?5+>Dg1gCItUw|;NFZ3xJyA08rz8#H^#
z%o&S_&yk4CUNB3cG=>XOR961v#<Rwa8`pGlMA0WtyY8x4iMf#(OB557a7Kp;a%3&K
z|7?G8 at vd-VaM6Y`uY~h6l+wKUxtaxTPKcC88LF5oay?T3_+RSc2yxZurNyss)#Rlg
zX6CrM#7m2Aado|yzDCc|X!Ru5%j{0=dSb$5SjF*_022Lt3TFL*q+5!E^yh6nCI}LN
zBs!r0 at 6=#1U5M)V)Z5DUlltzkGT1|`J(j>n?<_=3{)U7G+dV=|)DrpVwAPKu7u%7q
z)Hq#4;lxz|cGV>ptQkS{GC~NY`VVt&!&Qh`1$a<F9Z==a=1Yc|4k<U&A#ZJ6?(D~U
zUar3Oh at Sn|ySPV2C4%5OYa8>wHg>GTP*W7J=Zv$GpZ9an+)O$3A+0y#_0~?To^Xbj
zUdr`^Pk3q3(h2YLdTVG~G(A9Ohq9xnt$p1B!KET{QeHNbrS-ox)yF**1)-isbCo~F
zn5Z5u8Ry-5?I)!*;#WVhrkX_P*%LSzj5rWN<iIXAgS3hVwbXJIz64y1ue6SW%^>Kk
z_Jm7pQ at 9MnJ3=nCUmn<OxcYt&p(^Oyft^}fe<2>s>KjO{;RS@>z~n{&7_gABEkv~9
z^29N&)gySGKhq!`^h3b`C7TGKY^k|jy)6$a$RN7l13Q$L{9YQw#QA>}+jTXfXLAsD
zpw0iP_<o<^KwV<mp$3fDD1RjIJ;a19Qq7eU_DgzxFT!0%rS3f{ygDe9QTU)(mXeOY
zEE72}d5#KXzbJZZCSN~e{(V>x+euBw7K9zM9rRju^&8lEdxa^{o&%>Qt}Ms&&*)<U
zkEP}8%j-+M-X5-cmR2wKdavcmO%C4*<RcthG>8zzD>t}+PjSWGWgk^+fEDlG&3iCt
zYrs_ms1=0cDk}6VmTKaQ at tmmy3m?`xuGoM7;Sig at m)15&?ftY at 9`uSNV|r2IK!)4-
zXTy5zO?<4l>p!{VFNW;S?vxVnAo;7PvbdgX7cSgaya&L`lOHI7v<#e;a8&Nu0Aqx$
zTD|%^_`LD9JnBE)--noqufkB3;){<h&NnJUvyb~Y+W!jsI5~hl89IOwo)%+tXCNoK
z8<0@#D at Fgahm3CO?Iwo`C46uZ;schB0P_<e2ABpBD;9l6C+FV_kO*+ZXR9TAXOLsu
zYEEr2tGb_xOU3rk(R{Nzv<DA!Y}oBsDLW{IUL$QUB#vfz#`xS2GYALf$_(r05O&$&
zZ#;LeIB3XPW?#UK+DWP&;<k+!{??ncl=X*PZ}b39LaO%_NA-3jKbqgg>yExtOU(bl
z>py!-P at GiKD&5-5L14J$UaTai<vy5Tz5*uy$t8aq>~#Ux?iRm|J6!VDx+Twix%Ixi
zH2-Zo5_ll`)!teLg7v|jbR*i at ocs_pH}O9DG9sWk5Zuc!d`eaL$*pQR(6g*z^chj_
z*1%zB0g=QP&6}N=9Xa`uOHM8em`ND+C4_VvK5Qn9x<A3c$Vg^GV3J!~y8zwPHj??G
zItg8_YVR35%}Wn*$JHf?^Z6f^Zne8-qxfH3?Yrq_{$J&#zrhdFB*6IDd-v+6lHEA4
z!|nQ2<^Hy9_j&0L(zv&_ySiupI4`}C4}12*CcSJI at JYK=RrV{wi1u}t at PEs`tv9XW
zm(Qwf>+o~;3T<po#3)9CUezTp?zwjjZ>kdKG9_A16|oG1eW$e7TMfltqEB-TDPn2a
zQ|fV_9Le(%EiWq(d{@VNH^qn;gNTfQw!B!_^~<$0hVq4<sQ>O>hq=OfOLA{L3ps=u
zp4$W44*<Hua$^h<r)F>J<Gsx9QiCHB?@Zx|+{l{l;i2;<W?TV<3EFuNZycXz&o6Jd
zblfRp&uVPC<g)9RFRL1N$)%@U-k_hxCLUkE%-!(p9TgA7l^F?GcR5$b^AE!Go1o7Z
zm at y0J70+xjnF*TFbq$m`fq#Am at 5FVdaCMx!tM}K9<x1xQ-bMU%XK{6myKD5<E#vA~
zch^k(u*H;V<(I%+Q=<O5=Bg`e=Zs#UJKtZo_^8AY*D_Jub^Ghy|Naku_|i*f-~>5k
zn!nDKTTGC(Dbri}=VYeL^PTUxI=c-g?YeQag5%?ctyAWz8gI;$MS-fw&)nU^%hL2`
zvRVlHHXyS%Jwa}g4~ujg&wL4>9VK#VCZ4b6d4L0PM-|)*XD<Xtk@$|ESm&jl(8t*c
z<S{|zAP3!+?crg`h1_-D$oluYDw;|4+s_l&e?7)kz|Hb}o1O>fEH^}Qj%>v8N2^MI
z1I_}9Cwtuk)u!rQ6ULlyp7wJX!)46QY~O~6*DHCgpBdb at A?o$k8!sj9wQAoMV!Bx_
zZ`atqEx2k8!U(tYul!XH1!#S1{#hPa^={+X63|)KVj%lfZDoJ9e at J=(oywjC=0_m{
ze%npc`AJN{bfp&Y1*g!&k*RwH`ePDDwY(7RYqWh+`tjUd8gV at L=~{o~);hkj);OWK
zR;i${<6dF1-5Wl~)_ps0+i9PQ-)CUn{}5OlApk&Kg~Ev)Y?R-$k+ggx(dz6VO<!P#
zn_a;M`<mZ0;BR<Mudtu_$&%0dY&9Qn=h0)~uIq96-0imO?!DgH3+no?=x^Ja{1t9a
zKpB}dGWR1 at 5Ggwa@hQ(N8bni2oqPrdh#3F2vdz~@?Nf?Q>Ghg#cWSexJ8<h9byngN
zaXvw;Kk{tz4B1O?3F4<aI^kz&W+VMMn`X|T>u1xSbL#r!^6^OWSMln8S(AQ6jTQb<
za4qwo+`ITQc*R~D&o%s5GZ(^^t`oX_NgdX?5gH2UaR%={8p2z2x8HVOau21n0=gI(
z?23$*3007}kXvN^UQ^&8ZZYtK87m)ZvM at xEYxsh_HL3234#)pg6o4^Xa<2R^T#oaP
zuW_z^B`>WVURsHX5nsaN`EsavF4l&O!_Mr^Ti(0TWTf(#|0G4*p+8!vc-8!_-CKC3
z{=>C0S95}{&W*IE&V-D#dSjxvyZR9Xq97spExq)O1}t2i_siz3FvjpAbewE^EO8;Q
zan8kDOpl~msplBnimB(yNb+IQPB!{mCq}3R!}W<kY;hyc5P$DWtm6w at ELB-%aRh)j
z<C?om-aFs+&Ce0*kX?Jbavh_ln=j+-)M37iOw*q2h2u;7OtC+^6WvtW$iJvMwaE47
z6t(P)S$t4`@CPmLPi0po(v{uGJBu at fD>izg-OX?0tk{ngxq^|xJj0I0QTT!@rBDF!
z?qn?xjvzCEf85A!cqotM_=4|;cI1BM0rM19MFECkrHopMkGJBT*^DA9|9&W!`wl6@
z;*G=j5{|~N?^iX2e+kx8EPGL-K<RId1`~wOdZwHFLKiVXm>=y&1R<Qz)bk>OA>8Ch
z{?|M$cNz@*%$&>laC-7{E!~a;ljlxuCk`=5X_gQ`eJ1&TmPF=VHUFx_xJbA149$)t
z`L|^5!o`ZVjudnDQi?CWYQd*ZjVxsP^m0BqjCiSRGqcO0uv>xoGp?Q;xnfE at HgVFl
zX;+-zIi+*j6&FlxpW1mvJk}MP8iYO8_F3_#^$77M_5}3%x~M<?I^Rowg(9HPJNS3L
zaOqQ#)EVIR(cYMgz@^J0i8g1G*bVkx5G`|$9!oOR3@)vMHRcq(a(~sCv8wAnrI4bE
zcHaRKXD15o{r=X;5p at Kp0{6)*jESZf`X<d?832891mxx4oI3f=rd6E%Vnu6!1s6mM
z>5u`FNXi~-JZ?9V5dtHs*bOj0*jm#dnVdP*u|FPgBmOdv=6DNhNJO;|jO2e5k=_`x
z&7I4LL5VDkjICCF!vF>U<d2=ic(u7`ygU6*Xt>@@%c(3iq2WkB_o)NqF9YezBH3Qf
ziNd!eS^y*pJUSX|;HY(p5>e8I6}CEfWuDfMNxT`1dQvohz3uU#kfXfz#7BZs<qt)J
z|C}yW-76^h85gHmfbz+uwl=hoRSCy0z7hOP+K0Yd{KVVvJ2d>39)y2$NqR@%4{*??
zB7~tsH?rFe8V<5tAe(UDGCy_*=`~@z;x)w^qF$4nB5axVGhe*Ev?0p>vl_Y$UoQt=
z=e#w1y^DHC6W8nz_B5exVzLmk6w27^%~1%{UFuM`wEs}7TiRL}VVqt{_^VoyKPaO2
zokP+4>jA$(qS at wyFg#X{;YC)kyhDl8i<n;O<q%9))kUHpT)(4ot{9Q=lMdfkKHsMy
zW*0(>uB)ve8%vqCTqkGodD_pWV6Su?hYDpv at -yR{Y0q`F%z-((;N3{M2y<IkONBOn
z5s at 3Q;|L-b@<KD&tvR*noK7NWsO|<=`qGAOo6hMK(}@YVksp5Fi2OW2JxpiRP3Jf+
z>y8vF-qEnM%<{-Mij|vf%u4B3)X#S`OxJu8U1wQCciDWZn&kIYO|#yANADx0_l3W6
z^a`Ly{oM7H6w9}f8~w+^!<lDUIDydC!?45Vs<NMD(_HHO!P6YIPeYRSPi515;R3Ri
zkOpw}tcY^+k!o+wY%<ufe<GP#v~b>M7c87l61d3xg|lXBbDTJ|&@A at haK9#lnzG+T
zmL#t{t&{{MGIL>aK_b{$hkS3%EvE6rLUIU17A~5-fSbziEB54I|4Kd2aLerGARPOq
zybI&@zc-|N1q^KTQf<27d}C41b|l^@zJGkPm;RWZ%VenyeVoPGFyxFFE+T$h5`_X`
zc~;s5c~jFcFsZrvAVMR|6oH_`@PwueGs6f%!N$1B-|&hy#-D{7<GpG!Rj4*%lV~tP
z^9fCO*%Dq_A~NCrX!PYlp~z7BLXOd3`~1FPP#HR|sh}@I at bP@nmx^{1*A}s_tTV-(
zQ@|Ro01=4Fw$>uSsjNGBdss^HsR~pjMS%Oh)Ie~~=BPDHgI at 22>Ut?=jqnBQ0rPOr
zt{B#do8{^}yQ86JcRV|r9pbWj=Q|$oWyQE`ahN-J^0K&Wa`b*&AB4W+jr5?*cf3k1
zkX3c4o4EMBz)$?^g?p`?Vddqo(|@|!O3PSc{vt6&_-!sflbUtfm1hilN9gWSj4bD+
zWxp4U0%8;t&?x#<S2zj?b#WBsAZfC8itu0|{weSPv4 at 98l#Y14A7vi%3rch`fYVKd
zZ&kqQ?fDI-uM|1(zuWwV{Psa4-%)J~EC<0xmLV!!)8O3FINS8$zQz+1#JtTPR?_qT
zaQ=`jnX~ETmEuKX=sCeMJ)-T!Q{^0Q$<NK=Ji=4RBLd-1u_;plqML;cOd)JD=iu#j
zz=WlTC7dM=AJ^wO-XoVbOcRR;k%pTz=I~Xj;Y&DLou0ih<G8`&$s2R6P6%*nI!JqC
zZh+Ht2WxFX)7;5A;LuO7 at 2Oq_4V|qQ(5T+Yzwpg6mxJ`9bXJJj7XE?C?au4nqA?fG
z3c>yoY}5}8-Kddpnp`00<v$PE=L=tT at 7+0J$Ufdxq at RK%;{&pA+TFBYB>(~&JqDhQ
z0em?@Ir!#RBQh$opTlmp0rMHMl at C@9Gx=n=ciUO6wD*@bXL?~D!=k}4ziE3`v2<^x
ze5L*C%IDY7t_w8!@iHb7uVJ3I^b<LvtL+)56Y0u4jh9?3x1hSK=?^jQhY$NRAM~pq
zG{z&A`eU8<g;!A at bmeZSD<G34;-g|qR(oIg7fc`|WJQ*|&u at CvuMUI}<Xr3Q8yCkv
z^%EGE&Bv#A?cshV-`=`qS--dTLM%Hv545*Fy!_ZcWkuV7juE?^-PJr=_5u+Jh$7d-
z$H`6j874l$#~%MKJ`l at IIncV(%QeudeK-()*t&Dsiv*9X?mN1x?bYN@;#p8}38Ckn
zZ3**XNz;z5Z@}?VxpYGhz1Hf3aYzTD063bJoo5lQXGc1><NKsJAhPP8$+jhsKLG+F
zz!4b^50rg3oM57}NBo_HQk>8nZT;}F$9bI06M-smShThAh7TK$l0`1owj+5${-0^x
z;WMT?3JQ|`Tb at vG#f#C_xz)>dx8EbMdTS*X%{*sDr$oLy+<#~negF?G?P#63C~=N|
z#0EhN5&T0-{gr=|-qq`!D8?}BX1VN~_gN;;U%6R0;j9UU#Cv^dhgJ2yZ2+aLw%@Zl
z3U|&~h4t1J6b)B;cU>?Y-fM1V0N5R8&}`3a#-ywFY- at K?B+lESDvrhOAg-LG98jVF
zb at UFD9FpRC>Hk?1;EyYmMMTUtPw-34OceDH&Ik%wC6n9)6iUHniTrS&yRlrIfaoo#
zJWf(uOGtb=6>FKINI;<Bs_=0^?qm4+^NCW>!*9^;t#+eII9yDRE5hr|R+bp43Y?t1
z#|pR_;W)<#z^nMa$W*R(tH9xZJbMmcSb`tKHU*23WN>g4(!s;D0eqnm9$!HYr?Z}-
zas1Ec;)XGbD0*_6;Jkb~@g1&>bY<+s2HFzGqcAa+y?A#_fg8rs5I41UBQr2=8trB!
zH+~AyL{BVtQ;#~=#;2$+R7l<~3;Vm;uG^OUt~_HG#<DB={jB2D{nmg0p}C~kNJpuW
z<kt;PV^Zp!?ga1J#bl8jw4D44>WWZ(#Q5b>p<c1Ift+2#A;PPl3nQfnmWztui?=0^
zv-Td2SRKH1$Fo=aU5a}13a%d=OyO~bW8FCp)0Ud9winUP at CK^TH3CQA3#&RbW!KNO
zkzl_1)BHWW*11vet(D77`g3%Kj_#@$#%y~SKvRO55SqRJ3gWvl36zX=MI?U`1;X)A
zWv}$4T?8V0f7x at uKy%3l^6%iGwXQ}B897+B;;<HtXYLdI6gH&xk4P-!|B)o>gPtaj
zG;HV^zo0fTwkz|K{C(8#9<?o~_0oS-KT-pcF76T&?TVtwht1c^;`aPCAIOu}=G94x
z&9SSuzsu|VP5yJ`^(EJrzMFB#@4R#;?+RaP{~;4z1wBrFEdMpRzL)I+-{*~~dCK>I
z&OV&ow&1Jxyz`Z3A6Q=62evL-U)l#AJ$N5 at blD3XeQkvw3QMN@nVJSmpIz#(l7kID
zP%nKe at ACg!L(LEbG}sip-tXa3pMO$*^}Uz!e_v-+eyZI`2%tMhz=jacWJf?EhCV+v
zcn*1SR}xDMUp8 at qJrDVZ`@@SL9dv#lYOfY6+m96D;`PtFi8Bs5>&lvKb7;+mkHB!&
zY&}e$&gW4T{z_q|t at mNi=VkG+Uh!9&PvUU=#bea>R{4utYKP-5x?rge&0oaY_WbGm
z1s^9j!7U8KU))7s4(2cVjutY#DgMIfARLGB4;Yv2^qVjh*<Q&%V1Oh3;hK<tz>wf4
z!|)Fq6U)RFTvuWUsBj2FaPvc&LwJIvUOFYM_z~M2Uy!yJMb_ZcV7hiLO;8zYFplxU
z8VE@%Sp)Ioxpc#7UfBK??VH!|aX)uYiC at w_s(n!G0oxo=rXu30R28K6>W~qLXTNL3
z;@R69ZsV1`w{5$Vt&kwW*;CoKQQwoD#hScR-)ClN%U2jHI?>M)-M|i|Eg+J%b8$2J
zi=|%myqngs>2rl2<KJ;bd`qu)fw&%M2x at 48(oj+x{37^?i32qe-niIG+U at nyoE{iM
zw6yK3BUXU~O}6d#TP;OlQveLws4o^-U0x)for$N_Ijym_A9?8$p`vnVUZgk`=up at b
z+`iVOeTuzUfxp=KV&3G3;W!hcp<xCr@`Zl at Z{zjU+#{Z%ZLgQ>S2OFG(-r(Xz at r;#
z*_yxjk33d&jaD7|YGr-SvWNOkB0y<SA0{4qmnSOgs_E at tF~eb<;NL^7F#=YnKP%NY
zNTde at xh-ztc_m^j(W^3katIb`=guc7to=Eb+8m9y&1z`%dS8ZQm$8_OfRIC^fWiD9
z#y1&*3FGhynm2?9)WAg^5H at 3n5K%HvFP#7Zbka2{;*H at f>~OQhW^(SOu(!6O;p1X1
zr#og*m($wW7C3~xF}t}hU^kJeFEhA<VdeN4;;h5_Ay}tvO1v>^=S|}s+pVogH<+ve
zrM at e(rK{<WU`cGlA7M8K57UzR!b=7=w at hOjo*os~iqeAALhPz08ZFDCFurIH5pa`P
z-ogy|##+ASZsyvJ^j)#ko}R9 at Jzn~qkQ=zl+9dI*3Fc&MqFH@}TqP+)DZfg?13HIZ
zC4 at w3_0kIZXY0cuUj9Zy6X;M^?mY2TiBF3Wb0NZ6JnnEI7AFG#dQP#w@}1yju6z-D
zyICB3K0V-LS4<!NbFcSg3Wn#quFL~@X{(C&x$~lG|5 at 6P4qrjyel;l&^~$w`f^hif
zO)snxp6iP5y<REp3*R9B_S(by997F-LhvC&96!e)r^Ow+LzM9ep$pg`gs!wpiV at 7a
z2qa5UL at NJoYANHL6Q|jDODr<{acN1(2j^CG(y`OY#|-HCV_BL3pY2W+iQ@%R1LLbq
z1*3 at O_q)Nt at t+sTU*m3~_C{V;^fy0^G0MgV3e+EO8Wbw}GI_n4|3 at ZH<p1jA(edmZ
z4h7p5)+Vm%;<LwSq5Nsc at ot5JEv!wB7v_QlY!mVuDxq4)=<-%alfUF;p|bidY~8Ms
zuaqje>d=+IEf3~nyf3l6XXOtcET?Z}{O|Vw|LgL<KO(-&pT_@|daHQbhaB?XiKIRR
z^ouNS{sP+cgKgJ`nAPP!%X_c4pGYs_cGvOi^<KnG>F!*94Fv-V1uY7$hH?w(A23>b
zXZUpxJCS^9_z#o!AL9AH+4GPmJ~Oy5l}LC!kKTm^jtDQvX8^5rm9nXK2i2Ez;g8YP
zGCpUr1{p}@RLf9#*&5BGCFZG=mx)lmRep9GGOB~+W#l0HPvB?w3 at a~tYy2!+Ovub3
z6FaUw6A0F{?V^b=!4CVbw%m<0XZ)Z<M9_TpPbl^h*kJ<i{nl@~560$(Q-b}*Cyd|D
z1Myr<Tl*PR-WNz)Tje+HkICZ!>sblieu+VDqP7)jql9Kqu~w)YQag$6XaMEqYhL=#
zA^06|rzj+~jnYNzFeFdb at frEelDVDU+BwzycP1+}KpJBq+%>!_^s3p7<5b20kr{w>
zC>F*Y)*YVqFq+`19XS=x$+6Yhy2txshVFH?KJVS!WBsHH1K37YONMt`$g<1Zq_!x?
zb9{TWbqRd?zr7CMzCv^rIxj>l!{^)RAbh*f_8`8!y>;t~BidUxdk82+<_AUuB9;Pm
zL5l<`v7AE~t~vupAN`g{Z-P;UgE+2$G?Z~%fk+QE6pqF4LdI=5$g(%rJE7iYO;>YA
zNvQXXn5<|Z)N6emE-N at 3+$k=Ld0!OI-P6#+sEt*7MmwYsK{0L at N$kIrSB^x<JaiEP
zQ&?@02)Ht1 at dKfr*zmRkj;mL7MOGHUaf!QvcaKPz7t8#JL<*!;iEVf_;I4k{eIWzF
z#y0#KzlFHCs$~t+gmK+n)xR&a8h?v at X{_y0Bv~|oQ7QZsHw%nExd>)~n{VhQ^&<Qf
z()dTY>1w;d_^AWpr at +_!^xJ^R?$(>4fX<h|VS21>i+ax$cv|YclclX-`{D?OENv#T
zwCBC_5*~C2bqgNx8&jK+qmf?hGVOB0Q3=wHYv at 3b52IksAxL{H-^zQnr<J{!ZH6>V
z`6>K{>-W%nzQQ%;JMDAvKa<(I4~T!eA;NgHvAN)#mg)uWt*Z!~?G99MZ~ML8C&5=f
zhI`W#0m2&??7^RVz2B!`$^W{Gr0<XMq{P2XhJQOC{tcn)Fcl<zO#3z=y$ktH?Wozp
zmxA*d*ODxU{2PTeuZd&BUiY5rIvOo}O+(ap^T%oF(H=KZrK|u&2zaF9TgVa3G>!=A
z9~=?VzgZ2_y2j6`P0WZP{d*S`x<_quYQ6MtG<r$@D3JV^@U31)+_d688=8<TEzGpW
zJ8?pf@~Ti)?R~}Xzh3(OUk~+tTp~jW(@IRx8Tp+OnZeJN%l|gfvqSMe3Qe8<Dj)r6
z{7<QyM;@x1UV5*%pI;fYSbCODs>BDqhqe!*oyqBj;9l>I at O0vTKF6=uD~4ZpQKNf9
z=xwqj at pFhPlHv}i2i2c&r%aOr4Xviq?Dm+Do%vRHu||AN(85rfpIq~L{L7%`VHo~J
zV|}aq%Xe#s<6l<&r^w^JMPJ^eJkF-oIqE!7)b_C at P=m;36!=&|&!S|igH0pa(YLH&
ziu+WIfRjm?96?mCg+UWiWvf$py)}O3Ycx9yKf{vX1w73cZ{^oS>*mQIIvlN3_Jusc
z)$j<9Y6FyPPkaRjLMPpW{?}qzr+uOK&jQTVV9Gd!D;PhVf)J#PQ?PZc5q?HrLD$dX
zH=wg at oX7b&ceJ#<&}YwG&G%xkIE-Rgt`n)A7~snILmlC)B)@CI_a^LfjAA_7fUpnB
z)e{K&`Y9xqZMv%U)#?s=BFSHH>Xk5M8xQs8r~ZhrPizKP2>ZUFD;T!kHt|D1gRkze
z(&}>$U!dw9sA=Tgtxk-HxKEWC=gM%VmBcRnJa$!t;y&w2$@VA!0<ECQ4J3jlBP<n}
z1cN%0GzQ3$G$2gYHhbyEso3DnlJ2oamdr)vjx#T=CLCP7wN-Fk_39FovejTZM8~Oq
zO|RfkA2kluC7u%6c1UL^29>HJ<qztFSdsSD2UeWb%HFW7EkHR39zlGS`XupQ0y-;t
zW)H$a1!3trSP1Zyhquzx<@dlsnCPzA>-~@rr=%U0oWbdaGh1LHzJyu=7K*snC8=G+
zjj+f=#<Qn`6sYMgU`!PPJEzo(=jNgpHWqR^aFe)hN*tU)mirvjtIN6VeT2r(9{xIv
zWYC7KBcKTjjOfqRP=R3q*10|o!5T~*XhdIjziGUA3k;<)vX?QG_t+8&mz3B_GWszO
z0srBpA7bJ{9wa>(BEXH~D?h87kgt5d$?0B)uT(rB+poZE at s(JqxYa)lYq=gADPt|M
zXZRPMxPFCv<=1&q##aW?Cx;c_#G`r1kxTrV4<GryZTa`XGg>|3pWZCLczQ5u;}@lN
z7321X{Gu3!Qu|%-i&aMc(g0L at -<#(bzd}uK#4iGh&ME|cA}9HaZInG~$B_x4p(0%c
zQL00t=R|){k&q&S>LH6Ka>)$!Q%8PuslEU&B)7W=xg8Aj^T1i7u_$Im*7P4;pN%!m
zpUA*DMHT*TI2QG)N}=8DhLBybr10`^srOU8)H-YEh at N_BMF2NOle;8QBtu5^8<ac*
zqxyMXNn}^5Cb6|x1(8+5Dij at a*eZ-yjq<j{tDc#E8WC8?|CjTt_XzHCOFWdm`i_5x
zye?2V=Vww!xNP(P2DD3~xD9 at F*im at t<zi*;RcYo{<fm*C{~K<NB6+>%F=1j<rwC(v
zmj@!fB)<oJmz)z&u_5&(&ppKRj|I;`Np}UCJH7bKF}4S_l5izT>*=5pNta<P<Z_P<
zFIF23F4iB4 at rL$xbvffJAD+=c1^GF^fE~eV$o~&+!WV6&>%!mYVKE>0S+Y~-ya~4v
zv$(^#x%fyFmNb<2fBgC?iDXinYF+2r3X7k!v^;EX7CDe)yCd_=iS6s5zWmA=ORk!E
zg>%?EBQkU00xpv?EvVd_#S7<079{7*i(IuNvS48%a_x+HSItrd{Iy?<$n4R$+aQZ!
zrB*&a$YMfD0xt$<XpC4qH%pAg0~IEHyD28;BvTZ~U=+q9>iW&*{um7eQj%aW+0)c0
z$%OZ5ubo4V8F8I{_MLj{H9=Rn)vwFe(YZTLIuok~M(j at B=`Y~frq)cC)Mc(c$}Zm>
zuMRvGa%|<IaMqTJEVUwZZ8~<QjdADlAnIl{)6q2)D2a2}-L)(C=qvto-RCatS{#c0
z^!zq=Y1gZRYd3rj-BHPzU_KlRsR4wgnS5XC()i4EJVi^NJOaM}ulF&*gV at i+uXqJ^
zbAoPDuMj=q{knoZZuHh3(|4=mGc#W`LaabE12y#sXD*f4>AR*>4%(|#?O_rU=zT5u
zu!0_j!glOwkAr@`j|Oy!YneIlz(}@+zWV#p7C-+mulEv4(f!sSFosxN4ZsaG1aS!4
zVnYbYfNF5txm#<Gj at VveQ;$h`*=&ZB9+YQI(r6h)>Jlh8R`4U&v0^YylNbHmO9%R(
z!nirBq}rmdu9IadE(5yT=j=eSO<-b$F(W?<n$;kohAL?hfQ>&0nBi`)?aA!K`qZxP
zrM5*g6YKLohIj^i%yc{{%iq`P{Xd7qwQ?vos$IAGtl7IE9tZMYr*MEguIE9QIG_&!
zq=Vs6)WR&sYo at apnS{9p;2~fPr`t$mc`p)<_=S}5<nW?By!b?Tu_n04UqLTJ+&HK{
z9QOl+%gd26|8f4iDu|aUCpf&z11C6VpIi*TQ0r&Et`HpY?6>OqiB<nXZZ~mn{dm%F
z5~G`3_JtFjT&(3m?>k#~;jP*zaX2q~A569cTuMjv?##wTA0W?X@=@%-Yco3>k|<sY
zw=EA|lG)*+ScN9kFuzp>V+~NzP_sAPW*~h<`oniieK^16L8N6~`b#`_-{U~d+<iwq
z_RGSE1akfmJnL(%q9?5SAi$8KZ)I=M7&(ab+nXP7!y!4dgLqzVuHHI6D10-NhbqOX
z>jc4%)FrDmG%zo$o-uDha(>l}d5h-GsJe3Aj0IO$&0LUJJg;ijRiC~pQT6G?GZxLQ
znz!(}*^8?d;q;%VT9jNcGf}l<5w8AK$wiBJzSI?^)v`Z>my4%i(}*KjfX+e2(`gnw
z0a|xr*~Y;J*y4sQBh{kdBT#_MW;Wsya%o?Qpv-87yhyzQDQ{HULh(8h%qCCG%P&Fa
z+sS>WMzl5~LIo|I#)$(Rk!sGCm!fP)|4)5IJKp+_x|1r0-CdKtwRe0_K8&5|7m`?R
z6K5niC}z*bDDCCsm5N?Fu`g|fKr=~2IlIwH7i7iaf?;2c*R2%Qsn3GuT6cBr>ok`l
z%A640H0T>sPrG<v4}ipu-zN&DLjUeLu(R+bcTQKFb2pIv)ro1?XCCIIzp3u0_8*?C
zTiL2<K#oHbD&O*RYqHpiUq&YDjgQzoZ3vC*p|Yx;)>+A80~)S+veRk{-vjTE2c!nC
zOGbiM1RFcCD)Ho;m!h>*BNIQnyQ&79%TX>hxFneh3Kf1@;$K#_3ej99M_n(PODr+k
zTiGh4^U{BB*FrrneTQ8OtGx7DyA~RH>BsC^$mpe?v}>WHmww(|gP2}=pIr+*y|hG7
zD_e!6oI0SKJxgmAI{|*s!Tg^yH9Vc~_0H8KIR?SZYI!=t>%F|}=@G8%)n4z^vZudu
z_09|I&4U_bZ$S+S5-F6G-OAHBE0 at +>#q&$K4%_>VD?QiieQ#OmzjjaQvBdUa*_3-q
z4LVqcPv;k(>dY8Ez1Tfv^!vC9pSJ5-=r{~+Bt9_A!(_o8hO~ZDNW_73>Ce60+kO$D
zSPpL|p4T5j?@uK)NcE58)K=@=^fkU%SId9*M)^-sfr17Vyr&b<<j?$_&&6}dMRE;~
zqkvlSXYtJMgopQv`E_M8)U~M=A};>-`1aJ(XT>u~Z1Qe2{y1}CJvCV(%Rw$+s5=_C
zP+*`=HvB#nIy+aho2=qd9yNz-Lg;6no3MqRRpqAxNH?gh)+{MEmY`fY)3|WXg0AC*
z-S#qoP0&9_(jhDCTV&bEoo+SSOKrmpGaUDD->LPgs+ltuh$Wx7cs7w)2)Huqj5B7<
zz9u<4h?f#c%*Abc{*0wpEV=4)vm2YtpQo74pp^fcl&=>kiW*{gpYQ=tkSWdn*eRs>
zc^aM1$XF90aP$6#mq~T;DiYlL{M3U7{0&bY?pN=?dpqKfy|_*xs<<UhgO~n2E6PH%
z?eZ0;N?ABx_L~$~g{n5hQiMRhylkeRoH0l;1u+!P)FB6_6BEf;v9VTx)9%xM{r+K^
z5 at M&}JvOP?9x0F-H&JcM;rz5;VR1>~xobw8ldJg{0kOOr<^OGpKuI%wtYHZybyio~
zF7HOmW4__p8aE@^C5?*7li4Lz*UsHtxzn*>BI;VMyVl3_Jw?i_FBGUEJht(YKI3Rx
zHgoX|_C7OfC2Gq|sy{E+FwS+HyNINuqyYs7SJ_xJEDHM?4EYh~kqu;0YyK$~UXi}X
zn_lvF?g7)WEtm>~ntmH=+qa}ieYxTKupcy5_)9+NV7=7SzxI2?kK|<+MuL!W0Fu&m
zI6B!dDQ#Hm^<FF at ppH%%)WdVQjcs`T6N!&nIjhg>J;4=<We(4e<}%<Hyxw=0o-01I
zgJ2maN)PxG=C)s~!<u4d?IWhM3l_if`BuXb`1p8kUIW`sF<L;{5?Z=b;UczdU-fXh
z66Z?dRE~;zpu6d%^Ba#BSvfA2+J*LbodkQh)9<R_cXjZ4C%+CJxyj68Ap7Sl%r4wf
z%i@?Q6YXWS5>HYpwMFCyGT}<c?hOOE73a%uyQ85;Eu_B$w))wx8vn1SYwYQ~!}OFY
zQZG<dsnOQ1?1xC`LXfAYYGNZfI^b%FtYP6LieEG{k{W-c*W|PSUei}i8s|0L-muH+
zTuPnz4mzP)$|XxZk_R_iIWF#S1p&fdeb97=B_EYlebj^rUenE%z0^y;0OI&<177-e
zHfp|fSxt%L!Sy}%l{_}(r>PHFc>UzG<svrL6e|`nfnan`gb@>Nm8wJ$6I}AtBgrVO
z7HGK}KQjyp><(*U<XXY`=pxqt<a&Snxse-=mmA>+(TDlj($f{s$-wv+Kl75Gd8F__
z$iHS at i?_X)I9%T?KS{ENsJK5UIs6c;v{=4In{KLOe)|E0pSip-*L^@9fuFyW*-8zL
zLXL0KX2N6~QZ3)CPQ=?(o=r7zgP1Ei-=8>}KCdEQ0sY0*YWyPW?}O^^j`FAK?{@VU
zYmaSZ{T(C$h5EZFviy{TFzzctlT4B(g>eo|3_juXdc9vlYN+pasb|ufuhauhsyld4
z3M5fP$lis#UnQ%BX|kZ{?jl0k>3JD;8~-*U=O2JBd!JYA0fR)23$hIv(8$JT`7&PM
zSu7hx_j5F9!NJxiYy6R)<eW={$<)gS66?$YX(z}-2)wRLzTg$-XHYPE7Xjpe*HYl+
zM^-!+%WUv7dwG$3wyQ0lsEv(}MY_B=CJpV4er95AHtf|+rs~U1B(B3Cia)tONxt9v
zLh|UsN7R2dFz!@8k^Ztt>hGj}os%*@R<UQ}I9(70b4n!U#sA3m22wB~R47=KkFi%$
z<<feVMb&2+Pb_;btN{ibdkV+se5Dv`8-y#&wh(kOHC<$AyW%OEj&Iq^mkPfM at H$9R
z3=ZKmX>;fB$V;C>$x^-Bz4R#i^gctRZtC?7y;LuazF>57Yq8$6%OorexE(31FhC4#
z83u%_t at lg3M-rd^CBNakpe54iMWH2-(#cPMqL`}2N5rOcrgV_Ic&@c~q8_TCJ}S}<
zKCl991BuTV<q)kgDP4(lI2Uhk48hOSuG+1WBNU^V$&GquXJHNHYp4c_^v60Umv7oo
z3DKbZ^(ujU=Bq9(Gv~e5Q1)W9DL<D2tJtC;*L$2yG}|+1Lt=H?jQiQE2XRiKfD_Yb
zrL9qKa=peQuH53v2ipNlhbG)&%*Syi6CR)<3}LrRBjHbQwEDSLm$e`bC6s10p1a*W
z$StY+0rSkvKYL&YME?2+TY%T(l1}GOwd$h)#^}U5L?^u5Oont2typbi3TQ=nA7gF6
zyZ21NshEFK=+RHB*1!C at GBR<LlNQdUg`=p<sAnt(MngQC1LD~nK#bMmXQwsVI)5*P
zSr at h7RAG$cKZGCewKX9dLvR;1dwf at 9#j{%dkg^vGPqS3x1pJ2dbw!rH-;rv%U9Z-F
zFH6j*budMlEx+?_=xh{=^op1&WQXk5982JrSimD;nZmQdrJ~C}Pn?9#uHN+)*Xisf
zb?ckM0rQ&Jr{Ed+e98raE-tP((3P9Tmy|J+e)jUlym%m}S$>wmpT_;1+Y+pqkS2#r
z1m~!i5L;cL+0MLR$3*L~J`yejkPHy%i<$$LC~QaRuob-fTk6q*{fy3H@&k8Atcpo2
z{|w!3Q2CG{CeE<u!8xL^{va46p9n=+SdFj%+^TYwm6;w(gYkv1mU?%wB|ii31P}Aq
zajn{SsT!^1OL<_#$kg57x;ZTJ*8cQa`^A}^vCK<Od*ECNQ_lmAi+y(#xdOa-*l+p+
zTZ&E)iYi(SZx5sL*peynrcM6N0&LUB^!BrJHLnl|_%R(E{E;V#XK(wRm#Sq(9rJ#!
zu8P9!k@;`X2Zy)uHUdcx`rf2Xu%jbK;EcinbprALN}QdWpnb0jAryX1g?OgME$?`?
zrU5bi=vZbzyj0_GT`~U3=Kv9}{$245 at f|7)yP*P{7AD|gTy~1+%A8JsQS4mt#S?>7
z?;j>o6hpAz=vNo?C}OXq2*|C{J9i>tnUEY}-Uh;bidv;AqQ8q?<(7?g=Yh+@^8ob}
z{x*~+#WuX~iNrf>-fiCst}xNLz$TW%!pOkEq(?CEdOuZqE|1jW`M~+}+u?#1@*m?J
z<!!#*5rBxDspl~}{Z0?Pk7vK7?WXJ)U@|^Gdy{Pm?p#4A<^UtH-sX5*ZoU0?RE~`k
z+NeMHxp at r{8E at x~QWqUb!L)>P7i^V-)CPfTn+_3>Z%&a-NC{ot*;~{RgQlM$3i92}
zy5-pEXO3$SR6}yZ7b0p$1v{;ou<Q_bSdyV7r!WISl4gtbRrV at 0%X<^mB#ySO1xu`O
ze~3Gb<!yM5t@&UhfGC<d{`=v1VSqRa3NAb#SjF at 3%(n<n$wV+bo~9h0f=}QZQc#Jl
zWzSTObld(<q8fo5g=&UoZ-|(O#3<p at g~rgh#UmKF;lIgoYb8YtY7Cxy6vY+yUtsXT
zdOF1X9|{1579u%i`UQxADD;1|(K~wb_V`P<U$*}L-<kinu>Ku}+oHE^*Wji9wm}B}
z|4;60|9l(Y{~yQq;rIKu*ZVO1_<x7>UW!01OAV>KQ2C(kYBc?n6kMqt$kC4L;U5B|
zDW(b2J4*^sjlsbbG+tBCc!iI4_&>PN{T-%^qv<|42}&UtdD0(CjI~!xIfjT59T-L+
z*Zz-tbz%#c`h{I3?Uy%(6Q6XD68lwZ!5$P<MGIzUy&+mKDUPBNT5M{0u;c+K54ysa
z%dLal{_bbbi`uYqpCo|Bj>LPAJ{^uIpQI_#-6m?!kR~QGr5Sq{GZbVr;h&v1hQ!mU
zXDnq0w=_;3*m#YS$3>Kk^{HLeu!6*2(SNW-oav;|PYoWI_+)DEonBhSQ-jBl50(pA
z$&B{Wvm^pVjG%XACJFD8K4Il%wHO-Z42cI9+OWu+<zPD&`94Jr?vkObq8lZ1w!6jH
zOU|j@`CA7#u;LsLr_)&{jtRb-I-gVYcg+~jO-VLoUrH7po)#Cf{e at CPr+Q*9Bv_`4
z*W!=tCVa{x6WvMDEO+vrot>%K@(KB7j#JTpKX-?<8T6t!j?Cl8H|=52SvL;Xe+_3H
z!*L&R)334NM{=iral3FGR%h)^?zr=dGJWLl_F4WC>sp#G_~wxP8>U|Yh=azhU-9hi
z4Xdfgo*kmY2LH^K;IpiNdrs~+Fw6zxQD-$KKUd=v5WyHmUeroJI`k3kXnoxL_?gcj
zJHkjd6OQ<fGU=ymB;vX6NF*1}eaoHSNZ(@;NY{Aia-B^@g&S?D>HHw~M<0;7Titwj
z;(fzl>GixX<=Y&tLe at ezm}g3%j-o`tAY?7avv$4SQdMN0Fg!!dBr$}!3rh~M)b;T;
zt*N at KB?e0kzAMqHV at N%HBW-y at goSmKm%f?1Vfy*dNcxG_yPJ(+`sr#_J=MipQ-kkL
z{?jmJ!@dU7MgT}_- at naoVlmJqS6TjQuxXgjEszcNQl0}W)Zh$y*V5lYU`^zr at -q5(
zJXiuZL?tj~ruHaYlr at Mv@Y)dB6(pu#BL*8{Bc~u!M*NofZbOfrwasg&OZH=z6hU@%
z?g+tU9^y6BJbfQAix-EcK}(%2zqabd5x4B4K_;OEokyrZ4Ayvnk$Ns{((kU|cQ3yV
zB)PyjNz)}_NWXMOL^;)!|0k7}{@%|tLWx1xK!OSh?BN~JOj={9&BWaj&V%Hcc_Y{<
zoFkhGtB~Rm)h8AhY)Vq$@<oQ at xmJ-dH<+fIO?#rA&>ckfL9 at 9}l9!9r+4Gq!)fZvt
z_C;QbIQ2$F)u?|pIiRvmYoW#6&$AHN*wKxsjS;KtT#+1ouc;Z-SJ{6vnwg!9JK6&Y
zLbhLwN_-FFb~Ul{Izm(})ku_}2m}4qY)_c;Je%Aec1FgzivkkndUq!>cRWZ21AWhz
zv{@GG%AHzgrBGQ6Qfp@|I*vgB&w7;mOVjz}zV9|z+7s2#2R`a9O=H+OZw#Ndy^7D7
zLB~b{UgXCGz+&gQr$nmD;qRw at 0yrH>)~?b|t=6R?Nxu5wW>cs_eEq9$ZRnvub8IBw
z4(3=|(R>XJ6=A?URBV!oxYg*E7^~*Pu7Tnn!IS*Aq$nKvVRCCJPhBW##D~RMDbWx6
z8?yhWo^Nz1&)C@&^7Z at lOn)OS1Df*}Z`<aj&t{>KK{l2-fW;SS&$^m^A5%2UU)uak
z0JJjb#*gpDTl7Q@>o#@7rB<_kR+)|V^v9|<``Hn(kif-|#7p2>XVPxggO33dbv+Po
zLN$c3GgGAM*5M_szZGT;^fx>TU}7PP;I!O#)I_udb)<UGgzj;o;9||wkB at 069|vy`
zpOaWGr5tlgW=Fof%wkr{hU8OzDqkNbWZs7SNEnR=tg<?b2l{8~27|zgO2Hq<zE`~=
z&<lTrD$iG)5$cSPe{YwcT|DTGA#tB_ at wIJB{yd(W5g|()aT4`8)=Bx2emZMbB79H2
z1J#k~=KBlyej4Ay#<dlaKaW-aNHL(iSoXR)Y=+`ZfxlK3tpkIu?aF-Gjrput2DUb}
z+0q*-_d3>8fnIOjt`LUM3f3tAo?3MG=E`R-@>8AZ5_GKPK>iMHu$OlE%-qM|McX#t
zn*xY-9VViqip*}*&yH at exC3rx)|JX{^}WekE6Vqlv$PIVot1)5IPa>Y7lX-jtc$Bm
zdxg(f?XFM=a63SOO7srwmCRO2mP%cj&E%$d7%AxeNI at I1`aKIiq{bx9>VJJpe`oqY
zat7L|SksRP8ju(#h}M^}tVe3<0cl5OuuQEO;#0eY9AOhk08s1|eiGVr_4c=uqqmsv
z&ChAqAhAy+%TQ)-MLcR-3(|_jv!`yefK#{F;sG47re6dD-i>h^uDyw)NGO<>LzdxT
zSLXL|1+G2Q9z?O at 9f|L_!tCyWhM=HQyqJi$-fg?>(s<dE_SS*qTHBdqH{JGhav=YT
zZKL57RDvT>G8`?z==BUohtQkML;eo})HsO=sgLWBl|9+wb?xFjMoemsUlRp#WmtR-
zY7=jIvP+)KzZEFL42xgWjWR6C{yRIe<pqFoH(Xm)hIlj2Bu+Q#IjERrP0z%uUn}X)
zv+n?-Ygnl at 8UIzH50alIH;srSTM{RBHL>EJurD`O=m_K0oA4Xg^1GJh_bgS~RCHy|
zjAbsbjb#>S$<<dNN0t9WNVNV|m<`KRaXW$9(LC;@d&E}Juila!Nj#KT?uwfBOw9={
zjCNjur-F5>_4ltux_pwYzscKV6|>>#5rx0^!<ELHAQ|APGW at A3+*H2GVuAa`%(*j2
z-lq(ImL7Uspno#<XuD3+I_tU!t8DScQfKe&VLHlIjdPpAzAu~V<Bep8QOORY-rD1}
z#jc at skeFlwVv@0?Sgro>2a8D9b?5h>m(%s%B951&AQ#KkLzzCuk?D4oJ{jZA3i{o~
zy#YS6al><U|EP4&$s^`SMV%MEs0VY{Wmi)SnByY#_u&T`o at IX(6Wq*G_?Uk%{)PKi
z-K!@NtDN0^H4m^|i7QmUaux83ThgBK|D_l$I%%6eiDtT|^Kh2j!Jm~KWJKJ70DvF>
zOyb=g4Lz<pclcpnkVT;L>fypg1c1`d_13zepiusZH)eWsU-u$!%-pCqW)Zm+mM-<i
z^z~6uppsDI-8xn5(3JyZ2*MC{dcA=Y$3_+TcPU40P3$?aLoCN*bfQQdlM^}23v3Sg
zOS&sh2lYsq4O8(XHl&8c6$bTyrWcA)*1jjYV`{L?f$@P%w+`$m at M1_6$sY!$4=o6N
zK!S=2KR<*4GJ0eRGIPZ#p}ga2?-I&0Enhqc=T)n4{-%R)o=M(m^C6 at M-a9LB-loSP
z{#PXSU{-E;K*bk@^Ho{^!gv<II)1z{0Uogs`gPCm4t{NL2Q2`{CcnV~Sk32eX#reX
zxd3L_0+7{i<pKy%-teDw06bvpy)n3|X#w2R&_lyqd^M2QbkEfnck&Q4#|&tpJ9L2T
zT4r}R>#7Xc&w_BESj1vr0W4)POk**uR)yY}H3HYr^|1Gi*TcYn=z7qERIUeM(py;%
z6*c^6>!G5Gx7R~@1jm&(+z?g^ecsB3 at b-FulQaTUB+kxwrno;q^rr;{oC)QB;gtb)
z at K@R|TFUsN|I(Yq+lzzU*O;gOyPL&-i^XB<;UbRKMaRF)?>NX+W+mgaJ_WxLq9eUz
z{sO6iz^t|6xQiZ6;vb!MgTP$>iv`CwoYH at 1RAdq?!0B?(O+T1CIi}J%7cC$gjdD;-
zp5M~n-t)&uV(gT at JFHwskfESw|2q=LW50}KGg^oF{f2x^&;FylTl?R)%}!sCrQ at 8{
zSsO>Uy71_RzRX+yyB|cX8(6yH@>}?7c%T=}t1Z&AvV(Bx;gEyymLa?+)xPDwj at Sk5
z6XTs7R|H=g`~!b12{;hSx#XKGpWj9iNf_eUQ5B~(@lcX^13q at UI#q-O4`WySinULc
zN!K3pZafL8eb{dtF{rJx%CE*5l+UqV#qD|^LBM))E+7DlidQ~HvNS)nq23#VJ~I0`
z<Y}KpZuN-dX)hvA8}K*0h&-)hFES=TsA(}-VCETP#HgVQOXP)@HR6YZ=2UCbn|Hr_
zxTkky|GCdbH8JXso!Bao)il49<u$WOHAIx=RoT{}%Jmw<%$hS{-$D(I at h;VPrEZz4
z at EYlRz$W=<6^E#y=_O-ZD*M{4Dv!XYziw+(WL{Rv<kMpEF?C%UjgMX0>aPpk#$p=|
z)Wp5-3~D^eNkAnQIz*hQ{z4Yt?TMKUGEq+Lu3pM8$tbnIC5*d-7tPHk)o<Uor6*B?
zuj~GfOyJ8v%h7<fCUns44XdeFU3T{ML5_mMG_34BPW4HUnZsO***h8>{Jz at IqtDuY
znE>{tr^sGkYc7?Fw@;j6CJ+H+lS}%bge;HC_su at SB>&iw?yi`zR2m9kdO&GVl~W at 4
zHk50ZmW?~m6jzSd`(br<<>qa)+>zN8E<SVo1n_jD?U%$EK?IUtT9kvd^yjaY|C6S4
zE+5MAJ)GVAawJwof0%?&Y;*%&^~GtDuUXRr{szRCOctlOwx4)u1?-r!s%KesT~*>e
zU^+5^8YB?|@yy{kSyk5#Os*r4fSd+5%CWiLZ`;3kXI?S4bOP0)Dh??K>v`~Vzgz|*
ztwIl<xv60{m|MJx*wrCHmN>=UYwgQ`e{FbCJT2cHLcMTzh}blwzaqVsYzI1x?LcLk
z&sxBds~OYNT9sUa at TVO)qKl6Mg$FNM2dbpBLYX7Y?Bv!|D`{Z1T<2%2Vl!(#AFtkf
z=7C-2zlF1ig#pA50l%{BNL+N07fiwp;KJIjEV;!XAT|n_#+T%Al~mR1{k)cKIY}<g
zD^-o36!FsMQ=+}+)oMAQOlnN7 at 3~vr(W>P422#2}z*J7Bz24JRWA^%}YDHxmqMI2;
z;D0ov^x;AKZY&jrgLP9``y;|-YJRijzxfu+E7RKR*M9+UxuDTYyZAtp+?E%ue`&`*
z*409RdjCd?WBo@$yif*)n+%E1S*p1SCf`eYJj^S=z_8<d5zxMVKaxP#3FFV`L~-*0
zYlHf;=PWJ!O_{!<5`LB``E}uE^UnAlWce#vCHqind88^aE0+1SpIeSZ_L&10HfmT(
z&c*J+kglJOD;Y2R5a}$Qu<&$Ws*jP3AZUc>%ME<t=%ITKdMR35eh&W`vR0x;u)kBm
zpZw?cZ|5q*5;^}uVlLKbWwu895)JPy+qh+Vo}JPfA342MJ|?J~wXVn%IC at 9VXX~n5
zDA#y)AuH^PM#8Sdvn?^``^kRxlZYOPKcsY-g}QM4AV>DwHsQhr-}GCkh~ti8%+Dew
zF5XbPuc|tEjY0!t9^=C}!f>*;kC#8#v39<5k<M`SJUO17PxSj=dTDdJ%3M~j=<+y?
z?THZ!#T^jinfdgKArxt(*Q-e6pipbLsHB@(r8qAUKQ++J_Gu93R~8aZ(`#CA#N?&9
z at H0O}eP)@6HYC4h(-UhONWLep98>JyBo?VAY6Gea_5m;bNuF8=M3f;PqiS>^btJtB
zR3YGwo}A>K5MA`7#J%}W?KvfXyNW?1&#)o7 at iG*~TpEp06zg%ZyQSd|G1z}BTq}kT
zCU<`b9Xf_DHJ2EBGV%(X8;RI2syne2_0kbgZuX!f6Q at xQy~zi*PLkRfR)Ed9+kq>d
z`9S7si=;pdg|y))k!n}G2uyfhES9>uwz}|Bhr-sr<K|<T|Ls`G+=-BTSR~>}2m}3*
z(^`A3udhm+({rzpTAZO%VZa6&>QPPTEZxla{Lqo(U#JWU7#ADXLCMivqb~u7NLEHM
z%3J~{EhLkbaedSO>L2#KHRoSourPh~d2|UIA#sbj(dYZw6L7r0j}8!R_G$^&QC?4#
zvhCvffk|~(0VpF{cdZ!Upw*g&Xy4Uf{Yb+fKSLA<)0u7x&-?9D*#`r~q1-1N91QMr
zTmA7DN3_g_lG?-vD!}64kGz;stf@{uwWcR|Kg)4FiCY6YiM7m+;fv?P1wpBv&;UWN
z!we*404o6_fJc}=#QK;!RiJqqhE^SA(P_fyWOfSs!W0PFlYGS$6m&ILoUP_UBqtFk
z_!Ha`rHI^+thoI+b+a7y5nZF(&jh+wDP37Of5>b=;+%IlX2~ZUO- at XJ9=Bl4L85?t
zqRR#nm|LqOR3J(VsZ~*1QA^8~j at J40gmbCXoUJ0n*FFOoi&qJh3Xg^SDq9I<9jJyZ
zI at W#mD}uAW-dK~oUE at uV)76H!^2r`vX_!PWpvwH9ZE|jY_HC^7davQBE9G3%^N&!1
zZ}<z=hr@?TSO<$ku)eTvU$nk1 at qWXvfFZ#srnE|m`(J>87lQMebEf0lS}%@wajaoS
ztvxFHTIUjN)wWdh*`ctbjNg0ve6HymcK_C#ijN-dd~Wl7al5=(Lq0g9j;}g`kb2%1
zrLNeiTg60Qie0J5=EzUArpAxHt`pDCB8yy{f7S at R;%lf$w4Xbf#;H5B!LxKP;IvI8
zL=G}EVH33h&{p6i=k+c+j6tO~`=u2C1 at 4f688r~c%uD}_1AIHCdkJ!&ayTY0RZUgZ
zzKQj9NwRuO<;d2yaWM&jA57kE-^fsAuE12@$~$N!#+r?)Dfp;TYet?8A1BqR(qJqZ
zGD-g>4O_q4vCd1tc}7`Q+QrmtYyRh~Db8DLBwp`dnULW*_i at EH3Q<$IuYCWVWSozK
z)ag5VZV>D940XBQWBk|X6U>5G93RB=88euTWcn$L3HLwQulQ*9;d?fU?|E3AX^!Fc
zi@!RoM+`?{!ct_9Nj<4kUUwf}e^yVHR2T3s);TekOTs2;N^hV~5&9a#1J!1(Y%Go|
zp-g at L6MPl$(@P+)&sue7ObYnp{NsX2Fn{zYHlC26*i!=?jqV^;eh+M^x4tE;hi>(L
z79Jq4d>g?&?4UB<CjK$bGBGZxGRdVVzf~J|`a6;Sc1ZtyN^i>;ME^Pciq)(j;6}XV
zms?K2IU*wq5*RaEifuL~&SXch8V6doJG&DbMrluQn~2$=7^_rXXUmpo>(zj!RxJ1?
z8x#0H+<MVcVWTIWUz6lN3RFP9nO0y9Nu6Ie(5a2T7<EjA6pxGdjU9dSDcxC{{{|Ks
zs|*tacNWSnU}*p{sbSd>>N-k#>#qS;ZUTi5GkIo+Eey}UMqq)`It+jw)n^u89}f5W
z2zYxJEy(CG!V#tJzy)?{dABMevqC*5*9+JdL>mlEV&v4Wug>qM>e6~pe;Y9Z!MKPe
zu7>EiWL7-$dVfOMd>s`Q>5bJ?su*5)UPHpjL$FqBxzGQV+6eHpq7UIxPEuefk$76I
zLLabua=ku?N<f!dUTEKkuA9}eT(kO~a6Q;lx~_;At~>cLT&@bApC&r+%p7;maqX}8
zFuw=u&;ZZdS;mWOxA%GnsM$b{v7bZjaLaF3k_ok2W!OZ2+ChOuYY3<N57f1$$Ll>(
z6}R%AaRS#<F5m=ue*_%!`Z|DNIf?uaI0<Td3ij*&Z2tcu$uEaUlULKZ;iSp8@%#|d
z<h{b~N@?;n5~macHXJNXj<xMgv^i<A!#`H_f2cgUBRhYQXhTV+47q>P!eo;qZ_%(q
zSz}3(e2g9+N|Ib$e}|MOTb7PMT-*mt^;eSqYOO^T&N(7Euo*hYH0}0=9*Su^tpn)>
z<#2JUSOyh6+_;P>0lXoEw_BOcG#QCgycWeBMr0dKP`Uh3(_F at On0$HV=G8nc6WMZp
zM=q-bRAu80<g+?Ugh0zHz+6aQ-jsayH(pw%jc;8(`!2qc9JZqW$yl(2hdytql+VHs
zSiwUABH at BQgbd`5-NhDh5`i$c6y&Aw{SdAIt at s!4m(rkV)e~r)SM;}8*o54pmbopD
zl<U;!ezv{Ng0Xaq{Ud&tpZOft$;55PC<j|Wr%%DZ;mO>hkq9+l|E4ohn>sT;)(+Wi
zqk5^cO5t0zTPBZdR|=cn$61~|OPk at y{<jt?dkdEOn7pkI6&wne)I$%g7X3G!qcqE>
z8_`D`T?Z+~H at sXUUCmNN>p$_azY{Vm^0Y%*f_FXW^*toFFDwDq at J@do=6sqVnQ*2p
z+SrC)ae{q-p;%YpjTvH42J3x&7vRq@`k5Wl&$x!mdY<*^r;kg~%QdcR1|`G{@$6i<
z0cYl?PW4l{{-mtAlV8^ZtZ`utLuCznT&1#R8wKM4X9vIgHuWS%rk>hw!Ey=7{+KFD
z|C7O*-9{UJvm%wi&)ph;g=jNc#dG~!=z)UyFnhVR?d0iqn2sTi3P+t{x&MM6d_-XJ
zFTm%gIO1?VO4^PM`!(Vn65V-H3aPJQ?}1Z4x0+?^67g{GMRC3?utlOe!+^wE{Uo at z
ziVq)zMk{V6LV&H4>Zy$Bl!!%%Y0v~sH(XIw)1 at 6E<Yk~#${s5Z9LL)PYM$hsB6M?o
z*qEgRpcit(uUnsZ?BEdSsU9)}9Y#-OcG6PjsBu`>J at KX&4UGA9JS6xOy!xD&x8QNQ
zzFjtvyGlqRt)X at X^oa4mic%%E at Mv?0!=VnZg!qQ at hEu}r<JId5+;*xw!|fm2CQ*so
z)toy+)DFT*4zG9IU53}$z;`Yi1$Ui0qZ(Z&@bjk{g(gE$v7cw~hXy-P5%7aZn|a6=
zK-l0ETH}>whq%~Qs9d91Cl%lteOOfVxv7lm(D`Lv#IjgOU(7-4K0<h92p6JrY0uKS
zs^qA6W)ZT$W~WBmn0(Gwil1A&!_Q6J4XGEDM10V>(Xpfb%(=A#(K;3w>t<2yI$l>5
zK2_`uIBXqJ3bA=QNj41<!q3JM;#YA$f+Vh|2vxzolUiMS(sb^5KnzR!Mpm6Jh#ni>
zab_0a^`=$tL7B_Y7XfrpF8z`05AU|Jsn1{LwnD~TUJg}cc_H!A#s0a4Q1E(>6`R`3
zf2Cmt at YXQrY6gb@z65Wt_h#XL?i%3PzB}OK*-QM)nSOSRpW#^C_Nep%-j^q%z~>mu
zI)Nwua<tA;4cK|!p+^ZVltRnvmHr8Mi=?fICdZHN0nv0*z at NwT$hKae)n~?MIh4|u
zmbpUQwyo~uBPCL2M>a>6L?J?5b-4Q$0U$3TW$4K(vvyI={6=W(l9dE>Cd6bRY46_y
zq=5ddiF&<vP^*onpYass1;rkd1)KvwQSt4 at S-yJQcr~@*Dl~Kom(!4bxMhdP_iLFg
z`G0UnG~r2+{vp4RtU}8&->BnO&Mj$|GL6TP{D5W|I_sno+5xoY!yvU9tM&+0QHRxn
zJ2b^ITSP}=x#hL!M%)I2@&>;LT884g-si8T>XsMsv-k<uP!Yd&dcCLWETpKH;Y%BW
zdY~~E8O3CG1w(bv>q>sBIFhi^gX&9s#6TMITSa|0#5veU4r&4(#AzYJj}F&G0r{M>
zj<5;~_l9rN!G&H6m~ILy%E||)_^0BMzmtN>SU3y3jaQ2zOu at b(R5F>fY1Ar2gu^5}
zz{`i+b5PHdSlw?f;lU~SZ7fLEYe%2tURp_EzJq~|#%iPhmr61vt*W<nENQ22KTY;i
zureG1k{^g!j)OnfXbAZl_1k`vyj(dB+WXR04r>y*)4H1Dxum5yI5kXhu!K~yXy)3D
z9xJ^84(JYE>PY at 7SnpLXzX8Fp1O1caM#_Vr1P5OZ=uE`50h$s!+B(yfd8sS+O>w7%
zV;x<IrMA{~$wzZNeT`+=P~5B{%fqe+eHeM-jKbk_<?`8}nM9KHvV8N1bKc&wyp>_!
zpSZ|dyB!_I)T7$;LA^U6<)(o7qk_Jdl#Lx_q2Jg73`z)Q5ONTht1Qb5>ozpFusC*s
zJ^Xr9c+qAAF^O9<k7&p{y!AT at ed0^Ni^+BV*2%R7`pn_l=n82mI%`>V7PeoYEke^T
zE~!Mx<Er#<h at lxKOb$AMJi+2SSZIFf^aAI%xpuq=@UsFnr<HPXgkkyOVOm7P9`?+L
zIxenJ++AI~=_#-8Q^Lfw;;Dzt$8!_v9rYns24e#`$y}7ys6u`GRvRLLK=mFE0R-_l
zcDyuP?nKG!%8Ua?(VXm{n*E$CqJl4p4=f2IJ#1AE0{|l86+b~#>Ss)FY^Y+{x5If8
z3XvAR7<)l$X<8BJ$z{5i!ews7#7EiJ8NOP=;Y^!<0Ga$LAiwA=0=Ak4rATuJ(TYk>
zw%!$cz at f1;;ia|{elUoNZwr-#wc_0a_CZL|iV1!HDx4N|H~h0wMK9k_lW4X<D3xVA
zh%?^ac+)PN at rZ@8%}bvQCq#757>Qlv_e-GX-=ifHKa!K*FD|HZ`@Nk8WKY)nC~sO`
zh*gu|<|8rI8H`sfGs at BdRPQC*i-SSiQ|RU?8DlQ%Bn;(%Rd}!HL*^rXwi%CHgwXPa
zRa|PkYTE`A$#`xeOsJ1n-w2Er_R4v0CuWD$sh4ZL)H1MR--a5(+EXj>y6cdB)OPmO
z?%Obe?6m4FPUD4duky?MU~8~wG&k7V0OC`{GHuD9Wpk<JuaQ5&m>CWPDMHGb#3VmA
zsV<hgfq~&vOtp*lmUj&6$V-DUsQ=~>jF)j{G5sA(?u<1(-c|il;7ypMj-ofApOr)4
z{Hm_Za+DZbxC8=2yb7T^FnQIf*J_u1Ji2dy(Y}*m;~6|A7%dMOZaWVvp|{nA|19(n
zKOBd}O<kGV_RMe2%}%WyJTJq4@!a|KvDA};T}?YWst3B7Hl>~!q?N^pFjxlMbmAwQ
z+0ag8gLASqN1l_Zc}IKO-o?+`Dk<Co9H`eS-Ckbl*~ln1#!|nc-fbP#8 at ie{a;@pQ
zaRGb=*H-N&ReN4`!n at DQOn6s&+qT8e=g;GHiNEx2oXmaE2eQ%!*(NdnF$x$z8q4g-
zf0CPyY;9&=XQs9z8*hHKGsA!ReDHX?dt9r>wXf!%f~(1F at 9^%5*S<DKk6z2~(4&2N
z)NGHMUo&UuqOT=ADD!G|J at _u)l&?{@938n+jEJLH2!>_>uAvkUeBuf(1WVVwDUx!-
zKfN-iOhtYm703AN>##F$`<E>$^i-vF<)<dqMlL}k$U1tB<$uW#YYMkN6d}1{==%RO
z>;EkCP{)9mwSN?t6wB<u7Z(E~(m%wT_Pa!v2%{1w#(u~`(ccPU-y)fKG44%%k?aF;
zZz68)7^{LiT}{7N+*KQzbVkStj$`DTpp)S8+0}hD$4Wx<#bu1vul^}3W5ucF?tUPN
zy7jWEcs22QXR|CX8 at e1EesI1sTiT)}t@}8!sc^jE1Mek?%s3ip at dsFTO(<F1Y?x`9
z?dO7*pBe4CDhtw}J3quWw2oT&sIa|!hKuuap-a9}U$Ln&&`~|D)rt3FKpE|uJH#w8
z3A3-oy~$e}h39|8<`y~8D3oR)Uox_=*}!J)g#QU2{%^Mz$SSce8FqvX162 at Yrna<w
z&M1+tApU^z!)u(5Jw_E--36oRPK)dcA>V<;3396g(&dg4>u6Dc0Skn(0x~xTtEi$?
z7hF4pl=~ID{>%5 at NsAqp9pq_YSk^c^mQ80KO5P3PPcRrPn+LXy=}bhjY#xZv9tC$x
z(*X1Q`_eQhnm`FbGjBKz2LJ!+{hunvSDqFZ_}K*pzOm!{ty7E-^u~-zoWFEYNX&7I
zkOXmqUyZm~F{iJt^Tv#fWify@>esYa0pxCIG+{SR6k8kwkv3Q7{meO`@g8PXg}Y4t
znc0&3wYT<glLGWr7aj}bAR%RN at KyhmjO&jm73 at Tsy}Z^R``+?C-cZK*v^};s5i*Aa
zzL9ivfcWO>a126AG?q>f1*)5c04v)6Qwa<rd$gkbTqjHz;$CIu5QqLzocG-rWVw%o
zfs~EOpTfS_P!xlN?I;Snysz*TE2kdAciA-|D-uV;{wwFQJt(|TR%Vl3$H=V}g9Ib~
zDw7t4yQGc3I6v%COwmDOztUfa{KD;2jQ!$p?3$^5oLk&XUB*mx(i93Ri|5|<5`F<q
zuaRkz{%1#@kQvPuw6Vr-`)!i&FKmjP;cT&gwDcGL#k%XrPVxUT{MR;)NWP1FHHqfb
z{t<~wQu{|HIbENmtOsn0?hLp7Hi0>~DI68Tozw}LQJ1vz2j|eD-K7iY$h(&Q at Tj8w
zKc4-NMLe)R0d6yfcE}dbVZO^=!|BV#gz93*#IxJe-!&FZg}=2ks_p}fW-t9+bw+}8
zgI>ICuXp1b9)%h*gJ7&W2yB*&>LWoAlV#;^Y<n&7egk1q9^l<I`h+<SlEnIWB)P}9
zm(Eso2ycny?(icm{q*0pD+a?-{oLBnN28g}=~_f{y)j)&f&N^02!w&&m at n&PUngsD
zZ2o7)2u7I?%aLWncNn*+6kOm48fvyzAqYy#caOo}UWStpe*d%ZBCwsM)k^=0H#fhl
z`7EsZ-!;FgDCp>)JinXOnacT<H1q%P{Ax~bZs?(*;!HcuSZRuLdaGI1lxvb#x%)*n
z>&*YyzRsoj`)#^y{pDpY`lrnIYASw<^Zmy3)@8c%*YyW0NAlPkzhXmh%X}EROA5p?
z(mNlH`su{k;ri#)X*Qr at Qn6bmT}()Kb23D}u#r=A1XJb+?;^!_sVz|igwa^r^T{7V
z+RJHjn$Ad!u`jPMXk~!gS~$ibdeJ^ITpc?9p1|4H(P~GxqxNOt*JTyF8M<wa^PgHO
zJB7d at Vr>nTyjWE7BchU*iAoZc$*AOq!iBSbH6MpJ1+Pe7EFIn`*dF|vLVD<eV7c)I
z at gks?g`YWo=tK9assI5h*HJR0lg{@c4%HByY7P$%VqsAqig1zw55hT(nnXB#Fa2$<
zO52W-Z{7HH9)$!aAe_=P_G9NcO&^JHc8hTOBAh1};Vj>G9?`zDx3qRx9o>#PYHip`
z^2XS at DJ`RL*|=rI7nSShp|bTO`EB_umgptAJNG6e3n4=AYZDPb&tY~*C5I!IZ_oGt
zgY#XKH=I?z(xo#g#sAt!m at lQB+UW!jlO)2*{3aGe0Q;3i02|bjYTM}D_$^%^HRzRD
zl6O}S{tF>r)tn3}i)RwJ`XE(CQg~4OFYhh|02=`#H)2l4e@#Nf=ZOF|;y*Y7Scx9}
zFyx(BE2b4HivxznJ8oh>#Q|d+E)dv=IqjJm&+BbvJ?3ZepPd8H4H5?|44!rtZd}CG
zg9&}uuYRHM4 at J=wFE$dO4 at K~)#}sZZ7grQRfGwOiPq}7i&zn7e_JYK?s_+GAXRo?;
z#=O}JX3h?ygCYG10*5V0%vhX=ESwWL`I4olExqjI$l at 6bK0P~f)dG^ae>ypD#^T8A
zrHdBNUb5t>g$tO6;&;VjR}y#Z>e-31V&lro&0a9;E!1ABf8N5GGZM6EAD?z|<hrX8
zbLrH{my8=Xj$U%veclDJX@}@#Rn>(H==W?QqRonwVxt{g$?$_ at 0K@HHODn`AbHi}i
zB+vZ3p*3bI940k&_$k$=21!%-WnQEP$9U-musAj7dFf4D7+IAr{U@{(MhHI9OJ9sg
zJ~eo>*L#X=PjdgZgV%&nRqQJJB%Zq(lI at uL_MQn1=wN<rBJd!h+w!^X12qjJTDJQ^
z2sZ+^p}9if+0Y%tXM=;7)4uZ8RW3SjW+Sq^(L`O_x3M}gZ%$_~28CauQSUAu&pD!V
zdhLZ*npRM%!nw$Sie?lw^enY`Y2{W7zedaIuIt at ejJ{{mLG`M-z3<Y7>SEl)IRp<L
zU6s690wz^l6WC{rRmDzu*y8pkCl7 at C>GsDbr+Mjrr9wU$jdNj5X7a0K<LtH!>_NHL
zkAuzep at o%)y at x9o9}>?S=t>vmm>)o<vC#Bfp8MHsz3!@ax?Pb0_~^;z$e at J&L}k^9
z4>iQ#ac3Mpx>Sydda4MOv>$+kY-VmQ^S41vD*8W6zpS=k)(5OxLGP?vHt{kWjJWPT
zTkI$LvPQF6dfa-7AB2rC991wJBdpIlEDL(YVTz;VGr=?WF8?CpaHCs?gkO0-&$NCX
zjGebQNIC&SDe9Tm+eh^Z{nxvKi~JMTSPuv({aZ%^9_tB%F~TYb-M|1mddT-mzH0nn
z?ryE7c+NV5g%2!`mQ%%uU5IPe^QoFFY5XQ&qOOql6PQ79e)~qUs5O<ow0!GN<B`>n
ze*{5<!Ns8hFTM5dD4IW>$pzo0((~{fY=M4Fj(w<cz1JAHLyzm5mG4dAS%S*nG3t<s
z7M<y(pKfp`dc7|R4hDdV!MmPJIL-UwDU45bfg-I~oE~)=3on{jWJG~g#|AqYp?b1a
zI9HYb1vV|iR5t`bEWC9xehJ8fw{|MjYi+H!c4Oa<T6cOkuccFSM2ys^+DjHe=D=9^
z%ORv9Ez?>XLFJ1iDpfN+xEE653WS{NXNQ#B5SFYRQZg^Qw;_dZ9ky`cTb0GUUa{K;
z6%AMV(83c`IFJbqeJ3}hVJdP9v9fUD?)+~-h{}hU0qa=>F|E8~kl~;0cNRaf<-y9}
ziDjE!XtaEjq9`g3TX(cC2<eWs)SW?HbJ+ckE*Tc<3K5R8M+%KD^{c~;epl-^hy$wM
z$GEq71#{C07GHogP*t$;XeF&63?+?=+#MaBqchK$D9jyI(*4O7u|+(ZRl7tL1Qbn2
zx?;T0D9s>FE5-};b+67ke8Y5510r&vnUcz^RuK at VHcaP#+4qC2%|XOOqJ=sO20oIM
zg%Y<n^l(uYEmWiB`FCx&iVKRht+SO=Jj8x0Y#~H%c6P=@3$;k0)0+vPi2UtOjTRb0
z*reB-N-b(=G*~xfDHWltbwS8>CpN{^T22x5K~e2+#jJ|Oz;IY0-$vIZz(tHvX-F!2
zzn=1!0s)8Lpu%~;kfgD56}+Z#m7g8&OBB+!HIa~SnAuO}7CAO0h+Ct=NK|P^X6Xn_
znw*7 at 41l`T1&dfSz0|}ID>kq9d+I^C^(P|LG|zY{DYxR&EMe6ZZdp~NmX^-Df)z8|
zbA!lT?>3Ni)$9Z!Uq|P!v<*iwafPJ<szqw9vk&r%MVM`i0G1X^wR!kpsw!S&ixO at 2
zbx6hnG0vvK_rfP62ngoq?#igDcZ9^n*7uP7Fn!iWS=8*MWh`x0OFU!!{{z-W#?tCO
zqN_$@Zf~QAF}EkP#*Dcg;KI79O=l<7moc}W37Okn#^Sv$bKA4Lilw_-OE-*GY%z%k
zI;%!}pH`9PFGG0f*jw+eQ at hK!+m%lb$J~B;4hDI>U*J>Q#^$sifh4-Uc4|Y3zlFUo
z^0yyXA6IS`gvwZ4vkNi));cKmb{>7CSJi!&Ra?CDfUmX9N)?8D?KA%$dtU-yS5f_c
z^Ils at 14)1i{jq2os<tjAFWm(-Y4$d4Llahk*ED%;L$i^*bU}nl+Cpdp6;M$YSt=s9
zpdyGM7TNkkWfM_U1QC(^KrD(-l;!_DXU^Pv-d&odDd7LZ{j_=Seebzv&YYP!b7tnu
zTynlLOtJCz%-qnCh+xiLza6|#j at GlShPG?_Pey&DbO-cn=YY`LPZ&+Fs;}{HNd%a)
zFbDT|IJgtU!Q~mO71pa^Pt2^|dVcQlC^YLF<#Ro-mbahw`6<7#%JaL~a%K>d>mZLS
z2}4|P3I$`=_KV`$!XTqxa5H3Gb(%CVp0<^Tj-rQiYr-7u&Hk6T?XE+i52SBTM6QWk
zC*7(V>D^M$GkdqZXYz6SW$jPy9o<>PN>*&i&(+%Pe_8y?f#^Co3&n7BhvM(jI5hX>
za);dAIBMZhS?R^>>hiHh(3N&|e-2S#ud)4zeLPzu`twl4ZhqL`B`uqUpZ+i5A!~~Q
z9_fK-(jhJ+B+4Rxv<A1yAEk0N4rw(SjNc=r<}w>i(dqvP(h6b6(t0jCJkl{Fl<`P&
zZ$2i&A0;P*{ZUSo(-V)BGNoNo)ymh?323G&Lp|P&XqVL1M^dMvcTfBB;nxKGLE8g#
zXHw>F=nnH9iJAgebz-?2=7o{^i9Q%cWLu7pc>O0q-2YGUNWFaJZg_IA9x3-%0e_TE
z#=*{?;3?iaQCxIZgSe#Isr2w-FLp&KlAl~Tx_oXaIY;Xl_Pe9zg<y35A-Vq)KDlhk
zE&U*OP23fPyQPSG4EIMrN>6Hk^h)rhc++Bh4$2?p1M96nigWAXRW=RikIHtx{ScZ+
zhj*J at NBDC4q$`mu`J=SIVH>{VEbctqxR^7JFPBYviqR$L`OV?oq+K|r=J4(g_ at --W
zbNAb_j?qil$uo=BtZec-pQ3L|=#P6iI%$?j>GMi_TKDvBqAHd)^bWeGXyjswqn%5t
zbgGO06 at J2JpgL-N23oIo{m4JTFlSEbsg5|rkNh4Ra#RSjUr=Uz5!ll-Dc7hc7+rM&
zqN`L`Pp0d64hevk&u;v#T+fVbr58zAn71*x+3kLgach3AwO{NRhHgq<&vZybgO{N=
zZtuMR;xTtJJj)I6nvAp1Fr|J3pJDbKLYT+!`$XoAh9}sIDZp0|98)s|Q*Y?0_yn^)
z_A$qsWd)ij;AMq3fZ|n02pnYLvHDfrw+g{6_Ze^FN5xcvXo?f?$zR6O7v3cK74WD*
zRT#UVuRHJg&uyvhJ*axqfz`do<<V=cs{0ld;yYekwJLu>@2VZu_f?P<G4VMD2`<V9
z4Td)Vz}6#xAS56kpM`k!$b{-mXYQ!(T|K!5fhp+Y##Gs1Pj%n1#fYFOM2K=RzXXOt
z<*R!iLu#04#-_YucVN>O&W?e#B`L7+j$(*&dp-?!$ixx<1K&2hlDqyhAi)IBf#>eW
zp~UMe at w@kxlH6PBXTAv|nRt_)@1Frw#?#e5wJY4-8sRJR`i`1SN<hUzfF5akLUk6F
zR?S2$Wxl%aETc<O+6G$1r;31B?`_4;*OLE78LsL(Gppw<$XN+nSp3R;h<6 at Ea$-N+
z4m^>2b5ZfR3E*%>{(#@TZ$ZpYkeG8I=Bf!C9Doq?Vj8clKY$8%3g&$9cFwH3o<GH%
z4?vXDxT at YNj27o%VB3L%vF5^pt%2B!ci=QzY;v8;WrQ&cUg(rh at 02<n^q4=L2fC_4
z&`u_~v805Qew(}gdnh~H+yQ1_O2^?M5a#}FyvTEriB+ebf at 9SeAYX`8-+<N{D?4`#
z#j3BT{+Pp&%f`LAtgN>z=gt15tnT%A3U#ZmGOMI#CzSFuewDnk4N9T#_Hud;3Y}vG
zUVE3Fn}a)Gwgf<V at 3y&!WX4Ny=JwW%d9%L;nDYN|hA!>n!#<=mswl>B=&S7xS}v1n
z9BPZ0aYQ+zgb>h80sDMfn%WRkj5?25>M<p~+ZS%CiS1m7ln_*24DyGod!E{fLx8hh
zs-E(a4gcPP;==dDD<!@E=(!ic--qtEsQ1vkIS+Kc*q_EdPrjN>d)M^lAod(_<$Hr~
zeGd3m;az%v0 at DXdvUXHWd8q^`uujhIz_awrGG1sH?^ibG-p;@EFUDQ$N~r2hU{-Te
zSrOI;%Mxglt7lgs#2t*X9>m!}J%8OvmG10bIDPnzW8ZtX_uM&l;ii3J3w!q&Gv_tP
z*ou30Tz24s-W^rF`{8v(o6a~8g?+|;V0jic4gD1?U(0%+ddhYaO`m)AYna)@_rxQ;
z5BK~Gr=sqIRhoTr=lrAd at BM$oEgtt^oiF$7YsulXYkfGs$gK6<`Scj<`R~67H#Zga
zzSW!9RR4+BQQKeV+WrJMlx>Qk?(~i++f+90b*enC_kR%Pylm6ns0C%cIdeDFWW7$+
z;Pw7;;3b<5?0uzoKb)m96MPcjgT{S4__)i7NZTwYO4<jJU?zr_O`~g%#RQvI2f at SE
zVX9`TF0rk6_G7shOn_~z!LX$x_YUkI`;Y9$GVT at T+R0)}pg$eVpXyu(PT0Xl`A>57
zN5loDbYLpXZJa|*=Tq}Op`);w4yIu;Ohi?m*&<C_+$Y!cZIxa3a*_u8yi14~uIipQ
za&ymlmFy)Sh(KYMT<d9R#&{g`COqu8rYC4*P>T`6+<Qk&2AOQ;$Ey+PCJvD#ONY%H
z55HB5F{521F|i}uc(4tP+SjWl)0vs9+4R{!Ce36Jheu-v4ef=JJpP-+gi!26sqAom
zO`f{kJY`9qa6F>Tlg$w4r3`aYBz&Jfp+GVP57f<%eS0Ts-irjmnAuJ>BXZJu`ZYK@
zxaP>NV!Q?v$-~994^a4!9Z+Mt!t7%A3CqR~!KoLON?>Y`>r~`!-~}W7>LGsB9sDTT
zPr2cfte)rk%h2G(&J(_VG)y0I)PE+5%i4cb#mTfmQS#7h+)YGGQi&l<S1JK4Bl7lt
zChw?(@H7l1FFtwpism~8$qzLlgP$qR{v{dq4^dr(W)A}=-TwgFFrPlU%{Ez^39D+}
zAsMd0bYnO!?iwj+Zz#)pYX{peTkV&R1{3oOb-5kKN0l(Ym{=I{o9sxZzeU-of<A_d
zOx9_};uec-pP}Qy?f18!7~H3yI?9CN$uO`~lb3sPJ)Vze$(RIYc?VpN?|8e`<11l(
z_sDwui)?jyJ?&kz9^Zkg7qK2cg#<<uFMb!T$3xtZ_4w&5salWcT)mC!@m}qWoUweD
ztjF&S!;j&MS&#obeq^l2^D!gn!u2HOyLmmndzm{c at EA;6$W$c;@##rfKc?^kJ6B{D
z+uwo{7eXJL+Wb9vdv>v%n1N639mer6tZrh8jOd&7qo7*pK=ci7{?awo)Wp2Fo$mVs
zw%kYX&4CEcwFIza8NI>t3F!)+uc0r`zmUl}cLSaMD-Vl_vK^D3aw1X6YP;>{GHKFJ
z^}kL%amGpw1Ty{4yLUeFatsySne4D-^2qtfYv{@M<|E$?^O3=qx*YATr)<J50NN3N
z1#&EN<BOdo@>b3fhe!s)te&I)Q>*9O=rEaebT{g)FT<GdyoLB>On54Px#upPpV?4~
zHuwDJz4i2Fnug49rFK0JItTRd|0CAZ=Mp#W?FU#--w9b=_jBae)888(zc)TMLxT6l
z$7pHjQKHA&dGC#n)%cc<L)|0e<IlfvF55gcM1FhXd)}h4XoiJ1EkgybzvJ;e|D>_k
zNXGYE9WhR(srOn6A9&Zs_m~r65zWEjCpMbn-4)-nmkgER^}H9~!|Mq{i|@G(mcYjM
zyq|~965q3fY_)IbJOc4O-Hq-DmlnlBMywRa#N%5#4&%t3S}a3^5c?!V<PM!%XvaI?
z1SWQH%Y4T2?Tjdw^)WrR^<q*Y#<q$ed~B--!pF9XAaZPL2VUgDdi1#)>eWEij(#We
z=ojxp$|Rjaq#46iJ^J;SroY?&X6VQk<%5fum%KN=rRWnA+~vi8zZY*q=bd1MYj?xJ
z|J%m5|A%(*c8zaGF3u-+cthen9Opy!g-)#Ga{z3Z`M5N8N$#CqiO9Vkdhy&{YW`r?
z at y@)`x(P3Yd$RXuJx`Ctd)N-dn~&zPqsbc<pZ~U5#|K)*=<{-Z@~-*fG at Ea7+=O}N
zCU^eD{NBp8(zTZv@$@|}U_Mki+c<sG<dY&ep1?EA0y|UcZBYEE-1RfiDbbG4^}paR
zV@&vM&(6`g>rdw?J$)c#?uOUN59+yl1 at i5MrSn;E8M at dXxjw~6e2}b%;^>8=7_sZ4
z=thorCq!_DvT$bQdA!~I5r*6U`t)(D`#U<`oS#(U<#iuU?`gRU8lkP;mm-@?!spDo
z{D|aSAvxY9sX%83k}`5yWCH=-f2elIdL8Nw4m1iq-7(IpzN!)N9DnDuuw8&}V^J6L
zWVca(7$4kVcfKH|vCKv;KZ0I!*%lI&-Xmm0y at N28gYf5EoOb2;<nwm#R$%~S1=tj)
z3@$e!UWZrJ-Q at CE%IRUFB707KH_#STM697#ujy+v3+L8ns at ilLWrJm^G2fA64x_*c
zR5iWwx<BKKjm=%(OzHUw{+qylia0vM#nu0ArjG at 7b5bnJCIWQ#n0y#{-Ie)2l6zOo
zAZ;_Q!a1<?el*S+zdJFGS07?&z83MP5;)LT4+<1se$|~%kE)K-`!%@`DeDN_nrq1V
z58}DQb;ummgzLt3H*hNbZ^1p3c3^-P0hn?#zyIj_{ebWH9lqb+@%_F6zr*rM8O8o!
zl~=qikh4qgh@^bleAFU*jUw!kA+u=HKMy?lLCTKt*ZBQHWKlaZEYAu#_m={dAEmr+
zx@`%Ue9s#CIP$g?_`o@>j8*Q$MzlrGRrUNG;W>s5Y39?56Y`)m5jB*-b%tpNKIn~M
zh_YM#9NuQSvu0D}j;h`taGHI!fWVKANXW118&zydv}AToFOH*|^H}csU*mCv8N<J*
z>Rq%mcfaGFvvS}$Z;2^)!|y1$p1V89I=Lq!!=5%tgbP;~L~j;Si>EM7I%omwJ!X>!
zw{Ps(F3hGzp1b}wR!k4IAF4^lxpCF+YJD|WaQv32f^_;Vv{0)Wr2kC+r2t&JTD<d)
zonQ*BUh)(%-?VNAK60m=L>Yu8M5CrG`f7I~00_}#7je<__E6DO^=%;zRipX&-it`V
zRlPl=&;Djks+gNG_PjxwS(HhtSo9)PZ!;NGI%-n?!7M)6OQgbb)oi+w>{ZpK>qx92
z3&T=Ki5kJsWKr at cSj1$ZJ(?HW*7PocU4~jkqnu9vM_6&z1nbiEy+-$UR=p at BbMg2j
zqrd(93uBQ1Rq;)PvebQJat=rzL33*vlmFNSNcq?6793<`?RF^+FW)+88<OS5SJl^J
z46#IIp$L&Pj{L9cMet-FTO6w4_*P4gAikA?+wcv+L<ldc+T^}=6>HR at aXLiX8Unll
z3NcaE0wSo^y<?1E4Y(|k=W6JbqG!oYBCUJo_l-J>--L2Jg2lE#WaP{-Wk4^|H72xo
z#aPg-$~_P*!j?}JK#uLd5f9{I(=A210ocr3 at a5u3SJIs+68%4AGixMwirE&x!k`zz
zVOR3i7Am5o%v*!RkV!||YxW<|FrtH>kn+jha1!c7|D*V0J2h|k>MJ;39eL2!k;eA6
zWi8E(>E^cO`O7;ST3c~wNqYw!9 at 2#@$Ytse!Yt_(-POInEUCv)9mXO3{0rMblu?m>
z1fZ;U+Xr{RE5d;-_*>Gm9q+`98&lJVI at 0?h`f}u-%Gq=`o3ioJNq%Xr8x&`|`=71=
z!>aq(+K at o30(y88^}J9#wsT-J^JK)0=M%7?@609Dy%nfve4hf<d&l6tqxV%5((RJo
z3L>4&-|wv`cJSkP{*k+11s(HPQN<}hNKdQSvTq8BgZ4~U!iTim2s!tzCA6QG2jbDO
zGX$@Z>g&lzMXTxk0ky!N79(XCFsgg7QhD at oU(W=5&~-195>hA#zRt$ivACJLUr#Z<
z;-l7lEHNJ)_}~n{Pa|5erKf+&R<UpV7ts^GRfS`%@uGFpo+yl&4E*-0(L_TBUp~qP
zA9F+`7wrX-NK<_MS?+$DC|yK%W8(^^jTF`a!Hs|jdYi>49AXQTOY!w~=Xft~Or;aU
zCNDrMMr1#le05)W7DZH}Eg<-krhjp41bJUIy;E_50>Z92?68G5?_eV|G)z&L>!1_#
zTeYMcw85rHOQ at OwIUX5?gMxkMwYgKaavP<lN%Xl>Oh~L0I8{lbI&=xO{EdtR+KTCT
zVFTzDF=ExMh07ytkm=$FOxrvpcl}?%pX?_!2Q^mM41Zi0u;&=g#n{tNvW)BRM3Jrj
zXwP$bJv$3mPpkTI7L^MASLI&wv)l`}(T+g!nVz3u_d|Z12)@bN0oJd_oe(ibvl!;6
zha7NY+3oXg2C)r`-(rKFNQ}14X8&ioFI|sEIX|of8CKBw at zi^{I#Dr~2t5<aO=gu$
zv1 at ACiz71&PnE28u_+2R)SzU0OhxL^tr!c-y$%BGLqg#Dx%i~g<|knb-SXV at 15ye0
zRl at aUuNUdo^md|qIkOmVww+xy=iljtuK&(wh;P`oW)jZFpZ$E!778;a#~Ae&FKrb+
ztSW1J&+KvOKW~clRlU{oTGpyLJv;YGPsff2#2Ngi`?e6JQzwJIb2~oNC=uuB;AOku
zy>|Tbcbf5;Nsq8K-*wZASInjapML(b0PF5KZjsSW1b<-}MF#5P`Z3T6-y;K$9`X5!
z at +FGf^QX8SOb?G49K6tb6MJK5(#L~cP2UQ<qU43#o<3xfPK;&0sTwmBoY3=sHnJGM
zAW-+IqS!MNZX^4s4!6ZE+y4g|6}xd_p(P9bC!!vh at AviphkU0^Y&ubq$Q<Hu_In_q
z$^P at _C@tL8|83wQis)bKa=gbL19;E#N4OesZAO&#`tO4nCjahGI#MP~>lnk04>se0
z;@eOXWEarPVU%-mzpZB00;9aU7u}$)-8;Kv8}0=<bvyHPV0vNC&V$UnOwUg2<EImU
z5|5zz=dQn#bQ=`)_hfE9e>bu1eaO~*cYY*#{)6@`tiwY_Yt|=wQJVcI+zB*$({=U!
zokuG0>iJQaf4G~bKO@(=Pz_cJX})4MlfkrNm~a%zS>{P at d5Dtm_S@Ui+qGQecLe0>
zZv<QGCl8V at 8(r?Y;1c8IRBQv+&2FQ94zD{zB3}1agYFHlKVAWHoU at V(r*j=B$mt}r
zLp|P=_%zz!Bc6RKqG3=ihthAU>H99_yQc3OWY)>%LIc*3v5pP2X?ngVvAe2}`N~v9
zdSXZopyPqPsS at Q}x%_Yp6GX6W+_>NH4DyZ6d5ml;z|X39+%J{G`s^j^-fSZ^q5q&k
z)&$bhUPu-ip+g#!uA0nXV~JH5d<k+5)`6H at 0;8~-Jcae&&&|mC>AqGblY^#tsS}m)
z)-8F$GY$Tx(S5gWozHJ4CePmrIrK$f;H4Fcpe~(ABo}n2Q)`k-8 at f`}H4En?lgrz>
zlZ|WEB#M$X?Tssw9qn-Q*OnKRm#YWmE1sW|tm{a&Hmpn~yH+%GrkaxJhUG3H?$4zA
zjqTlSI23SriMZSxXW^WsI8bo~#u_W<%(dS_<g$+_`q|BpptG%^B{8d_yA9)(_O`)r
zu$;m_>(WKjbpAThoyq35j+TbTRQ1BT^z3A^DV1($Zke83SW!aAtR$;8kto6$h|qev
zv!OZNRoz&QtFEDXRryd$AY3ksY8g<{C2eaLG^86>q&jykOU=^4a{E85*e!c!xA`ZK
zZ<kx}%Wm;ca31z7|2-wYk)6t5&&Y52?@9Uhr2dJw`9FC56eUYxp@!4|cF7#oHKTqG
zng0OF-!1-wQ2uW7AENv-l5@?ewIf#q8Tua%{{gbFTl@!61iQ_D0QrL!^*!W04ZNp;
z_cZYKXkfLodT<Gi^^xsE<7su}tMBxc=I!)F1A2A&o^~*aka_vi8|CNcf1o(?abI$d
zlb?B?<_t5gyo_J&4<hrE^3BT9(of`1K4vL~P2Ks4X;Y_7E&TY*ZvI(xX3_Mih0~`d
zrpOIEK=M!$qw&9T;W3ooZG>UQoUifnnRWVNCu>b!)*<`sHFgUUre_Y7do<vsi?Ble
z<~SNF6O8WDMW4L<fzOW<fQzse{^mFb$|qs#<h!Q3STId at onSPvOcy<SJAZQ=jXfk-
zfqW9(GxGg|3fmci*{Y at K@}&?+e{>PQ>4NEWs|4feZ=pLW1nUUF)`wu1gkawa!M259
zj|%ol5*QcB{9Fk3dI**$_1osH2G33s?88J~k&}0RtSV<hUwnQ}{^n6NIg>YzF3TzG
z856r=T+ZZ at ocy^t6XxdR&CMA*H#@c{6T#z!_)ljD)3ucTl;`AajFsd}=!uu*<bP&d
z&V-Vjypo);)!FU#D?fAHFrN8?JVPhwJ7BvpRwn7h<|3g=PN<v`s^+hgL6#>C<F}d5
zAg{4XSGdY-XEyF1CA8lsy&%u$$B_5FcopfTg!EEEdWm0_<<kP`V2wP>OQO)}##klE
zR+*FkIh*hDyY2<6p7=(}29 at Er<e9VZoi1vh+XSm5pe84;C)PQRR9}%Z)}gX{O70(-
zDPuXwSWPlkaM|7ME4%XSlYK~8wsR8r6_WA5bpi34 at 8)@~n`cuO)?{WGS^32;AE=_F
zHjdsrsxN+iEcUc7fs$;}%NF5(4J87dZYI5Kq`J{FsxqfARx>UqAGHOgi5do(ri1Km
zd8U<~fi5>wId6=kF7}Lym6%ckb#?a9_Cd#40 at ByzxgV2)k=6xNe&@%Lm%dSRb0%-5
zdcAQ>S<dX9y~=WGPal^v8wHAj1%X at 1tFq(SS)q64XIuN3b$V?LTi3lVMMBOY*2YpD
znnVb$FXBIo!}6njS@}<M<zJBPX54Y8uHG(2X)ZC~`aPfOP(@Dua<{6^%{H{p4S{w%
z%>(0_Pk&e*BrNiz!MRM7Pcjq_l9uw?BD7Z%U+B9pR-Q9qGnMVeQS);q_fTDo%{SEo
zDS`r}R+{Zpf&4mo_J5 at w2g(XXvvEv`DXS&%8?(X+3w%h9mxUMiAIM)HmHTFDw;QS5
z_Kc>A_9Y`nsg<L|wE05m_=fr{<)KBMJu0fcW#-}VSVSI*!RsXAf$KN;Z|jZNAFnNP
zgNwnaPKJ(EmBll~_<!YY@}T-%JQja&okV{c$o?QXG|bPy{^SFqgXHK+;=h$s+9w&e
zQDmdm3y&`ltydmszfvA(hw+Qh$|mCxw_?o8j-BJHEAz9tuXt4WeI4vn{{kDn$kbl+
zFY~iwu=}XV_)aod+xlD7FDvH-v5HK4fO_H9vD*0i!`ppLc0Tw~WH4R1_|N=uYJ2wD
zIA-(czES7LFNirG1D?+}U;|W|o2f69wiX|s<r*xqjkQ95zolP5wvOr9KE|6N(FAm;
zXf_Mc?y1jsYH$3(b%6PBCgAgB!9GYB_ZjslEr;*rQLrAaL+B4!^~8>L?|n?}v0ujb
zYWW_eQziE(zjTpK+3Cc`S5ePAorc+1Znu>=wXy$$DMe}fj4aw-KKRh7KXiQ+|HE{e
z5BwpKV;R01`JtLK$K~Xe<%|Uz*83&Ght@=x5BnhO8;}g}W29o>0qS423%zb at TJQAG
zwdj|?!SqXbj at pJJc7}LZc}H!GQ at DmHf4M(cIe2{z&kj|Nb9W&J%eD`g;yQu;c=o=O
z+UGG)hRIY#cB}mgGOCY9$#eJ7bF4$uMe<<^ldcLYvtyh2F|;#!relcDkbGO^nQv1%
zo_t*An_c;;vt!Mkfb`rS<hiEI=Qv--yU)$f?(iPtHZy)-dcbiGG9Qdh7VHBGJ4!HH
z=O^P{tzc`2PU|GU%hd_Y6!+g}43d`G*L6Z`{c^%?7wms1EnJiEKP|TJJNRzvc28`6
zPI2sFw-L~@JLOsV;5_al%*8w~mM_?mc!n<0>vX}cCBRo6DOa!M*|AeS#ZsCr^4$CA
zIb4PKzfQ1k65#18(pKk#>?V1pMxN=3HK5O#mkkFUPM+h82mV{3=_VTZgZYg)V at ZY`
zf=?tI7xB1GGW>UISCJ>}UzBJ1f|WT-V%tLPRJpNJJB1&mXWIRefbBn2?9|1UM%$p`
zSgTuEU`xnm*9bk?Y{RpdM+UX{y+ZDti9Uz#vHb9@&X2>-?;FMPd%i_Q&bqAl at 2T?&
zT3V`_Y-?{9o*#D8TbHFXLG|D$${?<*>5o at -7{h!P;sZdNpO?KveK&nlTAs6IK)lWs
zjLVDbl=9)>^t(n#`SA4Iwp~3ZBQ|u0^R at 3^h39t4a~n|RREICXST)1<_w)tdKh_uO
z;?K+G`tuwq4c8PX-_yUZpVR!7#M7}*hE>^AA1~gI**R~}2V at ifl>MPH>z{tb=lhgr
zi=PJ at Y&>U-j$n`Q|6H+y+au)j)sM2AE3 at KT<Dmjl7s~a++SXb4&3VQ{x_)rm6yuVN
zNSDW0o?hy6mc%a&*GqLamD#uU#~)lgX6Eq&`|X~eh at J;sJxxNmN~p|+#^!O~Y_x*s
ziPvQ!+aHy0az6QceKh{l<M+y(Em`r;K`!!2z}oerU0pmUy#58gMi*PMyn(JsZ-qEu
z<h%IGRK^^|u{xjd71>MJb$4 at Pc-<tt23dDEhnA%H%4{ql(p4mvZo`FZOrt{^M$d|Y
zrSX-?ubDoch{ealGd-~uSl-I)I(UP{!0Y8cMcYwc^|%D3A at fBQrdbsN(ORv_=6>fA
z;V}^`=;HDh>}uj$n`xtcb*T(C`oXAtABD#+lTLdJzH^y*?F=?^<0x)t^Dqu9L7AZY
zaEkzXBOUxfo+mS6%Dk{=^u|$}<9#viBVU*M=Rj7=U;Fkn#5_;?jL0|ZR_xMr#n<|b
zg}`o<&hr+0H{~UMYd+>D$Vj5R%Ccik_B-);MxOaLJ%fB|-!+B?Beu0h+sMfvJya%O
zuP29<>xNA$egfKqq*k6?i`y at V+*^@vn_u0B`pV~MYE(~Uhn5g#*QAX~`h%?JySCB7
z>s%5JIta+7=X%gT9zp#hY?E&!!m at n~EdC%i+O>bIAN09AhgT2nnD#<Og8J`$#CDOI
zOnoskd!)O`a<5d`A}ycif5`j><hyc!{`(B!>G=zp{Wsa?D}|;+)lo^8{RXehcn*vV
zA<f!_xD6HA`QW!h_#J`oCXcX#YS2q<xPz2|Ymj9cX}gHm?ZRt+8lU;f)YBQuK0l`;
zJ~dorrP;*hTVhiS at ttKqIVW#1>=~8UByq5<EouTbTd+H*ZTQmm^d{rl;@CB&Ho>as
z$;0{C at l<#{<GzK<NYY7=%|klc7vO#a^)~jnuiq%mMg{a+EsPDoVu$d1L*`nvZ3aI(
zXI%`jGR$&$c6^K<o1ZO{b#9kf!PCZ=fP|qi-R%O@|1*&8ii7b7*S-VmtIP~mLRw!{
z_QKFsiAmT4ccDkBE6+*#gRFOvwuJ2Ibe<e>oKRo2%C)ESv^}M=%o7`Q6~1#F<MQM=
zP|t@!dBT!s6kb_&nL%8wmaw0=MEE at tY`>^wGKbCnm9*cEh~|qyQ$A$6QTUx~<;&^N
z&6oS&Lh7V&6-#}*AXe>;GXnL#Ha<GMSmtJv9?uY74-zl-BVwQDfn4k|e3WG`#@~wU
zllVKv`S38z_~9mb?idmT7un+$8LS^|ZRjFeQ{nmWMLGHL??VphuS&D2Z`&z6+KB<m
zLHEtxlzSPkNlZG7h#ZFwttY=j<}Z2vp%Rt#yLwHc!pv76FVFlfv%W(XT`pqJYvZql
z>#2g*5Vi`hhe!ycCk(Tp8vLZZuMj&(C%|*P;=TwT3-v`yVi+k%XN2)7(O)t|`t3qb
zFCPo=N1yPho4~wm;=fbqp9s>=!!RNCvP)md^pnLVecYCvCx03BIj_6)<y>!WdOs4u
z^+WpOl^vHyYy*hRgw+Dw{;0maAkQ5}<>-Iz*XlXnJklhY^ciY;C&_a|Nssh5TWr;r
zg8Jh=7>jjMp!2wXTHE at Gp#FI9Qb?8GxFcL=s88D|vQ5Nyx(M4RpT0Sc#cJ{WZjt3D
zSi7(`OZz6iHa{<CM^=1%_#h6WWix-2&c_#AU!*@=4lrzXy=$3U4jKL^$x<tJm*#i}
zCCinu_=DjMi~Ts_xm9>>8#_pzPi4h#3D2L)bEohuM1}_?=Z&%W#BiQyu|{XtNui|h
zJD{_2S7#Y(gp|MaV&_&s5S9hq@&&O4QF9%YIX8}qZzWku1HLcMC)AKU1tbL4YUvNk
zFVrVF4qX;zTHSF|DR*K(^op8Uk6SPN9v6Pv7Sl{}sjN4~X!!<h8&mo2+(whw#y at Aw
zeev9j&xf5)YlGY#&ZasM%pXQzW?k$@!gHQ&e+UndxdHH$xdHUkh<Uim=O%F-Ab;cd
z!znY4b1K?o^jKBamWyLQ4)tqL`c#HhVz(w_)O%i=!dzRRKdH>w5sP0kHk2d#l_cLz
zk?(KFBbDI=w9Xz_`*!=Ms_<r1mOUGfmrcSSTvLe`>X#m0(nO{)$CyR9*ZskIItt|0
zwl1)`4y#X<n6Zrg*{IsBP$k*)e3RI*;XF^acB?%97QS=);Jydz?>+IFoDN#n5w`)F
zBl<^${`Cy{8q?Qy#J2kBN9BVM*T3;Ugg@#}CjaUAL_K)=rhFzJH2;f*{zW|I$>Yk8
zRqsrB?j9olmxo9{X(9x{HCX-B3;kf_f9gYq|C{u|z8fl#?Q8BgxyAf2w~IWG<k5sT
zt{LWo=XbYDnmY&E2R;;|D4Y-zGmriD31aVl1KYr5!0nH1md|gO_O~Sd>+tqh$^7mX
znMb1y`Qs|wG2$J*=2OOFM9hr34T}33vhP0<`8I=}Pd?A4dh;dlG0#A50r)0MXf1|p
zP19tfOqvTbwk9&KM`Kd(=b at Gh7QYye*NffiSGwz?c(lzF?<4U7^K!Pt;vYvZmN6B~
zWlTIS5gvQTz5MmjSRs=KyoY&_JpLd&4j7O}eI$?kNe~7X#hh6^hvWrvg!3rFvrWQd
zhAJx=)BF0W3XD{K5}d_Gd=2$6-x5A&W38BFVLu_VoaX1;m=(_^KOs0r#y(~~csd`X
zKaNAylX>DHJ)op?CkajF+KDgjLf5r*vG|RYZm_zsPw-pteDovugR35TrTP{=$3fE!
z*9G-al^v at 9>YJ6W%*KLoVP)o=$h_SJV;x~kW5r=8veHC(5_?8*nyk|>+fhz&D&-~?
zsw37PT1utaF_?r9HJ0<3Yyx$5xK5`(NJIN%6of~;1ned?agOz^68bL*y^ihTx%8Tx
zLRz3gBXtc<Rraw!v<aG at y@01a+=&ie)7~n)+lV*!&pgjsg#tXmc2{I)ej#)hxiX;s
zN_-j1fJygLeKJ&Mn@~kpC_K9a|0jH$n81IFvRPawS;zBXvu+C2 at myN`oQ+g{h7q3T
z@!)-iq;VA`1RaYXjdAQoTC?pLJwK<g$tUl;>^2`#mR*%I8GfLbgEHbRHg|XI!WrO`
zKb3 at oZwI?zY&WkfSG()VUfV1qFRdq35f#}K78X+3D134h?#v752%|+R&MPJT!PG;l
z1L-OFgR4o|RK2c;dLZjhl{pV(#oq^0;&1D)h;S9~f1B{S3G4ZhZOvQ1#MmhozhZQ#
z0$iTs#Wr0LY`<RLs^{#mPVz)}=g)SQ<Xj;<#|L?`KjF=V%X~D}cV~w4bbWx^h37Y|
z9tT=)tBqeA&eF_bttf<`xTtQLIjnY`*Q>-FJC)nHa(_Oxw*k|#^Xa~Jg;7Nw9)DDL
z9ggpGQB!zMutoydhF}~@G3SLc+lO^CauA4ie1eD^XCPV{`xFc9_vrzz4ST)_x*3dt
zGVC4=e(2dVhWTtUp8b(Ldn>+Ex`93p<J%s at E*B$vWPTtJjG>v6r$QzkukR)gYM;eL
z_=D?m`osN%id|mn_7mJU7lUNH*gSW<#j^9dyU$;VZ8U1j5SwknO_JspGSf8kf8K!8
zZ6D`KnvVs2B(x8`)*mZHnwX<-)2zx~;FAJ5sYSYf5T4JD5Kq!gq1d|044$F7x!xxg
z_ro>dkrp0*Q9O1rUq{o|m^}&|s_ at w7?h)ii?Yx5~VsV`Z`37j`6ju4mP-}|5fy!VB
zEi~f#i}hJimv)&~_^kVf8!4WTC<d>ageUErur@#3C;tt)j*Mo_Wk7Q66dvCgoLuvA
zwq?Z&!sT+?O^w*EKkZsB^guLwmmwGPAl<(pgW3y5<A<lK at HL4g@l)fW$~Wu%e-L at -
z#qL&5yVN~KF|Cj+WW2!gk=_c$9-T2by`jGyxIEVj&pah(NO?kUqmkVVy>ToY$+ca0
zjAUL96&p5laCse69qACBCk!*M)c564$As%X`s1y`z`umAE>lCKm?qplN at zbz6~L=c
zVRIOjwC;m7ybu=<aiUl=osGR8zTTYM6Pb&uY50TdugbsC;}KpIc|kA2nf1|i^4uZn
zxn0yz=s0#(XbpvRpnC9- at cUK9JP`ZCVSd)U9E??qcHs|_`X-4z{0i1DNsZ#0>^r9F
zg82EP`bKXaQ`WOr{L`bR=Ea}cYaBLbVjA_|u*vx#T_Vr^(AxTa#^hmq9osynZ}j=2
zE{IcquwH2NI6&5Hy>jw=_)5%qB6u^TKY$J>%}0eF4cl2>-x_fl at SQ?K`#G3~`*`%J
zf!I1)E{b8Lps+O4L#fUl4?dTD0)KExIIZ~+ at t3-jQO--`Rs^oN^HKmKAnv>zf&VK4
ze<cEcH3EMv0;k!|;1zdhRylaZO(baGM%>|9%@90P4al!UY6 at I&Co2M{ceDhrxD$`S
z>3yZaEAG&#fWa&7aD-ssM%)<}L2q~HW<C;kaw6#IG_l|nclM9K$4B4?M&J`7 at Ph+5
zg(t*N5A#GE-b*Xr<IbT0db$;N=-oiUEAHe6 at GpWartk~pu{Rih$;4~m`)>uOm at kqi
zAGVP$-ouJddXWR+Poc8V)nz_7ZinzC+ at KxjEWzm`?i2*%F*xmP%Dj4zUW|7<8Jzc}
z;_Hb>kJA<YyuTFqbAorEpQP&=^TB`P&W8g0=|<d{9KeqSU(PRVH(k8v(|iT}lmI>5
ziaQ^Tz&{qiFJt~5K38}fKD;uf5PXFX7BeemjAzmp2KXC3MFG5t`JlYSNM5Z{iMu=1
zJ at 8tlw>#J!hxb#;?YJ{Dz~7`xr$uI7c_<Ik=az8>=RJ)=5_c#PC3wa0n&==(dj4bt
z{^<z3I0By=ftN+#6%lw<0KXgg%|d^XFBvG7&#|aagxhPZ{esW9!?PI*F<;{jtyX4U
z3&AI*=yTQWxU(ogPq*U^y)qzp#htnUzD4+3`}0+K>@C5sm*3KLJ0-{n$@51aPCw($
zF#-MtKQ014A%Jfb{?-y(xxOp7wJ79g(DjJmwq!nRVE!9-J`><iH{#C85qL5JZ-~Gf
zBk)uJe at o=F=RC~HkaKx}z8dY8?VilHS$q2y<MXqwlP9!C5_g&dd`x~<M&PXh{1~)b
zDqot1q|54myWrmu+|~!8i9789J_bK60`H2zyCd+`5%}5wJ_BPAlK*L+{3i(h55aBy
zxm at rG(yz%7oy14JJ{#a~@XtlyXGY-bBJi^#@C^|-uavTE`cK^HjiBEYf%gUQyF?FF
zqKA`J0&#PygF?*LxN~8E58a777f0Y<j=;YXfnOSdUmk&98G&CNfp3k#uZ_TMtIJeH
z+_ at ow{@W4wcO&rcMc_Y(z-fdRyyDI+5%{eU_-zsRPa^Q2M&Nfw;CDsf_e9|LMd0 at b
z at DJ=m?cKvEp3Poy=a&I`x)*mIjKCj`z#oagAC16&6M;V-f&V^$FXDW?<m~vQ$&L0D
z<IWQSdXujwBk(^(;D3(5X_h#6#ht%K;QbN!^AY&pBJjUQ;4eks|BS%@6 at kARfxi}k
z|0jTNlXA)bw9(IKMS=0S`sL{_?z|O&$D}v%Xz5$r85Mz#iNME3;Nt at Lnfn^QqOjPc
zNpT(aiaYxR=sR*ue|oL-3z_~^PJo_x#T|QEl;vzbF}{wVrxnWJ6?YDdz$ZlD2S?zC
zM&R#{!1E*Uf(YE6gq4{Gj6);nCr98PiNHS=flrOV3nTEN2z+`3J~MzX#{h)<(rpzc
zuZOEF$DP>$db*8qUj(j4haRK2^Qj2>;s|_h1YQ<_S47}d5%|0aye0x)7=hPD;EN;h
z`Usrfv>3eN&WRDYJryYPnYeRG1pSf-d}##U6oD^`z*j`z92K1 at B!0!6mI(T`2)rW#
z?~K6H5%}r=eg*1(7VM-faX1(j@%2k?7xS|o5Ibo-vvv%iXgtz``4zhCxP!jOowWh}
z2LEgTAG;s%@o+o$T?-u134#9Q7{=!X at Dl~M^3&6FC56wy=BN8N#W<~yXI?9X&y|_5
zbDHq^s1IK)c%={joZvFdb?^2tUY_Nb^IXAQLiy4s_!{4h3mKo6<;O2!e0?BaR|sC{
z<Fl3VF9hhXXZ%Y6{6 at i1Ei$f~1(z*#?!DUu*Y=cd{!DPcKDRUewLrQLFn)bjhs)V~
zc~o#8?EFq}e}120T+afUC!b~f7lCwNU_2{OZ~wvgaj~a-3GWnqi4T8M at JoF7sQn2z
z&TV)0_Bg at qZ~K|Y_^~nBLS|v-K*3!=z8uQ<V*&XK7+)2@&E9M{Q at +dWoj%NmI?e;k
z$6w14Ys0v|bRFj-2M`MhvQXSg89zcH=IiN<`%BSrE at C_pp#Kx&MFD*Dc!Koolp#5n
zaanj%PbJ<*KaNz0`MQ+x;sAaY<0S$7KaBgW1LWt1LMxV;S3l#&W`g)NofcG_;{y0u
zj2|Ds?`Qmk0RFxS1f3MXr!uZ*M+`|F<H-R1w;68?;J;wp&bE5D`x(E~1LWJ0T#+ve
z;Ab=bwE+GU<2MHIV_ at L(0;uD30xyXD%e}LgeCuQUl>mM{@cm;ixwz%|4AZ~r;t~$!
zd=7ixCOTW(c4X=A16~k&&86pJ#jlD(3IDf?TRu+$pXgi`;4=kHt|0chOK<sH$M_pA
zj^PYnldyNHAm*);TKr1J-*V{-<l6^6K=kPP<+A<w6^v&E at Wb+nJ{G_)V?6HS;ubjL
zClY-S-^}<Zm)^=b3W8Z3TAAo`AK(QsZ(VhU-26K5iOxkaOKYF~JJXMK`CIyP(Gg8_
zz7(K;1b9KrTZgsuD<={CR|51u1YQvH)@LpKLMU*e^R)o|CBO?}-ny-&Pke~zuMW_E
z7I;C-ThF!h<1tX3=zKjue+uw|m|b1)_Vc{V^w$OGkDN^O<6ZrHQWW?w at QKb10s0A3
zh~8Tlw)EctKGFG3fc{@h at 2wYG`c3F6COY2>&_4paAm*(j+xk$CE~Fsltrss9Ie!KG
zD(8P)K3Im}Ys$w6zu(1e20sVf)(s)$k1s^vUk6?g^VXwnx|7gguX29w^0(=p&iF4}
z+@|{g at UV2>jKD`v4X581ctOmr65(uf$ppoVU*-JDP1mONbKn!5vt69cFP`~p1pgN!
z at RuX-N$9F=T3VmWBJlGf at CPFBCxI8ly!Gx at No3!`aQsN%Ve*{7^iyncm_69w^?TqG
zV~@M~vE}$`1fQoP at Ud_~^0Wfv`ymnd^a#8LctOlt2cIu|C>F0ER^-ZW at iMqLVd<uT
z7sR}E?c0UVGmLxd+7 at q|7S87zzzbsDy7q5`&xf!;c9nBaKyPO-ey at vLfgb`MCg;-;
z_)EYGVxP2+^Vy%2bO#LJRnC1be_LMnGQQo#?Slu;BtFIVr|a=l0>3Kus7r78e4g=N
z2k={&&s>*JQuOdD at UVR4%?igq8iAKY;KxVcAGk1_e at g`Ynh3lPc!A@^1MpeI$lDze
z^n1?^Pj`L<e$al#k9ueyqp+`w-Zm1wt7QT4aZv=HD}j?gwr*cT`&%iACnD%~MBt<6
zgv&oM0-qLvmjW+{EpqF_B>8q)1pYPPB>$3JBfnkIxefTl*iT(eOcqr<7D4|H=6|%C
zE)R3?O#UZ`&z%823xF5Ig7lwd+>4ihTf)~jfs>qtC^x#`zVdaC;ATF?dzZ!k92u_9
zByi%>A$%m;&Uu2b6a1?p at yii>Vn-Q1`Qwco%S4`8z{A?z at j|~v=x-JJiv_QJp8<X&
z_``x19%ukdp9e>U<liB<rLPtIp at R(l3Bu>If)`FOz<q*WF1YhQnfSeykKo at H`WFOW
zcd!AP1V7+YB9Gvbyi+Q8-XVq%?mAy-!3zbq`v1D%#e%O9`d<JK)91mTHtBBj(U%Hd
ze5hfNBYaL1yjF0 at o^z?-9fE&H=<|xDd=E2#G;e3Q;Dv(Q`M~o8FBber^O*B(!Pg0X
zt>BLeUif|kNbx(b0}sn at eu<H%R_MPeeC7i$h#lj$yBfi-03OEYhfIH*OW!T@|7QFI
z7oRBj0dt9e5dRo(s)x=8453{?tQCAmzQHdRK5c?;5yo^jE?r+@{-1Hvz1qOeFC*|#
zr6kYEF1?lWun2r6<4Kp^=68Jr{s`j at 0s2=W at Po@BkJISVZ;)@R7*Dx4?Wd;ePrylU
zd1Bb!FtD?Kx!@RA(M4y&(sdm0uyQ;l0$&ZhAm+t2(OIu_)m9k(OE4~>>yI(>c@^+5
z{=bUA_kv>|Mt@`kz7ja)*Prg~f)~Sor|YZc!>OtweKxy#v-;c$ocKH?^j8V}y at GE!
z!T`4ZzX&``&T-YkN9gScd^Yfcm=~`#QTX2$fq!Zq(YLyCUM=5#2b|>GQD_)!5k6IL
zj0s<tFo2CHx)FFmtli~vi_pKs_-QU~?eJHT!LWQ?1-u{@q at TBda4+ubdMWqM0uST!
zqX_zb#=Bj4wu<5ISP1^kY8SWVbwA;;wJy%*d?Ihzi;N!f;J?!~%X~N=5xiD#I(w6@
zX2GwVVSbkg$Mb*}s5mj3?lVHa1O6{vd=@1>_o*d$KIh6)$air at bOc_(xEEJ8QRsgb
zfq&{~l4qUE{|=GA4S1eBt3Q6o^k=*D3HkQd2>KV9-saMA_`FCkJY+GYYipC7=Lmcr
z<Gn6_`{cER$GrG7YY#tF7mhzhxYOtIxk at rIy<W- at ehOVSQfCwJ0u{GrM>sb#exb|f
zLHYJq#=W?;V+=bd4_^wLFT3<~jv!sjfQRXGRRq2{0>3nZ|4W3&zT&3aZjyB>k0p67
zb at 89bw<j3C+{O8PK|E7;9Pzo*#UBzr*D`Lch2utM|BZ1kF3yf at ryWmxytp{~?JUN<
zxVR at IrC$=R;^OEGKf2xrhp-^_ZC9Qj8rWG9f#1ORcU}6!<l8F|c*%*x|9dXI<-a)s
z{|)0_e4XWA at EPJ0#9JA+tGn<UB&C}fzr{`0Mm*%4M0{>_ at rjb(4 at cm|jNcZZPetJ8
zG5!;mp3dW=>kq)g>gQ__xN|be`BRtA7Y!Td#0dN*#_x3L?fX^6oD!by0^kL)yIguY
zSC6i*MbQ6%>F;sr>C8O3Mkm3?xzEK at 26iSz;HALB^w1oEpAmuI9)V{q3FluDfwx8A
z*GJ&DMc`Qt;prY0ffq*L3nK9IffuOw$t{k#e#f}AnvV0h;1ib;y|uoML+9?%)dBn}
z=i!+7g>#1G%Y#hs#ZTHug|`_0O_rs%5h2qWiT~p+PG{cHwTkiIyZGPa+iw`R*2r;p
zR!naqK2N&z3*_4u82^)tzh&4vFEajT7k^#w`KWjW&R<;o--3UO at xKP}eU}k^e*kY|
z+>4WZQTRN_xXq0 at 2aRqemJ^@92l!mX_)7u&UyT3L#V!BiRuG?mx%ius?%jmPUUl&q
zf`6cy=wEYjI`fRK6^#GK#p&!ax{f%N_`Kobo8{YMgsXT+>oF`@NqEeyCv=V%UE2wd
z&2#a`gik{Y(T{R*I<t$e|0O(D<KoW>{nA#VALHV5J{Mj06CU&8uWX4nwh{eUm)^er
z@#locyf`jP--Het>tZhb3`zI!4&syV;#ZkuoqsYu-o@=)-%n2?dN025OG1BMC*cRX
z^bmuu6T1kvPs`a>xN~rt at En)kj{6=2ewFi(i`y@~-Qo7+0^nFzvSiLhlJ1ICguma#
zPnG<BVs$v56z~ES&w0A=DO^K*3S2%`Z+|D;eZ#1nGlXZpyO!|DF1_V*I=&P*A8~Oy
z=ZCH%K1=z1(8cYSe&7Yp$Lvps&hnw_eV-$Is*7JC-_`-Y%K4>>n+?qHe}U(jM>GD8
zIum?ig)Y4<=~lv>A{VD~bm)qmMfB5Myv)GPNrXFI9Oit{^UX}}#alKCef>J(W4#YK
zs|NS}!T3=w|L+U^md_J?5I^E<!ao(D|78T;(nIvcF8!^-f82V)=LYcW8292cFBkfI
zBJigf_u at 9KeV)F7_y_Tgj90noenI&EG6EmJk=6lka_McEp2GN#1Ne2o3t|ghyi&?#
z%sJtB6Yz=7EiS#~{~gAE62Ny7AE(~M&lCPj&n4W8|D-cc==vw)C%W`cNxiD;CHj+G
zoX#Gh>lwyRadA37gs!slh<=HS^O+#P|4evnsf*K at 7jzx9iRiufPdcN6u3s{~%%!Ju
zHt72JX5zEL#VwzWgqu at wnU2oCpzEMM!dqN=I>Uml)r_~f_<aU;wlm)0;(P`L?u|R2
z_ at rH&&VHb)o^dZOl+Kc%>k7ub_)NR*^DN_DTqvFSK-Xt3pz^)T<v-iN&O^X$SqsD;
z&j81Kg-dVwoUp}=XLnQ>YC8Xcu2+DE at u@<^4#T at 5@S7v>2P5za7t*?k?bRJ;tP#hV
z20Sd?PXnj<r7iH^>9Y3xR}u7Y5r5|_R}V*+$DAT`G!vb5E^gCG0k_|Uls`5xJ?$bl
z*L3;3i}Cd?K0)yRMDUq(G39roOE2noKF#<!E^cKwk?~#^pCbIvVf;K7x9Q$QxU<>C
zPZRnn7;sH=`dr-7U%@zD3 at VpY3+Fk;FAU&Ca2O^!Uku=9Fn&n at znAe#19;w-iI465
z5RWD4pUC)C0s5_sZw=rtGX4!0FBLvBE+PKc2k<i(|8 at Ysi}4!+__(hSpC7omm9w7l
zn*;b2jNcl-pJV*?0ABP}tR0HX86QhiZH+5h8#-4eJ5$S>yV9x7sf~?J^2EAyVp=lU
z&~$2dS30>O)zDGBa85G0ysbOgxModaRx;Vv-r3sFl5EBk4e9pI>e|M-^vqSMM*7}Z
z*HGP9j;p0{VO?QzMl#vn(Uq8ytOjwiCDql%kCm6Ns!!GzChJO)^@(JCQF3Z?S7*c2
zLZrU1E<HQBcxf`-nMzf+)TO6)G&FZs&u?idhg^6f)q;c)UFqt&q9mZ{#IqVV8yF}r
znx0&cT%JlNo7=ilo#|wETk~n%sboicSNY<)L}oh33gsw~C|cUk)!dluN_RH5Ek_p8
ziA3XyhEB-P(46i<eoUqs>dF_ at O;<cXI5UZq(w*&H?MSSpy?vO<8c0`lb4Xp#RfeK`
zN}r9aqe!|^<pUR3B3WKuH$$-_wTrffRo*HGb4+QcPU}W3Nw-Uh*C&w)laGu{>{e+P
zQI=afS{fQt$rUIFn}d0a=hvl+5*^K{#?<QOu2izIy$!|N-Iz|M>(VpQ-5o8d>UmTn
zpoX$!^*pMwRKsT3y607IQ_+g1xp$aX=KZpcMfFOVsKmBx at YU9{IbGdLldTQu#uWo<
zcs{qD!B$KoJX%00vV&TR%$H|MV?`J&#{?<X)frkix7fN_NocijS$pT|hR!Be1Icv5
z@{A(2d9O>N1vj8|a`PlzCyH!oEp2FASv`*nfLo?tgD5{#$fi`fp}D1~Fu6FjJhi62
zv!Si4g>24T)beVj+C&j-SZa;eV#{lmCip*+L{`v}`N>pyqmp!F(kP^C?J5mV`92|M
zHFq_p*LFatg-`^n8|QLCL)Xf3CFSlJM9(PHqI!FkxUIb@#U?W%r3~c`&OVYkHr5)J
zW#JsRf0<R<-rWZK&kZcYgqL_G9FK4<0aU(gnL**ne4<KcHVi<jv#p^eF>9{v+bSAb
zn_HSwU5P|xDqRg5(9qVHDqmF&TJs%UPUW#9!DX<5%qVS1HFUZHc9pN1+SuOGL|vb!
zvN`Vk*(IIJ7dEt}(0`%2+Lkq}(t&}P1?}!KxfyjS7)MTP_OkA_#&mOgTXn^%#q$@|
zC1=#78`3Eln_Y64U61TFwXbd)I+MiA(#{l;C`+O9Ufj^OJXPM((!9&mra?XBExRO1
z6b^x3A_0b7wVmxv=qoZ*juxt|*)*+5RWM!|deyOz6bBEhxv|T2RQ#5ZH0<^igEiCT
zi)$;IP%o0zO|Y{~D4NC84=1L%2_DndoCXXNTa@&hSWi^1x|J3o)5DP at qzF6(gtW(^
zlBOoNlCy7TUA1&4EPK)uiEd7BN-b;XZb_p<Xi24ExH8o5WyDRgXa;O4JGE{i)nXln
zo)|pMusWYenCd#XnmUuoGMlkAnB?7}bw*^$Q^gFMREV}cs##((cDE#9Zz8*{8LJvv
zy3uhpd!`t*W=0d7KJJ*^z8gLtS&h2XX}j*PjgNp%Am}3yhzdL-P=UQ>=PD9SLDk+N
zdR*v(2RRg=CdEZoMzT at aRfb5uxCL#q!bo2kBE3>l`I=N?Hw~Z$a^1- at RK+sLo|$D_
z2o)-g)XgQy2n_R{$g7zNuco!3xh>h$+|@yTE2yiIi9~V%{YbXLg`mbXi~8N=opAQq
zV{B+kS1+wu3I?d9=w&-P+dI6Wow#&!lK<c5*lnX;HI>n^-}cjhd2wU3d4_vgS+i(v
zNlh}jFqx=H%vf30+|{tOCDl~hnOfGoraaSmaE)M?A2hw9xy>`YT`19^*Cu$9o+E<p
z#xw7(heb^SWn5lc*Y4^e%uE+$isRbo;dMfT6pVaKPcW-m8l6=qGu*IUYBJNKbf(sn
z7Sf;T^k)wJNlfG4v+3{58T at x9|DDBu`EC(?P0%0yIg_6*VxWlc6&ZvdFXG3G`0*lU
zTf_-X<AkR%hiQfxKRb<|oyN~jXUZA;><mU`Ft-^@GlQR<!B5R#4m0`t%!HYe!RWWH
z1I?TK_ at -n>x)ZY=JnANE>zc9Y$%Pdq+WrO&3mc+U<u%&O6(wuh8&_hErlq-YZFy07
zdD)EeRfDh6gQK=JbC=W=;_<pZgQfN=ybNf)8*UewFt(V-c-64dA!gOhna8ggEv4DZ
zvUg)R4U<|O^_HG=ww(rt;z1gfqUt7eNg=O+$-mv0s_;Z`tI)f%U$BCPSg;V|S2_dp
zgo&hSId0Bo8b=7TiI$sJ*4BL)jIM`nuFK1t*+rq*q3E<*-ci at dlgm}u>||YILt9%4
zlgi~#Y3=+*ILN4 at i5X@Z#X1{ZiP>Fi+tLkdFx5=M)g(`;K)EgLjSVd+Uol`VdTuA?
zo>FOcV!&Nh`=GrdKZbpo5CMn9Dxu53&Fhd^(c~69tdWpP=E*!()@F#e61-unYa`E$
z^Bi6 at QHFX4>8{qzG?PIzUEy(t<5@=IizK+v+5pcidbfRIqsqYhw$0Gq9F{a<RSm~k
z(y&80nwsgZ8)QuBk#VLGo?$b?$HwY(SOO|_8SZoZ)@M$#w7s>Xxn-dGZd=;SBu_V)
zCIp!V*XYpJXxhEGy^G5z+0wkUv!Qb>oQ38z_vjc>&fqCewCUMR?a9^6O{unWT6J2e
zZ_UB2wua8m_SNOQB&BA?luH)qt*0&S#;lV!Q)QYy=JYLPaz#U16X~F0X(M^QUi(WV
zOWM{B$s%z3!yu`U2T5%W%Q3;ZxGp`17$ut;(hX1`OjtUB*~|vM4f{kZW-w6 at tUkkY
zLe(B#`g<sg#=J-t=OBm8ZL8W>rg%ck%i$s}I2r+tu!b{|e+M+I)8E4yMt at LVJ~A3E
zN|s{Pa!8f<olAQJ^F7QSeWcVroaEoZ+?%>RVg*0c+*9&{%l+Ft<}5N}PV`@I?^rkS
z4y9Yj={B|0u4>&wCeC=yQrz!=71!zS!7REB>K)3WO at 9w(ksIwhm_<r|4`tD4 at SUru
zI{iJEMO#tc37?hHw(0NTEWT3})n;*s6?J%C+XywpVI at 9<@*6V$ku1DnCBCOJXDk0m
zHNGKb&L+MmGxv^_oN0Hqb9j5bH*SVaDTEfbueE;Mh>wP~A2YyEkwTd;k+OU98Ys!e
zmh#4O1n;(Wx1i4K0iKAwZAdQfrZB>W#?!i+J26kIuug<|V3KbL^>w%tC~t>CF;P3>
z3Jvh&nI;LG#v*%TXR0;TmZqRTH^LT+H%(^t)M-t%Hg>F~kJk28qUX1{>DWkZ6Vijp
zGgRC;G<T25re*D1?I1kjM>-IMurihG!sG at P9}#RiBUzVBHzSG<H55NVT3;7I>Y!;h
zwswG|Z8eQ^GSt!BHh`9RI&+R2_=}i9iYdn&B0}buHndPI;nD~VBMfVC9nHdGK#As<
zUV+I>Op2nqcXl?cO}3?0BOJbMc^cagIq2P8MjT`W3QZY7`UV8#EpA255WS97jb!7B
zmC0oYnI)#XUahi`k!3RQ9VE3Gu2LAV&6LRoBF{V9JF!S(vhz0AC7Oh#AeD9mzprx2
zj+=_Oh^g4Lux3pXbFN+O2nuaZuT8F!9R{*AROXJo-AU=9<|ZCxpe_m#kQp=q+Qjx9
z^#>vUUTHQqbeWlL+!)L(=&-u&0c;da&+n16xl12lZc<O%BfNNlnbPMO|2 at _rYEOHF
zbTgFh!zK?CJcv2Op*C#eQn+=Qjl-adcPLpPm%{o at 188u!T?$EOM0>z6p2~e_Sc>g9
zPV$(x)d+S%RDD->>z?!_NSZ-Zh7r+Zpx at t3=S*bJES=D<V>Tk_7k0O_)U+?R!8F{$
zqr&Gy>C0!srEI}YDeASuyQqPmgT2F!G-HI#iYs?Mq05woe9OcHaPP#`q at jgYHq)tO
zYE5H`qXta3m6+Cv5U1u=+ at S6Z(a`*igorJwsHiK)#<h~UHRZCvnn)-Cq(7-Y76NKq
zTw4}czAwY}Hh<!-*RCTUX!$USZa$gnYHWaSlxl2ku!eQWriEOt&Xn0M)zH1BytTDe
z`s<;xn$ywUwF3T3<4Rt=9d3z08%<s9vMejAL9wi9M(Yi)9bT-Vbzl;~9TiRobe)2;
z)!GeasBMiaeNcBBgY2HUo=n$T?1F4HMc*vaEJYZ3TM~7pafKi$m=yUvkchUO49>@L
zsl_evJTfn~TR7DptD2~HmtB|8#{w*OwT>Q^$gb#p$?l5Ox?G-+yQDUY6rp)7+r_=<
zv}0zN;qS%}47oj^Wi at nlH81CFFVopNczN_nXgY7mK#0QZdRQ6$ky+C{(vjc!BNeza
zC6-86UoYJmB^@0tYk4 at Pw*b{*M8lIT at cn7r<ql}<HX$^MmKI;!rs8Tg7A?Z$gnb~e
zuP90rgW8l7^{}@eX;^7{kJI>c=&~owo{a_Aywco(ooJoquq@$<pS7U5jcP at C<YutM
zG>{zE(Aj!S#{h(dwBed#O}ff`gF&xM5{bpBj#RptLQ=Y-<ti!!862vT<;&68!8~^@
zYC{EC8kLWt1j5tN$*djx0}C+Q)7_cEzN<#;=Ps>1hO-x0nG%U(ut6-<(BhJz1H!nh
z9i#nJLn}rfG*A!Q$xR_TiD at PbO{lARD|$I%&T8i)Kr32X(~u}ad9bV5O*YgrB?>9l
zs)c&7wTLoGPM_Pne38#aszT7z*v{1wO<7dWy&9sN5EY3SQ(YaAt-{P5REe3Id at iQb
zB6m_D06D5KXQAEhrZt@(W(a4IH%V67#D#^D&{n+Cw)8GY5`|!6w>xpe3Qdf6e^Q~b
z!Sz+E1UZ~#W`9`}O_A|27R#Qpl- at zX?7046rpkuMbBN-uqulwZ0-5McwqPD1+07f(
zTX?2{V&`xq0S+W+Ns+OIH<Mz!FpQLVNGT~<-_eFI+AvBt{K0=C;5mfv(u}G<W`kzb
zUH{%pqEj1E1{G58O78aAgL=%J`>`3ek at zk@|Bb*CTGT;K+i at T^hv)~A*)47X*+K&T
z11W~k1o%k(zzhTp9eCVi%_|OBz}EiqRRcw>x0ncFIwHZ8uT^X?{fK0k!N3WDj3aD$
zCskCHn@(1Ry&EfrWHIW2A#Dk!8TGCdjb6}BQ6W7yiB%`I!ltac56=xQbT{v+-NNDO
zA5N7S^p at cP%N1LSaU2RFv~9_T8F37uhqsq2vp5pdJ*~i5Fq_M*8fEjd?}?fEiKgbE
zK2w)&Dod@(s3_s-6nW{C9y>6-*YlSqMnp9p!vs!RXzjp|*OO?NDVS~L?k+#OyByAp
ze{VS{-P_0_HZ-Cc!_64D5jSUAi?BL1%Q!Z>a9I=LD%GYsOFOzvpXYI!1qZVlYfRJ7
z@%!&7ZO-I#1H_5q(+HZI*~jqms~X_jv}Gz_#NU1q0)2$v_w+RFX*1OKq>c4<&su1m
z;oWQl*BOxU(H0?=$g`^<Ge;wE2tlUNaZ?-d^9M{jbEgOgy`O{jaCfwKShr6xcsFjq
zmYJufhFa+<-|g~BTkvYUTLZ#21{SG}fv&eYNY4?y1)V+?QQyK+qXz=}p9Uu>w at PZA
z;jNPH45C%~{R7W#?#inij!zkqtJyeUgpbRp2E$cqXE+Wblbu*_7V*zF9}_s$BU9s^
zMH}RS9#N0GXL*>GZGD+t^`Ilwe<l){otlxrZE9+#s at vOy-3;jm%=u3P4G4yNhK1V3
z>I!D{=I);x;H<(CNZZY~tCWld8*<gvf=$EfmDczUwaL at cJ613##-p_r3sDlNAD%1`
zt7H)hfrBAdas11QPG1RU$V-btSX*k7t=(4G at KmTfVPY(bU~eCtrIlHKThX{$BkacF
z`M5K%-Du7906nW=%lIAMsvKGO-eI{+z2y0!BsNfDHW1q`F(cKnwz_s$XFAoA`$gwY
z(m|a#&Vx$Yv$UQi+|2`rc2zm~fJdx;He!OT%WM=?;f)#fm=;QP)x;KWTRFq)G6fAa
zG_5ix!tFu`vkHu!0<QMp_Q9gcnw_)YT3 at a9yz*}vFPYmjmZ1fuG54BmTHA(`>Kd_z
z(#1=k5t)P&06Q>TQOx10?g>1D+!4%CJvhq~>*C93{bE)5!uiLvtSU#DSp8Zf{I-up
z5 at fuVH6x-x7T;R2N`p71WDH6nm0JP4zHLvrIBrsdISmE-{%LP5hZT0Qp~nzg$>^(<
zgJMZ0T39wTQgnkYrD03f)ZN<ZhBpt1OA*eBvclkeoz$9+&Lq~)hb0k03In`&b$(df
z*s&EgQ5XXP2Fv~Z>yS at nFp=8jcDY~GyJ52mIvc}cg;2hcl8RW3fK(EAG!jx-RwE?U
z2<eKX3fI+8n=wLm;Mw6UOkQ$TwQ5j|$RCx8-b!ICFyUa~EyCj{1YZ5~{49I$N5Ijs
zH(W(q!*4w^eIiKU=`bRflWSInRlN}vN8LZIlDUS;dfT&byebY2PT|N2j_#$<ca8|B
zeprqzx1y;IY|uvmW*k-$nd#l;JVKg6jf~XPV6&WgI&`^>Asc=XN&^lECT<c>lyfk>
z?#hQ;QKUfzQVBm-#x2S4+om`u)NhW7CcvR5p#cZdh1)Yx;7rnpslHxU2+IQD3s~?q
zK at 4HcFt(zz0u4+1P(- at Z$@|AKcW_yafQIeT?q%SNv$#o!V|Pyo4s;CR9ymWgn3(qz
zGHhfDJe84KuPVrZ(>8CFy at 6PfCB#utjpenCv}FSBa5FEBr`F)ap2jpy6fLf6UTl{s
zXWKH9J_ at RI!%h*v3U57g&x0$GEt$a;XGmu{=-FL9qO-A^j^j%w&5^9KLg6;X!Sf<t
zEsfK9=-mg#r$WS&n<@VZ>j{)d`^s*FJkZb#qn8v$nW&wCqs%dSoSCGaizAgsiXWZ1
z?j_x2nnY+*6;BUQPS^x;dJ3C~I;^KB=hfQTNS-UVaji)N$l?_NW{KNfSWunspij0X
zgVWg3-saAgjLb2)YDpNqo5_~nK^S!57tuglyaaytg}4gU-adg<!72GcjvxnMPNDOA
zgt^(}um_p%rsR60hC`!7<s9NYGI}34fjydo5zzmxb0Fib-KjmwJ8n>Az|*HAQwW1d
zVK+-*fD}fc7zUAo&cnzUxKMK}E5gbkk4R!_KLciv?BRUF=tOCfLQj^Nj>$jHcxPvd
zLl^bD!^&4J#5!YjEsiv=tJdK?s_%o}G1p9*SgW<i4lWNrpqvLW4IHSBbIjd;ncCLg
zZNPoeZ(Feog5ipxsNlh at TY!vfr>dJnuRzn(EEjde at JsRLEcUTnRnu-Wv*XNmn-F~9
zGY*G(RF_R;*hg0A(b}Lrk-;fIMvSiI-y;gJiM(4CfU*3ZR{$mQZd8E3SKA{sz$P+$
z1<<Au`yQ)z=i%07j=l>4=WU2IPj$97x6v!M0*h_$V(HDXuE~ZLe*aUtc@<uP7kE<z
zZ|r#2mj-u1k{`P+ at n4%4^57&dGKc-&niXy&k`=v>_1~HwDw(Eb^!g9~3tj$8nhDKU
z&;(Qi-cZ`aTih}?!oNGM6;C%dcO_T1cQ)aKCA?>qX09-KW*padc~3EoA||8}aBpEY
zM`QXAyX~-t at V~Y;@zSznjEW|?6mL3d!pY?kIl`nr?bYJw4ISQrX#0A7aQc5msq!2$
z%yY6G#~I<JPMwjR=eyjOfv5Uk?8`v<|7xQQ`3GN<-ra5(W#zxHe<88SLI?U6Jr0L|
ziDhznS8hYga=e=v8<qFi)D5OpLf<)umm`I}bgsO7Db|Xrl6ZpyZcpRsaLC$)t at B;g
zz!8av1v*4B;%>$kPxB6OT6zkJ&zoWRENf|4Zcc$ggq3}vu-yVtYhFFYt0%i$^O|kf
zyi7=eUiBLMy8}6#5?#Xp>tQ38Ryo4t5C_Up5F~OJMFr#7HtL>sncZ1f7j5gp`<`2q
z9i7d1S3Dv~d5LdGnYAw?v6G+~({k?GG!}1nvE)rNbhK at jheyGEsC;kW$YPLX?i2DN
zKz2u{@X2GFUHj5MnnU+XPOJF??z80OdUu!QFoQU05t731aJ&M)BMIYtEN|HPjiqRF
z)6wSayOC%EAr4TX{eFR2LrilXU!N>Lo|_{Y9fCm{IT)0V5*l&oXj$RiDV>Cq?5=cP
zAnl0iZp5T3#N;za1B|$MBT%$^P<bOF-Md<Od#KfpP|fqCgK75JQr=V^*xM$C)<la1
zHooalmLYaJCb?a{_-m*fY3nz-A~Qg=xy$H-jFW~AxEbD0BYAc>eI&JJK||L{4qfM0
ziP7eIbZWcHhNWRPzSmL(jQ_4g<TWX?E(L*hlapP0$;{eF#c7%n^*bgb#+~)a+;>w8
zwtpTOePV#%i}bZQR&l$b9v1J&8rV|-8N35^B1FbGZ;;VK=ETELS7rBXvZ+dHj%|<v
z;kYw5Hj4JVVPjF)QtYr}uOc#RTfp$WpFNXdE7vN?u(e*cE at haA!P-Uj2E*_QNUwq%
zL<O8h`_#fKV9=Azkkn^y#hB5UnpWib1ab_9mgAlGa%ASvD^f&3+eZFwD`+d1Eoe8x
zL)N6Y1bbYQlFn|p<a at 5kkns&@a?nu`Jh5qwk2j7BY<(IuLmG`@nYVTL9C+^?4qZQ0
zUYfm|ob=-Dup>=*+Rj^#7&agH2ei*}*l$6l$oRMS2z*m<B}%@bj{HJ#3*BZr=(-`h
zOoyF&wMjVaI1KmT-su%Mp4)xbIxR-3aPvX-9O__)g*c%!<Qxq4mZ?*yt)sU}3?N)}
z8}?yhA%t{*=?`y{b9r+!bn1>oBxc-y=3ru)o1cZ4X`6<Lwz)GJ*Q`m%_MMFBw!vj_
zM&~l9iRz<lT4*;%^79dw*igT?uHEif at Pg|H$C{^$vGmhI8~Npk0sHa<-ni^L#u`%q
z?bC3;l!*=Twt~B*TvU`<q}6R4k<r4_wtK8_O9m+1YV3qD!T)u9K4=%4Dt>1O_B`+r
z(a=|_de`SQqVCXMZtO7_(j&(%gqCsW_?m{L&8reL{ceK!+&7)@<`{Z^3HJRC=>SP9
z&~Tp1l!{*F(bXI-m})PoF>u<^x9Zd_w{j$A*%(E)jd0$v{;)LF*0=)m%PR*YhN9kf
z!%D^e_9t2gbLiS`)Vg86Ai93{ImyUzH#ymn167{glgT=IyT{4M<IPwMUna|G_w{6Q
zHc~Q0>uE?YqM?xhjlF~F9x|J74GoEnQTA?26Rn%wnf1!7L&M<|uA!lFidNEaI2oDv
z)fpW)r#rc-xigJ(upL|vXVG8B8HNAN`2PA^=E@@g7k!+n at a!=RGv2Q7g$kdi at RbVh
zRQR(B?^3w4m&aerldJHwqVFE-(d%?;_V#cs=fi@>aQk2QZ}a<@qF=4}zoh8TQ1}~)
z{&NbiALpg}d4(qhr*vm4{7glEroum!?eST!@C6Fj`AsTZ)3+#G)1RYoO at Fb%HT at 41
zuIaZaT+{zf;hO%h3fJ^G`-JEB5QS^{QiW^&wF=kt9SYa<pHsM|zg*#({(6OL`o{&Q
z@{QyFp(Z=dGd|qbxA?w>z|vcMoDa8r_7|MmW234MlN9|G3je6WNuJ3f&rBa~`Ijhs
zmEu#SaN;vv_$>0_Wr82;!)pak3QqEWP4Qo@@Fs;{rSPj1et3>yNPKj={*J<Rxg3 at 2
z(O;wZlnPGze+B=o{;L$dwgbx*{Wrl!iq-kEqSxsjmgl9b@!|-)BLeS>z;BJfAB(`}
z?B~gIz0$+U3jdzMzoPIyh3D??@zM0(jlln|aIJ?=9N_WM<#@HiHT_Q`@HZ8%`<Ks+
z_xRte<Ud>Cx*z$T!gYSj-{<ks^j!+q^amXnPJgt*HT_={uK6EukjF>U-=c6$|AgRF
zpU+qM{Z9lQpWyM=_9RDe;&TD`>=b|CU`4OnX|bZ$>CTV9S4QA#6 at M+yd5T`k^Cd;E
z<+(=DYk7VUf#0e4=yV at Z^g7)?Dteu6-v1bV`t^TE1b$=$UM;xa&Y!60wLHrdy_Tm-
z(Q7^QMBrage6${}R`fdE?<jhm?vo1F_4ZlCN6Yh41b)E55&9I|ub&SodM#&>qStcH
zQS at 4#`4M=X;-mF*ilW!)o~r0|x_ydXr~88l{5Hi$r+crW*Xcf@=ykfahlK0%GYTg@
zwjXR!_^Wu-;-?8t`oCMzU!>@DzAjbtTK;Ply_Wy`ieAhAkfPW8f3I*Y{|gG&^1r0`
zYxxflM<~#K1rO9WMX%*AQuJE>gAX(MCqCM4pD(yS-OD2I+amD06o0Mf2Nb=Q^LL6~
z%lRioul4-T2>d^ak4|^r_nZ9s`;h|$Cq3wNPf+yQe{S;OwjTCG;OF^pDGujC!Tsg9
zRncqz`38k+|M_MgZu#G-aP2>DSGe|{AN1j6MqSQhKD<`&Cj}?@wg3EAg=>9&-~;AC
zqStnKRKACws at m@n3fF#DTH)=A{&#{?`RZ}>lZsyZ&-+aTAuhi>hbUb0KStph at +e%l
zqn{~U=l8w{JiEY?N2mMg!#!N5`vZk*`j;medcPiC6P)s^_3);`wfrCapqH+e|5SzR
zbgx#pF2~<1{7+e)-QN2{9)Im8AE|Ji?nZ^{bnjC5Gm3xdhdut9{%;C at O3^Qo0V(N6
z(|=LnI$uksc>Hy~E>*ZLuj?Z4e=1z-q4Fah|Gy|X7b#rxKT~ij_nr7}?b5l5UYGmV
z6ulmAZjGS-roweS+5Ax>C#9>$p?3>T`g}mi|El1`?m2}&{V~Ib=+`U!Wx<KQU*WSq
z9!@_`aH9V|MSp$-{dX1p^NRit5%g~=T<c-`R8O8~6`z*{C;jODYuXWp-j5$CIO#$6
zUloe}0`Rxvpv8(_+uJUMzo_K-io#z~_^%YM>Gv)4@}=A3{t@^=5%{$V*ZiM|z at JgL
z*7H6IPaZuFQ>O5%Rlb%h{9g+1Q1~?p|GMB*F4RBTcJyN(Zs(ouReZEOzxL5jGGaS_
z at ZnOuot-}1(!Zhj>wJB*$T0NFIZg0D{ZaJVuUMdP%CGew>V3GKuS@!HOMj}uwZCzi
z!im4t+ZrEUCi*$cht~>zuHcj}?Qd*RxUT=#`uJEmZ&38QKHQ>kt><SIuItJ33fJ}X
z<I{}5Bxe>1$JU><3fJxEZiVZ9=S)$QpU({n|Ff#Mk1AaE3p*n4wKI&IRDZPnKT~i@
zSN9h^3fKAlg~D~dURAi(!$)SCbcw&t?@EPh`8P!1_b6P;bNDQezm{im1U at SQKPm#h
zBm%!Y0>3%}KYDh!oTo(KjS={Y2>i?lye9%bHv-T9M7W$EjKDt<f!8Qp+yCAO{M!-u
zPmc8D(R}`<@X at N>y{T|rPmVgu<D=`zDuwI%*{ksJivO(&*Y)<X2>eBbYd@#*lb$?!
z9(#qtHT{<ruIYcIa4qM(3fFqL;Zt6^I=^E-?cv9${Ju|cvKz1AzqM}%D|&4=)+k)_
zpIGei*M9Hif)oEA;lJhoh~Q*5o>6wMxC8($!nOWiiog$;%j5z2zbU)}iQ9CuN<I41
z6#hR7?^Jj~;av)EQ at G~etMIg<zenNS3h!6=Dus_J^W at a@M+gp5XEpx3A at k=aEBac+
z=lTfzN9BgUpHE(em+k?IPr1T%xm>Pry$*7<!gc+eR_XEA?euhoSE+Qr5rIFg at b4@7
zeXBhFkEnXJP~lqswg~)mh3j^@N#UCRR~4 at 5f2i>9DLJ1~xaRXx1pb=BPgnW+K(&`&
z-5yU;xb|ajo9EHrq~v)>;XhRP9|Z@*?N{6n=UGL6v!XAX at 9{rd;Y|wH`rj at N;V3+&
z at fk;Zd^A2c0&kDNFO0yy6M^3!f&VQ6&s!WW=d=j?ln8vA!nMEpu)?(-UQoEMKRXq!
z>xon6$*JpSyTWyOU7&EC?nmoAK5wad`1FY$uIu5xpYiZF75$+K|AxYA6|U1gM{uf#
z|Hgl7&o5B)cPl>MjKF`W`20ul*%m?nbA{ic>htdupVt+iCl$SxXZlGX!bSC5+r4Im
zKdR*4a59rSl;1b--{$x0f)k$~DS7TzxSqdyLg9M6^H0Hv|4zk!r=r*W{u>I{_WUcS
z;9*?ECyxJz(hpqs_;4%#PQgk3A1L|vOY&oZejIOW;>+^4eCGLZo9<%8r%~xMrReo|
zxn1ET|74S#bGi?={5L3EkBc`eocLHfd65q<6aHWI;dWenjo_poJubdM;Y})EKUBCb
zmwQyainb^9xkdoeCv~A#pMTCXIHjxYL*;%RuG{0d at dmeiY`n^WKK#Rm%sKqPO!{jD
zzw4k({C9#+Im~<^d9*)V at _rA0K<VN6e1ltga&V8Xbra2}#osUZIGM+`c$wgjek7B=
zMes#x{!`Bfj#Kl2q|dEFe_#Y&5P?ti;Y&#{T%Yjamj4+EbKlDURiS^iC=<V4 at VLxN
zSbFlA=qmN$e-!)z8Sh*A7X^P<#_1LxPn8|l6F&S<!5{ggxo_#q1plKCUoH5d#fF~B
zJ%xvC{rryjla|lbLjR=lGkX<%p0YnwE`JgF!+rSUg3t8fGf4nkbA9;zLVvUmuNV50
zefWn2U*^NB1n>0WC8JHc8+`awp}$kv4a(P9LVvh<jP3AIsDoB-8vnGy#|b^L)$LlU
zIrFJe^cr6nf!9XhizD#*2>jRx{CI^+wPiU^jKEKdz)w+llpe$!GXDlef3VW?QiW at I
zH2slE&$>Sncb at qZpZ~}>ZlR)YQvAj3a_MdPYB`rFdM)R2g=;xA{b1xIK0}dHr at Kt$
zYlV_$FQreiwKiY2zoquxs&HEmsou6J+|m=S{m(k#Pq<F^0)=-dK0g(l(w&I^R-Q){
zy>2hBD*QCX$M)y`_GQb9aP6PBC_bA1IT5(ln~oblK+)^C at lPrIOeN<?@!4PalisvE
zwjNS`wLFy(@{AOpYZQO2&pRUU$0P7JBk)6^L%RIsJ2wJPMc^AEa2gYZ at y|9e+X1cT
z0>S-yUJ!ww9)Z&w9bLpn*OPZD-5i$2j4yP4#XV#_Y=o|CJGK5h)kBTTa%ezrGM&%)
z)%IE33dVK4ZC3J}qteywRMX!OL4Tv*q-SmCZ&A3`|Lqa@&lP^IlIK?n?^XC<^tnmV
zYkg{bPv~>AN_Q~&)b#I^KDGTkU&*iS*aZroB;`W&Q`6gZW2z6j9 at _dz^qNnp;zPKN
zA6O)~zg`{dqqprv_ZMGKa!yoyE>yU!4>U}=SmC-pd=a=E4<4n`{gR?DQ~bZIaNS>D
zqHvj3;r6KO^J2w+j-sc&o-WcGrDgLwnE+g*pGy^ekHWvIa63-&)1MS)Hq7TTMZa8d
zVn=<4O}9(oZz=o?#b=A+)1&Aeh4)3!e-|`#k(^q72JwgFDaHS6^*r6Pc)jF*EP=Qz
z{tv-zd0PA=!L2`I at g;)GG=R&eN$?4Vy^F69-1={pPmAFBK6+Yfp=*-)aQV<$3thH;
zT0Uz8x9!W~X9!+s9&`Du6MVW4UoZG<AAYXjx}KAsHw#|uqu(NUnGc^T<x=ItFA at 40
zAAXtOwLbhx!S#57<oT5FKi)@wozS1;!@ni?5+8n};7vZ9))MGiVLn`a(i|mSE#||;
zZx_77hi?-+?ZfXDe2ov^F8CQf{1<|+^WjHGJCP4=FEpoO+vymgr*`yph08QpfL^AN
z7+<gGZG9s?ntzGnuj#ejyGikp;Xd=%@+?<;v^}(XrgSwQt2ckX)+s((&OU`}|M^0N
zYyMX#T+4Z_!nK^gj=+DX at U+sy-uO-z$*=k3C|uJYsPIP>pZ6<V^ZAg%HT|a)uIWn^
zuG3wpaLtFt+I0ElU#W1-hrU~S&4+wii|cZ^Lg8A at YZR{e>;6L5!~Lb*ket8Av$kE7
zC|sv&=P8L^<0}>YlZubE(?tJ-!mT|fT+4H@;-mBR6@}}3U9E6E?``KniNEHf`*%(M
zxZ<Pf?ffY5(dj;`=yiG7c~gJ7uPA!0pB%B%e)<CxuG6*itVFNV{g9&9xa|l0{7V(R
z=3lLFZ6A(Rct*J^{3cbtc7B)A)%M{mMX$^K%L>=}zf9p;&Z{EuZz){IGu*9k&HsND
zuKC+}V!xj4yfWds{=B64=ynt*LR|FmxYAFy!nGdk{4w3ua at zS|!vCrG*m-NhHJ`bP
zKg})JcAZkVUPo?KxSppvTj9Dsd`aOOP`54rTNJL>D{oi0t`C0{oSH|LlJi+bf49P4
zkH9}9^Wt<{(^o58>us6BwLIMl|FO!Kop&exx}Kb)=(Ya8rf^-3TNSSP==m1Xh24Mt
zQK2V{{{LPEKy^Ock@%0(eYmBcE(s8iTj`Hn^%3|9a^I%AStic4AENVX{WsE&whtSG
z58;~r3laED3fFvo6M?@JfoG%6(B+qByu!6S`4PAt?|%z4`xv%Pu6z>z>ww$(A4RXn
z-I{));-mAc$5{`9znzDd?X6rFG=7 at m^N^C~AcbrGdi<{WT&CzXA3e{Y?Za7$UgJ^e
z&QbJQ9zEXI`1A;RJHO#C-wPCdv(m#O3U62VKNWte!nL2N<*5Y?U6iioPji)YQG59p
z{@eQSc}1_|EAAm;T*ODqvzMaR@@W4`%X5RYWj~+qtNy4HJgq!W3htNl8AY$<+ at bKT
ziq9Jge^lWy5(F20+@$bag=_f_Q at FOnA5^%upVu&Vqi4!PiwxjSLt1pvV_KiuKh)_S
zDE$3;I7FqZ_3&YZYduU?xV9&A6t4A9u5c|+ox=ZLdtU-yRdxIy>xQjMw5V87qoU%5
z35y0rjYu#Q&<I#j(U%YciG(C30fSqkQbk3Ltqbl^QPaBo;#P61ajRID#%e3JYU7SA
z)>ySgi|v2ro|%_#&YQz~7lKRwJs<M!yWcl6-#K&Ed+xaxjKgt&V;nAua+_KYziIV6
z)DPf&8Ei-BKgOqDpnR_s+%HGGKEiUueiH3(3Gw^_>TMz5C_goTpB%uO1Ni2Ee+j(X
z2k<=uxUN%ibwN901M(*XaEuSynHP{h2k?J`|9W4Q{Xu+dC@(HEomUJKoaHgjq5Eqm
zfIPPMM!=Exalq03vH-p*J4ea)XJ`OFGJsbH at CyRC&dq$@2V`QwYW$~hdqr?x{+$56
zn=JVH@<jo>Jb*U^@XG`E?E(Dp0RBn<e at o`8zW-Otgp6Z@<8O=LERX%bw`HC%g#6~j
z{^LGUZ10F)5lN at Y<Gc>#ZwSaA1MLFkd9Mp6-ydA>LU~;8LY(gnS$6myjfJ-a at S!jd
zLHol4IIf4F{0ShB&z0kKJ>va10F?NE_|XCU6u`Lw>wIh;;0=^V#lP+2yIhV&eHGrP
z+XBk*D#$PPpBqDb=5m9k#9>05ugy6zj`!n!9ia|K`$dAY8v29Rt=#8p{9g&!*&F;v
zUc6rT9 at rTb;MMye>_76pACP|@>L>EP62RXOob&q~i1RX#$NP^Tf&984|9L=O at Bgs>
z7-zoM$;roYe+!o5e**E`h#eO at nBQ+pzdg*kAH at OZ8%GCl*-jg^7tVU}x(4L&y5lUs
z at w($Y!121{GQjcr;#$D*`r<c$V|k4Tl-C;|kM$u3<PrY~;9F6KwcR}kIF|ckf^%%v
zqwgyJEXZSh&I5lo1N*rCur=UEf_ygMdR at T0>jUo-BG32+fWHSgU(2hXJBgnxe;VKz
z&(i^)2J$}ue{?)$JKF+YEArg#`U8GF*x_p>_2(AAHv##Vz)nBF*QM{A_|OOJ at ESWO
zK5PW|V8Pj+GXO6H9P90Pz_A|UebT$Y4z3rWpEKDRO3aJ(=P=Uc#5i6r{0#6<!Tz;?
z<G9RiiW9s05Bk%1J^=DK&-@&4><12p{Gvba2+jwb$9 at 3vX#YNv<HY&OAsO}O at d$N(
zewTbu{5io{9^1>G07pB^0q+C$d99uk+rjwgbvnC?yt{xr^6m>bmisr&p98^9j1S)b
z#rXUP<Pq2Q>&NXZk at w?v3E087-3U0w?Rdb^&pCi^4&`_@;OHmMjXANOh$AnSyVif-
z|0Q4t{eKnkO#D9;<dK*6s&Qi8 at 6mUy=iK%=`StuBkjMJ at ctBqLWcwR~{kH at 1e2<9}
z%WnemUk2p)T?d@}ICGzD;kyHlaqI8IBRkm7;5dkQX+Zvr0FKv{XeY!wI$&o;0G}7Y
z?+V~A1aO@{b38Ng^MCPi52E084fY!cLA}L(U~~XK4sdLzd=G*XSKsf_cWtM5e+2sn
zZP#3mSkHN{DJRC!&$j?aKmQWI at wx;3+(Fux at 8=+Bcj)K7fTN#VM_xKVu^xtSy`RPA
z_>bpsoNzvWBE;<nk}s8?!U3VQyNACf*Khpp2u>>h+D7jD62Ng at dbQwe_H^KF2OQ at u
zpMV{XiI(pQkViZDaJ|VQdcA}DV=->$!F4F&2TH#AupjVN1n>(3_(OoB{SCeQ=^D3v
z1owHj+`z at v$Hxco3jxRS{Wsv4uj61{7w6UW0sM5palU;n;5=8?^12>yY!|xz%=yB4
zuGg)MW884wj`(aBo|JKFZP)*OpdKCo`Q2Y|K485)0_3sY;=U}**S>-JiS-%F at i~x3
ze0vTgB|n~xg0oxvr}glsfMff;2JE2!&jOC^_d8I}F%DY)Sq<$R2J-BWw%-e&U0{3`
z2Jj()dOij49(Dl7xV;j<`$2t1`B{M1L;uzccqQP^3hu}MI=D}P_TLWRdrQB|@jMai
zUjjJV`2cWizn=u~&19br+sF317vR`$j0)gW0{E4HqdzwRj{V6UfTR3#fMb8Mw)=to
zDCV5F9I?F|D!5<I{|)$oq@?|%&f9%E-(`T3Z)Z=yPl0mZ#v2E<UF&@f-#*^I!1g!|
z`V(x|3&B3N>uW(C?Ysr@%&qNu8_p0VK45#q{fda+1 at c&*UjZEDbG-gU<8Ti28))aL
z0KP$>A6Oc|L;b_?&<|iceH3u?XB}wo*uI7Z at Ph%zb}<HUY)7SlW4k^LaOAxKaI9|+
z1HLBh4%d0Op6L8 at H)vms>-=*R;MndaLi at scxPX-@adpA*`U=7Mfc5!ykViXpP|vZx
zT^7JQ0mt_KKC}z;e>un_?<P>sG5#k4j{e*vIA??ZwEiy!9C;rHJIK2naO?+mg!YAT
z!+o=8NB767KiUuc0@@w=e}4cU6KHpJfTNuU1Xo^-!#_YC+ug80dz=%%mjaIC{=Wdn
zasM%BFUY$djK7GF2mD0n=YIn@%C7(%+i!1;*VAE~#eSw1aO`JJ0UYIj3OM#Z_X3Xo
zcL0ud{usbN104IMEnvR~wj+6+Ov-pPnc5B~ZU$JdB+OCU;%8fQAMa6-bZS3yBH$xQ
zUdR2D1n2sBD1AtC%bM at uYX7%jXB61^1IY6|k-l>NI^d%TS3Caz{4l^LLH}6<_CEl8
z4B-C&9Q}y`LmZqREU%qOms1o^uroq%KA`^zkViYX4+_gspTlJ}j;H4LI<PaAzH9uu
z0LS*bCG^ACe$Rz|oA1%9odqC24(zuAj{e^dIQsuI*hl~IIT7?<@3Z at H-cTwMAFzEL
z3^?B-Q~!?z9NWv0q|b at NbQ%4r{8<cAVtg}<Lxj5W#dWRGfa86)!vV+pZg at ZLaPSka
z_pbup>%b1$zXfo#|197r{}SLRzm?#eUmQ0_fIN<OFM|AV at N*~n&WXc~_rd1_j`gHn
zaOUMbEgFA*CWw>bTF<rJDX#13H!uM5&$-jA`#pRw!JqeV&F9-5K2GF6_wXr#ZwB?5
z{jU;yHxGYJ at B=;kG{Gl&_yWNzJ^UKM^|>&1i+OJsT<2+uKP>nnvBTwp at qYktY)3Bu
zj^mW>hi5z3j`kNG#&I4sJ%DS!&GL(=thL-f0eKvcz5x7QkmtPwoY)TT)4=^jXn$vr
zNBe^TNBai>j`ndqALD at gmN5=G|M%lF2JGYf=Xk);&ldqld0d}Id^fHLl$e+ADQKLJ
z1^ivWO9kh{=k%xY(?K5Zr(aJpoY?*Zl2Q4Kz|KJWP4Oq7UeyBct!#i29}qtY=CL_o
z|4P6yK3BrL6z^-`dKCIILguUNF5=S#XMcF_f%-oe<atl2;^%`r`qK&cM6k0Z%wrMH
z3*birj`=zvfL8#H{?`f4`R(C9$YVcn2grXH%Ii^($8qp!z_DG-AwEtVPpqGdBh=y8
zUcLkz<-bopaAG?c=N|)(@>c+k_5TLIvHt6RCyoz}gNHCFCFaF(uqHy?IK^#N>q8UZ
zO at Lo3INQmE`tTIUGxzcX9l-a{Ik7zU!})+?d0~Ho at n4gC@jXf_UmSDAzpi{q^NOYg
z$ACY2ox-sk33vqulae2Q?YCJT<NudP+R0;_{{=Y4d1JxZ#?inlkD*4k4*|R!>|lM+
z_e=Qxybto|&kDfNAB at jYz*{WxZ2v64%fJr$a{<U>eBK3l^hdA1IL;w|cr8oo5BkG<
zY!v at 0{W%hN(Vqgq*S0 at ce|YYpaTpBoKM-)-AB*Ls&zbu5=hZ-YVLcC(*Ac*r@%ahh
zYdbzzpT`3)`g1<uU!^}|ffxNL0eo%ygZ1YC;Klk=4*1%xKiZFRKY-)=GN_06|E+um
z^&ID)IRD4_C+<h$cdcl9xd-gy_3uM~<MpqOzwGDsVCVNBzXIZh^Ao;TuDskvII*2F
zz<KS36XWO)_jQ~YM}KfXA^Nir<k6qSfTKSj0gnFYK4jk?-XqP)_h%Qt(Vt;}qd&Zc
zrgnCw?;4*fz|qgA0Y^V^A1}u3W01$V?Xzw-?=_Tn<=r1}v@;TLv~x7zn6EOxF<<!J
zIb6>PJ#V7-4gL841?;0go3bD!UtXWf_RDK$kVk*U1CDVx3UK7T6!1w<j-LRIaoBhL
zZa?vQ at J_(d&Tjz6`mhpkygoV)uKV!1<|@Fk{<H&**9(K-IuZSu2srw4A>hb+GvGM?
zxfgJZ^TU8+oZki<>+Pq2<G8%Ug*mDZ*stRLVa#tfv=@};K9ds{Cte at T7n~2=Cu=*p
z5ah8Rz7lX;Z^8FUeG2XI|3Lm;z#jn|{eKqln?e31z%f2QA)h&MzVQChFCx_8c)#*4
z!Py*M_x%#&@w!jf^VmMFZ}XgllaEgY9P0_kQ04LZ4%bUDU%H;h_A4O{uQ)RiFUD;%
zu#e@=T%0(+SiU$OVfnU2(k@@cq@?xXO~839P<)dBuRg!Pyp<q-5BPH^eOEhw0XsOq
z-GU8J;sgKb_3})?IX(mFyV^M$aE$*F!TFF4yf1 at 1u5Y{xIF`#}q|b?YF+P8fP>1t9
zAoXW^$QPE2K6k at 3oEMdUN#q$X1V3^A4917=QF7t~|7m<K5S;zoi at vM<n*hi7EEAj$
z7 at to;9^<n<j9+o%a}e27e=>>BERe_e at Y<}}i5njtYdCRyUI#mu0X_(L?*JU*_IJVg
zfN}db$Yb2}J_7S%+<rypocwzAk%J?g_hf2*x0QOr@>s7%3C{F2Am0Hv%cz|V!B4DL
zJSKAD1OI8g;yTaCkK0cH--EuZeH<4sZXby}A24qJ0y`MDjRW;f*Spvs?B@&UoD-YF
ze!eh5o&VU+R|1ax{F#EY9lZaA>mDf2&)RTee=xr}fMfrk2RPP;$OwHfFaNb1;t;mW
zN%55<-8o(_^KZF_IvlSP8SgK6w);70r&w^k->&vw7W at 4?`GKPx(BH#Xik%z}Uo7|l
z4__qsKo4Ic`Q6LI7l=Q(9^NMMSdQ2(#zCABzaQ{M%Cy#7Z7&?}cSuHYzSqf#5B#@R
z0ew)~U2vBF0_62R3*$Imp9AuUUmL)02K-a7kNpzjy1$WmalWVTzhZM-hc#b#A0Ouf
z_<l&fmQ;DXZ^(VG;!D>hqm-Bz{lWcXh_3+o2FMq_Z|Yxwhu(j+Z^Y`#gy&A`556yA
zHu$*-2Y?d$SqnIS=fwCNz}FQ&`Dgy?e=vPeIw0VGG2p)h|9?Q=IjNo3n23_j2l(_P
z;Kg}kJ>a*B9hR>H{1w3Y9T6Ib1byek@}~f<_stn^0Gwqxu^O+Xw9p?XmgA)O0O7;_
zhvg>=j{Ohg3k1jhhw*m7vHxM5>k23Ae;C(s2>Tz#=dojya-z>}Kj+K&01v-c<gx!@
zJ4-|k`ya-ai#+x}jO)5Q&fD>N<ZZFX at xyw!o#c;k9KZGe{8Zx9a at -Ga9CzLe;M{gN
zv3+b`+K(}g<IZa!kA99}Bb0pqYaN_|<NvpUcIJZoX^^k#0RB_J(asS8yaI4+*B1kh
zcE$<L#d<P*=>H>(;|SL^jsNK&&pNsf^G?AzJ}Cc0Kz<*Iv(LMEApZM+ee_ at VHTmUI
z6OhOIcWCFobsn`T#Q)dyUCUAX1CHAnP`(8af5f@%aANr%gZ$=PfRq^Ly%TD`0C2QZ
z0(cY1w*r1T;O`60hcoFz>nC1EV0{}P;||O7pVrT*Fdm_NV?e$G<k9~fIir;LfPS6}
zILf~mz;Qn|%6|{m0}+2*a6b<CTp{*vd%$`ij=wuXyNlu@{^@gDe2V4EdF8~iPtjj9
zpHLFDB)*r}?c;t<;uV79ILLN*?T-_VgN&<T90wU+zz$Htaggz)g5x;IIFIF=a-z>}
z|C{7|fQR2J<vq~D7t1-0gKWP_0)XQn<I6-I#|tb+94`=`A$n{U=jXWp3h~D!ew<DI
z(|Humf6#s;L~?8&=i7ZGPK@(hL)&k50M~UAmdAPZcc2~Nym~`uM?9BP`<nxfy!zae
z?@u1cV?7 at WIL^cIz4U0m1mtntKbi8wiFtRRysMu(Nt_wS_%8w+ubUnL9Iu;lB%XZW
zKb=4G+=dg|NBMsMj^(BEaF)mM3*XO=@-ra6i2oaK%-6+in3DRb_38$}`GEE6*MOt_
z7XZijAGdyFKBXR(0gmz)1CHf#F!XQ8dl=wo=N7>=UwaieKi&%9Tf+Sayq?_waJ(M;
zk>F}y<2DoIF>Y at J<Ua|>A0{0uhZT9x1RV2wYXE;Tfa`Oq>_4{OWgw63_d6T8`1$f1
z3eJ9_{N{k8|JwkL*SWYqumSpwu^^B6oens*>$3pI{^16|(Vsg3NBNyycB6KI>uCoH
z&iTdlG#(2$aeQ#y4Cl9e4Wj+b1nD<ep0D8)XD&``|0jT74me(CJrDQ+Adln1Jd#oS
zcpb#=+)#XLc7zfi@&Qi>&i<es9d8-O@;VRXaoz7Kz_GkSan2{ZocuWB^%VAFH#+f1
zz7qU at L~y3Z=iMF$c`U~)(&fbR{HM>m4G`Rq!%)DnU%C!(jKeK}V?5gc=X)GlE>8iD
zan|cr_7U6fn;?(v at gIPrKRE7Vxtv9IIkA2I(>QDmb};_<J{F9Fj=yXJ at 5hzHc!YkQ
z1o$H2(m0#}IL7U4!0!e5ivdS}@Ofvv-+D91V;uG%zd8AFD2Py3KhLEf)z3!2F+TYJ
zTVegg{XdA~{#f*XXNdoakl&Gl`*Fr~HjML8;-}{8;n5CAfd5$E;>u3|``CY$fPHLt
zx?bV?b0x^5Ke+yY_4(`KJvNZv3h*EEdpXE+o;Ch0AdmUI4{*%y*Tt*XN8BG`J)a7G
zV*SK&d>861j;Cnn9I>PILHi#pcf1~X5O}fQz~{xV-}oKKW50p#FU9^L^!(1hzz+5s
zxW0t>!hM72{~)k4kTR|P$pL_4KTsw($7dnPp9%8FtL=-+>t`U}0`ivu{wKiE&S2?h
z*v=Io-vl`3>uSJ<g8WT at zfRvZzqbL7<KSYzF%Ip3WBf6mdjW4I@#H-}>d%>hIIQh>
z^1WbA9A}It#s}l6`%G9K<M|NS!FY!DQ{jC;jAtP`Ly7HUeYhw>Q^!Z$k3^yDF at Jbf
z<o$eo3^=ya&jH7Fy&>ca<-Z at m^*$8yVtd~e<gvXU065k+-owL*?O=R{MySL0fckR?
z;Ap2_aE{M4Ab%dnW1O!59NTXz;Mjg20Q_pO|0&>TKUCj-0r?#ccJ2lo>)V5XV|{xX
zaE!xm0T0C!_oW;H{-Yg?C*M=n_WQqhy7xNbew#{)xyA?EBgQi{&*y7KP88xE^Z9e2
z9C4m`LL}|l#Su_0mjI6YNb!D6KahV5<Z(S;pO0gIvLRpS57%wY at 3Y`1^6EY-Zr8~B
zNkBdd0Ll9D+p!~p^WHq=Efky&{HOCh-Ydw7?O;EK``OS>Zu^{k-lqUZ-sOPv9t`#8
zpMvv&|3*kY|0B5X5B~q*^GQbS;Ct}U{~>Tah5qCI0gN-QTVna%BzDwKjoT9e{DS~5
z{{J1wyC-Lq5+69`ny=9T9N)Jv1LRK?dEd{g1NZ|09M at N|y}SqhU_Ac at IOb~@tfQj*
zfq<j at IKVLu7Xp4A<hK=YyiR#kaE`;~(C(fAd2Ej#fczF9|4Bf8D_Fnfv0lq7M{o`Y
z+CK#3`-1$~fc!+ju|C%Tj^ot%V1G-ne<{eLKi2?`_MZbgTY;UIKpyS<5#+hA);PQw
zkjMLYSg(FV@#4gByB^B-%?Ne)Fu+6mpLxxb6PG*gf9AT!iE-Tj+$A{k=7RlgS&$MR
z_)qs?vd^4Y9>=Mw0FL|iQGRhi{<i at f??Yib!sl+V9qD~%HphS3U(JVp39s*30LONu
z?@QzSVtt!Q=bRYFa=b1=9gcqLJe=jx&yPSJ``dG&yt3)L)~k!4ys#ePxQV=f0(s<J
z7vhZa*?^-w&;2;D|2VFV6Pyo2=uiDT9&rAu at vj%0?Oa6PRUYrhVS8)=dGxataP;$T
zz|npO;OPGfz;RsG`+fW~|LM4l<1hNz59$w&%Q=9f{GotjzVN;(=Ibbs$9&BO9P7_7
z1ZUr|Tpj|Pf75dL9pEVcHsC0~5f>mOKA``b1CIXVINnT#wA at bsdBk-b=bv$WpAYib
z?pgsyf7$>?fBp$L%Kry&l;0G`LGZsAa2%Is0*?L3S%PycH-~n;0OYY<Uky0cpL+nu
zeo3EqWBWLczYOwde}&*IkK_1v0^`@tFy7%fzIQ;r2;^~Go)C~f7I4h(MPLWV<;y at G
z^QGfE=L^T>n*#E9U61t&$7Oy8l-Aof$u1|ZF8JI{Cgbu<u%qi{>}Mg=2Yla7F39tm
z1}8r7pN`8X2+scCIE(!%;(Sk&6U*be0k45@^6h*8IJTF+1CH%QuSfW2yzj8R^e1fp
zbja`cKtEFt^0<C at 0pQraZUP+F=U)dL+Y9as`V#zUBL6tCpNMCZ3 at 1N6*8z^}IgbL4
zcAg91`aUk-zP@*t<B9k0 at crI+y?<QfrStOuQqp>>^A@&)_hC-~c`TRy;3u}n0Rg-K
zaO5o(+~-YzJo0`DIP$Ix;2W}GN`86u4d8nRa9&%p?2HB+{W&~<|0sZ$1n_48uctg}
zd36C^3HY{9pHaR5aFm}3_)TO}?c;nH+e<UZV}2I~@EZg8gMec@)%gaO7xI1y^2obB
z3sT|(;yHk0yB-KQ%I5~~`~W^fa4rTM?@j`F9C!Y=&gRxR|F_QO;_yvgXFDJI0i2&B
z{&lUhy#?(H=No?k9OoNf0=@|HwFS(3(asM5M?1R%j&Udg9PMW^&&PRnXr6zQ*ynx*
z=gD^fFZMG}f;`UiUkJ#*3-Wl~@lim2r@(xB_rUx)4{+>n@&DPu{`shYyuOc-<AC$_
zMv%uiWHN8R8S2BEWS0|H7ksWclX-g$*ui=GC>WP}Yu<i22Y?d$iSzdR1NdtJ{5`;5
z2S2|A9PO9F_>1l3M8L7V{8Vr@$A7w>uo&d|nnmXu_<RS>2R4TGi}mDx^H?{I{BIuX
z;_$zDtc%0ip2zBSA~#E15BdLjeLIh0q5W7U>)Q*U-@|nn93NY_)1<_4#{M>w^=-7@
z0d~Ia>)V*GOxCxtTryeTM)|d|zI_RlJFagd9(R3v5sZ&mPi_Ys$K^)=zZLw!=OWS0
zt00edmI03buMhJ^w7(nRIKCeQ^G}=)<GdQ at bqSEi`EVuJNBJg@$NBL20r?w1esh=?
z-4>945O8e2e*hfkEm<;O<z|WN)f)!pv6}&o_V)xkI3FGi@)(Cq=EK~#Xg`MY;e!Cr
zWIj9#<Z(Vc8sho?+k9BprMcX3-TQKw592!LQ-S&OUqOBl#Cct4kJ!Gp1svDY at V$#z
zKMy7UII$Y`17jo9;n)w%0G!7xtv{y&ek0&l1CI7 at 0vzq%1^6vs=P|&44mj at f#Q6!@
zKL+G+-#)L+s{bE@{i6Y2hw3mVj?ZMk at wpGo*PbAc`NIE?p5Mu%yeEM?&m|Q98Q^Fi
z_iv;9{{wkmi&i_h|8rNsdCxy5f}%gYfAl%nIS%CUJp=p<n%duo4N&sy53l(vj(#2m
zcm>#*3pnPN-#K8}xe)N3!4A%sZU_7&kiUlVsQ!NrIP$Io?GF9l1n^zJ{_cPyul_$Q
zetZf+9_>#69Nz~!7w`eVi~Ci|0LSa at 69In)>`VdtRltu09QW^)0RB11^F2q6C+-KR
z1|0vN$|}Hj=fF_%<C6zC#^)fwF+Q^Z$2gn}IQEkZ9Bst=3-Big at H+vo1pE%b*Ms(Q
z8{m5bz9Zmef)muE-LY?+*xhL$&vO7yK90{3;JQr_8y0!Q+W^P+S3d%HAK?8R;25{J
z0mpF!pFhI*v`5~gmM`8<$MSsz<gt9;0UYgPzm4+Wfw*D+a53OmE>{7Lakw#n>wQ}e
z2mfjR`CdT&ZvlJ*h$qH*Yrrwi_&nf&B%|%F4&t*N;CMgx6!Jmk at p&1%Pkp7>Vfua`
zug@<q&UI;Hk;C|N-BbH3<#(>P=qElWf;i9BIkEg*U}w7kz6;=(uUx><em>wRkN2q&
zzZ>K+K7S10>vLcz at d4+1yjPPG=L_e1Zvl?=@I%0{9_s#ZwuAUU=!bFKsRkU!yFUuf
zG}};Kw7lK{dAyF;j0q|6f#(1!KLT(ZH}U=vw(BE79^0w@|LOcQj%#;=JjMsFXE6>B
z!}S-=dmjUQ5#;xEz_H!o^%vS74cA%Nui||Td|nCnC*yTo6WIA3_ at n!lIol}zbCAb=
z;5ER}pSJ<O7wqo{@3p{u?HRzw1CIGR3UG{PE#T<SHGrc(ivY)V_XOaW-=9%jIB|Ti
zzTFg|4#)cT4B%LQ-T)lqus+3#6SoWg)BYUi^T><Oqakmp*kM1B_iVt?4$kw@&T^1P
zJL|A>l-NG{zdPV)KM!!UKML?3{RZIJZ^WISUj%lrz4M-SPVE0q^j-Ut?V$g`{O$ob
z=659E*nXz~j`Gt3_?duXeUt7X^7CQvGjg6jxOhI%6F4&dD9L9FCa-Ua<R6i|gLs5L
z9*}Pbd9}y(e+9VOS{3gT0r?Q`Qy`DLPXdm-Av;flJlc5-aI_PO+cPoce-l$)_gtwj
zd|XvLpNnb#`Iz!A#FYPSOnJRWkZFEjjA>u59Wu4A*XEhZzZ}z_-^Y~yLrnQsV#+TC
zdF&ssedS0nxE{V5kpDH{*uL&yB}w|eK8EfDJV$<KXn(-bpCtkNMIev%#{iD at 8v!2(
zyt?O;p<KXcg1o>{d*o}(Vgb-k#wQ7mabSG1;OHmgQv}bEBU3V7BIoEQ<I at C3KN+tO
zJYSA#r%KKXJY28Siah)@IoJHDohHFGABxWxyhM(QUnb}3m*Uq8UhB#KpPV;(_}y~e
z<l(x0s{CqSuMe9&d41p0LJxmT&RabEDLHTTaGlS!dHC~kzSzTGl=F5E|Gk_q at o;_a
zy2Ha?lk=q>-YMsL)Hu8&_%b;vuIF7IzFf{%c(}?%6`y`%I~>D(MXnD6l+?byM<Cn7
zbza-g!~4p4j)&{{Ko8$b&h`45Pr3f<bB6hzJU?5=sldZ^9bEemwWEDOu_u3$oKN;}
zzGmQ5;^BPl#Hqr=&zJLB55GjtwU6Rc&euZ0n>_jJ<b1w|-z4YF9)7Ewt35tt`?m?+
z;>q*eol~oa|5DD|JY3fS7kl`la^CLYPs#Zb4}Vt9J3L&^mwNag<h;|v^?aF!e<bH!
z9{w*mU*X}K=-4Ai{+Z*pt(^1Ro|EEw{gdtCd&)Uq`=I>Za-QSidOu^JhwF7zu7?ki
z^L!82b)Nzc-%rkqJbbvE7kjwgN15#5ytc)u#KRAk^9m0?M9ynH{7^Y>^zcGCZ}RZN
z<b1w|kCF3c4<9S%3q5?ioVR#5-^1h7>fuMqd7Fn%l=H<NuJ at VRJ^W}nU*h4%$a#l{
z^F1(5OFjH}Iq&rFljMAvho36vT^_FSTH)bW%XyYupK3kld!n5Bc=$bnXM6a4g6ngs
zYUh5zb3FM61lM&%m48U^Tu)xFY4bgtujM!uc(`8s6?wQ`qZWI(UW-olaJ{xH at o>FX
ztnhHX#;f&ky*6v~aJ{B#@^HNtn(yIy4b$x5dhM~$!}Xe>#lv;3-|FFil6bax`0Ii%
z_V7Oo-tOUV3ckd{-xj>X!`~HrsfWKWc&CSdA^0*6?<4139^PNhS9thNa_(wTcR#Q7
zGh2Sp`l<QN at o<fEF5o<m(o`T{*bd{ee44z at P<&&NE0Lq(TgZ8>hxe27CJ*0U&YL}a
zfSk8 at _#SfJ=HZ&3b`RJ2VTXs0kn>ItA1UX0;Cx-qA6{bURKRoOcP?&T%hRO$F&Ni1
zH2$qf1Q_Q(O?n;1n8u!es}%vpWl1<f<^kSEzVkuLl;t-9{C4 at y_;&$s2mE`0zYMsR
zIYT;sXFHpS3?Ej?cg8oB?|jIXSTVjC-~#~920S0|%>f?=xYjlPxdia<gFLT=a$?@T
z(Kq*@^Hs*T1f17+IWfLf^v!*=0lqchPXexWoPXB&A=}vo<aHgJ at gD%Lm4NYW0oVQQ
zjQ0n8AOn>6z<(OMM!>agu^g{ybK=7e(Kq+e33v|ReWkzQpZTvq@>$^FIii1>higBm
z{j=IBk;b9_j}_y)0<Ye8V|+Kjhl-xs>6CN*e{vPCl}57!<o5(S+6YxXM;cR&G)~6n
zN?uuQ9^m at UM#lBMLoB}!1CrW7K373HE(d%t;Qhp3wxfLo|2zutVIZ&hQ~x`qao-N|
z`+ at ulz=s1qRPxPs_6J<=TdDnK=_K_3&t+WuPF8yg?C85vBXiOjvHU?1;6642{9wRG
z0bT(3G{6r5d=}s%0iO@}p at 1(1oPFw$&TM0eA7lL2B%RrofER(CDS#gacsbxKuWhvn
z at E?Nwd4RM0K>4i=aQ3G}I?D$DXZgKE{vE(|k0SrH0`PGn%ZI*Fo|@lW>0EO?yjbvY
z9$qVWiHA1{UI{q+scoPQaE_byR}TQr@>A%K)60OfuQ}3ruki3@!Pk*Ni)GnP6a8 at -
z2sr;%ES-HG;4D9ng(;N)&VK$PLg}4RfU~^5C$|Z3wx275#(99V{AFUN4RDt468Q%J
zXZb5dei`8GkKV8S7;u)qQRMqby=L3|*CB&dfrsbHVAbH^I#{)Oc!vyPogUsKgIGUl
zH_F>3_+B2KErVNuhvy1D$- at f-*LJD)+XcVfmzRdu?%~CPzwF_)g1-(p$5YFFCE(1R
zvmJd<%9hEE`jad801qz^Jm15c1h4h*Tp6_Id3dqlivcfou0)@&0e&Rlp8`Gs at IKP7
zsQ)@C*c@<<!=0it8E~$Lx<9EDaF$;z@}~jL99=o?ho1n>^6d`Jx*c$~um8`@eSow4
z^CG_laJJvPqx<1Sz*+wHBHv#+9F}GKMKZ?k0yxXRBk~1+|41-CGy;A!;0pks4EU3P
z9|QPGz>fvINcvIs^Ekkd1f2a`F25}VoOQByaX&2c at m(GMG2m>cpTuE=Or|wHwSpG{
z&honMT>|*=&UExy2{_9S6+3N!Ge_qhPHClwm+a~A^<@&zvTSFv*eL>>%du7PBLQc5
z-do103UIbnFerkv76V at 5py+cw8BbU?@>AsVJ-m4zr!?8aI|aW6 at KUhf2KZFKR|3ww
zUAgYZ^<}(bjPs at MjU53v$Kg5_pi~Gr%j<rcDS)$RQyxoaWt9WY@>fgTE(M(J^WI-h
z*8<M+x^90j;N_8|`&b6}bii|D++(vd03Qc<1>i>k&b;@CpDln_g8Xv8PXv5~jEBt2
zf7wIakA;A<{YSL^0M2oEOX4saaF*Bm2=f7F(PFWG3E(XMyx4yYaJH}Sjd~YwmhTjK
z{SW8V|CV9&Bc+XGJZGHc^?pM!;B3F2T&EoaILrT2>^A^jO}M6Zz?q|KU-!$#GB04P
zMuq9PCE#pdpLZGvcrD0}0Q at At7Xe-e_@{u^170Qb4)&)3 at a2Hd20UNp5iCCk@LIr6
z27E5yoUip*k&@0w_>}*$M=+X|^^7N<Bl6iY at 8DA|mm(>bZ2)Kc1tLEb at VSI*Y6AQe
z1?jjL at KXVQ4)D_e|2^Q$J4tv~0)9Hk50v=}i=6 at Z6u^HBcq`ydfG+|3Ou%0Roc$>i
ze^vl~7Raw7^CK2x`8tsw2>96`p9eV0pDFT_0oQ8+Rx1UZ<@G+re87Lgf|4!)oaOnM
z3QmgwKgU7QXBXh-0zOa{Ygm0g;3a^c2lzt3&j<Vlz}X+&TeAf43qbxwz*%0`^H&1C
z0OYfC+zI=6A>ac5zX<TX0cZQV-rflK#US4Xcr)M+0M2%FU46YBoe=wTiTfITZUQ*V
zkCS#c8StNid at 0~8f4a!u4*1VN{vE(C1^h$6*^WMUl)sY`Vm~hj`T2lf0r-=EUkUj0
zfV2J2#Ls>^J0Z4z70B-hILr50&;2+B at T)<-74T~SzYB1-qwil>3HY at jUo^m-us{6Q
zb)Y++2l(|4iasv{ob6YNpHBkb0`kuT&hlr9{CYAkX3iTxeiOi1{z{P_3iyp6e<0v2
zf2+t(1N<hCp9MI}-zV~y0=@|3uLYdtpAh*c0lyjKp9h at f^*Q!W0lx+0zXY7+|19<g
z$n^oo=T?y48*rBYP~;~8-U{-^1J3gQ68U+6{~Y8m1f1nJTHpP6FW`DD&c8eYILmJ>
z^6vnCn==u8_T9~$aK3H_d?4U=0G<ap+uud(Hv)bq$e#%~%a0KGC4e(`&cRNp-#~X{
ztj&FmK6eD1?No at J3c&9I`FjDs8}LT}XFI2fofUxJ1M=(a?oQYrmcLfyM*w~=$QJ_6
z^1l-KCcy6l`SSp0`9F*NlYsvc<evwe<@F}m#&W&Le)3;#0ew)~5^$F9yFmnJl>mMi
zLAR{y at Jhg0Uf<h05AX+_X!Lm@;4H829aswZLm+>zT)(o9j{yD%;A}_V^VNSZC&co<
z0{L-(KMHs&;O&5S0R9-@{r7e!Z2xh<n*e_T at Yeu;67Y8cXa7%>I1iBPW48Yk$S(r?
zX~16wd<o#M1J3r(5c at fDJ<ax?0r}klXZagNz5(#xfc)uzv;4;*zXb4SLH<R+S$>@j
z-H-j{x}5!a4&-+MoaG0Kd==o&gZu)(UjTe5;LOoJ+Woj3 at D7mgm*-Ac_C>%)0scF{
z^}3(sUjqDLkbfEQtikSt<$n+OD8T;!cmv?C0Dd~)9G`I#pT&SL1^H!wzY6%rfU}(j
zu`^<b6JkIA2=ax1vwVxlHv|4BkiQaemVZv<Uk3a&kbfO;mR}+A1BN;w_UCnw-y3k2
z-=UBDu>tTmK)xODKLh>@;B05K*y$_l0nFP8^4kH<^5=>CWWe79`BK1H{ud&DJK%4D
z{C$A4y#7DUU4Xw0 at +0<jC+z1tfENPJb~f9{{n!lnyC8oh;4D8*<lh1OJ&^wpaF)MR
z<OlBOgxH_=K|T*~mcLKrPXl}z$o~XzmjAoRcL4qY$iE6W%j<o(zWGjw{rL;X7XbcO
zz*_-d4)|Swv;CvL>wfG6{6moc0C1MC75UuZPKf>a8^{j_oaN_<{5-%}r%U>=3jt^O
zPLXd1{4l~_kn#E%z*#>3d-Or+9l+Us^9d20^&#LaKUw65?(cqQS+;++%tH<YoaM_!
zelp;HcdF56Dc~$WOXOPs{{-Z-2G!4<)lfQ>jtzD0SfStQ%BxBTHIz3tWDS~D+EAJ`
zXli|ZRs;-69DDfKi4DWb8s^rPk0~q6pH`DNxpG>0bzzw;Fq{OcOY7=tPA)7Xk)&ld
zG_fIXzr^U-)nyHpHPwlV(&}kd<#l65Pc18?pYjulY2^*2l~s9pi9 at RAjxTK}tDs-$
zm;Dlnvc|@|yu876<ul3~6Ag8xl at 0aeOyRhxxyir6!os}V#Q4Ol((2L~<#mM<CN>Ob
zLkZ5&gs~Iz6GWe%81H^g)YO*Om9ih**;oti<)M4S$-BzxIW;rO3&|hw?uf4-P(3{P
z<_0Q{im`B&f#PZ!qcROn99mIY7ppdX-5&IM42C5})|HmcEN}Qa!>~F|eC?5Nt)`bN
zMBGTQ6LBIjct~PmZKAAZc6CGfv_x$~9rZf3Ri$O++?gi3*`bNUM<254?zOORV(FMU
zh2st%o=D87o*nhVgA?Ow%4Q~NYpN>C<`xbvEF3ksa861;{}sECYq+r1hMK4-R<j5F
zDu%;ko&ARU_)U(Zj+WnaAHV5k?Yb`MzP`fxxO$`hH`&3jx+cbo;MY+NV>{T35&UY0
zx2Rf9E2oRKnz>*3K)1 at d_*XHUxhuSMQ!vky{KSN*be&jUKBj77!_eB&%DORQtEvj=
z3NJS?vAn9htRb(yVa&wA34(@JmDksgp&v^lpm6X|x=x!>-axaa`trJl#O&(IlV+FG
zjHjNiDf1G8D(mY?2jzavQ=U9^avJ5PfiHLYijptV$?fSiDc-G7Kn7Dl%4bDW$V5eD
zwT5KO51DjuUTtN0S^3G8_2o3 at tfpEzyR0G6Kx+mKvumr$Nr-|*Gs#hjF+ZeIq;I?m
zAjOlYB;QLLYU-pcsA1_Zk*%J;kE%UlQXu}rr<PZjRm>`_o0(4zme*C6R^{zCQnAsc
zvns19%j;#XTEj~MybO{zC@&>aUq{=ntf$&l&TV@}Sy`gIv8=q7LRdPrs at z@ae!V{R
zXj at d`$xDdAxrqt9A~UJ3w7R~Ei*aOWeRP$vswEpYCn(J0T187ak!E>encc2>hc1`a
zhBBhda0w{(*h3DaS=Q(g<hA8SGz7-!(buHgptZIHHEycc#gw1!hFx7VtvqV(c8O=0
z_c)7$J!YYCvfu01km||WsSj~t!o#Yx#56V2?vi>vG?_cJI!$GDLX*CbzT(iNcc at 2b
ztT8eFu=0k(XIE8?tC=x|#_H1QvS`@p)|*{jRXMY~YAy{t)Dmgor=fz@@)K_5y`0wd
z>v$P|m^+Wg=+f$j`n=rervy(x3X8|mdbSaoHL_Rd2JPrBLUI72HT|;E>T0 at 8P*%um
z`-$?>hD3RNSt(6}%FAYz7S3^_e16I(AH#&`uBHQ|4bzPtj%cWbz>k>cvsIeiGaM~U
zV>QlH)VnarDbngInu~Ay;u7Rko)xTm6)~E0Q!Okf(L_~gJ<Tzr`DE2J>xw6?_2>#p
ztQ+?BokJG{GzYDsOMt4tie_>~lSjF!EOQNFOxfWR6REeQ>@`tksU()l0E^1>xa;Kz
zX}VfjJ!4E6wW7Q-x~0*58;tDHy|C!|Wf;x0jgp+$poS+VG?#q2!xQsWic3VOvmZ}6
zF0HDnDU-`0p8Qj+3g_VBFa at c)rfybgRrkETxXQ8c)ZMGmtMV$q7}-kCNn#U+aNbtQ
zdbrgxawj&>ZNd76%Ch?86=A at c)hVP2#iOUuRa0WjG>ZQ;ir<98C*~&dh9p^!s;+Dx
zID<S6PD~t{Hjh%-0y&^+n4YLIg93z546mO(m2Se)-P<wgs>WDqK9u>v8CGx(3)k91
z)74sPBDs3i-axmIyUTfavcKcY(4o`Hr<cyIYM>j>d=c#~|CxcCkr}e+m-Hbcv5ETy
z%O*MY3{M<dGpn|eZ-PSrjs9d`YJRmfwMN$kwh9}|%Vu*omPy#*rh3NFr^p;mIfDY8
zIFd3+H}8iTogm+vw>p>Z!mzH?bsRf%aN!YD?}9xBl<BI>thx#F`cDQ8fW$IrX{+ig
z*RZ2BLY9BXv}qGct7p&x7v+F1u(X4pl;8@?ogaPBzsg_;SJgGd?-;so%O|TOjndSY
z@~)9pjxoAGx3;Qn<*GZ4q`N&PlRV(TWU}<+nX77iJyiJu6I5wsr?N3pPCJ9;H9eZV
zR?8q7clMg1o>KI7Ub%OPXe+A|Q)#0>xsg?^UbCon%?fmm6UNdn={v_+8H^`dC#q<q
zgsu^~o=j>>Ui`6T6!!?+f)1lEsnwPSjeTjKQVlN((?CrNp0#tw6psZLGak)~c`TWf
zo1g}JNMhpf)UM7htY|Hku5!v~l3dT5urj+Y!SbbzAaSb}Ut6V^$gq0xrmWIwbCQ>u
z>6!s`{d5IMT^B_)^+Geher|O`X(R35iZ+o&7o61l(ZsZrR!akGx at IWXfTw59d1G6W
zA>%QfR>a09PMS?u&y~|FX#syu;o)PCs+v<sCA*6D2Q at 8bV_40JR&=9bdSz8rg6do4
zjOxN!G<`iZwYF*pfwAZw0M^PlY*nO8cD3XUqsYt69a;iuD5n`r0(?!oX3!fXJ*yB#
zEhFpPXG<1J%lLMIQD>5MG9!x+lxeeP&9d$^#xgiKuiHhsBq(pJtxJ?wTbJ|k%yP5Q
z!V|Mo%V$(p2Zz{<a?j(vSe;5+<?70(7tZRPdSF=&7e3X^)!M6<I#gkmS}m(|v!Iu)
z at _Ms<Q2-riY+q#+d)2;XR0*I_)s@%M9ImjciuOx)FOK$Heay%v6n}J4Og%kicDihW
zjy69Rrch{ST1GPwTG}zQrZPHJDl3aR+2E2+vX#XSu-t*?IRLEzO|yCi-x(ODGM*4k
z+?Vdg)66TnaJDuTu2~MKI<G1Rt8ZLt_1ZI@#&g;)KdPK}DA0vG?{~m8%;XSB_feB8
znEp2UVRK5WX44(mO1U9t_j_?HP=!u1L(|TDZp1CIY&LIPZAdupD$~yG*2sEF6HL~J
z%+2zE*HAY%!K<@9N2686E|2D}H8W?^hFzY~SC`Hzrwa;d^oP at B60KWDH`vFQ*3T at Y
z3x$0XQ|&PHB0)+d%=#6rj`1Z>WocFADdn`_S6eu%XR!~P#<fx_BwaVr8rJOk3aX~G
zf4FpZV{!%AZR?1p?mh00M7?c1D=E%HF-D6K6U$G+3rb_HjoWcqRZX>Z6)eu+&^p{L
za-_E#^=<ybB27MB=vFbzWLyCU^R=N&Vxl_)GT at BqzSBD=b*nZ+D8tprG(3Ela&7at
zo5f!ZPw(Xi<`<>(V3HJ1bf>b{%P2k9SCy~cEvr at MOQtHlRR3V^hUFEl==FMmWkA+@
zC6<P)cZ)0ovOvyyr at u8v9$tN;{=>dQ*ekrllcODP&K#DyWD>vUO<6Na8Sngw_}9CD
zYTiSeP(|Sw9Yz0ey00>(nATb+j^X82^KNZ2N;HEQ=`PK+=Ui)dy6ihz(e*=VZEe-u
zLb~yl{1+^P9v4Aw!%Xtg)gCiDzUtvSHg>qiM!%(BS0}NkQfnC3Xa+t6mRWc%QCdcu
zYTXny8GU{FmWN?`TDm%O|G3O4;ZIhWj3-W+QOb2*?~E;(Q_|JnS4kP{`soq_BKu9e
z+3Z#v>l0O#)#VAQuCpquc~5e5lY}2|ch{t=sxRNfTtyp~`4X|Tf)-y2tG;di^XNNm
zdOcmw7A5FXay;)0Nz9@>z{#ux)(XCfg^@lp#(nVNiEm<7qQS<!gCV*k=OyoO8GU=Q
z#YIG`w}~3s+Di4Tj_>Y-YTmaiS5jEAH2q(YtEj`4T;VOE|AMRy;k(|FwP-ww?oshQ
zRC=V0-a7K%P$}uDq+}jXuBn at rm`bl4m{wXh_rD@@yqYToSXvc5QPxm7CzH<P8$MB@
z`DD6@(zl~qq>Q8=j=wE)i;Ob!ttppivH!no5T*jkd?rqFEBAmvqO at v8O`?*Xon32d
z6|{I@?#iXT)z-G$!osO^BdI7s`_Ad-A<-H%`C3ogpzFsFPCL?QQ#$QvqhEVG>M$uU
zF^Tuf(yB)4uB>6s&h)C%8SWV%+EJrVhw9|F*u65wztgeGTUYsdZ>*+ at o-ZxOyJMN}
z?TdEUd6!MAWZf@%EOk0P$&je6tE7jDX^&rYM=lnpv87K}=X$IRWw`&E7m57aM{>6(
zdJx;KXQta0NhVgYGrc$bOS|l;B(k}|T=e4SS<*gPQWn}sx|$pE_|6}1Q=-=a at cZd_
z1%X!ibwOk*wV0vQVsw8_bUTqB-$<lxsF*k;F?mv=aB|d`sL9aAzOrazpZB7-UU!t&
z(ZBJI%7&dab=2G{*{c!N6~8r%=(onvwO>bjspw5dsZ;g37TV!Uw;ERU6bbH%iP;Z3
z<NKxF)=?*Vbn=-j|2vDujUwtI^?A+kTQgU4;~-6IR`0Eu-mbW{;-faeUh+{(Mz_rM
zD4|S?A9ks^0yD<>wGs>+h<Yg)YsE)x- at W9cUtqAuk=##xBsH24q at OsD7>&@~HyqdK
zPMLe|+?+P7*=XE-OYNKNU+Ru6xJ#7bhN86=LT}RF;|^Aaz72+b@%(TUJv?LG0QIkG
zR);DO2JHk_e-^UV!=NtCNezSFgx9pswc9=K8P1^H at 5c{Xb+>zc>$Q8yQnKEr&gXkL
z?G5GfhG$+M;Pud1r8CPD^j4!8w4v6U?UR)xN5=Q21C>GtgKu!9P#29#kqkrZP|E=G
zRfbx}v~O^z)x}kXI^!A_tqyBf*L^*_st1fRw#|b!-IJfyE5 at Qn({OFRH#WCMMyFNQ
zpD0gg^xVk3IxU!HiTpg{z6rV((FYZ&D at a{LvmR~io&*FstBgaxMsD=N2okNHcHjT%
zQC9R6ULCzHP*|cTYw5obD4k1y&V43Lq>#})nc1`m?w)j5^$TUhR`jMnx>O-U)XPsA
z6Wd4+e%kC^>w5Tl+7m at D*KR1C;rkf(-85lGSHn`bxA1}lc<DueEGTT+gBLF7Woh?o
zHPSPrQ}5=amrH)7uQCt#{x!JK9Rr*+Q2k%M{~05YvEH)Xi{8>SN*{;wo9-HWE4F*d
zTb=W+jo5<iUi5Zt#a3q at 6p3E&*5y5VP_)-;f at ixIy<HozRd0K*-nx=nd$DyMM=iLQ
zV(UEa{XRh>vFg~yde19g at 9>IGCLO}+8V*D?wz*8J>*^Zr4L_kW@!WTn!$B-R!EkT+
zxmMx{bwA+e>aO``QbpImb}xFHX<%2!+f}#yxE7&SrLC at OV7r%M3w3L)cpEOa9|bQq
zd`F^p`tVg7s-(Mm2pjq8r}6Z^=#l$}{V4h`^t#u);?ClwtmwT!Wrf4&4V$y+831Q`
ztr_kWpJ^~$J3iZn*Vt!Su<U)G!-jjsXFD8gST|%g(<2zsE#Krgtj#kb3cg$-ulKfa
z71G)qy>TtM6O8_g%H#z{&)j|kpSYk7F}l%SS)bs&($tiPBog1M98fj0a}ers(^QOj
z at 4evNm))<(=ovU#)U#IRXscVIp^{##MxAD~P}kib8*kLiGhdBfm`~kpRidhf*7>y0
zT`gs)sb%#IddJjjNTZIX7Y$8ME>gO?Own7_{n?spcq*Tm(b$-v|ID<$hW^i!%7(d#
zIrM+il-10dRbEa1oojVXL;0Y?4nJydT4F7mDd+Tm`3<VA<NpD*ftOgh{K_j5)9dKn
zBlP0-x*A%EUGuctoUE+P4KoFT^^s#I{YSX@>ttoEC+B($>GS_}%L(;|$Ivf!>RB7h
zk@*jZp+80RkpI9K`qK>lgJS4w*&u&G4E;vK|3hNvHyQdPW9ZK}^bd`p-)!iQilM*I
z&@YUk-(u*Gj-lTw`q^^i`uBqv`in&m>+jeY`cE4A<74P|82U%V(AWR79{oQuhW;{x
ze_{;%PYwN}V(4d)EGP8;=otDN8~Vq@(C=sH9~VP^fT4eU4E<a~KM_NJgrQ#&L%+z-
zFOQ)=N%RM}V$9<9H;Mjq+|grb{Ao1!XU5>4XXtMmL%&({vHxJ7)Neh8{BIHczL5Xc
z82P`~(7z#u{u0s0_VeQy{=aPKH^tEJH1yAkp}*YFKRbs03em^%`$-J_J``(CsDFM8
z{eGg4 at xL&J{s4oY>!j8 at J%;MvP|?TwcV!IyBE$dwG4#2ub3*>@V(3>G{2ej$8w~y5
z#n5ju^tX?pzrfJnA%^}!Lq8{m{vtzv#~Au;hW<`5^dC0#xlhn~tH)6NU1I3J8AJbN
zL;t-P`aE87!uI>O82ZZ%{hedzuQ2pKi=n^Xx~cwipQv%yV<`UFhCa_}R8Nl~{r-mj
zE-~~68v6f<p+D5n&!U*B-+B!BUts936GMNTp}&3%{mG(_*Ppw_$bX5!zgrCbDntK!
zG5l{d^f!s2KhMzLEQWrwp`RT?{~AMo^BDTAhW@}9 at xRy5?;C@^-O%4EhW>Mg{?;+{
zmm2y!C(?GO$58uw$I#zBM*O-A{q1A$uQc>`h at sy{GKk|xP7M9NhW?H*^m7dTonq+k
zW$5o5LqFfp=Q*vw$z!PeM;ZFN#LzD`^mmP+KgH1BBS!tJF!c9~q2FNW?-fJ8$<W_B
zhW-LWf1eofTWIL##?W76=nsnFf19DdPYnHs4gFy;{9j_|^O}yp$z!PgzijC5AA`Ts
z&>s;)f4QN5Pz?PQhJId*{I9pZo4?}q<KZ#*`-wjGzemK-A7JPg$I#C;^e4p7A7SWE
zjG<p-=pPkBf0Cj9qZs-nhW^np^s5a0$uaaB4gF(c=+86skBy<<Z0H{sL;o5>e at YDf
zRzv^z82a}b`X|KDZ#VQ4G4!7^^h;vsFE#W_W9YwQ=ueHI-(~2R#n4}A=ueBG-)Do=
z>;Li?`h5-k=`r+k4E-4~^!GCKc}-A;mE<ure&!qcC&thpW$0JM&@VRht7GU-G4yL=
z=vNr}b7JT>h(3<Lvt#JbH~8yf=wE8+pB6*E#n7*hp?|xf&uhw=*1yGu{@fV)Pa68C
z#L(|B^iPVR|C*tHdJO$#qL20Gj2QYW4gMd;(C at QhYX8?1L%*+~e^w0r97F%?82Wn|
z`sc*Z&o}hXjiEov(4QYezu3?}FNXdUL;w63`W1%$1u^s+41K<*lWF^JGW0Ksp})Y;
zZ;qkA(9pjmhW;W$e{hWJw>Cq6NDTdl4gH}p^p_a=l`-=FvY|gShJL4^KP-m-%MJaS
z82l>?{aG>e*OMC$c>R1`4E=0F|N0pE{SEz=82SSZ{TpNG4>j~}ilJX%=<_|<O#6><
zhW^bl^d}qox5Ut&X6WA<L%-J0|9K4k(+vGz#L%B_=-(DY|58K$ju`qahW_m_^lvxx
z_l?niEH?D-jKTk;=*uD6zx7BA{pSq+U&YX0YVgmBk^fFZzdZ*3GQ<DJV(5Qr at IMhl
zf2G0yWDNa28 at c(fn2E~osTlg%qL2OmuVd)<H~629p+CUj=RF~r_Mf>1|1&Z4^9_F9
zQ<*9MD1-kuG5E(B{NrNqPd50Ujlo}H at E;z7zslf$E(U*t!CxGMzscZ#J_i4Mga6<d
z{FfU1FT~)##^9e2gTK|_|7{HZHiMt{^k!QBA2#?qV(>p{@c$?Ve}}>UVhsMJ2LI$3
z{O=h2zl*`Y+~7Yp2LB3!|D_oGS>H`vKbaDPe`C?d at rU>1Wm<pw8vG~3;LkDme;<Q?
zpux|3GBfpmsKNh-82Td&{%d0B7a9Do#LzD`_^*tiKgHl*8bg1Y!GCQG{aQo+=P~Nf
zX@>soG4$sf`fV}%zf|<G{hSkn{~AO8+!*?c4E+mY=-+PWFNmRkuc2QWL;qnze`*Z<
zCk_4SG4!7^^k>A-e_8Z#{yi^7{pmFL&y1nJ%+NnMhJKgf|B*5DR~r0PG2*x0_foHa
zE{dVQv7vu)4E?^MkLCA3jQr;q`g0Bb9LgraS#rC?Wtu*7MgOTp5{ka)^DK&POJ8_Q
zD^Ng=wVSyOkQIA6pp$(6n7(R%)KBDgr6cppc1c0AvOYU8`L)Lvmc_Ieov=+`KWnCw
zDshM8XHN2)`;te8DF5VNk0koC44VAO&;JDa#nR8tQ2&&Gevatxon&@jeE!)4NAdUk
zU%J1Gh{l=Y|4)+j<G&3#Z~0#={9C2rzbT+!o1y>Lk-p`Bm*M{xhW{feUzYzZ8T!v_
z3YLDm=x>@P|6?f3mVQTu`p*XRJ4Jt|H2l0z)#A^ta*Dg8(f at rwzaT^XV`-m>#b2AD
z{+|Q-Eut^mSdzK$>;F{hxGerQ(N9-?$CJKQ|N0z|+J4p}BES8-8{lsj{$WYa-51~g
z&H#Uo!M}mQe;##ER{pbQIlgrK^GM&yf4;%r$Kc<a0%GwOWXR9=SuFlyga5k*|BC_s
zrVROco!R2AF!(n%_-E5~vX%e#4EbwG-{NmF_%}89x1o8C#h+E3S^4)ReT#pg!JlpL
zKN8?C$dG?=fWOV)-@@QO;d^%en}q+sH0|#g(zo)z#Nh91 at c$>k-<~1=7XkiGgMTZ7
zzhz at P|5-II<LUB$HR)UVUt#d~Gx!hL#O5y${!P=we+21U{MjQ?`(J+l1~u0x>AdEJ
z0DrOYPff%BOn`r&@VAOS&!71DWuJdCWsu;k4d{1F?HTe<Bz-IY9R@!?KkW0r72waU
zb>93Goucpl`15*zzwyA-_~#h>M{Q>3zeD&BOT%AG`d0p%g}+GjIsW|ou%G`=0{l5A
zIYoYF5GFtWe+%$075-*XW`2Ht)#v{`8Dt8-{7dSb;w&Vm?>>JA0apGi4oZzbKfmeo
zZ$vL|V*bG%&-22+t22}Qm1Q~UaXZoX{m-KJLUFpx9g?5E|NThc^1n&^$MWOn?|lDn
z7XI&e?dLM#XWN+6Z^aJU!j6B7=#NxEIr{z&Cw<HRC5Hcd8UEi9;P1+izcs+0eXuJy
zj2}P0<j1f7_wD=_oa{0 at HckGwCVeaalMQ};{>bOQDZt;HA^&v&{uYCu_mBDfd(Z|^
zf>YXGr|>_+KSJ`$e;3lX^1n>@mx?a8f8Ial^Isp}Z=35B9|msz>hoU};BPN*<=-g!
z%+LEbeE!|HwDVuf3k#Ie at ed$<EC2b2r1Iw*{PzU-b5C{rued|<)6f5%0sc1O=X<uC
zIRE<_{P|nC{QLdKhNn5b?cE{yDdv*rFNnV1|K*B)I{%*`eJg%hhr0No|NQ<rzx*a{
z9q|A3%>4gA^i%v7{VB<ux-WkG-ywa=|Kd^3|8~*m_!k)d??@9dj;YVTK={4o!{oRl
zX0!T}zQvzin94uW;I9^bzx at 9y{4~Aok=R#EzY_hy2-5czqJO7{Yx$|2b+ at te-*$#m
zyu at WAX~mEKzXSR2ko at Ne5yyYDk^h5*-_QT3vmE8TB(wX%vBtDN>09yd8tokKC;l@(
zztc<ePi{x4QTYA%EfM~wkc_^ozQ%8X#?O<x=xhh*b7=ZAxzQt?tN!;uiRXvnxZKBP
z|M~rU%CG*n2)}PP|2${#M!G)3<j3#o5dTESpDW7D&+qT^`R~{Kdk%D7>J)j-iOH`&
zcPqcApD+BpX2Xg3`Tc)Be^-D%`*Np8!*h at 1^Zzx#Uoa^(|NQ<ypMUos*zG4*_;=~S
zo;rRGAbqR;)(U at -=yU%0{ewRL)Bt~p at Q+Kwe|&&{vG8j>V}5>rq0iqQ;BOQD*=hJ6
z3h;Lr@#ps+`uy2+1Bc+0{yX;yN4#Si{_l~#75}WGT=`@E`TdDL|Ih$`iSXZ;hJT*`
ze?Q?b5q*w7zkku^pA+EEUg#9l<^QArf1{Cqet)CSe^r3LK={*@|78LGX5q*FCt>h^
z65wyokpFK1{&s_(@4x%`->JV{{|c^j@#lB$Ve<Q*?MUCMe_g`gD#~2`Wd{Fw0sfAw
zoZ{|Yhwt;x3-B-ek*ohaXXeEG{QgTn|NjZ_XI<~~5^4Cq2=I3t?f9|(=lugd|J&Qy
z at h`c_ at u!Rb8>DZ=f2q8H3gcgC at c)n|=o}({{@At1@$cvk$xlE2g`{usHyxAO|M2 at i
z{roQt at aNp@C~suvAo=_+1^5>Vf1~Jf`SbpBpZ~`@*!l0c#VOto-2Bz&KZW$I{AVAV
zn*SPu|JeY4^R15fjx_wg4)6~Ye$4+#2LF$9?EDu<#o=c*Fs0<5^sW522!FdMbNuTK
z{)b4P;MDr}3#Yh<)(0{9{J+ex`Ad#- at n0<dGyiOZfBcR%f6If8HC_8FB7H0W{Z4TF
z*#1s7`0ozz=RWNC=d*E0e*W(W at V5*93gYC%`RDy7e*OP<fWN&xQp-x0|IY*bi%U}T
zf2zTM!cKPliywFVx$cns^z(mCK)*@!$-N%Q*FTf=t at 0}=O>Mtt82)dvv+aMI at bfb>
zn0)>|q;K&z3V*XGbNMwH{6zu&TDkD!clKcN`40{7_nEqGq=x;+Sq6WT at cY-Ft-p4x
zRY*?Xwf?DFj|KeCdD<y{>D)+K@%?|8^sV?ciT_=q$?@a5to;21|2)M1tP|jO9%AzO
zKMnBLmN~~uM49<{|EAABWPn|Na-VmK>Du2Q(zo*8A^fetf1bgARe-<!1*e#H{u|(L
zoaXYM3;ewQ)X)Ecbb(25O8;N*Tc>z~=<C6ce?IA3`EM2eW>Mt$Uuf{(65#I={sMLm
zlFxrbfIq)HHUGT-(9i!X!tb}A+!r0`zQE02RbSoezpEX;TG9Wl3W^=y|E)>iieH8J
zkMaAd;s4|Sf5A(R at F?NcgU>%Pz`sKHi$syj?^1*RT;ccQcbV`HS7JG8IP~~&!2b@>
z=RL2OeE*jR{4bd9%AfmePVD~`hW`_Gv&%2{4^FSf9g?3u|9H~3%CCKf<Hz`2Y4G0@
z;BOKBM>J64fzN+ufWJ?L<HzyiYJ-2$Ks)~>OC8~dY2tqb>09}468;kLo8y12!QUbL
ze*G!_lT*Az^!3n3zGztX+uioROY}QbQI3B629v(!f2a6gBzo+Bi{bxe0si*aoFd<|
z!Q}Hd2lxk8y7FrlW#;E=G0ne at pYI3wv)*uu>G<CY at Gmy_7a9Edd)V<W__O1`B~AW^
zkiHfFq7z;ITOt2!%g_JC0sgK|r}%mr{__L;UBcfE{H+H6+rsbH-;TGO;?1J32lZdw
zI(Sbzeob#XjlHSdG5Pgpf6}+&*EZ9|57%FAGyMN)fWPfs$9f-<(|4c$!T|p=c>y-|
zKX(}X%L4qh?>XY_G*IG)&;NFSzhqWw{rNwG|De6>_&2}r2-D?%IO$vQ?^EsgG5>cN
z{Fes!i<f1V|BD0sO~Q}u=N^OqF9H7A4;=sHY2yEGfPY|3YW(jr_z&9Kj(_%F9Y4Rb
z6_a27!%5$Ye}}<;zrlY)fWP=d$GRhu(|4c$ngD-et;@gm)7*bQVDLW`;BU&1zdgX;
zZ16v1 at P8KIZxjAUHtZPyKmT0;{#N0~^&g(gX#b~inJ~yM|Ju(S?`1vdQ{q3K^sVwQ
zsdw=&5`B*UqXz%|0sicNIK__d_H at 9{|J?!pR^iw8m^1%l27lju?EH5|S7ljQ?HVv~
z!{^_O^sW52oh<#2J4Ex}Ck+0R0{kr-kuW8F4oc`#;$IcuA9$)G*7rzr{+}}VUkLDb
z at MdF5<w`6^KmX4J_?Q0J@#l&j^FM9ye<J+;_?^F{<M(kb4)<$T)_z35-~ILbTG7|{
zm}@qC{|A%4RepV%od3(nZ%*w0Zw&uu3BT{>(ruiFTRZjSr~0kO=L7zCiGFiZ(|yVI
z&X<tB<$u>%&VOuw&l~;^$g|_u#G9Qdz3TD#{5z1o#h-t+<8K#zjvrr(Yx!yabCU4;
z at jGT)$3Mp7cc}B3e|kCKf1BvP?c7LO@%{g8!2cEEe*u*L?+pJ3k>l)>U;kQmaGw59
z9TpFK{@qF6jNduValC)_vcW%1`2F~G<v3!h9zBxAU){Pr;D64JPU1w#zZ&uVzct{0
z!MV==E>Yz2f5q_suL1sM{?CRe^-I(LzZc-oo$vSuLixRF at DCqimtWi7j{ie<kX)qB
zKZcUNReqDtcl at oQ$@%}2!GCjrzhxgsJU$J7OMpM?0>{4;`1x8)%U|2yCPVG~ckyOh
zO6mCfkiM1wr3U|>4gT2y{sP`?OX)w+XZMF+|7rvLZ3|rfn?;r5|E9tJdWe6B<6qfL
z9ewlpmj?I?E==Wr+u$!8X2-vPH~UihBKqw9 at c9c!-->^S!T+woe^-cqSZ4gU2lz`a
zO3nZK2LE=nz{^a2|5?DBjVYzee?QW<^513fe_-&R7vkT~@&7IIqWi;-|GWTy)5WRz
z|Et0OS%5!R77o(ozbn9>-JHtLeVO0>r|xIRKX<sxe>(o-N#BZpi^2bq!T;M3zbu at k
z<Nr;7KUX%sV*CHt;2)76$o~N@|LMwqKhn4I-)``KV(|Ywz at Nh}Yoqk<?y47k^XuQD
z0DtjMUHO-YKKFm08T>oa4FYEJ+h5Lsj-Q%$kL2_BCw(jbZNlGAw3+{(2LHJM{u1HW
z_rR(XKL1$({w2cS$<9$?{?85mKZW=UUH<u<LzsO2KLq$&uW<2~X;{SnFN6P%{q6V{
z6gmC{?vQlB=Wiu_EB;FsI{u}i$@%}%;7=T2^LLDK#C*>dlh1!F>0A6QS33Si;Qx=o
z|B>+1G_FTFdaNVfrU&YLWk}tcIl}h8R`fqeQ-0G)-}1lTRjK92d))p0^Nj$13BPQR
z(niiq^qoKa_`Mq7&%ZjAe?5c$$O8lUKhp7kKMnsl(zo(I`5LE)>(|^z`1yY_z~4N{
z at n@&ue>A|~d~GU!AA^6tgY5jb9PRjJ8WW8FVA8kpzvMc{kL~BX2LCz-JAV49M_M}B
z at sI3*cE?ZQmCCPx99ynW&Hu&*|E9v9(tjW0_|xql-H7z9{4Z^B{41Q9sQ=p3;C~^&
zUwph%lx^V2-1+tYnE-#sjgB9mU&=Q4uPl)G({Gp-l{kKyp7%(cS4@`{*!j;{lp6mn
z4F2hd*!8bd_}OPne*Q~I--`d_n;k#aKmPwS{q}d at NSnWFs>}Z=NKW5<{(RE6_;YV@
z{JEmf<HuG8|Mw5I`D at D@|K(};Hzj?GzeM;;fWM!?|3QF1dz#~~PQ(9BfWKY%`vLzC
z4E`ra+4*l0{-34cf0XpC{4X`)-{0VGEwuS_%3c0XbcduDe)-=-`WAnmTi1<rS|R`2
z8~i^RZSyxzcf>a&ncWwkzlroM{x;z+0sb6=zvM8RzhH*rPuKq+NBS0jcB{)jw!fVW
z{ymCp{-z4YKWKxV0r2y`3+Y?@%Y?sxI5~0q8({E%Cj9>McWu><KVARV72qFuo6A3r
z|GOIekJADzGx_6Bm++_Se;y%yEB__8JAUkccrC9_6b)Jzl;gr5+WfUOF8{I(PNY-&
zzn_u5#osLaP0mad|2+);$zyH)&N`=f??y at L=!;+e6G`9V&%V>;KZk#$#O1%2!GG~M
zo4 at 5W$It)g1ty>WeA2i0bMJQiQjH`2K?eW&<8A(eA3J^?voQJmS)_0AFTBU`FNFB#
z8vJtu{3T~P#h*JfNf&(nh5&!=eNGYA-v=A~+Z=A^Kl>++e^ip$eewDGlD?Jy{9ii$
zT+!$9A8PQQ5#TQoez^=vdg1fW4e(b8e=G3sYw*7v;BPy}<-aV+?7sN?Zv^<W?@!Ht
zzQMoX2s{2ca^aee|6J0y;$L9!^IizQ{~1<n^EV6s-D&clOZpant?)NO{6`r4Zv^;@
z=ezi)<9{{4zs%r2$lyQsNIU=8yxE%41LD6Pvh|A`&mw&*|0RoE`D6ZhEcD}_JHh7f
z$dG?e(zp1R8vG*-{#OJ1&F8!PU+d-9&;QE-{^AE*{)<GP+y5wof1QbT{&O#I{QpVA
zzcRqTQ225FGuq%kA;d2WSC^#WKZf+J_}4y|+Ww0S{<Z*rhw%Twg(2yMAOG6|{4K(d
z*PlN$_$N)W<KK3XBYrOp{}H5b<-hA8mw)6RXYj8G at V7KO;=|JLe-hv?c*ODNh(6c9
z!wvq at qwM^5UE&nqO~XHh^sW4t{3<p7#RmWSKeG8df0h}47U^63ZI7n%PcZm at 9^mh|
z%<)S%5UhWT0{mHzIezT_CK>$O9PRQyILY9?9D9Z1AL`*+9C~~ppx-R|vJE6 at Mf+dX
zKVh;R|2CPp@%u?J`R(r*(zoK at DEXhizSHLVH`&Pl7Xkj3>z#+4E{sVReE!b@{8>*s
z#U+wa=0DcpFF(f4f74A)@zyl?FCl#^|4WuQ{tn3h6oY at AV{QK2UpW3Z)8v0;fPdi&
zP7&AtPB8eZ0{l65I{u5re=Pt%{xeA5%71f*<6kO at 9RCu7f2-r{{I~IDTS^zQaY#P@
z=A>`&SG?%>8zp|sKh at wrCBR>>*zup1ru=6I_&Z;A#I;cV(+vKtrr7y!|CQs<PM3eu
zxAI^7N5|jk%tY6J(+&PJ1N<G2XBPj{0{pqJrN+O);D0y3U-Go$-#1PCI|KZ!e|G$f
zA^yA<O8dWlQm4*5-j09E^N#<RH1R);^sV at pyzBUR&4Uxyzbb=&d4NBQH>**4I{NJX
z at azBk0si^#JN|Z2W&Ub|zvu)z{~f}AYMT5XO8Qp*i<UWle!n;;=C3vQFAMM&zvA-$
zKIvfc^WPlcU%1 at y=Q}eIf1SbqmjHjkAD!a1Y53m_ at OOOZ_;LNE!QkIN;o|R)|Hr-N
z`1 at n#>APend3-|j{q?&h(SIq;{_|gvzEyttA36V5K>6|izu~u^Lrd)XQ}T}URJKth
zbK#fYL8Nc-=YHz=xz2Fn`osT!xzB%jiSS2K at UhJCd&_qz_fIY%{fHk_`D at ER9KZGx
z%zvuE|8vscl;oW>Yr2#z{OYgbdalPsB{u(JgP;HZbJbJ7?jwE9slR at lBmA^IyGP3D
zaYlPeN}T?>WE)el==<fR{3_d3VwYcs_ at 66+9KR;R|6!%J|0Tk&`BXmNpJM|0O``A5
zpL5iZ9Iq37KmUsZ{C at tgBz>#?X8qIEh$7+P{LeG;|8~It4&mS0^ViS+_omwAw at mbX
zdEfsHNZ<0mNc_k0JJ;}ki17RMFN-(pQQF<}KgT<t74Sb-^!@Vp{jUi4-)O}De8c}+
z1OAr?|4E*|zW=+I+3{bRq5lI&-->^`;s1q(|F;Q$O8o!g;y*f#|KFKr`(Gsb>FUpy
z0ss4~ST|zE`qOOqe~j?^{+DFve_O!+)(ri>jr7+ePYcL5O!<cYKQsK_u-xvy+B5Y3
z1kv~VpFV$e<(Dr0$B at 3|e}&=y<%a+F1^mwu{&e+c<LP$&smRd(4N2eff1%+&|Nnp5
z{<U8y6Mnz`G-c at jg8~1SWa$5W0sog6{`3Ez==;C<47>hxX6S!~===3&;PTAsPZ{Z3
z at n2#1f4$-VqXGX5gnu+PD*B$|oo`iP*Pr<r`oB5pTmBFHJhlJ1(eQtk at cZ?rB}4z8
z4EVn+L;oKQ_&?e3|7OGgZ7c2ilf|3GDIMy?JI6b(5q-b at 6p4Pi{^vx}x8gtF at W0jY
z|A~PAB^mm^^@(=<Y0c38ElA(;f3e~JZHE6dh2O6~?HT(2Xu$tIf6J`>J{a(Snc at GP
zhX3E6Y1f||;ZIk8W{AFDe=0Kce=6x)@$dIVYWuy*@c*HJ|4qW5uK(Gh%C0|4GW35F
z(zpCCGW@^S at V`>{{rc0Hq5u5<gmF#r<3Ere)}WNG{XP`%ztQmje#8H*XW8|qK={+e
zzgqNt|L14ue<kT#@ozQ!f6(y%seu128T#M9+K&IS4E^7l^ez9F8vZ|G_}>`dUm^Sh
zqgv4Y(Wm=s^sPR?-{)Vc?e9^8|K<RHPM52H>G)d${Q1IPBL4FA^J518UjqC^!k_Qu
z*U$gE0se);-wgau82oiLZcgXd-zMSr`TX<e)9AY>c4xvr-?etl_|HtE at ALWRe@vtA
z=hr_UMi<zOh2rP)`R5m<(f9fM^AFPK`+WZSVRd%<*Yb}VcX#n+<-m9TI+FCQ_CIi?
zYkyfAI|Z))&l~mcW#RY7kETzZr=-#&`Tk#CZ};D4WvG9AgPs2t(eLWPo;v at ZO!{X2
z<;5Qr;xOm`MI-;e6 at EYe&HS(&rEHJiFaPh%w(DPu==<{i`5|kle+KEZr(1Y_rsG#X
znnmAlKdl-1e*x)R at o(OU(e8b^9Djb6PI>kEyFI|)mLdN`0sdBl|5by3x$x(D at mnnX
zgFIa8zaBpmeNQawJ<<1Z)l+=^Iayg7(h0fNBP|pCoE~U*{1o1f^x3Ab-{&8WscnCi
zbVrT9qWwreDnA9}*sk##-~cYaH;njM+^n%U*LhSs%IUvJr~8qx@@x5TL_bSU<pkw(
h;B2Q~cvTNL$}1w9(}|_ObZ=Mx22uVnxu|p_{|^T49|!;d
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..064a54b08495fe096dbc879271f0581643947e35
GIT binary patch
literal 82952
zcmeFa3w%`7wLd<2K}5_XmfHAeJ8HC{DkgxC_?(ag&d3B(gO&Pd5<)PMkfg~3qo_nD
zu{k}A(rSITrLDc?R;{!sP#-mb612A(t+igSRqAb(5vzzTrWWD<{jR;w%$~^%)jsa;
z_xb(r`4G<DYp=cb+H0 at 9_S&yAE31REGcz)>Jo?G-obAbQBgT9ClsMEcaKGn#&jP_c
z5^<&;g}<ZmcMSfH!{71vBix6-V|BO)?-O+RM7%$z!^L<{*5S|NeUc7O!TVGlF2#GQ
z4$su at GQ7)m_$>WC8}D;;coyE3I$WjS)%rbKzvt+;rQdV$4&sl`d*07{P;o)U7c0&W
z*dJCb2-tr*zs?H3RlL}8vQHq>mR(g;XgPCot at 1hf-u^8BmHsgpAuk^9XFb+%RZ%X(
zkCouRoeVAUzB3fG%Pf0qq&mZ{%ndkIMfuinrH_etld8vCP?>KH426yfM!NGK$^;~6
zzaF&TKQQuMg|{PEl<zH=>$4&u<cwTZlxx`+GxSMjl|n4%DgXu!gvMFU_ye^l<osMK
zlKrL?F7xzUX*ogU2|tlx*+{9*w<eERn at 6*(@+Z94oqOQGfj}6!Jzzbb1Vam?prHLm
z#eoGyg#qUhWLlPQmH#$WVA-!);jOu<%<|v%ykns at g^R6|lyrI~S>eZvFS?}S;)+Wu
zzFbkiRS-3Y35YrI6v`aZiLz`JenP_D&-x`k at LZ@k{6R*~p_V<fbZD#hvuN1x2bn$Z
zz31&1=Pek&>&+!oyr1o7c8?Xwk(WIln5&np7J3R+XW4(XoD1?Td%WeWMEiXZDzxm;
zB|=Z+RBVNZ0N>K{E+sk9a=Htx$@>-e_Nzblf$~MdnSfTi{0UKKKIH9|ZIwS2nq=AA
zm#h}L#~XB?M1pfU3Vz0#{Isqn>a!I}rlh(gUK!|<(#47eN((LfDk$H;0dN0rp&}xB
z%khI4HELkU+y90J=Len6!kU4--u`+(YMg5jL9U|^2{`p2 at n7El2>Pn!EJfsx-u`W<
zThM6++V8#nGm%o`v=t$Sr0*gIbpqaVJrj3btmWlQDzcm_QS_vuofklbECI~Q2M~IC
zZi!`Q7g^=cc>C9avgOPIU;%V6(wU*;34P7|c`edZG<;@}r{_l~CO_a@?F&R|fR7T&
zp9viXg)NEYlPp2|9Zdu%1J8N;_k&Kr{&n<xVPpjus4PL%pt8fE!z>38w_M2&C06-a
zz3a)Jy({|e{sRYe>Tlvac?S*$&1e(;6Ft%8zabbD&%n=-Ki*^(xVIwJC6J|CdNTKx
z=3YcS4}^pEAEJFIJ>aZF&F7S$g;d^vGbf4jpnX7d{$HWmfc<K83i4481CS>&R~418
z;h5dqUklnaHe+bSx$h4Gr^bFOdYF`d4M at yJ`CoR+pFJk;`?2zK1NJM??|umW9hjwn
zlbCs4z)_j02$DyOE>7Sqv0~96N!UvEF7ciVlk5mgq2!MtYz?BuuuX{~+vticxzxDW
z{*9#;MjzXE-~jA{YwQ0kUCjRLV^m4>MVK_h;OCYOse+xQ#X+YVE!<lYuphVVUY}*3
zTx5km^m at N~E&EgW!wm1hXA!FKZWvcF2;m3pwxZ%~*{8ykb<FiUS(dY+FyNY61`1K4
zrvg%{0cLK6w;)*Lr~Nq$Bf!p!*@kM!S(+cT|64li&B!2(q6HLRHpH>4*oyeU+6r`?
z6}})8F$mrQ!rOhwfe?7RiG_JLj32Bl3EE4GXKBu={Z2IpBN+hj7N+bh3`_oi{biKg
zoeR~b?SWlHsgFZnEV~jTAqEC^gElZqgOnQ^3%mnALRo0X!l1pw7!s7dW!L*1i0tZ+
zxLBH{pt0*%m2SUY`kZAC>*`fP&ckStB9sZf-wfKyEC(G(-&x^{mLMzp0W2+0jl2||
zo0(w<2f6p^=7fCMaiSN169K95XV at 5v#)b_G9n+s*Lw_v$&oaiqT?jghAP7T)3QLEi
zzwZ+Z3^7^utXwhKcfc15p3zX~?O%hCHSCuri1%mOFtPCBIK=y-2ph^+EHw;52tk|u
zFuWhS_#j9jl;Q2)g%AgVfh`OGgH2vSWvuf<*A^5(C8?shV|9|6O1)&GLjxeT*LO}d
z^|8i&L-cWuj1ZTgJ{VSBVxv27bL?tW!7s62oUsrUyq_UmLAIKhX;kl19KfJohMkt$
zp|PRIJ;jz&qbg_F at MBaBk7t=u!$S~~8lHjx6g5`CYCqLCrCtZ at demq|OsBo59 at YAk
zM70ie!p747Va*0kMBSy^#rqt1Gx}UAK3Bx}Y;^hjYMjrRY=|20IoBVp1Nqggcif%w
z4qVOw9WGU37mANJfnj>L9#8aMa1MXLyP;sPt|a<riNUYXF5?Pc>2q4;7hrUNTrIl}
zLu9BZH)!v1`<WPWG=netU at X5=3t!bQ=0JwpDoV(iRT!}0V8UTNLi+>u7V$&|hI;-a
zNe)~AdL)y8PgRH>iolZ9arseoskOADkYNCBEqXRJ7*38)HS*ap;XRK!N+Sm;MXkmn
zy^E;E7Z>@X(=m>$_HM|4Ws80*#y?%=6qbYz6HJLK0g;WaKCH=?$*ZzM!)O4Aw++LE
z*q3B^)FI*H$m4k6i#(1(0OJo#u?!Q@&!PF3td{noED{<_x_AH%6eP3<wlAT<IK=y+
z#|ncq?VqX`1Y$H_=nK7g{o~dU0uXbk2*&HL?BN{{fWSVAJybZR|E_E%<)uAWU$QZ@
z%HLOhrbTDRnFD>~1jhalGp;3;w|y)B+rGrxw%I$G76^vrS+oOmj8msvwh6T_M_G>H
z>X^~Yw<0|-u01fBJw9u=x>%te2*EtRwzK8~4qIE|{l~JOwVd;ys?YWO$+ByZYl|L#
z2p6CCPXT8^5p2*g7<_8LC#FyK`Nd!<bS2sgHge|$f1(b29Je!c4qVP%TiD*0=UT&a
z)Ua!FUT`_Mo+DhdDNtLOMqLN*KpB)o at t0sHdJch&@NtY)6E3qwjL{1AAsC?-9{&AM
z#euF-h~y8P>Q*eMI1eM&FRW|d8btR(TTMKH9H742OP}m}tO!7lx4(?GXn26GDgm6=
zBDxk)^5-oW7(@`S+wiLRLNIdQ2m<!A0sB8IYAxt(M6z1;e%F6 at 9()TJ7k+7AZ_kvz
zM|UEO2L9#_yuJN5aWJ$;tdj;v#mX9Zk+1R*@2cOS at L=ToYfvVps5 at CU49!3*GH4>+
z{u<_X21qK2LPnN%gG|%<VVqt;jrMr+EA#hw7Y?ie@*d8^4TOkB$Rz^nMTA at f;Y^JH
zM`$1yjblX~%$L`SPG+HStc*$@vlR-fU>VGB2h(meR)Z~|<%Ek-z3 at Fg{GY*UEd|i6
zrsX{97vckS?dcex>!`3hzp<Qe`IrXntP<UP_+7-bZU&tucTxh==VsB9o>zqrI4Pk+
z;b%fOwVpk?n{|K-;I*6wJ*4eUiJj{0hO<YVup-SbUQ}_Rn*CoAh%6e#Y`u>yr1gfu
zgX&FmE3CNa=?~VS++gIvA-rI~h6j2P2$59eK?W&E`#~ZJ<4_z0#j43WOS~O=Dn392
z%l;;*cneUrN*MNcHinv~cnkdbE(l1Q1j+AnK}aq!!hR!MYlIun2rOn>cD}n9^QbUS
z8+RV+gLIZ3lX&zj0F``$k<%y>OmAE@=)aFShJ}AKDf&&oSEs<gI1PSP8vH}k;J=3f
z1NP|Q-6&O<iS`3iw_oW{bTiZOz8r7MIiGDmNz6pgc<ra_hA at -f(n+R8N*CsMA!!a4
zXfDXDE`8E+CRk2ynR7(Y=^F%Fmb0!8ujq`wy7D8w9%J$o#u&JESfhhGa>^$3AP+Q%
zYhd76nKtjhvjD?t=8M%tW9aoG=Ts~cc{fz$95}Pr+kZ8b`pj-`{{Toh(j at 4UgI+)l
z8?ak6{}iBr!K*PYVX%2<JY%YHwOCZj8Kv&rL&Z;e2&O6}X2C<}k4ZVn8qO{PRO^}j
z4(2+;j4Oa<3S;LrPtd-}+J<u$)5+EBhq!c_$W<(HvgOo4Xwx*eF?hj4T%S$IWWOmg
zjs83Pi|XHoIF5{qBTD-&b|e@%fn2zjjGiIaR1)-D+4AUIz~k*Pw!RNd03oB&mi>fL
z`Y*_=S!J#qCvYE6Okd at blQL~WoiH4|8QmaV!Vik7z4clS>+=`(D|ZPH4I}Cz(u}@>
zByCT}<{P1Di1&AQc_>P2g#JE8Zl6gbw{d_=amI)*>!0o#V!+-f%ZM!&{O82!>B7>X
zu(WuF_l9z)t|8DLA!<cFjrv2bXQWeZNjUT8>}pzp1oHV5+ARqM59N}e(Lv~aV|@^_
z0LwlT)AHqICZY2!IALXU*Go+B*$+|5CK=7+2?1wAUlKC~4 at oN;WpdRV17Q^wTrimC
zaq{JlS!sG+GVgh;1o>2{_Ewpg$`Gb3B|OqHXYFdy`N}eDn7tXAQi+LS<wCqIynEdR
z6})|tK3rMC_qNJ1jEt4FD!kA$T-n0laAhxF)^NCwZ#<SA9#pT at d<}<hBNPvULlTgn
zFo`Ig6!PdT2(OW7c%6D}SFacG5?osx4U22Npd@}Cl4OMpGyBk&tjMFgU0iq{eGIoo
zY5%WA#i|!lY*=7L!1X4Of~r at SxhZ9_l%G?Ku6C;(2{@yLL8rABOT17nxb~Reqdg8A
zw-ZHRx`WK0eDg2pJD3b?=6^2%@TJ$;ncB8`Cri7Hcn99e###WjHMkLj1&%;@b*{Jn
zacBnSn<ZemDspuOThoVdydhOrg_xeSY^=(GSQS?U;!RXcbWF`Tk>$qB3V2)7i}dEq
zfdeCO0kC}HEvWNRZSkLM$6#@Z^23b%JrOZ=46}ulJ2T#aDd3W_ at TJ+EIg_0oyEA_7
z&M1cZ51_i1b0(%EuV8=1ito?tlKmM~DmH1bVWakEu$(wV?FREQ*l=5kYsF<1+wh+_
zWHk}2QgT9A%!GvuSq$|C?Ea!b$boOsJx)9V+A0U!E at DO2t|5{uWHd9w6utm!8DMD(
zJr#hrNE89l^T2R_Q6C|A7<P3V^LosEq&oD3kCSR+?G_H6<z&%s&$S}m#d{Q<`0)W7
zlSM3GC>Y%O{7S4;pyd at nx!}lzx?NRd32CRY1%OThIxB$MveTl=9NS_*fiX)!w;FvS
z?jl*v!+qd-=lRe{c-iO^==7>jAQ0~pE6^uk9dyc=KB0W?m<6UQZCK##^i)g>?Csx(
zLQ}XHG_BtLJCK-ciM{>(%re&35No_N6)lJ?U-p#_gyxE*v}rv%g&7qpC#W2Hb5M;H
zscbG9)uruNWdR3G*7OsxptrM``is_rRqOrzeLp)9f)LGHgSWT;G5oJ`78-~STPR(_
zJo5X0Lc`EFEHtJ%H_?!VA8$!qloLP4XtsX`x4PM)TSm1X)c3O!SSN3PH9EGc3x%O8
z9X%D$WIDGSboPn+Q3b;2%;*OPMxsZ<9XHl9w4Uf4F8U?spzN4m@@j%#QiLSeFHs}B
zkx!<YreC78G+GQE<Nn#$@?>tBA|KZ-Fuxd6&atN7l*r#WB*97)LjrIe-;0ie->+5C
zY>^&gGnsw at +e%MOb|uU|)V^}M`NzkFyYm%sstWs7ws0+B&O-b*zaf;p#9O=_!Rx8a
zc+1$Z$6G(L$NS~YOT4GT?n4c(KNH%p$NQzj7(>caSSY|Wg=07JD5&NA{Pk-jc_9dX
ziM_{LkEOBV%}NyZ6V at hA{tupK3_JRkcm7UgNiw}R{24GqCAm-Pwt)0cZ~u=0O4a+t
zl6)PBKc~&mLYHp7GMyD!^3X(~e;WQz$Wde2Z<`d(k}))e*H(l|yCz>-n-m5FJ4%+l
z^P)?zwm`|Az~Ugc#YMT%t?qmyR_Rc++XpA4(Z5~vzg at pQQUB<gr|BP|wFy4E>KnUm
zq7FG<Y?1i_))Wto^N|B~{T}O~175eOZdn7ySJr67xnZqTBmV*_&>W>eScExsd-q9b
zbx{{2%!6*6y1i>XX18VD4Sh6_;oTWqWBpMI-Ws<D<R?)xd#IV4aW+EijOe^GZrhv|
zoDKPEA6P(2JiDGhP#@JoA#@$5D6W0$HWX~kx8WlIP&!0kdSNhfuZ-a_my3(EXfn7I
zOz%}|wj64SQHC<%#=`w_1L7=*uRw4o!HD&G;2I1vg2(U at EQHqxkT&9889eAXzyZ6r
zXdMzPN9skqO&X6J<V*cAXk#>PEAlD*j66~_!YuB-s?#s=VC3$iTvTw0H~+4p7lDA5
z=$Bn>dUqDd`7Ge>mf~(M;xQ<0N)$82&y-Qg1h&e8<vYCnIpWI%iwfz~Zt)(`FXZLC
z#AWDjV#Ju&qLW)Ieeq(#?MH-?W#6napiXk+iseG;Tsz!09@!~d=jNh9#4UTXRsN>8
z|8(Ss$J$@SrA6g_mv8s>|BB8998k2%f}$1{*9mXY+y4aN at c9&pRYIB~WNtp&uprW3
zREAj4d8B9!AlgyHL6cAg_T>wA`hUyw2i%~ak5dVkW9d;&bEG at dfbE@7ZjJr^F08<V
zrT(H?64x!7+{)6hW{bkZor4-%$U~V9QKkzKfuwE&bCgB{qTb0$TPQ)&2-+=J^yn{Y
zK^m(|4Pm^Kaa4 at em&WeZ2tz=CvFR_`PR#Om;Bo_<f;Zef)k?wgH&kkFVydZe$V;83
ze|s(7eP`i6kEf^C+7!1F{Y687tz6u<LPnT68i-X=J_41drKm70MX;z?tj95;-aNPE
z8ev<emC+22yG~_U-zIUhdVVAJ396I7t&-M2uq@}UqBSU;4pt>POX1GT{!2V69~|0}
zk9Ni;G(k2ybbq^wstF at cXIN(3y at ue}nUGi*OEjHmWn>IL>?O+e+Q)ChYs~qAxHdzB
z*otodz|aw$hN^439_wU5`)=u5ZePbzRrD_UR+{gdRmZVkz+O?P#KM6z9HD|_?2+&X
zx!&-%5!|~a8`Bh&#pV=Sz`fP&B3JO!$pvC+3)zX at Pui<V>}V1Toy6^R5D`^nr`D!r
zK~e3t>`#d@(uhQJk<Yt98H_<Jlqzc@$h)5PZn#-=aS&5g%`k02^lFTKaXq~PoAW!Z
z at EfC+oq;VDXF(1^3o`KEc5CuzVDeDL?(mM$@Mvz=5qOtAXFnU>g3|}nv9C7WTfU_W
z)2|>~@c}K8?bzLk9)%)e#TTs2487#txFBc$5)j^>fFFGwqbj&#pRo&2_&%WQOGM!~
zF2XQ<GS}a7&+OpL1<z+<(~w6ru>&KWN6tUy$JcB)c3JjTtmWropSet;!+!Q&>>|lb
z4*T0XBx++F&ac`4YJu9it2mgU#8+}ki2JWwx%nF_Hry1%GE<m#82>!OvSCD)gmFpc
z%DMfYrO(x9>k>rI&%#8=Jv|mwvsPN_bHq~L@|%xssmF<>UM-W}@-vI%n4Q^KG2<=A
z5kG-rgw at CX^cs-zmV{R&Zq;<EsowS$RCA;fmj|thO<W)A2XOv at TFm~JVX;KJfU$F?
zN>7x3Kh}Ryz6;hrMJ?1po!EIx=tnTpSr&}6EOhl`nB~D at _<PAxTus&x3 at JiQ)~aCV
zI)piBc((b6IGT(g{-TQS at C^HD1 at vMy5^@>)*lT(J6pcV1fJOuznNx5m*z>!%LRii{
zedG*FerIC=uW;wUuW2vbql{O(yN1<RoO4^UR;r>7Vp5ZGg7$~Ia0q0D6)68Og*pVv
z_a`X>#w5{)xZ)~h2tS@{nDc~|9kZSdqsh)+X859T{pg5d?_3iG0P2J@)NITeEFl;2
zjHHjg4pto5(P1Nfn1sV0lO?d2<62YxwzvOO_-dGZy5qn-9(qQQRFz2TqUT*nosUDG
zl+<rn&4Wn_`>T+YOYdQEJtARoFfb;<a;vZ_X{<5%IUGd7bci at I5=FuWiW=g?7`P}&
zPRYYN*kX~e3{0AegbgY~3T1>ZjUr(KWsO2vXP`*fK<QH`s|^$h$5B=^Sdq$37Qy4W
zoiVL~`uLGj>!#G2DL$l>xG8Z><U}!o)AKy?+AQ8IBG+!MWza1#Q2tx*fFFYjolJ-i
zTMgK94Ng{jaY0%C#yV0y@%jVE8Q%{~YVW1bx$VtEzCA4V;O)Ja`{{rF-}e3&w0Ecx
z%9FaS)iE`+DBId+O at 4(AEJk!S^031f#~jI?7K|rl$%}dY&|YYeQY6uz-S8TB{Ydv)
z1HKchQgSx!ZXiVO$A1#Lh3MaO%a5*re<TL!p!4g1{k$5UFw0JH3K at pYzPxOSjX9J(
zA6pOOy#=_1Qh?)A>IRAwpeGUZSnRr5Z at -v^;mU<lA2|Hj;%H!)ZoXQ}4R0ExFJafU
zNxWx#c!ibWy?M)UB at bM9s@x5(6}^_zN4I0JuG0!{q7Q<l%$;~u;RtEA6<NUl*5w0m
zU^UH;W at Qr*LrvZdvI^$ipa&tDVFc~(4<fbyIdAn--VK`vpI;*9 at +!-mKGLBp&GSVv
zXNWbKci=L1Z at 2-*NJ0OwZ$+mkbgShIutMDacVa6r-v05*I at CtH(H5#5F at qYQ<rTqc
z{<w3_^M(`x(!~!6<#4W53w<l&S)PSpci>6j0NNMJZ*SHVh}Qq4x*I@@K9qpL=SfV+
zHhcAoU_oUAiCivAOz%ADtnL&fAly>ff=dlmBCBWv(lH;lw>-OZ^P8FB9U0-*aKf<^
zhdhmny&?iq?k{%$o<XLExD02mu|<CdD7caOnic7v$=QKcis<W5+xP+y at TLB;D-S*%
z^MR at et0MfzjDWpOubkC1{V`yV3u0QadFPopTmdYOwt?Z<g$UwUV!`ZOobe8I1UCO6
z%RT=!FLEaKoMxk24&(f7jeSj_J{*A{j^}pwMjrt)YW_8L-~3SFTDW5o?v73LJ&~wB
z&jAK<nOa?Xz~yDvce%bWmfmY9D`8Df`8Ls~0GApks$kD9v(K4cO1g03{6$|lz*^cU
zR%Q(U1q(|6ICDZ=w}X3vTV~THu_ at KWQF)|y%i;!CMRu at yc<9L#atR}snh)eMzJV~R
z(k0Bk%ZG6GE<W27T_NBj0d`y>l*AE8i;HfS1|hgm2Z`CB!<<96Aj~(_nQ81De7smQ
zp%`7ihpQm>3il#hE*h?87W)-fJvd<{D2P?L?Rd-T+ik?b!c4BbZ!Q|*8%*y2X=Yf5
zIFuHfNC<cf?oz9CKw#C0ut^ZW4CN9mANBU%=4Fbx7{}6NG48%RCb<h~O14}=$|nMQ
z+FeAzsvN0uO-XX1)?|xMF!DgrPK0GuPKy at v<`)HhI9QGwT33LCEX?g7Q1*hkFqbJs
zKcbq^en47<MVAnZD|GL|in8X4)+1631x_-2)C%3G5WQEL2*{S?{$nV}J!&|<@bzzh
z()DQ0FR`3U;L#k^gXKVah-Lql%XEJ5D`X%M*jBgslU1UVg&L~B?dUm>LN4;e7V8QT
zK{Xc&zgSs7l+|ru9B|SI+6`bCQbZbS-Yd8e3FFWSN<!LRPO1W-PXK7^LFO)hUoFS6
zJz}0A^KFvU11fcUVrr6_V)mUsaG>Xt9A|pGr~?Jcdv;q71yQx{f+6v4wvBUBADUrP
zKK_GNThL<VC at ZbUJwwYoZwn3_2lO75sIMTaMM2S49T)!@RUgvvKE4s(E^#iZBQl~B
zZ{u6 at g3A@o`aVf`HKD`NM63bx=>B|BaCeKGXh=$eO-*eS at oJHV(&u1PcZi8NhO at Mc
ziR*OY4!)7#CvZdqWts#aoDeLGYam;dn6(5_WypnJ12O&9Z3$q51~w3=e0j7dfl#E|
zK#mW?Y&<@w#}I>rQ4#n6M&1NA8i#p6Mqt!AKEU(2FzSwm`CZsT4U=7_PGC0>5L=@_
zg<8mFC!nm*CcXj0zy>>{fjcx1Q%(p;19M^NrDq_n3+-bNby%Z8OkNjHCT%A3PyipP
zZakT#FnPC|3^s~c;wS*b^`JyPs00favs{RP7-5brz%4_ZOGt0C1NspmoD~~H7}lBK
zbpqClG at x6HI3Lhm$RI%6vEajE8;o#^5$@FCCHAVKUW9?lLfmYt-7vVi4Pn+qU6X=f
z-8AGGF~TqEFu5E;SZan_0Y2%0&;l3WCxGhe0vZUQs%pT4ec*$zd<f5lt<kU&12&{#
zwFYd5hIPhZO#`{0ZDB+xmN#|@kj5&l=DTTNBEhUFqUg>vEr{)o5kO8w0c^*BKx9!E
zq=?Aug{ZVM;8VHF5CQ4chy^){FbW(W-Za-Gc*EHoI11_B4FlW>p!?f%h_<90BnMTK
z(!zL12Ag4h$hL%AEW4$a59qy`H(Z5b5o~5>fK^3AcCVa)62zF+fHXMiEjmgq*!k=)
zIdM90O&bdu1YK$!{%{I-l^i|V6YzfinLXGJAF`k=n}o!wqCRo}lIs`;oK4PAw3i$0
z1Z>xcViggmuE-7!6@~O+`Kqw%1!KMgw6N~K$NTvR1x5<e?6|As=gPq(a7HOtglA`G
za14G7XHj7dbFDL$!cDscv7mFem?tZOwIKUy#2-*j41~QF<OAV-xSw}?u7t3KFh8Fc
zn||*dI1Qkn-Hb)*Y9FrXeNHIRxPcO8d$`RBO6x>m;FfI{C--X*0b!84#wGU#0w9NT
zN7eoqIod^#gY~`IPjVxgTyG*d-lkFHj(5pjpvYkZx4I!ljwTi4Izg_1<aP@=m}wEC
z$>3u#ici4VlKMWYD7IL*76SYj(L!o*<k8iDS+<-wB<Xyu+k<0B9~C2gkxP22kp2O2
zL46HgG3sTC`Z^}rk1~nWOEh&Bnkb5&6}X~!8~&JL9H5~614^IQ6Yz>rU#O^$00!zz
z;^t^ApovtEj8U~+s-=qRc4mzX?7%BVwO3Ky%_RF#CXs6A7^+v~ySx^;RKE at oc-`re
zgZ^?{fqdC7F at VA8X54<X5OI4TpDh>}V1#nv*ySy_PkKG{dYzz-(Y}q4yHb~L!R-+l
zJp&NRr45p5pj-}ED7RKf-(B>gD%OvvJy3 at KQ7j`Yc0`wxq?Qk(R;rv6-Ew{f5X!Nb
zG4d$QiCf%mRa~!-yjzAn)RGwXK!X4u5c8YZFyD(6u at +}pq$&@oB07-=H%~_Ka*Lp8
z#q~}2qbl%#SYDj2cti$Gdtfb)xmC9i>AV-kXu+fF at DeYz7U02w?TA7=G?3nc2L}<e
z2mS;9(+bi|!c+|mF>VixXfQ1+qA%(wttX;85cO_^SIp?}fCmELLxZ#$pe6RePGAfV
zunK%E`@vih^n>|)4G$FR9H at 3^Ay4YRI)s at 4FU0wQY~GWLsEoY7CUA96juWM|!b?Ob
z+QNfdKJM4B0MWU1z!DMA1Vh1mD&YY!-jG5G8AAO>1g~JgV%#3^^L1 at yZY|#7%1{Q|
zr~fG6a3`s7=g1 at 6#p31B2t3#T*K at f#n|F|JAYd}%?WZaR?3Z`_4C?}V!OA;O!aIEl
zoA7;<?~R3kCvL>E$xs<{Bi<W+_dTw)#E$K((o^44w|m2_z;`|I6x;Hz?Kan6IQ1!J
z!IR+{<IORg?e5MigZA#|_&r=C(d(5M33D}mzToTW4ZN7`5<d{V80TAK_~>p_oPfRC
z!T@)<C0D8)4FC4- at cvxyb)QBen_?$3N9N=9_3uXU1r>XDzzK~*C^R1bjmly=Hjjs^
zGKS2p<GuEt at HWiZCVnblPb?_k#;xN=q(VW^WWhl!A=w}SBa9fYrn59wF?uS`;bMRM
zIJMdSn_Ob+&#^$&hJX`W3Bc5w)pd8uH!*(*lH at v<KH%UTxE?D*?!3r5a52P&7FN$n
zED+I8rIWyi?t3rYiath=uo`bZ3=gWHCwePL`1fwZuKzb+ at aPbn0&?CBYR>N;oVhmB
z+s|`n72b`Zao7tFjmKViq5z^FnCn&2D`>8x*Y5>;@c7mu!VA3mlP7jHc*Ca<;Qx{v
z+(r%Buel#IU|$n3t|3M5f1l?qQQ9cGjl+2WdV?HS$wi+ at m;sMy6zMR6vV#zJ`-D{1
zY7{xRAt;-YQ93nBORS*2WE6H?^3o7PX-GyX(I|3|S_+bWZ}O6_QEFpUe92UHi*|7O
z=~mj4j54B8{4o?NWJ0CaX%soSExd@<nY^slC?zo}Ym%un0I+i^RLyOBO28MxFH6Q}
z2PTRfgOO4T6H(L>p|Ki%I at cSneS8${YAlFTk37+>ySUMd&l|k$ZhyEYIl2+op#x5P
ze&CFDe4gP`==DsxO$u|}*GE#gufK<*t489d5t3nYFMZ#GyRTUPAZ7HdB=^;dk-G+~
zC_?T+MebnktD3t>M@<~WH=!PiyYC?+<ep;H?B;{HuWIJ!cKJk#N5&{-xfD-Q6hD&t
zswR*mJ%|QLB;AthGCLn3VYUweI5oumDDLYc2XSA2GTx<ro7+%N0tD)774;#!VvgoQ
z=^>AfFe%Y}CGRwiiM-dv+U+El`ci4PA8aRyztfHVW=z;uxx&6rgnbY<7D`IqQ at XLr
zbiwiRK>MiQ>jZU-7H)#rmD+p<A!&&b1pZz(R?X2<sOS5!HhBdhDaWhIvB03~T<%tF
z(W`m(&|;hZE2P^ZY4KHrzA+8dlH*osK0->l5I~hWk at s)7vsm>;q5qIO`^`ZV^Url>
zX+l4qJBxMt&=+=oVgt;tjpf#7jqg3g{Mh*S<Nl^U8~0;zf)oNW{Mc`D6oP|$xAtRy
zP{KyUP at Te$4O}}rzZS{SN8h2xfcX(brOxxo5QA#w0untAqj=n*zyiJU*GRRP>096?
z;G-Yo24!0>dLH~viB{)Fe+<ehsg{_}!&y;L$#{v1jvthhiqRL~Y#|j<cK_&CR1{>_
zF*-38r5_ai4m>MWN at uhz7OsuH<d#@n5?zU~>Awu`L{8{%wLj5+sZH&__ at j|@1bm4E
zN>UT>ML&EyH3tKI!ieES4X{=z$;bjk^!{|LG$gWuaV?cE))4(f8UixqO`tKrwn|Cn
zQ9oNTk4|ySEp$)xVRF=h)I>^RJ5n(u)8OdmNC~cFjF at g9nf)hHqQa!+iH=G1a5~yC
zGRW#u+A&7ZyIn!M-|uoAR$14G)+Wfw{VD=#H#COQNLot7jjl`A_-l}wSi5zAq^=!t
zqxql|h+KmML-e7fYSG-c+}=VVNAKZhWl{;?AdNCc0K|<prlUkw(y%>-lCWKfyIrb7
zQ at Nw}z>cJ3v2P4v;)^`S5GHQ45tM{*b!YU0q)Cd~^3^FjMl!vt8=^l`=4<?5b#3&b
zbj17#6|YtnV+=8W^r&<Me2D~<#TY}t7ya6w-KynBPes at i*um#tV~Ba8Z)2rEHGr7k
zW6&NZJy%o*GXcp|l?iyxZ2(zZk6y%<{h0lD3}NZV1ukKl?-=*H+344#5$(VZq$WsL
zhLhClL)_?ex5d>!^NcHUHP9?dl6p)^Lu1Mr0VH)f#EmWoB at C83(W~s46<Dm;huJrd
znJ3M at uY$#qKCMn|m|wB_-|$C~31n?N%&|2oZmG+4a&wH|-o<G(xsM)MnXj%A+WQZT
zU~a0ut;>%~Sy;u(r{AW(W-OE8*mSpNt~-&%>W<JlOz2=01S5u!k{11W2^fi^Vm=)w
zahSWHBAD_Y?qc9T$G4EjJ(?4FjJhw0#tG?iIW at sLBH+V@NScqmq6GQ05<c%LB-G((
z995Nt4W4^VIxnB{hB)|_L(-hqM_K6B)j~~3o0a3YZL-z(coqpp9L at de3dLxk%@7RT
z#u9evrODup(~XA`@+THh>e4$14)(}jjT4K9wCLUtNMieYWux>Xq4s>VIvR>GAx>99
z$*dcwC%dd41P6MSzItw2V)c4Xj<YbPm5t*6W@|(Xu=02i-V#O6FG@(kN!%o2xtb9_
zqh)*qtmkmIMlRZ}-)NGF{S;q-!}l{>WW04(-4$cNPZKdU at skz1j-y?WZ)v=&zH+|n
zdAA$81rkHPQk%2$6kL>IT^7bW#<8&?&C13RLaME>tD#4G%(4bCfW#>zN`vIK;q-3|
zAMp)F{O3M&*q9d^!R<Nr;5ZWr-SNm66$j^RVf>!fmE5MK@`x<K#3HLfDi#?uBYpA6
zRYkoT2cNf4Aze4Lpt}o^0O!ndC+4-WI(r8m2fY~6*hr8CW%KYJ&q$15GOGw7!o^~V
zxO%c{O>%j=ZioqnQ~Ef|j}#4>k-m6jY-OTTpyIJf5ZXRnZKH<)QL%^84oY(uKOu!t
z=#%rXRI)lFvoFiDJ|pK(nVuUm8zmw4cqA;rpZX4>=fIuEW_)Tg;@`>mR>s=wj5S#~
ztFtp+&dRwfI|IsdHOK+ygp9)Da^__Pa&E}*T$%IJ49|TT$nq at zbCCqEG^6O93 at 5XH
zLdHEgIjbjRJU9**KN_DidPv60xjAnglJTQMa&{aNBP at AN%b0v(&Mz}PH97dG`!zW~
z$?)7ux+DDW+RU6sGPBlZ=A4)HR%SwBV1L{V89941S&{5xkcRiC2bpPKX3l7?=lPtR
z{zE)F#^tO&#PedV4`Cu6rx0f~Hh4V0%9y+9aL<#OIgcOi`Np`Mdk^=#G%j=SaL<S1
za&A7{^Xm8`0l9I)<TZzT-Z=E0j1hpmkxanChvy&yYB{S|90KE`8E at wF9VR7wMuEI1
zU{(9h%;Rp$_B at +aDp=Wv>ZDKO{b9zj_^9!ZvlPfpI&%L0%pK!BuV?2xKi>0TP7cDO
zIU^a{#|!CFBH!7Xamm1hoOKJbzEzC)Ppq8l>$3J(IXBj2tq<fpRhRXrK+X$wSr49@
z6JC(@$8&SGFUb1A+?+=iWW7E&=lKO$KMdyFxFBn1Fz2=fS!-%??p}~_!+9X{L|x9S
zb)Nlo2*w)}HG4SY=FGk0KB)BEept>=D?RV!ZO#69rRUyH=UiXq`KB)i2 at e<Lyk6z`
zBYEkY%;4zMoNrWl{(4%@Q<a`aX5>6w<@s<%&P!FE;h8xvRC)%>a$c+SJXe<UcBSX8
z@|-PIp4ZEBzFp;6cY4l`syrW at p0lCKv-u3tdE<<nZPlKioSE}bwdZSR<@~tXv*WCs
z?^S#5J3Hr=YR}te=X|Z&^YA&ubo at E{t31E==j^HSJXw+RZ<U^(%*wf=Qkv*GHj#d0
zI8hf9Ch2d4E-1>y*ZQpRN}mUpT(d*CD>=%~&f+G(N?h10rVTc{j-#yb<Av%oS}_x2
ze!#;mNxh}KkLW+D?yUzC<xI-=1jX at m9@_zm*8j`bpF)S at 7c25FvclUk#8c$H{Y9oT
z4gpY}yf(`(!8zaQqeyU`w?b}qBLbK9V|~UJ!y!Ini+ywMyUPco#JQC%_qcb<MES0i
zY@;26o#Uc1`m- at k<M#~+Hd$8ulG*!Z{|?t;aEk!^;^4C4_h2r#cAwN>j^*zV7IFTd
zzc28=_wN2__wGVRisG3q>Ygu1-JaCHK%~E at 4^4=sUD+vnp#gXvgv54Wd4!|(pQoRg
zDjo<OLG3FM?VG$`cati$Yf8PVX>424(Y363v9C4M+|}({-q_aD?CWgo?gl8-;XCD&
zMa}I^Ez26amewz8ZLbftE^9vB*WhWG;;ZiMY;FnxEfvmLXSTM7nlEkcI=goYit&8$
zBhdAAw{-NhE%voEE^qcV`nr3TENSgUIhRg3+1D_wq`ScfR(;b-PU&uL>S$lwO~P^h
zHSi<XfLwV#LOqtWbu at -_Ej*s4#`gA(kgut$8Q;_Ob%z$8e)@7q0erPJcA>hyP)lRG
zZ&_n+eRu1X&Bc>dDIQO4bJr4IQ%4Vk0x4hK+|}&sYW_-3b2kOJs0S3K>ZH90beluI
zp3W(rQ%>;(=g%qjOg`P`Ij^U^y|w*PpGTzNncz7O1+}*O at bgjgntMa4{eX9}&n=U0
zu_x}YJDpz_bS}l|l+OmrU-tHI#;A?+5=r+xnJGTc|KIzb5Qcp64kIajc6Qu+%TeL@
zv50 at o{a)JrRQEk!_73pACq9HIquI0o at 8#lyCzD at cKj$w|#m2+feNN=bN1k0zsryJS
z;#Q at -r=MP5QxBbPYwKvLZ*A{x?vjg;T7TsC!LUeV*}vxHbKJeaFIZf~OAR4jD>Z)h
zqXic>`5j_7MrBN0$o=3F{`}TM_Z=Pl`ZEu0o`fIb%C@}sZ?PWwPEUC9o-fUWOh>%^
zUn{2G$v02=O-%beYx1w~vr^vvCy%3roP-G(zWs<xB;M<~KLH32ar>Dk_9Z2_U4Hxw
zQ7(QN#$#n{4cd!w>V_Y&w9mjcHx40hJHg!@-T<1iJNzs_LAxmzAG`GFV*xxu?Ea+8
zGM`XU+2_ZyU*=}NNM%QkO23;OXD(JiGTBAo!*AIu{052tJl^Ht%PxsO00a(@tFpl*
z(E<{klpO2Q02&PjjbFxS9Olv>S<pbXa36G3lhFq%9u~C)vHYNOACoOx6xty9(-_Gj
zm*nF@^816p4 at TCn!ONw(mLwt%uj9*pm?@wuFA7|V>W{~|_1ub(NcsQ*xcaJchlh~O
zCAb}75FFtPY~ll{_c0m7`7+o%63nRs3zxW5PXY*36^ZZ;;JZ|JA`Gg#`Lg9x0H8|*
zgWz9d1o!zgn}?}-GdDhi!Ce9&h-0r0a+U*%#dtY#a5(75fnSg(9?0|MEm%)PJDg8g
zTqGm0vijVzUQ^8bh!|P#$4km`^zq<_WoOip!@ekk>2|n`$j*I?7{s~mq9pSPm-q+*
zkc<_l+JGSV?-dH_K!hz$p&eF9;TB1{k1tW+IQOr{3K;yXmejkdfKH*heiSdw{aOSe
zuSW;f`v<q-Jsc(iA3Mx+T)o(i7j8J-w+?TdDNtvAhr{%G`3#1M;OL{lk1A()eJ)b%
zusSZRjtAT8^8v#*Mn-^cIqHz`aJW#DLBfkFVFzB`f``c!fD+p%CxpEP-zSSp?C?%O
zxkqtS5FR2bT&Ox~12V~Xx)RP)IOGQjaeqGXe6XAVwroeUs48(2d80!4)cesA5^?0T
zF9l&q6qb;`_~nN_5f3c;@j?ZNjWg0=K`UQSRP61)Zyc2Z$d>)9VC1s=U}O<K7jaoF
z=P8j3 at Vh6t6PFb%-|6i?j0f?#Cs7IL91LXm-J-|^B?x1tfRC+L=CZ2WD)WJLfe*<(
z`Fz`nk`4P9_{k#R;#5W@<~JAAB3ul^<3q+`m9c~w{Yb|lLzH)ZKFga!0Fi6)#;oar
zPK06c=EBG=^&_*TGS at P518^GnVPu at m#I;ZdSAl^|D06k<-GX-uXW99I$gQi9)rvUs
z8m??1A$+^2VOwP<vfbLps3TU9BypA#BnuBG$*<}(=0r>gIN?DR<4fl8C}ADL5l3Fb
zf&c&;qz|uc;t8;*H3T~H?HbFTh at bL9NmDRVfwoQ}1;m7q6JD!gd|?DFLO~-4!VvI<
z4<0dr4+>g?*Ead2H47Rd&=C_FEZ^<zKQdp)YA|!75Fz4(w=)*Gakm08W~mi{puK*G
zv0*_$2n8??^4_=uFI?u77slKE5o!HfHCWNQl`kOe#0xyhE3&Z|J;u2ypZx}13`tOP
z$HVAwm?(U<$p=}GX=5Q19EYz8`&P*nxrrojd;UhrRsO6O-wY6 at G%}OHB43vCun#ZC
zDHGUZj07T&)iTMxN$}NYqg1KPf~=4EneK?Wt*~!oUNo*`Du3GBzbc<d8#NNai18J4
z!WLf6`Ud=8V}F&An#fms at j?d|{9(aRr7;W9TA1#LnXRxlGOra`FPZpb8Q;dG3$Ub-
z2u6&rpyPBB*Iv&wXZ>3IUt`}$7;NVE*WtZQzM4Y`-!zCQ-gn-HH!O%UT*F~v^FhJP
z at 7=I|J6;g(t;|p{xRFt3J*_E#-(hZ`D&x9-L_vSZq96iBA+;Cr;^%w6I;6mi1H41U
z`0{RCzZ0(|pu{&4#p?0O at Qy=J+{2?x#TN^=d5;Lwd{)?x5d<O8N|H7+uo|>*kO#qN
zS3$C`!SrQ44Jb5<czmczghXT%f*`cTl+glFF_{o02_ZM_C~~_a1X~*r6ui-=-j9ii
zB`3-htIrXY|Ai}kJjbj*Mg)JfFgA6ku|Ntzj<^H-xz(e at p8<X`D;S?G at T9Y&K2KCW
zD$@z+O>qSAeE0z=SZL{%MrLujEPjHFiR(~*GqI0x`4AaXS0|=omV%`GRNo-dpRh{&
z{!pNNpWr5Zdk9~<!m)pzzvduv?Qku{slN_$?Guazu6<kqB^Kwd{9+7N1DE0Z_LLUZ
zNf+SOO5{6&%PGJN91pc3wb))>jEO^}1)lq)qF|&~#xa;kD^iD_-J}(_KOv*bMkthJ
zXYsxZaKVjggfod*V%c-?*+2f^A-)V5z$_sb!jNyW<D-N&zG2T#Av}T0PRQv~S7zix
zEK*J_a!aOSW+DkoKC4bVKfmjaYa4c*Up}YsUCP47??xgG`S8&cdoDgwk2C*)ND%id
zBlva<e*G514}QKA-w~|A)X7hVESI5L5<}a7p|=#V2IfaLELkB?2#PI%h`JSOMQ)O2
zRU}d8RkD9X_K>T;sE-VTdW%cF6V&Bqz7%i<4lL`ji`a^kQWTVw4_h`!0w_$W)=l!V
zpO)d1g{@_>z9>QpYZx~!iB#Z5G^w&wrdb at Lev5PNdLUySMN=s+O3g)`Mu1v_JvP3<
z1WN&dA-q`VcD_;Q8j0hcGv6qbXna^GiQ=ON at H&QbrL-Z$S(+j#{V0HYG&=xB2_#vA
zGi<vVjW~SO*!L>R$g~r2mOwN<EP;fWbq8L-@;&&y8BstPDM?vK**B?|40siwlrNos
zJ#7H1QiwNy<N98?TwH^TKqRN;3xS9_<w{~c;)4M)!iNlyG8kA-8s36?Ja}2<o4x%<
zzySnb1hWV+H at 2f*H<3^U2$m5$BD0DB4hs1h)zgZbm==iKTvW?9C|G<$-a-*fkOm(z
zL9!_J1#kZaIV2%NDJe2DqUz<4L<LAS;2l(-dkbJIvV~DwrW&@xG^$!J-=NURH?B63
zH`bjr_^?=#MX~sWW$cfUb5bHjW=2$K;JP!xEO#y5l=B0!qs<WZlLd7>i&=uN{X at qQ
zg0kU%oLqyNApnPa5HEhK9(sll8DS1SgAP$hUPeu@#bQB%Q3`GZZ#e0yAcrwRUlgdr
z($Gwd5xN6!dh#rUT7?(xP2uVs0!wU%FQRdnvj(2 at _WQC}G_G+n9V6)G3i*&Sl5H9J
zD8YQhKvMGP5l;<^mi-lc(iG|k1lEWce5f`Ap%q9s010wb=9{#L8XGB*-47UL3H{We
zyW~0s8^VwLN^CN2!Ycxbx8NpXdJFC>!7Dy-`2e4R<!H(dT8oVFVFCsLQ1vNdn5<9%
zQHo6zrtSdm93drDdYn6aGIdB&KUAqBh{VV<bqxVBNJ{Q?$?1JMJzwQtotS<VFLUA4
zg}P`7`>wwb$z30Rp!|S>$464RqA3G*9<6$OFb&{PhQ-m8Kak2K_tS2P1E at R3y5(5c
zW~(dK<%^3-yaTWCoFy`s at dU}y98 at s?;jA})<PqQQ#RzIm-X=DL9|`ai(^5zo+btVk
zD!vfI=`1)47%^h|liq;=e2ohmm%Z*fA%5E4+O!U53h=CC!&xXqkwwHGy#@z_x&Ic3
zY!o#b{;I1raZhd|6$}2 at _o)zYyQp7?-b2OEei at vuA2PLK_^TwtCon7yp#)>D+Wn$T
zu8S63h%=V at J4+FV8RP2>hMx#kCkJ at 3WWxoF9>;Hh>F*w+g<|qof_6Wy=z2He@&w8s
z_YN$<0n+G7^FE^$xh5lg0N+Pm50mWQJDlwu2xAh+lXmquC{yL#a7guFE)sB2avlIS
zKpTVQ`<GPP!Lt3)GXT=x|N2S>@1ur)A#`}<@+?fl=ti%>k!jG$tQs7TyO^MJBLMbZ
z(5afbe at T^HHFJOTDu6Vdb2Gw!0i8;W`+GNo%mpL^Yw{ZWFz<#k|KQnsH-pHp5VfE5
zZoDcN*EX-p+aKM+-yvG9CnAB!6{=dR;G?N(y_>J9wGcNjz)oJQT7Cdjwa(Vn(nO-C
zAjSQC#7IR3KDg`+{}rCWTCjBk$>Bn28Jg0&p~vGNoXX3jlM%ItaGR80Rt{zEj}|hW
z-%IB&O<AgLyvQeYD<u)s?RFe;^=_#43}#B*u1A!0t2zusswUt{YNZwJ0TB1Ou>umK
z^B8y$I_GN{?Z8oZ3=A<s|ADyuB#g8{DL48Mpzi)3=oQE5VSE&NyEI?h6}{{t&DaAm
zdJ|)u6-U2k(sSh$Mja`quW30=RcDuDg5tdydx-aLT}kBwg8In>KgQC{P$yyOM9tDG
z5Cf_>PII(fM8z8Bxf}_B=msQE?k+!EDI!1L(ER)y$B(@mX6j~J$79Xdc+8i!lbgV3
zyE};U**<n<%zu37r&eUXYQi%yrVC%iny(XZ$HKeebXPsSh>Chn09#N`oj<x?*z$u=
zZAO^iB|nt9!0(bj#T&}cdHcJdFsR at R|6u9fEzqb%)Trkus3SlsRIoo<D=O7bw!oLH
z at WkXb(QU$uNe-&@>K~Q4#gC%8>h**R5*=gz5gijk(fg4o`pOxPJ55p+#I+|0v!(K_
z-hnwVrqLI1Uy1!s78L?8{$dV_r2o+z?8Z!i=HN0&0R1l`W)99{6N)(~)#gAGiJl|E
z>QnWUr5h{KrRXk(Z=r5>U!&=sNG;ruKUkoQ3~z<ld+~|$64Y-&DH=csL=Witxq2}T
z3{o$SB^mVRV{oosq%Yk$4>9URZh~Hn8g at Y~jK$=Cv#S^Du~b6&KMC1bPIggT{OdF%
zN&0J1&FGynELBm_w7oe)^H-qxo3E~gxr*yYRCS~A)D9@^6t+YBzMTAgmbN?JfzU*0
z`SA=g*MzIb97*w$x~_5rT~H!>l`YX3NLd}@D+?8++|DH_$SoVi#{1J=-d%#+3KQhE
z15md=x%Hc?>-P?98R?uvoLIm7w9uJelt3m|$SC~}I)?=8U)0#S74~1|ISURMoo_G5
z9Sufq>Z6Ymer>d7@<>(2aLwec_?$imy6Xnnr1azfs4g9<wl`OVhjQmS*@w=xvnN!P
zk9NI9k@%wZK!iSL2JGj8_V@~W_dF+<IXce{jt6~bq0s-`XmIi~8T$j1KM21*D&J%H
zDRcwj(gPLtXm~hxzH?0GeEXP;^7p&mj^1MG&FKLw&D&?&&jg*S)A50Zs<TJ2K35`S
zcYy4+jCTW*-^JG)I2>O07=({->0bN&@V49<XHt2MJ*lkx>8^L8cOwbTfRYD)t*ge~
zVcD7XcATWh9>uO^=4c>td6@;StjT*ao()VMajE_uzvD-$L-rQP0RA0(urrS+-wvuz
zB1!B3Kn3`j1m~)J(7LJsv~C at x;epQv at miCg&3M|H{ES=u+uu~xf3m{f9^RZg&zU%W
zo;@+M{9RQ4YNQ37yny{)tiAG7d(}j4P1|1Ir9z^;3J>01*oKoO$Y?LcVd(!=n6Bd^
z^%Mv+l3&9Rfo$Y;>6lEc$-i-B^1}p~1fA?p1?_AllT{*<K4gUZi;t<k?}}MIv_Ua%
zd@&7GAAXcEF6jiSIY^4NAJ0d_xgE>z<-JMF2B2Tmj62^jDJQgHAClbuM&CUJ*^Qgh
zFgzi>7~T=GO5ZGJW&mft?5X%nh;!9Us>oEFF2n(8{(Qyc4>CpqlYfOTj?~yM(tWz_
zw=lozH!EHUZ-E|9#9gn6Gx?hp(Je^A_+JfId#Br6{NW3wzYAm4H}v-s{H$MGstI+U
zg(T76vH*TyNB6Tb)z2`!PuI_Q-G~%Z^s`1Jfj`vugE948Pi+d?zj2uyp+d<|ba<~@
z;8wZ99zmUTml%gSza1@;(WnY}9ek|!shFL~P<Ey!a$`C>a}3)jjh*qBdfJ1oiq^rb
z?liY`)>BJ)-dmdlliRNygxhxEwhx)nM(<h9443k>7-gzc5Jx*wP~L*EO`1N19RAH6
z_X5t08hq-;F123($1_N`6#De=DCjDc`b)-Bfyvupdgwk~S4DPT8!dg(ej4T`rccj8
zpC%(|b-<ZfWB<kFGp?Udr<i^|>$cQ;G+y$9DoQ!COVRa}a=wTp^*z-d)II7dKun}7
z3R4k0Iz2&;5QH76#xkDLci8K=zJuOad%f>9Fqqn2{|-r_ at 2UG^nZcgwkN+wC at e$gk
z)K&g2k}NFtc(3~@?+=^DUo7vOEjZ&cWJR)9Tbp-eyA$l_9l%r*kjj$iH+~z7<VR=6
zBC-z@{mPD5VrTT7SYl;u^xLsWm<uh@*I#upWnUtCMLfP6S`q#5m00=+<9Eg5>lmLA
zkFRF@*Pzey&kgvw4gIt3dZ|~|A+RisD09l?MRlQ=OZ*M+;n$GBA5s$FYLY>KtfwGA
ztmq`vKywgZl?V at kwn2b(NkM>E(VxXRFbK3Ha?qQa17bzrgG|P7fIV<7#E1YY)g|79
z+OP0OGha at X4+4wj>m1ATiiT)js(j%-)Fqx(7WK#Gmcu_$UrGWy5((@^Gz9 at -MSl|~
z5WA0JhYJ%$##Or%1c(*QjLSSu0N1ACRmV_<uL~rK%okntk|8p6f62n{8OO8bkIi;Q
z^i#-H<z!-BWRI_Ms;2I%!aB*m=mPXfSPc6~JJYE;Y#%0WxG{^xfrZd0r^jOt*;8Re
zaFaH3U-a95Ac;KtK((D)<pj^($0eJ6uAB4)*bAo&gwA%Z%H4-4>b__nh7HSsv;Cwq
zj`Z_1ec9TNdeC7l`+aAIDrCGW<c}C;oqT&Qe<-R1KNM98e$+(k7T{Mo8Ey?qRSn#!
z-D3Q at jWaWWR4MpP0^JXgnwBTAgz3l+*{u~mZVzjANTUMWLp~Ko1-4TI?xx+)LP8EL
zr8`i83OLO=%S2bE#nE4&!7H?|K`bWi+~^fl1(_8lv8ATaZNk|M`#HN5<s1P)73_=N
zNkN^i<UK*;?Jf!IV%sH(;#gFp$~nYsx^mTY(O<&xvNpw!A>sqov$sUMv38cY9NKfG
zW&GR(T}pKrKW6UeWU9qbgxuc)*4GQ;%IzwvzH2AHa*dx?M#Zrri?w4-!CZ(9RS8gT
zh1gH*y2TCPBUv%>?+Z$DF}rScZ?NsU*Q61hbHKeM`NXa*ir&@~CHGwK=GSFLrx_V<
zcY!CyfzjiP at Wn>>js39_qkk~M>)o*X(^RE<O*vz)0E;hlQy$OV$^f5v<+1bVr85?^
z;K=G?9*l18n$_6dT&-~ang4&@D6ou2+Pm5t+e)X_&k4?-RS~SOpI2X6T5j at D)x4y!
zr!C~N^7#u>5;$#^d#YY>UplR-V_pE%8$+!f?cLSOtIuz1t*-Z!OgXLlpw*dI7n%_g
zF_f0p*M)E>y}or>XIo%iU42=7pnZAA(&nx}UFft>PiI?m;M}@U*^-|2CKeKyy}Y%$
z8vpnlw2Xgd;)0fD9B|h+3Ve%O7q@>d<m>8bKiSugGxV1?cH<nouerCgt+lB&)OLlh
zdueNDXY=AIzS_2Cw6L!UN0fb^s{{0c)=<mBg$o;a2L6hUo-Ttds5EwVc6D at iwL%T~
ztd#%p#>gX&`~Kz&C+<9SO2OF*TI9duc0NBlXNf#}&r$H*`aQ|7;`o0~W##F<;`0~b
zM1PO3blQ|@Q%X*m(Ie5R*G!#0rDXb)(#bjj=-K$o#~(F%&b;$I*nk)!3 at b?T;FOy@
z8CRa?$>`0`IC|pv+|^)`d5+O(%*)4(XIxnu6zuVL5`46qhv`Lx;F*d)mg5QL<%csH
z^Ku!)Uln0^R-p_ at pPiR~W9F>9!W*(?<@qAn)p^CMa;ox5t{+#CR~8;$mDiAUO2&k|
zvWmQtio9Z=0CiSg{;a&*ibH*%b2EwI>A|1S%WDXazkb}RoJjT!SvO`%J$^439?x0&
zU5Gd5A$%6`KP%6-asnx;I!@A!bP>~p|IBJ6S0h<ukgL<#I8vtIv`ZZ+&jmXDJcK=&
zHF=b!g}*ipzl6d^CCqxyV!csGqu%dirm6SI$i7L_`XR!exq11kGAr^5ug|K;^M$iB
zzrHoEuwome^dB*~KcexcLji>6r1C}X@$!RtwOK*R9ZiuW_t_%%iJ-%02mX}YYZK(o
zw&q?LAKrL9c$rmf>p5uaFR;#I%bY7^_Gx;{Q5RKaVp~r~S$Auk>s%bv)09nBo<D0b
zD&~W at DzqL^Z(r8=PDEJI_J^~t&ss$=(~EV7$)p^ssneNnLnmqut;ow|xt31<0m2^W
z^s3CNczZy(bYXSC*Flem`TBIeCrDTF#oICKZZN8`zhGo!zD+vcw-7eU3rPF-#IljU
zSb0 at IeO%|e3zd|5R!^MZ3FeQ>T<)>FS<4&7<>zHC at 6A6fb9ra}#LVR_75Q12%NJ(N
z&71(dxiAjap`H at ZnJAe(o*4*BP-P~v5R=S`3<*j<Y}0u at k34)xr%%Hsk*}osLl2gl
zEp;wBU at g!Fb)Ji{<sw1k8`GCe8?q)N%Nn0jv1YSR`|$U&rg=ZY63knZVJdVn;3sQC
z$X#6O!1e5N;VhJtwTvxQm6s1~s5+GWeWAv^9$`L&wQ1Oq0#UF&4Z~ioJgi at fhONS$
zS-gI;V>U9$R-BtRl9jb8JEgIR)$b8all4&b8_6>3$NsuQ;}oHO at p4nyX6dh0uo3U1
zwh_uUmw<mhth*|6tc_Tpah`VjYpS*k&@SpS{aJUg%yi?y-DAr1o7EIM{3ngGl}x27
zPjp9@*O at hoq6H|)4h9aT%>3B);Bzc>0<>=6SQg2u&hxFxMuzKY)5GJkeg~e5VVq;5
zSK!buB?6G0^cHJ+Z=pZL+aRg!<NVD*8yuHf9 at SzqAJFtjJ5?J{-(J)>4d|HhGUM$Y
z*EcPbbs1T^K9QyoK#w#}=75jqx#Rv8O&RCU&0Ck7b?&6}G<~4er)e&Abp at Hs#^ty^
zqH(C_7}xXbWdvj-^+U6p?Rob=s?;nG4x^-avOFwl?33kjdv;=4mglHMfR1IwJgUUx
zEYGJC0f>>4OoJc#PwtcD`K%j^y*m)fH0aPj;`22ANQXWiAJ-?UM?AxGdaP#bv+k4S
z at wvg+`@6s=oe at n(d?lp5Ds=oYJZT3V%kn at OlAdGGZ%D`W6~t!(&V^~<w`urly!nVP
zg?AABh4o!7P><(_`hBawKk3=6Z5#a`K7CMh;(tc-zeAuNPdo60AFW69UHCM>W)OeB
z#-|U$=K}N{;@4tZmk<38K6?cIX-|mb8lDr?Oa9M_dC3M4!K?(Vcv_anl%ffDN76X#
z8{nJ#?7#tIJ{;%y at H5Kf{|?O$$8A1O3jC9vK0N at r6#WwvKEJ5ShvOojYc!nl<KuF+
zQN!12xT`;-8ontB&b(P3-lR@^&cJ}20WEa%>t^tD15W<8YdW-N?vv#yb%U|@Arlq;
zB;9_r8SazindSy#?||UP;cmV90MGE8=~<~UH93i8p}!<QcME<T?pli9X*w=`9D{N=
z(*?)gpMgHHT)&2JuHimeF{lfHev1AD;s70L)^JyzF2ZFR?sEb9-J#(nN$`+{`;*{T
zYItoD9AB8h6Yw-7!LJwiDM?Vw2Q}PnZx`Vk0zcW);sW&hHVq$2f`41XA-sf#KNN>i
zDFMdFk2Jh2DP^6&Pw}AH5+3!Fs;8ibB|eX6{G$`Wo-G=lY|*!C_z6k)PYe9qB&f&p
zyoM*Y<4YRu>Y1ByhlcxHfPTL&@KZdWOM>(KzsGZm%t_3oJ(^B(yNqhM+fUp)`vo5G
zbh-fj&K7%wc1&uQ2^wCK1kV?Ez|)sR=Lmr(YbWMt0 at udf$kQrtZ8Qw{*930%W|hd_
zzVUdpgJ|IYUf?k5NzXokCriiUDaWy`<hEkgF9LpCX53G3Ian$1xSzoF6F&a|__3LD
zRRsULCG8~KGb;vn+hIBiO;zr%fS(E;1n{`bvE|;LhR%1=!2g^Eeh5x9B5BOSUuH at L
z|9l$w+%)hD)4&%2eq5$6R_-DldO+aE#o(@8%{V+YKc7tlZ%PBdEDijsH1Mybf!_i6
zahXLiK4skjv4_*ZUlw at W%lLuLc^Jm^<1)v>&lb3=HTbBO?tho2fv*<$=VScHx&vZs
z)4+!SPu0HjC#8lj0{pv~vt#sKJ-;gr{>d=Fspwavf!~=1em~&f&73o)+&9wT|1}N#
z_#;yDb50s~81Tb0Kj~QqIq{M854?X5_;)icf$=}ravlCD!mDC%S3dIuUOfgr2zV;_
zypRUIBMtoBH1N?h at LUW;smeVZaMpJO_2a{}8$NT>;4e=DzcCH`zBKUn(!eLe1e2c<
zpRnPPH5~+(0G^8fc8%}XrsH~*&GSqe{P#6JKfk~SQF%^-sb#slHC#8pr$fW at k5_nH
z`{DC_z*F(_LK^r)I3T3IX0po9wH!VR;m8zZ7RJU8SAQ&xKXQ`7<2nqV>j5Xe`?&b)
zT>7V|6j?(- at O8jb@i`TXr^jVZamlE462v;v!0!c|{C7 at OS-1|u=PWo-spv0D1HU^B
z{N*(8eQDsupGjTr!Zh&uH1MkdPgSoxOx=&mELD}n|6GIN^9{g>-!MbPxsJl;mw=~|
z!@FtVSNT%ouLb<r%$X!953<Yi3m at TSIu_6SHsGnsopfw!_*sA-8(Upa`yV7~3;gUD
zeOJSNoraDlwrN+7-8$^IPHAfL)TiFu{M);ur6t(*RJ*3#)#uF}vn%<pqdcXlqir$C
z*M&-F*3Z^^q4oG^*WxzplyXlrb)`Pyj%{^m3BIJXtg*cj9|NmCuP#(xU(tR={o=+@
zBkDN=TePKR^))KFzN1rb_=2GYfq$snzh7ciCDqGW{ufhjRR8U^to{dzo+?HEods8w
zs@%|?`tugmhq{`ZvF#n2Szq7O+gn;%I(1QFcWYC9cc=@WO$#(Z@}*5Jja@)&Yz=h>
znyTv>@n3ayU1)k|V{2DnZry411}ifw)z{jHfJUurZo_xpO1ndWx{7+{X>0E84j>E3
z5LAtJtw(#}7(y*_OmlgvZ|_*#EErQ-ySo~vlu%w!`O at i&)lq@^#ULF5 at A0Dz@skGA
zR4>sQQ(fKE2I^Dm4O0KNRDUL_-_+50MIgASq<UW692|_OuaNJFQ2>y08mZI;>zNX3
zLy=cK+OGM$1ttH#tEge0ViNg3s?}qfb!tiddCfiD&Gj8!_3C?Z|F5_2zof?h*EMuw
z9Y^9h|2OuyB-Uc0OJy(<2dq-~83FBSRM*a(S65PBIx}|mD$w2?YHV+6u5N3sm82wV
zE5NDK`0Y+T7<AX*6jD!D^RnjlP&Jb4OHZrq>R8eW-@!G}A8k1NKfqW_Y_PWf64$33
zBS5PhITN2Q?)l7bO(&GU=~cy;PSw`Qxy#Yo7c_P)JHNAf`NzswIs-XtnwNESUEwxk
z+s7kN1_H^NaBva{iW)3EZK*yvSkv0R03X>+>sBRKx^gO{oldboiU!B~!+Fh}9bGtt
zSXvI1pWV2uwe1R2OF_G<Kb}BNtLm8F-i*A>p;jI at jJ1e+a<aQ;QGK93%@kt#GHHyM
zBb}%}!P2rMY1M_gD6j>oou~v+r#Y^P%ylU}u#cMgA9LTQ1S at BF@ZU`SSH}O!`Cn;?
z{9h{nPnG`#tyJ(z1+i2xrz*_pf^!=GpDMYgO0KEX1R|+ZRjTBjCb^~w<}|^aCYaL{
zrcj<H_|pV`x};7Q%<00(^wZcj|CCdxRi`CS2TG^KZ1udxWzAy|(mBdA&TH<*DcrFc
z4D0V|`!wkISj5xhFs%zm{nUqYO$AFsOC|(UF(J^I>q1jYTRXbNrLAvkUDVasbp`BX
zYlzdXxa6izhxt at Tc`+mC?5=NbUf$fr*|s~)`6nFot>TQU>Vhd<%}b`#*I(M(TaPJd
zcL&Ziw}!5$U(UG+CW8Nz))WI4qr{mn4kt_bX088`Q_Fe+*nau41VNUb20>zA?+R&g
z$^@>by%nF^uI~(W at ocnahbhU^u)0z-UG41U%M&Xw{j!c$)e at M~!$#s`=%^2xkVQ2u
zt#4{sTEC>RwGFJG!B4Aa*&Uao(HGadC$8(8;4dS``R$jtwl9Vk-QBaS8TgCaYL_Qf
z;U755Jp;A>Co7FwA%I$xmhr>uV$bWBH+Ho)E^2FzPs2a%%$xp#`jC3{dCQi0VDg(f
zuYf?CdK>E(HD8La%{MiMnp!lZt63zfW6cntPBjg0vcVX$z>tif*AP;97m3cGYf;8f
z{97hyObKbshTApbtfWI6Ls8qRF|290#-AIf9OpSc_`A+9&0)+TE>+79bV$1B at 4|gf
z6pI3WY#+H(8 at gpZq2}Itd~|#%`oWwpnoSw!v20FrXkJfSTd?C&mq}cZC~F4 at SubVh
zPf at k<Ks%I6IqG$xY0DZr|E_s7j74lED7NY|Q?2^M7LI1t*OkF)(CwXF?@6p&PrI(3
z!K7-K(rNBJhU%`a4y+c!jr;h^SGq%7+SAyzxW2LJD?P1UG%6`&Qu;SVDV<Nz>cX-V
zR$(aK)IGnn1V2~My5tHj1IQQ!!&l-OzV0jV(+111AcmTW`~UH)CQGS{Te~|uu%;%1
zWr}7lomt!1)!i(9g6lf}y at E_Fv@+;j5MwdwSX~Z%t8ZiEAo^MkeU%nXRM>Knh1S^A
z&GS)mqAh0B*LPr9v$=7Z{#Jjg)lDuwmrhe_pc*@{pdL$V)mVnEom)4po^_a4*U{Ep
zjRs;%wRf;9$`vFJ=!ZJ6QeNNM-O)648kbQ+9cpx&-ju%Al_pP5#@uXTp at u0+GRV_V
z&aBg90arD7U5A=h at +S!bZRlck9SiEy>tv-ib{}8cSPXvlr1jEvcH`-)472dXM&U*U
z;&v*z>QhT=yP6lbHo<r;<K3?AdCkp>n- at zzFRd?~5xeiDoYn4XPg`3T7M*2(;-i&N
zRwqB1qFmWA^w<wl7nEQ!r%sz4te8`WG1vX2m&Nc<=|d#7Rr;!y&V<hE?zf<$qO-H@
ziu64;Sx%)>XTu%tZqZZs^X7_Trt0g-In4=wT3*Kvai`Ta<35~XFr}QwW+_|H4Ex$~
zxpu}s3UjFz70BdA%A0aMAzkhnxa%fsP-*7N2Whtww41AbNhY>*YGuc=P7KiW+|@Q+
zY!ZZpueglNiBxRzLtg*BS(A2S{=Up(e53Sr{~ud8No=;M)02A}rV{eIO0L~Y#Gh7{
zjNc{8H1&;_UfR`sDJCJ^^&Rc#Z%Nt8le2LoZEM76eb9U{dCdrPU)bE$Q7zUeuCr5T
zCesBwdW{DbEJ44gl_uk|s+VJhuBTIKTurARKX!y{rti?!+<s}OMfnc3bJOlKCtCy9
z{{NYkFxK+#QctYACjZP%;9QJ0TrH?xKCc{8^7bCtzQkM#7h;z+w$-=Ft>BKX0Qdbc
zE at 54vbG{k^<E;{FwXx&x*oC;nMiQS;uRYSwKOZX-X>IomWvRKB_dnxNw=GW6zj#e&
z2Eb`6RxYlDg`zWrYtyJ&!ZKc}JK{;pglSN|I1lb8o1$@1>+(`GTzyj;+=Kei6`i<Z
z-M*xQx{kFH6N}z&cWX+-Ix38s^!y`B9#SahG5-Qu?wW|42`SenLwIcI%lLE8U(eTY
zo`+k6zkT{*_5B)7{EH0u0~${JCIikdgYY4IG5%aSUoha!2K<W#e2D>f?-P*Dr3Sn+
z4gOXQC!ahGg=3BK{KkM!1H`TGBqHJ={Z{<Be16V=n|z+5;e45Nu1SNxSf8s(rr(_g
zeped!zo&t}oCY3E10PRD at FepyISu^6H1JE)z;8(d|9%?yOKIS5q=6rilbV12gfSmx
zGux4$Fz1sDUz`T+-V;s6|85%mU#5Y-lm>p3K5t0+i}2^_+fUQLzpjtM6Mvb3e~$rg
zH{icC;3j_5fSdUH47l0v{!Jf5OqK(FGg+Qw_=ywZaI;=78*r1KzZh_npC!0|#3xxk
z|7E~UI->^Mq!ZB{JXvl(GT<iue;M!u`Uc#@pLkfDPg8Dnd2zU at hYe}qTMW2Krxo`I
z_>liA at fXt*1HQt5zpmjlLsuE_@%k`fGMt~`<&zA*M8jF`)%bJEZ8PB481Rq*H~Hbc
z20o-?;y+@*P5Hc&2EH#1{ByWpz=!lrIu9CfvmKw(aMpJ^{@i-~w*f!RfbTWnJR0ia
zAA<A$d`O3<I$iiD4LDDAy6|HSILBNUeu at D<-GEnUIP102fHxX&v%cL19kbn682Eh#
z9o~cBL;kPDA3iQG&n*W2b%48ke&4`1>EC1E_Zj#P8TcmsZ3ezc|5paSN&mkLe3Sm0
z2EIvuuYqsU&(#ONDbKLMXSo6IH{iUl!H4)}e_UX|P5e)52ZQqbD*jx#oov7d4fq)b
z+&18~2K)>Ie!hm2pRXD4W&`dR at GA{EXBzO82EIw>W&{5$1ON6k`2TLeR~h&Z8Ssb!
z-)zt~+xOQ7obBk!?R5jr)5|V=mqFj;e~*E0(#gX85kARso1o!rFBAW01AY$D+;V+s
z=$v8ToAo-^fSdF$GT<hDlR>}FD7VYNCmpw+USr^!dVaeBH`|5xZun3RH{j2$*Ut?4
zCO_K^xXJ&28gRcs=M{s#*)D%D at J%{<)8K!Y20u^VV_|z$80CIK!;{<hBm>{<chd~~
zK7-CI1OG+?9yH))KmCG1$CQ7Qfp5xlsex~nd!>PIw(s=@zDfTk1K*^7r-5(M|B-=j
z(%)d<oAieaxM}zH8FXmh at cR|=Ou)S)K5Q3L&PN(>Q*NgiaMQj`)$rtYtTN!HeOqYI
zITK~O`h1CjZ|dP!4E$LJ{_-^V5d;2p1OILVZqnam(62P`A5DY*tO5Uqf&T}CPL%<F
z)4(^&9j`BRP;RC_aFhXGWYF1Vz;80(pVAkmNT<z!pJl*J`WK{uFHQshZv$@f^G6M*
z{+R0zXXCyVAHpxfpWD9kG at N`k8Suvq_+kTo)6t0FA^r;dxpa0I at S6?z+iBnvj{y=M
z(lPzmlMJ{iw=WoQQ*KMsz<blcuhDSI!R&Xd47l0v?lj<Lzgus>&j2k~4x2Qb^)mJ9
zX#;NdyVngmXBu>N8Tclh0|tJzfuD{0Uwo3wEi~ZYM7qo8$r?^M%r at Yq2EJKtwE;Kj
ze953wWzhMufp5}z+<=?y`=$Xm+c*0&Ac}|eGT{Yj;FTKAdR>J-x4!2YaC6*r47iDZ
zhXFV7w;FI$Pky1{<g?Ex_ay`090z}Iz)ii18g#BR=={~dH~Gxc7vGZ0JzT>n2XmbI
zjDc^`pJw2j^v^Kx&3c_{;G6WnXyBXln+$wYZc7b(lm3+kzA3kU18&OAHt3k;e&2vM
z8}i&_z%Mo6j~Z}uynfz*_Z#>Z`VhfGInTkLt8bV25Wz#Zg+CYG>q7(&;Q{=)@Ed%H
z;3526{JHQS`w+py_PrH<E_}NW5j?~<?br)GLKWPU^B;Ty7JO4~9~yAej%6OJ at L8_e
ze+vz`X~$01aPo5|{#-sw4SbVMwShm^z&|$){)GnI9N*gwIzfX at w}Ee#d%XcS?bsa#
zohpOQcMN=!&I1O1je-9Q18(-C7Yz8d2L68=aI?L3X*lKIXW)Ne;G6v-`#2!sq5RGE
zJw(Gv=Q{kk?Q*n%Z}NG(f!}A~PciVxzdLU_-N3)jz^^m#Z#Uq#8}NAs{Db2W!9za3
zg+G_i2}Oh|_-ede_+=*uSnyj7_~mKf{u5K<e>n}j&47Q~pnt7~X9C80xqkar18&yq
zRfEng1|9$B5W&Oxn*7(KfnSjZeoGqo%3>ie^xF}1<+f^a9KOVW|6IdauQdkzX#;<e
z0sq$L5y3<LO~3aM18%nC?+my(?oT>N$c&N0v1#CyY2X*7fw!cAcNuWAeXr2)WI3!d
z;Pb(<E6=wLI;MQ?KRI46Q$9}{a8o|7X*kRMo<V<)f!}7pPdFt`-_)O}Y2fFjfw!cA
z_oRWZG~lM(o;Kij8+^{6lA6zp)4*>`1OI6n_^;EzN7KNMJ~cHzXQzQTrh%_W1OH|k
z`2A_%ze)ptHx2xplGOYM)4*4zfqyRz{E0O1ooV2QmZs)sN*eeV(!iIdfe)mCe<uz6
zu{7}4(!lGd#`!nx;lmov{<s!@Zhs##@UJ)E+YEejT=>E?MW1v`c!L4|cZ1HQ2K+|`
z{MQED9IyYP;k3i|82Ijo(A;ue{wGZb5+1^{@HdeWJmngmOlOvXZ;s=u4EVjs at 6!LV
z0XO-4)PU1}aPglr;I#()H~(LA=N?=|b;t25%A-CI5ETXKg(5`6YoO(!gBYnov=mSj
zQ;Q{m21yB!64W5lA`=uk1tX=36cD8{)M5ce6j6%~KK at X^865jiN*$_Jpk-{)3{$ng
z at 9yuH`@O%r2a^(KdWOx}{oL>Gv1j-0p549dQI33mM!aKxS&)MKAD7Ae^i&T01mg1F
ztfB%vn#$I<BA}l~{CA=^|Gy$Xyk2WaKbQ1Rke>TXFOYs7=?{>e{r`*f?7zhTF_wb$
zV*hQGqaE0PC*r)HUrc_k6&qV$`A=$5fu9Y;ZylKBeEwQMypHtkFUjipJk>S84+Z!s
zc$g;z`LLfZ#QA(wq#W(DS|;nK)sX%n;kLf7ll~FXzfbyyNnbcv7No%cbuyWsqso!z
zlf?U8CJR!aA0?CN_b7*cDe=Dr_$LA0dWaZH at qRi7_{9PK?Et?qz?TL1;{o2GC`vQR
zbF<7^JM6tG%X#}A2ylDV8rl=bCELEEhsA!tN6KXWZ&Qx;xu5u&;j$nFe40$A->)2g
zR?B4mR}{;F6zHeQWcp``v!8zw=k at AvHN52S&;0|uB*13}_^JSZF~Ii+c<XDD^Xwhq
z-wp6N0lqrGcM at MADOfxImG~y&<8bhj;<w8k#Cf}{B+lD$8*$d}CC>U5`0{I9))x?G
z{V?LJuOQC)MZ{VEByrZiO`P?g5odk3G0FK4C(imQ#M%FS#999oan}EtIP1S4&id}x
zXY<@7v$j7J6K6k_#M#dh;;i37ob?BYv;OoOviY$73gWCEPn`9OiL-t^an|o5&iX^d
zS>I)BHc!@HN}TnT#93cQob at jgXZ_!av%dF@$@z>V&iW<9+5Z;etp9{K_jB$%A&!gV
zd25+$|5 at O8k60$}w2NnOJgFf4^Z;+uCf1w(bJcH0$FESHcKmkboleX3b5wZ`$IsV1
z3LXEW^1+UmC@*$Ax(JYvJKN^Qt-{5Dl+rWe+ScoS<&}=FQeNZu^UC+>{d4p4y7GgL
zcSM6rsdv1m@{`ih$5B5D+wrLSY3KOOs_)|X0ObXaXOu6yK%7dkJnvM#o$mi2?yr?E
zzbKM7=r=1b8j#C(C?DbYQRO9$zp1=MNv at ysTE@$59dD=nT*n_!-qZ2j%KJIqxmE0c
zh~w>*U*q^-<zpT1r+k9rRT_7i<GodXhvOy6?{@q>^|QqBkCd-+{8QzRIX+DNZ*knl
zzj?{=lT^Rc at ly5wC&$hI`;JdnKOZ}8aX)u_r20Skd%63=mCDa at e4z5~j`vocalBmf
z!M=@x{r?9t+4XV;PzrX- at iN)*vj?CQ at X0b69||bN>v8Ra0?x<PTOyk8r;_+2nK%DG
z4)DdqVQcy|%CTOUqJgobeo?v4=gj~=6yUA(IPLv>o%nRIwS4*z=XS931N>Bxei-T5
z&luwD$KF%#{mdji+R*Z`^CR@^zgG3W-5w-AoaZXyyuH>0___e!Oq}z4ojC7re<05K
z!^ByCggEDE=UcP`^Djux?PKG}LC@`P=V#ykz0r_Td^-;$&VEJ^=XSR9IsEYYmXe<H
zoU9xbCfon#ke>a|BhKw`Pk{e|IOp?Q;@tjE6KDM{;;i38ob$2%4%&hFUea?r93al^
zZ2cg=y;^Gj!f&q*#Mw_T;@qBnh;yEO1AIV$4<*j+HYUKQ5a;%^{+(~PS*k}fVY2<?
zzJMR=4|+e=9|Zr2Om>`EOMYe%w|*k at oaf7=pHF)0Kl->Ik)F>})=z|<x0m(%e4f@%
z1izKyTE7yU^PB`A1r_Hxn>cUxTH@^gA>!=c`kVNe{aAk!ob}e<^xXQD;M at -U|HanI
zXSTiGgHQ at 8=GJfZ{;eMh&UsqD6`b40`XioO|HX6b?|5$gBhRfr<+=6OJh%QS`0X-T
zJJe{u37of=^{>IX{nwM8*LQ1xzY^d(iC0rT`-pR%*8lbEW&K~ztv~Cz_4hru>jTfv
zZzah|@!YNhJh$rx&#k}g`AG85?O at jj(DVLg{aNqF`rV$-BLDNnmu>e>bl&Ihi*}!*
z^+n&+^yo9A_<TbBYQ21n^nAR+Z?RC|hvW8&Xg=55qIvqM0exM7KNjFS0(@_P*9UkP
z<^KGlk6H5aA0F_7b03OtpCvKQ<INQp-!&8;cX^ES`11k2FThU>>~B2-{OSOo7~pdP
z{DA=HemL)k7X<Rx$6rz3f%^|P1@!ptp!oK at H^zCquX4Ztj0)(-1$fB+69N5O0Up}V
zI|tfxNPw3G`0N1xWq at x8@Ld63AK<O@{9^5VP?vk05;uh3UZVoMD!_jp;J*p*R|EVn
z0e&RFPthA1KL6nXKCMIY`ra4d8v^`|06!Gq821Xr=h-X3FAwmN0KYfDUk&iC9kcmN
zkXbw5_3M%4IM)~-L!9r=R}*LbQsS)NOq}&^5oi4o;;cXG{A`}AA3&V-*Ai#_G~%pZ
zNSyU+iL?Gy;;jFGIP2T=OwPZ6IP0$_&i*Tiv%Z!%>mMf0`fbEnf3lt!aNHO}`@`wV
zPZG9)_&LPq6Ymz_7Y2C$03Q<I!vcI{fR80Uo${PYyn^^V;**H4B+l#mXn;Q+;7<{+
zCjY-D&esL65a;_69}wsJ311NB>zc1gEEH_Vr)0A4yB@}(^FGeevt>d#JFX)ABAGY6
zKHiD+xMbJEuc|S2tc>~Fu#}wve at 3QuirQ!mzD4J`0^cfAlHU3f(A($GKMkOzlh!_N
znmGIv>9SSFiu<gIq~^HK5$E;F5NAEUV>a$I=Lx<W2}nstf8+K9x5ECn8I+p+ml0?G
zQ;4T^9^rmO+-AW`Z9(d^&LbD>Lsl-=8StA8O0AFIqy3~MannHGiug>O2ghV(j?RGD
zJ`A*jxLu<Gy+IuMb9DJb;_y|66_oOyxQb$)rt_%m`qA>S?J`L1z^%=pxBLH=r=AW{
zC8Wn^w%w~7w{gXvBaZdD4bG(;Bo04^wNdSUxW(-gspbFj07yXvKV8-SD&lCL(K4Zw
z631+z?r0Unp|62h%0}Yw|GE0#N*wz25KFQ9!1x%Gja&Y%)9;5^%Bgxk5Ff+8jc0x)
zarpm-Oel7r7W&Q+iT{iseHY at j#LpxC9PzHi|4ke*Y at GAYh$Ej*)Ml`LNi2UG|NJWA
z(4VdCRz(~(HZHo|Zv?|+<96D(=EiM&%NNNH{M&P^Q+0oV9_?x4tDi|6`f|;ukT`4#
z)AC2kILB>VO1uBokWcqmU+eTX{^T;pZTv}luN3?spJ|$pUB`eU|GB!JN5~KKvsB+s
z4=$FEjZ1kBap><-eJOGHxAEjFh(o_r^|izi!^W{(L>&4Rs^3E#{%!lcOB{N;4y-2*
z|En*OKT at uQu@tbL(OmpzDRF#e<5;dF4*ySUKKqGd*2cF#L>&4(s^{OyTp-*^dp%Ad
zCiL&9ejIUpX5&eg6NkPSA4=Is94U0v?YfmX^lkL}wug95e<M>pYwFCh38 at TT;2hPH
zZBAbBU6zseug^?nFg{@_GoiXV6 at g6rg3I`Qg~uG2LPnBMCpk99^Nz#lMfjOpCQck*
zUNf=0N=9+OFayo(KAX0 at pS@yAdF8BBUdYr}uyWba8NLGN(NK=LezUI#buZeETRGbd
zIWKO_zGO4^ZT~z7LNHG9i-C_Bj|MQv%$Say5xZ;OjEp(Mi!w}2PQw4wJ6JW5ILiOQ
zi(KP1ZI)GQ&ezLQOGjg=+*+lLkCAJ}m(7?_Cf^v{IE{GeYV0oBva$)qP`=MOqctVH
zhBeQ~B3cb6&Gu&1yl8QX&GfF-eD8SGex)`lH%!D4yV(Zf!GT>IhQ`<U@=*uWLGruH
z8*Ltn|7C+x95edy7zajnu-$rMwG6e;u&c=u4o5iMHEgYTQyptOB^fkrD#jp5Wn`?3
z^33p&H(V5r7o^Mby623%yj=!inu)IyoR?1?KWT;xb|vQ{84REboq=X3+oTiGKEY3s
zGVMM@{|D&%!n8ZtP>1Y`)!weFuajk5>o(TDRPF7)3G8wG-B|m|1p6DBU~kuN9Di&R
z>}wO^-`E8Ex&-@@CfKh?u*Wmq#<t(O1p7@*u-~lqy#L_-Rb%7Zy&`UZ+_!41{c8#F
zabK#j_Pf=d<KsS3W9{Ebu*b9W#@c_V_S}98nqYr8!G2*A?CTTk?`(p7bc0j$oc~=-
zuy146Q<?|9|MxV(zMb0h_QO3j-~MS~km_Zm%*7?G_WkUK5X#$`Kx^DXfzKjcwrbGZ
z@!a;pxJLeG%4F?f$3<M5B9vaP$y{8nvj at rswAQp5Xdjt_Pj6qM_7=wsEWRz{-fp!1
zdVOiURPFWh(s0hbJiv09lI*M0zF&i7JmcH1RB+UOE`GiK;8>e4I{%z2TFc+o>ltB)
z-@@5HqVa8eizF(({kjN<@;8CjYt{azZpUz8qWe-w+rL0};QEtehuHqOf9CVQP~&^Q
z1!b{ad$(cz`V6)For9tu#`Y89s^PD1|I5Ta%HP?i&yWwKaQmla+2{XIApS;;Z}+|7
z3&qD at 9*93$;}^$f(f02y^FIEkf%u0tev5cD)JuN+j|1_SY5eUJzehs+Z%Df#L at U>R
z(T}x+KdSat`StHAc1i7D(lJiFMh&t5;8@|;e|#YR#!0c^%U`noHwEJF*7&2<9`Oqj
z;^TMGN$Wp%avXnUTs8dl>%TY<KYdpI`u9$Vze(f!<4n3D4r#yFw*;*HtXZ}P>|fA_
zJp;{9YqPT&_v<mAxBc}YQaAaWi(h~I9z1FLFVpq6|L1`A$8$2v-;RH0%kcs6{rY#C
z8b`%3lZ)kT^#--~`4_2uDH@%M&;K#8Ps-mO40Y1uC-TR+#^*mojHC9W7?@rCKnw~T
z_wg?g`zXHCb<zhprOFZin=<+M*NSml;qEY-dQIb-Ufnd<8y^vfU!(DDJ0X7mg!uTq
zHP+vszjkYUdyZ`J{rWFb`xD)Mc3ADb-tsno3oL(UU#IyOsu1}PlF96Cy<W2T=FsY8
z at l1g&Yi;(1pSSo1wBD}qYjhd$FO|vcE&eWz at 6t~dY5ZEXw<>KjTEA`f&cQylFLruw
zkLN$we!l$+9*hkwPjh4W+wz5CFDayoT>L@$K+57{{fEe8_U3o7#W#mq7is(g$IagG
zLW^%e>$w`gRF at IING7wl_-ie`%YSks<KsD2()#a9h(9zTeoHyNASd7cbsFFD6-iY5
zGJcPJJofXC(|*Ts+MgizZ;q8e+Lnu7{+8Hd|LwpcnYZ?<bKH(6Ru2u>r<ccucKk3m
z*8Wysul9cXjaGZpd3#$PCH6`CPf;3cCBIKlA@<+z$YlPE&(-)o&k~K#zfFOw*lV_4
zsP_1b%iU_v4D)7h{6Vpoe<}C%Ni9(Ov<bDg{0(o?_}+e<+JEQ_++u3I*hlSW4z(`P
z_FE_WCkoncv`l7i?T7X8u?3~-*5I!^ztx+I_^sScGI at JEtMunyL8)T=_)5ybZgFjY
Uefz<El6|UItb7TLOU2v&7bZz~82|tP
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make
new file mode 100644
index 00000000000000..3ed258cd45aeb5
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make
@@ -0,0 +1,399 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Delete rule output on recipe failure.
+.DELETE_ON_ERROR:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# Include any dependencies generated for this target.
+include third-party/benchmark/src/CMakeFiles/benchmark.dir/depend.make
+# Include any dependencies generated by the compiler for this target.
+include third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.make
+
+# Include the progress variables for this target.
+include third-party/benchmark/src/CMakeFiles/benchmark.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) -DBENCHMARK_VERSION=\"v1.9.5\" $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o -MF CMakeFiles/benchmark.dir/benchmark.cc.o.d -o CMakeFiles/benchmark.dir/benchmark.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/benchmark.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) -DBENCHMARK_VERSION=\"v1.9.5\" $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark.cc > CMakeFiles/benchmark.dir/benchmark.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/benchmark.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) -DBENCHMARK_VERSION=\"v1.9.5\" $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark.cc -o CMakeFiles/benchmark.dir/benchmark.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_api_internal.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o -MF CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o.d -o CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_api_internal.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/benchmark_api_internal.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_api_internal.cc > CMakeFiles/benchmark.dir/benchmark_api_internal.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/benchmark_api_internal.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_api_internal.cc -o CMakeFiles/benchmark.dir/benchmark_api_internal.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_name.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o -MF CMakeFiles/benchmark.dir/benchmark_name.cc.o.d -o CMakeFiles/benchmark.dir/benchmark_name.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_name.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/benchmark_name.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_name.cc > CMakeFiles/benchmark.dir/benchmark_name.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/benchmark_name.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_name.cc -o CMakeFiles/benchmark.dir/benchmark_name.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_register.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o -MF CMakeFiles/benchmark.dir/benchmark_register.cc.o.d -o CMakeFiles/benchmark.dir/benchmark_register.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_register.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/benchmark_register.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_register.cc > CMakeFiles/benchmark.dir/benchmark_register.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/benchmark_register.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_register.cc -o CMakeFiles/benchmark.dir/benchmark_register.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_runner.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o -MF CMakeFiles/benchmark.dir/benchmark_runner.cc.o.d -o CMakeFiles/benchmark.dir/benchmark_runner.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_runner.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/benchmark_runner.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_runner.cc > CMakeFiles/benchmark.dir/benchmark_runner.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/benchmark_runner.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_runner.cc -o CMakeFiles/benchmark.dir/benchmark_runner.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/check.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o -MF CMakeFiles/benchmark.dir/check.cc.o.d -o CMakeFiles/benchmark.dir/check.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/check.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/check.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/check.cc > CMakeFiles/benchmark.dir/check.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/check.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/check.cc -o CMakeFiles/benchmark.dir/check.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/colorprint.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o -MF CMakeFiles/benchmark.dir/colorprint.cc.o.d -o CMakeFiles/benchmark.dir/colorprint.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/colorprint.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/colorprint.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/colorprint.cc > CMakeFiles/benchmark.dir/colorprint.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/colorprint.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/colorprint.cc -o CMakeFiles/benchmark.dir/colorprint.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/commandlineflags.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o -MF CMakeFiles/benchmark.dir/commandlineflags.cc.o.d -o CMakeFiles/benchmark.dir/commandlineflags.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/commandlineflags.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/commandlineflags.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/commandlineflags.cc > CMakeFiles/benchmark.dir/commandlineflags.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/commandlineflags.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/commandlineflags.cc -o CMakeFiles/benchmark.dir/commandlineflags.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/complexity.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o -MF CMakeFiles/benchmark.dir/complexity.cc.o.d -o CMakeFiles/benchmark.dir/complexity.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/complexity.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/complexity.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/complexity.cc > CMakeFiles/benchmark.dir/complexity.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/complexity.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/complexity.cc -o CMakeFiles/benchmark.dir/complexity.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/console_reporter.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o -MF CMakeFiles/benchmark.dir/console_reporter.cc.o.d -o CMakeFiles/benchmark.dir/console_reporter.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/console_reporter.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/console_reporter.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/console_reporter.cc > CMakeFiles/benchmark.dir/console_reporter.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/console_reporter.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/console_reporter.cc -o CMakeFiles/benchmark.dir/console_reporter.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/counter.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o -MF CMakeFiles/benchmark.dir/counter.cc.o.d -o CMakeFiles/benchmark.dir/counter.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/counter.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/counter.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/counter.cc > CMakeFiles/benchmark.dir/counter.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/counter.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/counter.cc -o CMakeFiles/benchmark.dir/counter.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/csv_reporter.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o -MF CMakeFiles/benchmark.dir/csv_reporter.cc.o.d -o CMakeFiles/benchmark.dir/csv_reporter.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/csv_reporter.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/csv_reporter.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/csv_reporter.cc > CMakeFiles/benchmark.dir/csv_reporter.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/csv_reporter.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/csv_reporter.cc -o CMakeFiles/benchmark.dir/csv_reporter.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/json_reporter.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o -MF CMakeFiles/benchmark.dir/json_reporter.cc.o.d -o CMakeFiles/benchmark.dir/json_reporter.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/json_reporter.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/json_reporter.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/json_reporter.cc > CMakeFiles/benchmark.dir/json_reporter.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/json_reporter.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/json_reporter.cc -o CMakeFiles/benchmark.dir/json_reporter.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/perf_counters.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o -MF CMakeFiles/benchmark.dir/perf_counters.cc.o.d -o CMakeFiles/benchmark.dir/perf_counters.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/perf_counters.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/perf_counters.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/perf_counters.cc > CMakeFiles/benchmark.dir/perf_counters.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/perf_counters.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/perf_counters.cc -o CMakeFiles/benchmark.dir/perf_counters.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/reporter.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o -MF CMakeFiles/benchmark.dir/reporter.cc.o.d -o CMakeFiles/benchmark.dir/reporter.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/reporter.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/reporter.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/reporter.cc > CMakeFiles/benchmark.dir/reporter.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/reporter.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/reporter.cc -o CMakeFiles/benchmark.dir/reporter.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/statistics.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o -MF CMakeFiles/benchmark.dir/statistics.cc.o.d -o CMakeFiles/benchmark.dir/statistics.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/statistics.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/statistics.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/statistics.cc > CMakeFiles/benchmark.dir/statistics.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/statistics.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/statistics.cc -o CMakeFiles/benchmark.dir/statistics.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/string_util.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o -MF CMakeFiles/benchmark.dir/string_util.cc.o.d -o CMakeFiles/benchmark.dir/string_util.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/string_util.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/string_util.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/string_util.cc > CMakeFiles/benchmark.dir/string_util.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/string_util.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/string_util.cc -o CMakeFiles/benchmark.dir/string_util.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/sysinfo.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o -MF CMakeFiles/benchmark.dir/sysinfo.cc.o.d -o CMakeFiles/benchmark.dir/sysinfo.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/sysinfo.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/sysinfo.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/sysinfo.cc > CMakeFiles/benchmark.dir/sysinfo.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/sysinfo.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/sysinfo.cc -o CMakeFiles/benchmark.dir/sysinfo.cc.s
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/timers.cc
+third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o: third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_19) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o -MF CMakeFiles/benchmark.dir/timers.cc.o.d -o CMakeFiles/benchmark.dir/timers.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/timers.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark.dir/timers.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/timers.cc > CMakeFiles/benchmark.dir/timers.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark.dir/timers.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/timers.cc -o CMakeFiles/benchmark.dir/timers.cc.s
+
+# Object files for target benchmark
+benchmark_OBJECTS = \
+"CMakeFiles/benchmark.dir/benchmark.cc.o" \
+"CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o" \
+"CMakeFiles/benchmark.dir/benchmark_name.cc.o" \
+"CMakeFiles/benchmark.dir/benchmark_register.cc.o" \
+"CMakeFiles/benchmark.dir/benchmark_runner.cc.o" \
+"CMakeFiles/benchmark.dir/check.cc.o" \
+"CMakeFiles/benchmark.dir/colorprint.cc.o" \
+"CMakeFiles/benchmark.dir/commandlineflags.cc.o" \
+"CMakeFiles/benchmark.dir/complexity.cc.o" \
+"CMakeFiles/benchmark.dir/console_reporter.cc.o" \
+"CMakeFiles/benchmark.dir/counter.cc.o" \
+"CMakeFiles/benchmark.dir/csv_reporter.cc.o" \
+"CMakeFiles/benchmark.dir/json_reporter.cc.o" \
+"CMakeFiles/benchmark.dir/perf_counters.cc.o" \
+"CMakeFiles/benchmark.dir/reporter.cc.o" \
+"CMakeFiles/benchmark.dir/statistics.cc.o" \
+"CMakeFiles/benchmark.dir/string_util.cc.o" \
+"CMakeFiles/benchmark.dir/sysinfo.cc.o" \
+"CMakeFiles/benchmark.dir/timers.cc.o"
+
+# External object files for target benchmark
+benchmark_EXTERNAL_OBJECTS =
+
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make
+third-party/benchmark/src/libbenchmark.a: third-party/benchmark/src/CMakeFiles/benchmark.dir/link.txt
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_20) "Linking CXX static library libbenchmark.a"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && $(CMAKE_COMMAND) -P CMakeFiles/benchmark.dir/cmake_clean_target.cmake
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/benchmark.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+third-party/benchmark/src/CMakeFiles/benchmark.dir/build: third-party/benchmark/src/libbenchmark.a
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark.dir/build
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/clean:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && $(CMAKE_COMMAND) -P CMakeFiles/benchmark.dir/cmake_clean.cmake
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark.dir/clean
+
+third-party/benchmark/src/CMakeFiles/benchmark.dir/depend:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/DependInfo.cmake "--color=$(COLOR)"
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark.dir/depend
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..7bc80c0a4be24b29200a17b1e76ec3b41f0d6449
GIT binary patch
literal 1704
zcmbtUQEL-H5S~k_tx|0jAB2kBlPK6Fm)076kknFBA;h8t)R$xLy7fYmOTF8aM!`NQ
zz6d`06Z{zk|AarmSMg1RI&-%}*7Nj12X<$^Z)awAX7}!Jvwg4PIKbk-9hf3!0lrkG
zb~7`ZumES_+rs7VTklQ~^C_cwYHe)XcCU7WajeI#w<1<VZFy~+!TPKEs;I3B at 0wY_
zm>C?4I4D!A(*@k_h`1^ak_)*4=fy*C4i=rI`PsSmcu?XmnYDSN|E8$68Tfi!=2I=H
z{4_c`*{Sk~IV-Sg at k}?+pgM}uMdEyA+F3s9A at XJZ5JoEOi!cQLY3Ej;;xHP at q~GYp
zS|za at cy+(kesFia?fV_yyBW!NXP}Zz^nRr4UT>88flQS@=mm*PCVnsO>HR;Yy3ta4
zJs2f=%VgOHNswxor3r<upYG$waW2G>P(|!R*rf at D{H-SgAkxWD%K)`baviaisDTt(
z9cU0cQcDm)nu5q!!eoI6N5i3t(Ip;fCGd$Xr&@-6gP+A?v6qbYRH7#)R7L)7B8MtF
z&VNrXW}sS67BV#r=KJL3;+-zx0`;%S4o17CNf!;KJhTtLGv==tp1%j<4sA9HnsV53
z9RcP1*Z4JzrJTk1ZRAM!ygB+Ed$>?mf1{*+`Uh}6uD^*K?O(%T%VPtCO`^^9v%YU}
zw(A=kST at Ho^#l!i=fAvZ#BYs*Ycwl9KjY_UP|jlfN8?bes~A5(zq0;qm-LVRSsc&(
xE8Cm4{!A0fQ8ojdL0#7WQ^*(Zo<csDM!hCrNwI(DaIGvpGUtD3#gbW!{|V}Vh_wI!
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean.cmake b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean.cmake
new file mode 100644
index 00000000000000..a9aefb80759e5d
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean.cmake
@@ -0,0 +1,47 @@
+file(REMOVE_RECURSE
+ "CMakeFiles/benchmark.dir/benchmark.cc.o"
+ "CMakeFiles/benchmark.dir/benchmark.cc.o.d"
+ "CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o"
+ "CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o.d"
+ "CMakeFiles/benchmark.dir/benchmark_name.cc.o"
+ "CMakeFiles/benchmark.dir/benchmark_name.cc.o.d"
+ "CMakeFiles/benchmark.dir/benchmark_register.cc.o"
+ "CMakeFiles/benchmark.dir/benchmark_register.cc.o.d"
+ "CMakeFiles/benchmark.dir/benchmark_runner.cc.o"
+ "CMakeFiles/benchmark.dir/benchmark_runner.cc.o.d"
+ "CMakeFiles/benchmark.dir/check.cc.o"
+ "CMakeFiles/benchmark.dir/check.cc.o.d"
+ "CMakeFiles/benchmark.dir/colorprint.cc.o"
+ "CMakeFiles/benchmark.dir/colorprint.cc.o.d"
+ "CMakeFiles/benchmark.dir/commandlineflags.cc.o"
+ "CMakeFiles/benchmark.dir/commandlineflags.cc.o.d"
+ "CMakeFiles/benchmark.dir/complexity.cc.o"
+ "CMakeFiles/benchmark.dir/complexity.cc.o.d"
+ "CMakeFiles/benchmark.dir/console_reporter.cc.o"
+ "CMakeFiles/benchmark.dir/console_reporter.cc.o.d"
+ "CMakeFiles/benchmark.dir/counter.cc.o"
+ "CMakeFiles/benchmark.dir/counter.cc.o.d"
+ "CMakeFiles/benchmark.dir/csv_reporter.cc.o"
+ "CMakeFiles/benchmark.dir/csv_reporter.cc.o.d"
+ "CMakeFiles/benchmark.dir/json_reporter.cc.o"
+ "CMakeFiles/benchmark.dir/json_reporter.cc.o.d"
+ "CMakeFiles/benchmark.dir/perf_counters.cc.o"
+ "CMakeFiles/benchmark.dir/perf_counters.cc.o.d"
+ "CMakeFiles/benchmark.dir/reporter.cc.o"
+ "CMakeFiles/benchmark.dir/reporter.cc.o.d"
+ "CMakeFiles/benchmark.dir/statistics.cc.o"
+ "CMakeFiles/benchmark.dir/statistics.cc.o.d"
+ "CMakeFiles/benchmark.dir/string_util.cc.o"
+ "CMakeFiles/benchmark.dir/string_util.cc.o.d"
+ "CMakeFiles/benchmark.dir/sysinfo.cc.o"
+ "CMakeFiles/benchmark.dir/sysinfo.cc.o.d"
+ "CMakeFiles/benchmark.dir/timers.cc.o"
+ "CMakeFiles/benchmark.dir/timers.cc.o.d"
+ "libbenchmark.a"
+ "libbenchmark.pdb"
+)
+
+# Per-language clean rules from dependency scanning.
+foreach(lang CXX)
+ include(CMakeFiles/benchmark.dir/cmake_clean_${lang}.cmake OPTIONAL)
+endforeach()
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean_target.cmake b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean_target.cmake
new file mode 100644
index 00000000000000..f18c6ec95d2ff7
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/cmake_clean_target.cmake
@@ -0,0 +1,3 @@
+file(REMOVE_RECURSE
+ "libbenchmark.a"
+)
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..636ecb04597d13ec5b899bfe8d70d398f0a917c4
GIT binary patch
literal 10280
zcmcgx3vg7`89uw&z?SIls%Sy1Szysb%r<uuLQu5XWEbwr!lWbtM~aut<|gc9A943?
z2#hZ#1igmUj6<i>Qd=LjI#W7B83(PeiA7A+PKQ2+T02FZT6P4)`Y3IY^#9L2CwsWr
z>rmS1KXdOn=R4p3pa1;lanISkCmda2x7jKP6C1gi*myxmpPpYTw9sq|xsuGKTo;s4
z$IVg?q?f>h^0E8se+Jh_^iw}YN^o67|9!A4*cs73c^QGO4q5+~y#07H<a^{%$D$h0
zk at X$E8UUp6Xd&tIMhj7&Gpc|1u{&dTUlQ^;<<VBp^L9!M`Q{wMX5{!W_kl{x?HG6O
zs0QVc6Ztl|(B_dR+MJZ3SG?BdA at ZnUyGLGZH0B<;6HLk5Uqu&W{m6!m!EXdN25%24
z2i?^zQ1SUBsBc*rEyO+GL{wjBG^jg#vVKS&KJ9kjhwVYm<{o(oa_$42KJWb<9$9a5
z248bH$OjMf`rXw#&<mg)vdQ{~)W&N4qt*IRSue8AoRsy6h<=FH3B8$%)(ib$Z!tJ9
z)p|sK6<gnuGFol`R?vMQOzsauC&9VV#pnQNycUAMP_^ROvy+p(?&=UB(ZWsWPE?<y
zH6swUH=t6Upg|O?iu(;E=D+^F^lMrFGjpQ?V}Pyc5NV9gyHWk5QD^v2+%h>i>8^&z
zo~wu6Gri%@o$le?&}7SJhaB#aS0FcXLc7d;AmsA~?|1kBw!23T0*o5b(S^mw!6SF|
zy?{Vq>S)3OgZ(&sZa=^+j2?4%aq&6qPH8+)<2L{mZvsbq$7C$GVp%oHqu at oPa3{{d
zlk)IiPe)+j^<$CI&PvF3I!;Gw&$Jezi%7Kg{a1<=AInb`*MTBx=_i7~4UUHD&II+)
z^=D`c0J@(I)t&7{=xp&i;8M?UoyhvZB6g;?<lY$KY>gbo?&_VsdRdS9nxlHi*Aj)C
zyklHj>aGp>+TFEL-zIl$r*FVr`(59?KzG;vz&A$Iy}n0j`iyTMO<(klLn<seSV_{j
zT-f0|3b?Gl3u7!p6Hd7RUBR4Z!r{Y}JrVLb>LF#L40=;*DSr{Hqr+7H$cBSc{W2E(
zFS=y?ceE?R$D7Y-xJDWuK0DKWpF}76<)BaW&*Zpczic~v^W;%FU*!VD$0GV)<iZl9
z!0y0T!)PaN3XL!e*}NQG?nA#l^0EodCBtBN<idcBIs{Wx)=yfi>J!i7X2=?0owPQG
z#%oFeNXo;nHXB<AY#*@BnBT<^3^d(OjD8dwO=X{{Jlj-un985P6s68VK#Da`DNZ0U
zFH9zEpH^)@egwPtf0#z^z@(W&+d6kDeZd at Z!W=^PO7o{nHa08iM29?l+-ZynuG1Ku
zFmyJ+)(OjpR$)zEtT849!nc=)SC)tC%frTg%vvqkwwGsrP?}79dZH)4Ef2p`9{yo@
z_ at Q#Jb|;&=rRKE6bZFgl2)>u5UbVP)!}d<U6g0H at 1dH%<&@yp{j=^+yZqScygvoAv
zAMgW6K6taVzD%Fnypy{{EtPoZETbAuvZ%k9*Ha_(H92YXe9I1BuOk(ePtPD at 4#)!L
zxY|f(E07LUerhM*u|e)fwz)++t)I7ukN}a$Qqn}0kVeu#=546Iv0+gz1(_7-46j{H
zhBP&sGTwFZOfr*Y`M{DUqnL|lRW(hFq;3k<Qu!f*uM(6U8r16Y=|nu!qY|-Dq9hY(
zP>XNv+mcALhWZnlww1(^v3Qo|dNUb~;Hyp@(y}qKMcqbS#8Ej<S=rWhgSV!uJD=9_
zUa7&~;IFT1%F|-t?m(lzzR at q$vI;QifCqPfh#gtEri;LtX&f<raJ&lgD7J0w(Y3 at j
z<e9k#i}U7PG}Ac-b0P`_A0i-)poF?)h0F7h{TA1p2P?uZZ^6;(s at YW;an<jf5p*>V
z&%DKT%5EQ?<!TPO>VvMDR+qQcHK*0(X>~cnRbEin&<02iJk%a24A0y-V^?Lt at nFS6
z_Sv)+eWD)OxG!G7xxeGc3A;SQ;Kxy${i#_lPsrsARxJk@*C@(%@Spozu!9r3Dnc&r
zPDjX9GhDgSwaNacS+1I(%NykGt*D~*XX9D`xdk4>zfHrHI~}_!3U-2<;-m1O?8Db8
zZ2tSRux;$mi->_di#EW&ofxNKY`0>}Hp?|9=<>9=oRKO at D)T}$2l)ukuG6H#@TLsz
zoQ5G#L1s<E at vLtrB|iGhrGi|<vs39R$RVHeFeWItg%MIU&7<86$Ge3n-=>8s@?{Z(
z{P!4+*8)+VpoQsSdYa*8Pk+qtQqK%)`x!pNC{DefWw<#)#`sl{c~eXy^E1Zxn(&`9
z{2CMfONIwbxG^`YNYI48#rU!bKg#f1P5Ao^-)O>*GrZq~|Bc~8Cj2zRA2i`-8E%Yc
zsnS8$MirsEL<uId82*%iVb;U&pP29~7=FNnU&ZiOO!xx8aUV0w*8soNPFE?d!aWLQ
z5b*i-k_Mj_4_nxI9Pr2NrCH1QZ(H!+v%rfM_$dqA0Tcf*JFZGYc)QC1FL}>v32C>$
zcU$0lEbzN5{Ml>4e*tiea|?^_ICJSehVzX8_gs_(z$@qffCWBefxieiwmXI&Fpzyl
zLXI=Mg)MBl-$LERFcr$RJKF-EXMr!Uz-ujVLJt%J*+g3N$Kyn~ZOyW7H67oaie>wy
zz=}*Z71KI2sP1cB5+53pq;UJHc)Qe~D1$L2naF917VGnaksgz-)P at I_b~M}@UfYpb
z)1fp+Gkp}bw&9PqH4u0;<7*kd0{D{fwG>}V at YRT~CVWY>MlwiLQ=*j;<w*vIDoWI(
zWZ0}n-2l}MP~8C44N%<x)eTVHz*6W|hZc|$nVixc%c;=k?rbc(RY{~1+Mub==Nm5)
zTJO)Qy?#aM8yZpu)NC%3jwKV?R%NiBKxA`iIv~ADd~-iEv2vX_D$Nj4H4A*Hd8MkY
z$tRN#)<`<1#nN##JQ!|H1EeG~eI%!4lW<B at ZcE2f@a~DVgTqRED5mt~W7!@h7QZ8(
z$f{6vVfIB^Sv9Fbc)- at 04s9vcz+9065VAyE0Y_j0MdBTrB*iz!vI?9b6Iw134|l}i
z6<(&SR^UV%)70?VREnh3RD577xC(uW_hS&0-dG|@l&&-!QG1lNYA&CmO`XSF-G(j+
zy#I7wf;za}q$nBag&Ir2z~|JgR<1KJ%{8gP=rUtRI+f0PCEU at Zw6E%DP at oUD^(5N|
zaX2m at PEtJtswa^f$mC$8|HF=%1F<BMql>W<?ivZ0PGGQ4)ztJL&YO5 at 0Fs_e9*+G9
zm_!+p$i?tZ5NG=sY$pV6GUN>W6o8UqIBcr~&lDWzXIkW6E8uh3ev5dGfHw-bX#Ylr
zo9(X^_ at aGXz-tBjdo1icA@Hvg`1=L^V!%%u-JN_{;9oEB{~+M_OCgWLrvmO5 at Jp~m
zAQ%UcA7{9^zx at JV^mCiQ7yW!d;ER6x;5&qZ?S2&=?&lu`e4&7!5pa>;fCfOY8T_Pi
zJF5g7&juV{C*WTa at J$TI1kawFe}{lK3V1=l at ka#C-y`6n|9b^owDSVP(SJNsb35Y}
z{I>;MY`21a=g|(H{<)pY1RT%)9A7Bl7YlfUfa9r-^V<X*PhA}E5O6#{aC{@f(Oq%8
zs at b^%@dkmvT);)X%y8@%{>Q at YcMAMv0^TF=FBR~Nz`sGj?-ux%3HVM6{x=2wY=QrX
z1%I!=zg*xyW5GWt at UIZ~Z(8u*68LyW<nejeg8z}g$2&Ra|HFdsoCzcljQ?DCIN!r?
z97i#p)dK%Yfq$(9ze(WZ-I3eB*@C}X;Nx!^oZn@^?-BT45%@_9{uY6MwZOl}g8zWP
zuNL?ZTkszd_+Ekkqy>MUz at IPhpR?c}68JX?{5J$X{?^0e_A3F$-#s~A&-Pm!cg%A9
z4q?3`?t=&AE)yOyV7k9!7Uzlh9mH6nATGhf?Q?sGi~9h6J5UgBf`{`%2!bFk+KEzh
zI=@H2MSeoS#dgycID_fBz!=4Z{SNC8!v}wsMd9~Tj?ZB@?#U<|zn<azF2?aq497hO
zh2!{NCkn1*6pr7 at a9krO9PhzE34+IhdZCPaAPVw*G-tf<jD*7N7$qa-92ZUV-%F6s
zrV>@z&J+<xKJU*n0*-b3zI?=lQzgLO5pcA_`^nFByj|}1eC#L)Z at 1AX68sk&1#x`%
zeYw+w^ZPRK=eDM_SU03v)<`$=9Na--ehq%1CjOq779;-dT#mp+i=qB}I+^HKlUs?u
zFCJIap}0DL*Vpc(3akvOpi#*W_d=><VAPEN!f#>d1*nUckn_L78IDlbz$Je&6OSeR
zUvztft9UA<rXd9BjHdeGr}H{`i(=)zblyLZ&A^ot&hmzFb+gi&jlq4&-<Qqg2XHX{
z2eJXi56=r`X<-0gkNC~J1|B|ld1|FEm(j=bF4yC!m3}+Z=j$HZ_m$E20)|tNeU>3-
z$R?Klo$cGKIPJF^{Fb6GEu6s8aXf^8 at b3z?k31d^zK>u`uzhjuLXoWJL at Wrxmdg}^
z`!!N8R3G>Fa{cG+XQx^+GUoPiZ!g#X0XzhN at O=gQkACuQ@&1PaLz}oKi1Iok;x|+j
zbNlO|5;43>h*F7{4v^Q4Wa`cJdD;&(m^Zh7nCW|`G>r`QRg_*Rl<U8YhZ>M^`X=;$
z1)PiK{^uB0VRGOUYoGI(nJIl<-v3|fe**g0{|jyZL(rxDH~H^m2M<2ZIR5yp<^AEf
z7aGU*#cv}N$!XSqyhDqEToj(xGJOLry{|F<al)#&9%n8C0GGJQeNw~py`0EW?mvgW
z&e}KY%S?aB)Sy{E3iajYkC(*{<AZ|n!!3pD^Y~%4xov>RI9^Uc4h!d&1yDBYW0=i*
f2kMQnO}*YU;Z5D4dw)6o7B5;Mq}!xmDw2N#;?8r3
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..6b85da35fec4765687e508d1a0a6d5b783969d31
GIT binary patch
literal 40584
zcmd^o33yz^m2PXZg)wRY#!*-s5Qz*}NVc&hY(TOl`!;S7fy@$?v}Cz$E0!fasoM(%
zFGwQ3X_R;pG9d|Mn1l?3NoJA>A;c^ZHdsI=0n8R)01t$qMg|OFaUkIL|Fv`<UG-%f
zUNYbJ>T|2_{qLz$r%s(Zb!xfo4fT=vxj8ujn{ooD1u}OQ4Fn3mmAS4_mo<UU1&&j+
zLEIPP!+ZzgbC9_{7~hl3^&$A4Y_1Q-_YwFo)h-IVk8GWQt8*Opy(Y)~v*SMN^zJTR
z;w1BrD+BJhb)|)sgO2+rXDGjvd4~DNNlq%=cuFAHzmqpx_vy63$=T-gzVqJdiB9W-
zPW856-wze-IfYI#5pV`hWmc7c>v4QAa54eMy~lBfG+ZL#S9MYDv*!C5$9>gtw`t0}
zv6Nd`{WMdZ8=@x{l@=~>PMD<X6YT#QiF)rYzVPDOi?#=k+KAggtvjjoRw{7hq2N(<
zc%J+liJZC!no|{0<<_28dv5JHwTsSaLL)36)d=UKCIfY)6>N|aUe)lbn13pq{<ngC
zmqUKXeb;f{4!ds{jn$QwQM<i+gTb$a_`G*-PO$&qSmWR=lS(%)0vD)9ajDvop9}5H
zD|UJ>Ev*78G`!>HIYaXbsiGb8iUYyE at 8K%!4%Jt_Rr&JBv0D~wK5>?l%yWA0$%(kF
zg>!f0hXT&*_R^|&B9iPWj3j3}NyyhQurw!l=bSPnRjqqZr25j*!uVV#Ij=ZUy{qTf
zwMzGu_f_tUxNpG%6&*5<{F7-Pr++ZmcQ#bzBrh#39$6PWs*f at SZl&>$+_u!-^Kk`>
zEOx4g;zhiwaR$0_v^sEiJ`6z{cA^nRu-tL~Ks%_txb{o6(d}E9AIgoFmR0W5d6atH
zA##E$mDXR1xPMABETjG^Qn$TtnvsN}kP&J0e-0k`4w at rH$sscAOtkl=-J1cAYVtK`
z^8S6nzPHeFVJL>J{E}(qf%ej7G<B`}h~u`GHb!vYn3lK at O{5!roo)2KU#pBSQIq}s
zxil3B8bMWSRJ)@V=ifSYDg;xNOvXzaoq at Tz5jPHn4%L-bAxmIKUFlrfP;eFW`%3&s
zr at F4RIoP|3tZ#i!`+(D(>IZ|De-Y%70W?O$)#gnBLuiU(C)rpSfylThbgEwq_T8ui
zix6;Nh!K#vi_i*g#g3X{^hCDkP)#9~7O8%FY@=QZNvmJgcyqe3BW%eCssWbIR=yl@
z-+^f<1@#XmLT3z|I6HVteW1SYkMaDz!FZ4sJm=I~S%?#?A8tVH4rEh?BJSI1o&?sU
z4Jg>(Ny#_e&31F#VPQvUdyK$gLB)l_ni}Ej$OwH4$`f*F5be;IYKAo_`#>lAYVfEU
z_SVVhtZ4C<QuEY9ZU42mvRNYTYn3}I-$G$Z<*Jsx`tIL?{7&z-oCbH;abN3wr?9)K
z)_th*zS`dZ-s?Wldl!0b{%H+v-Kl}P>ifE1ZWyRLAmHS at HgZt#D73xE*K=0ozPGmJ
z$0sDKYu&2f<U^9Tw&li)>Vm(TSiQ8~oml1c4(0YfmlH39v#GA#JgJI}pE^QSU?a$(
zwpUYsk at fiiK~mk;RgP|lgzaOQ%Il7{U3IiAOP7{g_pn9ux8B|8&u}KHhaC*z$rUzO
z1IuIU(Bt%BkWtMNNp_Vqu=~9OeK#c6;|Bfmd$<WFqa{xNQ^CH+X$;8~xOq9)_gUOT
zk};6|G1#{ZHx0 at 5QrzLuek#*Bpxc?4k at _Z-K)ojCR%olwI4juioy~Zxn$zi>QyPdb
z=dkM}FM)`YN{3HU{*b_2$bAVM-5D^h{8Fd-f%s<t;)eYw!;yE%OVA6?r~pmktBSqj
zKAtHd at qO)=!pZvLaPqR6 at W45S<>T=K0Kz92XNspGJOv~Dq$2%9afK~rxCZ+sDSez+
zn#xr&uY;`f8lf$?k)ikj7zZ+po#Z-5I1h~V6AxoMIzY|wWsW<N+6?na_csSJI|KEN
z(7k0XWX4mluD7glVQXVFp=DN$b{+(cxG$t;f_*r-0h(CQh_=>T!^s61f$<cYSfIJ$
ziHECofH0Ey%CP%v>V7y%Ymi}hDX^|9ZKQ!H=0#!Hq2zvPDcEz6=ZMCKV+wdtsajdr
zyAZd*-JQA;g at lvq!FxW${*o1YzGS=}eCJ!SaWP66 at O!!eAvT7SXHw(9(Md+oGm>ke
z<61P|7ZqFhN!%baZBON)+bu-tY5r5gNzFe^VvHnH#^H{8QE6f7Yk#HM-&T)p`H4TW
zT$uQWmy7-^n*-(Q=J1xQ$0Rn1Dz`Yb?_HL=&s%Qq-DT3P8~+h at A4Q1fxNjn0eiwmS
zRV29>5vGWk%PI$z6}7{!u*u-;=W3Vo-2!-q+07-vzUy#>fsLU%XkZ5o7%v+m)%$cS
z%a)QRpxx7GJ8)P;cmP9Z7``in&<nmzscazzusBClG+em%eT0Dzp;%ny1pAH}2fqZT
z*8dEk29T8 at eyf1r>Tw$28EeojYfNskSGgCabCZwCeWA(i%-fMaE0D|!V{k7FBV^Du
z!v%wSxVUvCwXhKQ+jw!rRYBBG*|{Jw+|r8T2KPnfJNLp at gp(ITUGS>&a05ADf%RH{
z6W~6b+2=!lgS;~O19R9Uyohq$ALvs)LmC(pJd8DXs;}4?SO_)EgYpted620gqr75W
z{o5&<Qr-`6rK&%Ki-_B!b*CBv92{_h{^~ROGYoD^GdRmKxE~ifpWEZ87D(2kVhFdX
zwV`=RdoI)(h1%Ak`(1{yV_!T79Xjqa!)@%B?mURQ5 at Q(#7zQ!$GggKDcR<O%X$GkK
zle^s+sL{0?SXZHy;lkx6>uqh*jorbaO4W7|u2gL=#RY2%W!FH~SpjEY9lR|oj21{X
z*b1l3?aOH%0n1~R=E1to3Z#N?w8DQQ%oY*WXE-kR-dz=OcgcR39?-)>^{7}Nka|}+
z)j;r;z~*_4DcY5apMtj>xVfn!b&<VK$M+!{ks;nv&F;8O6%ND2i2J&ojna=nG4n#H
z!xV!W)RxG=x*D5Z*_&!>^gA>IydpzRbY}#)uWOC78!1jCP8|qVqP~sAuwmUn`gaEV
zrYkQyw<PRh0@^<qpRC7Y%z9O1g4p#9^@u}0Ba}SQvu~u{f#Y1dCDYFI0TB$PVfSvf
zcbKub>K$QpZQat^q}Qe!C~7V8D{LwH1CBeondubBqmkKBoprjQH48OAQFiiQmIbDg
ziiK(9Kf%2+jt$<D!}fV!wN at QMAGTLT>Lz<n#i1uc$!P`8gIZO<O!cZJN^91%&$>{G
zoq+sJR@;E87iMy+#u<~lCe?}DM$bc#8|Kvhj^UT|v`-TrAhi0(?Q<;XRr?%@i=|r-
z$B(bwj3GRA4b5PSl9zh521RdJ!`T~Ll5*y0nQa`QD&4^GB6S6MDmx#mH`=ut48jNk
z(`vJdQA{|7gi?8$NgwOY_Mmu;sS|)AE=B*T#k`{;_4HrVy_LT)byP<F%AJ<2lHN8K
zZyM1FBJTU?s34>Uy3}*&_C`%bYb$|e{)%k*L#Zh8E1o*gA5ww74Ep6vdn}Effsduv
z6Na($nm_G}&(d=U_f5xrzscFO`)X)T4F7$ln*me~Mh2F!r at c7*xmRd3=ypnG43Cpk
z-~A_a7BvCq#HEp1glmpt*6O|;QR6R%POjXkY+Pq3SsLubXbYc6GjV?1(%sgwxIKoR
zfmvhlK)?=yX|+hPsMOh!&*}3btXtd)AIo&Qb3$FILl+fNv-Bh-Fo7N?j9nNKi|qux
z*-p at hRDlu9KFtKZ3v+V}J$6>Ers?n$%@kufn{Qwdsz`4){Jjxf^=5Z_#7@##id~VR
zGhxI-sT<RHU2;k3q&^J)m$GPTPA`2i0w!fen$k&XZHqDE=ghO|ZZ=BYs9|Hw{Ix~R
zUlV6w)|xmO^VCF0%}<Ynrqb(zyHl5{TiZYMJa*(U-S0+Ebw_T?%!Eg7qP={SiFIlf
z3NTIVsZ3&c?DCN`(ht5yeYL&9Ow-GX+FBj1#=IUp5KWZDa4{<%?lujlZC2Uq+3=0D
zk{TLqiLzH^xmZ}?I)}AZWxF5UWMQB+)^1g73%kWS<OkYqEhRBCO!hKiw at YZIdSS`O
zZlC2EqghZ=rmL*hhN(ty^t`3v;QAdKtFXp>r?JB3NcD at _06*M>Kd#lbp(`4zMZq0A
zM7Wc-+g*CSCfIujh?VUI`(KA_u-{<+L%4tq2m2ZSDLXF8*fG_K#e+DMBNyS1AgNu1
z9}2rWRPDDi95Jx<4(VyP`wXCLi|}bmbk~ogC=Nx1so!BZQR9v7U#Zzj_Q2@=l{#FZ
zh#NBfEVYjVk)2Ox>u>pUxQ_Ko!$AH-EMuka2L1n=-UhkY-#9T;0|O?8qI0SBW3=GV
z at MnhU6X)o;GB4=(`v>Xbik)EH)9Iz_V&UdwT%4G|m{=`cZ&y`G*I$lL*x9MviH!v8
z>15eU7~YhE6bvD&)G)-=2Xt$!RAPl%tt4`gK(8p|9ulX4#YSt3N((c?(6eR&foKEc
z4`yS_LQ|*GMHj2ZCk{b68v at u-qfm(&fKH{=)1=I5(ZEG&y<Uw$To6FuqWd!U9XN>v
z;DB|6KBGb{_&M$?wl^b0vK<;ThUbQld_fOB71#o)epdI~8lh9fn&}ngkig{%ez5;4
z7LBcfQ7gP=e8BqbgDURCx at g$_gYKU_wV!NV^!QAF9c#xCH-EOW<H$h%{#=gzo at ov#
zY<ekFJ)<$ew8jKSVnKAYy}SX_eYA3C*1f0UvtBgz(rE34>R0x%9U<OFH5tT1qfCaL
zsaV)eA)l6T2>2koxrZ{if3kMNF at OzgVwWWuyE#@Fn8$A5%pkF~nzYF%Ye!?-cnh`<
z_n%mSak4(Zi96gXcQouE at bOJ)KT1PWlABJnpUS639#(b)ZB)@uSA2k<Mh8{8k$##(
zHbobH`a?ELE1ybDg~6HmgId?$^*^)UA1EKbkz$Os-v)QIAO7_0H)FJg!$0{WjMUxE
zeY2<HN2is+-CXyH%D2MqpjDLGaYS1bUU>2L%m#t#GQGPCx3aZ|zeH|uk>465A at +)O
zJf(MM8=YiS22TjAQEczKSXg at unKl3ZrxK;Ka0l_}B(wkg8*K!Q9O3Q$Gvl#}Nb>Xa
zd1`Yv#9cl7c at -S7XqV4C?vrxk5eq(Wy6i1wI$+|o9&vM7IOnh7>c0m2u7?y at pVaFh
zcg}Wtx9gyL^SphL>gN-?>7~nbn9{qqAl{CBJ%kbWBiGVRr+0KFmZ3V;uO_~1#^Q~5
zfDSM|cxRRSuCg_ETje0vEDnPiZG5)^YTEej(%`qYg&qv{jR)rbp?BBYbLK0&1NhMo
zruHZksR?X4eQ8U3kC74cg4If0n0W?Ahxfr-0HwC-As*wanp~*h(^$J&by2fr6+2d>
z9wTjfeF$~R!=A>b(>s^OkI+qmDt$XWUMeVc0rG6zkh?VTw5oEjzX#G+4yNX&%iXvk
zKNjrg26XCA09E1augZU#9ebXgcppP;^Qb`|+xGNMSXO#*_{d#)JTfCGmUot`cp9~0
zNR2raMqU^~x^A%A?c8o%y#ap_+Witu5WMA_0H)+MYWWZQvWUAf-je=F%(OfniV+4T
zer6KoH{vCtu=eJRi=y3|&>$V-!RjDwW*@T##)*Mg3l6)&DkWD9E`-AL`UDoP4uHg|
zFc3ur*FAE-?+9h%xr}~!PKBLPos6g%rQ)i}!Qo#}wTxzX9!2kcYNaAr!0?3VMk-aE
zh*<q)t<)QpQV)hsLq?~ZfsfK at aqZ^(()9c_qd09*^x5hDooIvhYHajw`!^UG6{f|2
zU>W_PAFIV&h=M+5^jDnfwEC+Y9JyMJ4_1%oNIh<odK9Dk(k)7VI8zeF3{W2{aUaHl
z#b)JB)QX_;P3fJBzS1>#gkCVvS6ZxyhUj6=A8vh`rhB^r(^aTa8efAI2`70?X$k3(
zPt89DZZECC{gA#@)dC+(L4IQR_Lbhtx(@Ul;<$aK531|F(i-wWra|UF;`JZ&CHg)V
z3n)!9bC5fqR^gjzht6!qZV_r~5;XOs;1whLArtyY%~md}m?@5~&e$B)e+XXwjLk60
zzHvN;6=g<e;3uWcx}u5?A&6KQ8MwZbff7aB1CWVg?={~%t;J`BMtsNpiK5rSfN+Z<
zRJ}j=l~g{cl?S-J5Leg at tK!P`RjO!b;7UUc6N+FJ1-Z{BdsGzbZ-1gCZ#@z0G;cJb
z5)57!J9mACMS4M|uk>n=M$k at L0(gvY^*zD9ahP(`e{|h}#~anKL%)DB%C?@$9H#e2
zAY2zscui!=y^y&k*gr6y46j#u2q!<=ko-S5Vt~+5?T|gE@^W+BeY1fP9k#7T4z&Hh
zA-RhC?(v3(<kB+kC^l5TfXF@^oc}2H&*Kxh0RjdAbc;h9rtA(^@4jrZnrCc4|JWC<
zzI**0SOe-GTysl<`!<*rgIVGi6tA$seTA|XN3ii)5{6T}Fr54X%2<v1{@!u#M;VW?
zjKdH`P_HGbAeDs;P=X?lZg5`@Pq{x_{ZepXD~}4$h)l`b*6&~EJ_wKGUWX^)fpEwf
zxV?0js_p%DNz_SR1U*3)U6JZ{<5QPz2`5j-Rx-C$gME$6mt262qaoxq4FtNxlPZTg
zfpC%PdpDPERDAb^d+!NFrkLf{Y6K9$evWPIb*eSdOWC?Qwx}M7&%kC9TD4vm_^@Jz
z8*oV%=v0p+o}iti&4FzmQoDFg^5)X($j=l>2QkQdbdI0l`_IAkrfb6_uLH2u33fcN
zG}wM`aEh^69;2wkJ|v#3A9RKmz`T(^S;O6pIEFuMj*N)mJ9JlKw;3cE60bA<;b!eq
z+?%yO0f$zOL+BAh!*id59^7sAJem8DlRO)R>`c7jxL2Bd+qO6gS7$TcaFSQ4?#bs5
zvMdNQ$ZynAE8{9v_V5kLH(sOcyOukI0kw5mtJJx!WcVxU`KNQ{A=vk?G&FZ)<a#|{
zz;Qhed)K1WWK$s(JQ$oj4?C^rVhnBy)dmloUmSMN#Rd=nw-MmHGP}7LcIR^=4>-0D
zvGobO4181#i|Ikoj_TAPdWZ5A>c*NP+k>NpSbDvQehQtdf~TVJ$PR-zTE{+vNlk6x
zP_1s`q1s|qmRpOmYf*NsDtqK|mP-BdFd*iNJLqc~hc#`V_FWt~twkCS1`DZzlh$<h
zAzF~WE|pTd8HgX*m(YcR{ollPS?Xr)nd$fhlpIND(G~obt7JG72jFBa0mehU=E8b*
z(Kp~olasVD+t60lYShRA|FVW1z00Y7I$mkZn+?V5Zg;OL7dO4zL!#R~op at 5`!c691
z%C(V<QQj2o^4O_WXGW)1<_PZP4h~#ezIqH8!*_&yO%}`gIxlN&%=MLjq$T&y#C8j<
zUTFr^Ze|Rr45CKqDm{2axVccPEwVBf;-cCW$+N6k)|R+U(A8O3DuP&U6RL}QWt6pL
zFhCe%Z6OR{v|&KlLCR+gMD?u;Ad$9z^smo9N%20d{<RNAk?vp0p=w8ZAa=k~|Dg=2
z27 at u$s`}|*e-iFB^^^2GA&qmxI5kK4-VfCq4j~5nexqoOhhdNYE#+XRfoa}~`kSt;
z<0khk=<zD$mVyUD;qF<`B`~E+?Gn+c%2LzFgzmh0B-kH>@Tp4tVb+gn?ORV`6WC7h
ztm<Z5x#jdj->8GT*%pTFEIjo(g<;jscpDd{m#b9 at bnw(Ec)CSZ*m#K4D_P7A=j at E4
zMwwpfE}|F=*dv%y_o2DQc&Nlg*|F2UVw4yApY6HGNL*f<amU8vCK%ten=PwWN-KAY
zIZa>bjleOj`LBnK%J$LgBi2+s9qteFLPU%kLB&Xu-?}yokHhxF_b=H6RoM7PWDnkQ
zFd|0H0Fk2JYH|j+11Ew+M%h(HGq)?oJY1_fyULpJ{%R)?yFv8N6;AbVurHV84bVSe
z!Ubbg>kB;H(>ti{iqXDt&JAtQXv(>$bU8yBWcx#8%3d8bUZUIwGB+eY-;i95Oqjz(
zlFJdny&UX&0u|<331)16Mj$s*Z1ij6#j_id9V%XoRF7~{7o7jFiWlty3WB$z!c(56
z_BSHD9UU~@v;NjPcNjtA&m)LQP0;vnI0Hv_hOPub;uqqqOBr5j at C1vK)sTgASf*yU
zLQ$VXoT!Upu(&Naa2efZ)?l$!4F)*+86NloDu?x3JE^uxVx&0T#>X;V<cRGbFE%4y
zj2Bb?U05c!L88-(NI1ly49o0jMjJ0)L`TlHMUZ%sit|OB_&X{e2Sl^QiOhqOnW~^h
z_U$QJ{#zj&GF_z%J3Uzr_Fu&MZn~S=k--9u2&&{}gx-^)y>286J!yui=<#38*zJHw
z%R>>QOC1L1fq2 at E_YcEAq~5?EJ^qHPpAGiY<)&Vu<FFp`5XA4PS!(9+Y#fV7&}Swd
z=X)dB^-H^G=8B`%@2Ek#otosX28QP{*uNd0<9Kgk%-H;NLfIHpXm~+|=>Z=LQhdw6
z3^9qDM;=Mnj;jG`8(F#6Bj{&wuzDA$l^se)<adqAA%)s{La{YnvDSEONhsbKS{w_t
zgr-lMy0|SKYU_x{mc_bH41sQOOHW&Cv?t!(*0JoAP-|xgE)%Wsw$6^w((cZcp^ij*
zJ9%|<#zU)G+S`_pIZ{^st(_}ZwoL7bb+vT2u-x{xo_MHpX$bUlR>anxcIq6kNW at MH
z>GFC`3 at uK?LoKcGL`!@7+R*Zr9+r`ag^n4+ACkpe+B!msj<){;0&we5nQ;MXUpB{-
zPY4`?imqPX*19~@xhmGZw7qk6571E+Kc%IsE7q}OOsPt1OF9!cngJ$U>5K(Bmo5#|
zcdTmb?(A3@>!4Q5*^R(4q1C8CcdRSM+M^5 at xgKEYDD||HJyg6^0&l99`&IL%PX^gN
z01#(hQ%HbVvok&kGjDxm;5(b4Xf99U3tbdWTSW8+p?{|H*)=rH?gR5Z3SMLKX_-|%
zE0edp8*Dyfr=ujzE at YxQU64_h(ZdH6l$fCMWd4jQZj=r@`paZdS09k?R9i<$ld3>h
zmB45PBo45dGUd<;bc<zTE!$Xn5Kp(4M^+B*&5DuTD6 at 9M$Y?WE?Uyr~NsYEYX;LUg
z&wtXzj4 at Y1KDHKK+s;BvHF1$OUu~jz>&bvZ)swn1b4AQo_E=*gTw at 6I5=EN&d~@ZQ
z%O-G4Sc_q&`-*PlM)hS4apXJXoGID{PC9<eh<k!%W;0U%H;&SOmWIdkefx6u|4MGb
zGkJk4^UhYc`Nv^d0q{XD<P<zUF7Q$wZXeCRJQvqM^N+<X^L;OzGw1iYZ{+?VnDd|G
z3-$zal7$6>!Mq>shv&N|6#OxmbJP9>HwN?mYhuBF2J@~zpy1|U&UcFnt_kKnSyZqk
z$X8M?Q=G`_<eU?x7xd)?Runvt8~9;P!Jl*U9?2>Ac5YyEZo!Q?dAH<(=_~y6LrP<_
zLY%`+#{H^-_woae<rI9YAn>!?f`2Xu?9DH53zW1KcucZte6KCIZCv1)oPvkP1-_Gi
z!L#E6w~Q+o(v>n~laH?o1h(cBd?!CJkXta2AK0AFYg=u6Pd<KjAh0c`;Kv1lf6lw$
z+JeB<1-vGOQCsm;6!q1dg5Tx_Ue77`O|HycREB5k3vS2_?99=E<sZiH?;WQra#LQx
z%>_9x<`vvgkoS5)!P^Ca-f?&?>U*+-``2?8zc4v4kYDiL<iN}M1+PsGe0O}oU6TXu
zgn}m~2ktwd;CGV)zbX3NI6zlVo&r*ecfKz0u#@n8Lr%fv`vtz9Tky600ypOuyj2*u
zndOk|_%hQd=8K+$@9_Q=+ak$M1j$D+&NwN(za`=gto3D!H^RxoaU}n#_;F!`hL}h)
z++ZZ8P7Q3a!N#vf9#`ume6n4Lpvsr;tm4e^25`Z+<?zUeTBLjt8Jy(gNOD!-9k|@c
z`A*@;A)LQ6p1KnX#ERKq{5+g{ZAdOFYe;rtofk{N&tnbt845Q^`9QS+s>4aH_eR`3
zktw?{@wn_@=hyJ68}QlZRNuS)CWP+)0?s9scx7 at h@#Bd5UQORyiDl$;nx27hD^-t1
zDEIivoj83H48If!I`3fjrYz#_y$~BRnfF4|`i!{$9hvf)vk8;SeH%8k;er*qbeVha
z$X3=TGOz)SfLTkVdQC~Znvu5qo^lynh{XJ*846mCgSkVIWH%@$ppvL6*Ov=f+0^-9
zjJOlI>MQq&{hyapt$0F=duk|DC#`>HU_qfi;D=o at Y=`4T?%v%vV6!9Gw-CyWB)^OW
z_f=&$2^2}5;v~<6cHhLoTC<8C?7ITY9QXH-RyB>|PPAu}CaT@*LTC|tV#ARsdz at 2M
z%_lmiBG1N4+o0+g&r-M#s9L7mW!Ml-(uBb)r$G?R{Wl+vZ_M)$+4tUEB0_#0myass
z7E?%m|KQr2kcWFP)fbn<@wT{j%?SSSVqTe(ToZEKyYSAYU9+F0L^5w9ImwBokn8Y<
zDX)Y#Atc_nA^7!oAU$qW9k5Qn2a>se!X0<;*Ou at V(CtpJ?g^BbT7(?w_IG+Wlm&u)
zw}BMf|JZM5BTkDXSHNao=bLNLtWj%xKdTXx{APF)<|8b5BeLQKe>Yw_UQILCc2N~5
zs&a6QK2YCKe3z&%jz6KkU9g}Xk?IuYwGVM#i~6GJM602`n2HWN*n%0|U`L|C4rO_m
z2_qQD6sY?<>%Xof5DwNqgAbNoQGcim((07y?_u|M%JHZ-4tNBEHU|^K{9Y_%peJAz
zgLxy|X-KX_Fp52`!BAwNr^0cusp|Hi?J%Qudf&r2hdH#4-uJN8y$yMI+8nP3prbqP
z3M>w;!>h_=c$JcK(G_ at Oj@(w%sNLPL%Fg3txWW;P=aC)n<Z`i~pKs_mNxmlu;Uew|
z2ct0FJt at -xDqiNI3Rm)22KH&t5!ED$b}A;9VN8_EaK!7sRPRoY?7{wjAamt2c4d at _
zZQnj{!xNU at qgd@x6HB}QfaOZQnNj^-mbV|n)$c15%jITe_0DGUGFG2j3rjM5w1yf{
z)6}6rw{VlWn6u^~?R2=PuV>6~%6NN%uU+ZwA+?^O-fg)K4V;!&=eL<_L}qLyrZaQT
z40GLiHL2 at W=73Xuf3S~dIPoGEJY08KM0pt4r&8`=>>6RLmUxWR9ZDP#net}kKF4+s
zmpn}OIMjXhu2+vrt&;L#S{p}2Rb#2wdbFr?x#>oUe^FbU`*v!7(9&j6kCB7*#XUT6
zX)5S5A<3{x{8CZsoZCmfVcURh%ftt&=jhupf4wulMayGmu8R5X()N~gh6VHHof0ZL
zXK|t<o(NS=FP~msF?D7_-A-FSZAN*;jPlAU<^eKcpCwR?55j`Lf-}$It5t)<u*|0t
z&ulW~Tyl0GXH9X=VH3v}Zh;wA06Sbg!FCbu19OXtugnb>m0XcmR}|{aKclE3_xTA$
zq1vL7+M?pQMTO4(Y5JT?8Y7C^cpk<K9A<eo;--`c5`Ue5a**%WbLSS7d at XNoQD`84
zZc*8l1+_&LSB$GIs_GqIS9D!YUTe;TqN=*0irS(w(0~?sP~zPEkv)XZ8hn_z@~n6w
zQ}6gI#$Acf?`wHq&t<vSkN~L_75 at n3E+`tz$-6asxo6mN_h^=Zsrc6A4vs3<0p3jA
zA)Q8o536f)-f{UwRj9qErpOw>$MX6sw#l>Ap+2p<I_hpgQCD6|URKpD+&=_<KQprZ
zhi!|ZE~&Nv_4bIN`6&!Xl{w$9z2 at sOAI!=7R(8GBS-q8k7t<;DXuUl+N^dMTVrW*_
z_EP26``O8YB9wbA%bh<)d+Bno`;c<WP;Rm57^`s|s4ptMB6mSiNiS@^G54YgMJ07b
z#kEC+wfigG>@oa~!?&+)Adj)-1+?Y4lyTk|8PR*RE!UayGd4BWmX{kEuG;&Si~e%O
zIMpVq4_%zS+<IH??S`jcA1Z}>C#u2%f%$3O%-6aJ#g!L;X4LNpEi!aRkj^P8UIe at X
zmwd;WX(IK8_PjC|-s6hATKbc^qORN;k3XpcndNn!wNd2z8vVrp{l%5}=qXpwU-XU(
z7j4POy=OvE#k`_2uuQv&I%VtEn6fi^-ICKg?uvpd^9S<226<T4prM)WQ&u=#7Nxxo
zMWJ+A6k0I^K819)NXOx$SfXEvq5?C3^DGoof`61Q>e9N%jlj~hSDnBAS at sgD1nJLA
zzSZoPs!x1??`+P!TX+Au(Vi0?jPFbR)$m$o+T-iFXiw>fl?^FhLi_(Ac#ZW<3-- at _
zCu_IEgA4Fr!5CYgPn)AZtH5y%rb5`B(vzn?%AbX4$3})`Rn*v#Aguf2M#IlV0Umz!
zS;m$#iU#xYmW<0<EA(*PA0IJ1*Wq5b<zSw4lJr%34b68!;3+rTn6{v3Pfp%=I_9z3
zOqUyhk7v3FA6 at RAQ9hF6_U(oSN6$Vq(OmKauVn&sks~i)Dj={!aGfh~6$6;(d4Y+7
zQeUn$^o$*tIKJDI7bvoq>F*nGl`Htr?=U at y56j(X{1L}%rXuhoy`^J6W?G=|ae+Oi
z3Tm7M&hp8pf(?npF_Q_)If at VU%EYmc>E|ei{EOHZkT^CmJ#KKvgTHU^%MEVjIUbEg
zKL2iTEAM#*f5t<9sloR*^`y_RDK8MTm!rP()UUUVg49i3fWPE6HsuA_nxoSVrrZis
zF72C%t6r3!hliM~o_L)X_zb^BrLBrSgIilnDc^!E3Qu}P;igf<vp*YLjTr*pYw)85
z#>@8%{#g&6tL$JxfMdB#;}yPtV7dfxJyGF at c~JZ|o}s7Dm8rzg7fTS=M;iJr4_>P9
z34uWme!QW-!h>s{I3dvN!DkviTRiw2g&QLl&%O%WD<dD@;Di6l2fxb)528P1<3HI4
z|2*)ca}Q5TSZJ>1`Oq))!N1{yf7b_p#s`1F2QT-*b0KiH`p);k&+);(>x2Km2Osgl
z_d`d^CQr}@KiUUB$p=3j_(AAQ6~?77{%30Tp<ia`cNtg1xSh%Mq2FTY8%+mR at iyph
zHu!@EXKc;%l)>#Jld&&T9$XCN96VCr&(~jpFB!b}C=FP at a*4q!46b5Pkn9AWO`lKt
z;P=7*u-qEsm>8cjJ!kk|cZ|MgEXh;|mv>BV#-FRW5BRx0`1QnvpI7l7=ugAYn@!Go
zA3Op47%?uWSPy(=9FU#Q65z*(@q)1#(_9SU*~;w$PCe{8R?{)|Vk$sYv(eZ4;8y`B
zpRSX1e#TNvhl5ErJ^^(WpkqmUTSpAbBg=ZqTU!Is3(l-w9P4OZzOtozMdh^Ug2)%<
z)<&YyGozK26^$+3J+W{{eEPKdvlpJ(6rUB1wys%ISy?$vZq<ido8py~t;<`wqw(&R
zws=ptwZ5qZf9mTS7q&LGeP9{W=0lQ2omk5`x22o(ACJ1cwX=Q62WFX}D#23D<v9ix
z(KIc(_><&G7uFQ7ik`g~wT;EXpF}N9 at flq$ZQbF8O(#e3uO9lVh&ILAaWtf|CmwF9
zA~d5t*3%PKk6RQ}UlnbL#=2X2PzmIiZbgW8bS{Z0it at Ie?w0Zj*6r^k;w*^R+S#=>
z99djZe`ZsCbXrC9>{y~F7VYeg;zUVjtCE(ck-Z8{XGHlVtzShRg}KGfUQ`kN|D}Ry
zOOt(5b;S8N0ff#%Gj7X9HN8$9jS*x^vXSXtp*f;!s9sSSZOqE at WYvQVUqPIeapm03
z&UR7y;%uc)R~!|k;Fpzj#==#N=qf#eWmA0m%9gHA*72&M>5j!thK`l)ig*O5zCN44
zvy{LKV{4TUp);`>``ZX(y>d at taWotq?X$;dJWw8)SHVA({4<?@X7JB6{yCX{X7Nv@
zrcr36CQuos>1#zeO+B49U3-+7tKgtIyFZ!cp=x-#`nr?rSAknod|G8&XOHUG(e}2*
z-7Vc~qir2+aXgH+^>nsQo6Zw(@y>QdJfk(%-L0-FXGWu)coJ(_3HqK`cRbthQ-3zS
ziyov5b$C$}4y3+mX0&l()AVS208H9r9Vo6R-qN}v+PZv2bZJXld!X*T^6uEu@@RC~
znl;g`Sa(ln2M*cA*G5-W1mc|uoJyl4pTO-`!#A!>#BmU<e&tH^-<4pqq`h$!zds?n
zR_Foj&R)4Purju?wQH@`QFSyLU*6rhI@;d33`Yr}yUuPiw0`_S979t>bV*xJS0 at G@
zG|xF5tJ^x3z^nHpR>nTL==yjcyU|KEMMvw(u205H$%hku?JccBu`sZTv=(9=%i_zW
z8ah@(>4;@oqKjk8+B%}GE%Dan2I-C|-I+TaL9|atM at nP7abQ_29_yfS%ZMtAKW25~
zo!+QrdXqZvDg9h!)WgirYkSCi9d=eaQ?Br7pTHRFN3)(8?h#IM^s~xY;hsg^iTLuh
znV{^GMVIJ~I5~>$*w)k1-jPuKNDP=hqYR~KihnA;Y?|_ApBA at D%Pk%Jd@@g)9??El
za5-%Tx;aePc-5#r)f+{xhclfORsKbF(NWRak{DbN&)oV1ZCcrXp9<06iV7`n>xj!*
z!9!$1Xm!du+7?H6%@K}~fT}e|DiMsfb^PzG?le?4wo<vlsHkiB3|6FR0Ye+qWmbCD
zFsia2ri{9-FD#-r0$p{6gBpLMEpU<DvBfRzEgh|~#Xg46gn2;I7=QLR5AL)*e%yKN
ztnL^hja3+4m_OrUs^B}Dx)2<E!s)Shvio-nGd<NpPl<IS>Vd09NY;k%=aLwzikPbh
zKI&w>%%JvIPQ*3dh)}7^;9O?n+P=l at x($~n$_2g&*G#16YO<xjk|2_o{%Q>?dajCE
z`s)ntrN2?&Tq3dbw+LLyv(4a?hihM!{(c{N{t^un>A93<>7OBp<dug%m&8PRsh=`~
zd+BEgda0k&edu`{k%|1JewuvfFBG`c4}UF>$tzDn at aIyXtuJ4=V)D{|Mc@^9Zt0&C
zxGcAef+La7G<+=m)dJ^UgvC<==l-z8k1*?R<U?Dv_$dOPDeyA|F6E3FoW+C${g(y(
zEP+2Da9OXV6a<N1v+=R=+$nG=|6 at M*9)Zshe2!Q9I-0-avqIof51R!p_3)U$PZj+C
z1N#|FEMDs8K7&&~N8 at Abg+t~lk^VG+|0DJZn21X`f8>J?`{3iTzR%?4Gt&oe^uaIo
z!N2Z<|JVn=#Rq at M2hYd4d^Y(H^ucR<@C$r!?ki;D|9v0)HXr<6AN*|}{6MVZXDjze
zAN*_|JmG_1?t_2d2fyD3f7u6r#|NKm*5|$U_Rl`}b|3tC>?>r`PcHTkvf-}?{B#i5
z{`DUA4=lax*M|l(xa`++1TN{D1up3y6Syq*+Tsj<$w&Pv10GR7lFw5<^m_#^=?C~f
zj3JSa<p1vim-LScT++WGa7n-LAjN(R|K$Rg^htqB{x=F-(%&v{=_k9)ejw{rhmUQ?
z8w4)--)wOD)nf$x_(`}yA|E-9tP{BOtKam&@9 at FDdWd4L_)Gb(H at Mf&|5(sVKVLdI
z!$;Ql0)fl=E;G2dzP}Olvc3nKqZ8Bv_b#nIPZPM*!?`|qj}QK)!6}c7)7}yEGHx7K
zqU%fgV}(2i8k}-U`XdCrjMI+up`R-7lLY_S0+;+32>voo`+^VsGJ#9IZScYO3S8RB
zL1zEiYbT#EIQ1ayWWB(pom?+)DbIF+%W}&P1!E-gmv%MV;FPBnA8RKuK`-^06u7jv
zy#kl=6dwkrNGw<4cL-d{`G~>2`guaoOZ~LaIFP*c>M*#sUe^kGS+DH^pACLi51%m`
z{NykD(L906dR^#)Uu$s6Bm2t_1iiG+e-rewzx>*V{vJWks#y7d=R^Ofz@;9Z7r2z?
zRl#5Om$!ZBFFO)KAW?6!eXlaOw|&1O=w<spCvYj}TLM27W!U=ug2ExO+?n`Te2>5z
z1YRA&4HD_k#K+QK6T%G=aoN7Ng@|fg_M<8W_Xd~sT_f;1Jh%M6EpS<{-wHe;=wA at H
zlqdHXmO56>=>nH>HVRzoXO+OE{JRA%<vfZ;Y08yy&K9_ovq#`ko-G2G^4uwKDbLK(
zOu15 at 4-5Q4kXSvd!_v6V#pgJI7w`rtA0OG at D}3;82wdvn6 at gy_UbftcpCk9N?Q*8T
zCH>t3Uxa*?&(zN=HcC#3uM_zBg8ruhm->I)2S2hb!(Y;$;e+>1$xeT*4}OymUUhtS
zJ~s(m+R09VOFKF21kH!-EB$K7;A~&%$4(UVRJqmjEFb!XKKKQK4^?aVM1APLC2*<d
zU-{rK```zih{BLqFUcqDgFo+szvqKbpc0Y1{5SdF`%$?_Ui}vt+^hdX1wBp7>g_lm
z`bt4hQ?m5cKJ at biF8k>sf%DSxX*M|Jm*d)UANsomF7^M0;6qn!`Ts at G%W>^}flL2Z
zLZOi;kK}WN!KqKl=RXB5>svymNTip3W~RWU{2K)>>E96eBJi^Hx}cKWHGhf!NZ`^h
zJuPrq?q7ZI`O`A|C4I~X|B=9 at -?&%c(r=u~MN%ZMonPdGyFU1hKKOG2rwXm!R^_Q;
zRr|7Ri{s}eRARdmH{CyQ??I#Sn7$1>;=!qFrd=NVUJVC!d+=)wzSo0S=I96c2kUPu
z&lW>p?7=4*`olf=qlUiBgP&&Te|gAg{)e+5q`N%$B!mCX2Y<qY^M7Y#I at ZjCto-L1
z{3H*4rom_X;0ru>ouPlh%ttK$^#*^<gI{6rADMX7(*LW$f9}EU`Qxt~qw8VmpELB|
z^x#h#`~ed$S^DwD&ZY=|Lc2QA;3s?V8iUt*aM$1s9=yTeU-aNJ4IcC0*Bbnl>7(m)
zgTdeN;Ex%696LXftry>?VPajF_+5>U?MFofk-WGGuM~a?o?Cj`&qy!(sS#%kAI6GI
zUj9uQ9>d at EOE3S$f?mr1Wr5e=+RC|F;L;!3eo6kdg8sXLUh at Bez-t8kzYARQxBkP+
zf2W|A{GSwf4X&;HFA7}p4_JSL=Td&_S6J>`!H55kGZXO|d at TRN4W0{(pWVivru`W(
z$$z%sBjx9R_sZnu-zab?e at x)D$Y<sGvcRQXb^74z1TO3QO at T|hy;|Us|Fu5&4}9<&
zeDGfgT*~uXflGNF7r3M!_Q6#n89hrr1#CQn%X(SA&UTTw9Uq9xcC_P(7cUk3CH?6F
zm-1MD?=9Dk8(#i)oblpc68vSk{LfFBNH5E^<B7LiJDzy?^Ic;mFa9qAm;CMc<K=J1
zA1|Lf1Rp8?qXL)w?YQLSZ^tn&|Ca<G$v;>4d&%F9Z(jaEK`;4yUf`0C9S^;H>^MgJ
zY<z6Lw&SE1x8otJ!H at Mn=ZSKqJWCAjrSI^ex8pF&mGb|i4<9?;dh7KgAO3P&mG!+%
z&`aEo&t7@(Lvbn*m-YRNz at _|r-<8QLXC8qpIC(PhvGl_iDs(I!7x*Gv+jhLu2mhS#
zSLX=&3w-FW^ugZ|xa1QO{G~kK_rdM^&aCfw_*nUiMSqce77Cm(iKXY<hlzYn$H(Fi
z5JVz=E<P52lOPiDFXChIi-nvs1m5F=Z}h?cRp2KJK05?1=WB8tk at R_@zLLIP;8H)|
z6!=_G?u`PM<I8;lm-hUSz-t5_`yMv+CiU}YL0>EA^M(D(eo+7#Ci3|bK34z4n5d at D
zs;kj|h*t?HWUg7f5kVnQftx9~LgE4^y?yWgGJ%`WN+C8rBrRpN=^=ALob*9+zgysZ
zw$aqz+MA^}+lYZ0V-J?UnN|eC0w;g7JQY|XaOSb^@7v#`A;yn=fB)Blo_x}}BM}n6
zSTC-LFzqLB()TG8duIaYrG3A3s=!HqyP;nraPqgm53ot#q<_lLUn6i{+V^39ByiF{
zZ|LoB$nY`w+us at Zi-$hf)PIs`2R`P<zCUZnJB!=*XTyS?<xVhst`a!QwZCIv$0PC~
zeW{_pRnYU9eGm68fs_73LqCyBkx0u+`+Eq72%Plu4Sj{cna94*d%g#^@AGzfaQi;*
z^&Z^5pZimRv)nUHxw{3<OY0Zj6gcS at 8~S3?;VC0O*BygDNS_rr>FvCNKiA1bTC%ji
z^Uxx2(qC%$Un=l}f!lPmz$aOd-^`3e{)eb5{b!@VCkxyaI4}E5xep4QyzKkDPY9fs
zKQZ*B<26%TFZ(+ZQw2`?7Yw~4aOSb^`JN?k(!XrzuMs%)W`B>up06Vh(%bj92L=5o
ze_P(Oc4fR}aiF{hFRG~T<@TyO*4|PckFALZ%9pgnTLR^adwK%p-JQH4d1ZOk=v%x}
zmd;b2=xA?S5o=!?C|}l!*OJz>#=7EBl+YfNRG;qq8KQW_`0w*B!iT(E at xMdJPveD&
z{~a~?8 at vl4DvB2fyW@#2W5axlG1}7I-2yW=9iz1;UOCe|Ry_q>q8#r+x3rgk(A$Q1
z6LlrutqGLlr~YH*_$|Vz>Rm;1zpNus-qqcS_YvbPiaj&7Ji4^I1+V3mFYCsuis<a0
zLb at B{)qz>~)EI1{`92ok+{!e=K>FJ+e<VwO#`PaHzg>Tn<ulIzsQH&<DW5z)YJRI;
zSw7=UZ~hQ4x at h`dnKqi62 at Ix1Di+tg<gz<?*5D)4`7wRhOadh8pJf#C2B}1U1wMyw
zmT$rigW{LEJ>}X5W;n68ffI2>o}V;7bwZxg at R4bYDgPA-;@Zk@<){IcE&qB>mXN-!
zztVqgKKs20Pk8Os|71?8kjC2v)3+)vFqi7<3;3H&|F>?`RC~=hO8wIoto&C0t-x45
z$6uL3oD?D1bv}KUu^)SX2`-fU9tJgYG)2M^ns2ZD at VS!TlmBO%b%qL)kMeUa<CXtm
zVA;waH09ghSut$J{PxK2 at gQ6IyG;3x$;k5QXT0U}e~`*ne$8n*qy2pr!)8qRoWEx)
zzs%J+22Dnm&-l?>{#@uSTlqh$(HZUUz398KzrAuQ@@Ff5*pzSQZ!DkjsJHwR@=W=*
z0P{UKPhafk!M*MOIpkO6d+4rCYQWkl%jewGTmEUt&%GynjY<#B)3=u1KD77tyBZm@
zmH)FW<ueYo`K(-LAV2kgkS)M`?=t0wJh-jD{l3`bx9cfs@;ZHG%d@!m{(LLHr~llW
zMgGIV#OAm1bA6NY+kTcV$CO`g0rO2-Cj0#jlV78mzcWq#45F`WK8ybV`RSrO;s>fs
z{*Wa!-&TGLZ#Ct6^Pg|>KWO})rT6ClCGzLvVT~m)- at A<d?0oN7;78+Q^IQF~KHjp)
yqAbF{_^)tGhEiOgfR8sn`v*iAlZwyLkYf$SP<Zu6pOh_s)j#MAzx6!y=KsGd)n}Xl
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.make
new file mode 100644
index 00000000000000..871e0bce58355f
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.make
@@ -0,0 +1,2 @@
+# Empty compiler generated dependencies file for benchmark.
+# This may be replaced when dependencies are built.
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
new file mode 100644
index 00000000000000..66ee2110c21b77
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/compiler_depend.ts
@@ -0,0 +1,2 @@
+# CMAKE generated file: DO NOT EDIT!
+# Timestamp file for compiler generated dependencies management for benchmark.
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..c8e227b41006321761a9241b7708bb06d6435528
GIT binary patch
literal 52792
zcmeHw4R~Bd+4iPs+Cbav7AgcmSa88av?eW-1Q0e&(w?Q8G?F4!fh4pEDNWm$CQzVA
zU=!%!uo49Y1vP5X3iKsfY>^_QEi?sQB;a3#7YQiRwfq#25}`ETeb3L?$;lpmMBnSX
zuJ1e7wV5;bJkK-F%slhV&zW;_MP+=>xU8(~fV#2*rv<Wf#0c+sARUQ{+i2kAK&hbp
z7~+TEN4`Vx%UAb at A^f<yKOEr^>i!c5k5u<zgh#9UV-S8)-A51}tL{Ie!q2L(2w^dP
zyxs^N`F2zA)&AG5;HL++HT5w5dN7p3v~9to(&@p_6k>ud#k;29Q57Ek*Mnc`-`3PL
zJ$O_XDFWaxJG<<QWoMNwILor%t+f&_<y+1Kt8`9ou<KeB7dby2v)_!_f3WOFD~tcy
z6bpXs*`{E at Zy{WYIKw%0==I>#b0WF;J1sKu+n6%}`b~>~boq-Q-4S!DkQNdYU)o{W
zkGvjS_{8h8gQ3YoF{d&ROFWnby|w^-&MMq$ZFxJ}vj4!0UIer=R{FcPTV4;I_mnkI
znM<7qDnkt2JkJeSrCWksn}AWl;HyuHax1;45u{f{a-mnuIg6T1i;T`4xxOAeX9sfz
z>BCfyx&GSfesYzi>mDTM4YEv+<7NlZrr`9g!E3%Fbos)Qmc0uJPe84+a;?OJ`CmD=
z?3}W5%g!sSLo1;jEPF8Vd=~kvCw5r}46>d2kyZchpD>@3bw1lg9*8~3e3<F(-r!MD
zwnYEHTv7DO;*sLLNCErQiMzM^OTHV`551>Oj_iV#sIt)H2%y2#{E?B7;8C3fm3=+T
zrl(Gig8*$YH6F>;Ot at u<*ht%i{b^kXq at 889CmK_MWv`CpTiqkUu4l%f4x9?aoM^sf
zS42WqcYm<!MFofAPHTQu_ugPv9gr&LYlwjB<A}tZI*52W*p-AqTFz2LUJiC`hwgEw
z5oCW2cAbQjDyJoa7?OU77 at 8V%Pj*b+eU9u0mNPA4IhP{qX^~xLqx=$>9Re7(l4lfI
z_V|cZ`gpKw9VA=MYyb;T at MLS2s0Yhg9m&1F25B;yI5iUJxE<MqV$S8^Sh5QA$f5M{
z_9?LHB9~9F#O+s=5Rh~~8SL5*IWhb9sk4M4mqCH at A`~rTl at 7E|u^dEnzJlMfpOyS9
z-qqC4-ko}F|Hz0+{bO3EVD~|gnOY=T7<Q-fe^F4ddb;lif4a#mXm2Gei%^$3cdz!A
z(q2?`H3Y})7gC+bJ?312lFuzd3rXIXGuNYe+#XSyKiysvv!6{(2OsS at hWZ3^MWl!g
zNA_S>4P?h)BV%NwweO09rpkUPHAUqAHHesl{Lj<*&l$t}mYaWW%>Hxghwnmvr#*sZ
z8_irDb0jkjLGY-mOAGkCWuFrXrQ#G}%evRXJHCuAQebrYxc!#kcL}z|QQ~}Wm2J{h
z=FK%-Z9ieI`Kbr?jg0g(^+<mWpA45>YuWESK$B$WU2Hkyk1Y_k0dH5_FEe(Q7Q~&E
zXyH{wG5bNwUKO_N&qS=myTRZ!SF%4P-pvYjABDTJ;Km7MYf$+yyCqVvef;O(8dl7U
zI at y+US$=E)9Tu_!yy5T{C_^n(fiky at z9Nb~-aaL6|83VfY(sQ!^z)^mxcwK=S#Jb`
zP!ug7^|DbN%L=Sy6slc at u5(#94nvGXx0ujvJ at XQ}-N4L(8z-(QFN)hs3uY_LDx(-X
ztbuZ&6+)quogJK79*x=OA?KC3Fm3vt_Q at 7<eGv9y+2v4c89WcVK?@Y6L&{xj9WN^`
z*nK<lqN|JBLq=0d|IM!V9E9v%A>zW*EQO5SM=SsSw_*$e1FCrCsOJH+NCbI8 at 4v_G
z{URmqp!S{1!l@##vL9H9evlfxtUS%kdsGg%_p0VZ{jlSt&W0ueqW?x#!V~-58za7J
zKff<q5VQYrmi-uw2=>!F%6=9W_XjtMIYw81`vUhi*mXH-$cX+IqGDu{?GT)rop^U*
zuxkKt;@t_sYc9dO%Sv+o6tH($i^gANWeuJ-GK6_YJb5BfbQ4jG?*8`gSOX$Q6Lz!e
zxK at o<WB7tyq9xyhH`x6pQQ4hBvNzvg*D17wvHYn|0`F-Gt`J&1Fb&)={+jU!gM}55
zsL&h9t0U2v!!gpvP>gO8oLU02s<G_H?K$u=FoD7W%YIu-Y&cW76k{6d>}kx4I3$b8
zDaLG~;8EHGrUXZ9fl**iwD1wDbg=Ce(C$U*Z#g=@F6S8M{aK76Q87Apz=lRJUppN!
z%YFi+e`k|e_8#krR8w%;%hs0X##>ph$#JkL7{X}YA8HDo^H`Id?QCfZevGr8EmrA{
zj%P8Quo6T2F<EJ!${E9U%#AQ*6Z0ZW49?pQ;SXc(vm<!TGjJQP2fxq{bQ`-;2;C8o
zZd=QKD4tw3&4QDML8GTZnZe-HgGGNyTpoaZRDqmxz(wP)j%V$GW%O9dDF?hcGUCoJ
ztt8A{bfCZOsu2mO at UXoU)qD!`TxfJ(3)0Yin=N~%(S6nUpPcgAKhRt6Qg(!VwlMyK
zbo}VI5WhYhe{L at Z($%`3Ca3%y^gUu8p!DenfGR3S!9G_JDY$4QiUNaZM{yGmjkn98
z<IGs;tHJIdEe!oObU&>~7*6VRAsD at 5%3;*wr|Eo`Am80LrQ<f^*QDbIfIii(^+HY}
zk2~m_z6)_ry at 6ygu}Dt&4ex)26t_NUd9=0EZ5YMS4{0iF)znNu^=f}{e=0{i7t8}O
z^x!XMLPBelRsbOYf=s%cZNmMCb`?PK?2u&-TlS%e{b=NEC^PiJ-+;Z>S~TtFR at Nh@
zjXW>g1#{Z!mJ6z_fw{TtS=;AM<FY0ixVHc+pzU)HDr~YL45?hfZJ&E^V4LJCyQdle
z6KHWw753ba;CrC at JkUiCn$cvh0$)_}MP0u8Mf%)>W;WRuXOjD?mJ39_)lK&N(dh%x
zP*Xv5A!Q0pqtH~Y$I8xTEynB-wUny0u6$|D#6ZAssa=s(0N_=pPPClm7 at CfR>T>LY
zV=UZheZB_WH+c2k5N!=~MWQSfE)4XH)~hJ*JJo%#uq#r8dxkYCY(;35?hbZ!U|nh@
zyCMR(a@$Ve%5w at I#U%2GZplcIisYxBMy{}nm~$G(&O`1!4slC4O=q#P1IxKPQbLwf
z?iQ*ByKcl{*urEXu^o<Z4%%K4&{?pH>?FrRaL|j*>x0E{k<k_DQ$kq4VArQ01n>kY
zMKOSTh}^5l?d4--1iS8naR|O-g4HP46Wdl%336Gb&jh=+aVWC4xg$!j`!M#(<mXw<
zY77c?<)krVNRT}?g>HfVe_y18jpTGi*05?YW1q^1MNrS$NflC5ohDV-OSOw?!H>1N
zf`*Bhg8CFmvrE$NCFxNl^)5-Tm!wsZ)VL&_UXmI`5_L)Hy(C47q{JnOdPzcpq$?5-
zHLq$X?4{bnc0#r7F>5E_r5aRJLnhS_!BG_?fUZbCL){)CVp8=es$P>yL`<qyMb&9i
ziHJ#6qp0dlDiJZMiWF7Uq!JO6Dx|2wCY6YoRC`#P=%@jcN<>VmK}9uW*1d?BRIN-!
z=f>LiZsAU>LODC7+18ke^^CZQU6GJT?3bMRjOZCJnvx#Q7>!>EBl*e)=?LTYurVOZ
z`7+AVM*$ob<8&;Ry;bxxOLt;)V07H>xmfs^>s95foa=<=i8;%l;TFqQ%GuXNsF#!c
zZ~UcOrhDwced3>(Bi(-#+{MQAI}nd{VG*z&<1uTMn#7ZLyKWE;dI1)t&@C5p?|5>p
zsFqz1$N~RuLGRoe=?5FU+kKIH#LZNU{BT3}MK~r=e%BYVT}Ziu0AfxD?xiG5d*gO{
zBwrSo-2eo1?!yRqVS9sm4Y9RRv>`wY2bHaej)J)8Jq#5tx*6gDibE*+BIHEbu`mTI
zAt?GVz<LEn3D$_NhtWlWn7?B5P++eD>k0NKuwQ}A)O#ls;I&=qEX$I{0-zOGK5uY=
zF08SVG#1s^!ZcQ|u~liTQ)4%$v0i~e!9Luu@`e#&I`#?X$HKQ#d*N at 9C>$~3ogxu6
zB^<MI<0#NQX~F%x1vI1}mUmA&nb|N|%nB$C_xX^<i^b$EpdtlP2{CXW6axv;qG at st
zBZ1)5TO$i`Bg}(F4BAzQ7e5JWM3IiAY!-0`KpJ=_LMwTnun*ExhaO<Opu^3)1$3)|
znA~gJuQTrZ)P0kEW8 at y(gOs`OBHN(8x9^J-C at b3ujKvya2%24*2KREOTH^URQVuoV
z1Dasr+DHJHC?>m!=mjVS&DmY^qL|V}Vn{_*i)9u{2T_V|ZKOz;|9!%;xd|bZP2L%)
zQFx8udqv@}YlXL_<@ITKtkxct-jh!6H`Du6dS5zyP^WWGyNnfw1`%`K;=ODcInMX=
zqROzZvQBhRR8KPqG36M+EzOI)-$KQ=0=AqRg_&7SXAkgT;hm8|kso?4l0{*_mdmVg
zF<&d$7iF8U$|wO_5U~4If|Thn1!{)1We9~NB?K%~0-T<8f>$(>eXB5*rr;r5yn(7f
zwH;Vb7-R-T03eTnX#AU17zV)f8ip{6UWG>$-m36*3a?jqkHYU!c&Ebq6uv{@y$T;x
z_)dlQD|`<_C~P6*1s!X6ORPDKwQ6il8tc*6x-{0uTiwOr+_|`eq#cR^ol#66SyEQB
z=mtm=O)x>mhZP=R95rJJyn;JBZ~+QzRiH(%UV%3wg#LrfjJfVoxdPjxv0Tvb0v6&e
z$chw1mS{Se`7(K-k=&e4rUp#z)X6ZNh16yZ0E+5K(^4^bsrw at 9a3jnMcCjE5R=#Qn
zP;O}`-;3?m{3Zy>#Z-WOAq?GF5&4K?PvA*b?;u#T=Nh7PTqx2m-Xiap6huAt827`*
zeE{NkfrOHIkvy#L;jzNBaA;BhjA0Q&(3EHz+}9iT&FVf_h{93LD1cz$t&tjpqTDP`
z6y<T<6{b}5O~mVgyF{IWNc*PyBE75xTlpj~(E*XE-(>>WufQP_q^lui0A&~AMc0S7
zU|UOXQ-ZrPF at z~61fSDO?}G9bAq{sZ#@a|&i?Gl}tAx%#KtvlMkyIbRJpkyan3r%L
zH?t~{KnvhyIl{TYW1yjt))YLCt^>}j9~4NXzi~S0W8hrao=odQh{p%HXzBw{rCDeb
z8jrS!*eP|PVAl@#QOmhgOfs-tjJ<_Z;?7z*8M5z`(@3#v{OnW^ie2Mx<%wP6 at sTy<
zAYY2-IOSpP98=7&@ZNgYd99p0!Pud!DQpJkhC*0w&=rP0yA<2j<xwpxpDsChSq-+Z
zqf{y+Tr`~SXkoV<tc86gtr?h>S`b#Rg_THQtq at jEVMWT{3xgV^T*pCL-n_It at GWh|
z^tltwp+znfA~#D3o0&qvHA=8Bx>17v+pWSj)H*iaQH2S~ea9MdCx6_FK#N}`#Y;Jx
znG#10w+iuQWxk0jl$H7PWFfXPuqGk7?pQ~z<Q at G8wAh=a*g-&+y_qR-_Ny^s_oMJq
z>|!Z)!kUC+x?=}<lZhb&TIxMg>K>-po0&qXePg5!yHbyIrAnqd*dHhkQ+AHmR&p~Z
zLGW~#;|n>Px%#jZA^b(|jIh2r`Uj_OV3(o=?h&M8EN+N)E-dcqNp9U!zGdGLrljPC
zC<2u~2Y%#Vqh#hYYHuciohTtStx<qxLwv@~<DhgNLWX^ZMXux>%?MN;MKX_7K&W?A
z=0O5GQBP{*Q8Ffv64aV3$M+9(%OPagceGMea>FnJmB%XZ!#&+6CL)%-As5{f at ms~*
z$WE*SWpJaM!y+|=RP0}_l~dk<1ed_P)+Ba-5Y56luAJXcFDz&W5e_7nAul_ at g&}ty
zI03c>68TDiWhVwz$~vS3r*2-usGZoU&_03Qa<fE-5Ck{L`BZS~kNXg9vJ<-yV3L6C
zd$3}K{pDTpzhaZg-s<kZVu#*x&cq|ACp-RO*$xZKWcNshOc&3t|G^pHE^28zEH-pu
zX)XH(>dYd9Ff73KU{IhEMi>AhO3%4A7^0xWBgWj|)H}ksg$))Vpo$h{ByX-EfnApy
zE2XEsBA0^i6tg|U(}smG(~LfbhLufx2Uw(=80%>*^109V){23WGt%&A=eW=n_Fo6M
z!iv0}wpj{;)0CdJUMMxj)868Gn&;A*foZg-T_c6TV at glkDTK*o#c1Uwx$>S!%LCsS
zPrFWt^m^J}CAbf^H(K!du9q3c$oIaUc83%%<+z@<Ux+tbX0zMD%cQ>V?P+&Ov4cWA
z*V7J-5qqQCr!SP+zNe?n<?x=|ES;w7X*ppTT?eng2T3zp;7XNDrl;kMCGBZ3ixYA(
zds at zX(02pufb>{`bd1G)+qJlJK%nZrfIOKzEhj^Ur)?H8J)X8+fM!EH4_lUHTa(Vi
z*VA^&JXR^adt at HXh^9R)<&3Vs>24l>MT at C&2pO3??GEt6v)(A?Y^JB><Sy-LcZqD$
zo_3J&44#&AIN at uCNPx=bOgodO-6I8L at U+872~NGi<7oqs6P)Vxv|K&-dD at rTu~K<;
z*Ry{X&X&)QeEe*W*S~V+ at A0pyB+AbU|H^5<@UNWr)AQCN6lLcMK{;3DZaqFWcIDh$
zI$3cLB2P5$<@vjQ{}i7H%A+ at ybFMtTVvRXCq>tW+^G{ERKKjh=`$hR2>`ihJ#gPXi
zNX*{13+d1j4_w4Emekh2sppmXmi?62VigprX5i`ZNQrQFCb11u1d(z3d9{7O9nf75
zJxd-8(##H9uN>flh4+a~1Z=tXBAVLqcjgCqt%z}HkdKfT??d_??mv_|7o_qz9!F?l
z*A7>kdh`BfT8z16ExH#-ESIF!OHx7rBt<TX<s}IS66_38DV<lyOC_8i+L*QFQgOXK
zN+aQUK_&Jdv at EXFM^W_>0M!mtR-c!uQ&HVxQuTPL>J`;Gld9EA6;)KdCRL4>Dy*n(
zHmQn6Q{5`2PQvsiyg+lkEPvN0c8Z%YRxL#z^uXG~VhXfd+wF~N-|)}+Y#7&nV*1g2
zC7!@@(i5fu*)D<hEvb9(C_q04r~TW1f|=4hk9$U#C)ShTM0HE^yiuAbrg}hA?YltJ
zBf8-N<da$nP{kMHU_t8kbbJq=uzwnzR;90I{K9nndwi^ZdpiCX#{Zs<e~R%>W0J4<
zfAUYn&)^(Q=6~U9h}Wjm4;)7PQrMwN?|B{Z3)A#BG5ut;j!HlBZN$Hv=0B3<c`(ht
zmhu;*>DQD0_O!f9sn3OJ{^{heNb}!K{u9#lTbO=rTHafGn4XS*fhQ&IhABZmY$W9J
zB$PU_XyY_54nk=^#W^C5GpTJ5cv?1?<(!h*f+moDP4K%XChY{rz)><1a)8SqW;1D1
z-$w1H{hQXub27_Ss3 at aCIH9$gr%iNu^f at K^_%Zs_2qcp}q)q(@tvOmB6sPz};fx`V
zUUGE#3Vh{}HuVZxXS6&%7f>fm?L<Gjv{~nBMQofR)738Kd#T6KnqGMjp!FLXBTvrI
zGRY%t>h~Gs#qAfhyxuYL`UC=bdN<6~kF=>jy_!kC4{2X-z5H*puU=TYx4u4#eY`|N
z)92|$|M_V4Q8GrJc``B4DQes3lWKb>ll_u5HSQI!ex|(g`ccMKj-^osNte~9>d*pi
zfBGo)^=yXz{ZZ_{G=sdfe&x~8<*UhDzG&)mFJ&yBItlvz{^m!!4gQbPUk)DQZ_M`k
z at a^A{!QUA5^FiDHVY&tFPYwPLTEC@|AM;B&W+VsU4BdzJd|r>40NV;POdKY_*+cAe
zf at IfWkI8LoIak1x8WZ<h<xIhSguhli!nd3?6pHPUbHtPUwPGiG*UtZj=G<ms#_sIm
z&QY_ALxx5j$bCqhh?A$|{{OvsO7Mf+%f}Al{JcAnz|1~<RJ-GRF`9@!>X^P7Uq+M7
z5)>*+H2}$h!|h<B8G>oK>AO+<qv?yae(ym8W0ZNOC0dxh8izr-Y)Kzv?HJ9VU0YgX
ztis at zWpS{4>PbgdtB1XmAC?4qA_l at R%olHtxQv`<s0dz7aQh3yVM+!CMVgsy5d~n&
zTugxq_j89cM-h!EK{%*@6|s8^sN+&y_<v6^QYYXUR9cjJH)Bj`Q&T{uG?Nn}cYq#C
z%TxV)^d**|I5ohvkt_{BE<D``mzXl5rdz3BDqgV(4&Fg50$lPCX3%bgj{rvVUJc&B
z$Sp at _9a@MSe~|UPtaanFdb4wS#%KLccFwKivryZYvoS_)IW{Z*n4IeDSkBk80+;6e
zA}g>y3oK9Yk0v7BNY>;>#_fd)k50&WJeTqD$AARk3Aazc&EF^FTsJB3i-|ekniP0@
zV$Sy`1-9nq{B%;_+5>X7P6|A7Ku#a-56t=1q`+?`k?)ozS?6{inA5i)`+Eh5|J=&C
zx;FcDE9d&!><zJ;M{2YG5zF~QZT2tE$Vn{7e))`?9SgE=o0oIng6zM|%lX}c?4QPS
zu3wP7E1q-ng6!U^oV5$GzJ4aeJXD+WY;9nFEpF4wL&t}+Udwv&z=x{?&xCS*T^)Gv
zpclsdygHEhc+PFrfp-p1WqqeQ at PmS!WOd-WnK at Th2b>e at L3{tn#{us?B?tH4JuL_K
zPo0+YW>w(!({oZ)fxn-g^GsFX-e}GfRe@{EavrJ*JXMzSE2PfOSzi at +dp7CsEzkKO
zQY&)4h17~18>y8!e~Jg*uFQEY9=LZ-&X#!K+POLJ#sg2y&3P;y_^y at n0`9GxU&aHs
z$8vrK%2>|#KzT;aH{yXG&6@*FP at 0^rY at Pp=tMReN%9v4S*K`pEqSr at d#(PeuUlOl)
zI1dZ~!!s!{d&h=F$a3U;dY?tC2S74NN<|{>4U%3drOzM{_XbI)B<V3o#C at 9NvU+SF
zh$F9j+pX2uGPx{@6mdqCDK%z_+;o6iqu-Fj>Jcnr2kjusSsD5Yj{jzf;g{>luWW-B
z#>M(D-g$jfzWy>0!YeQ(ai<AGjPV*(L2<vuXU)^&_F}xPme_~4rk+Ok!X4h4`U38-
z<%<3Fa!frIVK=TkjMtMsg{NYT1?k5g%fgmDK4M6?1a3h}xFRh9F9|IIQ+ZTNu+mSJ
zmtl&8(a#XE5za)4I3g{g1|q;!Uav(oLj<Pde8RD;o+6;8TaFE`h!lFEDn~0sfJ at 8~
zm6Y4op!Tr)En3i4PmtGl5`;v&D&<Q2lUp+vyAs9PB5wbfLh$&q7lD?$jv|tqh4I+x
zfyR0g7$Q$|MNUhLBnL#2Kb{mOt3~br1d)Rb^kd`o{iI84`C|x at Rrhlw$Z`vVhe*kv
z7(#*&30Zq^?>;QPjVYG1ewP4S at El7VJIIAd?(}z at sdnHcllusR!+U`{BnG=jP%6Bq
zQevEmb=QC5CCmT9yBVn-WP<r}_si{fryk|KI5#WOzkty#H6qeQ{1uEODZT{T)Fa{!
z<15nfzfc}ui&g1|F#U;iyp!o!&<gq4&sxd$NZ8$<koz~{2 at 1^|+ih}{&JE=-cW$!4
zY&^e|%<1{Ps7+4GQ3+vecgVUimWZrIM?51+?SNi-e^1KMdxT)@M|ll7gNTk*N0>vZ
zID;HDRj?DiqviBvmP4x4w^6jw`WWTv1cjjwn=6Apq)NSG>|1*4N3Abq1)~dlEBLZ#
zDk9jsAPG5+;jd3CQI7sQhQB`bsrTeZqv*!rtBPaz!>NXM#0#&qdK57|=hDZQ^;D6Q
zM){tQ<(w+tq1Cg$(OsauLdcSH=7)CwSl|3e-~3SDxQI)$UMJn6AC6Eh_hPDeHP*RH
zJ}iHSJ*bTDf{Hx#LzfTszH>XA?hCuO;(ZvHC^r}38^!LU8XU!adRP<B1VO at Oryf7W
zy+I<j`;rN<$ET!-dxK;MrGXUDQxu7~H%R&=$shwoBJK^6UP;ntkcfMOq*Idg7$o98
zP4XWas1FkZH9nDGjMdV<=@ZQ%TeK&>P!Y4=WwXYe3vf37s95R$1iQANma(63hiGRs
zaz%zl?hx|=Oc*MQ+^K|GSITt(zB$l7DQ>^Hn at 2P%P at Dh1o&Sv!GW0vl%&y!f9)N1A
zV&ipJz(vO#e7vLk>Gqj;H6p};r|{2uNOb3Kidpc4z_a at i*-o0!v=x{!o^RuQXlEim
zF3~>Ca`1{DoLk{`B at XSo?V`p-?JL?&KDn-{uC1}5rDesUx+Tk3Hnz2sTk at Bk9kc&v
z-HSn%SI~W{4{zDi{^HK(@Pc@}aF?}ZI2*6%2D`+1*nS<KP>JDfk;1=MmA(+{dJ at vC
z<Ye^EEp1Dz?uUcj?*J)&y7=LkGclg5n3`Kv_>cL?Q{jKdPsMqlD_Ssif9(+Af%nF_
zkEOobVL6i{c-_2Xk%hHM+`b&!19)JZ81;=2cm7~)#<Lz?SFl3)u?v<;eC)#BVr6aH
zeU-9v`*Doqam-95fxQK}UxD`Oz##uB^Nttl?fA)&-CgefG|o1)eb at Sx%w!~pcZTt4
z7%Mnur?urT*}Jc$=a)qgb5 at l*UXR|r*19Lnw8aX}-C-q<c#PVmIG-`!#3QIK(f`xm
zsQEoVE3(RR4z=vne8;+-6DwoJ-i#SLjyv(&9VJY~u>d|1E*!M(U4MA|8;{?+Wg1#-
zycN7_t99=WIueDif9WK&5ZdtC0#*~*@G^IiWxrt+{?;meB-r)vF>J?a80#1C@$=T;
zRV#Uz6QA+uj*<s2g-59 at hqx$)71#$}Ny^&BIcGg);4r~cFyX|~Vf(Ra>e;msGC5Q0
zegY8J4)Nq=VKs{#y><{%B>Q}q{X)(D70F(ZVc~!!hr@*f4oguHDdJC`)Eb<pMZ5sW
zXW_s#hgdma1(BBVm at 8w7mO-)aw{qa>!%^!7xr#`O{DmtrqD4L^M1JUXgDU6CN9%HK
z!=0$<5!|R%1IE^VG+4$}1D7<8STpDqL|V<mpqyAbbe*fE9uFwP!XfV5M$7lEAJz{6
zG^+9)SKz*|QgezdH at UI6;bcLmiDNsz<ZcNha<<@fhwvA<go)XL4r-HJ9W#|jP>s9>
z-Ml(=Ue8PADMKAC6?r+`C6p?UmLd;}vC$_>*VE$}!taMjSu+P~;e)tA&5&71t(Q_)
zk=41al`&gPs^keLv`Vu`TF(GZQLLF&gFfqKu;wULQ?JPkgdBOGROPb{?5M9_uaV(x
zHzPEUB{4m?v3mysd<|iJA3{74=<Y{2_Lx(*JTCfcIhhoPQ}q$j?m=?MBdJ)Qh?vv8
zQ;IPTI|;<;9zsI;RH=w<>fR;5A5+C9d3+RyiKIs9Q>3-D2IM5>p&#n}=(og4(M-oj
zX;3^7%8DvNXgS?c1gr>gGL)W>U#yA3o=ArRG93jVwR?cHbU~yb*tH(}qJr46e;ZF;
z7>Xy)$8_t$8oo!4Zvn*YL-A^OymVKvYYL8+$Lxum7R2z%KEhm3;F~jZG1ERC-*L%h
zQMcoBA~E~yFp|UZ(xG72ae{3w0n!#BEC62(?hD{}!eA_rj74OOB0Xv`zq3NjZ!Q56
z*C4dO*ou40O3rJ=InF4UEy-L%=6cZ7TXr1pf0phDb~$(r0Mtau)rzngVKd!*D3-iQ
zPM94L43sxh5We|RzrDN_Y&Uf>>ZoUK{748z=Hu{w%)UmYkrOc?z)7r;F$T;5wR2M+
z?~{%Q1_S{BHb^Ie?P7<8S at jZh)be&RK1GF`remanY?VX_hzUVXVx5dJzz7;aMuWJ8
zBVd4zzyw~%s29O at aa^An^%Hc23yqiV33eS85 at HohZe${aIEfvMC9mHjLB=e(u!-9n
z`WYJ#B)CHc<N@#XLkKMA1`%Mq?HUxVf0KfxteY5sXcq$LB!c9o0`w#2h7kTjYtqBK
zodBZ)36k*IE*4f`+LX@($6-)r-z2z_H&6t=X>`5dDt!X;I2-_mQi_<#h%vxYA&kIr
zN(A-*BeCQIHB7=8Z3Y7gf-+aKfc1eW6C81pzs$a#yl7m(RQj7>*L5KhZBj&p5n~W{
z5*7kyLp}ah+1D^qmAqyZ0-RqI^aFxI=0+BhH8WkVY0B(P<i+WG!BqNIu<QFc)eDsr
z5n;p_#2u%VwDtz3IUCmDZ<T#LG5Abz+<m)P3A2X9`Avl4#3nq5JpMkAAT=*!O#a};
z4LcB^a&KD0aLp!0oelJ`0Do{ZLwl2SxElr~`qMsyr~*b&YdaCV4&rP2CCoVBAsJ&3
z+_YgAf+k2}h{OQh7e6gGbO5s3Jj_%pxO{u?kOYt4m)Q>xLM4S5gKRRe7<7cF55j0y
zL1cdo%g+tMtENxH(v(1>UTZ)_D37UMWe_e?4-{y5(xzWLU~2<G#+$-2d_cHZY9d{+
z+*T<4XFI+o#eE`2ZZKdzn(r=Z=`4^!$Pv>4tMu*mkCPsN+-=b7FOrgK2u)*^4*Na`
zh?VXaX at jIoGmEWStMt@}NbK_ at b_$``2NJ10qf at b)P>RhWv4QW|^e=r^prbeZW2O7X
zZuZAY-wk$sb_#UjAadnE4XaZwF=JOg#8~Xg2PG(CY1K>5!C=*WAr8N>3JO?TMX}@$
z1TB{Uv+(57O4i_8c#E-cNH$~UJ}rVz7>RKVF49WY;)71~;`YH}blC)hvg~YrvktV-
zMmEB!q%5-RdHCWSKiCzI6vVJf$VFuY%C>_ROtoQDeX#2xz64;GhvjGQ at U1YqVsO`h
zTQC)ni6SiVVKCA~DWixoqH)UjA?w1%ch8UpK0GwB=UI%@$C7cp^`5M4#mA^PqT%y%
z at knzOmQGPBWNC$JC=6`_VJ}Hx_2dT|p3UF}2Z-l2$CB5nHydvd%_>Er%-2QMP)C>=
zxVj>pj6ixbLQ&jSNWX!o$lw$ny_aJbsii1+1PM8X;LC(GWF}4P1`*i5q5k-Y=XH^F
zkQBpvf|N)Jy$o@}m~6bt at Gc>xGS^-P9HX9 at Bywe(JW{570S&q4TFDy*kyOPexMZ;%
z<^loz2$<;(hRC#6#BsosA>V#P$cvd$Xh6(z269Di{fIL+DN+n?F`RB40*o9evI?iI
z_b{4t7*yd^yncja+Qkq#kc<~|pdhjiA&8g0j&DH<0~8}AB at 0pZ4Kfe|UKu2X=-rYV
z3J|a;`3T=A<8hV%?yB&O9Ey|cg;)~r#tJ%l2$u>_5nfb)lA*u`%D_aG0>sx>55WWw
zdJ$$86oIG=ZU`e*2JK3S%2h?oQHKcBvf>7&#gaFQ13Q#pF^>8c5}^cT at S+kFi){Z8
z>^eJ#`G}#E5^Iovs0<v6D1)eagmJlT8^a-pW=7?yQrlq~?RphMNN8n<*HWVlku7EL
zVzv~EZ1IKAo5wRBv2>wCG9xNv;4C~dV7}`RvYzjbtWkIOMQ#?P8<<T~Sug|}#~q9f
zfAQ!DW`-L~xXFM~4ln8V<Bp1ugV!2|Bor at 3O{m3eA%am>+#o_s(q%>tV?=if)M0LD
z7siMVA#~qXgH<6~7Tk1QWEXClY=;5KI2>~Ssw<q$tnU^dDd7mZrA)l+i)358(8n4K
zA%?fh1dm!8$;Fvve^qo}j+87BDR|Lr2%!~*nIUSBqcTIvA}P~(QJE<2S*x&5b$6 at y
z`~w?;ttP8YjGLGhfdsFYkP`2c6d_12T;6U!T#TmdYc*g at 4-;?*VT#Kqit%wONeWC7
zrVdddjF2K#^f*04GPPf%zAIA)5pl&cwU+=!!d#i&=S}Za=^>fkGdg`Www1t~-<~I(
zbUI)9_0kcEr$<up#Yiz=3x*;?6^v9IO|L=WC`)hEjvheu7_0NKt{gAEtPw9=94QKR
zKaUMZ4iY8Yb3L4cDh41tQNl}({A at J7cw4w#_z-TaMM-H%qActj9%$KL#&9}2M7-H}
zM%s<<B4UqomEPyYca*Jr`s4;8wl*omJ)(>uG4(Z^zU1@%SaOpvqk(I*)ud-~n`l^=
zp8c2xfoT`*3(-4h7?{=3S}^JQDO1Y^uAvxSu>mn56u0hF?Ji+VdWx1>D31j5`9abl
zV|u><Gra%=@`9;T0|d<3m;$Db;WJeA`~hRTTmQ16^#;10-H0hqtn|TPcM}ihUx97$
z^!{)1YgzmpWMTtca&+&&_+WPei$H!%xekx<DuNpis9ckagmJ;HY5+E%P4UwGO_g at M
zWPj=uKvIw7SF;lPA?HycXFKG49?LLJqkHl80pyIUSTixYcRS=<55V3FITbVZ<4b%M
zC+$zI2BhSik;P9hCCV}G at 7)41XHyKk$@7?p1vi#N*POO at 3xxa@QTyTGrq#Loo9xwj
z`%_y1H1(*3NGy4YEY@|Hqsd~u7LvtUh~v9ZC(kWb6o4$&X{uOCNb0jlai8awWhI88
z*E^UQtb<x#r?~!LR|%RjxUnM;T{B}H)G9>O?hkHi&w*O)<MyZWna<~d<=8;5WZ4eI
zFf7VeOd%-ScW`7~oD3N!%62uPEL+7C2&p)5Kbcb<Jl5WWTg*O`oClzbkaL!*qahr<
zmPZt%p#MhPei%;Lkd&Lc7pS{GkDZaUJdBS*-fpGW4k-`s^h<enyYeQxniZseWXemb
zdP<;-tfy;LJ<WjWK{dCcjzQe+hiYz3g at B-ZVuA0fbR*13sC1lC>CdPJ$eExt+99fn
zCCt+r2?42%NMOBdeYjIZeZHymxt}kPY&=OdTOVRPN*@w!H$k=CcS$3^dye%_82!{r
z&X-MiD#mo7SAo*&SR6MFZai6=XAn_go(Dn}%v15F_6xP55LA<ucpLUKiMFs6iammT
z1Agnf4F-b(&Wf%n-n$hRbv`ZXNmkS$RBP(~RE;pHF6krW7LZ$ClXVlGLvb*zXK{?4
z&N4T+F`(+~Aq@!|WB(C0Cbo)FcOg;OD_1;vnIt`k_9vrOOQqZJ$u&6B)J`5FNB<L>
z3Nbi;;SM6A|Ir=n!AgPd;6l^@`d^mo4$fo~3U^Sf+<_93I$cy&r|^Yx>&8m9Nx6$L
zw}3Z++^;FQ$I%KmhSp4#P9{WC-5cDrpa|t#P>co;dq1fWRX%MOGoc{u;%JINe?9{5
zZi(6#-8m02 at ruPLyBIe7g4`H$>;Fb=7aOou!uo$0b;Ctky88PR;;H?0C}!#wF)WF3
zLG`0klzvl{e)CbyFb{3GQAA}onn>$_!<o)@NPiyy+mEhtKR~4kqg|(zTZDHAXdI!m
zc5w}jR<FD{H47;{Zhy)~L0NBSP!#HIJhDxzwHNOIu-@`V)!PtI-Jf**&r{`l6~2se
zjwg*<yiW)@Cqzbx$rWOx{l}dHV)mm|c5a#d&uVAE0mJj{1-ZlV<PDviqa>amt|}a?
z$Qr0B+?IH8m;>EaYuKci5QG6#7WY@$Tgnpsx$~Uyljhmu4=gJkZhMJU5>C~D5cWJS
zX5)3KiDmYlY9~H!xY~|SgnVbAkpJ9pyzud?{jtKg6Mq|~!C&<Y*aq&4N6PHs#6a$R
z=ZJCh?IW^E-)ehBylJM(@0=XN*1UZho~t?)ClAN%iqnR%KUXBg4ngeptk+_NuO*%v
z=5Tn`1E_r57w@&-N^H-qa;BA5+0#l&f7AAAYAur7 at thx!uCj+Ldz`%^=CqF=##7C4
z!?EPWB^I=@3SZB9B33x4rT!J~I8tiAy%lv3b56w^?9 at X_cR=dHND_Vk&{RCDc2<WV
zYxPvfx at j1u$~haV*D8D>>o->6<GT3Y!JE1){=;SVj>MMSYG?AqYJ2jy($`S@%aIm$
z@?!QIZhPg)_Nq$W<lA09q(P#+^546?@EA^PL8ex*It=^Aw3!e1Ss}2<iMm2IiC0;5
zomho`)OGUHQFRh`#vh8O-m*@v6Lli|5&k_0jyCCPp5RK|$*Rd9HJmbQdX&^0B)RR!
zGf|k_j at 9?#RUWZ1*cUD1mKROQquQ_&Nv^$N?w&#Hrh9x8KG44!UKL_x|FfKvV)!7u
zJp*4ecUGT76PYn=B`<@vFTyz9&Kisr{x&f*TxIX%^y#W+;C>M;e$xI!Vk_);GLDc<
zKB;soEN&~3F#hB7-uT3^YOWkzu@^6Ni*MNPxp+0*$9`ucN!V{m3<nuhKP!>_49k1J
zezqDz4kc#jXAMY#ekd=#pzkT~23k`br$AKG57MB9hDDJV=pvWdgDA7=5))A7S5hTn
zG=jg6J6SRN5!cUTNk3DSyxz~x9KrVS at iPI_PVv2WYKv9fiMn+*&`No1BZIcrzK6EU
zg|?kwMjO3hIkU9nnXY7-QyeErGDzNvu}w66hI;sk9`|C-tSWqo-Y&NP0F7r+ZZYg>
z^DyK}llo`YBeB9Aa6OzpT~$GKpNGG(e*<^p+S3!Tr$Qw4#GI3=?0;%K)Ak8-a_#d8
z-BNGRc^Sqzz8GC!8s|<V$@h&rQ1+BI0Jlmn%g-e6aDRaTArQ;xO6;jgdxyVH+dJfq
z_1F8Jhk}{?^>auP_MW*vmKf^E{`e<hocGZ$WiIj$k;MNjfH4h|*-^(|a2jVT&bahj
z$?-kbmZ9-_ft~s;C^0*!#2NRZ)Hk1TBcaqBHzJ+`rM^1kCbp(tbrZ{LQr~wY;<-iY
zZ_jE<@mwNxNjkm<R*`!5&u;o4<F}^ceT>ga$9ow6J>>IPY&~Ct&UDPT9{bJY^c-%j
z#~i+w0$#`{fV)XzBLn-|5Wqd63<5}%nuZc64br<3iGIj71h6a_1duBAtF#7&facK}
ztjeqbsZwvCPR3~99xaCc<uzmT#?j(&|C5Oi^x{Y``C2pZ)u-|@@g+J at mNct6`#<VH
zG3%UEsc=RCL!$-kL3C{P@~rqD(*le`;`yVijJtLj1du8<E?wto0qSjC(d1)JLqmCd
z7vQ?5j4G2a_Td>&y4Yh*$%E~b)S=+2aK>R>WKXPcDrW4fz&^>o)B^NLcntetdz at 1-
zWgix9`^4tJLRb{O7j5_3GvGw_Va~TN^?iJVqr%CvM=I^y3MYQrK5p6U)6=9cz+X5e
z5OkWeI(HwIsQXf#7&a^ilkJC{36!6w<cml9sQ@~xWxwUjl9^1DnY at f))(P2r?WxX!
zqJ3CsK_9u$`Znk*oGe{}Vp#&cv|Icf_)Z!nsu=oupu5C(M7S*XsD$OnPuZ;{eHrF;
zQXR at DgZ8MOGNS-HXhLi0H&i8oL)FrEQGhZ`nib1rU8e=9N73MAs<I)>t?k^@B{T(o
zD8j3jTtc at 9&1Tt8+QrD{5NI}aU+NZC)XB2G4;1ySw*+>x?M7F{(I`fRbAWETQrUE=
z$1w4-?nxg*+=_FQTT?5scQ$%E6mL-`KaU~@)IKUUf5n~a?l{SG(>zD;)5fihRedTV
zf$icz`<Ga7?8qXbB$ykqo|F3D7RPJthj!y%9;g%kS_f}7yKmBG|99Uh1S{6m+>wzH
zEoQ5{*_I*aj;l4lW}Im-en*4HrNPuO#{D_Q{fqnE98)hC_Z!sxfBL*HpGk~5 at r$Pr
z^2qO!_c`(l2mD?~elgGd51seLznf9(f&ZoRz7<Orhc8*t5pG)1c0pr%xP3)<5e{dE
zYa83kS1fC7X<W6W{gUd_1GAT0Fh6i+RV_P%xM&9{9T^kuIbA}zQJsYCG_f6zZO8z2
zPXZVT#HB-+4X-Q2UxX?-5SUwDesZ|rtn)jTw|9h#XHK6vz38*EIz)8F*JhkBz37DL
z#f2&XOyltj;m7>uR-eT@`-w46UN}`IuB=PX3}meeWgR|wVr~zVAkPsh4QB(yMXX5O
zW7kMr#L)cW;{PD!MQowC3j}b)Ok5WJwy67mvXHa$Lf4O*otOXh?AdwY<oMZn1=r=2
z<rQ5$p(3v&F|i`ACVOtyfq5l>%JK?80#dNd&dZ%Mi8^yV!0U7T6VD5umzOK at 9b_Dr
zneSgE6gZcK_RY6U=3Afr>bQ*gmQB+2k#%WJT-4UYTPXQ(U1xDbB1CYVfQn{4d-JPw
z%PI1UqnvS;vm!$|!(eZx3|vF_33+)niHTQFxGpC-{_EM-j|<cQzZpMXUjcz{p2*<p
z3FR!~+`Qhb>_=J1v6;@rZdo9V-%I%M`V4+D-`*@UW7fr~C?l_NY|qNPP-5J;R}Rd}
zt(sJpmrENsN2R|)B3!JW3ew{GEeuk~o%5b{FfXq)yESuroH6MH$mv&kJVd#Wb=|nK
zy!@-P%ksjB@!4xpv-xGhYQ6xa)UD8CSn(ar5PV;!Ehe)o^TOAShrwM<TTD#Iehv}}
zAk4MC*rYFw2Efj;TB<`GjeB0S_j451t#rG7-24pouI#R6Tr#8CoiRzY at oJ@S{ii=r
zy;bD(Wo7R^IHSZewlVeF_u=&G$tVpLLmNCo$vW#(rhYNM^3Kic4`v^blhFp}Xd7%*
zGWq}Aqz(25O&esr_ltx;08cyK^I{W>54<*#i6}cTc?^uF9PpKCT>HQ?70$eQX+QXF
z+><^`5SR9aPvM?;lprqcmyU!&#Onnb2ne5u`&Nys_7?sP_}vQcQMi^ftnfaC3m>Os
zW(&(y5f$7CI_Ar-4f3L&(pR>tokjwIZ=nsw8FGeHQUdi(IW at TwpzqOFb^uR$J=dQE
zeMtB*Ceg3xD?5OP>=~|X at n5dTCS(WrAFsz=*@45yf<UqZpYXxMKKL;{cw`LDug_(n
zy!9$2tiscPv)(47eR$D^^_3kc(6?^*bwQuTwLL!yJP?@f(&?K)g{$h<aNzd>*H+`g
zfu{t1TpCb!&nkLt&zj%`g at -ku!rcN#C-+>hDO?0b+FJrR%0T4pK7kvRq9{Hg?9wnw
zh0hkaatMaBr2;pMPo=FBxL2D%U<+_>S;_KeAN+YA{6!y}AEV7A{~y4Q9#`aQuG=j%
zF*E%kKKPe?@CG0J9Upz#eCWG;@NfFyKk~tU4*ZAX(!E at lcefAyh@k)MnEE*hjG5|l
z9`IwvrTvDOgMhom2mc;S;h=Go1AWS+>p4kM(Bt1 at sf+UxUcd0kcdrlq;pni(j7$3^
zF&}}P3Lku#z|;Op%tJtbyAS at Nz|(&0Xe!AI$61aUHx at sPcpxlD_(#k^5Ox61RG*jo
z;I|0*X at AK12d|?rNFU?QcGL1N0nU2vRRbgE1H2vto+;mh&>oraSw8q`AN(O7Jg~@J
zwoPBOC{Xw1FIShI-?)5H^RkAvrNuMq=EmpGE{oUIRo4|4&zQ5My?x2 at 3(7m%E^4f-
zuB|(P%e>0U>a$u}D(g<Dn{!rmWy?npal*erM)AKvMv)=Izcx;&TC#k}vWAv;W5de!
z+OJlgIj^>TmV9eD)>7LLYpEnuTo+r6$l}V%nmLPGDnCN)%rvz6R~u=DA)~ssy`=8U
z^XuB%8XIGXoK#o0Xw|A>H1qilE0-*)TiM=*wvH{TZ7(if)ZEYp!iFX7D`Sf)QJzJW
zm6f&aC$u&!X^YLPJ+aQHrjyE7VC~)5MuOs^y4uDTyvbd>vOQK?R!5$e#+55$V4)a7
zl_hw^yRofdWn*OxIA&^{>Xxrq+$bofFIm~vFue$M_kWGfCqd^$D_Sp!#m_H7Pne6|
zQCB8jQm59a9G{}p#_O2kR=g-=9V)!>%mqbt|F0Ev`l1yri`lHcF6YB`GS?~nXQWDn
z%WKbGP;N~xE%jtl%q_5v_D10qO?LpTicgxYz3Q2btt;BlL1v!Wv0QY58R!J6Dzv*@
z*>QedtZsD8%$(cUPSLfZW6nNN^wzW+4or`i7x7Oq|D3=-r6MXpffmmY$V~n%@n}EO
zRj|5YS!2bCl^4AyLHUVvZ$)(;qRhqA($XH%Z1T)JZq<xsRvuL))V9wkUb14P=tXrc
zOU`d=XuAa8idfQqQJ{6j#etPy#Wy2bR$MRxnl5gsxoBCS;_T^djZM?*>MmHds;;%M
zZRLvP4K3KWth<OlX8Fa-Sf&r}5KHM3 at U4pW#>z97EekAbT(+q7l0Y3CX~UwWb&Hyp
z)-^RO!T1O_+fa9Y;{{8W*DY#jU(~FSw#N46Hs~wU8<#KEsb?*}cnM->Hm>Yg)(F++
ze$nhOB}?dRQGntS*hh6oOG|vk1+nGGborvj%8M#XmIJCo`IX=cIvUy**EKBqYR8f`
zO8e-t+Th{gz*uQUKlYf at jQ268isJVnD4&tGw-4Vo7>KIs7B5-Zx&p(@`xtg{IwPYz
znT at n!Y`J_0Rr&t49-wmh*O<rTth>(`sXAc{hnmk6bJ!dGHI~>JXU at Y+r}CoeQuL?g
z9byiFsl at UXZI~O?ErD$|;5#m{nifojDl02m=P#&Z*I2gVB3cakZc$yGF#Nif#^o2Z
zH)AT$wxX?O9_OOygnCA0npWl-cKwBqmbG-V at 2@AwYEN)A9i at Y+o{aJ_!Fzw%i;X%M
z-CI7&&>^a^cvfBA3QXA=8<wf><Ybz;Ri4QimYm-y>ezxh%seV<XVulrtDRZL`MX)y
zbSf2%O${9_?F*JHYdi~XRra3`-v{X*8&<Ada=~(TuoJ|{@!_S2p4`^h+R^~`wrm*;
zMY!v9Pfa_-lVZ?z30(W7jTkdgGb^FGy7E=Xos=W-+ov8Rea67KE2HtbYRiQ?Dco(+
zxZZar&Rr#qcd4xy;zb62gAab65B{(ZuJ at +B@(&<@%Zq=?2aoySm-^t>_~09T at NGW$
z+dlY2wZFh*v)*R;;N?E}#XfkK58ms8Z}Guj_QBuw!B56M6EBu)27cO3p7g=FKg5gl
zGx5{(j~Y0i?`ZsG12^dpz<vxb$}#DWFz^$Rrsb?wIL-YO1HZ-x|F#eQkb!gmLd$>J
zz)ksoQ8 at KH)u4aHpy$yF_0_DAw+;H!4EikW1M%|ef3OeEeJNhvd_Qf_oB7T%=*@gT
zZ_u0Ns`bIYV#qPed!a#Z=6jJrZ|2)&(1%eDUC*}|^rpS>zn$^&`n^rq$I>|4OZ&&)
z at nI7#){ogAFTs8iFXE>CTx;N_pL|5&%$M?Mi at d7xWJsLl)%ve7aPH-4{F at 4AzF#o#
zT0W4%<!$%#eeequ?rryreCRJXaI;;mHsqM?@(Tku>uskG{*DiRBr6M-xBkm~@Wnp(
zH9q+5KKP&yzSjpo0&l`)(sQ;C-t2>a-3Pzh2Y<>3*N^JF^>&<kFzChOKKK$J{AwTk
z$3FNg20kAZrS17y^(c_~R2X=<+PbGbA7kMA6;Apy4g8Qp5Wz+IPvWQLzo2l^*Bbb{
zKKLipR==12L?67$2VdrcCw=hsKKT6#XSpJV{vTHkih3?E at Ja(W%ezwHltU9f2R~jv
zR*xizAA_H+x3%g4HRYT2{D8tqZ`Sjz>QRNa-tP3lxA@>s_~6g^;Cp>=eHh29PnZW&
zaCz}^g|l48;-~9jkwI_PbEkou_57xKo<aFVhMaK)h~V<#pD}Q=UsN0TJn(6KMhx7P
ze at vkeKSq9~55Cj~|Ar5~$p?SN2hUc|fxP7{^ug!*;2l2rdLR5=AN*MZuQuv4aD2Mn
zOnkFi2vPr;2K`P0H|LY at 7`RD)lzL=IIVSx)12^fH7`RFA7`RD)mw}t~PaC*NKVsk}
z{qfV&^<dJ^H*k~wG6Og1e_-Gy{i6nM(!XlpCjH@`%dAg{ft&PSF>q7<6$Wn7-(lb;
z{o at 91(!XQiCjC+Dgt*4EuYsHND-7I}e~W>e^uIE2lm2M~H|a+V+ at wFgIIX8iKi|Mj
z`pXR5r2meAoAjFv+@$}Lft&R27`RD))Qq&ACjC4EH|bXxxJiGDft&QdGH{drX#+Ru
z|7qYR{dyANV!NC3|5*Z+IJ=tm+u!HFf{XMtC5;#45|#57E;TfMf(PeV%PZ=^za-(n
zPmT2j<@}Grf2H(f_QX$BM`|AO;4>8dga<!X;m>$*zM8 at -<-v0m{-y`dR^`uPCF0Wh
zyrk%-c<?ET{xA=&&%qt*!9z+;u?N at Z*FNvTKdt1)JoqsRKg)wZtK>I$@W&Ot%!B_?
z;g@*udL_TxgMU%s-|*mbl$`H*@M=Z>GY|f8h5yon&r$dm4_>Y0Kjy)gDf&No at beV?
z3m*JuivBeZez~Gofw2FR(Ei%a^Mp0XenHozac%GHFC_-9raxokun+Pgy(#AmflAzz
z^F;$M#l6n=JOelNY*ILj$sf;2^14h0B41N}r-7UPq1y+))(8K#ftz~%mw}&*d#(Sy
z25!<nY2YUP9}V2pQ~M9Ef7 at -)oAsQn8kqE^eC-dsa&&(sUXGvEU;7m=uKkb~*M7^3
zYd`13b${~Wx*vFPZSTbA7<w)>%4_1<-bo)d==td?Uc_mWy1du>;CC9hS<gJ@%ZqX>
z{IneHhlrc?ul*2lv!1m-^WxecdvWb|y}0)4UR?WcFa9yrZ at jqnyIx%TX)mt*x);~)
z91xG<r|U=iKjNmHYd`9hqy4cL*Z$j!Hyh<L^S#Qz&HBfy8RGKFxzz_>Yv88*`wiTb
z|ELeX(+3|ia8th2Qu;iSoTBC#)SDME{!Ul8nx44$@PVWX;3T-bH2nfjMsS5>;L<lM
ze3}Pet#GxC;nMdgTrJ04{BtV9ut&~Jg-1O2E+t2gFIvwV75*6yeOSq1-{hs~rzu<w
zgD#${aE=kYH2t+xWc*YaxcELrANAm2MPK2;PgOX50xvDUUg2>GyLgwvYdrX{%2#b;
zyytjo`lV$`4(-CkdwlTQeeef;@IU+D!#?=&*)oCpa4M?(K&64RjWoX0z)kw=4BVvW
zzop~lmH#^fH|gIoa8v#f6rkjo^yLO_(l0h}lio3Kll~_LZqh$$;3oaw4BVujWIWe1
z>5nsTlm1i#FGu-wJy-bP)js$_AN+hDe5nt<(g$B-;O4mSxPhDFsn^fwc_3+cvHDE=
zpDWO at _{Bc>cYW|*``|-9xH%s)^*PR%KbUyT2VdlaoAVq~&P_h_=DfwESK9!tU()qC
z-=|#X_~6(3;J@&}fA53)`IEza%5|C#-r$2@=7WFB2fxb)H|Kk1ee!)TUS2yqRKjC$
zv);`9Ypxf#1)}@!8-^T?DH_l7$+yP9P5G-8&T;BEL(Y{3eU*Xp-vaZ}<J#m2G9FRm
zv$wqSeehNv9RF`vTwXap^T7vv at MnGSH+}F)YP|L4JJ$zaeo$sTzu|-5<%2)wgTL&9
zPdPYqzMt~JPxrwW`rz05-~&GRk<-%p%)qU-!x at n@KGVQ!4cxTDl?HCo-)P__{oMv`
z(*NGTP5L(t+ at wF`*tDJ|{VW4F>Azs$CjD{)H|cEyH|c+3;3oZmft&O%8n{WH%T9}H
zJbos9fq|R!F#|X0ml(K7-(}z?{SOV?q~C1dCjEix`IOhs1dZobrk^>?z|DEf(LVU`
zKKO|~_-Q`)93Q;e2mhjhoBLGD4BQ+St}<|Qp7T8eH_LmQ55C?9|D}OPVH3JPK49Q;
z41BwRb4{e_Uo>!Y|7yg*&H30j!OP2Qhfhja;HH0g!@&PH$FCeC-?MP9%d24VeGfgi
z)EGk!hx(ZU<6-{6rN==TOP?pwct|C9*Mnh&>v@!>k1D)Xg&MC{@%y|u32^;R2ChE(
z{qtQOT)%&Qx-stSxgSXv7&t}i_s`EYaJ6I=lGhrz8d?Ru-oQz(+;3oqfm6PIFP;Bg
zninzB(<XQwp~}aA@`v!_b*zDtUe{yPzz-6X@=v{i^H#rK+HT+n8}yeOIOQ)^X%8Cs
zG=qMhfq%@v<7&Oh<U<U+-oW*okjZx%c)mgZO9Q7qx9T)@I9!x}n7EUF;s(yNUNYf2
z%fJcgec at gMXFcop;eTe}r2m6zrw0xE2;lBDedQ&~+8fRfOvfQ`88+)Xyr9uAy}fZ&
zdtmzFhW3WQ^z&D)4B!<Qg--8S-m+wAW6LFh=@%?oRM)s_QDbX+9b~jLDyp^>k}u6N
z`jB{rcRdX8??vmr)!|E@`LMru?_xC1zx1xad&<$TL-0L`>9P){qcG`={=Kh7u;q%U
z<2|iW)%>5z%{LqK^nd2c|Bt+B;aBQ^>q{596-7;#xQ#lt;_>=aTYE>VswBQlR at czh
z)_^X8z5^rpSKq->?B**L>Gu`h?*%Tc{i2oaY26Vio~86;FJ(PW$A3$1Xqo<A at 44Z9
z!)41Fm%}A2U(wz;9iP7XtawjN#qlQ3^wzc&csZ^eWflh6*j(4thBpJ at CE8Y?YW_Xf
zQuwo}8AL at Drj~&L&hfY>tK6R(`tj>=%;e|Z_6Ox(m?3{o!9FPe;tc$s{t*1Seog(4
z{}BAEGvq(-L-4Q3z+e3#_;1X>&poXVT7SKYKUalp|5Nb$p#1AH at bldE2j%Zm{AT at g
zzUJi*1LM#<0YCHVSCKcl7&ESranD;G-=xeae&*Hsbs1|_lO2|yy6F1Qa}+N7n7^8)
z;7(q@<RT}-rKS;X%4cv#ng1$3=jNHpzft9%;v~qpJkfxz)2Kni+o2yx;2yPbVEI{h
z-tt!hWBy*by<Ak`($9HiEZu%O&iQL5{!X=_-Khyx81}@^Mm$sd-K-2y??+O9&U3x`
zF99a%&szW*J1+g*78y%FFVykHxDok#_<Pg?rhY}p{5e1N=Kn2Vneq>vDjD_nUSw=+
z{yj*@lz+_~l4GILi}@dlpEv)9fMv>mPnqP`--(g2vHABSAyfYA)=Lh(|H}M1Pxt2k
zPhgqy?=P49M|<kk+kgK7vP}68s{<;{6poAev#)#eFGG5!{P)nXaUCrK_pdj9p7Y3*
ze|?{1(SCyYe*!;m{`D$<?h%;RRBl$_`nU|-ztokN4hI$g1W!E`DSrK39mzGe{T>B>
zCjD0_{nsf*>L13>tN%&Jm%4cK?^h3=^!Io`A}(+J%>aL<{KG$&^!duMGyh}o^X9+Z
zC;xDp<bS{NZ}G{$WRv7K%OA;*|8a2KEWfw?)~%HMoHLo1)}K7QPW0h_T=5?u$=tu1
zPlqwZud2zV8}i}z)_(=~Mg6;+@@7bt-?ZNXBx(IMeh&EafFl at n?NRw_dY!1_Iy~Da
z|KSYzbN;6JbpFlYC#KH<>3oLYCx1=%(~rpiSMakf%sm&%*7<wuTkEgG*L?Ux?NY-c
z8MuG7JROcl<1v44`J;+o=c5I9<0HsFQ~wLyBRO<Ev;R>S&9CtymA_X{OXWXZXRJbP
zw>m6U{2sEvMT*~xYd($h{ppE_pc{|6u-PK6 at F+B`zlIxB{$Bo at 75^a8%}bYGW9J~9
zBvB2hut3)z>X#Smk5e+uuj`NH@#YOE(0mF1!e1+f65Q*#B5}=6|DduU>|U#`l((<x
Y3A9S_)*sh?nfRldB}1F1{9gY51A`=kAOHXW
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..dcff21b58810183966d14fb97918fbc1ad546eca
GIT binary patch
literal 24728
zcmd^n4Rl-8mF|^nCr(HtC**<4Pa{AH4iI74`LUsZWn1wTmJ`>CNgyPOY|Dv@|0>BO
zAwbQt9HJ@$cMW~RKs(QLwS9Rlon~Gk&7%noB$GgAI;ELmhPE at nOovA_2?f#;QVRHe
z``mM+t!v+qFw?bWt#{Vaz2|;+pS}0lXYYN^J@?vQ@&{MgZ8l96n|8C7zf!2CmEV at H
z*NJMKc8#`3(9Xg&wV5r?b8)^9zj^rmH;G*$&zItSnXF%q^Jit<h4U5o{nq)}58CzA
zKZNwuAM^)KmV&RI3c5E3Q;qJyAZlBa2NQM9MM?KCsGW;;xyQu$5%;(_f6cu|oWJQl
zD9%s1UlQl1+^>uCe)l^#cj at Wk1r@01V5 at r%>X}}*OV6x!mmY0&mzL9wOw#QV!rulo
zt5VXI>6u1%E43;=4oK6}tKAiPI)T=y*CcW;v1)Wz>a|A`4n0k^%%Dx)gt#vKT0{8I
zO#Okw)Wdb_4~g5<c|CO~OPt5Lo%0(Fd-&D_Gh|yWm?@!??>61I_O%C6ANf|pUhnCd
zrF1K#kDT0`UgIk0;9Bp&V5Z9r-9>Ydl(q&_Z+Z_JI*lACx1;IWJDkZs5ckvma=SBm
z2vt4(^-|mlW)jqg(KApr at Z$-i+(Jeu)oTw8HDwQj);WI|M-6;)W<Z->cb#7Qwqb_4
zycv|OQit?faB(Jgp{bq@!EmA*!PNUoI~ceom^!0h3zL(fVb+)8e at 13qn=_<y^jaFK
z%uS?$5D()e=|a=@<@6OCM$R~$JM5r-ri|_?afZ^eqogz>l|Qo>Bv3_9^|~ts+d%rh
zQX29ap^1Qk8KTmj0ZVw(Q4C)&^&4q|)rQJt$~OcNZX0wtB7>VE!c9ddDek3CPc~xu
zUK-Lyc$;!Gn2$MH-abQ4edO at wb?be1`quk4_`-&_720s<1h*geM63FkbAFxXTjRUU
z*A5>f&#TZ=_oB<A6VBv6!*56c#;mTKT%}AOJ?KonDdDnUda%4@^t3Y>2GWwg9~WqK
z2`&QZFj)M`nat3brtiYVTh8PW8j5rjWdG(&F2|jgbgvs%xb+0C0_k?p9UGc;;!Y!O
z^z=Npp1ud7=edusfe#o!eHlQQ>DEd;RqWPlf96c?rh!Y>13>sQ1K#T{eYO?%j6oRr
zoLd|E4#bqf2V8+n3+N%C_GgLNfwUi<E)6f51XFLzp##b2F=z5)@Cl?|&bA9hwnKr2
zN_4G^MsBvA#zjH<oGVcGc94Fl6WMn^o|q8a_0&J+b#ji*1<!0J4kBMj`G!A}c}AZ_
z`)*Gz9-zIR at mIo@O1fElU1~2(y%LOrsW-C2kRC{X2|aJB#0VK}1L-D{=E2m2q1))M
z60L#MYgrH4k)H(Mt!Rv7NCQXBoyk`44!}ny at yKhR41%U5buv3!$iE*fRzUs+C4a at F
zw(sZUmj+U=W}o;7`XiVzY=w<i2GT}jas<&vnl8`aCOvhhyDS?d7AeE_iuuqTh^Pt{
zQAiV_eU9Kz5Irt8o9u_mWM-*(vwfSSmS=zb;l#vP_m~l1 at Es$~i)j&o7EE`P7UcMH
z??EwMABqT~%$%w(6(RRn5hCZtjpfedIBNRQI!b(OJje${gq9YL1x0UZFdeT5AbMTF
z^mbP;MRpwd*y()mX|O`g=1iVIjRJY}d8&Y-qW(y6CFb#gP at T^?XSKU7T@*k9Ee&8E
zHAJIAQ!Juxd%2IoaC9P37EJwnF!g_r&my0o>6OBxCH1BV{w5LO>(L*ig<p!64H#X&
z(ZSm(Pu#c`9sEAkWCy|A2s3o=Vq>o2aVC1Fry9_)Axz*cM(1d$QEK$?Dv~LBI0H4&
z!^NlsQ}J8}{dLYc4RvWhWHyMN;Ve3qLXX4f(RNH0_fbAfIMF>l_3H7(aAQbC at A{As
z-%1Q3MgnQ0XQK<z_aEm|4rUV4EmMbnY)865f2PoLdrr at Y((}Q*p37+<TA*ihT{Z;v
zW7O|*HgRsDgbY^>re0^>oX;15qkbAHE&HShWX-vE&dyL}_C0Zh^@)zPK^gROd5;;c
zkJ+(|?5d|iNO1|cQ0f$>G;vb|BGR2J`*f~-y0r{LX7~f8%0{wKy1qP+YNz2%TqN^(
z>UlAfj2;~Now$`oDyJD`9_YyxvKOGzJ(jm0xh{EaAa$5*7|386H9Q!Tl*<_8n{&qd
zd-PEZa*(Vj-B?&}9l7zH?z-#}<bg5gUfa%w%Iw#3`cwbC$5aoEo*yMElNE9n;N9Qu
z%5ETCMZVULVgO*?UW7a4N!@IZ5N at 20J+1=1u*W5+Ab&XbPWSCZj?G?;;qM+3<3+Y8
z7%&my0Zf3f(5YbRW7Qp*IT8QaD};g?_+9MV3Bqid;4k>)`!5)wwJ-o(NQU|Ti-{on
z7z`jVV{vg*EP2mfH<rbmhU`Vxv<!Yv<j0R_6 at s8!QKqNEHAkA(V&-geA#Eg at DA^oe
z`92xbNDRSrr<wt+=3ivggd>>x^@->6>q*R=`cZ!k4H|+QL5|g&zYaegFa at t#FdQ!3
z2Uo({o>pCl)ch;-<!h#zV7eb^c40v_ub at W~;X=s4EwyhrlYawVcqBTpM6I(k+bdc!
zPr2U#UYC3;;nUMa$e)1+4!2T7r(T<AtrQLa1O(2#cdb3$P;O7W7-Y>b&X~2tC?pRK
z{l$@nwYHYp_npZAiAvvvRcV7Bq*&?Jo&A4BhZnk?z0WxpiN)Mo&gARp9)c3_>n}xB
zqi`(|&qjJC4l6YnR!YTTp12-J?{{mY+tCJLCQ6GDT1=N7zxel*6`vRWpZd9;ZbN7v
z8~UA|YDP=IlxGAk)_A`Qq#tq9Ba1Fp5~*e#kye9z(<&y5FGG`j{-OkYe9e0_>}uh2
zpBi?Iq-oh at EZeXYO*92lA7R)LFRUlIiOaf6&e25_XKcMi!y?9`Cc9Q-jbULcWQdAf
z9u^Dq8kT at rY#4se{Rhu`Z_qR0O+R~QV#0S at AoVe=z(aUkeuYLM^>htXVE*KPK~Fbf
zK`>eg{B%>fEipZqzRA#HlxTlcjEmuY$1(8QkaKun78ToPel_yzk4Fv_W3 at Q0rv*<6
z?9`|WErfo7^h!*h{_)hSdintI)-&|DuXzvpCjJrj9uH=sdxEuZ(h}FdCueItErh0r
zH$u$F89Zwq#nNHq3>Fg`P{Bhd>6BXor(QedoHJUXgr0JiT~0!}o!5VzK)P9uv-80x
z&=_~cGcN9mCe8<cHEk;NTL!J50j+4`+;Pivh|e6TBk{(Qp$K6;b)b}qUm(SQ%Md%)
zB)~wIOo=)m04fTF^J2$A3$Ys~i`A6aeEu<vCkM+pdL2|Z2267%{|Ckq?8ROIi6Q&Q
zJp(y3a-f2#=bnWHw0$)BoO0g&9DW&6TnwBT9_0=dlKaqnJ-u_MNDYN!{VcTC^6m6Y
z%bsASZ%j{R%BVx>M`;T|FQLr?I1dS-O at ocuZvaMor8A`EGc&<Nc~R}pb!Yuglrx>y
z7d at vuYB-4JVDcu!rFzokdkKaoB%4HXXsCb<8tQ_nzF}mjoe)3 at kTmImNBm>j$i6ai
z_MzD$`)a7-Og at 9g>39&z<QyFW5d!xO>*@C0!P?iI$-N+ at g!sJkB0oI*ZD%q`-AlKl
z+x}ta9RE)75WI!J)P3W6s(lYs*i9-NnGQOH#-y-Fhp-VPH+oJ#Z%fSAJD-=Aa=S-=
z?#wOv$U*z)v7j^XA|h|tcX|c(YDRyEyrQR at UDANw(=>gEP{g=o4;zb(BuR&CF}m{h
zv+zeiJ2yj7v at xPsjHUmDTyk=bUJ55ugOiEA5={NxdwQLca3=;w>?*9E_!k<_0{-Bu
z_ at DT5k>4|;6kf_ZWtd at HD8i6mM8JvclKl!67#QbsrjH1EW&iX6a=&0IIvz-Un7v<Q
zUYbWnk0mbAM?Szn&p`yxBZpy at _T6HHQ|&vC6kiOT?;FnsgjtRLjO^2?FNw=wtvVW3
z!&Zf+&e_OFgBS*3OBvatgVaSlj$m<O)N?+ZmN{p%m63>go}^$zQqWz;P^?p1I_nP^
z>q!K%NM=xl+}FroMlO>b^^X_0@^>i=3tagZqI)J+Hr5~K=*mK>^xf=gESvN5p^P_Y
zvQxyUFs at 8d>EYdwj0quexkR?i8%0DI{V`5Kr~jZ>;u-EOl9;a*ag)w$B-5oc<Xv(c
zVEnarWUu=Jm!IAvdQuSFE#q)Uk^WRzP;Sh*s4>zaRR&Toh!GX>>rDRq1Cqt2w(O6A
z80(eHC at DltM9MRU0Di8Keg%HM2yOED{oLEVi&fM4#D`DN%lM$c5Yuz&&Fpm|IE?(@
z-0R=7b2=qD@{;UHvFfL|G4#sE>*Rh!m_B*B$#MOE&V0K5+5~^Z??n{9iEU?%-L>#K
z$~Wnql-5UIbS57Lg5gk;<M1BfIp-1qE8Rv-j&feyN!~0*A48vg70MUd=){8}u#5*2
z{*ZF+b;>}p5Sv5l0%zk|ZOPGN6?=bxHQj4MxHycd)qH*ro^O&5%~jNj?!-SB?ZmNQ
z<IucIFbgKg3pxww&@w?LjUnoJsm8WmA at 8A?dA^gI7Hn1wU8h(TurH*Ut!PYah0f}p
zNrmh3v}Yr8=E?Fku1a<eVw(ddIfcWe)Be3+L}ct)ppXnRDqn~kptzH*@~cuLq5OP3
z<jM6jbKkI_J#nOv3!_dL`!*93whO*vL#o|xEBVL<A+}<g^>MCPkMj>~B at dTqf3TIj
zU#$IaJJpZd7oz^PqVACr?Nl-0)aEKm))S9=ZSJ>iX?t>}?Yku<V>4|}PXqp)=_O}o
z*#4=s<m3$7cV?8lK7(F6-Y0#1;_;=nMGH%QYS&syu<?I?$zR&ECrO`|=<tBOWWT*=
zx4opT=%gLj`Gyec?7<tDN9-j}7HhvRLgpqtE(a0LT at O<0Z`+Dqyihx7dj!o+6_xzu
zh1zSyHy*f9J5%zE{aY7mzb^eDZaj8DIiMfSDgpAOV<GAfIE()5LhYx{o6z8CdaU^B
z9BO-D4yx~o>W6cSKu7YH0c&V&*H-uRMYZ~9f9K}DNbD|c!QyM;t_9v|IxM9_Ra^@s
zqOnM#XP`f>0jP{?9g%oXXE>gS_4IGL;fBcIV6?wWbG65#v4(-6eo)6f9*;Iti)(#x
z4XuXa+5%0x9!KJ?`P<r7wYgR`G_<$1`5SL=UA-WFwH9g)w6^B1AjVVOt<kB<IC<&h
zSrQdkrMl%>uy_e+Nn}P{-p}8t%-sN?pq6K%?CtH+7LW+nf@|UnsDJUB7RZVmX9^GB
zYTcO4u`<JZBka`Zsp+&yQ!h4Yh*E9RoZCy1#0<P3IU)8B)*<;}$3^TX5u-o0Je6yO
z+-EmJA`>p<=aj*<xvZ at 1P~PHQ+5o2*=#92T2M1ypcfXnVkAD5mErtkpopHV$=QH!e
z<Mw*v8po!Fh8tWJ?H%yUA(yw>Q|+l-ylhBZR^4B<#8bJ%<6R_gfV>z#+8alFXiY2I
zX#?mWVYI at cLf;5bvE9?A*|wJ1E}b>KbPVB0ZRk4zD%6$=VU?nm#}tk2p4On?F#U0&
zxK#1E4i|3OhBop^w&r(~?XWjG%14TBb&T8X|2orA?sJs+9HqVsXd`;Hq(_t)^dK53
z+F{>_>p^+%adbrRTHz>r*xu?Wf2b(naAk`9j*49+K1bz_Y0ZwBk?D<&aa*Tjx6S9+
zV+)D%xUJ|l+e}9dXnc-}dWWmtQC{yTt0&>$?ZS`tqNyy$Psjk1k?A|8?JCI>KUDOv
zT?bC98Y=6_kZAv~9ef at t0>4ageNG3Tp~J?ax9t`pgJ|9;d0hrW3wb7f`93ugzb41V
zqR$h*#z|dhzQ6^3lxL~jjkBTuMy|eAfqQ2pO)n9`hP&*|j`AHvK8I_h*uKh9-Y86>
z30gO7O=TM$%(QC+ZIh!^)0W^i?S4|(O$X3s?0!f2F5<hRxY1EDQUayzI~^4(94?<S
zJlQ~(?P?0f^(;0WEShO$Qy2I>D*0WFx?zLC0vpr;-!Exio*`+3UpCC1R{wBO;GyDG
znUY=8My40tQ#=zv(Re}8HXBu%E-0F1^OQwAnhQKsAa$cE<jk5 at 20`{+(=sIw6+c`=
z at zo`R4PrjA(6AJ1?@mlbSfs(oQ<NfY))XkICKlV1?iFc{Nf<4_?TkOgswzby^3|1b
zZpO*Z_)x4;*?}M73&oWYLsWfP;HBCgX$uiIz*3Mya?5BZ1chRN%65zm@!4Qp3SX90
z^ozc5np}!<*(`rA26 at Ei?`40;AE+FY_=ggw at l&NpyGT`Y=PNO|c8065d_WBPoE)91
z?2x!PDG=wh#8rEBYfR$w-4-ujmAKMd-Fr;pRSJ-2+Je-yIhxq|XZOA- at fL<r^?ylR
z*;(EG3yFVG0rLEmz~`G#e19Wxvxgp(IL#fr9FaKXdtUxV;B&O^a}f1o62HrYzanw+
zFJ4}ixH*viP2v|Y|E6~TF7ZCj1od|$zR`rAmUzDj|4`y{P5f!qOyjc4L|-cLEhgL{
z at yAT~Jc*0^%I;kv at k>o|T at s&W!WT-sgYlp$?PrsoQ97|wCGpJ+qiT)Be`CULmiT at X
z-YD at WO!%!5f7*n%3S1@)b}tUx>{E1m4EUAyd_EM-fgcrkJ|8Olx2RlUcTrPOl>a)X
zP0fFW1^$Qy{xu8y1IV39|L<AQziWYO$eVNR$e(h2X<bC+R^U_dk6GY9w7`#B;L~8J
zsra{8;2{hAPc862x4`#U;Llp%e+&Fddw#y?HO!;E3;YVZc#|cNR*7GT#5`5MYJgA0
zXPv-lmN$x6BcbX=9-will&-j2-oM|1|6c(o`qw2rt%Inz at M2~veZCKz=v_{Oj at B?#
zKCqxK!{T--K6MuOmn`u87Wf$pd at 1@fmE7Ac at CPmM9{|6?PG2z_<+JkqvcNA at u%_md
z_bvFikOHRCN9#16{lYQ%@aO65)WUbL$HSm^SzuHDKrGrY&^r)o#cn~u-xeBJ84A|~
z2Q~@N-`d=H&!=nU=^Vhrdx5}7&!b+ikg7)`U3fTcYldj=^4w;JdTOn18|wGx*o6``
z;kJ%&A{LDXR)!MG!{N at YTfJUy72ov;bcPaMZ|CMn41|%ML_E;x4 at GeB`$LH(gOQ$C
zpgFWO%#5*IZjBIuw=x`x_C`As-gqJq@`b5QZ!{hcpb4=d$X^p~31i<S9`(1PMYYl?
z+&|D26%?MHcr4<nBoq8s(Rn#^?i?8076^7!`d5aU!c~>ww&+ki8Xky+BfY%?okD$B
z$)Zo8V3_XYMnI5<Vfkp=>dNr{w>{1|=UMh%yp at JO!<pl7^-yBj-SDu17 at XMB>B-ls
z;cMr_ze>as*f&NJk#h>Brr at f2Uoaew4|RkC;ZF$FYD0bOC?%p>kti&J6>($`Xr5q$
zmkw2QsHVdbIxMBbGCC}$Lk%5j=}=WEj)JmEP*n+vDsi`3-1Q2iTF_JrnreY~1skux
zy#~ENs)X<=Lk}UoO5oK7jZniYaIfIz6-c!}s*Sb=;{Ak7*0|JvH%LN>DsRs~Ttq~;
zx2Gc(iERt_^!Fs_Cd)QcWI6A$ynn!k-94N9T^+rj*sNwnPk*Gh=bk9!H?Hx-qTQZw
zc+=Lc;X!Qk4$!T{w(#8|3o+-cS}_poizGr~i at 1KN$e@(#Tan1ZcSoRlJP}SrHi<5I
zmxaRv*iDW``p_5bA}6Lwub4WJ28|>vsROIS$O`_ at vT$oN{Fpk^)!TY^p9YspL^|&Z
zcW%Bb+#Tr=y*&R^jx^m8?&^sT4j>7`!0r88diuMN(BebbGcUBac_;KdW*!qKE7OT-
z^87ndi#`}T^kjdS20p~{Yfpb?EZP_CPr!m4r&&gLnP`AC9!_kI4QvVbM*BA<He+In
zVMcEj6aM+@<gF6(L_fxSs59a3BR2h8NViWh;Zg_Dhe#soZ|m#R`l5ZEgWKQ%om(T}
zj_9VI{%~g`(YaY7v8d>Wyuy16b+;gT%%j;@C8BTjZ9K%xM1Inr#lYl+hGfHu%uE`+
zLeg1DDkqUl7Uf+ovUNSZsZklTH8en3wKAN~p at kZomHCfMDTT(U!P+kxL$;_5Mf##E
z at iXSA>b}U}r&?uUQp>HVa;vB1#_B1z09zgo)nIn>hxBlvI+GWQ=P|iyVL7j at TCpPJ
zM+)-Q2mNLN-u#-k+j7y{d{%FvWvO>b?qy53A68STRHXZJXkObCP58RLFceQjyV|0W
zUV7VSc+WXBu3?SwsxaS{sa>lN^+o!@x+~Jr8(lfn*Aa~=CA-)lEm_qcZ8k+nEv5%!
zo=`0&KMi=Rp+tSprd5Sg2{<ny)Wk98X5QriOo}~X;zCQzEO8@(LuZRD;<h^Qi4?c3
z#LPfX1(A-PyS<bf<2~Wd-bg$iPHY>DVh-ybn9OQ&jQYhh*mvcV7;S at n4nKUqBFX`V
z-^6hGYZ59%e=~lH{`Ul;5Kb?}6#f~x&q0sJv{$Nd7sKgkT;YotPJ7%6zmegz+pF*}
z!!Krdzr;zOMus0|I9WjP`4@)seq|ZHg3;UM^FE#E8CLO`C2_Odn;HFQ7<~hyZ({ft
z89hBkEB at OUJ=gy+hU<*}dkp8}_!Q$$PveTe@#huBICA=5SnxS%fq!g)JLJ|N*@yFA
z$Z&4|1`B)>!@0lRFL4sj?L5Nhxt)`w2nwCJ+&{6v_gmmETHwb1@?`!qu%Af9Eca>)
zJYa#}V}U<tf$z1z4_V-}?>Uv8)3Luf6~4>@Z?M3(Sl~$uoWA{@O73$O_*)kE2Nw7a
z?4M4>zYF`1Q{mI(J|2x at 06!H+`x$;K!+*i>W`?i8J|Gn{pC2)t^Ld5goKGM2^%NgY
z|7C`A`X4cz)4#%SPJfc&Jnrtr{+*J`<0xf;A7*$v8Y;WR<d#3#VGYCM@)f8#UWP63
zQn}Ac^jyy`Nc<Y$cQF3D8T~qjACx%d6Z&>S>G>L?=lz{6H!Df*os9l+hOcM%0*Mp<
z%NcI`fh4`dH2&v<l6yO&pU>#GFx<uPG{di8_}3&(dNwlrn~a|8BmVp!bY^{CV)R^}
z-!R<8_}k^HSK`C<xlrO}ef*4`^Iy&ID;fWF48MxuPcq!i at Y(WJ1L?DX;fp0s`tb2x
z%J3D8{woaM!0^)y=X~t)#WBfU$mr)V{Az}mGrWS~%?w|}@Gmf&d|mm^_ZZIS{hu)W
zT1J10;ny*IntX*~9<M7UPW at WU=$Bd0#~IG^%wERF!}uI!IM at GO#)sQ^9xWnK%;VT7
zanh6f)f$Fhk9*2)cQQU<hCjz}F88O5&y|e+eTG*ue1`mlf%M_yK9AvEMt>>8s~CO_
z!>bwIFLAQNMutDY=$A138Ai|h^-D(2{oyx^zLD{nON(+8>eo{Ilsy+p-0VN~7WB7S
z(0_x`FJt`oTG0Q*g8o$tdb at l<Mf!7pzDVL`{jX;@_va4Ahx^+X8P5G=E5rG?Jk9vu
z!unexpHoOrTCyoSKg`y{gi|h{^0*17xu44aG~uKZ6?$JtMe(P(lS;9i#}z(mz*?CJ
zua){;X2SPL`U(@iQPR(2^DpWDlEj~5_90w-ANNxeUQLRj{KABnN&F2HUM%r<O}Kh~
zqw%IfXCHpb&a^h5LU=uX3crFt6vFv<sc|s#p;)G3#?|<k`L`M5ljv_}IF}n{co21^
zXD`EfysPmfxh;(T%Z#4$`BR2-K2I{7^V!Gnm8dIy4l<nce?j6jO!RwF`s+V4dd~k}
z8P4tSrUm|6hI4(?_eW;?Uo8ERa87?c!?`~!VK~=E#Ru`>IQ_>3Dui=8G&7vrS;Y;}
zb2~&CJ?9f+IOjwE6N8GG&n|{@J-=ds|91=g8w}@m`+)`i*9_<ORQbScw_i$n@)7ze
zKRIQ==Y59reyMyw{C)T-|5W+Ij9*5=P|Uc>LxgkvKW9OIs|CJ+;apGoSSkA23K_FV
z36!ghlfbE|vIF&n3hBegoyLNS8Q*Nc0{=Yf$_{^Qxm^}=hZxTFr at 4R%=^w#Q=}8zB
z8fN(@Ag<McaFQh-TXJ9465gSR*nPsI442yjf`2E&6+fb1&2Txr2>M!vyJVf{Z(}&E
z`Kb_ogQyt?T0>GHT+Ib^T|);H!b75F9O`79 at U^l|CtcPFZ;*9<BD{_PE?Fm^k||gq
zv{s=)IE{fSN(aJkR3OgEuL!4~DqoZp!sM2WKpthd8f$`{U^vmsWrOw<!-<#r?(P7?
ziC!-Mv~ubw3eggOdN!kS1;dG6+30f&r#9+)>76EAeJ`!@r0N&tVk)mNdXl?Apqi%k
zr4{|K#MO7ugwK{3ohk at Gp_4<@jKgY%Q&oNEw#$U8 at 7cb}aO&?q$?KmOPI{{EwBKMj
z(f_riSI$AV>8HMbn<1TsFrxoE{HQcCocODLwlJLN)%$?W3@?alPkdWnBGRFG at S4{+
zZ&tNfv^V0R&pb3w7d|G at JRR}4CIC<28_CHpO)NfRIJd_9V+MT6AeHb8_4oGN746-o
zc{X)+hND|Mql5Hy0$ylop4b3sNPX~n at R>)xQK6#dSEu4t at 3~XcD_us7uNPv8p+O1J
z_Z{I#EEa)+QXRaf`h+)G1~;KQbVfT^_LJUiO>ToPwj#aM@)O>CE4 at 1734H$|jFb~?
z at HpGIBl!HNkG?_BJpBWSs0V*_wOD+=A+I;}4|xV-1Nh)1K^CB4i*62g$M8NBBNiKg
zq5cy}Hv*x+e<ja4c~<kw)wrhlLgiL<wra2PI&V+&hia$JR_$A*{CV<B@|T}S`!3mz
z%kMak_Pw&bTF;RD&hu!$b&B at XC)ICtw(5U!iuN>rsdnn at 0!ArZzE(iZC}Z;cUb#Yy
zb6Me~MtfPrtImYKBq#eyIiXSi$(G8ViY?7kBwwaO)QmDpFTtiLa=OXgxehhr`DxpG
z(N^@I5;`kmQa<H!Ud;XP$IYqQkDp`vZ>jcN2<qRK?K at 0*nJ%?)&`xE4O+I)(DhHbE
zPxGqT{<O{@{mpz!<;FmR$>7Rw&_t9YI1-6^{x?ufYo<+jl=-Ii>QbG52^y+TGbu3m
zS!%6mDvpe+{5n@%zl at 6Lzp4GB@_|6b5%qsAe&+s{LikkjUzhT?DM9jV9{(aVo=Se%
zDx-mlBa%<K$Si-Ek}vtI)5iHmO+BY5+$`U#<SPPs9+&b}oRNIm>NLv_pgsA8IerGE
zd_^zW=GrTq{-#v)UlGXjzA5CBE~=f<t6lcrZW_N~DPImlj=Q=4N!h;0)P7vHS8@~s
zC0|{CN$GED|B}>SmxN?L%5|!};=9j6{yr(cRSA-3)n380Z!nerl*@*%NJ5fNA*I?Y
z`EN=2<lDTIx{ND%%H2}!)p^1~{|ebq(J2Pz>klmSe at E)C^d$X>rE0J6Yhib=$o;)H
zs-jf7jI+l$<&H#4MV*((_6C|iZgA!6yr$YItP$;}<H9uj+D4Z_Ay38yj!J(8+$rUo
z+YifzTTOvwZodW%r;4A_&l?iPC1bMR0{m2aWk2eVSvIvia}^!&cWN?$RG?mipSeBV
jHmL|i({?TvC#{h`qyaM9kJf%uwcjltocm15ncM$Am~u5{
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..a7bc48ace654c26492bb1989c9389264ef1cdc71
GIT binary patch
literal 9976
zcmdT}e{dAneP8_mE`V=^1LOi2oyj$Ga`BB06QgtM^aMKTompYZK~0QdIh_{if^<^v
z_CS~)!j+C at XOZnc(o8z;WG3w-L(*T#Ozn_l;vB^W(%MPtx+zX3vFmn>WP-sk{skfG
z=lkxx)6+?3x0y_uzL~v!@3Y_c{r$f0?cQ+AXs at lQ(PXR9KB-NOB&umcjZ^(7??$zi
z+HIWHgYk!O(Y*P%7Kr|0+?U`|+ckaV^=-^~E5V!_Y~-|ujr`ol++p8UeNlY?KSsdA
zA~)<EdgCac=60~FdP7I_M2$V?s=li}aH7_pi%wg>bE4k9WsiROdsmr$$MaY9Pn|m9
znFj1SRVWTMf at eo`oOm(kEQ_4Z|1BGN#<yeV={<U5o2G&JE%Xp9&w=!Qh4g&>PbBG{
zkkp6tXOVaG(Oy`~+>RiNv<LOVofx$~(E3NM+gi77ORzDM3=879k2wzo8kkcbV3G6s
z=t at 3oSA*g1_8aa{ke>Qj;V1g&HPUdb-P8IVbdE9y2I`Gbh<GUAF<d*~yLbzYJKcT0
z&cfUF{c$%FG at R>k_lVz!++=$Dzp=s#_CmvXjT>7i=2tLh!f1NWh)f(_!cI<3P7dRm
zWRX)xzU7>QYyQD-u7O<x*yX>@TnL1F><n{re&+5V=0 at ZO82_tad_gi^W;pM%rt?N*
z{P2g_x2G7NKN1GpJDL0Y0pW16x-HOP-y!XtSPgQrBV0Vq{SOZZ!^IstTOVrO*}ALM
zJWaq!$|MEj;}SjjUvac^4Sr^ZI{-f)3i!I2TmL&j at +AD%!l33z(L>IUN1oM3pR6yr
zm^pR;-rv_?IG2d9L2uLy*8+4n2xsV{FL4fia0t8)s+*n8I~ToN-%jLeXJOLb(&-Ka
z<L)q=f5~uOpUwY`@uo{BDVPv`c<EFGFg$Xy%^8QUzHT at -z!4#s%>P~7xy)P=8i7!I
zyW#Fd0_FUjk;@Pe*W3TSG7hUcop-r_&ZhBrq&Qth at yOCPrwAE3Qal#Ds&C(bpGC1K
zb1sYMJj){W0liQ|Sph>4^$l<%&jWJG=oy}@G<H`9N)haZN^QtkcY6cR+UG$McV51@
zNUjg*pRJwle(s;n$XkYU73$B(&)W^>O|HJtG=Z$FOwuQLlKwq;UwG(mSY&m;-o)HI
zRP7JOBZwY3MshAE=*J9a{Auz$YZ_;fEBe^06ws%qGWE(4Pobzg|4cA!yLc;#L8;y#
z^JzWWTMhRhY&{6~-=t+WC8fN+p#OUxtUq&p3ZCSxJl9_z{c|pLC%EVR at yJh^^J9g3
z*@oqv&P2TFrT8Q7k=nxz=#WK+cC~T8Jir(1HGP0Z^(G_W*B5n0nR_VU5wR^tv2f2X
zDZE$?-RyTui$gD*qR5Us!<03qHy#Cl?Yo=tgG?-^$XL`Lcg}EW#+cP?I2N40J!rVS
zekxwgY~+Tn|LIehg<g$5x`9}upcS^EV>quchb+a~L>3s%FVEEbG)7+2#_K?MHWsBm
zb7D+Lq-vv&o+1z-D*PFBB8vn1sEZy}DVW`d&_BnVe}dayq&0CHa}Pr)lr0CIDDiR8
zD- at lx`DO8@=facmM}EQGxCtHbIeIAC=3F>+x$)w?Y|IWchhH$9cZ32lusKWiHbX01
zKQ^2<1Wz*8jrk{n;PqXYhvZop00k>k(ApS at 25TmEa<3mofPZ0sgccPP1h=ul8o`SY
z=kn9!ZvI%neF6W(?U>uDKNZtH6KkIMCNaXkzzfyHr(lNRT$r$+0iVJ5Bj at Y{*zi_S
zAF&A;SUtQrQrV+QqmNzyDRY;i1bW17vo+wkxP<C*-0f(1nwwTA+7HB?vz=~F5Va2L
z;5EbfPq_SNv^*B`TvMEb{RZ2 at 6{G1D#<zuUlDlzXzd3j0t0+TX24`RRZ3H#{6|Cv#
z=-c at o;`B*|%?;MU&84J++&jWA6pBobzi#O4I&BEpaCTs=Pwf)r^=df(VKlwT#41Un
z1KW-s>T%9p{1(|`j17Azm_8#i<g+7&1NYq&zTS%3?(XKP3_}e!3(EO05~flndC1s_
z?XZFN2j^xiJUKDIM>scxFHNM-Cu|4qCFkR}<bO8S;VB&k;?9dW?%Yi9b57)pKDv>X
zh5Km_oR8iAn&IBV+)ePVQYH1#V-z6g`_Ps-2n}-<iXD~m%>@E4VnK}?O;^~x5I;P;
zklo7-Ps7y~)){ktz^yFDWn2(0E)nX-*FX`hu+Q9qJ9Ey5Ux1@=E-G)trSs7=Ax{Y*
z^@ZYruVN0Req^W5ewH~eb7|P940jMqbO_0Psx$HiT=*keqKmmo^;1?ruN9q5Z^R!#
zdQT4Pk6nlM7;qaFv^iI(JimrfxX4Bhpk(N=(@bxB2@)r^Vn#XsY-Bj7>7(BUDRWJ1
z;S|I*w0EN3l<N0eP=ap}ACew{<hSCF+$>2xim4dj_voQ{d|N&+NUngWX$O;%KVYxl
zenqjDxeWFWQjx?-3+I4;5%wZ<O4MNQQuvZJovR4gN(5{f$-~JF1z{=xd`Uk}_8;_V
zaXt1kTxYoba2dBm6c16Wr<M5p98ST1N+sen?@!+d^2n at G;P}JICzjMK7 at s>w(|+Qa
z^Z5MoTfyWLi)uWp=B(B>;t|ybr4jRT at lo(n_sSoXp^gn3?(qk=b>%a5-XFdzbXTbP
z&b#w`xaP>3wV~#<p>UIUfJr#2X$`m_QR~>WO{>+kB4OAxc%yd<YBdjU(Q1YoYL+jY
z=Xo5uH3M70pJ>{XbdPx(j at 7n#eIs=nz0I|``CebEx1rVR=~&PuyN5tVb(q>gvTvui
z;j!BFUf-j2>%IQ5`t{!6 at j0#D=3{ePy)7g2n0I&G@*1z_^qJ?L|Naj!8ku)&?(sQe
z^^ev)R@*k;+p at vi-0BTtDp;)dHmvu0S{Jl=TiR#Bf(1nWkc6Y{C;9E~E5FUVyY?A~
zY4bL>O&4?D0*!20A!5`6r<HiMPqzg#kIjWfBlFt4n`{3HykK30${h=8uj9c?rSafF
zJm{D)qn+OSr0;7U-fZy5%zFZ;wp_-C{2U+zZ3Ti$G5r90JG at 70>LPWsYRO2ZAJ-5r
zYTIyeo|vS at h4N)B`2&sKRX?ba3+uHvrwY3=p{^uBK}y{^%`*cdppL&4&wNy;Eu0B*
zdhZOJC~FmZvQxG?O_$yB{fp?;D!8=y_jqo6xJ)NIUqk2CTJAXx at wJ0q6!Z;}NVyLJ
zC;Fnm__{%VvI_lN_<lA%>wvGSo$?#cfAD#=3jM7p0IO>0D?_RA97p$6;G|Df#F%o6
zS{5eVUMs7GR*ul4z-QCvvsLi(Rq&Uq;I~8mZ2X(5;0LPkxu*)fQ3Zdn3jXOT_<<_8
zmKs2%wz8pAN;4na6zQ at usowr%c5h3X;7qbF63?WvR=<_8W1AE9UH!?y_@;!t&NNd)
zL*a0EO;<9PPMJA7o6hvaQwcj9PW2|Urkzcu?OZ$+OC<3Vi)~7n>o$~R#S-?~J}Z}t
zC)Szt7{kG2Ivd}JaiYZp at s^E=b~BV3=<C+Z4&(myt%hml@?B=!oL$Ge+tZnJuJ<>m
zU|)B)7BV(8!)LI##oW>bgDuNUOJBiN3Y;0}woEw6s^;TFvftW-D at UgPhMb&Wrq*xu
zr}_u0TLERNnUS!|X8%eFF%|Vsm`dK2lLT23ZZ;EEpOv!1IXj+cMY71m`9vvk0L9j<
zH9O57%ZBfBR at OH2ne-p$Epu=HzC=P*+SYA}Y<`~z{nnTknQmGy)}(4*!d`P%IrUNl
znH-#eMVqt-vfN$5e#N{0_p4fKdmxmx_JmBcXK2VAw6eJY6q&Srz}!cxDYL(y*2w?9
zz>upD*`#g7w)FS!4rgTE$H_K`@DWTxB9T3yM$WF}>GRY`<Iv$-Wf>C at e}c^{NQ
ziA$#TnyKEs=ALA_4?t=tX?9sX>5Q35+NoZFWG%ZlJFs7jEQk_Mw`KOHG1_9~^8M8c
zL3mv}leW`v$ir3w6(!l9i|wQRZ9n~>Vf)~x1NzKC?Xw)EGeGH^yu|-f;Fa{<{9I7t
zL#Gc(|D7uMxPsH^L(>13*nf$?$|oic?v?m41*bEP<Wo<CXqEK4s^HI5!B=5_n~hJG
zf~)#}MZuR~qSR;k+$lb{DtJo4ReS$J!IvuZ-%#+6DELbX?o;r(c^IIPc^}0k^;uR0
zHxzuCLcd+$6dp2B^0CpUR_SN at d`hhn|F{zOMR+dxJjkhM(jTva)B8R(;;-`YEBsY|
zexVBfx`M0u(@-T3H!3)t&!ql>4cCX>VI)pEP^<L+$4W5AZ$n?w2NhiP|5^oKsn8n=
zPJgjUK7Xj-Dj$)aT&`cC7v%i)eCjkU(b8-C@~NTb7kzSva0y4YR^UZ3eo?{2lI4hu
z7x5q;$@bU6p at c7%Anrv4r)ToK{yha3OM%Z?ER>_0w4EN at rr<<RYld2jf=}~9D0iUW
zPIhS_oJdReUfIi9eaVn*4cS_#J837iP**OeVKWkFi0?c9KMpm&rCR?w&MS&(`AlDW
zuhn-z3-zQ at rZtqZ25l2T?X%RdVPDSL`9T5UMZh+b*=!QCvI7+7P%3A)h^Ksvh==+H
zQpvv1`<+Gb`q58sJz6L;U|S)4oVt^r0K~W_lMfAM2XKI~NfITI)obp_;t&sYvjb4*
z*U<{dbE=z_Eh+%2h16)xQ=OA*Q{Jo1m-R at UPy3ymC-2qfZwD<kbv~_sIZxjGz-Y;<
zYaK&PdgmdrUlB%)Y)~87MZBUah<=eaRWw;wB%Q1UvQB&)G$dcGWi;=(3b}+)6XmHi
z!0&2Y#Pe63e>diG`$fINkhdQS`SLr6#4GI&;{mt7V!lS31sW^ec>GDvO8b8fY&Q9u
z#fKvKT}7~&;r|PGFq?cP<QK(6@;`m8sg!>f!nu4wCvV at N4|-_o_bnO|t=j$(z-;mN
zkU+E(r5m at Oa<NkWkA(b6_bn8OOYv13$x_=TF~2f at qhh}N-X`Z%#*fa=v+4gep})*i
z8q)c+QhyDK)7hjl|27Nxl3vP}V|l+(MgF;2<WrrI^Q2x2As;L>stsz}{y&tzQp~Tb
z2*B<Sm at j306!T`wzgK3_pXyJg{`U#_&61(G_X_!;3Y=`EChrL`zl2WxeooAvLP|Y3
zPvR-er=^bDwDx&1-#-nV(qF;{h5X9-C&heL at j%)y=kLSw+4ApQ;lC?_kcRZ$A?M5Z
zlRXt8N;AZ#XrD+-I!n`%uAEQnqcV4iflnmVm(;@^@JjztPR=%eT>JrXyh6Fk`Tq^w
C+J(UY
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..57ffaa81e3a3f890cc918600c831d002b67b4f23
GIT binary patch
literal 25904
zcmc(H3v?XCm3EKhhXS@*vJJ at L;juj?G8mze4b~6{lB}_N;*k-SZ5&?h(P(4|^kSyR
z$Y6|#M#P=*1ZR`YW+6ETHoJinHoI&N7(+1F7;Ihv!jk0`9wGY&DJHxE#35k)->t5i
zxoW8mCdt`4r>CpGy05x*yXtmzOV@^@ON)HIVoesG_7%;iF4(zxZQ-I$RO_ at w+Co9A
z<C=KN<hdN at X|jGC&J{Rj;`kzt<8hpTgXrhT^IV(*vOW*zlV$x&@?0s;r{H`l4qpDK
zpY)M2 at MejTy|!$K8g`OoW8k5Zz1#I!bz1!e^=s-^*RNV_<a$e5Kv at yZURh??U4fFO
z!4LJ!4p2wz_apXm^}A5razJm_XEkbCQ+7iI2&`x%due4P^r~UM7}1wLXAC}Ll|{0f
z{ZadOLfzo*^vvk|zeGa^t~tioIWjVGEshZ*w0H9^`}x7${dY(04<M at yveI`NA*i*M
z8re(SB8_YsBHvIVk8iRMM&>^sx$YoIymkgEWZb3`8|~eLyA9od9Q3imu!k<Xr2gXi
zOX at GJH}@J at zz5!FZ?Dp4Wk9cK?b{3ew?Cln_Z#-6KuI*WDNt?T$KPgTC(I)U8+K!$
zBe>hhE-f+avjb6(`Hfs((Z0q&wPx&Z3=okf421n!G at CAo_+E*GUP&9n-$08#YYPz=
z*~WlBn(OvOLkIQDlNbymyDCr}4gFsK`pvj%+#0A9G{(SQUlhYoxv#O(r$LU@*r at NA
zOMR%U-}3RC^j*T8<jr%9`9sFQL7#s8vLcdqcHmx|H6wQhX>?42G_vJB!EfX)4%9_+
zZGmQ3KWmO*zZ$jMfIv3-l=cB_7JV`b0%+{0oNI&{1BRZNL8@|AVAj1NpzK#2Jq5B;
zL1u)8^skFf+P{z5Z$XiCkQFfMcT#)@p8<FeiI6R;Fmk#6G9%lE^H&jxM;X~NBlMA;
z`7aO|*(loWawFS}rt@*sI#6~~pw8G|S3(9G_7x at j>dLfe=nbosoY{<l@=5s^wrFU?
z!7;>n9HZN2oa&6VKDbg0OrwaReilO8$-DL99tu86w!bCCVpNCg4vmc5OE>%QX{b5(
ziIH358~CUsb?%1`PS6K!G!8zaXTor#zM~Jlyf{!&w>4Gv;e$n1yZwxQw{_g1cH1gH
zMExH=iO5vkNa~3FkzuFG?Ei^o8y6pp+Ks`3(cF at X$iQm{qx1Lp9*fL>Y~b~SP?<ay
z=isCElLLE7nzB=Bn(Qgnp<gE77Lp%=fmtcheg^Wg)^Q(0 at 5iF`$7m(L6+Dt|G;-&V
zZ}Z({ZIy><o5I@!vzU?Whlfd;SG{nD62<6y^tv~9g44*FhyxnTTvuRS)P9 at YsF}cR
zpa|}EY|Ui?TW~4DZ$I6|WkZucrv805uobwGy;HQS*o@|AibV|V7lEzjF(Z4QAdBYi
z3~WbxH1sD6QJ4`IEQ~e<))~3RK%WuX at 5ESNzA^ic>kw5K{=xl|F<I>zqNq<#-Lh+#
zDthKOC7PymDr*LIm7&p>F3k?s67z0- at S7kr?6;lH$s4M`wqN3hZ<osT!9PqQOQZqS
zxF|@Hw`wjLSc^c%{Z(e<2H$}ZhW%vJcAOT?{q&$f=uW{LxR#bU!;S_j95XPrttHly
zcD;8Zn$YHqhGBnKcup_J0DzB1V~cFxiu1k+MVLYzm#dMA+J}ak{yZ|$1lONL1Br>!
z at qg4F$$Oc^RYo!IWNszPvR0r%7$1B_8J#z at V52gx$sRru3rWAQI-Aol9g at Lhykpzo
zqk3iz2HLPM#{6zSPLp|Ull=*;t#x7=j at p<8BleRArWfK}t*fh>vYRVuA#DnM616|V
z+WIS6Tc at ZQ2kYt_EP`|^Y-yT56bbFV=Gemeip$M+iM6o*Kce;@)dG8all?YL^0g8B
z1+oBUkZtgh(G>cHo=G79BH0M^Ug3{~o-*vm<eIK$+9r at QH^H?S-C7#rYUw`IqL`Iy
z5u2H>fC}fWr$Eqq^?F%-oeJdq{WI=;GbZY2*ksflX4pP=Xc^gUa^U17U_VJ+svP>m
zhcq*w7P0q7L+ at HMREQb&Q~40Xkm#9P{_msfw=^c79$ix@&-*`(tFvIJM_ipvX~d_-
z)v=(WxOx|P_+J%Q1G@~2o2C!GiC>;272=fgvut0jk?X)T@<Dq3ff)Hu1Uso-mJjKu
z{U?D&?0rV)Ve70&b`9>F4So at oLqB>S$pGoX3IgFGo`%vp1;=R4^giTUYmw#@8`(M}
za+`|FwDjWpj{<MODrZe&8OpJ6g>l_OGy#mxPjKf5y^8n1gJeG$g$ewwI+!#x`2+9u
zkKL$x=0%YRxE8r#N*+`OJ+O<`C7+(zi<vn)cpEMT4i at Q|c8r)~hLeR}ITLxgQ#Ep8
zDR8{6hu=|#4sW5!of7*;WMZ%1aQ9zEMr3lYZ+jNPF{usT2vF&F(ZBi$qu(p(9|WlA
zvv)lKRCq(qU*o3%qulTY9y9V2fl3*Ne+d-%ph&WfQ^o1t1!BOR#nEy3o<qgPz+1(i
zRoS>nMRD*$ILXKwLx%5#fk=gKU>BtlMRodj_X)v;K$Gjg9PJKJ4bA-HVMbe~IisEx
zRH_sDlb-oHd^fi1T|k}u_C399 at DB2*M<zn;lr9fn at h2Jtc>b=fjC}ZLz$E`RI4&RE
z>9cv(IJWsj-pudf;X7cM at Q9OH?qyl#-?pyeX;gkn50FS at E)|(6eyl((OH1i_D7&m=
z%e56^)~=*9q1wn!(g*)ZOyqwya(9SqYG4oA76oWU^5aQa&y>);o}CadvK at F7dRWhF
zh6^44N3-3Pk%3Rj^vpkyTao<WQGac<G58YhULetI!cQ4T89m`u96-vtr0jm+nlZTB
zy3nxqMzdEVkGh=lj3)a~lfLu=daR!owckUk!5+D1MeU(`z_%qj|DX|i<eKTmJ$O2~
z76+c at AK82>p5=c8;S~r~<R(9k*l$vXQC64vP#?S!3P~zfQ_M~fJzDOcMHUmCKWv2d
z=(%r_ao7EsRBf7MKQg#`<JI-|35!D)2mJcrPf&lL4$WemquFb)R_`-%b^b_hGx97v
z2S#k{KV-Z8k%19i|HfIMM-5YyUzjnX4=$yOy&3%`58E$B?GGFFO*mJp*LQp at q&j{a
zs55+pO#5Lm0`UIeRxvA12^hKSnknteb*_zK=b}>2m=J8(69U64#1z?xtDUVItwhS~
zOBmTEzj1HUOeNyIJ#EH9pRw@#65|U`TR$*%c3O#UK?9VLh;}{GPd?@&J9si#VDBLi
z_U|>mTwkkao)S?K2GEF+K1M!&3ck=<wC at m1PFf$$_E$!;>)5CdUxa4thv+-PTK(3g
z)x$4|YkI`5qX%7QVu{#GA%8z9hMSkd-yh+ at N{$4%9vSQKE#Or52Zh(@6n2`CP5EhV
zbe<6qEVB_>;o$#LV4Z`mUaQ}50-1Uag at C^8AY8m>XjZ-b(C|cpvnK-Aj4wN<+-Y=0
zNo{rdgaeW7&YDA!E1!TII_vakb}qJ5u&MRGdS)_)NrfPmXV4n<gU-M^<msJ`za8mD
zPUwQaYK6xmp@*#HLM0;4nSO-ACb>bSL`Sk0AR)NY5BU-MAt7Iy_lojoQ|SHlE^<b-
z)55oGXyo?QRrp9J6j$KxFEK(dTXUn?wm^y67qDM}I^(*%6p2n3LNBL>iO0y#r}`k>
z^4Jht%Tfg=J|fvLW{v)#sPAo9I`E{kO)~tx7(&EvRL)7e@?re*d<bJBsM7jJM-CoW
z%A#^GoF`~Jrs;#<$KVWCK)H$seTP{5Gk92df`&0mqm0RD#Jc!i+P_rM#2S`}J(a?P
zc%I`F<zT1Z1ySYq){s!<Ogte9B9Vr at qh|)u9vQf{vP>Vm3?WCOguOyc1;)Zj#=<q?
zzI>eDmy`H?>9pTo=*!?Dx<&a8iBqR%qM6jRU-TMEoiQ4o08s3sMsnBF$VCSBVGglq
z4w(wqBd&&jg0nO64NpbFBg}VJwf$mMBVo=C%3i1Hd2M7T(`=8~mv(md8}s)G0Yd-Y
z)>x`DZl<hcXV3bx&WiQ*C3 at PlIdin`l$O%cDXk}^EzpkAx?_E4wX_8bG!+Rd4m34;
z<$(oruy?(rH{D|;lK!4pccRTdN24>5CSz7-FQg_Du`bi<1Q_p2I~BSz(><M*))i|_
zbZLoXvNvh=#^dQ^GSMb4yA!EYY<)sg83*mi$p9F&V>PWXbvtw3fnP~7WWu7BpCiWP
zAM*;r74euX#Ck~x*)D$XuY>nhT0i>cOHULO;zwpBqVA$Xy5N{88=WYZ+2#C0bcZ;C
zh;MEF)=rP+(?&*ov(Edz at 4ZRdkBU})bF%i$;)#bQX?rHTPtX&SW&;ArgaG0Z=eDzP
zUN!Ok8Cur~J7;Jg`QAV*?wvew+cDa^lWE`frYRGjo}oQDWjpXUOD7J^(0-?1g{Ui=
z`0E+kBjw<Jt$gA`GqhW#ovdjuPMf*q8144yi!|-fbdvGI8N^NcDk=U)Zkp*U|4R|7
zzn?hqttq~nCT~OH11+Mh+*dMZ;sR|snjMH3kMiU4W#7bCi-ede5;Lmg_Xa8VLfV97
z1+LOFFT-H+6lTpjyavFoA8r9XL;WMT43Bv9{sK!j5KLaU0M{3B5y_emf%GW{GmshK
z;tzUeAG9Ku0vXni#b{~5l7lNW(M~`lyBc)Qq^BIXSgpG=kgi<?)iVM^7tj=tC7=OY
zzE}CNv0ZK0$mc>&>6zOg84Uo$)^~nG8oOp9s+ at QjI6I)Fe*!glyK)UuohHyjVCX4p
zDyHzlMz#z at x%iPz+HXDt9TEFi!>ffMSHplM$UHAcGP&QHimc7WuR>Au{Ccv_J}~?)
z<|859u%9c~qz_Jm%;C72&!ql01O>Tg at P6<Y_O}dJZ{)(*GD;}zZtK;3D_p$-f}{5T
z8{R^*V)k0}d|5R{$l;A-m$@ug^E?L7YL3{i4p)JXo_`})W5JA!n+A^9^-MElM-U8S
zWE8B=L_yPJzd0;sWh6I|+*0VjROw$jhS%8>ApIo~`<3Ba at IXQvY~rODXI>G>I?NOZ
z!dudH1p(*K=1$pgltkE$?;XbvzLdTYt9d0`%`x`~{yYH^d)y0dm))&g=GN-0FJ$(Q
zNo&RM1K1<S$cg8hRq~NNVt>541v~GEJ*+4%Sq(<^YPHjQBtd0;0RiRgOI(EP1#jr`
zE85>%pUTaI-us);L#CXry1M*vXXQ%yyVEJl-<t6EB@?MckLB;|@h4*O4u3M;Q{@LS
z${hcdv6R23S2V_`#UE>@Wv?}X1=SyGYs2Da_4=)jguf#ZYfB^@KJ`oeZIKBkX0Uam
zo)_2V-(iS(?*TH`$W0~Qc0=#kLqCtmv0*7jyWS<5o|d%w{0RXf-K$8Qd=_L668yY`
z_4$|=^KxI4=@Y0F9})P4Ao>|X%R>ZJ)73s)Jxo`1?fToh_4&eJCm3_h&DdXG6u=Md
zLD`}S7kKu<FJ68c_A#PMdM{o}$_u@`S}*S})5{INUfzuQ+B%xI*}^vqcfdL$Cs^}4
zOJdc$NJNuRE*IQ<c#)n_Wkskp(G&0JjwLS-2A8y~S()hTO=A4Qqp1FV7w%+gOfIEV
zFI%$YEPv(dRwPwve{f;d!m8 at i&P<ETn$0zfs;U=N1?S5K at L*xp=w%E!d)bQB^m<}9
zVR%LqWrjTau3D-2`pbOBPnle at 9Sa%poFLo8K%q`pwF at JDJRXQb-z;cGY1zus5<z>h
z18cM8*}%C^*8fQ7hSIVdiW*8QzE#{%>d#GRD6QN!vA(qW`bpu^+JVW9rOic8993G|
zSXy0QS_ukJf}^3dr2go<ZN96Tqr&pZH<85SmHo}Q2oQquJ#?1(?5(fS(RYWhczO{u
z!UmVdhNHpm$I*|2N-Yi{v-A$%z~t*EZJU^z at U7w-il~pP;6Eytkdr<8SnuduSN!()
zD(jD~1pCcWRu>6eT3WWPXnASH^~Lq2{(%Wa=ap783WsPK(bA44m5ub{roBMWF2m4h
z<eNH4`+aOLi++H9{IL+eSyuXvuXxJj!~5pDQs#M(@A&4OQNAI)v<FD#D!dswyk6;_
z?Y`n4P8e73GBqYs5Y$vw<8btDAEh?{yjs#+4*h~ATv|2&U-lKB?mMcqY)xrN_~;7I
zt(A0z@$DOs5L(9;>dpl1U0Nc?lwyr699xRD(y<_rVvRl;7+Z?P-83FfUl5HhgcL!q
zU&7)(ll5Xv-R%;<=|6D at dO0q1uc%V29jmJO^Ayk(F*)QXRf;wGifMG|5%dLI+!K<d
zSbXg?nx3wT#n(@x at gfX@kNJ(pipqT8WRJ3gVvkB%;#-|d5gW1!`6sDr{`^ZpU%)9&
zs4Rd#NdC*tWnRxV;iu`ESaxI^oxUw`28pWU*Xi0^SHn$$e!dIUv|A)z=4!cB%0JzO
z|5V~)4rXmXlenK at RJ~i`C%W+aBtFlD?~yotYsSkyiL3EYZI4TQl>+4XmlD6gg+C{7
zw>5a?lk{J6(f?M`SG(|GNiXI=*7ml<dl*L54<z2{!v7-i0T=EQlgD&zn+u;TaoTX=
zWvaxNa1izB691kHpDFPlxbRsLzukq;6Sy#TR7-=v#m^`_2FM*#M6en7oT9?~qt^Vp
z1YY1!_-nXdrWF<DHx+lk at sLjs{&R{7^VMu=RTy|ddco8t5BkeI=&t}iyNGrUoq}af
zl$;0sFFf#RSeM4L=MoS6Up?>#J at 9@Hz5ne&e;mFX8PA at RfzK(LDSN4DB0s=Y82Id>
zd3n4}*5V#=wtC39Rp4q=WljNE`+(E9 at 5VS&q5Of$R5*M*JEI=>jUM=O9{4*R_<}Et
zueZ+wzr_RpsR#a&2R;Y=9<RS&_P|$p;7Q=*&vo+Fqr8a9qaO56dEn)^700s&sq(nE
z;ens$foFl=QuHOqIQ(KbM0r@?mGY{9f8rshe9HLt%=5q(d*ERYe6<ID9pRX>+~r#y
z^fv*YT{I_8PTyoxxkuo0oeTV`b?-S3IU1hQ#~T+dp4wn0<wIswJg%7+u2|k;)tW0?
zO)Hs5L{_v|i%m1$-yaMHYxw4TB;H~LgYk}75`?i%D;0@{TVnVLhg+;geX-7DWO>UO
zCVQY=EVtl^AXsg-B)SrDE10q(E%hexbYUkw0u~ZOP<T;$XHQ#rWy at l-sxy_0RaKL9
z>;bvPToygAp+0JwE6iYMNoqql6_52L!Yh}59;^SZ!mHxFU2UY{ulDU3W{VXvBW>6K
z>a;dG{&M*aE)3V2O(x!Lq!Qs~czdB5PqU}DEg_gbgG-~e7@}?{N`+m{;ad~Inr6JL
zu~w#g8e>*WINuB|Zcy78Y6oK>2*P<cuu&W(tJ)z4Z3>cFtTQ(tMtYM7Lr<9$Eep|O
zDO-g^D&1;E%+UceO4UL~)skMk7V5V=?MBo(1X at 1Y{^p_`)2pIOf*O9R>1Q$h1jTi*
zM$`qoh^lAO&l&VnOFtp{Sx7%Y(GqlcMO#ob)(GAj!CWIKYlO at iA*9CP60Jc85fW;I
zgqn~OwrV7rm&eKDL3q6JjPQoT1cq#Gv1)>yy(truN5bstY)!_J8_iC<Rde%>jhWz?
zg>b+yw0Eu#x3zY;RE}k<UE0|b>*~BJF~+>Hw86z9dK>7qqZ;YvmR_1ds!cZbbmxxe
zf*PTtt*d!Mx3`~yAnHzZ$GiKq#tW*FiS{bfT;Jc1uP~CSUNY6%Xl at X*+mX+<i)k}B
zxgimj`j2$B4q>8jUbBWVw4YN*a1o>=6MbE=c*2aO`@`Mc-C`{{^8S!L-DxXkp-0`)
zB7{)2X<8l0-Yd<nM9+Gw19KbR#iCg=@v=A;zub&>TyD0<Iz at CGxmK)4O=eqXs;?I_
zCIWMH&y`qv%$12$8gGQXXOTu{{8z2v>k^-4+%xCc2$Ukc1T<3c9L9j^!!{qu<V;$Y
zvx#}EsWgWN7v*=TO?rpkaE3?@gcVq6&NR(lyuDAvx^a&qFs<?O1gz;;lbmcqQb$&q
ztE#c|pJ_HP$8;`+ at iQ0`T9&Zt+b+Y4kwn`{yun|ESN4uWT6!sxqz!FhsO(*3e#S1=
zGO0_NS2LkUoD7i>akvBFyt13_F7!N~UBNuG(F%)BbDUObF=3LyExil-(pFg9Pi%M=
z!pMfs_2;#SZza?)V4++ at sEE7IaUax>z4#u&N~YshSl-0km95N`qkP;|XyEs2Z`v|@
z+s$OGXMIB4ucJ~peyarkip3v(>bcT!Z%rtl>^P%u#&9Pm6RokXSWi6BO8HP>1oEE7
zbicBN0%TNkTS5)cC^*k0ruDv!8vKQcNsN{iasnG`-ng-UM!YK#OHvM8V at 9wp;-J|M
zyvx>b-_#<hN+hv51SuR>q`SJJz3U?w8R|uNL%6mFklEF{9-N<(4|#peT%V35+ss(}
zigafZRxm7y^bd=+#99;UJA2G{%!+qNB$*IXvb at 5FI;wSia~4Oi=y!^R88M3)B1Lzq
z*_P at xJ1|6DN)epVk8f_w3s<#xO^RV^jU2Xh%?ixv^xzU}?c5Ng^&{13#=Byvlxc13
zOW at XP?;R^<?3@=C&sgFmCu+3auows4MvJmZv^w~g8UB<9-Y55SNe;anRB{eUoE{Bn
zw_D-G@>!ASzryfFhI2WWGn~_Z+XKIy;pZ~>N6W1|(i>v<To1gJ;dP8YN&-+w4eh?G
zew{CII at L40!-KxtgFfRyZ+p;xi{TAS?<Wk8GW;~`lTo4OCLGHCMG~ie(X+S08$IZ0
zzmN*a;r{%F2mW)0bG<Jzd<A4Fy{|L;Jchr=a4zQ~hBq_%BDwEFc5*qiA4$dShqFEK
zjSN2 at e9F$O#K~{8Yp8Jg!#^r+|D1?@K815Rr%2o_=UGP2 at 5hVfMiI&9c!uG;zyHE;
zK3+d#IQQqX4Ci+KPU2)I?cJ#UHe)}Jio3s8Gn~uWDsi`*1=xpEa(KV)^uT}3aNggK
z7|#296!y=QeBR%H#L1rHaj1SR at Su-);1 at 8Q+ha0(C6oVchI4!Vnc<xNL58<5Ifod|
z<(!87Gb-*lKab(uKN*RWALu&;<%b&>PH&SG{ym1%TRw%~%H(r<PM8WJ6taijVJZ4W
z4CnM~7|!jCOPuVashZ?bxy*$t`8Jb7 at 3R$t3&Wcj{s6<d-q#tvhS9&ra4zR~`AXXD
z|5GGR_RnH+PWPZcpW)n|E{5}X+r)5g&rJ-ccZJFi_ez}X at iY7ZM!%NfFL=<u;z9p=
zMn9X$d7sfYFuXx-?vmg5JaD52{%eL`$mG<N;{t``T!cgQw~^ue{+d3Gs2zIx&PLHM
zXE>k7+8KTcqyHhpx&6;dT*a-D|B?$=@%%c&`MUfulh4Pucsg0{<R|>TI8ovx_fi~6
z at 2L#ua%w!})G>Sxle3KBa~a;}A-|vDD;a&3;oP2^Jn;XLIQf&`M>{;|-(vW3rng3Z
z!a at Eq8Qv>#k{@9B28PdL_;(n-j^Y2p at EF7IlsM_-{r$NI{VzP|pY@>sod^9NJm?QG
z{A6ZlvHT#zZRgPp=i_Kfocy+q$?5UHQ%p`Pqrb|7-ua}_iF5KN{#I0!e_(RrOwMBr
zZ(#V1)FBkIlTsUbsr}f6(->3vnG09<k^00)$ywx(Yg2TmqHwa6N`(g=@W87*@UvYw
zJtI*uT)5J^$^-u&=4bLlMo4j<ai~h&=If4hgTNcnru;CKh*7AW<H~=8hjA$S(@>}4
zrdR$WoR634pPPQEkTO<|>bG0(<sS3{4Ci`nhPR=v>{s8JkbLf++Zla=(ci&vF8 at A;
zw=?=@8P5Io0>inS*Cbwqb1 at EO=Nm3urf1sw5_j8A-=k4+`>mYeTrani`{B2a7$Jw_
zTt3HVGWi^jdf;F4!0At7skr;~&mQ<=9{6(}_#|@hIP#}^;9vE?FYv&x_rSm7f$#Ug
zpY_1s at xaR|XvXQ+IUe{|J#hJWC+5{<kf-8pu8{7`w=`F%_^g+>d%RY7;2jJ%n4G`2
z-Zl at tX@>K-rMZ*}x%*2vRDWj^h(i5ck3->=1fmc<)fKMhL&E1XoaO{7gr9;#(MJhH
zA)JOt*|83FDukbkL(%sUh(h=R916dZKor7hu2%Rr2t*;g3WvgfNFWN~r{hrgZ3Lna
zUX4THFA#`AIN7Q2R|rHQ|L}ZX%~x)E`jcZS3Rm$q!-bPPDh&+pz_rpFVK}#^nc-(K
z`imq^avK=FhT)wIU(e*wn5h1vDhf5r6jdSxybD$Nn3Eq*qQ8t$s&>M=8Lq~kaJBYP
zGp9e3(W~!oh+f4WHT&rYh48P5n)6dB>x7 at da2jhWghxcp`Kgt4!oSLJRV93hy1>~l
z>omS<3<*-U5k8RsSqyn5oDNmi$qHd|i%uXG!>P?LuODal*|JWj*JNGE_mjaW!_G<Q
zlv_{&StQ$uUX2AcoWpRUpGzRhT867wCj4I+E+3r<)}Cg#Oz{N%F~dpsZt1*<bb&%A
z(o1szm1c&MoobxE#&Dwl4iTeR45zC4-tHQP6a5c}808U$ll-j$)inA}oC=+YekWa^
zyvcBWUwpuDqJKhAYuXIDX;G+|<iAW8C?_(U=wB2leyUO%yRBF&&Q{Vncc>a(7saaR
zTN<sZ4POFjRjsL%CV;BZ at 2|(cWbydW<FhgI&pq&Qg*1Y6dVjJ}mFy)OsTaX2d}UK$
zOZRkjUY_XMs8y|x$IV24Jke*F=qX-LF)ATE{}%D{eI at s|{*r67dF)Lwf5|GoHu!9m
z^ku;)KjC|zf}ijnGHIpzBt+lyn6YFs2ER$y9{&BEBT0+_WP%6db+|WrW9hqk<FPK{
zI?T5h6oMf6yf0QI`}nUjKkcoo@<Tj at uOg(I^8Iy;KitPa_$I8Iz6{W+ at YkG)D*Vyh
zY2rf{dA+_TUDcQD#TP^txtyXt(P6eH>AxCOtxxu1Wd0WA-!Kozt-n#?>f{y88B~He
zXl+qzjXHbr8^nad`Dq<geCq7Q-z>Nbc{1szL-DDz7eDP)QaQmn3Empi6`wkL@%KwU
zZvSORz`sTEtF?-3r#wUHRc9~#+s5Hvb_D$2m;BuRbw|K|^EmvmBjCSH^7H;vzM%T8
z&VFFDB=g(@m)dUnL3vT`!#G!k{7hZbyD5 at YrvQ2Gr%h&*N|_Xp|BuF@{82%TC at 13}
z{c<@ZNR%7tCH*)>rVsg+1*nlsH~-C&U+GZ{D!)|MWS8i_T)!2r_<0UTZEpS^5B at u(
z{!iooHxK^Zl7BWSWyP)kX0!?ayX}|Bt?EDZvmA%p|BnEp{?on5%WtIqdpL-?^1nL&
zT4L__xsg6bKsiPcI+r33l2vhf4!`5Y&rWH-`j(&UpMk?|{{dj6!qt844%zY7(Z-94
zdxaH&nfTTIiNbH5>D2h&F%shT|0lr4^Zz5u9e!><xx{Th{WFpA^lK+N{9Vo||LfNO
z12B)L|M at 0|rC)NA|ENoD{f~R- at 00pBN`7^6>)+?0zj=kjv0XBfewr)X`rncI-SPL1
z)E}4p>ZJI=CJO#<u;V{PAkXVgaw_WYJ5{sW{t;!rB9Q0Tr2UmLu*iNAsr0M+>NvF1
z6z86Qo~D;SD2m>>DqJgk8u-VH|B~|^4yA|m`*A2fh0m4!r at x!!<u$4QiyTDV-TxJm
zUwsFaC-*xwrAOgPzq*bn`(66|(tbk{lKpdWD1Ie(vxoi)zr$GPobtblUjZ9E^mj=8
zw at E_MKM#lESNi`G{Distzt#^BMbSG~W3S)(EBQ}F;7}}2QwrpHo!_a*lSB*Sr^fLs
zlHYCr7RmT&_J_bf-uzLv(ow1WME*Mkhmxo8%cTBlhdlqg)$dfR@`zKRzEV-=l;n5N
z!tV}$q0VcHPhkV#pNtC(!>F>;?_A1LzD?P$0Q$RZlIiAuUNTmqofkL1`kxbZoCx(w
z=|A;<2FQQ3|ETzt|HjiTL<PjJ)=ZlNC^SDV#Np=u0x*|}K(KEj9Uq`gZC2d=D at WUS
P{99HzO#kj`bo2jzm at 0bR
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/depend.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/depend.make
new file mode 100644
index 00000000000000..71cca2eeae0867
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/depend.make
@@ -0,0 +1,2 @@
+# Empty dependencies file for benchmark.
+# This may be replaced when dependencies are built.
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
new file mode 100644
index 00000000000000..0cb920200839a6
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/flags.make
@@ -0,0 +1,12 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# compile CXX with /usr/bin/c++
+CXX_DEFINES = -DBENCHMARK_HAS_PTHREAD_AFFINITY -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+
+CXX_INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+
+CXX_FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+
+# Custom defines: third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o_DEFINES = BENCHMARK_VERSION="v1.9.5"
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..cbed841ace0e4bc81b9cd073a8e9d19d7e384cc7
GIT binary patch
literal 55616
zcmeHw3wTsT@^9xc5D_y$Q4<vjI7-4J&g30HNg#m}jSv9^SJ)vW6Nu(zG68f^g9*qu
zL|H{wue!3nUDx&PMnw#QpsTB>tFpRETwjUkg1RU^xmA6tXKFgr2>RE(_xt|+adJ-o
zPIYxvb at jXFaB)f5<k*-Pp+bx}S%hN>6{72J;pam6SST{Y7)g6D#4*i4xDJ6U5iTcO
zh#gJ$W8gl7o{xq5P<nR3{dl-k_}qEy*H-Z2gva^=Vs+#o-iv>nLtF7yG|TFkl2mkN
z(HTWEO9S7YVFh;2u-ZOOwzf=3!1tS{Bnd0HD8UN!w*tkkgdPN~;9OA_Y)L5VI0>Vr
zF>jX^yzRfxIkZqX9~pI8u-27O*!taY=M}#Pk>RQTMadl{d&VENc#!jvuF}f*OUq*R
zoV>Ri=}S9GVyr;Ct27wzvI-yrXZy2|s5Cg!m1G460`^zuCBFk?;>yu!77&%96i7XB
zb8%XXu-Z1pK;|u%T5X$>%L3hJ&n=o$G`Hy2Mc$3hp~WC-=UzKZC`<3L+V;daS2P2+
z$6`?p+Z<(q52aQ+9&`?kMjtfMw?(I)W}xpa2T7vHbC`)fH9Gz4AbK?Udv|>wmH+i7
z`Yxb{(wXC2z9?GCMQ26L<uahH&TtNG2e#lpoglsNJnMP6Ebwn-Ni3e;Q;}}<W9YcO
znaJOE7TbaThn}T(2R2HFu9oF(dosGQ6?koi75E06xx5M-=lC=b1YOwjbd_~fxl&65
z at 1wlmd<&wX=sU}TephPG4vYr}yUGHel7D!*tiX2i`|&QTqZmB1V2eM|3gS~oV+_4p
z>Pp3z?$Ap&dkOhgS)*(zT9Uw7%dNmR<*XYe2d)f%t`1wfdUeq((r|{g?Bi=eC8k at u
zYbBP2RIj`&P~|GLmcQ(5KMP6-4H0-9tWp|yU1nC+Q46oZ9Lc4D%}_6#&PzW<17QtW
zjviLzeB{WLGhM*vU(#x29e&q5DC5oXv7#*SWzWWM&`!mGb)e#CL9ip#&7QmDn=)5|
z1(g`yYzG6{HEn+kwbV5at=Jf{Vk5KSQdePF!H2f#%NcHK9yV~5wQLg_huK&*2!+C0
z-qmsr=+rv`Di_pWD0d4qOZL2M3kMp2S+<~N$*2zK|5;h!dy*VMP^z%E7aW=}J?|dw
z=-^>Hp5TRPdJfemS-z!#@31-k&l%vsuRuX3#|iPd^CIjFA`3hLUZ8o~U8zvYWgY8W
zYo*#-oJUCFvcOVTKI)O`Odsfy5|;&KCt!6*0?!v#V3kZ<?cCYrdA1s20vbmvC|^4V
zwYw4^iuYu=mj);ISX<g%d$86+C<{D9Ij)Ld3vqmRC%%AiTHHlF;1rap>?y2{Ke_IM
zSDr6QgVW&UIvKNKdab~Vl%o}Jl3}F))y{^2E)>lQ7WITkC^K6HRA4PIwc0j7rLvW=
zI##)MAqIQ{16|JaRWc`Mdb_I&V7zaodpF$e9En{}R^*3Vo$vzr$vf~%0-aHHfRp8`
zGFKYD$9 at _0PJlax&Fzwum<HQr&YO!}-r-iT5c;5X at m)yfY+o1;3Bmcik6}tHu+tVJ
z at HAEcsB0gfBcen0oVf=p+f3I&3)-l8it;fid|+S~r%jq9S(FC;X$9UY-SF`Q>&v$+
zr?tas`|cp;3JddV`>v9nmVNgjFmSFYL3r7B&Jh at yh>^fYk4uTxpL*7c{MVkY%ieLK
z@=t5oR}&^Wf$&X83z3VjxfUX?*^#~7yB*FI|G-FKs}*?3`tpOowziG&)`pJ`2HKle
z#E8Y~(OFl6;1fHtk9%y4)L@;f74M*`+X9ERtU$X&q%z<E4tOid;%=2-+m0A4J~w!y
zdWG>qEncq0=V|dqE#9idS8MULTKqmO-lfI2YVmF!huYK&aV(5Q3#~^t?oOL?#Z$Y}
za6A$C2&@&0_WSZ3E6 at YInAP^LZ><ggj<sSwvpNP}X>Isdtd$Pt{Ro=#z}r?#m-CTz
z at g893e55_z4fmpz<Fh-O_qOebEm|3$Z7us6i+1sC9VKq*2bXSz!i6_33p^bLS!-ms
zVFe!w+Z@`O!_nqekctMHL$~t?i8<48Xa*hNAPamOOOiFj`)Iw(fVvx~VZ at hIw7Dcn
zlm<#f>6VfNz{F|GyPWNfAQ$q)npqZj$_lP>ZIh2X%L=;6oRhks at h)=~KjnED+K=>S
z?Ap>HodY~!4(hVbu8rV7Yayl8)&(ts-8N#2p5{!y!ESMs_*kcz_}INmewYgDy`4wU
z#)3lt0SWD<4C`{>hWNDrl?JDT8#AH`tc$--zJdl5Ta<81X{TWsVbjeUPRbNo6sSp|
zPR+R-`9a5qok3ZkM-3ii$0n?pPoVfmqZ<^hEOy0U1bw0RFzBhkuhtL8#MH#}UJqTg
zJzlap9+D=5eo$uHd$&#BG278Q9fm?3v-|a)0(VvaJ7)Lq9Sd>UK=iut333s=C*TtZ
zCVG#-Cul`P at 1gJ{nVLGipMtNp<wq7pv*bXvH1H)ghHQv58*LkGNQf9FSpedwjv8DT
zz|50lj>l3#?DeP*Hbc-BLBENA=24004KTFNk6|wrF}$JX&E|!6u%K6N#XE3<F@@}q
z+a)5|mO%-uh1W2sDhv3bv4>|6IkHwNSxW<(RA(P9IcOGckX?@KFZ at ss0yoG)g-!__
zysE<QQymlv1Rd01fI*;mSI=|*!LDVE3+7Ug>qGW9f at VahpR`8A at NFH9H6C)gAx&Aq
zmv&2l5muF`CKhbB-)a at jpj~hl3>rZJRI_toL$lvoUr}cTp<0qgSTB(ksE`b|kXi at X
zYNY at sdiH$&BUSn_s<g at 0K$@-<ZAt~_Y=0GF%Ef}zoQ{Y2>!za4S|3tkNp<>`_$pic
z74vlstBXNZ)KQh(0N at 8|A0<`X{Y$FY*B4I<o+#b4wDJsF4_RRKEp^_?#+K%21*Wt}
zu(d$NM2~a#FIZ50wU8=&R^&`7NdWmjbN*U3^Hl$^a3UP<DKP%gD7MvEx9|dQqp!)U
zyiqBK3pY^bjsz++M9+yowr>3hM=T0n7_Xd9_2tX=I+wS>D$;4e1qnsLGFR&IXPxaQ
zfpp3*O9NYqpkGWa>o^`nhw4kCW~n#~Z(%kV>Zex8-rIV#qPe!o>#MIQa~5}FThxsS
zVHmti-Zz7lzJ(_>Ql4Myt3vajRdGEF8^MI06`$AzFMB>5g_H%}(PxR&%ot3uMh>@8
zQ5=4&X@;r6l0$SuQ?$<30L+jU8r4W$!ZZ8mtrcb_Rf=dG$Ghy7zaJ=zeLkv4E~N${
z)E!WxTUM~k+5RvvvY>>Lt1V~!Q_dq`e2c|Y at S?N*9QkUEJ<@_Up%oZAVF0-j?iQ4A
z`&mc;Qz>c8z#2Oxm>gSl44eA{>wQ`iN^vU?+JYy*6Lwi$c!$!0ISviU5wTU-0)+?>
za4cWaY2$p!&i1#U at 5l8#9A-fqP8Ng7H4Q7Rj`%`rLw9^>%qE*f)UIWX>lxsRX}a(p
zYCWkk!n_?kR<)E{;{4|~hI#<rvGsgG{uSA&(TqK6&ik~F8de%SD7w_8m2&mN?uk)s
z+1^9V+7egmTjbk3DZW;<8`$nZy*V5Utmo^U(Hg~HUiMI*8!3Bp%>~hIKJotrxdU6!
z?BKGt*{x3OlbRP+G=;2h1>&|$>fcmTzd%_ZTW!_0_bmPQzO9c%6fxY}cg^}i&smB5
zR2@<N4j$SkpGWWhqa8|vCCR0uN|LM%d*UtUy&JIENU+*^VyuE^{DXNyRez#kSaXq+
z^_b#owL#5|k=)ACyNUZ#R>216B_m)UkDXz7OuPRr+tJWa7+SV at uqS~{#cH%cw3cle
z68xl=O*KTCg=ymgTX1N%pq*9=eCC#3ALoMs)1c{d`%jYV&Nz&K8FgT1Y1<}ylSIBu
zjcR*H*7AZqe^L3XvI;eweI&N~DHy0gXNSvrYAYtxHhyh&*4E5#s%SbtJTU3>F7h=s
z*EH0JY6RFB$0y49ad{q`f2eGFp6rR{{Pyn14|E|v;ONxJLPsOJRyF;O=x6y<V;|<Q
zI-7j8zKUj_^qE2sTy`jBav0H3>zeI(SsLlzA(f%GntiA&W@<%YC2h7^J3`09;Q{!7
zJ>FX*Cm4 at 4`e1!2P at d!*1U?E3uwal5=@a0N>)=+$8kZEH`e!oSewrj~0J#l=gK^aW
zqV9(spzfgZmO`iW8k6SIt$U{R{yhFd`lOw<{1a#Utss4AaBgyG+tUf91#daquL1xn
zPdnTqH^TPeG?Jq%-;U-~t7AqX*r;dg`#)NIwILMPSX%Hj?4QAALbRIRcg<EcIgx!x
zw1tHv&@PgS#$-??;gRZANfp|IqV<2MXZPU?RnKH3Jf2kpP+X5tB&#DC;gSesl#1`=
zP8Z*XX?Iyr1K7&cA7PaMR;F;Vr4ud at u{PBT08|^bx(z#FR)-&}X-Uu*ADTg^sfTh{
zFq9Rb74~k)0J<kCMyS5npC=TxeG8k%_7o&kpP`>p(-{~H?}DVZKg*ej@@Jc)JuR_o
zGLFGS8O&*Vdb at 46NCi#g66sHzoFEU&mfSG(l<kUPaCyMflitM7<l>%PKhQj_pqZ0q
z465VCRVSQcz^YU4U9h{L>eK$v-vo;fA^PPn`;WESzK-#qR~Gn!%15mxk)J^^tOOA@
z#~%syv<KR~XG<Q1FoRL)PdlLWyT1e(9<irMEBj;PY>)NrEO!L=@$OzJ<xg3A{NJ?p
zmiy0b2Uxc*nnh!^(3&pnWW$CiG&pKQ)Phx0H~O=zMzF(({{ESB5VRMeUC=Kh)_-wF
z6W4!hU6wPw%w=zyl?9K7ba<5E3*2wSjnHn{0^rC`)}J1TVm;ae_flv{<eI<C6lUAo
z0K`xhxYgAPcUTgMmv?xF-jAUaT7n)c#%>AAf at 2V~XmbJN#wHkdMlS@$b_{6Y;0 at I(
z*+S74sFcvz0J6(HMU_{0^P&}5)AomL7kiE`n^icsfIFg?A8wtkrTcw!?}EFXr_B%A
z2n)=6Ex_13$UF2f*tDYJa7&i2igBx%7KGr1WC1T=c!{LpRS?WKVn1{(zIL`3VlM(+
zgT5b%-4O1GVw(?(^0X&9 at l9-|Lp>*$Hq{oI2KBt}4DV;DrGB=V6|Il^%$Zc>N~m^b
zyyv`Z7>HHvOxslLoGFU{P<eN*xEIPCOTzOqWd^-mwev(+qPNS+IeC}!cTY*F9!mff
z!&DN(9kDJ6PfD`3OhO7UaNOoeN%nr&YG9B1VOTD-AJ!>Jw(rk=SS?r$TH9`!qTSVs
zckU42!1>N}@-sCGz=C3n__#k9_9-lQDY)`k`-}j(hg#ppJu%zwVR9LEW1G+ltcl06
zr at C{is}&-O9w#I#A&vnL2B6bYW-#D}B4ERfM}Y=6!q8vBr)Xd!ta^3CJ{Q*T)ZVV|
zcz+1?L>aI^p|q at EIaJ7xf)nAu+r)$<cyatUumRTkd`w_svdq5sOo)e1;9y1Q#_VYX
z*c-I>%eV{3bdj6$c9riP0L1d`zFW?x<$<Ps)7UNWY9xaFuT&7J=*-f<7wd7|5fAg>
z(GhGZF}sMy59=$gwJvqR2^y?bFqf1^MC5)~xfIU|o(qe3G|VbjV>diD)d;<`71*dw
zdg1WxK46GuL9 at aN9hBo*c!G@^Ul}xN_$=!z%u_?n8qlCK(V88O at PP)$cPG7JkG-Uy
z!xUKZ4h^=W??xdFo_y)Td%<3NzX>DEk=NPM73{R%u8n-V6pkB#BCUwZO*&N_BoZDs
z>jo(eUL)I9XqRBmZKKs$T~Sw4d%m{@hkOYkZJ|wE3#>uuJK<Je<y(Tzjs}30TWlWx
z1UJzW^Uoit`;XFD*Tw26gMm57odm9IFZ;frG$;-J9;dt(jLoeS5ETdJ)YyWPSfQae
zD2h&i?KJdDU;?P|Qgs-CD<bEh!h>*T0eOX2e$W<j7#?_|=j&)L0L;>C&om67r4#&*
z7y=v|yc>#>YJ$=Q55jdewbbL5q)%A}`@6NMG8Je7Dndt~dKzE<B?}at80;FJ(Y2yn
zX6G#luE3pC^jle8)XsO%P9<~TlI2}WC$6XEEZJ&XM6Sb=C3=4Ki)yXAF;vO5s8y&+
zHu)NT{u;ksB~@{$;)7DV1FQt=W6er4S`EG%V9`^*?UyUTqPF!|9<TzdbaJ-u#v)WR
zXHW at x^l$}LN<i(r7FEXDnS at fK=*VUND&{^bV_meu`~@o`6sJ83f?5cLwH7q<FKqHj
zr)3 at ruWo@?zKW_)Il|I0)<i5`(R2H2|J`zY8@#G0xMCg at Q`??cXZr_mUI9<qw%-T^
zR at Ay4XBJq{&h|O59xV$HM^&l~>V(Z?Z)Jn8I^43V!dD&*eNS~wWsR at ij|gh59GX^m
z at 0EtQ2i69#;XUB~^?#^o4eP|bIi!p7U^#iC_Wr>97{=|mIu at mC>3QJO|EB6i!AG8l
zLN at g*$^_)&^J^A(!Fh3D)S$`{rxbwQCd={gmwriQ4zz0l#|3Y{6ZEz0?gX6PKZKqa
z4_ at 9yk7{m#9f at qP<(Q$<UsLDvw$#@sqbMJzPROq;LWh3tk`{S)tJxwuE)K01LuKp5
z%I0i86b{t%sc9i8I-BaSwCw3oHT7*Ez|D|0)W$$v#UjC`NAygm{m-aX3npSec7%e1
zFPP|*cC5g42O6JlbGBawnZoZY;1yUo2So_?6siYN2vmznh4zRH*1vJ>`&QcL<kE%)
z_4}4KG#uZEKiEljE?)wx-=%Hqar!QtSNsa3gqUSp`6<BmPsXqZly+QG2&t9zsZP{Z
z%*S>g?2Xkz?w#YXF``<0|2MM};AHs6mI16*SOctJ33RJ?f_teWN%-fYz_h;?>Y{N{
z1%t5gZ$Rd;5tzMJ!sfAaVQC5GvFL>nE9S*;3K5Tcsp8vld&qzH)0S#b*I7|p+fdo;
zZN&Y_6&92bjmv4++KI=QYW%(?W$b<S9t|J=Jmx)6rRpk{c;}z*_rd5Ot*=UcU$eKR
z*;mC?x*e?vj)WeAKc at pP`ZL at _&#D)G9+jkX&}c0r2=;F{yoM@`XLF+r)E at O!NzIzE
z999D<n?YFt>k#u`trIFChKsF&jsElY)1sl~&I-JNt-?i7>d$_*3Q)UH-m<7uY*08K
z3#zl;=l3r3Rlq6&Ej&@nYIQbx7c at 02_Ad-MU|1n4H$IR7C7tcpz$xY*sp!?u_bv7V
zR at B)(SpL+B>XMpj^?v^~+aFO)1J+1rE%8?!vX=v2Sc0C24SFLS18r(*X!15xqWY}}
zcQ#a3wlp=t={Z1F00J(1Iow1~>1JDYY|NyGsh{#dw<`Mq@~eF}cWY!_z at sO&n{BsK
z8K&3fqD2V~Y~m>g?>MU_rR#jQMaUJP^<Rh`U8lFs*W6sOAY!hKqaRg|aa|saau3`@
zPy91|3skMq!SWM#ll?N!zPvd+L+dSs6Q1_(OnEs=<ti2|X!0$n at axJYOXc85cAtd=
zV<R<U%YQ>T)%z3$*XN_m;K8&wKuZPKdZ>!L9Htex;KSNjTpv*FtkoGZN2tc531E~b
zCoHIXPwIa~&E87BUn-qreSI at F($}m+wWV5tjn#0L^G=Y`9;S3+pIPCrX;AuOEnSPR
z$pCa(`;P#Lo)N#Gb4D&B;0m|jRo>z(3SN$d2nT?d-ydy?8SV+-cuhsE7slYaYEYJF
z0D1Zk`_YKu_ssYHn=Z;H%S;oTHsfSM*F+Uk0%$>6iJmLp-G>H0VeH789#y5nEl3FY
zFHD*4+i2Ffw^VM>hlZfC(Z&i+ofx=zD_F1j+?qz&gF(Cv;*E`X+#9+!T7J0{Fwyh7
zC+&>>zwNQYJ_QGURR4s!V;`k^7nlO;33gq|(IVFQ&)Q%%d$g{qxBRQnkBzZsp#}-h
z!Pym6j_vP*+O12n&l-C(9dqF`z at NXz4EZ}ZsU;V<u%=2?I-{tfEE!Q{w{JIFve)`K
ze|@$;dvpIw^UItP`CmKl+s>=m2P9~}ICPk%?c>>Ob6D=m^|J~l!&g|+p%UW$Fsv4R
z2R}5HJIwg02lx7TXx!)&2JCUFV;4oO7bfHHK_IEzR)VBM;b*?dFkpg@#i#|Uc$YP9
zZbHk%-Uon*{d<vYmwlKN09Xv!SdQ~VpmDZe0RZnjL-R9u>u<p>6c&162_}ToFh6vT
zEbzAaRclmYD~P91hF(Z(I{lM`b9o)ipx0jr8TaVoEI$ukVcVOEd(84kq?@hnfayXD
zJ1wK&`yR6+R&=5&())U};{cd(IG}TH3`gP66MWBy#@~Vdz3h$s$ll8X0P6HmVEg)1
zpg3Em7?7Gecff at M#Qcipno4i8AAb!oc5DT7-t|>t&U`VaTFj{zbDG2)znC*e%o#3*
zAKyHDY%2a0a2Nij7N4lDsD(q=zZoEgS2oo9eM|iC24bTDkkrRF!<&lAg+5Gr_5d+J
zTqs71x%j at ep`yxLv1kFl5Emjc-&bF`u&$!%Tq1@~Ax*8ADoX3CYha3SzEI=sdZ8u~
zK7k#EfCa2d*!6(URy2#cW&uO at 78t#Uox+~jDo+UEFpgm*20PU at oh*0tb21oKQk)L2
z!r_sXV8w7r>**979I3E92vS7+io2yk<s?6)VgHsKPi?F3XsnB03pwDj&z*QjhYOXr
z{R1)s<3ki<`JRYECr^P-p~QN<=*Mcamwu%SlNTHYP@?hs{uTU5Kna53Q6F1a{P{cm
zDn9f{kBFbY%M`kbcmU5HDfJ!!BCW>L*&(UzBYCL3Ej2zVi$WVjbnTJnkXzD~2_kse
zr-pYtfIMuzJ9<KzM#<5V*p5p=Om=J!J=)e&lJ3|Vda>j2&|^3se4^ZM52L*cWJ^NY
z_MR0Hvs)SUt}^1?yU<*Oa_N0FB32MV`6#@Tr>y9>AUfEsu2w8JbyScJ<${av`?OU{
zUf8I-G;Ay3 at wAA;SuN4rFtFVU?69pGIvdv!KAMJ;$#6L+-vsAiFC0JvPKRqg<a^;`
zW(0>vzpLVLy^0$^SKoHNl|a?|wX~xusBkgilX5w2<-X+vZWFtN!wFRrv*U at 7Qse~h
zBN07c!=5h-KllDd7NjEUt&NP%jf_r>j82G*x+9~*BBO^!M&lx*|B0|l at B5L_*CL}L
zGHqw%+q)v8uS7=i{2Wt%X=Jo6GWv(e=(NaaVPw=3866!N#qVOUeB&u<HxRw~k<s)B
zVz~%!>I2Y0f5EVKZ%jY;<&O0ZD1(^zgQ1$hJ<$#KLdTXEG1~zj>cBV0*>8?q8RK{;
zPTU;h=!z3h#5kUh6K}+xArr;psa7D(dpXAO$swXW*743E;<-4-jfvvBxFNqy6nDh$
zi23RevFsqn@<eg>0LQC`i0*+7c=63Ze8ybTel1ztAA9l`A(ou-NxA at LyVJx+F^=9e
z(G}}>D@|;RO?fm;JQIh=Rq>8j)5YEKDbJ>hKR6Ki!r^!#U0mKT<)u;LtA2>A>+iUF
zl=yr9l)xylE&-7n4sv`qQap4}%BLg6qXQ6m_+ZDfbn(i;j)zBzz`&HdMv5;6?u~&L
z4>~>Xq>HPQ9Pf`5_avqKW2CrxkOPpH208vVQuGc=*)USPbSNT$!yLDP5Qn8)2hW2M
zd2z6#BVBwrIOVq^#fyjE9}m#;M>%dBDc(EE@$@M1#?ik5Wcd)sqoc%)Lmc;v5}yp2
z1jx6?I{q+9tQqQ9K2p3o^jtt*Np*acF0LDPIy~QfoCRXN>~h?nE_S&bPp64Hk573i
zO<He?T>#@>jd8qw5Ej5U2VntRH2?}=*rfx+J at F~;9wat8QsDXSevX|7iOz&lc)tE1
zd<J{KGnPVGwk(AQ;!g*L3zFN$iWg!W*N+t+#H3s?R_uv&0P@#3$Bta_ueg-$xnfiN
zI6z)<I364;b~sY*7%TqP?=V2F at 9(%HPdwN^<@!AFZ~~_K?Lm$!^2A*Sr977>f&&nF
zYk=d)Jh6K~%IkUJ{e!ard3&IvEl=zjnDS+=c;gVHxh>K0<~Z?0V#<r-#NVAsfc!bh
z at nwP7oRsqVSaIi|d_e9x)bU`R*l=jdEd}D1!;S>xi^ClE7KqCSr#xODRv(UhRvzJa
zF<-1b!trLlSbqfa2^{HoZmjsjk&Y+FiYt=G0P<q8W8*mSU<z{RILfi3K-_keV|#&E
zdGzHm0DXLn<HLN>KE&~Ep7{F^Bzp2#$Id+Q`mv60^2EBKn9c2}qc6=D at 25Jh$`@A*
zAHAhOyfEDH3W#+azWwYt$Gy2?jmz<PuK24f<->8}&&MNv=?RW4x#Ff1QeMdw!4ZhO
zH^OmKzW8=T%H8?m?KDK5OLzPwU%Z>1a!an*IuemvM>#g;i*=(?_U4Pfj7F6%9pm`R
zIC0aMl)J}?Wf_P(o8h==oOmb0an(3+|A{E`<8H^L<HRd&$2VieyKc$H<JdV?Z1y<b
z9V@=|r2KBY=*~p^fh@=8<HTRHQhrw;da at 9CG~4lczIZ7+C0HOH%t7Sa97k}xSd;76
zJ5IV!w(W)o<7xNnVm^<#CQiabASxoK45={ihuK3*B`k#3r&c#L)TP$9)YhifG^f@#
z_)`~E)YepKZ6VH2`p#OyL{kewGXYQLDKn-`o$hOFXoAJ|k}%EB`Q&!HJ?>0*mOI;>
z<IZ*Gx%1rx9=FHi$@FA-vOPJTTu+`S-&2t3&h%tvW at cq(XXa$)X69w)XBK3+vpiXu
zSy@@xSvgs`S$SFcSq0hdY)^J(c2;(Fc20I~c3yUVc0rCi$CHzpla-U5larI1lb4g9
zQ;_S<_2g#eX60t*=H%w)=H=$+7Ua3}Jb9UUS$WxcIeEExd3pJH1^MoLPkv^8R(^JV
zPJV8FUVeUlK>>(Z0NED+Yq}Lc>H>Hpa0$G*5(=Vz0e-Y&zWRmm{Fa*9DzE?ibDA6K
zfncGpu0sA)7<zIH7b_d%`2cmQ8Opi>4mabizS0K|aFSUauLLd>hc!t&sz#^L{0)8p
z<S7K$@2T=CzR~Wj?HNUO_B%uQiz$;PjZIBEV}47$za`a^m64U<9+TT5qnQ_FW at osw
zGd$_^0+{0BL=s%+tW&0*Az(G33o+R9kYO<0V=kC3VwNPu96hjq0-i9$H26(j4ARlz
zj+h$(2>2UX49Rd6%P0EIZdqbdTkOol1i+Af9=*e3(ijxam<!6wWRCr>NBC%!Zy7{f
zh(P!&2#d0ciHS*9#7<63zC3PXVrobH#Kg2!j^af3ihjk3`EC7+6U$>C9*~$1NKs-M
zP)tlrh7=PM6DA)lQX#n?c|bsUB)`P+w*D*nt#Wk4UmkZwtdt*z))-!aOXYcaEO6?;
zJXgg7=M|1AiSD+3QxaQaVy_;M=q^r7D`J at y9h?ejyWzqB{XON?8q?Nqg=1BGN8IJ0
zPdVaXUkuyeuJXD9^Wypyp?*cE-;~6yF>ym;qH0)z$8%HRnoT_O;n~)4YYbNs^Ib|b
z>983QE#H!mU1h$fByQ~&cSyge`4+2uw-V3saHo9x>G}SLXx at Ue9+GA<mgnhaeOJfD
z)eVAtC-*5)OXZ74cQBNP@?9OL=UYoOL&1T=`j(pV1%2b=9Pv^0ouu;ZBA%l|`EHHZ
z^L>wKj)M<ThxMI;`JNK;-*EY!lDIZD?v_I!U%>i$uwB0SRAF7f+qU!CSUq1nD~sV~
zC7ZOf(XWaVSI5N7M!)KtZ>W6lBc3CGubuDe2*1MiqgcMMH$XA}eFb!dc=74pXf$yG
z95YIY6KMUuAx{2YBpQwfN&1F3F{lrS-$96ld{gNSwmB-qg<3g<*!MVrhn6Bk14LsP
ze{5?oyaX5W-$i_}eZk-cLm<7P!}bEh8j1H8TgmR&Mqv1y=;hK8#Ic at Zm<4>1|9#X*
zW8KE^ki-Xx7CS1iequNR_+q{fP#o(IhJ_OEFS>@?ajY{Ko+kQOk_Y`B!w4vI<dZ>V
zkA8{4Px$nHb{zdig*b7fdJNrPlJsF5H_=sy6T{SF=srfurK}c$MJC}Vh9UWsNB9XE
zKA!MY4KE`6I1Qgnc)Et4O85{BFDHDohMz$=_K!ULittPh!t*?dAEBXe(v|3yKPZA)
ziKnV)=-x!QZn-6d>nScG+#TXzKeQ8GsNt6pUasM*37 at Co*AU*Q;WrT8s^K>izFNcY
zBz&!g|C#XnH2fjLyEObUi6;phfAG*n_%sf}^Jc>5YWVXK*S$xGmx+F|M!${lA`O3=
z at Oc{k9^o|_{t at AeG<+A~OEmlo!Y|P9ZwX(j;jywlCy7=KPmp-3=+^K=!gp!-VB#Z>
z?y+}A5q>4Z at G+J6Y}N1+2p7~Isn??=ew@(jS0?elRT0uXpYU5W{A9xAfhG2?nDE;f
zhL5L6JXIuV@{|*vs^Mo6pC>dva|nM>!{-wp>^FE=NO+-!*At(AaAJ7&6ONy>=ivgv
z|H(mkZY6xXhOdx#svLjuSF4DA3kTu(O2VJl at M|Sbod<i at 33w8VtH)OXA08VX4 at h@~
zmjj{S8y-7Qk%fBh(SQ$&#s3k+4uy0-74T^M8x4F`OFTTTIG*_2XW-Kb_ at S}zhk}~_
zY&X!40f!wH>r&()|1AYPnw$Xx{(=EN96Hu$e6kJnSqA#W27HA9|Dyqa+<-r2!27`g
z!f5gzV!%fl at RJPqQUiXo0sqi|p8&2IP0l<6-fX}hGvIOH;?elK4S10OpJ~A78SvW;
zcsGpS(9gT!JqDcPVfes6e<<u&MU($D13uG$*BS8Z4ES>f{2Rcf{3C3+an6Qe5>)kQ
za$aJ<?=j%L2K)qPbpA69_;SEe&ZNn<d^pF$@Rou8AP|07?9nz6{8dkB5?8A*_WBJH
z!GCKMRo_MfF62TPtai!8$c)NL;r&&_TBUbN*|dp8WnS-8ucu&!zo`UP-5Px*(@&i`
z!=LB%RxVkBi-`QhMQP;>zsFMvAE)&Cn<{Gj&83wkGb-RuNy*R3JfpIqwrXEF<WFvB
zs;lsydghOmen!6cXJ-Git5AOGJ`4D#S_s(x>?+j$oMliOReZi)@5!=P?kCx2gQP2Y
zJ$Vz=IUlvIpQi|-a^$t at ryBid_4%r(;zt-HvmDM@`KPzk7gzWzjP}R^f|4I*=C<tz
z#Ld8JhCg?auhQSpR62D=G$Tu<(6-FT@|Gy(s=aD%neQ$2YOPs>;0IcgBBN}Q8~^0v
zpB(&?g at 3Z~PcHt+#6NlX$0PqpYL7%clFB1fc_gvNCX~!P1v0s$&y;C1WvWb>L8eTb
zDbr@!8OgL+whR)<vJuHGOVVe_v{{mKw&a{GIcH1G*|zACGF$S=mXtX*rR13{d1l+{
zN}3#r=g71<l24BPR`SV}&$*IMuFNY}a?7*-+KA+nYtu_^xiXhL$t~CZo2A!rUT(!X
zC5zzw41cDlrlHvjU60SJwtw(Y9lqpUSl_zo$qjoMRMYC31tnGU`?M<&d1lHyXP(I!
zYx{UVlxwlg!^ol7Bl9r7cgy!xwdITIG!-Kx$)8+P4;y0__{dD2T(1}Y%LzDDUx%Aq
zz9xUP9=c>Y^x9c=KTg!8Grcq2-jW%)-ttqShSiGVSs6{f>I|=U!ICBT9|gc38)W1^
z- at C|-0v-5(Ag{>>@+|U|NQDkOeS!BhuYJ6;1iGG|z@!fTs|r7eQAcdRx!hhae3GMK
zvA5P&zrerHD}TvI{pW#8>T!dpRW;3x4b8G#&Zu7u`-<M_zUCG<>>1%YILfj|Did?$
z at CtRiKzQLmYenU`-pYmN!p>z)t$-p0(SDra(QuXE5uo$*x;jzktE+50A6S786om9{
zSOBMJBh}7VHEt4Bh?%_9^Z78)_PA)S79I at FJadM>z)l2=qtVJC;|~&LW4$ja2kCP{
zB7nQkZ>a{J9xpP1s>@34fF*^*x$ukgidx?!yP8Jw3ug-((ss7{8Ur&)_H*d$$;1*<
z#}Z2F<S_0>ut7I$@-^00R5EYJVu)tBJ}OXYkR?=uHNzir3)RNWXvk`8 at t6EaDP^^8
zZmwBSk7IyrIqGJ*9#G*aA=&whf-)>f7_Inb!bxkWZBS;as{L^1p$2xI9Q9w^)Y?CJ
zEfKX%4J~le9Gk)h)PY*tsuE~i8)oX0hk_|Se`wfvru{i{gBbZR!16UgW9!L<L{n-T
z=2z6x_>!l9Qq1>GpAXY6A0A_X3SI|C$gx_4;rfOupX at VHOlFjbF2r*HV>;w>Dr3~Q
zyTwtOCp&chMgBgRiye_XD`b+X at IA6DXhn>qhMe-jL`7BSv^2xHj7jBZU>VyT>wZXy
zWunqfho7N^6Eh97u;6MIOpEj!7@=k(ighHy;^BgT@$3PY#7`IyN0xBdhw at 6HwXBgt
z1W*Cm$!2MvnKO+3ARExqeZM|)D)e!<9#ApAW|0TG&*mC$Wo<=sGaSchM1QPq=*y>X
z8J5Vk4p^>`0aui9%@uz1Cd27AEcdW089tA2q=%)@5WV~l03eR|Q4AkJ>n^bDC8`*X
z|H&~1q{p=umG3MA{l$zPS7Q|Yr3QNZv?>PVk9&=Z{x1gl?Tj9mv=se^26`tlhJd%B
za4GsD3D@;4Vf3kt{xk#qc?|b4`VPit7{jk*^wkW%&OrZr1O06Vdi+8=2Goo5zu!Rr
zh=KkI1N~D5`ezOFFBs at wHPF9dpq~&Y)sp2n93E9UmJ*Kop2Kh-!@Uf@#DL$y at N*gc
zU}OvdZ?$l#d;^4|xLlsg89kThZiaJto-yFK{)_={oPHE-3?W_zmy*X~cs;}CFr4eP
zh;WquI7a^)M&H2j7Z`mq!@tpR5?k2&q_+HxjQ()g=fZ&bo(C5#uZv?C-o)^63`cr(
zuCI-7%&!?PWrxc&dbJ{akA}M-4TgseeAa37O0TUNKH6p at wlf^h<taHw&{i3y$1^KR
z&J4oQ4!F0i?68#4bG`n|@CwFfn*o21 at kd=%zMmTC*JCFE0p(l_m!jWHILdiE!{1@}
z2 at L;~;UgFx1N&bXkWU(1ivJ*nr!#yQ!$&gQ!|+iIFJd^BiQ<1c!^beZg5enqKab%j
zGJF}s-3<RN!#xbogncv&Xir{VV+lt)@Om^=!<9eOFh0B;SYg2b$#6Uyq3rN3<Invw
z4ff+Opq!k47U3x8`EV(D3K>0~u~7V{FnX+~$PdF*4ac&<aE6AvY*_d;T-Bo+7|z>=
zhY830egl`1XAlXD_)><CX845+U&ior8U88ZXa_vQr1%eo{WT28pO^0xhVy!K7Q;FH
zLc)=M7F>!y?gL`b`Tw5bod1IiZ-sP<5AF|Q(D at X={#`WOA{^z(hD-4|%|PGGaPB|w
zb0HZpUyk3!aBhczu-}J4m-A at Cb$L<^^d~c%=R3!MS2F&~Ab<GKmkgIMdM;-`qgVFX
zX`ug}(Q|vo(STmpcNoLD{1XiLuNcndeAs|*B3!rUvj+MP8P4T#43fnq%ZuYf7|!L%
zARP0}flJvfi_u at g@T(cl`P|C*aC_cmpx?r9F6a9O{HR02dhvYI2}k*JnViK8&tv$#
z49{oyLyZ4941by7T+WXe&gJ=v@#l8<-avoMVUQUFy*^Gb;IkOc^Q|Tv?N9)hD#vpT
z^eY(7+pE;UC{15^PG>l$U&C-N&n<+bJehDQdG0jOcNy?RI^Ut!$039x|7^y8xPiWq
z;k+DwZNL{Xoa^;h1O5-fb$Q-4(0|KtF3(YP^j7zWOonrLE-~Q0C0v*18Uy`94CnH^
zY`{NaIG4vd5()!?US6{ZM|sA=rTk%zf&K!9b9t^c;P)|{%kw1RnD022?<NEN9!5W&
z(aS+0#C5#};$RViuGe6~b^3V>UkvG#9lmBb*Y{95$fxs3Asq8PiSbD{&=(o-a>nOm
z#^($J{UV09G5VE^54YQDM$gOTPX>IG0skk%+gZLPxL5{3w@)R*xjmN|@H-6ngM_1<
zc{}qsqvv|PZ@`o2KorVZ2bU`MA%r9U2 at Jo8(R2PcFr4f4m;v9+_;dMRVDy~-2L^l~
zP1tq$QwT at -3z_^ajGptqis4-T`wjRb3}4Rp_Ykg^%PvOG^G(1-ObEK4WE=454CiwG
zis37OpDM>D!cm^F48MTUb9q)7 at aq|$BF1N}f&KvlzJc+X$oOnF(DyQ&>+7WRiD);D
zXBzNn27DF6xgB0)IIkC<5RUeo#N^+@@LYzE910N#NS_CnDwi^b=QI3t!ci|i-fLjE
zm(d3p&gH+BaLkw2uNw{Yk2BoM_`hwy8&ZJ?0?Jtrm(uIrRER*(@xzCOaXw#udbo|F
zoK0}i^jU0YICepbe+(`@LO^=NF&_*k5RUOixD@>uMt>gQihr?&4~BObu3>zdA+Gq`
zsL at k(7Po4+OLBqViy8PluhA>{U(xW<#Ag at 7{eUSs3n(K at -vXDCvygDK&my>#zN;8L
z*K0k)x&QpzfPcsM<D<$q78m;<#KXn;3?N*Um!dyf!<C#_j1Tw2X^g%Y@=$zcF}#G~
z=P-OS!<R683d7q8*X3W$=q*Nnt%3eyhA(0CpEEwZ9P at E86awbU^(`hG?RGv~%08zv
z`U?P8c9_lR(a(_|2Cs%IzpBx2mrX8KYPj;Z^@Jne- at v8v{fgmB8GaHj=0ZUFHn<f1
z9EM-W at H)a#UtTUPjGp_|GDcs at _yi2}S23KoKbg3=3<2fj<6ev5Jm0e!z7o<Xy|yr%
z)4xVI>Xpst-!#z2qyrHIl!yDnPy;^2fS<*1F3&~-{xadZoUa?`cQc&JdDuuPejoXd
zXE>MVY=-lGb|K*?&na*zJ9jYrRE9s#_;CJjGJ0<RZUg=I4Ci_sGb*}X84Tz7j%Rp)
z$+?E%oc<QVb^G6Gpx?}JF6Vm&Jf14P?pH at JoXazsaFnNv$)CmW(-?l4fzNe}p4<QT
z2Ksdj=X$+iz&~a<m;cN$ARGkLm*YOdbvvJ9pkK*wF3;@-d^5v&zW-r(9mu5oIVJ<8
zw8t}3;jZwr2-oFb$mqE}>kRZkhI9GvGT at IhoXdagiBily_8ddFZqG~ueL2IqJoN_r
zVTN;gx)^>Lv)c%FbUEQ5wG6tP;|%m?F`Ub}*nkHZ&gERg at F0_O9mBalJWDvrIgQZ|
z_ek;k*xy6At`{61mqGWRnGEN8H5u at BhI75HVfZR0=T3%m`tJ$X<&48cSO~hD!x+xx
zoM6Dc2K+pRb9pWy9OWs8OVzu}8Gbs$uVeUhhOcG#42H*KK?H)X*H8mKlHuH+FJU;B
ze=WngebyWB9>R6|?_%_ve=IgGQRH_U at Tm;v@|?-=4&bNkyozvLo;8e~%X7N{@0TOR
z>|<va!?`>Y4R{U1dA=(c&iQO$I3M?JBV5<3o6&RrpBZo;E+RnC{iluLT%JD|@Ouc?
z<$0LVb9uHH at O)gnh$7FK4CnIr4fu@==k4Af2}e0+!lnFVFT>FV6y6^fO(5v at NipD)
z4R{s9x%`(H at E*c-d+uWN+ at 7%o(d9hRfS<;2E>D92Z)Z5q_d~)_PBfvi+b)Kq$O_-h
z_?*M=!*J0M0@|6&Gm7Cn-?4=2_L*RypUZI0|3U)}AF7l=FL$|#LUM9>oa1bIU7o>&
z>wGd9&gCgL;I$0r`MzbqKPFt4=Tif{b9`7|F3%VPK7rv}o^rx5-!tG+<vxqyXEJ<~
zfzK<9p4Z212Kp};&gCC`QgppM4CnISXu$tOxNgt;4fHQEoXhix0Z%?TEGL)eIEM3a
zT`R*m{S}1ka;`DZKfrJ<=T-y$FNX7cKVdi at S4^A`U9Wiz=lNb_z%L_Q*Xv3~&*iz*
zfIrOm at bTCNhV${*^9<+Xu~!&AgZXoIVRU_q4fu70qh7rIyqV#={k(&4Y)^Rm`8315
z at J`jcw;0at^D*JNJwG+jJBxrR1igJe(SR2*oacMD0e_5eU7jZm^v at db%!y$+E8tPt
zp@?vu|6~Jw6~nnbFEQY27|!$EZNT?3{9GodZ*o}v#S9M+9t#*w1(aTYWb{1WEsUPG
zpD!BdKQ!Q98t~XDVL2~l@(gA;m#2W?OBwxqhI2cwCLHzU@?Xp7Iscm(&h2@)EoPtb
z+Xu)P0^a(;rR at 1&9HL=-pdA%YYWQHnS2^ql#ix|;Yc;%x at LM&UhC`x*GE#ibBl_z!
z{P%?4rr{e2zhA=-j<H`nq2V!vKda&A6Q5T#{3xOyHq0haa{ig{F&h3g;RPD5e)m$M
z;p%rar)&5I;xkvnpCi0R!{bme2rU|(PWUnnpFntrhAaB(G+gn&O~aM^_iOkm#QzBm
zSM<+ncoxyWs^PE3*m}LA;j at YU6Ae!#{3{KwB-}CF=7&-A|HXt4(s1>Ap&=T61JS2z
zxcZ$>j)p6H7HN1V at i|Sy75!NnzM1HK8m{blo`(OO=r7c8MIX>`mG9LW{x9P52Mt&B
z_h@)M(Lbu;>bs;jjfk|ri`tjFHGCT3f6?%jgm2XF?<wCGHT*21e^bM+Cj8(@k at Aeh
zjvm618orqD<1~B);U{W%HsRwm{7S;7X!!35pP}K3k5|M0Nc87wxT0Tdz}qyulK5Pq
z;dO*xui=XS9R~bC4S$sQJgMR8cUI47`0GUfx`wNK-_`IBh<>MrEBbFVd^geeFSg4W
z-3HqMMSqxv$5X#GRKpehC<C5nz$a<=VZ?u$hAaMO8}J1hKAiY8Yq*E-i#5EE at SuiI
zBm8$7uKeK^4gWRK->czD{>L at Ej_9{&_)@}O(Qw6Qy8+*!;U~x2<@%+D2Z?`NNo2Vz
zy__2Ue~A8Q4OjAv(D1v6K1;(D{R9o~B>Gb|d<)^TG+ebml^XsU(Zf%dWzhZkHyZvv
z(O;_JO3te^{69p0lZGq$yEQxxD-(pjX!xOoZ`5$b=S2;76aAYSuINA1 at L@#%xrQtH
zy&67&=>I&$mRH$rD&hTYSdNp=hG!ZU3Mb*{W^>?D<7X57VFr2{p7fbllKV=0A>*&|
z$M-c1SL1QSIsGvZ$Drdlr@)}|QR8vM`8=XXQupPf#``*dTtmR1<Fz*2Cto$**Yj25
zah*>a<8u)_EBmYY0n&5(+(q<QzL=M?*NY5qf at fvle-e&-egl`{|0TmY|8E)2?WX1#
zx?XBtqU&{djLk^LhY^nQFM><SnQNdgV)ST3ML(6%UjVq$>kLMZ_QCuy%+c`CHY}Po
z+(r218m{cD#+$lcYJQ{RYJQ{RY965D>iYvauI6Eg^YT*j7 at htQG%y4mPch(Xo`Lkd
z+|{^P=cDE~I)0LYzxsbCbov<v`U(TC{%;DMkDB-B_%Z{ZpaK7#0axEc(D^@Tpx<D?
zUo_xv8Sotj{3`=KAWjy$Z0C9VkWDzs&)WetFF~C9m6~Vh`c^VNyuG at J;haw!!?|Cn
zc at OgE_*IOaxBoW~j%xFE<9-AE6O5j>8-Hc=yxn+-(erj=n}(})W2c6 at KrRdiqe2i+
z&ItPxjyJBC8sF)-WuRB{8+^^}tj2vhA2rU>@rw=o)%*`%^Kw~jpufR at -)X=fGT<8x
z_{#?T9Rt40fbTWni4IT{0>0+uGQ at z7HsIq7_$dbbECasKfG;-SD-8J623)OM>iRxt
zpnuAMzhuC>4fsw2{=ES|gvPD9oa#FsIzGxkKh}Vk8t~Z$ypiF&-nB5C*B9wj at CVxg
zymrxe0_Db_ at J)m#*l-BHmT)!RQS^Tzx+IOhk?7SpMbQ@%o~+S#Qe2Iz75zHGQ#JZ7
zin}y?6UEas{27X?_EPbGo^U$07SeYs;c7gu=>JYQ?ww&!_%=H##?xKl|D<@KhIdoE
zSi|3=xTWDe6fe{8k139Oju=$FyX>eui^B2$5I&pkihd8p=V<u16rZQzg37T<!{Z5G
zsNo9<r|Ko!w<~}~jgyI7vOPjY*d3E!30D$f33Nw%H9g}^y+`~ihI9JgGMv+2%<yD-
zMm}dTJeA>>Gdzvq^BC at C_*{nPGyK;KSC5#lAFe_IxcoSNP;#p~(&IQp#VMJz=K>Xh
zdn!F+xzmtABHYj8i3V>LJtMs;JB0LdCo=h434BKS`3i*lwe*ZQUa1uS1Kkljh at SD*
zL(hm)lO~Z*8IJS=C_WGk073Cr>)~qNr}!UglZly(9{DS~&1E?9cM<&(h9fWa|9UNB
zIMS>3<#~o9e>$Ea)I3YcL(3zf_E^cU{vWWf7$4-1XKFDNBOwI5A^#SPKv3UpQ~dGF
z1crr-9v{00N?54xxhZ<AV;I&kdgQPEpRuPIj`BQ1@^v#DAG?Ob9|*k+NBXTqug3rQ
z8u_dLm+T}qjz#(;N<W+72z8HuKM*Pyj`Yby|0jkcfA#;HJ<M>VpGMBE$`h00rT%}0
ze`xfxh~7naq(%PI at ehPC3`hRe6j$SCq>pIdGMdk?^H<Cl8Ste``@T>;HTh~QGW@<J
zevwfHpH>$c^P8K61TrGO-P!jeiiR&-!{?icrN$xR>!0!?uKP)f-=xlHYC!o=15XBg
z<U5>6OMPw4xxU)-3A5=$#)3-tuJDpdU!&g(D%biVIlxE6!yMq7$4&m0MuPA&zut<b
zrV8X}X9{2T-Pd<3ZB|k|U<!#q at tOPjl4ain^0U8~Y+oP$R^n7P`|<1UQUR80NL+ZY
z^b5VVGuYS1wc)$@b@(Y)kpchzurCAt1K2V0W6%^|P~Vc#*wg at D<n}95`xbhuo8SYg
zU~Kp(Z6mtoPYSsHF(?X$Lc&!4Gz#L_Uy|F0?xysre;G`CF#W6pNUz2#Jpa`PkiLrY
zrRGpz{y09^U-^|~d3s#W-rw{~qvSt7O8Qj5u<4{`2A=GIx?*@hbtHB))SppQe#;bP
zDpUa78*$MALN|3#sDFRBls(lr=mfwpe`*fl$qo}$0V;s*)Xaxa>=%*ek4^7^v{HX;
zKv^iK{Q1}fUnemdd~Aj*TKajEUhN~OWP18~cp>el=ih0ka8p9GANm67ib2^A*UzKn
z-%9x(FR8<S^!%@bSJCosrTmGF^xs6F)$`v380Mb|7Z0~l!hdlPo{<)Vx^JUr-TzjW
zN-}Z2_ChmL=>KCbw8=w%pCS48&_E9DhwY3m|Hpu#EIQx#asVOJ+PBbOv=t8 at LPXk+
zgYew7(FRr$W6U3YLC+uOP0{jir2Ol(43*t%?oe+5KuouP_e`5Y$5sA{51y04XU)ta
z6%Rv0z_A7oy8qxfIGX;}W;>PgQ`G-RxK#cM9|P&puk`xsru-GX%`Kc>;c15a=S9gs
zB})DUkRJYtSj_<nDgUEY#&p;9_fdMaKcUFyQF^7P!j;@AK2OQ7<-dgFw}=q!cMM!A
zz2bX~A^#<me<7t;H<ez+e{0CUi}Jsd2r>U-;Zo^U{y0vDf8tQ0Q at 1Y4ANAuw*-zcy
zr1X0Er($OfLFHq|!uhNCYmh#g|1I2NQ&>cZ@(+Vcm%oSd*X7Tr{FR)<CX`<B!Tl=u
zC-m~SD7~W7)2sMyNG#>o%Ktu+U+ItXyWmp%6n+Av!~ETfA>GR<{|pUBS`6xbBBi&{
z at ZXCleHgKyR62#@c|`2jHSt9&rB79abXW2#coyZar(a9yXQOdg(9=(cgwe|X8M5DM
zaxAo8I$SEfvLEWB=Z)Fz!NC at U?nCT5jx%P%rKiXCQTJU;v8 at LG!vEK;IgoBY?31FU
SpZ%On9-3d<v2eMm`2PhXX+OyT
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/link.txt b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/link.txt
new file mode 100644
index 00000000000000..30d6c6b97e4669
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/link.txt
@@ -0,0 +1,2 @@
+/usr/bin/ar qc libbenchmark.a CMakeFiles/benchmark.dir/benchmark.cc.o CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o CMakeFiles/benchmark.dir/benchmark_name.cc.o CMakeFiles/benchmark.dir/benchmark_register.cc.o CMakeFiles/benchmark.dir/benchmark_runner.cc.o CMakeFiles/benchmark.dir/check.cc.o CMakeFiles/benchmark.dir/colorprint.cc.o CMakeFiles/benchmark.dir/commandlineflags.cc.o CMakeFiles/benchmark.dir/complexity.cc.o CMakeFiles/benchmark.dir/console_reporter.cc.o CMakeFiles/benchmark.dir/counter.cc.o CMakeFiles/benchmark.dir/csv_reporter.cc.o CMakeFiles/benchmark.dir/json_reporter.cc.o CMakeFiles/benchmark.dir/perf_counters.cc.o CMakeFiles/benchmark.dir/reporter.cc.o CMakeFiles/benchmark.dir/statistics.cc.o CMakeFiles/benchmark.dir/string_util.cc.o CMakeFiles/benchmark.dir/sysinfo.cc.o CMakeFiles/benchmark.dir/timers.cc.o
+/usr/bin/ranlib libbenchmark.a
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..68c5c62b3f7b7976b5e5aba1696a9418c82535dd
GIT binary patch
literal 8888
zcmcgxe{3699Y5Pi8=B5`I at kh*)m>eb(Dr60Z5oda>^P3k)a}wbDbd>Qc5yC=iDQTJ
zIZeB1t8miJax)@^#Ka_~3I_ba4~ajZng$94mI@@;e;`nQNKEUhPL!#jO{_G0zwh3Q
zpD%Y!l}&t=^Ly{}zQ5l0`+nW!*;um2>2SCNN)F)*f`c`<^86>OjWDT(1;4P3 at HRqw
zBRnW~A1&{vWiu^N9Q!{7&t`ZS-Sj;0pWyt$oM+24f$pZ=pOVTSNTqigq{=!e)YG81
zcz#}w($n*LT&g^ZRcU5PZ+g{_wb?xgyp2D at o*VPhVl<3(sr(mDlgrZ-^}^$WCm at x6
z+i>LAf at e!NO6 at Y3ZV<tldHws+EHNULZ%AcQBR$ujpBo+)nfr6-|H51qz;>h`?MC|g
zrSiY2>jOhlrEYr*aiiNW1?N3Y>pe|za3v0|!~;^Lr$O4WPWtux_0nQIjIO*MmmE_0
z%##qs<>7j!e*{gb5(DO#K)B1LDQ6AG;|7Nyg<=i*PEPb3>9|9*q{VJOF-^i&zT#=E
z^Ltvm{a*a>;ZHycEqJCcfOk^m^MtEX at IrvS=rBYVv(O;5-X at WfDo-_2o)+N2!2?gU
zxrQlONyFgBI*~D184HuV(2ONQ at 93?`^4~pM!e~#Lje4cfqMns1P$@0=q}d6FVJUR6
zcxnI4n|e^HKy-(s9Y(A at Gnc_8q<J7&{ztNW^+>Yytz(g+kz?10FC_0KfuB%;BZO~Z
zj at SuZ^vpc9w6t{nrMcwnc9aEW#PZC%XZq{6mzJbOGDG;TYsUe%;(yeJe>?K8n1`Ne
z3HdGO;<a7SMf|{NCzXFk#<gO8Mh+*+w<G;9AyZQ5J<s$-9Ao*WRQV!CJyDtT-t^=f
zBc3KVMmACIu}vxPrJ56!XGmT_umyw;H-l6QNZBVD#Et~^SB3+Iy<F%1N-hkdPeAIU
zVGs?oMT+Uiw11AI9oJ<w?~mB$-EHI-(o3RoBw79^$zS9NSly>ED>RSApI-kHHkXO4
z*S<vg7R08K at 02Ps%<+r*Lu`R__F)NI&AUY9D6ET_zv<pYMfZoL@@1*@5^*C at dD>5A
z`#spx!q!Ei@`xYTfFDsWPBiGDGjiF_GuMAW_9g6I0B?I$Z8)!uE4j4lOXrI at UDXP{
zTweDTiW3ugO;?A+4Vcx-#B%L2C^o<zMsV`8wB%U#3rGEXbpq7tHZM<H5)+IE at ntze
zHkEiZ`mnF1e-K<L`hx9ZyBOHjQ6$Z_XWDj)f!$)Tm3DxNI(TrGKx^>>{Q~S+^N6v7
z=;KgFa-2LQIHtUg%^TM@%)y4W8?aB49zl2o%O1D)th3wQeA*Rp`$~1r;~U(~5x2L?
z-LS9mAgda-`l#G`TB7|?3+!nV)&lK0ioJkk%<VnxjJTUiuDILhOc at p<?uMR5GN#uk
zFN-Ae*Kx8pNk+5&CFI!5#?%W9Kb0v#ATSO%u32Y~yZJ1R>vUbWyQNegcb{^&o^@<+
zw}4$3a~B!sml_8E0WR>!K)M=9jHam0?NAb(AYQ6JU3b<s>wE;TA&4i^y;y?1=bbTk
z^Q^1O?K at i+akreVkGKP+b<V4xz1!{UV%jA<?=e5$qw*hv`f7x%b;7$#R(vjjWu&&(
zC7`91<PzK~K|ow2`n6q~py}lJF&2zmLKCYlm*0Szlf&8A-Xt9NEc3C7u{LNR7zpJi
zfN*}9=^?-$bXLbj<}fe~*zn_VZ^eHOWHvdgabvYI at FUJ_GyFA*`=~<<-wE>#`2!Ru
z^Bd~t06*u%+nhlSw7f`gyxkeZ at cUumGMlUqOVtKHVS|@!@NWT*e!fAKv$gd{ieI5P
zt{<cXO!%!%yloo9{8Rxy=fqoSE&ejWtCw8H|7XCh#?@<sziorV?n?Z>LhUj?H5dqv
zYXZiBMAjmd-vQjp?(YF_a(;sF;t!<Npb0n-WOfpW>9im}ejqfc=F+3%iZ<4n!4o2<
zWZT;D<cQJ}W522tikdpE=JaS=?9jfH-Z81B^}Loikka?ca(Zei7!0-zDuqm1F6de&
zH<C!F^k6VOs%WyVDH*+xNXJqN{KT+Gb;_}rn9gU11Ua63tSgd~<w9{#PRQ2o1ov|8
z99FVLwXpk;stncmk^#k;SWFO;(SXgcf^D3hLie87BrvA*wqPb-kimUb&SnNRMLQv9
zav2>vt%76H(nholWqT*b?@k~{1XkA^3?#sdjFQcqRPR=#Gf|*fOR*Ckg0z-2-PKq+
zqMEAcYE2&2VvNlRFd9E>9rRFK)nl5L*OK{>M6RIYohCLJ3#o|7+58B|u3ZvlYlkf7
zVe+cVIAp(|YP!`NjvWHdc4MYf?nIy57m#DA4!L(<s$I?sxF8gHq^M{^vXcI4F{7#A
zTT0)ZCSG#Anwo{Bg}n#%S**g^i56^+X7dG=ElS%N@&8!6Lid+NO&u0xd1PuzhE1iA
zhg~D1pO7bU?b+q96LNT<n9bIvurmkH9W%J99PBzudQ47_j>*GH22#+UJD$l6$%oWJ
zah$~0BE0s23VxImdi8~_q+*Yyf-+763pay%tJ^?|%+G>t?oBf$Fjn0K$o`+8#{eFG
z_rh}vUQdzOofmPuvoTzSIuhb|$6@$a5CnqbO2AWw;pD~&ZL|LG0)~YAcw1on_}+|!
z{CHbn_<00@%>Mk+fQcSFof&^8J>ZZZ at 6im$uNp{Zyujgn9KOckd>mfja6S$%QrsMe
zs~nEELFUg!bOZ?bdHkRazCdxa|9{~4`FQ at 7<NplUc;86x(pwxqAGezvKOeUbIDTIL
z273R%ZeIU=6vuJ#`nPfXe4KZ1{Jj2$IevaVbaObLmjtJWx0~Yd2f!y5|5rJjkN>+i
zINlGD%=uDm at H1T8c>OZfkKHKB{0X6QAhZ4f173mWZSb-UPTeGW at NJ0MW$&8U at 8j^T
zP)9<Xj~iSk2_e1>9;U}Yjr%2gS6~>HxD2*%fRENO4m2bLVdF)dhLGS{@@rs-v%Bso
z6Yit!Z<_D`ZO at zVH)tC_^dX^c{(JMk2wJs!g|`38;VdQyNp!uV9u{-N4{|v2!^ajv
zqa2Ph>|Xyv4zG!)SU54RD}#avHx#2BWi_}&D59=T>4G?<=!zf?777BK&J-1GPL<lL
zFkWIsEsqM&L{RMHRTOjC%$S-zA&4XCw5(30)d^h&H?k_v1!u6P7bhr$H)vVWGzFv#
z#l$mk$L at Bp`V9|<1`4c?$-5S}v%lIc<Brx>6($KG at r9b0&8L;Dc&A$wydI6?8<!x$
z_c~RCuV1^!C5N_0az$}M%fr=6#{grt)lqp^Q{cKIj%azv!$&|OOwN^GKLjC6b>shY
zkha2ubDPb5R@%uYQ3!~=KchUJ4@{1gcJh5F48+UhxxnODX(xY_NY~2ap2*}_X(vBq
zA&=)FlVhcwJlog!_~HJ;<XGtg47Y at J@bGksHcE_<w%Pv3c$v;H188}HCUuT(!We(t
zZ&*C>EJgY(JZPWas}Xncn;!y{ke8>O&_JDQmG1yqGJf17Ir38buW%Sv&EpROh9L@@
z<Ok at dktd-K3CE9L+sxxv0Ym$3 at bGk=+TYHDP-pTi4krL3{+swN*~pvR6m*ay{+r~_
zQ~xE3qyKomGy5!m&jE(^&3avQLg9B$o|xYZdl at QL{`;sr-i3KG$N$^VY2`n834lK4
zC;E?5((M1w0K;*a=TCszXZ*lIh_zYyV?eF!H{+!fh_{dX50hi~uK=@(UnjM1j+eRp
zI at ReiB_O<t{~$(aJt#z<)+*ogA?0U2r2Hbt!{3_y{|yLRt>1t}{_rcVIe#~){Q!w(
z^+%%d7poAdp|41+yhY^=wE8<q<*SHMV{#0~_dVQKP3ae=sJxFc(vtblU_S_=PP6=r
zRQ|llpjmzk2wKg5iN=q;H*W<Scu!~YZ2nu>M&EiV;}l((4+3Vjf8zdNUb`rNf&Odb
a7TpICLoyAA><L!#r|7>H_Lu@=mj542<<L|B
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/progress.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/progress.make
new file mode 100644
index 00000000000000..370f7f5e37f3b8
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/progress.make
@@ -0,0 +1,21 @@
+CMAKE_PROGRESS_1 = 3
+CMAKE_PROGRESS_2 = 4
+CMAKE_PROGRESS_3 = 5
+CMAKE_PROGRESS_4 = 6
+CMAKE_PROGRESS_5 = 7
+CMAKE_PROGRESS_6 = 8
+CMAKE_PROGRESS_7 = 9
+CMAKE_PROGRESS_8 = 10
+CMAKE_PROGRESS_9 = 11
+CMAKE_PROGRESS_10 = 12
+CMAKE_PROGRESS_11 = 13
+CMAKE_PROGRESS_12 = 14
+CMAKE_PROGRESS_13 = 15
+CMAKE_PROGRESS_14 = 16
+CMAKE_PROGRESS_15 = 17
+CMAKE_PROGRESS_16 = 18
+CMAKE_PROGRESS_17 = 19
+CMAKE_PROGRESS_18 = 20
+CMAKE_PROGRESS_19 = 21
+CMAKE_PROGRESS_20 = 22
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..9ea3831ad4f044297178d71f3ece2ca152da4fa5
GIT binary patch
literal 14312
zcmb_ie{dYtecwCDws3;(OrVGY at fr>yY;(Djj3pTZI{mQr at L?25HU<Lg)7?tC`gAAm
z_GFn7;u*;#*R#NF|41_(W=NY%oJlirrX^uKX=*Uo(1z5doerJM1h*v<TvALaEu=80
z-_P6ky?eL5wH%V~%<g;dv)^Cu`+n@(@7)&%6WjbgUy~-ur`@jkxS^EoH`f}yqS~u%
z(AEpyOQ{W+R#{#p%ipE)YFWRA%4=o))3RJE%XL&<M;GY71E2msV{rwl#^MzyCX7Jt
zMckf~_(UN4tWh2c2G*=PaTxq34o`#wYZt&Q<bTvgm9uC~i083;V!L8HV`Do<jq(S^
z{4aMKWjoZCHY&|Gv=ft29tauH<ALuBs|&{i3s*K1TDc7xjDt(|nq%mhv3LuBH*hl+
z9|`G3d27gNRmMW?M#Tp7nm`hZB3wrK)G-7mQGQD at LTqs$6oJhaqvw>}YE;l%obfpv
z^TMiT-+8P>*bz2atx<8*9{kV1!Ur^DM){m0Rep<DjPi4$#U^V~1EDsTx<o~nlCQ-o
zo1AVO!z7TsG|DfK^OEJ<JF!5J{Cy|zpa_v;<r0<q6bT48`bunmYsgQYRYy^DA at JmL
zM&Pcu9Z|n3>U1GaVF<>1$kV_=JH_nSCsiINs^DphR}!Hh!WT4pUJNXJNNn-)PYfsE
zZ?083AD=%N5%v;2b|@HF_y=OG at 1vtOR++61oDeq<&Qo#O|9E9rOT4l<QC at PK$AH#z
z#46iD^!VWM#iL6U!$AD)XFpo)Fw;b;h17{Bakn3&Nj9>yv_wOsdL(3GmF5uPUyZ%@
zXnXmjV$+#_JS=A~Bl(HLh)Fx*76~kT6CG5hDo=ofBN?w`L+y!0F~Q<J*-)f()ti&Y
zFcyjON6Z_)l^)o`MrCX0oj`Dq9{sN||3b?%=(X_0IB&8W70hb#qtS#G`bu9_hDB(R
zs#=VLFWGyIN~SHb_)tr{=Pmoez}f?3ik9C_T2iIjz|_r|>fjKYL2SKsqeIJ$qf}cV
zFT{IJmcA96e<alG3oJY-Owe>PD!nc9bGpyog&r7bV}r9P1P=ZcSmvMKeg6Zo&&M8!
zJs2}j1lH1E%9ZU*TMXnYAJ9Oa5-US^E*It5V}u{B*IF8fMvVFhvEDBiTh)NGX9d;{
z&^Ydcc^-0SqMp5zhP)b|CZjU<hT(gyvQMA?iL-m0^?kVH%u=z9mQM(UYF+Gy*an>e
zC^tFfss5njdVkCPw42tpQ)mBlc2A at HKXL<&)a{+^(c?nP{9gxYmiX+A=ySUg$yd>p
z`R8fVdzFJpp>+1^MCBVgNhK;zw^3n~f1X&(Vtt=WlsAUri+0F&l9sw=oTBLk7af0}
zp+JD{Flgqt*k5#(Ek{dkiZ!MU#FXecQz$0N|Aq<8+a^ur7K64wLt*WwS$w)+ at p`~Q
zNc5ZwEPRH{p<}`7UVZj*f*gP9I$V0wa28pkXMcZzXMd?a!>Gl}&sRr~>+0yxd<0wN
zD at PDJ=dDSrw)wPC`O=pOdM9x2myY7m!Q=L&6M=Ity<-H{zewBov(@-7E02}mKptZO
zg8T`ms<ew*Dw)gWZGGI*bERxnTdj?ha=A=yQb$G4=k#_>->qx<UB<(D|L{&-yJ at wC
zvOk%cvWi<)Yr3A$==t_cpQg9ZX*X$!d@`-aX01YU(%PbHH-tMTw2it()$wF8lQN5T
zf%I?LlAM{ba%s(UoLawr{XMaf9q}DQR1=npsbm(8WQw|#OO9u)^hVvDvdGn3YHB)J
z*sB+;WLCE`)0RGMC5xqkHEreWqCTD6FZz?u6!+`NTw33k$!7ITE>$Y%)|_2P>Ur{R
z%1WlgtF?N&vC+iHc?Jtsv6Pj1r;@XlUdk1$nL<8YN at d6`Jx7Kt(hu*ZNhR%x)dPpR
zRh3$JvN{uvXSY0y)UU=;OQQS>!6$A at OTMc=_bE+#=$iS}+Kaw2?P5P$x#GP`v_D$)
zQ`&Lqaq~5VQF+acR37#v4mN2Y_*VSNul>-!j_U9FQ3v1kVh6;05OY?U6U$YtmtT&7
z=fFZ(lv?i-y^hS=ckJk?j!U$wkB4Z)n#mVzt1#%W{g&@lKcIK0zkiF~zH_{kvrBrk
zGu#=D+`PFYnjMdJYzjv<g`+pg2gHsSKK4=sV`#@tje>X_7|vFp%bh~=Jv^fM=7PSf
zKe?*qFfB32;EW6sfus^x1OSnW(d$9bXJrY#-LkIoWhI6q0f_bc9v)5z>#P10 at YU?Y
z6g5IXhytVterwxWgHQPTTH79P>TA^(oBLYZ53Pu`Mjl%kYwez2HPm|8*K~99>eg<;
zVy*4OL%e;h!M at g(flv4c=s~<SV$?s_{t1niHq9pJC%Ta?VT+W_uX=3dp%shGk2gKx
z$1y%au>oC=+hA*O-v2;r3sn(=)4+)Ska*bF$KmTDd_B}m{yer~pfxhTa;SCB?CRFY
zKx=zUaWF3Zz?%nzH at oA<p81uJtvJ-Y*z`D#9f+?u08!aZ7YNvorJRbLk=P}I%lihl
zX6?V08gVpfjisBkOB=D%+~N_gf83<4sRv}MNuw3-B53w2{1_9^y>tQRHev+A0m`Rg
zgdEbjLS<8Rme)X>P5lb4_OMCO!xBFgl|XgfFn&hjmoXsApG%zA7eD?FiC at crEYC@t
z`^Asn6&0PE)$&)O7N9TQdiqG>a at ea6n*<Q3wz<+G at l6cK@=}R+x$sX(+;HJnNgV4y
zrL_{jQw6DhgT(K4;Tt4A>cXQE-|51;B%XHRw at EzX!uuu8dl5g53p}XJF(AvkCGLW?
zol?(&>%sjJ&%5v>;aH<?dX(_%{Izw&`{mODudO4-zfTG-^VeqUXQje__0az&;p_ao
z(`s6;<PXqB(#W5y2ydkSc8N!%Jo}UKz`rbUw#PmB4&jaLJ}vo&**|IEL&Dej*GW{<
zu-Agx=mqvQKQcECF+L)2WOC~9KOnr3-B&&EX4-hy`0>$SujdZJ8|m5Rfe(A&84rBX
z1OFQj{G12gMDc6n=anA#s0ZHU5udaN{}B)T2ZUo@?V%EMy;Eqfd+=*38~d*l-bl|~
z5<e{U;~fk-<e}#W9{776_|{d8{ke~D_!FTL#P8m(NPNbH|0A^<jmr|@>- at -6I;6|;
zdYahl{K#B7#Ii$#bDf`|oF-gX0j|?gUK~-wsg!2kcj04fv}>5YUF<%5$MolOHhoPD
z4v*$Xw(l5?m|cv7Q~4}?*W9;b`vuR$o%Def-Bdj_o4Mq))ptv3ZY~-foON{ckKQxZ
zZ-hI$G;=6%cV8 at Fn#Iz%88?@6w7+9;RtqQkJ8<j7Z4+*{;I<jJF5J3ti{ci+tw%IP
zH7W$7;#pM4M}>l@&=3_WqC!X1Q6gkJ1b>In&>{FcIw=mLc1JXmFPilEXPMc|cp+KX
zZ)S2Cdv^JNZ+5;QC{#rX??h&DFg>1KR;+tlCPyES4_g!k*x!`Omu#wy?Yi*z4oYsT
zP*~PRKaJ9|OamB)<pyiuqBKQ>rgV0Ac6wQj7dKC}fqTLQYa(o#lXG+Cj8!P+5jA_i
zIU6ApL%Y<~&`tB+D$w(2_mE}ppj<&BKN-&z?PM-RVIJ&8`oPTQCrR?-%8lC5&8C^B
z1c8;DrWsPS3U)k2Xf!pIESU7=p0SJZ)ZpL<VVzDkL2}2(%&~|$IJ(&!-aguCx~E7_
zB2U?bfuwDXQMzDMWFV?*ZP{@0%8uS*%~`3Ejbwyau7eu+nzeG!Fq+R62QyBs$GnT(
zPs7{%m|1V6hg{f}FH9$G_F{N@>fw5xTEsU~#D}u^@nlwRF)ZZF?r66;GEUL4EHavM
zvLM40p&Fdar!BGkG}BDYCC$lFvXC~DsfS9Lf>nnVtSqHc2%`?!Jx+*e?KT{RTT;YZ
z7$i#_W}MbHT{cCS^ii4GYo at 05niI*47>iN63#Msri*`6#DRPwEX{2~Gi7}2wD2VAy
zaVB3B%XnvQUnZ9}M<^LHE&RLS=E_4RHp03E*hSf^cy1!!NkKhtaYjb>7j0|W^ZEIi
zjjAEJh<}4UA3;~eJF97w9rSAGq=2d8PUG|IhO~<^Syo}z8WcOouP={j?PTo+X}UrQ
zZS4`$w5JOBeI~7gNqfqqy)$2+$L`*oA3E^@?4e<ZrGKwPVNZ`xJ`d~D85T7Z9>Um)
zSeS;jCR>{uwN=y=r&mr!ycTHn(GF7-cE(1Re<zH^FM?;+4w|x<<H_;NY&43&$tH_M
z)80RWg*lNQlq+q9GL`0RreK$nSxp{;=$l)k+^MF~4+Dbuy8t-8W%<O-CwSl+6#g$z
z9R$3SF4l7hAQ5nU%QB9<00=m~vKap}fJAhB*6 at QM<3|A!0pCm)<Ie#ka`V6Bz(POz
z!u<ataX0 at 53La7T{qnpDKk>~?ztsp at qu}^@XZ_Ci_WAzk3P1EPzw`a<@Z*fi_#Kkp
z?WgnId%pfXihi6wS<hY%J^K{AN8z7W^dKw5dLCE!)p2=B;YY58`M;s?Z&C2?Dg4MT
zG5-%0epUa=3O{l-%>PdceuaXc at zC>2h5vUH{&zk2gBWlk6j##4cH1QG9+xc&KeAoS
zKkUIjsqo|Lg8B0v{J*c@>UfF7Bgwn{c~aq5<9XBr|62uD_5ZWPQQ&Kb{rs82uj;2H
zzaSJ>EBqgM at UNloSP=YI?OrQ!h#^bDc5hJlRlA15j~pKJ4}0+6qwphJ!Tc!&$6m+y
zBOZF5RPb9B{_iTd>gSIYT-|5>UBOlUHxzuUqW^LPjL1Fiy2KGToi6r&g9rbu9{6?-
zd{n`2Q}qA2#9>$6|G%y9->&c<Q~2>-cwg?TCl&rX6#lmr{&fl-lz9c%y-vZ~Bn~k(
zo;?cQtMK<Lcuc`F3cgLjA5!ok1xG#w1iQ$sa{Sj({sIJiJ6(+5E^+vOy at GF3_!9~~
z<$)ug0)l>(|C<V~&bRL=xZ2+rB at TZ=bg`c=EBtpU`0F10XFd4&z~R=vLLNlmzpDQ>
ziGv?!5ccN_9ysT-p-1iSM*xUWsPo}&IbP6 at D(k=B17D-q1<Q4Gfv)wyr5a(kpZHim
z_9zhi8K8 at C)(2c27o5RBz*RjR0zDsB<Dly2yuMq%>gO=&WPhZ3%}15h+)zs3_)Q=v
zG0yh_|D427s5t)9!o+gmA7hY8yhB02Zxl7>rpvmUzg at vUBkO7b{yqiJWgX)#w^)H-
zF9HEajF=2r0gj95^RmJ?<{W6oDFiQ`^~&}W3eIB(=<5m&{$bhvj)Kc2B at q0D1_WLn
zJGA-y2^{=<Uf-nf;~D3Bhg~@5Y425V=;4_DiGsr}kImN<9Q;Fcf%sepo47b1ds^WK
z&iUBa6})b~g^T;ADf6L)={wXZr?^H*gJc-VP%WHJ+DR=uUMy+?2-kgjH~3>fv~hy(
z;)K;SUzq-nLAK#tG)#F&wMi+;s*B-LE}PkFW%q00$yCa;=2F&-ZHknR%0(Fr`aYYH
z5R#Q<vQS8pl%tqS>frJpkdAfX9{E8UAhql#WkacD6PSoSssFgiJ1PG0GI$*HRMF;;
zS38|W0xo=^j3cGIr|}0KElht%vcmMIjGILsNwz0*r7->JhSHQaMgddKnldK}lp3L-
zEaYjhej9{yd!t|Dd!=&TN3q{w?eQMPrI$SKU#dLTG|O at 6CC~ejDv$l0<+${c-%Y$A
zyu(58AMXK{<I+n$4Iv^`9`8h!<I+o>M at RJ^=Tw&C(o230#)(vUyen9aOE38Y5GGRn
z$NtZ9T<U~j3&b9((qY*+vPwm3?_Eam%>`Y(49N0TdEnS1f1*bGQRV*d`xbKw_SJVH
zHMMSLL_;CDU00EfR0FG*yjzXC9VJ=Of4meF>XnS at yAF?o3J<C|x*Ew3U!?p~QeJ&G
z6Qu2w@{ggR5ci+U at 6t2W-STIo{NE|Es7hGKpnZZa;XfJ*{e>JioV8SPg-QDnJ!~}o
z-SP!~L<+Z4iG7Cc^Z36)80@?CE=l`*ek2w_+;485rAj0Jhvmy$s$ur?#_x4{(#Zca
z(tq|7{$Ea)+y4&<L%z>F|Mp1x%ug(WxXtBzgf_DOegpf+Be5L&h5zj|ir)cgUl&$u
zH+LK7Iw9{GfTu1}J|^XxT=K`IynDT{|LoCLk{A7V$p_mVj)-JL6Zs&P=l&zF2>;#o
zPfPo~^h_m|XRP31zgOCylZ<F0FU0a}{|LzgbK4KnfA~Pm at 3hWu|Kc~44^iCE|I65b
zESIy-er=ZWZvWdZ(*G#QHyXcZ+8swYPH3*9i|sN#F75L;OZPQh+7B}zOY{}Q<z6Z8
zptbuBDPKdJ8p|<`JSSdpRMgS1l-KLfn*R*{v9#}&pONx!y9{#wSswY+M(h8yjNefy
zk0#!gEYI=7W4CSS-h&@Gh~7u%h;E|m2D;qx*dN_{7eU(YD{$Ae11#V)t8tf2v8OkZ
QKd|26_`1tES2(o)2do%B at c;k-
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..b5321cfa70bd2a4c8af79c2b683456cd58f90d72
GIT binary patch
literal 57064
zcmeIb4SZD9wLU!gf)S7tDr)>_jW*S!TAF|gQ@<vVz&SF()S%L;O%M`8<s%IfKt+g7
zqMRN^(`#F8wYT{17uV`vS}drbCLjcDtAN(hS~XffGDZclVnl at ZdG^Q5&SZ{O at 4fH6
z?|tw2{U+y}XRp2X+H0 at 9_Bwm-bF#cLGC4adD<`0itiZW}EPZ2~8=p$ugvDhTl;;TA
zBXNHee$00?eg*3K7 at Ut)*T>;}yt at 7Z&L^nr6LCICU4IehB6a;GoKIHQr{G+yu1j$K
zvbru+=Q4FZ9p^LfGY>mH at lcKJK5e@nIPNCfecy4Pj{QB$>3ZWlCu at _lV}B&{?9#&%
zzd#=Ago;4GcAvH5le6sj=z!hTlN&*HJ8Rpt_=v8(R(^1Axs^Yv!TRcsMZ+4b;wK{R
zwurlFuQh7KJ5Ffl^38VpbJ6+C5^=ZMU2mTk$=Yh~IB19VFE8#3HAw#Piw_|~&~~@m
zUA^boS=()Quf3z+4!wWfRkph|63>0dj_2-RNkNp<wfK)94_vz0I-!;ILfShhrsWOW
z-EW-`4mh#C?1=k<EbRqR+Fq-D$)Q7s?D+K0p&qC2fZ!u#k$V!gNDy*F+)l~2qoHAp
zbwV3?Lj!^GOUf at Uzo>lrMKyNp&0^bKT2x at SAF|q>&qmo^1 at 63Xf$dfl<=gF at R@>_e
z&X0Ia1y$|)thQPpRo*h(AlI?DalBfvc+P5z!#-^9D%`wfwQWUl5w9L(uUKv4ky7Q&
zEy5j=?!ukpT?D$FEhG9aQ+o487unu5D0*~J?<K6B04C-GEVSe2m)dS_ksW%<YFiD?
zwl@*L^rE00Z_4Ur)ogERQSgy!T*=$m*+qetyHQNO<6T$i#H&D$5<*W!4|lxE(qul7
zCF1T at OhD4U(`q{iK92jR#6?1oYazg-QdBM94s}Nlw>{kGaz%dIeNpCT^=_mzZeQY^
zgNF{O)IX<Wvf4ifo{3qyomBa+3ks^I{So9(HJJ_R?RaG=bg4^Em)=&=3sp}8<B0oe
zq7|h(-g4A at N-0`M=5 at R&X_80WLrU`JqScQ3Vqy&P3A=+nk-4I%lnux1R$DcAJFt;K
zJW|rPML<*KzL_{&l)nrtCZqgs>GCHJ%KLt@{Gj8$khtq3$nQmq&};)UPjft(nT8<p
zDAlDHoMXF}73C))WZ_EPYvwKAv}2DIUwV1 at W#yNbf2+K9bHsgL<WCZ8j-bW`=_*^V
zRhC|AN^QSnsRfBg4;(tw(a<rle?`3I`Ld6>sFLV1eKZg6sED^H_%JS8g&Fr9qq``|
z%YOtNB!KQ0y~J_5tGp|VtGoq;RiW1+?%y42@(c7rqlLZO?q4JB+oB5Xoh`>k+&z(!
z9y`=~-4XVKXouza9kN5)mfhXnx#XANTu`<TY+L><;(iov+t+d>Ih|`m+i+LlBs&4h
z{c_pP_D<V!-iTQCekv~F_FrndZ=}?RPAgqX#C<7J@{WD|2P|*-99*zcORsdd^*uy8
zio}-(g<pw;mJ~!oXcrVNmF`V1f?KI8j(ClQsA$A%2IVkR5>>U`NKufLP0Rpe_$}nB
zEIX7~AnxGD%ia=wh}fmTI<!0k^-tZyk-<~V#|TI{;7_D~3kv_XM8UzNe|yUGZ!M;O
z+hqE;pQ4&c|8~g$|CUJkH>>RxHl_A!wUE^CYt^>bTt~yQOAbQFs6|^SNGb=eSh+sB
zy_jGm-CjY`{m={w9%)3H%tp5tUC1)}T-&=ACBSKc^$6QrSchU1bLG(ndoywx;LZLh
zfWAbIP<%Kb%CcR<qqTfb`in|>+G<f97U*~_$pWPdzNpj={W;zJvOsNlHl?@P{*91#
zT2W#>d<gtsweWqi5-FbAF)EjAIz?FtY0bhZ?gb+{#i_z6Ew2_1Q3|=(5K?+e!BBU5
zp)XNq(^Jl*r+fu&rlG?@15`^F35FP3qD2Nr?L*0PWSZ-gH8))6D5#jO^S59O?*}R2
zHl>t{44%?0Dk)8WDjBBSq41|=U`D$~*IEK=m?1bGfldI!+p26&RFY0NsGTmkXK=Xb
zB?yNbOl*Mbqr+vg;Kcyu+6)eN0KsO8h3@!CVxb3XuS~IisGEkui_!))PrDok4yQ+!
z{=jkH6CscL;iC)@5c(9%w!Pdh74rtcPOz*~3hrG6ceD^A?vhf+eav>36x!}-MRx2X
z%ev`$_W#&NSyuZAxGJ~S4JluN!O(H%78P&J{c7M{Yr)j8mxFFs;B=#E;2q!v!{tCZ
zq^$yFu-qCIDGIY)50AL7^<IWXcOU^e`&IeyeIj`JJ~9YFF(OL2Tntb1itTt9qFswn
z=Gwvt0)q%-bA)X7vMeFntt`x1H+03M(ujLi at kAwAW!S3>*xi$aR5%Nv+#GAvq_E?D
z3nedvg<Qv25WWJXKE}T1PJ&qTU@{0x<_g~hRn4|fm5Q_4??zc@=7NaZV+^e_4rVCy
z5}5QY5ceYTy9zw|PL%2HYh^oaw_8<j67<}S7AZoRko%2 at D_s@+02Er7C`DHK89UYq
zQX?;wr!(^!%0cdZsyU$_1~Q3DAc=t9wZ5<)MI|6P8Z7g*5i!Gl?D&+RjF}zxnTu at q
zBSy{zc4({Bb^+`l;(Z%~$0CH%??$|@+1 at ma)bB;yy%@ayBx1?$Qc3QU=pbUKx7`ua
zY;A7 at s)iUABQiAD8!6dipMzR1Up~S<2YFhT&cm=h2b!?mr-bauF}_z3j+TVh$}=Gd
z!u1tnXrk^eXcnzvG)XF+98l12RYAG!omV4_*@Y;;4qaXl?b1U4Tf%E9Mkj at eyQ)HO
zqgKzNR?*QyEY$&76UcUaRmt1V^-%Po<<>3xQ3KqFdJL~{_dq)LHQbeT+Oew(0=8AT
z*|sYFf)W!9E0ghr9a~<EF<=8oZLbzq&Y)myg#8lFQLqGPSE)97nAQqPe$Tlco{lBA
zA}en2w{_{z3bz+^Yoa<(R9UB~6KRK`%L}7DMtyD1Mtz$Qk!+2G61FvYhpI1{&uBT+
z_bBMnF4>mWXkS319V<HpqL|&O0uwL22Y<x+Ut17xtjZVgg9k?ap|U~oi{l=6v=McH
z!Tm`+s=+ at Ga9Rc0X}NHvm58*iDviY9yS&CAdOlP)!G^=hm(EMXA;LlY7+jMMqSuCx
zXs~v7iYO2&-kMt+c%T<iQN(?n&H=8X4jBRs?xYCrt9$$4RUs3Va at C_Sw}2Bzs3wA`
zPTZmQ!F|~7^P+8>SVd8B79BnOZPIPz(Ml0j+HP-3J)6~YAbkycCzPw6W?OLwV?fN}
zZgD~%r9XgCOS=8~zHi47XqW9ocrOHiJ3%&h77jIVEy6kID2U4OCKV?7(EvJrv_nte
zc@>r<OwMaA9?+YkpBHj?EntdT%OX5nwRgJREnk2cmK{nOA|C*?A)*WH?%I7q;(1^~
zYl)|ECGsQsNz|i2(;KDwt3bU=&<V~%^klW&DQdgJcKhv;5A67N`Y|(*W5>2;*|86T
zR$IGBeg`f3xV<A`cfFKrXMI4wx!0NzgzwD9*~Vl<SIgVseOt5O>tnAS#GJ$XBE4k4
z-L*ew$#KZObFXcEc_*e8^1u<fzlCX#Z**<$z`RE6<t!4|J9_QIwv%i-GVknrTJ$H{
z66P`jl%VhKh7QV~7L$8ZP at AJ2G-k=4FlOajHwhOR+GMqT0fy(quj?1HC%aLv?krHC
zUXLIUx7~x}YVUa4?s^UNdNxD7_OM>vqF%3~UZeLzG(1uyD6p=KFukr1axT4`!tc<J
zgvmPE5A>rsa4e66daWCZb6NC<$spAm7x88xw(53D{(*sSYW%cQ?5_SCh9gi(RXn%b
zi5&=9H*XZ3=w<Q5gJDy&wG-MMfhnRw1xyWXvDy~!!g_dgQPr%SRarZcx4^pj9+CG$
zp~w6jr|Uqj6MF-bJ=X@$kLUg!6}h}0fATR$)r((GgLULv4c68kw98lj1mKU>jd!At
z;qI^2P5(z;J#XE(7FU=QLh}}*$wpO@$8h{6aUyCPdoG5$MYU>t-ij0sw<2-zZjkK2
zWZRxaRVp0 at kq_t6%k&+KciW+77fuA%qwM&yAd)Tw_fgrnU<s2kQ8Ps{`lVomK at GeX
zKiFZ%-UuRV^A<J#<%IUw*2K4MYtjpj`=(R!H>r>Uh+c)6nf5o)ZK~pR at NhkL2?i{9
z7CY7-TxN?lh*x8<6kR<z`?jMWp1cqGdmDa;Pn_;Pc#8<Af_o=g`MK}*KG+AA?fXQ-
zwEP*;<~X4 at t=R8SB!l7tr|V!&-{DT|v7o?zLM>wUZbT7k(zWPyT#w2vg6o7 at yYPUm
znD<@*wqz#w_I1*96Z0`fNk50Y&oBNG{-T8%Q70(t2>j4KXb$|L)-LK#%tDei>WlK`
zV%*Sp!O9%S?9lU8+mFyo;r)Z<8-uuVLT|TBP6%gE@>e^yALjUZR>yrE&Y5-3w at Xk{
zM54h+mh_Y;f_HS3NEq(Kwgw}i_o5Z7DyA1v57rR#mG=^v+>eQ!exZQlg*_loIB0XS
zG(X(0tfFgi0`RcDwagLNms^w-Ex~*RdIVq<JAfYj29+{K0zu9{M^_=>4`T`orc?Yx
zB-9xl2YMJ?Csb6sgP;@YZ0SQMN5S6^uBz`R%!%|-!*MYx(07xWnplc{E%;L$t9_oj
zJ-Y8lR(r0z88sxaADWJiM{h;{1c;6reL_B+wpU~PbGkQy;E*uQTc!huxF05#0TP`Y
zA`W5ELy at iJRoqnu5_upOdP@0o%MR_Z+BTwD92frlNvGs-Cw?{jx%PYX=l6<a_`_{%
zbZ1AegGp;A3wLV%1(jnbrC$&CQyIelsd)zs60x3xk$5fwy6s at _9K#j#7OU+c7zulf
zwc<FGfTUOG3wt2!SCB&co&mJ at JvhaG;0$;1jb|M(!khwnj6TQ$Pu$Bnbj+Wp#;XQY
z9>Wn_(>FRH69hd{oDna#{9U-_(RPfkdBg`OEDL-^GR{w;oX05SUhA?gxQD;~76iKN
z30(gHmiCv$w1U6vwZ8rw&YN|-fO&RQ3RC|axyp1+Ue-0C at MMa!s0^4rD^$?VLB8*I
zjvmimp>i>vIYJFHUg>*S`?(nX>h4$U9dFo&ZK9gMe8ww@?P%|Y4#j)3p1*fwOC>y}
zvdbTZVvGk0wto#GThwJYVvG|U_penYe|6AB7mt99-IuC*so~<e=o?P_{Qii$3yDwJ
zT?vedU0JsK1f}VEIX9B^SLsh6k~zL_YI%EKS5|bG9ee2 at 8*{|(9qPxSxUAw|p&u^m
z1fb-np_3=T9{p*$z#6PEJFme4$QW_A=yas at UkbtxD4>!r;%+aOfxvSxgNO_Sc0r2g
z`hL!F84V_KFWiJ8cY at aw*F4a&j+IUvNsVaxmGJ at a&g8np^>4}{cWKcK8`Gx6M$p?<
zRDjVKF?9D7 at gR#%W_uSSoH!SYFjm_(+GhN_YdGft+kfQV<09XC>Y=V&M~~<hgQl)T
zu5I1-r2Pow;9=P(KFJ6w(%xmY6=U(rb`d}=fa#*cbS1LUe;z+SKH_>rQ$r9<Y5zU{
zfoizg25WvtU<mT$g%1;Vt%Zml8mue+jFbnO_KWN825T<#u;A$iYZ3IvUjwXiK at aF&
zZm_<Mv=3q8A8un{_6sC*HCPLG!9<?f)?i!9wjor at kxMEN4NZCg%RY~z3;jj~c(DiT
zP;<lwzo}-N6x)Sa- at R7b5754`2iG8$VA3kaF)}H-EcPIUCcKBjEBMOTgRB!_)<(nC
zu?JTTlW at oI6dZ~@xMzffdk#;*C&eBNTM{lsBWWhXV-I$WBFwU|2=|a`oY9>8>^jIM
z*~_J}l1&(|vKEiAJ=xgCbHfvbV21%}hJF2GG!bLSpaI$OjYV9ewBv0>g*<n+73Jg1
zgV&|{8k53}3=`_Ck~WcpXXX%{&VC>%nRi(co&_;8a_TrG;+`aPJXDZ{%)(ipsX>&n
zM3;f<R(<WQS%FJFF_cn{+cgg3o?yrC7nyALbj*F+UnD8-FX~{9&^D`W9Gfk#AGZ&q
z9<3}Ck9anoW-wgCUaU4Q?k4*a^@CAdmX2q4JO<VkS8*wCEXb<d*X8K%9go?l$NGkM
zRC%+xEcZ%OOkx&`*^(+msqPzi%KkH-@<!;{6iz=>m3-uc-n#B6`vG*E<?KC9Xv?yP
z#AEi7wVb;LKP+^-(z3?(5EU_;sB#b3q0P~+^NEVjTLamT=Ax*2S`*|b<_n1KA|<_8
z$*|%dQV|1IGw`rwxvvmrUD@)SC8~0}F#*>YW?NP>5t^>UnTJ(^M?I_Lo}w^-zQgIC
zs=Vb~!i+{R7mQkC>NoT^JdC5#&!kuSm`KUr?NHx!N2V%``Ye0c-GxW}^;Pai;Kj9_
zmit*{=p*V>dDnqy3#xh`;_f$?%2+E|MLdb2imyV%3{`v*u$Tjg at G)K(S|nbF`Nl1g
z_!7+h)xi!#V{?LL27vpE`jN$n9mHhi|3yu4m1VWj+_-Yv{y66Rpx7$6rC4+q#I}fr
z_hW{z6rtn&MNJ at t@3~)S$?2}F12bfJAE8W37=J3Od*6N&4eoArTv~?J_BrIRL!*nL
zhl%I^3Gn#h;g%CZ;H=lC?3grqF%eLV=Q~V9H=$FN8eL6#fIXs?eMhF^32U8*>e at P^
zm14<D^|uJ;{7`vzk at g_{Jye0Y(GKYVJ7?G-Oa)qPAB={CSXBY__QV!OYH<<Z=%+a>
zcCEI%MG>;La at C;k*3|g4U`ANm*g%_-c4n1e&Cx2kQ)n#_!LTn at J3<H2Ryt6kn5eFD
z-xGC6>;|c|E~k7&Woe=w*YpHzKTclAK+<t5AvY#3+GNAJSO$iNRCB at +PqnvKS(rG5
z44?v70_w|I(0E(XDmIVXR<r_KdA~;8_wXLLNJpkp+goij&AXi)#CByzkrPMHz?X|z
z at 3tWJc!;Us(|7@)1Ru<P6f?(a<mBX$?V*{SAVU=4p&m?n(~?b&`z#)&awFD#?^L<(
z+t=@BYc0A~v}DASJnZ=D4tT0^2F74^r;svb50TJ3gs(?&VDUDJnpKu{!dv0ND~>@(
z`|#B0BIJ`YIqp+JCa0v^={iI)_H#*g#WZYgVG}bj!cdLC*6Zj&@r?B%aM9lRLEFo=
z-IYbVPyhlU>=hZ+CT4Mk1AYSInzK<mMApWpy0;5m!t_}Y-0xBMtJHnInA2!0TCMI&
z)%_ZEFH9ND^nki=Qt6%QzC+z_Q}=7s{dRTVEAA_bnpk)~bV|vV at MeOz!5E<^JC$S|
zyhp<diQzxD0q3z*Rz?_&pasn;;Oq~*iiQS7r7=HiggmUU$P=I>z(viFCy09<%u}e+
zSWD!|XA<$S!aI47JjF(yI+eznBTuQ$)2eWx0pzibJgaaG+G;_Iv__Q%tVv at lQdoz^
zR;REvyhPUR3bH*Y7asHTfQ5`bIsx+U!Zit&pnzWDtW<!Chay^W4 at Ui(9 at jx6@c=p7
ziphlvV$Ndb1Xh|NV=D%%QFj*ExaehG&^6*(cy~1O1LAstaCmI{LUtLpF;`yDx=7}E
zJI|1`m_uii&hHhlxK`ZqfK)4Z3FiZJr9w&3VO-yCT(45s4es}gR^u9^l!phibsE>Z
zjOzfx9ZeHd*OaRVG#tVA;4JEDbE+E=A8k$pVG#mCsT!ywP?!SNwt_dYuz{^oSe=1&
zDy-GOdK9)wW1Jm=!@Z2%eWPe_#~T6-Ar4s+5M80811Hp$79%=?*Sd-cfM%c~jGt`i
zryAF6i8 at iq`-?ht3Em{|M^LCr4j>(5G#gPvY>5dvrw%b<>8}1<+hcfZ-G|L^=m9LH
zrcn4RHZ2qDG_V8!jFIdRk(`W2!aIdi!^KKr2zW5ujNk7YtkK)75{U^*;Q-GinpO-q
zUMpQc%4!t+VJNI2%nf^f5WoHvDEDtL+F)MWi7%@@R1I6aM?}b&M=GrH=2OH9_*&${
zj-zG8Vjc8uK7@!^VlLLE-M6@&5w_hw_I)lH?^b#9xT`E$S>?4L<hl+a*ZUYGb?`b;
ztZN8mp^EucB?q0*3)hXn4wGeD#H!SiM<VW9V1fYdt(Fb8my0Mo5%Ex-jXz=G-%o)U
z5$`)_itnVc#}d$PF{DU?lPdu&SRCu;YF=p9b)zDo9_!}Uf^vE81)RNdM&RKHN at 83W
zMEvNuh_|;4j7w3U#aQxsgQ2Oh?l!1CZ)d1aG9VT8sd9HaSX~rVLTp+dfuazc*&;kW
z2t|nnJy{dTBWfb%EUB<mP0CS|Ww}^Po1kMwwkG0??~BL>J0cM((&WNu{@ycQWuVwe
z672D5ER1+dip#yQZF?(4*Qas|+17UZ<5t@`m{Lj^PxT#<8t-+SF7zRlVXUr3KeayK
z1)-3nHqN6qq$*6a!84Bx1fhdeYg+ML6cl<8k08ItjoeOvcC3~b;BFCX^r#u^hjov)
zAZBYp{Tqv+gTja_V=K98|AV0n(y^nUZ8@&Q?!Q(9G1$i?7KS4(m;5&ttw9$;l+M^H
zT2yUwqzv at 3vvpU7d2PFuwkV!!Dk?O8oR9U8ez+Y%^lP<0gC}(rn<I8+`>Ty(49 at 9*
zv)G#G`EwcYV9y130tusA&I`Mh5m`O-#bnQJFF`m>ni+Wd2-;`O$hX>_Kq>6l3>>gp
zfrr$y7}s?Qk6=cXhv$Pp)SOcYBC7lXA@?e*6ih1QrUmk0aFN>ZaE}ZygmRT0WsLg9
zNX_j&&FugotZjl at SaS=)(Schvwojn{-BT3cJ-9(kQ?^T!+&s-~p5z8UKdDZ0E0)}v
zz^#tl3Kh4)f!zLp29-4})!ben<X+VniEn5{^J#{*V7P$;wC#!%vJDHirhMll<$IE|
zF<dacNXYl=704QiuU%y at ZIn#cNTy67)4D-SKN1r=G{wJbrbkj<_t&eLH6H84NlUsy
zGTqJ;cLP(%v{f)=pB|vjx00N%)|~Ss=WWa%kM-cBIj@$S_b|oXz!Y*`HAvi-lT1fz
zru%u}{+fmg#TLMF$Q0un2VXnBp%@5)HCUtICMeukK2R3HaLpR^YmU-1yq-ZN{y5o=
z|AM(Nq4nR2cKmfAS;W`U at 2L_wqN2oV#Vp9a>TV!`8=F9Cl)$lkprVBBiat at OOX!x0
zvQw-JnJvCyiDF$USvLySbp+!v-mrvXkw#B6pgrCpb5YD>4zDzy!=&n(ME<q?IH`(o
zNJliYQN$6pyEcf5;r<>Gy|}T}ptRP>&=9HlNW~N}W)fI(cPxN=9xGzoK!}!L+z1yV
z!%C{T6F_&21 at drXf4~*v;||H7Kryi0*mjk2J5sDs8&>evjqOtCDuMp`c8T`jWUa?z
zh(On_!EJ*Z>%|G)EY?XPL<|kwH~suy7=d-A#v86AcwuaL>TLOk?cT}?bMYm)g<hs(
zpA^#}DP1S%SasX=SYur;h)4NJ#Gn?YhhP=d!Up%?LTG|9E-1r-62265E5tQSu at ooD
zYcuKkaIl(Z?yBN~F86BnmTsp5mixnP?{c}v8e2gyD63uZYX7+$%fu%AdS-T??|Vc)
zK6BcEmRYuwJqKxe-ayPdFoh6xD7SV<Dzu$QLgiK=De>NJioy*|=>N$80kJ{9;ECN&
zA~xV%?=jDlHd2)Dg(Fl}D;Pw)IfW7L>SB1~urSHL?c)}V+ at iz}-<OqiLI=6?!>AnE
zPi+BzO9++t8a5$A9~?-dM<906GbNZWY=060I<d#H?CZBskyW98SU0Q at LZgES@x`7P
z%*8Cj{5?lN3`A*~NzTSdt#CF5Tg~)FHLVfM#+)lyY?M6^Dr%(?u#`E9#xQ{vqZ^2=
z5Fh}(ElHB(r<2e-k)$a}(o4kTvPzJ^+nHspNvCR6RNG9dj&!OzMb&9iHKkL96&2%=
zq+C?)0J#bkl^B7v4ocIh0*Y$2$typds)trclQXII5HvN>si<z3R94%!f-;-%AxTPX
zO|mibg}-(P{TRen`=Phl_8ZmAn400zLW at 3-%nm9VZm+jPW+`N;m{7(;&i!JkA+_6D
zElY44`pK`8`hKx4p$QVB0P^uA;$4C5M%d>6vX07+5Oay%;zD8IZa2KnNmV7Uagz}y
z{J7igdvCz5<vu%W<#OCqxbJsiqtVs4WG6##tLEdxz|475t{FU!%?WZ<fdNpkZ?c~6
zOwG48Q8z(vMI#DgkbWE0$tN5;emz?`693MONGOWnvh4<PBcEjMmi2c09AuEsshDN`
zmAW at 3TSc8xIXcpEwEE;2C|3I%K0`yJLF)f3sadPdLHG;*8h!u^d)x~!8B6Gj2DHV(
zLLe_Ql;Xx}%TpOT2V_VQa_4ktv(?6(0p%M}u~s~SR>*;tc7W}>a9|73hG!QskZ<Gr
zbYdTJ#C^BQeY?++^i|#>Jg at GHR^geqI1=iko3bW9%{2#Xb6!@c!*aCru};bJRiRhY
z7h4{di!JLgg9>JNZr#_i)`q9VUSZBf<U6p}iyZHQVkh(@W?{7{9qYi1;4=BRDi;%k
z4 at NmBR=Inel5JI?p6foJTH?T70_)}r@&bVhx3j$yFM^z1lx(YLIhf6G&RSd-ZG at Jw
zOHgasaTjCJ_C?XOHuoh`$<SN-GtgV&VNBE~-*X#a9{2e)wl1gTb~|2!ogmBQb5`FS
z*vgXF-ODjz9(10*O%EH~@zPg%zcDxGy|<VB<|8(wwes({(Hrz|iNPvyB35o~@B3o9
zjC1gMBen`!63uk+?gwR^iRCZDBCK_l2y>Re5E5%Sa=H7<W3O}DKqnUJBZuwhR5G at x
z%;-$qnb72u@)IN8P2Q9ys**Rc4#<@_^&iQ^ro<nTiIb`m-$~xYs#)Y;u(MQ&K#NUW
znYw2rop?3LDaPR;(VDuaTTUE>`_yQM>Z|sPtwO3=fe6#c-5BY`CQA9*5yx+l;%y+U
z5HrOISv99lk<W-Jgd~|ckv8!+)G;Hco<W>g$IP5an|R%iQ=_PoDH9toGbhp}b`8)|
zs&<p=1}JF~o(T~cq-*Hfy2KDzSEfp#2g!9FspU!4nHhu=i{J5KP&kkQp20FnP?+f5
zV=~YyO=#Fwp+r*|9RkU~Mm(D)Rt^xwFdA70lM{_Jqd?-BC~<6B18MhxJ(UKRN%<LB
zoR#Qi7?+IIj4BljYG2{cGigRV4JN+I=HU#f9k1>bmYX;zVoJ`a#;YHY&_jT*aJNE6
z#fiPIAXBDb;<vBC<^5j~z9RC6G7}HMemFoRehcp+n2GIR?v?~n)$0g;*XAn=Ce3Ce
z?>}>G^6{fL`TzT`WelJmMO52zTuAQhXt_e at Li|w?{p;dJ3?C`7GYyq(mIP|3!Dx^v
zgC)SUKT_o?|3Ep)^w9M&G<cepbx30?7I$?T1yAjGZ^=v1rgJu^267gUAR?dcS}DtZ
z5$_j^B)y=MyjcM|O5U`>{?!d^I(gNYyqck|2JN)z2Afn}mKK!?!a;(ds}v at g>7W8n
zP7-sIVkV{|NE6_|2U3Lc+|QM2VLwI1H;O$Sf<@xQB(p|{sb^~WTriN?FhQRBV}lFl
zL<GVcK6oW>_=qKM)FPR<N&E_Ni`ixg7XXSqbjOKVN0%Tx`f1irvR3D2t;)&k$j$m&
zPTrllSy20RAOX#nvI<Vho0j9`-JBJ;ChxadfqS!%We5LgB0+a#*03?ap2*JIpTq3(
zICRITtl&v`rv;`;dZLH!n3HvR`>?z<({p}O4EQ&8-i<Xmd+oeiYI4>(c~8{j{KLt6
zwkGFy=jX+y=e%`(-nQvEznGf0aeB^cQ}dpgp7X0n-YwH}dLwzaPtRFZmG|@MSvOw@
zHd|`)UaScmtdRu?=~>pQtgPFz;&~IgCkOs*Sl)}11GkLGdwO!<wvl;#le2c@=WUoA
z*mhK2Y)at%f*&9D{^Y>H)AH_{9PqwMqP<_u1M-Wqyq`_Z`pwxy?mmae56{c{^OQi(
zd3nE|61Y2 at _vn<sKf-xyrvx4;&->Msz at hTIJEjCWC+6KUC2;+uyxS%Rem^PCn;iH-
z1 at k^rk$0#v at Z-t?aFc2}bjLASquQv at eOY;4PGEC(UTd~WqrTX7_&&skw)bccZZSP3
zq6Ngrcu<qqsYkjEoswibPl`lb8zieF$r^)1TpJ{<lBB~R5!We_YcawgN<b0(ngAB)
zlV35oHjI>Nol<S46e6Wmr=;e1Z0{^2;OV40`Z;V?%fFO+8O5N$eNLBdh7`s at eTY{f
zz5B#7H#CFUl5#PhL^3^}^v`{7Ac}qXul8-i`kw7=5aCo at 1i=)B`W5k1s&ZnuM-zy6
zK#_=RgG3D4 at t7E?6^XbuNO~ye|LBH1Ml>W|w>R3djm;zWJeo}^+7n;&aNLjBtP$@@
zEIgfn&1_a%7kWsC?fqJ`Ga9)fLnF5cyBRpIHo!;oS#@~CeXkFDRQbI7zwP`V*<sP|
z&~vZfJYd$0jn`g*VaD+;$CT1@(Q(*Hh~W1{yW|DE<u%#ARc4VVA9?z)lbh|N2~As}
z{fM#58;bdBenVn0*mm0`TNOLx+q|fLR&+u0*S^+Vzp%b}Q9bjRhsf{lDZdzBw>evW
zNXBYk1q!^<W#iiwbhRaT`35gUh4wU$N{XT9mm=N*Ody^19(iIm0<VCHaW>+Ov%MOu
z at jn(R*^9}L<)?67V`9YpVpZ0wPS%@vp%JcTR{mgqe4R%<Wy1MIO7`g}g>ESfu>{zc
zFlU!^9c!y<o9k!Jox5OG?VS0jZdB^09N*pev;7dl3?5c;V>({@W&etJUsd~4MJ=~m
zZDI5@?p@|m{=P`b8<@4R+IF&r at evqEx|-*3nY;Z%AZ5>$J<j(}hDPEQqk>f>|F|H2
zb|EIHa!0Y&bFg!E8J6Pl))?x6SqI~dQ*KbGv)w90Jl7#q#B_gb;5)vue{R6U1dru3
z7#APY5t_yaA+XG0XKn7gLG@$zDe)?fdJTtf_qM;X9QMdHe at qf#180eTfE`iPcav^E
zylaxx{A00Om8IY%mTk8CdrV>Nvb+AC)AwB)k2g|&F(If*$E;!B&&Ax5%G70BQ?}Xh
z<NrwM5?=>uwhuvd2><rK?eX8NJye%a?<Ox{-*@pHjP%zvDvBEMt_I)t#1>ra?TPY@
z4$ecvL!@?Sa?cXCD?RknmRQN&Z;VHeL7)0=F}e?4*u!oF?wfbtwM(8BFXujf68jZC
z-vyqSy5D5ou<!^Vd^s at 8Jow^5n8w3rurR_H^w)U-SboHv%?Eq2DFJV8VUP6IFLC?D
z0jzni15en$)xHA|{7f(szqSxtE>6M1RDCfrK>&VoVIFo)fQ!t2K{ETdb at oeTcI228
z*4b at jhi14LeqLB?JxH<m%NMl--_k5z1q2C at Yf_zN(FhhzqCbHLd;m5aq<H)>$>VU%
zgKWVA*~GMtV)Kg?)Jj}!Fc2Ga?rkNcHXEc^{x-?7NV9xQu>2WWs2v8H>uSkW1i`MD
z1&nz2t|DEE;aex_dTz#*(DWf(MBJar+_6s3Ylho!4KcU#1Z#oMy_d;)r$LJAF%V9+
z-{qR?ser&$vWWE{o95a}7V!;xBqyeTuQ;U`ewbu<piqf<xU4sGt6c?xAr`@Z$EOT%
zWOVAa=i_h0`$Zu!SIj1XJ!4sG)LIg%od&70wkOMK)n&abg(nZSpFou5wNC(ok{BwZ
z44ZcYw-ekOW>SjzBVZ{tbA)ET9T(6HGb^rj<RiBdfNPWF+K7`IlSyhP!M((U0jCOh
zF<HQh6O^Xjkp&1oaj}U&m9rYzp|6Km$n!65$Jt!;XS%hneH%`Ad+^>hIAc+vy%Xob
zn+V$F7J-N5!;9FEptlXQZ)Xm<4FMCH;?8T|CE0K(o(B>H;<fi6A+?i0+^ui#72wY(
zVuRc=fR%VDk={9QC|W~n04MR>gLgN*3$b5dC-)0 at a=*YPbH4!7#kcOTU*HE617u=l
z(-j*euz7$W4XRL{A1)=4*B-`+iVzzB=n46SvM}t4bf^c at Q2|mX_X%LLS25li#bTBq
z#)lCj at o!@n+7)<S{B|{-)13Gv`HqWFEr&0+w;j%{>+Vp7p^l5_&6^Yi1>P~4f^h3p
zeEcEEs&2(+V;uLALL?V*Lu1>?BHI)Kq%Fl6?{!>Kjce>JoK=X7#WG_lGlr2K=BqAk
z7v;0ODFjGdjWafcUebhXc)Y1_a#w|s*_N5BnYj)$bz;>@>?if`MhB>gGFKDMjW{>b
z-RC>;+d7cdj(g(NJ*kn5 at ZpELt&^IN?Y36ldTO$pYnj}lTJSltyh)`oC+-9TFSbJ7
z at x&6Ko!i#%I_`;6w;%w(25H4<t5~~XQL6}gY6%59BUsWHj8x#QlE?vff{_<nE$?`;
zxttfjZ96XE2zWwAU;+;mv<j!KVkw3NbrST13yp;KSZ&AT3$_YoZWJPzc(HA~i{G+G
zg1ockgLK4Q+sV6bL4qq3z&yx%OAk)AcdIz at D-GL4>))ne$?G<rK-7y9WD=+N`eO7W
z at 78?$h18^nnR@}=cE?D<W2=~jL8kQuOz=FO%H7*UuK2BFftQbN5xMxr^iI5x0-+Q!
zlX1tB?QJN;$@3-%>`~r0 at kgtfgigj&cZ{Gcm06JW(J&J{v3;xDy at h$vxFS>NNvmyT
zK8e;VBEq=iDdNR!oV>Ml_*>=P#G9)4O-pb>2N(3+f<l(YEF^1Wx|}O1ch at to9bYRl
zh2FQ?{uTSZAd(^?j60qpp4UWLcP-PrwX5;B%DsgceCE&A;Jj7Lwot>juD~tMcifIM
zJc!)#)Ey%=4;0M&*1EOZaDsAgV}|k->v`*~rH2LhQ|1P#bhvA`OY~PP3M$|&w6+T;
zzUzKdr-XSAxJTacWUXJ at i&FzQ at r=X(-4{P4+H)9++tANc+nT at CIx0r@S?)ec2uh-t
zByVP5HRuST55j0yLF6vObjMoZRa5)TXiA`gVo3u<D37VPuL+l_2MV-2X}iT{Eoz6Y
z4Fm<RFO=s;g^Q&m(iO{Ttk4Hhu^F}yeXp7VBOWzB%qQNrAmoW~052#<j}`F@=!;38
zn$bd#1F9YrZio7PCnmWA3LaW6oTf61kjoC8T_h6MkcpAlDwtwUUZi#mOvN;02wQzK
zO+u>g><pZMbof>q9PWV0M|_gUYWoVeLUItfzPp<0lv5gx+-&7s|Cj{D)~l3sA-rB|
zwSQZzu!&dKrsHdB at t+D>J_4LMly#}bw at +u|!6Dw5&*xdZ`zXdSxJYaXz at 7<uarX!@
zx~zvm*=`O$v<F&9g9|jz*`zGB-Km&g;0M95E5^Z7LJ-Obly3zsGSw79^;X*!v5|HX
z_6~^cGN`F6ry99MrebCy3tN16jC5i0C?$_ at ggow|E?j(94Qa^7#oVbjZ|eA|q$bGH
zgfDt=M8oGsBSno>cytO=AX^JmO=f5tFnd!nt7Cp-!(1^g3c#_^iLaEq6XLguW|b^a
z=aoe(C?i5=<Z3Hw<qfzu;w-A$1n##I6$PBd?Vxh(BDG{C1~D<B!j}ndC`_8xt>WZj
zYY7z3!d8QmgDryONDixb#tSaY#-kkX4v{NMUBwf}sOQCwQ!$V+kK`#g7odJYJAUhS
zkXFU-k^9+PkEMV?Cr&JM8_(RTDDLq(5zi=;WIR|XnPRs-qK at vMsADJYSsGcR$~-yP
z;?W~+J+iFAGV&hY#yy^@uyM8%XJ+c<86}X62TLFaaPoR^itvs58-)Rik&>JREB97;
z5(8d2IOU7Zzm`6LRVl#v-EwZK4dAK at +my&oJ})?Ny!j>QzF$<xGX$U at JSYG;Lx8p9
zp?5EHd)HA203jD)79re?>&ertWK<66Cg7}|DjaNz3iDPyR@}-oCyqChcm at ZXXXsmS
zgb?JxgF=ukTJ>40?UFpQ5JM?BO0T$9o;<QB2dg at qBXXI*!BSfzZ(Z at I;d)G?T`%Do
z9GZB>3sRJgbtexVES79hEIy5Td#;e2oXC-xQ4ztzT`3A+xvK$F&+;96UTrM8U68J2
zF%6iMgN@?~#)iMxPXjZ<1p at 9BIC0Vrc7`ho!W=wScqAcvF=|3A77G@<rQ){Zj38YW
z<nfN^E`fS14b8+mqCGe>l4l{bDxAu#^()0&5Dl)^tH?MUiq~ceb67Oq0!9Ky(5`ap
zs5bF(r7K20YA_$fU at 7vbM<Y2b+U|Em_vJ{*8j*qr&4v(KfqWfkkfSos<V8}Z^PtRO
zTvL~@Pjz*tcpsAu5k`KgHZg7 at Dguc$>Q+)(qwXlhDfQs8KYAQT$3phCYGh0e6L1JX
zHwxS1_&ACr#U=?;dngb_NRcXfoE`<4+9^^$lBwHqlVs1-RRk~+24(u1^z>Gho-flo
z2Bver2r?JQFTBFPtHnHiOCjup4oN&Ul8SFEhyi;fy?SaebvROSG`$IxW0GDP7&w6H
zF;<sjU!N;pYmJ0v<CXXJm&N8|zDtKW{^K}>h5-osXz-AV&u(A@#eBc;A)HtX)5+VC
zC<`;W!)*7P7)~c5&cKL~T$s1o+wpEcCY+b(33z-$+kRjTXLH3=GnwdVc(h_Tu?$}d
z;QYH2UoXt4`zCEQsYq@;4GZDf&u9<`yJ%my6+7P%)zMlIbp48{<=r=t4G*VV1cc%;
z8LHhUj7f)Ri5b{~r{=li9y6xq8xZLQz>o(_of6>0l8q2BaS}Ev>h&(PP*VR=(R#r~
zM>itmaYBz-?G4!NlUR;r7-VjfWyF_d#SR6n*jl(`eE%rdYLDR|kb8k^Kg6y>Yu#a$
zD}qSKw%VovZ~?84gbp at Tx{(P76K4UE^ZN1cWW^4G&+i4Ft>AMG9>W+$ufk>`@X4-N
zF%%z)0iRm{xck7TV(h_&3b$hX!NgKPiqH93{Eky>62|>~U0`zw*<gR~%VJy8gz$=U
z_jQ5E)3|jXx7IHW9&B)zjy#yy1fZcqJ&52-RkB(u5u?d!y^}AiH3Pf3AkN5SwZZ^o
zwa!)5QcMzGK}vEzXn7XDOcnbOk-=(+bu-y at T5S{1l-9bIKzPO2)ex%$w{EAkKAH!y
zqS*%%1x)Aq^CV0l*s^X%V;B~7D<c!s?MK)mCbnp1i at M#2Th^`Oa4 at MDc95A9EdU!j
zaEa(c at p%-o2tF4n9ra*;xZG$d8T|qG?&EOM2B%=+A)v|j$IM8IAI3+)uTROfP4dev
zS|Rz}pX4_pDOqvi|Cs#ZN>4G=k$U>B($iR&9z;tj>LlE|oe(XlseB-)pLoDeiu8S$
zlMv}-CDIE}1NaP45^WQzVhu-Xi3EehIwVl<S{}|6QJ#NM@;rh)sMfmis at c}y&i3#M
zuxPs>s_lMEniE<@Uz88;cKia_glA(+7jhLVxxR#ri`KfYY4fyjE6j5kc)>jJ{8Wg3
zo;WDP3PY~ytQfv~7aLAn*aX3zz`OxJTG9-IK?TnYuPEEM2^Mt)Eovtfbri)Kbudva
zOiJ}%IR%u|*9hH&mysPz>&3TNGsLXcx`5Kz77Ym-WB(C0CZ>uK_aRZ(E1!7uW0LeB
z+Mf(~TH at yEDR8EVUD%w+{wF3C95{dB4vIwoqdVAxCk48LZ$ks<e_2U)a3PyexPvm~
z4iuBbc|uuA|6=OKjyFrbvk_asn}F{!#rI at d;kx`4qok9`r>X9<)=w`*{ic_p0R)4@
zAyq$Z7vmrx?czkTL4Q6Tdmx4OMRy*_9ksBF-~hYmH~fN}7)$E^``RwnVycAte;m5u
zLt0AxYZQ{E{naqD#2sQ-s(`oG@|~sR8>QsC0BVMLXu}QTR(7MIv<^6&F>Hs_`(T)U
zObYi?C`}mcY9-t(z8JxQJSAO3Lj%Q|)R;IEDIH0<a!^s~?R>I=-f~fFO00d{d<(r5
z4A5H-P~D$&{idq=?S?NSpHoSbtlsAZpVNy5un7t_(*7gfVUGLzDmPf}elX3Oepvqn
z?(|@PBz|ivW0cs-{Z%E~E3&$)N;bz{@8>{w!wNPjBRK&0HcO at 3RUYdMPW5t!Pjz#L
zm52J9-=s<k6SW|OJ!d;EzIZdV+}$(Hi)8mtb0b5+-<u)$zl0a*pUOJul<bea)=z`K
z;kU32T$ddxcl%@A!3(_OvoCOu&kDWY{C47prrmr^d{*&XtaE!6U&9ylD$ec4{9LJE
z+XJ>+v)*w^-if``&*AWfN1=RNm+f=kk8KTBd80#B?&t}jC!2RCevYK%c<#W|s_^Ym
zH{0EYkNxNNV^uR7AH!Tc0bkO^H+lDF?QlxAYp$>04Fz)TbT>f<i0=@Coqbej8 at N7>
zB;f}Djl$jmZ)rYwEgc13xAntR8M8sXcFB&cC+(7_boGCP_j*|U$IIPqv991WZ^Y1P
z?uhKrJE;D3NQ-zQ9lmg)+H0h2ud4WMzU_4v4HE5D at bT@1WjHYfnOH(~81|2_*~W$v
zDg+ieR4Zh?c>PN21fLt#I{DQAokYCcqa$vv)X7Sr6XB2WB at Jxk&}tr%<jVK7lA1QS
z7UH#vl%@x8%|lYM{h()r)fwbnyd;gS1N)+7+<~{VQk)00VJnh!e`D;Pf$jPSd;}im
zuZG=%t?YlcH{QXP8h0%ITZ6ZBJWXV5za768(!LJk*q^oCDS0~9(_iK8V)%5!^Kieo
zE!*in8`}gs9)Xt>M~n|`g2in at 62|{ZgxbBjx$?AP@!F1VE5m*-#};;<x=%!su-^#|
zHkP=upG}bc43GDI{cI_Q9CFOi&t at VC@}a)?I6+!{*V39I*p;J%#795>jB1K1PuEp0
z$G1E;=`Jw at b$&ZBL5xQ5_Yp74ai2)~nJnpNs^Yi!`I+O{K0baXVA^R5x+<i_Q{5T5
zb=J~Kxs4`+wBP+0Y3B=RTag)U^seolsX32Ja;7;&u(Kxv=S>*fMAK)`!!Px?=Xhu0
zbuZg3!>72srDu|F8SH68Kln<M`XK8GybT7|!|>^b3X1zO{Eho0+)dJ+cEFxWkksLL
z<Ez{cw45pXggGVcbBAuJcj>$g<IF8X*O$h*3rTXnRtxH$&<2oH>9qx!7#`=(Fd!J>
zF}f0SYSP}}uT%C8euMq>0ldrQWA85^N!WYl{y4!9Pxi;Z2;<yHzm&PkcOi+}sW7JT
zr5tnn3wB3s!XB4SJD%GiKCuh`%m?hmk3os(q%wei?~(WyyhyEX@)MJjH)0(q at tvMz
zVpC#wG7)c&{cG|@zCHHZi<(lbOC+vN-S2 at _BtCi}nZBL(cc$*w at czuyeFyLV1pam$
z{|CqX41a7DlEgd&rlm3Y%A8`KnA~K>DgHXd at T5w-nvnr#lMDu&Bg(*lREg23fsz0@
z<Yb2%>jZCu0qc^10jUxXrX(;JG!B$tNoEO1m3S9A86<&v%S$L=QuW}nuMH=%|CT8q
z6ov^LnXf5BzPiN7O!;E1s7orVnA9JfTfWUzn2|xxKn8non}GqT5`RuHNWG{MD;TIU
z&e~;QK&nJ`O6MsC$^YH}74RR!U}NL}gTa4>S@~B(W$N`JSH3zXHI_d(+gXXDk*mVX
z#&eN7w8E<xd!PdIBnJ}H(I??C+{fK)uj23ncyK!)CI at D~qP&)X+v$#l6FGpG??B>T
z at r|PjZ=`#u(hXL4k#i4l%I1I$lfDjr;Y|RebG at a(19(I|kZ8rQVS5O+ANPik|47AO
zEbS)(=&<<zmEM`MkfE}Ww=m3l`R+b<lsCQf03Ng;k9^SjA?Pc-EM0>#Sp)rOH~S^z
z8$W<m8RSia?gJzr%hN={<H)brttEXq;yNh~d6YwX=%?JMz&2XI&*?Xml8{4b>Bp!*
zIf7=DWrWsgapL!A at N%VWFiUDXn7EpzAf5`-#FCHDbA at DQx;x!6lyej$8+9OY2Nm at -
zsqbMz-+D@*k8L+l6(^z^72aXG=|ZyU5`RSCWj~PGhPVm)S~n#YV(yH+FEt(7a*erL
zl_914uWfqku?RAy+d-Oo9SQ-WfKtY-ja7Y~BZleXK=d1|IA&yVqd1r)M=Jy<cVTbo
z`=P$TmnD+y<=eaI#q`~#U+C()$K;Wia!9}7w54y8<d=Fm&ZzT^I=?D2G0w>NBMqLM
z0uv`0*OwXBuOCd7n0VE=UaPJL{=bk6|3mS0nA_n0p?IX2Z~ou^pZHn+e<Bnr54PjS
z{?Dtabm5=$Kd){Cv(NTFujb&J%Ju)$|GXLtK`^1Q;>$Q^{GV51zI(v`yIN=bzpJ~A
z|97=Tn>Ih_@}K_yuBM|aq at G9r=l;Jd8dRqLcQqZ|TpAnx(%uruyY!1a=SigJJm?I^
z?&b16KS?O at LkbtKRf;qig*bG&J}Wp7m@;Y7*9wa-x}s%%w570Y+?a7=O22Yui?|)T
zZ0zY{N>3kCR-zJ+3A1qlmWt`$z?5khaS5rD7-sy$fnAB>$hzjjK-QA{tm8%u4R%0?
zLZHXXq`-+3s&Zt0EIWJiu#rJ~cy{&3ARrsRFn&BPC&P&&^KZ$XII`g8oQWd~<GB+@
z7O%`JA6a_ikn)ieVnZuN*5&NZ9yW3Upz at K$AOR_|OdJ_3A5LB?$q2_{miLLgvbTX%
z#mLf%fvnCSF682qEDwv7{X||ltvNn&X&q!;Qymc+8hQuW9;fvb!A%hn9H&FMEH1sg
z%7J=_jI7RyWJ%%E^e}mNA+krw14j>jg5SvM*w7n?tjvq&-kftwc3>&+2dE<)SE5W=
z-sFLLhh}aZQX%zTo&B?n)tfpzdp{B;4{DDo!?VAMgeij(CSx`>z&bPZ<uSyk&Z6xd
zLx#HSr!!W0%J4uT`0(k2$3^(bI at b-TGuz=F))hxKX{9~B4STE_UOqBN8~=k!e}qIh
zsHYx<4QB_K{7Lqi-3}QmMXje8=IIR2xr>G?QwADt_EschvS``w>QqO2Pt~swVnh`-
zG+B?!Pz~t(dpKP%Ja9T_ZdWv0NCUZ7W|xmFxG|@EWMM2f=jX7Vf^yMwzK+VPOVKXd
zRlXBhZ{)j~{V|?XIkIqNE{yF)_Q%+eoR`3%7|fDA&>8-XfdH~or-h<10)Z28&4X=!
zy27>)a99RxFU~%1mT~!@60*aCAkkOb6u)*=*ITkL7--9;52?=X$f$7G5q-$^{~%t~
z;B`RhvhK^uCVlNk^|LiuIekZDl&+lphVnJh4si${=gUv~%k0O%Eu)X4ZEsY(gbxtB
zK7$W{*?krtK>ZxA%K!TpP5q?FkZQXrBYT25U-TOQz^@QLtsnj$IMI~IWI6(lSNCJ>
zmj_lzKk=YR<p$nK4ctbKoB(!BrX5%v#Tc2w#n=Zdu5iu|^AO`5&gHl#eTT9;(XPPD
z(Eo_%D_O-j#Edv{0@%2pc6=GOMtXiilLyBVedGl6D6Nq|;0TnLZSd()N&KP!`P7Y&
zfUpf*a%Ua!?W$_ at +dNianT>pU#GUlN>JoBd^Gt>#CvbEIl=V8s2S3gS|AG&Gq7M#3
z%W&ibzLWu_Jg4~JC4=xoL8*r`RQuBY^pO)dO<yL@)iAzn1J}0rJ#jHMNvAJ<sBjcB
z;J8EJ;|5^7S*7UdgU#a?3NJ80T=SFTfxxM0Xdtjg at lWToPT_@VIW`LX^J!=x&?WG6
zYV6(@xS=eS^L2q6My&9BVc*KJ8l_YTTy-J?ZvdVyJCkERxaWiO<F}dkYyy5_Hb-1}
z==OQRhyE2GyciBX6aTOJ;E((83H#7r=!4h!;7vaGav%IYAN(EQCuOJnfQY at Is?Wi{
zWWsCF?w`vZ8R${U(6QJ!&=X&U9Z5VyJcjd?z%%J>fe(JG;<E<-`-F#%tN6uX@?WDm
zhKQ|@{yy-NvQz#_#8bcvv27v~?g%{P$3z?j`Wt=l%>qyPH|@Fp=7YaSJdpBxTfm#g
zX!zw!dKe4*q-6AknFH0;ZWegTA8Py~;@K&G$k>I)^%&SP@!tacr0kTR)Z<qZh)>Ec
zk(u#Vk0W8UANAa+RK&5L$4cOLWtYku{MG$vEAUL^zVCw%$Iy6JcG)04lYnR9bBPbW
z$_IbU2OoybjhXld7Di`A=PZoQnYD1ttXYBDZ`MT1#?{u&oc-;Vh0)r^`k776v`}sB
zmGfI_XDwM$HomrY{(|OtGw0UMiPksI#1|=?>e)5XGv${XoY^%qo!ON*=FXm0Q(AjQ
zZS8`lg=J^dIv}o{TfcCj$W~doXnO7R(%PEx+UaGr)5q41nX|BY=9p5HKCLD?q4vTn
zYNO5d^$u=O9*Zq28+*mfg>z=rE{rzMnSZ4-3sRQNYMj{&!kKfT3!Pb&D0vnNu8E%B
zG;>a~GqvW7+G(LH>gUgDoHw)is_~N+U_zn3nFM7hxqdD_r%|>r>OcnOp==JakPV^A
z3HSyDD!8z|vRY_F$%NX^t``*lNiu)a5V~yaqy_VuTB7weXrqOd7fwwndRond+OqKz
zb at eW+Z(7id>W#awWxlAwL{y=&tW4FK`3F_p9$axim19pw&9AJFsxNQUw#=XNotFCA
zrUek7W_;~`bQ}Gb*Z1Qa8XEaeYG|XKKecg=M-$Cj&~&vExuUdkTFsQ&va;H8 at wpV5
zCtBXeW@{p~OiA`IVa>JZS at jp9JO2NzqGM()m^=G_oIQ^X4eY;-bLL0QPFxcmJ5GC8
z7}0!q`J^kafw}*W?Brv|(w)z1nmcn=eXXGp=X^TVv1Ltj>Sxt2p0luCYNWYkR<t%+
z6Fno^(loaoL~wi<IcjR1^U=A)7&1Po!vWg+B<)r-T`;{Ch6lAbH7{ryQ~ICO>Hf>z
z>VJEUCwqS?Nch<C_G5?Ju`mzCa7yHYiRF>n+J!Aw)H=0 at Xbk?Rb0C(%R#pAX`2$9D
z6*>jRL?(^npVRs04E{Njf5!7qS*iG2CjO4)-wFH^q7yTU8JCO;rp=sJUvWm|qBMfc
zfrBPAq6~v+<~$<UVC at HIRuxhS>}7KnEEI!H?c6z6G|z0l8X?A<C}o>Hw|ddMz`Xi-
zv*tD7cEAudyM9)4{k;15QJ;}3P;tqa=K6*)h*6g;scounUbtZX%(-)-SJy6LKskT$
zJXZeGN0M}-D0ybIzVgC(Qn;q818CRi%vo2}&T71>wqfR+xd3J at nOS>9{grd(*Up+5
zoz<w2=K5%3^Mb|du73V(oqEyy#dC0XVg16EdG+a)oiqOvDof?S!|P~NejTlLCKxu?
zUoms;%=xqGukcY6;_(Y>MEqv7YMQBx9b_tL1Z9H=&NOX$_8cFpM%&I?ut?T-?1b7{
zp&S^)?An>l%`>mAonOBg&j<6bj5em*s=>b|I=iBNQN~^~umg-u$u#NWe}X=<ZC4D|
zh7Y0A%4h31s+7-`c~Hr^*A3#T6Z~?FS05IvWPgE?mFh;4&4P!a<^|2wQ~8L9-jw#h
zhv&ldPxf(W<)h%DPkwwXqyON*_-S|>4lfly|9grv7=GN76`h?=b!(XR$rT1!&FKTH
z{AnL^@d#U0JA2MTJeAeU9{Jzpx%vO)$48^lQdaO!KH~qoB4x}G=t$Xcryuvg{)qtu
ztbfYI=0H9Hp?iHZMzgXBQ|hDBTISA;EV$A^=twtTxu|l&d_c8x7hEZNtnpZv8b%P^
z8aSU0#R#m1r7K%zHp2tY`cBK7X8PvOShyGhC9h^otl)7{cI3}w)y?%HO0S$Z56(u6
z-G+Xthl=`!nJsgp)91{qzX<VzHvdms7{~XS3m4A0QiNfrrwxoL)sJ^j$Q(oz*I*h3
z at xZ)=C=qLJYU-ae`kaD1pf<7`;e(&;gF8O>QXky)!GGn0KkkF?_rZs%rHk}>o#}&5
z^1-k1!Ef at x*ZJU^eem~v at LaXTk}khq=TFDWedy=;;Me%zxmcIv!Q at l%)AlgU2VZC4
zry2B5tMyd!G41L at AAA_rH+iJfm-^u6`{0-O;8*+LclqEOeDG~P_<KIMr6$<Z>vg;j
zKG_Ga^TFr&;J5qWzw^O2`QUH*;6uc^;o$Z<!UwPP!5e+>79U)$+YT=Gw?6cL^T7}K
z;3Kf!m&p##H}Eka(EZ|NAG{0eahlIp4f^K{oU1UJ5C1<Z588=Ie+<^ecn~+~Pcv|?
z!e~D04BYI$y*~IivChSV{7=JA^Wpyq=0V)#bI=DrAM05>NIxDw&8Nx0O+JSV+|=if
zvChSVd?w(h`Fv#Hrau{`7K2D{;>Q`dsn0VF+|=hX12^S-#K28GUx9To9vptSs;K4s
zD%P!dq~r4xPC3o`-fiILAWieBR7<&}H}Q=IZr1m3wa&_Nxd%`4In at WhMd9Rsu0emH
zT7pfN|9G`tn~wiQ;pD^3w7T50)w*LkeYJse_kyPXmVtBCRpWOW_z4C+jg`c~a;M;@
z>96;}uT)zlNN=|9<39LhYUwwf{x?4O8wPH+?<xw7gM3VT-frNg{C`(C^;V6auGc#T
z{nrhATp at 07q|={OC}2_Ug}BswCM%ruHTbEoxgWYv;goYaewzLl25#Eh?|krG25$Dd
zeFkp!JAPA|2jwZmPnY{Sg;So347|MvH#kVoHGEBfm|99F{lx}eq;S%crKW$+pufbx
zhn$QX9OPr-NBiK#KKR)_c(o5c+Xr9bga6eB|G)=7xmZ+7)XTL06+ZYrAN<0S%zTE>
zIB-yJCjU!)@b4P9*<TK0W*p=*4L{vp=NP!zkLDQoc!T~}I%^!{W7_R0K6u2yO}lM2
zaMNzzH*k~x(6OS}LFE=2xT&8812 at ZUGjOxq4F+zO`+^UirM9dM(t{6P<%2Ku!GGj~
zKk9?O>VpqgTf5TbJi`Z%`r!ZSgFotn_Zqm_E;VP!cBJ1h{qXmE at H>6*yA;lPU5KBy
z=X-qU*BW>Y=(T^|Xz-bC at Y!t8n{qzsgFkKXG39x|hyGOqH|2TT;A6`3%$X1l2kUF<
zb38jIj&yv1!qfG9n?e6|<kNcF;6vYO(3|!8y$}6P12^mSoWaMe*IolZ-;k$}&Im_(
zy{<CwsYuuIUlJ1Jg5K=!*BZFl-|sSTlYWbVoAiAKZqi#{OO<QVpJCu8{WlEUq+f2}
zCjCzg+@$X`aFhN812^fj&PvH?(w|`9CjCSMH|ZM;+ at xP=;3oYV12^fPHE@&uT?04i
zk32iG{2>E3=`S^K2U)e9%=f`J7&wO at O+P_B-?1NYDnjEGY4{hB#-ln7|AvGEJM-m*
z=JPj&cdK$W&et?~Je`J5QuvE$_%jOcOT)9t5Xbvzc$uQl;lmFOUG6M}TWR=p3O_Cl
zZ&LUvY4|y++;M661qwee4Zm3NnVN>j6#XS>_+CXnD-G{e_<}V21%+RmhM%SIo6_)y
z6n<+O{+Pmlnuhaxu{_jC_#Y0%+D=A_)WPwRwio(04waf-g@=Rqs9{0iW_&`Q$s?T)
zV|5<HnOF1w7C{`uO*tC`D(!))KTTEWT7{?cZ#8hUzqI?{-}S+NXyB%t|JT4d^lAAY
zGH{cAr-7UFe>QMa&cFHKFB!P0pSKO%)PIiBQ at VbF25y!++Q3cuwZ6&6lwbE(;wB$$
zzr-W>Y5izFk&bJ>l8)>CN1Q{4=A-=q at reem`+Yhe?I&nE{EZlbKREbFTppyKjGyNJ
zJs<oI1FtaXb-yGZQ$M<2rpu%IWje0?Wje0?L^`hhN;<CnP&)pRA-~x!L#Y%Tq&Mwq
zw1Jy;b((>j{(<jR at gN`59<<*jZrauP2ED2O=>~4fGt<CLd9F5aQ=Vl8Zpx$mce<P%
z2ED1DpZMT+`{3&h+_c+m25#!%6e<k|<uU7ZzCZ`#^L+3QAN+0~{4pQ=1s}ZM2R~ln
ztR8>bU#M_zP`x<!#Us7GizPe=|FIALun*qjgPZ=))bq(kzc6vf2RHqXNw57(dcAJ*
z;d8$aPFv-XuFnf3JV-y6`QW$s;J@|3|Kx-Fwfk{C@}KL2&-B5s^}&DOgWu<aKjnk>
z``}0W)VIdK$KYCz3%40KLoJQ}(!fo7*r;%}BV#H}-(}F-2L3MwZay!V at q;PPy9T`}
z&q$y8RvWm<f2qPLXOSV#^#=X_7v&t1Cl#do(ecCNebI1vPVc99y<Z&ZIN#Ufk&dtQ
z!T-$%@Ako8^ugcr!H28oxO91 at _~7$Dms$Sr`QZ2Y;D7YN-}1o^KO%Fvr}*IK`QS5r
z at LPQFZXf&$qf_#j{b+1a3OAqkYYg1%FAELar2oEwoAmb^xJmyf12^g4GjNmsC}aJ?
zq(9TZP5Q4JxJf_Xz)gDBz)kvJ8n{W{ZQv&T>jrMp2TxAv*`znuQ%rithklNMoAhl4
zZt}m&z)kuM25!<1Q|le+{?IbkK}>&mjDeeR<B2}_sXq7_KKQvl_+%e^nh$=lfsaE|
z=<#Ttft%yk4F+z;&p$D6v%bIZ!SD6Ke`nxkocySPPc-D*YT#y^|GI&jarGesH=oO*
z(hP+^Kh at y>h!1YYho>3z-}Iqh>4Wb#aFb7=G0vLu{HqWChJlYa<l%oD;gO4<$!Ds8
zS0PQedmf2#kbVY!8Yjks#T+B92L2&F)_ at AtHH%S238W$o*Wc&pNW=B_IrO}T=A*yQ
zF;3N&_*Yb3o@@hWn*Kh=*A4tIgZ_2{=X|L??lN%FEB71NXyD|pzuTerLuxtocRMNx
z;NXdT*f)5rG;o&NLlDOg44m|{1&Z%N82Ctq at wDB*dD)XM6JJTg^?UrY)jmTe^QYg-
zUy_a&NIrKOxFsR+_Zb6MMGCx#hJ%B=M~N%>XM%yN&_E=tFmN?Q3;Y=aS3|VG3zdPA
z|B(Wbe at YCTdRwB>q6U7HLEmZMI_76`c!(s@`qA&rI|fevuSl{0|E~!T(z6})_eg$X
z;G|!n?B)RjAJC7+EWCPNbmkR-F?c0ho*VTQHX+X(6Rlqo4UCyRGdeRc=8A<219(YD
zp<`O+&z*Bs{oJbqW3HSvtG0g0tokOr?l<#_x%DR1z*kDr-h<)m6$ZzFv_5Z%49=5!
zkHXl;{z)$%h}TjEmYw3G-|~=UEnxM>WO`vE^|lA~S2hN(l%@3Z at fkqr&)4V8h)??>
z$UiC6e^6<kRCk|Zj5bTXd+<-Z|1rBJ^}>sv)(zgDWDh>leWsUD(#1)>DgIyjErw5e
zr{uq>)c>9rvGwaEx~~oHq<9OY8LuZR+vS^-@>M$F?a=2x>#HPmmdO6uUIo$O&RQ77
zo2klA;HC`kunPYo91^a^%v~^R=G-wK_wFX%r=7?5J_BRsFNoHU!N)znf;!K-O5Nj&
zBxCprb$xRbj$AOWZ>()-#v8Bj>&*+Gn*WI7^B8~3aar>WtBVop%w_E_;irb-<k>I3
zj%&>PCx43kj5T?f`A@<9KU at B6k$Yf%u1)^4`L%Y<@~3=?{7W;G?|h2<D>CFi|5N1u
zeun&0KSlmk8S?YF;GfmsJsI*(`xN;fQ2B%EO#7?;6!|+<J~MyKr^vre<u}`(&lTzQ
zF9gO=PK9x}l1Gm^|4gm7tJ^`}C^`-a<Qdik>fHGgd9g<YwX8qmd|e+EjtAJMSiTCs
zaV3w~x%z70S%sZR at HAYJ=V#5&XXZ at xZ&T&(U?6N9X}4kxFjM{4td*Hoskof==W{}O
z{VRd7{B*uE$^qi|d0K^a`^nTmfa at Yc{&WVDB!&K7nx;3OZHQfhpO8N-fAxbhN2fdm
zC_kGrUH%ooGL at fSAv5aloyohw-?)k)AyfJJ56K*QKA+|DxhB1Qu0LcdzlVy&abjA%
z((At-G?~h;+aR(hzYEOr`FxXJel7~nRDQlK^PebB$-n94A3{o|^0%>KICMW@`N!dx
zUj7$V`Q}^&^OdRc)61i*JoK6S4|uJ=$0-u=r&{ITq5*YI=f`=7O!D_A`Io4Cl>ZC(
zrOVHCF_xb$|B)PQa2zX7$-kuKq0fCPf4cmoD!=|Noy;}Z{$4}=O!CioSms!*GE)8%
z at k^KgLf98&NiV;XgB^}fD!&T(GnF4u6Ln_!Uj)DO^7+l_OyyTcMDc+-PIekcdi!<z
zl)qY)U!VpC*8fZRrI&vx9B-!b*DR8S>hJk!5z@=Q82K~Rzw<Gf!&VttKI5nK@<$<a
zrt(Xb;py)NDmH`0uMx<fsr;Za{7#jT<(J@>UjFN<{B--h?HZYpvYCgz*XIwl{3a2u
zSE>AmrQzxN+o$DEquZwBH~ohmD at m&Hk$G}lMl%dJ)~NDzeRZO~*XP5KU+7O0sB=$-
z^0^+R^Xc-BMSfyAutW2B;1kN%wBPu5=Kmq`vn at C_n};sH&;)U<<=5w*`Q-0W@|ULN
z*X^gze9xHWr`JFKTA5LoquHe2{|5Pm{?qi=zeVQIdZztyJwfN!_{*yNbU6!D`D`=u
z&~~fOeJa06!|TZ^e>$%7Y5YUv=R9MY_yJqxFVuwUtmW765%5psnV!E<<=>VT*rw+n
ziS$hNo4-|-P^vn{S-1`1r}Jz5Wh$FFOK;#`tU0I*XX84P|6u=4?|aO*;=BBdy>{j#
ZGVas$$7kP6`NNMhH|F`%>Ytwf{{c}EJAMEF
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..a9fac1aea18d3fc1d723150563e599f9c531e940
GIT binary patch
literal 19536
zcmdsf4Rl=9b?zN$WGk}K9R)CQ;=%yepeaUZWMgYw0vc-upTSqQV#)l)=~$LWmY((Z
zMkD{lCc-l^z8w#^4M}NVy5eN<TDqXEn}8uHwDM16V?tsaLZPfCCXXLa4A_`pRO3kR
z+vlD$b9AjCfwXIN^(^k3bH2OJ-uvvc&ptm_=Br`z)*_cnlgXvstmSJG)wEp=`Eork
z)@xU5S8>{lP%p<r?PlWn93Gj1w}0P at a>P0vToJK;7Ho-Fzy4>UT+z&|kJ!C$*Py(H
zrQNfuK*p?;Q3b$1%raXHFUxcpUNd7FrSI##MS4ZZC}rtIo*xu((vVT<AAX-b`h8-@
ztWzg|YD2>VA(m<IutN={RA*N4NP|aXX`AsHcAYIrA392{?mbBInf3CQz8qW`{BrP*
z59n76@^%lgFN~wG;bt?l&I9hIbsZPLEVmJ{4zlE^uHQF85|X1XeaH<q`ra19yQ3M@
z4W+ at 6P>H6UypLr%TvE42>o~Kr%zC%c%8EW5idZ8yTSzgj57~uMHq5ald>68U`ra8r
z0EoE=-a0#Le0*HLB1Bzz(|?RvzYw|>GwX*it^t+oPW;le&f4z?O<#BNd+n39i{#q{
zljlqO7YENCbPpuLL$4=veQ(I{26u!tU_}EPh`*V>E?WW}cCn#hJ at wJp`1r}gHeafn
zcyn^luBXv9lG$1cGqB`aqY*2tg<zL-O9{&K<NHlRX8Ih{_wK%I@%!xmp4?3>!q)3S
zP%cV`W}k1c at N?1vv`Bw4G<&R_fU)cVgz%oduU~$SSqHK-jJv2JJnbkAmepd^Fv~RR
zOe<v6n<%l=aAJY(3mHwi&oox)z80fT_kGhC1i9{e*x1GM$Bf-Pf85x^^QVnr<ci~R
zZ)BO2aU3|aeu*()5K+o9P at hVkLvF)^cZWiTy9W7**UpcRGjy&p=ad7};gCmp`<K6T
zAlI4T9l_g!E6mLGc%ubd+9P_;Z{+l;!(2F{doHC{R>CmNOv30pqgS{MMK}09$XEs*
zsc9z2RxxPNLA8;P(FX<<@Z5H$_YAk|y(jRTZr8g`=`(I565ZEj)abs1;kkEAb8Ff_
zxfE!(qfUF_{$}QBZX{+MGOaB}74N?AHLg0#P^8fOXPLE=w`kW-4f~&MM@=LB()_hv
zkupkArM!~E;S=mo${2+RO3bpy0!-Yysg8G#&<iB9c<Tw%vfaQ;e}O}phxw5C&qmVA
z at bYP1GhMGS>nB1Yvvi>*SAeCtHAy*GVvXTp>EH>WJF_0Ng=W6kM7`Jz5iGOQI88Yi
zS`YG$k%xK6dG-L;eJNvD<TSWcKaO0;+(JI`py5IHSmtr#DZDY!Marqy$SU!W<JJ><
z9_;X<6!ervQoO0n&DQw_x1rzHJcT>PO2eBUEsxu1*Q=g8qpv*DuHUdv-+oOo5&iK2
z)DG*(^Sp_y&Hjw~?y3p3D<;%tO{iTtp?0~b1)rG;Wo<bR*{UIGSZ{G7n265D at tVPd
z29cYY$N03Pq1}NxC1%|O`p1kxl+ov1$h1ZZE`JHHrtnUtHLd+Dz0-J^ih*HMZx}{A
zGWF1Y|1pfe at 31g=$`}L%OK-tMNI%F$n1K^|>OLq&vtYkI!<JwMKGaj2xBx^2a_CjG
z3U#odaXqz;aQGAFg^?kZRE<ZbLWJm0;8dc5l;kv-K9{YCJt5&_TM(2$YA<9d+pChp
z at GyI3QIx3HeYWeez#*HL?J<%UI^z*DoSKpQh~7d?yR%q4RR?G3`V(>zMbe9Nb3;<W
z)%Wn0n13+*ZYs+;XKSubJ*g`fYFZE5^vc}Cpb<OGL}xl!8ljd3g$AKYSYrt~uo1JZ
z4~xSzmiDl~IX!hXA`Y`IX6YsmvuJJY$J at G*dRo&(yg5`~${7dVvJJzv&Ka3T8RM8J
zCoA@`JZ?wDT=3P0+;C9 at U<#?qjvyGto`5{}DCW*-efuIlXFS}hKu7fLHNP1j$GZb(
z^t(oY?AMcF?%{XQyh81k3AH=X5|rXy^@MlVO{i5(sNF1TxtX+I-?kS^h`oNxsTBF}
zXU^HA`lM-f(T++?FRQ?mN|0xN>M8ZUevdtE`JDP1#&5!O`Wy{t`oifnoe%VX%5+-u
zJ547$I{#kNi7ym#zVPW}FAp at G#4;jR99lU(?Q~*EY=$-c{(q$@2ru at sj4jz-P+9VX
z>)tJfNsBYnLob-=Is4 at dY#e$=Pu1XsDK^Ly#O|bBA>Y7;$=7KEo4T4xh^Iq$!M{z~
zzu3#_h`UJ3vYem&fR-JW;Tr?#b68+*!oqUL7ibn at PjHiw-S!`HKZ+%d!Wy6A*?Z49
z{WYrr!u*=htq+f8>-dJY9urZ<Tp9eO_o74DOpYJR-0n)AE7g<55O#LITOaxW9U3~O
zr;dCC0ekyA^*j1KXZIKBscS%C9n+soTsGEjB`U@!;A9^LRoMT|F4-qJi6WV>OD;<j
zCQ at z=@$FrKiF6M{eWHn!{Vpu6Ux9uP9ZOunlIJio)4;^E-nE0ISg!1~3wwf&5%*;f
zVNaXvR+wGv=hJ<jh=qM{zsGtBA$P$jHoX2(Gt*ERNgf|HefwNTBEBQZUyj0R at fpbd
z&sslD?kjCfPp at sXrq={sh at aw?`4h5nwSGm4Mwd<?E3_RC@=%`r83La?FHsz4*nHmU
zKW1wR|JjWO*bUOy!sYDv&#YhNJ3}~nM0D9SMbTX!Ki+Tiv9y=b9aH7n&5e<L7l)4E
zGZ=I&dy4ziAc}lTmG{3Ew72bpW&R%893*Dj?tc=rgkj=HOJm*0g)&awuD^t(YXr+g
z&fs4H!{9R*AT7He`V09_@*?JumVJyDG5 at sew^4+9WzTU%Y5mCF&)*`jYuO}<wExR1
z`#0zXTrztlav@^|FLK7yc#$)vDHME$GyDJ!fRVS3VcgS+%g)2U&+}0{I7&2J(hD><
z_vVeL_A`62JVlY)(y1Z0J`P|H%x5?sUiFamUtMm`yB|N#+2^5P3(i3IzWor4$LP2*
z;k>g0C at v9__mpb54>+{ggF4pmQ^R@%+{Rv>ay`?Bo`D_7ORKQ_6GM3$z}NmkYODYA
z{)qJfKd>CLMi6 at tmuAr^s)@h#VS~o)VqXnlclanqiDeMH!v1mpJ9H+;5it8_#EPHO
zlON&MU at 1ID-|O0ejfrWUX4Xn_uSzWvIHjlP_JL(qV8^q9>xNCtX+1RuEf`M1q-`Gx
z*e=m_$_kgV<PW_J%R5Uaj9HOPi{XNnbZjWK=OdO}(2R~lLp>EHHfa!>n72)l^p{Ib
z9KwA^S>UJowiKz34Vs7fe#+02_K^{18gC at ss4>?IEO3D7i(jT=4t8TJjXIY6NY}St
z3+JK9h<#kbsLKTc7(qmVI<i6^X^3Y3CiJ4_=mcn#?hm;*uNLC9g%0Xtg4*8A>8Tm~
zJ#mvex@<8)L$B(oJ(yv*A36CA#1n3w409#_qg3BEMmB}?zDBZkt at YzbddvJ#xKHgU
z%WSQr3kl{s=XxRHJDPlLlsEY{c%ke+X1$c$Ptmc)w5Bfz9EqRGZpW*}bgVQIcv0W>
zRa!sOD-A|wZDQ8ZNbw3S;ycJ~XIg8FI$VE6lIL-2bQoHogz^7ta)-S|V*H7!W6_A)
ztFgdIJ at p!Q0NV0m_Y3>*@t at AeznB0FKQ486|8U{Nk_Ws9SMWoEs^}Q=91ijOnAPFY
zE41ts#22iyXZK-g+z2K^&+4fk61ErSsNYe0b|03;#{pQ+2C+7l)7n at zmi-QIR*$3B
z>w4-=7?|vOeSSjHaC<*~xUrd#LDfvd4!kp29lZFukDCWR#LW76eu%jxC*8HfxY<j1
z+d<d|CMWl|$G87(-aFc5QSaWQIIHiSFFW at V>JvM65QtpAaLc%g1`~7jRq|`Ef7pMF
zdw;eTWRdjz3moPvs>8e_9i|u5s>8VFo0i*lm=?Su at 3Wq@YJ=%SIl^<<`RpxN@`LI5
z6G0zHF9=ivmCSlYY`#P=_78KT3ClSG+W^jVuT4t-yM%0vbdD`u%I4zb04A?}!6 at F}
zWQaokEQe{DZ#-ccxm-48Y0>WFNWS<_q7}}Z_F<JGr{nO6v-Tr===s$Nt$PTG_DPwy
zJ~>EUX`d>y|C at qB#y(ridlez$x1E^9VR_;yS*VrY*6+-3>&5Zfp)b}Uv6s$9NEw<j
zTmza7^(K$P)*F$)JBc|gy%jMZK^<rOi&z>38QdtkpL~_tdh9;pq9b86nZ7qMGZTp3
z_D#x#E;Dhg#>ZWr`-)()(V~*~-P)dF6oI)fxAWE~ic0p()ZQv8d3&bzx9*asXKKew
zN)FG|emtdQbf)&kXG)IG)E=Eq$hR*ld1$8gtqLk1uAsNCR{WI<m0w+4^5RVG at k>h{
z#)}zL{@^kq{n|`INZ4Fk*yVp$T=I)D?ObumPs_A#PNnj{Pc1oAru|vjjVKdkKPa!)
zR=4(dwnh6B at y?#L3m5hetVU7m)&{g5txs#$TD8sECT&Tl*4U{n?$la3wWdxj+^OB&
zsomA7t<xH{#afHjq=mJ+wY$h!C{5t$ZR_m;&w;i?XK#<UJ>J{x?HTCm@^<!ndwLVz
z^{ri<YwTv)?EZz`Xtb}l-&?hzqqD7pXl8F7 at Of|cCOSI%ufMs!b91c9=Xk5FkF_Ow
z;|mu?8>8`9YgboqTeP#MKNe32wz-TZrrh5|tQXl2;4zenvDrz!UCGkXQZu~(*Au4i
zG}|{?!U9M2)U~vIvCc#+EbbqezB7@)&-K)IX+g?N$6B&a-*zJ{8wiR+zrfo5lo#R<
z=bmM*BaLZ%&cJHz!AfY9nwi`16{0LcJB{z4y=fISBESM$gk at -RX~ddmM6l^8C4KRU
z0~gwjfe#W*k<6{0M)F(hh=`}e2^&wGI?7mj<7pNc)l<jOh*=9+8ry|oFH7$CGAn)p
zd{5)DZs2*-IzgSvgk0W8;NSHWeU&nOCnK~6aveBni0>3NEM3d2KIl}BMNjYvysW2Q
zA@=DwIBfKo=|x!9>sa8-!1EEzq2w5jhD~5te|7{5;8yf)=xpNYkiNGpv_l72l=uhh
zY)F67tQ~6)S>}SVli#xCJ#*Y1fUn{!4zn(ik?s<FQrX8`KV+GDZ}xEnYq^djM{Hq9
zXk!bz))rO)VV>}g3KFId`Dk>~8%A?IfF&XU9KR2MSN1*p$nP?^eG1W4=h?(%k at N<1
z8y|_L8>UZw#+i=KQF_FRVsLsrEP1d}*}S&zGSfH)9&EHKg4UU(>6M<*W!B0H90Tvh
zG4TJ5Hu_!(xqjT}`%&`EQ8LlCPIQ)8ZUgnO|Jks0B#0y7lC=AhC6 at c*VBo#@+YAnq
zT?8_5 at 02bxEj?(xw=~^SHoDYm(ZQTmMyz8IEP|%*C$6!G at 0?`M&@Ytz<3a1A<e}1K
zY2$OtEMsQi!}z<|In?J}u!l?EMmsC^ecSNk#Vl}`>9-zc*7I!N8ztF(+c+s07!HzI
z><T7FOZ#sQo*l->z78x**TRk1xP<A8oF}wnxd$(?y$KLz4d1Fi*)nCUeX-Tz8q3b+
z8yu|>+hf>vxhHJxhn;3fJ1s|7-jCpT+~|8D>^j`&doGCMGfC99{R#^=ZD>mgidZj%
zV7Rb<IArY)CWlKSY4^nu%l%o{D;OA#XKAN`IDI7hJv0lY%iwO79!i_F=gHsBXXikX
zP}*ai4O<nVbW6?ou+`!}pZ!<B+%sEh#@Y!Q%O0d|kiO_k2rA#2ZkckPdUHN|2dVT_
z-f;V{O+U=`y;cI_Wf!8IdWIwWQM}1g;eT}6RnNOu|A3uqr*HYnC4ay8wauwpM7IY;
zeqpw_p<$u7YQ^e-p2UFHKeu{rb<Oqj2Y9vip4xfUHS?<dKJfyr-FWD*iG at pBymSS9
z*BT}aVV9>_B6n?WGM8(vjh?Chhmg;Ie)`nXU5HO1R185wM+$1IEh_iiUvyh}Wu`b>
z?%nB*lviyp36|F+r`%S4yr^ifth^>vUKK3&E-J4C>7w#dHqDD>UDOt-3J>Q4>g1H|
zB|F`j;`_n-68;w7?Kg8xTv7)waH;1o(S*xANytC$D*BtUa!;tdG&qfpy+5LNNN#MD
zIR9JAJr5K?iTjHem3uR!=gyK_%WJkz36|F-r`}e6+FjgSQdV9UDz6EaSAiy{aA+F%
zc<F%+DBXbE*7>wMId%J#oh2Ff{lyOyF}$O18<e_;z#(%H$y}O~87gloHi{q;=5mN^
zm}a6m*_;x6%$ckYoF5vCJ}fRj>MHu;r2K4~9~b<#f~T$jQJ1Pe*_ at 7Fl<;Znw<aQW
zYwyuzzy+x|=T#G56>IdZZDJyyEK=ynw`3}wM3beQKF^1INTy<~OcrzbpQ7Z_F4hJG
zQZMqSkrOWKGCv`3WIWZ2{8Dtd2>MHT<OebpYkWs8t31C$&{Ix{>@HKWrpsb3f0Wbb
zadixeq32|&Si9^3_(Lx5QmxeS=Dffiu;$|SzLduX_1zSKSE?Y&(>Q*iojn|%;h@&E
zOF2%nXkz-D;KMWJl~>T$DHs*6;rMh1s%dk8lMgvl1o)Lj^jAN2lJ<xdpdToJZz+Ip
zD}Y-C at aGHQFBZU?3gB-Pz<&+=vqi<)AaY8>{8!WHy9nX+BG6Mzq*RIeWOi#QfPbw3
z{?`TYHwxg>5PT+++f)E=Er4$>fFCG;KUV-BEr5Rpad$F3XBEKzR{?xa0sQ#_cm=M)
zCzJa{;8!VehOaRg$JYzc|Ed69iqJ{^&?JP=`a<ar;FHPyMgjc$1#rzi4o3$Pon6&!
zZCdp1rGeG4p0<we*7!PqZFI4 at Y*EmRMwdqY{@Uh5{MO!hcWWZj-4||J($?gk8;!1S
zjdpeRC!&egwZC8M>bBmlH6O>q^!wK>>Rj6#S<%y(=nsE9X)TdP!VSL*?c8<E-8f7a
zU>slr-K{;#W36jiS9ish4s@@M#TVV!wsE81A6~PxIl7>s7n{0ReBQF2*pl!hy{LoT
zn)|vs6XE4cmNq9AM5Da1zgE3Gh_p2){QkC%)_61#Z$<wiZQ<rt{Di}8f~On{++0K>
z(TOAV$&}Qp&4ya~@zc+I`dL6f^XTVB`l+KI|6KmdQGYG$-JGcPclP#2p?D0VzB=9-
z--HW@&cu2xbVqeO)?OWruHCpX+82xW_x9krBe5yEzD9$S^!N1P+9lB*ZR=P^KGzlN
z0l%KsZv3ukZCX!*`N>Taz&%JCE<zHq at bd0%tvlA;*0%}b`V*~f>qu0zy|uGTi>~O|
z(Al#lx;)lD&>bUDc^?ntoLY`49D6fpT5eYrx=|gg)dTGxGh7$6ty9~g at 3GeIk8cja
zb<)fYwP7+&ON*+_C+664dvhXSs{zK7N$1n)w-U{x!45aURr3ZxcWi_Bqk_qN+)K4~
z#Txuv^`*_dG*0$CRb)*#yu7)$B}$|4$p_qD!*9O&x?0;};qGn>6?dSnruCFlFDFy%
zf{8Uz&ydtJZ}pIEb+DTsjrQ7OCVMc+L`9bp{<*e&1$Cq)+ENn at H_wkYEoq(`g%f_7
z{*vKZ`};fB_8 at jN&m*frQXm>lbi{i%M7w&|;zlzTkN3u5iccqkn{-WQKkg!9V!ZMp
z>JvFy-j4I_d&<bC7-0%}%{NBFVgCX?)aoT?<Tm~$ynZPxu(oG_$5DjS9$J*TqMZoB
zt+*bIG=Z#n0eFP^mT^z(*+A}r=v9-mT&!npqGN*T at -gA}4%jpjOFp at G&ud4N3Uil+
zuJfd>y#tA8Z+kS}+OswmZSPKq0Hp-6I)v6(90AwAAc6_niO9P-hQNlY*^e<rl4p2q
zpR~*I;C_dv=jkO9;aA|1xcswF!o3P^@N<bxukx9z;3}Wh3Vx-+XOn_orQlyz at T(R4
z9~E4s?-l!J($i4rZ^C|-k`r$fI5qR(ktdW61^+B?X@~n2{11WOgoo0<D0l_xlKvG1
zr&FNBU8D#SW!K at 6c&WfipE-D>KDvTmui(`RPW1BbWxc>DtHvYwZ*|bi`<UGh+&~*j
zj|iMHmCrvo=tWiA>%d7TO0<8cMExSWNj+&lPKjRMfJf>{`*BKyt8(uXIPoDKlKx8U
zmnji_4IYU<px}N5uf+bB64BS<k at Qyx+^Of90`z?f{ao;o<F!?xpQrFoDfDC;l22)u
z1DAIDa|dqN<l0^bF75e>f~$UVM&Klm{>V=D_Zo4qCS0}8Rs~n>^YsGwzX_b|Mt?&n
z`FDwn5aO?n%P$pNmAh74O%S~*w at 2X4ars^W`hQXA)p7ZeLa&YsJ{9sr{MB*62g3=t
z9G5p8xU~Oo9JpaO*Q&%73h`IRB`9#}uR1PwDfD!%+ama^a^N!lWE4JXynR`rr`sJl
zF2@!6`3nAyLQl6-lKwN(Z3Rfr1qwb(!PW7t5jgdi^p|`dFF=3YMIb^V{;EGLQShtr
zPV)Ic!LL&A%5qeYh>uEdDY&Zt6AG@<&lgvD&i+23;09z!eSRWv>Mz~7N&H2Hp6<jX
z{x%r}iTK}wN8&>jgkFe`DY)9-KcK})(5w0{QSd*)d&z&Tf~)iE9dSiT`l$TNgkuw~
z@~>8KmH!e2SNX4?pnyd7p<6wv&q at WSf8QtZHi47edIj%La6`d|6h12doeHk<|C+)_
z<^L5 at 5Q(y4JW`+I%J>pavMIgoz{$5LjXLme+OXyp<1YD+2;AeqDMnD5<-ph4uvX>3
zpA`5!2fjhz^$vWcz`v!~hx*kl_EnEM at CO9`qyzu5vJWGcG+tNYk#?h4M2YZg at JL+R
zk8mnWT=tvrfPzcA624HugD6vS(#!r4uF8#Z>I>=n3gFUy#K*uR_1q at tX&mR^k at 5c#
z1*g7<aHl;XaN=_#9?55)f~);~wE+H>z)7yUuKik}pNF#K|B*sZdXjufMPl5f{`8L0
zOb1SVrZmri%l at k4uj+3JdXlHcfxl32m41(ctMtz)xH^tU6`XXG{r!%D)7mI;`p!Vf
zsZSdLNc8&icqDy?z$v4 at PL{aXesVrR1xJx55-*k%f#h-8f?Xz1v0cJ9ERBCvn<;QH
zO>;QuL`i<fk at SCH!<tv*5|{I>%7I at g>NO6WVmc-Hy+-nxZNpl<$R&QQs51xthoau(
zz~y|t(}7DpRylC;X-XY-ma_xxQ7HA<Sq>*3qO{S at ayX4Wr9u8{{~L0$KdrTtcGy{t
zJ}BzD9C(AMKjgr}qQ2XKFBbJj9C$?3_c-t+qW+WvZxnTzk^RXw9tnt?a5+{4iDjJo
zv-A<dtLO)b{9H^0UZ=elCBmd{Q(fAba9S5++9V2+UdDmP6rA1-(ht&6JIl$H-?3g%
zaFRPq)a8AGlq>bVo;r#o<=$&o at kir!fp8gX33*V#>7D#u@>dE at axEf8dR@V(zw*29
zI|@$pj}kEw{Yzp>luelL)%}~g6RoSYYFrZ9d50{;V_mJ)iP*-3R=uV*(W+Ii?(f%d
zOD at prfu63;b+N8ZTJ_pC+~RF)i}lfG6nta=RWCImrv7SN(yLWm&5J6(Qv7dq*Opf}
z*USHYN~&XkF9q?$K%ao<c01Y{kGEn>_&D)FKnWJF=9k(z+qd;6@&kd2A74?NO`Hhl
zQ2lXVO7NwpyF1nckHH^|#;Wm`KiBhb8KRCm&+5K-FFvm%q=vDMXnVXBUp1=N#(U9`
z|D^OMaCC75nZU7L)a2arqW(vC#PXTT3$-^VX-{#>+1?9`rs5PlYFZ^K|0MRM@|`nI
z(mF~!>m`B6ci&(an#8%?iz?0kQX9^#yR`Qp`D!dAlF!qjdXgl<M()iVl!)i2ZBOgp
zWc`=&Uvvm`RQZ{Dvi_eI3+N6J&%BUB>!h>)VIg0Tp=PI3Vng#i35eV&{|?}U(cVr?
z->I}~%Ty3$*<R-D0&}(>743T+?WO**{Xl{CYiHUG)&I8)A+nv!XQ4o4`|oP(HuSqo
zw3pxW<r}B}U53Wo{tg3f6dRRQqM;Z0MR=tCqI>-BK)8HCm&@qV9Z6iL*%kac<v$_i
z=P2yL%R;`C;{{AdSEu~v(Vo^hr~i6{d`S-yo at 8C-hYQF*J&AmZGqRo3>*r{X|1Oa4
z74nC<)clV(U*x4%3dk>|%{@}R;{UXVa>{>C$p0*-&i@=2^1XS8mt=dHj}>UoKeC{O
zbG&3-<`vLyvi^I-hF{8&YB=lD(SEY|&%}mU+Sv;RG^J&GiPJyh=JJJ|q at 2p%QU2vp
zzN7uBN#xU%a>`#O<kv{SBKHdU)ef9=r6lt^MSB~~|1K5n^N3xN?IhlT_7oQ#>T6A+
zy;l;7T<S03K_TDSzE8BL|09i>obBmeYO?X$c#GX?P$=w0m0VJ`m*YpT9U_3>9CRhm
xv>LInQkC}N&h`{voO7RAK6NeqYT6rQ93=^LatO`o$=Z+B+a!PLP|n%@{{uH{{gVIy
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..74ef72f36f862e3af57a2fcf221d6fcc223fe1e4
GIT binary patch
literal 57504
zcmd_T3wTu3)jobE$v{BO1WOgGl_`#uc!2~E2wF`@0w+2m<)XA&hmZ@&XGqdyB0;G|
zk|@(5N?WY9;#b<*mVUKgu|ID`DnSIawU*i&t+k at HH6vcAS85f0@4GKEYff at d+kU_A
z|2+TwJd<<IyVqWO?X}ikd!K#wIr)55bXHCv;Mf#!&T}$X7ImEPZ!_m*>a@%`-6>ME
zBXP|#1^9)``G;^EZO)Iw at py9{#_?nL*|gA2ygT3Relg$eeKS7RO}ynMUK?Ph+x>99
zoA{HPc;zxT at z7^d3QG=mlU)OD;FaX^@S at 8;)BSir;SCKFLSuUrORyT_CWn`;iARoh
zlVt;L_sZdgPJFc62Ve`OwA{z+2t5c)UG9IymM>pWo%l6`dc#c|n(y{~R8^aJdSJof
z!-w7E!hAQ`>A1Ki9!>m}r=`exkUHSSO46D9ZRzSV@@04)BH6o#MA@>T%Vr9P#yYQs
zPJX-mlJbS+3l>ssi|gEE-l^kN<&}{|CH<j$gA}c&KYo^*RHtroL1a;#d&X!*7V2FC
zsi54&mwl%E^77A=U$G-Jwh~C+Su6*2tETn#$NRUDt!`*vbENRWGL^q0njx9#_Ei+R
zyDRdMgQB^+Dhi!#XvASv3cTEeQsDO-C(jAp4B`5_`vZxJu*y$e2Fhq(M<F;y6O&Du
z%1C~7;$gS at U}*Ve_#5c_Q0U$Tk-|0e3*AITe)+DvVb1>BT*!Ao$z9(4PJYL{@;4vO
z3-#U%DXMy(iys at hw=z;#zGfKUoKWuu3YP at mXmaxYEupciaE<oHBl#sySW`jx>clQZ
zg=z}-Z{lfTb>CI_ZueggRwss4CiYb)7X)#-VA#RxqBo<7fvUjk(V_$8-OnAQ5bYay
zR`NvRm)#G+OU{M!o?B2^`fU5l`&W}!RpPnw#ITBF<*DyfBq~4tPO8c32{{#^`zlX8
z)WD2Gskz9YnV|;d-ST{$vj0M53*`cdf4~bGy<QOQtBXLb&nulmSD!qhp$3_Uji<|K
z&kFS(r(LE|y9^wr%!&40$qJ&0GctB_6FZgN&QNyyaJJnl;f(u}>u9-`_n+2a``b`<
z*qOFN_q+KWpD25CCycuiM(cekKGxW_$^o1cFHF2t4&9x3sG&SjdDfwZb*gAIdB*+(
zs-RzMJ9Zj7Rym0Q*fEcGgfWZWh$i+`240F54RrtIAZlyhhNH)br7yI<vj4l}gUS+B
zPI<EO%y(GbJNv(=8ZW}ny7Eh-eV?F%nNF(0+jTFF&tV6F%SHR{j1)qhQTQJnUs$du
zGDcAyaCeh|2~<hdgGwGPd9xw(N`FIQZR7y0kvxVZp;0}NgSg}|pM{eZ1JT4*RfD^`
zCo+IMCO2_;1pOzPhu&Hl8Ka=&H3QMWTiSYkDpJsE!fpZ$g=O9D{_$?2N3l{wh<3K?
zZ^>6YU$!2`5L4(TuO>qnIMnl3<d?i at c=trsDDvHIA}^w_#Lk}nQ13U0nwn7`>y?$7
zEaEy|pi}AMHm7f8WRc8f+g~x78KT8jF<PvoR(IOVJFDF59;TTR12!_2$9BM<XtadZ
z6Ur1rqrLrQq4hgc4A<*05OqJEr&y*&*&fYKiq4Sky>4Q+INy;zPoKC64K~1kN}kZJ
zQ=WJSA^y4- at 6UCdEHBvvprqgJtBf?deOn{zs76?IF^<sZoso?^BA6vsMqt4^(*%u0
zDg$aZ8dwl%YzVa)(>F&J)7<11O}y+T)+;`tQH~`EjVdb?=O?gdHM+_5nm>x(ilV#n
za^QqosDT6T96p at bfuZO>EaaBH5+CJ4jT<RSUt2&)LdSm94V{iQyc+tHlIPXXDEKKU
z+1j*`LcM!2!FV-P$js{=rfP(-7?%)=b3#4;na>`!HL?-bq6G`xzMjZtT$DT!O<;V6
zOR=#k8>(wO8{!OBN}A-sWi?%~hW7f;QY~cTuNLra!^jJs)FQN_>OftaP|RwF*uWG2
zIDELAV~!P*LY3~;`e7w${q#H;|9G_Tj!2jw$P00dmOig36=*eiWIb2)ycz1f2{Vpp
z-`$aoaCNI9_;(b+sm!Q=+Cc5f5G7COu(Lk03d$B?XALeHc5Wq1U8?XiYrsu_Hw8ub
z=|Z03l~|i+G3r5K$!kFyk4!IlGa7(NqLE@<y{^~o+n_X^wn5@)8yr+k2xulMB>rT(
zrw&VfT6{AHOPfGNr^6~bEg7B_opjVibgGQFN`y6)kr)D0&jp~P<E(<byYvA~t&Gg&
zpEl*js-cyUF5MzbH<KIk)=?9^PlkH_gh`>9gfZN=vDlc at H<2x-bPvw2h$b+dFmt9P
z;^@4AH!BOn!BFq-^1z^bCD at 00=Ac-~6A#WnO}4$6&aFEig at BwJdBhNWIMj2kGRozV
zF6b`cmhK3xzT{|>Pc}!|(hgO$gHc5JRN at XjazMF_)d39V{|JR{c$GZ5{}BlFl<^D=
z>pfu at h1lmNHblli1H1CZpq)B)P~YU`CbmaQpAGe#2^V-R)QVtBuyi2Q^MaCTtrC;{
zi4jLR5~b$g at p}@$qcoef+U?;@<iNBG*+=XJ(c~RED4`p6xyj45<}m{}I4pGiOW?4r
z7Jrnf%M&|859TIz!!nCBP`WeJJ8J}J+AK}z!D|AbQ`wbhLGNkI?iATMHoKgq^O+qM
z*|}NSseEK#B(n3evVY2KS7ZlmwyOL4%)VM=53|{-?zPBvySJ)X?1Xy11H$Uk7jgSz
zVlD^vOt3H!khe+FZ$AzutFD=j@>jf at xtnp5xvuV8Thz@?vaHxGJrL?S4>b1n=kT7;
zgL_hE0<rVE>coqwI6{uSE)U&X<*eyZMorzX2v<Q!8-3NJ==sXzcs&KexH!PvXlY%f
zG1RjUnoZ_*9~>9zX~k)8e`juG;tV at xAW%JLP2Uij_;Bd at 00v|>KP;NBMwa}v64Y3d
zuZNq|x8Y&-{(z%K$rGyfj5F at mgC3kyh26v-5acxpybOb(cG}dRG4NSF9uJS2K4!Zg
zx>0JZ&=>oU>MDufy1h??dhS8%-R`&1`+kF9kl54xc78|2n-5_^JOiDO-K7r{p?lXW
ziPntTloM~ojCeubp at zhQz#%ue)^vrt72EwwtXz;)4;?G=FG5%De*U1F2qgBX$+3%~
zxO~Jd!W6kbaG-nN!R~|k?Z at G0=El{@Dfw<<N~rXqcFef4>u?jVvMd^|X9R^RIIuUT
z&W2+2yd2f{qn~dIgnFMwh}eWd`)i<ZlPhgpXWKr9F$fllN5-g8C^YdvX!X;E3;~#-
z*p8U1sHn7Sn?Z!!(j$nO(5m6X<in7g!Ooa)rHTLP`Q=tMfhGe%RT-JiDMc|wElV?J
zA4=S<M>)eBAuB!Dfd%VT6{Svni)#sVbvvk=0L<Bm3BgC6m8j78U~Ol6dR9VPet=nt
zVgR9Z_||haVgu*Cre-CapMMczJ^;)~-Sy_-!&^>M3f6<GzQr+WQ}YBpw$*WRk$67!
zEbJ_2#y1}X1K!A(2;vF`u&=sdLLXd-;jtVnIJ at 1dWczU;3ccojpVI-#s;f-=;lWj8
zmcXE`yPU%5F-Jqo7z1ym+*>Xsk(m#O8WpjfboRd*x<a);2Zm5d^;TYjjpJ^AHtddg
z$VIP6{HFS?=Wx&O7VU9=IpFr4nd5GM>0}qc_I+dBBHVbq<QDC`pS8N7%7LnqH%&i#
zun>B~x{cfP^P9F(<VV0rb*-TpxkcOE#LwOCmjj)TxlND0-!j#K$5AZPuu!48ZRD(4
zH1KjPf*>;P4c$<W$QUYd(X7P7=~7V1qpAejmC*_dp_Sq2h<&(CUWKuRtt8zeAi{4{
zG%}|1Q+BlpBPsev+9!%rbKwhHPNrf8TO#!!L!S*^nEIIDhv>j*LFzutk?mOT8mk*q
z$8Th~_1qoYgHU39>q{>p)?mG)RY$(c(7n+}tfXHp$^qRP8IN{E5ktm at itbj`Dcb2k
zLq(XAqkcu^D&X$OW)0jOS!5{sEk&cD*kdWW48=Z6vBppw06^vruFd*H;-SQLcl!&&
zx}Q0}x^MIzH#x}-eQQ_8N2+=r?L4+R at pkpEo{c7c>Av+#_hWx^6C<li9#wO>PhdsO
z>D&&gQ18)DB5%RRTUDvvVe}MQuX{tNCkV3CfEt?09B7&$BQdHRt0C_o-oN7w<Ebfc
zldYX2bm8Vct54UNY>x>Z16MWMRrPcBnm;_$vmCKx+Y+>1p@^J|?6gJAY8ElO)n;?T
z1vkpqv<o8npe@}K>YYTYrGhFai;5&6kf3<3Dymq&i`cbonJAQ=ZmH})F}q1*XHU1b
zF}qD<r>9%0^hRcPi0t9ES!y<R9kMgCv7UBZYOSc?pYWOI#Fwc#PP}69{N_;`EHm?*
z@#v}#Z4Wkt77R3m7Vd5cU9!{6W^!5k;68E##I=0{r)qG{vSH^anXLpiQhWMa=L|{6
z&TIILR!hyDr()sWP5j>Udj at qC=rbILIvXT$=h1`8>GhS&I*MIB at vgh1*gk^k6aQ5i
zxmqL7{c4f8q?hMrQ73b^$Mqe(x>KEaT|fHJYlB$}JiH-=wvxl#KHTN*s*Hp&Zg2r_
z_pE%jNZkNc@*4M(X<#LQ(x>AEoEC-CGofg58LX`bNwwyv2F<*PS*0|FJ&RlhuQ7g@
zaA?pPV-<!weaD!+#)yXmm^tQU<Z_c2A!;CO{X*B%cMKU~&E4($<apllgI?b*8ad95
z;E|6ySNHO2Axb}M8MMUs8aNHL#AxFNIwB`Acd|k|+k2X`l=oU>M8GoA>Ori}v&vY7
zn<dK0*6LN*?1fdU8`C7rv0%>h3RdSFv&>kTwa%Dc4_B+Kp4G;3t~O5Nh&|Skv#LC~
z-YB0I_^mf)_me^1sn*Yof2yTNN{&^;$}I2XI&(>X at 8Qsmo7HHmv;-$zj7Xv;9VIU{
zxS<yGc3^bTMKn66y6b2QSir?H;$Hmr at nSB$ljC9NI8{1y+^MA3mI4d4*fJ(mba|vW
zR8$uUn|W0fV+fY1O+3{G=9I4FO->2PuLO(bJ&}Fn3=bYK$AdU>m7Jct7w1gT03_L9
z#KSF~wtHf at vLNJ)M#5aS=kU%dj5~3y*;K{#G(EKIJE2e!Mom!jxY->0ag=_=bx0KB
zEfU%ANRe<T#4n0fw0$_L4u&HWrnRg at bJ=nt&P-&r%kYWxg8Y^f2IodG6!a^2C0Bp8
zMpp3x_UXbAGQjVn_|s-rx-Q~$`gWx*-HIrpId1jt2X(ZxKN_m&$8t?HRQXWJ6D4m}
z7d>LtwSf0VTebMM=NS_h>E)hi>05g7lI=-{s%*VdA*Kt#TDGGZE7ABa78Td2^2T1e
z4pRoVjJ!e1A4p=F!o|GXNQ&9WqNCzhGN&zCdRPmwN-;5O(dveW`EwaZUEW@*h`Kl<
zCiKWYknYl<-v1_t>mF9!WpCDkwBv4Rt8Z^;ZC_SHez;vN4E25v{r0-9;WaI_^`YK2
z-LKOk&Efz^k-B#V(sh<LM=G(fgbCaOsM%3ZPR;xgKC};zYIf>c+&r24>&i$aIB-4c
zmzeVH-);I$$&;ybWY`!gBzT9>p=i?UIhU$lXP#N;sDXtEx>Hwn*Z|5YfOcYc_iVbk
za{YdD+{YvG*#|<ShVv0dpK&7$H;*va^pI0{&QPw6ZH5)hKUkE#X&;UyPcjT`NB?~U
zzdiUFKUuH)>Tzl?3LR$#x%6`m&SO|URD>mIKJ?gKHnz60ej at FnL@QdL at B3M~TG5Bh
zd)QAPQ5ze;sW~sO%G48SGZ$fFuOx_~Nd&Tzm)M*~ObkM=BM&8gKTgo6`ziux3ZGt^
zW-9qJK~8bj!Kxu~XJjt2vFgg^D*;eZJ|o{E;5;@mKet>(K3B0K{gC0Vi~+3-g0nI+
zQ&7(cw(8~}7%oO`sA#RKieau$UH3%7=2(oQ6dUb9Yh9qUJB7^0ITfUid|ZVl5CYjE
z9GRdL)&p`(bQCvgE}s_Sm7CPQZ{yz<w#pk5 at pM2x23MOuJh_aCl$3I)B at s9r#|{dS
zZ!F`&`8F#d?1M}lXdoPmI4Vx|j-fcZ`6f<|2jBM-C)sGu8QO3RAwW8m$37=x^V3lv
z9U$LIZ%onZ(~8!vpnNMGFRd?>VakR_tZVZWcMNu{O>5Msho-J7c at pEN=3`xlfhoVC
z5=FFwX^t6(!gd at xU}~<^UB<uCgXravGUZKt)MOiL-DX4DjlxO^+9;+~CX$EKvpC)6
zEN}969mC{u?KQM1y++yCJR#bGDy`Sp?I0Py&=2Q0d)aLKVpG~L&W&)nZX>SY3(VHO
zP=ozWAJiA>^q86L3wOLPU*Oc_0A(|MN;(6L7aqbH(w>kRpVJQE_F;<wMwuvPxEKUC
z=%;y!UvR#zpOI)+!JuzULTA{U%SM~|Jz_i<7{7q;tdHzLHpvD^20 at j;Tr-6k9|6Wh
zp){_d6SFv5Q(4&c6%FXENx}~lwOQ6xHKH4H<<2Y&u0qjj^WcV>SY%i0&He?12E#Im
zF at Y)s(Oft8>H+l}ss{Vl>>UQ?GqiL1sq1D^XI7gLT{G2kQlgB&X~%1H28dOhW{=SN
z952wk at i;P3BO7_dDrcB^xK>9L?8i0Si{*h=Mj91sgqlLAEwR1(nIN`=+=|Rl?~9oA
zVba$72gyn`$?#G8={zjB0^g&e*Lo$-rXZdXlYx5Zun420-5O?@*axhb{*u>>y<BF{
zh1s{H;A#t)t&nP9Ys|wUQ~W{}x2!p(w&a=JbG$Fn;#`5jgAeq=wxeoS<g8zNGJT8#
z9yLgh&iG)D?*RF}2gc?jgs?l`D}?c;SNk<Y<CynB0vMmzs$owCu(bE;U5YA>shbjg
z2W?}RjZt(s8 at saN)ia~0r$J*E?{begeyL|5Th*YQ3F(NfRQr34Uq%Q2daTkerSHfw
zhoJL(^<_Gw?yy(|7`o3^^}H17=~a<hxRWta$zgpPNe`ljSueuC^>3SH;o*_*c!)^|
zYUZ at cXFU9uoQWN1kTcm1CFf8Ud*7b)Lu}6ZXFRESsL at aNsQ2=usNJ_Zcqa5-gI_dp
zXJ#725aghLqLb`nsAU99k9}%y$av+fdK(^DLxrk8H}F;+XL#hp0S;$o9OUIeUc%W`
zr@(l}I#~@n<6az9J$71V=26IEd{9}rT?4w0=-9!rzL5RPuw-{P;~%-2?u30`M;ht0
zENp-s>2AQdZAUujp-a`E8ogMtRGYX?){W-<CKRM_MEx+T#dGTQ*hHe5qXLj=uaHc{
zKFXgKRP(pFeOuKX0$V4j6kk?8UQ95oLcKE?sXQtvqm?6#;62!_bKbGE9D at N=Fc(dv
zja=&s;I#=BL6 at L(Wq=VwNoCriThAVy2_1R`N<|FMoO+1cwD&y<VV{<7;Ly?ce=cyW
zS9e9}88mx=Hl^7pPhbmQ1F*}u?>ls?KZ at G_;DgZ0p+bj_pYIhqXh?Q6<BVxH3%?IH
zLs1S6rt#V#(t}WsS|b}6HINyH{Dz at 24ntpI*o4z9rqdzl(COUdoyyBNq>W)_8$n!P
z-P};(mW=BWdY4vwxH`i=kx%oCyR@`QRf!FeMif{3w7_b!VYQggrD3u$*jILD+LIGI
z^xm<bG73NnmQ-O2*HO&xl$53W-O#N4yl2-Uyo-%uf8!Lm`(22zn`gZ*g?hh&MISyj
z2OTv{4eiPsuh{b1PEE*Gb?Cm%96L3U(-p1e`>}4tbiR9rp2={VdFcAn5WL8E3o3;g
z)dmH>0@%H^n(IE=R4-uToiV<B%4s|Yfo&6;UAiySGZOP`t|UDaI!>!DTKY<;=MFXz
zWHK5v;Hze0alGftB*27Wqf)lsHY(e+YdFduDJB`ouuWtOmrSgVDwET9<C4sGW;O!u
zj-GS3UY+V$h#h{(Do5>-YQ#C7BIZ>lK4;xrw=keroY54$2CABozMnBxce{6B)8JE~
z)n7vAj6ztNo=ZdP*ruYV+&(NK6T%3{qjiVs0QPFqBPJ459<h at G(<86~0r~?ZU4vZh
z4c7J78#dTF_-d%<m&nHxc&xgRO)?7CFMTA`Gf!QuH63ET5{jCqpQ`(|a-N`*XpyiY
z&uheTvSCt>&y3`yZ-sjPj`dN79z|z$VD at l1*snGW+tsL_)FiCG;(9o)Nt>DiXH@%m
z)W|3{iz#2`(wbf|q%hh~gvXhl0}@iFes7-3D}I8NZbTL<C1(Px4jC88up)J8qh18=
zQH^EYtRU^1=<kbdzpGBXlWIhx7zc2Zz8IygCaq1axnZ-^ePE1DY4LITX6&=7bN|%{
zp?eHnTDKlU1*+YZcYNB-Q|~H8uh;fe``h9dXja3(O6_e6b)SP%wZE+saSShujN|qY
zHko_dLcP!D(-+q2D1 at +~d?UT#j6Sd{Pj5I=y2yjbp|O=LqhlZ=8r!KN<W1<KFaYnK
zDL8ScYk=8F#!b7otc{5E3}#_h>7so1oJED9p3BfmGJQnRT!Y6F=kVctKQH0rneg~5
z2~}r!glFsw2Y8aWGJjXzMDWlvPrQB<#wmqJRA9!#%DT())gzTMGDYSl3T%a&t132+
zFW8K*q1q^^inFN9ohXP`kqC`Gz<e`d(@QCOJf!<TOUB4%V?WA3ADRF$V7dx*S%f+d
zzP3mVrm7CLQO+#%7#6IaEYL^of={|W$24XQtF%on%xVl;p|lNEwWUe+ND|nd%jl`k
zV??&k4->DXn&FQKp{XCLzSqN6DfLo;tEOLw9dNH4KD_-7wOlhY)q{(Mb!Pi&8%R=L
z$F8<?|HmMzg+^- at v-0fz&jQ%N<fiwFn!y{^Bz0;Lc&YcQ%!(o(NM=U&Yq at O3J=nd+
zz-5dKn^Df}!rnyg&^A1YTd_Cj(F^XU`Xan at BMJICIJz<tDP6OFGHJ21Mpre8snPX!
z=#Gl>dkn9tMCsnp>TX*gtF<}^*#Ymh(6xG`jB-Qx`Dh%+Rtkoj^-xcMtxcLC6Y8Y!
zj7zGO99xyQU~ILKMg><f^EYEFvxgqxjC<L!mHn5M$bHB5O-S1D9NmvYJvYFw%?9KW
zoSF?fhMOMD(<3VyvQcecGZQWwKT=-+ntt9dpXYyNfA+4)wpZz2cuPmEXX;g*)axkC
zc#UCrF50K+PHjoq=YHAvSDsJfm?357&A>7V-<R{^%?E&I-lrXuf5YoCALC(OWKBh3
zYKoC738iMeSDDoj at VY2RE<0%0k?Wk)8+c4h|4&EzLVCa&<=3W*oCp&1KdsI+!<n!B
zUOPf+&EJuq8OXV>`GDNlJPcc!huYU1TK#>L9C~kaY8|rF`Xk##Wr=RCI#qTzXP?Y+
z{7g3|b?Racfp{D2Z^kpi09B~D<pmLHPJkmYD6@!l{PYyuECJv~JH-dWc&@X*5A)M&
z`!V^6M>r>r*YWxxy9O|**ENKGt2>h_wkuE1MA=(X_d-7CbsZ{JTLXusw+1c-#2Y`F
zB=rSGD_DXZkCxD`pYGQCZ?~hv|6fKJs$d^tDc!H1M>|v<;Dzn_%*{u96k7-Wq6%@4
z$Nm9iiQNO-#y>2xjX%o(Be2hL2yVBKTOvgd)Hg!eo9+gc=xmaE>jr0EaOCVWj+{Ms
z<KEyJu$TH15ZX>KJo at Q;l()Y9bUjU`S9tI1AENc0aJnO~3iV#i>H3jLE`4tjJ?Yom
zft8+hoeystLZnddFm;PysQd6RCDRh~tY_d0LzjGvlWp|3%`8HDs(S1bqJafNm->n<
zl~!F=y<8(tvpEKAyt^sIW=Xlp(eGStcpUmQ*P-^0cq`4O`FHV=GXGD=Df$0 at _uPCa
zVA}$^Qum96VqZ=rK7!D%<`8&rxTcU{e>c`|K$tkk#Vh^;Fa8ei at K)p{b`LDs0f$Vy
zg3ZMh`2)c}a$@mH|F$vYxw~RI4j8H`^dh;Mui)mTuS~tSgIk*E4`NOSLc8my0y}H;
z)_~sr&!2$}dE?!4DvINIAT8!SPkuT?cCK){A1-8ARNozNlNW-ZW4wE-oA{|)^s2l4
z?OYdcA)W7*?&;X+_T}wzOSgC4FTV4j`puSctX?b*si%vn<Iz3Mz8t*R(RU3N*LLX{
z)pF#hGxf*pw at 6MmS7)=iYAtx at z>Ei|7rZh3^uR=%+E?KQ+7+&MuV$WQ((mO~O?z(l
zQ!zjD4G+94t?s0Dr00vumYL6zP!7yOM_pzJwVEpNj$j#bw6vI^*oWX;y*`U&RE{j<
zCl~R=fgR3+<57xjWa;$W7?#R>C!!Pk2lZAPMPx7dl1y?wepq*7(aX7YZwGc0j8^l+
z1(7kB%Dl&>*%`KG#aaDPQ7XLvhJiJEo9!`!OLU*(;LUI)!w%lkXkWD~(tAn4DtkM8
zsbytJdY<e&H^YEqT6O`{t at jmVq($B8T}8Bff47T!W_C4|z5kvJm1+~-XiR+?-p3lk
zDvuok at 6_;ltC<w4FWZ>c%`n6R)iYtfk(RlsPQP(BSj2qWCS5_|>1g85rY`Pp)&qvx
z;>-=*oX^8foc{j5Fce#Eo-5!?Z~Rg-2P_h#<3gx6sZ41+GF`;F-G2K-irU_%NcBpO
zZl>0fd0KTVvW+6_2Ga^?;iG`zuy~_e9rsf%d`Up{Nb20NHcavBKt_FfvzWO^x5Ey_
zYVZY{#x(UK>AC at T8Q41ws<-A6ene}etFcPjsvbSK39QX-Pzyntg8hDfns}}`6QZV;
zrdwdz2d(k`lI`TZy)I(4hOab9*gUwjJ>1^x^OZ=m;|y&J3(d7<IGX7l6_a{a&0e-f
zR%LXem907R-6zz0fYU*-j1<KN7`?5V%S{>caFxKc)M`qaA at vW`rt;Mv)%Wz>u+Us;
zJBYeJhgYrC8hXYvQ`ak5En~FLcx+Y`w+>Oo|Ga+F#;3N at s!qL$yTvT0K at doj8v9CX
z>>~aDmbB at 4zjBOoAj%+9rB%))3QtQ?Bh;<2-QFd=h)PilN5+MCPRCkn9#Qc*bH<6%
z50LlYnytIE!pi85;CVlsHgz at c@Bim at Cd^7jWr^?>mlpn?i=gh&l&$Vy{WdnGnzF98
zQav_Lb*4dvo2v>~+oq0FmzbC(JEpruhuq%7 at t{_HdhcG=Y%zNd@?aT^Vn<^eL+uFR
z96lU4sxA0 at uJc4r@U>iC=8dPP9KP+W03MPCZ_jgn69|4U&)F9!>CJO~n-lzEUSMx-
z at JD&ho4G+CusqY at +eQUO@G<}D0RCw3 at NMe?f!;uU at Q0^3KMMqZGR}EBC-}fAPAWHe
zc%1W2Fqk~WxpP?XmQ$SjhE4z0DbCx&cLnbn=iC$u?moroIhN;d92<OoTwvYk;A`WY
z!=r;wj&tt(F!4Pf4x+$I9}a$dob&W?H{}Al<D+Nb?@QsxqvM==J{Ejpob%_8k<o4A
zcy7eha-KWYan|JsInma)0>PK^oLh2&f6sHil~eMYJm<FD;4^uF at 8ku0gLt441R~oy
z2gO&3wjK^d*5(8^<U8NW4ff<a_vN0lF5h_|FL-dcvnLpQakz8;aGq1a6HxT<ZKnoK
z{AMoBUL78Mc|;&J0;e~O46YsNe19ZPGxF}s3H&bS+Te}~=V!UW^_9*GdBMFE&JDq7
z{j;3^Gc0)bEaw~f!A-NAjU$2^W;s6 at al*P;&bE=k`zxK7jt<^g>3r*$;DHKf^D$GO
zt8iW|7zo@^<vcekcx#pO%(20>RnDPfPg+&wy!N5s>y^%zJ{)|f!ny0X;6SDG-^U04
zSn2%i_!Hg%(=oyIvz=!@65Lni^qm;|b(QnA6Q at 2><s3XQxV6f;_oU$Fs=x~;2YY5Y
z&yNirta7dkpZp?n!@&cyoUe at wJ~qqwOJwnLvz)c3&)o}}iNQUUfwhx at 4_7)nCNEht
z+u1cW2;qJ^H3**jrxIT^jSaYU8k=|bG|KkaG|KSeG{ti|X<jQ0g4?6#2G>*uHl5G&
z-RDP8OK(|ZW2N&*S at 0JX&g*4CwD-&9JioVmJnFh(Cd+Q0xtfZwetJwG at 3M^2VWShy
zKgn_0f*W$3FVjzcloMQ+>pYWlDhvk$76Za@#6`g_XHl>xpujNzb>jU3zoE!)S0!8X
z-Q-w2L5@#M- at mv?+*e{180%wGaNCEM at pcqv*2hYp>iko6@}vl!&c#oyR!gp!x)lA1
zw|{DYUZ?0mcHjQrspop?#&BX=du#2)+P2Q7mWEcRp{A+1zAhYZ4Y#({w}i7YM><Pt
zI+|)@9r5<2mZdXhbaXDksnZc}t#c-Jtmv3nSASJgZG8vN<MqqPlRt-l_yMSi9kn&h
zC>dMYdR2XUOKZDhU+=-oJWf+fU454`(dlTqx?cS`&6%ZzS>6bl!tM1nbtoKe;KgZ9
zd_`NmC4jWd4L7v6F4Or=bNyBI%}z&SO?!P^4E4vB)wFrUuW3UI>zv{)wxF{aCOEZY
zMmQF0YwZY+N1e5e;iiu8saJOvh0hDe8=E at LI*+oAFY at F%N{r6-jEEksdBudds5so(
z;8pMGr=Nal`Mf#Rb7tc#Y+4WMj`}zRP))39XlQC_im#XuuIh+4Evt#cSQT>@qUrUY
z?W}L9T at hYZvm(5tKHSt&+uGh<UmKq=GOPX}csbQASHUoK;o2I!s}p7;!|JW8_>6GI
zA5`@!ucH$}bU|N7C|A|hhPol#k`?j#j<EJ`_(g4NOT+ls{EFC|x$`crsG2|j;(7C9
z7te{#DY8{9Z;CgD>)YE~+h>?!&cc?OB``Ym))jBBsf~wQI+rb}Z>I{;_zpDjD%6G&
zGh!FTAZT-QYi+ElrK7$*u4~qRRsX^}n$>uIzUBM>rBnKIptwtH#b+)jX07my=N;kz
zzTMz%KbYr+e)y2P#gxmzqDiRd8ccxjI&w8XjP}|^MK4yDVo%Z(K7;E!7lSA7c}jPO
zRv(Lif#EmQ`wp{q=S3)xo6L(;2Oh3Y4y*1XA!Yz$s*|(u2~W<+Ff#K`7!M_|8>EQk
z_&osZ5DMCJY+Enkc at nhMEWpPR;1K3TxI8&)JifGu{fwpiLp{Zca5U~g2lk(Bp5x+^
z2yW6v#TVe|jEm|nK+JJbV}G&R{Sa=LFF25N4<;@+h_7G8+ugo)+`x5#e3F~YcT4}?
zxeXtb#YY)u2g>n<n^5;lXk_`D{rJ4jW4L>$!V{Izp?gcq)|>|ryAM(TS-?$PoxlGU
z^<3!weYkT%`aD|-#=FhzBrlSBnzsnnNFx#U_9!C^7$fL%hePhi_C)*Y%5vQ#bh-Vx
zJnFOi;bNCf-bNiK_C^!W?w_dQU3PnQJ0Xm>tvlnFuz_f9w66 at Bp~#b>SQ*=vY3p6!
zt=sxGTFtip03XR1QMsmojg4=tO7zbR-4_iUYM7ab4m-5}Ce_|ddx~)LP_ at V1K16%m
zzDl%b`#!eiB7C(oRGnPTuU$rq?B|jY<6-i`ixNxo-N4 at J#MtV at Y{&^yi#z;3(&f4z
zo-Q7WM3W<;iGr%c_BqJ~BM#0<EGRe_?Ym%1b at wv|qeYLG2M)MJe=EncJY~++zlQ~Q
zRq|$e;??e5`E!ydjk-8-(x}SPUF|QW9#FS%Sl&6WGO;_FjFujZCZgv_eqdG^*o7~^
zb|1<Qt<C{G&P(vwzJuMn!EAKk;>74c>09kDr~Zoj4W*y%{y=Coud;fX8=C!)+m}~H
zomfXnJwYloc}(bDryL)hD@?tC`LS7#?2F?SL3|HLuc%cg^3b2K4G5irJp-!3cQLpo
zWbgc$p>BlGhf+UC^NA)Sk<<@RQL+^FOq at 3}84bKcd*XW^UHPfW$f-<@Kvrd<Ad{Ec
z2;5_TMW0KN at 6Uvf-Pi`Wdr-r;qe^#!?sFqf=S<s*Z2QJ%XqqgeckY*uXc+C#?EODt
zOVMU?yS at KjRZ{2f7>dic?POmB)w=qIn$G5U%nX_gU;671`1EwBr-D6S1=d3*oF-n=
zACtZmdY)YvO`gV&|7<^q<>mvS?#ECzTJ)^`Hjuj|-ItkP^pK1FYpdJoy?t{KRiiLf
z-_gU|#L*EJUi~x*i!y<J#9?|!wC~)V6v{3%UeI^$c&y#JyRj9DJ%JzL+s`v)e7GR?
z8gG9#S1AD9EY$lrGB4_VF4X&yqCz}LOh8}UiC5g;txhm3w_wKg at EFmdY#imDP0EY-
z*}XpyKN&{-JwDuk8n`mP2+z*{pcRe1%YollC+2`Ii;?zQEYh!1jO>1r5Z2 at 2B-_1h
zQzL<s-NI1sI4Ckzf<JaWTzwDW1$zruoxG|rT7>V=>RypL0hGF4le7Oh={^vIKB8uh
z6lzd9!1(GoWjB at au&QT5Igj-}|G7Fk&VlofFexma81KNeOdZsBxMEi}UM(h##e*h|
z_+XcsM4}XDs+iDqWz*Nxvi>2{?23vR;qeQXbhgAh!zGg^OrB7D*3?dQIqBL-QzjHo
znNU(>GQa?1x_Z-=6Z6?~7IF_)KQRoUD)HOwOo6NCIf1Uiz==l>&*xKrZZ*a9UnS*r
zI4d?kf>r!eUQl>_PG!NE?%c|P at Pd&AV`di=Ru<$}9W|$54D!kg@|`gtt0OJabp8S5
z(vb!E<=9F}{;P-~UBW*z3kuhg-}Sk(3&P!blx-t%q)Ge(p517Gl`C-d+^CXzIA7{_
zPPDRD;vzx>=`h-o$CFtFg*WEREEv<5JF_6XHm|&3{Pn@|g5vIBl?CepSC1?x22x%S
z1_h*;S&%>LC?||!oJ%vYe#HmW-NUXAuFdPqy%DmoO_ivFX+4jqr!QxA!I-tV;C4Oh
z=?>0Dp&YcD6_ncws*aih@>Qm6CmEouX+H?N^Kzn4DcY>0`J_E{oVg&)Gv&^M3`#CY
zeN#?#!I&G_zP`Mf1>@JUeb=LX)4PYyF4&is``y6Eg6S2irJzZ-bS6yUgz;Nscz%)m
z at pDk9d-(Ok)&~3XZp^(YhxM*BG{3^jVwrkjGg)sX>n+#y9vGf`BI|`L(1onG%GSHb
z at camly50lBz4g9sWy@+W+AyfzOnYBty^zII?*+DA7rdDGnxkKPn+?r)5M<ixsaNUQ
zw0BQl?!??7^;~J|?KeChNY}e3OV3f@&lwutW~+MP8#mE^Z_K?o+rFya%7V7s-{uUd
z=JKOxH_qdkHl8Be;b!YEs~tz at mX7sd2tHx_))<}(t&9bGj+S=g4a;IByyHAY`(2!F
zL)8#%m|ZY8=Ql&v=pMCvC<mIoW7lIpfBYA2!CYA at +KQ?ord~b|v-(?`gU)w7`(<}t
zw4gZW|BO`KQTH%-Bjd{DrrZpit5bxCyz6t<(j4sTD^317o4<s8Hp7=u&^2AQK7C$(
z6nWoo%JO-V<_$p%Z^pW{&?D0beK_J at sx!~|+u@;zavf|S8Y1QTaL#r3A=m75G%j-l
zpDL4mp~2}>Oe&`1xCTGcQ!h*^p5w?kH57iG5B{zXz5)gyp96}!84qy&V;`Jkxej|=
zcKSQ$140k^CVL!wnYg{SM`q_b>XCI8qiWFS2>xn(G8DP$KcHlhJ1vTSn6t<D0OK~(
zQ-+T%&)CcKNzk#qg=X+&yk+{T!jE!x=u3w&lj*O9{=gW0{YAr{%h8lm^*>}W)-i2U
zIP7(zzGi%5N*Q_^_ZXvW%60hPT(T4Qs!`7Vu^MN5VY*1+M>(gVeN2oIHsv~a-`10E
zF!U>p;@SV0z5|?gDb$x~`~1w{rnzbSWy9xQ!$&>4HDz<vY{XocLkRlK5xDGoxeh;9
znVn`Rdq}Q2zs%rPPFrf0!NV3X$Ed<jO3Q7tKWXTTEntq98how?|BS-DwK@*JZJwDa
zWeP1dxVJ>J;a`>^RcGxAALT6a;9UwY9OUVrGxV!G^xX<SNoZOVBn%$*(BEYE*!W_z
zZ#MW|3z*|=3NLiZJ@`h0pXtHBZTNU#=f4d7EKkN}gD>&m_bU9O&SDR~)zGi;;13!6
zMi2go!Pj~4#}z)xDK`DwX8+pI-)8}H{DZ-N>%sRK{Er^|uLega%StaAe18_oCp82L
zom>w+9_t{Dat`t!(jh~?RbV{LQ~k5hx!Hq{G`O14i at ZXGk8*DH)O(!47kluN6n?DW
zpijpsT<vSg${Vk66EsE6V&LAs!tBohAD5FEH&ru%-|9pEbszjCAG`>GXsCM6_QB8h
z!7uW`=K()9XIR>=c%Q`74*X*|VRg<w5KpBWefWIS2jAp_-|d6<`{2L!!N)-LL+NLQ
z4}FmjeTffV;e*cuuJmTcHFeJi4Ym2;Hv%7*!&jkoQulc{-Q|NH0zOo`BAChyg-`Rr
zYklxdKKQSF at ElA8hpKm$56(ADhob+o55Cg}-{*rLgQ?h1{7?45OMLK)eDG_0aDH2E
zsCsYr!5{O%r^6M7;<MZb|GW>r(FecF2fyD3-{ylq=7ay)2hYd5>qE6`tPeiT2Vdxe
zFZaQ}=7ayq2QP<^L&<ra55C<8f5HbZz&w2@{$qUb8Xx?-KKKCeaXFcJIM)Z5mSU(I
zs@`57{L4Q0H+=9reef53 at DhkPlsq$mj}!BMdtcJ*L*L<pUjv+RcyWbpKkxIIZuX(S
z-3Q;~gWu)D|6~mGthcaA*SAg|oS*sdaqys+YrGR`Yn|Aq=f|5ns^`Z`N^0>mKZfVO
zP4SNE+N!E~z$WV*39Z<NP+zmGx^_XVYW~@=xfj+>XzFOMnNa*s6&Ho)lrF(T^~Pm2
z?N^peip`E*JhMC+i_M9ZluVtAO%U-aKBq2ksjF<NufAYj`K0Nw3v1`inIE4Pi`8~@
zm6ViBl3OOKYX>)Dehu4FHLrYXZ2qJe&aSF#yLdqif`8Dur~dPGmz at 2-So!~E!~fNG
zpFIUi{}+rld6K96>`SujUOZoIrKv_|m^`~aUUgN~6tzt!_UZRYCY@*yvkA4W&2>lg
zv`O=@uVxmu)y%@Ko9gDOswML-{Ab*I?t)mRM at pHpJJr9xy7z42q!Q>An at B2F)Hc_5
z%&l*qUynU1byaib$EE?M=BLfq`<AMXq^b|X=RJig$yUTaqj6=b`O{+1{E@`|_tx~@
z4J)o_>$K`@I-+1%l<&z{tDpOq=41O(2VM5UOJ>cly6Q-E_!b(XI_nG-ld7(=+1Z`d
zQXHY9`jChYkxgMLvf~am+{LP6StCO>y)z+NQ8HcqE#==y#r!*2otCJ->U at ei<sVHo
ziKiv%@7d~9QI#mN5{;<RB~zKJ_^Y#Nyqu&?C#mx(>hEM#e6lJ&SrwnG>Y1XXnWE~M
zq6Ja8QxxSC#b>hOK1EeGStE+)*$O#Zw?}g*rD^BKr|Mk_)k7$;w1N)7E?k9SRt>L}
zXDgSOAD>jx)Y=il=v*IbZd%e_)4l>5#+u^FUoM;<Kf9J23^6oMuWOAhZ>p<rsj9_3
z!S?3*7F3I2d}=J#s%IT$quEe{`%rU~1+fLin59g`EM at -WShH?Ksh%c4q#@ayjo4Jv
zUWIBW#i}7TesOI5Q)OExw{^xL9Hp94i;Z&{J-eZ~v!fA>t?z1z6B09-K?8wPdFh1q
z`i2Ry*wU`97<OfLw6<VJV0=aFDomj;m8pp>?W}39i`CSAwzH|76}K#3<}9s`H$sw@
znq~Fe%4rK_m1wVr=p9<r4?Ha@#df}0%<SUzRr8iD179?|_R3go<CQUPOoSM9&2z6}
zh7fT{D|Y?G7Pc(Mj?&n?`i at RW=i7dE=Og5n=-dzNWrphqE~o2TaLN4mdw2w8o*$oX
zeb_W(!2-C*6yr+`c2Yce(pja8zegRIYBa^G=A!u7=~*mh*-JVb;G`unGNGg&ph7!e
z=N?|oX7IGWBCYfHLp_Dtl&dh|ha8ht-?$jSver6fb97|%81`~(TV|!`(9 at baVyY1B
zuH-j25l0eA>+Agpgs$4!QE%O5Q0<i&3lF8$!RpX8PsN7Tn&x^_T3Wu+x>{37F?x&H
zAj_%Ry!lP@^x#k3WOU%Cc+Fh(q$TxBn_6PEHSyX;)3>l;*<RD}-j~gdw745Wpuom&
zXdfj#w{iOZN8HOb8MifYa$4*N_fzwy#BjT}0KQm-Q>qFU|Dg9?Q?R4DuBvvK6K`#9
zU0$!^ryK#`R~P9aK#dSIZ46<yr8P#Q#G6`MI52P%{IdFGwQVb$HoaFn)=}TwkiLKl
z?B4BIOPjH3ZDV_DOY7v=C6h`fVat3?-HI68r}oOpEv?H at Pll1FEYyhc2i3GLhjY_1
z9ctvluvTpG*3NjWwISAC)3UT4{R1^3cZ$tz(p$b`HSJ3gA6w#sDP;Lr!!lA_t;PPJ
z3RaF;*VKWH^}1uskGBsw&i%W50b(w=1YVjJ)C9U#*a@!?7zgupMitl={A=Y=+Voiy
z&$0!|1XRf5(;>~ufYNzub4Qh$E{jIJ&!q*W{r38{=9=32s%6VyMvRy2!)fijPevS!
zYdSibmbO&QyU=tu!R3SLI1|Y}*!-<z8l=eH;g5xv3(eBWoKnnSS~}I*3z~;lOqSI&
z$C~2x?KOBipn5LIAb3 at kU1E{_1v9&)@kaLS)^^n!R3vQ26bHQwUB0cgt+o{#2<w_A
zDg8CIcT~;$Cv7sVy&mr-Tm^gl3#L%7uW;z&{HLj-wRX~EzM7-nWl;vUnyrH;)m2p~
z)n)JFMg53bcqN2~Wq2!x;$$X at _U1y(F3igtob)xf*3{KpwUl8`smrI78OSsIrennn
zFaFdtmrSe1)S?Mf%&Y6?tEIaRggeJRVdS=odH7)`v`QUjy^#2Pfv*<$LV<5IIG;>%
zPmSeszrnqH>~nGA{I{o;{#il4NZ_v<+{=HoSx@!yIa%P6&wPWE4<C)$dav-{<j0is
z;FkW&g8yZpv-mdze!0N!75HZa{yTwRA at FAmZsoM{yd~&kg8nEHB9Ttok^4}Yh%d&^
z%6VAeH3E;B=Y^z~a;_4%lyir`WxYokfxY$i3tZNVH#SwGSpR_^9;>Nzl6h{x>?`rJ
z@}FXG(l_I0iaRqrxaD)5;ImBdStICMfOCHv({}`YE3R$5cL`kb*)H%lLI0G%7YO`s
z0{^VQv1G3j+a=}ssKDEiXWMm}!P$QHSu1C;z~cg+Ciw6fujMmK&?79Q`799h)U&0J
z3;N}P{(A!N68LU`OFjHj;L;ziG8+}xuEm0n-k-z0P>%C)fq%!)6F*JhKN9$Of!hrO
z<X<cB51EYw<WnT at q`|%Na32MeSDv2;{B-17yF4oJGXx&SegGz~JQw)jjXpT{KUhAp
zzuata%1Jx29;OWfm;LT8flIp|gXjKCEHC|kw86<=`t2tKz3fM>z$Kprg3p=YW%YKs
zpqKsY8i7l{S|@PXzy2)vpC$Mog?$A~Y}e=Tv-M6F__YF`YdV70Ue^fx^MZb at 5B_x@
z{QExmgFg6AeekDz at RSe!jt`!H3>t&P_R4mh=!5es=S*Ju89w+dAAGsMWk3Cnz*nIj
zYp=})ryqV&;3KdffQj;4ho7Y%C-Bt*pKWmRnIQ0$f?mqQeGW|IzZgHue}}-k1^!|4
z(3$iyZqF0A<o_vyd;8Z4fy;5>dcjBXUng)mF5Dvc$Z_FLK`+OJ-wOKwKpTwPIIjqL
zIWBw*`vI7|`k7#GwoAtI`2s&3c~+k>fln0pT>>u_`27Nx^U|Lfobt%|?ZblpEWwBW
zbcl)cGS0jz=u41i<@~$AWxa<4A6f6PW652QBeLFNgR|Zq{49T0;JpH`6MQBK{7QjK
zdD;XYDNm=suNQo-7knlQe9nh(fkZha{ih91`%b~n%D+_Ll24BhpAA0rj|sfl)Q^L+
z*MnRCd|BXU3whoUxYW<v24}nG3;M~Uae+kq2K;Qh78;!GohtClK8y<_Fa13Nmwxr6
zz}KLh<^MN<%Q*b54_<hjs#eu2=|Ad&PxZkoeDFm+_?15Rav%H)KKNIB at bCHH_xRwC
z_~5_x!T%<3IbMuBKBLdo!Y-#7oOYMv#bklYe!W8A(*&Pu4NgBv2>ezb`r8Hl7X<w`
z1uo~+-}S+_`|#f-=%qY=74*|Zy{`zoRN$`*K1qT9UEosALq2%!7!*dLek6Uq4}Odf
zewx8)uW9(%{&l9Hm-;LbxUBbb{^x2W$|J|?YYa~Qa(rAR=;i$U20<_5*nfI(8^;C&
zpJk}S%KwU>Zvk$?k(2)sTp&?SIS(H#aLFek at HUjO{L2I`<JCfee^$^hH8}Mk<ykH8
zcI4T1trdJa1fQ=6JTCCt1)omA=T1R?m7wnz^whJh_env&T+knH-aDe+`UE~r;8G9e
z0+)WW!{F4zjrdu+{6gS20cSl-$M8iwB+{RXpVj|p4{qtp4bE%nSFWI!et5IMS+CW@
z?ShZ=hkFG*<v$lcrk4f%I$T>h-w^a)1aA3HF|Q<1PRYN_;B4;<!N(Q!a{Qeq at GlAa
zD+Hf&1l}O%C7;Ix{$)Y`jNl{NJKVf#MfqiaFEBXemwtG%pqGAFB<Q97s{}6XHBa!7
z{<&7*Ql9_z!N-k-fJk2Xs|CIu`PPnI0+;@LewbV|pT#&@`dMLIAbI_KSy;h?)=5?h
zT>5#p2dBJDH-^<g at u3gedO!X#jgwCL|5*m7JW`)C1upwtj|aDYyH at a*e*0}fFa6{x
zK`;BobAn#>i!;V$<d^(iflI$#U~snU6Zly at T<$~PAaL1V+6ABU1fQz~y{z|jfy at 3f
z{*;XT(hnyZJO|mbUz7 at 5+GUpDBm2umf?nF|Qy$#f>vMvS>@U3nmws}yhmZBQT^`)>
ze^&63_Btt&(Sx-6Sq7&bq}^)-z2tMPz@`4bAo!dQUe at kk@}XCQ2k7$fllGdz&W1$1
z7C+199D{r9HDAz6yL?*EOS?39aI3fL1TO7<qu?*?wOQcOUj06Nej)H?w9D4}ClAhc
zGabi82PC$a^cJ6Ba9&HhoGs{EkY~s7IzitG-0JhQ0+)QQ6S$mTeN*6aUePabX|KHk
zm-DX4Tm(m={9nV*%5#;#`vm?SgHsQe2>c#_mkIoN!AJV%apOUR#Ck8q&(<3j_#%Oy
zBXDWo3k^<rq at OGixb(N%J-D^|w*`Nx|EC2m`{~PqkL;)8iXaG**B{OoxYWZegH!%;
z{Hz`>@u9z4;If|%2wd9z6~SM|)x&~b_S0dfQ+n;^Qg6q4aI3eo1TOVI!{F3|?5A;o
zOF6$FaB1H!8r*B&O#+v4zTm;FoUaQ0(!OV&p_;4gCGC5T!C9}gZ>yk}eAWtF+V at t$
zXC`=A`)>51KO}Hz-$`d?<dk|VH8|yz_N@^3e<085VXojK?S84Cm-?*r;FeF1;3MsO
zr@*fi?N$GX71xxr89(|3)9(zu#gEpoQ*f3(vACr_#o*rlb-JLJ at pg`&Zv{)M|H}lv
zOyE}vT*lkA0+;dj8v>Vc^~VC2arH5Svt3fo7X&WvbKeqtI)t2o3AjL_9^&}fcI6wK
z{G~s9RM1PiM+CjJOR)#HcDYdC(y!_Sf9Vga1up$|hrp$u{M3hkO5oBzPnn2 at BC);1
zt(<2V-0LUx0+;<gF8Ij)zDdw81AnXMhXgMB`=f$Sg`j`ZhrYBJL`alV_V;B1mwJmE
z+-u(+K`-r_6!bTldRX5r9^C5fM*^4j-6r@;`~E}VQqH~-)}q^WEsj=iAD^UP)!y3#
zKF{E6SEax&74#bfew`0~+++|TQJ+$t69s-9@~k}N0>540R|@>A0$(R^$$$M65FvT%
z{kgywBj48hn!vjSKIUv(Ad$~v{4D)>0+;kVeDMFCio!@<c`lqbH2zs1yvyLUOACIZ
zb#do5fwu#*{<BH&=>Tr!zenJ4fo~OjWW4&NpqKu<SI{?u58KD|oCmk^92U6r=P}cD
zIhJ3JpOy1GflK?=_~1Vm_+r85HGxZe^^}4LiS<hVzsulW|G!tzOaFhy2XE)17?RiS
z%LOj||8{{(|KBO_uY#Y|&&vXr`WeneG$hu$06$BAybpe+z`r8s%LTq(;GgorJALpz
zAN&VC_>%%(Eb2WdaB0W8xu}H1_AbWHw)YPLm-I0%z95la;(su>w|~7WaM`~`a`6R;
zd}RMRUf{BSoosOOm;Gz9pqKq?hM<@IYnBJM{i{acvVUDI_{;vaQQ)<Z$?9!~51#VD
zFXN&H65GYDX8F_!oL$7?O$Mjlk^=7*^i=|1Bj|4t_&0s%zw1N4UC_ at Ge0B-?F9>{}
z5B*;ReL~Q`An+Q2=au0CiTaWCjwmCl{YUaSqfEhyel||6-Yyon<g>uw)TflcUC>K?
zE*JDtpEvu^f6a$}hoE<zjGQkEe5SzP5V)j2qZ~v?)Q`j)1YV6itA}L*zd+!<6}Uj6
z9=?g6rT?YCFBkZ`0{@o4Yb$YqM0qa3&+=&%_=N(G8=Upd7x<S2{+|NBUEnnW|E9pN
z6ZrQG?v-b=pua=V-zVs!0)JM}Un=ky1-?k&$J1$$SZ^+VHqMOm;G;=|G|hus`tuE*
z2b#<9v--TyLvQ(9A?T&OngsrB!KcHAPnV#N3Hnt&^hKayqMXu>#@!UY0C`sau~Z5Y
z^>Yk<BY1&yh6lIwPYu)gmfqY(IVlg`t;w7>JUDH`bjX97>4!6NxX!oyzoajnPmIaN
zpE7v02mg)17kcoc13Kdh4}OlpmwNDRhEInFcMbjLJ@};tPkL}$?=2qOeoyXO9(<$W
z^Ft5bW$*_)c#FYzd+_57{woijZ}6u*_|HsxFFH}5SpEOr(0|H<pGg9wdJnD~3HWC{
z_;ZHO=REj1hELB}#V+lKjRs%m!EZD81`qy2gKzTS-!}N&9$W<jRGBQ#uJ;P#_v<})
zx4}1h at V^-RP7hws4v2KW2X8m{!yf!ugYWU+zcTnAJ@^cR4|wo{27ldyf8F5DOf47H
z!u~!gsIQOq;NLLq8sovI8v2L_uQGVC2mhME&-LIt4DNdH#|*x}gTH3*#U9)>airOU
z|Jcai<-xBt^gSND&*1Ak_-2D|@Zk3we3J)%&fs@@@O%^3`aSq*27k<huQd2x5B?FO
zhvz)F{w^oJ#P7im8$R!N at KcO_@+-3af&V*(X|xAFJzwKt4}OcGKhuLxH}umz_+g`;
zN)LXqp`Yu)n+$%r2cKo|gOysY931G+T?Wsq%EtQ)zRrVhGx!D%{v(6i at sQo87C$=<
zj?(Pacv>fLIsVoQ+>VpvQzP)HIA<ch0zb>Yk{}Y>)r_B=hcpsIBK>mwEPXdYB;vB(
zH44 at E)i}5GeFDEm;9nE?N`c=aaLIp*z-7C(`QUbZrkrc>v+~&S+>8H3 at R9P^@zdL0
zJHC1O*zwSdmjrYLUOrO=F56}23#6C$LP0Ovb-BQ${%Zs-^>4>{@|XT_r=h1m$ot|S
z3qH~xel2imFFT%l<+tOrx87Goz0wayQ4l23%X;m+fVix;M9 at n;Ocl7)LxsSl-LDY1
z<X<cB8q{t5%FZLa?QIwI(q1cla69ktw#&{hh)X^{5PWVH^4x219^`X at p9y-&=LtdI
zi84py$MmeAm+LKW2zsv1Tl%AORWTJ$r2m{?aLO<3XvYVy-t73`ZSM at hN4EEq0+;Qw
z^DHl)MnT^MnXDb{{EPI`?soj~^0D(5FK*`rUi at KEuaxs~flEJpQs9!_&Iid~`r(U)
zp5~Eu50DVaD-ZvdG!yBi-Ny)eY4@>$UOt!kxCgiXFiYUlALa}G(jV-+mDw^btq^>g
zk!LQQRUX{d`+b4SdhP#yV79DxyP at Yn>UpogWjuLG;4+ at PCUD8;=pYy)dHLIUmKTo*
zdg<rq2wcijCU7ZF)Zku!s1fv1&PG8m{h>?HOMm#hpqKt|y$82;vF{yI9%+{c1%GK5
zJ5TrO=NUmS_4Br<SNea*%m=-Ejx)H||35D1WqZ#O^s>EEJh*MIe7{(>w^{I)?d=x0
zwC@^$OZ(m;a2YqgFK}sJdp|)v$o{p>&{Gf1#!qo at c6o5yt^)#>?Rr<#E8Au7OT79&
z*4#G`mv)?BaIfE12zuGB3k1FN+fNI6X~!BtFYVaq!EJlj2wb*T{~v_G^OL&-z4XIf
z2KVaW=Yn3!|CFGY@;@i&rTqInxRw7XbD!bucVi4rd8EB23tZ~C+y}S!Ro-^h33_SY
z4uMPl_Wp@{YVot<^38%?j at LgBc)g&v_f_O0$47e~=H<Uz at Tn7gej#wl->w%@pZwYH
z6f}r=EOGmus$GAw^!7avyB=e4`<%?Kb6DIypSJ4<7PtFsN>LY+w_TTMco6<ABPZ!E
z$It5dAu>kt^1=UOPveVmX6ZjfLL?r#@w51U30%gp9}8UC{c(Xyd;P`W6zd|v{{=yR
zi@*b7T#){gFYsFh{b+&9xO%3*>jnK+an8i*rQUWbRO4UAxz)p2LeCQK6u9K`UjpAK
z_{jS&*)DtkMg7bX^z!~o>c=!o$^TtJk5iRc{VC>L9*8rJ6&lcV3w3+Ucx7>ut?(uG
z0>`j9r<}%g3Yj8s=GoL}PKfb0*If5_ at O9?;4iA37T<;e6r_DJJe-t?R+yCqG7lF$*
zMT}iY%k>|dtbK`-K4dcN`aN;QKUZh;2tLOeS{}9vob>kpQ|%Nu`J3f*r;tQQJW!rV
zyg)iZ;G}mIig%L*&QtsUtUe)d($g22)(D*ZcPJD-AaK$jF!-GU=c)bwSN8~<^m(Q|
zc3qs=<Zr(}Kf>sVIO(St`iQ`pXa8T;Spp}$)q9t~$>07Tt?L9%`ZmLVgTPM&Zqv5~
zPI|j;BJZ;(kNv+}Z+Pf88vbR*>1})M|Kq9_IQi$9@^u0~*$RW>9|cZc_PhHsPLj`P
z!^g%qTd)1UULQ4qfH>*-PrsR_2wde=Y5WrcCw-}*ZxcB6Z2#Za3W1Y;mZ4uK at KZEv
z{dYpgie>SdCC&tXZ%iE<?HRuJS~DSz&rmuO>T2RO&V(f$9gYGf=+83_`DI;vebyA4
z(Am=5bY*?>3TML7+FE?ivbMf09z!L~^^Ty*`oP%`pDY{d)4%*u=7jcEibcUoCg7XG
z@)DmOHkbbd_kZJu=`zBlmGZwU(9n80(r4w~s|iOci`vrd#`k{P<DG2=;`eCr#me>?
zIES%RZAUy~HeB!%)vCC%GR{EgMbx)cCmiXM$N28{GJX})nb6W2ub+Vb0eqJF^02wa
zCk7|9wc{hQ?Qu#%Y3m#DUyS)3<OxgLTOshjC7pzRIBEz^Wd^h3`f0fSBz`8`q>p~(
z?KoraH(37S4^W<a1(;;{ui*Oq*1wpAkz{%9BYD5&n^o!T@|-Vt%ZGt6q?_AZoawa6
z95+^(6LVnflZj&sd6r2K=W}n+z^1ACNd2)6YY#i_e;gR=H{ld#I)!K1v+Sc8e$wEX
zI3rKL^5Hb4KC$&%xCAGv{Tv)bvh@!a7*D<JzZBR|`WtWL|COggPc`b>e?#f-;7 at eL
zWd-_3{T+p$WoPx*0F3o}`M$%+GtwN7VyyjjuKsq`Q0<>PPg8I%ER(nWUC31Odjy#N
zm at ZXp3R8YI#Vh{<z*xVX at 8MLXou>W~%oNF9+T%}=H&ppO+{A<QfF;zI>H01Fd*DNr
zPcGC2K4Qw*gDq!|%{bxtFi-n8oAUPmDB1E}{Vhe|q4d{i^f%p9ME!jTKd=7&X6pCq
zZ=bn2crW=ULhhmDSDUp^pPk40$$vV^4<-M`pX(C+rXb}%4nME_b+&#(XAk?##N9qe
zwzyY+F<ZYSFvrD@>l52gSU=Cb^)E+x`lY9vI0sDqmR at tql(#sahpF~k0(0ydqJG-K
zma}s4d!N+*v7Yh=P5t9NxGisw>wL<GKcfq_dCFV;+2glNd2jpInevv-va$8r>;Lp=
z|2otDVnay%bKY;u+xGK*itW$EQKpTieoJrjyw{s;{hspuL+C#YCbqn-{~1%imDAR<
z$<#l=0_I3rne6ceQ(mK)zrQu*Gl)L3<t+X-$`8kdM|@|mDId0k=4j=&@Ubu)d3wtq
zH03v%`x8s=Eq at Hk59PmmjsC*SM56sp#m|<v`Wvcl(%)LkzqpSy3kc(JJ{Lc4dG>Fw
j?*Vcab?~p_yv3j=l2?D6`wdn8;1jx#eI9FBc+3A^QQ2Qe
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o
new file mode 100644
index 0000000000000000000000000000000000000000..53efc099d92f483fb0a12d0b3482caba7bdee5cd
GIT binary patch
literal 6616
zcmcgveQZ<L6 at PI|lL52c4ps`KnBi1OX*}B at 0kV$9iQQZelVq`j3WdJCyu3ITj!oZt
zrh&C9Rg#w1%xgAv(zO4oZQ7*vk7=9O$fPz|7;GKV*oUezq;5hQB&98ks=&I8?40X+
z!_C9)CMxYn?|%I5`MT%aulGze{)nTZqEcd1A#IZ?ct at z;`pnHv3vISYtE9Ur at 28=U
zGA{UfCaRz$*1t)i5gJm06xL!*tiO`scUSe1F=tIJ?MHmo!O0muX1!0FCnCP8rNlZ(
z#w0S<GDC)+s`5zYdQvcbRTF4~3()%Y1?07*eC*=6{(irE-3Tg{`o}+T-}ez1uI+bU
znta^>&>|031t*Dh-d*SPQGKJ6`6gt9 at 3&Wo`vGwAihI`*)P&vTzANrWr^r~u2lLoi
zoJW2=89rV+Z3CB+!WU6$=Di#9^HeqWXpuh{_5ZIwdrSEf-Wl!*Cwm}i3G(c_9tf)7
z)QGPd0EkmzkIxgc{vI#%`MT(oFjB;NJ8oSf6F+_F&HHDT`R^pwl)EnC^N?%rkg0z@
zjBPI#0dg|pYr&9^sgG8Zx;Kcmq8M{xoq4Se at VIq>6jmY!RZfOy9Ax-<rTh6Wq4}#5
zm|)<cgW+Qvp+~F}WOUMf<Q`xk)|GgHCJOcZV*10{Jum+1!&)-+j)Pn~N36@#2C at D?
zhR at BBsaXf9c!LyHe2Yw-bC9~z6Sy+Ef|Fl9hOQJ7c9g2yy=!FBJ#qp}#0#(b4#Oxq
zOzWbzF#V##*0j4Qf&yznVB#6zj$7xCAvZ>;?l19z=AqniOGAiB!a5_?G)&j+etry?
zp;eL3yN|x)L(wBW9%4nS!zY|h*c8QlEUZ8GsD;yi_Bf`ESTm394etr>4L?5ZUWc+0
zx%PJWSUogm&p_(?$BPN0b|E8O^?^V$)QRRmK$=}WKR*u<HNSZgwhP-qxbv!me<TaO
zMx~f_9G5$|9Q6$UtJ=t1op!oM{{%Kh&zdXUM at M{zp&dTr^j)2HxJTcF4&{%JY0_*6
zY`E98Ks4#`5Vx*TUm%Yor@%pSl13dwAUwsP*`J}~3;sX=4#Q}y at RYAQZoN;2FI<mV
zPM`HwY%IA1nn~yNSlwJ}Vflu5-FfSGQx_|(Gary2%pRnM!7c`4A@*o at gWYa1Ewjr2
zA7|#Qvtck29*eA<3tN$U=Vl)ObpX159$9;%AE6twcLPKx6YcKq>~8i-HHV}cwI&eC
zq?>6e)$FRT8LY4AOV*I)njOtG2}x2jIdz|$(o8cwsMWT`JKMI)UEQ5+(L_RS>*`6y
zc0}b^<Uz0B at 2~UrE9s2ZhyIt8OOozrIP$S#5}rS^RKw!p+r|C6O=@pzYxdUm^yaf>
z-WzQ2H~0hfO?lc4eJ!-fAK2s%*0BLl;e^ivAEvFnqep^`G>I6$P*y-2sp3$#R59eK
zShKvUdK{MOy at 26|G>k>q<$2E0<ytjd+2IOEaJNX(Lx=+%!GgE~j>ng}s>93Z*rSL6
z*~gNAnRG;wlIX-EF3&d{t*%vt%2t>6>&~#N_PHeyS77*#cGslCan<!3N1N-kqZ{fl
z0<SD}1tPB6u*(ZFtu9ZitC}nWH8_t`Oz)>y{c#mc5n}U?`BFTU3(>hbiZ&bqPGiD`
zE2Ud4Vr(1&&N(tv2Jhg-^aSm?7lY6{K#}TO at UJp_i*4jE?N>>5iBX2*JVbhdcB-U%
zL=f69!iVd|POkz`3O`x~cS4{`@jp}s$J?Y7e`gtdJJ`L;Q7MfxN9lTl_G4xE(`E2O
zfTJES)JR;<cNzX;hSN0*<9Oqg^7CRD{8||tH)JV2o-+74z+ZOYi>^pK&%4U-r^?{j
zGWe5a at L!g}e-HS}4t!ZI_NNN=cBy%-DT7ORzUqcwRV8_M$JSmgs}2k*`o3UDZjX1i
zhU2o_AqRtvk+hP^<_s;I?TZej&1lzl5a1j}zE_UPi{%@;^qi_01{~HshLX~v2PA*I
zEr3N3ix3u at uxP}h35(6(L&6LN(>X)#RSZqeq<eKmKPacOY4ZRb+ at xx{PFukyS<V at z
zt|@~sZfLq0Qxj$|s17K)Z0btdG-7Hr+6`C(C`+rHJC>A_0XdpzlDoDi8srSsmN8=g
zo3NS$(MAxZ0ZZf>`!jiC0A{B_SU^=rBG<4#Z${O{SCJ&khN-}nrVi|r at xDS<A>5mi
z12B_5AzF*ax5jg-l8Gp$mV|^QOg)`VwKl3lL%|@}Mzdy<I-uvWxdwS>C>Syh8m2ZV
z(`&RLn|l(N;6_z4m~L5 at Aa4EG1h>*gP7O7Hce<GauVf>;AC#N@=qV^}-zoaJ1x7SI
zt7L*(+BLHypUK2?saO`KmQ^9e(Jfhk<V-F_=c{K`#iV*bdq&GjsX=C+I=oqy=>&qI
zVt#-LW>qSS2?bNRRo)@15G7NKb`K7M1$9V~Q+Y-2lNI%ed|HR;?7m%ZZ|c&uj0THu
zae{76d~*yIV_M0i4`CW$^%)RbX*t`6uq~xK;G2U-4-&uU5y#!i at c^`u at J)cX568cN
zAP|2)a9k<ExA3P0{7z_denY_T67Z)59DiLo|1kl_zYUK6nc?U^-kuy^3g;>k;&>Kv
zd<DbN|IZ3|Ou$9`eS#iQKc4?cs2}feuK)Xj9#Q`V0mnO)^Vg#SAoOQ7d>nt6;aK4>
z6vrb1{~7^T1RURIod0P-58m+{|FyusR=`gQ{Pzj?djgJYiR<}L&?EXYFYt?cHsIS1
z2<N*FKCb8U0`3*?9}4(-0Y59?pA+zns2B*%i*_3rj at 1VExZPHP-v{{h;<lLY5cq2Z
z{_hF=qW)I|eo_B~!0!|EpAh&({q#W&d^jwwAAF}HA$~u6+<(N7aCtG6wC|;5F%B#h
z6lt;H<E+2OhV%E%kPYYWozns?+Lipq!9i2$g&GcQS`Y9R99)Xu)P_vS-=~<0<nJ{M
z$*<?IgX}>++`M9U3v{^*Fetj2-_Ibtab-o<m4j4`|Mo8e^a8|h?_B2Ys)h;9s=2{I
zEeq4j=1k2Gzg6}0PG$X6Ht*lB=k~)(0Gy^1(+1>zU4d)PpVD(Mw@*%+VIkl-Yo`_l
z at OL4eakzeY?s#2Jo|KUHm5}!WhHDY;7?HYI$H^Bm>w82dXyX}zzO=w6Qh+ at rC)vJ7
z|FOyEga4gKxHr%~V?&5i(q@<A$Scx=&_SKID<1?|)ER<LByNAB2tu3N=XDFi?DB`1
z|NCt6eEwWM$>i<vzs%(M|0Y*skAEi&l#2glwy1cVG5)BF+vj)+Fie#_etbc2eqf=*
z`@HT2w3Pj7d?WyIJ7^#8GcLz*d{-b=DIR)=v4C)XfGFAfKLPZU$X^0^%ms6o+Q8z!
z+2?-D0WZo2P)HyT^WQIE*yMTV^%7|Cw#d58z9873op&Vw_|CC~PikTEUQsEux!)YF
zXZG##Ut#ip<BY7f%h!T at sr-9cK!=zd<{#gOT%PA2=VP~xA}u&6pdYb?iFYghE!*XB
jP2aM10h_@`7*M-y5bcSC+r-8~hrh%8-)0lAb*29Rk_{?Y
literal 0
HcmV?d00001
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake
new file mode 100644
index 00000000000000..0e001957cd9add
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake
@@ -0,0 +1,23 @@
+
+# Consider dependencies only in project.
+set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)
+
+# The set of languages for which implicit dependencies are needed:
+set(CMAKE_DEPENDS_LANGUAGES
+ )
+
+# The set of dependency files which are needed:
+set(CMAKE_DEPENDS_DEPENDENCY_FILES
+ "/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_main.cc" "third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o" "gcc" "third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o.d"
+ )
+
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
+ )
+
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
+ )
+
+# Fortran module output directory.
+set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make
new file mode 100644
index 00000000000000..9f218490bcd6bf
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make
@@ -0,0 +1,111 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Delete rule output on recipe failure.
+.DELETE_ON_ERROR:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# Include any dependencies generated for this target.
+include third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend.make
+# Include any dependencies generated by the compiler for this target.
+include third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.make
+
+# Include the progress variables for this target.
+include third-party/benchmark/src/CMakeFiles/benchmark_main.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include third-party/benchmark/src/CMakeFiles/benchmark_main.dir/flags.make
+
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/flags.make
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_main.cc
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && ccache /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o -MF CMakeFiles/benchmark_main.dir/benchmark_main.cc.o.d -o CMakeFiles/benchmark_main.dir/benchmark_main.cc.o -c /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_main.cc
+
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/benchmark_main.dir/benchmark_main.cc.i"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_main.cc > CMakeFiles/benchmark_main.dir/benchmark_main.cc.i
+
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/benchmark_main.dir/benchmark_main.cc.s"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src/benchmark_main.cc -o CMakeFiles/benchmark_main.dir/benchmark_main.cc.s
+
+# Object files for target benchmark_main
+benchmark_main_OBJECTS = \
+"CMakeFiles/benchmark_main.dir/benchmark_main.cc.o"
+
+# External object files for target benchmark_main
+benchmark_main_EXTERNAL_OBJECTS =
+
+third-party/benchmark/src/libbenchmark_main.a: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o
+third-party/benchmark/src/libbenchmark_main.a: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make
+third-party/benchmark/src/libbenchmark_main.a: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/link.txt
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX static library libbenchmark_main.a"
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && $(CMAKE_COMMAND) -P CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/benchmark_main.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build: third-party/benchmark/src/libbenchmark_main.a
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build
+
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/clean:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src && $(CMAKE_COMMAND) -P CMakeFiles/benchmark_main.dir/cmake_clean.cmake
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark_main.dir/clean
+
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake "--color=$(COLOR)"
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean.cmake b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean.cmake
new file mode 100644
index 00000000000000..d1bd0de8967ec1
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean.cmake
@@ -0,0 +1,11 @@
+file(REMOVE_RECURSE
+ "CMakeFiles/benchmark_main.dir/benchmark_main.cc.o"
+ "CMakeFiles/benchmark_main.dir/benchmark_main.cc.o.d"
+ "libbenchmark_main.a"
+ "libbenchmark_main.pdb"
+)
+
+# Per-language clean rules from dependency scanning.
+foreach(lang CXX)
+ include(CMakeFiles/benchmark_main.dir/cmake_clean_${lang}.cmake OPTIONAL)
+endforeach()
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake
new file mode 100644
index 00000000000000..1f8da5b0441730
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake
@@ -0,0 +1,3 @@
+file(REMOVE_RECURSE
+ "libbenchmark_main.a"
+)
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.make
new file mode 100644
index 00000000000000..69362d9928621d
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.make
@@ -0,0 +1,2 @@
+# Empty compiler generated dependencies file for benchmark_main.
+# This may be replaced when dependencies are built.
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts
new file mode 100644
index 00000000000000..f7bb62c53832a7
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts
@@ -0,0 +1,2 @@
+# CMAKE generated file: DO NOT EDIT!
+# Timestamp file for compiler generated dependencies management for benchmark_main.
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend.make
new file mode 100644
index 00000000000000..61d439c9781525
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/depend.make
@@ -0,0 +1,2 @@
+# Empty dependencies file for benchmark_main.
+# This may be replaced when dependencies are built.
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/flags.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/flags.make
new file mode 100644
index 00000000000000..1527bd90008efb
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/flags.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# compile CXX with /usr/bin/c++
+CXX_DEFINES = -DBENCHMARK_STATIC_DEFINE -DHAVE_PTHREAD_AFFINITY -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
+
+CXX_INCLUDES = -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/include -I/home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+
+CXX_FLAGS = -Wall -Wextra -Wshadow -Wfloat-equal -Wold-style-cast -Wconversion -Wformat=2 -Wsuggest-override -pedantic -pedantic-errors -fstrict-aliasing -Wno-deprecated-declarations -Wstrict-aliasing -O3 -DNDEBUG -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/link.txt b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/link.txt
new file mode 100644
index 00000000000000..fcddf87a242e90
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/link.txt
@@ -0,0 +1,2 @@
+/usr/bin/ar qc libbenchmark_main.a CMakeFiles/benchmark_main.dir/benchmark_main.cc.o
+/usr/bin/ranlib libbenchmark_main.a
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/progress.make b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/progress.make
new file mode 100644
index 00000000000000..6c29f4fb5e35d3
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/benchmark_main.dir/progress.make
@@ -0,0 +1,3 @@
+CMAKE_PROGRESS_1 = 23
+CMAKE_PROGRESS_2 = 24
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/progress.marks b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/progress.marks
new file mode 100644
index 00000000000000..2bd5a0a98a36cc
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+22
diff --git a/polymorphism-benchmark/third-party/benchmark/src/Makefile b/polymorphism-benchmark/third-party/benchmark/src/Makefile
new file mode 100644
index 00000000000000..fc1204e4ce46a5
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/Makefile
@@ -0,0 +1,710 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/third-party/benchmark/src//CMakeFiles/progress.marks
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+# Convenience name for target.
+third-party/benchmark/src/CMakeFiles/benchmark.dir/rule:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/CMakeFiles/benchmark.dir/rule
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark.dir/rule
+
+# Convenience name for target.
+benchmark: third-party/benchmark/src/CMakeFiles/benchmark.dir/rule
+.PHONY : benchmark
+
+# fast build rule for target.
+benchmark/fast:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/build
+.PHONY : benchmark/fast
+
+# Convenience name for target.
+third-party/benchmark/src/CMakeFiles/benchmark_main.dir/rule:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third-party/benchmark/src/CMakeFiles/benchmark_main.dir/rule
+.PHONY : third-party/benchmark/src/CMakeFiles/benchmark_main.dir/rule
+
+# Convenience name for target.
+benchmark_main: third-party/benchmark/src/CMakeFiles/benchmark_main.dir/rule
+.PHONY : benchmark_main
+
+# fast build rule for target.
+benchmark_main/fast:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build
+.PHONY : benchmark_main/fast
+
+benchmark.o: benchmark.cc.o
+.PHONY : benchmark.o
+
+# target to build an object file
+benchmark.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.o
+.PHONY : benchmark.cc.o
+
+benchmark.i: benchmark.cc.i
+.PHONY : benchmark.i
+
+# target to preprocess a source file
+benchmark.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.i
+.PHONY : benchmark.cc.i
+
+benchmark.s: benchmark.cc.s
+.PHONY : benchmark.s
+
+# target to generate assembly for a file
+benchmark.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark.cc.s
+.PHONY : benchmark.cc.s
+
+benchmark_api_internal.o: benchmark_api_internal.cc.o
+.PHONY : benchmark_api_internal.o
+
+# target to build an object file
+benchmark_api_internal.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o
+.PHONY : benchmark_api_internal.cc.o
+
+benchmark_api_internal.i: benchmark_api_internal.cc.i
+.PHONY : benchmark_api_internal.i
+
+# target to preprocess a source file
+benchmark_api_internal.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.i
+.PHONY : benchmark_api_internal.cc.i
+
+benchmark_api_internal.s: benchmark_api_internal.cc.s
+.PHONY : benchmark_api_internal.s
+
+# target to generate assembly for a file
+benchmark_api_internal.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.s
+.PHONY : benchmark_api_internal.cc.s
+
+benchmark_main.o: benchmark_main.cc.o
+.PHONY : benchmark_main.o
+
+# target to build an object file
+benchmark_main.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o
+.PHONY : benchmark_main.cc.o
+
+benchmark_main.i: benchmark_main.cc.i
+.PHONY : benchmark_main.i
+
+# target to preprocess a source file
+benchmark_main.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.i
+.PHONY : benchmark_main.cc.i
+
+benchmark_main.s: benchmark_main.cc.s
+.PHONY : benchmark_main.s
+
+# target to generate assembly for a file
+benchmark_main.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark_main.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.s
+.PHONY : benchmark_main.cc.s
+
+benchmark_name.o: benchmark_name.cc.o
+.PHONY : benchmark_name.o
+
+# target to build an object file
+benchmark_name.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o
+.PHONY : benchmark_name.cc.o
+
+benchmark_name.i: benchmark_name.cc.i
+.PHONY : benchmark_name.i
+
+# target to preprocess a source file
+benchmark_name.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.i
+.PHONY : benchmark_name.cc.i
+
+benchmark_name.s: benchmark_name.cc.s
+.PHONY : benchmark_name.s
+
+# target to generate assembly for a file
+benchmark_name.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_name.cc.s
+.PHONY : benchmark_name.cc.s
+
+benchmark_register.o: benchmark_register.cc.o
+.PHONY : benchmark_register.o
+
+# target to build an object file
+benchmark_register.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o
+.PHONY : benchmark_register.cc.o
+
+benchmark_register.i: benchmark_register.cc.i
+.PHONY : benchmark_register.i
+
+# target to preprocess a source file
+benchmark_register.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.i
+.PHONY : benchmark_register.cc.i
+
+benchmark_register.s: benchmark_register.cc.s
+.PHONY : benchmark_register.s
+
+# target to generate assembly for a file
+benchmark_register.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_register.cc.s
+.PHONY : benchmark_register.cc.s
+
+benchmark_runner.o: benchmark_runner.cc.o
+.PHONY : benchmark_runner.o
+
+# target to build an object file
+benchmark_runner.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o
+.PHONY : benchmark_runner.cc.o
+
+benchmark_runner.i: benchmark_runner.cc.i
+.PHONY : benchmark_runner.i
+
+# target to preprocess a source file
+benchmark_runner.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.i
+.PHONY : benchmark_runner.cc.i
+
+benchmark_runner.s: benchmark_runner.cc.s
+.PHONY : benchmark_runner.s
+
+# target to generate assembly for a file
+benchmark_runner.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.s
+.PHONY : benchmark_runner.cc.s
+
+check.o: check.cc.o
+.PHONY : check.o
+
+# target to build an object file
+check.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.o
+.PHONY : check.cc.o
+
+check.i: check.cc.i
+.PHONY : check.i
+
+# target to preprocess a source file
+check.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.i
+.PHONY : check.cc.i
+
+check.s: check.cc.s
+.PHONY : check.s
+
+# target to generate assembly for a file
+check.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/check.cc.s
+.PHONY : check.cc.s
+
+colorprint.o: colorprint.cc.o
+.PHONY : colorprint.o
+
+# target to build an object file
+colorprint.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.o
+.PHONY : colorprint.cc.o
+
+colorprint.i: colorprint.cc.i
+.PHONY : colorprint.i
+
+# target to preprocess a source file
+colorprint.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.i
+.PHONY : colorprint.cc.i
+
+colorprint.s: colorprint.cc.s
+.PHONY : colorprint.s
+
+# target to generate assembly for a file
+colorprint.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/colorprint.cc.s
+.PHONY : colorprint.cc.s
+
+commandlineflags.o: commandlineflags.cc.o
+.PHONY : commandlineflags.o
+
+# target to build an object file
+commandlineflags.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o
+.PHONY : commandlineflags.cc.o
+
+commandlineflags.i: commandlineflags.cc.i
+.PHONY : commandlineflags.i
+
+# target to preprocess a source file
+commandlineflags.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.i
+.PHONY : commandlineflags.cc.i
+
+commandlineflags.s: commandlineflags.cc.s
+.PHONY : commandlineflags.s
+
+# target to generate assembly for a file
+commandlineflags.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/commandlineflags.cc.s
+.PHONY : commandlineflags.cc.s
+
+complexity.o: complexity.cc.o
+.PHONY : complexity.o
+
+# target to build an object file
+complexity.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.o
+.PHONY : complexity.cc.o
+
+complexity.i: complexity.cc.i
+.PHONY : complexity.i
+
+# target to preprocess a source file
+complexity.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.i
+.PHONY : complexity.cc.i
+
+complexity.s: complexity.cc.s
+.PHONY : complexity.s
+
+# target to generate assembly for a file
+complexity.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/complexity.cc.s
+.PHONY : complexity.cc.s
+
+console_reporter.o: console_reporter.cc.o
+.PHONY : console_reporter.o
+
+# target to build an object file
+console_reporter.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.o
+.PHONY : console_reporter.cc.o
+
+console_reporter.i: console_reporter.cc.i
+.PHONY : console_reporter.i
+
+# target to preprocess a source file
+console_reporter.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.i
+.PHONY : console_reporter.cc.i
+
+console_reporter.s: console_reporter.cc.s
+.PHONY : console_reporter.s
+
+# target to generate assembly for a file
+console_reporter.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/console_reporter.cc.s
+.PHONY : console_reporter.cc.s
+
+counter.o: counter.cc.o
+.PHONY : counter.o
+
+# target to build an object file
+counter.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.o
+.PHONY : counter.cc.o
+
+counter.i: counter.cc.i
+.PHONY : counter.i
+
+# target to preprocess a source file
+counter.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.i
+.PHONY : counter.cc.i
+
+counter.s: counter.cc.s
+.PHONY : counter.s
+
+# target to generate assembly for a file
+counter.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/counter.cc.s
+.PHONY : counter.cc.s
+
+csv_reporter.o: csv_reporter.cc.o
+.PHONY : csv_reporter.o
+
+# target to build an object file
+csv_reporter.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o
+.PHONY : csv_reporter.cc.o
+
+csv_reporter.i: csv_reporter.cc.i
+.PHONY : csv_reporter.i
+
+# target to preprocess a source file
+csv_reporter.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.i
+.PHONY : csv_reporter.cc.i
+
+csv_reporter.s: csv_reporter.cc.s
+.PHONY : csv_reporter.s
+
+# target to generate assembly for a file
+csv_reporter.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/csv_reporter.cc.s
+.PHONY : csv_reporter.cc.s
+
+json_reporter.o: json_reporter.cc.o
+.PHONY : json_reporter.o
+
+# target to build an object file
+json_reporter.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.o
+.PHONY : json_reporter.cc.o
+
+json_reporter.i: json_reporter.cc.i
+.PHONY : json_reporter.i
+
+# target to preprocess a source file
+json_reporter.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.i
+.PHONY : json_reporter.cc.i
+
+json_reporter.s: json_reporter.cc.s
+.PHONY : json_reporter.s
+
+# target to generate assembly for a file
+json_reporter.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/json_reporter.cc.s
+.PHONY : json_reporter.cc.s
+
+perf_counters.o: perf_counters.cc.o
+.PHONY : perf_counters.o
+
+# target to build an object file
+perf_counters.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.o
+.PHONY : perf_counters.cc.o
+
+perf_counters.i: perf_counters.cc.i
+.PHONY : perf_counters.i
+
+# target to preprocess a source file
+perf_counters.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.i
+.PHONY : perf_counters.cc.i
+
+perf_counters.s: perf_counters.cc.s
+.PHONY : perf_counters.s
+
+# target to generate assembly for a file
+perf_counters.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/perf_counters.cc.s
+.PHONY : perf_counters.cc.s
+
+reporter.o: reporter.cc.o
+.PHONY : reporter.o
+
+# target to build an object file
+reporter.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.o
+.PHONY : reporter.cc.o
+
+reporter.i: reporter.cc.i
+.PHONY : reporter.i
+
+# target to preprocess a source file
+reporter.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.i
+.PHONY : reporter.cc.i
+
+reporter.s: reporter.cc.s
+.PHONY : reporter.s
+
+# target to generate assembly for a file
+reporter.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/reporter.cc.s
+.PHONY : reporter.cc.s
+
+statistics.o: statistics.cc.o
+.PHONY : statistics.o
+
+# target to build an object file
+statistics.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.o
+.PHONY : statistics.cc.o
+
+statistics.i: statistics.cc.i
+.PHONY : statistics.i
+
+# target to preprocess a source file
+statistics.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.i
+.PHONY : statistics.cc.i
+
+statistics.s: statistics.cc.s
+.PHONY : statistics.s
+
+# target to generate assembly for a file
+statistics.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/statistics.cc.s
+.PHONY : statistics.cc.s
+
+string_util.o: string_util.cc.o
+.PHONY : string_util.o
+
+# target to build an object file
+string_util.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.o
+.PHONY : string_util.cc.o
+
+string_util.i: string_util.cc.i
+.PHONY : string_util.i
+
+# target to preprocess a source file
+string_util.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.i
+.PHONY : string_util.cc.i
+
+string_util.s: string_util.cc.s
+.PHONY : string_util.s
+
+# target to generate assembly for a file
+string_util.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/string_util.cc.s
+.PHONY : string_util.cc.s
+
+sysinfo.o: sysinfo.cc.o
+.PHONY : sysinfo.o
+
+# target to build an object file
+sysinfo.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.o
+.PHONY : sysinfo.cc.o
+
+sysinfo.i: sysinfo.cc.i
+.PHONY : sysinfo.i
+
+# target to preprocess a source file
+sysinfo.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.i
+.PHONY : sysinfo.cc.i
+
+sysinfo.s: sysinfo.cc.s
+.PHONY : sysinfo.s
+
+# target to generate assembly for a file
+sysinfo.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/sysinfo.cc.s
+.PHONY : sysinfo.cc.s
+
+timers.o: timers.cc.o
+.PHONY : timers.o
+
+# target to build an object file
+timers.cc.o:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.o
+.PHONY : timers.cc.o
+
+timers.i: timers.cc.i
+.PHONY : timers.i
+
+# target to preprocess a source file
+timers.cc.i:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.i
+.PHONY : timers.cc.i
+
+timers.s: timers.cc.s
+.PHONY : timers.s
+
+# target to generate assembly for a file
+timers.cc.s:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(MAKE) $(MAKESILENT) -f third-party/benchmark/src/CMakeFiles/benchmark.dir/build.make third-party/benchmark/src/CMakeFiles/benchmark.dir/timers.cc.s
+.PHONY : timers.cc.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... edit_cache"
+ @echo "... rebuild_cache"
+ @echo "... benchmark"
+ @echo "... benchmark_main"
+ @echo "... benchmark.o"
+ @echo "... benchmark.i"
+ @echo "... benchmark.s"
+ @echo "... benchmark_api_internal.o"
+ @echo "... benchmark_api_internal.i"
+ @echo "... benchmark_api_internal.s"
+ @echo "... benchmark_main.o"
+ @echo "... benchmark_main.i"
+ @echo "... benchmark_main.s"
+ @echo "... benchmark_name.o"
+ @echo "... benchmark_name.i"
+ @echo "... benchmark_name.s"
+ @echo "... benchmark_register.o"
+ @echo "... benchmark_register.i"
+ @echo "... benchmark_register.s"
+ @echo "... benchmark_runner.o"
+ @echo "... benchmark_runner.i"
+ @echo "... benchmark_runner.s"
+ @echo "... check.o"
+ @echo "... check.i"
+ @echo "... check.s"
+ @echo "... colorprint.o"
+ @echo "... colorprint.i"
+ @echo "... colorprint.s"
+ @echo "... commandlineflags.o"
+ @echo "... commandlineflags.i"
+ @echo "... commandlineflags.s"
+ @echo "... complexity.o"
+ @echo "... complexity.i"
+ @echo "... complexity.s"
+ @echo "... console_reporter.o"
+ @echo "... console_reporter.i"
+ @echo "... console_reporter.s"
+ @echo "... counter.o"
+ @echo "... counter.i"
+ @echo "... counter.s"
+ @echo "... csv_reporter.o"
+ @echo "... csv_reporter.i"
+ @echo "... csv_reporter.s"
+ @echo "... json_reporter.o"
+ @echo "... json_reporter.i"
+ @echo "... json_reporter.s"
+ @echo "... perf_counters.o"
+ @echo "... perf_counters.i"
+ @echo "... perf_counters.s"
+ @echo "... reporter.o"
+ @echo "... reporter.i"
+ @echo "... reporter.s"
+ @echo "... statistics.o"
+ @echo "... statistics.i"
+ @echo "... statistics.s"
+ @echo "... string_util.o"
+ @echo "... string_util.i"
+ @echo "... string_util.s"
+ @echo "... sysinfo.o"
+ @echo "... sysinfo.i"
+ @echo "... sysinfo.s"
+ @echo "... timers.o"
+ @echo "... timers.i"
+ @echo "... timers.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ cd /home/meinersbur/src/llvm/flangast/_src/polymorphism-benchmark && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/cmake_install.cmake b/polymorphism-benchmark/third-party/benchmark/src/cmake_install.cmake
new file mode 100644
index 00000000000000..82c2227b9cd169
--- /dev/null
+++ b/polymorphism-benchmark/third-party/benchmark/src/cmake_install.cmake
@@ -0,0 +1,44 @@
+# Install script for directory: /home/meinersbur/src/llvm/flangast/_src/third-party/benchmark/src
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Release")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "1")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "FALSE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/usr/bin/objdump")
+endif()
+
diff --git a/polymorphism-benchmark/third-party/benchmark/src/libbenchmark.a b/polymorphism-benchmark/third-party/benchmark/src/libbenchmark.a
new file mode 100644
index 0000000000000000000000000000000000000000..57c7e73c9550c4cf62fda16dab64769024aa4f79
GIT binary patch
literal 1058386
zcmeEv3w&HvwRZwV0)i(Mgz80&-iWCW$fS>C1Tkqd?HN01W77gxz-gLHn at F03WTvz{
zQ<6vy=Z*%d7cT0x*ZX;I6_o-?YY|9!G{vh at Q2|k)DoDrjR<Jyz-~Ye%dCi$K=_E}7
zzmNGf-RJDbTKlo~T5GSp_C6mtwYjII?X)9LF3bK^dS2DD_y4l8Syi*cvn9{6Ba4a-
zF^h`so&DC|8_)-bR$ovw;lH8TMThe58-IA~@2x&~iw54JfwySDLjxtR{;B96;qS=0
zj}#rLzhmsb?w+C}C*kky+U%l9`Fr>~MQ<PH-%+PsQWW@?xUuM{1Nr;k_Z1yAj=!V-
z&$UGd^f&s&qN6ACZ{LkYM<0a0cRX@`k^fKo=<=fR{FNScT9NNB{@I1$<%!OgwpGnN
z=Z321*pG`7-CaG&L{Dh8dRm<7?48 at yxuSh#q;+{mQC6{<_D<yNZ0-nE>4}c+L{DQ6
zVpc?$t0_5SRdaU~VRby-vSv*v6slU at +}qv~?@c1t%4kbdG8AfQYwn3Bdz#ymz0sCP
zQ#1aHM4D#Bo02m-61}}qJTexq-OcSi(FIIGR3uVg6<Pgypa}s@{TV0qBvzahkFQ*_
zCXQD2cA?4b$+hv-mD&9fn&EWg!sb;8yN;fI_GKXSd_CHj=vgthE5#n}&4uLY`mBs&
zK%6~4k(}SrwY<3l<C#pXNzR!i<C4D)GgnIXcuRKvd{v&gv^Oyq1KQXnbP;JheL+ih
z-dRn_=42vNwK&n6T9sJRz6yjO=;xpAB}cb$HK_B#R7XdwYh|>vH`(0Tl8CI1)N~>$
z-qE!Z&?j2XL;Y5*W;LDL-hD=UvaJD>*Ss<jS-fB()En6188+-lPfu6RWI~?Zlt at NF
zBhAV7u1 at r5BGMXEgBoOuH7`$eObTvifM!Q~Kbz?3^5b;ULnOLIsbqI5xu}~p?2RnX
zu3lAWUaW3 at Q{3T2ptg>#9-B6^Gta2X&8%ifJlVWF)zRD|yvLnzRW);a5+J$y#ERxr
zN3y=Xx4WZxt<B^7lwXwtennT$s%B at RWLG9c;<Ny><Ck`}C;bpZ?00{jg-!7qr$7Kq
zhl$K<@4(2~UEyOD0hP_l?gxyD_y9)^oV=?-=mQ7r>4~1 at UA^Fp{%)vN!?xN#I-$jh
zmF>M~V?$z9SI^pp=1$DJo=78lC^REGF1tBZGwhO$JzXo>I{?93c9uUjyR=K5)lm#u
zJGl7;iKZkdWmT`g>Qyrun%6E*EKVfIiOC+iQpvie*y2cgW229~g~Gnx=mo{+8NSeL
z5tbHhP<;9^*EF at IlC53mclr~msuck*?d(akbgk?}<y-4|R)V8;CVQP~H6>@SPP8Pu
zdZHdy7a-_oK*EcRt%6*&1<k|?Tf)avcp}mt;+`TtpehFfEw^qimvHG}mP5<vl}?Z%
zm5=>)Od;h9!|&>0j<_3V4aS1t)FBi~b+(_EN<fCToD1!0)~XZ~g2?PtCnNmyX359d
z5Z*n>1&KsA`^J{s;2}1h*;?8}*h;JPbT!63R2^@KV=8u_D)IKt-b7C_`spU7L{={h
zLka6li9QLnvXk7oBi=6J4}{)`Y)xU(PWPfEam at LqWKFz20fn<`ZM4xd4aOL-$m%8W
zrkN~^X4J$NFNb=XNK8zR^=Yk8cq`*gi4M%lP;WBYR0G}Cr{^LnQZ*ADuriUf8XvcY
zs=KQ<vKS4V?3#JHrP|Urp at RFWT9;c at MEyfmHJsh6ZO~D at UE7qbnqiMN72aO-zfD(7
zXsg}zF4s`gVs6!h#AwIj1 at 6S@z#Q+0MB3Xa_*~iyEos9%Xr-zkGI1`1qKfheySeeI
z8Qv8 at L!!Ai)svtsP;zuXve0Tp=>LUQghGwYsb258!b98^7ptDv-r3&Umcz!}adij4
zFAZ#wR8U at r+1l*UQ<wZG9Dx(a2Du^$#XUmYkrJSs&={1k80nSXg0>1A3WIp&HLq&#
zSPQPMVtc`A3*fa?<dZJ11-q=80ZQ#nKyb#B=Zjt!Pjs$q?@UBj#a7Lzio{mUu9}Je
zXN0Tye+d6o&6-_3vu4KZ&@8-!7&EgfJTpAIx+=^V=Bt`LV|KWzX7<cVW?}5i%BrgB
z8I{$u2r^V7|Ane%&X`d(YX$^JNM?Fxyr;RdRb(0ThTgW+iWME;<NJ{ytK3<+3bS$*
zyJGR1rDY<U>f(!*R8G1S5JQWP>F1MA2f|4K)8?dalz6QIc_db09oUkHd!zuA4BNN_
z=~wN at 0#^!1e~cj|kZvm;p1B^HUDw(=H`SZ$T4mW?Cd6t{x$H$usM1}#L>jpmX`Ht@
zXN5J}zhLgbyo at KI6ZQHRV>A6(VV#L5A$;r=Og8=*ISY5 at Kfk$WRjONx`QclOz~#23
z5lUWnB8lY}tpeGwt7iD?(%Q2&-h+iocD|W83-&~3^YV^_O#QA^(4Zi~I}**SsjX%g
zol)aQf$G5W8E;;>vL~?;HiO=HS7*msf3dK?SgW!r?5A8PryQ1%!5v$bGiJydAIlO^
zl>@vR#zSZ^$~KY*O->(=Y38e%<!?AigBp~#8G+Wg8d&dQiPf+ at t&W6YwTpM~C3`qL
zGR+oET$tuc+<X~x#I41?^T<&$_Wdp=Rzaq^0uEeZc0AtN#WthW=-%$N`;{kNM&K^Z
zyiJ6zZEFaSr(Eq(s)`jn0!EM3$ecJ7P;^&5BPp#8Vpq(zl7<tsHI8W}Eu^HU1yxlT
zlBVuNOZ$rUM60t@?p2CrZu27Ozlkgcvq>W_)*ORap4uJ6Du|^jpy36!AYbt}pvD-g
z>`FsXUX#R1VipXCOS{Ev99KHDk0sg}YnCLMd+KSgqMBN8-u-2@@$WC6*s&Jp%Qcx>
zGwyiX>NggF9LlgWC9swYTHqDFmE^7v0<eV&#Fn+Sq{c3np<3}4|6CBXw#lu6ban^V
zt5{X|*QtogU8h!#u{x1y5V%e)usWoXlx09Iu!vBrYhCq}@{!66n2&4;y5GG(Eb3>q
zB-eH)u#s5<QE`5IYoaqEW at 2wr7)hPYV9)1AT6{KS&%n=1b+%ADa;PeZ#6?%NbH>}S
z<bg3fI&XOkwagmGt3<N7y#s5ax=z^FlPzsX&0;T5b`opcJ=jQWIo4U$AH)z$Rt at o0
zmT?^`p)di(Tbq;3An+P&)P`!}mN_Ec1+_!=p}<L&5X*t%Cr>&EO~gXeZ6en*?VYQ;
z&gGV$w}p#jYz{X1H=u{T%|FOJ9HK5WIXzqz=kD^ji1>}eJ&Em}6`#}7+;VOr`NlMT
zBIw`1)+^ecw1FRQ>xsUw*29v})NL)&TI1cx9xx%XN at Q`)nem15>c-~SSSvI~S4U!A
z+g4RPhMk;vcUMPy%i2hlcRTHM#_KH1UT3_OY8&eyaBo{a$}qnH+}n%)AaQS^a3<0l
z)I=NqL2lw3If^#3I7m%YJ!tWxH((UK_zz+eZ9;h?bX7HiR3;;`EItVA#zyf*5vmve
zI7V?|+S(*h>4cCU%*IXT;ElU+M1HUuH`$YKT#d7lAI!$RVI!yJojr1|ul6L<uvK}^
zygqu=*h at s3zOghvFna<<vZW)^5}5_hp%nKY4hGDFVXd$gJ_?!rtfeQVqkw19J1Pez
zI_h<%Y1^-=6)srV7gWX`8tbs|TG1u+0P!8>s%%yBxrul$tPP1)cowh3#xS-tv3&*7
z!7H*ZY08t8tY~Z-s(4$pC&qN at cP*|??l)*1r8oihIJ<h`dcQvdc7f{8gqZw(D8JB&
zH*VY_0LErdh2kEM71pbEO;Xb*g1!Krb1+(OFF*_E`~zlrmY|(fmKO-~V0Kgi<1{H9
zmBYsmP>8ala$p8>(7>}mV7F{m5XTM7KPhL2g!RXhZP>qo6AQObWUHOSJ4?Nb18Fnd
z at k5nr7oK7!(x}cudGr`;ptLm8(H#3l+(?Pzuu449+tLi7lxSJitaPuS*5yiw5YJ-R
zJCfrnIBPC^WO|%!rkpbno;@iilZ_~MLvhU9mK1Ya<nEbTkd~b88BI6Ux9RLA)aQWo
zRKVUCbE+MLWUTx?v}0u*XGJXgWMEH>kv5Yj3uT9W{0A$ubrZJ>XD;Q at C2U~lJC@{T
zt-(PP)&Rcf(8q1Z6;S^8PkF-Ag<k#nDmAOFyBqFTL{qcE+6j%$Tiu8q=P?SYjo?Mu
zWxW0f`z`B7SXg0qJ9$F5-Qp8NADXqexpQTr0cYIWyF1#U+_vZI*XoA$z;lA`7~|+w
zd*>N&<XhTJ-*f-rK2OF<=j35;#OKiE$%Rv1uA^VxdR0{_uc$i5|85c8?|jDvU9eRl
z>oi~C1uWlq91d&25zo1eOQm@}HzF59D1-y8i*XWVKiOs=8 at 9kx`^{K6w+nu!i8VYS
zhuJoBPW#G5dFemo&D}V!wIhGdDs?IV?oT|jludw;NtN~qk|ekO<DuE!>~or-*CW%+
zR&_)Y4g*{rMVn?|nziSjE!CK52gr&%J{NAMS3`&iTp5<&EZ{-Cb8)^Qf0j at sz*wwG
zO@%;6A~HF;!T^1QP^HA;V(W-vmcyH5MX$~FZsFm0dm=jaE}We0=|K-8YrLZwuDCd_
zfIYwt<)}^#V!R+_fo6eJJ>v3Z>tKm3qjM8-WM^o$eP9+RuY{*WIy&;s*%|2KF(!Ux
zeZmjLBPc at ZIsj3aqAeuMDy2L*_W^i!Egkt%P%&q*Y)hziY>|SRb9=&0$SE;Vnf7{|
zU2KX+t)ZpAs5q%Q_aWFV4#<<!Mhi$DA6Xnp+P{x%N0yH)IxRo`JZJ>K{t+RY at T342
zdzX96Bx}f0O{^y7lZK%XOF$yDrdpC&1%c1o$z+EF;x^Eurn+ijC2u%@i+y`b at BWYS
zj9+P53_$=5As%hTz_((2;P6OyI|r*UvO>lUr&_a*?*u8L at N1;{GyZz!>+ZRsNd_3g
znZ;GOT_EA~0Ed4fRaQOgkgwgr<V(Kp%_akjf#e}>@SOdVc6;_53L1%OC9`q7J73p^
zEG+=%x#o7K{Odn=iiBnhSGIHjYK?GK6{sH4c85INn_3QYC>#g(>+8M%OdP~m=ru3s
z8JQw;F|%^{vS$cirz+%dN5AS6G%kUv6Az4&F;f%-(uJh#pDuVHiA$samgjPu07F0(
zP8>NaUe?g30lLHxSbdw-x$SkZRn4;1AqRexXKZjG&iL`Lo77x#_I1K>PG{cdupgJF
z*|3##cUdmK9)k)_f3Hcjq|~(sV;>eLxsIQ+$;d9m$ats{Cp19IjLcPG#Jc5 at x2L6V
z%8FW(AYkY{2XAcK55&VFu&!*5<j_h`fsj+c!)yveHnupGOBxE8QGTiCR%0w(Xd;?W
zK&xsnFGZ)00w63Ij<CTYAFvC~JN$=#J|-UuDW!bB`uJ?gk*xsPw=#5KhFVCn2h8OL
z%7_4kU(HHelN(FIO_qGK4-u#)+VaSmEm#!s<|tT61E!KEF at T4wo5Q@mkwG^{Oq3b4
zk0HYBo_`&1JMDIQEX%UYD>Xcp<>vFPJ3c&&Gb=xLyFB@^_t(D0URwrZ;NB|C)}7X!
z9AjrD^OnpwFuEMB&D>bbQmrTb>>fD1P0jYGbU=&t2mlW|FJ!!M3V*zMPCbPLr{H`%
zxMch$tCylAu|xRJIyO#Bucor24l>s9c9wk1r`k5xOiX=O1Qbl1a^f2sD=o0N^s3W1
z`6!=zFkaGx*S$@g!LWHernz;sx|wc_N<da(`v<%oG?%+eRMWe*GugZbCun%!Coa21
zAX!|2)7+653o4F+O&qGa;>J26RIut5nt>*tm%{EAkAe2UD`Me-r5&py=w7?4Y?_|<
z{F>l8B1Arf`@lNl80q$vosm^oEzcF2b2$KN<&32(I}Vn9;h-wSlRq>I^>3F;k8n>W
zBp&U=o;vzSp&*dtwid|dmX<_!E<qOr##6J_)T&k19dDklECfmw at 8+=Ems*}!)7^tB
zLLB4gxcUm-LpiXP!&qzGmp0Ct$vVxd*>aq=!Hu7hRle at V=uGG&j?3(w22L1MuB4w3
zDEL)OR;>tX5^7~R0!&7&Y*3R_t4ZoB%OxbBuL_wt*cWi9y$Abg%}MC#vN?7Dgf4a+
zuyBBIw^(s>)Mx2zf!2aZcW7+>ZYMY$Z70}DR*PKftIS)u7HaE$G;byc(gDvDN^)MG
z<uEFL-8{mnU|p_hwz`j4tTK5Ubij}&sTV-FIlVCPezj)RBts0UBTg&VCwM)f?5J4_
zbC>#plXLs5aE*p at t0lz)c**$c=8hChqCVDNI4nxIByOwW)z(TMf(L`Md*$Ea3PH!~
zIu|$Qh;G^m&x$A%IvSI(!l;bH+Ll<;(A;}&1SW#nan5(~x0)<?kx&(G=cZar)V-?F
zf&FXANBg!^n1s7+`8cbUgJo})2&3vw^|oR3a00P8wI=%M#S6rO;@B}gEDP?o)N`5=
z=XqCSxpp+6<d%-EPG_-bq4jEW1p^ah&u^YZHB__wY_;IQui{F>QX=GPbBn=7)oD7=
zdStb=)OF_JWC5oG;6VYdTrm$K at B^&5M=&<yY67dv#eHsa`hEWh4r&V~q5sEjfjVAr
zKm$wzlfB09jDZ-ACT9=|z;J-0upbPQFboA?@U~%c7#znwhaJ-<g8}z2<Vismb`WtZ
zUENrh#p?^)-N`XAD8b~{;NDmhUf|B&VqWYzPdaxY_SbPG@%(sGlm<WRN at B0Lf~cIM
zmYO!#Drk?@qfICm8r)Db_7^qsZBB_$Z5BUE-ZEzY%kJ$gZPw?Zlcl2A+Y7-Rvq1JY
z3fQ8-4hX3;sKW}Dl`}lH0Se;g7Hm=~MaSuC_XZeSY@*_}!*KqabS7v6nD|XPUW%FI
z4zN^uM{hVN9bhAw at bT<}+yP##?4Wf3k-Ql at z%SJfN(b0TCf)(wv!8FyEq-O$?2UKe
zx?|k0+Jnnbo8g6!v)k|{uD!ZEEZ)qIj-c}Gt7(1Kalacb_=5jWd{tL#LV0^;$@Dj)
z9|Op^!D8XE45c;qAGR&j;H<H+EPwx~O_51rH3fcUj`{x|wLKh}))l?~xTHmU1r1Qm
zZLpNe+|EAE_vYkQ;_}|!8$Z9RrxoY<XT;-{<;r7Jc{6gQ8Qd(k$Y11yY*%rs5+6Ci
zzVAOQ9m!Ul)i4f9d^xV3Zf)-2F_(W(0m7*bZi_p>aZNlvPL)>{zR6V+D4zeostIcU
z56xpyf3b%bL`iRMt%^<g2NV~qHrei&;sWZTb&$KcV`W#o9jEjTnk5ESl0f%icq0e-
z4 at V-)vGt?JanJ+F_@*i~@g96Xvjd+ at MLayKa0&#TSxC(~8nq-8UqTOSte$iIjb<r0
zD>|B2DrY0OnN(TZO}6B0RCh<pX2_UZST*(*R#!&{_E5Z=ScQAZp^<XQ{eHH$CJ$Ex
zzCt{CXIEKNh%wt)je}{Oz5EbEyt}6z-_6BG#bm2)T&+|da9Q3+?rvUz_B>kJ{JU3{
z{hga_l2(AF&40XLaw-*U1h#Frmdk)F(EML{Luc;4)-73wWhUst#!YOlK5z_J{Ozz_
z$2Ns+r&x~3HWQQ0_V$q-N*=X}=la^fs(I#;c;rl(hnQ_}g=-O4INlvS>9ynbz?-vn
zmUqj6*3NY!oYcOXwAxkLUXGJqy-66_gV=eKQoA>G=N+V3J4ux1)(-OA$4ljurgaV{
zH<2eUa}oh$!a_%(vp+;>*X4j9N*%|9SjfJUs+hg&7+A4_z({QbjPD}`6W#iOBsf4w
z_8v<1&YbOKH=(}wc(SRE^D8Ek23`77pdVl_*z$RD`V%VypP!@MVvj>&pq?Tc$o at 4I
zWRpG51KP<{w?YM~DhI}s6)AZvW(DreS9u)4d3XmWB!ae7C+tI&r@{6Nn7H<Ha2jma
zYqiy2o9)=Nbf9xHm;fjCIb_tu8Sh+8HmjySMrnO6g^OwKtjqP7SPbFpxcYvL2XMh#
z)OiNlp5$+~fwt>q5A?))(ozWydQVz-4nQS8cvFVVH>W2HCLOV8+RVpY$Jxh^oS`Wg
zAh!##UAt=H5ai?$z6JSt>#DK?gyh|Xov_EK*z4Tgg$cufe!x>^v*XYt?L%qc7P)4n
zpkr(l)~CPTcl}P3aB)A$0kt&nPMClj8fM}v)b14x+&~<^KJGa`?)$iN6kjiw1BtW~
zVGA$P*wp3R+zV9{Ll;sEUM{C(X9b*Aud2$fq;t{3#13c{SY3Wrp4GLkScdNbE_Yd@
zP6CX5w-$>?)5ceX7dhjEo%<yoIdo7Ms)>|q^7OTP^q!h1v}1P|d`aF?o*NcycQxlW
zjvP4q&5ZWHzV~oj<MjF?ZOYPr#&a1mWxx89CBu>fhh!~24iJ*9e9CM&pw`*C!hu0j
z^^q%2gb*j*Pd20j?<du=$*NQSej3-k;`xbb++c!xXk1`aX9tn?xWNS1=0FT5*)%i}
zNRv~i{GBx3I(cXab9Q#JjmH$_W=Qpj1Nq&(@lJdsyGOoxZeNa}QsIs#`w`YIB`)oa
zN9E&{JrI7g at EO#O1U_Z&J<z!tm$dMn7V89O{TV009quGtj<jY?9AE70?ZWL%xRNx!
zx{|a1bhl0ig330nOhTodlYLfK9Z0prtpneYpTs`Rxvbgu0a^RtqAT0|8LS4n8C;>A
z{UP1ii)G_C7vla3<Y4ez&a_y*d!Oi;(D&BeIv4bP;n)AJc8^Nsc2ad?b5CzVlqUN&
z<cTS at m@t95bKXzh=j(t%zQi7gDO5<wz)qOuD2?jk;Lwcvu7#cpon?x6uFZA3&tI}C
z)QAtIw6`P|rdAO^@4`f)HPI?=2{^_&+X1S`w^w*WVUTN at +PYF5t%^o-;Be3m3_*zZ
z4O=v at q)S~nE)91HJAb=FTp_jhwyC?a(Olmh*!fF_(dAaD!m-Upp at sx}(eNSX&gPXk
zx1Sf^%vF*PhB}oIbXph<)Bp!=L&X&;34CdHKUijWTRF#%hxaqv)L`@C)rl5$Z{PAn
zXG<IWE6&ZsrJSo;Y)0trdU;y8- at -XeG5>hU4oSXMwtNM>Y6dReTrn4ZkDLJ3P2;N)
zxTRXYZtmIuY<3$8qkw$fXD#|%#j2T62<cfDsp6U(7qYYLpX>@vsCxqq*DxT_C#itF
z6aPhhg>*`2R(;o^PF&e;UpFse9&0SOaKPo~RC>HC?>t$khfab5VlB`o4VI^E9`fbw
z=gYf#lDhgHyi#{Oy-+m|UQEr&COJ50f88FIuSOW9aRUNQvEXWQe(7p#Wig*LJ9wX7
z at iZ6QH@FcOWOF;*p4ipV)zgSGlF1d3#Z6uC<Dq<(SepBC8lA-~_gmbLZdSBcKrc~;
zfOsj^*u9w5CRo{KRL$#wDY|ntE9buo5<)t)yd&Ys(duh1ZY$<-P)`nP``<JEGerSX
zxZndQM$b^Z(T{AFWV0}O^7&D!d=_3$K1`W$yBTD+W_Gl9o(nKLEmR%tUDA_EwykBB
z)8*cd39E75K?u$1>gw?HpKR at UdT)kOADPLmTcd9Sa3XED{rUpr+5~#if#xirYT}ER
z<8qQjBKxk5LcI>H`+DeKNEbsGPAlV0_?SUUGSr)lHq|g{W(R!g#5<Ab5fzb@?Mmzt
zTNeb_U!&;4J*Bwbm}AQA!#AR4yywzWvo>&uxTktz8MW#KS5a8i<L!{{Jl7{pd!wr_
z_Zq at i88>LgJ#~i*DEd{dndBH%+g+Po`TaG{@mlZ@{>%ld8=KpEdOdTaDG8tC?upS8
z?i{u0g|q{DaVQK)q#ao)cq*V4ZVM7?Wwv`~-@&fO*ev{w6@)XKl^nmEVlxj<xA`*U
zD88W?P#E|%nrwvtf->kEH9qr&@*b-6UF_-4Bu+p%nOx=7R*NTOg_w|nYWLH`3OhX2
zcKEP97?2CqPRJ=S){WEFjY<2viZ<`pH at xC3xRael)FdnFZg*M at 4}{NeSFGM&>srOp
zDu at w5rIW8d$QP7kSK3}Y!bf{Q?e!}W&g8L4Fa$GOH<V{A%b>}1u4rEwX<hDHY6l>x
zfiVDv)C&^hQut;8LvL3H7cD at U=n27=0x_h+B#Z?<)tS5v at -@T{$)d!p at 9Bm7nfwga
zpKjk)=wT)~S#k}a{w$#xs(ENDHgox%mEdOKV;(BQewr4tz7 at t10x*~4g29rf2)XBe
z*&wGwLRHfLC{f>>Y|dL#0f|~>FE0J<wibJ1be^yOoh96CWm&>j_{8NaIs+Xl1_ at U&
zgXdV5poO9!g0`d8r_?)D2{%EgP_U at 3p0KzdS9Nf*i8L^oilK)kI^B|^!@~W*(MhP{
zLMNd|!t1QV9#B;eM5#qvZKc*FT9*={oh>~HWz>4T=n}JgUVI!2=v?MM3GCc&5NJBx
zVb>GkY%af|vk^!v_zPa%L at EzstDqj5fyu(HVW1fBX7I6~?83RKqPJ*$F6;LukCT_?
zYrz3>``2GL&lU>a9?2C5{#0)#OpunVKHaovp-rHH!=IJIKmJ*X0rEdPJ(mKq(kG at A
zWq~+Q<slo`_{6(+G_v6wm<EzfAz6 at fNhBxPQ!9rzW3GAjAM8~~02B9R%$eXW#A**j
zS#S5w#Me-{t>-c@>)SBd`kD(Ot5TuLD84h?ZtKWdOf_GT8X8kYg=tE4i-xSW6%W*|
zm<ONr^~<a#PSlV`wF>=`kNp&~ZyUU6S4hc)f!nLu!!cuSM^|sc-m>!V5jZ`RcV|m2
z{GHQi2h>kv%eH)d_`2*f6wnc3+?bq>C}dVNH#wit+V2DpRi5k4oa|{Du!fy<T`5<D
zfoizno4qW}&E}U%xjC=}>f1XHXizRA49Zjxq+CgtTc=R9tRCky_qMm#Ygu?RbG=*1
z#hA6aeG^lAK=;`74$Vr)xAmH_{}ksf5Bnb at yQnqj9>FyR9(!OtEG!^5SKy(Uj;nxF
z$ll2mx+tJHIcZ(%=Tp7O1YAtK-|sG<Fqw~C*!wN<Y}uYmBe?=TD9_j=;_XPEao74P
zfy)?tme>G|ZYCWH)kkaLxX_s;{VXG%k8{lSmS}AsZ<(fKYkgvM0eGrhJabPkAb)O8
z{(odowuY)2w^}56aCxKk`5K>rI?x=uc)>&rvaT99mZ=xa&m~6J at -lw=uZzwDFb`)q
zc-HO7+o|-l!tECSrs`V;sa%6psLC?`lRJ#d0Bn77_Vv~$3ufkFY``h67F(3T2;_G#
z3F|5N^>HaiNerLM<%u3Ud#lIFIupK73q(eHX3hcl5d?CMiQYBjvV<D6xv3i-=-}@Y
zSwrxmorPGE&T8Rj^YEdfn%1uP`R%QVPIdXNiz!suv=*X%RkU+O7k50zWmEH%4bW!1
zsg^eB>2$XW)zB1(K0LR%r7giHhf~?A>bT2I5MSVMVr at S`2R*miUSZIhSka8D%Hp_W
zp5J*Bk(ApTxgBcvldTKpmazsfYrPbj1>e;cIG~`Hm-fO%HfMz}bBUa`$eSLH at so?#
z`bjKlUzNz-4yRW6dUKAVlTR)i*RQIo%F4g&NLM*-?rw+s4Yn7tLwQn5%Sl})dlIS2
z=S1RsC^W)EPi{i0v(t%g=~@L=)XK|DSHKmj*UH_Z_B45crfh23(Y>qvQJ=@@6MtMc
z3|VluQJ%C`(O&Usi>H$9cKzK3s4Qibo_<o#>i^j at XG%(FR&{lyJT5!((nxIHA;raq
z7FoaIqSK0s?H5ltwBQiutyZ3Di+YOAle{0qJIkDizYkl_6$q!}?<4s8EdI{IAM>1y
zze?*lgs{qbo`G<t^*jsVZ0oriVU6`1M)(Qq`4ohwTF<8;{FL=vi?Ggmo`Z0%^<0lI
zVm;48INy5K5k{@&Pa|AlJ;x9>SkDU)F2Y|U{yt;HEk at X6JugAH)OtQ0;ThKRnF#;I
zdj6ah#;tIf6*gPpaw}{@*p5H@*LbGh|76L&ckx|Mf0Ds&|8r=cL=9{2uPv%Oqwe&&
zrFBb|HlbXFZd_Dest at kd29BA6@@75W%-U(XQD0u74~}R90~mNlm&DBOX$^xfY6CB0
zoEywb at Pblb#Y at zTPtyl~s|`GW at zc$7@$!^5 at NT@s%mlJMrVXsbOM}@_jyEJ7A%&JA
z-+if>nf0ix_I?zcQ>hzE%BSh+?qbyf^P=);w=HuT)PHJuQL;@pk1f~D3sA*l%Xgo=
zZ{I!@F$eX&pjJ<Rx=}Z#l<VPplg9%hUa}$b&Agxt`6`hob%lV}jRzD$Vo3eR3hn(M
zhNu}SjhYwNM$=0zkPjq}Mr5N?Kcto+6 at XMqrIR91W5zQsRBhl`>5q?<XAY4%Ux>QS
zZA5RC>fzDk(YlEjx8WC}hI0W}rT75r#-j at G;8V$!y0IrS^xD3CsPq7b9sPJQKt~$U
z_cmxxoskOA5gRlfY@}9Cs5;A_oq>wRjK?#x0X}M8ik_I?h_O~sqvm|K!bn9=%vVs6
z;)5D96#aonlB=S|qnV%lecwL2zEO-aK-ZTyl0XFbJE9;sFZ7Gb0lvOm;7ei-f+wU$
zgt}fqbsLN)Gye)CQS%bOo`-6G&aU=6FW^f6cb;8sJY;o7%=nwt&%aHUM2$x>Zv#Z#
zjA3S&YthGb7`}fIuv2vtFDOjflQJ<gSzZF{4*ZWtO$Fb{ViAdp;{@F}ySyax#aG$w
zf0JYzf9f&f1&Qw;FXpp%IDl6ThaayyB!agzv+ot+-RH;Ke^<p>=hU5DcTU~s>f(2<
z7|!J%n8)A*4`Wj67&pu>#XrDSz(1a_qDvkA5l4)}Ki(s(z~UciFaOvMT6XwHbr%2l
zPrOA<#XpYPbGDkVS$u({>){I^dCYgk7qo$mGD{S<DRG8e2OXB&Mh>nzU3kHFfQDQE
z!`J`-;5=X~<N_X2VG(DplQ|9ErwzP@$f)t_%u+SkQ2|V6&t&(N_e^PR;0vrDruB0m
zWT{XVf6 at lu37DA{{3m=$a>NXG0u0`U at +(fV=a)U>z5E~tyJyxf1YpkkJ~ivn^7)nC
zS???Bo!gC^+b5wM<qYRF3S-vV^I98d1Z>Xj92jox2V%&>>3g)`R};uPeRImX6G$fM
ze`1ny_F>qv3op!_fokYn0H5RxEX~9S0yDuShQZ&aKC5TX1WwVc40pyTuk5*JciHCL
z`KPeD^Y6cjbz0_j%==+`et~u%qIKhiCf#_2f;wg{FKN}yDIcm3>cBh;jR=>1Rb~*y
zwJ}GD>}w&iW2Y>erVVVM at E)x#MG?<<P^>5kpFI|wy%6)g6;Vk4vY2^cS<GNR_P?fS
zm;Vr;@Kme~?7<Tifx$cYfE*Qbwoj=n`is`pR9mM_T~c0a9vU?|!2U*|O$cf{Oyh%Y
zUO26e({ONKvNUG=IcEH6_fez?AOznyx3s}{LX?O3GQ-b7d!SZ4Bqir!bR(*P|3W at -
z%9&{3^?b4#2;gd(p?SwE1;)grvst>dPB-SFVW|q;Y*3BU4X|_7!ha at CY2gugk`{g(
z4>6<HX<(#Qn>x4Fi~#3cX&FLkn1L3@(V`0>8ZIV3OloMJZalL4;~-;TMeA09AwHGt
z#vF;7s%3*GqV2bn92CnjKtiZnx)$xY5bOr+38?3VPCc9LdS33<vzi0ZfO;;d%`^f0
zu<+zo{iBL<w88VqkU`2ZW0#k&JNzO#N-emkDDz#J$VJ-CQ-_)=GcU*+^ddbCnn3-^
zLied!n at jMHe$|a8usDdlnDM-Bj7p+RMCdkUnIAgk&Bjs;nW6`>%6j&YIcHkbSjyo|
z9%u1$;|`G|gCnWGN|Ff`j}qlr<R>X)-j0VA!*2hPbV;>Q<1Y4LG<{KdrJ`Ucxn*jQ
zPjfo&S7 at UQa*Vxbk+JmNStR4L%WE?;!3T!5n~R6$R%X8L)SvAS-DkH at wS1Jl%wBMM
zz}x%_%QBy1U4>ukqZj~mZwID3`K0dek0vCHr$7D~`K3SJg9q>r?dHSlhQMPpAI9*n
z7?$y3Ut|rKOz|j`WAxDTG2=D6ITq){{Lg$qDp&+~$JY%ZW2RK#3p}^|0tlt01NdSA
zblWe2AagA`K;r(Qz3*k@&#)85e!ep&kMtLnjr)$pBF<XKM2%NvEu*^&jMzKL at 6MUl
zU_31x1x%z8^EHOGiKvLh at 8G;XwLEIBQj3)zznu}_S-P=XHy+kG6E9RNoDy(3p`w_v
z7jsvVEHKZ$4by?VJ7(+w at gYB!N5>tZBFkdNUmS!c8q1s&&?Tnr4r5>%%v24k2;rD0
zjfNl522K}X9p#nU`}^28x_Mm at rz#grcXMrq;x*(hyDxZ=1VTL?YY+1rXrNes=s7xx
zZm&PcLoX2s5AV56H&F}Js|FRWjF~N^4dEBGfehvV5rFA*AlZ1K!T6I^kC^!_)&sI8
zS<j)Iw)^E5D8)s($I77_Kx9%a at +;=#YqnlO&Hrst<9B;*1wXpAjo8v(S;GKzFV)RK
zd3IU#t+gskqbG|zd$LSZSt>kP<k^#D7yB{&m1h}Ph~(LmWkhA!>B%C`o-7+wmQ9{4
z^6bgdr?L!tvdFWW<>F-+u5Np%x;<iv%QY-9twC(`rj*GL=L|0fAI)0If!78eD?#J1
zR at K+t-AH<|QAWd0X at j4_tmBARHW+`^vAn{__f~>TlbUY!)<T7eO at C2l<!w5vZY?ZD
zuZV&kW5ypdHMTw#GhV@@0NtEx(akeZ`q}xM0i+wqzo#0E$2|lyR}suTf0+=$93}+w
z7QJ9}Cyic`%Ytd;8EsI>VT>iTZ_)}@Z0CYjp0a7>nb`EF^UzAlqLtB?L2il;qhWx2
z4z#o9I(vO4{OcAq`TN!6ALZm%&o<ra<}GUS_p8aTviK(dEo$=jtI4mj_$L1?yJSxG
zKPz)mWszqOq7jv4rzeX%d$Md$SvGmH$g?L)pUN`q$s*5gmJ63*{fEh~%sJk{w9G(O
zig)t6$}EjTmCn4@%~JpjbAL2>HWD!J at AS?4N3_A)U*f!nFrkPc^VOnesuuHGpZ<tD
zhW4se=KCK}1hY5uS%e~I6<o at u!EVIuxt@$<T8`+jSwI<C03;zrM=lH4{>)n}z{8xu
z)D+cxMNy3sf<CG_NFpO23xK$=SwNX3E->1Kii_WXL?|vErE+4k0Dx31fTV+kSFcBU
zJgp5pYDo`Rp*xT)(qq^|JC?q2#ZwcaowxLjgP?EZBc7+V!MT>MQDMmsjCY~(<C|i7
z{9|VGUp>SFkk5MMhli-zpn+z}|3*WP=<Iu-Mb|W#7lYlcf<pVMHt<`Ew6GY3*8U82
zdo0iHj+x(6%Is6g(?k_NX%A^j+4sOJ!B)q%?}3#<EqQnk)~0W%v6HBlK$Hckuup1(
zQIHjf8QSIF$wo>z&e(fWA`ND`*!0(OMH)>l?}-{uW#0X~hok`RWs=nOG4s at NCCOT_
zgo52E{J1vo8=;vK%E^sDHvx)lQD#D%=q*JSx{q3;dUc-zT=;y6OWHuHf!L`PW`waM
zgTOKu6!Vy^$UYI9{wJ4W>_rbL2Fw3FnfsxtG*FFs)n22MtH>ICyHLo-0M%ZbCr^_l
z`4fMlzNMDrG4o=ukujI#B;Uh8&txNSDa6o>J*sjowA)5oRUV&0tPOmfE8u)e at jRi4
zkHP9wfKDvrKnC&yXdewQYr<N?bu>AV(84XG1wS1;`j|}z5iF8P2cq&vT=m`B(6KjM
z-lBtpu`v2fUK;o`Xg~&%iy~|hCCdX=Mb2(i^8MV2`ajSStW}n*hTdkw*s~Reblqb`
z_bR@(K_S*n4+qMug_h%mb2HyfMUR<tA(!sty35}7G3S9BVe4n_;o86!E-m}_PD#zt
z&9|+qp(l_w_<cm)UWWgKm(c`k+^rtdhat9Tdt at 5+qp??EJg6HVWi16h;2fGt0nUnb
zH7&iVbNkjDvO1M;t>}S(00e;25oqd>8vLQt9vqES5RE<>skA~}LI>9XUol5eV|qCy
zm+I;FGG;4`w*W>b9>9H6)!Bsc-%L60TQQN{JZdw+&U-s%o at zAvYu%bdc_~Edo3}4R
zbe-`l1uv&N>Wu`fRMHAqIoX1U&aN4al%ZUa+lm^#BD#^`_Q;v2lj=QXt at c`_bDviX
zOD;76(%-7oCkf1XhrL>M^-8pxWvB+Qt?^}K06)1#kQOTsm=)SHBYhVa6+N$O9~pUG
z`<!HcUYi;zNmf|h_SKCjz$k2v{5E-{m<qykYf{rdnk8qQbLX(++jBpRFxGgad*Nbp
zVWZVekU(=w^p75 at Z`*r_9^R>ad8BNvZk1L073q%y13E#mEbhR_ruL{*#+#J+B=?)x
z-nu1G<F9C>dHDt@`pW416F6vkdZUVPU=6Yw5Q2<0=eJ?A=iPe$sLqW+#1xrLC%`_$
zM5D3Iu7W-alRQg(m7Udx{jk)L7J1jhmB{YWWMcc=Vnrv?kEi&%@$9)J&ueGSord0<
zJ1zBLLHN9O_S{lrzh{MZ@{ZM0R%jL5n5T?+$^?mI+w*{@KYjg^9MS{&rW<`@ZHjs6
zNYP7Bf2j%ZR)5*ML~5>C^UJ)PLywWEt-#3CR@~|OJGk_x8-I65Fn!Gil8nV|KxXg9
z0*+CjG!UFMn~X;}#Io&_HCA^^l(J(I{t9i0H5E&b28<#Si+1&hGrwyG_NC6CTb|x8
z6Msr_y4N*NyLqI4<d8l|DoP#Nzw7UuaCh2vQUSfLra6`DO6^eO_A|GAR<SLlkK`eD
z4x{v)E8Jw6f3hDoEz4b?BsAjAjF0N3AkndR3$KEY9xGl2+Ta%f6IGc8zTu(o_p*s@
z*Cp?8TD2g%RXh9duv?Xcq<F&O at w=ysD8#lux6cHzv?{Zj{G$I4f8X;<@&EI-`@dDY
zuaiJc7&QpeK2>{kH|9GN4e3hvUA!B~VMj|b3NSIt6!rIqZk!S`KcpH5oxcC?+WB+v
ze{t$#*z=rHJ_OsUac;@>DJO%~)Js22k$y at oKp!FPLE#5f6d%}A?)DcO`6qjG+&Gl-
z)MVQUPCOn2Bji3TxqH4Y4fKznhzC;|rJFOv+-o+K=;7_j<`ufud54}BcTep&+JPTP
z&eToi{%MFz)uyV!#UcZva0>S2vEe?qglM-PUUZgCXW5yhqF`&odRj<Y5C3oSDY!Bv
zkJI~KE>4D|o;qt`)yoi++ov3l-Z>=zzIOB6(xJmWCHDN(8883%>COPw%6K~Rk)9N9
zcj@*R-B84+WLvO&N<I|8fA`#N%RkbK3-O51h}9p!sniovDW<M87>q*W+zgGVDFJ%Z
zv*n at F9Zy?>qB_b}YwWUK684NX=w4E=Be!ztt(Xq`F!ayp#$TKo^zYr5Jp9{5MN^8f
z$E%vH_=GXK?p{U<KIZzpEgx0x`#3Bp04J2Q&hhXsFSDTjB>2;3l#b3XT^%|ptQ&iE
z<M^#7fs$4jXB?}K&M(2{PSN)H$5DN;=9}GUMTWPL6@^9=4om)96KiRc>@D;mgW4yC
zj`BHr0qsuxlFIKSdBMIN>-IexRll5tJ?C?7qe^OVa%&&k(h#J*@PIa6Q%=zR`-(4_
zlb#O;h!^zq=SpJfj_swfv~UFlFJ>MJFC55;KS(>RriVuK{yP<o#KL=057ohO=&W<J
zZ;U8UNxwX at J+4LTE6ZX;@Z)mGQ5$$4)Fdc9+viRz4voM)dWx)M%v(00Jv!znoF4|S
zRV&X8h}vFXUIL1|b%!LMs(eqOq7AM?9wruhU_Xyc<{-Dp>dkMJBZ#HH_blT2M~V%J
zK4q{Bu@~$0#x66>$8egtlQW~((xDMm?G>AYEL<Pnb;)n~;4 at j2{FDxJ8mH=PA;vu?
z%R0umYgC{DLs4D-UB!~O-Vn^%;H`+Y_n*wUCs3`t3{ie>rJaoHze`jvx}e?({v^!Y
zCUzG5UoPwebgr8aKWq)A?TNtrf6LBqCuJUG{_Gm0785&I0?CIJ$eaorHQQ&kSsR#*
zSu5?%e2nr;HxJ*}SeiMDI3Qjjg)Q-#I^5DJB(q`&N~sz4a0JJ{7H%!FD1#H=uPs-7
z_*VHzM_}p3oiK!9II%OI?k&^JHkdEZh5a2%HQK!)*|f_alb-y0u{L-Wp6De6x271~
zUCxC&oO0VjPi&u3QKWA{j-uVrvccDD`3&i$Td00bq40TGgGJLZc+9XzM<ov(-rzkW
z8KeF6<rT%*ov95T1;RmxLM-jJI}}dEijTw5W$-z`L7g%y(UXoJ40b||yQAU1i<f+k
zB}J_t_k6|X at 0Nd(<Gd}NX&(P9%3x(MmQ8NVud>Wu43<+q{1bQ!0YB`+aF^(*fP)Nt
zq at vn9Y59A>w9vyT)CrAOeL|P;!4YFL^}dGbFNF3**I_Nc?^5kce+F2*piO-jy}jOe
zX4^CG&)knV>AcKO at g(Ij4KfLoP$Z!|qg;iKv2|x~1*6VwM2x#UexYr;IZ)2ws%Ld#
z=8wxaunWx}ly5{xFG%d+eYc$KBa3v-42^(=8D~H@`V5wTQ&$-Cr(uzXY#8(Tl?=7%
zhilX4m%-Tz{9WI&7d6E1QZ5oN`vEizcqOwB&=GI|v^s*WfandxjZ#q=)r+AkcK}gS
zr8XTdf at VnYO@AIrMTz#s5&@H49O_cq>|;IBScn!s01~WWb#!Avw{9*)s66e?1Whi3
zNdj8cg%zW7b;&b2x6umQBn;o74J?_$!c8oUyzBdrfJey1ND<XKtn^Em*XUO(aC)K|
zO>63n{~AW at _DCrR@|J7x7&C6#Ai;GT5$HxgJJrKpZ{>Wklq2xMsarqDY|6~B8;{<+
z%l&yz^yP&mK(NsJ>m!&nFeYN}bX6tkK!-c6G*g>iUtWt1uGn<UVoWz}U>Cs{+w?8F
zoYC5$UG`7X1NTOapG!SBG9xxX7A)f!#fqQhbE5!lfcM708jd?0xZ!oy!68Lw?KyEc
z+W%^CvIk;4wIteqcUjCxV3l)s8GL|0TqMPALLIOl2hV!gKaGp=oI>BV!hqWUs<wJW
zcn$prl?{NyASyEP7!mC9{K1wpF%yMgRWI7}Z_ty#vEDWmDcy60(|kUZ0hyp3T#Obg
zzFc2^rpMoP5xctot~Niv3EdakmpKD7)#fu`mAW2AOW`d?HU;8PjaGU9-!Z|?ZKRtw
zd}F{~yGz8I5Na5jK;H=CFYq|r^A6!>4d!Y(1SS_Zn4NI at yQB<y0)2wDdA}qFJ<2w5
za4j00{xIioUo?F8#mDJeIL$bIc)esxy|H_6WX%l?#@_(36cAJ2$5|BRixEaml1))_
z5fGeT77hPgH+}*}b-(ECVCI~k(`3v!E2ja~2OErM6{_hwqT!K?XL_-XTyl85F)}!^
z_I=V=J-r0|pS}<z2K5NzvwIm9a#2jsEhVU}$Omxw5;)w>*QG>sbbc*T;B0rdHYie=
z`~G(S`TSP;?<{le{^5sHkLdmIDJ;?kJ^{u^aNbcgWJKU=&SM&7+2d&|w*y3tu?Ad#
z`w|>ha#e-P;lmoFDs(YEH~Yu(WIvYiWFqOF;{Ml4dYfur+&)Dcq!^?R=muDJwVRig
z4hgqG+9BG&5aNs%warT^Ut3`;3BAVRne&-Z`Fm=EQ}6<7scsyed5MlxJbGe`SS$-Z
z)#gQ|dvRWG>Rvs4%aFA6iM{&tmx_NLoxY?0PkT`h?XnL72A)Ir8NcYi16!p>K@&Ji
z3qRlUOy+O_ at 9ox<($}*4I`sh|7$7%ZRNT^BQu!)s{HoOWZq!UNC~2h@<+;yFirMQ6
z+f^59taVRrWYyu3?bT%l%E at 7~G~pr224T?VHB9ty+S8CU9@}1Wjnp{6wkHV0z^9uV
zSuwHmaY=uIa9TRmg3ByJ3gjUVrG+CksY(i6*2%+WsDA3}?jj5irxCn+zM!XJk4=li
zfW+wZZI3|iQfa%Wyqm_?So*u=eJE`iVPTvG>(wKn$2j$Hd;q?_;iWa&;48?J34=9T
zbVFk$?ZZ1hZPq{DNNsGW6qAM37qc<^{L%0o^nd`KU5Dw#J9YC+aI#9YH3oSN&IN<-
zD^L-qa+3AG0u}KYAQ6T;P~L|}sASJ;rS$WKq6oozcKMp^Q>L-AzE(~tsh^T8U#1O6
z`Sj at kc^o^oI~Lxp4e$(wZoG|MMo_vj4^ZmM*8t#vDr{h<qklUMdGkQuM8L+H5eSUC
ziuLI`(L0Al!*^- at Fy|J1+8lVijUdrbqX<kA;;w&JF?&J(MMghjn{)$Peh<d=9?AAB
z8H$~4L}g<Rns!GrzeOtTPjr($1^}Us?K#QSzu4qyq5GV3P8f}DOJM1`VK?d_TWFCn
z3p4D_+ylV0r(9It7&Bg00}t+nZh>%}#;V(WVsC$1XG76DdRi~;e+d(M6Gj>iD(JUM
zN{xFP%=%C6jT!Zy01v<kTxjq8<N+ at i{~|hlXaDc_N|A2 at FP=m9)d>?=WFA|x&^T5L
z|D@;X%omW>cd-sG`(;XZ3`8SE1IAS3FX<t?%{sMb+%40i?#CFmKD~bg&80{rS at H?G
z2<-uq2ZOn^48G{lQ&J$UHW89#7*Q;ML`L2tLvQ<*KfULjD6IIkEhigXIr)^5lcH}Q
z#X~eGTm<3up6K+a;Hlvkk+&)ld9z1E-V`;Srq)ssgNQ6k;^<ePh!lflth~Y+8$1Ea
zdm$phQ5(X$#+Hs)++qC$$w<8+y{2~e9Jrc5I-)NyVV|$l&YWKh&8PxTQ}G1NqEs9F
zIr^U!TShvm(WgH=OfyZEKWG1)6&|^WNtgN^C1VZ7Y(Q9e4)0mO`2fnQu^5nUJnixz
zk&dKq!VME#I#4oRN0Ae-h+fZl$1-LOg*MRa&#u;CnJD64+y+^g=9t}s<2n$PU?mq9
z)ec=!`r<Z7!b1>a+*7A*zUXL(!i$c4E%PkeWz&Ph=aVP8+O#(C8E9%-%SlBZjXHA*
zVsk2&9L;Kns at R?z>oALqdoYda%!`hG6?k9Gtdahd(IELxzdLgk#z)$yL|X0!pR#W$
zdyZ@{^glV4J?A70jTsU1#xXKVU*Etsj7IQ3R~PRthA`j3M<`O5<Q@~wHOTKb;b;UW
zUeERBe<>5rb<d(SO*j&LO23$J8fd~X#e`#u2`B6`;q?1VIQ6y(=M-uEo|(@4tb-j#
zK(oRgJC2~&2ET_`+m3 at R6|RZINcBTLfW6TEF-6Sg+Tg>C>-QLQL|?ZS0-0UtdeUhw
zt=+;&<0Vat*8U6eLH3=8vhzFkojaJ{vD?f82bRWWPQ{bc-t0=JJ_dV^oI~@}d*7}?
zEjwtBTEA!AxuDG79Bhia5+&eiM(M`z#>_Ra*o>6u=E)Z41+T?=qYL@&gyT@^_{?R<
z=G3>ryp#u(l8YM5^RW!Lv at F|R0sg7H_QBash#Aktre|W|-(UPLSMLYIzhtYi1B;9w
z;D`snVUe*fb%XE<9A}a$wLtIg1?0!EJhLq!fNXE$rr;-$X_)@|=sGMA_Fa1EG(2Fe
z`?P<306{&0YePTf=vy8D?~`ZQtpE>}QP54bL1Z?f>6H?-wbYyKPDovq(|C02F>Z=g
z8uN$j+*6!}Ca)jCSpeXiWVhI2ZPD$O0Ht80&s1YET3doR%u;o7RyWR^hQBhrS4h0t
z!=l_oRdL{(%dv}~qXAzo-_05SHCcw3Hkx5%D}~c$;7?O%ovnuPFG_>-VZ;|1eDM<4
zps_HJ*IO|nMRnn)wJ)Y1!iV*ihpn9l+ofXL9}jIvU-Vw64WE*B!MkAaI8h@$m7UW`
z-3yS&ohS97F;jm$X6k>8nc6pI>hdvD>&Hwzam>_`F;oAH{>|STB;)+4bjrz}Iy^>d
zYIVMHsk8H@%*mSqR)F!88RiW0DiA@$oLSy~cX8$xv3x*(tHZpjPj~MFMJ3<Uzx$AA
zI{98K8u!7bls at +E64Y4AM~s=}B)Tv0S`B;qSe%olP?3alk~VlMpA>Vmos?ciPiN)+
zi<5h^*uaFO?c6`j%8j$;|E+Q#q7B~f=7!_as$OlN4Ka93;qe;v*x9QM(oo<L6>9$-
zs?&Lhx3<o;!Szzn_o8j!NKykme5W?>D$zr|t;H at 7^kM at H32)Q5L at Ohc#_mun&cWV-
zVxIK at c8s-w)htR2_7ivzt2(qov8B_B4C@!nMX=06R|K1&IesY%NYRhlMSmbgcQF&#
z?aXov0wGBElfl4(^hEL<luxb^obk0-P^kDuS8=qtDz*kZEqo7gndj<U4c4MYwQh~R
zFhf=(kV)JOaQ3g!8`f$EJdmpe+RxQK5cOCrOpzmVw3M~RlFnXON=YBrm$!KofcGPA
z_kzuqoL3#Mm|EuBBrCe6{jWtX%02B?aZlTv*@9$<Jkl%efarqEFCfh!U#<5>S=vy4
zP}TRY*U;~>0U#}?3~E7{lvbo`bNB43x5{|kwZ>)echYYE6e<DzV$XN1TKCm}1`k7T
zC>jJ^7G=(NXN>ZM(+2;DVwU3?NE<Ji!<b3Y9!45AhsxHTwQ(Utp*r2zjwX>NW$cil
zG1-$!&^n<*W>8aH0>T5KA!bIrC)LTMio;b>bzxKl`6Grcj<d5S{UxGQYcP66nQt=(
z21*-zAL{KLENt%}h6APz9>O+-kabuUMeh}5I`QtbdKVg;`8^eIYCb&lp7|M~gxd2d
z-`;q8z2LDe^*;%dq34PW9kP|XIbTIDM2#I$<3-*0dDP%qIcoe$H{%fB^Go%u-}|T7
zmG^Glc5KYp7R4chZ7)sHr$4A`*Z)NJcw*rZ?XpV*#G^dkHvMl6;k{b_mwCpVz8=46
zm_7<4d}ahq1pS$tC{4vpLp!do1bt at Qz!=@!REigE>N+{rZQQ^&J+0D=9#my`8e>NL
zn9iSWT*(;R=diI%@(v3eW0*j7V^{!;_Aw8C+SG3|8?#p;#47`Utwn%EX`jy5!y5Vj
zx@{5|pLrH*^t!#m{cd_c64Gl+^)xPMFv3v6^zi-Kz^PLaZD8M~8?om>5!FkO3$utB
zu>g)@2Sw>i+o3M$#@aGug#{KxuY~@FGK at g}^D0pmOWU=Ly3tsM!mx@&D{Q4|du=5P
z*CH?0$|(GpCWRS+0_VY^pzA2yjl#7k+>OFI3hQk8_S!}kUWUBOq;Rz=%m@@XuN#Hi
z^z at G?e^Gv!o*w2SK(qlwn*z~|q#yM$hq*}t*5c`-S>gsOT9v;+%9=w%%$xqvCI-f^
zWJwS6EoK;!HrmI4zwLc2Lj)Tbn42UZf}<4zD_X(2L4cS;8<{u#qn!+lVabvn<{J=5
z+GrmG{<inA3=xblFgHm+1Rpz!(KlGp3f2t*#2nheyy+i3%fJ|xEa_ps0fD5A_A%gZ
zdmqaX!7c{oCJBgO0q#x!0xMd<x<P=LL%W&R7?!m3kGK*whiRPzl{1MypyDIQcBlv`
z+xu9Qc&4dI!@#&w3Z;h$L7QqYqm1*SBboIED=Sm+#vo=6arFz_l9v8aBi_v68pe(G
zF^NCm=HvE079q}Brkk4>7*|T>^e{^bvgJoG&ka@{i8gLv0AxBd8N-s6{?Qt|nZwH%
zH`>P}{(y{++xu9A$l920Zen0uDVfv5EGfudP`zs9k!a%v20+%$OvW(N%;AlUGYrP9
z&`LLKLb$z;8QG=7LwG=V%{2(g14a;{PRz}paV3juHxKV%F!f4iAG(q+<}j5pZR)?X
zq;aLv%!YSL+<y`YxD(%WbNE37U?b}Uws9q25xYy}VW4du-i=^|aU}z!k;7q+N*laa
ztVru at 7RDMYR(IuI<YdK#hZ$Fr<&CamB!Bv-Fj08~Z6FPGXF=4L1u}0FgHj(eM9tgU
zP%N7M!WtsSfeg6)t7lupAxo{w(&)(|&z>yPRF(=)7J2q$*+qQmFUTCQ5XrMA%ZSRd
z6M<b9dG=)4pt5Z8WRYi2mOhnb*po$`-7J?Z!_9Wxa{dJOUUlo9lv>`1XQ#M=-o7u(
zPO0>iISoZ%86MRJ61D8od8N^H+eL)faAV=W;JhX-*`!toDbWhm5Zfp`cU}rZfo|O$
zKy|UC!ARi7or_DN#dqPclySO8OWcBMGqILF)1zvMUUxFr_tW7Ww--ACQy`!3(6 at dg
z)j$3Df2l6gr{6(Qf7vpWjiH{GeG7Mo>gl6Erd*}NrrrNl#%$RH-3-4=MW3f$2n!50
zZejQqh7`l19u-0yZV`%Ny)*Da1Bw~DVfe`0i0&RXw~z`c-?!QFeJf*hbBiLx%Y?d(
zt$fqdD$Q66`972*->;CE^pKP{hLl_%l7g;W$1D)}k8o2ZVOk>mjz+$iIz)JB?Otu_
z=XYvTdv at u@rzz9t?2U%E<KE4g=#KOph-$qwW*nl!BPe{YHo%Kib>kB{O-;rH7_CMu
zZRS+!21L6KnZ7tnrpJsqWyo44MN?HQiW at Y|HOPNKCCXNyY@=@IWhe}pzBo&!qi`+q
z)=J at BsxTu^;DSaJ)={_{g=<k5GJSEDOh at 5m$h%Amzfvif8G!;9bfa)vEPa{Ky`eAD
z(?fg&h%A{NGcM~xG)6}Pw*EU(i>+3)D!*0An!`iL3!s}=#2At+=^?(wjH{Ri-pPPJ
zOQr+C2D|}*1Vr#sB};F$q7|&I0tD<Dd4XUjix at +aB|XG9AYd90FyPOU=|C`oHz1IJ
z2x>{n##Sp@!P+W7%;6o#3k1)yh%qEt(nEX$0;T~01O6<T4g|aK1_TliLG{Ukz=~F|
zwh9n)csKJJLreo6vOrUI908a~`~ejoNwGypw`4l-kcR>f1LKNPzNCi;L7RFbGs-x(
zDBM<7VX?+m1~GHEjG2rfrU5rOv^iA6IIm2<in%PA4xF`2H at 7e_u8_>>A;ss>&=)^W
zfLpCR5^Zc{0AxA~8beG2vNZ_Ip=FHo%Ji$4%aZ9p*2Z*m3j^Z{$($ZyNoiR~A+z#G
zw6T=|kaaVYF~l?|evC7&VjTK#%Me0Wrf<3iuc!l4`Lo5kaRrNMHxKP#Fm)?SK_l3*
z3E|Kcj5LRoOuvy3j4PB(AKHl*WM?+rxPouGIrJa`u#w9~R4iW+yGy+>&^8b4MzF%T
zf&tQ$Out7P{H<&lU9lI at qnGi2{`65{i}Gk(p%~p2iqTzWOaII}A+?7sWh$CJkDe9U
zWncR!`{&50 at ynQ@)fvw%G?yH?ccHOF+Z#(?c_zR|`~LtBs0WH)i%x&Vc7ymlZ=ry>
zqLjW6`|6CB`bSF^m{Z=qz?gDm_-{Sf8x)(msBM{gWOnU2mgeZ-KLHn1=fz){2mi&m
zpr8=^WhkFH1DUh%bM83!&z?R8{=Li@(EfG2NTGoC6I13aWX{6B!;AlGW8r@=5B?3f
z at u?8}#FV)JnX~Y3^y2?r#Tf11k_Z3oJoR5d`-v&@@5r2mf2d&m*W|(f$a96^C#K96
zWX{6hO{%i#|AY^Z(f+<X^!Gr4{ZCAp8+`q*w>ik;@Jq}`{GVA9M0r;|TTsjOwoC_d
zLa*bx-obbMhsMBnW)Qx|aazBCk=FIh?Z~O{RXF(em5+fB{wKMdrKUi96`6NB_(~jn
zi^jq?EePMgK3!P*N-`^u6YXm-UR#hp73Vmh_eQt9HYKKAkLx%e+6_tro2HZS^yl>S
zlzU*^U#D;T!<6WuOL4O*T-m}8!we_u>D`&TklFGta_w1;zI!9NI##aa-;fbX- at Q?|
zd0M3z=jGRTA<?Wwp6I=JwHA4K^j~f2RcdK>ZKWu at L$wI}_AI3g+q$pVv--JQPhTLq
zuPD2)XZ>6om?EqADp-a}b)yHmem9if3o7x9%|Fq9VG=4~Zz+2gRbAS%P_!A*$j1og
zuS8gZvW<AIu=QUQu26+(&$^%%d1|Hbk6}SXMn<qeBSIa8yYZ~s`Y#IWsxa+Y7c4`b
zWm5QfRhSVh(2cMSYl~rI#%mkO+xjm+v?&m at XIV<FWzRwrK8M3Rx^ZJ43!0l$`5PrL
zHw`f|Es83#$Xk{Q44s3K{5ke4OUbqDSwO(e29(}_OhB-SfpMb*=BAB&ON*k4NO{Xr
zfq{UL{5ke4OUbqDSwQgPDFSi?nSfv?1LH;s%uPG^mKH at 7k@A+M0s{df`E%@9TX*3N
zkR;$J^L}HLwxXY9s&S(P=BC~9Cb}>1RA3rdy038~lc=l}ac;P(uw&2KI!#R)20q<)
ztCS(`eWY;XMk_1f<4po{6Lkek_XX}oyji-haib);DzIbEvh-SI&&t+)f$W0{SuNq3
zn+OodBrrGW3Yny(MMt%CU*kqea#di*p0%}20b=0OeSs{Zz*~9Ns5c4BO_V}ex-aU%
zIB2ieY(nVjzC%NJB?Gwzp{@9$x0#zipALKlvuEqRSFxl|_q~=#CPnvE_AE!EC2u3|
z($k_2<8_1ZFr at +K(~cEey;d>3Z?b^bo`s=eYh&qo#dZCAp&;LaeM}t(D~#%T>=Bu<
z5F7+!)o>8Ju at Cv8#yvWeV14 at E>WcS9r at vI!ziY25*N-h4zEMAZ8T#=e^Mt7jjT4Tm
z50Cadl}RAg^6wL3aPhr8FTOL!#P{FW-N}z{2&pzclCz8NtP}FJuX0R$_h3sYKfddb
zYUAV7b at 5&IPx<hPww<>>AI9n>Kfc?=B3Vz+!lqn&ue>K8KGCl8;yY?gd{1K)X18x+
zR{Iv@#V6WyUVNtjV*d8M*Mn~;3*T4Yov(eOJ?F*udH53L#}`AY)xK_+f$Yif^t3$4
zde-Eh3E#)rru>+Okt+7bZrG}9JoED6IWs?=BgVwD2lv at 2JQXgU|2RHhdusCIX$7SG
z?V0D`DRJ?<cw9a_)AHjP!NNH|o^K)*?ZFo`N at B$?Q^kZ|nfAqZ{22;u8doV<`Xw)5
zupG(YdICp_^u=YIkXQlna-Q_Xwa(izye+fdeo)?rJaDRK;KXfEaSWWe5f#V4iQA>(
z7^paNpuC9OB>jW(X$S#V0%K5Oky^r7V~{}|UP}=ggZy90GpYtJEMJQd<rx@*jC67=
zvvRbl91M&>MmlvE!VCO`;TgXPPto+3%b!IEyiAA!$*_85z}IWkD+9i6P_GPFqm2k*
z#2F+k1$7Iaj6uf3ZDOE&hn0cRD#Hk#h6Wi=0JIPh0Ar0oz7fk#gs2h&zCNg48Sr(N
zdSxIucH?1akpIgoZyFyOl>5fhgU{lH=N+t1JltADS!sTS0+4IES~)|=|NejzYIkYV
z>G?u0xxE}deh*-DehD72mo$<*j3sLH^bhwE=;$C}Nt*FPWp4T*!Lo*eWpvOsJFzhQ
z-ygze!0t=G#?{sx$}ja7y15v)>fD$5t8Szfj62}ZZ!jL48;FmZUoICDzL8dS7OeEi
zsnm_HFlG18uHhNbyBhKQmpZMhwR|T#y1sm`byt)&HL;Tk9p$^UsjGJJiyXAyNA~JQ
z<k at Kd(>RRr5Pc&azzuVX-@&b;h7HS<VjpA0FkBBBiX&LnJ<C%i+g_eRe~K?&&IQA{
zcRY);0`S03Z>~UI at eXN7U$0J0z{x093 at k8&DY)zQu##{`kFI-$Pf_!DJ>6RxO)tXE
z&)=XIb0eAV6yMSCU>p-Q&%h$Dw-l!(OYqDPy at k<v1R0~or*s38{`^v$36n93rq8e3
zehA<%DAUtTSd0Avh03&nRss9GHgKnaZ7M at _1rFJw2b<u;b_PR?Iy}kG5V(uVc*xDT
zv=V?T*be~Qr~uajaH9fTiz`66gBk|l3*N!{Hq`={4#16g*73}+Q2_rOIitp+S_QZf
zfOQLSw*tHjfV&moW!k`E8*rVtMl>x0ur>hh2EaBvGwc??5e0ae0^AM2Z3^(_VT1zP
z?8B3uUe5@@a5W>ef$wo8F8lY=E$bN at HLo5*fa{VZx3QjYh_v1$U`Kr&WuwNISVS=2
z&Xnlr<;>1sG`)Ef0)>AAo`9bb3O^&Xfv31kCjL_ue#QdTMg+hwxsCOFL!|X40r5YK
zvcS(G3O`eTpV|2X{+$RE{t-L at KO+==M&Q_x;K%626n at 46)eZ!}FS(8Nd_$!5CIRuk
zSK((7g`X+F&+PmG|FZ}b{#|$ienu$#jL-&FmGB+y|E`!s)-x8Ub|V0O$!)CX8zQYY
z35fq3ltuelMB!%&@H0Dq(e#%pz@&g5g^S3pOm(5Tv7T>;EMcUvo<W^?btwX4J^x2V
zSrV7NAk#EF;Y<i;diWRGz<O0t#v-wd+02_Hx3QjYh_v1$;7m=TY}B}&MP#;aW(q3G
z?EImIKwraT)2u~cte2Pc`bNfa3SZ4=ZQwT86{6u^WBspc!B`~f%x2ysxsCOFL!|X4
z0lVw_ENgs;MWnknGX=F^cDEMGm~5JD2#odel3u at taZ(FLLoUGh5apnqj}busF%}5B
zna#XOavSUUhDhs80 at h+T%Nk!|5mgJOpcc$-)dHo4 at J0rH`6kJ?p6`erR&NaOc8z*t
zfVU0mjR87yBLeXEewG(NTkwFH#8mC(t9Mw*jFsdOJPfU8Gzwet7^gj0M#<x=cj5(Y
zWdLjssy7CB+oj$Z5c+O}L+klJ-$WFz7g6lqV_B>76C=l81vx19nWnJAi!J)_-^TjH
z2rpMX95?3fp?plQ-%G5c{jLOFucYUC3dyMXB_)9ST>*^le;3R;b>?OkmA&;k?YPTX
z%D9P9=r9(FnwtqiH*QkFXCQd4RswiEgJ}9{=B7N|T*mj&%k4@;jjIU`fmCAjavQrg
z^(JOzncFMzpiRAn0RYz`kd30~x~Cf%weBefGAugNjP=aI(d26sZU=)mL&c9lhU3-+
zxMIo?G*NaND3p(Rl>1w6>AP>~yXuo>`SsnOK;PZw>bvxBKPdX{m#&;_efQyXmcHAO
ztM9H7eK$#cH?=EU-_`p&u+Y*5AEd_n_-|$X$cgzsoT1v(|FS3Q)oP-yXOLMemK??R
zFGYlp?*}pb24iy at _yn$X$-Kw5TZr_!S8TuQYmo>Bpd$b at 26$^!ZwwlY>zM_|R5ME)
zI|OC0rpixKCCXF at 1}I;l-WWj6Fbm{N=8Ixopk0V^>r<-!yC85-g8BmRGr*fi%ZM7A
znMFtaza^`ADGz1o{bJr<KcY(PkURle63R0R%Rerwbi4c_vEHxWfJ9*2D0u?3Jd|e^
zmj94j9`(NzTpTs-Ln6u#NuB^L73G<Q<rCQaR_hP8{~5t=Y1AHV8ViYK%)M1EUt(GG
z7ux#`=`TyQ_o(&AU(5U<U;em^kG00|tS^wijQKZWE7Y<}$WrHafv=W2o at Gwd&^UG<
zK<;6>*{k(fHwbaXFl1CWhdBJGHgGEjN5>r?xG<1kPW;^ma8eUK4gF7+7Zs at +BdR~l
z8zYh*(Qf`k?NC_V6fyNf5PQ5SqRPH0LbM(WFoYlBZ=Vuk7q{Utb2`wt=K<4~?_&3)
zZ()E!LO$?VAGm-{2|(7MYO~$0&5D1vYcuaesm;f{wK0+EtBnUR*TXjvgH<0UWv0 at h
z!S>IGyq5{U{`gO+!9DDcm(U-_vIaQh-v0>tLk<mp1Wg~jC;3tB=BnDEYB?=Dg}reP
zdgDm;hK74HL|3-J62F{t#q}HP4^FGhC$jNxmI+M!|6}!lH69n0S>sXSjK>aEz&9Qr
zN2;#}IQ!AH1dR4Gu-earOsyAxLwbI#j!RS;%td;X!|-)%_cx%C3!~BrKYTwFAL)hu
z58_F>VFNHmR6iUyG!=0;HGLgYBgQ>*&=c=?ZN(g8$r0#^1p-#)Ps~`L;}V`DP_Hv;
zGd1)nka*k-QzFFJ%bj_&ZJrwbj{vU_<E<aChyQ07YGn8jKlymPqQyTVQQ972?^grm
zDFjG6rO}JKF{^>@_{=of${)bkgEyw<m!Z97Xm5qIcL@?b?Y+`z at 4xd&+S?n at -fc+D
zZLff}+sp5AN_)#P&tS7%wKtaT??W}B>DwhRH<JrVMP9Z#z at q;Z at 3T7K2TlhJsSe1Z
z|KHd>;Lb)5V4;6vu*RQBnJa<Fp?}n810qo$3CztK`9?zcb9Q|e+V%Mr9u#+Y0Ar2;
z$*RvwNcB;p2e8zK7_9m*DYMR7pN911BZvflV9;QGX$JzS&qK(@fm*5v^NZN$QH1#<
zP^y6<Igl``w3{8mJT_>cOb>8tTnv+#tRcIa>6tcQjHTx;i>5DK26}0eYTOS$1`oX~
za;ou8ry8eO)c~Jxs__Y==F*FRwdtkJrk7=z^MFLvtM0`S99{fZjC=$-`oOc$(Y2dH
z;66yewEG?2BgP1(U9y<dE_pcSKzB)I2lL5!G%0^MXD7=)=_~(WVEKy7UD at S7ZkNya
z%KtjByq?*XUH&w?{GWW~?+Yy7mbopv{O_elQU6zb<sS<wziEi0w-ZVD-l(+y1-twS
zxOvRme}~~cr~kwgAoHB3{55v at Px{KA7+9W^lzAtTZ2Z^T<v-^uKR>YiZkC_nDZkh*
zf32^4e_(k^v`m+$e7{|O)K`8}V0lW6%-1~SPqfSb)mQ%E!1B}pGWSS%#VJlfdEPwL
z{F8nA>b0AXtRK=81CJrXc(GpF90UKtC4tqi!QrYT6GpV6e^q{0nJRydzq}q)z9KWr
zSN=Jx{Ac~;BSGc$OqH+vzggwa at Ry$xRK6{9vakGitn!cl)Ytx>A;RB&IY5)yiWJB(
z)&7`Oe$oH>%2y*Ir at W9)IZ~YR$AJ5=|4o1S-k|bAKFhr2e+Vwe@<;pI|H3^1_%{||
z`2T<u2mifR`IG$Rj|=EOIro)06e&*m^Q`h81JEq`IW`FY5b+m#@jrk~de(ohAOEf(
z{6hXeQ~34b9o&S#6;QlORvYZ%Ob9)ex%B6(UM>6shee-GUr^k?54s}1?OXfeD0ucI
z5InSE-hH3cd1_>+6bazj-$R6fW^7&(er-j>SW*L;7a*Bykz(&Vn!~I{)P{SP1GmJ2
zTjYnk`xgOlr7gckiVK(I;lMrWSi8Pgkw#G8+jsiv`#*@tsjtx3myzPYZG>N@)d`!i
z^PoE60;{smqq{J0ZYMm92tUxqw#-kYTkElSRo?UtNS<d^Adj#>uJ_mT!k~HzEw_2=
zIZX0&;68bb4fik$?%(}YeLSG50wi;v)V2 at sP~S%QZCdTW+-d(;tWI6?Ghh2#5RudV
zicBM-l|G=3N;n{Y<+T6bERZ+*>-ir+_1uBFWz4L4>JHHBoqC>V0X^DZ&%I<&K4NXu
zGh}3TJ%@n80eO_upC7hB#{3{>1~h$`Kr$bY*7xC&{RzKRt3MCNMwJ@;&13{1(kB%o
zbLr^;GBSTXOEPx}7Xv-v+}kGj at HnTbafW)gzHPU4PHUg~Y5E6t;&K~YdUWhaEPd*5
zblVeC8j7F5^=L8U-rcMgF3^(CE1B5Ci5b|xd^t0UXxBgbVEChMDLaH3vF(pKM7t6k
z(r7S7P|CnPkA<@m%&twnLb92K`lDW0LL52%sCOMkBop#S{SCHn;Qk3S^91}+V`3_r
zpg-znRe0F}`=cHwtv`tVsOLycZ`=SHg6GvH29xWL`rRo4azr86sSrpoN&cvRQ3!S^
z1kWl25)|T(Du=4a>5qCv5d@?79p5W6;C1pxJyId7CGt0`Kk9hTS7)Eex at rh*%l1dT
z_8LU_{87KTiCr)mXR&hqQ7u+y`=bskRwpO2#`Z_GnBG+^FqS`R|5>0{wJ3b$UDl%b
zdODMO7S-3_J$F$ki<*Iaey9Bxf>kKE58H76Os7!~++X577p`b%w==7{uTngz9oM)1
zbDjFO*>FGPgZqv^xT5*IEV~c&B-w7)pRWHTupL#|&)Yyx<W7U9vhT!uPGw<PcujT`
zI0Y!O-Fkl1Y5&VmDaF|Ehz}&czn%k9E!J;hR;&Fxvf!TLRP`@5T%FFUo~nlMo(q>?
zGVf(p1=r&r*?*$bsRK69Z?Ih+peEjPfOhMd^PTqZ&Z_4Or~NNLRg?A?`|A1U!1fbN
z=6<*R9)HpPlbm{f!3H|hSI at G*dbVYba_YG;tDXy-dJfniul9lL3j(Q(A{_!%(Ua>3
z+J7Quoua3A*+AdPog+_wzJ^_Z-2SY{{8 at I0iad&$@gTj$KHf-vJC=rqV?x8YGI&a~
zc$D|4hWBU#6(dmbaCuZIoyn$geHJypUqnE>sebr2q|$%jf%D`6hTsOve*m9V#+APA
zodUNtqSI{0Px(kp6AIIZ;5KEKur3(Dy#lGPW&Y=OQdu90U|x*h)x83PpWjjSNTj;@
zWz3u!#YMYDDZJtrnrBblyT~}Z6lYC8i{n{;+}kky!TRD+-1vigcexzBY(zSQCrzK&
z8wrg>j63RZc_Yr69*?u8$JB-Q_B?4FHf=1)T+PgZ^{)iS&+ll<O~U;3??$Ry|3LUX
zV|WX1$8JS_;2V)@&F`RoKXc4_&mFVgA7Z_SgX?={{?2F`v%a&&uJ1LVp!}dO9}{#t
zQuEb!O at 5%eum_pHfA5eTN}2Bg{o6AwKivDU`<Nf at 4`e4ZAKV-1L7N}+H^=OU0rta5
z_WoYr_}%#6nDBo;W|!QF)cwKVGA8`8G2tJQ1wY?>zqXI09W><^7ChyZ(dk3T at 3to&
zzR#`+M0VV*WVi+Km$uAPKc at FlF#oz%rfN`orh>T^hC(c6ncZO21+)jpX9M`<Pj4v{
zSz|@!zmPd^dxT{Mq4-t7T_*QQWUfR00@`zCV0*%aw at 1&Ej at 2HSl0oem!l)KFKBDTx
zk$?Z~xmKoV5WdX?H)(hWreWrb$X at _HnX*Cn{<O8=_EFQy+=~1K;Jbz_A_(8R3dc7@
zd{6!ej8?n(jMAawt?lp3zFpM4u=i+h!DlX(n0GS9>#dP#c!W7sd>?D1Hl#Cm|K5$~
zir4Zc$b9cn6%SNiKZne_BwjFj_f|9C`hyE+mx3=uknrH$pyH+T9u~Z+=CV1O`J+Hk
zF=gDf&-^FaqMOI*#?*S_CpgV;9F7UdXGd_0k$i99rMmR7N9fakj`Q*TFPHSZ+xSK3
zK74VY&cGKyOBR|(y=|d!)ZzTz0KNSM<U#@Y3Ec=Ae}jMIC- at PAFwQ7C5cTOlDSl3U
z!Jy~e2#ueI?x{0&^lu})Lj>M)glBpiQ;Nn+T18cF{CW~WW)0M<lhy;f)Nsl$U-CQl
zz*Ky)(Rd#HI+gu;JhavMB~cvhj7=X+AA1_U5n~P1G~<2@)Svbm4`7^P=277W<ER>b
z9LA>W4})qZtwU=u at _MHAVS=2Dk#AGeM9c&)J~UZS`&4hrOs|yYPext6Q~IIbvaVG)
zplkdbV^qa4s`idi at k{uGhei9-EZR5j1?gjmJ|RQ&9ET{29~=gtW);3?P>uU=@Od5$
zpXbTS at ECf?oQiMw9B<;=J at DN@2Jzj=%mK}q$H7;^m^#N?@{U*OON7J)Y6AQUeGrhE
zMa%4`fIP|@DbvHMeFB)n=8`Jw%R#1>Xz%$=K!y!!9E3^LfM#+a^r;LoP?xg_eiUB%
zxc|X`4BkPBuzLbJL9wfEpa~7e6PcDLu&ZPqi49;wt2bj+uW|?dRqKkP%-g at 8Csi6T
z=ev1Q%RtAO<=@MbD((B$b$L>Epc67tKsG~I>l at W`%w#bJFnKrz5VjMlGC?U7nI*v~
z$~g44+k%U=Wv<RsOzLrEa4}`bI3`b`w0<U3&VYK#{R)|{2A70stO=S;P%&W%Tl2sa
z^Is(rg9cKs$bA0Wd6G&p$K*?D%X~jylAbv|Pm<h*ntAFw!RVAz!iVw<ZCmE+H~<*b
z_T8k2y`a;8#O{jBlaB|cs4?0HnDt;1up5=un at hs4a<d%dJuE<vzcEj$^ynY*rOIH0
zZVE;#i5qqYCkknNJGd#E1nEn85{K9cJA<1Fy1DMLK!lhuM+TRXBl?-TeBC1zP2LdP
zJ=kPVT%RYYBC}I?MnIQuWE1|7ub`g!Rlb5dSn$YAc`%k_KA5kdbeaZ?`WELJP5Gup
zcpJV_xQ%<XwgpgmXc(iJpMgHJ at 9RuW^?n3?H!7o!cX;pWR?q62aNc;@4?XvHuY0nn
z6b8QjqsnnZb=GqU_NRGMCq9VxD!(_1ugW<0d=HfG{fO_|abJK{x51oJ-oWOlPXH9x
zY2Vo1z;9bs;;6ei3TxaQ3GKTD2iCAJ``z;H;~5T=_c4Tt6SpGW6*GRu)4cc|g8GPx
zjsw4Im~Q at 9<q!W-*XBILi}|7WTV?GlQKM#>BB`$bR#JVj_KiF0j<{bpc{S2hc&{hx
zb>lgG`Y-x_Uz&W6ZhjhGy7$JkIWOt`ci?pF{mBn0JE%9s{B(_*X&Ex5 at X3|C9|ZJR
z7~dZF%>QNYUErfCu0QbIY*xc78x$?ISXYcSh+;Mgkf_*%WZ^DsASHm-M>iqakd(aK
z2M_TPOrl)ZwY0UZt+qdGZS~jMUukQ>qOAcGu=RnoR;pI1Pu5hS+A2Qzf6tk at cV}<*
z0-}BV|9|fXviE-PnKQ35XU?3NJ9B`B%k<q5&M)W=Bx_D``uniw`CiTA-^DdUnZbrg
zC^E`4e7f)~cr~12mIog6TR^`!@kYO;um>dD1SRe;1K!7<$Q$=#K}pwv0_?_rKF%2F
zyN=wzSj98efv<Y0!VuY5iUcPj7tkRjpLGeafX_%Co9adY`2YA^JT2M3oZ_Z!bG3xH
zHwqFYmGmyzU#F1py+T3>0!fiV!uJZvZlo6^Jb5Z3;(LW;K#=U9A4$UZ3dveQvQ8o4
zdxfM&kgQQi_&!Z?MFY;R#W%&<*e~9#DQ_zArp|a%r at ryx4P--vN&C{_a!0oO1$cvR
zIt!5U1RhpBzz%+caeyS`S^AhZF_E41UuQ!4etWOBY6~aN*rXT7gjM34 at lj|+I9cde
z4aW(uMOJVCL2!a`b~26|lOlDe*oGj1vjDm5{}S_IT^X!Rd9InK?|F`@8s{2iocW1!
z(={U$4u%);5DVJpSDgAr4UOdj>403^Rk)hon~Au$uz{Y9m)#jJNz~~uZk)IwgmMg4
z;|QS?FpgjY#mYRHkCg at T=3+Y5Vkmqs%m1F0jidsF)=_pX-bmY=thzsMV#WcGS<Vz~
zdKcl9BT9_(uVxee;gXcRrI5O!jc2g9O~zj?JDks0B(j2*&ILs0a$~Dwe5qpA8MO^M
z8k!hDd&H*5`4u{BFklGNO_&=DK$z&HUsDi49sjct6sP-%iYq2QI3!-m5PjH%uQSgm
zq=P6)cdVt<;qpu{j(w!v9474XtnMERC3zpe>wk=vYal43`~e))E>$uKCqA>OBpP`l
zCO$#vqen;L8{Enf!w!DN@}- at zMI=`aq^KtG(>(m};f^&dg+UzfE9NV)T|uIHY|S}K
zyjPw;n<n(FMYn-NwzNe0%~dbaKIMHnzxlJK|6y>OEGOSnbO>0vZ=m-#B=%7615Q3H
z<wjAY=ZK at YJ$<KPJ`krwKoL^=!Pe43-U6$(QMQ8my?m5tpy~Xl1I|BkLZ3ox&STMl
zcTv)DaA2{g|2XJ&luISjdBbLeBMB7EP3!`K57mL1hvy;5yrauBDihw7A&HxfC~0U4
z7L*{iDxm~OfiMVTtw>>|6|CQQVmf5TOEk%wD3uezjea+M;HKs{K7$Cr=#5{taKOQ&
zhHMPr6<wH(JeTBS9qv8-zeEmbX0U%Zw_9=SAsul}$)?Y)E}$?0eJcrerFM744bPX;
zzuE~O$c+#8(E-dWYm;5=zE^|E+n8?^PN~#%A@}`HT{Uj-JlW6clW+=Yo~GZ$=c)G&
zI%7BrM?7ff+*LS$xJX~k$G#c*%bY#X(AkU+IME4nT~_=vzLqM6(oc!Hz&vqiY5}#j
z+n6=UH|Dpt(wU}xjyz<Q<S~E)zLMhxv`x?F2A%I3r=lgQV-?lyp8khusTabb^A^oK
zk?27rp7r(J*aoc{N2cO+B{p%~=jlHN`(zL;_9z*Moknl$!pHy~3Lp;*!X9M>_^)Aa
z6|oB<9xA<_4RtsO7w3CW#u7^^HCmI0=qCta_e{9HklH`hT_s6 at +yoK7UZTS<NuERB
z(W2j2SO<#U-A>vbeq^H7QBj-g>H8kr3%vLGExeNs*+_|5=+bUsj-I{`upp4Ej5qPC
zLGhJSJZ#SB&m6!$EmFr{Li-P(3ix$}NR9~9b8q1n5C+D{9%3PklV`YxfFi(@Ho8%x
zE4aew3h0C*GqRztMdCE5Q4t?z$aBzm#k%F6(!4mIeo6<m(W$vmh?pGTI1iu5;^X>2
zazSw*aS8JHL~InaY`R0|$#L^kMLL*v5;z3(zYP9X({Vr&8Eq9?V#7&yd6G9HQ}=23
zlU6R&uxj*HFEx&IT~vYw>lQ1E4Gx~Zi%=AT3n}0r3Xarepkfzo9HYg?8)8A<v}-lz
zw0b=^Tty|^yPT}Nhp at BCeN?8jv8We&=-_B59D**|es3RdrR3y;M`2Iy09|VPJ7WA$
zY-%^06kY)^brN at fu(gR-5g*d at K`<$_dO#Oe2Q~hih|MDi!KcrYQ8NomCQ`g^;)b`;
znn+{{kSOe8PAN4H!rIKqzurN+!N}f$wQVUDRCv~3UU<Im%|RE`f1=(?{eu4Ys*1-o
zPq4bc6MPgcDUO4fpXqxrb`tTYLc&6Bk|UG<GYOn(qi;bd&kdJSI`lVu1F7#4&8Gb>
zL)~gPRrl`1+P~iR+V7ht;tT_<k$o}OSO=jwAE3<-251p13Oo;Afe(<bT8lhWUrIWq
z*yuo0f5iNGrooW<E3ftF0XgyrdHck;hAG at _S}thel^@BtK8yPDEXFmhjp-l$9 at U3b
z1%_FqK~l)VHcV?sUJ*f{Bg=~y)jWY4bV7YpZD at mr-iQU#I^&u-A693?jv{@rdCezs
zU<{Z(MmhLAk7S1qvS<_K{<A+2a=`U#$N_baiW~%BYSdQz182oiBSznKfg^StnHvKT
z0qUDBNDp#g+~8nV+Fqou<8{pT8S9`{E+<P1C#z$OgQ<cgUi8dkX_(jdFd|FK(+@>I
z^g^sAK%L&6vx6i{IAsnVg2Lij*n2c`jOCNc8PW#{ONZ>JqiXek4E_f4^vQVr<5VeR
zwr5i*JYN4ii_#KtlnypqL%(RM64W^K`$VqriTg~s2qujB#(?HEQPX4h%$Ri~b&ma_
z!GY at i*QS1weg#h6+V|1(UW}0mjrWDWf$`;lQa9q0>@?0Aat}6(Nc|aow*}8b-=CuW
zTG?+v#=LY$;8f23V=0mtm`Nio2J65u$@IMk9vfoq^`Am*jqSnM7vy+f4Mgn)#-7DS
z?0*HznnV-^cf%e`4dRv2o at _{7rqJZxAPwL^YEvgul6&uEBghduhHMTpOW4}_N*^T=
z&O{oc@(6P(8DgIGaHaVU3?4=0pl?phLX)08R{x-?;$c`K(+jFR!F^<kJdc5BW#5~g
z{uQt@@Y3 at YFFK~*YSew`Z;`>Z2e)7$t*&{0NBY;lF3siN9oUh28q349!~$&okHt_H
zBVrg;oS=sLj;Nmnbr3F6GU2pj9PZG)Miq#N64w{*qIbv<)4+iPT}DHJJs00V5%?jh
z!hezwUnI~sMlDFaFh%uu2gjIt?IMUfOy2(i!*gbPuY&)uzQB|GGVE$i-$g_4-5K`V
zS>ST`_8UxI2q6qyPk$9|a6%-Tt`)!c^p&6r$xV4Wetie1o+>@JY)g6ZX!wa!-+x6E
zmp64C7aW<r727>G;`AwDI>)E<?TnS|SvZ&I$WFI$n+|ol-Xe=o7Bj83{T&K0yFIXU
z2DRr8GluxY9)R`N0PC;&W48xlv$830)_CVhTYy`IVGHc0rjl0Vv=b|hiBs=Fi%T`i
zft?6Eh<O-eZsL~0-LN|#P&7r+9Byf(L4}yEfG7W1yy(S?#&~-y2rmZDX8@!53V073
zTl)&H#jWA+5fd0eZ0t64=E4}%=mWn-x{%gB!A<A=Pj|pg^I6TeLu(rd>qoaI$G~Ya
z|6yp{O-^mq+vL=bKWX|p^jCy6gM{om-Ql3O*a1zdCvoz7Y7m{wtmL>C5f$PRAdiDI
zCk}mwv&3}zKxxzXPmGIhVPlDgL+dyo*+~=j(~#G61sQ&z)Elp&X!So}KsJ)B^xl;;
zeEk&lIHYp%CiM>*f9hL6 at d}SbqtHTc#y%ayS$Dz2oU!N3 at p`U*j#K{#Uc_I9){cEz
zOGNN?`q*=3VPH%jO9in9D|Uu`*%&0o^QC^-?&*7(_|iGk1&B9@*{oI?uzPFu7lZoc
zg$)?=k>9{50Q_P!%_BakV=pKVCK`${fDBeVkD~%mGxSz7{kC_Cooyjybv$r at ypP>e
zI~|eoPJRn8?3d04h^xiWgE)#<;D;Zj(ZC_y-?87~-ojQy7{GvhIYkV6aWw6v%Ma!h
z15`Zee4-+OHmUeQr5Y=#cqnA>;s=##H>#C*?W5{7sQ5vp8jw`n#0)BaP^s2Rs&)7^
zdGUiv)g!6as8sxrrlP8X;mm4;ZRYg2f~@LFdRa$N at XI=L at R>Hb&6nv)2qexeq=0OR
zx05A~6Bc>b;B@$kr#=10vp&Ju;@Fk3n6_Q?Xo)z62QLRFh(^UmfLWWpcM2a&umW2W
z$IhjWzBu(A7*y%?lQJ5TseU?TdvL8rpWSXvy-y8A{{wA{RRBDQyfu)(w$|!@OVz^X
zqE*}|9U-*qp{74UGqai$R@^0UBA~t{buoMrT9W+7rfie5y&**~%oc_<aq2b)PWkbQ
zJXq8$;A-sScFu%`)7NP9shhb!=1EMm3-<JP!~R6n?3zk7py_+o&qpgqsd`iO>@~q%
zpkg3~O`o@<DxiL3sx7lR at jY^G+wk5nne-PEH?!B at Kt=0K?fn}fMzf$9X>)EU{(W_Z
zT%G?OdjCL*@+oljev5+J-KXh|Idz<Jy+G67uZJrN6Y4iXKVj?Yyo|Z?)c|1x(Im(H
z^uG5U7xwAG9c7tXcQAQxVGq&-!;<QwoD^5FC at xWZR8u}EDxnN~11-3_fTQBdrK)P6
zN5I5~p1BurE#D(g52q at oxk|b)M-tGFR{0wN@!dFvKZeTbD_jj~Ije=QB(`yop#A~U
z$+s}sc$)JavKz@|Bh~@Hp6Wn<m0RfPFQGTEH2WVxLix0GN`Qt|SV at Z2t0l%jh at qi{
zEWS)6bwolNGm0q^a!4-&8)_FC$yX&GyZJjnhU>p?Iz at w7rDQwWPx4e|z<M5Ya#HDH
zQlXV%YA}7i`nHWIdz6OkDyi{N%1G;=?XdfSo>pzyMT*wcP8H9 at e`GR&P7wtO*@VJq
zrb&`Fc3sELN9g$Agcr3<@4Lte`G)68O!g8Zt~2U<cc7E~ooB+xLhfx|K`cV<N$YQ?
zI5D|!OaQ`hHy$=3LCE9>2X at fwJJi=VWxTFU+*zmrp=rZ7d&BQM$FOAm at I~OTSZL0J
zc*DsPac-^t&%w=sL~dcrs`5t6j?_Uv;oN!L&A?q1r3hK!9Qojoewj-lbvoYB{(Scq
z?#BE7A9gI*pAscwbS at c!!|MNJbS^9=)UjZM94o9-dKR+diqamZB3c?SERevyzXuM~
z6}5P}#-X*qzho+P(NsMXZYk_Rc?(H|yzEOqu&`;s27po9UTwZhh<9KJvqi|JR3Mn=
z+N0^$=k`z-qXQ9fNofZkXcJTaVs|fO8*}rl0QEhY=L)0$qmtkP at IpdT@1PXeKfz6l
zHlygTLsyvkAz6#Gu0c+~A*&k;(&@dikQ0Oimus%e_Mmxq`hJ1ezBh;FoYcnqc$ZD-
zzyP}t%@I at eWaWBBSLdaoY>>iX$EOs$w&%eok(}e%h%^+)ke2RyHFX*&IBsZ1SdFPS
z$?>xOIK+!`6PeJrId|^4ZUJ>#7n9b*!hyl76U)54kK}U5l%IOi#JIwZlhjbcL=Ql1
zVMePA(-H!JHfF6Qxibe-8A+Pd7r{}K2(iV-!Rf?EE(wuDS<VV?>LL!toBMm_y>VWe
zl>3M+3=cj$w8ypUO+PFyR=2gRp%|(bRLx&dul4>7eZq-I3HpaK=||~#QNQSR(I<F=
z$!3^+^i8d>+I!#iEW1qWeb*Up##bkP2bNc%;vw=E(?QkG`QG#$*qS at m7{<{e7j!Na
zdt(@B5T(%-&{MhD2I5UPQCoxmL<s+uwEc%3Fg_dn2fruuJ6gP!#3BXXPEkwf2@%6K
zVuyZ{(}HO}V>ukpF at Yj=iCL}s-odBUVs1&tMdKTK1*2p?6;HXAfc?6RERr#&7NLO1
zf-Lgwq;e_Hl60m7CcP>ii+x$sM?$;I1weDeI{rP6{#{N{qgjZv`Y745xuNe<%LUxJ
zogzcXNRe4Cp8j5nw)g&WE}Jd*zB75HGoYt%%m=>jjaK2CUfLKZHnJw+^y|*5yV0A|
zRyjGb{287NW1KBB^)b#s??6uP%h=I$5lUgYXZ=WL_3Dw%)O<Xx!Dqzyk_8`Ns9&=L
z-Hw`y$0C0VCWE6Kn)9*2n>cNv*n}NtjK5f(7P3UKDcAeAN>iw~5nF|d<OxEB5~Nj*
zC at HEV5~?^0RR}_L6v-6UUr3pHh0M3TLxhS}H6C23zJ!8<){sI~^`$MOA4#6Td+_^)
zJi%9ZNO>}9&6FoBvJz?n at _0D%v`@-YzKtv`M1Qsv0-PaFSmltGr;kONk{Qy(>i}?O
zQ~+KO{jn+>*A~_MkOpj-NCGv?uMe;KH3<|DAyDInL7>JB5A<%z!MDATs0Jxf!yr+^
zQ&>5GKBxyFu-D}llB?$-R}c2mS5jk!<5c8PkgGqFT;Y!7>Z?QKiskA2Dwe2#{tq!e
zP&L&w;yzTUSW{uDD440Kma|YTf>0eTgvwA<uZxZDvq;sUR8>QUs;c@@RY;MmJ%j&a
z$kkhiAy;DE0QGKpq`?YOUrNiBMNd(-vs_eOTYxWWjJ7p}qOnL@=i;-yO<kS1jW@;G
zx;nirk**GJXS}`L+ZOe9cE!9)8{6BOC9g%{&ZgFm#>f)yMQ5IAK7`uaqOnjc9F0Y%
ztpua+<t>fv(eM?Q4ELH>27OCgdn_E8c5WoRIK2EkTe6O}&QPqaBRs9)+_ugbXd~w>
zZ}85Y=WRH*rM;^$c3!l>d(gnk8Y3O?Zo%VR;-&!h(MH1E;aD3LMs(V_o$-#40@#OY
zj;shp;+=<A0O8KYMeX5Gq_MNPt0P32i?oLum!dWfFFaDz6^Vr!7cWK;HlpN1U7hVK
z4litTTeQ2qamA4ZZt042G{&Z#OCr<N9=`m`(XP(Ro1#nY%cUz0a#T37+z~z~S;$~6
zn93Lq%Dkzoy(=<pWn(<nb@|~4UQ<_`$~qc~H7<&`HzMfag+id^$i|ZJiu0zOiv|%7
zpLfQjNt0}akEAvf?`(@rTiF at CJRZHgBYJt%+8&mIRXDP!E7}%Yfr6nXc53u&Z#WX^
zik$6 at cSgcZU5h*0E(<rKg?4m6R?cj1>kNBa+8fbmPmLl(Rm=;yiN?HLz}t|sMsC9$
zaX^d0UdW?pxUtqqxUm_6)*N2$HQu&|qfu|HwXqX_=ylZLs0&A05Sb_>FM)U$CKV7z
zyp5>EX0n|fGx*jU>+&`>BXx)lN&_-M#pE3i{bJ~ekiDc6pEO-|i6$Dl(sVY`E65z)
zZe)N&w6iIk&d0KF1Z5GvG!6}g40xx9p$F9WZP0d+a7%l*DaQFlaW6tiH+$pJ#>HW8
zV^gFHMb!u at SyGd@wov{?-buj0f?8!b;$7Al^>#<PmbNv6$D(-5t13&gL7c~Qq++Ap
z;ik5hHl$7RO_wiPTT`pIv2z9LQ|ex%WN~8~R5l`n{yf_&GmoFD1;J!jfwb4v?@D0r
z`UZmfS at 8Db+Xhf-I+kU=g+5c*k$NsH%m=jI{hno?$6sf>1f5`R;c6^%hi5`d9INTo
z*dd*cJOeA!;*3v2_cm6V;p9YlZ16Lh{t}E{bEM-6fG_dT!ApMy9jP&j8obT4VHJ*p
zR{tX9i3c22^QFgWfn11QZ+K$S<6HZ9W(`v?$rb=VQ6DZISMzvW=6tWFZ{4$nT+#G(
z2gk%iQ#l%ygUbv)9Apg#q2Yt+`VvI!VG~K_D1IwEIGhliual13OrGK|HZdiQhl?2l
z;USqsiBl$@fk%MXH7Y3<LuWO2BITf`diu$bAn8(+)gsH5W4L?>d1jgfZAJ`%AwkUS
zW=4>u@?^e_0t>DNc)&%i$&i}<9QhgZWFkNguV)@L7jjmRzXR=n))w<n5Ks|8oJjKi
z$aS-{67;p~f+Ph}WD8?W6!Ho<D!7o%lR(Y<Fqx=p%Yb$SS&6b4F_joRiD5gXNnQl=
zSR4jmr~spr*d_S5W2{W^%1SL+U5ABJ!taQMpLNPeaV3V+)y3?Q#G7LC&2JmP+-$FK
zWe(T$!NEH`{9Qrs{dpH%LKdUAgfBjz|C3dW{_cI`LdMv4h^mn(T2d5DL=o at u;(&g?
zrZ4yMn5Fl9kLTJ|<i_fK9|z=|ggY9?Rl(*49nNyxntK)<j6J(D;iBvXjLM=LUVB{y
zeN_v}yeiM=AbdUW-i?A_?ztESae!+Sg%H%AXQ%m%NFygSpg$whrEh`b91CwMku*A+
zaiuqiS;Zj6QvpufPZ0ulNZZ$O$HRf@;-J2S&S>D2`70BC$WXNqp>5TiDBT4IS7ku|
z5 at L>`g08@%>w(xvthC*8KkJHWe2LS6TEjBmb|f at Ym3sQAm`R;tyqV$Es{u?KlKmA-
z2D`Xkcp>%@@EAN<)RWM;V%`9n7Uc{l2P<8q8%kFU9fApr7!xbKsbU1>`Ptq9kg~oO
zVX5$pz;utoL1<$@i}FFU at TSg3N@NYIy at 99iF=T;X2>IPMc#LsVY}_p5_j1QH!%3!c
ziT{=<(qx9uJF~pve4>zStg^SsPU-1yLw1#9Z5ez}q-INM3f{<jCdiD#(|;D;8*Kx5
zJ8*M_bJ7H8 at c(gs*LhE_bFIt$zq!t*UG87xI$z3l54c at PxBEf2;~uyBakpc?8<Y_4
zD-cqai(CvZocI(OTF%5=b{Bd2M}qbsc~6tZr>MCR3C~glN`T>MzC(j%BqM%?kzZ at M
zDC{t+E~?JLc1X1<Va`a?9*oSBCQIL`NlA^)QfEp$@QWyELyz!VuTlEO8v+}$fuznj
zR)cbl(W4l^&}S*b#`KqrJX4V3NR;TAGPoPynx4ziEyb`DO-%P?3I+vMa>N`CR)X&A
z<#te}@DyTtS|l#HvRmBXcv<5H^M_G<;PwG&G{K+PU0 at 1te6o=j4#6Mp1}gp*%SV$8
z^xp4fbnw;8K#~)`6E*yRh!4vhy$(-bgc=_vZi=Wg7A)B1fk_%Ombze~9cyaz7qM0|
zhE$p#kMgIe1!gaYFPn-6 at s%6ROHO!+=7dn%Ml%!(anhN|EbtFiJ4V{H^n7JaVQZT8
z1fwnwK^S|2v$%$`E@!Aw;4pKgwusjnj6_lB&j%~sjZFiHX;hkjW_XYnEM*O!nMbCk
zQW-@>q!dj?oClFCC1shM4Y{Btlk3pDXf5Rc{i?!bEJ;W=0L(mbnv9i}^1-?q;WVQZ
z$XEqe2Ni%mD5){W$9IEQTY)<ix)ix*)5$bMjTYS&IbtKI1|Wf0XG^n$o_-!Z0W;EP
znV^fe8cCvnhH1t||H0<|sG1LJ0x*8M!JqSF&RM2fkqd_S4==IcyR?{R%%NCoNvbgj
zSy5WZK%}TGvy4Gho<XFjCnI&#)DOZbt?2AIp-c)m3&hKo?7+=FXW?FFBByV-^Cxci
zn&Hl09fjil at zL)6!<<j&x&JoI`Qu^k-NT$_PfY#zWaos>xgXAP)Vh;S$Cd7%I~{jA
z5o!nhS(W3yH^+5Hj(eW#Z#j5Q2Rv}V`PmX6)7;;2IcN{(Yn<+1xEz0XE^s&=%5ne5
z<p4!)!C8m_OWN>%xaR(Tj^o$PHb!zsAc!rRH^n{25fBsxr8{=PADB_ at XXJ}n?xh at w
zWJUKQ9(KCFmFsxaRV`u}4^rISe4KOmB;5Wk$Ni3raxbm}H;;Dajd!2nn2mQ5J#h1x
z&QpFwd4Ir_blx_~@ub_mZj>`I%ze`+$6rPQe|@AIu)&0Q466aW(%s{fC=&ANekW|5
zujCB4HjHwtKFYmilp{6ljT}7SWo{Vs_#HXmbl;lm_(RTv;6}JeF4B9l^HX;?-Tfn+
ze|6o4MV_~ga6d4@@kh$28Seq-xGS#1B*UgWH@?@qd)Oro$2-H_1Nn|?N4f9HXLf}Y
z&CQoM>%TY5ee1EVACGjucdQG^|M9V|jicOO9pkzt-~GEWuHWUme=)}OHIMtZxc9j4
zJjQihf%`jSTssTg`;K*eXSBP2jO)qK?q40_96Z+jqcM&@j}hr$V~%9*v<C}%;4OHl
z(!Fkj)3N>wy->RME_C07hu^Jq-?qW&)HhIxnrXlJ(@xKceuv`*ryJ`?GT$9=UU7%>
z0gw*3&c6FR$L_rMocP&0+<oVHjyFbKle6|b$NJHKcD^^wasQZQH=gI%as0h5VB1b`
zgY3SdYn{N}I6VjNub)WJtrO|~zKL$&&rWo&KF{&@68FAoj&GH^??2D+wK6x}{&bof
zEC#31J=Mb^Bo-H!-2+bd=6uI~r+a<Aqc_L><9x at SoY{}$BYDR?neXV&&By(X)XZ)g
z=6*fj`S;<Udnw=X+=$NrzG0;Md-;x^j~oZ&#gS(Nxp!0p?$hNk%9%SSY!(cn9^UHi
z&vE>YN{bRAMcv)#z9mNmhIeEo3%PI0B#XL}IgXtcZUtxWb2%LU%yqx*cH9o>XT~QY
zM(N6Sz|rhj&>3D1UmU!IUg3;B+k2YhwBe5NUU>A{VsHVHPjrRX5nhfdkEnN9TdY-j
zN5?zH4|l{nmvnY5>s0)e>8TL~6!RYnV9az_AZ5Bjd8156D5#u&P!N#=1%T%<^GSN#
z6_6e38PAyxbLADeT0 at 4fSiz+mSV2s0xMQiKHQe6qSc)QskNfOUElq(e4#P1W4M$=o
z9tq=dY1nc4>8GDxHE&K}&P?2S=eLp{mpr!)ui^~lI*@)@I7*wn4mfHZlN at cGJagq`
z*DOswP+h{mO0x at CS03wvtdrG=1%>ZwiTifrQA_sjqaUo=g5Oizr>ENQ84x5p6cWBy
zNY)AxHgqHxzE?<k1j!ouktBSdCRy14PYo at OBWnyd%9~2|@W?lH>KnK+vUzvXJD1Q`
zJJEuRurGj<jRPA0UzB$3AUUEu;M$?Nd0{&w!dTXDNpYa!>DUBbFJ$b45`)9lvIh!?
z;`jvpl49~p at lswgvdq0t40lK(UX=bE5av2Y6fm#i1?2O<3z at b)P7i&AL~O4eyq*0V
zM588|>W^lB1N!^qkqRaj!|!quLU{T%LEpf7{t10A2=@s#D54eQ#8s>y_hT=2xj at f;
z1vxFy8xf=hdSady+Y+{dFXUu7{mAO$`*bDUQz=M{RpTT|8H>ijWvn16Qn>KF!euul
z_5afXS;ZnGhAXBhQ|0y7z`=yw1W<8L#YzKIPb^7>Tg;SSIo9DY1>_#XS>xolGze8$
zp{i$jnU8(9;6zPyk*weox7b+-B<0QA=O<P+M7}{9e<py1UX-d+0~jYM$>Jofksr;)
zHw->urbA5w$1m3_upf795XlH8FpPl*ptj;gPv0 at Q%J<XcZd*<*M1B}si)U{D3jpwG
z?6cyND&haLm-7Wu&ao}SCvr{=>ff$-J$+Y at 4kC3qMAo16^jEU1qe at Av3P`Mq6un6`
zj&+IS3c14XhrVFH?I-muv?F(}QVsLHqCk5D$-lk6V=HXyTIe;_AUIzh=`*wl7VdI7
zWp7EEp#K1`l!a?NnDCNo20bo4V45k>jV}Ob-W9H_s*9^Gp=Cv^fJ}V|x!Q$UvB9s&
zeoF`*$x#0euuUcK68*W1mZMt(eDEvj`CMMBge0ohLHgS at 5KZ*Az1yiv!%Q%CQoQGG
z+^1L5<K-R7%bP4Of1>frS7XzUw5J}%J+){bd|*6U`#vP!=%@K!5s(3Tm+al4knp`i
zvR06+Q%Lw;A?Xn$YZMZ`Pm}zM>^YPZtCU?-Zbod}6~>kBv&^>pL_Z06q0k(N^w8jg
zhweY?d#-}7`gpdQKTmzrFt)0;R_DQ-Os`s2ZTv7S@~$Ss%11#Nm)alV`yOrM!w-o|
zbdJ<V2NP#uL2r=GU))chcWl-+mWs=zRqXKeh0$N)lOXJ>gWcMA|A3cC+a|}L+BbWy
zeg{#}2SNQOfo@|Fo_r7DYnnhZcPeeF8Ng~z=v?U7U{b at p9rmr<=jnSK9D+J_-NYnu
zP_Ha_y~<O-^J2 at fk7ijRO+)5U7OJ+=EHdWwE4 at Mb#QAYxK_pgxXRuWC%a*ec^++Ce
zxWcp}eg4zCxd=h0 at 8{1b*{g^H6@$r2SQTe$iQ-_z*7$vNzHx1`%2|cwmY&|<psvKh
zNv|M<I5jGE96qzp$N9*#=F-!j=c3iw8g#_0yuojhz5Z)_AV$|!n*J#5ISPl~NaH&i
zT7(RQ7St!}iZth@)JqTnk?v&mE-G?tyB<i+Ke~>0cA;<B`J?qe4W4Oy->#phC6*(>
zR~DH03hFbkM0YFYZ3go8K<q*-Q65Y#MAlHk*w-tlA0MoEG`^)asUcr)BVYYgmTzv#
z_4L!$P;@5y&ylZ_{Hsp at niIQC9EE<l=Yy7N{qo at -41V3T*CzZ$OZs==8(x=|oWB_k
z+E-&I2NFwBYgmtf{Zci3Orf!hAAP(ElWz=Wj?W9|3z6|TQjHoq6w|^d)#@ks_217)
zG at pdSlA2Gz*5)lZEa`>)wG*E6J0A;9c%llMnsc(R9)^O|^xQ&1{Jx!j{SQ^WoAYKR
za!<l>N#p!DGXTdW<rb!B;#Rb)U;+~&9>2b64)!YFk0q`i at Sg?#f88IP at Mx8DKL$Wp
zDhvLo?yG$WM^C;3Sa;pK4a;K39Y0qeH at c=`TjbT$v3LtPa(b at j?<mz)p?PL*){-N8
zv`v3?rE<7Z`%uIXj^s=hrRaG=jP?S97<u|mK!4z;4+{%wR at W7<H1*N43hc{`mErS`
z`T#3==Q}@0y^hrlkgHmJErBwwE5H#^I9KX;I#&wY^(X7_@!A^!tPii9 at R;AZy>`Oy
z)4AEe3nS)Z&Yq-7-&BK=!-Di0eW0p$04B~DtP~oPgYv4X7>J~3Z#qcI_EZmo)g<zf
z5NunH9m0<iJB0JW-(!%%n#4&E55IoG^u*<!_eeh8OLdEs(>eD at IiGXS^e=#ypOVhp
z>I!Bg<{$MQW$eAwrzv%Jr!~uFl;IAP;n%nfe at kzbMKWBN_><OOye2{nEPDTjt?S<M
z^yNb1nBOy7?Rb2NC++xW4$qFK@#+=E!VW*?3gjmMawbr?>FF~jj91_PWW4$>aG-el
zE}@<!s~wN;st#qxld5Gq9u<BVcKj#xEuA&@^q`@^O#Am6SYNcQYsHR_H66@`cah at g
zrA1U`AH(*kVUI&@_Cr|>{=#CX1K&q>I<3F6*y-zNSdhumP)CYBl50S*{^}}p&zOkh
z9mi<`v+rdp&&2UTd_wXY-1g9SN_m6FQMv+&nFV6GB5aHEVHwmW78lhfy1ca&Sho3m
zz%%0+8l{e*sZI2)=C at PW#^(e&;CjMttzyp=$7;VOlLP<pS^f4af80N?{72wC77O7(
z_`lFk*zYI4m^i_FK)Ya0LW3dR(|tSp2Q*LMm7qs^2RSVY>iaLkI;3<FqOfFtrvEiK
z;qTa}gW|iY4L6jb%NOh02RBlFg2}7U<71UguwwbxSOw<X5xJBr>cJ8XC?MKda$7JF
z0p)OH5?N)_fij!A0E|)o2nC}t)x}RWupwVfHQ}DHi}3qN`J)j2d&*zKi9yCUL2}Ok
zEK$@dwtD(z!-5VbzKl`D(jtr+f;h`3F$dE9&!GM~D*SQYJK!2>AUNJehjoXhVKJG3
zK#H+S4}+3 at +BDAjNNpMmUK>O`jMa9qwpq%|cCkkijuC{O>r0Rj7+$MS$1jX(teEBj
zy{RRny{JaAUPhAJKd|D*Y=}RpRa`PQ_JA?vPAmNq-9 at m-y_&wMw&FG9=ugN|Yz!wU
zH*NSMUE^voTv`R&@W54`uh1w751fY)HTpiJOn(Va_^Pva#aIWn+~1;kYOw9|ll&c^
z+5WWNtBSBt=N^z^K`K^JQX?wCW^QP+*r97Bm8>jQIZPBW|1+=(ij89KK~Oy4Z_njN
z*XVnYw{9v5MCBV$w5HUL6_<EpyOsQ6Uk>EA8!dQiup)(%9v+kVMb#+-9mIM(DomTO
z-BMwnMTMO}@zJtoeQ!EK;m at V~V|Sf^$NvoeV{c~UA4P`Lip%haR2e?yt1`W{_|8mP
zd4ItMv#4rg++^>+qkjLBc?pQqf2`m4^qpyI=V3p*L)m#)l`QN$RQX}rd7sqxf3m(~
zHg+EBTD9|L8+IP1Gz~o=C!)xYMr-Z at v|pkZCSU3)VYjKcYUdf@)wv<kDCzMeX_SXB
z5&O8d(bx)JeuIyh)tTs%XuTK~Xcv%9+q6GdICscB2DispZKK#d{&_gT;3NAimO0RX
z8kXQ2+JxWZBXm#Sk1;yM_!gZ{5G%fMmdw=w>Wcaw^z=VSuZ*uDXg8RmKmswohB10!
z(D{a;e%Y|nD&PzA^j%Luu&iGHr<{*+(N{27!(XqpcnU7MK+~~aK2e?L8I4`3{pcj%
zxipr~>we6TVr{(c$NG3$y6*Sl7u~bJ$g`ok*fV;8)}s51J?pDm>7#&h&*)1oSnY33
zU at Q62wdK0M9dEi<`@6BdyzY-7=yC*I4sUZ0N;H^gLT7)DruWkmz}57l_tQ^p#e1H<
ze<0Upe^#5=AoiDiGlqSut`zgdxbX&(OR=F#C&u4z(S|NFEaPuu-6Hv)N^AAk1~+SW
zuR{k%eVq8X1QsT0tDLO at +JC&9;G)#`*f|5c`@UABBar;oa;gOEp$@0ywR~@k^Fc!M
z${-Q*%7P?gUKu1~1xb;@h3^$EyODEn*+=CdBjS67WI&MYP)PV*Az3R()+r=>uaNWz
zk~Inm-=|5gY6v9H$3h3*GJa;a>C*@#uByZvxE;ltI`xegZ;FjK>3RqxK93iupeH<i
z-=I>!PzJ|RP_r~cQ-$}BMUg`ycqk-xE{(#Kg}n;Ju`#Q}=?4?!$JRJKCePD<2AVU^
zzK{=*PNNZ-!ajIAD0liRvS0UX(D0!{msfK$!K%&l1E94Bf4Z at qM%VH?@Tc<b7Jb%Q
z&w6ba8i%&sGy40q$(LvJmwQ&v+Lh3r_Kc3K(Pupkg593cm))^?*6xJ%0$jy+>$6^f
z#k0pVde(MLpS1_~`|!IDzx(mKU!)FOc=kuZ&(s{eZC at TKiZeM`oA%@iM>@$TE{}Hd
z4tysyFihLDI~Uuwi-wJn*f?ScHG^+S0?-|g2$$-Ftt`d#9Xf0;@{2Q-bC;%nTGQL0
zDXPe?D!*rvpS<^>AW$iyLbx8*ke-YR`4?rIQ3K=^@4t)2z`dXmj?UX at G_9&O;poi8
zK@&(g8Wfbrw$#^&3ai44QUMBicUl$7qrfcmO+>Fa_ecqYkH{o10*+^X?;vtc$Iuvy
zX5q~<9?bn6M0iQUxfl8!n+wU04By7iA$a0X at bG&g5#je#`qh%(D!>{@Xi*w}LT2c{
z2FLn90dCe at fKx77JWoA>{|~fy1~(ztcHD1i at kAeUA`sR=bUo4Hc^4aBJ at rT2WBtnB
zO_-<HhyEb`b1m^zVy-1tjg at hn3Ng4!TlE}b?$L&ArV}mR+NC}AidOp7<;UW?<Y(9A
zeVca4O!A|quj24Y4nHJuyD;f+go)csiCaZc(wQ0CR`uYHu2neK7YU at ILHc%JKVdbA
z4JZvWi8==tJ!{qZ+Jx8dh7=qStArjGhPtNzlR8tlX?J*f2f*`gP{3EQ+0#dR{si<t
z1vb6r#SlhpxV4^MZrY71-a<QqQJS=AT~I7E&mg`bF!5xaGmyx=KY*h_m=0TLZhB>e
zzLN@%?w>n))pI=y&-kwS?4d&6y4QGq<runiZt;9=z_WgU42r8`6g@^{{q(^X8Wuih
z%$;ah5OP0>#I+O~PLaUAE_+4dJlD=)H8}2m4HGQ^{d$=onk^Zj4`@DYM~eI1N1rOv
zBOg5|V at i&A+=Jw733z_?mm17(^(IkN7^C at izO}3Bt+%T5KUMr8^2Nc+(tF~- at co!#
zdn0;^rf-Kshs*hPYdH^oL)aOc2EC~i>yRF#4MM}^APQhvn at A37#H@`EpZU~v%wFg(
zZqr6xr`F<)7?)<?gR3bie6cE_xqt*_=BmzTF$?HV_;yw;3}8Q0d;+oQ16S1o?X5S-
zUq|NwlA|IS;<ImhuYrismR&rrDDwO3eUJgPS at b!WpxaH~Y}2lHFyDH21C?_8fTwRK
z%kis$O|L?Zu_q3CIGM<Av0RckuX=|H*K;lVJCYFy?wBV6`UWAlf6_L+HUeq%y{_rF
zf9dE|F9|u3&z at Cq5RjmV=hq-8uWQa7p0928tlx=gzsPEg#N)k~XuY34AMf1)qYqt4
z6dhFo??Xo4AkxTNk>oY(a)CjakyLasdAu<@_A}!1iSDBmQquL5=UTE_VJortC(gxG
zW;d!^=3&1f>ew<2_ok at JM?=)bBZ>Mp^o#FT?Dh2aqA-P^zxDSj{qc$?A`1p1h at ZG8
za<`c=98v4`{0uIeZ8a5pq9<wkK5f+pEaN{&R}tq1Yd6+#viEpX>sbaXjf@%%{8bVJ
zp>dETQL#s)a8e660tb>nU)6H)qf^gIeP7_cFJbqduOl`V#~G&Fljn*=3)Ndd;z(2U
zNRO6m&C&E7D9i`&C<G54u0(X7_SQdzM8N)CxlhxJ@$^URi4N065svun7QsmSdkrb(
zB1#=VN_dwx-<yHt#c=4FQVuVjhzMU4vxm7LRSAKUcA7En65}oH6Mx|+{z6Uvclir>
z{U=r|-`9W!WsdX7Ai<co%y7~!z~n_Y+62bb-Citmz{m#X$q%6IG at TB0T7cP$1+ca2
zLE{JQ?7Bb_?trcS0?f{zTNu>qi?nV2JVb$3J-d=mT=@$g0%+G5TvGecb3wM(T+O2K
z?uWDMz*Ezb^<J^MC8)2g48jc#4=L|f2d%*BfsB5PtO at Ji83ezv=!~$2Cw3060SY8*
z^Z2Xv3Zxi2{oyNk?9wXqdau6-2Wj1p-0o47Kh4+FR=kZ5=98B?jfPA<<Uqv-ybwM;
z*86P(GGZFscctx*TG|^ckgRw1zJp~YlMwZro3X0o1>C?5elot~M|xM!u6uKHPV88H
zr)NX3;DeSbJvjOU(T`J+a4{hJYS9=)agjzvAqs%<j4bXH*~Z~FP%kN*M#J+(sG2}>
zo=66{i#ZuHIT at IQAf>v#76~avLOgxv;8{t`@gJln5CzI3Q1Otb at 3(je(0C at O?+ns0
zUOY_^`y7`Iyfa=NmId`OLUe-g(s1SU59r(C;{y|3!E&cn*e;XY?GfU&iroD at p6g%4
zPmTV>roAVnF60P>aA?Vu7m#7m`!f3K*>(D3n4`<XijCN?{ecN@*EoL{obWJ~cu)~v
z{d<JNz3)N&5$xLrahQzC9yt};0lt>{8T0HxB(TeB3&6G<%RVIA;xya*{XsfA_-*I!
z0uvrI7 at vj_cbai+Vw^9ik0ZW&QzP*T{Pdmr?BYbQ;62pe@$aSH#3-(c#F6kiiI0Ad
zi;^WWwG`nfG0MgIpLVxQ{EWX7z?UHK;9y<)kWU4|Xn)qDYAs7I_><xnX|s9c_ml4g
zKE4lEa54ctT%pfH(%-HKdz?U{FQ;l1{W&abZ6oBJE{~W9G#1-0hK!zt4K|GRgybFN
z&owYzrN0lGJUHPMUWUID+}J%@u_ at BVUeR}f_ at 44TNMGD0YewhQPWZ>%<hf{kxuc;4
zu4=~;-77K4^c)`>2$NFjPT&^Ao~3#%+Qt=7**Lf$)9y9>kJ>#LI at 1NO;j^@MO{!Y7
zXtW&Xmcgrqp2GYh_M{0yTL}Wp_VvGT734M!69_Bcu+g=7M%&23!9K%&A~#CpJ3Kv4
zv3M{&PiHWCW?)?Oyle0}`f6QdfxIb-q943X<FSPZ1V75m?Kt4`VJh<!oz$)RPY9Hk
zs1KzIpjfcuI!&wMd)`DYZ+t;fX_#rFanfUXRP5M#9JRsw^&=HD|DFhA)Vs1k)6c=q
zEht88{~hRk58KFm83AyIty<Q)(VOxfv(+esCeT-Vv0uw+6u1b15i9NU(t#S|Wt}FA
zmoc6aEa-DU$)Xr65URS;V4;Bpx<+({i4LT$hB`!(#UGC{SkMmbl0_X at AXIgO!J-u`
zy1}9WEE<Rf`WTbN7flwl2fJj^4HgL1+k^6yTz<G3_geBE_T=e2NrqE(h=4evk1#oI
zGdadhj=YK{sQ-YN1e5oy#gD=F4q}nKXC3|M{04l9Kw)`?$?`cG&~j<_QV6i5 at WJFy
z2JmCB+>U#&+(AG3J at h7+_!a-8Q~7C>xhVag36 at 8#<`voCNWl$OdvFg{`{+mK#ob`F
z8&68=u0b{ht3s0%1pq4w&aB|9N;=RFgBLl*6a5ABpz{Y=p3w<<g+s@@{PR=trt7^-
zk?f at htLQw0ctni&%G)Rp;)^JmNAj1Ic;c87{pG|Vc at O#Q5r;-kI)5yt_tGmAHxVlt
zI at M%fnr6?z^&e1h)L<)qB>M*3g8g!Ok@#UZJ?Z>j at 1<8 at Ps9rQE5THx{$9M0waLNt
zA8_#GFZbhxWPb;4QF`B4Eq=dy6Ml7G(eGK`za0<oW&dy;ez6j`e*nLp(O)Op)%;07
zqMxU~N8c=h(Sw%g-@#-*pir9LOHTlI;RlO{p{f|AN1(gK6a9EL^zWgkZN1cK)1~RZ
z%)>2y3g{>C8+y^A_Y&DQY-cB_w)KuR0$`!!g(MURvpH=)Vq;qzDnS-){2!X05Il#x
z$Co<vKJg9W1~QIQ=fr6G*9k;9{nRUde^pFGVt&v#4=Lf_heGo2_l#b$!!tU%8#^`u
z7+sC!(tJMlC|cqLw?}$Y4Sdc4SwOb|1#0e4%)Y-K$^^8(r;mo^sYmgY&JW{{!tP0t
z<<qi;pBw0TD#}DY{{@y)Dw=*?O-}bz`k5y*&qppK{d2G-Q;(&e=TZ1&X?iz>|7-d=
zNzb7)eTc&E;AdX_<=bgm`+9FH!ofL0xvzvsEXN~vNMes}aqfdKu2Kt;4|6?5j5hf;
zrr{8<GLuhTc0NRv`We!%@<H_Ge&Mp!o9QXa&Sxy~$+PlFvYtxw+KoC;@+MRh*$XU)
zM&5`j6+oG>9VzoA7RMo91DQNXwTccqg9lNiHlm!>e9^9qa#lmHZb&Dj8odlskx{}c
z8&b5WPS%eS4wYgQMm0LPA>k at hM<JYPZ_w(#jQU-Rl%-k7zQf9ed!N)D%%}$e(4v`7
zIvw02Dty*}XlQD<cT9~s2p_pq8Veh3 at n%g4_DXw$k0I`(WTev}Cw_ESIt^rXSc9LF
ziqL^UIFaj22#3%&neDpoEQk)jAX^E;uED9sO(je at QLECc#XHeRCgv_RScz$T)@*K<
zV$4e!d*Wd5SWX|h&cqTYse_o!;44O4!;BkbLZs7dONc=3!XnuY-fq=R=fVP1^T6I(
zgX4O6lL~{%0DozKMJBi<^)wWif#;d{1F5mf{T|R5BY&<E{!=_ at a@2SVKm2f&xL-%<
zqU$Q-9e#TVFn*19#xLrEFXNY{y$CRV#ard?%<Ag1y+sQaVV8us*H=2JbW-t|Q{wzs
za%D-`q~fwkz6tULg26y>6yQH>9>>f%3#gYGAPl;lFFHYjF6U+Q9M0th&d-cII&TdU
zLt)188xfXnY0tr8iA|*6s{Deg{Jffc5SQaIDBta%-|6`U$($MaW3P8r<$JHmt;#Rz
zb=Txq=ClsaF9K4PKNb|z^Yf}kI5d#2mSNAM#No|Xa;E2xy}>m--<!;xo?mpmyDGo<
znxm at n%X^Qm$!~C-nwwt^1YAJ at O2G?33-SMtlGif&_2(B{lY`iLT{ZdMoG<5(6^W)e
z-;;EgP+=T8&b>Lqvqf4p!YC)_WpzO=#iMT~&Yv;LlFEhBMc4bN0Lr2 at K7VE&gZXu?
zpcC=c49Vn-5yUS>JaCOe#U7kr4VBqUl-U<3{X_Z99^nO_`-vH at rKo%6m*3EP^fgCa
z?@s34;QC6AV?N%Ufwa^0Gzrb at EOi9tW*zl7UCYMU6xdbyd0VzV^zb7v9jG3tPo#_1
zfg5?bp6cuxs<YnQoG%RLYJ;@+N8~h{4}lRmTg?Z^5!J)>lGo>PFY*Bf*SM~yq|^I-
zG7mXK2ifS&$$4#feqQYe2r|hqnTd4$5dS&+jQoO(v_#Ap>qdORNS0_XLD{G<H_R8c
zAv$Y{E(0sWeN1A{(u=fw&V+o11a~B6`iSM`{frTgb3xiF(@tK-blPgDoY10BPVHve
zW{k+W*nB|IaNh5b;VE6#vLXK4KO%qn7?7 at P{0VF4NF9#jnF{iR-*aV{3vqAB6W9Hv
zW-k2P&e{(V#|{|>)iqu8`+~%{&D7=>pqTPzj%diw!#hgDfKne!nywQ_^krr>%tASm
z4y0{;=sFeunLfX`*M+H5%3~cVT3jIIi?C)3Rt#*p#O at -hw2W~*&dx8+Sui}`i<*V9
z5<1cgvO8s%rznh&T~so%lJiCWp}2Nf;v(z?i5W6j1Z=;=F2H at J3|?gB7h=bHeYY&X
zt3k at QUo>^<oP2LB=&QLSm^p%KOWc#pQCX3GqKncY%F4 at SMeX2njP2>Vl>W>jp6D-n
zU9<AN$i39lGe at -MkFD7P{#&`eh|gUz+(Zh8i?Hny`z#|42l0PeV&5f<%UDad6>7)m
zxn}0)1=03pL5uv3q3Ld1E%XQBZpiWHk4;ivbUpQB*HB;7dsI%4J2Jd7I-elO>txuI
zsV#9>^iD~aKQpZBuh8w(4Vqn7V8j<Q0R*Q!td;!YxEFa)+IvtG6C`AYs*4&xx=V)p
zITbq6anSy>&UJ3Csj87wGgVNxGqUx0$S2tDm*x9+MIYTj{r1rOuCwNMR+jvdysV){
ziHqx&WgPMdBjI9Ttujxipln%|(&cNZo0;f7OA#d*2x=)$ACVIST9b(eAgf;R-!A!+
zP7tzM*L&18?(1`tt{bR2sjn&?hCjIYAfs&MI!EaP>s&2%HbVn=TrPQCo28D}9#H$!
zO4sOg9jQhS>IhwYHe-m=yIaOVqvb=&K|{{{!bCs;sZl`j5wA0_mla(fmDlCqv0U<6
zEZfOfsO_uv9_O8Hmzw;#oFACtsiq5>?;X6DF~ml~iwp5$=8zYp(%4SDOP0$~hAd^X
z{{mE(G7Swm4~ep|*qq?#1<zcWp9OS}{|<}&)C#Cb(%g%7W61A8@;x(ut<yEZl{M!x
zMz{tb-&v}Cj!4gqGOjz#^sIHN1|6m6Zb|cKMtabG)p|(V-81udJ9GY$HPWgPuB9ZM
zs5DFQXtHe;Qo-Zu!hcadyED>5?VD)nqK_er@{#%^-M$e;FY2VuRh*@Lqb>X-TdNoC
z`wq$9u6>jKE*Qm0a8ywOEcyklLh63kE2x$X&7zICG!sB@(vjmv3Vwe^KWOA>h%RPX
zpCiULu$zC9y`htu;=b-KnZ_m5rg2f*+%B<Y)Sg(DXPNbw)+JJwD|0rWviw6Tt7e3w
z9l^)s;}5QHlbth{`i>y+3es52GERY_&Don(B&LsWjmob4V76=K0DyEspN#K6p$n+&
zay|HiYZc|!qSI&5xJ=bW4K!ZJBIy1Rjs^s;lf2$PEPd;0r$$`MJ(8-}P(%=iY&xA}
zs#})V1?aDAWh&inYx37QUB7W>ttB$kSbyCwdCtW%^F$z3Uyv<w1{qqoXxC6GCpj)+
zo7Ht2aw4s$FDM2Tm2a~Q*Kd}|TvIlOjP2`kl37!VK8W((F3a~z&|Qa>_ccye73Dp<
zYGR%PlIOh_NuJsI0<}EB^P!`&rV=ekl;;?k=S_GP<+&!KJjw1Zmo#-J9ag+E^Y8Ws
z^Y5+<<_|1%{W!ahFzfS1$@_LQ{(*&ReNtK8EorVim>i{Le^&kux67HmEX{n691X^}
zp2UBV?;UP6-gAK$OPbM;2cr&?WH)B|in?=dfRe>1(DW6}7GwNw8U9o=j_zLfHM!Tj
zun8;a_BHZ7xz3qCkLO at FlMkpaCm}3<jIpan at EB!a2){ZWqtt-c(^=AL*C%m;t;Quv
z#tS}$$KVexHO;DRN$J)kO>y>g>t?#4Ysgk!K7^-8cM$Jxl<z)m at UrMNZg=Urt;z3k
z=6oe<GpQNj1-}=D#MP4_&s48 at SR_lA8+tTduK}u8jeLL_`2c6<ce}QrW3V^@$03|1
z!=HwG4xgW{SK^!PLiRxWck-_exm*roG?@9y<v2MLkWVhh_#rr{#T<ptM1{g-diByE
z>AM^S-yvUphw;yv{!{jI%6Bfu=j2`bXBsj_ at pf}TI2`PwH0g`dgz}EYU^$L7PJTw?
zayd>nZZm#eVw9DEJ&AA>?+)k$x{UEV-MbuT(oe=k^U*m9AMzj4wFT)WKKn+BXZ9K5
zwgGk!^Ose?dp`i*$M{6{KT-(t-x-(7ah7qL@#}K<GM?$7AGWL$^}AiBBTrJ0e}K}t
zUgA>qIVK>Vgm1Ort0n#?3;tK&#Q$y!|1%L0;R6<Y8F1qNlEkU~)AeIXf0x8%H9MY^
z_#GBL9*kFr|2m1wAIEgy#D9dWZzEq6hs#k)KSM5;gFgVuf=?ZS5#VxE*x=_3!J{%g
z<79eBuNjxiah`FT@#}I_W;`1YF2{7^HsjajsL6OX9$bzY#;y6gmeT`ymLf#sJ-Rl*
zexP#G<TH)i=z19)IN{%u_?-fF`~q at J_$;y!adn9w$CDE0O$UKx=2w$cnLjSatV}>Y
zxy%`q%-1f*oJ;^ud9e3$6rAmTlTY0cdIDUIc{cd`A^4w|Kjc>CcdkO=ax7Gy(zh-L
zSv5m1mxH{!mJ5oN^nhcwz{&Qa>${9kbWD*AVv~R!pZ5s*fgcHgY$m$yVSJ+FElGd7
zfF0+eA#goHuh2#I2wfW_z8w01E~7oZAo1^7 at EY|0#AmYwUoG*MEw}^yB+-wAo>2ME
zWW3O^L%`fe((NkXPDhhO({pV<lze=W&uJzF)nl4ofq}QEk9;rs?MdeRgF%o2e+Tv~
zKiL4}?`w=VTTrYoVLUtpe_PT+ZDm{s7(a#m$Lb3=_wlDVZjy3kyc;3$?G}8r#0{Uj
zLH{X<kCpXq;3rDF(t at AD_#~xg79l1`+^P}Jl6b&iEPp3UJZQnsk+`)bRY|<fLO)aD
zms#*yi6<?1y~GXqHeP>G;=eHf`5R*V6i0)l9KsS`ZNZmFe4PcqRPuk+!he~>cU$l)
zB>tKO at 0GaA=(yy2UE;@D at UKXm=DO7D8xo&k!EcuM1s42PiMLzu+a=y<!G9`oTAid`
zzm)jR7W~%|H~MiS%zccX;@D*=&j%!Z!ouhG5`Wc#KPGX*4l(#YA^Fo9RQ39cq~B%X
z^Sq?jEc7Xft32rbHOXhMh0i}EZl!-);`=Q02PFPa3+^669Hv>>I7ToYW<Qtua<s&~
zDv0|}NxayCpD6K43w{dYvU6A7UB|ekvhe;Vj9Ur~_#YXU%3t9#`Z#)!N?XB0j9axN
zj`d?4MvCS7E92;tEY~QWJT+!e(=Vq08cOYO)B_)%Gu|XLa&jH;(K#oZxRJ7THhebP
z;M;BRx4}AFdUo2-|JepV at l)CP6x!gEZSZ+E_=Uj7=X}mAhh_3^lMP;kf%nNdttP!u
zZZ*KO<#(11exVKCZi8QDgP&!C>o)lR+29Y`;Da`J#iz69_aflqbIvl$hu2x)>2e$V
zyNsvDaX*wHx7zT3--iBkCpa9(<b2k#<`lsIW;tIM04F&&>dE-MR?@Gv(En26>m>fH
z<nsjZTXP!Z6YOt!H~KT#%VCNQe!dO9%m&|RgFgcN)||#6={X9Hlx%W%0&p&$LJ`F1
zSC`t*>o)kKHuwuRxZ^|- at 4%^<@m?tLeX{AH`SW$P#0#Xsd!fYtB=K&EBRam`l=vEn
z$0U9-h89%s1M=A`f9C+tRz5$H^lK%ZQ~o|-L%$z5m1jYbAT;FUa~PLUyk5z`EBVX^
zo-N)M;KXO2<U{^rx~`MBV}f`#@Qo5LkoaBVwc|zL6mO3u-ebLj{|-t2l%)T%#MepJ
zkiq|}z=@BMR-;F}L(&gOdZT?k2i%}_DA(|lWxSI90{Kn at o{c^t>5C@{!mB0y_iX6b
z+u#q`;4ct9wA*+5-G=@H;8ZUIGCh~d^qh{aG+X+o*x=^^Cq9+ZF(BDFS|#2saflON
z*V*v-stx`>lFu5+=ev^6-4ZXBF1r?q at 3G;t7x?&`Qb|R9oVYy$dN3Q_#`t8DJ}&Pz
z*x+vHo$)zSO?qCJf+xQX-p_c2Nl*Swy0+Qi!=PWr=bR&m at Yg8kvw&0iua)IMYe(oh
zA9%KU{HhK9YvQl?uXz0j_$-9}%El)Ke0)wND8$8UJaGGS!WF+3ucZJ!8~Q67pLsU;
z)xgK+)JX1fO$MIMgdQ26GsDDrP8Cn at 1JB0)Oz4Gdco%Rgx81U9rZo$6O-6gpMnBC4
zZ?wUG2s|7AC8#*AuW}I|txcfo28nlnUOdwp0lGE-AD^R%2mGzd6}QjZ;2yM- at j0_h
zdYYG~>uuoK@^u~LX1wB;Gv?e+okVz at 2#mixSB~Fz8J}n3M)_}qNi?2U(TZ0**Noe5
z70diq37qGRal6;Rs|8MTy>yL1ePm1LLik%qZ?Bc at ME*GD+R(>s at EyR3PlIIO<yi5j
zMBtjl^CVsjJX?A$kn}Z at URH~v&xZadlD=Bf%OA%dBtG4O=R;LdI;$+WU*eS({0fQh
zmg)A&-#aAkkn{%rq{Mq9oq>DGM7)&}M>X+v9`J1CuvOA~C7tp6mJR)}P^q`(ERxi6
z9t=-az{lq-G;yAT$J3W>@UIiD_+xqQ9rSyd-mt114w^@&t9wfJ^xtfQZ at 0le1r?vI
z9KHtp)|@Yi$ne*YpGO!E4Z&$Kb~Zl8*x(aw at D>~V790F!8~hw}McLAGu?@b`2EWq=
zPubva04IG|uvHWh&DGP at c6RpkTyBGZ-v)og20s>EX}0`+-Ujcm!JX%3=W~V)9=E}7
zx4}2t;CpRwayezo*ReME`8N31ZSY^&;4j$V$DAkXcg at 41UTIAPU1v*t-6P_e)-urb
z4T<lT4q1c#j}mu0Cg^Al0bMiEUy}S3?-b9p9)K<#c(!u*UmN^k8~o_X?0hEJ;InM-
z^x>_OnwlJ;3+Ggr2d<X4b;iPx&c=3MNoZzp?)0i)C^RSJ^G&Ub;LU<)<Kl2tXS08K
zTg<<dLe|HohC)rtm-~Fal0}Wtwx&=t2Fk^OruvxA*VNh=3B at 9fZLw&e$zR`yKmO{H
zKz(V*@2{KPG;cQUCeaDKvF=D$_oQOMu{<<y5kiH-fg at n=uaA{=H?~Crv+E~^@DI<v
z;!u6K9f#8TqOm}IIYDLZ;b=6#uNxWim*ceBaHKIB_SYdqsgZ<GXIFEWDJHc=BaI(_
z5|y%_THVFR@%o3PxoT*d0UaXEp!hFL^Hh{`Q&;zjKyXp9e@^{O$X2L|&kv)L_CqeR
z6hGxZ7@{|(Y;eVdAadb(^NU0OZ^&p#acEvR9u0 at OA|Y{N+9x at tRxX>^;np$qMSHVV
zQM8$@zD;RRzNyp0olUJBjgcku!rfgFXf|I(T{tqMv7 at bh#k_c at K%+w&9P16CB-%)C
zk)}9Aa|4AUg@@LtWz{%rJQg+*=ASqFNVMIY`jBsOH8f~fyUEH|IyWBcj>qP9$J+45
ze|Q at H-<KY<1`k<CB~ur-cP(mcr<2T^!l7`qsj)j8>h9uB%95|i^)VEuZ*u*Tw(j$B
zaC<E at JbJ4mEY~b)lo6B~5%?pKuE at vDzPvsh3pOqaw|_*&GZ(78dP%tuwwiEDW4t|9
z(-!S+Z(L!D-co-_S+jT*Y8LN85!qlMJRct?rEMN6Nm(kuYLXa9HV>dDiO9@&+MJmh
z=xmF%HMX~17OscZY3zvlm-@@v09tZ*m_d}R96Uspj7UkE0*Q^pW{1PwP(__En*2*m
z;`*4`(|u$sNJ;94HZe*{$S&%DxS;*DqTPk!oo$!K!+}{a-eM)b?zV7Kcv%~IH8$fS
z at upZPRv()ji+8sZQT<dXPW0V at S?JnX&rUT>t2XH4##mP*P*1u)R+2Wlm{%y{eNFe=
z`TvdG{C{NunPQaIutMglOJH+-Xp`OFPL(}HocS7PM}OGv_qVmxq4P=0zHfdjnpN}s
zwvKSbk5|<pU#Wm<8#|$hC0J654!A{Hy3yKjV>BKKcZ54*6b5}+U8Jj}tvwtu0 at -H8
z=c{XkHHG*xTaGo$zNs_N%A>7z?X08>5{>?)0|(f~Nc~~_vM5eHXQ0F1)E*$gM3$oA
z&dzWs22qF9hQghT+d9L6j$lV=i9gserKAjhODm?*UmyOIOrA2eth{uJZ!#Wygp`$3
zlvPZbT2es>(UnXool;R!KBcUfNC+(}E-9H>T0C_!vGkSmA74pXX=%yiQffRM^X7-h
zN+=Hbin|*ljUA!bitccBtHW2E)_4B8wz|5ex*1EC`pwczSEr&Kve-+dP)%$Am7pE_
zCPNuS8ao$<<zc^pITfMM;?6ja05K5kL@}bbHXCkTeMzXk3?cpgrS%n|`60A)lxH!D
zds$<o*(40b8W$_Z(|>K^%;HN6S-Jsa4w$LnOzSg>-dxEP)nM8*4Pf}&*x3~3V&;)C
zHH7qgvztZ<9-b-puZcTL=1WSD%lhtcQ(H at 0xLL_Ax8-bE@P&><|9qIJ(|u^Vl5ErY
zuTG3zIeeH5+41;KrM=!qJ{uZ?84jXod{HP6%J3tVOqmg^npqz*9ZR8hXwFb99F18A
zBtc*K5^0#$wslhf0Rs)D+>vq at iJKIxE_2||Wco9e{`gAxZz=zs!habr at zH$=zb#?%
zQob)`%2MW1DsT=}%ArcjDO70%{Vglzzs#qM!<KQ_G7ekDVaqsd8HX+7uw@)}GKZba
zVJCCg$sBgFNIi$0%%P?*<rJozA}E=|6!DiSr!eO!f}UgKKvNmuFjJXgDu?m$-x5Yj
z_`a0MOMRqg>SLuHjon9PeZuu- at v&LFa(;i!WZ^+fw^CoJsX^v6c7%r#D7scPA`C)B
z!zxUNYN3oiElc1dFpvxvK^AW5q@<HS*~}<e{xFRwJoT`L89tq-jLt*la5&K#v88FV
zbURd9l8_Akwyr39-O!#FMH(Y3U<tIv*cE(GF1{(E8w0Z_+!ZZti~Y at u+HJctE!^H6
zj<C<Ug+_Idrlzhq4b|q<cTH|-k4IZsdI%3kA`TdB?cq)#wI9|YT|pj6_Qm+;b#yp7
z!W~WBD;yy>vKyP0gqm8HgjyQgD5-Ei!rY0qM!J at T+PfCR*Nv#VB5-8mWpjJo(hiY;
ze{HiVF&yvz+Gu=;rsn)fk#Nf-n0U*Vhfp8UE=&xx#a4utlBd3N8S)FuuMyU8bEv5?
z*3>GW7lmORXCRR<7n>urpmSLpsON>F at s2PR*FmKQ!xa*(`3qIDl3De0=a@#(kk`KI
z`i1IS)Y_C#s0$K;LBC<QW|^Jv&m+gPn8T3Nf%zf$mi_fpLUlA#K{Ak;6szZrL{&|y
zMWM;6Q?hI!phC~!kX9Kb85&P=nw at 54L+LB6ZtseQjq%pu@;^vIrpye-X0lff?Kl=*
z9-BUy=YQ;3mq{lcM)fMaT~5muAibD4s*`TMx`o`plya5+lM*3C#t0Dn?3_R4Nb{U{
zdwZ~Jv8gbZ`pY{3QA?(jpz~-#%kJzd4J|D3m0*<D*t{at)ZW#!q_neZnKgGjP;G*X
zvAS*n&x#EpC=-KUyZ7n(nyS?7!p8P^I9fIjk!K7U+R#C?`5|81-WJDc at YL9JX}m2$
zjYyTbG~YvJTHzJJ{1~QEGOI)u^T*^-b#y}oAYY-5IHUl at -n2xN`;qAD#%Q!{aVHf~
zS;)dT-YHqrK+{my(G{rB4xz8xvgYz*aqDK~JOwV at 0K2;2Qy}x!&(jy_rYp+%qk4Wb
z<2J=$N+5b+IMQW}(|qrv_MACiuqcyNiO*`v!}{-v7|lMD*f%v0ogazET35_yZ(Pjc
ze1x9tOunThLleQ1rBV0}7RB2eX~dwm1K;ET3=O1nemDXTQDeKcfgZ{Moyo3bNc`k7
zYBZH!X3JcJxu(qUK5C6}ltVJG09KPVMLrS%D-HSB%m7(<nwI2 at wsr`aQ7e{yBunx$
z$gPZ#5DViY@*8HdE%BiYOtuTdkwslmSQFM_m?~;|sii_oeDh#dpczMM!yR3b6^4V5
zhsULvSZ2IwSucZehoGSj>5<H&D=9T%usR_*jv=ne%+TprreHAx`!H?dNmFK<lpwC~
z{u_378Ts+5xj&Wz;<+<s)cawXR80^1*&$@5u3_p>bF?ee+Su9L4z<pz9 at Ar3w~?9Z
zlG5776^k%+2oG#HLi1)Yv#aWZ^Zev9bSOrjBfLD^WDzT0g{4NLP;oXQ=$pdkyp(S;
z at KN#6STmdTp_Xo1U(!P6c4h+0>s#X>TGnY5lai^z%3IJG2{&~u?!?4Sb5&$9%*sx<
z7&!IdPJ;u{yG!r2Vn)~ucG80})6_Ox-ybHhG at +D1=|>q?4o%8O;WjjF>E0+Uo%W;D
zp{e<B;SVqVgN<?zF9iqVV5Y(66H{7jlEB?RnGF>G6k$kM#ZDSUS?2D9ocYRO<~C!h
zv8yw*v at z1wxTrl`whSwvczlsPD*KSW;?AyETgwVsFd|ZtmM3G$1GL45HKF{?EaWsd
z=c5HVu*-M}PFrU*9Ek;H at vNPH=^?%QQ$z4c!)rlvbI62habY;VIM%9;kZDS at 2L8WD
z*NQ-$(vl7$aQ>y3GJu6ARH89)cw{aqivtRSy~9}+R#JxISsaeZfuo%L#1aI!^ifLe
zE$Haxyen&yn!|7?kRq~Kvh;ChNGZ(^Kf`;79DdAY|B;ePt{SB>l=*0`5y;;`=a9L^
z*pFjQuA^QLSyf<LVaT2#2k2MPYOpkgW^NYQR5Rvz=G9x~Y=r*!f8RVTNqR at uQW_$n
zJj#uM)glb&8Y7X$6`{^Bykgww*+}^CN(t?;mY1KvUy)tw!VEeRW%nPPy{3kq?iyv^
zkvVall_cAobta*`)~u0zV>;f0(3-tq78A!lm}w$q?LBCY+NaK7nm!lU(Y}!V3V?Zd
zpD{IR`0;F3?O|5=kX at 9VfHt})r8exd2RW1T>{$#5PNRJuc&LyLcJLffm6Fo>Z&+V|
zb-1KlJ86QyncE+laI`hv(t?FNhbrcdv{}*tS5*hi_`{$2-;p!6BC0}j;mZ{TZfgI3
zt0nPKIxj3*mz@`l4UNv|-<o{eg<x`>z3t*IUT}Yqjv4Q>v`*iYs^;eEcr at 14A^prp
zr2CP$OucEdFvdbOv;o7eV(+zYGL3`da5}YP<uaxzEp7^5X<Z{03r+9pY9|jEedYk2
zS7-65!F^0rnCQmhC6(?-`nSxqmy}sOWpICmV(>W`1M^J!(jo3WqQ~-_j(9f*vu02v
zy{0RU5>S(F at oJVxKh7d!2{tV$4aaz7WL*N_E92q_bjIN4Q%cR^sx2wCW~~{{oCsDZ
zWoD^th_f!-$@N95t&10Wg)v{)xRh3oWd<!Rw?=_f!<!dsT)a3EUJMsXG}P7EzQP);
z!Wzt2M|<#az9He at 4#{3mLswLQlom#3cp+7DqhttkxO3oQ5nq`^ZK4 at c#s{6Y!G}R4
z$g{&M*w?F8-bYzKP at Y~tK<Wdt<L2-UuK>|pNJd^KTPuJho`!2S#R<Q-l2|ZPxtXRx
zIcAK4;iXuPz0_ZUnIc%Yc*u;}#*H-846`E~VuQ&p)W*1?&h?OXPY0BaIxwd>(B>{G
z50r at b0OwGBx?(EXq#TQO4YLuWbgCt>){nlHKxd1w`*d3IN5!SgR9cpKl)@umh@#cK
zXs?EaM>M0(piJw#F+F{R^9^<%!r7X7Y$c{k;7Bw#6&VRLO2}^Nl02;Zr9tN0Wd$!i
zkdv1g#Q-;|_<-+lLSi*VJDjCdL-k!`phyo8WNco27dv$nF)*8j&*~cVO|I#h+eu%b
zNDXftz#SxLF>**Vx$SV<S_QyY-PM6FS;EuX7SE;GK2zSZFOkex*~6K_l)hB@&EchO
zO=0qOQ4=^qA<4>98g@&KIVM_1FeK6z#44?7#Zi>@J|J%jPG5%cG8;t5!)^IRWZLII
znqPddXybeko(EbWBWJkN<3ZcykT!!CKa|Olh_@&$b1K7J%~2n#5bG>3$&u|tQECtK
z=c7Q%<Z_G_=m at Odu%kuV4#AK=^x#hmCkvK>;i7m8ctTTBgbP1ZgvL at 4n&=U1hJ5ep
z&!VJ^)`<x at tb;Kp!=f;KxYZt^TtWs6O>7xLn`3X%HTcc~h0tZ>R<3qASQbPTepvr9
zyK-PS(N`n>jt<zsa%t4zl-gtntl<Gdm6U|2Az-l;B at -VIi`gwvU0Et~Xf22=Ou?#v
z#`drb4T&+u(&(rW*I^V$Syy+sldXD?hXPm)Hy1z$+N+4?5Q2!zg)vvn`J%x1PoJ$(
zSkeI2%ua2Cxk(X9pW0!yh;$wgCqoAHVW<a-cD7X`N2)6hBMEjIiVE-}1pg1D7-}ao
z(LNs!8Y5jD{?4T&Vb(EYDJ&csE~Y6Yj}Px_9a`zWQaPeabGHoWd?jLhmL{+a&wORG
zm)7Ca`>2}2kFbdNa0UU`T_L@{32jq!1ODSMUcNl^5*OiL!G8lELm)2NCua@*8~A4k
z#6|R9#eW0$;+`%mJ+_77i}0`Ezd`>e0W<wg3jU%EZtOQfd{p|Ga{mY`ZtVMS#n;%-
zf7b?o)CQ;1!RfN{f71p(oeC at qeT@zN1slA_2LFx?e!C6+j1B&-4W8%9p8lye_!n&O
zFWKN<v%!C5gKxIMpRvJ*Q$^vj*4LRf_}Mo2LL0nB?%QSMUvGn7ZiDMK_`NpxgEsif
zHux~Pf0;F%XWQU2ZSbWwc&`n<(FWgUgTHBmyX1aD*7Q%c!E0>r1{-{p4gOObe4`CM
zLvAQ#O=sb->~gqO!EXVHp(ihw`(Y8E8x{Q93jPfRKWYRXa1p)AXQhIxd~Q;3mCu<Y
znGN$%>1QdpO21OURr;G0T&2HL!M};9jQkelr{h)i{E0UBjW+nLHu$49`0F<Kak7K7
z)?>L1evu7+r44?o4Nm7s&}EJHaT|QE4Q`zKW#uznZnk8_=i1;8*x);D at B=pZ_|e((
z<+s6GZSaH*{(m<3V>bAp4emZBdpb|D!7FX>P8)os4gQb~zSjmn=Gg4%6z4(=m7fc2
z=vUg{-?PE*w!wGW;D58hM~=y!{t_Gf^EUW)8~kw_Jm<LV at t$gfYc}{28~g?v{O30K
zA8qj0Z1B9}v!{Q&4PI at 7UuuJ2X@lo}Dto-6ZSc?A;EQbVejEG_8~pb+_-i)!=&{+;
zKhXyF+u$J^yvGKoeeUV9>f3v4 at QXj4oxaTm|E3N8Ya9G&8~lI`KK_L4>G9j(tv2}8
zHux<z_<9?h_P?jgTApq>K(*q>*x)zV;5Xag+imbc8$5qp_H_De at cB0QG8_CmHuzmO
z_#-y>9vghriP_UX)dsJz!GB<bud~7bVuRBWU36LN_Y at m^h7I0kgI{lh|I7w|&<20r
z27liMKl!BW`I=#a*W2JfvBB at Q!D*j<x~%1y=Vf>ZKG6oBV}oC6gWqU_Z?M51v%v>#
zaQDd$zO4B=)dr_?0O+#PFR;N~<J0uF;MN$w<SY3175q4f=K%Ww{>$NyBdE};e9l+!
z?<;)1B=H<zw<&!7Pr<*c&~H at mS_R)Mamw!x6?~@+{*1zBjza&E4gG5hzDA+nui#%(
z at MBKF11?IBS`H^F`1kS7DCa_n=K%W={u|}_Ed~FnLVvr0yMW*C#2;J(3ce1{2LD|W
zr}X?>!CzJA=PLNy3jHq>{NzGB;37W1#D9Z-g at WIu;7t;ze5vVKqR{_Jp}$O_Uk`l0
z^y^-u&~H%aHz at e875vW%zEQznQ}BBf{Mb|RfXkXruf%ilPA#`Gg<dVUSqi;cK9?%E
zTAsZMAGLfE3cXrB-&E+;^7+0(ua?jMDfqp}gHc~EE4W&2!#+o)AnI2wx6dlLT5i=6
zx0YL-La&xvvqG<y+hq#9T5h*0xLR(%RQRanc8@}@mfKc^UM;ts3cXrx&nUQBZpEji
z%SSD at nF_9!+l30Q@>wo%Dz`fPH|nKF!M~v3YZZJma2Nj5^<xWe at cEg<Np82`zk%PQ
z(BBXIUD>|=py0&cpx>?Vc|gHmSLjtfbUp at MlrKu7ac*C^1;1D7t0oI>&@YiVrC+Vb
zr3$@T4m}p!NPoY=M=gi1D)eglzo+2a5VyhS=L$~wGSa_Z;jhZi?-hErJa;MdYI#1Z
z;NMi at eN*8>@vf8Qb`;JJq01;|1OJ?YKZN&Geson at a3f#emN?Pfi2nxu3kCm%f)6OT
zn$D+e_`hYrjehOu)4>!MrJvGi;Q1EZNY8N=+{o8C7TlnpZov)udJAsQw at RGo)ci(m
z=r6P227fwtg)Sps2LJU6{wUrX_%;Q9Ou=7Na8<wUQ}911^sb3`z(w(@^dlrr=~LU$
z at d~}F563I?syt6s=t&N5lX6&VgMU%sqsAMx(BCQftW at Y92Y;h{u9i4u`w0cVUg5J#
z!N02T`Llw5Tfx<QJ*D7JDfG at W@PLcTO~vzV at MRLG@_!cpjr3os;PVvx+X}AQb&o6j
zZ&K*@+Ticm;0w=0U|f`*di*!i6H)Nz75oZ`Q+{_V_*R8pm8<+oAi_oTYCkw$;#N8A
zROnwr7$ZG5D7b1 at +^67s75X<MZskws0?}oa^WkR+oaj|KKVITQugb$I3cZ@&i3+_c
z&u1(2D*qV at y~_U at 1y}R?e+sVJ3BOcuRo@;^@LP}vqddP{Eb>eFdP~8-uHbJg_&*g~
zmA4#UnvaTqM#0to0(;c)Me%+E|Bduqso?)m at ZT!9ny+h1m<`vXny;-2{;tAjRjHu2
z%EKB3r+P8cbE|^SSMVQ6oYMb81^=l+ugb%{3a;{hSiu)4e0JLKpHv1STokXG-+L7N
zM!Yl9|0e}k%lY2P#6|G=2YwCu at lzOP{wlsn!PWZx>{LN-Ezi$MoYMI#g+KNw<jdN=
zsucPS3Vp3Yua at Tmg<j>~tk6?A8{@%lg?@v=|GaWe4(Inh1+TZkV+#IFg?@*`t>rLi
zgTJTn`MJWUphBdF_{>%C&q<uhQytfQPr-kw(63YQyA*uMIe5TDd~U>lquvt=uFA>(
zD)>Hye*6E!-kZQjSzZ0(lY}KIGQm<!U24>*P!$u_#HA)c;2D`{%A&Z22w|xK(l9~X
z5KSVC<7is7)mkmKwMA`Tsa2%5YS>Y$f_q)5OC`nywJK_r|Mz>Jb7#&xnTy5teLwH}
z`}{9V?tQ+`x#ygF?zzizpXDn2dWFA!91al3U;9th at doaO|5f3dPuX{U`k*~41P}Vv
z$%<ar`x%N}*ZT}bul;JSqSt=4P|<7tS15YT|4Bu!`M<1i^0D^+P~oR2e7oYW`<Wgm
zWVcTr!GreMN6~Bj4^i}5{|O5JvC`+qijOYWW<~!;MgN9_zO=&EpL)Kl=)b4%KPh~%
z!rxQ)T7~aW_>+PM{pSTmuj}_MMX&Aiv7*=Z$*T;R5ahpy;6eNEtLQcV!xX*d|6PS^
zJ1kN7pP_;EpQOTdecdBC_57WpFCJ;s at 75j{I`HL!lg|$opFb=7RE4iqe6-&_>%d=A
zd?qVC?>gweQ1quM`rJ`CK%o7#+`S$6VS?v^{&f7TJ;x||J<c{OdTq~j3cpJ6d0F9S
zDEu9T?~#+1+iNt45U5Wdh3~2GGjY!9`E9{j-aQq4iK73Dq938~vlM=u;?r00IZ4rn
z6+TJfXDdFZJNPsx`U1sgp2BMtp9P8!_f)gxy+YCNrSKmre2U`pW5wqiihh}*@2~JX
z6<(+K+^zU%JFi#t-&A}aRrooI&l3(luPge!6`wAJPgQ)jIr!vOfe3;AvybAlo5H8z
zoV90P!FvGH<tkG2dR^;qh1V-SM=Czrf4-~e3za^2q0I#9IbHEN(ZT0TMbAC+to~CK
zK11=D>ELsLqF=4(FID(Vg<tOAbG at QptLT5O@L3A~mExoAyh73MtIBo1!oRQhtX6!q
zoi{1^{S=>P6 at ISb^P=LjzoLIj(I24j_Z8lt_<XGRXnlH&0TBZ0_i_AeeeI#}*$OWZ
zoPMa=>9-aA97TVKqW`wibE?8WSM=v8KJ;hGVfax1w|d^HaQd62?+D<Q{z-+?ZkGPt
z0B-5OIo6j?`{dzg*R_fiPXFXNhNBeD{>rYyAFFWIdw-uiG%|o&eO?uu$Gd^v>hqbx
z^*nqp&u2(_jqj`Q?Ko%o6bsIBQ6DS!G)1qkJLW4~Uw2%o_-s)8|D<p|o~~B79#5ZA
zxaPB81WXaApVp^L;aZ<+!Gr!hLE#4~dtRY%-HvWhxUTox6t4TX0Vf(Yjh?!`Dip5k
z<xB at YL-3%#U8-;`_ZJG+dTvtu^*r;0 at 1^zB`kdpy+Z^~Z2mXiyf7gNc<Kiho&~J}$
z;8hO1)`7P;@Y@~ui4)TL==tOTPM#2`=OM~}Hq11z!S(&Yryclf4*Y!w-g8!V{@-%o
zM>+6H2Y#so|D^+8=fLMRrS;T)wa9_rJ1<SI?Y7Q=Kk2~#=D<I4;Jd}L%RRt>mpbqt
zIPhy6_&pB%ktJz;v|s(<M`>K!v%`V6{o1EzzcCj-+s|JiIQ{m0g<q|3-9KFG!2A3L
znGwieuO}R$aL)7XcsEOM$}Lvy<;M!w<r=t*-2L`-sG@&G;hH}8wluxQ4|U+413%Y+
zU**7m at 4z2%;BPqa9S*$s_Uz?4*?~7X at QW1Ar1gh;6t3;|yaWHlf%m^7yPl&J-mc_U
zJMc3c_%sK8i{L>&yiL*T^`e!EUa#k at RrGp2=UIho{kJ&qcOCdA4t$T_`gWuK`Z}Ue
zaJHAjl>e6~{BVWOQMj(hYaIC9Tm(TN{~n4@!G9Upv}?Y*YW?Iug%4EtP=z-ltEI0L
zocwQ9xTokfpHme5cNG7#9Q1P({sYB-p5mkBUZCi;-0Kzn5lZgQ9rVi;&Y{ef_a4PZ
z%RTQ-5FyYG2W$R<v);M>VEf7E75$Nl{sTpyL>?>mFm}EO<fHL%f>Z8MiqFZvC$+DS
z_UFkCe2xP@&w+1Jxc0-B9C*LG()#H6)j10P2qd<=*DCx|g>O}Oo+|Gle at OG+uIO77
zuK90NxYj5C?ld25x8oG9%UkQfFLU6xI`EASyvu?2WoL)Lde{04aNr{y_?Zs;QU`v!
z1Mk6379prlKL<YAfzNQ at S2*zBIq*#m{6h!6HwS|(`j<HH6CL<82Of9ecRBDE9r(nR
z+4Zb*;8#2FyBzq_4t%=<-;Xzw5Q6poT?bz0z%O***E#Sz9r#lY{38eM at ggLP{*xSd
zEpPS+z3v|_bKv{@IZb~(lD2=VR=DP~Na2H2|JMJ3?0gP#;1eDAc at F%i4*Y%xzQuv(
zJ(yk3!yI^p13%q?#~k=|4*UTJKDZ;T=h4c}H44}DHCf>$ihhN{dnx<@g_kP)Nrmfi
z=c!d86WERhEBe<JK1AWiuTIlzJx_Gtiyipy9QczC{8I;h;F|3ER5|c-9rzLleyamt
z?ZDq~;Crmiu4kbG|DnP^LRQ;;mkFK=OwXT}D|!x<mi|FSKUCG at LkidP)yEVc4h5Fa
z*mXES=z-sl at w0fH;M9jpAQqpa=-*fPZyfZ$b<odWkIV>^J6!31vEY<D0(c)1A^c3?
zWx$z_;lTiI>7P;j%N75Z6#X&4`}=G{yKV3j<a?~5 at 2_yp=Lo^6C+~CR37_*7{c(!V
zPZd4y^V)g)a)rmh!`k^l#YeAuY*zTKivDj7e7B9hVl0<#*Ly2mj~53z at QC0nZ&b;x
zQTXvFm$m=PijS7t<-qrQ$k&tnn-%{<1*iVsRrVaOaLs>#1HajUuXW&mbKqY(@ckb4
z^$*&4qyw*a;MWRHJJ3Im^Vx=OQ}ib&JFHN6g~IPwd at 6z4dU-<8k5u%3RrI=jy%E4I
zpU at +|V$@T&(>(>J9Y!hs^Ax?lFMOGzAFb$rsqiX=FIV^&g`1ZIAd_;nKkxPz00=?+
zK!vkQu<fo?aF%PW!pjt{@0*;a_-H-nDEj$|&wNF%+wWor{$s^Q_YXHZ=zpnjZHGG?
z_&o~O{r at __X@~Qa{*Nkpt^ZSsp7l$6GrSPMt({+U at cBT|pM?CD{u2lN4u$LT_I}ie
z?^f^q6#gT{{{X>R-USLDpy+jZZ&CDA!IpPf0Jr*os`w03e%t>sWS0E8A3H<g*W$e8
zvq0h3Df~)>>w4VladP+d({hhgxR$$7;hN9Kg3~^_yk7)xtLI6Zj96nAEq9i}wcI-t
zuFJbo;kvvpDqQP1Wpj497bslIEqWqNulbA<JXqfG0o<1NSBj4=?}G~0a`T={%hlyA
zQn)VfP=#wfSN8GwP|v>jS$)<9 at WXww(53+Xg5WO(@Y4m~8o+bmy9`Z-__3ASB>2Jr
zzF6=p0{G7azwgjYK6eTJ)?u0WYQZN+LD=4SiEPU|U2v<<6GGoLAd}Clg8$bMnRstz
zL^$k7KPLYd at w5D|Q1}*wA8-^75J<1<_raqLY}Qv<FNMPYiPB8meh)EkgpUXLEGo;S
zx8FUyGJyX|_+KBuUlaVG?`G#;dqO7vlVl=$ZU7%6_zjhr^eY4}8<pm-`^g&=o)6nw
zd%k#LCZAV@&(;9`4H^XD9|3$1!I%EpKhI*)&VvR2Z2+Gr_{sp at Wbt*Gd_EL>Z2<pV
z at J#{y^qzkH7X$b?f^QArMS}k$fG-q0v_4ax!GiY*;8zGfT#Y-l!$!eJ2Jm+TKPiBJ
zBKYY6{9C<zJ*EfnUkH6u0RO4r3j_Frf?pB9rwIR>9?L9mOz@}F_`-7CAox4d|J!<h
zK=30~|4jPV1h10*)6(bn_T>%rBh!AbLE8FfQsKIPzD?n}e_pO|-9K*-oN~{{&+`9^
zqW_7)|0+1?_4Bu{D*OUP|CYkZ)AIj7;m;|Y&q^`Sji18L((@TJ2Fg7XKZ|p&%Ru^*
zRQu&K1`MRv&lPjcfq}Swo|$Wp4CHgN;=^kMhVS54qj1V%AU$nj^_e6%`HxfhnF>E!
z;dP3SmV1H1HUCQ$pIXJ|N`<pdtv)|ge7=XY#cxvdQxyHJ3fIp?->&$KSA71U=<5`p
zKPr4LMgM@{!TQ>u=+9An9#y!0F4~TtK|U`i`l*V~-xU5$q^%wPE_jg7dy0OV;`5Qh
z^>fjmIr!wz5fB(%h at X|4ukd<>_f@!lUiuq?Q%~(DM=D(V$q>coBE|n0h0jp<35t*A
zKSt5(>&jY1ujS5C^wSmpMuqF^>t at AA%e_kBn*Vi*&&7)W&lEmW;kPJ0n*TCIzgp3+
zQuJEx!-{^EqTj6Wec=PPexFf%bicGk(SKj@`Mbi`D!fba(faq0`3U_%>$!*E%*N+k
ztv>rI{9MJ~&YQ?*f}*cc^yDSe%g|X0|Ec10j^IIk8WeqlqMxU5{XFUd#YdO-hYHu_
z{i)(JTk-$7qSyV^t%{yQx3$kYMX$%l&5EAm^-(e|7b49-+i3d?H>f`@T#vNnU*o_z
zHZjm{nx5kg1M#2XXZfrqh!DhYQT>me5By2tdOq-y!ZrP;3fJ^~SV)n36Jo2+p$gY_
zt5W#QihjJpb$Mqf{O5|kLE)Ou`3l#3bibkbT%+i<{x>RI^Z%vbjQDGy!4dwf=r#YB
z6t4Mys_>=AZ|x>#Hub3G(#IHr{&2Vt8(hn^?UMAGPr0Jk_Bl!6nvcDnCLgW;If`EM
zXWzxZ;_+wga|uBN^3nWT4eI0CPvQ=ozQ+*M=XXAA at TEvwd;U at 3T7Owq=|=yIqSyM^
z^#;n-_!dR4?eLDmwVmxcM9>bsRr}I>?EIGWnvb2Y2Kngus at 9YDOc{dubIm*(&NXd|
zYrENbEcs}BwxVB(bJqS%3fKBvqHtX<yY52%n$NWkdb=JIq`%EU|9gdN{`V<dug}=^
zn;`#(9rSwssrf(epttKfLH=(kdfs}n_RMwk8+ILte6*dzieB^CN8wt}!xjFvlB?%|
zn%=Gh1?5H*AMMYlC|uY3xeC|)gPk7+`Cp{ywI5!qaINPJ3fK0r>rdqWrYi666#W+p
zUm-Xn{%rsDh@#i!vg=snzZ5 at Pk6RVJw$GOe*K)t<n1|T;8~JOy9j55DeJT~M^|b3}
z<fG+Y;Gn<GfiG9MF0bAnMB87_ue86t<ltl1+o-4J^OmC5`hV!a?K)hrUhKME&<^_(
zKnUWc3fKA^CpfE<KkFxUJ&&iC;%EKgG{r~zL!-hELZ4viFLLm|R?%zzHz-`|d9wpw
zu5j%q>lCj2?O}y${?8~}`{BC^*LvFZOP<zz?D{2fUB87r0U!|9dJa%{C(c>B+4V@$
z-=Xjmgx=QI+kJ2n!LE;zekp#Ik6j-n{)WP5E4dm!&w<- at Q}WT}U83l9zjU3#_48DA
zU6XvYeSWLxyOf?!D15B)E4$7bEU#T>CGIKuFNF{7#<>K~GxU`8ON)y+Lx(C{-+v!0
zIP>fK at 6`%ligVWf;}x#$R<Cf~j=ryO?T2=~mU1<pixj=K=d}vg`q=f|AfH<lz2@^r
zg=;=`Jvhi`y`tBAURJo~W7m&^e7Y39=A-xP(R}QBbC6GgT<;Rsd<H07^Rd^*K|Xdr
zAlvSa1V4t89egG#T-VoJDVODApF26+XV<NNIMIP~t$=}g>i(qNpxyD?9r#)Y{;~t#
z?!axkp+1yl{oi#RcZ!1#*LE0!<!bfeZn)g;>vkP?vV)#$?+iiySNm``{4NLnv;%k9
zhih33LAiY9DjQzsz%O***E#Sz9r)u8e7gg8)#Dky`rXRKHAV*O=XPGP*oV8(a}9?f
zXrB!}+zo%rf%97s3_(781~?neHN$N9d<TAm1Go1Pf^zNpe-MAu!DkN|3?WEA$bp|G
zc+k%0Ip|v*_`MGNc?bT5120nZSlus;a^TY)c-(>i(t+Raz at K&CpE&Sh8a|8t&vf9n
zzoI$#vwp7Eg|r<w7BB?s_rKfEPjvX(GzY%Wf#2-FH#qQp{NkGO>h%ge-u)RgcDy)G
z at zLwX_P$KeZg)z((Dn-zpSx9ky|3^(q#1(sb%_smtCuSs_=67oRR`Wvl}q~rpG9W~
zmTQ~?pX0#weNxT;4hQ`@2mXo!&!fSz=y{j}xBHC-?L5~(uh&Vm{&za)pK#zGIq*V9
zdq38JyY>~m)Ioov1J~;bx?GPt=-+eTh032bpO{}Q#((~Sv~5QZIB>qR%s_S@;b-ap
zQ+)I~yw*pzBaMGXWe|e;6e&G5z3zWBuGb;AgP$!|f$|4UKThEvEBXkPLEvfrY=1t3
zAVRR6#(cON{u>AWumg9k!}A#ihM-)%POkmo6bJqJ4*VJi{yPWm>gT&0^!9mxp#J4z
z|Dc^u6+B2k&4K^Kf#2uA^?fdFH~WG~Q0^g)_NebWYd*6a^eqnjCI^1619#15a;SI~
zKe^3^jsNsO9ocqa#|xT?KkMhN>xDl%>Q~<v(Bt(!4*T2ZH-dIP%R#@$f!q6=K|bpp
z^qmeo&tc~S9QX(aeue{2I`CzV`m*~tQ(Zluxm2x#>G at 1j;Ws0Xt>2pz&U<+l*XwV3
zUGy$R&u7~#y?w4QXy->2{Y{GgX at xIUcs|k$EEnfmmjB)a5r{9s&*I-knt}MG_*wig
zf(XPf!_VUN1QDnw=UNum*Iyd9^OGRGo at Z+Ms|<Hv?r@|n|8mtXG<_)*L<sU<>A-u7
zpYXKiKT-LQ<{xv=|6d$`KSY_WJrAYP5NJ2upXlqO-l~3cl>I+N9?Rz_h3o#=J`YL$
z8t1c-3_*OO!nNEfsvh;cVt=2F at lTT2e)Sl^gZ#%jaK0175TyU94|l`wci>wbc%CYk
zwu7D at YCPhgpX$IbcHlp8;CDN4y)LJp=aI*dyZH%yiGg<e96#$1eI5LDy=(p#2|epD
zqaRj$bU*xa3Pd11*Fvq_Bh)(fwF-|aT+5xOa80k*^ELgS9P}?LT+{dN4J8n$uI8`T
z!!`Xl2YrLWHT^XT*ZluW;hO#tg=_l1D_qm>Ap=QJ|05Ny=_e>$^N%T9)8D9YO}|3n
zn*IfaYx<8AuIa<O8S at +a>v3~{!hZ}B>pvqEuJ2!*=)fmB at UtEGOb6cNz%Ov%mnmG&
zLvB>KzAt>Q!gaYGbl?v;@XZQertJ2%!u34o^xf0;U#jSRG!$a<X48?^A1rL}V{o!C
zh4=~5-=eT0NwXi2F2Nu}70z=u*yk#VNs~3F?DaBn{z?oQ3Oy$=F)5;tP!R-6Z|}#S
zs_+|q67#n~;d>~&S>bys+|K_k|4q_9*D3k}MQ at +CB)xqmkf*;%0D%$dtzAkK&g3?B
zq6kX at _@;w={D%rBp9UWeJ*9BUwd?ryx{s$xZ|8IWQ1ssv9*p{{`IVic61Ud{mJi!1
zL-2Xy_CtJpn&QJeO9i*j2@~UQx#0G>6pObP`+WYW_)vd457?$~mUo5J$EOM>J=+FD
zfjFh*-ysvOZz-Jg%MCTkrEv0JFZ}IuAml^(2ZY}Go#nsnF#klW;$!k0?&C>?lh1nL
zW7ls<OS#X8-1`Icb{_DQ!kMR0_-_s1?Skjab&A!qV1O^UpTeon^FACZQ#kdp?_E?X
zob;~={X~UR#x~(UGk}K%`Wf_fAL$DOUml>}B=}PSeED~LK3fBLhv5GV;F|;=Af1l2
zL&*_7pHhXhTwOjKnx=5t!QQW$t#H!YdDtR_Q$~mIUm3tFj`RimC4e^yz9oRS3tlMw
zP)h%!d_MO6JMn{k$o&14qCZ68FDkrP;T8G*0r?!N at QA`$Ud}Zcu2uM9K4ktbS2%es
z6+Qo`aPrw9c?zU+CoS!~KNASwQaI`DymqL<2N+8K&mx5nRQT%(7gsQ6OLq5(C{C)%
z02e7-OmFaiDx7&X9c|!H&prH at 81>{kGYnCMvs|8(Ym&lAZ|~PODx9QS<c9zG3MajN
z4){fdlmE at a{|$wcJ|_Cu4|kA^zoljPgRom4KPE={B|_hzaPmJ<`q^fMlm1qrZ&x^Z
zHJ*S!2sbF4^me_~j(emf|NDghrvdu=g at 1n;q)9&*KO3ege24`R&sI3)+Uwhu3b$i2
zv;9Tk!w5(yq;d$9E3a0Y<0T3gQyM%!Y$8K%pCuqNQQ_pZw9=<r8N^5V_$q}{|F^{s
zeRzOi?e=%E+cy=?q at 9<PDEwHH)BiJ5;m0ZbZiOGO at cR|cWPd7vkl)Xbd1#<<{&7Er
zlRhT&XDXZ~94_Nly~0Uv-}_pmaI)z5HU1#P6;ArK!v95ulm92e{|$wczDn#C+6xB=
z%+6oIdLE%&D4g_m-ZN3*<bSh_H)koF^mcx;K;h)y{wV$+T&i%=cZfbK6;A#OWIR}<
zaMC{}^v@}r{Fgt5KL~$QIO(4e`uuO0(<%SCN%;3uIO$&z`eKEX|CY!7{6{IA^lu7%
zgTkr*YT at 6kaMFJy^z8~K|IlXsLBFAJ(tjcJ9SSG^H--O03MYLpsrMHZPW~lN;19wZ
z3MYMEp+B;}Ii0dk9~m!)DV+57`QsXeQ<Y7A_RwhxC%t{%qFv$Czf}0&pm5Tci9Vr0
z^Uj|gt2+mAtjUjO+Ei10L*1ZQ{eoC%(6qW(U1-ob^X7#NFsSzQlgiJjpEGsl?7F6N
zOGk{f$?^4#bDLuIO{K&A)cEE(^G3~`Gkw;Ks%hsmga$RuB`3-%9aM%xD*;GdQ>?jB
zLy$2cHe_~PV+8St+S;iL7L=Bj4nC)D-mIy$;4o{>jL6gpvC`71GwYgaV at -9lV)G(X
zt0vUpPgT`~VYL%tLmTSn&5IyO6o-v<vzj8~cnVNe)#$-h^Senbs~vw1xYgHxJ+VrN
zGSP at pbDQVDF3>AhT2ecqzM+0<taM&1GNBT>1 at r_|HKMk<cIw>5^CQu7N~%tpFt)a|
zw6?OLVeZu0IdiAgL-!gm8e&y7pwBB>%QLA$m@~DoS^fBlCAEWQ&1<R~R1z9AW9rn}
z`UO+#8)LPo^oDv?=!94**Z<2!Py1Z+oQ7HF);FBr-5i;YS{m>X<@rNWo_|u^?D{PJ
zl%_44MF*Hu*HAjRroL&qIK;dxc_ze$&xd==ZHg!l%F at V&pmiC?9t?-sIiIi7fY4&t
zN_NgTTlt2ii~<Gc!0FlezFNm at tkOM8WDdHBIaBL*&aAYwdCsgKG}qUnrJRcvKWuh0
zI<TtYsA>SFwfjAg at po%x+cSKferB3cXao#Z$~N0nUuRnBtU2 at Qn_`g at C-6+w{FBOS
zYiG=9HhmbnvN>~`X4f^;&VobKv7T!{HlduxZajHnt=~Ncy)Nw)|I5_PY#r=HM%SZz
zo_l_zM)_~r{kyqG)%=OI6Nc7i^7)T;M`i>Fbi8HVJ6=FlgNLFPXVk}P{Ti$le`=gN
zuWCGM>Az7)WvpEuF8+^dU7l&{ndl<5!6(E9r-!(ybI}8&n+yleEESTi6A3!pf3Qc(
z+UCcPJ842`t?IB-eOC=n3?8EU|LXd>dCg7rv+L)?s>b7diO!gsPL(6en7Y}s8qP<T
z>Z9|}ulx%g%V0Jw=~%is at 8BV`>zn4)qm!<Uoi}S9x})0qIWuO>sgKN#&K@$jDmr`k
z;Gy_Cq<jSbmg3LgVZ%oZEgLetbQlgwi3}ZFKD2!Jh{5GVNH=)+km2Qn%Z3jvAqml;
zC4&c#7*aA~7+IE<nLnk2hYlGsc-RnhoTbJM=F~RT&6$>EMmBgT8sT(wnP`)-+G)_U
zY1TQ-u~~EHL}ph_Z9q5wzoQ&gRkO!WtYz(^5=$EEn(AiP#?Ei7uS!k3(sPg6(=jB^
zo7p^ldIKh!Uokq&PWSz at F_z9|&5!?IQ)>3!m9-~hdfCmt{&N$`UFpI9on8e)K$c$R
zKRGqtm68lb!>FI#*ibjMzE*XPm{!<J7|iuYq^<%|^N9&&aN9}eiSuTv5vZ|r at 2Pq(
z+X->HxznyweACe<(rdqR9yA;MW7f_J<s4pHJ8dq9hdHxi{<YCpwHq~}I?97<uhb-P
zXf5Zd>@3aIV-*}4o;{MzEoL&3>zbPCaLIscVO%tgJw;y#r{_53W9ws8O-*x~qH|}Y
zdjI)V<@LlcIh|n{{F~Wb^2;Fqq~?Z(Oz~xN0DZOee<yPpBu4A!*Edw5v?yn70}o(7
zGwrtVpsDj>y!`j);y5TBE+#h11L!7kE{I?TU)L~b^r=`im_7*8=>-dF8!>v##U<6O
z*!i{daalWc?raXEp+R%z#_9)+J!#TWxM-Mqt{h_mKB%#2E;7YXfu=96pIJK{-E=)J
z0h{Jx`QhIVT(6X+zzkj$awNAY%${{gV0IbC#;*LH<d@}ZlfPvb@=uif_P+aE93O%;
zUn|$fF8K{v<hSmE`~_L^x9viH%3{#vzZ}O_ZyUSxZ#TI!^Do|o{CtLvLCar)V=LFj
zF8Rw$?#%r0UC4iTmi%w;LjH~{`M2#t{=a0&|G_Tge=bY at 4|gH|>sj)DybJkRRt8;v
zpWxWmn~h!d_fL~MGyfI4kU!tvUlBfRe|&b(%C)gezWpwc)}PO at +I%*4<+tyF$TG0$
zKYHy#{-Ig)=X0D^u8m#tE3)LLO>90JyYfe~<WKB^{U>M1fAB8Ix9|7q{(HbK<hRcW
z>HPerlP$N6UFEm;S#|#9yHI}n9H!2{Vi)qaiv4tc?kjEewy{h9D<!}7Up_}=^Vzrv
z7)j-}3sQbqD)}Q%TEveFG7m%h;h4NC0{C{hkv!lO{{-6~pN+TWvE$-lz$i*?2O;H$
z&ZlfDGZwW{;E_m?XE1;0X`f_MAVZN4r~Z~AMUr0TW>pFf+5B=lFm)nW{yCC=aEiiD
z<cs{r0}O2Wty-5!{-FK0$OAl22MQLHe=+iBvwzV)eF at jg{V3YM7(XlD+W$H$KT!UT
zmvI8YKF{qR`Og&CG~;&sjQl|UmGa`{6cQm&KI=LtpM6?3`&YceT)0md;2SJI-x0|s
zzp#g&af@#TBYyz+1?7J%^6huOj8Ockc-2qod+9_dONWmk#^|p>q%V^Elg0k_w6B#t
z!k)<hjQ(lJq_+3;DQo082HNik{DS)Tgnv+ekndBShE1p<pm5+Yw2$Nu`fvYt{rsPa
z{rn?e7Sk3!Lh=XOPr)`n2kS?NVEyqsTBiJg0(kP_-44mj@*j;~u>7Yw<QKi~XS`MN
z+bAf1yhDDzJP={$(Ui}=A}BxMkiSXf9~3B8Q2yl(`HMvUOtBy356L3`Nr(K<KR}Go
z>_ at 4;LHT^{Ae;TS$^)+ at l9Td>;TJ6bk;qIHgY~~i<o`b4a6$Qp<9s&xg?sykv)^%}
zd_J!elz*N>eg$8uL3sZw{Ey%H&n7?gEnj|-vOk~y3CdsVk}nU|vCZlbEdPTJ`9=Hs
z^0oc>yiZX6Hjy7}zvqhleYJ3;tvPIb3&tm=gZ0-g`B&07Dg^ca8S;~)BH-sWqW=`h
z%li8+enI^s82GZuuMtfbe}(+f$e&IAa*@AD^rHNVEb at QokiVseZz20#2V^xNSpF*=
z@)sT83-%-*<&VTKSpMM{AF`Ey3NIEAzDhoyH_2B1jalT6&LaP9hx{!Zm=Wyvfz1K_
z1k3-XLw>=x{qlE6MwWjJe!=o at 0FbTxHM{%rE5D-tS0jJ6@^2FPy8gW^^1pP*Un&o%
z{xvXv3zq*=hy10|@!R(RSpE~U$o~+}vt}#*BDnxP*Ea)l`XMO)UF6SJ{sG0l{ijGi
z%8%j)bxpAIzZ>uzY&QAZzUd1-&u1gKy4U};$e&IAk}UF10+*otraiLDZ<GgbZ@~DZ
zL$Lg_kw2UKts;M!WM=tm at C(YHfD5E-<uBOZFaKBh|4GQ7O at 6z4pu0oKAD>130hr%q
zlfUTOzI^-L4q?-+{S_jAHu*J&b#H$Yv&ip>ht{&mFW|*Gf_+cM9N<sT{(RUsoBRU#
z(5-z>k at n}MV9@^M4*6TSSc=f*M<&fbLHR=+@}~^&%dhKyGV%xIFLlUoJk%F_HvC(M
zp!^#h^799Z{l$M-{?qXb%0DvfKQA3{b3Bjk%eVAa2YYPe!;#<E-x5f?@kn33ZReDK
zCVn=b#mkVNnEg(UWDh;}74j|J`Tu5qJ}>?6$p7Tu%s&(rx-<E-tq#HC8OYC?@~xew
zwDt=OABHwfh3jI;zn2D)-Xiu7`kSpk8(-wezfJPj1o&EhHojW&2mP-?USzOxESuo*
z7092>|F&fDzv*CN^IQMB#mWyD(EAtV|IEq{<lmk}{>&`$9~Jo}wty1Xi2OkT+;&Gc
zen#>K$U+Mxe-O9%EdF=o#}ulY|16UHMV3%vYd;HrDe?ow4=t7a%lcbNKMv;q6#28&
zU%^p6$C+yVVK!LU{I>qG`939iRenjg9O%n!M06#7!TgxMbYHszHlW_m|40Q6R0!Iy
zAI=4Rm*flNgDqhas1VG5bV*T0(1(87|2ur>P(wGkWOzxLNln at PlB(#K+?+JW99-d~
zkJ3Urs?zBSldQm6&UXwg&C5I(Mof(E%#3lws5<)vruld~tCHz&;<vY?_d~qDqz^)T
zFn%^vo?3ZI<)q4qlO}jAZx8U|7Zn$JZ9BrPe5ce)jK)!-qR at +vE-vueI>N1Q3S1CP
zG!|C3eH?D(W<%A9g*ZSiUQk66wP5i=xHSnqyu`UUcqiPt9s;9 at dXT*yZXJO$)rp2;
z9O2Y0IEo}Df$oXsK3!){4<9(18T%J|i3=dQfAQ8+ckI~V10xFn7J11NOT2iGVz2!1
zaO*N~_7WojOf1g#l8rfASvD_mQE~nQHAwk~Eyopyns0}gf=J at xqDZnD^pH^gcx=x|
zqN*g7&t!?l-xDSvX?r5v`X%^8;!k%@GKyRX1xA&iXa!#RhS;870tZ&E$?wHq@$<8I
zms6W~SLgd*?${w`pH1r&ZrckyJE!80DYwXf(@@YnZ4V&-^g-bRTM at Hd7ejhg32bSl
z2etP^dt>U8z&ILzqjM3YM-rEy<YP-vLw?>!Vr)S3Xncog{z9xK5`U$05b}i&tUv`_
zRE*4{i%VE>%pPv70q+QWq#KX4_N`ISRL9@$+|$Tk2o_@?|7<INOt-wBq~zyE;xBjJ
z@&)uy#EMaEnVC<DB>c>D1d~Thmu7Ih7eBMOpfgGqao_fqdGqOB%h~~FoK<;d<yn<y
zSJtkH#y>InQv_?GC~;xXWcON=1*N9V_G?Nl?0gVkIcT5W{$cprpRtWa;vZK|s)|2a
zIk7sv7L6_bxp(Q?OHiTHyhM*f2e4+*$QG1#c*(H^>&F)0us4$M(y>K6Q;35a98~aN
z01g^)Fog$YUUG3e^KTfNkBBkZh1QQPVcPT4HB8U+(~V$0y4dsLix&Yv_T`M?i<g>c
zba4fsO+M5i5UOeMHl)`ZQHYoY5y_Z!3!?Rg!tgFij2Yl<SiA%%1Cq=96q6g%$*ndS
zzn8sM{3pEq7{9s?|1K`T-)MX>FY>&&)N0}mL)TISFubCTqs0f|f~v+PEyX^P1hS-s
z6LXxt${ZYqgG5_9((xAF9`q7z*W<w3&@u%_3|_p2L!p;!sbCausqrJ;p!AY$OMMb9
zvnJYDrVqmXS{C4lq8G$l8cCLDTO?-|;c$BRy$<kM;-A at qGaC$VBq-Pe&M-QDM>|P2
zv at 8<@$>oxSkn4G}ts^!ln!LlLllRc#_o17GY2Mqh>BI2c<Q5!wzG1 at s5@ZBrLWqnK
z8(KCBKd{~;Nw8i?I$>?n$$Pd1SzkvkDc0AJk(X at Fx7{1tetslzWU-fw7S~jjz8-lH
zt)1ZnFW#q^PL}VLZw<HJ3C7_A7vV3)fO7|!ZtX)eRE#N$9D!!MYJ1N}`Pz90c!_H$
zG8*6Ft=iJl%R{f;vLHVcZu=(2Z!a+kzvCc{i_D?Y4&yyuVq)>+XnebO#3(cibj|22
zYP|AI;mhvAyg^7V0))P6is`ln8eTYxw5-kXTGpvSqr9OwKioDMCHSB+Trj55WN+;V
zx7`4NUZTa=BiTT1MhA4Y at PUd(8qmtRu)<d<ISuk)At-ZE at qlnEzh)mT-x6-k#awQ>
z7oM})ON>L49#s+E8_I<Hjq=RM%de<&9LA|AIBXbQJekE^-x~@5jh4R|>r1{<Qe%$M
zb%D_}4yH!SR*YIpF=_J>?Te6`qgY!33Z7_Rf<qqNhNDF**@9r-ksw{PlI<lFZuL+#
zsP&CFz}Ov|43-^8N0aqAUOBq^aO)xz0d+-RjF!I|zHB41ukSJ7XiFLYB{Q!dJs>CK
ztu!7%pE#n$ux#1Bd-(D>`QVWJ6ZzhU<r$=nLAN3a&c2}&OIGrzd`SnQaI0ywG=Ab5
z(`c+4*zwLw{Amm6Y4a$p|6zC`j7Reqg<GG5ipKok!R3~*I0`_IM>AzMGzkhfRlo&z
zse+0BS`|>}f@$6nepeoDn?nO#x^@XTszD}vU?`HT%3;I6JZ4l8tyvguooQOx1k5O+
z99bU at U-oO{8|fRAq;a at 5$VVE3cCN?Bf=N;<Xdom3PXBtFxDU=HHqK}hOTjbKsXCJs
z)1GQ0e$zM}VCNS6Ny$f(t2FLk`cUZ;(fGT<eN<8Bv8ed=MJw4OqxLwF*tt`2n-A?&
zhvIk_oGL$j`4{9MPQ{A`?Npt=#x!7h`+b}|cm4><$UIZEW(>ZmiQk_VF at F|U^1`iL
zHZ-nO1V6E^)K2<%3$wwMSn<Y{c#CdVUCDTVs-d=?%DQo>xs-yks96ziy at Nd|I~=ZW
zTQ!%HKHkD?P;(iNIB~y`F6ehU|FXv$HEj>l`oQO`-)lCKqhAG;W`Ft8kG&)>V65Aj
zT%GNpHuGI}p9^&9j4!3@;le4|N>>(JXi9c+x?~eDAsWSAbS4TEYyMh=>3r-nn%eYA
zbZ0OAuJ7C8)GZw-N9Q-7yOF-x7!5+D|DG9*Pm``E8h^9vazn&tEUaJnbjCR{NIPHW
z6qQxQiHofsp=KRrQlDk!<bL}{uGksKu?1A3hv~;MbCg?^F9(@F_ULgZlQ{mV?q8DE
zkhNF-bh!0>D2L1oJ2-DB_FA^*U}zU?bu|8WV<qWy{l0j5_!*;($+f<R3}KzO8#9lq
z at X8+zxBi($ZhIoOpV#sk81iP8<z)s^FM$y?KEYexV;^`rdacf_+gVH3EVX*A%A!}b
zQ!i$tUbJgKuO6rdFF9d~DeY9v^&r2rg)XiaPBE;&cht;uIWIN*u2}?0hGo8HDF%E&
z)aY(NW}~7 at grXzO_-@pv-;-TzZ1EKyy8`z1$$yDdcm*a8OL}KiROfj5lz$>+_0Bf-
z+3^jXpFv14*HUQJdAAUp@<}&>3#W8;rg^4>En>FAFfx$uJM;s at r?H1a+=^ncxu-|c
zX3Xi1M;6<AWSr}x&l%?nWbV=gfpd at RbG%CP;_Eso>EB8F*L#z^_#3?Dizb_wN0S#X
z<@!n_{!d)=eJB at w@#;m<#B400Oe%~fzU{@YTR at 8>uA+ab3&N_6iOV_FiN>3k#;aPr
z#2C!ItCrw*J^V2oUd&4yujS$;IpH=wxLX-sk+-C3c{IMwOEfR>5{50hA}`*&Y<-Us
z at cFWGJhb`V=tOmEWzFbB)gm$5#Y=HLTof(;gv%LK%TrTJFL9$k=QUlpm&o%HHD-#^
zb|d8B0QKXa!nCFBWU7;>!L at 1{JJ#s`cU&{<s3{`@IhUv@!BnUDRID!*c}Xr;p^a<`
zw{bHWsIXB at rg)ptOV&S!%YrlP1^ZcRWc)_yF at NP_!zgxV57^O+E9gQf@`<iL_;gqR
zz@^LeoT6OEb&F^`IoU*QQ%rQzOhjHh*@#GNV$#usoT*w04~1gaM-zUQgkgZXSRPFn
zmbgAy5{<tM0Y2xX&$+ETXH;K8xSO-lgrQ~Kf){f`(9+HkXg{_buw3Uo>ElhE&*8u*
zij|AbOOeI*+cnCE{q*$o;t}Sbq>3iFQr7Z%N9B&D?bcc8q?O|*z(Ffu?hGfyyr|{D
zWk4~FV--geGxEJe7;6~O<nKC+Qomb{XmsLg<E_bicodD_x{OicL3(wh<)84^@A at gY
z>u-??ugF=_=I7rE>Xo3bD(#5IKaIve#_YEUR~)x)0%-OH{XXjV&F_c!PwMA>O7Y$H
zy%=V}hE>{gTmB>}PlPB8>enNJHFsRIoX3g#D`@6q8=Zm6cw}JGb|ueC+*HJKZ7;+|
zVhk$Wy7?^}CH%#|Xksdw!A=+du>2O=EgFBVYc<!;AaEPi#oQ$9CGH84^T02qBpKem
zlr14yzv+z1(^JkKNuINPjrjE^Uh*CqmeZ4DI})Sg$)6!IyhbNX8t%n2UcAlNh>qLF
zJOF%qzv{&w)A^zaQ&}Km2I0~<18KQ#H;aiAag1e$t_Qp8-Tbz}Tu#_-uNS_y|7}FA
z{U7r`QCa+NrS-o}U(^4-w-pum|NGz9@;~^FALxH;>;d9z$6f+Uul|U{!Kr*x^KNK-
z{(O7K7L{4 at XV4dZHT@(z2F5=!3&AaKqdV<w22+fP)tMt`Ggh(Rb&Z~-nWJZODZ0b_
zGcY!$?-%%)pTPLhwF3P=34DfUoVDZC>FpWEC>!lzluA6vl442JtdaN~q at PZAkY?Hm
zl1-!(5|dUWOMNcpx>HC at T9GXBN!l3+iAkqPa21#w)o451#&jpoYlGyd8hZxoa;f`2
za+d}SGw;xNiDQw)^xk`UiFpNQcrEL5%&5tJ`iwP)&O0Wgzh`vJF?EfN^>e0$4sDng
znmubyZEV);`eP0)88l?NIXthfX?Am?M*UZQ at hbehV-9U-4mH&`*4M?5o)*HJj#KgV
zBSRdD&BTXErWt&8-JE88dxV at pZc|*?k)GBp;_|YqA4W3vB<9<BUi`})o3L8Ofet5|
zM_>ueL)y<|Z$f2Gs1HkDTMPHDrQpfYG0n4Ug_SF;W4D@<Sl=<r&Rsu-RCaHW8g9J+
zgIUJuPEL6+;}Rxncxyh~E*@hv&vJTCd)k~ce=xtvLU^Dh%*rSBH<P9P-^jaTM^4p4
zxjmoRFZ5E6+z0jxt?Zfm at P46ZdtQ<A>-|DIdiA_(zt97{@9l|$YxeB<>VBd3_q=is
z9BkZ|XI|fzP}_b7k#<K;kJGR)g?OLkIXyq?5xOzA`SPBjwRr%a>9H4*B-yvvCs~`*
z^OYW<OLKd5^$0yrlIMH$MADE5m#-i}GfD at xXLI#2DUxh0UW5}9yu>A at DfNpad?eLq
zB8fAx?2HLdCB~UTvHGsu?Tn#s>EeXPzhB7N&fXC$$d_;t6!RTvW~2R8QTD^s&!9+W
z4P!@*I;LpAq;v48uI8fBA%lhtDmiL+vpF2RaPZJUB|`_54wMsM&;!2${9vjO-Zkbk
z6CK2`*lmJ+)FJ1B at u8dr1v&fm>7CC>EA#LkIRo=D5GygMObqIqaInOrn=EOI9f#uv
z!ER<;)wkgC+;M#iTk^*CEy|7V-nX!_Z$V|>{Be6sM0%`AkKSXnO?t at kTgiVGl^@x+
z;Og9weG9M38`-xg*<)ni0ax~{>|1hqugbn<Exkwgos#!n?(Tid09E!K01}WQ%gDa@
zm3y#U+l7~T*8;k<<mSG+d*A%(J)nXucg_VhQDc?fytoVPXKho1gJQ}5F0Slo&(N5Z
zK2_AGiu#OB>2qS=j-0%|^~|c!Xs-7c;kN)k2HxQ|JdvrT_vO8=?3wIwRo>OPLxFR$
z&Ttd|K<1UXFwy0Ck-kMOJ#w3UE25Ar2MvlOzM}`yr$~?RBRGKJZR|g4&t9Xi&bz8d
zG}-gYUZY!j=UzLgDEHh!q1=;phaZfEVnxVPATn78CU2i!1<)(^%3jHySM|6$kM<ZU
zG<^2e&_w#|9*P$9%AFrNF`PGla<77L?)(J>eRJnG7VMcje`Z0S-1$?yg1p at MHMutp
zD!Ldlf4e)fR736<$YoiV2+w1!T%Qs17{-Q&&&}|q1nSc9-=K at US`yk7UDyt$NJHBV
z>750t+#~e<j%+k}nO}cTk>rKUvO?<ECi2XaG4?1O=Y_b~-#z4I{TcxK2tGlR8TP|r
zuF}V}MIp&EPuXPB^C+*|m-Ky_yio8>i%{rsoXS=7YzsEznKvixksou#hxC??KFYvr
zWa9ElfT=g)9|%5 at 21j6h+K?AIz$Q~MAL+_fxUI*lfQLf+gua!c^b^+z9^`br;IRPx
zO at hw~;J*+&0Ed1f_ at cmx-w8f4fZrwf_X7C6f}a_{|19{C0eqF<rfsWp>kW>(Xo0{7
zqx`4zGEeLP&UO(D`=gy4oSXJ%JLd2kwFl?&NiRQG{09b4`}4ta{$~bHKfq at 3wFXc7
zvl)Ys=Plsb^!dQhn~NU9*}jwa4H)3y-0t{sDA!)OyQSJY#|4I=pg$=0ApZb=(H)z>
zZ|!H3yTE}z;J{yX;D^Id+4zrj;8!{DXC3&<4xHbf&nEX+hn{=Fb+XZa&w)<?p3Tm8
z0Y5mGy^|lz_=x1g4*XT&QzNdzagpH%xKW)=pAo3IZ1{!1sn0fXE&J}re>vzM7y3p%
zjEG?Ad!l2>#y^z$f^BVG<1Bt$%zU47(A24+|3#leE#o(!n(zTv*C$`?*TtZ7`uk1k
zPZ4$hgyyKhRrt_cZF%Z5omI1DjUSi(5>f-cgVaz}H4C59!DT4ej{Dd6n(vV|%<?~C
zS31#La!$l$W)sEXlW0SHsJd=W-3$x5KZZvYONZ4o&7D50p}xsx+Etx~O{m9bg{$W8
zYQD0G^>t0t=AJhvm33_N<dK!p+S+-|=hQ}O|Kr9E4T_E$%s)f;r<{NAg{0^xeAOsA
zs?_`)#w0$J6dg5!e}<Yfte<rClm<RXI}D%G%ODswAyyZwAMNA#gk0&Yx%15DfomIP
zozqm;bUvEFtXLq^h%vJk#PE?q8go)(6~Ay->ocm#<ZcO#^+wZryF~j{Y_0sSqBD*-
zK7(pnL(TlznaT!j#g9Q}*eXa+3WA+|ehQgYOG!7c(o%eliw$8COzR8T_3!cWqjq)k
z=FOTxoAPU^8LE~~h&7GjM`dFphneqWSJjN0dI4#^rX;frMJ55GrTUfOk$I=rH_fdw
z9mLlYf^YM}7prE^wqkaj4Zfw#Z|<5e<XJ|u>t|1GJRfC;dzaMKV(Dw{dH4+3oEfp1
z=t%MXHHZtL9rMdzwNq!FTRXjOR>Rjbl at X5*QsV2d^{m)QbIzMJXIky}`gzS*UCXGU
zl;PBu=<Ju_MwR|+9daf|Y0BN)R&aW2rbq5fh5w1ZJDd6_`qyyLs)lUi6-S=hbRmNy
z(5P%9(5Rh!jy3xT#8T|Kqq6x<#d0hBef(_Grc_sv*17v&Z3i%jg+C9o{(Mf|wA$&-
zbEfhusI^n^&FNjKY&E!L)`?Oig1%}NzN~jaJ-U|qy4myKP7>^T2d16o8!C9B!i3l4
zd=Td&)(k=XTMj(xz)y4F_MP+~{~H|i4?FN at 9k~4#L6E<E5~N$XPL%m>kp5H$ez^np
zuXnrKZG(gUDF?pIf%n68ShjjO-htaadV=M;od5!(Bk;5SP=@OO2I9QtwfG9bsTQa9
z7QbK7AEodu3Lm8K-Ecj at 5Y*>Dg&&Rcmj5w=Q*M8SM-{!6+oABo6usVSQ}a*Y`h$V|
zc@=BrwhK- at wf^@jdS0?v`VER+>oZCgNP^{kSa8bSNAb~nI%+=uP<*sL-;{TYgZ#%U
zyhQQeA~@w1D*O#auleV5F&2UJT-&kb-Ai!F)p}l~aBcrP6(6p0Sw4SM^qSAGJ|IE}
zmTS7;)Q4BMme0A0zEt5!MbC9?OaD_vujSe$m!RCk_e5p{;@Y0oeGP1Iem}+XzrlgO
z;lPiTr5p0se6Dife^t2F=T~ykO#5)n&FXWT;N(9<;T;b8bq at N670xwj%l~f<K72Qo
zAt?6?2Ys%rKLqJ><mG1K$Khw??x%3=ZvzFV9S&9WqZMAP at W~24NZ~PsAENLj3O`uk
z-;{L^>Uq4v=PG=#!XHq$w&y+U>=1(GeOlqVynD+M9O*S4ap0#o at Jk%{BMR5$%9C{)
z%GKo>p>SQUaSA^Hd2BrnV<(6ZEbk<R>vH|rfj{KHpK;(j9QZhPj-rn)Z;QfpdGA%Y
zF7G1>*X8Xieop^n*NbIB6ZQ?@{N4k at VFCPN9}W!;;MWWO-2i@!;3o!fYyT(253N4;
z3H{3f{I7zaD)ngT?RxOk0Dh3n&z==KSb9F`$M9MJKTB{Kj?B1oFzBqF8rSVqhF?Qp
ztmwZ(AqbSK=|>vW$920tMd4cR;erR-*NF~%wgYc>;I}*QwGRAc2fp2bTmPc|!|}8B
zw0=SR at Mm#rAJPv{xb;WkBNRRrX@($w>!-wZyI5_gyVG0$3iAJ(qNmPQPhDQE&lieb
z%e8(Q)JHxQ)lGlvzd?Nlik}kK`W&xtEq9E<wf(KX2l>mV3yeOR|M`lK=08xCSND?~
zD;a|ItLstI&+y5OT#aAtz_njhg2vX1kcX(QbU79>G4WvvDUvkxluH?du#61EX(Jmv
zNf5U>5VH60i1#8Op;2Pua*1G&<qGFH8~!N?VlwqM$l+pt;<j($iQ^Q`b5o=cRSK7>
zF3CfDri6jCyPK5%$6o&uCw)ZD-L2?lDr(NWt#IbC_isK at IQe`}_{b-XQgZEm;!<Wt
zuyPyx!%$S=OxpW8lN3(=F`-|oaF)y7Z at x|8q__U`oWhy3_ksSVaMJ$-KZYa4t~^ct
z_P+Hng_Hg+{225e<QabWAJ{|DuAJK?ZoR~wWy?iN?pSD78!KikLT1UPR>{9Am(^_-
zvUFRCcgYB at wfj3W`ujs*zn{`U8QY=lbmzX*o{||wSF5E;2P^`sZ722q9%g%p)NU02
zC-$DGfFo!4rSG<(3W at E!hGXzS_}M<t#;*Lff7JO8-i7=%B3~|(%^cv6UC3|yVV%Et
z7xK@{BLC1`$Zz{2E&toQkbhAY`3LSo{wuTO=Xhc3&BjH**j4MX3WuSk{DbhO%#Zz}
z?)SvG20~sHmO$c}yf{HvE`tmGhvS&_2g{aYJmpLGiIg7}2Os1ST!s}(X4VMF^Xuj>
zMP5^Wv;!U5MZO-}dA>jsAw31ZZ26b|i}^XOWXr!?^0Uq85S0HToHX_i=wHZ-Mg(hT
z+Mi1{LHj=nESvl-|Dybj$e&GqNf!C+XM*x6Je&N2eL;+1p9}Jjy4(MAoX95M6Zuml
zBg at ZA$)NmFhy3Lt-_F;CO}F|#68W>qUncT9BqQZ>2_q<fvdEX_BGi~a$fGk?q!2$r
zTQS(ULGlON?{WM4bQfDf|1cDAlh6#DH~PzY8_oQ#pV}h%sXu)wsQ-l`Kgjow2l)B#
z^P|+?fI6WcNq&33#1bxIXNho=AEo{V{huH4%4UDB!q2ima#DYqG^qbQR=&{LsEC~{
zf}VTxI4Gab|7NpaM+K=f+aFC5l+TwGxFj3wze+^Dr6(^2du-!14*Abj81jtvPnI^H
z?HB$k<qv*4v+OJ6``qyyvy~rkfNfdiACyHtw+H}>)N|~XZ-vMoWC4ju%V6WalHW(u
zf9FX4G~%ahK8y1c%e)>7s2^&S{6&^fVrxGO4;T5t{OyvzF;KC={JieT=0EwBzJx|$
zJOGCrD{X#Te=JW>w#j*j`5P*cj$t4Ui|`BPr+)`j1cLft287Z;0|?rWeR{V13r3mj
zp|Jtwg87dgTwbJu|D{47 at zefa`|ZNvB_%@guYbF+QB80wj9L|F7yB3=V%w8j8RlIN
z|7(NM<ctEmc<jIaCf_YHA3aN);zi?!<3;xYULIa{PsR%Jy}ag`Ufw-RzzESYKicR=
zTM_Zc&r0DPx=H!?v{Y;iKP0#Z-hdBvO)~Gy;@!9EWOEL_Foka$VZz}hCKN==KL}rT
zBRoSsvy&H%&&x*|FUbol_2DA0iVoarJ}UJ9^UIr6Lg|0c>JnH!BTJFZ@{{gaJo5=G
z?q8IVrNU-u?4D(&$r1@>nPRhaqAZz;UAF{=F}aQi<ho}OO(rGcx0?bPm)VS5HPag2
zvs7iI^#U0;+Kin at WMu468Bgq<k(FpvC5McRTU5qjDx(*F&VE at 5FJ~?S6~7`9ZhM7^
zL~~Im-i@>0_#wX7$16I2m5IOS<5M~x%*1P1^n|fg=Sw)ncPGhbhoLuy==@UQbA9>_
zobEgjk6u{%pZNF|;uV4`e;k0uo$^P1vB%|)Ugu_fO{AMYbA2V1ziTJ?2XvmDEkD0K
zpUOXOC;4Y~wr0y;rt>G<`LCl-buI at B^=_)N!xm&s>G2w99d<BI-FY<mwCi at w^|n<0
zLw2GE9jvpiTmA~2KW``b>8YKkoBSEyy|OKVA8IJ`{la<v`mZ>TxBcip&io#}ld`k(
z+o9gh&QJad`TRz}&hl^Z&-<U0xeFh0 at xQU*AK!<Q`uO{S<9!3it7%K)*M9z{!12L>
z<0r5Lt-sy!-;w59iJp89ChNPvsgBRSO^f$4d!6!BpWF8|Z))y={`-Ia-A1`23Ax_m
ztAI|$R1AU7`=B>9 at 6=tz_X?AIukcE~$9Fm3<7?@a_g%bCIG|F!N$6qWwFp^eG9Lox
z>V^l&FYkF}k7S;CO{l*)i#cTA9ZTX?$H25la%4tmh2ZacM=UV$k*s+ctN&?!+1 at GR
z^=hu7*Vi6-8LRd_A5OV)6>iILu{j;QLJWn*1K&$+8fKrdx(xV1>K&hali$A<*E$Fs
zdKrmqIJ>!Q`1c)n+`)(M9cJV67YF`=16S{E%)$P>^3H~OrZTXgJOqo#_R(njGC;Q{
z`v1l3eD1#FtDXek^+!ZUG}X_mZ<>z>qQCwlrvB#xQqOJgx)OX&HTYciPM at RxIuFBs
zy~n1rK9PE=I4=7J-m9_q4F95VuG?CiQz{11YkV;Lj3J2Yd#9TIW(U1~hE&rRNEZ_1
zA93J+BcbTSdvsR+9MjwTdTRV22VUvG>m2x{4*V7ezRH1DOBcoBvCpykj~AT9<Mo=w
zPjk?p?VzuB(0|`S{{sj8d<Xr-4*JU+^l=CMRSx>=9P~eR(BI;q|Fwgj at 9Z(q{+RZs
z>@03&{G9!;wLg88f#-RNZE>kygYTtqBu!v55K)4paeFOJL>~Py`p9hrLpZ=EH at Gwf
zgOn=V>P)CX;VhR8&5|Gw(pwqJ6rQ2yF5k12&Fa7I&B*_!?lgu%AH%NnlVGS2!1@!{
z$ypb+4sBcnESvAt0B5lC7yqdHoPq1V<W*q_BrX%dCE^^EPoJ>!9=q0d7%<A$K7_+i
zFa1CV0SVIG+e7EQs(&><{hK_4_X=!&>aBy7Z{sSQWIDsAalF6iADm<9wne at b_+_)-
zOlh<wBtoDbWEr&IL|~L3<a?yZXJ4U%)!Sm{B9Tr13dwKhyOus!p6NJ|P5<jfe_PMi
z|AP82ME-1R^)({j(p&lV*v98O<S)-6pDt<hS-q|X#_|W(>h1o#mL4P~1dp!(YRVs|
zfQ?z?vz#`+mH#JTlyB=9NfV|>`3G4*Vq1SUUJKl&HR)B7Ut>%MX`cc{(t!G*cFA9a
zb2?c4E%r7N<QdGrT=K89gc1kyzX?2>|7;QawM#zwPqurF*<>@zOcBI;K at 5B2M_;z`
zt^J7w`yN1{5*fI92MQLnAN$^H`5UF7d_iU^1oIy~Os~!t73m{C?f<oF^+Sf04jnR>
zYx$|Q`jmLrK12DxqJ{lXVWNuAYq_tQ+pr(um^yJBVf+bx+a>*}#GfJlT+;uPnB^k<
zmlAV6Z_0*0jB_NW5FT at Rja#Solw&?aX7~8cM|wBGx%#|^r28P=Q_|daGc0L-tEZo&
z_d@&)N%u$0 at 5bVPXm9-4N799eza{B?5%Y7i_#fg{jt5AZ+bSL?=_14j;m7So4#kh(
z{TYTI at 9RB}AO439#vfjbGkqBT at EJm;`3&iI at H;||c`y4Y{JsxAIu}1ALxb?=X#CE^
z at mYeE;J6e&{15ROXo#eTBOW2?GQ{PQJ_hlz`0*J<{15RNRX%@xf*e;Mu9Wmh#G~*V
zEysLrbu4}!e!RJW{~><kwMNq4Lp&b83HVJEY!c#ABz-DkdyoAzq)!+848&(jn$N(V
zEom;RPmy#T;&UWD6*2FJ;D3nMche=!`{y$yJqt0{Ht;`mF8<hi^RtnjBRH4g8zub%
z#7&Z(hd3tbX2kO)eIDWkl0F~t1(LoH at kNs6J%0QTEySNoB)tgnrINl3af_te5MM6o
z#fX<kI*#}XNpqR}N=ftn`c;y?8gaX%e}woNNneZjI!XTo@%56v0r5{IeIw$ZN%|(l
zH%odc;#(yB3&g*a^sf-#D(PP%{*9!UA-+x0cOd?)q<@F_za)Jp;^mV5J>t70{RhN%
zOZpzfD<pj{;+2yABjWoc{U^kKmh}CIACUBeh&v>`3h`=5uR*+4((4efm-Gh28zucP
z;z#g%6u-v=dmQm5Nk4)3Nl8D2_-RQ$i}*Q7zkv8fNxy{nWl6t+c#EX}hWJ%UzlQjA
zNxy;k?~;BK at m5K9B7RHKU5MY7^gD>(mGpavw at Lba#2-ldL&X1(^hbz4mh>lxw at dm{
z#Ggs}bHx9Y^cRS~l=Ke79Gp#rnDZQ_dmy&Y3Gg`)j&sEG5$`7H-4X90X+9GWmNeH;
z`r)@1eth?q`S|THZVk^gw`ku-(uIh*Wjb;06t|zG_eadFsEPA=fdeI7gqT|-6F(U7
zA(H0)8{9hgF#HY|jL$s}l=OEHA0cUO at yKslk;fp!M at zZ{F`o?}J{a*3Ne at LlOwxSz
zV1%T3pQ~Kb+&1u7N%K2M$4mOVh)<Ao1>#Cck3>95(xVYqNqP)o-oK{~9%8OLG0k_C
z$4Q#cXID%5B*fhDf;2UVzbEPOh$l#TB4R$fO`6GwPm}cNh|iGp*@(GqA8Do_u9NgR
zh^I<=8sd6MPe(jM(lZgyl5_*&*^-`vc&?-y5&uBaO^D}7I)=De()<q40!g2b_yS2^
zBJm=`mrD9FiCZLYMcgLo%Ozfnc!{Lr5?_HhA?Yh6P9nZa(pO8|j`)X?{*lDjAih at 8
z*Gc?i#6OYr^%CEJ_@|P-QR1H==6B9$-<u`=IpU>~zD43+ApWJKe<ks)h<`2V-$=X+
z at okd6UE(_s|5nn!llZ?7-zn+k68|3YU6THT#CIdUN75 at Kz8CRIN&ive`w;(0(tnot
ze#8$*`a#4Ul3s;)wWQY|UMuN!60etdgTxypen{enC4NNWzexNj;>RTYxWt<z-i-JO
zNk1v^QxZQd at w14Zlk{H^KaU at Se}`{7HkR9Awn6ohBX at 9@zGouwZTJ*^{9$bOSQ&qa
zpH5v{+4A?C$f~zbm=wubJ0Y_9pV9KaU$j@}Pr*gq%Z{(d4r9Y}qu3R|OZM-5Vsifj
z!z*?VuQ;Nj?9qk!@lG%Pd^G;tl0GBw7|JD^v2|vw0pDH47unzUR&}1><-G50{xn+N
zamj$L5&RBu#gf5Z at _RVF$y>D*r#E?<q3miezA;k1@#0xtd~-Cpf0&Z6>BErGWshC-
z=;$STrJjgr$C(ij()?C5-eLA{Y<VX)3N0Wjn$rncUirpw8^7EOwL>{xvQO{uic(6A
zKP<aZE~1^H@#i!6+V5cF>76eoc*!bkPW2&n4#mSaCwPfd5Dmw-nE8F>*zsQZHtZc1
zZ^nK3YLHFB$q9_Hljx4vTrYmC7av#PZ5U-P!??Yfe7o9z#sQi4Gnw)6dYw0ZY}X^W
zH|>?b6dT8FW4^&{V`2lgQdtOqkc)A1c2d5-UCgmvH~aUNv3Wxmo)f{I1HG2uQ`<gW
z*E2ZT%ACmZNhkMyu*ZB(DH8uEGVlxTjT&kBq9A<L57D5pj|ZH at OV;K at P;+=7#BA9U
z+5AOi_}-z#sEcTEPNe1CoN>t>M^=SbRAS$hvgxbV=f|;0+lryZ6=k1>lUG9C=&}vr
zD<3n7RpBeC!}LmQND89!@#W-)@pMZ?*<%+^N$c0rkz?u+)wu$@;&tTU{6+6a<LkVZ
zw~&5(;a<jW;T0EPPXvQp@*y^znK!0l2 at HZ=$9M+y3kiLS!z-Fi{@ZYqyX%3`Wvec_
z6bfBjS+%4`ar~3YB|q3<$nYmtoYUC=yF}veMB^Vs<B#!%_ba%CUp?>*T4muSbmhY%
z at y^aqfL1O!uDD`JiJ#H(IDbdyKsp-CnLO)DZ}aC}J-n8#oXYS6efE#W-}1O;#+zF&
z!16Y}J>2}d*YZwIJM#7 at 4nI(his>r-I6Ck(knqG3ZlCu2)@l;Be4ca3vniL)+~>k8
ze<n5oPWry_)A*CVkB-IniC23ApZChw#J)|(SvbOrKMn<a_ld8<z8jV#XR}wnD%Qh`
zS7WaX^Hp`)-#%;9{0jG4>E$IX%dW?i0(ds1{FCPXUEfaCUwFmHoU*YyV*7aU&%ER%
z*hufo<}NS3&GMtZ+pw=~u2=q8tUSCTH at u>}qHII#Q2T6C%c`7;B^RKfjzr$~W8XqS
z;@f?q=2tzO1={=$`wRHS8p!`L+{y(l+1{6Ch$iNsd3 at V6)v5yQ${HE?qBn3mH=ere
zb&#T+qVSL5JI(0fn$E(O4-1d;R^D;DAENPBy;Yy(dEq-ZdDw0-u?GYddM#_PMX$FN
zTN!Rcye+(9-1a5jc6wm*i;<jvM&tGP9=*Sh1&W%spO@@0#B2L_VXb$c72vJ<lH5Ol
zg{HShu~SUTYQsMoAGtM}7_|-Yw$b4gqqdJ;G7=Kr&1rr<Qob&BgYkQ8gozGh6*6=b
zhWk}Qpℑ-`fs~=GQu#;C|8%tlW+?!X+qn)713W!<(@I$i-;h>tWakI+sIydhkU-
zQAj8g?sp;!3ce?T?@P_Eu_Md3+jvyx`~&;+pu?;$$SAdOt at g@^-oOtc at qhUJrt!xD
zwaLop;(YEthwX-2J`10R{YFlpcQ%(wceQ`9->sd6ZVi1OzUZEx+8?KRB;2!rMrQxU
zF7er}ecQeG-%FnmudYHP!VVzVFFDTs8sm_^RhO6W`F8!<*HJleyWJNW{hj}yX3N`!
zUZNKMa~?jO|6%L|7zT|q0fw-Sztd=yS?3D(8 at JVqkJ=vYN4dz+vbNB=05;mS{`^N<
z?a{>1)M+640gQFq=>n^~KTh&PPYzS9yf}!KcZFN0qX))Nh2DQv_%dFCd2J7c+j#9o
zO`y`nX4BKE(jDFgUz;lIKNlZa5bk%3(I<H!cADu-IrZ+*f$w>%-lNRzsizJP^bW%2
z#`C}wI|{MW8 at M%^tk at onZ;iBUFFLQ@`Wqa^L+RNF=o{lv>Jzu4XK8+o^^ojwNhEpZ
z`Vu_V7~3N{kl)QWR<4c at EskJ^;QVTAw}<Q*#!1g7qRFv2M*M1T^II6q$9t<@?Gep+
z%Z^Vd>p}R<0*6&4P@)6}KiC%TH)T_}-^?xHevR9_^3BbE#pv&~Z21z}RA5KdyhyTt
zuV~KJ%9btIY3($$0^~xqR=_^{(oCII!2I!-<IQDUk<X|LFFbZtG<jS_WYwE^VisLG
zb`tWv4BN2ggPUIgXhxBo4gB&uIKvHcuq`P(Md}2VL1C=XHa;B|NuFKU`4kec8>|eI
zciv=<Mq|8v(6-mEtG$(JuUO at U$E=E;yS=cp87k{%!2EX0IUF`yuJl`+oS)#21JW$0
z6a1zEK7HgSZge^mPY`qHT08xa{YP at aBGkNJX-8$t8#%FWEV{TX6x$bj3SZAYwQOzp
zS{Rn20{gZ#=<lU^4bSuzS1W62!SaV=e|f;9uxIZRT^&XN)!I;Q+uqXquydLeZtVxx
zXM2aUaUXWHVeYuV)eY02Wpnm?gK}NT^bOI(0)IdDaX?c0u|E%0ux}B!V2>?~aQk($
zGdt(8*o at 5Ii~S88R41Bo at NsM~w%jh<%ALup<J+ne^9v%$1w~QpU21m*!2a0jJ+nF4
zd<<DZb#aj?pzOyjZqL2q7n6JZqpq9G-s#vmG)<R!d=m9A6k~qpc;kuC9=nZ4lGwsE
zO`GbpL3>XGn~NU}T5f6{NnVmcCL2&-LxU>rW&VM2Dw*%mAE7DtV)e^o)J<0-U}Mw^
z>0Wpg at UO_sEy1zj@y-P8&fUNBJDUylam70)-pz~eU)(vw(3&mI&qfgzW)$HQQ*7?Z
zU^o|azK6#l;dy%Ra*nIKo`LTq4}gg=5WbxsUSS>+Xzhsgr=yz3rS-lr$)gOVWDxJg
z1|v`STUWnqcfi?TpEd}E2b!cg?{CT%?q?8*yfmq=v~3b8@$KpUjrvxe>Lte(`V$n4
zGZ>_d_Zv4i9N_A0Tqv!^9 at BJ${7Csbu>sL|7oYt-*0hfv#^-xu5X#?CgWaZIYJQ_S
z4$5f!ooaSJk at 9!Lt*cPf2nW0PR&U^Qta8|6y_cE_;7TQY*>}i^UiuI%nA&tChMpSx
zuyEIVB*4+jS?_TyGGqf^;)F719rVF8VKoN3HDHZlV8bZhIYHBZy7~18nr$@xd4zgJ
z;$Tr-{$A_=nU9!q#2UE)kY5ILi_M+Ym|672HfZQ$qp5Aeu+49a9xgg5!H%aCT>etH
z?KOB)=co81{L8yy-@)V^{$KiWX-DUYrdd_MMb_k-4w(Mkh3;!z=OnhG4Lyp<H4=X>
zf}N-HO&SR^vUg4gMSO!_xoTTR|5|#3sN=UUgC&i7-~!5 at gyXtvagnjI*~jL=0;JP>
z&UpT&<!E%=<mUcu5S?*y3jlj^Q{d$NE6quNZ?%m~i_y5R84nXTEkzV5e=#;BZFhec
zpm1wGbxL4Mpq4cy>Ag_OUu=F}^0E10ub_LDlU4i`Z=ip at 5KYwAc!{$-vOUt)gZL${
z at wmGXcote^K-c^VGmsy4foq<e$*c_LO2}-0 at 87aZ(V3!KQHE|Wlh`t<P>jw%x0a7#
z$y5glEBzhx0PAqu8K}d~^YBOP(6Xk8dR^Uhr;Ph+s6x2y1^UrHQ+~wy<i1dT<;P!n
zpae!c!^ptiZhrq`_KiwjA`=3<pP~92=8vB at 1y>I1$4(2aY3H#W^EfS*jj&{BNsfXN
zcw2{eq^0EzEsiEGEWz}<f>VTn+oA(M^&2v$f+zVkSmxmhj$<SS%zP5yT+1&^r9JAc
z`l2UhiwlqO%k8(VNXz=7NXrJl$K~Z^^P4bs86~B}l3{e<cCd~lkL(*w6c?ix@^@Fp
zxE;Z^@&$bJ2!j&aIbS>Saz5DF=O65**Ma+5*!P|0XQSvl@}qh4O7Nml8QZaXfd$iI
zc=kf5zpfhnAT(_^`n~Dvw>DEhl<mGE7OJho3!l6xlJhL50ugL<bz>xPLL at mB6Z8$Z
zBu|VjVA)b$6D>ckINTazD^HO%|CJ;>)4ZmW6T+0gz>+Js06 at 5elkm$n7&|_08~}@A
zk@$w{@{eLiiQiLf1Peguup;r^5iA422)#dqEHN>No1e!UQ*iQgQMvE1#f)YfF{=|s
z<#A?`2&1J`rsZB at 22Rh=V&=io-}46gn~eJwjZZD9&iOlxTG9Cncxy_3+8()o-i75a
z$T7s#IbU{O3?fqo(?em?SrkiF1O2q`AHKi0yxsjGtz}^WI)USgV*|W6u2nzBm6jKO
zcE@<kqfs;I%QCDlti{z9T0!7MPb1#^$s7;;3oUSLdAls*+HgQ=hasnZIQ(Ka-Ri>d
zKr<PP^~0>Y-dy%zs$CEsSX?|kJhw+N&}-ODBEE48VlR<kgiXJRVz=Ts9n- at NtHJ~O
z7l#L)$$5GU&!dT8zqI(9sjhc3wI7f!*6t`492GBLtuZ>ar|o4r`j4a~m+Z6zo*h$|
zD1=<hF8t!mkHlZ+!ZU1)Yo<4MY(fE8>bZTg6v?P8nwygJOR#jNKpZPFO0p?XlD$xp
z5^06lP4>Nxt{Y5=e8=!NPtDl3@;_cb+n_7!hj$84Ka5ZqqFL+5ko_;OpUfhe&E8QY
zQ!;v5zXS>Xo9YMthgV8v;)|Avxo<)I+?lqD{eB>MC=|eD=9{Lj;Uh1pd8>t0F6G~;
zK`K4BE=niQ`T(2HH>P at ayFal%&&D})4)*E-o8IFHvR5hDnI}_xo0s|h<WBjtI{BdR
zDZS8SGyT~Px+!6?V0jk&FD;MJD_EX%|6}SlU8;lA$&<bK9gE-qX{TtVKVYljpkF+q
zY-;@?#ix0tjC<Yl-JB&~Kxn(aPk0u8EsWo>L}`~EAG*tVI*Xh@?sRrD->O*jB^J-O
zf9r{sS3hrA-79|TfJ}c#oQffBdwerbKh(43;hc)rkHb})4IMkh^@};HB at 2K4X4`|h
z*2L(3Jk80K(SG-pF_j!fz|_e4mL!rn at F_F}jv#3TJ-HrDUx?nL%4gd~*HSyaQ=hLP
z|Em9_{P?}?U`KQK_36d$z1{~lEasVf{MM-cV}gHa&GEeiL-<LB!66dwy<-6P$H4*&
z42Lm8xF10^s`IjmqehWGYA`|<OEl}KVaUE})Y#3Ah5n!}<!RZF at 6Yh%7&kj~dA!7_
zo_Fl2HM}+&neQEu%jH|!?<K~<7fvm~OY>YJ=gMx+H7hxrq|a5L0Nj_-To_8D@}|Cw
z4jVU3%|#=UQE%02J-s|!<s|ZCdAlM at JAF*~N%wa8Cucjo1;j=|aM?mhO#3JGU3AH`
zP;;-u*eR%Q|LQ99Jp6Gd>o2dIaaL!q_fpqg|I_O)6u<agPLLPDEq(i+YSv!3P8x|n
zB^T+uo9o|AHQt(9vaP}j{A=N>Z$@5h(q8&d*M4SPicDSS#lM9`=zK3{4eynK>XM71
z<*S<Ch?@H;k9iNW))B(hxUm%9X4d%2w})G6;IWbN$HT21;E5$}ES9VeU-lsn_ at aGZ
zoQ9;T(uc;y_b(lnjF#f-4j*4K97`kNwl_cp(a|{WL5N)3+kotat?*=YV_P$BIlyn?
zko~y1g~<!Hcr>+c%^N>Biej2u5Q(qCatjw-xGWe2l_DiYVHC7}hR%ynCQN?)@dHcn
zIZelS_nDHStnhoRm9OTayR0|)>n3D^MW9uYoQ}?78pY;MFGl&xQyaP-XFI|5WC2t%
zJL;zHP=NbtaNmSw{ik6FbU|ivv7zf{dLf)H>&0arYx+z3#SPSOM%Pm)*B1}6$1**&
zm%PyP;;`czUJ}b{+(a7P5?1?R4=(w?^ad_(u`I at Z9@{H(Sxi=3ILSuGc0`Xu2Y^{K
zFBiZjb-AFGQY+wQe5yP(5`UHtVSH)sy`y`W5Pt;j2u=DIXDD1I3L9Ok%fAR;&1WCI
zsqjEpqU&(3$LCQKF36!Cr{X@&)a{X+b&>elHPP}Ti^Er*iwx=VMiOV&L=y8SN0U=f
z+R?>DxD=1ZrxoLB9qWzLiU;7HSMwd!iG|SRx%4edvo1h?^6y)%_U=pHq1Y5|<pWO9
z^3TJqeUV6c_(4>a9zKL9l*HA|d-QX7J1>Vy{3?aqDY%@Tg3h1%m^)XW>N{6E9CxlZ
zgFo*3MB}TWUNl*QJ6GEyEuR&I7x%`QRQsQc`yTrK74B_zzkk(%`&T<+2L>C3vAb>$
zuyl2Nj7RfU$4{CJOB*XEe`+qtNBiZ(MXk6+xQ)-+!Zkc}2&$!~`%|?zi|W8)iETd7
z;=)KAm#*)1u)b3EisazlJxpng70u~@^IH3{2HO4%MIy<`g`G#5Mu*xs75CRVBJn38
zo8LMa_tzr0zgC^|nQf04V84Z59TxCX_t$1^3-_D63HR8x;2ztyDDSVC`|bMvTAxrf
zXM4-5xV^^jAb<lp3*KJq=fx`vI)4q!zg}j45x#71D3jqcrq7U at b@W3PyfYV6s6$j}
zXB8Oe+hDdE!0kc5qcIsalM2>I8@#!X?ioz=Wwb=U{Y^^GpwaC7bv)cLs)-&ub#l1%
z2KXgz6y?+Q(IaMuxIkP$U#$%H>rotQPFGp9d~5i!Uy$710*J5T+yuSeqgZt4;0k?#
z$z_(y_{_z?ZC=av{DqUv;~03%X`RuL>v?!uDgIo99k$mpss=Y(Q+M6iKVl%d)%265
z!@|=}a%&q at rq?mI=XgIhzOMOhFVV~F at 8QLBx_;x=gArrr<7Pa>Q$Or^V1St(Z_#FS
zJd>s4iQrL*YA#)+pI(S>G`+$4^kWRM;xa5kgqQ5!gA3{(m%fAB3o+dD*q<+2K%-au
zGIC*!hwCCOU-Gsr-r?|)3-Ixy9)&3}<+vk#yE!poJMU<xhA-T0!aNIyW+WW}l4$%h
zK1hufA%A_%pPBJl3cr&wH-@*G!5#M^^4WrFr~q3|1r|-iOU6;qs!#Kxxb0Sv>Tzzz
zP4bOU{!tQJ<;{!}KI*mL&KN{CbWm-2ZjIp=ZhaY at T&fsYEUl<2eLeDkz4>qYT2qfN
zpa9J!T{EPA@)EgT%X-w|nC%|a^zh&ty7C;F7{!Q$@5D`*HS@|L?F=t5 at g?-5Ac`b<
z;MueOo4jLV#Wl@;_HetdC?ea?TOGRY5xcP4PE4-xj-3qOKAznXT8zg$6~;IlMj7W0
z_cH_d06Zu|cQ9ou3Aes&jIbf?^B$%&m+|cZ-XxR-Tig>bu@>@e(+6Dv_~E&?me2CT
zR~=$TfEc+(i%WcWU at vA|3$<E;&ZCAZf&Twv?_J=ds;<TVGf9R7d7PlA+}8da+gOt-
z7+TvVV(kP1oY4u=;)D7GAqWa2O=b`kF)%Zj<8&;okJ?%*ZEZ{6wko0)2q+0^tBBR2
zwu)MnF+QkXAtJ*6yVgEu9szpW`@8r4exKjJ`Ft|xoc&mP at 3r?{d+oK?S{pqB_jC|4
zkpLkK^@!zSK|vrybRUBv-S{4DIHO|p7Uy_d=!^8BvkMKVGl{?_)=?3eX^Cz&U_B#>
zFxlOv)UyI<wYbS at pCj1H&W4Qm^w8;HP)NUT9sMweTZ)?O#Y#&%G=jFWNG+tJo at W)$
zHO0}UP|0ekby#Uyc1&SD!6}_LSy&0^z+Nw_Odg+lkaKFm+94?f8c2C)cERcage#^>
zL}6kvs?&k2aHTfVHW~GG6-3FjNj)suWd1xbozH?MlSl_~wo%Spi{QpD$-~U4kEJ*k
zm`u~Mr}87`z;)SK0=YQnNRJX104PqdKdBaPX42(p at XsMyZh(X*XJ4Rdg_PXyFZ3UT
zh`F-aWT9uVAJbA9YjDumjHW-;m_7#Nq7DQeMQL+ at XlS_I+s}SZR+ at RCMz^^dYFklT
zKyCeX>mk_JP3WH@{XP%IP!%A&U1EOuHtWgR(ahx)g*BNb#T64&#~cz$!#E6PcuRGn
z?k=xJ4?VkYU(dK|x&rDVo8fV_{D=9UtQ{(Wqj$RFrbRP9Tp=BX3{HD6Gnd)pzBtRh
zON16tKEqC0x0X%@Hnw}*OavJsVeT2H_JK}MqJxC;*OTZpFIIO#1O@~w_X0>ITYUNB
zb(_BEt5(K at im+4uNT6fLyvjCQ{s^u1UfH#;AcV)A=F!E&v{HriMC>pTvbm44Xx1`F
z!}FS_&)4zGvSM{NRy8sz7!uye?e-E`{JoiT-}L#EsLk{mKMO+BC>R*wWTI7N1wd!c
zQJ`YH4A2P*bOhx|Dc1I1$Q1CP-ru}nKd5I4R9T||9m+v%kIkI9KhzLVD-`P41yEPd
z$U&V&d%^;asc@!H4(&IEs?eaCQpd4c$7-Mr7L0DMD1g>)(hXrCPxDEIk#WeZ;T$V>
z{&TQ*7UuoZc=Ee~ImYDt^-3zC+aqvX=8XBZ^eWy6nQ|zT%gAqVe{bg80GWMe%Dwz2
zGv%PHX4WMHj7&UFYYvUMM&Jr^qpY7Oq;l%?mXlexf^<6UByFDAG4oVf=g<EUETDt)
za+Q;u^j%%#b;jJaiAU^Q2+ClVg)(;nIv86W*TiZCC_G6TDc|UectZf$^?e0$7k^|F
zLyrGgx{p45U^NhmtBM>cPc7ijq`pF~Ose7veiXXbzj~Z4dw5acXknO~a^5EVgupYJ
zB_Lfz8>*)sV)r_ at hyeL}U(K#RjjTq4q29we@$ZtRr&F7FG}ga+^>IQ+hAY2W-yNIc
za>mzP));u%aW$o6YN&tynwK16=QX;YlV~qaDR^!Xi(gEqg$l$JRJwygz_aQypcV~S
zt<C{!Vt-BaHYg_kZ66PcY0a$Jdau`q-+zh^#%nZl$q4@(O9Ws(o1f~6e}(f^X#0E7
z<ByN5|FF~<(_R^?Q++m{5$hQ*Rb-5}voSRXC^Un2Pufx_&vnt~Gz at O<liub{>fj3`
zv_82N3Qp|AqFzB8Ha}pmLICLVAHKfQ3yxb>r7aXCp#byWNq<%=H%1 at qzoe$=GIVBy
zjU>Hrk{YMkq(AbfwRY+$NuGEJ`Gz*e?~ncD?sjrMm^Vwz;aZ>(a2L#me^yb-$7Oan
zko|GszErql6SV^$pXl$wu#yyZ7rmm_(0j^`lF<MQCM_C%Y&G?YmwQ;()*96337JpS
z7(8ZvOM<hcRXLuaXJVx^&mLB8 at I^-}k$JEXR?&Hq(dUS`m`oUz4n#Laz3Pi?B2rVS
zy>s7WPhjFeA!`sN_B!i7D0Aww_R=ot)6{cza*4da=c9MJQEH^(Ik-lx)}+iyb-Mh?
z4+~F>RbPxXl9x*^mks)}+E-6xoy1FfoxmfaM+ at n-htb<z at Dkx|{Ie(85Pw66AIh?c
zmjkh*WKV^HU|E=dPU*sm3$r%EK>F2(C~KK4QS4|(Kc^crV8y;jxee*2*$_rm8Z at PD
zMk^im#xVNQeuX6a8dOD46GB|Lo5nxchK?<p2zJkiEe-aC>0|ChF^f4y>5tJHgWWCG
zF^VFmdRca3m6j+>$ksx(4>=$OB7wyWceW0NlF~d$7P(oZ{`vT~dVg!^EURoturCVL
zyw}RRyo~T)6hqmpCwi#N_IPgvCGOAJnz7``C<|5uPafzA163^X6eClF(=hkxG9BX5
z<&L)@Z%9v?tsM>B0e9f)dEwpBIri!;n>SygL3}hlvuZ?B{hrvRXy!F#<~!cJ1IEKD
z7If0b+ry$&bp~^YLY1LJ7)r0m`b*jHmuJGK at Kd+__nTz`E+UL=%$Ei6VNjUc&xnfE
z9U at AD(#51_3)K2(M1Ea3o=%xsEEF^N2Ut#j3qbLEdyR;s5QBy92UuS{eJc#xe7)!?
z(ab%vHiK5WsQ|6M#)-DR5dr8?jj*3)TkDM_vo?;oXA}AD<OysK8{JP9EO_JV->{Qw
zh-_e%1RCo9U?-1*mmHtDdLK&rosUXPVh<|L4HBB#w|K5Q*idvWK!4JMtLVQfrn1%W
zyQBFPlX0u}uvyC+5^n at zCkLKmb*yTre__#y_0L?>>o3 at TrOts-G;6fC2urT`BWC_+
z{Ts*3--Df5z1NEGXe&k)v_h7N>Rk8Osr4coQ4N@)d9z%r+pz18TETn+^o_>d2Ytq-
z%6WX(GyAvFt9C(SS4&&5M2sGvlJ1GD?<?s&T*pCTdm#21zuA9YR86zr$W>nq=Zo4)
z>i8DT7fs(JkeX(6ot_!I6k8!XxlPMJJg_NJ^Kc~dB at El1jI8f1i6}inJh4m+Mx(NH
zJ|fcsaWf};uR%Q at 7yh^9P?U1kqx6dSdN=fREJXBA at z*dIgwpP5NW5H%DCQe>@*RqC
zGFO)E`Uo~j(4@?j6}!%b%I%Gn?mCzK!r6PURA at gtlE?-liTBGFd^U>Ee|>Lh#QigR
z-y;Ii%z1&xu0KXHr`$g&Q}yFW{T at 3ZXG7A4M35J4U%DcFG6cO0%cC-P;U4!iO4!_%
z9nYS;^GGO>3?nK+F0ZS_n7>ChJ9KA`Nu#Ii>tAFW(XR)^Yk`&hDiQvADV!~f?=HVL
z>AdXhqWH7-NRwzAs>O7E_N)99&{y(f{ASd<vzrkU<oP&(D+f>&{FnI!c!NaGj~J6>
zQlRL9dvpub9ceE+ih4G&=w%k~h^)_+MApAp7709T_~DkL=`$MJh1le6`mFWQkMh&?
zQF|C>Tf at -a<IL`vhMf<V+R1JZhOsJ(;T|V*N=lFvsd>-|yzkWP7Sp*#POqF at TTjoN
zvJ~slWqllGm-CNgxV7s=ejeuMX`6owc!)F?<lyZ^PF><4tFPIR4x~?Z>)jIVq8JFs
z8n?uTAL%!hQz}RSXOK=0XBP|3M&<g$@aow?vg%;MdL5|o`$#)88zKe;=mxq$0}56f
zZ~x)zqZXWm?nf0P?kk$xNq<JHNM$i#Q-)GFn=%;E!yl1lK#r`(heg#q(RZ|cZ5Q}k
z7vjg{%&-8kUm+`IG8%*;F^sm+{XM}O2dwX&{%`D`)BnW?tyYvSdDihCrW~)v#guFv
z722PY<?w0rg6&j0`0Bj at dpv=*!)wz5pt1xS{$8S3>rl6RKK4y!t)Vxl!zLaw3r17@
zt8v!M3+mLu*0irFvnU9A*A at FXc8K5~!MzVpVUbtZ4-EeRE*R6JThnvwq3g28`u%7Y
zy+S=s!%h_UuYa<UK7$4O1I#wj^!}2#^p73Ov>3{?z=X@$&MqC+K}-k7)rz<vxBrc%
zFM(Hj$vGY!8LS{9i9PUaTlP7}qvntq{7sduXNF(r<jmUCj7{vGCWc7lpAd4KvAO8L
z$4<(4Clx~p=truFCF&B1zQBU>)`@oy?L6vu77GG2fx!UR3LAkPwL6*TI7g3Y#g56H
z!uxW`<Vl^!srVTVc<zG;#_F_12LGeC=plhO{AM`4HxzC+SYNSzhEEXlKRF7aSS<O*
zTm)nNh}IX&*Gu&z$T|K~$b$_R=$2ASg`Jd3mkK50oCf_ug1nK~1pTToH4JQ2xwv~7
z*dNE1AkL{u6KAH6#m1-=^m>0hf&h+^#UOM&Nh5UBm2}b-*xNlV{O()GvmbNTzr~u<
zxMKvphapWE*}otxQE*@c4!4eeb97g4hriDv)(A7<7>$5Pr9Fz60(+GlZ7}<zo at pRu
zAqp<rirA*voZw1_!)wAEatI>CVY1ko at KLw@CqkUk<EEhoJ-a(0a!C<m9SLIC$Z=+t
z{5D+|^=xZAc>wC@>>9$(@ssNcj$&k=AcnYDdm<aYYT at Xe-W)%@)k&A30n8B{3>)X8
z<65N{QyGlKU6Il8GYx!C!#LJXZh-xowOkf>aLoBYdi)3s^|V9nVMxj$MC>v2*a8!Y
zVj=xmjNEYx8PnM1){al^j62<^cZmjlriv5Qzm`Qyr`0tiPN^Dv`KSi!6`4_XE$5 at B
z?%PJ9kW)Wygq{2?9972yiVQosjt`|DsymOKeM;=l>{V%rC(nqAXw{L<m~qv1vXOc-
zZ7J>qw#MVILG|>>F@}Sy{6LRZ;tUw{$-PqrQ3%Iwf_<kL(Y>oFVuFtzr^ZlXiYV+I
zzhhEj&n2wj>;hKsTq<C%qW>6S3w_z5TDUfvx|(`^S{q<>!sbWVmxW-K2az)hQFFww
ztrAuLhJA=Rlhi3l;)qNSvzHKCT~7PRy8SX)Az!5$emkd(aK=ml58 at GoYO~~oD=`P$
zwfU!&6;v!G=g;=qPy1B0_Zr2I&U!yAdvgw6arokcgwM)_v-nB*Av-A^l at 3(?$y$CJ
ztFc)oXkJR}NwdcgvAnpvp*gtH_)0$#1~QE7Cz?5Fv$y9)aLSfb213Lg;0<{K_{cuO
zil65P)b`Xby5VHf*vXZoP&ht(1(5v)!OI0C{Y87)q&+&qHuGk$3d2XJ*ocEK#0yOB
zcj!y0gQ7f|X=RpApqbsUCQ?14J>{;q*RuPTb$-|SY~}XLHnIVL5SVhRV>pKZZ7?)|
zWlLCH2$NwA(ZKHodsnTa2TTS<$lV~|juLRAyT{j2hMjy&2FEds9R^2I<~uWEBW4}U
zpI)Mzv>EcLA;J~yKg5L&q`vt9Fh-C-$4NTT36zxqJJkk&l^u3!1bviUBb_SqY^TPD
z?9>#Z{pp*Uz=t7hOv|gnax&Jwj%=d{H{;giE5W{6z#WkbPv0Qr?c7jir>bd(>41j`
zTJll{zwjZXcRa&d=vT-|WI4czR#j*3B4&Ai5>Y>{I(Dp*2S`J<B3F(npEc?eQob}t
zkZN}Ms5<E6Z<3wsP_jhbS917FUoCVcb{rZD`_Yt_&@P&t{WAzG!oQH49*tU0)XohR
zb}CANUW<}pslj)(M+yl`Jg8l+KZP6mVtz(A24~E~%GgkQ)e)Vr^b;!rFe?yx7}4%5
zD6<MB04h&`uYJW|$5_}^p0eZ(M|QNxuW7I2-n3O8nUy>WR<`k*JTZ%tNp(q$ds3@;
zNGXn+l3QJfSS}A4wW$^4?$(4>cdA1Y_M|#_h=@qr#iW)csyp=>DG at QIZXvd#Zls-j
z7MW@^^Gn%E<r&wMRL-nv*@o3&px8C3R+1n~Q;}LGwL`wN at a?1(<0DdWnAVcop?$n&
zAqixWvuiRE;sc;d4ZfZ9nh*o8CpC?PQiSw27D=huG91&lIr2z!VPyGWJB$SrdCXej
zv_#6IWg&TMd)<RVHXX&8lT>19+MHP<_qurPU(+Ym%9jpaCBT!}rnMFT6HLNtyNW(P
z>k6+a(mKHcP11)!qX0d^Pb#g>m*Qj8bV@)lO26Gnnsuy5(hm;r{;oug=~A}{I^9%Q
z0A<2uJtAtCPM<6RuE_wC1J5Nre<!K6Y_~_`@-w*dBLeY>q+vUHQf1^JH`z0*4cHy>
zz)CN9^gx2sDg91kd5zq6M}-89n~cq$qiGx*7(3}Np=mr!*yO}+miaGf*bQ9*HGP+e
zI2>;FN(Lo($%Fb`!;H91cGzSpacVXd at aRS(244cd=J at +TnC_YOwddl-m73^$NGz;i
z`&!Mo&DD)J$5FKmH&bD7ut^)S$xfb1jeAm-*UGfE*G+9Bn)M~6RiJIksi*oh(^fnA
zVY%>M9{gzf9vQ!l=|RzSO2MaV(;0!tGLpVY5NNtKliI9-a0fk@;%VUME%$*%ge|&U
zA!9U2h1dBlHS1W at AvLp;xA38TuYCO)0mOEDD-UMHG#*A5F`D^NrwME2!K9QZCxCkF
zi<h!rd)+`!uaV%du(Vw$0}Yw;J(ApKxnK(6>S$ue8lCI0Bm8Qlek%>n)7O-eo^&f@
zt(9%YRa6q;5Hk3Tr8DCQL6JaqGqv&%#~_pN%<H)9MN%fsgi2ofG|>cDsFWtmoXuV@
z6A~aj8VQbM1Pick&B)i;A(B^WL78eF{4NDQL83IfJE4|WSqM2zs^(QwX3mBI$b=1i
ziS*zLv~JBP at WUjp)ts4-5C1h8^zH<S((LYp$-LHSstF9Tl%~v_-3t6^656AY9(;k;
ztr-RWG?Gs?@JIOY|0FncCrFfLcPF&+I at Q3R&8w!&+`Jr!^lyhLLgKw51Yo!31<uVK
zgp#S1K;5lWEBIwzu;zA`2`myV6j+&?@02fhStk!f%_}6Q`%3{pQzQxDvP8%m1+3tU
zyvrpSCi%(B86o8Mf+aU!3NoF#MZPjOZ<Z|XvX%14WV$4$dyfF107*hP1xQvYpi7da
zQ+G<do2m2hbRTj+fOxS2gfE4hPOUayn at mp4lDT;YU(w8(Z4$>)$b$etC}dVX381)b
z63E2oGb$SIXBdQe!J6A$Ca_4fRbaWxwwtdVlEqykIVnKm2&W;EN2)41CS>Z9cz2no
znJ@)dUEF1&Dnd+!ELZNb5gJpeF`|KD-<y&{##!z%5vt?PL^M!4mwi%`jnHJGodN(^
z3;|GUzUt&l2+5g2in^(mPu;-VN2J1%>*lb48 at 9~R<TvSJ>E1k5zA_qztU at NFs7C>H
znnt7q49yeZ(me1dz<6l>9!;$g3|b;)*_AiV)+g(hyKFW<7}x~Z!){*4hr6s*;4=6W
z%Cb&LFuud-S+<fl`J;xnXu{>1aQq6u+-Y8K5n<Fv*#ckCskD(XMT9-<dy)am+FJm#
ziC6iP1b|v?a!Oq`o7dGokmi*h5XoW>`>`Yi$Z9I5WNt~gVk<%Ej4Tdjp-AY$5nwUA
zk+bivz<O6BVFEVGIL)NC>2U3lBP8>lX${D5p~V2E_CuY_)hly`yPFBtMoDmIJ{Xq>
zf^hKy^CcF>N}xtyfk$k=f<p><3q_E#)<)9jBi5|{Q*5Yg$)KQKVV+kP at AMx>20=uA
zy=&l*1d`O2F&VAblP(>uxtzq^DdQCiSI`ofD}_mxYxZ5*$`$?MS~c!%jqB(aH(9<t
ziiY{SAZc2^B()}qA-^U`xL=Y=lf<k5CP}DY5?M9?UTfNbo`H6~S%4A`mgU=0f19lF
zcIucuG9+|0XYn_ydVNZm2JBdNN%zYjaFtsiov=VMRg at K~Pp#H;FYc5=*WAfR{)CBu
zTL at Syyqg&ahM80Dbj=E>V4lG=yrd at cMd%EWO$G9dS7f!zG;c+P#yD(ixafkM{L@>t
zV;A|1gJ-W`Mkg$RIPxoEB76=zu=i4*=~q^v!F_1zxd&zy{u&?Ru?g&3!3=}G3+($#
zlWPV}Mse*eClCwmiHt6^K23JLmDyWXy>--E1a;NR-XVBBTG)3^ioBk>94u$QM2W(W
z-J}}{kG1;mtjR7mhs&MJG9jTo`m2+=M~SJvy2~cZAaj>Zl}C?~Pl?FB%-xF&6<L6s
zj1x$_UtuS{gFI;GdiK$uuE0(1!*HeV)6!LI1e4*;wX&@3T+aslID#2LG8f&4?Ryv5
zduO?e4%wTv30HpfmO`kd>=G4f7i+RW?O;>`b%lX?rw?@w!MIHY-cS$TIfN*@g at y12
z`SAYW!F!zk2407Ox7>%fnqUKOhzIY-gebhJh42pZ;a%v#`-p)zP2nwW)g})hj3$rh
z-{iOGcV8at at sB<>=lO8w!y`z$fAF5x(=u=?74G$f0apfM5h at o*T3?Q9_&Oi1_|sK<
z?qWd|xQ9p`R;>vexRVv`P6Jm6RuSCii{Nf8#KRGOefM~9R~kHQQ at Cq|*-+5mAlTs5
z at Aqp6$;;0eRU-=F{!BA6s!|@@-8eX*z9CcJS_S$lVc<ciXHk70le9h_bRase4#a5s
zHXVPDb0jbZ1DD2=`<%?$t(4Uy$B(b|ao`wuB2u$C at nWA0?xk&DiTBZ48r&xm8!FC7
z53iWy4!7$cX+xD)VP(%C36+qFIqu?GiqQHL6 at jajJn$z0NO20kikcn-ezwB2ZiNC~
zD<j?&pr_{QExS!zr4 at kA)%(lz*umg_&h&DJfh!|l;eH_p_ZEe_{XlTP{deknwW;qk
zgNRlTp##4d5eo~T79!#~T(=yo!t00w!(jt>GJti276YDo5WpY*JAelmz?K1A31FR4
z#ehc~1n|Ij4qoFo|E4wGW>74XKvDd~9E$rC#eD^!b6s}{Xrv}GP7i_*f8>2Z5pH$V
zjj~g}$I_QMq|Dy^?{2+r#fx{m^{A6(VdtC<8HBf%<?IGe`tBdEzGCiptXa3J8SEFB
z$M95|KYboYeb2(H=}K4gh;v^KpmE5Gr`ip6;wuyxowH5&N?)T;IRS5DJrxtzYFvKB
zKGP)X1<aRyktIEn+G7gdjx5=j|HKO!?yod2`NWH5$p7Tbo3jQz)zZZm at 0N!B at Y<W!
zomJGWjRyXPZyx- at a=6)AnO%+faWuVVB`fd!RUo{-pu+Gx)JqH<(sH)hYD8=Ie>9)E
zK;D6PIVa?Bd+uks^FeBLvY(?oCv#hvo)adG1ysdA*}gZWZ>H37u2qY)2wo8p(fZv%
z5h$g8Es;GcS0jsI^^H`-YhybmL+w-TWD6jb8S0r(DJfAS8Q}>@FxlUZlI&z(-Ui~7
zn-k%Wk!NKciZN5jeb`+*SqK)@OfRzcun6zT?x8Q!Yh)rwG?>uEB^UiMjShLywL}Yz
z%SB(P(K6b}tu((O7k3L&0bbCH6DmgBP*dtJc1T>87q?j&Wf+89?sqiBG_T-RqJ^g9
zqJN|XcX$An8{k6>@VAH~y~x!}Z}?s^5o9O&Ec|(HhReDWaAIG+)0aXT8F3){T2>js
zX~bg-%UQgUKV@&Bup&k_9`ZV>fVn-m`J*S~Qh~WAZU4uD3UlBQyzn#ko_i_OdKN8C
zBU#gEZ(WqK8_x00etnmSVw3-#r;xj!CQ4pEy4_PoiMX$demVz=%x?}w5rU_F0 at mCY
z9T&?;aVF at Y=9DT?C4HM6qa3&8w=8 at WD!Zk1SU*%J=G*?3z|*^r8hZe*!u~)P2|<g$
zL(d?}7gDtMe at ivmD6eGy4X9fA!XpuZ at BK+I-n9Ks)&KAR&0+ZnaTZ at Xx(h?`&+}Wr
z?_}U>ghZ4R%!|O|WTj*GA@)sO9lM9vH*Gj(a~{0L|5wAq*>l~*0Na1cG3E1JQTUAv
z^z*9?DSN_M|M~#u$!*Rj8lPTB9SiCv4e{!Kp!CV7J4nzk%l}0B!YWF6YiCmrodl-7
z;4>s%uLqgV(R0Sc?vnVs4hCv&d2g at m*ZTDn5cE&r{VV@}6aMUb2h94%@Lzqv{zIxZ
z06T)-*Z=-}qyPSo=I=iqjpmcR>VM@)?TEUM$#7%x7`39Dd}M$7sHaeO>Q<s+7_9y|
z&A9b{W&Hk6mS<KLqu7O3&vWsCy^X3D%`sSd3alRL5cRL)UvgZfefxT(i}6=rw~`OX
zKaPr%L^SPi?C4g(g4&F|gEuG5pFvNo{-P0Fui)u at kPT)o#Io1>P(l9_N?tLU*eaH!
z7Zef)kRtf-<~m+=E<zI7&3S%$F$%+ay2bqpvBNvQ_$lwGGu0)VFPMn&K*I!VxdJ{f
z4^);^U!!eZElJO6LII~j&cMx at i21#^1MeAMEr5ho#txP<-B>(Ye_3ep=S6V at lsswt
zAmkgjAzD8>bTzx3g(Emx6MhO_T@<mc-i3M|zxC?VB`?}e<Q0~vU*5$>If<)A=mlw3
zd at -4`*N{k5g{rOiRAtnCVe1z07|YW2_F8FySMS`~toYZGF{6pf%@>9(k0e;t(UmAn
zs5UG#@6yoKx1kMJzMLLrP)E3hVokCue&6VQ(J_~X!uEH2dVfn%raydjK(QuHA1ybq
zplIgnn;3f(SW(}PvG`)ns at G+N#MQn&4!(1Rm+)AhupXaF%5}YeRC+Iw4=!k)5o>8X
z`DE_BZ)=`DcW%p!i{{L4Z*GfOeoR|4p9`8TD|GpsxpPAoH;3AqTbrlHnrDWl$3k<P
zr?<yKRwy=SUUU1XL##<>MXf1kIM$Rir&{CX|BN%O at sqw}HH<smnm$+HUOauqW$mrg
zXEa-}=@(n`n=hX`XMQuKwZ-Plm_B!;1kP${n>TV+bMs7V#`LzfInys`9@*9$i?_`O
zv^6DSHAcr<jpIi1|7rd|!~aRvq=wV2DPNgHp<}Ia4LqByDQAtf#!ne%MW&p@|7ZCB
zH2<Tm=7lrnPM<eDHm7C&$a&M-F0;NGZ;2Ir&X3Q#xVdd)`<zSWTQghc&YkYPw>G!U
zXr3Q45!2`K**<;#Olx{;3%6pow9am}<~GlYjclFXMylD(?Q`0#wmFx~E)D@*&24kq
zFSA<b#@h|387=eXO}A!W0fhM$Q0KJFwA$xRZ=Y>l+1%D*wSb=3<t<ihc3U&vM_b};
z)~q>nNc)_HR(taT at -#~+)_lR^jF!1A^9i0e$GpvLZf_qMn>~HLDXRIa@#%BDVlSb?
zsY^lZSL4m?d8|maXz?66WqQnNu)wR;XpOffSQ9PBidd&vr(030$(m%HVNJHaWPRD1
zVx4K7Wu0xEV@<WbVx4Qy(N2+V%_A>vqu-mo?$^c{-1Li{F{f=teBP|N%?qvg{Fz{Q
zMoU|>bxGUw1<fO;&k*!m)2)lG8P-e-Tv(S_v#mMSrPgKKj6TnrZ?#yh)>o}ItKEuO
zachBfxwX)`!n)GbWJbJg?iIO;<VKv1KU10F6tOvTXEs}n<D)t)b3Z~ab$;U8VcJ<!
zls1UVbi5j!k5>z3*wEh38F at E*-oM0-O^g{7e+M!jl9Qt>TPk#j9<0qD6G at imOlIb9
zrOaQ5PtNzX92BWG=n)bVl4;A4zc;PX57T+PZ=cXX{bRlP(9<xUVs4D`$XCHF45w_C
zV*#AWmD_9K`NAQy#_rpuNqtEFJ at 5?v&f<=o<Lp(?H%|$7)&KIVDQYY#yh)pCVjV2i
z+&4LNUbt=}%@;mBU(x?+c)s42@(9)Hm<D9o$?t(-vxzIZ3ZmHyM&{EhmpRzU(S+c?
ziVt!P;3Ic0gsfTqy%00~dm&<r(J&t&ZmN>M(fCW{f{0j6Bz^S=v3MJ?{Ze*h?E9M1
z^C}CLBUvR$DE_W5HQ_i%R<ua=Ic(c|?~>aeG)rzJBx<Bw`ViN>qv#jvy$_nmmt~0y
zX#97*p>C?>UIj1K*K&C-_8Gb4LF at u#oTDG_m4WGj)K|uhC|pXTVk at vW&3=TWIR5eh
z?J`Li?N~uSpM6{f3m6R=Fcg at J_bz$3)l1<Ov|ozK?8TBIQFK{@RD(YqA8L<%tbEd~
zSS7%YMbjtJV0+alQy6y<<t`~P<L+w4UD#gx9s at 6$KAyBWS4sON#SF20Er)s*X`S>(
zN!yT5j0#@iaQ>vE9b(cp)V=9$fEx(cz0S5*C*d)h8R1-XqP3C=|36WGctWuYF`|qq
z=&*m1UdS=~@sD^y4lhAo$PsS<oxU}LTmVswOAP6`m2d68gZ4Vz0GtOh6 at LvE!lZQw
z{-W3q`Gz^t$>=a481`t(#{e*Tr}VJ<cBev6y!X2L&>z9SNRo0eUeI7D?nh>p$~C{G
zT>&oOCG!J;Ag^2Gwct<t at BioR&-JuiIHBkf;Z{<ylyl|j?PAyfVZE%0#K8m`g&aO}
zRLqZ7+^Pw@`{B9~fHTXnnmC~(X(o}AR`Hkz6BzDg2;$7%#w{)AV{A4|-}>W)KCTD_
z9c$cCfR4;xFn#WvnW5v(UpQ&faiJM4^WpmDhGxv34r>D=6`C_2*7%Y*{9>qiVJm!d
zI~-<VzW5~m{)wDs5Y5SzJ7elUof!~5{V;o8Cw;B%oW@)$+c-OU5<?iPra(0PlP&^;
zHoD)E6wJ};arUa at 3H7XC-0{L*g^LbYnT at a!-OO;KyIqVfQ*xsyUSuoAb(+*TSiePp
zuNs!z!qt3d)77jq_Np)8Xl#8+a!ahSZgYG`xZ}f%?bP!mOgzxZF9+pM at Gu^Lq%WPc
zy4A<2$tJ!UR=4t-6=P-tPx3Er%QW5A@&4iVwQ^sXk=H%B?WZNyF!b2v!snlIpFFS9
zAT;cgVS=2rIstOVBn$@5r}lyYuN+f8>A=MeiYil$MtiN*JDKrFxefO9J4uikzxEV-
zJ@!gkgB7%ioEc?HG1I~DCU*{7*o-`Q05)LR_E3eIypG-}d|bl?dA^Q%O1p95h9jfR
zyvZMhFKn=HdMKLtxkQeBvzv>JGc&77`nO8&Z%g0MMIw6@<nGJ0I~z|6pzYZtD3A_!
z-%e~~uc~dd*Vb+)rPWaXM*JRAMaBhN#+*S{fjl9d=#sb`S~fyZfj&EcuK(i_W9sHL
z%b!cd6^x(QJJ!dK;GTo7;+hmEj~z~NQffh4D&iYWP0I++ehCi4d=8Z=6b&6Py)pYu
z7zC5xKx2z}YGqqUf;}Ef{^%_%;rpJ*ev&f~lSv1J8Hw46q>~$Yja&fJ`Vx<vXrNDL
z?8Y66)516nAmjfHe>0}fpWhM-&CqRN2>($hpKSL0At=}-&@<UKhUQIQcv1VDE1Rop
z{5p>_`P!Rfp|jeXzl_x2Og8@^w!-q=G<`l>ObuzDGcP_jHhq3`OT2yV6{B+bTjFzP
zhP3FGd98EiHX~D*KV!D+#G#)jhx~MB&TbBwt$3(q7R0qR9%~QHX%De+yTVj)6loQs
z`lB;vxxPl-mm~Er#3n({#l%&^df(KC80g at 4k6S&{a!Zv@?-8$cg~SG}*IYQ{E&3*l
zmr6el6d_hcoVyy?(ceiW2S98Ahv?RiHA=?VX4z8YPlDpe_)ML=+Wsf<^kY==6A;^h
zoDy2Ug3yXW9WhrXM_``+*#7BqCtK_h)E#kMA^fQa%||M1e7ph at At6Gb0&d`eO5O`L
z!)d+3!jIg+Xef%@Mt~nFM6n>U!1+}){qvPXM$<oB!K11EmDtB4Y3_)_d;<AqkI}Tu
zpT=Q7UEBMNlYT%_W89!*zh-ZNP9Nu>rtX=m45iF#_7yro6l|GeG)=wS9~6G4=AKkW
zpu>xn%Vlbefr=v36#&WQ at gV1VfJ_JPC%+zIb7hY9r4Xm6kb;3`=FQp=?JsOu!N44?
zEh-%TIgYq^1alKi0bqlNyychFV)j960Z8w})?nM{VVd{M8c{Fs-u3jFgKHnb`AQd@
zMcb+KWt at 4{@vEE1-x|?7RDiuVc at 6VQ@BInq=L_WkJg3%~&yL#BcC7Vev+l!2RRT?l
zeJE1!l4Cn>S}hRVXXJ>z%R6x=fq&kvCEKfR>mXI~IXjgQ<a<gR(h=Umk*}|T$K_~b
z at I$c~;EQdtRDgvT-K9n4cqBU8$=o9`ssNxRDSh;6;Wd+*WW{*ZZ(DX7ADXTh9VY*B
zB6X9S2d8g&-2WX)#@6`Oe+vxzK_K}1(!c|yu=G8p at +#}9#0?Bs=G78Wmj2&b6FBO6
z*-X6<2wooy{HkO*DgIg-TpA2~SVk~kS8Hy`e at x)WvB8Pf*@T}LoL0Id5L_0pZj#)7
zG7oNWYRRKoK-s5={Cj}|-Ysc;xm1#r4KhgwN|s5%PLuzmCUDS|JbzI3XvsSRH0{SE
zn7SYHP$0OyJn*w1- at hrB*O$wAT~ZOeslvLWf>+aE;8(`^`fbT01AaHqx?v#iQszi`
zO1r?>?G=F?CBG(Mbw%*e3hUW?ZcTg4M51N{IRksYBzS+&db~8aC20MqEcmOS^=?`4
z2SEWC>=kVAGH^jK8L+M~AAZvY|EwhVc8T>$Nf2{xDc-}*fWMUVu=|maqk_ll(?f>c
z4uoHpeEQxp>zC3UlEg>J*>(4nSicSg;lw5QSQAYe#(@3V;G95bAeaeQ-}U;(8v`E;
z44**C=3sZJwJ>;pX<${!0$vT8$U7`h@$uksbbyaK0X}F;X>e7U^_#MgR$<Vyfio!e
zo)S}J|Igo*eC4K6>-#eP$a}<}OBjRJdy-g(qqVgl=CxAmR{30C8szn*($h@=zbN at i
zs?_?1mvHcnrQZuA%B*`l6dbd&Y?5WY89d_`w)O0Q(jVH^vO|FJ?9d<q?+i6C!oQN#
ze+!mohg-WUrfwT<?HPE+b%$HoLrRw%ZoM%y_}*~q5j#lu&xZ#Ie{i_GKQ~;$A3dC`
z)P3X|C41n}zgd3fH-}mK%1hm0*6mVKM`f^Mn00q0uOCzfiF-h<4kd%Lr{qSM*3AP-
ze{zI%YsFK6r92KfWBuV)=b+MCkFZt`2@>)rJGlCAYu91H_YarCiKTGDDV*@T4xgZ~
zs>L|vu|V+071s9B;B6Jwd!@l&S1=2L=?d%Z;P(SJR#?x-Af?>F_XKVVY$><?P=18h
z&&LKnQcqlS at ToxH{XlSUp!7E-!Br*JM(GECx=Pm1elHNr9%f~N!RrsRb_@>w<uL0<
zLrea67|2=h=wa3i!%imr&O?K|uRTm+yALyE4xa;Rz8e^c?r&OvZt{l1!NL!@WaL``
zYqvK+4w*T!H(>4Zzb+n`4Os8}BVT8a{7b;f{v#=iVHV{(^tXY|fy}HyQ(m*JZx4Av
zHX2G#dIG_31Os1}q4Q#yynanc%ddjL2ZPoYdCk+4TT2jm?9{n at tv66V_Upjswg#=Q
zl?0aut!(MYYlGI4!5|@jm8>B9V_kvI^#!flN`iL=Ew^msPoN#aAR);C`2<S`NCHR<
z34Rl_J`4s4x!zB(Ch)m^LF+pu!Fz+&va*p-pWVSAA!#o`Wp9Ai++GsAqr|$?>ykl@
zK!3jMhKikor50sMKKBJaIh)`|OM=%|SgT5dd&;eJSuj;$eM?B_s&WZd5=xF?FA2hb
zS`yq>YAq|h4kQqGpprtfNXHnvX8=?BBWnj(uSv_74Um8ryc(XqfS~V}1m8W>`eAAC
z8;4o9mjycyvz87Bu07QHusnFrq1N>Sk9?h9p at Kge(m>=>Lw^t;<h5avYuTZa=9NQ<
zr5b~mmwc}TVO3|4vCnsCA>sE1ns%3h#!|?}ZKaMSlZOE9SnX?QKI>O at K;Y(*C)wOC
zEf3yQZrvd*_ede*fjM*v0jWUnw}HSf1p`k6f=_#6*iR-!R(D7w>*ya!t=j{^hf1wy
zp}nORQ!dHkRwD1~yfKnX`xj07M@@U1roE90GSf?CZJ{ZwZz1WpOd$A|K;Wl=;H!ba
zRw?M)CBg5NSR1^VEEAqOd;)TBSvLoQe=fCt5(qw7il|0ly&Hg1lv<B@#s7oJzIXwR
zupTN4-Z9v^F8D=`|ASS#23fxy at FDHqSP}fgAZQPCYV|;Q-8hiqtSv)=B-u7Z@=&3V
zeLZmYs&bhOzbv=jF0H+z+`4nX=LmUDuuOuJFWp40N6U^_HrRTnEVz7-b$bwr;jZAZ
zTL)Pi26Qrv|572ryDMmub>omA;XfD>B)PQr=D-<uD)^t2TYF1u?<=>q2j>v-gYqE1
zfA$KgKbOL8Dk*)h!dh1nTwh_mQd+uXp!G;F_<XtbodLnu%B|N21b38M*Otrs6Xg<q
zd&SvW!$uzqsXP|;6ky at qJQjG}IPh0gdF9|BNq#?=Vs{M=l2K4WU0>C@{zdEh$8u}i
zfX at +<_UQNjRxNXQe0h-I at z;4gK3jlCf_GPJqk_u at 2MPbp;2_C8Jg%&eZo0if at c5ew
z>Nbav?^Fc&{i9dI!;gkQTfZm?J{`1PD*2>k{W at 5uII2AUIU=qv4PIAfJz6 at Muv@<p
znEch?YeQs0ygS7DO=<9T at KhSSZ%E+9U@$$@`pJOPe>ucbPVM at N`MmySVDQC3)&qlr
zyssPr=3W{Sym4sYRy){ZTN`WwyxF$z*0TbUzcC3%m9o75ZIty$dGL-=)(hpqdq-JM
zRs>%eW$hgi+&#*=|0BU=Ct80yZfOb8caM~$PmT;eGRk^mWbhlKtZPR}Ho$t!?Y>(-
z7N|Uja<&J8ZmIRHk{bh87DNl41`6AIiO+3$OxWme23Q0(1%jz^D_JtevbL23A0J>X
zEhV(KG}t}BT3L1#tK@)Sy4>oJA!+`E^;eJf>1)NLQY6A=r at l_)s|EY*bYi8%d)xS1
z`bGZS(MWEe<>Fb~#=N0>1&1?Cam8aq4gD+}-;DnedB8TRVbW$E=*qo&d-IHu-5Rq)
z^X{8VvVHF$xsy>B^0LdXM2NUtgL3AZS50#=<60#W;RP at G%=l2rpfT>nOwPw-uJYs}
zE*E=w`ZNH|{pnT-8qXi9le&A##mP%SydFKe<)(Gq>|6(m%+1aPIVAlQ<N_d`4Q0m{
zG%8k;9yd5Md7nFFF#gJ7gVZUvIX{sjF{;MiZ-mI4t<^|E_wBIPj~m=8mpYsBRWwd%
zY!S~vYivWT#s^%9dlLbCPK5v-`yi5_Gb(%-f!^1bb5 at EneYw*!u|mM9cURfzieN#)
z<up9;ke1yc3HoC|+fO>i2`BlN>lV4j_)XDsfd?g1!Jnkh9nx~20;kAt#zx7-&rSv>
zS^1XGisSuOe3|<;q!njrE6x<bwUfE3f}7X`vX+DDI+cGLy)$ixHbF!7nX7L4r_bZy
z7bd?af9d@}L1lUU&$MrU{jL*p=V9UoEQ9|qM&e0~QBf8N<wqmBBG3D(UdJ9t)r<Zj
zJ<0Cv{gc*P^+O7(EcM;L{7)5?kJLkKHl*y_o$3PfWxwc89jIt?E~9z0eB%%GfaS~m
zWBDuGj26BgP;u?sCFW>;TeN1oI{T~N>>b>Q!<`Sg-X~h~IwC#%VbLmF0^)~cecK$a
zQ?^qd5Hk9?(GN$`<#_NPR?$@R?`LFA2{~@rFmw^FnTsj*;v;bXrz-kLYCJc%PI_>a
zs8Y<}T0P`n_#bjFpzZ#>01X%7Yb=kS2QaggziXIwjyv3V(sk0q5hvqx at WI}t9v<Wp
zJZyjPRVmmflG3l?JezCg<hWxncb)szJcFxxlm2<AxKe8Sj&q+WMDDlS<lv{(p0JfW
z6ia)r<LDZ<rP2iPTII|3 at cPnwN8z<~xLTRG$-hKMk4FmK4oZ!@KOGO|enN8 at Q?+<J
zLOVy4IVuaUU6R|`w`rG%7nkA-*uDuD#C38~xrjLDdKY_&rkdBphivk7R(2<I5-31U
zj(VxRG$bMD%A`I^w((roBsxw_fw#rVC*rw7ms&W-bG$zcQi$l<P97?`5On1)@ROT>
z-Xzpu7?l&Ki{5|LC2~d_)p1Kw`qP|#acANtffR9Z5Qz;^Lhc0mfx>%S+gSv`!4lFv
zLoQgflk+4|X54nM?eMRlIz;iXy;Qx~_!ki#?HsciOD#KjJUMXojRKA&%Phq7ZJU$W
z$4TKFD6shR1;d5+!CksNcORUSnGndGi<O1(-MJBx4Nkd7$dUW)eoC+9-0B?S)Gz|K
zI__?q at p9|b>r$g9azlq2J>q2AIQP6$)?)W>Tv+Aco;@=-;^42=2|VNZtF5F?QyK7G
zwK#sP<zpItYQMbM9(L|Fd)UQ0m|yW{!aKVIF|;;zh~suAb3)iz|4L~jQ+A>g;NJMN
z1Ozuk;wRG{2I(zZ(3Cl)M?4?cTpq`Oe=S<`s)u6+ZIe5y$z5E*<#kQ&e3 at z0=JZo%
zn&19>H_JGu<28STOG5sDU^6!#{qZt-%jk!*W06t%`9Y;v&OPxKV{d`8{?)Q*;8oT~
zDq7Ef1I4b__S(a)+)Tg~w0SJ;y^{9+P41gR9|u47Tv&%od0HAhoD1h(l2c^SH6nwI
zD_T3+alcfVokW;7 at 0q{$(o>nfMN_2zeRI;Fthg&?bTCx1uh1r?*G=x**?~ag9=hxg
zdD^LYM5$p$AbT;d292xp_aAmc9J<wme!(4>*~iFRIOTPn@{lORZip{J_PRySu*|tb
z?;9qur$6Bd&<{*6WTros8<9VQTVQmz82Yi@(2Fug<$CA7pP9cB^(XYO(hDxI`mm|y
z)rh!(8%_v5kQqaqjc^Ow(wAkZqeGWks6=94L)vNzKw(a0N;4whBPVd(3r8s2yXL}-
zAcuAWJ977v2!8?*Aj#rT15Si=Hj6Yx5x%>(-XACKAvzu1)8J_wK%E9#<Dd~~W&__l
z(oUbbu+dIlFO|x)adxy2TEh^4puHb|Ac{^=B(pG(*oR+$-ORS|&K^v-<yuPC(!)`v
z2sCyMAh5(vi4;!KN8Pa%y*Dm*R&O(;p7jLv3Ku_ikS?K>6mVva!1E^OjF{>Yiyx}&
zn=&?z4(Bh%I|MSd*-$3II21a!gdDROCz#>V2$KL5;<LEcsqeLu4 at zU)tvLMc{Y-8?
zIYsy|cyO=8a&SX!Aucv@#6aUgMKluzb6lh6ep+s$T^G$v3^Z`Xpq=<W at Edk^fe1wA
zc%JWy{Sr(JZ0sCLXi03vc(-e;eQz|dch*=pI$&?_*ZZ}n<}XfWJQo^o- at iS$dkvT3
z;u^2p-5!~db+v%ZlvOpkS7Rj}ufPv#gga~ZBQu77j;04j-J#>%^^?+P4(yxco;j4O
zJWm at D!2}skw+)P_n!hz9w)JU~mddRQ at -=#AgZoaRyJAxMs9|TgM-6MN?{0fD`zW!|
zG`bZ78r;4~X$qc1!+<vyc-w&29oPjpEaGLLEZxa$=3QX at O<@fmc!oQ?qJD4NTiIuQ
zdLaCOz4U3J0fkctda~Y|^JU(^$!;Lg at +Nn0_9N7zF&%LCHM#@R(fU1Z^wd2v<g%Tl
zXiN_T at r~}#u~cx6V17^bP%^mt=!<%MKSWR6tBKE(GFRuPZ4Y#YTmQ-+{o8V7PLf1M
zhgS(nF`3yXWX7m_dSvD#m>2KR?ac#H841+;X>;TE=)cDwLQej9{;<LDhh-jr=&^_M
z{sZ=K=HFuv^ZwBv;8aom{%iTe#6kE&tV1^C`NNWbj6Wok&mU%(qegwEuoorJ`_oSP
zC--kT7Q`;rrjDjBmz4qc=4NFm)wN)n;Z9f!;2WbgFE-WxyPX^&fx<KjzqpdRD8G25
zgr-ZzkH&HwGHO|CDkO?K2jmGc3qa;$pHh2umet*G9YUqVn`B~x(Dpv3erx=VNM`Qm
zVej6J4Ug13FPlQKZ+|BmcuxoEf$52|Emy<j&O>Q=KWb8-AGIdGKLD_(LE}8NQXw0y
zXk0Y1D#=W$Ru-NHMKWl at n-)dfGF#TF)aMyP*>m{G^A&ABaMsGu;*Wg+c3~4(@7 at zm
ztoNIR%s(8##2qkc?+H?}F_IsobBUJz6`KKs6LRSbtIS&Mko2;Jg6uJCXY+{Fz>ahK
zK+8l9nBS&FCXL|1-Hy90PgP9yHPhj~wSD9vb>}wiuZ|r&aB)rljQ0_dQ0Uy5i~ykz
z<uCno6H=ICJgYlF&Fv=4_}EUOR*6lBQkpDX=1=K`x!>MNU$d~_#6I0T8(;tU-u`p!
zgo6G_U#0$KFJgm><bus|jk)<pZjO0LGGL at 9-WB7mvcan{3PA|5905I;@Tq<d0)<1t
zy)>IT;b4jI1P)>9DUSO89RGUn&x`iq{qb!EMy5UFWUlrkO_}yEA7MXc8XwcVkGnc(
zHCLC(!w*_vg5==`b(tV}_(9uDkUUI~r)lG+EbXL3g*@DpJkp6ue%+M(I_bm+6C;nb
z>h8Fy5byTA3Gr<=%S{;<cZpB()tQptv|hc4b12>cP%95NrH^#NkuR*^lG7#S4Pkyg
z7k7!tyt_9^2r7J2d5EV}`EqZPFDGN-)Ww|{7d;A&Mo9tFG)+SDy9&&46PmF{Q){xc
z4l-Qar5BQ1ww&ag&1*W*%C9{PK291hAJn~59=L_&fjCh<dQvNS$e)|i05nPo5a+rQ
zjc-DE<i(@MFcWU at q9msj$&HipY7e_fBhrb at UIfrL@hX1+T+J&0B@%!VA#yYUc&isB
zVIDwvwTIoN5oVGYJJFQjqep)QEG0Mu=qui3d8LG@^1vmp7m<A$hQOrJ`IVOsxKBEH
zFDu*;WrPKv7eZDYt=W+m59Iu;$ohPS4S48YHP at AKPp}FH{ykFvn4LU*C^4Dg(D at Da
z(rpwemN2Oj(!<R`mm7Y!l{%Rb3z<i-FBSE!#fsLyXD3fqp8g~z;rUgyP42&Ye0{+^
z7m;+b%E#TIk<9O^1VwpCwnVR#_JdlDzNIL-DgBEoK^U7R!~ctAj#h{lT=<<;+r;!2
z2Yy2^A*s#D>OAST*-~K{6g#WQeXn;zWR1`7`)W6|^0dt0>eEzGrI%g#w_!>9jDJYD
z{@Q3}h2SDPhMzn=i==;7C3uTul2tndIS3AiNt5)$7jR3eE-%&Q!c_WEm}-TW>dwMc
z`casw!%MZiFqMAfQ!T2RCK`9GQX}<k*qXzQ7`25Za&j(ma#19B6- at X!^H?p^<Fk|3
zRM2p6QyE$Ekl+SS#QN|n5k*dzdIuIYnuhVr{7 at rFU+u_+4DXUV%GS|gn?dmxuz}z<
zv1n#qEt*mIb#K-Alb*7J-9NjrbUXWq!E8=3FJ6rEvk1aJCw*8%<z(q8Y)GS2**$MZ
zL<L>4y!4Fg13?yAEOM_pX27o_ACfwgCnV<I@>0u7tz at 1Y#WX=OS5sD<f7wU(xRB-!
zN5$WAlNNj?m!74kgeCW6UM5TK)~MS~#aWHWJ(b)#SGvcAHTN`Z$#EIt<(@{SX_C8@
z7rG_UK`kZk>`3NoRoaj4Wk7CU2%M?fgmKeI at U^NAJ`C5wgiW3}K(gIvLen=$q<ks>
z&<rzigS-pSJ2md^s!pB&UC0BHaMvyJaOEf_v4Yobt%;T-pSrV=f);bYB9JvOeS<vY
z(+9dz(xy at EWpZzp_sk7l8l<|M-3l6D<~S&wUM+F?3x*@EnH*ekVkdvkk$c3wTW1UP
z6EO0rP}2{{L(s5^XOlnUGU;u6dK&EH*(zT>YG1$`ZR(Oolbh6u>TnTu at _%V5X6ABo
zwT*bG#SVSmts-Lp$*1F{O`&&JSu(=YclAkVPeMwOKdD^>G3mP`zB{o^0viadG|44S
z(u~kF5-5=&p7y<W4d*dSzRePT*AWukd3TjA;&(|FiLB;H!IDQH)tb*bd5Fd1z*0(o
zKtg35 at 3xQ76}W-+gf-;@LOv0{CY6p#JEsyLeWme80s%f*lJ+D7sQgJe(<CT!mlo&V
zWzyayut+D#<&T^Kj3sc3Ea|g(kMtONF42^FW7RDZ2t0{Q-z889{#w;Sc_Fx!Ct&1L
zQg!l7-__woE;o at YyvRGvr$E%E at 8v~SW630$SMrqQnE$`B#!EWN`mR=impgRnkqT}i
zM*b+c%gei&C!ee3!E*6$!2P+v6S$I`{J+rr(ewj#e9J9|mpNQM0}~#VZN~X>dD91S
zw35EctWdm!oXqJ^7;K*EAJ<dQJT27~3MO~ER)k|V{K540Zt(USa?z%&*&{@3%-R}a
zoXSW<;1&A_+{iY0hlEt-2)Ar+$nwCQnrgQmz;?;IPmYOOu5qVSY2=FH$g5Z?klJZf
zN53c*iVwB=(+Z$nRU6 at UJ2}b?7lv}fnn_FB^GCls5TFbH&do)BVCIIcf?u<Ccuv_O
zOS&b{F)rFzPz3c({rOeZc5*eWhT}e&-Hzu at e?LyI+^D^hJr<s6*78W^ZXMPQbaI%i
z at +Tec`0w=QWZtD$r^=JKX<l4*6ibyam&`0S;>1UpT}GUE0Yp%Yil4=gsR+`>cUGuK
zG5Ih72z!kDX1p7%+nZfQkU6)^d^M2Ri!=^hR^W6ajoS<Hk$HQ9fm71hSxy87SRWNQ
zJAu>q>AkZW-Nw)F%~s^$oE?y3lf<ncL9Y+_xKszT<*V?GYOksbch>LR0Fb$S3N3cG
z;G48ke2EU*n>~j>Z(L<OI6tR83a3Y^1Dr<$t9dvN at af1RQUvHniuy(wR34nmK%T<6
z--FZ22HajX#;?zGJ{81aUR@>=kmsLra1Qg^b%6)xhooz;SDoqux<LVn$JHY|NJ|JQ
z<~&4{omzsQ$?SD_`852uSI@)zdOk?QrM;5dUUjwQ!~d$n2mIk4_-O<z&(-fqzkcE=
zRq}771nQRua5n+&7O9{Q;RjlY4jF?{q{m^oBG(aKlw+C8VRv>#YyA7HV7HpwOOS1F
zqz|91CuQ7_T5vGq(}gh(w+Ui)ZXAi$_lZKs2(J4wJ{{i=JQAtdlz6F62FudFiW||F
z`bIzOZc41@%CW&PT!YK&pJ;nK`>^<775i~E(H=nc#AyI7j9^`;u0x9fMrqMO0FEX~
z{MFX^;OaPfYZP#B{9qsl4!4kiKq+6V_`8Ec{60|;4jiO<z5`NIy{S3(qs7&0Ie2@|
zH0?#+9C06Qa=D}aeHA&M;htI1*Oa-jO4juV6>F;5+!*L-s(H|t6TdDse60^}eT{Bc
z1HvruSlZ+cE@`OmYkMR6sI)sLe~cnca<N}4Z*X at Yf-VsebUE<9RwWFB5o<rrAwbRU
z#H)Qm7?vI@;9u<<z0d7S^Z>i8q{%G{)bFB?4k5~?M+d~~EeFTz2jYqKz+JzMD4%|^
zi8B2Uf(!b;uIa%2zZut`2Z4Hzcm-8y`7L-Tb?z_Nfy(Jybk24m?Aa8Njp-8ToLk<Q
zZv6BfA#{7PN7Frs#@&76-HJvLnhPD>lbug+166dlxb^sNJRBE`!}erPqbM&h7xr5T
ztCMu;MU^I5-~K_9XnI5XR1e${CSARx8)LE_W`ce$9$HuDo3Mc<Y>v)(U7N5$ysQ=o
z-RXqfpV_bfOTXg(M*WKDj2DflmHXP|gb(>I`@os3md94pfwHgiZ*Dg{8P_xl>s9TH
ziDSF_Z3w at k*A7=Wa;^n2N5uGoo$Qg!nbQLi*;)v{(3H6x+a)f4ep+G at AHX!A%?ro4
zb1}yfD2pig{EzT?2%uR5gcDK6_mMR!XXYHE_h?ziP-$?!9ofYl!dn-OiP*pXv+$en
zU(YWZ>C`{EXd5z6E|igKp36cdslA$hTk2{uUfm<~nVOGT+=orCrv4Q5in^!b)Kwd$
zi%-r#%ua=+&54Jc{njC^eA5i0SD0 at JO^o!cm#SlV)nq%5IlG?F_NWv-vg?`X0h=#)
zmOZ|Yg2-yW^-)1hgwuiJxfc{Kz`e(qbufxe7x?(l$H!k3A5Q%<i$+H3pSfn6X`Sp3
zBxNx!B-7Q8dT_XgvuVZ_E{n#wFaj~@OD?3=%c3_mWv2FVQ#7}rJ{X9|nQHO~MeYm!
zP0>%h?Ozn_(^Ga01@}dN;N2I!JN}y75F8s6NxZ!Gw9N2l9BzruoXv5_6YWzYiR}Y{
ze)NLRL^x}Wx;+#daCZF(^`X6|XBJfkxDxt(Q9nuCF2hN#gT9#;pC15qaw9ZHEU(jr
z3z6n?gwCDNuZRbnPPyno`5<3tXApBXh;ee)LTlI4b at ugtfdkI>roO2qdG<nOjl+y{
zk(kJtjX#Wa at Mh2V;&Cvpw=zGmJ)+0Mo4oZ4yx9CRn7TL$mV24IALe4NZcbOddzqv4
zU2%p7d<+^cqDrB+Cv(3xIv=BDK&82B?_`(($1TyOeU>7#Rm2!R?@XD`M%<U3#v!1G
zAFsYqraD_G8Ds at Dmsw1B@o>{^S4H+afH(6+QI>idn9}-Cu9U|mg!!b_?Q$9OCqcH4
zAjMr)ZbH>JI!yoeUmyN;zKZ_c|Izc+#1{v}$~}L-2-HI&iQb`yafzPFyr5c+z8;kR
z6TMrK{KNXR1*fp6bL%0Wx&euLUO&_Y!$0fx<1<jAVz(bR2sdc2It1sHhxeZ2%{zP5
zY54uvP?CHYzaN|8JCGcx6u~%C at VrFioh;z2VXV5vI1f!8&y`QZMS7~{(;F4-h3!>1
zo)EVdW5w~rBaoBK_)Vt->}BGZ(Q^PHo*%pt5dLnWb{s0`Y at ilKO5u3{`H(m#o$k^G
z)H>-1B<7u+jb9bmFA|t|y{=<7z at L(Ig0A$>r4{($5U$!2{jn!UZC2fOL^E-YqPN at 0
zkD1y?Dv{qV{UtArou^d$>D;>nPIqH<fbvb9jAxSAyaU%Kc9yBjf~JCc{GAH?Sn8L)
z!K*;q)PodmdVnsK)s_R+oEPeb)wIAG{qX25xVbDqpI|eqSMDC&!7C104xX;}y8Qm6
z(7(nSDBS%V^;l|oY~Id+p60!4nDc4%9_8JRUF^RmNTHy;+8 at d82jlFucl%Cj!d#Sm
ze1X>*DI4XkoadU=6kR-o)dheVAxyAfM;(3$(|UpQ%8q#Kry+{-e2W@~Bt^q8b|wB<
zYGW~jOQZ+~7>8Im2<A)?3GHw*+!f;w&RU+I3ccLP9oFtZMrV4YU><lrO6;{evi1E?
z27Gu3&u>t3`;6(W_~(d)n&;0HR~iR$QdE%sxau#C8a1lsxR7|C9C`VinX%cS>FweZ
z6n91kb8 at 65njc+XjK3?)7))=uANc*#pVIu}eKnJ at c}l3z%TQ5Yan~~m!2kKij}ULw
zc2f8i-fHaRQ}i5f=h;c2TfALmC%-CTNlx`duIFw~Y<uC93($%q6bBMrWMyQ%$E921
z2kEo*1mgq=M-t<q0EbIsQC$d&`cbNm{Np-*p=r>ESaleVj}Gq*tNaZK4Z3@{n5e+>
z(a5?D at wXa~uaudyh~A@?d!wr|K7VBi-pg<yl;{eYSbr9xR>3$Zq7EG8Q06WjnPyNv
zM1|~Cm6_AFcDx^0FtB6yRmSg;QVGww&Z_F{UzHte)S)R9u;b(}#+Nx6Xs%mGeYn<}
z_S&n)22MHIPA=sAlrPvxp{1uBW2ed}TWGpBn9Yza2U^4G`GS`s&q-O)nat1so<t|#
z0P<Wt4dyL-s4`I<ywc7GcIYD^bHoX}urd&X!#t9WLCHQJBm1_o7$haR2c?2HKN57&
zzWhA$76Y%cvL>9Ti^2sc-r;ho;X+Sm!@#>g1Ssg-z9(dAT_-%4!s||~Bm%;(Xfmw;
z4QR;d5+bzX!q}mv)PaO&PgP8N^$_QPBAf8AtXFdzxTCj-lR?gc_idJY$=6XJD$c*k
zm1`h!&So%fP at 8=*7r#@-KxJ&|!5WO%C_4!J9;Cxs1#)qR{e_yZL%3_G)Vd-5+kUQ$
z{D53qQX2lUKxL24GgKh`b)mPa^7SnJ at 4$-aN~&jUp4%~9K^L&9FJ|RU$w&!z>^mWL
zap6e6R5IguEGfpmM4xY`I(X|?7`WO_E#S>`4tWLTB?d3j2!DtdFK`~8Vv_xvW-3|$
zi{d{*JR_*b<0`zN<+<a^9q1QL)!5gg89fs0JyGUy(fa$tgDn1bQkFrWcTrxU(<?3+
zlZZSAa-fyJ8P;P*>~pzQ|E2cp`mN4pm*Vjt**SpB%_m)jdmqVtgW#*<pU9)M0G-8n
zl)GoW5hJ5jX0QD1zu&M62FJhbeS|9fkK6m;GjR|0R(b#8$LIQ+BSY1X`#h)rMf!1K
z0QQn^0ET;7l+lfXoX}m5gvz>-vp;)M>88X!Xof<5JQxr0o=ZX;%#Vc_pc;g)Sk61f
zv;UofM1U<mOD*m at y*tJga$=)u)jcCzD!PY;=BwVJ20X>KVY^|abfe^3jnuyx8_M*I
zkX;9+=MK!IIiQ_`Uu83XqnUNWK{ImQogO!;JE;*6w at pMiJ=e-qmOtcrgS!dwsou8?
z)!Q8ZOm-X5jh!dtng9LgfBFV5Iaf(b>bhDs0tcGzIUpIC?tL-(%VY9iYQNQ6>pZUA
zOnz;*KjjygDNlcy`TlUe|LZr$ut0PI_9_~J_Q9Q0BV1P-|0Fawb_{hX at n{YN_W~53
z5=C}$%SZ3)SX4Fm<gk6CXRtFLPvWg}n`6zP<IX$pxB`cnxM6R{rQ3nsW>Tp66a42G
z$+VA5?$(x7fNIJz;(lE!30<}tI{HT1$v(b#J1_QSeqrfWm~R$}U-7o{+OP4u+)jR<
z2i+uyankE{$fKCu*tglN`c|R6ZT%y5@>mMDS4|Fd>>gz&H;}PoH*C`T`U0P{O+cl;
zB_pC?^?Ce`-q~~Qa-L+fbm?$1>txtyp9rHE_G(obKc{2eN at A?oB)UZAQ;{!2Z{5kS
z^$H<ZOU~0wLE^ErAQU(z%OJw at w7ejNm#>m|)5VAwJ>QVtX?ZTOsh25d80mW-llq%)
z+06B>)l2TRW<G~dMz{v(dH~YRC|AZHc0&5vPU1!VF40#KJ3N6Uay4_hgFs_XOuIY^
z<CXJKVho?B;TKk&Kk8G*f3dpeybG?ndXY8iyz at VGVU;|pYY4t-k at +C(kfK20%9I4G
zzL2*g_=hn4&8zbiRc2v$Mcs`mGvQ=(brorj<lk|zPF(#d-iDj65zgx4d6RtsaUo~*
z7kN9>d{sNE7x8wO`KrZ#SQ}~Tc;dKgV%S+-Yh7G1Yw&#ea-7v|Lt+CL&{2F%c2<A<
z<0qbY{`u1}f}A+jS#8p_;bd*%w9#F&+=+7?V|y- at -Gq^L<tR$Q at Ns?5#MuJI9yYPn
zJ1TPA2Rew%cfXsKiLi4$GJ8EI$c%Gfk!~T(5dpNJMCO=@@D+r6V<2j%g6ZM(S&UI6
zzGKE#+KCq=bNUqSG2zHT40K07>~EHg%UzR4w14lGq;8^1A1|Q)wUsxIn<adcgnRoe
z(?sqZ*?{Jc%qscoHX2Zb>@WcWO~9KXlsREP?PO4fb5+l5=lYPH5_zrT_U&9Bwo at aN
zmlE#P+PM**ZhDuuDQxFPOtt!8ghzKRd9i~8l-`qljQ|C27LJV`oi!zTvR{E#@TcpC
zSk^+P(qClchamz^{k7A0#3rJ;Qi1q_U1)4jVx6G=(AbdCZ-zUob={Qn at yxx_;%MfQ
z3TH`ACAqXTb||J)0Q7ENCnH(Ebv#E_|J*a%X*d(RPfxx7Nk(x92LP2t2TrVD<xb58
zuH`G`RA)2S^m%%?>1$YE_c}G*&icI)h5pQA?N>M~HJ>p1(ZgU}Mqu)}-7MFWci5|@
zRCc1#U*8jd5i=*Sj7%Dt`yfe(l%0gwl)J5coD>A&uVMfZ;lGDvzCw<D^4=-!l-hPD
z9 at 6U$%sl5fEB1vbSrF@&o~D)|J8&+6|8zqqoHWI3pgyNj%;{A9H0pDDWv7^YJRN^A
z8t4*j(r-y&z26YL7Fba3XuA}v*agu{)gPqieB4rXT(`GZqMaL}AdeoqSpQKF)}q^;
z`bXk#lS*bl6D@;X5v65Z6}V^diLBqQ at eIV(2fo*1g-wn3_B+Vc at q)fJSKZ|dj(?UD
zfYDoGTzMi~j<Js~Gp2rdE3M6TQZ6P&d<l=|h(XQkk$Pktx at R}m^7c}dk&4Cqmq^+G
z{gH`^Rn5B%cFU>qgK1@^>_~Z=6lzGE3K^-hhlMeBbwUV48HC(#X(yK|vM_btEjn+#
z!*pEuhLiPMV`qUIV_eM3v{0fBIEP|Z44jKY at u#?UvfAkx8v+W7>tn%KTQy;bzjww~
zlLHe=0p_-aKzJ>tx!c5g=jV>vIiel1ZAVk4v3#1^GTs3UwPmE6-hR0Eh&(@&tIzh>
zWPn!lAC^kBn)-Z7O16i!?N=Y{K at 00sT$Qm at WqbV2Tn}N2&AHL`+W*K{u?sD7aYhRB
z3_BX-z?ZR-KdKh%PUZsc2;5Wn=R@>{`}0_aFSyUwBX``#)lyUdc_R!hWsa4|+=F#y
zEeBcIk3+dkKG|<<IDjqTVC?!{EbIM^H=iQuv#SM_PEXkDAZ*s%$=ok=HXVfe(QZT#
zGA5+!i3p(xHzAb$E1`u(gPxt4F*!ewAA(7G-Hr$*CrxO;4>6b0wBta12KWE8hvv?i
zHzzhKG+FK$Y7WKuZ=c=LCf?SOVm2=%dE1=%mz)r4q5C9q9(NcKDYwlu7kFXU1oNg}
z)*QNMVl*;#+|;QTeR=%E at l!9Fa%RJs<1dOvnj&X<ZjWX8Ec%oA2=T`E1oZpzuruaz
z$4-8WBn+WL`2VturE^1xlNsAX?O|s#mM#p%>Wxm~WJd3laDjRB at mz-LV$#}Irbf|A
zc3Y=Ltjo_8m!jhBzL7zk9xHh7a(X6&q#|GyyiZ_ajMa0YA5+}L9?~a-7`*(?subJV
zq$Fp(xTek<1yjPkNuL1|k(35Yd(3JiN(i*5Xf;6npr@=#WO8a$$NIR>wD=~1X4x%e
zTtwBvh~$@pNP8H!%}t`k42d+1jLue`_xa0 at bNo2kD~pS?_X+0<(p>x6s{xicrD~9q
zId>oTmoexIJlS5zj>6GPv_ME0d^A>R!#UQ)OGN%OthdMD%Y8+f%*C5ttH*`2SLqt>
z3pom*$3E?)Dhw1F{8_4GtrILcuJKbWh;q0~ZI!PfD=7 at W_#fd<rG1=t3qSEM{2d&B
z3-=p;v$^yR#~+MA?Ft`<X1H;?U7wCYrVC^f4qVia&49FPP+qZXqE%tLMvNkKns(7&
zM4w+3=67b*WF4;;GG1r>bK~`1;BZY`tr at T*W$4Bx$iU3IGPYA05;1fanxUIte at Hf2
zPHSO=F?z|5Ux5<8KR3MZ>_5D3_xKGinyuY$ghvWTc#ah;tWfNv+(^&YvfoG-&^e+Y
zWBnJ!eMO6upETor$s3*0#B>X^=<<ppvayhE%Zz6)K3CSWiRdd`&Za_cLUP<uMz!bi
z3i?2eU9fH>U5LJ|tN at _)Ur5M}u;U0KTZoXJoGg8+-8qemprN|!P3rTjCTn+2E9y>E
zz?J;){Ex`b<G`Ui!=^h&@me`ZSn<ZHg$0^N%26zNNZTw|`sL2&8>^;Cf8t$dQPt#v
z{uD6r`vgp_#Q$32L;3jL?-_ap(!);Xs$z=eXv>xUqv2uHv(%k{uj`?sL;I?@o(0{U
zul)Yq9M-HpN&8trH=i}1+e)|wuz6-k?&jmFy;;rNV8{B2WTv%c?iKS}=5YyJXkN?A
zW?3A^_D?jEb=Y68xj{{CzYDd;FCLk{1SK at 1B|bmqt*rg>YjJH99&6zafly0p^L##v
z^B1kj-ujhzgXR|K%|SSJPW(5N+kc>g?gK_(wVkM!5B4|e^=xzOaN+yM)Y{3<Nw}yi
z)pH)FzBY7lhIA|<eryjzfzUk5uY$ysRdtW64eUo~WMm3~AjN?RO~J_YJqZ2GEQ}92
z>pzf%@mYUiTqi{)dIL&qVpU3Lz91c5FohT9iHyHKDt*}^L!>`_;f_&n`Mgg at P{D9q
zSwvs at jmIwweJLt8wjek93M!LZIR#k<N`MEVf~7S_aEf8a at 9<NJe5z=uaz%j2pD)1M
zXS3BhK!JAZEU9|lXN`;(xqC`1+|$<_(1 at GqYAn0MzGZhb-OLJc!3bkJ?(t<gzid&M
zJ9zQ}zieXY{k&xGZO5yrL4obKB_(jHYJW3v;rBc{@!NaXX*ma!m;asmQ`I_3MicYT
zv57Li)#PVft?YKiGKRIoH+RW-ma~(hzvs0AV&o-|R&)t0zZDSbTq_DuQlsVM at WDj<
z&)|cBePDcqsfeBW4E>m$pQno+p04fvNfDm@)xUoC<vj=fzt+D#zr7#HH&k04%R#V_
zWe626t1 at P3>}@(RUn4{XG5_KZi|P4)Ie*BK%-;0EV)3Ff^z2~i9--~IUF9sh{W;Y*
z4-pD^L?C=Fi!uNZ-LzEEg|N-+gCEunCM-QH;Y{K1F at 2t8KYf1HRACVz(r}Z?9PR-O
zIpJt!_iPUv#RnEo_OJ!ALx5A0jkG;%F`TB^Sj!SL)$FW24*f{Y4|ox1$liKBg-V>*
z7yhHnWgqp(?-e4tgny!VxwBInrOmm$g15eS3-y!z7iuJ&Di`o-`OALmeD8NnyxAx8
zTgRJn^iyz2`@k%m_GHSp1cBg2g289ChhKJ32EW-Ah>UXV=K&X6kNNc3$}Pps#GA^2
z*Z%zCOf57sEE*j1KdjFxEZskozF7Zt$s4OF*Ekyed;t at Q)iB|syYL**RR5|u6KQf^
z!AdTYnICAXc`stGdCHlw#R+Ut#v_vWu+qMM561^hnZ=d8$Yk;OD83~F_VvF(1ww?Z
z$dY$DHGgsfo-l$t*T#2_iejJo1(eI?Vbi;6fa7Kx>NYOwvR9pjX2<w_4RudleORa5
zing9JM)Y>J2MAj9CLRg!B3DD^_=DIP#y(AEoBwn6MKTlj)jeTnswh=6cKaFYo>=r2
z&LabzL!0XN#2<^M8H(+=o_lSye;<~dv~$+iZFs3nvZ{kx%j|=3NP4aS*qRmWXA!Qa
zOO4s_BXV+pXVs61Zi^>>0tI-0!!sNfC_5J)siL!|ohNXmcuH-!?!-mU6CBUtfhraZ
z*Hte*QF)X!a<Tf&@guXpq;xZ$QQZ-zAjw+^A>lP|h3jSq7Hx0%ouJiTC1O$cbyYgW
z^W^~N$!*vHJh`y3ZbobDbZ6jt!4 at L;Cl at +PK9qA;J2h4q!?fw;f_>f<bfB~3AsG`!
zo1mY+*Ik<x)G?btN&&QgXLj`7IcquETN^oOxY)jT$~1Vd*={$u8?M-Fa34aYD|MQd
zJ1!I at Hg^=qWH%U>J4xA~ghA at y%^Y%w6xUAvsLUHbCQ%v at G0Qy8FQsR~91mfPATFy!
zB{v3z5@)k`e%Lp;y6`vw(VGW6%7v$TA at NB7mTAgC0s;*K!odW&ljh5xgO`F1o?f{(
z>W2Vfb1^L{9$vquY4MRNj+4{B(*y=09Op1W at N)9!n98+g7MSrLO`i at L+OdP!B+g<)
zGT2v+bTB9j!1dMe_~PVn8uKX}#r}LYW*Fso(G#-?_RA;X-(f+h$<-Yj!xldty<;Qk
zbGApsal`Qx#7BjGh#D9l)%vl74<~_Wq9c;IwnHjcPgagEB#~IVv~)GqU%n}Rw^+uu
zMAFxEIcf1z_l_a~LUUfOkj8u=@!NHrM&wZMBqMm2RZKLJy^`bC0V at Rfkn+p<L at 8lw
zJvqBH2M at 1K#`lyWxNOa#FIpc%&YBv4SRKSoj;1ejn#AkP2bg{|(uKo&4>S8XR9niL
z>fhpYh8U<qQwfH^XIYKXWmnDCmY}}+O!jv~%f3<YTOlSl$t$T072Q_UjAjk=uqlEW
zADgM)GVo2C1eLV)no#y=68P-_WJ=CSn{Y(<@q%#BKymTMvxg9<rAwi`t{7O=VXzjC
zx{nC`l+lpbT at q{Ix0H+epr`RcIvSeB%&&+Y-{d})eFXR>sD6Hho%~Shk?0OJ at f91Z
zZzPRBrM6z`x98hr5KCU|S0gD_!>&|UlRf@#*((d-#n<NZO+RQpJ2{@X-fuRnp~Efc
zar|@H+r;#}U=_HJ7(M1GTm!~;V(hjNTfH}otvu_%)%kUxXVKdHI`F6c*MUDRdb6>!
zzITm`l4*`xR;AZx=PN9igB`e`cJfBzvVWAOx;O##76m(X4<_~5m&C3<bw0nH<E`wO
z`XxdD`7#8oAK{EQdL*KM_z7M(<i)&+SmMBGV at GPZ&p$lszx;l`{d<3XwMfBwBrY!g
z{(d)h at _u_=(Pn$d*Ji^;;6U1J9dw`U&%=`VTfI-{d_Um+yud%!2hI|;NjwmLu@!j#
zEPruB#ew*XCdA_h=Px4lZ~y1{3o^$agj+ZOe{nB$*`L4Y94dq9AL1{R4#IIL|A2DY
z6HX1PA`chy4=CUW|L|3xe?XDou><fA8)A!uEx0_-5CE_rL-4gHr4Qi=7TU>#oQe<J
zWcY%lM&ww7OBm_0a!Cgjum+=OFRXzK(qh&?`0-4#Y6TIxzJ)vIR(;;d{4UQg$vP_Q
zps)ulb9k8w2~Q=UAibCQj6gJfw<e3G at 2I+kD2>-;dpt`aPJ+`Xux at jF&+RN)<eie=
zoheJcxUr%VU4+O7>`+o2BFS<t+>HE15_ at d>+SM%jykW=qJ>KwdX{Y83*8>gV7#gQE
zq?84|6 at FrDcUg!S<6B8qdx=z|2ig$MFZ)sv1t5YZUG}>aN>141A%ikT<dUo?OcG7c
zz|!jUx=8)+?c`BVQ88$46+ac6p|B>Hb*)L(Db`|f{Kd)_u_rtQ#~B+84O3)sU-&1m
zHeL(l4&f>4ci5RODP}EwdJX^k2wGgh(){(G5-i}V6&&koF+8K$1H7YgQ0l=$#bd|S
zv0_+dsjh3Ln^7nD?*M89ht<g|<mj70Bmp?N%`M?sxri}OuL}6dexp!U?rfaIvOY%=
z4~3)kGpp+C)ccU^0v59s44HxCF_>RbzDXHO7>6%VybcKO7&ylR{(tPf3w&HvwLd<S
zr0qaTP71vcl`DhBOCk>wL``UwNt?81+DRK|f!+()ls-tMkJ!#Y5GW}#DLMb?KowN3
zqPJ?V)_d!fd&Po+C4Hp at 6<SoNFQ_~_Orce at goo|_`(1nQbIwdAr3LZo?=qiHGH3SL
zkG0ocYwfkyUVCk*89PXbw1HZwI0%3%U6CTzD6EAQZF*`Z*1gDVt#7XW7?sO*r7ZGs
zMiZt5EW+Mc-8`VxP1w}06TE}M{PbyPR?&R{)p44lZVcWzV!Fe0D;%jhlNO{@wK`i{
zYyS)?iEjKe)XjlmWT~597PKigjc$BqM2s9oh9o1l1`&-G?2#Me`a@`KGL5%ThHOzS
z52_y>@`L+b(d54F*2aBS>K`C(pjCzvh)<1RPNF7?*N4$6afK-IuVVLrouRn|A(0xa
z6odW=e<;Gs-Y8 at OIn<h&O1&z61r;$BA{@-478g`;!q8tQyYTYt1b%ezEMiX^m;=Sz
zwH|vzd-38{&uPeL)_1MW!&&ZDxxX`0BW(XUv>z#6LHx&Tk|^ro(Gp~YhCj7Ew~BPm
zCzQ8(xM`pJ8t&g-KfG5-wd^GbJ|u)=XRyerSIcfgGB!f!0&Nh4Dz~~6LytQJBv_F`
zD*JBK;?teuXG(uP6&d=m$5K3la~pwF>U3h4AU%5mSX1lSYE=<GkvJ7JzK)?lFCy7j
zRp+4bPYq{3t$sx04NqMG-s}wYkv=|<Kz*^=0g|Fkm)9%tzchX_{s$8kvGh7cf{lwq
z@%gPNwhJxzQ;o*E4H9f|C^3eV3nIWY!E-|%sToBVZ at D!2EMDgFtKW*LTUGK!uafyg
zR|0K$AREPdPwhP~JAA+|-+cP-_ksSy>c2lhe3>_=|9a3e-u94P{whW4&wzbb<;_k*
zo3@^IZ3wf<>@|3A_4Faq3$@*Q at NM;6gpuN}Dfku=)DjA^NIw;73#lKXxAIQtYmhpT
zc&d28#E*wa|DL29o%j>_LAFH9^8!F;G8|(baGwEWt*R80dYi7^uZ8ads6IVs0z0X#
za;&A$UbdFwC>QhO+sh~@k5- at E4ja{Adl~K^`(My!_Z7959i2W4EygHwu!)Usa<pNM
z(=K)*#IS>Tms9R0G$;BXO+=9Sm_H%0mqHyz;JrWCwGTqES at uCa-`EJ_xARaeQ`XpY
zZos-3*VYE?+E=4I at c{2x8r^;ihunCm0oFzu%^<}ZAmw1Sqv;L}VDs{zmHG$-elxUF
zY)En%1&Hv&pgoz(XV`C+cC=XQ=LPZa6W~-$G@?SNXXvhwS9Pi%XP_StGW}2;+{`!*
zs}@iD&>Q{K1UnVdamQ9m!#?X42jI0d?6p>Q3!DI<AHGpR+VDmjm7S+eLarfC>Ftq*
zrO?~IcNo3>2Fg{)c at m<Jo^J<$(A!D2gY@>MhHW<-)6}rVf`O7^zQ079SaPTfvWTdn
z%2}XrRSG(K0XI#0V?`<q(zvu}@M&Dyq=#)N94v+|B-)n3Eav7aWz^fk;i_x)jC#*f
z$%<&BUc+IuEWJ3mlUf$Wy)%}%ueuw(7FF$8&X6Po#<=aI*}n^~l!&5xXeSJ&P_-!{
zpp}V=uZ?<C!y6ANt)A7nsw at o0o^}P at JxpU>)cFZ6Qoyw;(T%Tb?doakW(Nct-S{-l
zEySo*T~|GW6xY at o{9~>`^jr9sMjIc4B?}F}sTBGYek>CG<RT~w`0+LVNWKVt3fB0?
z at T0YHndno8s84}jUj^KPOw4XQNo3&q5_o8jHf|;Kcmkbz&?{To4Vb>L1cNPYHf(8o
zt<+K^G?R357UDN1x4 at 2u>%}hPEJqrpA#HSZGYt7q6r?#A(spGV at Sg3FvzK6+!8J_T
ziTF1BJG7q9aE;j(DNg-o0;cXm)Zdnc(H~B1DtM<{^#bj!)y2*O3RTeFUbT9j1ihj#
zv^NeBP`C`89bDY%`2jL|=dW9F>H99Ec>3D}=x>LpzrpBQq=NWQ(Y_2w&tjBgJ8U-h
zIlVr^GcC(Te?w-DYy1QQb<Y_J&`9np>>~S{9Zl9ld-xIIl@%Zn1U%yM&1gikMI(as
z4;m4ye{-s5w2qk<iqDF|`u8qWsFE7zg{;)?*?U_5kRkC=(pwdmxGBbc7BazQY38Oi
zyrU-c7+&Rk)jsH!|2MDv{|r?=Mw20pX`T{vZgwY4X3%H-_P@=5Y$*MQp{Y}MpwOGs
ze>^bDhXT_|?WgwhJHZxMPp*^l^q}{k?Lo3L(JlmT_1p-Zj{47M at NM-_;peZ2$h`u2
zoA4}tif}1X)B<%-{c*L*6gyC1HTiD0#~XF#TjpUc^%~tmq0CRLJ)HhBz;P&|zp$@I
ztH0b8DyF}z`d_ifeG9N0p*>E9RUOoM!rkq|lz<v2HY31~T<GaqrkXKnM4EfAtDdNe
zQV~!#DX}9^>eZvu2&uA7ZFwD?KJyhcTST7$OW*}`np<wex0u%DBm?DeB!9Ed=m=Lr
zM|g}AAZ>fpE3hC`);-Ao5IpNRFZBGQrd)Q$rzy-t|Dh?6Kzy2l at G*P%DVBm<KM&tp
z&SK&mZD-WdQszP%bM9)Cr-FsWC>+bVB4vso&Zi%82`4%6z1F-JW1mtKW9e!b`yjcx
zwXv at cnW(b0vs#<2?vNB({`9Js#+2<y<i}3_8OA=U8F+%R?`wR5!q(GBeF)e<sdbW@
zFn6N_wz~VvYVhthWk!U#kCln$itfzt%r1RMR#g~tpMc`|9%&??73}0{i=fyDy)5IQ
zpw7lM2CyZuLvUH!Vx=BO#e#3Jbhk9Jv;$l2ILwQqCRn&y>jTibst6J!WrN_fV2_h<
zwdZN5kBNq=E}kOUHgnIA3M#4!`x7cjSmCCIhi^Eq0dvE3jhf^XdWi8=go)<8IOHtl
znIxD_>9BOoU<Bxu!y5qU_4h%A5Yt_q)$>mz9B+4+b_TUK>}-V+ at i}ZuK!rlwYtL#I
zRy}le$XNOu5CyjBrlC)H20OK>7t3^DUszPgcHoWXx`{E+3~ag2V|e-4(bS93`03$?
zQ6zO6!biX+RA89?R1J9)rm0TBSU@#!bwDF5*>=Qqa})|CZ)Eo=l=le>8J412i5vYe
z4qE at PQa{7M866}w0YU&jlwNrae;B>;ePX9Oj9$rjKr&x}vZ+_XOGR;i5!G at 7XvC*l
z!k^*4k)q%-dgZ?%#iv(l>yx4i(8Oa|+L1kd&4wO%>h|oZ&>5v3>Q6_iFP@`&E&3w2
zU8%Uep}t6k!E3)2`eH!DUkV82+;`;q;ulfV8|jNcMN0q%KZ=v=#nQ`ewxh%Z$&it*
zbd+i%^pxojQp89^kh)RvC at wKVeW)Wl(yLF?1?_eh!EOfydN1(I-bfTPS2g{%f>~74
z?8)djR#CaH7E at 8@=Ns+T2tl?&C50{zE%nE!p4&QW0SHsA6eEC(qKRJ#M3FR#>erBS
z2t{=TUeRRdRTJOlR)NT>rV2*KELw%=su8^Pbk$E}pMeR?=>L9w^*-XA#}bFyuU_{S
z>~(s}IXfG57`DxR57_p4aXa+YqP?(E*He|fpSdx%6hFR6{7d*L63ObBiUFgdI*}CH
zbG<g{CGb6{Tw<P<Vg>ajrVNq(QJoHwR8LTI+uby!*bZtXu5x(%G$=<x-7sdf+!M^h
zYLUTi{l<(}2<>XW;>$BUBXtGYdB6c?1gRnW&-h_pG<wguFEP=*5Bxm(sbjqfZ6hji
zhcg{GBavHL?T3HNh5$`6$;}}JTw`v@^KvZ at CO3&3h|6|MvltVZ*Uf(U<+GN~pFL9@
z*gQ8pd+{PXCT2 at exp_+#FAOhAELaepzcjpPaXft0tOfJuumXIVE{4hMv6z}5-N- at 9
z_YQ!WU?qVr2F*|uu~=pf6^n=ST>ADP8xJSRMgbj0p?E|T+?d>Vp#g0r(Va=3$wqOR
z at Bz-X^Ki!uwN5+z4@|adAy at E|-|DuGmOU|CXCl==5xW!b_|ZDs^s;tZT{<Kwef^$T
zP at h=HU at E7CleU<pOR at m8cKDgr#FX14rJK|YK-VIJXU at Uw&RMyerSRc%uX>bcYAF0L
z{dV;z&#U#b>OL0T5!#ucd?*!?9Wc2u_%``c^vrvZie37|F*p}s_3R=(5c?VND_(=T
zIhH?@uOWKE`}hR)xW-z4eD7^a&vfn(LCioj{bf}!&Rj~f(_ONutlJB*c5?{{<b4SD
zVQC1Bu^s-jqai;}MFV`q(K0!}14XjIoYg;&lKA<<te#7d3*a~Cz!+3@*#Xs6gJOeQ
zw;>qGfK~moWe<4|fXG}TLl2j7-)Nda*ZIMdXw)Z>T8RoQEAYjmV{R}_u^0W?O6mQe
z+*$Khacc{(Dj<DZT!M5p&&h&fJJAFV!-)J!H_J{!8ZxIu02ci~E5mJ|wkOl$s*=0E
zpWGgC##Lp13gM~sn0B0`^uG`B{dbIT&F{*MY*%rgG<z?E$D!=MA+shP1-S+Z3-kg+
zDjXh%S}@A7vUV^d2BAX`T!2P1+#(|VP{ft+Gm`N%^U!1-K5ib?>WA!1Kxt at WP<=SK
zuL&;8gOu5i;op26FO!GhaJpO{f>Zv<Zuo_eo&Gn5;E1KaRfVr;@Haem6SFpq!8M$S
z(T%(8b0;giSp6f`cemn&wQ3X1;dt5eNTObADb2w>&Zf at y<DSpNWAFnHIXe`QFkT6M
z)<1HIvqMF(GA`6meglGIb`a;8rloJXT~PWO_YdFA?ZbujkHA`Hr9OvrRUQYZF?Qc2
z#I`Sth_>?^^lS)8MNdfeI=~R4Z>4W#AF&YYlQ%!a4=j?M9f;?3Wc5~}K<=By9?C0D
z6%Yu1M3AIb<6xd!J!`?D#KOR=1)UwU0+%nCwdl&g>_zb<3j%ZIUok%(xMIny&W^x>
z#aGW=66nOC|9GG?v1oQYu(T6L{R4^4PNa9KtZ3Eu5qzn58ZwMH2&Tzd-*`Ghf+s-M
zo$Q-9Fag%9ZqrHCHGJp|khvI*7>!(<SHjrLsDpUn_6kIK4cjJ(SK at -%#2HzhOW^u;
zLhl)2@@AN%K-Q at l*WVltVr_XTHXBm^&QfT{+VEkuQpI9-_XKPGx)1OSV at v9V1U$D9
zXGAX))05zo_DbS%Mz0;$o03c*Gg?Klc0((z5GxWF4F1(Pb<2(F<TW63@?B-qJse94
zWvmd at FtChlPpf!f4}*x6zK<xF4E?+B(9YcF)H<DU&Q(WV4aR4{KXaIs`X<3ozB)Wn
zxx9hH06PwvVE+1FOOtLZwogn}i5{_KMuCj%MrDEShB=87v<zoG=^3Hi_d$2C2P6ls
zPK5O<1RFa!5Px#s%aKr^H2$l517)DO4DuxhmL`%qQ|_0Z{<6G*gr;tC<a1{SVu_)>
z<qae{EA at 4GCh1wJb@EKAvQq2inPh0CcF8k|(Mmlj&m>7JwO2iZFs;-9c_w*UDVm^`
zH;_oN>VV|z?kZcN4EP$r>_;#(NL^_4ba0TAf*@|SNS$T%eA1VCjLLhZ)id3f`jV=5
zf%Z4oHPGJzHN<g|f-mnjq|RI3RW={#m*Uy9_g$5{!|HjjFZaKyR6tC#y~&$Ysi=Vq
zOOv|LP34-=q+YC2(fb2<GO0~`COH<NjrjYEBqnl_Xk`6nBgBDe at 1x%CZ at LJfScW$t
zp4Xqu=}%s2knAhPsx4&Q^c9r2Cxn0ZNAQnPfpmim-qQlp<ge_V&&M*bi)5-F#|G5W
ze~dXVkq+;t@~iSXsB3cwLY(^ViA~98&Wkw-_~hLv`mu9i6>5@;EC=uag}S*K4-5>{
zf(gHunI>h*_TX0W2$JfInqbbEXU1*?WPxlu5UDz~O`64(8%wdd@(Izxu at +Q-=k~};
zjT;T066p{tn744tPUak`QC at NyMmJ5ri<M*Rfxzrpi>Q*%UNRSvSrBk#&bjB#nfvL)
zTpceZ9Phxf?S-?tW-guonYlH!a-PS%&cM6>8&|$c0B at M#ZG;bi1esW8pFR=S{5*p_
zpVDY8Lf~fYjj!OUi`QYneb7!ma>(BJ<ZwH<1E;sc_URW_GDH=A;+h64^+#}&gl5}~
zL%rx7ZsB~zu4P~qRJAdhL<r<h`bG+pGYXN6jBpfoDq#l)5aV!T#ikGgr#;AjefBU8
z31X+=^w{`1Nn#*1{D^Q;HsjMYQ{s}uGM_G)oGJS#0%BP=^8B}K1k##m!y6W%q|R$?
z+-=<`_n2>du1t+cdT9+~@;JM>)wOd^YvvsIFd^z%rY&T{^*xCzvu at 6z3bSm(OTdhS
zw!V>zIq>(H9ipkt8DBLuQ+<{K9KXV}lHwXr(BLZR3%iBPHamm+5f|V#kns)Kr@(lw
ze2>+>Z13C$N{4U3bYQ6V57EX0OKS<svTF?-Xe{?x6ln&(Q~|!G`>2m(=@*6zLe2sr
zk-HKHour${EmUjuTudQAKqn3`aWZ~JH}3s-{KJw@>a%)IQkkO8 at a#xDYJI`#dAFC&
z_|OW2K1~!5;6uu7x|oYK#>_f^n9dhcJ%Sf at gU|@{_*iB^HKrXmT0lxJv{b9YPE6T0
z>%r=Znkz0&#Zr+8{MGKQ-;mrX`S8#s51iw<670q=ey`HstM&Jt_*VGHOu#5=+doRd
z?LsZJB#sGhqP;9c^CWU5w^IB-OsL$^`%NSrcf9Pzb=BQ$A at w;>tDU|>^na$VmDB~p
zn2IWrFQ6)~(T3LaKjA_b1bKR at ELw`C1CCn4*0A^z#xI&3PL3(JYSk`)ReOh6<E+{>
z)w`w6F4T#$gUYCuRF|ceBVncF!^1k25lGn20=4Vp@=<!#N5q(5)vlD=ORdxkARN1~
z-%72)M2(W_R#Qas!1H}liYGRCPLl<}czw9j77x+WWn)DmCLkEy6DDH9ZQLqh!~}JD
zYB_F{W(#P!4d=|@P$0kHO$@u1ULRcq{-01~kC_r)b|Q}vegOMncG^q5;dwe3A8$J^
z+s>o8hmHQ~9E>%-7$44Z*PlXLLxkENBsugUsM1vVYGk-k9mcm0h_Ibc)@0fa at kHQ?
zOEFr>ff2Cd%dm+t83$73zFDq_w=+K`)%Y?hR{*{*J_#_d!hHpR7e}qebPBwW5Z)dB
zRKoiJ;f1%yb|1V0xPXH2c80J2;2?_oBFV%_ph;4kA``)n8D6XBbFdn++-^d~UGwEk
zz)E!o61+eXE<yGz#`{(DT9`o(nzmL%NING>$8OQzN;38#$YpB<V-E->GI+pkLxMEi
z#wYh>ynwW5I)c5Q3S0{gYJIZIE<GRXTtt{mzH%sjk9Z*M1o0pQUaOPMS?>4 at 5NGc~
z06E~R3;43bH#{G8Hrmd9yhuFP+L(=pqGO`rRx1XVhNc?Z85c?$sBV(2zVtZ6br`_L
zACEuLzTfjgq9S)T;l~7qU#uUI{?ZB5--7zNPI7+AY|q7T=mJqNCx)X|?9Z6qKol4d
zR7hO-``AOPvd7Q#sJaIIiKeGOHGl)hzTEL#UopnoM$!sKn*=%mHC-fRd&5&Q9N&_c
zFXw)z=~`b>3>w0rNf|puM^@^C$m!MlfR!2{MIRJGYD2xYkQeJkqc4cu+~(GsQa1^c
z0 at lC^OA4Su>!Sd}Z9SjEdsyPLzs0v17wi(T_mt2yNO9%I4<#n6v0-B4I+J^lyOB=b
zJDG{h$U?5{Kmp0n*dPCtNDj&xvC?^>Lmlz9Mj`llN>#gULKxZ5%!C at I$y%6Q`3klM
zT=^rw at yIvYU=GTl?6u4R`^+8cT4t>G8jS5lWK*^S8CGG6hPd9RY at +Gz0qGLBTSnYY
zUpauoNywngG~~3kgeKD?I^y!JD!-l%z&dC`F=IA{!(^lbY!MpV?PgE#As(fEJQHLx
zq>u!!S&e1ZsD#YY${%8!G4jtH+5sVdZ5UI4RjV$Y&YmIFM}QcS6US0cSee=A(jZx}
zTKc4Ag&)RfBk<kx3F67Uf0E?UhgJo?>=ZhgD9MQyrl5u6P?<>2Xa*Dw;aR7JXPw3v
zxW!J-s1ZJYFEWEKLZGSKD5ZapKHe)lK_5fVF4XKXt>GJ<Blkm;y_kCjtQteWZ-~Cu
z at b&Lgq8eaVu{GcqEGE)g50SI=C2Ltr4OOJqs8qprh}jy;66i}{;8LheW^HgO<?^rN
zr(n;nN<oXG)9FhpH`JL9<27QRg3fTCkKZ7u;^I;RUA~2SiBFld)1R!#QU`)G%gzz}
zqj5W<rUYrm$Yi5LU>)@`%vLiw+Rh8IOcaP&h_s+FsR`*8jsaK{YKOPj((k^EddRS!
z;#!R7z||5fZxH>(u(zu#FX&?YTuImKh}?!jI7mEUOj+<60Rt$mQkD5!kGX?!v#F&@
zJ#5X+0(x{}_G&z{_T8+8oO~$~L>S3-H)vfBEaI(vSgh${XJ^!TS?wOEqlC%5K*z<l
zT8hjB-TcC?{S&4Xt{@myGzi at uips8~6JxcT?VUNOO{J*^CS}TALm=Q?TsYXJr%-2a
ze920NFrrF%pTZ~Cm|dFv8emX#8*4-$=>gjszZvRiX$cOaV1YUo_5kFVlo`u;F90JH
z&Nby?PMKowSh}nlX8Ms)r=Pl1O)*eJzp}A_hy`DA*AU-DWd;mpz-nPEju`t^5v|TS
z2rvpiSDeM8f>mV?qbQ2PuwP>bb4&`$D{cg2R`H!$5rIu`ImCjE2=_^8mCTF&PI;BN
z?sT;txXi2vP*3j5#-0 at 2_`=8I$I7_NyrrMuqBBhf7K?>aeZZufII(*E#Y^XjRCj%#
z&hyLS0xe`eig(B_<E at qeh}fCj3%Aqnb_4oY`dgfCe9Hi_@!9E{WJ*x$3WQ?T6bbKb
zERX%(+h0ZH at NvR!)Sv9kg6c4xw=>5PL?u$-T7q>K)GCFkjYQXWE+Qblv5KsPl~C24
zzLkIoHf;w{kngSIPb at oaXLL2OYQzmnP^cZJXIgP#*+K2lv!Nv>Vg&Rh%@XU&_sY2C
z9YHnm3IR>CSnkJ$cF>o1 at OgUK2Wo%_*Uj;*<MTpII1CC-IzX_Bz0jF&C7t3Xg5q?V
zRCEe at 0=>ZsO0zZnnfyez{p}<*1ac&)37NeiVGc=Aq^Ao-p;6339H{OeVZX^qVZj<Y
zkNYTGj{7_4yymAN#(yXT2w70%`1Thd3 at D-h-g>X($vge`Xy3>G|98g!DEMDdxG=p;
zyMizN+YT}Kw=eEw{(Oht|Busq@%jE8elMbr|G&WRUIc1xMR3atTRzzBs*(LEZg3 at c
zz>YS$8-Fk$O_ZH5zLQG<f^ayPh#jwq*zqz+JM14`s6NAZ<7lcEngnveF!H2*I%2H7
zCYxh0QDP4aP9RtP^Zi`0X{CN~tGD}QjlznLdyq8y<?n($LaB;fFj?yr?1FLQC_<yf
z=K4px6M#HHm;1cmJ4ns%c6w?=x|KN}0W@~R-vjH at aG3IOX-Z^|nA#m&6XQ&*gTIS7
z3ZggWBkPTVcsf<+i*MnU!XXd%c#YtRiwJJ4Pwoyv6-4|M{)1YCH63^KlLMpU=O+jL
z!AdcEa^QH}2a5-K$&9p8b7%sE8G-M7E(xb{KVkV6wrHGk3gW>T9~Qc^4EAH;*{6u$
zoi>zJ0K;=<yO)YR?VN<p-qw!=D-H+50CZZJV|2Oc3$cp6OPul4kff7RlD2TOT3n3j
z&sYuB))VGJ1j|(MTI|v`gim>NoLWhW=T6p=wKHm#`-E(9$H{}=&a9I*H56_?oX26`
zltc}z>W6}#-MI(dQHAiMkA1^Ak~{g0V;2fw0xNGaqc3o6`mn!CvFs%RS_&mlW=Qyo
zz@<^F8yC1@={41>QIDhz0kGiT*{X}BiQLJV(V#FDjEBIoPj;qEZ9wQglwQ<;fOOc8
zXu__K8Xw#F6l_Oul66dv*ZHiU^pS{VzDtu_Eb}e3e#7-WVu4hRn<LlhWQ4TQm~6)v
z?EcsfNZv~@-yJ`-2$f!o_uhS*#VQ0Zw1M(uQ>fXsC<un6<ycytH^@~L&J#jsFf-8%
zA;*Pjhv-r;-cFvXOv}Y!$$@vp8 at LRq0&KXpygCfVI?hV1#IGW7{;U*m;?%nujUsTW
zT3Juftu;CD?!<o-$!lQM!-fEm(!PDWT?=LaNUE~zm7t~~#U+pp{G}{~SV)6&0bPAx
zJpyaOF3M9zAB$-gSQeqd6eG2d;i9BL*aNRJ#Lgfwee5x)AzC^SHf5OKoV%*Knbx?V
zx-!uRzoam1S5r!emjy7dVVkG-Z1H$eWU5<gsef9kr$$_V01aXg>apixHV`$BYl>t#
zsfpja_4j^!E0kpP;Uo?hg(2YL8WEdQt=a!zZtmaPP7Ne62v%EAAp*Pc4$({+qRB0Y
zyG5D at kvj`YFjJ_5Y|P9|j7L-zUnIEktipaK!@+ZM5h+&>(@NPrAtV3?CVSm%=6u}C
zg{!j{Vz5|W7+seVS#HD;8fImq_LaB;Dy?=c$lQHMGsuP?T}dd4SY=Zva#)^2Gr&^m
z?}^MzPrz}shvNv at elfPh_o3gaCd|A_5Cyq45<yUe{=OilC%E%Gmw3PcL+9L1Ey5IZ
zcf#h56C?wAzvpwDEZw>?XH-fqY*`GT)|L?VI0lG3fhhA?+4IT#Kuxe{k5YpLY;1RN
z7!7dNC=_jc9cRu2JJJ)-MfNO>EX+Ljd7|2ne>?dQ(5XZ+XO%wGDj>Nc`O06^$%ZO~
zuYKih)!oQY7cB+4^%!$kG+Ty-TpVB=@+Qf6Olnjt2Cn&#YQUW%kdpltHwp_2CboI^
z)EQGF&afyiCBPw{g84tWw?<ughMAoqUw;6|_$iee(A0VH#_d*W5*Q6P$VQz*@c6>D
zXRWn=j4~SLZ)JSO0=0DL#yP$lZ)FM(tjo|LE;XCA)4bVeUtcu1#ZH$*jev{75>JC`
zrC7Vc4>lsQp{|Exwb&YhvonT>)!l<r()`>Y-aubMlE#UID1xS?%AqDiOCTV at 0WrGA
z5Cs?BJbgH0YV6~n8<@{=v0jpQ%<(ci+?VGp0k>>SJY^@dRWXFj+n6ndqVcd)Rw?m7
z|B+yz6Y!#9 at CV$!7u=}#h0jKn7qHGS>I~!lz1?<t$$&Kq7x(clzQ*l|U&k`D!nh?4
zaS~Y^-bq<+e>yE*A}Ejh4p at iNhVs);eg?`zjcd#$ejN?|gfXD3X!`0(_zcBr^?9u{
zb{){^P^)u=>hpO~2Wo9{i(GHWyVv1OrT6vj*==wLSphx;f~UL3z42sYEV9#;>k{Nx
z{h{nS{D8l-y3b4%23<66x2=gl(e7asI;=?iM(y;-YKc3bM&=$b|2Es2uq`itk6)!#
zl&ZWGY=rX;B&;ZuJf*s*$~afp=&St7<uq+;638cS?XM)hO7v7}b++JcieJDA`eRr@
zYvA>J9`ukhu{aa{s`|c`)S<*I>`p~%e}bR^@w150Dxb<)&Y=fNo1FpQwxXe at CJ8x$
zNgxh{!e8Mb<I~mC*MvKI-TU6`3}+2o?31rD`24L9k6L(vyCSjl8QUe`)UCoiKu5Ip
zH at d@n;M|6zz47C4p<tE=vV;y>oj=AHxb_p05P=_WDb9{F%<ewO5NuE}UQF29pr+j>
z?s!Q`Q$v4Zz06GXn{Iq2(Vu-yrcpBl`RIsyj-wuq4(B*pAa9(X*+0~zaS8^cD#k at t
z`ZS5xwHxa(#H7aZYaCI|8x{{j+Qe#~Y~@MjKM)n>hQ+V&2X9!U|985y{skc8UTAFr
z2k~Z}jh`dZbAU0+YM+e-4|@CO>0?3BW#H5@$9^5r2XQ}5W(FdXY>l7XS__VQLP~DR
z+artxH{;wm+3zZ_-*c!^hN9K^MAZ3YDC#UC%T?tON5K9OL^MA)h!4wjYCC${QBK@*
z?-9O=c5rLD6!B1^nVDrxPT5H+jCPiRr!?P^|Nh67%cltcP1sJan2pbr<i2hjPQx30
z8Q>Xo{0Zc4@^e{KAHSI0F$<UX at rFOS9{Mc3|0L?s1LD|+wXTY=iYZ=H>h%5H7!DuT
zsAE&`?@K3p at rJg;2yKTEYyF9wV%MT|5HT(jpppz<iq(V%AE<~3yRObX at MSyybz*sm
zE6AyGbt6x&(#ZI86^o2gYXyF9$8SNrvuWe=mEY!d&xvE^af>=jdLab!Fw3q+HsBmb
zq`qznuzPa*E0y3nq(YDRhUhQ&-N4_3BrKI<c3+JI_^!kls-Jfi;1z!2+B5vW6i$oE
z+QuRgr>z}{b9fy5Ir>3{sT~jjFa&^- at NQjox2jGpelRc4BT${{!Gnqj07>6rtye)o
zA^F4BsP?+vwoYqQN5mS{iMtiLx~x&Xy{JfUNwD!Yt}1r$Ng>jp(BO`*H)6%HiCNy#
z=BV(*zC$~xa_j;Su5?U{!(yIjQ^fD>U0GbHhkZUw?n<nnhWJdux|ZoVH_F=gDR*QW
zY>Re2pzGG59XY%xs3P$r?fOs;qYsE6ufi1t3XsSn*&vgnI3CF>t at dt`Jci|#K{U@=
zN%J=iqInGRP8kmpJ at CCVkLG1~6ybl7W)F<YvWJ<y(~OtL0Hk;@z&-e~Mrk?%BlPh%
zzIWhTIyZ;`l$!ho46qu-kBR{<&1Zl)!T|Kz&1V2Z@<RXM1K<N{y)_C))yM$%Rd=Id
zJlvt}HEkU%aVHW%=5PaAtQH+0cCy(z<z3}~`oRzi6`f!PFhCcWVFs9CH7m46ttGk&
z`C<PX^F#k%lpi=C`TRgiIvRe+tKrS at LtYi{@I$Hu%au2r5LT0Xj%Gr5haaFxiU4wj
zvvQts=LZP=89IY<q5M1M3{VF?-h5H-(~thHCyRHO1GBFvPk-IX;{OTe5PrA_OKbPw
zpYswHa{0HCVYNOH=SmPA>18=DknGoPt$E8`?8DLg!_}@1%=KSjIF!LE{Uwni<Dmka
z!vnghM-rz+nLDGR1*9VpEEE$L)b}-Y|2Z5#ePZuA$=9rJDCmCm*!YR?UxsBfQVI9_
zjoGs9SC6x9>pOM3tiB+YMk}wgMl9Vb&C(6~W!8q5ei#-o;OUAZzqvcif}S!j<jOPO
zLfA_zSO{+|&^=M at QGc4F)0)P`TAF9-l7fGI9*YJJ80FOEo6GlZM;2NbV(Afit2OFS
zw0Q%4nC&WA5iEFccE!13&XYdt+AizHQ((0>aN{5bYHJDDK^z7}ad at xd*mZv#0qb$+
z0t{dg>dME{mS!h6R#~I4ADR9P>}l7)ZuKbbX)nT_)^Bfo5%#p^{jf0sg&Y>K1v<})
zB8D1T;fcKXvKpMj!Okgp(^~Ljp5bn9PJgFYdNnR$pFXaECaW2?cgw4 at nKguY%`0zP
zi}0 at 3DBP^EChT3zuA#qO>@T-lIv8FfbswmSXSCcdvTJ;azID;Rb{q4<;L}&REkZF*
zFJ;`Pg~5lbYgZ(8dRK#ek2y9L-FT=hW_@>n{o$Pis6;}CP&4JnsQ7A5bT-mOIk_j;
zg>K?TsaNYw+$Ef%St(ZirUP5M<7GJO`f9VI&oZFph*qr;I%rMxYSc at Rm4CgyqhJ`j
zmA+4HeIm%rFx6suUA4mB9o5||*7(~va4-85>1#uBq>}OW5vLdf2m at rTy7Yk;vOLbS
zZ&C;@`6qaLckYd)+ at SzY5AhmQ-YKEW8oRc~HfllRa*oyWAp*O6%XYNf?CdtoCkH=)
zc!1IPTf`ZG2_)O)+Cl33vRCo^6Nj_|1$pq at jBfUNSghRhFmaOD$ZDLbcZZ2*&1xUE
zH^O|0!NMx8 at gXb4fF1Kzbzc{(48-39N{3CL43>!gm@^!Qtb(Eb36%&Wz(a$Zc(A$3
zZhUpg&MaeYaRo}Ia=WC%dJayv{WcixDs-cm8XC+79qv<Do`ytO{DbnIyiW)I_2$7{
zE#GUfp1ao&HX7o`mDfD92{{elf&6PeLqJESY*cqcAh8sV4o$Els`xmN at Sux^{s1?v
zu$jZ1*$EBF23!NP^=dmEh|Vrs5ex4B#G&1CehY_1Bn%+VA>dqDx)eurVJ{euV*nS1
zTGO~&3<5-YLDzWC9+xjwt)3NRTfazl#}!qL86UP%7a&Jd_v=9(Kp9_?*wB41cSi$>
z at AoJ900Wa>PFp?au*USY5!Q+=TSIQ*7=iOg1-Xao_Elf<GHbrcul-TdGHO23{NFsv
z{Jd%H at bymvUZ&MpDHR`RyqfYNRWI-Oc4Y_>sOL*$jtyrUy5J2AHwh6>?&8?!!M9Qt
z60;02P_&;f0=0*SBLVCxWBj=-*tmJWw1N85le=<X^6huz<4<l%J}mxZ+|j>B!2XO@
ziFqh_eK-)G6Lp at pGuOi+`|P0$YuGJb&V|_pUAnd%N6GNQHbf`!gh{6dlD+6j34%sY
zzAQrtB at b0P$cxe9vh(myh&7))^!$zr-t<S!-|DCgSmc5W5p%JOoY at fRjaR?dH*wST
zJUy`?R@&acGbY$_CST#Ez>zz;uc-{EP_D7`VsO~Z8iZYmrR$@R at 2A=6^I>{K{2^YK
znX5GX13R+axEV*dpf~*iQbcJ-QH)O~1};_|IuHmZKF!bo&Mp*;!5EI)+sE)c*a@<}
zQ<2Va)bq4hdLg3U|JF*$u`B1YDn^&bp|O2Y#6nRE#F(=XaG?vXjI??fi5w)<V3>+~
zQ>z%~C2S}A+c13!#_>%L3ANKJyWlXBdt+fczr^;L+(fi7 at f8`KXk&lkJz3r{h4~v7
ziv$t10b3cE2dvcjNR<$X*bMn7s>WVOB`&?uTOptwrktWu5MA_?`2E=y&N<$BySz>$
z&Xq2z{-P`Bv)3DuC<3tyuGjqnhy7iKSA-rYo3S&(UHMGeC8C~`&cxwHMC_;39oK;E
zrDGtuF$a~$&qO}#o4kM9cy1d*6~N@&rqC60-tSx~krWU^Atf}5NVPY-2%I3@&6d0}
z6wLink+8I{wE3v>bEQgVPKLOLij>@oGH|~rozc*JZB-yXx%++*wKxo&GyxmXP&aGB
zo~0W3?jI>}{2S)M28 at agtFWYGuE-aSB3xF6Y{+v7P$?mqB#(lP{|O)bd&@4ECb*FO
z>Zt$;K0?$MGb1ms(<kBJ{eu7i(PpotaUGl2)4ADpaaI5LN_YYAMzppN6=2<JS#_lM
zN>F{N(2wmP3WV&LZZ_-vrs<dm^~NEOPbfSH-a8uXF&Br)W`&|Q{{B3)DEz}-j9#n_
zCZ1Z`o%k`>aRV-H)p8QvGCzf0ybxLtB-In_AjoT&pu~qT4;dOC=Kc_YF>?k{^9&SP
z0t%+%fC0$#M9d2lA<&*gDLg at fuErDARvi$M;}IwL<M at dvMYtOh9QP^?b%PxaAi74I
z?dZK$Zn}bT{^V?g#W|~JOfH{LGC4jL^0*$}9Jnap0Ohiv1j?<{VKxxC3rVgB<<(NZ
zwYgzo6~ejX at 0_hdh_3^JGB7VMP|EEx`YNUp<W;CDU^?)9`isOfOK&PmtYLrSxYJd-
zxctd(yka*Iy#Q5a2V{~{<8xqB$m;ntQdKT>G(Gz$a-a-8nm-gh<l|a12XTF2<$*|5
zW&C|YUs at r7Q;f$Y?);}I at Iuf$#~j1)pX3*%yC~JLIV4HG(p;BtsuosZv7xBLr|-S9
zKIiZioxeGz)T4{7&t<$XZsKWHqX!%5__`7Z$-Ooub>2+fKqdN8_?1#@mi|jaa?Hr9
zTX6EzRgvBC2aiBkJcw-)&gaUeamEf#@L=6(SZ$*cL=F-%!6YgjKwJ8doYm7g44q1D
zu{{oe1a78-8EQZrGb{BgEa02qx);YCs8}51UaGP{;J~=5$^>rpn2se|<EACJ5crYA
z8Yx3ZnGT}K-^#IQB?_L6uqo(KUTY$rg&xOOvQpg_2RBK777YvBP4Lc(L-UM)tvHLZ
z*@o<|!BbdoVIr}5z92 at 1=T+gnG7M3Zd(c1sju*{GVd|V6-OH%@Jd3&%^l<*Gu at TGy
zu{b^e*JrrFY{E at Hxlv~RqyLJH-F at gio2d8vg22>8aqJi8)uDPsaZngxDbmL$pX4g9
ztrw^Mq at Facx`6&7z)`teYMMk-d;|Fu2CPw>K$Vg6^+jnV$WxX5I7(@KdMU)~b5h;8
z<F$UAeVjPa;|GYMV-OM){?xz at dpAgx-v_nS+E8!m0a!iPKnKY3z70JOE3Ax>f!~F-
zOcal(GJ!`*eyKL5_U|bAn;`lh<n^}b1LZ$fzf?8z1h@!qp3C(Ma4eBw3nChwt!|q&
z at lRkzkQ)2zA5eZL(hYA;P?L!Gp@^#Fud{w at q~S`SCPWo{v-An{UyNVKDwyaI&##vD
z9|kG_+!$8i93pjLWq%7NemCkEGcg_)-q$quE=2B at Q1)x^&{!puK)i!db_17!Ah8<y
zmQYtCr?uhJz?B+6(!*?|31O4Mvj-7az~e)W^azVde0^xR*M>p2ccTS5J%+JFsXR1I
zRxR&lMYvg^3M<!Xm=-7-giNBiQ at bjdeHB%E{6KhX-~<BaBCt3c0^qb+A<gP}2zj%W
zsL+)+Qj=FPbm0ZnaS;!iS3~%n{Q}$2beac)VdVre6bgxF*ec`${GJrlgQNuHQvC}}
z2e8)-Zn>VL`X0j%k_yln5krBK9fikLCjCsxfoJEb-&n4F0R^-B;2o;zya{aFDYL!R
z(~p`3<#6^>q;01BCSEeZb^}69fTsy0(76`jbiaYR)^=Mx<*c{?|3nkG7WuR$(DM`E
zG0V~#hkg<H7gz~$deZat|F-^r5$%@+*5uUyu9!9XcBBtsP2NxH&bKCin&uQYV8dW*
za<p-Oyir+`75#y$|DyKf=Jdi&$_CG-3~_(N#$>T1Z)LZPt<ke2AJ62WEXgka4QWr7
zTROD4xEDC($Fu&D*CGt(9Ht#u93AMIwx+rp+1Q_k{!}&Za8X=Lhl+0eP&cM%d_xef
zkvuIa+(?|nYf9WACR;N=e)}Vb*{61heR=to)kyW3Y_WcaU6vP6`TDEvvs_CUq-7ak
z&d8S|vd{kBO3}6P=<T!bLMhr|^WaZJH47J}*XP at 3p$|yLArTQ*K_83)`BU|<m70V$
z=6XS1az8M51=8G))-Sn(My^Mob-V(+b)+WPJwg~;f23Tsjc%u#DkT_88`VF=@3NiG
zz&jan+u at W0UqH2=g7XbeW;#n@)PVZej)B_T;{22|WSjKr<(2@$w{o^jjBer;Ha(An
zJ-fT=pppHYjEcDhp89Zk+h8_07%r(B5K1ll*N&w$*ryGqj~MnkaK-q>SIW3o(*@J|
zLpJ>HNX(2pt%w%EyB at K6f5u~9 at C00ocl=mz=i>;`g)=45#y0*AE7*t86#*5xF}kSp
zz<ZzNH2oCWpV`6v8P%{4^0W;&Z5%0jrA&b)Sb~`$mhONypxpcjR39qmhnqEb;#)xg
zZ(OK`X0rx!T>fUwc4UkJIXm!uU~_l8H2Ku45-b-X*>|zB)PD%BG23v$uVbVV=ySJe
zv>@6Hxwym5m=h>)AI4lRZ7X~FI at x20VGD;qf!%+DFPss9ia!l!e%v0L@$hy#HonRp
z at 1W_<;-(N`HP8c3efY^y7LX7R2WL^#Sr({8lsZLFBCVbe+FON!k3dE<ZYGQX+s0R+
zG7Kk8EWDToJ3;M2E3B%WyF&<hsW+9<C-4N0(rxrMPvTArx(*v^Ocw&slenR;3rt8>
zc+mS)KNA8ivQH&`(%j5p<4|Gu#cE#^G-mHXB7#prSDzQP7CjEoAD~a<ZjVT~Ysi at a
z`-m~^Madjnk+j9ou-U`&2w!MkXo|FbBB9QsZMBsrwEa_=B=TuHh;^qSZ5>v!_`c&F
zA6=*Q*|~HCw5yIYveA2petcLX$)u1J`;Z3xP;duQ1o}ZpTabtnz_8%Sc;k7agSgm|
z$-kpm$t}ROEa-0ZsiBN;(fN72h^FBoeK8hV4<dw at gK!~Smv(nm1`;D;PA6=Eb!r=J
zQ{s8y6g#tIhn*R>2cn)>qVU0<8vv`YohhOINF^8yeA5}a2d at LUe{rD!4GSQ=LTmw7
zlC=W};U|4D^ySV+5Q!U*1yw<N$JOebliKkc35a1SW$4wZg6Ltw8!c`DR!@rc4!XGv
z`$a%HB^N)q><_2gd_$kTOihL8w?7}YBK?`DOS|wXM#xz`Cs0kT!#}T^8sF?@2S=~~
z at gBado|UBk%%_3RrafAZ$6R7NpRm)TYzNEY#>coXV10f9Ht?|w2A at DD|9qrUt{RZ_
zydn>eEO>>M)x-TK;F}_CZ6q;fWH$(nKXN$FBm2n0ug|fV=vj)SSW<4TptddCop{s}
zb+TkrVu=#M>{XlD*F^wN5%GqeEN|9!?aXgP#_F;XEoTfRlSq5M4kT&$w>Dz+tV6BR
zpFZ@*wHLS$;}&o%0Njml)lWb7sQz+j4HpVI8FngwL$Mu9zF%>+X1}49XrvQY{=t4h
zTLsxNTf^m6MzOTIG7ZV$Y(GaCa#mR-I0KO9O^{mlm2(8EsD#&oS~NwSt(2qD%=IDc
zji?C*n>RT3fR-Wg74+FFQFZ+b**W+!Jmk{XPOIk(u7w!&(!7)|5CZnuRTL9#c?#8_
z*ZKOE+Y?jip!(ux3rdZ?<?eSwIO}<2P!rHW)GnkcG at K7P*yogYgjATj- at Hxf2fijU
z)ez?8<ry6J!|b%b;|eNK;Uw at j_HGzq3hEn-N@8=C9ko0YVUY_DaLNaF&p~>g0`5Mt
z3lBb+-42EXzc%;M?nO>A_Z{>%*92h&xRjPD?y6erPsg>>YtE$q6jT{30ut|!${hzE
zVQ&!fHDWjZKJiK3anRJ8l6>$c;c;43b1ajPD-O;uR~#(GRkGNbYZ7_P>kV)KUEzy>
zWamTmUZw6gKrn2*|3teH??K=N2cOq+Cal^3nId+y0MqKc+?x3&wbR at QO0Gnc+d{28
zqqzaFM$?#3)TqLi2frfhhvA+$k#IP3rS7xA&Lk{ZukdUh;+!{iU*CXk|2Te;wf+I@
zVN5 at +kp-&M3Mn%Yls`hl?rk<U`$E5A3J@&8Fask80(1FpnE~G#hYN{gr~TnKU<)r&
z2SZH!Hs?`xd55)ON3NH83Fu-%rM+!JNKo$#=R}uFaicQ?u9L9+M6HWW+hwV^cjC%R
zEO0b~3zNc*wkJq at 2MNv3Jw1K+twWX<nm+SLbB1>phY8CUGuI*t^<d5n6L4yc)b1){
zwNF{S|3XSkF`l|<K9(6<rKAt;%0S;hoVd9t#a@~H_-)cf1OnxIoDhH^9tS&KE_Qb!
z?R7rqz!7MUeo%FGh8|J6B;o_p!UzZ(2%$zGOuW=55S98_F&qo2$nD!^+(<&W7T%4$
zKwg^RB0X^(e{;j7BX8g%nAg#LwuA#`ocuLrvL6KTQ_jM`R#wd`($qpUuhP>5Iu`;g
z8odGc+K$`06M1EG`GPg?-NRDANHq6C-!GV9A-Luvx!hB}W+zd6gRrSg=Rq9C+aIgl
zjl+0|g|gjBod!(^(LJNM*oEhQ5$O4k*d?PrlHs{u96{x=-!*7}{$xFm;Z6Mu(I76k
zIXenIgW?r+M#yyl!Tq at HMd6_FDeTQ7XB1;uNn<D$Sh at F7J~(IF={lUqg%O&kVHuYi
zr)nDq;)z&h9F$NSr}|3Zw6LFt_jbbVFqnKLWF at ZybsX4OhOqXi74f<&Vf_fT^o9;>
zEWz!xgcgU!bN{)@_ML+*gGZwrgAHknPp8VXHG7_nCE1 at ne*%3*cOa0$xN;^w-p-7#
zjAoXhV>ncdYCHG)0fTqsrMeG<Urq$$l(Dk}@D3z)Mr$8$4Zf^T6DClHdz#Qr^FZLj
zK&x{-HZiv15f~^qRS3BQB`=sf7+U(V$bo+J_8-t~oD3eNdy7PLw+V^)*xRPUf9ARo
zKO6 at ZH@7;WCg=B4($hl&Qyu(^WiF_SCZ8N=t=-Wa>~F2zoP2fwtt^2F18jgFEjTCZ
zY-~bggURW#^2tuwu}zKpm+TcT$=wP(pkAr;0e_{FV58U+P5ut`Zf_25Y^~jdXAakm
zi=b!VS*qR4YNw{hzI&=O_FYYl+n4OkPQ`0azqD?gfZy&J$ow<NGKkraB7^9oQD<NF
zeEeumhnxc~PN+E at t9!l0!M|))CqJN)Lrf06o_z{hjq^aWb$2Xua2}HmW_K{@0F&w@
zsqUa0hIY?d0s`NuW(C1rDC6f*#g0ncF-F93U<4sEO>5W`*Jt8#FKE_PZ(LC>^v72a
z;IH90tX#!0=Gsd58L0V7m<sz;9$(qX at uBb~*bxLD9R&MdQs7OY<_8y(Hx%;!72yB#
z<b*mLc)|O}fs&%m4mR%m8P`9=YF||sUBVa at KRNm%FbY36AoeXR6EDWB2`}RIftWQ8
z$K2tp3fgI{{UhV9O4qn&1UtcK^n5eqBxre3u(#|4T8M7B4!yO5zXWI8aE2UrKa{|B
z>t%sh5b=8Ff-NsAWCukbSl@{+t?Nmv3dc9+P852;ds-qLB_k#N0NAb;n=EQH#5GOk
zbK=W(Mk-M0L8`&|5qv`{Q7a1N9`KK_J3bex%U7!MCRKEFM0Z0l{$4mxMtVC6+!7N|
z_Q~9vt at RP;{IAK_!cH^-n`TBYDa~yWv`IVWAL-$*-JZ5p!n>qs53BnF5Xcx>Z~C0&
zi7p*~fcL|*pGrN(R%Eahil$mEVpcGE2Ru$-w>reV+!0hAB?>Um0zsLFnU$K0@>*5F
zwGF1!H}Um%55KY&D=Hgw(n6 at LrZ|<gV;sEG4b)HIFz6cxOdIVOh=gw(5TQK++VzG3
z%JUz+VPG@?k3gL_90tMv-#h%%srd4w#WXv;NYHosS at yPxq6b=|M#L}Z>NLU}$0BG!
z+-L`3Zf4BsD=V#0rO`ATphf!C?q>kGWi?{##vzKW3WKmV2eY;_**NdPttxl7*gu`E
ziKngg!^H~F8_ey}b`T>O6n+UGFXQ?%HWg$=n*L<SKK;FZ7?=4ppT=EF;zl_{;2T;;
z`w`!q07oHc5sjq<gaWCXh5%-?|EJ<`i0mdu*_jq7VKDddW)5oTAI9N*)dza+!@__o
z8xy~T`XXIn3=&L75va=ta$l5ugcy34JR at X9yaMV!?_8FI+zY-uo8>u*yS1Va!7zXM
ztVL#)l>WQpgINkgG^p>F+xNhJp=K)d{bJL1j#M8Gx2Tc23?tQorm#UJ@!T6<#<_sn
zgScrD at TW(f<c!1=w5iN){6hlaUoa`Qn9;)gQQw#QZvj_{9rwSF{yB}qB;ShrYT|Xt
zS4-lTBwsB}V0C>8Z#}@IsMc^BZYP at ckKAzv@3=a_8F5K{pI(Q$ewQksBi_~bnWYNn
z|5*B;B;tX<1ayltv?8`x2JX9<Yq0uKF`-(~WyG`F*VlSFb}H;`EfInbWYk%yy9f*o
z>4Lpj<9_SLwMa5MWP-tHPzN?kL|BLzgv&DTZ)`jmf1jYxwFg*tk34Cf!X#pSJet at i
z+Dl6V0m5mC>(%0iyY%fZH8BQ57r$<+?nR?cOFNmU!y47v1?+b~hk!BA8ufX;>}>%L
zo}T at cD1s4;huo1R-B%R1*$Xak3>vDFR|W+h`|cC`%S$r|ru?tWgZ7<8tNG_Ej%<8a
zqnN4sEsZZL(ty6{@!djT^2e9f%(r=bIi at SCyU~z4(rRbS8{!P#a+Epb9OPB%cc+Xx
z#{cx*magoNWw?d^vUC at HGvmD)6(8kzzp=bkH(lEI^l8qaJ@&>gN*5HH7m>TT0?{XW
z7eb?cCO*mVKUSUM14<<oe#^Kn#>m|a9g#1ru`}0(;mRDwyRiE%xita<VI<nPH}NBg
zcE3zc0T`Mw4rCby&4;*cx#Ja~yZ(`eJGlNm32R>^tCif2NXgvOz6y>+ZcF3%$CiAn
z5NL?-wuY3vm{Rg=O3BM8B at vZLq~t#t#@VnMh0Twg<;oYi4sQh19-M13@=yiAQvKEO
zA|Nkwzf$_pKi$u&Gy&xEQNqYcb at m|!sX;kaXBH1sVX=Kk!HFyIAUJ2BCJIj5O8qCE
zylID*Z{7HBNHPLP3r_Ad_QB6{1`APewo!1}6r3lC;PlTsk8<AG at 9_?}qfJRi@`iAd
zHA?u#V<W>hij7brpMQSl;~&~@{iEo~OYGgLH%2TNg21;7gvOqtY$GL$iOYA!`~Tp0
zyY`0j{G84`6EFVPCWQIowNpEl;bA;YSkCXGIs(}5Bm&p~S*mf9b>p}A0INX{-IA=k
zb@(qB`2zDCY*{=T$59_xm0>9y6#vV*n*qQ|pvaZXbL at jOBJM>5u#&%U1Taq?{mAG}
z;1$^w^2Gtej(1GVevAW#eyBiTCG(n`GRx{|06%8u;Ge7mus4V}U?zClc{s*}xOz}R
ze_;n-$bG{#P2t5R1n9#?@EOPFR{G5qZV0f&3l{LM*|`hmE}Xk4epbM|z_qjUubQ=B
z?xNXqO>{6=e{|rmrSVxy;^D>f!lzx*b!OLPr-hfyT6D$S at cc!%%>9bQf>}$#bGtg1
z%w4*4{^CU#2e+J??Q+B&yK-*am+dTnzPXF$97XM3{R<Y)o)t%%Quxf%!dK6acL1o<
zE;;M0vj8O?+on#7&KLs9K;XhffO{??qRk0=vC#%sQoNJsK(YC&E6+^QVZvqO^2`-N
z)^Jn7Vv<9Lb4pdo0bEo0dAvvtjIvVIpyK3!Wu-RbLBuNe(jP)gCPMJZR_bDy<dXvx
zR?i3Ndy at Iy4!lMfRmQH8BC*Vs5ZOw(Z|WXfjXjvB#RRS+x?SJV)L&LzQvZOhL%1Pu
z8+NW>@T_jr@!6n3%xhZybU;PtbvD74Hxg0T4r~g>7tCwvfkWZv(5Q7clII=M(jL0-
za at iH+R$&M1K&~4_86Zn;>B^sqp|7E3f~%lg52x?h0FY1xn|d#;4!Us@=OK9T$UtHx
z4NR=KO#5e?&WhFMVZEB0lsypIPn$g^F~dsz4=O~VkvLpf=1h1Uw{f<~4eUDK;p1Rq
z`A`qegTIH$7b}S84eW9+N+~};8T*2!JCJUt(^dQx+^J?obil?w**rRw0G<fFI&p>?
z!r*b`96r*^hk<&^#Y)Q7D8X%JYAmz2Lzv{jUj#0xO^<rNfTf`muw>xrHW*gmKIg)T
z{jwVIS$bR`#W at J+q3M<GjtJK06qRYHu$aP9@>!jx-eq5eIb7t{kofb%`3Zq at Fm>Ll
zFsTd-Ueq(Irx(>T^k2^nc*s5>jdg<{x&PK&jT7r}!7+?g3cK0?JTl~aUcM^&VCG(O
zQ!FFEz{3YB57{ZN$121%`1uSD7I*x{!bP1S at 5f>Usrel!1yge<ZSL}II1@=yL-tV^
zA_Omr6!6m8pq8T96EV1;x9Nb~tb--cuh_AN>eqWkfg8GC-^_n68=f9kzKUKOC7N=k
z2XLy+oow~IOgsnz@;a{|8GEL6%Lmav)&&x2fXC@^XM*t}@lFv6;5tmO6JS(NG?3;3
z+26pYrAT!J2m<5XL+2MQ9<24#A-&dzto56Ef6}niTDcxT&7&}4qiiqXqD-MN_t^qb
zk)ms@^dSF50$Zx$d~iQRiOOI!*J}!LZZtVV1v#_ydn?F%ThYw9Z{=sRdZ=y>%4#^h
zF!NYu);6KScRYqvq$0(L`I+PQX8!<!$WMeDFw^pcY5p&C(tKpTllY1CkK_kW^i6uk
zY568bQDhvpwn(oI=?-tHJ9S<2F#A<_j>UX}2}k)O8K+Brb8*A()%@0RK>583zhzuO
zxv4mqPZJHKDyXr7msTJQB^sx=t1#<m=Xo)OsijJ)FYzLL5i7v8OId-IXk5~{@j at eL
z2Ie$3UZ~CA1Xj at -TnE`9L at pFpQo7YL0^;=QcKoM*KZvzXM@&StQ02jZLbS3V$C~PH
zJouu8vbRXTOS;RrpzyX;zH*F**e97Kgy>4;XN+i}5-GI34gnNle|xjhLJfw+dW}`7
zL=BB-zVThD2+3NhL$)ikDUMq6P(+o^${EhRRnZL$2QTE?0Xhx1Fk|F9lG5L=+y9a%
zz~Wa|xBxiBrLi3hUQ at HmPLHu^3TfOHkMnGp_)lg!m71dC)-W?Hs%VIA=`fhoDi0w#
z0JRYWiCEL_HBsQjX7zlZ5cs`6VNy*Y4XLzpGd|5ya9!@!Rj#y@>%8++F`+%xiOjWX
z0=XxMnSkP}B73<^IE;x)DkV}SQgfvg$S$E^mMH?blwhiL#e=CbyQ>z(8>O at nW7>?f
zIrn{&f(rul_}rTxRdt;aF2dgh_rvr`8@{O7T|SjIO%`_q{y)LnNK{(>4)du-l-t{p
zMU>mqz+<A^_Txc7<)pI{)%%p&PZ{NQx2SlBRc^bl4}f*|kabP8Vu?xI-x4VK0a}GM
z|2h~Cm3nL4eMXy4yIuZFG3EA(d2q<<xfw-e8k^U23 at p)2q3PA0ehc;9)o(vW7?*D$
zhI}fn_=SjmD*#fxT>uyXRj~K6pu|hpdaX=WtkCGS&r<oy6U9p3Q?{Wo at L;x5+ff(B
z(P*|&V7o1Q8R(JizM)>*h>YHO!lCo~$XDsN1Oei#n1VY43T~BFaK(bvVYC|2#MJJs
zr{~VVpc&;TEOcNbZ<go$e0rnp>D?kZ^D<L)(8YZa7E!_J3MQ)U=e24JfsA><?T}H`
zX*5upwt<JC=%L&yH%Id_`+MQtZVdVx;oAdIC{bwACDkFdTRJ_9b}MHlf5~4){#Y9l
zK~|-AY^mq^v77y))-T^EU#D~-0!8;|^j)q)t at SMds=KA2!m+{l1)}OoSR>%duj>97
zpg>;Z_>t&%h9a_+7-F|SqVE#RYU3yS1r#!}XplyFB3QbJ3JHjU)JJ1 at O?{N(sua>F
z7^YAoCA&0$6$9B1qOBs;3ACQd4vlm;fl?Z&wf at 39eUwUw=%do8w5K&vcFM1k`nWvB
z2xy9wfgbP0&?>2+N21f0-;MTFkp7K9`k<Ks68Sl;o<uS2k-6!(>Tk^InN%!mVWtlh
z%VapGAam;D$eeviYouPktez*1R3nx7YLGt4$T&FpGdPO(0EUaP8njBfouh|~y+jqI
zCqGp=ehSo5Do5RtT&Rw!3&Hq)hkm~s-!isTOFtk}lS~E0)l&F97S~5lXGy<4x*GM;
z-!y{nBhp7DV7<{t5w{*%<(xOvNA+>PQE*LU at NRYL2oLvFuST=fM|r-X56_6jU5OXB
zNyqVUNA+$=ZO6>7f_D?UP)b$s?oQ~YU2WE=Ro#+$yC`{T^IDKiy>mC8+WF57j!w)n
zE5BFc+o-2om at A@r=zmc?1(R!0JhXC2qVrAhKf_Px45U$|GjPA&)gylg!JKc>^G(D>
z^vM4fK at NgY=LNOJ7mhu1sx5_{!QNH>4DTwRTTi~~c at qHu=ZhMDIMp++Tk)xSEYxjG
zZg&%VB;AOgZ<+ at a!_aN%-}4pHqRz`eobbDxzj)L&h6h~-uNuTcgGv2E62oi{T$qQ;
zeIk>FK@)Uf0(=?HF|k^h-Y`>11hb6jn4{IU0u2SSt?*~0;;JJ!4hrzt{fcI;f^*9@
zrET03;Ru2itMDxkAwI|<$$v#1F_1#2HIt~!UB4>ooD at x;7<DeL<h54O%+xwO<Kn8T
z!mZ9#`=i??5Q{K;4o8Di!^nfB%^z^|2#LtZgfPDAaP>%4G`(zp)VaDQ2FDc4al>u1
z?1^SBiok=W4lc?Oxdeu;@=@nev<5>n4&`06ABVmWI|kC0P~hMleTc2(c~FOxAMqdX
z)N{Z}U4kqy at SNB?N?eIk6Y<+Q&}7{`{i6pVB<l~deD)(q)$8f#{bq;T+ao+MDKoZ#
zNC08ML66w3iUzT at stmR4d^B@|!X=T`!(Dt50(`yuBDpr|f9$ZGSr$wl0-O^e3nK@%
z!QZ)zaN<1New47*pB?F~M>>>|-{7}%2w<K|FdG5pRaN2~02lNK*K4U0IJmX2`QUcW
z;O5*XU3&n$oQ|~}8>_`hSlD(VFxEIour7do!G1)u#Ua;mGDcXl;6kS`@09us^22^Q
z3Hj_g<gFpx*iu4EyR6iIW9;y9KPp3|42KIxm<JQM$aAXlRp(40zUr;$7kt%wz^x_C
zy~F9Np5lBg?#Ru at 9-P<gG*=wVUM}cPp%iE<Gcnkd8~{?D#IL3UeLxD`+go at K3gcLz
zu49^eEAR%DwIiX$=^F=6W?X_Z&WQ~_n2jOLr~e~{F3<7d98w%4igg_3YIA~C#w3cM
zw(uE;mor8P4&8LvmuP9e12GZMJgn5io1E=a(y@|(DQF2!<q>4x8BOjUKoH>I at 1wQ9
zH}2o7FkE=9KhWg-A=wY-?~_MObxy8qd}zsw**M;L at Ws-{#GDHFp2M&F7}Ptx0`=Os
zOYe86^r5EUe!KSfO=v-Ia$_gT@|UT2imG^2b7TLK7qS=NElwraPCcxe>E^SsKiFIk
zp1iujhKoBY3O<b3LCNO^NOU(kQ2OwUu<y?H<i^mH^vIGa&dA}7uK>n{cxTpSC$>8K
zZD$m&D at tE?A_n`qQK<3;92$BKRlX8 at C|bK+dDB}rz5>f8p6efRb|yC=D(Xn=(u}kk
z|FC3V_Hn$Dbr1IWtQ)^ch12ZyA%2nC>)ZI`aGd$i-inv$vz<dueR}%2uY=lO7i#}4
zYG_WEfOeeW&FSW2UnlXrp8WvCd2{+0P(ia(F)keozD_cDJ==oxru2!<0cR9qseBam
z)T16S_YBnIZYQE`wVkNjK8b)SA6^lSt~}NvSX~_i4cqUgs!VnDeUXMoty`)fTVq(Z
zbXps5e(W`U9!sfLu(eZSRPkS@)K8l0M1&n2l>fMpKRhmA(t)T at uMvlu@u}sU&{!O%
zgJ`IMh_Ey2h%}G5*Tgbw^r?FtNdtP`?W_!+X!6gNb<@j~ml6<xZk9sz+?r7u2XDf|
ziEEbN%AgG^hH?F6HOQt9^W$nnzC;j7N;(|g*m<Z8Yeut4qI^e$d2kGk{PnWxbbcpe
z>1zjdQW=B9JsKxycos_c at l}EephSuCbw~QE`n1&TQ&9H_;So)rOoyZ|&9F%k_>4b7
zf$kJEP`5wk_D;dP=Lv!}voSTpbJA$~F at z3|jaeGOHK1r7Dy}I&_aU>O#&Ly)h+D!`
zW0v5YMKuv93UZYSt4B7B{8tajRd>*%c%HK7<AR<&*=8`jmh((c4TI=IkFv`!Tt at zb
z6l-`uQTM at 7>LxrUIbv|r)kFZvh`v3q`VJz5rlE4m=94F{Xzw_}`alVJ^{L^^w&%$|
zcy-mOGYryn_92mB1^7s)W3r|b2Gw#xvN#6gvx}!|b&W_m2FNnn+Plre8uM`a;KmAp
z`ifb{4>iJaF|n>tZn7gzcVTRN1AQTfOz+c#@JhfoWf&gZJRbsL at SZ>YUMBP>!@|;M
zynH+N<0U*xo)K8!eZ&3u&cD`v{6t9Kw`D*6MUlF)pY}JjAKwYm8)84cmH>mrBY#8t
z at c_5Te*8HCsc%1Cdi7V_kN2o^NQ>p)$bS4W5d2uasQvim_>s3CFJVS7h5L<^f6M#v
ziFvM7;8BRSBBn|#;^Wo9AJV<R*oxF<`ynWCMe+|eZT_0tp4n_?WvIv6pcD^P)m at S!
z&-*4-2Gr^a#Q(yxU%H~2Eav&`Bpw_j%L_7m`;9X6nhcO+d9y*TUQY$N7$0(b^J}(x
z82eWj)*{MGOocg5Wlp`@ZsxiCJn`Mx*EtjC?bHAuHUIqW+9SV$rJ`%eF1AfRq&@N*
zEcuQ-@^8T&IrvhS^S%9)G)@8VL;yC(vCWMKV<qx-&f$khfuVNKG5`5?&-)lmrkihv
zy7lEv7(DN0eR&2?pT3;jEcTh6@!+}Ka&JF<KFyGMs?_1_ppD26{eOu4^l_|BX8SkT
zPagoRuKM|x-%o#Mef-Y)SS<<OSs#PbFry5;-mZLSee7G`G92pLvOZqEw^wAIZ;AZZ
z@$WgrwP>D%SDfK<UjJYB?|F%9ufL>!&)0`oC)4!aM)!fgS^pjtAr{^o;(lVhIsUf%
zdq(J`GPIs|{Ci|S;pqH()<O~(|DN~C@>%=$?5C_QSUUd&{Cg6!-4!l3#fq$0>Bl7N
zTeA)m&z&}GLlnte03keg7`M=@cTf{5F^gNNCnT@)yj)Tx{<W>=lQP8G)|a99+SZq$
z_}bQ&VaT<uS$I)}_3~Ri(|rq7v-+)()i3Tt%FkNMta-~-|LWJPH2&S}!J;c$j1NAn
zyy>0wExk{abC>7;{f at s4<DFoK>#e$j|Glkmp9f$3wbr+PIX at rk%`J)FW<MXw7e=g<
zH~_}Y{Ma~7Ngflw5}tcWUOcziXFoW+zq9PLrg0(M6V9gOlOf#0b|P**nk0&*99YbK
zNA2SywOLYgI)3uu>qRu1Z;RiADsz`>e^I~Jh^%zwWu8BMaxd(mK4lxxH&s9B!SP#^
zkt%R9Wx8>SFSAk~!KB0!pQ)e7!*Jz(n;aNsr9LAjJ%2z*tLJs<LCGy0=(p#VF0tV9
zaB)0({YeG!NqRpNp%=zVirF8<G%~|Ah#-ctu33=h)$N{-P_;c!fR7)zzlZiWmy$m4
zDiiPLJuRDo5gzsaGP)^QB+jf`AG7r8EHm6J6EN8!OEZ-geSiS>ANo$ndK2n at 27poE
zX~VGw_4aJ|bL^A0a9luMV^bG)vU}+uCV?Bw$rt!EHXG07M=)#7TSZWLkB|a&1JeW!
zrtfjnc`B~}KJWCdjRlYaAYIB1UZFr-i>vDHa_hKU+QUIb(VQ~>$s?%nSi`Iy%gk0A
z=SF9;)AzC)0#i&qqsQV#fe2JFM_>1+bg__?n$PwM2L9VfyB~gZsumajZ?S!Bu&YS1
z0-FXPkyQOq at VYzmk5j#iNFt9J+lT|p`_ZIpa(7}Wu0F)pd>i~vwc|i$I&xs}!uG}|
z%c7;cUsDE=U5De=IF&7XlGqNr(K%AW+E8Maw30mp^-%MHN_Y_oYTVTC#|wTxRPcL4
z!SDYn`2AJ<F4k9e6z79|eZ_5o(p}yW$$pxCw84Fi9`@*v+O)||LY-2O-BJ3Q+%H6l
z+L<SLI&|D$Ix7F1eNW%pE+e1p;@6maJMe`#t&%oz00+^g?y-~m;GU!Mq0KNaPN)RZ
zG^j- at SgR`S#20T2gO}aadvKfSKrB6RzwLZa+RU^e3H32VLfFofMbwBkHN+f*qicNB
zO8o-G;bsi|!gi((Sfei9W8gqJZ;Q$5`4yW>Zt0|Saw8){p3c!8E<!Ny-mD|X(~XmX
z7O>x=4tWTF<IHwlIhou_-7APml7C1^O1W{-?_&LGR3ZLb8WqIpI&i2#4cdP?`(-4!
zay2rrVE~l^tGDlF<>~JI__As*We0%?jZrlgnYIBq0KvQLRv8*6$)T|`t5}0QOv*dA
z62Z2UBtEnArKyOpG0waJnvb!QBrINp>K!HnO3SLV?-uYWFVTv?6-%$Cyt3143D!{q
zBT(oORe*tIG4dE#_+)_})y1|kryX(`Xw?{%cCsH7#2FFnAKij$bbn>gi$PK!S)b(1
zx6Aj2&;cLeD-UH&`%2`T5dRQuYk9_hoC0M3{reW;WMt&_cmywBQ{9JVh577EQVC-1
zm4zWh&&2cJcHlgj5s5<z$5R`Nz`vEwZFqt+5!{RHw0rF;_NX<+8ARI%0^9%vpC}^%
z;Z*CsQ9>|=TH1BF7^4(DOF4<QwocBJ-5 at ui%z(4lDu9fh1=JYuB3&gyosJOlU1gmJ
zjxgh6BT;<&??eF$hi>WVhJ=+;3m$H(Ud=bP+WWtDrC`LWRmTDZ7|cQlcBLQ9pu$T^
z-5R6?nVx7Jb^d_Mh)yY?$H(fq6f}|jIsTbR&0D?}3|s+?JZxxW_TokJ7R;X=pTFpe
z at D)pDEnJA8C5t;5JY*@lpg)R!;AY7yx}(ldo2DaFhf+wF at 7<0}d4zNi5}KX95A26l
zgn%vh-;~^rJ26X at sL6mvoEI^dqyHRdHQl7kap|O7n(I2nnd$!i4peAw6KO+$1O+Ud
z=FAJk<2VNnGuOaxJj{gF%(C{VGXaDq at 9C)S49C5r+a}cUb(1rJSsUcJe?laHA2Z~K
zHEIIGJWjBs1pw(`6-V~fAc at nSno1-{yYY~7-<pi(+tdMnbes&qHBy;m7=#vczDEwc
zKZ2Gaz({+LQkDGLmaM`TKmC%GDRnvpj}3SX;iWYy8NnmI+SFIO`s&1&bO3r9^P*ao
zzF(wbX7uMV6CSb=)*2VBD}JIIGX?y1dl>UD at a4}%;KN2lxOf&wdz#{LlQk;McH!NP
zgDcWDTIfa!UJL at kf6Sr`L2My%>0fV7jyrNNl at Y^gTEWHe><7z7Gc7 at SRD&1bd`a^!
z!bVX0iaBQ?f&$#G#qDr`9Nxh}XkeILnBBk$=B+m320S>Yx}9W(lo{wS6cn60Z?kIG
z2#=CAncu2aF0p#RNs<b6m=fCLi9!Orq9$I*0A3NJrJ9j&mBa=`mlROE`5r6v9O|e1
zBs=)l3M-+H>k343EMAL}rymy>QyVd4SD&8TQ<)s7yZXcS4}%;P{MptwHd&wR<B34(
zOt~s^9`a0P__iDeNTu+m2pGcz3>E630<{V3ro7uh9K(`ZY%mjPp>4XEy;kPZ6pBiJ
z1POXs!T9l<y<D95d at kX7rX@GUDn+p?YDJ5qn1!ZFsU1;6A%Yq?MILiVy?h-ZNbYU`
zFp at yvxfkCYZ7B&^=#FRldqfG&RYLU at trzXaoF$lEmPK&0ZG+wTYJ7^Tze^19p1!VX
z#K&*QRji_$F%@IbFD`A>dYB#Do at _Wa{#3doV;@Ss61=K0IWQuA4o*D4&)~7dy+x4D
zNd|N0c6|9(iHN6z%XU%sHKTJI)%r}e$F#2Ry6u%tXkdd+=I$6&b)wN7GM+>z94v*%
zLA00}4xGq43V6(jxl{GSP_^Yg=}s_7Su+H1p?6xeF|hOuR2R#1;EIyHRx*Q5GGeUg
zO;K1Vq at mnX3Kpdo45ED!iiw$UFXf{zxGi3p`F{{oi5jORwC+OoUqA=yd0X~1>P~49
zoggHNLj-5v3J6vAb2s_0usQo3q!&R%_8PawttJfM*4&3&jJPsmDC}jo0SwiDcPTw2
zOfc&x!Hq8w<Aa8;r)h9?gD~@t?73FI4Q8%E8vE{k_<~cr7rUen?*>ik#`1Jxd`fcQ
zBxRRL4&WR=BmUGs0`j*~8;RS&p#GZTX89IY>+CSJ at 7hO(wtw)<LN^L2tQno`Ma}kQ
zcr%FY)zszela&gzdMOI=4|P+`XH>20e2bMj+AA6)8$>IX31czN+D>x!4mRPPw>P7A
zc(|x{41y~=8`T;;`3UP3p(|4tRAO9CB{HzPVG-v!Tz7~@yy-25=?&K(cOX0BtXNPw
zyOD!RC&dnDyw&(t*pLv<1t{V&s7+kySH&{lWxr#YZ&9pM<^lsokui!5u&HLgCvdu|
zPU_XBiukETD1hOCJyVHKxpM167$$&VcwDL9&<w%~=dwmN1hC1Lb-yMKqq8 at 4A6!H<
zVgBGEtBP0}fo6db25Io&YK~fLv>Sv$m!N9Ujm%UD6vFQE5SD#V*vRPV1ze_$gNnU;
z5tVW4mM-CmhC<dzZ1HnvZaXW<{Qz+IKTI5SX at xJtw0M2}%+^GFZr9AqXDyu at jZJBs
zIrEA|iJ7yzy6VrK8CyL2%9)*uq2^!Ha&}9Lub_TJ`No;kI%h7Nb>-ZdOFL#QnLB4@
zeAX3iM!f$h-_Ks0ScIT}Z>|xywm at J?<K+mb*nzdim5t-fQxUjK5nuj>`G8=_qFD>-
zKQ<w;2<w)`i;koQQ&aKpY4Ni^?C)P^e96rDi#iv~nmso<Wm>#p=FB;B<Fn>3IA`XR
z2~AA-*i1ofef`;pfe5U}m&}?UUmBg=g3q*B(W_dHb_9yUWm5exV5FNCUDG-%KD%S?
zlEcFiyS%Q&{1qE^Q+?nq*I$o*yR{8|cuV!yOCR3e`rj`273>^?w+DVx|Jw=w+lhbH
zt^ST2KWEPz4+(Wt3~<=WL9Ti9dDQj40rKBc{YQZOw_N{G!vB$(<5bkzzuXYy;s4Fl
z{{~%nOZ6YY5WMC3-vIu>67`*wcQEh{2HwHIUk3wM2d+M{hC&6|Mshvv`-FYZe5BpZ
z|KWn(_bDhHfDs}8Q_x;nVSR-KBKgG&nhONN`R{2n%==X4{c?XWTVYmtIdS~>bHg<k
zUXEo`B3%FBvp#%Q-I*Uv$j`Hvoqf((b?2N_U#nlB0O4U1!|*q8%7yH2AJbqlm(OVZ
z9sJA%fnZl<@I50(gjS(pmN{9!<ARqTrq#()AmC4H)@gjt55Hym1K(#d0UxF<kf%W4
zME%XQZvE`fcbiW0=Uc1OXjtZlW$%-xK)|22L#Mq at e>30H`uPLCw1FaNhP3?o!g>&h
zKYm!>IXcbXuC3F={H^m{S|qKrNLs2$+U-Ts))h(XE0Xqeo%V48j1OVnQzY&6B59SH
zzD?g^C|j-5PGkNF6_q!a*cDZo(#aL!m1VJtnia#EE9#QNOTKz+MNLyhcw9x*xQfbg
z6`^tEB~$ZLP`nO*j3La=<^0!DQMsa|siG=b+FTL7<k*U;ri#j at icqwCv3Zm-Yu`kf
z-{>-opdUcBD at vMmJ0;`L&_rpdg$+gJu?E>HHDm0`FN408Omu;pSRQD=`>{Ij{}3<e
z^UWpbd#2PTUYdxPCgP>^j$i>6h=VR&R<=Ze(-kEX3ERYq at b#wOEt~sMRkCyiyTLJB
zr_0=cXMV_^eL8I-6JiyW$&w|<67>@*LIIB5ZvB2tK8!7dF-jOG$k=Tu7`vA8%L-DO
z%LA99zB&pId~RWVlifa#bNj4lp)0 at 3=*mxi`jE}0Rt#HNmMOitq~yth2Aax=msPs{
zZ?F;IbS3e!g0zt=n^;j-5<9jc3~Iq>g2DjPImos}ms!X%z~xGg^NLc?VzR8HNsStE
zN6XJQ1p|S0WPM$i`ymmGwr=70-CT;kWXi@>)T|_3uNdB3(U2U`T+#NKV=Edkpcq(W
zaEaV5FD(xieKWb-$j{(s+F~MIM|>F#1>R$1ENQ5kDfoOIe*%uc5B at Unf7*q=wcPD^
zAV6BZPYb1StU%~{GHGZ+MfeJrRL7O8ynBu!?`YbA at tMqj0uLJ2@WfGbvqnB)h#X;F
z_H}{I`*qd}d}m5pDymj;Y*&;`uBb_p7E2~8vOtT-fl(V at 9<Y&ptuFh3rsF|lg`rt7
zyh)8!d+D9QVuOWx2*)3FT{3^5e;JPZO7iUr@@;Y$3GE9Cj`0SLCdKo0dg43Uvh2eG
zU3TnH^p at X;_m>ROhY0Grly%_q82$|1X!+yuqA*+uglY|N>?2u}iQsSbTdafh9SPwd
zK9};}EXp4=2gbYv at +XWW29o1vCjJbZnm;Mr$|$2!x{l8>uQwjxUp*e+!_r&9Wi=?`
z62_$RlA8)>WpcU96+hSY{X44j%`cGQQx)}Mewkce0=W-L#xr3svUL~e%fNX{$%K4)
z0J?B#tgZCD#rZx~9!7oi4CcqepVU{;mK?ES_{w3KvYSh9DG8i`^su~u4DhwNl5?Tv
zwbIc+S71>#w(0y2n*6Plb&_A?W9fWARD}r at Y%>LX&pBiFG5Cki3F<3Qh3`M=v=1;%
z=8WkWt$@6%q_ZAA at 8LgGl`J{meRqa_CwiH at Ym;|u$JX!IUw(*FQ9AMUCD56N(_%7K
z_;zANTgmefr5No3Aq(CMqaH^6;pa>ED~8iB(syV$=HXev57aC>wxY7RB7|xL at 3-rE
zxF;g at hz=sU0bzh1qX`2AIKOPy`Te}+$2$vs6Y~;kQ1cSXkv9Tb&ae&xZ`q1cx@)NM
z*YA%M4%weW*`tM{_b_k>Y$H)AKL5;rp1dDV{=5*#P at S4kzR)}(8|iVZF1L;41c#tS
z>M(UPT at +3%FIg$Yz-KJed6Z=c-x^)!J8Z{;PiTI=3tzOnWWEO=%l$@|o0DHo`ZdEX
zH at UpiD<(WM`ZyK{1Wr<4l2)VBPVuFU)oF(2Yw)g3r*$!(A1C3ZE>0k(Wd6SH2=kJ^
z*6O at QFK60)I_+I-3!iHI#kK7FFFYICPL at orh?LysG6BmD=(74t`Z!WouEm3-g>~8(
zl;MYXJx8Z~lL-amG1tXwOL at tsJjAli1-jfnupB;h`0Lhb-)4e`uOVf17}@U9Wn#Ka
zvSb$KoJr+S(4pi70;7?>OXo>25A?zC?1~U!*ss%1Wja2rW3BG+J|kDrC%=BtlCKL+
ztY|OkD=Md2l$;vS^|3w0_w9pZ|H)cT-DdLmWl*GKp-U`~C6w7Qou4vW)fthMK^uN|
z=y%I7=g2#OAG+1erO@*;WdgsaTTH0v4wn9!lh<HLOVSisd!MfJG`GF(puZEOgR$%&
zK40fQZ|ty!xfb9f0X#pcyxsS#=A^hTXU2ea_3AVkFQF-)4iBZ at 6+%88p5^)uS5B|k
zFda_z>;5*%4d`+`7<1C_Em*7O>HZ$Rp!=6(imLdN%7uRR5NY_-0{I^P3+6e0eeI?3
zlA;yb<)p{kMoD#nKl2N)Y5i36p=P6>{%e8m(^9VWJjh_BIb(GMd4#`SEeE#`0bc=q
zG*_$+maZu+3LvLYp${WlKZf7ZXB6_&hw!ErE;EN{SJqe_UZz*Hmwvf8UZUk3vvtSg
zA3m~Xmi2?^?Vg^9nFmunjSwypCYA$ZlVomISV4K#b%%!Sai4B-Gxfa;*MI)?`^1V>
z!P4si7qt>p?ds7kF81iU{)BoJE>;D-g|2F^Ln~m^T?)rkuQ?(m(+Yr}P~I-8yW1O8
z*Il}<Bc$DxMMqNW$|5WQ($@%=pNH$Z6w`r+F|%S}sdQ!PHRp_GX079)OtNGFB=5xX
zY0w5ENT06X)7y at H^{-1X8rohoL9taGQv6u8%VplVUDt6cs^CY)U#ESY^|s~9=mJ`5
zhKzoAsD6({@jLXSy$a7VW*(nGX09j`KAVJfU=zj!(}z0*z#DP!8(p4aM2&e}a at dNp
zm8F>ynIm7<?{5OErhdO}&n4#n=hqq0Z^5mWOXv9NH9BJ*((crg=iPW#<E8c1Fzgc)
zk{GY%@{&2`ne{xa%Y27r&`-baS^|dAvNh(Hku}JAvNpi}2NhPK4bxWXKZ751Yc1t%
zc)eG{y$1a@{q at hG1><u*nQC`=(Gh}mP4lR3{|M>)@G at H0)l1-jgF&$QZ9SMDKg9VF
zvZ-JtBCwr-Dt at D7v@8DvKbUjHhBqD9QT#$7!TEcnmR&@Xq8DY^BkpSSyZ at iP_kfS8
zO8@^aGor32qN1|a5LwrXNgxy}kOT<LNWiW`NCt?ck%VSt?FIYl+7(6D)wTCk*Iw4%
zR#(^F-LGp|8?NpDe9nE&y`Q=F9+-q+`Th622s87Z=RW5-&*|mfDWkTC?F+{ry1pUy
zU9^n;`(V`>ju&$KZ?w-BsmyRHqZ+RnH-vd+*1*sZV%08T*f6q3f#~~0^=&8b{WMBD
zNRwXF;TAYULY{f*Y`dWA4%M|b=4X*S4Si;8AKSAf-9Oo7Wj&zg&)TLI$$Mk_em#3l
zl=cky)lUc5wk at g?HbmK9Q8yxShkny}?Xc7(erb|cg%=OU_DE-w%bDq0Ode at G#c1;+
z9v%yrenZM_>cvREQPx8WV6 at eexq+zoMD=~AYc1S1i$1$%Jxt8XX_hN`q*sozu|0IL
zF6a_Rnq^~IfRu*9?{3FS`9E0Vow0%ZCt;0c`>WiatR&RF(LE+4)=F7~U2iFVL|J)X
z<Il6)IolGnrvuI6i037aRYwQy=@@QLk(a%+4O%4cO&K%!Y1Tl)F^uG=wB$LNSKg!C
zCxKUon{nb4)%Q%i{z at s+HEc7!()!!tsJ=33DiE8lRek$e`+Bx;^)-EP5jrUe!?Zk}
zoT?1w8L at I-mF}LLEhBosj|Z!+C!x!XBT~OJ6S>rR@>1SoqWnLy$G+yh%=2Z0;m;p#
z)axe05D93H8+5Y1n{7jP#h!{;58t(CLHc^JL;I_;9_ZVasE%eRkbL02Ib3otH+vHO
zHinSr;i2^ycj)@1S$`NMh4mWVlNjl*SMRCU{5!Y2i!Gcl+MZXXzfShkNVA8qSam%G
zBYZ!}G+SIFACdMM+799g at TOduzDPza=!>SLWTv2<k<3pae^v+OA69w%_*hK8^a;-e
z5sc{p{YzB-mAL#EnI at z@59CJ~`7N|f+ScY>Xn#5SoNoj93R7-w+(aUga1;Iu^UmZ)
z>L?NR7p%r}{X=>CP_Nq<`53+K?{r;c9jTu#`gAnDef7GI#0UQk(YET$xc^KaESq(j
zp<_(>v~BD5asQdgOA!jcKO8Y-27THRwXLtbM*v&B0Pj4{vMPChzuI!A>|NM4i^nFB
zIzOi8C*9J$lP7U9TlUwF+6&~3gfsA;$p>lJ?0(m at ARltZqp+n)+g+^j=4H!8sq~Y{
z70Zm{pmVY6ynEF=b-vy$eM at rs0-Z}#XOSd0FFUVIrTZr9lp5>%>~hVNtbC67tRnDP
z&K at Dscciv+GsF;Mi*(B;r^dV1I!5)pcBS-U*isf7`<nHHaj>TlM#x?*{*(Mm9Fy!J
zU6!o02J at ye(}@Y;9W{SH?nu at 5qUz(e7%RzTy5E?>_KnnSS;`OAHtMu(d at E<|%dEXb
z#;{|tH)!g^;V2XF^vMj&-xs at 8b&j$1PmTxZ+JNZPwE^j;<;=sP$S}#20gN~H+zg5F
zyaS|8y6398w>&KMm&9?6<UaCnw6<G)a>~8go07G*Sbs9A=O?N3S*s>$G~-Ixw?ysx
zx1<qycry0cV|(90|1>(e8kP4LBA1u<lm8_2hb}2!Jio+3rr#XPD#C-o2jiz5MclTn
z<E^ig%F`%Wu}r<?yE-UP!+YTRI&H@~b3NMH#d`e@^4`=B)Az{!`w{7JJzKD?qr(RA
z9OR!<`EPUN$N7D2OKNdcex(8tl<;5qOVBUnCs+T#0!ZgCUsqtn^Va`+mH$XC3+)N)
zmtF5%d+zU`{?9uo-><J2A|YS at Oj7xL?SFl9U;p=bF=IC=K(?=W#80iP51V??OGJ8M
z!COM9|6<m6AJ#aR<l6^6mBJ~UgeGQ;8MpV*_U;8~8%!RU`e)j#$hckW-<0&<lk49o
zqwjvTxx3V%=(&nuj`-I|^(i-VL|GXPDwOGK(7xZQ_AL~B5&Ob6HC!)|G3LRNS^<&8
z670pGt*P6>cP7 at t{I<rK*4<=L at X^GUOIrM4a`_}}w>}`>orv>j3vu2@&kKy{c}gn1
zt at L6!OTi|Oq2nyo at vC&0z7sK5$kidEhcQkaFRPAqmZ at WsQ%6BRF-8K;oLN67q($sV
z)=@6k)~SwC$}64INBXLfGE=!TzKSj9YtYC1S at j$)d&R~UGfr^k)7YNZc1!obI3d19
zX2zHWqSN~g{_{K(Poq;V;t3_<?WZ!idnb`|7hKjBq|(<S-gt2{V}gH(&gZt0|0GNj
zzoNV)uW?|R;qtgYM)ydK6dGBT9 at RrOjEhF)u8E9UUYKf0Qkoi;L?tP8NRzf_IHzfR
zn$&hw;G9Z at e-^4G^+94TmGwwTlaS!X3Nt6`gU(LEf%s42;4v8v;h~q1b`w?Hob?^8
z@@J|%pY1Yh>En79VS`F4Y0%(|?y<WNZi2 at 47;lz7f`tyVr at dHpH$k`QpUpb!Xvx66
zY<Gor<}sB!J+MK_ubwY6Hprs;0TCN2d-z8c1Eb{HDe~86TPTt7o2$(-WzzU~th8A-
zCi-{;Ha~|*tdWLMMw)wy?t?XsMTkgztm9~z#~zJ6+atP<?O9Y8v3E?5rU)tTF}mj#
zG7bz=P!8SN<}OdWaIokp=nvy$Y$xr4-*%gQ<;q}RIjo!I7^NMN=!lU$a4amLu;KXR
zO7hK^n2%((i0r&b<IkrYq71ZeDgQ~Rqc)ZI^`so={?n+QPjySLD@{qXu1kw3Lk0P}
zTXo$i`}xkg7Vcll+$oj5pnIYN0-e3JZMq;{f5X0&*X(4U<dx*k-?X!^bB5~d9oK2b
z6X9C8u1CxM?x19y!5H8U)%hpu$7SueRi%HQtkPe at no%T%N<i84*RYz+y51;RV at JLn
ztKW}BeOqQ+c0D~(uVhxyOD=y-b!{f^5l|K0S5^yP+7OwC;>>xGuJ*~k83qWD?OhBZ
z&s&x(=03wz_Ig|p*5Pn0BHfJ4fpXeCOnz|f!JWKzm|T0SUVEFoN4&8<PUg2q$l2v#
zk~}m&Vvsb3{+c{889KgQP93P9!%E~o3FqTK(@)UZ<*7kGVfyA_BGOyiykNd%Y&ZMv
zk?~6EXy0u)W}7zQMve2-+&KO9zi`4C)Q at 8|&gbJ}B&i>~*PkkrIAx6 at h;ww0 at ewN|
zB~=pd%c}F;F476#6lq&GDo1CcZ?1?~W%}W9qN81PyhA#cvR;SfYgs)?oT`|)&;4Df
z5B0nS3$YT87yFh`&vC5s at x<0t`Ud2|6l^p~c*l-er7SHqtukg^JGqfE>k-35*Nv(Z
z_f6O~KY2|4f^;1@)!O6%>{_Ba{+OR#V|w1*EnS#wS5R-pY5VoY((RHS2&;EFb{QS;
z{f9cKJ-NGl2z`~jCov^`KswR+{(k?<Y7c(c-TG;%zL!}{qga+OUoiH;Z$;W39h{%v
zq`zHuejcehdy$<9`6+(uF3HXDn>h;yyB<~@U76O6v<(}SUt04jBQ2_PuTG{FeP1th
zOcEZ#f8joij4x%Zu1iC3Or3naqsktH0uYv`q&19D*!Ph=yo4d3oD-Ej(;;&2N2E75
z^$E?z=mGMdg!gEC!}AfdDe at t2!uk873-r1T>AIzqQSou=u*4E7tpm!zQ>yRToOK{G
z9!?r(jp-?K)sm%*2jRYc+8&-Q`<HN|j!o8BdGyKYlU6#h`@)sWk60zW%S!!wrQcp<
zHMu!cmQnvJZE}H#PSI;`vTgn9EBBK5b!y?tCw4z+rIXX>4~|qBo(JfjZJ1Bt7=Dzj
zdCK9<g#JK$fH<F1eVDczdn0?q<-(V!4DRPJGNzB0J~ei>4%<a3*(oS0%N?Oq_UJ8o
z&f8x8lc2|G{SS`+(VeX1eTrd4ETp|pV+<heeeU32IQW+i{*{A&?ciALjEA&`Rpod{
z`zJwTU!*;=s+qtO-5}}p;HFqed)*uyztIv8X)o>I_`TA2NPBoHU_7Kfb3!ooMcP}<
zA#d-{&AlY;^>oPNX=3q^_SSar-VVN=gZFXp4PqR}6H-zRd#O3*URr&h_BM*i<EylX
z-v)|@v{w-0XNXve_-T6CcZPrJpVyH0|4@!IU$Cb at +C~I(539W5haA9Pm%@V3=D(P8
zJK$4Hh4#F|l;b7s6~^rGIqq!A4M#|PDRak@&&_?Q@^){D&%~?x&Hbgq-&fuu{UpLA
z{)_oP?QI^@k1x{R7BRlN=r!q;wj06R^Xb18`7LAe_$uvf?cm$Q_<2Tu$VaGdUys=t
zBO-5Q43_eD%nZ+!FN*2+^_0YTozWxtrH$mp6iYg|Q$2*28F_mLyXTqvDfR2LHz=mx
zj~7pi%niLHKj6<(R`a>Jr%^@H9!{dfLt1_&I!@u|og91 at 2Os9(BOJWk!ACmy=or6W
z(%Vh?ivmr+FnwKB$`iN^tJ*j6n)b|U1`+>l+QV*TZkQl?QY617eVz7pjmhKdw1=Mz
zh=;US9pk5{e%t<>qnG`l{0jZ7UAH$}5(0Z(jc|NSdy`}OeZGf-?-k=mtA5)OTf44N
zZd(+LGZ3CpZgb|hJ~scSy?tW(@kQF(&%rYeUgO}k4xWwiAJk6!oQJ_Vc21AUS4zD#
z?Vhf;+4lAa!^d{JT(95}N!qKA>G9J$)4>~Ke6rMA<S*7C5v>0oR(`c|TOJ^j_L^gQ
zd_K#;+Z=qhgU at yF`7vH9a}e17X2kxzl>bM$EkEZg at 1y;iPSIh$r0bxVexD!W;D<W+
z0tY|b!H;rqvr}qp<Nwm$aSr(t9Q?!>zfb)zTK%veMUeKN>OjPQoAyqN>A^Q?@AnS=
z2M0gf!OwN@^Bw#m2fx_C7d!Z64sL5*t}D{sl at 9r<9Q+ywzs|vLaB$4<;vwzb;^4PA
z`0WmUr-R?+;P*KAeGdMBgFocpkHq+<tE0Y$9Ov0=NPCaR<ndkFd(y$5cJOB${5c1I
z!NFg2 at PEemt|ncddY|m%r-nz0Y44Soyq~Vu9Q+Ljf6KwKN*oVq?>z_qz`_5|!T;^x
zA3OM`4*r>gf8pR?Ir!HO{!NVEt@%>0i|?QABq8&0`V{&v?fu~3Dea9yS-eYoD>?Ye
z4!){`uNLEnuHla>iiY`d;#`LfX>awId`nNiKfO%*h1~H~&zL-Pr9Jz!D683jmHD+p
z9y^rrkoMMd at IDT{frD at 4;F~yjfrA%1xP1~<ZW?4B>X6^U!MAeoZ5+J6gBLk?iGvSx
z at If&?T_zwHm)<?nPwQrs<g_;=CXcUW-sj*vI}8=2y`3HM!yJ5sgO at w_NCzM7;A0$o
zoP$qr at G1wN=-`ta9KW;}4{2|22e(fJ%DpD-?eCDE;^0#qyw1U=Irt0*H>aX=jg(Jm
zufZYT<lrq1-s<4(4n8-=FOc%zP1;G_;_zfzWWwX7UX1Pbgtn7*WY#PbD9lHWko6S=
zJMX~zv^PJd-{%L#_^N9`Psr`sca?BCoe=9^CL2B`#`jik?Z?#!8P&6a|1tPKYdChu
zbHhy4b5Sn#W~rX7BYdv%Q4xNKa-HS|-yUIjMYpJ($0`p5_05UO=S99a&G0eZqWmnw
zkBp`30_8;!J&O%LH70+B;b+G9waTSf<b<1*>n(M`cXue~_7q><t32w at hYi0l7Vi^=
zU(u~4(Coi?PI&}-FDZ|v_jSX070|!(UBe%X#rvV*-D2hTKZfs-dOZ^H66I4O{CnkR
zMfgf<1MCshJNxx&%I#<S+RO0WQ+f-T#ol_#1E6m<GW_|N{e_0liE;nlY#B^Nf`9My
z#u4gyPZ&MXQZ8q043Fln=WVqPROlfK(pF~pc0~NQ2O1vDMbA6k at Zy;K8-|y}c=z5w
zygKEJ9Ba64ywO#~>*B)>MEti?4IdWchZ#OR#=kK<+B%5+rlMfSGB<o+`0lw-J`Kc%
zinm9MA7=QTG5(0*d&T&=eSr3j@&1PM>WD8=ZFnXof0g02G5(n0cC|J9`UAty4S~Mf
z!4%~4V*GH!FO2cm4Zk+VCrbn0D at Hx9Rd`|Qi{P78^xcVue;MOf2wyw(X~3<{w~hQ)
z0oUVD-XU`DTVL;#pdMNIhlCfVz7FI~w#uiG8-f2f;8xFT!uxvX#q?|`Rjx4gZ6I&;
zTyFSx0hj5F3H{{WslrsaPipx^hW`-A7wWrBH-)@({TggPeu3fLVtnHQ$fsibJj2rg
z*I|LzyD#M9e4*hh1 at hL;mBcXXLu(UWR~KHG3ink@^~+0z_w`OsSy_AS$3}kDK);ng
zRyv}--kCA^XM`7~!hKjPKeHd?&yLC8B)l*c?$28J3F5%M-i0ywvxFC>!hKsSU%WZw
zFOJC{B)l*c?&n(h-ZD|`>s=a?-(PrP%I+?N_w#&i<S&oO at 2~~rdk6m6NgepK at V?%a
zG5J1QLO$FVw(?gC at 9SM1lmEiVhx^4={sieN`g+&J<ew2<m<soiZF!g^T}WXn+%KN0
zc0Mb7k at vSik8DGju;n)3j|AK%@DSm)Y^bPtIn}{06<(MM_oHpR{iMP!@*WNJ+jtK&
z{IP)Bc%KlS6z}&A-o1aa{2IawQ+Ag~o^7s)z<KdS-m^ixHm*m7_w^1BxM_ann)e*~
zKXUNT9lW1()iy5n=QIaD-oc-6 at YjSFro#R1MvY{RqGY~<@FaWoGV)v6?C|fw7G3`o
z-Z%AP;2)chUpe%=>ENr%5TqA7K;LiZ-~%0eobbX_xDP&7_24XCVX7ps-|})9;v~hJ
z6<(MM_qFd(J#QNx?rU3KJ0MxlAB7jD!hP)*RL|zJLAJ<yAm+D&4Sz7;*5IdvC)xR?
zgMTW#FtwAt+&udeQMX6~xX61b&~NkWLBk&oxV><LLC`bIehfxDql7O?Jr~GZJ-;*j
z?=gOx(K8~@lTkl>B|Irzy#^=qtsQ*0gYW6!o1T`ezri6t&%sX=Ug(AA0nD?AC2fCo
z$p30ca=c?5eEqfjanw_*`wqKQ{dP3u11~F-m(v}3E)tIM*n%~D*?(wGyyB4m#KF4{
zO}4+UgAZ`<GU0`(U4!z_Pv6aQ at C${*{wZtv_S+qu+lBW{-4%FZ3w6cw4*CBW{ksM6
znrV()Q?Nbs+!NC?UU*?DE`N~W;du!emYDD-;jptv@(n?TuO>X8++U9gf6L<6J0$xv
zBOH2KRF5XxJ6`z$<>#oypF8xVcJ%cW^!DwTruGaLo>cGlRQXd>{x+5Wz4EGceei<v
zr<E72=L0L>O9m>i{}bg_zDoI1>-+M1sh)$B7xnSML(0!r?)^HKKWOzRze?plRK8#X
zAJi#dXJ at rXxkm4mDetwRFDS!x6WWy*DYyQ=RQWLF^HlyZ;Yt47U>85$yCd>t%7<;_
zE9j|uW+|^yuF3PxRo<ffYL)LbO!IeRA87UVrYkQ}Zr1~kS3XSn4*q4{RmvAAzfAda
z%8NGffo8w=t?;Du77X|8sZ#krsh+XI3saMWdN)q_1;Uf`++^hU2;^t0{C^GKE8u;V
zuQLMr<9r+8D2LvrzM$PftWy3-fzN-hdYY7<qKffsT!b@?{(XXYFZQwbxPz}$27C4k
z<gJ|>JNO{OGl9HK?~xAvjNvsg`7a%OgL1LQs}1Cj(sy$V&juX#QzN_~9DeJi4cm7<
z_SUXYF7qk`JR25a58+AqxW9wX6<(MM&o$v$uLxBmef?8pUV`vy%70xXJW2nv4!(*E
z?33hoaPXPJk=|&$cPJkw<9CE}{1<QZX!x@}@SFALV&Ty9y2>w7`3IGsvYiiX`Tt0G
zlAWtnsvecMGw>n83sd2Ft-h-Nb_d^i4CEUFJ1^FEFA0a8pA`8DPEkFhWnc`xpx6iY
zMA5av3scR3o?BG at Q^RKk+_uB#NCK16wMckjDlR`}Ja~BS>k7^HgM=sPxz!>6f#I_Q
zdlqZM-7-P+dvgPB^Xn1t)ck;(=X^@qdhF`^p_h!`5eEA&-d4)1l;hc(2=&S at D)m1P
zSB=LDFQju~Hr}^Y{u3GhBA91U%IoS?u;-A#o+9(DJR{n{M;acUE9<NB_d58_yTP6X
zf&Ra${Y}Dq>9zcFlaW6>kT2GE?>Xc at GV(T+o at bsHDGE27h<I&j(&sq}A7l7&fqr}C
zW#Fmse41?!cdkz6&x3m>26`50A_h*<e3Wqtf<38og788*w`ONJHyeIhpyx?__nzV5
zxwXl at I<J?!DfIpj$m2PJ2-Aco`E!ngFLdy89r`~7Pn{ja+w4c{joKadoEz{v_1!Cm
zpC54Zd_lRUdJpKiDBw at 2p34lkt%Vny%>K9G;kh_FvmLM}^n~Z)?7PDZ56{KDqA@)V
zPUqtA3_pZ*Wk6V%x+<{eCLeoK9Q;bduL<Ng)^}ez`0%}<|GGfl>R;&KFBl%4ue16K
z_ko@`Z#3NQ?#j49W4hV!TY`A)iHDy1LeFgh at 2lzkt%DCU{Pvi9*1?ZA{LVlg&*MXQ
zS$I<U{My02{b1)^fu1vbHQwG1exu>{1oHOxRaV|VIo|QY3sd(6 at _4Qu!i5g`8;tw|
zfjpj>htNGEdc21Mp7pWU&%w)tC;6e?!4G!uI~=^*lw|$G9lXiGuW<0&9lTpja=aTm
zc#(sTckq*h7t;C3Q#?PsWVmfLJ?};3eWya+w!WT+=k6i22w&tqo$^1)bB6WJlSV!~
zKWR at Y{9yPC-K at Ml5i+0_`d<t<o_U8b$MAm!{NMWS1;cG?<OO$D46K8m*8=(R`tDT2
z-w5~*zIyK?!`}+{x5~##!7KFM3HX1N|Jm^OVtkEhkpCdYn+y-nNq(eyo;2L1#(xeP
zzABy$Js-#PoNoB1G5&?&p9S3N-(v>!d=c>PHQxKdQ(pzVRQaa$kpDX1c;*?x48y+(
zIG$aGu-yUB^IgCf>bvK`={%$zF-(~Wo(jqdp5uk^FnDTAz at Jw=H4TtoDd2c!7sB7b
zQ{w{uuF6ksg#5|@$Md-m9sy5<=dWyz);2+Y)j;0<{^O(Isqh?^m9LWyTK2^P`BIH{
zvli$n2>2pDTJJN%dk5UE_1!fK^5OZ$GgbchR`3l1c`?I;z1zU;)%t8J`DTN5 at ScIZ
zo%cN{e3AE5!0nskW+%5NCkvN-B`fBguJO*81HMVX576{(KQ~!VR(K(u=R8pL6wQO4
z!a$Gp+sEL+FO2GQhUA)S=7Vn$$Xh)J%9}!OtAOJ<KM30$g!DccaQo&1;f3Bd_M?Yq
z`5>%&2zdX1U!d<62w&tq9&rB#W*Pqq at 8w^b^Z!bRik?(aAa8TJ5!@>YIG&?}kU9+V
z0|Q>}V{cz at FFc1iR{ealkq^&X)~fuZ1<+$hANs5s`R+f4?-=O6Ugb~u9pvMDyTieE
zj>$jn;0;GWepn!Xo9bWfNbnIce!1b{`ONcG{s9Mn)9~=zrfr`G9tHhzezf7EgLqF>
z{f|3%@1wB~cw-=M^K^g1{}SVu3olGf2>2+?mz9r6=5 at mRdbb4fR{zz8-x=depvRjO
z at Z(kg)MLTJ^PhOe3BqTF?;Xg$uH~xwILPlCa6Eei;cdhB4>+D5f>3 at u<fjDOJQGCt
zTi~gw0mm~h5OzEP^5OYUJfj2Qal at wt@_5b$!nO;cXGXxSo}<D2r{WqpJpTe={S(0(
z0(m^c0%5M<O#y$%$KJz+w*=fggF?Pr?Ih at F4>+FvfH2AM at LVXKC4q2(;o<pAyYKU^
z;o-SZJo5ozpOcZl_XYZg_}F_&xXo)t=H+eSvR)C$TRnT7;?HM48R<*o`40$R3Qy8A
zS_*a&Z*%aQ9sEfL?{gaVO>D33d8_*7cmsqd#k-4etS_A+<97txo<Hl5{{i~F!va5S
z=U?WPNJrDxTM%#?S5~-vucGGV1S5~T$o()-U+**g$bk1z{*6OVzuzOhM+fries34U
zj|sT7VQ<5a3;33*{}{uM54er at MsROoz-OuamNMb$>zx>ID}RCE^24ASv{-oW8-7}h
zm&kyjuXjd_A8hzpG5(<8=f-%iKR}P|{p38B#=p1Wi(>MN4PPAN9~u6~fS0MB(zBrd
ziWooG at T+3{KEtn#@zu_To*M#g?VM!z%`tv~;kU*3`-a~U<0a?F-l5u@^D;HtR6C=w
zrgdhfH9Nh&tv%b?zqZ!P>|NbnJRp;)sXJhHTYF|kwx*?W!q7}+deiJo?Yw!#gEN_?
z=GMlVhD^O&QPbYsT3J<F-9BhewifSet7|H2D<m}3PN*)*lx8x`Ep5f6nMx7PG-TV_
z%w-i7b0%db6=kZ2XC at VACY5CR*SEFS^e>XwCsel&$xNJ at X>ZMDD;uiY2e#DIw^ojA
zXs8go<ce&AL{!|?URhm|5i}4wE9J`?11d at eX2xfxXWKLNO>NoM_RQ?2`dPEHnU?0Z
ziiy?5x$#I+kfP$^lBqRq^|hI{_SX8Q>5_!@;^NvFHLYSpO?`Wtq{mNGO?Abt)dNX~
z2oB0fOzo}BZOsx{LvwQ{owY1qRS$)`#8)|via33UBwezkEnBhd3 at gr5R8*IeI=EfE
z)v5fZ6b$uqJ3DK(l#=#l&GAVYNraz{oJ1^FZkHg*jV%o|wb{%J$q1W*F%!pDx0e*R
z)Msn6bL-o(ncC(i$==zu?V0xK_R{v*Ee+YqF(?t at hVo417!+BQu)((Mg~i)1Xe9%J
zZ;Y<o at 5@_uokY%*LTvL!-r90Dv~Bj(Ok+)Z?Tlr5c&w>C`4&vyc&Pzpk{l_elK6^T
zYpe<RYAl9h1D{C^H#N3;a7MgZG_ARHZcS at l;DJng&GeiswP~-;NDZ!$+G(mMd|g~(
zb8Bi%?aazCCId{(jCxS=PYPsRw!Nmlp`<7?F*`jwZ&GVbQ(FVtoDovWE6KIRCDMjv
z=Y=)4V%*eX^CwYCQluuEE3*}~WNFvLQG{eIEsoIn5hDlJx7D`KZxN#=h$EzRGpQV3
z(>Ak$tX#eZF>Dm7q<DvgxT(1=Ynn_)OgYZYuYE*w?6=m^vP>8n^e=<UnrAmj`)?{(
zP7^*nY{KOdQ%VF?EZt_22yNb*;u#_hK(@81rlEN72-~-ftZA%osL!?)7mv!eS4taD
z(^Q+Sm{TFL{(I?iM(y4eTJkldw5%ap(;67qRxzi4ZF55%y1vk5Lxb;!3~!x2p{6k_
z{g)J1TeCWqJJLW57Vj=Ky3*>bG>#^&A=73z)wb6+H&u?DGjZ&M>P%^Mdrf;*8k?nR
z7&1wcSJynZspCqD2bHyEC5rN_blwwdnx<zf8XD at C8ruMIPesF0MT(0$ps%=C6t-2h
zHrGjCk>hfyq1>7cU{6xUgn1Yi$09gRMp*T=ZNWe#+7iOUK~IryGhH#UYGj?1i%eym
zw6k at RH51Vf7Y_&`oZM93E?An_l1#LT4NVP;TUm)Dx-*s}WI^bFg!))Aysj=N<YsJV
zhidJu(z0hllknxhy6m)?*$wT|Av9#$rQynPf0&RU%92uPOU<A*h@?_mhmJ=kBh92T
zUtH`L*ZfNAAS0GrjctR8(XG@@N1{Skl-j5gyd6pn)+S?lb5hzHXV+Car>0 at HbX@ge
zQ!J&Xv`z+nrehBJZW;5T)u_(ST6%x&j}fF3h>sBfr2v=43UFBM0!K<!pwipH5tsDA
zc}@jTrA(HU!#3pIs07O=Hb~tZ>03W4!FqC1#k_3oY)qh*HFU?wkg_Gup4r$qL0m{4
zsU88#0Fy>f7}X4tQB7k_eN(2czO4o0R*@c^DK5^8$A?U#3?WdN2BY7d-YSEAGh(c1
zYOkC+ZmKAdQYyV{OKWpWIJMIu-O$Yc^C=GMXjn{jb{uW{F=3uq>u#Q9csXj^t|Nwz
z%VZ{GipLd~&MdEQtC`x6t*dIyPOG0+kvn(@8o{J-(7=)PO<}{^COO*i(j+6va3CVx
zP1w8#BP>)2$>WNu>gK=?NzHUgt~o&)-MLOEPs1?A3=Olc#q6vylQRrkswZ<tlwSXF
zWkvXJApRSQ|B45g&qMJ4pi=YyAoKrV^S}AF1aFJ+pZPe*TwP*7iTSR?C+6}Jb9srm
zyu_$2F%b<g5f3mL2KdU%wFAtx1I)Dpjby30w$zYPqpj4)l$vWx%~hpF!yxm1P_e%x
zBeUP?7OCDC$Jb?A+FNDS!_2zT+6K+oz|4e^!@2#9H!P+hno}{3o4JzAxaQiKvPRQT
zUpv2|q at tp{v|>*FMLIueTQZj_JyJ)!!I;5HhXr0IwBZ*)7g_AL#b%CIDXnxuvl^r<
z)K at Pxr9Mn@_(f+bCTbme%g{PoPvcYZxD3Te-2~^9q&2qqw;W3qp$S0|`g!&X*3g6&
zETQo$E0uM^;*4K&f|L#N2ST!%XtjlTZHF)U_`2iGbwx$J8KPiy$Q^gXPdao8?Ft+=
zBvV~m)6|reMdb={Y1P<T86Zm;EiUz!QS4x&t$0Y={HFGrd9u`u>1xI-sfcqMnrmws
zvXN|%wdfJ8vi6j1H-i|_PQ^anUSS+##xe;8c1l$-=RuIx4y(fAmW;5v!YW-S3su=R
zLq{v|FKltGH7nz04bLr<<K8 at ntJQ=2#ULzKgqmgGS&sQdMzmmWz^p8WUq{TAA|s=3
zTMg}(ow7z-RbS&^t=Neg{gN5%8{{nMp>f6x&sS3#QDc4DDFew}zV at Nf)@Nv at thuqJ
zzF}GA-PW{08MEBvS0S+}ze*={4a at HJ&21)+G7a at pTWeb9%V43t-Sp@(r7Sf|o>HfW
z)HP at 3*4Jg5DzNJ`fxj9mUp3XVwl>eLFk4czGDbtPSZ_UG;%r%U3RkN9sxNE$Rx&fA
zrl}4-7&)~TBj2$86=#Mw&F at f)VCtVtl8VeEsi|hVEO1V&ZXXIonYx<x8gZaBVeQ4T
znptDMmi7rdX3|87VUu!3PExcx7yk-MqTjq|5{F6(>zn2@&&-+yu`q?ZnvBB?u!}vM
z6a7!%VUB+VdszB|ii)oBa7m_2b}c(ph=01cyD;6I?9sc*?VXAKCrrIxw!19jJDPe#
zpI_>K<T+=FKj)PG>&Knz7XL)?7MXbK8mi_ruAnB)A31Aw{{*c#$G-xT7*wdAD2X=y
z6`Vv<X at 9~bBK{SWMBjryT|wpeS6~utLHQ}htccsjzk-waQx#O3#10nJ&W+l-s3LYM
z@($!*hxK=5=5;Fa6_q$!_`9m|btrK*@)eo5pDgG6dS^R_A9wU-s$pGLjutl0x8t}j
zpAGXkW*JjO9A%P)l;vC3kesY-sHm-w!@Eth8>Gyv0G)F3wk9)uHjWY2)Xth+-zw|0
z#9HN;hb;1SpuBc=0p-VVs4UcWxkF<*%}SFVoR&@Y+SY7iwy7P5{(=*>vUyYIubz61
z*~Z$I`FLq;o}+&Lk*kh9sqG)>k;OA9xI?jaFN;mnnoY42<K_HFiyT6jna#Ax;)ZNK
z%3;&eOm(KcUQY2z36+l`I;q+r>PgkCZEO*drn#8s<hY~0X&GKJ%b7!igTHcS5NFC|
z4N;EFPpxUdS;DCf56dyEiPczzl?kO($MzYrm??{*QrufxYvyN~vUBA)eAD!Hxed`A
zdJnb{^E`oqB_pxEMh at gnY?PGA>2=xF$kfi5nVBX>W}$THyH)mNWVud!^OW|dt2hR1
z6XhpEPM)_mx5_4spPV1LEMXBAhg6#7 at cSIEe2@NeE~3BOv at ma8M%G;0n&nVvef#{(
z9KFLpw}#4txp%NAT~c3XW*JfzRY*uF7C`Gv`!3~2j{JwYSzFWQuWZW~`K*F=s at q;h
z8-?Zh6%x1U(wDI|$;<X~ym-97q;FRIS6GM0BkeBoO-H&98@)8ad8{FJv|{^1il8i;
z#v!ll?MM<Zq_E?rWq5G8hZGu5m-c{3I%)V&GgWTK at iLQ}=E`9wIaS{_yKzO1C16b+
zg`rD48SD3#b8x1%=jKjg*D*v+&`+4%&@irfx;;!|YPjq8e4>2C5E)W7$emK?wUfK3
zWnU-lo!pV;H^TmotLc0aw<(LvSN at p*(>s}BQqzE)&Gu|2JFhltP7V0oR`GyVIpS2`
zC|{sElhe at V8a*Pm>&TJS6>{U+ at DbxGbc40Hm<-VVWYX?pAafns8iV!yG`YPk8hJ2k
z=aUcEKFmlrpUJk>*2vf>TiaM;8`cgtEf{jOX8qfxYG%)?Xl!iM{<@>8hPKRZn<3+w
z+L>newzD}R-l%J9)@@mJjbzKbda1q1r6W9RXa_LG at jEKK7V&jf23w7 at MVXYg+L;kF
zyU9Q^JPSrLZS&<W$VNZw>(!d6a*VtwBW0y_hLWr_Df)R?Cfa(E-xw>9)?rCFA`8!U
ztENf2Qxy%rHA9!g%VH{*wvV0^$<pK_(JoEY4!J at jmn!XVQY5Ced at 0`z#2qu8JpS%C
z1RbsqQnPB>+Ulp9+g=8m)*(z|m_q~24H<GoVaOzDWz2`%k{*h7{hdErfLpWL5^?bj
z<1HQD($X;BOvm^ZpemWsm_-&D`(xe}Ola(FLQ*Lj8Y1U5NvnTj(XO&MVK0c?SLE_U
zUN<GVE)MTU>Qvm}<(Qv#-1cJso{jNx^Gbb-+=<p&AuUU?;|GtgZ$hc4aNZ17JU~SD
zsA+AS+_DV8BHVCo&YHAUL?(k_o)i~P%(i6P>v1Hd&23jnk%-BFYWVc&(%DJ#+_r0z
z6p*Q|bd(g!@pS2A=I4LGcv<b4-I|sAu4?6e?y{=MCV9 at nR9rk+ZV=1XGz4PO0m;0q
zS!Vm$nnsy at V4|LMCpV7h6c6x^p{aDGxfQ)a&YV?^l>=ICZw-)0<tUHb)f_~d*fJFt
z;jC2yda?O($|y5%ME&$#BW)yQ0!z#7Tn%o?l1ZjllT%J|DpJmva&eSo73JPRRXm8r
zN62!T^G+%`fb7c5!BTIRvo#%?)DRBFXcDcoe=aOh1h?XqHMK8Aq_{}b*xQ{<#Y&9K
z-2I76GYxK}SQTTyS?=Fo=8`G##~2g!p0X_8L1EOH at +T`*_K3VWqPX-^?&eViy3m<v
zkadL2Y;&V}gIQ_7**SS6fjp3)A&bUVMl)H{E_5O$Go{p+?AXyBU$n<4gX0g;FJdEy
z<hwLo<;TB4)Aeoi-b~2R4JmmYsShj<`s}<e3)X&Yg6&ECKwtEW*cEJQp38RTAhtQ8
zAB$$Ww8d;oIPf2fF+nD#N6Uw-Kw#=%=1sPFm4__It^E~qmUU{q!9O94M<n?9YaJVp
z-w};bu<VFL%$%?_cT%~E+(5J{W^`lC&?LGp=+G^}SW$1wV)i2SR0?D`Ofs(1w!+3t
z-A6bKE(&hmrMrcb-QSrallLvd%gk4~rC1(^A}6$M&L%bDGKKEky<EB3Q9Lm8iVPO~
zo6D^m_2%cu6@&PSy84b at Q{7%yo}H6ZP?F;*3F9f-ecAG1&tF#DC9Vk-7R!?s8e3$_
z8(P%K82sDHgS-6f-Q_ZviQZcdr-wJPXdCLN#xl%Ub|tRQZ7q_@)L?&Lvy>rgu at 050
zvaMw;v;96V)HGNIn3b}}G(bB3=y&AJLFTyuI*2k)BdD)8V~jApQ~`gaTc%=-_>XTw
ztdEF}Jws22-b@^O;>LP=&st)cF?X{qyUd7~d9+1BOBA-N2`fik at DPIBMkk1^%b!2s
z*Rx=WFz@?0a1VD&bBi7Jk%FJ&4cNN!R991_J>}2cUabpZi4RIZ(v5*7bYoyJTFrCh
zD7^)qKISNINwMLA*!@rWS!!w}YG-n-#5Z}=%INqYY&VxSs_e{|G9gt%<N+h*aT%4O
za1PxWE)OEpJF#T2DE}hsF|nt5<a#`8(eiwthwJj-Sss4Pwqu#4^`KqVe-;<#c51!_
zK~<wWRfFCp>C1$Ez<>VJvL*zbeTD_y#u^xA{TAFmw~S{Mc0t at hx&x==Y}jC^P8&8g
zb7$Jdx1&`aTko=ifioVBjj|D?2lbPqg)l`cM<L|F5Od7=ml>^*9L}*9n?ka;)TFm|
zTVs=BL3d(=Wm81%?ZdOQa?5X{RIWxxyD at RBe6#F!qcL{`7`7TVkALD at m7QhpC$`Hk
zmu7t^BR5dWYM|V9DJxPf^DC=5^-QNK48QQ)Nj#`i9_N9a4qMu=C0x!24lS*4ng=|}
z?q{tmkhS?Yiqi4MoN|nfQZAZui?=PD$z>UbhHC2O_)mmeiV^-Uu=Er%)XwidSShmp
zowK5KQYGE<YCdDW<bPc{O=?iPti5LH<~PZc>S|>VrOj-8Iua>^0BHw0Yl{DH)!+#{
zdEOChPW8yMJY`>e8ul;dR7 at B<xnWL)<camKZG?aHxkxb at uW9viqChv_8fBM8elaCy
zQYuyj1t9F(R at 4wDh$^3_p~!vzxVP3ED{M0jy-cym#z?8mOC_3URasMu(+xJ4I&E3q
z?8e66cyouel*qH9tTFO at o$S1p){N|*cgi9;QW(=^cIP{#%?xbSO*qCN2L>ym{cDGx
z%HW^WuCUwvRPH*hDn8iglqxyO*Hu<QRTo&L2ameKDyyoCtm-0P!K!3mb+j7GksTS?
z$+IxcmMfL2ycA(Pss+6f$5^BZ7Zu?qygUlQ?EZ!0Ec at V(*g(gA5jfg5{B~r<PXviw
zog@@!3YwKp6>m8ehwdM{WI;n^N85wt at v8FB;H*4y!kq5K(RXtq9R099w%nRV9a!Fv
z0?c_>i8Im5t+|UlB_-17seF^1`*i3Edxos at S*R5_W|$6>%tE<2OwV0;hYN~U$XG1N
z&y@*sGWlyiJ8;x*sDGM39(s~^;6S@@`%DxWOk&0~X%ZI*t3r-1$cC?fh#^Ut%&qXO
zKwqW3$Pw>AjQ-^@cQR!44fNGcojpx7%d at y)#O}*yggNM#pgs2d{CH&HRgz%err1?E
zsSS&QPB?A#rsOS46<R`hR8(z6RV{9rkl}E>*&5HzlPC7nwqv1aVs-sQyG=R7=9%_U
z;>zIIsT^RH(R%JZ4}nECXY$L=gw8bY)m`(5&f3{{9AA6Je<Z8!Pz04Re_a@>wae3b
z at Y@Iem`YAO1&NA2VZB&#q<Q9SIr4z1nap0YGRu_G8GDqu%pM12&~urS%3Y-o&s-0q
zZu6@|VpY|Vo}6-$n?MfC%FRSAcBH4ztF^0<X06<wYt6_3S^0?oe~UZVSfI`~?<d=$
z!KrO%ZVJ{)y5=#tv?VOPo1d)c03q+pFTq4xM+xS)FLbC-8Qv!_C%z<~=L~Wg%5ijl
zg(&y$a#(@Nm(y~dsmVj5)aB-gch~rR*%7SJ6m)_Am!1NhZ!J&hq0w;-<$+l~?V3!;
zBZlS7g=NIh1=)~C44j6pY2Xr at W8D#^2DwWjqx%_T1<5{~uM?dp7AbhK%<q_@^NgQ%
zr8sd at FML?}oC&heSXm{HG_S7Y<2}^($+%;Lzi47xtrhm*^5h4Un at LQKIjAnrF%SOb
zdYebLvEd8<+KSx}Om+-T1?RJGA!4R<QrYZy0UAK7T<C~pTq?huWyV;6t8urPf5(~a
zHpTE|KjW~YkLt3Kbo!AMJX_0qB$A&4bjBF8{42x(Hj<yK17t40;vIlUevS@^_G&An
z1lUMA?*QC1Vt>c#=lO7Je~rFP4xBg1N%L%LV|^2TVk@@U_A|ELf2?b!rosIFQ+xd!
z`3bz(FIAWuJAU at LVY(nqkKLE}#ij)#I8BSLVgFK-Vk(Iyg*UQ(sp&z^)J?<Be?))K
z<rh*-uwH=$s2cf&(mHdCTkehUKhM_6EH~D-W#%@w*2xo=<abuFawUsr{=oHT-ct;~
zi3zO)rnm5Kj+W&=x!X?eA^gRbCbPAy2}9Oorphm!)X9^}9VwDUf848OPH*t>4moW<
zi65N)i^x^8hAho<rdb|mBtPoZ>g+s!=3^Ndss4h;GGhHNx=|MU^Djw1?_n5{@(b)=
zU^ZIlSpUNFa2a39HaUJPx29pb{5G at PsJz0KZe&>{@i*t>$B~kLbgrUes_Yew&d4t~
z$kzkRa=6&qCb!PFRSK7rh_XQ^CmH42oLfBo-w?;vQ^NVYQeV%shMMXAQ()wTmHk0s
zdkaLB|I<@u_hhMiUPJ7jmw%*ycfIoe?Lc#!Qo4p^?1yz-TorOmPR at avQxGt@4X1+T
zv2Ey{mYUqbvM<`yCcpRGm}zOPm*0w)lcZ*guS1EoKSp8~L35Vng1u?kyj{wcH&*Cy
z+pL)$#qUEk-!1!Ov54i~ClsClSstU37msan?T`Lp4Lxc(cJr5cpQYKZ5AL$;<RMOM
zLgM(HJYK>4Mv~0)WqZS}Z%masH&E)F{cR-NKqwDT!To-*RYO_k+;dW<Voy^YrP9e^
z&{}gC6ps?>a_g|I at bk1zkCQB~b>TtUF7;iPSyv>B&*n5hmz&oGS-S$A*Cp2dtev-l
zYHb&lywEynnj>wgxv4yMZ<{u>{%Nt;jc<IErGuT0AKg-a_^YEDaqG8qMg9cQrY@%s
z@&{?s0oTjurxqhSdHP6p-uRlfnda!a`6)5nTrZv4@~Sb`7&VcfrHVEFOEb~zN%{Ly
zV$gDGvU at MNN$aX}ntqN(2PR#n-T2dJUrsOB{<&-XDHDXqNne{{I=7oR!ZLScEqkOQ
zVlq0QCqm at R^YT0`<UjE+aj3F<ZL(jKXpJpTgXD2%!PzL>^CmYIC2hra`s|e>!L|l;
ze)O|q5^U|7qY1XHmn};<O+>!!BK?A4ask9oLFQ2a2jf1q<N_EU$>vxZX>YYL!<-sB
z^5zNTG8vjKzj?2Z%<OnUa%8lv<UhBJwszT!4iem9PwJ3hg?m!tS&kw3imNhcd}E%>
z`&5Kk*tCsLIFF0n`jodq%tmFKx3TjY%)NK=(DeiKN3)kx6K~#j`lP8 at whQ+oI;}^>
z2e{9&)4zg>lkq?9Bk=u#tEc2^sxdCqVPQ~h^DY~DmuaU{Pd5oCJq{yyaPPp8 at _6px
zx7M*4Nyp9e>^bPc4in at Fr3uf$Fr#I33RTtkRf%O7SJ@=@Vai4bd?3po;Z4pJ_4VS@
zU?!qx#-q<1EFKV~XM(J>4UmPl5v8^B<`wJhJ2}g3`6aQmb(**d<xy{1X!ak;Zys?e
zH`Gt8Znk$Ugoo?%Q*D-uW$UK_H}dNv2JDX~m>ZWPkFk~|faU at 6fGPiMNO&uFkjo_{
zxmjA-WKLu>m}T1)mbt^1k-3#}CyamizuG(>w9PbC<~Kv+o(J=YXz^FJa_P@&l(K_+
zx#b>%4qdYQ1o5&wbbMaT)cQHaSbp~p^98?jVs4JX at 0ZAZza4sjq&28B*X3G;AM<Fd
zPd1F|3snXaxBIJV`YI?K#e?k`#h{Luw9Ed()NE7j3|U{ExlCbk)Q{e<BHMrbNUNne
z4BBofb)Ei!=t;}3NoS7Bsmab9P<WQlCOgnuK25$o;fh7)ZL*q{-%ozZy2>WEpE~qI
zG?)os?j3h`ht(u|s6%ReXD_!kZr?1=s#k6q>Wrpj4|P<N+ew|#<lAI^I-^CN)18 at 9
z-`XzE!S*CP-3|YH-b(UUFYmwo!4JIvB;e%$;yqS2*zjiJ6Nrx?K9hJW at pp;05%*RJ
z^|L)|5^pE@*{g=~9PhYag`DktT6s#o{zCq2dY>oxxupM7l0TUEcO-uZ at ky(N@&1l@
zMmgdgLi|vYKa}{+JwiQ45+6^T)0-jA@(sjU{utsc|9j#re*<xrzneJAzeJqn-y_cQ
zJy%ao?}o%#zKl5QuOiO!EyP*=5aKL<K5>@6f;h{+s2us5mcNbs<alpKxGit#HGBap
zZ~1BwZuP9K9QCo5%0oYrzkvAG#9_}CYR{kuxB7<@pF?^^6NjFGs%O^-FIT>MgjXrg
zD2M$QlK$z$>xeHRzKHl{J$;4H!}a=V;+!u#t{KW-LVC)S!~b8(pY{J}lIM0{I?4Y@
z^k}wvZ;?F5yK%2DUgpCbyv4y!bnx38{CNi-x>jh<737Egh+jwiY~m*pUvuqH56fTU
z;2#rbKWx8FsE70MV&W`+mxF&#ocotUdWZUNCi at R3&i%-B#5uhc>xOz*zKuA`ufJZh
z{BFcq{vG11f1UM1JuH6<ah88YIm+`%l-_R~Jl!YM&+SQ1<<N7o=vkuUfelEW>*+9(
z=Xl3D_)G_%Px{%O<4K<FIg{kso=Zrc?YY6h?;$-L?=vLN at xDs(9B;2*`~Hmje?te~
z!NDt)N89<mNuKSQM)GV=8_BaDj&Sf(Ne}zsVv^^0uO at kp_ch{NZr>$6Y|p0-zRm^?
ze=3jqXLFKgJ4;BO?Ho$-Y|mH+uO>b0pZ!Um<2``nIo=aVp5wj2!EYx$9Pfi9&+$G(
z@*Ho~hROcihdA`uez1Y~S8}Q4vy{XC_mlkTB+uzOm*m<0%SfK>zn<jT{-;Qu_5YJN
z+y5bPw*OPo&-SmQ1EE;`RURvEB+vGjkUZPJ!N$J-p at -Y;laxo}J<q{!ckug2Kl}L!
zl4m<#B6+s+4U%U+f9BxdkRFbAjZOUYM*ETVl*11k?_MO&<L9~vx8?8%2R}Z-H9Nf1
zlt=S%G0F4z`AXtEe!e-vt^Rw6^Z5B;;yiwSGQ!J!cX`i8c$M<kl*4`=Kfgzu{kiF;
z{)Ld|c6g<NkRL$xcRS)d?rJCAO!6-&NB;6W`Zbd0@$*`JMNmT2o(+k!{>j91>><we
z=w9NS-iI8#M`36W$GgjBA?J8+AkOli_w(hWe)w8B(#wAMo;ch8o8N at -vi%1T=XftB
z&iVLH;%{^d+wEU%9_r_D@(#o~-lK_gy!R1*oAj6cHq_7Z|0e!A$xqP<Dg49oXAtLf
zP1!Qk&*?gsIOo^p4*nT&_QR;HLjCWMox2ie{f8<?zAuqK+b$hT@|^D%l045h7dzzt
zM4ZdX!mWKf5iid}?^h0gK0)?>r5x(sC;sL(z8=UQN&Iu=kpF=AkZqIY$0&#VzexTh
zhx|1p|9>R^vP1rR;_Qcq`-k?tOL{(64*zifHDEhmKFW7c4nJ`JHIn2{7X5Y}G?C=F
zy=^1 at 5!rJ#@lT0AOPuA`C<@cX^>J+nU*EwmBhLC?aqzc^v!7Ql4(;J}m~!G5Q at W-T
z|AKf6 at k@wbsvP-({?XQ>zeKoQcY2WYuswf|$oKQj_Fj%~E#BUe2)FXzk$z6s)+N5e
zsGS3p$I1`M^SEL>airIdA0|b(U9ZbTxRpPEIFC1G5r=;3w|Nm>uKqbJ!mE at Ys~qX#
z at y02{x%^)i(PQnrlH|EO+(MlF{4Q}WC;vyB%jdQOe1l<UH_04Ze&!SBdUQW=?spDV
zM at 98qN&GD;x6cvhe&G`bpI_?RiSonk|DnneFZUNm5a;whMx4|26>;{%R)hR_p`X(`
zlQ`Rdl!HG&obB0caHyZ{*}}mGJNS+cewKru at 8B0Z_-;dz?cCqNYaM)sgCFYPM>zPg
z4qmW*vYo$i at U0wt9C2>{k8|*=9Q at 85LVH-xzlnFJdiOnXE+;$g80z72GKV;q&*O;q
zCjGY&=W_eJgMUPv$2p^R3hm)_>>0#a{tv`i{#N2_=Yz!A4_EFS#>?qlb(fG&ru43>
z9PP%}@@Lz(4M?8bjd{dbf8SxDejfLpuN?Ysl|QTh8Rcj<-lleM*l+<7z}f$wI`}#x
zjCf4`-^5!aavN{AvQT~&@m~{fC0<Otjd&Ar)_)xFc9MU9_-x`I5T8SQ<?_%@mfudf
zh<bD7zwdPYd_R(}B0X0)_^lPb{-~Z_Bg1&tAw3nuIbY5v&if!26X)_dU{t7|>*;~S
zM^n6ibnrKcUr+LDj1KibL*;4$akjt7!4D+P_4EYdtp6P1EPoU6>&VX6iL;(h9sFzJ
z2U5B=tqjx4^>JU~JdVA6OelXN+4B_fn~1-vT#%{1I{fh7CHb34zI<$`|8U}U#M%E3
z>ws`2xr}+~ZlNCLBOJWh!B2DWs~!9i2miN&_nMe&=Ku%a-@)%D&g0dmiL)O*B+lh$
z32`nbUUg_Em(OP6oL?ss=XkfC6zchb%Hf-Phn&md8vBI&dy?OX_#cT^5$AZ1QI2x>
zU-`4``N<@IKk50CgWp7Yz9Bt#JLDfFehZc7mq^dIq~|q~XL|<jD?$=b&bi&IC;lAS
zf7E_P+(UZ5lRul at OO-><tz^&r#CiSd72-VK`Aj+VFCqO)NS^!s?}&4Ie)j%yu>|Nz
z%il)$AmM=sxArel4*PE)``5~t%VPbw{92O<R=?FVCc<sJ6G=}k`7=xMJYQ}m4*R$8
zqw@}oaI60);yf>2NE~`>J9&D9m#hABBHYf4FHsKv at Vxj+;&qg+n}~D1JV57FxILM)
zrf&fJi7wRo^Q~S!N4(rVj9M$?Tpw5K?Q^Tgo>y5f!hh?Fd7G`5D}R~t`_|9pFDc)0
zWB(28;qmbBO+x+z`QiTxd~WUODc>P1=<B~)zKQbHbRFCBa^=r$l`G$%d{<ik<n_SS
zXgv`AT&(izIe4Li_mA+YFigVs5pMM#T<m{u?LSB5zbeV)S13>Gx`dU-m<gdQ!e3Q>
zvd;Id{71^4)_J<+y;0aDyb|FXDSu`s|9dN6uKd*qpR0VMVZJ=_Ju4U4 at _Dt6C#{}~
zRsJ;^XC6oLy{P>`zPzLIn??AG$_GXGAQ&KFM1()0^1DU&B$eMU!Z%kwEy71DZ;kNb
z-Tiovitzp_e-E`ANY`O1znOoTX at _@|GHCtAd>7)YsXWwjz1CuG^o%2U<`W#e%E2c(
z_#_A4-NE-HuEo~axwnJw>)`tnclkk^L!-Zj<ToHcPbJRwu>20>XYP-5IB)br&o?@c
zn?Uk)q+f?!fxOLMwsRWEvz^n4vz;uTkDbud5j#2FX_T%RWX~$(Pqei*UADhPeQzXg
z%OT2b6LBjK&g0K&)ep|`o=m)j^xUN!@%EKJYtM5e&-LXi;<HGP?a!n2%jOq2kIx%O
z59>e1!P#$oZhRe*=X2vb6F-#f>?%ELtA6;6?Xl$$>1BIHIqc~wJ(rMv_UB(6{6z=<
z-oZB#A0kBacZ7py9sDQ<$DAlhe-9s<c7Xj{s66WD at eY2VgJX>j0eZNc{8aJwG}id@
z3r?>N4~-v=7GK$VYRB&=hs<?5H0C#5&Nu1h_F0D&hI6^CCwq>ec)6ak{FM&*Yn8*#
z+|J)Zoc(`?gFj0AShD9?;>Qus$Db#VJo}URity(`iZ>sBviwiwPi{X?BKx@=JDGSt
z%@>qUmbd%HC=Xl?ZTW;e>nS5W;P(8$uF9k3YWIk|tuNePoJw}~B|WDRx8(uTq~8<g
z@^FT5J0IMU;ysh(%Srzqh;x5^7I9rxG4+wl^F-1=l;qLZBfxKn%cge=015EVxg>uC
z at pFjVc~Vq<-?UL<^qfcX)0IOV`VJd!8}T2AA53~qAw5Tsyhr>*hx|1ng8)0(egow{
z*i$BdJ?MITXZa*e|EhozEdP&ko1d2NtK5!fET5uWmjMDjb;|qr>H|JQxgEb*Jq^kW
zBJ$X4LFnhd1bVR7f?&(1)iY1ItzVWOth~s-EYPz+`M?N2Qu&YwKUO)HbNG3o@?jDA
zQ<RrScz?~8(Gh-@%8!fi^ORRb_(jTjz5si6R{eWM<S$qGeIxwO%BMv5waV)v9D4}}
zGyIpppID<rXz*VGeuwgw2)|o-dxYPwd|re<to+~ze at yv;2;WZYiN2Wnf;AOePghoX
z)T2v@>oQnOUYC&!Ka%8ad4nF-Kb-WlJhyu{k{+Gz8~tq0bkf7^q4hK3Wj)q!(R3{!
zJ#6QR#CiOD8gbTt0dcnTGU9CK-yQrV;_c*zU&(s}*w1=;5 at -4Kh(AYqHX+V>HYd*V
zI}>O5GU6QX1mdg*b8UpE{WFQP9=x~mtOsLS%Q;^zAkKDPLY(z;f5GK&ZLK%3^Ph69
ztrx?IbG&w)67tMvlKg9=$F|due}%YhkHOiV-;*9r*V)85T^AGQb#J>43jM5y`*)Uq
zk at T><T_1%Wj`v-X=lrtkrqOu6Bzg8vPi?28^6L=ic<nkX<T>8WNuIgw2cr7RNS^gq
z66f||cj7tuPW(p7U%S4Gc)5KzjO01r|3IAme;#qRbCHApnK++kxSu%d{~K}EZ`X;V
zezxn%;9Pz_B|Th^(h!t at mlw%DJ&3a(?D{djW;^YAF!*Pr$F5t0vz`&8A8QM?UT2B(
zK5`>*UZ*;oIG2Yri613p+v>lCIPX{9L7dCOtIAP5x{;mllKlO|zjg4<bzK}^vwS6S
z_S-b#Y|m`sf1z~Qb$96Ja&ipGv;Qw7&iS~QIP2l{7Wl&6f4;TKgW>O=IsvMVa8J*F
z92ntNexODG9k<~>4U-&vFa6%eyHFR-c^ty&wc|JVhuepvR1Y}IpX%T at 5@$UxIQXXy
z-b2a^Le!q##Mzz#2j}_zpG9VMU#+*MzC!=y!fp9?$@9FM<@=HzPA|{1o)-Of9bRv5
zHD!VMEYkB7*|R=z*3a{I)^i at ovmRb&;P&A#l4tIUcPPoTJv`rMKF}d=*Egd1dosz_
zlOLWT-c0;6;s+4taVFbSB{B$zm-S<<5&`w)3;DC<;ddm@=PMq7umtE~dsZQNwui at 8
zY|oWim!o>Fr~ar_bXt2}Qy#VRZIWj at KOw%D^n6GBIpQf8A^|Tq5?_-z+rKe!ZijzE
zoZHV!jCSA8NJE28;ATl&2)K;>$>T$gcRke~^}~h~FZ<!Q#Muu6iF120lsNmLf;ih#
zO`QF(4{`RxNhY=Na`<yA=dN~u_hq;qvHk3yK92l7TX{4ed49zC$n7NSUzhy(Un;j1
z#94l-gU at yFQyhFP;@?rcn>hH^4sO?}P+VBgScm-n4$l5zJx4m^k0$;-*>Cq%VGr~5
zDZh|sc3e at a9P;dE*Z$i6B+vDI9&wKMUgE6(eFyIe<0M4w8R+1<Ie3$UpWxtjY!;38
zHXT^tGW=P;y`VfQ|F(nwRu_Du@}nI*>);C<{7eV`vxDF3;4e7%n>t>N+JCMN$lx39
ze=kxFd2R=ODdU6zVmAWp=X0c7-<kixNXO-QT*vZ at 9P)cny<mBqbwP;Q!|Pov&+A>x
zu{V^Y2YWP0{2~V*NaGOJKh(i_J%r`=CwacFoagn-`@jJb at WOl#2S1QFDzF`o9Z9 at h
z(rEcFy?@u~sA;QspKfi+$8#vX+<vZ3{+W*oEdg#~j=4DkIPb?jXsFLw|7hj7jP2oh
zE82YP{}&v3wk7*HUY;-XAU)-dc<nw2?B{sjbI3nV<&)!m!NFfuj`XI;&+n5w?>~M_
z@@bO)+97ZEe_%iR8GD at wQO@UEI3Is-`14mVT=j5ze<|&Dsc*jV1CKZMaBw|NYw8P<
z9?WY<p64Bh6X$uyam0DvaRzaoUz|^z=NFF<=lt5ykzcQpJeP+8l4pJt@%1FZw%+}P
zIOqF4%Hf-p<h_-Dl;pWQ7n40}l73!)SfBWAB;Sj;ofjb9?iBBRDi6Lg at pp-1E^qBD
zR68MmFmd+hA;jxQegm?{_NUOZA at LTKN4?vK_=Thgb0urfWyIGY`DaN_AL40wkARm|
zNe|Z85%BUW;w8#q&!NOCh;z9ePn^pk?~`6fdU(Bv?VJf?Bp_ZcKcnPY1aO`&oKF06
z(tkd2?w3)g5Mb_?@@M^d8_DxH^K0VV4(vkdWqaOMju#%sen9f9|0a<`K)MP<#@chQ
zp}w7~i4B%NrX2EIU;as)^?XQtRnm{OdIacU|JZpt%;k80L-HK&AmW_wKR0`JB0JeX
zy#LGo*`4H>+xi>z+u<r7_1meWhy8XjarWDO#M#a{#Mh#HJc2meiLo&P>}1aIa=zR0
zAGQBs(!=(@NIW0=4<dPv7iZNF5N{88Z_7FAK0>sd-$3$QKJRtNTRWkDb<+QqLmqof
z2#{Zc<iB&s<5>p?Q9q+iPU2e<XTNRaiyJ-M&Tv1-yv8AasDtyolJ&Ua9qG_B-NBD^
z at ar7>2?w|1XZSN8JOAe&|3(y^*KoVBGnHFz2Sz&hKE%16Vh;iV#dkG%Z|f=Vk8t~7
z>oxL`%Q?=PB7n1<ZxUxa|K;F3?_fJO)%q2+vp>~4wsR11wsU=BrEe#fLl?LESx|>R
zjNuS?JbwWBZ39i0mERW*k+5ZizpV2&JUarx%D?<8|MRKDd0cv~a;QCo;=P+Vk6S(?
zJ at ARm-z6l^dWO(^6C!rL!{=k!Z^zL*l=)7YZoCYpcxO2Hi4J}{an`>|WIx^dZ9C=B
zc-LLo_iL1ockmO5bN+r$oYS=rt?Tl*y3N54A<pCNV~As{Zu9Fx;#@E6`ZLnS<=oC&
z!P##-Zf8E*cTcRJTG8cyJ1U1eP<pplju$SsyOKPYTRxY?=^ErHpIn|fA0H!m=9|Eg
z5~BW`ryOSC&z8f}h;#itkMywpj}qtlo1${gez4^qm$9BvBoBLR{XK!|1^eeL2Or=l
z=lc at R(L<d5_JV`=q4Lb~jl|oieLIDCJ at H4CNBw^R?NhM+w;X(1ZFk|%14#d=#97Y=
z#JT={=HP4UIUVTd`nwHrZa2yud|wAYn>gEZ32|;ut|HFzj}hngWJR|FgT?0v$VaX(
zWy+)F{Cna%$wjuEwBz=up49*(MD=V<{6Nb0Uq|{uTd(cDMpQrVUvPb_qxOXB^;x8!
z>-G60&wAb at dBkn&^{<g233%c9$mbQAUq|v>o?jr&@&%Fh#QNcAYByNV0}j5jqaFB%
zgS*;?{iq$_dU_Xewx=7_cdlQh4!#R<t{0WWxgOOJ=X!lGagKKpaV~Fn5MQ2p$Ll;O
zCwBb#TdH5+cKlgRoa<dR)h{lG3vsao6c_HV|DYT%T%P|-@~o$o$~l*}GaUSN;#}X~
zqk6&ie at OBi?;2Fj+5ZO+XL~MDj%47^mj7FcbG-MG9**}z;@l4OrTWEw<8!mD$DWV1
z_Skmd3aWQ(|1Az)>8N+D#97a6%5A*X4_}fz*Sk_jeVpUq{~*r&{x`(A- at k|I3&*<>
z^}o!=6F-33`A3Me{1W0^f4i!`o<{vFw=*roxt%$XILn_#oZFupiL?Dr5obLwIrtaE
zxm{YD&U<h@(#Off`lCIi?jWEVaJf=9o4SR2TkJXB$woTf&Ky8|gvi@|f0lBT&ocQ>
ztDARhgj at YjlAdzX^E}C8Po%egeuel*;a1O=#77aIMD6Ej(*FVRO5$G<XM2oeBo3s9
z^J_D?7Qy(F^z5h{FKmB?<XI1&gW`O&_u=9)_|vBM0 at 5>9-dq2FLY(XGy3`JH{XK at -
zZS2uoJqt;G9O=KDINN^<akl><($DtueIjhX-Di*bc at -^4c;WiB3vuj`S^M`U&h=$C
zxgG&-Iz#@f{NaESz}I9y80zOQuWOAY&iif?i1WT1 at 5fCbJ9)l;4#j%`>0$ks5oi66
z5 at -2miL?BA%8_2~H+Lj??(d!^`JrTIp}a?cyLlh{SmInx?pBU?ai+!kANK?ySZ>R?
zt#_8&_4GvmB>$NI(YqzWw^9Chgxhq!72)Gl{_6<eSNWP$o?(B3^4~`I%gT3(@Pn0C
zNBBbJ^$~uaa(iDG%tE|>R&K{>mfxX#vFbs-u>Wr(&h_XC;@nT!^YGBa^=NyI2b{-I
z(;VEk+mK%@d2RFkGm_{2=)c5oBzc at AK!6 at Tr@`loSpQ}u&-zP<v;LilvwmLBXFu?{
zW%h#||402(N&0#GvmbG`^J(HN&+GHde~W at 30r6r_!TNb`;_nczQI40d<<H7bBYECW
zzffclpnsysSoxDk&ld8X<@Zs!YN2 at l2n7=G!h9BuV+%<C*~HmDXVbWp_ceGuitX7^
z$Ez at x`84IQ2WJng{qsp4XG$$Up5)n{*NIn?o^@#)%e>gZcO%Z}+TX!v5NG>al_R}5
z_LDrf16Ps!YLs7hkv#W<4-w~jF-PJ<fIqo>-fF1NxxRcyoaNUM8xWv}{d^d4mj45B
zF8_;&bNRRDo!}qt2Ztk435b{b!Dd7KehPKgmWKtz7Z5*RIrJ1!d3b>25%-5X`2c(9
z2$1J?cnERMFK$oR|I3pu>`^AA3qH5}r%IPrFEcFIi|n!U6!>xk at fmQYgsA^*yA65v
z|G$j1FVBAdhB*6qb>+~p2gR$mp&H%8iDyX<mk0ZNiKspAkv!Y8ggD#7{+UeiR;fJn
zA5OfM^sqfAkUab69g=5z?EDLUcG-iqEL(oq9-OhU{KvFsH;R|-8Ag0X+r#AtV-M?x
z67v5}#QA(I=a;?DG+KUMbmSM8b60-tO7XIPjv~II{ln#XJjKiQ98dhmv}Y{E%l1qm
zzM}2n^0NcQ%jG9ad_|WZ+m4|f;Qsx6Du?`gD_>AK=kX_x|9Sk$=aKNN6<c3!ApJc5
zy`4DEe{KH at J2xRce<%4R<ToClV6WW9i#mb;J+;KK_JRP;_Mojp0B3vnJR#e27Rj?c
zw-RT2J|@og*mKBHdvHb?A!^TWh_gMV#MvIKp;<kf$$RUc2I6ezL&VumKF7;``;_F_
zZ`-BAc+Zox+jzGp&U!`=XFYom=XBK)=XCLN=XgEGb-#(-H;nrKU!<Sy=?OszQF(h`
zb~L{>BYC!GJaP8JWa1p}?}<;MeEf_!`(aS`&`zEYUQL|!JVKny!?(nFesmno`*>b+
z4sk9&cN6FNLVubkvOU$r*`5=LbG(-l=kd>t#M#ex5NAKXMV!m+=ft^Re%N=jDG%JP
z^7&y-Z!fAZERQx50olp(qhpoh1#PmeM<<dzx5H->=k*qTuGHsLAFm<#8;RdZob7*<
z_ at yNOEOGYFQDQR!(#88nR~YJZ-mkn)In?pI?`D$cd7oX+gMMD$#+U>l%BK?NasnS(
zd7j_#dMT&NuIE92J^A4UUyX^E{kA6Q=X^(82uLsIFZV~Bzt<XRKV4OFku48z5Jz8N
z`5KOR?fnagx1Qv0AbZN>z18zC(!=B1wV^-)Uhrq<%QKb3KU>IqtLF&f?Ei<A<E0nH
z`y9#h`o=rNIbZIP>k$wy`{zG~`W$;e)}Bo$U7RoWz8ge?v{?CPRUW*8?Bw$^>>un=
zBH#so);}jGhn?HVd#nEv;_RRImE(o|^Et`0f4Wou)lvWKEIO?{`S_=i<k>%1o3(m6
z>L2tq2=LD<q~{Fc{VCq7h_m1RqZ}{nx9>@w{bu(O5HI`fuksloTCP6!vEewAY16x*
zmJ`TxxhhwV=$lFYDdLc^dR8Gjxm=-7M8FIFY`H?2M~M3EG~!#yd#j)O1 at _y=DvuZT
z+c%_#{kFQJyxH|G*u(AoF!_uCb==NZ80y>4?R-6PZs&ie9C~>Fi`P9^9{1WHz#dL-
z0da2si-~i2FiPY<#EZX+hWiA15iI|9g#Vf6%lNLS%;!8$1m8$`FaPU6PnB}J-){9k
zr~3Ou<hLmI!A24Ot?DU=@LQGli}1zDw}|kEHND$J_(HX(D8jE*dCo_!7vsp!%x at t+
zPZDj*t*tNc_uC?4Ircgc at PfZ>hRJ^twp0%J|B}4jX94H_`e>48e!hcWO8j%u&+QU(
zd%h9z at _5fa{|f3*hHbidAD_nq{Cr5vC9OQ~8=~#C{2ysiDgp7bJ$!zQ`4W<Er*!f2
zroJKWdj8cQ6RV#m7&}>e_<0et$<8(4012?Og*e_LfX^YGRy*-E{x;f0{*$nS!~QDb
zH<SGv$a at 5<=Ve4B!Hx&;aTdkP<Hk1Pe^fn?ZzcW$aXcf!`XM9l5g>mcal3C0-cB5{
z2)GPuDHq8f0^|@Z at 2Bx``vdtsm2>+8zEC;0Kj3#O=k^C2Wd(uTA8^|bar*;)Bn*>K
zVEzy7JXSyVi|`v&p4%Vjd06GR{Q>__<+=R<x9jpeZs+;PTdEKK<8rvMrVpI^udRq5
zByrk&988 at 1op&7^bq4|ZxqjJp44nI&mr0)Otb`H?QTtnb9OL|ZE39We$sbJVYI5+?
zh_jwu9ef6HuGc3MXFcPTBU|UnfA)8TxgSAUv;IGX<Z+EXhk3Pf_=n~1bI5O}evZbw
zmc#$sk$$${o@<KcOS40s_wQKG|EuGup5*@r<-N^E+aADghf at 9yBmXl;-9do-VI;p6
zGEf3I&Q4hU!-%t<Da03${N=<CA^x6ny!=l7v*nZL5nSH-X}<$`{Mqt3mHH!=pXZQ&
zisae;zDTG9ys(|e5NG+P9h}c&vwRO)4`hC?@~9v9zCv!_wxabw?tlAIy)*t%`|N#N
z_{jN-v?4(E0r@)xA0+5y0pCXTuIhgs at EOXvAA}yP{ULBa2yPW~KM1}M21ww35d0s?
zxgP{aUye{<{txY6pr89i_>G$1TSWM+`kDJd=x<O5a6btCzRGid!THGj1 at q~89n|vp
zoX=k|zgPW-Wa7_`qj>zo`i+ptK|hbTS5-fOW2|B8Z!ZV8>m-opadnF75s#}^p?ZX|
zoYlV;agNvC_Y}3KnB=*fk0s9IaDFa5>z_jM-0#no^dKPKO(pHt&O-GwIQxGwah^Bb
zNu1|R1?o?{;LnbqF}6W~ewP1|IOmrgheMwGFMd8h%TK5DGXI`9r|V=WmSF9)<!X^~
zyl}aCkT~mqf;jtspYBF|tQ^)7XZe$fbH40C?Hk8Cia6`JOu0?hHp6^7-gNMFX+MJJ
zvzrp<`QYx#t$ypbnIzACd(|QTnL~b*Hmq<f$NM|toZde=`27xU?@NXKTz}sud9J^y
zU-|xv%CDjvcC!3h#M%B|6X$s at pAT%Oc4I8bb9$!{=X!lOac&<L5odd at CeHGk`N=i)
zg4fe_QjYZUdK&ry1o(&7&3Jr^If!j%CThC at dCcJ~M_dTde-!aEiSs<`apF6WJogJn
zij39I^B_EP!}9fEhy=V0A)ZkVdsvU{Z^1dgjw5+q_dAC;=a<XRLqsn^)XzMh;&$v}
zU);#oll^xpNA!HZ+r1>u`RK{D2$090z2B{$@~9sM66bd50^;n4%ZRf-uO*H>4x29z
z5NAKzc`Iz>`uhgSbA9}hINQVhKIhBfq89=B at n`+8KIviq^Yd8P54Qh>4&IN;Qh&sD
z&LX~8;<A1?lsNnC2;w)A{K>@G9=_k1_ggO|dG^CrVmCt655o-g%jYrjrL}V&arO`Y
zz7>~GKL5j<&&RU;o00zyp!AMV9`!S?v$3BitDQDocZ~EwhV19^)=~M1q at UZ*DWsq4
zon5bp+H*F^vpu~2z~%X;ig#~EdS{URoZd4 at 9%;7zzlh{Hy*Cl(^!`-w+W8UMLoVl2
z$xbexoR9BNx#j+p^&G8wY<aNl59d42NB%<ba=XFzi*dX049Ro5!Ot({_Q7 at k&Nrlo
z+YMe{;&k!3LAJj?>DfXOZQGL_h;utos~rA0i{yVt@*J<NU&yc1N&X^|KZE!`iL;&(
zZD*k84<x^UIH&7e;sZ(k65_AOdz;=XiE}@AD{=P2-Nf1d?9Xi|-hBLtGe6dz-#PrS
zqWy`zU<CM?{mK4ef7){<kY|71PI}m%uJcs956J$kfH4xFpUcBZhQ|9xdmc$#nKOQP
zQRSoQ`jj}=)31qhy<UaV#q#SoxZQ_Byj<TmCwZ>#I}qpchBG_}(8K;2XsFM(qVhAG
zIO}Os4*#4-^2d=p`}q&Vx&B^Goa^sx#Lp%DpA%>OuJU#TrFSUlxt=(ex4#hQ^7asM
z_QR9JUH;^ADZ|Nr*2Dh9p0cgK|MRE+Tt_}{Q!hTZ{^9z_{&bD=F=s>&7w3%UkEVR&
zapwL;+OHS8Qofu at oX?T+eoY^ef0N{SJ>T9R2YY%^y4W6+ZJXXl$xe>fp0h%|=6FAI
z$QuWUY*c<@7@{0!^K85o%JG6fJKn=tK?LaGc8t%nv7M;<2+?>SAkOiANE~M{tUX^T
z#|!>;)O7x!JZcaBe)zE>WA*TJ at YwzVG@oMo`TPL;nb$2je=kuz)=ulU`yBiON4)&|
z9USl0NT>w7z~?qyBORQdw=kXL4^sK4o##6EZ4S=st6X2+C41PP9}(wtmC`yY%kM;-
z<;M|cKb%PX0!r`Y#Ce`_mvZ=FEvk2aBYCcmACUaoB>$O1emz>hMPG08t3Wy2!TN`j
zd~cE;>yWP|&gHq8IQLV>lm2x{|L;kj?KzJ)>wk>&tVepDC3)8K63L^jwtjfSA<z4G
zT&^Awe<8qc7gGMdVW`hbiM!4}W6cu*`OfE`QT7nP`TX-I$`Nl7>E95767YgQdkzye
zBS4<}sRjq<bNeiRt3&=t2j_h#u19>|4c8;P?+kVLv+dQf)GqP-?jqt`kL>f(kX|lt
zGvzY^IOpR9hWecCwBvBdvz;H4Jh!*UP=582_qJS}MES+#ko!%J_n#!s at utboEZ>Vb
z%VX?^0Q<RL8>bvE1LV)zxgT-7wf=8Y4m~Hydn?cTaa<oSB6+s+a^h^~^~72KQ^eW+
zCB(U3w)=hf8h^H5=Kh!M>_g>;`{e at SEMG>P)5ZI$oUX|v&*_>?oXgJ@%3(X_%k9MR
zoz0hLh_n1##997V$Uq5rVf)u2&h~RZeu^lv`My8NGq?RXzUKb at Sd!;@cR6vk=UU=y
z&sW4*{s-bL-;?`6vcHNr_scVhb9-{Qa`<vBs at Drip6m6w#JT+3K%Cnpd%qj>b3gtZ
z$+P|?$|2AFc*@a#ZASea_v70-<VTY{_sbI<@_Q5K^qxd|xL-bl<T+ioe at D8wU%td4
z&+~dNSKKe-8Bn&|z9D)MP+a)Fn|%7^nWV?Ao59WsDi8d;og$LQng#-1 at Mrtw{guNW
z?q|7OWsW^f1jzHc0oFheqIy0c&h_O##JRrM`3Sz|eTPl7J%Rp1D81ty?MxfV^ZMZl
z#JPT5LY&v<Um?!*h0g_jNA at fb`w(C!^Ijr at 5cSUm#CbjEF5;}`F$cHL<BICH&)tPT
zdH;@|@6Gf5eT<d9ojb at yw%por3-s_l?13cD`LYq&$@Q_HgAXIl at m491#+xB|j`wro
z9PhUdz6umeh~`&s2jAAgv9^|^XC!g9XM%(8?%-1#{88d<l17_fpAfGnz9E%omLEo(
z<!2JVM08sHJRauyatg_Fde3t3iyizg#JQf@@domX<Nc20Io|FNlz<oJ1;n{tZ$X^p
ziyVB2gHKnEY~cQG7RhtJ^S^aAf1UGx>ukOse$MM`$5T7N<8$Ue)jHdoRKIw<@h{>$
z-uRCAVoKNAH11_R8xUtbTM}nKj3&<d^BL#!xY{+&zeM$;o#AovRTM9`Gxw7`kMo~!
z$iGAKJn#6}Az$biZ*S=sKNl0{_LhHVhui1L4te`LM)-lp?ej>U{gBVN{Zc9qZ-`z5
z6c at g)IiGQRGwI=RdpY&XT{Uh$6Aq97J9*rGi-W)H;O`QDh3x!}IP0&W{+H{^0mQk!
zoTeP=@MqT(ZY6olS?qX&@9*I8!0J?gxt#oO9P9TZ{~O2pe)!)w*7w7T9>>~wBB~{?
zhy4F}eY;qEVcW5M*0&c at yT|J=+&^A~MpFX(%<XMH>)WjVDbn*xU*G0*<+Hxc`I682
zHp{Pw_3cwB-+6tTc}Lf`7gPVp<>b%AxnI7M_#eq0zAuvXyh!q_=Y8UAe|H);vi{!^
z=l*?X8h`S5n8(#TuFH at -kB93?Kg%y5c^(fR?~q?a@@vt!=t_tDUx;)4eV#avTRa`F
zqFVBL^(u~W?3%<`|JJ03$HOHg&wj{fJdC!*wqraV-kEql<Kae<=kf4J^5_5G#=~}9
z8u`xa-e=NynAbTUaEzb-kL3H4pVL$yxqfX(oY&L%xr<yr%fvneT*mFdSVMiz?Z9;6
z=(BA3IfVGd#Lp$p`Y$2Q`mZB?8R at x)_ at 9XLIZqy+u>QSBp3m)LZPwcVDe2#XcsD7-
z2=LFI#QDAtPS at 5X&*|ddqsKFOY`n8b9%Bj1Pbbd$`TREPzlP+o7H#$L`OnRX<IF#T
zAoFMUkG>{7`;a_8X8`x0S^e8VfrM!J!J5D2Z0BU+Gf2;T;+$SQb0A62iNrS}Jv?6e
zGx29h{ya&ewf}449B((OcWnO}#D7Ejw<ON-+TUS``lo{AS^q at h{5;tC#QRaad|suN
zIM2HeApSSfvoG-%iSJFE&+knk{x!*C&(Zpm&jU0O=ijMpAigCWBO&UaV&d$dor$x5
z8i}(X<`U<2a-kosiT4V!r-1m?#OsM)MSLZyFIN)ZmUv&{waNwM)H~RQ0CVd|9%BH6
zDCheKc->|+6stV*Yl-votM4SfD#iN at arWC=#JL~g`;XW^cN=Ts`OEw1oWC!SJm>G*
z#92SL+bo|Vzj6C;GI7qAbBMDaE_QIcZwq(e&$gfMI^;ic at RiA*?C14~v!D5Xz at 0?K
z*1J~n&&I at gKlebf!OHXfGQ3ZHw(3FjeMsKkzW|Q1w7SZ%|55g={%`erlv}ow?-OB;
zu{r|euOmGhJNR#ibGnL%v;HB(S)TW)nO{%x?4Oq$ygM8t0WUn>!&yxPq>IOUZxZKn
z_;2D|4(<7H=wZGEwZq)+G!f_i?j_}j=GT%In_q8}JkKN6M1&IXf-!)V-;p@?o4kL-
z^?Emw=Xz>?KOJ9lzji&zvwwI#%YL|n=3hMSy@&W>O7APgx!&>oi}jDBc^0>;ysyFc
zEAjbcp2sa9J<pIm_S`a(&GLUDd2R<@CeHS}Mf^t6-<O_i!RgxC!N(KlbWJAC{%j%6
z_MAtY?O9Bm>)n0CIlZTgUl8CQE^n6@>T at n{e<RN2=T+kDhwkDl1k?-s+4h{r^BgbV
zkH+!Vs2<qK at g6~(_3${K^?XS3tfw1{lK}l}|CYpAe=%{^Urs!y-5}2GMn}izCy^em
z?>N(r0Q(E&y=_l6ruK)^yA^Rx?+D^tfA=NM^3xprcf`58Y4c$0yo2mC#>;=mp3m$D
zdIi5r<a;U8$F~^yJ2mYjZuq?p`MXKp>Vy8j61TdR7Vmuyc~`s-kUYnGKXH!NrRO1%
zXFc~2XFV>z{jG!Yk91Jpp1HEN;B{&Ke5`}|AMc?26CIR)vV-z=k09UlKHWk6cJ7d`
zemghMSN^#U+Vl4g%0J&h`4>7U{|}Pq_JQkHfjR at _@I{CGgT%RhU4 at G@*yr^DT}`||
zzX#f$INS5EL;q-!XZ at ALS^qrZTTs0A%qLJ0 at tGvA*wjbNF{>1?o#2y{vme0sRL*vS
z at 2k8(UlAqv6#dM0g4Zc$JHcltAEK{TPlJ9Q7U6cDHafx&*3UM5R?h<EHXW89t9**S
zT7HIpwsu*5q4Ji9{5AS{UW8w-pBF^9T|c$)Tm5!^cuGXxKJV$Q2){=^UlidF=;zBL
z+>Yn2jqu0y^Q{s7w0^!j!vC(HAC7Q)-}O at w{<41lM})twpY5yl!`sT=*H_E!=T9R1
zL;buY!mXSs`0^d}z=wlWZdCvYR=<6YK(7e5<JvwE-djHxM7aIDMTBpopY8k_A5s48
zeTG9K^0>DUVOWIQb#U8;SUt8asEWwX($9NFIOYrpQz9I5CxjUhe!PBeiSSePvu&gB
z5$QTh`GSc21^W5e2){%>pAzAJ)X!EQK0^Qh$KJQV$5mASZ>2zx$EI2#Aj*OP!>epc
z3keq3(x$zUEksfzKw*=nDTz(f&}<;JJOW7|>k^F$SQIsC(I}u%d6Y*X&_aWX1VpV5
zAS#b6<q_T$3;lo3%$eQU*}2`lZHoB&{O_mTd+)jD%=gThGc#u%_vU7%_Zj>YyVKEc
z(C^^;0fVmQ0oNGx`}uy*pg+X-Lk9h~d_Qc^)%`|;{wKa4G3e at k)S$o0_hSbAKYYL0
zpzp2v9zN4!vfC&5o??4C6kUyf@(uctd{1K^o&RXQ4;XZ{o>64b)i^3>(2wQ&5`(Vh
zeL at EPc)oWGdMV#m7<9FcQf1I-Zi|j;gMKpK*BkVieBW%)XYqZTK`-O`c7r~b at 4F3p
zIp6mh^i%nMl|i4!_k9MP*6`@)H|SsB`vHSq$@gmvx>{!%H0WpX{g6RFo9~AWI<0}x
zvC*KP$M+)!{X)JUHRvn(e$1dNdu=x8-{E^7k584K)0!w9c?SL0OwTvyw=-S6m#Wga
zlj#A2|1PGhc}2y457UDNzZ%n)7<3xT(GfD}YV7A2bTvk;Fz9M5T4m7H*s|K7tFdCe
zL04nEW`nNAW^D#tjj7rVx*7|08+0{>={4wT?6JzAt1&~LL07SUzd`>S+jGF6KgIMl
z2K^bP4;u7;Fn!3N|BLCv2K_mvZ#3vHFnz?JzsvMdgPzCtV+Q>|zTa%n58-?1MX7dP
z`DZ>qQ2wd%8!+g~&Owb%ag;hjd_n0Dou^Ne;|xXLi}|Ygtmq%(`(}e)!1wJ2{nLEk
zYtRe%zR#c^!S at 3OUFB!cpsV<B*r3ng`w at eF3g4>}<?DL-F%BZF)aU_zPQ^`gdFoL6
zF^I0_(CC at N3`D2@>QLh_qAA<cvu0)>I!_4;N~cE8<7+ypG9~^!H2N)kP4tgy^g)fj
zr$&ELqpLC}l8WCcoxPcdPFwhz==<<Bo$}dMME7g-LXDoU(MvS?B#j={=*rjVakWPO
zxW-R&p>z=LWN{^bRJ=;`PiS<S<E4Y>`-&_1GoaD;)9C9py7F;)tl~pTXMc at f&0`b&
z0FADkfassp=xTpE(GS$<MMS_sC;G2!*QU``-6B4k)24$?2Z<~BGosN08htXiH}shP
zhd7 at hgC1b{OANYd2UYv5(y8Xkq5h5)(GSyb)w&zeKdaHFv7Ab0gzweg$yM}bt~5g$
z|B+fcsuC*x09U4ETseupg7ZpZof=(zvytfPyF<i(3=#Mk)cAvni1SMteX2$;V0|ea
z)mG5s*&2Pi#;@|H^dI5MeT&9_yvDy-qnB#*X`F9L=LC(e)~!_fz1&Eszn at EV)pnBD
zLs~lOTd5*BZj6ZkBteirdua5NHTrCg9 at 6NGH2O@9zEq>1qS3oG`YesUQKOSi!`ztd
z#r7i_{cq>S>=PQ@(b8F<(dTOPI*m^Js;;(c^v`SjF^x|AMf_|)qmw?>+*sbF(TV>k
z=6_bBt38VJXtPESGcTPcb9t)#2Dxz!8uSXLhYfl&)2j`7JJTC9I_atEz<@?4yQ%i-
zE{#t73-F(gCp9|h8sNrzvqA4=`ULK at h?ml7$A3DCG&()2;KsgKqZ5B8G2^J#=%nY*
z1Qp+m(&)smzLVRo(JB2PcN#H`PW;z#Is+P=_{W(4E{#t7H!%OGMkjsLdhKf(o%nyq
z{CVuxls5ez=FTc)(1YArMGd;@tojZ5Fn3}j2ECm-u>!6)3U`d at M;Y{d?%YBKJ;?O=
z20g at dRWDWggG|50<mZYvXwWN|{-i-~X8Kbao$RT~eTzmX?7*k+gCn1V8>LT>>4gS8
z#Pkw_-p=%9gC68gyVIaoFnx_iuaK&U- at j}0FKF~PHToGEJ&)TJrN0UaCTVoC!_Qf!
zN~4n>s{Khd8lCvpF#jbQoiN4%@<EqIC;mZ6_T8e<DSh>KZf at 7;#Q!Ms4{3BtzxQDI
z;Bk#k{C{Nr1G&K=UP|BLKK at XRPW;a at e@LT$k!f^l)97bu^lLPFl}2B$(a+ZCTQvGP
z8r|V`l=M7Tqklo8lb$c}vsD_MWbzM{4 at OP;VUqruMyGTN*bXx|m{#^_W_p=MCw?{W
zU9Hj2lSzx;28~Yq(>R?0jZPRNM at XS92EF=7N#B)&c;cmWsyH1-qf<HdGyMx1o%m^Q
z86Axpoze<T5oF&Qjb1HD;&&qVC&VlCWd0I^-g}G`sxs&!Outd1*J$YvX!L~|eTzmX
z+_9j1xGVQpM5BDE at 5av1=wyfQ5d)4gjZXY(Kg|M-POR<4#O?FdX>{WM4%_WojZW#)
z-d{SttI>&H&D-Cm(dz`K{2A5gi#2+H`#nnb0*xNl==B=?OpQ*szh*uAG<t)^|B^=k
zl187w{UPDf|NLX+!!nId>91A(qtVF@|71I~YINdP>j>Q%omeY4{jY0u;(wIW|GP$~
z^woExp3~^WKf?U#56&t5`=;X|jy<?PCpz(~^@a+KPU#o$IPGkWPW<n1`caME1iCr~
zH9BF89Vegc#c=`AmMLbOKcUenef7Rmkw$OU_-APJ3pM&`jlNu?zp2q%G<qY)9i&fG
zqrarlTQzzK#}UMTkw$OU=of4B6&juLHIW2ysCa~K>3{wVqWXM~82ka|&*!*<ZmC=x
zE|>i^I;9_C{%IP01?cK%*XUnXM4Z=X^pzU at cN+Z?js8cCPPp?KcZ){9RO2t=_=VUm
z)94E{`sEtEU!%8c^dXIYg+_l|qmw?htj}hRex=4gf#V}$BmU*gU!>7HH2z|ZPW)Fe
zf0ag8V*(PZ(dfjl)+xF*dKWSB at pX+({Pa!*9cwiDRgxrr$29uY8oh`oYe>9XqgQM6
zm_}cv(Z8b6f1uGxAGNn;NTbI!{>L>s at vHg#EgJnAjXysiZ%EG`jb5nHzpBxX*65VJ
zns0B@=wH+L2Q+%GM!!p=Q#xv1ed58AiS+rpycEBCYjoldbG at t5=-<%zYcx9XU&{Qq
zX!LJt{LgCiYc=}I8lBQn?;VvKBAH0f>oxvvjs7i-zFwo>pwS=I=#>6jtY^VzBon3o
zZH at n6jZXY|6XnAN8vQ#Of4 at e*QKSD-qf<KS`wLq%`gb*cr%>LIKJ<U=M0ww-(Z4TA
z;<rbmQ~C|8=X#Car}00k(TV>G=AX!MF=75d<KJ7O6aNj&KTV_mP~$&QqZ9v6n17K*
z|B=SORHGCB?aY6zMqjP*e^;Xu|2pPhuhDPP_#f5i#IN3Ce^aCXSmS?BqZ9u#oPHsX
z56C`0(fE(n=*0gr^Uv4l{Tlyy8lCw6!~C5Z{ihm#k47i{J$983Z`0^%EKX0>YINe?
zkNKa~=r_wG#P8(K${WhpEgHQ at qu;90i#0l>e<-KlrqO?{@n50QiGK$34{3D54xB87
z3X0^JXan+6{2r{)DV=&wr(UD~Qsci(qyI{yuhr<3&Ly1AW{v)9jeo-7@`m&w{_isX
z42^!9#$Tq<iT^(4Z`bIzYy2^dPW;a>|9XvnhsOV?Mkju?2(}lG7fDb09}M9K$0sy8
z at lW1OkbTt}eJ)5p-bK<IG&=FC at Ah_T^t&ai`0df?#IL?Puu-Gmqw(Ly<5$vgtwvv~
z(J3AEov#Crl1#*ZpT-~7==W>%evLk;(T6qq0~-CnqvZ{y|DZ;1*XZjs`rkGBdX4^^
zMkoEh#C9&^@iC?UkjB4Sqi at jYPipibjsBEIr}Qu5^aDJert}}t_z&0U#Q#I)k81Sa
zX#AIIbmD)F`G++6Z#DkMH9GN6*j+w6kjLeu&+jz;Lp3__7cqaMMt at Y}zec0~UZZc+
z=!7viM?QQ>qYrER1;z4)cpum3vo-n?8eNV1iT at 88{a%g#NsaECDsPDYj~acpM*ovW
zk81QkYxGMsI at u@8_F1FRH){N&8vQRC{WXnF=|nl58OKT{((|txf0;%n{yygK)#!iI
z_;1kY#Q!_ye^R6WUE_aBqZ9vT<}aKknMj|fH2$MCI`JQrCm%*N`qLW!phka2qd%h2
zDV;f-&SahsAlwm+|5F;B_+!jprP2SP at z-c{;{O@*-=fj~sqx>g(TQLEo#ru({x6Mx
z#&Pn7^n6yMmuYlL$G?Ys*sIZ>)A(=D=)@mp{%1A%^BVul8lCvBW&Wb$B@^lMg2rF0
z(TV?d=D$Rvk81o~8lCuGXZ~T0p3wOJqS1+8t;0<&kxZn|iyD7Oqi at pa{Tlrxjs8oG
zPU)ZZQTcF0qra^2Cp0?oH#2{*R5Fo1uW0<G8lCt%nZHw`lgt>mV?7$3_(zz3P@~TU
z{rB8oKcdlzzhqDR;CNP}Q~JH<3$pKJjZXYk%s=e}`J8wu{SJ;pPSohcU&s7a8vS)C
zDt>D;I`J=M{yvTVhQ{xk(z0S{v}PgB(dF`7udbHYHP%dt*0n`_Qx?@kYkX4{wzT*J
zVM^qj(@w37POpuwXs#=-Eh|~HEOK$fqPnKCT02827 at BI9FJE?XSuI$SDN{m~(c<GH
zb6T5fqYcZNBK0**iyG^em(N*PTZTs^k;tODXiY<7adBj3(~5aD(b{@E#gpSBk=nMl
z;^N||%j+(vYl}pe*EB?1piEhKVKDi>tgNg!7?~GYTGLc>LEZAQGb*E{lu(3nbjGQb
zB at w`vMCQrIk!8(w%WFuFR5o^kdd0eWrO>XS>7r#z>dK&xrrqfufT7Yf`S2R57{yq&
zO+%5JdT^$xky-UM%RPD1e_Mlbx54ztDa&hWm()f7n`YP^CI0J{khNx<9m1<6NC_{N
zn0joavN=+_thFgxw<yvaU5-|#xv{3UjvCWsGdnGE+MJo&ZeGjEDr?FwDhr=h8i`!c
z)GAuxsgdxq+9i?ZWsMEBE6S#pmCc at 7c2Pz<{{gEIw5YJtx*Aaw+u4GC5Zz(YXFudR
zewgj3ddm;Hjvw~2mQ5EoUmu`9ZeOqeVOH>i_C!w>{BO9SX9dU6f*)-6CfssS9R_R5
zR(#+c-8N(K528DhBfM-On4w8Y<cx(FC)U-KH&#ZcHP<vOFF&=hu?!=;V5G9Hv92~+
z+!8IXoEiaXT4P;HOF16a2twJ^X&9$nP!~ni)Ka%R8fk56xUjVj5l;)ol*N%L4K2%S
zrUd`XAy2VVauIS9rQt4(C~1%mwHGhT&~AqeG8G1?TPi}xNPR<-GD-R833O_4b3<Ki
z-Ng+pb%;5e;H9m#(MS|?2GQ2$#yT*;Xow_dN6J5sQp6R_0&wv}8lZbkblGw)3sfxi
zM5LAee0KBc^Ihy;y0EUPwti{N at +Bouux@!%O=I!#rzqN-nxzem4RtLXt1hD{0h$IW
zo>H7)ssBdZZfJpb)luEPptd$r*H&BC3=`HYY^;+b-T$smX>|)Fo*Y6<4MxtO8JYRZ
zYnoabsTfbGX%VB0ZB5z8n4qkfyb4n}Lb9%`)?Tm12QG-Yp`74yoC5OP_dtOx(;8_;
z-dSphF3?Mhz9Y>B=Gr2t-0<rP<R?|Jo0cuA6V=^b;yLEs%Oqi16zV1W<35H|n(Q2Z
z at M06{R=Fl- at l1P@H14L!U7_u%D%)e4?1l6Jn<l$LX{NFDi6wLEqNlYsHinm7P>#O3
zrm0qRJ1M!=rpAUPb&V^~@t`JR;wM^<x%`Nnd9TB~{&JeepDyo3A6?TFZ7B|lM-d7@
z$|_F9e740jJCxpX*=dVagk%SVIsMw2rY0;C)RxiQex$A at 8mViktw9)6SG%;P>>}CA
zmt^$v9+F_$?Nk8LTDXy>h%z+;m=-g1wv}co!cm23nT at jws#Ta|h_wBJ*2%Zy^eM=N
z6cucH7EuJ<@WMK<MjC5c5MzpXvT>1Z#N#z}F at oaME$JP15e5W^K^rjyXmpv;Ohz=t
z$W247tPth3r&UHWm!<4;q6(z}C=D(siYIN=O9CQXZD_inycV^nxE4zqsbw&vhqW*<
zewmI)+ftI1QI&9IMCFo(I~162lbtPs#(o}hT+`UNtd at sG6#T<hWf$p_!!T0QvgJ!_
z8dGt5MWaNa(B1IpZE59#DALM~3AV~(DR0|EJ<V1#f|XG$3${cXYFm;cLKkJWr;yI5
zn6n6 at rbziB*nbi1cgAUz!ASA3Nz^l&8loWQkjJT!%4u2i$j;`H1Gr&!poSa at P%}ko
zOY1@`!eaHdJezBrit2;RPtDQ6$t>ixv$A<Dsz^|c+M`%PPL*?Mvc02W=(I(3i)&gN
zqgZ&RL9`tH69QEutI5QZ>?Q+S<?*g%lk9s+BeRw*ZEm1NaLs_0_T)HJzvgAlmZnQf
ztE{cAww0Q(T+FU5s^@HdSmre3Oe^5ZQ;<n4-cPqQg0wboYg|%=VH>Hder(p%veV&r
zt}TXErrSzp+f|t6e{!e*V9TMVZL6u=!G_XevXYsL7M)SkbO9!~kOK^`R0BUhLJmxg
zAAaz!!PSJ at Y8t#Z45?-Lq)VcgMq5g|Mz-0<s0q5A<+csmZZwkWrUjGK;c3BS&BaT$
zRr%6HX at IGTVrHkIO$cX=U};Vd!D|zDqF$rd4DpPjx962w7XjPQ6j_Lk0(F+GD)(9n
z?^^28IG%ATo at 8$vm*&u)D4%FVPpLJHTGNw at w-kHtTV_*>Ks9JCE;8K~oyKw4r?iYF
zh0#%C!n1irdBv%kiaGaY71Wo^4 at OX7XGSVZGn+blVTrj|jB;ubB)8BetlY*Wdii1_
zh*#I5u~kMAIl32Z%Bop(QF5r6ts0=|#|RQl7p$5&&@5?L(G;y|!~QL?iA)SQ(fT1U
zt-)-m%bc#&lskZvo^#sRmPE+8PsfbdyvT*E7(F*EZomZoMP;X*dS>HAWhmKg)IZJB
zJXVJ7479{T!{Ua<#t8ha;ew{Jr3hbVWqPY>Aaq-#I)I(h58E6mmt8Hz(_wjD+`$w`
zv<?wWMAJ3voWXd2q`Q!AwVYC?Hk-3hQ%lPQ7N1G_WKJn+Mp at Llbg6Bn(Nls`i&H9M
zNKn_-ygX9ZWE;+VOO~pQDm+ehVci7{O|D&RPPwQ4o>N_jt#Zrj7MCp at A3w0A>|Xfr
z&F$K&m)TY6F11~$VzFSHQ>FQ4`=CH;Kt1cqv)J3#H76&~D%JA3X2fu1jg8nZothj?
zpMA_JO|AIFpcpMZGP{^JL5t1LWf>5vF|9=;f~g&A))bElm1=86BkMY)ldNT)4a_U>
z6a!!mXpyaDFqP4|shk6%%HyyakH||5oNb#5cPs~R=WXR+`x9rc-g${<(H#5bXV=jV
z1q|eAzk@!9nd~C5j+&goG`G=Dzo at 3M6)Ug}ydY<9_q?P4hfX4ERXg|Ch-zYOD{Wkj
zMx=HPS!25$N<E_rCjBAzWU0f8E?*I$+1d2oXj`@`M(nz5Nh>z&QbgZWv$PHa3RL>j
zFigU{wOC-ESJSej3<HJZA`9(i7)O8%OIZC&%#P6zsG+8@;mdWH at M|txnqKVF7m-&g
zhs3xEb6Bk{^>9<{AFgR_OU at w6Z5<+XPg@@mt*y6IGL+YfQA|cu)?KI%C at phsRF7*L
zmo?c&!K{qlwU)|Bj_m1*w#}SaMDQt1w~cNlX9t{0V?z#N#0mj-IOVC8-itD~YHJqC
zaW*mw4y{t|Y#g~*{K4RiUw*Xsq6RM}aq)<i%5g8F>{uUEzQ(t#ww*5yRmRExwAf8A
zFEOJx?gf?u*!Y!L7O?RxvK+u%ayCBgt+nT&**CNw_7%c$!7WYpcC<Njdghdg_m($f
z&M2e5GXwGe?gXlJ4eg9Zm}8Ex{%KfODX+j>Yh^i2w^~<glU70maf%$8tCn-8t#sK}
zw8Z$Krn$LsMHv>plK))GAZ-vNH_RkoT}_MZXw*Y1Hg<EJDxPJZR|lJLYGuY9iolQ6
zrdcSKsHw%KS{b4yt*_p`rEb_BmTph%?-e=2{7Hw&IdIAilE-=D)3 at XfiP7H&3F+GO
zV~C+y_QSZ?EN2{BB8?4AbrHDh(uOA5lPnfV=mmE<Cf%05d>C^jHZIc;v8EoAFJ+DY
zYx+~~yJ&F>#<NZYL&<rxGbFMUdw`Q!ahWUlFcwDk%vjdJOCuk~tccD=euF^_$!W^l
zy^Q{MvPDIN+1to6Y;A>~EvMBTH_!Xu$`uzDPfh<H$dzcYIam4;(f@(09ZRd;oHfxO
zi8U%(L&Ym)`0B|21*gPYNy$83ylnZR$U=N_U{THT75^tPN3*$HfHjTcjk0LNMY%L4
zAM!v6 at np6@>3^eHL`JfA$Nwv_MNXOdpD7nH+5dm56Gj2$9*HBik}n8EY8o$C7HPn{
zvpa3B0+R>UUAfp>ZQGVxR<;leNlpa&&hhwIF$WD at Td)nfr5tqZNW-Rd>}bQ&v{xPG
z7f0sPep$?FWbVqEF4I}uSaX4V2M9ZA)Z3vd_^ptij4 at X_wz+gwqSnTiHRAo!I(>C4
z_q}~$hn+EO+9vAp;<ePpc#|R0yu1M~6=RQ|SdsIDY1z`JX6MpohH~70O_N0C@)580
zh!?Ttd}g+7kw{`2JJZKQzpT at q3WPT|SSP*ceU_|mmejg!B;C#pd9?CJ+m!G*0Qx>1
z%^+ZwUrmTCM2(q-8l(2-h~-3jeIt^&p`!BGNY(sES(T_vs502tS1UI586SEZcSUI)
z{X?%PZ`j#UMXg&U$JL^0#%~8L`ah%S&iB!ADtfD;XjF}+1v`AP)Ud6$Nc3GX9@}A=
z`0<&`I!cMOMn0G6f0?3Xp$JW+dSBE1tC`!maS&n6_I)+e*cG=^bW{~^oODzrqqfYY
zl~At5ukBKk1!n2zcZxAoM>I~x*eN=y`aMoMngyoqafJGrucV5AAba2dHuTV`1;-s)
zDU<J=Tf>GO>y1-OY9D6(GIwlgt3)|&DB5WzG=l!L6|5X}o2u=Lr<bGf@{DZ()Ew1p
z50r};R3o_kQOHg=gHrLLOf#5Oct_h at d%dSU!#ULZ<LO1KRJ~VUy_O$YO8RYPJfEht
z(UtQTo at su7=0lg(EUAm&t40 at KL#+|*Bb6jZ&TG>yPN6!353y4y6)jGYG=pbTa|iQ5
znp*W~A7WE06}M&ToIOs=4y&dvH6Gs93r0DoO`SH@<d=?1V&c^_eQtg{Hn)mI7d5ne
ziQmvj-^jf^H5gGMz0Y`D1Y;5Pq9U4t%t<uctBt83z@@Ru+4MW4#yIpKV)it({*_i%
zcnfbiz81(R;>}w834xjwAgI`9ekDwXHJMgSg3C7 at w*5gFPD_004?`6sgjRljx#vXE
z at UhvuS+?*k*b{}1Ye#D?Fm?3$Z5nq)w<D#Lw%P|0w2xl6fVnbT)6+h<poXQX&uU~x
z$R?h`#K$E+&`+7W=>A_&BV_|UXn_B3-(SXX$=G<MJ&xKUj8d<|nN at d(wdJ(ONm~{3
z?hM;%X^*3}JIl5z`hX?IL0g%3 at uKLsdxDYnIBL5yY^$^#KfjeFwexH%H5N5^oNOyK
z9{)B$Sz_C^_4J)r8t>4IPc99 at _9pCNRnN)g>aN?H at ObE{ITOXc+w2ZJ>8T|=UV82n
zduqP#qUZL``RC%IJCOD`YMZNJw at 2G;*L|-kYF?GqU3Vbuak8!ETRTNt_j3E9>tMrF
zM10eSMs2!Cw$X!oA|HGhkH4Y^_2+(3{0Y6(oR`-qp34f~1*$EZjxTJs;vE2)^iE57
zTy#cfxN~&2C%nTt^MvL2>+GKJxae#*#}4`iM>A>05KF$vepppc0p$8|iQ at 6w!c~U3
zIec*~xf2Y3qB1$)NYCwu at Qn*Jh+?6=p(R3lrBRiSjYR&ZasW58=fJJW&Ego|zI#Et
zFH at h$NH-iN^=vb9*y<LEHsHf*Xf(w{U8+5{d{ML5`f2pC5;V7sk;Y}1=TmL&b_uhm
z*0w~|im6eNW}k%*4J}SiQp!~(@l|y*T9Xw|@kcIbYm4BInYJv$-#lrEu83TOzfDuS
zZ0XXvCj2?qre)E(DRWOd^Jq-5)-K_D{4KvJ&CBU8phjtmmCCQKKC*Z at zCD5uw=Z9Y
znb;jaK6{bRH_4Jrh-rCz9>E{NEt%l+P2_uZc9W;SbxVgXU+O`=LW=wL;xplY&V&2{
zmecW1^dP^;f`5_+c~v$#e#nD-n??Vb9^~6C@~3!^@3zR#@*v-9k)Q2Bew9VO%!7QN
zMShM4`F at tq=QH`=0UqSnu$=C{r+ScIZ;_wpL4MdGf4T>G^*8Hv{lDNre$;|r=|TQY
zi~N}$<bB|!L)ZT-5Au6i<j?jXUtp0x*MoeaMgBYw@<EGy#Dn|{i+r^QdB-AO=Rtlx
z%NNRG^ilnrkN>LQQD?XQr_F-D!~=e(MgEf><a=3OZ$C&UrMEh}>EFlllePT!d&vK7
z7Wp4|kRM`sz5ZP8LH{Q$^6ehvM=bJJdXRs~BH!UbelyGK<=5pwJ`c90Lzn-G2l)b)
z*X`fqLB7y}Pd=&qPMzKSZyL+%{&#~1dB>vvfga?kuG698f69Y=y#;^RgM8E?|AYtm
zc8mO{J;+~Ukw3_T{3?rlz=Qm1i~PYJ<OeMBhj@^`*CJ1Cg7RB+cJtpMi~K)4$UkY3
zf8K*U^;dN0_4gGI at -JEBKjT4uvqk<b5AqXt$<&|PL}hn%cC&xJMV?|BC8y4A@&{Vv
z5A`5lWRc(ML4KM=-Upj1z17)G|Byv~f(QAqMSfQg@>MLak3SFdkpF56{%1YNH(KQP
z^q_y6MSgD&@|_lWzX$nVi+sKZ`5P_rlRU`xTjYy8*#9<*{A3UKgBJOHJ;?vgBEO#p
z`HdENiiuRcQ)jpO_pC+!a1Ztyv&eti1O66^{6QY%^EiWg{}J#YKiMLGum|~oMg9;E
z@<&<ZKjT5Z#3D~IEt8XHxALEDkw4Ufe1%2+Fc0zzEb>Qq at V|PC{E;5yqZaw2Jjl0O
z<d60se~m@{7!USaWswhhkY8<)pW;FP0gL=G9^~(}$WQm6|BywV=5&~xJiGb-lNR|C
zJm8O5<Y#!0f5{?$k_Y+C7WrZi`JcF}j9>Nf<7po73s_!ne^2)yUuco9 at E{+w$e-as
zeuhQ9(u2HXkw4Re{Ctc27d^;VTjbC3Am3<_uks+ at W|2SJgM6n&{u~eTy%za%J;>i^
zkze3JzTYB$o(K8cEb`}jkRP<jM?A>?&LUs!L4Kn}zQ%+6vljV<9^}U?^0gl1w^-yC
zd63WBEpz-|=Rtn5MSigd`G7_K0uS;>S>$O>kh_)S*{%O9vB-bPgZylZe4_{X3X6P`
z2l)jS`DPFD^%nVyJjh2`UhjWfJ;--k at Rxg#zt$pui3j;Ui+qa*`CBaVG^d=a|E;me
zukawh-Xi~H5Awqn`3pVB|J@>gsR#K{me>8~G7s`wEclmukk8vav;AxLAV1k6f29Zc
zfJMH;gZxnz`Kvt0mssSl_8>poBH!&nzQQ6O^B}*#BL5W+^7R(^xCi;DMV{7la;^XE
z7WuDwkiW(v-|Insl|}yR9^_YB<fnQVzYSRAkM$sbuSI^E2l*k3e1nJlKWUL);z54I
zB0t at O{x4bNmwCY7Y>{8;L4G1HJm}-+?|G2Vx5$6rgZzOO`92TwMHcxVdXS%Hk^hkg
z`H)4P)?{;SKf)IIn>@%@S>%80L4J`%{wE&fn=SG`^&o$VMgC_V<hw2MH+zu3)*^qa
z2l+mW{4E~jZ?VW9=b`;rW0C*42mJLc&nK~eYpn<Q-&yeQ^B}*`g1^*5{zokGgC6il
zE&4y;LH<n({yGoxTP*nNJ;>+nA>&_8MwH(}9^~^`UT^;&_8@<t1%HDF`9cdm?Fq at X
z{R~?0AMqexV!@|9mAT^2w&4H91Af?oANGJ>Wx at Zg2mERa{%IcY8!h<1^MD_<;8%FS
zZ at 1t->H)vof`76H{A(@vzxRNDqXqvA5BU8S{Kq`t4_NSNPj9aNf3F39*aQB03;q{9
z;165yANPR2(Sl#)0smPG{u3VXU$Wqz;{kuO1^*8o at O>Z6oIhFM0e>%+*ZUvZlb5Ui
zOt#>k?*Ttx!T+NN{2~iJ?a9nl|7jNdKY5U!VZp!AgS=zG|FZ}A3Jd-X9^@BT at Hcvp
zUu41mt_S&Mi~LVL_|GL4`CB~5cU$BKJm`Nd%j@;$Di8QKTI8?xAivroANL at Ci$(q#
z5AwHJ<ZC?0-)oUy=s|wHMSigd`QKUOFYqA$B+KjZcc%yc8L{AB;X!`XB7d<5`7w+B
zU+^Hm#e(1H!G06>%pCuG)r0(A7WuDvke|%*dimYuA^!o3{0a+x0NDiD$IB%$)A$Xt
z{6mo>NnEJ+Srqk?xS&2QqzHU&_R9^B^+!s=2y}l9m#RG~V7|j}CVbv5$yA^3tuG}n
z(=LctKaRo;rD at 9hmPoE@c}o5Ul2`Jg7$=c`=$Ce|JWqorADQ_-15a%7`8mpe*+o9U
z@<%6;<%Nmg3bL at jq5sAcq(zjS$^P$v*R=osP~N701>^6V1^-7b^36Hw|2 at dt^dGb6
z|E@*<Q;;v4{(U*>Pjd=3`9YT7CrkdzVP>2BaE|i7b&(%o`9rec(>_%jetx4AJT!~^
zA6?`_Im(}deI_>i<{agpagpz1dEUm7%!TRy3(;`d at CR5vTlt*_d7J;`eJ->9Oazcw
zf1Y!}A7uRLNzLVjssD%ze!zmin*~3H2FjLy-%^Q}4Zjoew)~e^@bfJAN5ddC{7{bg
zw9aC~udv{M)Pn!G3x0c!_%zRK!>_mC?`6Sn#W>lP|G^ybn;~z*Z at 1v@W5M4aagGh&
z*OXiNPlmh=f0YG4--5r^1wWJ{{u&qj0So at eEcoZ|Y0rN<<DZzN{+$hZTmFYE_>(R8
zTV3!6bHsnw1%JeXzpn+qZ!dfPeamFVv*rIgkhkT3vjxAvf<JR_JAR1q_sL at a8IZT(
z=g-J&f9d-hsIKBran0{t at GBU9VHW&HT=0t+zn|qPexmo6P5dfk5M<wOc&;CVIpSAB
z-j at Gi3qHL+Y~ugZ1wYs<wfTmw6t2zw=P4Kbwi7e$AF$w`>9^;9nDOUk!LNY4E&siY
z at 31`CpWYuf^Z$kme&9kWNZ$<74>SL-xZrPO{9YC&e0qP?#Q!4_BnY$otCvf`r8+pS
zP5faHZ27N0DbxP+{-%k)2R`0J_)`s>M;ZSxnN0F2 at zSBrpJI7ae;>XJMaOmWl>9aI
zFMzyF|8~}2FF$(!&eZ=V#{Y;>f39PEN?Sja-imh8$L#j+WBF4QBcDzEOCfL5f5 at W$
zQ5OAgb-^FY5x?IBKmTM|aJv2I{Uy_W2Y%e1|Io!U!>4A+|9+6S<-f{;PwyX at _&;*N
z at 68eadoK8W7JS-2X5t@#4Wb}t)V~qNe}o=thgtrILf)4DQO4iMvQ+<R|CovYeHZ+J
z6;kkC4Vx}a{BOJ94~As<x3N6o)BX(;|L{-P^WRJp3pldj7ed~a|B{)R_$3znU%TK3
zS4#Xp%Tw~#%>U0_ at CO*5)@<pZ{GVXKFWFb--)uj2zeLJ?TAq@>oLut$_bhL=e?gYd
zrvD?5x7p7(OWIG at pT0k5mS5$5F8W`ZoBj!w&(NRc7bJ5kFHHMC3wfLV6|<%OgDg+>
z4_Wj-7=aks)WpAr at r~)jWWU47`VNG=4L`pu6aN$oeiP%H<-dvX5#FX9q^o}1$MREk
zBCa>H{Lc-#DnFIZF8kZ_KX928{JP9WG8NPQ at 4MuGnDZZCAhQ1)Oa4!0d^7*EuauCT
zNo09Jw$_gmAaAq(*c_>N0qalr^i407f2b{vHpVyYH^lf4>0r24^2&bKDEk?FU+s_t
z^&Xmf3^me at tCjv~RN#D`73Xzq(x1M+r|^~jeT;9WTN0BA{t)9c{V?tK9XI?+i63NP
z!l&=|nfQ0A{2L04Tq^}B=F|_<e}1L#4fztrr#Txs2%o<HXX1~!;OAd2<<LE+9VY%J
z7yQut%>2{$15NzH53tvtAmbmJhMw7f7DC?Uzs-#Ausr3TzCUQ<FLc4LX8dp#{PSG!
z*D${FGs36u7n=BkF8BkC-<k#g9vA#!i~Z^QhbDeL7H~k$XupHslE4RN!QT_|Hv9X|
zl;yAIpT3`H;!ktIuV(xoX2Czk1;2ptt684xPv2iO at h@`0&tD}4v*rIn7yLF${^|RT
zCjPfw at I#EBt^BWZ!S7{!z5R(;@ZWI3AIuT|6&L(L3qGyCoB2QFK)e5iZjkn;Z|>=b
z+5UVA@;3h)WBh&=rt+_~;Ky9>hrcZa4>uZo6Tj01f7KVI|5MCN2jSEAFU|aKb;0+2
zU&=+Y;J at pFKYW(N*V}*EKVahj>r;07SN}-jXS4s)khj@?BY%KOw||2L|MLjY$wX%S
zIJR2iA1qJFU(^0&khkHtpPkwM(Dy&h{BLx at 58Nane@Mz{hl&3O7yMO>-^Q|3{<Qzx
z#J~I?d;W)iECuh>u<6po|1#ul`OiNmGylsh_`h|*@BN7czBLQ}!!GzmjIZbaLJR)o
z0ek*K>^St!hJIw^AM&>R_c8t;3zPj at Eco|89^_2_`<WD6jrl?SF!ApQ*zv2+mG)o5
z`V)Su1%KYbcKp7(C2F?%=Rn?;|AO-+zFz+>w&4HD1wVMN#P6oWwZqK+tuFY3jK3L}
zbWr|j|B31U at 4Mg+4hk_}w*3Fw1%FL-X8u=N at XtTQZvTo0C4NwzlD}sDuX2%ZXL+cX
zc9`;4K;Bk<)is&*_cDwAdw<5R{{Z9DJ2U!W;^#r$hTq2cy(~=S*KWagT=1KD;78x=
z(GL at UmJ5E~!d--z-hNzZ!Ea}LbNt!=utaUt!EvqpPpS2Qi~fNPQt&;gMluys|9c^C
zvtK*wKgN<|Kk{XTU%>Q#yW#&<GSD{<^~1z}(*?h|Rw`c2!h}!zH%<Iw3+?_Bd{hc%
ztAA4<Z_EEM<M(U$F$?~;UGN8gF9oy4zb^P~i)8+T8b0kmHS>QW2ACjcwEv;Uq~H%&
zUY$()mq6Z@|9-~rWkIrkj|Kn7F8E`NA0p+n!^HoA3w}vmX8vjap_%_bGrn1Wf{#nk
z<1}o#RPsu#0}r#?ubJf^Q;eLBssDbEx7n|r_1Eq94U7I&F8HB8NWe20SDj4!N*Dai
zjPI}@mEW}%{Hqz?wBL1%U#fultjwX#ues<y%<{D7RX<GqUvkkuv{;ruwb^u#{@=3b
zf5vC+<rn;ulv^fG$zKzH9^`H1H+X@>*X?(M1^?GB_<fAORvC&lF!6uxf}d9}@%8 at W
zI~M%;MfUtxZ<K&9XR-h3khkT(o$;$#Z?gY)E%?KXZ~9Ng-=yHzSzev;_(GZG_`~h`
zkFor)66CXKzp0S7=|95yJ1j@~_gVD6&INz)?^2M~Z1ls#?{&d1YLMmE%ff_DV=<L~
z)qlR=g714;3TDIqrwjfX3;t>ge#sGb`-h&9_&?5)|6?I<v%m8tng4z*|CE-Q|F5~=
zkBvydr?TLG#RY$i at dq{hehdD;7~k~Y;eSfOn^<0*l>SPslaI99ul-+A;%Jn+ewhAq
z0_1J>8(1Rkr_aCKY|;N4F8Bk_Nz~hQa9o at CJudj8`~hse{kheGKk9<t{JaGIlrj|S
zVdDSG1;2V}rvLoHf`8IccKi3fAOW-GzZCK|`{y-Dd_DiawBTRsf?qM3TmHZ1g5S>g
zdj0ve1^-1C{N{wjzdnoopL4-4T9#@5+b#Gf9c{ON{w9e}-)z+nv;0dTZ?pff1^-S9
z{tsO6D_)kU2kYRtHt}zC!EbAp`B&{UwcmGH at E>x)Z_g2b&;`HOf`5+%|1B5%0mfgu
zd%6M4{ExZd_cOje|3k5iYX6j7&X{5^|K_(O?se(#8TOwCd0Y8cw at CXtEKl~o--3Uq
z3x59FQgHaA=?a+n|CI}VKjW+Km=pd37W~P_*z-RkMrA(VpfVV%VdDECZ_EF{#oYeL
zlZb!US at 17(!SCAx%sAA0Pz;}8|3(-5qLmU at eMg$||Bwa$_b&LuwAmO(odV{wng2&z
z at HbvA@q;W!_!}(vZ!o^uf0ukh;+u3;9P+8pcRT>-+MK^{W_k4;bCnHK|EZ9-m0w=F
z)PEFu(?R<G#-jgH#y9ocxWCkJKPjI4ReG!Qqb~Z7v3ze*QeNa6_d}4k=|6U*)L*ZE
zk6QFEEVkRPoi;n;_=|yO;vWQg8-7WL#2;jNvLB7bRr#s*=R(Fe?RWMkC4RYqFR4;z
zdi11={sS!kFR4Z{6;uDmT=d_}`iHdgf5M{w6evzQnf}*zkks_^N at 3Q(#6KMJR{LEg
z71!6#p0waEVtmtnV*v>a_eeXG{gqm`xac1^SaN)c^RE&y_5X>B{-LX-{$ngi<^N}k
z{+nFzd+Co2;V8(`{y*=6AMBR+MOyj&#e!dYtiAjOj+Xc@%M<4!Gya$cd0Y8aeMRE;
zvn1vJZx;NUT=4sjk-+n^;P<)U`{ELRqlQmoF;)Jm{_Q=@p8ql0Y>Oisejem)`QK>4
zf5w8}>VhAl&9*qUir>_a>3_{G_ygC-{P(gb+5aCF{HNUTkCpgaQqbbc#NX(GAL_}(
z|Ca^7Y`We4A=>PV<6ZHa`Z4iCkhj@?*n<C at 1^<_B_|tR4zr_W=`m34wf5C$PDNOJZ
zlG%QSXtObnZ22#Mye<D at 7W{+-Kjwyiyu^P+Xp#Cc?ceEw-~P4C{BN at 0zvY4-<cWi9
z`5$w^&+pB|r?$+j{|k?|+do(;^Pdg>JjmPZ-)F&p)q?++8$M5*WyAlC3x1F{zUuY=
zH4FZX5|{jcPUb&b`5zB?TmA<v_-|P7f9irCppUiTct7QO;>z^D)h_rI-;m{B&GOX#
zy=B2a7z+f1WY)jHi4q^xJMA#>4}`oe{{xI)z|w^Ojs^c}7yN3*SKonEN|^Xpy5J8n
z{s<|DgYf at t!T*~ZewoZaeRD`ZO#DB&;P-z^+MmNPf&U*1{;en2?H_U^{x$NHRKdjW
zhrG at HL#rhIMwX=fzh}XZe9n$PTrPoW%~n55{Bt00!|%I6;<st|TP^snGCsn%wBxK(
zCGh at fRH-YGlv+z>*!6E_`9zlTTMT)d{srI8EI-=gZnmFKyWm&T#|CliA(Ii;^kdrZ
zFE02c-^s+EXu<!&i7xs7g2exL7W^>eZTYXdQ3~qw*VIOs`CspX-#cI8=V!sc-vz(-
zyP5cT7X0H+vgg0=EQ!xyjH~^pLf)4Dq3=n2z5aaEf<NJ8iH}EV$Hpp&e at YrPWj{sU
zqVN at g&wby|%>P~%{CyZdqy0Wx;%D1Gx(DQK`QO+l at i)t4MEkXm1^@Rh_!Z|#LEZ+Q
z%$@1~kGS9u|4`!V?=R(B at NWpQ{qamcR#!`Wgy(4o<yAkf4cYS_Se<GAk6G{+&$RpB
z2;-B^`eEk32J$xhSKTD>b^oKkpJ~>=6Hl?@k1dq>|FRB_YZJc&@;3b7k0pMP<*EPJ
z*Mk4?S$6#9T8V#s7W{o6Z^N%<{Avxqz=EG}!OveL at td;XKkI@&$oK^s{s9*J^|S5y
zZ)f~(X2HK7^0xeMwAlYZ3x0o at 9Y0Vf^ZzAzN@`)2|BoPV!_WK4E<&bX%m1e>_+4}C
z_`QoI at DGy6^1{S#hrA7cfbpv}{D1|&dafNmbb-Xr*8ZOhc^iIyzs$d0{|>R>AK}>X
z+v_F%l-<$|VCMf&$lLHo89xL}I;j2?TJYaueDnRgfhLKct^FHw!7sX5=3nps53}Gu
zhzVLkGW(w~#?RLNtcAQS|JAohe7*glxx74K4a^JjdDZ9b_|3~?{&^c5b7!`H--Nsk
zznAgbWirD4M_BNyPPOBYESG|}?U95Q7iRfaLf(d-|8trD06oM(<$sg~|7&48e%~b$
zpZ?~Bewg at QfxHbr_$!IeZY=PpSnzk9XU7j+F7c_)(hn2g2YDO*s$Wa|Rhs>S7W@@1
z_|;cP!Jo=xk}8<^Q5XE+?NU&mf1hf>-~Tjw{`0#e{_G^OyfE=6L*ADEk~<`RkmafT
zr&;hXbHT4>d>#fRwJ`BlxZu|_e!qr)oCW`1F8Bji$^6$Qk>!Pn|FjE!{+*fmFR|cX
zbGqIB0Uo$!!@nBxHv5Mx__P<oY=5R#*ztQA|5sV^AB4OOznSsdH2cr6;6LqxU(qe?
zpAG*nF8HGs{F5yBSAW5t|9skPjpHuXU!C&R1)r~kye<FLYh?NB`KP|nw14mnJN|Hv
z_(wwChQHB*e~JbFFE04KUy=F$u906e|4+K$SKKA@@31`8|JfG&36=Kz2jdcdYZm-1
zF8He$Uypz0Sn$tx!{>>suV=wO8}c^$H{YFE{~ZhdfD8UG<NryTA*qFF|C?R#`xsvz
ze}3MAKYza6{sUi?z|UvFKOOS6{Eyuu^RMHFE%=*V at cVit@Z2o;Z at A!x)=K;U%ai||
zX2GvH)1LpauS>z_vfwX(ye<FL_hsh4!h*l+7wz~X-^>l)2YDO*!2Ox{XISum>ViLf
zoy6y6z}5d&yWsmCkobE0H{XK4|5-BsQ<Dht;+$_u{AmVV6^A<C<s#q9^1KZsnTl$E
zmHhctcKZ)-;6~pk)ep1&oeg=L{o6SI-MdO@^1mue{@-=M at B6;ga73Chse+0BmJ7ab
zgA^R%j1vAi7W}%i?fGy2krez%mi$*k-j at HNA&Eb%<$r+%f5JI-{NT?d{y(zhe~SzL
zs^3dNeg5x!3x1;ue&FX4|7)zjDge{|7eL;Y|K4GVzmWyW{?!)zeb2S$e}FdI;^?8o
zwZp`p1bG{N{o at k9jqOMH3oZCxcEJy=k@%NnDgRa%{E;UmaI;qai!Av2F0ki+ at IHy3
zpDq88x8=X$uM&SmCL_jwi!Jz9xZn>zn4A4CalsG%J=6a67X0U2 at T)gS{Nu9Nf5Zj9
z{~3wDMzcTdg;MQb0sGVy=h^Mw_o&1_JB$4<fxONB)z3+Mn)9H8{IAi1|B?&7k2b5}
z*dTsWKc at e`;DX=%g2W$WQNnMs;5+Br^FPe^E3 at Q(7UXUDcSa>XeP5go!f&?VU+02f
z at n@O;7a*e_X8wC!@K?Pg at k?Yf0)M#$|3w%4&|jtCC$r!`=Yl`{vc%WtU!oTL6C%?7
zX8(Wg-zENmdggJ>*-4()vAj8d*Us{P$g=<ZKFHh3ujEy!|7NZH=<jcs^=DSK-G8c|
zm74N4iexU#@;eFgHvHh55}$mA4)P!R`{gG7_0^0oxU`>9iEm8bWvrik9r6NS6Q#?(
zw<W%6CkTI~1^=gz-v|7Xn<V9t&-hATMOXLgyt>+szs7=3fB#&`DZOroJmu7!KMpWH
zwr8gufwVj9DXEt7yC7}-s9<@sycE9T9jmsN-!SVRWJa=IyG8%$HFo{08DHg7;hFlJ
z?IPdK@@D)TPzmw*dn|9}e~k;ing1IgZ}VT at JJKT@#-aRoTJrxd7yXABe?LQCGyi)o
zw3pu~%bWbB{<}fmroY4b>*aT~MgL<N-}FBpZPvqaxS at Z*xL at j`e~{(P@;CLbchSGi
zV*jsL^#6&A{?&|sp`ov-|KYWE`)|xq|3b*y>_2GHzsI8g&5WO6{}-kG=Va0UBa7_%
zJ1n2gf8KM^KX3Cc0$KN;UW@)`Grp;Rb&mQExai-Xqy9HTej+ptK{x#<vFQIzi~hUU
z+1szd9Q8k+<<0gdZ<8#)Z1z7J@;3eJE&5+?(f at WA{R51j&42b<Z1<n~9QEHF@;3cf
zS at fsB|EKD|Y8Pr5-}ImM9QD83MgO53^}pRk{~?S1^!F1@{U=>u_n(m*^{;1n(|?Ly
z%FTajA#bz)W{dvcx9ESri~b?TpQBeQTnCK%ee3Q1)19OKlOS)?zv$nY?avP_`Y&aC
z(|`JM)PKE;{-ZhSf4__VRTlkkvgrTG2D|_GXtOwuS%$p>#{DvuH~q(9`E2dammqJm
zf44>devAI=T=cKbQUCqEWcQ!`9QFSg<Zb$|vFLxZMgJv?Z~D(*j{4v4qJQ2ixz*ph
zUGyKd=>Kzz{vTgr_n!dcXY-#6Sl;xX`W*FN2zi_R3*ODFzrVETe~*j)?TnwT{rOm<
z-G7F1)PHZt+w^xV`rl^Jzk%^h{~5_qfBHLN<SC~8i|Azy9NFscJudpUS at gftqW^wN
z?fw&D{A~7bVtG^l?i}@RfV|EA{TBW2w&?$mi~fB%>VII9-TtFF>c1c4ZTfGt=)cyY
zf13;bX2vfPUXc39OI?bq78m at y|76y``z`o4x!?!Jr2l2Z?{mQ~Vf<>=m&VTzSnywT
z!FL$H#K^Ci|L0urS22FChQH2&zkHdD=}iA^XM7XSyni%{ytHB}6XyM4%{zvFMHYDz
z&%FO at 7I`zj=KXXGu!-hoKNHWq|7sR_6VJR)WRW-V%=@{^?e$-kzo^`);`0TxYq~rI
z^0xY4v_;lG-(FIH{Qpsl|2 at h0X8+OtrqmQ7X@{x*^)2 at H`^p^U&x_jg-^cP}Y3P~p
ze--4d`R5OR)U(2r|Hm!)e~j_X{P)t!ayar0e6##N(rWj=K9)E6&HI@<D1RB`Nz;!R
zdS=5{di1iqS%3O-)ISb+oBezDAZlu#F4>>nrBk?S{5|M`KaeB-JudkD7W}_h at Lyv5
zpkco?j6cPoEB{yLw^-g_^F7b<CSA!X`mPuGe7oZYs-+#HEFVatrtGK4pMpH4Y0Brl
zEs+LJP at M9t?60T=kQe2r2z(w?_A8VGD!->K_OoG=#G0VgsCl-O{|9c52eZOg<-Z3W
zb4w)|`M0Q5%9njRjV$u2QzqfYCcp7$>3>s at KmCwaNl}hDetJMZg4&I|mcPeMn<k!=
zOf8*0Ra{kn^zyRsoR3VHkc6M$J1IjyLK>QqLJbM%knc?2e8Iav?&;|P`2R`#r}er+
z at c%RTPxJu(AI#TO6o>NlVK{%5uZwU#oUf0-`AEJd-=*~%N~akAr}8yknHDsPZA$t2
zL_VK{^T~XD3eL0mnu?LqDdRK6<#a!n&kmnY#W{@sbiCpJ^t&_9n)$_<XO_p_n>oKc
z_U4(DPRC0{i=6nxLrG~THoLIEiO<b*O6TVLJ0Aq8_~md9>EiPr<a0L6E)@Q9Kh at 4r
zqAvEoIv9?XII(p-WfNkv^2+103-g@~vjX%GXG+!QpEN7q=^Bh4818Awr=Z;zjy)fa
zy|Z=rjhX&s;lh0Xq*DV<PZW|pmlWnXu?2MX2@(|`PW%!Oy0%7lbK<*itpLcGc}~y7
z7oCn0U+b5hco;Gr4^41lcv6<{96szkuz44!^dbM1pWnK5Yk3ExeNbI=9ntv$C>(oX
z=GOUz1?BPcAha~!DSawB$%#GVbgavhn59p(zUm-11&f>`rFB{-J00tb&OLADf|=*d
zJbz|nonT}Q(-?P6Jt3RJItj{*ynaYr`wt3<`>rRVMIG->Xx-C^9bY`S&VLXJw&UH8
zw7&6%f7x#SNxN@)aq$%YL7gP-b9#0ar`Yb`>|NX|(v!4GC-xsFepbE{+uey at j`Djq
zTHwSsFBa(uI~6${gP=dy`WjhsFDKqo;2i$G)IRpieF3C=uFy=7dX;`6(fH}Gx59Qx
ze-oYT#D*64igZ7trTYjT#4iT$W6t5f=WHTB>)>S4s*6*Zfj>!KoH<{5p%c3V&eyfo
z-}w|=M3~-*hmaU~RM()tleP{JIX at h4E|}N#w!bq1%DnhxxPjCGxG9fEki_5oojs at v
zPJ9V&UiNoBjJ$>8bzpne-${+$ym(_F?(pabxPv=^?}^sEHZ5R##U~d!@h<~<a^dJ%
za3Mz!PRR!me){>K6PsA*ls at L~>_^H@{1g!8!v}ksCrEq3U-Ry(z%zN<F{9Ae`ZK`f
zm&Y#+l=sX7KM+bEi|!4F4JPG;NI3Q?CjyqPC;Xl7Bc1Zt9}{N^MOH$ASwUnCF1sPR
zw-d*W!WHsxVkuAAyNdLSZA!fM{?@Jh^v@}s{9PYInu%Kc2tQ%`7X$~Hr|Uk*r;5yh
z_D)Y(5Vln4ruGhNFHC(J5)Q|nOSA*MJbpQHJ~xOGlCtITxrXN9*jCp3Z_$eK*fWVK
zkRv}Vhdm)YyD&%vN8<j at 3ZzYqO-33i?K{KZnHPI0vA4j#3`xuZ{`m at jPKN9|N&LL>
z*wcw0ya)Z`XqL+3>B6U#$E7eif{<a;r4l$%v|@=cB at vUhSBbZtW3(e^3Wa=<VO<zG
zM%$EbvOAT at Ow^RweoUwZiTk%~-HP@>we at d_Di-_C{p6CUi)hlc20yQOPy)x76oun0
zDB-qXd2GECYYRBBqY9ml_x%2=ub}$W@!kY~*Fm_N>Az#QncXmcd91Op=;4XSpeb8+
zYAC*o6JJ?Su9{l95MjkkSZN+O^Je-dg$qN}{_Kq&U~~bMq3m*&<cDMb5|#B@=qMCL
z2}r$SFvrp&rzZr}R-)>x420o`Vdz#abh{N2xPorq#1(Ygy?a(L99vR!3TsvtikDGm
zBsu_`g;KFy&@F|^W9I|8B at eDmZ4cT-pst6%II&si3DGf7HE4vQ)bivd`vQO0&x9 at 4
z7ldOYT9+W(TdI2hKq8x#iF?t~EI}HZ4wlbj&lf-8#5QpDX2H%IP$GrEgx)WPW3pKe
z$6@{W%0MCrQK|=MX~C+=lJS%<UBft#ew&LE_MwWCI18ExlI(vrXnj%Uwbnu>{pXMH
zA1C&f=wlErgyRcg2+e~EiU&n~-y&LIn8}Hqk|&z%ZzC29f3CW~-`R&NXG2I7L8?Ae
z8zx$K5jdpkqcAp{u}I`F3?qbNR1Z7ehcD8bV7Qv#@7#nd>Ik|XqziCRkq5~cD?{+L
z`Gs&va?!j at pCnHuzobHk2f%F4kM5=W<Gk1l!XIhFK1B(lTlp&$dK_U+tW0K*-s*Qg
zSA`7zg047&RBED`M)vlj4h;UKwbLSZC~Wv~YmpP5Co|{75XZ<Ieugkb4)?&7$l=kr
zfTJceSQaApwfc2=EP@=ZO!~AR*(0|;I^C_K&1hp)&bkgm-bJ-b)j8;<)j6A<E0cQG
zC_U*lE7tRPDu{W|^VCqH63O>czEk0pzl-*tQB#;+g;M=Z`38z^eZIsk&>ZoC|BgxB
zmBGYY;tp{Ihm0!&#ZR!y&qwb7yE?H-bdk}*ym0JwRnJ62j$#NTZcoa`D-f%OL~|gz
z+Sz2G_$dYDF$9<hSoh_4Aoie$M7joB-xQDH2n8r2nGAk%g~Xn?SlpYkAGt1hEw!Vt
zVL8HD)NJx#1UUg&$R{O at _ayQt3OP(xWH%PpJD1#eL18E{4gE;3|BeZ0*%IGP>Q5oF
zr6r+&2~CNzfUpf`AFavxq^oR)HlP4t-bQp6qJ1&#QHcj$?C}}!3ws=Z3-mu|ibXe(
z_$-Qlajz&ZvPD{fi7H->016g*9c^D)fl(J9NE|E_q^5npncZMa<csu0da3-UT0<B>
zG>0<5RQ_dq_-z<K&~j-HC66Az%Qlnj#gS{kYz&>!cVwLDP_Pr93xA{mOzb_3xE4G9
zrgii)wAkPHfd6o6fe^1gj&gvH(a<T6%7nacSJ`rGC`&e)`A$zO8rN1dnXLh5Ls^kz
z-5N#n{Lj&O?^3t*V5<H&vB#bG8F1AnTHkbH^C0yg_di4zG4Gq@@%e>lgAPRJGY@)V
z_!K*{2r5OtjPgPoIeONc<O5#9&gjVqIX68><$ZCUvth36c4IUyxENZ`6<SkKAh&25
zIS>A>5;%#}FRh(u-2-hzfcjWD;L=M(>#fi}gnK9o?|61_=GNt#VUp))s5^81%rnq)
z{nokSrEXL&l+|8`k_O1{Q1K(}_ZNcb^LNs_tj>lm3RQ_f<67MI<CgUEPwMK%B~Ghw
zn)!ur&#l9_h&^5&`^(G<2Y%ZlM4j0CDt?dO{t`IOIlJra)+z04M{$h;zHS6(f9E%;
zGmH&8M|M#v&MsXW=~O!GzvdqR5BL12511IDjuJK+nlAd|1DuGza~?^@yC^9mg$cX(
z?-0YZPBcz5JM_9ge^&nM{;IA%FuzXYaE*bspAkbIF;KpUAx~qV_gjepflyZ-3diZW
zJztzwHj at Y$$C)rIKw<?#Rj3T*hoH2&P3GW1q!sTdLiRdt4&ZkJWorqDDw|GxZAc{E
zMWH<f2B<pnT8(d<_;&;J4Bk0g_~t#Y;f{SX9IsV_5;T2Ega<v(2t5#_ME69T3EyNt
zTRTR1KnUP>;<x)KZ8ap0mknvb9{GgRQ at 8QlndivS|9Ry-3pZo5-cBXNenXer^qa&w
zwBo`~ZyEq at xaamkoX~)6=xW0SX1)P(J6)0?W49BNP#lgUshBl+b+LaL55>EP!HHc*
zsrV-WTRzwjYOaaaP4Q0(<tq}H)(EChK#}k`s9lG&>k93<8ihbG4^PZjlQC<B^3=wi
zf&Ab(;U_JgI1xl?-*C@#vI&Ma$_+YiC5a6}fBjM7I?#J9{0m(8XS?w4>B9d8It;W&
z_lyBmD3j;}CzoIGVB!IKj`PJhJMlBA>?ez6qIGwU)43q at M=$Xsy+v}nrv5 at ai(`W3
zth}<~N1XUaop at VGeBW@qy&Gyd at qu=n636{V*^l_SkI7H#V-VV5jt=3-(Q8nHeDENe
z1B1 at 8Y4dl{$_iS|e9>y6FnInbehj9G{CCXWb?b~af9Iue>KQHm&MqVo7e#_P+3g2a
zYXfN6)9E=HEKu-L^h at Y$?xqQHM;0!dMLzjlu^M~G`y=m0Q)T6xboZGVPmXjpOe_SI
z{Vet>#yT75UJ_U-^qrSIMD3fH+lZe?&q=E}chl5qx>m`Dhdc2~80}crHc6j!H_gwc
z3B_I%HckAL>Wi%3nmP7QnIl2%yJ$zkJ%^GOswJbykmgj<{9Lx>iBmyOl}BcN at BSzf
z(lYJD9 at 5Z%OUmk5rkUe3?NblkvwV~xB;Jg}$T4w;s1hNhD9fAYawtFlrh28O08uc)
zU4%6gPva4{r<roY)HI~(yP6(KP-}$xo?*97yVz|v&;^{<<BR!EHHTOp+ajhB>m9_;
z>BG~i;=vA4;uHK|Ersi92K^asot{s at Ah7G_+?-oHm~kIfHFh9DIl|)I;=!c5^9&PH
z^o{vJi~^k43=GRJD$x@<(?JkcLg9K)C!cgTSvkFUMf!)9$M0x2l$mrlJkww%ILw-b
zs59M%24A6MD@~D?828*Cgq%c;trG)N(S^yD5)o-hyuVlY{Hzj3zJiOP1qOz*s&IC2
zZc`H~I0v8tdc#>kIzK$Cgsv;(b(L?!ta`fKFsqGD&W4V5I^%F+9o_QOOQ#JTtB8sN
zmxJO$TnZ&|OF;_h=%3WlCvH0i<Y`ErHsU0BV<OOSXs#D2i8v3B#0(im_R+JQp0#6&
z7tu#MT{k4C{l63$E2|>2VS*JGDw at C(WWB6JJt;{(xsS}Kyj!kFAQ&wO#~a!(#S7;`
zXpiwd%46@{Mgf804un7P;=fUMFc^4%e*Ox=+0RpDYFy_(T$J0ezw6bBH2+YRPYW at a
z;3zLG%ky`xhi72C8HCESdoG<or5V6=svu=mg_$04VwjafVzX&RAXP*~#Ezjk4P<Fy
zW+kGnX@$Hvvvun*LI6yk_$O5c$Zhc>mSZrvME1jo{S9GaTA9IU!MZZz at 0tQF$rb^Z
z)tMPo*|9nkqSYCxQ0G=;*NM--aO7#M&p4^|nN4DSMxtVo1`9TFeFoEsgXG;%UUW9J
ztVDCgB{Lt!j|j--^<b8g282cQpo*>>x at s$rbryER4s;g2M+1*?Zk5Yb6>)m{`-n*y
z8O2Q3WPCxapbJ8)^34RjUfkkB_<8w;&cb%0;Gk>e+Zfkl>?5*6k?<iR+nBpWfak<_
z5n;L0(^B-h<P&jxc?^R^OkhYF!g at sJV$3TEG6aVZ@^(p~Ba)8Kst2K&2+cE*?fOxN
zLgwTW0|1jP0fp756R8l%iQm%>tw+y<Pa?{u%C71JE>d-3CF%rP2U%Nip`LJ^kg<2N
z1*TA1Yk`L-Qqfyrf9IV5wS*Yd^!Yn!`PpoV{hgg8k{N4=)^dq0Eto8yrb*zsrwU7P
z^M8`18I^6Wl;Fid*;m-wTokHGJMNT}$5CXpzZ5O#4OC2>h5b;~dFTE1yAFdPgy;3)
z?C-oEzf!V5V~kS?xfRU4&yGXEP~%Xg4RyXr4Oz$f`t(UT5$9;d_ETuf#g=$*Gsi*g
zcO6Q3@^_Y at V#~acF*wtSV?Z_2xj{>3iwHkvBVkl#)Pt?ViBBRN*XA?WPk4ok;*yhr
zos3JKNsCJg at kqrbvWM5?#86X at OQe@3ilAdEKFh=tV^fP9&0S!8k%4ot9yg`yw;LXz
zl_-J*5IVk**bQ+%yP{qqt=eKT#R*haJT%#qHvW+7%5LKiuXHtD5kXZ!`{ngC6EL?5
zKc`nmCoc9E4dL=Ca%P-G-|)IWGW@##{0A2Mk3qW+H at J#Enf|)}?7is at Pkw`m0t{2A
z?}m(|I{qWB>JyKvkl@)=d;AehjTJp0O%Z#@S>wyU=}Ef7ioWANeN?t2AMt<nEzmTV
zq;*nN0-}EUJAV$6t at ewS<m-4SK5D~87uEc7w^n5F-L!Gf5{%7rVz1~aoGAKG3u7TN
zt(tspZ7dB)$9hbYjh=fR<`&4ZhXNGmNs9{e66 at 4>Bbn)FnW}>yb at 9JV6o0F@J>CB(
zG<T^V(f+iUUDl0F-y|Q3f3aSS7ci%|XG)J<p>D|M+`ZMWit744D1P}ocAT&Fi)`ed
zMGiDqIuIsdju~n>5~VKO1rJVxZyYnU{MQ)WmiX^zrv|cPY{I%^eH6g!QtbihlkS<V
z<e3j(Z-i)PgwMx!dw6a=_J&;D4i)euCC=jq@<%yQ2w%r8iYs1P1z>HwjTixh;z5d~
ztHM3Eh(0_Sa?vC$iVPtIJ#Uk9w$#-UM+q<y#v=Su7a~{?u>z5siHy58A3}p}y1}7E
z2 at bCN1d-Z^TSVtUfdc}tTM7s8z=?}|5#Ji-BMtIJ{?TcpH*PEpNdN4)w{Vz5)VgZC
zQ{0DpRu|?WgNyz7Hx_OL14^P(tZGwq=TLG12fSkf?%G1yW<-k;Mf4;@Pc{o7s8td!
z9r1VWDq@*%VF3lT5Bm4*6v>PI67)wzMI%PC4h6XtqAo5VdhA}2k`udD3LsBnOB3P3
z>NI!w at a_;N+s3agEWo`Jd%!7u(cgIj<PouU7ShzB48Kc<{GETG-~s_CN at adwJ;602
zTJ(25M0CV_GKp(M(quxCrsH8uh;$Z~;4U1$x3CWs4ivG`Bsvr8@&%)zr)d8HEzqBi
zT?rRs>QU_GaNE;><(+8Wyx2RNFar;jItwc(aV}A_ltsbnC5i}lE^_QZhHN at WHm$-9
zEVT;Cku|Du>pxt23t5oT2*>I%>CstOk7tx!@({Xjrh8<JvM&m|jTr{PfX1e?aELfd
zUq#3bb~1c2s3SQl?{Mi0@@ZcBQ{CerOFm8U?G-q;pNJoyueHrtlWHeA3kN~Fd{O&K
z(Zf_y196SO$HgqYrI at L;6yd at m(Rv&x+?)1osYW;^hLwp4)bGY;m9(!BVOHy(Mf(KT
z$$xkjwFZLAiQib*2XqRsW}&hajDG2FBBBZ)pbh4>$0qtwvDm@&?GkcLH1f$2cbjH7
zs!VuTkbI~I(Xx at z;;_GxU9VWb3a5<y1u1Wa2T>`i`hl(^aV)aV?Rv73g=4E_sc~J$
zR8`_eimh1hYh}fW{RwMD(V&A3Y1l#q%fyB|-p%uOd=HmzKR6M?6kt(tinf5(R)>UL
zp-(eS5R<o%I*DIU+P#$6Cn>S$k+i&yM1-qSrRJt(eqqJK6ZaF&NKTc=gPi{k*<f^I
zqExmvf_c;9{yVM}zSxbSDl1HFLE=*MeJMX(fyMbzr{jgqPHX~}SmN_{#nt=?_!)8z
z-&}t9;DoV`k<A^O^Oo<6bMX_g$2%Ux?t^JqSDWT9eQ-I3Utuc6+t?&SSlvk+0Ei^~
zr2daY|LVVU{;uyYM#Ar>@h6@~uL|v`&cr4Gd<$5%q_a>zE{vhaWGdcLdv>trg7#-(
z(U7)iVg*K29<l#1KQ(7VeU}qkhq?SbtTUI0+YKSAy;wyOBRQ;ZkBHkC=HWuJ4B!^X
zt(wKb2qiU>6C~c9H*=F^#)cLJG0oIL?J)lNHi!iyQb{N-9 at ETu>@USn%;VN2jGDg-
z21080SXho)sii(ywA9!C*>g+1n`o(f#h|xzMxoedr&m^tcuTRxPteiB^0vRU at vhKS
znp+l~EUH)hlgg;45+M&t6N|V3${)!2TPra7Uy8{R4gr(<Or at X5_&zg!k+BQrKZRS!
zjXKHwmhg{oPjgAQr at l)0$p*qhixFxgl~QifM`TzLZqhF=n+I at Bordq>&>;0D!?@ol
z??-$aLevWIWHlb-(VgeHym9de)B$)zI4;H%)D^t`kCa0=@tfO8GferNgbBQY(XKyI
zd!e>6UaD3N%P={oO0q&^MQ+3-Puevcdv6mqfvj}OOW(7&LwV`@hBKf~68?~KT<HuQ
z>+`hcJgsCi=CjdgQspnvVo`*C6o_K&oD&8C?u0$mRG9NHg<L>;Bm)%dV8)RuI at -tp
z2H}Xu#1vREaGh8Biof$1#A+CPs(#>RdT)U&HCtHf+$WW#&cvoqvecg`o7=J!)>mOE
zmEJuf^yujj0ft=CmDkGBm}3f2chJ*80TK0#Xx!zs#v;2o(HJNeBPh9Ngi5TZLv&1>
zin!KN8I&x;bYd29t+Dh;mH~}LTx%@tlBHK;5!We}mDLCznhAoo=Qbz33hooalM3~u
zLVps#lc0K%@<bXa_F(rsZF#K|(JXGRSXV)p3bDNODSuZ8oeBk+Fdvp0u;dy(T&~51
z#r!wsk at AVJvmBDC^+2P%mpq}$n>P8j6706i`)yiJf9wC3_f9D9XbqglUe<D(8cLMP
zI^Z1sGzGBe(d9UuDtu8gkZi3-e^O#j=5 at k*;X%@og#U~oYTWcQuD2R}6thxdZ`x`w
zBz}P(ad$njU#IXBD-j=w25Fn)>+;x>vU|cP+p-H84O{HulEpEMp<<_F>0x*OB)o+(
z3EQXS8z=&R2N4vp#40QNouX;jFsn-B2LV5pII8KI!hAWG+p(sbVu at H~qquL~y<?>_
z!GG<88)ngl3*T(Dz_qf?iMLbO(Ouc>bgZEm1XG!#IL*cu(uq#beEJ#42VrY3H9xG%
z8e)vr`tK04VE#L}6A~kgaO_9jc-r}dzw9^uJ09qMa<SN#H>)JxPU%o6P5X<)m?2qY
z{x15kC4~W6PeJiv`^sit^jl86i!wyZ|MBDujK6bt**a7tT2L0U95I6GqLx<}j`gFJ
zbJ}l6M!<6sheUU!u~r5At%UaSR6*UYN5BJWds0630H;7~osY<O1Bjy?2<Uts!GP=m
zKhFqGnpI7STr8%TUVS9qOG8e<aQ&=$ywosT*eX$t=NJ#i9(;WCffqm0F*2d!pV;A8
zj7^?e#-0`ilHo6{06YevyQdRT+kud{3sh($@~da0^LQE^uu~+ShufwmfWR;EFIMHD
z$Nd4MDvUL=<K+qEv4?r)Y+mil<+0tu7*;$mIs=<4z(u`n`Gz?KxWu-^NpteB$2+>L
z{DJ3oQTxA6>zRQyr#YyW8?gU&UhJ|0-W-8TY|m|JOWX@(<oGLd-F#1>wa|_r)QU~w
z4PjB<&jAJU=xJH;R;A0PAJF_lW_tewR@$7NjBOIX0bS%c-341W>2*$zQrxc7$1nWC
z0p`-^vqM_^f{7&%;&Y=kZ-?*%Z<!rCnTk>l9A!khT1;-xtjGvu4+lju1vG_`N1hMn
z5;}unvwSYDsqWH2bgEr+JS@`{2?Qtss<^}uOfgVeH0kCr371uTNu1SuO=IYKT+^A{
znVwPYpu>+j6EdTUduSHq7NNZ`E=?Ntl1S`n<sLL(B~lo(azi+a*|$~1g9(;AalW>2
zkj_wg1WA*?0Pf+mSVY2wf6|R|mJSS*bz)c}7@!Q<C0x4M-?_?9PxQ$+LKBm5x9&ra
z)I^%JElnZi69d(>8;Jq4a+E5~DG5pBn$)5r+;dyuD6Yk<9Ge#7=8b}VL%0-gXstjJ
zVq$KDh+-|6CgwgOpzoE%7`siB3PA^ni)QFvLn}%-mucNAV94N<3>|WYZnH at A7EwfC
zc7*iH(J-x1Bk)D6f5RgxqB%3@#Lq)Sv&{&WI?_Fy*i$r37lOVb8CV2ut15oeC7KCT
za|K$Co(n7FK_)p_SAZL2vr6cTnFZWZcB|<gbV?%}tA@(3BA!vs+XOF6Lig|qvV<sm
zu~QWc?Sg=^?k4HdcjR;&l}9o%B)K)>=~nr4DE+D7rWk$acWrI`1obnme&m4+O7GdN
z+Y^b(br*DrtEp__-)u)QtjWg at yxM^m%RpIrJ>D~P{HHyL4aeoYMkU-=Fw03n;jMfx
z;%8)iknh{+jQb&RPm}7n8Rmzp=*+s{<%;;P+r@)t(kdJ^5q(e|)t^pexYfc=)Q|+j
zwY808;$C45>CfTXmMA^MHk>6T^l*S5j?ftoLPQ*9q8KKDh#&+L<4mMdCC&;WlFN`5
zAtqw@&1DH<H503eC}Vk)ClTRDtB at QWbWMdv2l6pUmqa5+paV40P0%){Xg(w(XykKr
zfG?nE<U33YDOwfN#41xWxT}efoTEU7>PgLJP$@%e=nNt{Hnc-b9AP4coG=m-^U%_Z
znt^);ZKq4*p^r)Qcp&wd(x%6>DS!@<-PB`3p~qwDG1Mp`#LXZOuX^(wnILe{EEnKH
zG{V%kfVTwqG==mERlpE#h)x;n#x+`JA`b{MPtqXW3f$9ybgSqRBwDecgJ7$*>w4|F
znXebet|@H8HCPEmiS?>$XtfI0loR=y6b!4LL1tLH-pJRa<shy_&hS=1K-55Zfg*&6
zK<=st)kGjyWy0<4(1U3CFrK3IF)gUk2ANi&(MFiooTSxu<soecJwlN<W0e5UC`-L`
zuI<{3$dpsuqB>L4g1fO~0+5s`K<y+Ej0A;FiWo_}0GW<=1*CKdZjf{@?!wfI&@FfZ
zI8$>S#2LY6*8zC$zoUy*0x0}#-Gf_F>Lj~mkx~oeqhv5a-VU+Fw8Szda(NrC)x4k_
zh9Ibz<6V?h+=$hycvld2^sE}s5Tw`hEqTG{<B!t7Y3pT;1k{am$?NbRyMV6|TaR8Z
z_aE`t>sSsSbl@#(L=x8&wvz@(a)9nZry{3bw2c<pi7>>BqE*B_`HEP<AxEL~(elm4
zsuvpb5u}BA|JVIT^pL?Q1ySsHS1Cj at 2a};0S$Ss1oQV^t556CJQPCRaIiFjCFztHW
zh2yJ5^W^kkE+}>>?r)Pp42<26<jXs@;QhSM<cTXRA)KC1FE%~v at 0t!$I97*A>aqY{
z(fh1Oi5fSggwY<}=0r*Z!eG#r$}W}MACU+WMsk;_<X*r9lEc2EvQRQPY8R0lTHi}U
zl-w{U*Os0fy-g#N`;1ENESVe at aLcNb$x)Mv<eHIOH6=GDl0!2s%&04Pe=@~~5NwJ3
zJ}y(Ncko&W_>+kikQeu??FG$=i5-WObUyobcSh0&B$GZ at B|TLneG~B_^*)@Esh7yq
z2k233Ej^;tgPb~nrkmofNy-$jARd#7gA|V4MAoO*6L3nVUL{i>1`VmxBU&7-05v_;
z{gbK2RI0@?)gcn?=^DW)nQEI%b&MXx*3u(NwK*fz75PfnLY3;*L4vNMDmnNs^((M1
z)k}0>2)gM$wzdHGv95e7!JaO<A-hoD<)3t`sP*vc0l}K#eRsm{(p|obut(VFF_3^u
zZIH+YaH+!rZiPsCb>T({8^Ud at s|3G*r5l1BW*oyU??J94&S47Y4<G@@A;F%t)SM`|
zF$vcul3XpiJ>-%&VqMjOc$;W`(+lQ at Nr-;zWf57qTS7EL25+8h#z{d?(~8$O5s%7?
z+eFKY-4*wWPBYfk4`y1btHN`7FN$s_tsTHgM5z at ZcXtip7UrP_(m(0;ZrsJXeurOb
z1*w at tQ`I#{_pz>FCR59b+l_onttW0raO=MlQ8C?a=<>k;bWnrT3)13P*C;qPbWs-Q
zaALRT2}9qWPp1uC1uTJVN2_S3{xgFZ8PE%HAu#Lj$@NG<dVfvO<$H28Q0f=D^oSH=
zLI;J9_iG41_}l=vgbAn#hJyv<gWE*o4J!mmA>@Bp at J;G+=swmJqSF<#@+xrdm=&Es
z<<ofpcxWZ5V08FiTE(K5M|%*#meYJL&Cc$#jc*`eFyrqeS1gbHebZf-7vKpie^-#+
z=}TLLZzubHtpN1&g?K75WJX_z_jkPZ2F<l3x9wcRL*HYD{2dM8SCP17S^l46`uqzG
zeToS9aD>J<Qy)&{uEv$&*jQrs*J+Z3=PS_@<}rW1;OF5DqL?9ZzcsM{`&*OzsBYvq
z<*_jb9o)r^c%?dy?msrx at qV8F%1_}T6~!nC_neNmum7<bUr>pSmB*vI;VQa2em0BA
zbSxfkm_1=oUpjs}_Ik&|7_;rQUwLe=Nu>|d((%0_Lt&&zz+p at w#gGIVVcgNH>4ZjE
zOdLb|aIrpqh+J&{a~^T?=UCusgWyTd1Yqb**;Om$Ye+r{OVT_SZ*cH;U4 at w;H7 at dZ
zEr8ij!t%Hr6GRlJQjkCgh3{<?R<zR%9`xc&2VHl|OJCw!NFwz1!&vqI1{ypH2#!W_
z{yXHDKh%AE|400twC`-D|IX-cSPPHtj<xV~10>$n=c`1mpyoPp)!R at H5nn%U=mlQ>
z<Vmayy5Um at h<`~Nyp0-;{ZoC=fa;nc<29tjFW#a3mO$G~)h15k0MrJtT_q27CT#>f
z%q*h92$m6|sO1w%rJq^E#tp%;#$;(`mii=6yU9XTmvpI4vQ(QaL1qyfsRfXz_qs0m
z%u<m|C19p9CcJ}&pDNQnlVzA$LP-{K$h1rkFpJo_Ep!oHr|Z(oEWu<deP$}vAdF6h
ztEsXl3j~t<B_=;rU}6#5U<7JGI*Xhl)Mmp^p!tR?)^A3+Y7^q*N4~_mO|;O9&l|j=
zmOoUJoVXLOLzl;!^2<NhgwHeVhgwgMRtYc_zTRsIU!O&wD|_PK<4SasZ&U2M?eG=z
zACxj`mJz->$>c7>EQ(0(9GTp<!dE$V6BRYR6JLXTNbP=zE0Nr9C~L90ZH2FL<fp29
zdW!oeQ`|+Rc%)1*r|?w{ASvl?6i9l~^?6F!({Uw~ZN~+I8sg0*e7$!Y;p;DVSE;X3
z1@#C>NWEXCK8RB?(5w<QWbH6LN)KO2cWN5bb+1g8+mR~uC8FGJ8loh&GmO11Y3xgs
zv2PW|-bNS;CnepjVXSPr5P13EedON*f;Gbn*TC%3ZN85yQ4+(r*xoQ!j?pdd`A)J-
zp2n5H at k<;B3aa38OqN9(>+GWzTaRC1-FopXHH*-mQ9$*(sw|z3E9qRgK$e;zn<bpZ
ztT#Y+D4e~n8!+P=&QcTVEu5tnSiUg&@jKA`#xULbxc0q=WE`9Neq7dgHWkNW2Pq7s
z#j)2>FN6ShHOH|x1*s6xRa at fN@+;=#SKx7C?W+_qV0;8q$^Cqyi$ON?KuH{eUOW|0
zV1i!8Ym{mcJ%12k0zUe&Ten!&OPqnYQ{0y2Cw`8U<)aGXd=kNmycL4y$=lt##ZJY<
zpAc-}DQ>CyCoYt?NOpj3_e$PU9F+JzA}fi~oG3|NS0w(b5X*vz%W<v8FB?W72_G&C
zrN=K7_V^`~=y6LRke)!$o<Jb+-Ya$uy4r;zS`gJmxw0lBCLj{Oa8so^T^00ewpgq>
z at o|>~#E>^FjV>xHYcgv?REqmhP at D`4)s8+4j_UC=Jtfh0*c1}O;KXMsC4`d6#JGUO
z=s!Irau~Z#6qqDFMuB!R8HlQsMluXNrVOpV-=zXpF|U!RNVAjrDgtshn32-3Yf8kM
z7;r26K0Hm&-2f=|+!1dgA1RghT!sxp6hn!uCGuWUwS|nFxS2jHV>7 at u3MIn;#G9yb
zONmr*Q9C0gp>_e@?UEImoI7zd+7YXY?HLIZzpzI}!o-`XK}sUwvgX9Q#vnzNe3`Xk
znCV?wow!RjU%PjgRV2=JODvR@@iN(BWF!_!9N?BfAUy%uVq_!`NPOijm9_lDF}T(Z
zw(ap(Mq<9iE0`&e1t6N=15qA&ddgJWY68quWfSnk|6}i6;G-(e{_&F=M8IsI)MB-|
zVAP<HW)m)n*MuanD;ta?DD~1!NES%Rt;q&KsYVl!b%|27^;*ShTi;eI6)RS4#T#fZ
ziq=-&)>i6kl`Y<Fky?b`_d921_t}#@2x{No`~Usl`D8O^zVkfKJoC()nK^T2=9mId
zlk4$wSh5Fr9}f|%?&Hx$Fq`j$_V2LJFLE*M%58{Ev99V)(pMkS#;2GPw>z3=jLGee
zW`V=%2`g<HlFn8j>C+)?d?_TMv)qomDmuLqlNG!1^o?caj;HSxXmQj%ZLivpr&#^(
z_5Rodwib>Yk2%7Advl%IImWYhv06>-M<2X6-`+|X-LrQqo=xqub$PgyAG3J*9JlGy
zjMc+%;&Hckwt0}n?2eLku#$sW5cC*Ilq%6*6ho0DDW0d3A`UhaDvDD5!(I$5==ctJ
z%+j2}hgtVkq*x(cu2xMjkGSySg^0^xuSh{1t%T!Ul?Z!rG?uEWi4CrMb*z_9yF(oM
zt3}d$tdBF%$JQ!oO0>)z&$h|7&*NF3D3WC6)D at ahkWEt*x{TGek>|qTNy<%LrSPXF
z;4|{}L4$YXFDHd1ue9l2S4e94d(?~4{UYt%zdVYHF(N5fT{%@3q?3&5`=CKRbI+cM
zOU+*Iq@)T%N?9cTv853ojhV-N=$2}Fo+zObc4(7IWokxpjg~kBtapsbks;ghf)<&2
zpW*~KoS$Kc;p<y<M?!%LHW4MMM^@~Zz;;2MrSXz|%K47x&24NFB!xPqHfQ@}Y?NYN
z<|l8A at rfj5W|IUFyR7h5L-+Q0%36&MBq<@)8Wgt~tA7*p2;V2dzwqLQO^jj(v3rhp
za8iks+wstZlo;08qVaoLXL7T)%0p at jCJ|T*QHj868R$y}RunALG&tVEzS4O^37WSM
zDL9`jx8u1sk!R1!$00AFG+rdA31zu>k832h;$hYnga9XtRlwAf9qXLw?YJUg7(UV`
zReq>owG8wn14A<tFG3YhJOrWa-Etd07=*TZNNt}ockl=)^g^GXgQ=3W8JT at q)`pCn
zzh_!kWHzaY+ at lb&5I_4IL~HMj<1 at Z65#d`hzLRlBcE-A_oVD2*FJ<N2l%0Xf^9_gt
z&Cwa-CgjY?3gldoVO@}OPlk0 at 23VfuKSQMGd>I9AXT&lGMr8abCui-5jGqnz#Se$)
z>^dmprQDo14$Ao9K{?wFN(fdwQ!^$WlY>v?)aKw&_lt6Vl40FRxm)?~lFXckGPCZ;
z%$b|@MrKN4P=DAJ896&MnUU<n5eNTEtI4!GGiO(>^?Xjwz(LlwVL59LvR=&f;+ljL
zY{D5$jh6M>jM?{(v7XAzd3=m@)v%m9$5?+DmbrS2_0h1LYsOeF4?h&hl_Msu8)Lmb
z@<$n40eJ>9f%T8cK>*Tn)-X9-43B60EvN5bmBJA=<T)C%+BarSxGvjzHp{1|vPbHu
zFTwvPV>}Ku{&AKKnW#fg-;=p*xb<3g&hx{qpXTJ?dRNZYj3<XH(LNI2*qU+P$`Lv1
z8?wGri11JRIjick-t*^NS)a8bkn_v>tiK0xeqW#U)6;VL8?xR!E$7LGtnbavd8i at l
zwb?n(H)Q=Fm~&-A*7jh|bq!hTYIAOH$hcxI#5_ at -^K!klryiHd0!7Xq%(y0V=dcf}
ztm_ZXxu?o{Kku>ZUsPFleko^Fwe>A;4k8{b$a$^WdXu{JP2}aSlANomt$$6;`DK;$
z(6pSVtF4cw<@}-A+A=-o_f^*FvYc0{tmn#d-m0>0D$jYe+Ip=#=jLi_{RufgthPQp
zA?Lno>yZ;F=k*hFHrH4`IVtCX8td|tbADW7Z96&VyEWEbr{sLQ#(L|NoXcyh2Tvts
ztRiPmwe at O6&U at 9?Q<XX2ud;qJBj<)HRYaGvh_qAPiM=sltUe>Op&%Eh_4)fR_FCBF
znjOJj$z42l7CQkh#)iE at w!vc5 at kM|C<KygOv=U8>Jix=GWcw<;{Tx5qx3}(0?7^fu
zPf!g!V-IhGMF0QG+n*w1 at WqP!bNv0AGt@|t at 9oc#gK-#u_T;u%o&*=WrH>}TdfrO4
zvl{^nX%FZaTXcsw#uo3*`QBX}7^Mcc>XmzPbjwI}u9SL>b~xS~7nE^4o6t15-+-`G
z+18iJ-mTu>VOtD#5kOxoT(<Sy*AQF}pX|;Y)87$H;`~*gFYv$n?mn}9cacL?#gip!
z))%BNPu9P{;6OniiV#J6ahG}*8o<bdNa77FmvGd5cJ&jFihCo6u=W+J+Bb2JzD=s_
zx2CLjwM}gcJG<M%E#B5hxVy)@w5hE(?Comm=>Zh!^iH0<Al%WsxV@=+NvOTGBNS<E
z51-&|v>J=NHOsof%@L5LqdEDc){aPcQMmh*WkpEFI&(kddV3ak_O`Wn7dI^pdz-vH
zy$ct%E<-wtiY9p*ON)CNy-?L#T0FTY+}zpG(nG;X{WZAXIiOb7e&l0eTW3>5=fbj@
zn>so=Bi`ojFwWEU_C#7vIAJNQ0KM9px{+OPWN}l6x4mgusHgRUaN$Hd70ap%cQ5od
zclN?4u=4rg?y$Ez{Po^&4-L4W7ZO$0DSH9rh9lnIt|DvlWN+~FS%ucb6TH^k-j0se
zjzwNeS-~1%%|$}39bSAsYEF1r#4bP3P4b#F>8tj{eBEhYeK58Nt5c2)l)vN|cm%yR
z)=N0{dy*;nod3W3Jz)%W<Q;laj at fzR=KEvzb#ht6zh{3h+x>L=Jzw&y<bF>ags6J6
z(g646;=q%Mf98G8FHt4>!^D10 at Z^JM$1m;uNQUq+yY`-NLZ~)`I^EXR*&J%^=m~eL
zjgY$jsPBVelE@$Z9XFq2?*+bKv4Wc#BHUIgKKrp48#Z|kF$P9ujGfQ-!NvUi)&qAP
z7X0Qj4?Hp!AL7dPd+vVJ|G+K1{S)8&%5>Ott7qWyLe at KV<|)s_jK1%m_*;Bd$}{lP
z1h$Z4 at j!;NAF+wVb7{}#fN&9a1$h!DDPh=EfzJ at -;>$3WKjX1rv<0hfc!*{6M7-w4
zBIM0So43RFL8f{;{4Ahgv^f`tU3&Gh04^ampOk6$Dk(Pm=?V6)8TNB*c5qZx7<R0=
zxDb}fE`S~t{^*4jLd1U_Wi<Gz5%E_*&;VRjjYh;`i0Go_n3qP#XcRJjlaO(+kwLML
z0k-}=)KM))FQ|A>Ra*$l5613dv_GmUv=DhuLS%sv`M45!+iK7U2RE#PXQbXi5rYq|
zrx$&YF_5b~8r(M3o8wJBAH$Wh^j=(G>#NP(zX at zc;FGw9z^(M4CJsowi_s8HPpEk)
zl(QEsoM)sS4+v6i5&hdhZ=`O=HKe{nFRG3LfLsy?f&WSf-0jtB9&G2E+&Bh<ZwZt@
zEPMSapK>6v5ME3z91h0Rf?tRy9mLb~jNU-PXn#Jjq)E0W(&{s5y<#ixCE?(P3V155
zm|h<Ipn5YJQ;U6(2IHgsWh9Q>#efjbc^BI<pEJU@;sTcOC#5#x68bMw66^&LQ8g%x
z_S;eYi&fNJ^i%~-YX5Q~fz?N9OTB9+(50kq*ac5(e+MpMub;2B{qJ1|e at j0J=%W3M
z$JUD{;bDj4UF+dvO at Y1UcS}D<y>zSlNf6UZgMV%hhBxFQHrj757q*uNM>pgH!x<x6
zLGF*)i-foIkJDlh at uD5E4W4K8gVYM33T;#?ggv8gqlyco{o57Ek8F)b_irL8hEVma
z4Pa8|bfv7Ph*2LzB**iq>x0z_V1G2GRkSm4HFaZ!^4k8-izy_gR{PQreicMZ$S;0X
zpgxffDp$Zm21t!H(*268yrH1bGjP{1RtgaNqrVLfel0&ZxB$mRe65bpDT8O>yC>Ka
zmlZ7E?io0k3-S3*q6+9NbY%E$(coFdxW<zL4qLCvWmY#=<%8-hFQUEb__kvd8{T8!
zlSQD#s*EZ;-<(y4>q0a<UN9EgjKyTEKs**1BE5O}Om7we64$}UQ`1>pxJHXN8;#tO
z3NZU^<~lMrf~JuNBV%nQwuQ#96&Tb+$<+maG5p1R%FYiAUb_~o{=t~?wp1;qAe>#)
zxVfqeY}fWN7*nkxMPe-{M2;Ink(cQ>aw4Pz#QIm;A$saL9x1Hn^<YeSTND8R7Dykw
z&1xjTq}CCPsk3YR(NXx6A5tnpPX*aJiV_e~f at 1x5*dco8K?{)3R$QVXpoasG7(s`G
z*1_AXj<jY%n+V2K6B;ak$1`wfz7nfpaw8EXB-Z~VLxWeoV}lI&?HPe!bi*cwwkQ%@
zAp!D$_sVVXu$fbN=x+zMs?xt!!?vtz>49iFJm{pn!HtEuV`5k5^S;3?hA33?n8o0h
zev;5_RtK_xY2!FX#A5U+qt_~~!K*0(yXUV|T;<PtaAtr~N)t00D$?`E9`wSC#mW at +
zFav?XhwB&>y;{-R$41$yk_D^}S1>-Nn%m0gmE=X?DyH(MJp*g<NwiTD5k`n!FxKyf
z7u(Q?|FzM}7^oe*Y#BV<;EH~WqOemV3&|EUKBk)4%IHS&`Uf{CCVnjAW^B5EN}7l;
zLiB>MSQlxd8yFYca0mX^Mz17>HuJXi at HeYdb7<kKS0f1j#_Qmt1+g2hE&ZgXL&D_u
z+_&LLcrfm at WT;%dk-^vowx$4YAvZ|v#&yG18~p*3f(aOe)n0_h<9jdLWWx*t-e!mB
zc{Xm?4sRhO(MP0e^|)nt+d)X~!Cj2SiG`azhxD`gtc*TP2u5NnN!eszHrT?!9)wY@
ziYR&!9$z-F0Y!}>9UZF at kwMi9!4SH|RJ{d)s>y^YDG1zbN5O4+2$nVwB)rjU`wy!o
zmYUd2v3(p-`9C?+$92s5Fd~dc$0Z)!*;pWkP)rR6__ at _Ds__iy3z@;>(*jpI$L!;Y
z%6F;933WFm3Dn4k2S}lXR=1^KRzog7k04{@dgNb5_A#suB4g~@)L1;FASyrI8ASRB
ztJL#{0_D3EZOYk0IPD6{{<;2|oya9y>S#`VI?N?cFci4taT`>jq;}=!qO)50HJoox
zYhj+W0lQWPZ&9>-1ek{9q5i=-yk2g>gTvrrjNHc-1P7O?ehf{df3O~(-DE2s{haDu
zHljlLqgmYV0$ONe7s5%TEcQod<Jdob at DL|M2Jn=S3uCA=*>Nag6ld7;D1;}l*$JFp
zd&`VEh()DS2X4hwNG6K#t7FwkSHW}Lv27z-U!jguxRthu;=7TE10N1eiO$9$^;q*C
z7z|>c<si<E!Pjrm{owPRI7hG+k4_a-$Zr&?qcD^W6neuJ)<}M^Vaf^@;~;TyV9?$b
z>L0vX6{{^0d0wO5A5lGU4HWcIVMt$Wq<2BO+L^BsI1vk$b>Bs5Ta;Z<kWxO{veguT
z#O$hdweq4*tL~GD-N9(RQG^oKF)TKTRANUor7~5<`PoPP3G3W-M at Al7rd@fFYA*7$
z6{NLz$3`DYFck>c1doY6Ngs)>Q(^3LrjJBPM#n at c6o(#Q)UhR3rM3xSre=#&_fY`*
zXtn`H3KUt3HEi!NI2fZ>8@<z(45sY}GX;{-F$D at D>o$17^7rt)8C3yQPf5v2RP<`w
zQypF<B;~7{e*@b9W at Q|Fe&hO1wYj(!8-Xa!eqIO++N)eC%u9MGKt<@N03}0#4V2*-
z{UZyWzx)x;z#$j_LNCHhLNzzhnC)FnL6s0#M(RQJR1v^Jp$Z1|W5v~s3k+UUP)8pU
z{PbaOB at s$c1|5~4SS0&<&%jwZ6rs9ON+dIawily_N{DKNAGD8q3*c4cVg{q?Q6m~-
z9IM(g`jF5?A6uKK8}m*XbWE0Fku1KjjQ3;IoRTP!%m^wO*zQc2>D~dKcD`4=(dHH2
zCo9qoOlBcY`$rwe6)GG4W91sE87?s3UJZ|D)uW!_ii(hfZgq?#6t8+ssKsO<f<YQ?
zD|`&n?Sx_s5q(jiF{XxMVu<KA_#DYI5!Nbr*f)i(bGTR-jnN|+yE*^Lr#u7REGCU@
zoQy{g`becZNEy*l)$`GU`3OOz;?X^x-7Wf~U&oQAsD2<|jz~erYC{O6K)C@}ki9Z}
z$|7l^rv!TiFxnFJQ(xVrwqvj$D!^}>P4$}?6 at kPv`f5^oM&DQrFZtl|A&!A%Z^|3A
z4vfie0u2IC`zT^GS&`8sDU>9P-3Hy+L#kMH$C>Vvv71!vM|SL11QOyIyN-bBBo+61
zXMCTI&$s#4rpB+}W-hF{us2$web*;M@~uxrpnR{5Cwo%0MN at Uyd2H2_ooN7zGW_gK
z`GHhMnWNoOJ5bZdnsoe^WZPS;%UcSHJu6?~I!iE at aRtd?>{QVKVXZel@`$s0(S!OY
zZdPpw4+*FsrQasXc+wxmNyTTQJDq{S0(y+Z`$^Brl{k$HFD{pvc|v^J-hcmktSNxI
zm<8uYBDPorD&iMmfiT~{1qL^&YP97tQ)`kVxs9w?7?0h?3V~r4>lcDQV#UzoG7P$Y
zz}U(ymr)E|V2c_Ms>{Ss?QT_>%n&U;A8Rc2IZJ~vGA8F6#5fUEof^Pn%3=r at pTIM~
z^ts0<p at jWyLz}}D&FDrAc>?8+dsZ&Q0 at C=!azCSg at S=?Vy*M9v1DfQDom;X!EBo;f
z$dz^>ER?DC+;>pT>Rd!%qvRX_Q9v7m<$D&^M1y5};wJ*q=YM at YgZokYf2HJb%jL;<
z4C63*9hOW(PG<G$;n<4_IadOR?u4A`l06Hnqt(;*#8&{)a!$+W|0m>Bq2J&62*jL4
zF=$O*!8puwUs=WKQ+7TAA-_d1`jltmid<~lT#>gY{wTjgv{pZe1O}Je*;<1!nw_n8
z^X+WS#|{jrlb6U=1pqr+r|4{HA at RwGG2cfVtjxfH%bxy!VPtRz)VhM=u%WaJMd`V(
z*Q!`u!p)=;5sYraZc?7C9Ld}hAIEr}m(DLu`R%-MBcIBfk3x{Q>#@kyb6<_MI#cCs
z6 at tuL^}!HQJpx-&tNig^fY{HC8IXjWhoOs-Gf&%S8<xVOV at L@4HNw%S&`1kOx$y^p
zn)iQ at SD2KC{!z)>q4j#wmX}?i6}vYfZ&X6F!uWTkJY%PR<dJr|T-&L{Ub~zy6!*<U
zH*w#su~a?~<WD`|Cseuy)k&#zj8^H-FaxqUOl$O{G8J=}XEag*;`bqfb~pNPril7n
zrS<s*mLGfWo34v(J(o4(#bdrIJGB!SWp at K<j_l*DjOQOO?o<EZ>2?vGgg#yARjBnk
z8hb1}_nly>rw2h*Jx4$-R8P$x-=oy3fS|gJex6G{l68USlK+xBl%Mkqbfdx`gVQQj
z`*uEx8nu8m>Ny(f5QvJ5-V?7=Rce50K`%AKld#t)Q-tSI9IDpKZ`#c*K8k9p*AoU(
zb&U6qs$)t}{BA_5`pPFB^O$6}Af`P at d0Hxe%(HS98q at fT*ssL<PfaQW(D<w7pg`S!
zY!2SRlLDKAufYPi|1uKI!CV%hY7Tt5InYAlrz&Ih+4)pcH~ztHTW$-+7WU5Wi?rNh
zSPSpVUp?AxWVkCNx)Vp77bAZSJ`{iw5Z|lwXX-^M6lA>^PcgWk568NCWqox!=OM&;
zk(*L4c8PYuo)}Bm{~A*-HejlR_J0bt at yD_YlICBp5r_5fKsMtys&1*86-~D{Cu;ph
zYyD2Qw}qLCTY;c`8x3deK&35WIVAVXsn2KWcIOrtO;uVRo<ZfBvGtfeDL$!dDo4;j
zsp?fNj!#3(+Js(N$SCc08b!fw*+ at 2dKkek+CD?6TiruyWHTRRr-)x<~x6zhS&hey4
z+?QWca;6ldh{;uA?D`*!9TbTEsy3Qi8U5#+Si?cPPLDR^?g|cG-N!LX|0}y{CvL6I
z*it+3F&wAQj_%UcEK-i-0Mz(4)kGhu?BA3-JC;3ib~JlLW%;h|H)s-XJOo12=gdI#
zxnOj7W%Qjnv0&z|Inm&7$dAoe^8d0cIPsZ`J%NcI_P at 4EoyTww>ISZTdn=>6`nTks
z9y>hq^yuLk<sWpv75}!ZHzx!zH6J}C`b;oZeF6?>s6J&E=I4r)*liHIIpf{H#CLI;
z1G~dZABOR9?b{jspnr32ZES3LZFFo|`P1ER$8Sdz1_QP|__eOu=r(^eGx{V}Qe^MK
zTg}W}fx+|3{Lsoj at x6>^0~5CzsjuQYew4Z?`Y3FG at g2rsCmmA$B&0rtDAf)C8ja5+
z#8%`(){4=Pb?q)TJQ%aVy#9&LW<2em_>9T^^?$Ro|5Ro4$^J)j=fp-0pA#LGS^h4v
z{|&?iV|jt-`-$?(v&*Y?@LJdMx|J0Y<uz{K<%QR9Y6>#GjOGyae+3 at baY#K4f*Q%w
zFqA<ya=UcGCjN;p7 at Pbc#U{a6_7{TDY}+Pllui1;h~X~|Q~ki0Ssk=NGjDv+MXDDc
zWlUN+MQRSB66MGB(HPtg)%W~m4rK$VU#uB7zAh!FlwlvD%>Bl(dm6DD?{`sngu5Bu
zR$}e?=8sJeV9i&w1jmHLR!nCVDZ%POERg2sD<*!Ju{AL9w>WX6Hu at rmPnZ4)&9D8<
zir at D?ih4W>d%Z?Y=Qk_jk0J{Fe+`D(+f8xt!xwh_ouA0QsK4jovwlgdrsRDFqE!7Y
z3*ZAg`aUbO?=w8!yWMBpZbXS`?z1LDK|kd8!y)<Iz}ggyzF?Hx$_k}E(c!tY!DP8I
zx)piWx5O~y`K@@F>W!+w8^d9}zf80<8Fo8UJ9wpAJ99Y8$EBUIWIgT0t%}mYQ{7Zk
zIvZF^x!zkh2~yk3_n~cv(zXxGD5LlNv1vwfX+koqQxHo#(nx+3eVZ!!G<NvD>GuM$
zX|*`&ChCj+9vV-hTp#MwgS#Ntu2TQZ_+?<?lW2N4e7dxn>b|ne_f+(0G&hO*^epPr
zL`1C(#HQCq|7rA0)=yNYME!i$l+^odywnF(?8=$#!>w;u&KD77pQqZ3yvI!iNSO4(
zap?pe<}T1u0 at 04tU>eV^?`W at +^&Rqtw%5B~fr9DV>%SmM)%W!GW0_FTz90Wn-H#8k
zT}q$jTM^~QWRK_4d$@mCE`RZRW<82EE}Q&=*=zleY|Aze*zp at cX+MBe700joQzDQb
zpP2}#_dxNlZ%agW#otauR at KFCP6YZn(Gq{{WkadnOT?Ea!|$M0#6S9TB7Q5wHzmXC
z8J?C5uVwgmkk9qcjriP#{;a#6>Q(a)n3hJ6oNDu;y`h*>{EZmHucLs!rWL^1Bq4yR
zrx8G^_*mpXYml6k=-&j{LICrUMgXbeKTB#L1T0R~U|D(%NELq{HW{J;-hp!>Mj4>W
z-o%@d`wJ`LnJ=Z|gTWGfT|;%gurZ#Oj<3HDc}cRWN&TVRYVl9pn^wTKQ~~cGm_`7p
z;x8lxB=)03`^Tl4jI(xW1duA8nY4LQ0JcpfvyQF|rwgQ-%o|_x2VpXM|B at fyGfuMQ
z4`n+s{snMV$1?F;6dhh2t1j7Hjd_yY at dn(JXfdKsMKfd72k*v%8+OcMa$r7cRIJyE
zZi<$m5y4K{%-!*u|4I>g(Y-a%-0E2Hl--=N*=>eNXP~`^l|j%cu@$+y at rb%R-iL0(
zAH!h#sn{^e&(reNtNplz8`dBFAU4fTWVoHko9Jd^`O%&HP*gEK6y<|H_Jh{9L0=uq
zFgftqIWUiQE%>@kY<h|)AM|xVcLTB?%N;7=apVWQt!;Yj9 at gqmMkTa|eJVu;o at 5QU
zo$ZD;5;(M#Za at YqF=*B-ql`@p<G(_IS88KJSi;)5@#U-v>Z#D7mi-9brZk%teJ<)l
zI)}heqj$$|q at hl*?L9)-+e``UVA-XbVmz`@9XrSrUAbL!@!w$J<-b3<3=s!Z&wMoA
zgSoTR>CoN_{Ni&H98%hg at e|D*2buO{D6Y)+fc5smWaT!MRqwS^U%AHTm637G$YSnT
zOOO+>k!l61T_MpYc6{4h;E=3 at _zx6`GnpONnjLIA?vyg(v-X-zl27b-)Ry;Hnv{E2
z8GfB+yi_n=Z@^=cV0?nOK3817z9*4l{IBAAgSj at Jrt<BScE-B`OulfK at _6oJyr7#?
zo>-6Wo7S)xOIBOBFgn~lqp2rcW7B+=|Bn+1mT^gYcSlp3uOu`pc>0XWU??;v<nxtF
zJ*vYCn|j+KMwR2vPAg#Q46~}<*4|fI-8m-!=}nQ=&W at g%r8V=~T5Cd9anaPCeP(A)
zePmihnZf4^)km->J=EIX)fSjjA1Vt4I+k`W33mtTBU2;2U2WmOY4wq^g}oikOe8RK
zX=_al{^<6Z#%CGXusDnb?s`Xox23hE<JgF|ySHPKw*zbF&u{9%I(Bb(Syx+Yb8Dn+
zxwmIYYgbperN~>?7Dfqso3TXMdu%<>vsxpI=g*(t$TjfGJA1o at SV(E=>gw+7>TX3f
zq`O%ChmW2|Ipcrp_s47>Sv2|-8!f1~;d;8Cow`uDou}IPJK7&xVTbX5R#nvr-okkc
zu%f@$>nklPEh?Totycw0E-IN)R6M1~H&I7`JR84!{8*!B&6#K61;i#|m_bqwtK5{!
zxL~f8u`EC1uu;Qv*Fs719IoTYOJ~9v7t{q6_3#@BA7*$MUqA$|1V5%@1 at rRzGn?{q
zd5K>&F}O8IL&eX`%fB*nM&7t9vS#FY2eWJP3fJUR=M}FSR+(4UKfF4xF>7+hh`h4O
zyyD8dLXd!TMqd7myxhu>UdXwI!r*%GQ}Xf}`-iU at wkBsV`--e9GgUrbRTP$Wvi8Tp
z=W__%0{-*oc`qJ8iFO{x>Owk)aZ3Np8bsG1TG=31$Fp!$nu?}F<&pMm(D8F|ZDrQx
z(UyMv+BAM1jgL&oe9vIMkx7y7w=-SxJqhghYgs?QwKY30e@$j(-ndm+m3iL&?96XI
zmN%|)GpzLMgxw#~^ixm)l+KRymEDu+2lMK(g0wq|!eRHB%I>2ehi)5ww%zMe?9Q_0
zyD~cNc-?oJ)hz2-DC;wr=b>rNR%!NWc}tNOJI&Oxo`SS)*EE+J8st;jraG at 8s|6YJ
z!d#WQ9<koOr1_4)wJp1%KYLZy8p4b()Hh5f?O4M)o%t5(MD57Ryj-U1*YV%OwS_vp
zCbK$O9;jS8v3k(!OUoi(pXPglaur{)9J6kRqMG^)!AQRQHQ#q|Ez%39^6yQsQNKib
z)gXOb^WB6 at s(jXr8es+Vhh;9c{GP0(jl=TuGM6sPKR9z~SN^EXrHd=`voe>?&zhY%
z0(7&{IQU0e#gH>fF<aI&T&qi)nZ!z%Vz$Llpt=v+G|zG1p`)BWjg6&Vj{Kt at ER`j7
z8g9Tkkge7{=i-%%x&+^ldr7t->oT(Z!_!u*nY^dH_`RfM-i>Q at nYS)OR_H?DlXOGK
zx45hWt9Z}#XCbAmc9v9iUOs9=^+?|D^EK@%T+<P2)7YU3v9Ugl;a#nA%->>-t-(99
zWd3F*+DJ!Raa!KitgJQJX&Z|~{vOgYnGZXETeD>Tc)xDbGzG|CGTn4-v$|ia(MG(T
zzKyWk=3?ki$GqEV4s9bEG|kiIeoa at F0k(@e&5EoWn5J8QaQl!nD`YlRJN$P|^B9#%
zm!7ISI=!x}88j^*M>`l8Nt;#RwFljJ)(ObEf_>RwR!yFFO*R--u}$wEmh~6tT!_Xw
z(R&3(ekBzEJLR=#d2ir;NS1-4?34P<LK#d*Z;u+)X5OpiQFgjAV10X0(=_77Os1JE
z_hfz3Hd&vMwc~Rxg#dY!If)%U+;bB?PNwSTPs>}Mn|0b)cbQ(u>eDipn7RTcS-9-i
zw`v;JbM))^A=LviklwM`&9>g%n=UrX!eW#(F3Vy{LtU0-?(EdKEbEJ at fDUCPMpUWM
zS=N_Q0feYYrqGAuC*!iLBh6*P at 5EK6ki+p2-P8C{4##+OW=s at 9IKw(2ku%=2#${Pv
zbD8jO1wG|#)pFEW39&CLITZ;yRSr6oWuY=S+~K%yD94Ny)R+l0XS?9nX?!hwIyIJp
zAH at B_{4Q0fW&J?=*DCz;);qdw<M at ZJ4;7vCM`-=GDb%t$K&SN4^@w8^x<<4aq~D|I
zIR>FS3-=D`>+o8aj^hrx_Z0pmE5d#a?ikxs|FaUKWC7wbD}^c<mt{#SO5F6MN$e`<
zO?|dufiWHXc{(1WO#N at r`mo=odrIM-xB7GkWF%IMu<3cCDjoYpx{EYU`_UQAHfsD1
zjhp(jOXK%DaPnqZ+)174PDF>Cfm&$zbum~yz^VU}S`OPY<FYKDxlH&6jk4*->hfco
zVO*9~YAzFgK+z|0ldnGD8P-YG#hOx!Q=u%}FHU#6qEF(crTB}MW9X9<w8KdTPWVTl
zJ~7=2jqq8+xU2+f5Y$gq{{l%sUxhVp>}d$Trg5(UwBM=mVh0}4c!dMMK;v}|94E}c
z1*}E~zDnVf9Vng$HEzn=5L~73N!DTmX#YBmZ*t%_YaGT)ar{smdZiSMfgftT%n`F*
z;gc;CTZ*$ksX7^VSgLzS(;t=!TaRko*`hzG at uMB|Pb>U12WnZ*Yus6mf6%z8XNGZ`
z#=Qp6{%Z=KY#r;sx&Gg>CaY%>8TFo)<1Ck58aMZe;n}0`fYoIH?Psg at 2<7M~mk}B-
zcHsF64_JK;Ifp3RSv&EJrf}W33!YYm>qbN1mn&S}&2}WeePdaAfGFr+RX7 at Thuf`i
zr*$l=9Lu(xWkuFAfltUxjuVUq7b`qDPT>3r-LHX<&zx-s at ZY4gowzk4ftzxef<)7$
z`&-bb!-D`PWDZUDdKWpjxZwYA!4JZUMnny9{4!HI{5ThUwhMl?3%&sOgiLQD-39vU
zUWHFc;HF*87?WO~BVF)j7yN53_zD;Nau at st;1e<n5_+n62ZSDU!Cz8%a+L8s&3Q2T
z^$D3n at lzCTY7Gw6()ZsY7ksV4k4xyI<{c2a!v)_2JYD&oJ~lnR0Qjw$GZXSnJ-^9?
zei9nsbn+`*@Ecw5yMf=DIcrF|ue;Fy%LPB`ko5YT>Vo$JACvicYd!2lr{+K4zY6@;
zOuxeT&$L`)zCgS>fgAhGQFzS|d^PZN_W8XFzRd-H*9G6 at g6E<mN|){!;LPt<<d2SX
zH*~XI=$E?SSGwSLx!~`+;G at t4Q=ek5Qo~YnI=Ea2Je~d>n!Z9e9jk0M>lqjN4>UcG
zU!X%!xv6MsneICp*TrvjYCQian~rlobhiOdr_b+Q at KG3mQ2x4!Hb3Wb=;mV}Gdgoz
zqW>`U$FJ$P9&gie9)@leaMBxR=+_(hlkFHahl0!3fTz>51e2!|GK-8Dd!7WLP8a-6
z;MBjX#Ae|<2;IpTK&6x4?t<U$g1_W~?{>ipk4T^Hd>1_Af`0>ex_sr~(S1Uu&(0+N
za}I{?D&VAVoMwkPk3#nw;OXq}t_!}xo1Xp-;Nvr=Q>1cWSMFC{;$=FN<b4Zxx^%~m
zPmiAre0*Yd!G8Zip;3jOl8|p|*za8ASc#W*A-t`_`_`i7W-FBb<>tq~9rYFCwWs~o
zw5Mk7>>+O@|9z5+nmgNCD84 at 8n;x2}--U*7Xje-c-jwp4X!=a;=NsD^UolQnYH#Xj
z!eL-FbL%7Jp~{Zsp_Zmd6Y at C?uV{T`p;|jS)Y+w9_(GwEz^6+0lUuC1xMnHSKQrx%
z>W?qWnop5*iAwqtCS2{axlwyUa~Fgn-Qh4^dq<{+Le0yT`Fy^T1x-Dz&7q!1H;zpU
zG{f?~=EY6jAZ%)l^aPq~>YMPdrlvkJrK_p6J21O`YDlOuy~;kVjRYvv`fwZ0dGqx|
z0`-+4^0b9}dIDgf7(z8D*AU7R%Mj|oQEGGwb#%6b6-7~NPj^#MG3|va at 0-$MFBJ&2
zKy(DUCzm!PR~nSscZsesH8ss`kX{lJqW-63e>$??+}X7}5L{4PGpBwQ7Dj|B)p=qx
z0PO5ymHJ?aF^Mu%_6niw!gCvn|9_WJ(LN<C at _)5f4=L7?;?Uf1Z%;VX*&VXai~E1Q
zeE%&u{vTJ+P4(=FXZ=sS;~c6bOqZ^~Ozp6I7-t0ZNTa51_MH0SkZ*co?Ny+oC(_i>
z9Ik0=ty58s)>eTfr98V+cLqJRScTNv9c~YIL~0Nn@=dMl?p)Z4v4d%%_pdwrzo1yc
zY-nx&EkmDj^Z>1D$(b6{B}YD|x4IeSV at Fj9rPGzQle-+HeO6O<`@F82r3b|5n+DF>
zaC>L>a#M_L2PU8l0-QBr-y%{fYS1 at ziC#Ha+uG59Lv~$<RnAOTmB89=6?=bbaPoeb
z8}91t#v(*tIja23ruNph<;a$e_S77hL8exBp574#Z#dG*<%Wq8F)Jr~dKZKOA(uyp
zDebB-5(DYf`V;h(IjmJ5>88ON(hs6iOzpB<6U_B#M_~KQ{ON}8MZv0R7XD4=zcT(S
z=RaSu`tMW!OVocw=2LV&Md(wMB{t<0MKhKEOB7d$;wmXsh>9(-V-;_y;wn{?rHZmt
zQI^`2N^+^9FIDtYRO}Q*IYntQWh%?&Gg*aNJ=OU*;44kE)pMHK!$S$&2FlashI_CI
zcPN8s{Y`BzMI9eXI8`mCH8}ETACxOAn2Rj+Kv04Q0?k|>De<*-_NXCksI7HDcT at Lr
zw3Dq7K6WK7S26|7r at fRHPXt{(p^os<a5tZ}&124Iu+X=fPh8b!6?KOf7KK8KmMsh6
z5wxchYnodl%R@`~Y=Q^D&!jX}1D24)Ctoa1R_V)Jf0|Xx`T?-x{Pq+>`liB==-9g>
z+MMbEuD7EV$8CqYBHdgYt<_<S^D(U6hoY;SxpZl22Bv(iv(+vMJkz6%#9`>j4~mdU
zH7^M at FJ2N_*woqvRZ!qlLrlB#d=z?1$gH>yHDkOCj(HvDw|2B(6y4L?9tM3&TisGe
z7CyyV?rF&VXIyFQ83I%bUl|WxSM7OdX;XJ=(}K2e at -h5CpS(F<un$tNncLoOp~-LV
zS`LFYFKY at d2rt5E^UY0>=EWN64l9f5P#6Z(v9jTHHW))D7 at P!p4k6v>B6TomT9hFY
zKduQHl7dUKVQ!72DsF^BB<i+mh-w<w^s|$alR76me=`_nbC?(q`|Rll4oJE=-o@}a
z)hsr6z+>bt-O#o7M#9TNICOjo?t at up%A!o_ST-vhnbX_W7VKPPl*9&!vJOCCUBsI|
zP1ec-9jILPK)pUv+TPUliJqg;SR`hG60<(j?OC71#L at IneHmH}4tr;Ytklf)cIfO0
zCGCRom70AFHQn8vm at ULG?!c$7^bN77x2d}&)YSa--qvn5Drs%v`&d(|o6nZjjcF;&
z!qB|w?|fe|K3CAXa5<*|R3C+guh=wvJ<IWFgLX`aA!lm%f8beDQ>iVjJzbrcQ&XK~
znqu}%uWRb=39E5}89IMbL#8)c8R}gSeKGP_Q;zx;YGYs@^|c)JRh4LJg)LXM&^0!F
z@$3&L%3 at k5)QM@$a8tWJt3TcBCMTbLrS=@CrVccOFr`+5Y3RDy^`#-^VNQK#TTcxN
zh$Yq0$y-rvL9!q}(utY!P-{<Tb4e+uQ6rsp?>42`{jT#lA5VttY+|CKDRMN(rATMS
zR5gKX7kPcB{aDFQ5(L_Ci`92Fgxu?7m2T_~ytXkJeD<VuQ3r41DRvq%@fMM|$Uw54
za%R26SJxeGX>CU1)y}<LJ#)h0mT-%@&wU}^w8VZdd$8J5W3{z)W71i at pV+??%Iei8
zQ|zJa5P7^0(kGPCWR{f93|7vnN1toH^wNS6D#s9xvU1O=Z#wF{zWo|HE4#Ydmb>4v
zPCNNZW at 0$pvsgd6&z-F*X1aUb$tfTBU3DGW#Z9dbV?Ug&U|Ks5WhrY2qkZi>Uk}Fj
zN4a#93RH5xc+<`&xN%RzUN<!d<?_6|k8&$UxtZ$cXkvXORh{i!=%6`rw_npG9)d9O
zm9&w3kV-uKP}fiP)TD<opNx6P*vLKa|7{Z|sl`?@#d){kQ9^xJ$+UZ^^rdA^`ffE%
z6KYzts5`s}4<S9F&JNsf4z_Y98++2WCiK?(<V)CVTA=6baCc{oYK at Y0wq&|fF4WO;
zJZQmE>UXKnNz1IBj~Tk&E|udN4*K!2Be2P_LtD6GQDm__cBq@}`kvX at 8ldg}@0kf>
zE<aKA#JsEXGdqFP(A#jfpl0cuay*iE^s3jFc$UJ3*!HHjP^;P%+}R!Adq4C`m{;gJ
z-R=UDrIIMMq5bdBiMZ54Qe#3r_sDVnJj_hEw%yb0mYVPK{(DB$Z7q)am(1z(05omI
z%*6$0p*R at AwrON7Wg0Kt9&yJsp$o~Gb1?j5Q8X=RUFt)@g__$iJP1XWcVUZl$HGq5
zb<CAWDvo}8TGJBNv%=U9J)dUELnX at Rn16#TGbf_fgp})*AzZffRs78Q>(e#P^>7RD
z+pRZN->q at dpCj;lHBS0wf%9Y#I^r$(898SNJS^}t1-?+=W<LStEE0H^3;kmnr=DC5
zg=LM(y&&*XASS<KNeD;zt at s%|j}^Go^Hhz~lX5O{p>NUas+{tBT=1J*@c(eZUvk0Y
zF8FXN0_W6cq6>bu3%<w&|F#Q$n+yI27yNY>{E(dV`tuXUbYzp|$Ro_ at oOp{1ZuW^f
z>2GzR|BVa&2N(Q{dc7g#FTl^#w|iXhZ|bG+q;D7WKN5I{z<(ofNgo%uq~9%YdEb3s
zFGO_O0pCnk&WRs0B8kg<y(Dm{&p!n&^;wAhM|4j6{88Xi&MtvVIfMEJciQcT0+;lE
z6nKh!flK;P2PgHEcB{`z;<6q#y5NrrT*_(1J_0)Ge*u1pdLr-(1^$}G*$k}^_;9_L
z(24UHUOFd!p2nH(H}Es*wh8<qfky-`_2Iq-I?9ps4+&h_=WQ2!w+ntO_7~7mzLfJ*
zfy;9IrN)`xDfpRu{g=R}3Vf%)xir+!AB6S)bd<wYod*BBz`3f^;Nu0(KG)!r1%86S
zD>cr1T`ce>fy?~%2syIcFBJ5BLJs#q&{6+O at WbKq%6(hVUkcpld7Ge@@_!`g`vm<1
zf?mqsEa;{D-wJvu|Br%R%Kw|7m-2TCdMQ6wFZ`xG`-Pt60v`}K_iNCRUfz!l0+;k(
z(gO_I^D_L5-6jcqwZKmlcvRqZ0zXmU^E6I<E*E%M;4y(;Amp4R at QVe#lyi-sKUvUU
z??V3{0$(HO9}xJUz#kFvW%>S2;4DXDx7P&D)yoFoA>>Q_-xKswP8Rl$&^hfkLgOqi
zNq?BYPeq(b*XttZL_sg}b(+AX{Br~@>6?Z8K9O#>pr;&jpI#*BWj()M;Idq}?}m<c
zxB@?uub&C|QlBRUF7^LUfmaAQe-`p(x%^eoOF27T=s$9y&(r%@SYDMP-Op*<S-!^$
zdU at ZK3i>`FXNI7^Qs6;>%lq^UAxGN3S<p*+E)n!H-3tW0EZ<dvUdq2(&`bF at 3VJF3
zhk{<pzfaIh`I`hT+r8aF4%;_;ze2eY*q21da*=jERN&HXlLao at w-Svz%duMEvVEH`
z<eY at GO?^I3(93%GbwNKv&@XkN9~AgE1^w*;m-6oy@~Z^>&t2%B75G(x{;xt#wZQ)-
z=w-UY^@a}GO^ye?DDVYB&JKZJE$}bs4O5iUCh(I5F6E!)g15Nf|0Qs#&zl-&{gLwz
zr(nMo9r1JUGvzx+<J7ZR;ExNuMc`K-h5#JtFT~Ht*(UI71pbx_KI(7~!BLJJ#~v?m
zX}2>3F739&1z+ZZU!-x`LEd+31TOEp8wD=!yA1+A5weUO?$<c;CF|AG0+;vQYeLRR
zLe36BFXikN^fiJ$8~eZLoav4e__q*m^qiz|+F_=^eS%)5TO)8O=PN=^wUF~wK`-Sz
zE^t}Ce-pSY-|QnG6ps0l_-GfrO5 at De3j9od=L%f*n=ye)`Wpl;=^qogtS7(HIQ8rk
z>Ha~`%YN`xfy;Uo7jiBYa{eXgrJh-O<C`<xF&d{GWIuI;pqKJX1-+DiqM(=gI!(|^
z`DY4xDZg3JOS>%*^iuu>f?nEfK;Y7DQ6WdBdz-++!k+gFe38I^E^ygjKQHhBL4URv
z0XW)u7JjC_ea(vi9C1H>24Chy0FHP7KZ9T4MF5WYY4{oZ$6f^BSiaZdXYePz2*8nE
zwqw8d618z@=f8RttmviPJ`%WW$1=y;^h{UYzvBch+p$R+r#>g)XY}+5dMT$y(9ah1
zr at 7FdEpXYtcL+H_A*V;s%XC)>T()C32szb4&Mkso%DGq2*9!Vy30&SszZdu=g8sh*
zF3W3&#%cdPLI0tkm-j{X1Q5Z|{<3 at z(m3T at ik~T$!vww5^C&^zC+Ld=J at q%wO(zKY
zO9g$spub+=*9&}(z&|_+0XXXU9sG=*BMOMx_*(b||Ju<CR`jg`Ki>tfI3_*)S6%Qn
zf!{3TU!w6$V9b{pw?8IunXi|HoNo&`6~`g~$NWnDYhCc=F8H at y@QVwTcqP9Bm&R^u
zCMNNP0{?}^nXh#Me_GHl5cqeFLjaEY%W>~R0+;3Z7lF%uf9&x}%n&<_cfqS%@N-=7
z#V&Zaz-9R^*SOOTYXp8eR5tc}OURM-xqDJFU(!BL3tZag6^%39?+W?v3HmmHA3ZrK
zU)G-z7ksV at zSsrtb-^zdxU}2T0>548d3sTLJ<oN)uXMrhalwD*g70#{5BqX at eNJ(~
zn_Tb<UGQ(Y;CH*=zjeXib-_<9POpE^1;5w@|E>%EgbTji1s~~4uTPN+eufLa#06jJ
zg5TnTKkS0P;(~`tlKRW`@Ij69e!K%ebH8sA^s5BES<uUV;fzvSKIKTfQQ-d}<SY{S
z4+Z`^fy at 5-pBiU7{3Ahc4ni~O8vVyk0TCSWEc`|>09USYr<@srUiRZ_1b!#@jr<=A
zT<ZCAfph#|=${jKoxoqvIQ6+);A5vE07w1r!q3P#M&qPkAaHE6QjYXAmC0|b3;m at 6
z|1s!|{2PTFnXlUfeV?GeN6^dh(k}%4rGkEkpqKLB7xYqo<}@(FF<(-Cp2lehDSw>6
zWj+70kaGrjOn$LRO*zWBTj0IZlep}^RttQspdVeHq?i5F5ia<fF8D~k%!8voQqJK5
zm;F(N#%Z5*_?dCqGC_X}aFgF(3;OR0`qu>gt%APzBn03ne=dGT&W9SOo*M-2I~f5u
z(w~l>p?_ZEq`yYse|5oky5Pf40W+La&S5V2mtF8G7yK+2{5lu>E*E at Eg;G=Lc`q)F
z9sXRC#AW&JaKX({YqTfZB~!k2Gi^D<=iq1LFV#5h^KF6OHVXkb;vM)I`d2khIqUE<
z@^A7Z07v?E{0#jA0+({$7P!pUm;j{=t<O_k at cAzIg)aEbF8CuZ_^U4X at YB-kd7KMg
z>w<s71z+caKP~W^pn|dUUj+UWfuGC93(i?C7YJOI%Xb7W%ke>hOZq<xT+(Oq=GW;;
z`a*$A`k4Zk^sNGy^n(JI^cw^&>0c1Ir2k0Zl74)Bdi`e!T+%NQxRn1*flK<I3S83v
zQQ(q(ufQe!godP^Kf$G`4}O75Ic)-$a;_4%q`yz#l75H4CB0`}QXffQDR4<261b$l
zLg14APJv7MX9O<k-xRo{Km5$3o|66qflK-}flK<e0+;kp2wc*~1up52J1f0Da|ABw
zuM)VFf1ki5{Z4_)an6biJ6*Qt!|^lqXSD+_u*q<yoqfUfq*c&&y5PCFHocMmMJ;!%
z1FzJ$*MXm}@o@*I%K1>^1rGdZtw*r~|4)sd<iO`^-0#5ELjaO|IxjWdE<PN<HGa<a
zO}@UZ at iqs3v&NS>@SkgZo1Q;6a(=DxHyrp_8XRty13yON*<KZ`#!)QC54D_p2Y#NW
zKiq*&(|Dl+FVgsR6Co7N=($4Uo5cJN)4g5eH%wOK3Hp0AUNJ2de_Z212mYbP=R5Fc
zHJ&*?RnC`k>~Nj~&)4`D9r(2xKgNM?)p&^mKWvyS{}cy4TH~iV at RKxtrUNh0_yPys
zrPJ+j;KynD3mo`-jjwXxuV^_}Iq<(}{ALIKfyRI6z-Mat_c?I${hLP}c($g0+JQG}
z`G0WWM*eFKyi?10&w-nC_c-u5TK<Tyq}GROjUVE`r)zwI13ymVMGicy^<mwnWBvas
ze&%_(h#(xRWe7jheijgfBfc0vgU=uc=cMPe4;^vYt}asOP&sV^Ux;fX|LZRJ6#^%(
zp}$Sz%ol&^!&vYi(YRBeXI=0&UGU+$op#DOQsAB7HTp~vxU_ at mA1J3w(9aa~Qck_V
zr5tlky;Dv^(9?!SAJadQUdkWP^iI27FXTu)Zx*;LuiISkJ6!O41upgcwZLV4dr{z$
z{vCl!`hN&q>S_90+Ck!b1--P7`HmdvrTtC+?6m)JG$fqU&eH`h<pc#T?QHsU%8~hP
z6!cQh#Tuu_pQ-=f5cE?1r2?0BxXcB=THsQj9|>IAf1|)9{WAiW^v?@i>SM+`w1dR|
zEa;^jb_iVB*^Gmn<&~qy7tZn;BXB9_Sb<A>P7=7()8~RubHQf_T-vSP1z#d?X-_l0
zbJ}gWrl*<sGxg+~E^^Fx&?(1^2Z>*VpJ`{lFXSv2xEUvsUh4UTpkFEI&G^xo?%xEx
z?5E5)k at T{>%(%~~rx_;_?-l8qaV2r7=RyK-^rW5_3S5@^fWW2vTLdoUoAD;2r5rQf
zBrfUAc+-iSaV2qS2f1JD`-n5;^$H2$=t<m+Tb=UFIFz{5(~Mh*OZ%Adh!Z#C7bkAU
zJ5Jn;kDRy}PdRZjUUTARd`kR${EQuz>2VWrSzcy*O<dalPC+m8`!g4OvkU&Tz<Y!~
z+XOE4G~-`qzRdX7iJS4P6F1|1CvKh(ocPhhpd6eNH_ri1+&nipaWh_a;&X(2X$SLs
zKzdo<%y`x*$Bet3_;MkCC1ja$A1C^KdB5o4v&t{Wu7;jtW;&-nZsThG_^9Y*d&RX_
zbd)30JyxMZaXl?MgudN{eyt1sLl^vU7yQpI_%0XxaE&|r7yX)Li2k!&<go9fbK2)B
z8y<pxR_XFyqjRQvgAEVCf9`^BbHTG*>f13cc)$g3cEP{lf?w-`%W=4 at hZ9}&*RQ|S
z*g=jT&UT^ay+h};=an`*1ovs&S$|G<p+DCJcawjQ3;pk0aJPDXn2SA6alxBh at C#k=
zZ at J)iyWr2b;JaM#VY+`Yc78*L3r5<8aF*BUE_jy<zQzUr4;Ork3;wbT{tp*?q at K`l
z>Oac`?--Llzu$Dh?{>j|<AT5Gg7dpqbWS~wb-_<{!RNc+SGwR^T<{~tCiPi>OVi(#
z6eMx>H3qL2xSXHw5xAtkM&OeEUV%&c-w9mO|3l!C{*a at SdP@3f0+;k>2wc*42wc)f
z1up5oFK|h}Mc|VDb%9Iz++)(~Unp=%9}u{d-zsoPKOk^Pf2+VH{euFR^doe~z;>fv
z)CZ5ovw__$@IwW at QsCoV@Z(+ZsV?{_F8E9re2xo#rocOep6vo}75JqBUnubJ2wdj(
zdoK80F8EIc-Xr8cEO7Z;uvy at 8UgC9u%lU-80+-J<2O%vwmg7(HGxxi0##F!0KKerZ
z=)PckihdB+hF-tkQS^Ld*Uhh{=C@<<&EG^Qc|rVs{PH!Ft9|14>1*i`{~3Pi=*?Jy
z^d_G48wqGPPW#Suy#lA43LQ4yzS4cb5W$z}J|u9NuOfj<dfsE^yVFun;#;WzoLBv~
z?Md7?DgQwO!k6-!1TN(-5x7 at hGr6w`+*}fGGy(WteNA0hhm1Q_Ul2dffbjL}cU4bv
z1a4?ZKTO~eeNCJ{<G!IUh?zP}=y8FYXEZ{;5jg1&)#2>|r>wQiAlz=-Q)wQouj!fR
zN28A^mom*q+}ND-X8zyksk;MfzMyBEDfcc1ZoVu2kieO*r4$bLhQKN39c@%IA8yi}
zq^Pl%hX5Qs$~i*w*9e^Usl$)1QQ*8R))lQ);G|zhVz~7Jr~Exy{?7zX`a4MsXXb$!
z&7b*h`JWv0uaX#Ul%5Y{H07J`nSWm3l>ZifbY`BG^oJ?L{udPVhYNf_;9nB>LjpfS
z;C~l5(=gvT|487}XQ$>lN#7(!fAjtG8iAAk3)*g70w<68F1nd-B*vflZm0RKxxvl%
zEgunbDBrxt8l~$C>1j{%ef7@^ob+L>PqDzsQ|!e*xN{x2`7WiIe at o~y!KNQ@(3|g1
zUgyBg_b1J{Qj|k|I<!9KIfgj(@6-AGhmb at 1<(fWUH!emW^IghA1y1@)G<~DMDc^ig
zzE$9)zedv!2%Kq{?^q5Bob)$o`sW2s`KJ8-ByiH3=fGV8r~Gx3 at ei(=%y7hxQCIfA
zYXr_X^Bv3Y2%PdaYJFZ6I4{lj?cWqQ>7Up1a-GaX;Kq&C?F7>#{Y#quT!Ayrd`~hg
zaMJr33AbM0RAH<x*PjWT^tt+edtTrv<Bg)8<?WHC1y&Ica8~|ebA<!Gn~HG$dc-Q?
z_X(|{1wB2M0*dSdF75LQ_xWK8d`UtJN#Xf4XB?`7 at QW5TH;2N at n!{cAiUU70 at EMCw
zs*Us6TbG2}mRm!TwEhj5OMac<-ymFl$}v at L@`zB!LEE;KlV(UcxHWmmX6kAG@*@bY
z>7+jxc%SKs4;U16cd|0Fy84Rn%^4ZQXKGRu{zPZ6YDMf+{s$c7YUlJb$=YXmysWUa
z`j$#>mo`4XToY>Q?ry>zqYGz04qdgysggwzf)V#~%Ga9G9m6_=$)sp}3i- at VRvnU>
zt>R~N*6L8{JZis98&w)c;Y|B8`w$Nsb_jI)zQ)IYbwCS9e|GtPv%97LaUZ4FXX>AZ
z+2zX)rdl`m;8P2Us)i7oBX)O*(z1(cU*A*0N7LH*4HBye-^vIV&6+cBvie?-4&%7z
zA{^e1k1$1eJ5hLeacE&TK6Zuv2p<FJ;$Yx2a1UY-F*=Q$3XSREgW3ah4lq5OO!#j6
ze$8*5tLGxjXWjkfZ`Ax|-h}*o{@!2ywlw_n4uIc0zsdB^JOKWIH0hsp0Q_sy at XtR0
z{+rV9^PTSg+V74u{69GW{(CjQtUsK;+TZleT#>Xt=dJda|H(Azb6#qH`L}9*nLg){
z_Lu*qH2i#bzQ6q2HNUjq>I2|^Ck=n}0Qh&M;a_n8{Az*|^iuyz4uC(`JWpvoc>iB^
z0Q~uyUzQ)|)SUMB0wbw at jKr1gyqdqnEQHW_z9G;)=TIoKLWhl4_JV!2so3_Z|L5^D
z_Au=tpG}#Req6(q?dF;n$_CKBRx5!{!WCsY`R8kXla669>6<X;c2)lM^QFNXHNSqm
zG;qpX9>Fkv>G-=ee at TMVzHr*F5wNnKBmG@^!Lc@<>VLinTBE<o*Zshlex`%}yE=VS
z-XKxVX}`k(DE$qA_P?+BFLqQ6M>1+&DqZ;(>I%GTge{Qe&-pW_{>SU|opKACY`)Qs
zf_3I+hSA?4prXa*UtoKQ|4#d#41T4*gWvl(M8HY=dl7c(e~U}{>vj5O-kY-Moax`-
zl75{|-*2<2@}GcfXZjzwr2mdiKhw^JmNGQ`_gvDyPN%;~q+gIG{i9$vCNa!mKebp3
z`1drw at tpZT0(|N0KYy&P_%hAN`op%ung5VW`s)|kj8A+_{?B$vf2&TvPV+PU!Zhh~
zU39wq_bs;5|Bme?{yX!3g-iP0Lx$%6xHReiM5pg;XS}U;l4iZWQNY;Gm}Qd-|1b2*
zp6P~B`-ac>oUiBgkn-0rk;WrlI%od59z0$7U#IhL_Bqi0d{1WdH|^gS&^|DIXa2{x
z+o`h6l+NgF{JS;3Q~wIh-$<hi=hXj);7_N&c`-Cjx1ZFXeT`H9Q^2h3C(_{Mx@&Eq
z(1APCF9*L$-$6G{zsPCSIMXl1&zb%iV9o>XXlAV^b^3;0i%IYsJm`}CGM&CDC#F9&
zP5NAK&HOw2udO<L^B&ox at 67+8=Ff7}vv)MVliuiU<gGUPJNVaX{fjjr^)JKE at SA)+
zYSK3XjenheQE0;2H~a?vxk=vu+TWzpU#7!M{{;LDze)cYoxVeTt3szgp!tpGH5b}{
z!SFi-Y}5RH2fdS@?|)c+PWu;LZ!;P_jToc92_FxBs9;q%(l665q)htE|0(zxek1n^
zlfDtC{R*9ap#wMk29BEa4WRu#oqnSZGyMwu48KYL`zC#d{)_iBeZI#^m;Y^P(w~tg
z{T#F})X8c8wK{#HFG!SghPfX5)9|nSl>Co>O8yMY-|S0&+EzMecnbJgf5%87TpRnX
zb>OBwG5!n}e(w!7qiH{k7-N6qH)wum`PFHDL+9i-;nTsNuKrYbnJcVM(1fhNv+*<X
z4Bn^Hcj`G`r!Uv0P?Rk-=|?p`<D^@q`6b3{!*B5G!H+-7ar;=SHNV#oYTxK@;GgL9
zo&0xb{_PG1N6 at +x{K|etp!Vl$``v;1Nk{wD;b-`b{g at wT+JLOJxA8yT-|ERlu9Z6*
zKPNxmRXY1#K$f42ui)MoZ~NxI(|#16j^8 at grhJsf70$`uyg1yvq^P;MsPoHSx?=U;
z{%2p?|EEovqCnsDV*A3|IO5`(;LOa7q{Ixg(8*9T(e1)O6$-AfJQ#Jn?>XW_{~#Jb
z%X&<~=HINUsuR40^A_}WM0&lx(xTF$;>pu`Rj}luk|{;SQ;K{Obp&`=e!L$k2@}aI
zk4?mkUB=>?F5`l^R>rdYjKf9^&s_^ei65?FhOST3aEiygWn1s=O#yWvD^1S%=$oOm
zvWZODGn6H8JJudwFdt6GdD}7KLC(zSTns!Ny=4kD^@E1VmzO1>S;5n1R0cz#Irv`b
z;--$4Hhjh$)cDw>ueGx$gs&rqLv5`Kx|{I9TfW$Gd;&EoYAU{yTDhRJJL1<;mRd~=
zG7qNevG`dYW^Ewj=x9$v!?2hC;7Bj33<mxO`mR3ZZG`nH-ZdzFKJ7m*1Te3<DM^T{
z&{w8BO at y;d-R9W5+DN7?q8z4U>Y2fh(YU!EOgcex;qWO#x=9F7<|pN!242c^^49^Q
zGy2-0p<zBZrE8<h(&V3QfRShNUjdBi7vm at 0d>#0>J}v+{r%lMZO7lBCC+$~2z<Qoi
zrx9MQ8NJ#!p3&cgzm5yabn at S!37q+I^0$F5o&D<4*pF?N;Wze6mo}4rk^kT}ssEP6
zb&=`p at 7Bj%rwz4I^Bd1;Kes;4?0LV?Flyh)-`v^O+1=IM+7Yokx{vMSic89DnnWL$
zsJd=_+#TbSN>r%J3hRqlRZ3m>d`;h at ecs>96CL}&%CiE|cYa2a$}<De-&fA7YzRdE
z{tE*0>iyAw`7e2c%Sl`OvFxJ@!Q+n(6chsRZ3+&y6?lV#!Ghdi^zHXOotd7|)dji!
z*o^!KShoIXb-}ppOvc~5-E$wy#v0h<8Q`<U$~Swf{DW2b{w-Ciy#3Lv%~ko9KW58r
z at gHv|=2^J{qWqUUP8Iyo7tcAb^4!YvD!*D8ddzcV1tLCTe|Y|^;9zq;ln6$TvJ;GE
z7x<%3`1^NxJeM&&TxEDx{v21H`x*+otLyXq(W>0a&Dq)3j>{Jod5#>Qb|8Bq!ykQH
z$*7IKTN~ZxkH&Ro-ttGc1fox<IFXw}DSdDW<Q)$M5~&BGk2Cf2+wGJ~K~?Fwuf|$k
zgG at rX*zr^V9Gki4Sh2<T?Ag0_q36hI%L)#jOm%|My((rUtoBPp`nM<}%Bc7~Hj~yr
z`kL=KfAnRoMiy<r)S|F7t at BDS`j#DM>kvO5p9S(93CpJPQG3nT|52`|{~9D&vGa*+
z&&o$|wero#=REgS7kDdIXBPm@^sIagFgb#;qvGF%MxG=4fWR<nL7*`y^RYEGABdv$
zw8F>7?`L+B<w1_$0*apuMHjC1GdzRgupN#;i@@Lt*1)&?{jcu|px~q11F?o2TsCCy
z3QXKRV=#EM6`c6mBk`>F{ojk92}W{7->d{}WvqJg?#gKOq}?h7fS!%jllLqnv?qQX
zXq9GatQdVP&O9wls<)Q7zDKq)yU~V%Vt+JPP!^0<7gPjs<saA-neLfbT~Ozl7%XV?
zOl&CV@=Uy`pbzApiMJQ5RsNj?>y&?Q!FuICRImxYxaDvs`8N3n2MV?U_eWnr8T*k$
zu740&;Z^>Y>;m4|TdE7Pi{a~124CV{>K%pqXshCX at tnsJ`Lb{LU(fSLf2Xq2|3+C#
z!iBy~{d<OcF7v61&bMe*bf>>L`yPMB)>HOwQ}xw9sPMIc=wJPVQ%Qo>!Q2h81~v*)
zPz!avjGa_Kz4QI$TOxUW6h^*(uq#6;gevNfzU9su-SPk%L!F4uq`No at FH9Ps&ENlc
zncak-`M`aq^^RAgpjCTf=OaGF5iW3q$2!8<j_}`6MU`?eNW2h{vI5C#QJI*&in`<t
zc5VM1)#xv%H0)-bRcRk}C>M2z>Lu&XJipyo`QEJe_rH;AmkICFCRJfnZ9voMkJ>DZ
z>6I~dr6By(^zf|oaB+IrZjW`UN!fgW(Y40ZLngT+S(zmKe0uoj>EZ9Ehq(!ONRp8i
zL!s88(3wLa^p}oYRd}vJ^R9XdW%cM5<*nRwKT at _l)!R|sbI*xxKM$4N?jP6zT04G~
zyuTdXZEvozf|8V^OSz2-4UtRy!6se_QUCVt&B(tt6TR1qSvi>0SeuPYVA)65{@4)w
zuAF~lS~q0i>PH!e#xqs?VMp`jiVq)corVegDR_x+*g3@~mLA>Hj*E7yp=NHawJZ|u
zZnytWR)Z~lT{3l=9qeiD4u?A|+nbz#BkjG*EdEPE-OH9nCiix<Hg~p!Eg49Xw6%7C
zt$F#P^IJP~LQ7gBSSQxh*3{gst`>H7MlAlDj8)v-P1gD03zUj1mHl*|@f?JiXUMpq
zE~sW9hTlj<4l{ERd=@Lvs!c%yo6YN)dHGjno|ZT6imaME?_l<fyuvj(fxO~X!z%O2
z`iGyE_fBSJ|A at S@>b&C0yuulI-Whr0X5{71$jhx6=>@xb2!~&YpOOcL{^6^Jt;re8
zz9Q?&%(1}fobw`HU`F3fxVCEY^82C3wv5aljL6Hc&daSFc at kjWqjZ;`P8)p(Goi$q
ztm-`Ps_g2#!v36Dd5xKW8j)96ndhxE>dhRf<m*?g>U&7GevSP(tFqT*4Q8r&%XLaR
z*8J0-&E#(x!L*s5hjg6UrvUv{(N6tLH*0Oih`e!?dHGd&xq*?IY>3C((0wjPX)}Z;
zEAeEM8kJ at 7sVUWQte+|9sk3oeLv};jbF-v3bf;-zHer at E(zdV0=v||(N2+HF0jsmJ
zN&f{2;`(MyuOImmvA1bF0qBc6G(O4^ahJw(9r!&OALhU}YTRidyZlC`?7<@Gqnh5U
z{N%qUHGWJIQdduFyu^Xqb#tUu>A?S>>HQ9To5trm at Yghco&$eF<N7ssBKAFvFH0cy
z#V(Cs;lTH3+%C^#WHu`(%2BlvN!S{p at gE3`m-c$Ek=9QfxcwS^<dD6yT=zryk2vTj
z0Ou&y=}rYcCNp_ou#KWy3VeKKlEc)Ct6b!K7x=B2d?L1;q33>}q!bftS^wpN$6fGu
zT<~mE{97}5SK7{`%l(h((&gMpI{X?J{6-g?=dq-dbEgaagTQI$3T at v_THpWDxM>L3
z=F&|7T{`(Z|1BN9%mwFuMy9(Koj=`r+q2%#c!j>P&AzaMQ5Dk3AM1i2=7LXf!6&-l
zR?1{f>IAp1WM*e~dsC!7g1MeWGp05#TjulC)Xi?L^Oc4|OPesG-NRi|i!dSF*5csx
zRdJT6j<ZAyYv$H>&Z!S^8N5Q>WfTRgN-g}u3ix1EIscXLA9k$-tEThcRQ{X7e^@b(
z2o>YAi4><#MfwySSJi_?G5VB9pDnYPc!}aIQM at IJw?y%lDBcpqTQdCsX7TsiUe>-=
z^24${9cp%MVW at fW5~Tl0_cLH?QyWH!p|d-h+VQ`osSd9lLe0yXLW_Evx?4g`&0p_r
z?G7U<{f3K=+wve~;SE6;FF7D<PJLuLV^CLoC3x}C+8lx+s6c_{`iRfhytt`5gfV1m
zq$ki^Q{RMtHRYk&5Jt33k#No2_I9g1+}_-^9IC1v3^YP$VN+|H6`I$9A!<u#Zn&ox
z`xa7mlDXRc0telJ)=RKM?P;M<Cvp*PYRBuF9_*q>ml;&^h_BSnvZf9+gc^!NHTBa%
zb+hYBL&(F~Ep2s6Ssb6hPQGFos-?B3tFtFu<9LPS`?!ob4KX#)qi)6qJZrReG_^tC
zqHrYKvD89Fo7=nKwRHAk*x!mu)M>T$H1V0BS+`?oPAojhB;G;k<y~q{ons2~Zpw^l
zNq?-s$LaQ#c%i_j2wciPQR8T~)w)F^f3BdH@}mNuDCFPhBIh<if1IGdN6;S++<eFJ
z7lMA0p#M*SbEeSfY0e8^ev1S?ni+y4F6o;!?#%BJK`-^ZK+sD)FBkMu&jR#AbWHcl
z_!&L_DDa~MzFXjuzLWysm<+o#BWJe2IW{o(nF8l~41+gnoF2!X2LHOirwE+u)adAO
z62Z{lC~&F&odTC~9 at IGX=a|~a+2lh1lE7uUS-PL696lr&IiC|a$NmOCO5g_zyj0*E
z)fxIKfpgSl at OpuB{9y3&G){G8c^#?89mKhQ(a_8DB_+LI(=%Uu$71Lkgq(7Lw+Q+%
z0+;7Vo*?jx1pVg(zDmfK^xqQnV+H+pT<Gr<^q&{>_qxzOCg=|l^uKbU|AV0CGorE2
zD=zf!3i@$^{+}-NxqQ(HNBbX&pOK%hah9XB&yj-ui-P`G7y4;}{xCs*iVJ<Mpy!;1
z(Py3ueT$&~lAv#Mp+8^HA0g;3cA>vq&~t68(dQ}`dU-B`SI~dYg?_z|KVHz^??V5C
zpg&R2|5DI%uE*&4tiU<%Y4Bp*-m=_zY4ER$`<-|Jeste(;MF#)+DBfpp2&WXwxT2M
z!_UY!@`%fJfPDuYajriw^wk96h)X#^g$|`}5xAsp6}U{d!v)u{x-V#>Cehw8ju?NO
zmZdY#rv at LVakj~H2A`yH^DJiYMvb%0p))w&b<*)(rZc!XN168soxxjZDB(C<C>CM1
zfpnxVP*?Upj*;k$96My&+~88QnJ*!|u1bpK63s}Q^d>*|3Y>A~dHF>Lu9$%RMc|ZU
z@@d9(CS9ZVcxDvNq&vk9T6_ymN1Q+Nyxicx&GYgnT)V{6M~e1&0*5#a!km#{pE{t9
zE7`}c_K$l?`gFU>Q&wIT{eNd4_&F#)ju)J+LIdW0WS at Bqex~jk-;Lj&hM(hI!)JUq
z{yNQX?t7+RkcQt2j8#x~%eb;#qxL`0?Y0gMnY&?MN?j at pf%Z3X5CUiV6{b%*V-M4g
z&?Zb at -n$4|XBk2UgwwZ60%3bi(of27)|ff-Z_ at 8hq-0+>(`VbBF8^H|1i+bgh54tR
zCR--|HNYs7ZGv=9X+rj)(mB&V3z5Y5EFoPEA3ETkvc1HA!*Bd0h~c#}{jHkco8YuB
zm{;i*B9JcsehzBjHmU#id5^4%&iwai%(;&J9i6_R*J2X<CVbDQ<o`SPng36k{@dVH
z`F9vFR}VZ)IkWuP*P8qo+>6ASzU&(jw07zI^BGz?($X1!qUN{J<o{!wFHUrn;WL!w
z0C<Z#)VB&Xzt<3I-{^1PGj#e+e!u2l=19=VA4Gh*`s3C1qkZUTKQ<|b-`J1Q&a?qp
zoA_`Fw^fW=CLrwOr<t8?2l>|OM!nck;T_pgZGSrc3NNMLo6`;kN6`9md6`!_d;Oq|
z*w^-dvyOgB at zgSVA$?+vp`8%^yR9+I{Z at j+s!*2|=!=e4b;yG->m~JKmia8pYmU!2
zX5uyN&SykkbNr*5HjB#*pMQV_jU`AQVF}XvSU!N2B>5?;kaDs7Df*fp3syjARyU0;
z=sUsktb7iL{{gJBp}W|h at u<K5!;j7%<!|2VFMrfCa2umz^RNb~7wa+j*kJQNa5N*#
zqKYT5MrAwW9$=+Nz-C3CUb+<hGZ(ByAGIl2WDd#)n0*HZ)wu==>yXACU5IGU$}33J
z|9C#vB4KexAA(k8bZo)>G|rA^?X^k&T`I at Vh1pbwRJxUCRi4Q;VOadx|Hk5!LYU7r
zXw_WehIM7Us!&VM_^;T%a;InDQs~bmqtOqrgj9)S9M+5IrI=pEtEHGfW{y4gjV)N+
z04XpJ7ARI1lx at bFGPN$We?>u=UY8WjGOI+nMAS2IBUl5`Ej7NKzBhLqwRYC(Nz?tY
zEH2#)Mw at eIY|i#t{uA2@$|AkNSWj*+b|P1S71s_f%<%l;q(Y at tW%P+)IaUouX82=O
z`N8sSJwK~dw)Z{ddoGCOZF;F1n0MS_)-rOv&|H|xA6rq7zvDu)rsjTD{v8iu;pPA?
zkUvBh+pF5l`nHP1`ZnV8lMB-7Pze^NE^A#&ei%1WQ0RLuVM3UEi(1S^E5Yi23r1hF
zBe}wj_A8D*XcnD064 at auy}kJCi8wX2*P4p*zT}P7fK!Tm8H#-6UeCZzlw1IYVJZJj
zmok?BHlnC2qtE-JZ3T5)4qTVeI2T346|kPmE;NNc at H55uH?HDbxf1OyGc!MktX8OU
zM=s{yKN<773soj#k%Bt^;Ec>*Gy;QSVWV1czqz_#2J4V#Db^3Z6*<CRUX5jy{d^Pb
zzyBk)0DJeI>M!5wx%4YYA&9l1#bz0;TCa?v$oI$Uuwb+ebuO0cFMroFaEDSXNWhPZ
z804DD29!dycyk3;C9_1gROHfV!SWC6MT at dfS3uM9w{5&JQP at G2WDwba$d`R at 2BROM
zYAFM)+|=tmZE(_wToGI|@M<I*t3*Al!6%)3KNInLYPQ!RccWR9-eB~DgiHd<5*5g^
zvXh!$@;J-QAKfmNM<?nd7HP3I<%-%=r)v{dd%<`@FG@!{*-%gyZ$xcU?E!AG%egiY
zck3azSyAGDi&v>gyS`W64?A1I=)1n>d^?etGP%m7tG!pQ1;4-l(Tv*Yc7OEU{tt7z
z%POPK`kt!n|I4oEGyRX?uFXEBHd=kMRbBp6_nWnY)dyStjCXg8;aX+M*K>w%@6JcF
zBO_wvmC>??+0E{JG&7P{?b$f0d|^#=RGGhjOJ at Ho8IfExHszJ8$Ck11<6lx4=mR;-
z_ICWAGC%uJB;JkMrSg_q4!!0cOJ-iK@?0yHd9D at rTmKtq8qt`jJM42%o>EZ<D^T-T
z5NvUH1h6WWV61CgEpNXMVei`5MF`-&<eUFMEHuu)@{gW at 7g!l$OAvU|GjJ#Z!B`k%
zuX+X+Ay6A at D?kWQ2Pvj`pnI-&O8jaVfp(3}Kr6#qZx-XKmgpCah_<ube^P-JS?rIE
zE%3)KfQn-awtpG+uz?xS`vTk(r=fCT#d-NNkuN|Z0;v)iie2CZT`_2SFIVFI(HD{_
z^xkZ at OMzHTejxUZiooDJE%JrP!2r=F=*7Z_#p3UI5M;*`Ct{S;#Og%q?HS;DuV8Fa
zK|E9Gd?9qLs)M!AjBJS<jD8>~*dMzP8dgED9peyedIy*}vdACZ5nqk!lepjf(Ahs&
zQwQ4{(L!g$LUfH0jSG_-Z3(^kfQ5Dz6b)hl at id4J#4d&<X4RprZK;9Stfaz-g(YU$
zQW4{jY8pUPl1O_X`f~i2Xedp86+kNm(O99*3ZjJP1yB#A^c7rX&rY5_8Y71!@VY8M
zRlEKLb!($<#MdB^K<pyOo(Z+TYSf-71z!ZYGmYA~NHGT5J-b>!ZFDDpjt_%Ge+>Ig
z{ITV*aV3iHD at rWdNd&;mx~F*9?B*i%g#5{Ym at Pj+qAN)<jl=!Xa|?3gS75dlNvmj+
ze($SH7ghY@)5ZNPiv#J}#o<g>w<E}#N;f~g_g_qRuQT2L#|ve%uG^15^miDd`J?|Z
zYxaY&1sGu__UK?#;M=5b{Wi2KEHX6qGwdei20YCKPi!3L8CZuabZi{Dg9i1W7X4*i
zuzasw%Ce+n6|kG9)Oz4&5&>)m@&?d$c`@`t+onu58y#4LJt_(=(7y*Gf at hH|t}?I}
z2s0*Z)K>l(P%X#`F at 7t?ecI!%Max)$+p<D)Q at rAyo#3V%#eI(E_E&Aro^Hjm0_fax
z0~j*cIm3l|(!+f{j=Mh4-bS!pNDZRy;>`t((JU>=uZ_O0+Rj~QD+00eU at o+(RR};2
z)W90sek0I)`cIq>`)%TtwjYF}PNEf2P4_<AlrNA5l?g43sqi#kzJG8w%v1&A^(x~*
zr`n|P^6l(DMBS9}xSCC6e+w>x(H`4&svsc24 at t0JP11h<hrM@!kE*)%$0v`0h{y>_
zY3i$^jcsBpCiqIk$3z00kqJh at N_`~=i9r!^L!wxG1d}Moacb_>Ua60kwph77ZfT)l
zeFjj1w$`ZCqE=09tr_D3 at s;|3|M$E0-e>kqX4G2$_jf=4|L=S<Ip?gs_S$Q&z4qE`
zzs}YK?)3?<+bskh#e<6HEq0{@V%VqD3wIkA?jk)8Vy%PNmZJJyine1{s{<Lj-irhC
zSuefGVD|#FWoTgN#K6uN5q8}VAwO6TpsG*aW;Y&Ixr{F at Q^N3Ia${3WZvDbu$fini
zI}1<3EO&%4w-9z1ydD*B<4a*}nPHSbtj1*6SGV(g8tmi?jSCeG=JlvR!hxZ+>^JI;
z<zao5?K1X_M7 at 5y9{PKfBE3_Pu|Od4kr-8MFbgc7T$`X?iT~uRAG>^JS>jCd?)
z<B`GNl45tgnPo2B#i+N#^hRmNAehOa#6ChGjNB3uUm7;iMc<^XWiJpLHM*Rr&Tw*f
zD2cNg2_+&Y#)6cU-&$<L3#$s!^`z5zm{{2piXtBR%w0XL<5hc%Uaxp2 at Lk`PAnfxK
z4<!%ytQ(0BVK^JRljTes5JgkU-DD_l?$eUOMooe>k!r0}`eMI;>WoJ6Bw(=zY<E;K
z(<qQeEu$klOI1ND64E~rJ>gnTDPu0WBne%}e}{RcAM32oVfpNo(yE5*!}2Oi+-}|}
zIMhT4*%$C+6pwVjSWHqxzGQXzEDa at C2}oZ at H3cZOFd174XISiTVi96%IroBZsMCTE
zHN99``OHKBT&vGrKHmVol+WIHXzYd`KeB2$n()NURD*8emvS`<MQa#l?+qqNjJeOV
z at gpSDHEb^uSCXb4uSl00^;#MOY{f&#L;sj at BN!pVHYAkDQ$#wMZ<Ytyt4(|xQ23>&
zKUL^=lqFvHhrAp9YZG5j^3Pq5YWPODH^s%5TBI5EcKTjHNE*7t%YJzyr&ehT!*=|#
zOz}gBI>Z;6%F*wY9<}ZC+db{!II0Ie9AE7*9FDK(Q@<GI_aVIZTyN)0Y|&i-$yv>R
zXYq0XxJ7p!Yuc*=-+YrwgK8%{qj?-Bb at wNzEYbmI$EB81glTR?uhsh?D(x?uPLAA3
zH1-UO8l6RGZDA9sChl+Nw9My00H_)0H9BJfcHvCRAjPa=cS}CI&$BQ at aW`x%ujAcs
zR~NffhLH5qW8^?Pdh9SZqe(0 at 9rSwBLGP6Wv4PTb(3{aWN7G|^<<d=urKl$xO)S3n
zEM$?^Zs4XtmGydWbJTRwnTpzRNTGzq<003zKD;_MuXtQ1n*U3fG$p5ozUToHv&_eI
zV at ldqoAE2gS@sYMr8=eA7}kHCBmLL56VYpJI|BXGwvhBs_lKnXalzLUm&mKBAF3Za
z_>8J|sa at T{dy_rk!P}`XpQmG;xDW~GB2LRp+raSQBU?#7{TcaH`U*AmhZU8!y4*d!
zL$-`(P+V>qZqWs&bXN5B6xc>;NtjAoB>F0vi-8r6a~N$E-TnM33k3}uy%paUdW&($
zPu1Hha-z4mvX)tTJCACr29~nu?MobE)B{SQx}vqlP1TH}<~2r~%eJ&vV8r+Vt%dc`
z%2$;Fezpq#vsybJRZ(j#5?;8)a(8^a?N{S9PRCb(EV}D-?Er7kU#IH{JV1w?F8Y6>
z$77OuOmSlHpcTTg2jTZ4su_gG2Kz0NdwUSxSO>q`?Y#(4ra^cg6V>&f5fq!Eg2ZEJ
zPNcn2^(!$+cn_r3uf)Crh2M~@XNg^Gh)jPvQ+>-nhT~Xo*2MEiV;C#(5b*!sscqnk
z^^F}vX&8oW=63l>gWiF!4$vkZqx#BxpyBW8p@}PWo$41dY|W<8OZvraqv#XM(6!pv
z>*wEYpD?pi{v^L5 at lK|>gn?xVaKS;Y3TcKo`haSUkxEP$$Veg^3Dk-L&LPoX)ZYn!
zCKV)`A=wFENW&jO`-9%txuHW2A-4i6ViTl<4F@)*6)KVjh~MBvOJeG>8$T1qK(|30
z5P;*N>N4jY*og(e1?eblMwtxwVavLy&2W)Sg+`Cz<$?WQQH at U-ra&rR$~1C}=?6Wc
z9I~1edz!%Mx}Hg6svu>ASGNxspY0RB6XT*0Z=0&0i>toaxG2AP;I}*J1F}&sf0F2N
zG at idZhhuN@EtNH=VTM8_jLHDj8s;2X1EQ(=@-9^O>GCHt&OHsB{HoTMTB9!%zv#<m
zxOkseW#A9#KBrO{TBbrvZweR+y~+Jlz2UcgF$-h#hHZeaH&Jh1Qg6N?3YMlfFlOM`
zXpOHjqU|Vb<8MLtVgB3BM>{zsz>Yi2DrYoIBfu1se$3}lrQOI4RVn>jD&@})J|%ht
zX;jco!^1h&XXTz$JB<n|<!jq%Hrd3t?DS_$mX<%CI0Oo(`wud%-~X at aul4Pb&$h!~
zp8h74wqW4Szd=d8&73!TzV!fK7 at W=Zo-Kbr;`JCo$&4e)qTr0PHYYzSB2 at +-Qn-hu
zJ#aRu!9 at PBhlrRfR{oTlovn3ab*Y1XE|Tr|2m@=+AhM$0^?X|~HQa at NI!@0&Kd6+T
zmMy%Qf2KcH7L9$2HcuvZL!8yazqddUgLd2#>Uz)F6OS11K at DPUDNzm+yY=v!OCmWR
zM=C#dI#-E0e5A%f9+>2IY*xy;eDbbn<zL%gmo`PYDIG(>R(zjh2yVoqh}F34_=Stw
z&P8 at A-)cKgx5e!UKm{1-JW%0%B)aBpD(~T##XeA at _K(USruL5-ogZ!r^*Nm*0rR$X
z^nY;7RDmx9{D8j1c4_9rfn~=x&RMWn^N4=IMItWrJe^eco?p6g68ESk9__1iF2woN
z+AgCm(pwhau`KZnasBZj<S7qx8q1Df)Y!V8DiUPr2EV-&P~vpNX}>(TvF!!PveUH~
z+?V$x_^}&RKiV(PZ*aOe0iF0efRec1AJjAUTsyH7O>Mp9QKKbM{Xh&Wy*jXeziN+k
zON!y0Ch at 0{E4tL^Q=#RBBKUcO)^6r>>qVF2KU}-tpa`7xrv}g^56kc$=4Ih`C9Ngx
zlhxBovrzOf(DBoqsBA4>TOG8$K53$;_u4h^eLQF#xD~mJ!45+?(GV-f(fVVQlA{J^
zKwxTo0s~ijfa6325W#}!9(*)w3uXK{X`e*CT&KcHDJvtwDI%^Y?-^K2(bAjYdK5MH
zse}q=0nHP<8(XNdBI2U+lu%cTQ1^mNLt3Wnfv3o{kRMy}`>#pCDUG7d_Um`sd`K^B
zymwQ-K~Rg(X9J8S<%fDKgSlV at bxg~zFtNzUue at h)g|rVwj;Gpk++ at qqYTX;<8%Z3m
zh at c0kmX&x<VZdU!m=hTh6x-y_Tyz#MK at e&|ytA15%E=?jdiKEF7pS`T3DD0%g-Cn}
zMkL(W&BaB;M?C3&#P2IE!+WoKm280yx*&IIx}C*anb-K at ukf2@ee&E{93~A!>R}9A
zeBP!W!3zcp$W1+CkUB#vaObr}Mb>S%<!UMv6!kdg%0a9Zqs0r~!(kQO^HJFu9;0%b
zbH$4$LW+K4c?>hkh;IDO;(C=)p+gW at EQrQe71L27i`xO at MYf0Zohz{zR-oB;y*mY8
zF$2VIL6q9>T$RWNwpf7s3h;#4unLZBUoT0!@oO|TR49s36vUoQ^2jL0-~LWbzK4r!
z6>SuvFb1oOnY&I+!gpjki&p?OigHpMz+yxyA9gzVm3-Qd=KB%cF3k?@0 at 5hChn|Z0
zxLFj;HB*I`L`%1V=djZi$LhprY?a6%68l<B?BB4&0Is9Vki9H%IXUjVS3{2u(^i9H
zP5rNlUC4R&)|#4FV+m&zYbsxXXCHB<K8^YF*3p~*0f7Lj#ojfguSY6hzjVCxGcHH{
z*cGXK=(77U2GrHFWPOeI0f-fXSle2%S5SjbU4hraC?;NuA~1?)L}Di)jf;@qKe*nb
zNaGo%u at Afm%2j<$Pol5 at ijd?1HQtU$>7$X#*PJ*%jb*32>9XCcy*^kZZzVz^@kq#x
z-&fo(xqZ|OiMp{fAt%V9Ia>Kq>miNZk=XH=O6Ihx(^<=Sv1yn%>P1{#K)`EzPGZOk
z1fI3)#?}?L3*B9jj)z0hQa#*S2?xUIV%x at AC#8v6%F<Q7Mde`Y;h0Q9sZLP|J|)EP
z0xEujZslOxv(yt`9a!cenZ;wuD at ji$NdwWtcT|owxWD6ErmHqoawPzbuCws*MrXlR
zr&Q}Kmr+z>9ugs!^|-y$px(?;n6n$LXj+sy(j$iLP*sW5riW;__?)y4>y%CL)+u`e
z3Uk>Gp+ at u$obWQ_;B7MN$-F1r*eOWl$+mZ0?;0I%Q at 1N{S)1{$8 at pbrC&T-g7MSVb
z9l2D(xL(p8xJ_*1&7$8`oFNRz)Mb^3b7|4QRTBQ?ta)%c at 1UZ2gM+J7e*qsCWV3e*
zQjN_lpn!Xv at slyr`dzfaGecF**r|mP at 4J`)0>G;UaB_*6T#R^AIgtlArVlao33v(U
zNDd2WK~RpeY7n(UY=yiSRb+XvwXlX>Z>OC?<tpQ<C<K{i5MPXBok6Fjs-U+ at m2q!X
zp`_(iA?+%pT_tG`Ucpo;UoHkjUvUd<P3?ff?NqjlEvL~)ZNZ=+6)@5Y&jg|bY3mXR
znazOz$hw3o<aAw!>9WK+&Y3Cy1ek0|sL^G-+r2Mtc216x!Jp8Hz!=gtU`dl3Gd^4I
zJ<L@~%L4ndgcZHnt$d-i+ at v=Nf>+gUtE7vUj?E#f+P%>BoQj2>%wDFBGrdw}@>r>*
zGNV$9I)eHH7Yi;8UDXB*qdQ2tI*K8^l04g_l`>B${~I;A>qtzuQ0ql9DBgPdkfIP_
zk(J+g;FF7345Bo$JQp;P?XuX(MlGv~yqS>I$rvgETi#4$7w at 8!RV7eBC}ULt6d_eH
zz-$ls(+VPW>vV9W^dI%>ThEcbFROm-f>QYPOAM+qq+>AymiV<OQW%Xf%Bu1Orz-~Y
znz+;NC-`tq7$=Sq+xwYv!y-hd^FhJY7KSzYcjSYW2C8{C@~^A5@|(PqA;;^*EIDH#
zaPMTu5-^daGKr{EC5ee7LUUd@=yW+?K2eT;jQUS%`#s$0=vRW5qy}*0mfa8aA`5pj
z4GcrE1S7G7%rI*wet-vE%Vm at T6+Ce?Lc1ly+Cn7W%%FByXQu^~qI!vqgrYHEjo_7d
z1jRMXLg6c%R>juUIL(UvYjZBPCvHFMc1QX%$u-`~UT4Y5GQILAtv*d>@oK=)t at -m)
zT4cLu_2FwuO{Y`7nI2<1u;^*>u5v^77$3 at o<AqU!->?db+xRy`ch>I(k5LhTr>Lfy
z+&E|8EGLm(c7>MAeL|RvYo)SF)TH&7nMBM6(LR^Cl><&EPx5i&v=8WTK^ZYL!PcP2
z?dXxWLX>YS`-aA8)ajgA+(efK(Y8fPhm_OEuS7`Xn%K8$VizG2`f$-$6Fj&#oX%&F
zVUCrc$My~!xxqp$U*j*HQWIM!{$jLpkexbb>Qmw`ngJ9zZ(om;zCh`>!@W&)8Xvyw
z?rLuUPUEkl at JY4P_}^FqM{|a%1V&oVz*-k%t}V at 394}24)?w+K;R#876Mmvfiq7ID
zC(chpWp)<lN at IYf%aQm=$Q;IRO{dxjiJszN#y__GMYh=4{l$9ti>-x}e=~;3jg#nh
zz!MHp&KPD#F&cmIOd4{QEu6$d#m~3=#K$OnED+7)Co&FJW=cY}tlOoE|GU8)B3&<v
z?RS=)t}~h6We-t0wzEJbf+#r|q2{Ehuk9qEI?YfO)&5J5-86{QJS0K9#6B<{@TX0C
zFW)idmtj@=8>xKB>7vO^yhg)eEaX?vX-FI;J%^WCF^B|tCjD{l8_6tR>P0<A9F=@i
zTG9oSBxg0yJeNTKP5a!6eG|jl<`>#T#~?yY3nKIzd<;l&mw|3#+SU#J(a#-617sRm
z%<F!%vshT&4{Xsx+Yn`YM&@vZ<}VI4ENO0-+uATM)Ve5iPD5x;=&*^0oHM^QgwJC&
zoZHayoe=Qsk0l))n!9KrKE%^Dw{`xag`vilMHhq?wk=pdS~%f3bm5!@^XHK`u8j0~
z9`u|;7B at 7{X~B1u=7spJuF#^!5b%#Vzv1HJjy(n>+8T}vArX9>Y4LYL=d`tk=FDwv
zo3miS#i6D-i<w4SL+HR^^ubx{ocRkw_^jx^0Rhw&OJqC%J1dz3CyWXlh>Tv;G=FYW
zXwiiYEsYBnU9=d`l#Cxer at 6Ud;k;p~iq!B$A}q}S5sq{=1Qs<m2Bs{$aDL08g*^Nk
z9P70kfdfMqAqOoD&HSp=Jfs07S1l$DrT&OJYN$2M18b^=`=xmOl|g0>0LaO03TdB}
zB~AUEV4cbX^$;|NCvig+wI>>#u02sdbpTcvsi)5q?`hB)7Ekdk=_Rw6n%-?Dp4QWp
z6f-l~R_Q0Cg{9^2DG9ZWk~qnKDaobCAWeSBDDw0v at s2flv~dz;sH!#~Rp4zIKHr-x
zv81nM3QINOeh(~-S2phT!ls!hGkQbMXgNfkEoLT_O4UE5p+cO=sQ!<i%rJGe(1+(D
zUAHqJQ%oFW&6i1(^nB8xP^{od_Z87!*>04HA`EK;HALZK&(=@rULckUn at Xs<`+_&P
zT5d)W2Y*D$$)t_rr2MxeyEtz^5i=1f|J5n-&rt9P$7h;%zbZHQVqV~yyi?Ryn-9XU
z0>FE|k`w&Xh`?+7n$y$ySLEWE-*na=Yua^FB<Gkv<i4A`&B^)w$l!J-Csq*baq at 26
z4d}0r3jWQ>xqbKGYA5f{ql3S9@>cB;T<7H6I3{?rllR=1V7HTlYJVxx=e6smBXYid
zSg<oMaDEVHcK$pk_)c!#A9I2?<OY`K23P0gt>?F;-{ilalN%Ei?Cf&{-Y*P(k{@^`
zC-}o)U`=lDr at _Ebeh_Exk=rr^6Ri^Wi-Y%$2)vjRd}>7CNBO6}G$OEmM6g$7N~4WG
zxB@#wbAmt055#lvA>+XEd_J3O<39f2N%)RzPVm2ifuH7`eoHX0BFJZAXt5O at f~2m_
z3H~lOup=k<p!(1?g$A54CAeP}ye&8IWR8O5 at 5B2|2dRwQo)=sf%y~60cz-Z&M=<z7
zFwijq;Z}Z+aPht)=bTr at 2jcm`PsRt{$Pd0fK5*m6;KuO*Z&dKv at qtJ72tGDG@Zgxo
zMgX*8d?`@L9zVi@`#y)_ep^oPiroU&<_3STTVP#&@cn|oI;KOkgG*GInE$jS+{61Z
zrbS|l;3R*Ye#W72aykXY@;5Nnm&xCV#P-FK{O4N_ioi8QN0ROaJuz7|&~2QJ4TFD@
zaT11XHi_dd=_mU$*i#jaT at ET}w_Gk6kwMB=f#}A at M`ITj+>gh0_IC;fzry}I{VDlA
z9UPZdoQ2X`6Fax0CbkIUyci1pE5=}7By;1$2Fe7eawj?78}+tFOZ(CBxO6Y~x3H?0
z<G0JL+<MvVaNU0a%0=baGTGDiUs3OqaOeAN=aSNKst3ZURMi?G-Gj at Y#OfO-@><k!
zKg8@!Nz at xU0~0dHt3K|;muJ-bOSJTDcNsdDyDq<cJ|38%OV0JS4&KB3MB|sE5YXj`
zRxT-Ot)!>zeIh1<1Ci*z)I&f`SeV-zjkN%C6f%jda(uafnN7?FVfdYhHKlx)HUINQ
zVlF}m<D422RhN>#8=qF77WiS74AbG*$ldWe7T9cYI;TTBqp|Za;C^8VRsuz1N4v2Z
zknVd}SgS|Toz5#k%=P{NZl!2kZ?svPG+Jh_3m`?zi48<cx4Xwm&PTh)B2N1y^C9X6
zuBGrEmt6YgGN2L1DMaU*iC_eM|K$hcj(#3I`;Lc-ESF#T<td4**NNnJ^;~>A;&2Y8
z@~om(>=rlH^fheED{*5>Law(Fdp6CO{WxJs??!TCql>}UzBQ$9MwY=P-gUWi?T6qV
zFOmn0({Bf7-rw=Y8T^ZjxCL~x>r_9B6ce)$!!Lig<MNV#(|IpYG5wGEb{68qXzYCG
z%nt5cgJiW>TX!=OLCWt%a9EC{+>WSt!T<J4MoKsH;%15hNtO2ulLzt}YVEi3i{($q
zZ!<J#OSCe9e(e+N*CM|tI;+%>UvxzWTui~F7TEqMu)Uccdctr9k_oE%&ipSe3PhYK
zFXD%xSL7ce1Gnl**7u0_m>3?}alj=Q)H$da`uEmA25JIEF&H<>nTFT}@LVyc)f0-w
z7nivnCRM$~C_D71-HuN%VsQ+$qvI1yb#Fo(t~ST^0916>J0F9COR-hC1Y0TD7d;<4
z=1A at Qu*~j8Bs!Oq;R#DH{)*_>lgq(^F7D8AW8<L8U at q#N at 1hmP-jfpLpkgx@MR)<1
zWni8L6;V1-)KjZ-89_(61WUaBEVbKj*`2O`CvmYE{YhbB+E?3OroUK7ZI_OvnSa1=
zC3j|2ev)DLW2ADYKrvjdM^+!Gm+UC5Ph1R5(sY!BYLU~#-hg(ySVmCDUURQ9Ivmtj
zJ!TkX?4IDZD>XeN<0-PYWhDyO=U2ryk;7JGOeOk}IcJ8x?&NS{l|&A>m5(}|T*HZt
zT(EF0B~h_3&`%NWKCBuMjFzM+sn^@KU$peS@?AVjN~(uP8oGMy?Y*_}t*<98wE07~
zwiTFCShB50u}YKc7fS2*l*V}<Bz6Zbbr$&;+)F*+)DE-sGFv|(NviEPLQ2KlJoq1`
zCZagxVt~{f14z54_xNTtHR!%7`nQb>=J at De@|hD{v&k#{e1|f?_LUG!7eOrpI5gs#
z+{l=sD|voGNB)Up%5wiYO3rJ*F$y?N!d2%rFiN)bD{2u|Oaxr~Izc`kK=)dn2l0bE
z98RInuc-3Ruc#igGAC~?4r|D8fW-;?>`Ms0CHV2;$g|KyB>M~trh79HaLvW|=I2Ov
z+L)f4yt^}}d!k8~y#`)~;HT2<NlDiQyq>bd#WUPLGq3e|2j!2cK<?9y>Oj;eeumb^
zm?qDZhbcV!Lu6OYvp=SdY0jIImr-=ncMpNy8qFKO2dwySw#62p-2SL>?!qXm;K+F+
znaXRbO0zE~?}wS?R&C@~0$RNIjZc+sUy9tAZdBu(Z^}#3osvyYrj0?mw=mtQ!=&e@
zyYe&AEkU}4NRQV={3mCIOjBou)aIUvBSWgk6jt$g5s}SyP46Jwv&shi=(AX+QI}63
zkCTV-h}xrcxmu^6)T!aR+ at x_hYM(V-9QbnO2q_b(LuX}9cZx}u-}dK~tqv6<>^qVe
zj+`N)$Y!cOPo-53Q-NgUJ3_NG-hRY$#}v*2ybO=r<IHO`<%aUSCKso at T$xuzds027
zIX9eUPpW}tXq{$s6!CsQdl9F-xF#Pp<x1*&$B4+7?ws6*M~x|)EC<N|MV)g~ExLZQ
zPCF^r?wpPhR|c=ikLUdW{4lK^jl*LA<uNU-h at Td@U5TWSI=J_fLMetorvQC0UI*bP
zbjCE>N#TGb*es3HMnsWCwJ(d at s5+bmR(0y`CyQwD2vGucjgEH_>m}lSs_m at LeMnV*
zoU&sd{R0ce{Zb!mTIcHWxHcE%Y1?7ZA+aUZV`_7M4qC%))3n`lKg?L|5O6vIrVZ0|
zob03QSs9jd at G5}r8F}0J5ql<Q8EGEsC8^;@8Q};Y+KhHh&qD%f^pa;IiG9>(BlYCv
z%^Q(1SE%8tKK at bDT#9#9mOXj4kz~3<8s|nJq@|mwO`A4mdrsa+8s_2B^wW*P#`8K8
zKb7wG6dTEQ`#z0>rDvacQC+g1Wu!A;QTYm<a|21Z_y9UQ)7eB9Yy55|gp2LFx$=gc
zK!l+S1m;?29MSIZdJaFP+pg^q+iPB9K#%wakM)?>G=Yx at Y}c$xI}13|C!I1DBrdj@
zyfB<2bSPI|=3Dr`LOP^BhIIiK+a_Lr(r`BozEi`m&~U at g!6+=!`K5*%eoxcz7t`=B
z(eT}MK4~+|l_#gcnz!UVFXLB8`E5J%rQIYhpYr6ZZmF=_bh_r7%+zmQ9Q7jqTs*|f
z$cfK+!%mFCD4XE(i+$=cx|k5#f+>o$>rH{{Lb1Z$(Qs)qEclRyA7H`w_=$$|`{DML
zD|#?0z_#4JMhbj)`98c2A1&~GY>+(fsqtxZ?W;)R7urBP at 2~Nj)8NGd9~J0HgCDH%
zuS|n0n>Z>^p9Vit)9Frwt8d&x+0(A8fuGJJQEtlu-;f2qF$>&5eab|Cd=@yr)qX(k
zzCM>|&g7b$1%G-LIKP3ODcu{hz+cP)e<cfiLKb)~7|xXL)GY8*v%qi60{>YS_+S?J
zZm4LP_;Iqp56A*PGz<KA!1qLDD$^!~{y(q!EcoYY{C+kZxaha@^0MG}Yy4VWfyLhj
z{yGis({TFMyq?!^(<!Cz%PS8ihJ5zuZ_rLv;K11$UZ}q<YV6AQHM~s2#TP}KCjrkS
z&*!qhAA$X0x?ydY=%4a>S<_#6pn9h-$*TY+ at 4#F~z2Lw2eYk%&3w#yfmYo-W5BSI7
z!@8OHoRS6J2Ka$iyCA+E=p4RBW;*i#KhSC~=$r96VN7QHPQWRL{%<He`d++($ZAGD
zv%s$hoOGHGRq^Rd@!A(eGSLahT7ZS~aL{K1hDXj_jAPr=PDPqnH!XV7302X$x*2ul
z<z=;VS{64%7PcNXamp#vzraC7a=_R8PfcUuRB$qD5yo=9JEw*C{~UIvBgaxRakylH
zseG5~7?{M&iFN0EYBE{k_=(MIt*ATY92{TO&=C0|Vwu@`c=Me3Es^OnkEp}n6r2}T
zRyPwzXU%ObU)&m*SwYa at 3mO(Lj!5tv0ZpmEu}=*xI9_W?El-#-EYvN;p{{~4VgBNl
zITOm5xBo*d9>pWP7BycSiJnt7WyZ`YbrZ{QPFLIFhPp*9by!idXs&QOWlFXz%sjD<
zne*i<=yg~b(r^k+(E9&N27OJdJf~sd+@=fWw47f)Q7Yn8tN=n~p&HN6gmqZ8ERC_y
z=4C=t8m=g!YDldpudB^S@(8Ixny!VMk#PA5ixw at gQa>kC>W2wM!L;aQL_K`^g|(<E
zi!G8fTMxTnPV*P5colVi#bPBx#qz5nf&iK_B@@F(3B%JHE*2X?V`3!sKf{c%%8T31
zsf*O5o_IG*;ylz)PBxT-4dp~bb)X>w<WNI(5~9M9a}U*NiTWf&`}9Kz#i at v5QI5P2
z25M2u7n3|h4NEtr`Up9(Zf5Jm^7)GvOU1_dk>|9`X}K6j>dkNE(S-9CFPb~?Fdi4!
zx at ZBCMj6d*XlaqBFYgFGke6c-(~lSYv_lzN7qwwk8aep_W}n9!UeMOc;|(vk0QFZ6
zWBlT$0A at KYk;fEP*44E(wJf@*Zo#5+aqc2yha)&u)B4Y!%9wuI;IPvd|9O&RT`lip
zHM)Q&4KCzSgI`Fj!XH-n;goVquu!lvUkVKi&uwk8#jx-q2w#rCJg4E@`3vjj&S{<7
zq#-R0B0K$tC5R@}J{>cIH8#g4rq<33_L$jiU6g)M>R~fw0j6!|%Ihc*s|m<vwbRhD
z8tjaCI$g`AeF5E`l1lo>$YRS#riPUt6<Iv1rLDE;;-pjd#k|V^%)_FKP#tk7<${H6
za+;<ktt_n!xtZDerP#8G>h#SoiCVd#<~u)M%+mTT+CSx7PCOiy5+{G^gH7wys@^)B
zF^cm{kE)Z?Sfz at lcxUq(a9}If+-7mwl(7HLWQbPA%1{&5SlhXRg-E*4vdX${ek<H-
zws7<WB-e84tIs}U^S?K{6OrA93&af8S$U0|$c)UKM%M;Kca-02NXhJH38T9Cq*=5^
zz^hDBkRx#G=D<X at G@LVM!JLJ28_vn12s6<Sm^sXz{f|3$N+18(gNcu7X~1E>7ovG#
z{G^GgfbE>wykLIo7wjIVcXt1extVF%LQQFC!CAmC)o{t?V~@f28<15Td%PGn>IgN=
zAag9=!83M5$knXj9A at I!zJZ%@8xBuQu;9z^%!~LOO*Z(~5Qr-se}w`IK1W3j{z?r`
z$6sy1IYeUc*IRI#pG_K0emM4J at E^^B&o9yNB0h)G4E~D*;!5X-pG)FJd|N&x8lH}C
z&Oj!<EuZ7F;Bz at 5FXG$snVAKjXQT0Ay0(1ywLD(w{Ips0ITUE}%MDk&(($jd;AIFm
z_|I8zJKbh7j*E0A;%D$zSn$Ivc*25ne%Rper^nw&hq`LuM_ceCE%*!zZu8lo;Y=oE
z;h$&WA7#NGx8QcZ8p#MQ-X`H^_<6vB+x$P11-{*aA7jxuSmt#UeVfkt7TlJ at atm(D
z;Ta2ltVRFVn9tzF<ZbypqT!U!0r;7GVUf99#6Ql0|0m`NcoA;%d21H<Ko<B&jPLVG
zr*mW$cx at K=Sy|xMW`X}#7Wn!s at Yk}y^D!=;iT|-#;NdLr)3d-iuaJrUkF&t<%>v(=
z1^z)6_*jhNXG(YfEbvpZz}vFGugC)baTfTaS>SJEfq$3<K3<Q{r|a8Kv%oiJf&Ufr
z3Yp}Si}{00 at HZ{^@jx*3>l4f$7<{{4 at 9iYvcD+8vg4_7@7Tm^v#)8}F-cp#PZ_|;l
zG9ZZZvFSXY1%Jqb+xT&wFouhCZ2G^n;5Po#7Tm^v*Mi&l)Atne!{|3za2r2n!EO4h
zEx3(;p9Qz=WV4<RWWK8LGv#=j1-I$1({S3=11<cK<M4uubnJFysRg&~>UCM*_h*4$
z{S_fE^lkoEX?VJw|1S&Qw)4f~lXUF-o^HYI{GO}f>G^%o!ngCgmtHzSIdJaM$n!W0
zZp-1jS>TJaz~9qw@?-mHA6odf-#DU3<(K&1u=p9P;pEfC-_OFg{j`I!;2&ba54Gq|
zvfwuTX%>CkPdh0K{<#+1mfPi7;6oPN){{N;{BydVd{x6K2U|}rv*5O#tg_%XKbtMM
zo$iFaK^Pb5+j=!g!^uxEenw9kEPPv at F$-?%+mHpf`6=87L~$`)8-Bk9xB2{|hNsKt
zSqtBm&m1ZTuJn8@)bR9t-D2U}`Pyv3CxM=k!&mhLKk3``XtD*j^L0iR_$?Yve(d`4
zGYj9=&;PdY?fUZDEcg#w_{@so|FJCiPg`(X4u7 at aHa~A!^zHicK^FW=_XiWWC^x%&
zuh;PO^8Jy8Z<p`O7To6ZeG7gp(lGg5OXhGf-6Qcc at a-17#)4Od at Pdo@Gw?I`H;3?o
zi*UPq?+p>E;C4N#pmVR`c7B&w at M?q``Zri`J72%E;86?z6$@_jlY1aj9nR-r7To5u
z)`HvexzK{!{J(C&Z9czFrPS%#d``09HlK?vxXn+u1-JQmz=GTS99f)9*Ouo~7W at pL
z7&*&gX}ss+caQ}S@ues+B?%L4xo3vSEdO$&Y|Xqj|Jf0NXQm&*(bZsR{>!Dk_!
zp>xQ$gpBZM!<Sm{*%tm?7TlKqpR&OBFG<q3 at lVVG?<mcTe at hnl?OEUz2WO^py9KxP
z<Vg!|>&ZUfR&-dtwp|TrILp_zW8bmxDRLv{qq5*n&jLT)qC?RdI(1p_e`vvNId8}U
ze<KTg&+i~HT+EkECz1vJ*DUZ)vcN}Ch`7?}FUtbojl#v1F8?tao-Y5rEqtn&k=sF8
z at XIZHs*=I4%z{7Fg4^|UmIdddp;NEn<lk=BnzG<OWWjCuziZK<sW$ZgVd2~D+D;2@
z+qWVzjf?!)boSG5%G0Lvdkb#ow}?b>5#P2mM_O>3|8@&*<G*XcXMvW<*XiY?uIStF
zTP?V4mtL^ocDf&Dflr;7q;KOlWP#sm!EL*-)q>l0<5&)o;!4-^Gqb?GEb!G?;4fQn
ziqOdI!aPY<%9m*yI6gNa7t5V+UHt=F_e_O1sMo+B)8Ldful_XnRs{~co(8`~!-vw~
z<vA)Ke=l`6{B&#l!Zi43jlXXi{ArC}k_JCc<NxL>sr2_{Lbx`j!N+O%V_D$OronkS
zBd>4hevsk+yBdCI8hnO^Ps#$HmIklZ_^;^xh at pR(hQFN#zf!|*)&8o%zeB at +l?FHK
zkFPpV<-_2=tnsf)gFmO?k86L);E&XLR%+Q3>eY8N{D?GoSi`H*;GTxpq`_-6{CjEe
zBQ?As4StJ;zj;_{zHZa-57Xe!X!r<Leq1JB+)u-cdEv!-C4QzJjUf<MI$XO~0zVqz
z2H(^(;@kC9vonkieMMgB^k*vYF#4umrqe&i!ngT9&w_{XZ1}v$g4_1c)JxK at vhZ)T
z at NN1(v*2M1|Cbirrf=*=I{hate4GAr7Cek+!~d%m+@>Ee_6FfL|HiH`-4iT2Jja<A
z;bHs?{e3k&7cl-_*Y?!6XMoxCCs}lC{(0OhuXOsg7To5)!Gc#Ip5f;_3vTPxqAc*G
z7TnJ7br#&#+Z7hvrhiKo_|LMyZ_5H-Yr$=PerLgLe*R>^ZTx{Oa494$XPZutg{R?m
zzKmUGx!7>iJ`iq~qiIjl;l&nx8~=C<Zu4X8eR{g4-AJcz+L?6t*%o~}T^@eQi}-fB
zraehd*R&_;^tsoVS33L`7Tl(9+Mjg#ru|8$bH7E$=KpC6ZqqmIQaXLpj-}Io&7xz|
z&$aBmP2aR{>GT~7-=^~|3vSaf?O{3{(~c2-3Vx<un|3lCZrVd;gFj<`PP5Xr`I)ET
z>G%t?;G1 at s>Dv7NXBIl9y-m;8ty$>X?W&#Mdo6q$ZrbN`e(<3<xd^xO`wt6l^UwXR
zywds1BOn8uG<h-Dw!>!#bU3`#g3rRUDaQx0z`tqPt5Yrf)3e}TlLh{v1-I#hEc!M-
zKh6R-`<<EJ)9^F=7h3hjrZe4w(<d?b?ECN{o#XK{@W%<nMfi8|Gw}Ba#6|e`@H6nU
zEItpn;ES`s+q1y$u;52nbhcP<yT4|)BQ}1Xm0ufwiUqgjbDaf0!Af_v1-ILmM=ZFl
z&rewJutmr0!=~J9`MhJ{S6TS^mj2uIA_yE_q;ocYM*f8HqL{uWPpSV1udqNN{mkSw
z3j(RL;JOPgkX8#$e6#QVQVXtKD}fmQkhtX4Tu<l+!in$b_tz~r!`gNJjlLOtJ&hO$
zYke^Eb+;lAvEZbyho=JbEI8ws{rl#dG=%YI_V54J!Y3VHc0|I(8}r365nj7laN>6g
z6mw at 5oR4OI>me4L`1fi2B^I3Y&G!M8S#aV%ukmlT;CwXuVQ;nI#Q&?tH{Xz9FzK7`
z4E!SvKUe2}oGu3j^Jn(Yn)c4X&HmYlh0k<HX*$<iaHea%V_ at 1N(jk7a#=qObXPDWC
zyU~IZ|2rCgG>PIOE+5VJ5WZr;i9c22msxPeG5dLEr at _sB-sUv8+0VNw4Q}@5-etj=
z?hKvo>lU1k#xA^P!HIv4#xK+ro;>om@<9B<^)(AleABPs=Q?>2mn6-19_CnZ;$Nca
zUt+=c0^D5dEciGB<eiamk^WcYN&RcL;Nva0XTkZ{snhMV;G|{t^FC|A`FN+sFCM9g
zntYk>NE~9piT{emcP%*Mn0>w{TX5pPq496F;FO#B9)($7M;gR8`?q^6{1kgTVe!Qm
zw9YvvFkvw^s>r>`Jhe0|m@}cZVM%LX!n`@Ha{?32S-dzfp=A+Yh+aOSBJ~w}(EK<P
z+7>RDe}2P)ivttRor`TrOXfB-x7Hzr1r0XVm%Bg1N?r*2i~0XIZLav=!Q_{*Vd8&B
zPW}h>LRcAH+&ZVFwXIp}Fn2N5&1q?w12xwbWA5VC@*{Py)D%>S3D^rgXTgL|+ii%Q
zs26Z=O<)2(_1`dI+Kf{VK~i(i*YD>pY at 5*BvIzSTTbUGVW<yh5W6PWiP at T?g!B$07
z_AlXj2<_F_40OU8Hd^1mfjg%%bu-}Kv&D~Qh)=)%^Ts#hk9PX>^FMF=c^T3t&CeU(
zh}TY^{$_go5MVUXw7vG#u3tvcnYOM%>zR)nb|=j+e)cuHLA})z0T<=ZGz$2Ft4Q4f
z-^88iYqvu~@ulvxbWMP6PRwiIJ9r|^FB+dRA<c>S*;ltt|4kc+XT!hYBMexk_?NM>
zgzE-%^Z%Q8<~|D{d`_4Dcy_9AjWh+OUd1oak8(Q+|1-(|?skPWq}x%-pSoc9H}ang
z7}IC_YhNLDig1~6KJ}K=AM^fwJP7}31j5HCj5dR)@9Fx(aN$2K{+i_~LYa<7{@IsF
z=l?0dGNs?6(>LE)(PV~wd*lxY$drD+PT$oLnLh1IdiqO{c&7Bj$Ek?s`z)Hwu=Lq~
z&y;?Nr(*Qzh)kdUV|w~0KyI1RUlUdl&G%l^+wgC%9E<pw(jU<2oBkWqr$3sW{<rgV
z`X&K=@0qL~c1we&m;W~rU(!#*TM<(Lqo+)tebe;xk3)RUJ>iye^-Wf<2HymlcXO{q
z#7yb0$&fz%P!rGabt2+Z{(G7P^u1rFA4-Fp{G0n(I=&fC at zJZ*lS$9O)8A(s{?qEu
z)(rgb3nC`I;h*E1<lodYKOLR^1Ow1_;_@>0|IqOjH2MEX9X|<CPbQv${|xbIqSDw8
zROt92gQ)L at e*?Zpr=K2wwvOMY?VrI<kN+FQ&qrX`An1F)mY?bGeFN|V at H6p^{FtBg
zv`L~Q%KtbDM at J~e^SAL!kI(u67KUAgrz((Z6h&jC%a1lGQ~Zj5R}p at f7MLC%UR?8n
zh9&b`FUAL#CM-I%ER?*|v-*GJ;fG7W5fhK9oG4HAqb{Ekotm4I<EM~=6*B4c$;I6d
zDqi?MERSJ~rB at 0rZ3_FdjK}&-x$>EHZEyWd7lOJ=_<s0t>YmRb{0`912jcz>{Y+UO
zq at U>@5SQaryi?EF=JVn=yc?ajdUm+Z!M&T+nb|uWH6p;X&;4+xa1Y`OUV=~R%mP20
z at pm}i>)C7_!HxJ;=6nqQV20QTw{mKM(|I*mLCViZy!RsBGp_eL9JtvSaV~qQ(J6V#
zKXc&3*fIS(oUvyX7vTT6;$2TgVk5xcxMH9#d=;o$Be5EU6$-}pw&LvK9nS10cAVf8
zj_!}drr?YC59NTbje!2eE#2g9{4me;o?$|-0<<ks`Nx)<b~tB0=k`t!z3iP*$h)8B
zS@^vBMyGQFU}VsF>q$8aMDs<CKpiK at fv-sHRB|$|I5l;oy2CkhD^mvQBV>=M-j5IO
zFL90RfpT^q^Yl0#wi4RtOxWaH^&{csWPH?q00B>cty2rq4v!FiT(7U=<s8OypBQj=
z>ti|fAgP|gUof4cO*&g74ZJ<cbeQPiN}k=p at ZM>Xb)2(N{ystweeB3V9D|UJ@;Zng
ze2>*fFCgoqivj9OoP_Ph)|ro>{Rq$GAWt{|xdde~7AFl1AZw6wArBqEnG7tX&2nbD
z;k8%kStHJ(>m+W#)+c at 90?%6EG0HE%0LkeDI6fK2NmSzt{W#X5^HmMT;UmpFOWWzJ
z1EeN)8D0=;Z at ffebs+J)(;0_C;tT$G!5NENkX$s at 05lv=dK5xx at YR33A?T-gLs82)
z$)g9)RP{g|vG9E)J+64*G~{0aPQXC{-w(O*6LI=Lez9BmxYM~Bl-<|~0N@}P|BwSY
z<K=-`go#+(j$?`gZMP$t!bt2=oL^i6d>rCX`FQId&}!>&1V%B(xk#E_Pdc4D0mRV`
z2_B8d(+6-YZW*%1BX`peS73beVSmZ_l>!({yp59wgdx}aQ<5hfiUyi;9*gLmV3>oQ
z<iLps5I<RDIAa^BPbq^eP3q~~n`5~|)H6Um>b;U^N9vK-<;eN8GL(>ti(_qu<$Rao
z4X4}GM!c626Xd*vFbe1roZXI-6w6p}jE*zKK|6xO5{A)uRcJ`zMuAh~y`I=Z(!UHO
zrXu~bP5M)Z#r?ofzW|41CVq;e9C$P=iY+zrj7UsHrXoljExIHDoSAlJabY4#5}uO1
zA>MX6kJ+%!*uXhrmbP>~-?o{Dh!&-bY=aS5da6mW{er0$B_6~qPj_Rtve&T5RkLua
zlK0Vrq93TdDd(CL=yOffffqQ$B)+7KCwh21i{?AU>Nt~StWR>B$=C6O!#YM(Er;+U
zIPj!oOa7r~S{6+Y$MT?`MUh at qSm;fF58_r-K}t0|NEK&zM|rH~uGT$xe(9MkLsah~
zsx!_H5|zCkF@;f-fRdO8aa at 2yQ^H_vDXPv=oK|ybC<@-xSt)lhE#d7tJo!hhoL_>Y
zQG~N8VYD6QsBqkcDK8IaH{<A%vyt**oPBdCZBOfH7pXo3eUX#IV;8{k;M|i1V3Y<4
z2g2xc+nlc3krqu|)Jr`sr5a#bmcM|=;3BD4qKxN*#^3?kzW+VL$tEx<IM^g=pG^Yk
zqr%Hcd$j93ZpQVjxD*~BI72+Yn9mRnPBwX8i7f{Cu;L_611ADv`wnce#Mz#$7T?#O
zr+GfkyQg}OQHfyun^N>=c6pDpUPk{rds=7tk4`72`mERg#;deUlSMn6v3VVzjC4AC
z0q*!@gmcx!@VneN{iguV`<a`6g`3lN+^&9}Ar(J at P;=ZK4!Zi0+pFgrl3+inwySk}
zH7uUfDJA(Sah<O3p`5bEpF~X<9zXF7z`GlrMZ(pC<G?MHzcwFtr?gt1*oR;o-WS11
z*f{M6O);v8GqwV1Rf|KXJREM1QglmkBJzjg*w9nq*};(6^YDw<x{7eh;Z2nMj`{$X
zVBd{U3iw2`A9XAHTHXZi`v`rCt at 94$W1Nk1$Iyy|rFCqB4()=!##KtL_XJR1W0ANx
zm*|N^qciRecjI63-JG{oJJ{$HqBZX+Y;?|itWkM88ylUk(CgWV<H_1yf;-`M^zVeT
z(mIwN!xs2PaM{E!f at 5&@77%{~zRy<Ysuy53b~q>Z0J at n~sjzo)AwZ^VUGL#&e91VT
zxeSFyO#?H1&e*-AzI0p~fPT~foj%~){41k5+o2iVZhVj3-m}lN!tsr;3#bBrAE=c8
z2t4GS4>3<-nzOCy>w+4pZxc at AvMjM~|KoeS{Vr<jFSQ;ZosE3|N%H*w9Q-|aZSwsu
z at 1r5TL{ta$G``2LfR8hBaYCu)rw0ItXfiT(C=Ot{a51t1g=j@~J08yWCWFVrB9(99
zY;$TDA{IVCEs}bhI9>>o?$^l2ZOL@!Bi+FplJ6ehuS&k}27EbZNZF5v^CgWtXq#>X
zx#!+Nus9a+J^sMw-y+2K*Qt5bwZyGx#ZV8aDlFB+VS at Em4-WDT8sh>#5KRyM!xIv&
zky`;20w8G0<ZKr6BjqZ9_-Tc%H{^O>?bwMz-i$nhFZ>VS81}j2e&yyodfcv;Rk^^Y
zow4BD8E)^i0 at kc8)5ZnRtqBM2DM1ft%d|a98$A$1D0^^QrtKBjtm0MOJp%v+P~#e_
zy=jFK at 4*>o124Si#71uk;)PYbupjRM37 at v-VU6BJndts@!MT#|j7IOI)bQSLVPnaR
zQqmMo!{Ai)$Er at F6eHd)b<7>w<z=rgN1xs at sW`wB09e(rBi-0SG)?=1b+MV~IJl+T
z++%A|eVr at UfizEw4>MP|(9rX>Ucd6WT|YaeoyBE%=Dk+mn{mgf*iL5~`lW8XvseJj
zHg5x5TTbPBBZzUNS`x2JzZ507r~rBqi5<tbbNoFV{C2gmj?L40;KtS!S1`(?b;7FC
zc|AJAE}VsqEii;rQT7Uf#)4I38)M8y3|g`2YoKxLWONp<(L|U*r}JAN0`Le$MMpsF
ze#Yh~=CF7ahST{=D2K$0cTkKHy<_tdGQn6lb<*kF%%;fO?6)XR*VkAp<Hu6WqTK9{
z1d}kUNl-O5fog&Je_wG03n`|~sHMj)=g+$Ynj_JORj9GrDL{i2O2--?Td-rzKFSaw
zHlZ~drO8L>Nk{3{DD^(d%5;=wjZ*8Qw5OxgYLu{#QlE}erco+<lyEvqp`dgY2SoB(
zI-ztdu0f#;x7*SQq+|7ItbQA-pTHCW381sMhj$}sd9ks&HP%WSOI~cOW{uTuW66t+
zRjaY;Z7g}QvC1 at 7*v66<8>>)bg={Q&v9Y#Ony9D&8%thntUis^Z_8d at Y^-L6qH?3}
zyH3oBTWXHoyHA+~6If47Kd`g7P-6C|m_>XsXZfKhY2mEa_{|W4mpw#7$RkUW=anjd
z8F^Vl0&EteG%T*SN$QzvDlsZBDsI;_bbRdosy0@!YsB(IVi$nJjjpGe^R6i-U$OY_
z at t<ay=CK>k9shuj^Z>T;IqUD*iuZ6QIsrS;9#g91BpP4mn?V?89Ehsh`uC&pRU(#w
z2UUZ=PVi$l7xy3<tlNFXcgw?AwEQqb_Z72EBK=N&IfHcj0Kf@@cvh6)_C|3Sr9Kgy
z)c^=I?nAiq!te(9>St*qYyAN6-lug%Dhl4E_VBLZQqAxlAUWKnE`m;&6$>s{1%XnB
z0j$@+FoCsF_0YO#ApBRf9vZk(1M3Ow*1#SOY$D&=zyPl;if5IVBrE`2ffexq7w|#`
zR*{5-4UAI;8n52KmLy^A2DTyzTPZLwxCRdt-Vp9^$Mz!~X1<x+i at iml7-GD)OCTgA
zhPks?%s4W1cam at q9|7vuAm(>_GMLFQSiAyK!*da+ at nSal2vC^@k%{F1 at h%Ms!oo>(
zrXO&|-dxN at Xi^`j#K2vG_wpyv6GWB{0*+*HD}Yq+cHG_geWD-4ClB3#@d6Jk_y~|W
zkc`1Abugb-ThD9sbE9{C@!fbvFjL`0)IRg<-G?JbRW`N(#_aU-4x9mlgJ-jLjqswN
zqC<|i1IH;{RU80JvdL;9wE)?mI{STI6qYiPXi_0+>1H8!Af at B2DlQZCzfUxq9R*=F
zerIv5hSy3wbvQFMqglh7ll0aYdJON@;oZsb9y@%E4quZD?=#^X)2^c6P$1&-;+$t>
zNwxFcD<LwBtE`p^3XwDc5iZ9rJW{<_`&|gW8DKYdy{MTRYwrf!DZR6}PtrrpMX+QN
z(F&LpE~e|o*MwOn6d5UC6ajj_L{J$HRUl{RTNWad!~}uann0|3wZxS|@@^JoX>`W3
z^9C%QKF$kK5AS0FWdML4Z&LUx^gRRs!)tkmQmoYQu!c8l_-YNW*YIu)zgxrGHGGYR
zZ`JUX8s4Yj+cdmK!?*JehI!aIFYs8)N5Yztux0}@AM*oVw}Gur;;rGMsbVnh?A(FU
zR*iwmC=MiZN-;|{K$sN42=zXs;aopKxGV5#j_kk$XkfDjx&+p1;0oNqS058&sslPz
zz_uG$0dRN$R>()7m1z*8gp<Kcm%+2G;HG3SIbd+R35M#-CO69gAgS&oE*XQBy03UO
z9z?yM7qf~(+E#4^ltUWY_F}lTs1bw;;0mxVgupumQG|Dl2|P*h_92R~T>Yeu3t1ZA
zBhofoX2{2O9n9w;>sjV#6*?*NB1*_S!(xS~;ozi%oZw!@J8&ut4xa0+=O+E^lp=Fv
zGYo)JdUJ6t?viijCye~~<_azqZ4=@3fcr at 8f@EydeZ?y&1W(%}M4|y=q#i#KfIS-6
zZv$y+h#5fMg}hXKSPPc5vNjcXs*)y58zI=7m9#F%Um3#iglw!T4jB?WeR_%T3<!{@
zBScc{18_G0G*nDW%*P6f5&_fzUT#c`8!QG28exsj*)$z6W<9__DD6$Goi+x>h2_bx
zHMnE?pa4a^8$_CeGNJMqjfhODD|9-y!j8JJJH^Ssa52UfCPibblr!YrsoY38Vf!V_
zG^-KqA7Z@)Mve1}mrn-z`IyI<9OB3^$qb40Hlxm~l=B2-2eUS at iS!L+2)Y1^dNeWA
zS)TPh8E1VfVnsB`@ujsG!VZ(ELNU=Wx~ar&#kv?p?2II5h;+USV)cetg(B7rV)Z0e
zrtQ5bR0?x#Sj(a4O;6H8yz`sjKDVPd49VF-@?J&ZUWSlxttKo=mqPgWz6e_&b(QN5
z75k3mj2-{^O56<jC5pVFb1y at pkZ`k*w}ts0M5y?E9xJ>+c1mD*hl+K_YQ~D+(Sw^I
zyF!ue1IYF6Wk{6uY8cs_$h;yuPmvw5yhBC0V=LpvJNj`mRPR<)w==}Mmm#FOW*F5W
zpX&ZTRTb$D)(4V<%g*-Njo(Wr2$l{$zR<asy$`RW5dV=nUnp<3{?6F7tWwm#?SeW?
z<NB%RqH$O5?#rI^UGI(%DaF@@antFu;Ya$lnr0DSy?cq^byN_W+9*J~Aim?Lv1c+3
zq2b-(GFJSKCfsxyWh#v&fROL7N`nYqM?JBTM#Zo+Dj+qL4}Mux>yXg!?r0{d_}U at d
zbQ((#ALi*kaYS5iZ2_t$-ftG)$m>`QOlQ6FVG&x0P>f%$QZ8?A2fM($mUnCgB8r7R
zuJUil7sg at waPRG4g1o#Ab__Z4KnK|E?I_X&T(6@~hpa}3Gxpx)eDylEY3Le(-n2qN
z`*CwND1XWs`|~w;ZS*<@aD$V8;d?|yC;Ie(=-)8N<ZbfDUok at O#!kT$)RS%Rx?YT#
zWw1YmuEJ&R`dxZ}1LV?+G27sUxplqk$TPE0h-Lx02ZaKbC}98)$vu5-L<j>DQ;Y at 9
z*gHaagbtSBMi#m0$BnP3C4yI15UHf4y}W>g?-Xy(va}%~W~<RxP_U|q??4o791GJe
zt;=}+{N5^QDCv=gQjOzmpV)uz<`XMRx3o=)Sgo<N^}^IJOM8=VY5tPr43SbT?Q%t|
z*;v|kAqF1 at Dw4|F?moRIlJpR7n5A7UB-1VJN=<mpFv92fR%Qq--)CCdt%|&&<6GJu
zA#az=y?zC+Qv80pr5#XY`-DB;()JG{d%a($&r{rfs--Pp^B%u<yQ12U8!aszmQ>-s
z2^*x;XqHb^MY1g|J(i at Ug%>AuGFw`DKB&6^RzO-TK^>-X|LJSonLyC8FJYWamX^+t
zWoes)W}2m~7oc4bFGH7A-j*lR$ZBcZRT at h)-`y&WCcGvsE$O7nZ-Sr3-%w(oWofq}
zJ}m3?;<MS7md;($(hf*6NlV+u_Y9VnKAhN^ej-5F^t3Zs+U<%!21`4H5NGUlX_hts
zI?mX1OUvFvHcR_PD|#w#4ZQTC7+aYa%WP-6)9oug|1|rmbE566*jKv!VqfX^)AH8i
zE_r7UK^s?XZqsaRWZAR=8d+IDz!RmpEMeg3=Qty%mfpCrv()kxci6%qv-C#RKRqF}
z>4m`uB!4l?L$VXamIp0J#QS&v;ouSzE;7fG*z|WjUs>dO&&d$0U?iFVPqs&zgg-Kg
zVVE+IjCwEY;RDQezCZBrON at g?n#p14l?|LzdY=p;V90ePUK3kiV|t+1j5l at -ig4$}
z=R)%g^Iw=a3#e)yk1e$5b&S1DGkCv(8e<PxOZ5VZ>!UQMqf`(8lrkU1O-Bg`3VMxX
z%A{48jwQwqWlU-LSnO}7a3q!&STg=#XtAfBg0+$WU~RQ&tx3mf*I0MkSl#JZ^%`rn
zjn$lv71mfQZLHdKtdPc9VPlo0V%;pRlc?T^SE#N_iw5 at FCJ!O>TFO4}g0)A)1sXJZ
zd%Yevd=YD?L?PM#6ZfNQ8D`+=^n|EDo{wN`OX6-!1(<no>c96a)RgM^%@;&H(Vs+2
zh+C=W^-4YA>H(T)9RN<ZRKr<FC&66}`h6Z279?&@zHjFY`@yKRI{Xs8pO<{Uh12S{
zC*S|dcYdWr<A00q2gAwN at 4xs5-cO{DrqVy}ZM at G+hL0M;`}d)TI=p)a-p@<o- at x#r
zQ93$&{}1tgdNTh0%+Eu~_^U{NRuca%#=kvD at B8G3r*LR`6Bxfb8Gjw)AD+bD$ndL^
z^gh_m at Z|f+Tq&^*sswr%NGRY+sF$Q{T at R~yv6ji$DfY%?EeDWMF?4$wo0QmyB2acs
z;`=Kmy$-g4DKt8yk<3KqUg9SH6VgxGH^Wb_=4Wy!h1le>j0|Cg)+JnRV)A3wDbdCc
z<EK_28L}llLgHsA%~XECLHU!KAL%2eu+&kKl^!i>;!TuJDm~5%yk+S1P_nknb&uFu
zMP|e<{$Ap7lx8|T5HR%mhtX3WS|)nLO+1}}o>_qk`K=sAZ;e1e&y0ro{1G?t>|2 at m
z`zQ75gEzi3{aOiaPnXxfq93nQ(aaKRsXzakepC#jXRl1`XcuW)by5%SWYS;aCUW0Q
z=g+1$xjseNCZlVVfzs0YL>)@NuTTGqe!Y~Te*Y`_UzveklE2B})cn<E&R;lj=<6Bt
z_qpxO&jzjd|4Mz?YnZ*U%j=&n{{<QBjU}JYTmFyGEEs!g#s9qWtyJ;hU$T*RWAQ%R
z{7HMx*TWNFS;51^Vgjr^#5gBV2EO)~8n#xx0$gf1?l&t>!JookB~$orY&nTyc;rl(
z$zLTS*#p~t56(Hv!i0VA;?5NBVtjwfg4~B?MVwk4_kW-5Rf3=ASxr00`gz}xfM=gv
zs at -;uv`+F*FVk0h1lR$v(2f)gouqEiRKwv{u+#`nl5X-TC4MS?x#90qaG;DT%_Kz^
z-mA43lw2nlvbLp0Fs3cZF?wOJ%PKqQK6NKwF42>{q#sfU#t{Rea;pdZi1ah`3$`Zs
z^#$Zmy}+P^*~yk60 at n<Q3skz3Bb-5vv`Z7hLIw1Q{bfLH-#3~6a<Y*)9CJ`fQhIO3
zu-qp00Gj4ZIYxd1Jsg*-`Z at I_-B7F=VBbjP20(T^{TFsI)r)qw62H-LWe^;3`_KvS
z(F@^0`!AdVNR4|X;s$ozbU at BmOOfJFa&F04ou9KZFW8-*^XI(a&G|Wy_N6S0T{j(+
zQ*>Z(MqVWNgPg$kgTKxR+?9hUPw<~XBHpf?(U0c74;FqmBKUX#-}4Uy3hsyBJ^~M~
zjR;<|d*Ih2gFoCo at Zredk9QAjDhS@Td*JHbf}3^^Ji1$O4W35 at f4h6&54$toP4jck
z>KYYXGb`_w61 at M)4PH4jZ-*Pac4pq%Nbu2_dGAJo&&<sG&56N|S$S`q7~DE5 at 7C$T
z`)1|+eR}YZv+{0>2Cto!HxLc3n3cD(Cb()=&JRujnTKZvUz!=%ITMdb=E375IdA7Y
zIqH!affovc_s<ACwC5|iznT%~*gJUZjKD|xByxT<Bk+ at wV0=d4n!|$2W&~nK)C2c{
zqrVAw*Q6kxZ#*uD=jV<KzE=~t{rF&_Ch*$v!53-*_k at E_)C8`s3O-yDc&;k=TZEnv
zysIYg;R(dQXL9hT2(1qO5TVsU51~_n&qf0uP6 at sp4cs#|xG@^IdRp+4XyCbN!N;P3
z8{Ob5cy@!oi3V<u1pf<|k>D-BJTdt1(ZJ89PX#B)O>h%S=YQmCc<iw%Ce+?JLGFR@
zwPBU;_Ty=nWQ#}a!G6FnCnerH1}qBQn0ii*vq*mcD1F4#DDrHftW;FiSSa#rp|mTM
zZVN at 8lPF8;F at PXTUiWZgc(6jk2$40a45_t4)Sv^{Vn~@4G6_*+1Z__ at wz%*NEdR}s
z=9m4+Gd6<@>!LiYJ+JSn?JvEB*aA}#jWwd}h~*ztf(UdYO3Hg&&NWYndh at Vbt>a_I
zx$1dTFFfTqT_ at uSL#|T-m}8E5b1 at n>IfU&=-@;gTLrHSl<ARXu<riBNE{0i96fRFv
zz$T%&h%`BDD7eX4<qO~<p;@y?tcNjCB={{`%|tCoAlBr1L!t>J;Er=H`GR_q0Gob3
z*7_t8sD+wDGe{to_=uXyt;;Elc<Q{yUF}*z*ec~yeAbr?KWL#SO5Y;t{hUNFeYp}h
zLw7Yv#P1d5@$`hoT|}@*9_N$fx1BXf#sEpikH$r14auzlfn*<VX4?3!9^xgr{5c3I
z(ftYmnj~X at q>A6sk2fI+THEpLPZr<G5I1($fB+X at 9!r)T6o4d0`rA$cIV?F))yngy
zFxb48_)VhIwF|kzK9ve<O|0MllTDWYjlCI(ZX^PKx$BMAb&22cS=P-;_{nJ961yZ^
z-rqz^lHexT#%_6!@qJP9{ja3QZLvChJj0(zzPB?x2V5aN?<F_hS{(AnC)D_j%%D)s
zG2Etl=^RiFxfr?0L1b(GQbkVs_aaTY<q$#$-G3!etBXi6#$+}=u@!uo at jXSyj1eMY
z5Ati#QAL){j;KSTJOdr=Dp=zWik~$gJ3L#WkBR?8)>8Sg^3|To4~r`U9bzRuvc at gb
z<)izTO2DYX={Z^&P83V at PEdjbhQ+T>3S~0t at 38pwiEn*sd=!c)9Bx${7C)4j^O0<L
zrPd>hNuSFsUpB5Hokq1!$c-JN_Rt#dFSQD^RtqiVGe11|bMx>s^YByi;6r?zyG+nc
zW^#mV`4>ZFYi#V7YO?$z)}ShxbRm+NboqSyom*jaUm4tl{V-5b4lcqr%IKqR9OXIL
zc*%GlP}uD>?Wa6jC>+8Aij47TD)MZh^pns3PdC(GlZF~w0<5-L={Ien-DFF7ez)q>
zi1!JLH5xk?YxBPzsr<9kxe=1Yc)}f0&M4&S429e#egPbYDM^Px_bXMu0N)&F-975P
zH^?O#)sXxDE$1)MAw#``XSQs!On at 2<XW?~K!$e17_;?3C3~(5>MijE)DSgp2iN61)
zBTJk@#2I{4m6JiVb%pg?tV3)hJ}%KZ&W&M<AB<b+7EKQ2yZOR~xvh&@jy}4srmm%7
z&H{Wyux|ds#rOmuW2^X8r$xL!x%Z%v<>mOh`moEM`WKBIiVfn?(gAnlP#(7EVk0i=
zw6_DFP>Fc&M at wI;seHxhd=k{$_-Gh{jV<%tu1B1%j{qruzWk9$Y-BWEJ+`2x^xc!<
z$H4yPkHvbR%NL;SzHGc$;P;~($I{>JaATv3vE96Fu8Y1&)VmbJ1DG)Gc&Nz8psJ3W
zB6a(4FXno9T~2}WV;9Voe0aj!=;mx5yh7`__c&VeC_Gbz;B7?em!rJe(8#~Vw4<eF
zIDT~TV5d(XYnxhbbbqT7+2vr*Fg^|AI#ai~8~>U&cr`7*%7XZ;I(2N19$e+#os6{6
zb*61~<NH2F?h^E8?45W7>PzZ>@*6cz^RpsL+}KxL?-K5 at Zlz;odF)N_*s<J+-|nbj
zD3%3qM!2-kz2~ldqW}K*JsZcN)bd^Dmz&&se$v)ay5oCCp at dL|SC>#sjE2qJWv=&*
zTl$n+`KZ(R$bl@!aVX$foPOTqT(OvoIk5q|E6h096doqCY~sRbR-hl)l9aQVK4(2V
zaH!xUIGpG at Y&l4~o}KGKlb%}F69BRA5RESlX)iXl?;uoE^ppJP=b7kdsOTjbIu7V^
z#Mp7bvQ#pnNId%u!@=2x#47-0={T^@Aw385Ad)m5^J(m1Xprn@^&Hsyi0OWVT8Ek>
z`D>qKu_5`8ko>3n4LYB19ANUf8BZeVU3k#F2DGg`D6ovZhH4Ci#iY+*dJsuAzXs-{
z>(F_Yq55rrGISiGv0JJ6>HUYh`T?{=`H at fX<B(=^50!7mM(2jkg0P8YJHO#*2`JKA
zh;<d>KT-)1<_R9yCc0i`s+OQyY4!POwVSkFR?L%zURo+?#kwj;RV^(=8ZO^bSC-yI
zi)Rsk03?-U_A<o#@Bqm$vZh+Es4ijD*saZc^TerAE1Xa&O%ik$Z!n6|XVwM!lAplx
zuWL!Ytr8GAYC)+^XEmZjUiU9o_gh!sZZAt>xU;@%D{lB2!d+`{$BaN%5AMU4Id!S!
zqW3FjQWmG0C8S+_jG>mKqJJW9v94{3jJ4QFAhE7~1SD6L%G-vn0RjG;EH<j;qgYI&
zI7+S}ok?v#O5%rRUe}am{pb&6rD&$*qf{ua2&JIPaCc)}VcaMPSs6-8$S>A}p-;p^
z1{sbF5ZhlsS~;t@#Ob^X<D!D>dQU~;=M_fd=fK at Mua^7B at hyOe_f>2Sk5&#ioqJ$;
zdBht at w;+No`?wbX1K*sP22cCj_>M~fv$_SJ6Nz}Ig%BKyR`xrc-;`+62q115?j?v<
zi{}y;o)99IsEB2Z7)E&5WqPL;GQDX85V;n27ZIEB?7H#k%~;17Mr2n-u4UwU;MBWb
z6#G9bw>q6MYy$u`p^VjxdlT+WH1~y(_zmp$x$&6XdM7uL5We|Rzh!bWqTSHW*O;Dj
z<3~bBvIvX!Bi>ayj4|;h1Y#Y_)f;b20n)i)4WHvNx%CPH04$Jp+_uOF3zJ$&V5~!K
zXuc(-323Q6TL+N>-h@!BW3_tY4J~Lf66(Vv3;}Pb2n^tbgjV9VMV9L`p&kNbVnU;p
z+nvs at 6$)7mW^5!PL}DFV`4+!+y8`mfRUMnCx3-6Gy at G-#B)~X`du=~%ZtOa_p}p<w
zlhVIIgB7hCcmvV^Zs197 at eL)YN3rV)@gH0hAL<<o at U^#tD7?1F5CkG^C}Kb?##@zl
zgT#toM-up^(X|q*@(K8HSO5&BG%|zn#v8f{A>3lI3V}Vymq`4<S_WZ_HgCNh1gcaS
z1yLUiGax1_`K!EZ85e~skt+Y-bY4?PqzxL0V7&1bjdi%V#n#s2e~ot)Uuxo4Ex`@z
z7X`mpFjQ)cLbN7^t3FMYw}El7`d%Vce&BTe7^`~0l13sJZ at figv1a0WYZ(?>yBhy%
zylV-A&6MTtTcjsU3CsFT+-1ckEQnhE-rGTJUPzeno%L(C;s)W~u$=eh8~7SqOA8C&
zPgd~mZBPbxZJ&bPwgz{IfUl6+Hr#dq`KlfT<~zXs>Ww#N!`cDd8bOJ71O{ln_-VQR
z-H_b9LkxADg<G8Q9bA52<vmCcgjC2k&}IZ?gN6|DAQ<H;NZw`Wey$a(np_b}RRWIQ
z)&N0hi)pqph{-e!1xlW{$&CjrZ9tIlhLE~HC?=MiC{wJ46)OMHimyp=oG7LS7~qc<
zS)<?*LQqWH0k`tQ*1d at jfEsNu{V&=TV)dhF+{&S>69JLRof6hZykuk<8gna;DVD%B
zX at TuR6yrb=+MODTVgE`D7Rdm9vqf?#jP)l1t+k<{Nae at F2m2$HpE#X|>;azGh%D=^
zr8rd=GqUVqzD1Tjq=534q*!?-8mq4Ju=tH4D51As7K#5vaM=Yo5;K=>ycXZWn}?1=
zya}HBxMF<5NZK)&NH;zcA9SJ>_x6(3Wdjt-_44 at 5I^cpEJfL`vA!eEDO~)7K_`$Ad
zaY+QdgaQa7P_+fPh%_?<(L0?Fa}$6!Iix;&hi`?^6eD&mVoRhFMj{DUJ`6^@Flm&L
zMmS0uKcy@@eD at 4th=)lNZ at SBu`ba#AUGMRk&G;A<TQq!rE?V4FgRWDU47rA(S`tIq
zfY|GbSUuw-8s=v3fCa?Un<DXR^v=fXq*xV6<oTN7<>V2nhFG1&?R)|CCfp^v&7giA
zp_0HPF1=T67qJy7wFC(%6~dMYH6*4~>pHo4e<1((i03uMt3fG(eS)M&3M+ZX3S&m&
zRfWBTq{>uR^2Rpmh214pzB7)ZsWzY?)dDwuT_1vKID^Y5UW}=LKo4$AbSv*jbfvsw
zfhq6Y{fIj+CQ70K at p5_#B()yAGc`q0nzsm6xAp^!6iBiLtF5>5H6G)w23zrZaA%|e
z-jM>)crgVMV$^=zqLn+G&MQR$rKKcgA?01CZqndYfl?u at TYPN^Zp=y%?(bA_IZFUf
zHTXsj$*KNAB#ynYf~OYYk^wTpiwux57+6aha8yY^zP>sh4j}j<m`RWXUe)co5Z<c5
zT?L`4R}qQnMFhHAaUH`V@#|&54k@^NhrER%m>>;aWP)Uo>@!a1X+fqVO(`kXA^@-I
z79)u&kgCT$s)lVNSOn3;SGB6ti!qFPy at YpAXyzT;Qp3C>S<>LeWJwmu;tQcG@|liw
zT}Y9U at hUX17M=+(-PO2L&g+Vo>!<sQR|x7_Cev8u6hg=G1ZBg2OdUbZ at BoLK5zxwE
zlYS4L$OvQbS{@?`$xEvVwwNqP at Rfq=!yQh#N+`xRLbnMt#?(+Qd?U0UcYn7Uv<k0P
z&W3A>2k_A7#dsqcn?sIYb%yeo^g8)S30u&ORkGO^!JcgBqXY}_hTUZnM|X`>=gjr~
zO{y<jO6G_dyr?z=p%jLgASB3EnRn76D#Lk^nJ}IyRp_UFx>-K|z=B|@DX~er39kq!
z*j_?R>?bM1E!lDTuyr44O<C7!5i!|Jz#xQ3u82^yk7J2aVxus$pA4aelu)U0rio-|
zkA!}rLi_OIlV|8k0?-l`sPHxE;q5xSP=$A=hF^kVB}6W29ixnNGF{sB%3TVcY)R#d
zk<wsGgffd2v{Y<OuR`WX%M8_~HlU`BHR-s^^5x4K(aL$nWlq=27;t1GQNc0Seb}g?
z0m6(DHaYUM(fBBC=@zje99Rnz(^W`07&#o}dZ(i~J)w~BCTotg3*SY=80QjejMKe)
zjT%72&?braOO(+hCN9J3OV0O4;u}Pbdap8Cll0^^P_f{i{hSH`w~P9P*E^^f at am{7
zaJp_|XjSi3B*QDxD-NMN`mWk9MVX9?mYA)U1Y>*|mYflj;|=ii0wBl>s!k4YW6G8b
zm^hGgsCxbZZM!djC1^8%ZoC_Dc_Nh$IbDrhn14Bj#gpT|@yl}fImnK+Fv;Qfd-I*H
z4s-(fG37c;<5fHBcbl at j00Fs9=L`TmfHp)ccQ#J(q7^$6lK at hD#Q!a)V<+hRPUvg_
zonz4rqZ_>vyAMDow|e==@cUap=UM=~_d%z6;!b>tullH+iAw;|bWY6Sr<Xb=quqah
zBgmXaGO#8u!w+-TSA>@z_x?r at c?z%IBhH3P3U)SnmyFq&*aSdhx9*5U;uouIT>~FY
zW$W!im95!Wz6*B7_}K~rpt5zG&Xy*UI0Pa7d~Q`v#}N4X2%f=eu=N9y!x!KxP?XO4
zwm^9K#MNM{6t7;7v!OKzwpw#{CW;u&`M}8-KyX#wzKUj8@>WhF$lH&wWL;K<<VxPI
z#4Gbwy$6U?kJ`z|i8d~4 at 5Up%4^8Jm at FH|h)iUbG(rdLuK at s{r-n~a)q%BGXiF*L`
z$LBFJlB9?BQRoe7zP2iQSfilmt at G)P_Bks_{LH2o*K+DW9x11*wVWnG^}w1hr~~ot
z^?)^BQiXsZf6~GCS-KwTBrJVXv-Bdw06HTyM_WZy%;6Zrkq}6%M*!t+_~A$q`S}mc
z&jZ{*vi>MtY-{kwrSyeTb|ZAz-AJ6Tw at Y1Aop(2Wk}ASu(54GtC7Q2;u-w>Lf3#6g
z2d|=@qd*JliT+av^*pgt*b0NM+MJFLp-;P07dC;hM=@@|ue7#6VUWQi!^_Lx-vo_1
zhZ^-H1vQ>*joq236_x5FThJ>R;qm1)+7#iLBnQ=c3CrkdEDN0V0WGtK4M=p1^+$9}
z2qk`rK+#wBcuY4*SrB7SQhH03oAJpt7}LZyE+a?%lR<?DjK7!zp23G&kNj;%Pl4v(
zJV*fbFUL0rr?3dc9F%Kwpot`o7h$!le9F*`8*fo`=fSs7bT89%zez1zU$}g%GBSl!
z)%TqZv&xXaS>-4IA&}Um^JnzpFfd5HIDlkOpZCSyEs?%d=P`JbEfy(yF=W{VH8AGO
z|9YbrYcW(p`9A{Lu#=V){~8TRlm2RCGjWqNOVTdrdNfJ%H&*j^62uJkFp3+-tExsL
zsU0vl6Ic$(@m&l*`po?VLKCH3t(lvPJp@#a!X$T514?CYa#P|+gmnA$iH9mvZYPoy
z<d%<QlWe_ at JphzjQHtF90X6l>$bY)d-&?R{r1Nd!_}SY}=p0_0LZ(2-DE*Jdc8hqw
ztMLk|ynoDy&Dw3~ByU#1P&9sBJAIUnmxpRf`>Jz#Yf3kFygI~&?uz9sQaA)50H&1p
zOz}2Wb at UWWkLB+^-OC?URXNo1Iz<vn)BzFtoE!15U20^Nw|zz|nmaVZi;e{S*leNy
zm!W9s<2gGcr5|?ueTWKw#jl|ocrM>n<qdW87Mv8 at H}@oO-<--1THchMW+wl!qazra
z_m0E7YOMO`p{Q4V+z`g+%7kn`$ZpAbJ5u^~$6ton9A5DtgpcR)_q`7~wiMLF##PpM
z<0>lu(DGJd6 at vWsoF9;`@%mja*V`J2wdN0DRx@`f62GXz1y^qAj+`eVrG19#->}D#
zRC~NlkU=DN41BO-##e3y)khE{b^xHUn5&LmQV3d?j0LS5hG=-;vq8LW=@U7Ba7!OI
z+5ZuC>N5L}RC!xFHWti?jUG9}8=YJEHnM*y!lJP;5$_$pyvC^Vs)^r_wY+{xg+zH3
zeR_Fe8cv2F6H6!#OaI|EyO`joK%kK$jX*ZYR#qbuxAad&Cby-?BpS>ADrUWvOs)}`
zh&{sbAXwUD#5}^Mx{adAKsA)GC7nVwh#<fGxF!nD?QniCT9QUK0{x<9-1MqVIi(ES
z5#;L|eD at 4wH{6|t;ZfPe at RpEO_0NqR6~PDLy@~jmdF+y-s3H at G-1t&(`zn;<!<@cI
z=~Es3Lp9zux=&ZU0P~C2 at +ZA#IyOO%M`H=u=%Xq(LE|<d2<<;U?~P9!>*5L;!Co}m
z&%UL<XJKo47X3W|L88AE5iDfT^{hhGGj#8>)w4^`<d9;9dNv0^;1Bu57xdHeyO!D%
z#VQb8^nFyQ{vpZoER*FbuMc_FRbmA4{AQv;S|ix|Xe=k<J?h(;9A#%};@4)gGyAf9
zve=n`t*7|jJGn)#?g&#lYpJDNwvmC`t3QR?g~Dw+BBPAnabrgs%7^)ssZLR>B*{Q|
z6WTT@`V4aTg=zO9u_J5nC3>&idj=dINxJ3Gr+bG$SE<xLavqJ8ZiVTg`*cM$*?k%I
z#`^=zjjvBnK%Ytx)E$W(Rpb4`@R`(4sFSasPneQ=hsMiN&iryzeWje+5Ty1Sw;}Hd
zqX520mlkCrxKDP10U?NP^c0M#DSd~%PU<`84Y$`HzYGR5+v~p|Nc25(eXOw9Q}yv#
zQO^5lmojJhrwHQ70%+6V%%&`V!D^gMSmV;;#`C+~js5wigPph$nD9=fV2yiO;y+&S
zUkVdb{TG=BO8i^DAK09D%MYAfoA|N+BJ&oBzrSQKWnLn2aq at jTv?B4zi+*??-)~O7
zui^WV$@gx)KMnd^7F*A4(3zI`)?>VxG1C^e*29NiNdm8AB*4)m8OXr6HVANxC<6gv
zCB`8KnuFx1L`M&3TLhSw3<QXk_-&E{i$GH<2TL+ at K&-?&kjXF({H4X<e{${cw6U}}
z_s^N)0biB`GhTCsc=d at fnc{V{BQMFQdhLJ8f?~>?Scy<Z0{y83w&Qhp@@lR4pOOTu
zMdC%NBIBrC1_H!N<R)dFB%pWeN|6s+4Gre;U4UzzvqYvg_F)bvneAb#<PmLB;;V>N
z9m_?($QxN5tDg9AHO5IkPRv4`gvIb4 at p5C;dwh(J+s86EFdG_$??rq64|{I{9!GJl
z4YwpO0^1tdI7EbPY-EtZ2#vgoB}kUW?!hBlST>k-JeJ0`f;KcGW3!q_0#617=U$Ra
zAi1B(>ag69To#8dHU<MB1i~c=O9EuY6SIfK0fYbdt*)9m)0*}|w);KbU(Yks-EW^d
z=hUgStE=m5PFAB4*@ZFRuJnIm6OM*dNpg2ES=^8ce|8tAY<8Jp(&=a~QnSG5v#Cpq
zci|CrS9&eF4LgOw_G76L<X at ust5^GJ3l-K*zMq=m2pQ=Jc at 5ocsx<jta%^f*)h;|}
zK_BNq>nosdNEMhA1e_F at N4wVFBHqj#Rsrbig1)cz5#eLGOC>yxe3#YQp|8WZ&QXUv
z>YzRBQzsJeD2vdy*luVeA%?cn4M;#82F*IkXk*ig^yA3zI&Ew)%UHWOy at o}B8%4O)
zavq`Em1Z-NPbUMAb1*a;yDNPo4RxYp?*o;+&6L0n=3TBSCLkFNsRK;b)i_y~egXq8
zdsB89;)7U6`CvMZxwG8qP<%x>cnXqi>3LL4{;IP~bH_nu=ALT_eztI%!m785=)-ie
zl{kwD$BZm4GzU2m>sqP*6}7xJ`S1?7JkTrrjSg-xJO0D0{oiq`VyvU4=kDIU+pu}i
zIoX;=a_?0pzKJ+hMEt4&kIsVWiQ at cRasJB38HwpXiu3>0=l|&SzI-Q<v*H(TA)F<@
zZF^briw1a4OMWrVwEr>dec^6KKM(wq*84WJwffg|_4=20^{j{`{E04q3l?Yln`4Rk
zF5~@k{;AgNwiOGkg^kUu3 at Wf3q|L>U<C~{CP;srfh3Pbl)A5*wv at m;Op(jwm98qi-
zu2BCt>f4qzx4!;Ff5qZuy`70(e_(3m)XJ*kXY{Je>dULARaQ-_3{2KH5NQ~GrT9 at E
z{LWM6W at 41dfK_EG6kNQ}Dp*}waOmif#p|I2;~b{%VQqj4#H#c;W{p%JhU`~?K1dme
zEm3D#U%xi4+coxACUSO3>9vKkOUk}jG`qw<IBa%F#Wln0N~*3J(NHq0Z)8JBQ_<Xl
z150KBsw=4g2}luTc1iJ^QPi2w0}LndFI?h3zob~neTvrzSlXrn<^DmR(|@qH+&V|@
z(xNvC^UAFoW$aOKaZ^}XYvhgOe5kQm7#HP45T?P<w6j}YFq2LtFN}1Cna+kh>GUId
zf;<pj#!vApY3dt!)rf0`4-Wfc(Y1wE6Y%TtV>kx{o-!fesuA@}<J^)B1x1fDkwb;f
z#cY}7$M04A7^dLo$lXvN1=AKMvj8I$GCzYQrG15kuOC=a+&HSPq?l#kTz&s_5+Tq&
z4Wvc*9~4N%cg`Nm!Mu|0qVD|paoVV9;ImoFc$j>_>zcy4lCrCc>Pq~5!-~EI%a+xt
zQgb?#(x*y~ojTqG9ue=0EQ^Ch!4m&9!%*O^Vp;4PQS at 7Ir~tD}=?jfID;Gd?rq$LJ
zY68v~Snkf%*nrmU+QJ2S%DXOiO@)Jbi`{9XR32Zd^<8 at GKH06I<o1H19S7y*SjRl3
ze!KQhzx8>!p~SEZ9;SIMK1S*n@=EXAlFh!N1BT}<gL6z7?AAQ#-_0q5n|-nj((aqp
z4a>sYjy(ou!7%Hs-T8=$tkFYYyyZY!nZ->TxKQJi&0yNWui%{Yeu4<5Eqos5#A^v6
zn0Dz1C`5dzLM=<Ri8${zxXy3Yz5%~O<LfnU`0Uj9?HX5YoaR}iN~XThhg(5Mx!i4#
zf$fwDMH%f3Vp(5C9ux{bFY8-<usiuQ6*~ai9utZzyy<m?=M;UZYR7ns?TQIS7GARF
z2}R1w_0Std%HwrD{LrBwkRs&?d+4nq%RdxU^b<Ys@*y~PpDRFmm+Cuyef%tN+HExQ
zhk<3-gd(fLoMw(+RP<Tgl;_8RTUKR;&YV1 at aczDBTfb1aDK#0`dS2m2X90colBPH1
z*%16u<9-9^;|_(RlDooN8dnE#?|lUvDG=v$m%@cnG{xbnT#7=e@!1O34T9iyfx<=M
z)Au$i+^vmeZ2|61E2F&Vf&b0}f5ijmX0-YEzXN<iVO2(RlW(OX^V1*ffuHSxM?LTl
zJ at o1Epzrs<|IGvch6nxw;5QX!Yq?494iEa>ivIW^_L+%@`Rq9l_{73&yP?J)h~4gi
ze;q|(T;XWzcHN|#G0C8!hkGm?I4)uMp at -b}Jm?Qag`HRkzkxca at d(ZvJn#;MXWJ_^
z4gvkm9{4K?KisglCYUoUXPH<y6hDNx<u_E88iU}f7kEB<Ugm+{sQ72wLykWfjzlLt
zF*Dl5D^^{V*8r!TH|UO$;{k?;fajAt4*8J}pW%UD>VZG(fm<z^$F|Cr7Atc0+4F0b
z#X4J7c0_wF2vkSrh8N7P3r8aJBY{BmoVG-wt#d_vZ_lb&aDH=S8Xxn5!TF2Z+k=s5
zkvWU!2iyM!7SsL?JOY0Q9#w*ew>73Uwsp33MBBr$Xgtw;VQ}HR=EMx=tL0F8b2QW*
zBov5*T5-`D3^vVaZ4dqp)|o1_`lOjuEqKgtPRxodToy_6#9|>_%#1`@R<8~qo0mo7
zZ7q>_q6c{$YH3ac0xc_}Js^y>CE}r$Akxzk3<jGM)4HQ=J)wEc(<8!6GwZwX>>cYN
zL7*zq9Bapy+<|x^)La)~oc35e9zqndArzd2PrPG2(ReJ_gcwtePLa;8)|jHGY>W3q
zE306;|1~<#gw8Ep-D^VOWmTvNb5T1Yb?PH^Y7OIfB&9hV;hl`(RU#uWcx>UKs>uIq
z39W4DYHww>dNw)xTgftw(m#f)qi}umnTzV}%9<LNkN~H^dJ{3#D$3>nS_Nj#Hm&Ny
zSa(+sD#+A at y`8EORHG7TQ<&y9-n%RkisV{m>fBg at teaKEoIPFD)@(CuRfg-U_!r>c
zH2&47O9xbFpjshQ`9I60{nU(t^P?THhUvjodnBlz&gQKu;v&kQOv5ePLdq=9A17m)
zp^<fqs&6zWssn9ZaaD^V?QP3?qCIP{S43N4mDSyKkrlrXdq%W(t*C~kt?f;#I;@5>
zD|=$gD<hE=t5-+5V?FV%&S-mEVohWf+nCOaI+&*YZxCzPCSb3ML at c<lqr>Wmb+mM^
zu_9<lqb(OiT2@{VSsrae|A=Nb8d(-w(bgGhi6&ZBYNRKYSlI)8o%^xQR&#f8=S6L}
zS{RG>cEq6C+%sf_nbpR|76}N<Liw2A+uk1TS`q4m(9V`va8+<tC!h$@uNklCjrO!g
zqAeHpw)K$P-_ENCEj$`98coz=S8=M|OL1xl?1iAdI$PfMKX1?xHAY(7;@w^7X7*CB
z16e^LJ^2f1!_ahj5bE at OvKpYJe6q+xB%A6pgsZtRB!(W(1laB6?#2>2ZQ(qObb_nq
z*PuRi_Np-ih7z4!Js2BB+E6y5*vBQ*)Q+K0Fxb$&U{QosqoZpTOAP96RV1PcexyCt
zxgxO=LxG;Io~C&mi=q;m5tS at j`7NAjFFdqtW;45YJwetyEu(3U4%$3<`D1{$ciyeS
z2D!E6Z|ORe83QvSkuD6`V$lx0Pfos(TW}#qSkCxPQ->BsF!BgC&xkb5Yn~e6_+8qX
zjY>mod9=4Zv8b&hwiwN-Q-Aiq4zhiW#^Y@(I$6P{sh(s1xu}}l6YFk|qIv7+KtWN>
zb+)Ev8^oC*XxoOS{o)w<Ojsrk)paP-N6w at if!{9uB58`iIV)rExq8ZlGbx;HGPs#{
zCeB$UgZJyH7~)j||921kJ`emc58TX6yZIkL0KttP<AH}f at QXe0t3B|$Jn*d^_y->N
zNIk#6+tO|`Jn(uC{2~v$-vi&^fp77^U-Q5}@W4;RJQD-cRgIr1Cr^9eoF8H!{Z#x6
z{o?}X`yGS7CU8lA0On&D$Vbv2Ch+OFXZT#IaTfQJ1b(##{uK}WVS#i0!tj4V;FACE
zHBLQG7WA(RdM>TdyJqeFK+u0y&=+7Hh{3J at K^{2gr5N0Dj}`P%?hHXM<(?wwWxAR@
z at N)zoncmL{dMS66pqFy{1-&2XFm}FC(97~hZ)XhdcJFS?V;P+JW!lGQ__7Is_L22*
z4d#;=h|BWx1%b<U at +TUnT=HjGWN0jLj>MT>qyIXAb1u)||E6)uJze0<d?AJ4&i7>=
z_zI1?^L>>E{bd4|`Er%uBlG2l0+)7s)&u|013!YsLU7x^&I51tz_0eeZ}z~S^1$Eo
zzz at ThaQXC{?SZfKz`y8$-{FBj?}3|Fb#A*ItzQhf at vsNp=7C at 3fq&Bje_h}UU?@|b
zU(&AvsZWEz>-E$<%kxBmf2?uRFBJH}2jc>P^he=m`2SJkq;D4ZM;`d$daB<|Kivaw
z^uRkj at Iep!HV^y(jWb>4LjTX`28wzv5_nMHGQDw)lMjpVx%e at BQ@@fRJ`q1-w{Phe
z)Z{Pi{9}!iUfTI<`c;M7Znt{iTRiZed*HwIz~A%0&0-w4K7KAtL2%>s8fUsD;b-j7
zBIu=^*9u(P`Ca`!gZ!%mpTY`UAh_`<0+;n-zQE at pp3!Hwz$O2QlNI|R{DU6&1s?d9
zJn*|c at ZWggMfyFEJH3-V@C6=tuLpjc2Y!zS{*u7w3wv6}W$h;Md-a15^`9!}pB1<q
zPktzHNq?k%Wl27gexAT3eVf1~eM;bx{`&%#^e+fp((e|yq(81QYX?ccK;V-85`jzl
z|08fo|G2;<{Tl+8^oO31U!Pe5m-OcdT=Ks{;FA6pflK-)1up476u6{6l9do)Nd5|3
z(sv15^1o5wlKw{mm-H_PT+;6rxTHTWkkwPtFA%t-zeM1Y{;L9)^!Ex}(my9~N&lh1
zCH;}rSv at 8FJb_F4E`dw>8wD=ue<W~8|AN3J{a*zx>2D(u0`pyt|7R%F!CBQzyZxW+
zSP)3hqGa%jVxrEtg^wBrpXS2Z*D}<)@UtA)`mT7sAfI1r{6|_(iYI=ueh>e!3$NDr
z&t3Q=jsM1l^V1ZDv<olR_`5E=NT<JmMno|BysGKPxbQKW{ty>#*1=73;iZ~Sz=fOj
zYp1yIV>SPf3!kX*#V-6M%|GhGpVWAV3;&hI*SPSdn*V?cKSSeRa^Z6{pRc>{`I`QF
zF8nhZzte@!(fAe at K40^H!i9He`sZBu`I`QZF8q6%{w)`NnWonVRsLrp|4lhBQKiAD
z7i_u=Zpu6B%PfKG;m;60tb+`smwZlBsDn#BX9&Co=SJ at N0+)I&*Eo~OAJ<7TT;d#*
zT*-f}z-9X|;DLX^1OJM^rJnyK at Dp)v^uI^olKyFdOZs04T<U4s4|n^vL(oe*7wHTp
zz2tA&12-R2Uy0Y_XY at DiiW@iWkQ+DcmK!(ioEtaw$&H(O;KogPCq75$d4Wi;#7%i8
zeXXG9)>RC|Std<-ul2xh6}YrB*ZDG#kBy(<W7;9&(*C9$A};N0+A}w9+G96v+Fdtp
z+I2T>+HW`hDP3>exM_FYxM`=|xM|njxcTOQcrAX$KBoO6F3Y)TN8Nl(d+f$d`|ZY8
zigZc2pBK2aKR(S+!OiDu9{9HeF8MzoaLNC15BymV{AGbl{*IPTn at 5t9^f-fhGZ5qN
zRE_K5Ne16}AgL^@1b2d=U&O%(LaB4e(67|^co%-D#`QEthJL-q_2YO3KS2xhyZB7i
zc)1JTuKAe$#prpR#;3UG{hAN!CWE0LuW{WCX7FN-vyWgf^j{d`T%YV5GWae{U+cpC
zn!dq>pR94V2 at Hn+QjLclID_|Vyvc>{)N=JS#vc1q*)DZxJ}eg!U+;n6?14Yzfxqa1
z at ASZrD{^j79}Y!LI}j8&^T^;A2wc)%BXCJiw{#3{{?7<p(tjv$$^S4i(0n9)y}%`X
ztH33FO5l?II|7&Vj|*JV|4HDIew28xC+UwCxTHT>;PptKv2%k5KHmdh;(;&oz%TH?
z;~w}rfy;j3NrB7$)ZNaQaUf|JXg*o~=PGn4evt=$g9m=U2mZ1LF2`e1pQFY2LE<3~
zyu|~T;~dH7KRoE=xJA<IX at E?-WbC=XBVFfu;MaQKKlH$V;emU#Cx?2Z>$4ts)C0f7
z1OKuI{(TQzj`yTJ`Mno|yBvPnfrsGIZnFN$=LJrInELw{!H0c{!Am^kHVItvzf|Mw
zr;ZkUt`zi*0;gMG2Gg&N9^qV<>;BoD-US|bw+9Y?!z#G>e9r at a!~=iH1Ao^8AEo<S
zx7 at iNc;~qMdVa|R|Go$Qga`hb2R`PY{Bn=+z)$tSmw4dUdf<<E;75$l>QjwVQx2=k
zv-nhjHw#>r!??gD{dEGD^mhnc(*Hu>lKx$ROZtN+W%ZQwGXyT_PZzkP?-aPCPYPVp
ze at Ebw{t<yo`d0)l>5Exu5r*L>=_>>-=|cjS^lbu{^!);t^fw7y(%&m^Nq?YzKjm&`
zeB!;8Y-bJ;xE!}k at W7Arz^8lQpY_1!c;NFr at G}H1=czgbF8hVg3tWzKzAkW?-fw&0
zw|U at q3cMC&!qmqf3w(~iw+WojM27wqfy?=;-2#{6v42Bc26s7p+JO}=+lRjh{GZu>
z4Ht43<J_cI!)kvIGqyAskL(W3I|W|*`G;WoLFX#Fp2*;(`iA>?(64bbjxzMM8t>Le
zgD=(B_qlNrAUxw7GWwYB&$qj9^Zog$qTe at TKawsII9Z$T&(9OMeq>dgza?<pwJQ8J
zfs<Z0zt*DyCx7!@I=xFX5F<Uy1jAuEeLRr=%lI)&5;*CN9cu+XPEk64O9jqT^L=ST
z;0Fo%%LGpTt at _?W0v|8vcM1Gc0uSrwP2N6O;7bK=#)Q0mtH8?y{hb1*K3_BUSm6-J
z{}6TN{DlS1dm9)DVX?ponR($20;iqL_we5nIO%_>^XVah9|k-VD&uQ9647N=B^H4@
z$Cc&`A814?6S36^tFkqkh+37);&BU~z-Y9xx3j(Nf>`?+t8zt4OC+|sCDxsYfJb{w
zQ}uK?@v>2J7m4Tj)<dx06K&?J4o~|0i~ZGi7rAjh(YFG7<YPXE;CB+0jtwf2n5>|`
z?`ILrxj-ep)5<aPKT4XX7`ggCzw!SeUs`yj`tSPDg~>%_=~<af9cp-dKGl=x?bb%(
z$7GRcPfrw81a$|6;FErXrK8JFEVAD#?Ck?CqkT&}k<}d+ff-s))>7KB65f)d?Uj4_
z&JEuic67u#(Ij+sC1RD>`s#S~otnPJmpql-Jze-XE`c<w0vTHwS>A&$1JO$Kbip)#
zpKt-%v$1(t)oM&X23j2BaZXk at f0?6KeAAD~_?+9`*Z52F$mbAjU*ostiGS>V#5eYp
z`X9F+ at h{CIf8Kt?UzaET{QZc3U7q-y)7n at 2ZP4+H^^y615`Oy{e`B8bT(`Zi at o(4h
zrTsZxbI11sW7j+aKN&Xbi+A}jCPJw==P8$Ol4mV`GIW2 at x$4$~9j2eU7<-s83LpC@
zUk_7o=7c->kdr6qVMON66r7RgCymdsdA{`DrRAqN2ok|{X&IZ=3L2ii{0#@#q#qoZ
ze%j8R{va^Qck|uAhbjc~p4Yj`=AXId_%&brwR%E(ts&G$zw7!;T<6Qb>vaJ%^O4k_
z<6O7?ZNQZM+zDV|M=<-gI9J*Ch32{yCrZ96{(Aj_X|pDze2$OZ^1lo$pZwC3orq??
z7w2lI{PnnzPkz%aPK+g5FUtQkes1{>1Is7>%{nLk!@MbiyZ&s(y?pXF-sVIy^RJZ8
zak^XnUxDS5zq#ItKfz^JxBPcNmQVgpy+CE9)}QiO*WL2#a6g~?H(9U|COC)8zgs at n
zdE}G7^mZqTX(uTEaQxizmumT(BamS%Co2#>;~X;o)Rn;;pVIM1xa?G=<C}eNoLEE4
z&*O-nPyf|g|BX5#_4niF)_*4CQWv-U&HBZY*^dV#D!A=ejrjTG`+wljm+6L`@+acw
zmcPwIzQ4zbzqj;n at sL03ZYRD>e|aAHN2B3p`rY}rG490Ym`MhsKjSb=_lW<bj(>nd
zmiagF%rT_nYcpl&UiOIZwtoZSEBj|+Iwvpd^vm*Ffm=p at gP)7|CBSjW32$oohThyX
z*XDSphy0y+<a7LH;u-lX5ucb at 2V~^z+>3le_uaoS{vQyZc_HUq$lJ(w+uP`Gj&FIy
zFHJZaRyl{vzu{+&!;pED?@oWMj&I}`2JY+Kke{#qm2Prk7(286Q5O^6;8j|_TTffd
zuQY=7(Ue<rtkLmZWY#Jj-;JAi2Iu$FBXNOhoD(qFqJlpM&FXL9sFv at Jf4z?X6z<Dl
z(r>VHai1i$2GGX}V?WrJf%fB&%)~eLV|v`O0a+{8 at E`59jxY=7W~@lu#Ao}UMG($}
z)mJ*FZ<ztKzT>tZpZ)U1uf5la(Bn$KJN^lQ>VRK_sv+kNGGp2_b*FmT%<5U{Z0Uhl
z1jBO*3$h#wtk0^ltX0h%%Ff7~YCG3j$6AvWEt5wMoTKBB_3$A4#^cBF7BTjrJhK1i
zoE^{E7ayU|{Wwm*k9%Y<hBMA)8=ifxe3es#^rpNLKB~&$-XUDRx_@(`);GDod at ZPb
zlN~?LzRA~>Z&24?E5BVGzg50j9UUjhzR7o#zpSqBQ+|P4;T3IC1pwtdBmiF`?Qn)Y
zxTw6CzOR|D_F%tq<ZCD205qCai?pToU;}-I!X?ypKo-4&R&ZB(zu5tvyVHXeJY(85
zk0eUCIeylQDX;8|=g{5*?JFN*3eP#u*;U at zD1K|2oYy-(HVM_886Ko<;Tm{24|QkQ
z&UM}5Q1YX?MX=Yq_8?2P)ok~@x-xa9KPQ1p0-M8wt<+sb2T3tJY`hZK>?EP at e&v32
z$=SaC56S(#U>RKhZN;gb`Z}F}hT*UTX&B%*KJ;U~NyMo%La|-5wRdj%A<$}HPvEN!
zb1CDr!;5Oo8;%)jGtOKywn}cbYrw_Ve~pp`N8?U1uu;F!4hEhTPVTgigUM-VnDwdn
zS82#48AJL8j$=6yeh0EXtu|%!RUG<u`g~XMf#RN0iZtRJrFBB7G$fVXb390(ik)mP
zuTrTBr7nX*FKDDRQBZi0RMtIUi4yXNo!lBuzOGH6Jlw;Bgh{U=!fl5xL*#HXM7U|_
zGzBf0$B4>X7Ydp`Q_x_(?gAZ2+NakC_p~d8d)j<7JEZ+&N%T5jPoG3}XV#rjw-{xR
zC9eV=laNbv;QAYs8)g#nthUUlIrOmiiiS(WsqV5yx at 3$1X-r*?3&i4=3!zj5EMD;S
z4>C_v7vSPGU;j2{MJfieKlu7*;!b0#y&PA#brY^asl}jsx_9)BbDer)r{K&tbumPb
zFW-J9%76pVdGEzA(`i+9au^&6!$bB)W?X7E091crK=^KZpb7UJTlJk>ZuQ;_F>oS(
znLjkx2zp4Uc``8uZj`b$Tt$I<D{Wzr(68pl;1f#zBE48CatRcuuR_vFnR8>{M8y?9
zQxurItEgXcNBS*zfKc4+<gc<i`3A;;XSxM{%7?9%@04enXW#+Emp<t(gY;k(Y-yys
zwMUbu_$yP-2jg(^kLk6L9!gz-l+Ud~4moi{sktuAGoCdDUPv^Bk}stz5l{I#X0sS#
zv&f8NbYFiHc+-{h5FT0W`@^7VOum{PqvT%>7IPr~d?SC(kht$Vwt at WOQ1Zp}O&`(k
zAL?Kzl^c0}DCI<EK~QnD>9Pz?v6JVPm!`vHk#uZtnD?HI8dV``6q*SYKSQuJj1-r-
zO?J02nOo{^6EX1}N-azO7;lHyFJJG}FO(gpnOEH+Dq1+TtT?BQFAHo|`NemEv}rLM
zRTtZ=ayMXT5k6^Y8Jr>G%zmVn4IgMsey|Lx8VVnbGA~$ri^HjSMF<VOKMZ$5;Uw+Y
z_p#4+HD3whtiad5181zr0}t{96cw|#4XdKB>gHPboL*F3n<@&S0WA)pA9Y0IL=Bzb
zqNuD6)<=VpC=Dn798Uge`)HO4cCV}+jmcM3<)5o+_<2YVnuX_CAK-~NlngovJd5qb
zNlTDGE|fC~r2ivT&5*oLJAIX`XDW4Y8HI%Pq62Sq633xNv6I51C{v~I0Gz259*>i7
zGM-6bu+}%Wz7}43>__TV%5YQ(OCrS)r05cK7MHO-O!$yIJNe at F<57$u6{+heMbZ-8
zs3W12ld=K&hxu`~$w5y--3Dusj!V$oAU%2X<YGccLp-<fDVXEGxiq368XbTin)
zhahY#I?jvOAfqUUlP`<XoNX^ck2sSs>04DrwtRPuUDsTdepg*JATGuRrO?kGc-kq!
z=p9RGS3B8^CJugz!f at cJ-Jh$9h`jTs at 65zcHI*XEobte?vVj&#%`OWi7c+Yk2kZ7c
z`Jn1a1~&J;qi&_pl(Tq`2R(~IdK6BUug}_#MVF;ElzfOb3=N_ibxJTgDZi7+T)F8O
z?-`UTmC0dRQ5R!ny>nQM&xPCeX=n%5!+9{>%Y8kgKhqz0+N97)xpGKGD`YI7Y@?G8
zzg*{2SI6i0Bgg=JLfMY$?)dm~*`paZ_QxJafnM3;GdMx};k#>O-8$6k^fAc(<?B^`
z(H1!wrmA=d9Uv_9b~yR5NsewgQUB8ul!9<Nf7hq$)`2ixs`x8 at +4L($h|OYF$_vdf
zn|{^sq;G%$6y^*r9#KQyJ)b+nVo5`L at tVWncUAlN5l11YbaP7WRAkn+xl7P<&h?|&
zNX%tpvwc3?e4B<LoN6&WpjZEk7Bx{4PX2z!gW2&U`cC_i;4EeuDmN-QMsvYh{A|Fi
zyk@}gQ1K=dC5-Ls&aFFdtMO5!^p#_#S>aSCn%SdsTJs7%lJIGRW9-J7Kl=KA3SM|5
z+A+<Hvj;D!XdJww{7vAs{jVkJ>{Joj&(M{QgY4u>yPK+1#D52Y at 2(4$yjNdVn0PEK
zq9LD+L#+PIz5lhXen~-N&HKK7E(1sFi&1I49cEowZu>eP=HH{seeGL(lc^X-CNCp-
zsFbL`!D5_RtggeUa+y6Chn29sD$!&d=84;()P3cA%m%K^#AY$d!F2KVPydyz;)AOE
z!!dDcA^1Pt`;MKQhnRrb&L~`s@!kogt}Evwi>*cy$$2(v+AOp;O-idTKxVf6VgtPW
zOyyzS416v#*^Znv<7GXtG6SF8iMiqAN62>67m<=o$K{<Q- at s(nGvNc6*@6Mx?xtDk
zC92g}tE_?wQjuwg)c}2#Xn;lCaLT<bKX~5zBcBORd6FJ4&j=+y<_NqQkIT<0d*3+=
zDv0tFeAG_O#eiU-3ix|-%L)=B!>LmoEe1$?FDDq*ZrYBFw|aeRH>Gh>aL5aNzyG*z
z>oANKH`pn~lNCET;71IlUnn&n-Dhw^@<ls!KY81OeB8GJo9lM}3Wnbh9*o@{u6cz+
z+~DmQTiYomG_`gq#PsdNv*sfhI`r+tVB&n7;GvT`WyZkCm*9eIpuz}!+gHkY18ceO
zgs&6i%`zN)SKoxlxT~IVaaTq0UHt-PWrw2Qc4!q1XjL5FRi|PW%O1SHmg1c!Lsf<C
z<o(4${3I>@+m6_AE&&cYEiYOE0Z>LMoE5tPv=F;=s94L0&9*;|@pNYS2BtuDC&MgX
z|NlWgg1wq6pcvXm&l%{f(HRv^Zg~I}ur{&tdE0l^7W at XOxXL({J*GHRXzsm7+NpKx
zRMU`~*AGB at D;v)qY`i@@*s<PD4wf=Osp~m~U=Qcy0SXU=aMECD`Wt{zzfyzL@}2|1
z#FV0%pWD9KKQV>rJ$v#NQ=-;}@f^(3gnDV7bd$zaAm$RBlF-kMD$#mXzy|fT;bg~J
zv{36HfC^BWE`i&E>#e>`r7Y~dWBNAD;)$>S9z;&X!%!wu&>;|2;Ig%LYVpQ!&C9<2
zyFkhY at j>6gL6q<}eEt1QUTQIt9bD at h8(gOzf-fSNyljJ=TzorJ*hm$&jRYO4#*k`}
zYPLB~qcZQk2MZEM+AR<2OFi9VZ`pY&oZ=P^JRSCh9z)GrTld}^%+(CsjdsOO>ym
z2Hs=$p{gSCCH;^y*yyKp$X2<lZ$H3kTjc9XD2g~vEmnCMd^FQI`34R}Av2jX7<)FH
z{A=L7bBu&@kvZqponIF at Z})GRpE>-&*YMx*pQ?Qy9ANb_rBhck<O^#U+80&fRO^!d
z5(XH^=Y6J+Dtcr8)cq`e;bd$>D7h<rxoUaYj|@DW_>A560Wx|lY5*TO9J4ImsB$>D
zc-^*PpN7ttZAgcdS)KIsZL*n`#9^>jEwk0JRj#QsHgcLlWP`G$uGs_KOd=jfFgS6}
zGi5lX+nj+WL88vHBsn>fgzh%7;v5bxl<~JZ<4IIx)tEsQ7GJ0Ra at sPT(BOugqI?Uh
zVNOwgP9 at J(l%4U%J{DyqRhQlLA`F|e{h_XJzWx?fN0o7P6O~%K5t7j%Bo5ceMdJrh
zBb at X&hp;cWSq<@=;;kC7x+c_{)ZkK at E;Y!~rSk#CUvhSO%7;>Z>UNcqoXXv}0mV@@
zf2LZnZOjx=C#O|Y8A?8?a#Yn{U;odQ_fyferGE^>8LtcuP$4o=O`eklDCZXS%PHrR
z5hvTe?|ZzrFlySL`cbFob^Tz)P~CI#mGl%<Ih^(Z{<CjiH<Aq<OG)}wHR at -*arDa8
z*P-c%3VpJ4L+kaAc7C$-7AXFxzX!AaCf4k+?k+*8V|$ZY$7X%tF<<|+K#(1#b6k5n
z at J!)S6;>A;(>dyXaUDyu%6(*g`b8+8Yoi at ktBU13n8=5eeLrUlqyyP(H5WKK*JetN
zk5%IR0mgJr=chDSZ$|UkIryAO;Bki9(Czr86Hoo;OdPsr2}Z*NifV79y)zVrHikOS
zN_D37a(VY2nB_Y(YR+Uu?-au-hkY*17(?S?s|WactdJXLN|ts{WWFp}_Drgh9*epy
z0asFUvx_f^j3eZnXMtQY^r&(mazE>x5)YhpOP`D0p|{f5z#hD8t-8NsTP_ztop9!D
zcJD42b#nol+WQKIe^dY=1;g0u<5+PXj{jXS{MzBxhXupmA7=fqkmuVAkH-1eik9~c
zx85E`oN<m~W4-&vKtcH%1*yXR0}E~$K79Rw1$Xk(&6`IK-+4g6uZxGjdO*R=2MmAt
z0KRs-OqccDH%>2 at eDv@q3a!TBnE1bZ_zw!KTdB`e{JXMn_<e;%8w-aoEPAyN*V%{=
z>f?TS*A))Gb(r<nBDCDp<8Tn+*m^Z%f2W}6v4gBv3$8=7w~L1V;2`UzVJF>xkhOF8
zJ%!&s$ohTp-MDeXs4_tJjvfx=){>)fex<MIs|Q(6_)bBDJNa1g<*|%=|5%*9t4?=~
zD*_$macl1Sro|Tbhqp3LM65~29~<{i3QXnSbpBPxt&nmD(AL!%w*XYdE$M3L#1o_4
z-SB&1`4`7yJ=%*<yt1;=I?#$+9dQe>dgIn4Y#@eza<_sD7cN-nUr=Aac;Uie!- at W5
zCdH4jn&*X at nle`qQ#p0H#Y44o2=GujEvB$4bIU*J_-WLVWX`$1pS at 9)xdB2&t&gN^
zhbNm!6ycwAY<v>a7e8f^KGFHi>QT4Ic6xJ+%<$d_Gc|T{BqwQRt4SJCnn{{{dr6Ww
z053>(sQH6)(D-4-Ma?IX(LY+AX=|0-2bMyj5U%BCl)<$-$S)11*P~E$wa1KeoS>Wd
zAAW6oP?y&_qRzr`=aG>Og|joF{{_CKQMXj!9D9{MHyGCvFnIY}=6a2CMFIb>sOH0X
z4nM?K6*iQV^%b2~vZ1i>ca8^OcqFbH#fj)enjW>xp$Ac4(N%>@aow%&-H73<;-!2O
zH_?Y}h(4;bzMJPczM?l2w3KWtsDrQFW_5&L<(KHpd8pHB<#X2${+x?u;CdA$1J0PG
zPg@%}M>Pz8tH0_nco=`nhry^yp3CocHciU!_S}-CMW^R?4Lxs^AN<(PGORN8E?Fwo
zSDsCGYMOQuDxb{rGCrB<0=YqXWVRG-Ic&|KmgBf-&s4N?;o4h$gWRNPH!=cf2MdEG
zW!KQx^HswdN-Fw>!=H8Gx{``HC4M-2cD#kt2DXkjD<@y``5xE4n7fM(%<pr$PTAmk
z&F>iScJi=0#|E{)@6$BDI6%{=a#=rS#O!N}LSG!VU~u>~Bl<=bT|DeSI9zWSRkWsn
zCv!&?jV`DxjaFKI at GuL9mg7{(89kyDf(ox0F*y8-!>%pj8k|->&LBX{UIVkm+Xpg?
zoG0Y-jZCs4wIXO}gd(+CF&F0mywJ+>XI(WRpO0dG$5ANwu&y#(g&*;w)s<6+c=`*4
z7hAV$TNoe6NywpG`dDRP9bmWwc|$(uJC~{~>r<r5z0%ORQ>0cr87k-419{~0j7|^B
z1H;oA-=%Tpp9w`dUu!z(L}YHEz)fCWsWP1_$a2F~8dnE#%h at An?2xjsUej~kmJDCk
zxY66(yFugC2GB=NLGo)RHT5s<eM{qw0^_Okjpx{moz3n4()1S^Kp*c=_)uTL_h>v@
zf}9AOHO{_6hHV;WdoROJ6+YJbz65dpw8k%R;m>NE<x7SaHSTsM{s)bZ66Krm{;cs1
z$pq(bYJ8~+e^29`E_|29$GP}()XaRj#zkMO at rzt|iN<em;o~)~+E;P!Ga5I0<d|E2
zjgN5YbF{{n8A5&Jd^Yurx$tU at uXN$FH2%5^r*CcYxzB|=drytEZgSzLY5F@|c$30)
zqap5bFDZAK;_daoC&IU_2`V}+9#OcOd{DOx{ui7~DD)fhObh56k)Qt at 5Bxe0{A(UK
zee~qh|27Z$w>)qz{2f<__EYCC$3+aM0nf+Z%cu0+9`xHi at DZr!`S>?_;LRTRe|X^k
z>4D$wfj{7Z{|xxV!fbz`#yhajTfip>pUh3lYFIamhCN at pW&zK~hdy*B7P6Ojf?l$0
z1<(#KU#fIb+^Fwg?!o_I;G}<9({mie;6E_GKHmpUdcV)1;~0kF0}uMrQTh4Qdf-=h
z;P-jpJ3a8}NKZa{p5=jG?ScO{@Ck+4FM+sjnc)`-=c;BWnEvE_4?cc00r~WS4{G)7
z2iJm*XH>@%wRk)X2WEs;z@=cUzN;P10pXZ90atci at T)ot-YyjwgeSO*bDh`iYpi^3
zXx-1Ffq;@~$D*xpZM<;a9$dO+*!}+wmNTBj_uDD-5C_Zf6S*+f8;?c0dLq&PCp<0x
zLsFb6oLPs7fgxqR%9(|Mf8sb at HD;Y~?%9v=)T|$4xxv9u{?)23fqeruEZC>Yv?ssF
zL)4$@sE-*XZhGR$A7#=ZP(G3Qr at SL8=g7)^@^oU at TOnLOlYiKALAzA0RxXvR6=k)e
zs#X-$%Hi@<$KkR<rYf4Lie{=p0*XyQ;Q at zUA=OHFwQ|#3t;AO=e5ymE)WGKcP$8hW
zanpxz{Zxfab>ccmAh!`5V*R~)P0ro0W#}Ftff?EI0UIuFTM=ws*6tEJG}^2=ZS=Ez
zF&*&kX={pH at zrzaNjA}(<MbMBeG@#zM^;7Q at Hx)SYT(`&&Sd|dUQiuh(L>!ge-hWw
zZui4(m(HTA8<Jo9(et>nz{_;1o7{iTtIB_?nxSW3ORuXrp6uH?;ryCgiolO-UJv&w
z!d~3{!gH{4YaXbUZwB(YvTcrrT7tnqHJr+F_>k!7ZAk<>=r#E7?!bFL{dMoL?b8mU
z7oD-EEDyRea%f%3<9FKK4Ce8uJ%psn@#QP}f}x at UGgWInI~s3mF)e0Oa~Fp|Rgr8P
znp<n#k^+B2my&CY%yv07&De~FuIimWYHCNcJA}QN_O}EDF_O!SPMQ<b+GFu}sCgzl
zB1c2G?2fkegy!M8c^2JAH`{K9_d`;;ADx>O(f!(jIdhtWaKv0UI~;TifNN+o=3VYN
z=$*I6ES!q2HZUzS7>jhmYO|-Sislr6eTZHIN6>YxpX-e$Vyz2f(RRM=+vmvK*~mo3
ztHNwtp>~bk+Y#*q>sIbOHov!HS**t>*(x$=+Jes5JXZ~=LHFSF6DG#cr-8s!C^5Tj
z#e&?f1e~W4b#crTvp`-i(vh<lHSetkFAD9I;*9y|8Q9`Qm$j`5ux*UDMOxb7B|DN>
z(;b5+ at 8w-oESJ^LIvP|DV7KV!FiwMU`wpyMQQ>}ppCWL6O~OF>&*Eq3xhDn#@l)|L
z_#t|pgOA6YD>b-Z;Cvc4_+)`|j@#fT37mWL89XBJPYb+L<J6}?;13C$7BGB%D{z^v
zw7};G`a=D@&jX)f4WH2(cgy{(pg%;=*9-c&0>4nu^C{Z!UnA(H{x=BR7WB6XT;}5)
zf<K?e4S(nJ3MU^W{c|3CUiH8~_P|T@)FAC6`EySS2IA8G^&a>Nfy?rCxyC78+PP2A
zOFQ>dAc9-&zkA^KdEk$E;LiN=Q2qyCJ~5x%V?6MX2Y#^!ezgaFmj}Mp1DC$ZWxkBW
z{AND=XL#WC9{5Ebc)thEwcq*VZt=ih^T0pwz^}smX+Hj~n19TNkI?gY%>EF5rXJlV
z at Y4kToWSP^d=BOT8QgsC6}aT{tiUCo4$SKrK9c?m0+;mn3S81ZD{x8ws=#HvyA<<x
zMy at O;Ne}!XfiFfxW49hX<xe}DDeyQqY(XF{`LFfBi}gG!>7|~Z)A+H#&&JQl-6-hK
z5%^|}vpwP32}A#qpqKiL(UX;wd#<2AT;S&ke3Hh=|8RjjA4u{YrnBdRk$aY)KT^<N
zByhjLQv#nL at ULl{dNv6BTY_Hdqdxx!om(H{^P9NT=XJryFZdVgSFfa(`W&Qjw?08Z
zFZnML_(Z|~9DyGt at LL65F7Pq>RRi^zB=F-kPJLwlP8awbK`(s?oG<YA1ij=_s9zjY
z?$LsNtiX>Ec$vT}1U^sTlLh`cfwQce@^hQOWxxLufgdO6-xl~3fsfFyP~7=7QR7V4
z at q&Ja2Yp=NvYok0 at TnAh9uc_I|1H5s+Ic(&kqGX5Y|uFMl;!G7fuDeT#%|{dJ`sU$
z5xA85gy1t#(7!M6DuExMH=L$EGT+AwJRs-~6?nD4j}`b-fp==0c33L#D+T>Df!`zO
zWxAdh^s+p>F6bKspK%<NBQRal at iX>3TI25WGuwmy3=jHm2>Ka<|6LyRKk=Y{(SyEF
zzo4T2vOFKGaku^_2waxuWrB|^Zx;$&mXp;2m-%w1;D4$}?{NK`LOnT at Gj_gKjE9M{
zEnv9Og|qKx;ND^kh7WaO;QK-bgR}2s7^eGigAX{cRqDcPw0?)V at J*V&!i6u@^y5YU
zOZ}hH_!eOw;%0r^6E1uz6+?K=g_mmlk1l+e#@}+`=J}2J&A?+Fe#Xum8!!-`ji13M
z5JVs@^ULIen-A+UgBv&b<L1B6As<42mcXUlh`_@*H+r at UT-JA!pOo7u=)WN7C7=Hg
zxa4!Iz$Kqe0-uj_qt9l6Oa6~)oY}<Rt-8GaM$k+CzZ1B$!z&*6Uj#1oG3$@q_W!gl
zkHjVY2?CepVVc0DKBj(<kHn>~ENO>%f{(PbsW<NYiV1qjr$^wDkMzAN?Rkx$mwJB5
z1OJK#{tbakyZyHZ{<y%UJxzPyw%hZXo at InTQ%>IY;Pbw~Wx7mzK>l_3neu7c4>x`o
zg(0|c(+&}r`k(AUf0_q=zQCoP`ms`_wFxptQwfBloP)v{)!2b)VW2)T-<cN-ZhWN!
zEBthv8$0}?<+ggr?G?DxpM3!X^^f9b^d!c>Y}Stg>e~Dfr!4*0l37<qe3>B<_ld^@
zuBQhS{}zE8exzR{aNWHq`Wk`z^*QO!5ID#D48%`VXU-qTkPO64U%=~G{6iq#tj?Uj
zT76D at i9YAS*5}0Q^|?F{uN8n_pR-KqCRiaHt1u8}9++TsAbyeoaWv(MIDaNws85LL
zDH(-aFL0CBgl-Zz>GiO|x<laPW!Bx at FL2W9;h$B;gd&iZ{P}FgFhSs?H#Xv4$_%9E
z&#aeT=fcf;Y12-UmVDS2GdwHkDffJZT9%oYHuP&XZq`8)AEPlIDhMF(P@>M9zeNJ)
zsafZCjSDyH*}g1r>bXht`nABRr&*`{M}d?6aZPUu2XFId*1sK~3k@;S{||l)+}oFd
zIQg4&HVT~d=6wM7(q$lhPQBi5-!@$LL02u}_0rInCLYTel&74%MwW{igzJ($y3$cz
zbn<(75sJEBDCTidvnOi4(iIAMJ2J^QwAtI6EQedhw at 6PHjFbC9%B^zH?T-X;9G4`B
zxtBNJE+;2+Qj`(>e~DX@<tV^8<yVzz%c|8!)4v>pYxWnWZ8b-)_ at -T#@!5Zvc;@I8
zpJNGz at y<cbP0Yl(iD!;p at mqB~DSz31#BbN}&3K0CZ`qIdtMkNXnvCA&=%s&up7`v)
zOgwY+17j1eUn}6u3G4Oo-7<qX$I{$OPoEx7>CV1NcW6vMZE5Uj*s`CZeBB)4%n1X0
z36>}5?k00*3eL#$lg1Aqu1Y@}ViDGB`E1K&aHqc$H}l2cu#fS-ZQ at HIIRB20zs#kV
z>(bf)TIOXfemOxucwetGn)YYE>b5_}8Pwm+w^&aM)VmCB$_=8ZunqqtG0*=FYFYC*
z36F53E55lj$LB%A^ARoux{qLN%QE%Ixyp`n&Gj#EqSEh*f4zPnF!hM(ABUei{lyTT
zPyWkV{u(1lAKm$1gvj~imo9K3n0iF{Y>V9TXBhdKzd0;D(m6BFDF%1T4;cA|Kp!_~
z`KF#xKBqd}@<WKva^bE&-CDk(*K9NK4bE>$Rr(EqK5oh*pSqZMMz6&>{bpT)VY61t
z*V$m;%yW(b`gMHwp8Okhd?Uxu8~Nt?3ZuWP{5+-gw>2T{$9a1b-|*e!A%ByW-(&>o
zqls@|&Ku+_KV>@Nvzn0dS*1*TBmXrmpJiKyV!v~x51CsgzB%sp(7!@QG<1f6`}zY9
z{omC38$GE%S(^9;KMr;Wi_G`lI8~v_?;I<gL*}2f4CXjZ$9K@||M~vxxjZxR4Ay}7
zBXQx%eru`Uq0k5C0{=#T1DvbnyW_9b5m&n^mOK8Lh?uYb6rb)$*q|BHev|Ms at s0hM
z9=B}9+<6rL at tvA(Kq_!P3qN;!-gc=7#In{MuMSp&d`JW2wjalS`QmTX56&Gf<=pXG
zx_YrNy$4^xRCb-<_xr2xGr>7`{*6zAnwpt2ocsIk(_po(i%d~1|L}hVY7=##J!k`-
zABZ1c7x0{IwSMJ=GbeD53GTt~Y|gy37#mb!gWoI4ur=YZa{OUWVY}wT#5raU$JAUK
z8xhT|-B^$q{<iP at VdWbO6C-efy*@V%ON?3Wd*iXUZQrp^a08-^#W}$FTLw0-J`z0V
z)^4Y8?#PJU^lrlzzGd(tVD<nryBwYWC`cCw(r0@=Z%DIya;YtAxbx>qq!3$0R at gOj
zDtrUn?pSQ^J{V!bDsUgWMPpxVJIM{ypY`=0p<<nnE!~%5JIK`)YX54rRr6n{;ozL&
zI?hh4RhyZrJ>XL3a%XAmu)kvruNzaVxEFk4K`7OUjfg+sR^8#6k8IzZUvRs&(PpD3
z?EQO~olJ)(|215bzU))>Camncf~))Nnk|>#lYA7Wxg(tX3)q!{UGERL{SG}8Bs%R>
z+;6AOA at gv}hhY3an(-^jieUU1`WTq}Y`A9oWe3^!W*I+wc>rvWw^JuOn}j>5#tx{7
zV at -O~Q$Wsi1U6%v*9IiH?;&j9Dt7ZEzz#ug2Fv~0wyJA~UhPqm-4izX7ueYjr at CNg
zY#}Z-@@#<P0jSxx8CwJmD-YE??CZZ1jRZ|>W6NS#e-$>QeT{}L^&M$pk9R<qRd8S9
z{^wL_X@@~zeNcVWn0$XniPE<bWfj}+Cl)rQx+=J1dAQ~^?pK}1{zrx;zqW~)3E`I=
zoXr7TUcRXzxgECpK{)v#I3f#n_x at KX`384sMJ_;SVo5l40SZvu-&peo1cZEZe&x=G
ziH*sfN<ib}?V*~@xiU6iesDu_Gi3Nse}c7d`<B$>Z!EXpb#`vGlMmZ9!^(XF1uPXv
zC~_T}ZF3i0I+`ej9|2WZd7YY4?&RP~sKh;MQ%kVzEH)T_0wma$d&gK)UyXehHKs07
z_Gzqn7yBeb{UPOZLOA)BQa?O7jZ*0 at q<5-9`h8koTj*B1W=eTtzMblYsvQ-f8sr`g
zV>o9D=uzS1_6Jlon!MevdDA!eJ7(wu*^>I^<;B<!JIRSErftW#?4EL|bFgvl3yDS8
z4jXB`1m^#U)hsK;*#r^Q0Q&!R at A})x-=H?pTD?ktU;kH?)bqf-*B`3+jh%d6aL=US
z(8gpsH2JyEmDtH`_Z3%^;)E%>^!x^8mors`#fIfJ9K3|f{l2k{wcI7EST}W<TpT!2
z?aYYkAU3Jo!kq1U$QJcZ at 0G0f1V>5KY#vtIfhVyg78qg=yejO42jefnZs9BaY`m)M
zz7Mg-{as8`--p;Kk`Fs98Uq}aVyARF$&{jQI=f|W8&+o7w3 at XYT^=_2tmQekgw_(-
z+W7jn5JVOYe3>UT<I8>hDV(8}g4t=v`k&g#pTKO-uudF~?f0M*nk{Te?|1m5a5k_x
z`AF|)LX&?Q*d4l(F9WW)Vm?m5XYHl64arxwym91?Q at AO2Rp4o}&l at xW8?`5Q70&T{
zKI@}|$xQ|QY3_^qV<ZoSXLLCz?2H!^){VZ}ih}fc%IffbQM1e0QXdM6J(Our$azEW
zp at s{sc00EZM_lY39<<g4tI|IrBh_f3PNvU7GO&$OItC3?4Ambcojt*!kh6zVwtZCY
z53WG}gA8D^$Cd`3MU?6XqX{h5y$yDj-tj56%ka5S`hZFrHmE)`lzgNywW0!T9qPfK
zu)8-*{vxZ#cvaSfahz`9&G6)xZPhLOh~~x*{mrA7-;8GHJK$Uvcn_J{`#sd at +Wz-?
zSCG?Z)yDUVlT+v*_t?PG1DkDM=+9xF{Q)}!bU5druB+|ARgaLVui at lx!;{~#buDSb
z3DUOq(iO=^cihADga at xER!vs8W_4Mj2EHjET-zGE at 1s>yMHvYVr+PqnAQFkBI?fG{
z*z^*lf&D}BqhMfnx=UT5-wM2@{D=@c2N+GSg3~|QgL8`=UoWBLGZ^luz1GX at nr*&*
zzPt^mK8HSi6?*@_gi|Nl*cv*gl{9`#eg<tFPb<mMx<_Ss<2K;1A}ZAO at Z>k`Qy~6|
zD at NO=K>pfG+hFRL+LiuEmC8)MY}bV29YWtV)ldXAY~8Uq+R10JFTENUnN3pl_$Wun
zU0TSnfz4}fMjRIXn)AvM51UQ&&{4rz4XWsB6z(mJHLs(*{E}64yi!R!4`Ho=UWYYK
zem!(0iudj-eAj*e?Qx;fFsdQ>CY$F!;R-wL_N_sa;R|lHeGSh+VtNr`Wb)tcyP^WS
zIo}IXY>tL5oS9h7zLUNbRQvs|X<iR77J=k<Lsw#tOG;jgsJOuY+Dk{OZh1{NO#x9k
z0~3hkc%|k%f8u44UOQzYz1?t~uni+Ej01kI(~GPVxrX!}3|rchA9ZEe5y&uXvilIS
z6Q%BrY>S+RM%H?!|B^B*<O{xt-!_$gm`tTaHy*mJMvIbd;(LcH3ianS5sud^Rs}(Y
zq0mcN!reE1s$kT1Za?@!F?S+lGr+L>#<2y(6NgW+=HZqBom;BCQJU)O+=JO84d_2<
zFSII%GV5{fq%zt4%jRJ>t9WMnvbm#{m6X+$lwv2dOF?Gl80aFzI<KVk+CtC$tZeM*
zb!b6J at z!lWed1?N;!18-)qw5F>PxEXN-AcT_`$;2HLGqEb_1I;6xJ*t at +tfnE~0$3
zPnxIvhLWX)4?zre=fW;sQp{<iET-i!okuJ9+^BfX;ht-t92_>gq~aRx>vh!#wLe)y
zNmJoB^X{-VcU0jAxG_{|+&CLI<_<~C96t9M+k5RXM?06}$B@}WZO`eQTe7yGsHP~d
zmNsSj at mq}_!(#j}%*TY>+MIph_$<nK4hBA}?k&)S-g|o~2}4*EsVCtfFrMxCR6I0z
z?*+!$#N5DlAcdKg9Zot8MN#IBw?UkD;)Mb?X?EV79+V~2XSd at xt}vS}Rd;~Z!VslH
zsIj*naMEwq_f);XIp at Oi(Q|G(A5MR~6R|gn399_#;&&eO<1lKRSeUh^D&wRFPJL>1
z9-F<%=nry&*z?6m`Xcar`dsIMbMLBr^e=hf6VO!Vqo3 at 7ukqk>q6dB013%jX|C|TD
z#sjyqlS*FS(}v6k+`*>i#6RbAT5K*cC!)8c*uxeNnU67NU<-k^_{x8tg6*xX+-9K)
zHp}^_J^QhH4&2$*8jIk|^_Z89|5e{Ccf>kcI=a16;r+=zKB=A+S-32c=!wNX(f8Ha
zkEo|d#Da{>H`hT}uqx6VYmc=g0`Wwsxeni6oA0ovJKtdg3RX|Ur~WHq349cb?ST`K
z-p;lQdt;IAE`0xu at 3Y-$YmJ%h2)uLXe@)W3wSq|6O6+eW)7PA+o@(;I+3g_Grgl>9
z>QUy>=@-_`)R>xoRjuC379W4_O&U-=t7|eg(nTcN*@``-mPOm6oh`9tXw?Flq8!Oo
zRqSH0u$jfjYr_wGpB;@Xi>+wujI=}(Eh{a4u^k2D#LAwoi}V%ttu}Y}u(?MjTk?NZ
zj(+bV-EpG(P@@C0=J7g>vpZyOY4C4o+)dxg0S^Lkjy??i{T}#sf%^pgA9Vlg<`dK}
zINbPE0_PaV$fcif1~>ir9{58Z_(b$?`S>goxYYl90{;{u8hs8Ok>$hpga&UBxU?Jh
z5 at euSd}nOv?-n at M9UA;OftLxqh%eR<$mbCJ4E<+3 at UXx?Bj}fCoY})98a at e}GmyX3
zpVOxdZv1GG?|g4%_?)e%htgl;f%AEvf&3*Ozu+(R`A-l0&jOd_N3PM9eCCPr$?=)d
zU$asA at EOM7jLYD*|4|OC at WXL#=qm&+?LST6d>?P<!vg0kHiPR|mx{mSql>4){eoVz
zQIF?ljB79+nLfUIH^Hw at Xbx=>g)DO6oAvcG0 at qbmAtt}bgElhZ7Hv at C;|+-8W`Xmb
z8LvMka9tHttnpeo9!%PK<8XnKo^^)7?8V62Id<6ZHK9FRN at x~_{;%oz_cEvvD><>8
z^?!}le~<BsNZKA(&1SM~uS;25;t6b-rt<m!wk4z1017zUO?Rl(0NX+a)_Jybrf!;}
zSA5eR$@uK=OgwY+ioXQ33^G3Jzlmp#eqgNfvaaJY<1^q~-Cq%7a6d~kUF21ZpA4Jz
zVt&)E7&_Ayn0Df5M527zmXXg-U2=&r=;q0}!2cBd$n%rNpMkh4{kk2)r3z1J`DPx(
z;O_JXa6_fv72jfKfnYm_%z7(#`d`KUeDa(0M3I?S(QJm;{}tTGC*RicH|vPBKgXYL
z`Hw)jlCSB^;ciaoA#ff~2GYv#Ab@=NUrd1r8=ZqnKg*(9{x7wBxA{ivg3J7sfwE*U
zYsTE=w^qkD^KB-MJO4O-&ZqzFT7OecdCBpqTYn3Rb8O-+e@$Axp*Ql)wK;z1A^*`l
z^4ZRqct$Vobp#eecK2VhkMfVu@!e|<m+mFLNzWmOpRfGAoJW7QKW_c`jUDx`G7R-`
zrIugm!b!_uj?Fs0gJ%D~qT^=~=gh=2cnjjQs^gFouGjJXIcQdY1JmaMdAj3o((#Rt
z4nuF!Z?0D%V!raXQ`_%NO~^|=cbNDl|MSUKQCL_J%5=fxSejMZ9iR2XU3LLkWqJ|j
zx8-0DxZ8d#llkIr*DoN<w at u{9;EsPnVA?dZMvlk5t(mKyUQ^{n$gG*mh%dlbly3f%
zS+#`!PN-FfTKHX=s%U8@#$mg_Bh$mA^PF86?M%C~Ib|L&S-dw<ACJPZT%S+E(e!7>
zXskjXkHzsg{A5rs1eNdaD;%e4YJC;nK^AXa&v)jTg>3d<S24YWmxWUoVGRM+CaL97
zT<j4_!nORboW*K8e9pU3vo<XpN}Z1-8ZY5xC0 at O%WlN=Motkzaig%%hgeQL(uGx{h
z=4b2W_a~pl>(INy$#>1dv^(q?h)v9~Q|Gx^a{Y{PDFv2TFtal>`PtBw at H&VW;^T1w
zJ=b1(xLO8f`)n?)Qtx%QXJ4{zRV%J`ys|vI!ViAn&H4$oPO<OR)m%P-)i0M~`3Jqh
z=d3bYNnfyBQ+9H>asUozyM^1}%N=W58p at dq)^`3uf4uhZEe;jD7^-=(*G^vzP_MaB
zi$UNAxFB4!)7SqqWHaCKSA}c-?ECx%Ts5pK$17$o80p(u5JomsY-^|}u)rtL(BQl4
zD5jyJZtbp#y?3frW=Q|;Q*A7LqMzui=Ax!^NgjRmV)@&2YU8K`Zq(&I72h5_x4bqy
z*jnBM?T?&@7sKIXD-iJZ+k?FYK$}#W>?{K=Dr7j73&w0;KOfe(p61AVSX9lsWuen?
zAjA3)-{(~#u~>i};hi_oTn1v-ZDRSxQiSA7KOzflIxKjw2Uo)tY&VXlp(Gw?r{I|U
z17H6SC<kkOVE?gpstLDF#}Dq<31QVyt^G)CF=(L7g~i)yOD*~mE}=1-vR;uvhh==b
z9UNI~yd{HbrC2nzP-P4kR`or!S`;C89Xz?bPSv5nW7Pe1tu}HjU5l6X_pq|3kH?u_
zLoj$oLEi_(@l)S>aF}l(iJM&V6oestcXcC`Sn*lAE?)ZHgN2FZ$)|mHCqDi0@?>J{
z$4r0v2$CJS7Lkx}O&v;p0I%_-$zO(34KsI!lMR8L;lcW{P~Xct!;`lZ{3JB_Cw;%$
z36VVq;~01>`Ln()#f_=a)s4x~RW(2F!Ma0mrtf3JG5Iw3r4pas1-ZM_-S6No?UuDj
zZ-YI^MJFbga_&{^;ofL at Pua>@qVRB<+`P`SHIx*&b at a+tHz6h#fS?>OGY8wtmxhyX
zh>F@@z7Z6G%}&+~_Lr~4r7C`K(~gx at +ec#N#ZFyUz7DvZx<lPJWivd;CKhGr5mm6w
z8e2PcpCStn-ci0D_ro>sCr}Fe)rBZVmzFQJ2OG+}>Cae|z3$A-)R&i{R3ZBZ9>Hi}
z?fq(6wRg<g`_<l)zW(19Tb7Y&wCTH_A2Jv8mcV^9BV(1^7eJO>*XdNKY_vz5L}wQD
z<-f0m`v$meUPgf`Tx2=vsyY}hUxI>;dQ%Etw{NmuB(Ye at F<N-=ww(%LO+g#Dgk2oh
zQ<XVtplMs8R*x<Bb*WC?PCB_^C$CeM^NmFYARcpLt%}>Pa%CI#V+d=Lo1DV3qV0`X
zA=wDiAHj at 7L+RL`Yo}yQuE26-U;lTh8CO#)<+<!n=d at 8YtD{j5>oE66L&{fLrv^DV
zqr&S{BB&dE>rO;QtCf at C<l}72XEi22V&7V;n&B`O>Di&=&vqP?E$^mZUEG+u9BXPX
zcdtn`Ee<-ty(|g7Q}u<b|4Xd=zNInw1{?WVq2zPa0BT^FBUhZ;jWtjB`r{}7p;QQR
zFT`TTC!J-N?9+Yytr$Skj#z3H=4$J3d6hOF&cbMdXQ6ENe->0Yt~(Zt-mdeN*43JV
zoT)!~>&=i-$86K3ZV%b^iHnw<x<+T5ZUmA)W0ESizxEzm2Apw`V9i at x`>3mU^2tmQ
z!!luC|4sk;()D}h3D at QBxpd`xOYko#S0_SIk8;I*QTAT04h9v=)ms>c|4rqp?|vKk
zX88tQ#lIXSWy>jga;$5dWe=`IGxBcl<Q-9tlT~4-=((99ZI%&ZHK1MdaN@*J>I~GJ
zRen_}w}0~;3<fAmt at V3Jm8b2!n-rhin7!LD-dciTPLZ9e#X#=TqEf4O<^!Bb$!g{F
zX<~$OFic at z`4IcU-0=x&j*@HQI{sg&6dLe5YoXHik?(r<f1;xL`kz+=0aqud1`p;N
zfWG_LFJUeCR<z8ifsMF;r+QyMzq5AKa7LjQ9fDQ9+S&V{>Ixj|`+{#8Mbm59xN~6t
zs2<q+uD$!i-B{192KT;exCaFqwe$@DjeHmVOIYZcq2H?M9|UOVQ+GOk?qLnxe&rtq
z<e1?VJZ5AX0 at Kl?e-0Gm!Rg2W%RWvW?wNw~OoOFNzUAX0yYKa)eHE5>P*H at n)XA5y
z`gFTp at LXT0tf23H4kZd}eb;SMjI#wz_y0P#SAuH$A%EFJZtG!A&a;9U>hRO2&%<^@
zlim*08Q<cAlY!eI#blye6W-@=Iep>#%mmc+JJ$*F^eDjOzY&JZl<wY><*0G!?Zf45
zS&P%RLosC$XJonWuIBfb-jt`D at hP95F_bx9jZE>E;QHItut^mxAsDdO_(-gH?G;$!
zj8?mXNR^!$;T!l5)sX+y9=u(Rruw$v-ZXq{fbSacnU=4=m~}lh49me+;!y}+H(d at B
zI`$9q<CwmW at CDDm(X1Ft;aO-&6~D^pe;x?Gb>fHvUpBSkyD|(}>$7YA&$g3Woo`<*
z;5ef(`EjFf&b$2NY#diqCtnwj+(%+X^N)~@wc*J-vCbb~gXJvy|1O^8zsZk^oMr#t
z2_;|U2%{8h|9u0T;3ik}rf8ki$04t%T*4>@eC3xlzQHfhSbAyy2!8*v=90SmzyQm!
z@!gVd;AWivxE9xn1Ha>913Xyk4-H<9o)FK0p(MVOOLh1|eY^3w%88)I8JZ}+Qe(Go
zU=B}`mt*`$3-haw_hxS!cB+LBF?K1gjvf1I?Skw``(c#>u>Qb0)hc3j{@|5#s~a9{
zTN1|1MTM_F0>*Z7Sb2IrNSrm~o0hFf#Nv_en4N0$+xPTD;xYInX|<;o*i%n0whwqJ
z at iluBR_t^r8lZwi-S_pc#$#Yk&JG++4U$_3LjSGyNp-V){ZFb=!cSTnkkg;i&!4J9
z)GWdMyHq4+SkLbf at jZmd_4GNojrkCMi&D34PF4B^b<IcoT0ZDH4NE9F2mIA1GcfZU
z*!u(X$xIk+PAx~Q>6;MK)DIS~+|R1UIUgP3BNbBw at Nw1lVBildSf?PVSf_s&Rps;M
zTHiH0Vd5>@kE}~RlpanvbvSU#KFK)@s_$+&sIBTfY)5FlYJXJ8)l20ay2J_L)KQpH
z!KBt7eElPlO{Qq0d&bkFoqW*Ac!#`qlVfj(yFI96!CteJ#X~g at CFUuSD0xov!>aN|
zW6~+rhIJ@)CI$o-`Ee_hd`R)v>b+>}*;w;V at BQqXtDHM>%7!_&t+uRyG9kDOwI5&W
z{U&i#IMrHSY~}@$FG8Gs<yMwNCkZvb=}j|^ooP>f1N_VfQyELdP{Ao5p;Qp9#_H|i
zf;XUP-_HsZkMuh#3maItoi^$IOfkMUQ-m=QRFU|y!v~KmrD2^J&J#2q(|iNhBdgM7
z5N^tY&)Jy19}f#ZWj3am%lQ0jcjDZ8IDctMlekf@=2Wr|;+Yu78Us7&&axVNPc at ke
zW8w)>5vgI=o4)=5+z;V%l2YHm=TPLBOE$jPz&9>aN7z%(Q1$Y0SuaP(dg<K1C7YIk
zX{@4hhQvANGtnWuMK`BTaO^t_plTmNgI6)<LVerNh9uaAjDhJ<uF^N-=rnxkF&OZu
zcup^s{Q}IHLD_0}<46kkwVfJ?PqEnga%T4td-66l`J&`+mA;ftJTa<#I9U at XS{-pK
zZuQ2k&N$wG9%#XX4(=wbDN`&{5==R;OzV{arcA`#b-nYYx}OeZTKy9(9!c60O|-!&
zlhp%9F_8p3#aJ!fz0L`*xVAB2wMUo5+O1em4?OyHwY2p1^u${AC7k-iqbp*T8F6q%
zP8WcjS*dZ^rrT-rcKkw<nXw=0rAFN2k4ahPhIq&*B=LfZyk7l3Pz&3eVSR4p+tcSc
z*(%zL;ew;4R>>*ldUQGYW7ZJoJ0EgilBwFRc-HRS1xGHpzToW<);9|meqp5bg`(jf
zkFd53dxy|ZM@#?&l40d2k2toTjN_u=?~J$F58E`}`k>$yl*O$hhhOt4>#dQTx4m)n
z at TbOGkBwdr{MC}-+s9jf@?DHlRyzFG<E=->BKFH;hd(slx at p|emi7F&L)L!Ey5*p0
zmi6&L<ni_Kj7 at nJEdRT2JfvXkhxEAo=i$R&A6;<c$ZIh0ffRLb=yykmc%UEDzbP30
zQlVl~Nj5nlGdIYw7luvz_K}}G{ss!uQfM`6 at p%_!{ZIw)HKc~|F<>{ptw)y)1dSIz
z^!D|C1{a}JgkJ^w`Ulx&rY^w6Yxq7IQZbeS8TyZzxYLL(2UobonSfAgG3cJ|9lhgR
z)9;SQaP4A<9$&uwOf~^20<$sYd$AuA+f{ZF<GGqAef=B388-l^sqf5$G+slfQstC~
zzLU$X-kTu?Z&&c8>0l%1!La7Z#27T;*@<jj5KX}b31 at Hktz9Vji}Yfp$R$vq9wW~S
zFqnKKF$SYHSA0_xRm!iTe#sr_x6mFb?soE5S)F_X<G at pWAF0|CE#K(~X`TVDF3iqv
zsn2%@gP1ak8R>5AO}$m7o)7Nf<R8;(*(%}_{LtXsD&&w87oVBBG&k)$zcy{c$Li at y
z#B;uN#awY{5F>789HaaCo4`ASGBSimR{Q=iXd08Rrd6wq!A)pz4&<M2<j)xr_kG7U
zkY5~1zL>rV4<wvmQ!mA2<oThL6PX1;#nGnAGB|~g38m>UStK3X8|J-dqc^V*y*b(*
z6+c6Ofj#Pi+hlhelewij{R_?Z9ZD at r{}^-R$T{_Vv&eQH*+a=)i<>d?j<Say<%Ps-
zd~|7MdiSSLB at RG=a^@w@!RQ5_`l=2I;{M_C%-BrHRUcIf;gDa~-tO0*!^Hg^@Mz{=
z7V~%a#Nu#X=x^)v$D%DO{XM;%m40fAceMVCqH%v`m%16{9e;E=IyppZ>s;ZFwzi`4
zOLX}YD`WnZ%0aLb&-~NA&3b@|7HnzG^Wu`sI}FwCsqgjeLAAroa@*Irg at 2Fgyb(i;
z<-T at x>nTm^n>?(Xq+1QCGoA(6gM^>eux~P2$qe6 at _3#N)CLRg=iV^>|<IY2bs(7^x
zR}b^57TdIJ_VLpvGaemmYQp^bv~v8RGqscI7B2AYg at 3&Kw3DAAH7 at X4QeXJSR{6%R
zF7=JIvE4xv&X?4(ITsz at k*EPn?LieaGqa?6&2v;~QZ>ODFgeozlrbcT?;-+$`sOnn
z at 1=0#JcRNe1GooML&j1@>_6$7TE4(JOv_Xmg>zz6E{yAJ at OYqtT1H}*lrAiRzk49(
zYJ7q|+BkOWb8dZO;X~Q{-`oaEX7!Eacd9?d7ohlZb;zf+8Qu2fo71o0ffxgfJ;>AF
z#ok^}bWma5Z%${szd4-+c8X`o?K$6^GL4Hc5MVeDa=p`7=cI9I(Hr?i){Uw_^bML<
zI~n4e*=q{tm6TmoR9E8f8&<fWq^zN&bT-Uwk(M)>3~Tu3rae>9&LwRVZr5ts>oL8o
z(&70%uCmSCk~a&AMvvUHZLZTi7l6NGn>TZ8L%Ey-WVje_hW0F1+h=`2(btFNl{?qu
z3D>1DEXL1~yFN#5Iq)h?a{=Tl8hj((2U~U*oltOKN$D9S#lcZ!pj)EpviaNHry<-O
z8kijKZ-%Mi&`_jS@#Vw0Xkch4Qne``&J{$tfk+`%U->nx>X|+-%2}1~fZxYK(d&F+
zT`{3ZeZ^v~oa1QF6$(DIlL<wcU9}BjS)GbrFVF?7>V&>sq*gm+Y0X)YTK#0MoFn%+
zED&~MUNKAtPJN6XEPD*S8eivJ=BzC(!Y*d+ at N-3<#aT`mrobNL{~PBrBj*}rr-O#<
zb at nBVYx2y&vFkyZ{rSxe$1lrdbD25br1(r8lJkzgmV>MlGL+8AZCb8sgT=icYTPd{
zp5CqT!(I4&8lU9Cw`iPe&1Bf7ag!hB-s2iyWB`5qxyH|Q;lEP2TN^y{Y5KEV^uO2i
zRW3ZO=~Wvj?!BS$PJ!|CU5&T7 at DDZK=fVqA<8hF6jSC;CaZWhNFh=9`62$pI8vlw5
zKSbkSbKys7{1z8JN#RP_oIA4>uKsfHD4^0D#JRW}_{73&`(yfi?w>ZXFdM_*FQdMU
zE6lcUrriD3gFheqCmLsP5II5X5Cop(o>i>TgWl_#_6tEjp^!6&PCz%O0v}lN at qfYt
zABTP^AN_eA__sXp2R-oB9&-Q3gZ|T4Ig(GGqk&H>JVd85yWejR_=Lhq8N61XwRrGZ
z=fUT at 3OBi`#}weT4LI|CGxC{%;|GQ at FnB&a!yfnz9{8_3 at Haj1DF@`2+wFnh<bmJj
zfxqB^Pei)&rS~Kce31v<1Dy6;s;eHyMGTL5&_C&ck406?r%#;+&P`PE(J%18Q^0R3
zJjPKD|Huv%9#(jTzRKbsdGHxKI=|dW9{5ZTJm`Th_Q0<sjyB63zUV=JBk&1 at 6Eo!c
z6Bp}83O_1?n||+C9(?GmBcGkEmiQ`s9^T#6<Lu(f%^<MBLgw4^f9W;~)0Ve&wyGTy
zD%;{c(MoP at As>*djZgZ>{79gtKE5g#Z;5utf(z&2^TV0SS$QB3sFtr3LM`~RKG3o<
z+JjvpqHT$Is3q7O#b40nR6X$bWv(|4`8#|UIX%*xsELGHF#*(;SQBdIwiB)`C;$a#
zVVefL+la at w0ZAacB?I>oP?7e*q~TfE>7oOI;%?)}sfj>!Qx7(QSlHXy5KTmt at gsqu
zE=;C^Aeb?Oa0`;dtIC=104=u4KtY_b3R`Vp>xlWyo;;C#%~O%$z3<JEGouoi>WHfE
z!Uo2x6P|iw^ACr>%9OTv at 3KfJl3NyYQnA0R9o4aUOTgK|1!psP7EsrLYIR=4|7rZ2
z!N2MJ!#AYi`WpUC<zGPE2{>`py at 0w|t>RXz$kmFnTJfw_Osbt&>TbY66o+cXp}K~(
zE}Iig^IB-}04&}x9S&T)&7f~%w~IhqS6uBi6KQW-))VbngN;$z67IM|%Z!KHn_Q7Y
zqe+K1d!r4^RHb)zG~U)?a=NLxi%m#XMC84f396L|^nM&(L;(=#ZEYIP#8<z|D<hE=
zt5;(cMo+w}Gun=d99gAWxBYLoW^yvPXH_iN;pEf)wtM_O+Ih_yMAm*nCINmMj&7tq
z+7gRIdshcLIyzcDxjr4eiD&{T>d+dY2vtQQY7di0d#rOsVkO!(yo<$c>}i6Jty?aL
zw5+@!vOL<>{>h|bTc5^AYg-&!^u(B>d)OEyrxj5ikKCSuWLw~FIfs^3%|do;l0gFt
zPi`sBxlJcZ-naLsaVDF2qG2AYD%<eDv}Li*mX#gRo(m#;hdz6H%j(quM at jTFGa`|$
zI5uF4cIeHI^7Xjr)6pk6{j#PGEs89vLRU5;(ligvxyr_UP^M;XEK%3`IlLH&wJyXP
z{6%<W?--=HizVCHT_ at BUgvhQ%+&X7pk~m9nt#4W^nC|zmf=Xa_Cl=?09jskQd1iD4
z^~}ysd)n2iYif6IBB<(<$eyWCa(3H_1<eU`zbi~Oprf2dRF%8^Z%r`lfxcJ|k?84d
zNd$EzmZn at LOqpZj_UsK=U%Pq}k*?*Do at nQan5wTiLpWKK1Ajy355qd!H2v*+E9GR+
zUbp6Av);YNg1yi%v3Oy0<`iu7d3nqJ^p^Hmw1-=XRYyYT7x80jhq!akkhaNgz{KJ>
zzqh?T+_fTvoQYzGsNkyLtWH3Y_O2C(`3d8x&7oHGMtfQ#(UuE)+j^jdz_2|<Ol=Ui
zzuQXXS7&Ajoqij7yNhEevuGjWtf`UKcvoa4w!dmO!eNZnSaX9`wb`ptWa-ZJ>n015
zx_icawCPZMb#z(VssQ_scw3~UJsOWk5^K6+sCvu0hO!yj<^|O=mU_vFGfp?m#Lw)N
zbE&%P;3o<ENe`TRS2B<fUk(~RA8VYChH}rQBK at pL`p*h_`aNNA^SMCalKx8`_$>lI
z75t1oqx4iB`PT^iC=Yy at z-tA4m<$johO_U6|LGd%p-$i{J?J|;==(kBlOFWkdy|2O
z+4vcKJ`#9X;KyU0jDfcs at iX+(G|qJK+1ua^9`u|qWFQ}D&#OJ~dj&4#J}>b3;AQ0g
zPT&g!{<gp+pAQ7yB<KtEybtx1d^jJ;;I_lb9{3u8pN at D&&y>b#H_jRwoFD!%xb1T|
z=J^aR`5dcpH=kz&y{wPt>WL!qmw3OxWqQ9MaG75}6u7kKGXj at -{z>E1lXEvFy=Jcy
zcX}_uJRbvb$!DF$-F&8C9*)7Ct~)&NUkhBO_XB~;^d5-$Gs9n|w_M}YhqJRLT~j>h
zLmv2<0+;$k1in!4|B}F^K3^5Mq<>K0&4SOz0+)P_$NU)s?J4mE0+;sb*EsFKbqdA~
z*9x3(lMHV5=pa4c@)`WQg1?k|*ccEYP#?a-GW62~F6qw at xYV;n<CM#$n*10(=fVyD
zq~OE%*#^H!;Ee+RvB0I=-wFH-LI1YEC7(mNu?&LS{>N&Z`pdoQPVk^VUEormc7e<C
zcB#OnJ~s-S?+T3_?$J2)@eBONf_{m>pYx!9(S!caf_{SF^NygOE%4cTa+h|K?b{6=
z_^$<iw%}7e78eNQa}Itcy$u4F_3NN<q;}}J&c at Ks6S!>0mJ9qmLH~7uOZ}hGxGA at W
z{|heMl;__GT=vVm1b>;oMS44O!{6{ZT;sexU+8(9z$Kq*4?eX5pD6gu75GsC at Alxo
zTHp%>eM;a`pBp{!A84HEmG$T at 5Bk>yK2ON4=7K8(+9!ga$(JsTlYhCuR|$NQ!2ey~
zO9lQ7fky>?hsG&aruSYC`X at Z-pYfpolL!549`qjz{Ai(Pky-~hv>h8IaG8%0jni&R
z1)ok2JTCYw6Z98*&^t>SopCtriEl+!_&33)MezBFz-J5m1{xlLdU9x^FRkymaON??
z4_&w^Czj8-Z}?1eF0IinoVqfUdEn(9xba(T_!~YayXg6h#9+H{L%+xa|D~`q?a;5d
zIL|mdWwK?zqs^f32HZ1t7(-$N-j}$sAMqf5hW>b*Gq~xE{fNu_GU;>E&rw{4 at -gXl
z%e}yZzE9v%Zc^Z_I5+y6btdF5?Q at Huj|uwQ1upsDC-CKh{uzNwyFDjx$>(K_7vfli
zpV9Lb7p{kA);k(^>(BLQ3~sxP6}Xfu^^|t_y~9TFk+|e9 at k0cEiHAM#vpjIK=c7Aa
zU-h8>$^XaRw}3}kT>ZbfEJW07P+LK3T{LRA#cUFC0WS#<*l5HEh*-5t2n$3*g2 at Ka
zdO;JAG(>5&t$x)OTWz)0s#ROGYNIG<wTjwSTdUHlH7T~D)@tj8|M|^(&hFXC4i~NV
z|2 at w)Pu|ST?>%$o%$e&uGdttJpLO7JKeWw%Unri8jpK~GbU5x?O^2^?;8!^CO%D7w
z4t$#fAC5vp#+LtR2Y#Fb=g&LSu1+U at Qr-?V-2L_zZH1K2YR2t&XE^Z13Xdp0pLV<p
z9PxH2T$fw4r7%$U5%frUM*$>*^e&=D at B)BjKo7Uz(jEdIt#GsnFu=#qBlL9u$pA+d
zi5&CD4Fh~EJwm?}AQ|A}=n?!JfMkH9trq-JfMkFd(j)k_0LcJ9k{-ct1V{#W5j}$c
z9v~UukW=s%0g{1!^mty{E1MoaIffBj%G-Vx4t_9`6~37K5-;u_hY>!4*DHJ?y%+p6
z#=&>8!sjTwN#TnWALNOopPa_vH4jl4N#f1q<j<T$euDl?MJexrFHyMUKXB>$@LJQC
zDSFv|19~ZYcpbt&GQdwYF8^NvyMa$oIPw|>c&%~y|0>uG{5XY+6ZjPIkR4(-@<s9x
zkjMr+0Dw(|ZQyvs%wq>Io}x2IT;X^ZV*g_bKZ at P3wy<0HhafPS0pBul@)VRoO8GtL
zB`@&eXoZ7b+Q+#Hm$D4{>lMzQ&Vaqm3g;o7!9P$q;_hSR1>hkA3-O{YfT>qF<dl3m
zRpFq&0>otE3Wrnn+g+e=&|d>$GLI-6{8t;)^RQ1G1{Ubo!$anEh3k6pj>19zxS^)=
z at zIEo!E5k;0Uk03DID~FFev at o?X&FV7<;vHIe3x9vC$)O2L28M>+K%uq;|6wC;NwJ
z<uS2q1zR=>+gi=J>$GkcE~H&H$rJZ??SOZ~Jh6`Z at pj4mr+0FxM38t&WqNJQ>^9gn
zO6)91(UY85Z?bf!N8Imt{mvI5arS*%YvGPp^aj&6w>CC3Bh(yMT5G(*`R(mQ@^Ked
zIk;BluCL09>gcF{?92M!dDj08)DG~}pR at qRu3{hB445!I=v$<(5!)3$f<R<+c=Ur3
zPHb2BdJ{T1PDcEAB%Ii;@R+NF`GRkmu*Kw-aALc{FXwPt{xf$Y{0a^)eHCQKI78wU
z+ZF$sG~uW3M)<2Zyq167ZiHW#CVazgguju)>-1y1An6u6L>RhcJ at z24*N1;({=oAv
zzArgG6F=6bz^h6CwwGg)nM?r>3ZVZz=@EU5z)LcR(}VcAI|O9R|6q|mjp5-#;>|d6
zfu|jQ9fy~AB!G-B#Sghm`nmrWT*B)y9NyXCTO8qU<M?+L{su?*J`O($kt$=yzmDD+
z{oC^M;8xO)bPlJ-*8d}fA^oVE+Wd**zgvUk7X6F;N5<^(^FP>(K<0Bo=zGmLh at HlI
zmj0(JKkHe3*~<_4_oK&_e=A{#!b-k(8z=nF^iCTo_kv|oV1$?X6T#Pw^j-RQj6iJt
ze at Iw5{XcTNA70B3mDuv*Fp+fedk6X9n|&+s-;Vzp3Y;$f=T7j0Ea#BWAChFp|Cl5G
zr5yjc99}Ft{*8|K>u2~O)^b3^kG8^&e;dbdm%nWse<Oz%OTtqyW9ZyqUw=Zt_Pj6p
z4*7kjytd`Xown)9-xij?fD0Dn2TO at x>ec at A9!;Fx{%pqL4;i8NeM!II`%w6F@#mc6
zhmd#>e~2ClC-|Y9e*A7$n=Ksw0U9K?o&FgdUiLvH$V0wM;t^cp7k{nDZ^a*C`6EmS
z`46Q>!VBLE9r2F{`2nkZEAd~#3vjL@{>2>sjZBF652HuIOZ>M|cwlz==Y|L*BlNy+
zu>bF$F#K35I4H~eNCa%p3;7PV7)|D%<l`|M-j;s_2i%$bl at vZ*`;j-(k5cpm{f(hV
z_z8X{$6w@=C;qPv`Od-w;yaL57_r+qypJaT|16YrYnOx*tdqhIB at bmoidi4>y=*1k
ziTncKciG at +hkuR(7SMZb?C^5tM3p8YcLD29&KZFIF#jmwMStnyHmvf^f3F^s17y%X
zme6B|--9qqL_%oZgcYBUNo{3p{SBvg>B6s=?Fag?_0kT1WVoy(q|DClTA47REL>*j
z6L+m7q;uW1()a5GiC1NuRW!#t-sBs`l#mJITqG53G3J|qp}&ERZxD1RaH9=J(+D?I
zj5a}xIXtH4qMUnBp!kTH0leh17pqT+^iI#Ko>P5t^=urC#8-%nh-{i}vSs7+JUZEH
z8J+Al6ep17^dqcX4pQfz5a{0#62AavR0V%F7Kc;iRIT{%kl^LG1(RGuFC5WZ^WISh
zoHIQ5v%cEK>`Uu1-aBUd7IUUmZw;MKnw?+UgQLVKf?yY}R;;B{_vx51I-j)iSHVlZ
zMabmU<LInYB7_v6o at _1^!4)I86y#DmNrz5l-J*_@;<HP6(fZgrxnQK7xak9T<v69S
zci?Q_^@HepT=bpk=}&af58$k>H2n8<(TCF0V|bZP{()_DPFNcL-*(aW5k2M3>A{uD
z(uG`hYT8)7O0>zd(31Cv(5aWANo3E!@t|Al-z8EE{)3N}^b6A`!1d8c{+V at tNk%b_
zbpLKvr2Bn3kg7iAK&nW%57)+oYP(;ByzkR0gMZd4jyMbTZ-t-ExvT4bldB6|n3K5k
z<tREZ7w7QF%@}!!1NCtLDxFD(li1{C@?13>`=riE%%j3uAL)Kh3hM@=2%Q-1PJh?W
ztjNW$Uqv~q(&k?~;U}-&+=gQg&cpI86w&=GX at xF9GLhlR5jv-e4i}_zI_csaI%N1w
z)NEYAvl1nY4$<9z_3V7&^JkDn>gW*Nd6dWIR*UX;`!~>eo=Da_+%pt18YDfUg}BMQ
zF&Em*#+#Q&f$A93ohWJtmyaN1RoV-2{FEmTlw3fk%0oFy$JNmdXm98Q#f~#6O#??z
z<)ZqFb8{(WbWwv}7%2s$7IQeTIdYNG{}wLoAZFC;nX?#Y=T{93P=RL5j=NtMbShz6
z at 6(y-a?9DW{#lT<-5;Vk{s)~@*ZmA-G;Sw*J9we#_fj$(r)opJUHKu(<+|Q`^VgYV
zZwh|i5aTRqy6J+>JPVHA%Ri#8j?d%t&tSu;>}yP5oOu?0bRqdLaESDn at WJ6-`8ni;
zJ%VgH at UK6zsVg66e8b?J_;q9xlWb$tyBo<5b3)dI{c at IJ9UpAl`{VrE=vDZiwLK@&
z%X^J4l0i3?JjpRex`V7(BLE$!wilhc_C{Z%r at B8u!jbt&Kmyhg(@5t7RH^*LM0(fc
zZv#eryZ6cuj$UJ83Xbl|?;{xYX12GG?Z?RM{EB>M{(5==e#Rz#d6Z@(o!}AX6<x7`
z_vm+_lN_>PHg*|OW=iM6BgJ$*Li7;-ZiIWY`#=`#!tWMP_ at aEGG9P%^{V<vls%w8i
zK}3P<pF>-(aL3kS96mlz4wt+K;}|(M&L{OR1gP!)W2F0q+6P`gHuCNZbd%WDNau%p
z1Xo26U+0I7?7H~F*N8!IRSn>aKMWoL56)hRbpQ1iNK54Y<4;{x at w<nYlx{sz$|s#_
ze(dBR5k600$#c;+uOiRye9!hR?*xLYeh*Lg=1BKbk$3;n{aojU?8pOu-IHj)yDGyw
z=YAB{wZwgLZ|R};j5jH`H-80eN-CYBcRn34&o}ItY at rfhCY<WBt~X?zTQiV-MN}H)
z75r6}AB$}I{XEOR)bg*e{A(@$I?I2X<?plnn=Stq?Wfu_Kz?M#vc-|RH at s7D`sEM4
zQ-JYA_g_g{nb6<6e=^58|1Q$`=MN$e{5><0 at m8dFzpqCg_;Y4tG^zKm)SP#}7|G}h
z{_NiDFtH2%tSh^S?CRA=mG-u8 at 7$VMy*j%za`C^BwddSGCzhIWa4FU?=}kV`QyOHY
zULIj|PHl~uBb6H@(DD at pKX0($XbjD$kK4_wqw1(8Y at uwf?XAhH-dK}Ihq=~xwVP^k
z2&0qr>0sNXs7OSGnpxNVATGFh&N$zwtL&=_PU)k at yDm8O!SK`6evE#EE3GLUl+$#~
zD8x0jk;>0H3K{9_qZYw$8<B*9;OJ}o7DvQKomO2qx_845p-}JrIC^}HPi^O>4ELOL
zUz3e^=s?nBW5!h7_hzHsn+6jtO0uQ&!>EYRbfW>ek?3JKQfg7CCM7zx;7ahLjt!jw
zoi;Cn2h*{6k&M4l_K!m`s9rraKLZ|=g at Jvkr=oIo{~-v>heZ#3o4RN|<G1%tqcS;1
zdf;ZCzISe5U?vTPdgl%qIF4+o|GjgE4ooD!X&?rQ;G$T(fy3b<!MuSlz(uWyH?R-6
zOj=x>-Y3D=`tpNC^(khcTHF0DH-<b2#1IK<{E?p4oRnTOLLf$U+~CpxW*(Z{rT2tL
z?E8@(G(*%DQNM|Q^EgNB2AJCCd(caz3~#u3^LarJ5$cs!z$Q*KrZ63Hmq83$+{U(!
zUeoEfxJ;{x<4UcSA}gK2FP(iPk#p26Tw}T%(_hdzy;Lqurc#+g0jCAim~>DOh&m{<
zWhc^2r}jQZcl at 9YC@_k;(;r9hB>+gD(MHPf?Oq;h+?iiQVG at _f!K11Y*Tl+~{C2{s
zXpYqNoRWhcE)U6EznFgGieHOIdZ=1*icl}XijpvbtVFUfWk8tO+1URcUlz05Ns at cL
zb|)#FM^n_4@}4{MR~Xw*TCnT4 at JSKt;pX%x`hI<=dOiJYl|mq=*2k8|8tLSM`F08y
zPNk$GjgoViG@&FOK#<q}&S#lKtB0UOozQcnDW<iJC;RCz8P?LVBueMtx2MZ6NkxvI
z3M9<y5Aq#OpGigyPK8MV?!&5~W3C^1EBIy8%ya!i=A;z72TAz{LhQ);C5z9)F&t4T
zjgmM_+)$m{pQxaS{v$tb-TD{>vAXAiY`ZU~<KS0z(k#*mJ&SUxd+PE-xX%x}p`={W
zRT9<IFNWm8NEtPogwybrz6KNh)Ed)!NA7NDZ*GgmS{mwtQ at 5Zk+5(l(FnF7>H<Fe<
zAeW4k=Qqa|Kt0eZ=CjZU=Jc=no8Rb|o)4pty6!*OUy0nzI8<?^8E&K2p~IKY3|E6?
z1_h3$=w3esq=tgTsK%s4F3GaBD#}A-CP^u+BVAk at qIBMm#Y6P at NFo<08HjLqz>RKQ
zCEew57cs(3J|l1r^@G9B)A$zIgtPU}G_U-tCQ;y45aS>XAXk%Zt_e651oSColu36|
znvkS&)G8P{_6`FhymmC!l#82*&=)+1T<Eg;U{h|<Hx3WUf%r+G+b2Or1uK?!!lc*;
zx~qWte)D}zdZad-+jsi7mUgi>yDIX)mh9S$hkO=kyOt~SA0e&?(+4}zdU9o??{+G&
z(o$~9!f*1W?&*%L|DRmGQX3ZjVow|M4)r6$N=FGwFLiCBnf>s4Vu)?pd#YKRvYKPd
zVjHJqH;e3Occ|W&b>;qlzmcv({_JH>^tq|Bx6?@sB6o_;C;$H-clRc!or<il_Q-nl
zN$qrUTSEJh?yOByhT`-SNd;PMY1{kH|ND-$k2;ky+}m- at +G)vI4SrHbq`XrJ9Td;q
zH~+{tbXCTP+Oaixkq6$(js$O|3$!rR*4dvyH=4!w(*dRaq{C2i!6|Z&@Qrj*&83T)
zh+Ez0EzJGFNaX{;OOBv{JUYYVn0D7&wgai5aI|dmXiWl5#aiefUCVYN2tHBECJm9L
zVP3dE3r_78wbL at emwsFdI(wW?3M`<euPA=BS!cj7g1)HfmaNW){6!M;GL%;L6s+S3
z|NBMam%K_eor5Iy`zaczP-ll}Jz0uLw2l9cte2D05(AU<(Pea87~NHrs1c-Rj8CNS
zV_k^~|G_A4{lDx_SNLD^8|+V1(7BVPj>dGY^7)<8&+1Q&9jGI+UXGYSDyv9vBOk5`
zq1(HfanrL=65Z6!jR5XS##(e at lt43Sb7gJ_Ogv&jWxyZrU1>fr?paDh^o8B^bbAAp
zQDT6M0UhXb$i_T)r1wf+fQ6ru;&xFbNd at 4B=)YqyuG5Y^-Mf=^O7f<vpeZ%3l$&DR
zf8xNWQ(ibd1?Fm^>q+|Bo-^on_=j_9D_;n9VOu;^o-VRd7s7T>Xt)Stey2SY>77Lv
z|2@>d`PGjtzAOlJZ>Ys>ipyv*Aze)$JZCFSPHG>LZek&iQkP1_V=~H<<Vbb1p-No1
z#Pk1D&u+sDsb|KM9M8%C6!Q^6vNn|wrbH+ry1R4G9q^c<i%<<vGgCjJSpu4w!eq;O
zdh~6+i97yecAM6cBE4}`)0&=GcH#>{K0Q!bQD8|?<~nP9T5K_X>Yg|o&5i8w{G95}
z4`}h&{{%_YXX>ZqbA|@P+bF1Cp3RqtlxLr#|5 at VKWb^G;N8dF416%xJfdR9bBK?FP
zC*TqBC3g%xO}pY4T<-Sg$w2N~W^&K3A5hN<qXYkoK{{^CI^jcsW}OCZqSXbdPrE|@
zU7CDI(64-&F0$|ZcSihdx`CAQM`n{`-plV*H)iio`t%3d1E(1tRrCcT;ZNAD at bBO%
z-k<rONvnsVarVdhew15#cJS_2BjqQVd;Gt!pWda!TDLTBU406V)e>{Mw31B=qSWBX
zf++4NE<$-W)reLYQQqGQ4yX1au?qTb%KR@@G%^3%oF55}uH##@>v|5Oa9;S)@ISHM
zh=tHCrUk&r&wO$BlQ&3T-tUo(JJ-ydzloH-wx1&qrmp+?{1s$VyOnKhdbgVVFtyYY
z(Dm1TOIX)49$17I7f5b2!B`o+fEfEeqNR;DT&qkA#Y><@!eA at OZq^hfuH at py3b5wo
z4_`0-H@<0BX$J#VL=hjB&epMg8{2(k`*HgGsEvq_daoiF&4aP2he6Ydgp)PGyuuZ)
z+!|weX;{z;8eW1lISYb#Q`SS*;dQX93cUz*4fc8{x*?jLrw)lSniEjfKlyny(}|vw
zR2%Yz=0UygJCo~KGS#mZv(oi(bmjMg{G5fs!dHS{9Yta-3>G}JFgV*}0inhYuDX at -
z963RE3;T0GGy+)|Jd&p9{k#fJ+ZOzme<|-hIh4dCm5~%HVtodlk{8)D1r(&<tc_Fh
z{PnQ4#2%e3@`cyK)*F(Sc4a-RnY2c&?G_WFD}M!ST_C6cR|H3MIg?QUGD=P2(~w%y
z!Wr+YSQf-g)j;u(`E9I;`Q at HIE|bOB-%JqczA_tm&vobe{1u2z%C4#>*cgC9%aPH5
zo3cO+H||C_S_ngVN$#Sdg|LNdQ`Wgq!$SjoboXFlya;_l24pDZR-~t%D&${#Cewzu
z$vJuS;;{E=0c^$N8QqipTLA~=kUzQK2^C=rqURCdK##v(ri*|PJ9Tm1ukr)Kh}gW<
zt=wSu!)AxxV0>_^yB0*W{uLsTs^`>p|I^GnVlyAMj-aJPbSaG=>MQ12&(E*-YZZM<
znk^z`y{n#eeilvQ at i41i#?{z1wUl~k+_)|)MAQ!4Mhu}AsFh~uC?D663&;G{QKJU8
zsk8K*nrPOD<|@K@{s<#{qQUs?=s);lFH_Fx6WH)h47Ss+Mu7%9U;1EIZui%l;86wn
zUSGP(H~hEjQs17RzZB!p6+q1*om2;dB*)FRLTY=yY1&q5muSsxLuCEJh9ynSbWk~l
zd^w5KQq@^UtSQkqlGU;xwj9kP6hJe#XdZt|me-&0$B&uzkCkRSEs@?j8km#ZdAKRv
zO#40|DX8uF4nBD!G&YZnBvCOi=f;)_NhC4!ri7vppq-|EiBv!}-Xxty;6fA}UbP3l
zEGVwz%nx*7hT+|R=>K=RB0$Uv{F3PyLYqSHA5jDqa4OxDom>+nE!YURzOAFh9AGV)
zL4UUnN#+dAK|**XzklhopJj%k5R+b$Uvw)Vm%H%R^sLH5rc${z`Ne$}Uq-15aLvj-
zNs~@zBv`ZA*NB;iXHE2f=`&5WU5u$pu0yI4Rgw;vkI|(UewCE$lI){g`ypuwcX><7
zcsBTEg1!Eh=RUg}tnR!Y`9U+VlBQtSJIF$r6{aLnkDjcck_f7uS0Tx$oq3QNqJzt>
zRm>e$#wF=8^E0fBl%4)4h-x8a);dZVo#-Dkg;q7O^y>TcD%P+dk&iTWjGBn-_4<GC
zyZ>%JzDT92x at Xlq%BIfuGJ{=zq5TTjY1?%zWmxr!`|)Lgj1G34p2Zo6QI)ho>v6k$
zV{2?-vSpRbml92V&%&n0Cc1Y82vRKtnrC=#HHx@}<_6I4?sotBA8J~YX;P&*krpYz
z=Hrdq``s(YG;T-Nm8NUy|LL3m&7 at cN{OobcWLM83D&R6cziCmF3NHpmt&)%Uq#*1D
zlaHT!>a$GD?shFyaH+K4Na^Lfjj7Pb4`TN@`>pItTzQN{(K&k5k(dS>y-s9(obF?Y
zcC<8!QlyM?ClnWr at TQ-ej7DDG?AFNEixT61s%!(OY{9O5XhV%@Ds at duNU^?c33AK-
zJX*+o8wv0|3Y%zSsIDSQ(DZoyGkN_pZPlU=v5z}K!QhKNbZUE7Vcvnqr_TkuzDkkO
z?<?pPX?X%fNcI%cg9t*^VoH at iBBS|l%za<a>zrEJ#Gro1(k6!E8}Ngj5y6$qY4*Fe
z^L~83d%?@UL{gG3;%oUq!gfu at WC^J4{bm(~7VUGLXl|H~cAxZ(YGKySF>Fk!79aiE
zT?p_o{BiSuW-B7YB0V+Kt<o26=lOv=FMb9D=JmZq7mbf98iXZ(12RvI!2G!q^&NW#
zeLvH8EJ|U at ZqBK+e+1jTB>T4hAW?pIQI|5PTi?)3N1n7tmtuW#RfKYg$K^b1U5{-{
zbYFLyD0_#!N9*gKj(T at DQA-+@M{(&mjSdP1Cn+9lk9M at j7U(4X0NSL2gc5_F(@`n<
z30YqMnkPP;B$>j&qqT$}=-;prkg7EH=B62_-5pzCQr3=qSWBep3o6nb+1ou>TThh`
z=AuaDhWOdLsL at 1o7wP^3T7?VK)Sq2!6{vPW-nz7(*p%Q3WYqeWSUkEo)<CleJn_UW
zYh?Y>=%TjPbK;8=1u&T)&Nn at fp+p9|zDc{7KW0L|@%Z3u-|d73yY at 3bb>g}tpIQSS
z{adY%NYj8CNv$P*)nR%$Dhta|649V9rEQ?Nnkw4bh~%#TyuP)uv7 at bxcFz&AiV!NY
zmyzZ5*KYJ>M`LD6ScHGdL*1(B2e at 4AxVgL1)CFuk at r&6 at ekjN1wL5De!R~!{n!!81
zsyWe1V!lSWC{XLa7#-dE=#p4_d&8obE-M)QNIk~nBPrz;vb_H6M+Rr8%+b;GlP)H^
zq at Ep>=HwUJKo#xq^nYin^VuY>VbP+t*rJBGowyMuakM3S&_sf>kvd}2e<N|y`&9Sb
zUjdn^1oPwoPZgl`kjz<0pA{IqsWukFI%#Jk>l5lo)Oe_XMtSCg1xfD@{a2DX(5Tl-
zP2sq|r5%m*H&-LsCRyDZ7SdkM8%aukn6e&yW<$KGRnm`Ix(=^d0lZuLM+ABOM|_5b
zGj$pPGu-j~`i@|A&t=F&+5o)r_H>_^$)13=*EBRoX$)>Bjq(x-FuVWIkERU2XTS2_
zETU<L at DcObjE@OBC6Y-wlnPFj*Z=jGcaVZlFm}{Uk5s8-3z9(o3!hB4ZE&Y}pw=wV
zCx)P=(MAR5PK=8A3esNtSxrk#4 at Uk@@-JPA?cUV2@$}23gn9kn`lTPy|JoiaSvzRM
zkMvJSJNhWQbdf4hPtbKqK}(tEKlK5(+S7Ga1NHw({MZ;h3pYsE2j^E*Gq%5tYPT)P
z4r}c9c$<s<0{rxQ%tU$DDoxf at la%#ok|LT+sj at G<<ksXs<kS51*{-b3{U6QX^~(R#
z$!D*Vwdw!~UN25;rs;fru38*6t8zmkmDA`HmeEuRu|7<*MIX`+jm-)(j(RA%Kbsmi
z-i1MHoU-krdc_4J at OuynYL=BK=)v?e-w`xmI)j#Hd4eiCKQifzoQ}x at KP4vq??p=U
z{mrBV&}7JldVD7mO|a{70(9q at _&%ez at eXvMG|@{_FbSN8`H6jG-7m_oTGJ9odaw)S
z;0t(8XK0=mT)Bk4pzptcBJQ`vS$Q_SLfad{8gs5c%OjtB=CeF8vC}b@&i9y`GNY3=
zAp_5*+YW$;lLi%LL()r|p1%0+#FmVq1L}?MRPW6O0NFj%{nGs*qBzZj7#0ehG3<h2
zp1$OM;za*KXYcg+-suay(_6gL+q~1`-sz`%ryt at Sa#;Hz6GQm#k?qk%uQ6|7Lvwq~
z`^qry5W4#n$NSP7^3m;bKJ{Vk^roS4aSTCE8%9S?UqHv+pMm$ytqpX0=(0t4;avbE
zaX&B<(@{t>8fJL4Eemn$_qm>ow_7~<kcfF0+IcjA)kv!z)Y*FN-ja5YhVC6SdQTP#
z|HD>FLIS68j5?8pR;qnElkc)wnue9^=gq6Md1N(dF`3hLIH9906 at Ce#5GlXn?r4yh
z{9lG2jcmiNZ8=Bd-t2XRVA|(K*eGy`{Pur9=3u<HFgEX*D6#XD_*5BeAc}G<i at p9n
z8+^QA7{GzBOB&OvBt;7DWBTXszOeZDd&GwmM|!0E{M{tdP9iqo`6H!)&yz at NvHLzD
zwSSHUQtwL*muQsQAg1d|-G|&UT2zq2%ilG;^{3$B^WEB?NNJiFBL>@gNrK7Nml952
zdm`!9&50LVf01w|<AIA~|3MNRSY%ofPVK;{DL%iIk#~(L?_Q?nA`#2LZ&Q4gDU^59
zJG0A*w+o_xU7x?gWU0SB3k7U7`KgHSc(+wYc~Yr5H+(H&J5|c&td4ZWu=}M*_f}u4
ziM?^X$*pPlm`vt_Dtqb$mp#n+P^C!SX2yw3j(*o<W4=l&z)rqj_ at ID+e;YkYMkTWe
zE-7->%zek<S|@%ECj&|ov-Q42qPP&e3L<uYQ at OvIbPs&RWTcP{G^cvcNcGN0^&Xq*
zElTx{O7-rO>di{^{v$;z1Fxoff0yd at Qp2uKeS1@?_nA~L_Rp#0pP%YolIp!K)q7&9
zw<^^ePW6sU_2OI%6>m0s{RU#7BGo%Oh1lxtQ~LlE(9h6p-<~m~=(5250m_4n>^-TP
zkeypZc2!_ghBr4r2X)}hq5hlwS7!w7%<{gM5$MbE?#l=~p5^@^^JEh!8 at pPGwEXFe
zz~A=vx-tWQ+S_|9D{yVD_hHsSU(5A=n7uXQUweBO?-5v;>)kvo at Y}t;Eqev%#ru1~
zjaUl4Y*^f$dCYjvTYlW%Mtj8UodWN#8G(TUuP-z3LV@>O=E%DXyhpNtT#+64?P%}j
z?2(U-_O1&6`DY+--)Qf$AtRp}>-}p8kb8#)zA at JO&CrqEW4(KGfLyaj;KMQAoqLRY
zbBuTQFd%pB8Mt_~_spJwyT*9kdyTwljQ7vIwr9|bJA&aqjrP8g7kG7ycT3*L-;eRW
zF+4!XQ^Nzl9^(xRANjx- at 2P!&bnhFufrQw1<kjTf56F}I1$sw&ukAPTYh%18KX-dJ
zL6090xOR;9$^n6g$9jJ_ at JocOJScGYSnt|{0=JCy{&vt5LO%Fn;JUHil?Mk_j`4nb
z at L7aB6AJumw0HHWlgNGZp%D`6>HNU$qrGkUfrksc8xI@#RDsdnbUy=*`fWzw**%Z}
z at 9%*OxMCP(z^F at ydADSbe0dLVLtrGiZypkOV-IhAPA$2=y$9T+4{{?H>gZ5?vVWR=
z5;0sfqI076L`LA-6TQD=jJ$lJ_g-dzkY8m5ww8H+&KmhrnfFlkBto7F1n!vVZ4He4
z;Y9D(L-r-)+d~6CEcfmhI`Z4)-d#Be^|d_$mzR4t?J at GPa<69?kQaspep&9lGi>Cu
z<=(4%mJssdUV+YX at 4dZ7zFX$~VQ<jfkQ;b at l6PP3$R{UxzX|3M@{_#4yOrL?yphjN
z^lltpLC8(}1nwyJ9 at uB(_ba{c at 4G)C|J*llYo&MDej|TT>8<@7_^keX;K>Sa-RA?(
zS9te-9(=m at 4?H%}yKeu$FDH7Jj~GwLlOqBfCV6*^1c%-O0$VG+8x9D(ROzig at Ujeo
zUjIViwF<B6puo%J-fs>9(J#Lkc%$5V_KSh{%e{LKMl?SNjk~nMdo>ieqQblUka3$T
zy(bO{JVRm~innha8o0I0yD~rUi!$$5`6FMO<o)C@;FlgA*i`0y_wbR=lzBZz0D0wz
zz;`RW4~`glbA|U}0g%T=2Yz1Ry*zs4_shJ^V}M*gHn5?>yLar!?G at h7$013Vjt~5N
zlK0*5BX6GMU0ev{(ZaxYCwYG=3|ukEyZuPW{EMQ%rIWm8iURLX^j<D9e8Pb at CVCsg
zftM$GAB0DK>nLwaG4P+31m2$H{i<Z-w<^8<5+HY%2Hvjlo+=&LQ|a9?0mugv0zF50
zSC$2~Pcp>^*OXK7*%Q0nug-WogN}nmsXB<fUg{@9hz9<28A?YZO at z0E7Phr63AJ=I
zH;0<qLoKcG(6WZ+rUh18i0_lZUoA- at eJw}vakEaGF*CNbwT&j*YmzjdrmLu^C|p!r
zR8mx0G at +=hsJy76s4`p>4u^}wCE?QWgm787JX{g3EG{Yz7Z(?o6qgoHC at w25FRm!A
zEGa4pmlT(jl$4fCC at Cu`FR3W0EG;Sxmll_nl$MrGC at m{3FRdu8oKQ3&JfV0($%N7g
zbad>5@(C3aD$9!K4B6tclCsjW31wwv<z*FRmE}d{;qv10lJe5>3FT$w<>eLSl@&!5
z;fmsll8Vxb2^D1(<rNhbm6ar7B}HFJtl6rh(3SMY!_KkxM#_kmML4u$zWhRXen(UD
zf at u8QGuvBRh+uJSNrU;RF!kgx7m1FsKR|XhQ(iaF=4MzejWKf2PG;F&NnF at ZbCTGq
z#=Fttt#Ja(E(BWdSr8Sz>FgC<h1GuaZzSUPrcaqNF;sB!{En7*M<`rUSW;LtzO2J|
zi!UrLEi5W643Fj)#1xYgdGw&LPM>kIN3#iiz-Z0G7 at W5clX2cmFJpOL#({ec&A|>s
zgu$7*Fs7iB4Xg+N8T=#>W&}M`jf>COt;@~p%$%K at Lm24i@jGmjh7q0_=hfGl7>9lv
z at PQI<9eMJBkogq}3t7F%xp|joPRku}S=Qv-P;d6++=4ZMskud~hD^<^=o~sVw?6Z(
zVYwBAROc2D#pK)(6k>92&a^$f5CxBe2N}p?_~q7j4qY{5O`tdXvaHK9jr<r|!#qQe
z#CcgJaq2~!YqE*+s=)NzqRt`Hb5~?!eq&f}(bU|6Y86 at ao*@dmg&r8{?>Vj&8J$B`
z1=eKuW?e?<sRvH_g?Wx_iR*I2rPEi9^i?B$({ndxWF3@|Hib3Vo*SZPF7vD)x1Yw%
z89I at O_k5-qO^Xrf;;l*O)x>*T?&cv`dk;w)?^KC*GxI!(Y>sz`9q&Jw<^|g8VQ8iy
zKTmR}cWqYIlHnBZv_Ux<k$ACn2c|v|@7gRo-e#sbm<n(*y|u1*DZSZQf$X&Dog(q}
zG0$;{csFO;@xH<|htfgR$@ES~yvHTVZ!&+6%Uze5_5HmmUcv^KU_XB=xWeWWZ(q;r
zGVOS=R~F`bBAd~(vs_KhU7L|L7v*Yjyovn1jd>nHeEoRWrj#qRA5+Z>e*qNn at 5rDi
zWP5LJPe+qwPI({vCd=F^lMcr^(qNNiwlt-~aT0o}!8r(-6mN)Ov^iq360MvdzMbV!
zLAFdQ`7_lmPiSjko}vf*w=rL|FEB-<2+#{1+6$N~4L;P{%z8%~0rNJ~o2eu6qn^Xy
zE?4lsjT>pyZJ0X^KHTf at y&mc(%;$+O;{7T6QGZ|-8+ at qOcZlytoq>6n=`&d#lzW&X
zD9^#Ckn<kp5+=_0%ptxX<wi`Fhucw7%~OUxiDMC6OqMrFoC$lpkxR6efW2bIk4!?w
zRnGX~7Jd}tAq%f&{7?&@#`tIpKc4Y}EWDoaaTb0u<LDo?`4Z!}13;U32Iq@<)Qg2o
zFXcgAH5)u6-h|!8xUIS6jN2hDWV|TB!FO~qUS;85WxU?P*D^lO!oSJ*QVYL^@f8;S
zJ;v8s_>GLOv+$oVew&5g$#|cI-(&DR591GQ`WQb^gXG at G_!$=dxWVnx<9Sar{WOdI
zImW9k{6)s+S@<iAH(B^!8DD1M+ZbPN;s0d(JPZGT@$)S_)70lYZ-s^D7(C={vG82R
zw^{gp%*SlqQ|}I7{ObyXGsJv0TlnFOd)yw$>v0A@)U)eXG4sD(2-&V+{QDMu4C7|Q
zl6p6l at gFD*&f^Ro^71Ts>KPAN_#EbQpT*~N#_zE3`OF9XhBk{Cud?tK=JR_^Ozt at 2
zIMQC5^BDi52FbmG at s})omBB-1{H0&5VfsxPB=^@Df84^aGB|f0>fL(6^ORqlza{*T
zOpL~SV~Q&|_o9C9kj&(GK)z4L5k4vtH-h-4itXbGPse|$gU?!nV}q)14rBW^2cPwX
z?~_UY*vR+KOAh++RA5JC<_meE{MHhlPR?!z{)7Yn9CfVe_>?;6OC0p)IPg^t{6`M_
z7Y_VE2R?*05T=uVZwEfcfgkO_&v)S8bKtKz at WZKSrjxVWfww#GdmMNc74dZZiyU~h
z1E1}{=Q;2nIPfhrenUCmLhoVljR*4=2mL;@VwFz*6CC(#2foCCU+usjbKvh2Zsb40
zmmA+~FjJ_ir<3y%2Y!nKA8_D at 2h;PP?Z8(O4mtCt`SRf#59S32{T?LzsLTU>BKj|`
z0)xvej6Z(^BD&TnZF-kFaL-JX(QKEQj4W(y^ir=&E{;yGJ8^P#T{Jo)8m^obZ>ynM
zx23U~na9tV6)%rQ8<#J~B%<DNQQJ5x9u7Cs;gr#MTSHU4y|%H2?wf9`sj2x?nHM&;
zHZRyw3>DK_+m<xMkDv1~rJq$1{gl~%>Peuhzdy|+5c^L(3C*8o0-Do`ujlK-CH~C)
z6n}4!DN51s;9K0wg&-|QU8_E6vHVoa{DQRNrzoVjo=%;O&+KTK+7NGW>Z61RYIe at 7
z$k#3rw-c*bak;a8#;kNoHcWAseMz)Nm`i)r-Z4K~8?{=q6v1~lC%wYDDMk24cfZ$7
znSg&K_*aU5bgOyYlw$lV$G@=oXQ;yl4I8Sk356 at riNq%~%)*sGiVc0S30rJJ6`Kf(
zP1s at +w%Cuzge~!9Fi44y7;YtozQlwrF`P>c=TgJD)Nn5KMK_eChEJ)XoZwR$o~4Fo
zsh?a!Gr`~!OxOvA&jkOi;ZtVZWrk0giL1<TEBF8Vh~ZP_(;IGOCYEx;t<3*lV%Kq<
zZ&N4KETi|c;>F>n*7hiMJ+Y`P|6o%cUh3tx!F4lSmMmpdO&2yTs#!39P`i>6XR(QM
z_8iUFTF2X2tW$j+P7YJUCJy)eBJ+MhbN#X<RuWSrshHN(LJMQ(#aK<@vS^g9oS<Fx
zOR&flYm2Arp=)MRuU+Ez<4j#UJ36~4S~IIGT7Nv%ux4-SDTQsZg at w`RqUFnRQ2?#6
zQAF``qsxjQ(C!Zi%G+Wj&$3vJNzm?xuZ*4$^|yD{P}lPbm at J{ID&i!@5 at th%t0)?!
zBRN{ni8jYt7R47w%`X|b|J;2^!$l<Of~NMRt?edXPHs7e))k{OW9=QZ*)yf+V3g&L
zR3=X_!z-liJTDrh^~uJwqK%8sqLs_0W{<LzMEiJ(hvFKkL{OS%E?MF&i7jbddM>e|
zGEkXFck802Ml0DBQsbs at g_x~#y+RKI{Sue1s3ix3v**l;SNeg7aXMNvWZWrHDe8Sq
zJxM<yAp#Zm`5g<1XE+KbRCQIZ?Y5*8xQu>r-q0MI;#bpDe#vNQLE4XYM`K_m$u16^
z!^Oxk*_KeV#0=v;1{)MZ8tpeXG^)~$Y)GfMK}q1;U`<GaH7lMd7ShJeYAspX5wH1}
zQkrVr-rlsR1!I6xGwN1p-L1?MAuAI*vBQ;h$VeKk#Aee at YpQLOXHwO6-g(HtE<8c5
zxM}u(@>=6Hx3zY(nBmy0R-}Pj+XXe$xVFx=KOQQl$KsP?EscwpG_;*H$3M>8Aw~ra
zuwrf0*oMm}(Ddfk`3=oHzSJQo7b~JO=hJ6b4BHr}f-j*h<fs-&xTSSL%=DS5jZQeF
z3kmPWm=1i7SK1xi-C~p$E=}m){61KVof5nxp^_PN(q0L*B2H3AOckV}>IG+Zw9~$f
zDfK5KkNu8y7o<d<NZ6V5Gqhx2mBJEaT+^ZxQ%eqwP)mWLj-+TjnGrOe-R+$C1OwvK
z98Q*@@>*&wo6Hb_l0fZbyV1|=S<az{X+Udt{Cds|>f<mU&@jJgSs2}CdsDQrxuLzC
zw&N^Cd0f~!n9txmtTA&PG+ki~W|T4KN<Vrt<|H3BYuJqnpT{`pX(}{9Z!Q2JKkx$-
zegx0E(6pDgK;gLL7zXs1Yms<QanN6+=rJ23^p`s5akMH7_+zb6=zs2 at e@W3}N=xWp
zbI=FDm<+6g=@I(<8Mo70qv%75{sag8*$R&-`d-Cnl)}HR=oc#dY6tyy9P~Fh=y5_j
z4AQ0f-|nFQnS=g52mON%`bQn~PdMm*>!AOGgZ|holPr^uhmce9v6gY9_e_Py6dqOh
zB at X<D3O`HH?+3<YU^UYt at pdx~akV^`DS9o>%?j7 at JmSDH{|p05(~sqaA>d2s5qTmC
zZ&CQ^3fJjc#yI3ZRMCG$(YGr62}M6b;qO~Gi|zUAq`v%175(REoeKu>o=p!=uX|rm
zc$>l}DID~&udkDF#Me%b=;5mtz03&TV&VA|2IejYpL;EON!MlzALq02UQ#&r<%yg}
z at KPDVW6z4nS;#o_fVFMW!}*F{r|TyQZ%}-mbKtKi{z$9D`=*2besmIKAm=&s2>nLJ
zA?INV|C7QGSNNL>KSJRdwEhJHJ_Ym$|KSQBt?*F_AEWTF!pADSTH(kO;eV3C$1A)+
z;e`r6Tj574{9=U{Dg0{+4=cQw*3n>~Pn};A8HXNpJ(^+RQXZNVAKebDa^QbdIQB+}
z9$r at bb@?oy^*9*Fsri>M4mr=IN93te^w?t|{HH5=)Kl<-nPK6`8<>+VJl}`CxP?nS
zx<=u;eYlHp#P=0?M4sU+F!1vgK2G5mDEwlDpQZ3O8HXOQhe`M!OzUef;IH#{y25om
zI#uDCelg?VUqX-Y$2uU4&Hp<J*Zl8L_zDUqe6T(UWAmw`^}BR<gmK7IN{{e4!9m}y
za9w`r=R(FHUX9<RaIJ^EXuS`{mh(WyZFxct`ePKX<2~JhH!A)YQ~Y$$mob+pdM#(S
zMKAh!!$JR%qSyM&;sL##-cbtI@*nHKzoc+2=Uoo`A;xWeKI))<P2pOez;KgYCciX(
zkixY*g^VNK3G|5GN)-Ji3jc<}HJ|GhAFa=u9Q2zMuH}5yfgi9>GF>{}(Tqd>G9~9!
zg_kS*R)tq6{7%LHOoczKa4qLw6|Uv^m*TJW at R5W53%qg2u8+q$@KY47<6X!&^iZkf
zKg&VCO5wV_3hhUM$=LFoq;O4trNXs5-)9{16w at Q+>P82Bp99b3{T+6FJcx1dFID^x
zanM&OT<7DL9r!YZ>va9ff&ZRyTb>sk^dBf(%X0v4y|wjUtZ*&QB at X;+jN9^j(?Nfy
z!nHh4JMh0MT+0*LpE84tonNOg4tXZhBjw?A2mN^p*YaHDz;9Eymgkp at Bi>0W-iI9Y
z?<xAD6ulV~lHX3(UKlKrvD395<2L;~g`Y#=L=XQ~xK8gryphl5Gm>${d$i&++Cg9K
z!0Q#CV-%m09rVi--l^zUD?VCpYZblDmmfRuhaC7H72c)dt-)j&8CyS%3fKC)*n$7h
zf#1P6^sL*NUnqK=u2&s+9&d<(oJ;7Dd_RbB at IO}J7b<$q{~Cqsblu~?H!A*G{wEZ@
z=KmK5z88P6+wzZO9P(Ew`8yQ7=6{94wfwg`@SiDsrQ+YuxScQC6upi&2a}j&>~d1-
zz-KC4%lRdRuOfbuk8O-Yo{0)SPtj|6);REQD?ZhV&pHSFPaXIJiqB-lXQP9DK;b&Q
zLEfJTy=lDIfuHEW*C<@;;Yo$-dhs{Lq0cEw{`VAKrtmQblZOoG%juDPsZ)4`!cSrx
z>C)r9R)t3ueYe83{8urKcy;}{)<ORZg+~?t7ae$Oh=|BQ&K7zkUAKnFL&nBGH!6wi
z at 8yRN@o~u6Mh|~JdoL**U6An4z~mzt&;v(2Fo!b^|5AE{e!QYTn{eSj)x!6qcQD^n
zeA>w`e6F?VxjK8-TX??VLcbSt at Oj*#7x|yD at Nvv%o5JISiJX-j5yE%SBXU+T4*e{n
zN7B1S(d%^GuW(&{{_em(RQ%zTcr!8CM<$yd&1V?nl3zl9poNQ^C5n$OhbJofsT7Cs
zIYr?$3O`ff(-gj3;nNk~#kej1T16jG^jA6PUsw2YMgO+qqw}!>lc8h~uTJk&#-X=!
z=@I>$r0CBhT=Xzk(W9J$A57H3rCc>xc)m~Wt+sF}Z}&3}zF(n7;{BJx&sX at -n9L;u
z`c8U;{&a<3pztM(BfUCbIuyMwR~IY#TE(Z^L4Sq9b^B9{$z?K-Q;&Ni3fJ+TrtsAi
zM$)xO;hO$;j3Zs8ivD>Aea2`aA_IAJc{tdCPj}#_DqPF6!GS-`xGm?i4*GW#uI1c!
zj1hm3{D&!A%X6B-bw9h9amaHVJ)-Acg&(i*#}yyV|9M5P^}oeI|B=FVy1p<reYy%2
zuH!vQ;oVBkD;2Kkzt6a>{~I0j8x^kQe8quhbH%sI)#nwi<r&8~<f&8gmni%Mg at 4t-
z=W0c-_5U3Q{k;m;>H32Me_i2P{yF1GI5J4D#$$}zdOp)Zzgpp1o*y{yjSAQC{zKtQ
zNG2)I8HJG2AJ5DnTkumEx8+}~=(RqVIOuy6uI0bUf&W6`TK+E{X~Z0)&+&}g`Yd+P
z*DGAh)8fGIQn;3<PvKuxdOM;hy_~d>+8A5TNe=o`6|Utx$ANb%T+4Z-!h4jQ_bObM
zhesKQoF^*!L&8S<LHZ9fZl{a3j~io`pV<o6>1uP}T?*If`liCyC^_FyxTgPzaa+zT
zOu~|}<s7AOE$6WgJnF#DR=Aeu62>7<Jv~zIE>rkP3cp(6GZns0;j<K;Q9>RvcDfFB
z;A0f7%kw1)*YdAZxYp184!oanTmRb>z2={Z#wCsXMGkz1!nHhe6y8hxM9*s&x8=D~
z(QA2r;J}AWFk%kUbH2j0Jd+)Glfreps}!#JJfLtr?tPANJ6&58z2^Ux1CL=6fs9>#
zIu)+vxz2&#!niHZU5Z}Iv&n&1VDci3JaZJT<%v7+YZb2By&o|SIcL)&<z&0UQ3M1Z
zib)ePwthxB at M#Wwfx at -?mpJf##%+CWQ}kM&nU(3~Jko)mpl~fus{`*+xQ_QV#vvzE
zD0<tbaEL7UJBrVl3f~u#hGd{;Ezekm>v$(JZtLe*2mKie*ZePV;B-)>F?PP2MHH4(
z%M+aB)7$dw$GFX>Sm9cpdI#RDa2 at Xp4*Ye-ZF$~w&<Br7rdP`|-hm&ha4k<g<B0cU
zdL-XZQTQB%Kjh%^jH1`|@i_<mKNYU!-|y)3=?W`c%YUr{|1smXK5uu>KdEpn&)*#Q
zh+~p+YIzP-xE|N7P`IYQoN-&uD;@MdRk)UOvjhLL!gaiVQ at 9>iOg=V!y5=cd$9tgz
z|0?5ly1uUHwLI55 at VgWrJsx{N;d(swxWe^#>=}j6Qsud{Dt&sVI`FF*N4j+T`8|c}
z_Vb5~qdn2>=fet*(mSblFDP8==XJ(yeZJ|S4^|UXGIslXqyw*3xQ_Q`2YwIZwmiRd
z&_C+Hizg at LY#^uTp_*}<|1<~v0)=aRUgE&7RJe}!9S6Q$;b$p1W7CrIpQG?@#xn`S
zr+}pEM~Ys at yGhaO_VY;x{c8^VT?d{yJt^m<N}l}`uH~sz`1y){zQVPh*D{XuYWc5H
z^qT+o6t4C8IbX~{<F~(nF&S7x=n;M1kp(n~@8x^FUt0KnjIRm!4&hVF_*E8O&G_{e
z&ch+Emm?BBXEXiP7XBT^Z?NzUjNfkIduI4A?z8X=#virtbD7U?E&KqcA2rG+5IKLs
z_;?HdH{+ESF28%Jv2gia%}Eyi0P{J+!XIP2$-=WB7?}<WAI<p17Je+_y%sL?S6jI7
zzrn&q{@X45IOcz!g$w<o7GA>izqRn+X87s)lZDS^`oCFti1B|}cq8M1LwtVlqWqu3
z_;3rC-wPdN;ny(zXbYF$`Ao2I(Py=VuV+3dSh&!iYT+B1K4#&f&$BK3H%xzlg$sSR
zg-g8Ou<$=KpX)4K=x?#`7N)=3!sT4j?;eq=|9oy=Znp3f8UMM3uV#FMg at 45HK55~n
zGX3)w{td?WoRTWf7<BYx_P6kJ7(dj)S22F1g_klu$-=+R_;d^Z4&$>dT=+yS{6|cG
zmW2!bIS#zj!W)^-<rcn#@o!tW at c*F$zr(`sW<I~PaQU6pV;24_(?4tB67S0v{uicy
z!@`CBeG7kw>4#4B^BKhk?SRnlYvI}4ZyjvmLO<4lmpkw&7QQd at KheU4|7i|<k%b?^
zeA+EM%=kqXUd4Eig`ddyw=7)B!}l%x%S?Z(g^T>Zu<#{JzsbVSXZ#rp7d|gJ at U0ep
zOtzn|?^<{d^UtbD&38#x(8B+R=?}DUk>>~tzlrHfEL`Z1wea;!f4qfnV*C^fm-eU8
z!hgr~^wVWy?DG5-3xAdAFST%y^9l?92h)Go!iD~33(rDjBJ*<#--q!H7A}0AwD2OP
zf8N4{{xu69#q at 7mxX^F6 at MD?&C)0g-MQ<}0AL_$qoO~L&d06NL8AmZYogNuKyXg0I
z(DU$Q(03&lUxP1J{3U+8Z&J97$AN45FOVO`#_>%7WAl;mIB at +PQEjLP^O5ns%^!0J
zFgD)o!-L|L at xC3ejK^(0or=$e<QDzQ_W|g&er{rV<S*h9eLbo0Hgb!8|HwG_e1#t2
z|E|I{{|^+d^(NmLcDm%d#7@`eGJHlhK8kV3zl<J{v&=zXt>~dcp`W4X&m&yYb+V#|
zeh@#*=@vfDhrM<S&u9EH3l}}hc+*aoeBao(eBao(d<WRLoIhaW@*M_T=a+oP*z|it
z!DMWFqyv}l4AAR*mvOPpN4{@t{AdS%xp%^*pXH!$aNu$`h0RC4du;q-2cI4X{w)VC
z=ONhq?{LsR;J}}B;4e7vtq%NO4t!Xa$#&Du>-M3PamcUR0r at TguFI8tXV~d&RD5)M
zb)mvFpH7AAawXqA;IHv36uoZ$uVEa?*6qga4*L5Py>2&trRa6L at sy(1?Z$H!F73t}
z7M at RX!R(0yk%62k`ez)LPM3`DY&_zim+u?A)_Rt4pUp?cSvG!=gTH+L;kC|}wGR4g
z9Qch6{7whH!GS;R!2jgHw>j|b4m>wN2_=KqI$sWQ;Nu+lBnN(+13%S)FLvPPIPg^t
z{2LBj<}K~?-r=Bs(1AbYz_&Q?Hyrp!4t#GOx7u>bIUY7X)<Hkff!8|lxek1(!gamt
zP`Iuyrclv8v;%my at puAq!wCKm<2gQ at z^`Il#ydj)W2Vcq=$A6Rj8lYuD&r$8`t|IW
zakbFj%XrA5?_+<yg+Ijp0t<hH{nB0v|Hm2UZEK12Zf0D@^Fsd{#<6w=BlvT^*E@=B
z!T-qqDhuDj{;3xJ3i~4#-p~Fz3xA#cSaXDtc(?gpvlm6<|6qJB+d}^y`%ky<57<A?
z!adH%1s0yo_+krR%s5vs)4p9!G%`+Ra>MrX;!!q&f1RE@#&XyOzLwpv<UQ~!6t3yN
zrf^Mvk-|r?8+=Yxcu3)wDZD`8^AujB at G}%%q3|y&T%3qEPEQpBT7HZlL~gM`k8z0j
zIhfJsBJq$NVmI=ghYSYM<vg2dU`5ysddWLLcD^&2`K<)ppr0=w*;la}IGzyuuVWk7
z9_)tI&u-w{q#5K*g at b+=`}cwZ$OwO#50~#g;lGbh=FL|0;4gYRL*d|`&-BX`4qkGv
z*To74y|gcnD;)fJdxj_9St1Wlk0jb-kzeis`<LPa{@7CsGZlnnV1a)JJY?kDHsOyw
z6EKSvJ)B$iGO#D-xd}b$7|gwj9{lB=v4<57c^+Z;wkRCVzC-9AnE{1^elyd{_#dyq
zU+yJ4T8(2tpU2_nDjd+3Bj_KQ28Dxu1k?Xm;ovX#o86^w(4WYKUGfvb at yPuQzqja5
zVfuWwK at 0vf@sG at Sg@gY>_RIJg^eOFIVf(pD;tlh?LOSWvw-<}6E!Nyn7>_NFdxZ<=
zXmzh}etWxTfWnjmgVUTo?>OO_j&Ej`7KfD6Kg}VoyGV*NsSDd$As<o at E~G=glaX|^
zG&h|UYd)7TpUx{>)JW$FFK>)3jYlcT&9PJtbclG81D$!?7VlWf5RUncHng=hfTJHN
zo$R}#b1QvTMm%Clfhgg#cXX2F-~i^>Uj*CH;ol-oV|yH at yPE{4SQFyXdr4p7wI9Kb
z4%eo0^OxW#SFe!nAC48$1+e4IVbJVf)Y4J7w5^p+<c^D~V~e8;+vosQQZ^k*yA(z9
z6B*2Z3{S(MiZSV*#*!cXB^UdI?Fujb%YMuU;ZNC(@G at S}@vq&D at C!IzZVo-fkMY5-
z$}gJL;W3}RtKrX26aV});X{O>>EvdHT)shCVSXwdiSJGHXY4g+nL?&20oY!ONe41p
zxPwCahtebZlyT7Egdu)z4$0-4$&!Hru+7bU0!6<Fo*y at Sn8KR$qXAW>p5xbJ6THq-
zG;p at llP>%`4lnBn63h<YLNAQ|?D*IFA&NL4^oO#5w8Dt~Fn^vd{uLbmVTL;S&yN3U
zdX+Bz6&ydaG37UxXzlnPA`I~t)1%D|9PrN?BsXYb#D0$5cKKUfYskEFtrwP>68AAz
z`Q(ZJkFfmj at jwpxLpx*3|2koi#pat`Pav6Q-%9+4uC#fLJVt*SBzNBiA6U(d5kJa;
z9Y4OC(#5}&<8QGd6utS}sooL*%+~*w**=AhOZ>tI`=sEu)a-?@8JY~n8rs<92jk#$
z>5pvmLrFPB`uC?t;um~8g-5xv>u(XqFZ4dQWO%^~9P!Uf6aUCG at mErK`tvfa0#L>A
zA1D#CZKprR;bnb7$mel*NvGf<xA^CY{8s$SS^fwULVsVNN5Tu=Z#v>%&hb}qc(EkB
z_`l|ezmMa;kqHt17wM7k5<kZ2^ylrvbYk^!{79cRqCc^p=kRv^htOG*k$8MxGJf&@
zj>4xae~UNy6cHwb{G;fx<?rYCZTTxWevy;eB*F_HtXI*WXXk%}!wa1qUi|M+U?abk
z|F^OHl77gaPmk~u{BR0~_=|)g+w~lOp at oAMM(iUwypJaTU&!H;i0_hcf at 41-`gKcu
zZv}@B2_f4ezrd$({C4<t9DXj8ql_JXCIw8F|BtZ#)^fpu{zlUy;YEK)j~zFndk=#x
zGF$fcZHzPK(qo55`)HS4gm|tA|LMMNs{q;hL!Xo`{M^S(@Wl7E?@Q*J_>T-%l!TNi
z8szqoveHuXrh<%5GH=*LHFeW6Gcpp<XL!dX%7yTUy&erGn<`^hQCU3H(C$foj7yL%
ze1F2;pKa(Eegubo06n at reLMKYe~0 at vtPLLAMQ`X1^Ih<tJS)=uex&pDoJh}*NaeJg
zctP-IW{lR=7oQ&KF{91M%I)#t_n@{!dMAK!KmIKYzR?%iG^GmeNcVHW;aS1qQ}XBu
z(Nh%Zd?@F%Gd2XVUo6r)-Y0s)1YFq{|3ReJL=x$KBhqbL=FQg2)-GIFDB`b${2SIL
z0r;y=M!eOtPmXlI!=le!5b4Q2tiXsdH9r#W3l1L|96p^ynNFfiFN*X`%ZZE~5_#ag
zKxEVODu}XidL$##ed#>XVj{W0t{;;((o;jkHJ+jF?p#h~Sy6n+r|=?`H97Hd>cw^D
z#SXL;*)%oZL~Yd8y(Kt0J3lyjYJML6h48N^Qn?}6^$1B9>6v7xdfM|y!KT2Ic99D?
zk<lL+O+|XXGJ<Iehz5!GNbMt1i0XP8De-4jfUvITtSXZ)oMW|>ug6E%b-x at uxC-$_
zdZ*+?DmTTOBR%Bk+z^WNF3s>`s(hj2#S>P(5)VguNV^LnV|`r*SH1*MJ0F@`*Zudp
z?$=JM8~v9vs!y*zW5CE_^4$vX6Ao~iq1&+5#8de~aOGF%XxpvdUR&3D7{U at W6Z6Wx
zVAtgzZQmY|y<o{#1LqK)j{ax|{b8UVR1Sk(5zwbCiv#27m5~F*F4Fz5N!OtASv{w=
z`=jcUsX)$(RK6SRdI4$deml~0EVN$Rvn=oJVC$aM!Qr{kY;E^6XO<G(tP!<67n*#f
zfCUt2&Ik%sK%v~3Ou<eoI-zG_ksn`6#R)wvRTT8gl=V}pC}@>bQe;1}eT>O=)XQYP
zALY*XTt9y)dyO_utLxro@~`^KRJ&Io!#E#1Zrv)oiGcd;Pxb8D?hi;eJ*^dyo+y>^
z7ve`s1y}J?6;4;~YI{znda?5PcwTK!JijW^{ZeG~i$;vvp7ZlfY2O=f3Z!1t_8gUu
zI*<=E4+V|haEVOFdFj?4nsy1VH;|n5v9^V{akQl|7HXuMf#?dK_7F|rgxWinn)_B4
z6w+4 at MQ&nFtp*)A)P@<{{M)`gW5~}l0`F#f<jOwKG;Kx~q7NfW0&zH|Pnj|?RB-Zq
z5~U*)E-5T2EE-?dVZ6l`7MB(ll@^9a^9y2;O%GZL#70w2=zsfwNk=4eHW}y5^fH#`
zWgNKI(44i at V3iUL#=tN);NP^|yfv9qb4RSos?H5{W at nx=EO$h8Zr<eFoa6UANt}LM
z{5fRCDhP`B7sEjY;};lUGH)VS0by(Ll8jmRsmaY-m06uTqBCoHZYXn>A7gcH&a^#E
z_<McQ#F~c4n{i%!ok`8mZ-e4MNmD&}@;OW=k7baq-ppyaBi0~YtFou&7IX%t=dQ at e
zx+r5<ZUMzhX`XD-dEB0J2_Y(y$VVpcX>_!ld7_1aZaoU#8CaFQCaX8|DDo~KeZuSu
zo8r4HvnF>$Z`S18(3<S(+=5ks>fEBvA(^ic_o=y|$-+H?{vP>rJ%`_e+&eQM&Gz2h
zo{lanq5agiSsr2<Y_iPPVmchTmufJk&s6l#g_x`~vyNY<mzfHew7p^i at jy@*knPtE
zR)oU$A!x8Po_8eS`fhqthAG@!2R*v`boAFz7=3rVl+|vcH+Mj at EP~(5c*w%XQF#M>
z5#y$OllwZtuggrXCgkvY?A^L96Qeud2);j6+;r)UIq-8GIQCGb<MS=TA?Id}H^BB2
zjBjB->JLmU75Gt^7;XAS<ctx1U8aoulVkbs8az4375ZlhPbW{k1Mhd>)Vdn^x3D}S
zXB#C1=~_zZfH8HE?C%hsF5X`eK0Nbth8F)QTYW<l^b6?{Kffm!bk}y`g0A8c^c+)|
z?u1xFdxw9M8(q4XdMEDg- at uK_aw~S}vfP9?;c_L;oQCF(SbHhmjkX{~mL_7{L>GM1
zEw<(^(ByS#Nj}AjPy24(;_Bk!UqhMZPE=QbL6 at vL2*X9mThjdN<93>)a7Ar9=h`gk
z;YmsQ-pO6O?a|z`xYPK`rtl4(Dfc9Q{4zoJ#Z8~1ug*=X2KVCCw6(Ri)wM3FZK1U%
z8q?G)tEn`XqDGrr7g5-cACj)c`;XmGi!10FqKi5j+7?6`8qe-%YKxf*`AQp&l<F<5
z(NWdHTYUjxGR-N)HC!^KnXYb?O6e>SpGDo>$vwQTJjA_-Gdh}^Q?sz5g`geg;7-HY
z7t=;}aJg+ly>3N?QyP|!Q+uS5L)PxJ7B$SOIg##&b<sL5OWZl%aM4-GR=~9XwcHJ$
z`@<T8?0u3kFK~?61dov$1~|qzf}aVH40Tr?dKtmZh?V>{|L+q91A2 at WgdX3`Frde1
zLGbke$=LGT=fj2%dS{`p;0_M-7)J|^Sq&H)*S~SldbmW<Ydu_{aIFW~lW6Nf-;IdT
zpvbcq1R(=@ji2PeH!yC?|CplJ`jor;@cJNn-s8J<<V*m>tM&G_ga7*u{(3LH=Kpyf
zm)QIdWgP6Zp2sSBE&oJCugk+!h3kCLcM<Az%~Jfa79sk-N8wukZ#r;{4`J;5YH;9}
zD!pm`Q6)cuiaeEu`(XZa9eAq)?{?rUrjZ|OXA-Y`YvO%K;iJe616=EkhLgqsKa?Kf
z<D>rgQobPsgN<r)umVEthMHI<29fjvXB8S;)>H+TvF-}<)~Ch05c{vR at FMp2S@>r5
zW1<fRJoJ3?KMb1WzlHrDDqM5|D1wBN0Uyyh{3j_K^t{CEEmk<f$hiJSg{SCqxA$lz
z_b=^A55)Ve)Fvv~B81Ifg~?4+Y4%Me_H*rQqm<b_M!T3?ql2A~@UZ=i7^Lq~cR9E#
z{+*37b{P9k1E=oC`rokOippgn6;7->*`|sCtmnXtq6cML%D&jH at O218M!ugB9{q!a
z6WbMjHUg8;;n6QhII&&fPdA}c!=p`<aALc{FGv#}{h@>t+ZA5gHLX9iKN3#t5MgK%
zhR~zU3ifmgA^W9$6k6d~B>>xxaHh(dC-jf at M)Zlk6y|Vx5WjA#foJK)4*(m`YBP>J
z;Q4XGmr+=gel(KG<Z=8rC=5<J{b9nOqADx=T%H=4NAF;ee#|1;>5mbH_>1Y$Mt<9W
zm<Gu$;YAPU5 at zJL=w4*`?eLbEX8*mB-wMB;<&Q89`O&{i{E~mG2}ArgU-=Ecy_Z4c
zrXa?Am;R at dKg0zRV_|J<{r?ZWOeeo=Ko&V6KZ>L+|4#`+y6o~JX9oy9kr*R>v2P(X
zUHl_3=p>`#NBbk;1izoKbo#5{^xOKf{TrEQmX!fj9A4rhGGlE2P+|z|<A$I13B#}a
zgyA<)c>4R;@;^v{)79UiH2H^FT+yH8-`gC2k<o7QUxf8vn1qZAvcib{0f+a|<o{(H
zK8g4)2`4zd_t36d+3zjq at F5{&TjUowp8|rX9sVi~zut<_4u3EOOjrIRtUvi~9z}6r
zoG#%-f9c|eZ1qgIoGa!bgr#dg(LUI97vUe_C7Tbp9RvnrCC9W0>B6tzrG*KWV(jp3
zF|*3qMl;=otw)AJJKOUTE-eWcn at umfzUQT2ye~WcR~cs&?SUO*(t>Y5$b>cww!Oav
z7{(nKJHU-^F4)Km*rVuyZeh$~Jum3 at n)ZKTB-ru@{yoSG{R at N54@A1LKV;~Jw0lhM
zN5&3-+d}ic`jqN9yu@$z%FK;)$MZ)F+I1rPW`bS&Q)x=sJA;(zy)%*C^YcTI?xXVi
z5lf_JHmzXOf;B<@8grfOnAvm>5=blXOo(8;*elXKH9rR%HfUP`youc!okxSC7eDSE
z6h4kq*hYFxE<{%TE!g!wl^9vNj&%PWOY7Yanph;tWT>h6BP at 1xJt1GB?w6{2O8sP*
zX at f+J4@bH;G07WmRR{A(-nWAODM@}TDD?^IO|-$nz~QH>JCDlG#Ks`W#R*7I at Y)9>
z!4tOmK~bI)LH*VDT2ez^Z6!$>>?$Cg-Gf16g2vY>XlRE;U49<aNBdnK33h!zWVPK-
z at Yay62dl)_c5W;(@zqt*UV>oPQ$(7YMxSkU&$2|unczm9n`$}zwLNokYJ1A+y0`nn
zBSTXus(Ys8)9aOey|-<rTnW~0d*GvCJ~5i5L at IoJ5_JK##>}KyE6O4*kqJ}Xlbuia
z)z$A_SkS#u#p&<el582+hr%yh3!M}|Z$-hbA0mOOs7e8-^F!A5H0Kx8^_l`!TiKjn
z)G>1FqI-}Rb=@BcZS5p_5wDNXK8&}5c{TLvpOMaob4(L#WEou8BeazxgkqeoKpTD?
zSF3C>T$oi(WaXprvm!lBBkFq3&Z({Zd;H6?C#C0Ps!|=vj7cdoiOh-goE#yts+8QJ
z>LyxB){uv5D>ruBRNZ-ges)H%>ssUsic_SgDyMUKC?h^6bzewu<((j*?NR=2r|K_P
zM`^zdWu{*RdD93o@@cx;TkUa at C<pE#d~GV%j``q-T%SqYPvero+i|L+ew$_Xw%l_L
zqL(c93+ljel;sKiWJP+G_eU~b>NzLW`GmjMYaoNBtc+^?Jx?19L+v*0A@<$*8PJ{O
z+q_FH(mf^TG}^J3+_LAlpML9^+_6`b(smYv`wW-P`|_x6WW>iI%>`<s*>k=osnL5*
zlu4 at WB9w|=&kZ38Ro8RZ2(lvGuh#W8qkg|p*F7%3wl|)iv5~5}hwXPcp!eln&ojQq
zMyTZH#4qxzt!T?{Q6fpAu|!l?xuvbWuKUj@(42WF%Cv8?G+&cWp;ElLEhhB=6``*3
zjbPUisIHW-yhK|)updFbJShq8*c$OGS-N*m?%>@W`W<quw)>$(4vJgn4wXlc^?VC6
zYTVvZt<ByX>A7?@L2m_5z4SJ`qAi<y)BdtY---msJVMR*0}1`_G(2j4n()XA7=+*8
zJC(oPYiwx24y^gH5Z1kD+GJ)&OG{JBq7WRR)|OC#7n&RLLMKGd3r(p%IpmEV=E0uQ
z(6~6(K5>{A3e|b^{`jWJUZ`L>?NzR8ZCDVhUKVR>SQMKW@(wF3Ug(VrdE}hm(B9NY
zi(_rXf8xZ3rAuQi3(O at 1B+-~LV@|1_Iiq&QbaI)P+8Z01AxKkuDAs~sMJ^Z at iZ70l
zs4b0)mo&7U6{6MN=1{z8Ni4J^xhJ4Kw4~u&lb+V5_H#oGEek^DG&MJenpzq=+Cnsc
z*wzqgCFvH^ial*NOO3aBR^7}&5w^wJJDTG at -^C5fVxf)}8p+YmEjt>UNG#gH*3=#&
z{*Z2o*}+C-F;S+HJ2|n1&2J$5mr}abez#<8?8uSrnTD8lxgB^CeG{Jjh0bC08)NL{
zeQ`+O-95ao4}G3mTx^2-0%2r-;c&9oX4I|B^4`w~&@n{!W{x8FKQiG4-Jxcbi}GN~
ztSS>bbH;xC>uS)f=qfa}S9N)nA7<OJYW*+G&u?pdvj6b^gdE`e8SUl6oC3zkFh-GN
z1Cwt$jZFm+nInD6(9LDHrjz+M3<+R_ziaQ^Vxq}6lr)GTMi{(cFWlvswBPMA?1k&i
zo}62-27BRF4XMtp=o~sdcWp-2`0Qc16@<|~IigAIjhnh>=2Uu7n_Cn~eQ`W}7lnxR
zTJR at xI6WpVV%9ly)sQuT-t5b=E;l=qiZTp|S(uVH8A8M!$GK?j at tSKil%Mr6GV
zvg&<%Q?YMvdhWbs!*Yvg;~;GfObA%Za-ipdLC@~XF|TvTs=%7;-mJ?o>_9%40T9_0
z^uPd<vj;S`g?a5^sNDZR=H3ICK6I8 at O&!eBy$2ApO at mFAnT1Zp_a?92>xVpnIh7vZ
z;)jl4Fo4QP%q;o&X<pF3ti<Vrf_NUrrkM)YDa=xQB*gQ^5ghbgy at hdmPVZI5F+Z-&
zUyUbdzCAVm2IG=0dG`<F2#Ggg|I4_7^u?QMK4P4+J at GQj0KtS`965}a3c&W>jF(&Z
zzKlmKd?e$j2ihFW_;DH}_hF2mXyIcSpJm};#!t5Ja>f@}_|c3vS@;yjr7e=zwFb}g
zmJ7i4iHuvYcQW(ovR<6Vc&mjs5RN)(n+pj)Bon3GH_~3-WpHUJlWp+Nh-{zCWNAH;
z!~My at e=FgmGNq-Jxe{tmsUb-x56)#w$Nw0{i!3=C9XNhh3qDm$FDbc&@O1Is#q{+|
zkM<ts1HwmTj`BV9A8jqn2>P(SE)z31z7c$;!7-DQihq^xbn)U`y>xgsHN3+!@zI~k
z=UBqi(NA;WuDz&D4*FgP{!0h`h6Bf1Q93#Ici^)ec$Pyy3mo(}I`E$pj`A>%Y?woR
z%X`H^kHxoi@?#Ao9iI~zU(5W_2g9s!@cFp|f7gK at MH9;D<oOcekf(@j80mYz#rRSS
ze}??&_-rS9R3>IBeG_8)P%7AZue5}nPPn+4)L2Uhm#`Z5)TC_cmbWy+SlanZ-!AdV
z_>P&<O21!O9<QmN)ru{xMbUCW=x~x|`mRaYMVW?K34LINOA}u+(H1(LWb%Z@<;%mg
zCD-RMW!5RPr$h=%%Dw3Hx)Uc?*F~f49rL5L(Ue^jX?WAdXgY?bZb~u!mEd0~{!PF?
zI*p}nN;&?~u8O)TbUqEXDAT`6<2BB(2}pO5g203i8wO#+0SCGeZg_-!CMImLp)WQZ
ziVb~n3F%>0yg1y{+8(9PzgV=nX?|Nn+qqGkT(fNF3NM>!=FCY|w3E1HVbh|T1 at oJC
z8mwYkQwx1Oo=019P5h;_$2?B1)DvsUC(D<lA4#kY+l*($OB-ny?@r^GGHBy;ntU)j
zS$39LQ+J6I4i<`jDb2?2G|}!_IsN}_+bpU6Ke+8#Z_5c+*0s`X!qkR%Y&K07%rY|&
ziMqDatd^P`o)B9eYwR#bG at 0sJ<I!YBbF2j%X0<lA*EIRA%IFDHz}xBgq1pvCH8W?m
z&bGGGR+0$Q at Kd<BNKt=$<9VrqBz6Xe%V?wW^yb$24b9xdNFcv-hby8p=SSmhu^2_#
z=>IaJo^+XnTUr;yO!f29?gmf42Ygn%(x0%Qx?9^w{KAck8`>zIhNd_HH8m3&X}@?|
z4ZSIj)>8eZCr%osILuj0(Z<DRMHe<Snd&-gw|C)(i%5wJn%bArE^`$99qge_Qv)Q+
zOhcGb0n2Ijs<vfeYYBGnLxFncqG;B+?eW+W=lj7;Mj|4v#K$N1SEmtchiyJ&(ZNd+
z?b8hE8cL|B>3shf`@qX-CM(vqELO9`6w}?#5)^BH)~<$%E0|EzUKEYS7q_*Z6Qz2v
zD84vqegQ$R?bHlbolyq%$yF~nvxC&WfPO^NjQZ(ki&ljrFt)i#V9M5H*kmRoYmsB)
zdg^IugCjzpka|FxgJ#YQDza3SmN(3AS{4qMle at X0y*(N~cPT37!dBvBYT8oz^-^?M
z6CLB$(46=cAr0rvIS;azRlW;=<6Bln+%kd(K9(M#zku8 at z)R>6d<{S{!0|0BIOYXl
zfa5Dm at b3X6L&Ike3xa~*29ON!GI|7m5Fi<w{!t$`{E-%+|2^Y2{rd_pQuLWTUWJ_a
z=BBk8V}>gnU+==-|K1)fPe{>&kI?(y&ptiIsDdBM^tPP-ckf{S^AvxKKZVa(4nF57
zyi(D3Dn6JM5<YU at fi2HEMUS}_p}#@#pQ!NL6+QMC2|a#m31jpBwW7zIjnMx_;aL6`
ze2at6>xv%RJ%s)r4thD~68XNrqL=e5Z8;}`kPNI5^a%fY#%=mViXLAVLf`73|BAwO
zewm3!3UBkjR?(-_BM1H~g=_x5V;mOt6p5TKDtgUd?j6AE0~Nj8S7ysOoW5gWfa`b<
zVjO%hOCs?ers#FN5k-HHqOW(*pQ7k7TOs@#6^^z}@bevfu2uLXMSrWpwVaPDT(>hX
zD_qm}EBq+Me?KUUjIGZQ<Ir1(9+7{ngMN|&Ki+}QQuxt||MwY3yt at 6rS<xS(=<iYV
z=ojR-IU5!Iv5H>K?Fau+3YWdFzz<RQ2%c{MJFU-3g;y#1DGIMvc$31XDg11OPggkR
zQ(zD;=2k`ja$ghh;}w1k&1=9w{zK^z`e}@VzE0tb9XRGwU~KvyDqNSh+ZC?U`v~KZ
zC!ZdX=huq<1ckripdWD1%Yeh?AK>{I$glYy%{b^W1`&BKaNshZ4L&-(9|0f(OP7Ze
zIlsUkPT_x=10Sy91<4`wz#QbjnT?5e3egFFv{5jSXDU5{3qRmGUoZxP0j~KJ8+0(P
z^`QC7yuQs}%UMr6MIL7FWsqZ-c$5tsYXW(U$$T&HlNf`gaqMXkBjG?lTR^hWhr$3q
z+_?OIA$HsJ1qwfc-P!{EWCeuSjeO at O)*xt$V1PqMVj}DSjz`St><}Df4rZxu8Ctxn
zV*lj|m%IaXy~06X&;DB!&Q;1F*g^vXTFE>3W&8;o^fF#ARrGi#^S$*JF7vdfDja-7
zr&lQ)@k-uYr*P0urw2yHb%+y>%*Sq4^uT34_7#Pvl(*gf&6oMDR_f>V;4dfFx!k)H
zSWolGdDHZj?4P;)Y5#i6aoqOcB+?lWslT>LbLRFghe|neJ8dZcM`{11UzPbv|KED1
zH&p`<<Mwo`@l|+9M%q!dcc^>PMv3hTFYT8Ok2)>k#CC<3_DF|E`!3<cc7>lyv at kM{
z0Qu1mNI0=w;TIq<866&dqJ$IM6<*q7EkDMo5>9Ma_~nS4j1G^!Lc)pd3cmt@$!Ph}
z{!2KqLxiCTL>sEjTK3#HRHMm$S5SO&fmf9PY(K{Xj(NO94gJF@>5={xWeV}@K9Rg$
zg%HA{3^&&aWE{Cb>I!eOvHf8RYtoNSL76Hh)O{UZ=P4RETj)s_UVfvov+(OUyzZL`
z@=oUXSHYu<q+je?=^fm5_$?g%F%=e0Nxy{OKp5P1{{NWs4Pz~BEH!!e)5~=EU%?&t
zjU2duY_u~HzvTbZgdu*L?{<z~#*ai|jL0qi0dl01zn(jDW+UW-^6wRTlTLoQUqs}D
z{QJ>k%l`pknD4X8-#m_A=!wJ_ at r(T~q3Pm(kM*bH$2^jR6CC??(&=vn#~(7WCjZ%f
zjO$EzD+AW;V)$wfZ~sQFkHg#bMdTNWj-v1;{Z{;W1wKU)6T+MBH)fbug#32=n>qd}
z4lkA+f14xzDvp0S2ZR^%LK0r|e<OtlX2+jLd-!04-uDgm<E)ZT5?+3zwvR->_RiuL
zxynfI>GU^Z7v&FA_;mTVzQ7km^aSrHdL&-K=X3m$&n&(d;`j>%U>mZ+h<z4^_tE74
z85}-|_$~=2IOaLg#gUa_>N$KU1x?B?@D&`t9eyc?-)2Q9>6h at BPfb_<H?#h3<M8mJ
zuaxkjKfJc%2Jd-T<RJ4N_ur$*eHcA<c(jjp+eMHkztLVH0RWP*lH>l3;259&dP_Jv
zJeE+K+T%@)?f$O>i$Y1`yZ!%iF7|}-qB8%4>|Otj;NmBJS at 6HgIIHLc?W0XvK1Y7E
ztB?!x?$9gTm?KAf12 at JvsQYmLKla`RKC0r}1KxZ=6y$_zHC5ZLcGcu+F##1)ttODb
zIl94AP_b$ggv3z!NW(_3A_RA%IX$eVS6gkhw|M)-ZS9qc7gSIa5Q2KEfL3X3ZM1%5
zjS6DLhzRfhKOeiZn>|`>?|bii-+O+)-E-!dXP$ZHnP;APX3oqU&fRj1%je_pJ6=71
z3HOkCrku53Lo?30BR=bZV&OCOop<ej(6{3}k$Ktii3hPK=4sn~-*GqE?t6~=bo4Jd
zPS5M-I5``g?fb$N&n`JE at iU~6=V80g+VRObcKiq&Gu at XTMsho6>(uzj9&ElS<Yu|i
zP1dQ~uRgTNDtSEYZVkH|_gJGxzU@@(Shk6$;m&80u)D?XdFz~T&K7(70lQ+~vXX&{
zCUxHSMF)`p%lfz3J^km{IooV^kG*{m2NYj-mF;c`$MfH|<N4c}Qz3HdS at c_=2QE#X
z=gatx=i6Sl-F-YC+KCS2hTRurZZC-3_E;T@@xIHBPyY<caoTn;K1yb}J5i4a!AIEb
zmUJ`roEZBlqi>Yht~|*XXD34kxkZMXs*2?nJ?@WsO at WKTUQ2Op$6hN|4 at fOeO0MlV
zXvL03!13yF81VB}ERMRuk=F=di{lmuJnS_B?PV**g{QUH!G;i`?n21%E(G3=wvhvu
zDY<z^glzBI$ohy-|HUkx08A_bFlfim#Rep7t*dy-imd`=+nWdgcK{_fUt%L$;lp)^
z>&Fk9zs?E;+J1>_aC-4|K_^}deB at B^R0M|>*Q7RWiX>sZ?SgrB?66`7K*Di<m$*<c
zaxECZsp{TU;+XEka9namdcB83l>7!}?+zs1#u?Uvy6rxf;>qgZ-oL~wT~8|i*8~Q|
z(?M at BwTa6H_jbId46@X at XL7H%L<vz(1>vy!N}?UPJKi#sd`cN=NTzi>oXD;vrgB!h
zprF}xj{E1t7^D+=$Blswx4W|9nB0ohfj0Ln4xy3aJ{AT}t@}peFp>XKkeH18zoGM=
zJS6RVQZ~rH&~aZ#-1Q;&=lRh%jXN#zRL7HvsR$yCDnN?BS8eyQP*EaG60VfJCf at dS
zY~Cx;JJ_%tFzmi3(kBr%g;8ScP)!%vIxVuyTvKBEIdd&eJc8NTuBNW^_7(P)70EV+
zUCTwH$qZ0Eyd%Tj)rAk?v0bR~z~}UyI^<XMFpVDfZC#9gthL^iCAHpyU~R>#I6K_2
zCci){bObkU!pQtVZ%^*%ZaW&MgNIA|?27*D4!0jbJuJiTAa>d={bfh@;-7<Zars`5
zZTq*d`(b5lZ`+lmbT&6XOG?R41pHI^j*f2Ia$XNx_C5+O><(UPyRRoVJ8nXwje$wD
zareb=>D%`5_nF_aId}lDeaV&X)`179N8$J~Y}12X30EvGj#Qvtkhv5(cJRThG?awB
z<{%0h_F92?C<=+9+HN>h$igOOfH3yTAyrNJ!NdX)sz#sirf5TiT?$z8y9?>^r|gSx
zCb<=xj}DxCz at A9^hV84cZ#*7=;KHPR<Hz2U_N~pdZ#?QDY2SX#vTOTxahiQgr0km&
zdl`61yH*cQ4ZBund#w#rES!_hgVQbQLUB?!FvZIB(d<P9A!+uClZ}{aQ2cN+;$$+K
zy~sl5G2r4m1;_zL3#3Qd-ogfbP&*=|MZ+HU3~NS8Y1Ztw0x*!s6N0Y{h`iD)THAM}
zy{Mt3trNvzhK|>k%ut%(3(M?^=Q7PNGfbLaa&N`{jUexoP+}cy2<%^-uzj)+DVo|a
zaw9$pVH!nQ2&v7&DDD9v8pZR3QCe0f45DOmk-?;F`huWt_Cl(n%zBqH+ssT_%9mkg
zxQBa5s7{(l5EKXE8x*w-6{iJcm`+)8!*q^@h-o_S1z}h}a0#<1xxCt-Db1qd(zK_N
zV9Fc{ds+ at +Lcy`)7}_vHP&^!s0E)Lo>7FPgjV|`er>JK!xS2T!gIkzb57S43%V<Fh
zGHSavi@{Ap*hIF_96ydNv|w$OS?KTUsv+|tw;|QjA^U;DXpyBoaNKvrS0daG9-)hX
zZ?2>tAyKHdL8H0A94$oaSX_opySBSHXk#z49sSU<Zd}gxAN?@L>flD5Dr at bqs!nu<
zj*G4NTk=oEcG?B!ReIRkeQmLWEzd>BD8L6X45<RQwZJUI=OM!QngW$2?7rH687keu
zi3n)yR~5nb2^Zp4q!f&zN0b6}(LK#8vE!9s?OM1p*9OCI48%Tb!5d#mIfA!a at C4q5
zcTOq`yH}M=RGigRdNtUIEx%}jyI{)YXJhc4if<t2g)qL?iLW}0w2|whY<n&~YU0g<
z%D^p|D{L1mrLj5um&gm%TpV`$jILGs!SwWA1d)LSA}l<=t3YGmI2rH0TD~K-(|;1=
z+>1}i;PeFY{W?xH5Cx|lpt(wvAt~*Q9qk6Hk(R>KiTMoSAoX4;Hl$_)4JIxICj!Jh
zuE;6@&gFR}S)R>3^i>zz at hOG!3=+qE2A{t9a2nOeuGnJ5xbQ3NeG{F>)o`WX3433$
zy{YJ_-wnHa(0Tn%_>$kDklZKHKtxw>yCd~R;E^aAd|33zkYInfbhrIglycd!k at i=S
zrhUmgblY>p`3_GB-jjWNzd}4hB3diX03+zmI>%5&-JOsuYQ?CMls}o4(Y-38{EqHx
z;KuBPKVer~UL3&@Eq|8chb+C85;RhXxTm(_EtKk6lqzzBU`sVX+Z!1IZ^zb_zU3^3
zpbsvyZr+CyARx*yqT1aJ?%Y=qD(|+V*AxeAt7emJRsSA2Cg at fs{Rum|tOR|)dZ6N)
zCD3v at 1!M6A9rz%7s0om+5^dxVEfwVauCpALjybm at DFXO!UoyPf?MK;KC=O&*-fhZ6
z>S4v@!APG`UfZ)#-WGTyTf!9y+nT&xl^4}#)EvrtBxGrqZq2B)FQC$nmW={l%&t_1
zi5K66J!1K<Ee<$V%?tR!0;Bv8*%1E)Uv7D%8D)UN{f-I;{epc?JG-G+8!Z>66sLW}
zuPO`2VY|F$>=VBVqMKmD;NXiwG+x3F5eDLipqexg{Wfd_zg{D}K!|uteo5edE^xwD
za~cPjiUuSIG`W+)2-o!wz^Z~L3gxOtpl$&t4p&V$Q{4!m^}&4D?w>^6I8mG?kwZfd
zdz<`tQ316SUZw5!r^G{-5`LYqHEf*_t{Tm at BLroD&*I`BkPkn~Wf{2D#<3Gc<vZZs
z3kG0LkPMcET at 6f&Fb>kR*kWAcO$sIkQ32YYwJRRScomu?RL*NHNo&oK&kH`p*(NBp
z%mRnnpbfjdZC`*ImLE(iA_st45zz#8_3Zj$;!l7HsU at DqlSmKmC((!uP0N&OuL9~_
zj7EU-GM=+ycTyJacH14aOW(KS-x|csK%O1ll4D2TFSKGEBKmEf7h!Kt*gY at i+d1#k
zZtk&W6vB2E;cjCxqNnYx%Dr21;1@<;J%IU$_e6Z at KD%dM-r{4Bd<T!4*nz2q0!kmp
zPGB13lAcXnnAeEDltTo2d%u0iHll4q;vEA|i~6H3 at vIecF!0MEXE;%jy(uWoQ4T7z
z^mpj9imV%jiLBUY#l8T=bK=(xirJH0C|7R|Fi at _C;fUMr0aCTMzh(EligG=hrChsN
zu3k~D*HEq__JK7FDH3E at 7e=UF&-;0oUQXt>^SfC*AtqTy`+l|XZCSXY- at 3jepILv9
zbW*)>__h~(t6rz{uju&Bi=T25K3JAVcLXA-jpz3|(fx(iO&dfb!kH!TjnHk%_E51a
z3{^ydxF<7QvDu0(;Dhzh5uw^yJ8E-wAZ at XA)7>KN2SScTc}~y%d?)%kCVQ?eJU5>I
z7Zl|3LHreAj;bHOz9#FlZ#G$5`cN;Y{tkfOS~uK at Hipn2tQ-GTKK;qMVGW)zDTL}R
zL6wcJA&n9EP2xn<R<>MpbywG`{&@>x*xicAMZ18q9g}UludY?`P>3QJmwv`?U$o1v
zcy{4LP(9L)FU4t7MHhhj=v+K72Ydt$q?ya2p9?}bv<S2oJ%I0!y^cd$o^9Q%&c<;n
zcH7p(w`^<D3y%ASQ~F0K5N`9Y#mr2{8)!DQ at djA9KD!hh7A%V$9V}dGi#mwc;V>l8
z)RVJs+XrFE2Oz(<V23#3<QX!57FDumBF<ZRr~iQgknGqiDyHo at aGQrOby-pFDyCCh
z?DQPS8#v5~K8iz*0RIuCh}pZ5A(W)&>eui*Iv;09?SWW(Fu+#C`>z055)*U>x~aN}
z`RJphokQ9`Ejj`JsG(+*3Bo!YKhzJZ1Amm-g at cJ%h_Xh1Nd_)LfXWL}W=DqadReg_
zpq0Y<7glX3#1l?qYMY!8#-Q{Mc61-q@$)Q>`x=Zh%U)!cqNMOd3&T0mQX&h6Xebde
z0tay6*qwJH)hsHe7f}wD5c8G4CS>v;CUype0FD*<fHakbIK>Q at m4iwvdKM)BK6GFW
zQv~+rhjRGYJAAN?rB%KI at X>BiD5ED3==?jX77l+Urm&zoC69+Ix+CL&52fpdi0Zc!
z=u~vK4WN-D<4c688u$@YB7XD;Jd6$u+-SxomcY^q`eeuIn5TkA4gA3B$d`f9!xH--
z>BxA8X9sb{0Sz_sxR_G3I_l8>IlUW!a8Rh`&C>x0yB{Q$0wfwaSRBTzha*|rD+tvD
z5(PjPa!T2A%dXgN#kdyBp*?@nDSga|Ujuut?H=v<uSGQM;Z|0<v%TNJq_vZSkeYu%
z;n+xN*DD7p3}OG&yaPIkXy1WwJRc6-HV}B8?h0Cq6?+g$!WLt79)lbZ^)hW?ADI0z
zVyNFU04;eJM)9w>!(3eQtRs4ulYo!j2T5Rw`#Fb>`SVnN)r7*MJA!Gtq#Hbe(a(xI
z{N=X42-AFo9i?d=`93ns0bLP|`;*A$Q8Ky5x@<GTu-D%JLzg{{=l_JJ{eBU(;P-p1
zuRV|ZChad^o*jk4)IWQ!a$S;_bV<lOiQ+B_17gn#5p=MVANUVP_h&CtxaiLuA%+<*
z4?LvpT$FZo*UR?y*X=_#QcNH|<K at IQ)OS;tqP<Da-#fCV5*}mO<c~x)#(;wLk1z7o
zqb$4NV|>wZ|4>`{2M0}b(Ma&vd#Ngy>Mov-yza!$9SplW5&4welR%%?gU at F^PHuW$
z$`9xKLE00rWcKeH+uqvSlM^}Aj=p$+l{xYWhw^dAE{pgF$cL|W0ub`kkjdj9kM=ZO
zz?!TvJHCw<AY(-6>eCQ6cqtIyCxeQ=u)D2FIs(r_4Z_k9*a<G4ANVQzWmK3*y>KJ4
z+yPpTfBXKnwJdbvvy_O|U&^EEV!*qT=R7WdLw31KLNn;};{2oJCq`qTV)VxFp?jx@
z;WZkWjU)bS?`*t;!3R94oAK|g=9~v~|KVRB6aMZ~5BB6cx<|L at H1#C%ZR?&V?T5h!
zFUvmeNqSJ>jvky}h?iHk3kPZeR2L1VCy|Tx^VqrZk;~yt4TCqO?f3lq>tJe|todDB
z7-APx9wI{RL3j^M))mho=Khv_;<*>cUP2BFo^G<PhWz+zf>ti*1Kvwb);AIN0aW~h
zt#r(OhKQafYvE3)$TK`VbLm#NYI*XN3Rpvx?#FAN$Iyg+qa3{G0}UuS{Da?cYl|J-
ziCN!0R_uGI-{=FY;Y%=TCH)u~6<Hd6fJ_s-o6IZlmC*-SCW2WS4X%qmz at -iZcj1+-
z23JHM*o~!A1oz=hss<k)eW22k;4)N_29Jn7(1pb<@KeDZUcx=7D(47Je)b$-mF(fG
zveJ#{uW}ZRu{~MY#<=0}AjqMEnqe=0lqzC$8B`!Uz9Gc-g?2m^3i93?3vuZNFFu#)
zXG{t=(@kiwN at F4g?@S>Yoqd0jGkgIP?kZ+RP9CRN+?^zjK?O<3B%Jj*uMl}G)_LH$
zT|axPJMqXV?K1MAm+MlwC)n}(L?YY8QFiWqA&GfksEa9hNai?JTfrcL51}0G%oIaB
z8>1O?*U%R$mV*jTwkOI5y|~OBV|NS#8%k<9)jbwyweD-O_xFy)Y}BIzBf4t6*?cYc
zazspGmWbJsT6n4M>lkG}$5Gx$J)6SmhuYE)or*WFJ5rpww~VdFso1>qK{3o;yoPi4
zpobS7FSo5ms|^WvqSoDy&+A6M#t{|XonZuTl0SkkMb&6cpd*_vz`F~V_Tx>475{*O
zNPC-s!ItH6O|mE}Yo4=2wQesa;F>F0mvxMUq#JPOWtCzaY?a;}ssv!*FxsbDZy8@<
zM#7j2MyWCNTk%H>#!={JG7J5=aOq#{ih=7sn<_NQv-BZ%Cx-g#YTXY(i|=;Y?qiW5
zkBC$2T?e9VDC+*OyU!pheXV2>F%m-&Ujd6*iufeJVh$k8VZ2bZaJ&KYjhn;q#hCkR
zfF6j-<^;_Q0PYJ7B8d|{fbssnqojDkahX&%zPasq40C=EY^~c?BAN?)TX at 6!Fhf`d
z*YUnk3lL#@?h{gSdTSa$3<=(YE7QiW+Sb(dzx4(x+}+~1)C?=ek3-rOM}#7Wi1Ggf
zSbQ<K<%AF@>vvOjR4Tog2q?k$4inKWXjElJQ<D}zo-sS{*_1z#{LXWvM!fP;?JdkX
zKNOx#q@$4b9-_e9XqPmA-7|Q&B#u>mAM4RL?FQ^^iOuxX<QbrPG>4aLtBmtMHF)5b
zRR6SKMy1xVbe)oVW|iWdqg8sRkXj;)ZeP6ZsMw$JrURtKM0KtEt|&ud7f`LWc~zY?
zWr;>S(-N@$IC&u*Nyn`L-<Z6J$%=LH8W<K*%?XD+Ro`AsFmVzIKm^bPl$W!h at mOdj
ztH+InIzg4;)hgV_FyJB{iOOtmmCZQsb~X^(l?_Es96bYDE at r)Bg;?Vure{v!1DFzY
zF#A!$6swSulSj6PYIX|gq6iE1K+>9)ZgkvdF__8^Tlc(O>%M0%-^bdz`dU$wVNcSq
z<E!}1hbpm2!S?PHT&DCPTrm&s>yhkOybYpcHRau~Rv382(FtiAp6Xo$f08H1eM<1;
zl=eD32g$}hzLM>nip4FgVme0Xs^QprU41AHeZ4SDw0CZy?crGD6``HT0FDsWij0nl
zSzKX&A4k9DY=A8k29c$)Dei4TmQZ~pVtBU-uT<e8F{cp=ty1AK6<)2vLX}ZX_p5M=
zitkq8E*0LY!mCwyn+o at faCNAKnHNE(<ZLkm6GQ-ggu?7roOLmbiWMBger^Sv*A`hA
zp)>*)I4c2Xd+1j<R459K=~*JAVSz;&uD&8%lniMK5$44-K^4bRB25va2(MJ|ZibPj
z#7NVi;#hK|Dbs1%6<kOFX>23SN<0I%PT(T0S;Ya?qG6pWSeJ&aO2Jn15lOcxknKUZ
zu$Z3*Sn$}VBf$SoJQHCtGUz9qh2k<Y3Zflh5E|6 at crHW~FQBuo7#&m~rYvDfz{*l+
ztVMiy{?3q%hkm97UNfGBbw at SdFP;~O5gqG3$R@)&=9?GPE~0tg#ydDIVb|HB(|g6t
zt{p*M;Hs04Fg}2;P*7rY8PB&H&nwk)lY47u6`p}get0oixADBwcn-kb(Kv<bnSAvD
zhduai+(lV!PIbfMqt0nSrEmcuR1Ih#AeaKIX$Nh>Dh=351#2*1-3r!j!1@$yrG{~K
z2nP2uHunvp!X0lIBm_TXbwD(Qt}fhAT561F3|{+6MgTMe1)=|BLq2tQW=%ARLf#kZ
z);Zt<^ft_Vr^-2ic%V^jL<zAZrqDTgnBhzJ4CdP&-COG(EQUi1U at p^w!d|gz8QGu#
zivfT#k{mpe6EP&bQy4WotPqNTf#D|no at la;*lLwZn9vk<@O(wnj_$^5r|Cyt&4NA@
zg(ZZ#Va*Tx*FONt^&9jynAUdUOY08SK^N~99x~>Ug0<d!vRDmUi*#6Vw6sLL2mK`n
zA;OoKi+9uRn|z;9X}iB2_)OB at t@Y+{RavB_)@y^ybsb!;_s~gd=M_iv<F$zp7K&I@
zTYA8$c;UK{SYfhsvv at 1D_~EeoCWyd+d$Vo5?d8J at PlWMm04ATA(ZN0mY=pgUp(?(W
zK_0Jwc8M-UDx7>1(1w>|gM6D;vGcmoIJ(-p>D5B{dhP|>y()U(m0{#WzpfDeqr(%k
zH>dlhD9<9i at _L=Fsqx-zNO|7MQl6wkD#}yq?sD*UQ4|TjX;m14f^)_L+G{HgKv3d^
zo-7IY5hW3GmK0d3BvmNM(tNy3o1lF~)+YRnTZQL?6_IcisdAO5{{GWnp`+MM6s+-S
z4u-wOB~@OfZF?(3)2DEQtZN)1Z^hO^l~TfZYT)oxf3N*?ArC1G<LxRx!H{0RA14o3
zK?o!%jdLgsDGF0<Fy at iVM<9b#ZCdf2WE64`Ly#vBkjn{Bk9AT5+|A-0JxT`sVcFwt
z at Y&i>{^k<MAQ*O~Z-uuSaMHhrg~#HpeQX(?#Ol9xI5AkqC0-1NUB2?)5L%5U1TUSw
zRU}krv!@L7v$6HoRPxz&YiyA{->E3q{4oye!Tkuk0^YCH at eD@l$~TAa%=*{gwSaR@
z1DwO!M9ZH`hX-peKogKkG|PFFZcSJg4{b5ovO7xQP7`MaMjwUtnKSU2hR2Z$8#WyW
zysf|>^-TJ8-NGW6Ugcp$K;Y}h7^e_~SNR2k+^g`WU{a8a7D$KAMQXvr-O|Aj!c}sV
zKI-e(T_UO7qp9sD2=6vQtx{7fgrNhqIxL?+`@1_7U>MZErpeo-Not;^HcwK6ouAa8
zsg+1-EuhvwYC%OUm`?3KQK6EzGEMCTg50Z`!}0a)s6I{576jL`gSK4}L$Z~EtjXV3
zll(o&*%&U)xKQx-t4<^h$JeYhh&D^2t0hs!kZ8jYq92Nh9ahL+G||tJU-wt5m^2>k
z#!YkDDT!`ljJuvOB-$>BvQ4Ln^UWmXYc%BoNqH;N$D at 6?Y09f4<=u>N*E5EcR}NwK
zr6kcKG|_#0aDPQbg<y-JIV6hyjh(L at Uta<UoHb~ppe8WfXc3^yg6^6%`d93wsd#-u
za{OVk9{(A0VM6NnihBH2kR;-3X!lf(>`{?pog!Aqw(71Yf*YMcY~;YcJY7&icSV~B
z>KuBdpzIXsAd|({FIJ?>B<W^Bx`DuWlmX^YBI0O?((2=F5*OJ_X7 at _<IYf%CMWkOd
zh?^=1yL5On8-yQWyK4$jFof?G-isSu1x#zLbPW+(gjh at wV<v$)_eKK<^XiOl1tMyK
zej`kbbSo+5ZUB0t%#fEG<*D5CkGmv+Vnx7qquW%>?TE2PukU2gjqX&?l>+*!+a<IQ
zH)|b+Ap*K)HG)lUv>!KEvuHPw;4w6D-SnS+PY<jo)!*<<f>((pPu*>QwcT4-V7`1A
zqvr!;Jl07u9-Pv20*^(vU5_Q!<pO);pGb6Sp?Yvufh}}!Hy(r}=;H#jQeeWCqHIAt
zLlw(#BfmDImRA<m at y=CMe4)#=TK#3)Xn^JVaNE0FuCY#E3RwrS>h<ARm1o5onb`f)
zz{7g@%xMQ|X88`b9K`8)12ONw7=kE6xwJ!Kq3%Q!3bztbiFbFA6)tE(`%gLu at C^n9
zO{{(rz5zr1pZgPW!=WOtGE8B$gFx7u6AXLTl)xHS3YGlhUM|7N4<)|;o-CwOaUf%z
zC(5OkfWIl2N_+*2kRcCtq>;nnJL#Dc%olb%2?m|$qdE5S%@ky9#b2%KR|}@mKm_|@
zO$_E at mSX;%Js>)w49O&CW296#8-t~0dZC(@2xeo>79=*v76=iwQwVsKIhx8aff}P1
z;j<P31VC<!lPE=*D6~#QX-T5=6Jk<XDNtbT%)C}-Vzn!*ttM7iCRT&O>Nc at jGO;QZ
z7X6VVUleW{UqOYn+Qcf$#0n^^RVG$ZCRQJ{kSb?l?IzHaM7P4aU1C|WZxqU8!iFR<
zu{6oX%oqOc3bbP&TO9}AV%=|0Gh=FoOIMs|1IgsTqT=>@+hvj<bH#)*208bMR}HDv
z*6Otcm!Y5d8nN#a?<F)sVl;ppzJ$Fiu-pjC{9n>u`Qc(N5nl-s3hws8>KtEN`YIP0
zVZx8A-M;%e^jfa7vsNrapxS+}2Mdj^!6O?PoLe;?Cpu=%n{r6=CoE2oZx!eO6%I_+
z_ANEv+CteBdY#S4h)()#6emYGc6>Q&8DD*x!LM@#t=RRXMmovVZR^bM;b4~a7b<K_
zwu&;PQgmgcX!l8x&Q`}9j-esZLdyS4DOoG#!2N}Nt-K#E_P7>cGG3u89N?A+4FSJQ
zP=<gND^Ll#(-Nc*xpKN<lNIC2fT|4;MLUL|)v}|d9$@({4A?@{;aMR%@-gnG6YG$}
z?mM;aTLYHFul26Rcy({27GvI$aK!-4lr{NjzH`7b=cPgImZPSRc1r(LTk%Tf%a(`a
z%a*m6K?O04TlcoDv0*8(R+w`U_z+uf<U+?gA72)G60@*cm5z3xMlhKiuF97Q!UiLs
z<7(aAPU+U#ioWYUpL)fCwFK5pJc+5=?e6HtMv${Y$-0VEf!GY^%tZ~6W=I*U1hteM
zcM)FN%EhBL*CkTOkXy$ykXzy*Ow{XdU>ToTf_mKJQ`tJ7w%hIaG^_+!CdXL=cVH<?
zVpl)=h<T8C<}y7jaL1;v%ywfg&U<$c+s%ipNNdGk5YP+s at QBVTaU9;<+TN{Vx{P!1
zdLg!QS`w`^@$UQO-HBx{K_jfSHE?qlLlF{d*mJr2s-mxP*+4g5)Q1n*$Ejp2QJK-5
zxHF;AClw_|zLN};C2Es_XczcOocz~hWJ}^dlaZ6^65mP&qIJyj_gGn~SfIuxu1tk@
zlhP|mN>O$XiS|^OW;t;r!l~X4#TQKzZpli-sy7goRB|^;e6fg9e-%-8d+UiS*i2DE
zQcbB_q%(X9!AW*X#7+DWWz0&cZwMupF*_yVCSLQS)GUf*^27?vPKmgQooRAPm2Of)
znvf=8ObEvyQ$p7^B!)q|vK0y~NWSNhQl3<ooj_$`(c3-*g6RY>2Fu1lFwwu;B%t3k
zp<>&G5KUop2}l+)Vr-gNk;aOlG_njPB`RrFhQydCadbunY4d?Kl?IhbMOjIlndqe(
zm-N+)A{7s*Ut!O)Nk)tY6Q{CzI74d3>$-*JCJqRnk~6CDy89*QL4fe$u2Xu&i9IhP
zQ8s7d-dADr{$04Q at cbdn#DmZub`XhsVO<0<u^i0ZoItGFj^OufZdovKhJGhd()5Fy
zbo_8k`hWkkoU0bDda`R^zmQzn(RPK9h4 at n*{c9p1x{nmv8HUI<NrdD+g{%oIft2y5
z#3R$E^HHw(`v at G2rlo#nkQFa?bsQN_t$1%MNa1EuHn7quiy??er<+zvv;U0!#fpFV
zLMIvMgdQaW^h;C#I-PuKPCm_0PeWGP^ny&PEK5RV0&xf<Xez-ZG3``f<RoGIs;y)*
zF&$2t04gnzldE*)xt=Rk!+wH_ZxCxb1c}6PNn*`lQ_s{6B_==PD$<BQ8&o(ak_>R*
zl?-r*B?IaunFu6)0l&qpvxEx(vORdmaXCko!ae$N&X00d<>#!-E9lD4`D0$eo%uNs
z`*lD8&Ivii#}`b^a|&=&^S2A`%?bQE2T8W`Pa_Gu&*mID2C&C-3-;wPxx5bEF*>L4
z_<~ac=Sh4*58g2+=kkt23sz6h`%wwNzp)E$n3lK4F1UGG-WsRi at o9N~bqb!HmiHg$
z7DT7#y?JiI*6DdaJFj5F^t at NkD|lvl-Y>!hH&4&&4;S1%J#S at g!B3~>+;joRY at Sx|
z=V^fh{IX4ov4eN4%*nYeCtfh2cXHt04lVfe<iO1%3!a`FxNTIyz~r3mMFs082euwr
z5S<dZulR?Dyf-;;;FN-UCI`GziL~d`0ziINUhtF2IlnoJkY9e4knf*U at Z6L@-#G<O
zObPt5vfz;^fxlK3teFycxT at e6QvwI83htN^=$=?`^OV5yNd>n}4m>fbz?&TSUNzG`
zQ(bVdCh)_WVo;M}I(WzDaz at 7}(7ibYUS42RZb5slile+(cl>6m?LE?mAg0HJw*Vg*
z12y at a8q$fWOrUHdra}?V2FglFWwn7Ko(+_CiPB}Di02f_wdi5sB_Ip#zr_ps7Wola
z+q<?BF?Bko&Ws5nrcB4+#Y-~HnTWvXq&M;zELJPJlxrD9hr)GEmu><V#zlFEt&rY5
zV$2Q6V78=6%qI~|&nNwD=M6-#4*!*bjd;Ijd+UWe6&Fr0nW21zKb2xsboY?2 at COu%
zcs5W(ryY-qo?4-ZX9J~=eEzSl$j^z2#CCh5E at P}7vF6dNQc<7y#;@ak$Z8FHSK`If
z7qOVliuIs{blKjoL_MRDtFu&co6wt#{nK at nFD6HsAIGXA!tT2RSfk4E?*G;EKeEB1
z-J#_!-;_3M#>(rcMmOVlmt#ul`N%jdC4}?)XS?(Tz2r67zExt8rU+>Uu#%hgq!CSB
zVSS3e%o~pRYn~yo2xNQh(k+S{(rvoBaaLqO>sP*_z6-)M<|Wd*yQ?n3={9FoT}Yj?
zI#vP$Te`5b3-ms)OR at O|8=@+9w~kJ-q34&v-U3V at o$@YeLdUQLOsHAd8)tjd at Q(k{
zaOoaQhAcaY^BNPw?w4wFUU72Xz=lScnps6d>2W)c8fC)xg-iEpFNJ2Q5^M?JK*F3|
z(q+WAOZdIuxeI2gPxDCmRN>r>=j;dJX7I9-3)8Xfm+dR;ovPNSic)T~VwGrVT)WIy
z`Fq2quVdB*pB85c<0H|L^t8_5YwnH at 04aaI{4wr786J*Tk1nh&{p<Phvx1nQ${)>A
z&%w&srFa$3FI|T@>tO6S<pPBU+pUGia~)hoO!r6A_xQ^8xgHY}yp~a6TpXq&B+Y|u
z+#Wk;)4=tr9lKA7tvG5M4tMu<yu1wh$ansjB*FsDQaykj85+1z*B|zp<h1@!tX5?%
z*u=8ccAvl$)=s<UFL?vsu`#^SU+RXBuX4w%;lNLmU+PAp9^0C-)s7$gTXL898Yr3d
zL!i2Zefz)q_#ajus!6E5$&1<cU7UlFxm}|=)Qr6v-0z7cxLDg0;f at Z@L&HL(R%mj~
z5|=AI_~W){>7Gl*qs5?2eWwJ?2OIXV8iDKP-FNKLr^V*n$Bt*a!tq_8iK+XI*7XYy
z2ZWmgE13o-E>u!^I0mbP8-w;bF96LCyR$j47mE_Ga|_Eaww%D_7yI$fdo5@}|E-Sg
z0Kv`_hU3=;vE<?;yqIb%K_W1~BNygj<pik6<mV at oe^V#FR3=A?NtHUejpUFF7sJo1
z6iW|MB!2%T&A~S`iB|vu2S_!kL6c|(i54-z4jQllSa6V{@!KSg!!!+&1q~z<(>jXG
z&pIiUxLRN!7UulAoglT?AVu=tB*~B_`KTcI6OvFX3^dhMlB#fmT`>z7_I|yRcqxK!
z9;eH>2~R at O2k{Vge<D*yyMeC>ZpAa$+{PQU1vdBBjMgg+QdB<&=4Aa{uBo035U5HL
z(LN;8RQpLHzJ9l)#2C;Ow-mt-k_7h$6`P02ax=ABRUioBCHQ}ElmUwLPQ8vI{D-}t
z1qpM-Y!b-Rm$gQ(A);DokjiUYGOu=>*GrOl(opLOL|$IU1VE4zU1j89GnBrZ;MbLm
zN)dk;B&B2y*TlEs0g_>2MYVx+<Wd4qZIM))adV?GO06XLHDN-5QyKg at nL+0lm89O5
z83;OYv4}wBvkJ)}uZKG2{b#r1Zoc$qytTGtD{k05`0LfU<E27JH||3h5p>8U0uRZ-
zi&&7Lmko4mV+y$p0TY at c<aO+nWcVtc7a|12>*zy7Y9)aPt?TF)z at L!CCb?t)Z{j6K
zdgZ{u$TVsLD2Z_o_HKF?V7<T&t{3p+dV!7RdI83Zv+l57;Co~PXyVPLD;7v#@c at BT
zsGz(*R7NDPqY^g?LM#BFCFBWZmCz^Rp&X1y0f?PkCxFFXCD=8JmstWC2P1~#-^41k
zD==RCW*x?9PW<8`$Aznw$Ib1r!?<+a9ZomYapAprlL~=>JtkA&Zk>$79|~F2EjTvD
zaW4)cI>-f$u at gnIDFhI=40r77xVR3_SX($Nh=e6FVHp!vBEFJaU1Ap&F~2DU5V;O_
zEC{{01<$Z}=fTKbRf)v5OkBsr4Zvv-Z>_|7QV%;ifK4b<wcy^2do#^_krThI3rX#`
zCvLrynn?%;KQwHa)PiKUwKM3c$!@;O<Pz0l91QEYH>x<ML`V?uqMb6t8*_kkZd=Xg
zxF>GC0s#P4NIPy@#Jd}2wUR(jy+Xmt2<9{fJr!uHC{jR35b~m{WQaHMIxl|PHax-*
z at P>xK2wuo&C2m{9s~Bd~O`s=CXt-jx75iL~AgjPkjZ6d)FS?bX_|3Z|kRe+Rq{Hr-
zZiadV3Z9Sw(;)55eYn})E#k&g8n%hrzfFN9t=o75Qa^6sN!;S=O3;qHTZ- at xu89vd
z_W}&|Mv1~}i<pH$qIJcL at I2nC+}lK|_$?%X%||zjRNOJW0~=DnltN}SLcH1D`XFwe
zH$lK2VZez$QpYGXGTwTl1j<~Q1W6yMWP~S{Z&kTBGc77tB&vAQimfOj(mI7iFhabA
zy{L_wx26IAweF1!)W&aIj2jxb!0#0pGB+k6S~KJ2TuGI?j%n at q8j+~tJuCJvSnmav
z6cWJ*@fP;H7UH^V80W27h5uUjX2M`If3h0)En>EX627GqLEP`S9d}p|x#X!gN^D-p
znCY#xYqsJB;oimsRh{b?^w!YA0{CO52C6i;Yqm+~FPIfXz#ycy6F2U4zp-0_83wpd
zhIq5qt?9?D36yw8WPs+2M~U_wg6!50GS;@{Z?TSy(tK9Aj}QbQ(Mpmw6R;RGgpdcp
zs8 at mHF2!`m8evsa>&>W2z=2?i13 at T@sh6(_lc_rj)I4!}#bPZ=hqVm|GF}&y_eX?@
zB`4Ap%W15N_akC4Y!Gd)jts*eH4o+!`z;9aggbx@%8{dmKLh*{;-_Y`;N$?S51HE)
zgT51!Tmc0OEoUcFiG|B$SDY0Rk*i6>h-?=`F()r#yV7GZ4OxMuzS$-r)j2!q6Oayf
zwZY(~O+MmC9xL``E`?+#vb?vB;*?Vwj$CZzEPqr2#nP)3cNN%PYju26ykQet*QVn%
zwfK((E{6bT3};#DaQ5kJ3>@OkMI6s!@1y9)u;Kwr0<dO+R@^;Y^e*e5P_~=LgZ6+6
zZt#HWIg6NOwtF7t7kD5TR>e3NB@{v!fvPRQMWSgzh~A2A77J-7VeNoeE`yTFeCm)|
zBr0JdlCZ_WW5lZ at jWW`x43oxPl!c3P)ewhte3^Tm%|HW>N@@WwEw<c=hT}%Vq2^i)
zohr$Ytr at B#G1Lu+y&;J;Fg=oCt{4x+pxErhSIE@~@moZ-N|Gq^iclwcgzJn{u~0h$
zpx%tTC~ga=-$JO!;7l$Dm3<enB`MK~i5?ZUOi)8+QnhXoHy2AwAb4iB3X~iy5hO)Y
zSjjs!xG)*7D(oF1Rpz>qH}+9~5-UzcN5(Xgrd(Wr@)g?gTebnUHh#BU&*pl}1q8Zr
zW2Req=Tb!x#&#m!ktxx5F;f!7YJGSey at jHT-3T)`l17nvbFjptPXs-Zti@~O-3-P(
z-fFRMwi|aQ>gOFf5RDgeAO%qJ`fv+#$NddL0Yy(q%7T=8i at b>ruL_ikMB`sW8^EFz
z<Ni(+7u5#vREuRwBqzrUP8>VG1m3NoAn#y+jPN1 at qzneukcM8p%;jB2!T|(d1Tza^
zZd^~^ZXuy6a5n*WHL7s1D5{b{HLSRWaZVgNlXwROn|H`tPy`dC!HZ0gENb;xD|T at K
zNr<kL6s1*MBX1r_RDo0j?qT_wz`?7wW(Hj`)Nnn<QLh*C4hk*2V}lfVW7$cA7qcZ<
zWQ(IwZ_gK;lM*R1F$yARxGO{k%y$*Ql(XDp&!-Kc+Xd<xX48a8Ip{c^pltZZdK#!1
z9^i0y;>Jlk=oy~K2vhLt^oT<8qSpjl%oZdVq~NyU4kuk^<S|6(P673p8>)#RLi=#1
zC(lf%Rk&4I>sE+e5KXSvuh7^XifuE&JZ6nuz=&WE+EZm6855f;UD5MVf<-_ENs&ek
zjbyiIyWbMcmpvs*L=0Y38-h>^r0YO}?3H;ZEuu1>7kRG4Gi3?=R8Mz`{g|wXN~D)!
z6a6N<BA{5KZy}~N`i?T(QUjNLkz?392HDo?kTBIvz#ss+LFgX)$I(P7F;N)XM~2Wt
zidfO&bT7!*ZV~&TjNOJnl00Kq5`dntP{yy$jBi)*MKZoCJ)Y}DkhnN9N*d`@zO?HV
z2PHh!lZrDIM29UBq&icFJr#S?8&NpY(ys>6J5b%n>U`|w`C?mZxMDW8ym!1L79Vpj
z9p?Ct;S?G=AgrUoAQi`Mpa;c#zpx>kSgWLww<S^zW^xa;-LIoNod`bzJx21yyw%Zx
zz5SSQUaTkJafG&g|7uPFi>YQ3(bMp##mdA|oD{(McPGA1s8R2YT5D3C+&U^2+_Rrh
zA>ejVzYr8F-{I9!Ti|s4g0WS-H<Ao5r&l<H;xXx}-6NDqyJ(3SSc9kLx#J!arsf;q
z=><TL7gU`b;KrN{7cg-=7AorZUFh4B@|S|vFKo1TBU~P*;!&%k39Ee)%kUZoiDNR4
z_|lx{!9pv#1|}KjALUyeQ49jP7PubYt**A#9#Yd;h=^P(HWdIDpmpJj15Gt<c*23i
znE=Uo{rI<Xq6a|d2|;HI=zJB!FuKtzv6u*Sa;rOs<DeMOxfuX=FX&W{J<wF`R*yfB
zSOSoub8ZgLaf(htzrVK!WG*HdtnYnEENhxj*?IQf9uRpNLH99h-IBrsP41FW2ND|r
zXzEe}5u8*di?sqink?4aMY32ku$l|(j7k=(5&&7OvsJMak;In~lUxs4mBW*%q94FB
zSOvCjBDroWHUU*>t!)cbc8*;Iwn`CnyRCJR0<aayJ&-77Jl{W0!UTdX%XSpHVNten
z5<%I1fF)vLiDs at S+YJb^Y}JQ>NcEuym^je}U{e<!;e9ANkAN3J=Rzf;KCBOy3oRv~
z|3uh*3`W|ZRG4 at W&}98%W+X)q{iC2ap!nJ<>E(wyCB6HS^hPE*D at pvTNiVMC6h#>+
zr|&2^jfLugwWOeqN7(HKYe`8J0fO?00e+IDTcJ*Zr4toPFF*{SGfZ)`Rfviu9HluD
z1QKfzLAh&wI8#J^{#o(!FxH at 2Ysaf<TaA$IVGFRRyJ4#Cen^}zwu`nX2k&<Ld|8EO
zp-&fll_<VWz`{jq?N_vVS_lgDJQTE`o)|v`(asYG1Y4Eht1c&sbMK-fs0$mx*yETt
z;Gre0P#6^OjLOdPy&IuXS5TvNP*6vbt<eV(bwZ_7`;}8bNqLRbRd^Z6LACz;CQAmN
z)mj at +GTW>{LdV#CgpP at +qQpIj6#B{$j~*sT3!?2w+GvT3r>DS}CU#<RBHN#sRB&MY
zg*ga`_D6HD8zTjpgKt6tXn#3Lb8rExP?&>qWeyaP#5qD(O8#Q%#*Vj2y0hV1z?y*W
zQbqSfYT??V&e77y6j4?8TI;5lp?uTJQ2~NL;-D&@){Ajqka}?($)G(Si#3o!`l30H
z;)+`6MPZs=3>tPpPK+hxf2-DuHJB=){2zmCI7my0f3<>SNPiX7EOCeEma1XxHGgL+
z{zfbQ&WD(x9$IlL5tPknIJE-?XAJ8hwI2-Ak4ff!45107U8R_t#f=f{$Wz>fH7K3E
zNzI8f5Yv_9D-Q*w+|DH_$Soh)rr6rc#kY`Kahlxv0M+eDm+w4PzFn|oq;oQHlEwSH
zpmSO%jZC2+BlSP*9pbo8)VhUL?)y`{>4yxS?@liq499P2r;ieSX|T3*TXjxvZRw`y
zYlH0QuJ2@((vt%KXS39}Jyp@}!t=cR5$C!2hgMY#w!T4;1QYc at gg)mwE>64|Ughqd
z>V<O$r at G<cpzqBP^k2kA`loUZIHmiduMSe-ufG?%f#>prRqkN4xA1)L*xd8oV{<Cr
zYke#6eN%6~B92u&8}GTj>aXAgz3Q_EF+W!($o7HkmYlbp(zl~84zfGE{t*Zt&*gjF
z_o7=0YrP{XYTY9yR6N<bEAdlACHr#+s#c4$N8Ma^tK&uT2k}-j7l&aknt+pZaVGDc
zob68OHcj<q>`)-pZg(SO0RIj?*jYzbYz5WF5GCvYK%=pCz*|xTT1!TQ)@_4ORr+iY
zuU)!5=SjQtDP8;@U|$c5|5%l~HQG}+)f+i{syi~b;%yZFI>d#&Q4TkpsQMZu>#H_?
zn{R#HMTJCt6 at PSn;WeC?f=n!?I1K%V+iYV&2?YX;9IgejPHex at GQn}9S|-0plS$ai
zKPv3zOPQ<?G7<I&Cuv|IhZgg&BvtOyN=n+G8pO7Wl%&(B79c8Fe_U1z=XNN+ixy{)
zb)a9=j61M9D at 8f24%-o>+Z%oNEM(W+ at 5At+{$kiA$jbI-d*dA}sd2~RYYpC#@l=tq
zgLeE{aQhmRV_(iTr}XJ)-(an~lkU^?e}ef%uzZL6Y;+^^cqBF{jvQaH5gNA<QRx3`
z;A;2l>MGEJ#kL(?SBCyxjwS3qWuJ&Bp}!LxEG%(lJDVWe8HV?M?Q99U98%2E&SoMC
z{Gq%!oFJpTYp6|OtjbYL;?U3MP)t$e>AJ{OILmXRZW6;#=C=|PL~jIpANFz__wl5i
z$&q%ZHh#08ojI2E<6~z6rk=K;se)UK>Q2|SvxZvAWi(m1{mw^lJ6~|yj>M>=cWmzr
zO?h0BGSw-Jl|5M~Z$#fFsy>Sxey;mH$2$Yty==D}M{#*e&LG`#=+pW^(3L9ne$M0A
z4F=Og_v!j-vilP3jr%0bO;Vq>L!U|!)#Z5OYu)!XpDF!>IwkdUyRNBsXuJ&N%r8gN
zm&&;lQF6Uj8_J&03Xl}(wZ+*89^+3iAP8a at U4uC_sqe7YDSZdMq4s(|_Hy~?`-_MY
z`kuW#PB7S$?eX_QIXBQQWiRqwh~jc8^l99bV=jNe>Zpxa<I-)%^Si_myRgq3U?+YE
zOn4_X0es#g at z2;utpY`f$;p6t50v;;Uox^Ku`3yg-DCff49MMMul`wMiuV$UYf|Ce
z(2B%|FC^o)F??q#yqe)NQsFL!e+T+ at JQ8X!kKvE5M3k6^z_c_bUzt*@6O)U~IK|%p
zAD&o=SF#e|Y?48Mb3|DP5G!#6N}xDE3OU)~M!P}VAi%O at AwaCe11Sy+0?p|hEY8jW
zu at dh<CPO$-yS#(|Ce;ni``XGx?jN(IgTOF>Bh$5HN!O4Vl`UPg9c4)+6_ffyQ_J04
z!K?)O(h2NFFbe@<C7w$WNNrS!7N?7hvvyes5G#?Jl6i_i^6L!{0Y40bg^_6rgD=CZ
z_=6#`^sQr3VnsufotZcasj9tPjEmgi)n4`3{neN!*`Jt>HVKR2KIZ0n)ralJz-_;n
z9GC%(^4bD!w>uU_WIueq{fU3U8AsLLDEDBETUhOd&)&}|oBi5N`WozoHvxps_Ldax
z#}IXYq8;6a?ZMf8%o|4fqZEDdYCjP`gT?nNy)$Gc!(}FKqMP-K+`aB-Z+h8&479+H
z9B6$X_|;yHE<w30fgak;ei7-$r;#cLzZsx=0FuM<43;n)`30M`#IJ&1C)pv5DsT_^
zR2c=>N)7la?S>K(QYb0?5Cy1$)2xz=)G{qeJb?<YQo;tYq_hhY*H9J2s4#;qIfR}o
zI6K4L;g%zxBf;6|{fRp$sIN$QA1dUnrvwIAcj=-y4#lYU4$)OtA*(L&TR2|!{i$V$
z8?ml+V`3rZ&e-}=)1htOHdm|CrIcT7(@T$qlPS#(;`Acev*fFrlyYljRlA|0m at W=P
zE at 8njBa48dVCEdD7C^ZQd-K5e^#e|pNRpSkcQdmYxJ_^98o1k}k(hE&?{L~Yuu;-e
zo9oice1lG}@=S~~68=B~PfP(5#~aU=8PBgBNamP$#duz$p3}eKm*pFZuR-00enauI
zV!rwRzMuGMzMlwz%8T{*k>9*Jk0$)%zIk;6h<&<mUd_Ro%8h^1H?PKm5lm=w{uAz5
zzj-C*yVJgRwbuCF)h~_jU2WE?%>!Nj%fELu9ZexM9{u0 at y(=nIw(ng{M>ChohJWf?
zA{okj*nN(K^qm8l;o7xKhKrJj5`Iv@#qLEB2c-~~j at Neu4g{u5n)H=m$%R+6&5yJN
z%g2owH>T{%XS9jn*rj7n8&h`LnDSB;fkc>%3outq{|2T^y^ybvx(UOKpSZ9pQCvCS
zz95jZxG3kCk;4nSz(f$xV`Ws}I5Jf;swkS9yXnwTh4zTtx>1Dy+4xoB$Ln$uoH(lJ
z=G=*+if_uBI4T&=pE#;yMM2f5vKxj~jhYZ0UOlQIZ&&W2qb2}UHL3(CKt+;?qYA4=
zkk$$k!nKI`eJriqtsqrBs;oMl)VU)BUmVHuvRK%UrIpv7=fjtlLC&}9!a_pB?;zP@
zw4A~Sgb2ZP8idR2GV`lRmqU0|U0ygxGM^!b$s>YD9w7}}efSA_qw1o=Zy2_sAfA6y
z-p#pzC4k>g8R5DTdCL4Ir^_9ZxnWqflzUz7PqG&8yb-zk5HWd3eM}jV`*lQ284 at uW
zv#|k|nXWIdVLoLRb?+EFG~_;=wa8OO1cIQ$(Fd;!@snk4NGmhz;ck`{S1xg-KE4Hg
ztQ}D`s*pPVpDO-gBH^N(`V?#g8^Gj`)6d)v at K_^CJ;hK at XGGpzR9qR8uDH2d5Rpxz
zWxH!o4eec3z986$DA at 31IW9vnAoK6ycK(RKX~4N%;cO-j_+F7)HLCcAysA;bXnx*L
zp*_V_qUC%Ig;$TFUbd-p$FbZ<cN5!VJg;U{a78|p?FP2T=&-yOL7 at c1k}c2~aY;G=
z$tlyIsEk11I6U)W-Jhmln+b532XrsaHgD!}`H&oPD~EtYTa77t9jdH1=boRg%cc#f
z%k9c4aOe?j$hLnFtvb-!uVmTqPf90!^+&a{)j4?shiB!kitUE{wNMXn2^;52Put7f
zM?o#CjiYXFP_%>%5VSsp4S?Ex8XG|Q9INvG%a=^~WblxxyD6jk3iH0?*8zZD5I-#+
zeg{reB@&s2fc at 2dc=yW-Z%9A(qDtil-cEJgMvA-uR!wGHcsq(dG6ffXA7F6>=ln1)
z(cj at -g)s5El-`MY1-u;XkMJVJtLTTA5LaFR3->dwe}b+NpGRo&Vqc=KynybdH6#!?
z9QoxMbox{jPZS`XhLI8=bOVoESx5LbRW#adUY&T&Mml{WB<-(y1fN(uljX__9F+yi
za(&JRevA+N3qJ7UeBe;DELUFOge*|<bCM6dbO`)lp_Ievs(z_|`pOHOq92p at Iw)VR
z0oS_tUGXqBiKidFui(fg?Ycw2$ECp-SgG)7gU#z_3SMji at ysK~1A&t>pn<?@ML(0y
zS_Kbgq}U+fpU;2>0zCqriH+6!0&WOPrF>1m4JB6aBB9^Puo}743b<-S2D}OIOx_tC
z^?`dna2|e}jm}2EkIQ9`D=%F?FZkfU>;o@>fzL+&R3G?bK6EO5 at GtOzH~7F?eBjG`
z;P?2z-v<2n+>{*<z86IG8Q7O>@OsqyXL3gc`jjxVFE$SNgs;SkBwoTF!~IIYv&n6N
z5BwHIXEnZk!b|&AJaL%xSF460d at IDi2l(;1DSIXSDZqnRHjxeP2zbhl2|o(>H~7Fe
z33$rBY0LFTANae32U2!#GidWV0(Lo at 9L55EeA4^E%z<iZHwk#k9%}f9gy*L0A$=EK
z%h9oAqrVyO<8xDXQukjiKt4XVR3^s1?nf$7f0T2#5)u1;UMm2<E4NGr at UPp^7QnOR
z`<@Sc1iHq%a?6L%nFM$?Iv4xESNgyo^?@IX#f{nM2Np(VM&>Mx%$c=t%&b{~`maxm
zl#i>gpE>)RZ3`py&5bi#oT(M{^;gbstDm)aaryZA`uPi5=gpj3KPS at IIuj>SICZn9
zMb3~XH#oDW&2(nh;F>#o>a?=@)9dROv at 9$?z1{(G{oKZd3q`V;nyaVRPcN&VR#iW}
zyng!F`Z04Bw$2<=hTNx4i%h7$;EMW4Yh$B>0P<tD<>h0qn7MGytontK);aU9bY_9e
z@>$I at TY)%pPGq4os|GpGLdMe~r?t$S)9Rcz?ezMo6<0LQpVd5XX6sesCoRB)LSrit
z%8_&9TpXuSzA)l|2c{u!4w8 at zK{XR_1_cVZu(762NJR03($8)b82?2)f8AiZeC(tJ
z^IF;>jnhy^3u`VoFD2-y(<aoHkDsWEcR^#zf>so7+y!m(MG+>V2sP#9s?<zBq~P|@
zf&)}D_B53I%EpK~d858<{+w^MHP*K*00Yy;*Z-sI=)b+ZA6?Oq$bV5q8}<B&m2*6*
zXx4(3Yn<>EWi?Z$O{p(0udfovrBFRl^FBH|EnLr-WD678T#uI3cmbN@|KAEaX4Zna
zv;WuW^Vo{?_S-yXe#C6V(;{QXX$uP_nhz_VH09Hv?*A(r`Pi{E=kr?T&Yaa)Z%D*B
zmqvALdCQ!}S&fV4ENqk#X>FSosgF#HoE~XwncD~?7(VnI)9Rgb(YQn(GCnE8H0gbu
zbgNs=pI#5egV<YI7qpBi`!8yA|Ltb=f4sz#tv}@?d}M$7k=^ZBsD~mrC4BzGs&IY%
z!nP~woqBjQ2L0365ld&QwsGeCv>si#PJuDuN#po;8vjn`-x>TH&%g3A at n0_f$MSyy
z|0-z2jBLgw{er18=QUQJUUPK at LUzYNBN|?YK{R_B;cT$<Lldh4sR*{RISUqw&Zd6u
zoGV&qwq64lV@`y;&7NC#^}N8m#(A^mwIG<*Ma^!U)!I0(ael<7=L%F`Jf^j=X$*YS
z#f$4(8e11Gm_KvwoX9oxSJR=Kzi1u{|H(Z`no;CDGtyXd!92-a%QXSiYh>oEtLkSp
zUsc~UbIx1<W-Xpse?{Y!bLQ92ni-kZtRSt8k>=I~i&Us_{%jq4;rvB&5W1joVcWdM
z%)-u@|1pK7aA4uJH#%qj!p7D}{Y(&SZM<UU+?n%dHD2K(DEQ+SOcVZ_QL7oMGIofn
zWFV9eK{&(I>DhC9v>J6gZ^6~FykjTS*9+l58D`hdY;B!+P5u1FMHnB<zcSLCsjCM4
zX_490jaO%FHR%mtY>KBz7yS+R*>$^ms5E>Kl~g`m!%?|>y2L|r)~#*`RUP4%V!S$7
zu!ijgN>-*TNmdI6L#+#1>(1j45v?g>z=v^R=8=8uS~(QF`s0U><+LB{7(WSZ!{DX-
z=f5XAgWyMvtZ3|fiaU*QA75agO*<{U$e(nWiy>@n{p>jlF)C}6E%JZLxcUF(;iFM$
zDJ}RLhxmV&r;IrQ?I|1P^rHssAL~Fs`=?xFcH|S_x;M6>H!Ghor7<$KZSLIgf-4=k
zjx_T%SJzCK4^aKw1y_m|YYgjB-3Yu}1J2Q*=z&$YbY<JjR#@O!-)fuFO56M?GZ$T;
zq}7Uv6$~e3L;h4+-P$O;^qP6|U~EL+ZOE5$sBUbU*)}&aea^hb3*kR#_5Y-qv45Yr
zaN(RQg&THSM#q>E{dfnN%z;PoZA`<!ADFigIpUq0n)>IAKBpk}tA#9w`@qlgfjd6%
zB|dQ12mT8m_+viseLnEv>eWSNxz6x`Px66(+XsH54}7f;e3K9SJs)_!dc~5-zkbi3
z39s_OpXUSrwhufX?<ILL`egjHK1}t2uQlMO82C at C_o<{~>eUB6 at I&!_lUF8wnGgJ2
zANa*S at N0bFclp5A`@pyQz~A+OTWW$mvs}mez$g2_8+_pNeBihH!2iPszR?H%h7Ww0
zcyBngz7F?+*Z9Djec)|AaQWVLXukLQ;Q!GFe$WR#67T!6>EXEsd<+nDyLib5-h=mX
zn$D>P{__T$Z(%eYejk+=^~A*g9NvrZBHYA3#enlIjHa{JfSc{N-v|D6yyxOY`lsNh
z>F_(jya+ex9Pojki}zW)h(8`bO{c|xn{*Bua8sT?#CtAYq%#3OP3J=cZrYPW)yp8_
zoA6@{xGB#w47e%Jr3T#O^I-#S%J~Ys7vsh5hi?@%pQqxz6|YSAJOwA8W_f>Uz`u$(
zO{Ye^$|b%D-(bMa@*bw%voc?<!P9h3_JQB5;G}=Hfq#K|1)ItLvFd$oCj9pbPC8sn
ztMffey?4ySuQT9Wy`b^GVZiy;Rm1Nz;9oT0Q&~t{%y$ZY8h^PD{7SV{g7{|rKIQ|z
zOuhQe#Q%*C{B;9v*6&I(jf-?lecookP5%F);FMb(e!5(58~9%{;NyY_;L5~5Gbq3!
z-wW`l=}cB|;!nd*o#uY<0tF|Z)A7^zKQrK_zWs*}e5V07+udFRZnis~Db0)g1o6}P
zen!E`&xHoOBZL4h;`1H8#y>>8N+<qB20WzT#3xCO|E__5u>l`;A_BNb$All{126G`
zpXCFu^MTLyfiL!f|G@|Tz7PDw5>YHsE>r(Iec*e2;1`r;r!$Pofs1l8>0jyt|BeAS
z+sh$LjEi)p;-~BDs|MU`M{^ALcmw}v8f#pnW9scmKJc&sH}$sFfSY>zo&h)M4<9SC
z9g=U*fSdAZGT>&uF#~SqyWW7C`M%%-&rwU(hRDGOUh4y2=mY<O5Bw1y_$xl}5o&2y
zCZDJKz#~5JfAN7o;sftD;AXu{J6+Zz?S^TGzv~0P(+7T+g0ox~;HUNZZXf(L27DUu
zwSC at T(3x(~*<|3Gd_L&|f7+m9^7DcZ{woID<mWAej>*q6XMj0eEUzig at ob#9GT{pp
zJX6lM8TemAIxV;LKKR`RzFDp(eDHS|aI;*`8+6Qa?J?lz8vF!ljBsU^>na0&9^y6s
z7gq>$fp50=YYn*B-tRKtCjMpvZsHFZa1-D9N-AFy|8xUx;$LFGP5fmB+{FKp0XOlx
z4Y-N_f&n-2bIwfhY2ts;fSdRe4Y-NlWWY`Q6$aeIUv0om{AUfgiT{oPH}OAvR(Ad?
z47iDZsR4J8RO`unANYC$&MrvfPf+7Kwj)kOXn1u7{7Z=ARhI$3M1li5isXZ)^G5~m
zRrzW-w`uZvIs-mQ!T+2Ae at 4LvGT^x+i0i!!c)7yQ<KPFE&UcoATN&`{6#SSBc#DFc
zlmY*$%6D7_{CovJCj)+wqH|sbJgV?7&VcVx__H$L{R+My1O9 at 7Uz-6xQ^9Y{fIq0<
zw`9N{Rq!8Yz<FLQFLe|4hh4GOlTjjesK2E3h4zhIrN&q8;Sf5iTM%&5KcUU!l}U%b
zIxoVRR at 46mfw%}a`D_wUsSgzWDXKu%DtIRSb^~s<mkuBJcYNUAH{d3p|8Bt9^=bYe
zG~g!w4g+rDKWD&AKL6+gf6;)O at _EaEoAS?7a>|rXp#eAZJ;H#S{A+oWj>*4nuY{X)
zwEhwv#!t&f+lfrLwkw%%-Tnw?*P-cXdqDU^1FqYBCLL`js5|_P9ELw!JQ9}|@h9V_
z>3`P;eun|CHt==3Bpp*ex?N`SquXUBT-(b`xV96SaBWvI;o1&m!ap?lH|u3Mg at TLt
zrd}Okz)ih6#ekdkf%~d>k&dYk+U^o=>eaahzA69d2HfOlrU5tkxyFE-{46!#CO_JK
zXY$!);G6RKkq`WrKJax0+|=8x2HcdxNfa6`@?)0kTmc;lpXUSb@`3--2mYuJ`~@HQ
zpbz|51!wX2)AmBSdqc{_xi4Os<y|DfL*PI3fj{H}@AHA1_Ry5`iAK9H;f at d7v_B@k
zwlkUKy3L2qeLisNDz8j=o-e^e<a3!1{AM5cy*}{Y`M~|^{TLtq&-Q`O^nqXN1OJ{6
z{2m|pQ$FxPANWx|<(+20$KYA_3%40?x>_3ka|3Sb!v+OsJ<_Mr_&o-`ZNUH8fScn5
z(|<7edB?yv`5EO?-Z}$r(qE$B<TGUOv)sV{|018m3Z#H^J397I84it*_sn*R?fv4)
zgmb?huT1y~ANardz<Yh*fA)dD>jNL5#&MbaO!0xw|4erNzv~0P#|QpfANZR- at WT$z
zp6^LM at N<0NGkoAT`@nmB;9oc*#gEyJ#)eXGbG$#zfSc`Qp#eAXZ#Cd1{(T1A#Q&WE
zH}T&!;3oc&#`_Bs{|p0e;(yJ6oA~n$xQXu?a1;OM2HeE&HQ*-xYX;oJFFY|NXA|Fi
zpJL)WKKOGCxQQP#;3oaM47iEE-hi9<hpP7-nfA~!-h-I- at N)*-^c#=!fuHOHKivm@
zwhw%=4}7W*{2~KB4ppK1qj?70?7yxz;HLllBLi-h_h&xvU;DuS!+ at K9@*@U(qQU1D
z18(~HuNiRDuRdtN&2d>os-dvwCmZx1_JN!J;VB0G*M0C;_`vrWaFb5Z=x0rS{>2CW
zx&a?=@WU^T at XE)}q;sADuSJ}$_W~m0BK{2gG at LMA%;t0ADgBS|u?8rpo|%oxN<gYJ
z;QD-yt_-+7pF_`kXgd0Qj&Z8IgnwD3<;^zWjML|He9eF#V&LCyz&T&4ue%I5 at s;@v
zY%t)Yug~q!>mfCt`rM8h0&ww0I&2%fRv2*R+eaX-?-_97&lXUe3t_-VDHw0t3^*VA
zie%)=8F0Oif3{j@$Y}obzWl|R at M1~lP6KX9kobSbfU7J8JVeF8McSjqll+ at tz?Ewt
zB03GY>Y at ew83V4mXaNr@1ttB at 3W)qGHQ<!nVigxL;71zx-3DCy{EV&~CXuv!^uBq=
zfRp~q5-q^*n(!h%>rtOa@*@LI{7$7e_Z#rEb~I+;HS;1fuLz96mT-A*)=yZ3JabH>
zad9LtX7<d;%)po{7A_26laPXrX`4TH&Q*<buL+E~a at MT+#>KN5Td>`4<`r`rO|0}S
zB^mo*xV^%ln2zhSOJr!8)IJJh9s9>^J`med((_Ky(YrikUJF?KG1)e3q;`8ye&u7Z
zr7R_%k4^wgf4V+9BR=UykiU_se^728S9YIlj5<s0J@^~;f6Shi+VJ8hb%XZD>4Oh<
zpK3EoCOgTU;{UB at F?`&flK-Jx|2-SA_4X3o)`m7x>;h at U_GG2I+({|7(g|yaHveh2
zlF(Qp`KQ|oqS>9bFoK<_%1$6qjy<fxz6gVar!jLE%$hlO%t!6r#D3a&-1iw6Gk-y(
zaSRUk{4&Zs>nat-i6mpVg&O-GVaNsX#^(B_R_u6%U2k0g(flK>&!hh_`(;hDQay}R
zcfQs>0YB9ZC+~jgwO?bVKk*Z!r?1J&On(x>e{24;Me6kQd^h>Grq|Ln^Plnw(l5!9
zzw-&wcV<a{?k7lpYnJrqeS-8Wv!v&^;BS at R-C5F4{RHXnSLqAYo%&bz3DS3~bY}W#
zpCJ8KmENp>jw>?D9|Vl9oO0vvB(FYo|A~6vu7X3(C^`laq*<vE)V=#h@?p1fYFU2z
z`MNyH9S^WgF at NQL<4Io8v-MN at UAdh};3;?_%}<-2W9Dq-kE#5((-AhVjG%Z2n63P)
z*T_UGm0!;CbDWS_{u;oTe<s}-RRH4pX-0u{{mIxsfbT^F|Ct0PNeq2nn#MQBHiTV_
zpWr_uecb~xMYp^K$UmzxlmAY at vgKb?EfebV&SYrl8COw6WXr$kL776&=QDqfYclia
z`-g1#_ffF8j>{-lX8G3vCtLmv>qYY9xxmby<D1O<^O1SB{EKXv{y2F{{%7WY5HZ>E
z-^zmF((Q!#AA?_J{$Eo0n{yRRSFZBU%#XbC(s!;u;IlrDQ$*sgPNm<h0qUMfkMj`O
z`0rEvFIMTu{}=Gf<e%@wn13e!pJiu*>u7mP{u7s%z7MGMnf#Zj^!i*nnQEy1y^8eN
z_ at D8ROtDHOB>%_Zm&yMH&@b|mnSVDsJ6s=^e=X8y%Ritd>dgGV1bUhI^UUdN`PYR-
z_JIaYb{bb^{q_3fze?p_tU3mk{{;Lp^S=~^H(UOzua=qW^ZYamnfYIY^x4Ya{isY~
ztAxy-{!?cDqmejU{$)z>^tpkG%#i+TB+_TgzfdWDw at S$TOYzIh|236=rvBdcZJCg~
znU at ah`v;nT6A8~NRr*6R;F<E<tNG8s+p73C?T79wiK^kF3S_^GYDl|QtNe9&b)*jK
z`yog#<fjqTy)R4td>^IL>HLpIdcyLchvs$v$K<bZFZnyue;?^t7wntOOXnXnfq2&Z
z>-$f9()TI;%QDjI`qOvrGiLso<uAHcCe-<8GMVAuAia=(hWrLM%M at D9)L*_&(CIb&
zC6#|BpT#PF)|q)}z18;tmEOeR^JJAi6Ry)~_y<VOdBzO(1GY*Z)QIY?`PbmXVV_7d
zGkvp4zcs_L%}hTE@!9mZXp79DOf`%%5v;&Zr`Ph!mN!$DUC)2Kb5IG+!gDtJ!S<cm
z_L#2oJN(C5J982l;Y|5)?3*op<zq~ZdH#&@XQn at OY}vS=ag_~umXI?}J59utSDZfX
z4Dr-(=(3vd<lLMT#T at LoOoe3r{O_8Sdae|Yl~^lsyudvSVU7!!j{eor`01<aq6dO_
zcHG at n7dr0ms-`>cUmqssh0|<&+jIFFeAzM^A2B|m1ZcJ!3zYy+j<5eM2?g!=+)ywa
z4~Gihu@>Z7qw%F_+nZSQAQeS?wza(b9s5 at gkeuzxFG+QDw^iHmNkw)qKgvyb-j+#4
z_+pYIJlj55=45qjW2)tkGJkvy=hDloE~~n{>KmK%H%)K1ze>Mu(b?hnRrpNpuCRM@
zza*F+a@<Gl=%8iYNCm at Fj@3aQ(poz`6zrS^>`8 at HTdL7225z+D%{iJk@$FoE-tnzk
zH=)YV>$qDaS>z%<`Z^?+MW at Id?nPes;^C1h10ahmMC!z`I2uEK<KBI>e24y|4+?L)
zn<3l~SdxXnN96X(3<>p49$16V at l;a;>FJzQx~k~@!i7_+_CA{57OClYIbvCB at d@Lq
z&YA#VxowL`KkS{HC;$&#Hovp{0lsoGuvOA!IE<Kqb{WQpwSrFkx<ZJ7pN(|fnm{$a
zDeO%zz%&0!Kb#aFc}lqSt)4{QJNC~8Rx(A6`*Ia9CwkQ<?4RV~Z@>j;B0kN2!ht3N
z4kX%;i71);9M`4<YpaU^rD at w(S?=^uneB!{6Yx>wP-PfTcC0%x-YTsQ)mf$CP=i%E
zJ=9{A-Wh5Kx>fqqP?xyh9a<^w_k~uA`-V_A?uO#xBf`|$Sf~$h+kFXjKou>t<6xgp
zMZNi<BE<Dphw{sC?|%{RG5Kw^;-pfxjf6sO6X|zeDnCRfze!bfQPqXvxOk^nHNDBP
z=6|T0&jhrEJywwzp}Ub#IE;@^w(PM+=Z6g5p!-0x<IqUF?E_ka4KA7)+EN{A0fEub
z+$P(a-`!*_=*Mq&lQnmjb>!(pu}bHL%B)g+z<&7w+S#^IIzyR`g$_df!|@G5Nciev
z*j<7zytDX9*97Z!oR%U`zSnkFh!joMuI}>3nh>Jxw>=SUjgEy15#+sCfNT2g-dISl
zj<a1^7a)?q666 at Siga;>^RDaHAAbvbV%j4d|EZ|5^1Y6CJ|Z`WP&nsB+kHyqXuFnT
zQ!rqALYia_l9<g;CRg<<-fj0*nQ8oMbu7h7WNOD(gm&`|g6^%NVAQZ8D$i=bt<qSi
zTisc?4EN!#^5i$9<F|&2a!BdE(EW%Bqlmn-)VLMnN5!oqd134jQ3!lqTVf)qq$YVj
z6<>tEaT+=e)YE05V5+u?@<UBl$rF35%N}pCPVKR7I1$~>9_t&M5ZY=*_lqPtbOO4y
zRNV1tp)aO|j!g?4mlpbh3ROKs4?*U0yJQVk!+lK%Aq?x>hiDrb)Q)>Nez$0LtlCb5
zdD-q+z`r}xj%Sp)3%5Wmjmr<A)im!EZP?vtdn-aa`B>2%wkCDM9)+#yjpaK~|D{`%
z$YY^)VDLMG4Yqfy$Rb?PZ^do|V{8Q*ts`X);fnXH*fk;pSOqF{1AC!nyW^l0yNYn=
zlc0r~AxkF5TZSVGRiKJp5qzdl61C$kIg%0CAfaSSV3dF=JF=M6s%SSfOtvgqiAt+f
zs;*tpD``oM(X>#QBGtl~jOwFG3pQn8(RrE*ZhMvex)C|vlw{k`SWxxVA|=`%1izBc
zy3I+>&8DY$6`6+JpGthAZKBdh4j<5?06mymRthVjL`ma36ksu0TMIge5w=%kSM0N5
zUxLN4-NS9KuE=)Tw=P8Nge{fq)0MsHtt=FTD_)a=5nLyQ%vwf0Mn+MJEh*unHfR--
z#@Fh|hl;`g)1(?6K~+6`0&4Cyw4L474HHG1DH2izbc=OE*@yh7UCE|B)+Jj2*=R*;
zgoa<jc7 at P6X`vZN2}~6?CN1vdv`|S}=xh~Awxo^L^=r|E$o^Y5CFi~0Wws_$C&TVs
zdQ_@;xjs#b3lu(mlX}NmDx0lnQ at 5c0(wfuJtWa-gbK)reAJm*?|4q$FTIav3If;%!
zw-?czWcR at 4q`DE^<FM!Ww9U!J=TU<J>!#<}1fj)2J1%pU9jYDe&sn}C6lUjaTh-gc
z-YFY(3#{#U(~6ZL0-t1;%?w6t2E9Vzz;Y>&a4%zD;uGv?$0g8jd^MQuc@^^8f>YQM
zc2dv89wIv~90RR$=wQx5$0D~G!Y4Q at l(_zV?T?~MqgfMqCzj)Lvg!Jo2mmC$Ep8O+
zy={pJ!lA8%MrfO>jlb4j6etl-(zD|i<?y5JQEr~tyD{JDcozlg*kQ#U{{R`RZ7Hhk
zTv)VsW3CnBGC6mLwJvhhfhK%D_W%t};-|o>DSxv|mq|AwCtj1IyQQ>-lx#!f+pi%l
zMOL4vAtmmGq{X-3J9b3AXh-+uSg{cxqCfqtyDQmu!6#_ml7AGkkljq;I*48Q^Il7l
z<L-mGEOMWP$sIokhqrt%9G_I|;G68>(jI>5{&D%K`_?1VK65{|)*V?^fzR9v$$W=0
z9%FqmMjOi!$c2H<TZJi4{0 at dskC$l2`PJ_k<vWy~seVj;z8fkh?Z1uBjH>TgQ<Z11
zL at Pl!;n9kAeRO at lA?i|gqn*Rkgpqg)gN~|)Q0alhE}>KHcoZ&GO8=%Ky_65S`K5FY
zA}2`o9{?_4XgKmC+d{%gQzp=xtY^`6Z9zAY6!@heSoIJpD3I6){#E|##3R~KAaS>N
zMEeUQ?!qI~E3r>7%Kjs9lZb_34<w>^r2m&<_7^AxR5EcK?kbNX#iJlRLOcq>Y(iBJ
z34-rJ0Z{Y!JoLgMFLIRlJhZ6AM{!s~)k7ku?QENCQ$j at lm@H at Fa6O8m+NSl7ZSaA=
z3QlEHHV0Y%)z3{S^%LVc;~UA#-?$wd*&J at 9jdwZ$#c(XTv at n4AfZi!ZWSriyH5zIo
zyC<XPe+Y7<HkP3KCqX?MAo~7xrnMg4=(z8S0m}||3v3VU(y<&x)rr_rIA}uc<<tPY
z!(XA6>^O{9P5Hs{H#sK95HRu2Bqhe%(GM_dFcq3(t<C9#V-j|E+wNslui}7HvCE2a
z_Q8%{2#@DN!5f^I-Byfy)@+P~r8DE!z+Iv{<<=D1(akVKb1|rogpPIM(?dDnlEVf)
z2E!9{{UA8BVl^b=0Xd9zTjzL}7lttiFWqKWJZ)VcBkOR`itN&-#duN<88M~_I$kZ7
zvu?L5HrdvcogC)C8 at ntt!H#}lSvQ;n<zc&l9~TKtNE!n1Df(VAI)PGXA%{rz2Wclf
zCP!RDTJbw_1g+_$wS)up0}5Mub5`s~5pQ~Qi9CWjp0{GF(ZVo4GVp!a6Cs|sofCb(
z(7OHrWs2NeYANlp?vswU<cvY6&)7jbeqAvqB<#|CIoqAmZP6D8MUuNf3(w^{+-IX3
z3v0cRWnp*Z_=?9{cO`B>RIS%o=u|voUB8U|C(2?|taY}#&B?nk;FLZpWEXa4hbCb9
z%ZcvCtkG6*fhW}eY;b5;Elt9jy<{9wSY7_ee53I(9c3-1^55%oV()PEiUEn-qf
zln)b5c63t^%@}&fxDpOyp1>f!$99{GtkHqQFxVILvwM5cH7*8`j>oLnX2RA&9F?78
z_x7M`ybl2Pu`2Y9qu4hddLZ$yB3UJdS}$9%84xh#`sGxEWOc(G`KaoKGog)Y*n=EI
zVG<T-iGCk552A`~_k~my3rS}6+9BM;5h86n<O7jY{bl_w{JJO|y)2gQRoYo=?HRgo
z&mx>&xc`T|cY%+pI at gDHE&~xU6D(@1R!5AQc)<k1C1^Dv8Q75lQxcS_Z3sz#90N&{
ziCokcNuo at LC~dXcil_8WPwlC;-ilU&C}^t|ZBL7}R`hsb#0%bO55o66>oW7s&TPE2
z{h$B$ee0LW-uqeade^(&^{&fadtDv`V%sl_GR|XWqO3kmyAG8NmOZJgKQRtuweg8V
z4CZoaFn_cL(*bH}Fu4;Wv0QC1JpGy07keZ&t|}hQNA)~nU*cRe`Bm|W>0k*+hg4KO
zg>LLA)A=%$aoM0!n$eu6V(Y;>-E$e~KT4I2oKCXkplq_f>_OpuRz`bvks(aI%b}R2
z0;6c80v~4syKxh4_tw<yy(SdiIrYmbYfjJ0C*HL;sH|5*Cv5jnCF(b26?*qdTBUxg
zOnixz!hn9aw&N-$jt_fdHZRNRZ^=fiRJVRjs#|YfuRZdj9Ws6CL at kA3iBS@;G*m`Z
zEgXBXw&Jzu>2CZ=)cL5?@s59(8^=xZH5Rq|?xz{HK&KG{9nqq?NXbhmnNif<dL(72
z$)xAifdg3u*JMLwd$R*?=Q_9L;1*c!ar)YHXLjJWqn($t1Fs(K{3JJU-_g#_K;Yq{
zoyUg-_8#rLct~L9(aujt68Y|7ft!wYzB7vV509en)1z+5!ow?{3jE<{=Z+%+KY+)P
zynpv7l78c8B8+Ujj_kOf<piD`;ru-(@cR+Yy5YQkW_V!R2<Ph~Cg7fw-Jm?fk;jrv
znSw(<FjLc6?DRNGoK9zf)8wphmOC at roSALT^fsrV&8cg1!fnn)ZO-T0oJ*aV*o3hG
z6Su<7Mb77GEOco+L+Y>?o=DTyu_Uyht7CD9+kS`Ix<i;38M+KRQ at 7|~&Pm-<LXAAB
zD^$F6QCssO(wwxSrzCVvD7vVv`;2qCv59qYiO1K`XSYq6GGq&X!!~(Ijra0X$sgQ}
zuo$`=4EXlGTIj|b^CIy{7 at mlf>~S~m4Y(ECgMFv4`x1MrHipLi-AKt>wH1F2_Wgnl
z(!fZxC7Xk*xCFpOrP%*0+V*=whz|AKBW~7jX2$V31J!o{TEe2d$iR8{3NfOVJ&o at n
zd?c1V6BR75sc42)<kiN?i)zv7$)mjZ#DM|rnHBFw>uLw470jgF#(rb!Q*uJb6K@?O
z-1xFRZpGeU-%bQ_V^iEXx(kCLxA%dN8|&HyzI!lO*Yj8;wu^}xsL2Y|Ry-5z<5#Ij
z$?jVAfwH#jE;8RKO5ON4H`WQ6D$(c}J{3EHeNT~nybBzb6-44w(X3B)E8gmPtQKXc
zcRyYY>%g$`y{%{fuSDAV-;3T?6TE9g&FUb)?C8&9 at 6`nFj*Q#Cpe7cXw14+^bbP<w
zsWad!_=@AkM%$WhG(M?pcC#LG2P#8}J5X8McBFT!j;t5b=*Ujdk&QxR1>x1B7+J8t
zgt-%6x;L2uXri_Puisn1EAb}&nfJIDMxSap)cIcYsM`2aB>R0gHnJ#EVn5 at I#OJ7B
zZLATQ(^25|K3FI^uM5^j;&=^waAs^&RqU-<@k<K!o*%np6kY=_!fW7v at 10rlR87|7
zGfN)reQ7UMw5kn>bz`|jcn+665{~_*s&{kVjCk(o8L`|?RaLy%^{NYlNlXQqd5 at 2e
zh{S?bu{USM8%FG%6>A8Bxm#Epd$JadV5H=CS^H~C{%+a3NEhzQ4phbdr*~W4`SGGp
zpC2nay5jw=*Au5R&1<2Ltl%p4tlVE|#UIFVD;{=((;jwXkGY#)3?#a>a{8cP7|6i%
ztg7C<dEMt!y*G%QeF0dQ!@@JsaS8K_TtUt1*#+=K_ojkaY;aoe?uKFe7fg>eWbIF!
zq&hgxOpHiDx3devu?L{1BdwlhBPnm!;`MlD$rItMhi8`jwhFJ$j4`<C6*S!J(B=`U
zjXhBV#f8fTYhn*n^$zCM#&bVa8_PW$`l_lJ>`Jhwf_nNliC-dEO?(8*Ef%baN5<`=
zz3oe!4nb<-1+n+Su~9YghSGiESVP&q#Ge2w%WNp!zktyG#Dh!*<waU*Ao8?$!?1l!
z&A!Bi6zQIn;x?n3{;<3Gxd4=xn1XQf9gg~AeUsqL|EJyBN|n6I>-5#xbMED%|8x3t
zEBekg$zEx$Lod^-tEYsD=gh~^mOY`e at ngr2Ej?pmk9r*U<#FX>OUuWWl^73%&c%-}
zn`pQkOsD5}twCa_c9lEUT(efxMP at r$%L<0yOyrnjMh?$gi~6Ys4 at HKCuM`aHOwBL2
zHv7E%!hxJ{erQc at ZGQ390i226JM6sto!QwdN932*<QG at vho<Hif^=$ro_lBr!P*%X
zt{6YX2h_d8t`4lp9mu&ByzLsctQAU<EGt6@^j6M6+&kg?f?mYGGb{VYBk~Js^7E<=
z<!kSw^n=SqM at jMboJ9{g*94~JmtH+gokf3M{+`^N`hY%-zAC?Xst~y5Q1A)y2OZFz
ziK~`*Pp&+>-Gv{&ZP2xoz!T?G#yKk)XH9-xPEqFL;;Rqk^g8OCjvsR}r9ttN=g)7?
z%KjXZ0LYUBt at E9R-<9C0<=>tq<)_a1`bCFNV;|~B>VNjUwW at SBIchdeI!2q!PFkVk
z(6+40$soxrMbB?`+R=ur%W+27+vN3YxXW at r<*YPFrMYqnDRKL3ue%J6i*l9bdIS=j
z4f$<+v;*sM9MvPYkLr4%q34y3dbcjek*h;B`cp-p!et)hK+a4q(^>WJtN4y^@;m|d
z8QcRqSxVnWsJcP=={cuIB<J#3ze5%MP(ACl({k0Q4snE{XDLc|pEi8dMR<h_{bYgh
z_GE>R^q|-)2{>)Y>uQ0Ykj+^?+F5<H`q20I;5>^Z6aQ5{c+3ZX%m at F24_@bkzvzR%
z1N`vp9A_o2bc5=@<M6u(@k&!9StrsJ;yF{g8hr3?_~1YC!C&;j4 at KpZDc(9CyvYaW
zSuC0OZ1KT=>x1w0!8!Ld6aQm<@PG5cZ}Y()^T9`9C_GcVp94Nd)HAA$K|a3VL;s2o
zo`<TF_E2XcVf#YIGhi~s`%NGGS3Wq-6z3`3jXlw}c73S0T+TYK(H at aG3+EQ&sJ^ag
zJW)JaySOuqBcJMc{P<-}I3p4#(?*+kw$(onI^!vyQh-QV*`-t47S`ADEUE7B!D5S)
zjU#DoxcZ~ej=!`X$E3IWFs^WW7B?-K-P+W`W#_Yc7SC_(nmR!pbsomi>5X<larya6
zT4&g!MWrGpLvQt+IOh__8-9Y*EyK+p;keR|CnQfIRcDf_<4IG8mZlCeRfm<9snbo%
z6k0Y8`aa0Xpa)wX3M1)W(g{0 at F5qdLv^ktq2!2bNcxqTnQ=K|V@?UrGr}rRFVWkyG
zqqcbp!(IWY8ZMA|H9-#a%<oxnkYnwKgq<wIBJDVs?BKx>@nm}dYqdTdvY|mr^RYQL
zTu>ja&|-jbrr1?+`cR^BE?!ngmZubg<Y<LpsXWpSIVY+W!>!f!{K^h4uh!?E)?#~s
z+4UXv{K$`c5}Z0ramcZA`b=788II7)AXv1lta(vWS7WrR2^B|eb2wej8Y^c?>*hRB
zu$$P}*rD^xrl1+9m)~q)<F$Sbb!|f<&S?+VPi(B4Q9r&Br_X-UlWjdG-yx=o<awVR
z3)`?OM%r<opGc*i^C^=&K9- at S^k|P9l{Pz0mV!(cSl`5)QKuA7 at H@D(o<1Mp*v<)!
z>KO1Eb5f~3S@=UvN==<z_zzdu%xoOzm{j9OOndnP95)<RCn-YKa+}K?J<-OF1&v)z
zOBS{^E?68j6_lvNKJ*C0<U2gNPipNQ#&?u^O!X%8JLd7Yx44}aO8St%i`09Grso<y
zOK<lqBE94 at U(lZ*=$8w8jKFUY_=y6)UEq?w!}OmSZ;_xs8~s^2FFw=Y3|4}leM4C!
zaIXKc>AF_nrvm5N4Z2MN=ei3^|CGS_7HIJ-3IfN=Y4}+@&)}5jbo{J5L4ltk at Ua3X
zy&ZeG%;3CmosQ*yrH9^*$E^3 at MF>N;!Qi||K0o)+n at 8s^4^Elr*ng*Ex~MlRC;Q`c
z^p<<mu|G~nT*iBi!O4d_Y`RWBf0>T-rTAI=I)Rr7yb%3gI?|8B&(a at naIc&#KJ=Y}
zemwZt{JK)mmka)Vf}Xlz{B&zQxYgT at 9=u4CJ9l|-tIwwdF74zkgEKx(va{(u*}Pa2
zm- at L<;8H&~_~3swIQ7OkgqDB183-YNnJ>=^T*kZ53{8+;#=FGe-hBC`5B(-VFZ1P5
zK`-+Kp9+;Df0-}%V3>y6e0j-(Tm66F!HaZor`QakkiX2ADuXk<GG9I~==olEh2b;L
zgWLLNK=6_E?G8cD(H)yFI|V)WIk5O^f}U&YEq=&IEdb at 5B=BPeF7vn4;7l*&w|wsK
zp+D^~5W$hZw1*i2KM{VG&$|L2Bk;m}Jiw8Uq>l+)%73T8CH+J*l;=(FodPdH99Ev+
z8Jy`Y6!;$mJ;%f>{i{?89QpHOfyMhr5gm%}7r0FCXV^FydMW=5fpdML<-btivV6T}
zhA1hI<Uhg~HgU;+tiUDz83LF5=de<MqkcH5XXUv>;9TEl at n(ZF-b#Tl5_plo`vo7#
ze~rK;|8EFBlK<rt5RR7|{H#1XMg9_J+;p#caM~8#UJt%b!%nWrcgugP!3#V%>j=7I
zJ@`TmJH;OSZiAP5 at TCT?^x&5m{5wKFOjo_>SN+t3UuW>UJ@^+yKa4DyUnk&a^~So0
zj`+#=S={Q6IPWcP(@nfW;8w51rwF_X_jF!*n?B+)-d06Dl)lpkxB4TWBK)kJs|-E!
z at pSxb{l7urOpB at RoI4FpJ`?b>d^QVQruS(d{AGhPUfHg_Bk0R<Z~6a^pr at RSpU&?6
zV&$hF-O(mLEzUI4m3wfTUYY+={+OX>e6k++mcS+bZ336{zZJO5$L#{Aj5fXB6FA#O
zi}O1JomZY_0&w&`20u%`$l$zicCy7y_fzqy5;$&^WAvs;F-Qt$7wjm5n(h+5Vd*vQ
zM;qJ}(<Dxr=-8&vS^CfDM<-;i7PsZC*n^*7o=ZJA>vTH%y~gr6NyAR1xmx at b^Xz)?
zQ_XXo2e;*Ut_Qbr%=6&1X}U%Fl1wlAD0H3rlEi64bj$Q5i8Jr%R;vFgy|JyOTdgli
z`YQ9h)`M4@=bJou*gUWI;M2|X1`l3qo^SKuGtBcn9(<;GwioK3x+$=Lxe~W|MaVSc
z%AT!_5HIFGING@>3hJ4CEjnV>w)t%JOq}h4b<53-rMLCKtpcatO8$e}t}n at W?RTuF
z1kQMmHP3cD!NzOlK7$E`v+-V~AJg_gwskGNt{3zSW51W&B5=kVBQe|y0%v;dci-0p
zPWqpc7>+B6>3B&i at Bga3ZS}sb7<tqizKX}xZjE}dRnH0hWV?Pg)v6J-jQf&)lCicA
z+YI*qjsZcj390|qoauXDc6I1&Fy&5}sf at _DZDv=;|64cGgpGd{hHhR#X!c20Y3^*<
z3*q at J{7mziy!wTYWC+iC%Nsrfj74!6e$ve|5BHjWsrB>LlWa%Hv(gfn>-sbGO`Umf
z58;vJKTpHSc9(q*#xLtak{mO1$^>CWt8UD{({UxwPa2->U#9fi`2S$)DHGk0_*u_q
zO8*|yfUY+6SqOCOr+CvJ2F5518Sb=u!*pnVX#sQfh@<urB*wm-bl)q~Pv=Vz_cpw}
zE-;uk{9Y5j!xP at hZ^QTagkN~H4k-7QA!5VX>#?}uy>~CSwI;m%p0BwLZKsbyV5NVL
z0+*SN$~+S=gzI7WS@})!)I1OszoAQBIOq;%hST%|{(J5JP8)xcLf`B#@!NPpfcfg`
zjsG!(XFKP$-vSfAr3Z;}_Ss$^_KAN_hWJ^}*l<=Zo&kuzA at PSy{DUgi)W1;bR^2`2
z6Mr5%_i&ZM{@I7}#{Z^?|8PZ}`nS`>A4);$&W5+w{XXH<#}S0^=9hi8*HMr!Q~C=`
zhu_9y#qd6lMEFeQ-!&a#tLG3Hut?kR7Uwc<6~EDwji>M<#($iR-xGdbhWJ^eyz%pl
zTE<^$BR1ENiGQpICoP at 5&NbmRn)*M>gij&*&W5x2B7|qX=n>zkGvPy)&|Izj7G7!M
z_lEB@;khG?bl&hBm&%lX%g)uIRvLjrc%(_%@HYSG?TG>i-h)n17pK%TtbAl&+#8<t
zi?{4E<UQtv at I@*|I3rFHVVTYpes85F`I<*KZ}{%z-EB)2bYM!-*p4%?$JmGMMK)p5
zgwk@*g+d>FFS5`dlj1sBtV(>VDp5AX?g3?D9mx8T_pB%Q{=<8A16Xc&AHweh{H&Yf
z#y;RGn>-hbEsl4&(Bkb~^u($PETj4>R)AdW#vb at WLSb<%Bwn`5&3YrgG&J|(FZ4d1
zrEsxWSufZbUb#A2G*WH0(tE}50w+3}%OyvujT9{R!Y#r3fvLycZzR{+a|IBDde at EZ
zuXhL3Ya$oVHQ)=d8=sTs#(S`yMz6$+#9rcU1-$O34)|~d>5Ts-CRp)Lt=&xV+)uI(
zu&yE*wlZ_rRA8*#RBM&6GgVcCTAVabtiZ;?{<6U!H%4?E?5}l(8&|j7_hT-W0*+R@
zy#@PMLn<hDo?Wt{*SffRrz^W{8W!mfZYs9oN3bVc!TptZbYolWrWPQXnqk+sO-O{^
z6HG1MQ40JC%V+Qg2senOCb4S06fbcxC?f;iSOS8b-p1>E;nEJX)!WjGxlKUNr__Ry
z<Q8wa!<^kWa}$9*YK at NCC~Y=3N(=Vi00FsK+Tq+Rt)Oc4Fz%HW>|aN@)k2W?_}v at r
znjzRjUfQm0*cDDuafR>h4ZJO=9k>k3onFE^lVLTnowa7av|-pU?L91<3TM58wNq8S
zFJNiPzPzq=yu*^^C$MB0Yb#;AXXn>cJm2;D?p5Tac2gTxZ8lRod0&FdepH&_Q=QyY
z?d1K5I(RUfp$28$@?NjSpQG|ZnE>|l>wR^R*9sy7EnHdivf>Y2eeR$cH6(kOc$!SE
zF_|N^$t=<)1B0o=8X)eS_i}27KIEI(;biG)D&LMs&o{L-Uz~f at MPJ{23KlZ;AzP3!
z8S(+U=P7R01-&2Sb$_<<y@!ywSAe+xwdnCCZ^KyV^-y-SAodzoPS>2ie?e8O=8XM%
z?KxKKowhq>)^h25#PV5{k6|aa3;CFfELHp7y^AIIHCeAkN_O?WxEHZ?ZNk-)i50JO
zy|Mep<b%kt4M0`A=Jb7xZr|>&DFut_XKmGm5xrvrw~s>(sp{>jSGlW$i%sCL+V57i
zcNkYW)9^*knXT8bN`9MCjV=&zRf5VMDSJ<CG=}}p_Aoc}vRCfc#y#42<*17rug3D@
z`}D?U*avDC{OGvM9}5K|x!9wzrbxAWZv66Hku0;?ctF(@w3?9GGXXh^MPbEULt6kA
zN)ps|w&-unQ#@a{7RD+DD-TzYA@{TCdkOw!X0hCWULcJf>fBhaUdk7Hs1K{|zDp)1
zX2ge*kEL{}NRu0DVY3&b3cKc62jU9$xeR8#nRe`-!dHY$DYl9+%(S|bR^AiFJ`~KR
z*e+W$VkZjhWxz}`tFp0)MJd$LKUf*O{-Fe`>$PZzdLPeKEEA(_iDrpKVMvx<q+Q(W
zT at pz%1Y7|7DSJ|zPE~9ls`#s3y$4-`G%MKvfZHC{a1s7}MQfQ_<mx<?Y?#-20;tUN
zet>pYH&B--52)E_06W=WA2gHo?c5B)?7)U?BC+0^e6WjwB?*qIED-lcvyd+0b}&i+
z1icCL+_{JwwGi922OkDvThJ8!n}uAvCmVSu*ICoB-*SVeA`RH2OUZ*BjbNu-S<TcY
zGbz}=104+PeMHZz9;9kSX0cvERg6W4|DMNHiuV<*M{Y3(v8Ee4;ot$=3&hm=LD)I=
z%Aq$@w}@YzhAJgVa{uC{WjKPR^-EL>+4!pkd^^$df+zN0Q2XpK4#c$qSF0VyyX#4A
zW5YJbiU~tbZj8l9lKSa;I(jm<R16UWc>%5wyYZR=lPlJZ>ND#(-1lCv|2p(IA_I36
zt%s>w6~Vr_Wk#h at 0kvUEX4#Xv+PS`HC6q0yoz-|`wR00;>QYrd({{Nr at TQ=sewM*c
z@!}SC2BRJn7XLD6xrfDjkt}3Mq^ML!ZwvQ2rRiiIU~5lPIjERWp_yVI`>QRUx?0lv
zWZ6DgG7D7ggsn<YJIzObT+~i#!%NmqHASux0b7GKqJru>4|Ft~m5>)Z>G6W3V*45X
z>!fk&MAZ~6Q(oMREWR#xEj7U{QT~cfq3MLFO)VI#Fu^t6qDyyweKod+wHs)12fq01
zUGLQtgaX0-KjE#0`;aYjf_<|PtnA7A`F+=>mzy-`(yt32g at ByvdF8G%!9JdH&uu-H
zafvTBkO{830E3a-{-85yP$gSfizu7I4uZU at O<`)W&YBy{T=N!raOa%9O5P!1{YT at 4
zh<n$>))f_kp4;b88%h>b2%5*{NX7HmI|n9!jf7Fzk})@Yd_~E$Mv2Mt#8AqRC^fU^
zDH6b<G at CWr>|sshK(`g%2Q3AW_z#RM$QdTTlbS~lVDGTt)vtlWre^$8SzQ%-D0qKP
zY#aRNYM|nwVE?p3K+|byg7;sZ1v=$jgB0|iLhl~ooo&6V7&?#MA>o~q=AFocH$P!1
zhG3qX=KULbyTUtQy;a;lrS}TqJ<NKmxYxkj?Y&Rc#g5+Vrncf$y#CNw5sD3as<JQ!
z?6q6Yds}(=WQ6}BS1+5l88 at C|wl&$PUUuS at r7rg@I0rQL73RS9;Qiaxs%qQ6tBt*y
zh@#4|&)6I$?5yrnnVPr<K}~;r7lcE$s!q|%HSuEI1;Xow@`zNl6fMGL2GDFgr+4p|
zU|$DrvF~(FP3$z=W}u>a!Dc-+fqXD{HTN at O@<Sr|s%6PbDnYd+dAhkt{16sq-w!BC
zayKPwjA}!rMKn%T?Z*CWH`$?;p)u5SiT_5!XZd(6oO=YSvS#XY6r;rPN)4tzjPj$3
zO6-p=chb9)YEfI#{TC{O*mmr<*Iljl+M9wx$l@{pir`&(58TzGHe^RT&?9ch#a=>K
zYR{cnb+NodvE4o2$^}_f8U~i<agS{7!W7HG4od7CV+X4&{Cn6f!K=<-)*dXi$KreJ
zShv&mjceoOd2XycSn&XNtV at pryJ9db60Um$dM9uuIxzu?(fx8nKZtU^0UI)LdyEZe
zw7(4sZnk3Tb*Ak~bOw+^(V{}t3I)&H6I}JIAwvbss at U$#x{``Ynzm^~$Sv7|$mYZN
zBO`AEJ7auTnEK!LJW(yO15E~kiaTn-I7%sMWs<qti1H5I${FU|hZVu;6d97MB1)X}
zKF1Ph>b6lwOw<p1C)zwdq*p>>_x|Rdu4J!-dHFGVC5i#krK at k<XCt=j?6*~~g#Gic
zLCkxBIf>ifJ8)p*DNKiHT*anzc9cQ2Z7u9vV7tBNk<YScd;@mE+sGH03=ELJpM?+d
zdDInX9;?8Dz1#bgY`-di5B8gP2Xs at Tb1L@d`&R;2uN1n-DV!F=v0Su)H&O157m{eG
z$cor at ItQ`ea;nRj7c8s2kB?yExSO93xraQ!eZ{bi*!wTwouAvaJ%LU6PS18XzlL3v
zcDb8(9`Bam#p5-%<e_^Qs~fD at 6)t<vl(YK_pf~Qh)%MtR_fh1B!AKRY%#7R;>>l=*
z+xvP}&!cYJBOf(PZPw!mmP%N#K)p7yS1l5F30gtaj5~tYw4!DVmbpk)?7?IxsN at k9
z0_jR=g at KUDP~?!Ecuii3wuPxA-NPWlZ&akHu;=r_4p2UnM%n6?ChA}d8#(NnAtw^|
zv+A>z7rH*C@<Z*wS}Sok`pCAe$L4h^*G*POuVr=Xc{{ihRf*kg<Lj?-Zxi%Abj^pI
zU?N40WrJ!^4(NUA&;xFaTpTR9Lq(@(CnI&-_IW+xS7fdN^d9tzVy>YWv=oaB#dZzc
zQMAlZ?6efC4aFV+WbWYEj8DWKz at 9dnUm4c>+_|*_qqlRTo#6Mkc7HnD_ejs-*iE$d
z_t?qp3HSXc+!Nk(V<WIbjOxpMmLuLhn?V)q9|<M$6};H0O6n<iy)F&Gz5vJ)yHwLu
z=|I!0GO$MtD*S!i$HZHWC(5zKrD`}q$6;4=(`A`%G2WgmcofvCx2y7rz1O_q!M>%a
zOE%3%>J^HbbFS^Ss9w!ndh;`-@@9vN9X3tdfW2N~4`Iut{&A#QD5$d2s7Mk734-US
zpo;YesJk{T7J-u8E#>`JdbbJh^zPOsdUp!%WOqx2UQh3C;XT|YOZCRCf_JJn*4Kqc
zCD_6HInl+cj}xsP+P`_kR+g!LPBDt=1DgX2f(<xBV9vG$!3!QTy_p=wKD3Nn195E`
z!7Z}ZQ;d2>NpB^vk=jc*MG~^`8e15x#tnN;!oYoM^E_7Ss-jPE%yc(YoRLGq>G74+
zI10Ln2`0rm?vezPH~ynCa<oR?OU{1xl3w0xdNDl6 at f|(7gCkkw*kIZK4_`>3t at to^
z0B^b2 at hgOOg9CWmrsXl2>IJBV&v>6q0#^X2cvf$@9!mCvBJst at ZQV$!F-J2FXGSSa
z#-2egL&q48ARHVr#u!F(r#mcs$=`(nPse>wF~-=Co07|o&qS?(YU_789<y~eUgZZq
zSIk#_(CgPlBgfg;;Y;sGsov!|gpz#wXaKbsVtgA>ikJA+N&@u~uj>sIM0R3sC2o6r
z&$31Out7#tSVmgihz)o~8M#X$<z#B at Sfd<RwYo7$LLUp+nH<6DnPr9<YtqIUljGrP
zlvR()qFk0jxBY`v9BrJ$7W;Td*1)-PyitBF at EdPTFDFB+Q;nY)`&2`ZlpLdoHEGt#
zaptl?9L8|%ZK}0ZT7r?zLrtPO9c8a^BUF at jU^LOW$O1G8=A9fl;9?kY2Yx%59d)!$
zwuiwZRp{W6Cy`#~6j-Rimcn4kB|HzMr6^?jRop`t<L9P6)fvn#9S=Iu{K^Iw;BF^5
z!-8q0){;3&PRrc^j4qM|N!IE2B<`H8^F20P<sjsY=<WO2yfcdAm^JpM(@}9eO*ifO
zO^BzBtOqr(x0&l8uF|eJ4vAoVMIswsDH1LP_(d>^wi8!Xz;LBQx0aD;E*m*%%k-%1
zFnlaIAit5*1U$anU42l&S8(*_zM_?UK>jSl6*6!uLj3ErBVFpC4^9bXjm%V-gFf!z
zt?xk}P!~`8!T8Kha<wJTWO0ce?%^i0>Szw8Cs|dc>y-*IMF_cN3!2F#W<JlwSUWTh
z69%u0d_l|G6-PIPgLyZT6uptThej`@PiLg!fEHq<Vq(tpP%k|6ujA{b%hyYFh{e2=
zm{14HK(a^&`~Q<1u6j at vm*lBd`V0$qBTn*Oz>Pr6>uLdZLPWW}YT59nCC#nD{!U%4
zlOj!{x+zlcL)Zl0NLA5ZRD*#fbl~nq%#QkUYWk0`p`CzKvJ+p%%aeJ(t|_Vk2aZQQ
zfiB<fZKm9mJ)Jm9RvVeB1aC8%i6%LobD=7A=9`7CH83zib6S>OZ2)B#KpU~$9-O8>
z2=RGkGU(4Tz%9cuHa=j?2+hsI^fe{qMBcM1*O_ga74$zC)Uqmjn$^%|805qF;UE$H
zrGqUF%`SN4Vfc at WY2=dMIoOZcNuLr7N%Nz}w#wt17qy<rd{Ls6s8fMZrGQ9{=tJi1
zEGLktlL=tgoDUdf>MQCr4<VCZaS%n~sL0A*V{#rgbr4D&c_`@zaf32FP at M&>@awfn
zrmB}xm7L<NE2{;uTZ`)8&HXVEMhSq3@>t{X>=RxW(LV>LDj`-^u_ArO>aLO%S|tQ$
zWTvN}z7gD~lY@^;^WYmS!68!WivESUhRn4TS1C5q!+3!fm{f8#Hx;C={9J`35CYj;
zT<M?`#-o&3sJKycdCVa`xp8g#w*K45RC#JWejU)C!84tr!8(zWQVtG((BRk>QHVTd
z2N}ZnZc|tLAyZdo5RO6gfk^#@AOtfe-_(=Ey!{CEBooa(Lnp35RFKqY^7{>wpR5Iv
z73BNLi78rrTG84Rlx-#JOKS_2=(6Dx>zZ7}9gQ7h(;7AEVOEFBp62O5$~dg)uwu%?
z_N?oSfoYB at gTizi+hA(0>GqXuL at z0-RMx~#O*XOCY}O^si27rz$xJb+GBtTfv?Vl|
zG;8uV9mC`jZ8gkOT8+wM)3e+NX3+5j{6}6ttCf<p3;l79y_egJU2I6&1yAz%f%*mn
zTcEeLg(l2*`na~xqT9 at LTlm38vIWj4*hAS+ at TnM+VwH)^yif*XNLoUweNGyLI$8~_
z438~BBe+g~<l;GN5%Y~in+gw-(!psAJ93z4Ri#ppJz!w$0=9E~(RO%~Y!}JsPk}jR
zifnus7#)SuxRxDWd#$e3 at Pj!_Cnd9@?$uKURE#Lb9Jw<CgDb%lXDS+npy{`x^=AG8
zss_U{jy6F_#CAVt#V++7stNPg>>CF9GwVT+{OWoescq}b+G9~FT6RiQoa}bIO=Ez6
zX_7svRxYSv%8PNOqej;Aic!uG{qU@=2snsmm>0tXuPIujSi?RGptjiN-sb|C5^@tf
zgZ<b)oL>a`|14R-0#p~9eAIk84-1aK_o>?JdL_?>0KO5Ef%@n$7p<e68fJt^78P`V
z$!p3E4m0S$EL&1=H3iH at NHtIj^RdVTpTXdkHMe`V<f++n>TDh*&KJ>m at Ka037F2DD
z?DeNikqsU-NQ+L{V4rUT`H>sO_JdSmw|-a^#+P1g*AVUFR$%;MtC~GofhDb1&r($N
z7$?A(H)z|o**b~_XX~!C`sz8%Kh02I at h$hD?U(una-V9nQ&l?ZR;u03^YClGj1K<s
zx=Ndrej`U8g2wZ$*J+Ttz+x02bD0hI;f$_+RZ|OdGFgPvW7KOTEr=Fotq2X*KdqOA
zk4L`kAvz(5neCuYd-x9-6ARD~W3mNG_Mt5HkuB-xn4I%TED2|wGQ-kaKV70e%#zFr
ztt{^!xAEi26r$Bb(}D7dLb8)pEo;DJ+oy(=ij}eIX?Utrl(Y);LJ<<5eAvLT^3m-e
zANTSRvZ+FW_KtBf8WzSKxT<(;x6JgT;KigUubgGObQ#fghnhXe@?}`ExSRHmTupJp
zIUEOT>9j29)g at cHYtU}nmJU_%G8KbL^gP8<P2xIECz|h at P>{k=>xU36zEfY1NhB&c
zssb|U6_Sa%uK?VWf@=QO7rk%Sq)t#NzKpzBbTF(!y*(MJJSr)rm4mh5eVDCt4wkRz
zwgoDvV`~XsuC)d5+JGEEk)ZA?0izBjl}U?EJxg?|>d+%ls>bm2sWZH$edJaM^R#>`
z4qf~H>ne`x)mu at r2aP<jW2I{BPFcuCE(7 at 3jnMVjTj!Hh9p)6*^r}PGpC49rFe5*1
zonb8%LDQ-Z8bq=YGAF@~+LdaD{F<RkHbdWJwF#q}r<kl$M(4(FRaV9(t&pCb^uz<k
z%?%}9$v7UNXK6);t2 at lnx`=n2rKMG>LaZxVgy3qP7FgY8Sj|&sLE)o2=9O^`rY at DS
zEqd<QZ&(r`1w*Q83(pbs at 064kyKy?iZoac?5k9~~u{YTT?)?BFY~vjc!R-Gg27UO|
z9CXw)HMBLiSh3}^?V6CSD$oNx*|uvUyDM5Sd&I)I?rFLw!)fL?01cHF8SB&C^?RIO
z0L<Q6#c>~<RX7yU9_WGoH<f}$NLMWQl*MFM><speKtG!!N$P-NsxHEl;(ov+qW)t&
z#T;QUR`@EJJgN8_>V-g8IvjISN=J=CzI5iKVn&;}hoaLE$25_R95S&ws)<kDrWoK;
zR%#;Pw#Zp`=+UXZIhf%W4?Aj>)FRyDD`IX<>`Ghb>J(<_5oaXDoNLTvB;RLDuH$$!
zOd5P9xa#XDoDt}TS<j)NwYa(^&$y_sR}#WtHLunjYO^p`lNP~^<h4aS1d)|RU<3m6
zdq}z(zS<hB>0fWyVCvvo!M-Qpj}Pt`bs-y^jaQ6ANrHW|)zcbNAg)(JQS*z4a|%cm
zZ;&NgB#g-O8JZ^>I`#R?NY1mS|Az5VRy~T&>cGt5;@O+SFkOw=oEV4kS3D2LGiej$
z7)Vv0a#g)2CW|Q>;?SBNF{CisPK3pok^>S_C!R9j<rP1{N+%+Xm6DSudfMapQmjaw
zSg!|x`&43w*e2 at idA8iu#`Yx^AyKRcV50L7+G^6~sm*TWS>kRm#-z0982xVeB~`dz
zGIpv<OtJ)l9gBiJDRn&s`#>ogXMf|tRrA}T=V?~Mz)H<+3-+FcTQ$F}2lW^hi;Us)
z5GI*(+k*Ws=OHX6oKaS`Lz<VJa7G*0ifyE*d8Lb7h^*ELu`@?s)@Uj$Ysl+RMnTE9
zX9`XnS+z@%vEH<E%Q}fz%W&grR_WY4_pG at E!M=-;N-}*|(Oizt5 at +$_{2(7;<f-cM
zc at nDX@nPPvdfdaC*rj<}bI(*F?^J=RLy(C=#H!KbVPw6Pd8&h4Nq=~5pukqRI)W+T
z?$a;epjt1fO4F#!n<&z}l0-=K9{Tsnp%nC-v=>KIOeUL&{mRGiKpikyRdq1r6rm0b
zTbnETY$^^lQO*qX7#574EKo-6fKM_$hjJk?t0|04azR>RkP4-3sH!tbvR#rO?>UT~
z_zGHN`~46n8Mnh8QH3UcuF75?Q>EexA?(V at GcW`0jROZZ|3D4bj7aq1VZmB6eYF!L
ziSJ-mTeAG45!FH?HS-vGdiiGn%wTepC*7LH8%ZN|VlH^8bya3Wksl;et^1cbY^F{x
zJq#veWVj9C%q;8;<PL4ak~kH6oo>BgeyS#db*?ADKsQ at g)<jCzET42*?6lTZwPLDu
z{S%6#;`|}as|tY=!B+L!0BNb!wHyl>B~eG;GK4y<{9GiCr<GGMG=(^XjHyN2$^_Cj
z8HDwcN+sJ?Wi5Ca*Y&Jvgke24MW$_~cjgw(n3ru^S$-LboOf(jLNXuE(&aeV#~oJ9
z1mrT at nh83Fn@(G at Wko{PtLbZ|!)1$T;;TTD-}~kF{BQ0~pEcR}7VQhGbkumJo)?jL
z2ccPCqZzJ4`c&MBjS2hRFCG8p%SjwPq;$V27$)I*IWOM62YB-A>7oADyd(Y59_ALU
zt}aNF8 at bqFNn2N$RuHODKceNbjfQQx&Pu$C&$P7vWNlwS3s_AHutnq;kf8i&b?TF-
zwcTq&NUX*g%SexH$T_chkDS*$%x7M6aMe!{GV|Q##9DZ%@kgeM$`Hj|6{_ at Nu1z*$
zF(-B6d^Ukt4fdw7j1WLo)!g`ssA`UeA$Scx*#*aNzbYxH!1zHJ-*t8mpns}Q)-Gb7
zINHKzajLeb)Zt8RU6 at obd$u-9OX4ob2feR_SZZqEu;kRhc`7S(gPZs&Yb)dg1z}Ej
zBG`S4eNX!TOAA94>_lBk^Bd&VHdTB0V2eI|^H4vEsRJ*nKy2hOe*j)$IUA?(<H$Ta
zjXx~|4#7Of4BT!cw^)KzuYM6qpL91QL{FQXTQ}7Eyn}n6c5v^Z6ZeM3fVtG4h0wNx
z;n7deBYgE8r0HogJ;HnUV20H9z~~ObD%ih*-SvZ$T=?N6y3?<x11ml2I3L`UL8M^+
zF!hRHs0Z*dC6yBMt!LL)GlzVXoo#e*Z(|VVr;5jZA==fDIn+00sHE!B;^i25lFeaY
z<DE?@CQJHFc$B!D at R)g-Yo_ at l-bmAF{#ktf)pAPy|M%XTjRH0`(3E;#EfDi^YOo2y
zpz1^5&3SbJtNm>lzX4(FEEh}scfI;2tl_QBjcwaCe+vvU_68;wSLf{t{DmEhHwHHq
zlIOPS$+)18R;>rgReuF9F9Vfo-41qCn0!C_bReA0p$yn_HD=c6sR8|iUpWmE@`~NF
zs!OA}^x->CUb2epS?=~eSiovg?K|McXMmu)*u4qo-nu1kxtsrvvq~T6Iv0oXcH?B&
z+^sl!x91+Q&x0yA8^<tOF*u~YE+&pb at ig;tu&`s`aty9*)jg`E at KJZ_pP6qFpKP8c
z=u}`V_ at P}>?xkMTMAb8KYnQ_9>QcC#PmubSNxPR*HSN8fPeuRK9v+w^r{1KtB>Rgh
zFH_r+P!9A$M_p_PwVG<MMz9h-T3Yl_>_>2pUZ24*%0~wBlZ$w4&lczYVuZ3Egpz$@
z<Wy>(h#t%z)KhH~cl*FaGVyx+Fz!YcmvHLd7R)9Xt@?=#MTPig at FA0Cr`VVkXZ26j
zQpo`@G_2{<Y!4e6qW3HZE5nrxTlh+&ZPl_!&Lst_v?UEa6_%AH>3h28>=XmGY3TtF
zx1Lv!k`{5RwTejj?p_z~%q(ikd-t6wDwQUzXiQuL>thTd<;MbH)|{EQAvJX(rk9(c
zi3e)m04r_Ji<GJNaj%GZHcdK$*t3z?f19{CzgagJ$qC);&m*7M{rx|YQB1k{u7Eo|
z at k{j_ke+0{5bTdji%bTwX1CjZk)pPDDpEbtqm!wJ9?aLOo8WB}VJDbYLkph)41>jr
zZgt&FxeA1S9h-*<?ha(srzeY<hh#czQ>+?auvwI(emEI7;AIB(c7s}Nb_qLTZX~0z
zO1iJ;9wjTrX4k2KAWgw?zdK1>XYPckiG|4&q{emleo5QnYqbtywT4}qBy2uh+7fPG
z_A$LD`DqijEHu}d;%K^eR7~P|)qA<GXk|(#s`@i^2iHC!-aYINieaP(Cctpqh}kn&
zM8Z)5lTxcGnGK2mL2Sxj{ZnO6zwHXmB{qYo_ew0aQe)^T%S@=_vSk(+i%pB-rVLU1
z>-C$=d}=GH>co3^TTC+=R02s-lfN=IwvzsTOWI_=Um3<(5M at YKB?}jF!JCrAA?nrG
zPVbUdM5U;KBV$6mr(vzp-)>+;=(y+rq{N+ydG}4}x=SjolBNer7QDm?zTf}rbtbZv
zib at mVeGV=B9~VKrqp7_50pqs?Bhi-jbRX4Y{ZwHZl5uq^fX&;)k?Ij0vv~Jpw`9ND
ze;^vrs!z_{OY1GB_d)KjM5fr**w&%8g>ViW$U3w$@N$mxWOm@~96sh2Gvg23d`1=q
z9|O1KI{%dw_(`s_GpnpW*ZE_1;A^>AJ8}ZQ$aUV!2>?OP(;c{ZRMsK<%)crN|1@~u
z=CxT_{aLMnpP%UbHY at P!G0xw!1NWZjBys`=#yI-|f%u8et-}I0p6J{?Z1VR{bpAek
zYvA at V&UL}SwiBJc!+HPi;enUOWUU<?czcX<V07T=G0v?=5Z``800CY*BJjg8&a+2e
zmjmbrpE(WxUkepIGRC>{gus(yoc}(7jBXyodn2Zn^X!Q at P$^r;iL}0-6?iSzxiLHN
zw_NA@*=7Hg>)f0ZcrG{VN4bIi06wS$fXKAYLhzL$tp~D-)?^3P<vHKa3H0STcjuhA
zHqW^?H?ViOvpo=ab+~iSaNbkFV-fVg%_n6Y^SvD0y)``W`XN~f9!Pu5h`^c=&QC|+
zHYM-Q?5sa!e>t$F+WBox;QAWpmE6FNYUi53q`_&<FNX#0nC5&pFR)>nv;L64x at pd@
z4>@}6G-uO at z&$n2Ya;`<);QlkEU>5Ax$UrtFH}2k<?qV+LD+d=RN$tt^W5QqHDPD}
z;m58FJ8yp~@J@~M^&<lNs-4 at 94D70L{`087UuvA+9(D9SFf9yRKizr$(}A5~XW*E?
zAHvSJkD2&z*x7qb;J&bP*Rg at y!db5z7wDVjynK9MZ`ipiblj`(4F&d0bG|($@aQz>
z#iDsHOmo(pTDJo<X9l*{WUUz&c(BIVGJgK*>CV=P0SNcUi2?B3J(2jzNld^^lbF0a
zCQ-IWCsBr1Cn=tjN%M9^0NfrqJFvPYYs0y`-*#>hV(G6eT3_QlTp9RXwewD80O|ck
z74Pq=Dn?w_Ol8>3Q&&+D)=m%0%Dp(HbmY;|=N^ka?gQ&`oNv%hevutmo8vr}eG)Pb
z8CVJk*F$ComN|0+eOU at D1gIU~7pky_BKNL}cjUS8<M9PKdS>$d#f{^=5~IKvA1lXe
z9~R?nDNT)!RXo%4*V_28MVP-3J*id=xuWY*@>jn8sRnwjq6gXCyZ at xV>!}yRGdsIF
zn$K+R?BO<;&Vr`4_STkAv?J8f*}5c@<~hQVCo4{w(%my3+s5ON)s7bDOzfk1W=rd3
zZOyISypOgnCQtqx{^JHvXLdI?wet+%g&mi*b}i}Xa_sUREaq|AmbA1k!%=PBZ7W*U
zzf+uPT9~DaAX5mZnYJKsXaOHiaiYsRTP*>krEh3KSI1)Q at 3gmG*4plL<1o(FmPW+i
zxVWj)BYsmSQrO~@E at KLM+K~k(bx#R3Hg<M&hl&wr^P*5&cj%-QJtd)YLeWKS-DjLb
z*@{a%zK#;3rz<6*M{8a&Aub{gbu93z_taBQy|8NbtlC-AaThYF2X%LA6auIuHZ8!>
zjcw88V?*KYXd6yQMrKvl%|X&zztq#Zq<ML0anth9{MJz0lID)CuGZ%0*b!;*XW- at 3
zF1ZXD(-LZK!djgW6B$yguA);yDSJ at SE5Gg@2(b+MI!L(ivQESe;pQ)owswcKeZwxA
zJC-acZmh3voK-jb{OWLh{rR)&8_%B=nN?z=TG|#}6jCRRPBFopIZJpTGL5oz8ID$M
zj)s<~!;z^%B)%I-)Mpb+nS%3QA!s|!g*B(B>X`L^RlcxBvlidaH~#cLv`cOWinqiL
z?0$G=+6YfE-w=0U?*@1C-ds2M^9S6GCR{cKO at e)wqXUHH$hF)U?d_Q*uhv#zPEt9)
z!3~^^#*^<n72ATV4o8K7<~P{Ck6znyiztvA&n>FWdayP=tagBe=m8Yg#;0KmPxi^s
zGV@;uA0;pwq=ezP9{^?u1?)Yht(WmW4%%7<;O7W%2=O6Q6`xj&ofa{lv0`_yuT&9^
z#yjY)-4o1rTx^Np#$7~w9=^`Fi0(YpIWA%xEOmPyD8=)hxVtxY-d^l}7432dy6^(G
z4CLe7c%EDFx1LSd*#Mg|PS2{s4mZKx*O17n_Xe at w<fC|d2xI=i=-^!ym8;JIh}j1T
zfDGWqR^;uzQGFM>XD8mA;J(6?g7G%fJIO6dJj>S^n at J;3?QK_?u*+nE4tF5vp0GVK
z&{CP>#-Yp2FXU36y$_bUO!6k`IJP4adw%zss=iB4uTCd~@uu~m=mkt5k{cPQgk~u6
zxClnZHl@;fJ9z7~{vD}iT7QO3G7hO(ozKKZ*N0<+Q-gO$vi2{S8jB3uzxz6s-c))x
z0VurP-JBsk?m!LFvw0`eG84OY25aL>x!Yx=<aMnc*73;lf|;>}d2ZH at +Su{6vFVT#
zSuNi1|3Z`NeQ>h)C=!Vu5{c!9W1DBi8xGk!E7p*|H!^TuVQueodm|-}S7q&SOWv%)
zw>*`dtDZs*@Tu&*s at Pk-Tk~ecj~#V>?ATE?6<fPrOWe!+iDP)@oSN9SNIX)pHxi4S
zBl&?@P1aWI9NN1-FSsfj^tdm>wtahhw}IK{tn*`|vnt;2dOh(H-ZzwfdIz(DtN4^w
z%G}`e2i$?&O6tTKO5#aUA<2coyPPU)I#-Z*7yV;19yt)j5<%<-q({_hW4S0#m<EJG
z!IA-0VP6bRKCo~8^iVHCC_{;#CHX|+MMa69A)<H%@-ueM)OaLoAM+FYeJsmMjE7H6
z{1AB6#PU;qiS at ue`LF16DDpk2>SG(G0d5<TFwUsb`P_SUk<&BPrXoFmqf?A6$V~6q
zEkDt)wnMUa|AHw+n$3Is?z>b-?Ykutmmk{BzNl1NS{F3+v_~6Fqsi*aY#Gu2Ua+s4
zC0|vn`%QHkds}ZNeIfKby&w`lg`59u-izVpJ;B~b5jIltyxtqg-Iy%P^e=h9#r(BZ
zU9{eTS*TSb$f|*n!`#@&A_iXdECP!#S%avDX(5q;vmc^RcA)XRfwPM-cI$4#R4A4N
zZo;>lcPjH?f|zT(`S~2B02H%e|KsqS+5bYY|20L0`Xn|MW$_^_asQw;#%g&9dRz|{
ziUMWpQO?<<yr at 5WcV|V9L#953jT;aHN5<#k+xefhqA_<l>#5q<EYPJf(sqkM`jv{2
zolg?Pcsz_`vo~$3C2-PH80;SdMJCGd&yI(y{SaQUuW+^T%L*bT*oRh^ip0^N)bSdh
z-7iS<fgrRI)pMj!L);$LuZ~lBT_rCo`^HxB+WOdI>gqUq&OJz{u=LDmH at ao&qW0lx
zymZkD(P=Cl(rLtoU8)m_Q0%FqL$@rQzNwk<XLQr6tEYsD=gjX}6730<jUPLHZ0Q*j
zd(`8&FOMr9TUtK0ti*VL0oru6(v}_b>9gi=YSthzG@;7bv#GLH%yzPt6=WSVa(EuU
z`t$n?y8p^4tHWKX`4J5BUsZm=)!8-qg}pg7`Jsjp`GwQ-3u^N7!iUbvFN9xJex6eZ
zvKG?9P3AvPE*z1c$1`2Ye<d-v3;1tpe!&{@yE<ojeyBH>vaKf$r_MA1&t4?J%9XXE
zE~2C!&PDysF;?~(JQNXuJAkz0@@86o!L`{_^9u)Zrsjv%<W}VuUmd8*FYO&xlfO1=
z#fbb;AXWJxP(X^Q`FYb0bwUWnzBC=<SA0O-JM8Mfn%se$Yat8MRD(F^)OlKnXCQle
ze&L!NaJ!oE^aiFQP&QJ{2&!xZ;X}(2W~B++Lk0+I(htJk-0TQciZm-}K4))nP8UdX
zO}KL)gOUqUUzc5*UwAFkH;_9uzjzJPcQw*Cxp(;V{GGWuKh7GFKe<|^6g0_{PDNIz
zw9Yj=zefJ}ISAA{{OVzA0t30%=3JM}c&{)tzsF*+RJ_PD8E*~at<v%C8J=?t<Ap5H
zg^V|B<K1p}ei~OD at 1Eh_c;B(IrKJ~X7!q$Py>BsI$l{6jJR7eIUUXdM=$GDhLsJZb
zRC+z}Dm|O at ZqLm*Gbf{-YizuOhUdM>c(<qNIRg9zL&Mi>6)$Y#I@<5GIp?S6uZp)O
zzcc5L*%{Sbbtv<V{dl_dC(3lV>H14c$H<(D<9!%{PYA!&hUXkBWB&G$GT)-0nWuzz
zoM)JS=O at z;&X9)b`E}X<l`%&5(50CSX!@3|k3RPJ at 7(-487tC?sESOy{2pfYw<a5f
z?`oFI-rPujY4$HisN$$g7_5=?$|WY;6x^#@R1vvX=d59Nu&iHU{MTCl`7E<3zN`gZ
zQ)F9{_f?0I_dO;ozb9$l5XA6iUAG2$q&q}k4*H+!%yr&8kclW~$O&MYD#wR&j>C;y
z)7?lsW(z)H<2}RRv?)4Or{lUBKhje#bgDkbmGx96{3;*(10Q at jGJt&cDDJ5<vVP@*
zlPt$!iA#5X1AUgzL!R*-16w9;pY4_2IqI~jbUwA9&ldbu`(#LR)Cnl*^h*@|FlW25
z0oL1e&lo;7JnLS%&w-BVEijEQ>sz{SDg01pi+*%iXVSf7==T)rXM0u*hodQ{Du3`|
zT}QV`;mEIJ^fT)>x`d&(^&aae>vEDOXIcbju41kl<s3X-W2|53W-9zp=M<!mj&+1}
zIqD=B`=qbe82T%W;#vOaegvHPQlKA``SV+Yo8%_(*A1V$3?KFF)`ZPby%F<ZE<xxw
zTi~+n<)~AF(&?wD{E%F=f2F~#oHo=ngNH0&t`UVFo0Qvnf6maCTEJW{G<cl{|ANB3
zu{sX-Hc$1GQh^p4+#90Z at UKjfs=F?Qk8<XE at MQ`w7-H#H8v2zU`d)<}D>SVMVg?U+
z=&v(;Z2e-rZ!q`{3z+N83NLV~JotKppYFkbX!v+w=RXYnG>^w^2A}W2?^5_ at oOvGn
zK109SgFj&KYd!eG24CyJA6NJ&r__{l>-`5qf42q9_0I<XqX*w<@V|KQmkf?VmgZhH
z`0g~6Uup;xI5{4AeAa;*<?Q7}xc!FyK7sKzSC!8K=LQcx!r-b$FZ>D=KFYbt6Yr4*
zpXb4kRruk8gT5W3a5b+b&97MDrcxF@^MHHH3carcJ|;WWZmMJgzsZOGJ3jbpK6nW#
zqD=8l at WIdZ!Dss5vw<I;JuGQgd{3h50)9evNZs=v#8d8CA3opn!8iEeclh9gKKLJe
z at It6QlYW-_(3kkom-*n;KKN|lN^hoJQ}2AxP^S-mE$}hfTneq7de6h{Rv&yn at J#6{
zLRTgeKFJ4f_Q5y!;D7MJv(XXE6z?=2oGVQ;(SO4Sf5->l>4P7J*@Kz*ALoOY`QS5s
z at XLL0?k$%o-dlX|M}6?gFojHfmipjd at xj;o;J5qW_xRwOeDFto at c;I~^RRY3Q at W1#
z!6*6PbA0fnKKQqN at W1-tRS+_hoLBkan|<&neeitr(=+ie^ue2a at E`l&yMT|$=BbL>
zaeRPoA)2~O@%H=R-|)e|>x19wgTLy7mqEl#@=OIjM)d#fdr7+weYX#OIdIm)^Qv|F
z`JPXAgAe^JKKKS7{B|Gy$DyHTyaiz$-&%cfe(S@>Ngc}RG+tC6ZSStFkCv4+<7<8+
zzW=sGyK9 at n;n~2(>lq0hn1|5Xw79mpp)rip<m+ZMk8SJjY8qSmiGqv3vnuA}qxz!7
zO<k9kjcc49Ie%(Zq_J^UV_Dh6x~{e*(QsE+M_1L7mYTNK+Vf^tjhoy!qj~lxIeUI~
z)x^g7agE_{__CVL^BWo=_{WWV;wO*0Y{LIy<o}xq|3}k3p&Uy82QqE^I8XTL7o_ET
zX}y|CQ;QEC<EOVq!<U82)ij;Pi#{TmG@>EQ#x{4fw;a^c#?8jOnrWC;GYzwDYTLu%
z`Lkzy67#NWXiSwzDN}l(`sYXYp-CK92EAeuN%ivP_SWvY)~@<i%u#6x&#G^n1elti
zRIlePg%75xkHhCfg(^!|#3#|X%BuQFjnMqT#Qx{T^x+9Bt?ulx>TElxU}=;e%2=zP
z^Ox!|eW{x!JL7_B_2J777Kd-34AEI*s2&%-%zCF6R!eb^g6cye3Pd`EiO9A)m~huv
z+nCleq|-ZNBh_V-)&C0qA6Lr%<JE1M`mgTG)h+*Ns&Tw6Q~xKZTSZl-$jUULLYGaX
zui~%nCh>8cx*ezP%hmt!D)@L6e7p)iUd2<cq$yYNlxsnhZ at Ho@SA51R?&T`F at fuM)
zCn#isPLJkL!K|&1PSmp$YBMOYqM8Q5A{?%7s#VQv%>-o<_0e%<Z5`c>=svVIwztji
zYU)~!31e+hWiK=8qZ67r!4Tby$t at j?OWRsnmxP-!Pq3 at KbqS(H&tqa^V~6f_n2Bb!
z%^$6g($LsYieAb@^it}_H at 53UROo&TM9Ro!0_vuwt}r4P*H{a&@rz>Wp9<SCzOyF^
z;V4ykGbYYybi#u6p6*3RZ0oYNC?V048PX6qH5ZQUYF#k4v2o$DWsR7X+1;@OGXkT_
z8!tl_s<C-lQ{%#(rmmL8rsgm8v~@A!B}*4O3tOX$Ajy)Z#jTvmX#=H&=xT-N-CES>
zB=TBTR#rAn&Lqv0WaJmx)e21KYevs5+8Um{cro}Q+0B<WHZQugkrNXkMoW9$W%Ljt
z&hO|#g6Aw*iW#Mivs=4+Af0deS)32zTc&+Kwv`#KA3L0mui=9F=!aMYWv-7-wl-{%
z(a-=BDL1yXz;=o=*rg8sA#tFq(H0HYA^3!3cA=L&zh?n*tgJB%CY1DJL}>f#oWrZx
z4DHreCw2Z&sLMG`IgAcJ<QT8Y#`ypiceJQHM?pr3VJUBGZe*k|s!46#jVciHUCD1=
zA`T{$*4IZ72t~D{yVaV_kl1TdIh;wWL)D>Uo`?ypP3^5Fw9NS$Yiey}r6?_Cf-Jjg
zv+LVt>&BnDN$J2(@tV0RN%LD5wk>IFZi+T9GGz-BmhCeQ?<3{8k+wcM2^9q<ena~R
z>3NOQ1zo($wHdQD_2i_+gS=1Gmp9^duK~6g#w}Ha9RIkLOgUy$w}hJ)JJF8zj-{=t
z{*)~M>}sZN0#pmZtZhU!yQHI$nG$X5Si**Zli(M(E^h8z?sV$8+Kt_<?F*6*P=TGh
z-MFOF<ZAPxu8t)g;~Os+S2hk)=9^lUH^O|HFCD+6V=3ZEG4h0k8qxkBnvSI~Zstt4
zYPry?m0G-`C)(Jtps}lI$--8Y55x%Ha_ifsr+haybuC2wxFkB1LWXZ#u$UApwAde4
z!OAdO+PX2ZUKfn|XjjH|?w at 4~5VPR|SZPvFQ_*!GpRk0$7?`gys*0`Q9}ADrrp%i9
zEM1^fg$j9m3Z&Ksg_%{~(cT?a-DQ!ekJyGP?RT|ywl_7mh8HhJHln>`8BS{FBQj!R
z+|=FOws1*!_6$?p1ecGe<5W%d@%nFNlORR<41Wx~%rHYIvntSoS<<6A8Au+Mm at IB;
zZ)}UUb~Qyix at zk{2EoH&JH#T(3wm}7ql;LwJGxY9P&Hu}x;Q9hDDs^hoy{GXK-khY
zPU)|$t2;dV6XwaJuGa3>uFH at g|3Fr#<tuFZ*#Bwk?r0u29{nR!L|DtBGT3Ui1(wtj
z4lC8A&*Me>sI#yngqOuwmBWCkj-q|JP`wMYc!Qn3_Kv2Orpp$x+EeQC31u4c6u-$B
zF~h>2ruMQ)wdh*3p^LeqwO$R~b)&j->=#B(tC)=+W<o31ZN>|U*9&}=z~=~jy}|iq
zl5=V-pL-1M<zv5#6X&s~mi~D`KUd)I7~IQ$v>8wJ@;Of6l25(C$%miDY`kCe;N(Xa
z_u!WP8-oAEptJaQ1%8RZ?-KYI1pX(1e^KDi8QjWg<#}JwHwyYgNeD+enU9=@N=JMi
zepb!{0&fy{qxoJ)dMW2hflE2J2wcW{s1ev3 at 1VeCyjZcR9L4%K{P0;#xns?D1A1SI
zpOybagOk1;KNH-U;=wJSs|26Lg3oF}zXUkvx6%Db(0Ab3#(TTKC7;a#?-caU2)sey
zZwmZN0>_ZOa!i+$=Q9HDf}c&-DF$cyS!S)Ar2>x%e3Ib9Z at iYzG(nGQA<3sf&{NNr
zJ}T&!3i_W2e3`(v30&&o34u#{xXescV7lfBK6-u*=R!Ho$pZh8p(lQdz<(j|Vu9NU
z1LWT<@K2eE1msg9 at VLRf@^BsnomZY;3;b00+kAOM;HL>Zg!uq;UU|;*!58`9od00?
z$ntW7!6_&6k at 3*26SypQw+me6`(gO*Psi}m{zn^}{H5J~R?y3G<O*E!X%Ku)2QRC)
zO9Z_vUzZD9+SOWt%kuT#g8vzU|Dl*yK*w}liJy&kvcSJA at H$fvy!myxz`r8s*ZAPy
z at xg!UgWvCi|HcP@#s^RM;QM^=yu*+fIHp&o>lh!LyPVT`>8JSM(|quy0+;3VM*?4o
zcx-;%W^mf!=LCKT<^#}Co~!V)^kW3RO5oECPCjD=eubcy@^GF59r at 40&+^|Q at Lqu*
zVLm#OUe?>Q1upr2-r(NywOrt`UAS8Ck^I*RT(%203O=%3xK+^0cHxhL{@;)WV>Zqk
zf?l=@CtyARomW3&4bF7Q`n+D?r^3(bvr*t at 3jB6~mkRtIfy;jBuMJLlWdHU-L4Ste
z!$XJYNH6P|w*-9|{H&aR6S$0bzu+U|9d<am>vlxOTWWB|+lQa!?+UzM;4OmBIDua(
za4Aox;3MVf5%|@D&((s at c!AIQ6dvFxr=-8g;LP80{H**71upsY`S4liL;tA2+fDqq
zI6FMJwa?cDK0(OyuE3>!{%&xlt6tELAB_h%;@9A3(>2H7Oz%X2Uwi}};JoyA3S8RN
z(*j?OaF+j at 0+;ph2R?Ygkt$jhucZHs4?fWculB*``rw!P;7fh*ulnHM^ud4PgWu_c
zKkS45!3Td+;Ih3Kaa2m5t3<w>VsPfWY%j(OT$bzQ0-q%KeA(c%lbFD7@}a*)(0^6X
ze^21DU;Sere6tV#t%6?4^OB&SEaH7b;1vRYNAQUY{BHu6a_;xRa|#g{j{1 at Gc|Q1I
zKKLmHXMRn>&z7-;Z~nZRYdm+<6jILag2>&p#J{<3{sDd=VY{2D<o>#=|L;I<yy
zCHO2x99I4}1pN}=raE%+K8*)B$|?KdqXjPc6bZZ&VJ!bjfy?@8j=;Yp=ocECdXVz0
z5_lK<Y`WG6KHY-PHw7LQ_$`7 at kKl8wpubGe4+?tf*~a^{pkFHJk233ysJ8)uPZGG)
zLzTd#ooq2U^>8hIHeY at x@aupx9=gN05D$*@C*f!HKiY#^`YMC-S=yB==%pRrAaKTO
z^>B;eBkkcXK~MS5#*glGLBAHyR?c??{nvn7{^e##66KWqD-F){P7!=uK`-0i*#iH%
zp#P%abC$pt2ztrqQGtI$&_5^m$n*|B4n%O2UzYcLgHwKKhsOzeX@@0(Ug|$AaG77T
z1s`djYXmOk`A;8w%<+_dsQk48zaIWJAD0PS+Vi;~a?yO|;cDrph4299we!Ux1rHe~
zxkBL5&U-z$wexEQP8+oGo_qox;Jo&KhQTS1)aO)z%W~J}!L8k{5&Wgy{!q|MJ9$RX
z%X0C8pqJ(1v at uG2CBNkF3S8Q4gTa}u&*EqGaETB70)fl&(k1wuBlxTk^fKOe1TM=<
z at rfz<r5&DW at N9U?a#100nJ?1>A6Z^z3VNAepZDN4zpfN~WO?ZqxU45{@bIzrw$+1M
z{?7|OGQW;3O6fu7`xyqO9%Q~Z33|!r%L14B|El0~E_m5||GE#oYCJ%fi=WJ|auzl?
z;?4M3K4%%+n_u;UUgpb1f?np!0uOHWc9p<ozF#Z&%lx`c;4;4kefa!N;O$74jrXq}
zoav at Jl7kL#OfTszKGxuTmiaP4&@X|XZO2;#eFt!>&o2pF^0`XjvVZkGfy;iypulB*
z?GU)^ca7&DI2`5wHhxx~%LG0k at E;kRdbmK~cM7~x;4ce4(mszY1`!<Ny%0YeZ%E*C
z1%8&mW&X}EIOUOcGGE}*-fr>WHs60J_)GmiD{xs(Ul)92IUQ31LEyahaIV0m9;O+b
z@>k(!^>Bd?{T%|A<#d<8Wxl^5_{)0rfS{M<bl9nsUfa3U+u<JE>g^1HOZ`tVIQ1aQ
zX;k1+&aVnw=I_ at G?#<r~0+({W;=!$)ZwdY~e@{P6C0FH_%-^#N&Uj`1b_jaOXN|yR
z{@x_`Oa(8Szw3SI_X}L+ at 3_-ba!S2b7 at Ts-{H+%FzroMyp-%9T`F^3Gm-=k>;FeFH
z;3M<*R)JqC(yI<)#WUq>$B%YF_a{Sd at sS#K^3TvW7Ps^#8r)mHP8IaBzMUoLJHXQF
z|6+kJ7WkzCm-X!$fy?^#y8 at T>>aPSY>(xgM&U8sRUlF)`&wXF;=@xQkjl}~T^$^9+
zrYq0j<S*^vGlE{`dy$}*`BLh^ZNAJ9xU{Pl!C%_LDuGM8-6C*lC%^IGpAfjT&lAr?
zLgAQR;#SVn4DPj)R)Nd%9u<6KdEX%D7lXgm^8*5x<^2)Cr&`cI?L%Kt3L-elDa-p}
zflIwb4erg~K0z<@H!kR}Gx0FK8$Gzy+b;wz^LLZrFZ1_*1TN(qC}S)-U0=r4>h0ul
z3Rda8S>Uq`&UDoX{6ay$PT*Jh;75)J5ghd?<vB*+SHaK9Qzh_Q1b(T&za{Xs0+;-+
zF9#8vH{QntJ`esj-nRwbEAYYzcz`3HdH7lSa|ABwxA@@yIT3;3yz<PLlo|h$55COc
z%$Ftjjn=`Pn+4tl%-YWe!KWLzmH$qGM+JVL;3Mm+Cj`B;=N*E+9ekKRx)(gSmFIxK
zr9Br;*5Md_DSlSYa|AB)x5)>8OyKhbpSJ}r^Q*4{L~x8(+W+ka_uBtmf?nGHb3S+%
z2gTsL`My-((*AD|xU~O=1pY1Xv-){m;8H)sIfw?wcpLDu^hf#Nrwja>g1$=N*9-jf
zK6sB0KH!7@%m;s3;PXVhdj&4@@eU3u!7;t_ at U!Xtv%n>NBL`pLNH6g}8{AvIJ`lJp
zUn4m90!Kcwd>tilS-y at lIQh%+HD1um at -;=!%knkNgWK}eByd^2RtWyGe61IFGi0)Q
z+v0;KeDI4or~$`xv8Y)-Edpl|v3Q%oskgYmdj)-1;Hw4wjROCk5B-mQ=r;@cX at bvI
zLH|{O at ARR6QP9T({VM`*5_oPU9^j}S8Sf#LM78}$KBrYGSkX_%t<~H40+)Om3{HJY
z`MU(Y)aOz`FZFqY5B;}&=(h-Z*Gb9wy1=Ij{9S=d`qQdF1V{Zye1X7g;b--*Sm5Ug
zyuTU`aMZ*1 at U!$!2>cR(e<1Mh3%t1o4{(&{0{kqW4uQ`Qc+}vGw_f1i5ct0f{1$;X
z3H*Bkze?agF}PQr+XVd&1pVEDJ|ghv1^tBre^uaf1%4Eb29ELO;AiWZF&=z0iQp!A
za7%x#!E-@#F at 9E`Gd%Q`&ld%~%&#_q|4{Jh_TjTk&^HSDl|J+(prNCjG9Qh(DZBxG
zR{rCu6gcYVF#HbT1KepI+|oZYO#54U^BUzOJb14rbKdpf%p1D>9^7<4oDsvdzvcgR
z{pftQFdcu!;I$t7zYIRdgOAM89$)m}XBm8<2j67)bbD~u(0|2)Uuf{S2e<Lw=)vuN
za^Lsh>kXfud+=ojzt at 8=G59tQex$*F at 4@p7{;UW8tx509WAu&H|5Jwk^B(+k62P^3
zaAioqzvRJRFnq4`;Aa^=ea9<yNjqF*@U<TNW`nQu;6FF`1`qy2gWuu7Rb_xE<5lVL
ze$m+d^&Y&};Ojm3iw3{dgSWB(!rkM+yA1xI2Y=q++dcU24gMDoKE>d>JosLNzvIEb
zV{m7xmWyg(c^?(f&m%qfcTKtqJ@`aJU*y5V1~2vC-!}N!9(;?zT at U`K!5cjI+XkQK
z!Ch02w0rPh8Tpra at Gl$sJ`X-%@U<TNHiNJ8;P)7Og9m at X;CFcNJX5a?dhk;W{-_7P
z!r(hR_@|8?Uhv?0Ury}A at 4*ikKKnfQiAFzp)#>)Yvt#H+d+<~9G#>KcHyZlWJ@{lp
zKiPvHF#4(S;O86qIuG7v at Jl@SG=uN0(Q;+uLVI3j at Z4}ZK49>*9(<F**Lm<?7~Hmp
zEI!Tn*>-T0X0O`Q7J<w5w^iV_og|+ofltIe9r5M(S^hNy;h3&={A at pD5kWZ8FU8N&
z_Y#C7F5_LTP>rv^y`>)z_~iosw!p6t_?-fm{5J|*rfZWAZrf+dxduNgk8RJr_=|#%
zl*hK8-t^k`&CAEOhhDraOGn`4Gg06&UADhKdWp{w^fFzS2wdvFN#Iidww)(`X%Dv=
zdfJ10FaDL_Bkkc20+;z^+jFn{wte=-`-X^D+Tkb)0!Mlouk9BQm+_VfdZ~wr0+)KI
z7P!p!FA7}pZx(nH;<k2W`w`ysb_sf!Usw3xw%_4Rm+fB=mwbLE_}n1mxy#_Z$nOHb
z74(wNlY+hnVMgLd_q?E&<1OzBdXCRq`jI&*n5s{t{Tyv@$}jWLwhvyt+4jMk-YJ5Q
zOz-CeF4JZESzbPi1brK1viWHHU!<4$ZrdL(AKQQN;<jJl#UB*$N;w}FxU|Ek1up4r
ze~|p89lmPlnLRS!vq%W%m4|0Z(~(~0d!eA0`F^~hm)~Vh_TbhYrU_iyL%rZH?ZNh2
z=`HJ}<$_N;{LG`X(u3Q0e=2YpuRZ&L-ZI|JhMpIx=N$r<^~o~=m-Wfp0+)P72EZ83
z%is31ym*nImv(-Zz@<Eu0+;ec4DPjuCP6RdTqNkFJuDOS(jLAd=%qbe?ZIun*mcL0
zN9N1 at g1^ic+fVoE=Q%+y_49WTueAT5=?{AO9BFW`{huu8WqQvL^fJBW9^9r^t}mA9
zZ5RAydV2*f^LMqtW&YkMa9MBsRNyjy?fV4vAj{V#Lr*=l8#~3t+3LY<y7mZMrt1R{
zuS}PHFY)UCaP!_kT;}6ggM00^TF}dMohRs}-CiW<Wj;0udYO-lJh)BoYJto2>T?i=
z_D^mX^wJKu8r-Xg#{|8U{~19q<$poYOZj(ua4Y|z<~_q(?g|Y~d1QW#7r4}Ol at D&;
ztGwxI5%e;Dy9F-!+xI8(X~xgC%Qpym*<Sxl;H`q*zE_ctY#;4=n3w-H!KX#=`JKQe
ze>+}Cee!4bDOe!-vBd2<RXhG<>FqiYJ04?k`<={=b6DJdpSI%%7Ps?kDi9Z)H(eKN
zcnJP|BPZ!E!O!aX0Wya3^1*rRNqipeEd8fQ2**n=eir`^fy;XAR|1#${<y$pe!XaL
ziZxU4e?`#WDDW)NE=c>y6ZlPnezd at 4y?VO9TLt~Ma8JkRrQRM=sK&p8d#i^tgq|hd
zBXG&*KLoyB at R9FdGF|rli~5-*=;iyD)Q?G)lK;no9=FOd`V-B)ybxzSR$xF=EY#~U
z>nn>JZ-vjd54eWRJ>@i6r;u`i)6cp^=7t!5b>_LxgReEuKk(pt%=0#ZUu5oi`HR5G
z-=6F8qQGUEicG$cmg7Ix+59C=`k?W!<M+fB{~YbnC- at w0XnDC$;H0<bQ#~Yb@;Afj
zP63JFc%eMw_yBjbz)9~a6l;?O&Rct))n^4xdfFo0YJrpg7KOqF1Wx)r2ESF{ytU_F
z-6?R==bH4`adCQ+zukZS5ThsJq%Sx0MFOXvJumAFfs@|qeVM??-=3p&mB2~gY51=b
z_%Xn(`=P)|Z^upKdlu!f=Wf00p<i$KR~n<Y>9yx^)e4;ab4~abfgfju!Syc!CojA2
zzN{z7XSCsC>o*&(J=g0qrXnCtdLH^sS1xen7uNV^1y1 at 3L*FTI>e-(6wOrt&pJwRS
z3j9RPTK^y0y?k-BX}&X-`;DpVB72AZUYo{7u??j&wxucB<cyu)-R&q~EcO<Y`zp$v
zb+P-b2{yK8NqgI+t?kR5u?w4<v7cpgYiG0(k+iouf+}r;vkY67W!n0eJ7tdT>Y!K@
zylgD?6qb+Jde}UE0`C9Bjp<UtC6)5OD^O;=9Bf;;4@<(q!Xmb0y0PDHSG1?oK-`ZO
zJ63iz!8lA#HFrl-*@g#hQLTcjT*e&;y@=XNb?m{mJjTA;i at 7VNGj>Twv~?`b06s(Q
zJZzq^#o*Y^E^H#(6{RGUwsjFsG3GwVV;6RHK;VChI~L_|R0d9!2D9z at DR}-Iex|xf
zUj4$`cE-MMF#P!+BRuB{(8=)M#Pdgue;xzF$?%*<@=?RLtI+A;*<bL64*_G9ZeDY7
zr`<|(T^}|#=EAy9I<_t3St&u>*IlE54HNa1`ePh6KWw{yGBCz(s#Dx)7n)}8(yylZ
zNrI>2jy(Oshmw@~#>Q{qGTf;2vvCm4#y?zOy!EF4LSUKnS8U|}y(dCXG-~g^O#0jV
zYaMZAzP?g_hvH}1S^X^l#`wK__p$Q~H_M|KoB!HZ at 12z?{dKc71^dF%dDFiPo=Sd?
z0Fxipp-N3)%Fm>D<-Zpg<G1}i+$#5wiT at CK3TGef^*8X#6n;A=@xa|{3H4(#ehWVZ
zJX84i939}(CY-(4aQ51c8{QA|r2jS(-kzgm!+Z6&5P>u4Z;{d8WD^nf_bL3m`g_yF
z at 73Q<^K$TE@}CL0Gs&+eYau?{kM)!PRD{nY|N6&th(QyO@*jzxSN;|ozoE02ou=b%
zzav}RtG`AYza=o&d5`NGTTU21 at 4fLaMR?k!r<gc<O#GH!b4!J{IKPLf^jiXRU6vt!
z=7kMs<>G#y)c at h0@Ow at C#U9*-x7W2k;X_~00Xse6t^Vxw`zE|M{cBBlOJ~{Gc<uAQ
z`=o!ZNq?y!r2g6Ox8ZI2`98(;=in;cdK15;w|?H|+id)v at Pirj9|98_-p2o&iQmd;
z<Jn;1A8P?~rL1)J`icp!(bWGxn(!$^-`Q{$|2x7D$Ad?FXNL(NvV`Vp<+t$R$T;%!
zhTm(#uQ%@}mfjowFoe%!zdMZnLiB`V{+)!M4R7_ADQ?o=)Xe{Qk2C`a#kjA-&l{fQ
z+iQD(oVnfn?>O(X(i6_BKlc4Hh2Q(64rIT_S{B~$(YD1nm1Ask^Vp6vLvW at 1XPmy*
z|0kB0D|F(-vWePz-iWV+Bh#|8vXaqfIp-wp!p6s|-P?@!mHdbQh0almmhYI9DIdQ%
z8)*q{>;rdT0&bjoci=O;y0K^7-d77-+<5Lu)T0}#DatDw+-3b at udCawHATZmxUp?+
z+;QWTyWHL at h8H-|6WoDl(eRCo!v;{-O-bbb5!P?_^9vS?4IbY|#?FGZZwHV2J0dP#
z5PV~B6Adg)g2J*vH}+DnB)3TM>mTfyNJ9J`dCLu+3K8E5eqLE0A4e9w6`Z at -jn@<*
z9jEDZ^qk=KK3KfP1CDeDKFj!by|(|r0ma%%lqL_g{(n}UFJzLZ>Vm2{RSk2HY4z?^
zuNFY5La4qXPOE{Q1}-TosExfC8E7f0Q%Rzx+}K|uu{Yd}zr6mBC+|9R>?k+3IapFt
zRN%h<io5x5=kh+pf2HoWnxaao#NGV&PrD_*abu&k&fVBk_m=>V#9np>jv$3%?)L7=
zc6;~c1g|-d(Z9Em84McbS at o;a at Z`p}y8VN})klNCjlC5aP#Hx&_iTB$_>$`$c(>Ty
z{7Sa_{_}2ZkBY;MJ>m8~zt7#A$ab at S;|`4ey1V)LY`0|lMp{N)+2H4XMNxEy-KE%F
z^!dKQVBc0m5gE9(XeE3pu)1n#k$f$1Y)eoFVSvvdz{anDIud*7SEQzvO8y)fXf06G
zkytAs6B2gj#<n22!QeG<5aTYZrzd#V^+gQ2dQO2G3+GjB&CNxj(D{+HzhHli$-nAB
zW}6$^b at 3OfE~)xL)fcw}k7roNegCgjYW;BHDP;YEwK~I8yvUKdGfGRR;95VWwA4v_
z8oRJVqtUPJMsYDEh$Szt>`6B%YuKrcJxFth$l-$C|H<oae{V}}u>bdntpDlg5y89q
zidN#jYISbWdt0)D{eQ%RqL0K|oy0iA5j?&U+Emp;B=)|N1^L+bC<Ju3DXk+2)T6x;
zcTn)8JW#+&_|^_wQIr>nz3%qDytg)%TNK+-8*d2Uwjp<KZOOi=10zq2l>9%<T~AD0
zMI2t1wh-DpiHWg>l0GeKs4eR*P>a|g%kIjOQXtDVvC)XMz)GZxLTM0F(}dWFf4P_#
zZ;cvF^k6(_)C(RoCYsoT7vsf~N*ZI0iSa;Mzi)PayT2XYR!cAbl6~*ZH@`pg=FNLE
z^X9?#^U610T&`XD;m^!F>(7|Lh}#D1Qr$D|J~wXhvaIg}zG}m*{Fp$H#7n8>jl at c7
z&&K*aa0l>~Pg2cSrwCnLza5Y{nRGTgobC2Qk)=@NR3z3uGu>^rp~#80$mzDoL at tu)
zjvVWbjAA{FJRoEEXZw7Jw<ZUNlSju!vct*r=;#=D>2d?d(qjXugMKs`-S3kOX>x+)
z546i=vgt(Xx at I9hf7XqM%FXM=`?n|5pG<c9t;bJ-0%5_AcSJj)v9|jbOtSsC_ReUm
zGaBD-GvI<<E5}#7Y<PddK75UsbSUyS5j9KMP|advP1CNr`c*X5J<#Egvdm4wYrGI1
z at pdoQ4tW^Jux~y>9P$D;87~%otih{K>@;}~6N9*Ud}ndS<lt`yS%`<c##h6A-tJdw
z`#k^UZ3(aS!uFIGTi(&{t%bvXd0&T<-lcFB`viga8 at yP`YfX4QZ2G*$KCeE*IV;b@
zPG?GgCt<?`?r at 5zn?J4vW!9Ezr<}_eVTGGIvDvi&5m`53g>wu-nK4`T!Iko~Ny<t{
zIq$4FtS<xh=vj+*IXUM|x~?<^lI-U#&hyanqDj<+?$98PU&D{>#+45M1mPc7!MS!3
zq<^Fe&fX+Qf4B;M6mf42*M?SYK}~zZ at gr6Ar>o#g!0E at wo+5tUwD^Y>H*FUA>~Vt1
zdASNsj)ow8-jG2!*Q$c>y}&PqIif3yw2Tu~^z&8lLKU2I)u6baSHZsneo=A6OL^*W
zZwL8ls)C0~gXBsU6Nm2iP-=QSUjTs-$bQpc)Fbaos6+ at HK+G6FG%`1PYI1%a59{Oe
z<9RY4fi2Mx7#c3aB8ed}LxO0y4iBRY*QF*bQ~VVvpvY(hO17J(AlwqiGAnF!b`#Oy
zs4x;%bYbAA*+kx_)@|aQxhHTY6RNi0y-XbwzkiSnXem$u=FlOI8X~8 at LxxQdHCtRC
zsi4y`#JLr8TIRh!FZb9SscWWq=uqc?IcIFX at D!<?r${ph$CV_XWeS_F{>d{#3o|o=
zv-yDnPOSiXrL*a-0w55B<<0rd6+jSX{2(5wBlD+id{f}9FfdinAu86x5;3E$wHqmI
z*%uZxgtD=G0m`m|xqEim=K^j^^DbPzsgQo2IOl<a$E-fb1nhkTe?Z~9j|CrBxYnOm
zIOofvZ>QL19K!ccf}d0RoPG=bslqwi5d3?Kv;6Em1#iG}l|r1)9>FyS5Z?(3K4A5E
zzS{qU@}vFp`A?yL_Tl2^ZRJP%|3%^KQ$@dx4j_!ncXWb3XmRd1g%Uia^qUkuu5gae
zME{)f!#-Z{FO`0?!oOAed}k*5zbTw;NpSggo#of%xu*2BA9*K2{k_W1y&UsFi2L}7
z|92IBr^5BO+;=Jb03ARWUdQdQICuN-6aRfmzXkZ;m<&*clzv3%zoqoGfB8n5+1meS
zO20+<|H|UrY5!(G4ve^NKOCo1h~JH$l%E)d&C9wpY2R#%^<XcBL3$m0)utbHa2f9`
zI=GB?E-75c#Wx2x`0asS;tyEy{|{@;_=Eu;FKo3V;1>`u-`aDza-I8suq=HT4S~;D
zS9&cV<1jws*nZ{O$-bI>CcwTWz}^SOwzva7Eh9FuO&YRIvk%e2X9&yEt3e#c*f~Mg
z?DK%-=b at Yr=baSZ8;oz&2pP#aaRsNYmV-#p=T`0Gu%%CTO-$k+K%N$fFZ*6(2HBst
z<$qEe<5<pL>~q%Mt^X_5Ugn$P#;yNhWCYd!72Bw!o>~9&CGiE%1LLJ~>rWbl=tISb
zq-B2+Xi)rmyGSK*7 at z%_*a^;Y1u=I`r`}eG=tISboBjys&Dj4AdtM7$ToZ$ve~T~W
z*nlqWV>D9IXv-f}7!T#T%YHi!<XEfrxDCQ)y1KUk;5bM38C31H_C6Czq}&4W8&3Lk
z?H{-HKZ&B<yY{Ux4!Zunt<Xhl$Lr7Wq1emy4~k8bUY-=>J=-wZw{o`Z+Oth>YP-OG
c<sb~w?_ at Hb7TzX~iphS%mcPd_aFU^a0BIDrCIA2c
literal 0
HcmV?d00001
>From e58cb1d07fcdd6f2c1fd91b641645173406f8a5c Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Fri, 2 Oct 2026 00:23:20 +0200
Subject: [PATCH 13/13] Post-merge fixes
---
flang/lib/Evaluate/shape.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/flang/lib/Evaluate/shape.cpp b/flang/lib/Evaluate/shape.cpp
index 8123b0d95e0bcc..c8948dbe320aa8 100644
--- a/flang/lib/Evaluate/shape.cpp
+++ b/flang/lib/Evaluate/shape.cpp
@@ -310,7 +310,7 @@ class GetLowerBoundHelper
if (auto extent{
ToInt64(GetExtent(base, dimension_, invariantOnly_))}) {
if (*extent <= 0) {
- return Result{1};
+ return MakeExtentExpr(1);
}
ok = true;
}
More information about the llvm-branch-commits
mailing list