From a45dc36c1fe9e0bc97f0ff73c5eca376dad9819a Mon Sep 17 00:00:00 2001 From: "Nicholas St. Germain" Date: Mon, 16 Sep 2024 12:24:49 -0500 Subject: [PATCH 1/5] expose clientId func --- Source/Thirdweb/Public/Thirdweb.h | 1 + Source/Thirdweb/Public/ThirdwebUtils.h | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/Thirdweb/Public/Thirdweb.h b/Source/Thirdweb/Public/Thirdweb.h index 9ebbb1c..c965520 100644 --- a/Source/Thirdweb/Public/Thirdweb.h +++ b/Source/Thirdweb/Public/Thirdweb.h @@ -88,5 +88,6 @@ namespace Thirdweb FFIResult is_valid_address(const char* address, bool check_checksum); FFIResult to_checksummed_address(const char* address); FFIResult is_valid_private_key(const char* private_key); + FFIResult compute_client_id_from_secret_key(const char *secret_key); } } diff --git a/Source/Thirdweb/Public/ThirdwebUtils.h b/Source/Thirdweb/Public/ThirdwebUtils.h index 797cfda..d1dcd4b 100644 --- a/Source/Thirdweb/Public/ThirdwebUtils.h +++ b/Source/Thirdweb/Public/ThirdwebUtils.h @@ -49,7 +49,7 @@ namespace ThirdwebUtils * @param Provider The EThirdwebOAuthProvider enum value to convert. * @return The FText representation of the specified EThirdwebOAuthProvider, or "Invalid" if the provider is not recognized. */ - inline FText ToText(const EThirdwebOAuthProvider Provider) + static FText ToText(const EThirdwebOAuthProvider Provider) { static TMap Map = { {EThirdwebOAuthProvider::Google, LOCTEXT("Google", "Google")}, @@ -65,7 +65,15 @@ namespace ThirdwebUtils * @param Provider The EThirdwebOAuthProvider enum value to convert. * @return The string representation of the specified EThirdwebOAuthProvider. */ - inline FString ToString(const EThirdwebOAuthProvider Provider) { return ToText(Provider).ToString(); } + static FString ToString(const EThirdwebOAuthProvider Provider) { return ToText(Provider).ToString(); } + + /** + * Derives a client ID from the provided secret key. + * + * @param SecretKey The secret key used to compute the client ID. + * @return The computed client ID. + */ + static FString GetClientIdFromSecretKey(const FString& SecretKey) { return Thirdweb::compute_client_id_from_secret_key(TO_RUST_STRING(SecretKey)).GetOutput(); } } From f90422f8336d9b9653c4879feed3f49a82c0d384 Mon Sep 17 00:00:00 2001 From: "Nicholas St. Germain" Date: Wed, 18 Sep 2024 10:43:31 -0500 Subject: [PATCH 2/5] Add World override for Game mode, format build.cs, and add EditorCustomVirtualPath --- Content/Level_Thirdweb.umap | Bin 11845 -> 12415 bytes Source/Thirdweb/Thirdweb.Build.cs | 25 ++++++++++++++----------- Thirdweb.uplugin | 1 + 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Content/Level_Thirdweb.umap b/Content/Level_Thirdweb.umap index 797178defff8e86420e332efc22d1fe7647aa2de..3aab272c4e434d54cc982ac3e5ec70adda80bbf0 100644 GIT binary patch literal 12415 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 rp?d-cr$RF|tx3NJi3WoF##J11rc0_6V>pjaX^ literal 11845 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 diff --git a/Source/Thirdweb/Thirdweb.Build.cs b/Source/Thirdweb/Thirdweb.Build.cs index fe7d131..03387ed 100644 --- a/Source/Thirdweb/Thirdweb.Build.cs +++ b/Source/Thirdweb/Thirdweb.Build.cs @@ -3,6 +3,8 @@ using UnrealBuildTool; using System.IO; +// ReSharper disable UseCollectionExpression + public class Thirdweb : ModuleRules { private bool IsWin64 => Target.Platform.Equals(UnrealTargetPlatform.Win64); @@ -15,7 +17,7 @@ public class Thirdweb : ModuleRules ; private bool IsApple => Target.Platform.IsInGroup(UnrealPlatformGroup.Apple); - + private bool IsAndroid => Target.Platform.Equals(UnrealTargetPlatform.Android); private bool IsMobile => IsIOSIsh || IsAndroid; @@ -28,7 +30,7 @@ public class Thirdweb : ModuleRules public Thirdweb(ReadOnlyTargetRules target) : base(target) { - PrivateDependencyModuleNames.AddRange(new [] { "Boost" }); + PrivateDependencyModuleNames.Add("Boost"); PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; #if UE_5_3_OR_LATER @@ -38,13 +40,13 @@ public Thirdweb(ReadOnlyTargetRules target) : base(target) #if UE_5_0_OR_LATER PublicDefinitions.Add("WITH_CEF=1"); PrivateDependencyModuleNames.Add("WebBrowser"); - + // Copied from WebBrowserWidget if (target.bBuildEditor || IsAndroid || IsIOSIsh) { // WebBrowserTexture required for cooking Android - PrivateIncludePathModuleNames.AddRange(new [] { "WebBrowserTexture" }); - PrivateDependencyModuleNames.AddRange(new [] { "WebBrowserTexture" }); + PrivateIncludePathModuleNames.Add("WebBrowserTexture"); + PrivateDependencyModuleNames.Add("WebBrowserTexture"); if (IsAndroid) { @@ -83,7 +85,7 @@ public Thirdweb(ReadOnlyTargetRules target) : base(target) { PrivateDependencyModuleNames.Add("Launch"); } - + PublicDependencyModuleNames.AddRange(new[] { // Standard deps @@ -102,14 +104,15 @@ public Thirdweb(ReadOnlyTargetRules target) : base(target) "Slate", "SlateCore" }); - + + // ReSharper disable once InvertIf // Copied from WebBrowserWidget if (target.bBuildEditor) { - // @TODO: UnrealEd Needed for the triangulation code used for sprites (but only in editor mode) - // @TOOD: Try to move the code dependent on the triangulation code to the editor-only module - PrivateIncludePathModuleNames.AddRange(new [] { "UnrealEd" }); - PrivateDependencyModuleNames.AddRange(new [] { "EditorFramework", "UnrealEd" }); + // TODO::UnrealEd Needed for the triangulation code used for sprites (but only in editor mode) + // Try to move the code dependent on the triangulation code to the editor-only module + PrivateIncludePathModuleNames.Add("UnrealEd"); + PrivateDependencyModuleNames.AddRange(new[] { "EditorFramework", "UnrealEd" }); } } } \ No newline at end of file diff --git a/Thirdweb.uplugin b/Thirdweb.uplugin index 80b008f..d5a1dd4 100644 --- a/Thirdweb.uplugin +++ b/Thirdweb.uplugin @@ -14,6 +14,7 @@ "IsBetaVersion": false, "IsExperimentalVersion": false, "Installed": false, + "EditorCustomVirtualPath": "Thirdweb", "Modules": [ { "Name": "Thirdweb", From 2fd16880a8694f11c2ad32fbc565dec014a96e91 Mon Sep 17 00:00:00 2001 From: "Nicholas St. Germain" Date: Wed, 18 Sep 2024 15:28:40 -0500 Subject: [PATCH 3/5] expose wallet handle to external reflection --- Source/Thirdweb/Public/ThirdwebWalletHandle.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Thirdweb/Public/ThirdwebWalletHandle.h b/Source/Thirdweb/Public/ThirdwebWalletHandle.h index 30ccc78..3498bd7 100644 --- a/Source/Thirdweb/Public/ThirdwebWalletHandle.h +++ b/Source/Thirdweb/Public/ThirdwebWalletHandle.h @@ -9,7 +9,7 @@ struct FSigner; /** Unique handle that can be used to distinguish wallets */ USTRUCT(BlueprintType, Blueprintable) -struct FWalletHandle +struct THIRDWEB_API FWalletHandle { GENERATED_BODY() From f5b49ce1d85507cc1d6b5499a17ca8c40d24e993 Mon Sep 17 00:00:00 2001 From: "Nicholas St. Germain" Date: Fri, 20 Sep 2024 19:30:52 -0500 Subject: [PATCH 4/5] * Add Custom Browser OAuth Example * Update rust libs * Create and send analytics for connect * Add opt out settings for analytics * various helper functions * Hide slate oauth browser from editor * Enhance oauth browser widget with events for custom oauth solutions --- .../Defaults/WBP_Thirdweb_OAuthOverlay.uasset | Bin 0 -> 73056 bytes .../Widgets/WBP_Thirdweb_InApp.uasset | Bin 396967 -> 433895 bytes Source/ThirdParty/Android/libthirdweb.a | 4 +- Source/ThirdParty/IOS/libthirdweb.a | 4 +- Source/ThirdParty/IOS/libthirdweb.sim.a | 4 +- Source/ThirdParty/Linux/libthirdweb.a | 4 +- Source/ThirdParty/LinuxArm64/libthirdweb.a | 4 +- Source/ThirdParty/Mac/libthirdweb.a | 4 +- Source/ThirdParty/Win64/libthirdweb.lib | 4 +- .../AsyncTaskThirdwebLoginWithOAuth.cpp | 12 ++- .../ThirdwebOAuthBrowserUserWidget.cpp | 62 +++++++++------ .../ThirdwebOAuthBrowserWidget.cpp | 56 +++++++++----- Source/Thirdweb/Private/ThirdwebInternal.cpp | 68 +++++++++++++++++ .../Private/ThirdwebRuntimeSettings.cpp | 1 + .../Thirdweb/Private/ThirdwebWalletHandle.cpp | 10 ++- .../AsyncTaskThirdwebLoginWithOAuth.h | 2 +- .../Browser/ThirdwebOAuthBrowserUserWidget.h | 71 ++++++++++++++++++ .../ThirdwebOAuthBrowserWidget.h | 13 ++-- Source/Thirdweb/Public/ThirdwebInternal.h | 15 ++++ .../Public/ThirdwebOAuthBrowserUserWidget.h | 47 ------------ .../Thirdweb/Public/ThirdwebRuntimeSettings.h | 4 + Source/Thirdweb/Public/ThirdwebUtils.h | 1 + Source/Thirdweb/Public/ThirdwebWalletHandle.h | 22 ++---- Source/Thirdweb/Thirdweb.Build.cs | 1 + 24 files changed, 286 insertions(+), 127 deletions(-) create mode 100644 Content/Defaults/WBP_Thirdweb_OAuthOverlay.uasset rename Source/Thirdweb/Private/{ => Browser}/ThirdwebOAuthBrowserUserWidget.cpp (71%) rename Source/Thirdweb/Private/{ => Browser}/ThirdwebOAuthBrowserWidget.cpp (58%) create mode 100644 Source/Thirdweb/Private/ThirdwebInternal.cpp create mode 100644 Source/Thirdweb/Public/Browser/ThirdwebOAuthBrowserUserWidget.h rename Source/Thirdweb/Public/{ => Browser}/ThirdwebOAuthBrowserWidget.h (79%) create mode 100644 Source/Thirdweb/Public/ThirdwebInternal.h delete mode 100644 Source/Thirdweb/Public/ThirdwebOAuthBrowserUserWidget.h diff --git a/Content/Defaults/WBP_Thirdweb_OAuthOverlay.uasset b/Content/Defaults/WBP_Thirdweb_OAuthOverlay.uasset new file mode 100644 index 0000000000000000000000000000000000000000..1cf54e33ff20183e5780c5a50fc2456ad2667c24 GIT binary patch literal 73056 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 literal 396967 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⪻$|nkOr@Jt}2++uIvYQH)9Pt8=F!7!Qb1 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

F7n_yZW8wYZo3OnnGn8U&>=Ko_#8$gTKnB? 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 diff --git a/Source/ThirdParty/Android/libthirdweb.a b/Source/ThirdParty/Android/libthirdweb.a index 65694fe..e3bedf3 100644 --- a/Source/ThirdParty/Android/libthirdweb.a +++ b/Source/ThirdParty/Android/libthirdweb.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5352dbc90c25b87ee111b22e54a6801a5ea70a7f009105e5ff019fd8377a7407 -size 87136750 +oid sha256:1e311209aa3b935090618546f4430113a75864b9455e23b9b9476765c84031a9 +size 87144306 diff --git a/Source/ThirdParty/IOS/libthirdweb.a b/Source/ThirdParty/IOS/libthirdweb.a index 8988a0c..d68a536 100644 --- a/Source/ThirdParty/IOS/libthirdweb.a +++ b/Source/ThirdParty/IOS/libthirdweb.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bee5c3774de1fa9e01c3a26ae9d69974652bf43ca16f9d27c3aeea4122fa0eb0 -size 60436792 +oid sha256:aca4fd5d371de5f1ff3ebd022a6beeb16fb707c875c565fbf63e5abec2c7d280 +size 60426152 diff --git a/Source/ThirdParty/IOS/libthirdweb.sim.a b/Source/ThirdParty/IOS/libthirdweb.sim.a index d91dbec..5abbe35 100644 --- a/Source/ThirdParty/IOS/libthirdweb.sim.a +++ b/Source/ThirdParty/IOS/libthirdweb.sim.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb48d799059dcdd5fab3c74687c3eb8cacf3a92babf8c0f375b261d98c999216 -size 60300952 +oid sha256:f10835df3845840eb8041ac7def2a215fd0057f82c4104e5497062c3614aa9af +size 60292464 diff --git a/Source/ThirdParty/Linux/libthirdweb.a b/Source/ThirdParty/Linux/libthirdweb.a index 944702c..1669b62 100644 --- a/Source/ThirdParty/Linux/libthirdweb.a +++ b/Source/ThirdParty/Linux/libthirdweb.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb423856cb42dcca0da05a0d7345b9b2dd22bcd95dfe090da48b26a7251c7927 -size 92422556 +oid sha256:8c2c127fd260c182a027a33f8e15c2ca71f158338ea56bccf9f150b95174dc2e +size 92429216 diff --git a/Source/ThirdParty/LinuxArm64/libthirdweb.a b/Source/ThirdParty/LinuxArm64/libthirdweb.a index 1e1bd58..6b1a0a1 100644 --- a/Source/ThirdParty/LinuxArm64/libthirdweb.a +++ b/Source/ThirdParty/LinuxArm64/libthirdweb.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83a2d7b221328c40550d9b20c5c08ff3a380885e3716977123288276a4b922df -size 93387736 +oid sha256:9618e0028b7b79a8b60098a338d656f6b8d7b1cddaafff615d3879d101d90c35 +size 93394062 diff --git a/Source/ThirdParty/Mac/libthirdweb.a b/Source/ThirdParty/Mac/libthirdweb.a index 26a82c1..5a9db54 100644 --- a/Source/ThirdParty/Mac/libthirdweb.a +++ b/Source/ThirdParty/Mac/libthirdweb.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67e9efff96f030926f730a87e7616f0e36772e5c00e6a6dd7718260a4fbf784e -size 121269040 +oid sha256:d8a4cbcd505ab63d93e027978e17f5807152ee526c53e3632bd7bae188fdfcb3 +size 121257384 diff --git a/Source/ThirdParty/Win64/libthirdweb.lib b/Source/ThirdParty/Win64/libthirdweb.lib index 284ff42..e991ac7 100644 --- a/Source/ThirdParty/Win64/libthirdweb.lib +++ b/Source/ThirdParty/Win64/libthirdweb.lib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:daf40656de3681027435b7d3e23c0e83253e9d2e9aa68e97395644b85fc0ca45 -size 91587264 +oid sha256:503601925637c00032b1ffd2b943baa624de58643a8155153eeb5224123958b6 +size 91595106 diff --git a/Source/Thirdweb/Private/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.cpp b/Source/Thirdweb/Private/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.cpp index 970657f..f4229d8 100644 --- a/Source/Thirdweb/Private/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.cpp +++ b/Source/Thirdweb/Private/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.cpp @@ -3,11 +3,12 @@ #include "AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.h" #include "ThirdwebLog.h" -#include "ThirdwebOAuthBrowserUserWidget.h" #include "TimerManager.h" #include "Blueprint/UserWidget.h" +#include "Browser/ThirdwebOAuthBrowserUserWidget.h" + #include "Engine/World.h" #include "Kismet/GameplayStatics.h" @@ -16,7 +17,7 @@ void UAsyncTaskThirdwebLoginWithOAuth::Activate() { - Browser->OnSuccess.AddDynamic(this, &ThisClass::HandleSuccess); + Browser->OnAuthenticated.AddDynamic(this, &ThisClass::HandleAuthenticated); Browser->OnError.AddDynamic(this, &ThisClass::HandleFailed); Browser->AddToViewport(10000); Browser->Authenticate(Wallet); @@ -42,9 +43,14 @@ void UAsyncTaskThirdwebLoginWithOAuth::HandleFailed(const FString& Error) SetReadyToDestroy(); } -void UAsyncTaskThirdwebLoginWithOAuth::HandleSuccess() +void UAsyncTaskThirdwebLoginWithOAuth::HandleAuthenticated(const FString& AuthResult) { + if (FString Error; !Wallet.SignInWithOAuth(AuthResult, Error)) + { + return HandleFailed(Error); + } Success.Broadcast(TEXT("")); Browser->RemoveFromParent(); SetReadyToDestroy(); } + diff --git a/Source/Thirdweb/Private/ThirdwebOAuthBrowserUserWidget.cpp b/Source/Thirdweb/Private/Browser/ThirdwebOAuthBrowserUserWidget.cpp similarity index 71% rename from Source/Thirdweb/Private/ThirdwebOAuthBrowserUserWidget.cpp rename to Source/Thirdweb/Private/Browser/ThirdwebOAuthBrowserUserWidget.cpp index 1087382..9d26121 100644 --- a/Source/Thirdweb/Private/ThirdwebOAuthBrowserUserWidget.cpp +++ b/Source/Thirdweb/Private/Browser/ThirdwebOAuthBrowserUserWidget.cpp @@ -1,12 +1,14 @@ // Copyright (c) 2024 Thirdweb. All Rights Reserved. -#include "ThirdwebOAuthBrowserUserWidget.h" +#include "Browser/ThirdwebOAuthBrowserUserWidget.h" #include "ThirdwebLog.h" -#include "ThirdwebOAuthBrowserWidget.h" #include "Blueprint/WidgetTree.h" +#include "Browser/ThirdwebOAuthBrowserWidget.h" + +#include "Components/Button.h" #include "Components/Overlay.h" #include "Components/OverlaySlot.h" #include "Components/PanelWidget.h" @@ -20,23 +22,25 @@ TSharedRef UThirdwebOAuthBrowserUserWidget::RebuildWidget() UPanelWidget* RootWidget = Cast(GetRootWidget()); + // Construct root widget if needed if (!RootWidget) { RootWidget = WidgetTree->ConstructWidget(UOverlay::StaticClass(), TEXT("RootWidget")); WidgetTree->RootWidget = RootWidget; } + // Construct children if (RootWidget) { + // Construct browser widget Browser = WidgetTree->ConstructWidget(UThirdwebOAuthBrowserWidget::StaticClass(), TEXT("ThirdwebOauthBrowser")); - Browser->OnUrlChanged.AddUniqueDynamic(this, &ThisClass::HandleUrlChanged); + Browser->OnUrlChanged.AddUObject(this, &ThisClass::HandleUrlChanged); + Browser->OnPageLoaded.AddUObject(this, &ThisClass::HandlePageLoaded); UPanelSlot* PanelSlot = RootWidget->AddChild(Browser); if (UOverlaySlot* RootWidgetSlot = Cast(PanelSlot)) { - TW_LOG(Warning, TEXT("ThirdwebOAuthBrowserUserWidget::RebuildWidget()")); RootWidgetSlot->SetHorizontalAlignment(HAlign_Fill); RootWidgetSlot->SetVerticalAlignment(VAlign_Fill); - } } @@ -60,11 +64,11 @@ void UThirdwebOAuthBrowserUserWidget::Authenticate(const FWalletHandle& InAppWal { if (!InAppWallet.IsValid()) { - TW_LOG(Error, TEXT("OAuthBrowserUserWidget::Authenticate::Wallet invalid"));\ + TW_LOG(Error, TEXT("OAuthBrowserUserWidget::Authenticate::Wallet invalid")); return OnError.Broadcast(TEXT("Invalid Wallet")); } Wallet = InAppWallet; - + if (Browser) { FString Error; @@ -77,8 +81,15 @@ void UThirdwebOAuthBrowserUserWidget::Authenticate(const FWalletHandle& InAppWal } } -// ReSharper disable once CppPassValueParameterByConstReference -void UThirdwebOAuthBrowserUserWidget::HandleUrlChanged(FString Url) + +bool UThirdwebOAuthBrowserUserWidget::IsBlank() const +{ + FString Url = Browser->GetUrl(); + + return Url.IsEmpty() || Url.StartsWith(BackendUrlPrefix); +} + +void UThirdwebOAuthBrowserUserWidget::HandleUrlChanged(const FString& Url) { TW_LOG(Verbose, TEXT("OAuthBrowserUserWidget::HandleUrlChanged::%s"), *Url); if (Url.IsEmpty() || Url.StartsWith(BackendUrlPrefix)) @@ -91,17 +102,19 @@ void UThirdwebOAuthBrowserUserWidget::HandleUrlChanged(FString Url) FString Left, Right; if (Url.Split(TEXT("authResult="), &Left, &Right, ESearchCase::IgnoreCase)) { - FString Error; - if (Wallet.SignInWithOAuth(Right, Error)) - { - return OnSuccess.Broadcast(); - } - return OnError.Broadcast(Error); + return OnAuthenticated.Broadcast(Right); } return OnError.Broadcast(TEXT("Failed to match AuthResult in url")); - } - SetVisible(true); + bShouldBeVisible = true; +} + +void UThirdwebOAuthBrowserUserWidget::HandlePageLoaded(const FString& Url) +{ + if (bShouldBeVisible) + { + SetVisible(true); + } } void UThirdwebOAuthBrowserUserWidget::SetVisible(const bool bVisible) @@ -109,18 +122,25 @@ void UThirdwebOAuthBrowserUserWidget::SetVisible(const bool bVisible) // Mobile webview needs to be visible to work if (bVisible) { + if (bCollapseWhenBlank) + { #if PLATFORM_IOS | PLATFORM_ANDROID - SetRenderOpacity(1.0f); + SetRenderOpacity(1.0f); #else - SetVisibility(ESlateVisibility::Visible); + SetVisibility(ESlateVisibility::Visible); #endif + } } else { + bShouldBeVisible = false; + if (bCollapseWhenBlank) + { #if PLATFORM_IOS | PLATFORM_ANDROID - SetRenderOpacity(0.01f); + SetRenderOpacity(0.01f); #else - SetVisibility(ESlateVisibility::Hidden); + SetVisibility(ESlateVisibility::Collapsed); #endif + } } } diff --git a/Source/Thirdweb/Private/ThirdwebOAuthBrowserWidget.cpp b/Source/Thirdweb/Private/Browser/ThirdwebOAuthBrowserWidget.cpp similarity index 58% rename from Source/Thirdweb/Private/ThirdwebOAuthBrowserWidget.cpp rename to Source/Thirdweb/Private/Browser/ThirdwebOAuthBrowserWidget.cpp index 40bfbaa..f100869 100644 --- a/Source/Thirdweb/Private/ThirdwebOAuthBrowserWidget.cpp +++ b/Source/Thirdweb/Private/Browser/ThirdwebOAuthBrowserWidget.cpp @@ -1,10 +1,10 @@ // Copyright (c) 2024 Thirdweb. All Rights Reserved. -#include "ThirdwebOAuthBrowserWidget.h" +#include "Browser/ThirdwebOAuthBrowserWidget.h" #include "ThirdwebLog.h" -#include "Async//Async.h" +#include "Async/Async.h" #include "GenericPlatform/GenericPlatformHttp.h" @@ -14,6 +14,13 @@ #include "SWebBrowser.h" #endif +#define ENSURE_VALID_BROWSER(FunctionName) \ + if (!Browser.IsValid()) \ + { \ + TW_LOG(Error, TEXT("OAuthBrowserWidget::%s::Web browser invalid"), TEXT(FunctionName)); \ + return; \ + } + const FString UThirdwebOAuthBrowserWidget::DummyUrl = TEXT("about:blank"); bool UThirdwebOAuthBrowserWidget::IsPageLoaded() const @@ -25,6 +32,20 @@ bool UThirdwebOAuthBrowserWidget::IsPageLoaded() const #endif } +FString UThirdwebOAuthBrowserWidget::GetUrl() const +{ +#if WITH_CEF + if (Browser.IsValid()) + { + if (FString Url = Browser->GetUrl(); !Url.IsEmpty()) + { + return FGenericPlatformHttp::UrlDecode(Url); + } + } +#endif + return TEXT(""); +} + void UThirdwebOAuthBrowserWidget::ReleaseSlateResources(const bool bReleaseChildren) { Super::ReleaseSlateResources(bReleaseChildren); @@ -44,12 +65,8 @@ const FText UThirdwebOAuthBrowserWidget::GetPaletteCategory() void UThirdwebOAuthBrowserWidget::Authenticate(const FString& OAuthLoginUrl) { #if WITH_CEF - if (!Browser.IsValid()) - { - TW_LOG(Error, TEXT("OAuthBrowserWidget::Authenticate::Web browser invalid")); - return; - } - TW_LOG(Log, TEXT("OAuthBrowserWidget::Authenticate::Loading %s"), *OAuthLoginUrl); + ENSURE_VALID_BROWSER("Authenticate") + TW_LOG(Verbose, TEXT("OAuthBrowserWidget::Authenticate::Loading %s"), *OAuthLoginUrl); Browser->LoadURL(OAuthLoginUrl); #endif } @@ -57,21 +74,25 @@ void UThirdwebOAuthBrowserWidget::Authenticate(const FString& OAuthLoginUrl) void UThirdwebOAuthBrowserWidget::HandleUrlChanged(const FText& InUrl) { #if WITH_CEF + ENSURE_VALID_BROWSER("HandleUrlChanged") FString Url = InUrl.ToString(); - TW_LOG(Log, TEXT("UThirdwebOAuthBrowserWidget::HandleUrlChanged:%s"), *Url); + TW_LOG(Verbose, TEXT("UThirdwebOAuthBrowserWidget::HandleUrlChanged:%s"), *Url); if (Url.IsEmpty()) { Url = Browser->GetUrl(); } - TW_LOG(Log, TEXT("UThirdwebOAuthBrowserWidget::HandleUrlChanged:%s"), *Url); + TW_LOG(Verbose, TEXT("UThirdwebOAuthBrowserWidget::HandleUrlChanged:%s"), *Url); // Ensure this code runs on the game thread - AsyncTask(ENamedThreads::GameThread, [&, Url]() - { - if (IsInGameThread()) - { - OnUrlChanged.Broadcast(FGenericPlatformHttp::UrlDecode(Url)); - } - }); + AsyncTask(ENamedThreads::GameThread, [&, Url]() { if (IsInGameThread()) OnUrlChanged.Broadcast(FGenericPlatformHttp::UrlDecode(Url)); }); +#endif +} + +void UThirdwebOAuthBrowserWidget::HandleOnLoadComplete() +{ +#if WITH_CEF + ENSURE_VALID_BROWSER("HandleOnLoadComplete") + FString Url = Browser->GetUrl(); + AsyncTask(ENamedThreads::GameThread, [&, Url]() { if (IsInGameThread()) OnPageLoaded.Broadcast(FGenericPlatformHttp::UrlDecode(Url)); }); #endif } @@ -85,6 +106,7 @@ TSharedRef UThirdwebOAuthBrowserWidget::RebuildWidget() .ShowControls(false) .SupportsTransparency(bSupportsTransparency) .ShowInitialThrobber(bShowInitialThrobber) + .OnLoadCompleted(BIND_UOBJECT_DELEGATE(FSimpleDelegate, HandleOnLoadComplete)) .OnUrlChanged(BIND_UOBJECT_DELEGATE(FOnTextChanged, HandleUrlChanged)); return Browser.ToSharedRef(); diff --git a/Source/Thirdweb/Private/ThirdwebInternal.cpp b/Source/Thirdweb/Private/ThirdwebInternal.cpp new file mode 100644 index 0000000..38da0e6 --- /dev/null +++ b/Source/Thirdweb/Private/ThirdwebInternal.cpp @@ -0,0 +1,68 @@ +#include "ThirdwebInternal.h" + +#include "HttpModule.h" +#include "ThirdwebRuntimeSettings.h" +#include "ThirdwebUtils.h" + +#include "Dom/JsonObject.h" + +#include "Interfaces/IPluginManager.h" + +#include "Kismet/GameplayStatics.h" + +#include "Policies/CondensedJsonPrintPolicy.h" + +#include "Serialization/JsonSerializer.h" +#include "Serialization/JsonWriter.h" + +FString FThirdwebAnalytics::JsonObjectToString(const TSharedPtr& JsonObject) +{ + FString Out; + const TSharedRef>> Writer = TJsonWriterFactory>::Create(&Out); + FJsonSerializer::Serialize(JsonObject.ToSharedRef(), Writer); + return Out; +} + +FString FThirdwebAnalytics::GetPluginVersion() +{ + if (const TSharedPtr Plugin = IPluginManager::Get().FindPlugin(TEXT("Thirdweb")); Plugin.IsValid()) + { + return Plugin->GetDescriptor().VersionName; + } + return "0.0.0"; +} + +void FThirdwebAnalytics::SendConnectEvent(const FString& Wallet, const FString& Type) +{ + const UThirdwebRuntimeSettings* Settings = UThirdwebRuntimeSettings::Get(); + if (!Settings->bSendAnalytics || (Settings->BundleID.IsEmpty() && Settings->ClientID.IsEmpty() && Settings->SecretKey.IsEmpty())) + { + return; + } + FHttpModule& HttpModule = FHttpModule::Get(); + const TSharedRef Request = HttpModule.CreateRequest(); + Request->SetVerb("POST"); + Request->SetURL("https://c.thirdweb.com/event"); + Request->SetHeader("Content-Type", "application/json"); + Request->SetHeader("x-sdk-name", "UnrealEngineSDK"); + Request->SetHeader("x-sdk-os", UGameplayStatics::GetPlatformName()); + Request->SetHeader("x-sdk-platform", "UnrealEngine"); + Request->SetHeader("x-sdk-version", GetPluginVersion()); + if (!Settings->SecretKey.IsEmpty()) + { + Request->SetHeader("x-client-id", ThirdwebUtils::GetClientIdFromSecretKey(Settings->SecretKey)); + } else + { + Request->SetHeader("x-client-id", Settings->ClientID); + Request->SetHeader("x-bundle-id", Settings->BundleID); + } + Request->SetTimeout(5.0f); + + TSharedPtr JsonObject = MakeShareable(new FJsonObject); + JsonObject->SetStringField(TEXT("source"), TEXT("connectWallet")); + JsonObject->SetStringField(TEXT("action"), TEXT("connect")); + JsonObject->SetStringField(TEXT("walletAddress"), Wallet); + JsonObject->SetStringField(TEXT("walletType"), Type); + Request->SetContentAsString(JsonObjectToString(JsonObject)); + Request->ProcessRequest(); +} diff --git a/Source/Thirdweb/Private/ThirdwebRuntimeSettings.cpp b/Source/Thirdweb/Private/ThirdwebRuntimeSettings.cpp index bdc8dc4..e46d0f4 100644 --- a/Source/Thirdweb/Private/ThirdwebRuntimeSettings.cpp +++ b/Source/Thirdweb/Private/ThirdwebRuntimeSettings.cpp @@ -7,4 +7,5 @@ UThirdwebRuntimeSettings::UThirdwebRuntimeSettings() { AuthenticationMethod = EThirdwebAuthenticationMethod::ClientID; + bSendAnalytics = true; } diff --git a/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp b/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp index 9132d22..62481f5 100644 --- a/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp +++ b/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp @@ -4,6 +4,7 @@ #include "Thirdweb.h" #include "ThirdwebCommon.h" +#include "ThirdwebInternal.h" #include "ThirdwebMacros.h" #include "ThirdwebRuntimeSettings.h" #include "ThirdwebSigner.h" @@ -62,7 +63,8 @@ bool FWalletHandle::CreateInAppEmailWallet(const FString& Email, FWalletHandle& nullptr ).AssignResult(Error)) { - Wallet = FWalletHandle(FWalletHandle::InApp, Error); + Wallet = FWalletHandle(InApp, Error); + FThirdwebAnalytics::SendConnectEvent(Wallet.ToAddress(), Wallet.GetTypeString()); Error.Empty(); return true; } @@ -83,7 +85,8 @@ bool FWalletHandle::CreateInAppOAuthWallet(const EThirdwebOAuthProvider Provider TO_RUST_STRING(ThirdwebUtils::ToString(Provider)) ).AssignResult(Error)) { - Wallet = FWalletHandle(FWalletHandle::InApp, Error); + Wallet = FWalletHandle(InApp, Error); + FThirdwebAnalytics::SendConnectEvent(Wallet.ToAddress(), Wallet.GetTypeString()); Error.Empty(); return true; } @@ -106,7 +109,8 @@ bool FWalletHandle::CreateSmartWallet(const int64 ChainID, const bool bGasless, TO_RUST_STRING(AccountOverride) ).AssignResult(Error)) { - SmartWallet = FWalletHandle(FWalletHandle::Smart, Error); + SmartWallet = FWalletHandle(Smart, Error); + FThirdwebAnalytics::SendConnectEvent(SmartWallet.ToAddress(), SmartWallet.GetTypeString()); Error.Empty(); return true; } diff --git a/Source/Thirdweb/Public/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.h b/Source/Thirdweb/Public/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.h index c2c1a10..5a6c732 100644 --- a/Source/Thirdweb/Public/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.h +++ b/Source/Thirdweb/Public/AsyncTasks/AsyncTaskThirdwebLoginWithOAuth.h @@ -44,5 +44,5 @@ class THIRDWEB_API UAsyncTaskThirdwebLoginWithOAuth : public UBlueprintAsyncActi void HandleFailed(const FString& Error); UFUNCTION() - void HandleSuccess(); + void HandleAuthenticated(const FString& AuthResult); }; diff --git a/Source/Thirdweb/Public/Browser/ThirdwebOAuthBrowserUserWidget.h b/Source/Thirdweb/Public/Browser/ThirdwebOAuthBrowserUserWidget.h new file mode 100644 index 0000000..4ffb40e --- /dev/null +++ b/Source/Thirdweb/Public/Browser/ThirdwebOAuthBrowserUserWidget.h @@ -0,0 +1,71 @@ +// Copyright (c) 2024 Thirdweb. All Rights Reserved. + +#pragma once + +#include "ThirdwebWalletHandle.h" + +#include "Blueprint/UserWidget.h" + +#include "ThirdwebOAuthBrowserUserWidget.generated.h" + +UCLASS(DisplayName="OAuth Browser") +class THIRDWEB_API UThirdwebOAuthBrowserUserWidget : public UUserWidget +{ + GENERATED_BODY() + +public: + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAuthenticatedDelegate, const FString&, AuthResult); + UPROPERTY(BlueprintAssignable, Category="Thirdweb|OAuth Browser") + FOnAuthenticatedDelegate OnAuthenticated; + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnErrorDelegate, const FString&, Error); + UPROPERTY(BlueprintAssignable, Category="Thirdweb|OAuth Browser") + FOnErrorDelegate OnError; + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FUrlDelegate, const FString&, URL); + UPROPERTY(BlueprintAssignable, DisplayName="On URL Changed", Category="Thirdweb|OAuth Browser") + FUrlDelegate OnUrlChanged; + + UPROPERTY(BlueprintAssignable, Category="Thirdweb|OAuth Browser") + FUrlDelegate OnPageLoaded; + +protected: + /** Automatically collapse the widget when the page is blank */ + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="Browser") + bool bCollapseWhenBlank = true; + + /** Automatically authenticate on Construct. Only works when created with a Wallet */ + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="Browser") + bool bAuthenticateOnConstruct = false; + + UPROPERTY(BlueprintReadOnly, Transient, Category="Internal", meta=(ExposeOnSpawn=true)) + FWalletHandle Wallet; + +private: + UPROPERTY(Transient) + class UThirdwebOAuthBrowserWidget* Browser = nullptr; + + static const FString BackendUrlPrefix; + bool bShouldBeVisible = false; + +public: + virtual TSharedRef RebuildWidget() override; + virtual void OnWidgetRebuilt() override; + +#if WITH_EDITOR + virtual const FText GetPaletteCategory() override; +#endif + +protected: + void SetVisible(const bool bVisible); + virtual void HandleUrlChanged(const FString& Url); + virtual void HandlePageLoaded(const FString& Url); + +public: + UFUNCTION(BlueprintCallable, Category="Thirdweb|OAuth Browser") + void Authenticate(const FWalletHandle& InAppWallet); + + /** Returns true if the page content is blank. Normally the case at startup, and mid-oauth flow */ + UFUNCTION(BlueprintPure, Category="Thirdweb|OAuth Browser") + bool IsBlank() const; +}; \ No newline at end of file diff --git a/Source/Thirdweb/Public/ThirdwebOAuthBrowserWidget.h b/Source/Thirdweb/Public/Browser/ThirdwebOAuthBrowserWidget.h similarity index 79% rename from Source/Thirdweb/Public/ThirdwebOAuthBrowserWidget.h rename to Source/Thirdweb/Public/Browser/ThirdwebOAuthBrowserWidget.h index 14b3b82..e4f18f1 100644 --- a/Source/Thirdweb/Public/ThirdwebOAuthBrowserWidget.h +++ b/Source/Thirdweb/Public/Browser/ThirdwebOAuthBrowserWidget.h @@ -11,9 +11,9 @@ #include "ThirdwebOAuthBrowserWidget.generated.h" -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnUrlChanged, FString, InUrl); +DECLARE_MULTICAST_DELEGATE_OneParam(FSimpleStringDelegate, const FString&); -UCLASS() +UCLASS(NotBlueprintable, NotBlueprintType, Hidden) class THIRDWEB_API UThirdwebOAuthBrowserWidget : public UWidget { GENERATED_BODY() @@ -28,8 +28,10 @@ class THIRDWEB_API UThirdwebOAuthBrowserWidget : public UWidget //~ End Public Overrides virtual void HandleUrlChanged(const FText& InUrl); + virtual void HandleOnLoadComplete(); bool IsPageLoaded() const; - + FString GetUrl() const; + UFUNCTION(BlueprintCallable, Category="Thirdweb|OAuth Browser") void Authenticate(const FString& OAuthLoginUrl); @@ -38,8 +40,9 @@ class THIRDWEB_API UThirdwebOAuthBrowserWidget : public UWidget virtual void OnWidgetRebuilt() override; public: - FOnUrlChanged OnUrlChanged; - + FSimpleStringDelegate OnUrlChanged; + FSimpleStringDelegate OnPageLoaded; + static const FString DummyUrl; private: diff --git a/Source/Thirdweb/Public/ThirdwebInternal.h b/Source/Thirdweb/Public/ThirdwebInternal.h new file mode 100644 index 0000000..3737360 --- /dev/null +++ b/Source/Thirdweb/Public/ThirdwebInternal.h @@ -0,0 +1,15 @@ +// Copyright (c) 2024 Thirdweb. All Rights Reserved. + +#pragma once + +// Created as a struct instead of a namespaces so the functions are not exported. +struct FThirdwebAnalytics +{ + + static void SendConnectEvent(const FString& Wallet, const FString& Type); + +private: + static FString JsonObjectToString(const TSharedPtr& JsonObject); + static FString GetPluginVersion(); +}; + diff --git a/Source/Thirdweb/Public/ThirdwebOAuthBrowserUserWidget.h b/Source/Thirdweb/Public/ThirdwebOAuthBrowserUserWidget.h deleted file mode 100644 index 04c6d39..0000000 --- a/Source/Thirdweb/Public/ThirdwebOAuthBrowserUserWidget.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2024 Thirdweb. All Rights Reserved. - -#pragma once - -#include "ThirdwebWalletHandle.h" - -#include "Blueprint/UserWidget.h" - -#include "ThirdwebOAuthBrowserUserWidget.generated.h" - -UCLASS() -class THIRDWEB_API UThirdwebOAuthBrowserUserWidget : public UUserWidget -{ - GENERATED_BODY() - -public: - virtual TSharedRef RebuildWidget() override; - virtual void OnWidgetRebuilt() override; -#if WITH_EDITOR - virtual const FText GetPaletteCategory() override; -#endif - - UFUNCTION(BlueprintCallable, Category="Thirdweb|OAuth Browser") - void Authenticate(const FWalletHandle& InAppWallet); - - DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnSuccess); - UPROPERTY(BlueprintAssignable, Category="Thirdweb|OAuth Browser") - FOnSuccess OnSuccess; - - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnError, const FString&, Error); - UPROPERTY(BlueprintAssignable, Category="Thirdweb|OAuth Browser") - FOnError OnError; - -private: - UPROPERTY(Transient) - class UThirdwebOAuthBrowserWidget* Browser = nullptr; - - UPROPERTY(Transient) - FWalletHandle Wallet; - - UFUNCTION() - void HandleUrlChanged(FString Url); - - static const FString BackendUrlPrefix; - - void SetVisible(const bool bVisible); -}; \ No newline at end of file diff --git a/Source/Thirdweb/Public/ThirdwebRuntimeSettings.h b/Source/Thirdweb/Public/ThirdwebRuntimeSettings.h index c1e5cc7..54b69fc 100644 --- a/Source/Thirdweb/Public/ThirdwebRuntimeSettings.h +++ b/Source/Thirdweb/Public/ThirdwebRuntimeSettings.h @@ -45,6 +45,10 @@ class THIRDWEB_API UThirdwebRuntimeSettings : public UDeveloperSettings /** Optional array of engine signers stored globally for convenience */ UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category=Config) TArray EngineSigners; + + /** Optional array of engine signers stored globally for convenience */ + UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category=Config) + bool bSendAnalytics; UFUNCTION(BlueprintPure, Category="Thirdweb", DisplayName="Get Thirdweb Runtime Settings") static const UThirdwebRuntimeSettings* Get() { return GetDefault(); } diff --git a/Source/Thirdweb/Public/ThirdwebUtils.h b/Source/Thirdweb/Public/ThirdwebUtils.h index d1dcd4b..45cda7e 100644 --- a/Source/Thirdweb/Public/ThirdwebUtils.h +++ b/Source/Thirdweb/Public/ThirdwebUtils.h @@ -3,6 +3,7 @@ #pragma once #include "Thirdweb.h" +#include "ThirdwebCommon.h" #include "ThirdwebMacros.h" #include "ThirdwebRuntimeSettings.h" diff --git a/Source/Thirdweb/Public/ThirdwebWalletHandle.h b/Source/Thirdweb/Public/ThirdwebWalletHandle.h index 3498bd7..7c8b63b 100644 --- a/Source/Thirdweb/Public/ThirdwebWalletHandle.h +++ b/Source/Thirdweb/Public/ThirdwebWalletHandle.h @@ -56,7 +56,7 @@ struct THIRDWEB_API FWalletHandle /** Get the private key of this handle (PrivateKey wallet only) */ FString GetPrivateKey() const; - + /** * Creates an in-app email wallet. * @@ -140,7 +140,6 @@ struct THIRDWEB_API FWalletHandle /** Get the active signers of a smart wallet */ bool GetActiveSigners(TArray& Signers, FString& Error); - /** sign a message */ FString Sign(const FString& Message) const; @@ -154,20 +153,11 @@ struct THIRDWEB_API FWalletHandle return Type != Other.Type || ID != Other.ID; } - FString ToString() const + FString ToString() const { return IsValid() ? FString::Printf(TEXT("%sWallet:%lld"), GetTypeString(), ID) : TEXT("INVALID"); } + + const TCHAR* GetTypeString() const { - return IsValid() - ? FString::Printf( - TEXT("%sWallet:%lld"), - Type == PrivateKey - ? TEXT("PrivateKey") - : Type == InApp - ? TEXT("InApp") - : Type == Smart - ? TEXT("Smart") - : TEXT("Unknown"), - ID) - : TEXT("INVALID"); + return IsValid() ? Type == PrivateKey ? TEXT("privateKey") : Type == InApp ? TEXT("inApp") : Type == Smart ? TEXT("smart") : TEXT("unknown") : TEXT("invalid"); } private: @@ -177,7 +167,7 @@ struct THIRDWEB_API FWalletHandle // The wallet handle id UPROPERTY(Transient) int64 ID = 0; - + friend uint32 GetTypeHash(const FWalletHandle& InHandle) { return GetTypeHash(InHandle.ID); diff --git a/Source/Thirdweb/Thirdweb.Build.cs b/Source/Thirdweb/Thirdweb.Build.cs index 03387ed..2745fa9 100644 --- a/Source/Thirdweb/Thirdweb.Build.cs +++ b/Source/Thirdweb/Thirdweb.Build.cs @@ -92,6 +92,7 @@ public Thirdweb(ReadOnlyTargetRules target) : base(target) "Core", "CoreUObject", "Engine", + "Projects", // plugin settings deps "DeveloperSettings", // Thirdweb Engine call deps From 996b2e0a241f81982bf265833cc4a5e2e85b179c Mon Sep 17 00:00:00 2001 From: "Nicholas St. Germain" Date: Fri, 20 Sep 2024 20:41:40 -0500 Subject: [PATCH 5/5] move analytics calls and rename platform --- Source/Thirdweb/Private/ThirdwebInternal.cpp | 2 +- .../Thirdweb/Private/ThirdwebWalletHandle.cpp | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Source/Thirdweb/Private/ThirdwebInternal.cpp b/Source/Thirdweb/Private/ThirdwebInternal.cpp index 38da0e6..2cc3e83 100644 --- a/Source/Thirdweb/Private/ThirdwebInternal.cpp +++ b/Source/Thirdweb/Private/ThirdwebInternal.cpp @@ -46,7 +46,7 @@ void FThirdwebAnalytics::SendConnectEvent(const FString& Wallet, const FString& Request->SetHeader("Content-Type", "application/json"); Request->SetHeader("x-sdk-name", "UnrealEngineSDK"); Request->SetHeader("x-sdk-os", UGameplayStatics::GetPlatformName()); - Request->SetHeader("x-sdk-platform", "UnrealEngine"); + Request->SetHeader("x-sdk-platform", "unreal-engine"); Request->SetHeader("x-sdk-version", GetPluginVersion()); if (!Settings->SecretKey.IsEmpty()) { diff --git a/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp b/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp index 62481f5..98b8e0a 100644 --- a/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp +++ b/Source/Thirdweb/Private/ThirdwebWalletHandle.cpp @@ -64,7 +64,6 @@ bool FWalletHandle::CreateInAppEmailWallet(const FString& Email, FWalletHandle& ).AssignResult(Error)) { Wallet = FWalletHandle(InApp, Error); - FThirdwebAnalytics::SendConnectEvent(Wallet.ToAddress(), Wallet.GetTypeString()); Error.Empty(); return true; } @@ -86,7 +85,6 @@ bool FWalletHandle::CreateInAppOAuthWallet(const EThirdwebOAuthProvider Provider ).AssignResult(Error)) { Wallet = FWalletHandle(InApp, Error); - FThirdwebAnalytics::SendConnectEvent(Wallet.ToAddress(), Wallet.GetTypeString()); Error.Empty(); return true; } @@ -150,7 +148,12 @@ bool FWalletHandle::VerifyOTP(const FString& OTP, bool& CanRetry, FString& Error { if (Type == InApp) { - return Thirdweb::in_app_wallet_verify_otp(ID, TO_RUST_STRING(OTP)).AssignRetryResult(CanRetry, Error, true); + if (Thirdweb::in_app_wallet_verify_otp(ID, TO_RUST_STRING(OTP)).AssignRetryResult(CanRetry, Error, true)) + { + FThirdwebAnalytics::SendConnectEvent(ToAddress(), GetTypeString()); + return true; + } + return false; } Error = TEXT("Wallet type must be InAppWallet for OTP action"); return false; @@ -193,7 +196,13 @@ bool FWalletHandle::SignInWithOAuth(const FString& AuthResult, FString& Error) { Result = FGenericPlatformHttp::UrlDecode(AuthResult); } - return Thirdweb::in_app_wallet_sign_in_with_oauth(ID, TO_RUST_STRING(Result)).AssignResult(Error); + + if (Thirdweb::in_app_wallet_sign_in_with_oauth(ID, TO_RUST_STRING(Result)).AssignResult(Error)) + { + FThirdwebAnalytics::SendConnectEvent(ToAddress(), GetTypeString()); + return true; + } + return false; } Error = TEXT("Wallet type must be InAppWallet for OAuth action"); return false;

dX=m`=5yvW_@&4VISeH4nqmULT+4rgWXuw309U2_~aadB5ameL)jY7s{hsr z7$(hlQ24JQ{ZU&Q;MHYJvMwrDvHd%2fPOk19{MC6+6gJi{`5F-+1Dt;agYdk@5fIt z);Od)tmpOrX<=CyQ-@q!XT!2SerQy2TeYTg{$BK-IvZ3!P#t>Gzt)nlJ^l=|Q#`=Q zDpS^NH{#G#_^dXFV@ztx%VfX;j;bmqIQ zGv6JZ`R?k>cTZ=&XFBqIO!E6$XTBWLD7vzfv#GpoI?6-7?K<;)qch(xI`f^>neUX& ze2;bJ`%h;+gHAc;)S2%yow&JlmX}9ozI;0K<=2_7pw4`Sbmm*9LoTyOPcP}rmsbZa z%EMa#@Nw0TW>UVNT;T4P_s&wjhc5CRlJ{Vrf7O}qu#SA6P zxlH996XJ6!KW)BdI?B65<+ajL9`cRRneTU<`D*B_-vgcb`sm1ak@y&;qkhOYR%gE3 zI`ie$S-+Y(^9|FH?*j30T4z3X`knPl)~oYW-UmAPMZR%5@|~r81$ET#4CQO9qdesE z(V5RzXFflj`TTX}8?PhZY2xF!j(n#m-)}nPhkX5XJe zAB_8Xb>u_41?k9#aettWd>Hq?aFUN@%5w?i+v6l3%anaw%op}L$;UEf-wXcLJ}3FO zJoZUvP`<4$^07|}+#g-!V;^!d<>Pa$9{fS+q9qjN5!ypuAWXGDDk5GRq~}9LrI+QH z|5I6(Bi<^R5qOUgDWgxhi|*symt{HP6_Bz5-W*w{lK;4mH!BPNYHRTB$vUmM<38Rk zC;UAoo}9Jcl4tJYIcq=QIcq=PTx{tmgNu(VeR0-)z;o7qEsMI3=dAsJ=dAsXmvkSG z+wXTxpMk0%=71ygGl&SE0~OuJ^AklWT0E5M46j6`?7>49afbJHHsQghI>TG|3i03v zO3|wJvyP^}e}!cP`doblcxz-?T0H2dGrUh~x!-<_cU8k5=23`cvNbWulMbHl;~8aH zS2TFH2ycr$$6KhDq$rMf$252zvQFX6+{Y`Q1%F3nJ<#9R$@5e%_wm>+ zJM#CthQD0$yqdTBck;sdV(phcx%}P7J0#0;#Oop340y3J&u<~_<3%~a!+7M3 zzt-=#kLQd(;5p;3M4bD0%-?lQ`(gZRMuZQ<+D1K7lz}PkG_vk}kB z3Eur|#PfE7*TkBA@@%2O`&XXZvJvkG4W7E?p01;9*~i}j4c;tyzH46g;j#Y${rpn; zIB(C-KD>O=o@x6-fkoMem){9qa5m!AcY-%A8}S-B!TTW_@z@^(>;Z|LXL0tm-#86_ z+#h~jl6`pNHF$Gn|BG9ieRwOK;N@KQ>hMl##y|Kkyf*>;n?^tDlRU8}23-Q} zw}l9w?kn8qZ=)zmafZk8oG0@X``mrJPn_U2pfqRvt$qb~&iG?INB&}0W)FW29r)w; zXU;F&$MbU{PsU^Z7_WUc;WcvLkM(ovE5LKsevHTbv3|B+<-R1X3C_`CWF@SO3- zc#ixnT%A4qc{=dN`qFBR`*_aulku28#vA<#@t$eyC*oPyL(cZIv|Q6V@CxwWMxpe1 z>VS7fgQtGOk@8$v@4h^rsA!7v!~qX`+L^!4C4Y6cxsMki`TNfS@00! z@g9hx6lZt{&0zfd0)Oa}xW|3Gk}miwL>PeDDPhX|;yzw;7kJp$0=yYgo+p2GAMZaZ z4x!}D|wcbc&wJQFSw8A zN}ebk{Bi$#_lo;?uKHgoiO2H1d)<9JSN#FsPXvEcW&4f(H+%6)OT2iASL&|&c&_A$ zueX7}QhDhQeTF=AAJ3J(lqC${4U_y$d+t7-EB?w!yf}$hJeNG7bXOl5YSP!99rL-u zdxJ8AKTioWFrWK)uH=c*fj3aXtSaO_o-6xO(E+b&@$AK`B=LCsn_J3#JXihQ!vU{X zS@-c=wO?h4$M&p3dH3;LwOT7kLOCBRUPmw)!fH(CC|4c-au(q8q{FIFPHjaB1(9{$JO}Yia*RdwfsE|%3l7ONIdo@4tI1P&(-+XRN}Ee=-nlI z@mfec9v==zxR2*bU*IO8{dP$EGW~7$@m%$Hd_M_zf6MuF*IwC+2P_c#XKkY0$8)7G zSepmle*B@&x9q5i%Pjx8>VK}}iLJeWnkU&Bm+U@&&h!QIOl^FkfYg_2sqW*|bz(m; z&(z}aw5UEihIHT6$CW(!yD8f7kMTHuRzTX%vV+~{&zZh39$rv^_Ny-Os*H3W&zZh3 zUNMPxQqGUskIP;>s0sLEdsc-VLrQb?an*jV_~ZHQTT-5vre`mIrHKjf$MP&NCwuXD ze!E5Xzl)2q7mw$+j5l{#_TVATgZ^Gq%9GV3;&b=$oXsB?ua?B)_}S&v?&CSrPsXb) z@z{*b`OpugiCDlo0k&y5nM#3uLgn7>CFJj6ZmE*8dXEA{h-t?uK^ zK%w+;hR620m&D8at^0Uiy1-+5)=c^@F*~yt52d61Se~Embsx`_Jb8Y^c&C4Sb$AaQ z^abzaVSVAR$-MEi`*=BJ`yFt=!@Ca{uZ|oa>K}3+ZxNJ}J`Wu5E^F|*KvC)Q&T;qg zmWiUA;&Fc%Ci}yx-?A5v`vdb=`}gd{L+R)bj5qj9_Tq7WV7#Bty*j-68hwF(jdx11 ze)9L2D_nFR@08RREgr@rEnY3DFXt|~kH_PK77yzjT0CABEAXfLc+B5D2YKS%TP)AK z%->(`DnC-cYhWd6$L z$zD825B8ez!U|+B9@}fin_T48;oZ^59Qt`pqo4k0Nc#LxB75;zo{U$pRQBLOU%(&t zhj%4^A-vH?a-dh}B(PsZc^z<6Jj&0hYvKd?OWzL~vvj_uc>LiXaJbo4)#=afp> ziwCz_i}zRM?8W2wHS-r#Eqn368;JE~N%ic-<9IUTU9I`*@NPTUv+J7v&g*ft>$s1{ z@nmOs+}|1RY=i8@oRx;9|jXW_P-5_~#`|VtI zSHmCt7rd(%Re?P_Altb1yYAzami+yr!NdF(@BC%FxibE8zqk8%E2wOI{?_1OzJhlL zGakQlY+9WAc)T~>86NkC+|s_7)gL8NtLO3$RXt08-WeYBQ_COYB_(7Je~iccm6!Zk zEw2vmhDHWxznj!}c!4_fGrz?9D8+p|9*?wm=nueSec291>GMgd`*<8LaE8b7d@AuG z2D*>uia*}(&HQzJ-+eq+{PF(lAlZIJhPsdEiAJK2GkNm*Ci53D!hJkf{6TM^pWJ@M zN4t;bs{LR`fyew6`M`ZVSNx&bw0Qf+XD=SF-?BW%PI4d5l{|Sp^_J{^qo%lz$MH{R z`pN65%%5$V`*^PSQ&k9M!|s$JKc2 zioeQKDEdPwY0nzWcb`93?N?3Wv3>?Dav#r?e!eB~PRjn!bZPeD)sT4HenpqNkLRlW z>PbBAe+T%BU6k(X<4Rv#wI9A`41Hn$W#20I`E!K_ED+1{*R}5BxsoTxCs>emh-VA-(@cz`xAR4%(=a<4)2;qp2U*!RQieFk+;z<`^k=n+cFEXXZX14@6dUC zPH6BR(e-0Z``OeSly=CDCzG5WT;V0lC!FDN`!Qb9ui1n5nCjq+zYE!n=g42T!>^9N znQS6*jzaAmJ=$%mZbu{^;q zJ~_|0&mY&_86J^`0|{bW2x{Ty(`eLQFS!g!AQx$bKA z;yLQ)wLjg*WBokhU_U=2y@l$cKd?X8^1AzY?0-7LT-(gMrog@BoQRn0K<29d>H{9p%6Dk`YXL#J-hpRd0y_~NAZ?G&& zi+7&Vz#sSb6EaUj{vx2f&g$T5ygecxa)!tKo#mPDpX`w*^T+GA%-^zCfai)o-v7dQ zga37(KWBIsNXE|eGwi1Oc+T{b@f`K@<}1K+rk@uje~$W@e9L|QoXL~%9Q8Bkw)=R_ zow&^OR}UV) zxA+$g7Un02x#9z;#p;=&?BOrQ%ImBSuK1fTAJXDsymf{bSI{+ojIRgpXAOUM=t2Cp zD&zzHf@DGY3%QTyC(Ck%$M%fzLbD0)F4e&qf3ve0&yl|~uMqDiP5WUEvrZ~^e%htA zT*|x}2eRcg4%`PcNs23dSt2uP@nCBh5BkD*KRLnE;_$g1Jjf1xyEzf+{1Xw<@Ew1= zhXQH85FrgFqBRlH4iO;@@78NcgtWs%NW=MYd7hJw$K*Mz)bH{B_2EQ&i17O{TZlRm z`4fFd6hzdHr~^@FqE19}iMA1SA%c&%ndobxD54QW3y5H^x)F^edYkASqTNKkL}nr* zQ6$kQqMbzTiPjUv5q(J%OthUSn&=y%K%y8TKca7mN)weKDoa$3D3)jk(ITRSMDauc zL};hcMBfwjA^MDH9MO294~X6*`kZJb(WgXnh(00um}oZ9ETWl2Gl-@WeMDp-nnIL7 z^dZpzqP|2+iL69Rh*F695hW8%CQ2fjM3hLBhiDAZE+QLIDp7x;#Y6_8u|&>3xOa~T z$7b^QKptDs(cMo@Dxe8bQ=&^mxCTyhqAT*+i;mtzm*sT}I<_RbF0WCK) zK(v?0NHl_I3SouO5%om5z`*l(4rRHt2VBj6qS0vyy8_3llyi1M1~2%JbFE~hu0BcJv@^dW! z`i2N)#t?xY)D1Wb2oL4)5!!hN9q}yEP!9A0Wv(a6Lxg(mCPE!Y5PrN9d``y%qUl7y!1)47$9>pDq`}4^Z3Z1D5#f2*Kcvm1V=@tJ zBl22^kdE>`l4-b)G(0nz2+t!wr=`%jl?cz{9O<~fM5f^$r!A#(JZ~c!Lj*g!izt-{ z&*KQba1VKqhCDb&zQsg%egF~V3k;O`AyG~u=Lf6zPFsi|~CU&C|5h=2>7!1ZtWDsxI-|eF z5P>hq75ag8ht8m_KPEyt&T$XA09nr_LisqyJ+#M4BIJeMv0i>k=O_>9IN~03>=PoC zhcX~X$P@CNCev_a8AJZa2c3jo16N%DFY9Z_G@56|G7dBZ)V zflt&2^-pfw~h#P=KNpMd9ddCD>{$RT(76| zIL-A2ItSl)9{RA6s4EfLj?3Ic=iN2eo9P^F$oFxMHbXku>4WPji0Wy@q|0d7((-D0I={WyGo*$rNKF#?VIyVqqlg9$`m|q@I zXWU0!al9&z|H@+_c`PW8-~sticO3sFLc3iixG0e0b4s!Hfx&@_fsze)@cC)#G6nPHE08a5!2bsMy5P`!Hdj$W<&0@?+)tKBptqH|z)+n{y< zD8x{xaN*)bi+hwP;So@;dcA;`{yhIqDV`5?%4w*q>#sMfHjYXenZLm6rOT8pSM9CpHEP!KY|^w@b1!c{|A4@tcERn#!XvtM z@9}oe=onLMT)erD)t1_Sz`(RYqehPz`@y*J6Q)g{F>}`Jk3X5Sc*)XbpDkbU`O2@> zZ`inL^VeIpe!pw?p1nWp`*Hu_BS()NKk?hiQ|B*Syma}>)jzLYzjgc0-Fx>RJbd&R ze1T8?2+kb%Do%Xm$dxN+uDsyOkYfN*&f>Xpdo;{b!lz4KW53rbHyV+zr0>*4U+&Cb zrE%ArrJ_=PE%16(&-2x8fi;ygeTT zJveG(Vu4?i)>ih*U#axu&AF?87N0ZEgjyX2R=9GZM&&n_&iuZ{y{hLzbJ@CY?0c&4 z(r=4zIlQ`SV{2T(hhKNucKMe!tyaI+ebK;_|8{o`DgVLjt)&W`iH;t1t!-J)?j70; z-}sy7#ew(tM|8IauAZIqTKL^z1^akkp1kMS$iQn!$@||a)VcBS8ac~N_%k&mS6}Z= zBes7%rd+AA!|HA>`S^IDMrC4yyT37YRH4VC+7?>;&1)Ab%%6Sd&+gqCuAF%J_KEl( zs*c?8xcKU#;~qEJKD6A%S;vaKQTFw>PUZ2P`9qs&&uoUvw(g4_Zf$;dhvCou1PgEJYgTvbm#g2{viYl=ANM$FxYvr_v#$8OS-j<%v{Ms$Jo8;p ze)8|@TXs41)9vMF118OiT=93WxZw#`*WEhxPA~soJH45bC-CpvCpw&O^Qgwqs*g86 z`=D)w&OW(DHVEodyXOJFZ%?H59q0M584t`(oxzg&VPv0C<$2!S-&gCk%I_(}>a(dfh{=KJuWxAUDXw;AvT@o*RIx(_P z$f8xn%e+Um)!1;o!(a6K?mAj{J@HxbUWlb+qk=Jhm#-Ec+j8#H_?)%R&pUSGOy#3p z2h6P5efzIA!!gE4Ka3me9)^p9;uD6~oSz(?M_0j25Kh)Sgxxl%v|9y0#X4?usoNpI>;z|8Q9ct#@aPr4C zH;e5Iy1xA8s=tfeYxz#~37$Vj*0fgtwCJJo3!f_&KYzFXn2T@xk+c2Qb(oD@2 z_v31`zgXpVsSdkN-TUE#)Q0aTjIWYVqsyIy8tV-Kz$q#JpWP zE}%-8A1>8i^y!87KCiVmVB^Y;qhmuCG*+xr5)S1Jzn*u`pZm)EJU?W|{yz2dKUaSA zyH)+zj=SEMs^0qf^ut+oEjK>OfANDKe=C?+W&WUhSC$+ZY##7g-`S6s_CK_J^OoNy z&->z+fmepNsF*9?Yu}%`F?!$H`{Vs5=lf}d@1*Fn(fgNwf7t)M)BkNsd*ZXI zSKhrRP8FGdzh+>*F|cEAyN-lh$sS_;%fvE0Pk+PfUBQUPQ3hh2c%NzimpZ zI40q<&BqGg|FD;Tl)vHVoe$rCP-^G#f4;eJ;O{~CRxfL}aO1ek#?eM=k8q_+K*=mA z?Bc9;;~VbV7t(8a$^A8y<*UA`JTtg##Ma^M@_Z7YlEr~X=W-hvr>4P^=p zyWeNg{ei=-P8#-L-{%|am#Vk)qg5ZxC?5Al(0e7xOnz1CgZoR{{4xD@#fxoUA9}Fp zlUq}sJu0=#eE#8@)fa~SQFZ$4Vtb>1xxJ+N{A1&veqQuJ%##lu9v`!I!tvvOR4G4d5(4m}zH$7M8AAD5* zVVBFBpWGkzwmcD&SBq=cy0dlU@9KNA=&q0{ND!; zk7!-m5TJCsJ$Kjvf!T67)%q|BF|X-y^>WVYo@38VoxCum6J=WP?0vv@x!mT-{pq(O zZ+?*@s#&s^*Js--2@8yEi#{M)xPH-GVPM3WA&9~`Lt-{q+tn)V-2rsL4)CKJCNG@;XhC6&9bm_PYh)g&dU z=7wuU-kH)q(dKvl=v{NKo$uCMbGq&Kv#MUqF|U(l`+~?n`%KRBX!3KVW#pa6TT6bj zJi72)ne$wk3^`tD_T<*EpNH+8(s0MsiO>2zYXUibeD= zR}4vqPYszoEh4w_!GrBnwl+S|>MxJGt%?r$WYXR}e_t}b_U^@BKB_!3*VW6pX5GCu zse8|59actd^IEWZ&(jlRW`4c@aL3l?%10!$Yl$0L~^Lx_w3ro?5NzHGB|32$Z_0v@scNukHn8P#wLN&Pd3=r==>+KzVvGX7w1e{`P;A+mIpf)ei5;! zTdl_Z{Ct9k4=d2KcEd3xyR^-%gYva)6=*J7>ed#&=%cao0`i~kUG@@bNy{V89+gaM zIP9S3bLHEB))UsG4KU2_7| zM5r;`aHD4Y;^oN&YAhc9e>1gtj%ZE#2VtLLMBU9XaVDE@LaHe_#hheQ!`a<^LnFiE z%_%VhOi_`+Nj}NR%JCn>imyZVAXAbl#b`6d_$3&vR;3gQ%=B=ipHhvmBmV%V2spjw zG^0|PlIw>>rh31;m(bmXvx9m?}z1%IVYJXihLjC73!J6HPH;2^O1`QpIkq zbcXz>c5#-JH1!VZmww0JWL1&OmLw-P&DP`uV;V|UZ=%BKPa@TtY>XDS5EM(l6>7A_ zXC=c78N<_(O^TWl8vb@@KxAi2N}@4A-94kqGBCjyXH_@dH1zcHY~Hv@BQ-J>X!i9t z+Kd$0fBu}}D(b&jS~I}eA&TXR6!ABI`c)Zu7DN$Z3$1Lnr@wx*y3(H_%>8J^0I8|8 z^CXInQ4}GLr8EQW+7ab+p{r!dhtyQc8%uHJ7v1HWxLb!jvJN3suOvb?P%K!~%AS%_ zrWBV)is3jp%O}%%P)UjOFP3;QP?Yl3$cp)lAW0=t>5x-DDm$z6+!B}TjF_hQ$Nce= z2HJrm?z~*<6_!tRQCruaxK1UW9DEma$pZY6z+QKibVepNh# z(#lC+sy#~gC+S9!20{m!hpg^1zH1&TN=_Tl+Efg2ftE|9_;duV)%T%m6RkhTQVr_U zT8LeDg6SN637TY}op7&KkJ=M|zJzTh6tos|;+S6W72&cZQGOV46h~wwvXDf;-;3_E zt#B=A&J{>~If`VPsCW>U{Ylzp4TkG7xPL^;o@O8`DrE2axneSxwhcXK#kC)`q39bX z%28BTSZuRcI)I*yqi6e5DXFv)2@Qi?HYm&wAD#C=wqP}t zTJ%f_iOu@*zgiELayQa@F&bn}c`Xwb^VE^r)~4F)RJBi;sSLEZfmV}*Y}%=s-H+Nm zK+W5axQ3>)RqsuEw+7Ht7?q`igZs*l;Bw?FclVpTi#H#K6dM2d*jbpat6L>*_46w8V3*ljUTtP^zbg zYO(u}6ceai6J6J&eQ?RtU*L84sl7i{E>1f;G!PK9DJL&Gn=6{=}t8qs<1|Nh|Q(<&no6u0cD(>O)xe(J1qsH+1n= zS>|d^tNM-TUvtHi>~teqKW<7K2hn*GO7SF)z38eTr8TCUP3XEgQ6Qx@q`Qr&6qb~` zyt2i`2+h{S-lDGWvdwX=vurs7NrLuXsKx6|dnCY91t}eOdE)-nj%?o`(i=0C>nx4^ z6W8_Uo@uW;IO#+76CPiEjRy9nmTX4*jSNbqSHuaAns!dY33m|j6-)MCc-ngMc*y#= z=9I0kmOne5fo74frhl;Fzd`hjL8+q)kLAMkH7Ipo>N)TZi5Qf6x}IYj zsg<7x#bsbY%_J*~?QAnR>VcPWWVCk~_02#tS#jTWTQaZFWVcao1IbX&b38gZ&Yr_b z6UDp=++Z$=F^DCp<{+qbXSau*x=LkDZl>xeG}Mpu7P{MnqyfLGq3Tfus(u#k`KdWP z=?*j)`t3)$ZJ;}PxM0m{PjbTS!A7l-QHlntgPxLjb}MG8@Ha&(dr<50tlmJi(^D2p zzMZP!9$Cx_4AgJ+l*Y3^t4`Wrwc`%~L^t5yg$2rXq$tqu^GXXh4`y-@qygj=jWm4Zl#m@64*@1~ym z^T^PRtVlcZ#n>w|(D%voJkQofcqk2>dMHS3LK?~c>QYTx(^Y-qxsfI{D-WfWuA1;z zX`efKI7pME1#6G0kkRb%fMFMM=8>o0R< zj#V}w{Y;}0F&~B2+h`Q%LA}5v5yZ70?NaZZDbCqjT_5nJC;L$w_8=+0C>N}tLA6GZ zqH7K3s1fXkwqH7nI-=j;A6szy2=H>TaJE@^%1@4`QPfjmxuS@Fta;c`D$@*ta|Td4 zOW8GF?D1!g@L&c6UNLiJD-^7@1^hLO+EQpG#7Hn|8K`E0Z`X+2Bj6t-$v9mX6^VWG zKwahVd`epm=DlLg$3U{sQyZQwX-l!s(A()MgKJ{%;~8yUu&z>^)x;hfX|Jmc_O39( zc6g~LptBuc>IvvqrO4G=<{=pMF>_W;ZvRpQr ze>mpqBJ1V4KQVSj{{bs!ST78s(HE;BSlNRF4fIVSJ^jM&L14y$IZ6<C$rPH*}bM9(y$zXpmC=)vQdjy48gpUMRfcCP{>LVYSVBTwvW z7)auJurhlGji|;Ai68JJ;ur7(F#m$*>P;lPgUqpxth|E=Srd210JaLSNoYf?F4*l8 zTORFQ56%5-sb&&qp#QH_ndP`D4;YwXB*l&*4k=ESV0L2na3oKXFKW` zJX5jqjd*CrNNsOw;TP+Jf#RGm(}J#Rpa(Be7asd(!oOgRGtkUbPi@(1BMOj8Ua3{} zQnb5aEV|0cCvzbNZ0{Y(x}IeZk>?WHok9kRh3MgfJ-3W=2uFJ>5DfJ020dkRUu;JG z3UNh0)w{q*g1H3NI?(^%MPc56xFh@soFTg0kosZ}ogv<7)rFV2FLIB=(Qe)Cu|2JI z$Ee2t>QX&2uVBIoVXlXNuE!Z}5gvmxwn(b3GFW<$Rb!F@R*gLAFQT`Iqi9Z9S2^~2qfV%KW2zB6XRHKx zQCY1(bBSo5R?^_a86WWc@GrCVYb@_L+Mdii zDl=O^$2^X6)QqE}fksF@ngpH0zZci&W%1wFh0lI8YcfV}%tQN=Z0)vku&%OLGcbR^ zdIS7N%q}pe5*pi#v;bBB8qaYAPs)dNQjE=Fh15XrLDC~T_HFFG6Z?zx)9a3?r&xnC z(A!Y-l*%)1tt9Mo3j@8!NKYxe>&3BM*_UJ4YU?*#SIKO9wDsfC4D{wFQ9JuzmXcl% zkarPrnf4lTybFB}QngZRVh>p;jX_alM-U^1)-&%sUfJ_|P(D22k?EO{x_D;|Yo4w> z*aZgLBX)RURUH~8(wfp4d_?U1!kO>`o0B#g=nYtUT9HRh!HJy@=X{UWRVLdr;g8tM z%vv^Mbd}5P=BRPb*1I#NiMBM*o4$lh*kiKqI?m`dKpI%P$+)LpPwEG{I4LS~xk4SM zt0dMJ>40=*>}55 z&{Z}^lY*!ZaWrY7t|#-zToKe`#SZRCx}IZ1Xew5OFs@G4^(4!^8Ohv>WD7q5Yt*8j z!Y^#5T6_34LG%wJ1)>q~BruahKJ3&q&|AFp^i#$|I|Ho|wIoIul!FKtMj*uX(4z26 z;a&OBbrV9xIlQU>!Zpxa#2otod+u6owC@A)BbmacVGS*-)Q@!W!1FsT4puzlXe`6d zQmn^uyHC|sB1^@Oo`fHc88Ntre-8P>D~E)j>G04Xe_vHbfs}@*pOA}z-jk=N6<(zM zT3Ok(f4Z)+3(8!um(WIxHN4(2Lstm}WG?hU9)lui1=&Dv@YBN`OA~PfXbdCS`B6|I?P8gtNc{r32Ec+%lbmxC$sj2_>SX>AE!G;x#qr<4A3XVxYdyK z45OE@UtV;ExfOP0VJ3|`Se?Kqhn@@h!1p%L8v^y{nq5y2<>0y-=-rTZ*@?54mEivt zPlRvFQ4&NB?KR36Pvmq+S^ErTRSR@+&f3;k)im@}^io(#cmWuL(4)ob2U1}lF~VTB zj&TaBD44Yyl!dzRSfhj;L+n&r?~J@I(p4f`M&VCtOEb{>YelPZ`x@xYs3JwoL+txj z{7K%}4U$TKwX1l&iCcWDF_zlEzH^a1H0@I!8J;uHJ3s}J>qrXgQ^rwGTduY?26~gI zo>IA08>;pIYgm{Opub>-fc}Cx0^&sIC1Ot;)uB`k%$7lk7 z&*3v&rE|g^d@q=*r^N2C&tFOcF(gC&mhVbkPqJ6!I4|Q! zKsU8_Ssi-M7rM&kei%xzGz+yhV)z~;3Gtmp@%_kEx=Qkpxg2Ymaa}-Lvan#V(})JZ zJHQyfS{EAkPps1j&l6S`_7wdS;}>S>@Z4d4u@@zPQV}PD&xKebM#ccbS|jmmgJ1@(cygq_876q<3VXyS#Hr)nsZtDtMO>`uOvqm10;J%pP!t6H8-fS!gG7|bjXIr1c|ZMyJyKS@^JfOBr_Gve(M z#qPE781izvi@9ZZr2@UPk6h)|j^ujteUqtP-1D`XZ=VTi{gur9fY+n6xwL)LK)R0I8{f{(PAv3K#GSSKuQA)(tqX};6cGi?1H|4xF^|TK4`V6%Jl3Yr z!eUm4xwnYrAl3tmYoNE&>uD9ngJxjnj-7U5whpbq99^u4VZ|3K6qvgs6_yF}71$^2 z*E7&B+UUXKn2|Gy8I&J%mBDpJJQh(>SVTwzI*qkm)Cy^+!*r7 zTgY!@!CE7Rg{WaF?T3$5cjzW+_TaL0<~7uePvF~Q{ET+z?tWd;;nqN$77=R1(ZxCz zS_Ikyf51=b3}&@x0mvUQUuY3@3Vy%=U3e@@!AnL??0ndJ_)oIb%wAqidB@QrWt>sK zHrv00jGacVTg5=X@t{Ymc-Nt8^cP|Mq6>@dVi@s~L{1F7V_4Tiy5zvRiYO%S62L#LeKN;NkURQ zO55nk6Y^mRk3G)HWs4>Q3M8gP%Ikw1&T}pUDtVSM03E z-aX7mVFeMu_-mNwitlrr z(}l+|vaCGxP%2%#Ezi*}Kd-BNmLK9+7%3nP?8d;i*%1dsn&_RvC&%{^ur`Q&Wg<$3 zKI>0d7j)tAUYV@;v42M+E50u3!ePEpUwCh#P2k_-nrD(Y7kfTomEb=k;)zidYkt^O zX`o+r(xc5BJqf2cC01*&E5ZIIL&rCET-H@4^8h~*5m?NcuulM^I-(|i)G}xbXf||N zd}BzgpC?E8~B1xNck2{NW;wLkfqu9~oCJpWDPom^;E>y@E5%v_7dy;qJLw?ELI4hSqA!L zVLf;}I@oLN_)dnub(O=TgS{NBeKXMSsOhN<`&2B;%&n5K)PHrA%GwQ?iq(E-uZRmn z%Ft+x4_K#$AA@xRT*10ve-wOhSXzT}Qx_h4HulMDLL%_##7;oWL~sZ9#mpLG@ST^!!}p*O0fb(Qh&(Ke*sBi< z4n2m|M9c{*Tf(xSE${?v`(0glJZobuVp&DdYz^}`t<4uJF!ywo%W{J~gr$ZCL1L&g zBAlV`?x4%^iWrsSw&ZQ4cB$OAL+s;bF=BrR6g zgs%mUR#-c<4y+;kLs$|K5rQSg$d6yl)MMRwB+iN})*P0%{S5)NB|q-WrJc(dm^swa z^~uV04PM-)_(qe!``ieKe=$4fULxW$A{Fc0u&daQ$Il48LKHFA zOGyi3jp)-D&xNmuRR?(G*wKvnGv4Y7)kH{XeGe`5xL)jaH!5G(%hS1^MWb8CcayMNN-_X<+2VT?j$q^5)r%9g_n!BIAU~!=Dh-XDRun}~iOLIwF@7m3)9jyMB;^Wf$1;MHKo8Kpuy zp|4_g3||IO7HGC;J+!EZ8v#?i(crb0!o%o{^3d+$yE)Jk_)%En#q1GtaA*nmgDrxk z6^4gx26!1@z#tWz)7*`Imaq9*@FX|Mg&2R@)eF<;4hy z`4ajwX8Q2NVFkcBY#3(w@FO4#5jBN>g(v_xHPCOzzYHGMCZJP@cB8L}IU7(B??Zos z9mBdW{5teIL|>t6uoH;JRMLg#OsfW_Yn4`B9=gh7d0|ciNuXb2B!FCm%+UU@G4L^9 zuc0N_6NdOD<~F#C`AubAc+To??-knmSJ71-*I(=vffgf@ZI2F$Q3E=T7J%$AZxf>d zT0q2P5pk`m3(vmiQAF)AcgCEO-!6ggCD?nY_~o_%>bNZ8Fx7OSFjqp#VgwO&MvXDL zi0GC0D^@9Br?Afp_8H@-m>ayM3y;^`GuOAed_MDhlXvm8Q)k@qsuT=L4PAION#6M9 zI8$`|mWOy_dB$G>v&%PgZENa6XX!$hvHF2kabXLDJ%kpC9gVPs!dtgfYo!@ zh+4YvI8v9<2lgeucMy4Q|A)QnfRCd1{ufk0Y>0?m10qF50t5)CNGiQZlOjlfg9Ji? zA%KV?ML15?Y`ZvbmPNil-z|B8rydwzXjsTJv?k^T zG7U|R{os%cSS(xz&d^q%1pGar6`-dY`Wg?^70>a2{SX;&^olqgx(|FI_Qt|z5LAah ziJg#$Ho)UvD8%@|Q-xj?o~e*;_~wX*!Fk|QtZ5_46Z>xAPr`4(^S|JoH1aeaXEMdg zu)6b5u6Br>fY_rd;$g%VjXm|w*uX1H=*IU>BHJ;ZdQA4zBV)j;C6FI+XR3&Su+ssvk4PL|1MEKN zkN;vF2D8|d#%t9M=go;63!rc2skh^(CjQjkxG$zdbF(K=6aW2Y*O`a1 zDC&e?tAElZ=hu0B#8YBSp$)iPy@QzXMK&$P6UIDWm;;dqLF|f{51tt!ArbS#*Mklb zewf&Uff*EQJCN5Fp2p+626LQlKd*JIu%)Md84qNd;hjSAp<{#|f+oY-rq}}m4ip|a zc87@lhT?Z7;c=m-@mO+n@M9L#Hy&K%sYmwkbUj-8yVz5IOc8kI@I#^J#F{!{Sx^ab z28uuvLeszt0!82@p$$BGP^6Ww@u2IWtAquCU4?E&|Ik(#4|z9O0&tJmQ-PU*wuXm> zcN$cn|B);!(@W%+RcTPQG9;n3r~a5;u=ViKVI{;f98dzk1-c59!5e!-ya$gM)Iwwg zJQ2U(9SC0FXDuM}$|~IITUvo3UWmit%fs>uJAyn0cmOsMasnL; z4iGiqCp0E((tVAGd<=G(;rU+3x}#rYkHkI$v2z9^K+7QiA$HgR0<7I3p2+Ytp4{Io z;t6N(7WBni21XH7!jffr8i6S&)~?|7;Ts}6a4k3$-VtO6ehjVvAF-1_+?4?gn-fM^ zp2l-q_qOAp?tI024!m##_b(|W_Ml@wI`W@lT}FFdk;Nd||gvLRH0&UaL(|GKo@LK_}>W<7eVsPxDv%gQc zldoQ_5gLyXeqUW@Prb^y5K@P{sMtjVJqx{rxCI&*HU?To+_?!Egx7-H5Tcm`+U@IQ zE-F$@{9(-#dk+#Q7vZHH!wFj|tQ%q%aStvc4p?1WL*5@Y5Z)9rTF?=QP@sK9JbbCI z@xW~&_lEov%5k+%n3z&VHwV6zZa!G=L&!NPX)G#>k#s`nxGXN)nl1=gbY zZUOkrerN{zz&ao|%6S-M_uvVjOhld{mkODLR{|`sQU~jTH$C_nPppZG^*?GFF8r?2tEDh)g?%md~|WX>VABI3anSV6!fbP4P&#>R*V zB#~b5<26Th=Sj^#JDQ)7#;&i?6whIeO!OuA9RFD#c-;}iJEFbp3s7@=(r=M##WM3J zBeew5M_%x)MX=)!vj@sS{zaY|-UFly5(VED>zc^3ihKgJhPay(cDo7n(8tqwd_DBz5{&F4X`QTZ+OET&tq+E0QJP!!Zx5cWC0-k zh+tqhpy!ZZ6DwuVhv)?y4EzzfA;*D?n{G{^UnxNknL^$kkrw6y*$nZdb?8W71APT8 z2L2b)k1P@Bf_#UBUfO-UDZ>lDaJCh1VZ}Ye$kO1g7+%_PHh^PQxgNurYP|2lOHZ|E zO#H!qfop{gfFBI60`@@Y8PEbc0rm~GKpkjB#71b75V*qAc$^i%>N@U|#?D6E!wS6( z4~d`XInYyY9P3)GJohd9I6OaY48fP}sYj*bEW(-=~}F{Q=(WSQ1OJoUme*Tc}>cxEo{5XD{e z*4~0X96jm=#KLp|YA(}cvnS^*9mO*mO?PeWseBJP&N`y*5? z9p-5?<|#;!$ZNwgz=Ma!0O=7KRgrmyb{6Z>(9ZCrg%*Wn$nim2>s=ZAwg-6V@YP{| z{NBNl>j_)7-|BNLtZQhhf1f}+d<_NqJ742R>UW>9n%>(|W+qF@i zFyy?j)yCMz!m|PJM6s)B%qu?5?A$ZP{Ta2mJ|-W8%u5d*?b zB72GG0(u`gSG>DIj3?{^{p%v%@-x3iObQI_YDTEIpR(3Jhtl>aek--IR5wqc)8D7TY*%nyX zaj;@A&g@ajA^WB(&&y}3tM_$Sp8|@VgJKTVIyK3vVpp*`7kGz;7d)5`R7fzU*dYU+ zwe~vRQ?JY|B0D4I0eVkxDe~yZmm<~|tC`?a#7JVkFnfp?z`0j@8t-J2DpKBfg$@2j zLkm9AyPM#tZ`N??9P{&~ukq9a?-jw*lJTTvWTZzK??k%RQ+tl!gjGb|4sWawvm1%0 zIEux(CcmXf-U-j1t9n(vQ~o+n@NsU|%0qSyuCA;m1SWavnfVC0Qt_?^_*aM);E^Dk zBeHGyL@6w+$QeP)!y+U1)q?0X+1Gf`rO26~H*lzkTj4nZ3XwO0O%dD+JHhK1uqE&$ zr}!EVy9c4I5gm&-N9ZLy-4by>JPPQ4Xm;el;D?EPu-KD|w^n$OcBZF@F(HT0lCX&) zZ-VSIA~0YI>>#0HjSK!DGGoZ3KucclYdpw4B3fi6fFtM$j}hZwM9e12pt~`DB4faL zZ{*ge`5F&%1K%Dt9{2zkWMG)O0uzi6t&dC$AOsxHJn&+t`x*~=4Dkl$1hxh%Ylz<@el%%7-@n7=8FH^bL>ShEJ?;7rV=$S4DT*f2-~=qm2xMJ>!5C;;li z3MK?@@HHNK6B&8IA<*NP9Y_Q6++xorVs+F4PT&*Nf&4)JZZyY}`igb7zxz(ua>~00 z;GO78XL`bs?+C}e8}g0<=~E{JW`)7d!=}m|0|_MRW|!BX~^AF0#~^WpFTb6W+xk z#*?$l7^+Yv1lVipYEZ|WM%*Nev4HT!f9sJ#AuT6xm|TlgNrAw=BF$%sVW2LSVkH@dST}ReZ6+21*Lw z6m|kM1jV7-fe$P{RvTcqKxw=)#1B0M1;x4rGNAY^);BPtu!>j#fG!tf3GFKGK|qca z?+o!X9{3Yf#D7>2&=Y^~qhLKiOOd^R9m8y5z5xq(D2>Kj=yN=wGr;{~rwr`ASRF(B z3eJGtfFyuhKvi%t#>HL>yphBYe&BCFDsnEMCi)XuV=1!GEHcN7J~rna_Ua0q8nxN)|AwW5 zeM6LudlI7wtP#A+BcA$08$Pvfy= zu;a1RQ|nqZ4*tYFpO|;7Ou;^2{_q|71F;e;WE?m_&N0J~3V6Vf^kv1KIo;Z-+sq;R zf;<@Bx`Vqw<=ll|xziUlkWqr2;`K>T1JMEI1-cX-H0tmjAn*gBB_YXJuftnTyvQl@ zS~$FSd1|jl<5(>a&#{6Zg?E~Gfk5_vJC}=yn*2T)yqQGw5Wcp;B{gZBm7d07OvT#+ zu!bYvmV!5jc!5){2Z?nNf$1=U7Q5PTKb+XHa<8Y}Y7yM{6B-fT9^xYCf2={my1*xb zwnA20SX#s`uy`WQg^a*oxX&C<^oRePL-LwS)NwuhdEK)ruwzUscn~MK3I)QFQjT~b>YtpXdnuflWWq6y37Y^gq8!Ly2or`!Lu)G5xoO>SdGy-EU zc36mgs*r8?#fapf#bMLLdLFzFe8;>YHo+{xtA!u(pr`S8*O5CV*PDH@)|Ag&;SzXS z8_ZhK&pq#?R_ET$es-c6g{3%xPWO7Lt& z76hx%Lf49z8E-Z5!aa5a0Ukn z4J1~(k-bN(ln~hBYdmls=!eJ-oC-e?S^?Tb#IMLe!YhNf0glFwDv=WvS-OYK@uKG- zDWStjzvG$jV=OBkcHbGhGw{@iF@!DW<<+vSz9<0RLGBk+Ma(X&Gw{WUeUf5-DLiJx z4kCI7{YCte5ZLBvJRPLlJ+#rK=@|J_8|%q zd)W~6A`d0}AH1K#3;*$WuoxH-S`L{d_}w*lo$gtsE8Gg7D_=~kI@FvECFMy~Kxm{2n(Tm6eV?0q}IKW5L@Y^#Wcf$ah$4k%X15vG@1L#+a@aS)1 zCh)h?4t}8M8PX=&H8yB~zMzqH^kzJf9p^R-Avl-InDUrmF5~eq_oA#xXgqKkm+=_T zNnFNbKud`-S%R_boPiypOj(Sp;|_3}7uwqSL5}Ryb8-l;Nc_-0jN70I1XS)chV*c~ zIE`D9hvH3|VaFqJ2CRK#&S<2WJ8-9vXUQ8Z3zBo0H+kNW(T_YHG?R{Bn2RO9G!5~e zlu2k^F^0QL!Y5)J{K_O^Om53k84fY53q!&Z4!@7fm`>QU!(~h<_-kCoS_B@WD3e+Q zJ_eV`F_=S_C^Z#7GPyd;w7sN&2mJ26mod_A?q&Gty|n8o>Sn6IeLd zUin?XUqm}{$B<2g)eiM95%p{rs{`&H3WToYDV^w!*z;kVhFSo)*StSN=_q-YqGA6LOiCpChIaxDmA&TxQ4o1B516KSVwYa;hy@2Bt`&5UI!I^n5p8olHx5FsMAVD5#Ya@i zJ+m}%2~#56;$w%6XjK~Xj5SJcqxCmM&>0dPy&sB|>`IsLA%rUGlv8+USvOLb&8fZyWX4Qejsu zxXS8p>tqJ4*f({yfvClL$Db8MOV&hgem-O9)_ZtP2E9xD#S+GSF+Rxg@=Uq)4=oe! zA)|G;hl4W75$Z_ZX5YKsm09BO+1JlANgcAnhjBYT=1sovdl7XHeEX{{v|i>(9uG;aB5OYcU^s zpG;h9Ky6@+(Fb2~DeSEv|{3?C{snQtT5Ixg6xK1V8KBi)+@bUGcL<&|Sa_ zw$a^-L`{|lcWYLX`mD5cLtJJ>-Yzb)SP4gVynM+ldtg##b-7;1EZatRnT@>%Dps4J zSM;8VPQsvz*&A`TjHtz4m_LhOGTOtdFB;oio3LBnG`HXqq2t+S(&hZoCwnHb&bXm( zwlr>@9nUPoiFRyv{LQwG!x%ef?)vxnU7#SS$zBSiz{x`r@vPnh5!a-*6WP;}bp^fk z{fcX{Ze%YCbr~DMC;Fbnwb=Vis_Y1=V1%?rZM6;0puu5N4^WY{ku#lGH%WaZS4ku3D_w>`?1r-XrKQmM2kL%c z_C1jc#dqNeaBL$oq+II82dIfw!p6CAg7ibe`Jl8tO+d|dQF;Q!*%M{A%w9YVX&)nb zd*QuD_M5!-uICjVAyS@5?o4*K@?JHD*Ej`tAu-=!F74}-@KaoOaNbC^;LdHAXlYH>{Ck6)#waGC{{MbU2#p;74+6;xWqMCSLjfEU2(0fb7#7{LiD*aRUVn6b&?lr znEX-gCg> z?mW=JU4O=N!0{X~yjotH6_HhZw;t0&=n%bkF0QHj)vq<^h}s-Y;^`gImI>-Qtvri6 zVI#|Iti5MEUB}JiVU6aj;|`5{3*#X*GwXcT&Bd{GcwP!qku48qpDh`Win8L^0Nq`~ z*fYjnhq~JA_0D17&D4qBkBY}$(xZxG-R+)|D$~q8JR{6G-kyqry=^+*LFRW=|6BOJ zLg(-};3j;Jtcg%lay{!j-FlSUDun8PODNGd%caVl7|)(__OhSB8}&q9M%Cav3$f6C z`gvh(V4W9mkbPd{9tL->E;jO9{CUCJBI{UZ`sw^}dB1VlNs@?UF$cgy*lwLCAg`jP z;9#96An#z7Gc7aFs@|4&I=auZx@Rm}>CfqCDS?Kb$Dy{c= zfeGUxZLW^5P?J3scbltv>TWhyda~jBZlq_0ab*ti-^^FQlrtgDe1%%f@BTbLwB)Eo za&s*A7I|4C@v{aK9t{8oj;A8?D`yr;n_pS~>ODuEJvj$l!n1y8WQ$6JUpdB;w1QS; zjm7jr8S5s$G68LF&q~EkCIA`Bw8X(a-^G;)>>6Z?@0LLYG^_z)BNLbl9@|}uBjRQ{ z>$JGe(gI$VVV>)7ON&}8asFl>FflL1W_GN8iGF<#@bajP70SGFuudz=J<3umVm}y< zBV%Wj@<{GH5StuHv^p?+o&gVYgTHx}911?sJx{rKqZNNfSO>*tge4;OGa@8Iat6a5at;7`G{wibeu2ub*j2ZQj}*HbY`0nr!(}DTqzYfRcLSV9AG`2SsO|^!xHK# z%@)#~(rC|f68$=t8oi0}1U~=1^$NSaXUpp5O|Y(yWW)4xj#gG32G4=}RPDUfPVRHA z=4}AK(;ZXbGKn8cF>_nAcE0?@I?@x9vnbb<7;j1QNb_jr5lJuhMPk>t&WGml818Vp zD%TDpVRGo)>nT=Pd5;RD!)a%_@C00@ow(Z_Ykn!A)*_11w-(p1cNF>@YgO=_n^0RG8@9sh0!&N<6q`SaVOv!F8G z^=Gej?=C5hCm$Z|`Qahd zQtwylW(SzD{bX8&=T%UP<5+(hUfy3O=chQHnl*2uU*j)M|KXk>aF>yJBwfPXSlV;1 z?xoOald_n5tT0L)7yFF6e)ch6v6g-@o7R;dz4WV33}6pcxBpkJ56RqV^mis`#NmdPPd7VdU&Z@>b*%Alx-foWDlX zyNDsNV!s!^(HEIJj+%5jk$I$S`Kvg4Aa(pDpRghM3lhOP13Hse0K}V{g|1^N=rkDG zv$cy}hn2pzVn5DJ6EYY0(-e?M-t*_yJJ<2wd$=`aNO}IeYw>VC(LG5^`jjeXjUkFOT7N@RmH+pxis#V8vlOw( zQh3iX%P7j->c=)m5zjHR-iT$6xh!qF*JrrIZ98MI`Vwp~8yKze{qwjCBNvi}!< zm%6tVk3+?_$KRzsh9XAxZG=y$+vmai6XbsJYpIo8U+C@_cak^Gzq;FYuRDbi?{b6@ zepi@Nyj5~hQFOkue8xy=`p(dLBL2lbY)}#rm*5HB-=pIRzUF`LPyB7_c>!cNN5`@Bsbjt3BcFjMy(Oo+dsL2d7sb&Vb2zamr&#xplXzhi0q;T6nS9>zsmcdt&$w;jFNoDk@t*}(6h0K1gx{bw2pnx%>B+i zGhKOBd0$|p8TE@nY{qeu8s^mh!m2gqmGevZ?sVt1kSkq&kMBm0zj=b`Sls-$-eZK8 zWX);SXe?>&mZ@x?n&myW;a49-+cTax#~A=;tyY}g*($}pckqJr3TFWxkYoO4`I| zBV?<5$DWhJJw$c>B6Aq?ew@R2&ZE_VaSoGujcEy9vb600;$9F zSw!#{C@V6Ktjpn5a+&Z3M5d49DffJZeC|Mm;b%tpgVBk z2(fsPcKq2<&{fj5a?Vd5GpN}?=4YKQ^qRR<*Or-wS?5Vji0G2_!ha)XU|NLBbF|t6 za~xS)$)|%v))tUIb>}kpNc#KCM|$lopO^3Mx0T#|J%E-u&5!nu-`N9CDEfVfpgXub zuDwA=-s7v!1&dsi`~F{bR~XBjlkR36>MnD!)!p%Xd)Q9O9VwA?t5vVc9S>4Z$(;>s zDWvX=)O&b51gnmIM2y2+2H8XhD{+?5|GLjx#pW8F1 zOWF&VBhki6`MAf;_iD#VU&q(A*zO749=+a&9c6z`#>!5bAABEKX1!{Dulp?^?;Kg^ z{dS#%L6dPSDbKuC!4i#HT;@-zOG|rzN=$cWO;sF^+v|Pwm;93J>TzR zmwBNP*rT>zh1Bvj|9Abw@1u|9y>{MxZ9FF_mKxVvo+R#Tvvr82uPyhhvNbA>uMJ%c z58I2cjpr3|O~y=@Z9|`c4Sm8dh;5b|Yt!7f@LIxmM}+68025#aO#bY%&L?0x@C<~H z_ixN|i@9cx5gH}>9cA%6H`Wc9k0N=@*h%3{^4L?AatF?5dEr>v|B9d9UuO8-{7Ht$ zpVXCH&u;R}T1`rCxP(W$HzqvK;fDiIH_icq0z4;&+Rg$U2M9T}T3u5Z4&N`9(7oJ1ToA}d^;07;RlIuk3J)ArJz4`COp*5i9QDOtN^sh>e*05om3wDDV_1LmTik8&3&#;Zv`AM-~ zUy#{zi3>8QoCDFt9*{|vMD}dM^9iWMk`&33Tm2FF3{B~gfSMQ!ekYG9VfWiVdl=UK z?Knl-KVW6dYE1 zNzhv-1I$4TUpW8Eh&&Q^9y;EWi1OI-L%T(vPm8}V7`m+Z`MuSMdYgj2Wewp!>N4U&;#sF)$0OU*ND^h$ml%(2htv-!wQGF-&10et zYw}2A9y(GC`w^=+=+MiGtGfZqMgpZ}Wj@pSdf>f(zXU?6RG%&`fx@P;jTOF^ZchV0 z=^!qFShJP8W26m~F|ld^rKjd@0lmgr-gXuMLbhIdt9U3s0U)w9myvlSJ8HGvI^VnG z_qVC{ys>|R6-~yIy?zi9{b$%DWm>IQ`t;9ZTuZ={}+H;MGdqCnHdmcJeJ`k!Xk5SL!RwUo7v# zj_**DZxgWl+QJj(9mMvlm}S1^e|Irv71G1rJ~UDE8MQ+%5-18324cCt7;AS@x3T8Z z#{s%G!lhiHJLl6_;`mA`dbn)kbIr_ge56~1WYvpAgq&1Lst>mH!C%wy*#K| zNshp_oaunJOr1!hLLR~+L#rOg4sFIl9|>A(NSm#DA2o0Yx7oUtjo4^1)t{1hlvNyP zr7UKO<;vO0__4s@`VCnZX;FA?^l_$q0)o_T`k9e;Oi5oVHc$Hkyv)7MGzs@=(T@2l z64zU2Av!Nw<|rbKCgiL9?|KCVp+n+PCOrA#@3=tjmhFMe@JPSX>ff;^?k;)KJCt%K z_dAIDD3I}y{vy_gMHYx*ks1*YvdomWg=1)(WjtEnJvw=gUVk7e=Gk+@hB1z;FCc;H z?n=xPTlvVG#1qz1%6iH5tm9T5&5cu|^+K?3jdPODbYfXy zU*FGew{YJOwn2LK>>Hw#AyI9Vx*o*itGp>B6FIQ|!j2@K3CRoAeTbj}>+DE6>rn9! z#a`V1u7?(**>`u#`hW#%N?an_a|95H9#+l<)-1bHmlWqo`}Y1tui#eMf9#;g zZWyLq@o5vzE0}*7#WJtx)(!E55uO8g>+W^k(CcasM&_tQpX1Tx&k@Tr?U;+gS9?&4 z`QI;RmBnh0Tyb!MKTC?191Y0Xw_9p&Yr2h$y{%TArL#fy-iw!Mfd*mR<=mr`@scZ;C}o>iy0ec= z1jmy4h)yTt;gpj1l=+)yos0t}jxw3I;8!u-{EYxkV%j=$l8mS#^&akR0A7y# z{H)yH52=#%;$b%SF zazL~e1!G9rDj6I~(jo$S_S>yAVqL{F3cuqTZKLzS(2^xV9aZi_cNBy^hlM@o|?9%U$`g2W69sjjcA2yHq7#7l*^F91MLXJvP=hv0O9N#YV+} zKU_lmt!&AANZe&4zOp5DnOgY;x`;KjeF3drqyR!g{l}DE2_ucZ1@-QMSm^ zAJgAsirzTJcbBV@yzh~rb++%)d-HFRfVtEiyz|P59&%S=+0g^}X3l=af+kiDLhmI_ zahY?H94Ng`bq!UnOu5rrefpN$o=A)*^Ofx1N_=&h6m@?r>$=$K30>Bf;bHhB6*wyT z_dT-;GXuX8Pt3tHoA5pQCnH1mLH}Z}2C|;`&OL*=PCbijm~lLT5ch(^3L%E!)?!X{ zPlXoGwQXs%Ks$IZ=miqRtp$JSTZ?OWYY3jJhqxS1-D^T^xwV*meQR+o*3Vb=m+6sj zJaL!Sc&6vyk?HAg$SN{V@(CE%1_FWO=xh_r4;E$@1&5^PWse>m$fu%)-3J%ujw)){ zvs0T3F3TMi>^qo8>m4ewnN*I!F&Rv9sMgDnmsr;n#u!#6U5bmLb}vBdt`9*DC5#$ zR9vrq;3!-josnIX-6cP7e4rxz%*xIi9Sl^XZ=JJ?a>oX{W*1Vw0=dRi%E+Y`6b5^C z88kdNxab1oYF)kpw0n*Y779%222Ms_V@7rhj>^j&3`%t^EEp9mEXpMiE6}y1KvnwR zH9Id@R1{373d0Ht$5TllaI{fg-0_b`FJj2?X}S4Ba`T7rz{k?19=U@@WEBRl923kR zJU(y)m86a-Dlq02m%0`PhvW_}$}Pwb97)$ME66WGao|L=sl47Tm_3?m;lM@RYz5Ax z3o4yl*&|SyYFDQ-b!>KSUiP58AZBn#_q>84F}VOg#9BSZj|v8ilCC}abj`e?b3x(A z>^x(NjrqyS%O<>mL!;yt$tg{mHa4zxDi|_GbZqcSIMhb5sMRf)XYxc*4)qf#Wj2Wo zJB&3TUw-XBj~w^gKmYu5$@jmV8b~n8=--3px9iPMd~`7{;yc)bk9mjFw>p{zW0b~f zgKj9FuW4|VLxXl0YNDn=C8YsGhz|%-<%z35zZeA{cg}4Y2u!-<9JBJpnvTXQ9jTz+ zi4Ml$9~~+&VhgJ1pZ`lxH<(~O$Cv06)HV*rhd)0w%T+MTdhyud8OZ`c&05SHL-^MYEzkh2uJ2wR1tmH3eV zYnfl|7pg8XFHBL!gL`7wiHzLQgA4NW$zMoJ8&gz7mQon8KtQby9dE#B`auE43+2Al z^C?xRfgkm}6Hu4DdY;nrr;GWFmNAb6s59xrq3XSrCgt&=8iqvrZOnWiP`fpK*BrH5 zm%P4byz!~x?yB!QnZVlFEyNnkB7O`(DNXjC)u*=NQ$^U1Ek0ByoAJh{ihFD(+mFd9 zrOCdeXJ#utRfPWwlg)VJQ^h?tlYNJ&0#sG!bgh4Ch5< zhBH&$(ep*f8Dq~kb0np25-F>cQ#zh+c}+~bclX~Ha&kho5q=a{JTYO4PIS4UA3lAH zrr;SPGX5`2fgdlil+tr=E?ReCAh7&DGX<=1Jtrm*w>zrmW-(LGMuOxR>aJtKu-yF8 z(aiCjgsHvokw~YRlfX|LoSWd!(#S!_a}uT-=*J8fCnq7Mx@;ypo|E_wO?EsdQQ`q! zS?46mQkTSY5(f373q&{z!k_FV{+DwSKbYKXWVo2K@#*Ldzd#pjnKkXLw5xF;r?*Qy z9l@!H_&$m7TxluA!V_1=_enUdW0cYq#P>-E{Rvk|-3DPqrYOW7Nk;_?r5odHaeSYI zu^+UuQ(RtJVXDkQ&>SmAe4m7|vKHILF{ilvzcATOxW{Jc+)oBPzE8rG^O9SOjpro( z^*M>MG#v4qgdxH4oP;T5_;9^hfb%c>$$1$5bo6{*qMl>y`NsE22+udZPa+T~DzeG+A!lMozHHcRJD`Iy**squR^#M~y* zM>*IO6VFMQ4s>ZHpvqFR<2ea)vP&-Q6W=Ehzjp&7?)zqbj?4LzCy`-l7S(|_Zm>rA_239P!Y;l}g*?$l4aaWq92duKUh~`yZj*BC=55d2RC4R) zEqgb!sQ`z1r@DG8cpY2>g6OtQLBX)Rpz-*UEP8^?pn`%C#^Y+}xj0lj%p|kg9P74f zQ{AIICZG--Xs+HW))_yp!4*1GtH5RU1}CBcKPW_Pz-9IZZ-Wc`+?_rGJ(T=ShFjPD z)r!x8YExS>8~X8sj2kUW{$_HbhjMs(cu4CKxtTmZH_Aj9&!EZf`BN)CVY--&+=4~# zbK_@CGd?%=x#`+7^%6c~KQ}zn_RpV8FjVC@6FQ9!yK)>6vBf<$!9vk4u#48>f2_R%KPlw6SD?&9++!=}kq&!n_>6mO#JQ?nb=}?)_t;{X zbBudzLTN^8{N%HLR3Ucs*nXwaitDjmXR3KM$EFGop6HAN{wq>#e4K^|3^}byW=WXK zyVkrg->E{f=@Y-~Q~}SJ#KBJUB;!{g5H{3#W>3)%MNa@Vj)+4oHY-LyRCBLGt&22N zvq%J_$A}n5M69Y5n}GBbTgy;9q*0h{b|03N`}*P7!DxhT{b{iAbY4v- z;-$@W;<01M@IFB2gLHPMb03|X=1S#)-#b0eKS>AalIiF9tK z6Jw;(39-GF&a3DIpY)(}0G$Kr4AMD|&Rgh2{u(LiNp$X|6GDk6*>$8dgU(0kY(r;T zIy=zWnNDOtp;mU#c`2Ps>3o>Zt#l5eb26QH%F;4Ad(kvU z=$uOD9y;68`4FAM=-fajwB$}Y2h+KW&MZ2I(3wu>ZaPn*^JF?tq4QKahtl~7op;f> zoX#9NGwH-N9IeEM{C~jw>X|`SWmRkc-NPTZUHa%J^=n@-@e6MZ^0WsgP6Q}ernsKY z$LJhR=e=~^Kuzz=v+zXXgcqvvyjd!=^RDp z&2;9|c@v!@>GVy5p*4=J*dX<}w1+CZcE-|w7GD%Q8UTG`327RAK29fyGKS8vbgrP& zH>^u<*>`{EpLeC+u=Bc__dIvez}UfBnZPlW-gNq`i63+nUm)JTWLcezW$$)a+y4Hm zTUUR5g9Tvd9~`Q9x%%3oI{%+^Nuv2R49=Pf;>x#Nmp%{2_vQ4zmea+mRH3%h#jb}1 z0*Ou+*VBbF(LWtwz?>z@!!Mj^cBif>o`A~7(b+3IFLwyNsv^|kG5C*EyY54)G7n&Bb6B)^;;j|Lj6&Md~B!>i($Nt zLOee_(RkHKws<#(?-{7|$+kP&b!e8c`sr(G9`@Ji*O!MGSn9_AONfq+{GW8B%M7fK z*$kYB891I!u^0HVTzaHsloD|6pZibzvv1vYQ!elO(nB|;zFHpWkJqO-O2BeA`qy`p zfax*QKRWswd3*mF=#CwiWIu4}{pkx9*E;9@i+=sBJkWo=8~=|Y5HXGw7vV!6`n?CwAO-X6g zym6D{tdxwbl+2W-X=zDKQsvpJ&b@;qvm0W_1I zMv39_>@hDouDAU}6_6Omp(cH*p@1U8fOtMZkKk2B*cpX%Cl0mh(I~)Zp5I;;_vuYO zQn}XYt(0+}9{fcIXcqVBi3n-{XCziZ9ra+f6%QQ)0gbr{v@ShoEAG=MBA8n>7M)UOIH9x1K*U_=LfP=N0 zVbSR@Ka5XoIG{&DnG^`2&pVPP8V#&X&>Z(uiX+tI3A$&A7=Q<~0vZZZ)g^rfHIBmWhwhC{HTDVI**Y&ynm+ z62%baf6GXGD}0`LQ5{K67cPdHy+;7@N*(U0#i2Ii@8U|RSwbM;pM(US-~r;Qr6DF* z9-)Rj7Vc@r!TsZtzZ(}Mh+-_39p+@Nj89Cl+`JPSi)DvdTW!MMZDT=pm@~4)wGdc5 zl37e2p^>-=?_K2HJv711%{V+XVcLxnEi6sAxwsSpOwdjR&(2N}!~@`YY@&i^Z{i9b zH|*~hFXlhoG>(Hu!Dj^i%P|^Qn{ab+$wotUEIW1{# z$-06=c*I}l~`0bCTM^o6d0?q(Cpkq63e;) zPm938sNypMe`iw_JBb~dux;vvA?WZh%3MXA^boDQG}~xa?Wt+Pql!x*GCWQrvA$bu z*5Ru7e9^0G=E3i5F^@&?*OP(k@eM#=rC(c%YK?B4r9fDmLQ2Q z%$S7-YQS{BOm#=>qL*lPBR)c0vO?jpt8K3-J+mI;;C15AL0|nVGW>XV81tT6^gRn6nHQ2?BddNul1{E%o2#UR*5+&i_Rwr{oASk*qXYPowxjCz~z=0he;B6oUv(HUy zC)5ro+zv}-rH@+qtP2A5>SD?*^x-!DcKU$g%nOp@Hu@L@W>?HYac*i*+zf9BCGWwdNYWMgrlDkt*Itzz?{>=#>+~xRCQ85%nYktNYE7 zfmMyZ!dh`+)~Nar(_ifX7)UdpArVik!Bw=%vSHwXa-zr zfze9ss&DqQ)Xq524wo2b*HNAkZ33ZD)Pm3`+!dMJFnDp>HXo-|F~5Z-snW6J6^Anm z@kwT76Twj30hvdJ6%n&mJV;tlu%5wN+2$CapaG3qAbk!_iKCjLg;_aUeGYVmiXoq4 zCp+`7Y~03&v2ORcQ8MJNbeS4G^-O!q^N}dO0O=7J-2$4MJ$u zE2rO07fwn<`u^M+q-_(I(YN|$Q+%AhkqW|^)nuEcF<_?3R!2Eb?QkV^c*bX>;%fBG zZU}gA;1f24iVfKd*$}lGwp2-GD?n`kpcaI6WsAjV0AmEB9%4}(5O?=jlxx{yQOk^G zQzb5tc0nDZhVWK+MFGPaaHs`24=}~m{)}q8<`HVgs~ISu=@Y)g-{_SN6z1&U&eS0& zOz2zbvZLraD5=)>+(QEOu#)zSg!LfEE%0P6foBuODPb51O~>~~Vnab1z*7s1HoPkV z_%*zhs#T>gXVMusv;M`8w-Vn1bQ@Qaz=l^;40^1l`eC4$V$R8KR5V6XTN)}vg~b^- z<^c&@*Pit+VYm!f2{<#GFbO!)0UFVBwL-_~_YkDH6#}D?+D9D~x_Xy$DJO>jbKT); zDS8TF@)v&5fdck1fgOXIqo)h0rLEkjT3zEn8}#AjozS>yLCzW-?G4=e0ya7XcnTkf z;0y7w+M~h86Im^QkGa0&V=j@BVCeyT+(G4IuCJ(#fdGw;5LN??pQ0dV17Q`8gl2Ym zXE_?5cBMJ(MoYCn_D-z=HSuV`y&3QO#MaBP{6yV@`q!u*PU=LCzj(dJ>rq zqbjc~g%DK>a<(#}Y6mq28YU`RH>vIHuwdikk-X&D?KxVT?RP0mZaaoKp|+gIbWY zj-gXq8eR2Kx-tqlpO20#c8cx2lumUBL%w@Ly#po4H`kZ)%_R;!K)##ndN6s@DrQzV z1@{{B6xougIQOmie}{v>M$oqjKqUhND1 zo5A#p&8ldox?Z6KHA$RV)k7{@^m)DlindRZYy(|hb_k)X7UXOv!0RWRWj~j7G;Yx>DYHdVN~6@Yv=)uiS~O|aI4f{gfGV3$!)}q*JS!`;S)=64=9!I~ zHpxnE)I2%4QH!kfjO1oXjT@&^<#3T7FqlFSQNBvSz^JHF++Z*jQe!h~!lX$iDd{7$ z^e2mqR=j3g!|dPuFs^~|=7;KsdN`Mgn$byGa0sgZK_}ZCqaF8k4qf0~pL>a=c#AD; zvN%G0ashopBsQAAyK109(If^_;#G|0KBmD?b5!mepP+#}Lh!aS%lS{Vo@!}!tpfVb&1>wAlgps}0>Gu;?)-b&eh6nxSY-TxAJ3Y&MaXo34SE-WG zo!Uz1Cbh(&pU_+Hsi&`t)l=%IQF%e)j!H&C3;3zSn~ngp0x)ZfI%+{}N~q$63&Lkm zuY^~v;Js>s*ixRxp0r+!fP2`E^a-S9yz#rX`IO={e~f&>VvIhHxZYcH2rG*Zi#;X> z2RYGW&22>R#GkOp)%-8Q{K4cd8mr!YJqfy85LAx zb2iBw4R*=mvT2=Rqov=N5RH6?T^7@du*<*;krfUBhjC}b6nDJ~^rDzboi)I~Aq&d1 zJf8~L8jSXA4FDA@+coHy4s#-mPkh(dD4}fau&JK7(VBZ~K)r-uJJu`n!{{+5vpH5_ zb6|dK6=6;`Ot}puhh|4mHJk&4QmQ6rbAmZ2)>ClcCvT0#Z=)uFZAvFBx8oCMKcH$|-a@j(LzS#(2yY)MZPzF+Yj@m={u)7rBl3dF;o$n7YI? zInwsa*pGP$b=lf&%r88T$&Y(x83NyqGkF;wSf}A56<>}7sw;4C zQ7lw-l$>NY9G{6zH_zI;xs3{NTyI(ee4MC!hdSkB2EJ4`FNRqKtlynrUgVn_(7-S} zN#=!W=BGN`JE%nmF2O6~1AbrSZcit5_@`}+&I_*{*!IAYZ=TPjtZ8=iE!U<`!*abu z-W`$(IKnP=BXl;4YvC8s$oE?cuN%FsZp!t0J8calxA}N@-VY2P1~K5F&r~`my;EaY z)!a&HyT?v_tyZ<$F4dLoLnHGrB7UN%i2V1OrE2e7)A)3}V5w#OVRUU$%6PHyj$pT^ zI&NB(zAI&V<{R@r9FFR^&ULKK#V_DdpFg!DzJBQAwzrOIlU+OWd3fZW=5x>M-(Gm!$0v5#@p6OQ)~i;Y0b1D0=Att? z?6f$A$_VqU!rWl~ki79skRpQ=73pH;*kHawiFxRR4hzC2bpjwuBlAa_59|Ki=9jlS z&hL8f-v9}OU*w60YbV^NBM+c6bbT_YrDYB!? z3&z%J>LE-GzDF=$YF5%-bktl`DPDEdT;GyrjIHK6am0bzpI()nvHP(WM?cW<$-U|f zaNv+e80HN5@tsL6u1(unGvn*SKYi>RU0GRbt|th_erJzr@I{4YT^^}hd11Z2SJtE= z_xYvkz~kuWuKncm%x^m^x~ApuiJ7mTqAM%UnhWqYI{Va9uKQ+4+RFWN|K73Su>@Ti zZ~mm}CewpNDNR$7GMhHeOm30XoL=(NJhgFZ(H?qdcI4vroj z(p@E}uT7~jUPOP(t{Q8aewyEQ*1@MnH!Rrg$rb_gnjcg-_N`NPX5P5ui8+(s`lFYw z48Bz8Fa`xR(zB8pHA`#WG`Ue$W_t5R$*C=p8YN|>Bsa@y+AM?Kl4L0ItnA#p;E>WJ zMlON2X6JJ^<-UG&#=ZYLv+-LCCp`|}0XGv2zwHMQU(hk_l8Nv4>ayj}Rt?8?{Q7WR z8K)!BK4h4&CfJE)J$qQNO826|-27pIgvsV;s-8fj(BXI?R3rS0MNvz|C!f*X4gA*9Ng0HMxbgh+o;ehgsK6P-5!4yGkeS^ zJK?|}0p9!Pe0IvRWA?V)z2NHx_rLgKdtDjlRne~%hpA>)JPk;zS~!F+Fi8B#Anu93CrQJ!6CVCWE&Dfggzvtd})89uN-)8l@S5IEH z@$Adh8AM!(Bc09#Z#4Wah4;d+Ex`(nJp?8244E)%B@9*L9fLIP1}; zQ+9s{*qs;$*Kh!jjRP0FK4anbE-Q}gbl}5hhd-h#E6*kx@YcJ%<(gWVS9Mu^@vB$; zaLxD!bY&$MTzn5ws)x!(YPs8YLlJNVFZ1?fYpS{i5V|bKBgp;>Zuqyl`Lv z=F?u5zyr}WtD>H5UU5Xh@dDs;I4p{KC{?=i@k%)-Ek3Ek+Ik->O?dI-E6~mrw^z)b z)zpkrCJ2_vSy7KN5sY5X4kT6TsApSK80kAtlk#q-zmvCgY<QRcS|parcEYlbX+O+hM`gle&z$fi?u=ip0MwH+Z@zb$4Q)Ywk=w|8FYtgxiTde!MB8{@9N5*4)(V z$R``s25$B;ClyP~7BDk3%2#rqgwnG+hcEL5z=osP^16*WIqmntC+1E0s?GM`if6N` zrng4NUMBU|m+pSP=<+sg9=zy`wfnoRSq8-IWp&V*d02H3R%mfJqTqNzv@`ybJO+kl z=Zy{;&#(~R__9SWwWZQ7rzbAzaLZe%Yxi&b>B^_~&O$|3JiD4*g?Vd!6jl~GaZFvm zOEc=|cD6RhXG%CahwI5Db5vSg4~s%+P5-6wihBEYq%RrK|HHR#eR3It0Ei6dnm#k> zyshfxFTXJ2tJb$~*q{C4{+8o(Woil_!~?V~DqsfqRWh#%4i1z;bPw&>YS%+;dVPOk z#)jvQS$ElYThF2*cP60gK_Nj(cqUZqD)ZsCw|!9j^#1`Q7mE=uec92zVP<_``A0(ONC@u!CJ@I#q7W@Aea zP82{n4q&@Czy7e!H4{5bKeJxvP4)JCq$^u()E56ja}1$1wp?>+CQ$OJneH@Z{aWi@ z>)GU%cJn&V9rD=h)%yXK6Qa0=14sqh?cDrSt#>;wp4PMel{}B{OSG{@|kA zf_(EmlbQKrMpmhk)-^G`Fi0zFiMjcSv_Cpgyy{)BMIhl)>IDZ+Hl7J3O3eR!!BS}Z z0gKAnZuOF-C#P9AaP#AlOvMn6PDf*tR=#sxy|x~9){})zIxkwj>aJT~nzuOm7%Z`x zi#vn65`4#C-`@E3lxNO+rqhb#f2vgcrT$KJQm8-U$fE!D+`q02Qprb%nT&$HX0h5k z*EBvIFIZ|>e;7lUb7HI<*;idq-HA82E8vk>zxhjV< z1&3je-hbnqYnG>O>A2z7fycj7893O>{M&8=0yfRuoWTlxMm>4lgDZl51Q=L5hZHZk zg%tTFCowXPAw_G_Nsb{!RC$n|zkl%P2WhRdR?XdVR z<9}((pe}a-KwPJnt^<$FBezWNl9k+MSM!gmw{2B1S65aRGH7x|U>U(UW6ioF#+^Q* z-L!oV&AWWU+5M@=6KKkfgb9dNUkv2Yn7WF@L#?qk7MA9)b4 zIJJ<6%1g4;{hLLxK1y{5JbKQYey6NRUHJNd(@t785&14ph+o>KO3_WnZf$!@gyukg@X9YTw%>P_$!4JmxqMmz>&RBJH>p4#}s`7V_ z^ResK9Y5Uih@%AaA0N9Zt9o9Q)!d3M$_lIJz8!|u-P_E*#ognGB`{P~&%y0RECJxFCt2me!H;xebtVB z_kQi8I#wE&zPRO871R3e$kmn6(q!ncGI!}F`QU$zsek+4U3+S`+gZK;{Vx^uzXO0d z;mJS)Cwp>GSEdaki~&jqPe?fqU7{7`5b{fh_E~-JmdD#JyZY=E6Mo!a+#ctOe<=vL zYm)OuKu!m9v!h4y{t+%hUbS)*LO$b;dSBlE*NdI+ob+{ma>kV@3d2l7or8vzGSmdS=3;t|ww-SH`C6z++|6!_zC=^nDD?>cXu_c~s<%TkN8R|G61pzMqx_BRbi{lB#b5obcG~ z3tOGiEN$m&&u{y7+xFoM0!YKr0!Vk>87I`c`oi1V+|aUDy+3>WI!0GkmeImgg7KbT zpE_^o`R8WdwDX?Ir@dUToQmA1m#zbkzuv$0pCz+TOad1M`ye7z9AXP6QmY z3BSC3*}K11&zLs&u*8~IR~e@(ixI<@ex#uDJauIU&3VFym9b05gJ!Ly^X>tYE0fc8 z;A9V@b!E;DMd^h5x)el2{QNi-CA|&HHKLCy{rKV9@pE74IWFU_4l5SVyI|ZHRZiKV zK+4Cy4NF&6mJS7i+;h7=_x#dV*L8Sk(QP@0{d(CA5vP_a01x{%EL~YyIurKY9u7w)5I1KPl4p+UB`|>Q7I8_`{5aFZ4Za*KvRS1f7o~EHlbl#nA!5BVZiY zRqiJH<2zE?Q84g^8Z{V!MW5tepStJJX-<-+oEqJB{vr>ABN@LnNCFJU%(6`)M^#uGIeF*BaEyzW&AA zbY*3s*Z@BcFE}(U?7sf@!=G%wY5as;M_;@2Qs7`OE2aYD<_1jaKb2?Ha<}h>9^ndJ z5bVFI`TJRkuXnuZsH^8Z^H!%(K+s;chC8Is5>Ql>LKLqctw>)q+eLYFS9Jb6`sfFu zhi`qfbLg@crcU^>{mpBVvNK;=`?tzltdBZV$98?BD=SNVG=X4ze|^o{v)Z1Yw(|CO zjz9QzufM?`uDn6lfrnim>B`EpJ_5XU-J>gGg+keP@sKEg>$%(rU8pb*Et+*Va94#t9AI zcph^dNuK}@`z?&Rvhu7?0B_c`Zo3a&P^a~zhd*8W%GGOY>&jRmM5#}hHDVv2;qKZ8 zvv;2MVb;5C7POj>-utUWPxtHr$?k8DPrUo!vmI|8_Ghh`qYuu}mDQnoe3XFSBejeC zW*LruxH4l|-w%^+LdnzY7-X$K(nSdsQdZWt66!Q#!AUvCOv_qv#}$7bTjPsu3<4mc zllx8j+px-#wkFzBHaZh@Id!<;hWlGxM8dsSWUW{oTL+37i;c`_Rr$pI_Us9U0=^RnTkBk+wrIV{>OI<>a^WBto4~Ab7$NP-0WpBQoN3C3u)F945~7w&3$%$Ex~tbO;{kKgz-*iKiby^n+1md2A) zE~jB$AGYVmGb>d{o3;P^oW-YIafUH8hQ}9&19)V-f6Jp&+H7xoYsKWu!IzyhQCH@? zl5z;%c~R2NchXTVc5fh=e&2R)d$n#?FL!L#^c3tMHL6GX?!|f zP->NWGP0!Ak8AATnlSgRex92%adQ6(Q#;<;X7$r&{e8!;Dp^_mbfb>#>PJ^r7V3vB zAY%XH?|G>8%d;NKTzh=;@4r5L{3BEpQOy7kyPDCJm1i{rc z+J~iH|51ZUy&Lv>Ojq`eGGNHO;`L4K@(m=b7?{=@G(NE~IJABspxyh(gQ71d%+xx{ zn8sIQV6N~W72WyA*7`Hff2-ZJra#|(%&D{PM=f0EI{3|pkzSx5z|Q`R0$rIln7No5 zTkb;_kG-r?CA}bjY_PCsbYfn?;OxBItFs5u0|<&R`$YwbMLEI5(WUl$%uIsO{?rI6 zawH6{1!AWfTyG#Tyc!ygXWvmZbal%LBKGv{p4{}$;x)fDT$?fF$*LEAHh1nQ1_9W! zd(wlxe|Y)Y1A()T=rVi6w!i1@&KjyKD@*s}DuQwNAHxoe`SG?+545iJ$xC0>?EoB{ z_#W4A0FP7ZJkaFQkLqV^nS8?IlUF_Tw63fy+!L190R&^U;g$M6+%BWjhLfhx`*TPa zHRM-A@0IOl~uMRn%))RmQm-Z22Ae@-mQ*8%VP_dlC<^-p8k zO?_tkhu8c$Gg(&_BmDwa=An&Gm1is$Tz*(&b0by!^FZ}RX&W1)-F98yzg~QMP7rOq zAl|ykg}*ghcpz*3%s1AKysqEVK-^xYbq_Is-VrpenE#568?xH#7v8)4&nCyVUHR3H z$ptCb!j8D(=11>LMQ>04=i^uN>3PI)UMYvXJC_8-6TeC;juy{O~dr9~(9IJr;O%{|V0 zFuBs=t-7+ZR9bfujCT*)F=yGAy*e)0Kk3Dms~%lNMee*o*MY~jeFvw%e(X{0whey# znMclT`L(XBJS#20+pPE3D`zKP)OJI~Ru4=mIBLGGte8rRo6~64gW1+v>i)~3_FR=y zDI_^uBbf{n5ysL{I3FcH$1%yVF`6Vt!!y=jG%{;y$6a^)lKt9x1^DUgRQ{k3EuGkU|SojsHLwx4|A51r=R zI`0`>Sy_6-TL?x!Yss9V03J85Ti*M*6}4OMZgTe>i#|>7tt-=}D5z~9;UfH}gXc&5 zQvN$$Q0i2q@17pmiwzI|`|7bZe}8px=h^M*|Mr#HumHCPcjHVhCTn@^u2PEH};Kr>FKt2 zC2V}Q*wzRcPg&(BM}W67*`H&32iRaX`x{Tlm-U_Bua zO+)}B&$#Wf;OqnAI^28t=(j%{{L}}!vQMcVABI(@m_}H4`y)u^@dd7~$_bZ6`ZT)c zNxg?^KfHd{sNsVfXHLI&@D~ei>-Q=;h?zcej|h%5;qV<1y#3d#)sLUosqH=Y&3g30 zyeZX6C?dd%7kozqy?GP{#tjAj!F@ObN(mv-LJV{^w@2X;SnX{DS#y0WrRW(1mXxbipE0K8K( z)^+V!(4*bV)^pDI@s&o8>&l9$w79tdO8Kwyj8g3SRp<<}iYtPLOhn-7X^e^{$2e$8 zg&T&h-P&Qstq;EV?oXrFs)T0Y>`OGXM+CYup1ngZA^h(K3XmJz`wf-#zi0C?CV z0$o{oi3nhUkEu}Ox9(lO?>u|^rJsJi{>D3~$lU@v3UEC%r6Vje<|l@5x7mi%M??6w z*$Jm^Z&GD_zpOi(Y(4U%O4rwp-e!M$tV;kgm&Dk&&HnEHuCJDnvN>(u%CzebEEsi^ zsup;&Wj{jt+1u*B)pOOKsVnZ>mv!af8d`QY_@evZ3q?C<9 zVnYzN2Mr#Rhqsi_J1fR!7v^T?)1D!!dO>2((ZR&Jow7#+X$M(RurNE%*lAVQXd>Qn zVc%?YequpkV%@BQ!jaiUbrW-kCJrvhA55>q$j>gKm-F)8q~H)^fIxzFlNNy;I*Lts z-C7}fccr`^tM0x{`WO?F=#8@LBVdpfB%^H{-ONv5hOKEh@SU{?ejAzri5DEct@(Y= zf0+Hp#2+(m`}mhSk2IZ<1O4~hl>T9*C-G-YLJmGe5S+fRL{MaI6)?qErAM{|evB1q<=HJF(^so&~ z`=jwcjGmN#78Q$0J$6Lurmn9xZ?|aU)Sf+ScK;f6K^P_ue%lWqIehq)w~c?^ZNRU9m%I9^a{9YNn4B_(Me%g@!EP^pRvesoqA8aS?I zd_r?`f{AU|W`ozzln%zp(N%KY5&(NxdU|Ww1+R5{c3oD-WmWI%G5`E3vl({aQ4#;> z7(l0e8&!hG12=nFjPw>{17L*? zm6t+=4qxsv8(VsCnmkhgjmi6M%B~0Bx$?2jw?EixXZ_h-{{n*cvW?t;u37aHzpIEr z{md&4N{?X}`NkpfhP-tf^M2`a>t~ntYterB96^Dz=D~y9uQG9j0pwxtp zr8n{g1EDW`(Gxa?nxz(i{FBBfRBG6MWyYdT>BH94J*&E|OzV_m#8P-i9wPLSkG_zW zGjn0v*_$4$(q!}E_l%)2Jih1-KPF@wW zDz%rQB2lyVu*08ReZ^<#vp1gDwBg^cok2wr6)v#(_VXv^PWttiE(=yv{kziGGi&I| zw8lhYSb|UZ02VmFgO0pT*8ugKPYyb1_4OxonEutu-OJ~7+oCJ;Z#qE8@}77EruMgJ z>dI;;B>ack1ju^)a~yqk3XUF~JuJvC{w#$o3Rw2SieEi**|Cpz*>v35*L-}=;^~0M zb)x+!wJh`&onPGCBoiwIN58oBQ7(F^bp7H#Z~W@N+5SthUd(C3CcdluCI$p5Uvi>lJV9tc`wfncI?#dT*eIT8uyuaew zF8o@w{4uB<%!zkv71?nnLk`D0zu*VM24 zzZS<|F<4htkvW>`TZQN}^NORaI9{Nx_<-BnxgcNozs487Vi70!j+b`XGW)ghozm_- zb=j(4nr~Q%ie6ap&%&<`e)Vf!ry2Xx_SIbX*qVXV&R%vRIx`O|mgULIA4m{h@Mgac zuBp?g&9VW&e*q&M>rpso|&!zf5ksbz#NdPCEM9 z%T=S!I%yEWY=3}}u1u?w42<_0|78l_{3$=wVP&cNH;V_cl_Y9s+`43u)!&IcY%B{s1Fg zSseop@vj8jKNuy~dxm&;S7t0vdS))g;?9{&y69Wath=~FpDS+rq|*(FJ;w>+6Re@Qb;uj|y(b>LywGrF>}&@-$b z(+S1}Z#4Wah4;aqp}r-0b=XxY^6fo&Ko+?C97@r|vn8yQsY9y(3r7 zdB3pjtd-wAIeEgTXQRHC$+qhy5X4^guhUCYL7fv!ehOR2Z){%hy+qS%>tSa-S=glW zqUEdZy7i@bi=%g-mb*PQ;1%Kr-->N~>pM12eB^=l^S-|8xhF=YB&mw+Fpz_eA#~od ztHzq9pXRrnb?~Xt4GVS;*Oir}Vw*)U9)3yF<9hz_e%6%je>7e+a>8)H9*Nh1M`Hcv zFTIshKW);9msZ==sCr*rSy?DHz>mWV4#OV3|He7jEKl9ial@|zkAJ5!aIlvZQ-N`F z119yK$}?)Y+jql{;R>z@USQU0#kI}Ps(w69|g@-t9R= zGpHBe!nwZb;zgJI@p<~HZ$|yLar=SI3<4lx;SAFEyJq*=Ipy&=9q&B(n_jOhs=Gs1 z#_nzv!K6~SNul#USRR#exI|Bdc7)s~p-S?mVZLNjryFWkrwDCjlcuiLp zBk?W$S62g>YI#3Sy>rLyX|q!n-L~P*4oh@p_QnjS!DJhvvT4W`sH*L|lMYE*L z7D*|MQq$5}G)`;Lq*>!EV@qV_$n4y_&;XGH9~9W$^t`4ACmh#l*BL{8x_MCV|I?LK z5A|qY-zsyev`A~7m6h78QF3PU%*IWdWF|zwvL05Ex_3>8Fk?MJ6wk>d|)*C{Pi0z`ni3DF|9XG z8Zm5Sv+1v@`uuQUL&q>Wrv(5_8GOsKdZXiYhF=%S1P+? zp)IwnKP*!V9{ub6YyVj?`_$AGucaUJ-j|zjTbujT(skfrPaf&Y$|6=`wjE3`+LLfp zv+AC*1tUXSw4tcI`N+*@!Nae*@z7vO4I@Jgf{G6P*ix$k=I2Qfn$-%V_+=RsCQy z7>*JQ6#rYk%nSKJwNV%WtG|*TVNwS?m+jb2DJ6U>my${vqFapHm2V5`z0rzP`7S( z(7|4&eN+sz#%0-gdBLJ8;v=zbcK#50-2>gwK4viP)|mXkMY#p}-GZa(c75Zy z9#yKObxlkccjD*fC#H@Xm1u;hiGnS{AN%omG+a=bKrwA4eUpbVDg4uk7%2C3Z|YPu za15l%!Hq?U)m*%tQHMp57_U4U*`AQ+r9tH&bACj>hIHy75Y2lu6ixXEhuUp!Qg#D@12lY!e zH)yxYhD)5~XBs1>XX}-f3uUzI|LkLx7M%_;jj!amZJaa8Wy0O6wln9&xM5r>)5`A-Y1M~=Kq!t~U875;-JBzqxY16VCk zwY?U6FGXr&SUG~WOIO}8iN}`V+kLziSF7{>*@t9lDOhgUG)-aqHz*w){a+In zm1;N1tv&6ueAnOKCtgjsw-Z@#G0%VV=e!lFmwOf1A_VUbGsSDd$Gmm@XQo|iiZ=vL zXmmFvXEO5PVy;YvuvfLXqQ|H5cHgIFYr{Q~Gi^`)etuG4f#J?;+gMaHu^w5Agc-7% zNCX*QZ?TMzoM7ZUIeG1b`Wwnz14!7gAs%_$SyX&y8PhY)K!(6^nIAe1 zUV8MiY{R&{Rpj;DkCL#jwwpjQk9PcRI`GA5>6)BAxo-x~l#{Tr%wPo4tB&mo{%T?l zl-aGD(Q2Fd{_ZhPPRE-MX?GPMVZ(-a@j9WhXUY+ zR}*3;e`>E)H-Qq{d|#r+Lg!wt(>5#SjvCd+hlCa9tDyqClgh9X9En0Aly}6MDzkrE zcF$?o`5nWmcva~~!g?8i16B`)FxW0GmG~)6x;e&dnf|heeDzVphr+fZ%KMPjkt^br z3fqp;Vrz>L*MxKOm4#=l*A;i(*0ho5%gO7uB4;kvpO16ChaC*F=yVeH1hqnk0_gmhteHJk1mhQQ zio1?Hu|>wz`_5aRovt^lyje|5C}`Lak36n)Qnbjqnc$u_-{;V*V}nMMFhe&~hG#s; zn|);dvF%qfoyV_JRA05s^9?}4JPqA|HJ-|khB+192AlyjwQj)6O-eq9Yw9Rla=y}` z$`7_jvKufnfrH)k%=2|^K4fi`E(yAq+-uUg^Cax6ZNNx|J02lnhMd5`-jO@514!7g zAs%_Wv?yERT37=AYp|tfx|R26q~-ZQ66f>qVfHl9CwGUj%n+R6g|s{ zt0N08=E-Ep6p(l4v~cE;nc~&CRg`^K?%v&Vv#NP*>HLH2?Ay=pNLT?+;OONY3!s9c z|FW{WWvBh6-8R@cr)KHo?~r)+X{IcC`>(l2=Vu49dkJR#1~1-P9=y}-lW2qUzHUus z9_e*PO2WR{UV?OWO2P~|f1_(Jfjm}z{2VoX-CwS;S;e}xN{UdButJ!>VVW681VO8- zWt4bq)4_*t$4~Q`6FRL#%7{Qe5@v|`8)kqS4l?$NI@dH|{$26(mUUdN+*&sUiK^={ zkjIO*^%8njdEq?C+I2_x?P@iHk5ZI=nMCf1M2v#bb z`6sT+$Eb7}B>2#Gf1~LB8^m)*U;E)iBZp3S{CX=%s>nAk?cb@Stb79!_SH6A(s+Y}8M@(e$8Bm28xkN7 z%iw)UrB}R>PyFC>`lpr0(n*-18*UoNxpZj2q=EM*I&Js%eYD|mTk0)2!G?PpH2`4} z-TZM^jdjdeFs5KpxrU&P|(lE7xQ9vaVG+SCy?HVTO1gk&$~C$oOM~ zqu=%8ZzXZrNzF;}#ZEJ=1tk8VEm+EDpX5_TW8 zNC(xy0{8nn33?w0r9!zKQQM{yUK^Bq9}ruS_p#$!S5Hhrn4W=2b`-%=zR6Rl_cvXA$UrOSBB6sP!rM zym8t%$30_$ZVw2a`3njrXyg!&oTinCKag0=+ac9>^gvOM;u}d=Rm_YIhUAGe5l-7$ zZkv(1L7aR%U_yWSUI!FQ6P{ypoGQ!gtjmfO)`zFMA%m;yq+HB4-1Gnu7~7qwu_2L4k``WkrMXgV_A*$e3iyrRVL zYDuo#y9qDOJp0$YmMz z4*u=rnCij^kCHG?#E*dEilv_=ZS#a_`U&ql%w2ze9|`NosvVWKW|V;0L15>uMBw)& zYz*@}P=f=i2qqmC%_^RO^Y$q3koSWwMZKEiv0hyNZtj!DZY0bQqcuiuUy$)u@3ogi z4N7>;4BYuCey`&|B%qF)sDRo}Sz55Krv0=*Z9&kj{g?vXt;!7Ye^;g$L}=Z(mPS+_ zX`N;vPptp^h*k87!))_s8rMk3SaI`(`Lb)r9MZ#w9S+|UWkd>qleq(e&dWsk4}$G4I&LpH7@AY;s$btQ(^3Urx#XmdjE(GB{bCUkFHc69UL z?VK(Pbx!NBa0vQqTv%KcTBdwmi!B|&n4tEZQ(L9H{EaIEdSt=QNxzNj`yStWy_)gN zV|l0kVei7tyEDvCOlG)03XYv;-aA>Z?KMe~$EHDll+0RA!oHw!F>0Z;qtQ;Q#)a}W zc|S*7yy|*c($%zUpJPwIAYq1VT#G=)h_Q$FR<1tGb^6Mml1g{CrS6QWYh1{q#QN+O zt$&;EwC%*+(Co0Q3rW}v+ImsDl=8sTKUaZ2zKRi%W%0+fN&k_i;fjG~A|v9AAS(m% zCF1>&a_6k<;LNX6j?FZ#89rFCzl$<`Ui^8w9T#BP>+^c_ z-0}h*{WM%j@(zTtT&>;xkc~5}Pt-W*oGNMH(R#kvm*nopLdL@u?~eUsyHvL4;?-xa zvnrP%VSMx6)Zl~q4!ukfq!{EEsp#v~e~7|A(j_D;D$>(0SV4XHSBZ&mbOr^&a~!me z8Ic|^5mYSvFcHjuP4-&ZIFcNi89e%3RwMUCbB8@xwdIF;B#ddN)C)tU;3WDZ#suPw z2E1tEB_XwZm?9)HkGJrA7jo2@H?2^S1Tx7!|GaIbJJq~)pE3^+r>E7%j4_@`ga1_m zuf@g-`A{FdTdc*+-eoH{PLb@I*S3Vs>-*K&+CXh$z%lR-fj?9o_oA!o)FyT@$G5F_ zB4LN9)XE>qGV+YC;GaM9hGHw&zxOSX66+E7V9}}JsmCUwB!ZOy@yMh5t}cG-4!m)W z+jQvjyy0V>lQ2U%-aa5>?>!xo`d#kt7?--j^JCTKU?iGxi@kq5Z2tRwUh8Mhz8-(J zAo$yzxLl(%A_WQ+G1dzS^9CU)skuk$k!#(&d= z>-ZQkC}M1Kd4L876bGhT!uq+l*v`D~tJbpV#o9FQzrl`D98R@IdCr@4ZO#Kpf>Yus zv&f(un71Z2ne^AiPEW#`J0$G5C3{u%q&aftViJ~j$*VVt94bqEcK3=f61 zYr^xbPh{#fJR~4wkf}0dS>M45(=g>pk%RprO&f;}4~b}O8VT_5fB}OPk#H}YtH&E( zVhgAS3|ia5^^Gq(m_L3XoqZ*3-sG-t|3bZRF|k6HT;By0_&V*;f-W`Jnaj)vK_&!nXGyb&s?RR2&#FnuI) z`?Ff_*kdnlNHTwwXLXpBdKHrkH5QCxWY&v>N?~}LUujxc-sX2hu=zoA(YpDaIh<{5 z=IJk9Txb68D@zVcVC$Lj=i@;QXPY!VUfN=^>x4(CV~yu+n?b_9p!qS(x#D0A@dd4# zAIfXtaCY?7ex6j$gxh?Wx=E7_9k-QPT;W07r z8dMoP6#}n8i7N{D^BcMh5UzflzIuN%59j48r)RYdn(!UTpeBGwJDdG#bD~!<*L9oU z?pbGYdn*b10)t|hbH$<5!Skb)L7}|dbxBE>Aq{FU$jDvg6}jtfP*&;;N^pSC4~C;! zd#J8Eiq$D8hu(Cs9B1qU57!<>tD-PlLu-I z>Iki(=PXr0UxvZB_i5#UMh^v=VcIIR73P~zriQ^@XR(5b)>bILw54R- z2A#bY4(joJ^wWweU#6y|5lw;;B=#My9^K>NmNchqVr};&ok*A=Yj6d~_~1_Lt5bE? zIqWEF_x!i^1D#PZUsQwT^;d(zv@+G!Aa9puD%7QkOX%Q%Uf(?be*NQS;+Pys_ssYW zKQOYP-i+}F!erRE@4u2TL)LvH$jE(<7-d&i_sE0$Mi~j?U5>H_d(AFEmN$R3J@&rG_E@VfU0eOxg-yK} zO?L|HKPA-j2whU&b<+@&4fD%H%_3ojuy>|LP(iek7)WK0@^tuYj_b z*JBBPaE3B>2y?VV$I63-k3f1JJ+L&0t!@n5~@?rb#9o zPE7cF&tGR5wW0o*W-t|wxy^ut8KN05GGa4mzO-FeV{w{n{qVg@hUJ#)jT{i)_D^E( z0Xg^GH?P`%%f8EzgNUQauq+!Pm4N)X&4Yw7W``%MHhsMqVkyYhDKvBtv=7!H7KXuq z4TLStSJOf)L1$XGkRL~Ubjyy3@=X45%X**tmQzVBWEy15Z6PGg5G{nUa%>4h20V@0 z@LgMJ`se0}vcOpgsci|!gWD2FSOK?$G9ZSdpTDAiXlS5FX_nbyWR=VEi{UOe10gKeDjY?J6$(2cBi>hm9J&X#2Mu37h7UXB>QxjO9;Lwb;gkm|g)vPK@2t)E=gP^z3%`qJ47(fpk6HP5m{1dzCFA`s zB;4%lG$pmg@1K*+o*+vu#$0-q#!S&e)6Ws+NtJhycP(@flR{t{juN4Nc_UO(ss5of z%#dCMacwJ3xMLK!*Lk9YVr>iiGO3tc6Vjy~x6UxHB5~hXXJ^j~?~)RbG#5+9%ph<{ zmjsNv@^B&3F4o@jRI|ySJT`7AS>aLAJ$DpSkT$R9$O3k}*FX4-q}HC}ZDOUp?z2Oj zS8R$olzIMW9doBpL@B z_i+})1@#Z{$nWyg-`0G3+TL@fi`lCKw_5~~u%h8nx`DJa)}?emp4w2n*LvCf1@|3L zAsVqP-qE&Fm-jauC+vD}wIF!(5M;^4ilj#w0D{iStiHzfeu(q*dq*NHLiY~Ql(e1s z>yWMA8+jy+Nu9RzSzHYy&BcnSM?t$jfBn;EQ8khC<~{dw)>^oKP)nQFqdbScfY+no zla5+@l$?m9@|)f2d#sumJ2~F$q{<{J<56Nk;EqwB8*N{I#XY+09I;a zSn(j^_#1ua)alUJZH+AMd_sAn<7)K`36KYO>01(3G(1NzNXuPVSW}iaQ{wMboZ3U2 zPL>Xu~C{a4L6e(ZEzwX}IXM=p%4^y@jMSBNfmzV2Ab)jPcNn;UG)sZkmdJa-MP^)K1fIPU1E|IXJ;W@%UTJDlonz9T_>eBzp+c?>xgwH=1 zmGL`)EV)>b^c*um&{BOz3^>2~FXz<``%6DQ)DP~us~>0~LCZ6{_f=0A;ktbH!Sj~) zZ?z?1MbvZ51M%fkpZ)Gw*~($nv|YFQm5#yp4}`~;yq-hwvwJ#?IUXL{C(BX{bxJyG z-g(?oNjk}MkgAS^8Pao*+JRa7J{w~E%M$y!YH9O&4zbXaBU!q5jvTwd z_{1l7TvzQISz=)6s})I}gT#S^8Pao*OhT=mAp!E>E+kIEiiYP11!=jed{@BagSvl0Jui{^XwW*P32#Pa*?I zn3yRD(yMSYDtKr)2XNf7f7+Od7aFy8 zUKqT(+2|Fac(0QBG~d(C*Uo*+5zE%p`ORT|aQH*S`8Z>ofPaD;bG&o;DR8FNwpF!R z>YmW6@8k*69kjD! z7{_m0Swgn;9M06*wnnZyyX%K)$K7ZDG}C%iJ&!RY+ahrwVTQCVl0Bd*`PwjJTganZ zH>1@y^Zngpo}7+1AJXnB2{VLkF+Mp2WPG&aZ_|M&^F|I3XlDR=PwfboBcfQ3^Nj8Mj4ZTe+543)s?X+dk>MPdw!xKpuzYP`qV|93E z=Gv8gb88xp6h}8ZnKdux=s8rSIvYYBSJsT~?6BI|aiiT&y)Q1F^fL+Lx1oaPwi;yA z-`sHuJPFC$$LVB4^*_#b>v?{JeB0RL3r}_5M0_NibmxqO8N!B`ewcJ45^V^d7bre% z*%ISh&!ihobN3I~G{hfqb+$#aNfKsA+ak4NA#NDQ@1L?t>f5%iiL=f=%O2%E@1V8g z$M&a)*LS4nIY^ixZ42jOxR1x6DsgJ+#dV8I<3Ct9ZmDlEw8M&a0f?)!Es{-=FhklF zseKD^!#IB1G8Gy>>EyR;&by5%{V-0FJ~6|7n^{O@Qr}0KIwWC+v@Oy+EUIz=Y$m6z zUpKFEM!u|~_35-Xn=BAlXImtjBw>cMEmHdy;)Zejwv{V5r=ZJS5zo`d+MVb&&SBxu z%Gdtbc`}e>TUb9Cq9;ANhWK zT_L+7;_7UOWP2pckTyhW$3omNj^Bm^@2sWhVnZkY67AaRdpw7f~XdL`0GI zl!O`5hVafB_YO0vQk@NvY>$K)(uPRwRfrqLi7L>oi~YI#%T$a~Dd3Ir!bChOPoI!) z&BZDZd67<=FY*OMT%se{MO~vY%#<1XB4h$v>4DWNmNb_fmu@ybS3CLh!gh?&@y^Ez zJ~{6VS!zA6k-6qT{bTipJFYo=Evaz_7b8Xllo192R9FPR+*OW9m?7^dj{+IFt3{#k ze0Gm<7?1~dNh1KE*GC`%@3W1v!6s!xkZ_8&1K6z^b7qMFVth-gcX4S8C-EGSGsi#`iuRe(6 zvywsguLlHvn$_FiZPu;@Bad8ndqBbr>9ZDtjLQb?j$8bstNWs}(I?xaXHic#sB72A zp21A$`^kka7CByoN1>gJ;_rhrv6}5|fE8E;2atxrvk~>k+9Xw z39v8h{u-GIE!)Mh@z1A9--cFeJ>7 z?Yb+-7?2!U&9_Dm#~HrOHrSL}h{F?&xN+Mxa^qr#Y}Y+No|n&Zme}>|?X(+Th|dq$%z9nZClWHfi2;_##s zgFS!eFol1>zyQSnSWzh`G+g9GCrV%?#z`(^z%#liSKspu4Gr=Q2#XN?2w3MJSgMc8 zpiN$e%KUsG7FS^Mj|vZmwd+hH^2+na^4gk)h6If?4OaN!l1&4nf=q`GR)i>J@eS<~ zp)hUV-V}CJW_|PWZXt?L3Y34{#o=^>JH78f@0p!RZN3Oco(NF`zKCXg5zTobOsJa_ z5SdRZ>MEQR!FV{{YR2gb45VtNt^q1RB&9!8q^VC7d|{4M%e|;v@P|~(H2`PTGL;`> zN99%@;;@dxA#2ltq2W-60sezcsR}lY3^ff4@DKcg8WVk`H8z=ULir{y6JW-icPtza z!(HBI7~)}$Q0qQ3tW95O+ptXcl~WFGn^o~Z1ID7Ts+l>`6gci6x9QR=(8+aHk4m%J zRX#kGgpFXih0kz~2&ho|e4h(Ol9(Vbu#3$D)f_0ZrV}lP{rta7c3rGn-ywB>{K1^a zqZcp=MPiACkV;5_f2n1DxnJ7rXNQcwrFvLO5A`HrjK8E#rZTJtht?8%dx@2mwT**Z zYHKaGk+rh4liRkkw~|`PY^4%8(Tk#1#=yyW4om6L%DM-HDEx5oI&giao#8uT{*h7P zin7!ib^7*@`Br?JtxJux02WPr+FQ1;q(XBiIJ9on(%QOp#*MkO2Q1?o6fZRN4Dpqkv#qUuIyX0ujHU+1pO|=BM)wGO2Wv! zsiU2}mE2KkZzFfKv6suN9Hq9uFmi8d zCzsmEty@{zv~J~KWp5{KDTU=t93?XQ){ZjhP$mEMrk0i}SDJ;w`Fkrq3`}i(fv1w=Z?Pi!-+-?ok$o6 zmlvp+1DtfBkf$`x&OI+F9`Ht}q*DDuWlgJ86b^Bt8lAVeZgaymZPk%Cv!8d|hsiOX zNrV5n0eMUw=D6u|wZG*trB^LomR&!Egi+J;^vMOl%^0$_QjtxmI2zJ~MXgW4=Z(|G zIqn$~bbCPX%wLcN7wf@Ng$j#8SP~m=1EgDb*%wtY#AAwNZ>n4W<{CW^gFI?jRt{R* zu$|YWZ85j}V}Gqd!nV-5!kr4YJmcauGTsPQmfS;)>W5PI|B3qv0}W~Ievb7X^pD?( z0gm%-W-VAT*?9@OCK&gV1{p6M8Zc?#{fSQ7y?q~Tc-;0N2{WYo!JA)}!TXX*uXrP$ z_`&D&Pb-h5qs6FexX8mSSNii!ml^JH@tcOUOZ2Zo!iu*0L5ZEVwcIu%b%Qwhc)*1I z^1Tiu%+T&+QPUcFPYz`hh6D*G{A0)tTdW+*1SWQ452rIUxF}O>9U@)$}En@D6G~F zW^Y65c217Jc+5HF%9&WgD?L0@npa}L+-oS^u z$fW-7!7T+jxYuF;sr5WakbCcrgtZ}(M)tnUqC3<up$0d@+m9)AJ3iB z>kJ9wcgF>9w%tL-+H<-oW?mZZwxV~$)m#2YZlV&9JHsFUs{}_nhW%s?`=YKErbd58 z-GzqzQ3N3192EwBuLL=3?OWOp*zjn~gKe@IUDHo3tF&wY+hO7gP#9Lg#$5xEgyAdO zOi;18LU>JMDiq9JK@VjStP6-o9^BR4N!TIGj1DT?3So)XNl>oDzQfg{dpz8d=9EpW z?Y^WFilPa(xv!qxe&<%pbN;#RO**GFbUYwjc5h_K1Fn-y@APmvGGjfSq6xRqU3dO)N%V3~PB~XP+s^n$Hr$rbCsRczPv_^rZdcqjN09>;V>|)otHPm(w=3>yk;sjUG2YD( z+@?XHy7~<6lF7)8i!mPC5Zq#P;YRg6aALkWMBY9J7cAtRyVq$&%JKE>5++{q@JwGd z_4_LuJ9)8NA=8#uf{fhN9!c0C)I1#uyW#u_<#JceL{Wqs8^$p*AH>8E*!-0U{mUD{ zN~Kg-O&Za>TEj}}yIPF~Th6~b(9bLV;W(e_dww0kmL4Y#F|2}(yV4^G<9!Uh5c*=Q zR_?NyD7#R#Vm$KTF6T(XcppPAByQZ*F;R9QZdi9redxtxu|N@{1^wkH(%!eB`{wm+ zI(?tw&A1O?;^V_yQk!pCJL7)Ti7Cs195?c3s@OzyfCD2I@tU_A0@ zd?m+iCwK-E21duK&g+;ScKn%wH-L8LE~xRo^gv4 zS2eF&+6fa2al=Ny)Q4V7mJ){1f?hZ)>1p2+JTEKI2yVcrSL-WIm&n2G8y%eEwr6R> zQPwM31d$p6dKB)OHzbVr1>!>RmNP*{?gByp2^tEKX@APkLz_SfGf}j{b5Kr6}8o$|N)2jq-^o1Mj`?H5d!wJ3@}v zlu?w*7AVVecJfycg1h`X$|Ypa7>}H$KAwK! zRMR?=X^KR&YqKxhM)Yn z%)*sq{Ocg&meIa7+!U`R3ro~~+syr-4GCiugodSR{M=hF@p?CYUnsMBn~lB7S!X)! zz3{?(l+AhcscMZMdH7%6(69L6KJL@5?^uvL`=?A2_U#+Lu;WIZV9?!mGfD_tIC#U& zaIJ0kuZWNJ|Cnp%ykP9Hv6U`ATuZWDymwGDW5>u1f5wY%D3?%hqt>(*tc)H zj#zEHkEvpf@s3ECi)zMrf@m-AgIPkrzuTyz{LX|L#cih}c}L!YhHt8i;m^6aYe8wd zj?x70-U-v5{_%j39VKB#ENE0q-tRDrX@13JvhAB?6@Hw)ii9!zDHixd7X9G`SwKWs zkl#p8zhFg#s2bq%0RfSI{eu*~iV>00&=GBLkF)(E>Ht)%9E|8?a)J_u^`kP*=?oFh zCM&DoYgkM&>9%=vcZ*)XVOn+L98xnQVR~vV`u7tgzonLV3T@BqC#CoP~JRCeT4tn0)HGIi^fYcg4@`yWBB4^r9eH_