From 2b8657bd620a1ad16708e1913d2b44a1d4d3e000 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Wed, 1 Oct 2025 12:33:13 -0300 Subject: [PATCH 01/17] feat(authenticator): Add passkey prompt UI (#260) --- .../authenticator/AuthenticatorStepState.kt | 34 +++++++ .../authenticator/enums/AuthenticatorStep.kt | 11 ++ .../states/PasskeyCreatedStateImpl.kt | 14 +++ .../states/PasskeyCreationPromptStateImpl.kt | 21 ++++ .../authenticator/ui/AuthenticatorButton.kt | 60 +++++++++++ .../ui/authenticator/ui/AuthenticatorForm.kt | 38 +------ .../ui/authenticator/ui/PasskeyCreated.kt | 95 ++++++++++++++++++ .../authenticator/ui/PasskeyCreationPrompt.kt | 93 +++++++++++++++++ .../ui/authenticator/ui/TestTags.kt | 3 + .../res/drawable/authenticator_passkey.xml | 82 +++++++++++++++ .../res/drawable/authenticator_success.xml | 9 ++ authenticator/src/main/res/values/buttons.xml | 2 + authenticator/src/main/res/values/strings.xml | 6 ++ authenticator/src/main/res/values/titles.xml | 2 + .../ui/authenticator/testUtil/MockStates.kt | 30 ++++-- .../ui/authenticator/ui/PasskeyCreatedTest.kt | 83 +++++++++++++++ .../ui/PasskeyCreationPromptTest.kt | 74 ++++++++++++++ .../ui/robots/PasskeyCreatedRobot.kt | 14 +++ .../ui/robots/PasskeyCreationPromptRobot.kt | 16 +++ ...skeyCreatedTest_with-multiple-passkeys.png | Bin 0 -> 45525 bytes .../PasskeyCreatedTest_with-one-passkey.png | Bin 0 -> 40479 bytes ...asskeyCreationPromptTest_default-state.png | Bin 0 -> 104577 bytes 22 files changed, 643 insertions(+), 44 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt create mode 100644 authenticator/src/main/res/drawable/authenticator_passkey.xml create mode 100644 authenticator/src/main/res/drawable/authenticator_success.xml create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt create mode 100644 authenticator/src/test/screenshots/PasskeyCreatedTest_with-multiple-passkeys.png create mode 100644 authenticator/src/test/screenshots/PasskeyCreatedTest_with-one-passkey.png create mode 100644 authenticator/src/test/screenshots/PasskeyCreationPromptTest_default-state.png diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index 483dc409..d8270d89 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -23,6 +23,7 @@ import com.amplifyframework.auth.AuthUser import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult +import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.MutableFormState @@ -460,3 +461,36 @@ interface VerifyUserConfirmState : AuthenticatorStepState { */ fun skip() } + +/** + * The user is being shown a prompt to create a passkey, encouraging them to use this as a way to sign in quickly + * via biometrics + */ +@Stable +interface PasskeyCreationPromptState : AuthenticatorStepState { + /** + * Create a passkey + */ + suspend fun createPasskey() + + /** + * Skip passkey creation and continue to the next step + */ + suspend fun skip() +} + +/** + * The user is being shown a confirmation screen after creating a passkey + */ +@Stable +interface PasskeyCreatedState : AuthenticatorStepState { + /** + * A list of existing passkeys for this user, including the one they've just created + */ + val passkeys: List + + /** + * Continue to the next step + */ + suspend fun done() +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt index 700efecf..e6379b75 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt @@ -120,4 +120,15 @@ abstract class AuthenticatorStep internal constructor() { * The user has initiated verification of an account recovery mechanism (email, phone) and needs to provide a confirmation code. */ object VerifyUserConfirm : AuthenticatorStep() + + /** + * The user is being shown a prompt to create a passkey, encouraging them to use this as a way to sign in quickly + * via biometrics + */ + object PasskeyCreationPrompt : AuthenticatorStep() + + /** + * The user is being shown a confirmation screen after creating a passkey + */ + object PasskeyCreated : AuthenticatorStep() } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt new file mode 100644 index 00000000..e7df13e2 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt @@ -0,0 +1,14 @@ +package com.amplifyframework.ui.authenticator.states + +import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep + +internal class PasskeyCreatedStateImpl( + override val passkeys: List, + private val onDone: suspend () -> Unit +) : PasskeyCreatedState { + override val step: AuthenticatorStep = AuthenticatorStep.PasskeyCreated + + override suspend fun done() = onDone() +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt new file mode 100644 index 00000000..43bc4ff8 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt @@ -0,0 +1,21 @@ +package com.amplifyframework.ui.authenticator.states + +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + +class PasskeyCreationPromptStateImpl(private val onSubmit: suspend () -> Unit, private val onSkip: suspend () -> Unit) : + PasskeyCreationPromptState { + private val mutex = Mutex() + + override suspend fun createPasskey() { + mutex.withLock { + onSubmit() + } + } + + override suspend fun skip() = onSkip() + + override val step = AuthenticatorStep.PasskeyCreationPrompt +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt new file mode 100644 index 00000000..0eac5752 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorButton.kt @@ -0,0 +1,60 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.Button +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import com.amplifyframework.ui.authenticator.R + +internal enum class ButtonStyle { + Primary, + Secondary +} + +/** + * The button displayed in Authenticator. + * @param onClick The click handler for the button + * @param loading True to show the [loadingIndicator] content, false to show the button label. + * @param modifier The [Modifier] for the composable. + * @param label The label for the button + * @param loadingIndicator The content to show when loading. + */ +@Composable +internal fun AuthenticatorButton( + onClick: () -> Unit, + loading: Boolean, + modifier: Modifier = Modifier, + label: String = stringResource(R.string.amplify_ui_authenticator_button_submit), + loadingIndicator: @Composable () -> Unit = { LoadingIndicator() }, + enabled: Boolean = true, + style: ButtonStyle = ButtonStyle.Primary +) { + if (style == ButtonStyle.Primary) { + Button( + modifier = modifier.fillMaxWidth(), + onClick = onClick, + enabled = enabled && !loading + ) { + if (loading) { + loadingIndicator() + } else { + Text(label) + } + } + } else { + OutlinedButton( + modifier = modifier.fillMaxWidth(), + onClick = onClick, + enabled = enabled && !loading + ) { + if (loading) { + loadingIndicator() + } else { + Text(label) + } + } + } +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt index 57b31c6a..37c26d46 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorForm.kt @@ -20,15 +20,11 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size -import androidx.compose.material3.Button -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.amplifyframework.ui.authenticator.R import com.amplifyframework.ui.authenticator.forms.MutableFormState /** @@ -37,10 +33,7 @@ import com.amplifyframework.ui.authenticator.forms.MutableFormState * @param modifier The Modifier for the composable. */ @Composable -internal fun AuthenticatorForm( - state: MutableFormState, - modifier: Modifier = Modifier -) { +internal fun AuthenticatorForm(state: MutableFormState, modifier: Modifier = Modifier) { Column( modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally, @@ -57,32 +50,3 @@ internal fun AuthenticatorForm( Spacer(modifier = Modifier.size(16.dp)) } } - -/** - * The button displayed in Authenticator. - * @param onClick The click handler for the button - * @param loading True to show the [loadingIndicator] content, false to show the button label. - * @param modifier The [Modifier] for the composable. - * @param label The label for the button - * @param loadingIndicator The content to show when loading. - */ -@Composable -internal fun AuthenticatorButton( - onClick: () -> Unit, - loading: Boolean, - modifier: Modifier = Modifier, - label: String = stringResource(R.string.amplify_ui_authenticator_button_submit), - loadingIndicator: @Composable () -> Unit = { LoadingIndicator() } -) { - Button( - modifier = modifier.fillMaxWidth(), - onClick = onClick, - enabled = !loading - ) { - if (loading) { - loadingIndicator() - } else { - Text(label) - } - } -} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt new file mode 100644 index 00000000..349f4409 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt @@ -0,0 +1,95 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Card +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.R +import kotlinx.coroutines.launch + +@Composable +fun PasskeyCreated( + state: PasskeyCreatedState, + modifier: Modifier = Modifier, + headerContent: @Composable (PasskeyCreatedState) -> Unit = { + Column(verticalArrangement = Arrangement.spacedBy(8.dp)) { + Image( + painter = painterResource(R.drawable.authenticator_success), + contentDescription = null, + modifier = Modifier.size(32.dp) + ) + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_passkey_created)) + } + }, + footerContent: @Composable (PasskeyCreatedState) -> Unit = { } +) { + val scope = rememberCoroutineScope() + + Column( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) { + headerContent(state) + + if (state.passkeys.isNotEmpty()) { + Text( + stringResource(R.string.amplify_ui_authenticator_existing_passkeys), + style = MaterialTheme.typography.titleSmall + ) + Spacer(modifier = Modifier.size(8.dp)) + Card { + Column(modifier = Modifier.padding(16.dp).fillMaxWidth()) { + state.passkeys.forEachIndexed { index, passkey -> + Passkey(passkey) + if (index != state.passkeys.size - 1) { + HorizontalDivider(modifier = Modifier.padding(vertical = 16.dp)) + } + } + } + } + Spacer(modifier = Modifier.size(16.dp)) + } + + var enabled by remember { mutableStateOf(true) } + AuthenticatorButton( + onClick = { + scope.launch { + enabled = false + state.done() + enabled = true + } + }, + loading = !enabled, + label = stringResource(R.string.amplify_ui_authenticator_button_continue), + modifier = Modifier.testTag(TestTags.ContinueButton) + ) + + footerContent(state) + } +} + +@Composable +private fun Passkey(credential: AuthWebAuthnCredential) { + Text(credential.friendlyName ?: "Unknown Passkey") // todo String resource +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt new file mode 100644 index 00000000..bf4a23a9 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt @@ -0,0 +1,93 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.R +import kotlinx.coroutines.launch + +private enum class Action { + CreatingPasskey, + Skipping +} + +@Composable +fun PasskeyPrompt( + state: PasskeyCreationPromptState, + modifier: Modifier = Modifier, + headerContent: @Composable (PasskeyCreationPromptState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_prompt_for_passkey)) + }, + footerContent: @Composable (PasskeyCreationPromptState) -> Unit = {} +) { + val scope = rememberCoroutineScope() + + var inProgress by remember { mutableStateOf(null) } + + Column( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) { + headerContent(state) + + Text(stringResource(R.string.amplify_ui_authenticator_passkey_prompt_content)) + + Spacer(modifier = Modifier.size(16.dp)) + + Image( + painter = painterResource(R.drawable.authenticator_passkey), + contentDescription = null, + modifier = Modifier.fillMaxWidth() + ) + + Spacer(modifier = Modifier.size(16.dp)) + + AuthenticatorButton( + onClick = { + scope.launch { + inProgress = Action.CreatingPasskey + state.createPasskey() + inProgress = null + } + }, + loading = inProgress == Action.CreatingPasskey, + enabled = inProgress == null, + label = stringResource(R.string.amplify_ui_authenticator_button_create_passkey), + modifier = Modifier.testTag(TestTags.CreatePasskeyButton) + ) + + AuthenticatorButton( + modifier = Modifier.fillMaxWidth().testTag(TestTags.SkipPasskeyButton), + onClick = { + scope.launch { + inProgress = Action.Skipping + state.skip() + inProgress = null + } + }, + loading = inProgress == Action.Skipping, + enabled = inProgress == null, + label = stringResource(R.string.amplify_ui_authenticator_button_skip_passkey), + style = ButtonStyle.Secondary + ) + + footerContent(state) + } +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt index a63665a5..a5e00e11 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt @@ -27,6 +27,9 @@ internal object TestTags { const val ForgotPasswordButton = "ForgotPasswordButton" const val CreateAccountButton = "CreateAccountButton" const val PasswordResetButton = "PasswordResetButton" + const val ContinueButton = "ContinueButton" + const val CreatePasskeyButton = "CreatePasskeyButton" + const val SkipPasskeyButton = "SkipPasskeyButton" const val AuthenticatorTitle = "AuthenticatorTitle" const val ShowPasswordIcon = "ShowPasswordIcon" diff --git a/authenticator/src/main/res/drawable/authenticator_passkey.xml b/authenticator/src/main/res/drawable/authenticator_passkey.xml new file mode 100644 index 00000000..91c21dee --- /dev/null +++ b/authenticator/src/main/res/drawable/authenticator_passkey.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/authenticator/src/main/res/drawable/authenticator_success.xml b/authenticator/src/main/res/drawable/authenticator_success.xml new file mode 100644 index 00000000..9a86c70a --- /dev/null +++ b/authenticator/src/main/res/drawable/authenticator_success.xml @@ -0,0 +1,9 @@ + + + diff --git a/authenticator/src/main/res/values/buttons.xml b/authenticator/src/main/res/values/buttons.xml index 2e654d2d..4e6a6cab 100644 --- a/authenticator/src/main/res/values/buttons.xml +++ b/authenticator/src/main/res/values/buttons.xml @@ -26,4 +26,6 @@ Send Code Skip Copy Key + Create a Passkey + Continue without a Passkey diff --git a/authenticator/src/main/res/values/strings.xml b/authenticator/src/main/res/values/strings.xml index 755ec635..07db7eed 100644 --- a/authenticator/src/main/res/values/strings.xml +++ b/authenticator/src/main/res/values/strings.xml @@ -36,4 +36,10 @@ Text Message (SMS) Authenticator App (TOTP) Email Message + + + Passkeys are WebAuthn credentials that validate your identity using biometric data like touch or facial recognition or device authentication like passwords or PINs, serving as a secure password replacement. + + + Existing Passkeys diff --git a/authenticator/src/main/res/values/titles.xml b/authenticator/src/main/res/values/titles.xml index e3db56de..213f47f1 100644 --- a/authenticator/src/main/res/values/titles.xml +++ b/authenticator/src/main/res/values/titles.xml @@ -27,4 +27,6 @@ Choose your preferred two-factor authentication method to set up Choose your two-factor authentication method Add Email for Two-Factor Authentication + Sign in faster with Passkey + Passkey created successfully! diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index b37831f5..f5e812d4 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -18,11 +18,14 @@ package com.amplifyframework.ui.authenticator.testUtil import com.amplifyframework.auth.AuthCodeDeliveryDetails import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.MFAType +import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData import com.amplifyframework.ui.authenticator.mockAuthCodeDeliveryDetails +import com.amplifyframework.ui.authenticator.states.PasskeyCreatedStateImpl +import com.amplifyframework.ui.authenticator.states.PasskeyCreationPromptStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetConfirmStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmMfaStateImpl @@ -105,13 +108,12 @@ internal fun mockSignInContinueWithTotpSetupState( onMoveTo = onMoveTo ) -internal fun mockSignInConfirmMfaState( - deliveryDetails: AuthCodeDeliveryDetails = mockAuthCodeDeliveryDetails() -) = SignInConfirmMfaStateImpl( - deliveryDetails = deliveryDetails, - onSubmit = { }, - onMoveTo = { } -) +internal fun mockSignInConfirmMfaState(deliveryDetails: AuthCodeDeliveryDetails = mockAuthCodeDeliveryDetails()) = + SignInConfirmMfaStateImpl( + deliveryDetails = deliveryDetails, + onSubmit = { }, + onMoveTo = { } + ) internal fun mockSignInContinueWithMfaSetupSelectionState( allowedMfaTypes: Set = setOf(MFAType.TOTP, MFAType.SMS, MFAType.EMAIL) @@ -120,3 +122,17 @@ internal fun mockSignInContinueWithMfaSetupSelectionState( onSubmit = { }, onMoveTo = { } ) + +internal fun mockPasskeyCreatedState( + passkeys: List = emptyList(), + onDone: suspend () -> Unit = {} +) = PasskeyCreatedStateImpl( + passkeys = passkeys, + onDone = onDone +) + +internal fun mockPasskeyCreationPromptState(onSubmit: suspend () -> Unit = {}, onSkip: suspend () -> Unit = {}) = + PasskeyCreationPromptStateImpl( + onSubmit = onSubmit, + onSkip = onSkip + ) diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt new file mode 100644 index 00000000..bd91a9b9 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt @@ -0,0 +1,83 @@ +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockPasskeyCreatedState +import com.amplifyframework.ui.authenticator.ui.robots.passkeyCreated +import com.amplifyframework.ui.testing.ScreenshotTest +import io.mockk.coVerify +import io.mockk.every +import io.mockk.mockk +import org.junit.Test + +class PasskeyCreatedTest : AuthenticatorUiTest() { + + @Test + fun `title is Passkey created successfully`() { + setContent { + PasskeyCreated(state = mockPasskeyCreatedState()) + } + passkeyCreated { + hasTitle("Passkey created successfully!") + } + } + + @Test + fun `button is Continue`() { + setContent { + PasskeyCreated(state = mockPasskeyCreatedState()) + } + passkeyCreated { + hasContinueButton("Continue") + } + } + + @Test + fun `clicking continue calls done`() { + val onDone = mockk Unit>(relaxed = true) + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(onDone = onDone)) + } + passkeyCreated { + clickContinueButton() + } + coVerify { onDone() } + } + + @Test + fun `displays existing passkeys when present`() { + val passkey = mockk { + every { friendlyName } returns "Test Passkey" + } + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(passkeys = listOf(passkey))) + } + passkeyCreated { + hasPasskeyText("Existing Passkeys") + hasPasskeyText("Test Passkey") + } + } + + @Test + @ScreenshotTest + fun `with one passkey`() { + val passkey = mockk { + every { friendlyName } returns "Test Passkey" + } + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(passkeys = listOf(passkey))) + } + } + + @Test + @ScreenshotTest + fun `with multiple passkeys`() { + val passkeys = listOf( + mockk { every { friendlyName } returns "Test Passkey 1" }, + mockk { every { friendlyName } returns "Test Passkey 2" } + ) + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(passkeys = passkeys)) + } + } +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt new file mode 100644 index 00000000..53d88e2d --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt @@ -0,0 +1,74 @@ +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockPasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.ui.robots.passkeyCreationPrompt +import com.amplifyframework.ui.testing.ScreenshotTest +import io.mockk.coVerify +import io.mockk.mockk +import org.junit.Test + +class PasskeyCreationPromptTest : AuthenticatorUiTest() { + + @Test + fun `title is Sign in faster with Passkey`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + passkeyCreationPrompt { + hasTitle("Sign in faster with Passkey") + } + } + + @Test + fun `has create passkey button`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + passkeyCreationPrompt { + hasCreatePasskeyButton("Create a Passkey") + } + } + + @Test + fun `has skip passkey button`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + passkeyCreationPrompt { + hasSkipPasskeyButton("Continue without a Passkey") + } + } + + @Test + fun `clicking create passkey calls createPasskey`() { + val onSubmit = mockk Unit>(relaxed = true) + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState(onSubmit = onSubmit)) + } + passkeyCreationPrompt { + clickCreatePasskeyButton() + } + coVerify { onSubmit() } + } + + @Test + fun `clicking skip calls skip`() { + val onSkip = mockk Unit>(relaxed = true) + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState(onSkip = onSkip)) + } + passkeyCreationPrompt { + clickSkipPasskeyButton() + } + coVerify { onSkip() } + } + + @Test + @ScreenshotTest + fun `default state`() { + setContent { + PasskeyPrompt(state = mockPasskeyCreationPromptState()) + } + } +} \ No newline at end of file diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt new file mode 100644 index 00000000..7c3985de --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreatedRobot.kt @@ -0,0 +1,14 @@ +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.passkeyCreated(func: PasskeyCreatedRobot.() -> Unit) = PasskeyCreatedRobot(composeTestRule).func() + +class PasskeyCreatedRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasContinueButton(expected: String) = assertExists(TestTags.ContinueButton, expected) + fun hasPasskeyText(text: String) = assertExists(text) + + fun clickContinueButton() = clickOnTag(TestTags.ContinueButton) +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt new file mode 100644 index 00000000..8562606c --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/PasskeyCreationPromptRobot.kt @@ -0,0 +1,16 @@ +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.passkeyCreationPrompt(func: PasskeyCreationPromptRobot.() -> Unit) = + PasskeyCreationPromptRobot(composeTestRule).func() + +class PasskeyCreationPromptRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasCreatePasskeyButton(expected: String) = assertExists(TestTags.CreatePasskeyButton, expected) + fun hasSkipPasskeyButton(expected: String) = assertExists(TestTags.SkipPasskeyButton, expected) + fun clickCreatePasskeyButton() = clickOnTag(TestTags.CreatePasskeyButton) + fun clickSkipPasskeyButton() = clickOnTag(TestTags.SkipPasskeyButton) + fun hasPromptText(text: String) = assertExists(text) +} diff --git a/authenticator/src/test/screenshots/PasskeyCreatedTest_with-multiple-passkeys.png b/authenticator/src/test/screenshots/PasskeyCreatedTest_with-multiple-passkeys.png new file mode 100644 index 0000000000000000000000000000000000000000..f13ce08501af6c1e449b964310dec6c96ee2f240 GIT binary patch literal 45525 zcmeFZcURM0w=Rsg2)2NTiX@a%J`L)wdR^@mTO)!A({vk$Z_a#IyyRt z>K(=VbaeD^I=W+~M;XAC!2Q3t=;)r&sVd%n@YG~>!1MQ+u7QQcoyhD5*|`sz?q*!8 z)pcHN56aO~7qQVSAdEt9U$(huAHE&vg!eggkN&KO(WfI}PI$r8UoEL4e+eZgKRcfK zS88xkX7XFVt*sAyVbVh#(j7NDq_JKTyNx-g{am(OH8fh=COfP)+w1pM3&146C;7Fn z#s0xp&2#jygKH&6!9>AF4#|R|eR)Q_NTPkA%TU4{qJ6s?YId0RCF&fWx*$5bD}w$I z+80fO{~d@Xi2sL-)Z;2G5WoAdH~o9gsWZ>}c%c4y+>rSzhJD>{zkXeB&(N=ja@DH* z2yLw1ze#s)AA0#$C@b&Dqv&vHe$vGA!?2HYCAFWKyR6m^HU+AJV=?c|K8rVZX=LQP z$MK8)jJ_o0o50oW_PyEbv~iwo9fe=yZAs!d8Rs0pDpwM)wmp+N-Ey5az%vVa*br

<3qgh4_X~KfWaVoy-ck)K9%e=UVvYB)pSUen^gw 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 N>sNKv^DbLI{BMW!j8^~v literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/PasskeyCreatedTest_with-one-passkey.png b/authenticator/src/test/screenshots/PasskeyCreatedTest_with-one-passkey.png new file mode 100644 index 0000000000000000000000000000000000000000..9f04397e19637bbea6a1d459e6dd00d724b62ef1 GIT binary patch literal 40479 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 literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/PasskeyCreationPromptTest_default-state.png b/authenticator/src/test/screenshots/PasskeyCreationPromptTest_default-state.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab6bbb6afac9bf6b661958fb24764b43751441a GIT binary patch literal 104577 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 Date: Wed, 1 Oct 2025 12:35:36 -0300 Subject: [PATCH 02/17] feat(authenticator): Add Select Auth Factor and Confirm Password UIs (#268) --- .../authenticator/AuthenticatorStepState.kt | 63 ++++++ .../ui/authenticator/data/AuthFactor.kt | 53 +++++ .../authenticator/enums/AuthenticatorStep.kt | 10 + .../states/SignInConfirmPasswordStateImpl.kt | 33 +++ .../states/SignInSelectAuthFactorStateImpl.kt | 49 +++++ .../authenticator/strings/StringResolver.kt | 55 +++-- .../ui/authenticator/ui/Authenticator.kt | 10 +- .../ui/authenticator/ui/CommonFooter.kt | 5 +- .../ui/authenticator/ui/DividerWithText.kt | 47 ++++ .../authenticator/ui/SignInConfirmPassword.kt | 70 ++++++ .../ui/SignInSelectAuthFactor.kt | 109 +++++++++ .../ui/authenticator/ui/TestTags.kt | 14 ++ .../util/AuthenticatorUiConstants.kt | 7 + authenticator/src/main/res/values/buttons.xml | 5 + authenticator/src/main/res/values/strings.xml | 3 + authenticator/src/main/res/values/titles.xml | 2 + .../ui/authenticator/testUtil/MockStates.kt | 30 +++ .../ui/PasskeyCreationPromptTest.kt | 2 +- .../ui/SignInConfirmPasswordTest.kt | 126 +++++++++++ .../ui/SignInSelectAuthFactorTest.kt | 206 ++++++++++++++++++ .../ui/robots/SignInConfirmPasswordRobot.kt | 40 ++++ .../ui/robots/SignInSelectAuthFactorRobot.kt | 41 ++++ ...ignInConfirmPasswordTest_default-state.png | Bin 0 -> 43448 bytes ...InConfirmPasswordTest_password-visible.png | Bin 0 -> 48469 bytes ...asswordTest_ready-to-submit-with-email.png | Bin 0 -> 44736 bytes ...dTest_ready-to-submit-with-phonenumber.png | Bin 0 -> 45521 bytes ...nInConfirmPasswordTest_ready-to-submit.png | Bin 0 -> 43515 bytes ...ault-state-with-all-factors-with-email.png | Bin 0 -> 66502 bytes ...ate-with-all-factors-with-phone-number.png | Bin 0 -> 68168 bytes ...torTest_default-state-with-all-factors.png | Bin 0 -> 65403 bytes ...SignInSelectAuthFactorTest_no-password.png | Bin 0 -> 44416 bytes 31 files changed, 952 insertions(+), 28 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit-with-email.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit-with-phonenumber.png create mode 100644 authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors.png create mode 100644 authenticator/src/test/screenshots/SignInSelectAuthFactorTest_no-password.png diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index d8270d89..45508517 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -24,6 +24,7 @@ import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.MutableFormState @@ -94,6 +95,68 @@ interface SignInState : AuthenticatorStepState { suspend fun signIn() } +/** + * The user has entered their username and must select the authentication factor they'd like to use to sign in + */ +@Stable +interface SignInSelectAuthFactorState : AuthenticatorStepState { + /** + * The input form state holder for this step. + */ + val form: MutableFormState + + /** + * The username entered in the SignIn step + */ + val username: String + + /** + * The available types to select how to sign in. + */ + val availableAuthFactors: Set + + /** + * The factor the user selected and is currently being processed + */ + val selectedFactor: AuthFactor? + + /** + * Move the user to a different [AuthenticatorInitialStep]. + */ + fun moveTo(step: AuthenticatorInitialStep) + + /** + * Initiate a sign in with one of the available sign in types + */ + suspend fun select(authFactor: AuthFactor) +} + +/** + * A user has entered their username and must enter their password to continue signing in + */ +@Stable +interface SignInConfirmPasswordState : AuthenticatorStepState { + /** + * The input form state holder for this step. + */ + val form: MutableFormState + + /** + * The username entered in the SignIn step + */ + val username: String + + /** + * Move the user to a different [AuthenticatorInitialStep]. + */ + fun moveTo(step: AuthenticatorInitialStep) + + /** + * Initiate a sign in with the information entered into the [form]. + */ + suspend fun signIn() +} + /** * The user has completed the initial Sign In step, and needs to enter the confirmation code from an MFA * message to complete the sign in process. diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt new file mode 100644 index 00000000..f2dca046 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file 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. + */ + +package com.amplifyframework.ui.authenticator.enums + +import com.amplifyframework.auth.AuthFactorType + +sealed interface AuthFactor { + data class Password(val srp: Boolean = true) : AuthFactor + data object EmailOtp : AuthFactor + data object SmsOtp : AuthFactor + data object WebAuthn : AuthFactor +} + +internal fun AuthFactor.toAuthFactorType() = when (this) { + AuthFactor.EmailOtp -> AuthFactorType.EMAIL_OTP + AuthFactor.SmsOtp -> AuthFactorType.SMS_OTP + AuthFactor.WebAuthn -> AuthFactorType.WEB_AUTHN + is AuthFactor.Password -> if (srp) AuthFactorType.PASSWORD_SRP else AuthFactorType.PASSWORD +} + +internal fun AuthFactorType.toAuthFactor() = when (this) { + AuthFactorType.PASSWORD -> AuthFactor.Password(srp = false) + AuthFactorType.PASSWORD_SRP -> AuthFactor.Password(srp = true) + AuthFactorType.EMAIL_OTP -> AuthFactor.EmailOtp + AuthFactorType.SMS_OTP -> AuthFactor.SmsOtp + AuthFactorType.WEB_AUTHN -> AuthFactor.WebAuthn +} + +internal val AuthFactor.challengeResponse: String + get() = this.toAuthFactorType().challengeResponse + +internal fun Collection.toAuthFactors(): Set { + // If both SRP and password are available then use SRP to sign in + var factors = this + if (this.contains(AuthFactorType.PASSWORD) && this.contains(AuthFactorType.PASSWORD_SRP)) { + factors = this - AuthFactorType.PASSWORD // remove password + } + return factors.map { it.toAuthFactor() }.toSet() +} +internal fun Collection.containsPassword() = any { it is AuthFactor.Password } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt index e6379b75..e691ef2b 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/AuthenticatorStep.kt @@ -46,6 +46,16 @@ abstract class AuthenticatorStep internal constructor() { */ object SignIn : AuthenticatorInitialStep() + /** + * The user has entered their username and must select the authentication factor they'd like to use to sign in + */ + object SignInSelectAuthFactor : AuthenticatorStep() + + /** + * A user has entered their username and must enter their password to continue signing in + */ + object SignInConfirmPassword : AuthenticatorStep() + /** * The user has completed the initial Sign In step, and needs to enter the confirmation code from a custom * challenge to complete the sign in process. diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt new file mode 100644 index 00000000..d8c49bfb --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmPasswordStateImpl.kt @@ -0,0 +1,33 @@ +package com.amplifyframework.ui.authenticator.states + +import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.forms.FieldKey + +internal class SignInConfirmPasswordStateImpl( + override val username: String, + val signInMethod: SignInMethod, + private val onSubmit: suspend (password: String) -> Unit, + private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit +) : BaseStateImpl(), + SignInConfirmPasswordState { + + init { + form.addFields { + password() + } + } + + override val step: AuthenticatorStep = AuthenticatorStep.SignInConfirmPassword + override fun moveTo(step: AuthenticatorInitialStep) = onMoveTo(step) + + override suspend fun signIn() = doSubmit { + val password = form.getTrimmed(FieldKey.Password)!! + onSubmit(password) + } +} + +internal val SignInConfirmPasswordState.signInMethod: SignInMethod + get() = (this as SignInConfirmPasswordStateImpl).signInMethod diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt new file mode 100644 index 00000000..d0601eb7 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt @@ -0,0 +1,49 @@ +package com.amplifyframework.ui.authenticator.states + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.enums.containsPassword + +internal class SignInSelectAuthFactorStateImpl( + override val username: String, + val signInMethod: SignInMethod, + override val availableAuthFactors: Set, + private val onSubmit: suspend (authFactor: AuthFactor) -> Unit, + private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit +) : BaseStateImpl(), + SignInSelectAuthFactorState { + override val step: AuthenticatorStep = AuthenticatorStep.SignInSelectAuthFactor + + override var selectedFactor: AuthFactor? by mutableStateOf(null) + + init { + if (availableAuthFactors.containsPassword()) { + form.addFields { password() } + } + } + + override fun moveTo(step: AuthenticatorInitialStep) = onMoveTo(step) + + override suspend fun select(authFactor: AuthFactor) { + // Clear errors + form.fields.values.forEach { it.state.error = null } + + selectedFactor = authFactor + form.enabled = false + onSubmit(authFactor) + form.enabled = true + selectedFactor = null + } +} + +internal fun SignInSelectAuthFactorState.getPasswordFactor(): AuthFactor = + availableAuthFactors.first { it is AuthFactor.Password } + +internal val SignInSelectAuthFactorState.signInMethod: SignInMethod + get() = (this as SignInSelectAuthFactorStateImpl).signInMethod \ No newline at end of file diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt index 5281edc1..3e4c1314 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/strings/StringResolver.kt @@ -39,7 +39,7 @@ internal open class StringResolver { @Composable @ReadOnlyComposable open fun label(config: FieldConfig): String { - var label = title(config) + var label = fieldName(config) if (!config.required) { label = stringResource(R.string.amplify_ui_authenticator_field_optional, label) } @@ -48,7 +48,11 @@ internal open class StringResolver { @Composable @ReadOnlyComposable - private fun title(config: FieldConfig): String = config.label ?: when (config.key) { + private fun fieldName(config: FieldConfig): String = config.label ?: fieldName(config.key) + + @Composable + @ReadOnlyComposable + fun fieldName(key: FieldKey): String = when (key) { FieldKey.ConfirmPassword -> stringResource(R.string.amplify_ui_authenticator_field_label_password_confirm) FieldKey.ConfirmationCode -> stringResource(R.string.amplify_ui_authenticator_field_label_confirmation_code) FieldKey.Password -> stringResource(R.string.amplify_ui_authenticator_field_label_password) @@ -89,39 +93,38 @@ internal open class StringResolver { is FieldError.InvalidPassword -> { var errorText = stringResource(R.string.amplify_ui_authenticator_field_password_requirements) error.errors.forEach { - errorText += "\n" + - when (it) { - is PasswordError.InvalidPasswordLength -> - pluralStringResource( - id = R.plurals.amplify_ui_authenticator_field_password_too_short, - count = it.minimumLength, - it.minimumLength - ) - PasswordError.InvalidPasswordMissingSpecial -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_special) - PasswordError.InvalidPasswordMissingNumber -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_number) - PasswordError.InvalidPasswordMissingUpper -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_upper) - PasswordError.InvalidPasswordMissingLower -> - stringResource(R.string.amplify_ui_authenticator_field_password_missing_lower) - else -> "" - } + errorText += "\n" + when (it) { + is PasswordError.InvalidPasswordLength -> + pluralStringResource( + id = R.plurals.amplify_ui_authenticator_field_password_too_short, + count = it.minimumLength, + it.minimumLength + ) + PasswordError.InvalidPasswordMissingSpecial -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_special) + PasswordError.InvalidPasswordMissingNumber -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_number) + PasswordError.InvalidPasswordMissingUpper -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_upper) + PasswordError.InvalidPasswordMissingLower -> + stringResource(R.string.amplify_ui_authenticator_field_password_missing_lower) + else -> "" + } } errorText } FieldError.PasswordsDoNotMatch -> stringResource(R.string.amplify_ui_authenticator_field_warn_unmatched_password) FieldError.MissingRequired -> { - val label = title(config) + val label = fieldName(config) stringResource(R.string.amplify_ui_authenticator_field_warn_empty, label) } FieldError.InvalidFormat -> { - val label = title(config) + val label = fieldName(config) stringResource(R.string.amplify_ui_authenticator_field_warn_invalid_format, label) } FieldError.FieldValueExists -> { - val label = title(config) + val label = fieldName(config) stringResource(R.string.amplify_ui_authenticator_field_warn_existing, label) } FieldError.ConfirmationCodeIncorrect -> { @@ -129,7 +132,7 @@ internal open class StringResolver { } is FieldError.Custom -> error.message FieldError.NotFound -> { - val label = title(config) + val label = fieldName(config) stringResource(R.string.amplify_ui_authenticator_field_warn_not_found, label) } else -> "" @@ -155,6 +158,10 @@ internal open class StringResolver { @ReadOnlyComposable fun label(config: FieldConfig) = LocalStringResolver.current.label(config = config) + @Composable + @ReadOnlyComposable + fun fieldName(key: FieldKey) = LocalStringResolver.current.fieldName(key = key) + @Composable @ReadOnlyComposable fun hint(config: FieldConfig) = LocalStringResolver.current.hint(config = config) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt index ef00f113..9f378142 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt @@ -41,16 +41,20 @@ import com.amplifyframework.ui.authenticator.AuthenticatorState import com.amplifyframework.ui.authenticator.AuthenticatorStepState import com.amplifyframework.ui.authenticator.ErrorState import com.amplifyframework.ui.authenticator.LoadingState +import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState import com.amplifyframework.ui.authenticator.PasswordResetConfirmState import com.amplifyframework.ui.authenticator.PasswordResetState import com.amplifyframework.ui.authenticator.SignInConfirmCustomState import com.amplifyframework.ui.authenticator.SignInConfirmMfaState import com.amplifyframework.ui.authenticator.SignInConfirmNewPasswordState +import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState import com.amplifyframework.ui.authenticator.SignInConfirmTotpCodeState import com.amplifyframework.ui.authenticator.SignInContinueWithEmailSetupState import com.amplifyframework.ui.authenticator.SignInContinueWithMfaSelectionState import com.amplifyframework.ui.authenticator.SignInContinueWithMfaSetupSelectionState import com.amplifyframework.ui.authenticator.SignInContinueWithTotpSetupState +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState import com.amplifyframework.ui.authenticator.SignInState import com.amplifyframework.ui.authenticator.SignUpConfirmState import com.amplifyframework.ui.authenticator.SignUpState @@ -147,6 +151,7 @@ fun Authenticator( when (targetState) { is LoadingState -> loadingContent() is SignInState -> signInContent(targetState) + is SignInSelectAuthFactorState -> SignInSelectAuthFactor(targetState) is SignInConfirmMfaState -> signInConfirmMfaContent(targetState) is SignInConfirmCustomState -> signInConfirmCustomContent(targetState) is SignInConfirmNewPasswordState -> signInConfirmNewPasswordContent( @@ -167,7 +172,10 @@ fun Authenticator( is SignUpConfirmState -> signUpConfirmContent(targetState) is VerifyUserState -> verifyUserContent(targetState) is VerifyUserConfirmState -> verifyUserConfirmContent(targetState) - else -> Unit + is PasskeyCreationPromptState -> PasskeyPrompt(targetState) + is PasskeyCreatedState -> PasskeyCreated(targetState) + is SignInConfirmPasswordState -> SignInConfirmPassword(targetState) + else -> error("Unimplemented state") } footerContent() } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt index 381f4051..d4be20f8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/CommonFooter.kt @@ -14,7 +14,8 @@ import com.amplifyframework.ui.authenticator.R @Composable internal fun BackToSignInFooter( onClickBackToSignIn: () -> Unit, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, + label: String = stringResource(R.string.amplify_ui_authenticator_button_back_to_signin) ) { Box( modifier = modifier.fillMaxWidth(), @@ -24,7 +25,7 @@ internal fun BackToSignInFooter( modifier = Modifier.testTag(TestTags.BackToSignInButton), onClick = onClickBackToSignIn ) { - Text(stringResource(R.string.amplify_ui_authenticator_button_back_to_signin)) + Text(label) } } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt new file mode 100644 index 00000000..7ae67fe8 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/DividerWithText.kt @@ -0,0 +1,47 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +@Composable +internal fun DividerWithText( + text: String, + modifier: Modifier = Modifier, + textStyle: TextStyle = MaterialTheme.typography.bodyMedium, + textColor: Color = MaterialTheme.colorScheme.onSurfaceVariant, + dividerColor: Color = MaterialTheme.colorScheme.outline, + thickness: Dp = 1.dp, + textPadding: Dp = 16.dp +) { + Row( + modifier = modifier, + verticalAlignment = Alignment.CenterVertically + ) { + HorizontalDivider( + modifier = Modifier.weight(1f), + color = dividerColor, + thickness = thickness + ) + Text( + text = text, + style = textStyle, + color = textColor, + modifier = Modifier.padding(horizontal = textPadding) + ) + HorizontalDivider( + modifier = Modifier.weight(1f), + color = dividerColor, + thickness = thickness + ) + } +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt new file mode 100644 index 00000000..252a6f9f --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt @@ -0,0 +1,70 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.ui.authenticator.R +import com.amplifyframework.ui.authenticator.SignInConfirmPasswordState +import com.amplifyframework.ui.authenticator.auth.toFieldKey +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.states.signInMethod +import com.amplifyframework.ui.authenticator.strings.StringResolver +import com.amplifyframework.ui.authenticator.util.AuthenticatorUiConstants +import kotlinx.coroutines.launch + +@Composable +fun SignInConfirmPassword( + state: SignInConfirmPasswordState, + modifier: Modifier = Modifier, + headerContent: @Composable (state: SignInConfirmPasswordState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_signin_confirm_password)) + }, + footerContent: @Composable (state: SignInConfirmPasswordState) -> Unit = { SignInConfirmPasswordFooter(it) } +) { + val scope = rememberCoroutineScope() + Column( + modifier = modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) { + headerContent(state) + val usernameLabel = StringResolver.fieldName(state.signInMethod.toFieldKey()) + OutlinedTextField( + modifier = Modifier + .fillMaxWidth() + .testTag(FieldKey.Username.testTag), + value = state.username, + onValueChange = {}, + label = { Text(usernameLabel) }, + readOnly = true + ) + Spacer(modifier = Modifier.size(AuthenticatorUiConstants.spaceBetweenFields)) + AuthenticatorForm( + state = state.form + ) + AuthenticatorButton( + onClick = { scope.launch { state.signIn() } }, + loading = !state.form.enabled, + label = stringResource(R.string.amplify_ui_authenticator_button_signin), + modifier = Modifier.testTag(TestTags.SignInButton) + ) + footerContent(state) + } +} + +@Composable +fun SignInConfirmPasswordFooter(state: SignInConfirmPasswordState, modifier: Modifier = Modifier) = BackToSignInFooter( + modifier = modifier, + onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } +) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt new file mode 100644 index 00000000..e7baf5e8 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -0,0 +1,109 @@ +package com.amplifyframework.ui.authenticator.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.amplifyframework.ui.authenticator.R +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.auth.toFieldKey +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.enums.containsPassword +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.states.getPasswordFactor +import com.amplifyframework.ui.authenticator.states.signInMethod +import com.amplifyframework.ui.authenticator.strings.StringResolver +import com.amplifyframework.ui.authenticator.util.AuthenticatorUiConstants +import kotlinx.coroutines.launch + +@Composable +fun SignInSelectAuthFactor( + state: SignInSelectAuthFactorState, + modifier: Modifier = Modifier, + headerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { + AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_select_factor)) + }, + footerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { SignInSelectFactorFooter(it) } +) { + Column( + modifier = modifier.fillMaxWidth().padding(horizontal = 16.dp) + ) { + headerContent(state) + + val usernameLabel = StringResolver.fieldName(state.signInMethod.toFieldKey()) + OutlinedTextField( + modifier = Modifier + .fillMaxWidth() + .testTag(FieldKey.Username.testTag), + value = state.username, + onValueChange = {}, + label = { Text(usernameLabel) }, + enabled = false + ) + Spacer(modifier = Modifier.size(AuthenticatorUiConstants.spaceBetweenFields)) + AuthenticatorForm( + state = state.form + ) + + if (state.availableAuthFactors.containsPassword()) { + AuthFactorButton(authFactor = state.getPasswordFactor(), state = state) + if (state.availableAuthFactors.size > 1) { + DividerWithText( + text = stringResource(R.string.amplify_ui_authenticator_or), + modifier = Modifier.fillMaxWidth() + ) + } + } + + if (state.availableAuthFactors.contains(AuthFactor.WebAuthn)) { + AuthFactorButton(authFactor = AuthFactor.WebAuthn, state = state) + } + if (state.availableAuthFactors.contains(AuthFactor.EmailOtp)) { + AuthFactorButton(authFactor = AuthFactor.EmailOtp, state = state) + } + if (state.availableAuthFactors.contains(AuthFactor.SmsOtp)) { + AuthFactorButton(authFactor = AuthFactor.SmsOtp, state = state) + } + footerContent(state) + } +} + +@Composable +fun SignInSelectFactorFooter(state: SignInSelectAuthFactorState, modifier: Modifier = Modifier) = BackToSignInFooter( + modifier = modifier, + onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } +) + +@Composable +private fun AuthFactorButton( + authFactor: AuthFactor, + state: SignInSelectAuthFactorState, + modifier: Modifier = Modifier +) { + val scope = rememberCoroutineScope() + AuthenticatorButton( + onClick = { scope.launch { state.select(authFactor) } }, + loading = state.selectedFactor == authFactor, + enabled = state.selectedFactor == null, + label = stringResource(authFactor.signInResourceId), + modifier = modifier.testTag(authFactor.testTag) + ) +} + +private val AuthFactor.signInResourceId: Int + get() = when (this) { + is AuthFactor.Password -> R.string.amplify_ui_authenticator_button_signin_password + AuthFactor.SmsOtp -> R.string.amplify_ui_authenticator_button_signin_sms + AuthFactor.EmailOtp -> R.string.amplify_ui_authenticator_button_signin_email + AuthFactor.WebAuthn -> R.string.amplify_ui_authenticator_button_signin_passkey + } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt index a5e00e11..5df6ca97 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt @@ -15,6 +15,7 @@ package com.amplifyframework.ui.authenticator.ui +import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.forms.FieldKey @Suppress("ConstPropertyName") @@ -32,8 +33,21 @@ internal object TestTags { const val SkipPasskeyButton = "SkipPasskeyButton" const val AuthenticatorTitle = "AuthenticatorTitle" + const val AuthFactorPassword = "AuthFactorPassword" + const val AuthFactorSms = "AuthFactorSms" + const val AuthFactorEmail = "AuthFactorEmail" + const val AuthFactorPasskey = "AuthFactorPasskey" + const val ShowPasswordIcon = "ShowPasswordIcon" } internal val FieldKey.testTag: String get() = this.toString() + +internal val AuthFactor.testTag: String + get() = when (this) { + is AuthFactor.Password -> TestTags.AuthFactorPassword + AuthFactor.SmsOtp -> TestTags.AuthFactorSms + AuthFactor.EmailOtp -> TestTags.AuthFactorEmail + AuthFactor.WebAuthn -> TestTags.AuthFactorPasskey + } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt new file mode 100644 index 00000000..4a27ed17 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorUiConstants.kt @@ -0,0 +1,7 @@ +package com.amplifyframework.ui.authenticator.util + +import androidx.compose.ui.unit.dp + +internal object AuthenticatorUiConstants { + val spaceBetweenFields = 8.dp +} diff --git a/authenticator/src/main/res/values/buttons.xml b/authenticator/src/main/res/values/buttons.xml index 4e6a6cab..4991c7e8 100644 --- a/authenticator/src/main/res/values/buttons.xml +++ b/authenticator/src/main/res/values/buttons.xml @@ -18,6 +18,10 @@ Submit Continue Sign In + Sign In with Password + Sign In with SMS + Sign In with Email + Sign In with Passkey Change Password Create Account Forgot Password? @@ -26,6 +30,7 @@ Send Code Skip Copy Key + Start Over Create a Passkey Continue without a Passkey diff --git a/authenticator/src/main/res/values/strings.xml b/authenticator/src/main/res/values/strings.xml index 07db7eed..0924a7f8 100644 --- a/authenticator/src/main/res/values/strings.xml +++ b/authenticator/src/main/res/values/strings.xml @@ -42,4 +42,7 @@ Existing Passkeys + + + or diff --git a/authenticator/src/main/res/values/titles.xml b/authenticator/src/main/res/values/titles.xml index 213f47f1..5ac623bb 100644 --- a/authenticator/src/main/res/values/titles.xml +++ b/authenticator/src/main/res/values/titles.xml @@ -16,6 +16,8 @@ Sign In + Choose how to sign in + Enter your password Verify your sign-in Change your password to sign in Create Account diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index f5e812d4..2c2bda98 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -21,6 +21,7 @@ import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.enums.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData import com.amplifyframework.ui.authenticator.mockAuthCodeDeliveryDetails @@ -29,11 +30,13 @@ import com.amplifyframework.ui.authenticator.states.PasskeyCreationPromptStateIm import com.amplifyframework.ui.authenticator.states.PasswordResetConfirmStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmMfaStateImpl +import com.amplifyframework.ui.authenticator.states.SignInConfirmPasswordStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmTotpCodeStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithEmailSetupStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSelectionStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithMfaSetupSelectionStateImpl import com.amplifyframework.ui.authenticator.states.SignInContinueWithTotpSetupStateImpl +import com.amplifyframework.ui.authenticator.states.SignInSelectAuthFactorStateImpl import com.amplifyframework.ui.authenticator.states.SignInStateImpl import com.amplifyframework.ui.authenticator.states.SignUpStateImpl @@ -136,3 +139,30 @@ internal fun mockPasskeyCreationPromptState(onSubmit: suspend () -> Unit = {}, o onSubmit = onSubmit, onSkip = onSkip ) + +internal fun mockSignInConfirmPasswordState( + username: String = "testuser", + signInMethod: SignInMethod = SignInMethod.Username, + onSubmit: suspend (String) -> Unit = { }, + onMoveTo: (AuthenticatorInitialStep) -> Unit = { } +) = SignInConfirmPasswordStateImpl( + username = username, + signInMethod = signInMethod, + onSubmit = onSubmit, + onMoveTo = onMoveTo +) + +internal fun mockSignInSelectAuthFactorState( + username: String = "testuser", + signInMethod: SignInMethod = SignInMethod.Username, + availableAuthFactors: Set = + setOf(AuthFactor.Password(), AuthFactor.SmsOtp, AuthFactor.EmailOtp, AuthFactor.WebAuthn), + onSelect: suspend (AuthFactor) -> Unit = { }, + onMoveTo: (AuthenticatorInitialStep) -> Unit = { } +) = SignInSelectAuthFactorStateImpl( + username = username, + signInMethod = signInMethod, + availableAuthFactors = availableAuthFactors, + onSubmit = onSelect, + onMoveTo = onMoveTo +) diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt index 53d88e2d..38001881 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt @@ -71,4 +71,4 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { PasskeyPrompt(state = mockPasskeyCreationPromptState()) } } -} \ No newline at end of file +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt new file mode 100644 index 00000000..fe1fb7f4 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordTest.kt @@ -0,0 +1,126 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file 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. + */ + +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockSignInConfirmPasswordState +import com.amplifyframework.ui.authenticator.ui.robots.signInConfirmPassword +import com.amplifyframework.ui.testing.ScreenshotTest +import org.junit.Test + +class SignInConfirmPasswordTest : AuthenticatorUiTest() { + + @Test + fun `title is Enter your password`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + hasTitle("Enter your password") + } + } + + @Test + fun `button is Sign In`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + hasSubmitButton("Sign In") + } + } + + @Test + fun `username field is populated with username`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState(username = "testuser")) + } + signInConfirmPassword { + hasUsername("testuser") + } + } + + @Test + fun `has back to sign in footer`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + hasBackToSignInButton() + } + } + + @Test + @ScreenshotTest + fun `default state`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + } + + @Test + @ScreenshotTest + fun `ready to submit`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + setPassword("password123") + } + } + + @Test + @ScreenshotTest + fun `ready to submit with email`() { + setContent { + SignInConfirmPassword( + state = mockSignInConfirmPasswordState(username = "test@test.com", signInMethod = SignInMethod.Email) + ) + } + signInConfirmPassword { + setPassword("password123") + } + } + + @Test + @ScreenshotTest + fun `ready to submit with phonenumber`() { + setContent { + SignInConfirmPassword( + state = mockSignInConfirmPasswordState( + username = "+19021231234", + signInMethod = SignInMethod.PhoneNumber + ) + ) + } + signInConfirmPassword { + setPassword("password123") + } + } + + @Test + @ScreenshotTest + fun `password visible`() { + setContent { + SignInConfirmPassword(state = mockSignInConfirmPasswordState()) + } + signInConfirmPassword { + setPassword("password123") + clickShowPassword() + } + } +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt new file mode 100644 index 00000000..d38a9df3 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt @@ -0,0 +1,206 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file 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. + */ + +package com.amplifyframework.ui.authenticator.ui + +import com.amplifyframework.ui.authenticator.auth.SignInMethod +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest +import com.amplifyframework.ui.authenticator.testUtil.mockSignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.ui.robots.signInSelectAuthFactor +import com.amplifyframework.ui.testing.ScreenshotTest +import io.kotest.matchers.types.shouldBeInstanceOf +import io.mockk.mockk +import io.mockk.verify +import org.junit.Test + +class SignInSelectAuthFactorTest : AuthenticatorUiTest() { + + @Test + fun `title is Choose how to sign in`() { + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState()) + } + signInSelectAuthFactor { + hasTitle("Choose how to sign in") + } + } + + @Test + fun `username field is populated`() { + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(username = "testuser")) + } + signInSelectAuthFactor { + hasUsername("testuser") + } + } + + @Test + fun `shows password button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState(availableAuthFactors = setOf(AuthFactor.Password())) + ) + } + signInSelectAuthFactor { + hasPasswordButton() + } + } + + @Test + fun `shows passkey button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.WebAuthn) + ) + ) + } + signInSelectAuthFactor { + hasPasskeyButton() + } + } + + @Test + fun `shows email button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.EmailOtp) + ) + ) + } + signInSelectAuthFactor { + hasEmailButton() + } + } + + @Test + fun `shows sms button when available`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.SmsOtp) + ) + ) + } + signInSelectAuthFactor { + hasSmsButton() + } + } + + @Test + fun `selects password`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.Password()) + } + verify { + onSelect(withArg { it.shouldBeInstanceOf() }) + } + } + + @Test + fun `selects sms otp`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.SmsOtp) + } + verify { + onSelect(AuthFactor.SmsOtp) + } + } + + @Test + fun `selects email otp`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.EmailOtp) + } + verify { + onSelect(AuthFactor.EmailOtp) + } + } + + @Test + fun `selects passkey`() { + val onSelect = mockk<(AuthFactor) -> Unit>(relaxed = true) + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState(onSelect = onSelect)) + } + signInSelectAuthFactor { + clickOnAuthFactor(AuthFactor.WebAuthn) + } + verify { + onSelect(AuthFactor.WebAuthn) + } + } + + @Test + @ScreenshotTest + fun `default state with all factors`() { + setContent { + SignInSelectAuthFactor(state = mockSignInSelectAuthFactorState()) + } + } + + @Test + @ScreenshotTest + fun `default state with all factors with phone number`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + username = "+19021234567", + signInMethod = SignInMethod.PhoneNumber + ) + ) + } + } + + @Test + @ScreenshotTest + fun `default state with all factors with email`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + username = "test@test.com", + signInMethod = SignInMethod.Email + ) + ) + } + } + + @Test + @ScreenshotTest + fun `no password`() { + setContent { + SignInSelectAuthFactor( + state = mockSignInSelectAuthFactorState( + availableAuthFactors = setOf(AuthFactor.EmailOtp, AuthFactor.SmsOtp) + ) + ) + } + } +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt new file mode 100644 index 00000000..fec97e7f --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInConfirmPasswordRobot.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file 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. + */ + +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.hasTestTag +import androidx.compose.ui.test.hasText +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.authenticator.ui.testTag +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.signInConfirmPassword(func: SignInConfirmPasswordRobot.() -> Unit) = + SignInConfirmPasswordRobot(composeTestRule).func() + +class SignInConfirmPasswordRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasSubmitButton(expected: String) = assertExists(TestTags.SignInButton, expected) + fun hasUsername(expected: String) = composeTestRule.onNode( + hasTestTag(FieldKey.Username.testTag) and hasText(expected) + ).assertExists() + fun hasBackToSignInButton() = composeTestRule.onNode(hasTestTag(TestTags.BackToSignInButton)).assertExists() + + fun setPassword(value: String) = setFieldContent(FieldKey.Password, value) + fun clickShowPassword() = clickOnShowIcon(FieldKey.Password) + fun clickSubmitButton() = clickOnTag(TestTags.SignInButton) + fun clickBackToSignIn() = clickOnTag(TestTags.BackToSignInButton) +} diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt new file mode 100644 index 00000000..143851b4 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file 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. + */ + +package com.amplifyframework.ui.authenticator.ui.robots + +import androidx.compose.ui.test.hasTestTag +import androidx.compose.ui.test.hasText +import androidx.compose.ui.test.junit4.ComposeTestRule +import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.forms.FieldKey +import com.amplifyframework.ui.authenticator.ui.TestTags +import com.amplifyframework.ui.authenticator.ui.testTag +import com.amplifyframework.ui.testing.ComposeTest + +fun ComposeTest.signInSelectAuthFactor(func: SignInSelectAuthFactorRobot.() -> Unit) = + SignInSelectAuthFactorRobot(composeTestRule).func() + +class SignInSelectAuthFactorRobot(rule: ComposeTestRule) : ScreenLevelRobot(rule) { + fun hasUsername(expected: String) = composeTestRule.onNode( + hasTestTag(FieldKey.Username.testTag) and hasText(expected) + ).assertExists() + + fun hasPasswordButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorPassword)).assertExists() + fun hasPasskeyButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorPasskey)).assertExists() + fun hasEmailButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorEmail)).assertExists() + fun hasSmsButton() = composeTestRule.onNode(hasTestTag(TestTags.AuthFactorSms)).assertExists() + + fun clickOnAuthFactor(factor: AuthFactor) = clickOnTag(factor.testTag) +} diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png new file mode 100644 index 0000000000000000000000000000000000000000..f07df71c412b06b9da745b0b76b35ee462c3338c GIT binary patch literal 43448 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

PbKS)f2 zXa+4sBMaVzIBnidWd*p|u;9*Bwv9JCFZ`#4#L5n{wWO0q7jf_NnYI2$WXv<{{3FA> z2a@co5VPTeyOKqIx>FYx)J7AC4H5lVdZxv*>}>i&FkKn!)#980(_(I8#uH3US#4lf zEWP}ewSDCEk^X*E2y~#tw##$FUD3I?CCCGu;eBM5O2J`99~>72u^(_1tS zlnkB`YkM;dk^j6F0Cbz98v^oae-0cp`TMnO1BRa7XGwc5v7nj`nI?=OcYS8esl5ou3I?kty)#> zcZ*B(i>tNHzy?$Vi77droCJrVxv|^~g33^kc@J$|%Z;vUwQ--oT-~FVR$*WZXAgDF z%?d~Fn+h*r7l|R)#(RqzHp1TpM8M8Jn45pm=dt?S~S?A({uuG%X zURWGG$z6FR3{I<>ec*hJlK|Me=YM?53}O2V9SPUgJ2X&|rtSTz0>!W4G!)ZAalzvZR5fIkUI+1Lh8ihWP$7K0IKOKh8*;rx6U zA@az|bHBJtbxo9!tS+g1V=!TXY$0op2Tk|+J?-Km757sLP*d3y#S zRr?n4nO6P4*xqDi%Wc^XM!)v zw$e=$V8pH}9fk$f0^2*(_vLdU7T%q16xJME=rUNGGq6?P!{E=knf}!>F*0PcPTzxt zWP}Pol#g`5-21Ihu5fn4?TgKyqsk4y2XE1j+5?Bhc}3!;uhHq&>Uj*m{%7;dIwgL+ z2;Isu0*zVK&#vSo%c&)UGS29{X#5szckM9mgL|eaBqX5b-*+gWr>w)Tap-gfng+VY znaZddE<)%pHRlL}qwupzq4oJ*p762*o8UN8Fd=vK^zYqvxd40V$g_H^KR#3a^^BreCL1P@Wy9BDdG7=NNL%;Q`jCx&Pj70jT0#% z3t~>4=}CU-p2>$kXi+>$YZHEh5UnzzcMh5gX-k2#X}EV)FnZJEjn!C-Wcg{`r#`BE zhCySzoaCE9RRSa^^30}5!OqTjdtZJE4Kqkx4N)U+IHvl5Xxl@@D20XEF+UP%N7+F` zAXBtwF5I|@;+BdHu(3S4qhY49u*j;oYXKVBlTzvPYwuG&zbGq{l7|_!gpkr7&9~DJ zBvhi`a}nkIX5SWyr6rYIiL|h>1Y#Ulc8lt4iM1x))F2R?t2u(4P@q$T;wPGV{??Dr zgd6y-Qvx~Z2MB^<32F8>WV^hTXq)#Sw-uPOAKE}3EI_i>_wNu zY&=V7<=P46Kd*xIgyqBPvT zliLoNKzbR8XeF9ZR4S4An1yC!ax99aomj(<5eziTRl_RkJ7|>d{cBw1jHhze%;T=A z)aDLlX{VqChYDmMwoBRi(&|#4P3dUeoL=7+?ZD4pD!3`}u~ezZxlCV%j@G5dfZqIm z{j$KMA|H8A!>A4aSTv+5;_HJj92QNDBh(3Nc7P1wt$U17Q6#nX0|ic7p^ zpK-)tN{?|9us44#Es3RCBc2IcqT@gAmY+gtv-??e8E4naucf=upYC2m< z`o|waz5>1NZft=m@IGzYNeaOiu>u)Mc^Xs6f>A_*WYX^(?4>%`tdCnfZGX9VW`v`M z&)1&3F9q9nuC3Zf;6T2Hs+bVy(Ypn3f)ZJT76u7AiZXD55mf06>~`r%lDL~=P>Kl8 zQqu%+ZA=2N@BvLH0!#blOiYG_pN#1%Jz)+0n_ve|{OcgDIlaJZH}s$;<~~-i?l!-p zl%VeDB>s>;?oHhQyY}!ubWI5m503Kaj&{xOVTW!a0_KqPtQTbj*jwVWZ{+^Nnx}SsW~=qozG_f%3}tE*RH^PLx+^+Jal3N)A|*NkVDsx}tpTQ35qY z(1~<&DToJa{da@5kD34=!@j0Zr1eD9URBuTS5FS~7O3W?X1M5r8-M-9d6JvT{P*si zM7X{kbU0kw*W+N`|&AK*p!T9DTFd>-Id#JU2_zu$;7uefG>xge?1Y9$+Q%) zyWBzf)=&6$=K@-K7;^p^xOe;UNetWsJ+KhJJ5#@J;>PfX1Y1+%;EVGu(9K8cq5XkM zH+8vz=HN&gzdLu;>}(@LIZORXP`hTYp+zKsoZOXQT@boHm$48eAgTPEgu4Q6yZ`c_ zLf35c`&TB?e!u8rBFmD4W)*_1AjsPMKoR>EU-d7TXWc{!;B*763|Da*z@l2v59V!E zk~c0H5OMa!|O|qwTk8uzlgd)mv4@pBrTb%W(@X`bwWGKwX*e^%uMTrlv+-nV~Bl* zp|G463#|y;3=q2u3XxPY-c@JHbP`l|y3Oz#zQ{6Mec{`PG%$#YUr1>O4IVT2he+8o zE2|&+v7DBL*$9vJYfZt}S!=p<^+k-ocMP$0tNT0vNu0fyp`B~1loIYCu#ix)#a$hG z)t?0NEN+*cBFUP#%|&!=Fw>GVxiWXJOS!|jw!TXz2lvYc=u|Nn?BU;s(5?UZe`h3a zUpYJpfamHh%Bi|ELs0|R+Iu@4Y#)`gBk21TqH)3+#dfFayxP^fNd(oTqC5tMm5jeo z&}bxj%u&Me|6;AIlp-Cs^Bv2OfqJv~-UMX~nIIoFWl1;CtSgcaVYSn>t5`0ekcx3B z+Jeuy z{`bb5Ho?tVq4s+I(@`p2e<~gxt>m!J86gM>&OeO=-wonD0uCvesqa^?^5MJt-po)o z3R5sf25YR`oHaIuv6Iqty@;EMQY#%`8*-ldQU@^x_&UJIQPls0fTZ51oIyf1ig}I1 z`W2)`#q9>J+C5u>`{*m#q^nq$kt*&g7npv}vqKk7f{uFlw+_}(X3ENorXjA+vnYJ| zLm_(YXFGueb2&R4I9G!gAsvfgBrGj2*b`Fj}Ug zfO0v|(-Yn`EI)4Nq1`cxZp;ZA}lt6-_*41JBz zZRHcc>gLD(sA|$+Jex#(A0HV8_}S0Kd=ldDbY~$*XUjk0Vc(Ndgz8d?3>fRpDT&0s z4e;M&UD9f?@$BEEhV-{ysu*%(DHGq?9@;wocu7_=Wjd18<}0kvO^#4xRv;icW89Pc zyzkMNJw+)6-+utnN*HgWb>wReY}dcXU52?AuStw}tNw_=hsoV9pLln4aNgo)W#_BI z%zl%v6uI8~6`qS0Gl=*XijyU*TY%-g#H588!E*s3EO2S}G;(eG`2lS&ajFBPl)fGrX%%%*tl!)6He(Kf+OE1G28pX~Y)kihz{&`E~L` zeYh`?sliv~g#lrdXP`_Ih5L=3Z|_ZQ9@yd5@bx1_J-%8)1&8?l2_V^#;FJpY(T;J~ z_wsGkyI$uGo^o1RnR|f`lnfA^#?|`_*QHBpk&weKW5obTF6^x9Y_6e(i2>s)@)>>};KB+wcp6zkfVpSr>9w5p)M^-CNUEeh>Q>EQPG?ezkR_*e~G?}^7 zcZ`RSbLF(ij8C-9#hcIm&!1-p7!_6NPi9Gr#OrN0A2=T#VZ@gs7+X$Lw@)5_VcNKQ zrA~gV{#V32p!l^hPG8U2$xgeL8xrvTCwd08UTc!E%HO{TwX|-cJh8C9q@-X_Gr1HQ z(D{fyOColF`R%4<<+hxVRd0QFw|djT?RFk0#-c_fS+l%u^XU*3R=ByoSJIX&&4|x2 z6jUyte!y&gqmEr8$+oXP)@%RdSV(+SB-jb@8;tfqH8)g2EDFvo@8#}48nfs4g{+D;A|(e|LNkF=md0uLZl~mpb@c9no|o= z@)bb!6>6s9*vgg_0itu_-S}z1j_Exb9{!QqaqAj#ULIo4JV_SG-jwFTr+O*+-q?M? z1t24mBS1#8?PqGtd@d>J>}s-TldqoZs-cffv1p}}-B!hqI;xj)B^0~-Z|}6k8A+<( z*vRWYX7oU2$MbGKt>I5H)j?T>h%*15lkvw!xX3lkM!p-Fy=PgPvM;4Wj$sHY}+E1Xy)mU@o5iXBa4IlsTm`XT2$WKeC@k@`c4Ee_Y=(yc{_dYex?!vS@j@4ANxz)YdD}we^GXJcl+!45 zhdP%K#gx)m>X# zed>UTO7J$YG?f|T2eiYLNtSNPySRS_`L`rCj0=KX zvezR{x~g>f$%Y-6)84A(Kj?Sw*;?Xd?$jfTEbj7^?!dT4xC9R!D+l~$?EyjU^X-oq z<&TU0*r{`{JNb`L-=&WfO~X~hl45U*cfT(+9#EZ&@qlr@dogU#%dWVq@n5}M@q>Qo zz^(($L5o4+I0xP#qGU>?KWRtp6}#P+=W@VVAC_0hD(HmMDB=F?`c5%le{m_lu@|Vq z?oGClvw1dU$#&f;M}n`OL2b4vH2%gSpnY!Pl&c?Bm~sR_VFlD#ikBkwKK1eRY@+Zh zX-cqdpr|tJU4bdcm>AUQ9!)<}`5mhm>kMGAzJb5XN_*BQT*u&bzN9t^7$}0fve(vL zRIQ}V0NtusdIeaQur$5SqTpzJPzp1cjY>s{s~sc`5cm8LkaBL|<^8@hxvos-;zyf} zw98a+M8LX50@f`WoE!6|n1d;n-e(qidB7ddqF-WWB(OOdz)gH+e7U@gVip;Z!hQl4 z)oRe^r#x?D^spPSJV@A&RXDI|BWv&vGr6aXZHav)2e#+EMv|CWe6{WR9raa9!I{D6 zCTYJp{=Y&e20J3=oTeWD(;hZiG5s{e@-;)g#*5ntpGVL&9 zW~*Y_pifSnx{GLdz8raTMnW}}?qfDu^M%XsE|Wq4&xN92IEk7&1u@P{=2bp+z6`2n zBBkD8I=ga5yM*j()bUYZ!bkKRK;!b27Cwnp^i0^!KsHr6;|3NAb~Ty(j}IEfJl?w> z3jeWa=IpRwiUTHeA$FNsp1LSx@&`>h<#3pM?jk)vs^RFx#1qRT-iS#73}uAa{|+#3?F}ef9xvu(_EP1M_*8; zuGo7G)exibjfR1~nIA}^fflB2gpOj>?kvHlu}w66Je>P`vt7O*IiuhExNuS%eL7c4pI%P zxoC7@(*;s&iUS`<=04{!?G;cFRvTmepgP^aPhkU zxy4TVksH!{?&VFE&zNagN4BFS6lY8aaNFGh=qe%StMhalWjir>F<6`g1vd#9fdlUs z#sbG(o@wX~04)KjcfWd{g1QuB*OMBOCXG^HvEg-Y5~*NiW?@#PQB@jYGXIUxk6NIo z(a4?tf70XgrN+zDf#p7~eljJVsR=X`&k-`xbl{-*oDK6W7^%FAanm+2*4$O)nT6GM zc5h8#Y4z?YGwBxS)XFqYVk$CE*8#Dp(CZH9*|T>_II_w9swehLH2%jjXAkek<&}wR zu7)y%zq;HcpAidJ8hbR~yXLBDM|%wnG1##{r*(1|&wAJV_r{E&dIYc;uz4t3>m6_g zl^G6;h^cq4l!#jM|L368-O*(kTO;ekd z$uViB9$vreHo2e<&GlYR_(}SBb7f6Q8nW=k3{%$}AIRfbPKrcN|jriu2QQ|6sbkbvEb2gCUC zZg6D*{<^wLbQZmE3*f4uZN)nSxb0B(2+5hN2oCw^C+^YCR3>it=M5D!VQDbm-r)Gd zzTseqWb%)OkLaiO85yRN?#nkuF2BH^LiK2Wcl#B@2<64>k)2eJ`^vqaaalZ>KWnh>@bFH|VqF}57LL)G_-bTTVZAaDj!QMPu3t?0? zL+Rkf2cWp%ZH*G>8NV1P56|6VZOoiKpj@}UoxlLCzp_4JFxa}lfR(VmUcex%tBZAQ zxo#}hZRNVFuk literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png new file mode 100644 index 0000000000000000000000000000000000000000..104df59507ba28de040fbc94768f738cff28d191 GIT binary patch literal 48469 zcmeFZcT`h(+ct_b4pvk|ibg%nZNVOm+Rfpc2^Z-UWn8Xo8Iy!)KaHK?f?~q81 zNE1Q}0Wt&uLx30{2_z8C4$kwu@3X#t&RO4D=R51H_pj~3oxOkMF4uis_isl%GSKEb zeC99@4-enN2b#b0@a%{1@Eo!`$P4@>V)qv@9-bFG4>j)?2iY!92R1l6XI)}t2YVA$ zW?4a@EEp>U8?fwcMHq7TavlNK+2k^c}c`l@xsRO!!hs(V%$FfeA|eOl=1~V~4#O*h(4X%-eDDfw%LxBR}|#ZtFoA8@I8Xa6g3al7$9 zKjf~;|K8%bgs%^3U?z~eJC_=kii)e0d0r?3>neMGn^BLs!C4;UKwqxZ6V;1<<@xC8 zRY7Y%B6F(RrTno))}AAFsCLar>3~#=~t|;&KWTLEqkLSFz8CA-8EI zLOheVfh~`9j5-2|S6OXCFoef^_#lMm#pCO+wr+jJ>7-HVDBuOx-T!&Z z4ZvXRAD#!SMoVJC?F#UC-828ZLl>~De|~%rQqa@>>PXB1v7q-2%$d;MAG4!ocKsd^ z;OVw*BSSS4={#lEflSBMsm4U~Zdk}l?f4gL$eDt*Zo??Ng}Y4C0h65 zXI+`rq*49+E?6HV{ZP)KM7Uiy`wAmw$0<|THb|nlaBq?aAzC#nB)G)|&8`wQqk(05Imh z?qyf*x;v-Xn3hxzD0i`myPRdE-C2$8*Q8!M&a=w7com^)*TDe>^-^oXEZ#L|1&U!z zdiLtBaJ_aue6Fl%sR(Z#7Hu!3=F-4gDz2Wq)0sjKn#R!#Zp|l^)MdDR8&GF2ula`( z*)u6>gR`wvxDPFZxLu&Mvw;hR>~B>CuK1m!uuw~aq5NNDC5h~Wnz}#7B4C&q{~=8j zmKaEcUmDTu2x>oc>6FF}*|3_;KSM7IOfK(uC2VUB2_b{E_y_SOW;Q0^WVWc{YOl_?aa(7j)Oc`_$TfA4<8lEO#Jsp_v>k_~B(7>i!_KaM&rKMx zB>+~hQA}A}>y^oo?KZXYN*>)1pf1KK&L}l&bhHc>P~;@?m~wif?3;I+iGY|Yk~tDCFFR9Me2|HA1XByd)_ip( zFa684@>57=ATlLxt2$@rda-C{Y5h!koZttVzNZnb{@FGSs~Dlx+QOcuN_SK^fGC@_ z@}k#b*C-VFxLr=1K*%(z1`^Arm&Hh36J;mnY(HtdVH*SZTw~B+=uG0M-+I0bym0%d zPJ&!)jC9k-%|2K4#JFkQ=L03RW0vzJ@qR6Lx~@k7Cc<=9N{c7zsxE+hTEHNm6LYEy zkF`aUSA=uY+-)?9OY1Bl12%!v$)og>cWx_p-|W4fII57gIvD;YUa)`!KkY!nsxvB~ z7;jT^hgSpahg^TYTLJ#C(IA1i6=P>dq{Rn5A@B})xpevc2BJ9!;Pe&y8REv_yhF>V zImkmMA1qyWyD4SHmf7!vkOO&&Sa~-(Ll&%N*4~lQT(f&T*myW|y1J57OI6HLj~B!Q z6|j$;&wlM-ppqWd*6r6alU!gw=fhd>`I2^)|5P4kSDhL6FeUsvaqPP)8&i zG3`I@?8FqvNtkxocU1Ca)DD9n1FBDfiOU%{KV)vjU^ZjW)Q+aq{1esRhhYpNa<`-| zW%H;Zb|QpQTHQ24+SEHp7ICPe_TD?LRs&mjtU=qx>VbYno$kotxro#NP`^P4TQ(iB zk`r%#{%#r-xy#0*JEFVQ4NM+j4fENra(1^D@m_^KaEcY)ydx49HVp14L}jOsGS=~f z2ngs>!84Ss_Pf+w>@I`Iv4RX-=Jnb{QBrd@J1=s^MkY&5@IPYL`*D*> zwHI1<{lUMngfW}^c{);JWTDPjP~(n(F8mX=dsP4mYXPL^RT&^xCTt6bVpX;j73@H z`d`Q4mkF0TUG*{@lf^F4x7P<1%jg0m`4>vRk$@a_+3;Q@CTf%E6o0GW=zSbZ=ecw~ z*1{S)<=wneH8~wXxKT`zGDv*LEI-N;i+ZZGgS=g$KSbGSRMHT*+vKAd)*|EDpFZke zpfxpq5I(o7P22r*skIg>7Me6yK<8$zRD@LepOb}evU=1a>upnT}(>}bC1foCQP5>BzD%$)7cv?mi_vhGnKHZ;IY$N}I=IJwe-LOkgk}(rX zT~6)Dj(;}c@Y>m_^9*0>s$Ko!)%0*g%v~*`>MvJ|pRgm$gKm}@_J6Z?nko&c99s#dl#@W|3AAG&>JXZExsi8uaB>yqhAD^;g z(A{<3Imd@?Gg+}215R4+Q^%x%RA*t6crYR)OI_*nIw*bh9_EuD3?UWnhiP({Nud!d z#dMUlHs@uKcwgFx2)kh}-qYH?M)JR6^2Gw1K(+~3@CZ)fMu9L!y`Z+R@Gyk5_6N<= zTG_ywFTd~)x07}sa63+2Y&R*~q>iOsl-;jRF1nT)$s{le%hzGu|D;RMtdBwU7kssu zU+ezPKwdU%n#@Blm@M$2F zXRZj#3G>2t=FBz?;Y&t%5wN$VmGGTAxV|X!vo}juq+Am7*sr~hgc>lxPHJ&V3MgCQ z>H{GPBgqA~KX|{n_98r0;?GskzCcSei>aJL64R)g%j}yjhYOs-8>)26PZUcV6zkY^ zL<6|^yDNZ|9BI8u!l6|xo4Yb<-uc9>k-~;2cFJ1iukcrm1fiNQ-o}Ibj2BKEp>{b& zkd<1c8&k(3+%!M98+c+RvgbB7X}!Ug;};AB-O`^;Uo-Z!e1Fp=sMFltO9ov0O?;Oo z4g}k^Gy@Z~>}p5Sez{-Rq*ulRUaZ>H;`3VA35gGIW;7 zYKcy}Oje)G4qff>XpUMeC;O$^1mG_g+gM{`)AqT0Wp=+E%deYoj5);4bMRHgg!L^% zzqzW0$V8`%nFujm?>=B2>Ojk!Z-_K99)_u}y-i4xiyLOy4k%Mfpqb~mdu~B`8CN(= z?RB;kcbxRL95>9YdK)i*o5nSb81DxSjX-uBl^)2w@nF^7EEqufC)Yrr=&c2d>4wgY zHDK1(N7s({^esPN#_^UAWD+YQZcko+)u88WsS;`atEA|)jV8(de@}VCQXoGgC=*sV z;a8$mTS6e-wsx0vu^PEAH{oe&l=#~bp(j{ACJ~7=wIT;tkT(2YB1nE2ez9%?xTY@u zzJkGF+v<;ZTWrNQKOK--1|mxSoMuPXsugp}chET}pT;WiPfq)hc4C+%%iZg*c~0R7 z)cF8h4Noz5o3$&3x-PeAUC(|uM#pXB%Ob#(z%!qLS?W_XJIkTd>D9I$V7l1oE9~j? z=^DsJI!$(zMArwsmHkYs2CT|klSQk|g!3Lh!8ji;fUW2b6U_NzD$8%; z_-D62CUni)?tAh0Afzd^%>MiU-Vl4}h_G~@2cTm*ogF%pG#vP;N* zc@0bVELBF+4cJQx>wtlKri)heLkLf5jhta;<(_laa|Yw_6dzT%xCv@sLEF8OtdZi! z3HEYo-sQdh1K|Lu8GG$O6ws&e@m0Um(fL~0Ti)wS7f!BiiT!> zl`&6)R`6HfOc%Oyc3wV7C;S(3kZUGP%T#!{N%qUS;%RQe4G?E##h)BBY%(lgkQnoE zJA9Y7aZO*Q@~f?~OQc-}Zt~nj>ZJX7d7IUS@$wC$i|RSUbGE_r$rd&?)>-GLFKK@L zDx)bnN>Xwu!Mqid8N2w90&LHtR>t39$EAII(*GEv+~RaAqQQSbI2t2fEAP_Q0IQmm z?F*HhS=ZkcCo>u~4su~i^hN0jk$^KR9|5f5fIeX=WL7ccwQJrdn?C)xq?Iv=4|;v} z*@J-PH)F3JXJdLIuU(P1SpW~18G2r;jMuRgPl4)DuIlssF0$djB;^t>zau%bV&>S^ zJ#qj9@@{Z|%q$g`XOHqpW;btMSE9D8M{@!GeC!{ozn$Q-DIyyu+3E*I7Sxle7dw+L zLnhsFN!(mL9{qs1H@oMEe5@sMhhE+EbpsEoHzDAD12@~;Rk)kJ0V}KQK4W3yT<}~f zyasY~J=;xr=TfJj-SFfcpxWcwl~$6N;?eb26~i0z%CRaFZk7b6vyLHtA^)0;$Kk6@ zz%KMJHWPPNOVH!(ar%Sn1R{q~;(e<3dbJ*e0n|fTqrdIVhD<&zVE}$WX^OJH;lkII z{5Bmy7t_MnpYLo>A|ndjV&`>+iB=+8#Hjv9Vnb=YG$p)8-&Goa4s^8*t%+kN7i^RKe|AFGj^2*O<+BpSO}KK-Gs!Fp`UtW1Dk zFQy0|l~)_&V%zGb$0Zf*hw&5IXJMMA!uvr+;?T1IgMklfJu_l1Uqx0p0#nwK&xeKR z_89{xMJ4)x`16YA8Yt55>10mFeo(TKpi~*@WQvTpWqoc&!`g%LVjlWUQS5V4)TOGO zxgdJFfPs=jJHs25rg_h%oW1O-q2dtQx2*H)pGvPTilY9R1Yr7+#k4#&hFHU95N-_C*1ypbQqG3aF0pe&P_|#;gS>aqQg$F0cS3J%A5{#WnMJUF0?z1Ds;(D zHvQ7AV*?lf9ziSiw^WQaM64y^C#K7IBqmZ>_H$qF9q;dE4+NqUM@`bDv8PERQLn`j zO2t%{q~Z@70&)*YH6=g=Rc`J-YSP=KhI1O}a=o7!@g`m_7A7Xws`K#rN$VW?TieQf zLi>AtlqG-wf6ZFaM_+#Gem9vgZ;d*URj4 z3G2d`j|H`JZ^RV2=^)upIarC-DWF2g5Q{uosH@h0OPjT1$l+E9&gv%(mUwxC9Ir>p%H`AEOD$Dn|B!u}}VM-3#nSihnqAwzu%`9e^eIGj2#f zGbLwL{Em*LVr)a^6J?i{Y<ceh3JYj+MpIQ{{5j6Qw!5;82Iy&3B+d0FFq zLLZx@cm7u7Vh$1wi%UZsaW?3F5`Q|!hZ;N>Dz#h>6dFkc$>$%5Xn>P)Wsm1m9%!By zM@@9O-U}f*?!58amHIcZ&^)sm4sZgB#h@erD~Y_?D~LKO><)GS9?;HBLn|0k^fed% zf7wocf!*J8eo0OVYLI5NGU%ICV!x0T^zF(nz-6ixgSwe$W-GL>VN%P|EST0MT+Mnq zZWHLtok{xm!-LZZ|AcXs(zxQlJpV8esfkpTKyTQ{V{QF6wh~Vs@lWPq<9@r1>kfvU zt?uCkL1i5f*}G)^!%n8}Ko6rd=EOC=KhA3^?QXAMniBd$8*Y(UOu zUP?y=HOfy*SLDL;C9VIWPaGy>!X03|Abq~j?_-(z`5UPYNsB&L6>K8F?ePtFb$069 zN=R$TWX`mo=S!!i=KzYm<+~tnu)8{b8AUl94p5Ks#gt1szcp9M{|4d~$q>{1$6)h` zHIVDoeK#%O)+QHADVI2_>0>$H0f;|pGCcW}x}N_KH+e$BK-+u@3qASA{U*DRimae|Q5f zSkmHykj#esa!#Q1^J=F%B}2$EZvk$o#O{v0$dG;4DK-LdbL`PvRix3C0yGBT;4+@( zkT#Os5KHx4GSOsoYp3s!yiMqQve|&g0sbS#1x{VRylx#kbP(3l=Z9(dT^pzbLheWD zfWqQDre8U9nt+FK@7mv4d8dt<4l7vRmG1?ZEP&pEK@7MPy_*5kF|kC>1TO+REN>%m zVMfM%8h}@c=Dm{etYLQTq(`wcTj60j;^gcwkPe0p)$>&`w7KXbj~(tnOyOT>WwuiL zyQ5D3;qIluACXsXaRSgW0BhNUA?#POv1g#2NlSh?Up@b7kP2OGbcJY%%*Q<0o;0_q z0weq>{`8j{LEP;uQrJ0})AaYtBUL-BC_4ijtX<;u**`}a!(Q+D&+&y^ho-GEIZO=l zV=-9%MwO+z696~OBewb?KgkFs=wT1FBD{Q9&CzKZ3F<62Q^JKavjA780LmTqT+mmZ zyR7;3CNwC`cHf2P^kTdIC82R}MrWZvnd2WekRD~!$g+utxD@5F={E(`1%~16m#Mwp zDL2LZ`rn>F(Vmk8az1w-%-!BS$Yb90b8fL~ubz(BpBKV38h8o_Ip{ zg;JkqlkO;IjMD4WDDY>vM|!%rBe)B}=L#hPzFGyROo~9m16$@q=gA6W^}?WdfO+bG z?tWdlS)RP1b2b?uyX&Z-YGo(ZV(hjh3H8$5hRkAXfMd0Qn*+(M8LeRicKVB)vJrMn z`7*Z>g`TVhW>1?cVEf@}822u^Xm4cXzvEK#WQ0Q!)44C+J-wFS;VZyKr;egX(b75W zsl}?DYe0H>p9A3M36~77s#g@LT*8MyGOXjW-9c?WNV_6ts~?JSYcW)s4Ic=e(oTcGGjWqWt%xx94SC+2KKafH(PJ{9-poUg>PNc9m~{ z30G%aAA>ySJBc0KgoKv+?JlPHw1Q3Y#m?BQUyrL+v~2q}8Af(FI~5q>SbS6jvpE!D za3kKSfYkan{&CdcU=2ED^Q<2BW9OB-?mOqW^?Q?#2pt~WecJVjlgXH+XDNvrh<|LI zOrS6bJ~F!+ZzD*1{MFz|VW?j1rowf#fCrRzU~04T@p$!Yw4IBS>BEprpcDb}X}5%peMK3;k~b{cuB!Rf1BsV~LD_RD zQ*L<~W48-c=97%7oHmC2lB1d$e8gE_Uw`4rbJuz#<8>Tzbx0LUmf}+1y>@Rycd}mJ zaXn!TaH4VjELq3h0;#8{tbi}^W&rp=F39EdFp6WwRSl*Ak{|KtI%azfzRO_Q=syAK zNkNHE2LSRPn)&oc+W}X4tLFES6*ce|vU_sZR@$3YkkmRlc5uh9#kd7SQiw9D9QKkB z^9jlLr@Y7N9fNRHqn|{j&((rS6dMxd-an0o9&@6U*018fMfl}#%gAHXoVuCyY~~Y8 zcD&@7sR9{lN2JzAqTul+3xJWTqVWpG+0^^8LR%Nyy?)m9m4oW+Bx=G2hSj-{9IC zX}ggHr@cDNtpV>4;gZ9tZ-=~iiRT<$u>9I*-%d;atua)S3k)y$_os-A;qmK%B7(3qSy7Nm$B4s_w-8X5&mZdShCAN=B;^UA%3lbxx6Aw>%k|yHhK*`z+5BGNvplO z(Eb+yvS^K&Xgh#*sVMQjS+EYwl`Cc|4A?QJk88GDdjZbx?i>euSH)0bTb^ zjLWsLN0GV>tAMmNpEMIAgKkiDzE~=1ygeDx!KawiKMLrdR-7UsC+%EN@wCR~-(h%l z-IspK{+R;mU&`0Rq8GOSru>>6##|*oB-@ELX@0w6Jm2@yweI-dSKW?{w0Z$-Lf7R% z6>3Y>K0^xOqg};gVQPxGoJ4k5kaPf`q^?ob+R+Z}&37~(oRaV=fe9S((CQGCaL5!I z^BE!*o-_6orfp)1oZYEfGv;R5psRv0^+KAJd^h;_C*0=j=blK4C!BWLV==? z$G+#{#EbM)sa-&R2)VlsqMXh1uZaOXmgk-IOTLd$wNk?iieo|#DQ?05dgi&_xF7Vx z$FZ$FHS4j@^SLkkD;KmZb({bFB;?k3uM&b9O6)yDq>ow26z9W%(wV2?+ev7}NK`Lr z28e9)&KCi1U3QGQQFoaO7+v(K+;W`sR$Huxf%VKs#U{X_G3Yz+Ad9{X zMH!%LfX9A8;D4Gp0CW03+Tr3>ou}%~iTu`FD zQ!Ju(VY15=&8i*#^|)G+m(MeNvY9^vk4UkpUIFg;l(8S=bb;#`FK8#Bv2VFn&(p12 z0oK}U-4T&#>lV@1uAl*$y6|z0wFfZb&T*hqVo*lthGo*|Q4+wQ-B=C%`w!Brw)hQO zfOdki&)EXeoHW$v8^ab4s@P`wg(jxhh7_v0EUzyEG&tb^ZBxK7DPgzmwV1T+bEg(R zwrqANXX{z!Yq3?ev1{cmmVNNKt@uS~TcV*0;Q&~0@D?!6VFO@Hb4MZG&2#aNb2sX) zqJPBAtI%gD*AVp+{^f99^xkO4^r*7^D$%EfYGxM*uQRl<_Lo{6OhD2pYnXBjxxlfM4|1JZ-p$$`Pq_vmx-_~&?&v}NC8fXnYK@IlCj#PSEg`Hl_)M_6xL&Y_)G(lEk z8BIlWnT*?7@d~1H;0Bdz3CQ8XsM9C-_XAaQni#F2xG9SFjaF$U#m)q5`HcWHc1Y=ET!_H*NR75g1;-^L&?8=rmRBNW(EPD(cUuv2 zZ9L?G=W3d-&tgriIEQ40zam6`FX{4nO5W2HqE*h4-#iG@AZ@%Ul0L(!aUo;{tU?oH z&rORBC^K6O^fPV$^gd3vKW}iv-ExjpiOoqp0STWoP`*`s1ZJscf|K`jx|;0^IMuV4 zao{uB6?t{I zi}&1BbhX&_qZ9pXG8KeCrAvtFfe<{SFzDZgcebtD17q7--Aa(m7hQ#ps0p zMn;F3yXNXk#mc!o0z-G+w{>R)PMfG}RN88X*crvBOr#bqK7T|eN&{{*Z4kO*bk@H; zs;kS)+QRm|#LAV)g4(ujfSR#B3nx9qACZ?P(++@vZjsLGugp;&)DhG57>q|_#X@m8 zI(-Es$2-irv+a`Qf9dDz;D8A6OE~Lp)@)4g4LjS~3kK_vbj5Zv^j7Hrqe~R3H|neY zal=O#XtYe3oB8hl0c#K%Q|IPf0UOV})wMvNzG)SiOPYCoXFH^n7??hCKWhnRb^SXlDq{@V(i<;It81<0gu9X1v|!= zfW9xESq=~FdPX>0{2b$Y4x9+c!XaE+F1Wifpg8qhmxdBB=wng7H{w`nWhQM}*0WCQ zE4vfH?TV8j86*Zi(Ai(EYanzP@9s9JOx=ctCbHaxV9F2SgqN3cuCF#NW)I^ARTEdN zqVCHVgGpDf(!J=qZDsX6E_ig<8TpSQb!f8+7&G%$me;fauCOo9-f7RUUlam^#M-M9A5jlMUbXszyunfp--i{;Blsy7J10fl^=&dCC*}By;M|;fh%lFw z=s|dk4ZxgolgH=SFeuK`(Zw9M_Bu1$;M&cFFGNbLfSCZdE|$$F8z$>91Kn5(HAuJdT(L7}1u#;1;BGD59GJScyYl?4KHyf6-DKAiqq4AD>xPaZ{B zsHtF7Qf{|y06Y}fk+*Hh6LVU=WP2{>)S~TE z2e1!kn}k%DDFqr>Xhh2V`XrR*CFh6G1TYKN} z?Ep(JPG|pJvJwt(y)JHqku^9VzJ)R%!r9AsJR_}0p{={nH3t{`a&amUSqGPDCM|g? z^Lc6vJ=NHJG!tp&xUZkCNKhq|_aF|4|G8opb?$;e!b9f6`wvc_OuJ@=+Sb7fJoGCn2?%yz_TRQ~ zG(Gw^BSXR0XM>F^hmRvO6{==aFjmExJ>buihlez=dU34l2~BR<KiuV&CuSHcTk;aaqG3OI*)g48Wazp@kxKx*)(J3rSzYsWgr&x+7VK2Sdm)7~oH214d&b>-@%v8>2qZ|lIh zxUQAJfz_sfdm3N?$?irVwRZs!btHPd(DCutpgzSZKVKLX&J-?hWmuZZCDzio^L__4 zA-2wl*L|+*H{L_2??<|4thj{_PtxQ>C{W)5NcMM7s1LVN<9X!aM7_ZUw>&yt%dNld zb)gr=wbt*U+{?9`JadVe`n3Wdw3gI+(5Iz~**y1L{}!uVyxYK;8LRTQGE`)eyGHuYC%Y1Jk-?V5t)8njKtlmibXb z)MmMv$m!x7IQ!_V?{a0A0)Tl{*~`@y@WjHPDVSC3Le!<~&mQTjTO&pS43Ly&S~PZM z(746Ba?@i6EDd;CwHHwJ2m#MCh5g-jKp3c?>|unJdRI0O);DkkGtH6{B4H-Tjk!a7 zaE&nedZ44`I*{5hq%d*LgF2*hqfgl*YuJ1;9^I?sgh!K*iN{&bWXCGc>CJk0!MC7-PKMD=MeO125OjxDcS373GnaDma;30W5Ri%E5W6(919dGY+HbG4x ze*6X>JWRibr9VZBeURXWR2|L z6F4)i^y-6|0D6py)Nq*6SZ#3PmdURE{OWmfV8~R^TuE8a<%Ce>mvJx+2CNmB^W&{; zVT^Ivp__}q!2~A_&gR^&<@&z>accah-D1FgG6N~o=59Ljioqbl7vQ;gqi^`qvmIb(TR!Bca`Al*9?xJBeuyL$PF3H#i* zsxv^??s4Nr>r~!c`Av+CZ|NbnrcuV2e53PN$sxAF4XrJpi7wgmmazh?@N02-qf~K5 z$zw5QL)hNxqPZ5;Q;^}T0EB_Wp?@#u+*MH%xV6nUplcTNc{-4&HfugT<{8-wG*GoS zQG6a*KkvEN1++M4j3ziHVby^A8oOSZukp#$$EgcC!TdPqYAMC-9sw5eDovpw@TOC$KwBT(<57%=720Iv|_e_O~CZ@dl<+qoZ}bW*A!}Jn7X1yKdJ*_)S7B_<)4Mdb|9I9@@~{rB z{hfXUe9ECIEUu|XodLsmbCae0)Ly8x)r%o7hV)nJ+#NyYEV}l-AG!~^? z_!^SR?g}(zdAsN8LwY>Yt>OI&0;_|zq141tuJyUEqi4H8t_u3Rhad&OB2)a2kbSu# z08fGC&tYw@qma8WEi+T5YJLkEOxINg%I>6d}?zzH9qIn16Nx}8AMKi1!m`%N|HX(QXoa9GyzC7 zY*&Rs(ZHGDc6DL9XAeyi&(L8gl&>|SOVC39;>$NdnRM1yz@dPMQ1+ke9=Xss^TwNr z6;-Ylc7(KZ1Img(HqbyuI%3CK3y0@!wKAG0+#sR<5zg6K?CpKqee{naMn~^d!j@ zNBzeGS*uO}S^D#ihUKDS6~i9`p;W6DPKYfK=y{IHge+$x@z09-fY3L#cyIjg3d9a@-dk3_bhQe(~XqeQ#+rDjT6(3}hT0Ug1_c zuN8EZT+dYg{&$Isl&47rZ3H)X3gp$Qzt|Ix#K0Lg7F^lnE72=(KpHZ+)UO_z=v8-3 zNSzJ+$?6>Be=>r?hW{s<1^nVuhFF$jdBg02RkTLdQ^zqoB5ZuxVn=Vh$^QJ5f~!F# zK7imV1Kh|X+w#3KciezYg#i2WbO)~CEzucmOivew0VyB&M>bgoo@_7)ipi^I$W zH9NlAN%-7Z636teTn~Rbr%~SM4qMqd?mSodji0-gdO(2?y9ChW+GlgT$}`lcm86(v z@sUC#o0o8Euw~QH6#FM2Cng=O;vR z9e|FBFE{D~8C#pjLR|?)3958G7$tZ8%W3gJfH|y#pWy#EwKE|wuXOx+P?7lti(;V< z^fGn(1vBzfzOX~EQ(IjEgK9Zm;@!nDLV`?n^!tXLxJnWcx00M<2QM|Me;=U7-TP19 z00iomWIxxlX!m`2eXMr(jo0x6^&P#+fhboYWG!bbYw`!xj99U`?R`MVbsC~VK=mXu z)qz$Q>TK8URz}>V*mYqF^l=HI?@Cvgp?dO4;u+`IgQsRHhXV2y;?)!gwvFG*Ze=y~ zt~LUC#TI=C<+miM`k>y-0KHX5@@*Dn z-koo};6qUqEdc#@6)EC?_!YzRQ5Jl3 zUXB;VOJQ~-s_@KQ3R1bTT8;4#n_y&7^yBcwIq%i&%cs>}VnYA(8Y?1-@P7POH7$|jG{ zp~$#ZVuU+|XsL61T)Axf+Rr0EdAF*>rOIh!{3O15wz6~HyLcrzLo7tTn82(mRv`>F z?vz18ca*4G9YCo)sGc&~vNq}2RexNm%4qz?xk5mv5|}47Q~N!x(t?U7%}>;k4=Yv* z^$>l~PAG#tr&0wxl@A2f6yP97T&z1wB3TTo*anIu*Su=SD>N;1IPUhW2FE+`*{(TL za$2kiciwSKyWam|S?c=jMa1*PxB`u7bv*dPP`MaIk*Oj{2&_gP37Vb&NlsJocY8}gWU(7bLu6? zHN11!?$U?*c!ZIfmNlbx(ud$Hy)-3uBABojz=H|4Db}NfG01X8`2n$H zjqK2eu52)0ilhEC=I{PD62P%c!T~;r<4$6cH>S6&r*2%|q~dWL5X8R@YIxOaS1vhV zTZckzY&of!fQW^gw0D}-l@ZiHZ79l1SqbWn~yPe zyW>8J(&`nXW%Gs7l^m^)cVB!x1r0xVl(d#dzxHyZOYq@`J5&YVCs(^aj(vzUf)x>p zcqClPjO$CE{TQ0}qJNrIIj~J(oqgi^63QXbsoX!xZ0K<3Vr2?2*Bl( z21NJoGy8`6JhC^qv~wZL-)nKUxqOzwP;0;O470bX2IL))PGepWYzb>M&KcL@l#dac zGFRS?8AtFzmLz2(dkfIT0VW9=nJ@%kg|beWJ6bj-0&L@y;y4_1=`VfN_y)^|P!$%- zDjG=pHPyt6fy9(J(6Lrlgn@qeSu(@eS|PtE;f2(+I$&C6dWB1*wN^5N`w0{t*+gsE zP}1lv!h4gpZaJV(kv2|Kr{N@8Wx`Uw*yqlCW`c^%D){9jNoR|GbovguvP~Vq!yd5> zzkD%HcpOESBl)F&j7k&kT?q{u$C{Ut`BPd;g~Z^!mKnk_nDjx*L-lH`g)?F~#8RYN z#eABu-x3qO(O;{274Qf89KvG}UcKVK$Dc?=rGW-pr&Q+<1s*09{4p7MhAh8_)ZTLi zHzz(0N^OpDv|R|-VCmh2F+!112C!gF4{A%%_O4f5Y&zY=A2Y{6K8o{BBPI@7*8TbE z$*{HldS`!_`_zPxXQXjTv<>-FZdH?x^)UwAYIV4=yjqNmmi63!ojT#xTqV8gd;LQC z*ioP*agIaHfD#Mi?*EQU*V*wGTR zRdfXV*uK5!5+h&w>LxYKwfB`_aZ}G;Gzp8&_I|xCll9dqUueUeV_)E|UjYNqm8+rO z{KD%+7rI;SB751jq{0vrDuVL`oGE&pjDC$L?E&Dre@QH#yZ2n#O z3fv8)ZV(m4K6&KT01z~{w!3IWD`3xD0$Bk#04CG2rbC;tbmRX^=d5COhEnNeX%kSj z`BK6jX4FGb#GgO8YxsL0t27W8uZic&IDbRsYoQ-Hgj{Xkj1HXQo^U1e!w!vZ-1->9 z%Su#PA#72ry)&}n1dhCwZXTDwqxHu$ww9s0g=cch)O}|wihTf-vsA63-ZCwQXGk5f zdtP{yZc|CNvle|%c0Q=^zLuCi4EjXgoR-FZDG z)$6S~N}~O(9O&-bLb2SFKIs#e(zjC|zV$9wT^o_hqBYyN=l2x*03SKHzf^tsDj0V$ z8)a*jeyD>NB;gX#>4<{eBCxB(_Eg6g`R0?Z z^`*o;mGRT>*H@|uV?KKlrTvw647?Ymeh*Oo&ujkgESk%Ujq3hIpqRp4+!33sqvpQk zdvW^Q4s?Bsm*C74}E_U+sAxXb_&G_wmTu3{(H|Vyj=B;7Q##JP64FzD%Z< zvJvV=Kqmm-n)-k7ak8nQ3sY7l+qt7(kOc%0J(gOH7f~D7db!&y{K7hL$^_HA*mniZ z$x4nMd`|c58aLba-Xgm5?c@{h5g2geihZ)b=H+;)6M1+-Voski`S>_$7vk#_L}q@i zgNp+JyN`$LnlY#dl*j|>)a^rmXDd08I4fFpBMg@rTc0( z{?sWl4dlBxC^MkG`_gf6haod&jSPbdJy>eiuq-W6+4!6r-CN$&6vSv`ycYZSOYeoQ z#vP}gk5?|58}60v^$;=mIU9Rfn~pejImLL5tt1kvcvp(xa|%50m-bE}x3eH16Y}6+ zdnGan9QZM9*%3uf|I}_0X~6LjmwNqfxj|JURiNj*Yh_m>l(`QO)rg0XbDfkC#SAYz zoCt+9Q}jvlsEPPiSg&%x*ahh}k(3Fk0Mf+4{RO%QheD|zB4;$U&)xRZ6FhlRbm+H} zChrZ5th3E_Y4O{Ax8!^mA=9^*h{g3S#L>V3--SlGj=9C%W|ZotJ^eeWD{kEmgMg2D zE7@A0TSB&@E}ba{&Y&7XY~{Rg`XOGvaNt`FHrS`Ry`SSYw_NNdBvo7*3jVM5-aH)Y z_Kh2M-=(xjT2K=zcSS-fqpX#XY)NHbqA!*fmB@Atg#@f`1aJbygLdmOL79LIdkcfQwoo!5DO&d<4gC+bX{HyUyS zc}MC*6j*4mX`88TYaya8eaJ-?smL6AS$h7{%7+x`f|D)IG3xc)zHdoYFW_Ba+FYDF z$T}BF1&$7mQ|wh7oXZG2BXUT1kJi`j=cHC8!VAfy3&n^cpunMB%6+59{vGbntL{KC z-e2SmXCm?hH?<0#>|FfRIRTXF^-Ik4648u3(dx_h^gewWXPbgH@PdBF7eNCHBrn3q zT$kWE#^?Ss9E#ghZtyfXLMXBIA~?yMeY4^X8Bri5oy!#fOi%@*}q zcF*8>wvHj5uWX^vK1UfW%oe%umDE#@yCU}Yy}`ARFlq1WWQTCGy{QX*Bl$7GOG;%U zZ=g@Am;oC<#_CHaOG>A+iRfi^9%25SKDcyhBqg3hdTLLz1zP<8>s*a%ij&m$T>7U^ zA~_baj~hLG!J*0_b1p5b9~{@)XCN0!CdoElSNw@d7A)L|{hDZB3HK83uUCAmxdC(R zB~QPhs9mJTuBiyv+|o4BLSNFyXtpN1T|S7`(mziTMs=x!L!dmFr65b63RD$b0oFc9jKg`U1CxxA#B$ zd+{ztqVUnW4aU;k?_rQGmBbaTr;aj6_lIV?+O(Dz@hh$>Y|svj^ozF*v}z4lT9&S> zVy36cTND*&&5KJ9P_+I|TmVBwSPZA@7kDZM5oHMS!OUOsw|VvN6;8~P%C^7n*LcD` zkJ!xy57!^#1=wkXkScnhl_=xIi6$g|oP3g4PRD@)zc{2eFm~$@V1$UrCL8T<{vj(O zd9Wa(Vow4ux_QSVrC{$?3{m(1rTTk%q%}9yyVJlb30YspAuF`lfy9Yb5;p&vt>$P? zc)tad{yik6%^A%Msl{94oOH>Gb(ODxRo!e-;5=DqP=}yX5nq}e8{=?E2(5X}sUeL; zSU+Y)tGs;CtYO_zx3?Rh^}J;ERZz%w#d$`Dw=lR4V&he2+_32J=0ufF0r%NcVU?)&G6O?yYs8GLo!re=@F$g@oefCtJdHcs9O!jNbJs z_SbSHbSEuFDU)frTA5>@Kc{FSn)r) zO|toUS~I%4I6x5GG*Recck9|PFNS?F*nfxztK4;=M3nyC(tkfM zpzCHRhI=`VKy!*5Uoc4to_Zfgzp=7r%SY-7lvj%+WJGLv2E}Fv;5vNOJ_rLgy~3av z!9(+nl6dH@+}Pc@u@Ez+@PWS3_*lpo$_+M`aTjCuR4l~Iwz*{Hl!b#GYCI$){p+h5 z*$?R@MvIX1Yj>NSMsdBCp#T|gdOlozNZ_ z=C+I1?RX`6qI=Wuv{Ln6_>;t-em{i~GGe1n7bsx0mJFl}lBAa>Q?CT$LW zooEWOV9OxaJxo_Wn`Q}5U+&u%CK)G5_ht3HvLhrZBV_)Ln8Ejhwu48&luRx(A#uj$ z*~TD^H8s;^TD7D&xsZu?z?_mVatpxlbN}!s_B1Y!3kG8;ZP6GHKXOze>W-dgV|bKc zq?mB^Z1Y8Z&&Gvp6vF+#*RQ-oTk^wzalx)fv%LmU|IUxFD~om>eS`ud4JLaQ%8QX= z{r(QE=?~XD9GXfClWOOVUC&(9{`@l3hDrbvJ*<*y)F*1ovUu9)#nduru8?IS%XuX7 zYpX*WwOgU@rgDLj=cz~YlA!!#nr#`s4l=pO21#10)WMRs)0{=6qO?mB97bYO9y$h!Zqf>e5s@vDw)lK7bkT0#Lrg9W&N^{dS)P$i{8{060NYGpboo~Ac(7u{&AvOevKo!fKfecno~dXY)K_rd$6&9(Ea#; z;qLn`ylM$i(fiW|*)KX1ib}fL@h8yPfk{G#Ym7A|+Lnh=`Bj*Xov@^uP%s@2bUE$p z*Smj@FyK*!VXX|>&_ARU+f?7Y);c0RME6fptC-x?D1@1p?CLl?S?^1gDpwSS4$R%r z_F9;$k%`tgtgdCRjS$bcfb4^fFkb3xfd$9cVAdW!MG1eIy^L?XoKoI)voR!qE?mEaoXfHoB-CRAOWBs&wC`ze*-ifT(SOYODSEcD$ zev;ecMn#87T61I0R`siGZH-gNub;&fT2u7~Qz{KHdMnCC1zLg`w3-cO*U6iRSoz|_ zCl!c@xq<4k%!Y3jQ)%U=v&A?Kbu zoqDjlYA8zX0624F8e=*4v4NJN8Omxq^Oe=oweBCJA{k|hdKTT;Pa0pH8+}#@zYvN^ z=q&xx>sp4)ZGtFLIKx_#?@cQt6`n-c!5J;jBs}`O^_ew?L#=L}*avFxjeQjOUFnARyhX!d$@19-Ro4CXNK1$oF<${@r<;_HZ%j6 zdmTZ2SZK>^N%olt0Px}gw|~OL9B{$h+Lcgg>U^N+NzSpFtS7!B&ub*iNMk{lP0r-PY^_S}b624}X@F{6h~okRBFzE+!LSYLX(;OSqQ zdl$1){_5paTJUt-bd0Dh4Br6eOWYGu9-sCnbt$zE&VpOi=*yWdHU|QSov~t})Xt4}vqIM+9iXJ@O z7Ux`)=)-9q$#{vV5^^&~1@%bWf1*V91~3n*DZRBUfJ@3Yoy{PlKvzEFjeZ~_L}~0zaU|(W{k9%~!3qe#&o%rnoVn z|7Ii)VknfuOt11kPPgM`1i^RrS&uu3mAR37zj$d)_r^H~k_u0HMeNtq3ksgkkZz4G zj+8WX@+Kl_y~yL%yka|iQ5G0d^uk9~%VH(iDep8Y@%5ec(zTPXDBSV^SJczD3*xqq z>RikVdM|3vA!pQgVUuA-+Z)qc-TN9g{`2Jrvyo z!^euz^A!k7&*FNbIS!r3KihO8vxgF{a;y`{S^`sWkb7Rm?rskkhI?#I0ag+0OAv^1 zt)n%+l)MGD8q_Iz$PK)830Zv3pbSTQZH|n|-Kl&jO-@p{)3Bst$9+emC%reSfFU+%r~1LgJ)1SU08enUN_fFZp>Up zuU6$5jM<*aX~aRVs>u-x2Or~BWl#!QH6Dd98y+buuKgES64$3Q6%3~fhNue{jYKcd zHh+zOgY!`ds(j*wj-114{QLc`$E;;8#xWl*(=|? zRHe3Oplbx3{C=q4ZZNQtVde1pI961_rt%29O0HYGl|b8XI@ATXAvl2OzL~08mGV?@ zP2K1T((ou~(xM_eLGaiq%rS_nJs-2{-Irwl_gw1b-xNlM+sP&e>(@m5NJ@cmPO+e< zlYD2nv3vPl43-jCKCp5i-af8kS9IEp1AX8)c{FGJ*<|zzfVct9NfM_-GY&A$=qk}V zO_HI7Uu{zZ8M)w~C|hTtJ?OQXf6kHuxtZcI-LPKBftojs%nRM9S`*b5-hT}rE1lSt6j-K$XuScI7Eq`|1&d4EGx+}LN#%bKp zVZlA)^JZMeIVv{U_t0ZYrVIiAjbe55Tfw|u&;~`xORQ{}!K_F{#$j1HwWgd3!--mE z5oToxPgq&65Q#zlyRg%u`~@6eu~Y5T)M$oHG)4{}bG~`!Gd!){*)PpDs*!_(F^wO)tf|dH(Vn~(rzDP`f=*TcQ75Wi9U@!Th&kjx&ROCwSwhfUL?W?% ziB#-@U>1RrU-g4C$9P$Cda&*o%*(@Kdd4)BruL)srR)&*Q{QHex4)y3gjFa)oDTVG zT>Bt@-j;q%(4_T<>1bd4BvuIO)OZO6C(RelP4Pyr)L@MZp5dIDA`0yK0UuVV^*wE+ zVlqLIR_nqeLPF`odXZykK= zY@jAF4ImVC zoiZ^Rk1J5Xa_zQ>CDYIg?3H@akC_PO128hkDRGQkqrCrsotKQ>*^eg|zKkzIDLu^V z)eU;JMBKCyuhvBE>(l0tFdgt4_<8mW(}t(h3J?C~lj>y@bAi_4ifpUsxeE9?)9l83 z31ZJ?A)UX>6!-nbw-|dp&rG!k5F3wP?=Q`!Z!qLo2Hd-r*24~TUvSemzucJe8GN9XV3O56n z-*(6yjm$Mn<<7WRElNBS?W#di1LE~=K6{|M?@g1*zAL{EIbp$|T3K$>o^?PS6!$cS zkADIImG>7tLR7cgg+I3J1SLFn$DtP|W#p06hx=iJ>AF^_tj5Zhi>#2-WPNqB^DS<% zGsW#ViWAkVU(&ztIi_Ir;F~86Mt@1LmUXO`^t}@+VIvW}Wj4`~d*u*ak+R{={?BIo z$NmvJg;2ebmOSGRx$x;`@7H)&b0g}*N5hkcQrtGEKbQ*41uJq*K_QVvU`Z6ANjfrH z^kQ=3>}z;WQ7hLS@Z&!zFnvI-=2bGi2Z@)*$4asYIulx3KI~9Iixd zVt%`IN(=#+&C42k;UpY2Q#|K4DZVVb6!!0OMt?|->GY_|%kZAOV#8xE?#ntK)*1KQ zmZrXSq(n}W!;=IP6J5C)U$)0u#Hy3Bd_v58 zvvM+jfZ>>0R+a@=3L#w5V4}|d+VC`CusLb>${uY)8s@%5oKo>OCCg8@*u&~O?gvx} znjWeV+RWy&uHS4tVFmfhPv?&Oep-6dXk;7Ii{Lhb{e%Fj^dFyi2PE&Xzgezrjd6vG z(t(y@Y95EPqWXR(8lv_$toxMz`=1^kv8=v%9*>Q>w+$T8-=r6qS2FrXg&%spV$HfU z?1Nkf-?}m9{)_wsg`a`Xe!=>SrCF^hUPpwuZETYdXT#IxhkB~qXR3UAOWSQ4JaISZ z(f^Alm~{G@cZF0~)oEt&U1p@908F}Ql#00pff3oWm z4xKlh%aj_!G0O?jkAEi*M%Rp0v;m*!xCDCuNkU!Q1ow#A+pzAm^!cCpr(yGZ5Z(^= zd%tYqe=c|&{zW+m-`4t-OQHM$bbp?xB=`UJ9FBjG63C>#UK>a5%_99wxF@{sRKu4C z{!FWHx3qSRzxpeA{yp!=W6K~`QOSZGF`=`O}bI_OwX26IbFkPl~clhTbA{{Lxn-c2h(-ABRTdHnEu*V19` z73GFz8neej`s64Dl&OOM(Q9|u6L_`)ts|U5{>uL`8I9==`J`f2wZ$x!U!C!Gj_psy zTXU%&3Z&Ssx`L3wh()On1Gm5>$N6tswI}o6F4}oF=vB|AHIa(hrCziApB4xeS3!1D zVLZFL`#~L2a2u5&f1KE=#V^!<=^qk8UBK*CFT@*~d6aa_^ySOvSxvL^>-`7E8KGf& z9O~e-{xXpb;D0FsdR%@i!BZ2cNEBlA$-Y#mUnnN4{ylFAuekVMTJ(BwU0XtQd(IIT3c884qb z0V@uZFB>z4r8TW3lR3GmQ7h@*np-IVP zNZrCLjnv@dRkWPSHYV1e2LJR)B;7^xx(;i%iidTN$>qBk;iACLu?+uNwIhpf!1dGG z5xZxb^`(gn+C#Uq>j6{Cxmv*qh<9<=3a-jFWKJvP+tV-7u$+l=$3R<4i+%7bZr7UV z_WB**`o+g{(!L%)%(x%>obtX{k@hi_)x+WOH4^3y&dkoCj=!IJ2;?5`V31&_-!@K z8S`(!ILjD|VJ%8{9g1*lx^`TLzk8EMmS0PUjG8jPOuF=~hv03UxO{88-MqUImaH)l z#dIA0&h%>2x(q%{IG+wRVSb&w-nR}i(ueZmL>KzEYF+$wMQgf!!Kz=wKC0Exd7z7U zmEGs!K6?%Lx!31*s7%?JD!gZmOgi=nLRxzY3ei4uYsy4K!B-EKuGB1^!6cq4%rI1) zxQij2TAmqy%lAjfLM@*+yR0PbYP@%PSRUaE49uvDd>EbNI6OGwP%u!zn&@56-^!)S z-R)*N;N4)k&Bi5@I2o7g(qiD_M~m~Khd}dwZnJKQ^7L##Z`fM!sjpatueC#b&b;Gr z)|LGHkgBeM-t|8&%(7LxJLSoRt&H)`9nv1bi!UO}MEEUw5|l4i@vZ4*aX!IoR1pE@E7_($$g@H3)>$! zf961NSzu2k-qlM(Aj*PJH8%*3u)~#PzqvZnGZBqT{nhjD-De-HX!60&f`YJx;n9r(zY zL|?sJ;{8@8#??zrAWDC-=W&vBP#(7-27TEts9>c*1ahV&bPMo1Zf5ILe^f!> za2tc^`tbvIW0m%+e-QR4bhDKeevC#0Mn+Y8wuF#LYP!q$d2-=b{- zpT@*U`vpuChAf<+y&ifE_ws~+WT4*<6h!va0Q1dXe}7ilt_MJujTga=H=Zf?;}%Up zbLx44JQfFLXK%;(oIw&hl-ear&FJ?sI`xvu__!%wJv9)DuvV~pmB%HqS-qWXb=9Sn zks0~o{Gy;QlkViZi}@l_{|3)ehwnSC;qMPSr=hE+mJcU2%E#{mXm@+^OSR2}5qzqd z*opKLR|-C=nMrkR7q-GbJPVd4GyFc@;XPvteZ{E6`+c3rb*~cwQHT7sr)>?-NHJZO zhQ7e8@HGjSw&9bzrKh1YPb!mSK~3+`V|+tbpvbmpS_@fpKsnFqt$BTGs!_hUa>o}D zjTI*{HrXciR?XLHOP!46U?ZDTA6?rug$4EI~2r+lHw=XLS z{L&PkUpAt!XZFPN2GFeNjTX2V@wS+tlHUqmY}U}+V@lW?l<}9NhE@5@{kXfqO-!%N zC!J)1$GUwW>bWPH{?6o##F%2M3j&yh1u->k(dvcPQ`8S}&Wsq#zL|(c=_0H>8qrD= z*P079)E2$hEsYBwgNobQ7X}Zv#ijO0uS~s_z8YlbheDdv?KUb=78_YFkTpMhO5D{i zfN=OAWxiWE+vSHy#g9~L7iQ#_P1LKxRV_m|K!;Ymh8OIml&@fyC1gR?Mpk>NBgPs{ zo)B#?h&pCKEEET|U(lw7zfQ{yrR**IxuEr1)Sy2WwD56*Yk5CIh5T`z2Kw2kb9p_E zGJ0Veua+v}DksBztd~0FNp_~%v|IK4r<$E#I%X_~qn(Un=jq66XN$XTUII5~#B``> z3&`qre}>r&6h~};qJxM!WvaUcnv;+q`5Ci5H6&NfZK4f>xCY8U##AU2HUnZqZIX#t z5s^kZ8R9K%WbQ`KbQpp<1HUB>?zjyVH8pCU?`lzQf_nJ`(E_Vex4qkr3057{eA~(}h$3wPk zJrKeD3U}~=X#@feHyo27f0rhPX^;nX2!4?C7NOxg=+fv4bwNE-`qe+g($etkZ2rAKSYlGd+AuIC^*6JufJ5 z8*0J$wQ?|Y?>m1_N}8KxOXN2Slt=U%bPj1qW%r>?4e|DOF+@NKEGk;?Li`q_o1V3h99 zZ)Zn?0VY2bUoZRF0650sg;%CSBJ{nb*AnZ#lEu z<6h{ufxb@UQ4!FT5hbFn4!cnCZ$H!Or&YMC;P6+1ke2pv0V7S^{sMEfD2B4(hIJSx zXWe#>d&n-E&X%c)VvCpq4Yz?0Y7Wb(>k6z*-MQ1lD8(;e_5ttm^Ub)Ea8EJJ0;HI#`ry`&x!!plJ7K$t5+pQ^t_8;5glZIAz$TaRuo zV5}sSt~8H`DWKA_J`t8X4wVl7b$jX@E15jZE68yi{z`)X3|au!Au|F1jq7Y#H=o6* z{N$D$D=KjM6xv0nO%iU4<=oPiKTHuK_X^zZm`*YmDM&&4=~ldLvTz}i_zuo6M>IyF zBerslz=umz?(Vc|N9Vw>`yB$e2LnbjeAoM2duW$HZi3Vg*S? zsoqv00C9u!R+=Y^s^K;~04TD2x@=kCcIml7UZY|0^`BoC8gqyN0hjj_V!E_LqF;)C z2J_f<-6-ltfr}6RAjacfsqrX)F5iVqT1*%sH4LOh(S4KMj~T=IDNiLu1fI(M#F4QL z%^&=VEeN$dsopR!hv>!Jg#Tp~#BARWNMa)ul2@~U%g!?t*SyRM;$TQ&TTW@g!PlAb zm9z|N4(Q1LMF_PX@F^AHvt1IkIk>JG{Ent|pqZ~GoqPX%SE&deyN=p*lZkbe`}2R0 zM56Vm_NLzT{BO*7P8GD41>*nFT@Q%?kb~p%1bbZ?L`HyI%gHsADij5H{H_^4zBzg# zD~2r8v>u{VWNpV=Oa{}v_kfRImgQtw6xhU*db8xTC_*jtVEx&@_^>#+trlf})gj)^ zb}hu)+z0%c=2nAqXD)jIcf_e*6Z2l{AMjs$=UgFxRI5}ZRSQAi@Ix3aS^ix~M3clz z{dH*%Oqh&Im?TG;@qgdH7+=F*4EnJ9NO_84Z}mp#fIXp}%a1^$`H?{hoC5-r6MwG0 z0iZnJfqsMjBiOn9@QC}@oabF?HNL}&6rmpNDa)VH)j9Chgz$8|`oY+iGH!r|M0|r@ ziQp0N>C(CGcQAguMFYRj4-CV81a1c1&9FL+6cD({P~-$bg!jF`td1s`UA7H=2mUu(FVPfwiJ)OIk(3R!9{@s z5xZ60`^%S;g${y#3wx_NEO-2&>vacy;3jL(U1>Iq^w0Kh*R0=2HwmY+obZapm%mQ1149e4j!u9&6S(7g2r z{aWwinKOW=oArwGgW+|*IymyAm9o6YTBlur(fop(JEkk=t5H_R&QC z4Y#DbL{XL9-x-Q)eaeyR`a!z2eu^62Zgezf+T{yF|&^^d^+cSLYh4{PU*;PkY-sOi|}2NN{+M3+gGuD@MDHYeDb#%LqB?bCvucH86n0 zaGynqTv@dBL#Zs>ZO!*e3Ak3lyKiwBgnT-FoCoZ8`S5kio&}cpBJaKssvn(EwZp8yvwwm01&ky&A3%-(Q}#J zKU?e>GBj3D{QavrNVg~jBCUP~>PNx*Pz5B+L3EV3rG6G$K;Oo{S-+1GBB0HZCWGiw zQhX8Oz&Vc4Vq;U2P8?XY>MHiou0uF_b0z1>%Y)`-bn+^^YM)m?M8Nql+5s?F^JToF zGd;fuP<0O7`!{y>E7sL;3t{VTu$&{#8d-o21pm93c6&=ehg7LgJVTLb_BR76K0hDX zts7Ks!{b6ob9}~Q=)J2eV&x`XCQp@)#%Iwv%pO&}JA4)@KR4dNT)}GD{U;4@n;+P} zP5^c3eY5lCR(R|@lS@xUqLD@q)gy$UYU z`Ze6M0IEJw&WM@Q&cnI91yMsKF3Zg*;1;i~s?<3V;LI1dT9Zjq7Phn@a!blbYK2d? zFr9wuW2(o=7A}0b3bwvt=G9Ea&fZC5oC;g6s^1RbJ=Ke$PZHSPH#y6~E0BGS8>;%u zH0K!bUS%ClnohLWDWa(q>H;7td{3ALOL0b=sTX*27@{I8V**n(;BIuE`{Cns-kjtu zqYT1|-{>UC1Q1+pA>UriIqE6w+`YA!o8!HfLcW5f^srx?V-##XRRQ>VJ2ZI`(!G^jU5hg zQiKr`!Bfx2=aF&6_Fb0Q`&cp@2Y>C7nlV0P)hPx=g3*by5E+G<`v?6*hca9IOTYJK z^-g*LK35XiuRv1rBIuLr6_L5UK{_2tMR4UEsai-ELptFU=XJ{6Y|7UIe`jGWZDO_0(Hbq43a?8QI?Euo1S;cX+5jcBmsut^ z&^rB1;bS}OXrM5(nXx3`nEB(p=m0)L>HV14%OBax`>kSHpZw;cF7NPARYLD)W=~X9 zz#%f4ozCh3EoA%^aiwZ)W_G;eaG!9KGu0t#Px#zk1nvDz(8sWSsJ0W?-zXG4IB}wM z@oUd@o}Sy|N=SiyC`Lae1UG3LxP{et;yITfvcscs^ojrM_v9$Hanw=3msscsL!qRF zzh0jQGpCMX!OJAi;bwtNaf3uakJXq1jJFseR+egpD1Dn)B-F zwkPo3pu|0q z0N>FLBj8;0j8+V2b9wQOGH+gJdu_LET4+3hO^Ddua5cNo4Nwq_A;0>PLH~&5PNG_{ zy9E5@X28E(1|ho)7<%yIbT)9}5^uf>;M=gT3oF&FTBHo6 z+Na4~j+tzOswN$A&7`nR%7U`OSDoPGdHIk!yHP*kM<#s#LUuJ@dnvo$+jO{s&kg}{ zfmtNj%ha7*>256?v;uWPMVxJc8=y|zZEsuc-C*LWh=Q(5UgCoWQClw%alhHEU%N#W zgw#cx)sFa7PQ=m;$RrA@GrtVF@9aZ9Q=@>$wk6lIMocuyvie)16U+)72wHIQXu?8t zT%|G!tEHP^4tjMDc8&>qkJo0$UoTeXGi>$fK<2vyiDy$&c_b_RR&`RNngnMSc1PQC zvR=>aGW+<>2E(Y`Cx_b?NQ@r!m{J(y0Oh=X-x5A~c0%IiIkVL0y9Ocb6DPyx#-5Sj zrS)(6!o*w&&IO`RDw$0eLovqxInRK8;#+ObNBLxb*IO_hQ7J)~dDYkfv(G(?CfWDz z$7D@oQnNGo?LQo?l&oJG61L}$#SQz9CVIodmbkr3UMIU=S*X7?d48PJ5UMxhr%QPJMcq!5?h~C*p1f zOxk!-($GO0Ic`AXIDxWGEa3PgFO`4aBiTLU^F->jNUYw^8jBj)cw+^6U9;$K=nNjt^Q%=t{? zs0_Ari6%MceqR4j`6g(m=mvg$y30|}T++Y)1znB#X1scERD}}mXUJeVo%m4zEc{gB zOl;+@qQw*&GDUDC?K= zEt&})YigWWH4L4waxsK4L520Q`5i`^e2&(nF}ir;g5Ue@w`3&>yx> zFVNQ7(RkqE<(||S0z>-P+_y?~+nLhl=8MaTbmMHt;kmg}8jDueFGa2Z-?Lkwu{;Kp z{*EDEimuB-=oyYv9R^CI)Bv|bB*b`*V^v$rxeir(lmbMO}tSO^8QBK`*K-pTx zu57;;+h~!0*iJ4M2`V6*5HW*MnQr19!GoD)`91Vt`5?u!&-t*8>0AQbOuD6UNDudF z1*jLQpE=-%x{?2Jv9bx*s^w9*_NsLns?EO@#r)kmyacPbDYCYxM#29-{hjw(&D-nfuDyg4qxtt<$AnGCON*6k=j*Oanj!ocR(w>N~ zOd?M$oo>*>$DWQS*ITguuQEwGbmrVGfR3SB();weOOf)^ap}hhs=Xf&v`~ zmG`ZiY^RN^|B_c=*9CAov@)ZxD&$u0CP=DjC`R@Xv!x26S<Oj_|7|2SU37}6}L5(k+p?13K;8%hZ;al~6$TyM!#f7*C86_!LPQei2b z#rT?iD!Bnjj&pbHyyp020}4fghdJo34pE#VY)5+=bPXsK$~UmwTGaPFC5shUF|2D* zIkPj;x%m~Ab++a!{G`{wn*zJ)TMaxbTAC+kchfZcAbwz}50GX2RR33Aek47u|9nic zqNi{Qc*-{b1}1TQ7=Xz_4vs>+TB%?RiDMTi{yB;TZiEkaGTs$0Qeh*i%g3b5H+9Yq zM(B!E%s`lD8n5PZpeun%xtOiPvxicO#I*3`%KL{v=$*jXspUWPy!X|EulYUKLpoyo z_C!}NlNl4)ahK;bs|spvE~Bh)5}hhqe3ym_qbK}(+7K_>9F&|G8!>G}WTp~dWs1hx zmZY7=^y?-fGLE9z=t7yjXqQkS52wqzMznA_ZGK$>n352PxAZtcK4suQun;wB8hMri zUu$XhqGd#~7{$_wfr>48%%NL$%X7>$(&8PR$Kdj%Y?E+~y3;=wYdv>Nr)myH6&Uk# zia&RzViR;79DvMLt}rWN-kvx1m%b~HL_DSNW&PB`E?1XLm|0*d;8MXSm`V{06M!6_ zuYB~ea`1zl_FeHITCBK))xKjNe3Ok&2|gIaYN(kQY?2Huu>V-ADSd;V+i}`QEhpH6 zF=W4F49dsPnNbUKB4C?Vd}nogy>k3t-z; zI6RYwl{p>AX?j9z2NlNPqYN7-*T>}u^%d`URGxauEj6Zdj+iFCfZJ$x$hEl3IO^qd z6#{QA9oV(J7|wBYQBWb;ZFfAfq`d{Fb6glyxo?c=56i{7uuJ86Co~EzMWQ% zg+uRIN;`)|x~O7r!xW_BE-C!EM~~J0Lt5 zW%=be*3Y(nw4piYu6=0ioyK-)<QKbpb19TDDYIOxyue#Ejd* zMI~YC0**8MH*vZB!$Cwv>*gmMMi<_t_3QpQ z4@JetWTU>T2T5M#eT_Y&Qu#L;klwx1Y|z9T?%}gZU~@Fc5$yFI?X%(2&`Td?yVNIS z*9b&`w`~fXhTv!)R!$*Z#GJb8oSFT33Z|zHCFT7s;GxEUPDOr*oTw6Frox$m=M|@- z&-`EvkTvspjB&i!Os%e>z|lY;WI*DrvQn!e_}|ll*DJ(m$tOUE1U571fv46<#es4g zM??NFKLHyjKJiT1##gb|ao{`&2vj!miRzLAKi-$50Fti)0v->46s4|y1;}DmVn7J1 z3Il|&dR~AKR?Wq#wOn-;tG-g;_9|2W)^HUm0U@knOTJ@V1&Tljt3VM5VHGIy&%

r76+^{n5(5Bs|4=6BHVgXT61f{B|hzMAyp(!9mq$@~AxD-MXsi7AIX<|S?K_H<+K)Qs` zgMbu82qh#j0U|XBgx>4BgV%lE=bYd31)k?U{1wQ~%GztqHRqUPj7_A0o+bwyFB=OB z3x~Frx)BS@AsH5yV>U+*1AhtI`%938ZJTO9IRPn1>k0a7SIP0%V7v5aEbRp#Sr=z#=!7pzgz4ToX z-=2OU{&+BXuW;Hc$Fyu}tuUEbOsP$+R|%@KnX+zJDKvjv`+diM`aEtaZEqv(05A<; z3NbkQp#4`Yzu1F0_Fw%H|KArZ|4%N0!P%?&sr<`R{bC(Qg#3RIfEf772?e6y(|otu zNmklMm)B>-t(kH?0T!0K$jZjn-JPwFP<9@Zfg1QU5^|8`<)Sbdh!Lr+^_16#o6|BS@+1SbOZRC`p`)|5B%{o;VAO@`e3z zPC>a0iW*zdX@OIUCL7yJc$7H{i~rqHU}C*_UX88qE~+6}??N)oc}`vdK0uH?#K*#N z0pZI7^Q@}wa!p!9iX@=bp^|MgO1<2RHOGM=*o=Owahd{?GyI}*gD1Gif?H>XRQ{j4gS z9+$$WP3YbMS+sZ#KAA&erp3qi^7pXPD`pjSLlhZ#UwpAutqi%$KHS*&m`%XS~oaUyJYR+i-H&+uhOAeQkS? zg(dr5X{=EcxAkei4lI;ezyAZTx2}gLYOLUmiFZEZMN#D=%B@ zOv81p#O1#Pz#PRlqE+Q9`+*q+ZwKU-xl3E86(v0GXjp36)=Wr*Ca~~d4@LlBv zPs(ro3ON~!PW8PmH&?e5+^~_-;96YJ<~9f?u@2V2*%d;u2n-=XnUCPvyE9cbdF!{A zWl4;Z3gUsKdw2T1E{KB9;@{}vcjxas|GT0G3$sAyo~lnv^By@yUwFT$Tu_8RR2F0W zeFgVOOV)FS{3}{v_9$+xe(uUpNNT~_ke}pqx$y5j7&GS5PX#01&%jrX_$;?2?Rqyb zuvBESCE+Qr>Cfeu=l+!XO*3fw1r^%~7US{5IbM#~&2uIe zCb{2mYdLEw2Rl36ouSs)utRN-hYk7AQNY@Ai<^&Ou1u{{%yk;XoEvsL?Hu3Z7utk` z!k*@M7OueZVLHA3Tbn(aLh=kPT-)D}oZb>IB*+ZQDDMJ^Ddv*wzD9619uqs{khW7TjWYDo@ZEB!$4LwF>mkcgB z_n~fr&$(_GiN-&)Fl}d4(q=K`b}ejZ2_e=4SVW(mLTA2?5jE|Y9W~CaPVy}G-X^KR zv#VqLQ$g|fy0m{CLeZboZ*cN`l_e_cjVF=zE$z~uGqJ%OJGZExpXt!I?L?&v9B9~- zuc>0m6PeCyGx*Wsy2S_RA|u6}+Rm(3$Y8CPLPe;@@7@-$PDwz<@N!K8ZUIA2 zP{pf>_CAmbD4pnD65$cIUzf^uvkI5LP%HR-utv{MPvF3h6DG3oE>sO5 zc9Eb03FR|iu@|KSY*wd9lCEQh7kzi7d&B;9I^*h#9mz!?g;jcv)+V+=CYU4iwk*xR z-2Fv9p^Ws1m5O_YkFTAr>DWkuuk@QLz&@z!K`Pq; zSW^4_j8T=HJ{5UJwjngU0bA@dk>mhcY0-NY>ow%lCT}BwTem~Yq(O?STfu6^mQX88 ztAMK!N;Xc5IDR>obYly)`m{KWLT18#sd`k#=ridopVMRv!_?a6%679!jMq?|&+sPu zX4v}N-tHV~Y5eV-uA`*N2pdQjQhxZ+hbqgUyH2?3qJF~Zt@Tl_p@qaAf=1o1@bV zKDvqOZfIB`T0FhxG%dVo`I(eo0P&pcZp;t(os)>Hv6RwnO%)PdRmyZB@2cE|7?1e{ z5yu^Z$?oo=69LsO!%awG>E$P9H>dVAH-og7hkQ526PrC@_4kzlQ#o|@B< zlY+=f_mZ=-`YJmfbW2e#buD?X`@aWkEBm4+snCEF$7$gj74a{Q_%m>GXaKS(rmxa- zie-vwO*NBfJHZK@9oZ z&eSGAdM>jBlrX(?PhiqN&9%Zum-P*Hb+JRzYbx&Ax$m+8r61|0ae`_YUoa9XXTGNL zn10_f+ACTyfbzNFmDa|r6d%J*p1*zB^;OSNW<9?4+E)0A-(Wmu zs-^|xgBZDc_0^_K7dC6qAP#g&ds!2sWFt0Ia0d(##wuqzAC&&wLQIUG{b_Cb;AiI; z1yTavB*2V6qjQ#B;Gwl=3N*30qARInO@LXl%-)fN`P$YmFG-p|sW*@%NY#Zz#( z#J+9<(i^35a%|c_Gw!d*DmzaWPQ`0F?#FuB_!l4t!7L?C;Y^?KBtX6d}2kSX3!YJ%^6!%b{ zT^JVSZy`Z3H`G)|J-4tp<{QmeS?R1U(#g#KOIxjYDbz`u{gKn_aLVV34aY~{@PVs$ z(BiN(Fl3aODLY9DrllFqD^Uz}4a}87n5NX}cA|#VrDmdzC`$9Zk}sw&4Ai!vTq1S4 zB~`e?ZDF0hfl=o>bKZTow&`1g zT4fhAw^%p_CwbP=@y#0;J+Wc?nOtu>k$xv|+Z!!#kqPxe3AMIamTWt&;OYB7$Xi`Z z{`{2ME?TkvctHeQkoz8ZlE! z|8y{6Iz_waqOF2XChR&4b_;X(HB4ubp=FF{)PUiJs)G^!kj$~nErLlIR$N!SV?`ky zbybRTNe|WNpOqXpLoREsE-tjF?8--sQ4+{{BG=UWU{Jm(B(lQcaR zuipjIgs}beBn)HetpUI}?Q+Pswz1&J4+B8MiqX`Tk+36_&&UyEC!x(=ditLP>ZWxD z>bM|fVXD^&Sr8LDocQu>ACeAuOEGGMO|)w)5we&hjF}Bl}XrloBr>wRQTLNVR;yUhx$o zQ`~ftK{7$R{%DEJ6@O?wmw9uedHHkQo30~YZ&c%cmPA3W-zX&+zx;c8B<`<|c;&4h zW;bL^Kb}sKchBwXTEeT$5$=B)zH<*+|9%q(EKOElSkne(t;w?l0NEVD2!1Ev^dSSN z(Ew6z%SVW5mb&)o%F5HHV;)(U7G}dX-8hsg;c*ii1(De;=a`rUEup8jThaGQNx#;V zOwsCHvdn8X)apH&v5T}X$$EP2UAROu_DRW6Qn@t094k4 zRTEmI$Lp55+>4XuyasSFnc$Z)-rW@K4bT*u3%WuGBogV~^P`AIz7`~kZ2QFo##0ev==~6T@20YUrf4yHF@BpKbHK!EWY&3e?fNd z7mqy6E)M44@Wawgn)>ur7?u`LRJPBqlhf=#b=PRSw7`{oHMfNp9tF6owy`OuJ*`Nm zS;FPoCYDA#)~K-&g18rQSe|iqGvE|Fy6x@x_$so!dCMWb+t0qg|Mm5ZzDF1SzVTJT z!1dwzIwLPB07xh=whQZ}Xh+pp2dwm)Nwb-Zv?bm!8^Oe5I@$rWNGFV^>>B=Op&c@b zsoHEW-|SMc?x8EDzMI*(ct5 zCX~Tlr@m0!1J`P4@^CP-o7AJ$`>lCSy|&HT28O^kIHdaI0ulcEueAa97dtS_8A$%gtR7tcN~)?Ga{`W)j*-K2FN%j=6UNTN?0MMe^!_* z)38^I%>gV;d=ntJm~_iN%so(7Gi@JqO6`Nr4@SEe-kyT;f0)=13(saf;#|v+LC=yJ zb}NicubtEKO~uQN9!Eg$NJZ@j2rWj25V$iYGgqIkn}5zzWb@xE|8aEu3Q5PdO5|A542``$O~h4`Qgc%-`1*P_A)K#kI2_v^Wz#clm4* zDa0ICqM3s{j7~Wayua`bfjh|6;_3-rv_u?60PQ&S6@bvlP0QYyH%1W}agOFD_*A73 z4Fqp!lph81^>?{y-zlgGEn+Z*u@V=Wp0GB zP;|54)5J)N`0w9D(kzKEiw>X8*}+-`x<*L_H^x;7slkeaU zOLTE-ul|!Q?{=k1f|X4#{T~*7Y%|28|I=f=f6x2y@pHcvQ!Sk9rQHVt4;FF?gjx&t z7{IB;lWQbmf~rCpS?0d54wRYKRmk1f4pOZF;DZG9{1uHgp+-*lb-CpufIfo#>D8ja z3vAoa0C~c4viVqFDo>I0Q*`jPO&8xS;#k;`l#tA0D^~FG1`F`a$-^#T*G8UGy^klAT z^aL7VDJ4luExFJ_{GdwJrpT=LUM)IvL3{c{L|_cCtcUo51gze1-5ld>$&wa?7HOO% z*VtXQs=O-j&2ENTDd~zxQe}TeRM#!e$5)=wle;)w2lV#06m#bJ*$7> z1Q~~WMe=yx7;;2Gh17L;b=wlCAEU@1pe+KybEK-c*tKk=-XiCjhK zDd^>r_zTrIIB6ONsqhOg64MZEY)ufi2$mi47LFRcnEiweHUqC<$z#ZoTBPHpAjBKf zin=O4>;1f323*^o?f8#;jqIv+Wh;XoEj;yfaqOF!it#T_n?#W`r}c-YEF^PqA~O-( zqF4RDhyK^xzIh~r@T@eJ@H7#?WNx2H@1^iI@>gKZd8KL!*Ty+Hn|}*Nz}nE1Nr!f3f?e4vvr2(so`L&OPIcyLQu&iiHvJ z7~x1I$wa4(hou0#^lLh-7;EQMRyJERErH%A3kGcPQmL=FZrM+($p9`B6X6Kh8(PC9u6&eIx{pd*$1fu?m1KpK zc(j`)sOZ5Ql>C3cs`CA5ah%!Lj|ot%Yfnym8B}Ge|zVed$Fe3D@*n zdX--X@47V6iCVfsk}2V=J)=1`5+y0IZcRFI(Tf&P>HY#qsifb3{^R2?p+h)EF>YxG z4F0OxEBm{oel^+H!j$wd)7&o*nQGyuC!q~dQI`T`c3+b&;8i{|;}bU#kl%AlJ4=S^ zux`@rmi$UgR>xc*kR!JLH22vb%6bMuEOhNc^vQO5*4!VPDaW5^jS)(dJ86Zof*+0N9^?w3I^iS9=FFm+GOLZ^ z+9F??B2(Pou8O!xuVJ8}^Q4>#U@wmT zyY5bQx@tojZ%!;mA#@y4%GpDBm+d^bf^-yk1@PkC@|w%Mj=pb{@Yttl3H9ZzT<71? zlm~Nn`kjjSca#-Z2*#|MY+4zEZ{s|laU#e*0Jqo7NMp!nwmg&W6#?&rjmD@b&(R-Q zS@!k%HDft@=;$K6W?Bdq5s`cJ=cXND#UWV9v==AY7A-K1IqS3BqZ#tE+`%CLH;GHQ zVRm{qs3~lOd!H3yF5GyobMwqTTvj;>ISmC4mY=mH;bJd{chyqoX@ruBUY6Rjc)IHG zqB0ktO{Ftjey5lru9uM_$-clsJr1_Ay(vL5KitwQ`?Fg0vf<4fx*2WklQ0T%_`v{^ z$%l*q2vZ#?NW};3F5P6&=H+}JGuNo0j&jhIt=^bOX?BiX+DX+Z6Fv$k38`c=$NSvVx9qEo-8d*+;Otk_u_-RYmmb0uuYix|GMm!`8*I!7t@1lANy=Z+Q zw6ajBUiHu!a4!1()Z(4SR558En<;l1*5UU~4oTg(Z01(a4kc~Bodd{7w!8^j`>j<* zV_BOZAU=Wf>Xl?8!=&k(_T^lFywO4ZcGfQ%I3Cw8lIDm^-rL_VISf>#9aNX7Dv+V7 zAUM{Wt$hYvZ8s<6`1Dr&6$dd(97b;f<4X42uHE|0Gmpd$-X+L zgJ^G;4lX&z`}3B|ue)^mza)ddKFO2cF_nb5%7D!I=G4Tfu$$8<##D`4%et0jv^P->xOP>s{v_M~d;;n^)MVE2idRMT6 z{y-z=>Zy6AhfBf2^zCqSxB_g@dlaE(#S33ZvZcl*<0MzCA$_@sz8A`yL1aLzI~N#s zxkyv(pM-oZof5*)Q^Qj2>GaO7QuA$Id9L%R3frd{-RfPS>B4jeeCm||2$=c~D5g1= z#owF7cRiNi4J#J-JC2*>ZJ#W0>aM8Vci9#+moE;^$Y$jol@d@B=E&SwVAFsi)_I|m zRjI}S)S{wjm@d*99WE4DH8vQ2qo^po%RHm!lCLxP>Cn1+fy*~yq^h1D%F?97TA(gF+u+!FNa={LM2*Mq)4Mpa8L=yM zVqvP6LNVr}8thJ=nv32U^fj@GZ(5w#M46zC*zKphbh8XFa5OQk+t2!GYVZL+Yh8dc z33!y4c5EC2K=ApU>nz-a)mIUHa1!KJu;M$37_!3W0xEtG|2 z9l%95H&>?V9xvmu2SQbtXpiOPW|Zy0h@P7pwB6N8Gn7q{yY2KZo_$Y1`Yxcb+F^*V z8QV@UPKzTA%q9*HRe2f@&)Z;ZGc+8&D&QzdcOfsx=FG8y_wpK!%Dmj$o|cK09rTFr zTY&XuM;f#5{pW+c{IIB6+s0rQi*LuyTs;JEjK=^WP7dAY_v2REp|rrwe0SyT{U~H1 z*c{?>bTO}R8uxICUuIBA@;re|$rn(0C4)Jni@TJXB zneJaq1$+3f%s#aKNuHAc31q^QgwZFMBN^=MuODz_<^R6;e{m5ETy2EpPctK+3ol&1 zwQ{nndNQti*-S{TZQoAQ9%`Ev%zeY0OUmc-<8S7bL9O5p(>XlytflvOf8z()0j|O) z72oA0nB@V863kJV>yDJ=^GPTCL?vohebM4J(vX!$6S$hS!2bVs)ipt=C3O;;{*3B* zA51HY?@K5NJ1)dIv{%hz!}}xoPTT*yT5-$Hf$ptV240%@RgSMzP>K0-;8=Puk@GGD zBS!wquj!PdGPr?CNph*HF~IQV{`%4w(zVc@p%xw@PQ|i9NF^sd{TD*r>&~S)(*z5x zDwXT3agY!DbQ$2R;BM4l{cwle{X&!^QzO0JSHBjzx6>n%b|^*$B3Nw2X*F7>BYD!i za_*FWjgQWRV(58%1L4X*(&bO_8eW3}Z_}jY=VS^$2ed{1`e16qUR<*L;f98ix)wPdX3vG?*mEmF3uNnXmq;?>Dx89yEG2H&9MJMsFF)c{Nap6%) zAvQt6X4X=lJco1fVHRri_AW|WQ^>e{ zqRUnED&|@)(>=!W^70|Rvs@=-FjrexO)VdHzXMo3&&z^P$K*&Q!QaH`{)dBUb3r%d z+{Pk|h0UQ-pZw+*u68ZR2&8fdf+;tS-*6M>+FYrGP2Vcu(2Xr?%lRL(QzTzY$bC;{ z4mtC)mLxBDUj8{Ww;2D0gc@a zmuX}A(`FP;p3%%o)UbPL#^?g8#`s#I4d*O&(O@)pc$052T&$#vU*u23?H%91&gCg% z88#bD9k%u@Q~md*9TY&48drX{85~awLCA*Jq2!ApLCfDn8iC4zs#zcXQ<+#)@?(l{ zScd(^ms(r<@nq>P_M49D5w=6Yp^XzoRODvO7^HNe-_(XRaeIL>Pkt;rgk1CO=iaYP zEQ`i8pP_Bm#uT-1`5nkgH7uZF={mU^n^lw+AhGni(vhV6G3+ramPBw6LPCQx7(v)SV=O&P@go*A2@$IrqZxN_@GJ>}NlG z>aRC^FE0Q2bWA{*yJ`2#Z*0=;sztM=oOJ(>6kB^5ZpWgvr8us@V6-Q<^A0?YOX}5` z8Eu;7UFu59ieVLQeJe`2x1{qZr7?_|Hz%ryKhG)qJ}kBE$^6wEGr@ZBNc{(CBjL}k zeOJ+_|HRpce)@{+ot@b$fQ6~8;Dc;qYu>Rlcl76{DyEU6{XoWi|2;Y|k6~-yfrT{+ zIlmZFES3wEKB+t;w?r$a2aaKk|D6NUKPQx!qkenE1USUG*O~jAfz}bqO(%|FQM*p# z?xh#0UNc82aDQdFwGo|iK`Jwm*XI%a>)P38>A%0H4mv&LhtD9G`mTN9rAsk19d;N?k`=e-)JA z+@|&ur^J3N%o71lHRP3Z9p}IM%pj#*T5~dPXEXd>IP3^BkmgPI z1I(#0uO};{c(B%iU)i6WpC5A_PD@eVk#bxZi`RQ;SeV;saR|^ByeQ%(IkN>6X~GsW z4tY=Se_h3|SK)$PQ%~kp0ID}X=6e8*=D(zSbAE*sG8(izTId-BZ*>ly&{yP)Za*g* zsCpAl@oTI#&OKz`8qHzN=o2}9JJ5agrx_jTGNK=R(Yb+PnRRX)Cut+~-@hh3!}Dl| z4-H@l*adewY(7(J*LJs>SESyYmv>>>P2=?^jv!KGI-IiX(Rxp9?WUJR=>Z$r8AGzb zT)W?`GmlIjD@TRelj1FtJl8fWuV)nbEtRfgxp;sCJF9b`ZBBAqEw}!~ppC23q9`d~ zBlrLC+32lZz#JN~1sEUuS}RDjQ~s+z9rUd70Y4$9rTgGYk|!-qc`*N54*%MCR+ujh z`0l%EBg_EI`U_Jvo?HRBgAvxOQ>*gdSS%a`oIf6v_WP)BCzU@6%pT5+J$&%+iQ}X= z0|hLWtJZ7o1T|o^^WMFf)cRoSdcPyi9D@8m0Aj#)Zm3=_Anw6HC9yrCt6_0U<*;6^^JNEa;!BtCfho~YNORM(s3FmIlQYmA7^YHG`1`9Vxn zjj_UabPqR&SeM{I;NTOj zTLNUjiuW2-ZLGJG;~qG+C|1JuyeoMenGyqvVx;{(C6NoJMmdW0J1BS_-v^(8meq3> z0>q%*;fB8jo0)dxwV?hat7AU=C6`4Mr&5rcLWFAX*)@@(91m5{@OP^ z2de6Z@5Wixda|Ody>G4m#s>{!&Tq7U(V?|pxXv7oYzkZ7V6$7U!sIc8B&xrHRooVG z5<{g|7vSEj)xShU_6YegirbU+hxmcLyT+HcIm8)^V7ulOZXi&*o_s2_j*t`8rx6z# z#m(w~{7`S9rEE^M`}uiXPa)QAs1g+HH58zqYl2do#a~p4((wGsaQgNPrK^OkKcyx|&#Uz790AgKj+ z>4x1e2fV~XVkSD-^%QnUNg()qJg9)P7Cz;US4pc%cnK<4P4R>8LapL3YcM4z=JEw>Ie?MspTq@Lc#UtES0(yvCQyi9!GVEw z)&dq5!sezImFsL25aeiMB=-y)U_tQJP@P&ebdAWVpO*~ zkurQKUTr8)!7}CIZdE*}H8Z;2iRC0#7j(nt0d5n&*}54+vQ8{F7BoCE^QNG<3z_wFNt@IQI=;{r59#?K z#~3=LqM3CJiuf>ryZ=hvLoW@tgB<15Rf&ut7#!)3HZTZR0Tr*XLHRg~AgB6^EP)1F zFmV;s!t*?Wmyh5a&=$+89t~Z zM`CuYYJz}kmX#wEQ4zGaTXso#$O1PI1tIs$0`__nfQQyQUl#lI?hMKCBa)GmDa(U85@<0!+xA2tkz#5tnF*L}3v z^_)_J{9`-!t3CWW)Jhkapsr9vZo=d(LB+{prHke-?>L$EX-fGv6C+e#=1I^t&oi9^ zge&lf(cXc?_1)y$`Z=RPzr7w?ojyn$F-I%YR>#=nQWUqOr_)Sc1dNK6m#%h9M6Fj- zUbPUlD7I=PknOsY^e(tl+*h6p{eEqNOnC8Nc)#v(Xa7Fc$|FngJup?pqh_JpTJiy+ zd$@@6R7rfRZc1p@*+ucUPu@ta)%$iPKdc8;t$L6B_GH|KQ=T>n#ykvM8+>SmtKh4{eUnz;G$olp3)>XQp!6+SM}C0(2@Er9tciv+-3s-r7AP~(1ou!C%%v1{U`n`%zMhkw_cwi52g*s ztHM*0V8Okgd#=&$*2oD4B;%VMT2K8!y>sLd&T7x&W_5pS=W3|Ux$Bz7n))vPAe<1o z)hjR9;}M=$43HTC-nxAQUil-!4%y%(ZarOd%F2}?&s!D)=Bx7EnVHyq7dwmc(w~@t zI^-FIcYA(W?wr@x+XY{*CLV||zL_3-dP;qFncmP|<2fLT-o1TJ+85&82!d?}pdM0;& zjgHVZ-`jV*{d)or7^j>%dc6a16<5FO($*nQyDGy^aPUyyIwQ_&o7dgeW-hwQrB7+h zOl(=>!AQ;r_hF0N6(x4hao=cHdUhXTrVa0}8wc}t?7WD|sfBNXOv zZTZ?dFvtTvf@c}Ey>*a~XE@;>dQ_WQ#dL16d~x_E29i$y#N*Mcy5+@7EnO%*T?sa!OWIkYsg6Hy7r(3rNIYRQEiX(mLQjxQTX%qHao9%pf%dvk`lwJiCm9J}mQm{frUWg#z zKj(9PFksTpd&d(>98Hl2OrBZvE6P{2_KNR*C7Su}2Ko1XOIqT332rpA5ZQ0E=ac?a z2ix!l=b_In`P!#xJ!&uZmeSZgpHxDB@>*`Rsf4X06Ep6M!4TMux0Td#Q%Q7dFL&O8 z`y%7!X>E6!`AsPxq1?_pDA@1V`5H(=^3uM7OjKw_QgON9V?kcmdUHRDN1?4q3V?|F zWx1fd!FISQc#Rjl_b|K=vND;p7f9H3?otLZw5B~SE9qw%@-AS7{MTb$UOfg3sVDAu z4Zux_^3|%c`@XN2_81XB`6-R~|vae--pS`BAw7p7raW>QD03 zEhudp2U;+P3W&l20C(Ao>o!a7-5n@Asq8{AuYsDmG)1Z$i{Yu&(MaBUv%bwNF_njf z7^Tx7KG_!@PK5$C{;_b{qFd#Q;U%6D;|mL2+1kUZ=?fG~g{g>OHpE|%B*@x_eJ9c8 z4imYWRmcvx>DYbb{%^Mz>?0I}?0?Fs%Tu-ey`ZVf0teFqR7?K@KO#U8Ybxuu-BsZ7 z(ouLXUhf;I`03IHNWW5{l%l`?y$UlLX-eu)4auTxZU#WHu?K}z7R2G8c;&1_2 zfEpO}??{W$VCPCMJ_UfH6qN<_+~?~Nv0biaRgQ*sBFdSJN79c~h1rU$rkv>BNDy5c zwP@KpWQvSoW>BKM=Yx0L5f$+2A0OrK$nD5FfJhHAV`Z5T59m{k{a-Mj5ftHJy&j7F zdUl_%TK~c1r8LBQuDv>eS573KClS~zoWbq&+?tr?kx|T$`W(rc9eAE_6qy#q?L^=@ zh=KsEUUmp5>r(}t2UsHX!=&W=YR0Mpax_+6DDWK8eQ3iB=Cu6ElQq(r^Ajs*u6}P) z@4D;e^T19@g&s9DyIQiNjU?3>0O9+YXPtGK4dGoX1<%zX6?Z`ddfK^_a_w@fo+R&P z4eD~4lRbqicYm+C44WuCzV=7e{MVF?HI15gDeFc3&;gWa}9!7-?c*)XAI@i>2^T(+qiuG zPLuO6OjrFtSn3`4-z(?d48~qgGny3>qFMJD%~`C7nHI6xSojq_ak44N0By(90%X1C zcGj9vR&L^_%|8L2neZ$!~Pbmh@9PefFJ~nvu32h~fp=xuzaP&G3I|xt^)__5Zn=2qk6YmoB#P2xsT9^0x z<9pvz@FO#HmH zkIQ}EXEN)`fW(}>C8iV{AL#kOVI@mqPP>O;U-?9A=++Zr_Jg2ZyND?xv-7EpGsUnYFPk&HwZb3#_80 z=_ufQVLpcpNaM2m12bR#FJbzBHIKY{mF$g!to?}J`kf%&#l-f2IyscvnF5FedV@9p zhy;M_1Be7jA0dT5n(bX*p&vWf`sM;5>qqI{6^mENA9ovPew^7>T@!4SrBzAqkCW~( zW#7=f^WkBGU+av#o-XscC*^?wM9Z`!cV&-1%GcfBBO%BB9&APYdH-FaUqiA_T#C}5 z47nPT_(u_8d4tBm%Vl79b{H>8R$QH!!c1$IRc#12gW`}1-Pwv87ej*fztey`@~k6- z8y2%#o(82|B$s=Y7@Kz1vB{|4)A09xdz@GK(#J~Mr=>pAGHAf#0sQb+_)HUR|E(8I z=ZKkrR{FbYZPiQ)tpzYs^My*c6s+xMWay7>bL1B>yjg0 zIOQ9YiqACW7g{^@`0{9f7AyTZphr(KVtAf|idsNu_Y&KmL_88}pz=o=y4%T=j}^)5 zbP>=Y(-q#y?mUE0h0jH?fpwu6%yDJQ${z5^m6LyVfN&hp=37D#)FU_se~blgrTo{L zm30R}h*}s>y7lD%`os$Rf4TC*X=wW^K=n7KG`yEbk7lnSc?pt#v?PN&!1NzEm0lF) zx$zC@uF*Ez4t<}6pnP8Y z)i_@!G5A@WygRN;_ZB??m?#Q2{54C*sMzH>puI0>wsDy9{93HN-xIM&s{sl!I2a+h z%D^Mtf7t8Gw>?`b9&8+KZe^u8QzVSV_I7qB8hs?|dEeU94akdpE0mrN5%WEMbQgal zt=)+(BC#d`soD<4j(T$cKn*<6y zvg-Z!*X@?ZIqN9_W&MRVUpH#kaIw^plR}RPwWK!kL0_%%W+=vRe zYvnQ@a>MJ7hImZ?h=ZJCGA7V1MfWaOeZ>?wwBLamvbWV^GJK1b&8tCP@i=I?Xm6&1 zFF3*eYUoof4_vV`l?U-U!ig}%KBsqb0=6!N)W|gCSU9o0mW=641{oI1%=);iPgHf4 zF(B7LvFc739l{DDT+i&aM;j;iUd)X`i2;(i!Wb!%L@~0XrHq**wtP z4-1aaGd=Q%O^z;*CuA>6zypy`N`H`MCiKiniqRyP*kS!UEnk~W1*hzGxvI*7_D~o7 ztq+x)jODb^$%Zu5JJwPsy~pAaDX1F3J_m!zfgc&%G~n&#xT(Eo+k8b zsK))TF*bXYlty`!U+Am*#i6QauWb)D>xa=HgY15mnZG%CS7ISnkx2z42f;RJn&&2C zAsL$y9q3VFy2?L^q)s*bm3oF+cPi}Y=9=dyS`JRC-_-DaxQ1LtZeN$-6{dj%cnuf# zw#Q4RZ6|%GpZ#Kt&zzJQLMqSz{>L#s2)tpL>)BNUR3Y_Ytw)-F&Qy*tIWOJ2bb-p_ z8`dXS_{v@RL~4M8xyuXsP?CA|(#lgkzm`q2+ANFKK%aRrdKED)A{uYi@J(J~3MuCQ zF8fP5KWrP<0U6#%{+?-gX2G6K%A>He$}2>rL0M{hEls7b1-uuuYdV?1`Vh9Y09Im? zn{h4p7O{}DNqXK1JOUSjz^_&bt6ZXNT>exZ^V4p@fVro6=K(F{%@MvFZ|LL`bXJ-= zL=Q@-7JD-PJHh3Z9>d^LvKwc`2PsxnVWG@XO21m4JeKiunlNr0EmQLll>}CcQP|x0 zT$J`Ku(;x8>kZ3<4QJK^hNxME&1%nUWsHX1VUeU!Hmw=g>A~@W+bdqj`KS0LWyl7$ zXZuBOl(miiE9cgol#wz|@2l-=9=x*5@Fr;AkOizITmUWn0FXAYF1qGgeZ8A!k}0Qk zd)h@r$=yu}$-7S>E9a7whd%p2pf$5E*j3w;iP-m8_wq87umkHK~1cxwg^o zXQApa<`Uh#*f2To)}6Qa&UwrFPLpIjY_Can=rEt(3BlvL%P{&7?(PS>5}UW)r5Oy3 z2681WR_gI(o}#pjdEwov-IDOsqk1o>^2n*o71_&d2QG_}Pq7}Rq)Oq0wUC~d4UZ_% z+GE`?oJIFD^5uH)nJo8&O*7L5$qokV<=($sbmtn1OESP>SSug5Wrd`++rGm_^r{@V zOy*`^Dr0{wCvUo%=jvr?%q+qPe@J zOAXCZg6d`yfTzD+y~675JcXLZpj-7krxrzX5XWf5`_dp0O0h{FbR+{Yt5*AAlAIpH zeMrc804YCL{{e#X%%RQrB=LswuU6$)8E5*kO09aAHHLXUjGV#*lqd=QIgjbdb+w9q zUV1{_XQ4C7E;lXndX*O{8kG~6vx)E;W3TuiN$!p~+L;l@u$gu5LO9;)&EsIaG@6yU zWUivt2Y!?l%agcv?%k4Lmb4Ov0mIBsdI`Y<{NZGQic3+lLRQVAb%|`@hxKFpWQ}P% zJ6RAP^*0z(r))hKm7rneNC}_X-H1H#%vo51?G7eIN9wvgP(t-k*w+4A zMHf%Q&iV}&ILpB~VMqK%`XrwVPB-bhOaA!ua{P!m=r!E;hq)Gk2%N7;+}>I|{<%|y z)~BM#uQsNCLa6`O>T9b@1xbLZ$HA|`BXy>V2mRwH$)}XwpW}9zj}J#q0#DBg2Ht-1 z!KH*v8gtZP+ow!m{w!4)&%Z@75eTu`ibsEXXodqBdo^~He5gmrG5Ajh{orlPSdoFE zG{V*IY5)BN8H1{k6NqsN8Z7fWXG`Ywu?4EGRWa!k*;Wmt2dWW{(ulfT6#5yyHsmtg zmsfoC4_4yR38;yVr{Sk8%oG-H1R1~pi;srHlM%(9*o_pd+)95svN3Es1CsX8&)gwv z8e`VDRX_}b7-RTUu0XOi)Ei2%D8D0!cK*FJpw{(CNPYUXRBscuM;J+5DEd1*;B($3 zm^#rPCp>-2rXP}Se8%wZ>5{=ZNTu-^G|EEa_mHGulTEUVoTT4e3H%4fIrVAsDR)lAe?^#Ke&m;!08Sx9 zc#K!7Blym&6&h>)UV+@bd=!@9lolcfPsdLYgqLWeJd$3N9@T6fujy%IO7`!FV_h5L zPQnt(ZW((sK3xl1{vK`l0@j|=Yee1cuML*LdC{r}qg(x|4AcHP)^ zJG2ARG8&Z@TES*eltHG%R>6TuLZ;s_WB5m7*$?KnPPHz^Sc%-}#p3oV(Up_uh5Sx{E)u+Cj|7ahHZ+)9`h8M#pWB=rh=cXKQf4{{i%1o`R zYg*IuScKsRp{m8YF<)i+zT4~&W>Z>*Rkhg( z7B9{^c%-R_;+=W#k4SoW&abB23^nCVf=B$F9IL%20D|45_=sUuoaQS@K7F0ndOzSz z(Edkpdf#B~g%rJ;FT(#23)h&WbzbPVd~uf27nSR+R-`rvL8IWr{9oT}3F`8-q!!`p z8d`_0AFa2K@V$_`-pTfeLFY5g&Rd7bL7ne)U)|AUzrIr2b~gpQj-06AY^!3RV_Mtx zHJm%YnD-G^L^>G;wSGTBdu2t#RAKlK=KJ}q4_7+yC75~NZ%YBTX*ZiWl}rDA1Z@9u zkGYQON!s^QVCP@@AlbA9z3+@`U6Rmqu8s5kEZBo(h4Vg~S@yTS!F0})P=ro|?3?@(5bh#jV{O-AMo_twtHUVeZ0)xgGm|s@XwR*lqONZ>u&`Y&Z?uR5Fz_a5*)^%r%S$sb5U>Op`((xord|4LlBWctZMe8OUQx@LYXa{D^`%_xmBQ1HB< zpkI(9+I7UWJ0$T@sREH@J&X|)xHG(4f9&=LbH55+tWNLC>qIpA55@xTSgfSDuHXmn z?cbGTgmIbeER8EO%&;8`4d6HKignj`|AUJH3*GAzGY^u}PuyK^bfOZ!`7qwc?dT7F zd*I}39BR+1Zldg+b;yK3sFn)t(k?TZ%lEye4>Xs&>5+$SQO8te=nGgha zH}^A1;#ha>M-%l=6?*sr6P=?EJlsf)8PYBEcv8GvgR_ZQS9&$!rjY3uHqyPX2}jS^ z`NPnE&}_?bPN_D$vHC#pY+q(ekzg-zK1jJFS||!%|3~cJSbYxX{JS6fdR=XG#HA-@ zcYhPp{p_mW!~x_6@)o5|B-Ue#E@N+e_mR=djn;_!>r;&l!nvc!`-p{L0%eN5c%=w@jth-4$|x3I zq$%b4MplHA*y}y!B$DU-V2xctq5h(_WFlRy+;>Bbk8Y#Eu-^)q4# zMWW0IXpMD>KQ~>cIH;iZdSj{i7bQE>?rjQ3X4m8!qo zRK7SR&ZaM<6oJqax)^}w^IDX;NMX;9l`+Y9s%QE(7q8~AF1Tb0E zYr$~VPs@T@gD!OTw?xkiSAF+oNya^O*FUd$_>C1Z<=CWwe>LtxsRQo!uC?(@e(GJLdAdWs#<)&)cw#NF=GLJFCN!*rpRggb{AEp_UFEq ze&to)!yc;%JDWn+yyihc&c8j}0zRif^fe1(_xd4EL-lT=Z5f^ti*4UPkup5OP~MD! zb?|9OLpGq@@F{3F1qUCUsSb~kSmF1zQ;VINXJf4C9+dfU2cq%=+aMHm>>irHcKSY|Th26fl?mXy+9y(yp3%%{!k6Hd_UZ*fOImP` zU5vNq*ZJ~wa_0N9U-?id$YLlEf2i9GSK0N$8a|%!u&MAPCrj<1GvnOjY5h$O-v5~W z|40G*Nf802hbq)HA`F8MSCs8WFN#a8EGuxKRQi@}KUSAb=nO&GtPOlbcQT1Z_J2YT zm(jvj-TO5LWo~W%| zG2Tv@wQytO2nVI-Zq4`SYv0~C5@#6E`(y44y#6o&o`x#ZzWvbU`A0R~ww#?)`kQ|2 zN;kKzzqa(zeuX0_FMmOdItZfNX2rc()h9Bne@p@?Ij0Ksgl)_k3KUz=&)cpJG)M8> zx{li;SNr4qQ^okhwm+7EZwdW$_t9~MnC_`A^|YWK@y&1fpmf}A%bNdS%%6E#EI~X) z>;29DI>~rY&kb!myv12&9Y|LT`)Rb8k{?GE%6vVy?JX5!FISa`2ITAZ$bDbv|AZ2u z?{b0Suw(PZGd2fe9AUa$3`sOPC)!p?Mx6J_1%vMvxw8>@p4kC{#1pU%mKh`^cM zBluANxcs@)!1^?hD6*2#yplS~pFM*fha0N5o6L5tVPL^?FRe9D3pka7{Ic?nG;0%E zAANf}TOXgEg6-jhUp7YTL+`UG7!WRf+UZr_wl zC?zH2own^8qvm9xRZx>J-!R}(kfogA!&}ua%{V$ZQ>8sjB#xo&;4`ey9hgGpTUK1L zNaB3`&uG$%OY;#E;^*?RO3)_WhcfVOBL*oZjX!ewq?6CYsqyB|I=)TI1u2P57KFgQ zcY@rC5hon98TitL)F7#IDiqPQDh!>=bI)@jy;@ozD z)m47vT-94#+`RH~Gr1TGg^t~OxFCe-?Qu(2QQXR?-JR=5Lo_DQei!NqvnH-yC!1q> zLPojukOHx7kK4Jrx3?V{!qlpY@CW1eDsE=f{=Rb$xTUZYsq06Xn2SuiJykmVSx5Bh zu*{Z&4_JdAqKDctTl^}F!e<6;TT<>Sf`?;XyiHcRf9dq>$n@yZY<)kCOFM--^;UeD zAl@To@9n8h3DE{mv9y)1kKhG%USsd=Os$^WLuV+hNzk&U7>Qojy8k7XhfWh=Z_tMK zY@6qmB|bfzfOPG%$6HY2PF08c&La7)ek0H$wJ~p>xzhh0H}hx=@X5FJkr49zdQxMP z!p&zBIjJXcSHUx9G@=?p``U&#De5tctBz5rt-5REo=$JQ7&vwlij-8fJ;RM;giRmY zlzRy{@UN!qSt8{A)@?1L3Nt!m|}N?rCq2rY5KhdMSRQg0sJ5{esp0&ZVPmh|?j zK0Qncd-%4h>XB+RNieoW&V9XpZ5tWTx6hi9uKTKHpgp?>aE8*9$fql}yqXnN z9F9azKH?q(G5Lz09N}*=a)NJA#tsapQu%>23RF>w^2V>1f~ea4wQQo4EVvkY^c>H4 zS8#lurk++Qe_>)EZCVQfZM+R`k0UXwyshF=Doh>Z;L}>6dR6X;s~M52!ObeQJ>%Wh zyR^mw^asn)ZvC_C1P;?CIWrp|s}kqy!lf|h28<84=M51_bcA@A`vwxWrj8N9-W!<4 z<~cja!gs6zJ-*^QRPydn#Z%Vhb7IlAL~#Z@_|p0iHg;_q|MTe}OX}E1H!F372DtoS z!m}>br4L*+rD{*chDA$3whX$S6BxU;KbuAKZWa$U)5TL)87l!%gH4Re(>w&NaD6$0 z3O$fzpb5c!11yBC(8G7$Gi}PVY-QADFsp9kL%R@+m5_;RHTDDvH{P;$_9;CL{Xasr zASj*YeZrSYJ=gkqqL8O5rvxY}$a-(vnAJsDZ@Y`1m9SU=v&D=^sOGgU=Z1}g+aJCE z<`ma(??vu)a2>W{6y)IFt4jUCV({yc#3r9HDzCBe z7g$;-dnUXk!ofvze8$n>E^)p7Usag zmS&(>G6?~T3G>zNLjnJmYwMd;-}UE3S+jw`~5az2{`ikStJw6%?&=FH_(4yV(H{Ix#0NgVBKn z#)qY!YX0r5TTcuHj-)EIYxwQF)oPWjH0{@IjmUFQ(}SHkhblaCHtt(P2lFb*E@v!z zkYX(6nrmLgy&C67YYV%k`W__+(d$VAd|t`DXuk26i08pgJE!92Zknt=veC22iiVuD z2pxFRN(x6%(eBCGi@g)~_iCMwxiyDLnGSn9$?@)}yPHzY8JDP9nb5{Wj`*p!a6ijw zO_$EnAP>eY$*UIxNAYwMe9Cvv^__ZVycyU7Ia|NV-0%HKY^r|z)vyNFS(N$juJhyS z%U!6_h~R;nq9CgB)<{mO2~0H4v+#BaDemVtl9eQ1A_Z5x{WM~q+y2u4C>$s!lI>b$-~|8I z_ZjeYu?2zdNlE!ULfXD!_pZ8F`<(jz-J?W%{{8aHHJ5V2>t75Q z?$kr;-jDSG)8m#JH} zOiTH0ePpg9U7OjCF?I=?pDf7^3OwPnIpj^QrW@K-dO+mgSQ1Q?eqx32``xI3rSKja zM;SQ#s(~Kt@4AJvpH02mRLC^vT(>t*8wDouu|A5Nqg4M{;dD{Vsg_r*cZj4{N?>Ze z-VDmv*}xvyF-Vyp$NVf0LzP7sljOQ%`*>ok73f zv+M!9ra4Q@3zjmeR%mb1l``op=pJZy@eZj5jpth#W`kjzD(9A?QG37FAgyT3{1(_A z-!FvBE@vQJbyS#*g5iqJmE#^5b`Ym1u(2~inC?_j?QWsUFdO#l&Q3X9Yw}{E42>%M zrJjOO%xA%_jQo35pNvK{p*13h)W@Sk@!hite@kY`_`9*?y(MOX+hi$>BF&nuZsO5E zD0N4HDoZanE!X66rR!e~@LnJ7K=2+y75ev9P0N2 zA}oJnO=7F&cFbJ*9@)>lbAW}u;-q0+LTAe4$2V6s9?rS3he{DYTVd;S152azk?+A> ztjL~>D^T%+=SGdcWk_D8^Qp>Su=uzM@s1&X9E)DqTHl^$?%5OKIxBovC&Qjr^r1>~ z-^XRz=UwQ~+KQa%m1-%LGD+w`idpFU9R|^fCBtqy#N~_?u(huLthQy;^*B_m5RLwr zq^~mYcT|}cwj$7DmfMl|_-oQPYDO6Mf2t*Fa_-}OXPXULnh7laZT<8V`b1g60|GC@ zT8_OOHhF6}jsI1qaATBD3L1?@oht>fmv6;l%!sQ*V>-`7RemFBD%kyJ*m1JHZ)2Bs zoqKv+T|pL+bS8ZrjD^Psy*}&p(LB3_rbREmoY(Qmh+lMf(^!%h)j?%Cr<37oTK>Kr3NV8LtP+D(Cqt(CW;2tKEDPpce*=ZOdETGSn$(1hg} zsx|C^R$Q5AGosDT!N+*)HL>=Iwm3x!w$>Wu|8ZpO_3XN@iH~dN-7MuwFd-OLl}viN z?i=Ew37~CdZ>0Ejv?+wo)b$Q5w5xz*jhmhdi_X?AnPdTc(yYIWJ>{zo+rLHGn=h_d zVJ8Q-9WABJ0Mr~Ot)6FmJNNP(o zY3RL9Z^_q0Kxp^O7iBkoS%qAy9NgUHbQ&Hjso}l>*I|b89ii{CT1`jtOp6(2Gqb-W z%72H)V=Z|a<59c0%CrmG@K{}Q5*%wbDxv*+g91h!(Z7!!q0AhtX+EP zt`%DIT$+>y0{V=?147&r2TYe^-*D$iSDzd4n6ko|E8zN-1O_)dihd?? z-|!9YK?q47qtkT{@;l1yoo#$>R8U+{IEcsW&!%jmS(kfyM>GWl<(5BXtqQZEm(09` z>Y_vqr}72KL3UIs_+-IXc7Zz&ZoG66WYnd$y=@9f&pQRU%Gr+3x&mkLU0Z}PxI5?` zcTZ(6-=G}p?BH_)E{{m>sTB1vA|X#f#K>|DMGYcG@6jrbKgofMc#S=m(gBTXmxK4- z9`e&dSU|M^ekH2xvMeuWt+GD`@g|2L_OEI}K-j(_A4Vjk9(HRKTudid*jUTJ&ywr& zv=HZ@qGofh;RoZQE9{su@ZP8n+GG7wnh=}PlD$72!yer^eo=quIgs|it3uyM6__-z zXe&QTe+66^JgiAgJ5O+ar zBVNntHRTSa!F-v(8$hS^?bKonV?^GFehVOl5nAR2)Nr$!9lFT#YRabS(G0Z%=>+>Jqa%e2L z1pOYSo7uTfs~u3Bw>crP!XP3EZw%IoAe--;fcF3#R33T;$N(gcz7Y2@rs#5imNISJ zjYwKnljzySaL}o?_$C#UMAAk}TxZ+d9Wvds+hq*y*%L|Yb9+j)!>8w_b#|N&X=w_R zcZFW2P>2Qc1Y-76?dP<(zeK2GVMNll%L9zW=00!CF$n#0qoMJ=KDH959qTERRc37s zBGu&}>$VVshFWArTaQ&(R%F=(R(7;P^LIk!n{KjqK=b^$_r{)k_7O?aB@6c)njzsO zfn)H$7H$}cU~OC}H*JeZI{`?Pf z!I`@jl^5)1T~$-X5h|XX6EVwRXV@Uo$7JUq2*$yuwIe8wRIGEd_~jeH18+YI-mbDe^DRK}>fTlL=ax&|mV)wJ zPF!M}l%(6S>a3evg=?qxrP-IS>h!8z#YuipIOC#1C(7iB{@{l;L3Ymg^R<0I>1YiG zpygzp0PN`r?t3&r*TyGs;GMjSg)4%8XJRjq8LHPb;{7BwW*@0Ot;uMm@F~u0)jL{< zfA=gJrO%rAoXrRe{8Fqh%Y!|@0$ys?dYni?AdT>xz+p?yuBlVeAJz2aG@R4H{=p!8 z#A(7u+e4#lrdlizR#<8v=6uD|VM=#KE?=^t=6{j$ba9LUKkQflsy^-m`=I{SOT9Ai z@YtluDl}bJfrRG4<(tljG$yfCl=j-A4Ea|lp6XG8DU_`=>#;(_Xjk|N_G|92(WtlL zG!QMGuFJ1H9W%57SQdH{z;v6|JXR8}k>u5xD%MoKJz~NupYYx&wX3#H^H=|h1J$Ec zE9yr&-#*`RF_gTV$P8@<16&WA_!aVWmNV6VZlkq4Z??v@eR2Afygd6;>7yug2BD6F z3ma3cV~+bbP9^*MQX7An?sEM`@V}X>%R;Nve3sW1xQX;AhVv41mt!Vt&=r^7Sf?oR z@OhtC{nk_Pumo3l!8PmE-ZT{6+Rh_A64%yHkd=7|Jsh$ZswKcxS8|RFt^9(fS_6bWW zoYDzr-jVqWQBOR1^OCuiCUg2;F{^fZj7c^z*>Z7moyw(X3&4oaZ&8B9$UuX0;TfZr zvLzt2UQY?xpNh7iIBru(h-!3IovzMx8wve$x0VT}1C@{q4XWi&qmh=!oLtsbO z%G3C*6mJp!(JC)IVj%jKtXEGJ^C1H987f4n*U%#Ba0LJU{go@l ztOdZ#qxNizRac^E`u|dQ(P2}^^!uUcc{8s&WOxo}?zAM2pDdRA~oF z<&*29=WrPAuaFL+`w8eE|L*1&46_@>yC?xi>t|M-jdnquiU}VE(Wq=6+NW#BrQxr?g7jlLF1}Z1EX?8nA!g`l)86o#N+0;k9`2HhM=ITX$7AN7?_lm{)UG2N z+yC59DvNfaMHh*3>pk>hHEV<_jdRgodZtmAFPIK}-ZRHcb(UyRf3@5kCdq^3W&nV! z)M{%qkz)U~wb#uPbguQ*f_UL2h=R{Of&tG&)_A>GG&{DYX8(0`!or@Qj%R2^^0J$eXgFmV0t1t`T( znFyOBX+ivOQhO7PodAYZG?MOA>2hN+)1fHAQ=4XnXg42x%!U-L__&a&JW&oYt8I=+#$8s@V!HXn zDL175=Q2$mBDBHF3;Z4?qx9mqW^hRiiS3z;`8b#l8rm_=hNIbG@|s#MZZ81$#0iGm z)ZMsQcV)fXWqAj3PHq&P(IGRJFPve_ZF*uOLIl`U*4QoQcj>C;hLtU5`^*B7q0ga9 zl7dlUVXpr65JCTS$6}R;`+HBOe0%P$DOnGs#Bt21cC$7(owT-?#j*ivl8Wiq0BA*} z4sCaM>gh5}2#Sy|iTJYWad=5k*wLRQ1L1ty%^R!2#KM)@AJK?B>q-~A7%!4l5dx*^ zuFei^--VC{=}W?EHyI0&k6O?w$F50OZa;m*p$g;u$}-$>QTI-Qb7-;-bjj3Tbux2J zrpx?iCOPZ@zVUJDm?XKFf#)SW!66&R4UVk%QxE<6BTgxtYm`98=dj|*Lp8^vNn3(& zu-zyAk>IusX8{>@F>S8gLf!7#dxVoy`w6dBRu|KRH`iE zdM8RK7#Roc>BAyOp)BowDi*umzj%Hu*?>{|Ayx`zMuZT9?p=_Ag^FUVlzaV^yq*`@ zAZ6t~%w^_V8dv)Fo82hi;NYu+=P#5Ts;m=ra*QAves1kC4Y<&KoBe3ZLReHNwwe!{&wU~9S zz#XoWwJM`l9L)4p+!zqHmVbD69f!jgS;F{K(HkKxP%JyT0@G`1T7TH2MLW#|`5b8!OE^%@&b= z==Mjy)>!oc&C5J-l7$WdvG9oU%>odqW#={zIzn5JDi+hHD#umpTL$_WN?ZI-sKnF; z03E^(75=4qd8SUn*+y5l-N5l%33$`7iYELF6^MfDt-Cm)hj+E9l^3ch?%5?(vlf)n z$tNKdv{5~3zZlE_tiw-@=Vx7tGyZkffhdpLqptiKYzuy=71>3s2!y4hDWb2!0dx>giIm0ngBGKY1L8oo3p z%NSZ)+azBs2Ujv$hyj2@?L=~2ZCEf~vN85+Zl^n_EsH7J<*8(_6zzbh) z=4h;Pz=Q)(n%2oH$ab2Njd!c14)6|C_j#8N_Jn{iFYa0yO+D!RS@*RF zxUu>&I59+zsmuLEJae&C66rJr7yVUp;(4PRMDIzz@nTiwpM)^Ad{NS4y&2Y;Q?dw< zc^K4)dqZvVgpcHq&9P-;C4tPA=$7T?2~W&H7{0-{%^dr9lqxMUstltXbgDH~7@cT~ zL2dTLqZX&H2}lKfcXF5M+RF>z@K-a-SJGUTjXlkM^x{_bpWG5sX}{;RdH#ilS09bF zcECv?R^#oXCuMBMLi+1A{bGMZG*ihd_B4^4cYDpmjs`bSn{l$%AhSA_UkDoOUad_y zj9M*|4?nxW%S^S6Sq*y2qJ9naVC|fNU?>BBuwnz}Imc*X22E(JOI<0xD(Uv(%WWiK zPx#yzQVK0%x!(A^kXOV?FkouzoNCqB6}1&rU_76Vxwnnr^axiz_uP}%zBLEFH6(|l zoW0R@R4u;%Sg=Z4+P9i+1t{>DI&gAocNW+%I;7TZ|BT3%TVR3{XY771HU@`6X}(yv zx1jntCfj6OymxjZL4ct>Is!JMqRMo~=La0F1b*JjF`=^nsAH}24>HfOxI^~kbA%zs z%SAx;Mnqg#D6DT@+&5Ce81gYk{k7NEYHrjNls_NrZ9ak&1|OPj$#CL(g2??c_6Y=# z!0%4iY+kcCWwcV)j}-Nr@-^>@f(L1iPjxAU+iD~VoN^xz9+nJ2g>;Pkc#26emoZT+ z(lV#t&UI;4^$WN!-oH4fU_qr~dG!MQDP)#APDb6|=m-M)JGJ1Lq(|sC8O2mlQsPdk z$Q-`Sq^-8WL7<3dpN3<{ZJ?#r%x&acl@!lO+OI#=8JN6$7M{&n3)DaV*0%&B?qhB- zw~Ab_bI0Sx#3WL7K=QQqX~tD(V+Y9o4?JuBp!hr0-4iKY0N>8{(%y61QLK`u5w)R9 zf90E!*OQLY+Yf1^!0YeVrYbTkXX2lnr)^KTR@F~ch10!#l+>%%_Ln3*j5@PL=mLqFMBO~>FUF>5uD%XTKYSr+uxpH{KN;R$Zw~375_q3I;5+$%y_QTUO?BM;5 zh?PexvXx<1gonX8zkSOIv+(81#+9hk(=UcFT7He+1nien8Q|ri^S{wrarn=sq&vz9 zv~J%{JI(sPBT7lC3F~9|DdwcFl&-lGM}ht0aR*eN!`U0qw%M%6%^IWeizLB+PKHSj zYG18V(4Yz1y$?*_D-AY<7|py|RsytV#*uXgwwME3KA7c{j3=sEX&#I5fDQ>wbnMkq z^Rrt9!)^xVztl6Ph59DzdE%2V_D>4TJzeiqjgMrDO><2EJaHw zg)b!w;Dn`I39W}Er~sU>1Qmc2mY~8Cv|d6=OT=mkC@#_JC7iq@sw~ljB}r|GB`pc6 zOC<6CEl0jk7kdvDL c$oILh_W{|@vDp4ZEJ(^u6`A*f(V^B4A8TC*S$Ia~&(fXPDCc;4NqLywS`|UwUosA3*aiHB zZe67v|8?nTg8y|fnN#`O(N(jy)3470V>=jDGcm1mhO-=9e3v@Mb9C{yEj#d7z~5hW zV$h=tCQsA<8Hh0x|4*HxchWC^za_Fb(G-v=ZeE}O2TX-C7V(aKJ#DS&IXQGeIVdyq zr@rU~CZ=os#Ezb|iKgdcHLkevpYwegKF68OwJuatG^ zIWI~z(E{%3Rh0eDXr1PayGC*|eDobJySxg+k^iqh=Keq>5ubBNTAeUVk!FcyrBO*f z&ed*<9X)TPY&*g&Qf}P8TxwfaK7-2|y*(Am){5(nS&fVFdO}^Mz5)ewK~(tp~q%Fx7CqpXOh_xQpg#%_(@)ZBw z)SK4>*V|7&&)T08?GHNmDRcOT!sh2&&s{TvMDA5Scskt5PUC*m8+Wx~mOpGCUO%!n zbwHZ>kx{3gC<1nb6yJ0i5H~Lb`#BGP#^F z`?LI~119{eZ$j~vIcNWrwXJ*N=TNw~Adh7i&c^Z&QYx!1@krLTPQeXwNV_4_)wf)^ zFW_I_{n?JXJ-OI?VRtYd$vzob<0PqDzn`gG@Wo+tI!cP6)6Q+D`#%hdK3 zbDPO=d53jJaV_5jFP5lUad0jEKw+4ljB^MnV>6GsTma1VfTHf)a!G|h;bHc%7o?gi z9H1mSJThjGzl}#8>a{1)h2=t>804q0s_$3&-0(iwT~J2k*9MR$zh@mRWuetP8<#{x zYDVT3m;dvDVeQVe_1DS{SsID?w zpZ2lt^hLvaePtppT;=9PYz>0%UUx;qb#|^k97ybr4q^vG4pwUh&<8_B^NNlkB)P(j)>|+;ahzjV%kV%)ICDn5 zv&ET81aH{>2G}kk;sAV+m|`*OQ|!D^fuu+l+F$2#2y|N8WbDPG2=I0_NZYu7Ym0JP zednpq4U~qUB=`HuZ1u;sSm+YQ*iiepFbz8;ge`MRi_Kgc%j&iFYCj2fysvVwGYig| zqOS!!hY_)gRr$Va<6}#P+pXWcf-?+_Rba#$zE`X7D!=dT(9s+x>zO&t@*hm|cf976 zV8^>a7PobbM@bC^gC0R!gSr_9)n7dh=Ms(4t%if!F4?9`kfNJ|CDt;9Q_k)Pu+gI` z*uf9agMzt*o8Vk_P)t8{xGBI>6ng~`NmL`$dMtF^M{Q(W!?G4{`RooE$_U4)NND36 z1!0VI_m}rCZ*aqxC0wO#-bl!#-qv!`)P7r1-uMZUo_smP$g+}di_I7h-Tcx&P#P=U z_+d$s*@(3o@kyE7Jlplgn*b?Pq`QgLp<;(^g!M_Evcc8>P;PURj%r`3*G1j^QX-?&(3hKDE|o!DW3BgYYPh#m1jm|Cg_wN zA%K4z9G??$fL|NT)!m6Kb0BXm4R=zwwqER19PU+QP=BsC9xB;Q2_VZM!v*2ymNVz* zzZLKPkhd~7TwRGDzPM=nq@jDs5V_OIe`-LD2Ho)uq%4n2gLqoFG7h)f4qMn{_8JhZ zZ(!z8na#^-Xzx$r(;lWX4``n>$a0V<%&28$Rkx6;FeeIMRdoqNe(oW8?Q0zZIJYIv5eZu8cIE-&`1A#o>3y29Q56 zmk_;fG0Cd&wZL+8)grZqnLsCf!eL-hir)W?7EYkM>T z*wY#H8X%({YkdRrh3PIj^|PJ0&4gb0mwBqZr&9fYsL!GCko4wB((J80<@Qg3*(357a`b8 z5yDQ?WESTG3`t8r78PH!0S|UBJYixS0;{$|T@`2yAg`fst@tLTI3mZEG(AALyVZ=|cR(W~?&ZWh>!D z@Xv8N>{fHl5%@EECO76c`ALH`f$K8O>l%aFj((+Ix1V2Lbe@8<1c5o&VXHw484F#) zrcOopt#%O3I>AA+_!-0nDH;XiN}2a5J{%1e!?HF|Mr~uIGvBwKzQCJW|F_$Vqhuf6 zp#uaBL2iHh#p0a&@TCOK;o)Ij9uLcs%52hc3aFo&J7JP=IZ9|xkbuR-Y#WHcpj|z> zTObobTWF}4v$>g@`J9_N_cQNK)M8RFLtw_D9X^pq+ew|6&{?YIurU z;oU|{?+@bm3J0KO#|lE4+(#rt)z*IY$pjD}a~cF%Md7+=R%rEbtMfhcg#I_n$;t+)32wUeKKNDT*bE&@=AO=O zg+gVyEq@MY9ei6dB)Sst^}#owpgFp<1^%l!9i#tH%eI4n)DnCOg=z`@0d0P$&o@62 zFy*&r;%&D|GY~X|^4xC@tYWi`Dt8?6O5qn$`nW&*3pE0|z~fpA85XHPNy)G5 z75x4sUm#hvt$;jMujdj5tgqmG^%My^x0o2xLQ32IBZZ+4JzTe(yUrByA0aaX#kq4l zBWBC-hCDLdSdUqQ!6X)9d_)sbp@ch}MYvYq`24WYajT(W1D1?BIDin!Z0r1I+_gLV zNV|SgLn_lFA1)BB&fd!wO|;ScTf{I2CIN$T+Z^wp3U~YG6*IEIBv~UI=@L*9f?O_;{-=H66=aO-2 zsR@G@lNh8c0bpa3;AV847=QT*QU1w7e@1^m@md8c_FHGbGkoC3y@qdRxQUTTX>s@T zhK`jUAvJM!`Ez20mD%0HP&;w`F!tr>`^AuJBVtgYGPdkOXm~=6b5i|SE9haHNwtSd zK0YeaeVASw9hLVsE&-FM1K_TV`Y0Wyu|OCqU9K3l7$CT$kIhse;`LNH<+*<%xg?-T zn{PRcWGfNTYNzF~goJ{)FKET#=vX&Zejb_pQLoB3()Qdhx#c8`vqfnrIGBTZb=Trf zH5{&gG8M&hTPe1iQ=&ji#3*fU3&4E?3h>v#JK&2vGQh$atJ5*VkujU|tz6iUlT1wW z?b_i49ENBd} zyaDmO1K{oqygTHj&nE!ot)Xl1|yxX)E1Yd7yOo_%l9`1!wUoexScv37v< z^Q;|uE*$dbYH`jH2L63;Adf54DJ!@E#X7u#_`;s0hO)R2Y_n*0SzbQJ&jQ+vg<{~Z z^G@gwO%`f^yoHvc1G5Xe*yZ0l;@u{j8-}N@28>U4^R$S10*66SBc2GMmfv#}_nBgR1NbU5mdF(4$XpApm#vokCM zQnN?Mw`UQ$M4wnxqIbDte!@A9@Pb^iU6tjcT=b4J^KB9P1;Kcgp=in8jb488ma6xh zo+wxhYSC8dR45r$a0OqlVR3J`=sM|T($+WSShH}J!Hy(sMt;{lZ-E7aDSsW<6jo5?ar|+__3$OB_zEfjnqxqIQL-;SSBpeOGkE(-T{Mz9##tybAV&hh-=zl#5!>JkShaOH@zZIAmH zg;^#Q@>-p8MB z_4dHu2)Fc4zQg=C4t==${N~WTa8w>e*gYGlKl>ZHd-N4?6=r+K_v>fld>r~-UDrh8 z^G@g}_u=amge$RMJdv9`qUF3P_Wo~&1G3Z*Xoc)bQ+kKa5VlP;GcbpZt8nR9-DGgd zaJdbO6{tJpMf`;$xRZP%?4phsl-Hu4QWBAO@^nQD z)kbv9x@|9+&HDY#SH2lx^c6>C_#Rb`5{*tJo3@hOq-?_$W7tm;UfUYPbH1KYLDwZVc&|#a&Ib z&v1beI3z=c@0Q!wcg?fm1#iW&<9ajv36P*(x#~VnJy3Wz^&jgQTefKfPX&tZ7i=jf z|IhYwmsGyq$}^JOm3;fY;7j^#_hv1J(RmSK zTOKK~{+g$s=mj?piBmvWyKz4wiN@Mw4zHQzXg{0HRa=dd3gH{RZz=jcfG|QF7`De=1xr6a&Dwv}*hb9z``=H&>Tfdt zAo>R@IWGB)4nGnO#*#H`bN>9t*EWc*Wu`j=V(L%D;qF+I@(x$H2bb(;Xqe1=Xoc4Q&gC`2UP(JNs&cb{ZM^GtK5M|p!tz_{9Pqfv2Y+j=02 z3995Cy|(JUnl#PuzqKOp4?Jf6+dU8B!bD}XfgUU(@w*rFL<>GXWl#HeEZy29-q#YC0;_0Av? zi2e|uaN1eJb~>B0;<@EML3j!U-bfuQiMsjtb82%|@%KxPDTS&30yb>^TCsWJY8)E> zMN0^;@V^*J1>)oj`*XssBM%3}=k40u4G0mY-4{r&E+4+VED3Xj5V_36&W?Ho@uc@8 z2pe9G3`;RcA~hcS1Gyh4TFy>8q3o@|A)h7>Ti(il_S|2ss>&P46UrL|%kG}!oT;Wf zis(5Gc}!CbD%osGMn7RR;-ZnR+p3Rfbuir0a0&sAU`HZ{a_G6(C}Z&qgD-m`0B#f9WVSW;jVegr zqxd+-ii19h7(FWwmx47hIM28KE_yZ(7q$qD9v?JVfI8YO6&E$p!|w8kXhn&J0`4R>$hZcecu7GXy)y_NRK(p}jG zWl=?nVeA~D&Zk{FPQoVzQkq~6M1_$*ha;0V4+WW+yaIo%o%jN4hc`2i4X+Hu{ppVy zBHq~|bZ1^BY-vl7!P&HDQ{G%Yp{(T)mgjB}h2jX2X2f735bM!6j>4<#)$GRv4DKfW z_}gQr{xTa+)*PdB%T$Qfan1`e(%0P7jun4npy1aG5ZPd&0zWg)&*%L6*U%0w#CwfB zKuQWA7-qv91pP(hK8(3$+5fC5zpC-1VV<)PhTf|q39yNReP`w;L&#D)yBLu3^(Fni zSee$vF8NW#M6pq9{BUh8?3}(0?Rw7OrF@;@`;>KH9rYEn3{i3V+_l-xU-4Bg8G(k% zjr%`tx4{XzM}gYxLPLiR1KWqMNSL|}Dl_uR(Ij}cpX5>?B?Yo_gT!uo+J#5w8>T41 zX1DUjz;#jR(4QaMqb>eNRb~K2kZ%zc7N^!~C*cY55Qv9m zlb4g0=8T^d?CGB$<2hIE+ALc7PI2D2_Z=-6jpT|`rQR!K9W?h6PS|*;7k-Y8bWhS5 zT4R3$v?QVmB7{`^aB_o6#{d?*U|7eO6{OmYtwG?6nJ>{>m&99iY?pir?v*9yPDS?e zg_O?e{U%apkW@XOM2#DYeB69E!aA~eQsb=z(z?po?iCk^N7%y5FJ@Kb=&EA?qrP&HMj zd^6ARhc_;yHNt_oetID*4Eb@Y#jGhB1WW+OZ*j_N3WfYj#JUPL$CokSa5c91yT-Ag z9|6x`lF6aclon4~&DQRa>Y&Aqkh@z*(!ei=VRVZCPRb}<{-iEnP~Pz9kVyzpJ~~2< zYtQ9YtUrmsVdUM7eGQ}?DfYbyC4ivMC@h>ed6vG_8^USu!hjTLqF3|y3&3QXIa|Ad z!>U4_xa40a2V{5X#Pg|k3`Ej{Y@}?lpFtS1mJG#06M9Y>FMag(Tdu5=O!u{IR?SvyY_t+r7 zq%JJ{iwH0%TIh%f1qf*EENXNNKi2*_cSoscAvPYgB_vH^vm{ypWpiyp(n}5^ML^QX zUaYp#>4>gZctNDTeG_wQKxOmgu&209?EGxJ`h|e_s@|^NjtGb61!_X1E9NgpktU`> zhNgl!Cpm`Mg=R6Fx)>IpA%Prj%Y?_w7Tx$V!;dWkOO(_w~Ikqaw0BPQT4N$uzsw zWpg&^oNjl)&cp1LG9OW?uU86}u5d#xeu=ks>gtKA2xqy9lN%X+0`r5q%=l)lH7sO) zZeqP}WBcbvo8m!%Jt)L!a;Mf3{;?-I22E87zj41>$gWqTTaOseL0>Drmgp}#%~&MU z>;2&Crtl9v`Pt-0w4k8f`IL-$1JE4si01Dp4QNH5$MwqKswHdg{G9IC*<9BIWScmH z!#8V|g8rTV(9lE7jT!f3qA^@En87WB?^jhpmLMw(>U-`zz}ilm%Tda-tV<>;>>7q3 zK4O)f#d4y}=)z6Nl2X{ukD}A`VS@Oe-{?%O&7Dg8XakV-3DOp^^UDFc3pnSbT;2E! zY+gL%T(fYL0>T0F_*wbWa&3TD>YNJTpjESzhfH4UY1@>+b5F`8dzI)FL7ehA>1C(r zV9DZd9jSZv!(!~PiDHWA)>~^?~&m9?C5@@DMpX0gnax|^-W5p%F|L|6EWd`;t#=R_W{eN4QKz)!>WHs#~29fI-`cjP@rKSzg${bxLdRX5x5`!$cl zi3V}JihsBPmDqYG|G`)N;CO|Zs0Uxtvu_{BKxUJ7e|E#=6TzH8{rEu z_xfJ*071i|w!f|^%69;;U5;KG-CW9VZrq>gItJXI@w~kL7kCveN?%iQ>UiO`@%3Y( z=ur=N2KbnXi4uQg=l@6~{=cpMSpS^Cssi*;NBK2uu}}Qsj?dSVCTY7Z3?KO}e2zyB zw6Zzy{Bb;1;{78cwf)vWz=cWfJ^xC#kCzKsV>@)_XSU}*E-0OxTAdtQberJ;>WPWbkC25n6R*R?e=}3b$jpvxH;5m_OoZj_HwO9M!nFl zK=7^=U^cS@kClnDQUk|7S(ZFMZL5+N+qU?rW3#7Wh|Ag1U-T|7eAZWZ321#XOueMZj+p zJbY*fR)t<>4teV87#q0oUaRw?N*6%2V9yOG9xhl_+-EDj*YF3v5tidu5;Ti2ieVz2a{ZJcmma%a!I0EJsp*wo0o{4`K zec?X{jP@Dll(&cqZ0{wxrizM~C+6|Q+((-97xMJythTSZ#P zLi3ZIi`(Lj5uG|O&lf({MuaLLn}-=O_3vrGAz8*w5crI9w4~j0yGHop0YdHYL8-Y) zlsRqS@fYvCsH_r_xv?_ohVZ5%lrV=e4mRQsQ<@O3ei&p#2(AriOF{dOmUuQVVT}4F zxlrJS^_UWGb)L;>g+ik|3#ZvM+b4ZjWvni8D?#r`gAbp?Px&rPOjk{1h9K96N-7k| z>R>@5kbnlxvioL;O1Ujrt-nFY0lzp*epF~bxhuWz(%ucr9}2m0h*;iCpxLPLs<%TJ zsp|W>wo`5d^cXB&bdddd(U*Lj-2!jCC?cn;&S$`(JqdtJj|bkem9xQj{cg|2t?0L0 zHX_D%=}Igv?GQU7PBU}KTzDhpcu6FFe@ltR{yq(<4gAV!lsA1MzefJwAOJ@kN>o(J#wZt1<;0f||63khtsDE3d&Z?{IMo-?U z{rceohr$-wIAEFAAzg9vM|ds|=$!B*uK6T0db68cTNF6BoqXV=o;8rc6(&g={ zK3jN>!xVklfQQYoPxIr#XxUmCH&AFX+th{#a9J-x!fG873v9J|JzG~YySjol67n0C zu1E;5r`ed^&87`C(%ZM+i}PVKKsrvE!-@$p20U%}Bx|8pPc!r8h>AIG(N9ZUS|YZ$Ta^nzU|Qx?fNWw5y_8bp4=|Q}1BSlR?Nke&=olq^Wc6qV< zbh={iY&fczKWv6K{)SDp5Le-`sH;KdD2CJQJs8&o+cHdy$^{}85F*zKSi|+(@=qL6 zo_Z?A-f;g-kC=t;)+B926@+QQpHCu1$@f$~T0ZT>)&{rYZ*v_^7HwzDjszOnoRCv0 z@OVV*F-lXC;<9zih;Rnz9j$FarGl=BwF|>n!daxmJmPgh2(cJL?msULUXU|I7u4cs z{WnZPRHTtCGu^T76P>`cG0eHf2#T3^T(b+;(@r_l5;6KyMY8;JGZ;S2ef(k-|Btwq zeZmUZ)?@GG+lHM&B~>zSMUMwJZE$D23R%(m1A`jIW|@{|?h|M8*?~5)O;=|bU*A=n zlF-I1#R_kdEgr)IjnRg4-@nvtkDQ?NZvf2N4mWqB=ioqzAM5ae8bjmxSD+*QUhQL} zn@?u)zSnxP&AT@Fv95*WJu<>?7QDt*W-p1}o(!_CzwnH64MXqBH`$Z1q(Z#3-k(#)WjPd~wuVgwS{tM+>DH65 zhKi*O{F&(6r&-|yD{}%Zr~BrB!eNKq>gTa6bNr6^!JDoPd&BqtUTLv-?}epXt|u#4 zxmV|KpBiAHEt~HvH%2m5|6CEx`eeV(Ng|x~;kw~Fv#d=xp%jbJcdQZsR12uMiK*uB z;nCn-%5M#UqzsdL3T7bjay&7FxMOcY=AL4g~hi=l;_dHL|Nw=*6ZxHF$*E?E~BKfbfK(!mN@d2Jnz3Y06> zCQ|*fwjS!g8#YMa;*b<@OVbX0_-AMz*swd#FwKswC&QnrIIWQ*U%*`fAx|ROPo_A& zRc?Ja_D3ON{D(~2je4KE;`i5L&mF6q3b?rxZzur;Aux~Dc4CqxGiG0_(H;7`M{J#D z69?3M;&f+h8yy0>E!zQ9kf?0+AKUyw8y~uPVZoF>YEY0p=zG3 zZ04TTLSG@jw!<8q^@220ahLtc^E`qB0c6vksunA9EwXN2Ydb7;Q@=~wxVvb1Anknm z%BH!m7{rk_%&LJ@>7@vWG`(R0`r#-wnX5PMZIKS&``A5390WOp0UP+Mb1@-qq^Br; z$Ex1u#b}SkEMEZ~!GM`2s%dGL2O5~?qbMH$t5$yQYNq|- z_~{FC!o@bq&ii@#P93}RZ={@lPE^C1#^ERe16>Up%Q+@y?o7cC+gm{-&68JPZH=?U zIS0XOn32Vx6bC*&+#VN@B>nfq^U<`Q22driP;q6I+sB0F)PB|AQ$B!F%8^!h>+y@j zG7@4|7BKnMrc9ea^XMj*^m(gN8;-S1wybA4v-%Y!+>9N^#_;;(W!myeLvzU5vy=TB z!ShB=vl*{*y}1JQUl+4c^3W$5lK{Uf7I@~y{?cDDS`?!%4e^GhjuWV_-CGL)HApxy zjDUNP;q&p4Q}*9j<6JZ?=Y_rC#hHrh#g*45g4@0~J4mWM%FjH<)7JJqr`c3g9~m&Y zJN>L08?TrDA1iDs1NEiJd^3o184D<&J5R}HJp!N=?k2zfF_m;S`)bTpAs zXVS()V-o|Hi$e#vXq-l+`Gg96?GsXF!4#u4k0G{$g+@P_dlq`Rr;VOKT;(Og-qU zPebhoVCvE3oe#a^>HjnM|7)iOo;p_NnYCGC0E9ooO5d^S2W!ni?SSb2xoQYiL3ZRF z(i*7GKBudz-veZ0m4FaTw7?8##W7oz+x^~}q78`Rd2T;B&!|MYENyGa(V(u7=qVbY zLx^0!$kv*WRz@!347gW<8J=^0hv9t+=fy6eRUR3vd&P3LpFM=<097Bb&rh|`w$Ao9 zeed}Gfqx&7nTy<)X(t6t{(d)2Wej3{p=IrKnmo$^1s~?q@Au=r>*;}jHC{k#-VRB5 zlYoCR5psfSe79hQ7*9AzUjfi{z)*=z=D>kr`epc$Q!1xtx^~^*x;X}*=_Zr111r;Xa-^tICAt0PQgm!ExH3Y^*R4$=Pb{*hXs^|lWz)B`9#8p`MHTI0gx zXY=dsLB@I4C;K+-8x=^}h!uwn-%p3|xQ{ExCjlLM{u^A$_3~uU97SRdXb+u1!uQ*h z7mki{{N;QUF?f%)?*2&so@lJjVxu}*Fvm9Iov2~7Z9)uml(Mb8@aBenTI^Vri|+c5 zzn}JFUV{e${P!e#;=U25jOSaQ6CsvK=VKkej18O|Ka_us5wy8PX@a_+n=GlSunIeYkJ5Vs)T4{ z=cI3e0&t8C5jv#=HQzkbOqpREzM@z10 zUty-U?}hfcD)`?P>f|i_zOA}`CoXf5kcvqv>SE(6Q_R-rN)k8kG`+y(7<_;2o}zws zCa70e#|}PXInCzJ!?k^|I2cq>Y)=zKrwYYmpl@+cmI2YpOTPic_CoDjS(gGfw%?eMuAyp)`j$EcMS2%G=OkAZORNG;LOZ_j0M`4 z(G~jMgTg6uEh0x5M68FA1#|=lonLG`)a+*ANwi90pY$e@+CzYRn#J84Z>=nTBY8YJ zp;ofIRSBnK+ynr{m9B2_r}Vlkx(ZIm+yr{}GKcz1g>kGAAvG%FM}q(Dm?{_b&mM)4 zoAM&%quW~CGc6bhQC`NsJB9;%_cG;oPiyyY8f6vMns$^gYt&*ZmPv-3>$z-r+S2bS9$0*8L}VR&nqedCJXXSZ8U&^k?jr3 zTrSo&P5(&GNYx89c%J!?I2#VAM^(tRs)N(|qW`jH{P6qp=@m99t+)Qa87a4DmN>@~E!D4xLcu&nr*r2NfNn5b>m}#qV8R zE!4fgns>}%m3!o1R1*gxCf8snjk?hrL}%sxqbvGj&QOS1w0m2MkbR?HpK>H;QmyQL z&?v<{%0qah-eE)Pu^%eO{@xKi`0pEu&?$C!1JIxQmf^bI*+xI| z>j0x41CHMT78Hx1HDf(S%l(`svLUh?2Px9FKe`^8E~yr4)lS9cPmuy;S3lSEUjU9U zk-HuZ-ourQ;tbxyTQJ(tP$GWEP4vj`K6L!@yN%*XxMiY;H>ox`U)AAmXzUjeoCClO zg%r5-HhWY<$Gk-gE)ub6XNx$izXhK)ox<4#w6G;w=5OcO)dtGIZ9v%0MC17hW~o!| zv(@e|S1ebK9+BWAu4cblVEg0?@n`B0%Bfywz@S0BPzfkr>YjC(&3qSo4n;c0Klmy& z&@QqtvtK!W^me6exXM(6kArO)*~#Toz8}X7!Xx+@>f?K0Ld$KMxdy3iK0o?d7=gF> zAYFA_MdqWlwToSajlE>?56Uu;oNq_Vjo-C)73KWz=R}Dqn*KEV02C!Z6Hp;*O;gcT ztBOPKLE^mfp@EYgr0tU{0k7lq;FzZIEwsMpk=qb!LE~3?8q}j@>WF`N#{>GAnOxw>GHq9e! zcz@?j2s1$X1bKGpiNcF58kn7}(%9WEb?odTP#yT{MQ*jGGyv(Tgww%q(vy9y~yJ5;Dywc(rnEjosXT{>z;tns% zfnJZ>!Ydo2e;O+u^lzl{<;y` z*8<3CTP+K^ZB45kE64y)i2bF}thTl2Q+73M0+qRuy4(R<*4TC}1kk zEBQEpuHBxS2@Ci^?vx9G+8rHSV5(l1+6J5vh$Qx=GX>yu&L_LvVWc-Ppj(eWpT|i= z9fr;onS#UM{(YmufTTk<9MBOz*(LxHHHbcrT*#PC4CS#dcAret;9hRIw>Qzc8Y8*c z-x9j(Eh-&r<5qkg;OU0DSkq9ba&xw(`1--Uj72&lkpNwXcc*xnc00 zXQ$uoBwy{76Gdk(hsEdXnEI|v3d$fS_jiF)Z~);r;8D_T2)ip@u|>|p^;#O0i-+tP zi;uL5T4}bX2-%#!g*@Qeqxu06b)MqB>LCoNzyT7{O-^}4QBdsqrq#=Wwl3Oexz5I{ zK64yUhJRn5XOu~~uXpV5dMmrq_TCGs)9T>!ku+jz{coPlZv%`#l|~n4z2%NheBD7Gp&%Xa zA})ClS^eMuB-Pz>FP2lL-y^qM3kD>?K0q!x$o@Nzc@*};OR{t}MboPE-ZTL6rPlO; z5UqpXKVS_z)336!YO<-z2lS{+og`bkm;7#zF9Ly_bhMLM;4Md+>D}lNLx0S9B1_A z1DH_cKN0)FNJkGAMtsKeq*amJf}$-7ik82!D&z0-00`C%@XHa*m}U?RBN&USYTcQM zT`vy)rbEPo4_9xAmRr3KGIrl}NCP7EW^M9Q&z5A|ll52GK<*uBbf^WQr3_9o&fXNb z+pF+@%`1oe)rvBLvo8*bDQef-@FHCwgL>Hz74(F`>xzXD8cTZ#_QI8Nte$xr84Scl#h!H^CQ5v7|b!5iSW##{0idrSC2T z$#SbzbZZ|1HC11%r89(9L)vPbf$cT#I9CE^0jl#d+#dj86R7A+UoWPuln*HP265S4 z0UuUv5ahS$gSpQS6?VUaSeFKCQieUPk{v1{>VHkef2B(Jl_HQhX04f)*{mfV&3SMm zV6F9X?~d=&DF6En3$3)y6OT{0*Ezqa$Smm`dg~uT6qdVn%mnLL{*Rcbo5-koaer0)l<<`7MRK>$-#wMM;X#z2G z4haTh9i{)&xKvKD> zh$Ba!PU4sW2Rt}(_y6H(fT{Q&`s)7{t49UM(7U*`hS;XZ6G{sTz{CNsV3+~~13p39 zH4}}>y(`H;z5Ltr$T{hC%u<$O?~!xe*)0hD36UlvT|SunVpL_FK7AWMxrT3X_4@u7 z4}(5oVyZTeo2Uwjx0_UjFM~u29D>a8_ZpqGC+)KIht>R@kG^xqf1~|GbtrHW^XT(e z(g=qS_H&W^o;=X8#*ye>uDm2(hpaau+OcJMAWFLu^@CR?~xQ zw$n$$8KmC|`}1oKsa=IONWJ=ur0lN%r+hByh$wn>iJwpKc*J>@f`PQFrS@&@(Z7Ci zy3D>!Emh6OYJKlrI~b|zIV~XC3berRufh%AoG4RLSsFhYndw!AH*}sLe@K0r63#M4 zAF*yPIX>n6gwa@MV$vhm)}0Dh#C~Z)058c9tcKC34}PE(+lhiYrv|o{uYzFoRG-A7 zuiojq>AE&vV!Ym8r?^$B=+k0rEEv8057Fwi^Z(m-vAnw^McjI{o-e3zdkW!Ep=+?8HP5) zO10+X2M2p7u%iO#zdsIinkDluU9`hDwE?IeIbPu60H1A}ApWrvxGPbp&KvxX*yWKJ z^qWa@B^+^Bhn|Hqk9wX*;&!|3_FuEsv0{Nk=WLOhzvOUCMdyK%=#v@#RRwj8InLuS zwEW9(uDZ9gm)kE%98>a2X# zI9lt+ZdhDK;x7)~A_9PrZ`_()y5L&aXGLj`x+lzhy!#I8^hmKKH#%2oq}#cm7nJ4A8qY1+VXS*4xt5FY#H! zbq-;)H%*hFqPT(M&m)z4b6XD<{}7VaOsDISi$r^XJt#jed3 z&N-~454%R@issB74i&g4SawsdZ)~#<4p{tkY2vwY2OzFo2p6>;O`M&# zyKA;Fn@*=auW6$6b*m^pe#T}F;oqp$Y7}Yaf(7tgjsJYFb~JiL(aC*nr>KD$(57ti z((yIzT+04RvLS7|B0DZw);{p?b3z*(5jr_9Z86`XqZjEqRW=vpA(1>~+CK-%vOaeI zvnf{@`)sr$B4PbdQhr7wS74@BCS-&1{TsNY^O<&bxQ3<4PDuzK3(;eOIm9k!=@K`^ z)XhFx-_UB#p|^WVgia02M~Dr^Pp+J7*;9tu(p{e}q{?6I6nJ*fG7(h;9?zF)=Hwd= z0XK>q^6{Wdp&1uYV!L7dJDW;Z8lS9SVFAuF;V7K?+a=z3H_S(MOsE8xGHh2uR3v9c zkNp?AW;&X^jgB7it0CdTe5D7&YRs9TVRl|Ng=!7=8kR=d!C??OW};onC17orpjcij zlrx)EdXL1*CA=V^rf1gvjvKLGz8UKjV)SURD0)Yh1LRx!C4~RP?N%kR{p~E(!Lg;o zuzlA-P3Ba>!R&Cb#rMkIvd5abb2EJVH4ddAUrnD!6a-!DyP_^sx*=wiak!U|AA!?uCw;R&Q-dWPuM9-`W{1S-_3( zJ@7IsXKh(qT-d~Uex}=bIGs;dRo|YHIH3g(o*Epe)r=+`j>Nmp#g*J~j<@B%aSt8a zmVJ0_A&}4!an8yV9V1K){Drrfie3V#3&j~oeSUU&?Q*aZpK$cZx7i&G3 zae3h&sWSEKVyQuPlyky49vi&busXEVp;J>+H{$F;E1j0%KeDDtY}FxUUZFUxE!ad^ zs1MH+OH8_9dc&IP9_`dT;Wzr&y)>0e-FT)uSG=wM>1vpulcbf$?vLl%r+~LJ^bT{% zV-ED$aULC@g+M#tMGB_;jO=0ZX+YWcY+AF*I&s{?dFSTX53be?Y-JT-p7tky(&6$4R|k$Y5N^w zVo$({=;1gagRikD-eMj8K^yk87&iJ1iED0i23s|fdl$}xampyzjV}zWc(@T_NY;Fa zZTh%J5D@AX>ht~Nb9QF4R+o8=ZSjjY-R-2oxjL&GzX%T|?sWfgi#XWkdB?!}_$#Vm zaIc4()c!9;!Zhxo4~>Ctz~KPFW%7ct?}a)RBMI)sd+gRlm6z(=W(&L|B6V8!!&vM3 zLZ&2=^2A${h`lYIEX*z-cWq*+`(S^OedvY-hsjpWVX*FIB~!M5F$V9tS*NQ=H)#I* z-O_bxeeH5zS;J1AfF_}%XR}IN9wE|T{&413N-R44sVdonXxDjql0#n2F3^iBI^v-t zP^H~~x-Iu!+CEf#eR!Zr>KNpc7fGlEPEkI4iZ!B}LapO_BjVvRF&~F|KX}gOT&a!5 zmW+VX0|#};noY@z_`i%@PiB?bqK!Ss3GC5sOS66<9W{g^W6K~%U|f; zJFC3wEx-4--o1AI#W-W9j9yOiZI%YuF`y0^Z^4Ew;CtTm@&+y{A9Z2AIj(OWj`!{O z%wB*t69eSJZ>nO?_P;e=saFh`2Cm{;N(gzJ=-8&EQsW1o*5~% zRX9;TbT7W^%RkRA>9_}pkVGB8QWua z2i#O2%u)UCY{@o8CI5)1s^h*ESjp^Ed)su3O85ou`oqY21CJ7)CkmR@r9LB5r@$7; zEUyIZ!w0oqC8LKnjf$&p>CJQ1h9ig0#z%);^@LSzlX#>j0DZg%Z zcJZ}M3tr5y2}H+DB;fs?Rv! zMWJ&t7lqXkdSv{>+e4uZE>0x#805n!UCsD1|oap~3u?U>K(7aRCzkrDxrGJvz ztA2j@fWxK(Qf}Y32u_~q%G;@Ba^F%H?4kq3R*KapBSAI;-k=)S5P(s7e~Ah zot?`vNhw8}jmgft=U-IlBF`W0{_^yRtKzPP9uy{Jqff8r<}Jsx^7@Z87}Yg?$&h;g z5Lnrv0M2&aD?n7A+wnF_#Y)K5%1F4%Fr!UKdM-6N|XgvdM|1H z$gj2|w8-7#M(<)(<_Ui|FSjexOL5R#m*L-p(oM*GpIP6CdNt&u zyFVr~Fm6zGSKXin{1r~}*XW=umm|?ZyY{Vv-}j>SAyD0RK1mj`_Yfz%w{;+4_y{+ zI-HCg*Qu+lFBVqlL~LyF@%Id}#|abQZ7KBW{@F^nFsqhQA@@~`dlH4hIA)Vo=Fvip z71lMnzSMW=O{o$S9@6>$K?e~V-;?F&I|1eDa;N{*ZTNbr1F-OnGeC%0BJM4}$8K}| zXJrMo9Y`<8__?aGlGfu>vz#WKUm=h&$tRUXk178bHL%rdZt^$-AGA;~b{As`^ zyNaF44h@3sbVhZO#W}s1S02l)se;4kvC>M(zx3rs;h{)zDxFtk_S4Ki8k(l4nYv_z zI4ysuq>2%VXB)%d;ozF8Q{l#+J4qV2MfG%>#q-37jW)6TrsTa#9v0VreoD0Up`JF{ zuan}C*-;qSpyNXqYdR`2{*y%cNXDz{jK>NIDt|^5A9jKzD8MRX4v;rjT;D+4cX)GU;b5*|))yN)eI&tym#o>SXe9l!74qTi zhxnLVwUUktk7@^fkiK<&sS9ZJn-Wf z9ktn<$KvVfmWcL&Ah#yR+S0IHFf5(pSvkf=Zu_x{mA9L+1Lc`@s{+R8>em=9j<6b4 z-aEv5wqeVj-J`XVrJg2r{6J5=ex}EO{|PFcZlNkPFc8yYJ)ujCoC6Yn7Tvhd@_3C> z%)S)IIz$?$ZkKrPewZDy)z7Fo<-zyqBDREp+AFR-fiK{;ums85SwSrCygF7*z64C9 zQieG{TETR!Dn(I;y|S}m$Au>QvCX&3zbg?!|H{NANSH5U~)M5_k2JJ zukcyVNqBroBCyHBWomp2Fca6x*=jBFB6% z;EiyKmwwfM8fYRC3{;d4Ry)EAs&|`e@OC?GMnDMP1jMZ*Y;R|25|&AHA?Po99<{&p zeNE$4m43M{d(>xe;*gc1}tD-z}#l8h(41=s#KmgeNClDRewF;Tmsc<>8lai)4IMhaT~Qo?$<& zep%;z(>9YTt4kw(v#5stfw4UMKmTJ;$aDg~PTqCskkK2Y;v_oG`(x`j<&jI3- z>oIFX-@3Q(XFdVG>01=$v$0d%<)-=KJgU?WnV*atqho;vMcDB(_Xxy%5J*mph1iBS7ofcHH>sA)iUEnDPn&V8 zp(__g7NTj2wBDZkKl=t`KUdP|+(!&Wjn*4sGk)!*&e4&ASg*pz$oHdt|7BeLWMrbkCbQ|`qK^{p z(K(fF-A@iu?9e#r_mhhI6VwwlX{^8xKgoBw<5ZNK?e5>-;YQW!@-*9Zs&>N2P1{ZO zT89;hp8Cn5ek=t-^n|is?I&HDhB+yQGhzb&b(EQsMrybdG&nBh{**l)Nk-ul`|bT^>1<-C~65P|L!i zG@vD|(M%4y=g?1mT)8QXfIbs#9{hAzufnA0gxwfp$hQL{s9DPB1Rd6YoUQ4;sbnFRGA zVUBcVdgcAFVs3o;(ZH-0#R4$muiP!_dCrue>=85JhMqA?oKWFy_v)5kVw2*lg4p<* zME(vjZ((uGk>E19u=3_%QAa5hj(7a^urOaN5rjj-4=$j@hEmH*CZ-4ZK#$nON;`k1!TJa zLu+{bVZCt9edR7<`YT^gj+?I~`dborEcILd_B>_n&zcCx0EA~LRXwqmL?u7=Z<&{c9)?!@Ob?u2K6GG4f|zf)e* z*gtM-P~X6&F3ePqxK7gWMda2bc|f*A;ASn8{4EIKUr}y!(~|R=a)CA-8o$KG%Qn39 zchntE(d&xBp3rGH_Ym+5uO%==OD-l^_wk&Dy3T@Br$25T9z3jd@9U>ovEo9_A^g)I z4bUA$S3Yvamo4Vj5u0peo|^5V*ZkaBkJWkkMw<_^>#&xf)Y>^jRYsSW$6XCY{K?(` zoOeXbzN1rD(_eX9qv-c)CBqR(g%j#$S%dWGku5?hN%Z11inLr%eRGxBr!Vl)b)C1u3XW0<1pyh_h1XcWQ;q4@t{@5b7xr{7cQ*~I% z7I~iF9TwbVp5iTB3|PHS{$aQNh6VAZs^6rnk$VH%;)&wmXOQJn*M{^rEz}u{N!PVk z*Dihpf_t2O{-I7?^E-Z#2$4jJm+m5Dz#0~XFPlA{u?L*x<;1TEygsrCqCggI2Pg$Ye8>)I!ufLa)Ue& ztUR~G2(Kz>e1Nr4Q_4h!y_A#M_``Bv4VeoWDr%Z|uuJK_J0 z6<_&fRe4Zhahw51%paI| zVU!H#w>4mP2!VnGUKoS9Z~Og>1SO}EiN-}0>EXin5MMVN^|W&WwiT#o31+LiFyM?L z@N`Xce-L=ik4P#5DF9ISnnmIDh(t_LgKzhwe3XT6x0p02p*Cet2*>$U{GlHCTjVBX z%LM(&CjIA&Rz#9%DgM#7I1J7};!jr18ysbZGOQRGbu*^c?au#rg>v5?^XVeE3~4Ab zk1%7oS%;&ZAA8T>V3YfupLT%u?b&qM&=y5+rMXxiN zvvfnw!zt)EnqA~Z#J}~lQ2P*-Pk@bQz#U*0kdW73%!KCheI%^CH+|Xn)}Ms+jmFwC zOkm3wv)X8ZD>pUCo{NGh$1Rvhm%&dOGk53Ia|4*K!Zk|dl(ZmMxbEpLPanY%?>tI# zvmcd*2wNa5zFyb#EY+EsMxXWVj>JB*K-23lyJAtSA^v0Tc$vC+fd1Th=rL8>hC}=n z?fDrB%U+AW;PWB5H+O1}epX&v&^~_0RmDA}gX+7b0oF=vP>7`0gnol?u8cBb`ZfrE z>`pqXSu<$LWvSXfwHCo;ZmbM!57{%?PgFgK>p#aEoiXFRZ#sS#U?~#GiX*=Jdq*d}K9a_0OF@?3i>lXC zM4IX9Ate%BZK@V3(-gIdkFMcRFZ-IWLp<7%x%m(bdMxZJ9o?Cw>5^}s9ja@fB7gX#zYyEC4 z)uwjdrl;ilu(I?fsn_mVBIBCa>rSdB)C*GNQ!Rv$*jb;GGZMcsBJ8O5`!booL%Ul_ zw+0c77pEEYs>_!ocZ&W~2@8k&V_IsrNynngsS|fJJ9Cl?^(x)M8^`jj^}pVH6uMND zkWF^1FG9dB-YJK{cXct6bbC;`UtyFX1yuK z0eaEO61g&t$`|)O2H_@QCiMTIfAMX1To4<*=W&8)yt1H`#Tpl>`cMwL_lMTV?+@fw zzDCKwrsktZ4wM{yk1ZB|dRVKHB%IMmxain-Q7?Yn-}Jpbf*zx&#I%8wAsHUh`4Ai? zIA@1!?A~utV$-LgC5t+bg|42i^%>SIrq{_J^g$2(a=7d?%L4-D+e*L}MPp zR7MW+N&a7`o<`w){U)z2W&ySuB({E&BX5u^7XW)nF)8VVkK$Cm5V-vwkts?d zlh#GyHHei9;HQ$acr;dJUhI%#U{Dh!FjQ!;)lcH`C={utO^}M{ty%Qhn1V;}(PAp= zVm;`kR4{&9(v2}$5tO1Pdl8xu#xr1~1{gf1G(|YY#xJnKeVft(GYlG6WNGN>_X+GX zV$vGJu6XP^VbD&%u_;TPg|VnJl4dyE@dPjpHitG)*9;~iMkFm;JE;y`gM0~K4Y>X3 zk(_i_z2t+YA3J*7W>d=5wz*5lM)!S7qlndjrLH$|*Kr~Q4?)^1MgX~K+jUbhX@p-W zrs`9iB|$-9wt=qss^#w&jAk?i^z{1*yZGh+!Cl3Ujz&5#64R&difUe^7W|$J9Rh46iTe0!O zazIbs7AV=j{^t9P*Pra-_ux(Pfaju!R4cr!!ZLCxCuZ`fdZfl@&z90M;D|-xVtmur z@2VTEeLNia7H7lfLtpv5w2v*t`__Aft-MHhote4|3@xNBV^HIeY@{k$_ashZMQBLh ztmpf$C6IXmkT08Xzy-> zrQ9?P){_JjnA-5$5Ee^99BZ>tOHSOpd0uh{SZ6Ml!@`#e)#x~pJN1MDi4bT2K>x!RD)$tt3%k&!ItAK#B*Y~`w`V#!UG4C| ziEMv}wrrvd>w^gLQ7+8AbH;7XR9*bL;5Vm)Zg~8gK=8n)^9;Z=^e=5t_`wGTn;v4_ zffM`UA7U!7!3oB>HkY@8Aomz%IN#1$G`wtu!@VnS!D#P=EL#oS+NF#&bkm?9`W{s< zxK!3TLc{7s;{5u1_Q*Tcx5nO!DeF~Ynij&pM*7Z0V)KL+iEEv1z@+$2BlKg}17XEE z{VQ~LvC^IEhan$XaCk?Ww!*~c=o&Tu`oJ5@Zy$>1E-*u`Y4{hRLCK)Ka%E`9ayJ9x zVrIIET3AmD^cuSFqIX*`ht%K=yKJD& zzmJgS>ibez0TK~h?`AoXprgjohbCHCA%Eq7z?s4+Oxj_-#n~YlAH+x|`Y`i`!n{ph zh+wO86y!ERKIK*}9Y5_yBt1BF$ap=(n63(Pnkwj$Z{f2=@Y%HoHvm2oOgCHVl2%AV zQTbbD9`**~`Rq@z$qY~6x28oQ&rPq*=zm9KSQw$+&+WVbfU>8e)(*ZQ`UEeu-PeKH za@X-mZls*xNVskTp5c-W8+{882VWSJ_kgiiwis>C{!*Z=k8>2hoKeh3iQ`b~S2<}-Bk%+fh0YnRyhon}~r&?dy1(yliX9kax0PGaRGQj|A%3I>{CMc`A%F?k33lMypm$GGV%irOMvS_ zG_3AaQ_%eF-ezIqHL_la&4a6ix>fI(RDg-!(2`{eGjLlNIU~GtZ_mTpiNfQjyMZt5 z79!`k^Gs`xI{>EBdy32mi^XWn4k2F!pdiCaz2UF1>Hfc*k#|JBYa4!`d$R`SjJ$L2 zbM@HxZKVwG+6$w^Oj4KJT``#s zSC~G^pBz~)1j=FZuY9udJ$kH(BoArrJQ!^9)5sa&4SzE^oyiB6{o6UdZOa9e&8F7H z=B)nft0V8g-H1b&qP-7w$RMAogDW@?KI6V+&EJ!toaSb2mB9LDGXF8ip050616o_e zH8%%&&4{CcHLWkL!7UyE<9d8fUYZ_Mlg;(Ri4;8mslrLiIqL69gCKDefrczE5u=1J zuJBb}-OR%BE-J*vzvKWIE_W1Mb|I;`G7-fYpza3g?#7H;Etw3L07}^+9Nc?txW{&W%zj4c zmKP}KqHGqX?BOWx3u3B}_B)gV)0=(3{n+V(38fmw#%rav0xGjLdgWm8VkZ#YYgfabm9HX-RhLLuhaWvgBq^yn*Qq&bExaioEmyWPYD#x(6SlYSJAI;q zm|3};*XncV-BXGLV#+D#;2_{%JeD%~C3q-$xE0fBlAwDK{q;4XGbC?sN|;+Oze~@* zzi{yuP_zqG&B2LF@;sxBaVioIkG#5itx*TFr|KvoOF>fRTcyhd)wMtWw}~JQd=xV+ zS-)~i@r(S5ntOkFiB3>Hf!$@?=Rwu1H$po+=u5hzGa~Lm9s3D8E0jT9R zyhS;d-))HNNLS1X-;ZV#VLHh|xWA;xWY1{rH7`A_mn7;<|0#_ z&=rB$?bXZo;CmsT%yH{pS4*A4X?z9_K|u!nZXp)k1J{p@UouU}wcTMbdoN@U)H3ej zS+#l>r(j+}$ewKe#7flQ_VZN+xR(^`#ilN@I*A-|!|i(l?)v*TF#)5BIOBq@qIhp3 zJ*6xzFKOyJX->>HH=W-tP74VSwoE05ytc6DZ&>V$2$(sR>v0t|!Cdf-3n4#v*C~Yi zq&XoXF$4JOii4lB);wWy`51F3NJjpj8LiPrT#pdhOL18H-6Q^YLusM_h~6ZZ*d+HtNmviY#@ow<7f5LD6VwV|1#OfGxoJRGcJ{7Au(MI{l5uJ$X zRKBd|Mw=1M&$5j35Q^;kOyi$XHp@Xr#u7XQV_%bEHJI|dn>>gGk~k(0&_4X$!%?{~ zUGAM@jJGXzEz#S>GU{U9pV)z)CzZGT=JITZY~Xp1_Io>IZiRZB>!=TkW zZE<=QT^@4%-MyaT3)$(xrLHGMj3xDYo|4_fEv@QBKaL^|9em9EaE#drU|+fe!$UG}M2dsUd1?GbtsK0s%7+C-%)^4gj*^ppNq|zQP=; z`ext2Qo5sog81LeJdV<+);IgIUi_96;}zrnUz?rdX&GNlWQ(5qLuNt$jn0 zq0?84Es=%~cQz$ssTtL`5#`G9)2O8iV%XDTplrq(^mqF@xgx6t`y{>EERVk`S3rp_ zv>57q7jP7>jkRS9XGVk!=<}C=&%6L&GLF5VbU_-nm%lmHLU94D3mQ$=!XA zAgi({6UvFRnCpoD?RZ_ z*ZP}~C6sCq2e|E-dA|CqtbjgsgIORau*iZeq}S}nAo7Fp(*wUe5Ld<>^H@nHpdG&W zZU5)ZbP%x!s6@^`x})rXDgZlN{ zz62DzkEE~49L>>>QNA;am?pZ$#uuYPAxAEMix6H!<5KxACY#$9bUruq)l1d2Rp&{F z<~&#&ciizsqKapYm9HL20+a7%BID(SAxi$fD{T;;MitqjL59RKs_JbEH0Fs5*0d+q2@ zDz)VS1fmgl&hXS<<@4ijN?%EWu_rpCINpQ`*5eI--dSGxBW-1&9TORt?POC|La|Qc ze|$=0N%%C5jRtFU!Vw<-wh0hLguXm0?CRHU$t>FLw+jDkrwlL;ihQLmWYYHRlAj*0 zl4~@?ELE>#2QQ8DnAUN=U_~!=rZtxH=^7@@-GDyj$;CJU4(GR71ok&W4vJ}B&8SRZ z@4tLWXcG?nSt?J)YFbZxL*xG5uz<2`4p32_!rtAyc>9!Det8RhpCmAo-%L2@thR0WA?%P}QpJVXu2_a}fzSQUc8GPFkJ(Axi6lo`VMVBrgnsj|pw9*a5v%FSzi= z;POPYy~jrVvJpkooCzXHyuJEmMXjko3U&N6o|ZUSL8)dZHep7i?bT;d%#l6Gq3Jdn z2jsMOX|RmyQ*rf3fmBUe)U_*zdj zLt9-334v}NVi~KC&^!8xA$^|2geS4_iwVH#iRNyvXf1*xt^tY)VI+hZlb4Z5FRKST zQ{T}!E{)fsma1P)x^H2pBh|1+dg)F9 zp=`B-2>ShJukx!g1nE+%-mE&^g0;M4j1uz+FUJaf8P&5tdo}s}Cb80o0QyfaLar2j z3*`!jwN4LYC3-JhsoeUd0PGjQphcSH+ZHPfcDOm#h&)kiw323$1Hfx~fBZeK5t)1# zY&=mm3v-||PRBnM0__QX*y|MDd!lEa3735k+M2Sn>iyU{gT_B~nWKR8ojt8sGX36J z8Bo)G|JDgRq+v{=cj~4h8LhjM^Yqcu<)}9Ni>cqm8(MK1_X!i;?N^ATa4M^L#3ksY z+zZf4JtUe6oz)l|Yx&z)@&UH*5}cS)|2X#J5cJS$!z_Gsk>x++^{GYmL~MNGzm4P> z(O5XS0AuR!2T>KqP#2@~Ll0RlCqZzi320|Xi28)YP5c?_MI$-)N zMP-LdAQ@fjejY-Vm7ZF<-fBD@akOJ)X%Q2K&t3<7*$x#ayJ?^22m^o|?XL#E&Jlyz zW@)Lb3%-05wYz#O%N`(#k;zCQqvRpkvvU02Qz0WwPZ1|fO-IS9k}B%PakB<;=Ojg2 z3MY8BwYNBh(z?qb-&Ln3l8mnP3fyB{cWNKA6X`v*?I^wAbVYnbGi| z-u0b@3e`E|_cma~2n&DrKKNT-Jlo>@t$zFh5|h_E(6Bf9+de+pt_4Gi&LZdm8Zk%)H6_5r_@JL9;cvC2O$s3Cx!0B{pHR} z%kJ~KRoGa~jJfMJqiJeqZ5X;3odgP?vDu;isG_UHem|l!7a<$`^#j5 zpB*1|sanvRuyG^ADsnF&Rcvbt7H96H5fn;(jqQy;vWiP;|AX`^z-35Bp*C4n!4cK- zHM6yF!V~*wRyRw=7l|XxBibWZE&$TD3=?A<{6sq<#_)*hGtGkSB$;D_5@@P|F2?e}(a z5TTs=4~wY=Gfvgd1M&9F-V0;1;+@vyngjgPmBH^Ls@twl@FQ7>6GYOZR3~!+Zedtv z^r=k@_0%lxOiZ%X$ij?&p-HIh(&ElixhE%XhvLnmM-XJ?8x>yN@2h0Cpjyt=!`L#- z&LOXbuCk|Imh63FE`4~n^!^g5C010{h5F0&3m3JBcgmM`m7)C1c~DZ}39#k*aW_~v zDTPBzaa3Kk?1d{+1-G3riBB3o$f2&Ey7T#O9SJS*62(}h{qVj4oAzT9t%1vTvsH}h zba1<;&9KmpWk&?hhH?Es6*126*QxImcrPJXaJ$Dva{Mo-zlu?e80%ta06ZaO{(3-_ z&Tw49W4Y_rcmv4GaS(JMwO_8k=vQi*)j3=1D7FrQ)B(eZI6n}~iHh0_8|$pyt5?3K(P-5a&3Dy+6Q%!tZP3J zif2t?KnQCJ1B9? z2<>4FDgYs@K?NX$HK+gz^wyxl8mq8|l-6jdHK4dgLayQDH46HFDov Q5VD>#GB+$aedYH50`%Zo%K!iX literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png new file mode 100644 index 0000000000000000000000000000000000000000..ec72099f53e75a3524b7d1b9e1ed8286ff9076c5 GIT binary patch literal 43515 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 z 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 literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png new file mode 100644 index 0000000000000000000000000000000000000000..02d524201dfb34ce9ffc3d56b0cb7439f84470b0 GIT binary patch literal 66502 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 i6^)*>!rG^^{{YGdvZ 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 BEvx_l literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png new file mode 100644 index 0000000000000000000000000000000000000000..4093b1627325a18060e7d6a7b13e79d901248add GIT binary patch literal 68168 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

Jt!)e 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

PbKS)f2 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 diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_password-visible.png index 104df59507ba28de040fbc94768f738cff28d191..5ab509c6300d4a132f89da7206ec58d01b8c1793 100644 GIT binary patch literal 47761 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 z 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 ZTqyQCI-Z$l2fib5&d~I9@kyt!{{^}x(Z&D( literal 48469 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 Uie5v9vtehAFP_dh>3ruu0GVy|ApigX literal 45521 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 Q5VD>#GB+$aedYH50`%Zo%K!iX diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_ready-to-submit.png index ec72099f53e75a3524b7d1b9e1ed8286ff9076c5..5a27f96b0ce1281c595affd546da1862a1cf20a7 100644 GIT binary patch literal 42785 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 literal 43515 zcmeFZcT|(x_BP7iDmD-hsZmf-a4SWmO3PLeL7IxvdoKYDy(TIaIx0#pDovz@0HK9Q zOOzG`sUbvz7$HCiB|t*R_r|@?Ilpth``^8H+&jK;24j#hk~il5cey4rBz&npQzf1A(+~YCQzjQmoae)}#blM|diFuLI z98B9khSThw7G#n!l%dvSe+^Df}UTcLwH@=vx8_<@&K z4gdY(|NX_u5*-9{wp}^wjl!?*Dyn)b3j+o#^7gNV68upf@a^QT8aSK!uTKOaYbVBe?v(@o zcnnUA|8#5N1sxPqlrM;yFYgBhwmlp9{ZG(7b)I`S_o*|psynbnX?i)jqs!gG=I#wV zpLhXVJ0CH&uZ2!QaUKWnDJIUfM7(w0b?TEi#p7`@m~ z=_zh;45Gtc8=k%VZeuz+P}yrR?<#CNE{eTA)<=oL>uwwgrVI`=D*2E%zQ2AVb#|$p zwX{-5C;1FKhqSbjpoH)9d1%fKD`{($;-xmT+ia*}(=)gQFEu z?evQ)D}72{q3J%*qsWxfF0alv1({I29vA|iyh=_|@>CN6JpTNF4s5*obi~a5#&OrA z${!ha0e`5IVphpT(rj;rCTWL(5(95`2qbn1fZHN=wkXJ0>Y7 zAO_=gk;*Karn@fC36D$>YISP>y+Z(YUV9L}DZqKXId6rrU1*v~?OB*WBH1h>X}5@_ zW{MV}2F;jUv22BJWx_9hYdTj|e@lJz)yXWQG>PhV=6q$CARQOgMw^Q$%L}@0NibCn z@+yoC+iH*fx=Z?lBV~DK1B0;+9#BgfHV31kHIsn13& zhbGT2ZL})p{9M}vtU!C1<1KEk`RyUu3(T@%Xm&@!f(#hxLnwa&k* zNF;G~HhRP`n>}PaXB&^4!Mbe$k8@gR7<2Tn$VydyCw@*3^XCI%akas=c8PqeH$&7*5})@ z)oay$3&vZ5lfYgTbGRL|6kOPcT{^AjH45y3Aj@l7)301Jx@oYD)(d$iINIrg)fA2C ztQ3uSsMPA)qSRhS628B_y6}#r&1n#&x^<~{J}Tk(@nde~B^kZ*IVS5~mkn_T(xHw9 z*4qi@F((N%xw9E|)xml|nCEVFgBMa7-5Or>MQZExdNqV_yk(#=>z%XAP8Jb@9H?XO z6?uJ0l{MF7Iuv`w{>Nd`QVF<*#Xw>5Q`C~H8YjN*7WI( zTr+80VxZ1&>=U7yuJf74OmWU`XQye`Eo$i+@Kudjlhl0&hWz8=Nx7Szy1JHNy0tnn zWEj%s((Q&>YN6I4SP6Js0FsASsG}RkTFgu#^fjePWY!h4wtJkmuaZ`46+QpxmTw8k zV{eea6^p0!x`ve-Cp>d26&p15gfD9uSbtev`E*6VKQHo&dE1Wi@ZSN6>mMgdi3Z5@ zofvUb62tsztz@l4qeyHg29Pg?LQr^QgTC#<{T`{IU_yUNQ7 zaz+@dfE(z6xe<{s;Dj=hHm zbvLFUoZ7V^W3L8u3@w_}hmAM3A8KjoSCtXY`jS;-CCu-zb; z>uI2&8!|iN)4=ZU1w&@&(|5c0XPF1-{B$_eobv|(9J7*MC_jdJD^1PutNugjPC1pa z*WEs_U=&+&dTypB>5oqpRgJdlmJu7RB!`9iVY69OSDMa>VPv+cPNwG0SUaPkQm-37 zOnG{JV@|d`GG**LvXBkgvVH?K#7P?HjFtW|gs8r3OE4Zrb)WEDC~kO}bxe@|Qj2-K z-={IVK=jJWLu=%z-=Az!dc>UUA@!dPdbCMfgOEbO%nNP6d?ygMhLy*?FH8W-Xjgkv zj1ria3$?j!zaxmDK-ut^UF`K5xNb#FcL`72;AVo_o*{OHau_jmY^4c0VW2Z@o%wB0 znDb7e~03Zg}=x=(M{9eW+~&2T0DN^ z6MI@Ob7)4s+ARP@46|7bXkE-02^G%#Sj@8G)xCD|s2N9E(9dE`3oJ$fcGSkA=hM}o z(MlT!FW+vrlusHv@FN_h^1&)y#(2?DjVg2Q?)u9jc48L3X~5eB1F@BNIrKER4nbq> z;K@$+X_47`yAFN8?x*{Q#pGsLIT){ZI z&Azl+Vwr~bmnN>?9g6Le-dTQ9sVDNASBq1;4+lMn6g+VWwXEEEuU>B?Btc(u`TeeF zMW!U7C00*=7m=zGa5hcizN>9(|AjvHP}7s*^PyW`kJkixNAa_k1fU(eXcC6GAuHOA8kq;!?^ZFjs1v-GKUlwlz*A=lT1-C!=FG zzdb=RTSP3aPY{$m75SJuIMj0CR=-!Bvg=fRqvC@HrP;y=O?O*@X}_$|h5%8NkvH## zjgo}=n4uLt1=f7uo-@6#PdpyZvtRkjDWb;jOZC-tO<>{6E#@BMs~0>El)61^LK@cy zRwyb~TqkuUa&wVa!a;RcdS8=h^v(6wM~=V}V5sF5(7yJNWXFTZJF@4-<9TF`xn-62 zpAel+>fsxPMiGOQtN1_1>ksFRre0~o&e3ObSL>^d?9YBuoo%stJ6ivzNB?p>VrbIQ z)$${FX9n!)*0ZQGJlQfQ4l$W!5f#Sc1K0QZpF9UO9uLVARJlJidANLhhjT{2$Mb%CS2n*JbNCvAKy!QR!vqn$`dXGhL$BrhbILy( zWUp(`b!IFPbJkEF8x-k&)3APjlc-syg(Yaun~x$edTXx*OvmL$k6gzkJk}-U+ut)D262nQcJr^l? zDwj}!3^AOtjJ#o**l)LNt;UYL*8z%@30DNM^F=QZCZ44rXHvC2LtoA<0~?rmej&0M z2r2Gv`kLVRU}&oqQ06~KQ7k<>9`DB(hIT&KbFgl*1(*897#{PV zkF*sth-8ai9d=EwsI0qgX(eW{Gh?=Q4hG#wtZy7z)7tRUWcuWs7_LajP3^$mZYQN5 zgLFrZhFrWgwSJ;1A7YvryPgwyI5Sag;Lvy&!5=yKu}(8pqJ6VR$rHD*u3b=YZN%fA z&$6JO+`8`m>qY1 z3eI6qXufu;t$W*H(BJEAyBqqV@5Wi71I07>P^^TFgCVu^ObzLc=EhVo68DJ~^dcg5 zC^kw>00FyVA$Z|KeqdC>BgT;Ol^8n4<5r#%)b@IDZ8;#)*=v!Mz&T7>ksD}_DaXx-C8Y`@J2h%1jbVBgnef?SBRql z*@}hxPgL=D{>kq?W z4KlI)v?#;`R*U#-0P>ir0w9A8@i@653I70aznabA!kycL;_)^-pFfr4C|;c#33=ij zl?!vaJeA-&lcJ%h*uF^)s)`RG-Bd_*!&0oGD*4sNk5?QtEkx6izR@kmJyCXV4Gh!u z@M@#hG8GjjnLv~nee5!rP}&E-JVifUbqqjzJmLV*)1QNOoreor=Ik^bnmGjQ5{CGb zEUA1c?cz|E7h{1p)%J)G6|W`ySVhxf11(8@->{`)TlusYFH4QYk__9kAQn(+4$ePt zc3X){Sqpk3m?>TyO4P3vMLs4E8k&-#1d5z$gTGH)qfx8^b+0AS{3 zvGe`X4`22Gd8?ihLV}L_R#g4d3hw|Yrx<+{7`uec(Tws+X5c74{#166hv@nLf7}&>t zj4t{}*7{-VSM@SwqWynQu)znW0x7Zkt+EKX>ehD&VCNOQ7A)?2pST4H1$)~oXc zo2kaiVkcEhfBW?6mp}bg8UDkSO4mJfk~$3Yf$9nu7>4#ai=^_&0}tK2;HY(+&<-yYaj zpOYs`;oYUU6v2bh0AMXhL8e7*{k#UYeSER#A-_drzlFK38b}WNc1%@aCuc{o+w02I z>35Du0B3sPjK^#fIA(tHrF}qY<#&atwHCBBo9V?;nqLt92ksu4dF--t9H?}sFZ5D1 zByvQLZhtg~Js*iB3m1NvXYSc$TC*w#-uhS>aHLNGWv|WN znhOzg%U6(e$8C7VI0vGyr>+1sN#?DnO{>#F_Zr>QE*P$?C(v61{? z`@;2S(})s6=PT1pTb<3Xaruj;nJ>HFl+S5~4$lIqufZiN_zi*cB$_CRlKu~i$X7cT z5vXFMx1|j;Po*?~h-8`(q7|u0?-tf3G?2bvuAkY1A`huOJs22?3pr5rI+pdtLsyBlM4F zE=e0~*_Z##aB*QT-|Ai$59l5capyRiQV?A?2?eqSkkDlNzCDpH&@Fgr<=BkWW%Fu! zhO9-WT{gL6j^n4Zaz_uzEOkFmm2mYmvIXr1rAtG)<>Nxy1~f=I6$cUb+-yN8;l=fw zP!*950|)ts6ZK(N;@>M(74juT^;>^eA=cRXokSlw)p^fRh3}+y`Pi7(Yz(k}3TpiU z6f?ju|Ca-0g{C_u3X9He-2978s$0um6uZjDz=ekq@YM&R5hF zEMm4-`n*E_;X9?JfnR5WUbv;{s3g4QeV9? zWUS<|{*B9d__Bl`sx|3?EwNN7TDUDJoCeH8*`$`s7?J^&By6St2k(`p ztdcc7)A==~?smeUTOW~lJ-ap*kyfz08a#MWj(}3UT&cP{Rq)&PD!y8kgB)XxTtMB}5DRX-E zJHW;e{-gv+KG%1yT_3eG-?W)}c8XY&JGYYkbo7Y}K0)m_<_q3BV-pwg@0VR`rVmXZ# zfzy`NDQ(g@om0rflR-TpBu8?CcTP3B^T0XxhPe1WXNM84_q!aayB{`rc(yoAmCIC7 z<9>y*J=g{kWZcb9+M9wUL7EIMAPJ!e?0Q~fNpsDz56`0nx zS~m&HSrR-ft2_s_(96AP`q% zuRL*&Ay^aZl-on8p&Jj@BDkeVom#ALVawMC2kY3(gg`T(G(Pd<=<^ZAkblO&asDWI zNcPeOK;_)Y!raIy0MaPtLyGugnc0%I@a}tc3nZ#6e&v(VFb*>`< zb2~%vK-ozMwEQrP?~Bmm5=U+iZ|=Z%^YqLAHMgSeOPap5LP;}f4z_}0$g&2s{^l|w zEmj^RxBX23{!^<#PlW%n)>XY7!xWnnKK_PjBHY+V;35Rw>XxRs&hwZ4JS{m~>i5-+ z8KElc6PrG4rmeujUhFnWz9eNa{AF7(=?{jVrW*@jzn(4HjbWW-+Nch+vr08a8%8~T zZQNRu^&|ilSydcPek+e&8;ZrRH(mJvlua3nc49MStUHRp=C9PN1h{brJpOjSwKr3i z{VMKIudf&|eSQBHxI(1$_hZaag01>a<+m-OH2~ z`aW5J=x&FQS~g2BqNm=hWaDE>HK~!pQHJ*C$bqm|ka& zpZz>u%Hlg4P?e)-Z=LW5oo-wD+Z9zX!rE*2a?Ocp)CAJY3+H}>Xa|X9F$6N zM@uBWItc^2Wf%+-|G4GPuYMNlV>pajqUUsL{qDq`w?f8VZrcluyx!uZWe_!Y`813~ zwqs`bi%@L7U~MnbS<5UEr=4bU{}V01z%<-rzp@+U{VoCdKu+G0uq$*TYi_t6))h@+ zO&1heB+X=%YibNBpQUeQk8T_;jGGgG*`$A_O1hi8V`8|$UsRCkl?OFYxAa(S7*phm z2>T0_=xqTQHe-b&>~p4otN*b9P=$3*3hWyC3vBHD_GUK-k#V)f$zepWM@w?9y?o!5 zAvV=D%rNGl_z8nbL@huStwEZ|xf5A;o=cTIAANGu5d$?86R)H;W^}wF=Pm@CxE1ew z){(L)t06g8s&-@E?BeW;1#z@0(c_Jx6yciQ%CieRJ~={Pj0tfm*H!V*=8s%@cE#?y zBZlJgNn&@VLzs;lQZIQNQ@(%7r!2p2W~4`BzK}IVsbkNRb<>PBVB0g&VttCO5E2Ou z3m3LIiZi*oZy9iUO_1EtnB@+eSS2B?P;EJbW}T`!O)#*XxP&UbxiB>|arNAEdef0} zL{aiqDVQs%vAJ^CU#n@VHu-<6N$GRffIw zN}T{fzE-^Sv%$a!3=J@F!vN}vC*kBnqqLWa+JCGcl;joqc72NX;xWueAb-7^3oAaM z7d;HbMbW_&&NbBmZxEKuG%>{OOA2ztCMO4|Z1M`JXs2qD;}ksE&8=Mxsee~4R z%A^L(cZBmA3MVCz*Lj=w_RBcHN)k|?zM?mlSj0+J^zg&6n)1n!_ z%O`@2TPS|Us&9ySH!vX-5uEhFfrwRel4O`*^6f-{6EeSq9p?kAS_wZ23 zAgcGPlbZ9P3HbBm^;9Tpg=L?Mht zARUU`czwIFN^rmyGjS3c(9_wrKBnGTQm?50AzP{}H=2e<+2c-jehA6Cz1}KzzyDRz zeht76`GmSlGN0;ez8K{{sh2stI$PUysBd1h=Qd2X*zNI0Ev3Nrtsg5(nrKB#qRm-E z1T>amGE75p=UUd#!Q1TJ=*s`7=@Au>hVGcnp*P7%ea3)ncc}+e1ynOvChQl1Xf})T zRSr{aK}@o*2jilsTseko}1+5=cpC`v8s0owR;>TP!h~Y|blFR}~whg5JP+w>W zE2)8a<*7O)bQtU5!WL!c^U<}BnR>`4OJMwz51tMnN>I(aFG{;O?%p*AOLFC^tD+RI zPWK!z92Tk9W2;JM9YeiN$yO3_?vBhJ-Nn_6e@lp5{oz5nz_81EHs_xO%$>(utb_N| zA>Fl4mA?hF@Sj=aYS{NqXFBilb{^L$Nvrd6C0K>I&-Y;g%3C^y} zU~q-%_s@-MJCcP_J!n8R>m^(-h-FOl0K%^gw_qI1nMMIHy@#umFPgIeXu;$B@$|Se zb|PkV0LhE`$Sn{SjkUQQ6@P!gr8#*u*14L#H5aicEuQ*&1aT5_in>Oisg@M=$+r=J z?1*H0D*@#hk9_lPP`@T1>N|{neaz*LdH|j9#mF!W(1dO2K&(*;rlB`H8-U)8)_v+( zP(Ywg3Ht3b5dSLeb=ClaO8&=Se(ng+qHvzg9m#)tJO01yUrAA(j3u!X*ENW3sx&$d zxoGN142$+EbTiXbCL98+({{C1*#Kkfmro9M;uy?zJdqx3)M#Glt5@eW0o&p9PCP4lcJ7TIi35_wiSi*Q|FYI)h)(l zC665ioW4{TlKfdSE`_kvR5b41SCym`>o;K*yZK`Ud?t+OS9qV+88omyCgvAd`}v`= z9%fA=DO7#3sc8udLNa?j?E)?2F+;s2-Ye!{>H=9CybbkAPEthIBVZ*?m6ki%*!t7HCoATcvSCDoFAI@M`wWw{YNgC4;GTN5D zU$~RHmj|paRs@n4G4CUsLzWe~I|ZZUPqe=r1G;G#;P0Oxm@m(8M{^fJqnpH*{G45f zbma-OH^xd-TlnI-#t|o*ux3c%_1yTBvE%1XB@9K(0C#R*> z9;jUY?Ws__?re!TB2f2F>##>6NnT>|AF%tPrSCeIE#bgURhkuCO&qWF3%+X|S z3d^?fDkEinPu<)&7DhzJn7WRd^qWjb9uDz^whRZr@F6hzag_8Ev3Urete;_Y4$W$o{!Hpn{V zsFAXcYwz<8tHTMbO=#zM8f4L57uMtQtWo0L@M{8xSSzoFKGM z29C``FtnY$b&D^n8d+{-0i*sX^Knaovx-fd&mpASXg#z^Nj1!-uUX77%byg~x|r0U zK3>Zw-=eT2@y#r>+_<052=yciz>2a%i!ad(xL-yO-qHz4C08QGz3-rYv{1bWa{o4% zitVWNK}J9l#9;MU_{Kh;Rq5~>Hu9=%byG(K8dW58_g*iBXBsBQj>C7;|-#--9Ervp=qwmx`4}U@N zOWx+QgAZu!0a@tT#?}ONx$Y3N072_$48Ek%P_oEyB^e z6_kyO-`RaDt1uZ?x2d@ZJhyptFGv8)^oG)Bt&UtnPwb}Ek4^VX=0em(=b(F)fe``h z+#l*hU#gkute0P<%|iI{i5`9pqJ7&AlR5!=x$odm>|VqYHrGtt>(eXOaVEe`YtvdP zVq#s(E(vlO7;}tPAZU2<6|cux2NTz2lU2NLC_`c~ z&N9D0WM0ny*4HO*H{EbbaW#HjqjRjCoj=IvIR-Hq_0xO17A^*~PiD?cFND6qnMEfx zdVADD$Iu(1b`Z=JhG((`Q=FGhZGeyY+>(y@`5F?PZVZeLX+8x|GzE$4ATuB+x)P3s zomDa|*T8=MT1GYgqU15*Mq>ABSMZUsxq;c|2VY(4sa)S7= zk-$BzJEgf^tV6!P4DZ;1C2mX;CPo)8^s5ssHDQ=W}}>G6YK-S>!0Li>tmBZ)~@!Ri-u)ve9^3g7=TK=E=e}2ZYWbPga#>ijEU94Xv2ahdVblKe z3C^#5y#;g@mR-N)^539>)hAx?84Jc zk&C#zyRKfWcNoVazTby(mN$jXkDRMv^tmnqEJW@iv++_~q6;;84`@{i-iBN}*QYqv z6cwnG8PRsf0X1XlQ7iOUJQUAtQZ1PdzLu6VYGPHjU)_@ky++xiw~)1j6e-QEsA&a+ zLXGwjA740{q17`%DRi0&CdGQVN%;kKpOynNCzQ0*5c>cDY~UmIKr2ZF=K)Eqvk}c+}*nQ9*m4dp7XW_B7-Q!@ve(<_;ee&StEB_oYItT zc9xqpXBqp1$Savl@i<X+?%Z~CWAD9Gi9MM3+jP#Jzn-6!+cvn5~ddpHCw z)f)f1G|4-pw_={(&SC(KmW#u8{2ruO;PuK@ecY|6NQE!XqV2#-x+P9M$#-14yB+BN!V53e3k33W z<1gpP`dy`=qws&;6#MnrHE9LF;dWB*z!=E={5wG3v>XHu$j3#X4$$$GFg?ep34eO%6hUQu2{(U{RSq7BmMTNOFg} z>Sn0&@V7oEwr!)6M(bjGw7NmM4QkppW@WhWBZKxsg|ppE2D*~GW^T*QM4I2JRi413 zKe}TAeQFUz>F_g+6AXa~O&5wo*Z>1ap4=FbjerU2AIm3l)O5N*}zC&R|0AO7^SCyyM2-jj}K`L7S$+~#6tRy3+7Vib- zJPMlHbx7-N+bJ0-LNtjZAnbdRFH5Cti*ANpEl6~BJBrs;OWjc5SI=N>%GI&YDZ^U8 z0Q~{>pGTkLdeZ#K90a3_f>|rs&ssv`+k1?aX8kPe;a&W~lEkKmZ>)sd88n!N%M=*k zGPwnSd#I3Jv5K<#q#=(7(}px_NC8kqCVEpjI2R`vcMTI|M49E_YG$LpB8 z8}RGuzq~Yg=<5?}x!3JZsx%){;#D!H3$OJg8TGQ=Q9^Kb0cP%t0w+!+5#W?`D=L7) z3@WpbxOY3c@QvveFCPcr7ZhEf5IbAI8lOfzc9waN2}=Xk)cMA*7--@Af*0H#TH|y8 zD55Y<^7c*VD=MOaj+{h~OqQ8fVbj!`Icr3_KAXOP;_TR%o)vvtNfTD#AIkXx%wehn z+f>NXB%xHt1}P+6iBwC|*EwU=~YAAB24ZFU;gE=wH8CUKIqYj{%Iev95SO0l0y+N)C)rpYRN+1k4->m1x zc$51#CAXW5uicRj7mM7czPYflddLFEt5BT{C?=4bpq!`vUg%nW*i<{xQ5q%AmX>A~%GkiW zQtIdyN|@~+XvZTlQ4pjaN(X~i%x%&gwt$FWnHM$b1M~p#vD&(B?*YC12uuz3zfa9E z(&I9_#?nc*LLxKk(|vg%F;Z zQEtXn-ecgi45#-wnT~rcO*PvL+)gx>nNOp9w=f&5+mW^!KD(@S$b)l93~f8^{> z^8&*5$6t4?k0g1go7UyX#_a}K(5GQ)m&NcYt<>$^|Tb*SsFfn^rK$J+n9%>)O6(I<#YY1$#4O5Ko$+=xPu(^>6T>B($g z8QIS=SdCr`9piF*c{f-9YL9rc)1B3P=GZx$e}M@6h(o1njUBlC)`g zMC(?9RJ6%kc0U*%@M=P=NRMV=rW@J`Lma0_coo>RG3P7tbM~oLx6QvJQ!3a&m;HgZ z{Qrx=-36kDnYZB;dtO98D)Ss@(k`I+G@44l3w&Ci(ktG1~`bv*7#v$SpA z{0au#gaP0D`XrHBjnM$OQBL6?_n*S+nlS#&u@k!`4-x=65}WBWo0(zUyq*hq5 zYx2H5uDl(Q00gU66PhWeYVgTOb;+dZ+_Dc|Z0Ok|=4hR0tS$xH{PtSfDgA2Xv=VwP zNSQin*SCC9%F6zoa`@6zWx(wj*wRaA8&HDrr2n@V|33_KgaerO*v3@rDp^m<%d8P7 z4tT_gGHJS_bFJZ%el!RxWF!aZRuwj%Z+kyBb=U3hEAEUrkmg#s48`A9)Kye3wY}G- zp#yVuwNX$&b7&c9n))gZnKM^;rvp2T*Rg}N4K(J9 zY45NZ6X71Az?FZ(QN)X_;}KL8bHNlvthQdB3brAJi~>j5^q<}=loI}TI*U7iz(~l_ z6!~#(;2%37oe4JZSR5c8tPeX-AEeynvT(V9s8|Mf6g*u?Qrc0A^_+k>OQ40MC)4q4 zs?O5p!T|R(-taGUxfi-&li{eV0AtvTJSciZgA`^5?X~d|qahdDR+AnP~nWN?}wtj2o`C2YzUO<7ThNxt<<*S3rJ@|Z>QLs>9d*wgYXvX zO)SX96r8S%y&btUo7snp!sSKwq~kG9{iU&f2gO7;bd@np>;VLsG`t9K*wJVU4NRB` z*9YFe0pQu^GaXn9rMB@2$|7}Jk02!#{bRzFD2$ii@s0D>YWPN~X}?MDAs&(+Z1E3k zG*3TAi>|c}BXuQlf(J}xlUK#40XCJe{y%!InCs>*rb~Jx?>jQxKo2WXOVw2)I5z*R zj@Ay%B(DD1h+d%8u2usCNE~yzeg-g`&CT-eA@aIJDTnE%OA62j(v>sB(ZXmn06l9FN`Kjd@f)vE>`bUwf}bIT-^2luwMHT*un7Eu zAd?65g5wVPNk#j5<&p9u3>wjrR7^l^sLd)Wm-f_OfS$9n{M4-um%%I~EZ7d-Guo($ z@hywhY5)~RnKg2t8vQvpq)!;jOXiM_us1)sX>%00)u(vDUn5(}+0geY3=gbhKlIR`CYtWI+3co)Z*$KHN5z>v?u_AG9ASUK0FI@~9;77s7z}+VC?_{xrtp|OHAgQSO zw&YWuYF|K`;gy*6hsJWUe#uTdbKeIU<8sHqiXP>iY0D%HV!JX=^Ws2kMNWgcrY=DW z7PJY?&&l#fY?N4qN>LFS{b#+*Zxc8!effRHcZQTNvoGEudkMXN7$NX(vPqS)%WiR~ zJenq|oqElP4NO941Eb*O!X zX=Z94_AEevG)bv7Gqu>HGdmyk3`HLsDxa9!?yJkWdaS5D<3j;I{&YaNoqx^L+OnGs zu|3m)H~|}64EG>Vagiii_}PMprLD>zBV$fV?a}X_<+lXasN4(|u0;&c;T)udka{gu=b$}kfiNlD#x#UEyqKhApvoKxW;0;d+*tuTfxqGR zHcmD336V*ti`34_CDvZ4I{`_QskNN#nn_5qBQ>Nu`8kIY&S^Ph&=wF};P7;Y4V+nuaK$Fd9nVauE3W z<#C~Oq^tV$s~u=ADnNp@-B;sIa8pR|WrYgpJ@*&*oOf+gFz5HUkK!|ZtMKl;#qbj#mV2kBKVwGjbP{$&EE5Ft{e=%^=?G#L%XVe1YUQ(|*P#-p}81 z2U25PJ^!T#W5pWVmDVebM;9a6S&!`yrBYcO%MXG`qoKt(UJzo(=njhHG3HL70%s`S zVu7vwlTz47D6*cb1(YD7$>a{I4>bZZ@n`q zyVUq{|p{w!gIM`1n#@l6I)F-zlQwFYgmYHO+Xgjr$aS7Omn_A8cJMAm@YpbI}qr zFZ3Q?;%klY272tSsZE2~E*mS2uT5WHf>g`{-QS_%;2rnKKd$vhZNW9BJUdrYU%5YB z_V}Vasc;P|=Rq%j(|@Ql;#vsG4>D5^c)OPm8fn;~ zyS{9J51G%s{1~t#(KmDa=-sQZ1e1I&Pmp!!4KCGDdr@ujRcHtHYB)MnETQ~`Ug{+i z&sw2OSX*p9-2XcVNJ+gDQa+|0I+7y=B@leSeMVKGuhM({wkluV zCAbAveFJhU^9iqAe&nSx7|obu+gEhKyY?n{$t!GHgYcK(O4GBN>D%W9RF=vr0Lc>3 zWW;=9{&Ee$=XxP7g$a2;TY$R*K_}Cv&5d29-QWW(Ski66{K2qN*U_u?453gs`eRtS zo`HjiXE)LQosEPXDaOuH424bcM?5wRtr(|CN8GlwN+5K=oGTo((n3dzh+>{8_hubH zfmWkEZmEy-hjRdvMND&IhZnUQ5Qe_C7Uh^4Zt!*1vM%|i_-xn)sO@ou(R$GcYFP8~ zN>Kij5KNB`Fuo@RQ7tN?@a@IY9$kLC+T|4Mhsd3lV*X8s)q(QIfu}Fakx5$aB{bwV{&6GYkmYlh6_pu;ixXMkUD2ODyDyQ>fmH|FlQLg{zt(w?{ zY%gR^OH**421BpjLOQd%+b!YIWr{*Xbqt#vF~Z1d_`JB1S68W_YTJTlCjrapy`WI=f`VT~O3l$%zC&3DH~G~5a2 z)+dfh69du!p?{AO+Ws-`+|2c>pYBqoa7gyKuHB#$SY{3AyNd-;DOC%x8O~wQewqB8 zf7E2NP2u4dVr-C>FCZCzJVx?8OO2|^t!*+50}ewz?o2y$QMUDzjO0&$eEVCzqvXO7 z{1}jdAjyK%KfC3VvizU5m!9Z+rUJVB?4wlCVL8(UVN+Otu_4MzDwa7hxJg{9ANt;) zA?^3@()U1ulm|TA>hC> zhT%7)HZ60+j4K!qi8VhT9XNtG^K)baeB1s!tKh;^0#>(5;&vs8oBu^A#K`cAo|Pld zM%Pp%+)Q3J2^;B*Cehk!nqmjrF1#}GleGhm?u92LxM59FoAhO?0BOVe=#ZZFHjWgK zF=A@PT@s$Gjv>8Pe|94`l<|1h*5d>0Fu%mbdlK@CNWy5~FY(ct*O;}?xK8-*SN`8x zF=t*Qyfj4+=u>0t^QVgJ2Az*9rlbY$Wt+lC$j%r(yk9)O2|0% zpQFl}D~R6NBCi0#BV#I%<66b9E)QEyzmtfMWrG}g7;lr9<4O#393=NYhu^Os{A2Lk zA>Da%ZU>mkK}7?hneGVSy@Avb-v8|}MvB1s0N3=Y#=!>(ACJu7Oj6gzhi(3I1w0?* z1~iv!Zb_!AXuI8jw&ez7ztqi`JM*6lV_e5=4<#(N8H;L}lxV_qfF3DRx&L_RCTF5m z_GxCkjc3`K`%lTAI4>xB-lVqeen;zU zEGZmhH?0x*%s(={%^5^%l%J?m0RDeWlDDg{a_K*Y?x`==DzkMUDwMOTm?Nv(Qdh<< zmIaXPHV`CuVf3LtF)cBp3!X@PO!Wat*~>?-9W{?kPQPj+<6gmasXu#JINjZV{5Khx zhg5B34l)Mnhw+<;VKewD9Ea~~ED}O$^t$Eq^-7+ws{;Jxw_DTTCBQwH9}`8+<<^)^ z{IB-DJRa(`{eL>AMNy8EB0{C2Y)MA;HcO{PPT3M8V#FX}?6hyzPNFPL5oxSrXD}2q ziXkz~7-M3xgfTH$hMDoZKb-G*zR!7{-|P49^Lt+Yn%8UY&vGxqUDcT?z zB0;ZkgnL>SU%$h)X9?VOK9?1~r-k62642b{?`mNu zLnH+0k-9_X1BY2b&69h7`kO+`TO&WWZO>1 zY}EGLC2z6qRE4IUn|Fftv9gOm`hR|19oY+n{fd;Qb;8Yh^N{CnCG1ODpX(GN?c`NKKf)1&3NegPQa1Rm4S#u5~@5e;6Pd6g?s zMA>jF=FFFVGx@7CRL_E;^O3XPhMq(&1d{Xd>^`VYn@2bK#I&5x;=@t>KH;{7*sRFl z#VeIyN4}KQQide`>UPB|#_893Fwc~zENt4=?7eR?H2RR@6_@>KncqUT0oBL_Xr0CPx|G5g5B`0 zt>TSzQ$&);$qq4FVh@*X<9^uL~m`vIQ!Awql=?1&CV;XOXbhDLxr?qQrDI47$#JCZ@jly^Xc+>;v`It+HHNF={>gN^cCjh3?>^q z5rgB{&L_>bT_He|>d%u_m=@9O$k?vYRi;djF)iP=gZ13A6A5i<6vbrQ@|8z&B&cvoDx1CUm7Q|=7$Alg-n_=Q41A4e@dKB2hL4!7D`+Y-qhUm}~ccU0!tL zVjSY_ts9Pm&v27ZJ*s2!{*uR5UB6_X)6YMLjm$<6cwg>Emh*bL7X$scrLa0Im7Q+#V_iUD@XsuZMl+YKfPJFvB91peMR*E7)HUR3el2tplfA4dUthn=8f=secxrPO=FQQrm}$;zu+sVB+h z4$f$QF(t4phuCxBUv~GSQcd{64`j{_r`?#vkKgHUXJov^q&)6O6Hvx~%oz^M?j!x{ zT?bPl`lI*n9x(y3B=ajiRjl09v;{j-Ci?Mz?c9G10iQNQE#9!fw1|c@>Nc4B{+?pX zc3x|8N7`?Q?3tI@?&TGW)^v=vkLWTVm}|ztON&gKtRZ80BVjf!R0MWo+&cFXEi8bm zhOKkj9Xb8Ht#m$-6=M>;ne`N-`N!djjR9gT%fHR-Cvl>T_m6{qF1uaQ-nMVhw$9Ba zrilExcmA3(!2qeBn6Uqd^vRZz!#+e4N>B~>iSE?WzV~-E_v6VH6>GS?c=7jPb7!3= zRBXWO(nAA4KPNIQj%`P5N9s$Ov5wit(fAcNM(Znvg7c(_%e%sTz zU>f?+K*hhc0#+?p>Uakx@7>*pzmOzI=jB;f{$*Hg&dpunoAfF+$iOq__>bj%p1c2j zP`900dn;Xfv|SAbxI-;zHge5ZF8pnF4w&Z?CbQh$FlMulJ=nO97}vJXIP{>(vNrsy z`_d<(k_;#p#eQIFH8VHtB@STVn9njklYi`?AYIS>{gETkD)nAtoq>#=`;zrzM)Fjw zuC=T8#i84c+}utqUT;DDT?D23Als+Q9V!*t)plF_z4_(xzWYm>VE;iE0GIy8D(fy9 zZPaTibRt$*)Y@wOr%Qk1X#lz`WH~YL=iJ=lV#>06FYV--mX_DIltfquQyCjaO)sN^ zwYGLhWKQ`~!r_6sk9zv{HOok0f5rOtioyKkeU+gp0gm$DVCj5JLy&e)DZ z>wmwn-LW(+_w#C5gsxXeK>GX6=fyc?;EK8?boIz1Z0jb3K8ufKUwI1P|5T`sl~PDk zuM)WjTHW@FY200_aKo=7W8V2a7S>m9#X!WnUORi!vv3D)T}PX>0J;ui`@K^uPo^q2 zhtA-SY_=kN*bm@uPfsb?Y{nR?M}yvWkE^s!j-Kmab2}-32fa+h!eBOxD@vbmO!Eg9 zIPoJU>7j?B5Vn>S))PArFT8YpHk|Ts9cUx^%m~D-1Lm$IsZ&LYCqfH@+t8s_AZZ_r zvnCst(WO4d5&M0u>}A@hHd!hw&A~woG`$R5WPSC!sExJ@L_UU7rHe**gXACj9PirT zzLuf5O$J%P3yJzRQtQFB)LJX8#mTB3p8YVQC$&63v9;`lsm{0C5QufUwj2^HSqhIG zS+2IcW4ZQn{Bk8`^X0nCua~Pde_pQHe0AkE04GEt?-qO3@XS(jM;9 zETD0xa#A$Xu6uJQkH`5KRk!t%7qaB3{LeF?+MFJ@?jb~&ODNb-^X8o)mRu9Il(tjn zEz8ZOUeekF4x&=!9>k*9D`Bf;Stb6IQ8!{QkKEOvan-0~wx4XT!+bS=9k5789wcje zkg|7bB!~KN`J>uaX&**F_1u&3fS9PeH+B9z8Wj;qP)zY^Ba}Q3ZWG*!)dUr{M=Gsy zQdm9}rM!`PlD3b88|X#hO_Mwx?s%+E?Sg=wJP7J|Q!@R*IkS3~Q%R+6$Z9{&F=yzq zt0y*Ak%N;Ci6+&YqrCP16(!~(9C(x5hVi%dym*ec26XDinSL+(@lJkQN2}*VBr@Vtb>!^r91TdPoi??6@3>I+-YQ)G!CF0P5RYP$ zLT-Cu8GaNr?zp{g_)=$eNq(8y7~|-{!g}KIHdU_(AEqK!1B9|*SElYSC{PT(|0uR% z=qs;1NUivu&m-f@aN#PTRnX6%pZ3aP1_xR#Zn||-6h2cq&@(CuT3~`59(_fdCIWxn zfx{0foLz6rBrFTfm=dPj(VrYkDo_ z;nc(2GJJBmckS_jqhOJp;!k*m^{53}2lx?2nw?lPBn+yrtnnMCGv-ONsLVhP{8xY}1c*h+yG8Wyq3V>tU&bCq6B?RvOT#KtLP878W#I)dA>XP3c*!wejwwPVZ5W zQIf`F=QW4uKPjmvrb{L27~?7Glr>;_U?Eba(;&^^9ED-`dLx+Q?^C0Y7{fB8mJQ)S zs%=@w8LkGQ)IMM*`2R-x!d@1s4WX2@lUycssVg;t?m*7u zN*(Gpnse9kV;Eahx}Ghj{5X|7d&aPE^!)s^!;H_g{q)Bia{8c3iqDJ4tCTE6wF@Is z3FX(A@S1eCl~UVPj!1P zr*vjoq3l*HlQH|iBYG#Y&!~Kqd(&{!+n(v$k=!&x{fO?Mw2-k>tQ^Rw%C2c%eikaQ ze~_|%-HnK1dZvwbL5(oP4pT5&IyGpMtbx(1kx}XWG4ie`m|IT5IF^pB1LU?e;jI?Z zW_s>Q;(qE}T8((l*~73OPtr7=Q~01n-+oW74#FpQxW*>(dq{VkGr_Jqpd{3r97PT- zqvv>Ziv#!LKm@IeX1*C!J>TO=wm3t>>Gi`tX)I~TQw4cyV^c##p$hIs3k)rLlhBe- zPV534q06owN+i8dO@T+*!@CcAS z;>1s%iIu6&ZC1)TR8I^)^&i`U=8ERuNAW zTNPIH+h)|bUt=ld;o2J!Q%!ztfs$Xr!NM$$4)Vr0gT8i+u21ff#`5;M!>xGcA@-1d zj^=NKLiPk%T??tBV>Ew)+rVwMcQLB=x6^Xz3nvesH7KU+eL?V22*jumx;2SAyTb@9 zfrVV)#j#AZTBfHG?aN$7H6YS=VFu_-ljFk}J?>FxiXvH@5JOpa3F2MUZ zgInT0mJmQ4Kj*a{#hF1FEF{BGBDF#F$rLq26C~W6hejl^c;;N!;1es5OsKe^V3p<$ z8&Qh%8-MFi4zh8zg!9z%*qNG9ZR!Ks&N%hZR~cT_1JC5cW-5oefQqeQvZYztzZbR( zANe|;c|3^4ri0FN^(Wp1g?Ve=DCU><@Y&J{nG^niR zwkL^L2s`rET_7F)V{)ym?7~02r~%6vgd~Prwof14(Y@KbLFLitGtENIQ>Ld-5W8@} zB_U)ZTz>xsffORti~7r+NAs?pj-&3zzZXh)-V1YzJC4P@OYl>laF;EB_N<4_ACs$P zQwIL&CDq~0X*tl`k7C+hw5!_Tu(_EzHh0987-44IW;(|qM)P%&6YF-UTvz*E$2T#B zwWL`9k}?G5^`@$aFUD$q72p+m+u@FM$7^;J@7-X=;Ej{3j%+nv%wsIcz62^anD=ya z_s>TNp|kMw_V`o-A%ChUE8h_(H}(mho9TEfhPv@}SoqYUccfnGMxdiP7i+Wf7Z}ZG zMVc)*1fpjIYudF}Dxnl0t6fwPHx%qZlTkqLRWdEG#WOKK0+(CB466|mWgP;?M)pt- zf5(pL_cYjAwj{B8yvCgrkEInc%;Bzunu(C$t(KL&sSSsHAqg+{(8#$93Zqr_q+}a} zXP?e=UF=NFYFVY;AbYcvEru42v z_vrKf51d?nkk-NM_>GU1{=8e-J2MbAvJO}3!JB7<$7S~f_|a;_L0w7qbhmyVXAgC* zIm2SYeRBa@qbl8_`)r}+JTxQeYcmNlY!Fyph zgqq0y^grLxY+djcQt!a;tjsPoCE6m^wd5mhf5@Qj2#|>GcJv{rT+WaCnB*dt;(^Ab zKh^tc``VulhzMuqI#L#1M3m)bbT2$gJBQxpW{7QHE&GbjQXBN7B_}1{f8=xonx~x} zoFaKl%kOJsA(sfUa|HvBpHPE$AB*aDw8*Kuz=;lTkhRT#{1pg?i$WodOmZZ)|26giuky%IR$-uVPq$%6piAw-c8a$7zKoIIf1>ycI;8`Fx$goCxa>h^!Ee*`%ZO6Re4)Hs%PLy# zgK1$aFrEg4s*VUUs|{403aHPdgtD_3VMw!ViGpYCmSsP~u74=2H8qz)otAUEd@*);?_%#sTX;V}vQ{9cFg zpxwFK0tGXZsVFzi)&d<$=FdXExE1>SU z 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 diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-email.png index 02d524201dfb34ce9ffc3d56b0cb7439f84470b0..2ea4c4cdddb56589c4956f5a097064a31d96bef2 100644 GIT binary patch delta 433 zcmV;i0Z#tLhXlum1h6fAeHo&RO$7GUYEWH0CqOP1~4w9en zr=2GjKiTrUXO}F=`qYDs&wWL(0i{ac0{}alU;`KzPCe&5=o{(%EI*ztTD-U=pji3x zs;o~tTefUzd0s38n)d0{U?aWW(CgCo0Km>B*Z=@Jdb8JkQ34FY>pXG*0Du5VL_t)O zv40b@M}T=8fBgUK-3h#$)qNlQ+Kyv8w(F)&o8*n-rmY*-X&O7VlO}KLCC%$>&Du6~ z7AMV{#7S5LHiSh8u?P@g1Og0*MeK`&HUvl@Ko&blXaOO_DiD$oTF}0L6l_1$f1DA| zoHO^{xmS0YXXbl8pYJCh-#PQlGtZfc`2XfS=K$Xqvp=1xOA`EFcI=o00001BQ2*A; zG4Qa2v*GDf7L%~+cfd@f1|F6WvjORt b0v4?RhFWQ2Fnz#m00000NkvXXu0mjfLvhNv delta 431 zcmV;g0Z{(OhXlrl1h6fAe^N}avDbkI13*tm|BV~(zP9Ub1L4E*lTXebZ|9r~FB*7G zjP{6;9BH3=u<_Y{{%ZDksnY8W0HsR*jT^578vwAArT@l_XY1ClZy8l_--C0rKJ7fQ z_{o;%J-cK{)~6n9eC{iP4FDK#(tqQ|t73wUQ_ndM0D40DZ`^pcD`@fJmVjdA%d4_J z?QGeyrR90C5NO(`SA&i8dILbI(tqQ|t73u;0AS~Pv)Fx60u2BY01jFJ0Du5VL_t)u zHh_y9fAIgacPH?2R`-4IYdenZ*shy8ZIU;Ro3?ITr)liePMW-}mo%@lHEY|{S)4R) z5+`91*bo*W#3Dd|5eP6K7O^i9+7KXt09ouHp#_8xt3XIXXhHh|Qn3A0|8YhK2eCNzF&pc-);{TiToCDt%vp}7yOB7Vr|7FLHNdN!<00#AMy&MA% zODMD9>r@o8u$kPA- diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_default-state-with-all-factors-with-phone-number.png index 4093b1627325a18060e7d6a7b13e79d901248add..6529775898f490b81da76ef61aeef906977c38ec 100644 GIT binary patch delta 36217 zcmc$_XIPV4_wb1Y%RyA6N(4lXf$ktW-rxCpfAPv~ zAYkI~E?Rvj_2#Ru+5Z?{{P3gmrnA-cv+-a5v5+*r7^D7G8C`{saYeSrm?3>H2$V#k zbdylLwtR>8TjKvde)@^|{=HD}U-m0{SKh);ALd$2H8N5~`Or~y?lgE!E`w&ulth!0NFVPoF%cT1>z$f#m@051@gWO{)EFQ0WG#CppR_#|%J7-YyVQJ;i zOOm6UbJkATA=7(gfs%cTzGAp zrKWN=N6kkt^ROZtn*cNn&XH9(5)u7WKU@GQjW~fka<5f~oMeEb2tZBp8`vRY$l_+5 zeC%=K+jc5ic?t^jGW+&!LZNtx)Q!N!opKIEyR_#mF&gKBtl`q$f(!O)jf}9Qa5i$( zkCK*cb`HT9ewSCTMTj%s)m4Fl*1?2LizgzOi3NR>rp9_UZb*!U@N_ScE)G#dBK>!}az2-@g=NLMD(fIelc^_>#V-x7t86Zdm1-0mV(qU1 z4liKwdmp7a0Yw5-SmmyMdT?om|1p~_oL{7VQT@m2nZ}xmdv`i9sLG!H2S!Tk*f#K z-redjvqt#KmK@cg2l{YbdCkZv>U-`j-gT3Yyoc?R6J${Z zQsAq7a#7}73#y(LSg!N__fBS=M7BzVtsYdv1xJi)CL371*KhhDqE~#I&lq|}q9&jX zTCx1Lz5oHwtwUyqui-s3=6jwO+*%O3cvRD&$0=fj){XEtOwBU)%G~isq6IaZvR?C4 z0iy}$3omam+jug{jZ}j~{BIH0rU;6#efFS;MZA>Um_d1An5FG7E+iY<1w!~gXEH|) zp_>cG`;gEmn33kJFqAdoaDa(0 z*>}YE=`pAsm5*xDR$uTx*RXdb3c z9j5NM5xwlvVmwa|&eJfAPhlvO-H&Tg2@(f+(~t&1+aGcj>WRFv73sCFBDtidXLR1b zq8`3_STWOmtEQ)6`3f%gO>~ z@3Qh88bbAKO99>r-%E%J9i6C;PL&)T zdX1PqQ!D{iEcaRGB0hrsd}k4FT~;>gj@jAK;}w4?UJ1yJmsm}KTEDr$FCIOt&xl$t zF-9k-^)1)05>CjOoF&_sX*AjFPH3QZ8DFMidgzMWO~wHQF`L9Rc}5NRpt;12 z*|jTi9j(l_0Vh{N*%)>)_L%Qs4)RmyXH{A$|Ae6oz+?L{%g|{%w2E6~_n9nDkH&7W zZ+@x3WiC-2q*4K$i9?(7a|eDIR3t)9F@>q<%7I5}sZYj^O4=cijVGV|ycdcru0 zh#K*_l51>xr558OZ7B#F%VEyj`6V%rF)z1x6{ZDW#TB_pH0wyjS|1k2c$hZPZXu0R zWqzvk4)14sl!32*pubXpqPcITlyhS?pUDoUrwF@WASrv)1M3Qe=QMSzrF+$XOj6$w zMZ2!>RV9jOj!&y%_6A8FHyFXiF%_dO!?^Wy$F~Jve9zvsT&rgHx?`$^TEq669Mr%Z zH)gBf%-L9_zflae=+M6*a|L*O8P9``3fYbuS+lkn3W3Je9+K<_yv1$?{;ZiPZR|{t zm2C_HzBhBCn#y(`SJ<8-!;}VX#qP{`2aOB7e3dg&Q~)!(S^tx;7y|j`vX|}CEl$O; z+510qRKtWm+~!bFG1ssyH~DQx!AXBU%U$$M3J^LdGL3r`LTrvn%v_wtyu+O_ncQhV=G^PiLLG4B4|!;Nd> z`9`WzW(AUs%N0eAMZ53ZgY!0<``Y=Q388Kdus!fl zJoj+XcKxAO{TgZhK3&NKisanVzzu0n!dKtQxg`bsi%Hy@veNVCx~_d$`5ej1d9U5p zhBYtewVzPzWhmbcQoK)ZH5pqGp1QYZJKgKG|@go7KZs_Wv#7(+~uZc<{Z<>e$B?<$>*@Us~xp$*z%Ni zr9ReQb1vu<`lERe2WZRLW^a@z@0@o`OJnEEI&a-HzMfE$&C>Pz*w`KwRz6%IB^Yn$ z-l(7WjMXot{e$}@t>DjkxhcSM2I>8j5%A?o#3WC9?C^D)I>~=~JzrF4Z45iIp2Ap6 zWakcB=|a)+gqA?FRW|%FSrRu9$_aK7i2DhJMFt$xxN8+a_Q5{Z6fg^3ak1$MMVI=k z(Y1F4-f;C8#acZ0C2XugTYq-JBA@Cf4DPto&8t4LEG8QORyhA>+(-ZR{Wj;%D%jrt z+G4QP|2xgV@&A7q^}mCHg%(ijkQ6mgNTtSdy@yD(F~Em z>ZSb{)Fc+Gy7U7DHhT0JEy!5pke$z~n*r3-G#4(Knw-P?hhQVaYc!611O8rMjdjE- z;KF79mFdJXjbHsdoOqB(OZ(v=o@$;?EEfIM##_dD!J{36H*>dnh;7a9F*p5SYtIai z#=aC!8}loj0%TEv0k~seZ%#{J9~klLrdQ{7YtVlfqYYA&9GPvUHvo2sXlT^xa?%CF zd^xEEs~>5SH+-MD2b`t4X@NCdtB~qtEEZ<)Yu1!|E+FKMw^(PHZ5AHaJlY>u zoC7Hn8TH=7`Xf$cv<5g*=Bnz;!(mn^=@yK`@c?`Ce))bQ^Cy}h>-_0Gd)B!q!UgA6Z7G|Ap(upV*WN>l;j>JpVZIX7u7C*NP zR0jCoXEy+If8cYz>#!ohe1%RY%tm1}ztjqV&7xx7Uq042hqIfeM_Z)b5Np=q(6@mb zFDiK40bI>*1%`ni>yy*wryX5hV)f4)(wsuk10N~Pvv|Gyk@9z&-9E+zX{;tmTnh6O z!$t)|`3RxWh5e9S=b1t{_GH-%-!A3F$_VFva4h@FgZYk>LU>lV!2-ehEFMpedDn?1 zYV0g7hO=a%M8X+=sYeYnRMqf47qp&2?oIGT)qp_XF!0A(yo-Jq$94dbAH0QFRr<*Tw5P)ql~8(fVJMwY}EXN<)&A} zOX*eo>sG}c9r>3=SUb)(e%g7W{3yj&ofjFEqH(cq7A)&EXd@~Ds(H`qER6O;mg?6G zR~oJll%iQb7?)_o8@Wum4Q({*ERq@1QsR#MC&BVsi{NGvoAq2D&#F1P?bI?N2gB+q zCG(u&!VkBBq2{(HK|dex^MZwe*9Y4W4PyqiiumfCK5Z<6s(z;KEvvPDredSR&XmRY z7_=7n2XDUIFNHlw)s(DDV%4HEbwciAJMu#)2jKk3d?M9h1)_^dfL{YEXCLfN&kndK zcv~g^#Jf^Ht zXA72o627gf%bA87G8s~6Zqo(2Yvk+9!E!B1){Irc5LnFH+!lWf`bFjhSlVkj*pEQL zwd0Q|;#@~8w>$2M-{(IBRydJ07YpAhHEfugI+__whebCOVUppez?!!W`*O!#4UL!> z&)H7BsaS{v%7`yVp0XxMKquGEb38Xy!C$asoyqWX&cH(XMB%HB1CTsLH^~snC;L(k zmPTNyB{N0jw|UCP_sC+8&GI)RSg@GwfQ<8EIi)c2#sSDeRfEMgV@V_t&YF+y_mHjL zDYR0hTj%_e=UEl6fG4iYP>t;Z-3?Y-@9(+cf;uFc^23e-?6Wq^8+GxGl=f8Xpb1=>JAa;{>-nQKThx4`s?Cw{-3H~& zoKeBx#rg@WEJSu8W38x2w!@Y1Dz{Xlg?!BDl2Tn^*QxSRrNV{}n}b+Q$q=8huOl9B zxutOKr#6C4eQ%(a9TbMw*VsFn#>PH~|4R{|z;}Xu`}fqsvwwPFV7KcTaTxjS$7z** z6HE{2>}Hm6PiM?+KV~R)#4BXx$zh8ow`CFFpj(Iz!)ZDm^J%mp3VJ=MH_~?BtjX=5+>K3^WdRS&#WL=ryr=zb#j*bHkcM$p{dY{!}v z){3esX77h+6@4VAKtQ8DF;S7{zZ;_KAb#pCgxUOchHuobVPN^7Pr3OQ%37igQ7Lt2 zI99DRQPT#vX|Z{KWyaC^b%Sr! zapa=hiv??}?NqWZKX3b(qN-QhA_INWNII_o`l`|uRF&J*6-USRXJE{tH!qVKBdAu; z+5WL(Kcv&NsLN1MtEzT+XNwcKsf)(EV|L`ogh--puxwgcNW+z4Ic1Y0iaQ^$gL$>P zf#2q^Bomi@Ab03Wdb#ZD!{8oLNek}xeYVU^-q_j`GT)6nKQL<=+gSf`GIq{fX^JT9 ze-l?Eox_(+yeW%ErIyUVg$GDiqy?yqcRMO_pFzyCdl;6ua
    3SJ33U@ENQn@Yi&^J)wg$REtPXS8#Qky+4rM8 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 delta 37468 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 From 75c667b4230eae8ecd4f4c7a4fa0d03b68f6f531 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Wed, 12 Nov 2025 12:59:28 -0400 Subject: [PATCH 07/17] feat(passwordless): Fix issue of not being able to change auth factor selection (#285) --- .../authenticator/AuthenticatorViewModel.kt | 49 ++++++++++++++----- .../ui/authenticator/data/UserInfo.kt | 13 ++++- .../ui/authenticator/ui/PasskeyCreated.kt | 2 +- authenticator/src/main/res/values/strings.xml | 1 + 4 files changed, 52 insertions(+), 13 deletions(-) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt index 20fa5097..8144d6c9 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt @@ -318,8 +318,8 @@ internal class AuthenticatorViewModel( startSignIn(info) } - private suspend fun startSignIn(info: UserInfo) = startSignInJob { - val options = getSignInOptions() + private suspend fun startSignIn(info: UserInfo, preferredFirstFactorOverride: AuthFactor? = null) = startSignInJob { + val options = getSignInOptions(preferredFirstFactorOverride = preferredFirstFactorOverride) when (val result = authProvider.signIn(info.username, info.password, options)) { is AmplifyResult.Error -> handleSignInFailure(info, result.error) is AmplifyResult.Success -> handleSignInSuccess(info, result.data) @@ -404,25 +404,48 @@ internal class AuthenticatorViewModel( private suspend fun handleFactorSelectionRequired(info: UserInfo, availableFactors: Set?) { if (availableFactors == null) { - val exception = AuthException("Missing available AuthFactorTypes", "Please open a bug with Amplify") + val exception = + AuthException("Missing available AuthFactorTypes", AmplifyException.REPORT_BUG_TO_AWS_SUGGESTION) handleGeneralFailure(exception) return } // Auto-select a single auth factor if (availableFactors.size == 1) { - confirmSignIn(info, availableFactors.first().challengeResponse) + val newInfo = info.copy(selectedAuthFactor = availableFactors.first()) + confirmSignIn(newInfo, availableFactors.first().challengeResponse) return } + // User has not selected an auth factor yet. + // We need to keep track of a mutating selection here as `onSelect` may be called multiple times as user + // retries after encountering an error (e.g. incorrect password, passkey error, etc). + var currentUserInfo = info.copy(selectedAuthFactor = null) + val newState = stateFactory.newSignInSelectFactorState( username = info.username, availableFactors = availableFactors, onSelect = { authFactor -> - val passwordField = (currentState as? BaseStateImpl)?.form?.fields?.get(Password) - val password = passwordField?.state?.content - val newInfo = info.copy(password = password) - confirmSignIn(newInfo, authFactor.challengeResponse) + val password = if (authFactor is AuthFactor.Password) { + val passwordField = (currentState as? BaseStateImpl)?.form?.fields?.get(Password) + passwordField?.state?.content + } else { + null + } + + // If a user has already previously selected an auth factor then we need to restart the sign in + // flow in order to select a factor again. + val flowRestartRequired = currentUserInfo.selectedAuthFactor != null + + currentUserInfo = currentUserInfo.copy(password = password, selectedAuthFactor = authFactor) + + if (flowRestartRequired) { + // Call signIn to restart the flow but select the same factor + startSignIn(currentUserInfo, preferredFirstFactorOverride = authFactor) + } else { + // Use confirmSignIn to select an auth factor for the first time + confirmSignIn(currentUserInfo, authFactor.challengeResponse) + } } ) moveTo(newState) @@ -430,7 +453,7 @@ internal class AuthenticatorViewModel( private fun handleTotpSetupRequired(info: UserInfo, totpSetupDetails: TOTPSetupDetails?) { if (totpSetupDetails == null) { - val exception = AuthException("Missing TOTPSetupDetails", "Please open a bug with Amplify") + val exception = AuthException("Missing TOTPSetupDetails", AmplifyException.REPORT_BUG_TO_AWS_SUGGESTION) handleGeneralFailure(exception) return } @@ -447,7 +470,9 @@ internal class AuthenticatorViewModel( private suspend fun handleMfaSetupSelectionRequired(info: UserInfo, allowedMfaTypes: Set?) { if (allowedMfaTypes.isNullOrEmpty()) { - handleGeneralFailure(AuthException("Missing allowedMfaTypes", "Please open a bug with Amplify")) + handleGeneralFailure( + AuthException("Missing allowedMfaTypes", AmplifyException.REPORT_BUG_TO_AWS_SUGGESTION) + ) return } @@ -469,7 +494,9 @@ internal class AuthenticatorViewModel( private suspend fun handleMfaSelectionRequired(info: UserInfo, allowedMfaTypes: Set?) { if (allowedMfaTypes.isNullOrEmpty()) { - handleGeneralFailure(AuthException("Missing allowedMfaTypes", "Please open a bug with Amplify")) + handleGeneralFailure( + AuthException("Missing allowedMfaTypes", AmplifyException.REPORT_BUG_TO_AWS_SUGGESTION) + ) return } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt index f9ed43c5..a1a121d5 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt @@ -2,4 +2,15 @@ package com.amplifyframework.ui.authenticator.data import com.amplifyframework.ui.authenticator.enums.SignInSource -internal data class UserInfo(val username: String, val password: String?, val signInSource: SignInSource) +internal data class UserInfo( + val username: String, + val password: String?, + val signInSource: SignInSource, + val selectedAuthFactor: AuthFactor? = null +) { + override fun toString() = "UserInfo(" + + "username=$username, " + + "password=***, " + + "signInSource=$signInSource, " + + "selectedAuthFactor=$selectedAuthFactor)" +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt index 9ab3fe79..278913cc 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt @@ -81,5 +81,5 @@ fun PasskeyCreated( @Composable private fun Passkey(credential: AuthWebAuthnCredential) { - Text(credential.friendlyName ?: "Unknown Passkey") // todo String resource + Text(credential.friendlyName ?: stringResource(R.string.amplify_ui_authenticator_unknown_passkey)) } diff --git a/authenticator/src/main/res/values/strings.xml b/authenticator/src/main/res/values/strings.xml index 0924a7f8..03d3eca2 100644 --- a/authenticator/src/main/res/values/strings.xml +++ b/authenticator/src/main/res/values/strings.xml @@ -42,6 +42,7 @@ Existing Passkeys + Unknown Provider or From 711d7641c491f6e65ebaec2b97a4efb02cb73d2e Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Thu, 13 Nov 2025 14:39:06 -0400 Subject: [PATCH 08/17] Update api dump --- authenticator/api/authenticator.api | 269 ++++++++++++++++++++++++++-- 1 file changed, 257 insertions(+), 12 deletions(-) diff --git a/authenticator/api/authenticator.api b/authenticator/api/authenticator.api index 1ab01e9f..9e1507f7 100644 --- a/authenticator/api/authenticator.api +++ b/authenticator/api/authenticator.api @@ -1,3 +1,7 @@ +public abstract interface class com/amplifyframework/ui/authenticator/AuthenticatorActionState { + public abstract fun getAction ()Ljava/lang/Object; +} + public abstract interface class com/amplifyframework/ui/authenticator/AuthenticatorState { public abstract fun getMessages ()Lkotlinx/coroutines/flow/Flow; public abstract fun getStepState ()Lcom/amplifyframework/ui/authenticator/AuthenticatorStepState; @@ -5,7 +9,7 @@ public abstract interface class com/amplifyframework/ui/authenticator/Authentica public final class com/amplifyframework/ui/authenticator/AuthenticatorStateKt { public static final fun rememberAuthenticatorState (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/amplifyframework/ui/authenticator/AuthenticatorState; - public static final fun rememberAuthenticatorState (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;Lkotlin/jvm/functions/Function1;Lcom/amplifyframework/ui/authenticator/options/TotpOptions;Landroidx/compose/runtime/Composer;II)Lcom/amplifyframework/ui/authenticator/AuthenticatorState; + public static final fun rememberAuthenticatorState (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;Lkotlin/jvm/functions/Function1;Lcom/amplifyframework/ui/authenticator/options/TotpOptions;Lcom/amplifyframework/ui/authenticator/data/AuthenticationFlow;Landroidx/compose/runtime/Composer;II)Lcom/amplifyframework/ui/authenticator/AuthenticatorState; } public abstract interface class com/amplifyframework/ui/authenticator/AuthenticatorStepState { @@ -41,6 +45,37 @@ public final class com/amplifyframework/ui/authenticator/LoadingState : com/ampl public synthetic fun getStep ()Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep; } +public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreatedState : com/amplifyframework/ui/authenticator/AuthenticatorActionState, com/amplifyframework/ui/authenticator/AuthenticatorStepState { + public abstract fun done (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun getPasskeys ()Ljava/util/List; +} + +public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action { +} + +public final class com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action$Done : com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action { + public static final field $stable I + public fun ()V +} + +public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState : com/amplifyframework/ui/authenticator/AuthenticatorActionState, com/amplifyframework/ui/authenticator/AuthenticatorStepState { + public abstract fun createPasskey (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun skip (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action { +} + +public final class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action$CreatePasskey : com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action { + public static final field $stable I + public fun ()V +} + +public final class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action$Skip : com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action { + public static final field $stable I + public fun ()V +} + public abstract interface class com/amplifyframework/ui/authenticator/PasswordResetConfirmState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { public abstract fun getDeliveryDetails ()Lcom/amplifyframework/auth/AuthCodeDeliveryDetails; public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; @@ -75,6 +110,13 @@ public abstract interface class com/amplifyframework/ui/authenticator/SignInConf public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V } +public abstract interface class com/amplifyframework/ui/authenticator/SignInConfirmPasswordState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { + public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; + public abstract fun getUsername ()Ljava/lang/String; + public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V + public abstract fun signIn (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public abstract interface class com/amplifyframework/ui/authenticator/SignInConfirmTotpCodeState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { public abstract fun confirmSignIn (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; @@ -109,6 +151,29 @@ public abstract interface class com/amplifyframework/ui/authenticator/SignInCont public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V } +public abstract interface class com/amplifyframework/ui/authenticator/SignInSelectAuthFactorState : com/amplifyframework/ui/authenticator/AuthenticatorActionState, com/amplifyframework/ui/authenticator/AuthenticatorStepState { + public abstract fun getAvailableAuthFactors ()Ljava/util/Set; + public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; + public abstract fun getUsername ()Ljava/lang/String; + public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V + public abstract fun select (Lcom/amplifyframework/ui/authenticator/data/AuthFactor;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract interface class com/amplifyframework/ui/authenticator/SignInSelectAuthFactorState$Action { +} + +public final class com/amplifyframework/ui/authenticator/SignInSelectAuthFactorState$Action$SelectFactor : com/amplifyframework/ui/authenticator/SignInSelectAuthFactorState$Action { + public static final field $stable I + public fun (Lcom/amplifyframework/ui/authenticator/data/AuthFactor;)V + public final fun component1 ()Lcom/amplifyframework/ui/authenticator/data/AuthFactor; + public final fun copy (Lcom/amplifyframework/ui/authenticator/data/AuthFactor;)Lcom/amplifyframework/ui/authenticator/SignInSelectAuthFactorState$Action$SelectFactor; + public static synthetic fun copy$default (Lcom/amplifyframework/ui/authenticator/SignInSelectAuthFactorState$Action$SelectFactor;Lcom/amplifyframework/ui/authenticator/data/AuthFactor;ILjava/lang/Object;)Lcom/amplifyframework/ui/authenticator/SignInSelectAuthFactorState$Action$SelectFactor; + public fun equals (Ljava/lang/Object;)Z + public final fun getFactor ()Lcom/amplifyframework/ui/authenticator/data/AuthFactor; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + public abstract interface class com/amplifyframework/ui/authenticator/SignInState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V @@ -149,6 +214,109 @@ public abstract interface class com/amplifyframework/ui/authenticator/VerifyUser public abstract fun verifyUser (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } +public abstract interface class com/amplifyframework/ui/authenticator/data/AuthFactor { +} + +public final class com/amplifyframework/ui/authenticator/data/AuthFactor$EmailOtp : com/amplifyframework/ui/authenticator/data/AuthFactor { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/data/AuthFactor$EmailOtp; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/amplifyframework/ui/authenticator/data/AuthFactor$Password : com/amplifyframework/ui/authenticator/data/AuthFactor { + public static final field $stable I + public fun ()V + public fun (Z)V + public synthetic fun (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Z + public final fun copy (Z)Lcom/amplifyframework/ui/authenticator/data/AuthFactor$Password; + public static synthetic fun copy$default (Lcom/amplifyframework/ui/authenticator/data/AuthFactor$Password;ZILjava/lang/Object;)Lcom/amplifyframework/ui/authenticator/data/AuthFactor$Password; + public fun equals (Ljava/lang/Object;)Z + public final fun getSrp ()Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/amplifyframework/ui/authenticator/data/AuthFactor$SmsOtp : com/amplifyframework/ui/authenticator/data/AuthFactor { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/data/AuthFactor$SmsOtp; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/amplifyframework/ui/authenticator/data/AuthFactor$WebAuthn : com/amplifyframework/ui/authenticator/data/AuthFactor { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/data/AuthFactor$WebAuthn; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public abstract interface class com/amplifyframework/ui/authenticator/data/AuthenticationFlow { +} + +public final class com/amplifyframework/ui/authenticator/data/AuthenticationFlow$Password : com/amplifyframework/ui/authenticator/data/AuthenticationFlow { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/data/AuthenticationFlow$Password; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/amplifyframework/ui/authenticator/data/AuthenticationFlow$UserChoice : com/amplifyframework/ui/authenticator/data/AuthenticationFlow { + public static final field $stable I + public fun ()V + public fun (Lcom/amplifyframework/ui/authenticator/data/AuthFactor;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts;)V + public synthetic fun (Lcom/amplifyframework/ui/authenticator/data/AuthFactor;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/amplifyframework/ui/authenticator/data/AuthFactor; + public final fun component2 ()Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts; + public final fun copy (Lcom/amplifyframework/ui/authenticator/data/AuthFactor;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts;)Lcom/amplifyframework/ui/authenticator/data/AuthenticationFlow$UserChoice; + public static synthetic fun copy$default (Lcom/amplifyframework/ui/authenticator/data/AuthenticationFlow$UserChoice;Lcom/amplifyframework/ui/authenticator/data/AuthFactor;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts;ILjava/lang/Object;)Lcom/amplifyframework/ui/authenticator/data/AuthenticationFlow$UserChoice; + public fun equals (Ljava/lang/Object;)Z + public final fun getPasskeyPrompts ()Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts; + public final fun getPreferredAuthFactor ()Lcom/amplifyframework/ui/authenticator/data/AuthFactor; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public abstract interface class com/amplifyframework/ui/authenticator/data/PasskeyPrompt { +} + +public final class com/amplifyframework/ui/authenticator/data/PasskeyPrompt$Always : com/amplifyframework/ui/authenticator/data/PasskeyPrompt { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt$Always; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/amplifyframework/ui/authenticator/data/PasskeyPrompt$Never : com/amplifyframework/ui/authenticator/data/PasskeyPrompt { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt$Never; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class com/amplifyframework/ui/authenticator/data/PasskeyPrompts { + public static final field $stable I + public fun ()V + public fun (Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;)V + public synthetic fun (Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt; + public final fun component2 ()Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt; + public final fun copy (Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;)Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts; + public static synthetic fun copy$default (Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt;ILjava/lang/Object;)Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompts; + public fun equals (Ljava/lang/Object;)Z + public final fun getAfterSignIn ()Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt; + public final fun getAfterSignUp ()Lcom/amplifyframework/ui/authenticator/data/PasskeyPrompt; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + public abstract class com/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep : com/amplifyframework/ui/authenticator/enums/AuthenticatorStep { public static final field $stable I } @@ -167,6 +335,16 @@ public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$Loading; } +public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasskeyCreated : com/amplifyframework/ui/authenticator/enums/AuthenticatorStep { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasskeyCreated; +} + +public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasskeyCreationPrompt : com/amplifyframework/ui/authenticator/enums/AuthenticatorStep { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasskeyCreationPrompt; +} + public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasswordReset : com/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep { public static final field $stable I public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasswordReset; @@ -197,6 +375,11 @@ public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInConfirmNewPassword; } +public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInConfirmPassword : com/amplifyframework/ui/authenticator/enums/AuthenticatorStep { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInConfirmPassword; +} + public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInConfirmTotpCode : com/amplifyframework/ui/authenticator/enums/AuthenticatorStep { public static final field $stable I public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInConfirmTotpCode; @@ -222,6 +405,11 @@ public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInContinueWithTotpSetup; } +public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInSelectAuthFactor : com/amplifyframework/ui/authenticator/enums/AuthenticatorStep { + public static final field $stable I + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignInSelectAuthFactor; +} + public final class com/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignUp : com/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep { public static final field $stable I public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$SignUp; @@ -612,7 +800,8 @@ public abstract interface class com/amplifyframework/ui/authenticator/forms/Pass public abstract interface class com/amplifyframework/ui/authenticator/forms/SignUpFormBuilder { public abstract fun birthdate (Z)V public static synthetic fun birthdate$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V - public abstract fun confirmPassword ()V + public abstract fun confirmPassword (Z)V + public static synthetic fun confirmPassword$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public abstract fun custom (Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)V public static synthetic fun custom$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)V public abstract fun date (Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;)V @@ -629,7 +818,8 @@ public abstract interface class com/amplifyframework/ui/authenticator/forms/Sign public static synthetic fun name$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public abstract fun nickname (Z)V public static synthetic fun nickname$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V - public abstract fun password ()V + public abstract fun password (Z)V + public static synthetic fun password$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public abstract fun phone (Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;)V public static synthetic fun phone$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V public abstract fun phoneNumber (Z)V @@ -647,6 +837,7 @@ public abstract interface class com/amplifyframework/ui/authenticator/forms/Sign public final class com/amplifyframework/ui/authenticator/forms/SignUpFormBuilder$DefaultImpls { public static synthetic fun birthdate$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V + public static synthetic fun confirmPassword$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public static synthetic fun custom$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)V public static synthetic fun date$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V public static synthetic fun email$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V @@ -655,6 +846,7 @@ public final class com/amplifyframework/ui/authenticator/forms/SignUpFormBuilder public static synthetic fun middleName$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public static synthetic fun name$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public static synthetic fun nickname$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V + public static synthetic fun password$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public static synthetic fun phone$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;Lcom/amplifyframework/ui/authenticator/forms/FieldKey;Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V public static synthetic fun phoneNumber$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V public static synthetic fun preferredUsername$default (Lcom/amplifyframework/ui/authenticator/forms/SignUpFormBuilder;ZILjava/lang/Object;)V @@ -677,6 +869,19 @@ public final class com/amplifyframework/ui/authenticator/options/TotpOptions { public fun toString ()Ljava/lang/String; } +public final class com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl : com/amplifyframework/ui/authenticator/PasskeyCreationPromptState, com/amplifyframework/ui/authenticator/states/MutableActionState { + public static final field $stable I + public fun (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V + public fun createPasskey (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun getAction ()Lcom/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action; + public synthetic fun getAction ()Ljava/lang/Object; + public fun getStep ()Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasskeyCreationPrompt; + public synthetic fun getStep ()Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep; + public fun setAction (Lcom/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action;)V + public synthetic fun setAction (Ljava/lang/Object;)V + public fun skip (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public final class com/amplifyframework/ui/authenticator/ui/AuthenticatorErrorKt { public static final fun AuthenticatorError (Lcom/amplifyframework/ui/authenticator/ErrorState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V } @@ -689,10 +894,10 @@ public final class com/amplifyframework/ui/authenticator/ui/AuthenticatorLoading public static final fun AuthenticatorLoading (Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V } -public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$AuthenticatorFormKt { - public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$AuthenticatorFormKt; +public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$AuthenticatorButtonKt { + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$AuthenticatorButtonKt; public fun ()V - public final fun getLambda$559431668$authenticator_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$-183151115$authenticator_release ()Lkotlin/jvm/functions/Function2; } public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$AuthenticatorKt { @@ -719,12 +924,6 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final fun getLambda$792593797$authenticator_release ()Lkotlin/jvm/functions/Function3; } -public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$CommonFooterKt { - public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$CommonFooterKt; - public fun ()V - public final fun getLambda$-744346671$authenticator_release ()Lkotlin/jvm/functions/Function3; -} - public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$DateInputFieldKt { public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$DateInputFieldKt; public fun ()V @@ -732,6 +931,20 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final fun getLambda$-1322695825$authenticator_release ()Lkotlin/jvm/functions/Function2; } +public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasskeyCreatedKt { + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasskeyCreatedKt; + public fun ()V + public final fun getLambda$-1577436357$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1794672713$authenticator_release ()Lkotlin/jvm/functions/Function3; +} + +public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasskeyCreationPromptKt { + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasskeyCreationPromptKt; + public fun ()V + public final fun getLambda$-871924708$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$529487310$authenticator_release ()Lkotlin/jvm/functions/Function3; +} + public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasswordResetConfirmKt { public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasswordResetConfirmKt; public fun ()V @@ -783,6 +996,13 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final fun getLambda$2054432399$authenticator_release ()Lkotlin/jvm/functions/Function3; } +public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInConfirmPasswordKt { + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInConfirmPasswordKt; + public fun ()V + public final fun getLambda$-2137214933$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1993390045$authenticator_release ()Lkotlin/jvm/functions/Function3; +} + public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInConfirmTotpCodeKt { public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInConfirmTotpCodeKt; public fun ()V @@ -828,6 +1048,13 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final fun getLambda$334014841$authenticator_release ()Lkotlin/jvm/functions/Function3; } +public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInSelectAuthFactorKt { + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInSelectAuthFactorKt; + public fun ()V + public final fun getLambda$-600095515$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-855193613$authenticator_release ()Lkotlin/jvm/functions/Function3; +} + public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignUpConfirmKt { public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignUpConfirmKt; public fun ()V @@ -864,6 +1091,14 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final fun getLambda$417795943$authenticator_release ()Lkotlin/jvm/functions/Function3; } +public final class com/amplifyframework/ui/authenticator/ui/PasskeyCreatedKt { + public static final fun PasskeyCreated (Lcom/amplifyframework/ui/authenticator/PasskeyCreatedState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +} + +public final class com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptKt { + public static final fun PasskeyPrompt (Lcom/amplifyframework/ui/authenticator/PasskeyCreationPromptState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +} + public final class com/amplifyframework/ui/authenticator/ui/PasswordResetConfirmKt { public static final fun PasswordResetConfirm (Lcom/amplifyframework/ui/authenticator/PasswordResetConfirmState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V public static final fun PasswordResetConfirmFooter (Lcom/amplifyframework/ui/authenticator/PasswordResetConfirmState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V @@ -889,6 +1124,11 @@ public final class com/amplifyframework/ui/authenticator/ui/SignInConfirmNewPass public static final fun SignInConfirmNewPasswordFooter (Lcom/amplifyframework/ui/authenticator/SignInConfirmNewPasswordState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V } +public final class com/amplifyframework/ui/authenticator/ui/SignInConfirmPasswordKt { + public static final fun SignInConfirmPassword (Lcom/amplifyframework/ui/authenticator/SignInConfirmPasswordState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V + public static final fun SignInConfirmPasswordFooter (Lcom/amplifyframework/ui/authenticator/SignInConfirmPasswordState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +} + public final class com/amplifyframework/ui/authenticator/ui/SignInConfirmTotpCodeKt { public static final fun SignInConfirmTotpCode (Lcom/amplifyframework/ui/authenticator/SignInConfirmTotpCodeState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V public static final fun SignInConfirmTotpCodeFooter (Lcom/amplifyframework/ui/authenticator/SignInConfirmTotpCodeState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V @@ -919,6 +1159,11 @@ public final class com/amplifyframework/ui/authenticator/ui/SignInKt { public static final fun SignInFooter (Lcom/amplifyframework/ui/authenticator/SignInState;Landroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V } +public final class com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorKt { + public static final fun SignInSelectAuthFactor (Lcom/amplifyframework/ui/authenticator/SignInSelectAuthFactorState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V + public static final fun SignInSelectAuthFactorFooter (Lcom/amplifyframework/ui/authenticator/SignInSelectAuthFactorState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V +} + public final class com/amplifyframework/ui/authenticator/ui/SignUpConfirmKt { public static final fun SignUpConfirm (Lcom/amplifyframework/ui/authenticator/SignUpConfirmState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V public static final fun SignUpConfirmFooter (Lcom/amplifyframework/ui/authenticator/SignUpConfirmState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V From a18c60d917c8f24d51d2a3305fb4805bd2ea4a6c Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 09:45:16 -0400 Subject: [PATCH 09/17] Default to passwordless in sample app --- .../amplifyframework/ui/sample/authenticator/MainActivity.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt index f3f731c3..9cd0b720 100644 --- a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt +++ b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt @@ -46,6 +46,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.amplifyframework.ui.authenticator.AuthenticatorState import com.amplifyframework.ui.authenticator.SignedInState +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow import com.amplifyframework.ui.authenticator.rememberAuthenticatorState import com.amplifyframework.ui.authenticator.ui.Authenticator import com.amplifyframework.ui.sample.authenticator.data.ThemeDatastore @@ -62,7 +63,9 @@ class MainActivity : ComponentActivity() { val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) val scope = rememberCoroutineScope() - val authenticatorState = rememberAuthenticatorState() + val authenticatorState = rememberAuthenticatorState( + authenticationFlow = AuthenticationFlow.UserChoice() + ) ApplyTheme(theme = currentTheme, darkMode = darkMode) { ModalNavigationDrawer( From e27810a74d280ee122a769205d3323a6ac2a0548 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 09:46:14 -0400 Subject: [PATCH 10/17] Use latest Amplify version --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index af287f4c..8e7a4b6d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] accompanist = "0.28.0" agp = "8.11.1" -amplify = "2.29.2" +amplify = "2.30.3" appcompat = "1.6.1" androidx-core = "1.9.0" androidx-datastore = "1.1.7" From c6ea90488d36e2bb23543a536ca547cca5d0be7a Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 09:50:07 -0400 Subject: [PATCH 11/17] Enable debug logging in sample app --- .../ui/sample/authenticator/AuthenticatorSampleApp.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/AuthenticatorSampleApp.kt b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/AuthenticatorSampleApp.kt index 537cbad5..b8a3b111 100644 --- a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/AuthenticatorSampleApp.kt +++ b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/AuthenticatorSampleApp.kt @@ -20,11 +20,14 @@ import android.util.Log import com.amplifyframework.AmplifyException import com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin import com.amplifyframework.core.Amplify +import com.amplifyframework.logging.AndroidLoggingPlugin +import com.amplifyframework.logging.LogLevel class AuthenticatorSampleApp : Application() { override fun onCreate() { super.onCreate() try { + Amplify.addPlugin(AndroidLoggingPlugin(LogLevel.VERBOSE)) Amplify.addPlugin(AWSCognitoAuthPlugin()) Amplify.configure(applicationContext) } catch (e: AmplifyException) { From 5e81e3aae57c65e32c8ed3b50ccb80ca0d345ac3 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 09:51:11 -0400 Subject: [PATCH 12/17] Add usefuil buttons to signed in content --- .../ui/sample/authenticator/MainActivity.kt | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt index 9cd0b720..df4792a8 100644 --- a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt +++ b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt @@ -15,7 +15,9 @@ package com.amplifyframework.ui.sample.authenticator +import android.app.Activity import android.os.Bundle +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Arrangement @@ -43,7 +45,9 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp +import com.amplifyframework.core.Amplify import com.amplifyframework.ui.authenticator.AuthenticatorState import com.amplifyframework.ui.authenticator.SignedInState import com.amplifyframework.ui.authenticator.data.AuthenticationFlow @@ -64,7 +68,12 @@ class MainActivity : ComponentActivity() { val scope = rememberCoroutineScope() val authenticatorState = rememberAuthenticatorState( - authenticationFlow = AuthenticationFlow.UserChoice() + authenticationFlow = AuthenticationFlow.UserChoice(), + signUpForm = { + username() + email(required = true) + password(required = false) + } ) ApplyTheme(theme = currentTheme, darkMode = darkMode) { @@ -129,10 +138,30 @@ fun SampleAppContent(drawerState: DrawerState, authenticatorState: Authenticator @Composable fun SignedInContent(state: SignedInState) { val scope = rememberCoroutineScope() + val activity = LocalContext.current as Activity Column { Text("You've signed in as ${state.user.username}!") Button(onClick = { scope.launch { state.signOut() } }) { Text("Sign Out") } + + Button(onClick = { + Amplify.Auth.associateWebAuthnCredential(activity, { }, ::logError) + }) { + Text("Register Passkey") + } + Button(onClick = { + Amplify.Auth.listWebAuthnCredentials({ + if (it.credentials.isNotEmpty()) { + Amplify.Auth.deleteWebAuthnCredential(it.credentials.first().credentialId, { }, ::logError) + } + }, ::logError) + }) { + Text("Delete Passkey") + } } } + +fun logError(e: Exception) { + Log.e("Sample", "Failed", e) +} From 96abaffc8931fc4ccd440b145be771885f2ca260 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 10:10:47 -0400 Subject: [PATCH 13/17] Don't pass value for empty password field --- .../amplifyframework/ui/authenticator/states/SignUpStateImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt index 945301f1..02698854 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt @@ -87,7 +87,7 @@ internal class SignUpStateImpl( override suspend fun signUp() = doSubmit { val username = form.getTrimmed(signInMethod.toFieldKey())!! - val password = form.getTrimmed(FieldKey.Password) + val password = form.getTrimmed(FieldKey.Password).takeIf { !it.isNullOrBlank() } val attributes = form.getUserAttributes() onSubmit(username, password, attributes) } From 62151ab7703233aa1ecb22c6af34b609ed6e8448 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 10:11:37 -0400 Subject: [PATCH 14/17] Update signup form --- .../amplifyframework/ui/sample/authenticator/MainActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt index df4792a8..fde43ec8 100644 --- a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt +++ b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/MainActivity.kt @@ -70,9 +70,9 @@ class MainActivity : ComponentActivity() { val authenticatorState = rememberAuthenticatorState( authenticationFlow = AuthenticationFlow.UserChoice(), signUpForm = { - username() email(required = true) password(required = false) + phoneNumber(required = false) } ) From 0c748e289e840ae55d197043fccba1a36fa95458 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 10:36:12 -0400 Subject: [PATCH 15/17] API updates to match spec --- authenticator/api/authenticator.api | 110 +++++++++--------- .../authenticator/AuthenticatorStepState.kt | 8 +- .../states/PasskeyCreatedStateImpl.kt | 2 +- ...l.kt => PromptToCreatePasskeyStateImpl.kt} | 8 +- .../authenticator/states/StepStateFactory.kt | 2 +- .../ui/authenticator/ui/Authenticator.kt | 14 ++- .../ui/authenticator/ui/PasskeyCreated.kt | 4 +- ...tionPrompt.kt => PromptToCreatePasskey.kt} | 12 +- .../ui/authenticator/testUtil/MockStates.kt | 8 +- .../ui/authenticator/ui/PasskeyCreatedTest.kt | 4 +- .../ui/PasskeyCreationPromptTest.kt | 18 +-- 11 files changed, 100 insertions(+), 90 deletions(-) rename authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/{PasskeyCreationPromptStateImpl.kt => PromptToCreatePasskeyStateImpl.kt} (76%) rename authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/{PasskeyCreationPrompt.kt => PromptToCreatePasskey.kt} (87%) diff --git a/authenticator/api/authenticator.api b/authenticator/api/authenticator.api index 9e1507f7..97828a93 100644 --- a/authenticator/api/authenticator.api +++ b/authenticator/api/authenticator.api @@ -46,49 +46,49 @@ public final class com/amplifyframework/ui/authenticator/LoadingState : com/ampl } public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreatedState : com/amplifyframework/ui/authenticator/AuthenticatorActionState, com/amplifyframework/ui/authenticator/AuthenticatorStepState { - public abstract fun done (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun continueSignIn (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getPasskeys ()Ljava/util/List; } public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action { } -public final class com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action$Done : com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action { +public final class com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action$ContinueSignIn : com/amplifyframework/ui/authenticator/PasskeyCreatedState$Action { public static final field $stable I public fun ()V } -public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState : com/amplifyframework/ui/authenticator/AuthenticatorActionState, com/amplifyframework/ui/authenticator/AuthenticatorStepState { +public abstract interface class com/amplifyframework/ui/authenticator/PasswordResetConfirmState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { + public abstract fun getDeliveryDetails ()Lcom/amplifyframework/auth/AuthCodeDeliveryDetails; + public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; + public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V + public abstract fun submitPasswordResetConfirm (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract interface class com/amplifyframework/ui/authenticator/PasswordResetState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { + public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; + public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V + public abstract fun submitPasswordReset (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract interface class com/amplifyframework/ui/authenticator/PromptToCreatePasskeyState : com/amplifyframework/ui/authenticator/AuthenticatorActionState, com/amplifyframework/ui/authenticator/AuthenticatorStepState { public abstract fun createPasskey (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun skip (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } -public abstract interface class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action { +public abstract interface class com/amplifyframework/ui/authenticator/PromptToCreatePasskeyState$Action { } -public final class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action$CreatePasskey : com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action { +public final class com/amplifyframework/ui/authenticator/PromptToCreatePasskeyState$Action$CreatePasskey : com/amplifyframework/ui/authenticator/PromptToCreatePasskeyState$Action { public static final field $stable I public fun ()V } -public final class com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action$Skip : com/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action { +public final class com/amplifyframework/ui/authenticator/PromptToCreatePasskeyState$Action$Skip : com/amplifyframework/ui/authenticator/PromptToCreatePasskeyState$Action { public static final field $stable I public fun ()V } -public abstract interface class com/amplifyframework/ui/authenticator/PasswordResetConfirmState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { - public abstract fun getDeliveryDetails ()Lcom/amplifyframework/auth/AuthCodeDeliveryDetails; - public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; - public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V - public abstract fun submitPasswordResetConfirm (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public abstract interface class com/amplifyframework/ui/authenticator/PasswordResetState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { - public abstract fun getForm ()Lcom/amplifyframework/ui/authenticator/forms/MutableFormState; - public abstract fun moveTo (Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorInitialStep;)V - public abstract fun submitPasswordReset (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - public abstract interface class com/amplifyframework/ui/authenticator/SignInConfirmCustomState : com/amplifyframework/ui/authenticator/AuthenticatorStepState { public abstract fun confirmSignIn (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getAdditionalInfo ()Ljava/util/Map; @@ -869,15 +869,15 @@ public final class com/amplifyframework/ui/authenticator/options/TotpOptions { public fun toString ()Ljava/lang/String; } -public final class com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl : com/amplifyframework/ui/authenticator/PasskeyCreationPromptState, com/amplifyframework/ui/authenticator/states/MutableActionState { +public final class com/amplifyframework/ui/authenticator/states/PromptToCreatePasskeyStateImpl : com/amplifyframework/ui/authenticator/PromptToCreatePasskeyState, com/amplifyframework/ui/authenticator/states/MutableActionState { public static final field $stable I public fun (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V public fun createPasskey (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun getAction ()Lcom/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action; + public fun getAction ()Lcom/amplifyframework/ui/authenticator/PromptToCreatePasskeyState$Action; public synthetic fun getAction ()Ljava/lang/Object; public fun getStep ()Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep$PasskeyCreationPrompt; public synthetic fun getStep ()Lcom/amplifyframework/ui/authenticator/enums/AuthenticatorStep; - public fun setAction (Lcom/amplifyframework/ui/authenticator/PasskeyCreationPromptState$Action;)V + public fun setAction (Lcom/amplifyframework/ui/authenticator/PromptToCreatePasskeyState$Action;)V public synthetic fun setAction (Ljava/lang/Object;)V public fun skip (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -887,7 +887,7 @@ public final class com/amplifyframework/ui/authenticator/ui/AuthenticatorErrorKt } public final class com/amplifyframework/ui/authenticator/ui/AuthenticatorKt { - public static final fun Authenticator (Landroidx/compose/ui/Modifier;Lcom/amplifyframework/ui/authenticator/AuthenticatorState;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;IIII)V + public static final fun Authenticator (Landroidx/compose/ui/Modifier;Lcom/amplifyframework/ui/authenticator/AuthenticatorState;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;IIII)V } public final class com/amplifyframework/ui/authenticator/ui/AuthenticatorLoadingKt { @@ -903,25 +903,29 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$AuthenticatorKt { public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$AuthenticatorKt; public fun ()V - public final fun getLambda$-1364811249$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-1534614155$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-1534995609$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-1589760345$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-173861027$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-1772037977$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-1828710841$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-35945593$authenticator_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda$-655729473$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$-70309625$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$127509735$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$1684084125$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$1696024992$authenticator_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda$1943575719$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$2094400221$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$614972265$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$634797031$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$711026261$authenticator_release ()Lkotlin/jvm/functions/Function2; - public final fun getLambda$792593797$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-1098997081$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-1185569707$authenticator_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$-1321237603$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-1500805657$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-1564461377$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-489643147$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-829100313$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$-901777241$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1086843975$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1121453405$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1279389511$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1463924539$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1517396039$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1704729959$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$178565481$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$1944093671$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$2056608783$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$2077124263$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$425485189$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$484030880$authenticator_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$524324231$authenticator_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda$810365703$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$883421405$authenticator_release ()Lkotlin/jvm/functions/Function3; } public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$DateInputFieldKt { @@ -938,13 +942,6 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final fun getLambda$1794672713$authenticator_release ()Lkotlin/jvm/functions/Function3; } -public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasskeyCreationPromptKt { - public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasskeyCreationPromptKt; - public fun ()V - public final fun getLambda$-871924708$authenticator_release ()Lkotlin/jvm/functions/Function3; - public final fun getLambda$529487310$authenticator_release ()Lkotlin/jvm/functions/Function3; -} - public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasswordResetConfirmKt { public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$PasswordResetConfirmKt; public fun ()V @@ -970,6 +967,13 @@ public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons public final fun getLambda$977961286$authenticator_release ()Lkotlin/jvm/functions/Function2; } +public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$PromptToCreatePasskeyKt { + public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$PromptToCreatePasskeyKt; + public fun ()V + public final fun getLambda$280783377$authenticator_release ()Lkotlin/jvm/functions/Function3; + public final fun getLambda$445145695$authenticator_release ()Lkotlin/jvm/functions/Function3; +} + public final class com/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInConfirmCustomKt { public static final field INSTANCE Lcom/amplifyframework/ui/authenticator/ui/ComposableSingletons$SignInConfirmCustomKt; public fun ()V @@ -1095,10 +1099,6 @@ public final class com/amplifyframework/ui/authenticator/ui/PasskeyCreatedKt { public static final fun PasskeyCreated (Lcom/amplifyframework/ui/authenticator/PasskeyCreatedState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V } -public final class com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptKt { - public static final fun PasskeyPrompt (Lcom/amplifyframework/ui/authenticator/PasskeyCreationPromptState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V -} - public final class com/amplifyframework/ui/authenticator/ui/PasswordResetConfirmKt { public static final fun PasswordResetConfirm (Lcom/amplifyframework/ui/authenticator/PasswordResetConfirmState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V public static final fun PasswordResetConfirmFooter (Lcom/amplifyframework/ui/authenticator/PasswordResetConfirmState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V @@ -1109,6 +1109,10 @@ public final class com/amplifyframework/ui/authenticator/ui/PasswordResetKt { public static final fun PasswordResetFooter (Lcom/amplifyframework/ui/authenticator/PasswordResetState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V } +public final class com/amplifyframework/ui/authenticator/ui/PromptToCreatePasskeyKt { + public static final fun PromptToCreatePasskey (Lcom/amplifyframework/ui/authenticator/PromptToCreatePasskeyState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V +} + public final class com/amplifyframework/ui/authenticator/ui/SignInConfirmCustomKt { public static final fun SignInConfirmCustom (Lcom/amplifyframework/ui/authenticator/SignInConfirmCustomState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V public static final fun SignInConfirmCustomFooter (Lcom/amplifyframework/ui/authenticator/SignInConfirmCustomState;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;II)V diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index 9f575bb0..e9acda57 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -546,9 +546,9 @@ interface VerifyUserConfirmState : AuthenticatorStepState { * via biometrics */ @Stable -interface PasskeyCreationPromptState : +interface PromptToCreatePasskeyState : AuthenticatorStepState, - AuthenticatorActionState { + AuthenticatorActionState { sealed interface Action { /** * User is creating a passkey @@ -583,7 +583,7 @@ interface PasskeyCreatedState : /** * User has selected the Done button */ - class Done : Action + class ContinueSignIn : Action } /** @@ -594,5 +594,5 @@ interface PasskeyCreatedState : /** * Continue to the next step */ - suspend fun done() + suspend fun continueSignIn() } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt index 8e938b60..47fa13a8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt @@ -16,7 +16,7 @@ internal class PasskeyCreatedStateImpl( override var action: PasskeyCreatedState.Action? by mutableStateOf(null) - override suspend fun done() = withAction(PasskeyCreatedState.Action.Done()) { + override suspend fun continueSignIn() = withAction(PasskeyCreatedState.Action.ContinueSignIn()) { onDone() } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PromptToCreatePasskeyStateImpl.kt similarity index 76% rename from authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt rename to authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PromptToCreatePasskeyStateImpl.kt index f6f89329..300ce5aa 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PromptToCreatePasskeyStateImpl.kt @@ -3,14 +3,14 @@ package com.amplifyframework.ui.authenticator.states import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState.Action +import com.amplifyframework.ui.authenticator.PromptToCreatePasskeyState +import com.amplifyframework.ui.authenticator.PromptToCreatePasskeyState.Action import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -class PasskeyCreationPromptStateImpl(private val onSubmit: suspend () -> Unit, private val onSkip: suspend () -> Unit) : - PasskeyCreationPromptState, +class PromptToCreatePasskeyStateImpl(private val onSubmit: suspend () -> Unit, private val onSkip: suspend () -> Unit) : + PromptToCreatePasskeyState, MutableActionState { private val mutex = Mutex() diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt index 2010d011..d3139316 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt @@ -199,7 +199,7 @@ internal class StepStateFactory( ) fun newPasskeyPromptState(onSubmit: suspend () -> Unit, onSkip: suspend () -> Unit) = - PasskeyCreationPromptStateImpl( + PromptToCreatePasskeyStateImpl( onSubmit = onSubmit, onSkip = onSkip ) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt index 9f378142..d54e8d92 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/Authenticator.kt @@ -42,9 +42,9 @@ import com.amplifyframework.ui.authenticator.AuthenticatorStepState import com.amplifyframework.ui.authenticator.ErrorState import com.amplifyframework.ui.authenticator.LoadingState import com.amplifyframework.ui.authenticator.PasskeyCreatedState -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState import com.amplifyframework.ui.authenticator.PasswordResetConfirmState import com.amplifyframework.ui.authenticator.PasswordResetState +import com.amplifyframework.ui.authenticator.PromptToCreatePasskeyState import com.amplifyframework.ui.authenticator.SignInConfirmCustomState import com.amplifyframework.ui.authenticator.SignInConfirmMfaState import com.amplifyframework.ui.authenticator.SignInConfirmNewPasswordState @@ -123,6 +123,10 @@ fun Authenticator( passwordResetConfirmContent: @Composable (state: PasswordResetConfirmState) -> Unit = { PasswordResetConfirm(it) }, verifyUserContent: @Composable (state: VerifyUserState) -> Unit = { VerifyUser(it) }, verifyUserConfirmContent: @Composable (state: VerifyUserConfirmState) -> Unit = { VerifyUserConfirm(it) }, + signInSelectAuthFactorContent: @Composable (SignInSelectAuthFactorState) -> Unit = { SignInSelectAuthFactor(it) }, + signInConfirmPasswordContent: @Composable (SignInConfirmPasswordState) -> Unit = { SignInConfirmPassword(it) }, + promptToCreatePasskeyContent: @Composable (PromptToCreatePasskeyState) -> Unit = { PromptToCreatePasskey(it) }, + passkeyCreatedContent: @Composable (PasskeyCreatedState) -> Unit = { PasskeyCreated(it) }, errorContent: @Composable (state: ErrorState) -> Unit = { AuthenticatorError(it) }, headerContent: @Composable () -> Unit = {}, footerContent: @Composable () -> Unit = {}, @@ -151,7 +155,7 @@ fun Authenticator( when (targetState) { is LoadingState -> loadingContent() is SignInState -> signInContent(targetState) - is SignInSelectAuthFactorState -> SignInSelectAuthFactor(targetState) + is SignInSelectAuthFactorState -> signInSelectAuthFactorContent(targetState) is SignInConfirmMfaState -> signInConfirmMfaContent(targetState) is SignInConfirmCustomState -> signInConfirmCustomContent(targetState) is SignInConfirmNewPasswordState -> signInConfirmNewPasswordContent( @@ -159,6 +163,7 @@ fun Authenticator( ) is SignInConfirmTotpCodeState -> signInConfirmTotpCodeContent(targetState) + is SignInConfirmPasswordState -> signInConfirmPasswordContent(targetState) is SignInContinueWithTotpSetupState -> signInContinueWithTotpSetupContent(targetState) is SignInContinueWithEmailSetupState -> signInContinueWithEmailSetupContent(targetState) is SignInContinueWithMfaSetupSelectionState -> @@ -172,9 +177,8 @@ fun Authenticator( is SignUpConfirmState -> signUpConfirmContent(targetState) is VerifyUserState -> verifyUserContent(targetState) is VerifyUserConfirmState -> verifyUserConfirmContent(targetState) - is PasskeyCreationPromptState -> PasskeyPrompt(targetState) - is PasskeyCreatedState -> PasskeyCreated(targetState) - is SignInConfirmPasswordState -> SignInConfirmPassword(targetState) + is PromptToCreatePasskeyState -> promptToCreatePasskeyContent(targetState) + is PasskeyCreatedState -> passkeyCreatedContent(targetState) else -> error("Unimplemented state") } footerContent() diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt index 278913cc..356a3388 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt @@ -70,8 +70,8 @@ fun PasskeyCreated( AuthenticatorButton( modifier = Modifier.testTag(TestTags.ContinueButton), - onClick = { scope.launch { state.done() } }, - loading = state.action is Action.Done, + onClick = { scope.launch { state.continueSignIn() } }, + loading = state.action is Action.ContinueSignIn, label = stringResource(R.string.amplify_ui_authenticator_button_continue) ) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PromptToCreatePasskey.kt similarity index 87% rename from authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt rename to authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PromptToCreatePasskey.kt index 2bd59cc9..8f54c24d 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PromptToCreatePasskey.kt @@ -14,19 +14,19 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState.Action +import com.amplifyframework.ui.authenticator.PromptToCreatePasskeyState +import com.amplifyframework.ui.authenticator.PromptToCreatePasskeyState.Action import com.amplifyframework.ui.authenticator.R import kotlinx.coroutines.launch @Composable -fun PasskeyPrompt( - state: PasskeyCreationPromptState, +fun PromptToCreatePasskey( + state: PromptToCreatePasskeyState, modifier: Modifier = Modifier, - headerContent: @Composable (PasskeyCreationPromptState) -> Unit = { + headerContent: @Composable (PromptToCreatePasskeyState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_prompt_for_passkey)) }, - footerContent: @Composable (PasskeyCreationPromptState) -> Unit = {} + footerContent: @Composable (PromptToCreatePasskeyState) -> Unit = {} ) { val scope = rememberCoroutineScope() val action = state.action diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index 850ff6ea..60f0f5e6 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -20,7 +20,7 @@ import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.PasskeyCreatedState -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.PromptToCreatePasskeyState import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.data.AuthFactor @@ -28,9 +28,9 @@ import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData import com.amplifyframework.ui.authenticator.mockAuthCodeDeliveryDetails import com.amplifyframework.ui.authenticator.states.PasskeyCreatedStateImpl -import com.amplifyframework.ui.authenticator.states.PasskeyCreationPromptStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetConfirmStateImpl import com.amplifyframework.ui.authenticator.states.PasswordResetStateImpl +import com.amplifyframework.ui.authenticator.states.PromptToCreatePasskeyStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmMfaStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmPasswordStateImpl import com.amplifyframework.ui.authenticator.states.SignInConfirmTotpCodeStateImpl @@ -147,8 +147,8 @@ internal fun mockPasskeyCreatedState( internal fun mockPasskeyCreationPromptState( onSubmit: suspend () -> Unit = {}, onSkip: suspend () -> Unit = {}, - action: PasskeyCreationPromptState.Action? = null -) = PasskeyCreationPromptStateImpl( + action: PromptToCreatePasskeyState.Action? = null +) = PromptToCreatePasskeyStateImpl( onSubmit = onSubmit, onSkip = onSkip ).apply { this.action = action } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt index 0da31833..5b3f7558 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt @@ -89,7 +89,9 @@ class PasskeyCreatedTest : AuthenticatorUiTest() { every { friendlyName } returns "Test Passkey" } setContent { - PasskeyCreated(state = mockPasskeyCreatedState(passkeys = listOf(passkey), action = Action.Done())) + PasskeyCreated( + state = mockPasskeyCreatedState(passkeys = listOf(passkey), action = Action.ContinueSignIn()) + ) } } } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt index c0dedbea..bdf2f0ba 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt @@ -1,6 +1,6 @@ package com.amplifyframework.ui.authenticator.ui -import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState.Action +import com.amplifyframework.ui.authenticator.PromptToCreatePasskeyState.Action import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest import com.amplifyframework.ui.authenticator.testUtil.mockPasskeyCreationPromptState import com.amplifyframework.ui.authenticator.ui.robots.passkeyCreationPrompt @@ -14,7 +14,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { @Test fun `title is Sign in faster with Passkey`() { setContent { - PasskeyPrompt(state = mockPasskeyCreationPromptState()) + PromptToCreatePasskey(state = mockPasskeyCreationPromptState()) } passkeyCreationPrompt { hasTitle("Sign in faster with Passkey") @@ -24,7 +24,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { @Test fun `has create passkey button`() { setContent { - PasskeyPrompt(state = mockPasskeyCreationPromptState()) + PromptToCreatePasskey(state = mockPasskeyCreationPromptState()) } passkeyCreationPrompt { hasCreatePasskeyButton("Create a Passkey") @@ -34,7 +34,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { @Test fun `has skip passkey button`() { setContent { - PasskeyPrompt(state = mockPasskeyCreationPromptState()) + PromptToCreatePasskey(state = mockPasskeyCreationPromptState()) } passkeyCreationPrompt { hasSkipPasskeyButton("Continue without a Passkey") @@ -45,7 +45,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { fun `clicking create passkey calls createPasskey`() { val onSubmit = mockk Unit>(relaxed = true) setContent { - PasskeyPrompt(state = mockPasskeyCreationPromptState(onSubmit = onSubmit)) + PromptToCreatePasskey(state = mockPasskeyCreationPromptState(onSubmit = onSubmit)) } passkeyCreationPrompt { clickCreatePasskeyButton() @@ -57,7 +57,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { fun `clicking skip calls skip`() { val onSkip = mockk Unit>(relaxed = true) setContent { - PasskeyPrompt(state = mockPasskeyCreationPromptState(onSkip = onSkip)) + PromptToCreatePasskey(state = mockPasskeyCreationPromptState(onSkip = onSkip)) } passkeyCreationPrompt { clickSkipPasskeyButton() @@ -69,7 +69,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { @ScreenshotTest fun `default state`() { setContent { - PasskeyPrompt(state = mockPasskeyCreationPromptState()) + PromptToCreatePasskey(state = mockPasskeyCreationPromptState()) } } @@ -77,7 +77,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { @ScreenshotTest fun `creating passkey`() { setContent { - PasskeyPrompt( + PromptToCreatePasskey( state = mockPasskeyCreationPromptState(action = Action.CreatePasskey()) ) } @@ -87,7 +87,7 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { @ScreenshotTest fun `skipping passkey creation`() { setContent { - PasskeyPrompt( + PromptToCreatePasskey( state = mockPasskeyCreationPromptState(action = Action.Skip()) ) } From 5fd230526267b952c97833600cbba0c6ee7efbc2 Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 13:47:09 -0400 Subject: [PATCH 16/17] Rename SelectFactor -> SelectAuthFactor --- .../amplifyframework/ui/authenticator/AuthenticatorStepState.kt | 2 +- .../ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt | 2 +- .../ui/authenticator/ui/SignInSelectAuthFactor.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index e9acda57..b70e37e8 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -118,7 +118,7 @@ interface SignInSelectAuthFactorState : /** * User has selected an auth factor */ - data class SelectFactor(val factor: AuthFactor) : Action + data class SelectAuthFactor(val factor: AuthFactor) : Action } /** diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt index 6cf56dcb..eb907f2a 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt @@ -32,7 +32,7 @@ internal class SignInSelectAuthFactorStateImpl( override fun moveTo(step: AuthenticatorInitialStep) = onMoveTo(step) - override suspend fun select(authFactor: AuthFactor) = withAction(Action.SelectFactor(authFactor)) { + override suspend fun select(authFactor: AuthFactor) = withAction(Action.SelectAuthFactor(authFactor)) { // Clear errors form.fields.values.forEach { it.state.error = null } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt index c9f2c9d2..fc160b38 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -97,7 +97,7 @@ private fun AuthFactorButton( val scope = rememberCoroutineScope() AuthenticatorButton( onClick = { scope.launch { state.select(authFactor) } }, - loading = action is Action.SelectFactor && action.factor == authFactor, + loading = action is Action.SelectAuthFactor && action.factor == authFactor, enabled = action == null, label = stringResource(authFactor.signInResourceId), modifier = modifier.testTag(authFactor.testTag) From 75befdb24eea2f3d3324169480f6d7f31d25902c Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Fri, 14 Nov 2025 13:47:21 -0400 Subject: [PATCH 17/17] Fix crash in sample app when rotating device --- .../authenticator/data/ThemeDatastore.kt | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/data/ThemeDatastore.kt b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/data/ThemeDatastore.kt index 123dc171..33d99fb6 100644 --- a/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/data/ThemeDatastore.kt +++ b/samples/authenticator/app/src/main/java/com/amplifyframework/ui/sample/authenticator/data/ThemeDatastore.kt @@ -13,9 +13,7 @@ import kotlinx.coroutines.flow.map class ThemeDatastore(context: Context) { - private val Context.dataStore: DataStore by preferencesDataStore(name = "theme") - - private val datastore = context.dataStore + private val datastore = initDatastore(context) private val darkModeKey = booleanPreferencesKey("darkMode") private val themeKey = stringPreferencesKey("theme") @@ -40,4 +38,16 @@ class ThemeDatastore(context: Context) { SupportedTheme.valueOf(name) } -} \ No newline at end of file + companion object { + private val Context.dataStore: DataStore by preferencesDataStore(name = "theme") + + private lateinit var dataStore: DataStore + + private fun initDatastore(context: Context): DataStore { + if (!::dataStore.isInitialized) { + dataStore = context.dataStore + } + return dataStore + } + } +}

ZG<@tVHem*2Xp0@D*YGt<-bTLsKB?4hB;xZwW#^DgJPOaIfftO$G(uX z%(WCwDY&a>??jsqEF`zppDp({YCK)9Uoz?q`jtll%{@k|-kw&}_iL*^4zs+;#jn)I zFn?lLk%WHHv6Kx#^!DnP7*R}=IrG=PFwk#Ri>)f%`WNWvWoO2}yU1)@t*k9`Y;Dg< z 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 K3x(&b@Bc3uRb}J= literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_no-password.png b/authenticator/src/test/screenshots/SignInSelectAuthFactorTest_no-password.png new file mode 100644 index 0000000000000000000000000000000000000000..7384463334d2a853524556bc102b73a1466a61d8 GIT binary patch literal 44416 zcmeFZd05h0*FQ|Bvcbx1(jv9AvdMvCp*dzbG-w{PGIQ3P5;PNWK%}D$=0s&DHB(P% zS~*XcD3Uo)$0U5 zd+)b%w(HmKSPOwb)}KCQbshp)0f#`=c&=6eSMDtRq7H%Fgq*gryb$Fv#adJ2cQH$Q zZt6AqBEg-&`wKm!>rT*hAs$9{o$sh}(y=#DtD=S-Qwqv1Jejn%@bOwr&9u`=%g?>s zrJ2yVu`~a@-HK_u6_y*1uiL1+!fM5eWkLQqX@U#6lzPnQEdTomNx+|ti!2>IKRPr% zY|ti(TWaVT!Ob`<%{XiY;vB!XxL>wh{>On8Q29^g|Ni`+T!Qe4x673}OWYga!K2Bfn0~@|M#o&n!%OE!&>dbkun^$R+l)V{Cn*5ZYRMxcc zRnHkWZHRLsaoq*4N0t_6of~)r*V-O)=>;;lSzKI3e9dUWVhD@7s6LL(@AsS$IL;pE z%-MVP@r4FHF-xm&|%(Ld7j z+^~z&dF6EbIyxSOS!=V;Q7)Eu$WHX2_Yk?X2g?t4G4Ypwfw9f4qB4k9cnxnReyKkD zhT`WLqfja3H#lb-hISJy(os;$=Jy4se@c?-+&H!sykFtna;HS6n(ek6f>b;>_=Zp9 zzE)}cv~ox#$Gc6Xh#AtLgURC*a96F=O5Z16DMgwV-t@dm^ebBp?2+J(;X%I)_bQyL zcmL~)F0THRpK{n$gbn#+T*Up*#y!M-2*PxS=Q_#0dM^5jdhu~Jk~xZn2Z^mFnAm>H zR65jC#(%?3o01Vv)7OLP*~_P=QfMM*G-&AdmPte|uHS5CX3qA^c6f-Zu2Is|{ymIU zMOe#v!wU}4e>qj@9oyaBHP;>4Onv!anIcbak~i&H&SJX^g7 zHSStSC^cUAy14AMm=Rn)DR->Z1c%tM&D>=UI2qS-_Nd}ni?L)$P*Kh$9)TIsKb&J747CZZ(B^e1y=0?nsA`2O3YUdpzN)U5y_CZMa zzWgSS{9h+~;+-7Kj+)fjsz+ZPDANc_b1?dRYx1Oq2SopN6 zT5o50oT#`OUEPcHqB=MI_`{{ah5l5P`H{PGN5z7rML~mjD(mz*bxhk<=c`Pp)ruXCyIwGJKa9#) zqZfneWnF}$bn5JSMVYzTR7Fb_GWOGQjrR=EkIzatBW8D(;po%a?9*F1IdBhPfc`uM zWy-^l@Qun9FPKyQZuH=?RBrVr=IA1tkh(gPiY7gc9Eo;6*~V%7suP;^Wb#PT57fLf zS<*jc#-NIozaQ~Fealk0tN>YP!0fpdw;oeQi#TI+3G!#1Wen`1zPn@{AIJleyXY$?7j2axCkscvF zEaJ8Yyx)aaAI2@oMC2uu$tv|IuL1PFurew#7FbaaW4+JL=60iUy4w!0DJt5~Onlr- zJ_0IBl$o+q3?_d&>JAUAP=21#)u!UAJp|axxf^Od3q{PlLmcVtw(EIlOby~bW&QI&JGv4~(TRcH zCy1h$R3WWiJ|aL{UnZo^zwrq79?o0YvW=MMGi z394TVynk!S<)U)*Ih3`KnM+qIlzZBXJP)2gY1uQ=oQM`It1wY|-a>)yRUh$VzmCWK zJ&pq4K4{w>>*3}*xWXOO*|XLTkL$=X-jHN>Ztvp4xP|9k3s~;Sbyg}%+ud`0-}V=o zi(U;G?^YLNmEApKI89P=B_KEwH&hgpIdUm7AFs=VMFlkC7G|S#P1ZKlVA<5OdR-&h zTivrP#FcnI?wtTr_V#{@MYhGI49~de+8EKK#5^?^H}UN5rO>DrXq9;P;z-X?4I7CE z>u{@d#&uM3iQuuqIH-Zsn!k=CNgeE|!5S*Zy;yl6Mf5Rv6mt)AgxFfwCi{aQkSMgF z5`>3v#IE*O_wu19_?~$0WZp)6V*wXFX4*cV61+7}OBniV*^mQHLX)@^@|;>$Ksi|B zzj|(Y|EIp&Ki}2J#l8x(&^Ga;Vy`9ZPJu-U4Okf4Y_PU*%1^IjV70x+|(gUW={yj|U|z zx6EP}$8X%2u7TLtZR=bSwoyk|nWoB_-A5`AQ=tpl_Q}%(k8xwYP3Qop03&e^%74lqL2@lmYOA`2T?`A1%OyTG>q|R@ue%3j&vR-E`FwacUr)PK7 z|6+7s0*bvIm)9P(Lk=R08MeEOoq7i+wwWD?%k(xeSALs!}3Wc!))wzEl12PYs#+)9_uTQ-W>-!$L#(BV!A&eb^muNdN+{~DYb6M^EuYf zqc2R{$t7f$&X~RPsds4LO@nQpT^pS2+3EQ`UIkUM*|)HOc}&#jR2{)okNWiclt*-b zvBw{^*@vpv!}ooTSs!d}uJ}&B4W07&e%akt;>b^ z9T>h|unE)WnXBOUthH}X58j<1uy`upCO)SVat^W5q#BE#HLB3E7?4)vAw%!;r)8(= zG`4kMcM#W8jc6tNIG7`>F4{Ybq~5HgMM2zb!;o~tudJy*{hz5;fd9(&5O4Rw1hSE|j{c`(CZduy;Ogvpa`BUe>^WQk#92 z#>$gDojy(UXaQKj()Xi}iNZyD=3UiDEhJN~*=B^G<6d;jcO@j|(657u<5Zg7X1$o+ zjsL&>~x zBzWvWOF^V3@ZclY##;t+>ARzynzmPklsSYa?_Z&0TmFU2pd$$E| zR>1SQ*;K>Qr#36M$fHnFLhMCXf_Ol)m@Mcdg@Jr`a3&At?t~d10~Mlb77&qys>bY-A|L zmB2fxWOgLjaE(+yeRboxV_zRlZqA#t63M|Ya|GohPJxCt!k8ZU%rN}B6RY9GoZ|UL zTX}kd$a!PIK&Bo0mYMdIX6FBJ+htCaMK&Dy*DnvFZtZ1tyJdsj6a-Lt%4GGQ4@MNd z3w=!5si&BChwQc=9DL6ty!gj4St~$`FO~k)WOu7R*G#i%g{|`aC;YPkKUWsTc>#d_ znDYl<03O05kTvk(nASa0C&@nF-*xDb8znp<} z`&f$|&I{*^U<6$w7&sNXA^Eep{fp{HrT`TS=KRcaF8UJ3Dwt7QKxQWG`w@bVXw?&O z(BBwxb8YkpN9tNA?nv0i6bej`8qe>ZW)M8%QyY=4#B*!@g-6LxY?L3yJsZRbNY#XD zW%v8E*{FA$bM<*!QiGWKlX`Z-Lp}^$;;%j8%BMyYp|v>+UB^)eF6_?M+lbEh8)whe zadcV~J-)}6(N3P54dx>7m_Dj(yUAI<*j4$A=JJ1x8K?)bfwq|az+WFuS6sRQ7K z#pk|5RwPFjUd~E_=05qEB^WT>T* zVsBmGXJ1HqmgX%21WaTFWp%F)j!O8MF{2+ANTDE_F}Bh5WQL0)vrTm#+diL^3i4!A z0o5X=ZqwXYniy7SV|t>Gr!ud~-tCUt;=dVj>vV$$8~z@6iA*1p6BVeOkmVo6XDc4m zAb8EH3=L4$D)7aB}Zl^|2|K|F2ld`E96fEN%hn8>{tpC z#om5%BoqI&BO{>N=vJnt0g@?~`12iT6~UVr4o?qZE8bE?=p#*7eJ$0zDvL9mraJ)K z6lzwSqB|%SsyY|tHSeU|-?LVXon_UrLt$E{h$AmM;e(m2+-h0CQD)W zhL*THt&?9r8Rw^}R03e^3sL2*|&s6mq>KJ8@Ax zn342a9%XcqHwu7qvvPoO5ymgW#S20f+*!OXLDF1oo3U$g^wC)WL%wRm1* zEQ2Rr2Te#EIRUHqiXyM=xkN1Yt{g6UrFvFVp$!qLMZ%jed{zqJMx=MgZ8G}{FpU`z z3&=v@_HS2W%?ro1e{#jlu00;*ah>#^_$)09?(-WJMZ#mJd|j9xJ|z!BD7u4DcK>oE zs0wAD*G)6Y)`MV0?mmg$mGrynts|_FYG8-NJriOMhj&3mebh8ATs5cVC^cbUm_h)>Na|H(7 zZ}m%17A-zR2PfggZ^RrzKHl8ewJ00OB#55=dL(9Z0XOwbtj7z1hQjuj;hV~xE&jp% zcP$pY2_BcLuAUx18;6lRWs}YU%+>L!lz$=2wpCD==o(6Jj_h_zDeikh|C6J^RS|{Z z{TH1t_TUz$t9iHLlCnWQUj`f__gWn#;5j#P%T|z_oipYXl##_GK&J76pHM(H!y%#s zfQpOgNdoDyuoxpzjGOzahs&x(TFrfbn9;b$RXcV%d-N$f=F^2?U(OpCP8@(6m~EOp z#G+JW@@W^`m?&2y?4%8`8$~oz_?S4dCV%oa&3;|llXEUmpU!(VJk&m6jL5giT=9+$ zLF>`PwwJbo`ydN43C>H}{>0}u8cKG@iw*l1JP|hABz_;W){AizuheQ)X^HAKBW@|` zv8H5*nW1FT;+Wd*Q^XMVSx?D%aW1QXdpj)7J8AmuD06W*JZT_HCL$g8x0D_|mgk${qTXtv}pxVk&YRkPc+|it9etwbl zQ~)s~3giYZIWd#3+$lkc;mYGziBdg~C(*NhWolUmm#0yJ<|Ys9&_-pnAI z7moL24zpT?WoF+peGB=N)gvG;c~HvCtl{>T&(9rJB@Aw$b=&(mIS}2h;hyNTFD}AiG=M;zU6U*{M_MVH zyX(h%v|Q!K3)tjsS?96oS)S*}_?47?z_Gf9FSX6v(~;Q)|254pjdLpPHP&x7%?8&A zU!160^4$Dij>T0UsMu0C))6GJ_Ps1Db|>SNZ=q!R8lIUx-)Z}gP(`bhtveC^hcbJx zi9@?$wjKez-seGId>1H}Ovnt}n_-FNfKNV|s!YSrkly)_9H0OgL=t!#DVYS`-V?6Z;mnFY%~Q=n(pd)w5XJ^_#N zbY0Ng-sZfezeRls^(|cEv7V>LY~#JRyRhU7(~HX2)>EB|vL`O7ldn@ArIM2V`kv(6 z_&oP>z)tdHkw9&m6iWpB-<0x05JoXB4RNi)qJ(qp0gjB2r#|q@YpwQDQBq^8{r2 z)x_Y<>}o5A*14s!OJFtwB#8tI@N_4kEzno5QyT3=d0lmFIb}GJ(?FAR4qCg z%OHpM#IJ{3hCE+oUuQe2+xY!mi4NrL3C%&s%{3eGk30RJ=BRGov;L^&L}r0)Fa%;_ zS+NWV=SL^qPS&^f!^fmn} zT*z_Q0e@py*F30z<=)=0+dtq8b2;Sj5ioeBE$mIej#H+y^*yC&X5vBPnp4cW(#w_4 zW5!KJvr08a7R7Y|yk(GWnxOX8nV%Uamb35M>~4(%Lb6{DU}F|iGLyve!Uo2B=Z*Kf z`{ki=G7OJ#Bbn2ynv3!I>oudlz^+t+VpcJeMJMyPDw!VU-1vG z<&b^HO)vc@G$b8RJg6W9Sfh-;>|qEL;ufSicO$CpDc_kq>B#WTqI?{C~6HmEW6iMqm&TB zy26r|gK!QRk+dmXiNTb#J&e*sIhMwI(XmQdx{=ALEd|+3f%!nxD8PpLt|Rz*qj4}! zat;vHW;>#F>Ht6yE)i2<6#H5wZ5@~M^0GJf?oLoHF4k?Fc%Fvb88Oq_FE1IDlE-sP zuxz;xJ7*%Bxw2&*0WS3wau|S9cV=FMcu2IA=Chb|sJtZ2WN~f^Ylvh#B6%K6 z6WoD@mYg&H`lw9W6e5!#atN6b`^3O~^^`8nnwj8_cDM9Wb{f={`lgu?t`HF}r1Gv9 zWq&u)G;t^H-5NCkloCNvi@YkJbybXmg}nJxK7p->VZseR5i>t+a({}G@^w&Ihq=}% zn;i^kK;Iv2n*6DbGKGH2uEpOk@V5)C&eDAL%HE#6>k6y z?y#;Plezw;?md>6u84PS41=Jn!3WNKcW&ZBgbzV2RvIh!Byu_G14f~emgzPpS ze_DpGwi4Vk;s_As*FAx&xT72irZowvQHKkdsw%E^NbYLG6Lr(upGTge z6}pzE{%ww5RzS6mBzff@SjewCk%D}ntJJ&v`A|Fc#o6kwj+YHP@+rrOjg?bLhYA^O zaApU?vMncaB&#%gG7tyKk3Vdrj;a0b1gLb2rB!Cg^`6y{Pby8G2b?0xN6zZDY{+Pf zHtBICHY(HWf>cQU)UV-T-C(=D2m3B?OLKdDX?$!U?8x&~Cr%|VMLqH@{H0Mxy)KYZ z$TqJ@NaCnRZZE`|KBU%Um)Y7_Fq*AnHc-DB@ElAvsWr)!R@AScR$1t7aQvEYS@$tu z7RQ>~SEp(YzWMstweT_J@E$pdbexuI6M8Rht>~lf`+RLnj0@Sa?N45QM*9VCGH@S_ z*-=;bsJq_#vq<^#iRzpXeAWyUfm)$+$l1RG+IzMjD6)Nf0P1jdarg$%VpKNgrPY3L zuyKBIas*>|A$Xvq^ip|K_#WykkFq~Lbz=KQry@9VhvQ3%krM3j$vR6zC~Ut!F~mZb z2uKUw4D`Y}M$@R5*1KfTUvv<^n2f#^bUx0(Y=^vs#rXwA9a+<3Tw+YG#bzK);rz(53M0h@z+&680?r||k|xpFs_FSI z13E?%&OhfGuokXaa7^wV{Iv6K{FUNfxbMJV=1&#rt30TeZ*hfQS_-R?kK5*UaEQqCEr`y3`8LiBc672uviSAArOpd`4jmi} zEIJ)F*08lCeNTIH;9AE1DcaXp6Aw0;DL;vThmH(anyMcQdd!O9mJUf$->ktKOD2dc zPEp=S<>7bF#2Bl~_sd4bpSquunf9#E-(Z2#EMQkzw8IUt93YAff{aaJ@zcW;py3hn zon*87S|R$4a;-DN|KZln2&=F`zIt^8cc7%J;NG8_3O^8Q8Civr6vEjIo$PB+d}RUB z=V{ujvH4DehHX>3+x-I>?!$g2%Bn{?dRQ)>9GnMjZ>S{P@IduiM^v&r2L2^M=0L3r zdSQ)rpL-EiDUuv&zFK~ znXv?9xJeAv-;N}Go$EIbc^ZY-v-TVC$ic6>4ix1wY6F#c6jz^|D7U@8;P*cgke3!G z0n5P6{N<>>%jr60!$6D|jTX6Wtk}7{EO}D3PLojQGme(W4U(z9+G))8pW8~Vp4R-G zT|XvPDpPO*((ENJy}TS#S%a}TLR>#=%=hxul{<;I`&r>VB&UekJxbF12Z6L!liV$dqZJcENK?UUKp~2M;c6x+; z{X@;n`@{^&r71RAZLt*x#|gH5@3gH@_7DGQ37pS&BklTG+yPP90c~qovrYJolf;rE zj+qp@?ZV<%)1+UWyjf>cOnMQ;bi@IJdp^d5&G-l_{Dal2sPOcCzm%n#;E$!5DO}-c zZ+Wt3uRPFtc?VDOK_}lKSNN;HJ6ua!8LmG8Q{R~q(#oH`um5}L|JId&Dae6j2W${l&$u zA@whaU>6prLJj@7K=7IK=XtD+h?KYU<9VZwA7`l!VbGQ6EyF*nesS!Q>YlQJGWYCK zll1+GI?Jl^Zj)J-W~`E=S9%{ki>gFAXxx?quI5myS`RB z1n8E#PMyS%xMk#~4JJNPTa9o#N|n6B%vD1k6dzs_-0|{V@$LEBP-ab#Q-p+56u`9~ zmq0__6ME%IPVrvtyr-oWIq43^UW{a*OaN@-hpmK$W2ac1qKLBzsjJ;IGf&q!g>og_ zY7vMBF$Z3WLsr9WKFMLfE_va{fuLnrmtdDnPFV8(G@7S0|9x6KJZXOaoraZbh5N0E zrGzNNm)7)ilb6RIIXRTpF-_ByrRdH|3cBW=?+`H}m_X83p_rw4`EH@)?r4*bIit#W zZfHw12Wr*Z+dr}%Sjsw+ME?}o^(#M;aVb3?kunUwz9|1=s_lONgYWbjrmE6-?fHs$ z(;ue>bl=^rfp`)SE(2xR-f0-nIrkEey+GGl58qLggTA7c*jk@Fn}%*NHwOAS9I|&{ zBt8|UTKHCp&O1EGz{~i z)vzd8U5)#-OtyLi=NXG!vG6^GwzSe7)5xySLQDkF^V-Bw~fY!!vhY# zg~B%aRd=t^&K(qyd}8m37hCgHg0e5v1eI?#TTg|*0`m6#l=qQbUZ0P&sFHn1fC2PN z{@yR^oIZ_$w1{F1I|?vtHi{Ht9c8zY5fa|^hqFKOyfDhDb6DBw@trvJ2-Rp*zg^>d^6>f8N}`>;0yRbt=-W1$6i)~j(Npea8<5?V&N5y)u0 z@XWEIi02>t_xvX1^8=dkb9Q@B3#=eB_1^+f4y)NqW8i5>rsT#bb~d7sj$$8eE!oaP zfBx~}ELW&b2p!F>)o9nJm`!?VrTiGQjb_PR{o9xStkK6`Ec_=+bzbOL#>-IDR9yOcIuo`9Mpj3aZU_Bglz38E0M0u(w;Yjjt{q+ef#TN2!!6 z_iF3BeAg-He5cv&kc04&u9sF0ckHv_{naQp^pKyLQwE&49x>GQCq)f}@R~01pe^=4 z7a;SOC9pr9T*FDW2VCu-?2Xyodi*g@hL6X|@g%bktXy8R&9zLq4gd`WxP(hSJe@(+ z1n;#Aih9JCzByS*oUlaOqYNpHTbZKY8D{bQ?Q%6PDqF1}8zg|KmTA~W|0(aC1K&e| z3rvd$ssH-8q^qJE#Nf$cTrFy-3K4AxC<5+a9yFAAAUJ);w>Pvg(x{AUIH)SB#Qz|^ z7`KtnytDQn7yi&rhvD!$89>6A?;regqFTL!^T>;~dcXHap2OvKn{rED@!J3VL&;*{ z`oO;0Fk0d7iem3HllJ;V(1vm>A5S^vgGdhVHmhTk3Kiit*s1)+|IpLMm4OYrQpXID zw62TJ?){Y`AnE@zV7EFmBxynJB6TG+I1C$vX%LcW@K@ZjhBDtA&@_G(dA>zGQes50 z6Ku6SwKJdro2d)h)hh9m#5Lg9&rQceKVyvL6+7F{3_fXNTQu=pV)G#f3)xIsL=VWx zuYr>VL&lCqltCq4^C32wlDU;dz)&CVRb!II{yHRg@n|GQw%!m`WA?SrNjiyzO@)Dc zkf+9N3mXQEqgq>BNdub4n2cA{n+jz9zYgCF5&@dy{X6V5izZ!k{`-*%?~{acT7??! zH-3B=l7QsnOoVW6M&EMRTmb3R@S#VTp5$pPjd#>%I8m&%IhBUq_626o`I_PB0nQ+h zI~a0OM?~a^iQC0*w2X|{od(qr4yMA^$;KS%mS>hkPflM6Z6(xuC&fI8yKfL!lg&?j z1>5J?S!f;NTc~N;T0YBB-DGg@w@*!7+10#)=cgPndYyY>HqFGW(>e+WrJC}hT=W&f zIYVU|IZHFj+`u*x*Z=4C+JxWPny(t9ck^TMY9-<7lfdhfe-v>I$6)uO7JNZy9g@)Q z`5YU#7Xc>oJfnHN;mGAWd%D06PEix6uwAY6?x0v3%`C>Aw$|5k`3l*b07=}eKQG^1U|}FXy$o;}kUxKJxc|NM zf89#B+f`KhcQIb2H(;e=gq*_BZ+uysO*Fao9W`G7va>;Oys2+Z+^64lhHiknUQv$0 zh7pl{pEy5GUj&DgmSjp>vUUP@cYF=Q;f&S#T;042Anj5zoB54WZN4|>DtIUJDzAIR z?rYy`y5t{R{WB%|5Xp*&6n$?|3P6GTP*e`e%);W_S<90&9Exj2HVWcmnSeY4MR>A-j=nt=!qv(_nX$CIIh6|my+vs0$O zxm75u$9`{~{7JHa`w&&PzCp*}B2na;q;>Fj@>5tWjKJ6F?JwY7LNden+Efi+*SZq$ zJh?JC@~Q=tM9lSG@l9>;z+2zv{%MS3*Ct-RI16>i&mK#VTfUd@Cy@8}lIFe+x0rx_ZPnK!| z(@{Lt7vnf>%~Lt*)fex$*#@b4bnIfWpe(q(ChaPE1+*F^cwE}Q#u*%wLeD&$v>u(a z6os14znJ<45Z=v=M}7O!98cy(iPrZQmNKi1)0O zGZ8-`4A&Un*)=#pyQAY;yj<^1Nlbqv?vl*m9RR$LZM~h}mH<@R%z8rDddr|LNKoHr6HQjCOPTkuov{DauVqd)ct^g`p~V zCZ&aKUK=3#d=mdEk)ZF@s_4-E!f4tWqVFE%@T#ftob;sTI(r z$r zmfXmWq>?80lx-0el~_vJWV&tcebz2;^S5|+9L7iVv6}%ejZ{guh9VAo;zC7Zp)&o3 z1K|FjdzLsR7Oz8GA{{Qx>TXN^bHMbZ?Zs52AKXO?$w?aD7-|Os_-A_(#ey#{_ zik3tV$#*+M(Xy{GNUias&TB7rvi8%*?kI5a@+qccR)rMWs)7t~8?M4efieKZVKj`_XYyr=2OMjWFM4Cw| z3Gvv!?P^6Osz0Y+t^za+OvDS8v}3-C=^P-MK2h;0J~h>~?qbi}kGksQ)!^0Sp(W8* zLEq8vE4CRSpf3R@NG!s?)yXTsRXe?F zoSG(GM`3fjnG)jF;+JX94qdsn^+`*<0XihP=@~a10Uc8sCJS$-#=sp23Hxm#y$W2l zUIncyX(*E9MY6OS^ue9up^i=&=Jx}8o9~S5kblI)(X~i~J`I`-`NYt05jobsd@5f4 z4Oucn(rrKM7ZG^?+-$nO5H!>#zpkKi6n!N!^XY%`LXK=81>6pq@ZIJvzGD$D%X~wbCttyCx44G2rIaA1Sqj^boF<_1J zs+Q_i{E?Ysu_g(8cBEk;AY0 zLv_iojr{^Fqen^)ao_#8f402DJbdP%-1l@0oHh$C7xZzF(NVS$^lz(P_o!pe4ER5r zW9KYs5Tr2e$S9VQ%J>_{d?No4pLMy`lj0eEa=^b##xca*cc)uoKi$u-;^}UYd2sU< z7O82$brF=blJ$`MSxVmgjasC%#l_70L(*D!H!0d0O}6>pGhV*0|PSqL&Y$ z97<=UBO{+p%wAE1L-yJBjRgHY%1;%pS>@H(6!X_mzZP!pr0p^)SM*kVw-~fL^bQf; zwHME{No680x>>7;f+(nn!TbLC{`W&_GqkAlEuOfHEr+%ObYPTUEc4;IB^FzfH zZ2&9U70E)`)UD)}%oHu2T@A|@yH(x^FlPB?^CNs244^;+(A!-}VNH0nx* z!)u@TR4Bcq;~X5qo@N(JBswqXAnEAge#3&|3({P4$UsQtM#Q?JRxkERnrTei4B#Qs z{l1c*RiKmriW@s|{i30J3SP0gWOiBFbFKESsD%LWUyNGo$mz^A&tzAK;U+;1Z6_*V zfK?jXH3-Q(T;zcZzx4OWp}BD$=;zB+^O$hN&|JA5|We zqKTv>+TKfZLw8+ZaujZ_&olaQD~%U7UNT+uSVZJIet~yf8jZwJjxlFGomAsC%`h#V zTnQz5X>~JayGbvJKe~_hGgc8U%pzEqMq5_7SCzzd9%Rj0rf3c(N^7wx!Z*$fX5ynU zXWS#`Pb8A^(W+XaH_uG8rGq2Fb8cH;XC6wF@6XLbm(Gp3Er!hhH91YmyQ1eXYPj{Y zpIy(6YA7qF=gu|Oa#t=UC>2V1P9rUJ%g&_i=;2iRR!6vJ!+SF zs?eW9l}yU=-8-Wm5P}NWB|9spp1krSm0`Aglr@bkPE!SJB2ppE{ssNui3k2J>;W}91HxCwS+TRm3LZ0k??hzEq5EEoSqUHOz% zc~YDQ40^UM7wT#Bd1iaSu``~^udy@VDP^Iq<-ulwCXjZmrpOonNIMj%&h=mWc8)Y( zMCKd!2d88S3-i<;)(V`-ZFVyo?(qejL*fI(_nw5w?wII0Yzh!PUzWsc&D0d;vEJQ^ z(`Y%}wQn$xY*UGYxmrsj80+i&ktgarzvtUpG5EC>bJn)m``;{q@S1&PgiFjr@$4f) z?^lE|Pr5MuT>@uyv-pi|*k1EcR+2cXQOhhXE=6lF&_kKpnr|DnGf1_+k+G!UvoHUR z#@HYq6NoA9_bu<)Nh)BImPR!es$yo8mWF%x@vEmp++Acd@g0-4e-K3q_iS(FO4>rN zQmFrEC~=2rX@~YjSaW-LlLRmK8;wK}BhbTfqE&TmLYni(P}p=Tt%n<^Qoi5EbDotK z0eT8RC*3Je*$ODkg9431UAJwZ%fA0vax>+faL9B1E}UDRi1+mvCTeoX_QsjILcM`H;4*s)O?@lLt^Q+Z@uS>AdfYgg_jGiGN)dE zTFHAgc zjJgG`sveR|oJmSU3nihHyvMcN*(_R|a#U*EbJ>4w%q=mPGKDTnrTl@=@7ZYJ8b7yO1)yUfbxt_OWMs*zt{DuN& zDpF#W#+CxuVe#TaYPe_2M`U4==Om41jmL|*tH#}jf6kP80(0L>ON^9(rP#X zi8C_!0O>5BFxOaa*IrH{dBD1^8mtd~o#(U9fB9)o7O}mq%dbM2@}xwmo~E9D?) zWssf4T&=-j@%)#(umf?Z#l30?Hx|d9zi>k42b`8}^))FF^!G%Bf@c%eS8;+fr{SZ` z?Knv{-WW{z9R>V<4gbqQWX*yz%$Y;#_#iT|>mdLe{5mxVTRBIO$^h|H8L`3)z#6(M z4jmZrr7GC}>Al@apF*l5W}G^wKom1!v=WG^XFtLxy?lu-C;flz_VUe?C3~pw=twBs zUMIP7*Ar*ckS*jdl$(#b4ykXw#%T9?#B;8D-k8T7QN36Ja~>~stq|e^Jb%OEdhsFE z57%u%G|n)q72!TaW{tg8S@?p~Wc)F6vhs{(!7zdSAm%sf{S6+61|gS?Kwpwq%KDqX zwm!;&1$tlk-g;>5b5vtOTvAq^Co0-DTPmIS02-)bmweX!VN}<3C??R(P1_`i5yXmo5PQMclPtVoOZ{t2@~f4xaaeZvpq6J;j3 zoW1g4Qz~J<_**aAf41}7!);l@q;V;eCpq9x9a0%{X4lxCsesKb-mVVy=&j7bYlOv; zWOETs(QS|Ndc}K3&HwbhlUkk^=OLSg(#_!8Y!5pG{8%k>n*}AlM)2Pq3O11r`XD{3Z4oYI0N(_yY~Qr zeU#N#1U~gis^X*Y1g)2nNt}H-u!YQ3A7u0{2B>(zYo{JqEbLaa1o$RGto{sW9h6e_ z1`|hi@GQOATX|p?0)(LGym0@)z}NKGnZS;EXO^jwGOrxP$|xWm4yJbj_(`qw*h1!g z1sj=FSiLZIuPA`WSOHBCc;=hYy7F;zM(q0(B;S5(;PT9P$_ij!$2~8~PwMhK?$@;;lp;r$j#FYd zdW&Gp${Zaf!9-vrkHxJ*BYSCof}?ITf*b=LyA`sL7D-$5nibx@Q~o#ZP0;grk^>f; zEzBD#zC!j3w(V6m@Na$em{s_Co#PCO%L#jT)DT_6t;?L}ZKb1YlASyMdO%RLI7iqH z4h}CZiYwUEuKx1O{(b!0H8Patd#VZlF9uvf;(u-p4xI{wCQ#aCe-IQo(VG!p{MW*L z&U~8@wT!wyMQU~9>bUCc5^(I0G$11^_cBep9CPs>RGb{@`iERD?X|fxL(-_Wa*-qG zPMLG!hD_xdPZq>f^whjfaV}XRYM8^nU!ADSytmy*ePn)V73Wa<_e9SuHYtBU2_Vs+ zbjjYq3D23T#F1?rZb`QDRb&fhgRv%3vQ!4$uuN|OrqzAmwSC7X)hv2r$e2tWJDH& zG|KCP^UdB_sZ;sO$EEJ{^EcP^`Rsi(=VxYiNfiO3@r93Tki$&|7_nys%qU<)cDzIA zvxbgOwSaNysPHPQz$-6{6fmP2SA=KIF2!s{tOIR-_zc#3r=kv)Q5&^qKTjp!ByQn5 z+ck~OA@OT8AX<9Y1U2dce?S4S{f8g9Ux(P(n%>xSazd+SqL@VV3yu&b;4fJi%+DbH zpZ2~ps>$r@H;%m`qJl(Z1Qi_w%+QqTs1&7%C{+j=0ciHk2?_T+IPbjozH8mJ?x(x{ANa%~C&_c3{p_>L@3;5PT3X^kS;T|! zdVH)oGxTshYcM_DS=TdKS~hmy3xnO?x%@|8A9Pw}U+A<5XWft0+CwAlw53Y-+O4Tz_P1`o(R z(WiT)b74Y0hJNV`Z$(gn7tQS@%?55hS9$l(uhEL)lix!sr1uRQjbkTBGr}4M{a)o* z^tY|}-{$GIZO$rdqV*Uzi)PpBn1!YXmFg2K)5*kJTn4!a-o$OFUYjs#Yhs_P!c8=X zW(CZfK8Q8r|GJaJNo_P>LR4I;=R(z?*b&Wi53t5q;wcRu7y#RbVi4 zja=@h%DrYH!*kDfD_mml7J;EYKViubL&|UMYIc=BW99G3?WWS0VwzlPFpiK*NVpQm8ork}{_K<@2sb%#Sy4e{AM7{rFEq+wN5A7)q zaI1&4p~A|!1RX=C`~n)Ig}l8{uNe&uhitFN$Te~9e@7llJ+08Y16l20?0FgbKr24h z)yNnVl`>_GTFK74MOSt4_cVf59%<-V{=ARB4w^i}`k@yR&tQu+PpkEMJ2!RHv}$~u zJfS-Chcy~f)jj}gYL(Ul&4%YOwLyJ*0VE1zD{vn@0Trf6@jDcThfA{Avsdlx6nBD^ zFWl95VWr$$9kM{Jrnh(fw^>aHsmvXA`@T$jp(^igZW5Jc7l?Q1ovrBG3ou&PFn@`g zxj|G;dLZ7C;AMhT!J2z^g4Z8@&X#$nR${1}&T#+g`v;(|6o`i0sXMQVVj-9mW!Cl0 zP&VDeecD&LcZZjBzz1K}Carsl{9vsiDdPp*oab+>&I*j*qY!w~8tmaaCrML(X40yo z2;9k?;i0}305(1>IN>l>Y&CyURm5qFWGeXVIb%luuG4c%{`veh{tM*37J#Tev^rek zVlK)`Lhw61zHB%AatH#Er!=%E544O0Sy>3ser+@l0>Q$*H@m6?ht{->`B;UB zLr#yg1=WnJ*WQa4#qxpGlcDCUO0B4S9xi!sw^~ipWs)Sh@zlF$ECg}BzhXG1nH$?p zMAb$ElI&^jKo+I?d*SS7um(H%tY5)luy|fXvcW08Lyj>VoXr;=8;ynV*!Qs-Qhv47 zd^R5Qrm~Yk_;|Sv>fyVXA69D2w&SH;1ib5rHVrP6WS@Nw46bM%VILS zop9pWM)ts8woi&EXYHo@r6B%lBJ4Xa#%YJXt|r8M(JkGw-LzWPp}kl-RkgNZe^u28 z!{O&3ADBG<}J$_0jd!CSx= zUKCBT4eLiZe1RWB_Gg^w1Y8Zj)1D${OpTdp=>recO5E7wuo+|>vmk|IH}AAFPKb7Q zV4#8xKCB#3o*v{glxp=_GR3C?=a3GATGdTr=` z${$2?Y4wV23Gmi5pl~-ETdIrL-%@*SAh;9U3F!K+M>bd^jxToWth~eo>2x%Ky62f290lnMC`3#BKe7tlNGys5Wx{e~DT& zAj=m!z|3jA=K_M+U&L5>74_o+xh=un(_^aHA}cn*-@F~MB@n;QxwkSm#+Uw?Ow}j6 z_l-IScJc7e;gU&ex^Av?75#<7BAA+KdCe~nzbVI*Sb$I(ySzPC5PBC^+@byQhXkYC z!SXY|bm}vSoM()zS*A7QzhBx6*+&KF9vt!Je%B2P26)8A^()Sp6As=+IUw{ATh{^Gs&vfqe z^*Vc`2;ee#xp}oU|2DkLz<2sqL@hbxyOPBtZqe1ghs-{OxH8iNB?}XL zQr~F6&c3Q`_!MQ8Im{~A`H!tV?Jyo}lG9A1TD7~?HZ(X7WJiel-0&0t!nHojp=!ks zX1wiGs&rQc)Jy=?GG+)kXV~{2G_O|T+3aMU9;4c)Um-s1eL%Is+xu->;08ptIfEAz z-n>pr{s_;AOMa?9L%YGy&0l!ZnQp5HF+pFj3rqH9mX=w-S*5AxpCeoaFJ7c1Me5JY z95^KElrvCR!XCjKi(RKL-(%DZ(<6tgP+G=zQE6auE>MeaXh^2#@?B-o-)OU>gCb5U zMV^+7;mwV9ijam0nRa!h8k{h9&%aX){XZL_*CYB?9EgK7Qx6CpO-Mm!g|!>%3Q; zIbm84EWn;h|DwG>ERq+8b@c>K5P0!WbLCv34hWqJn0P5NQ2XNqATHR)c8%O>+eP?4 z5l-5m55{u=EIh;t%6pjydl5zh@offgV=TQvG00$*yANYLriU5xpa*Lv3goZZ64yO4 z^dZ9<)o6jaMOUBtGW%(ByCrX~z$ojo-H^HE!WR@-%5T>fzF^FCrAJ@_n$;_(vT`uWpBck2AxlvquX`ojma@WM zk>y~?>dI`==5|%F5#*1-=QQQDAAC|8_xe2ps04fiBQZHf!8}KI zMFFQO)HxQntc_UA?)OlfV@!nRwX)^#w)u!b3clSWpMMVMTPvGyTs&CUp~{xf4N{l` z^t}%|6sIRw%v6V40L_PEF3T3~-uH1z`9bR(84Q@HF2?l@@Djl^v^B0*|KSf3LpASH zDNpB=vqV*$9(3mkf+!6U&A|*&n7veXuLz=Y1%*#{>3U9+}0K4g;IXlme+=vc7T%YOh z0c2+al?A8jVtjI&M19WAbRLX2czbc`Wi^%)d-NyfLq+05xkMW>-)rC^i(BP)te@aK zk)~+=!7OLT4GODBBCg1b2-Kh)olfxxC|Q0ZPtLX|HJ&MT#`r&#!TsoH7&|;&!PlUT zRlFqZR7Wb0^{VOnS%$o@nB+wCv>Gf2w}mh4)p8f zRsMtZ3=H#y9Ujf3{<0Ao*c#nKOnMCz3p0)>?f+(tSn>_auICyp#Mm7L8fq zjAdInU(h#)HQtLX7;S)KbArVH2f3Ur zX;-r3XtGB!by4az7l>hCTP5AG%*nBD7|98;r|as!wJO`8z+=Y1In`)H?Zk*;Yf~%H zNSraW!#;nZzuUR*Mg_k^Dkl}^*2YR3RzOqCEP;WGB$g1OARV3B2PIs_ziKpCnEi5?} zvf7`$V51+)^@cp0B);>x(?n75*sqX66-v|$tI90%tktYU7LR}v?H;^L&o2Ij*$};d zDu2GZY3dl!jc3y*yV5b*w?a`{Bjp67Z~Ma~HpxXNn4}fz=Ic51lr|D&W$%RX3h&sq zOMxa8F5tGiZp~Tnl)KVV^%8)~RpaYc>c5>}D6lf^iqwv4?n#l-ypqBtjVk~4wqhGwG3UH8BG%POS0w4#EtZkPdjeXAl2l7pC?Z2BmxWl!1cAWdK*avAhqfyi7o1 zV&^hVdgLds3(fj(-F&EAud$6lNJSQ(zMFh8n-y9Cv0D}r0E+Hem;nc5nw4#5`3`Rz za*2)<@wnz0zPYaloaHu|$r6eM@6-Qvon6Pg9LN-S@ViY8^3gx>TJ_^ zVu#olZE9kOkH)BKx5e$U1mW?YnR?<2kk;`3WxT3td?d3BB==vK&ccc)eH}`)g*Zi&GKj^I6>70T4# zJxF~S=+XGW5_{Oluq&PTlkcEY-QcDKCC_V~IWFHz6oFaqrlh>Z_C*1k+6Ita`~@Z2 z9K}E_In{uWs-9ebFMfLAZk<+joDXZW)PQm|{SHvM^JNCQO7b&;r1szY*MvrIBcc7z zwIWWraC?^p;BG;37K4PEVLRPI3k+fby~-VEtM2{D`o~MS2R8(4F3xNr7y^=!!>9Bo zIN9z|%N_wO@LZy2nIpeiU6z144%9**VwBFfB!ASm2$1x8TznsXx;JE}Rwqgh`!l-J zoUN(s4ras?AI<9I7pS+&d@u}X3_((3=WW^nxlr1la6Vx2+TuH za(h{Ro8K$@FTu6!AmtJ3?d45c^l1RO*Sm2Lwc|Q@82y=;ocbFPEjFe`aRUEWxTiBlSHPuyQZ>?BU-$boTami5COR-t7}h>yP@Wm%gEfdegl0As>uR zLTr>Yg&;L~FthAYApYDt;PvPC2LZMU_!Piai7UXqE&2)G9yYymhg&LQ?_5--!9R#D z3D@5>XhbhhPc=9yxhtm_Ii$TEj?EP&C2+xj(23Q%T^iNZ`6G<#fzgF0wxNytMiK9Q z@7$Kj>bxK#7OjoUe#IGA(Lq2}zm{j6dGh_YJT?R7SwX5xGRmNDC~;5FZ0&B7S!YEcr@r)MKmFG>I_ zvB0u%q`VCkFI{UM?=0$>271Q0mfz7e{YxOp(zyA$BJ*SX&#kjA#GJ8g8PCC#>3@%D z4Jrgyu+w@N`2X6h)8gOlA~11}L>@k<9}i;$o;N?J%1{G(WGCaDpK741AI-c9@bCa! zBJa!9;`2me`6xS*SYMde!efvfj@>ROWG7yZ0IAAJ&8;bU{7Mycz3RhGkM%)}WSRfs zgZJW>rfl=l#&>cH!=+uClsfU__8(uXUHbEAt>)BH^`>?a+`_n9;Xf8dLr+Ey1Z~f0 zrsjp2ueAP(nfKwvX$d8zCSH-)I&XNjKqNOW)gX5LLG71p@6x(ccOagD_ODnBZ4%f=BD9+Y>eYPy?4GWHYMH9nEp8;~VxiN$Les2m z7rjD6&ys%aAzBswo>NE4vJXA}!=C7g#?szKa+8*GG4zy=demJZp3C^fLYzk+zBU1A zgsl%9qO71x08CrGrhF;fm$Dp@=o{LeI1H?IgeWA8p`%V=<6h$K2b}6?(iRk7KRQz= z4)l(cl&EIW-XC!*L;d2B^GMoeF!L+Y1aK)7X}WX2 zmp>yrT9lO>`~z`kq-?&t%&;zndpRe+V_uK~k38!*-DCgAZ!Sr~oUIXh>jDWkGB_UH zu>~H-0f9_vuw$|5keJ$T`?Z?Dzn{qDePb(l_)Lpy{GhAO@g6b z%i-*<6z=DXV4p-qSmkH(ZqcS+;qSu7-Jp(D7!WDyGQ=80ovQPKBlaMb@(%0Bh%#w) z(!DM83Y)gowzzlAq|MiE^lQ8QBeO0Q&%#iw1DTgJ+>SSi73qD!z8f-^L z`}Kp6@GaLDbiBQjrQ_aDco#gLX>3S{W;j;*O#h7J<%wGBV+_ z*tKU15;ql97u*LL#gdjWOr5*|-X4XRr!xfpZ2;C*PVl*dA(|$Y5YIV)VRW4?HHt7z zBvcE!o{HM4m&y^o!`#!OtdcTodA4O4mbS^JR*eQPL5@cnxKl1I~g zXPeRB6^opzA6E)Tul9?rdb`wrqX7!HiMbsnH1ppD(FG`|@<03=`Zt(Ads#O7nPOX> z?O9x5C3WQxIgo066Qq>JdhuRfCNi6L!Oq2~x&JUEN5&}^u?br=w!ug8``n7)5LmRw zs;k$2$nrUua(gQe^9#I^h0vu|4d-f5w3PF!NoSdMtEdnTkwNb0!LZmu0C#~R@g^iT z*O&fitSA;**>l!`_EO97aZ(W8x(fov_UKI~%U@ckZEyrRrTWhnR8cGhTrEjCOt*m6 zA`ee{@ViBye0CpeMnje9?PZVvXfp>GSMnE_A1ujs21?4m;JbM$tE=7Kc^%aI^jXr_ zRuKYG?=#{zH=0DuW+rx4R^C(v`uo|o?N`qN1P*rkR^C%R1i_6ILHP&fimd1Hdlf$IT%2!3p8_w2oiv1}GakqQ7**W# z3`8jvWc3(dv`?o7;eS9F5Lz0%YpF2fNhiBp5P-JgN0k;M{{d!|*pbSGmE|V*x7OnC z{tWnwA)O5|Rqe@1lhso^twIRq&9oN3UHzkg#sz+D$RDhpHtVYFQLQ|Y9ppC@y<6cE z1jVW;jMU9u28*zh&xI8ohKhM2yBom96+j6scYbS>jVL6L(^tDn4ad?v=%xtUAbeUT zOYJt+Ww35G2-1$BvkrZ`=dq`=-5O&MqE3%fvyr(q?hVDWm!StfG_`1yX50kEuh0ex zwDS#R-4<2<-2P(s}=)nDbOm$#k&NE}x_s=Q8GukCD$s zH7eC=idvbLC9<0&ZH?7`0Qh)2^l+KMd|}Fk5Tc&-2Ciu1AxQxhP#68Z_f;_)8iLPo zAAOK*xeey91c$4CCYU5NemSWyL>p(oV7&lW& zYiLZ!+82*V=Xb9fxDS0H`=6$uVL**&>b>oLy9Z1Sh<5f{Y@rpr$%Z%4k1DcSX_8S^ zCXm9B?exzVvFlQdvPG5sAFLnUbq3|NltXpKN)j_v_?$y+#?EAgFkx5V0`W13T=70d zs6`z1-gM*7f0_t{P6E!LR#1m>h$B4NH~FtsV$FCJUq z>oh@g=magsh--`is--zMnW*ZYM=bZ(><;$Ify&fZp4pIH%ZAPHg!weu8gZ3P`+J6Z zQ=*xW9aBb?{mCwUqz;cQqu-xpty7fP)g$;elm2uQVAzy7(yD-)=;ni6Tfe+U!7Z72 zin=APpZw0%ZGkB|oGg+d`{f}phuCs#1PALS2%f}9X3GZ-U zif_}aYyG`?_f9LGLz3Q>`F|7S}Wbb{Y2`0v_QK}Zq=M3;;?3Kzp;^vovt*mE+#%BzZCvl3^EP#(tV$>ddNhy6) zpUS7!PofLF($6g=t{AVw+%O>kF2lmIJZl@qE$BJ6XU$1syGY{bXcKN%-K!$rLdYeR z4}Tvc4D3{3mwGNn(h`pP>U!q!RnDh5EHq^cYxpe;8JW6d|5{yWb~K0C&x)0zAYpJ%rYX2Ze`K{B~TupZ-4P401HMtc}*u3t;~)J}dl zE!I0VVCF?h7#f2B>-it>Nn6fs#utNX148oF##3Y9P2@-1V= zGZ0@>&&^4&YmQy;{F5zqDA6Rx^9F@Z)F+6oL*4&%r-@tOBM@6&*cQOo)k1oV`ql9`h&Htq{WQvrN3dKI&?R z_xK&E1whT^_MYl3{~jNll{`5(JUUFZYG#+XOiUl!0pAgh~J-C$vy)E+yG# z6xUVOh>~Qm;4EoX&7oKfamf21%^(eAg3Od6cq1pE#>0xyVpe7xYGp;95{USV9O1J9 z^7?QDD15LeRWG1%+yd%IMXsuA)*w1>(^pGg@L44t>C8f*D^RA#UQEmNf;zU%4@bbf zSRi8g-eutP&6z7hi!x1Yx%yp43a&V@l`;+HrWe~oW$ZX*MXocY4Jv!55jWOWzr4!A zs4reB4VVJp>Q}?gu?Fo>-lbQSJ6uUz&d+7Z>>{q$+^}VwXQL`PnD4?LGf2VguA_wX zDLrb5&~u84oo`cty4pxecwoBe#L3@M)1n_1*Qj2KXS)V0<$nc;SiCvc;qVr6eO(%o z$eVPS9F;KV9b=W?-tD+V8$i`Wo4%MtjTtnD_Z{r{8S^B@TZq)tR7AJT)LO>ACzV3pgKDYOKLO)a|g(8sM;IH~@&z{{TN)u0HP* zV)Xd2uOV8>BpyQRqVM3}`ma|y@vc`uU0XmeYHU@7i}S zzab9GxGQbfMxJV|P*t`y+HxaGW%>SCNhg=xc{Sg){&Q$iPv~esJ-hqI*~xBgs_)J? z(7{2QoR)XAVAogUeavZGF_mZhm!>axLPP`C^ISy}lYgE}1=hL)N_7K4fC>n^)ou=UtZC#=rQvlaA6qp{{TR{I5 zWo(;=Fa;D0Z)~J9u zQP>_qFlQ&(0o+W`2STQ=&t*!sY|enuW39jXyC`EP4Zrt9#Hk%VkkqRqsvh#}a3@Z0 z!FT!xmmTr~+_CO8;aAb!YscIkH(OS!DD$qn3p-uW{yW}J_xBiPwz604W+{Nkq`YLp zbA-4*WgFw-MU)S1s{2}oB~Umj*8wR6weZkBQ)w)T--mU+;m~y?Y zO3+mb<v%57wERUQso&_LbNSij+PxrM_`=3RD_{4voWtJsC^|MYNfBHFn(XQ@Z zust!~rm>XAd9EKA+`GqK7q@ALG~OfqrdoGRiGc%`wSO-l?nmmm22u;pe-B;aHaP#?6i({a z?s8QP53Jv6Rse_?olVN8?uFwMS7Rs%fM5ym8hkyAv45m?6IgwF*!~D?3by}h)Mos- z({r*n?$$@jy?>rmJuHDm+UL8rmRX1@(#H8g-)DO(AM9zU_2!3$@?C&eZ_{QGQc5pf z4Fh%|C*-Sg=a`(w0jJw5KSm?f5M_-uVJUz$Ssf{s%#OoU$2o^ypX`XT`WlWf1y?o9 zNu!t4+;moUmBNAiFOqxr>p(H(Vp2Zu%kfuCVcmzXr43`Z34q(|k@l~$@tbm-?mYEB zc91-jC8DTS<4$Kr>&gusBTl6^Lg(H40igY&H^_IXNp)#0ewYg#7e(}ro5HwpQ25z3(_6jSNz-|Ltiz%dK@m>8hhca6nZVb+l=4aYgi7_dI6a*;QT5ejTJG_%`xTBWZhaiJJ62YI zr;qaLPNXxqY97t@QdnR;Mul958EQn=)}`4J+Nf|h2eeyTuYrjs=d!lJovxU={0O_y zr#8LoWI>l*zeJ>?UW8zxrqY@F%XH^J{Qj+;)f5nbWcijJ&ghDW4G$05sgvx2W*#}+ zyCWdx@z#+@)t<9+J(-|vmGmGd`lxKHJOGJLB0tN6IvDm7v(SWQ_CAlyp40JbdWEzW zKfa?#C{>o~$&((wOn7mO@{TO5viG3VV-O0)i%>^7g0|dGP(aH#1ZK|jK--Y@&63>; zxW#wVcroIchLf&Q!eMBxE< zb%>`Ml(BN+hp2Dkdyq(Z0)OP~vh<61vPKLx`5bR)Ay@qO;S#Ma3WzMRV*?>txP28k zebl~iUt+YA+~kF;NTLzHZaw!}oBVG%r(4HxjgFL>*|!ak6Xrg6H5c3vtrt+*sbGxh ze~0zF)J)+Qe>Ccm9KE(4G;RT2XBPQStdGhMub2p*El;%Mr(~|VjGFZ=(5UYY|J=O7 z&5W`WzZog2F*59MFVmJH;L&hD!krgZQzyfnGd>8y;2nrEP2WNHE!ye4sZWwc zDEU+{z^6m1;Lof5WpM$Xy{_aSK;wv@G9s%A)7WohWty$h)e(WV4N1%d$i}wMcSLrr z$Mxz7-Ad}fyug^C!3UO{)oCq0X}X*q;B|YfBV@<%Bo}AF!^Hwk#c6H|kE2D$K)Ekk zWxn7?>YF~Mrv`2)bVl)JfCnfZ4t`12i5W#i#U@OFU*y}VP&(TSnprz24%4Ew*Hres zWQu6#9*l|`= zvU<-%L3CosC#A`jkPGKW8B}S@;qoYc{ZwqQ(PL9r{AiJYTX9#^5I5IN#{SHb`0O>- zc9>>35Z!yceq3nI=Wjs=4TR4UN%(YKdVh(LnAjdazi6G{KJNe{C|%U z)?!7JPeF!LsEf#Wut(+WaTv@38aW5+JplbGz{f}shrwW_br7MNe-gw^u!m9w&8^bYKHi0YccolzRO3(M>2& literal 0 HcmV?d00001 From b952c1fcd30f6256e15e0b26328ea15db2906d5e Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Wed, 1 Oct 2025 13:00:33 -0300 Subject: [PATCH 03/17] feat(authenticator): Add configuration values for passwordless sign in (#269) --- .../AuthenticatorConfiguration.kt | 4 +- .../ui/authenticator/AuthenticatorState.kt | 11 +-- .../authenticator/AuthenticatorStepState.kt | 2 +- .../authenticator/AuthenticatorViewModel.kt | 8 ++ .../ui/authenticator/data/AuthFactor.kt | 2 +- .../authenticator/data/AuthenticationFlow.kt | 73 +++++++++++++++++++ .../ui/authenticator/data/PasskeyPrompt.kt | 46 ++++++++++++ 7 files changed, 138 insertions(+), 8 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/PasskeyPrompt.kt diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorConfiguration.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorConfiguration.kt index 6c6a72e0..2af20eca 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorConfiguration.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorConfiguration.kt @@ -15,6 +15,7 @@ package com.amplifyframework.ui.authenticator +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.SignUpFormBuilder import com.amplifyframework.ui.authenticator.options.TotpOptions @@ -22,5 +23,6 @@ import com.amplifyframework.ui.authenticator.options.TotpOptions internal data class AuthenticatorConfiguration( val initialStep: AuthenticatorInitialStep, val signUpForm: SignUpFormBuilder.() -> Unit, - val totpOptions: TotpOptions? + val totpOptions: TotpOptions?, + val authenticationFlow: AuthenticationFlow ) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt index 92528be7..c01445e1 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt @@ -23,6 +23,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.lifecycle.viewmodel.compose.viewModel +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.SignUpFormBuilder @@ -46,7 +47,8 @@ import kotlinx.coroutines.flow.onEach fun rememberAuthenticatorState( initialStep: AuthenticatorInitialStep = AuthenticatorStep.SignIn, signUpForm: SignUpFormBuilder.() -> Unit = {}, - totpOptions: TotpOptions? = null + totpOptions: TotpOptions? = null, + authenticationFlow: AuthenticationFlow = AuthenticationFlow.Password ): AuthenticatorState { val viewModel = viewModel() val scope = rememberCoroutineScope() @@ -54,7 +56,8 @@ fun rememberAuthenticatorState( val configuration = AuthenticatorConfiguration( initialStep = initialStep, signUpForm = signUpForm, - totpOptions = totpOptions + totpOptions = totpOptions, + authenticationFlow = authenticationFlow ) viewModel.start(configuration) @@ -102,9 +105,7 @@ interface AuthenticatorState { val messages: Flow } -internal class AuthenticatorStateImpl constructor( - private val viewModel: AuthenticatorViewModel -) : AuthenticatorState { +internal class AuthenticatorStateImpl constructor(private val viewModel: AuthenticatorViewModel) : AuthenticatorState { override var stepState by mutableStateOf(LoadingState) override val messages: Flow diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index 45508517..ea1fc57b 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -24,7 +24,7 @@ import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult import com.amplifyframework.auth.result.AuthWebAuthnCredential -import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.MutableFormState diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt index b16a7d05..cd52436a 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt @@ -121,6 +121,14 @@ internal class AuthenticatorViewModel(application: Application, private val auth // Is there a current Amplify call in progress that could result in a signed in event? private var expectingSignInEvent: Boolean = false + // The current activity is used for WebAuthn sign-in when using passwordless functionality + private var activityReference: WeakReference = WeakReference(null) + var activity: Activity? + get() = activityReference.get() + set(value) { + activityReference = WeakReference(value) + } + fun start(configuration: AuthenticatorConfiguration) { if (::configuration.isInitialized) { return diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt index f2dca046..1db13d4b 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthFactor.kt @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package com.amplifyframework.ui.authenticator.enums +package com.amplifyframework.ui.authenticator.data import com.amplifyframework.auth.AuthFactorType diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt new file mode 100644 index 00000000..a4b0a19e --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt @@ -0,0 +1,73 @@ +/* + * Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file 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. + */ + +package com.amplifyframework.ui.authenticator.data + +import com.amplifyframework.auth.cognito.options.AuthFlowType + +/** + * AuthenticationFlow represents the different styles of authentication supported by the Authenticator component. + */ +sealed interface AuthenticationFlow { + /** + * The standard password-based auth flow. The user will be prompted to enter a username and password on the SignIn + * screen. You can use this with either Password or PasswordSrp sign ins. + */ + data object Password : AuthenticationFlow + + /** + * A choice-based auth flow, where the user may log in via a password, a passkey, or a one-time-password (OTP) sent + * to their email or SMS. The user is first prompted to enter only their sign in attribute (username/email/phone) + * and then may be presented with options for how to log in. You must have ALLOW_USER_AUTH enabled as an + * authentication flow in your Cognito User Pool. + */ + data class UserChoice( + /** + * Specify an [AuthFactor] to use by default, if available to the user. + * + * For example, if you want any user with a registered passkey to sign in with that passkey without being + * prompted, then set this value to `AuthFactor.WebAuthn`. + * + * If this is null or the [AuthFactor] is not available to the user, they may go directly into a different + * [AuthFactor] (if they only have one available) or may be prompted to choose a factor (if they have multiple + * available). + * + * If this is set to [AuthFactor.Password] or [AuthFactor.PasswordSrp] then the user will be prompted for a + * password directly when signing in. Use these values only if you're certain that no users exist who don't + * have passwords. + */ + val preferredAuthFactor: AuthFactor? = null, + + /** + * Control when/if the user is prompted to create a passkey after logging in. + */ + val passkeyPrompts: PasskeyPrompts = PasskeyPrompts() + ) : AuthenticationFlow +} + +internal val AuthenticationFlow.signUpRequiresPassword: Boolean get() = when (this) { + is AuthenticationFlow.Password -> true + is AuthenticationFlow.UserChoice -> false +} + +internal val AuthenticationFlow.signInRequiresPassword: Boolean get() = when (this) { + is AuthenticationFlow.Password -> true + is AuthenticationFlow.UserChoice -> this.preferredAuthFactor is AuthFactor.Password +} + +internal fun AuthenticationFlow.toAuthFlowType() = when (this) { + is AuthenticationFlow.Password -> AuthFlowType.USER_SRP_AUTH + is AuthenticationFlow.UserChoice -> AuthFlowType.USER_AUTH +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/PasskeyPrompt.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/PasskeyPrompt.kt new file mode 100644 index 00000000..8cf753e7 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/PasskeyPrompt.kt @@ -0,0 +1,46 @@ +/* + * Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file 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. + */ + +package com.amplifyframework.ui.authenticator.data + +/** + * Class that contains configuration values for when/if to show prompts to create passkeys to the user. + */ +data class PasskeyPrompts( + /** + * Show a prompt after a user who does not have a passkey registered signs in to the application. + */ + val afterSignIn: PasskeyPrompt = PasskeyPrompt.Always, + /** + * Show a prompt to create a passkey after the automatic sign in following a new user signing up. + */ + val afterSignUp: PasskeyPrompt = PasskeyPrompt.Always +) + +/** + * Possible selections for controlling passkey prompts. + */ +sealed interface PasskeyPrompt { + /** + * Never prompt users to create a passkey after signing in. + */ + data object Never : PasskeyPrompt + + /** + * Always prompt users to create a passkey after signing in if they don't already have an existing registered + * passkey. + */ + data object Always : PasskeyPrompt +} From f25203463c5169bca70e221da52d8c7cbed3366b Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Mon, 6 Oct 2025 10:29:35 -0300 Subject: [PATCH 04/17] feat(authenticator): Support passwordless signUp (#274) --- .../authenticator/AuthenticatorViewModel.kt | 187 +++++++++--------- .../ui/authenticator/data/UserInfo.kt | 5 + .../ui/authenticator/enums/SignInSource.kt | 12 ++ .../ui/authenticator/forms/FormBuilder.kt | 40 ++-- .../states/SignInSelectAuthFactorStateImpl.kt | 6 +- .../authenticator/states/SignUpStateImpl.kt | 22 ++- .../authenticator/states/StepStateFactory.kt | 54 +++-- .../ui/SignInSelectAuthFactor.kt | 15 +- .../ui/authenticator/ui/TestTags.kt | 2 +- .../ui/authenticator/util/AuthProvider.kt | 8 +- .../AuthenticatorViewModelTest.kt | 6 +- .../ui/authenticator/MockAuthenticatorData.kt | 12 +- .../ui/authenticator/testUtil/MockStates.kt | 13 +- .../ui/SignInSelectAuthFactorTest.kt | 2 +- .../ui/authenticator/ui/SignUpTest.kt | 24 +++ .../ui/robots/SignInSelectAuthFactorRobot.kt | 2 +- .../SignUpTest_passwordless-with-email.png | Bin 0 -> 35052 bytes .../SignUpTest_passwordless-with-username.png | Bin 0 -> 39073 bytes 18 files changed, 222 insertions(+), 188 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt create mode 100644 authenticator/src/test/screenshots/SignUpTest_passwordless-with-email.png create mode 100644 authenticator/src/test/screenshots/SignUpTest_passwordless-with-username.png diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt index cd52436a..41aa72c2 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt @@ -15,11 +15,13 @@ package com.amplifyframework.ui.authenticator +import android.app.Activity import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.viewModelScope import com.amplifyframework.auth.AuthChannelEventName import com.amplifyframework.auth.AuthException +import com.amplifyframework.auth.AuthUser import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.MFAType @@ -50,8 +52,10 @@ import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration import com.amplifyframework.ui.authenticator.auth.toAttributeKey import com.amplifyframework.ui.authenticator.auth.toFieldKey import com.amplifyframework.ui.authenticator.auth.toVerifiedAttributeKey +import com.amplifyframework.ui.authenticator.data.UserInfo import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep +import com.amplifyframework.ui.authenticator.enums.SignInSource import com.amplifyframework.ui.authenticator.forms.FieldError import com.amplifyframework.ui.authenticator.forms.FieldError.ConfirmationCodeIncorrect import com.amplifyframework.ui.authenticator.forms.FieldError.FieldValueExists @@ -82,6 +86,7 @@ import com.amplifyframework.ui.authenticator.util.UnknownErrorMessage import com.amplifyframework.ui.authenticator.util.UnsupportedNextStepException import com.amplifyframework.ui.authenticator.util.isConnectivityIssue import com.amplifyframework.ui.authenticator.util.toFieldError +import java.lang.ref.WeakReference import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -152,6 +157,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth } stateFactory = StepStateFactory( + configuration, authConfiguration, buildForm(configuration.signUpForm), ::moveTo @@ -195,22 +201,23 @@ internal class AuthenticatorViewModel(application: Application, private val auth //region SignUp @VisibleForTesting - suspend fun signUp(username: String, password: String, attributes: List) { + suspend fun signUp(username: String, password: String?, attributes: List) { viewModelScope.launch { val options = AuthSignUpOptions.builder().userAttributes(attributes).build() + val info = UserInfo(username = username, password = password, signInSource = SignInSource.SignUp) when (val result = authProvider.signUp(username, password, options)) { is AmplifyResult.Error -> handleSignUpFailure(result.error) - is AmplifyResult.Success -> handleSignUpSuccess(username, password, result.data) + is AmplifyResult.Success -> handleSignUpSuccess(info, result.data) } }.join() } - private suspend fun confirmSignUp(username: String, password: String, code: String) { + private suspend fun confirmSignUp(info: UserInfo, code: String) { viewModelScope.launch { - when (val result = authProvider.confirmSignUp(username, code)) { + when (val result = authProvider.confirmSignUp(info.username, code)) { is AmplifyResult.Error -> handleSignUpConfirmFailure(result.error) - is AmplifyResult.Success -> handleSignUpSuccess(username, password, result.data) + is AmplifyResult.Success -> handleSignUpSuccess(info, result.data) } }.join() } @@ -229,18 +236,18 @@ internal class AuthenticatorViewModel(application: Application, private val auth private suspend fun handleSignUpConfirmFailure(error: AuthException) = handleAuthException(error) - private suspend fun handleSignUpSuccess(username: String, password: String, result: AuthSignUpResult) { + private suspend fun handleSignUpSuccess(info: UserInfo, result: AuthSignUpResult) { when (result.nextStep.signUpStep) { AuthSignUpStep.CONFIRM_SIGN_UP_STEP -> { val newState = stateFactory.newSignUpConfirmState( result.nextStep.codeDeliveryDetails, - onResendCode = { resendSignUpCode(username) }, - onSubmit = { confirmationCode -> confirmSignUp(username, password, confirmationCode) } + onResendCode = { resendSignUpCode(info.username) }, + onSubmit = { confirmationCode -> confirmSignUp(info, confirmationCode) } ) moveTo(newState) } - AuthSignUpStep.DONE -> handleSignedUp(username, password) - AuthSignUpStep.COMPLETE_AUTO_SIGN_IN -> handleAutoSignIn(username, password) + AuthSignUpStep.COMPLETE_AUTO_SIGN_IN -> handleAutoSignIn(info) + AuthSignUpStep.DONE -> handleSignedUp(info) else -> { // Generic error for any other next steps that may be added in the future val exception = AuthException( @@ -253,31 +260,25 @@ internal class AuthenticatorViewModel(application: Application, private val auth } } - private suspend fun handleAutoSignIn(username: String, password: String) { - startSignInJob { - when (val result = authProvider.autoSignIn()) { - is AmplifyResult.Error -> { - // If auto sign in fails then proceed with manually trying to sign in the user. If this also fails the - // user will end up back on the sign in screen. - logger.warn("Unable to complete auto-signIn") - handleSignedUp(username, password) - } - - is AmplifyResult.Success -> handleSignInSuccess(username, password, result.data) + private suspend fun handleAutoSignIn(info: UserInfo) = startSignInJob { + when (val result = authProvider.autoSignIn()) { + is AmplifyResult.Error -> { + // If auto sign in fails then proceed with manually trying to sign in the user. If this also fails the + // user will end up back on the sign in screen. + logger.warn("Unable to complete auto-signIn") + handleSignedUp(info) } + is AmplifyResult.Success -> handleSignInSuccess(info, result.data) } } - private suspend fun handleSignedUp(username: String, password: String) { - startSignInJob { - when (val result = authProvider.signIn(username, password)) { - is AmplifyResult.Error -> { - moveTo(AuthenticatorStep.SignIn) - handleSignInFailure(username, password, result.error) - } - - is AmplifyResult.Success -> handleSignInSuccess(username, password, result.data) + private suspend fun handleSignedUp(info: UserInfo) = startSignInJob { + when (val result = authProvider.signIn(info.username, info.password)) { + is AmplifyResult.Error -> { + moveTo(AuthenticatorStep.SignIn) + handleSignInFailure(info, result.error) } + is AmplifyResult.Success -> handleSignInSuccess(info, result.data) } } @@ -285,54 +286,60 @@ internal class AuthenticatorViewModel(application: Application, private val auth //region SignIn @VisibleForTesting - suspend fun signIn(username: String, password: String) { - startSignInJob { - when (val result = authProvider.signIn(username, password)) { - is AmplifyResult.Error -> handleSignInFailure(username, password, result.error) - is AmplifyResult.Success -> handleSignInSuccess(username, password, result.data) - } + suspend fun signIn(username: String, password: String?) { + val info = UserInfo( + username = username, + password = password, + signInSource = SignInSource.SignIn + ) + startSignIn(info) + } + + private suspend fun startSignIn(info: UserInfo) = startSignInJob { + when (val result = authProvider.signIn(info.username, info.password)) { + is AmplifyResult.Error -> handleSignInFailure(info, result.error) + is AmplifyResult.Success -> handleSignInSuccess(info, result.data) } } - private suspend fun confirmSignIn(username: String, password: String, challengeResponse: String) { - startSignInJob { - when (val result = authProvider.confirmSignIn(challengeResponse)) { - is AmplifyResult.Error -> handleSignInFailure(username, password, result.error) - is AmplifyResult.Success -> handleSignInSuccess(username, password, result.data) - } + private suspend fun confirmSignIn(info: UserInfo, challengeResponse: String) = startSignInJob { + when (val result = authProvider.confirmSignIn(challengeResponse)) { + is AmplifyResult.Error -> handleSignInFailure(info, result.error) + is AmplifyResult.Success -> handleSignInSuccess(info, result.data) } } - private suspend fun setNewSignInPassword(username: String, password: String) { - startSignInJob { - when (val result = authProvider.confirmSignIn(password)) { - // an error here is more similar to a sign up error - is AmplifyResult.Error -> handleSignUpFailure(result.error) - is AmplifyResult.Success -> handleSignInSuccess(username, password, result.data) + private suspend fun setNewSignInPassword(info: UserInfo, newPassword: String) = startSignInJob { + when (val result = authProvider.confirmSignIn(newPassword)) { + // an error here is more similar to a sign up error + is AmplifyResult.Error -> handleSignUpFailure(result.error) + is AmplifyResult.Success -> { + val newUserInfo = info.copy(password = newPassword) + handleSignInSuccess(newUserInfo, result.data) } } } - private suspend fun handleSignInFailure(username: String, password: String, error: AuthException) { + private suspend fun handleSignInFailure(info: UserInfo, error: AuthException) { // UserNotConfirmed and PasswordResetRequired are special cases where we need // to enter different flows when (error) { - is UserNotConfirmedException -> handleUnconfirmedSignIn(username, password) - is PasswordResetRequiredException -> handleResetRequiredSignIn(username) + is UserNotConfirmedException -> handleUnconfirmedSignIn(info) + is PasswordResetRequiredException -> handleResetRequiredSignIn(info.username) is NotAuthorizedException -> sendMessage(InvalidLoginMessage(error)) else -> handleAuthException(error) } } - private suspend fun handleUnconfirmedSignIn(username: String, password: String) { - when (val result = authProvider.resendSignUpCode(username)) { + private suspend fun handleUnconfirmedSignIn(info: UserInfo) { + when (val result = authProvider.resendSignUpCode(info.username)) { is AmplifyResult.Error -> handleAuthException(result.error) is AmplifyResult.Success -> { val details = result.data val newState = stateFactory.newSignUpConfirmState( details, - onResendCode = { resendSignUpCode(username) }, - onSubmit = { confirmationCode -> confirmSignUp(username, password, confirmationCode) } + onResendCode = { resendSignUpCode(info.username) }, + onSubmit = { confirmationCode -> confirmSignUp(info, confirmationCode) } ) moveTo(newState) } @@ -346,11 +353,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth } } - private suspend fun handleTotpSetupRequired( - username: String, - password: String, - totpSetupDetails: TOTPSetupDetails? - ) { + private suspend fun handleTotpSetupRequired(info: UserInfo, totpSetupDetails: TOTPSetupDetails?) { if (totpSetupDetails == null) { val exception = AuthException("Missing TOTPSetupDetails", "Please open a bug with Amplify") handleGeneralFailure(exception) @@ -358,20 +361,16 @@ internal class AuthenticatorViewModel(application: Application, private val auth } val issuer = configuration.totpOptions?.issuer ?: getAppName() - val setupUri = totpSetupDetails.getSetupURI(issuer, username).toString() + val setupUri = totpSetupDetails.getSetupURI(issuer, info.username).toString() val newState = stateFactory.newSignInContinueWithTotpSetupState( sharedSecret = totpSetupDetails.sharedSecret, setupUri = setupUri, - onSubmit = { confirmationCode -> confirmSignIn(username, password, confirmationCode) } + onSubmit = { confirmationCode -> confirmSignIn(info, confirmationCode) } ) moveTo(newState) } - private suspend fun handleMfaSetupSelectionRequired( - username: String, - password: String, - allowedMfaTypes: Set? - ) { + private suspend fun handleMfaSetupSelectionRequired(info: UserInfo, allowedMfaTypes: Set?) { if (allowedMfaTypes.isNullOrEmpty()) { handleGeneralFailure(AuthException("Missing allowedMfaTypes", "Please open a bug with Amplify")) return @@ -380,20 +379,20 @@ internal class AuthenticatorViewModel(application: Application, private val auth moveTo( stateFactory.newSignInContinueWithMfaSetupSelectionState( allowedMfaTypes = allowedMfaTypes, - onSubmit = { mfaType -> confirmSignIn(username, password, mfaType) } + onSubmit = { mfaType -> confirmSignIn(info, mfaType) } ) ) } - private suspend fun handleEmailMfaSetupRequired(username: String, password: String) { + private suspend fun handleEmailMfaSetupRequired(info: UserInfo) { moveTo( stateFactory.newSignInContinueWithEmailSetupState( - onSubmit = { mfaType -> confirmSignIn(username, password, mfaType) } + onSubmit = { mfaType -> confirmSignIn(info, mfaType) } ) ) } - private suspend fun handleMfaSelectionRequired(username: String, password: String, allowedMfaTypes: Set?) { + private suspend fun handleMfaSelectionRequired(info: UserInfo, allowedMfaTypes: Set?) { if (allowedMfaTypes.isNullOrEmpty()) { handleGeneralFailure(AuthException("Missing allowedMfaTypes", "Please open a bug with Amplify")) return @@ -402,48 +401,48 @@ internal class AuthenticatorViewModel(application: Application, private val auth moveTo( stateFactory.newSignInContinueWithMfaSelectionState( allowedMfaTypes = allowedMfaTypes, - onSubmit = { mfaType -> confirmSignIn(username, password, mfaType) } + onSubmit = { mfaType -> confirmSignIn(info, mfaType) } ) ) } - private suspend fun handleSignInSuccess(username: String, password: String, result: AuthSignInResult) { + private suspend fun handleSignInSuccess(info: UserInfo, result: AuthSignInResult) { when (val nextStep = result.nextStep.signInStep) { AuthSignInStep.DONE -> checkVerificationMechanisms() AuthSignInStep.CONFIRM_SIGN_IN_WITH_SMS_MFA_CODE, AuthSignInStep.CONFIRM_SIGN_IN_WITH_OTP -> moveTo( stateFactory.newSignInMfaState( - result.nextStep.codeDeliveryDetails - ) { confirmationCode -> confirmSignIn(username, password, confirmationCode) } + codeDeliveryDetails = result.nextStep.codeDeliveryDetails + ) { confirmationCode -> confirmSignIn(info, confirmationCode) } ) AuthSignInStep.CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE -> moveTo( stateFactory.newSignInConfirmCustomState( result.nextStep.codeDeliveryDetails, result.nextStep.additionalInfo ?: emptyMap() - ) { confirmationCode -> confirmSignIn(username, password, confirmationCode) } + ) { confirmationCode -> confirmSignIn(info, confirmationCode) } ) AuthSignInStep.CONFIRM_SIGN_IN_WITH_NEW_PASSWORD -> moveTo( stateFactory.newSignInConfirmNewPasswordState { newPassword -> - setNewSignInPassword(username, newPassword) + setNewSignInPassword(info, newPassword) } ) // This step isn't actually returned, it comes back as a PasswordResetRequiredException. // Handling here for future correctness - AuthSignInStep.RESET_PASSWORD -> handleResetRequiredSignIn(username) + AuthSignInStep.RESET_PASSWORD -> handleResetRequiredSignIn(info.username) // This step isn't actually returned, it comes back as a UserNotConfirmedException. // Handling here for future correctness - AuthSignInStep.CONFIRM_SIGN_UP -> handleUnconfirmedSignIn(username, password) + AuthSignInStep.CONFIRM_SIGN_UP -> handleUnconfirmedSignIn(info) AuthSignInStep.CONTINUE_SIGN_IN_WITH_MFA_SELECTION -> - handleMfaSelectionRequired(username, password, result.nextStep.allowedMFATypes) + handleMfaSelectionRequired(info, result.nextStep.allowedMFATypes) AuthSignInStep.CONTINUE_SIGN_IN_WITH_MFA_SETUP_SELECTION -> - handleMfaSetupSelectionRequired(username, password, result.nextStep.allowedMFATypes) + handleMfaSetupSelectionRequired(info, result.nextStep.allowedMFATypes) AuthSignInStep.CONTINUE_SIGN_IN_WITH_EMAIL_MFA_SETUP -> - handleEmailMfaSetupRequired(username, password) + handleEmailMfaSetupRequired(info) AuthSignInStep.CONTINUE_SIGN_IN_WITH_TOTP_SETUP -> - handleTotpSetupRequired(username, password, result.nextStep.totpSetupDetails) + handleTotpSetupRequired(info, result.nextStep.totpSetupDetails) AuthSignInStep.CONFIRM_SIGN_IN_WITH_TOTP_CODE -> moveTo( stateFactory.newSignInConfirmTotpCodeState { confirmationCode -> - confirmSignIn(username, password, confirmationCode) + confirmSignIn(info, confirmationCode) } ) else -> { @@ -507,7 +506,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth logger.debug("Confirming password reset") when (val result = authProvider.confirmResetPassword(username, password, code)) { is AmplifyResult.Error -> handleResetPasswordError(result.error) - is AmplifyResult.Success -> handlePasswordResetComplete(username, password) + is AmplifyResult.Success -> handlePasswordResetComplete() } }.join() } @@ -534,16 +533,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth private suspend fun handlePasswordResetComplete(username: String? = null, password: String? = null) { logger.debug("Password reset complete") sendMessage(PasswordResetMessage) - if (username != null && password != null) { - startSignInJob { - when (val result = authProvider.signIn(username, password)) { - is AmplifyResult.Error -> moveTo(stateFactory.newSignInState(this::signIn)) - is AmplifyResult.Success -> handleSignInSuccess(username, password, result.data) - } - } - } else { - moveTo(stateFactory.newSignInState(this::signIn)) - } + moveTo(stateFactory.newSignInState(this::signIn)) } private suspend fun handleResetPasswordError(error: AuthException) = handleAuthException(error) @@ -642,14 +632,13 @@ internal class AuthenticatorViewModel(application: Application, private val auth is AmplifyResult.Error -> { if (result.error is SessionExpiredException) { logger.error(result.error.toString()) - logger.error("Current signed in user session has expired, signing out.") signOut() } else { handleGeneralFailure(result.error) } } - is AmplifyResult.Success -> moveTo(stateFactory.newSignedInState(result.data, this::signOut)) + is AmplifyResult.Success -> signInComplete(result.data) } } @@ -659,6 +648,10 @@ internal class AuthenticatorViewModel(application: Application, private val auth expectingSignInEvent = false } + private fun signInComplete(user: AuthUser) { + moveTo(stateFactory.newSignedInState(user, this::signOut)) + } + // Amplify has told us the user signed in. private suspend fun handleSignedInEvent() { if (!expectingSignInEvent && !inPostSignInState()) { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt new file mode 100644 index 00000000..f9ed43c5 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/UserInfo.kt @@ -0,0 +1,5 @@ +package com.amplifyframework.ui.authenticator.data + +import com.amplifyframework.ui.authenticator.enums.SignInSource + +internal data class UserInfo(val username: String, val password: String?, val signInSource: SignInSource) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt new file mode 100644 index 00000000..f29b16cd --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt @@ -0,0 +1,12 @@ +package com.amplifyframework.ui.authenticator.enums + +internal enum class SignInSource { + // Standard sign in + SignIn, + + // Automatic sign in after completing sign up + SignUp, + + // Signed in outside of Authenticator + External +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt index f3896119..19594652 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt @@ -23,9 +23,7 @@ import com.amplifyframework.ui.authenticator.auth.toFieldKey internal data class FormData(val fields: List) -internal fun buildForm(func: FormBuilderImpl.() -> Unit): FormData { - return FormBuilderImpl().apply(func).build() -} +internal fun buildForm(func: FormBuilderImpl.() -> Unit): FormData = FormBuilderImpl().apply(func).build() /** * Builder API for supplying custom form metadata for the signup form. @@ -39,12 +37,12 @@ interface SignUpFormBuilder { /** * Adds the standard password field. */ - fun password() + fun password(required: Boolean = true) /** * Adds the standard password confirmation field. */ - fun confirmPassword() + fun confirmPassword(required: Boolean = true) /** * Adds the standard email field. @@ -187,18 +185,23 @@ internal class FormBuilderImpl : SignUpFormBuilder { ) } - override fun password() = password(validator = FieldValidators.None) + override fun password(required: Boolean) = password( + required = required, + validator = FieldValidators.None + ) - fun password(validator: FieldValidator) { + fun password(validator: FieldValidator, required: Boolean = true) { this += FieldConfig.Password( key = FieldKey.Password, + required = required, validator = validator ) } - override fun confirmPassword() { + override fun confirmPassword(required: Boolean) { this += FieldConfig.Password( key = FieldKey.ConfirmPassword, + required = required, validator = FieldValidators.confirmPassword() ) } @@ -317,13 +320,7 @@ internal class FormBuilderImpl : SignUpFormBuilder { ) } - override fun date( - key: FieldKey, - label: String, - hint: String?, - required: Boolean, - validator: FieldValidator - ) { + override fun date(key: FieldKey, label: String, hint: String?, required: Boolean, validator: FieldValidator) { this += FieldConfig.Date( key = key, label = label, @@ -333,13 +330,7 @@ internal class FormBuilderImpl : SignUpFormBuilder { ) } - override fun phone( - key: FieldKey, - label: String, - hint: String?, - required: Boolean, - validator: FieldValidator - ) { + override fun phone(key: FieldKey, label: String, hint: String?, required: Boolean, validator: FieldValidator) { this += FieldConfig.PhoneNumber( key = key, label = label, @@ -392,10 +383,7 @@ internal class FormBuilderImpl : SignUpFormBuilder { fields.putAll(map) } - fun markRequiredFields( - signInMethod: SignInMethod, - requiredKeys: List - ) { + fun markRequiredFields(signInMethod: SignInMethod, requiredKeys: List) { fields.replaceAll { fieldKey, config -> if (fieldKey is FieldKey.UserAttributeKey && requiredKeys.contains(fieldKey.attributeKey)) { config.required() diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt index d0601eb7..efc59283 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt @@ -5,10 +5,10 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState import com.amplifyframework.ui.authenticator.auth.SignInMethod -import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthFactor +import com.amplifyframework.ui.authenticator.data.containsPassword import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep -import com.amplifyframework.ui.authenticator.enums.containsPassword internal class SignInSelectAuthFactorStateImpl( override val username: String, @@ -46,4 +46,4 @@ internal fun SignInSelectAuthFactorState.getPasswordFactor(): AuthFactor = availableAuthFactors.first { it is AuthFactor.Password } internal val SignInSelectAuthFactorState.signInMethod: SignInMethod - get() = (this as SignInSelectAuthFactorStateImpl).signInMethod \ No newline at end of file + get() = (this as SignInSelectAuthFactorStateImpl).signInMethod diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt index dfc52cba..945301f1 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignUpStateImpl.kt @@ -31,18 +31,28 @@ import com.amplifyframework.ui.authenticator.forms.buildForm internal class SignUpStateImpl( private val signInMethod: SignInMethod, private val signUpAttributes: List, + requirePasswordField: Boolean, private val passwordCriteria: PasswordCriteria, private val signUpForm: FormData, - private val onSubmit: suspend (username: String, password: String, attributes: List) -> Unit, + private val onSubmit: suspend (username: String, password: String?, attributes: List) -> Unit, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit -) : BaseStateImpl(), SignUpState { +) : BaseStateImpl(), + SignUpState { init { val formData = buildForm { // First add all fields required by configuration in the standard order fieldForSignInMethod(signInMethod) - password(validator = FieldValidators.password(passwordCriteria)) - confirmPassword() + if (requirePasswordField) { + password(validator = FieldValidators.password(passwordCriteria)) + + // We don't add confirm password if the customer supplied a form with password and without confirmPassword + if (signUpForm.containsField(FieldKey.ConfirmPassword) || + !signUpForm.containsField(FieldKey.Password) + ) { + confirmPassword() + } + } signUpAttributes.forEach { attribute -> when (attribute) { AuthUserAttributeKey.birthdate() -> birthdate(required = true) @@ -77,8 +87,10 @@ internal class SignUpStateImpl( override suspend fun signUp() = doSubmit { val username = form.getTrimmed(signInMethod.toFieldKey())!! - val password = form.getTrimmed(FieldKey.Password)!! + val password = form.getTrimmed(FieldKey.Password) val attributes = form.getUserAttributes() onSubmit(username, password, attributes) } + + private fun FormData.containsField(key: FieldKey) = fields.any { it.key == key } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt index d1df7f5e..4581b2d0 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt @@ -21,27 +21,25 @@ import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult +import com.amplifyframework.ui.authenticator.AuthenticatorConfiguration import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration +import com.amplifyframework.ui.authenticator.data.signUpRequiresPassword import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData internal class StepStateFactory( + private val configuration: AuthenticatorConfiguration, private val authConfiguration: AmplifyAuthConfiguration, private val signUpForm: FormData, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit ) { - fun newSignedInState( - user: AuthUser, - onSignOut: suspend () -> AuthSignOutResult - ) = SignedInStateImpl( + fun newSignedInState(user: AuthUser, onSignOut: suspend () -> AuthSignOutResult) = SignedInStateImpl( user = user, onSignOut = onSignOut ) - fun newSignInState( - onSubmit: suspend (username: String, password: String) -> Unit - ) = SignInStateImpl( + fun newSignInState(onSubmit: suspend (username: String, password: String) -> Unit) = SignInStateImpl( signInMethod = authConfiguration.signInMethod, onSubmit = onSubmit, onMoveTo = onMoveTo @@ -67,20 +65,18 @@ internal class StepStateFactory( onMoveTo = onMoveTo ) - fun newSignInConfirmNewPasswordState( - onSubmit: suspend (password: String) -> Unit - ) = SignInConfirmNewPasswordStateImpl( - passwordCriteria = authConfiguration.passwordCriteria, - onSubmit = onSubmit, - onMoveTo = onMoveTo - ) + fun newSignInConfirmNewPasswordState(onSubmit: suspend (password: String) -> Unit) = + SignInConfirmNewPasswordStateImpl( + passwordCriteria = authConfiguration.passwordCriteria, + onSubmit = onSubmit, + onMoveTo = onMoveTo + ) - fun newSignInConfirmTotpCodeState( - onSubmit: suspend (confirmationCode: String) -> Unit - ) = SignInConfirmTotpCodeStateImpl( - onSubmit = onSubmit, - onMoveTo = onMoveTo - ) + fun newSignInConfirmTotpCodeState(onSubmit: suspend (confirmationCode: String) -> Unit) = + SignInConfirmTotpCodeStateImpl( + onSubmit = onSubmit, + onMoveTo = onMoveTo + ) fun newSignInContinueWithMfaSetupSelectionState( allowedMfaTypes: Set, @@ -91,12 +87,11 @@ internal class StepStateFactory( onMoveTo = onMoveTo ) - fun newSignInContinueWithEmailSetupState( - onSubmit: suspend (email: String) -> Unit - ) = SignInContinueWithEmailSetupStateImpl( - onSubmit = onSubmit, - onMoveTo = onMoveTo - ) + fun newSignInContinueWithEmailSetupState(onSubmit: suspend (email: String) -> Unit) = + SignInContinueWithEmailSetupStateImpl( + onSubmit = onSubmit, + onMoveTo = onMoveTo + ) fun newSignInContinueWithMfaSelectionState( allowedMfaTypes: Set, @@ -119,10 +114,11 @@ internal class StepStateFactory( ) fun newSignUpState( - onSubmit: suspend (username: String, password: String, attributes: List) -> Unit + onSubmit: suspend (username: String, password: String?, attributes: List) -> Unit ) = SignUpStateImpl( signInMethod = authConfiguration.signInMethod, signUpAttributes = authConfiguration.signUpAttributes, + requirePasswordField = configuration.authenticationFlow.signUpRequiresPassword, passwordCriteria = authConfiguration.passwordCriteria, signUpForm = signUpForm, onSubmit = onSubmit, @@ -140,9 +136,7 @@ internal class StepStateFactory( onMoveTo = onMoveTo ) - fun newResetPasswordState( - onSubmit: suspend (username: String) -> Unit - ) = PasswordResetStateImpl( + fun newResetPasswordState(onSubmit: suspend (username: String) -> Unit) = PasswordResetStateImpl( signInMethod = authConfiguration.signInMethod, onSubmit = onSubmit, onMoveTo = onMoveTo diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt index e7baf5e8..c49f8041 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -16,9 +16,9 @@ import androidx.compose.ui.unit.dp import com.amplifyframework.ui.authenticator.R import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState import com.amplifyframework.ui.authenticator.auth.toFieldKey -import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthFactor +import com.amplifyframework.ui.authenticator.data.containsPassword import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep -import com.amplifyframework.ui.authenticator.enums.containsPassword import com.amplifyframework.ui.authenticator.forms.FieldKey import com.amplifyframework.ui.authenticator.states.getPasswordFactor import com.amplifyframework.ui.authenticator.states.signInMethod @@ -33,7 +33,7 @@ fun SignInSelectAuthFactor( headerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { AuthenticatorTitle(stringResource(R.string.amplify_ui_authenticator_title_select_factor)) }, - footerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { SignInSelectFactorFooter(it) } + footerContent: @Composable (SignInSelectAuthFactorState) -> Unit = { SignInSelectAuthFactorFooter(it) } ) { Column( modifier = modifier.fillMaxWidth().padding(horizontal = 16.dp) @@ -79,10 +79,11 @@ fun SignInSelectAuthFactor( } @Composable -fun SignInSelectFactorFooter(state: SignInSelectAuthFactorState, modifier: Modifier = Modifier) = BackToSignInFooter( - modifier = modifier, - onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } -) +fun SignInSelectAuthFactorFooter(state: SignInSelectAuthFactorState, modifier: Modifier = Modifier) = + BackToSignInFooter( + modifier = modifier, + onClickBackToSignIn = { state.moveTo(AuthenticatorStep.SignIn) } + ) @Composable private fun AuthFactorButton( diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt index 5df6ca97..e99d1775 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/TestTags.kt @@ -15,7 +15,7 @@ package com.amplifyframework.ui.authenticator.ui -import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthFactor import com.amplifyframework.ui.authenticator.forms.FieldKey @Suppress("ConstPropertyName") diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt index 6892de62..2cd90140 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt @@ -52,11 +52,11 @@ import kotlinx.coroutines.flow.callbackFlow * An abstraction of the Amplify.Auth API that allows us to use coroutines with no exceptions */ internal interface AuthProvider { - suspend fun signIn(username: String, password: String): AmplifyResult + suspend fun signIn(username: String, password: String?): AmplifyResult suspend fun confirmSignIn(challengeResponse: String): AmplifyResult - suspend fun signUp(username: String, password: String, options: AuthSignUpOptions): AmplifyResult + suspend fun signUp(username: String, password: String?, options: AuthSignUpOptions): AmplifyResult suspend fun confirmSignUp(username: String, code: String): AmplifyResult @@ -106,7 +106,7 @@ internal class RealAuthProvider : AuthProvider { cognitoPlugin?.addToUserAgent(AWSCognitoAuthMetadataType.Authenticator, BuildConfig.VERSION_NAME) } - override suspend fun signIn(username: String, password: String) = suspendCoroutine { continuation -> + override suspend fun signIn(username: String, password: String?) = suspendCoroutine { continuation -> Amplify.Auth.signIn( username, password, @@ -123,7 +123,7 @@ internal class RealAuthProvider : AuthProvider { ) } - override suspend fun signUp(username: String, password: String, options: AuthSignUpOptions) = + override suspend fun signUp(username: String, password: String?, options: AuthSignUpOptions) = suspendCoroutine { continuation -> Amplify.Auth.signUp( username, diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt index 5e464327..f8d406b0 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt @@ -571,7 +571,7 @@ class AuthenticatorViewModelTest { } @Test - fun `Password reset confirmation succeeds, sign in succeeds, state should be signed in`() = runTest { + fun `Password reset confirmation succeeds, state should be sign in`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) coEvery { authProvider.resetPassword(any()) } returns Success( AuthResetPasswordResult( @@ -581,13 +581,12 @@ class AuthenticatorViewModelTest { ) coEvery { authProvider.confirmResetPassword(any(), any(), any()) } returns Success(Unit) - coEvery { authProvider.signIn(any(), any()) } returns Success(mockSignInResult()) viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.PasswordReset)) viewModel.resetPassword("username") viewModel.confirmResetPassword("username", "password", "code") - viewModel.currentStep shouldBe AuthenticatorStep.SignedIn + viewModel.currentStep shouldBe AuthenticatorStep.SignIn } @Test @@ -652,6 +651,7 @@ class AuthenticatorViewModelTest { viewModel.resetPassword("username") } } + //endregion //region helpers private val AuthenticatorViewModel.currentStep: AuthenticatorStep diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/MockAuthenticatorData.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/MockAuthenticatorData.kt index 071b06be..c27cec1e 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/MockAuthenticatorData.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/MockAuthenticatorData.kt @@ -35,6 +35,7 @@ import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.auth.VerificationMechanism +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.SignUpFormBuilder @@ -45,11 +46,13 @@ import io.mockk.mockk internal fun mockAuthenticatorConfiguration( initialStep: AuthenticatorInitialStep = AuthenticatorStep.SignIn, signUpForm: SignUpFormBuilder.() -> Unit = {}, - totpOptions: TotpOptions? = null + totpOptions: TotpOptions? = null, + authenticationFlow: AuthenticationFlow = AuthenticationFlow.Password ) = AuthenticatorConfiguration( initialStep = initialStep, signUpForm = signUpForm, - totpOptions = totpOptions + totpOptions = totpOptions, + authenticationFlow = authenticationFlow ) internal fun mockAmplifyAuthConfiguration( @@ -116,10 +119,7 @@ internal fun mockNextSignInStep( availableFactors ) -internal fun mockSignUpResult( - nextStep: AuthNextSignUpStep, - userId: String = "userId" -) = AuthSignUpResult( +internal fun mockSignUpResult(nextStep: AuthNextSignUpStep, userId: String = "userId") = AuthSignUpResult( nextStep.signUpStep != AuthSignUpStep.CONFIRM_SIGN_UP_STEP, nextStep, userId diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index 2c2bda98..2422c3b2 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -21,7 +21,7 @@ import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod -import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthFactor import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData import com.amplifyframework.ui.authenticator.mockAuthCodeDeliveryDetails @@ -46,9 +46,14 @@ internal fun mockSignInState() = SignInStateImpl( onMoveTo = { } ) -internal fun mockSignUpState() = SignUpStateImpl( - signInMethod = SignInMethod.Username, - signUpAttributes = listOf(AuthUserAttributeKey.email()), +internal fun mockSignUpState( + signInMethod: SignInMethod = SignInMethod.Username, + signUpAttributes: List = listOf(AuthUserAttributeKey.email()), + requirePasswordField: Boolean = true +) = SignUpStateImpl( + signInMethod = signInMethod, + signUpAttributes = signUpAttributes, + requirePasswordField = requirePasswordField, passwordCriteria = PasswordCriteria(8, false, false, false, false), signUpForm = FormData(emptyList()), onSubmit = { _, _, _ -> }, diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt index d38a9df3..618b35a1 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactorTest.kt @@ -16,7 +16,7 @@ package com.amplifyframework.ui.authenticator.ui import com.amplifyframework.ui.authenticator.auth.SignInMethod -import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthFactor import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest import com.amplifyframework.ui.authenticator.testUtil.mockSignInSelectAuthFactorState import com.amplifyframework.ui.authenticator.ui.robots.signInSelectAuthFactor diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignUpTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignUpTest.kt index a1256705..e0dc01ad 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignUpTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/SignUpTest.kt @@ -17,6 +17,8 @@ package com.amplifyframework.ui.authenticator.ui import androidx.compose.ui.autofill.AutofillManager import androidx.compose.ui.autofill.ContentType +import com.amplifyframework.auth.AuthUserAttributeKey +import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.FieldError import com.amplifyframework.ui.authenticator.forms.FieldKey @@ -193,4 +195,26 @@ class SignUpTest : AuthenticatorUiTest() { } state.form.setFieldError(FieldKey.Email, FieldError.InvalidFormat) } + + @Test + @ScreenshotTest + fun `passwordless with email`() { + val state = mockSignUpState(signInMethod = SignInMethod.Email, requirePasswordField = false) + setContent { + SignUp(state = state) + } + } + + @Test + @ScreenshotTest + fun `passwordless with username`() { + val state = mockSignUpState( + signInMethod = SignInMethod.Username, + signUpAttributes = listOf(AuthUserAttributeKey.email()), + requirePasswordField = false + ) + setContent { + SignUp(state = state) + } + } } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt index 143851b4..23341a3e 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/robots/SignInSelectAuthFactorRobot.kt @@ -18,7 +18,7 @@ package com.amplifyframework.ui.authenticator.ui.robots import androidx.compose.ui.test.hasTestTag import androidx.compose.ui.test.hasText import androidx.compose.ui.test.junit4.ComposeTestRule -import com.amplifyframework.ui.authenticator.enums.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthFactor import com.amplifyframework.ui.authenticator.forms.FieldKey import com.amplifyframework.ui.authenticator.ui.TestTags import com.amplifyframework.ui.authenticator.ui.testTag diff --git a/authenticator/src/test/screenshots/SignUpTest_passwordless-with-email.png b/authenticator/src/test/screenshots/SignUpTest_passwordless-with-email.png new file mode 100644 index 0000000000000000000000000000000000000000..7b82be8e4c89304b21cc023dd2ebcba1b9450605 GIT binary patch literal 35052 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 literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignUpTest_passwordless-with-username.png b/authenticator/src/test/screenshots/SignUpTest_passwordless-with-username.png new file mode 100644 index 0000000000000000000000000000000000000000..56bb9b62389027d0ec996b1c0852ecf41b339e64 GIT binary patch literal 39073 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 literal 0 HcmV?d00001 From 7691b8f05c39e65aef96609dae504885d9f4892d Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Tue, 4 Nov 2025 15:50:07 -0400 Subject: [PATCH 05/17] feat(authenticator): Add ability to sign in with passwordless flow (#281) --- .../authenticator/AuthenticatorViewModel.kt | 95 +++++++++++++++++-- .../authenticator/data/AuthenticationFlow.kt | 4 +- .../ui/authenticator/forms/FieldValidator.kt | 24 ++--- .../ui/authenticator/forms/FormBuilder.kt | 2 +- .../states/SignInConfirmMfaStateImpl.kt | 3 +- .../authenticator/states/SignInStateImpl.kt | 9 +- .../authenticator/states/StepStateFactory.kt | 25 ++++- .../authenticator/ui/SignInConfirmPassword.kt | 2 +- .../ui/SignInSelectAuthFactor.kt | 3 +- .../authenticator/util/AmplifyExtensions.kt | 50 ++++++++++ .../ui/authenticator/util/AuthProvider.kt | 43 +++++---- .../util/AuthenticatorMessage.kt | 8 ++ authenticator/src/main/res/values/errors.xml | 1 + .../AuthenticatorViewModelTest.kt | 42 ++++---- .../ui/authenticator/testUtil/MockStates.kt | 12 ++- .../kotlin/com/amplify/ui/ConfigureAndroid.kt | 4 +- 16 files changed, 247 insertions(+), 80 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyExtensions.kt diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt index 41aa72c2..b040fba9 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt @@ -37,6 +37,8 @@ import com.amplifyframework.auth.cognito.exceptions.service.PasswordResetRequire import com.amplifyframework.auth.cognito.exceptions.service.UserNotConfirmedException import com.amplifyframework.auth.cognito.exceptions.service.UserNotFoundException import com.amplifyframework.auth.cognito.exceptions.service.UsernameExistsException +import com.amplifyframework.auth.cognito.options.AWSCognitoAuthConfirmSignInOptions +import com.amplifyframework.auth.cognito.options.AWSCognitoAuthSignInOptions import com.amplifyframework.auth.exceptions.NotAuthorizedException import com.amplifyframework.auth.exceptions.SessionExpiredException import com.amplifyframework.auth.exceptions.UnknownException @@ -52,7 +54,12 @@ import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration import com.amplifyframework.ui.authenticator.auth.toAttributeKey import com.amplifyframework.ui.authenticator.auth.toFieldKey import com.amplifyframework.ui.authenticator.auth.toVerifiedAttributeKey +import com.amplifyframework.ui.authenticator.data.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow import com.amplifyframework.ui.authenticator.data.UserInfo +import com.amplifyframework.ui.authenticator.data.challengeResponse +import com.amplifyframework.ui.authenticator.data.toAuthFactors +import com.amplifyframework.ui.authenticator.data.toAuthFlowType import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.enums.SignInSource @@ -69,6 +76,7 @@ import com.amplifyframework.ui.authenticator.states.BaseStateImpl import com.amplifyframework.ui.authenticator.states.StepStateFactory import com.amplifyframework.ui.authenticator.util.AmplifyResult import com.amplifyframework.ui.authenticator.util.AuthConfigurationResult +import com.amplifyframework.ui.authenticator.util.AuthFlowSessionExpiredMessage import com.amplifyframework.ui.authenticator.util.AuthProvider import com.amplifyframework.ui.authenticator.util.AuthenticatorMessage import com.amplifyframework.ui.authenticator.util.CannotSendCodeMessage @@ -84,7 +92,11 @@ import com.amplifyframework.ui.authenticator.util.RealAuthProvider import com.amplifyframework.ui.authenticator.util.UnableToResetPasswordMessage import com.amplifyframework.ui.authenticator.util.UnknownErrorMessage import com.amplifyframework.ui.authenticator.util.UnsupportedNextStepException +import com.amplifyframework.ui.authenticator.util.authFlow +import com.amplifyframework.ui.authenticator.util.callingActivity +import com.amplifyframework.ui.authenticator.util.isAuthFlowSessionExpiredError import com.amplifyframework.ui.authenticator.util.isConnectivityIssue +import com.amplifyframework.ui.authenticator.util.preferredFirstFactor import com.amplifyframework.ui.authenticator.util.toFieldError import java.lang.ref.WeakReference import kotlinx.coroutines.channels.BufferOverflow @@ -273,7 +285,8 @@ internal class AuthenticatorViewModel(application: Application, private val auth } private suspend fun handleSignedUp(info: UserInfo) = startSignInJob { - when (val result = authProvider.signIn(info.username, info.password)) { + val options = getSignInOptions() + when (val result = authProvider.signIn(info.username, info.password, options)) { is AmplifyResult.Error -> { moveTo(AuthenticatorStep.SignIn) handleSignInFailure(info, result.error) @@ -296,21 +309,35 @@ internal class AuthenticatorViewModel(application: Application, private val auth } private suspend fun startSignIn(info: UserInfo) = startSignInJob { - when (val result = authProvider.signIn(info.username, info.password)) { + val options = getSignInOptions() + when (val result = authProvider.signIn(info.username, info.password, options)) { is AmplifyResult.Error -> handleSignInFailure(info, result.error) is AmplifyResult.Success -> handleSignInSuccess(info, result.data) } } + private fun getSignInOptions(preferredFirstFactorOverride: AuthFactor? = null) = + AWSCognitoAuthSignInOptions.builder() + .authFlow(configuration.authenticationFlow.toAuthFlowType()) + .callingActivity(activity) + .preferredFirstFactor(configuration.authenticationFlow, preferredFirstFactorOverride) + .build() + private suspend fun confirmSignIn(info: UserInfo, challengeResponse: String) = startSignInJob { - when (val result = authProvider.confirmSignIn(challengeResponse)) { - is AmplifyResult.Error -> handleSignInFailure(info, result.error) + val options = AWSCognitoAuthConfirmSignInOptions.builder() + .callingActivity(activity) + .build() + when (val result = authProvider.confirmSignIn(challengeResponse, options)) { + is AmplifyResult.Error -> handleConfirmSignInFailure(info, result.error) is AmplifyResult.Success -> handleSignInSuccess(info, result.data) } } private suspend fun setNewSignInPassword(info: UserInfo, newPassword: String) = startSignInJob { - when (val result = authProvider.confirmSignIn(newPassword)) { + val options = AWSCognitoAuthConfirmSignInOptions.builder() + .callingActivity(activity) + .build() + when (val result = authProvider.confirmSignIn(newPassword, options)) { // an error here is more similar to a sign up error is AmplifyResult.Error -> handleSignUpFailure(result.error) is AmplifyResult.Success -> { @@ -331,6 +358,17 @@ internal class AuthenticatorViewModel(application: Application, private val auth } } + private suspend fun handleConfirmSignInFailure(info: UserInfo, error: AuthException) { + if (configuration.authenticationFlow is AuthenticationFlow.UserChoice && + error.isAuthFlowSessionExpiredError() + ) { + moveTo(AuthenticatorStep.SignIn) + sendMessage(AuthFlowSessionExpiredMessage(error)) + } else { + handleSignInFailure(info, error) + } + } + private suspend fun handleUnconfirmedSignIn(info: UserInfo) { when (val result = authProvider.resendSignUpCode(info.username)) { is AmplifyResult.Error -> handleAuthException(result.error) @@ -353,7 +391,33 @@ internal class AuthenticatorViewModel(application: Application, private val auth } } - private suspend fun handleTotpSetupRequired(info: UserInfo, totpSetupDetails: TOTPSetupDetails?) { + private suspend fun handleFactorSelectionRequired(info: UserInfo, availableFactors: Set?) { + if (availableFactors == null) { + val exception = AuthException("Missing available AuthFactorTypes", "Please open a bug with Amplify") + handleGeneralFailure(exception) + return + } + + // Auto-select a single auth factor + if (availableFactors.size == 1) { + confirmSignIn(info, availableFactors.first().challengeResponse) + return + } + + val newState = stateFactory.newSignInSelectFactorState( + username = info.username, + availableFactors = availableFactors, + onSelect = { authFactor -> + val passwordField = (currentState as? BaseStateImpl)?.form?.fields?.get(Password) + val password = passwordField?.state?.content + val newInfo = info.copy(password = password) + confirmSignIn(newInfo, authFactor.challengeResponse) + } + ) + moveTo(newState) + } + + private fun handleTotpSetupRequired(info: UserInfo, totpSetupDetails: TOTPSetupDetails?) { if (totpSetupDetails == null) { val exception = AuthException("Missing TOTPSetupDetails", "Please open a bug with Amplify") handleGeneralFailure(exception) @@ -445,6 +509,23 @@ internal class AuthenticatorViewModel(application: Application, private val auth confirmSignIn(info, confirmationCode) } ) + AuthSignInStep.CONTINUE_SIGN_IN_WITH_FIRST_FACTOR_SELECTION -> + handleFactorSelectionRequired( + info, + result.nextStep.availableFactors?.toAuthFactors() + ) + AuthSignInStep.CONFIRM_SIGN_IN_WITH_PASSWORD -> { + if (info.password != null) { + confirmSignIn(info, info.password) + } else { + moveTo( + stateFactory.newSignInConfirmPasswordState(username = info.username) { password -> + val newInfo = info.copy(password = password) + confirmSignIn(newInfo, password) + } + ) + } + } else -> { // Generic error for any other next steps that may be added in the future val exception = UnsupportedNextStepException(nextStep) @@ -530,7 +611,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth } } - private suspend fun handlePasswordResetComplete(username: String? = null, password: String? = null) { + private suspend fun handlePasswordResetComplete() { logger.debug("Password reset complete") sendMessage(PasswordResetMessage) moveTo(stateFactory.newSignInState(this::signIn)) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt index a4b0a19e..c1e92c75 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/data/AuthenticationFlow.kt @@ -68,6 +68,6 @@ internal val AuthenticationFlow.signInRequiresPassword: Boolean get() = when (th } internal fun AuthenticationFlow.toAuthFlowType() = when (this) { - is AuthenticationFlow.Password -> AuthFlowType.USER_SRP_AUTH - is AuthenticationFlow.UserChoice -> AuthFlowType.USER_AUTH + is AuthenticationFlow.Password -> null // Use whatever is defined in the user's config file + is AuthenticationFlow.UserChoice -> AuthFlowType.USER_AUTH // Requires USER_AUTH } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt index 88a818be..2e9cea96 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FieldValidator.kt @@ -51,7 +51,7 @@ internal operator fun FieldValidator.plus(other: FieldValidator): FieldValidator internal object FieldValidators { private val usernamePattern = """[\p{L}\p{M}\p{S}\p{N}\p{P}]+""".toPattern() - private val confirmationCodePattern = """\d{6}""".toPattern() + private val confirmationCodePattern = """\d{6}|\d{8}""".toPattern() private val specialRegex = """[\^\$\{}\*\.\[\]\{}\(\)\?\-"!@#%&/\\,><':;|_~`+=\s]+""".toRegex() private val numbersRegex = "\\d+".toRegex() private val upperRegex = "[A-Z]+".toRegex() @@ -63,25 +63,17 @@ internal object FieldValidators { */ val None: FieldValidator = { null } - internal fun required( - error: FieldError = FieldError.MissingRequired - ): FieldValidator = { + internal fun required(error: FieldError = FieldError.MissingRequired): FieldValidator = { if (content.isBlank()) error else null } - private fun matchingField( - other: FieldKey, - error: FieldError - ): FieldValidator = { + private fun matchingField(other: FieldKey, error: FieldError): FieldValidator = { if (content != formContent[other]) error else null } fun confirmPassword() = matchingField(Password, PasswordsDoNotMatch) - private fun pattern( - pattern: Pattern, - error: FieldError = InvalidFormat - ): FieldValidator = { + private fun pattern(pattern: Pattern, error: FieldError = InvalidFormat): FieldValidator = { if (content.isNotBlank() && !pattern.matcher(content).matches()) error else null } @@ -90,9 +82,7 @@ internal object FieldValidators { fun phoneNumber() = pattern(Patterns.PHONE) fun webUrl() = pattern(Patterns.WEB_URL) - fun date( - error: FieldError = InvalidFormat - ): FieldValidator = { + fun date(error: FieldError = InvalidFormat): FieldValidator = { if (content.isNotBlank()) { try { dateFormat.parse(content) @@ -107,9 +97,7 @@ internal object FieldValidators { internal fun confirmationCode() = pattern(confirmationCodePattern) - internal fun password( - criteria: PasswordCriteria - ): FieldValidator = { + internal fun password(criteria: PasswordCriteria): FieldValidator = { if (content.isNotBlank()) { val potentialErrors = mutableListOf() if (content.length < criteria.length) { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt index 19594652..71029f53 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/forms/FormBuilder.kt @@ -211,7 +211,7 @@ internal class FormBuilderImpl : SignUpFormBuilder { key = FieldKey.ConfirmationCode, validator = FieldValidators.confirmationCode(), keyboardType = KeyboardType.Number, - maxLength = 6 + maxLength = 8 ) } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmMfaStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmMfaStateImpl.kt index d1335584..749dd6b4 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmMfaStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInConfirmMfaStateImpl.kt @@ -25,7 +25,8 @@ internal class SignInConfirmMfaStateImpl( override val deliveryDetails: AuthCodeDeliveryDetails?, private val onSubmit: suspend (confirmationCode: String) -> Unit, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit -) : BaseStateImpl(), SignInConfirmMfaState { +) : BaseStateImpl(), + SignInConfirmMfaState { init { form.addFields { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInStateImpl.kt index 001a71e7..2ac25b49 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInStateImpl.kt @@ -24,14 +24,17 @@ import com.amplifyframework.ui.authenticator.forms.FieldKey internal class SignInStateImpl( private val signInMethod: SignInMethod, - private val onSubmit: suspend (username: String, password: String) -> Unit, + showPasswordField: Boolean, + private val onSubmit: suspend (username: String, password: String?) -> Unit, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit ) : BaseStateImpl(), SignInState { init { form.addFields { fieldForSignInMethod(signInMethod) - password() + if (showPasswordField) { + password() + } } } @@ -40,7 +43,7 @@ internal class SignInStateImpl( override suspend fun signIn() = doSubmit { val username = form.getTrimmed(signInMethod.toFieldKey())!! - val password = form.getTrimmed(FieldKey.Password)!! + val password = form.getTrimmed(FieldKey.Password) onSubmit(username, password) } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt index 4581b2d0..f5f81600 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt @@ -23,6 +23,8 @@ import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult import com.amplifyframework.ui.authenticator.AuthenticatorConfiguration import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration +import com.amplifyframework.ui.authenticator.data.AuthFactor +import com.amplifyframework.ui.authenticator.data.signInRequiresPassword import com.amplifyframework.ui.authenticator.data.signUpRequiresPassword import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.forms.FormData @@ -39,12 +41,25 @@ internal class StepStateFactory( onSignOut = onSignOut ) - fun newSignInState(onSubmit: suspend (username: String, password: String) -> Unit) = SignInStateImpl( + fun newSignInState(onSubmit: suspend (username: String, password: String?) -> Unit) = SignInStateImpl( signInMethod = authConfiguration.signInMethod, + showPasswordField = configuration.authenticationFlow.signInRequiresPassword, onSubmit = onSubmit, onMoveTo = onMoveTo ) + fun newSignInSelectFactorState( + username: String, + availableFactors: Set, + onSelect: suspend (AuthFactor) -> Unit + ) = SignInSelectAuthFactorStateImpl( + username = username, + signInMethod = authConfiguration.signInMethod, + availableAuthFactors = availableFactors, + onSubmit = onSelect, + onMoveTo = onMoveTo + ) + fun newSignInMfaState( codeDeliveryDetails: AuthCodeDeliveryDetails?, onSubmit: suspend (confirmationCode: String) -> Unit @@ -72,6 +87,14 @@ internal class StepStateFactory( onMoveTo = onMoveTo ) + fun newSignInConfirmPasswordState(username: String, onSubmit: suspend (password: String) -> Unit) = + SignInConfirmPasswordStateImpl( + username = username, + signInMethod = authConfiguration.signInMethod, + onSubmit = onSubmit, + onMoveTo = onMoveTo + ) + fun newSignInConfirmTotpCodeState(onSubmit: suspend (confirmationCode: String) -> Unit) = SignInConfirmTotpCodeStateImpl( onSubmit = onSubmit, diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt index 252a6f9f..7a7eca74 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInConfirmPassword.kt @@ -47,7 +47,7 @@ fun SignInConfirmPassword( value = state.username, onValueChange = {}, label = { Text(usernameLabel) }, - readOnly = true + enabled = false ) Spacer(modifier = Modifier.size(AuthenticatorUiConstants.spaceBetweenFields)) AuthenticatorForm( diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt index c49f8041..f5695164 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -9,6 +9,7 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource @@ -60,7 +61,7 @@ fun SignInSelectAuthFactor( if (state.availableAuthFactors.size > 1) { DividerWithText( text = stringResource(R.string.amplify_ui_authenticator_or), - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(0.5f).align(Alignment.CenterHorizontally) ) } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyExtensions.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyExtensions.kt new file mode 100644 index 00000000..aaff8f39 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyExtensions.kt @@ -0,0 +1,50 @@ +package com.amplifyframework.ui.authenticator.util + +import android.app.Activity +import aws.sdk.kotlin.services.cognitoidentityprovider.model.NotAuthorizedException +import aws.smithy.kotlin.runtime.ServiceException +import com.amplifyframework.auth.AuthException +import com.amplifyframework.auth.cognito.options.AWSCognitoAuthConfirmSignInOptions +import com.amplifyframework.auth.cognito.options.AWSCognitoAuthSignInOptions +import com.amplifyframework.auth.cognito.options.AuthFlowType +import com.amplifyframework.ui.authenticator.data.AuthFactor +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow +import com.amplifyframework.ui.authenticator.data.toAuthFactorType + +internal fun AWSCognitoAuthSignInOptions.CognitoBuilder.preferredFirstFactor( + authenticationFlow: AuthenticationFlow, + override: AuthFactor? +) = apply { + if (authenticationFlow is AuthenticationFlow.UserChoice) { + val factor = override ?: authenticationFlow.preferredAuthFactor + preferredFirstFactor(factor?.toAuthFactorType()) + } +} + +internal fun AWSCognitoAuthSignInOptions.CognitoBuilder.authFlow(authFlow: AuthFlowType?) = apply { + authFlow?.let { authFlowType(it) } +} + +internal fun AWSCognitoAuthSignInOptions.CognitoBuilder.callingActivity(activity: Activity?) = apply { + activity?.let { callingActivity(it) } +} + +internal fun AWSCognitoAuthConfirmSignInOptions.CognitoBuilder.callingActivity(activity: Activity?) = apply { + activity?.let { callingActivity(it) } +} + +internal fun AuthException.isAuthFlowSessionExpiredError(): Boolean { + val sdkException = getCauseOrNull() + if (sdkException == null) return false + return sdkException.sdkErrorMetadata.errorType == ServiceException.ErrorType.Client && + sdkException.message.contains("session") +} + +internal inline fun AuthException.getCauseOrNull(): T? { + var causedBy = this.cause + while (causedBy != null && causedBy != this) { + if (causedBy is T) return causedBy + causedBy = causedBy.cause + } + return null +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt index 2cd90140..c157d086 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt @@ -27,6 +27,8 @@ import com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin import com.amplifyframework.auth.cognito.PasswordProtectionSettings import com.amplifyframework.auth.cognito.UsernameAttribute import com.amplifyframework.auth.cognito.VerificationMechanism as AmplifyVerificationMechanism +import com.amplifyframework.auth.options.AuthConfirmSignInOptions +import com.amplifyframework.auth.options.AuthSignInOptions import com.amplifyframework.auth.options.AuthSignUpOptions import com.amplifyframework.auth.result.AuthResetPasswordResult import com.amplifyframework.auth.result.AuthSignInResult @@ -52,9 +54,12 @@ import kotlinx.coroutines.flow.callbackFlow * An abstraction of the Amplify.Auth API that allows us to use coroutines with no exceptions */ internal interface AuthProvider { - suspend fun signIn(username: String, password: String?): AmplifyResult + suspend fun signIn(username: String, password: String?, options: AuthSignInOptions): AmplifyResult - suspend fun confirmSignIn(challengeResponse: String): AmplifyResult + suspend fun confirmSignIn( + challengeResponse: String, + options: AuthConfirmSignInOptions + ): AmplifyResult suspend fun signUp(username: String, password: String?, options: AuthSignUpOptions): AmplifyResult @@ -106,22 +111,26 @@ internal class RealAuthProvider : AuthProvider { cognitoPlugin?.addToUserAgent(AWSCognitoAuthMetadataType.Authenticator, BuildConfig.VERSION_NAME) } - override suspend fun signIn(username: String, password: String?) = suspendCoroutine { continuation -> - Amplify.Auth.signIn( - username, - password, - { continuation.resume(AmplifyResult.Success(it)) }, - { continuation.resume(AmplifyResult.Error(it)) } - ) - } + override suspend fun signIn(username: String, password: String?, options: AuthSignInOptions) = + suspendCoroutine { continuation -> + Amplify.Auth.signIn( + username, + password, + options, + { continuation.resume(AmplifyResult.Success(it)) }, + { continuation.resume(AmplifyResult.Error(it)) } + ) + } - override suspend fun confirmSignIn(challengeResponse: String) = suspendCoroutine { continuation -> - Amplify.Auth.confirmSignIn( - challengeResponse, - { continuation.resume(AmplifyResult.Success(it)) }, - { continuation.resume(AmplifyResult.Error(it)) } - ) - } + override suspend fun confirmSignIn(challengeResponse: String, options: AuthConfirmSignInOptions) = + suspendCoroutine { continuation -> + Amplify.Auth.confirmSignIn( + challengeResponse, + options, + { continuation.resume(AmplifyResult.Success(it)) }, + { continuation.resume(AmplifyResult.Error(it)) } + ) + } override suspend fun signUp(username: String, password: String?, options: AuthSignUpOptions) = suspendCoroutine { continuation -> diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt index 48f18e10..039f6d57 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt @@ -148,3 +148,11 @@ internal class NetworkErrorMessage(override val cause: AuthException) : internal class LimitExceededMessage(override val cause: AuthException) : AuthenticatorMessageImpl(R.string.amplify_ui_authenticator_error_limit_exceeded), AuthenticatorMessage.Error + +/** + * The user's authentication flow session has expired, indicating that they took too long to provide an auth factor. + * The session duration is configured in your user pool's app client. + */ +internal class AuthFlowSessionExpiredMessage(override val cause: AuthException) : + AuthenticatorMessageImpl(R.string.amplify_ui_authenticator_error_session_expired), + AuthenticatorMessage.Error diff --git a/authenticator/src/main/res/values/errors.xml b/authenticator/src/main/res/values/errors.xml index b3f46095..772529ea 100644 --- a/authenticator/src/main/res/values/errors.xml +++ b/authenticator/src/main/res/values/errors.xml @@ -22,5 +22,6 @@ Code has expired Please check your connectivity You\'ve reached the request limit. Please try again later. + Your session has expired. Please try to sign in again. Sorry, something went wrong diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt index f8d406b0..247f7c91 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt @@ -189,7 +189,7 @@ class AuthenticatorViewModelTest { @Test fun `TOTPSetup next step shows error if totpSetupDetails is null`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult( signInStep = AuthSignInStep.CONTINUE_SIGN_IN_WITH_TOTP_SETUP, totpSetupDetails = null @@ -205,7 +205,7 @@ class AuthenticatorViewModelTest { @Test fun `TOTPSetup next step shows SignInContinueWithTotpSetup screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult( signInStep = AuthSignInStep.CONTINUE_SIGN_IN_WITH_TOTP_SETUP, totpSetupDetails = mockk(relaxed = true) @@ -221,7 +221,7 @@ class AuthenticatorViewModelTest { @Test fun `TOTP Code next step shows the SignInConfirmTotpCode screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_TOTP_CODE) ) @@ -234,7 +234,7 @@ class AuthenticatorViewModelTest { @Test fun `SMS MFA Code next step shows the SignInConfirmMfa screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_SMS_MFA_CODE) ) @@ -247,7 +247,7 @@ class AuthenticatorViewModelTest { @Test fun `Custom Challenge next step shows the SignInConfirmCustomAuth screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE) ) @@ -260,7 +260,7 @@ class AuthenticatorViewModelTest { @Test fun `New Password next step shows the SignInConfirmNewPassword screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_NEW_PASSWORD) ) @@ -273,7 +273,7 @@ class AuthenticatorViewModelTest { @Test fun `Confirm SignUp next step, get error from resendSignUpCode, stays in SignIn screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_UP) ) coEvery { authProvider.resendSignUpCode(any()) } returns AmplifyResult.Error(mockAuthException()) @@ -287,7 +287,7 @@ class AuthenticatorViewModelTest { @Test fun `Confirm SignUp next step shows the SignUpConfirm screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_UP) ) coEvery { authProvider.resendSignUpCode(any()) } returns Success(mockk()) @@ -301,7 +301,7 @@ class AuthenticatorViewModelTest { @Test fun `MFA selection next step shows error if allowedMFATypes is null`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult( signInStep = AuthSignInStep.CONTINUE_SIGN_IN_WITH_MFA_SELECTION, allowedMFATypes = null @@ -317,7 +317,7 @@ class AuthenticatorViewModelTest { @Test fun `MFA selection next step shows error if allowedMFATypes is empty`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult( signInStep = AuthSignInStep.CONTINUE_SIGN_IN_WITH_MFA_SELECTION, allowedMFATypes = emptySet() @@ -333,7 +333,7 @@ class AuthenticatorViewModelTest { @Test fun `MFA Selection next step shows the SignInContinueWithMfaSelection screen`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult( signInStep = AuthSignInStep.CONTINUE_SIGN_IN_WITH_MFA_SELECTION, allowedMFATypes = setOf(MFAType.TOTP, MFAType.SMS) @@ -349,7 +349,7 @@ class AuthenticatorViewModelTest { @Test fun `user attribute verification screen is shown if user has no verified attributes`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success(mockSignInResult()) + coEvery { authProvider.signIn(any(), any(), any()) } returns Success(mockSignInResult()) coEvery { authProvider.getConfiguration() } returns mockAmplifyAuthConfiguration( verificationMechanisms = setOf(VerificationMechanism.Email) ) @@ -366,7 +366,7 @@ class AuthenticatorViewModelTest { @Test fun `user attribute verification screen is not shown if user has verified attributes`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success(mockSignInResult()) + coEvery { authProvider.signIn(any(), any(), any()) } returns Success(mockSignInResult()) coEvery { authProvider.getConfiguration() } returns mockAmplifyAuthConfiguration( verificationMechanisms = setOf(VerificationMechanism.Email) ) @@ -383,7 +383,7 @@ class AuthenticatorViewModelTest { @Test fun `user attribute verification screen is not shown if there are no verification mechanisms`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success(mockSignInResult()) + coEvery { authProvider.signIn(any(), any(), any()) } returns Success(mockSignInResult()) coEvery { authProvider.getConfiguration() } returns mockAmplifyAuthConfiguration( verificationMechanisms = emptySet() // no verification mechanisms ) @@ -400,7 +400,7 @@ class AuthenticatorViewModelTest { @Test fun `user attribute verification screen is not shown if cannot fetch user attributes`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success(mockSignInResult()) + coEvery { authProvider.signIn(any(), any(), any()) } returns Success(mockSignInResult()) coEvery { authProvider.getConfiguration() } returns mockAmplifyAuthConfiguration( verificationMechanisms = setOf(VerificationMechanism.Email) ) @@ -416,7 +416,7 @@ class AuthenticatorViewModelTest { @Test fun `user attribute verification screen is not shown if user does not have the required attributes`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success(mockSignInResult()) + coEvery { authProvider.signIn(any(), any(), any()) } returns Success(mockSignInResult()) coEvery { authProvider.getConfiguration() } returns mockAmplifyAuthConfiguration( verificationMechanisms = setOf(VerificationMechanism.Email) ) @@ -431,7 +431,7 @@ class AuthenticatorViewModelTest { @Test fun `signing in with no internet results in network error message`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns + coEvery { authProvider.signIn(any(), any(), any()) } returns Error( mockk { every { cause } returns @@ -466,7 +466,7 @@ class AuthenticatorViewModelTest { @Test fun `does not advance to signed in if sign in is in progress when SignedIn event is received`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } coAnswers { + coEvery { authProvider.signIn(any(), any(), any()) } coAnswers { delay(1000) // delay so that the sign in does not complete until the clock is advanced Success(mockSignInResult()) } @@ -489,7 +489,7 @@ class AuthenticatorViewModelTest { @Test fun `does not advance to SignedIn when SignedIn event is received in a post-sign-in state`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success(mockSignInResult()) + coEvery { authProvider.signIn(any(), any(), any()) } returns Success(mockSignInResult()) coEvery { authProvider.getConfiguration() } returns mockAmplifyAuthConfiguration( verificationMechanisms = setOf(VerificationMechanism.Email) ) @@ -527,7 +527,7 @@ class AuthenticatorViewModelTest { @Test fun `Sign in with temporary password requires password reset`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - coEvery { authProvider.signIn(any(), any()) } returns Success( + coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult( signInStep = AuthSignInStep.RESET_PASSWORD ) @@ -625,7 +625,7 @@ class AuthenticatorViewModelTest { ) coEvery { authProvider.confirmResetPassword(any(), any(), any()) } returns Success(Unit) - coEvery { authProvider.signIn(any(), any()) } returns Error( + coEvery { authProvider.signIn(any(), any(), any()) } returns Error( mockk { every { cause } returns mockk { every { cause } returns mockk() diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index 2422c3b2..2e1ae9a1 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -40,11 +40,13 @@ import com.amplifyframework.ui.authenticator.states.SignInSelectAuthFactorStateI import com.amplifyframework.ui.authenticator.states.SignInStateImpl import com.amplifyframework.ui.authenticator.states.SignUpStateImpl -internal fun mockSignInState() = SignInStateImpl( - signInMethod = SignInMethod.Username, - onSubmit = { _, _ -> }, - onMoveTo = { } -) +internal fun mockSignInState(signInMethod: SignInMethod = SignInMethod.Username, showPasswordField: Boolean = true) = + SignInStateImpl( + signInMethod = signInMethod, + showPasswordField = showPasswordField, + onSubmit = { _, _ -> }, + onMoveTo = { } + ) internal fun mockSignUpState( signInMethod: SignInMethod = SignInMethod.Username, diff --git a/build-logic/plugins/src/main/kotlin/com/amplify/ui/ConfigureAndroid.kt b/build-logic/plugins/src/main/kotlin/com/amplify/ui/ConfigureAndroid.kt index ef26c6a0..f350c553 100644 --- a/build-logic/plugins/src/main/kotlin/com/amplify/ui/ConfigureAndroid.kt +++ b/build-logic/plugins/src/main/kotlin/com/amplify/ui/ConfigureAndroid.kt @@ -21,7 +21,7 @@ internal fun Project.configureAndroid(extension: CommonExtension<*, *, *, *, *, val sdkVersionName = findProperty("VERSION_NAME") ?: rootProject.findProperty("VERSION_NAME") extension.apply { - compileSdk = 35 + compileSdk = 36 buildFeatures { buildConfig = true @@ -64,4 +64,4 @@ internal fun Project.configureAndroid(extension: CommonExtension<*, *, *, *, *, kotlinCompilerExtensionVersion = "1.5.3" } } -} \ No newline at end of file +} From 51998f7844bb9e471c3db678f354bc5f0e15210e Mon Sep 17 00:00:00 2001 From: Matt Creaser Date: Wed, 12 Nov 2025 10:55:50 -0400 Subject: [PATCH 06/17] feat(authenticator): Hook up passkey prompt (#282) --- .../ui/authenticator/AuthenticatorState.kt | 6 +- .../authenticator/AuthenticatorStepState.kt | 55 ++++++- .../authenticator/AuthenticatorViewModel.kt | 70 +++++++- .../ui/authenticator/enums/SignInSource.kt | 5 +- .../states/MutableActionState.kt | 13 ++ .../states/PasskeyCreatedStateImpl.kt | 12 +- .../states/PasskeyCreationPromptStateImpl.kt | 17 +- .../states/SignInSelectAuthFactorStateImpl.kt | 10 +- .../authenticator/states/StepStateFactory.kt | 13 ++ .../ui/authenticator/ui/AuthenticatorField.kt | 7 +- .../ui/authenticator/ui/PasskeyCreated.kt | 20 +-- .../authenticator/ui/PasskeyCreationPrompt.kt | 33 +--- .../ui/SignInSelectAuthFactor.kt | 6 +- .../ui/authenticator/util/AmplifyResult.kt | 13 ++ .../ui/authenticator/util/AuthProvider.kt | 27 +++- .../util/AuthenticatorMessage.kt | 7 + .../authenticator/util/ContextExtensions.kt | 14 ++ .../ui/authenticator/util/OsBuild.kt | 9 ++ .../authenticator/util/PasskeyPromptCheck.kt | 36 +++++ authenticator/src/main/res/values/errors.xml | 2 + .../AuthenticatorViewModelTest.kt | 84 +++++----- .../ui/authenticator/testUtil/MockStates.kt | 20 ++- .../ui/authenticator/ui/PasskeyCreatedTest.kt | 12 ++ .../ui/PasskeyCreationPromptTest.kt | 21 +++ .../util/PasskeyPromptCheckTest.kt | 149 ++++++++++++++++++ .../PasskeyCreatedTest_done-selected.png | Bin 0 -> 38055 bytes ...keyCreationPromptTest_creating-passkey.png | Bin 0 -> 98649 bytes ...onPromptTest_skipping-passkey-creation.png | Bin 0 -> 97085 bytes ...ignInConfirmPasswordTest_default-state.png | Bin 43448 -> 42710 bytes ...InConfirmPasswordTest_password-visible.png | Bin 48469 -> 47761 bytes ...asswordTest_ready-to-submit-with-email.png | Bin 44736 -> 43862 bytes ...dTest_ready-to-submit-with-phonenumber.png | Bin 45521 -> 44682 bytes ...nInConfirmPasswordTest_ready-to-submit.png | Bin 43515 -> 42785 bytes ...ault-state-with-all-factors-with-email.png | Bin 66502 -> 66503 bytes ...ate-with-all-factors-with-phone-number.png | Bin 68168 -> 68171 bytes ...torTest_default-state-with-all-factors.png | Bin 65403 -> 65404 bytes 36 files changed, 535 insertions(+), 126 deletions(-) create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/MutableActionState.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyResult.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/ContextExtensions.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/OsBuild.kt create mode 100644 authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheck.kt create mode 100644 authenticator/src/test/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheckTest.kt create mode 100644 authenticator/src/test/screenshots/PasskeyCreatedTest_done-selected.png create mode 100644 authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey.png create mode 100644 authenticator/src/test/screenshots/PasskeyCreationPromptTest_skipping-passkey-creation.png diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt index c01445e1..3893a160 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorState.kt @@ -22,6 +22,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue +import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.viewmodel.compose.viewModel import com.amplifyframework.ui.authenticator.data.AuthenticationFlow import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep @@ -29,6 +30,7 @@ import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.forms.SignUpFormBuilder import com.amplifyframework.ui.authenticator.options.TotpOptions import com.amplifyframework.ui.authenticator.util.AuthenticatorMessage +import com.amplifyframework.ui.authenticator.util.findActivity import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -52,6 +54,8 @@ fun rememberAuthenticatorState( ): AuthenticatorState { val viewModel = viewModel() val scope = rememberCoroutineScope() + val context = LocalContext.current + return remember { val configuration = AuthenticatorConfiguration( initialStep = initialStep, @@ -60,7 +64,7 @@ fun rememberAuthenticatorState( authenticationFlow = authenticationFlow ) - viewModel.start(configuration) + viewModel.start(configuration, context.findActivity()) AuthenticatorStateImpl(viewModel).also { state -> viewModel.stepState.onEach { state.stepState = it }.launchIn(scope) } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt index ea1fc57b..9f575bb0 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorStepState.kt @@ -40,6 +40,17 @@ interface AuthenticatorStepState { val step: AuthenticatorStep } +/** + * A state holder for the UI that has multiple possible actions that may be in progress. + */ +@Stable +interface AuthenticatorActionState { + /** + * The action in progress, or null if state is idle + */ + val action: T? +} + /** * The Authenticator is loading the current state of the user's Auth session. */ @@ -99,7 +110,17 @@ interface SignInState : AuthenticatorStepState { * The user has entered their username and must select the authentication factor they'd like to use to sign in */ @Stable -interface SignInSelectAuthFactorState : AuthenticatorStepState { +interface SignInSelectAuthFactorState : + AuthenticatorStepState, + AuthenticatorActionState { + + sealed interface Action { + /** + * User has selected an auth factor + */ + data class SelectFactor(val factor: AuthFactor) : Action + } + /** * The input form state holder for this step. */ @@ -115,11 +136,6 @@ interface SignInSelectAuthFactorState : AuthenticatorStepState { */ val availableAuthFactors: Set - /** - * The factor the user selected and is currently being processed - */ - val selectedFactor: AuthFactor? - /** * Move the user to a different [AuthenticatorInitialStep]. */ @@ -530,7 +546,21 @@ interface VerifyUserConfirmState : AuthenticatorStepState { * via biometrics */ @Stable -interface PasskeyCreationPromptState : AuthenticatorStepState { +interface PasskeyCreationPromptState : + AuthenticatorStepState, + AuthenticatorActionState { + sealed interface Action { + /** + * User is creating a passkey + */ + class CreatePasskey : Action + + /** + * User has selected the Skip button + */ + class Skip : Action + } + /** * Create a passkey */ @@ -546,7 +576,16 @@ interface PasskeyCreationPromptState : AuthenticatorStepState { * The user is being shown a confirmation screen after creating a passkey */ @Stable -interface PasskeyCreatedState : AuthenticatorStepState { +interface PasskeyCreatedState : + AuthenticatorStepState, + AuthenticatorActionState { + sealed interface Action { + /** + * User has selected the Done button + */ + class Done : Action + } + /** * A list of existing passkeys for this user, including the one they've just created */ diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt index b040fba9..20fa5097 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModel.kt @@ -19,6 +19,7 @@ import android.app.Activity import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.viewModelScope +import com.amplifyframework.AmplifyException import com.amplifyframework.auth.AuthChannelEventName import com.amplifyframework.auth.AuthException import com.amplifyframework.auth.AuthUser @@ -34,6 +35,7 @@ import com.amplifyframework.auth.cognito.exceptions.service.InvalidParameterExce import com.amplifyframework.auth.cognito.exceptions.service.InvalidPasswordException import com.amplifyframework.auth.cognito.exceptions.service.LimitExceededException import com.amplifyframework.auth.cognito.exceptions.service.PasswordResetRequiredException +import com.amplifyframework.auth.cognito.exceptions.service.UserCancelledException import com.amplifyframework.auth.cognito.exceptions.service.UserNotConfirmedException import com.amplifyframework.auth.cognito.exceptions.service.UserNotFoundException import com.amplifyframework.auth.cognito.exceptions.service.UsernameExistsException @@ -87,6 +89,8 @@ import com.amplifyframework.ui.authenticator.util.InvalidLoginMessage import com.amplifyframework.ui.authenticator.util.LimitExceededMessage import com.amplifyframework.ui.authenticator.util.MissingConfigurationException import com.amplifyframework.ui.authenticator.util.NetworkErrorMessage +import com.amplifyframework.ui.authenticator.util.PasskeyCreationFailedMessage +import com.amplifyframework.ui.authenticator.util.PasskeyPromptCheck import com.amplifyframework.ui.authenticator.util.PasswordResetMessage import com.amplifyframework.ui.authenticator.util.RealAuthProvider import com.amplifyframework.ui.authenticator.util.UnableToResetPasswordMessage @@ -94,6 +98,7 @@ import com.amplifyframework.ui.authenticator.util.UnknownErrorMessage import com.amplifyframework.ui.authenticator.util.UnsupportedNextStepException import com.amplifyframework.ui.authenticator.util.authFlow import com.amplifyframework.ui.authenticator.util.callingActivity +import com.amplifyframework.ui.authenticator.util.getOrDefault import com.amplifyframework.ui.authenticator.util.isAuthFlowSessionExpiredError import com.amplifyframework.ui.authenticator.util.isConnectivityIssue import com.amplifyframework.ui.authenticator.util.preferredFirstFactor @@ -108,8 +113,12 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.jetbrains.annotations.VisibleForTesting -internal class AuthenticatorViewModel(application: Application, private val authProvider: AuthProvider) : - AndroidViewModel(application) { +internal class AuthenticatorViewModel( + application: Application, + private val authProvider: AuthProvider, + private val passkeyCheck: PasskeyPromptCheck = PasskeyPromptCheck(authProvider) +) : AndroidViewModel(application) { + // Constructor for compose viewModels provider constructor(application: Application) : this(application, RealAuthProvider()) @@ -140,13 +149,14 @@ internal class AuthenticatorViewModel(application: Application, private val auth // The current activity is used for WebAuthn sign-in when using passwordless functionality private var activityReference: WeakReference = WeakReference(null) - var activity: Activity? + private var activity: Activity? get() = activityReference.get() set(value) { activityReference = WeakReference(value) } - fun start(configuration: AuthenticatorConfiguration) { + fun start(configuration: AuthenticatorConfiguration, activity: Activity?) { + this.activity = activity if (::configuration.isInitialized) { return } @@ -216,7 +226,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth suspend fun signUp(username: String, password: String?, attributes: List) { viewModelScope.launch { val options = AuthSignUpOptions.builder().userAttributes(attributes).build() - val info = UserInfo(username = username, password = password, signInSource = SignInSource.SignUp) + val info = UserInfo(username = username, password = password, signInSource = SignInSource.AutoSignIn) when (val result = authProvider.signUp(username, password, options)) { is AmplifyResult.Error -> handleSignUpFailure(result.error) @@ -351,6 +361,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth // UserNotConfirmed and PasswordResetRequired are special cases where we need // to enter different flows when (error) { + is UserCancelledException -> Unit // This is an expected error, user can simply retry is UserNotConfirmedException -> handleUnconfirmedSignIn(info) is PasswordResetRequiredException -> handleResetRequiredSignIn(info.username) is NotAuthorizedException -> sendMessage(InvalidLoginMessage(error)) @@ -472,7 +483,7 @@ internal class AuthenticatorViewModel(application: Application, private val auth private suspend fun handleSignInSuccess(info: UserInfo, result: AuthSignInResult) { when (val nextStep = result.nextStep.signInStep) { - AuthSignInStep.DONE -> checkVerificationMechanisms() + AuthSignInStep.DONE -> checkForPasskeyPrompt(info) AuthSignInStep.CONFIRM_SIGN_IN_WITH_SMS_MFA_CODE, AuthSignInStep.CONFIRM_SIGN_IN_WITH_OTP -> moveTo( stateFactory.newSignInMfaState( @@ -535,6 +546,53 @@ internal class AuthenticatorViewModel(application: Application, private val auth } } + private suspend fun checkForPasskeyPrompt(info: UserInfo) { + if (passkeyCheck.shouldPromptForPasskey(userInfo = info, config = configuration)) { + moveTo( + stateFactory.newPasskeyPromptState( + onSubmit = { + val activityRef = activity + if (activityRef == null) { + // This shouldn't happen, it indicates a bug. If it does the user can retry or choose to + // skip + sendMessage( + UnknownErrorMessage( + AuthException( + message = "Missing activity reference", + recoverySuggestion = AmplifyException.REPORT_BUG_TO_AWS_SUGGESTION + ) + ) + ) + } else { + createPasskey(activityRef) + } + }, + onSkip = ::checkVerificationMechanisms + ) + ) + } else { + checkVerificationMechanisms() + } + } + + private suspend fun createPasskey(activityRef: Activity) { + when (val result = authProvider.createPasskey(activityRef)) { + is AmplifyResult.Error -> when (result.error) { + is UserCancelledException -> Unit // This is expected, user can retry or skip + else -> sendMessage(PasskeyCreationFailedMessage(result.error)) // User can retry/skip + } + is AmplifyResult.Success -> { + val passkeys = authProvider.getPasskeys().getOrDefault { emptyList() } + moveTo( + stateFactory.newPasskeyCreatedState( + passkeys = passkeys, + onDone = ::checkVerificationMechanisms + ) + ) + } + } + } + private suspend fun checkVerificationMechanisms() { val mechanisms = authConfiguration.verificationMechanisms if (mechanisms.isEmpty()) { diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt index f29b16cd..7cfad434 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/enums/SignInSource.kt @@ -5,8 +5,5 @@ internal enum class SignInSource { SignIn, // Automatic sign in after completing sign up - SignUp, - - // Signed in outside of Authenticator - External + AutoSignIn } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/MutableActionState.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/MutableActionState.kt new file mode 100644 index 00000000..b31d9e91 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/MutableActionState.kt @@ -0,0 +1,13 @@ +package com.amplifyframework.ui.authenticator.states + +import com.amplifyframework.ui.authenticator.AuthenticatorActionState + +internal interface MutableActionState : AuthenticatorActionState { + override var action: T? +} + +internal inline fun MutableActionState.withAction(action: T, func: () -> Unit) { + this.action = action + func() + this.action = null +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt index e7df13e2..8e938b60 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreatedStateImpl.kt @@ -1,5 +1,8 @@ package com.amplifyframework.ui.authenticator.states +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.PasskeyCreatedState import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep @@ -7,8 +10,13 @@ import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep internal class PasskeyCreatedStateImpl( override val passkeys: List, private val onDone: suspend () -> Unit -) : PasskeyCreatedState { +) : PasskeyCreatedState, + MutableActionState { override val step: AuthenticatorStep = AuthenticatorStep.PasskeyCreated - override suspend fun done() = onDone() + override var action: PasskeyCreatedState.Action? by mutableStateOf(null) + + override suspend fun done() = withAction(PasskeyCreatedState.Action.Done()) { + onDone() + } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt index 43bc4ff8..f6f89329 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/PasskeyCreationPromptStateImpl.kt @@ -1,21 +1,28 @@ package com.amplifyframework.ui.authenticator.states +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState.Action import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock class PasskeyCreationPromptStateImpl(private val onSubmit: suspend () -> Unit, private val onSkip: suspend () -> Unit) : - PasskeyCreationPromptState { + PasskeyCreationPromptState, + MutableActionState { private val mutex = Mutex() - override suspend fun createPasskey() { + override val step = AuthenticatorStep.PasskeyCreationPrompt + + override var action: Action? by mutableStateOf(null) + + override suspend fun createPasskey() = withAction(Action.CreatePasskey()) { mutex.withLock { onSubmit() } } - override suspend fun skip() = onSkip() - - override val step = AuthenticatorStep.PasskeyCreationPrompt + override suspend fun skip() = withAction(Action.Skip()) { onSkip() } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt index efc59283..6cf56dcb 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/SignInSelectAuthFactorStateImpl.kt @@ -4,6 +4,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState.Action import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.data.AuthFactor import com.amplifyframework.ui.authenticator.data.containsPassword @@ -17,10 +18,11 @@ internal class SignInSelectAuthFactorStateImpl( private val onSubmit: suspend (authFactor: AuthFactor) -> Unit, private val onMoveTo: (step: AuthenticatorInitialStep) -> Unit ) : BaseStateImpl(), - SignInSelectAuthFactorState { + SignInSelectAuthFactorState, + MutableActionState { override val step: AuthenticatorStep = AuthenticatorStep.SignInSelectAuthFactor - override var selectedFactor: AuthFactor? by mutableStateOf(null) + override var action: Action? by mutableStateOf(null) init { if (availableAuthFactors.containsPassword()) { @@ -30,15 +32,13 @@ internal class SignInSelectAuthFactorStateImpl( override fun moveTo(step: AuthenticatorInitialStep) = onMoveTo(step) - override suspend fun select(authFactor: AuthFactor) { + override suspend fun select(authFactor: AuthFactor) = withAction(Action.SelectFactor(authFactor)) { // Clear errors form.fields.values.forEach { it.state.error = null } - selectedFactor = authFactor form.enabled = false onSubmit(authFactor) form.enabled = true - selectedFactor = null } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt index f5f81600..2010d011 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/states/StepStateFactory.kt @@ -21,6 +21,7 @@ import com.amplifyframework.auth.AuthUserAttribute import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthSignOutResult +import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.AuthenticatorConfiguration import com.amplifyframework.ui.authenticator.auth.AmplifyAuthConfiguration import com.amplifyframework.ui.authenticator.data.AuthFactor @@ -196,4 +197,16 @@ internal class StepStateFactory( onResendCode = onResendCode, onSkip = onSkip ) + + fun newPasskeyPromptState(onSubmit: suspend () -> Unit, onSkip: suspend () -> Unit) = + PasskeyCreationPromptStateImpl( + onSubmit = onSubmit, + onSkip = onSkip + ) + + fun newPasskeyCreatedState(passkeys: List, onDone: suspend () -> Unit) = + PasskeyCreatedStateImpl( + passkeys = passkeys, + onDone = onDone + ) } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorField.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorField.kt index cf9554fb..18bd2854 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorField.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/AuthenticatorField.kt @@ -23,6 +23,8 @@ import androidx.compose.animation.shrinkVertically import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import com.amplifyframework.ui.authenticator.forms.FieldConfig @@ -79,13 +81,16 @@ internal fun AuthenticatorFieldError( error: FieldError?, modifier: Modifier = Modifier ) { + var lastError by remember { mutableStateOf(null) } + if (error != null) lastError = error + AnimatedVisibility( modifier = modifier, visible = error != null, enter = fadeIn() + expandVertically(), exit = fadeOut() + shrinkVertically() ) { - val text = error?.let { StringResolver.error(config = fieldConfig, error = it) } ?: "" + val text = lastError?.let { StringResolver.error(config = fieldConfig, error = it) } ?: "" Text(text = text) } } diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt index 349f4409..9ab3fe79 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreated.kt @@ -12,11 +12,7 @@ import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource @@ -24,6 +20,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.PasskeyCreatedState.Action import com.amplifyframework.ui.authenticator.R import kotlinx.coroutines.launch @@ -71,18 +68,11 @@ fun PasskeyCreated( Spacer(modifier = Modifier.size(16.dp)) } - var enabled by remember { mutableStateOf(true) } AuthenticatorButton( - onClick = { - scope.launch { - enabled = false - state.done() - enabled = true - } - }, - loading = !enabled, - label = stringResource(R.string.amplify_ui_authenticator_button_continue), - modifier = Modifier.testTag(TestTags.ContinueButton) + modifier = Modifier.testTag(TestTags.ContinueButton), + onClick = { scope.launch { state.done() } }, + loading = state.action is Action.Done, + label = stringResource(R.string.amplify_ui_authenticator_button_continue) ) footerContent(state) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt index bf4a23a9..2bd59cc9 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPrompt.kt @@ -8,25 +8,17 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState.Action import com.amplifyframework.ui.authenticator.R import kotlinx.coroutines.launch -private enum class Action { - CreatingPasskey, - Skipping -} - @Composable fun PasskeyPrompt( state: PasskeyCreationPromptState, @@ -37,8 +29,7 @@ fun PasskeyPrompt( footerContent: @Composable (PasskeyCreationPromptState) -> Unit = {} ) { val scope = rememberCoroutineScope() - - var inProgress by remember { mutableStateOf(null) } + val action = state.action Column( modifier = modifier @@ -61,14 +52,10 @@ fun PasskeyPrompt( AuthenticatorButton( onClick = { - scope.launch { - inProgress = Action.CreatingPasskey - state.createPasskey() - inProgress = null - } + scope.launch { state.createPasskey() } }, - loading = inProgress == Action.CreatingPasskey, - enabled = inProgress == null, + loading = action is Action.CreatePasskey, + enabled = action == null, label = stringResource(R.string.amplify_ui_authenticator_button_create_passkey), modifier = Modifier.testTag(TestTags.CreatePasskeyButton) ) @@ -76,14 +63,10 @@ fun PasskeyPrompt( AuthenticatorButton( modifier = Modifier.fillMaxWidth().testTag(TestTags.SkipPasskeyButton), onClick = { - scope.launch { - inProgress = Action.Skipping - state.skip() - inProgress = null - } + scope.launch { state.skip() } }, - loading = inProgress == Action.Skipping, - enabled = inProgress == null, + loading = action is Action.Skip, + enabled = action == null, label = stringResource(R.string.amplify_ui_authenticator_button_skip_passkey), style = ButtonStyle.Secondary ) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt index f5695164..c9f2c9d2 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/ui/SignInSelectAuthFactor.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.amplifyframework.ui.authenticator.R import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState +import com.amplifyframework.ui.authenticator.SignInSelectAuthFactorState.Action import com.amplifyframework.ui.authenticator.auth.toFieldKey import com.amplifyframework.ui.authenticator.data.AuthFactor import com.amplifyframework.ui.authenticator.data.containsPassword @@ -92,11 +93,12 @@ private fun AuthFactorButton( state: SignInSelectAuthFactorState, modifier: Modifier = Modifier ) { + val action = state.action val scope = rememberCoroutineScope() AuthenticatorButton( onClick = { scope.launch { state.select(authFactor) } }, - loading = state.selectedFactor == authFactor, - enabled = state.selectedFactor == null, + loading = action is Action.SelectFactor && action.factor == authFactor, + enabled = action == null, label = stringResource(authFactor.signInResourceId), modifier = modifier.testTag(authFactor.testTag) ) diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyResult.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyResult.kt new file mode 100644 index 00000000..fa1acddc --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AmplifyResult.kt @@ -0,0 +1,13 @@ +package com.amplifyframework.ui.authenticator.util + +import com.amplifyframework.auth.AuthException + +internal sealed interface AmplifyResult { + data class Success(val data: T) : AmplifyResult + data class Error(val error: AuthException) : AmplifyResult +} + +internal inline fun AmplifyResult.getOrDefault(crossinline provider: () -> T) = when (this) { + is AmplifyResult.Error -> provider() + is AmplifyResult.Success -> this.data +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt index c157d086..be6b80e1 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthProvider.kt @@ -15,10 +15,10 @@ package com.amplifyframework.ui.authenticator.util +import android.app.Activity import com.amplifyframework.auth.AWSCognitoAuthMetadataType import com.amplifyframework.auth.AuthChannelEventName import com.amplifyframework.auth.AuthCodeDeliveryDetails -import com.amplifyframework.auth.AuthException import com.amplifyframework.auth.AuthSession import com.amplifyframework.auth.AuthUser import com.amplifyframework.auth.AuthUserAttribute @@ -34,6 +34,7 @@ import com.amplifyframework.auth.result.AuthResetPasswordResult import com.amplifyframework.auth.result.AuthSignInResult import com.amplifyframework.auth.result.AuthSignOutResult import com.amplifyframework.auth.result.AuthSignUpResult +import com.amplifyframework.auth.result.AuthWebAuthnCredential import com.amplifyframework.core.Amplify import com.amplifyframework.hub.HubChannel import com.amplifyframework.hub.HubEvent @@ -81,6 +82,10 @@ internal interface AuthProvider { suspend fun fetchAuthSession(): AmplifyResult + suspend fun createPasskey(activity: Activity): AmplifyResult + + suspend fun getPasskeys(): AmplifyResult> + suspend fun fetchUserAttributes(): AmplifyResult> suspend fun confirmUserAttribute(key: AuthUserAttributeKey, confirmationCode: String): AmplifyResult @@ -197,6 +202,21 @@ internal class RealAuthProvider : AuthProvider { ) } + override suspend fun createPasskey(activity: Activity) = suspendCoroutine { continuation -> + Amplify.Auth.associateWebAuthnCredential( + activity, + { continuation.resume(AmplifyResult.Success(Unit)) }, + { continuation.resume(AmplifyResult.Error(it)) } + ) + } + + override suspend fun getPasskeys(): AmplifyResult> = suspendCoroutine { continuation -> + Amplify.Auth.listWebAuthnCredentials( + { continuation.resume(AmplifyResult.Success(it.credentials)) }, + { continuation.resume(AmplifyResult.Error(it)) } + ) + } + override suspend fun fetchUserAttributes() = suspendCoroutine { continuation -> Amplify.Auth.fetchUserAttributes( { continuation.resume(AmplifyResult.Success(it)) }, @@ -286,8 +306,3 @@ internal class RealAuthProvider : AuthProvider { requiresLower = requiresLower ) } - -internal sealed interface AmplifyResult { - data class Success(val data: T) : AmplifyResult - data class Error(val error: AuthException) : AmplifyResult -} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt index 039f6d57..fded3678 100644 --- a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/AuthenticatorMessage.kt @@ -156,3 +156,10 @@ internal class LimitExceededMessage(override val cause: AuthException) : internal class AuthFlowSessionExpiredMessage(override val cause: AuthException) : AuthenticatorMessageImpl(R.string.amplify_ui_authenticator_error_session_expired), AuthenticatorMessage.Error + +/** + * The passkey creation failed + */ +internal class PasskeyCreationFailedMessage(override val cause: AuthException) : + AuthenticatorMessageImpl(R.string.amplify_ui_authenticator_error_passkey_creation), + AuthenticatorMessage.Error diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/ContextExtensions.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/ContextExtensions.kt new file mode 100644 index 00000000..a0bba44f --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/ContextExtensions.kt @@ -0,0 +1,14 @@ +package com.amplifyframework.ui.authenticator.util + +import android.app.Activity +import android.content.Context +import android.content.ContextWrapper + +/** + * Allows us to get the Activity reference from Compose LocalContext + */ +internal tailrec fun Context.findActivity(): Activity? = when (this) { + is Activity -> this + is ContextWrapper -> this.baseContext.findActivity() + else -> null +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/OsBuild.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/OsBuild.kt new file mode 100644 index 00000000..4f9c00d4 --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/OsBuild.kt @@ -0,0 +1,9 @@ +package com.amplifyframework.ui.authenticator.util + +import android.os.Build + +// Facade for android.os.Build to facilitate testing +internal class OsBuild { + val sdkInt: Int + get() = Build.VERSION.SDK_INT +} diff --git a/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheck.kt b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheck.kt new file mode 100644 index 00000000..09dbc09e --- /dev/null +++ b/authenticator/src/main/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheck.kt @@ -0,0 +1,36 @@ +package com.amplifyframework.ui.authenticator.util + +import com.amplifyframework.ui.authenticator.AuthenticatorConfiguration +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow +import com.amplifyframework.ui.authenticator.data.PasskeyPrompt +import com.amplifyframework.ui.authenticator.data.UserInfo +import com.amplifyframework.ui.authenticator.enums.SignInSource + +// Utility class for checking whether a user should be shown a passkey prompt +internal class PasskeyPromptCheck(private val authProvider: AuthProvider, private val osBuild: OsBuild = OsBuild()) { + suspend fun shouldPromptForPasskey(userInfo: UserInfo, config: AuthenticatorConfiguration): Boolean { + // Ensure that userHasPasskey is the last check so that the network request can be short-circuited by + // the local-only checks. + val authFlow = config.authenticationFlow + return authFlow is AuthenticationFlow.UserChoice && + deviceSupportsPasskeyCreation() && + passkeyPromptsEnabled(userInfo, authFlow) && + !userHasPasskey() + } + + // Passkey creation supported starting with API 28 + private fun deviceSupportsPasskeyCreation() = osBuild.sdkInt >= 28 + + // Check whether passkey prompts are enabled by configuration + private fun passkeyPromptsEnabled(userInfo: UserInfo, authFlow: AuthenticationFlow.UserChoice): Boolean = + when (userInfo.signInSource) { + SignInSource.SignIn -> authFlow.passkeyPrompts.afterSignIn == PasskeyPrompt.Always + SignInSource.AutoSignIn -> authFlow.passkeyPrompts.afterSignUp == PasskeyPrompt.Always + } + + // Check if the user already has a passkey registered + private suspend fun userHasPasskey() = when (val result = authProvider.getPasskeys()) { + is AmplifyResult.Error -> true // Assume user already has passkey on error so we don't incorrectly prompt them + is AmplifyResult.Success -> result.data.isNotEmpty() + } +} diff --git a/authenticator/src/main/res/values/errors.xml b/authenticator/src/main/res/values/errors.xml index 772529ea..1780d289 100644 --- a/authenticator/src/main/res/values/errors.xml +++ b/authenticator/src/main/res/values/errors.xml @@ -16,6 +16,8 @@ Username or Password is incorrect + + Passkey creation failed User password cannot be reset in the current state Could not send verification code diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt index 247f7c91..7d677495 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/AuthenticatorViewModelTest.kt @@ -32,6 +32,7 @@ import com.amplifyframework.auth.result.step.AuthSignInStep import com.amplifyframework.auth.result.step.AuthSignUpStep import com.amplifyframework.hub.HubEvent import com.amplifyframework.ui.authenticator.auth.VerificationMechanism +import com.amplifyframework.ui.authenticator.enums.AuthenticatorInitialStep import com.amplifyframework.ui.authenticator.enums.AuthenticatorStep import com.amplifyframework.ui.authenticator.util.AmplifyResult import com.amplifyframework.ui.authenticator.util.AmplifyResult.Error @@ -85,8 +86,8 @@ class AuthenticatorViewModelTest { @Test fun `start only executes once`() = runTest { - viewModel.start(mockAuthenticatorConfiguration()) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() + viewModel.start() advanceUntilIdle() // fetchAuthSession only called by the first start @@ -99,7 +100,7 @@ class AuthenticatorViewModelTest { fun `missing configuration results in an error`() = runTest { coEvery { authProvider.getConfiguration() } returns AuthConfigurationResult.Missing - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() advanceUntilIdle() coVerify(exactly = 0) { authProvider.fetchAuthSession() } @@ -110,7 +111,7 @@ class AuthenticatorViewModelTest { fun `invalid configuration results in an error`() = runTest { coEvery { authProvider.getConfiguration() } returns AuthConfigurationResult.Invalid("Invalid") - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() advanceUntilIdle() coVerify(exactly = 0) { authProvider.fetchAuthSession() } @@ -121,7 +122,7 @@ class AuthenticatorViewModelTest { fun `fetchAuthSession error during start results in an error`() = runTest { coEvery { authProvider.fetchAuthSession() } returns AmplifyResult.Error(mockAuthException()) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() advanceUntilIdle() coVerify(exactly = 1) { authProvider.fetchAuthSession() } @@ -133,7 +134,7 @@ class AuthenticatorViewModelTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = true)) coEvery { authProvider.getCurrentUser() } returns AmplifyResult.Error(mockAuthException()) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() advanceUntilIdle() coVerify(exactly = 1) { @@ -148,7 +149,7 @@ class AuthenticatorViewModelTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = true)) coEvery { authProvider.getCurrentUser() } returns AmplifyResult.Error(SessionExpiredException()) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() advanceUntilIdle() coVerify(exactly = 1) { @@ -163,7 +164,7 @@ class AuthenticatorViewModelTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = true)) coEvery { authProvider.getCurrentUser() } returns Success(mockAuthUser()) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() advanceUntilIdle() coVerify(exactly = 1) { @@ -177,7 +178,7 @@ class AuthenticatorViewModelTest { fun `initial step is SignIn`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() advanceUntilIdle() viewModel.currentStep shouldBe AuthenticatorStep.SignIn @@ -196,7 +197,7 @@ class AuthenticatorViewModelTest { ) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.Error @@ -212,7 +213,7 @@ class AuthenticatorViewModelTest { ) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignInContinueWithTotpSetup @@ -225,7 +226,7 @@ class AuthenticatorViewModelTest { mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_TOTP_CODE) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignInConfirmTotpCode @@ -238,7 +239,7 @@ class AuthenticatorViewModelTest { mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_SMS_MFA_CODE) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignInConfirmMfa @@ -251,7 +252,7 @@ class AuthenticatorViewModelTest { mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignInConfirmCustomAuth @@ -264,7 +265,7 @@ class AuthenticatorViewModelTest { mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_IN_WITH_NEW_PASSWORD) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignInConfirmNewPassword @@ -276,9 +277,9 @@ class AuthenticatorViewModelTest { coEvery { authProvider.signIn(any(), any(), any()) } returns Success( mockSignInResult(signInStep = AuthSignInStep.CONFIRM_SIGN_UP) ) - coEvery { authProvider.resendSignUpCode(any()) } returns AmplifyResult.Error(mockAuthException()) + coEvery { authProvider.resendSignUpCode(any()) } returns Error(mockAuthException()) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignIn @@ -292,7 +293,7 @@ class AuthenticatorViewModelTest { ) coEvery { authProvider.resendSignUpCode(any()) } returns Success(mockk()) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignUpConfirm @@ -308,7 +309,7 @@ class AuthenticatorViewModelTest { ) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.Error @@ -324,7 +325,7 @@ class AuthenticatorViewModelTest { ) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.Error @@ -340,7 +341,7 @@ class AuthenticatorViewModelTest { ) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignInContinueWithMfaSelection @@ -357,7 +358,7 @@ class AuthenticatorViewModelTest { mockUserAttributes(email() to "email", emailVerified() to "false") ) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.VerifyUser @@ -374,7 +375,7 @@ class AuthenticatorViewModelTest { mockUserAttributes(email() to "email", emailVerified() to "true") // email is already verified ) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignedIn @@ -391,7 +392,7 @@ class AuthenticatorViewModelTest { mockUserAttributes(email() to "email", emailVerified() to "false") ) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignedIn @@ -405,9 +406,9 @@ class AuthenticatorViewModelTest { verificationMechanisms = setOf(VerificationMechanism.Email) ) // cannot fetch user attributes - coEvery { authProvider.fetchUserAttributes() } returns AmplifyResult.Error(mockk(relaxed = true)) + coEvery { authProvider.fetchUserAttributes() } returns Error(mockk(relaxed = true)) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignedIn @@ -422,7 +423,7 @@ class AuthenticatorViewModelTest { ) coEvery { authProvider.fetchUserAttributes() } returns Success(mockUserAttributes()) // no email attribute - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.SignedIn @@ -441,7 +442,7 @@ class AuthenticatorViewModelTest { } ) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.shouldEmitMessage { viewModel.signIn("username", "password") @@ -455,7 +456,7 @@ class AuthenticatorViewModelTest { fun `moves to SignedInState when receiving SignedIn event`() = runTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() runCurrent() viewModel.currentStep shouldBe AuthenticatorStep.SignIn @@ -471,7 +472,7 @@ class AuthenticatorViewModelTest { Success(mockSignInResult()) } - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() runCurrent() viewModel.currentStep shouldBe AuthenticatorStep.SignIn @@ -497,7 +498,7 @@ class AuthenticatorViewModelTest { mockUserAttributes(email() to "email", emailVerified() to "false") ) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.VerifyUser @@ -514,7 +515,7 @@ class AuthenticatorViewModelTest { coEvery { authProvider.signUp("username", "password", any()) } returns Success(result) coEvery { authProvider.autoSignIn() } returns Success(mockSignInResult()) - viewModel.start(mockAuthenticatorConfiguration()) + viewModel.start() viewModel.signUp("username", "password", emptyList()) advanceUntilIdle() @@ -533,7 +534,7 @@ class AuthenticatorViewModelTest { ) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.SignIn)) + viewModel.start() viewModel.signIn("username", "password") viewModel.currentStep shouldBe AuthenticatorStep.PasswordReset @@ -548,7 +549,7 @@ class AuthenticatorViewModelTest { AuthNextResetPasswordStep(AuthResetPasswordStep.DONE, emptyMap(), null) ) ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.PasswordReset)) + viewModel.start(AuthenticatorStep.PasswordReset) viewModel.resetPassword("username") viewModel.currentStep shouldBe AuthenticatorStep.SignIn @@ -564,7 +565,7 @@ class AuthenticatorViewModelTest { } } ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.PasswordReset)) + viewModel.start(AuthenticatorStep.PasswordReset) viewModel.resetPassword("username") viewModel.currentStep shouldBe AuthenticatorStep.PasswordReset @@ -582,7 +583,7 @@ class AuthenticatorViewModelTest { coEvery { authProvider.confirmResetPassword(any(), any(), any()) } returns Success(Unit) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.PasswordReset)) + viewModel.start(AuthenticatorStep.PasswordReset) viewModel.resetPassword("username") viewModel.confirmResetPassword("username", "password", "code") @@ -607,7 +608,7 @@ class AuthenticatorViewModelTest { } ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.PasswordReset)) + viewModel.start(AuthenticatorStep.PasswordReset) viewModel.resetPassword("username") viewModel.confirmResetPassword("username", "password", "code") @@ -633,7 +634,7 @@ class AuthenticatorViewModelTest { } ) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.PasswordReset)) + viewModel.start(AuthenticatorStep.PasswordReset) viewModel.resetPassword("username") viewModel.confirmResetPassword("username", "password", "code") @@ -645,7 +646,7 @@ class AuthenticatorViewModelTest { coEvery { authProvider.fetchAuthSession() } returns Success(mockAuthSession(isSignedIn = false)) coEvery { authProvider.resetPassword(any()) } returns Error(LimitExceededException(null)) - viewModel.start(mockAuthenticatorConfiguration(initialStep = AuthenticatorStep.PasswordReset)) + viewModel.start(AuthenticatorStep.PasswordReset) viewModel.shouldEmitMessage { viewModel.resetPassword("username") @@ -656,5 +657,10 @@ class AuthenticatorViewModelTest { //region helpers private val AuthenticatorViewModel.currentStep: AuthenticatorStep get() = stepState.value.step + + private fun AuthenticatorViewModel.start(step: AuthenticatorInitialStep = AuthenticatorStep.SignIn) = start( + configuration = mockAuthenticatorConfiguration(initialStep = step), + activity = null + ) //endregion } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt index 2e1ae9a1..850ff6ea 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/testUtil/MockStates.kt @@ -19,6 +19,8 @@ import com.amplifyframework.auth.AuthCodeDeliveryDetails import com.amplifyframework.auth.AuthUserAttributeKey import com.amplifyframework.auth.MFAType import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.PasskeyCreatedState +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState import com.amplifyframework.ui.authenticator.auth.PasswordCriteria import com.amplifyframework.ui.authenticator.auth.SignInMethod import com.amplifyframework.ui.authenticator.data.AuthFactor @@ -135,17 +137,21 @@ internal fun mockSignInContinueWithMfaSetupSelectionState( internal fun mockPasskeyCreatedState( passkeys: List = emptyList(), - onDone: suspend () -> Unit = {} + onDone: suspend () -> Unit = {}, + action: PasskeyCreatedState.Action? = null ) = PasskeyCreatedStateImpl( passkeys = passkeys, onDone = onDone -) +).apply { this.action = action } -internal fun mockPasskeyCreationPromptState(onSubmit: suspend () -> Unit = {}, onSkip: suspend () -> Unit = {}) = - PasskeyCreationPromptStateImpl( - onSubmit = onSubmit, - onSkip = onSkip - ) +internal fun mockPasskeyCreationPromptState( + onSubmit: suspend () -> Unit = {}, + onSkip: suspend () -> Unit = {}, + action: PasskeyCreationPromptState.Action? = null +) = PasskeyCreationPromptStateImpl( + onSubmit = onSubmit, + onSkip = onSkip +).apply { this.action = action } internal fun mockSignInConfirmPasswordState( username: String = "testuser", diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt index bd91a9b9..0da31833 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreatedTest.kt @@ -1,6 +1,7 @@ package com.amplifyframework.ui.authenticator.ui import com.amplifyframework.auth.result.AuthWebAuthnCredential +import com.amplifyframework.ui.authenticator.PasskeyCreatedState.Action import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest import com.amplifyframework.ui.authenticator.testUtil.mockPasskeyCreatedState import com.amplifyframework.ui.authenticator.ui.robots.passkeyCreated @@ -80,4 +81,15 @@ class PasskeyCreatedTest : AuthenticatorUiTest() { PasskeyCreated(state = mockPasskeyCreatedState(passkeys = passkeys)) } } + + @Test + @ScreenshotTest + fun `done selected`() { + val passkey = mockk { + every { friendlyName } returns "Test Passkey" + } + setContent { + PasskeyCreated(state = mockPasskeyCreatedState(passkeys = listOf(passkey), action = Action.Done())) + } + } } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt index 38001881..c0dedbea 100644 --- a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/ui/PasskeyCreationPromptTest.kt @@ -1,5 +1,6 @@ package com.amplifyframework.ui.authenticator.ui +import com.amplifyframework.ui.authenticator.PasskeyCreationPromptState.Action import com.amplifyframework.ui.authenticator.testUtil.AuthenticatorUiTest import com.amplifyframework.ui.authenticator.testUtil.mockPasskeyCreationPromptState import com.amplifyframework.ui.authenticator.ui.robots.passkeyCreationPrompt @@ -71,4 +72,24 @@ class PasskeyCreationPromptTest : AuthenticatorUiTest() { PasskeyPrompt(state = mockPasskeyCreationPromptState()) } } + + @Test + @ScreenshotTest + fun `creating passkey`() { + setContent { + PasskeyPrompt( + state = mockPasskeyCreationPromptState(action = Action.CreatePasskey()) + ) + } + } + + @Test + @ScreenshotTest + fun `skipping passkey creation`() { + setContent { + PasskeyPrompt( + state = mockPasskeyCreationPromptState(action = Action.Skip()) + ) + } + } } diff --git a/authenticator/src/test/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheckTest.kt b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheckTest.kt new file mode 100644 index 00000000..8b960a86 --- /dev/null +++ b/authenticator/src/test/java/com/amplifyframework/ui/authenticator/util/PasskeyPromptCheckTest.kt @@ -0,0 +1,149 @@ +package com.amplifyframework.ui.authenticator.util + +import com.amplifyframework.auth.exceptions.UnknownException +import com.amplifyframework.ui.authenticator.AuthenticatorConfiguration +import com.amplifyframework.ui.authenticator.data.AuthenticationFlow +import com.amplifyframework.ui.authenticator.data.PasskeyPrompt +import com.amplifyframework.ui.authenticator.data.PasskeyPrompts +import com.amplifyframework.ui.authenticator.data.UserInfo +import com.amplifyframework.ui.authenticator.enums.SignInSource +import io.kotest.matchers.booleans.shouldBeFalse +import io.kotest.matchers.booleans.shouldBeTrue +import io.mockk.coEvery +import io.mockk.every +import io.mockk.mockk +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class PasskeyPromptCheckTest { + + private val authProvider = mockk { + coEvery { getPasskeys() } returns AmplifyResult.Success(emptyList()) + } + private val osBuild = mockk { + every { sdkInt } returns 30 + } + private val passkeyPromptCheck = PasskeyPromptCheck(authProvider, osBuild) + + @Test + fun `shouldPromptForPasskey returns false when auth flow is not UserChoice`() = runTest { + val userInfo = mockUserInfo() + val config = mockAuthenticatorConfiguration(authFlow = AuthenticationFlow.Password) + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeFalse() + } + + @Test + fun `shouldPromptForPasskey returns false when passkey prompts are disabled for SignIn`() = runTest { + val userInfo = mockUserInfo(source = SignInSource.SignIn) + val config = mockAuthenticatorConfiguration( + authFlow = AuthenticationFlow.UserChoice( + passkeyPrompts = PasskeyPrompts(afterSignIn = PasskeyPrompt.Never) + ) + ) + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeFalse() + } + + @Test + fun `shouldPromptForPasskey returns false when passkey prompts are disabled for AutoSignIn`() = runTest { + val userInfo = mockUserInfo(source = SignInSource.AutoSignIn) + val config = mockAuthenticatorConfiguration( + authFlow = AuthenticationFlow.UserChoice( + passkeyPrompts = PasskeyPrompts(afterSignUp = PasskeyPrompt.Never) + ) + ) + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeFalse() + } + + @Test + fun `shouldPromptForPasskey returns false when user already has passkey`() = runTest { + val userInfo = mockUserInfo() + val config = mockAuthenticatorConfiguration() + + coEvery { authProvider.getPasskeys() } returns AmplifyResult.Success(listOf(mockk())) + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeFalse() + } + + @Test + fun `shouldPromptForPasskey returns false when getPasskeys returns error`() = runTest { + val userInfo = mockUserInfo() + val config = mockAuthenticatorConfiguration() + + coEvery { authProvider.getPasskeys() } returns AmplifyResult.Error( + UnknownException("Network error") + ) + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeFalse() + } + + @Test + fun `shouldPromptForPasskey returns false when os version is below 28`() = runTest { + val userInfo = mockUserInfo() + val config = mockAuthenticatorConfiguration() + + every { osBuild.sdkInt } returns 27 + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeFalse() + } + + @Test + fun `shouldPromptForPasskey returns true when os version is 28`() = runTest { + val userInfo = mockUserInfo() + val config = mockAuthenticatorConfiguration() + + every { osBuild.sdkInt } returns 28 + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeTrue() + } + + @Test + fun `shouldPromptForPasskey returns true for autoSignIn`() = runTest { + val userInfo = mockUserInfo(source = SignInSource.AutoSignIn) + val config = mockAuthenticatorConfiguration( + authFlow = AuthenticationFlow.UserChoice( + passkeyPrompts = PasskeyPrompts( + afterSignIn = PasskeyPrompt.Never, + afterSignUp = PasskeyPrompt.Always + ) + ) + ) + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeTrue() + } + + @Test + fun `shouldPromptForPasskey returns true for normal signIn`() = runTest { + val userInfo = mockUserInfo(source = SignInSource.SignIn) + val config = mockAuthenticatorConfiguration( + authFlow = AuthenticationFlow.UserChoice( + passkeyPrompts = PasskeyPrompts( + afterSignIn = PasskeyPrompt.Always, + afterSignUp = PasskeyPrompt.Never + ) + ) + ) + + val result = passkeyPromptCheck.shouldPromptForPasskey(userInfo, config) + result.shouldBeTrue() + } + + private fun mockUserInfo(source: SignInSource = SignInSource.SignIn) = mockk { + every { signInSource } returns source + } + + private fun mockAuthenticatorConfiguration(authFlow: AuthenticationFlow = AuthenticationFlow.UserChoice()) = + mockk { + every { authenticationFlow } returns authFlow + } +} diff --git a/authenticator/src/test/screenshots/PasskeyCreatedTest_done-selected.png b/authenticator/src/test/screenshots/PasskeyCreatedTest_done-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..9382b6bf847a5a7298b2af734fb97fd28e99f0cd GIT binary patch literal 38055 zcmeFZc|6qZ`!}qsQmP?QYJ{Xn!d1rDLS;)bNC?@|WE*4|vJ6F$G?cY47)xUv``Af@ z$i59@E7``Dedjr6bY1uF`@8Sw^}7Fg{&`-%`D^C09OrhN$MQbj=LBdXR3Jy7M;I6w zAgZ?&?=dhOfHN>KnH**WSNwMW;$~oY&Y-Gz^ZqmA=>fOj>|FzM^IM^5_tP@&Uk<;c z@1FUKn#dAtEN=r#mAv{F?c$BXsVGzPodu;T zvzD0A1B`NQ^HUh|Ds4}Id(=0k3QjuH8}(WU&Edp>3U40J)^wQ)?Jh%!R^1^^z9(-T zzq~;Fp6GXI_Bcqp98Ym}&c15d070BRL0esw}|@DL|$Sg>ga&EI{54xAIcjT?k{Y4QV-wNmyJpNcfr{Ve-Z#xYg> zA2E9~EgjHPRU59YA`NlhdVbM#A59jnnL?jSgaWq+PQYV!Pd@t~BjH!)5+_- zPKRh$ZxDW8BR|OY8H8F{F`pRgqd)0=6tZpLXn3`WgWvhp3SlE z=Vv*}9WB$mzN$On*}Hg{E=%CI2>BUoMA`eJ;&^qvbpL62?_4JldXIkNT&t9a=J&@a zdkAQ1KsJr@j!87fJo~6EPj9he@iO_t5I)q;y7~B~v4XxIr<$IyE0x~G&lbi9IfF5O z4_akxiVz8Y;W|ZCPub}W66PA6P&C&LzRjgMmygl%IN~vzNece_KXNfVbLbZ zlc}r*VE$UiCwCBB*!J~2G+pn9#q52sh$xf9?ii@9E?)Wec-!pWhA?qsLzR_SmUP@+ z)nb(uPjKd*@uG|U9WGH-`}#~`jB<%R^rJRku%^Q7N7>rmJq4*);3sQp9HQJ_Rc(_M zzg0~Lc3hzk;dxdW6MQ46l5CY^kvvXj!+AH}d+%iZKswkZZm+v(Q@&V*IJvwN{MVzZ z9Mc>c+O_$duUGA{!LtiprF>5VlHU6? zF#`;A+JP=@IGuQuuGXnCs);|8&y06wpMFE%rV|$i4{(-lEgmMkA3P>LZGpMklPa&; z_q5tS7W(BEp7!>0#836?_oI$k`u?2AIBmW+ru0c|RV}$jewXnDV&ZQ7GDu+0lQKT8sDpHbX#cYTjx!=g@U#SO~1oj}8?n?9vq&r`=jNn39(1x|k8Vyw7@| zCk9P5@bxYTCjjr-BH?m&s)llz)xk=yT)Quo`BcYgIXfZgQ+QDI63BDt;WCH?3V$sqmCwaV|-fmaaHk641i z4?h;XU(gWuo`J%BE;UtPM4TCe4KAMIuvhl6WkYysRA)d zy4|XNI_0i){ zcWpkoC#`nVQ~~V&;*RXOC;J6hoSIqpuBY(%K>U)n;>SO*o$=YzI4Bn@sy;(>Od7jo zm$Ycw0@-^q&D;m#hMJWm;D^+gc4nmLDia@yzMsuYH*#A8rZiP5rav9ufqqE4-aic6 zlKJ@MtOqmw@&qH-8Px5!gL(Q*%+gtp^G;TDIhrbZhdA*n<3Z^MnBWgD`M6uY-F+6~^v5YHWwYYBPXG(;^u@1i zW~2Un_;v+YRFo- zKlgH$ZX~A&hW2L4QBVH3D&K(I(cTVr9>W`jLMyjDqjDyCp_1F_&2*K zwb{Sj9%!?FFKi)R%EjQ!1|;*9=?Azkcj*C9nk}h>Sn5{nLziA8LW*G&X5E=$S`CqK zuBhvdk#dT$4NMq1?cup0oI9HFq;UUpyPvk%_^_QOi6KHZsHhv5wJld&`XPA%w)N>#b-C2c}b0*q4=R%#?8Y*Nu*+;eImi;~Om z?vTANcCv#YBfrpe&-H6!uv|%d!5q$Y&|&43V|HBhaTJ3kV-@2tVJfR~aDBG>-luhV z6y#FW01;>Gy^S6}{c6*iVdhpgYobP++}i>X-c2c{D#qtezxHD7JW(9esZ^~eVcWjuCTGcBo- z(%YhP82)@I|Iz31IPcks+8@sja6b1IDH{H3+(SrW@R|AV0oNg^(Z)}Ef+jNy2OWd7 z1~IEfgewfcUYI5Z#mai<)(1x2B}AGvlfYJ5wfXsN2NI-elKOQ}ngtOv>I?LwOhj}&s>IhF&Qwd5RgbAeAAU0GgT;S#&ZNB=29 zg$L8Q-aJd9*ddCq{gL6myS<7t52NY$o{X!+iVbUmu~sm%;i(yOd6xgu364ycN0oV- zGlg;5#P5GpApa3oR$0I3DPH>&!@`YhRs|tEs$}vLV!+_e_Xwp;a*M)$nT}VciSsjk zs!mp9^Dw)u&A;MLAK+y2W8s8NWNBUWIB_dBzt_r5E;4xNl zeT6&qzsld*a&P9xy$a(cw{Bf=zc)YVF$a|Yie;k(bwAdldz{!}GOoPq-Ib<;D86pl zD=+?2y!WAyM&O$@)Z!M-(lxtnc9CF%h%1zHE$_*y*k}-ByR4o4zHScLdvbYGv(qbi zV95VGG5z|gYIfV2%S_nPDsukkSA;%8{r)OtpQH@|M9f5(dID!kq=}c*Y00Oi*_*Sa zbqlxrp|Km_~pQ9p0=RW*xcB|`xufuo(u1Yz!GSb9z{?($}o1KA( zOckuQVK7Y0%zUttMfFXeJ?oJF^{n&@Zqs73B^~1yQ{4+$q=&cDoyqQjJ9fYdB@Gbk zH2neAc@M@)U6c= z?ThnV2+-EMt#MSM|EYpS=}3@FvtV?sp?&#i=fxJ;)fjEKPzhdZggl$aEv~%0)ZQIg zV<+mqkSgE<+8{0(Sb|;RO3htZLrr~Kbp83en#Gl5`x5$))NJrZ(z`@|$gXrI#y#}x zv*8yuoJ6IAoHJ|Xcdbof9UiKcIV5hatV@P))lx5>jD!`TnH{(X=V}xzEs?6tF-tjY0@vtZ&8WE=ocz3!Vc!_ zYdQrna{P9&89tSfhtQTd&|~C^)9%@r%8Ju>HJwV1G(O@5U?`c*yJ|wrvO8-dh;oN% zQUc>^==qhQL}tlh1_DuYFwQo{WebrnM85QM>l>GAKP#m)IW`Vh*ebD>>)N-o+lWJr z37qy?Gh3KT)n0*Xa`{sw*5h)a#8PEv^K4$F0S(Lg0AZoVNKw~@zix0JhM$;FeVJ*P ze>Ovy^PagEN22Qk`$zzqIFUNcCN)V5my{p(+xeDWoM3(EgJu*{|w9 z3p)@pUDtIDh8h)h~wcqb0> z1``l+O_Q}`w+oO8-aCtNxCM82*3}E*K`W`z0*3z70%W3d-tpBXMK-~{T-Bv8vYn`E zsK?11jU41fL9(W-1LSlQd8f}NOKNn)QhlW;`eD=4xH0~_`R%U;jMHHgR%OD``HY@? zMtByvHB*bt%AMsbM6qsaVAeozip2}z=wIvOalx1cIqS|#1XO(lWHP|AuSKVCyVvi{ z2JSHOB#Irq6EfD&cHn&hR7Z=7CGcJ+F@NI&c49SmqSjEWl0|8z@b#PmYmW}==G*h+ z+m%MFt87rmM~!NIa|{gmZ%p}W<8S)LxR0i#6CE4wv=@C*h8moZ;Hc5?-sp%LVe9g( zvE!So*d%Jh1MFgcmK2*{mb(zW2`hr6jGBX-)D39QN&WF$1$A%dnw{z{DR%9VC9~dkSO}*-@xtQ6z^mB}?sUICtwz(?^YO z2A%rRnrf_Zw(l$1@EJZ>u$)BUSB<2tZbN&c$)-n*JqfD3wz45A*;+L;tu9RP;@R_k zAc#1>az-h;jqEa05!Y&A(-KfIy6N=mftC zR>@GK|MBDHhaNKp2wCVo)5ZWlc5<$Ckb%*(g8K>c!Y;_;M2Y3)?@{87y}?Nz^J?0g zwENu<1`Dkbq5JkTN{(6!QuBltT+fFoWovb=cd!{5>Qd1?8VPQCC?mH6oJw29r+S|W zQCIOP+ozT>mwuL9eiWy5fD>!mGrJj3)OA2yu`^=-^RnZpt*KqtIFF4oIQz;uITg?va|{l<$IkP(%Bv z^ow?=)YxM^8;P-s5Cg+Vzi%}ITNeg236pYZIsGoBNyf^Vnm8AEpbBv@j#kT)9d)Uq zRw2fQ2G^W$eXc1x@?@($F*P@lwqh1(v zV#H_Hy2867n(nY}vX{y;+50WAdr)i((Z-P!yV9oA^w^?k1Mv)0asJPUh`ZDZPKlep zK&(C!7I;sRu&yxe5;Z>*VXO1d)n5IqMPqWZYBS7E=5nelb|A|#{Fosz;=DX11GXW< z+HfBDnXRwbRlCQi$}Xa5;_IQt^PKid+j8s$LkSfuN)Ppvrp4aSgKLbunSa)$4|zz2 zbD~@vsK@FzRb?X6-q>W90lh{PU&8W|D6j3{`CAdfaj(v=Sgl?x$!Q($D0Q_T7grUt z>uJ~aFA7kJo-{byj(wSF|NX;Ngp?aKl@OD=ToPQX9!0=2lOCo!6GwET+OGMLP~6jA z$?r`QCtBb_O9m>GfV?W&?sLRi>SgoJ?37t+nAajlS$A!_vPcSog+RTderZX_ zH%X4X6^q#jc|z?`cklm2*xeeJ$K~=0J6Si{Fx@mH>NprBU!3FYdpD2;JAq=~?(Gg) zoqKtqd^f*JxqZbgt`g)KlE}wn-#<2A{nXWLnmAAyDV+tH^DabAStb3y4>0>?+^uJZ zj0_96vdt_deeKS};BB*ctQ+PDNo6LLUd=3+#CF(&*@{g&3mG*DzH;~Fv@3<5a=u`{ zleq~4n;`UiufjdKWoY^3B@=?n>Vo>c58~?V7OPxuN^@>g<4ikP%J?(+9uYO*j} zO%#BU9vV+q(3a#_obCNmZ-Ef#BP(BQLbFMG&AUukY#)HzWV}TKt;_Z@p1=(`#e&6> z%Z_okXiL)Gycqz(fh_A%kd~4K!KzFanVN%?k7Wh;jFS9g-C8PKIv)cJz5lKa;xb(S zVOQYqNAjM|se2SDW}_R$7Z+O*V{%Zw(Ci=i4GDyAeG9}7CCw(aJph?o#N=0vl*f6gT3ZSy4N|U zNLMV;S!mCLSzWIz3K!~jsn>su;=xP_@y(z>mGTHhRc1~AhIewNxOlScJJ;z@rJN{q z;jt>42=3_@rsk^!m(_hQCVeaSgK(aTF6v1LXqyG$^(Q;Yz54Ah|gs_izu=xVB4 z>jjd_5U)6yM1FMCA{xX;WI+!Qn9Gd9v@3-pUllp!4Y*LGMi(Bf3S&VuS{LVUKz9|H zjGRiiN?OJ)n0T>hW?nquwW&hiyodh%5#iYl%epy*k1NrKHZiX|f~Fd*SLK-C&>=*h zn>?Ny+GZ;;#_;QvDIZ_DZsr?YxKZat?Z#%S?`5&NW!o#1sxr65%UGtyPXi&J zsve~Vmb&9DzY&Y(*Hm4GFst{)OzOUQ#JR|*LAW;U6NuR)qCtaWURr?044jI5+&IZN z7-2KUFH8$1yL%(;?%5WXkuiZ9RmyFZY!!^02J>Gdtk7qw5`3_lAj4Aju$7_G9AI5cD`{27j)C)dBO{oH5%9z;aKYZHmVF$=0uMl}A?*0NdU68Bg^jZ1c7oWF%!6mLB1SkH?v(*JnfEjO=HH!eov%d81yL)t?ZnL2@LwU<#^@v-)204~Ds<1g? zAI*V1zJc{A(*IJB@Iu&7BM%axoU%!Eork#VAtmlaI}p;=an+uD8Z|%oe+3 zOl;0o@_6ti&%Qq*hr&685HnpwHaYt|=E`v+&nEEx-4#T_=E^d7YA97e$i3vrssJ^> zv~jFzR*%;0EmY%gnKo;h*VUddUlnYEDc?dKfoJIc=kA21cTJ_8(ckNJLZ5?t4%nZ1 zww2Y)GLkeSe}MB$Yx~<3NtZ#l@hI>95E#YODgwGm-LYF0+~Bilw7~ab`f_uph^5j( z1r*K#PH*eZI=$6a>HaAv@k*8S@Q*vHZy_D4WTWlF z*h<+Ia&_+ApV%?2uP1NYimocu1KIj$s^vi-^G z*hMQ4cy`W>_Lz9jgoW$pJ&^*wDE}W{^m9|Q2CY*gmw5#Qu9ckas2gq5F1o$50u1NW zfYOj@nbt@vkEtP%TNrmrf>AuRDnW-0rEir#6@LM%rF%njNlt+jbKxLoLO}M(&$(QRqS**wLj-Y%}7=;YzfRy&u6>p%Pfq{q?o{5S~9 zAn-qZ--}{o7r%=&%O$_pIhjC9zzM_*U+j5r(E{tY!kb%*Ei$9j0K@mnA<#e3&G|pk zO$T`UT|&kGHj3<#6G|GvsA6{-AWYy^wa&K86-M*rkH&dzSP@XNQQ`gFi;X5b?SgtW zU^E$>N8pMY=cnQA1dX^m5|0e!@;%oV$Rf2R0qu`1NuJP+v*JtfgW7^>My_b%ggX3e z5)CBjsuXt$?KoEMU78dP%k9S8hS*ZXb?1a)j&y*X&+h%4{%i>~aEbQ+oOKy^+k6A^(IG z!y2H3Q)#a;2Kom%l`s-XbVNHNci@lmJ?+-FkgCJyd+cnjBYGuE+=>CZ5F>r7Aoc<| z%&7CZ^^%`;{X1TSEQnWwwTUU1H^M^8K9I?w%E~-kXY`OMIoqrm-hOvv9AM-Ir3Qhq z?1Yc|0_6m)y zy$iepntjQQw|oz=Aj-qy?P{l6_lak;#|nLvbVzVIrZtsWXsjTC%)A%*L%6WNU5a^| z(qHU^TZkwrigj*RZC-Id|G>ubg|KK7NQXR0N;`;`ooa$aPEu_ng+2v}8sA6UZBuyH zK&?e;RM;rGbcPh2he`S9XDO?+ZEUUdm!UEHQn$@(Dq1}sRftXN`X`~9|0kiMt+Jc7&gLLN+It(izg(B<&0w zj1=XUx!rg5X+Zy=D@6LOP zE}yXj{uTf?gprLM<(5#WIkh)lpv@s&_dx;F{$96B0Lq2|#FrkESR{bvMF(fP8Uv$)qUA%Vz%AV2ujroOBSUc&SuTd@ z1LLAefKjG~O%^7R&%;~UUrDVDEr6}DRvwl#RQ3+~)B3y3kb|t7b!ykMqXnC*_=#=O z<{#@$8~nXaSH9V~XHm3DT1ZV7hxLlrEqrdK8Y2YyE9@W*GkcuU{h`s_c`;Ld)V@^j|xL|eIQn=7KXp(UV5(dT2ukhbqZxa zsTw^1N0he2O;}mCv(3VmWS#=7S!y?SFE2cX!>sgzoF?^VWIk0TswHgzU_*0yecOLF zMF_!sHdK>YwJHo(_JyDi21QG1YD^n@%!m^_!~F6lCPN3{5LsEo=KZvY zqUdk5d_)k`=Q&`nY;YJ{gESxJ9VK3RsxcN9YL5r_oOycg+Z^) z88R`M>S$melVukn9&)k^RhGlq z+;S@QYd4?%0nYZ>7ShBJ6NaUeYp9#`PTtm|`=u==mekJF@Ght|WWFt%P5szuBQCz# zvtwMSmmt%zn)FD}fm=gLkE;{Y=AKB_J%@Ue-ga7-eYFDFPt3o*4!8MTntZrmv9ygI zofQ0XkjLYL+J=70VK$PO`}f7`0LGkLE065KzoD+_ss&47Iuat(Gz0rb6;~!|??@~} z<=@pH+5soi;1~eFbB|HRo8F&ui(Ui*FhHq|$7XqEjR)*9ZOG=yim#8$rJ-`9QOm4VUC@!t`Kc1+w}Yd`Kh#}9ImJkPMtd!(Mc zo)62`6=}5~`n~3l?ON3_ix!Ua--8HCfvVF{8yn=BUA{IjS{ou(vCPX48xrIgZUf53 z@0U*&3pJ8E5T}_K7|!);Fia?dy0^e=(MV8Q^zpW*e*vV5;T+Q{8-p|}s1NT$kN3Nc zd6>#fi#6S$()&Qx0U07by zvNawQAK*{zZh5Wb#f_H0co`UebAVozfL>{y06B1uQwOWXulo1RB+xvqQ+A3#NX_$o z`(vV+r#iJYAi7z`Gbq5sp^s7-6zEk`(o@RkUrW!GE&AxB>q=1ov*=|}978J>)RIF^ zUwi!8X^~gfW91ml`G*01U-rK@ALKnzM}EoTFn)%=*4v{dTF!puVNt6fc;?;9O(uqc z*Z)I?`M)5;F#P}enHvefQcFv2{jTmQ0l75p8jUcec>yp0zXoy~5-t0EOYM_-^jK%~ ztI@{DL*p?{h}J}vVAEjPmBX>#J8p!#?;E^4^{szNyMeNnFF>{r4S6nNwKWQ5fV=eN z*`83bp?kJ7G`W{T0D};k(B`KrwgWInndK)xKv7YFWD1%%95#ShKp+LJA<@&^jRFgFPk-2CK8#>q4=0;u(C}ro^E$qrG^J zd<}m-DC?5`LxIY*ucAHxdFn_lrSW}euayQJhJzHnb{M4YcWnW40a30`+g*RVOp}KJ z8{japY@xyQ$Cp=#j~U_sGNrW-rsQ|kA>S(BLwaM}ITTdxH~uQXl$h)s5(aD}@Ch>l zyleZic|UEUA;4LkL&2y|3h7Eh+_VlqZge^7A@}DwNR{9CVfasR58M@_lFrFu{I0G& zharjcpUx2>a9H6>T_#!z)D0E44$~G%>QW$(X zb@&BqjPn}U0d`fmcaLKZ%k|$kS_|!m8XW8j2V7_@uX|F#R{jN^03;3n!9&2g7-YA| zZQdVSmjn^853hpX0kJ3FQ^MBQMuO8y14 zmPutnk56;&8H*U!x7@NN?Y^~kiTL|%8_T$d1=itUc3Nt^TH>DlWFo}myAx?^!JcU2 z3n|`OXvCEax=#rcV(3xc<<$|MU9w>MXI=y4MKQ9wqQ-95^LEE{m)&lu@fd9@2IWG% z>fQ*o6Gpv!GxLI$uOm8=5)B-Xc};L9DvMP@6D_t!D*-^&196-!*(q&t3)py_?NVqD ziRf-nj9|Y zQ_Y;8M5PrC(;OooItFN)^bOx|f|FM@8$m#%*Y&{~@PPmfV2VR`J5Whp3!!lrN1OLIZC!x9$|=#Ds-bW( z0lD-`YNG@?=m3d^RaJo^{?BQ98r*JIu|778_vb!B3vNt7*o|+;Snv5%GETLly{%QoRQaclWKpfPjpEwx( z($Xt8Rd^9x&J0VsAbsF66-3AAmCbaM?X+uUs_DxUrB9{|T?f$Ve$qHlM%T$o7kCfh zQ-Iz(A)IcTm}TMiN7?v%ut~`4BQ;HE0KyC0@8Yoa{KO=8%gSfJ_;3P}`TFnArlSqv zI>=7UP=t01gKQ>gS^S!tWzTZq)BBQU3OwlT!euL-#qpM`%Y@^~ zH~obv&ER;-bF$yG`&8!mvDEBw46w~CPg-JUIwd^Uo{md8tM@vtEZU8hWFrky({;1) zgEyol+Ij$iaHIjvn#s2WFe^s+&EA%@2GCAb6@bTebr3xt{qTy7IPaZx8P~@TmiHf3{ocR z`4}`CsfbnZm}V0|I5+e%x^P$3o-#zeC%^7s^YDm?ay@ULjQu(>1t?@@zd@B<1|4vV zm2xz>TT0`EE3We>e90~Shh3qz=rKbVu(&CgoxYyblSC@s4A}ne&&)*)%R?Fzi{xeq zfja+Tr2nx=8Fr4pU&0<=Ffhj7zSqL6egZ0-Zg&00@emqmsy&czV*}7M#yjz0U%D~Q~1QtTy8k;f-dG*)YPxJ(A1fXWsDf}8m`!}@xQ zH}~d8n}d+@Le2i)A@8^v9{W4pj_6T}Kz}{RX>dX>6tBE%Bzro)d_d*4Y%-i|>YHW@ z$~9wQff0Ih!ItZm8XT|G+j@X#4nmN5kkqHN?|>FI8TM`AA&rH8iLt7-a`IaVm#*1G zad)6&zUINQq_nqRP6*?poF6W;bD>i9L4}3f`?xE(C0H%`-(geAe6Y$^%-2C3eT3bA1L@S z<(_pUIU!5q!{1fC{ut5B7$Mqz|2py7bOay^Sy!e$D7RnmP4LrgKM)b+TGgCqn#{zU ze_6R-t}|Ymnv!_A@d;J(=h$BX+AF3C*qRBOD0BRvhmb-xzRNKr;#onbxx(CH*)CP#-;?~C09Pw#1uY{HeTWMEi0P#6WLG6}%T2@OvBgZlzV1$gK z-|HB`$*&Uwv}Y8vBmB0=GtlHNrvx;$oaCa8^`xMf&5 z#*!l8c?&e0z!;+Io}I4vz#5i*v?Ahe0s6J==WtorQ zt9;J@Jx?g~K{vI@959=&lL3PXhpE>!wABHT!{Q}s0V_sU5FC9W24+z2u%YT{)a+7> zB`qs~W2FJbEuDH_zz--Ngtige!1HWPO@>TJJl6o|#XW>r_l8u$ zAo`u3yN2S_b&z1vIjqznk@BT`7Nz;nKQ@kL6AZd|4G1L#l#^_*BvU|)Z6@K}t6uoY zq+Dfh_ohhS0wg_Mq)w0}CQ%vd*g)%o=;=-O@^Iw_Zd4g4AR`6}pp$^cb|owD%G3!? z<0WdB&CG=ugV|2zytbEd4nl8$={=+~s)&yi?xB^Z3eymfi#cj-2%L0RFCtg&U-MLc zQ7z&Cr)|EL4$k0(S#K_~`2hy4RY>ut9z3LHgx2Yrib`qkW-S1?uueG7)kiP2#{eEp zyxc+1;33>i8JvHWdkp?_Oh)qOYrYuwgeC5T(Z*9KTJ0J!;Gm$XIJf(GKTF1C8{dEW zin`?drh>bNPlfGw-*!D9dzkE^{GX_3(03ErqhJ9tHcBssK7VQWu=%Zd83HL|4D{sXvV}msS?^HG=c{v!^;| znxx)!zDsxY#9skX8V%^brdsX3v$I+$g9JUbe0A1v6;LBa!aBx}OPsN-^x95qK)M+{ z){g{^;upX)vM%$n@!x&gkm~O%OklWbb-o!Ch;)b+O^qS28m0X2>6sGF;QWEisDggn z|FTmcJk5X=wL`BxuJ7A0#w_a)33 zJ-y`HkV4t4I>hr(2N5blno283?~G%bv;KN|9x3yMDZFgKm7)0Mj$g6~ve6mkBmP z#||k-+f$QSg#`dz!2aTeRyXYrcpJT*r_Se1aC2^pV^W(Dua0s^qy6p^gn1hNEQ2yg zJFxdwox75mj?Yk;qxf#@at{!Ubnn4#;$=x7@B+lYGh077DxXr>)HN;Z=KVp~#ZM4v zb4(_oIsq3MDlG?!H^(z|%^H(+NTv!u|4PnZ8T7CxRM2&qW>jhd*l-){_j?BwqTY5e zZ{8UJ>>&s0n>W#GdP7LV=7vA6Nf{g*s`h7bHTIbQ%7MeYf$Fw7y5GuDHpsu*H#`h# zD=z#-88qBboD&TQM{n}fQ?69`S)!Q?yZb=N?y}mH@^0qaDnGg4#TNOYUjJk~J1K^U zE8>>dH|Egq3Wt-AH)WblVGV_qWkuPg$+-@&fGqbfoq*$_5Is!-NnW0|2;$$E8BW$5 zX%Oj675MJr&6~+!R!8P>pTO%tV)CnAq->Ur)wOQzTUk>a_+1d?2Rw#tCM|ZzO-hD- zCvoGll!HaHOcgp`Pxs~#^02W{>1G+KlH!UNH~N74nFE1;KN_I8tWa5ZXQXAwKqT=b zh9BA=L?zSLttMZ_{K^AN!b}5Rkl> zVVi)4<({=U^(W9TI|`S^`mlhvBX8<%kt_@pBTikVN_N;+c4Eh)jU7SR2!G zTHrxDG?f3!PtbBXun2i0k;XcL@>lUBBM0pw(y7MkQ@A6LvgaYi7R*^4o%B5dAz7_)ZIn zakk)H24@k_&99)AG`3Wmf-GO|K1v5RxJ_54dz+U}lz=b|w?KPPnzM?rPdVM_tV0be z!W>2wkY87A1-a%hpcy-o4qXr=x1y`57r~P^R(Z)cC|1TV1>!uf6)iLf`R;6Q9s&+h z_wUE`?@X5_+LDbEPK{<;wj~UM{y=DSg@(UBfka09w7l1KryN>yMt@GK{{I?&q7C#v z1~@WQVYF0@Kubg4WE9x_i-jwk8EHY)gx@(Ms9#%M12C zUzb|xU2tY9cu{FQkL{3~RpjDAW$f6Yvww9YHy_%QETI|wz}B2%JbQtQ6P2;`wZs-VOddXmY=gOd6OuYVQm2i{HBniSti-b_SJUT+Y9Sk}DUdU#HH>esc-%BHPGF+9CV}QC&#^ zD7~@A8n#av2TOXgN*Uq4JO6H&WpgGjaCKzk!jH!$`7Tihw_)vMpA$xZ-_4fzd?kOw^-lto%~H z{0A|o*gTd_P}KsxS^El95|F5GtPX8z>L_RkDUq+?h#+^5Emf96{=Bkb>2Ps+BBysu zhZ5&H`wF4|-`_jHIm!&br6IfXuxsVo=%_@DV+xjDZu%X#H@`0q!?zB@e@*8#XQe5i z`>y@>+aPCTXSV!!ugi7)UAhlv7LT#j_sWfi`veqU{`U+jm)A&URk+?mLw)Auh#!TA zG=ebj4>D5<1kV_&tfrK+Dk&Oqd}+;9LZWwx?y`aFin)j3wX(~eI$SE;Zf~{uzX|Yo zow^&fW`L|TFj5LlGWMQPuPWaylFy6f(f5R_=BAZ?G#x2-9n&>pS(uM`g(#NH^kjkE zw0DjZ8;Y3;Q@ys0{is6$@*D{TGF`03#DVfmdre{B=XQ0{0(4ing=58@*ji_H}I?a99_C=Vi02gY(Y^3A3rxkrqWti379V+Zz&9G9B&y=RtpOd?dTL>9eBPFEyHu zjE)N&ES)9!cRW|Swq_qGg|7MdyT4}Gm9jn9EB9?hW}3YWW)`BYQQu<ZsgKCZ-<^P$FrsK>q0bz9_UmB7WwNGugB)&fXH|xAJkE7~6}w?pmF!)9 zU2<($0jE6hJKD~P`o?{+YqIK8r})bKIdMHBlQR*mb737m5Q)L0w71Y2YLNX@ zXd@#_CW@`kWs_RFs49RnSl)P>I=>7%A84wez?y(giF_r@)_(l3M@3iOkEM>5BX&^u z`6AmIuBwxfMqEofBfL6DMOg?6;{XmiE)ZqFF>}rO*l2CUj@m_3HZn1HhugAVQ>U2I z9^LRj|Dg?SPWAtpQ_u$Xvt^H~R^oc~hho84H%HIkluYkJQVf(*08J2xC1<4#?&B~y zAyfI{%OMKe$Wq6K%;?XxYi=nK7;LwLb){I$HD1cOow!{o5r-f~u0TJbm&lW+Iydg# za`S?_b>aBQYro5bac+8@Q~1G$LT;Wc{N<9#X%+I^&aZ*S44;hHZSvdI`j}oFLEF!s zd;UTz{tEbm6RG2wiG$W$QH{I?##miLWf=RpzG1oH=kncW`SFY~u|fW$-rJQDce+v* z!QtXflE%i|S+_!M1WfC3a1-3b5K(=;^FiTg0;7q$8+xE{w_1=beB2_`VgL~AUUAf& z)t2>Csrq&(Z%U)$W6x^5Mb`fGhE$0_Fx{Hrmc5}Ga$R&gyjJta#sF$6_26+X=GJt* zxe}-2mX6gE{Rg3r$2s^dgI-PK7>O?#5Z)$tT}z-$d@B+*2T)4u`qorDuMTA@=A!tZ z_}QQGyEb_R&Ir^QHK9bssh(CQL;lMxE&MGdHU~MOPZE9zxAmO7d;vF}a=r49#LzRf zuB(%kwjWz(3j6hSR`8oV4h>+A802z*e+I`(G}Ej6#;jl4WsNG>ew1`6wJ?V!L><0n zFqW}1E`_{;9`CushEMvzp@lpK@0{qma|-IUFs{Io)u(I6CD-2j=_Iv{HPb}lChB9# zb@}M)QwU(nZdu9$h<3<)uEza}hpffAY^z6LL|Z=(fQl7@zBnE!crZr$FOrJ9f4iVO zR3V^eo8^}%%x3W=PgK{IL&7bgWY=c)MfTgVqt6__i-DtPCs|RblJ!$n-IWxPZe0pW z?+k)fm6Fz%apI=Y_cwgmZ&d`U&FJ&x>9xVD4F+kd)Clo z)r5cT0VfO0M3}uY0R6?54tV{tbrt8bo|xROVG6zMB-6hdeCYC`WxoSu*TRDtfH4=q zs$`XbKeH;GEh12d*hR!kYU~Gx_G66O936(VH;uT(HkkGdD(4@A+FPsn&{y!=R&m^Y zTgsaxLgSG$K{6``2xXQ&s_H4JQm11*tZxk@OVa4qtz{7Cn*@P%t1ii^jz2RNxWj}PdMY$m2VzIke{sb9xgmUTFHqGIjF*YsKxTlz{Wxvp>tNv{4Rf8LLR$G=;gvU__nf%s4Lzbs( z;mfar|EIkx3u`Lb*3oVU6vP=Z40^PkMRABW2yp-vMG$2)j3O#zU=R`^22c=GI&h94 z(9(#A${0pNgfIzBXh1*|NJ!WO1Vn};Kn!!ptsS%<&V9KL=iz?e2~YWI+H0>`wf?`> zs$HzTXH@@M1$EM&g0f>LuEnL@_$}g=lA2ZQyus}U3jz+GXKV${xikgrZo1= zE;-Eom=!ws@IkNpTI{z&PAWcoJ^jaOQ?2*X)z3YB&^-9Y`BY8$5P_Tp#f4p&rSw9F zu@fv)Sd3mdv`esZ6gsqt?(T?pQG<*Yxj(KRJS!Kqq4MM!7qAsu>*CKH8OIB{HUVGEy6S z>aHZN$EA@@`8u(k$kCTsbp_s?bvG`Xr}%+egT#Jc@7&M9o<09ff*xiBx$U&aM73s% z?j~AFsI{L!tl9T%V^_Ju7aY7#n5_Gu|Ha5Nntr&}@q@3yiGw%M#balp`Wyd6(s#=; zTaJ2RF6wJw^NDq~{)>^x*9{Zid~CyqPyRP!q8uWux*_jUf5H(h* zJv|9<8m(h!;j4_G%j)1J6u=>Ne>Zu+_d2|!4OTo=rto^I>A^QI-9>1v)x!Y$AAK@M z*Y8}@U#r_>sTuVpCRhIaLq=PQa}L#~3>utaq_4xl24=_LIG@`6kaOTlnAQ2h)AjB} zRv4XKIikC-#3@CWDy3gF9Q>>4SQ#d>(G2^&FD?NT@Wt{aG|233 zMWug|9`8^_BKWj2=C^UJl_~?b1y9_uKdm_YoZdU6L@`g_rS>TM?W*l^3ShWI;V4T$tK8_20 zywYqnm%GV(!L^u8Z-bRLd9U1<9b9_%#L{0*E_k_V(TPn)$Iq_aV774aS%eB^)wL}r z5sOxKb3izZpv@&t#0Z`yTn$_i8PLffa|t>5Y*Op3(H+t5r1nhfhU$r)3_9x^=k4iJ zq0~!^t~(>vF*iJ}fpa3HJ!SpmXLiRVEk|@5#r{dMN9Y`k$6T}atjWaf8-rUG2+rTUTcJ7p!@B zf0A@`Im9nY%Tz}8;XNs2l4;*9v~0OqlgZ4T*0gL_!x@=hT$Bwt?u^}+BD*$Mr>(e{ z>G;3YD5JZ#)X(r|kPti3t}SQ@t(f9DW6(Ku5Y485wf7QBnzB_wvTvs4S`0E8Bt$9E z%ix^D*O7g5vs<8^H_v1cS{N82^YD0y9!y!Pdikfhy+CrIcjN4UcHez!K%7Y_^SME6 z_*8~WQm&>wHR80dbM}j8Ky^8~iMb@!pAb9BQBy(oO$7C;I*pQcooiuU<>u%YWXV=& zS&A&(Q_LtvucUh5tRh=DmbV&}-TY6Nlos9u_6^(f6>kCQ%lWczyVs+o(IVT~dh{%L zVnX}XVt2~5UWw=Am~gbQL@4n*N=ZFQ!Ou)+r)J+DIVJ0F4=+3a+%Ug6P-^Vp$2ls- zXiq}bY>MZjyyg? z>3Fqgs61qe!KChsBc%fg#por7;GH++8e3zvCI7{7>3S)fFH1-*pUUR@GT6ws4+2QW z((BVx{F$!LMXIyo>C>D_{+(V=?V09>;o8w^`$5no2c78X_02#u*IFGV{fbd@ z8o4hMuOnIePwboZnIIt$&gZxehSrsfD^9gQmRic{s?%+r(!%QLa!+Cqz>?Q5p+47N zaEN1nCQ(M3n9nT+?i_G8)uB`xJyB=^$N$1?kR?Fa zb!$+CM~F;$ByEEuegwRpl_`f)N@0*+04^5XEg(Pw;*>4uS}KqVAIiIuNd3=w^1ds^ zSNwb5w~V0j?|oYrdjidXt|@9!#sBt*9hf1)6nt{3KE^kby?PyL@bfQ%HE?c0`3CxH zW%4h;W^Mtrr>VTnKX*e0TFSMQ+=PBUry#Ef>K0RZEG80f^_e%TwV0<`v^JyZ1|;= zlRIg;N&Tgm6r(Vz&+Q3E61-^-j>x1!LgCsxmy~mt9B6a{`Sy7VPwOkgr2H919s4Y` zBb|gBiZk($P_VVxC1vs~EYq>ytE4kfquCm5R2?J;5%z*IL=+L$9Q)z6RVc@&@`py!ZTbDO$12C` z6Z{R6(=4{FLzy)=T^WYjMP}gMXhc?iv0T z6}X55e5YXoBr$`h_G(KQZ7(LFun^BA+0>p3r!Hye7grBgr+nI7ZQYlFVF_`I-xWc2Oa7?TX@I;{I&((17IM}ulp1GCh<>9=mN^l_X_#PLS zw>|*N9{lBn!g1qGv5HRrXGOR=i>L1BCN!)M4-b!kpwjBLw!~@{>&sP&w5`5P4T~L$ zKpr9J%!$#SK(+ff(1z*K|KwpPFSg8NFeice*ptra8+oIxvf?Ly- zcqe$4MxJvc>6=9mlT^Humsnf96sflL8a&R{a7el_T1dN0n9_L+GbF!oQ%4G zH^1968%nJ?s;8&7_eOREnEwi^bZ|Szx5>%3y!4XCxuZ)9+M5TA9l2_1ppX5NWf~-5 z$FESDfY28mNmd#hNDjbN!$+mA8QMIFSkw*`0QToeQI=cboKN!O}JIw0psL^hTaPz&5ji1<`wxf z_5DHn3Tm~0hk-z0dT#gCWKc3P_?oEOTpLPlAO6b^&PR3W8v2(~QwTPxPXV5AIKyV^ zK`C%_kZ{m4dMR>dh9H3bq?!e$7-B#CTy@%^S@NZUF8mo*Oq4YyU>V8ep(+y07*q=v zY2~2&m<6AV!l@}KJ;Ilu1koQCxViajZZ`zyfxLbl5OE)k-UiINF*`=S_4NB>>cM3 z$&wS_)NdFD8^-xd3Cuzgv!-UxE?h@Bz{rnq-|m)i!o*~}@qM|7@=RG+0h7rSjOs=# zLkQ+kl9H zzQCND4VppUiV=?x26)E3N*3)q5BQrxw6(SUFB;(8bNz=P{BMCa=#S^P2V;4lN11GwRNtlBNzO4e?u( zTG=h^!l0nvG%mAr7gYE!MV{~42s*zDmkE1PPfg-9l5C`j(@a4R^{#8((QSygOW7RT zg(Twzo9v`0*#N0L2U)2mp_Gqz-0W2Eir2!M*8GexuXM18b*4CQ5SuQmbTs*o3!q8L zC5bKD;Hl=P9%^?yqRRvVN)U|YJyJqSUKRpP{sxJIB+b<~j)}KGUrVzB-Ukei&p0fq z@eO4AnuZ-iGw}%L9pb5yd5-r8Q?_tF(NFU}@x9{{H;1Zsx++*Zptw`%0!Sz~ zQ+SO6>gGC@ty=m)r9JZ!pDFbZ>xvJfXSps6PX61(tE#GmN=t%uiz1_r{9)HtqoMIB zH`dP-u|I~}DbUg`NXzZkLjvVu`O}evzZ{=TcM6&g{#2Vct5zfAIb4loCp!kn-dro*sS%|ZlQP!%*WO8B6Ip)`&6Z+QIO zXr393F%O^f&;*@Iw>{Np2^X7Ra-Ra;y88Fu5n zhzh?9?9q}h?F>>6@utLJkWA+XscU?SX4V0t5NCi7)r+Baci{Mo$fR=p69_NJ4!lY>B37Bu!vw{dwg<9|S{205#kwQftyCYE3-sL)``7z1n~s!;$$B&FZp(z^)6ft;0JP>lw((|$B>qm7E%B9ptTMzrX5#k>r~!a3g0Wg z$pYWOEf&l3f+T>`%Aj zpQs|;Q2JMJI2>^wOgJ{AaC7NyJPPwsD0NATv9&!Jh!mWc(NO$IZ7Jn&JnU1D=JyPw$g45dKBm!0L-8wzvWAops0@FS-QieM@d6db1#uJVSf{V zd+_;8d=Y~*;fpPtiLP0L(n;UNEhSHw@&B>a7mPS^l&*@`hQ1NqXTV{g|F9+p}f5#1_t6;aZS^L^VcPsWP zicOnh_o~>&D?$^B7>y!WrHI;r(5QkEC@6t~5-2Evf)Xewfr1h!D8YZ45(LYx)ul3!ui$QU*yTwz4Cv`sOX~5 zn8ILy4ImWj1t>w`E`Smg-V$C93a|i5_>W@c$MM}>;G(pvCPpVL72XDDSK)1d5)|GB zC_&+E6wLfT>uePcR^eb3_@clU1-vTYRlzP4>_WjV6j5J9@PAFv`?!Fks|2I}^Eq0a pYnO}C0)-P)I6;LI{I76=3&KxYF7LgGeFjrM6Js-@?32#-{s$XL{7V1; literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey.png b/authenticator/src/test/screenshots/PasskeyCreationPromptTest_creating-passkey.png new file mode 100644 index 0000000000000000000000000000000000000000..6efcecf4a8d4ed3ce61162c33aa6f1295ed5706d GIT binary patch literal 98649 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 literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/PasskeyCreationPromptTest_skipping-passkey-creation.png b/authenticator/src/test/screenshots/PasskeyCreationPromptTest_skipping-passkey-creation.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9a943234df59f5cda1f6bc4cce848be475a012 GIT binary patch literal 97085 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 buy-B14KKAtI72%_U{|$oXyskH_w@e&k#p-r literal 0 HcmV?d00001 diff --git a/authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png b/authenticator/src/test/screenshots/SignInConfirmPasswordTest_default-state.png index f07df71c412b06b9da745b0b76b35ee462c3338c..a4bc38db5ed0b7212eba62bae2605a9254daff72 100644 GIT binary patch literal 42710 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 z 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 R8??JlTc0~wa2$2(KLDO^r*QxP literal 43448 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