From ef39463aba38f83c0958862d2319de112211590a Mon Sep 17 00:00:00 2001 From: Ademola Fadumo Date: Mon, 27 Oct 2025 15:09:22 +0100 Subject: [PATCH] ui changes --- .../Configuration/AuthProvider.swift | 147 +++++ .../Extensions/Color+Hex.swift | 24 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 35 ++ .../Resources/Assets.xcassets/Contents.json | 6 + .../firebase-auth-logo.imageset/Contents.json | 23 + .../firebase_auth_120dp 1.png | Bin 0 -> 31998 bytes .../firebase_auth_120dp 2.png | Bin 0 -> 15823 bytes .../firebase_auth_120dp.png | Bin 0 -> 35146 bytes .../fui-ic-anonymous.imageset/Contents.json | 23 + .../fui_ic_anonymous_white_24dp 1.png | Bin 0 -> 7879 bytes .../fui_ic_anonymous_white_24dp 2.png | Bin 0 -> 3635 bytes .../fui_ic_anonymous_white_24dp.png | Bin 0 -> 12883 bytes .../fui-ic-apple.imageset/Contents.json | 23 + .../fui_ic_apple_white_24dp 1.png | Bin 0 -> 9453 bytes .../fui_ic_apple_white_24dp 2.png | Bin 0 -> 4572 bytes .../fui_ic_apple_white_24dp.png | Bin 0 -> 15394 bytes .../fui-ic-facebook.imageset/Contents.json | 23 + .../fui_ic_facebook_white_22dp 1.png | Bin 0 -> 5231 bytes .../fui_ic_facebook_white_22dp 2.png | Bin 0 -> 2524 bytes .../fui_ic_facebook_white_22dp.png | Bin 0 -> 8550 bytes .../fui-ic-github.imageset/Contents.json | 23 + .../fui_ic_github_white_24dp 1.png | Bin 0 -> 13957 bytes .../fui_ic_github_white_24dp 2.png | Bin 0 -> 6636 bytes .../fui_ic_github_white_24dp.png | Bin 0 -> 22107 bytes .../fui-ic-googleg.imageset/Contents.json | 23 + .../fui_ic_googleg_color_24dp 1.png | Bin 0 -> 14824 bytes .../fui_ic_googleg_color_24dp 2.png | Bin 0 -> 7275 bytes .../fui_ic_googleg_color_24dp.png | Bin 0 -> 24342 bytes .../fui-ic-mail.imageset/Contents.json | 23 + .../fui_ic_mail_white_24dp 1.png | Bin 0 -> 5707 bytes .../fui_ic_mail_white_24dp 2.png | Bin 0 -> 2507 bytes .../fui_ic_mail_white_24dp.png | Bin 0 -> 9512 bytes .../fui-ic-microsoft.imageset/Contents.json | 23 + .../fui_ic_microsoft_24dp 1.png | Bin 0 -> 2753 bytes .../fui_ic_microsoft_24dp 2.png | Bin 0 -> 1150 bytes .../fui_ic_microsoft_24dp.png | Bin 0 -> 5102 bytes .../fui-ic-phone.imageset/Contents.json | 23 + .../fui_ic_phone_white_24dp 1.png | Bin 0 -> 7532 bytes .../fui_ic_phone_white_24dp 2.png | Bin 0 -> 3332 bytes .../fui_ic_phone_white_24dp.png | Bin 0 -> 12472 bytes .../Contents.json | 23 + .../fui_ic_twitter_bird_white_24dp 1.png | Bin 0 -> 10311 bytes .../fui_ic_twitter_bird_white_24dp 2.png | Bin 0 -> 4861 bytes .../fui_ic_twitter_bird_white_24dp.png | Bin 0 -> 16207 bytes .../fui-ic-yahoo.imageset/Contents.json | 23 + .../fui_ic_yahoo_24dp 1.png | Bin 0 -> 8024 bytes .../fui_ic_yahoo_24dp 2.png | Bin 0 -> 3783 bytes .../fui_ic_yahoo_24dp.png | Bin 0 -> 13470 bytes .../Theme/ProviderStyle.swift | 36 ++ .../FirebaseAuthView/Theme/Theme.swift | 14 + .../Views/AuthMethodPickerListView.swift | 73 +++ .../Views/Components/AnnotatedString.swift | 56 ++ .../Views/Components/AuthProviderButton.swift | 83 +++ .../Views/Components/AuthTextField.swift | 169 ++++++ .../Views/Email/EmailResetPasswordView.swift | 102 ++++ .../Views/Email/EmailSignInView.swift | 107 ++++ .../Views/Email/EmailSignUpView.swift | 103 ++++ .../Views/FirebaseAuthView.swift | 45 ++ .../Views/FirebaseAuthViewInternal.swift | 321 ++++++++++ .../Views/Phone/CountrySelector.swift | 77 +++ .../Views/Phone/EnterPhoneNumberView.swift | 87 +++ .../Phone/EnterVerificationCodeView.swift | 103 ++++ .../Phone/VerificationCodeInputField.swift | 555 ++++++++++++++++++ .../Sources/Strings/Localizable.xcstrings | 230 ++++++++ .../Services/FacebookProviderAuthUI.swift | 4 +- .../Views/SignInWithFacebookButton.swift | 5 +- .../project.pbxproj | 176 +++++- .../ContentViewSheetExample.swift | 81 +++ .../FirebaseSwiftUIExampleApp.swift | 11 +- .../GoogleService-Info.plist | 20 +- 71 files changed, 2910 insertions(+), 24 deletions(-) create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Configuration/AuthProvider.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Extensions/Color+Hex.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/firebase_auth_120dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/firebase_auth_120dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/firebase_auth_120dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/fui_ic_anonymous_white_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/fui_ic_anonymous_white_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/fui_ic_anonymous_white_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/fui_ic_apple_white_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/fui_ic_apple_white_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/fui_ic_apple_white_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/fui_ic_facebook_white_22dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/fui_ic_facebook_white_22dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/fui_ic_facebook_white_22dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-github.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-github.imageset/fui_ic_github_white_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-github.imageset/fui_ic_github_white_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-github.imageset/fui_ic_github_white_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/fui_ic_mail_white_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/fui_ic_mail_white_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/fui_ic_mail_white_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-yahoo.imageset/Contents.json create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-yahoo.imageset/fui_ic_yahoo_24dp 1.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-yahoo.imageset/fui_ic_yahoo_24dp 2.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-yahoo.imageset/fui_ic_yahoo_24dp.png create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/ProviderStyle.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/Theme.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/AuthMethodPickerListView.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AnnotatedString.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthProviderButton.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthTextField.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailResetPasswordView.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignInView.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignUpView.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthView.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthViewInternal.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/CountrySelector.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterPhoneNumberView.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterVerificationCodeView.swift create mode 100644 FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/VerificationCodeInputField.swift create mode 100644 samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/ContentViewSheetExample.swift diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Configuration/AuthProvider.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Configuration/AuthProvider.swift new file mode 100644 index 0000000000..c5a9c9a6c2 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Configuration/AuthProvider.swift @@ -0,0 +1,147 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI +import FirebaseAuth + +enum AuthProvider: CaseIterable { + case google + case facebook + case twitter + case github + case email + case phone + case anonymous + case microsoft + case yahoo + case apple + + var id: String { + switch self { + case .google: return GoogleAuthProvider.id + case .facebook: return FacebookAuthProvider.id + case .twitter: return TwitterAuthProvider.id + case .github: return GitHubAuthProvider.id + case .email: return EmailAuthProvider.id + case .phone: return PhoneAuthProvider.id + case .anonymous: return "anonymous" + case .microsoft: return "microsoft.com" + case .yahoo: return "yahoo.com" + case .apple: return "apple.com" + } + } + + var buttonTitle: String { + switch self { + case .google: + return "Sign in with Google" + case .facebook: + return "Sign in with Facebook" + case .twitter: + return "Sign in with Twitter" + case .github: + return "Sign in with GitHub" + case .email: + return "Sign in with Email" + case .phone: + return "Sign in with Phone" + case .anonymous: + return "Sign in Anonymously" + case .microsoft: + return "Sign in with Microsoft" + case .yahoo: + return "Sign in with Yahoo" + case .apple: + return "Sign in with Apple" + } + } + + var isSocialProvider: Bool { + switch self { + case .google, .facebook, .twitter, .github: + return true + default: + return false + } + } + + static func from(id: String) -> AuthProvider? { + Self.allCases.first { $0.id == id } + } + + var providerStyle: ProviderStyle { + switch self { + case .google: + return ProviderStyle( + icon: .fuiIcGoogleg, + backgroundColor: Color(hex: 0xFFFFFF), + contentColor: Color(hex: 0x757575) + ) + case .facebook: + return ProviderStyle( + icon: .fuiIcFacebook, + backgroundColor: Color(hex: 0x3B5998), + contentColor: Color(hex: 0xFFFFFF) + ) + case .twitter: + return ProviderStyle( + icon: .fuiIcTwitterBird, + backgroundColor: Color(hex: 0x5BAAF4), + contentColor: Color(hex: 0xFFFFFF) + ) + case .github: + return ProviderStyle( + icon: .fuiIcGithub, + backgroundColor: Color(hex: 0x24292E), + contentColor: Color(hex: 0xFFFFFF) + ) + case .email: + return ProviderStyle( + icon: .fuiIcMail, + backgroundColor: Color(hex: 0xD0021B), + contentColor: Color(hex: 0xFFFFFF) + ) + case .phone: + return ProviderStyle( + icon: .fuiIcPhone, + backgroundColor: Color(hex: 0x43C5A5), + contentColor: Color(hex: 0xFFFFFF) + ) + case .anonymous: + return ProviderStyle( + icon: .fuiIcAnonymous, + backgroundColor: Color(hex: 0xF4B400), + contentColor: Color(hex: 0xFFFFFF) + ) + case .microsoft: + return ProviderStyle( + icon: .fuiIcMicrosoft, + backgroundColor: Color(hex: 0x2F2F2F), + contentColor: Color(hex: 0xFFFFFF) + ) + case .yahoo: + return ProviderStyle( + icon: .fuiIcYahoo, + backgroundColor: Color(hex: 0x720E9E), + contentColor: Color(hex: 0xFFFFFF) + ) + case .apple: + return ProviderStyle( + icon: .fuiIcApple, + backgroundColor: Color(hex: 0x000000), + contentColor: Color(hex: 0xFFFFFF) + ) + } + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Extensions/Color+Hex.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Extensions/Color+Hex.swift new file mode 100644 index 0000000000..afcc90b692 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Extensions/Color+Hex.swift @@ -0,0 +1,24 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +extension Color { + init(hex: Int, opacity: Double = 1.0) { + let red = Double((hex & 0xFF0000) >> 16) / 255.0 + let green = Double((hex & 0xFF00) >> 8) / 255.0 + let blue = Double((hex & 0xFF) >> 0) / 255.0 + self.init(.sRGB, red: red, green: green, blue: blue, opacity: opacity) + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000000..eb87897008 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..2305880107 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,35 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/Contents.json new file mode 100644 index 0000000000..d41340246f --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "firebase_auth_120dp 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "firebase_auth_120dp 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "firebase_auth_120dp.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/firebase_auth_120dp 1.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/firebase_auth_120dp 1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6374e30edb3627e445045a6cfaab0ee86500b1 GIT binary patch literal 31998 zcmbq)g;Sf~^L21{EAC$0i$igWlopCZad+1OMT!-t5Zv7*!HQc6?ogcI?)s*m@BIFP zHNXZPMGN<&Qn3!Mxd003YqDZc**0Ki%Q`=BDjuK4bl&ceQszp5y_ z2fY4!=XR7N!LFb=E9$xd0G#yyK5*VelAf@ODDFxh=%WldNRfD4u5}_`xf2t6p`yi}YS``ez+qn#r7q@> zu5KTse9K&d#xhPB!iIQhCR7k?a3yCgyl6IhK=$r7veHpgcQyZM6VKxEfb77^&-`gy zApY+2v4C5X#kE+#u593KKt;pD!Wew6{#+Zv-ZuZY zZ3BwW$X1{eTK7Z0u(M$1!)#u##r6Gf>il|KQ`d|4V{lHvw?g&c9khTu*Z8GW{_T2i4a`+goDX2RBuRDG)l{dj^{T!t# zGc$^H2_D>K91d~J=HmOR(V=6kpD__jf$KmSeO?(yb*U9kCbBN-U}%u+_5<;ihn0q? zh=`OZmhru8emQQlk(4toF3#+?T*|(RJUjI;tQVPFs9_rHJeX68IQa2v`5 zwwPQnn{5$J42HN3dvIkI*;ygpczKK-OxGps&0+O)GOxgS{&$ahqb`zswY`OX0_eC> zsGYfqGpFKjd5QZ_-I+&r-AC`RsQUU{o~tO)Ri6L-ArW%NvY;_EW7VCFMs^kC7zZ}l zOIWs>yt7>Of4;Bxbt{dpzT8{diK|OWLTH@+IrEY+@dBp%rJGJ8knMr%%o$)H?%HOT z@MjI)qz9837%Jh}APP}a!=6wJ)m~w|$OHBdu-CywGKWUEMTPX5xI*`LXUWaS=6=rU z_=9%gbj~6FxprcT8_Ct5mWhG&PVBufN%mTkAFt7FeBzjAsRS4fhEK1`|8RpGGet@L zt(6_l9Vp7tp&yP7y%KOiK~#XuE6fKO%t<=b<>BP&3$})yY;OaO`EiGdj8T&GCIrE# zwX0BzNN41UFKE~^1vh376O119zR{CohkYq@|1&p>TFxtcUlwa_FOrn1mq%e4!}s;V23T_y0FeHODqM@^jfLO7s;t421t(I6c|r0sZ}N=rU@Ihq%IdnqVw-rP2xnz!lAUWxs1-YN;81 z@gX0;{TTl~z<`$Vzrc|oYDQCkW}A9_Ia2y(hqpi#<1Gum?Hk1Ob+?DT*b)=heEl`7 z;~Mbg|0bd$c(r|6>)!6cBRCY(x??bxAV&kSLdE%p^_2O@*j-k z0y|$gxIz5=Z2@?;;>d;w4=m0n%Rg@Rm&m{N>bp-jjqdx3&W%-wzq@TC*!;KDPcvMd z3x=We_Blde7(iEGG5@*!kL0MI(Z`9(cBqK^rLC75@E;2S%%8PPdig`>Ti+sGosGmC z01o7$xez0gg}uHt8+avE{>9%bJ`4!?okjR>t;~Q`PYm}?2LdUDX@yl+&b4BNd9|~r zF2$1uDvzeU-NV%=mw&FNvn9EgvMZFd&WIhJzY0IM{tYr;)`PgI7_V+^c4yl{*WHZQ^_D7?nKkO=s~~=7*zNbWK0nMb z)0`-hpyG@pk7*M_%2cUbQHZCxU-|ZXvn4>po}wyCF!wzOrx@IfE0H(_mu?y4I!-uK zJlEev0%naRa>x@VOLa}k^o-;)}O zGE|o|d04wN@3Pn*Urfm=}0YWc~PE2|%g(0c?N;59w_Jj#3HYQiZoZ zn}IEQzv_0$F8XH;fhkYKL|{xw9r5Gcdx=W2oqyfn9d<}4Zu4`UV}}iEu!JiT_?pS9`k&$A zsrRRIjvVpHDaG(+A9%vu5)I!p4fZ*Bq(9Z{7tc1;2cm>Utf0BUJR%X-c&f{7qvx?u zhng-{?9ACN|AYzZz$-qy9iACS$aN$JTU3c!{kOO%%Z`fWkmgBUg(6$Ibpvl|oXy|# z!tgGSIs02ek6{X8pw9jj`hScep*GWmL*>g6wLX!HCvas*UzX^sW_)T9;OYl&?~dW( z$m+oLWwl*?`yuwE{XaXP@cJYK$t96doC6UjdS{(C3_OifS0qAXPgC`8zGYwrJA&u3 zMF063jWag!HOna*+f$qDE3?G}MHEAF-fxj}Ilt|-y7VVG@IJVyes@w)$nbQOEUon) z?!^-p+n=!`my*aq0el*wMU_~l{i|fp_F4=o^N=?i?E3+v0e5Wf(;g=b?_f?*R~`Pm zh8R07sFQ{9jo?RZCAx4LW_0N)v%P+9X7zn#r4K(%((p)zLPfEBgrjcg%iyn4wx#-! z`P7PrrTTIvkU`dL>gUdKrt!u40W67<^I=RcR5sL<5((@!s+;Y(4(+bCr*Sl#S2QN4 z$?ibSI3}RV-`<*tvgoy3x6{QLb*wWcUH(tHZ4O6q8wAwB&GSFWv*m;g4^0ayEB*4v zJ-NZ>BYN%j40g?W0ef`muE?%C9gZ~bV#zI5XiIa!p7bpz9PXOGLIq?^9KNq(nz-Up z02Q`?uZ$HfPwEb!ckFg8at}vVKchRv1f3-==v=2Stw-5%nvHcqJJ(YB)nNE-!_&~9?0(2P-NDZ1vYFdtIHs~U0-NSy|BLB$Q~)5E?Q2k?~~Y+x#hOs(UluZ)3xu950J z+i1O+ZDKzU^PdH%hoB|kc;<5G)JWYEGp$K2SA^4ZJ-D9`_Q(zwxs^C?%fZY@rrHVD zYOJr#krwaKvw?dfwt-v-(+FCu>_n>RE0LEa@O+6mJA-TN%y{?HwFosLhq7M@8KUyf9p3=Loa^=bHD+j^Big6cw!t_P-zuR?bKcICDz$qi>j^E=v^a3mK%g zN?fEw1K!=qx=$bUKq~vTB@`dYY3D5QB%j-hNHW2B0UDV_Ti3Wrk2C|-h!Y>?dqpMP z&8A>(XZ^eq{-m}M{wo?QDOGD08`}4Sc(Xda)`N@*tVIo`gMq8ekt%>B!m$HS_Z8E6 zyT}+bNbUuY4$P@UJJ6I!Vmb_GIzz(_9((=#fV4jxZZ%OQ1a{enr6fgHe4qei#Gna6YdJ2+l+`?hamH75FORm>M=_W*=063%AwZ}`_ zwZXp8hwU4rbdwZE0}m`FF7P=UZO}xl%D?4FvN$x)nxCZ z?5fF};~xsQ`Y8|}mwnytBT)as8eCZ!v=sb859$auM|u6lpc2THYn(#f=_J)qzhUD( zE#PSX4#wTLKc;Zop1N5}f9dBAvBQ!Z)le+PKdo>-u8+(ir2vl7 zWaZhVA)Tu1L(hk2ME>F7!8@(}^}44iDKW7ie+vVGG-Tm_@hEHmg0DJ=toxWg`(fU@ zezO`6!*DwF^U#4p_cmX>r(Y?DPEdHM2a{$*^6TE4BP;w!(XhRW@|Qyjo5pGTw-)^ETl9jPW7xG2VSIDQI7z7u)dgWF?;zw4pnifB2gG^i3qH#yg!+3Vo0R zBKz`NHSl$*ZF_+F%crDj9uA#0o&%V1S9Brjf&8GUb5COOG19*S17r|69ffd6i&^sc z;d6=k#25EzGTI<(@43s2Di|{+2*fKqbYNJ0-4Y!>9Z%JVynEUrrYM!(61{FC8Bg?B zreF0=8Cn`#HTh?XzYJ+X9N&Aoeff=k-87Ls)z!fA2MgpLF~XADVc2*SOo>NkY0;~- zw>vBA2TlF_y+Q)u!Iv>~s=q*K!xPdaya{l9gycGooThY^T*`^Ukmf{ug_AL5*9<2R zD<#~@TksjxiV&B!g`EH8r-b|DaQm}&DMv+^uuvmcebX}jq0e#i7a_xj$kxk_un6g@ zxK>fcDtwp(xeQpUx2>yOraBy8&*J(Aj8?6~aV_{^3VSL1C~nmCPvk%q^5rGei$}|k zeAhMGNr1!;Kgh5kKju=YQY+G)S-QKw_ZbqCeud@~PzvGEp420r0>7m_E4o@unHmZi zZ46W`@&3-8L=gSJFv= z0}GYoK?07GuxJ;A$h&S@rnneNGxm#Qv9JAj}L4s30646e(#X8*=Gk~RmFJTMI-PO?hL%e+JlI~p}ssm|M9=Q1*8WY z%8K1yLxt~_q^Vx6=O@%k#y_VELt+o6LoYSqfk3K8u+JsSkQfTLB?{2Q*RrrT-vPQ0yIbNO){ zV_qctH+(*h;b2|kZo4~5-431;kP`tKmA3p)pHhMItBmKOk)Y#p}FssLD8^A3xk z5%X_z)b)~`{O(-&;WUVN6)fSA^4<#9DmNGgCeW+|{H< z?dvZzAu4FlMIIugX60mf@z!oR73bIV_}mn4sA+n`T;WjE9fSOP&>e4vw)2ZDnf zt?TT#oUY^0Wv5^J!##eVZvFd6J+LPT6z{#lS^|qoIcXq87-8?~)(vXkfB1{r`~cIz zhr4#n!x>fO9P?NDib^eiBfYkQWEWCmdP^_W(Qryu^~?!x&aE9w+Zl>JwVf#6_9u}C z32&#L*fwRuUG*=&hk(c7RWoMqelHQjr9|$x@=;Q@C5* zy)lgkG1jNK_#hSE+h-v@=nv#SFJE}s@ms>57b(4>YjS8LzDC8fG>!r- zJ+I0q@mlPEw{4J42-A~i^H@KrZ{q|HERN_x#EoiP1Q$^*7H86aGQ{ z52%q!)2|&sb8rQ623TwRlvW?8LH-3pHIW$Jr~~TK#DL;{MNe!#Lc+ zb*$a$if1qtbnfy-l*U#)Y6e8}+`ai(0H~6rfy{xCcs)#w%42v+XCKfa;hIvyF^}54 z;hH=cQOlv@?VRu;??C4a16%;V@yD+B8JvI$>1XWxHQd$mqn> zb;}d;r1RBsw<_}o(39(7gtDprEOVgK`LQc%d=T}PWwN`^ng#h!vfvscRv{j(Snk*5 z(#)f0y|W{QCta&?_pVOL+(A(F15>F|TwMnHx7I&Z{8Wh=;a3ugv@JOHXF^Nd?9qBK zVTv!Ac<0u8Y7`yR%V**+*R|z=^cwAc^ihu27RC9CJO!kvjg!>1jgae74z!gUVs0bs zW1u%FH+nzgH<9L8k=D>jx{$N#TjPB}+as>*A66K4C>2Oy;os9yidEgvnWI@(|Cl}N z7$+(fZzk@-jCfi~cN!1w-K}~jx>ud|m^%$l{+-8{>muAQIP1$-!1u4fa$(aW_GdmG= zrMJ*Dr<#=hTj&u+%PMnc5Xy!lqXb=O1qwZtAh!6vSV{FpEp(cRc@4BU=7O^4Qu!1Z zzkDPAw5^_IcA@l);tt;n`eXPr&&{f`Jcud)`r}<~cAgR7Ymyv8)h_d*WZki7fStIe zO1*s1aM1C&ouB)L!2<=}JFkbx*RCmJNtt3tgQvo^fY&hq(0>`B&yRjm==92BGT__u ze%0*{=;|C6l=edakt>C7lUW>as=V#g@OXs+dt&R0EdfFQ07;=-qWNYoXpaqdlQaIz zxxhH-UPbru{SlrOKy2K+{aXF~?uMO&g0uDCVE=ZaZ*Ebl*delR9@FJ(Y1it53&N}l z?}Gmf@p#y*WF(W%lQ<&uGedN+WpWCf|aZ~4{-!;A&X=?(ckFxHX$rVEoN}gPcGOOC=kn={-9(> z_PTs(P$gRxG-T(k%1H|v@U*q4b%&AGIW0e^?dNJn
Ur=oRQk#4gTV-@Vr$j!~edWv`i`;j7OqYx>!?RMpC^4~&T?(_;zKQdf$ z*%r&Rlbt28L$X7(OO)%8dF*zK&M?BQc>_!`zLr_AMb%HEam5I(408Qrr%A{GWq^Q; zh*wD#NF3XA{GHB}SVG?gDlrVAxsh`cESfQoJ33>!1XCGLK~LeQ6IA0$ugx3L*DF(e za|+s-_V8Cb_$soF19Qfe^B_O<`{KBPDl8wI-}Kz9&2dzaNPh&Bcd-Q!)dA;=QZH3n z=11}$U2jTS{xW9^^)Vz%Q%Xvkz2E$fRvp`r3o~n)dB5Q*MwpAE?(3jWNcS(-7J2Yq zj$R*CGoK93Y4{EH%-s%gvnO-e!bfBGZ)hpaz)`hQt}q3<{F@~1jYp3`O1eW&8uk;J zoM%p63m01vt0z;YJj}a0wBYdLXgK}@=U`ZxvLe2^mCTysN4EDi z+W(zBTi{Ac8ivacAuQefG?*};9sU4l^vMB$MptrVSHK~ zClnUY6$8gDebZVCd}P5^n8YXEYg~O~pz-;jtf0#g{gBIG+ly`8UHkFGL_JcJ*7h<= zG)VN`V}{N3lFK*cBPAB25=&5Yr+XW7^r?!>zESIzF@BC)|GI&H0`sIQ;1}LOrkC;Q zZaWMyiD>Tw5n$b)Jp8SgDbli~-?=QDq*FJ#Hse^> zDYA1}ML}%zd?48pFTomAzU@&jwO-tD^@d76=($e(X5@#aO zAO0%Tt;;p%%-<};aeQyW?qpf7jaQ%iaWi}zH*pv6aK^}9=Ti}HkbT8RK_sj$ySpN5 zX&F0zJje3ALB~dzq=SOY6PVrVdvP(!Wq8cg1vBYHP#~5nFnnQWT*VjVLkvT5pz(A? zp!{ZWEqvqh#m?l^_xEs;jf@fro1=afxWsfKGqzsBjo7a99`Ao6Du-7a(k#{tVM+4m z3e<1tx^Jb>V?eL95=7Rdj6ogRYOnHOnlFknq$C* zf+A-(67EK@@(Dd7CBjX&Y!_C0X7wzka3WG+{Y3x8y>FJQxJYM8dsO}NZtD0@F-M1I z6m&Ihi|k7#b>BR7?8ymeHbiNRH!9sJ`&$$p zhGg7$+(s4gF^X7MJU#_}a}qQzbSyPWnY zB@?NWot?xB162r{q-VeyLPqDby07Mu@}#&Zzu}0ZDNR@b2`mrh08i#lLU?+=7RQpRj=i(DNWn9!?A2 zP76p_zc&7nX)anXIYsI#=<(&>Fz|lc(gJrLgc4jkx;Ma%Y#8VMPrIKIU?g&MdS{wz zuhjJSD5QLlA>B@oKC~szF9Iy;CFHE^5TjG(R(x^YUtKl)6cXyD;gJ5unQFl@x)TZs zIrVWq{bo0||9@uzQqaI8gaXeo&m73w1G19AUQwd7K_+F*29M+y+0@KPwQvF6>)Kbt zE#kpLX^9NUGUCuW6&cdAbS*|ZFm@KE$;EN~(Ir#_Rai==4yg)VP+6-z)I#dHuNLU{ z;ZI_Jci*u_J7vhOyJD6``jNWTjb4I9Zfsird znfG`%Z3b{DIw4g z>BaT({~~1Ml2N(nc%7hf9=92N!r2_e^^3sH*IkD6QWy#sCla0EzdG#|P%W(%#O5fB z)}pZoFdS1})|9+H=hJkvh2MKYJ{DGz*@q?={cMziV2}E80_JcyKGqIZxwi@0ujz&> zHMk!S(rUrAMxEkO35G?C%i0P8eqP2qiWuwV5H1JpH|zacZXg)(4tBd}#Z?cQe_S4i zOBbt{gj<3G|FC$M^a{#i&iB-NMez5B+4>F-E>=L7;wrqWCVR5)M{0ronORWfh^I0t zPJ!klb$Y5DbokNJgc@9_qxqV@1N;q3?Q7HvIe+!Osj<*wLa)R>I}~7HXCvoorkMpJ zxO*tKtfISc#;yzVlF#l3WF~GcKn*_P6!=Z5)w+PW-^Alm2$W4~l6hJQ>|Z&kRC?++ zR(qr$hV*`S`zmMWEKGMGEUWr-vR<>hzIsM@UPHy&0_3XTYAh><6&TD)ETmlzi5f7j zX6>uO0L<)~--=gIVp8N*sMjCp6KVx~cu~!bGty<-@{_Jzo7bI)%hMZQDv>+s|3Tsn)|kgIXPi?~h*gcpLINzn+9>&&gky@`mtXTYfg$hdXpRjQZFdcF z@9Ueugfv>A?e}-ICm0pZKR%E$uW-PA7nq^m{~vdfUL8W)z{pX(25KrzPN6) zoU*S+{79E6Nr7pKkE;;9E3I#)2VJ~WGV}9#cfg`bQWWyZ9+%1O$J7cx%+s)%d z-FuFd?`x_7kQd5X3aA*jZso8#lF7Y_<;(T-e+$&m6urnSJy|h`7`U8Br=91VV>`a6 z5--Dg6Tassant!Qu=y*H_sz5!|K7~0W*tx^F3Oy5sfk^tKoXnEz#}ozTcOjJ^C5a! zOjoZI>i^gk$wf`}>P)N=YApsmOA2yN9CFMO9Ooc>C#6$_mIW62d$;@clltJmcRYig z)CTMWoBqTcwl9d&3Op|fOFBf|I3MC=lrp|R7>Sz%R_9T)_Z_#_E5+>+N}0)a`jHiE zYtLVY+aFnBo3DLjx~@T9_{uzb1->xeRI`pYQP1%0Ntg!M8jLZZ?3J5cHtW+IC_1_y z17kAww^pkrYrcJX0HY4^4Ap|WJ8G=(gWT7+(rE2H_&450Ei2TME_br`rN_6tJbo{+ z!VxEiUmzLK#2?8OG%b;%^ixOVHWhVxnijxDhedSZX<%F7*la>lclM;=udgt7>6pK_ zQDGxownYJ9$liVYSvZwdnAMfncIh=4!YS`jNODY425YO-Y`@{CY1g?*B2SuJfwMgz z>tyo^dER$e!*vp4%)=as%g!D~v;vsK{&~C}q#%HSQ1KLm(9@{cg=SfBz%!BCz@{ui zI%KY9FdnkIzdB;uxc-%htFfa}+ula5?d0pLg~vPPW%JmdJ1dtM6_}8Ixse#Fwwnt1 zti!R()1deMpd@D;0&Iwh93iSY@(_^de3YxoRnwps;EM)v+Js;D>noq->&PTpnTsQ2}TCzwOk zNVqa}6&fSXQ^I)DkNd4D{viJ($gbrh5fo;EaeRXPSLFk{wQ?lGuyD-CiLC+GlarY$ zI>w#%3e=FI3xv$-*A(|#H4bPX2Fvwz5X+$IXji*$_hPDG%XO{k`_&PZAs~0Cqp->j zM89YqGi1PPv(JbFQZi+Umd?NH6ful35yk?RRZ$UcpB;`2@u}QdUkv zI;E>{)KZMbM){G0JK`IJMqGV-f2}|!St;ln;TH97NG?@dmo#mD!Ii{k zrQYL4o$(%{7aPj$PW|7W`j9!M01^k<9kK6jV~fzFUjfQ!z(EiE5tBeemap8V!UVx? zRMT0;`a7+#R7;sSPNZ z9Feha-Ed&vLdpARvNO&;L>lqH_wfY6UivXMF8NbPJrvf?{3oA~AxP14(Nk=`Mc*^g zU-rJn{Y*w^=_4_GNnH|3A6 zDDtg|N-(la*Hg2e=FQPNY?=MI>y#)u@SpLgijD*~+Bb23M^LCGj%q<}yd%sX@vV$ zR(|L?dGNJ8$50%7AR?~X3{2DmOFL=iTAuUT?m{A*sl%`#0qxpS6WqeRo=25PUvBPM zvGIG8Rj#SxLOO80&_Eqjg2ELh$}uP{@~2b3#BCiLZyK{J2CF6`uEVL{s4{6?aoc?B z%P;*frQBF4XMT&NUpk|+C#fM!>~c|*DDEb*I8Dp|6%_+)`a=T9{m6VsA^1^b_?ZvV zgQ!;0@mc1_*tK=I9`|4TsFb)fgnS9UhWSJEPL^0gL=5fe0T=J+lDw`qR-OqZ>pNEe zG>c-b+$g_eZRJrWAz(B#Agt81CFUrxtPZ^d#9Gs5(;h`y!XJU4?@-WC_ITV~>9SNzaZc|5H3P= znZBrktrDAOik9l8s1+h}<7$xK$@IL6ib%0tq7s_NTeq8Y*CVU?qBvpo%KoB01X zw1Z;tx$9cF9OS7M?+T2}6`7d8t}1*l@Vh_(&PuYjA4#TyaYyTe z5{~o-I)Td1wj?z)eh2N2E#aY;xXn7wZiw&m-ooVD&5VjA_`3`Y1{37B7+FrbtAV34 zg%vGVd?pdRdmeqvZsYJz7ISWu)+I=M?xQ|4Ffo3=h>szG{SQvuZ zmEXZ~qopDN-(V$V)NvHl6rM~C=$<#zS*fMw;Qp^s_OCMUHC1)qPVA%?E+4O&bi356 z<-D|EugGI4(}~hAxV?u%<48|*cgjpfZwiSeGD`+CLO=42_lv}@+`OMamFyJ(1jz8hM z<=(~7QV(aUjbla!KZgmB@ckOC)629#90~SBN)qhI%4Qtmkjvu=KIX^RJooQZTT9bT zc^T%IR81+LJzx!}+vNKECqV~payzA`h6uE;OdQ5)tL;9xM{dqklgCl8{%%tmLZnkW zsOu#?G#tSlY4(A)?|yrsAEYvs!2X#Ox)R}6kS=b;U}Ld^byHO_RFxO-Z1D4Id&B!5 zeNjYJuw<{h_2-GGOCOP~_D9)|4I9C7l z2|-|>!bAFO?}j2fsRs72sgno$E}Y0V+1x^Wwjm&VjBmvusEEf?4#B64;b(K@_pewfaaVeYOpnk zOLGVw05Ni1NNNJ^*#@yt_9oLLf=Cu}Yo)w71*!6p4D*H!!gQ4atW*-`3@00mMMgoW zr;S@)TScR#`eHT9(4%#+rR7UN-!3OWBk2}$_s0_j2e!byrl5#YaX44+?U`=M-bp1H zkvV;$RSNA|x^!*Iv+7S~_{xj20bd~HAyGsX6KB;HGaMrHv2!eUKuVy3k01OO$pUsb zUJviC-l#ZA?1=&{pEbKeZNBuqk0Y+dgMX_u5p_xXz+7Zg1u!mhw!3=p511ol-4{hw z1@9RgjJvo%%$miqn8cq>Zs+ROHJ+GX>sA;mVS;--;$gQ5x1~h7b;G9M-JZgbD~Gr6 zj8@|q_JV6QvG8ppFxoh^$N`M*EMGgvyT7?J!y%4vfekTh5Qoc5`yBMeEsy_&!BNa3 z(JU5*ICHli>eIL@s~{25q;YJThH~B{T|aLP<&46w-E`L3iC>>)aiA|r8XtwiIULMV z++}$3Os9(2OO4-+>q5-H;)tv{@T)N3e0ey(YI&tlB zVgKD=l)fy=1##3)%&BSU&jEIwk1f_zh}8rmZ+bvOB$=ZA$gnm}&1)}F95u{XmBMLH zIC{`rL46|UxsM2XDuEXz963J=Q$80eII(KXDzQwdvlxCA83aWt=>XNAf0eXhb{_;c z1pi1w<3c!l8p^yaW2cm)$W_oS<~z=Jy;IF?w&j3kFON}n0QbCAWt6yS7P!A&e1>Xz zStqXsw$O=&g_Txacv1=CL@OFu$NZ5&^SJW*a%B!#z{}!Zn+=CC z*_dg|wfxYjN_#6Aq%wQBvO`b@v#Ei>)FTyLbqGDsGqcZ1$fz0kz<6nZuRPl=(nQH` zEp}U69sPb{*o}(5;LJo#JU_$s52&ua~%+1xQ3M&o> zmn&TYy!N}KRDjLQ^iCY6nqbE+o%a}K=Hdl_qbl~rv6>i^l~pDPi3?UW?=~v0k~&w@ zb_}eqY~Nz_GbD?1CRhL1z@!ODE2|@cH$RwNK3^1~P=yU9eZPteokES9;|pdr6Z+Nk z+J?@$`rS2u)?UQU80Q+xN(_g9l*tebd?>nvQIv47+qnx?2}12&q^`TqKwTf4FX1OX z5`Hy+LqS85nNXh$DZK!#a`d#;i62vq(p;`imh)V9j|laow;U~6e^VJ5wX<4${P2gr z&mFHk`UlxUNtW}iir6T7nmnddO+JRd5*-`EF-?_Xn2z@VHf%ypq#`EnPe-iyr47@Uf(wp)<4 z`nE!AvJ6+JW@n{hAuwl>Z1|Ze(x&}F%yt}jn5Z#83B-sPnHxNQw1i7H$o#kW%Az;Xe;ubbrK~f52k6#@W5o=milqL{P7S}Nbp0G$*>;y&_Du<|0sB94;_M~uRQi2I9xPJEf@@4 zV~VR%vL9F6XE^)huT=JwK}5=#*ys~wrKHULH~V;0dp-*+mM}7$S|WqEX45!xE+%JH z--k8;B1J83g{oZ)NP`XZ#-+?dw}TGZ`F=y>9oEj?FbdzQ9k4|COVx@@v=fV#dw%_su8=r{b3arm=w$=tS=Rb3by z>3JHfpQ#pRtcaVk&~FHRm&yyUpxGPN-+Qjv7C1jlfh+o4Pbih=y)xM;)`@+Lt^d+^*GtN~gq*`h5EeEkY&7m_st&k!e^s3pe(eJU%^XE!y+kzmr$M``&n!0HDQq6lP{3X|3;SZAu9FkO^D?IUQCW;z%=J2(8<_b@h1N zb5vwRB-Y;!Qycy~UxETkhuwBh#gFec0pbQyC2|jQ!|4`xK>ms@q0OsrS0ic@$t#SK_tq>C=DH zVpE38S{6bh&jQ9-kshN>@~ttzWqEoXo=l9W4;3)wCA+Vk=rR{FpcQQ#A^r4nmVm4S z)qbT5qpHLGypKOj2?7tD_rv+N2A?Q)y^G8 ze*CM%OTkW9m^$8>^M&dYL3a71e(Z3~v~~m$tWf>^GjLZ6E7Bksja1CkJzcBx>G5}S zu@Won;Ob{3tk*((8;FJtjPx!~R`N+1TqAhMJ-%dmETghg0?H#;)w{ zum(0f^f@bb_RIlsFHFHoNB07Ohm$aP!MJHP7Fb^W5$ZO~8Hu;{wSWcgYQzDX7ki@j zZp8SSdN}3jO@8GYC6Yx(l467g6Frl5)iGiYdUn*2xl~`aky&4Oi zeK1+u!X(TwcfAkayVRf2T@cEd5jK7sP|(9E>|$Yop${Ar&ZbWR?;^TGxpFib zQSRQi<64BqY=wphnvM;7EtRz|WL&!0Um%=l76#p**4oUMac^S(P;X)}q;aM+VFb-^ z|1Y6+G71{YgMO&G;~F{yTYlk78K_-Ms^Rh1QxjAw1KVjxAlW2{;bT#C^PNLRMnR<9n_I&cPVd`~A{&MjIL36Uh6gTZpqi&*}-p-;trmwzcB-3OUK#es#ApdGj)~xmJ zFj9P%uD79<7J-xlT4`)(BZB)Y!u`2^?lEILm>}Stm$=kC1WR!s_<q zJewmivG3eBQ4a8%A8*5o>#}TS3kt9YPda}OH!yr}I@R^ptQywaN9Xmc8lhUZS?~IG zJT^8~^czyFGj?vTD=Kv>G(-i$yg(7-O{#zIP?NCi$D63B;q+<40QIw0txq>qv(nce zpCGQBe>oYl3a5LE$BYD;faEn_7Aau`k3p8RHk^{?zHXem>L#?!@;rK#`FyUMAku!* zj`J=nx>wb`Z$o26l<0lq)rrj6p0o+y8O@o7o15Fu9x!)pBM79cW%t+`+=SrXMSS(R zvF;|(#5_YlVapsu6K{Uto6JonsHj|p)iiwlwI#VXBW%tmr3v_m-tiD zunFjjo^8R+U{5^9W~ADM8OC=XsgO+HKSYNe!)?yS@l&MWkAi+C=Z6d@d>L=PaOP|k z1am;mOTS={ksgd2%RFDmVMAt-t++%?HIs`tbOu%Y)V9lXp!Js%pZwL!hWotp_d{}H zo@mKQ7ZX)%mQ!MXcfl_Q)5ENWL+u zs1Df5Lxt3~?pt<$Vl=3hW1WjH8>adBe~`@tOEx0TIsBF^bo@z@k(s%yvO+@uLE7v& zdY~jTm0>047?h_W712X|`T1Kl-u*`C$}fu9v*h%yfTKs$ZA>Kom_- zu?Qm!QdpgQ&8yUs6A)2ye$YuOcDu{k-VSA`|CJ6_{geD4rk(V?lhst-^#9HRxUkjq z?U+uDny=$bj|K?{2m}x;Os=f7b0K*kM`mVb+SuBX-Tw3>b~h$ipS+%Uk(YN2*VQoY>6{>_-Z~8&5Jv`-|q-(D_Lrxbn3Y&B&^vNLls?R?d(SQgo zG{V}>&Dv+Y$WQ4Vr>al|r|h0_ud&T*FST4w0zz( zTu8(DXS76-n6L{7erNkparyiKjxzT#Ll5@gRDk;2kb|Ghb391-B@6f5Rvw-~oMg)$ z4#H$eA!bdx=VK|)lU&U}3Ok?$cPGI_GU?one~=1O!#g)I*Jpe@rGu#?#1|`>C9b(u za1~SnWv{yNm#q4{W`y3vcZa*XyC}-5RNOC5Q`i#$S;q>Tc!4i5&L^{%HUa0KHzBAD zqEo4MJk`R66pcQ$D1Lh5M72N_KovThgkWT;q!XIQC^1MF`u|G1%C5MYW{ZwM_m0G#rLFl8foAt%k~Y~0g8^(ICuhV>2z-1NVpzplRZA}Y z;!9(J&ImYkTKX?j#o4$q^k?oXKR|KKR&az9s=U!QUjC|dzLn3EjP;AVh0esOA8sGP zcADg2ox`~lLxLTE{r_sqh1RUbc*|4&~19aX9dHZ_+XU-pd!{Ope}vPTwe1s09k$MZ(DTwQ5SS|*urPL+0h*XtbrAb3b$sV z-Ey?QKKqx;=ABHXrVUPlUo)@|*~swm(^Z=2YWJsSP_a{TiDBv{}#5~OsY+J(rUi{{m-DFWaFSetZTwUaMHDZ zttQrO0;7emc=-v@1{@V$)`@hEHJEe9ds?_VCdcDCq8+lLrT4d#JHJXX+)Wo4UvGx59`-sv&dz-w==4*-3v#B=|GOhEFCPo% z;=eFEyQ_{`K$;_aGuT9NE*B#`+j&?rbU^s&=*)}x!duP|=fopecs?1m-GKYxGtsz# z=vqr8Ad9;l$L9|orpldK?o#nit*i>ZnCK=9E?!-LHbYC*ndaaukPlTd9~^2NKvwLX z&HdM;f>IGxF;FNtnJiy*96SOtf~G z45UR%e}I9Mu0Nvhx_)6F+$Rn}jDPi>u;5W1I|}Re5KgK`*-X>{_*voh%2ge!Vpnq< zutXAqw}1P2zLhBz!z;pF0U&Kd#DEqhFADTIAHHAjiYXT;`u-4fP};CEMt@Hw;5|_m zZuPk;YEPHZlxX06Mly>6LgvwKe`94P=(KP{u5t^A z0roAv^<2-TxWy-=pN3$AV#`|NNlg_Q>J$(Pu*3b^V4%{Ww*Qwl_D2#k+_{ydWtz6XbD(e9xAjaGr1?FvB#gNJITbk->)AHj|$D^w00pPp#MRt|6z4z zc2-Su`C<~bb=q?u$MBy8f@Cw8_7fdO#)!>=>W-pNscSY9e&+__zB!bxxEJ9yUnh*S9hVN-~3sKXb`Va?M-ikE8M6 zXzA1`qreh`5+b@?B!~V`7&dibers?EUv(S>upjm#r6oxQ@@Eqq&B28%{#YNI=pQ~i zoBW*=HvX}k074pBia#X=LWwybr4PUNC{ME0*8bKap8C48D=&N$+l#f#g{V)vt0Vq_ zUCCd++GIQsv`fa*hw~;+k1Y`rigt>@;A@hAG!YQT%K7~6P}J>qvdfSgR0WbY?4@w6 zC;CaiTUQ4=#;^SLi{}HM@`rBt0Cmnr(3+`YyO!5$TF$shLSI!p#6kgxwH?fS5%5&IB4 zm%%}$ad4fo#c!DDf6R%+&0 zqU{rpySVVmxZy+N%zKE&%!CKq)`xea)Y*~$UOLczcrv_`-pMroTCh;8Qre|ZJcEvz z_WNrn?6;ikR=f;-p;;pX-sAd(P$vt1EvqeghNF*0^>0_tVD5ucyj=g2`>|Utu7qHY z4;eI95A8RaW51r}?eEp%!HcZ9(Wz(_@4XolWjciXufMl|;lcj8#M`$TEJ0#>^i#~A z^@ZldjHr;(|K1(;goKy`U)fV&*oEXsFvt(gBW>%1?(-0HD;{4x4A8#a9;5Uov9*lX zi(!4rlquXVnz1m?BVza{oSgFM<&UIh?y4!+yuaAvh)s$0_5&Dswi^*fV4D)xL1Qq) z5wCXaroXX*Vc3ZiHSpJ~w+ic5%$?AuIxZDMUZzOI60w=JQ+0C%0){|5gu%HQIth11yp9YoHL9Th8-ohFPP=jD> zj0hzX)nK+ndnE8hYM+VMNoiCnMRomUl@6@K=1i#?J=U%`F|t6G*Fy*m($@C=36`2c z7$@i?9?Gly@6sF%9SrqBH;XZnOC*@Ny~^0AOS<2Gj7JeM+T_O@U%IG&SzPzDUSOkh zsaKs2z4i*w2_la%mk4#3RBR`BG`Jf#RF}FR9`%%?X@fx_$|UCbJ&tV7q62?D$*NxT z&eU@2)bG3G%E49dlx!Hp250%}BXlEeHkf-*-BxHjD{vkZ)R>%;aYZ;CUn73BkV6-b ztq;!s`Ujf8%5BcF&p5%j!6{CwN;a=Fa-w#3S-s%Zr!NmSX>0=%+x1+U?c@xtp+A(L zPk3KrL-lutzVv%+>Gl?X8db1T;%t8DJDscT)%NpmCJ)%l7WH?FRr0M(8B zxJn5r`J+!g6b9qRJr(Wk=1&QN^$NSjn-%RSJ@quXDK&#?J=%0}%IW49`Xg?>9Y%po zW@@&yMw3}gNOhg%oh5NYjBb-$f&VnGSD&ec8@f~nv}xK1p9#NPu)pRQDaQ&rSvW+^ zG$r;Dt2UT6qlmyClm`xmvcp1LP6k>guzJ0vr)b=*fyk{7Jb0$vXG9C-ErhMixrEDJKGjQWFs6Q6X zCaf61k8@wFC1cLgEWXX?L4&x`Ohih{$rwt^?naoT5D za$7OQQH18x5IB~#Sq`qbqEJM{F4e5PPuiQ=!g#q5Lz*;6T-)(E^Y|Q6N02eW!@dfX z7+MdrB$utTjj@tzjr8lFVIBv4taSODstxR) zSgLls?97{qTv1!J3P~Ar^f^ht$cS{c3O(Jdk5qv(dpIaQzLRYof~zz9$acYZV2B+t z?3AT%geDAPUdwdiNlG<%<%)hipfCI`Bh61{zSRr)p08ZD#CUdg#vK!M(kgBrbLR@d zRMXIim-`a_o$~tjc6w?`L@-;Dj-zTNQ&cL{e*@9?w9V43Lh+l|XOfLF;nkVgSA{-4 zTIaW5QFB-$ahZu3cBCHsddBt`7u)oIWk?f!jnlBzn2bn|6FbfQjgK81a#>f<;QDzu zET+rtt;BCHj_fff@~6zQLffstbdnggdpQ<#`$Eu&!-giZ&gbXn2T@ttyMdRmrY1qm zj-mFvxD6KxdcF69V^!-hJ*Vxe6eB*dYg^arP4!Z}IYz1+QYD8<(vAEp-KI*rxEPGU z@_=alEbL*ZRnyOl#poHk&p+;U{WWCVQ;GeL5$7sHDw#_W`I2KPW+kD=7()|2yG<41OGNZ@UW@SHA=$T?d z@QD!~9-hF(A;lOCCR?U>#z3}Eg~IP~q(rUp!h2O=c;S_&zchPIzVqs=lOx_-Oyj;I zwZkgS6_VV-TCj1|l39P5$xcfEo$lvMr%b5xuP+3jRBfA&l^=~t){Oj_)=Cm*22K!b zb@4tFBR9S|p5u;DMQAeB9&tP~xKCne-e4mYZse8&>Hw#k5^?rt>)M=gdL~ zq#&5IgnFi{{ZqFO zxFqEj#uFl1CR2IhtDYy7-}9%GhnyjpQgq5P%7B$z7W6a`?mTiSscW@PKa?PEMPlhp z*b^?elvY;m&Fk1P9ViW9xBE_+Y@eOFOwy3ub?(>W(YjFQ2#2xv;ZjH6!%MEkCf_lR zC(CdZEGuc1w2M9eYY5s~0YJgCZ|MzO2hSSQI6*_?I$8x?aUiMcdiBI-*408d*TMyk zFu3rh8BJ#C%CWjQIoT;nw>4gG_ZWy9(7J$0P|@|+ORUgoLSJbdWt~-qeIC?$bH9c2 zTpD}jIo9wehO-`f(C}+d;1&2PbE~~hl@P%o^T?AfO*=zA4kJ319%)~|Bto^DFt%;D znZ?p^tpYg8;7!ZM>unPb3M2&46mwat#t=5y!1tl~hY69M^qOCWNjb% z#Ik=+PEp67(mMRd&7bpSs`|&gx=EPND`bc$_u9>#K^a3l49bk6Q(D~cja*{(zvx8i z7`WkSrL7txUPTGD%}QM$q5-4KZBY+bLo{wWGT|q!*6Z!5_T1j%sA9~?J0lF$BrZ}r zq97<3t6a01nTvq5eUhVluLnaCCp2pyG8l9S??;U_KiAB&she!pwYu>4Ng#GRUl}o- zM>9p5*7Uu3w*zBLBlSBSTkXPmy26r*iXX%A)UQJVoljTOvMi*HDF9UFD&=%``mUD4 z$z&Tm^m}TMnLTIhap*s{_~1<$TY~6LW$sF*t5I_%%HKmpv8JJ=P8~u`4eWI zp`ggrV3;SLy?FpPSw z&RW7&mEjWkJNwJBcqkC9c6Zj8odn{XAZYSUk1ZSeqbTn~_2%{a#~9Sr)d(Za6Yn^S z=aC+Lfxrp}Sebmid--%u&6Cgi!{E6V2%mB(?~FV_Q>N{71e_=9j*KFVG@*l zb5MiSOm%No!0hQ7!kyJlcB=nwfI&G1a%l+{v?G%sr#KaJku}h=MS`2_Zc=s}ZpR@` zyZ6C7nqc1ZGkdJmZ*f)M!ZiT-S8jv({g{)9Iol};3yO=)dxd$^WCkrt61(##s+M6q z@4XfTw_cB-5~|giu-{a+xwcs{rz>HbB+(>(5_T?i&cmGn;~VSD2bx4EjV$mW`_XY{ zR`$oIIkMZT$h5Y#4gX-n**4tpz8W)bo6IE$5zQ4gH$Q0ZqFHI=aoFxpc?^&X!VE?2 zmw~YnB_Z(K$YsgJnqTSofKGu-%#qB9y-f6od^i2@CAa?%Rl-MjbEvRI&)+Ib(Yj|8 zwSt7}o13ZSWlxEFqju-h#abiS$^=U6aQnl_T;r9=zX;dm)t#Q>_jk@+7I$4$aD?(C zp004qM>jEA#de4?*@;giQFV@O$dVq}IO8JqFY*9NMfp1ot3q%7{3UgM;5dFC+SmSg zT<+}b95s4{IQHxId`*@)nXkAnX26&qK*<4#=bge|G>VR=i>$p{_B?RB-2NJcDy1b3 zlLvg0WL_A{M+7j-q*@o*f3T58Tc>i6+o7#nne{M6Tl+TjjkAxX&R_QVO*W&Fd!~Lx zQkp(6$sr!u0%?PU*BPwaN31AtGt0B)fEjvzc)0m+kj>&+(zbX;U+BIaP7@}Pzn3zg zjB;4mO#**-byj-!#sFThi`aerqHneB zgMU3z@TBwg&`^>$do*t3!2MLLZ~xIu@z8+4+x?IbbBO#n^@22t6B25}#R!mBWk?UGeYd&pkaj|M9deEt#< zlo{}tcb0yecd7R1gKFZ(n#vAi_yEP9+0=F9ZMajv--`Z6%3F|-mzNg^fNLsHMP#qz z9Vhrq_Sm++Z{~WwD(&WWSK?_+BIKJ@Jqkf6Ks5r{Gt-AA(-r(g}6H7FKJwrAT zMglJ=%SFrtqJga>x}>>;I`79g^T-1ewWNOmm5qaC6Kbw%(jSi{a)L@1ek z$`GKkLP9Y@*h@C%QUi#9w)U_rOUHL}bD9gUji>(-?iAR0(Oz^@7uM6$)BW|~z~kRA z%|}8)LiG>aVUj?#{A#Y+H!3lzB`K7ZaCS`TP_4S4REB3xFteAWEyLIwr zLZRsYkh1s@x3Yi7A%rrO|px)W=6)G>PeRsvLH-M5O(P=_`G|7Z-hxJv^X2 z1R$viC39 zM{**sK{Pb|`Y`3WjR|ICpF_!#z2x^Wd%Mg8`dVW6eS|N<`nbfD7EI4{^vpkbH+W8% z3Av2`6MoHreY~2g%Ut)VvX_j@yDc|(i4gF*tpQI_mX((Sjw&99@!`Yd(vmdrr7AMp zf8AMs8C!>zFf*SE0AYH%R38dKB~a1R)61Z(O316OjvXIYSYBDd5>--GW>sBv0#0qM z)J6oiocolVGWdS|;}MAjx!t}jgDJ~q=bL*Uz})=(B*mOh&8A= zE6d9xe|Lr=g)l(Dpd|I+TXz^X_n3$Xlmr!X8-jL-)M#CVtuInQ%eOzUU&##%m?X{d za@IsOCa*$H$b6X#vf8L4@M$%JFiT*S;FmA@J_*aH^-!oZ#YX_4Gj?l^mC;devCk=m zvPpmf87Iaevy(z{I3Hd={|4_oS0cA(4F{!ec=yH}!~aZ^ytDhgW&&C{e z?QLKvZ8j^X6HT?T=VW8^&+^WEzIua$kWIiHv?d`nku2YoBfY4Zoi*!Yjo97)r^x>Z za$ALk=#KEAE`z^-=lgS#1!2bR2-;EO)7w-SCa~LlaM`&McCgXwI5Nhu53D!&S2F6e zD8S5>kE$|wPhbRtP^*t9K{L?8gaJPcvKW&$xdfHPMuAf&gq75=GlkG}_cyCp*z2#y zeurOvcWs{0nO0wQ2A%_A-b&}e1CV+H!5p+Jbo7ONAiafwMjMhLx|sa3vNB4tSXE_Z z5h`p75_A*op!!wd4@E0zfTJudNZQ%4G}@SGYd8e3fP=pgfsyL5lbLi}=XdcIT!s&> zcCQ|`8|#-CA)>j>W3{$!X|Sz0?cwyFhj&vr{FCTESNx(m{T%8n_2w8}IMuv%FTkbS zds8lt6%pX1j5p=2-S81@wa8{=_sTryt1+gEk+4$ z62X%e6o@F+pS88MANAV2yu4sLyJDa>s9LNr1q9JIB5Le#K%j*^3Ly(u0sNQr!hJ}) zi`-NB_YXGU9~80$QQsQiLZxExQQoO>LR(I`Lu0E5HD0Sp0 ze?Qj5=^DY!CFI7SCvzCd`?FHV2%X<`;MR0 zt~F_TH z@77>1-jN(?F$EJlc)@gue)YYFNaaLv52En8kr=6un#*s1@oq8HT6BH(>ZO7 z|85Wb$>h7M2wy*l;J|pfYk8G;C-RNR6!<-(etSxT)q>;AoaW5h+E}g0ko$Sd0XL9v za+Sig7&$BI(RfdJV)|wjh2#aZ%~u+2xMQ3o^sgtoA_t87jal)TK;Om0;5Bs}5SOfz z@+D*cJzq^Y0qi2LJgX=Mw3Fy@@Ei*3T(fCah+yrE}c&<3QlPNQ{h zM@MFHmS+Tkfp;z8V@lE5g#xiKMt;`I1g2h-8r<(NAJfh;bjU&lmFt{F*So^G?xpUf z;`lq>vTYt*W6+-CJBoe*QhlfK(TG!LL&3M-^$A;W4^}p ze>^JAHUqH!KP6N+Tax}+T}`b9_!wYZvh};pyT6C|v2}iLuX&N#07HgJor3e!*cH*7 zHxS=a(}3TNxnrtLs=C~?j!^oL5>%%p|4u!F|Z(?F9yg#QeW!1dtDZqlBKc>N*Zn zdq2)(@9(GEeZh~EZ(H%8KmeMs-lrzyJLhc|0PoINz~YPP`y9(3xWi2_7bNzsCr>=G z`R(=T;WAW+UvJ2S6!{VGEwV-U4&!l}6`Pmc`3PSt2ez(e{9>+rmrlF_pd4&3sPi*U zOr7x}l&1*!zN%%PNbsgqu@=ZKx(fmfitfA+Lm-Mz<}1B#>$6RdrV9^(3o!%F&uz)P zPHQ8Ppz}lvE=%nm?Agz|G})_but8ji#~f zbdPLAT*bJa-@JOeJ&O8xYNk=k9_6fgP^Xo0HYSGcnmKZ3~wj9>vL)X!Y@Emh+x)vEy31Mi}baG|-$t=e8=C z)MaCd%&(w}bd;h4U{KfRX0HA1I59f)*RetWZU)Ps!^c@)Ukw4Zgi5w z0XhPx*?2#Y?rJTTu;+LN&#Kde01$reM7rk!!tezurC5Ic^>CAV8_#I_KEQFkZ-2{= z+;>U0`eXXKq^!L>(m#Yh3G;JK7FMilXzuf>i|~Ljx->szm?LIHnkSeUxl~`|6n|06 zX#l8Oh>mRw;)2UWdLgULU4B=Mwz~R2!-BpnKba82Dn)QkQ&Y0ZPz+udIR^3tH+o`X z;wm6N%=bJM>%7oaP8FgbDY+O(t~(~;JSu)Z>tug+7*#xr32pp+e!&^`(A4=H*J#`% zE4zNO+|EB)O4(72`@n2UQ0=wc?Qz?)q{F43b(*)Sr8-Rvl92|o2-m8;SZ#lcE?)a> zG%;75=Z)pRhv%A47stm$Q?r*p>2XnvRyfhn(Ed}QtD8a+qztgvVHhRaGh@sT0c(G{ z2-xJ)-)SBsuwzb-f#_`K_$mNz1PLV`kg`^UUc|g?K5nBDN_qR5Gyg#e%h(5{GVaYUEo{>*)x7H-qh8I2qsCQu3N0in1%FyVpP)B_E;bOyjKF`S!3z@$-9h+gW)~L*HX65 zCoiC`qna2`Xbq*#RB(&_^2*NutB2sSBYXXNeIaGLG4#x*Fx_b-026NGrC`|dhDCAG zfUmd&PoE&L)$C&Zx#T%yuhn|x&$W2jP&ur0e&cP`0Byg~>NMSCI3My=+B$78k1^}ufB zj+LSkLrV6X@w#01HkjdwFHtamQk)p*G`^{lPSlna{c5*KeF&B?Q5L%VqxHu9<94IP zWw=9es?&;rBbo(f5%4)|(hG;)E4!5^etYwSzI5BEkq(-LLR*Gwiahl?%t~CNk63VS z8PY&A3DF-vtfsH*2lCH29St0fsG?{EIH3==qmoZUgCYjP94iJ0Iafc&s2b1a!bzV{ zfwALLk>`IuG@beMtLJ(ZQlC$vzj03HQVLX7jk~l$w%0qr`hW^4)$PeUCexUA_Be9g z2R8I&-WJXr;Q)QF4~J9z+0j8{ko}GAoA-zA;Lm{1sNaTfP+b{HeQ|4_Mdn|8xE##R zxf!z+d5L{R&t$wV6|GpVqg3w|WgYCiKpIy)$>C^@M|ASiN8fhPu8E-m(Vnzoc&Lh!T9|`r&)qRnn5L zZR%?CJwkAQrwo0O>-OGFU21vuOK`C^Mod6S4D*pt$*S z=C02mt6?0UtEsC2BnSCBiCRqm?aRQ1%QqXXpjp4lhF2Ik(#+2#Qd-78>S2LKGkgZ} zaPHxG`R3cpHcAYX=AF(jb_F`1rf)e{X0ZWs{?Rs@F1ZL){sEaE`r<={y%jIZoST6%Peexz&`&`7KIbi`#{4V5>>hXK^)aVUjDSJh$)V969yCDjZMAsW>~gcgl)3{O zuLKaYx6KGqRx@E;9C(v|ZIhpH-=2H9)!*)QMdy$#%xHKx+#<>ASHTv^ znOet&bZ|XVOu@_%2jD{}yF=SqJwF_x+OSvdrv4=oQ>cBKx{t8A8^cLmv&tW~seVqZ z*{?`Qy64-QOtW!0;yLq#Fe{O0SZ?xnY@UjUh9T)%a9oHLf~VD<25HmX_Ur$(n?%j z+^f&Cp1knRu01V;`;%}V8<(7ZAj)?wN1aIp^LRy#3-XY(pGG6T-f?zokwSU;zlfyj z5d)ZcFi@nNyLDGUU^-K30<8bjmg*M9m!(n@TKk3YQSB4_#G5Arxv;22K-5yW<+ zt1ihn{Ubz6L<T0d#}f&xNJpSA3@g}S?l9Y(P-wB(%m!7k@KUXYH5O0@eF~_c8Ykfw1)AD zV2t019xkuJ=c#6c1}>W%lRMB)Ywtpi7N57KU|dcA`)UP!$){yK2Cr!*?iMGsIu83R zId1p?%0%M%Cc`#t3*Oa_9yH+yo&kOzd^yuPCk90n#TtZ~VJ%vyh%n-o8nSk8HIe)l zptcaq$7+8aEX>llGD?a!^vP~7S zw2R!>o#p%7slP*#I_EazD<(jMF#E9>4|AyeOJ1If1ZKp@qr0d)o{W~sSHq$X)aw2U3)Xx2NZn=H<3uA1 zG6c7afSx}Rnn`A(kc|_>>njSs7iozD@&p79cJa6W!kKg*H_<;a1vR;S`=lSP{Vt-ethB9A$ zxri%2RN@N}27jg6fKL*&?G&>jnscfBg@q>ikAzCRuiIFONaH45!-@SnJnL<>sUuos znyIRm_(yn~LWq*9?rr8fIio-Mgkb+FaKB8XzZd_TwRlw zhgpuT0R`#jOaj)_{n6t620?p1dF9PBTKU70@jwsL1bEGmYN;A+rUKtihcFmMuZZ{N zEc%c1t@6X`!f*a&GDb}*Vhl?bk~&w|G_NV%XyIT=N`s#@l({JVOP?9gGKNfl`Nu_g zQ}k}U?OLK|D`2CgLi$pVe?AXw0AnixJqOH9xnM6&iWs)JJdDoMJ`X0f>v(Ja5i;5o2!Agt^(Z_!v3brz!)JN}BcQac6=)~q~y-33cUz|_%X}Yn(2h9?fI$S@4{NS5OJ_%}KrgOpTm?{M2mQ`VE z)shG;H6;z*ac)`~Db%DQACT1GbH@;H&*JQ5MF(XW0VL@l`mH_yz=<>5Ui$iSiVSQ1 zOGn42o+cQ#&)}mAHRq1=_=~wiWwcrj`_4GVQhOxhcBdB#P9~uMm1!7HvmR}@=J}gEXEGccm>f71${n z-1YKz1?Y%SS+{%M#01AyUe5z^?5+xx=Z zyI22b(a+l-#e0)Zn23m^k|TA=f!q1qif4{8F0yED#8bSgw2N*t ziLr9wmeD8*7=EpEh$hEK&TClcbQmynenLnF8Et(phlHu?;ETo@=0yfv@tC%>KR>bo zn>ra{PMAoDe)Z?%l}*(1#;198nS!6hC-2~GshGcuM^l@+N1Ph)^zm@d1dl4->X&uhjYu#R zV8Yc~a?87rxO?$t3jVhP3nwUR4rTL0+$c+)iKdM(4t4Na=BmTxhQ%&ubE(%qNzab^ zx`~0s50HauexSn{XR-i>GV};y79Uot_f0v`LTNFcr1$chVH<+b`yNHkjOZZXD$g)% zzmJfNR0{w0rUeerhL2lXo1}%lsupT7FqKHjP~u^;PN9bHp_s#h0(2%@h4O<1a(>3g zWZ-xj9<3n@{v{W@l5CP>db;pOP$lMOBbsIC)(P<4;3zM(A48gyAW+kp;l)2)RP>qw z(JAHb#)u*M$LQU>N%wV(6mnwY^y8>N@ws?oa$Ty_P>{;fk|blR0KQGJNPqYbh0kuPz@r}yVWg=_Gx0dzlRHzvsj^}?gF(8gTv`hOFc@V<4b1;UW( zQm30;Fhfr+aOlS{9S`Wu4j?k<)e|9U%=Vms3suKQBQHI*?5TbD5Vz_(smx)E7JlAw-8ubd^{nyVOa+{j^ShNhYjgtHtc(z3~!vRz>bZCYO{ zYI243bw|~)OeUdIFbId|rE+vPkT31(?PNl*H~DRQ!pWC>>qW5OZ8#Kqxn=aN)*k&K zH%bU#D&%O)^}n>K!J;G*I|Tn0Td+n)elD(y?)M;36vT(0ja8A~x@QB2W^y!vj6|R+ zxW-PVTESS&`TQdz2;-ogfepOfy5;dZ`q43qQV!(cPiMTxQxJ0R2Kbz_Y|FjCHXXH% zJC@HYwza!rV*^nzeiSkfOK^0X6aHWI#qPs+{tdnap`j@0!~1e&D!dUI*2y-bYUl%rYnNo`q&3XM!%~3CV5ZZEZ8D|k)eKnhbZcXT zu%ifo_F5BnaGk%mEp{J3_j?fC8ZuxG-D@=Pk(45ZW_wHR=IajEli0J$5T+@A;{zG| zVlYy6;UNw^{mNOl;92sWJK_BcpdpNT`<7sq!GA`+&0&yzhx@sB9@JWztCDjupH}@& zdJ)BF=s+h|Y7P-aZv=51pPT1eIMgw-9mRqGy3a7OHG$eO9&So5l;>jmIaSipxe32S zpU|vFFLdG|p)h(Ko*SquAzUtWBY)KObfxArdSCPoj+ zyNXQT#AzOGTjnyUF}LhYURY^Xh+LWQ6}#Lygm$_@97iX34%+Yl2-&TdVHm^OJ0!L` z2YWQ(%`+)vZx~$HL|+E4&fOZqV~v{HnxLi@dCG?1UD??<@VRoWmNdL(FBd9+DAj)Aey0z<In=}n<_|>t z-oAh7N}u=$b7|V1ab!On$#rm>DnubM|9` zphA!Je7;E3q)Kd<2k3KYb^xM5R!otnC;$UsO*Q4ilPYZnCOO7H41r zsa?jdlRy15G-xdZBj2t0ToLtdefF#l4dWv) z6@HY4WaEWSCsI+~t=$;2l_0k@9sgMRRaAA$81I3h_A%>+-(M3EQSG9Ae zB;NxWo(AW;$WZA135Oe$A1ThFEPC-}F;Zx^!BpU%X1VrD>E~Z{Z!$A~{grq#8(*^R z`bV#u5m}fp+Eq+>5OmqcnE2eq1$qV!=?n=b6BLTseZf+X_F40h{y?Ib5lt;>=!O|4 zl^p&y_r6=^9DGZ}dRFFzkroRc$kZUDOk^W3kH`9G1m~%g+`aU#_hSpQI_>pQ*slc` zMbsWm-B5DoXG2*7Kr3o6N9wybB^Npzr@Jt=HhE0nZNyc;hil&KKWpBke)xB)jhtxZDcv{FRR|8|f0}h))mIFAb=e8EeV6PmF z*Ly|fCUU~g$shD;X%Pn(SbA{hvi{NCl9wtYaCqKQI;O7U$l8QyJ!K<|m%yVXlYEYx zTZ?z|3WEZ1a!!F-kIgsJ<3)8zV=wkh`36I2R=*VrzdTtn4&XsD&uD=y8d{6B9@7yT zk6P*`+>Q-z**S1EnkNAYd$c;CiK6)r{2=d+{i=Oe|I>VzyvbshF+C=zkdiErN@i@| z&|q&qew8Uy!RuDpgzu*DU#93zAE&@n|3}N@;zx2XxoMG8PW8u0V<9;e#ta^uPq)x1 z1R9?n-Jv2%2Nvq*>Xhy_lz2bz(PWeTT`*K>ik{9`T_vg&xj{&kb)(p&YILqD=zGw- zw+{GWX*V-e0k7%FkhJ3rJrPxu#E+G0E7E@l_SmUs*ewx8$3Hy)1D+wIyCwl%wFh2c z*UEysh)@T~Gf*xm_rm83?0<+2D)TWH;BX`Px24O1xh!LA=gQW0GM{tLW)F`k@mWk+ zq*)X*0;M8Mc%aUmt0zX|EYFGLWJrHgg^zA!=i!OcPB)TEx@L=YehQ16`#N ztcr&3sNMx3bO>s|bww{c-CKUr$9_#gK}3s!Ve7{6z2AO1a^@A<6=mNMB?Nrcv`|h} zV3-uP=T^^KbX!PGdh+Y$X+C0vmP8{oS^inDx=s z;HKh-+yhsT{=J&Ofcs7$FS48el_9i-Pf#KpR>Ai6(^&Ln4o9_Or zE*6Ffn9iP2FP<{e&cwNOP%SJ}`2ixBc3iSFCFiA@iK}l+GEB!g>6O&=hf zGc{7=wS|n~n)oWT7CWo$s;>jy0=~V1*LCjie)X00<94lflVWJF2$eZA(f$PTpc*{~ z2Fsky77vU7j59psQ{OhpgvmoU1~%QCwd=@#OH$dGX{BvH1j{CmCi;%LLE=+fQsG?t z3TQk{c=~M@WR){h3r#M}O(>u1#USI{DHw-6rH~^$$7%)%L>w^5pUoV&6A}V2Jw}yz zKXk+Ra>?-RZEx<6-lRNj#lXi|rML?x=uEEmPtZ`hUsLwp+bc)?4)eNABv#E%g;^bY lA-Mnd|N94geEkMHY`7sJEmSE6JgFQ;T3q3Km8fCh{{bOuxQqY* literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/firebase_auth_120dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/firebase-auth-logo.imageset/firebase_auth_120dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..351fa59fe5a0c215853266f7ae53ed06e2d2b001 GIT binary patch literal 15823 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/fui_ic_anonymous_white_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/fui_ic_anonymous_white_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2f2bcd903744406682ab3e8e305f551d854640 GIT binary patch literal 3635 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/fui_ic_anonymous_white_24dp.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-anonymous.imageset/fui_ic_anonymous_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..9d57c10f7e08c6b66f26d8c0a35659a32cc033e9 GIT binary patch literal 12883 zcmeHtc{tSX_xF3oSOy^z@kvC@U`&}PTXxAZmPxi`8A+imQOTCESBfk%#*!#ogprYy zWzc5HR`#_rmXJbrdTxDwzvubu`|oo-*Y*5dmy7qkocrA8KIh!$yv}`xXlAgB`yXxy zf_51hp0t1CM>t`2oY;1ANr@T?yMNviDp!t|*}NuUwtXJMcVm9&XXgAc?d z9a9|$DvRgYbY_R3qf>5YwvsOUN>2tb^0?j{;0jJtps$Qq$9Ghvd2ogSdPJb_xxMh zSDNdd-*q1M>7TX#gY7l1BYas@fU*R`(NOsrY+R9B<5%+&TBYY5eP32%d$meKt$!g% zUI+q&DUSRQ^h@<*iOVh60#VgXsWbZHW;q?n%t2Bi6JvK*hxd~L0rDSwnL{U$>9TH0 zFbE}S3&$5)Bm|3iK4|T=qQ_$fvepc^(x7`LbOgyq)}-VUYtl_Fab|3fQm3_|vg`#f zIK*+t7T)ptVMt<0N^6<3^pnLiRV=z%=?6x?P|hI{2ql- zc4$ePju^`^rdg(D)1SbKRDt(k^?5sYd4YvRDj&@U6ngAXq zgCLNjP%_hQNj)gNTM*Thj<7A*BV#kYpoTCu`zB?Qz;27H7bH2~Xv+>3_X(7L@=$6J z0mT9uI74nqZ&;UV^3qe}hCEDIA54WdWJHaUdf2)NDz_?R&)eg z9KUwlc6kX-locY7jVV}H@wReq5hv7u3#<@r3%AVUoootQaAq#qM^2YP-MeuxY@)6! zUy`cjKW&Z4$Fl>GM4=$iNL;p<&|XuDG|uy;^vrCgRjdeR@nNZu;w5>sVsFmxLss(2 zFy@t~w(!=zwl}?2O!eZfz(VldhJ;Fe=V_@7@ zi-Oj}rK*-CaB4ns;|L66E{9`A<`UObOhR1yt=&Tm=c5)O(sLl|JJ_JsBMrBVKg@^q zE<3nc}RRdI-wTK9BT)Pk&i*p+P);*HR0q zD{N#lOB_tiI9tIy)t()1u+khPLgoW}@HNvj^I@(1pOze#H94lVffN#&N1mxadmlD~ z54Gv!TXct$BY=l7Fw9nnX%fTQz&<~|qh#;M4smvJ^Y~;0GuN@?v}cb)yxDvX0R3Xi z^>a?bm_RwZMoV9|jjLk!nlU0NOn}>B&W*AG13TTL#B5^q9dM;UV2&yn)Z^ z0ETxlnDA`0@R&8Q4CR)XTpkMj3K;4I#PDe(5zJD&hKYct&@8U@OYi#eM zW~=Vke5Q=UWi~M8UNGL<5GGm4)a0MQa=zDUxvsc8^76TjGH2^`JFOUJqTjMqO=c!1 z@JKjVt%WZ0J;}_MeHu8^h2hU~#<|a{%x0V!I(|Z}Q97E?=mA@JFj`}2GK4Z&|Jfm? z$=`2uh3e=x>2PfJDdiy)ZHf z>0?^qYoR1b+}3+~UX$PR`I*khZw8R&nhoURP;AfcGI;W}|HthL?+;0apVZ8?wnaQI zd{;ZY(=Z9K@%Q3=65uuRt$iFM6}aEM++#IQFVeshiLAl4L;79Uws*##bNLbyQQuia%fn&%XUY)5gbH7Lx*LC@cX&OeCMCdkR&DCsnP^!U zE)K9`SV)NoIE|@Qs+VaVX{nxH(C?_UTE7w?0`cSkjw}LKHy#{W39q%6IOx0E9is?*2)yYyVQwD#x zF6$)a#RY@JrI|{|Rz!$EI&EAr;nEQ!hLNDHtMRi86YZ-$3y#D~RPQCDPnRL66Y5iq zuLZD|ayN^8SqlywoCfhw>|?;s-GiqBe_^7M7fCO=Hoi(RZa=cqBrL^1wp@Vf(dMI2 z(O7b1Gk0>`m-MmZAIUn-P;3^Mb}H~gQ2LQJ+KGoPdklYYb{ozoR8RWu&$#=e^V&PT={6kl6O&p5sw1ykZloX zZelEt7_6Ps;xTjH4^hD36i&`IC*7okN7tO^NgmOX|HSIe;<;o8??&Om3Mqc$Bb*M$ zrn6VylM+nsYKYF!wY!0bukiD7RSqyN@LLtWa>?SEEOU4j2QS3f!Yek=Q(vQy^yFS< zY!=TW{lBBT6}q37$L^8IMC_T?_^o6)@(OPyT0p&vCYE3Kd4{npSk2$mkD&H_L$b6h z5QMCYcI|Qb?9@=1jl&^de5xO@Wm(uchhaS{2d!QO^Tz!;!hYKTHkvTv6kt57rt*#- zoyBIU|5mVo@?>}13U2J;@`$+k2^S(_5=k0<8_esdl@3xy8`_47Vf)Ed@@*3aI;l$la?nQ>ObkvaFE0v3Qo<62wOy<$TN6zYH0h zt%QXv7NvzLV+3Q*Ft)#XsFeR@Gt1ktbM$mK6B_^f}z z(Zr~^8$r?zKM)%og@&Wm@0QE4j~t+KX|Mre@z5hB+x3a#FY2ryOK|Uad^z`L>(~Hk z`dq;Mf1-P`ksq%XG5v*|`?e#Dg!U9iU zUODV#Q?IE6YqTgEifG4YaR9C(b^>&gZ8}Lp?FhLaX!}1mWd<9;rT=|*1a|W5KyT2A zpf_QEJD!CPUV*>sL_j-6@lS#6$d7sQ)lKP_AF71KVYZ^X@_1Bhaf;+wr7jAPWxh zX3_wnC4G&T?IKtbg0fKcg3weth=y2Tx%K0)Z|f(Zf;18mg0!V~$lc-+=^ci$Ja+!y z-VZ?q1>FfB%j0Db46NjkrJiGLSO?;ZPSiThVt$LjCD7@WhB5RO4XKw}~a?nE$KkyPgF!-o%n=2^yz45+=N{Fg4o zVqSi1|En<%<9M>Tf$(|wFIBzy|bJft0(?y zSA|=6h&r#xJGH(TVBYLNUizrnZz*Kwo5gbmbVMOgz>1$fFCI}AaXV^X93Ijq!S`3~ zI}saQe1sj7nIs(jyKGc>dHH5>C~8(ORw`uipTTykwORPzjok6xUMasZ%M~K)NuMD} zXqJ;b05_)F+{?d@Wl0Q>RwikO{#qkybbH>sNGfFQcwa9D!h(eA_-@>aKe!o6*mg|b zy1q6IDu^T@Ex*mq;y4Kr_~m@pgfl^6v&F#|VSoAhrsEkJzw6f*%jS;EMUqoGRB(I8 zMd9ylv54-s`SYLi@qH=hF1QOCPrY5h*A?3NO4YH)^dYqMfhsDcj|r$+4qP^po^H9b z2<|mvErPAkR~Vug@mEPS>iv*R1G|)9iyPPQ$Iq)~sbQ(w_qTcZ%CJJxDl`w)>DkhM zJ!;qa8!8*$RH(geUq*mO1*A`j5AdZFQ890P1-hG`tS#^q#A#5qDP3&yp-=XkG;Wu4 zt^b;xoyCp`vxb^iByGi;w~e!m0sZ1_EBT4!>*6xjplxnMQ-t3Z!B z)Gh5H+pG5X=*;I|PbgF{5AVljFQ}{Jsxv0v{~KnxXSfFh zPRi1%4{t2e5;m1vLP4mu@e>2!pSOaxd-Q?>U9;NniG2QaLNAD{53Y0Jw*rqGS>%QK z(}zCUY@d?QEtqYIA|i3%=EWsQYHpp4@;f4Zc+1n5cFoMSj!_Sf1vh$Z5*C?GteE|T z9cX3+;AN-17l8KEI#An1{sx}83UBhA0{)E5?747@2a~;d_(+50cLqD&xPpUk($!90%&4n$VW6$J)I1`)z#1N#w=)2#ysWoNj`JaZZsIBa z=Fq|5c)6G0$N`?8z_}CN1uTaF2$qiH<#_qbWwBTeWvuvuI029i;{@4zH>+c zkn$B$Khe48%7R+L6pDuyJigAX&K4s;@Jlu~?pEMeKg)i`XZPGvA7)iTsJZEMF+v7p z!e2wJ2$Yy<74sRFlIGL{MY^ianu-uNn6#huC1k&eDQZq{^P;R(tA)On`OHQ8Sp{vzY$BBp0;T(^FAYYhUda_vXk{K6{~ z{K8yj4k=(av>5>sLAHosasyMGybpj3%J>hQw_hZNjDqj^4IAjE150N?A0jO479d`x z-bFLT8E+cSvn0&{y08x*1VJ5wJh3_K!X$G$XV`KUT3FbK2gl3=(&pRwa7of-ML;BZ zzzYmalse|FK?EXw1aKj?WKPpd{W`-Sj~6qfBUFfiW5Fo^5Gv>_S`x40g7^R+HO93Q zCO1q_`>db}x5p3RK|+uihz(Q{x2QxRgIMTV78qn0cOa~=&j#5M2I35Zr@m_n4!3rZ zN)~FH^I=S&h-8%E7lq0<06p+Z+k*||h17OHjDO-E@85*A8YJ~ZKv{}F2~b8>E%s$Q z2+O#$MhZ;(5>PW~3vuEjc06Z$q%rvuI88GdjRJ6*n70j#8ku=3$n2yXPMaSD8v3u) z`A8lkIm7^QC?lDK?1b6TSx0o8yEs-t}F#_PMwB8ewpyv4|D!7P8ki-sIOqY9u)%m)iW zKLGaBp#_)@%V~BMA5Y?3FR<7BqgnCzM3Ep#1W214Nf3!7BJp^Ds<2`CU$w)hJ^_G= zWD5u#G^Dh|00`9b$d}}j6-zHTSqGft!A@Zw>D(4}WlXMDP6s;!x{%hyl?&q4R8fqGa0jLVU576W7 z_czM*ZJ9YZc?RAZ511Fl7ME#7_t<_+tgfU&_9bU}Q)#6boD|vw^ae5)k-oD@E))0Jb+|U>|_#u7)qlSG~np z%D`4Zbj4JrkW*KjO4ty_kQeYjK2P@Gdppe@goxleF*|L*LDKi0xv&>4A+&%g_J^aP z4S;^B7$RvibpG;Fs>E9ENg~|m06_Aej^#AdA1yL&@k#o5%sxb9?FB%8jcoDrfUU%yha_HAlUl;eeLPaz z2~-z2vJ+Jc{#ao?z54u}TYGe;#YXp{qgIOCuxHo0qLUQ{CIYe!WBv>YwZQ_ALY@cuu8gH#5X5an$5wJaJ(|$*vcq-QO&2M z`PI1+{~INGZq3JI-iqz{gRN`Pa`JFx&%%H)v1hQEy*i4`?f$jD7FX;k*NgkthADRs z{>Kv3|HTewYX&aA5U-<{sx(D}`3?4R#gYW5xZMz`(J z(3H!5Tk{2Ja6J3Y5f3~)G7<|2dTlD6^sSy53kcbg)8yV^D;oBKuPqkkG+t{h0!o4gJQsliskrD97HJW$H^&HR@uEmH5eD~rBnQ^lPD@qi%A z@_P~YxH&6OLz{E`#;~274;%*&RASh3&IL6U$CwXR%%yR1|C>qbfV#?*0z^ArFG#v* zaeGruyHHob|8@6A^RP302-;rI+)&G%FoQRYaqW+!Bk?@I`J7C?(Q} zxj|KFg;FQo|28+44ISs>?K$b!(%l*-BzCHUWO-nuzd+%zk-nc4n$Fn1{UXi% zJC1%6L~w?=*fspXa!;_(p)i-@zg!2ep#DlM_Hal_8ObcMj3#2lJ?(OT>0h1oGOJP+C=^Zg_qNh~+D^KPg$Az{GS=aEKab0x_O za1==8lcY@GLvAQt3|gZAxuG=#`GlqY)8iaRw0 z=5szA?V|w7psy6F_@KN3qZ$3acx1){5)wE%Py@vy@yb>DN|nuy2yJlt`y}td%(Z3)cxG6)Z zH5L*k&?DKqesF8^r*&X>V$rq@;mJ38-*;Ne!m{M|N|G8Lb5ZHgvN;@|Xv%>3p|raZ zgaTXcWCzQk^!IB8WcC0%R|7@YY~ygWWrMajbTJ3)+-~0nKASHb z-I}3|WZpaeYfZfsL+%&EIp=|!1KSlzMwVl28(O)NAd+&Rglq-Q=1FiJ(yy3u(eUo!XcHoL^31h>{cYI@vcparh!0E* zksy_;;Dg43(iq~oqNyvjoX`GN*At?Vk9}7qGwrUzfQ&y;Dr-rfFvdFOU7roVc56wP7 zkTr`Nwh1Dj&}56;ZH5A#4IoT(i@?@HLVTU3;I@{3+E z8Nb0IA`;pus2m+luXwMkWr_RprfV0d4q1UB8Fc0oC=&Ys#4W>6HA#Vg5)>kspB+x_ z!>2=PpSXFXiP4L}yxD@##8>s=m1*%?;ydALhfaTfLQ(Pz1WkOGvXsvTb`)m`s>#G@ zuH6u=4l`R5`NTacij8uo6kN)?z;ur?>t~HtBGyb zEG~8{Z`YVdi?^12GOOHoaz5B)Yhz#CIWS^J49j5v$Ma!h3nbx98DT%y*KLADd9}7Q zHToRhh9@sxE!CU&@!KnyFSAHMH{07(WR^`?5clN-qqd>Rp7ULG37gCIuq(s445=p9 z-3dP39R2-oEwhVW%Req$t4EJ4bqk4la_n^YdAmP%+Uv{C+EK0+8vpkD-Mubrss4p% z>UKXWQ~>8}kh=a|WcTWenPwNhdw=@Z0q#uPhFXF!=q+n* zH0Prfkza9vItRT;7Zkvslfu!l$>P4^27|A@)<^#{{&V#bS3>It<%S70()PmMpn!t* z*W{?(xU*t-KqXP!?iL|s61Lcx^V^`{ z)N}3J!qi?h&B~4jd#)7RT~gEe9M0rk=LNY>{=+@5K!j6xO7}FTv!vx!iAO_njme{L z?QmgjdQM;*%K0mZv-_Jit}-ebU^n8_14NeH6&%(Ux9+t2dq~?_R4jD-(hM&8cn#z%#?VDp<71oj;l#62}bQmQPf zxJ6E(JRdO31uy1^dHaeNrt%gU&C~|5SM0_;y}N9~!MG!c30dS_w5d&Q)gxOfiiW?i z1tk-UUD=75{c=d2GDU<8r)jszx|F?z5a2L}GmKx-($~&3xWw2CZkyAk5ajUDo;@SZ z#|Ts^3Lki_mo}!Lei&~hAZjPFhyxwg`jE7pP*OjyHrLn zvndEZhF?b0H@bY1mt)>WdpTJYg-fltcIMAvhfGc}FO(;(x+5HM4Sm5E-u`K8N}p+h zq_$eWy7Om8?UpN%&Vo~^4~#h5ySAFjcas50)LhUD`N~fiTa+oPEXHn#Kpy+!}Mu_FdGYU$7RFYf!$@)!fK;WSAVLYP|9y z_!Ov*ui?iO-#@^ECphKKaNG$cXD)uC=*H1Cj>cfxuKL8Y_-8R4-??#yRr9PZnw{&> z)|j&bxK#DVKwiDyn})AXG?E+bs^z1eM-?VPl@@R94{aPyJyxICgdJ_22%-3gr#Z|&tR_B0 zsNBO&JXRS^Gy*bycCEa11KX=ptmOP$j%k$am$`Tq9T2{bEwK7A6(Fz^5G3WWzwk(B zIMRGLJL0eLI~bfuAG=CCc(}|Y5pYCnL&Y2=w)zs<5k+QpSsma$G zH$=Q{_`N`GNW(CtvyH7Vzx}ONNk1yJI85Hu!7-16V_$JkxS{5h^J_KOXF6QCdW-+X@jpY^kusU()YRG$NK= z;J(F^_d`n4MkXE9XRx&L#~w|G3Tzdy-OWuwDLsnLf~0;+ytH|DV&_v^1*Pt0ckt4H z^&0>aWbTRar*;ZzLWEN;g0qJ_8&s2_p~o2!YidJ{`6s&*PlNG!*I!DS>L>La1eqZ{ z-k0xUiKFJ7W$}hp%fq6SyXYrIqcE3=&0s@m(0fU3lk)t!H->1xF&IwyO@6Ot?4E8bT@A`^C)A;j8z2FGQ|r=>=uo> zi;nPn^TEycc56g{BL}pE8=h}}vP-py$30?y@)vdR9xqk=GXEIfH{Sw< z7Z4&uzu;T%iNvBIRPql(d!x^zY*3(iKx*n>)Gy1~$jLZ;AyU&CO> zKS9{ujkDSQ;phmT)(=K3{MrYutB{9frl{}BCD$eQzDrF907rY2V?N!ac=4?OVR~5E zxy&1!n9lgo17j1wiQXmk561>8xk5~Ma!_VS%5X6o$Inn$=gP;*~j3P5ehl{#&WSG}CYt!3j zC%n;pIr{;U2n0xl9=&cs1;B8S8zty#`Itx%ITK0c)!~`_;@Ecv2{~a`PO*jXO%iSe z0>_JxxERx9a95olJn?DPSTOauZKd4~#FTZust!{;34?|XN$7VWHeT%mc~YX}Dt>U3 zEqw+yc9G?{Cezo;57Pj3)9|~jTfRIXpJ5hvX)G!@II?f7`fIm~DeKMy!0&y>U}!pK zz{3^vJ2od=TvKgK=~MQjqH91P<=zL3&4<<{Smc339k5l1wDQ@ftPiQQVP4+9d!*(Q zH(~yTkq>H47U~G|RIVhn|C6~f4b=W#DH6(x#gI=UsrXt9L_V_3O|k?TF9baVDHsG@ z1NC$W>bUdY_0#_^IyRjkmvi9R#Ucd7T~{Wbe#pLri^}taAbeW+p)3P{JO5iS{;z5? z^cMzzAT^Ne|4+x?0{s88BH5PD3I#6Ue}4Y61P=V?uK$mE4y=V9l|R~HHEhhYvuh)L Lvy&ydr11X*2XF~} literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/Contents.json new file mode 100644 index 0000000000..b8005dda54 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "fui_ic_apple_white_24dp 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "fui_ic_apple_white_24dp 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "fui_ic_apple_white_24dp.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/fui_ic_apple_white_24dp 1.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/fui_ic_apple_white_24dp 1.png new file mode 100644 index 0000000000000000000000000000000000000000..d251bbd78f51ab2afa7202ece5d658cabf887910 GIT binary patch literal 9453 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 R+0bg6wluXl^~{(^{XY_^*C+r0 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/fui_ic_apple_white_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-apple.imageset/fui_ic_apple_white_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c239197b30a45ee2ee91a4527e4849e13a605ab GIT binary patch literal 4572 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 DxB6~5 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/fui_ic_facebook_white_22dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/fui_ic_facebook_white_22dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc6fcf3c95492e53680d03c52ed8cb34ce495b0 GIT binary patch literal 2524 zcmc&$`BRf=68^F<96|`ftRR;=ShrI$W6#bYo9$zuTXlqa49%>QTK@@? z?T2S6-Wb+)kUZ4*F-KF~F-UCiTG4U{J^c?=Tozgq5QQMnNmt7=ZZkeuYr||t9zU`? z)G@fEY$AFqEuHE3)LQENIpj%X=+~hxv%&Sm`DEnZpi@Fjr@;H%k!1FuYf zjRk97|K{GVQE1bmF^ikmE?=um_4yKhpdlK_D5%Xr)&j|lacz#WGuAvc`@>O{ zPGZ0E$1BX)*VGMM7t9Cug5QC8K z98Zp)=yT->vnn-!sj@B@U2kuR7!Xk8?U5L3a~^C&5s~Ngr$Q0VK&f|I(teW-zFS+o^o1kVAN({j($f9L z3mZS!9jAf)V!@V2W=QKYHxp~m%^Pjh zumX0&3-!h zq>pKKD(GvAo%N5Jjf_0-F05(~uN-aSdFwkjlS7ZtvIfK2)QUCyt(eWM^4%0_kCvZX z`?vn;G9L={WZ_otam@0f*I768UGdOAgY%c?{5Kv?s-+^sOnBvo`^Q0_4}M7;Cl9tF zBKuOCmR`|^W~$gF5u3_8zj0wY$D>FA!3?Ic2`n4q{ErxE6V`;==CBUxA(;B+A|z&X z0QDllBNp!jR^>lQ^sv&gZ&gGvB_pN&O~DNg=JHt9%4Ze=Y>f=d(5o%sqyw@^M!}@VjgW@ zrHcaMLXxkn49n)mlOpCf-dNgk(Ef1hLQ-d%IFI%0B;)qM75x+1d<)c>J5d~skf7Be z_tSfduL~CVnKFs@2b#=zfx`ZzO5+d&SIxh*QX9dIqjrX05g#J+rz51nuHcWepfdst!vgnN4fBbMjA(*&iOxRoS}e zHK9e++7~5PjmVD8lq1~*3tLOw_bbLjRGfNjzH)cskQn1L4`Vj+&%Ep@u}TaSR5huU zm{NKl?>h2&W%PXW6|r^tTfOJ|C#}JfgnPveBv#sBfr(#MyAtIn|Rwx1bLR!hpG+VaubB`dX zruh)OskaG5o>))v6+rNJOp;N%s$SJm6jWlCqw(G%NX{0~F#q0*aXCj?J5`hqf$2EJ z7Ty6Y>zQ21H#Jg3jCyO!Zzs)WMlt*p5Tg^Xu8=KN&Ozt*2#K)j$<_a%+S(v047H~yr0JE6h1 zz3uM|I4z!czW70^e&Ktl(Q-Z|uP+5mamNL*yF6)^s(<(kckv%?lD}Z@|KD=Wt-fR; z>y@0Lt*($pazh7;#4EF$N%^JCX57Bih1%ZqGlu?h5qqdN0eoza(4d~~UtLV@2!=Wv%)x8!Ed zqHZlA*S)uEEXwP0tV~$zHE-J7-Km=S@m5yLct#g$2r=Zhj5ZM()iVvf%{a!k>2Siyw*Gj))&ByuN1#Fg literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/fui_ic_facebook_white_22dp.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-facebook.imageset/fui_ic_facebook_white_22dp.png new file mode 100644 index 0000000000000000000000000000000000000000..717ca815a1e02617dc50ddbaf19b6d05662f381b GIT binary patch literal 8550 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 sbuA!s;KX!%c;Q#;t literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-github.imageset/fui_ic_github_white_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-github.imageset/fui_ic_github_white_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..aa84b536ca2c894f7b9953519bb5d5bdf4b158bd GIT binary patch literal 6636 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 acX${NZix@jUg~gHeCoK(FJ&b6oBsz)0*MF! literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/Contents.json new file mode 100644 index 0000000000..f6ede1b0b3 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "fui_ic_googleg_color_24dp 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "fui_ic_googleg_color_24dp 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "fui_ic_googleg_color_24dp.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp 1.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp 1.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f49bd31f578ff6c0a19338eb581b07cf5a7eaa GIT binary patch literal 14824 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c7bf97cad3e34040a66dd11c7ef641304f18a8 GIT binary patch literal 7275 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-googleg.imageset/fui_ic_googleg_color_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..9df17f75fe88db866439c8a1d0d09a63accfb95c GIT binary patch literal 24342 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/fui_ic_mail_white_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/fui_ic_mail_white_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..937721e2eb58c35f02b62e0cccab8f6b0771e229 GIT binary patch literal 2507 zcmds3{XdiIAHQcaVIp)kA#>32kj$b7&v#-Wc~+h+TM9)fWoc%LQ^Y!nhVpcxjwPl% zHgx7;XPbv|jQNT>eOojS->CKV{JnSng!AL~e!Z^O{kh)P=kxx2uJ?7l?$3SG_ZUG< zWrqp?0BRmb4*LTD3@;yBkPwpE8{PxGl#`BxBm;n|mVCf~;!+F*!jk<7hk&{Py%}hN zhy}et0BFcpT_Y+&0nr|Z!N4o9xwr4n>-Om&-}x}L%P%I?bpFddKy0f*gp!|X<8~6*EdhiF9~P$)`zdpKY07yUe5^1@sFQ(ranJ1 zrBdmW@C`pv5&2q>XgEyuz}pKa7WgaII8LdH|Bf*JQI*yv-5r)i z&4%6Ow(ac6qN`t5PaoZD&t4RS2v!VYHU$dfO|n=k{`{<~P5Di%y`D+>?R9NU9??vi zs!HhZ&z#jb*?HrPG3ohXII-yrLqG3syum(2#)zhFwpc{oq?DE_@Dj|WqugGSR*9mR zxOjfMi@JzGv*O^FL}dOq4P^?;*- z8D2@;6#tNT_UV(=J}XhpEkS6M8Cw?X)rFCaE&LwYv`DyUb>{vj=(N1K0Ok88zVmy; z*jcWlMm)x)Pcr>n*g44Xk?A6bm?m~sOAC9y9xp(_r@J)B8`rWn>mCsSkA7=kX1YPt z4rd$+d(%*`wz`F#k3kOAA4FO%Eg13UqcJWqg_xJZ&V1}DiVN&07dq3i?b$>?m+8t( zw*ga(xq!K!#F>V*ze5DjHre=15Fv(RkV&V!OqUGY7>;xz5DP`YLD`Wkn8T1Bf30yF zDfT3$>rTNk8p|6H;%I~SA+BxoSp^jQzdTL;T8<_OO~SaCF4by~(5Ems*1>}1k&D|& zqobqFMYe94D0tTEG-l_d5qbRw{h70bCJX7=Wk#fX6$;+AkMMy^ZQU=wtKvTJ z$x_<4n88U*yWFJ8rA6+3eT5k{f1{SWCqYeI^P2h4p8bSnD-`+0FJ|sVO&=O2Z>%Jy zbCme`@jpkn)wr9kj>bqR6BF{ZZ;GqF;M3pU=-I%C6GkrVsXA&|!=~;-y+h&eElZ0} z0#%OG230Pw^W0W4^{#tb9<;dt%L-xQI8VL%7!lL8Ua+iug*}C%wf9#DeOwuH-Vpc@ z?`#Ol2<{B%aXW%>G^jT^a>{_uab4m?NDK$gEDHXy6 z2G+iR4+@SifnXCb#g0o$EA*9I_GUOvXlKE6OqZ0fyq$x%a_?l*rEEjqK#U5P77U@r zyn%Rh7Ay>+b2bK3Am(pSnFht!b~$sLuf&LFjzhKNLc;59VcS7996*zu$}~uq=6=V$ zvzGWul9j;VGGf;Zlx|6fo?stL**&UBVl`{^`Hy)Btq zh6qV7Hb5qT%&GmL=$Y9L1LU9OLW4}KG-{Yj^YWMEyE1MQZ)Ie`_-kLbup4G8mxwfc z`cZm?KyNE1ytz1c8++PpvXMZo6l zlG{#wdAZJe-QaSUJ`K`DY@<9pMj4-H?bahV1C;T{8gf+CA%2JJ*bjkd9k~W5u-Dc5 ze3slHS%c&t%9L{rxG~Oe4JiG4kLT#Q$>Tkaa@ry+??AJ?++okmGgy&z4;AyD;rE^2 zq9JiUyg^{lpH3_P`V)`#6`{j;h=sq=BDqlLs3SfM*o-nB>j)zMUluu`U=spYsqUAd zuao5A73gchn^eSAnwVeF+#Vhkj)}w`X6XEO)SKU|-{) zrY62)>E|(`FD6o!&1nzU{r7eU2VExBa_bW2_|*U<;Dv6x-@1ioc7!+wpaep*hCeP_ zdfo4T|FbeDHE4crv?1d&L7-iYq3{))Je_V8DH2=?$?Vk*;SHG{>m;|u#n6-O-84L-CdZCO7|nr z@$(0{()8%~qu*uRLPyH+fmSS)yx3pKa2Nlfs|x zmkP#|{-xdJn%43{)D=4Qd8K;f0s0^R%s_z-Z#Dty$Cbn^R?0m&kB8f_!*z$E>Hh=M Cy+;NB literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/fui_ic_mail_white_24dp.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-mail.imageset/fui_ic_mail_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..273756411a41d04e01a0aff3ec3f1dc2bfb1e0d0 GIT binary patch literal 9512 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 F{};?xjK=@~ literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/Contents.json new file mode 100644 index 0000000000..123e877f0a --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "fui_ic_microsoft_24dp 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "fui_ic_microsoft_24dp 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "fui_ic_microsoft_24dp.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp 1.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp 1.png new file mode 100644 index 0000000000000000000000000000000000000000..b43f424a5deb534ac6d2ab2fcfbb2d23e4dc9a9c GIT binary patch literal 2753 zcmeAS@N?(olHy`uVBq!ia0y~yV9EmG6b?3^$if@E{6LDcz$3Dlfk8|agc&`9R6YO& z8H#P zhB=q#eABnDe_Nb>`*zGTv)2rkw?F4NU#gUQVD-Fo=J)H2MfdtG-xSyDZ%>`arg5un z$z=wH2`X0@7#6iiF*r;KU}oqL0tQ2%6EA~;*9t}k7fw@#291Sm3<9d7ibjKAG!=}f zj6iOY1k(3oMXKDxmdKI;Vst0O686wg3PC literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..5455ead2cfef72fd8694462a5586268c4cb9cf11 GIT binary patch literal 1150 zcmeAS@N?(olHy`uVBq!ia0y~yU^E3{BMvs8$ZRS1JwS@Hz$3Dlfq`2Xgc%uT&5-~K zG8PB9J29*~C-V}>VM%xNb!1@J*w6hZkrl`l_H=O!sbGA2XK!vupn$`}%4rihCKPb; zX*3AEX}Q6Afkkw~x+4LMPgu-kbNn{R-Vlc2zZSBHx`A2K?9xcmJ5Z_#OG+l$TiKl^&2z^eW3QyH~KC1$(!TiM4y|5)Y`k-pQq zZhCauv*$5ujm@18eM(-}e?L#jk4?elN`pusbC3(KhoGr~>nMkoVeqtMTXjVGy7rdT zX9l<5PQS{RGUv=)q(}ua57cis6K4KB{d0~Tub}$x%HN;vPV4-7I_8Yk`}VH>)3bjX z2;N>_Vl#j9&)S$QCAsv?rRVzJC$0ElrTA_oqvj&EB^^=|l(HPUR*Z6J8wRM+Mk4P| bbv;A+741`n=R|=82?K+ttDnm{r-UW|nDJ-W literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-microsoft.imageset/fui_ic_microsoft_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..98ca3614c576c1d1768bde855ef38fa308b2d3f2 GIT binary patch literal 5102 zcmeAS@N?(olHy`uVBq!ia0y~yV4e@e(>U0GA{laOTYwa2fk$L91B0Rk2s64)GfV&q zG8PB9J29*~C-V}>VM%xNb!1@J*w6hZk(Gf#xY^UiF{Fa=?e&ehlNlvkFP=Zf%G!EU zftA^yDRaV$LmEB~Mw|wYFEliS%uaCJYw&R4U_4gQ5%a}+PVgSldGC0DMh*&KGv%tz zmF=I?cR!Z7&&ROxu*^N1zdQENZQZ$J-rJAYV|W=>1`E{esIYv`o-{jhMR3Kuxn<@I zOUyRkJSX&b##@_NcNs2NotxfRpI{60j({*QWEq|uQ3sNiA2}Hq9Q&W|Z&k8IVmhf%9d0xnN-tMdCKQc3H{d#9`v`uW5 zT-CXH_4?a8=RY$p_?nXU{Ojf2kqaI_zsbw6_WtJhy|ey0$H z%lFP4lCeK~^UuuJj0?8TJAFBh=g2i?V2(2!3?V++C>m`Mjy8u!`vRl=qtVXcXwMkW mumCW5jDpb+AP@q7^#3uPd}MlnRj1`5NU5i*pUXO@geCx$upqbq literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/Contents.json new file mode 100644 index 0000000000..14af6b8003 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "fui_ic_phone_white_24dp 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "fui_ic_phone_white_24dp 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "fui_ic_phone_white_24dp.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp 1.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp 1.png new file mode 100644 index 0000000000000000000000000000000000000000..e040bdf1a94b7fc1fe045209eaabd2f5bcd447ce GIT binary patch literal 7532 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..70579d4aa656686573d90b39e3068e3c9e8291cb GIT binary patch literal 3332 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 u4^GOLXDcSda)ci$-o literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-phone.imageset/fui_ic_phone_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..27a6b5438ccc5f590062dfab3a71fbf81af4873c GIT binary patch literal 12472 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 QA;z5323LnNduIIq0$!{$#{d8T literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/Contents.json b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/Contents.json new file mode 100644 index 0000000000..f9efe37c15 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "fui_ic_twitter_bird_white_24dp 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "fui_ic_twitter_bird_white_24dp 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "fui_ic_twitter_bird_white_24dp.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp 1.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp 1.png new file mode 100644 index 0000000000000000000000000000000000000000..4c99510bc3bb6ced4ff13c23904b8fbc4b62ef11 GIT binary patch literal 10311 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp 2.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp 2.png new file mode 100644 index 0000000000000000000000000000000000000000..2546331cec12cee64d29758eea08800e77e79d47 GIT binary patch literal 4861 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 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp.png b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Resources/Assets.xcassets/fui-ic-twitter-bird.imageset/fui_ic_twitter_bird_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..14148143179c87a2d8b2fdf19d4af5c73ee177c4 GIT binary patch literal 16207 zcmX}T2|U!__dkAT5XPRhh^TC3%U+Bvm31a-c2e1wP?5nTOHovkeTK3{ma;D~DBegT zvSf*Qi%F=-*ron=-k<;X=kf61-q(Gdd+xpGp7T7*>mJtf92e>!3IM=ma{i1J08B&x zkfUt-U{8mNj6eLt9(>**6aYyr#xKJ7sfs)7M1)$MGX#|%#1>(L*~`Gf0DxDi9KStS z06>2=Ib&cGj#!!gdtKmMJu9uBu=n>BU*kOz@9ji3PQLKFBwmCR(unyk8;MUj1!yBD z_(aYrS0(*Wx%2Std++El+bA^klTXL%pUX@yO4_4>rjy_-|M$~2X9<9^T>t!PVDs0J z2Y%~I65V=3F3qlgZdnt%)7SmlXHwh$k|)L@)^GlpT4Zu(?UVteM-M2k&6c7$3s!r6 zHSerXXV#0IQR?<1j=Gh*l?3171NOXV1mM2RnYG!o-W9%bsX_jVNeEaO-U(f=!=l*W zwnQrL8*p&cdzVpmRrsY-{E*)2nA}4}q;~?19aP^D&p)OI>I{`*y*9g)s&qFu@EJ8>A0 zFXwlgo-t_Yl!j)$kf}!D2c=&e%~t5VT26yKyl32e2I3dtba>wf{Jx=PD>}>{?ACqW zu%(4kzB1mH_e`gci8%WGWW~L@TcEJ1gMZEsN6X*0{V-*BnxoM{!iYDj;Gij2_w#}u zB|oV*RXqN(1H9q9yq6s4k?zrpPk-J{(_^xq z=LfPMww~%?%A*c$guIrB;!Gc;_IIUZj z4cL27>_kAi%${fdHiE4n_n!&opG)-z1U`o3F#5l;<(Yqi{bIfQ3PR^is z<}te0c$sW8l5{|=_Sq^s5VQHh(J<#KE&ExgdoSOB&aG@yQEFgxoWYLr+?~xtW%Ii? z@_gO}j3Hzqgw?&hjUgx1Hy!;crqlw#2KKrB1h;>cmA)j2{*T`BfEHF(;(p~jp*D5Q z(i?g2yzbqZ;kwXMUe`pFo?+$T*14A6=(H2^(Y?T;FcTj3sY=D1)+U;0Kb2n~n2rIn zb~dLyWNK>BUrimbh1W72+cxJ-sSaW?;e?FeorX{X#1DKUk}Slsq%FZdfqU9UW9lMp{ki6bjKc%If$H`A9+PW)ntz}Ea)i3zO9V+}sx zwRoUr+*93D^$T^uXHRUHJ@2@7(1~Zkom8Q2^zSkI-{+eC?wA1m`0h&L)YVCrV1KGg zEoGy_0A3m~Evm{uWr}!ctn*Str=!C z5<0CD<=M&(N=aG+qX*)YxgwJ7EAefdH#F?D=`RE$!oAs*M#^5?y4p$I*Zm?o=l)}| zCJTQsLN?o{UfHL4rC#mTy}HS=;_q47)KJy!mGcc9#QvH0K|MSH@Y*%DtF{LV>Ud;- zSanDvXa;Ez`nSV$GUz{LLw89L79FbA+rLv3Ad5S-;+c33eUl+C*XYmLPCLs#;}(~? z(1Stu1L~UkvZ{(^`jhm==qJ<3KPPLyH&rG}RwMQKhM1ht{YZSU#G9#`8X-SO%iy}G5p6;*6j=H!8*NA4PGt#GTkxTdHTV~(p#00S5IgF>(^AW zw)?@drDi|b;L5cNzg%6@$xHLDzZ5s-LV221^%0rK4*oKA2^l-R6W3|;}e(ee45i~(|7KYrS=jmw&ZS-cB*9XLZnUkW=X5dPgfiB ztyaSwL}p3<(s(=i{@Z=CXT*w-7K@&pj9K?vZF zh~A+_0EIdg>q@+jM|*zqpZI)-z79F1K?XF7TsAK9UBd>FEr zHHJgk2qZ3zGJFcTyJl?F(XQ}UWlasnIi`4O&z&G!I`RB=F&**`zE4x#Be_&(j- zc3{q@Z2E@rme`@K@N^4Zvza(?5iovl&IYfrrou_ejn9ujZ93}Q`bZ#e-8^Y8T(ar3 zGqZYg=PZsNRL8GvKOzsD=D`ny6{K(2xYmm3sHT&*e&5cU44|qU3WZy3QAB<!l|H?6Y}@GU94sd2doW_vO3JQ7>{6T!8X*i~7mR-!hr+)?S|VnBf793A60j zCs*Nk8+1nh?*iRqpFY7s){2-kB(37t`!_t2;m9ZMj|hu7r-teB7WU||4@%i(wk)+A zU~6KMR|jD_Sh9Z9yKQCTg1MV8QWp3Pd36SWS^sPrzY??&Dli94mcR}h0&^=El75hfw0c!BEj(aHwFnzcg z(ZMEuqJ)48*Sw!>vR0O3tU*2z5rv40x zvrYsZbMMr3Nj%cVV~YBj1swY)EkG&ur|+wk8waj08TCr!UtIL`75_kImVL*;l%O$Y zGp`zzPkt8dQi?|k__W^C;{m3$v$QEozkr5{`(-~30gLQ~%J3Tq(kGX~S#6&BA;+!X zauXkm)+Jd69aEklN+%l0p+dmig*ZCr?l-W!{c`PYy2aPf1n~)GE@c<4n6ro{#XNM| z8>3e9H6y6mX%WX@Cm-#7vLAODE8*1%Dk`FFht?iv9c+-pkKTIEssBo>9Epvy)%1{9 zepysM$@4LAJ=6uA`0WY^4w(o*B)N-D64dz6!-VYw@&gS_o{|tZ%mhx;_aRAC!FwA6wA4dm1do0UNI~=Fb zduHXe@on57WuRXVzvx&uK{z*OW!Fd?4N`e8vn8{ahf8wuzC!l;@-w3RiEGpEvs6kz zdluMgTgy_z2rK;o#l7P2MmVS^Q;Zk=e^(gqoQ@D_u!-7w@1yI2W}X>N{PhvAs@G30 zsOmy4eY3d!vTtmQ_tSQQQ=h(^14+>_Bg(Ldj| z(VK1c*ljg`@6#@vh_wr#8q>}KtcTATb6hO;hs+(e_l2j*drv<5qh(|sJ-j2*-Thu)Er{)@VRne z-k(!T7`-*oHEwr0RWj_urAVcXLpn7Ro46Yt0rNHbKZ}Ffybz?(?lLc7VE(Rr&EIKS z{I^Q*f;^S}tJ#mQ5)-56bq&-dl6O1MI)}(R*MwwALfzbAwix_kX`s{Rtz5$KTzX^F z7?nDA^!-DWl@nO}z~25c0oIZW_O5=hqaU)WkVA2TeRWGy6hJ~yv@(7(uMLM4nn%A)Qy}7=8QK47e9!<}Q zZRk)@yQZ&1lD5%BSeB(CH*Th^)at!cCSDaP38h65mV7JWCcgTrsrJ*NlV!_%gnw3T zRp)Vu_0){Eoo48@G`wJ8%FvbfhuE}Z9H*{F6Nba(O`2^9xo*4#Nt#bMFZ zi7x|Frl*q^1K5A#2-H`1ZVgcAiL>LYJfA1mx~}r_4a&p4p38o}QDs(9TQc6#^gy^| z>vXv`?$o9EFit6C_Ve%T!C_UGw4x|S1L{4;oozKs#5Kn9UYa`7Nd-E~1ss+yQc>J% zEaPW(rh0A3HDGpdr*_q@%2=$|Q8YjD)T zSJo)LJMbxV>bli7{eL`5cLuATx~PsB8MPL79g zW|x;O?8!EiZR_$_y6~1=CwmE-4+Jf;?y~Oc-!?s<#vH7r9gO~bu8wXs_}-2D?16&{ zxp?s2MZYb0A+ia@5?i>+M^X9u>fO7J!eH4+;`EOdvD1<*BC!jp7j7EUBV8?um@aI6 z9dEAvQX(1)M=C^ffsKIYCiV7l??=X59?m0-FrHFz7|Q~)r8{)}+d~yxg}_};NJWh0 z^~Jqz5oP<~t1VmmPueG!ulwkxu)m_FS)US>m?GqT$4TRzUXSs+#|WvI*W?v>y>)opO~`WoPQ@ktoX}+edvbMQ^f?0sR$r& zsnzQ`0t~NSDmy2JBAOfj(TvO!Ux?zL`Dl5OO-;%Np!d=%+&_QOgNlYWtU@lr(2BQ|g&}D0 zSEfIu+BBumOnO5&e)!p9XYY!$fLzNjGuuZ|$8c875u9GJw+=IN`?iwDL%B&W;N7&e zC1WngQqm5F`MkLLkHN25;tM_>IK>^cuwnS)n zB!@K|+ctG+7eW!nGkJT1netd<r4oOR*J{8lEjX;j(DAZS2%&VV?LuQZmW4$_lLKhAmfeAlm`Qmv>}WeOEwSoKZb5)V+b9}zzkH^3 zYz%HM4Ilw``Mp_)onz%?gLQXx5n6>;W4-L)X$n-oi71Ulx`n<)fy5yj+WR=nmLr@` zfBYvq$v|CLr$)ZZYbSA;DbR}mT?E>;8r}|)+o_Lt_L;Gwbf#}~;5ftrmNCN}s!%PsGB1yPzQ~ftimh7KrMz#?vXk1_2+y;-yd;9P=prdsR35T@SK|PUZ@glu!kse9l^jg>^6m8Y zfvFE^0y=K{{=TO22UaC}9DZcyTzXCzROjeysj-sjv&U~fv+`uy5(##W;*8p(A_RQI zG}dkc(nbgkmq}m|?5xBF%&YF**`zcIru_c|WHUUB!16Pm4*FU3hUu$OB%iPXL1EKl zIAnDNnwk8wOc(d(K(HfSr1)PnPriT)AT8{O#Cl0gouB9Dt}h$6iE<3#c?SLnIM-6XsUN1F)3qjM>4kxfUmA_fdT1O0z6s_m%j zY{X>z>iaINlvcb160}{6dv3GQO~7Q1mq1S_Mg39yixKJyAUfC@atf~FN zQBbYkl>jC__6%N)6c@8FqtIRSovup8b!x<6@ETv8-D9ZiYW$4h9yKC{-&i9JDQ8^( zwxzY5{%S9;+{+;2kaMz zZXN0hel}((%XM-^D4#o7WWxWtuBCZ0C6te3(OkRW6D45ibDzeJMF-UL-;g=@M7;Pf zH_w6U2gaPwdxa6{eHBzFuXrnH9)7(%8K7W?uF*vJdkPtyuB4m+q)#V0)h4BC52Dv& zx&oWGPUe2IS7-vHdwb~m&(SF9s$QCQo8T`lRLj!PtpgkJNKmpKW1!+#fxFtyTFpa; zI}!=U1Lu-?T7)d+Ep^@q?M_dKsSUWYXH#Vq|_W%ut%#}2T`gQ zRLpz#lt z*pL}T;+ucdt5SQH3HxyE{UEMb&X}G~{)M>7M-q6sk&ykQUoI2R4Ok0TZqOouwQ8z| zRUr4X_5)VT0INX>4Ho|r-eq$gqUeHyJJC9?i#W#H+mZNxwfZW=I=yg#Zw5Msvxv%3 zHCxRJn->76;74;v;-asK>zge2ym85S3Ztrr4k?3R{Z6W^tsec!fH5dq{C8=uASJ-V z9!BxR9@4h!gb`0(CQIIpRxZ7JXbl0x?$es2ZS{mH1Dc_CZLshy2HNv!hl5ArxV@=#L<@8FZXxbe8#s7|Mdje?8wE?Rvu~0 zJpJ*nalsLcw~?@s-w#&nQ1(f9wexMzRmygHf4TE*qd14FV#s5^iUhdMZ~n#o9NR`> zh0@7}r8rj)+#rr$zr0z5%xAImQ{en+#Iw-dGdZ)yOhD{zA60#M4^jE*6#v%dHA4+S zlg&SyizlIH`fSyKEuHLle}uXoEs=;U#rA!qYcJ)WYu{JIm5O7UXJYPpl&OF#y#EoE)xH0< zVYX>!F+eLA6@_DeF8o16SIkKPFi8B{-f?y{`sJGbs(jS84oImI9ee&eIZUrF!x(qy z{I0vi4gedL^PwDNMAF;!S3+k!*$Vd^2#}jz3MIur*WPfR!QIm#qu$}LZ3WQx(8yZ? zx!BE_#UyLC$s>vB7R*rVPB z=pdsxR%d4IhBSAjbn{zLcjQ3ear*;aV|$54b*!JK}>i#r^3k1u6#CmV&ub3 zxuV1;G6j1=?xsId$|u*_mF?_nY=c?A##g-#*RLCsVG)AhlY99fiq!j?U%+T~?16uQ0@cym6(3jxO_(Hvk0-U>uzDJH|w+yy*Ik~nc!Li8jn0Qy~VWG1r_GFl8? z0g#x#Qh&IU%6Gq~s+A1@cVZklc8WdaYLj!DMaDTuZOT!8^&eH1U#Zv6$l<1d2m#!kVpxpf3;tsImywD9 z`1jC5J>tmh7di6b%U5^uWjm>73PJW}G@2dq%`eX&FY^`#d_lDer3TLZ_WrqQHaIxA z1})o{=l=L<|GY!94i5mcqA$FU^b4Gw4}I2+`c@8iNO9@TzidSQr^s)^|6{HhEt^8q zz9xtNU<6nI{`z0$cYJ7$!+0bh+3)0Q*~XLSLn8DlN-jtu1OWImpP7yvvDzjw5|J{Do?;>qY6X{p{>CF#ctf`)Gi#G4@2 zq?qAE-#5Lmg`>xb_PrhSfO`r}a(G4-1Bwj()Vjf=IP%hUmD;b-Voo7m7w}^G!?zx` z;RFG|64A0&0TeoRZ-!p`C3R#_Y9pZ-?5LS{vVeT_22SX^rHwR8*A=mIfdK;}@7|67 zIAt>TXJqD5=~pDsU;INYO+Pszg8rN0fge;+7`nyJ&-Ki+Xd{YoR!ZVkg@7PExmi?&j?_c+j%;5&}!@7l_swvtDz3f<05&E$5du1%U81Lr*_L z?srkmXn4Z1WH*CXHfWxuXvYW|rZVA=Ed(Puqz$3T@!7-lS|a#mFmr(Sl`v{MV}>g=@d z!~Gp1yOl_glE?4##hwNr-GuyRWIp5RClNHgt*_xDAv$0_s!IFe0>x}kBPh|v00A;f zTh&(#Ah)TGpUniT^uo~_ zML^#t-$ySFjvT6cZ2D_SPzQi~?oKa?uMSle+H6pI4{1&D3C}LfE9VPM z1Rlrw&HsiwV0aKjlZNzCZQQNX@U3~evl}~17K6-_haRLe^3ixX*mcjh zi#jg+1u7BjYjmmMKstFj72ZkH;#G%x6I~@iHjvC%yh+1<8EpKEo#Um995^sfr*0?N z976Z(e-m^O4jGmzJ-d=lem^J)8)=4C#?V`6^MJhR5IIH5%s3#bhE$6#oGCM3r-b61 zh8Pp>pQOqUGh6^ⅅm@adyQFbPqS`Xs6eeA7_}L&X^9{hUbLe|JB3jFGtzXnfcJE z&HsilZ$#Rarq@rt*Hnh$V$dHD?}#EY^sQ+%TiNhi0y%v?Bx^J33m24=zCW6QdC#R3 zY|*OcDxvOvShKH@m9 z8p%+aM~h-VN|jnA!^L>Nfr?4ak$J>d5$DVJzjsHq)Gj%lY`z2yhB;ZPbTrRI z!eGR)k^yhwi6PU;eRbmK87O7JzI%D6Z^n`P)Zyj_(Tw4WOTOaB`)Xac-`9SD8q#O+ zyg#0%ZG+|#N5Z(s$B;?BH|b0OTg@5guT-#acO`A{JQQ^pB$*_-m&p40V}U z4t&ImZV%^!yuI>i3V540>joPho6s)<6%mdX_`eUf3HC@of*EQi08oipSQIRKR-0!I@jfQ-BD8v@C z5$z)nY%p4qd*W)wTdlDSCdHdPQU{jz zm;rvziFtqz9hAQVS&H10)Adq{U0@^5lrY-6&*$qebW(5LA0acAx7^i|Z&ExR=-uSJ z(A&Te#)fN3g5f*)+VaGl$o+5y0q{Il_M!`L8~{t1Bvv3#39Z04=X)YCK>z z*lL|FCH4mHN6WWEuZEy+5a~tv2DS3|sFZg$t?AggDoDr@?oIAXlYNeBP2ctOvu>a12 zv5O z!FprT!E`c{iQwRWARc(9J#}i6!ik?p5g|}-xCvF)#IyOQLEbI857)XzOZw;F`Zi7= z75UIS|NJ@*ow@H8q+=6-siZ#`XiVYI<1cXHJ!!QN1mkxUkd=pV;W6a@ra?9eXWCesI z`P{`*Ax8olWFAJ#>J{~O)uQ3;_~gMC%tWD|F(*N5c=Bpa@DU0w{rJmtK zvyPqAdqomM^soph=U7EsOj|#x;2zw4ufw_n;cYwK`{b|S!dsy(8iaMhv72JuFs>+mzi zE@(BIBfD3e>LkwplFS=A{Cxf zEd>eVV*9vWY048Hm}sWbMJ9rG;fy(pxt>9BA<{vkM_A*K%ZqJq%gJV0qTbyE5ovtr%uYJ4nN|cCk^0EN%!2^%tM{kc!C`--N zBEZB##KSkkH~Q1XdXZr8L{E7zuRPJ&1QN`5uskz+*ap2_X~Xh{s2F6#=wpFvf&*~& z&D+i|^EhCX6O^XU*=mWTW9t9CCJ#;iCU=teSfvg_DZr7myb?o z3V9x{tbx$uJMH8wzIHmq@4xytod*;crU!j<;ey)DE6G+P-2fHzg-G)teMsxkc zFL|+KU830Z1YwXk^c`9a>n0go$O(Da<#=q(Kubmd%-Vcl!K9eXrGYV@7NUsv3`B^WMHnanxJ%H<;8Z#oGzhR`h{p>@q+z$*Amr%akA zw`?}7Q)_|mYY2Jv91u&VnOv~q&3ngt#-fh}j6W!ok%8g;m)Fi;aMdee*p4j%?mOuX zo}U-}A~s1Dkj@ecVX!F}*(oz};Es3Y-G#%q^Z@t=G9yPxD|^tDbXBExVWE7(8RXlR z5pti%}F``H|7~`!_DW*F-zo;F}WwMXNtNXetwtn5PIYsFk%Qv z$U(Sc#g_Gp(2kQ~K2`LWhloQkV)wh$Hkj4t6p+l*O{t3k`J1>=vb|0#p)^LZOFD3(8Tb;GK~{PRECMibpDM%! zAI(3v{Q{el0e2w!+zrcuMy069t5c!KYTG{zq7(fHco85v{wzC!0r+PyEhK=J%j)xL zv4MQ{{W7E#hRGATtRXs)jeTxg8r$bJ$#_ysRu#47MT`}EsYQ*zHBW`BMnX_w{y@^m#&|x>d9PK}Xq^t#KTK&l@>szv43<3| zbE);k3%GXk9;mD)N^z^7FYf(*Xa{8^cgPq;;6chiU+wjp%Tf1iMF7j6*YxA#Fn`oj zelf63$!gz2Nm#$|wCY4gze95?R6r>en56=mNrer1+qC(!LMKfUs)68Il&$slSJ4z# z1kh?`P-T)YUhUQFrWj%1xq1FtHeQdzR6ap|Yf*+^W>%zja)>#g!PyU*IhEYK7kffr zR(VH2=O>FAyf=Oif@X8~*g>!sq0T#@Pi7`vK7adLIy~)a40Z8J`x}Cq(bm_N+8G$b zcaiw8R;V%&xUI;5JCR=h@D5zqzU(;>ga8|z4<)mY;$Ex#_v9L8Bu&Vt<%;K=#VUi+ zaabZ}HlJ2eg!b)H;QtJ>bRz%SL|_wiB(^nNV0I9UMP#~8DIpI+-4>vGj}ib; z{LHOm;hk`8PN9Eb<#9T!sku)-nI9ofoXV!dW3OC0LyJ?2!)!=RUxcwWTL2#VG{l?L zPQSMQKWLrr66M_xA5@Ba9kl(MjE3;4Xj%xOq}TRy4>mj;0~>*Ua_wZNIy3~l{qrGD z6@M~;{6ma){9fQfc;`ghWuUrANsN_o#%z6c?`CgQf(~}HQuiDc@8{hzKMUpfe>?I0 zQ^{ShB#_ui)lO*&|u!}$N`fkQ1baZ_yaLpm#rWga=)~S zCL4o>;+3bp5Q6+~b-CUD-Gp%tXrqo#FT+kLDCt$0e!S%P5lWhg8Di}Oe0O$>@R`cK zdkl9n!V^S29xZ`jsE@066GcVehnc;hw_O!Dhc&c|WORDLjB7ncRqa!d)ccWbAu z4#D^cX`kx@rOMk!_|Pxx7*Q1la&4=hc+DgR_p&Sse2~?)pe;^$g zUXx1T$%ML>_t!Y&ii?u={lRcBRfY4&cP8LHlDuXf%ttaAr<+)Jdz|s|+1n5F%{WD3 z`T5a4R;U8HNCF>>J%0Kj#X@F90!GeZ4p>4^vQQ-dZ7(cBv@D;Y z!1r->sFmV|T6MzRb(WTl9f?R#`cAcjzu0J=e^lf=GZ+b1A#8J*$I;mB2a`B}ab!kp zNfbdDUV944ucGn8J{J7zH5FVm6aVv7cG2_cgEbhU z)MzjfJY2LQr13=W{ZMv^Qt0VQx&gx7(Y!wX9yIJ`hO)rilHeaHPAc?iiFX=G;Q%u0 z@+{;MggJr69{F0xFvfBTs@TN(^Br^#My%R{+|9cqTjACf<_s%B&Et z)WPKJf=Xz*kX+!wvJ|Fy8OATEG2ito@Eu7Ss-3 zNTM18+x_U8 zeyy@s>6)x$Mc|z^%l=>+1H?>Fg!bb8L|CNhC=+gY#|C}-j_9O+jG3P}sI{cUon++hJD7o73Vfk}V2ec(*1Nk^!-eoY+4{ik^i%k2IRe&t}c@hSlwFBML~Y!(2E zU(atbZ%DI{b!@&xjnA-?^l8k0pnx^j37l$yN!XvPfRhU{m98IMV6DHgnsh#|l7{SLb#GT(#GS6=rv%Sea`6fChc;|J$U-&+rD0r}xRI zorwRiyZCtX1{9CLjiW4NIv9UMW9RB)iXWPfa6CK5MAIb>-O7!nN`XLwt+?*{Oz|Og zHL$S4ft$c%O>1StJMBjo@a;n(s*BJGv!7XE#V`@u^y-}kj{y9zA_aqR=ZA7cBCr#& zDhl;r`EbKHT1e+MbgT*ti^q}G&yC@pScB!PP;`M*(>sj{u~T`U*-7_@x6C z!WIk+VSwWXl@l|2IS!L4TfmRkjZ7Q0KKBBYNZ~q}i)NdAs{~IW###9TZZrG^L&#Ez z8M+E?%Xlg*%W31pLw)IijI#vXha1Kg_VSWJCZO@He66MhbRS^;5NaCfFl6vi#zSdb=WVt;DD1>h{yXvb z7jOHr=ScX4RH2;b?0bXZw~nB=TSZ=f1o~k46+-xXq4!Z(T}qm75h?3< zE-b0zy3LPYyah{1hCyjA&BS(eOGWD67V^ke7!;wTNfnVk zzf&%doAAFa%}x~X6g#+P?frr!-#m(QYP0ZwnRE6Yp_ST^NdQ3gH3d$s$R5re1Bl>&d0 zt*>r=k?Qn5+X07CUnJ>DGIoV|Je&5p^wo8Z#P_&8pA|na>syuw8V=*^ekA!W$Y1u& zW5Ew77}oL6!XTijbJ=B77O0khLn5VcLYH2;-%yF``@NnzXWMcDh;>WZoJMRcj8atN zpScas$M~$z^#!p-vYrSEb$<1|?&tPb`Om8#LlC5vG_b)}?uy zwW)zE++?WCB7p#l1Bp=~n!Qh9rOt+jrLLic> zFD|=AI_iWUK4m(&V#}C`wf_8)11b;JfcNH|z*XM2z83R9iFz3crp}7XJ~4vkO!{elhFJmh%ClZ@UbPRiF991y=4T%pa0S$-n4( z9`c6(30BvNXJ6t_j!G-Txn9+i1;G!d>~?)~3wiVr(udHhy9Nln+3H6*uZ`=-Cs$S} zp~h@1_yvW|k8d(0?VZ9_-D(eWwR21-v`Iw|-!a zmC@f$D#y7#l`nt+P;vPJfK4WM#dSvH0b4mV?&@6hU_|D94p5|O&X#Xw8%Gv2x(D(v z{=DS&Ym*($?Rg^8!s=YmtB< z#L|9_sSq$#qwL1^jjY9qARDfGLe8}WYxAo3F%llo87!cg>m zg(etqf_0gk6?MQoffjK|F76Bbex%@-Fn+Js+AoHO(SMhw%?Hus30NBCelvN{k%M%G zoydP#pAR@G>$Blup$32PK@>?nrF zg!5%5d=cKUG>2DpK25Q*q}s2fZN&;rqztHlF%6Y{AJ6&h9o$Gn<{EP6HdTzGEdg}U zHN17|uZVa38B_#Xg~pt_T4WYW;3$pL2n@h}#7N#nF850@TY{}5T5mh^1-z3(9EqKw z9h-(k&d|j#R5StmnnZq3e;BvwGAI7gfzvwlC#!zTpFFFa(ResChadepY0e41Z(XH! z_!JxokMOb=1Kbv<-xM;6{4otmyQC`gF0ti8$95{4*8An<3jY98axE2k%%N_$5?OM? z5sa%+((VirI0W4JjK-b4OIYw-{Ag{I?FDxvRQa=UahR0A3i%y+c%8j~R@}%1*@%mS zonI_~mIAa8PN(~>2%bgUc!kPw^g+1C#$lwr{67vXmGGXuodb7WHQ|OMH4sUPgHG&3 zc&=IH{e`_}dI`!Xh265(2RfyJfbmwLRtBs(%A8O|UGM7%flR!IpJOrOW1$fX3LwL; zgl{08l%`gt>Mb$>n0qz3-tE&|u3u&=T{ib5UI}(&8Twy_XYjz^5-sEegY{z zb@p`fud*_Bz_lOkGc=ReDc6X9xZee;snZaLi@TQMTxEhS37G%2pMDkAj{NERk`uGpOZAw<>;- zS~YovUKJ_H544U#XyaaC)!h6?q^wBHPQnd&RiZ2t7862m=#oA2FwTXiBse`fpn}yL zS`_!k5Mni&QEElUcrv0bTz0lXF8AtXMDLk2G6M)l3|Xx7S1z#?+#IXadz;}t5&!U( z@7{!Zm6*IeQ}mxVsHZ@`0=gpqTr_rJ`E<9+Xt6B&*3A_?r@!iVFd24wfBv}5)w#7q z|8dM`2E6FoTrcBC*OhN+msb9+-dMM#Tu;-Ve0RgnfF{4k)&9q8rG0ZTyUIT1Pg#47 zOO!1kktNHR^O!#8obMlSemq{Ud6~KIYro#tbwAH_$Cw&lWntuJ1OR|VPxrDp08nF& zKPTwGl_qwzdhj2^9bKDy0KhGF{Grk_7ySh;Qr$DZss)sMJiQG5fZWtH(gc9Ar%Z=V zv;ZKurgvG>@;=qt^vd1SSF2zHPXzWgYPs`VT7>1^Wzb%)MCQ<*wS_i6^AQ6C09h?4%?>CQ{0TI-LJ$Bp ziUC9j6GtbA25~$UAZrMv0jyJybN~?^&I~v@{T~sIE3*Z!qr?1K@|868Y8}_n0P%60 zqb2BW>d{vR;gqCr={!6<-qZlMDBcJuDf2N-o#06WaEsuLa@bsEI$#7frqPm>(xnhd zi*g!AcBO3-(U5n$W517j0$L_K_g9ucSFD9oHJfbxhcpg(i(U7J<~o1^tLj7epo~(w*O(|F95(5WH3zS=2Z`xAV4n?YL{YKbt~U@&jM(E zPmsN?wdeD8P$k#0c9j|s7r_@ljz21VyGHXl4#37p+LY-2{O-N8uzy1uMGY5|!N_28 zJ(378suUcuN-Hq!ThsoE4N)94&QPn%Cu*OKRLP&H{%5<{mIpLY+$qYVeN+GQdYQn3 zz6+9|gbSbqC2Ogbhi`R-ZQ85>9Wi|I4f`1O?$ImDr?6&HHr!ckKX)(qr!hA%_2 zTM?d1B(;P2|bxg!A-VEUOx5pmnkR63*R$v)(u)0_{Pni{o=5Yk znc&)XRb;U!wT%m1X7A%%7b#TLLNze@eeCF7*<%4rc#&3wX@?I1Hd)T%=sDQ8vb{u6Za+^`F& zimG?*!g@07g&KyXJGWvc8*6roOF#2ZV2psVsv&t_|DdzJ%2CkU!2NKaQwGB_*cWED z9I+o_dTveLQLx?jt41VpG_QVR!-yDplO)}J&9u-HuqZ6qt4VN~^MU_Swbm;8P!afY zhX-B*V_ZAGbKa_x|IOXite3S#cyKWvCe4hFL3XGU8kiPe``VO}A@C~ax?e(CT?r;W z&lem>+p;Nk4MP@X3@`aibAIg+>DPfO zye+~ng5SuSVx9AZOXT*{@@7NcxWBfnd4uUn+{fNI?hw7XOu0SMZedgs?gf@LH=}Uc zIbVx)4tsBcZQ-qMsXz;Vyu}EvTbluMN$+X-6-ks8w8?*}xB07=ttUYae;2R$6cKRn z`xCs1b?2WJr&_l^@aM>m7CN==lniLbKlbsJ^PMB}hvO2rgy7emwq0TQhKCIn$%MSHQr&fq>n)Z$ z2b^S%x|3Dg_GaQBnR~QCp~Hc)&4P36VAIu{q^;{MDYfIYrJT)PcGG~v*>GINmiN1+ zUAF#*s`bk=!DK$7&mO${;HZ}QW0F11FD8Cw-&;GSoQS}ZI7)SHEc)0 zN4Y_LEE7)Sx)&OHf}Po{#G=b85mgMvNe}L*d6O!g3JJ1&PyBf+%xW>$BFic~(bdwU zw0-4T9d4T_R0ZnU%^csZTU$=DNfK*k)r@Lu9whc8q6QShac0}z($`6Cla9CalVwZD z0*Au>GH9LPGxFzyj=prc?+|34Unc9k`jR6bAti+>PdPfD_Tc0f$Orw>$+6eochb2K zuM?E^0$K2xLNu_zrPiY;sFSyJ$D{{&AJ%`U1Uyh8rzQ}*;0LFpHB+C(>RbQjK=8k_oXhU2=x zgv1$zkxs+QIk#9CG$xe%3rE2%xR`q%prf$8$_(H&q#+oqb<&KpLU>9&qLnV(x-YUN!b zYIUq`riNSybm!RjCBRf;Y6w?9%_n`b7DoH;z5mqXsNbaG*Hz||%I~xapByiaWkBP! zplJ5M?L{Mal943JCsG}UdIa~+yS*mMo0=dN_d^3R=$_L=ZxOi6n)U{?kO=dbx+y}< z7kBP)u(|uwo?TO;|YBQ)nx@F+#>;TtT~Jt?-q_Mh*|2fF7$CYFd!i6pJ{d#QN6{jmv+eR^Ti zin({0OrdjcJ0oAA)5*OY^X1LtjKDxxE_~-*NX({$6He7e811*uhASK>camOQJukhR zYjD6IAMwGrOvcQg>KsR>wHPQj+xIgR)RuL*D+_|K>Vj_SP45U@=#LQRjoQlLY%VE2 zU7;BCmvmb;IV%4pd?yFyFVoS=8wW}#Zs|1;i`*c+Gr(uDCnw+2>wh~Tz_=M;9T^<49Ao|DDT_wIEDaY633|( ztdu4P%1hJptK!cT#5K`XzqXnJ3C@iZJ)ZWy18GEYYPSUH;I0e1x=gg?+AP`=M=Kgx z53ebQ<3zT-c}rV8I?8gDtJg!YNoV_WgSn=X`5WwMC2Rtr7j?|OuBBqBx8*ZZZ#4RD z`dm7onwO8b)^i{=6jmtoFw=x3w|FZdcdRQhDE?r~;sNg?&=VoSKlaKaMul96*v0t; zQ4g%WLbRP=(oRf6rRHHUS25lwKdxWc^WDC`MsvueEpKyZwwwA(aVKC;Uv+phuR8zJ zZ8&4N2Lct$daG%=X=5ZmJ?nX(YD|bKj*GoRaO>t63A;V{-fLqP;V)C`aI#Y}?Rj$I zyHy%2TTRl*4#DB}pBUoih4w(V^lYRKS8x5x_x-LDa`M%IduowonGWddR!uCD{X3c7 zj2O$auj-EWP?sZj)vp zg$sE`J@2~ObFx;QnooU1W%G`PoTGGVJ^<7ZrEfdD_LsySp zeZQPeinU-ACVT&;H@X@zN=xuQ7-xeZ3KUfWyHu2%q+92Ea}VQ8#MQLrX#a;np9)G@Is zF?s16_K<4P{HW`azU|JscA6;ulj2;GPPT90(;7k;;%UODCtF|wQs?(RTP*l?aY1FQ zLOt^E?Bm0rcd=C=KS(#5c%Rg%`MOv`BmQu9m$cr`RZ!HxUh2>F2r)tN)b$-qVyn(r zmKZ`1e|p8qcNJB!m)IDTlYNv0b;1Zoq^bZXu^u1D~l7}wHY@75GdxI1U>cF4S1kLIuYvn2j5 z->@de-+hPi=}LTq8GGj}dmy?T3`^lHATZ6~xmAa4nn7UkXPMv;rFc-}_4zvTSc_`G z^0)N1aidCs4)y7r@p=a}&4Xb2U7<;i&RK@Q#HJ1XC8`15{hE)_~uEjF8!^3 z`sa5a7ZH5RU5`x-6Em95-{4v4Hs;sJPQ@BvZsP!rIQxBGBX%TUqyL_i1#b|S=U||a zv2X9Y9N}>0ctTJQC^2ose?zDj>_whGw3b3tMwE;}Ul>4nlj2q?*r^-(uXev0UVUP~ zf2wo#a-esglFCSdelplD`MDNF#a`YNkN`I><-2?Eyu8JgYv8mxv`D&sVZF_!_MTNT zEkdOY#1dQikcabE*wLbShd}DC6X&E#1d{G%cfjSbmi*ApvoWs82Cs`h<{B!q%WsD2 z&IU_tAIHlPqO_O3mVPf_!#h~_K2M#3?j+Dr{^Z;V4E$8;VLxI8*i^@n)FxgTxHF%^ zt?x{Y5s-9qCMLmtGxrs`B_$dT%N}TvQ}? zl3G3{L`S|6M3-i%p;Yu3?x_S)Bo65xbk)vsuJ_U#_z7t_jqTfM8NP0iN}s;szVU3CjQBU6)ibzX%fNNlMl&exegfnwLv*WI3xj+6E z)F7QrL8IfD66blAEKAL{>(=R?{&G_9ByM2G_#0cLjRp@)pb<%(p3L@i#Ri#&f#lsg z9L@ZmXliP{B3-g@Jxl7L-DuRKQle{i{4uy4T@;^qTJf~<7ER|-9JhW0&J`Y7`DPxd z6CBGwmw|kyU*^3}1Paui?8x9uEOunV5X}QMKBs25E}Cnp>IhL%7`sqKpD6cFg`^X6 zH)5YsX`}K$ucAx~Oq^t~r;HktuR|ls4>@-N2)eux<(_C~YCg{Qq2(eBXw#~$zYM$w zU9loK%{_5}V`DVKS0!W~!s+}{a(Qx)bPMI_9u1KSc^`7tU^@_mu?ybDTHwDhIcV@8W`+lZ1(345hpfyeG`f!{r z)A0HaU;T)Xh}KNw#HYuR%s3SS9p7Q|j!^X@ZJYB(NcRo?bOw_VyVU|s>T|Vo_P)VW zmsAGBg4xia<{SRtmb>gHjMMD%S_%ze!k9ik6nCy1^i|&uC@`w8egTICpU2UC9Al=|JE-yzaAiEd-Hg3CnknQb^8OT6F`_2?2X5exCAbNDc=|bwCOub3#$4EL)Jr;D`tdu;pTi;rO z9VZ0gru*fkSJLWA$(lffc%M4V{ksVE_0;rq$fU+$Kv;;tRI+~3483Ae*wgX%Kh?6% zFJInP;&zT==1;ud)$1IbvI89`xiZ5;i*Or?o^4DOTaORFB8Q+PN6D`xWS!b=M1%q# zx5QA4!;hkP&7rC?aHKdPiVtz$s6#s{#8Ijx!w3Z*rX46~r{H8jTm~ctd7b~|Mec|- zvAK;YSs|ejN(@kk%>%5`bcqWh8cD}uTRZcSaW4d!%KbMAb&)4$h2otmOAcL!r(pfd@Y5}(%B`bY!+-OUzrSv^u;Ni&M*r1fQ zY2<8N>f+SGnfc$2Ch7njpF3i~iEVSp+i7C44+Rgv)O9;_Z}L0bz@QzJO_c{th~QLF^$Wj zKm;(h(UOau(s%~iUIo(y8Uf3Y~(dj}Gqp#14g;l;)Dm53>ELDsu$v^9NH( zw4kR!o&PiV&+z2WqAtRMEutb?w&$!Zz%Bfr_W+)gkf84BW@iWjdnTOO8VAx%LICh} z8Sq!4BAx_s=@$_2<}y9;6g6L^0hGp?0j#3843GY9QZ5iGZ*wq9eWi{A3ka3!*qPzy zr~uOT#GY){59UA?9?9@dKosY}z+7AP>h(HU0j~+by8xjG@a_VvFfhwP2P-~*o~Y-9 zFuF#pXonikG;xi;J`2{ZQpJ zBkwA!POQbHpjCQRVu-C#oV@mAs7tZHr4aJ=RT*#45`EqSnI;b2s}JN*g1_13p~=BG ziB`KXl0vYT(4toscraHkBi?}r#X^Wcxaqu(UU{t|Lkd!S?AER zk|@i|P_%pM(Y`7-f_H2KudR+@D`U_vi`hO>6Q6#rp)s#&a(?2{yx*rYd+R54RHM|u z^XF?US5eDiZ+hv7QCI`3it)8@!$~IKnN{B(0auIZf&#Fz39k!AD4j!p=!y%7$!DXq zr{5Gj;{n?yxEBZZS6NREMZ7g99b(vumo7FZ3)?U${H1Ux0MNMR=;_%askYrl5Mm%g{Mfl;!cQn$`NZZ&^RM z%E3#nXG64c-)TOMfF03@ydWMXqZXQ4x=!c7*3?8OXaf%~DrEM)>1aE9<~z1KsrOa# zSZJnxEur&|6ibkF!v%47eeb3{Rrsi$uaUJ%vRbCu_uf4Us9hD7(Ph1JwT9>0&*-<> z5jS{}>P}djlC{pjB819C8)F{$DZGM>X8tgqY`*`Kw#IJ#%zs`#{{MFXXnuIaV`_f? Uc`@sf^l?1&t{7h~(Qn7a>V9H7$S4VlCxFhC?dBOUrCs2%X}SK5)D(b z9K(=WVU8S4%(mb3_wT>o^Ljn6&;7ig&*%C4@p&??INBT)JSE7*#dXy7@+B88E^e)Z zeVC7Yj&ZTE;A;FRy~Gg!!5{|^7gtNpk$pd2 zF0NzVwwFL|x4Bm-tFbfIg?#h%CR-_QM8Qq~l|XZ=W*0!=SxIdkXVJ+_^IHJiSqab0V@un+sjo9cIk3)VE| z_#RwCJQa1FNt`~!^i_z7A@7($-zOeyn^%%2^EG7BIu@pz~u}9eou$2(ZP3M4hOLcF&yWAYZW#`997cv zbE?02YCUD6jI|W|)G0$C!IQdnGO5^S$EnEKR9<1lFSeQrk>&AVlFAgz#KdJwgcVuv&i`1rSR>Y3Yf2+mB~*oHYB!2@hErh8qw|y zqPFq9v^pyS!d0OCT8itH^U|EJ1Zx3Cz`Cm$M+aACavex1ogbn#J@_}?jT zY_S=CwJqZMr=OC1wR@?vem>*Vimq_^ppGn@P?ak7KE#D-`>ogQSEr(@uKdd=%!2nZ zO9SjHPR@RI|7K{7x%qoKxu;FUASw@Iys8^D>ucZZI2Pg&y=&T7G1$GzTS~uy`O0=g zzpm<|(PQ+SdPpkpv{GW{il-fz8rVJS*zUd}hg^C58A%>}A+}WmF{1{e8jBQ_5Op`5 zrzWn{CCO6bjjUY5)zjjts}C_k!pscpNc}q1@f}Axy)kgdT$74<2dU@7hQEFCS*4dJ zdar(uX!E9;wLE(gQK-!L0VK#cFTTvq*IOK~!=D&k`BhKwxPvE^5?-bxZnL&(+y=LE z<~lZ?LQVwNPG38;-r2<*fe)=Ix1XD~^jI4=`;?Ayd8~8a^3M8mYt$%ZCvbHg3!Em2 z1mUfq_qyO=ABLVv+DOiB>9pkDeAsZu|EEZy?@H}Rpj4S68&GSNz4k6fsO8p4I{0DK zYZec?QRS0Wa~tdT)OL=O4=QNY57xJrwN$4vRMWU{ciwWli9}NWB*OTzYrZhEm$lrX zk_9E&Y&SVCLz!=eoW`{Cz^_zdp#4^nO{~^k+>n#tm`6_)(Gyjn5&^X?eY0N#CE}Oo zKBVk8wLdb^ZJ|umAC(Cl-vscY2yR<)_?=~(noauy$P|gzE)w9rM8~TPE$^sL+psTo zEp2Yry0Wk@8qp<09Xci>^EaD0hlt;;uHQG26Q{(*)gH%Rs_xj|Q)uFe9xc$#hhEJf z!-GpxmNqwPUF}d0phMcU!O{V6{_#(tl5T68w6d_XSm;1Fqo=SjL(jynLmfZ{bYM;q zNofh60{XP}BL^^KBZ^%AoNra!?G>K2oKD{%Kf@eg+2s`Hu7}a|5qvpA`dvHhg#Xe> zR$!yoTB1CGKGx5?ix6+SJJEj$K)&CB!3|!c&?lL+=Yxc8KTHO-dV(JKkvf$D!ZrDf zP~IP^EJ6vllf+@-G+d{|zR~7He<_61=eXNftgxC%D+15>otG(e|Y7-g|dM+iTsWnRx!d`!V zEVKPFb^ZO+WVmiPyLo9p9)bmyf&4BMsR zTXS>ARY3lS#(aXrP-uXc9ZQ->{ZC*g(961XU@&R_JnhX;2Ye3Zd5*4JSn#esQ?Ds| zX2vH@j&MTb3tgTF>t59IHXWhJlrqj17WDUCJ0)C3X+q$EgcB|!h9wal+4OOsZn}HG%`x2Ha2+i?^zKbQ45=#HF3hSCi=o3a(td~8 z>!Z zT>6h|AEI3Zw!HB$_tK^UI#N~p!D~&2Dafo^%8l^lu1NFnWYfge(@0gz-n|#)H9Pv6 z&H?d!N%{`hTQkHxm^ph2zI|F# z8n1kj{OO(m=#Mn_;&Ohruh7u>V|tzqc(*y2cwD2R)z*kUFO*wQa-aQm(8e8q*IU z(Lj#DY!cEP`LJ4;OFKU>REEI~axW(Gv+ zvE2RDXY|`?C1Ll(Og!BckZ5ni2*wukinTgLpL}0Lg>nt?8Hv79bqE}NW}h80x%pGM zaHEPU(bq|C<8{oH2$S3zi0uj!pAJ|r{8hbSq)2IEuquEm-f{`7PfHC{2^)rVJUK!1 zU!YfdJ%Rmp&d^)12?F7Gc(aR!zqYE?dQd;(UTA`FV!Wz_&jyPg^B?i?_*o%n zncF~UhTvXqV0<3x_Drp`CWqPNHh|@VVJOSfbWtztk6hUkFxt~CN2#A9X(C?OH&c22 z0J301Vi)>o{qKpj3XGO0Ohq^QG&LDLQ#mE#uWRtf(JQwB@?)5q9%}h;?E3m&+~nH# zs!2)E(-!Cx32pL^1TY0&J-5k4eccx5Q#Q{WdBk1is9%|ASVcCYm7@q3IdZc@X(8vh&^c$TmnD-jxw$|DNNLmrW!fr$_*RITStbMF zZ;?WiCFckVhSHw7pZSR2g6ht(IZj1b+(91K)q~;or^I2ZjkJykKH^;w}o|8&dQrjBY&M9h1GSlmwU>WXh1^t^^6upC4_RL>!W_PKB#$BGF|cv(d#^Vd7Z*PQ18(;6t5 z5aE`vJ;fb4!ZJ=E6d}6f&7btPx+d=SjL@g&>-#3{C3nnNNry2V%!u!P;@@wGCv@ps zF3Rioo(n0Mo{s zHG(pUf08q#!`Zhb;zeOJouLGp39`IcOp>2{E^w&MJ|vKEmprSgee~CSB{LKUp`Uvo{vm z{mm0ePxfd#uHb|QB}vlw`L~sRvEf#k;p=7^1>`hAfK>TM z%o9e^1TBurGK-m;uN~mpX2Lr zdM0>W{V0eJ{MAg8)0Q z6F~2^=bQ{6hfEnzOuaV1e&X7zsTT`OBO4htG)A}nN^qMLs}zNoGGQ5Y%Ot~z#AMh7 zyM*Bn$$oKzH8axqSJ3h_OL81uxZ}+K`+eiY&&#ldkINOHxPx9jJ~+evFOJXczETJqROC`pZt+5P)NK#~}#yYmtn^MdSLP#2A8%weq zN@^$~Q3=J+L=+-x&uixWdA`^44}5=kuIuBv=5pV!<-E>*&gnAMXw@Lge2S3;w}FPP&FckenXt2Rlwahy#PLFb4}WsPc^z6TEPpHMKE? zpz3t~O>b@p($Tg&X6kem_T%%9h|v@E>Jy)9r~iICrul>SmS{)G0X+vUVR@=({7c@T zb| z4*YL(AmI7;Ho?)+(Y%tuGN^D*+0b`G2wGXTr$*=7%5o6=AK)7KAcE1B8bAaGbqGTc z!ITRPZHI(~EtwnK+X2yJz-xW0Wp^e7jU?jWw5RL;c{uG-<}3?AQM*yFk;~HHK^Q!& zL_yG;C6x>3&YEJ4yyt;v_gFAK_`;z%8!+{020+LJpk!UjNMdLR7o30q$0zavV}*7e zz;Hm2=5-t#f@u5yzns|IicgQRwU9s!HA!ifv`ImbQ;?Vrb9&l8-?lv|D+rTX%0d5Y8@FGRt?enGGl>=^yjgi4Q|kh^4*-Pzalp)zWPTPr9PIOc zkD!z&h(m>1E~v)g_jEtm5Q9dA_kZ?5gnuyAQ>V@`LRr+1(6+Pq$i}z8QPwJ9YDB(d zz?Yd~%4o$jp5b7<_}fy?1a~5o-lwoIas}9r z5xYWtX6=RfA^qa6{RM66((TD6)v#zx!%@UMUaI z8G|F`9>#DzbrvVI@^0Bp@uZIvK}#v!v2lMBM;;&d{H=9~6>GWxoT)ohkPS zJ;S13@c<^&0pYPNs%gwZTI3X8kAef#U`06%n{)&`2m#PCPj)O?8f<0UqQEAbY&#ZR zAt*%4$~)&+C8r4;VyD(V6|Sih#*L^IOPU_>IR}(S5JUSH zr(M4)qbb9}PH8_zOBLa9k0;H7#nU?~$$n(3-GAh8QY=z#z5EAJOXQ%XGsE|23b58& zC}6bQRXjX_wqIqzle*!6@z+R>FAI+p)6C1j+|8&gz(4V%Tp--2Tke&^I3zEJ5W8>Z zaqk>1No|>brXzBp$Fkk(d*;u%J!#>^)ThH})r{nH z|EC|aeJy`mDPNV)?5(X47D&yk%*40%wfojC@DP6eW?mh0QyRJ8f_mhsqI*?VGc5xn z-eZg=6n`)NWuF5lqs-P#-}v#ozL4SXWaZ=9WCx>-tnWs)+w=AK5FM(#28w!=%$0BW z-5EF(DxDjOfnH2D7Eyg(u_g_#JrL9b%ocytVzaP^sp=4>gO~a-Xb@z)~ z(9V@Motsnpth`;zm(9mZ2JtlS_uj@xe&0D>+J4z&`UXJU?NLnoPQBjTn#Emcp8^DJ zdl9YAFD_`$hZeEY7B91tx-W>RMqRI#hoWYmmD4R;s~^Dq5`WvlHr!LPgi$B)nv3_j zaJn(Pq$5J8bC#7io<6=$7#F$FcfDUAIAfHh4|&6zpoxQK3=ppF z9`Mkj84#b>NMWI$x5JjoSLHDSd5hCbzY*W(+hClRfpC|AMj18M;yA$sgbgyd&~wL} zoh1tW>pb+cqGw?FjuD)!ql(pO3Xj}JEdVaVZ%-41`xI5Q7&46+Fw|Dp?_XLB<#L9Au>AmOvhjS@FT(`o?};3(_weCx$O2vLTOb7jQ>=Vgil zIdIPr4xPE4ps=D)!vsW-ibU27puX81IKuD#bG-cribBsMAfk&s&V+OO$_5WSW~34f zB4GWu(yQU5;f~U|>ZGU#g+C4Qjk)F&t3u<>E*(9jb(t&Rn5+vj9h@~Pj}5OJU~1uX z*NR3{c?10b%mj4N;#Ds6Rl=UEIc9PO206q{tBLS?OOQXs$A9Fcw_LiMKL1q@_2ii8 zo63g{0%)`=^RK)8x`Z!h=B|xQy;dhacgU~N9XTX`K_aNYk8}$3Hk`3Ldye~?jR`hQ z8b&VFaL?7#Dxp$SM8)4Tm#g}X?sNl2Aerlz$+qoWv>N4jBOz5Xl}B6sLt+LdFca;4 zvj;{#2A_k&$y7>s{PzLo1==JyXV(TQKKT?!6!4r<`?005JHd|E%?@U}4r%rYWBA1U zl@u|Z@pN};0f)>(1@hhKorLvPyS{TsO zWOfn`Ej!^4?>)YACqkqGLbFv|N3Gk)$s{uuY@g2Cs_d)zeL0i&suaEA}Hrx#~>r+0r~ z6bE(1f7p%s!aI;?I={UZL)(hA7UT}*EIhe-%j4Ig!Nly)OIs5EA+Y4+0B5HLGh95R zeN>>8zwjJ0_D*gTBkI~)=L;V_Z}!gES}Gk92FvJ)X7?^N3N*OO=5CScIfbYEcE0VC zbE;SHT51m8+?%@}|HGIj%u5bA#)y||Pxj;)wXsC$(2efvq>bt^1B z!(~&AP>j|kd2HVwy|YpN?E2n-P8YEr1I*)=V6D^l4JDB0Zs6cb85h;@T(33=&8-KC zGGw)_w01ssc{1vBe#`5ye=Yo6BO`}#oz!~I7eM9+A0e^+!;cd0apJTHrgwoyS@D}27ac#~;3QMK4}O%Ud! z3IJSUJ3+y;fn3mEVaxDdvg>p7 zTgoK9>2KS?qmlwjn9iLg`#w1vV0T3Sz`Dx86p66{Udi^2qWHNiXDi8g99-MkEw^3p zPbNSJ!$(>eU?NMgo;lIE^G`G?96I%M7UFZXuO%JHezZeGxoGh~DOMtPhfxev3`}d9 zPP_10?$7(M688`TGltKUGhLQbG9L#QQ~og*)=*cF;vN&U!maWpK^{Fk;gPUyQ0iK6 zD{I=J^Vf(kSi~^sim)ydo z;Tw&fjrZjjN;V~FZ(XaC{vpQ5y|_*NVUCA(oN%a@{_M} zZi2{={1(8yy>HoY__vrXS_S2F@`m^opxB%jlIaol#m0wAs<4pK*)CzElR7PXVY6-EwZN5&KM3c39hLmvbav5w>n#2G#CfK{nz;e~mqWoSgBz*o zn1Dc8fAFFRaRaRz$*4?k3|pKnREz=Joq`*xOE-|?Rr@h zD*f)hU`drd0t5tH$=mpOyrJ4Ibm1N|KT?zZI^PhGEI-8&$C- z$z=~XxOd{U(Q(;aA%y}?@yAK@=+?nK%>psXG0DdPlDkH}i>lh!UC6(61;$S@W0dVi zo*ziI;=}AzCHLQ6?*GjSn-xp@yT20c@nY}Hn5w8WF?7JmrW;-*gMR%@f_@8XAX$rj zqx$Q#>8|yWmeD3&+$k<}fOTWeU(vcCZ~=0?E{xPj*c)Et!yyh7MJM1q?$2PMpT;2P zy-PYy=+bifh89PvRnW~x>qgSU%s+W;*M?!MyHQ1_47!AK{cZcK!jwv_nyxXnzE&kR z_6+A_xv0!$#=cm5c~9a>bm_Q3?D+bVi4S^!(uZnCEwf~}?(sO?ck-CBUptW9ET!cc ziFc+f*Ip*sR{6xO`I&jWS&N!zuNE_2`Y=-FCyXk(WYCq-Vxzkz%js{sC(fDJ=5o=5 zI@)#lPw&il`<9W0!gqNL$J+EIp}UQB;AU1!iEiJ!7P(j-E=TdP5Fj@To2V|XLU*%{ zbdgi)9|iBXo~*C42kR7^T+ErOzCEiH9#zqS-*N>q{DoE_cC>#GKa+*E%`8#cV8vvN zfx2OXMz^&KD!nMZ%KY1kOuvTgYUq?^0^%o+V90An;hypUO_${8&kf5Cfp~E#)Ro^^ zVts$k%ir&t&xv#3z;`9pIp18w`>&U`4a@YCD zwAN9lyYIXG+e?OcZ56R$i#_G3xJtI`?f8n{Q9AIntY}TobvFQOIAvq7tsDN&g|`NW zRo`3r=);RbSJH&z*FHT`(EWt$Y2B44EhU19p5600QYU}o$pn~J{X6#dVMcgBKosg7&A+)`j z>=W>=lh0C%<&`wirn>f+YUwgG%|#o~UiBwFqp4gg4r4w?1;5lBKdT}c@U_EqVAa;M zNEA7vauj7e2-|zrWOYP|mrNV0H|QF;cg4!*Lzcb%`32uvhYvg;>xr2Y;X+UBH|RQy zwnRl)7HRc$^b`$@+{M2dQoVaY1tk&tpVE|;sk)yl+$I`0=M2J&K*Op&@hHTG2;{2Iy zl^Q;^4v(hrGHt!P>kEYS5@usm_X9}Z=;nQPrmCUe?1h^({SfOjyOA^Z(`}gNC7{Vq zWo*_vzE!DLJF9ZN1uiZZqqd}%Q-)KYqj252u%L(o=Lq{Pq}x_sz*7|JV-ZfCTw&fv z5h39zPUb*;UJ;+p&X}qapS#$W=7}w-#5*#-LST;rV^_9q^^cc`Y6;Vbfnl|F(FWe> zLP4-#a7~nFH!408EogD{;owH0*aH1JAM$pai=9OBN+7ajJ2P zNaJeKyN!ceKWs^klgUj{CNJ3VX`Jnt<0aJ&P~@u|Jh`pQ1l{UZH|g#P2+c<|!6&r~ zE=Su7AJK3JanZUW)uvQuNg~@yf=3t?|B9r$lx4~f(%Z|2tsG0@lI`_*7J6do#?Zq{ zMpJtgFdVh^E5ci%b^EiPxA7`E(=(Q=O2np^t!leoLl474_5>+nIKnby%hwCJWv$?f zA}8ZktISIC5{(ZRAB){dVD7q0QUySYa_k&K3)gn%dGL`~)};BQC7q>uhX;O_rn0!= zVs+tfPa*eNl_}-FM~aqL^H-m`N#}a1Z#*p!&dyZd0dW1G65I=1-?Jl#YRV}y#&OLj zJ>fT_ut*(f`m5tk7OGAwQmukyTgy541N${|UXo*v>7w5`ryZKQSoXYglfuWix@aq( zbmgtj(-ZRxSKMNP?k?{POoN3eY)Njk0(+ZZjO{VTG|AGfkDticHZFJ|-v=aU{Rpsa zjuUsUiIuDNess~6-MB;6NZ)^O+lR|B;W!ZT?cCijm8sHXPik zxMgc0p~O)*icn+WT$<+sE?Pt^^v;{8HDXQW3M|g)TdXj*obybgyM8mvlqobWjwl1> z_n4?C*=Md@0CqMPFRv~m4;Kv}7s7Rzu*W+7$;kjPrJT2A7kU0HqFPWDTy~P^D(40` z-#tzhf|E^11Bs)~-$a|k^-(dr^F%X0b%{21lTcc~gBQ(WqA_<5+ z7h)M8Gs7e;)3R3G0;g+(Y{<{aZyNNS?r}TzKj6XKS3d#tF!j{kwM|i!vjFC(g}K%3 z?bG1PgyT2!Oc@-$GQHZ)gUUr#%zFI0!@E z$|e5DL+8+vYh{GNSXU>JG}7YG__E(H3?H%BGB>mX^H}}XF|Y`&UC`z3WEr#`j2AOw zIIWL_$F}kj{5C`_z&8yvC8w`O?Y_d{E#0Z1;W8ZGFsmp7qef$;z=ald*WWnxscm;k zDF#lG=nxI%Or0@k=eYSTeN7mAG7+}}prh_|x{_YIB+)GyZ>lsRV!8JYbg@J$qO;`M za>ehM#i4=rV9#@{ybpi6%$zPXwaD?pgTQ*XD5vi}BZllud_HYdgm7vTuvM$Foo3yn z3XQN*cX05!6WRp~gWM>~pmRFJBkf>8Mf&SldhyO3JlT!2z6(kcsQ8Bg)3sM?)o!T$ z_0)GV-eqe8PKdBjOMK0RF4VufhH~>1+SK@7cHDE5%e4EEcYLmxW}^~Xzupv^qVI?%<0pL(Q^hO`}<1u!OBQXp0zoxd6TDiS^yc*YJE@V5=&ko zsx`iz94Odgxu%!-US2%VD)Z|xE;K<6@aAKRmSd@n8s{{PU zrl=W$)@Iyw15Sq0PYTxIpBw|Kf^&qXF)y6$FK~i@t?yH`au-us zZp!hy@8E-(2VujIcxfsed`6725^TeQk_5WO)MLyX0Xk(vw*75SNI0|+mW4?Vhoc?9e5*jzK6Er*x zb26uvTNPARk9Q>zJ2}!Ggx5#!q1Ct8%{JP@L!7YIAX-SCV!n8oBN(&{oCy{RvCe#5 z)lwoVKEZqO;>B3Fw$M3uS$`+9A!4Tsqxn(QQx_EMmVDOp71)LE=78y>S$&USZZtt& zd8vKw>4W2-)(%m0@a)hpWqEFG>u{m;TGVz9IL<-VcgI{cmtIY7ZZ7L14mAjC;7J~e z#KGpO%gvkS-y9fp1=DT1-tCB<701X*yt)%do`;0C9EL;66+aRylZ%g~>MRVd{+Wev zd<8y=z&J#dqu$ItJ#$WdaCIdY!XdG}pllj)fC<|~=8y59%mqjiFq+f)fO3d9Yc;a$ zNNppW77rAb8F5e^aG42IdBxp9wMZBz)Y}n(KV`HJ060dE?NP^Vzdlx5&Mgp2y<=vAqrw+8|8!62Q>Q3#D@$ z1pReU_DISW+4{#}Cr=(IY^ZA|FePokBoPrLY`UsoHo}d{l`XWPmUG=6Zl9v=Zv|fW zY^doUED|o1sm*1(@N6Y8zzqh}vAskbT+^IIBJC2K1pRJM@8hXu9qZJDkKPHE-2+#< zLS!x5GZXfxZm1b;YS&94t2hXEqto_?pkUJ=x2Yb_s0OkYL*`GO1tB84v8Ldw7Ovr` z8N!6rl&#+(T*#rab5nA~U8~n`&6uOmxWH!`5FF|8pjdFkizOD5ihtJ$t4L18kTp10 z9& zK!V7HseFLRVo3RuZ#cJ+S?Eux{AnHhy-aLY)HbLRK_n~PyXoFsaIe|HUo|?B9Fp`W zXCj@69sUUjlh5j%yuydq!wst#uMa~<)+9;5lOSDO9ul8tv58SeLxwLEfr|P(74V;P} z1MQ_MIXKZJS`-NrFVk549SG3n&$wuI^n_oqp8iQ$mr@wHJe3YcdonpwKKS+wbwA`R zuR2Hzb=GFnOVunnQmS6v^V@|7L+F~luLZP^gVcJZ>A8Bk02S)Ff}P|)299dfS#%YD z9SME3$Fl7Z<-{k4Rlb4!$GAlq3OG(8sgyyuYGB^?9t^e*{!%FYaAn1rgF>E{Ykx54 z8sfl=^zu6a%GaPe7FJ5CY{CLNc>V3Z130d;#6DEa-~IjL+A85fl>*k7$v*YOkIU6L zmV72hno5Cg^%DkOQuqV!bBPzK#Wc;IK7s^ZCLqPRCo;SwX%FFY_^E?HJB0j(YCh@~ z-8{v?-`la!q2jF1rm>$qp3vyX!QcN-9SI^rU5Vgyxm~w2)PHyOqZg8o3|(L*>esr# z`yW2;Va2sVwSvUP?}z4K0q?s@^T6R`0OCF&sJy$yrjUTb0pnl>|;80frkTwK?%U>sW_`&3avIi&_NdQK%{y`-HntPC%EQEr69OQuv z-=uw>{5HtnHOrod8d7n1DJ%+H_WET6`5?{wX1==kNx=5Z5Pey2 z*gvx+hl7CSegt+-W2)7#(peY;*-rYRSQ2|^3=uNjDqOIvH_#vujYVaHVZ|sEY@*J% zD**t!upSH$eaC)=pzfh6m$F%mCLqVg${RKj-h=@)!$KR-Y?JrKXXf-6XxqWLnHkd- zBdSAK%vr~&1MBx|_N;J;K>;~|Lkv?jSh*i)7n)p?+yxBo*^g7P1rG35*b|jv18;f+W4#-6|@Jg;;$)v_DM&!1($V88%Re zhfVLl90_1^B*X)&15#|TVK^f4#wQDNaCG*20|;~XAv;4V!~$t`|2()C6euAm4Qz^d z%aR0yGsNluR)URvlmHgL)#WW9Tr_(yAPbN(`Tca+P{e=MSV-Iiv_sH~x1;P!wn=lW zAcV8V>Hx0{K+H!zar^yNnGLtWpRK~+gogCDfR(HV#qP9Gu>a!_PuNcdX!?=h<)I3f zvWGL~{6MDQno}5CaQ_mUR86doEeoWc2cZA%m>2lc4^$~-Lk;k2FX))kbQ<(Maq-{5 zSq>KT36tTnp~r%3mUC|HjRx+F_8ho@_b`*2b5$tz_%ofO{!<_Z_E+}7AgRah6)y87 z;9}UXu4@kIjZ!ASw{F1Z?WX@c#I6qo`o%HC*~lMl=k@~Hii@-ZkwQ{?aTgeUsD$Bo zSHj=MZpoTsQ{QnKXu{>+Flbeq{QYA4jyQk^1YHqAE%?VVq}f<}-lHAL!`e;33z|rS zUMD}qssK3I+73j5XOszBHWn9~{_`;TFBV4Zz1>^lqaYwb(AB(y@`8XFxJZyL%r{MV zvNt`eJPmrz{StZqSPFc{9p%am*&qdZ{tEcZ8MQPjai%(X zOa2%{tTp2_KmrF5iuKQkpW!S1^d;;_n*ZOl$!l-N6IxliLMtb}(2t7nQ}Yf#La3aa z)r=hehlx$wqYti4koIla>*4!BrrmgLx_JC|T$r8Y5B9bnT1PH4waE7(`+lh$Pz>aV(FBZR&i}V*nMhqDeC#7bnW%=>OBr zSBF-aYboc1kify!v4neqtuyQvzonmj>~1vZ2Poe|X+U;tqhvi0@P7*aGgm_i_S_bN z>{b2;p=_QgPgp5i)gv^Oz=1>mgH}M6SPlNyZ>Z1>G(1}BT5776DL{p0fOC6^S|vjV zA)F4&r*ZY{v5JqAhV127-f9+DH@JrX+j3}Q-UQ!>SVnSVtCOc*6V^R73cJ2Yw;{9{4P>$TX1F$E`5`wC1%-sa#!w9RbSpu~q>3 zGdQ?mY@cw}>z0&poa)Tc&QfPPEpWJzU1Fmf4{fu2vTt@UHTYt=Hs(L{2(|vDxna zw?#m%2GPhI5Vt=+jbFN@KFO;@&7u!2o7qZRElaev1fykt{8 zY_Ga?Z@<5?Id*hmE$;_TSwZVs!KBIRX5PgpRG#r(&nuhSGV6_R*5hU4mcx>QCQRr! z!TlJst@j5jniJj`5E=ug8QlqHE9$C4Sjblh1tvM53OB2l^Mk*@05h?b-6j0T%wpsj zEAxpMG?jcI?|f&w77gdpW)X_gZzb(f_{mT$9>g0Ocs;XpwHUydUtm8ne z|L#A^Yx1eQh8EJ!oe0PQMg77H35cD;Jm8JBN@so#P)^9c>hBIsB2J$bzzaS9!g1I8 z3_5QCM+=o^iJ>K51Ts#t4{<#g@7PoR(dr~`t{&i7>~+I{7f{56UN>$S z;wc8y0X~>~;zCP;bj!7xRX>F6H9CX^l$>s{a~-$kD9yd>GhI+$LR?Uw8x!y!O-*_R zC(E-OB|#j2P#aWzf!Agw6%+Pg&GIS~2SRmRe%tMRv9c1O+*SNzHI?8Q{Gs)P|B z=_IrgN%Kq1#+SpwYHu}j&K!Lj+qzZl=2{^IDkqRV#Ta*HgM2zps>iavo-Wq)LaJ{i4=n;aNH>4&bgrp|>_D=TwS>TO3Av?*OYQn&A@u4^IbDumAu6 literal 0 HcmV?d00001 diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/ProviderStyle.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/ProviderStyle.swift new file mode 100644 index 0000000000..207d3355e8 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/ProviderStyle.swift @@ -0,0 +1,36 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct ProviderStyle { + let icon: ImageResource? + let backgroundColor: Color + let contentColor: Color + var iconTint: Color? = nil + let shape: AnyShape = AnyShape(RoundedRectangle(cornerRadius: 4, style: .continuous)) + let elevation: CGFloat = 2 + + static let empty = ProviderStyle( + icon: nil, + backgroundColor: .white, + contentColor: .black + ) + + static var `default`: [String: ProviderStyle] { + Dictionary(uniqueKeysWithValues: AuthProvider.allCases.map { provider in + (provider.id, provider.providerStyle) + }) + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/Theme.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/Theme.swift new file mode 100644 index 0000000000..d0e8d78724 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Theme/Theme.swift @@ -0,0 +1,14 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/AuthMethodPickerListView.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/AuthMethodPickerListView.swift new file mode 100644 index 0000000000..24d5035596 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/AuthMethodPickerListView.swift @@ -0,0 +1,73 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct AuthMethodPickerListView: View { + var onProviderSelected: (AuthProvider) -> Void + + var body: some View { + GeometryReader { proxy in + ScrollView { + VStack(spacing: 16) { + AuthProviderButton( + provider: .apple, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .anonymous, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .email, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .phone, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .google, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .facebook, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .twitter, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .github, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .microsoft, + onClick: onProviderSelected + ) + AuthProviderButton( + provider: .yahoo, + onClick: onProviderSelected + ) + } + .padding(.horizontal, proxy.size.width * 0.18) + } + } + } +} + +#Preview { + AuthMethodPickerListView { selectedProvider in } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AnnotatedString.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AnnotatedString.swift new file mode 100644 index 0000000000..fdec24b9a2 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AnnotatedString.swift @@ -0,0 +1,56 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct AnnotatedString: View { + let fullText: String + let links: [(label: String, url: String)] + + init( + fullText: String, + links: [(String, String)], + ) { + self.fullText = fullText + self.links = links + } + + var body: some View { + let text = makeAttributedText() + Text(text) + .multilineTextAlignment(.center) + .tint(.accentColor) // Use theme color + .onOpenURL { url in + // Handle URL tap (optional custom handling) + UIApplication.shared.open(url) + } + } + + private func makeAttributedText() -> AttributedString { + let template = fullText + var attributed = AttributedString(template) + + for (label, urlString) in links { + guard let range = attributed.range(of: label), + let url = URL(string: urlString) + else { continue } + + attributed[range].link = url + attributed[range].foregroundColor = UIColor.tintColor + attributed[range].underlineStyle = Text.LineStyle.single + } + + return attributed + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthProviderButton.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthProviderButton.swift new file mode 100644 index 0000000000..d28601badd --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthProviderButton.swift @@ -0,0 +1,83 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct AuthProviderButton: View { + let provider: AuthProvider + let onClick: (AuthProvider) -> Void + var enabled: Bool = true + var style: ProviderStyle? = nil + + private var resolvedStyle: ProviderStyle { + style ?? provider.providerStyle + } + + var body: some View { + let providerStyle = resolvedStyle + Button { + onClick(provider) + } label: { + HStack(spacing: 12) { + if let iconResource = providerStyle.icon { + providerIcon(for: iconResource, tint: providerStyle.iconTint) + } + Text(provider.buttonTitle) + .lineLimit(1) + .truncationMode(.tail) + .foregroundStyle(providerStyle.contentColor) + } + } + .buttonStyle(ProviderButtonStyle(style: providerStyle)) + .disabled(!enabled) + } + + @ViewBuilder + private func providerIcon(for resource: ImageResource, tint: Color?) -> some View { + if let tint { + Image(resource) + .renderingMode(.template) + .resizable() + .scaledToFit() + .frame(width: 24, height: 24) + .foregroundStyle(tint) + } else { + Image(resource) + .renderingMode(.original) + .resizable() + .scaledToFit() + .frame(width: 24, height: 24) + } + } +} + +private struct ProviderButtonStyle: PrimitiveButtonStyle { + let style: ProviderStyle + + func makeBody(configuration: Configuration) -> some View { + Button(action: configuration.trigger) { + configuration.label + .padding(.horizontal, 8) + .frame(maxWidth: .infinity, alignment: .leading) + } + .buttonStyle(.borderedProminent) + .tint(style.backgroundColor) + .shadow( + color: Color.black.opacity(0.12), + radius: Double(style.elevation), + x: 0, + y: style.elevation > 0 ? 1 : 0 + ) + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthTextField.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthTextField.swift new file mode 100644 index 0000000000..29b4f936d2 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Components/AuthTextField.swift @@ -0,0 +1,169 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct FieldValidation: Identifiable, Equatable { + let id = UUID() + let message: String + var valid: Bool = false +} + +struct AuthTextField: View { + //@Environment(Theme.self) private var theme + @FocusState private var isFocused: Bool + @State var invalidInput: Bool = false + @State var obscured: Bool = true + + @Binding var text: String + let localizedTitle: String + let prompt: String + var textAlignment: TextAlignment = .leading + var keyboardType: UIKeyboardType = .default + var contentType: UITextContentType? = nil + var isSecureTextField: Bool = false + var validations: [FieldValidation] = [] + var formState: ((Bool) -> Void)? = nil + var onSubmit: ((String) -> Void)? = nil + var onChange: ((String) -> Void)? = nil + private let leading: () -> Leading? + + init( + text: Binding, + localizedTitle: String, + prompt: String, + textAlignment: TextAlignment = .leading, + keyboardType: UIKeyboardType = .default, + contentType: UITextContentType? = nil, + sensitive: Bool = false, + validations: [FieldValidation] = [], + formState: ((Bool) -> Void)? = nil, + onSubmit: ((String) -> Void)? = nil, + onChange: ((String) -> Void)? = nil, + @ViewBuilder leading: @escaping () -> Leading? = { EmptyView() } + ) { + self._text = text + self.localizedTitle = localizedTitle + self.prompt = prompt + self.textAlignment = textAlignment + self.keyboardType = keyboardType + self.contentType = contentType + self.isSecureTextField = sensitive + self.validations = validations + self.formState = formState + self.onSubmit = onSubmit + self.onChange = onChange + self.leading = leading + } + + var allRequirementsMet: Bool { + validations.allSatisfy { $0.valid == true } + } + + var body: some View { + VStack(alignment: .leading) { + Text(localizedTitle) + HStack(spacing: 8) { + leading() + Group { + if isSecureTextField { + ZStack(alignment: .trailing) { + SecureField(localizedTitle, text: $text, prompt: Text(prompt)) + .opacity(obscured ? 1 : 0) + .focused($isFocused) + .frame(height: 24) + TextField(localizedTitle, text: $text, prompt: Text(prompt)) + .opacity(obscured ? 0 : 1) + .focused($isFocused) + .frame(height: 24) + if !text.isEmpty { + Button { + withAnimation(.easeInOut(duration: 0.2)) { + obscured.toggle() + } + // Reapply focus after toggling + DispatchQueue.main.async { + isFocused = true + } + } label: { + Image(systemName: obscured ? "eye" : "eye.slash") + } + .buttonStyle(.plain) + } + } + } else { + TextField( + localizedTitle, + text: $text, + prompt: Text(prompt) + ) + .frame(height: 24) + } + } + } + .frame(maxWidth: .infinity) + .keyboardType(keyboardType) + .textContentType(contentType) + .autocapitalization(.none) + .disableAutocorrection(true) + .focused($isFocused) + .onSubmit { + onSubmit?(text) + } + .onChange(of: text) { oldValue, newValue in + onChange?(newValue) + } + .multilineTextAlignment(textAlignment) + .textFieldStyle(.plain) + .padding(.vertical, 12) + .padding(.horizontal, 12) + .background { + RoundedRectangle(cornerRadius: 8) + .fill(Color.accentColor.opacity(0.05)) + .strokeBorder(lineWidth: isFocused ? 3 : 1) + .foregroundStyle(isFocused ? Color.accentColor : Color(.systemFill)) + } + .contentShape(Rectangle()) + .onTapGesture { + withAnimation { + isFocused = true + } + } + if !validations.isEmpty { + VStack(alignment: .leading, spacing: 4) { + ForEach(validations) { validation in + HStack { + Image(systemName: isSecureTextField ? "lock.open" : "x.square") + .foregroundStyle(validation.valid ? .gray : .red) + Text(validation.message) + .strikethrough(validation.valid, color: .gray) + .foregroundStyle(.gray) + .fixedSize(horizontal: false, vertical: true) + } + } + } + .onChange(of: allRequirementsMet) { oldValue, newValue in + formState?(newValue) + if !newValue { + withAnimation(.easeInOut(duration: 0.08).repeatCount(4)) { + invalidInput = true + } completion: { + invalidInput = false + } + } + } + } + } + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailResetPasswordView.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailResetPasswordView.swift new file mode 100644 index 0000000000..b0361db1a8 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailResetPasswordView.swift @@ -0,0 +1,102 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct EmailResetPasswordView: View { + let state: EmailAuthContentState + + var body: some View { + VStack(spacing: 32) { + VStack(spacing: 16) { + if state.resetLinkSent { + VStack(spacing: 12) { + Image(systemName: "checkmark.circle.fill") + .font(.system(size: 48)) + .foregroundStyle(.green) + + Text("Password reset link sent!") + .font(.headline) + + Text("Check your email at \(state.email.wrappedValue) for a link to reset your password.") + .font(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + } + .padding() + } else { + VStack(spacing: 16) { + Text("Enter your email address and we'll send you a link to reset your password.") + .font(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + + AuthTextField( + text: state.email, + localizedTitle: "Email", + prompt: "Enter your email", + keyboardType: .emailAddress, + contentType: .emailAddress + ) + + Button { + state.onSendResetLinkClick() + } label: { + if state.isLoading { + ProgressView() + .frame(height: 32) + .frame(maxWidth: .infinity) + } else { + Text("Send Reset Link") + .frame(height: 32) + .frame(maxWidth: .infinity) + } + } + .buttonStyle(.borderedProminent) + .disabled(state.isLoading) + + if let error = state.error { + Text(error) + .foregroundStyle(.red) + .font(.caption) + } + } + } + } + } + .navigationTitle("Reset Password") + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) + } +} + +#Preview { + NavigationStack { + EmailResetPasswordView(state: EmailAuthContentState( + isLoading: false, + error: nil, + email: .constant(""), + password: .constant(""), + confirmPassword: .constant(""), + displayName: .constant(""), + resetLinkSent: false, + onSignInClick: {}, + onSignUpClick: {}, + onSendResetLinkClick: {}, + onGoToSignUp: {}, + onGoToSignIn: {}, + onGoToResetPassword: {} + )) + .safeAreaPadding() + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignInView.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignInView.swift new file mode 100644 index 0000000000..3157d2ca5f --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignInView.swift @@ -0,0 +1,107 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI +import FirebaseAuthSwiftUI + +struct EmailSignInView: View { + let authService: AuthService + let state: EmailAuthContentState + + var body: some View { + VStack(spacing: 32) { + VStack(spacing: 16) { + Group { + AuthTextField( + text: state.email, + localizedTitle: "Email", + prompt: "Enter your email", + keyboardType: .emailAddress, + contentType: .emailAddress + ) + AuthTextField( + text: state.password, + localizedTitle: "Password", + prompt: "Enter your password", + contentType: .password, + sensitive: true + ) + } + + Button { + state.onGoToResetPassword() + } label: { + Text("Forgot password?") + .frame(maxWidth: .infinity, alignment: .trailing) + } + + Button { + state.onSignInClick() + } label: { + if state.isLoading { + ProgressView() + .frame(height: 32) + .frame(maxWidth: .infinity) + } else { + Text("Sign in") + .frame(height: 32) + .frame(maxWidth: .infinity) + } + } + .buttonStyle(.borderedProminent) + .disabled(state.isLoading) + + if let error = state.error { + Text(error) + .foregroundStyle(.red) + .font(.caption) + } + } + + Button { + state.onGoToSignUp() + } label: { + Text("Create an Account") + .frame(maxWidth: .infinity) + } + .disabled(state.isLoading) + } + .navigationTitle("Sign in with email") + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) + } +} + +#Preview { + NavigationStack { + EmailSignInView( + authService: AuthService(), + state: EmailAuthContentState( + isLoading: false, + error: nil, + email: .constant(""), + password: .constant(""), + confirmPassword: .constant(""), + displayName: .constant(""), + resetLinkSent: false, + onSignInClick: {}, + onSignUpClick: {}, + onSendResetLinkClick: {}, + onGoToSignUp: {}, + onGoToSignIn: {}, + onGoToResetPassword: {} + ) + ) + .safeAreaPadding() + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignUpView.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignUpView.swift new file mode 100644 index 0000000000..51e1413a09 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Email/EmailSignUpView.swift @@ -0,0 +1,103 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct EmailSignUpView: View { + let state: EmailAuthContentState + + var body: some View { + VStack(spacing: 32) { + VStack(spacing: 16) { + Group { + AuthTextField( + text: state.displayName, + localizedTitle: "Display Name", + prompt: "Enter your name", + contentType: .name + ) + + AuthTextField( + text: state.email, + localizedTitle: "Email", + prompt: "Enter your email", + keyboardType: .emailAddress, + contentType: .emailAddress + ) + + AuthTextField( + text: state.password, + localizedTitle: "Password", + prompt: "Enter your password", + contentType: .newPassword, + sensitive: true + ) + + AuthTextField( + text: state.confirmPassword, + localizedTitle: "Confirm Password", + prompt: "Re-enter your password", + contentType: .newPassword, + sensitive: true + ) + } + + Button { + state.onSignUpClick() + } label: { + if state.isLoading { + ProgressView() + .frame(height: 32) + .frame(maxWidth: .infinity) + } else { + Text("Create Account") + .frame(height: 32) + .frame(maxWidth: .infinity) + } + } + .buttonStyle(.borderedProminent) + .disabled(state.isLoading) + + if let error = state.error { + Text(error) + .foregroundStyle(.red) + .font(.caption) + } + } + } + .navigationTitle("Create an account") + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) + } +} + +#Preview { + NavigationStack { + EmailSignUpView(state: EmailAuthContentState( + isLoading: false, + error: nil, + email: .constant(""), + password: .constant(""), + confirmPassword: .constant(""), + displayName: .constant(""), + resetLinkSent: false, + onSignInClick: {}, + onSignUpClick: {}, + onSendResetLinkClick: {}, + onGoToSignUp: {}, + onGoToSignIn: {}, + onGoToResetPassword: {} + )) + .safeAreaPadding() + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthView.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthView.swift new file mode 100644 index 0000000000..2c353095b2 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthView.swift @@ -0,0 +1,45 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +public struct FirebaseAuthView: View { + public init( + authService: AuthService, + isPresented: Binding = .constant(false), + interactiveDismissDisabled: Bool = true, + @ViewBuilder content: @escaping () -> Content = { EmptyView() } + ) { + self.authService = authService + self.isPresented = isPresented + self.interactiveDismissDisabled = interactiveDismissDisabled + self.content = content + } + + private var authService: AuthService + private var isPresented: Binding + private var interactiveDismissDisabled: Bool + private let content: () -> Content? + + + public var body: some View { + content() + .sheet(isPresented: isPresented) { + FirebaseAuthViewInternal( + authService: authService, + interactiveDismissDisabled: interactiveDismissDisabled + ) + } + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthViewInternal.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthViewInternal.swift new file mode 100644 index 0000000000..b62d3900ab --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/FirebaseAuthViewInternal.swift @@ -0,0 +1,321 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct StringError: LocalizedError { + let message: String + + var errorDescription: String? { message } +} + +enum Route: Hashable { + case emailAuth(EmailAuthMode) + case phoneAuth(PhoneAuthStep) + + @ViewBuilder + @MainActor + func destination( + authService: AuthService, + emailAuthState: EmailAuthContentState, + phoneAuthState: PhoneAuthContentState + ) -> some View { + switch self { + case .emailAuth(let mode): + switch mode { + case .signIn: + EmailSignInView( + authService: authService, + state: emailAuthState + ) + .safeAreaPadding() + case .signUp: + EmailSignUpView(state: emailAuthState) + .safeAreaPadding() + case .resetPassword: + EmailResetPasswordView(state: emailAuthState) + .safeAreaPadding() + } + case .phoneAuth(let step): + switch step { + case .enterPhoneNumber: + EnterPhoneNumberView(state: phoneAuthState) + .safeAreaPadding() + case .enterVerificationCode: + EnterVerificationCodeView(state: phoneAuthState) + .safeAreaPadding() + } + } + } +} + +enum EmailAuthMode { + case signIn + case signUp + case resetPassword +} + +enum PhoneAuthStep { + case enterPhoneNumber + case enterVerificationCode +} + +struct CountryData { + let name: String + let dialCode: String + let code: String + + var flag: String { + // Convert country code to flag emoji + let base: UInt32 = 127397 + var emoji = "" + for scalar in code.unicodeScalars { + if let unicodeScalar = UnicodeScalar(base + scalar.value) { + emoji.append(String(unicodeScalar)) + } + } + return emoji + } + + static let `default` = CountryData(name: "United States", dialCode: "+1", code: "US") +} + +struct EmailAuthContentState { + var isLoading: Bool + var error: String? + var email: Binding + var password: Binding + var confirmPassword: Binding + var displayName: Binding + var resetLinkSent: Bool + var onSignInClick: () -> Void + var onSignUpClick: () -> Void + var onSendResetLinkClick: () -> Void + var onGoToSignUp: () -> Void + var onGoToSignIn: () -> Void + var onGoToResetPassword: () -> Void +} + +struct PhoneAuthContentState { + var isLoading: Bool + var error: String? + var phoneNumber: Binding + var selectedCountry: Binding + var verificationCode: Binding + var fullPhoneNumber: String + var resendTimer: Int + var onSendCodeClick: () -> Void + var onVerifyCodeClick: () -> Void + var onResendCodeClick: () -> Void + var onChangeNumberClick: () -> Void +} + +@Observable +class Navigator { + var routes: [Route] = [] + + func push(_ route: Route) { + routes.append(route) + } + + @discardableResult + func pop() -> Route? { + routes.popLast() + } +} + +struct FirebaseAuthViewInternal: View { + init( + authService: AuthService, + interactiveDismissDisabled: Bool = true + ) { + self.authService = authService + self.interactiveDismissDisabled = interactiveDismissDisabled + } + + private var authService: AuthService + private var interactiveDismissDisabled: Bool + @State private var navigator = Navigator() + + // Email Auth State + @State private var email = "" + @State private var password = "" + @State private var confirmPassword = "" + @State private var displayName = "" + @State private var emailError: String? + @State private var resetLinkSent = false + + // Phone Auth State + @State private var phoneNumber = "" + @State private var verificationCode = "" + @State private var selectedCountry: CountryData = .default + @State private var phoneIsLoading = false + @State private var phoneError: String? + @State private var resendTimer = 0 + + @State private var isShowingErrorAlert = false + + var body: some View { + NavigationStack(path: $navigator.routes) { + authMethodPicker + .navigationTitle("Authentication") + .navigationBarTitleDisplayMode(.large) + .navigationDestination(for: Route.self) { route in + route.destination( + authService: authService, + emailAuthState: createEmailAuthState(), + phoneAuthState: createPhoneAuthState() + ) + } + } + .alert( + isPresented: $isShowingErrorAlert, + error: StringError(message: authService.currentError?.message ?? "") + ) { + Button("OK") { + isShowingErrorAlert = false + } + } + .onChange(of: authService.currentError?.message ?? "") { _, newValue in + debugPrint("onChange: \(newValue)") + isShowingErrorAlert = !newValue.isEmpty + } + .interactiveDismissDisabled(interactiveDismissDisabled) + } + + @ViewBuilder + var authMethodPicker: some View { + VStack { + Image(.firebaseAuthLogo) + AuthMethodPickerListView { selectedProvider in + switch selectedProvider { + case .email: + navigator.push(.emailAuth(.signIn)) + case .phone: + navigator.push(.phoneAuth(.enterPhoneNumber)) + default: + break + } + } + .padding(.vertical, 16) + tosAndPPFooter + .padding(.horizontal, 16) + } + .padding(.top, 24) + .frame(maxWidth: .infinity, maxHeight: .infinity) + } + + @ViewBuilder + var tosAndPPFooter: some View { + AnnotatedString( + fullText: "By continuing, you accept our Terms of Service and Privacy Policy.", + links: [ + ("Terms of Service", "https://example.com/terms"), + ("Privacy Policy", "https://example.com/privacy") + ] + ) + } + + // MARK: - State Creation + + private func createEmailAuthState() -> EmailAuthContentState { + EmailAuthContentState( + isLoading: authService.authenticationState == .authenticating, + error: emailError, + email: $email, + password: $password, + confirmPassword: $confirmPassword, + displayName: $displayName, + resetLinkSent: resetLinkSent, + onSignInClick: handleEmailSignIn, + onSignUpClick: handleEmailSignUp, + onSendResetLinkClick: handleSendResetLink, + onGoToSignUp: { + handleEmailAuthNavigation(route: .emailAuth(.signUp)) + }, + onGoToSignIn: { + handleEmailAuthNavigation(route: .emailAuth(.signIn)) + }, + onGoToResetPassword: { + handleEmailAuthNavigation(route: .emailAuth(.resetPassword)) + } + ) + } + + private func createPhoneAuthState() -> PhoneAuthContentState { + PhoneAuthContentState( + isLoading: authService.authenticationState == .authenticating, + error: phoneError, + phoneNumber: $phoneNumber, + selectedCountry: $selectedCountry, + verificationCode: $verificationCode, + fullPhoneNumber: "\(selectedCountry.dialCode)\(phoneNumber)", + resendTimer: resendTimer, + onSendCodeClick: handleSendCode, + onVerifyCodeClick: handleVerifyCode, + onResendCodeClick: handleResendCode, + onChangeNumberClick: { + verificationCode = "" + navigator.pop() + } + ) + } + + // MARK: - Email Auth Handlers + + private func handleEmailAuthNavigation(route: Route) { + email = "" + password = "" + confirmPassword = "" + displayName = "" + navigator.push(route) + } + + private func handleEmailSignIn() { + Task { + try? await authService.signIn(email: email, password: password) + } + } + + private func handleEmailSignUp() { + Task { + try? await authService.createUser(email: email, password: password) + } + } + + private func handleSendResetLink() { + Task { + try? await authService.sendPasswordRecoveryEmail(email: email) + } + } + + // MARK: - Phone Auth Handlers + + private func handleSendCode() { + // TODO: Implement send code logic + navigator.push(.phoneAuth(.enterVerificationCode)) + } + + private func handleVerifyCode() { + // TODO: Implement verify code logic + } + + private func handleResendCode() { + // TODO: Implement resend code logic + } +} + +#Preview { + FirebaseAuthViewInternal(authService: AuthService()) +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/CountrySelector.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/CountrySelector.swift new file mode 100644 index 0000000000..77a00f5f63 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/CountrySelector.swift @@ -0,0 +1,77 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct CountrySelector: View { + @Binding var selectedCountry: CountryData + var enabled: Bool = true + var allowedCountries: Set? = nil + + // Common countries list + private let allCountries: [CountryData] = [ + CountryData(name: "United States", dialCode: "+1", code: "US"), + CountryData(name: "United Kingdom", dialCode: "+44", code: "GB"), + CountryData(name: "Canada", dialCode: "+1", code: "CA"), + CountryData(name: "Australia", dialCode: "+61", code: "AU"), + CountryData(name: "Germany", dialCode: "+49", code: "DE"), + CountryData(name: "France", dialCode: "+33", code: "FR"), + CountryData(name: "India", dialCode: "+91", code: "IN"), + CountryData(name: "Nigeria", dialCode: "+234", code: "NG"), + CountryData(name: "South Africa", dialCode: "+27", code: "ZA"), + CountryData(name: "Japan", dialCode: "+81", code: "JP"), + CountryData(name: "China", dialCode: "+86", code: "CN"), + CountryData(name: "Brazil", dialCode: "+55", code: "BR"), + CountryData(name: "Mexico", dialCode: "+52", code: "MX"), + CountryData(name: "Spain", dialCode: "+34", code: "ES"), + CountryData(name: "Italy", dialCode: "+39", code: "IT"), + ] + + private var filteredCountries: [CountryData] { + if let allowedCountries = allowedCountries { + return allCountries.filter { allowedCountries.contains($0.code) } + } + return allCountries + } + + var body: some View { + Menu { + ForEach(filteredCountries, id: \.code) { country in + Button { + selectedCountry = country + } label: { + Text("\(country.flag) \(country.name) (\(country.dialCode))") + } + } + } label: { + HStack(spacing: 4) { + Text(selectedCountry.flag) + .font(.title3) + Text(selectedCountry.dialCode) + .font(.body) + .foregroundStyle(.primary) + Image(systemName: "chevron.down") + .font(.caption2) + .foregroundStyle(.secondary) + } + } + .disabled(!enabled) + } +} + +#Preview { + CountrySelector( + selectedCountry: .constant(.default) + ) +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterPhoneNumberView.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterPhoneNumberView.swift new file mode 100644 index 0000000000..98a300a154 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterPhoneNumberView.swift @@ -0,0 +1,87 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct EnterPhoneNumberView: View { + let state: PhoneAuthContentState + + var body: some View { + VStack(spacing: 16) { + Text("Enter your phone number to get started") + .font(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + .frame(maxWidth: .infinity, alignment: .leading) + + // Phone number input with country selector + AuthTextField( + text: state.phoneNumber, + localizedTitle: "Phone Number", + prompt: "Enter your phone number", + keyboardType: .phonePad, + contentType: .telephoneNumber, + onChange: { _ in } + ) { + CountrySelector( + selectedCountry: state.selectedCountry, + enabled: !state.isLoading + ) + } + + Button { + state.onSendCodeClick() + } label: { + if state.isLoading { + ProgressView() + .frame(height: 32) + .frame(maxWidth: .infinity) + } else { + Text("Send Code") + .frame(height: 32) + .frame(maxWidth: .infinity) + } + } + .buttonStyle(.borderedProminent) + .disabled(state.isLoading || state.phoneNumber.wrappedValue.isEmpty) + + if let error = state.error { + Text(error) + .foregroundStyle(.red) + .font(.caption) + } + } + .navigationTitle("Sign in with phone") + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) + } +} + +#Preview { + NavigationStack { + EnterPhoneNumberView(state: PhoneAuthContentState( + isLoading: false, + error: nil, + phoneNumber: .constant(""), + selectedCountry: .constant(.default), + verificationCode: .constant(""), + fullPhoneNumber: "+1 ", + resendTimer: 0, + onSendCodeClick: {}, + onVerifyCodeClick: {}, + onResendCodeClick: {}, + onChangeNumberClick: {} + )) + .safeAreaPadding() + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterVerificationCodeView.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterVerificationCodeView.swift new file mode 100644 index 0000000000..59d20290a7 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/EnterVerificationCodeView.swift @@ -0,0 +1,103 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct EnterVerificationCodeView: View { + let state: PhoneAuthContentState + + var body: some View { + VStack(spacing: 32) { + VStack(spacing: 16) { + VStack(spacing: 8) { + Text("We sent a code to \(state.fullPhoneNumber)") + .font(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + .frame(maxWidth: .infinity, alignment: .leading) + Button { + state.onChangeNumberClick() + } label: { + Text("Change number") + .font(.caption) + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .padding(.bottom) + .frame(maxWidth: .infinity, alignment: .leading) + + // Verification code input + VerificationCodeInputField( + code: state.verificationCode, + isError: state.error != nil, + errorMessage: state.error + ) + + Button { + state.onVerifyCodeClick() + } label: { + if state.isLoading { + ProgressView() + .frame(height: 32) + .frame(maxWidth: .infinity) + } else { + Text("Verify Code") + .frame(height: 32) + .frame(maxWidth: .infinity) + } + } + .buttonStyle(.borderedProminent) + .disabled(state.isLoading || state.verificationCode.wrappedValue.count != 6) + } + + // Resend code section + VStack(spacing: 8) { + if state.resendTimer > 0 { + Text("Resend code in \(state.resendTimer)s") + .font(.caption) + .foregroundStyle(.secondary) + } else { + Button { + state.onResendCodeClick() + } label: { + Text("Resend Code") + .font(.caption) + } + .disabled(state.isLoading) + } + } + } + .navigationTitle("Verify Phone Number") + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) + } +} + +#Preview { + NavigationStack { + EnterVerificationCodeView(state: PhoneAuthContentState( + isLoading: false, + error: nil, + phoneNumber: .constant(""), + selectedCountry: .constant(.default), + verificationCode: .constant(""), + fullPhoneNumber: "+1 5551234567", + resendTimer: 0, + onSendCodeClick: {}, + onVerifyCodeClick: {}, + onResendCodeClick: {}, + onChangeNumberClick: {} + )) + .safeAreaPadding() + } +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/VerificationCodeInputField.swift b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/VerificationCodeInputField.swift new file mode 100644 index 0000000000..ae795e4018 --- /dev/null +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/FirebaseAuthView/Views/Phone/VerificationCodeInputField.swift @@ -0,0 +1,555 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI +import UIKit + +struct VerificationCodeInputField: View { + init( + code: Binding, + codeLength: Int = 6, + isError: Bool = false, + errorMessage: String? = nil, + onCodeComplete: @escaping (String) -> Void = { _ in }, + onCodeChange: @escaping (String) -> Void = { _ in } + ) { + self._code = code + self.codeLength = codeLength + self.isError = isError + self.errorMessage = errorMessage + self.onCodeComplete = onCodeComplete + self.onCodeChange = onCodeChange + self._digitFields = State(initialValue: Array(repeating: "", count: codeLength)) + } + + @Binding var code: String + let codeLength: Int + let isError: Bool + let errorMessage: String? + let onCodeComplete: (String) -> Void + let onCodeChange: (String) -> Void + + @State private var digitFields: [String] = [] + @State private var focusedIndex: Int? = nil + @State private var pendingInternalCodeUpdates = 0 + + var body: some View { + VStack(spacing: 8) { + HStack(spacing: 8) { + ForEach(0.. 0 { + pendingInternalCodeUpdates -= 1 + return + } + updateDigitFieldsFromCode(shouldUpdateFocus: true) + } + } + + private func updateDigitFieldsFromCode(shouldUpdateFocus: Bool, forceFocus: Bool = false) { + let sanitized = code.filter { $0.isNumber } + let truncated = String(sanitized.prefix(codeLength)) + var newFields = Array(repeating: "", count: codeLength) + + for (offset, character) in truncated.enumerated() { + newFields[offset] = String(character) + } + + let fieldsChanged = newFields != digitFields + if fieldsChanged { + digitFields = newFields + } + + if code != truncated { + commitCodeChange(truncated) + } + + if shouldUpdateFocus && (fieldsChanged || forceFocus) { + let newFocus = truncated.count < codeLength ? truncated.count : nil + DispatchQueue.main.async { + withAnimation(.easeInOut(duration: 0.2)) { + focusedIndex = newFocus + } + } + } + + if fieldsChanged && truncated.count == codeLength { + DispatchQueue.main.async { + onCodeComplete(truncated) + } + } + } + + private func commitCodeChange(_ newCode: String) { + if code != newCode { + pendingInternalCodeUpdates += 1 + code = newCode + } + } + + private func handleDigitChanged(at index: Int, newDigit: String) { + let sanitized = newDigit.filter { $0.isNumber } + + guard !sanitized.isEmpty else { + processSingleDigitInput(at: index, digit: "") + return + } + + let firstDigit = String(sanitized.prefix(1)) + processSingleDigitInput(at: index, digit: firstDigit) + + let remainder = String(sanitized.dropFirst()) + let availableSlots = max(codeLength - (index + 1), 0) + if availableSlots > 0 { + let trimmedRemainder = String(remainder.prefix(availableSlots)) + if !trimmedRemainder.isEmpty { + applyBulkInput(startingAt: index + 1, digits: trimmedRemainder) + } + } + } + + private func processSingleDigitInput(at index: Int, digit: String) { + if digitFields[index] != digit { + digitFields[index] = digit + } + + let newCode = digitFields.joined() + commitCodeChange(newCode) + onCodeChange(newCode) + + if !digit.isEmpty, + let nextIndex = findNextEmptyField(startingFrom: index) { + DispatchQueue.main.async { + if focusedIndex != nextIndex { + withAnimation(.easeInOut(duration: 0.2)) { + focusedIndex = nextIndex + } + } + } + } + + if newCode.count == codeLength { + DispatchQueue.main.async { + onCodeComplete(newCode) + } + } + } + + + private func handleBackspace(at index: Int) { + // If current field is empty, move to previous field and clear it + if digitFields[index].isEmpty && index > 0 { + digitFields[index - 1] = "" + DispatchQueue.main.async { + let previousIndex = index - 1 + if focusedIndex != previousIndex { + withAnimation(.easeInOut(duration: 0.2)) { + focusedIndex = previousIndex + } + } + } + } else { + // Clear current field + digitFields[index] = "" + } + + // Update the main code string + let newCode = digitFields.joined() + commitCodeChange(newCode) + onCodeChange(newCode) + } + + private func applyBulkInput(startingAt index: Int, digits: String) { + guard !digits.isEmpty, index < codeLength else { return } + + var updatedFields = digitFields + var currentIndex = index + + for digit in digits where currentIndex < codeLength { + updatedFields[currentIndex] = String(digit) + currentIndex += 1 + } + + if digitFields != updatedFields { + digitFields = updatedFields + } + + let newCode = updatedFields.joined() + commitCodeChange(newCode) + onCodeChange(newCode) + + if newCode.count == codeLength { + DispatchQueue.main.async { + onCodeComplete(newCode) + } + } else { + let clampedIndex = max(min(currentIndex - 1, codeLength - 1), 0) + if let nextIndex = findNextEmptyField(startingFrom: clampedIndex) { + DispatchQueue.main.async { + if focusedIndex != nextIndex { + withAnimation(.easeInOut(duration: 0.2)) { + focusedIndex = nextIndex + } + } + } + } + } + } + + private func findNextEmptyField(startingFrom index: Int) -> Int? { + // Look for the next empty field after the current index + for i in (index + 1).. Void + let onBackspace: () -> Void + let onFocusChanged: (Bool) -> Void + + private var borderWidth: CGFloat { + if isError { return 2 } + if isFocused || !digit.isEmpty { return 3 } + return 1 + } + + private var borderColor: Color { + if isError { return .red } + if isFocused || !digit.isEmpty { return .accentColor } + return Color(.systemFill) + } + + var body: some View { + BackspaceAwareTextField( + text: $digit, + isFirstResponder: isFocused, + onDeleteBackwardWhenEmpty: { + if digit.isEmpty { + onBackspace() + } else { + digit = "" + } + }, + onFocusChanged: { isFocused in + onFocusChanged(isFocused) + }, + maxCharacters: maxDigits, + configuration: { textField in + textField.font = .systemFont(ofSize: 24, weight: .medium) + textField.textAlignment = .center + textField.keyboardType = .numberPad + textField.textContentType = .oneTimeCode + textField.autocapitalizationType = .none + textField.autocorrectionType = .no + }, + onTextChange: { newValue in + onDigitChanged(newValue) + } + ) + .frame(width: 48, height: 48) + .background( + RoundedRectangle(cornerRadius: 8) + .fill(Color.accentColor.opacity(0.05)) + .overlay( + RoundedRectangle(cornerRadius: 8) + .stroke(borderColor, lineWidth: borderWidth) + ) + ) + .frame(maxWidth: .infinity) + .accessibilityElement(children: .ignore) + .accessibilityLabel("Digit \(position) of \(totalDigits)") + .accessibilityValue(digit.isEmpty ? "Empty" : digit) + .accessibilityHint("Enter verification code digit") + .animation(.easeInOut(duration: 0.2), value: isFocused) + .animation(.easeInOut(duration: 0.2), value: digit) + } +} + +private struct BackspaceAwareTextField: UIViewRepresentable { + @Binding var text: String + var isFirstResponder: Bool + let onDeleteBackwardWhenEmpty: () -> Void + let onFocusChanged: (Bool) -> Void + let maxCharacters: Int + let configuration: (UITextField) -> Void + let onTextChange: (String) -> Void + + func makeUIView(context: Context) -> BackspaceUITextField { + context.coordinator.parent = self + let textField = BackspaceUITextField() + textField.delegate = context.coordinator + textField.addTarget( + context.coordinator, + action: #selector(Coordinator.editingChanged(_:)), + for: .editingChanged + ) + configuration(textField) + textField.onDeleteBackward = { [weak textField] in + guard let textField else { return } + if (textField.text ?? "").isEmpty { + onDeleteBackwardWhenEmpty() + } + } + return textField + } + + func updateUIView(_ uiView: BackspaceUITextField, context: Context) { + context.coordinator.parent = self + if uiView.text != text { + uiView.text = text + } + + uiView.onDeleteBackward = { [weak uiView] in + guard let uiView else { return } + if (uiView.text ?? "").isEmpty { + onDeleteBackwardWhenEmpty() + } + } + + if isFirstResponder { + if !context.coordinator.isFirstResponder { + context.coordinator.isFirstResponder = true + DispatchQueue.main.async { [weak uiView] in + guard let uiView, !uiView.isFirstResponder else { return } + uiView.becomeFirstResponder() + } + } + } else if context.coordinator.isFirstResponder { + context.coordinator.isFirstResponder = false + } + } + + func makeCoordinator() -> Coordinator { + Coordinator(parent: self) + } + + final class Coordinator: NSObject, UITextFieldDelegate { + var parent: BackspaceAwareTextField + var isFirstResponder = false + + init(parent: BackspaceAwareTextField) { + self.parent = parent + } + + @objc func editingChanged(_ sender: UITextField) { + let updatedText = sender.text ?? "" + parent.text = updatedText + parent.onTextChange(updatedText) + } + + func textFieldDidBeginEditing(_ textField: UITextField) { + isFirstResponder = true + animateFocusChange(for: textField, focused: true) + parent.onFocusChanged(true) + } + + func textFieldDidEndEditing(_ textField: UITextField) { + isFirstResponder = false + animateFocusChange(for: textField, focused: false) + parent.onFocusChanged(false) + } + + private func animateFocusChange(for textField: UITextField, focused: Bool) { + let targetTransform: CGAffineTransform = focused ? CGAffineTransform(scaleX: 1.05, y: 1.05) : .identity + UIView.animate( + withDuration: 0.2, + delay: 0, + options: [.curveEaseInOut, .allowUserInteraction] + ) { + textField.transform = targetTransform + } + } + + func textField( + _ textField: UITextField, + shouldChangeCharactersIn range: NSRange, + replacementString string: String + ) -> Bool { + if string.isEmpty { + return true + } + + let digitsOnly = string.filter { $0.isNumber } + guard !digitsOnly.isEmpty else { + return false + } + + let currentText = textField.text ?? "" + let nsCurrent = currentText as NSString + + if digitsOnly.count > 1 || string.count > 1 { + let limit = max(parent.maxCharacters, 1) + let truncated = String(digitsOnly.prefix(limit)) + let proposed = nsCurrent.replacingCharacters(in: range, with: truncated) + parent.onTextChange(String(proposed.prefix(limit))) + return false + } + + let updated = nsCurrent.replacingCharacters(in: range, with: digitsOnly) + return updated.count <= 1 + } + } +} + +private final class BackspaceUITextField: UITextField { + var onDeleteBackward: (() -> Void)? + + override func deleteBackward() { + let wasEmpty = (text ?? "").isEmpty + super.deleteBackward() + if wasEmpty { + onDeleteBackward?() + } + } +} + +// MARK: - Preview + +#Preview("Normal State") { + @Previewable @State var code = "" + + return VStack(spacing: 32) { + Text("Enter Verification Code") + .font(.title2) + .fontWeight(.semibold) + + VerificationCodeInputField( + code: $code, + onCodeComplete: { completedCode in + print("Code completed: \(completedCode)") + }, + onCodeChange: { newCode in + print("Code changed: \(newCode)") + } + ) + + Text("Current code: \(code)") + .font(.caption) + .foregroundColor(.secondary) + } + .padding() +} + +#Preview("Error State") { + @Previewable @State var code = "12345" + + return VStack(spacing: 32) { + Text("Enter Verification Code") + .font(.title2) + .fontWeight(.semibold) + + VerificationCodeInputField( + code: $code, + isError: true, + errorMessage: "Invalid verification code", + onCodeComplete: { completedCode in + print("Code completed: \(completedCode)") + }, + onCodeChange: { newCode in + print("Code changed: \(newCode)") + } + ) + + Text("Current code: \(code)") + .font(.caption) + .foregroundColor(.secondary) + } + .padding() +} + +#Preview("Custom Length") { + @Previewable @State var code = "" + + return VStack(spacing: 32) { + Text("Enter 4-Digit Code") + .font(.title2) + .fontWeight(.semibold) + + VerificationCodeInputField( + code: $code, + codeLength: 4, + onCodeComplete: { completedCode in + print("Code completed: \(completedCode)") + }, + onCodeChange: { newCode in + print("Code changed: \(newCode)") + } + ) + + Text("Current code: \(code)") + .font(.caption) + .foregroundColor(.secondary) + } + .padding() +} diff --git a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Strings/Localizable.xcstrings b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Strings/Localizable.xcstrings index a9b077b883..ef52e93e9f 100644 --- a/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Strings/Localizable.xcstrings +++ b/FirebaseSwiftUI/FirebaseAuthSwiftUI/Sources/Strings/Localizable.xcstrings @@ -3,6 +3,22 @@ "strings" : { "%@" : { + }, + "%@ %@ (%@)" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@ %2$@ (%3$@)" + } + } + } + }, + "••••••%@" : { + + }, + "Account: %@" : { + }, "AccountDisabledError" : { "comment" : "Error message displayed when the account is disabled. Use short/abbreviated translation for 'email' which is less than 15 chars.", @@ -27,6 +43,12 @@ } } } + }, + "Add an extra layer of security to your account" : { + + }, + "Add Another Method" : { + }, "AddPasswordAlertMessage" : { "comment" : "Alert message shown when adding account password.", @@ -162,6 +184,18 @@ } } } + }, + "as:" : { + + }, + "Authentication" : { + + }, + "Authentication Method" : { + + }, + "Authenticator App" : { + }, "AuthPickerTitle" : { "comment" : "Title for auth picker screen.", @@ -213,6 +247,18 @@ } } } + }, + "Change number" : { + + }, + "Check your email at %@ for a link to reset your password." : { + + }, + "Choose Authentication Method" : { + + }, + "Choose verification method:" : { + }, "ChoosePassword" : { "comment" : "Placeholder for the password text field in a sign up form.", @@ -237,6 +283,15 @@ } } } + }, + "Complete Setup" : { + + }, + "Complete Sign-In" : { + + }, + "Complete sign-in with your second factor" : { + }, "ConfirmEmail" : { "comment" : "Title of confirm email label.", @@ -261,6 +316,18 @@ } } } + }, + "Copied to clipboard!" : { + + }, + "Create Account" : { + + }, + "Create an account" : { + + }, + "Create an Account" : { + }, "Delete" : { "comment" : "Text of Delete action button.", @@ -321,6 +388,19 @@ } } } + }, + "Digit %lld of %lld" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Digit %1$lld of %2$lld" + } + } + } + }, + "Display Name" : { + }, "Don't have an account yet?" : { "localizations" : { @@ -439,6 +519,36 @@ } } } + }, + "Enrolled Methods" : { + + }, + "Enrolled: %@" : { + + }, + "Enter 6-digit code" : { + + }, + "Enter Code from App" : { + + }, + "Enter the 6-digit code from your authenticator app" : { + + }, + "Enter Verification Code" : { + + }, + "Enter verification code digit" : { + + }, + "Enter your email address and we'll send you a link to reset your password." : { + + }, + "Enter Your Phone Number" : { + + }, + "Enter your phone number to get started" : { + }, "EnterYourEmail" : { "comment" : "Title for email entry screen, email text field placeholder. Use short/abbreviated translation for 'email' which is less than 15 chars.", @@ -499,6 +609,9 @@ } } } + }, + "Forgot password?" : { + }, "ForgotPassword" : { "comment" : "Button text for 'Forgot Password' action.", @@ -523,6 +636,9 @@ } } } + }, + "Get Started" : { + }, "InvalidEmailError" : { "comment" : "Error message displayed when user enters an invalid email address. Use short/abbreviated translation for 'email' which is less than 15 chars.", @@ -557,6 +673,21 @@ } } } + }, + "Manage Two-Factor Authentication" : { + + }, + "Manage your authentication methods" : { + + }, + "Manual Entry Key:" : { + + }, + "MFA is not enabled in the current configuration. Please contact your administrator." : { + + }, + "Multi-Factor Authentication Disabled" : { + }, "Name" : { "comment" : "Label next to a name text field.", @@ -581,6 +712,15 @@ } } } + }, + "No Authentication Methods" : { + + }, + "No Authentication Methods Available" : { + + }, + "No MFA methods are configured as allowed. Please contact your administrator." : { + }, "OK" : { "comment" : "OK button title.", @@ -593,6 +733,9 @@ } } } + }, + "Password reset link sent!" : { + }, "PasswordRecoveryEmailSentMessage" : { "comment" : "Message displayed when the email for password recovery has been sent.", @@ -653,6 +796,9 @@ } } } + }, + "Phone Number" : { + }, "PlaceholderChosePassword" : { "comment" : "Placeholder of secret input cell when user changes password.", @@ -797,6 +943,9 @@ } } } + }, + "Remove" : { + }, "Resend" : { "comment" : "Resend button title.", @@ -809,6 +958,15 @@ } } } + }, + "Resend Code" : { + + }, + "Resend code in %llds" : { + + }, + "Reset Password" : { + }, "Save" : { "comment" : "Save button title.", @@ -821,6 +979,12 @@ } } } + }, + "Scan QR Code" : { + + }, + "Scan with your authenticator app or tap to open directly" : { + }, "Send" : { "comment" : "Send button title.", @@ -833,6 +997,12 @@ } } } + }, + "Send Code" : { + + }, + "Send Reset Link" : { + }, "SendEmailSignInLinkButtonLabel" : { "comment" : "Button label for sending email sign-in link", @@ -845,6 +1015,21 @@ } } } + }, + "Set Up Two-Factor Authentication" : { + + }, + "Set up two-factor authentication to add an extra layer of security to your account." : { + + }, + "Sign in" : { + + }, + "Sign in with email" : { + + }, + "Sign in with phone" : { + }, "Sign up" : { @@ -944,6 +1129,18 @@ } } } + }, + "SMS Authentication" : { + + }, + "SMS Verification" : { + + }, + "SMS: %@" : { + + }, + "Tap to open in authenticator app" : { + }, "TermsOfService" : { "comment" : "Text linked to a web page with the Terms of Service content.", @@ -992,6 +1189,12 @@ } } } + }, + "Two-Factor Authentication" : { + + }, + "Unable to generate QR Code" : { + }, "UnlinkAction" : { "comment" : "Button title for unlinking account action.", @@ -1087,6 +1290,9 @@ } } } + }, + "Use an authenticator app like Google Authenticator or Authy to generate verification codes." : { + }, "UserNotFoundError" : { "comment" : "Error message displayed when there's no account matching the email address. Use short/abbreviated translation for 'email' which is less than 15 chars.", @@ -1099,6 +1305,12 @@ } } } + }, + "Verification Code" : { + + }, + "Verify Code" : { + }, "Verify email address?" : { "comment" : "Label for sending email verification to user.", @@ -1110,6 +1322,9 @@ } } } + }, + "Verify Phone Number" : { + }, "VerifyItsYou" : { "comment" : "Alert message title show for re-authorization.", @@ -1122,6 +1337,21 @@ } } } + }, + "We sent a code to %@" : { + + }, + "We'll send a code to ••••••%@" : { + + }, + "We'll send a verification code to this number" : { + + }, + "We'll send a verification code to your phone" : { + + }, + "We'll send a verification code to your phone number each time you sign in." : { + }, "WeakPasswordError" : { "comment" : "Error message displayed when the password is too weak.", diff --git a/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Services/FacebookProviderAuthUI.swift b/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Services/FacebookProviderAuthUI.swift index be4194e49e..92a69cb58c 100644 --- a/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Services/FacebookProviderAuthUI.swift +++ b/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Services/FacebookProviderAuthUI.swift @@ -105,7 +105,7 @@ public class FacebookProviderSwift: AuthProviderSwift, DeleteUserSwift { "`rawNonce` has not been generated for Facebook limited login" ) } - let credential = OAuthProvider.credential(withProviderID: providerId, + let credential = OAuthProvider.credential(providerID: .facebook, idToken: idToken.tokenString, rawNonce: nonce) return credential @@ -132,6 +132,6 @@ public class FacebookProviderAuthUI: AuthProviderUI { } @MainActor public func authButton() -> AnyView { - AnyView(SignInWithFacebookButton(facebookProvider: provider as! FacebookProviderSwift)) + AnyView(SignInWithFacebookButton(facebookProvider: provider)) } } diff --git a/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Views/SignInWithFacebookButton.swift b/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Views/SignInWithFacebookButton.swift index 136157da0c..10e74c0339 100644 --- a/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Views/SignInWithFacebookButton.swift +++ b/FirebaseSwiftUI/FirebaseFacebookSwiftUI/Sources/Views/SignInWithFacebookButton.swift @@ -23,14 +23,14 @@ import SwiftUI @MainActor public struct SignInWithFacebookButton { @Environment(AuthService.self) private var authService - let facebookProvider: FacebookProviderSwift + let facebookProvider: AuthProviderSwift @State private var showCanceledAlert = false @State private var limitedLogin = true @State private var showUserTrackingAlert = false @State private var trackingAuthorizationStatus: ATTrackingManager .AuthorizationStatus = .notDetermined - public init(facebookProvider: FacebookProviderSwift) { + public init(facebookProvider: AuthProviderSwift) { self.facebookProvider = facebookProvider _trackingAuthorizationStatus = State(initialValue: ATTrackingManager .trackingAuthorizationStatus) @@ -66,7 +66,6 @@ extension SignInWithFacebookButton: View { VStack { Button(action: { Task { - facebookProvider.isLimitedLogin = limitedLogin try? await authService.signIn(facebookProvider) } }) { diff --git a/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj b/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj index dabd26609d..d236027bae 100644 --- a/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj +++ b/samples/swift/FirebaseUI-demo-swift.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 4617B75BF5701E48387F35F6 /* Pods_FirebaseUI_demo_swift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25F197CFBB06559F4B537E37 /* Pods_FirebaseUI_demo_swift.framework */; }; + 6096FEF87E5B53C0792BC146 /* Pods_FirebaseUI_demo_swiftTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 637019691D9C301621749DE1 /* Pods_FirebaseUI_demo_swiftTests.framework */; }; 89B2924722568B1C00CEF7D7 /* twtrsymbol.png in Resources */ = {isa = PBXBuildFile; fileRef = 89B2924622568B1C00CEF7D7 /* twtrsymbol.png */; }; 8D5F93B01D9B192D00D5A2E4 /* StorageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5F93AF1D9B192D00D5A2E4 /* StorageViewController.swift */; }; 8DABC9891D3D82D600453807 /* FUIAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DABC9881D3D82D600453807 /* FUIAppDelegate.swift */; }; @@ -49,6 +51,9 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 25F197CFBB06559F4B537E37 /* Pods_FirebaseUI_demo_swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FirebaseUI_demo_swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 637019691D9C301621749DE1 /* Pods_FirebaseUI_demo_swiftTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FirebaseUI_demo_swiftTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6F5993EFB11CBA0003C0DE94 /* Pods-FirebaseUI-demo-swiftTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FirebaseUI-demo-swiftTests.release.xcconfig"; path = "Target Support Files/Pods-FirebaseUI-demo-swiftTests/Pods-FirebaseUI-demo-swiftTests.release.xcconfig"; sourceTree = ""; }; 89B2924622568B1C00CEF7D7 /* twtrsymbol.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = twtrsymbol.png; sourceTree = ""; }; 8D5F93AF1D9B192D00D5A2E4 /* StorageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageViewController.swift; sourceTree = ""; }; 8DABC9851D3D82D600453807 /* FirebaseUI-demo-swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "FirebaseUI-demo-swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -59,6 +64,8 @@ 8DABC99D1D3D82D600453807 /* FirebaseUI-demo-swiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FirebaseUI-demo-swiftTests.swift"; sourceTree = ""; }; 8DABC99F1D3D82D600453807 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8DD51E361D873B0D00E2CA51 /* UIStoryboardExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIStoryboardExtension.swift; sourceTree = ""; }; + 8E009A2D4461F77B9CEB0C4D /* Pods-FirebaseUI-demo-swiftTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FirebaseUI-demo-swiftTests.debug.xcconfig"; path = "Target Support Files/Pods-FirebaseUI-demo-swiftTests/Pods-FirebaseUI-demo-swiftTests.debug.xcconfig"; sourceTree = ""; }; + A885F4D8D84B72ADACBE725B /* Pods-FirebaseUI-demo-swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FirebaseUI-demo-swift.release.xcconfig"; path = "Target Support Files/Pods-FirebaseUI-demo-swift/Pods-FirebaseUI-demo-swift.release.xcconfig"; sourceTree = ""; }; C302C1D51D91CC7B00ADBD41 /* FUIAuthViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FUIAuthViewController.swift; sourceTree = ""; }; C302C1D71D91CC7B00ADBD41 /* ChatCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatCollectionViewCell.swift; sourceTree = ""; }; C302C1D81D91CC7B00ADBD41 /* ChatViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatViewController.swift; sourceTree = ""; }; @@ -166,6 +173,7 @@ C39BC04F1DB812330060F6AF /* FUICustomPasswordVerificationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FUICustomPasswordVerificationViewController.swift; sourceTree = ""; }; C39BC0501DB812330060F6AF /* FUICustomPasswordVerificationViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FUICustomPasswordVerificationViewController.xib; sourceTree = ""; }; C3F23ECC1D80F3300020509F /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + DB206ACE5B8C8DC3A2E47E00 /* Pods-FirebaseUI-demo-swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FirebaseUI-demo-swift.debug.xcconfig"; path = "Target Support Files/Pods-FirebaseUI-demo-swift/Pods-FirebaseUI-demo-swift.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -173,6 +181,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4617B75BF5701E48387F35F6 /* Pods_FirebaseUI_demo_swift.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -180,6 +189,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6096FEF87E5B53C0792BC146 /* Pods_FirebaseUI_demo_swiftTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -202,6 +212,7 @@ 8DABC99C1D3D82D600453807 /* FirebaseUI-demo-swiftTests */, 8DABC9861D3D82D600453807 /* Products */, 9C43BF8CA810E7C909775084 /* Pods */, + C129AF2D5B3F8906D7A96042 /* Frameworks */, ); sourceTree = ""; }; @@ -240,10 +251,23 @@ 9C43BF8CA810E7C909775084 /* Pods */ = { isa = PBXGroup; children = ( + DB206ACE5B8C8DC3A2E47E00 /* Pods-FirebaseUI-demo-swift.debug.xcconfig */, + A885F4D8D84B72ADACBE725B /* Pods-FirebaseUI-demo-swift.release.xcconfig */, + 8E009A2D4461F77B9CEB0C4D /* Pods-FirebaseUI-demo-swiftTests.debug.xcconfig */, + 6F5993EFB11CBA0003C0DE94 /* Pods-FirebaseUI-demo-swiftTests.release.xcconfig */, ); path = Pods; sourceTree = ""; }; + C129AF2D5B3F8906D7A96042 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 25F197CFBB06559F4B537E37 /* Pods_FirebaseUI_demo_swift.framework */, + 637019691D9C301621749DE1 /* Pods_FirebaseUI_demo_swiftTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; C302C1D31D91CC7B00ADBD41 /* Samples */ = { isa = PBXGroup; children = ( @@ -305,9 +329,11 @@ isa = PBXNativeTarget; buildConfigurationList = 8DABC9A21D3D82D600453807 /* Build configuration list for PBXNativeTarget "FirebaseUI-demo-swift" */; buildPhases = ( + 3D86CE81C1F8711347A14B72 /* [CP] Check Pods Manifest.lock */, 8DABC9811D3D82D600453807 /* Sources */, 8DABC9821D3D82D600453807 /* Frameworks */, 8DABC9831D3D82D600453807 /* Resources */, + 04D211F7D3B42A6D19A9E000 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -322,6 +348,7 @@ isa = PBXNativeTarget; buildConfigurationList = 8DABC9A51D3D82D600453807 /* Build configuration list for PBXNativeTarget "FirebaseUI-demo-swiftTests" */; buildPhases = ( + 94F892B9CDD1C2428D7F724B /* [CP] Check Pods Manifest.lock */, 8DABC9951D3D82D600453807 /* Sources */, 8DABC9961D3D82D600453807 /* Frameworks */, 8DABC9971D3D82D600453807 /* Resources */, @@ -348,7 +375,6 @@ TargetAttributes = { 8DABC9841D3D82D600453807 = { CreatedOnToolsVersion = 7.3.1; - DevelopmentTeam = YYX2P3XVJ7; LastSwiftMigration = 1020; SystemCapabilities = { com.apple.BackgroundModes = { @@ -497,6 +523,149 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 04D211F7D3B42A6D19A9E000 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FirebaseUI-demo-swift/Pods-FirebaseUI-demo-swift-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/AppAuth/AppAuth.framework", + "${BUILT_PRODUCTS_DIR}/AppCheckCore/AppCheckCore.framework", + "${BUILT_PRODUCTS_DIR}/BoringSSL-GRPC/openssl_grpc.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseAnonymousAuthUI/FirebaseAnonymousAuthUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseAppCheckInterop/FirebaseAppCheckInterop.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseAuth/FirebaseAuth.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseAuthInterop/FirebaseAuthInterop.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseAuthUI/FirebaseAuthUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseCoreExtension/FirebaseCoreExtension.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseCoreInternal/FirebaseCoreInternal.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseDatabase/FirebaseDatabase.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseDatabaseUI/FirebaseDatabaseUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseEmailAuthUI/FirebaseEmailAuthUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseFacebookAuthUI/FirebaseFacebookAuthUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseFirestore/FirebaseFirestore.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseFirestoreInternal/FirebaseFirestoreInternal.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseFirestoreUI/FirebaseFirestoreUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseGoogleAuthUI/FirebaseGoogleAuthUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseOAuthUI/FirebaseOAuthUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebasePhoneAuthUI/FirebasePhoneAuthUI.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseSharedSwift/FirebaseSharedSwift.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseStorage/FirebaseStorage.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseStorageUI/FirebaseStorageUI.framework", + "${BUILT_PRODUCTS_DIR}/GTMAppAuth/GTMAppAuth.framework", + "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework", + "${BUILT_PRODUCTS_DIR}/GoogleSignIn/GoogleSignIn.framework", + "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework", + "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework", + "${BUILT_PRODUCTS_DIR}/RecaptchaInterop/RecaptchaInterop.framework", + "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework", + "${BUILT_PRODUCTS_DIR}/abseil/absl.framework", + "${BUILT_PRODUCTS_DIR}/gRPC-C++/grpcpp.framework", + "${BUILT_PRODUCTS_DIR}/gRPC-Core/grpc.framework", + "${BUILT_PRODUCTS_DIR}/leveldb-library/leveldb.framework", + "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/FBAEMKit/FBAEMKit.framework/FBAEMKit", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/FBSDKCoreKit", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/FBSDKCoreKit_Basics/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/FBSDKLoginKit/FBSDKLoginKit.framework/FBSDKLoginKit", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppAuth.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppCheckCore.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl_grpc.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAnonymousAuthUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAppCheckInterop.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAuth.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAuthInterop.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseAuthUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreExtension.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreInternal.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseDatabase.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseDatabaseUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseEmailAuthUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseFacebookAuthUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseFirestore.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseFirestoreInternal.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseFirestoreUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseGoogleAuthUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseOAuthUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebasePhoneAuthUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSharedSwift.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseStorage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseStorageUI.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMAppAuth.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleSignIn.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RecaptchaInterop.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/absl.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/grpcpp.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/grpc.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/leveldb.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBAEMKit.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKCoreKit.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKCoreKit_Basics.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKLoginKit.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FirebaseUI-demo-swift/Pods-FirebaseUI-demo-swift-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3D86CE81C1F8711347A14B72 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FirebaseUI-demo-swift-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 94F892B9CDD1C2428D7F724B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FirebaseUI-demo-swiftTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 8DABC9811D3D82D600453807 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -748,12 +917,13 @@ }; 8DABC9A31D3D82D600453807 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = DB206ACE5B8C8DC3A2E47E00 /* Pods-FirebaseUI-demo-swift.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BITCODE_GENERATION_MODE = ""; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "FirebaseUI-demo-swift/FirebaseUI-demo-swift.entitlements"; - DEVELOPMENT_TEAM = YYX2P3XVJ7; + DEVELOPMENT_TEAM = ""; HEADER_SEARCH_PATHS = ( "$(inherited)", "${PODS_ROOT}/Firebase/Core/Sources", @@ -792,7 +962,7 @@ BITCODE_GENERATION_MODE = ""; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "FirebaseUI-demo-swift/FirebaseUI-demo-swift.entitlements"; - DEVELOPMENT_TEAM = YYX2P3XVJ7; + DEVELOPMENT_TEAM = ""; HEADER_SEARCH_PATHS = ( "$(inherited)", "${PODS_ROOT}/Firebase/Core/Sources", diff --git a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/ContentViewSheetExample.swift b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/ContentViewSheetExample.swift new file mode 100644 index 0000000000..791305d831 --- /dev/null +++ b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/ContentViewSheetExample.swift @@ -0,0 +1,81 @@ +// +// ContentViewSheetExample.swift +// FirebaseUI +// +// Created by Ademola Fadumo on 20/10/2025. +// + +import SwiftUI +import FirebaseAuth +import FirebaseAuthSwiftUI +import FirebaseGoogleSwiftUI +import FirebaseFacebookSwiftUI +import FirebasePhoneAuthSwiftUI + +struct ContentViewSheetExample: View { + init() { + let actionCodeSettings = ActionCodeSettings() + actionCodeSettings.handleCodeInApp = true + actionCodeSettings + .url = URL(string: "https://flutterfire-e2e-tests.firebaseapp.com") + actionCodeSettings.linkDomain = "flutterfire-e2e-tests.firebaseapp.com" + actionCodeSettings.setIOSBundleID(Bundle.main.bundleIdentifier!) + let configuration = AuthConfiguration( + tosUrl: URL(string: "https://example.com/tos"), + privacyPolicyUrl: URL(string: "https://example.com/privacy"), + emailLinkSignInActionCodeSettings: actionCodeSettings, + mfaEnabled: true + ) + + authService = AuthService( + configuration: configuration + ) + .withGoogleSignIn() + .withPhoneSignIn() + .withTwitterSignIn() + .withFacebookSignIn() + .withEmailSignIn() + } + + @State private var authService: AuthService + @State private var isPresented: Bool = false + + var body: some View { + FirebaseAuthView( + authService: authService, + isPresented: $isPresented + ) { + NavigationStack { + VStack { + if authService.authenticationState == .unauthenticated { + Text("Not Authenticated") + } else { + Text("Authenticated - \(authService.currentUser?.email ?? "")") + Button { + Task { + try? await authService.signOut() + } + } label: { + Text("Sign Out") + } + .buttonStyle(.borderedProminent) + } + } + .navigationTitle("Firebase UI Demo") + } + .onAppear { + isPresented = authService.authenticationState == .unauthenticated + } + .onChange(of: authService.authenticationState) { oldValue, newValue in + debugPrint("authService.authenticationState - \(newValue)") + if newValue != .authenticating { + isPresented = newValue == .unauthenticated + } + } + } + } +} + +#Preview { + ContentViewSheetExample() +} diff --git a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift index 735bbbb0f5..00a72d02a0 100644 --- a/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift +++ b/samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample/FirebaseSwiftUIExampleApp.swift @@ -79,11 +79,12 @@ struct FirebaseSwiftUIExampleApp: App { var body: some Scene { WindowGroup { - if testRunner { - TestView() - } else { - ContentView() - } + ContentViewSheetExample() +// if testRunner { +// TestView() +// } else { +// ContentView() +// } } } } diff --git a/samples/swiftui/FirebaseSwiftUIExample/GoogleService-Info.plist b/samples/swiftui/FirebaseSwiftUIExample/GoogleService-Info.plist index f325ead98d..457edc00d3 100644 --- a/samples/swiftui/FirebaseSwiftUIExample/GoogleService-Info.plist +++ b/samples/swiftui/FirebaseSwiftUIExample/GoogleService-Info.plist @@ -3,23 +3,23 @@ CLIENT_ID - 406099696497-134k3722m01rtrsklhf3b7k8sqa5r7in.apps.googleusercontent.com + 771411398215-et7qhn5mcivjv33j0qk9pib3vq4q4dgf.apps.googleusercontent.com REVERSED_CLIENT_ID - com.googleusercontent.apps.406099696497-134k3722m01rtrsklhf3b7k8sqa5r7in + com.googleusercontent.apps.771411398215-et7qhn5mcivjv33j0qk9pib3vq4q4dgf ANDROID_CLIENT_ID - 406099696497-17qn06u8a0dc717u8ul7s49ampk13lul.apps.googleusercontent.com + 771411398215-0oisrss5dnie4sl79qmaeme606t0ac57.apps.googleusercontent.com API_KEY - AIzaSyDooSUGSf63Ghq02_iIhtnmwMDs4HlWS6c + AIzaSyA1U0l0OXAbR2zIZ0WTXjz0s-2oKbRma6s GCM_SENDER_ID - 406099696497 + 771411398215 PLIST_VERSION 1 BUNDLE_ID - io.flutter.plugins.firebase.auth.example + com.example.AuthSwiftUIExample PROJECT_ID - flutterfire-e2e-tests + temp-test-aa342 STORAGE_BUCKET - flutterfire-e2e-tests.appspot.com + temp-test-aa342.firebasestorage.app IS_ADS_ENABLED IS_ANALYTICS_ENABLED @@ -31,8 +31,6 @@ IS_SIGNIN_ENABLED GOOGLE_APP_ID - 1:406099696497:ios:58cbc26aca8e5cf83574d0 - DATABASE_URL - https://flutterfire-e2e-tests-default-rtdb.europe-west1.firebasedatabase.app + 1:771411398215:ios:3286f98b5460a08e2e6b62 \ No newline at end of file