From 0a1d5790a6847a792caa011bfb6343200d29f169 Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 6 May 2026 15:15:09 +0900 Subject: [PATCH 01/34] Revert "Remove beneficiary field from RewardCouponV2" Signed-off-by: Divam --- .../daml/Splice/Scripts/TestRewardAccountingV2.daml | 5 ++++- daml/splice-amulet-test/daml/Splice/Scripts/Util.daml | 2 +- daml/splice-amulet/daml/Splice/Amulet.daml | 9 ++++++--- .../daml/Splice/Amulet/RewardAccountingV2.daml | 1 + daml/splice-amulet/daml/Splice/AmuletRules.daml | 2 +- .../daml/Splice/Scripts/DsoTestRewardAccountingV2.daml | 4 +++- .../Splice/Scripts/Wallet/TestMintingDelegation.daml | 3 ++- 7 files changed, 18 insertions(+), 8 deletions(-) diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml index b293b88d3e..4d2a6befe4 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml @@ -128,6 +128,7 @@ test_reward_accounting_v2 = do round = Round 0 expiresAt = couponExpiryTime providerIsObserver = provider `notElem` [bob, dora] + beneficiary = None actualCoupons0 <- query @RewardCouponV2 app.dso let actualCoupons = sortOn (.provider) $ fmap snd actualCoupons0 @@ -256,6 +257,7 @@ setupAliceWithCoupon' config = do round = Round 0 expiresAt = demoTime `addRelTime` hours 36 providerIsObserver = not config.hideCoupon + beneficiary = None submit app.dso $ createCmd coupon pure (app, alice, aliceUser) @@ -309,11 +311,12 @@ test_claim_expired_coupons = do -- create an extra coupon let extraCoupon = RewardCouponV2 with dso = app.dso - provider = bob + provider = alice amount = 500.0 round = Round 0 expiresAt = demoTime `addRelTime` hours 48 providerIsObserver = False + beneficiary = Some bob submit app.dso $ createCmd extraCoupon -- show that expiry doesn't work before expiry time diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/Util.daml b/daml/splice-amulet-test/daml/Splice/Scripts/Util.daml index d5e544ea93..f6350c4e92 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/Util.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/Util.daml @@ -445,7 +445,7 @@ runAmuletDepositBots app = do c.round `elem` issuingRoundNumbers && c.beneficiary == user rewardCouponV2s <- queryFilter @RewardCouponV2 app.dso $ \c -> - c.provider == user + fromOptional c.provider c.beneficiary == user -- get all amulets of this user amulets <- getAmuletInputs user diff --git a/daml/splice-amulet/daml/Splice/Amulet.daml b/daml/splice-amulet/daml/Splice/Amulet.daml index 3b75424cbd..850a511461 100644 --- a/daml/splice-amulet/daml/Splice/Amulet.daml +++ b/daml/splice-amulet/daml/Splice/Amulet.daml @@ -9,7 +9,7 @@ import DA.Action (void) import DA.Assert import DA.Map as Map import DA.TextMap as TextMap -import DA.Optional (fromOptional) +import DA.Optional (fromOptional, optionalToList) import Splice.Api.Token.MetadataV1 qualified as Api.Token.MetadataV1 import Splice.Api.Token.HoldingV1 qualified as Api.Token.HoldingV1 @@ -389,9 +389,12 @@ template RewardCouponV2 -- their vetting state at the time of coupon creation does not allow it. -- DSO automation will then attempt to make the provider an observer when they -- change their vetting state unless the coupon expired in the meantime. + beneficiary : Optional Party + -- ^ The party that can mint the reward for the activity by the provider. + -- If not set, this is the provider. where signatory dso - observer if providerIsObserver then [provider] else [] + observer if providerIsObserver then [provider] ++ optionalToList beneficiary else [] ensure amount > 0.0 @@ -584,7 +587,7 @@ instance HasCheckedFetch AppRewardCoupon ForOwner where contractGroupId AppRewardCoupon{..} = ForOwner with dso; owner = fromOptional provider beneficiary instance HasCheckedFetch RewardCouponV2 ForOwner where - contractGroupId RewardCouponV2{..} = ForOwner with dso; owner = provider + contractGroupId RewardCouponV2{..} = ForOwner with dso; owner = fromOptional provider beneficiary instance HasCheckedFetch RewardCouponV2 ForDso where contractGroupId RewardCouponV2{..} = ForDso with dso diff --git a/daml/splice-amulet/daml/Splice/Amulet/RewardAccountingV2.daml b/daml/splice-amulet/daml/Splice/Amulet/RewardAccountingV2.daml index 11f582c661..00448eb0e3 100644 --- a/daml/splice-amulet/daml/Splice/Amulet/RewardAccountingV2.daml +++ b/daml/splice-amulet/daml/Splice/Amulet/RewardAccountingV2.daml @@ -108,6 +108,7 @@ template ProcessRewardsV2 with expiresAt providerIsObserver = not $ Set.member provider providersWithWrongVettingState + beneficiary = None -- intentionally not returning any information here to save computational overhead return ProcessRewardsV2_ProcessBatchResult {} diff --git a/daml/splice-amulet/daml/Splice/AmuletRules.daml b/daml/splice-amulet/daml/Splice/AmuletRules.daml index 255fa88aa4..063ef34878 100644 --- a/daml/splice-amulet/daml/Splice/AmuletRules.daml +++ b/daml/splice-amulet/daml/Splice/AmuletRules.daml @@ -679,7 +679,7 @@ template AmuletRules coupon <- fetchAndArchive (ForDso with dso) cid assertDeadlineExceeded "coupon.expiresAt" coupon.expiresAt return coupon - let actualExpiryObservers = [ coupon.provider | coupon <- coupons, coupon.providerIsObserver ] + let actualExpiryObservers = concat [ coupon.provider :: optionalToList coupon.beneficiary | coupon <- coupons, coupon.providerIsObserver ] require "expiryObservers match coupons" (sort expiryObservers == dedupSort actualExpiryObservers) -- create unclaimed reward for the total diff --git a/daml/splice-dso-governance-test/daml/Splice/Scripts/DsoTestRewardAccountingV2.daml b/daml/splice-dso-governance-test/daml/Splice/Scripts/DsoTestRewardAccountingV2.daml index 02b735ed45..6a384648da 100644 --- a/daml/splice-dso-governance-test/daml/Splice/Scripts/DsoTestRewardAccountingV2.daml +++ b/daml/splice-dso-governance-test/daml/Splice/Scripts/DsoTestRewardAccountingV2.daml @@ -116,6 +116,7 @@ test_reward_accounting_v2 = do round = Round 0 expiresAt = couponExpiryTime providerIsObserver = provider `notElem` [bob, dora] + beneficiary = None actualCoupons0 <- query @RewardCouponV2 app.dso let actualCoupons = sortOn (.provider) $ fmap snd actualCoupons0 @@ -151,7 +152,7 @@ test_ClaimExpiredRewardsV2 = do -- create coupons - forA_ [ (alice, 100.0), (bob, 500.0) ] $ \(provider, amount) -> do + forA_ [ (alice, Some alice, 100.0), (alice, Some bob, 500.0) ] $ \(provider, beneficiary, amount) -> do submit app.dso $ createCmd RewardCouponV2 with dso = app.dso provider @@ -159,6 +160,7 @@ test_ClaimExpiredRewardsV2 = do round = Round 0 expiresAt = demoTime `addRelTime` hours 48 providerIsObserver = False + beneficiary -- expiry works setTime $ demoTime `addRelTime` hours 48 diff --git a/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml b/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml index f67bf854d5..4d6d6c371e 100644 --- a/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml +++ b/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml @@ -86,11 +86,12 @@ testMintingDelegation = do let rewardCouponV2Amount = 42.0 rewardCouponV2Cid <- submit app.dso $ createCmd RewardCouponV2 with dso = app.dso - provider = beneficiary + provider = provider2.primaryParty amount = rewardCouponV2Amount expiresAt = now `addRelTime` days 60 round = openRound.round providerIsObserver = False + beneficiary = Some beneficiary -- Wait for rounds to advance so coupons can be minted runNextIssuance app From e7689c44e4645c6d13c7ea8b012e260552d97f6b Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 15 Apr 2026 08:33:58 +0000 Subject: [PATCH 02/34] Add splice-api-reward-assignment-v1 Signed-off-by: Divam --- .../splice-api-reward-assignment-v1/daml.yaml | 18 +++++ .../daml/Splice/Api/RewardAssignmentV1.daml | 69 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 daml/splice-api-reward-assignment-v1/daml.yaml create mode 100644 daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml diff --git a/daml/splice-api-reward-assignment-v1/daml.yaml b/daml/splice-api-reward-assignment-v1/daml.yaml new file mode 100644 index 0000000000..0e3376a658 --- /dev/null +++ b/daml/splice-api-reward-assignment-v1/daml.yaml @@ -0,0 +1,18 @@ +sdk-version: 3.3.0-snapshot.20250502.13767.0.v2fc6c7e2 +name: splice-api-reward-assignment-v1 +source: daml +version: 1.0.0 +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - ../../token-standard/splice-api-token-metadata-v1/.daml/dist/splice-api-token-metadata-v1-current.dar +build-options: + - --ghc-option=-Wunused-binds + - --ghc-option=-Wunused-matches + - --target=2.1 +codegen: + java: + package-prefix: org.lfdecentralizedtrust.splice.codegen.java + decoderClass: org.lfdecentralizedtrust.splice.codegen.java.DecoderSpliceRewardAssignmentV1Interfaces + output-directory: target/daml-codegen-java diff --git a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml new file mode 100644 index 0000000000..5eb0ee51df --- /dev/null +++ b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml @@ -0,0 +1,69 @@ +-- Copyright (c) 2024 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +-- | An API for app providers and other service providers to assign reward +-- coupons for their activity to their beneficiaries. +module Splice.Api.RewardAssignmentV1 where + +import Splice.Api.Token.MetadataV1 + +-- | View on a coupon representing the right to mint a certain amount of rewards. +data RewardCouponView = RewardCouponView + with + dso : Party + -- ^ The DSO party. + provider : Party + -- ^ The party that provided the service for whose activity the minting right was granted. + beneficiary : Party + -- ^ The beneficiary that can mint the amount specified in the coupon. + amount : Decimal + -- ^ Amulet amount that can be minted with this coupon. + expiresAt : Time + -- ^ Expiration time of the coupon. The minting right granted by the coupon can only be exercised before this time. + maxNumNewBeneficiaries : Int + -- ^ The maximum number of new beneficiaries that can be assigned to the coupon in a single assignment. + meta : Metadata + -- ^ Metadata associated with this coupon. Provided for extensibility. + deriving (Show, Eq) + +-- | Specification of a beneficiary of rewards. +data RewardBeneficiary = RewardBeneficiary + with + beneficiary : Party + -- ^ The party that is granted the right to mint amulet for this activity. + amount : Decimal + -- ^ The amount of amulet that this beneficiary can mint. + deriving (Show, Eq, Ord) + +-- | A coupon representing the right to mint a certain amount of rewards. +interface RewardCoupon where + viewtype RewardCouponView + + rewardCoupon_assignBeneficiariesImpl + : ContractId RewardCoupon -> RewardCoupon_AssignBeneficiaries -> Update RewardCoupon_AssignBeneficiariesResult + + choice RewardCoupon_AssignBeneficiaries : RewardCoupon_AssignBeneficiariesResult + -- ^ Assign (ultimate) beneficiaries to the coupon. Useful for apps + -- where the party that earns the minting right (the provider) is just an + -- operational party and the actual beneficiaries are different parties. + with + newBeneficiaries : [RewardBeneficiary] + -- ^ The new beneficiaries to whom to assign part of the minting amount of the + -- coupon. The sum of their amounts MUST be equal to the amount of the original coupon, + -- and there MUST NOT be duplicate beneficiaries. + -- + -- There MUST be at most `(view this).maxNumNewBeneficiaries` new beneficiaries in the list. + -- The purpose of this limit is to ensure that traffic cost of + -- creating coupons guards the overhead of tracking the created coupons + -- for the DSO party. + extraArgs : ExtraArgs + -- ^ Extra arguments for extensibility. Set to empty, unless needed for specific implementations. + observer map (.beneficiary) newBeneficiaries + controller (view this).provider + do rewardCoupon_assignBeneficiariesImpl this self arg + + +data RewardCoupon_AssignBeneficiariesResult = RewardCoupon_AssignBeneficiariesResult with + newBeneficiariesCouponCids : [ContractId RewardCoupon] + -- ^ The coupons created for the newly assigned beneficiaries. + deriving (Eq, Show) From 8271e477beb702bfd5725278a457a2ea51c92972 Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 15 Apr 2026 08:34:17 +0000 Subject: [PATCH 03/34] Build.sbt splice-api-reward-assignment-v1 Signed-off-by: Divam --- build.sbt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 244903faf6..bafcb0d674 100644 --- a/build.sbt +++ b/build.sbt @@ -111,6 +111,7 @@ lazy val root: Project = (project in file(".")) `splice-dso-governance-test-daml`, `splice-validator-lifecycle-daml`, `splice-validator-lifecycle-test-daml`, + `splice-api-reward-assignment-v1-daml`, `splice-api-token-metadata-v1-daml`, `splice-api-token-holding-v1-daml`, `splice-api-token-transfer-instruction-v1-daml`, @@ -688,6 +689,14 @@ lazy val `splice-featured-app-api-v2-daml` = ), ) +lazy val `splice-api-reward-assignment-v1-daml` = + project + .in(file("daml/splice-api-reward-assignment-v1")) + .enablePlugins(DamlPlugin) + .settings( + BuildCommon.damlSettings + ) + lazy val `splice-amulet-daml` = project .in(file("daml/splice-amulet")) @@ -703,7 +712,8 @@ lazy val `splice-amulet-daml` = (`splice-api-token-allocation-request-v1-daml` / Compile / damlBuild).value ++ (`splice-api-token-allocation-instruction-v1-daml` / Compile / damlBuild).value ++ (`splice-featured-app-api-v1-daml` / Compile / damlBuild).value ++ - (`splice-featured-app-api-v2-daml` / Compile / damlBuild).value, + (`splice-featured-app-api-v2-daml` / Compile / damlBuild).value ++ + (`splice-api-reward-assignment-v1-daml` / Compile / damlBuild).value, ) lazy val `splice-amulet-test-daml` = @@ -948,6 +958,7 @@ lazy val `apps-common` = `splice-token-test-trading-app-daml`, `splice-featured-app-api-v1-daml`, `splice-featured-app-api-v2-daml`, + `splice-api-reward-assignment-v1-daml`, `splice-util-batched-markers-daml`, ) .enablePlugins(BuildInfoPlugin) @@ -2026,6 +2037,7 @@ lazy val `apps-dar-resources-generator` = `splice-token-test-trading-app-daml`, `splice-featured-app-api-v1-daml`, `splice-featured-app-api-v2-daml`, + `splice-api-reward-assignment-v1-daml`, `splice-util-batched-markers-daml`, ) .settings( From d9551dc4978d5a5f033267c6c66af80c51759246 Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 15 Apr 2026 08:34:31 +0000 Subject: [PATCH 04/34] docs splice-api-reward-assignment-v1 Signed-off-by: Divam --- ...lice-api-reward-assignment-v1-index-template.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 docs/api-templates/splice-api-reward-assignment-v1-index-template.rst diff --git a/docs/api-templates/splice-api-reward-assignment-v1-index-template.rst b/docs/api-templates/splice-api-reward-assignment-v1-index-template.rst new file mode 100644 index 0000000000..73ee4dc429 --- /dev/null +++ b/docs/api-templates/splice-api-reward-assignment-v1-index-template.rst @@ -0,0 +1,13 @@ +.. + Copyright (c) 2024 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +.. + SPDX-License-Identifier: Apache-2.0 + +splice-api-reward-assignment-v1 docs +==================================== + +.. toctree:: + :maxdepth: 3 + :titlesonly: + +{{{body}}} From 57c82f8a7f5b6655ae56a432ce8882a2936db47b Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 15 Apr 2026 08:35:36 +0000 Subject: [PATCH 05/34] interface for RewardCouponV2 Signed-off-by: Divam --- daml/splice-amulet-test/daml.yaml | 1 + .../Scripts/TestRewardAccountingV2.daml | 52 +++++++++++++++++++ daml/splice-amulet/daml.yaml | 1 + daml/splice-amulet/daml/Splice/Amulet.daml | 47 ++++++++++++++++- 4 files changed, 100 insertions(+), 1 deletion(-) diff --git a/daml/splice-amulet-test/daml.yaml b/daml/splice-amulet-test/daml.yaml index 4196f6fe42..92457ce4e3 100644 --- a/daml/splice-amulet-test/daml.yaml +++ b/daml/splice-amulet-test/daml.yaml @@ -15,6 +15,7 @@ data-dependencies: - ../splice-util/.daml/dist/splice-util-current.dar - ../splice-amulet/.daml/dist/splice-amulet-current.dar - ../dars/splice-api-featured-app-v1-1.0.0.dar + - ../splice-api-reward-assignment-v1/.daml/dist/splice-api-reward-assignment-v1-current.dar - ../dars/splice-api-token-metadata-v1-1.0.0.dar - ../dars/splice-api-token-holding-v1-1.0.0.dar - ../dars/splice-api-token-transfer-instruction-v1-1.0.0.dar diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml index 4d2a6befe4..5cc55f5676 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml @@ -14,6 +14,8 @@ import DA.Time import Daml.Script +import Splice.Api.RewardAssignmentV1 qualified as Api.RewardAssignmentV1 + import Splice.Amulet import Splice.Amulet.RewardAccountingV2 import Splice.Amulet.CryptoHash qualified as CryptoHash @@ -27,6 +29,7 @@ import Splice.Scripts.Util import Splice.Testing.Registries.AmuletRegistry.Parameters (defaultAmuletConfig) import Splice.Testing.TokenStandard.WalletClient as WalletClient +import Splice.Testing.Utils -- Reward accounting tests @@ -299,6 +302,55 @@ test_mint_of_hidden_coupon = do WalletClient.checkBalance alice app.registry.instrumentId 1000.0 +-- Coupon assignment +-------------------- + +test_coupon_assignment : Script () +test_coupon_assignment = testCouponAssignment False + +test_hidden_coupon_assignment : Script () +test_hidden_coupon_assignment = testCouponAssignment True + +testCouponAssignment : Bool -> Script () +testCouponAssignment hideCoupon = do + (app, alice, _) <- setupAliceWithCoupon hideCoupon + bob <- allocateParty "Bob" + charlie <- allocateParty "Charlie" + -- assign part of alice's coupon to bob and charlie + let queryParty = if hideCoupon then app.dso else alice + [(couponCid, _)] <- queryInterface @Api.RewardAssignmentV1.RewardCoupon queryParty + submitMulti [alice] [app.dso] $ exerciseCmd couponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with + newBeneficiaries = + [ Api.RewardAssignmentV1.RewardBeneficiary bob 300.0 + , Api.RewardAssignmentV1.RewardBeneficiary alice 500.0 + , Api.RewardAssignmentV1.RewardBeneficiary charlie 200.0 + ] + extraArgs = emptyExtraArgs + + forA_ [(alice, 500.0), (bob, 300.0), (charlie, 200.0)] $ \(beneficiary, amount) -> do + let expectedCoupon = RewardCouponV2 with + dso = app.dso + provider = alice + amount + round = Round 0 + expiresAt = demoTime `addRelTime` hours 36 + providerIsObserver = True + beneficiary = Some beneficiary + coupons <- query @RewardCouponV2 beneficiary + let filtered = DA.List.filter (\c -> c.beneficiary == Some beneficiary) $ map snd coupons + filtered === [expectedCoupon] + + -- verify assigned coupons cannot be further assigned by provider + [(bobCouponCid, _)] <- queryInterface @Api.RewardAssignmentV1.RewardCoupon bob + submitMustFail alice $ exerciseCmd bobCouponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with + newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 300.0] + extraArgs = emptyExtraArgs + -- nor by the beneficiary + submitMustFail bob $ exerciseCmd bobCouponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with + newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 300.0] + extraArgs = emptyExtraArgs + + -- Claiming expired reward coupons ---------------------------------- diff --git a/daml/splice-amulet/daml.yaml b/daml/splice-amulet/daml.yaml index 1b91302176..9bf3ba1a02 100644 --- a/daml/splice-amulet/daml.yaml +++ b/daml/splice-amulet/daml.yaml @@ -19,6 +19,7 @@ data-dependencies: - ../splice-util/.daml/dist/splice-util-current.dar - ../dars/splice-api-featured-app-v1-1.0.0.dar - ../dars/splice-api-featured-app-v2-1.0.0.dar + - ../splice-api-reward-assignment-v1/.daml/dist/splice-api-reward-assignment-v1-current.dar build-options: - --ghc-option=-Wunused-binds - --ghc-option=-Wunused-matches diff --git a/daml/splice-amulet/daml/Splice/Amulet.daml b/daml/splice-amulet/daml/Splice/Amulet.daml index 850a511461..6ebe9ec87b 100644 --- a/daml/splice-amulet/daml/Splice/Amulet.daml +++ b/daml/splice-amulet/daml/Splice/Amulet.daml @@ -7,12 +7,14 @@ module Splice.Amulet where import Prelude import DA.Action (void) import DA.Assert +import DA.List (unique) import DA.Map as Map import DA.TextMap as TextMap -import DA.Optional (fromOptional, optionalToList) +import DA.Optional (fromOptional, isNone, optionalToList) import Splice.Api.Token.MetadataV1 qualified as Api.Token.MetadataV1 import Splice.Api.Token.HoldingV1 qualified as Api.Token.HoldingV1 +import Splice.Api.RewardAssignmentV1 qualified as Api.RewardAssignmentV1 import Splice.Amulet.TokenApiUtils import Splice.Expiry @@ -397,6 +399,18 @@ template RewardCouponV2 observer if providerIsObserver then [provider] ++ optionalToList beneficiary else [] ensure amount > 0.0 + interface instance Api.RewardAssignmentV1.RewardCoupon for RewardCouponV2 where + view = Api.RewardAssignmentV1.RewardCouponView with + dso + provider + beneficiary = fromOptional provider beneficiary + amount + expiresAt + meta = Api.Token.MetadataV1.emptyMetadata + maxNumNewBeneficiaries = maxNumNewCouponV2Beneficiaries + + rewardCoupon_assignBeneficiariesImpl _self arg = rewardCouponV2_assignBeneficiariesImpl this arg + -- | A coupon for receiving validator rewards proportional to the usage fee paid by a user -- hosted by a validator operator. @@ -574,6 +588,37 @@ requireAmuletExpiredForAllRounds externalPartyConfigState0Cid externalPartyConfi require "Amulet is expired" (isAmuletExpired round amulet.amount) +-- | Maximum number of new beneficiaries that can be assigned to a RewardCouponV2. +-- Set to the same limit as the one for featured-app-marker beneficiaries to minimize migration effort +-- for app providers. +maxNumNewCouponV2Beneficiaries : Int +maxNumNewCouponV2Beneficiaries = 20 + +-- | Implementation of the 'RewardCoupon_AssignBeneficiaries' choice for 'RewardCouponV2'. +rewardCouponV2_assignBeneficiariesImpl + : RewardCouponV2 + -> Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries + -> Update Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult +rewardCouponV2_assignBeneficiariesImpl coupon arg = do + let newBeneficiaries = arg.newBeneficiaries + let totalNewBeneficiaryAmount = sum $ map (.amount) arg.newBeneficiaries + require "Beneficiary has not been assigned yet" (isNone coupon.beneficiary) + require "Beneficaries are unique" (unique (map (.beneficiary) newBeneficiaries)) + require "Assigned amount matches coupon amount" (totalNewBeneficiaryAmount == coupon.amount) + require ("No more than " <> show maxNumNewCouponV2Beneficiaries <> " beneficiaries assigned") + (length arg.newBeneficiaries <= maxNumNewCouponV2Beneficiaries) + + -- create coupons for new beneficiaries + newBeneficiaryCouponCids <- forA newBeneficiaries $ \newBeneficiary -> do + create coupon with + amount = newBeneficiary.amount + beneficiary = Some newBeneficiary.beneficiary + providerIsObserver = True + + return Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult with + newBeneficiariesCouponCids = map toInterfaceContractId newBeneficiaryCouponCids + + -- instances ------------ From 606e8b4cd7efcf3e10c6677433133c58d22cef3c Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 15 Apr 2026 08:58:59 +0000 Subject: [PATCH 06/34] Use weight: Decimal Signed-off-by: Divam --- .../daml/Splice/Scripts/TestRewardAccountingV2.daml | 10 +++++----- daml/splice-amulet/daml/Splice/Amulet.daml | 9 +++++---- .../daml/Splice/Api/RewardAssignmentV1.daml | 6 +++--- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml index 5cc55f5676..b72382e2c7 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml @@ -321,9 +321,9 @@ testCouponAssignment hideCoupon = do [(couponCid, _)] <- queryInterface @Api.RewardAssignmentV1.RewardCoupon queryParty submitMulti [alice] [app.dso] $ exerciseCmd couponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with newBeneficiaries = - [ Api.RewardAssignmentV1.RewardBeneficiary bob 300.0 - , Api.RewardAssignmentV1.RewardBeneficiary alice 500.0 - , Api.RewardAssignmentV1.RewardBeneficiary charlie 200.0 + [ Api.RewardAssignmentV1.RewardBeneficiary bob 0.3 + , Api.RewardAssignmentV1.RewardBeneficiary alice 0.5 + , Api.RewardAssignmentV1.RewardBeneficiary charlie 0.2 ] extraArgs = emptyExtraArgs @@ -343,11 +343,11 @@ testCouponAssignment hideCoupon = do -- verify assigned coupons cannot be further assigned by provider [(bobCouponCid, _)] <- queryInterface @Api.RewardAssignmentV1.RewardCoupon bob submitMustFail alice $ exerciseCmd bobCouponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with - newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 300.0] + newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 1.0] extraArgs = emptyExtraArgs -- nor by the beneficiary submitMustFail bob $ exerciseCmd bobCouponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with - newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 300.0] + newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 1.0] extraArgs = emptyExtraArgs diff --git a/daml/splice-amulet/daml/Splice/Amulet.daml b/daml/splice-amulet/daml/Splice/Amulet.daml index 6ebe9ec87b..ecaa7a4921 100644 --- a/daml/splice-amulet/daml/Splice/Amulet.daml +++ b/daml/splice-amulet/daml/Splice/Amulet.daml @@ -601,17 +601,18 @@ rewardCouponV2_assignBeneficiariesImpl -> Update Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult rewardCouponV2_assignBeneficiariesImpl coupon arg = do let newBeneficiaries = arg.newBeneficiaries - let totalNewBeneficiaryAmount = sum $ map (.amount) arg.newBeneficiaries require "Beneficiary has not been assigned yet" (isNone coupon.beneficiary) require "Beneficaries are unique" (unique (map (.beneficiary) newBeneficiaries)) - require "Assigned amount matches coupon amount" (totalNewBeneficiaryAmount == coupon.amount) + require "Beneficiary weights are between 0.0 and 1.0" + (all (\b -> 0.0 < b.weight && b.weight <= 1.0) newBeneficiaries) + require "Beneficiary weights add up to 1.0" (sum (map (.weight) newBeneficiaries) == 1.0) require ("No more than " <> show maxNumNewCouponV2Beneficiaries <> " beneficiaries assigned") - (length arg.newBeneficiaries <= maxNumNewCouponV2Beneficiaries) + (length newBeneficiaries <= maxNumNewCouponV2Beneficiaries) -- create coupons for new beneficiaries newBeneficiaryCouponCids <- forA newBeneficiaries $ \newBeneficiary -> do create coupon with - amount = newBeneficiary.amount + amount = coupon.amount * newBeneficiary.weight beneficiary = Some newBeneficiary.beneficiary providerIsObserver = True diff --git a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml index 5eb0ee51df..a270e7b3de 100644 --- a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml +++ b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml @@ -31,8 +31,8 @@ data RewardBeneficiary = RewardBeneficiary with beneficiary : Party -- ^ The party that is granted the right to mint amulet for this activity. - amount : Decimal - -- ^ The amount of amulet that this beneficiary can mint. + weight : Decimal + -- ^ A weight between 0.0 and 1.0 that defines how much of the reward this beneficiary can mint. deriving (Show, Eq, Ord) -- | A coupon representing the right to mint a certain amount of rewards. @@ -49,7 +49,7 @@ interface RewardCoupon where with newBeneficiaries : [RewardBeneficiary] -- ^ The new beneficiaries to whom to assign part of the minting amount of the - -- coupon. The sum of their amounts MUST be equal to the amount of the original coupon, + -- coupon. The weights MUST be between 0.0 and 1.0, add up to 1.0, -- and there MUST NOT be duplicate beneficiaries. -- -- There MUST be at most `(view this).maxNumNewBeneficiaries` new beneficiaries in the list. From 355dc7038e7959fcd3f1e70173015cd0886051a2 Mon Sep 17 00:00:00 2001 From: Divam Date: Thu, 16 Apr 2026 02:06:54 +0000 Subject: [PATCH 07/34] Do batched process of coupons Signed-off-by: Divam --- .../Scripts/TestRewardAccountingV2.daml | 55 ++++++++++++------- daml/splice-amulet/daml/Splice/Amulet.daml | 23 +++++--- .../daml/Splice/Api/RewardAssignmentV1.daml | 2 + 3 files changed, 54 insertions(+), 26 deletions(-) diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml index b72382e2c7..f2fed512c6 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml @@ -316,37 +316,54 @@ testCouponAssignment hideCoupon = do (app, alice, _) <- setupAliceWithCoupon hideCoupon bob <- allocateParty "Bob" charlie <- allocateParty "Charlie" - -- assign part of alice's coupon to bob and charlie + + -- get the original coupon before creating the extra one let queryParty = if hideCoupon then app.dso else alice [(couponCid, _)] <- queryInterface @Api.RewardAssignmentV1.RewardCoupon queryParty + + -- create a second coupon with a different amount and round + extraCouponCid <- submit app.dso $ createCmd RewardCouponV2 with + dso = app.dso + provider = alice + amount = 500.0 + round = Round 1 + expiresAt = demoTime `addRelTime` hours 36 `addRelTime` minutes 10 + providerIsObserver = not hideCoupon + beneficiary = None + + -- assign both coupons to bob, alice, and charlie + let weights = [(bob, 0.3), (alice, 0.5), (charlie, 0.2)] submitMulti [alice] [app.dso] $ exerciseCmd couponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with - newBeneficiaries = - [ Api.RewardAssignmentV1.RewardBeneficiary bob 0.3 - , Api.RewardAssignmentV1.RewardBeneficiary alice 0.5 - , Api.RewardAssignmentV1.RewardBeneficiary charlie 0.2 - ] + additionalCoupons = [toInterfaceContractId extraCouponCid] + newBeneficiaries = map (uncurry Api.RewardAssignmentV1.RewardBeneficiary) weights extraArgs = emptyExtraArgs - forA_ [(alice, 500.0), (bob, 300.0), (charlie, 200.0)] $ \(beneficiary, amount) -> do - let expectedCoupon = RewardCouponV2 with - dso = app.dso - provider = alice - amount - round = Round 0 - expiresAt = demoTime `addRelTime` hours 36 - providerIsObserver = True - beneficiary = Some beneficiary - coupons <- query @RewardCouponV2 beneficiary - let filtered = DA.List.filter (\c -> c.beneficiary == Some beneficiary) $ map snd coupons - filtered === [expectedCoupon] + -- both coupons are split by the same weights, preserving their original round and expiresAt + let round0Expiry = demoTime `addRelTime` hours 36 + round1Expiry = demoTime `addRelTime` hours 36 `addRelTime` minutes 10 + couponSpecs = [(Round 0, 1000.0, round0Expiry), (Round 1, 500.0, round1Expiry)] + let mkExpected beneficiary round expiresAt amount = RewardCouponV2 with + dso = app.dso + provider = alice + amount + round + expiresAt + providerIsObserver = True + beneficiary = Some beneficiary + forA_ weights $ \(beneficiary, weight) -> + forA_ couponSpecs $ \(round, couponAmount, expiresAt) -> do + coupons <- queryFilter @RewardCouponV2 beneficiary (\c -> c.beneficiary == Some beneficiary && c.round == round) + map snd coupons === [mkExpected beneficiary round expiresAt (couponAmount * weight)] -- verify assigned coupons cannot be further assigned by provider - [(bobCouponCid, _)] <- queryInterface @Api.RewardAssignmentV1.RewardCoupon bob + (bobCouponCid, _) :: _ <- queryInterface @Api.RewardAssignmentV1.RewardCoupon bob submitMustFail alice $ exerciseCmd bobCouponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with + additionalCoupons = [] newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 1.0] extraArgs = emptyExtraArgs -- nor by the beneficiary submitMustFail bob $ exerciseCmd bobCouponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with + additionalCoupons = [] newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 1.0] extraArgs = emptyExtraArgs diff --git a/daml/splice-amulet/daml/Splice/Amulet.daml b/daml/splice-amulet/daml/Splice/Amulet.daml index ecaa7a4921..8b6c7f7927 100644 --- a/daml/splice-amulet/daml/Splice/Amulet.daml +++ b/daml/splice-amulet/daml/Splice/Amulet.daml @@ -609,15 +609,24 @@ rewardCouponV2_assignBeneficiariesImpl coupon arg = do require ("No more than " <> show maxNumNewCouponV2Beneficiaries <> " beneficiaries assigned") (length newBeneficiaries <= maxNumNewCouponV2Beneficiaries) - -- create coupons for new beneficiaries - newBeneficiaryCouponCids <- forA newBeneficiaries $ \newBeneficiary -> do - create coupon with - amount = coupon.amount * newBeneficiary.weight - beneficiary = Some newBeneficiary.beneficiary - providerIsObserver = True + additionalCoupons <- forA arg.additionalCoupons $ \cid -> do + c <- fetchAndArchive (ForOwner with dso = coupon.dso; owner = coupon.provider) (fromInterfaceContractId @RewardCouponV2 cid) + require "Additional coupon has not been assigned yet" (isNone c.beneficiary) + require "Additional coupon has same provider" (c.provider == coupon.provider) + pure c + + let allCoupons = coupon :: additionalCoupons + + -- create coupons for new beneficiaries for each coupon + allNewCids <- forA allCoupons $ \c -> + forA newBeneficiaries $ \newBeneficiary -> + create c with + amount = c.amount * newBeneficiary.weight + beneficiary = Some newBeneficiary.beneficiary + providerIsObserver = True return Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult with - newBeneficiariesCouponCids = map toInterfaceContractId newBeneficiaryCouponCids + newBeneficiariesCouponCids = map toInterfaceContractId (concat allNewCids) -- instances diff --git a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml index a270e7b3de..49bbbe86b8 100644 --- a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml +++ b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml @@ -47,6 +47,8 @@ interface RewardCoupon where -- where the party that earns the minting right (the provider) is just an -- operational party and the actual beneficiaries are different parties. with + additionalCoupons : [ContractId RewardCoupon] + -- ^ Additional coupons of the provider to share in the same transaction. newBeneficiaries : [RewardBeneficiary] -- ^ The new beneficiaries to whom to assign part of the minting amount of the -- coupon. The weights MUST be between 0.0 and 1.0, add up to 1.0, From 3762a5259876c16142e8fcc29e6bcb0489daab0f Mon Sep 17 00:00:00 2001 From: Divam Date: Thu, 16 Apr 2026 06:19:14 +0000 Subject: [PATCH 08/34] Return coupons grouped by party Signed-off-by: Divam --- .../Scripts/TestRewardAccountingV2.daml | 25 ++++++++++++------- daml/splice-amulet/daml/Splice/Amulet.daml | 9 ++++--- .../daml/Splice/Api/RewardAssignmentV1.daml | 2 +- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml index f2fed512c6..a9e77e5296 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml @@ -333,10 +333,14 @@ testCouponAssignment hideCoupon = do -- assign both coupons to bob, alice, and charlie let weights = [(bob, 0.3), (alice, 0.5), (charlie, 0.2)] - submitMulti [alice] [app.dso] $ exerciseCmd couponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with - additionalCoupons = [toInterfaceContractId extraCouponCid] - newBeneficiaries = map (uncurry Api.RewardAssignmentV1.RewardBeneficiary) weights - extraArgs = emptyExtraArgs + Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult{..} <- + submitMulti [alice] [app.dso] $ exerciseCmd couponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with + additionalCoupons = [toInterfaceContractId extraCouponCid] + newBeneficiaries = map (uncurry Api.RewardAssignmentV1.RewardBeneficiary) weights + extraArgs = emptyExtraArgs + + -- original coupons are archived after assignment + None <- queryContractId alice extraCouponCid -- both coupons are split by the same weights, preserving their original round and expiresAt let round0Expiry = demoTime `addRelTime` hours 36 @@ -350,13 +354,16 @@ testCouponAssignment hideCoupon = do expiresAt providerIsObserver = True beneficiary = Some beneficiary - forA_ weights $ \(beneficiary, weight) -> - forA_ couponSpecs $ \(round, couponAmount, expiresAt) -> do - coupons <- queryFilter @RewardCouponV2 beneficiary (\c -> c.beneficiary == Some beneficiary && c.round == round) - map snd coupons === [mkExpected beneficiary round expiresAt (couponAmount * weight)] + forA_ newBeneficiariesCouponCids $ \(beneficiary, cids) -> do + let Some (_, weight) = find (\(p, _) -> p == beneficiary) weights + -- each beneficiary gets one coupon per original coupon + length cids === 2 + forA_ (zip cids couponSpecs) $ \(cid, (round, couponAmount, expiresAt)) -> do + Some coupon <- queryContractId beneficiary (fromInterfaceContractId @RewardCouponV2 cid) + coupon === mkExpected beneficiary round expiresAt (couponAmount * weight) -- verify assigned coupons cannot be further assigned by provider - (bobCouponCid, _) :: _ <- queryInterface @Api.RewardAssignmentV1.RewardCoupon bob + let Some (_, bobCouponCid :: _) = find (\(p, _) -> p == bob) newBeneficiariesCouponCids submitMustFail alice $ exerciseCmd bobCouponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with additionalCoupons = [] newBeneficiaries = [Api.RewardAssignmentV1.RewardBeneficiary charlie 1.0] diff --git a/daml/splice-amulet/daml/Splice/Amulet.daml b/daml/splice-amulet/daml/Splice/Amulet.daml index 8b6c7f7927..d683cf2ee9 100644 --- a/daml/splice-amulet/daml/Splice/Amulet.daml +++ b/daml/splice-amulet/daml/Splice/Amulet.daml @@ -618,15 +618,16 @@ rewardCouponV2_assignBeneficiariesImpl coupon arg = do let allCoupons = coupon :: additionalCoupons -- create coupons for new beneficiaries for each coupon - allNewCids <- forA allCoupons $ \c -> - forA newBeneficiaries $ \newBeneficiary -> - create c with + perBeneficiaryCids <- forA newBeneficiaries $ \newBeneficiary -> do + cids <- forA allCoupons $ \c -> + toInterfaceContractId <$> create c with amount = c.amount * newBeneficiary.weight beneficiary = Some newBeneficiary.beneficiary providerIsObserver = True + pure (newBeneficiary.beneficiary, cids) return Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult with - newBeneficiariesCouponCids = map toInterfaceContractId (concat allNewCids) + newBeneficiariesCouponCids = perBeneficiaryCids -- instances diff --git a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml index 49bbbe86b8..827e2526a5 100644 --- a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml +++ b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml @@ -66,6 +66,6 @@ interface RewardCoupon where data RewardCoupon_AssignBeneficiariesResult = RewardCoupon_AssignBeneficiariesResult with - newBeneficiariesCouponCids : [ContractId RewardCoupon] + newBeneficiariesCouponCids : [(Party, [ContractId RewardCoupon])] -- ^ The coupons created for the newly assigned beneficiaries. deriving (Eq, Show) From 0b92403bf5ea127253a269861fdf271f16f71361 Mon Sep 17 00:00:00 2001 From: Divam Date: Thu, 16 Apr 2026 06:39:18 +0000 Subject: [PATCH 09/34] Add MintingDelegation_AssignAndMint Signed-off-by: Divam --- daml/splice-wallet-test/daml.yaml | 1 + .../Scripts/Wallet/TestMintingDelegation.daml | 110 ++++++++++++++++++ daml/splice-wallet/daml.yaml | 1 + .../daml/Splice/Wallet/MintingDelegation.daml | 47 ++++++++ 4 files changed, 159 insertions(+) diff --git a/daml/splice-wallet-test/daml.yaml b/daml/splice-wallet-test/daml.yaml index 177633b776..d81c8a6cab 100644 --- a/daml/splice-wallet-test/daml.yaml +++ b/daml/splice-wallet-test/daml.yaml @@ -7,6 +7,7 @@ dependencies: - daml-stdlib - daml-script data-dependencies: +- ../splice-api-reward-assignment-v1/.daml/dist/splice-api-reward-assignment-v1-current.dar - ../splice-amulet/.daml/dist/splice-amulet-current.dar - ../splice-amulet-test/.daml/dist/splice-amulet-test-current.dar - ../splice-util/.daml/dist/splice-util-current.dar diff --git a/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml b/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml index 4d6d6c371e..191ebb7760 100644 --- a/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml +++ b/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml @@ -7,9 +7,12 @@ import DA.Time import Daml.Script import qualified DA.Map as Map +import DA.List (sort) import DA.List.Total (head) import Splice.Amulet import Splice.AmuletRules +import Splice.Api.RewardAssignmentV1 qualified as Api.RewardAssignmentV1 +import Splice.Testing.Utils (emptyExtraArgs) import Splice.Round import Splice.Util import Splice.Wallet.MintingDelegation @@ -267,3 +270,110 @@ testMintingDelegation_AcceptWithExistingDelegationArchival = do existingDelegationCid = Some mintingDelegationCid2 pure () + +testMintingDelegation_AssignAndMint : Script () +testMintingDelegation_AssignAndMint = do + DefaultAppWithUsers{..} <- setupDefaultAppWithUsers + + beneficiary <- allocateParty "beneficiary" + rewardCouponExtraBeneficiary <- allocateParty "rewardCouponExtraBeneficiary" + let delegate = aliceValidator.primaryParty + + -- Create a MintingDelegation + now <- getTime + proposalCid <- submit beneficiary $ createCmd MintingDelegationProposal with + delegation = MintingDelegation with + dso = app.dso + beneficiary + delegate + expiresAt = now `addRelTime` days 30 + amuletMergeLimit = 10 + + MintingDelegationProposal_AcceptResult mintingDelegationCid <- submit delegate $ exerciseCmd proposalCid MintingDelegationProposal_Accept with + existingDelegationCid = None + + -- Create a ValidatorRight for beneficiary (needed for liveness record) + validatorRightCid <- submit beneficiary $ createCmd ValidatorRight with + dso = app.dso + user = beneficiary + validator = beneficiary + + (_, openRound) <- getLatestOpenRound app + + -- Create a liveness record as an additional transfer input + livenessActivityRecordCid <- submit app.dso $ createCmd ValidatorLivenessActivityRecord with + dso = app.dso + validator = beneficiary + round = openRound.round + + -- Create two RewardCouponV2 with provider = beneficiary, beneficiary = None (unassigned) + let coupon1Amount = 1000.0 + coupon1Cid <- submit app.dso $ createCmd RewardCouponV2 with + dso = app.dso + provider = beneficiary + amount = coupon1Amount + expiresAt = now `addRelTime` hours 36 + round = openRound.round + providerIsObserver = True + beneficiary = None + + let coupon2Amount = 500.0 + coupon2Cid <- submit app.dso $ createCmd RewardCouponV2 with + dso = app.dso + provider = beneficiary + amount = coupon2Amount + expiresAt = now `addRelTime` hours 36 + round = openRound.round + providerIsObserver = True + beneficiary = None + + -- Advance rounds so coupons can be minted + runNextIssuance app + runNextIssuance app + runNextIssuance app + + balanceBefore <- getNormalizedBalance beneficiary + (openMiningRoundCid, _) <- getLatestOpenRound app + now2 <- getTime + issuingRounds <- query @IssuingMiningRound app.dso + let context = TransferContext with + openMiningRound = openMiningRoundCid + issuingMiningRounds = Map.fromList + [ (round.round, roundCid) | (roundCid, round) <- issuingRounds, round.opensAt <= now2 ] + validatorRights = Map.fromList [(beneficiary, validatorRightCid)] + featuredAppRight = None + (amuletRulesCid, _) <- getAmuletRules app + + -- Assign reward coupons to beneficiary and the rewardCouponExtraBeneficiary, and mint beneficiary's share + let weights = [(beneficiary, 0.6), (rewardCouponExtraBeneficiary, 0.4)] + submitMulti [delegate] [beneficiary, rewardCouponExtraBeneficiary, app.dso] $ exerciseCmd mintingDelegationCid MintingDelegation_AssignAndMint with + couponCid = toInterfaceContractId coupon1Cid + assignBeneficiaries = Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with + additionalCoupons = [toInterfaceContractId coupon2Cid] + newBeneficiaries = map (uncurry Api.RewardAssignmentV1.RewardBeneficiary) weights + extraArgs = emptyExtraArgs + inputs = [InputValidatorLivenessActivityRecord livenessActivityRecordCid] + context = PaymentTransferContext with + context + amuletRules = amuletRulesCid + + balanceAfter <- getNormalizedBalance beneficiary + let reward = balanceAfter - balanceBefore + + let Some (_, issuingRound) = head issuingRounds + + -- Expected: beneficiary gets 60% of coupon amounts + validator faucet reward + let expectedValidatorFaucetAmount = getIssuingMiningRoundIssuancePerValidatorFaucetCoupon issuingRound + let expectedRewardCouponAmount = (coupon1Amount + coupon2Amount) * 0.6 + let expectedTotal = expectedValidatorFaucetAmount + expectedRewardCouponAmount + + require ("Combined reward should match expected " <> show expectedTotal <> ", got: " <> show reward) + (reward >= expectedTotal - 1.0 && reward <= expectedTotal + 1.0) + + -- Verify rewardCouponExtraBeneficiary's coupons amounts + rewardCouponExtraBeneficiaryCoupons <- query @RewardCouponV2 rewardCouponExtraBeneficiary + let rewardCouponExtraBeneficiaryAmounts = map (\(_, c) -> c.amount) rewardCouponExtraBeneficiaryCoupons + require "rewardCouponExtraBeneficiary coupon amounts should be 40% of originals" + (sort rewardCouponExtraBeneficiaryAmounts == sort [coupon1Amount * 0.4, coupon2Amount * 0.4]) + + pure () diff --git a/daml/splice-wallet/daml.yaml b/daml/splice-wallet/daml.yaml index 7a9e056ce7..2a1982c4aa 100644 --- a/daml/splice-wallet/daml.yaml +++ b/daml/splice-wallet/daml.yaml @@ -11,6 +11,7 @@ data-dependencies: - ../dars/splice-api-token-transfer-instruction-v1-1.0.0.dar - ../dars/splice-api-token-allocation-instruction-v1-1.0.0.dar - ../dars/splice-api-token-allocation-v1-1.0.0.dar +- ../splice-api-reward-assignment-v1/.daml/dist/splice-api-reward-assignment-v1-current.dar - ../splice-amulet/.daml/dist/splice-amulet-current.dar - ../splice-util/.daml/dist/splice-util-current.dar - ../splice-wallet-payments/.daml/dist/splice-wallet-payments-current.dar diff --git a/daml/splice-wallet/daml/Splice/Wallet/MintingDelegation.daml b/daml/splice-wallet/daml/Splice/Wallet/MintingDelegation.daml index e5970564a4..ce662ebf40 100644 --- a/daml/splice-wallet/daml/Splice/Wallet/MintingDelegation.daml +++ b/daml/splice-wallet/daml/Splice/Wallet/MintingDelegation.daml @@ -4,7 +4,9 @@ module Splice.Wallet.MintingDelegation where import DA.Assert +import Splice.Amulet (RewardCouponV2(..)) import Splice.AmuletRules +import Splice.Api.RewardAssignmentV1 qualified as Api.RewardAssignmentV1 import Splice.Types (ForOwner(..)) import Splice.Util @@ -76,6 +78,45 @@ template MintingDelegation expectedDso = Some dso pure MintingDelegation_MintResult with transferResult + nonconsuming choice MintingDelegation_AssignAndMint : MintingDelegation_AssignAndMintResult + with + couponCid : ContractId Api.RewardAssignmentV1.RewardCoupon + -- ^ Primary coupon to exercise assign on. + assignBeneficiaries : Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries + -- ^ Assignment parameters: additionalCoupons, newBeneficiaries, extraArgs. + inputs : [TransferInput] + -- ^ Additional inputs to the transfer. + context : PaymentTransferContext + -- ^ Transfer context including amulet rules. + controller delegate + do + assertWithinDeadline "expiresAt" expiresAt + + -- Assign reward coupons to new beneficiaries + assignResult <- exercise couponCid assignBeneficiaries + + -- Find reward coupons assigned to the delegation's beneficiary and mint along with other inputs + let myRewardInputs = + [ InputRewardCouponV2 (fromInterfaceContractId @RewardCouponV2 cid) + | (party, cids) <- assignResult.newBeneficiariesCouponCids + , party == beneficiary + , cid <- cids + ] + + transferResult <- exercise context.amuletRules AmuletRules_Transfer with + transfer = Transfer with + sender = beneficiary + provider = delegate + inputs = inputs ++ myRewardInputs + outputs = [] + beneficiaries = None + context = context.context with featuredAppRight = None + expectedDso = Some dso + + pure MintingDelegation_AssignAndMintResult with + assignResult + transferResult + choice MintingDelegation_Reject : MintingDelegation_RejectResult controller delegate do pure MintingDelegation_RejectResult {} @@ -106,6 +147,12 @@ data MintingDelegation_MintResult = MintingDelegation_MintResult transferResult : TransferResult deriving (Show, Eq) +data MintingDelegation_AssignAndMintResult = MintingDelegation_AssignAndMintResult + with + assignResult : Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult + transferResult : TransferResult + deriving (Show, Eq) + instance HasCheckedFetch MintingDelegation ForOwner where contractGroupId MintingDelegation{beneficiary, dso} = ForOwner with owner = beneficiary; dso From 846c490930d0911ce3006165e10bb43a9dc11369 Mon Sep 17 00:00:00 2001 From: Divam Date: Tue, 26 May 2026 07:33:25 +0000 Subject: [PATCH 10/34] Use submit, fix warning Signed-off-by: Divam --- .../daml/Splice/Scripts/Wallet/TestMintingDelegation.daml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml b/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml index 191ebb7760..d2a53d3f27 100644 --- a/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml +++ b/daml/splice-wallet-test/daml/Splice/Scripts/Wallet/TestMintingDelegation.daml @@ -346,7 +346,7 @@ testMintingDelegation_AssignAndMint = do -- Assign reward coupons to beneficiary and the rewardCouponExtraBeneficiary, and mint beneficiary's share let weights = [(beneficiary, 0.6), (rewardCouponExtraBeneficiary, 0.4)] - submitMulti [delegate] [beneficiary, rewardCouponExtraBeneficiary, app.dso] $ exerciseCmd mintingDelegationCid MintingDelegation_AssignAndMint with + submit (actAs delegate <> readAs beneficiary <> readAs rewardCouponExtraBeneficiary <> readAs app.dso) $ exerciseCmd mintingDelegationCid MintingDelegation_AssignAndMint with couponCid = toInterfaceContractId coupon1Cid assignBeneficiaries = Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with additionalCoupons = [toInterfaceContractId coupon2Cid] From b713a7ab85a077fe69567458215ccc885948ba83 Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 27 May 2026 02:58:51 +0000 Subject: [PATCH 11/34] Rename 'weights' to 'percentages' Signed-off-by: Divam --- .../daml/Splice/Scripts/TestRewardAccountingV2.daml | 10 +++++----- daml/splice-amulet/daml/Splice/Amulet.daml | 8 ++++---- .../daml/Splice/Api/RewardAssignmentV1.daml | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml index a9e77e5296..8a6d34067d 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml @@ -332,17 +332,17 @@ testCouponAssignment hideCoupon = do beneficiary = None -- assign both coupons to bob, alice, and charlie - let weights = [(bob, 0.3), (alice, 0.5), (charlie, 0.2)] + let percentages = [(bob, 0.3), (alice, 0.5), (charlie, 0.2)] Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiariesResult{..} <- submitMulti [alice] [app.dso] $ exerciseCmd couponCid Api.RewardAssignmentV1.RewardCoupon_AssignBeneficiaries with additionalCoupons = [toInterfaceContractId extraCouponCid] - newBeneficiaries = map (uncurry Api.RewardAssignmentV1.RewardBeneficiary) weights + newBeneficiaries = map (uncurry Api.RewardAssignmentV1.RewardBeneficiary) percentages extraArgs = emptyExtraArgs -- original coupons are archived after assignment None <- queryContractId alice extraCouponCid - -- both coupons are split by the same weights, preserving their original round and expiresAt + -- both coupons are split by the same percentages, preserving their original round and expiresAt let round0Expiry = demoTime `addRelTime` hours 36 round1Expiry = demoTime `addRelTime` hours 36 `addRelTime` minutes 10 couponSpecs = [(Round 0, 1000.0, round0Expiry), (Round 1, 500.0, round1Expiry)] @@ -355,12 +355,12 @@ testCouponAssignment hideCoupon = do providerIsObserver = True beneficiary = Some beneficiary forA_ newBeneficiariesCouponCids $ \(beneficiary, cids) -> do - let Some (_, weight) = find (\(p, _) -> p == beneficiary) weights + let Some (_, percentage) = find (\(p, _) -> p == beneficiary) percentages -- each beneficiary gets one coupon per original coupon length cids === 2 forA_ (zip cids couponSpecs) $ \(cid, (round, couponAmount, expiresAt)) -> do Some coupon <- queryContractId beneficiary (fromInterfaceContractId @RewardCouponV2 cid) - coupon === mkExpected beneficiary round expiresAt (couponAmount * weight) + coupon === mkExpected beneficiary round expiresAt (couponAmount * percentage) -- verify assigned coupons cannot be further assigned by provider let Some (_, bobCouponCid :: _) = find (\(p, _) -> p == bob) newBeneficiariesCouponCids diff --git a/daml/splice-amulet/daml/Splice/Amulet.daml b/daml/splice-amulet/daml/Splice/Amulet.daml index d683cf2ee9..ca787ff79a 100644 --- a/daml/splice-amulet/daml/Splice/Amulet.daml +++ b/daml/splice-amulet/daml/Splice/Amulet.daml @@ -603,9 +603,9 @@ rewardCouponV2_assignBeneficiariesImpl coupon arg = do let newBeneficiaries = arg.newBeneficiaries require "Beneficiary has not been assigned yet" (isNone coupon.beneficiary) require "Beneficaries are unique" (unique (map (.beneficiary) newBeneficiaries)) - require "Beneficiary weights are between 0.0 and 1.0" - (all (\b -> 0.0 < b.weight && b.weight <= 1.0) newBeneficiaries) - require "Beneficiary weights add up to 1.0" (sum (map (.weight) newBeneficiaries) == 1.0) + require "Beneficiary percentages are between 0.0 and 1.0" + (all (\b -> 0.0 < b.percentage && b.percentage <= 1.0) newBeneficiaries) + require "Beneficiary percentages add up to 1.0" (sum (map (.percentage) newBeneficiaries) == 1.0) require ("No more than " <> show maxNumNewCouponV2Beneficiaries <> " beneficiaries assigned") (length newBeneficiaries <= maxNumNewCouponV2Beneficiaries) @@ -621,7 +621,7 @@ rewardCouponV2_assignBeneficiariesImpl coupon arg = do perBeneficiaryCids <- forA newBeneficiaries $ \newBeneficiary -> do cids <- forA allCoupons $ \c -> toInterfaceContractId <$> create c with - amount = c.amount * newBeneficiary.weight + amount = c.amount * newBeneficiary.percentage beneficiary = Some newBeneficiary.beneficiary providerIsObserver = True pure (newBeneficiary.beneficiary, cids) diff --git a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml index 827e2526a5..d845ebfb08 100644 --- a/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml +++ b/daml/splice-api-reward-assignment-v1/daml/Splice/Api/RewardAssignmentV1.daml @@ -31,8 +31,8 @@ data RewardBeneficiary = RewardBeneficiary with beneficiary : Party -- ^ The party that is granted the right to mint amulet for this activity. - weight : Decimal - -- ^ A weight between 0.0 and 1.0 that defines how much of the reward this beneficiary can mint. + percentage : Decimal + -- ^ Percentage (specified as a number between 0.0 and 1.0) of the reward minting allowance to assign to this beneficiary . deriving (Show, Eq, Ord) -- | A coupon representing the right to mint a certain amount of rewards. @@ -51,7 +51,7 @@ interface RewardCoupon where -- ^ Additional coupons of the provider to share in the same transaction. newBeneficiaries : [RewardBeneficiary] -- ^ The new beneficiaries to whom to assign part of the minting amount of the - -- coupon. The weights MUST be between 0.0 and 1.0, add up to 1.0, + -- coupon. The percentages MUST be between 0.0 and 1.0, add up to 1.0, -- and there MUST NOT be duplicate beneficiaries. -- -- There MUST be at most `(view this).maxNumNewBeneficiaries` new beneficiaries in the list. From 39d3b4788985a32324f8ebd4eb9cf1455bd87338 Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 27 May 2026 03:02:03 +0000 Subject: [PATCH 12/34] Test orig coupon archival too Signed-off-by: Divam --- .../daml/Splice/Scripts/TestRewardAccountingV2.daml | 1 + 1 file changed, 1 insertion(+) diff --git a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml index 8a6d34067d..a7e177a9fc 100644 --- a/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml +++ b/daml/splice-amulet-test/daml/Splice/Scripts/TestRewardAccountingV2.daml @@ -340,6 +340,7 @@ testCouponAssignment hideCoupon = do extraArgs = emptyExtraArgs -- original coupons are archived after assignment + None <- queryContractId alice (fromInterfaceContractId @RewardCouponV2 couponCid) None <- queryContractId alice extraCouponCid -- both coupons are split by the same percentages, preserving their original round and expiresAt From 3a3744283cb87a5a23f388d0f26105004af62d0b Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 27 May 2026 03:27:53 +0000 Subject: [PATCH 13/34] Fix daml data-dependencies, decoder,sdk-version; add header Signed-off-by: Divam --- daml/splice-api-reward-assignment-v1/daml.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/daml/splice-api-reward-assignment-v1/daml.yaml b/daml/splice-api-reward-assignment-v1/daml.yaml index 0e3376a658..ce840643b1 100644 --- a/daml/splice-api-reward-assignment-v1/daml.yaml +++ b/daml/splice-api-reward-assignment-v1/daml.yaml @@ -1,4 +1,7 @@ -sdk-version: 3.3.0-snapshot.20250502.13767.0.v2fc6c7e2 +# Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 3.4.11 name: splice-api-reward-assignment-v1 source: daml version: 1.0.0 @@ -6,13 +9,11 @@ dependencies: - daml-prim - daml-stdlib data-dependencies: - - ../../token-standard/splice-api-token-metadata-v1/.daml/dist/splice-api-token-metadata-v1-current.dar + - ../dars/splice-api-token-metadata-v1-1.0.0.dar build-options: - - --ghc-option=-Wunused-binds - - --ghc-option=-Wunused-matches - --target=2.1 codegen: java: package-prefix: org.lfdecentralizedtrust.splice.codegen.java - decoderClass: org.lfdecentralizedtrust.splice.codegen.java.DecoderSpliceRewardAssignmentV1Interfaces + decoderClass: org.lfdecentralizedtrust.splice.codegen.java.DecoderSpliceApiRewardAssignmentV1 output-directory: target/daml-codegen-java From 053663bfc7e854a07cb47eab061fcf69cb0d8265 Mon Sep 17 00:00:00 2001 From: Divam Date: Wed, 27 May 2026 03:28:40 +0000 Subject: [PATCH 14/34] Add new splice-api-reward-assignment-v1-1.0.0.dar Signed-off-by: Divam --- .../splice-api-reward-assignment-v1-1.0.0.dar | Bin 0 -> 483118 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 daml/dars/splice-api-reward-assignment-v1-1.0.0.dar diff --git a/daml/dars/splice-api-reward-assignment-v1-1.0.0.dar b/daml/dars/splice-api-reward-assignment-v1-1.0.0.dar new file mode 100644 index 0000000000000000000000000000000000000000..6a15487e110e2763dc4bb4fc6d3188340f78da92 GIT binary patch literal 483118 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

_@*g6i2NQ#r4dX#<6e?Y0+F7)HaKn3e!`r+% z`D1lbw0y*N?!>m4Q24(HCs&qv8$nI^VI0!vh8B9op3Wab30veFegkdtqSC^iv_I4l z-sX^gpC<-A2?8tmkZ&g5G^b%IO?iF%a>-#db&ZE482%6BkO8GESWL1PLWkxhu)B}Nm41b=~Md&4|2DFH#u z{XVgwpgw~;e0taSkZ>?2=`pdzI+cSX2oP>Vmq%SKDmJ8X5uVcco=uHSiVG@7D{ZH7 zi7x0Y#U?P#+cTT;pa_kOhS6-*f^e2O@CXRxc}Kt;(vT=(C~`c^-3jF6P1Dks4x^!K zk!NVZzGJfhP$hvQ(dZUZ@C-o!B5nv4HFS3wJMcFcCTtBsPk>3M!w|P>KjAD>|IMwA zkFf;-%wYncl7+M`VK1)(>fpH{(zQr3WXOu!%3k867Z*!HSQs;8A#h8bu4NGeDwhSC z5y4ZTh1MxwdTqIj(B7vhYiYfOa;si?(fPqm!9d(03}}BA$jODlPXxE!kfDVhp~Fo{ zk_rKk8xM|*l#;yURrNr}4XZ)v`1uNa>?w1J$_UBK0)Ht~dOwLD0<+qxO~-NkR}()p z#ugH=lNBIW8dB9ny#NDTs#-%b6JS>9FovyKFixNz0}D$$?4_y)9`14vNIV2!4A0M& z5ppAlw;T!(7z7B=??Fp@&lc!2i~-G71vCobErS38Lx2-WaqoAK z@j(Fa6|Ra4#QQB&gcvG83!R0x-xwI?W&O`(0U?VYe=U3I`!BnEAt;8t2NLZ)VxaU0 z26Q(YB)+BWfrPvK7SAv)V1@_MY5{>Df@8M;v$W8wXjqi|C58aNTL>qxCmrTT*J8x5 z@F{?l7`n`@uKpPy=K{fyultO%90Is$rEXaS!#2kNWbrm3${ynPS9c@popkVCgPke~ zLhs}~#NBT>X`ziv*nxv!n|vPV9qe>>7_*ZSxiTjPW&|(ZPaKLqFnrsZA3x*)me1e> zI`*WwkLH2;kwg7_0SEDF6twq||GExO5GqWk*AIFMTaogRxg=nOj0@pa$Ur=~p?X`I z!=Mh9zoX?+P_>Q_Ji`qM20~6+sqahiphQ{V85*cwx(&v8i7DWj;UA4yweB@|<{hL8 zO19(#dKv}8oU9>y@^!KddNBc|B+yyQziooK4k$~o;iJ9xrn^rdgH(y&1kR`1@ZnaZ zfVHV}S!6G%{>Z5~sY&^}G{! zhs}avQr3_Q7xZjK=e#o4HSJoQKx6nYb^$!NK*|zecKncMX^3VB2dD#HLPKjvnJYkN zm{#v|01Gh`>tBT_e}T2%LeXR|W$5&d!(qtqB5o_!A%e9B06NsUAEIG$|BC4E3Mq?+ z!CTXuPPiKb8kYqMf)7vvTtj+1LvVmLHzar9?|7dUf+ov*(9_;C<7UGv%%}>G@MLJg z1y?44D<#EQiJ{~FZhE~2(0L0bh=%RTdo++ia)odnyV7B3bS=^hE#!A>)__j<;|-sE zV(<)O0jWF?V;X1@8N?Xg84Kw!H@X%Bh72ij64^`Ee-DqkDsKpYCmJ>@f5|TZ=yapG z&*p)?!5tj{q*CWvM#BXD)qpk&#!c4}jq{iyPQMcl6Ho;dg^`0fWFW&95T%514cSYP zf4OA~K?~$Pm}&3DaI;UsVcx0$Ye782NI>ckAoXo7eKc(96X5SO6`KXarE3Yr$qtXh zC|t(QCUtr1SIYyXm-hfGdvF{lxz7{o{hex&Y`Y}>&t98^&zk~(;cQT07I>_e-J`NC zY)neroft|2FQHU$!zg%63IaFN1=O z9G1BZT7>n;UwzzbfR4U+sJf3ficQkl2xd8zu>ay0#}xD{?Mnp;lu-Pq2cCl^Nbv#T zp!eq(!jBKsEJ6%irOhU-V6Zk0#7z9R(XNek*P9AVE*vVClh?{keALX4Wb zh_78Mx!B9pjbJUc#M{z+c*V6U`&!!&`(oRK@2_sweCD*USxm zlvK%AS&t#5tcu{X>2;Xq2bLj3GW;2hN_TL5(r>LAonn4zBmK* z{IFUBeY~~cA#|dQM+s3&=vv#M2BX~KGb1`tPDr6DyzCs6!F4@($@AW^gMyDc%dXR_ z$JOr7f;w&HlisRV&*%MsMYvw;_w3b^K>BA9M^5i#HTI|4JkYI!Miwg}s|o~_q1$CO zyTl&6izF5U{4Z_~oWW)={xexNA5OMq7jKI0Hvl2aJwgB{iLABS%lyeM+jB>eU}$LC3%d_!oWU__d%U53XiQ1Pzx8h=NFmteEiQwnA-Z^FvklXm{7Y!WG zh?^slqKeuA5Y=AS+g4asCU13X@1yYG5@!kO9nszu2#p0PynI1B^7f~a{j$U8O)zK0 z-Ar&|^A(oD8@FY>!+XZ`){fL2vu-M8$6KR?sP>@HW)**m8`+tb7T?V={aIe;C9?US z)BNsBz85W4vHrAVH}^ZSBIQV}?W41l`=-tp^$~t^ivdS@l-K;m{>2gh+-A=1wcby; z^Hp9YEdEjE79Eh>&zz4vk9N-QT2xfNwtnDzNaj~kNpPztS=3^7QXPV2u6+sWd}26y zO5v_h{DXLTwlm{lK~vfHJy|?vuEL|5mBRU0k%MgCN~VLl*M6L_}lxg}A7RmKWw+YW~gIr$8Y; ztp8DoFy~@Ip5weqFNTV5GKv5@%zlVfze_p@ql2_F7^sq4TuK+lCh%?9Jdc!`k=vzw zev{SdD_LSDZyn%zg7%~y82rkXwWdFcb&eW}cKKp*Wm``=demavWU4f-bGR4paX--C z^Fn2PhN%n3-DmS;X9^dTB78DQIVtQcC`zxUsM7>RPS%H&d`~Gm+LDm}s?DdAPHmIa zHz*JD{g7RjgyzT~L|J|q&dM9vT#SN2O=|17ZxvVt@{Yx*az9g_`ONN&^8-nf2(%Lg zLiQ!y@2GM>B{+jL!xmBaO2OZnFE54<3Pp{t@3#HZ&p$Zb@p9kUH3l>V#ORB^bMT7l zn%%hg!4$wQP88KO3SkB1RlP4>cGRR<#BWEoO8xyC3;r-A=qoS-ZvfO zn5U{i4QTOxE@A;ii!b>w z(uSS94+=RMF1!r1owknlz`HjwFcwU_ZZ!gz>s(gf+WC^t`sTrAXiY1~bzxMPzj~22 zHl$q7;+y7hHk>nay3i@D8V_c%J{|c=ss}q>G8qL%>%^^37x`QX8U@DcsI5(>PPv`# zvu3RImpQ+&zn_u64eeF-T}q7BkN10aoU=^%Kdi1&jZB4hVm~ zqhacBx~X@KSnDqgVa{M#*6Qs}fRt<`jNo6Kx>;_VZxrKN=P+A^7u&P|RQDJs3}Yb7 zc#V=lG-Ai^c`cFYEjP|4AbIAT;SHF{zyxVhOy|rk+IAq4-i!kWf-8{!$-Z=Yu;+ zLyGLqu{~DrOqb_0MI;>3HGQO>*K4W?m#L|Du{^*Uoast-6r_W*8+PLz*bU~DA}s9J zhm6Gkxo-ZsI{tC1$P+7Gsq*M|k+{hZAuiT1Qcra5}KmFA%le%_+ z@STo$QA|b7xSsWZTm`z1+{v(ZgWnUBMdoRy^i!NuTgk${uj*)g(KMp?)2+0UzL-}h z)6JDX2G(DJZj99_<94C6DlIDhr}%dWWAbSZM9l0e?RQ8-(y0=#wfnj0cgXJ7(_vt% z+)e235V^0XE0E<_9}UpD*lx2M6DSfhb+{rAvA>loY;%}eMl zP;G>{3Kd9pU!b7U8EmbpTXvL5b8!C@QIKeh=o=(Y7oQhAc|RcYQ9=B$!pM;!J~+Nf zUQ7w?A>|h90dRb4$K!4AhP|aEtSBZbFU&f+ii@W&m5zg>i7zY**S~r9F>P^s2{DK3T6SUlLd6D&9 zj_z|*-mb4g+`u!TOq~3qk)xG))OHbBddmLBy=`SdVN*~`g3#{;ng`p;!pZ@-F|Qj~ z{m45z`QAZd^s1b*A$P}*AAeEJUCcl7sHiz7^}o`nzj}M`^`yaghuMQIsP;%BwnHP6 z^8crlLnGEnBjZ^m_fco&1F7pS4liC4v`eQ<#^ozCeiW21yMK^oSD@7h#AE^z|D=p>}y&cvR+`BH;(E!uW1h7KH z92T}8h&l9G7FMW?3}c+%5fk2KSumiWmrHHE4rbbZjb1MO{Z%ki!7KFgjc?zjEncFR zn{|GdrbB`QTQA^@7jVEdI^3#@^QbK z2D%3uNU1=VjA`9f>wDpbjNuvFsQrFV(;`s`$pan7m3=e@-1L8NV1hhsvRvasA6*GJ z3I3%-e^dV`*wb5|J}4%UaVQc@ljy={Ml7_?~`gRt$osf9+2v_4v8|O z7;dC^QPJS!J+(5UZPm4MLc7>=j4oYng<&h2R-Wh}_jaop3z_n!zqruY>yv)XJkw+xJG~5d2;QGoF zcEuUlyax8a|>xH6JN@8X`VP2zYVSDA2eYudFj$jD3t@026UEK zXozgM$V3X@kS_>SNuPjY-`@Uwpf^e2U_$vZfDb32p&|aMd&!pg^3@B%yU*Yq)D9D+ z=7e9`L_W;!a~X)7+p-N?cIfR%LQaNxscy8j;rCxSEisqgpB9XKo+S!kc3;DIWjsXg zqxLJ68#$LZMtgOUrz2w}qW8x5w;}>Wa2ZF!8hkJocvd&5QDj^+lt|B`(AKdJRQ$ zekd0Flw(dQ`ADb00O|4eb#$25t2CR{CySqBCP=?kYs6bf#@&`Q~_x zT}Ju7@4}Z;?o4~2S9Wc=jAF)2*;PPRg5%1*vA&nAJ@>X2py@Du3G(VfmxH1N5`V`R zvse-3tZQ)K!q9l&s+)@ptvN_==U%#!Dz-T<{vg8qn0f2|bKu}H`PM<(_WJ+Jbc1|r zC+ljJXP|S>!JQD}%vqDBk=gHMrS>Lt=Ohp2%FLZa;UF6oG72Ni;80o&G-7+Qk#wvm zv0O}cv9)N0M4YXE4E&7;Q8W=O z+`JtUvtdO>KhcP-Y1>OM9wd)sB2rC|59Rgp(Al+ScbO)o%yxLGCEPDV3WK-v$Uo=HV><3X(YZ1j0h-%!R z`~D6!7)A2zjDJuW;1gB7K}U6M`Bc7T+G0FV1plrHKcUlf57XM`t_srEA3rpGz~hNq zf2GIAbwOm+hwirrXw7!S7J<|{7$FW!TcxJ)2k6aqX3bP{Pw_cIz4L^% zwZy|yuT0R5krT_@=~fBVultEDyUp$lUJS;q8Ju+_vfrs5TXRs!4N|;q7Lz+)Ucx&; zOv*w}EFmAfaT_lWW_)|c(j)D!(6IH;Tr?KLq>Gg}EtL2?Bqs2L^YSanxx~B~)fVN$ z*z4*^o~MlNz;bh$eTU>JWr*ppIkmi_66q+4n8WUHFl{Yb00fYVTx`|r6pUc9K8+I z2RJoAuWM4xee&`Znp(`et80{)vE#Q1DgX(bRS?*8za|kzWH_<)l_TO@1*^8@yS#6z z40%-wP`tlP3pLK*1V7;*oBC){^?Xh%Q9z_b;vMa5Ev_~Gq4!)<$LnfB4G#m*7tjVrKQ%rz*NSuK&c!SfgoTC%+BCGXOM& zA?=zT7igsE3!WCKxZoTRVg?kUKH)!~d9MG=MJFk%ttJ+ym(9b%?=E@=D>b`KO1qPe z{POVMg1A0$VdED6wUG{aZr9I)s7*~`9~svGG$do=zYYQX{-SrMV!da~Tu0)d(-T{k zu3WrOm&s!`6Ywd;IARLQ>e+u*->yEfnV_B@!MXCQZiKg@HwhVtxv!#mq%t0{eR;r3 z3YR!8AHuA^+$X|Pp}cpz_s(}|KfNOg26Q4G7cr476FB!YuQ$@(GsmL7D|wC{=>DK! z6kV*7)*pI-w@Y|!xIoNpV46dK7F|Vl`{(C-lK?NfrU_9#{9BdfKQNa9Uk|1qh(SSV zblFsB<)5i&7!)Evi1vaucG!$yMEf~sJM4bAT(gc;m`I2GB+cRH1BC!T^BwZ?fhOTn z)Y{G`yi=kTj$n~c=2zQLa>|}z;g4=|{V9d`wx!*jg>3lzw;-<1TcGh1EzGL~QO4O8 zb3*#fNl7DNXKCSAz)K(H?(n~$sTz(L<>aXbj+l|MKM|&?GoNRVA4=RuuL!PToZ+)~ zRzhY%lznV+Z2jG7+n{Y9;#%@*axC){+LTSx5w{*U(P-V+kFjtv^Y9a#Y&lN_C$kTm z9u6<9`V#HEvmzfVomVP4p-J!uiKA7Pp1p5qrxPxc%UGJ&TyTns0bJEF_Yc#W2-)*%2exc7bbt<#OH$h!VY=@a)*P{TJ*O_)bu5fvq zeoVTjtn-FX4es~_cX+`GdvKYi@7W76AZ;G7lX}DB7D;7Mc(Siw#On{48s=-KRF0p3sc6k_Z#&i z)ojll_((R8`%_>Iq?lK2zLXV>IFxi&% zu5-x3tk@P;1>MQz`zoICu~bHm596tAqcqPeuTi5ivuD$hVG!F143$6lhP*0=OpoRl zOo70Snhl$c-94(z-97jMLBu}uL|%(c%k7|Fq(==$MrBALhie;LKEh=mM+QgG?;IM6 zx~RefTg_BKMeMrx>zgC9TYt*GRO&-}!Cwo+N9e+r#tg}o#uas7KFH@8H&JZKQg448R zhAOc=bZ@~$9)6|$_&+!mbI_>EqdnlC>jdsHTe!%3Ge55tWafwxTjrJiMk%O^>#OOY znxGXo+Z}4ZayY%jdfMQREk<%4l9WH8<_z75xh^9XAJ6e(|LOhqeDXy`awqFRjm2OgDn4|DZ$a<*CF`Lzm=J7iY)8*v&aj* zI2b9W_|;o(rwC2y4GMnu7NIM|D1^JGss+KYo+;wBc6xErP6kKp56x z>_BR@^mtnpKrYg;NKmjhwdiv`s!70HP!i>P&P0%+%fPAxc4rN&@Zs-!jiX? zAlCx5Vq&<g1hv7+J^)=zE`GZph z3n8f5r?RU{9t3)*GotM|@TX8FN{0y02$MHq!<;j}ExgnAoU}stZCM#z6w&hHyV zm>po>H@(gCd|hIQ{OQj|3-y?$(Os`U$wrLRU{CSwi$;qypJaV*uF?Gqc09+E3-(&a zYUJVLoP)17VK6|&+XMo(;kFk?X2A*`a!e`>5e63N^}Tuc3K0gopVCW~eyVK0KHB~^ z@-0!6L<>2yaDve_bU}r*b9F~ncgf&&=FWr%-m*=XO5q;Eh(mbV-dG2CMTK|WclcLf zN%MhnG{4YV0Z+L?a_U%*jdiJ*CqvR7)-fd2dlOZEj$-C?~tILwz@Sb zNT!-{VKMCU0u~D2zrX_5?Pxic$CV&a`h^NDmbFenc2!9Q14@=1PTDnZFBDvr&IZ5n z*D71-DTuRwh{!zfeQ)+{K`vuTXiOKeqc|cnYC*|-*=9tiA+^uJH||~P%~}t%lI(&{ zyvtzINbe#nDAA*TRLMOE&#`Hbu`Sj|nZijJy^3~>REN*G$J}G2G*f7!+*5@|PE=N| zt)ZEga`G^dj_`RijjsBZN>0tvRq8rtXyePFSaL6xu4pnn^)`QVbv?lqQkjAU26WS< z9#w3nZo&r0io&mV=Wih64}3LSKnN2;-|1;UXKWBF4qVn?FjiQxEs5pNo~s7u?IR3| zIyurz4~os(On&v1{f+VRcubV`T`qs$rENcb>{<9vibdkdYTxj+6?ST0fpOxcUi$C5 zFGbByAD;771m??yV$?&C#CMXYweHd;iL>MFB;1GI+Wi@^jUJP$s1mXy_Uzc@yL?Y>V1gg@G$hhNsrsX#%TsZFdYP3i`v3pX2M2g;y?jx^WqcL+E5$ zdq-nfk0<&wIof^SwY=zl^t&)gbI&yqzF7z3WxnVZ`}1H5ApR0CWoE0_qWs1mM95Kq8V&2wMz1G~G4KnjsDGOZ0>Ml8Rl;9H9uYWp< zcrks~NcCFlWHrbvV>wW7m}A=~ccw;3=-4{NaL84n_E01CA>A^+W_6s6Ecr3WYQBQ) zA$|MF)BU7z%q%ywlqP``g7u}0y{U?wJ*H!pLj|*e^%8GuVZ)0#(MhK#;@7-(qqc*m zeaON>gBua+;FpGd+Z}BI7S}|-a*G;))*#uC6Yrw*hioji<)0gwIaq8B7uin70r_~e znNhusos*+Sl2kSUw4yQ#D1qN7c%eN`FeJxLFaxE__2)h+Q}NLylR!Pk zXfp~X&@^{>>6ed=(WH8wrsXN0r}6vj%sn{l(JkuVR8&f85C7i(r{+m&lT98{PSrRZ z#A4a$HhA_U{H&=Ed5w_bxXgv{1MYqC$OT2E9FTDdh&I_{Q|ps#PxW zBd{*SBJe`t79CNf(N7`V0FcW&4TRbavj2l;1 z_LAdvgOL0oassx_47q6SX1`rtC)Cr|ZOX+po(dC_%Liz)+;h2j3IvAP+FoXk!Kdfl zjlf|K;4Z%I0!g8(xZcm@%R8#NPxMkvdLSL8Gdmn3_U^LY%LpHz`j=JOYttHSdSN=l zr*?csmZzn-@U6&Yac5}AxDr-+;reeMGxmm5-8xwZvs5p?e&G$;KYYmayfrmQ^V~Gg zlemm2&IGZ}JM9rw6Um4YVe3?jO`cf8OgDMovd)d|5uJNt`sRSjCC4}!93ZcENIRnL zdqtT{wa?q9ICp|j-Pu>wAI-WN>`cUagG1MdF81PWGe5wWTVi_tIM|rZV9Av;FTqz@ z`i%5{UUgF+pfv@N&IimAxjnj!g#TM`>G-?g;>5IdznGh{Ob9^xI;0 z@H2fmt(U5h`YNKUkYdjZKc~-yY95I)IM=Cf^>4gIbi|7IPoJs4a1zfrh3NBy67JtV zKaY@9dKRn|s~fNcajbHg!{)`;Fcn>Bx~^X|8h^q2RS$RTz%%$MKH8X&wx_(hGyKaA z&8#D4WX%rUyo0==^4-qjfK}bUxC&AgoLrXt-=FzcG`)m9+KHe&A(xHZCq2 zXb9Kbs&v7jks^I|p~n+%M6&$OYf64Z zuIbMlPJhXny#0l6#R;Pi9d}$v=EIj?(gcD!~xm&m|(5QLNe9JgTjtJ`SPROj@^tj`>Q=pi4a*DEal zn23LFGaZ-Oe)4@Je1Da$0D5lYJkF$+xDG{J%=hf;2-|xVybIQr%;)O5JO<*=o|7sY z$g~2s7?$veg_^eL4joXdZ|Vub2IZ5_WOu7WaVAEyyZ3zj!xf%#XONcJr(thK682^# z?|BWMi%k{hLsK78cySrky1U6{d?<5dX9o37y1Vsfe5okkv54I4{Id0Pai+{FME)NY z{br|6m#`OHVd>nP`8QJGGA8aOAJ4y;H-kmxtFF^ZWKp|OB286F)3xD}`SM%Q84Nuj zcqA`zgf-8Zc8juXuMx-1ny<%0Tcr^?%D<$>w;bMDoL3mNp9-72%*4e2elQY-4{#ms zmLqIu&CLRtm~xr=9O0LE){Q}8KCiG2W<%gD_g5u4n2ixQtya{jzNs1eK;uqu-?4Jk zr1-2snoXkk)z)`qxU?NdIbk+Lg-x}Ct_nx#oYYa~z4k{1?bp+vcM?TKafTlf4eZX4 zMz_<9jRdyuG)6dAhm)$@hKmvgby~N(x9ykCKbzL_7-FG!h3xr##O6?*9hJ73ketP~ z<6KM{;0K<((7`&@DHvy9=0*yp6bx@?X@A3>)WP~_?G~lTtuQTR$BOBbKEs^;D0@>8 zSs23rQDjH)Wfwx=$C{{x(yXMCNXqYDKA&nI&NjRc;CZmzfX4tYSyh%UrP5f(NQb7#7e0edF;FV8vhppY%~IqST0~Gm^yj zCEIh4HPtLhVoHQcEKt4QBpo9=0+Dyn&N>Ju$~@%jZAVa@+LfY3J0vcwECQzFu9Pow zUodzb^h}aV(N^Xh>9Fq)3d+7EHVTZ?iQAms^|^X!6sS;vSk(d16==Kf`;p`vqrB88 z<>*J{tHnCl-@YdRYVu}ZXaqEwKUMFgMHMOvd~nS*;{6aHl4d4rsl&j*xo`t{WB8|7 zm)CH^9{O`%Dk$=eC?lBb)e>T*7w8lKiz+|w(p0pp0{TZmgkMq9&Yqq z9vSC_lphX2UGmi)a4mT3B&B(GNn|kFf?@Eul&YioCds(7=#Nu6EJizJ?X76@>%x># zrrZ2L^&CAqZB2UehyDkbUKc@C`o;u$6S$%1Qlp zV;y1P%!NXUS(?W6)43^c`RZY~9bQTv7slP83C$TN`^uWJw#svNsl?;3P|u+WCKsuJ zffR?v{X0^F?<08LZtzwyte}-UF081-;oBWmfjBN zcG;W?7)dG9vRMBNa#ClVOi4Wr5f@$R<0Vo(qojsv|dyKbRk!KQ$n|~fwCbIxPuVxFoZkw zKd@~ntB2}3XjaF61>jgw??x=VzTj6Ue&UaMQwVUp{YtDHvvAs|OP*B-biVy6s2sNf zx1zt3sFOd@5%S~<{!w7F0=nLQ{Wuc4amrXdN71{kW>(D@*`3>C=8PX90q*T!!VKQB zG|BD(3UVTmsTqV`aQ`^_zl;P-R9aUYSz)^99w6~v{5xDC)9*4}@&=**0pN;ndYAb6 zjvm$Yt(fbn)SRQ*8abYj4qiYVVGv|~$Kb()S?|gOqmVI_0_)}P8Du*y))&p7SBe~F zpMf8JI~Rm4ZLS~xWd1VfVP!Yk$kiD2&My^S9kc}rgxG=xpkA+Rl}O++B@rtagMrG( z@yspMX4p5P^YsO00xd@o`HDsXIgOm*7=K&A5I-RHUV*?<2#PJV&!{!EO)j%lJiHgy zsI?b1puP%$a99)4$OV=~wq$96$UTK}Ppw>PspiitYvuhFdHaaK*HbppoSD7UCVE-Mtvuk|qq6E`%EA4o#F zwYK=Ov1Yu{C*?WBE{6nuSe@)jZv*PF8LjjT0UfKO39YpDLhBQAlXqZVulqD3tF!(y z{!)W%Xl0vupiI4a42r35?R~giEh$bH1gKsx|R?t7e+#$p_5wiDIW_eZL<(mqj< zKiatdQq>k1n(U+J3fgq(MCiLx;olFj3+3D%-Jlm>pMYE5e&6Ai8Se<_wtx*MhvZC2 zmqwIz1CIE3^>A8(Pme*yL%8c=IGss@aul8o8tVa5&|7VmXbe4K{gQY5Hl_{*U31^U zs*};oLkRo+BardAA}JweK6okIwgJ@(HBd;-_)NfJ_AADuR;K%p5`2tzwh|xjd59!+ znj*zNE~wp^*h-~FH~PePDqTSr1$~K=8wrosW@tS0b$%RK(0T|& zITjJ;MP2=l8hO`ejg(+(VUY6YiY~1dYZuntOnz&FHsI|%6Cq`wpo7HKNP9hhqKg961~@p*g&>8oTXHm)TOxQm$0Rb$58lw62>GmS*0ce zhxihsW3;_Eb)~Me`|*!tNJWEub72pmq(B9Z_o#B2a|S{GB?>K9`@D%V*1IUD7ZRV= ze@&R^{h;TfwDS9fGMR&8s@+I&>8>_ScyBP()__Z_7gQa-H&M!=V$->-WbQ!k!}9q;)c=o0zyjIh2* z43*tA56Nwx(Ug@er1W;?0n&b=PC>Ni;d}Uf0*^a>a^>7=o%cu`g4=N}0LF)4qlB9t zvqSJ5-!XXS#ihTY8gHSfdcr&((a#xUj!zlw2q+|nn7%gzmp#@!c#DqEg+Sm8UQ26L zGr>^@%|2emRm0=3epTB}xwmB9ip5r1qyhNWMnv@5(X;Z`jQ$|-zOTszE%OY}qls_} zV{{8`y^`)-RtI_f1k|36Zy0napeh!zc!wqw3N#G&oPO$xk?EdZg3rzk zTxv32uf9eh0&aTk1PI_fchc#cN+Eb^&DghSXH!v>nO*Nj|5&A@FRCQU7S3{y-ZG#J zxD;~TpXJ|GKAb8^@ZKkyD-mgei3!qV$@N;R*KQaOA1!GQJ3*umtg>?_v7`@WZ~-QLu!oBnO#d4?FYN_jcx{-rwX-Pe73fcS9rn1Q zd%h6sQ5RX;5h&O=sPc>~vqQ>Tw*T9dwlkz=I+MxyicUtSW?H}BsRg;l>0a7xlAvv= z1N(0K`sHCE7t~|Y?y!)c9>(BF6Y8dEKBPi$2XNmzeA=EUkx7lsqEGNDl@d6jc4~2o zx>x1Xb3&`u%+`mh@+opml6s$X7P$`FcQ>U1H&ta~Nd}Um+mR8q}gqq55?f?iQd1NaUuUTYoNMlk|)+B6Q5hQy(M2wKSf3 z4A#DUW*Xy?{WE`r)bm_WJ=Q+=+zNp`5BtPQj8FG0ic3>fHWBGOMjaTxi;zhLqrblC z7u`G$>De|n&(^%v(CU*L-zGChvT<~XY5MbRv~gUvvKA-2vKGnI*xHos8ng~(B6zmM z!0`y57NStg_?j!#{&t0>g zjAfp^%K9tmb~zrFk}7#*_D516BS)WVmNAd&AAAv4&1DyeFa}Vlnrpi!Qnax7F!qnz z{Nu2Jms_IZ!aj2LExqf;$Xv$azT7I9y5ZiPbzxs_IahC(>M^c5!1qWm=!c-oC?Ixz zAUQlP7H9Y-($%OxrE_HZXCt5D8Olst8Q1|`yah$V#R;eH+eShjx6z#Gv(BH+KbrK# zLLcrvBzG*}J1rn}1Ec&S(_M#kdf1iBvjay9ic_0kFL4jzOKz(09j3UA2}EroO9_{A zcJTUBTZ&a2B!c;NacQQ7%rz*=eo2xzT6M&@ldrUZJ-vQ?b{p10`pk`sJoH|3G>A+t zZG<4z6{iL8tdeN$k>1qgIu0`L+O)@|%R)@gckjX=#>4MTp0X>dmJek4~(M}=-l zCF$4wR=AnLRiZkRrFG1yGGg)=bD7;5Q>anbz_4@P?Ze)YTekk|UPLRrLpH#fF1RmH zro4l*qf*HDJ<02R^Z=D<@lv|(AD>n594*BHq|Z+g57*B#PEQFB*JJpO)|cnHb7%Rm z%4&m>BFHo;D+jVO(61MbIp%`l-+@;}#k3OpLvePRT3sJcS)zayAs;tV!6c>;GB(q) zy%k)eKXeeOPY7~K4?@a>`Bx9!w{uulY?uplU18nhR;#N$6XC~W<8rqg(^qh zR|9Rj`bLXAcQfvP1mz`Se`bbI{~DD-iBl=Xh{Hi0CrLils_2=r;<*UXTJ6@XtsZkD z*W|J1E!5sf)3YkAp!$xh?b-wYYyU#x zX^lGS_*6=$PPC#=Ljzr#omN+_ol=**EWM}>8E%VnM%vxF++HJR=da9IbH0{6!8id5 z>n6QSDvod59)xGz@c|m!#B@1E6TQ>YPx=oV~2w4e;CXAS$ z9QjBQXX*_OT^3%sa|~b>rZi?Xy$Lix2qe-$?m8Ac5gGcbZV?Jq z-!k)*ODJ__0x5yZiK2&u+paC!ZM0_i>NyYS^J|PM19dsclCKnxhW&br%XRFHXUb$P z+qEBRjCfcMt`?G~#Uc&w3>Y-uJ7?CutO{_N851u>HoEgDL1)d)ERJpq5&FDU&7V*M z3}BKlDm9eQAgSP{&;P(+T}StG25!6ZyUBuraVjY+ZSvi*Fx6s@3VfOfE<+2`f z;_fX>SSW*pwj9t)6{eVP{-GbTp$>93{9;s4>Z~<6I4YZG$H>cN(AdyO zq*Yf@-CC)lrL~9rZCQBB)-g}kiGQpy0`v8}&jr6&lP~)EKC@@?KT) zOR~riE$dyA*&Jr(xLWDAZpQonatY3)~f z0_|>ad3XjrX||j{W}A-|*nDr+W^7h3L?G2}OfeN}=AKI4v`(~GwSo;toS#*+aBpbX zcD_(taQ>8a{WZW?VZpg}M<8}?V2=%`>P#*qW+&k0w=uA%*GRKV!y+S*7hDbhu`2S7 zrihC`h#(AX^@;h;@)P{8#O71N39CHGu*sGOwKP^_nI_3_3!V@)cZxgf*vFalw-YU` z2b{;4tIONZEXP5qaYR0g!WMC!(pjLh-lL4;g)gGD$ZTf)A8fsKP+URNH@b_vThQPd++BjZ zySo!CIEw`h?jGENyDshy!C~HA>s!OzK1b&SzaD&yy0d@_AbjO`bQ-Z6l8QRLp{a z^w6&xhe$m2{5x=gir{A-_F!E2f&p#E;imaq?GfVCPdDaa{57n7GiK0ahEsjb)N9oG zY;(BWYrc*Zwmi2%)7&l-n^-rrKKaA9u{qtpc4+xZR=8W&CG74)1MhmdB~k;LV@eMM z#z*6$VSyr;=mo2FRo=aKiZB@TH6{iOP=KU`o zSmB_SOPXO@i}T3SuJ~7dD#2VF^AjBNcWx=WE>OeLcP5AdYUA%7u|6gxTj3xg*#P(S zgQoZ!qq4PUDy)F7vUqD-r%4#^O}u9;JEy2(;p~mrmlnNGhA7-h_*9LFCxQDq18s>> z>ZSvo`R!z`;p;msMUn+w>M(9(gkLl7Q-4_K1R~MZ?=Ey(i=n$bSB#7 zqUM7giu9Sjk9-j3+w%bO~Xd2d)`fhd?pRqEUI)N%M zEXZmdA`Xj6lkO4{jmt^!mCm3dzt?0A;tGrUBOXqh!G<-NvsF(l#I&fl35gIT&A+^P zK0nH@P3L4>O^70dk)nR&a{@Uormji+$V^nk1doh`j^x(^LMrx73X1*quRf6(S=1wS zC~bO>Ld?*iJAy;qPN|n}Egp+jlb<(i0a5H;I(KCjQBN--)M;3yVz}j-9vB24~ z7qTVA$Bz?8pu$E>-ni60nLf{ckD12XHxKo<$`8@_L$uO(L-bG%xW~7$B86oOXyi}J zlApzL+enulR|Im-Ye*l?s#V9lTntcLE%$jOYQ9o2YXD-ZeSxAvV3&R-5iqFbui|2m z>L@gdj`P!O8kd94&y+qpLbOU*52`Au-C9B;?fzpt28pHF9tWLrvb=)63N~CV+`)J& z8^ZhXnVaz$js0J;0nHWoL|VI%52d@uR!%LdIy_kW8tYiM({v(an3CU5 z27|qJ|Ejy1->C1klfX-S+P?8Ofc>uRxbU+u@@hkqD+O%4p-#zL-MSH0lf8~gH_`LG(L^G@Cc>HORP3;!< z)h@ayQ1ZKGsfMSvM}^YDUtg%h727CjziaY(+my6Shv{0kV}~)3YEa5nmEKHQq@nkvg+$M;+Bfma*FdZ4@4RZ zRcf3+4e;TfGs*(eQ17FEJsGmCPmA;I*;$sP7wi1f`p#v@4GP5uo0=*x_l_Y{dUgGe!K55t}z(H&tbJQ^;#IQ zjY4<{E=96T6jc1f0(nBO=3b4_esg&SUoQt+OZ2!em8aWvaSX^~`&RdBF)67s0e;jVBbM^kSu!Go}Vn~Y#!b--XdYJll%t^rtQTLw<;}8m& zFL4b#8_V&txTsRKzZMvz!5Gh6ZQ@IKS#c6?m9}`%s()(yP4C1^og5E0bKgZ2f zv|2`38i`PGG6y7oPld#*YFDE;H6+8!t`q5e)51~`+R159q0ju$2!$#I9#+%HUo3D0bQQOR zXbh6reOs_r0KPR?hmMmU%FLs&75nXau5AXYybY6z2ZykzxQl+LZ zy^6NmjURLKh3n|9%ckhu=e0X6=Em?h%e5t?|I*+4F0-O@z1ME-pEri3Tlbmd`bRe& zWM-6JT!IXaZq@zTJH!0iI|_c(N|NoE9Do#Z!I`2F`d^!uPr-gwln5y{|HAjaGLmX$ zR=`$K&GM)Fzj|X=ZW79N@#%DZ;y*?mJWe^TyceCg(hLZ6R zFTBa&z1T0e0r7Bvo$)1QTc7;kM`g74GpzEZ^JBQ&%&W$R6u+CC2-)#lZi)wGr}(Gy z^)Sl~qlBvKZv#_eDKcyLk5CcLvNSJS@G9z-Bl9WlspU|zYzb~s5e{W48~X+Aue{PC zXbT%(L&-?anfi}of6Hu4>1@1ff0HwOsM%>@XbR*aU2%tJin+-m-zPbLL1ZBaD1*F} z)bN9%FX{FoVDRP(##Ic$kDputz+IlGL1!Gb`E8t?c*@TWn$we5ji|-}LEwnj= zj--A_Y~p+KAB;=f!k+qT^(XQxUCFQOY0L6Q*jRe-zo+^i)K-mWiyNVg<>XbVdwEf& zeL^ta1s;VL)4lx3d9y7_GlxGM)!C^bJpS-qMQ?Owt{iD zbP{&v>vobD)jJurI@OzS-z5M-<%M46a+gt!3$6F_fo}I>_E|?&JNl+ac+OsT)iRD7 zE51&!4d26_>@8oJR_jx>b+v52i4gKhMLSD6Qg$j2gzBx^pJ(sNQ;IU9hMY4Y1~LQ) z4XDv8+o)yt@-T_rmbd>~&6?n^nQw)6jiFhKU*XyTpAhzhv|gG{TOdF%F0)mC?hfsR1AUz{$sh z_rBWstgJ^YW2afqOE6X)I={{veAEO!H}Op4^17Me3X`->DSok#+c^&;Z?cT zm2Td+E={#ga8BHxQh;foqnF#Kms=Kz)3{a$G-ELA1!WtJ8am>q4k#T<JOr5qQ-dK36PMeZd- zO0XIKf=j9!t6^!85sR;wg!vxzBJ*y2`7}m?pv-4?dlS^@^CYS#B+H;(??YJfIH>T) zB%CTF#Ux|{#hDJx*|D5`S>>w}P;%4c7`A21>s%* z=1#Qwn5xb=HFA`V5#Q+oXa|x!vIYhoYvfhTE3R}TSy(l1CTZ?X|G*7LED!JIoLmBG zGb=MueO!T8M=!_ACLiq`B>nX3j{`YCn<_M_hPUI2ni^yryw;(;vkYtBn{2j%vI~>l zxQ3*SF_W_UqeCU^f3C8@wBsDdUmlbwOLa=SJkIZ12#|}WEB!jLEnzi-;S>4@>RQ(~0!!(;_ z;~~#-?r??mG`queooZ9*6Qb@|?oWDOEek_aORRkG19S!Bl|?@ibSu5S7baG-qMBVti?ihyz6Kw%Mb5D@?Vh0*ox@dLy9u5JXl;CJK_~t0D`mI-O29Ih zMky@+2BWzJEa-8Yo0B{8JsOh#|cQxapCV990bcaX*!>qRi`J6=~+H{ExSk44d08WCFOagX!y z1wj2P_*4)2^`^!$|H_6)#z*2itZS7hGrDlF^3BgWsk3N2A&JgkzTLqrdN6~0%DjpS z5m)$M@HBR#@eUat3MBas=?)F(9}t9nc&W)Lj2n54_djOtx5?;C%0xWje_{U5%#eyp z$!N{Rhl0UkJHOc-SFUcGZ^eYhjjeh=S@aAlA<=lf5kV}Tq;*m|5{T;9H?VCwE8$o^ z3}kYD=>zG+uxg`>8xbnL>#EhPe*BQQum`6oz6@`~E%cZeL*nZb}854H3g8^~yAdx2OmeAgNc%Rjx`$@sB!L93#B z<&O5p;+IHVzwe^qi-kCqGw!;${JIpsgRi(+@lYzK;+uF*!e0$?YI{uo%+QrbNVN(7 z{LyNRKj-Wne4V?~;dR9E8$k}n4eRhpsPRZ{)nTS_<#S6p%fRvoi`LdbXUBt*(bHM+ z!(`{@1gFpuJk*3Qc2XO%StOa<0t=2munawIS5MViK1r>f{%KtK?ZlDYxKe4`puJ%Q zW9ue5e*kKql$kq-FPS9w$WkquWK+yCKjs#K(8QKZB9^1}+!*OABXe`sQ^LC@DG%HS z6A2(r-KZr8Q{E6&a(WqKeq4JcHxu$A)QNikn6j%~EpWj}{UqFL6gMCTg@H&wGdD9k zN4IW zCul-2!+D3e8Zru{o;dhts2kyOUXc=W(@_Wo#<+f%*T{7cZ)-B^RHxHN?blD7)inhF zTFM8~9l;BBr>FXpJN7G@>62wS)DhGsm~FoDdh%+&&en1-;2*c4Ypq&M<>;;!*pi;L z;vYZ1^$#O(w1E|U%tk}&%0}sM#2fzTG-wy0k*h_e$6Ez<7yk){r|z@#gPh&wlvB@9ONTP}~WHqgye&6wnQ_3GIljYhBl~lng6_ zeFAl-E%Jxolcbg@&bAV#jS|a_hxo{H;|v5Jb5BWT7$!G|5)Pi^6Gxkp+~lg5&Z@Z) zesdaFVplbH<2~^Ii~9rMw;U7}unc3l8sZfOvCN;<$^FiA-O&HRt^erzE%^>hBu*i) zzm@b+6Uvo3uK%za&X1z))(*BeRO<6|l4rxN>{7_!Jw&GOi*p(hNzqJfMjns(+kMg! zEOw~#An!YLY(r}GGJE6F#68XR_;v?m*axSRST584HFJ%O{9o-tA9SDN zFUgQrAqfLFZs730{=OxdcCYLQB<}_fMih{lhg#0P}?7P~M z6j`({4npFMssx#l9d5&0X12(Ta zdR%L=sl}O`2xVFE23?Lr%0cw`M)`f@jW8DXv=do{MQu9`wCEx@Z# znH7=ASs&G#%8P*vS0H0uJNznFzT_vW%A@*sw54~_O2h*6a)le|y1#MlnI^N&as}w9 z#y8Szkz1M!PlY<}bFrBI5ll~oUMAiPw^W#~=c0f9xpbUS2|!cKDkDxE%Fl9)?c98q zOG-9Fe-}k;kE21h%a#Y>W|vhE2@tmoRe08Ew!dzZwfsb>UT1XdLR!H}{K;fkCpvy7$vMyG>x1eXvXN-5`_C+-KfkU@%vE(lF7Z-qJdSkxMaxd`OPp% z`jUxm3R}qGP8ILjCfbG8=;MxRE*~hKt7SGtU&J)P38y%8T!SNnc0Q5wcs#DlrZt)Q zw@sxpA=AEr{I3T;O005D+K519O5yXk(V9f^eUC8u=9^X=evZC$QH8I^?WU z;Agg2C%KDY=5;~`%)Xglq<4|h%()2L z^(DP5^{f4Y#@|HmK%1z~)%Z&lHpc$ICU`3JLz+-QS#Q8=gGFr8-mCnPP%wr+SEtxm z$l8uxZbw%h`4;*wuxd|!kG$2Vk7Tgry6(Mp6^d8ql%=;TB~5g^^g=v7-3yAGyEeC# zWMR2X3?NiwL+`ZQDc&g#0TPoGxI3F1ZMtxM7BQ4WKtob)-xNCNhk7by+;DjBGr;u&7mYS4+2 zUt*W2DKm5u;ctfAc1dR>O+Gl6urHH|#gNm;{a6NB8izENr2pJ?=8x=A%d+`7+q&(N zBl?d)?Tw@4#ajDy=lSc3S}R>IqprH)|LbI~NTV3Mt}FzjQ4@f5hk0Z$&ek zaOlrTKhd9qk20+Fky8IiZdL^%r7nq_LRfHi@^0~(Z<_6CKdSDUukrA9%+A`h!>o*q z&GdeV(9?3zvkA=RrKe^m=4Rw(rtB#y$zB!vy0ZIydb2Q&n$Am4O5eM;vMwp2vh?oK zEhnwvp`;Wtgyh;WFXxUkUg7U~uOVL6;O(_cvs_vCoW1AEK-R429n3?p7VHOkJCtHA-6>F;(hkC+tUete3_`vO$!We}oNs^pt|bmrwa`4`KAN-!@asn@B{HTo3YQ5NZ%RSS8FBeWzcAL=Sl04FxJL0N zeqZr7<5zvTl2vU6bwX`*J3g-q(t*s+;dj0%JU54tG}Mo5p~1G6|Mp)i@ca8ye;*>R zCVaQsqrB_(%jn|a_WO≻~U8aqWClE0t7%bwG_Ha-0dAlT~CIQ-Wf`@Reu4S}X~S zd~=Usf_80y3`%Y?b3S@Ljev43Y?xZz?_t)TrC%HA`-UIfqAubo^U=d}0+qP=oaV(K z!r-MTcv-nwb?*U6mrt_P4@f>BtJwibm~XFV->WJ5`WU!yj=AiTDOb8Ag}W0~^|zHG zwF;$l3%&@ZulpC>AzpSyjvr2XZp;5R_Z6Y(g(pIyiwn(gmwU-6CO}oP=%9vK!JYe(D9r*YMalk zEutj3+uG0|PQJYD?GYRMn3d4>=bhd9BsC))kF#ycJ9Bkx+FC$aN8*j4??eK>Ty})+f%s>KZ5XD>XP2 z>(2xTuc){vO!Js-o%E*muSw}@Z;Y?`fYx%r&-y*U4G2EjWq@=&RqSe=c|**Yq} z2P<>=gfBFHfTp8MEktq(4zJ{H6Kw#{%m10OmU=HZf9wjDh!4Mp-xUV0R<;Bn3F7%$ zrC8qq-OS;s=_%*sK8#mz0@4#!gZE%sMNVs>K^|y4@r9}H z1kG9!yS$PIWB%MltxWwqs^1y?_cR#C+GMO=48!rxQVIA>LF5fDe*s_ked! zH5O&2sF=IebPf`UQ}I(M<&}*Hs)W6_W10iG0v}-(#M&Ayg;tvf-CKL!6lHz3`VZn-ZqC&0<>^=UzHFQ+>t;lhyU$0><(#_Jn9&y^g{X?QoODt(Yyf3RpZ2=v+n-eqoW%bCX(A*_S0BOOi+~4W&~qrk=!5 zX>N>>Q{7V-LT0G9n=4Hq6(736U@r-eXA`1&UBKA4Z9MgQx|XjmWvDMj$j%$7R;K(J zYPvgY!*AQJs4hE?Z;Y-QZn$zBM}A!UnCqQml@N6p>K<6YBLE+FMjGhTJbfsyFnvc; zvR&+LhxEp>mX({bGd_0pT<_;a6d&4xsoTA9T9rMKy?4Wjj^?+<2)h!{YH_<=gniod%r4TI49sMfE7T-U%R;S9NZ z&g~_s_7luem58E5@+@j`9wlwU()c!FLdLoZr}Pp|g&*Z9oT25K8+4ks$uN~Xb23p3 z9t}9f8PdOC^({C|f_FrDHScdC>`BY#2HTRQnV3#2=>X(Pd? zyLHxczK%x6>2<4r7NncDwZPYYfJ<#s3`ctlX6mfm(GIV7tfwipJ9E-B*PUx9U(UCu7(h-dlo1j#0$)TvA~O$6lH^|M;f8Y*8yHa zMPaLSg0NuRJ3yyU?GmEFpfj8qL#TFr(R+lyMnFCo_dHNGRJ*Y#I>KKupb%C56Vy^k z6S(WgyHLox(1spslih|IYm?JFl(H<#c7($lJF`z0Eb|kxuut0~a_~`kDm_dhA{FL^ ziC0|;xG6wM6c%a>bHn zwbqIDjorn~L#k66PVdVf_22GoMaQ@$qm@#wH2Lq?Dnf(Xy;0(={DjAUs1UzZsCP0j zY9N8*?#rI&LL%)RCDP1OjA@?FKe}E+erL7hm{6>n=Z*QZ;1{4eudMF;X(I{sVexR# zPLAGXM0OtByiR(78gPomnCHL$C&;#|5)sELCjZ=QWc&*wB=Y%!&c;4BCkHu4;VX1o zX&Q#}78^P`mYS+vd{vx=&ti%!n0)%Zxdnlxz(T3Og-xwalFAxWAX5|}(j|uJw?buY zVNJwe#UIlSl6?e`zA;n<4?HOolO%~${v&nL{MFL2ns@S_55=wr6JfjPD0N>d2@?kc zYe_aOtT^BfWVK~kcvE3$bzx+E*?&b4?&^&GdQMVJoNz=!R}QD3hBA zh3H8!*&-8-5UZNc@&1VKZKf_RxVFSfOxP_>kv(Bz8O=94Di8KLmA-sQ5e%#~_Pm(E z7raSC3|Cb$dbr@XsI58IIQi1@GsPqP-|vD>aXD4(Y^S;aQaT(*)DA0I-8N)4pP52e z`ntNm-#W}V+s>30_lQyWmc#L)_`uog=&sSi3b<8X^#Lnur01k-J0#Qg$8w#fHqqa) zSSrRZFv6tqHN_I21`35`2MW(Rs2<_zXB;s1uZxI})7(@s94pLYcMVPZ+x zFjfp;+J+F@3rcy+qMYNjJ z?jJ5hH8pT=VJ365c7*H{blmXUKil==;%}7CYp-b%6}8IDcrM;8{Gg$qyIJsDfTLor zZy;%UZ8VLDcCvo5?XV3&$6qY$u=TZ-K*Oh2>1xbr43bJLI#$ZOxU%URr%ZQ2Z~Y?u z1#89A>*&NAYR+a9_^$Q9);5doWvCSSArYaX$p-@w29|OcMIseh5m? z^$u4Xe$8T6`GYaxTUzXU!j(cN+n}7;XWMs$pzG~a;q|$2{U;ZBGN+^dFaE8?ag8_L zf_CK`RHhsYVMl7F?d`0J3<~P_B^AnQ3$&y0p2pQdtgY6`9VsHkg2P&@BEMR)Cg4nslE|mQPMARxP485k_5q)_rtuL?TvgL=}rq zj#_$jkM1Y2Se(0SvYbNt*UuTENI*Jy%6O&7T#E5baa`K*!Q`K;s^#g;Kct!OR0bnm zzZI;;?{KScGP?*1>U8I=p?LyykH3h~IB@E9og}=`$Oa}A_t4L6X&gCc-tZVcWs$!Q zVje2asZ3*>EA^bnE@%{wYmzEzW*QVzr!#0%+gGUVRp2OUvbPzNmy#{u%I>X{o{E1V zBd99F`sPv^J=Z8%zFL6es9N7F6J98-U({3xFGXjUHarfin^CcgviPn2m{-vwyMkXy zm4vo3mK^aji7)#CZTWE$&aG_yQz!*QHIJ%d*(-THx|L&6%~^pXtYj}E^gHVM>}wvQ%Ukx)15It^LW}m9 z0z$d5z0;VAikYiQyI0rWRo00G)`?Qn?%Ns1$K|u!ieAmDt3T#+JrE;x5#7X%i3kkq@zFAu8QB^`1}FQEc01WV+_ zTKbZBI(;yXltThN>E3~*9a93u3-wj%%rd2}7YEWEf+g-E3`NNpU1iaj)@c0i#9wuC z^)uXhTC>YEvJbus4%lPj6}F3c1$8P>4!_)2#Ct8n9ms8om@{SCjHk!twrzC~?1~pE z@wX$7WqAxK3#6$Fq(4SHHc33Tu&Q5)h($JGic|+feSO$yopc1mm0x9$t4;Sh8`&S9 zLp)q#^>^}^u9uYZWrIc9#flKA5v7YrV9<7ez}za3*X?5J0_>Y=i{lb2gSikHhho{OGP zSj5eS`c8WrEGu2h*<@m?*E^SN%cq`^%Fz^D91rg$Zp?0X`H{^SVmwI5)fdG}?7|c@ zLnl;1CuWc`6pXscPTRGjGryh*X#40MBV-rg@k%nfL{Yf3Q`CBv4ZVk z7e>ZjjM{A{HTBUl_Lb82mD+~gBlMs;<7igK(^384`+Q87SfoWITPc%RAX8BgF;$jI zSEOahuY!7>A+DG5<2y-?pk0ojUXEat68#5dep2#bcsD%C5Y1wui|Kf%(U?-gldTw~ zkmb;&8kP7~A&67T&`{&5%nN*AQ0D%F{YZaE=+Ck6WMy-!*{mo#)=WQ2Dcs2-v>>`5 zr;^j+qy73PR$ck6CO>}K$(ctYmx{!8c9Lkh#vno9U5 zgl4o&in^akwjqoo_9-(A)!@9apH$oqH)>9%i0numdwwEs>sCL;10 zkDjY6gZJ$uH(zh8I|lTwlF84i?HJbSa~sc=-)t$Wb(WcC^L7-e(PMpG{W9o}=;@8} zSlH<4saLWNt{)rb>*qLJ>*roZbw90)^4Uh}+Lo8|MV24gX2@cXcBom( z3)ZzN@?jfw&)Z7N%*;tWlARbGlaal%cwoPZ#O5c z!|_I@3GbZlXG9<3#4@`c<$4WpB2Oi!?J@KWGWo%c=Yo#r+h*E%%oZng5fQGC+J9)U z_Vw3hbXzx+b8q;LeqxxoLvxFN$5#BIF|7O!_CsK47|+HJ-qJ{En$nCzCypcuWcub+ zvr#rt;_?RZhBd@x#C2(~EX4HhY6P*cI7AzUloCR7VGk9D{eT)oi|~>vN&!RMBKG*BK04@83_4h9!XY=0d{02KnHp<`i*(RJW> zKe-@5IKiJl96)R6DcEfERty(52o~59Lfx@&`Oa-9ewC^8#Exo6ti( zgL^>|fN&@@Xks*8C>JUS9e5UG4j6`t-Obk843@AK%vJ(0L1!cIBD%0caQ?rR6obYA zB2Wfst%)IJhN!gmfF)ox{5qgjwvi@A-4NITeFyV@{YCcQ1x>)@APGgVD?v62JTW3K zp$iiP2Fwo505t$UJOpHd&qn4&cM*m_fx|%2z%&3etO48uCd3tt3t|K=0jgmQ;9E&u zpdnIVMNk${1h@|MKo8LZPXk(jPVno9t;iS1;0=&3;2!D>dL7*haPb*J{_)jK8qfnH zi1gt@MsN-A!-J>~(2zKgHDDSl7rqnG3%NGw6Eg`I3(O4q&>83ne+pd2uEjS2)bf~+ zfxAJkfM;kl7$#U^6kZq?ItVLx8}tDAU@1TeIvb4_+XW9o z40Z*3gRX)2P|Q#UP^~x@l;Hgj6SRTVa0bw=Xf8tkH6ah+1YAdY_yq9;lYj((-+^av z>(H&}E+P;yu*Cmp4flZivF}@e0OSV}2t9ZnBm#It@WQ*G1z&^k0W3fxxK5;xt+xgf zfm#3px}TK*9RN@0Q?&mY;0zZ2P+lH*2uS@8{@{7ZT!0X9u;hPz8vxTv>;enX1BZaZ z0qD@Az!$6wItUxM1`r1wfck(6K?EoL&l12+xCai1B3K`kV-6++83H<>{<{QpEv*R) z7+~_BW&DB9z&m(i053)@jtd6lzZ(q<2cp3f19`Dra3D5dHjp`R7#Itm4fu!*OcyMO z1(+VB4lD&K!Dj>i>of;2A7~%s20R2#!5aWRf&~*|2Brqd1Ji*2S6Ml*CWs9Bzdpos zA%XaSQ9(pN9-tH43ycdgq!gqN6oFocYb9}khaCRbp#i}EcPPPl5nLcZ(m>L{IA8#* z7x9HX_@ibJkPGt>SA-Y7U@|};j3D%XJ?sWL1bzh9N8<4Mbb$oX1lxl|pf>^kgBaWb zlK-6(S@U<)^BH%X=Gyond6$%aN{~t9>5MJ;l2pcdCpoLO`%0}UZbz%6( z6-OWrfHl+t*!o48;pWFiUtj9#t(vL)?ScF49t!{QQ`!<}b!eqwszaa1d z01W+pf;E*a|Mba8K4-UUCnB<4$Y@&Uday~Fuqu%`&)R6qT)co0#GA$xq3 zKO<3huX4bCxS#&&9=8BrR*D_bi6;`;BE0k9w1DfRS@K=>GilK46?db{uz+_~PGd;( zl`hlUFr#&7>`(p%I&1DIB)&@NoDHR%l@yM?SF~e={HZgIsj31zovQ=6PmgdLLQcJo z!*>oraicYgjZ}dtc=w{n9?#EovVYs3%LBM8&ct|PVThD($$uZK|2ELbiLS7hS>!4@ zCT!Dh%`!d8>l;>jX-T=cw|%(>zTAI$N%NDr)O~3IzC9DaJ+r<&ci!B?zT9KB%nVcy zj6vUp)9D7nJ}uf4)c9S++y6R?e=^`d{wl)!(j!Y(+X zqEKQ-#NJe{;YeA+om1h#)|BBQ`I&?yOYLgbnmgx?o5AeMnU8p<`%m1JtkpaXyDW9b ztYZ~lnfZcprRb8Vlq@yJykAqf#Z$S3W;LIR=aDt2x@DRgRXkW2t#9cWiq16eL(ZPP zE6oWWzi!JvnDFv>!IH&%h7T;l@$P@KW=PkAHeVI1QEy^lZ3;VP8SeD-ng9{Df)oI8PK*LQ z{}!2a1WY=b$T$^8Tpdb2s0tY4X{SiJ)A zI307%R{u5HMgjzEfWoD)%d*I|j3~fv(FIOy&d29gSM-9=WqIVfI6O0vF9X0mC8xiL z_MU890%eC$=yVxq^Xw$QET0lnkLbS4*Hw(%XwFEI(J?<|dSYUp66w`qH=1nC1^Y`Q zd)6}q=ZG&DILxwbI7a<#p)YtZ!!yiG{lZUalLnDlrsl=UmBvQ^;l|c1APZkAVcziY;R_R`A-Z5vI+tPQDh%6&#F88 z#l4(uz3#;}KdR%07sPj(FyO87L)<^$M2kZCwoc^=sY=Ore#>Kmtnw$l3hhSneJAnyR0gBY~G?cAEhj(+rZsX%ip{cv) zO!BG~aLx>daJBS zlV`)^!^%M#PlgUA?G*cp>M>1ZPR*r7Y{>KijF&`p=IJg#pgpeN=PDLZ%d1SMDFvGBv4i_wU|9dVQL?0>kw`91MU_WNz;VZXtk8%`IaWby3;uK{jv6w6T&3ojVx~^jADzP_b z+P=qJsm)EP;V4NXFMiA`r|8ruXH~a57f&)=ArPzXp`m=Jm~weY`taM#&Xa{hRz5gS zW<-H=yU=Y1lc_T#^UYdU+^`soCc_@`(;omi=j1bHJgdu3Td!P#(Ed`Ix<+cUdZix#Pe;2c9xNLp6MB+1Xx-vP6Xk=>+Xw{O+wB2$S1b=C}B`gS5 zYrADEwBFiPCuR=$a4pIH)U7#yEBDr@IlwEoEz+J}iLoa6%CbZ&u1<0-q<}QX8L}NNtqotc5sP=N;Os(JRuQ_+GPlRLR!6wa^NfDz zXEp|wlAoZT;W;$!TK;OrVlu-2)r!Stgg@3&V(pj@(^w>_A*Jbh4*m>ag$g#4_Fl-g z!Lv3#_EW3vj>%R=%Z;NwR1ZEhAAMYaJlePlfAJDd%vMIvjr)Aa5q#J``Zxi3WOWrD zSBN`qm^|YlY(}Krh(xb;of8X;c4rk8Ca_76dgQbEo)}+NZ^A-}rxBVpPJljj$TpNY zO<)f+uL_H)!($uLn;@`9G_NX-sY}h+VBzs&6Ca|m2Q)nM^wnr`9~(yg#QCPhdJuG- z62qs(cJPqSHf%RUY){};WjRq7%Qo!O(4pC%y2t_FW^CcfgGZ{V`^(vekq*ki3QXp=X@Bp=P3lihOjQSgZjXt@ z#^gx*utC@}fo}-K!7N4M{A-L1JV62)I|Yf^SAGZX0FF}`6)cf2hjp=t(={Q6?VtIZAunHRyUEni54YGTvMs*yTB0?P3X?djB>h4;6k$ycw4lpFlzpt? z9sIqJvojT$Qt8gf5|Ki7qGg1|sQodrohZ%ks3Y3DcNp+=tRei?ga%{uCw=(~yb3k| zlPyPDSPE>INFnp~e5!iS$lgNAHKshwVH$hXblv3h3dqP#gPCT5dWAfCyKXLuE8lJ~ z-JC9Nh@&qFG2Q%KoEMKn=wiCr$FH5i7js4?q4j5S&%SADeJ=O`#5o!zC96tC*BXT< z8;7s_GBU{hVKUS&L4c0_ zA;er>xD54E5}?Of2nt4BUf2xvn|}x&Po{Rxq6j^!HPNv*zMSEQ9%{srsD2rSbDVg< znWFu;SAF2Yg?+c5J_fz?Ll}B+;ot556oYR4Aq+maaPRi>#h{OWBAaSzeec)~Z`u~C z2RFCo;pM7%J85VNmC`kVz7b}#SY$Uwe48^Hl9eZ*{bHHj81rpTIwmQVLrJff*Oq#> zNHZo$*eW};v^)3*iQSB>g@@BO9{jibtI2eR2Psu^l3hGrm4AE~j|l`Kt0VgJJdMz~1;%H{;J4c`uRUfp!)zD3y0mvF5b^o!Sri zc0YoKh@Um2MNJ5>mRd{efAS4?-;=6OF=4w3L{{4d^-{hVk?NDfOsJM9m4`TAMPlY(LIJbpi;@Lb0Kx>bq6*uw)SBZl*aHb zn^6Y2AUom(A8a>+tl=QSEwb*U*BYd5t6zZ)!M8nQ7r)q57X7i{t6}J19mZR7*nvz| z-4R9aR~1YlzT$fRMRQGYEgqSzIy2ME=hE=-MDA#|VTPBa@T)rXk3L{D`zXUp9QYNe z_n4Zo%K%2IkPZAp(|c@;Da2RwG#>ieK137C2TF!sU>$Hc;6t*sgyeHi`dNCpw$K{e zAhztj0EGNTGCo>^4#Z~J9e@CCB=ev(GBAbSfX&h@>ADD;nxDBpzg2ETXa6SK^fANt zv($3E2X0hOqibgXU#$kOoLM(2&(XEwfUgVvSI*QMmBZ*-dFYGAsFUe;=-MXG*BhZS z_bs0$;BO~3t2s&)h3Un#moJM1@;#SnRoYXg(ndZVqN?g&{rD=uYhvbWPkK&gX#BYT zMW|P&QuHuq^ze@?ZLvWOSh=}Vj*--PsV)Tz{3@j9SYhP&Ub;6x|1OtdA3wEh>h6_C z_U@kq$^&k$IRW(#ljx_beI`Htc0E)o^eCzIY;O07ZYdc7f$qEeUnC@7%W|FKt8d2x zr(4>61o;0DTLm=B_(w6a)quX+z|&er_)o=3hse~kbJ3trut(nhHL0fK&LY*cODV#2 z6A@481*?(f7)W5?kHJF>3@{MIpo3}N`eR$fzW$r(sKv|R>NA$H#3$_vrGK&1@50bG zZ_zgq4CjPm`wyX0?9Q(ze%(UNFgw|noyk>DqHVYsThuL8UVkmEp5hA8s|fyUA(&4n z)wQYAYrQAikB2D;)K3H^#hOV!1Py5KDDnPN(_qxu&PcZUdi5X`nPqL4rNr?7-qI5x z^^JLSuMflPLB`iRAf{0`xPZMH%esSqChCbRW$7GDy^aSB(_!q%0LBG(^Eb(M;`R}% zznnfM|6L2)yw6GwfpFb3ssC+6|M^)($+$8rhBDKu;Mi7IAJRi-lpxsNb>XEb? z0XTTN1n$)G_|TViqB zs@2}_Q!K6(&FJppB$achU~q&@V{!Q6JA11=YY&a;GuwQ)+0C;~^P%0Bd5k~5qM{=` zvUK+Gs4G`Lj(?Nf=Y|g%qj~hjGOkvvK8c$sSU3e$rjR{75<|C*f-e5X)?G^VuIw-d z**`r9POiJ;>0Qah6rcye>2;To-j&&Ezen@OV${9wtC+IRdEqnGXiJ%S$NFbY<0#>} zanvtZ>F~m|dTwLxYjGEUX15tO@r5cmw+73gd1qiH-G}jBvhvO*|z)IgI;wmM&{QrS8z_G z98-Y1f(z=#@p{#fO-!xqz+_6b^eswzZKCUp0h(MpVy~L)m0G>}@!Q5d@#pR0UFt`( zsD<6T1tI1(`&_ruOEn+Yv#;e#bn~V=HoP=tz+yllQ53!|zYszhN=Z!|&v+{eRfal6 zo?D_OgA_eQPM0pd)dy+O8G?+$=0K~LLyj#ut}PdHH>}HGTZD{=v^yy-TY+$1)!Q8P~JMYbhVMLqyH6?NH-2KIRlv zGb}gM*pk^IemP&#FugpAUX@|EWJ4?k#dsY-d)qV^E?*8bU-ECPz|leNaTz6jezhyH zLxQ5Kfc?U!Q}-E9?q$^PQqec>7|spE_CrR??^PP6?#I>nNcccUIQhu+HNIZVlY=UG z4y0aTz;3l(icAI-8x*Nm6tH{Rk#Rle@ce6P;Ly4QbMW2j)0+F-q4SXVmcKGR6SE;Z z7B@Gdv2SbdMe5GZS0Nc+|F-t1%e2hOW!TN#4dJPdT1ay|@0q}+jCqS&;xEKX5e(Z4 z-DTDxRBgvxx#^q026F7vF)&n0C?6o`zC^&BT1im{pvbyG!(NdthE`IC15kL~pk}W~ zDMKqd;j?XT_k_W-3L%`GjjVpgQ42>LcrmC~nVOMA4<-c8t{bE2RW`;H;6h-zeYzaV zN{O;6INMeZtxh7a9=-=e=?lsAru9w0hn6g!qqFZ*wiyYJDjWok3fYi#B7)4j)*g}rju=Mg1N7majG5Ckq z=x^dcg2f?*1M1$V)(jEB-x*v5;U7jBBHZAlO>NtxOkdl$g6#nG%oEcoXL^d32|Ovc8iOr}J}UHHS;C>!hRw|#Z+A;}9`u>@9! z-n!asuLEWji_AAPd=<1Y=RYL*EQPU8AGk5MHyT9>Gl;ir zpgWci4?mQp_NC7%YVF5c=HcBH5mWMiOXvE`)c=ij$CsBr`E{G4XdVwh#+Lz$-*oT+ zeOb4G5e%pbnh^9Dm}4M;f&bTS;rWPn?9a{SDMo@$8uV~w-6mHskjLOF1}`!Ai`F9q zh_m+3HKf(;arBl&Fy@k1;OCNWo%i;FNbd5sJqy?bHIC0Lq*C7XeSab=XO^(NSLaP? zkeCh+d|t)UHwoVgz`TVI^A^iqOhNTu;iNG@0R=KxU1A!E+%w_TeFua}=Mzmb>Sm1~ zI(_M=%j&ZM`CXAtQq*NWn6tjfy*~@!Z5%rfurPc@(Y8A)00>{_LC0o-cjjodb_O1*u+*0?> zSu?;xzB2>~!Vg9n;2v;vTR!lDymzi}wye&7KcO90=*;KT{`f55OD<#LC1B&k4kf$N zhwi)0KDojYV`E43Zm0|eyvSlqOvGHwyl-z2bc%Zv+gai}r-YiJV9U!M1bj;JwBq36#62p8MF^?T+WLO2tw&gp z2S@C`5N*EY)m%J$#5QY=|vth%I91 zC0X_z0Vs$CbSsRwkm)}l>OZ*rrgZw|BZ~f;76p6gpG3vKd>kRf{r9AsL1BNKI6?^e z?{PLqajtz7|H>w{V{N{xFXB*$82@EV^-G7)7x1{N7XAH0;uA&?V>)O26UHU<_oU%+ zQYp+~u$(jya~Lfr#YcZP>@O!(!yH&xKxu$!{p|-UBmxg2>+QqV2qZpU%;Z>CN;^b zH-wHTMV%-{Nj;?9#xco?H-s(}ciMy#`!GJ%B{a#>F9(=&gw+x--rMT>wdO~ZHq}Ht zmQYO3E&48OxFudbLH7PE^s&EUdTY^lIm0da@(GgnvRI}!is`SE%D!`{fBHW1ZQRjd z&GwY$ERf(vmN3{ZR9;l6@a32T))^yS@L&AkXvIS4*beQk7|snkTpq4ehFN4sI{MF> z&xG@)mmD%qFwW)2=OKIyzp$Hgo0_u_b8o{c4jr+{9?L&oUB~V!W5{dcoP)+wORst?26}85VeiVz^0lQxcYaN?o#~gbz+~@*)<5!eF32w%7@?@MS!ks8et%XJ`(~|EP z;R@Pze1|;UlK$Wg7v^w(OwB`P7KCjn!SNFt;g2=H+{n?|H&93Bv^f`Tw|0olaey27 z5c>z0;#Gj~gF?^g*L8w4GhR|v8_G3pp*BH8Ei(^W#5-o|8-0@|6SGD``#Cwh8Dd`G zt0rJ2m;O|iDEsow|J(Jp2iB?N)0ZS!tJvE_9e-ZhX7NeMRhN?JyWC@;L-5WDvF>P! z?n!ssLSH_&-E~NlIv{#GC{Ulbea5nRCcAltv+4V}NGhMxQU8dN`D0~JZPDsGRM<^$ zxKW`1|G8zj(GgwRjjK|{=sd$*i*ouoo1;sTs3QQMLYEWI81Ea63V?@V=EebRINI!;7>5o9DDe?4eH<^9-d(PTK;!4p65Uf_Fr?Zw; zGlKO!7+k}v^=O}~Tx=(jfWKW6K9wo;J+*I%|HPYT=Db5j!3>a#C=WBc_6 z{50jopjJWdceT!#OzkbZEc4r~Jn6QcolU}tVGqMylK9^poY3)H4-1Cn$6tK!oK#hV z*{`ct;(aQQ$POV2vS{KSqVBME`L+vlbZM_~1J27}CVL^y#U^S6^;GXt$K|Gb-Q zr>depIDaMi_FlowlEwkg(&lzu;*7Y9*~wbUVb7u9#**UeNVe1s)$RdIc6Dn%x*TZA?CC2s{lYa=QouyZEw!#aVmUfr5BK=*`(p`1vr5XmHFRmz=-Cm@< z6Hb1+7*eW3(KO74a{StmqS3Xa-zn6P*Q8lWEo7l@sLZGNNFYVE>(B5}qsirSMKQW} zI10}-+XY;{N;oDjzt>E2datb`-I?KnA~Bz|^@&Mu<=Re?W+tteFj0Fq@x`k8dVfgN ztj0xm_D(V=f5NXiuyF;v(xTfjV&3owCBUO?L-zcRn^_Q~o@){WFj%2NI zoE^!cnGG@2!NsG&#lm`kg@wh51={+%PlAnw1;=0#iw4Wb)71%%6oz^_340^`q235# zsE?16gS#8j-B8W1^}agl1NF2grq0}>gFo!>Fwkutg0le763LQkegffI>0fDu#lC!3c3MR7^?=1p~oQ5EvYZfcX%}FNlJa2{N7s(<&(5F`YFl*8;HpCJhWPxT#7{%Sajo{8{ZgPQ2p9!P$xbAWY8h z$q?Z)_>Ca*<2MV9j}tbvd~a4`0;I$4=r``XyBSJ{o<=&c9OwB2U+XH#7OWN158L6f zw5`8&{26{+P$l+do`t0GXn&dR=ws8NJk#`aPnny)u+?j6md#e>Jl&NVPL`9mX~XY6 zdHn3Pc38RRJhFmBR4ANB4fvA9jLjbbSR%-qx0u2W2U*wE6#V%awsz=mFGjR009C)E z3JGGZGzGdqRdM`}caljb8@@XP((XjPkCV)~R$?16wx>nX@OZIog0x;@{ii?By_AR` z`u`t)@bN)<|MLuWsFN!aAuNu70#RTwC=dVzN=QLKV5B4%fRq49O2WVrFa#6?6cZDZ zf&m~95JC!sl$3xXC4oRB1cZV}q2K`I|H~i#QT;#tVOYOYktV8T5@#cFcQcv+L=r)3 z3l_-UOLVggQ?mbdo~Exy9T)j|jWGbnT)vV^U1e@5FYk0~o8?3ekN+t31K9<}A;SCz zprrE1w&V!J$_Z{RMP*F0Ovlw|@6Y)ppnCS;gP)!qrK9=ta`;|Bq0A)Dgda%0=rr~` zc+lzg(PpjZ^d+*1{rr}omd?%PnZj?iSr=niJJ79im2@5P`#D=D8@u*$Rm86v_wcPp zS0OZcrM8fCV}Z{@dsvj@w{kT*6KqGfH5?5`50BpzDo~(*Z>TP=lRpL#r; z3J|vx(qlqdQod8GP@z?OV%N`2G$;$Ue6LrQrq%g)pfVl2`k&q)#ciNMh`B{p7>xbb zTL%rKJJK8K`hPYJn5F~>M~I69Q4&y;7*rg9F+UUuh5tFj`*<{i@fz-Xz7*!s zbS@y(5>FF;%;KiMWO9VuejmBUTq5o>Q$cdcZ)d-=1z3lfE&Jb(_{{5?ikY?WySzPn zL*tZOVX`%8lxbh^1!9&%Hjz$$EI6TSUUH57pN@c{l^-X=+#pvBX8!ArVCap6 zd$=Q<{%1%@qqBzb$mSy|Xdj9T%=i2) z&g&?0@F(t{Y>6tzB<#KRS4%0N0ucdzAdB*R#tKvEE?N!o8 z{Z%E9Thx<{Box>BA=ckQ^lT~{91Y5(oLLXm$d^eCB3{41k|3LNSL|4!E(rh1^}r+V znpCvlGRpGk{WR5yA3SdQW7W$VdRt-LSUa~S>pSSNGax`_qYKkI*ou~%m%T5&7P<+c z&o5qd=6_|>kUfd>h~+|NspBo{VN?yr6iI6U75IQy{kqP@m@8}hdpWpXda{(ekqdch zLpQ)bZ8SKM0C)Or!wi3`RsYdYJl6EL2s@H3adHB2BJrP2VV2+Ao`ShWWf%8R9S)5+M$kkVL`7kz#O3 z%uqrc02hZqPymR8xD=+z07(MH|Hlvhk@_e92>uhuKr3+sfCkHOgT#wJr6N*)o=a;; z^ti%W#Y3iHf-&-tw`@R5gEPJx;*3 z$8i-5VjX=gEOsk#>&EkZ#mA^oE!x|tf&U%S*q5j6ce$c9kv_MCKqZZ2-&+%0h8-AS zC1D^}@(M^g;OWtzZ(}W{1@NZXCizceP*#{p=VN|n9R~k(W9UPDjRW0x- zKT`kXAHjbD`TqYk1~q$(ZxX4R^1FlNCD|!g;bz~x3DFomWs=8gHaC~H3u5e_4e<^v zS+$;&FhOEiomJy`d9rvxoB>~wet$lMS}*IyeX&OUU9lr!7yYAfCAv8l zXEydln>y0TigV~AsM6;dxjL@uRuHwCC|~9I<||HLbsSB?1%cYAU`LX1YX^>;xu`Xj zopfXEhxY$z7m=~L(-O>2Zo^>ozgHvYdyvdf8f%T8>CSqCE5TH}R;n3&aU|onoBi<4&_pazlzZ4POuPFx z&Ugb_GX|G2$&*F%*sxN3FBwshUHc&2s_N57k-z<)6<|#`vB5+8A7H;OTxa%874Ff;@bo71h}2 z@tglg)qz1qVq8hFu;x^;u-gAiCNc^1MEVFrFkO@s3H$0!tw=(;a{$2s8GT0-?mD#1NQy7XbCYz1Tl0|KuO7e==-M6ksw%S5;SP~d~x67ZJ7pjviYodX@WR8mdg@ z^RKI>9*6t#p)KMhhXPg0q1oCjUMT`kwaSPU^UxN%vVtbiG7_bwNtyc4 zB2&jXqugih*g(JydqDF4Y>$D8+IoNTup_EFaXizd43s25vG!`Zi)|9q;$A3 z=`mdSf-EbFw|)I9lS4ZCuphbOhDh`#omQiI;c_>=tQU$nnq*B352lPaE` zx#jaOA9g!Wkaxy~q7NNw^U0^Y(b(4i^Q8`KrFtlfLxDTwt}{av9ICJ#F3uuT`tg!@B6t z%-g*0w+{qkHA>7|ik{PHuP+e&&z z5e|zLIwu+W`B722DN`-n-_E%4d399JM8z+~TQQ-FQh9p8VJDWujuMX}pYfQ}JynuE z9y85f^o8wR>w8!7R9Gvqw!^ct)RY^Z70+*pD{XC@&odu5eH~o`a&P{4NgZyXu`28N zeBH!yo7#9x7GbB!2By|N}%b@w1 zd4h zR>>W;DUk-3AMD2U1Q9Xb$0EVg%56Zbz-w~6rPHW3`OsODFkK(fVPR~WC?=Z%FER@H z@gBLQM^q9-QeCqpA7-t_9y8A1ezB%()b!xAeWqbsLwA9iLQaP6JsPfNT8h3|l6`u^ zAySqr+HB2zNa1a7|L#ZdM64MTM|DT5n@Rk+*+dl{q}6opVG-(*v>7$AWY-l@zTAde z!@5rO*(>^$>iSF0ohzn<-TLT;1+1SBR(`cxm8^2h@s$)@65S%FPOp_FjdS{Vj)nGb zhKly$<}@Fwt_dUuDEGH~{rcYiW+E=)4KN@vz@*fUTD4l|$xnyKJ0j=1Z$&P`!==Cg z5=cn!7(~OhBe+!(J2DZ;vzL!^{&_xP*k7ePeZs#xj7j9A0-jB~O8IBuh^g29~_ho7pfWV82MDsM@MjT$o}QoN3;HF8K>zuluZlmVi9c}b{(hdIxRz& zxk}VYoto9jGzCx|H4#@Et-YZ!-e;~dbv375edSyZl1D9Jv{@$`yBn39~$$VKzkFim+p!H_oU zJ-^8`W!w{f^tx`6AhZ{=RFkHMQ>I)x@Q2Ui`f#<463G|s!c8e zi+&Gn_tSi3TAP-%p3C}*ot)3Ut%VH#o=@Epi`o)P-!d*6%oC7fv$8(4`;7M-fLT;ClIGaB5?rs-{bHrKm15;TYQ&~OJ1qw3s z6mn4NAUSy}ThL@Es?T?pe$!Q-anD#B%-VOx zGi1y&RYdv9Ub6XWVKzsRkC~QBoDK$5wq{HRKd20nue>!h^Up8XnR?^)$F=3v-h(sf z+1`$7X2UBnbvl50!c(*m0?jhOVA;(e6$kv71)S($uq^qR|G8l_M_8f)KGsK6R>*F9 zAd0ks0Bdp>&4tmGrHtl-4CaH3=6!&g1f)&%Q=96k_WRvUWzFWw~)&+pzCp5k573iKxhWK}4bnO+^d1dI)1mR2Tg{YV0RCizY zo}DhDSH=8_<))6AJp~Z1O+0K7ka)NZ5s;u?ZWNFpT=o-? zh&c=tkO)1zNpmS)RnMn6ro0!373g#AyOdrmgHD#NDs4H^%^~c2qUiwVO^PU}dHDl9BWkiMc$(>QP zl)9xyUaxDmm~8tX3*C^<1ukd7HRBJP)pJ|aB|KldZ!#@+LvA={cTqLt!penvc|gbd zwa{CxVi%6rlhW;Qlxg$T-s}3X_@2~jCPs<R%vLB78+IL74`Fncj; zv#8PBl<4iozOf)b(s)NUd-2I;k*~SQx~0j$+pTbY;cvpl4H{lm9`Ayan%A=UXK#dp5_l}!3TpypM zFncP{KBq)@Hf@~(nIvv)KA^7IJu*ZC>R$}xA{%>hwuIs#gY$GQ89qWYLOWJfmNOO@ z{5x7!S&r0O)K`77sBgfWi(~X7m~)$_b*Ppx*syo;1!}Pw+tzpv>PaU-{B^5w3(-o>~ zh5wxYHu{GjG-GBU3mE)YCRZAoD#C{UGEFEr5-Ev5!7;NdASQ_<1p|YCU?2dAKtKRs zARH(Tg+VaE2nZ%l1eL_3m0+0QAOe$Al7NdLF_W(Uo$vmm@=yNJ`X_3y?Ki>e#E|Fm*^ac=Fu zI87}E|2-@JAHfc!1QGy6pfF|yA|((oOq^B%0R@O-VjvJOMi5X5I2eXWBV%eJCftMx z=>p&|2m+3h!kAwi2>;(?-ajt?MqIVZ;d!J?fe%(Bn3Zo*@KO^vkc6+^$nwEVuV2rO0Qz@lq9QL@-(Mj5?&>3ic2%J zUPi3B=p0|`drqdjoxBrd@2wf-%e{BvCbsirDhr5qOnNlb$vv`t@PMlMnVleyqBNW| zQ~&hygkid|zK%7M%QuVCv?b@R>WaMcp!U?p56AzHnpb6gA1CdKgZ1l(@c-vcq>nGc z)d?mnCIS`#0)@q3AP5|jKb3^S#SxNHnDDIxTpW|O$D~d%sWk~Crmmr+B)}+?Bnk=^ zLjlF4FiAJC7z~EVuc0t$`2VSR|ET25I;4l!J~2x;soUty2@W%T5eCK}WZ33TbC8J9$A(L5D8~El%xRB7BGKFYH{9KLNrtypPAVHnB@0 ze`v(o!OFM{Q@=;_3K^-OD0tos=DY!ihTvY+J~K_TAy=5dEHDbaGN0)6xp6PE)KTY8 zVVe0(X8I&8>Cv8&sS&cVxQ2f(t|Y39$63T=%1ST3%ju28w&e2EOuw!h%k{(5>iU&= z(vEfx)xfzcQp9c6gX~E3f*`lH9e0yS5WZ9L{KpJe9+R5)k}W1%x>gPjjf^HKGVg5$ z)*1Gk4au+t!J4>`Nk^Fvij-41Ib|?N_Yi18sx9p7{d=;@@k+uTfpBTXoF~7ir^eBz zkBzK3*mm!Uj7#!YM$&$)Mu*PK1u&i|u+-jD7u}0%-1~($w9S`f$o8MHAC@YlR_Ev7 zr#JjguI8Lo$luuFurrcd#1$=vaEcZ?1btv!3oFQcV(D{kV;mkr+o3HnQo&ief%D;! z_Dxq}Z@>TGM6O}5-c>RPFoiz<| zrrvSj`m^fmh_V_6P16Af`KZ5b?I9L1WM z@6MD*g4+RFuN^<(nJ#r>jqMS81Xs z0+k`JpC|wfx}9tJn+QRWu8H(xWU(iG2e#9q#9Ba#6^*%N>3z*dR|6z#Te_P2*<2gG z=XVL-*)j3;#+zM!DVdS&yXvoO)W-8xMlwxxztgs-xd(Z)1ZAYh|8nSTimg|$Q7$lP z6u)MP_26pdpg-jBdQ|nu)K7J<#((^?s+I$mKcS~g`+jbp*+Y}J=SGdk#rsc0P2Ka} z+o`|<-`&rQRU1p35oDKz`%HztB-hj6rMU#t^+VpMH>qjP4uTa`*xZxXR^?3^42lO{ zL<-lk8`3-R74@|73J_r3;1*?;S?z(xz88eU6Mrn#*tX~`M{Q@-mou(32kN_cnW;y8=n`Fv@Ld1vN$ znbb^YUc984+^aPEfXd3ehi^-~qgu@Sjh~KlNcD%DO~KFcBVd*qd}S=*LO6}lh$Z;j z8y^dq$O_tI4;&gpY=ZXy+GBIhqzq;cJm>zOVRK28f5Spv87a6CsSc>C3gW((f7Iyp zGt=>ubvt6Xsc~}#EB%KLmBU}?cb7LAUv$g;5935@P27vB2*THJhwVy5E*k?qK3r=i zm`4W8aPZXTYpQE8bSJW_HO!u6+U$rX zy|v#fO@o9L_%VcE4wGNl{1qKLXV;yrT#tJtNZmZW5T^4S&6HeJqpnWWC#Wu4iFK9k zH7__t73vp}MBU!nb!6n%EFKXGl9)+hcKp>9Ogao^CCwq%SDO4*B(N5izJLwarEFN1 zoG;B^V0-X*t^I2QiM)(=n&I~+6tty7(G=cUfzgbu9Lz@?vC8_^IF{GgKxJ0E`-D!0 zPs}&M;-ljzJK>h-_w)*>48smYrBBmjiPZ;68;a%sLZex$n^aL#A4-0pqZ#`hv%*Z~ z+V#4hXs8{+vdaiH$0B&;S(x+O|KM2#XIfNl6iq)VHho(?EY^*hp=KT_i*# zno6#|_u6sO5pX@sYbx9}ho+LgFDH+tQljs(kboIu-{(gHX6y-mrbbmGEI;?(SOiPW zq`k4YlbmV5yh_cSy|KXEwc!!>r1VpEU9;OEUt-4E$a{|S>5=7HLR3c^r?+5i1>=Tu zi5HTrMW_kYx|hew<1j}>`tfm^{Pdg5c0Aml$)Vzf%#X}_9)w|ABJ-?OdOt_*Zcsk* z%8y8yj@`&6NPeGn18@|Ds81OVK0j53{Uq1VpB&Kp>h+oQ9YtrG-kHQA;%8-<~D%}DTq#ti=<>&h&<8vng6IK^XT{ZK( zD&(ueJS4E%Cf}rOG3ogG^C_89`E&R9PeR*m6Oi0Ac&8=J1b`K}#_Xtl>Ardv4QcVS!{gpD>a1;dCS^b%Rk&j)UEH+evH~E#| zqTz@X^U&kUfbQ)`=-vq*U+;!rPqejv$=l0zLHY)1(&$olfl+r7S$F-^WBc zLthHkvHndMn#VuGMtKPbJ}D!=@9`+OCzAXV@tjp2YumEpaadQp+pC9IN7yR^k}pCR z=rk7=$=QpZg|Diu9Z%kUnTV(#!p}IbJwGE1yqR>AW@w)=E_3D4+V+O+FF)Mh&s4U( zD-!9z{U&;r-9^45GJyZkzsg@^mL820;48vMM|ty}6^rhP;3M*!nmlGD^oQoJA&TZg@U{BY4Hz)hgS3Y{AJ`;Cz38l+a=&WA|D zI+bO3)6pfh)K>MpS3md%zL^Glci&~S#_I$QioKRR#?COJW8a_#B%zf)4@Oz zQ%9P2^YqX9y$uylz19~RN>@C02B@uooYIKKIFJw(c@e5 z;mv97+5C)4`qEj;SR|?$z`=8Z;h;%^a}CdK7;K3=Aqy#^e4A}@m*x!PA18EHdonTJ z>&;k3Dr-5bsqcIbHN`fnQyQ9^p&sW zx<7VZ-{7O_t-M8<=P!j_iq6*mAAfe!P&(kdZ+drUG# zif}tOvS}43l0AU=hvh^e_EWi29)7naH&W0-Z<~p|^@2E+Yw{LTNEgZWd)8p}|B%e< z!qLbsWc@lJ-+aoN`+RFJ5Ct!4BL>(%>RkkM$Z!$_h*JIf(BbS*Hl6$q!Bd!co#TAd z;rceV6ZNo`;@tV1>69PX5unWs95_{b{+g4sbUfD6&Yyvm%Xf61aIZPS_Yvm=GmTa* z&j~Iu_Eh&xa&w7WoV4j}7QQhvBy!8T--UvJ!%F&9^tpIhS;7qH`bg+%nFW0#j@}d~ z$1)@y%6J+$Ftp7k6xxrSMa+coRusYdz2qCEXzti_JVuMd+A&2PUPJNGs(7AYcZG7G zPI#;_YS&Ow+qzNek2u3mQgUaaqKo~uZcS?qoN|NBPgs5qjNJt|`h^7gFS8j62}?Fp zvHWi+OWHU;5M+Oo_U13zoY(h|r-12DE+020jGnR<_HB4(?#zoMY6LDryX4pseU`pS zB|q39Biw0Il{}J>WasX@PU;!f5pus#G{EoW53-7j6|Js#nKsw8<;oyJA7=3JY&Meq zM#*f~;Teu7*8WeN#`Xo8=U*=31^!ywA)F6rU6%} zEeuusD&yPlsfT#K6nEXQiJZ9NaW1lDb!8?w*Eyu$bK-bB-kNPY+75{{ zZgOS&59EJi$uD-ovZ^U=VYzTPH!j&=O!VU}@87DW`b9EuIM3L*qxw*=R?BY_skMhw zb04ne@}omM?uWGFGr6dVXQ3%st(G5r@qc`ML~6%AU`#%++AM#bEIZuk#;l{#gxv`cPAsZPnR-CoOg0;IX?xfJW|l6fY6l(k^as=+?g7oohO#W+Wy3=yG5JLkLGyj zKx{pn)T>xiQmpl?xFsR#6~t0X1Qfe$K&wvvFK@H)VJ{3CYN6m0{7B|)S?x>mADY5g z6)LO+Jiq!A)xgug37YiRK%}CKDY$cSee}&hq8nqs+|>+JhlSW86|ue>%XZO5`+Hgg7YJY>j*Mm zNT|mt##r;4my)f19-Rrw!Y}<|ON)|MabD&4Ex{Y&-_|-$@xh@;V}-XD=s8}wTf&G* z?LS)Z!Kr;W-;&|Vr(H8`H1JhOP}X=|pWk%y%t*`_pV&rXqj!NSPa#m+zBC&r$d5fYn%L+R;>)*R~eS&8e1zFR|BH6Zq25us4ltbHrukdT9VO_hItXV$5?H&}VBp*Cb=ywWxAP^Ziu)#_xjw=x3ekCeLSb_DY~?noqke4e`N z`g2IueTyyeqpCOl6zYG%Bo^SNSKK7z7e+JRfphA6=PQQAb4uY+fe;D}^da*il_sRp zfOwHU&)1t~VZIs2O3mK!-8BiDo0UCXAM%mj#P2YxjXyyAUMX6|iWL@K!h3g}Qb!eO zyG?Z|PjSh%?wp)}Eu8zc=-@rx>kSrH7T4;1g8r3IXEGxz6KY$i48mrF_p93m!S19x zKo1~7|Ca#r5X+52#|v&S!)FX%eLY>RIX$Q87uQ=r+FOvgeADf9E-(OY$$RZDeKLma4Lv{SjQ0Iu4^rcX^~LY-k-3+|b;oV4xT2 zbfj9Jz7Zdr^fQ!jw<(_ptW~HQ)F0I1{(^IE<`>)8Fa40^&Spo|^wv%k(kjH$&sNQu zY<#4I*1)LV(JQLNJQXGK!$GFA6|WF4+yE9%g6X%cDrK}b#l;iyHO>ONyW6+9?z&P= zApL)%bT0grE+k^#*{7(rPrcIm%k6ctkErH5so0PgVU^<;`9stm&HoyLzx(t#VOpS> zQ}FX*c2lJ(rdZv^huwUyHpQ@|uRl=EPn0EaxNDduER9awq~D~2<&QMF&r?nW=YG&< zvL2iSrd+)Uo2y!wO}6EuFZ2fr+7V$BZz4Z&YYK*RHyHIi$>n+v>E+8fx=h>>G$2227y=6?ApYV{XKQ+$QU&fZS86PA7GA8~E<1Tr^RbC2}{+~=tN@f*ji z=2uBwEgaKtq(^tmbh{AUthpZJ)5FLBwE859egQX5-7R?*zQN zUdzS@<7@fjLo#|^al+(y^jHnTZ~n3!|HR(>n}t|Y%Wi(}Qs-IurUe?WwJFo23Q{Xn zR{5jUy}-%nf$!XZ61tJC62?EzehfYbUBPn&J7=Zy^lP~q!&2jpMd!CCX<|G%M1!pL z*VY`6zQ^ui%Pe)(ue~3Wf3>A(#4h+l??{LFt7_31JqXbKy** z*Bnt4d_0{jHK9e`Xvar4RCW*+rlb3w_V+KM?D5oLHj2tN<0(!K9iEzt&OfpdUD2GR zrTuX!KM(XWXu|!7hnU`Fod8xlj{^melZFOn6VZ)pY2dZ7lu&)u* zTw?@wv&yqv2EMVm-lOMU){iAF8D)`BFFTW#xA-xT6ZN&xK zE$u!xh$WT&!1;1xAqi0KWSz9Zc%xycP!X{c1kgHfzI>SA7O6mw92W3mT9FR!FCZmE z8m>1}jB~L+=kwMLy2J1Hy+PUn9vO%DN;`4hZ}*gu|0?R@`JA0UU*#7H=ZRN=-BuT& zy95xr1)_^MB-OSHPFcRMe0f~4<~KKAU8Q{I|ACzJI25O9%PfSyshG3`H5`tbrkSZN zCPc;KTk+Oc=fjud6szr&*Y+sStt;RUX;_xnvs)K673&d_R1^z}$^E`RYRkstj@Y9g zUc*FX#k8p%*efM3a!}8hlijAX-YhJR(GQAw4H^9q?iwTD^coQrE0e_LYbx8=>S zKmL@`%rQRj9p1}^&EZ)71I510E)IL)Cj8_TQH}5?JpnUJRb@9YVuc&aoC z%6o^cpz^P}yD4di)(j9%LZ|f|u5X9XzZeCS7{Vx^idDiFA%I&Ntv&KI@~7Y%#aA5@ z`f?rdWR-5&U{cDdP>fLPtFc04B3k*dDsepR-)f`I-DZi{^>2T|kPpenUQFRL4ybqq zWTtLaoB!hEn`tKfVNO#oXN9fi5EwQTH4#h4W&~L~C>y+*TqBW-1UUJVz%`BU7unHs zQ)6qL8^$=brn(^_l8&GER2v?!QQkh@Cs?MrDI|1f8b7IkJF`Z^wMR66v0DYQ4_-hv z*NO&n=07eAY1G>?R-6@!J?Q7FCm*cG$7^02Yv_kIr|_Uv#?MF(L(qB2vOp{*I7c{G zCnvW#XVSJq=`8-s^{7N%ilCRQPaBv-S#cNyc#!XR;W*a}e8o~>Uzz-V&e|VV&uZ(v zt6CEH@?OZH-6nQ=oV!CjGbEc$O{ysIyes89I{58SJ)z%Bv-!ZULL-LTCFY|_vUaj` zZBnsC)AT`u5tH@mePzvVR#v2!M|FA_YGjG1?(S#XL3f~02(Q_YupSIW_!_Zs{}{eu zL4bPAdR!&Ry@Z+$QyNy!`Xa}Y3%Pwk?nIfu5fno}>|68;DWDMeXztA)Pv2J#vwj1Q zSC_L9Ub3{=_Dthl3B^G_@MrmP!#Z3~zzfB)G3@~YNx+CTrNsDM?+4Z}iB^Uzc3FJY zs=g5jVsAwA1f<;SSbox-eW-kk7^RMeXR2NdZX~GEQkZ8<3tyx(4QWgS7@l3>8VQ{NGmKHn#WVpzn1gIIeFtt!cQ+b95?$wQJSO(SuVznnJwx0cA zhIYP~<)?Bdr}4X1cgn9trmMe;pdOqf4u8iFw+E!=^grE?F)r|f(qRU6FIQyz6Ji|> zDtgCcYW#yN#QLEMwY|L0u9O6rrM;+=4U>zzNRu_msjq<#lK{!jp?9)L$HO^0heNZ-)?PqL8wP?=dbPG$m~A1eV+>)7M9 z3MyNe@^`s&E$b<#QYxjcql~hw7^eC=H9VNe!PuOnU@iskRr&|(d-dCRP*l20 zRV+Tqm9OO}G%K1kKa-cW%=NA@J1rvoECqHC2>kja|twG*qR&RS;W8S*bfAB zWGC`Du?>fBPe(2eBCAaF&n#6Age^+mqx=O6My5vU{OYxhim@3;KY=QI_c`Vyjf$Tm zS%8#=K@SqeIM&i8C8m+>nVAfveB%SuP+QI1%y9HGt+MxS5eMmIZXY0XQ*Ax9akd@@ zvq)3KjXeo=z(rEv1m%EgdXT6>9~D+0p6xaiyqd z^ezCmrrZ>s2s8X5t6XHu37-w5`$^8pc4_)5HA$6AqvcaB&pxG9jHPVmoBQNEnJBaO z28GKiBs?eN-u&c+m|bEcKf(byPcF)=G2?7ha-@N4#NIsF@IOeecrEw>tz(!W@EL&Z z2Db?Z+O(OZrgi)Z8D-gZpih6y7Gta;WcQ|u7QQJb*qFmePK4We>%k zp!bF-o6daGIC*cfm7cP5PUEypeQ zVv4*JYcLevY>81%<7<8l6mDh;&ZzkJ=~lsRzs@MmChybj3nz;)IyUyd_Fc2&pY-F3 zyk{5N+PeRw(!uyH@#TM^K24M*rginZ2OCT#$6XqYjo``FfXmi2(Uxk*cy)Y{U${uOvjbP;Kl8Lf_q1u>F9$ES5m1iqSH&+X?zR{A4g&_i4K;UJzZlvn zLxa+3gYqsGNyzGRZfkuzqV}RjpSZnG&a9bbc%$#YrNsRmbjZP-stcW3blkE^gY25w zI?e{SQ>%T!h*g@hd6C7_EO_<}Xrehsl#wlEkS#GyK{XLY*Wp%xLM<`S4ueS|odkrj z#63t%dF~IWrL5Z0HZE&snD&g%bf~BtY59%g-K$G@9$kJ9Y^OKiN-`Z|r{ARR&XOMY+ytZ05 z{gz#yv)=XSEwcap`J>*twqIZVPHXYoeQvot@2#|7X0c{{lxqYk_RG6k8z1f_y3~(v zS|qxpH>q4%Zot$=O~F8*r6qMwdFkc6z@expq$Q%!_5G%1m*&@SBP+>PNqjJi^DZ4^ zTnm4+^R74q-GcT<{QI?u{A7ysq{$pm$mN(yJc5#5c_|oT^3&mEP)Ulf0oZ2gmA^u@NX#i zZ--T`&hVa&VLN6jnduRyfiw*_)sDj5eG98w(r>5uO;eSJkzS8z|I2`kLd35v>bK@^ z^XKQWpBXOtnRS70pY^Ac?}qpH^Xv6b`w#xkUdXOO|LDRm3fx7aGx{ma*20Hbara_d z=f#qlR7`-HhVE7?q6_fYaI)0bS@w74Nz}}=Qd0)7d$_8U1S9;4^&hG)Aza6gWJ0U` zBidGed~RYNn-@IWbabYtQFgOdyXAWEctBi(s%(zlV*=b;a_L;0?~yC%%wyjL5qPEt zADg6V;p?F2y^ahUp^ue;V$=~o;=lT2tF6ZwydS|H@n6)B;Ow@_JkSvnuxz|JyzQdZ zIzw;G^#RVmjm~5dSjM>uP>2E8USN1yFOrqOw)CMb%?_`?*THi1p;0l!TL+LF`$q-; z;}3g!7WcbUTo58e?6`ln4=~IXd0%&dxx9W=wF-b#Econp{1IlTn|cRIXTA(vn|sxA zTl)J+{q*gOi7>2j?y6k$)>}#|x1(B9 zaQbK36En;Y+b5qr3jIkLR@qh9sT`t57#q3rx$kJ9!va1pTen$AAXnlBT(JT08~D#&l+P^!}oI`4R4^z0c2+=+7W*q+gW9S zgL%4|wT`GpU6mFCYch4J5Vm3P)taGGD-p+Z=&5z3_O70nz^PgdJbPPl$!8ac7M9J_ z3INEAX^H(#IHU-f7ED{f1bqeAK#SEi^-oid=#^4rK=R0j`ZSUT#5eDhPY-GJzqNcK zkC96QcINxdmG|D$SCI>;sRSU@bE@=%K|TvEM1GJX1D%r#suFgumshrFZ?BhEw=2!6 zi3JKG-@P|?r#V;hXg*$hKtB^cGb;O=>e1DRGfCV}ueeIhC^Pkd;LiB^Nf z&YvVjgRtNcm4X%r!D9m_u<|9a0y|@fkX-IO*LD%t!=_s6sD2^nkamZyHj!cZe+=y( zChk|&&bV#b!Ibn8|H}-#jRk6Di_0;Ksj>&8G!}qvlc_#7_kYN@uWF~kTksoZ4_j;A_S{H*G!pT5>&<)Tp;7PN38oQVsr3_!u za|}IVWbJk2UpjHEUlJS+Ht!C*NBn*M$%-<1Y`w2xOSSceXnRWv;jsu+K=GR?L7DTK zt(D?{KDIeHa01CY>6g*x^9NbYH(`Lf_|CYGKahd=Ts=6mW74jOtkH~e4S-K-dPMU1 zw69^*FHjzgqR}i8J_@cWYF@%%9WN)`wvbqgk3mT;z~BnjRSsww)QZ|@%No@FSnL(9!z)N?+*Vt;`<$M5AtTynY-n=zDi z{V}cvF>)U2Nh7t05712QP}Sf`b-VF}`QY(i|CN~gdFaMG-+`yBBty=GdlFYvbTcrKGU2kz zNp;oK!)dZRD6F4ulP6C%_s&t7(zF@cw+X_(q3Ejm`n=Avpjm-IE@h#d2$Bu0p6ttdWOaKk==V{TOxeqZ3+5|7ff|IwYx0f76>LdD_+hAn_K!$@+4jYCO@MV}op_+W)s1Vs(f#W4L`dF7B}Bm$K6RUFUT5>mn`A73Nx61) zp_4jYy4(cww&?qX;B5gD8J~cM{_>1W6jFbY&V;@?_!_wif$pp0j^97{>r~<4Dht?@ zy?Bv_JJG{FEFi@7opJ28;fWnCx+ftyHJ^7&-DJr-|1e9??1CD|-^=iewMTlEay%`IiatpIh>+ zV{=IwcjUJ8ENg+S4RF8|%?%C)d5G`^<*NPe7DxdWa);<$+Qs_c`&)giz|^t<&Vuik*nx2Q?)}L_>&G;~m<#oOTaTTsio?9Z@7ZZ} zel>re+G$dr+F{m@D;Cy{Y3%YUJ>PwEpt)jB8ns^LDCf7}xwiEz#(x2s6JlIC17ru@ zH{j%KIiwxMyMoT6U+8>IO)z?xmGcZ5XFz_g$8&aA!!VEyjk4wAtB8aXpA@~?G~wET zcmp4y+D(7&YByFZ2Y#Wwq`#YXc&tiY`pIEs^wlUFRqnbw24gLOrr@`uDzJ4TguvEA z75CD@z6;6N_t}6X(=;SM=!yDurjefO@%k;F?_9k12r}+er=N$o_KhNkB)h@w4t=yj zo{QHBrfvX`iPsP2c8}s5VW51ef#7i=;JHsC<6f$~xlS+@lmnP%=zVdgcI;UN+6=o? z<>-pHpmV!(XF9%0AFdpxo2F5Y)lV>wFnBmu$uFT7kf$rF1D{DC6JI`|CJ;bLQ;#r= z;B{`~n5LP=>rc5{7;w;K|4}Tm^<}r}n+6>wRe|@nm3cW8uH#~;IAtsh`jwU=t=F8N z_p7BaZ|5V2(#ee}E=W&b=+mnjXQq}NomMw-5pxLZS%*DTC|f;_DN1E5?-V9bOunjN z#cE2)mTdVTj34?B@5Ud|4hVH4lCow_^3E*^CGn@q;tX2^uj&e7q_emS%OVrm){_e( z0i4^)z+0-OyGOF8v6wo4usAMF3`k<2I~Iqn))n9AD(iaMsb}dk-_{F^2aHtfiav%M z&^w@nT8<-DE?Ij~?nTa!#)bI6Wo!A>V=N`+DvccGl71=@#!{ z&4ELE@yd2^xNy&U$*{o)nBg;1Yq+i7NADCyctH1;E|bq-=?=I~*z%LosoV#b<3~xw zjm7mdy>Z~B>`M$I*25)uD|pte2~G>$W0o|g#2)csS0C1^WtM-KF*cYn?#L$DQX4c_ z3*{8CY zApD`QLTshN?)mpCR7!AjE2JNgIlgP>*&|~g`O?DHnPL*Y6@iNs)g4MG1yVIp$cH#& z-xg~zaw$6+x@2Zr@9tj0a_9!WIi{R4wob>suCE@l6G;7tEC>>)vKTa!{p>bsGZ$qZ zt`<#Bdy{tUGa9^Zdd==@@LrSY-Q4DQGjd)Ziw!}BX_@pqXSGk)XeDn4%=e-POr7yp z$>y)scIK77VLUyY^{>J1eBjsQjBW_2j|@J9R0wcLngDfO26Goar~s1Xpjlw z4~yyl8|@~iQ_vu5cQbFbKdD*!JlSqo(c&q{NrmvqlgVOmJ$QJ)s6{<~)u!JL)=}F_ zFfO2!`kyN+RRyW4wQfaOE&VO~KY2+&q=0HzBaQ04P-7w@+3lMM|tWd zY(^M9kdbTZO;dF@AB<9Mt?yRyMDDPrpzjmv2nLdajb%*XRbj%Z-EjZ#{$Q@J!sapj zLA=h*G$ye4O;SJ2ix|G;$b^qO=TYtFAt8na=c;^SzL`YBhIMoj^3Nha!Nc-El_L=s zT25lFASnuw7(9-Y$(4tU{EeugJG>R+h@O`G*4oT*aD?md%BVVEI`6&h#>dv}{F={SDLuG`Z-&KUlVvmM0u4mmul-PBel+Al||oPlZl~ zl=bp_U#H%yUeELKkM0bBF0z7u1ND@lriyC{r^iqjZ{hp*k71_xwx#>j6DVb!q0tit zU2r()?8UwR8hnyn-3IN?Nvw0YM4hZVgPZiN_qC(umU1(jvb6WhEtK6U#8xw&P}6E5 zVi}3bKiK`NKdH#lNUtavByS(#nGaV*^gejBX{BIv=`1Vcf!ncv)$2_Fb0@#e6~jKB z;&Bo>uCHuo2&&QtZik(fy^&nVMQ*eHd*XsN(M_}r)SqV3y&FMGgNS2hH!HT+=ujb{ zNaLEKD-U<#_9vTvW*&+N&Rk!sBzvdZmTf3)ar8v@cG8|%q0qEXOwo7)*HK6|ThDcQ z25c61n(XbVQ1wtbIZ0C0$mnf=MpKeATtN?|Q80uDwF+=MIXO`E&^b9_qZuZ)wIQMz zrnI%Oq8aA2wK1Y8O6zSPMwkAyM;w|*#YBuujy^`xgn-}nEW3$`7}aJLj&LBZLBQ#@ zkt+YhAQ2=R-x7(<(NU79DMeC_UwrVY26KjcNZIeg;=XZPcob&tee8+T!6VPH^SYyF zbx&-q@6d4;^p!E!A+0YlH_U)|9cN>c_(KpY>I7fC)v1C@`4>mJigo_%^gQ93qRhX} z;nAFV@!14#ZDA&Kydv%%EC9PftqU%rY@C={eU&wZ#)C(_Mx4|^Zs(=oM-ky9WpJo7 zRs#?ad$kItq4lf8!&W8l5oss4N?uIJbx(Qltn?dPabcBqbQToRrXeVhBO9}(mY(}w zAoHS;KzZ|u8$pp`;UnivW=0s>ys6uVcsn|50aMRS1l+Y1)NdMkeeIOg-d#O2$PW3W zDUu}|R3(%3k1*stq=gE)pVCIXSIZ`w;S-X)$vC^q{5tu^MdmTUa}@q;{?5CAKcxOt z8Zs>09?o}Mg@2h`bl|jn`s(J4ul;X}pxD8YA2n7rUV!B>(rhIC2~`faC+TJVH!sMC zHYJuvHz_yCLLw>3=H*LE&u09vE5eI@cPD-vb?0=k_sV0zMNe&-KA}Bn`Ov4>v`_ZO zTw0YsZKHbDsH4-?Bf9ja_`;^xr?5r?#fwlgz;lDpeCWG-`Z_^S>U7|n((p@gEU^@X zO@KySy|#G7V7X}G2|P|c2&aJ$iBl;TGZJ9cN3eHK-_I|6DVf0vc$jxGJwxSgK8#Yc zJcs#|>Jv2QAU#kN&8-Qqlkm@Zt=7x#oGaY5X%X0%tZz8kAkG4moOLSQ;*`CrPN~jG!u(5(G!c&8rrhq zR8e__i*l+B>rWzlRor==dB)9#ai)2)bP-Jkzm5Vor$KG;U~o#86UN&(){8P-W3pyv znFIxUCRV7XEYTzx9v6@i90nI0xva9a*+rsG+{lhXP|-R;)&jy#bEQ7S#}+jc22tbg zNo2JS^5D^Pu@?KhKgxo z{-&?S>wQFffYAHZ1oT|k<7Y81S%$|_=DXRs=#21K;aBQc7irY!P|@lWU6T3BiKt!n ze6FH91S}~wjEFk3p#zTj$!bePoM%MuylKc7J*DD*gi%pvK6JnU0RXi;p{>?WK!J~e ze-w2~v^bp3og?PuxZFN%ipcGNf^z#4Z&guzidM{5vko#3svuO;r(WkS>Y;7{%5CJxK+ zVghr^!a$K(I;o3cC0)Pj1d)W_-iX@s9<_!C+2YxXkO>kT8AL`kk%u9StBZ&o5i;-6 zxwd=`~wD0z7gqc6-xA4MpbZ0c;e-L)(}35D~-~p20(KC6Tp(&H|yX zPKG!$;*<&$O(v$rC=O$qE;zL>NI`M~%C%l!Mse`ne}~_5NykD%0f51VeLi;3(*+W> z#u~H};?!uBojP*ya(K5n{ZP7So_#G?sVuSGb6kSLJG>HlfgbD8)e&pdtv8VSy>un! z#t{m)`BNX!!5>AU5oN@opf$hM)??oC8C*a_x8pVs<%J7L{7Z2@#XRWuj2-6}D@bqq zR`%U?$jdsIfC&G`Gt7s(H*X{Hj$q8o`i~Dg=a)dxwuFPIqBh@gzob<-?zdOawvL1R z>%4or>JF)z$37v_3${1JCWm0;OXp7v-L_jpq?eZ-(6wWvy=#mYsK=G>y1o(3Kgzk7 zr@jh1qzk0evMMx)mQ=qD&;?8+Ly zAq+8T0~mle>jzz5%nV<@z+5R&=DQPPujB(d%z@vR%44TlNtgN)m^qQi8$mzjcYH)| zM!el=KX5bl4NY3A$qC100{mgw@(t~1G%%fzlnYm|YyRfL(5WF zYj8TeI^AMl$u3wZ<;q{P)opX%bgD;HIY8aSY^Rk~&mzop?%~2><5_^vO(Wl+Gy?&J zJqSZ0DWQNUsNja|yhed%7gq!t4Z^&HBRK*xp${|ZcgT=D0U7%kj)1k`r67=Sd)O8* zE!tLad7uMjVDy(fDR0U1qN63gBFnFkIQSH31Ynib!Q4D*y>>D*Hq2QYvgN{XC1 zJ6Vv74Ap=KA6zMLe-jy;c6-Dwn-NzW%LM^9UZF7e&!1n{H{CH^hEUk+BFYWigK0{6 z@Ya=JYt0t!_}W-1JZr!;8K5rvTdJ$Fpue|I{)~1ZlL=d-wKwPV>)d%NVGp<=D!IU$ zL-xkvoFvUZ(DzMP<=@(c4&)9HFNw|Ts|h>Sj!^7GwXc|22q$F_-{brNzH0Keff`!u zE8DXHT8<5ZnR4HZuvXz<3i_*~+GU?N<-`iCStJRONAiT9N(aO-;OGNh^v$&E#u?Gk zsnuy(Na)+DVALcL+b~3?yeL|K1`}@w;`|;OmyvS3YHyCiCevqWUjkP`e|Q7c7sF4V z+0VlRZ;`1JD%I5A=9US=BQIYuuQp?CQ^6w-o>4k{Zq^#0adpCm?wWa4G_RHrK(j1O z1`OeH`ajLMYoXtmkE=M3u;E=#fFTP3;mqOX8=QCZE|9?lUmzjs8Rqn%s3C)ns_<&K z${dHH_#2h>^OMuwuiGRu*MP@TUVOq|gN3BTraVXP?gKJ-bc5^HDZt&TV@^~XIK`2u8c{{gYK75c!YDzIgEU^l zQ=L1(-f2%g5tHzt3QeOe?{x-X!e~MKZK!5dopj0|;86!3vLE3rsS*nI170F-FNpxM zMOYn^xDqojP%ex;=xijqP}1>7GUt!vI6+>HWC54JV$Lkf{{yc=jhrt2ik`>d%OK=e z;76+(ikWZ@t7Ns`~PYvFZo1X-tqityK`j{;|nWwdW|hEq|ijwtFeV8XXVQn95Q;>kuTyxQr7jy3RAn(YK!`Gk%r_eFiCQ z2FQ}iw&bKQI?n03iZl_Os0lyK;vO=>2J~mN7!Fk)iz>gQk>evC^Zj^yVjGZm)Pyto z@N^!SKhGZLw#bya)h-k8v=Em;Y^?oW1*E9D_`5g4`m#%v-z7ZOuG>QamJv6IpY{De zVLVoB!)W8S*Oo%I?3_J|<}k_Ok%dMenPfupSc~ak+@eNS>8#P< zW!U66D?Et+6RS3C6O)i)xIeBwN`w4Ly^EW?F5?eq^RMv~Lh#h!`2Jmythu0ao86IJ zm?{~~{1W;n4sTG&sgVFnx8jf>Ibi#+8NE^rpk|2#Y1{hQJ7kS~0w}J05wK>}JeQy~ z(z2osNi0i73u_=ZSrfc3I~7)`=aw^hrD-@L`Of`bV^KeX4%6QH!K|@ilo+NFMiSSr zI!>evxXGSWD+$i2Qm6^05jxO}2??^vW1es;)u7zpCt-F1g{H}CmCoc#(T3PoZoRBUS+?4RWURCe8wj+Oa|$SMX}AE6n#zhc;6&sMqgN{7`h=IBnx`z z58!iUGoxdwjlJv9t$u^y8F7Hz1HUxDY6bQ&0QnAq(+L{|0QJxWB9cx=U{4n@{MZwZ zZ5fP!f5drUx)^`GYQiABtcO9Hg z=!cB_1pXnKK+B}lkFm!-|HXa(&lU1N*9ed{V6R_Be1guvjmVLFg6_buNI%30SoVi} z(*)us9!m`0t70qZEbuw*C8Z^T6;2~t$5%xjUE*e1Fur;m~faw^x3MIC* z-5CfDCFT_1_`f0SeNhFjCmeGO-&6kA3E_XE7u4@V`I&}1@EfOtSFZinnEyIq{BH=` z{|zAk%#rtQW6JaE48(#I$?NL~1cM04YYK|z|9vw++CaUojQA=;7;5<{+k1dxCRPRW zBjO`s-E@+xmVA#i*7!Nb7|hYr=dPseAWEO*9f_{U^ohCi2f^iqrhT&d zlAEHO8&AMNS70la)TtSw&Am^o^f&qTAs21-@ijl?og?R{!(oPBw1Bm@RBgs|qyG+L zA`(qQIwo`O6`LWus$t-w{i&+^({9~{l&&FbQB3_@KkADlO(3T2Ku)QiMpW#k4x^NQ zE7KHA#8k#64_*dMZgL+O)~2C7&~PZKH6)5u>DK1Vt=UBegLjQd?K|7@$*GTIs26Lq-HB?Q;Hc^f+6T*>R>CZ^pKkyCWVUj3hvH006bTyVi9pm zD6{dP;KakSmFa}!sS>AOJZe2Y-YM~9*VN0UQgW(jq6@q#Y$T!pYD34w5ylk-7iohr zy1;(aQd*KN(&Kn(mR}^}theGdzUR)hbb?Y&i2gyA;obxvnt09<8UFEI3Tn&SvMa zx-1oPV-9ST#N$1)TGD4Wa%6DZ&Sp0g{7-M2l+lRs4;qU;$5lC|y6A_+5D*(jAmcdZ zwo%schj-{)J(j!kL@d;rVM0+h8HQFoB{4LS-yS|gY z1L|KZ6lP6dVG?*5c@Yn1kT|Ask9O$m@Fw=ms(QrA)DAADGH-MchlgxCk`MGrBMj;f zvwkh&i$9yH!ndG1Mc*< z{#FJpEC!{KJ601y@@42nno!rk6}P%y_7b1yVg@U;VJs zQ~fBP#>H3dRr^0x*|AA#!OwjTPsthZjqvYlA|;`t4B zlfObP4RTf1%$}ChH~C;UWC$wr0!($L_$wdV5Z`2l>b?a05J7DCBd2p#KC`*DLrat^ zXwFv%4IvcvW!2xdPcsgZ^r)Ci)*#|_{Wnm5X5qrDL5OvwZs~tB4lG$|@bXQHX>qG8 zN&6Ln>&fs8F97loPEb#dPl|yLwvI>NB7ai;{X1MgN-nbxUNrLW!JM4OCxU4T?d-Ol zcphYxo0Jz^fG5N5@Glx1MT_hr1?&w(BaHP|XBAlX7e5mtp za(GN}i%YUg11cL5_aGb~EnXjEswS4D2o0mBuq_1O{DB+&dWZZwNZ;>cOrQm>&)n5 z?sEprtXs-N-YXN|%>p8@GX>*x;o;$yv!fd_2kaVMUOnftF9kFTeGIBOw^~7x)UI2;)#ZYkH$Y-=XWnA(tarahDKG1bQ5~os$-c^5-WQX#w;6wUs<{Iy*&W7blN z7f4*48SJsSW;E{LfoHG5NDEA|eAgVnp~220I;ciE>_G$#Ny(dS2yaA&=RV0dTu{Pz zXu1>9dcOpdNZEix-Roxsbj9AikS>oi?1|SleePVsgpSL@v|=475qAQis_QD#w($~y zwY(&oCoPmhUq*KjOg0I&o1+-r!H6pU(v*2XL$dv4Y8>{0CX$f#YDYM%=C`b12&|t3 zx1%a@7NP|@n4?#_g+@kQ^~Sm8!dj1KWnGCk#>}R@wa`Z5J?qi;CB1Mp^6gl~!Lk%j zrD;-!n~j)h{O#emx1LPZuI_|0Er{dXl=!02e+-|ZvGdPdxc+3qzy{Wc8mfU$D(0MT z$Wr7s!*v#rAF71b|n9-l8`o43-h;0>}u}@|{k_DRZZ&iIAr>x#(gqaF_zL z2?J%sIQ?+)^E4F6Z!`b*BG2ao=6}E<@=>5^6Z27`G+FRwBJ!Fj{uh-?jU`*7fu}4* z2w$A<3j`@Z-sHWk%uW#6ScE(Ll|=6=U6HHN)o7_d6FmTHp9E9H*0!k?Po(4TW473N zC?rXQXfWQDOu_)MFhVJ`b8VY0E1m=tQ3y=pHO3`d*()32>;+gqQYP`HI9|SLv{*wf z1V!JS7^I4#>V5uCv9c+Vm(ARcH5S0o5bRN^Gs5kWq6e2I(UK|}*a5XWrC z?l+yJNsH3uq6J$8O)g={JaD}e0~CuAgkLgd;al@~D2<3mJfqgfUAatQkdr8@dbqKZ z=F49`C;TTn9}KzHy`;)_&9=seqJL+-Gwf}~Y(qImb7w5Pmy&u9+91ZtvLVI@+73eQ zW%Gp%4!nsPrK|M&e~EYLh23SZK=?#h)pZkP`pimd|D1T*4r2GdmHTbod?Zam-LxmjxEs_@n6q2n{gc8F)M*}x~7IqK8ESEWX_I;>I2Rlcz^vZRsExG;psHr zS2#DfVmjYn3`RerPH@!rlemf%_ZXD@kt6QI{G#sW8~@&$JDD@|wtMI4{jomV@4xKF z@23pr4N-*f0QZ1=ZI$Xg-#k5zx*Eysg~m=>NT8`(n-_NN+z;?p6sWrHPdwHn#(IEV zyV{wXv;iQf?5L_oFmd(3S+{?npMgaG?MZLMj8xwVyf&UBf1($kT!pQF3J8t0W}2_pYby24w7_h%$U@jLzZk_z%XU9m4Rk-K_1ApdB73 zIK{)$H;2>eGtwdiP+3Pg=zq-f#`y>OVNoTG2&0;T_IC+lQ5XBZpMF}|H+Qwb;hqVf z7d;o8&&BXtLCHflVFoAa@+HMWB47Ue6<3PmOr2L2GCLIma0#3JLZ6dZA>)zzJ}LTE zc$rF5$ARt*O;=cug6RFKB8kIwtEa@G^kbled@wVdE#F8Qu$jPwAwXm}@RkH1JwQGmJf0I|}@ zw9sjX&U|6iyXOs>xNI=(43O=*OSHJ>xoa-Yra)-^AZ4(Ni}0qfgQ4S?cm& zCl(QJf$dXc97=O;nStH>f&sdXhF=i=fIOr9kD?q-F97xP5sDpt^l#rA+*c>_$5Iur zfI_K)SU{2I)kTX)6=<9iYhotBcd!Cah~O>u%(T&QN`+ikRA^r#5EM?I5v*TC>&gO^ z&pFM2xi%>dB(-ZS*2tyL|_V3w|bg9<6Z}=aMGMyXx2MGJaS>^E)4C_uYU)2BV zz1|g^ZT|ATerK@WLgTDQFeE7~i0%{3j~~OEIseZ{JC_hB5JCjrb{^<>uIV2yzW@dx zVbH60#692X@%bNhB~5a^!S?=)7dnVVDYjqL7PXG(1}@@x+DzivdH<;0(TKFCIlkfR zk?;e1Ik6!UW#m@a?qSv-W6%|8cE1^GWhx(oh8Y8}qCQAwx&gVy*pvAa9F=B&IJ%K2 z22)xvH$xc3DJB!`KIoB(RY=<0diRAK^)>KVG`cpCwSW1;p3~x>8!=V{9g-9_%^rZ7R~S8`Kyg zgp@nJAYX+(6S4Ok%EU<$mE${?4wn+KUnQRcn`Yu%%gytd1k=U*pm5M4ZxL5y21nfp z`bRm!tT@V?{SdOh)NIJVOrmaJq(U|KG3G_xNxDD^ccYV}Lr=5m;LPAJ6@ENG z{wTL@p}H-LF6ak1D~}W%>wN04;&a)(Y)eizccd_R)79mqct2<%@u%{7-!$eg`xII7 zh)q8vT}zaTKFA3k{&M9RTyyo{4^*qj?_Cpd(!Ld+i?~;K z>>ZhVzF%b7E%%(yd8YvMoUh7?z)Qh~i#R_?VIjH%zronvBNjIgkmrm3g2(R{)W`4F zoI&K3C$RtK-IfSdNmE2~q+o5+YeJ^&)cPsRfou11o41@TN~ zoH#o(9fSWRyJq>FsRA+{?#R(fiir>bicr|5ngcTbU@TIl7!nb|G8 z`PnTHgm&_Nw&TPX4sTdFmtO_*cq0{iOd9SLQyEbjIb&6ClH*SZh1=TzNVl z)vzt2i6D0^p)@Mezse}z9E|g@@TodMJLOdg5TLb64{Db4?$`sq2oi{UP%@njDv%zk zv1A1YYU4ORoV%1_!FB`*ja%3MF71}r^YD>b!O{xRD=M$>@Ciw1zd?8M7_9Jg*#v`q z{k^IS(+{$I)I@5`BCP^y77#bq+#!}8Z?N?PRZ>SvRssny&iiQ+HNvL3r>&@~1#IIM z{kLY&halN}`R!--mWZnGe^Hvk^ur)OHIW-Df1(`b7S>hXObVKxQeGT+8f)$zl91hC zK1u7YEP6USvHL%5VrT?Ts-n5G=em^8eTHtLG14Kqmi{kJLzsRDp!ybyR;ZNb0td}q zp2Rq92(}XJRXaA55IHUmY>O45YZSgnU?z!rl-eSVn9A*kY@0rGnZWy0qKI25&b0NR@JMO5zRW zY)?wqx=yj|B-)HE&PoC>+yJhSiggoQWmV?F4CW}oPEDoWv{dHA4d!x!U1G;^NA# z;&<><1G3GmWY^}jhd?4f4Cy?1nT}yuZ>5AQ(K$b9>1A(eL!{zq;!~HOUY`I2D8s_Q(!Xwgk;z5v{^-jkWSk z@JJEOL>Z^B(frp2Fzt}m6F$IA=A4rl5X0DcSE_U+AJa7C;r%*<`0;-Li9mM0b_AYG zXVScn@2tF!k7M>Gm5RwKI64_!a(*9UF03!En0V!w7COoE-U|M8z9ES9jFw41>@K2}(^l};=@AG3R zm)DTVPH0=JHQ~4IB)uy=)c03rRk0jk>jXk{kIWm7K&6wM;hRkkg z3krYW7nnifZ^BXXRhX}y?n~oeT|Ahk9S;jucM!9zj_eOB<3XbZXs9D;+8I$Y95WV9 zbpNce7lZG>mn;!G@r%KS()f199k@`5xM1*QA?@?DTJlL6U7vlI7|mh~q%Mbnf~@Q# zwd5H>9~WKXk5m^@Ze>a7He5XeBb1Mt=4bC0(g58!SD=VG>D$`sWdKlzNW#mXGW!Li)$DvIi90 z%@nNlM_L(DW)QLI5y4H5p`)%zpx}y-F;<|KQdH=IW7_y9viiB~(lb*KR3O11^<&uq z4W>NQmC3c6C&dfCDx|LtDL;UA-!Sc7B)&*%Lds)IyScbhJC~T}jjAIF)LRuY=Ge&P z6xsT-l2=V~Jy+|#kXaL?K}`d&V>M~dyEmY$M9R_i7zFUfAl^82b;tpoODk2^oV-Dn zrect#Zi7V8Akm}-S!x?3iUx_Eib0}ikZAn|iK0QG9)m>DAkq2_5*cmZD!~JdUn29D z(~N#Kq|8aA#Wqf}QEd_=%vJ8pw=hg8rs`AaV%=AWb3DzM5w0QsPK)~(XM7$!o)#rX z)9ep(9!RSrkPQt0^ansMO|{aM@MWQJIewFqj=@#|#d1vYUtmgnHO!)IDwJFJbM(0&dWki~^QB_yur~B_pw#%(XOh}qjFlbA4u+fe-(-g0 z#`V;F33PU{`USBc)9;EvwL&}WBiRa+>@o3Of)@HTv(#Ei63cebUp7YC#v|L;T()yK zMtjPdp~U`r|J$=6;`j4GsCseo) zqZtHXAl8nb>6-1IcN{xR2W6(8njILa*ACx$?JyneF#V+MFdghL{p9U19qcgOZHMV# zhw0P~5td5IVbqN0=<$QC!_dTchDp*543py$4?O>Fg z2s*9)aFCOoV>YTIPX(2BVz~5Xn${vpbjT$N9WABv6P*g8LTac9){=QankBvr__jqw zc{NZ=UJB5@qOC7V8UKvUXw?M4^I)7f!@nWS3@CqPE*b;VuQ4!yI8G7|NuLy`C5URR zCrXQIP{sX;>Awh1{y)^c2bdH^^FMCShT9#uV{SNL7}5YoTHwg(NJmmk2q*>+5d;hv zL0@(BeI-d)kZ?$FMZ`mlNHXV)3SvSL1;qdg`eMe2`m5?NdG;3M{XYNy^FA-$)_l6U zy1Kf$x~Hca{<)r`I|I6(c`56A@3rd!O#fjAGUtc6Z_eXBSL)Oh*^OT5dc_msuA4Lw6%5PdsNNowN^852c35!UuQ2tRaPOB)YuFVE8Ut2weUA~%u? zm|SOYYB5kd3_U))?Ij%87J(Z{1LrDxJhXj0w7oR2=@Y>)S<;*H!7!nX=DD(CSTdsG zG?asUSa#)r>a#C8;$F+1S-9b+^xD+1L2YsArKS8#ZBfY&q6b9FEeEhA<0o?hBv zpR?GqWg3>C3GJD<*g1QaTeP~7RAYlLqC6AVBg(VltoazFE>@uky^T>Cp@jH)wK;Ej z188~UjUX*$lA4tjlM%)&*CoE3uq&RV(Oyo1Lz74 zZw2t)o*r}uFrsx1n;r=^J8qr2Jo9da6N{uYnJ@8|JfM|nR>3C-E(v}l zG(wWx$1?$5P_fPSgz-lysE*a91E*jL-G48npRF^I6J0--X z!WsS^IpR3-RO`!X48{J;vfG20nxVTrE1bJMcd~Do25E!nZqHwc*&nhUABXrRuoXZEn$CME7guWUpom`hk`v?`d`<`kE#RZlJkpAJ;%$JGhh}F1Sm}kP3|jlr2JHDl74E z9TcE0LSG5q>`BOL!TjzcwELR}vXi-KF2h5C%kT=MQq_cx|CdP9uVI@0=H__k`$Ivl z?^MsgrG zRD*CYA#cueY%4sSmnM(r+3#T(KOkI={C1BHoKx3vLi}uVN38P!VV(yYrP`M4x$!;!%)PP2lesFg9eJM&X>SE z(g2&mZiHJDyzBp3TsFlG1#R$#g5!o>6dt{wBA`7f)a>oQpM43BE(%@HG8EJz^{1tk z*W&6$Amn&)@ZP|K_g#jb9$tTU0WG1>jU>gw6U9YutH`=_XF*4b#OkM^M*f14_B-45 zzadN^U33Yr271*8Ubu(&WyeK$seylC%Yyme=MM7D5^#3PfMdqngCLsFYa11@UFEkL(d2g3VR4>359MXEoDb# zg5DO|t6QXw6pHoVh&q`JIypp`PHqTO$#`*9n}Ht$gnQ%_!XvN6s@M8GvY^{j#9EYS zE%(S*f|Q2@LM zG000DsaIYA63ylIaQGtKgCgBisYplcm^Ywf1_x9l$nh5nNKNW%?e||NXeZFu?UOOn z+}Gm$7gANvTRdI>^H^blDXs!YRXtl5;&@amaPY0@DsO7^NRCIfg3{r~qgIRKQLUhD zt$fF$TETj)mE(9+D@BLjp5sxMSlO^zsdu6g8v!3l*t@>(N)j^3)xs<5mEYUfa67}sSxiyFn4jzF98|13N{!m#V zNLE8HHM_F2OYV&*sm%UAJiyctgofCk?p{WCUiF*djULpE>6 zQ{^#NPoNq6mZu+zmXlwjc3)TvJKh_+q7}HX!?VUMF^^adeITa*+zQW6=DE#7h;$bb zn-VS6LyCEJLL=~rf!hov@^Dy>JKL0*L{qhkd~B) z8f`B@ueLT@x{b9^#iQVORHrS9Pmk&_sHBtx)w$}Q*ICn5XG>3=lLGheO5_pdS-IC) zVzzR35tyR0(pHsMy5gT#dTZ87Q|n+FSC7G*5@M{;jHxFE0n%H)61HO$x zTc{hdHPyH@pGs%$8n00p!Y*AIY{?NK|b?*!Z?C?CQqzqLr z3T$gtdFar=!R1!P_0DETb~jf&vyNQjqUx~jc5g4=7^OW0aQJ^473-0ds(8pWNOe`^ zDP-sk!L`9OJkC5%ZZVZKm347lP!z8VD)6k={=^m4UwLYKv+Yq6Zbf$CR{UQHmm2Oc zn?&M9H1}xovH?b<=D2MVeeaBfelSu_zK{59@?-G0 zA0oLFSPkSh2@TuivdPDoP4)`0$)-b#gB02ZZBjPDGeB5{T{1kxHv0}O3ogHk-Q%WD zh1R;&;Ls@JJv+=6uNZn+Fmo`)Vdkm1^!8tQtjqC|nIn~DMOIl>{I6u;5m&KRY%~XB zI1h7`C4wWav*6jxL{P+4qKwTJam}!1`?FHZiKD(mfh4|CJ__>?$u9 zGhS||EhV`Glc!mAL6NmN6*!+8tvLLkYfs!BlTIt zRmn_5E>7rMU>=t}=b3Rc<-rD(B>0<-wS% zPC80%P3RxP1ook00(%1{u+1??y-&v~$m21&HIVk;w6iFYLv3^l`w;ivmWNDX_ghmK zaQy(Lu=j8Zi-;+#JA3+E)D}8JHsWiFh>sD0Sbt`fZFtkd~P@_I^#gPoP zH^>o=?yW~$<(s)zIhJlqU#%pytBtx4o{q=71quD+a;U|-sOvhFbdp<|E&Q+2HsYY1 znsBdC=SIb#HNV55jTmgiGg&%SdFLWl{M4ISAhFtB#oC4 z<>3d42)c)ut8-;}jDzKMprh-IDhh}>K26SpmQ8{DfMHFr%6?` z8;t6h(ishCO+x<==GyHsU!T1QQ|_}dYjXvDE{pH$StsOtM~nPr;9&hw&EglV+rR73 zejd7kgzf_^v9K*D7PDYyZQN;TGDMs+0onjjyfqf@Y<9}tI{KE{x)r=VmZ8nFE(GsF zrBLKl7d(uNhQ1-82Tm@J1y3%iQ$4P-3FFbDoOJUJ75MM5bjZ*zN?nW|b@WJCw-oS$@-gJqiwUH9E`(am;N@*r#OYJ6RlSPL=|)8_NgXRGK35;Yk}K%Fm5-eACmhkeNt0dUZH0RW~9UWHWr|$ zk0tc|pwzt%rG5ZPeJ@a{&q{*DbHpgFAnPP~34R#zIe%9_n~2*ksfs1Exv?3OYr`~26qh2PMv<{Q7EW+xZ zP3VtB%gIC0&}0PaGFW8Y9JO)~%#KzN2+6YLAowDZ#`jIU8=pwnA0NCP5khRjge*@- z!oTr;E+Jmv_ELL^jC(2yU(+n{AD6p1%De>oaKjTlyeA0;b&x^Id`YVGOYWE0m)x_! zB&VZEZsn@|g$Q27$g8>eMV1fM_vG1);0bXz;W&rZx5tFISqE_sf!7h=VrZ-IL0l-H z%@EogCu@iKZ^EQ3SY^;CZZ05QSf6NY6k8m-Q8IE=M8jK9CBnciXEwEkV46PsYcY!d zazg(tQcey=!fomUu#op6mQ8JrRFF-PtTuHwlvw4osf4zNe;zb9;*jEa^G_+fKj?YN zhZD3v{vaaDU?CRlWPU}0KPuY83(?|zT!nHS$XhUgK|H3enQB$slvO-2%g0Q6{O3zW z!B#;d-;HZSD+uy>X9`Fu)7n69I{>>VY7YqP2dgc|VwvM?GueXqS&$7h&&p)=5%FfS z`iM9$zg&V^+MMu$HYa>HWWMPGy_xXdkh#Z)*&{IWoCb-dQ7diMn=FySRoYebvad3liN5sG^^^SO&(6h31#l1J7E{Ip)S=nAcz-$OctiRM1|pNx4KXg=)evOe84Jh?m_dQRO3<)nT8!tFs12>@ZT=MXdzAl5 zJc;0c6Y9HB4zCaJUgpaIaC+?c0OQWb99v)!@x(orDG=0 z425gNp(%j2HjC&B>;g_}g)|7hick4;>uf%iG~wTlU8S^zXWg95Ug2oA$Ys(UKt1s+=QQ?q_5$q! zdN%V`G|+Do`X%M$B5NF-o2K_+;@)Z5h3ZhNKuz;l?@D56R9PnWj*el2hu+Uwn_pg5 zfW_P?I02Y?lo|ItqRnHI(Q=gIU_xI30Zs;YiRVkMp*;fvo2gN2Gfm=#{#}Bv>6S?1 zP3|Q1!-!zM2*St=*&Ja9aqUCL^YBPN)T}j^)HRXzu|ywGja(5C(Xd2IR*(e|xjmlF zN8bSgH5Jd}7%k_++FP=|Q(1uNFOdp8{(+Ri(D)MiU?EXtkPIw*WN_M0${P0=sP>wQ zLN&0E?y6%UehLRvygJFE)S=8_fx4NL9wWcZ=Bsj)rW_;BhkOGAx{PXjzGU~AB1+Z5 zQX15Fk)YH@N-J}C*!Xe^UnmMS!9q>(*uKTN8IoE+bYM|ZNNH&;t;;b2Mw#(jkXn5s zi5=oo) zr^e>!-1U^ken?|Kl&W+y%*uSGQ(nHo$aI7k@?wpX32uhqe6|Al|DMpVC?}U%0*_6T z(e~&&-BCn`ncqMDZu5*kzKO;+UQ}ApKLRV*yWQd1aJs;_9VMBP)aO7jI5T2vF;9Dv zWjFf)V(V`tpBfJ(#Ai5vCe$}1&hu>iV)8jjo{a^5z#wpHQawa?LX)^Q0#=|0h(DR{ zL&*D&1j8?Yj+-kM)_){KW&wC|HD^>47z~{(JlEs7_}Qv`v!G2tyGllhmA#x#=yfbXeR0_b2h9yL4nE- zapA1-i(_1huguk1V*w-3S>GP+tOtQnLovUpydhgxAme?JcW_gAR4ykE$^oXbLQa#6 zoZVD@Pja4pjiL(j-=zFhLYT_*q`Hn}4(+Z)weGO^TA9caDgk`5fU6Y#eO|~HS~n({ zp5KNzajUrRiRLtACZ;|X=ZtCtqXre^o_H?7()6S^SOS@{fO)XAg~fwCVLVVJJQI(Wg0*k1D$yRCp1JR%GL6VM0~q8GpRlT<8>pk4^-VHG71-> zJmyl8b)35E?4#6$LiMoD!JJSZ2*ss+1CMa8&5yMab8w2`xudh>EvjrgYleph@qdxA@qQHkafZ7!j! zk9k(^p$u)!EOat8a3kEYKeY^Z z<(D~k<)4(4O>bYRxmMMPv)E|7Xys=l?RS%z1RAs^*xZg9B$gMGaU4Q^>= z=F-)nsDs3D$7!72C5cC(lKL)C)Q%uUy$FhWRz#hkl?R<18es-oUuW39J}2`k6r~EVR5g1o`WU|0K}IlIFNY=b#Ui6qRm|w5nP=y;o+uQhs$;1l zWN(pbAgQKuC~jwqszrH2jVmz1_%kl^cf3!apqJOpDYJNu3qYVP8S&!t~cZK!Q0=2`nDHu|OYXp_KZKEjV@%Z3la`dl!!3 z`;+=7v2wC27SOY=#M0!&n5$>$wI*~B`}=sARlzP|v^8hPD(T~e(KNX!8q~+Xu&uZq z=+Z#gh81LQ`cb@gSRBr4un+$}xV4%^b zg1pT9;FP?>8Y5Hlavme&czvy)zB2QSoNT5VFVg|abXKP1S%fY?=%Gxt2|bakXPa%H z(if=5RkF=CP@%e1Cg+JmK@|iORN({yokx(0+w2 z5_EOKqX5>m++A3e?J65SR@$%LSfC7Ig6CQDZzGt#3gbyC;-g9Z9tflF3<{&?gVD|* zexnVd&lKFIyt#&njEU)v)!kYB4f_8_}6T7{LkZGYmxQ>{*|WZ9FyuZRfGt?fp@DQ zYpckgqMqmA^EZ;}yU-(V5xXN^f{u8OIF@$I%I7(J=pD@W{fb{TBhw6C*^OpdR4U%f z{)X`jJ_GBW1fj~IIA5LpiVpKvJcE2VtFvG6@XfE7XVi+2e#N86zhXpUtL-TnvsV;`a&q7@M%%z8a#PEhEe@KE?edN`og6x;*H&bGO z`(F|8H-&A)_)bBOme6wvS+IO?&t=v9h^HzK5=@fvJK;;`A2H$FkGQryK47DB0r9-# zEEI)QEL7cA-j6ujAs+<{riLN$6mdV{0jr;I#S1#Pkr+f=Fm@0hpe*L)Yx%K2R&Yoo7JY>Q0o?O7HJAgg; zEi7;|2XOxY`6w{pr{TeY8z}u7gnonP z1}+Qiv2Soj{f02l-%XGjA*qGg!m;o04MywVxXu84gWdBDE`F-opcJhQJ1j%`N{JGg zAISX{1;obVK4g$2-(t1ja*H@gkcyGi+Ux=7*?Bgy8IqgZqI`?zBEQ9RkyULWSklON;0Id(_VH3{;$Z*yF*e}mx7Fi*tg zae$kbN9RcOEYJ1ZhqJ@E8HemVU@A>uaCwlT&^7c42QoXiL9!inwKHke_pa* zUOy~l$Oe{k+7*awMb&P_CCK3fB3p5y+sY?8i_`!~h8>7(#a-B~bQe~IndumLJ;{(Y zEJm7*-tkmc#)V6DZ``bkp1yqsJTFjmh> zlhYmJ|Aa9En$ld*t4vzD_D9_XllEECHJ=mw4*E=OmtS@6)9E zC#fL65xE0TtM^4xZEiO8u8512b*{|;Ok}6Dlv`q!8gx5fCbJ~tgVibKX1f{YgayQQ zW7CPN5yj?}p5-G^#|T6Xh8Rkdigd#CEqV0gfIb4CGeC~p5r@z?4^iVxO<}tH1K-pB z0f9Rhz-&qQ<`Rz%ST4=)lKP}_a(RFP&Q6oF0-8U->=&F}6S}*F*({)Q)(4nX z>L$N9sH=lX{mOE3MSwW;B5}Vs$C~~9CV3AzYJNHl4lQ9nvxrvi?O3oPqsbOWhtzlXo1iv(%RX z@O;eo>67>4?G;ci6SKa6njfnmb7EP)fU>ft?!mJ*?f7wm7n16>s7u)6%@?9PRXLFI zk))evuw5&Wkg0;uPoQWnjItYLwm;KBlu=ok#=$3;+{?l35mBlhtNi7NJlRd_WqvDV zxo-6>zUzVQ+yv9p3zEG`enb+S8c|Lac^Khh%+p*vD`nE* zw|drH=s@m4$qF>LOpyApUTIs&f>9CpffTRwN!`XeaXwnrd_2aNmq33yN7koB%JGvQ zYY6-Zo%XF`S6lrIqK}XLIVQFM?iGoD^3;zfENx@k@%@sk#xgS_$?p+CQ;^ole98UM zq$bCB1j!+Bb1@Me}K}JH8r>X0eo+YhyJ;XjrzH$t+~uaVc@nv*5^jc$t?SO7m@zh z?w_xr1Hbeq?R*z-Z#k28@_upe|)lK{k{BrHi;kRM#AiDrhtVx&@+BIGP>nRiL** zdK=ezbuM}uq}l^{E}9NiS#E{``0f-BhO&|=Xdcet^CTKZq1#;|>oZ^qpK4Fx>eXp- zrNc}vC@15rv!f%@Q453_3T zXjcwJM&(kZldH(+T#B@G6&aIDkLOk#4Rc7v)l<)K%o- zT#9se6}dE*BCTCTF3Y7z4_A>Zaw*c&Rb)~wMS8i4T$M|a-gc3o;fhwfGS}gHwR5;$ z3zeQ;$#Cs+7{hfK4A*N@YyBePD7j14Zw3(;I7FNd&U&(QEkIXpTu95ej7pQUEn$b6 zgXI&ZlH-Df?R$8_QvY&oYO!Bn9B}u^`t{}HT3g&p(`14}*iq$FF82rF;j;BR4B6Vy z{#~zj} z6@FQ8xIQZDv%uJ=JBH2If9nv2TG`Ia<%YXZ|UmR+cxVxF93Kn^^t`4c}v4-&H1 z|5nK34`0ZDUd5^6iKEl2C;Zc1MOXjK5h-jY^1P%Hg`Iqu3Y$rSgv2TAg(DI&jf^j^ zM95PPQ%IQF0(uo=hD}GOR|g+fuYSx{D$^t-s!fyVaUYtm_H|i*5!O7<2A#>e4^};Q zxlfwYydJN}>ikFrnG=yai=4DuWfgNddN##rst?cm5VUu?2w6(cw#Zp>*)B`6yret> zqxeV!{y2f{)yB{W^iHozweh>DP=<`}QGZk809mO<3kM--^b3gozB z4h4#_Kof`>tUB8z2-}qMZZ~RuDCDh+0>z~6qVRz7Z z^Ubhe*c5ZUQ^g$nZ_4WWSOr-VV{b3;*}Jmu?FHSbdN3;XfzMJ8MbqpmBX2K#9u<;B zwaJoEnjvpTYt&)@hCj8>65i@LM`IL_N6 zh9qa$*qJOTRcHgu*%7}gZssp??gL}JOR|q0W+YL#8WwI-fwwvSZx0^cO+=MCR#{>$ zA-=T!EnE=e9iqvO!`wh`K1GWXJh$Xw9KET=}O#f7})5KB7tawFT4Zj>@6o3%acwzk%MN!K$qj|u)4 zz8w6E7)|*tG%yofRZb=b%me47$%vp?0N)M&KXKcf7l%bDDIp`V(JP`d{Uq79b83UYk?l^McyKUp`Jn ztC%X$D|hIX8VBUuUOqZvsBUJLoK)z%DugAkPrVlPN$~=f`yMnJ1&v07Gz#7yjnmZK@uoTDTZHQry2l2C7uqa)PTqbbyzMM^h1`0T0@$o;Zd5?OxDjYCu6M;V|bdJ!B3t}Qcvdi z#zxf)DWj(atE8Zjn@Lp0=dIhv5;7*_W0~$7!8)apQS%)LH}GjSPAozqW;EQ%KKVIM zJCAvu!zAdnZ0S_X}}S-fbSAF-M;S(H8ln=;AYlyjjeXVWUrfTo;*O*xr9IF1u* zBGK%|jLX%O$63yq0uF2eK)V5FKm*R84dC5_-#K9eo;X_FbCEWo((ai6ZJOZio(a&V z2_fC{L~!>^fYwcLv~B{lZi2IW&eqPRt$Xr_y60?dWTo9R5}Gp7+dU(pDI-I==SgSx zjD!Y^bTnWjG+-ocz&nzaS_nt)Q+)J3DV38)CA(K7=oQHt!MBM*Z85**e91qC{~&Y_ zL%{q!$&dqtW#BXbQkM$Q8eCp$LwSefQ+VEeyumNxx#wrtR|X|8@Sy^89dTvsrJEa1 zN2wtA|E?6=MyaB;F;p|?bsbet9jy-4=`*O)hvWLVax%u!=$UCU z%+lwH9A6JTVlS^Yk5OB;k0$ykvdnHisjC!db&aBTpqaKbb(QK!RQjaeXGYaa>qS3} zpdNlo75zCd$){|S+yEx|0O1En##)kOMB(1pvvY}GmTN`2)XRA?xav?*(|5>d`g8;* zYDhFs_IKRF#L84v;7Tu7>d7wG$4Wof7=AZFPd}ZRU4N}VOM1jxb^uzo-)`B*(6SHx zEqjIV!UOP{vBv{iwi<13C9}N&pkn}<3rT=IaRq2`w^WXJpP5j;=XZe|ut6Vd{wNMiHszF@Li{|yS#LR0Bs9~n9hJRZi-Mk{a z5iGxGGiYuznqRcCM$nv4wRxc;C{)}14K~N6o@PQ0)&|q9{b!@BukHdND{LW`LSHTN z_tj)kc!<%N`Nc$-UmODJ2b9|{4pDR@2KvQkoqlnM(hh*_E#n)abb#NTK*_mgMyE;7 zXIAloW>#^6o}+i*`attspyv^^$Ol^F0=+;t>3yJOF3^hzy3Gf=%>{aiUhCxpRk%Pe zBj|1)=x!Hi6N1+GKx81Rd~!4!A(?BIpMn=m!_*Jp}#Y1O4IxZAZ`{ALx(^^geYc zRlT4oRh^(62%6yo&2WJ}K+qf?XpRf?A%Yh8Knq-;o%DiSA84@)w2K~=^MNuh&_@Wm z-3Pke1^O64cltngxp$8NDsY2YSo}`W!(| z`#?{-Kzk7Mf)Dh93$zzOulPW(xIkYZ=yf0Hbrzj`9PnzKwl$huMf1>1^O?&V!{Xd$^|-rq;GwoZ>xH*=J?5n`N_geV=3G^ zDU#NSMji(-^7y5y{uL}1zOWYyJ7KZ#zO`7e^C!Q^!naOZS3}QWE}mYTUlRBgKmf&G zw?-Yga@j-K&P3Zu$wxHJ8oL*B4SWLYi(LWH+^d8Jst~|E1BfRGy=mL^LN|h3qmsq7x_7pd~SpZo&f91X?Xy{H_ogcQtC$M7qrkiAVHZ zApGj$jp(~TWZeZLdbJ7wMZ4q|NaBFK_aefSl~HfMt&IBJWxmf{=KBWk93N;-zR#2v z`#_8Hy{2@#4|BV~$j_>Yg?1z6Gs7s<3Ta&b4T`ZUU;hs=zv5sj8MjjM}+^bdVKbKN-hDb=v$X33_zF$L8B8KYc$rk=o2|mZ_=Lgs?i1 z_zpF4SHAvWtemX#UoN>^plciT&H1sAy!tCK1Hhg6>isNFcul1?aBpQUkFuEGc?FZg zHbBbmW=i`5l=KS`87#Q6fYaxMb7}~jnpBW&gdWd-Dnf(!pbY4f&{AUJ6agN(*%qOs zY-oOn;9s;d4Mv4#)Gxgt1g&<%qx>B?wg|Agd)dy2HI%A+*{*>e0HlD_j?C7YQWvQ8 z6cEqV`ZfWrZwjq%`G3>;+R*yi*;?;NgI*gNS{oV)0(HZNb>!4qK&{7gB8-+1HA^S8 zq4l*{>-+FVwuVM_D(w(fZ&j?<+Qq4g_3>YAL{g{DT4!p^^v13G@BgR zB89cBAnIJfri;;peFdLTyO$m#ccBt?h9zHT!x-Aab*WEWoO)0SdDA*84G@P~>Csn8 z^pQJrXImfn4s9M%yoN5EaxvnRK0K*YAFU5v-+s>xJy^V4Lk-GH-r!6t^5At%v>H1ah>=E?GlVH^}2wVM+kriO)S0+=Rv9gq;JzE+>k zML!*`Q1!J2xd>Gs26BC)R&yzfPz?YB%$k!F-|}v&wWYhv2kBZmU*`w(y9b@-NN{H* zGvSWs4B8pBGo%OIX!ciJB8#0(4Qi^bl&C6nFQc^s8WdI%LYS16qTf~jO!F&R!nif$ z5at-KFe$C2Q7cRsv_n>L3PPw9giuu-!n6b$6t?%mdT2eUZ~298Amn@Y!YpyFO4H*e zyu;4tMSB{JGh{gJusQ)9#v`vbY8Riv`tbOzr&15Ou=uTwbxlVjBwDUwfHr`-ieI^m znniWFieI9+>^;d(tt5%x?achA0OQ|~@f}gUUz(J0rE6+u`igNC<_KAZd7YX9Ct1a| z))i0c;*%0fhTo&gAJNnU&Wx96bcg85E??))B!SmMLQoP_r&&l~GuXUJwiruDscA9( zGphU*<)7OMfd-oc95MFqM1e+h5Qz2+(b$QIDu0V>r2%mYMJVecsn3`poT8mVoyp`F zo>tG-w}7;`^Q$ewPJc8X{<@j{rLGqxh8hL*wvSRUjm1oBZTN0rLK|Wfn++WTKqIEa z_zXJ)dKjK7Hz#P>2jh;igQ4u;EM*5nS$M91T+L~xh$X{NB@ZM@;)RWZP!&Z~7AI0W zSPskoX#b%(*r#G6pUl^vkEF@dcwTxLlYWB@8NNh-dI)zMCk5xtQ}zy~uoMKdm42y3^5SpGHro4Yip7WZ+|U|(PNr86CUg=9qZDr&>QVVD^bhB9d+DhdQpiu$RK$F~$YK+G{h zAd)VcjvD+Coq-Es281(dWGe1RaC{+D>2DM6!J!z!Et4&hjT#U!wo<`@az*#Og?Mo% z5o8dRhNRYDt9gOKhzIddJep*=f6!jOVBSBz?^`;lZ=SzsAN=~u>eq_*gE!UA1F__X zH4%SRKXB#24OvDL-$&PL;CSi4lhbbdSV+mZiaZtXUKqY{x0qQu@uyGOppMe($1}UL z9W|!s?;J@uQ!C%doC;fX-#D&>f)G|Pj}tDRG*)mVu0$O6u)*)x!cxlUzU;Q>AHJtz zb;vk;tG)7bm)k=!vyu38`Hp_#5?iCG#m8mkcHnKu(BP|LAK#C(dM9mLOC8&E@~LX$ ziAP%-#cD;PwY?;b?A@k=^I!Mx%YS43p&q^Dn>avCS(%^Wwff7uy^ zHzm(iXIFg|HC*vZHBR{dp+wLNz!z zeVN@mz*dJE1{A@*!nGn6MDY1AA%^`61WhK=2Kd0(wQyci4PQxhZsy-;8W0_~Me^GmJ8*>~p5sLM>%T&EMPhrN#Lu+BEtVklN2>>F6gVERG~ zDQ~3`;BA%aw(BSTexA{8w=ZmBI^Q>S^+ADI<`cvFp?Gm#{!{_}X)e5;5OEQRI>UF@ z-8M|;J*$Z#AuxikC}x9e;7kE`rs3ggB*ih~8lasDYl|^VF&(HfNYnmnXlI@#%RVU` z*2ac&j1Z=o1OJmU-SX3Dl!m^>=*~QOwZ^zBZ7xwxmtsM-XwN zvw%E#JOF_I0fr!P*{J7qaJ>ABz!